pax_global_header00006660000000000000000000000064123147045710014516gustar00rootroot0000000000000052 comment=8ec44dc1e55ecf334f4afa8eed8795ed5776c396 Makefile.am000066400000000000000000000061751231470457100131270ustar00rootroot00000000000000SUBDIRS = src data src/utilities ACLOCAL_AMFLAGS = -I m4 TESTS_ENVIRONMENT = export LC_ALL=C; TESTS_ENVIRONMENT += export FWTS='$(srcdir)/src/fwts'; TESTS_ENVIRONMENT += export FWTSTESTDIR='$(srcdir)/fwts-test'; TESTS_ENVIRONMENT += export TMP=/tmp; TESTS_ENVIRONMENT += export FAILURE_LOG=/tmp/failure.log; TESTS = fwts-test/acpidump-0001/test-0001.sh \ fwts-test/acpitables-0001/test-0001.sh \ fwts-test/acpitables-0002/test-0001.sh \ fwts-test/acpitables-0002/test-0002.sh \ fwts-test/acpitables-0003/test-0001.sh \ fwts-test/acpitables-0004/test-0001.sh \ fwts-test/acpitables-0005/test-0001.sh \ fwts-test/acpitables-0006/test-0001.sh \ fwts-test/acpitables-0007/test-0001.sh \ fwts-test/acpitables-0008/test-0001.sh \ fwts-test/apicinstance-0001/test-0001.sh \ fwts-test/apicinstance-0001/test-0002.sh \ fwts-test/arg-help-0001/test-0001.sh \ fwts-test/arg-help-0001/test-0002.sh \ fwts-test/arg-json-0001/test-0001.sh \ fwts-test/arg-json-0001/test-0002.sh \ fwts-test/arg-json-0001/test-0003.sh \ fwts-test/arg-json-0001/test-0004.sh \ fwts-test/arg-klog-0001/test-0001.sh \ fwts-test/arg-klog-0001/test-0002.sh \ fwts-test/arg-log-fields-0001/test-0001.sh \ fwts-test/arg-log-format-0001/test-0001.sh \ fwts-test/arg-log-format-0001/test-0002.sh \ fwts-test/arg-log-format-0001/test-0003.sh \ fwts-test/arg-log-format-0001/test-0004.sh \ fwts-test/arg-quiet-0001/test-0001.sh \ fwts-test/arg-quiet-0001/test-0002.sh \ fwts-test/arg-results-0001/test-0001.sh \ fwts-test/arg-results-0001/test-0002.sh \ fwts-test/arg-results-0001/test-0003.sh \ fwts-test/arg-results-0001/test-0004.sh \ fwts-test/arg-results-0001/test-0005.sh \ fwts-test/arg-results-0001/test-0006.sh \ fwts-test/arg-results-no-separators-0001/test-0001.sh \ fwts-test/arg-show-progress-dialog-0001/test-0001.sh \ fwts-test/arg-show-progress-dialog-0001/test-0002.sh \ fwts-test/arg-show-tests-0001/test-0001.sh \ fwts-test/arg-show-tests-0001/test-0002.sh \ fwts-test/arg-show-tests-full-0001/test-0001.sh \ fwts-test/arg-table-path-0001/test-0001.sh \ fwts-test/arg-table-path-0001/test-0002.sh \ fwts-test/arg-width-0001/test-0001.sh \ fwts-test/arg-width-0001/test-0002.sh \ fwts-test/arg-width-0001/test-0003.sh \ fwts-test/arg-width-0001/test-0004.sh \ fwts-test/arg-width-0001/test-0005.sh \ fwts-test/arg-width-0001/test-0006.sh \ fwts-test/arg-width-0001/test-0007.sh \ fwts-test/arg-width-0001/test-0008.sh \ fwts-test/checksum-0001/test-0001.sh \ fwts-test/checksum-0001/test-0003.sh \ fwts-test/checksum-0001/test-0004.sh \ fwts-test/disassemble-0001/test-0001.sh \ fwts-test/klog-0001/test-0001.sh \ fwts-test/klog-0001/test-0002.sh \ fwts-test/klog-0001/test-0003.sh \ fwts-test/klog-0002/test-0001.sh \ fwts-test/klog-0002/test-0002.sh \ fwts-test/klog-0002/test-0003.sh \ fwts-test/method-0001/test-0001.sh \ fwts-test/oops-0001/test-0001.sh \ fwts-test/oops-0001/test-0002.sh \ fwts-test/oops-0001/test-0003.sh \ fwts-test/osilinux-0001/test-0001.sh \ fwts-test/osilinux-0001/test-0002.sh \ fwts-test/syntaxcheck-0001/test-0001.sh \ fwts-test/wmi-0001/test-0001.sh \ fwts-test/wmi-0001/test-0002.sh \ fwts-test/wmi-0001/test-0003.sh README000066400000000000000000000242551231470457100117520ustar00rootroot00000000000000README for the FirmWare Test Suite (fwts) ========================================= Quick Start Guide ================= 1) Dependencies: autoconf, automake, libtool, libpcre3-dev, libjson0-dev, flex, bison, dkms 2) To build and install (only if building from source) autoreconf -ivf ./configure make To get help: fwts --help To run all the default tests, use: sudo fwts ..this will dump the results into results.log To see the available tests, use: fwts --show-tests Advanced Options Guide ====================== Running Specific Tests ---------------------- Run specific tests, e.g. check syntax of DSDT: sudo fwts syntaxcheck You can run multiple tests too: sudo fwts syntaxcheck fan battery To see all the available tests: sudo fwts --show-tests-full Changing the output ------------------- To dump the results to another file: sudo fwts --results-output=myresults.log or the short form: sudo fwts -r myresults.log or to stderr or stdout and redirect: sudo fwts -r stderr sudo fwts -r stdout > mylog.log or a shorter form for stdout: sudo fwts - > mylog.log If the output is written to stdout, the width of the log is based on the width of the tty. The default width when writing to a log file may be changed to N characters wide using -w N or --log-width=N, e.g. sudo fwts --log-width=90 - > mylog.log The log has various columns that can be enabled, here is an example: 00012 13/12/12 12:55:04 wakealarm Test ACPI Wakealarm. 00013 13/12/12 12:55:04 wakealarm ------------------------------------------------------------- 00014 13/12/12 12:55:04 wakealarm Test 1 of 4: Check existence of /sys/class/rtc/rtc0 00015 13/12/12 12:55:04 wakealarm /wakealarm. 00016 13/12/12 12:55:04 wakealarm PASSED: Test 1, /sys/class/rtc/rtc0/wakealarm found. 00017 13/12/12 12:55:04 wakealarm 00018 13/12/12 12:55:04 wakealarm Test 2 of 4: Trigger wakealarm for 1 seconds in the future. 00019 13/12/12 12:55:04 wakealarm Trigger wakealarm for 1 seconds in the future. 00020 13/12/12 12:55:04 wakealarm PASSED: Test 2, RTC wakealarm was triggered successfully. 00021 13/12/12 12:55:04 wakealarm 00022 13/12/12 12:55:04 wakealarm Test 3 of 4: Check if wakealarm is fired. 00023 13/12/12 12:55:07 wakealarm PASSED: Test 3, RTC wakealarm triggered and fired 00024 13/12/12 12:55:07 wakealarm successfully. 00025 13/12/12 12:55:07 wakealarm 00026 13/12/12 12:55:07 wakealarm Test 4 of 4: Multiple wakealarm firing tests. 00027 13/12/12 12:55:07 wakealarm Trigger wakealarm for 1 seconds in the future. 00028 13/12/12 12:55:09 wakealarm Trigger wakealarm for 2 seconds in the future. 00029 13/12/12 12:55:12 wakealarm Trigger wakealarm for 3 seconds in the future. 00030 13/12/12 12:55:16 wakealarm Trigger wakealarm for 4 seconds in the future. 00031 13/12/12 12:55:21 wakealarm PASSED: Test 4, RTC wakealarm triggered and fired 00032 13/12/12 12:55:21 wakealarm successfully. 00033 13/12/12 12:55:21 wakealarm 00034 13/12/12 12:55:21 wakealarm ============================================================= 00035 13/12/12 12:55:21 wakealarm 4 passed, 0 failed, 0 warnings, 0 aborted, 0 skipped, 0 info 00036 13/12/12 12:55:21 wakealarm only. 00037 13/12/12 12:55:21 wakealarm ============================================================ ^ ^ ^ ^ | | | | | | | +--- %owner (name of test that ran) | | | | | +--- %time | | | +--- %date | +--- %line (line number) Also, there is an optional %field that indicates the type of message being logged: sudo fwts wakealarm --log-format="%line %date %time %field %owner" ..this generates results.log containing: 00013 13/12/12 12:53:11 HED wakealarm Test ACPI Wakealarm. 00014 13/12/12 12:53:11 SEP wakealarm --------------------------------------------------------- 00015 13/12/12 12:53:11 INF wakealarm Test 1 of 4: Check existence of /sys/class/rtc/rtc0 00016 13/12/12 12:53:11 INF wakealarm /wakealarm. 00017 13/12/12 12:53:11 PAS wakealarm PASSED: Test 1, /sys/class/rtc/rtc0/wakealarm found. 00018 13/12/12 12:53:11 NLN wakealarm 00019 13/12/12 12:53:11 INF wakealarm Test 2 of 4: Trigger wakealarm for 1 seconds in the 00020 13/12/12 12:53:11 INF wakealarm future. 00021 13/12/12 12:53:11 INF wakealarm Trigger wakealarm for 1 seconds in the future. 00022 13/12/12 12:53:11 PAS wakealarm PASSED: Test 2, RTC wakealarm was triggered successfully. 00023 13/12/12 12:53:11 NLN wakealarm 00024 13/12/12 12:53:11 INF wakealarm Test 3 of 4: Check if wakealarm is fired. 00025 13/12/12 12:53:14 PAS wakealarm PASSED: Test 3, RTC wakealarm triggered and fired 00026 13/12/12 12:53:14 PAS wakealarm successfully. 00027 13/12/12 12:53:14 NLN wakealarm 00028 13/12/12 12:53:14 INF wakealarm Test 4 of 4: Multiple wakealarm firing tests. 00029 13/12/12 12:53:14 INF wakealarm Trigger wakealarm for 1 seconds in the future. 00030 13/12/12 12:53:16 INF wakealarm Trigger wakealarm for 2 seconds in the future. 00031 13/12/12 12:53:19 INF wakealarm Trigger wakealarm for 3 seconds in the future. 00032 13/12/12 12:53:23 INF wakealarm Trigger wakealarm for 4 seconds in the future. 00033 13/12/12 12:53:28 PAS wakealarm PASSED: Test 4, RTC wakealarm triggered and fired 00034 13/12/12 12:53:28 PAS wakealarm successfully. 00035 13/12/12 12:53:28 NLN wakealarm 00036 13/12/12 12:53:28 SEP wakealarm ========================================================= 00037 13/12/12 12:53:28 SUM wakealarm 4 passed, 0 failed, 0 warnings, 0 aborted, 0 skipped, 0 00038 13/12/12 12:53:28 SUM wakealarm info only. 00039 13/12/12 12:53:28 SEP wakealarm ========================================================= ^ | +-----------------------+ | RES = result (PASSED or FAILED) ERR = error (something fatal happened!) WRN = warning (not a critical failure, but may need looking at) DBG = debug output (deprecated) INF = information fields SUM = summary NLN = new line (empty field) ADV = advice information HED = heading TAG = tag information SEP = separator (just pretty printing) PAS = Test Passed FAL = Test Failed SKP = Test Skipped ABT = Test Aborted INO = Information only use: fwts --log-fields to show all available fields One can filter on these fields using --log-filter, e.g. sudo fwts --log-filter=RES,SUM .. just collect results and summary of tests sudo fwts --log-filter=ALL,~SEP .. all fields except the separators One can also re-arrange or modify the log format using --log-format, e.g. sudo fwts --log-format="%line %field %time: " mtrr - this produces: 00011 SEP 12:13:07: -------------------------------------------------------------------------------- 00012 INF 12:13:07: MTRR overview 00013 INF 12:13:07: ------------- 00014 INF 12:13:07: Reg 0: 0x00000000ffc00000 - 0x0000000100000000 ( 4 MB) Write-Protect 00015 INF 12:13:07: Reg 1: 0x0000000000000000 - 0x0000000080000000 ( 2048 MB) Write-Back 00016 INF 12:13:07: Reg 2: 0x0000000080000000 - 0x00000000c0000000 ( 1024 MB) Write-Back 00017 INF 12:13:07: Reg 3: 0x00000000c0000000 - 0x00000000e0000000 ( 512 MB) Write-Back 00018 INF 12:13:07: Reg 4: 0x00000000dc000000 - 0x00000000e0000000 ( 64 MB) Uncached 00019 INF 12:13:07: Reg 5: 0x00000000db000000 - 0x00000000dc000000 ( 16 MB) Uncached 00020 INF 12:13:07: Reg 6: 0x0000000100000000 - 0x0000000180000000 ( 2048 MB) Write-Back 00021 INF 12:13:07: Reg 7: 0x0000000180000000 - 0x00000001a0000000 ( 512 MB) Write-Back 00022 INF 12:13:07: Reg 8: 0x000000019f000000 - 0x00000001a0000000 ( 16 MB) Uncached 00023 INF 12:13:07: Reg 9: 0x000000019e800000 - 0x000000019f000000 ( 8 MB) Uncached 00024 NLN 12:13:07: 00025 INF 12:13:07: Test 1 of 3: Validate the kernel MTRR IOMEM setup. 00026 PAS 12:13:07: PASSED: Test 1, Memory ranges seem to have correct attributes. 00027 NLN 12:13:07: 00028 INF 12:13:07: Test 2 of 3: Validate the MTRR setup across all processors. 00029 PAS 12:13:07: PASSED: Test 2, All processors have the a consistent MTRR setup. 00030 NLN 12:13:07: 00031 INF 12:13:07: Test 3 of 3: Check for AMD MtrrFixDramModEn being cleared by the BIOS. 00032 SKP 12:13:07: SKIPPED: Test 3, CPU is not an AMD, cannot test. 00033 NLN 12:13:07: 00034 SEP 12:13:07: ================================================================================ 00035 SUM 12:13:07: 2 passed, 0 failed, 0 warnings, 0 aborted, 1 skipped, 0 info only. 00036 SEP 12:13:07: ================================================================================ Available fields are: %line - log line number %time - current time %date - current date %owner - name of the test program (the owner of the the current test) %field - the 3 letter record identifier field (e.g. SEP, RES, etc..) Test Progress Feedback ====================== Use the --show-progress to dump out the test progress to stderr. Output is as follows: Test: Test ACPI Wakealarm. Check existence of /sys/class/rtc/rtc0/wakealarm. 1 passed Trigger wakealarm for 1 seconds in the future. 1 passed Check if wakealarm is fired. 1 passed Multiple wakealarm firing tests. 1 passed PASSED or FAILED? ================= The --stdout-summary flag outputs to stdout PASSED or FAILED if test(s) passed or failed. It's essentially for one-shot test modes where you want to run one test and see if it passed or failed without having to look at the results log, e.g. sudo fwts mtrr --stdout-summary The exit code returns 1 for test failure and 0 for test success, so the test suite can be run from a shell script and one can detect if the test worked or not, e.g. #!/bin/bash LOG=stdout sudo fwts dmi_decode --results-output=$LOG failed=$? Resources ========= fwts git repository: git://kernel.ubuntu.com/hwe/fwts.git http://kernel.ubuntu.com/git?p=hwe/fwts.git;a=summary fwts reference guide: https://wiki.ubuntu.com/Kernel/Reference/fwts fwts LiveCD: http://fwts.ubuntu.com/fwts-live/ README_ACPICA.txt000066400000000000000000000105201231470457100135560ustar00rootroot00000000000000The following files have been copied from the ACPICA source tree from git repository: git://github.com/acpica/acpica.git In compliance with the license, these files are listed below and the Intel copyright message has been included in fwts. No file has been modified at all. src/acpica/source/common: adfile.c adisasm.c adwalk.c ahpredef.c dmextern.c dmrestag.c dmtable.c dmtbdump.c dmtbinfo.c src/acpica/source/components: debugger disassembler dispatcher events executer hardware namespace parser resources tables utilities src/acpica/source/components/debugger: dbcmds.c dbdisply.c dbexec.c dbfileio.c dbhistry.c dbinput.c dbmethod.c dbnames.c dbstats.c dbutils.c dbxface.c src/acpica/source/components/disassembler: dmbuffer.c dmnames.c dmobject.c dmopcode.c dmresrc.c dmresrcl2.c dmresrcl.c dmresrcs.c dmutils.c dmwalk.c src/acpica/source/components/dispatcher: dsargs.c dscontrol.c dsfield.c dsinit.c dsmethod.c dsmthdat.c dsobject.c dsopcode.c dsutils.c dswexec.c dswload2.c dswload.c dswscope.c dswstate.c src/acpica/source/components/events: evevent.c evglock.c evgpeblk.c evgpe.c evgpeinit.c evgpeutil.c evmisc.c evregion.c evrgnini.c evsci.c evxface.c evxfevnt.c evxfgpe.c evxfregn.c src/acpica/source/components/executer: exconfig.c exconvrt.c excreate.c exdebug.c exdump.c exfield.c exfldio.c exmisc.c exmutex.c exnames.c exoparg1.c exoparg2.c exoparg3.c exoparg6.c exprep.c exregion.c exresnte.c exresolv.c exresop.c exstore.c exstoren.c exstorob.c exsystem.c exutils.c src/acpica/source/components/hardware: hwacpi.c hwesleep.c hwgpe.c hwpci.c hwregs.c hwsleep.c hwvalid.c hwxface.c hwxfsleep.c src/acpica/source/components/namespace: nsaccess.c nsalloc.c nsdump.c nsdumpdv.c nseval.c nsinit.c nsload.c nsnames.c nsobject.c nsparse.c nspredef.c nsrepair2.c nsrepair.c nssearch.c nsutils.c nswalk.c nsxfeval.c nsxfname.c nsxfobj.c src/acpica/source/components/parser: psargs.c psloop.c psopcode.c psparse.c psscope.c pstree.c psutils.c pswalk.c psxface.c src/acpica/source/components/resources: rsaddr.c rscalc.c rscreate.c rsdump.c rsinfo.c rsio.c rsirq.c rslist.c rsmemory.c rsmisc.c rsserial.c rsutils.c rsxface.c src/acpica/source/components/tables: tbfadt.c tbfind.c tbinstal.c tbutils.c tbxface.c tbxfroot.c tbxfload.c src/acpica/source/components/utilities: utaddress.c utalloc.c utcache.c utcopy.c utdebug.c utdecode.c utdelete.c uteval.c utexcep.c utglobal.c utids.c utinit.c utlock.c utmath.c utmisc.c utmutex.c utobject.c utosi.c utresrc.c utstate.c uttrack.c utxface.c utxferror.c src/acpica/source/include: acapps.h accommon.h acconfig.h acdebug.h acdisasm.h acdispat.h acevents.h acexcep.h acglobal.h achware.h acinterp.h aclocal.h acmacros.h acnames.h acnamesp.h acobject.h acopcode.h acoutput.h acparser.h acpi.h acpiosxf.h acpixf.h acpredef.h acresrc.h acrestyp.h acstruct.h actables.h actbl1.h actbl2.h actbl3.h actbl.h actypes.h acutils.h amlcode.h amlresrc.h src/acpica/source/platform: acenv.h acgcc.h aclinux.h src/acpica/source/os_specific/service_layers: osunixxf.c src/acpica/source/tools/acpiexec: aehandlers.c aecommon.h src/acpica/source/compiler: aslanalyze.c aslbtypes.c aslcodegen.c aslcompile.c aslcompiler.h aslcompiler.l aslcompiler.y asldefine.h aslerror.c aslfiles.c aslfold.c aslglobal.h asllength.c asllisting.c aslload.c asllookup.c aslmain.c aslmap.c aslmessages.h aslopcodes.c asloperands.c aslopt.c aslpredef.c aslresource.c aslrestype1.c aslrestype1i.c aslrestype2.c aslrestype2d.c aslrestype2e.c aslrestype2q.c aslrestype2s.c aslrestype2w.c aslstartup.c aslstubs.c aslsupport.l asltransform.c asltree.c asltypes.h aslutils.c asluuid.c aslwalks.c dtcompile.c dtcompiler.h dtexpress.c dtfield.c dtio.c dtparser.l dtparser.y dtsubtable.c dttable.c dttemplate.c dttemplate.h dtutils.c fwts_iasl_interface.c fwts_iasl_interface.h preprocess.h prexpress.c prmacros.c prparser.l prparser.y prscan.c prutils.c README_SOURCE.txt000066400000000000000000000140461231470457100136450ustar00rootroot00000000000000== FWTS Source Structure == FWTS comprises of a core fwts library, two special builds of the ACPICA source and the fwts tests themselves. == Core FWTS library libfwts.so == The core fwts library, libfwts.so, contains the fwts test framework to drive fwts tests and a support library that provides the tests with commonly used functionality, such as list handling, log scanning, port I/O, ACPI table handling, etc. Source: fwts/src/lib/src fwts/src/lib/include Conventions: All fwts core library functions should start with fwts_ prefix C source that provides an API should have a corresponding header in fwts/src/lib/include We include all exported headers in fwts/src/lib/include/fwts.h Declare variables and functions as static if they are not to be exported NULL returns indicates an error FWTS_OK indicates success FWTS_ERROR indicates generic failure -ve returns indicate error All structs should be typedef'd NO typedef'ing of void * please! Where possible use uint64_t, uint32_t, uint16_t, uint8_t ALWAYS assume system calls fail and check returns NO clever macros that used obfuscated tricks Kernel Style (K&R). Avoid spaces and tabs at end of line. Must compile with -Wall -Werror Avoid warnings, exception is the ACPICA core since we don't modify this Test with valgrind to check for memory leaks. No smart tricks. Comments are not optional! == ACPICA libraries == The ACPICA source is built in two modes for fwts, one for the run-time execution of AML (acpiexec mode) and one for the assembly/dis-assembly of AML (compile mode). This makes life a bit complex since both modes are not compatible, so fwts builds these as differenty libraries and exports a thin shim interface that libfwts and fwts tests can use. It's quite ugly. The intention is to regularly pick up the latest ACPICA sources every release cycle and drop these into fwts. Note that we only incorporate the minimal subset of ACPICA source that is required for the execution and assembly/disassembly functionality required by fwts. === acpiexec mode === libfwtsacpica.so: fwts/src/acpica/Makefile.am Interface: fwts/src/acpica/fwts_acpica.c fwts/src/acpica/fwts_acpica.h === compiler mode === libfwtsiasl.so: fwts/src/acpica/source/compiler/Makefile.am Interface: fwts/src/acpica/source/compiler/fwts_iasl_interface.c fwts/src/acpica/source/compiler/fwts_iasl_interface.h === Notes === Whenever we update the ACPICA core we need to update README_ACPICA.txt to reflect any additional ACPIC sources we include into fwts. DO NOT modify any of the ACPICA sources - we use the original sources and should not modify them in fwts. Note that some on-the-fly source tweaking is performed to stop name clashes. == fwts tests == The fwts tests are grouped in several sub-directories depending on the type of testing: src/acpi - ACPI specific tests (methods, AML, tables, etc) src/apic - APIC tests src/bios - Tradition BIOS tests, e.g. SMBIOS, MPTables etc src/cmos - CMOS memory src/cpu - CPU specific firmware settings src/dmi - DMI tables src/example - example test template code src/hotkey - HotKey tests src/hpet - HPET src/kernel - kernel specific src/pci - PCI src/uefi - UEFI When writing new tests use the blank sketch of a test in src/example/blank/blank.c. Test Conventions: All code must be static, no exporting of functions to other parts of fwts. If we have common code in multiple tests then refactor it into the fwts core library. DO NOT call exit() from a test. DO NOT call printf() from a test - use the fwts logging functions. Tests are registered with fwts using the FWTS_REGISTER macro: FWTS_REGISTER(const char *example, fwts_framework_ops *example_ops, priority, flags); where: example - is the name of the test, no spaces in this name as it is stringified. example_ops - fwts_framework_ops to configure test, with: .description - const char * name of the test. .init - optional function to call before running the test(s). .deinit - optional function to call after running the test(s). .minor_tests - array of fwts_framework_minor_test describing minor tests to run. .minor_tests is an array of functions + text description tuples of minor tests to run and must be NULL terminated. One can have one or more minor tests registered to run. priority ranking - when to run the test when we have many tests to run and can be: FWTS_TEST_FIRST - schedule to run as first test(s) FWTS_TEST_EARLY - schedule to run fairly soon at start FWTS_TEST_ANYTIME - medium priority FWTS_TEST_LATE - schedule to run close to the end FWTS_TEST_LAST - run at the end Tests of the same priority are will run in an order chosen at link time, but will run before tests of higher priory ranking and after tests of lower priory ranking. flags - indicates the type of test - where appropriate these can be logically OR'd together, can be: FWTS_BATCH batch test FWTS_INTERACTIVE interactive test FWTS_BATCH_EXPERIMENTAL batch experimental test FWTS_INTERACTIVE_EXPERIMENTAL batch interactive test FWTS_POWER_STATES S3/S4 test FWTS_UTILS utility FWTS_ROOT_PRIV needs root privilege to run FWTS_TEST_BIOS BIOS specific FWTS_TEST_UEFI UEFI specific FWTS_TEST_ACPI ACPI specific so, we can have FWTS_BATCH | FWTS_ROOT_PRIV | FWTS_ACPI for a batch test that requires root privilege and is an ACPI test. test init/deinit callbacks. These are intended to do pre and post test setup and close down, for example loading in tables, checking for resources, sanity checking capabilities. They return FWTS_OK (all OK) or FWTS_ERROR (something went wrong, abort!). minor tests. These do the specific tests, can have one or more per test harness. Must return FWTS_OK (all OK) or FWTS_ERROR (something went wrong). FWTS_ERROR does not mean a test failed, but the test could not be run because of some external factor, e.g. memory allocation failure, I/O issue, etc. assets/000077500000000000000000000000001231470457100123645ustar00rootroot00000000000000assets/fwts.svg000066400000000000000000000731621231470457100141010ustar00rootroot00000000000000 image/svg+xml FWTS auto-packager/000077500000000000000000000000001231470457100136055ustar00rootroot00000000000000auto-packager/mkpackage.README000066400000000000000000000061401231470457100164100ustar00rootroot00000000000000== FWTS Uploading == General procedure ----------------- Periodically we've put enough patches into fwts to deem it ready for a new upload. To do so, we update the changelog with a summary of the changes, update the version tag, push these, then we clone the repo, remove the .git directory and create debian source packages ready for uploading and building in the fwts PPAs. Here's how I went from Version V0.25.03 to V0.25.04 In the fwts git repo: See the current version: ./update_version.sh You need to specify the version number The last version was V0.25.03 Use git log to see what's been added since the last tagged release, e.g. git shortlog V0.25.03..HEAD | sed "s/^ / */g" collect up one-line-summary of changes, add them to debian/changelog: e.g. fwts (0.25.04) quantal; urgency=low [Colin Ian King] * apci: acpitables: only check CMOS in BOOT table from firmware tables (LP: #1016469) * lib: fwts_acpi_tables: add ACPI table provenance * lib: fwts_acpi_tables: load tables in deterministically * lib: fwts_log: handle special logfile names * lib: log: move line counting to logging back-ends * lib: fwts_log: remove fwts_log_line_number(), no longer used * lib: fwts_framework: output all logfile names being written to * lib: fwts_log: add fwts_log_get_filenames() * lib: fwts_summary: remove references to log line number [Keng-Yu Lin] * debian: Fix up the dependency of debian packages -- Keng-Yu Lin Mon, 25 Jun 2012 16:44:51 +0800 then: git add debian/changelog git commit -s -m"debian: update changelog" Next, update the tag: ./update-version V0.25.04 git push git push --tags Next, create a directory for creating the tarball and checksum and run the mktar.sh script. Upload the generated tarball and SHA256SUMS to the desired localtion for the releasing. Next, create an auto-packager directory somewhere and run the mkpackage.sh script from within it. E.g mkdir /home/cking/fwts/auto-packager cp mkpackage.sh /home/cking/fwts/auto-packager cd /home/cking/fwts/auto-packager ./mkpackage.sh V0.25.04 and this will clone the git repo, remove the .git directory and create packages for uploading. For a release like Precise, it generates: V0.25.04/precise/fwts_0.25.04 V0.25.04/oneiric/fwts_0.25.04~o* V0.25.04/natty/fwts_0.25.04~n* V0.25.04/lucid/fwts_0.25.04~l* NOTE: The current release does not end with ~ suffix to the version name. This version is the one that gets periodically uploaded to universe in the current release until we get to feature freeze. And dput these into the ppa:firmware-testing-team/ppa-fwts-unstable-crack PPA Let it shake out - build + test etc. Get users to test against this. Onece you are OK with it, copy the packages into ppa:firmware-testing-team/ppa-fwts-devel Every so often during the distro release cycle copy the stable current package into universe. You can either do this on every version number bump or when you deem that a new version is really stable. Once a package has been copied to universe, we then copy the packages from ppa:firmware-testing-team/ppa-fwts-devel to ppa:firmware-testing-team/ppa-fwts-stable. auto-packager/mkpackage.sh000077500000000000000000000055701231470457100160760ustar00rootroot00000000000000#!/bin/bash # # Copyright (C) 2010-2014 Canonical # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # # # Get fwts sources, strip out .git directory, add in necessary debian packaging # files, build source package ready for upload. # RELEASES="lucid precise quantal raring saucy trusty" REPO=git://kernel.ubuntu.com/hwe/fwts.git RELEASE_TAR_URL=http://fwts.ubuntu.com/release FWTS=fwts # # Clone the repo # get_source() { echo Getting source git clone $REPO } # # Figure out latest tagged version # get_version() { pushd $FWTS >& /dev/null git tag | tail -1 popd >& /dev/null } # # Checkout version # checkout_version() { echo "Checking out version $1" pushd $FWTS >& /dev/null git checkout -b latest $1 popd >& /dev/null } # # Remove .git repo as we don't want this in the final package # rm_git() { rm -rf $FWTS/.git } # # Remove the source # rm_source() { rm -rf $FWTS } # # Prepare the orig tarball # prepare_tarball() { mkdir $version pushd $version >& /dev/null wget -N $RELEASE_TAR_URL/fwts-$version.tar.gz wget -N $RELEASE_TAR_URL/SHA256SUMS grep "fwts-$version.tar.gz" SHA256SUMS > SHA256SUMS.local sha256sum -c SHA256SUMS.local if [ $? -ne 0 ]; then echo "Checksum unmatched. Abort" exit fi mv fwts-$version.tar.gz fwts_`echo $version|cut -b 2-`.orig.tar.gz popd >& /dev/null } # # Create source package ready for upload and build # mk_package() { rel=$1 rm -rf $version/$rel mkdir -p $version/$rel cp -r $FWTS $version/$rel cp $version/fwts_`echo $version|cut -b 2-`.orig.tar.gz $version/$rel pushd $version/$rel/$FWTS >& /dev/null deb_topline=`head -1 debian/changelog` deb_release=`echo $deb_topline | cut -f3 -d' '` if [ "x$rel;" = "x$deb_release" ]; then suffix='' else suffix="~`echo $rel | cut -c1`" fi # # Mungify changelog hack # sed "s/) $deb_release/$suffix) $rel;/" debian/changelog > debian/changelog.new mv debian/changelog.new debian/changelog echo 'y' | debuild -S rm -rf $FWTS popd >& /dev/null } # # Here we go.. # rm_source get_source if [ $# -eq 1 ]; then version=$1 else version=`get_version` fi checkout_version $version rm_git prepare_tarball for I in $RELEASES do echo Building package for release $I with version $version mk_package $I done rm_source auto-packager/mktar.sh000077500000000000000000000035031231470457100152630ustar00rootroot00000000000000#!/bin/bash # # Copyright (C) 2010-2014 Canonical # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # # # Get fwts sources, strip out .git directory, add in necessary debian packaging # files, build source package ready for upload. # REPO=git://kernel.ubuntu.com/hwe/fwts.git FWTS=fwts # # Clone the repo # get_source() { echo "Getting source" pushd "$version" >& /dev/null git clone $REPO popd >& /dev/null } # # Checkout version # checkout_version() { echo "Checking out version" pushd "$version/$FWTS" >& /dev/null git checkout -b latest $version popd >& /dev/null } # # Remove the source # rm_source() { rm -rf "$version/$FWTS" } # # Create source package ready for upload and build # mk_tarball() { pushd "$version/$FWTS" >& /dev/null git archive --format tar -o ../fwts-$version.tar $version gzip ../fwts-$version.tar popd >& /dev/null } # # Create checksums # mk_checksums() { pushd "$version" >& /dev/null sha256sum fwts-$version.tar.gz >> SHA256SUMS popd >& /dev/null } # # Here we go.. # if [ $# -eq 1 ]; then version=$1 mkdir $version else echo "Please specify a version" exit fi rm_source get_source checkout_version mk_tarball mk_checksums rm_source configure.ac000066400000000000000000000051311231470457100133500ustar00rootroot00000000000000 AC_INIT([fwts],[0.1],[colin.king@canonical.com]) AM_INIT_AUTOMAKE([-Wall -Werror foreign subdir-objects]) m4_ifdef([AM_PROG_AR], [AM_PROG_AR]) AC_CANONICAL_HOST AC_CONFIG_MACRO_DIR([m4]) AC_PROG_CC AC_PROG_LEX AC_PROG_YACC AC_PROG_LIBTOOL AC_C_INLINE AM_PROG_CC_C_O AC_SEARCH_LIBS([json_object_from_file], [json json-c], [], [ AC_MSG_ERROR([no available json library]) ]) AC_CHECK_FUNCS([localtime_r]) AC_CHECK_FUNCS([dup2]) AC_CHECK_FUNCS([getcwd]) AC_CHECK_FUNCS([getpagesize]) AC_CHECK_FUNCS([memset]) AC_CHECK_FUNCS([mkdir]) AC_CHECK_FUNCS([munmap]) AC_CHECK_FUNCS([select]) AC_CHECK_FUNCS([socket]) AC_CHECK_FUNCS([sqrt]) AC_CHECK_FUNCS([strchr]) AC_CHECK_FUNCS([strdup]) AC_CHECK_FUNCS([strerror]) AC_CHECK_FUNCS([strstr]) AC_CHECK_FUNCS([strtoul]) AC_CHECK_FUNCS([strtoull]) AC_CHECK_FUNCS([gettimeofday]) AC_CHECK_FUNCS([uname]) AC_CHECK_HEADERS([assert.h]) AC_CHECK_HEADERS([ctype.h]) AC_CHECK_HEADERS([errno.h]) AC_CHECK_HEADERS([fcntl.h]) AC_CHECK_HEADERS([getopt.h]) AC_CHECK_HEADERS([limits.h]) AC_CHECK_HEADERS([linux/input.h]) AC_CHECK_HEADERS([math.h]) AC_CHECK_HEADERS([paths.h]) AC_CHECK_HEADERS([pcre.h]) AC_CHECK_HEADERS([sched.h]) AC_CHECK_HEADERS([signal.h]) AC_CHECK_HEADERS([stdarg.h]) AC_CHECK_HEADERS([stdint.h]) AC_CHECK_HEADERS([stdio.h]) AC_CHECK_HEADERS([stdlib.h]) AC_CHECK_HEADERS([string.h]) AC_CHECK_HEADERS([sys/io.h]) AC_CHECK_HEADERS([sys/klog.h]) AC_CHECK_HEADERS([sys/mman.h]) AC_CHECK_HEADERS([sys/param.h]) AC_CHECK_HEADERS([sys/select.h]) AC_CHECK_HEADERS([sys/socket.h]) AC_CHECK_HEADERS([sys/stat.h]) AC_CHECK_HEADERS([sys/type.h]) AC_CHECK_HEADERS([sys/un.h]) AC_CHECK_HEADERS([sys/wait.h]) AC_CHECK_HEADERS([termios.h]) AC_CHECK_HEADERS([time.h]) AC_CHECK_HEADERS([sys/ioctl.h]) AC_CHECK_HEADERS([sys/time.h]) AC_CHECK_HEADERS([json/json.h]) #AC_CHECK_LIB(pcre, pcre_compile) AC_FUNC_MALLOC AC_FUNC_FORK AC_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK AC_FUNC_MMAP AC_FUNC_REALLOC AC_TYPE_PID_T AC_TYPE_SIZE_T AC_TYPE_OFF_T AC_TYPE_UINT16_T AC_TYPE_UINT32_T AC_TYPE_UINT64_T AC_TYPE_UINT8_T case $host in arm*) CFLAGS="$CFLAGS -marm" ;; esac AC_CONFIG_HEADERS([config.h]) AC_CONFIG_FILES([ Makefile src/Makefile src/acpica/source/compiler/Makefile src/acpica/Makefile src/lib/Makefile src/lib/src/Makefile src/utilities/Makefile data/Makefile ]) AC_OUTPUT data/000077500000000000000000000000001231470457100117735ustar00rootroot00000000000000data/Makefile.am000066400000000000000000000001071231470457100140250ustar00rootroot00000000000000fwtsdatadir = $(pkgdatadir) fwtsdata_DATA = klog.json syntaxcheck.json data/klog.json000066400000000000000000007200221231470457100136250ustar00rootroot00000000000000{ "firmware_error_warning_patterns": [ { "compare_mode": "regex", "log_level": "LOG_LEVEL_MEDIUM", "pattern": "Path has too many parent prefixes.*reached beyond root node", "advice": "The firmware specified an ACPI path using too many parent ^ prefixes and reached a point where thare are no parent nodes in the hierarchy and so the referenced object could not be found. The kernel cannot find the named object because of this bug in the firmware and this may lead to broken or misbehaving behaviour.", "label": "KlogAcpiPathTooManyParentPrefixes" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_LOW", "pattern": "mem=nopentium ignored! (only supported on x86_32)", "advice": "The kernel parameter mem=nopentium (to disable 4MB pages) was ignored as it only applies to 32 bit x86 systems.", "label": "KlogE8320BiosKernelParameter" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_LOW", "pattern": "apm: Could not register misc device", "advice": "APM misc device could not be registered. However, the driver can work without this, but userspace cannot control it.", "label": "KlogBiosApmMiscDevice" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_LOW", "pattern": "Could not allocate an object descriptor", "advice": "The ACPI driver was unable to allocate an object descriptor from the ACPI global operand cache, see acpi_ut_allocate_object_desc_dbg().", "label": "KlogAcpiAllocObjDescriptor" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Oops, ACPI handle corrupt in", "advice": "An error occurred attempting to get an ACPI handle from a kernel device structure. The handle appears to be corrupt and invalid, so the unbinding of links to the device could not be actioned. See acpi_unbind_one(). This could be due to an ACPI kernel bug or a genenal memory corruption issue.", "label": "KlogAcpiHandleCorrupt" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_MEDIUM", "pattern": "Failed to create link", "advice": "The ACPI driver failed to create a sysfs link on a firmware node. Depending on the firmware node this may impede userspace from interfacing with the firmware. See acpi_bind_one().", "label": "KlogAcpiSysfsCreateLinkFailed" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "No memory for resources", "advice": "An out of memory error occurred attempting to allocate resources while creating a platform device for an ACPI device node.", "label": "KlogAcpiPlatformDeviceNoMemory" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_MEDIUM", "pattern": "kset create error", "advice": "The ACPI initialization failed to create the acpi_kobj kobject and so it won't appear in /sys/firmware. This may cause some user space applications difficulties if this is not created and populated. See acpi_init().", "label": "KlogAcpiSysfsFirmwareNotCreated" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_MEDIUM", "pattern": "Error creating sysfs interface for device ", "advice": "An error occurred when adding a new ACPI device and the sysfs interface could not be created.", "label": "KlogAcpiSysfsDeviceInterfaceFailed" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Error registering device", "advice": "An error occurred when adding a new ACPI device, the device registration failed. See acpi_device_add().", "label": "KlogAcpi" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_MEDIUM", "pattern": "Invalid reference in package", "advice": "An error occurred while trying to evaluate an ACPI reference. An element in the package had a NULL reference handle.", "label": "KlogAcpiNullReferenceInPackage" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_MEDIUM", "pattern": "Invalid package element.*got string.*buffer", "advice": "An error occurred while trying to extract a ACPI package, got a string or a buffer in a package element, but was expecting a different type.", "label": "KlogAcpiInvalidPackageElement" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_MEDIUM", "pattern": "Invalid package element.*got number", "advice": "An error occurred while trying to extract a ACPI package, got an integer in a package element, but was expecting a different type.", "label": "KlogAcpiInvalidPackageElement" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_MEDIUM", "pattern": "Format specifies more objects.*than exist in package", "advice": "An error occurred while trying to extract an ACPI package, the format specifier specifies more object than actually exist in the package. See acpi_extract_package().", "label": "KlogAcpiBadFormatSpecifier" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_LOW", "pattern": "Deprecated procfs I/F for AC is loaded, please retry with CONFIG_ACPI_PROCFS_POWER cleared", "advice": "Using an old procfs interface for ACPI AC Adapter, this occurs if CONFIG_ACPI_PROCFS_POWER is enabled. This should be disabled for kernels > 2.6.37.", "label": "KlogAcpiDeprecatedProcfsInterface" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_LOW", "pattern": "Deprecated procfs I/F for battery is loaded, please retry with CONFIG_ACPI_PROCFS_POWER cleared", "advice": "Using an old procfs interface for ACPI battery, this occurs if CONFIG_ACPI_PROCFS_POWER is enabled. This should be disabled for kernels > 2.6.37.", "label": "KlogAcpiDeprecatedProcfsInterface" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_LOW", "pattern": "Deprecated procfs I/F for SBS is loaded, please retry with CONFIG_ACPI_PROCFS_POWER cleared", "advice": "Using an old procfs interface for ACPI battery, this occurs if CONFIG_ACPI_PROCFS_POWER is enabled. This should be disabled for kernels > 2.6.37.", "label": "KlogAcpiDeprecatedProcfsInterface" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_MEDIUM", "pattern": "Unsupported Throttling notifier event", "advice": "This is an internal ACPI driver error, an unknown processor throttling notifier event has been passed to acpi_processor_throttling_notifier(). This error is very unlikely and is an ACPI driver bug.", "label": "KlogAcpiUnkownCpuThrottleNotifier" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_MEDIUM", "pattern": "Failed to create genetlink family for ACPI event", "advice": "An internel kernel error occurred during ACPI driver genetic link initialization. See acpi_event_genetlink_init() in drivers/acpi/event.c for more information.", "label": "KlogAcpiGenetlinkInitFail" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_MEDIUM", "pattern": "Can not change Invalid GPE/Fixed Event status", "advice": "The ACPI_EVENT_FLAG_HANDLE bit in the event status was not set which is invalid, aborting setting a GPE or Fixed Event counter.", "label": "KlogAcpiInvalidStatus" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_MEDIUM", "pattern": "ignored .* entries of .* found", "advice": "The ACPI table had more sub-table entries than expected, the extra entries were ignored.", "label": "KlogAcpiTableLargerThanExpected" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_MEDIUM", "pattern": "No return value", "advice": "An ACPI object evaluation failed because the caller requested a return value but the return buffer length was zero which is not enough to store the return value.", "label": "KlogAcpiEvalZeroBufferLength" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_MEDIUM", "pattern": "Blank _PRS EXT IRQ resource", "advice": "An error occurred evaluating an ACPI _PRS IRQ resource, the resource was NULL or the interrupt count was zero.", "label": "KlogAcpiBlankPrsIrqResource" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_MEDIUM", "pattern": "Blank _CRS EXT IRQ resource", "advice": "An error occurred evaluating an ACPI _CRS IRQ resource, the resource was NULL or the interrupt count was zero.", "label": "KlogAcpiBlankCrsIrqResource" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_MEDIUM", "pattern": "BIOS reported IRQ .*, using IRQ", "advice": "ACPI _CRS reported that a link should be using a specific IRQ, however a different IRQ is being used for the PCI link and _CRS has been ignored.", "label": "KlogAcpiCrsIgnoredForPciLinkIrq" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_LOW", "pattern": "_CRS .* not found in _PRS", "advice": "This error only occurs in ACPI strict mode. An interrupt specified by _CRS was not found in the _PRS, so a PCI interrupt is chosen from the last entry of the _PRS list.", "label": "KlogAcpiCrsNotInPrs" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Your BIOS is broken and requested that x2apic be disabled", "advice": "The DMAR DMAR_X2APIC_OPT_OUT bit was set so the firmware requested that the x2apic should be disabled leading to decreased system performance. The firmware opt out can be overridden using the intremap=no_x2apic_optout kernel parameter.", "label": "KlogSratEntryUnsupported" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_LOW", "pattern": "Found unsupported SRAT entry", "advice": "The kernel detected an entry in the ACPI System Resource Affinity Table (SRAT) that was not recognised. Processor local APIC/SAPIC affinity (0), Memory affinity (1) and Processory local x2APIC affinity (2) are only supported.", "label": "KlogSratEntryUnsupported" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_LOW", "pattern": "Found unsupported x2apic \\[.*\\] SRAT entry", "advice": "This warning occurs because NUMA x2apic affinity is not enabled. Kernel config CONFIG_ACPI_NUMA must be enabled to avoid this warning.", "label": "KlogSratx2apicUnsupported" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_LOW", "pattern": "Exceed the limit of T-state", "advice": "An attempt to change the throttling state to one that is outside the range of T-states as provided by the Throttling Supported States _TSS package. The last (and hence lowest performance) state has been selected instead.", "label": "KlogTstateLimitExceeded" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "duty_cycle spans bit 4", "advice": "The FADT Duty Cycle Offset and Duty Cycle Width is > 4, which means there are more than the maximum allowed 16 processor throttling states so throttling will be be disabled.", "label": "KlogTooManyThrottlingStates" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_MEDIUM", "pattern": "Invalid package argument", "advice": "The ACPI driver attempted to extract an ACPI package but found that the ACPI object was either NULL or was not a package or was a package that had zero elements.", "label": "KlogInvalidPackageArgument" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_MEDIUM", "pattern": "Invalid format argument", "advice": "The ACPI driver attempted to extract an ACPI package but found that the format was NULL or the format pointer was NULL or the format length was less than 1.", "label": "KlogInvalidFormatArgument" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_LOW", "pattern": "Invalid buffer argument", "advice": "The ACPI driver attempted to extract an ACPI package but found that the destination buffer was NULL.", "label": "KlogInvalidBufferArgument" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_MEDIUM", "pattern": "Limiting number of power states to max", "advice": "The ACPI C states object (_CST) contains more C states than ACPI supports and so the kernal has had to limit this. To enable more C states, one must increase the Kernal ACPI macro ACPI_PROCESSOR_MAX_POWER.", "label": "KlogLimitPowerStates" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_LOW", "pattern": "Duplicate ACPI video bus devices for the same VGA controller", "advice": "The ACPI video driver has found a duplicate ACPI video bus device for the same VGA controller. If the current driver does not work, one can try to work around this using the video.allow_duplicates=1 kernel parameter.", "label": "KlogDuplicateACPIVideoBus" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_LOW", "pattern": "TSC doesn't count with P0 frequency", "advice": "The AMD processor has the x86 constant TSC feature enabled but the firmware has not set bit 24 of the MSR MSR_K7_HWCR and so the processor TSC does not count in the P0 frequenct level. This is a firmware bug.", "label": "KlogAmdTscP0FreqNoCount" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_LOW", "pattern": "BIOS strings suggest APM bugs, disabling power status reporting", "advice": "The firmware is known to have broken Advanced Power Management (APM), so APM has been disabled.", "label": "KlogApmBiosBroken" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_LOW", "pattern": "BIOS strings suggest APM reports battery life in minutes and wrong byte order", "advice": "The firmware is known to report the battery life in minutes in the wrong byte order, so the kernel has detected this and will work around the firmware bug. This is known to occur on many Sony laptops.", "label": "KlogApmMinuteSwapBytes" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Disabling ACPI support", "advice": "The machine has had ACPI support disabled because either the firmware is way too old, or it is known to have broken or bad ACPI support. One can try to override this with the acpi=force kernel parameter, but the machine may still hang or not work correctly.", "label": "KlogAcpiDisabled" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_LOW", "pattern": "acpi=force override", "advice": "The kernel has been forced to enabled ACPI. This is sometimes required because ACPI support has been disabled because the firmware is too old or was blacklisted because it has known ACPI issues.", "label": "KlogAcpiForceOverride" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_LOW", "pattern": "Invalid passive threshold", "advice": "The ACPI driver attempted to evaluate the ACPI Passive List (_PSL) object for a particular thermal zone but this failed. The passive cooling for that particular thermal zone has been invalidated.", "label": "KlogInvalidPassiveThreshold" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_LOW", "pattern": "Critical threshold", "advice": "The firmware critical trip point has been overridden using the kernel critical trip point kernel parameter crt.", "label": "KlogCriticalThreshold" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Found unsupported MADT entry", "advice": "The ACPI Multiple APIC Description Table (MADT) contains an entry that has an unknown MADT header type. This will be igored, but it does suggest a broken or buggyy ACPI MADT.", "label": "KlogMadtEntryUnsupported" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Unknown interrupt routing model", "advice": "An internal ACPI driver bug has occurred. acpi_bus_init_irq has detected an unknown interrupt routing model in acpi_irq_model. This most probably is a kernel bug.", "label": "KlogAcpiIrqModelUnknown" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_LOW", "pattern": "Unable to map SBF", "advice": "The kernel was unable to map the ACPI BOOT table and hence unable to determine the port to set the Simple Boot Flag.", "label": "KlogBootTableNotMapped" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_MEDIUM", "pattern": "DMAR: Recommended TLB entries for ISOCH unit is 16; your BIOS set", "advice": "The recommended number of TLB entries for the ISOCH DMAR unit should be 16, hoever the firmware has misconfigured this.", "label": "KlogDmarTlbEntriesMisconfigured" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_MEDIUM", "pattern": "Cannot transition to non-D0 state from D3", "advice": "ACPI cannot transition a device from a D3 state to a non-D0 state.", "label": "KlogAcpiD0TransitionFailed" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_MEDIUM", "pattern": "Cannot set device to a higher-powered state than parent", "advice": "ACPI cannot transition a device to a higher power state to that of the parent device.", "label": "KlogAcpiHigherPowerStateThanParent" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_MEDIUM", "pattern": "Device \\[.*\\] failed to transition to", "advice": "ACPI cannot transition a device to a different power state.", "label": "KlogAcpiPowerStateTransitionFailed" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Invalid _PRS IRQ", "advice": "The ACPI Possible Resource Settings (_PRS) object returned an invalid IRQ mapping from a PCI interrupt pin to the interrupt input of an interrupt controller.", "label": "KlogAcpiInvalidPrsIrq" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_INFO", "pattern": "firmware reports .*:.*:.* PCI INT .* connected to .*; changing to", "advice": "The kernel has detected a PCI interrupt configuration than needed to be quirked to make it work correctly.", "label": "KlogAcpiPciIntRemap" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_LOW", "pattern": "No IOAPIC for GSI", "advice": "The kernel could not find an IOAPIC that manages the Global System Interrupt (GSI), so no IOAPIC will be configured with that GSI.", "label": "KlogAcpiNoIoapicForGsi" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_CRITICAL", "pattern": "[T|t]emperature above threshold, cpu clock throttled", "advice": "Test caused CPU temperature above critical threshold. The CPU has been throttled to run slower because of over-heating above the critical threshold. CPU throttling will be turned off once the CPU has cooled sufficiently. Frequent throttling may indicate poor thermal design on the machine.", "label": "KlogThermalOverrun" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_CRITICAL", "pattern": "Possible thermal failure", "advice": "A Pentium class Intel CPU has had a thermal machine check exception caused by hot CPU. If this persists it may indicate poor thermal design on the machine.", "label": "KlogThermalOverrun" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_MEDIUM", "pattern": "BIOS never enumerated boot CPU", "advice": "The boot processor is not enumerated!", "label": "KlogBiosBootCpuNotEnumerated" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "acpi_shpchprm.*_HPP fail", "advice": "Hotplug _HPP method failed", "label": "KlogAcpiHppMethodFailed" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "shpchp.*acpi_pciehprm.*OSHP fail", "advice": "ACPI Hotplug OSHP method failed", "label": "KlogAcpiHotplugOshpMethodFailed" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "shpchp.*acpi_shpchprm.*evaluate _BBN fail", "advice": "Hotplug _BBN method is missing", "label": "KlogAcpiHotPlugBbnMissing" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Error while parsing _PSD domain information", "advice": "_PSD domain information is corrupt!", "label": "KlogAcpiPsdParsingError" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_CRITICAL", "pattern": "Wrong _BBN value, reboot and use option 'pci=noacpi'", "advice": "The BIOS has wrong _BBN value, which will make PCI root bridge have wrong bus number", "label": "KlogAcpiWrongBbnValue" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "ACPI.*apic on CPU.* stops in C2", "advice": "The local apic timer incorrectly stops during C2 idle state.The ACPI specification forbids this and Linux needs the local APIC timer to work. The most likely cause of this is that the firmware uses a hardware C3 or C4 state that is mapped to the ACPI C2 state.", "label": "KlogAcpiApicStopsInC2" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_CRITICAL", "pattern": "Disabling IRQ", "advice": "The kernel detected an irq storm. This is most probably an IRQ routing bug.", "label": "KlogBiosIrqRoutingBug" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "Could not enable.*event", "advice": "An ACPI fixed event could not be enabled. This can affect fixed events such as the power management timer, power button, sleep button, RTC alarm, wake status, system bus master request or the global release lock status.", "label": "KlogAcpiEventEnableFailed" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "Could not disable.*events", "advice": "An ACPI fixed event could not be disabled. This can affect fixed events such as the power management timer, power button, sleep button, RTC alarm, wake status, system bus master request or the global release lock status.", "label": "KlogAcpiEventDisableFailed" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "During return object analysis", "advice": "The ACPI interpreter attempted to convert or repair a return object of an unexpected type, however a fatal error occurred during the conversion. Undefined AML execution behaviour may occur.", "label": "KlogAcpiObjConvertFailed" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "MMIO size insufficient to access LTR", "advice": "Intel Lynxpoint Low Power Subsystem have a set of MMIO mapped registers that provide access to the LTR (Latency Tolerance Reporting). However, the MMIO size is smaller than expected. The corresponding I/O resource for this is incorrect, it should have a resource size set to a minimum of 24 bytes.", "label": "KlogAcpiLpssMmioSizeTooSmall" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Error installing notify handler", "advice": "Failed to install a notify handler for the ACPI video driver. The ACPI video driver cannot handle notify events to change brightness levels or turn the display on/off.", "label": "KlogAcpiNotifyHandlerInstallFailed" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Can't remove video notify handler", "advice": "Failed to remove a notify handler for the ACPI video driver. This is most probably an internal kernel issue.", "label": "KlogAcpiNotifyHandlerRemoveFailed" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Could not register bus type", "advice": "The ACPI driver failed to register the ACPI buse type. This is not deemed to be fatal, but it is a kernel error that should be investigated. See acpi_scan_init().", "label": "KlogAcpiScanBusTypeRegisterFailed" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "failed to create clocks", "advice": "ACPI platform clocks failed to initialize making the creation of the platform device for the ACPI device node fail. See acpi_create_platform_device() and acpi_create_platform_clks().", "label": "KlogAcpiPlatformClockCreateFailed" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "platform device creation failed:", "advice": "Failed to register the ACPI device node. platform_device_register_full() failed which makes the platform device creation fail. See platform_device_register_full() and acpi_create_platform_device().", "label": "KlogAcpiPlatformDeviceCreateFailed" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "cannot add bridge to acpi list", "advice": "The ACPI bus scan failed and so a root bridge hotplug insertion failed. See handle_root_bridge_insertion().", "label": "KlogAcpiPciRootBridgeAddFailed" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "Incorrect return type .* requested .*", "advice": "An ACPI object find and evaluate has failed, the return object requested does not match the requested type. This is most probably a firmware bug.", "label": "KlogAcpiIncorrectReturnType" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Unknown field access type 0x", "advice": "Attempted to decode an ACPI field definition failed because the firmware attempted to use an unknown access type. Only byte, word, dword, qword and 'any' access types are allowed.", "label": "KlogAcpiUknownFieldAccessType" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Null RegionNode", "advice": "Construction of an object and connecting it to a parent node failed because a region node was unexpectedly NULL. See acpi_ex_prep_field_value().", "label": "KlogAcpiNullRegionNode" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Null Index Object during field prep", "advice": "Construction of an object and connecting it to a parent node failed for a local index field. See acpi_ex_prep_field_value().", "label": "KlogAcpiNullIndexObject" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "No object attached to node", "advice": "Failed to resolve an ACPI namespace node to a valued object, there is no object attached to the given node. See acpi_ex_resolve_node_to_value().", "label": "KlogAcpiNoObjectAttachedToNode" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Object not a Package, type", "advice": "Failed to resolve an ACPI namespace node to a valued object, the source object was not an ACPI package as expected.", "label": "KlogAcpiObjectNotPackage" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Object not a Buffer, type", "advice": "Failed to resolve an ACPI namespace node to a valued object, the source object was not an ACPI buffer as expected.", "label": "KlogAcpiObjectNotBuffer" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Object not a String, type", "advice": "Failed to resolve an ACPI namespace node to a valued object, the source object was not an ACPI string as expected.", "label": "KlogAcpiObjectNotString" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Object not a Integer, type", "advice": "Failed to resolve an ACPI namespace node to a valued object, the source object was not an ACPI integer as expected.", "label": "KlogAcpiObjectNotInteger" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "Untyped entry .* no attached object", "advice": "Failed to resolve an ACPI namespace node to a valued object, the source object was an ACPI ANY type and so there is no object associated with it.", "label": "KlogAcpiUntypedEntry" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Unsupported Reference type 0x", "advice": "Failed to resolve an ACPI namespace node to a valued object, the source object reference class must be a table, refof or index reference class.", "label": "KlogAcpiUnsupportedReferenceType" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "Node .* Unknown object type 0x", "advice": "Failed to resolve an ACPI namespace node to a valued object, the source object was an unknown type.", "label": "KlogAcpiUnknownObjectType" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Invalid internal name", "advice": "An error occurred turning an ACPI internal name into an external (printable) form. The required length exceeded the intenral name length, causing a bounds error. See acpi_ns_externalize_name().", "label": "KlogAcpiInvalidInternalName" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Invalid zero length descriptor in resource list", "advice": "An error occurred turning an ACPI resource list into a byte stream of resources. The resource length was zero, which is an illegal length.", "label": "KlogAcpiInvalidZeroLengthDescriptor" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "is not an ACPI Operand object", "advice": "An internal ACPI error occurred freeing an ACPI object or adding it to the object cache. The descriptor type of the given object was not a descriptor type operand. See acpi_ut_delete_object_desc().", "label": "KlogAcpiNotOperandObject" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "Cannot convert to external object - unsupported Reference Class .* in object", "advice": "An internal ACPI error occurred getting the size of a simple ACPI object. A local reference object with a reference class that was not a refclass name class is not currently supported (such as locals and args) in the ACPI driver and may need implementing. See acpi_ut_get_simple_object_size(). ", "label": "KlogAcpiUnsupportedReferenceClass" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "Cannot convert to external object - unsupported type .* in object", "advice": "An internal ACPI error occurred getting the size of a simple ACPI object, the object was of a type that is not supported.", "label": "KlogAcpiUnsupportedType" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "Local index .* is invalid .*max", "advice": "An error occurred getting the node associated with a local or an arg. The local index for the refclass local type was greather than ACPI_METHOD_MAX_LOCAL. See acpi_ds_method_data_get_node().", "label": "KlogAcpiLocalIndexInvalid" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "Arg index .* is invalid .*max", "advice": "An error occurred getting the node associated with a local or an arg. The arg index for the refclass arg type was greather than ACPI_NETHOD_MAX_ARG. See acpi_ds_method_data_get_node().", "label": "KlogAcpiArgIndexInvalid" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "Type .* is invalid", "advice": "An error occurred getting the node associated with a local or an arg. The given type is not a refclass local or refclass arg type. See acpi_ds_method_data_get_node().", "label": "KlogAcpiTypeInvalid" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Null object descriptor pointer", "advice": "An error occurred retrieving the value of a selected Arg or Local for a method, the descriptor pointer was NULL. See acpi_ds_method_data_get_value().", "label": "KlogAcpiNullObjectDescriptorPtr" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "Uninitialized Arg.* at node", "advice": "An error occurred retrieving the value of a selected Arg or Local for a method, an argument to the method was not initialised. This is probably a firmware bug. See also acpi_ds_method_data_get_value().", "label": "KlogAcpiUnitializedArg" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Not a Arg/Local opcode: 0x", "advice": "An error occurred retrieving the value of a selected Arg or Local for a method. This is probably a firmware bug. See also acpi_ds_method_data_get_value().", "label": "KlogAcpiNotArgLocalOpcode" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "Field .* access width .* too large for region", "advice": "An access type is larger than a region, for example, where a region is one byte in length and a field of dword access is specified. This is a bug in the firmware and the access to the region fails. This can lead to unexpected behaviour.", "label": "KlogAcpiFieldAccessWidthTooLarge" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "Field .* Base.*Offset.*Width .* is beyond end of region", "advice": "An access exceeds the region length, in this case the base + offset + access width is larger than the region size. For example, this could be a dword access one byte from the end of region. This is a bug in the firmware and the access to the region fails. This can lead to unexpected behaviour.", "label": "KlogAcpiFieldEndOfRegion" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "Region .*ID=.* not implemented", "advice": "An access (read or write) to an operation region has been attempted and a region for this has not been implemented, this may need to be implemented to provide the expected behaviour. See acpi_ex_access_region().", "label": "KlogAcpiRegionNotImplemented" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "Region .*ID=.* has no handler", "advice": "An access (read or write) to an operation region has been attempted and a region handler for this has not been implemented, this may need to be implemented to provide the expected behaviour. See acpi_ex_access_region().", "label": "KlogAcpiKlogRegionNoHandler" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "Index value 0x.* overflows field width 0x", "advice": "A write of a value larger than the maximum value that can fit into a register has be detected. The bit length of the field is not wide enough or the value is larger than expected. This is normally a bug in the firmware. See acpi_ex_register_overflow().", "label": "KlogAcpiIndexValueOverflow" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Wrong object type in field I/O", "advice": "A read or write of a data to an I/O field failed. The object is of the wrong type. See acpi_ex_field_datum_io().", "label": "KlogAcpiWrongObjectType" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Unknown UpdateRule value: 0x", "advice": "An attempt to apply a field update rule to a field write failed because the update rule was unknown. See acpi_ex_write_with_update_rule().", "label": "KlogAcpiUknownUpdateRuleValue" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "Field size .* is too large for buffer", "advice": "An attempt to extract the current value of a given field failed because the field size was too large for the given buffer. See acpi_ex_extract_from_field().", "label": "KlogAcpiFieldSizeTooLarge" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_CRITICAL", "pattern": "GPE0 block .* overlaps the GPE1 block .* Ignoring GPE1", "advice": "An error occurred initializing the GPE data structures, the GPE0/GPE1 blocks overlap each other. This is normally a bug in the ACPI FADT GPE block address config.", "label": "KlogAcpiGpe0BlockOverlapsGpe1Block" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Maximum GPE number from FADT is too large: 0x", "advice": "There were more than 255 GPEs specified in the FADT. The ACPI driver only supports a maximum of 255 GPEs.", "label": "KlogAcpiMaxGpeTooLarge" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "For GPE 0x.* found both _L.* and _E.* methods", "advice": "A GPE has a level _Lxx and an edge _Exx method associated with it, which is incorrect, it should have one or the other but not both.", "label": "KlogAcpiGpeFoundMultipleMethods" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "Cannot acquire Mutex .* null thread info", "advice": "An attempt to acquire an ACPI AML mutex failed, the caller must have a valid thread state structure. This is an internal ACPICA driver bug. See acpi_ex_acquire_mutex().", "label": "KlogAcpiMutexAcquireFailed" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "Cannot acquire Mutex \\[.*\\], current SyncLevel is too large", "advice": "An ACPI mutex was not acquired because the sync level was too large. The per-thread sync level must be less or equal to the sync level of the method being executed. This error occurs because the interpreter attempted to avoid possible deadlocks. See acpi_ex_acquire_mutex().", "label": "KlogAcpiMutexAcquireFailed" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "Cannot release Mutex .* not acquired", "advice": "An ACPI mutex was not already previously acquired, so it cannot be released.", "label": "KlogAcpiMutexReleaseFailed" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "Cannot release Mutex .* null thread info", "advice": "An ACPI mutex could not be released, the thread ID was null and not valid. This maybe an internal ACPICA bug.", "label": "KlogAcpiMutexReleaseFailed" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "Thread .* cannot release Mutex .* acquired by thread", "advice": "An ACPI mutex is already owned but the thread making the mutex release is not the owner, so the release was rejected.", "label": "KlogAcpiMutexReleaseFailed" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "Cannot release Mutex .* SyncLevel mismatch: mutex .* current", "advice": "An ACPI mutex could not be released, the sync level of the mutex must be equal to that of the current sync level. Attempting to release a mutex of a different level means that the mutex ordering rule has been violated.", "label": "KlogAcpiMutexReleaseFailed" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Could not transition to ACPI mode", "advice": "A request to transfer a system into ACPI mode has failed. This could be because the ACPI FADT does not have SMI_CMD defined, or that the FADT ACPI_ENABLE and ACPI_DISABLE flags are both zero, or a SMI command failed to work.", "label": "KlogAcpiAcpiModeTransitionFailed" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Hardware did not enter ACPI mode", "advice": "Could not transfer a system into the ACPI mode. A SMI command was issued however the system failed to transition to the ACPI mode after 3 seconds of waiting. Perhaps SMIs are broken or that the firmware cannot transition the machine to ACPI mode.", "label": "KlogAcpiAcpiModeNotEntered" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Could not exit ACPI mode to legacy mode", "advice": "A request to transfer a system into legacy BIOS mode has failed. This could be because the ACPI FADT does not have SMI_CMD defined, or that the FADT ACPI_ENABLE and ACPI_DISABLE flags are both zero, or a SMI command failed to work.", "label": "KlogAcpiAcpiModeToLegacyModeFailed" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Target is not a Reference or Constant object", "advice": "An attempt to store an ACPI value into a location failed because the target is not a reference or a constat object. See acpi_ex_store().", "label": "KlogAcpiTargetNotRefOrConstantObject" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Unknown Reference Class 0x", "advice": "An ACPI store op-code failed to execute because the an unknown reference class type was used. The store operation will fail to execute leading to undefined behaviour. This is possibly an AML compiler bug.", "label": "KlogAcpiUnknownRefClass" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Source must be Integer/Buffer/String type, not", "advice": "An attempt to store an ACPI object into an indexed buffer or package element failed because the source type is invalid. See acpi_ex_store_object_to_index(). This is most likely a firmware bug.", "label": "KlogAcpiBadSourceType" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Target is not a Package or BufferField", "advice": "An attempt to store an ACPI object into an indexed buffer or package element failed beacause the targe type is not a package or a buffer field.", "label": "KlogAcpiTargetNotPackageOrBufferField" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "No pointer back to namespace node in buffer object", "advice": "An attempt to get a buffer length and initializer byte list failed because there was no pointer that referenced back to the name space node in the given buffer object. See acpi_ds_get_buffer_arguments().", "label": "KlogAcpiBadPointeInBufferObject" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "No pointer back to namespace node in package", "advice": "An attempt to get a buffer length and initializer byte list failed because there was no pointer that referenced back to the name space node in the given package. See acpi_ds_get_package_arguments().", "label": "KlogAcpiBadPointerInPackage" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Could not disable fixed event", "advice": "An ACPI fixed event could not be disabled, acpi_disable_event() failed to disable it. See acpi_ev_terminate().", "label": "KlogAcpiFixedEventDisableFailed" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Could not remove SCI handler", "advice": "The ACPI SCI handler could not be removed. See acpi_ev_terminate().", "label": "KlogAcpiSciHandlerRemoveFailed" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Could not remove Global Lock handler", "advice": "The ACPI Global Lock Handler could not be removed. See acpi_ev_terminate().", "label": "KlogAcpiGlobalLockHandlerRemoveFailed" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Invalid/unsupported SerialBus resource descriptor: BusType 0x", "advice": "An ACPI resource descriptor failed a validation check, the bus type field for a serial bus resource descriptor is invalid. See acpi_ut_validate_resource(). This appears to be a firmware bug.", "label": "KlogAcpiBadSerialBusResourceDescriptor" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "Invalid resource descriptor length: Type 0x.*, Length 0x.* MinLength 0x.*", "advice": "An ACPI resource descriptor failed a validation check, the length of the resource descriptor is invalid. See acpi_ut_validate_resource(). This appears to be a firmware bug.", "label": "KlogAcpiInvalidResourceDescriptorLength" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "No results on result stack", "advice": "Failed to pop an object off the ACPI walk result stack, no results on the stack. This is an internal ACPICA bug and should not occur, see acpi_ds_result_pop().", "label": "KlogAcpiResultStackNoResults" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "No result state for result stack", "advice": "Failed to pop an object off the ACPI walk result stack, no result state on the stack. This is an internal ACPICA bug and should not occur, see acpi_ds_result_pop().", "label": "KlogAcpiResultStackNoState" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Result stack is empty! State=", "advice": "Failed to pop an object off the ACPI walk result stack, the result stack is NULL (empty). This is normally triggered by buggy firmware attempting to pop values off the stack when it is empty.", "label": "KlogAcpiResultStatckEmpty" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "No result objects on result stack, State=", "advice": "Failed to pop an object off the ACPI walk result stack, there were no result objects on the result stack.", "label": "KlogAcpiResultStatckNoResultObjects" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Result stack is full", "advice": "Failed to push an object onto the current ACPI result stack, the result stack is full up. This is an internal ACPICA bug.", "label": "KlogAcpiResultStackFull" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Failed to extend the result stack", "advice": "Failed to push an object onto the current ACPI result stack, the stack could not be extended.", "label": "KlogAcpiResultStackExtendFailed" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "No free elements in result stack", "advice": "Failed to push an object onto the current ACPI result stack, there are no free element slots in the stack. This is an internal ACPICA bug.", "label": "KlogAcpiResultStackNoFreeElements" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "No result stack frame during push", "advice": "Failed to push an object onto the current ACPI result stack, there appears to be no results stack to push the object onto. This is an internal ACPICA bug.", "label": "KlogAcpiResultStackPushNoFrame" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "Null Object! Obj=.* State=.* Num=.*", "advice": "Failed to push an object onto the current ACPI result stack, the object is NULL.", "label": "KlogAcpiResultStackNullObject" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "Result stack overflow: State=.* Num=", "advice": "Failed to push an object onto the ACPI walk_state result stack. The stack has overflowed.", "label": "KlogAcpiResultStackOverflow" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Insufficient result stack size", "advice": "Failed to pop an object off the ACPI walk_state result stack. The result stack had insufficient objects on it to pop off.", "label": "KlogAcpiResultStackSizeInsufficient" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "Object stack overflow.*Obj=.*State=.*", "advice": "Failed to push an object onto the walk state object/operand stack, a maximum of 8 operands are allowed.", "label": "KlogAcpiObjectStackOverflow" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "Object stack underflow.*Count=.*State=.*Ops=", "advice": "Failed to pop an object from the walk state object/operand stack, there were no operands left on the stack.", "label": "KlogAcpiObjectStackUnderflow" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "is not a valid walk state", "advice": "Failed to delete an ACPI walk state, the given walk state is not an ACPI walk state type. This is an internal ACPICA bug. see acpi_ds_delete_walk_state().", "label": "KlogAcpiWalkStateInvalid" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "walk still has a scope list", "advice": "Failed to delete an ACPI walk state, the walk state has an open scope list. This is an internal ACPICA bug. See acpi_ds_delete_walk_state().", "label": "KlogAcpiWalkStateHasScopeList" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Target of Create Field is not a Buffer object", "advice": "Failed to initialise an ACPI buffer field, the target of the Create Field op is not a buffer object. This is a firmware bug.", "label": "KlogAcpiTargetNotBufferObject" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "destination not a NS Node", "advice": "Failed to initialise an ACPI buffer field, the destination is not an ACPI name space node. This is a firmware bug.", "label": "KlogAcpiDestinationNotNameSpaceNode" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Attempt to CreateField of length zero", "advice": "Failed to initialise an ACPI buffer field, CreateField used with a zero field length which is illegal. This is a firmware bug.", "label": "KlogAcpiZeroLengthCreateField" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Unknown field creation opcode 0x", "advice": "Failed to initialise an ACPI buffer field, was expecting a CreateField, CreateBitField, CreateByteField, CreateWordField, CreateDWordField or a CreateQWordField opcode, but got a different AML opcode instead. This is a firmware bug.", "label": "KlogAcpiUknownFieldCreationOpcode" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "Field .* at .* exceeds Buffer .* size .*bits", "advice": "Failed to initialise an ACPI buffer field, the field exceeded the buffer size provided. This is a firmware bug.", "label": "KlogAcpiFieldExceedsBuffer" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": ".*bad operand.*status 0x", "advice": "Failed to get buffer field Buffer and Index, could not resolve operands. A call to acpi_ex_resolve_operands() failed and returned an error status code. See acpi_ds_eval_buffer_field_operands().", "label": "KlogAcpiBadOperand" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "No Sleep State object returned from", "advice": "An evaluation of the _Sx namespace object containing register values for the sleep state failed. It is entirely possible that the _Sx is broken in the firmware. See also acpi_get_sleep_type_data():", "label": "KlogAcpiNoSleepStateObject" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Sleep State return object is not a Package", "advice": "An evaluation of the _Sx namespace object containing register values for the sleep state failed. The kernel was expecting an ACPI package to be returned, but some different type was returned instead. The ACPI firmware object _Sx is buggy.", "label": "KlogAcpiSleepStateObjectNotPackage" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_INFO", "pattern": "While evaluating Sleep State [\\_S1_]", "advice": "The exception comes from kernel cannot find _S1 namespace object that contains the register values for the sleep state when kernel would like to setup all the sleep state information. This means kernel don't know how to enter S1 sleep state. But it should not be a problem if the S1 sleep state isn't supported intentionally.", "label": "KlogAcpiSleepStateEvalFailed" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_INFO", "pattern": "While evaluating Sleep State [\\_S2_]", "advice": "The exception comes from kernel cannot find _S2 namespace object that contains the register values for the sleep state when kernel would like to setup all the sleep state information. This means kernel don't know how to enter S2 sleep state. But it should not be a problem if the S2 sleep state isn't supported intentionally.", "label": "KlogAcpiSleepStateEvalFailed" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "While evaluating Sleep State", "advice": "Failed to evaluate _Sx namespace object that contains the register values for the sleep state.", "label": "KlogAcpiSleepStateEvalFailed" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Resize of Root Table Array is not allowed", "advice": "An attempt to resize the ACPI Root Table Array failed because the ACPI global root table flag ACPI_ROOT_ALLOW_RESIZE is not set.", "label": "KlogAcpiRootTableArrayResize" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Could not allocate new root table array", "advice": "Failed to allocate memory for the root table array.", "label": "KlogAcpiRootTableArrayAllocFailed" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Bad destination type during conversion: 0x", "advice": "Destination type should be one of Integer, Buffer Field, Local Bank Field, Local Index Field, String or Buffer.", "label": "KlogAcpiBadDestinationType" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "Unknown Target type ID 0x.* AmlOpcode 0x.* DestType", "advice": "An unknown target type was found in attempting to perform implicit type conversion.", "label": "KlogAcpiUnknownTargetTypeId" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "SMBus/IPMI/GenericSerialBus write requires Buffer, found type", "advice": "A SMBus, IPMI or GenericSerialBus write to a named field required a buffer to write into, but got a different type instead.", "label": "KlogAcpiWriteRequiresBuffer" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "SMBus/IPMI/GenericSerialBus write requires Buffer of length .*, found length", "advice": "A write buffer was too small. SMBus, IPMI and GenericSerialBus writes require a buffer of size 34, 66 and 34 bytes respectively.", "label": "KlogAcpiWriteBufferSize" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_CRITICAL", "pattern": "Could not acquire AML Interpreter mutex", "advice": "The AML interpreter mutex could not be acquired when entering the interpreter execution region. This is a fatal system error.", "label": "KlogAcpiAmlMutexAcquireFailed" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Invalid descriptor type 0x", "advice": "An invalid descriptor type was found while obtaining a reference to a target object.", "label": "KlogAcpiInvalidDescriptorType" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Invalid object type: 0x", "advice": "The ACPI interpreter failed to concatenate two objects of the same type because one or more of the types was an invalid object type. Expected types are ACPI_TYPE_INTEGER, ACPI_TYPE_STRING, ACPI_TYPE_BUFFER.", "label": "KlogAcpiConcatenateInvalidObjectType" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "Null parameter: Node .* Name 0x.* ReturnNode", "advice": "Either the node, target name or return node pointers were NULL when attempting to search for a name segment in a single namespace level, see acpi_ns_search_and_enter().", "label": "KlogAcpiNameSpaceNullParameter" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_CRITICAL", "pattern": "Could not allocate the GpeRegisterInfo table", "advice": "General Purpose Events will fail to work because the table could not be allocated.", "label": "KlogAcpiGpeRegisterInfoAllocFailed" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_CRITICAL", "pattern": "Could not allocate the GpeEventInfo table", "advice": "General Purpose Events will fail to work because the table could not be allocated.", "label": "KlogAcpiGpeEventInfoAllocFailed" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Bad BitWidth parameter:", "advice": "A hardware I/O request failed because the requested bit width of the I/O operation was not 8, 16 or 32 bits wide. Undefined behaviour may occur.", "label": "KlogAcpiBadBitWidth" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Illegal I/O port address/length above 64K", "advice": "A hardware I/O port access was above the 64K 16 bit port address space. This is illegal and not allowed. Undefined behaviour may occur.", "label": "KlogAcpiIllegalIoPortAddressLength" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Need sub-package, found", "advice": "Failed to create a linked list of PCI interrupt descriptions, the given list did not contain a sub-package. See acpi_rs_create_pci_routing_table().", "label": "KlogAcpiPciRoutingTableSubPackageRequired" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Need package of length 4, found length", "advice": "Failed to create a linked list of PCI interrupt descriptions, a sub-package had an incorrect package length. See acpi_rs_create_pci_routing_table().", "label": "KlogAcpiPciRoutingTableBadPackageLength" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "Address.*Need Integer, found", "advice": "Failed to create a linked list of PCI interrupt descriptions, a sub-package Address (element 0) was not an Integer type.", "label": "KlogAcpiPciRoutingTableBadPackageAddressType" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "Pin.*Need Integer, found", "advice": "Failed to create a linked list of PCI interrupt descriptions, a sub-package Pin (element 1) was not an Integer type.", "label": "KlogAcpiPciRoutingTableBadPackagePinType" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "Source.*Need name, found Reference Class 0x", "advice": "Failed to create a linked list of PCI interrupt descriptions, a sub-package SourceName (element 2) local reference was not an reference class name type.", "label": "KlogAcpiPciRoutingTableBadPackageSourceNameRefType" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "Source.*Need Ref/String/Integer, found", "advice": "Failed to create a linked list of PCI interrupt descriptions, a sub-package SourceName (element 2) was not a local reference, Integer or String type.", "label": "KlogAcpiPciRoutingTableBadPackageSourceNameType" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "SourceIndex.*Need Integer, found", "advice": "Failed to create a linked list of PCI interrupt descriptions, a sub-package SourceIndex (element 3) was not an Integer type", "label": "KlogAcpiPciRoutingTableBadSourceIndexType" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "Control Method .* has no attached object", "advice": "An internal ACPICA error has occurred while attempting to get the next name, see acpi_ps_get_next_namepath(). This information is critical for parsing to continue correctly.", "label": "KlogAcpiControlMethodNoAttachedObject" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "Invalid ArgType.*0x", "advice": "An error occurred in getting the next simple argument was expecting one of byte data, work data, dword data, qword data, char list, name or namestring, see acpi_ps_get_next_simple_arg().", "label": "KlogAcpi" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "No predicate ObjDesc=.* State=", "advice": "An error occurred in getting the result of a predicate evaluation, a NULL operand object was found, which is unexpected. See acpi_ds_get_predicate_value().", "label": "KlogAcpiNullPredicateObjDesc" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "Bad predicate .*not an integer.* ObjDesc=.*State=.*Type=0x", "advice": "The result of a predicate evaluation should be an integer but it was not. This is an unexpected error. See acpi_ds_get_predicate_value().", "label": "KlogAcpiBadPredicateEvalResult" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Undefined opcode type Op=", "advice": "Caught an unexpected opcode type, see acpi_ds_exec_end_op().", "label": "KlogAcpiUndefinedOpCodeType" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "Unimplemented opcode, class=.*type=.*Opcode=.*Op=.*", "advice": "Caught an unexpected unimplemented opcode, see see acpi_ds_exec_end_op().", "label": "KlogAcpiUnimplementedOpCode" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Could not override predefined", "advice": "An error occurred during Name Space initialisation, a predefined name could not be overridden. This only occurs if the initial value is NULL or the value string is NULL.", "label": "KlogAcpiNameSpaceOverrideFailed" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Unsupported initial type value 0x", "advice": "An error occurred during Name Space initialisation, a predefined name initial value is of an unsupported type.", "label": "KlogAcpiNameSpaceOverrideBadType" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "is not a namespace node", "advice": "A scope node is not a namespace node, this is an internal ACPICA error.", "label": "KlogAcpiNameSpaceNotNameSpaceNode" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "ACPI path has too many parent prefixes (^) - reached beyond root node", "advice": "An ACPI path has too many parent prefixes and has fallen outside the root node. This is a bug in the firmware. The Name Space lookup on the ACPI path cannot be found.", "label": "KlogAcpiPathTooManyParentPrefixes" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "Could not construct external pathname; index=.*, size=.*, Path=.*", "advice": "Expected a zero index to a name buffer. See acpi_ns_build_external_path().", "label": "KlogAcpiExternalPathNameConstructFailed" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "Invalid Namespace Node .* while traversing namespace", "advice": "An ACPI namespace node descriptor type was not the expected ACPI_DESC_TYPE_NAMED type. Could not get the pathname length, see acpi_ns_get_pathname_length().", "label": "KlogAcpiInvalidNameSpaceNodeType" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Unsupported object type, cannot convert to external object:", "advice": "Failed to copy a simple internal ACPI object to an external ACPI object, unknown internal object type.", "label": "KlogAcpiUtCopyBadType" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Unsupported object type, cannot convert to internal object:", "advice": "Failed to copy a simple external ACPI object to an internal ACPI object, unknown external object type.", "label": "KlogAcpiUtCopyBadType" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Package allocation failure", "advice": "Failed to copy an internal ACPI package object to another internal ACPI package object, out of memory.", "label": "KlogAcpiPackageAllocFailure" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Needed Region, found type 0x", "advice": "An ACPI object type did not match the expected type, expected an ACPI Region type.", "label": "KlogAcpiCheckObjectTypeFailed" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "Needed type .*, found .*", "advice": "An ACPI object type did not match the expected type.", "label": "KlogAcpiCheckObjectTypeFailed" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_CRITICAL", "pattern": "Null stack entry at", "advice": "An internal ACPICA error occurred resolving operands - the ACPICA stack is either NULL or contains a NULL entry. This should not happen.", "label": "KlogAcpiNullStackEntry" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Bad operand object type", "advice": "An error occurred trying to convert multiple input operands to the types required by the target operator, see acpi_ex_resolve_operands(), the internal ACPI operand object type was not correct.", "label": "KlogAcpiBadOperandObjectType" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Needed [Integer/String/Buffer], found", "advice": "An error occurred in resolving operands, required an Integer, String or Buffer type, got a different type instead.", "label": "KlogAcpiResolveOpBadType" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Needed [Buffer/String/Package/Reference], found", "advice": "An error occurred in resolving operands, required an Integer, String, Package or Reference type (normally for a size_of operator), got a different type instead.", "label": "KlogAcpiResolveOpBadType" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Needed [Buffer/String/Package], found", "advice": "An error occurred in resolving operands, required a Buffer, String or Package type, got a different type instead.", "label": "KlogAcpiResolveOpBadType" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Needed [Region/Buffer], found", "advice": "An error occurred in resolving operands, required a Region or Buffer type, got a different type instead.", "label": "KlogAcpiResolveOpBadType" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Needed Integer/Buffer/String/Package/Ref/Ddb], found", "advice": "An error occurred in resolving operands, required an Integer, Buffer, String, Package or Dbd type for a Store() operator, got a different type instead.", "label": "KlogAcpiResolveOpBadType" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "Invalid descriptor.*\\[.*\\]", "advice": "Failed to resolve an ACPI operand, bad descriptor; expecting either an ACPI_DESC_TYPE_NAMED or ACPI_DESC_TYPE_OPERAND descriptor.", "label": "KlogAcpiInvalidDescriptor" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Internal - Unknown ARGI (required operand) type 0x", "advice": "Internal error in acpi_ex_resolve_operands() - found an unknown type, this should not occur.", "label": "KlogAcpiResolveOpBadArgType" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "No init routine for region", "advice": "An attempt to dispatch an address space or operation region access failed because the region has never been initialised but it does not have an address space setup function. This is a ACPI or kernel address space handler bug. Access to the address space or operation region will fail with undefined behaviour.", "label": "KlogAcpiRegionHanderNoInit" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "The DSDT has been corrupted or replaced - old, new headers below", "advice": "Some firmware corrupts the DSDT or installs a bad new DSDT, so a workaround is to copy the DSDT. Booting with kernel parameter acpi=copy_dsdt may fix this issue.", "label": "KlogAcpiDsdtCorruptOrReplaced" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_CRITICAL", "pattern": "Could not copy DSDT of length 0x", "advice": "Failed to copy DSDT to local memory. Some firmware corrupts the DSDT or installs a bad new DSDT, so a workaround is to copy the DSDT. However, the table allocation failed, which means ACPI initialisation had failed, so ACPI support is disabled.", "label": "KlogAcpiDsdtCopyFailed" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Null physical address for ACPI table", "advice": "An attempt to install an ACPI table has failed because the physical address of the table is NULL, which is incorrect. This could lead to ACPI failing to initialize and perhaps ACPI support being disabled.", "label": "KlogAcpiTableNullPhysicalAddress" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_CRITICAL", "pattern": "Could not map memory for table .* at", "advice": "The ACPI table could not me mapped into memory and was not added to the ACPI root table list. This may lead to broken functionality.", "label": "KlogAcpiTableMemoryMapFailed" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Null NamedObj handle", "advice": "ACPI attempted to attach an ACPI object with a NULL parent node, see acpi_ns_attach_object().", "label": "KlogAcpiAttachNullParentNode" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Null object, but type not ACPI_TYPE_ANY", "advice": "ACPI attempted to attach a NULL ACPI object with a type that was not ACPI_TYPE_ANY, see acpi_ns_attach_object().", "label": "KlogAcpiAttachNullObjectBadType" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "Invalid handle.*\\[%s\\]", "advice": "An attempt to attach an object with an ACPI node failed because the node was not a name handle type. This is probably an internal ACPI error. See acpi_ns_attach_object().", "label": "KlogAcpiInvalidHandle" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "Bit offset within field too large.*0xFFFFFFFF", "advice": "A named field has a bit offset that is greater than the 32 bit field offset limit. An AML_INT_RESERVEDFIELD_OP 0x0031 was ignored because of the bit offset error.", "label": "KlogAcpiFieldOffsetTooLarge" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "Field .* bit offset too large.*0xFFFFFFFF", "advice": "A named field has a bit offset that is greater than the 32 bit field offset limit. An AML_INT_NAMEDFIELD_OP 0x0030 was ignored because of the bit offset error.", "label": "KlogAcpiFieldOffsetTooLarge" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Invalid opcode in field list: 0x", "advice": "An invalid opcode was found while parsing a field list. This is invariable due to buggy firmware.", "label": "KlogAcpiFieldListInvalidOpcode" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Attempt to dereference an Index to NULL package element Idx=", "advice": "An error occurred attempting to retrieve a value from an internal ACPI object. A NULL object descriptor indicates an uninitialized element in an ACPI package, and hence it cannot be deferenced. Could not retrieve a value from an internal ACPI object. See acpi_ex_resolve_object_to_value().", "label": "KlogAcpiNullPackageElementDereference" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "Not a namespace node.*\\[.*\\]", "advice": "An ACPI reference was found that did not point to a namespace node. Failed to resolve. See acpi_ex_resolve_multiple().", "label": "KlogAcpiNotNamespaceNode" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "Unknown TargetType .* in Index.*Reference object", "advice": "An ACPI_REFCLASS_INDEX has an unknown target type. Should be a buffer field or a package. Could not retrieve a value from an internal ACPI object. See acpi_ex_resolve_object_to_value().", "label": "KlogAcpiUnkownTargetType" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "Unknown Reference type 0x.* in", "advice": "The ACPI object type was not a known reference type. Could not retrieve a value from an internal ACPI object. See acpi_ex_resolve_object_to_value().", "label": "KlogAcpiUnknownReferenceType" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "Owner ID .* already exists", "advice": "A table or method owner ID allocation was attempted but the owner ID already exists. The allocation has failed.", "label": "KlogAcpiOwnerIdAlreadyExists" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Could not allocate new OwnerId (255 max), AE_OWNER_ID_LIMIT", "advice": "A table or method owner ID allocation failed because all owner IDs (maximum of 255) are in use. This only happens if there are very deep nestings of invoked control methods or there is an ACPI bug where owner IDs are not being released.", "label": "KlogAcpiNoFreeOwnerIds" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Invalid OwnerId: 0x", "advice": "An attempt to release an owner ID failed because the owner ID is invalud. Only owner IDs 1 to 255 are allowed.", "label": "KlogAcpiInvalidOwnerId" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Release of non-allocated OwnerId: 0x", "advice": "An attempt to release an owner ID failed because the owner ID is not already allocated. This is a double-release error.", "label": "KlogAcpiOwnerIdDoubleRelease" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Unknown opcode 0x", "advice": "An invalid AML opcode in the input stream has been encountered. This will be skipped. This normally indicates buggy firmware. Undefined behaviour may occur.", "label": "KlogAcpiUnknownOpcode" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "Expecting bytelist, found AML opcode 0x.* in op", "advice": "An error occurred translating a parser object to an equivalent namespace object. This occurs when evaluating a named buffer object such as Name(xxxx, Buffer) and the buffer does not contain an AML opcode bytelist.", "label": "KlogAcpiByteListExpected" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Unknown constant opcode 0x", "advice": "An error occurred initializing a namespace object from a parser op. The return type was an Integer however the opcode type was not a Zero op, One op, Ones op or Revision op. See acpi_ds_init_object_from_op().", "label": "KlogAcpiUnknownConstantOpcode" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Unknown Integer type 0x", "advice": "An error occurred initializing a namespace object from a parser op. The return type was an unknown Integer type. See acpi_ds_init_object_from_op().", "label": "KlogAcpiUnknownIntegerType" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Unimplemented reference type for AML opcode: 0x", "advice": "An error occurred initializing a namespace object from a parser op. ACPICA has detected an unimplemented reference type. See cpi_ds_init_object_from_op().", "label": "KlogAcpiUnimplementedRefType" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Unimplemented data type: 0x", "advice": "An error occurred initializing a namespace object from a parser op. ACPICA has detected an unimplemented data type. See cpi_ds_init_object_from_op().", "label": "KlogAcpiUnimplementedDataType" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Method reached maximum reentrancy limit (255)", "advice": "A method has been re-entrantly entered too many times. The limit is imposed to avoid a wrap-around on the thread count. Methods should generally not be re-entrantly executred this deep, so it may indicate a bug in the firmware.", "label": "KlogAcpiMethodMaxRentrancyLimit" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "Cannot acquire Mutex for method .*, current SyncLevel is too large", "advice": "The mutex for a method was not acquired because the sync level was too large. The per-thread sync level must be less or equal to the sync level of the method being executed. This error occurs because the interpreter attempted to avoid possible deadlocks. See acpi_ds_begin_method_execution().", "label": "KlogAcpiSyncLevelTooLarge" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Invalid zero thread count in method", "advice": "A control thread execution has terminated and the thread count is zero, which should never occur. See acpi_ds_terminate_control_method().", "label": "KlogAcpiZeroThreadCount" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Control method has no attached sub-object", "advice": "Execution of a control method has failed, there is no method object associated with the resolved node. See acpi_ns_evaluate().", "label": "KlogAcpiControlNoSubObject" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "Evaluation of object type .* is not supported", "advice": "Evaluation of a device, event, mutex, region, thermal or local scope ACPI object types is not allowed. The firmware is buggy. See acpi_ns_evaluate().", "label": "KlogAcpiEvalObjectTypeNotSupported" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Method has no attached sub-object", "advice": "An ACPI method type did not have a method object associated with the node and a NULL object was found instead. Failed to execute a control method.", "label": "KlogAcpiEvalMethodObjectNull" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "unknown tag .* length", "advice": "Failed to parse the PnPBIOS resource data, an unknown tag length specifier was found. This is a bug in the firmware resource data.", "label": "KlogAcpiPnpBios" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "no end tag in resource structure", "advice": "Failed to parse the PnPBIOS resource data, there was no end tag in the resource structure.", "label": "KlogAcpiPnpBios" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_CRITICAL", "pattern": "_PRW evaluation error:", "advice": "The ACPI _PRW (Power Resources for Wake) object failed to evaluate when the ACPI driver was attempting to get the wakeup device flags.", "label": "KlogACPIPrwEvalError" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_LOW", "pattern": "lpc_ich: Resource conflict(s) found affecting iTCO_wdt", "advice": "A resource conflict has occurred between ACPI OperationRegions and the same I/O region used by the lpc_ich driver for the Intel TCO (Total Cost of Ownership) timer (iTCO_wdt, this is a watchdog timer that will reboot the machine after its second expiration). According to Intel Controller Hub (ICH) specifications, the TCO watchdog has a 32 bytes I/O space resource. ACPI OperationRegions in the DSDT frequently reserve this TCO I/O space because they require access to bit 9 (DMISCI_STS) of the TCO1_STS register of the TCO, however, this bit is never used by the lpc_ich driver, so there is no risk of conflict. In the vast majority of cases this warning can be ignored as no harm will occur.", "label": "KlogAcpiSystemIOConflictLpcIchWatchDogTimer", }, { "compare_mode": "string", "log_level": "LOG_LEVEL_LOW", "pattern": "lpc_ich: Resource conflict(s) found affecting gpio_ich", "advice": "A resource conflict has occurred between ACPI OperationRegions and the same I/O region used by the lpc_ich driver for the General Purpose I/O (GPIO) region. Sometimes this GPIO region is used by the firmware for rfkill or LED controls or very rarely for the Embedded Controller System Control Interrupt. This may require deeper inspection to check if the conflict will lead to any real issues. However, in the vast majority of cases this warning can be ignored as no harm will occur.", "label": "KlogAcpiSystemIOConflictLpcIchWatchDogTimer", }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_LOW", "pattern": "0x.*-0x.* SystemIO conflicts with", "advice": "A resource conflict between an ACPI OperationRegion and a native driver has been detected. By default the kernel will use a strict policy and will not allow this region to conflict and -EBUSY will be returned to the caller that was trying to allocate the already claimed region. If an ACPI driver is available for this device then this should be used instead of a native driver, so disabling the native driver may help. (Note that the lpc_ich driver can trigger these warnings, in which case they can generally be ignored). One can specify kernel boot parameter acpi_enforce_resources=lax to disable these checks but it may lead to random problems and system instability. Alternatively, one can specify acpi_enforce_resources=no and ACPI Operation Region resources will not be registered.", "label": "KlogAcpiSystemIOConflict", }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_MEDIUM", "pattern": "device .* has invalid IRQ.*check vendor BIOS", "advice": "An error occurred probing the PCI-Express port devices. The device has a valid pin but did not have an a valid IRQ. This is normally due to a misconfiguration in the firmware.", "label": "KlogBiosIrqInvalid" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_CRITCAL", "pattern": "Invalid active.* threshold", "advice": "The ACPI thermal driver has attempted to evaluate an ACPI active threshold control _ALx and this failed to evaluate. This is normally due to broken or buggy _ALx control. This may lead to sub-optimal thermal control.", "label": "KlogAcpiAlThresholdInvalid" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "No sibling found for CPU", "advice": "Hyperthreading CPU enumeration failed, hyperthreads will be disabled.", "label": "KlogCpuNoSiblingFound" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "OHCI: BIOS handoff failed", "advice": "An OHCI BIOS handoff failure generally means that the OHCI driver was unable to take control of the USB controller away from the BIOS. Disabling USB legacy mode in the BIOS may help.", "label": "KlogBiosOhciEmulation" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "EHCI: BIOS handoff failed", "advice": "An EHCI BIOS handoff failure generally means that the EHCI driver was unable to take control of the USB controller away from the BIOS. Disabling USB legacy mode in the BIOS may help.", "label": "KlogBiosEhciEmulation" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "xHCI BIOS handoff failed", "advice": "An xHCI BIOS handoff failure generally means that the xHCI driver was unable to take control of the USB controller away from the BIOS. Disabling USB legacy mode in the BIOS may help.", "label": "KlogBiosXhciEmulation" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "MMCONFIG has no entries", "advice": "The ACPI MCFG has failed to be parsed, it has no entries in it. This is not expected and is most likely an ACPI misconfiguration. The PCI memory mapped configuration space is not known and hence PCI will be not configured.", "label": "KlogAcpiMcfgNoEntries" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "MMCONFIG not in low 4GB of memory", "advice": "An ACPI MCFG config entry is not in the lower 4GB (32 bit) address space and will be ignored.", "label": "KlogAcpiMcfgNotIn32BitMemorySpace" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "MCFG region for .* at .* is above 4GB, ignored", "advice": "An ACPI MCFG config entry is not in the lower 4GB (32 bit) address space and will be ignored.", "label": "KlogAcpiMcfgNotin32BitMemorySpace" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "disabled and referenced, BIOS bug", "advice": "A PCI interrupt link could not be enabled when the associated ACPI _STA control was executed. It will be disabled. This is normally a bug in the _STA control for this link.", "label": "KlogPciLinkDisabled" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "Inconsistent FADT length .* and revision .* using FADT V1.0 portion of table", "advice": "The ACPI FADT was reporting to be a version 2.0 (or higher) FADT but the length was too short, so the kernel has assumed it was a version 1.0 FADT instead. The machine may have reduced ACPI 1.0 functionality.", "label": "KlogAcpiFadtInconsistentLength" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_CRITICAL", "pattern": "Disabling IRQ#", "advice": "The kernel had detected a spurious interrupt which is generating tens of thousands of interrupts. This can occur if the interrupt is stuck. The kernel has taken action and disabled this interrupt. Look at /proc/interrupts to find the devices serviced by this interrupt as these are most probably no functioning now.", "label": "KlogIrqDisabled" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": ", Invalid action", "advice": "The ACPI driver was requested to set a GPE wake mask with an incorrect action, expected ACPI_GPE_ENABLE or ACPI_GPE_DISABLE, see acpi_set_gpe_wake_mask(). This is most probably a kernel bug.", "label": "KlogAcpiGpeWakeMaskIncorrect" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Invalid GPE Action,", "advice": "The ACPI driver was requested to enable or disable a single GPE in a parent enable register but was given an incorrect action, expected ACPI_GPE_ENABLE or ACPI_GPE_DISABLE, see acpi_hw_low_set_gpe(). This is most probably a kernel bug.", "label": "KlogAcpiGpeActionInvalid" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Unsupported address space: 0x", "advice": "The ACPI driver was requested to validate a H/W register but the address space ID was not ACPI_ADR_SPACE_SYSTEM_MEMORY or ACPI_ADR_SPACE_SYSTEM_IO. Other address spaces are not supported by the driver. See acpi_hw_validate_register().", "label": "KlogAcpiHwRegsUnsupportedAddressSpace" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Unsupported register bit width: 0x", "advice": "The ACPI driver was requested to validate a H/W register but the bit width of the register was not 8, 16 or 32 bits; other sizes are not suppoted by the driver. See acpi_hw_validate_register().", "label": "KlogAcpiHwRegsUnsupportedRegisterBitWidth" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Invalid BitRegister ID: 0x", "advice": "The ACPI driver was requested the bitmask of a specific register ID which was greater than the the predefined driver maximum of ACPI_BITREG_MAX. A NULL register info struct was passed back to the caller. This is normally a driver bug, see acpi_hw_get_bit_register_info().", "label": "KlogAcpiHwRegsInvalidBitRegisterId" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Unknown Register ID: 0x", "advice": "The ACPI driver was registed to read an ACPI register, but an invalid register ID was given; was expected withe a PM1 status register, PM1 enable register, PM1 control, PM 2 control, PM timer or a SMI command block. This is normally a driver bug, see acpi_hw_register_read().", "label": "KlogAcpiHwRegsUnknownRegisterId" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "No handler or method for .*, disabling event", "advice": "A General Purpose Event (GPE) has occurred and there does not appear to be a GPE handler for this event. This should no longer be possible with kernels dating after March 2010. The GPE is disabled and will not occur until the machine is rebooted. See acpi_ev_gpe_dispatch().", "label": "KlogAcpiGpeHandlerMissing" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Invalid SystemMemory width ", "advice": "The ACPI interpreter was requested to read or write to a memory region via a memory space handler but the requested field width was invalid. It expected a field with of 8, 16, 32 or 64 bits. This is most probably an AML opregion bug.", "label": "KlogAcpiOpRegionInvalidSystemMemoryWidth" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "Could not map memory at 0x.*, size", "advice": "The ACPI interpreter was requested to read or write to a memory region via a memory space handler but the logical address could not be mapped from the given physical address given. This memory region is not mappable, so it could be an AML opregion bug or a bug in the kernel (less likely).", "label": "KlogAcpiOpRegionMemMapError" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "32-bit FADT register is too long .* to convert to GAS struct - 255 bits max, truncating", "advice": "The Generic Address Structure bit_width was greater than 31 which is too large for a 32 bit ACPI FADT register and was truncated. This is firmware bug.", "label": "KlogAcpiFadtGasBitWidthTooLong" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Could not install GPE interrupt handler at level 0x", "advice": "The ACPI driver attempted to install a General Purpose Event interrupt handler but this failed. Is the interrupt available or already used? See acpi_ev_get_gpe_xrupt_block().", "label": "KlogAcpiGpeHandlerInstallFailed" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "Unknown control opcode=0x.* Op=", "advice": "The ACPI interpreter could not execute an unknown AML opcode. This is an ACPI AML firmware bug. See acpi_ds_exec_end_control_op().", "label": "KlogAcpiUnknownControlOp" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "No response from Global Lock hardware, disabling lock", "advice": "An attempt to send a global lock SMI did not generate a global lock event and so the kernel has concluded that the BIOS global lock handler is not functioning on this hardware. All subsequent attempts to use the global lock will be flagged with an error. You may experience race conditions in the ACPI driver.", "label": "KlogAcpiGlobalLockDisabled" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Could not signal Global Lock semaphore", "advice": "A global lock signal was sent to the firmware using a SMI but this failed to complete correctly.", "label": "KlogAcpiGlobalLockSignalError" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Invalid leading digit:", "advice": "An ACPI name started with a leading digit which is illegal. This is a bug in an ACPI table.", "label": "KlogAcpiNameLeadingDigit" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "Bad character 0x.* in name, at", "advice": "Am ACPI segment name started with some valid name characters but was shorted than the expected length of 4 characters.", "label": "KlogAcpiNameWrongSize" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "Malformed Name at ", "advice": "An ACPI name had a valid prefix path but there wasn't a valid name following the prefix.", "label": "KlogAcpiMalformedName" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Invalid/unknown Address Space ID: 0x", "advice": "The ACPI driver was attempting to create a new operation region objject as specified by an AML instruction but the provided Space ID was not one of the predefined IDs or in the user-defined range. The operation region is not created. This is an AML bug in the ACPI DSDT or SSDTs.", "label": "KlogAcpiAmlOpRegionInvalidAddressSpaceId" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "Type returned from .* was incorrect: .*, expected Btypes: 0x", "advice": "The ACPI interpreter was evaluating a namespace object and discovered that the return type did not match the expected return type. This is an ACPI AML bug in the ACPI DSDT or SSDTs.", "label": "KlogAcpiIncorrectReturnType" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Invalid/unsupported resource descriptor: Type 0x", "advice": "The ACPI interpreter failed to convert an AML resource into an aligned internal representation of the resource. The resource descriptor was not a recognised type that could be converted. This is an ACPI AML bug.", "label": "KlogAcpiInvalidResourceDescriptor" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "Invalid descriptor type .* in resource list", "advice": "The ACPI interpreter failed to convert a linked list of resources into an AML buffer because one of the resources had in invalid resource type. This may be a bug in the ACPI resource handling code.", "label": "KlogAcpiInvalidDescriptorType" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Match operator out of range", "advice": "The ACPI interpreter found an AML match operator that was unrecognised, it was expecting MTR, MEQ, etc. This is a bug in the AML.", "label": "KlogAcpiMatchOperatorOutOfRange" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "Index .* beyond package end", "advice": "The ACPI interpreter was executing a 6 argument MATCH_OP op-code and discovered that the integer index being used fall outside of the package being referenced. This is an index overflow or underflow error and is considered to be a bug in the AML.", "label": "KlogAcpiIndexOutOfPackageRange" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "Table has invalid signature .* must be SSDT or OEMx", "advice": "The ACPI driver detected an ACPI table with an invalid signature. This table will not be loaded and will be ignored.", "label": "KlogAcpiInvalidTableSignature" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_CRITICAL", "pattern": "The ACPI DSDT has been corrupted or replaced - old, new headers below", "advice": "The current loaded DSDT length and/or checksum differ to original version. This could be because it has been altered from outside Linux (perhaps broken firmware or a rootkit) or some incorrect memory write has corrupted the table. A workaround is to boot with the kernel parameter: acpi=copy_dsdt", "label": "KlogAcpiDsdtCorrupt" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_CRITICAL", "pattern": "Invalid signature .* for ACPI table, expected .*", "advice": "The ACPI DSDT and FACS tables must have correct signatures otherwise the ACPI driver treats them as suspect or corrupt and will not load them.", "label": "KlogAcpiTableSignatureInvalid" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_CRITICAL", "pattern": "Invalid table length .* in RSDT/XSDT", "advice": "The ACPI RSDT and XSDT must have the correct length. These variable length tables contain pointers to other ACPI tables and stated length that is different than the actual length can imply that the these tables are not trustworthy and hence the ACPI driver cannot tell if the pointers are totally valid or not. The driver will ignore these tables and ACPI will be disabled.", "label": "KlogAcpiTableLengthInvalid" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_CRITICAL", "pattern": "Required FADT field .* has zero address and.*or length", "advice": "The ACPI FADT fields Pm1a_event, Pm1a_control, pm_timer are required fields that must have a defined (non-zero) address and a length that is non-zero. One of these fields is incorrect and needs fixing.", "label": "KlogAcpiFadtFieldZeroAddrLength" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Could not convert AML resource", "advice": "The ACPI driver could not convert an AML resource to an internal representation of the resource that is aligned and easier to access. This is most likely to be because their is an unrecognised ACPI resource op-code. See acpi_rs_convert_aml_to_resource() for details.", "label": "KlogAcpiAmlResourceConvertFailed" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Could not convert resource", "advice": "The ACPI driver could not covert a resource linked list into an AML bytestream. See acpi_rs_convert_resources_to_aml() for details.", "label": "KlogAcpiResourceToAmlFailed" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Could not get result from predicate evaluation", "advice": "The ACPI driver failed to pop a result off the result stack while evaluating a predicate. This is probably an AML code firmware bug.", "label": "KlogAcpiPredicateEvalPopFailed" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "During .?egion initialization", "advice": "The ACPI driver failed to initialize a name space operation region. This is most probably the _REG (Region) control failed to evaluate.", "label": "KlogAcpiRegInitFailed" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Evaluating _PRS", "advice": "The ACPI driver failed to evaluate the _PRS (Possible Resource Settings) object. This failure will lead to a PCI link not being added to the system.", "label": "KlogAcpiPrsEvalFailed" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Evaluating _CRS", "advice": "The ACPI driver failed to evaluate the _CRS (Current Resource Settings) object to get the current IRQ assignment. This failure will lead to a PCI link not allocating an IRQ.", "label": "KlogAcpiCrsEvalFailed" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Evaluating _SRS", "advice": "The ACPI driver failed to evaluate the _SRS (Set Resource Settings) object to set the current link resource. This failure will lead to a PCI link not allocating an IRQ.", "label": "KlogAcpiSrsEvalFailed" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "While executing method", "advice": "The ACPI driver attempted to execute an ACPI sleep method but this failed to execute. This is most probably an ACPI firmware bug.", "label": "KlogAcpiSleepMethodFailed" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Missing or null operand", "advice": "The ACPI driver got a missing or NULL operand while translating a parse tree object that is an argument to an AML object. This is more likely to be poorly written or compiled AML rather than an ACPI parser bug.", "label": "KlogAcpiParseMissingNullOp" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "While creating Arg ", "advice": "The ACPI driver failed to convert an operator's arguments from a parse tree format to a namespace object during the parse.", "label": "KlogAcpiOpArgCreateFailed" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_CRITICAL", "pattern": "Evaluating _BST", "advice": "The ACPI driver attempted to get the ACPI battery state but the _BST (Battery Status) failed to evaluate. This is most likely to be a firmware or embedded controller bug. The ACPI battery state cannot be reported to userspace.", "label": "KlogAcpiBsrEvalFailed" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Evaluating _PPC", "advice": "The ACPI driver attempted to get the current CPU performance states but the _PPC (Performance Present Capabilities) method failed to evaluate. The CPU frequency policy will not be updated. This may explain why CPU frequencies are locked at one setting and do not change.", "label": "KlogAcpiPpcEvalFailed" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Evaluating _PCT", "advice": "The ACPI driver attempted to get the CPU performance control and status registers but the _PCT (Performance Control) object failed to evaluate. This error normally occurs because the BIOS is an old or that it does not know the CPU frequencies. CPU frequency support is not supported.", "label": "KlogAcpiPctEvalFailed" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Evaluating _PSS", "advice": "The ACPI driver attempted to get the CPU performance states bug the _PSS (Performance Supported States) object failed to evaluate. This error normally occurs because the BIOS is an old or that it does not know the CPU frequencies. CPU frequency support is not supported.", "label": "KlogAcpiPssEvalFailed" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "Failed to write pstate_control .* to smi_command", "advice": "The ACPI driver attempted to update the P states but the P state control command written to the SMI command port failed to write. This could be because that ACPI FADT SMI command or FADT P State control settings are incorrect, or that the port write just failed (which is very unlikely).", "label": "KlogAcpiPstateControlSmiCommandFailed" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "AE_TIME.*Returned by Handler for.*[EmbeddedControl]", "advice": "This is most probably caused by when a read or write operation to the EC memory has failed because of a timeout waiting for the Embedded Controller to complete the transaction. Normally, the kernel waits for 500ms for the Embedded Controller status port to indicate that a transaction is complete, but in this case it has not and a AE_TIME error has been returned. ", "label": "KlogAcpiTimeOutReturnedByHandler" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Returned by Handler for", "advice": "The ACPI driver detected an error returned by a region handler.", "label": "KlogAcpiRegionHandlerError" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "from region _REG", "advice": "The ACPI driver detected an error when attempting to execute an ACPI_REG_DISCONNECT on a _REG (Region) method.", "label": "KlogAcpiRegDisconnectFailed" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "from region handler - deactivate", "advice": "The ACPI driver detected an error when attempting to deactivate a region. This error is ignored.", "label": "KlogAcpiRegDeactivateFailed" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "While resolving operands for", "advice": "The ACPI driver found not resolve an operand for the AML AML_DECREMENT_OP (0x76) or AML_INCREMENT_OP (0x75) instructions. This is due to buggy AML code and not a ACPI driver bug.", "label": "KlogAcpiIncDecNoOperands" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Could not update object reference count", "advice": "The ACPI driver failed to update the reference count to an internal ACPI object. Reference counts are incremented when an object is attached to a node or an object is copied and decremented when an object is detected from a node. This failure will lead to object garbage collection failing to operate correctly. This is considered a kernel bug.", "label": "KlogAcpiObjRefCountError" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_CRITICAL", "pattern": "Could not write ACPI mode change", "advice": "The ACPI driver attempted to inform the firmware (via a System Management Interrupt) that the machine was transitioning to or from ACPI or legacy mode but this failed. This normally indicates that either SMIs are failing or the firmware is buggy. Normally if this fails to transition to ACPI mode then ACPI is not enabled.", "label": "KlogAcpiModeChangeFailed" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "During name lookup/catalog", "advice": "The ACPI driver failed to find an object while parsing a named Op, see acpi_ps_build_named_op().", "label": "KlogAcpiNamedObjLookupFailed" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Invoked method did not return a value", "advice": "An invoked ACPI method did not return a value but it was expected to. This could lead to unexpected ACPI execution behaviour.", "label": "KlogAcpiMethodNoReturnValue" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "GetPredicate Failed", "advice": "The ACPI driver failed to get a predicate for the AML opcodes IF or WHILE. This normally is because of faulty AML code.", "label": "KlogAcpiIfWhilePredicateFailed" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Could not create predefined name", "advice": "The ACPI driver was initializing the ACPI namespace and adding pre-defined names but this failed on this particular object. This should not happen.", "label": "KlogAcpiPredefinedNameCreateFailed" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_CRITICAL", "pattern": "While loading namespace from ACPI tables", "advice": "The ACPI driver failed to load the namespace from the DSDT and SSDTs/PSDTs found in the RSDT/XDSDT. This will lead to the ACPI driver being disabled.", "label": "KlogAcpiNameSpaceLoadFailure" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "While evaluating SleepState .* bad Sleep object .* type .*", "advice": "The ACPI driver failed to evaluate an ACPI sleep control while trying to obtain the SLP_TYPa and SLP_TYPb values for the requested sleep state.", "label": "KlogAcpiSlpEvalFailed" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "while handling a GPE", "advice": "The ACPI driver attempted to asynchronously execute an ACPI General Purpose Event (GPE) but this failed because the kernel ran out of free memory to allocate a GPE event information buffer. The event was not handled, this may lead to unpredictable behaviour.", "label": "KlogAcpiGpeNoMemory" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "while evaluating GPE method", "advice": "The ACPI driver attempted to asynchronously execute an ACPI General Purpose Event (GPE) but the ACPI GPE method failed for some unknown reason. This is most likely a firmware bug.", "label": "KlogAcpiGpeEvalFailed" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Unable to clear GPE", "advice": "An edge triggered ACPI General Purpose Event (GPE) occurred and the clearing of the GPE status bit failed. This is normally a low-level hardware I/O register write failure. This may lead to this GPE failing to be handled again.", "label": "KlogAcpiGpeClearFailed" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Unable to disable GPE", "advice": "An ACPI General Purpose Event (GPE) could not be disabled. These are disabled to ensure the GPE does not keep firing before the asynchronous GPE handler completes. The failure to disable the GPE may lead to further GPEs being triggered and causing some unexpected handling failures.", "label": "KlogAcpiGpeDisableFailed" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Unable to queue handler for GPE", "advice": "The ACPI driver failed to dispatch the GPE asynchronously. The GPE will not be properly handled and will be ignored.", "label": "KlogAcpiGpeQueueHandlerFailed" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_CRITICAL", "pattern": "During OSL initialization", "advice": "The ACPI driver failed to initialize, the kernel specific OS dependent layer failed to initialize. This is a kernel bug and ACPI will be disabled.", "label": "KlogAcpiOsLayerInitFailed" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_CRITICAL", "pattern": "During initialization of globals", "advice": "The ACPI driver failed to initialize, could not initialize the globals used by the subsystem. This is a kernel bug and ACPI will be disabled.", "label": "KlogAcpiGlobalsInitFailed" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "During Global Mutex creation", "advice": "The ACPI driver failed to initialize, could not initialize the global mutex. This is a kernel bug and ACPI will be disabled.", "label": "KlogAcpiGlobalMutexInitFailed" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "During Namespace initialization", "advice": "The ACPI driver failed to initialize, could not initialize the ACPI global namespace manager and root namespace tree. ACPI will be disabled.", "label": "KlogAcpiNamespaceInitFailed" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "During OSI interfaces initialization", "advice": "The ACPI driver failed to initialize, could not initialize the ACPI OSI interfaces. ACPI will be disabled.", "label": "KlogAcpiOsiInitFailed" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Could not create GPE Block 0", "advice": "The ACPI driver failed intialize the General Purpose Events (GPE) Block 0. This means that GPEs for this block will be not handled and so some devices or controls may not work correctly.", "label": "KlogAcpiGpeBlock0InitFailed" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Could not create GPE Block 1", "advice": "The ACPI driver failed intialize the General Purpose Events (GPE) Block 1. This means that GPEs for this block will be not handled and so some devices or controls may not work correctly.", "label": "KlogAcpiGpeBlock1InitFailed" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "While decoding _Lxx/_Exx methods", "advice": "The ACPI driver failed to decode level _Lxx or edge _Exx methods for newly added ACPI tables.", "label": "KlogAcpiGpeLevelOrEdgeMethodDecodeFailed" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Could not enable GPE 0x", "advice": "The ACPI driver failed to enable a General Purpose Event (GPE). A GPE event handler will not be executed for this GPE and this may mean some form of loss of functionality with specific devices.", "label": "KlogAcpiGpeEnableFailed" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_CRITICAL", "pattern": "Processor Device is not present", "advice": "The ACPI driver has responded to an ACPI processor hotplug event and attempted to execute the _STA (Status) control for a processor but this failed. _STA is mandatory for a processor that supports hot plug and so the driver has not added the processor to the running system.", "label": "KlogAcpiCpuHotPlugStaFailed" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Could not install PciConfig handler for Root Bridge", "advice": "The ACPI driver could not install a PCI Config operation region for a PCI Root Bridge. This could occur for a variety of reasons but it is most probably because the devices _REG (Region) control failed.", "label": "KlogAcpiPciConfigInstallFailed" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_CRITICAL", "pattern": "During WalkNamespace", "advice": "The ACPI driver failed to traverse the ACPI namespace either during namespace initialization. ACPI will be disabled. ", "label": "KlogAcpiWalkNamespaceFailed" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "During device initialization", "advice": "The ACPI driver failed to traverse the ACPI namespace and initialize all the ACPI devices.", "label": "KlogAcpiNsDevInitFailed" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Could not execute arguments for", "advice": "The ACPI driver failed to initialize methods or op regions during the namespace traversal.", "label": "KlogAcpiNsExecArgFailed" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "ACPI thermal trip point .* changed", "advice": "The ACPI driver has thrown this exeption because of one of the two cases: 1. Either a trip point has becomes invalid when re-evaluating the AML code or, 2. devices listed in _PSL, _ALx or _TZD may have changed and the driver needs to re-bind to the cooling devices of a thermal zone when that happens. This execption probably means the ACPI thermal driver needs to cater for this behaviour and it needs fixing or updating.", "label": "KlogAcpiThermTripPointChanged" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Cannot find acpi parent", "advice": "The ACPI driver was attempting to notify a memory device but could not find a parent to the given device handle. This is an internal ACPI driver error and should not occur. ACPI memory hotplug failures may occur because of this failure.", "label": "KlogAcpiMemHotPlugParentError" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_CRITICAL", "pattern": "_EJ0 failed", "advice": "The ACPI driver attempted to power down a memory hot plug device but the ACPI _EJ0 (Eject) control failed which leaves the hotplug memory device in an invalid state.", "label": "KlogAcpiMemHotPlugEj0Failed" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_CRITICAL", "pattern": "walk_namespace failed", "advice": "The ACPI driver failed to traverse the ACPI object namespace to allow it to register any memory hotplug notify handlers. This failure means that ACPI memory hotplug will not work.", "label": "KlogAcpiMemHotPlugInitFailed" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_MEDIUM", "pattern": "failed to execute _DCK", "advice": "The ACPI driver executed the _DCK (Dock) control but this failed to complete successfully. This control is executed when an ACPI docking or undocking event is received. This may be because of a fault _DCK control or that the hardware isn't functioning correctly.", "label": "KlogAcpiDckEvalFailed" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Evaluating _DOD", "advice": "The ACPI driver failed to enumerate the ACPI video devices because the _DOD (Enumerate All Devices Attached to the Display Adapter) control failed. This may explain why the video device is not functioning correctly.", "label": "KlogAcpiDodEvalFailed" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Invalid _DOD data", "advice": "The ACPI control _DOD (Enumerate All Devices Attached to the Display Adapter) returned either a NULL package or not did not return an ACPI_PACKAGE type as expected. This may explain why the video device is not functioning correctly.", "label": "KlogAcpiDodInvalidData" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Invalid GPE 0x", "advice": "The ACPI driver was requested to get the status of a ACPI General Purpose Event or Fixed Event that did not exist. This is an unexpected driver error.", "label": "KlogAcpiInvalidGpe" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_CRITICAL", "pattern": "Evaluating _PRT", "advice": "The ACPI driver failed to get the PCI Routing Table for a device because the evaluation of _PRT (PCI Routing Table) failed. This will lead to the device not having the IRQ wired up to the correct slot/device/pin. Without this, the device cannot handle interrupts and will fail to work. ", "label": "KlogAcpiPrtEvalFailed" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_CRITICAL", "pattern": "Attempted physical table override failed", "advice": "The ACPI driver attempted to physically map an ACPI table but this failed. This table will not be used and this can lead to unexpected behaviour and loss of functionality.", "label": "KlogAcpiTablePhysMapFailed" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_CRITICAL", "pattern": "Could not acquire Global Lock", "advice": "The ACPI Global Lock is a mutex that ensures exclusive access to resources controlled by the ACPI driver. This lock failed to be acquired which normally means that the kernel mutex has failed, which should never occur. This is normally considered a kernel bug.", "label": "KlogAcpiGlobalLockAcquireFailed" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_CRITICAL", "pattern": "Could not release Global Lock", "advice": "The ACPI Global Lock is a mutex that ensures exclusive access to resources controlled by the ACPI driver. This lock failed to be release which normally means that the kernel mutex has failed, which should never occur. This is normally considered a kernel bug.", "label": "KlogAcpiGlobalLockReleaseFailed" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Error in acpi_memory_enable_device", "advice": "ACPI memory hotplug failed to add a memory device, acpi_memory_enable_device() failed. This occurs if the memory block has already been used by the kernel or if add_memory() failed.", "label": "KlogAcpiMemHotPlugFailed" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_MEDIUM", "pattern": "Error reading AC Adapter state", "advice": "The ACPI driver could not read the AC adapter state because the ACPI control _PSR (Power Source) failed to evaluate. This could be because this control did not exist or more probably that it failed to execute because of an error between the firmware and the smart battery.", "label": "KlogAcpiPsrEvalFailed" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_MEDIUM", "pattern": "failed to add I2C device .* from ACPI", "advice": "Failed to create an I2C device while walking through the ACPI namespace enumerating I2C slave devices behind the adapter.", "label": "KlogAcpiI2CAddFailed" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_MEDIUM", "pattern": "Cannot turn wakeup power resources on", "advice": "The ACPI driver was preparing to wakeup a device by powering on the power resources required for the device but one of these resources failed to power on. See acpi_enable_wakeup_device_power().", "label": "KlogAcpiPowerWakeupResources" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_MEDIUM", "pattern": "Cannot turn wakeup power resources off", "advice": "The ACPI driver was preparing to shutdown a wakeup device by powering off the power resources for the device but one of these resources failed to power off. See acpi_disable_wakeup_device_power().", "label": "KlogAcpiPowerWakeupResources" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Failed to evaluate processor object", "advice": "ACPI Processor() failed to evaluate. ACPI could not gather information on a CPU which will lead to it not being used.", "label": "KlogAcpiProcessorEvalFailed" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Failed to evaluate processor _UID", "advice": "ACPI failed to evaluate a processor _UID object (as declared in a Device statement). ACPI could not gather information on a CPU which will lead to it not being used.", "label": "KlogAcpiProcessorEvalFailed" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_MEDIUM", "pattern": "Evaluating _TPC", "advice": "The ACPI driver failed to get the current number of supported CPU throttling T States because the ACPI control _TPC (Throttling Present Capabilities) failed to evaluate.", "label": "KlogAcpiTpcEvalFailed" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_MEDIUM", "pattern": "Evaluating _PTC", "advice": "The ACPI driver failed to get the Processor Throttling Control because the ACPI control _PTC failed to evaluate. This option control defines a processor throttling control interface alternative to the I/O address spaced-based P_BLK throttling control register (P_CNT). Without this the CPU cannot be throttled via this interface.", "label": "KlogAcpiPtcEvalFailed" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_MEDIUM", "pattern": "Evaluating _TSS", "advice": "The ACPI driver failed to get the Throttling Supported States because the ACPI control _TSS failed to evaluate. Processor throttling will not be enabled.", "label": "KlogAcpiTssEvalFailed" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Invalid _TSS data: freq is zero", "advice": "The ACPI driver got invalid data from the ACPI control _TSS (Throttling Supported States). One of the CPU throttling frequencies in the _TSS package is zero, which is invalid. Processor throttling will not be enabled.", "label": "KlogAcpiTssPackageFreqZero" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Invalid _TSS data", "advice": "The ACPI driver got invalid data from the ACPI control _TSS (Throttling Supported States). Either the package was NULL or the data returned was not of type ACPI_PACKAGE.", "label": "KlogAcpiTssPackageInvalid" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_MEDIUM", "pattern": "Evaluating _TSD", "advice": "The ACPI driver could not get the T-State Dependency from the ACPI control _TSD. This means that the CPU will not have any throttling coordination with other CPUs", "label": "KlogAcpiTsdEvalFailed" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Invalid _TSD data", "advice": "The ACPI driver got invalid data from the ACPI control _TSD (T-State Dependency). Either the package was NULL or the data returned was not of type ACPI_PACKAGE or the number of elements in the package was incorrect or the package in element zero could not be extracted.", "label": "KlogAcpiTsdDataInvalid" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Evaluating _PRW", "advice": "The ACPI driver failed to evaluate the ACPI control _PRW (Power Resources for Wake). As a result, wakeup device management will not function.", "label": "KlogAcpiPrwEvalFailed" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Extracting _PRW package", "advice": "The ACPI driver got invalid data from the ACPI control _PRW (Power Resources for Wake). The returned data did not conform to the ACPI specification, see section 7.2.13 of the ACPI 5.0 ACPI specification for more details.", "label": "KlogAcpiPrwDataInvalid" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Notifying BIOS of _CST ability failed", "advice": "The ACPI driver attempted to notify the firmware (using a System Management Interrupt) that the system had _CST (C-State) ability but this notify command failed. This may lead to unexpected C-State behaviour.", "label": "KlogAcpiSmiCstFailed" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_CRITICAL", "pattern": "Evaluating _PIC", "advice": "The ACPI driver attempted to inform the firmware which method of interrupt routing was being used via the _PIC method, however, this failed to execute. This results in ACPI being disabled.", "label": "KlogAcpiPicEvalFailed" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "Mutex .* is not acquired, cannot release", "advice": "An attempt to release (unlock) an ACPI related mutex has occurred. This mutex could not be released. This is most probably a bug in the AML code where a Release opcode has been executed that does not match up with an earlier corresponding Mutex opcode. It may also be a bug in the ACPI driver, but this is less likely.", "label": "KlogAcpiMutexReleaseError" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "Thread .* could not acquire Mutex", "advice": "A mutex could not be acquired (locked) and the ACPI driver has flagged this up as an exception error. If this occurs when executing a AML Mutex opcode there could be race condition errors if the AML is not checking the return from the Mutex operation and a lot of firmware does omit this check.", "label": "KlogAcpiMutexAcquireError" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_CRITICAL", "pattern": "Unable to initialize fixed events", "advice": "The ACPI driver failed to initialize the structure that keeps track of fixed event handlers. The failure occurred when trying to disable one of the 4 fixed events and this causes the ACPI subsystem initialization to fail, which disables ACPI support.", "label": "KlogAcpiFixedEventInitFailed" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_CRITICAL", "pattern": "Unable to initialize general purpose events", "advice": "The ACPI driver failed to initialize the General Purpose Event (GPE) blocks as defined in the ACPI FADT. This in turn causes the ACPI subsystem initialization to fail, which disables ACPI support.", "label": "KlogAcpiGpeInitFailed" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_CRITICAL", "pattern": "Unable to install System Control Interrupt handler", "advice": "The ACPI driver failed to install the System Control (SCI) interrupt handler, which has to be working for ACPI to work correctly. This in turn causes the ACPI subsystem initialization to fail, which disables ACPI support.", "label": "KlogAcpiSciHandlerInitFailed" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_CRITICAL", "pattern": "Unable to initialize Global Lock handler", "advice": "The ACPI driver failed to initialized the Global Lock handler, which is basically a kernel mutex (and should not fail). This in turn causes the ACPI subsystem initialization to fail, which disables ACPI support.", "label": "KlogAcpiGlobalLockInitFailed" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "No installed handler for fixed event", "advice": "The ACPI driver failed to dispatch a fixed event because their is no fixed event handler installed for this event. This is an error and the kernel has disabled this event for further interrupts. This could lead to reduced functionality.", "label": "KlogAcpiNoFixedEventHandler" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "Index .* is beyond end of object", "advice": "The ACPI interpreter could not execute an AML index opcode, the index in the first operand is out of range.", "label": "KlogAcpiIndexOverflow" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Unexpected notify object type", "advice": "The ACPI interpreter could not execute a AML notify opcode because the first operand is not a notify object. This is a bug in the firmware.", "label": "KlogAcpiUnexpectedNotifyObjType" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "Sleep values out of range: A=.* B=.*", "advice": "An attempt to transition to a sleep state has occurred with the ACPI sleep type values for the PM controls set greater than the maximum allowed value of 7. This is an illegal value and the system will not be transistioned to this sleep state. ", "label": "KlogAcpiSleepValuesRangeError" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Unknown exception code: 0x", "advice": "An execption occurred but the execption code was not recognized and the ACPI driver could not find a textual description for this exception. This is most probably a bug in the ACPI driver or ACPICA core.", "label": "KlogAcpiUnknownExceptionCode" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Unknown Reference Count action (0x", "advice": "An internal ACPI error occurred attempting to update an object reference count. An incorrect action type was provided, expected REF_INCREMENT or REF_DECREMENT, see acpi_ut_update_ref_count().", "label": "KlogAcpiUnknownRefCountAction" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "Invalid type .* for target of Scope operator .*Cannot override", "advice": "The ACPI interpreter found an invalid type for target of a scope operator, this occurred during the loading of the ACPI tables, see acpi_ds_load2_begin_op().", "label": "KlogAcpiInvalidTypeScopeOp" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Divide by zero", "advice": "The ACPI interpreter detected a zero divisor which produce a division by zero error. The AML code is buggy and this will return an undefined value that may cause unexpected behaviour.", "label": "KlogAcpiAmlDivideByZero" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Could not release AML Interpreter mutex", "advice": "The ACPI AML interpreter attempted to release the mutex but this failed. The next time interpreter will attempt to acquire this mutex it will fail, however it will continue to execute AML but there will be race conditions occurring.", "label": "KlogAcpiAmlMutexNotReleased" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "Could not map memory at 0x.* for length", "advice": "ACPI could not memory map the Extended BIOS Data Area (EBDA) or upper region 0xE0000-0xFFFFF to search for the ACPI RSDP. This normally results in the RSDP not being found, which means the ACPI tables can't be located and hence ACPI is disabled.", "label": "KlogAcpiRsdpMemMap" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_MEDIUM", "pattern": "Invalid zero ID from AcpiOsGetThreadId", "advice": "A zero thread ID was returned which will break the ACPI driver. This should never happen, since the thread ID is actually the address of the thread descriptor which is never zero.", "label": "KlogAcpiZeroThreadId" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_MEDIUM", "pattern": "Unknown action (0x", "advice": "The ACPI engine was expecting to increment, decrement or delete a reference count but instead was given an uknown action to do instead. This is a bug in the ACPI ACPICA code.", "label": "KlogAcpiRefCountUnknownAction" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_MEDIUM", "pattern": "Null Op", "advice": "The ACPI interpreter found a NULL parse opcode and didn't expect to. See acpi_ds_delete_result_if_not_used() or acpi_ds_is_result_used().", "label": "KlogAcpiNullOp" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_MEDIUM", "pattern": "Unknown parent opcode Op=", "advice": "The ACPI interpreter found an AML opcode that had an unexpected parent class. This probably indicates an internal ACPI interpeter bug. ", "label": "KlogAcpiUnknownParentOp" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Time parameter is too large", "advice": "ACPI Stall() op was requested to wait for more than 255 usec. The ACPI specification states that the maximum should be 100 usec but to accommodate some firmware a maximum of 255 is supported by the kernel.", "label": "KlogAcpiStallTooLarge" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Evaluating _BCM failed", "advice": "Could not set the brightness level, the ACPI control _BCM failed to execute correctly.", "label": "KlogAcpiBcmFailed" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Current brightness invalid", "advice": "The ACPI video driver set the brightness level using the ACPI control _BCM, however the level used was not a known level (as returned by _BCL).", "label": "KlogAcpiInvalidBrightness" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_MEDIUM", "pattern": "Too many duplicates in _BCL package", "advice": "ACPI method _BCL (Query List of Brightness Control Levels Supported) contains too many duplicated brightness levels in the returned package and this is non-standard.", "label": "KlogAcpiBclPackageContainsDuplicates" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_MEDIUM", "pattern": "Found unordered _BCL package", "advice": "ACPI method _BCL (Query List of Brightness Control Levels Supported) has a maximum brightness value which is not the last value in the returned package. Values returned must be in ascending order.", "label": "KlogAcpiBclUnorderedPackage" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_MEDIUM", "pattern": "ACPI Subsystem is already terminated", "advice": "A request to terminate the ACPI driver but it is already terminated. You should not see this error.", "label": "KlogAcpiAlreadyTerminated" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_MEDIUM", "pattern": "Null scope parameter", "advice": "Failed to push the current scope onto the scope stack, the node was Null, which was not expected. See acpi_ds_scope_stack_push().", "label": "KlogAcpiNullScopeParameter" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_MEDIUM", "pattern": "Invalid conversion sub-opcode", "advice": "The ACPI driver could not convert an AML resource descriptor to a corresponding internal resource descriptor. Refer to acpi_rs_convert_aml_to_resource() or acpi_rs_convert_resource_to_aml().", "label": "KlogAcpiConversionSupOpcode" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_MEDIUM", "pattern": "Invalid conversion opcode", "advice": "The ACPI driver could not convert an AML resource descriptor to a corresponding internal resource descriptor. Refer to acpi_rs_convert_aml_to_resource() or acpi_rs_convert_resource_to_aml().", "label": "KlogAcpiConversionSupOpcode" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "No SMI_CMD in FADT, mode transition failed", "advice": "ACPI FADT SMI_CMD is zero, with ACPI 2.0 this means that the system cannot transition to/from ACPI mode.", "label": "KlogAcpiFadtSmiCmdZero" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "No ACPI mode transition supported in this system (enable/disable both zero)", "advice": "ACPI FADT ACPI_ENABLE is zero and ACPI_DISABLE is set, ACPI 2.0 this means enabling or disabling is not supported and the system cannot transition to ACPI mode.", "label": "KlogAcpiNoModeTransitionSupport" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_MEDIUM", "pattern": "Found a grandchild.*P=.*C=", "advice": "An error occurred in the ACPI driver, acpi_ns_delete_children() was trying to delete children objects and discovered that one of these had children objects of it's own, which should not happen.", "label": "KlogAcpiObjectGrandchild" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_MEDIUM", "pattern": "Cannot assign type .* to .*must be type Int/Str/Buf", "advice": "ACPI execution run time error: Type assignment was illegal, acpi_ex_resolve_object() was trying assign a type to a different type which is illegal.", "label": "KlogAcpiTypeAssign" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_MEDIUM", "pattern": "Store into an unresolved Alias object", "advice": "ACPI execution run time error: The ACPI driver has been asked to resolve an object of type ACPI_TYPE_LOCAL_ALIAS or ACPI_TYPE_LOCAL_METHOD_ALIAS but this should not occur as these should have been resolved earlier. See function acpi_ex_resolve_object() for more details.", "label": "KlogAcpiUnresolveAliasObject" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Unknown AML opcode 0x", "advice": "ACPI execution run time error: The ACPI interpreter has reached an opcode that is unknown, this normally is a bug in the underlying AML code either because of badly written AML code or the compiler has produced code that is incorrect or the ACPI interpreter does not support this valid opcode. ", "label": "KlogAcpiUnknownAmlOpcode" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Invalid AML Opcode: 0x", "advice": "ACPI execution run time error: The ACPI interpreter has reached an opcode that is unknown, this normally is a bug in the underlying AML code either because of badly written AML code or the compiler has produced code that is incorrect or the ACPI interpreter does not support this valid opcode. ", "label": "KlogAcpiUnknownAmlOpcode" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "Found unknown opcode .* at AML address .* offset", "advice": "ACPI execution run time error: The ACPI interpreter has reached an opcode that is unknown, this normally is a bug in the underlying AML code either because of badly written AML code or the compiler has produced code that is incorrect or the ACPI interpreter does not support this valid opcode. ", "label": "KlogAcpiUnknownAmlOpcode" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_MEDIUM", "pattern": "BCD digit too large (not decimal): 0x", "advice": "ACPI execution run time error: AML opcode AML_FROM_BCD_OP (0x5b28) contains a BCD digit value that is greater than 9 and is out of range for a Binary Coded Decimal digit.", "label": "KlogAcpiBcdDigitTooLarge" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_MEDIUM", "pattern": "Integer too large to convert to BCD", "advice": "ACPI execution run time error: AML opcode AML_TO_BCD_OP (0x5b29) has been requested to convert an integer into a Binary Coded Decimal value that is too large. An overflow has been caught and it is possible that unexpected execution behaviour will occur.", "label": "KlogAcpiToBcdOverflow" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_MEDIUM", "pattern": "obsolete and not implemented", "advice": "ACPI execution run time error: Execution of AML_SHIFT_LEFT_BIT_OP (0x5b11) or AML_SHIFT_RIGHT_BIT_OP (0x5b10) were ignored, these are obsolete AML opcodes and are not implemented in the ACPI interpreter. Unexepcted execution behaviour will occur.", "label": "KlogAcpiOpObsolete" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_MEDIUM", "pattern": "Operand must be Buffer/Integer/String/Package - found type", "advice": "ACPI execution run time error: Execution of AML_SIZE_OF_OP with an operand that is not a buffer, integer, string or package has occurred. This will result in unexpected behaviour. This is a bug in the AML.", "label": "KlogAcpiOpTypeBad" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_MEDIUM", "pattern": "Unknown Index TargetType 0x", "advice": "ACPI execution run time error: Execution of AML_DEREF_OF_OP (0x83) with an illegal target index operator that was not a buffer or a package type.", "label": "KlogAcpiUnknownIndexTargetType" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_MEDIUM", "pattern": "Unknown class in reference", "advice": "ACPI execution run time error: Execution of AML_DEREF_OF_OP (0x83) with an illegal operand reference class.", "label": "KlogAcpiUnknownIndexTargetType" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "apm.*an event queue overflowed", "advice": "More then 20 APM events were queued up which is unexpected. The queue was not being drained quickly by a reading process (perhaps it is not running).", "label": "KlogApmEventQueueOverflow" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "apm.*passed bad filp", "advice": "A read of the APM events was performed by a reading process with an unrecognised file pointer. This should not happen.", "label": "KlogApmReadBadFileptr" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "apm.*filp not in user list", "advice": "An attempt to release a APM reader occurred using an unrecognised file pointer. This should not happen.", "label": "KlogApmReleaseBadFileptr" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "apm.*cannot allocate struct of size %d bytes", "advice": "An attempt to open failed, out of memory. APM events cannot be read.", "label": "KlogApmOpenNoMemory" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "apm.*disabled - Unable to start kernel thread", "advice": "Cannot start kernel APM thread, APM handling will be disabled.", "label": "KlogApmKernelThreadFailed" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "PnPBIOS.*ESCD size reported by BIOS escd_info call is too great", "advice": "The ESCD size was greater than a sane size of 32K.", "label": "KlogPnpBiosEscdSize" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "PnPBIOS.*ESCD size reported by BIOS read_escd call is too great", "advice": "The ESCD size was greater than a sane size of 32K.", "label": "KlogPnpBiosEscdSize" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_INFO", "pattern": "PnPBIOS.*Disabled by ACPI PNP", "advice": "The PnPBIOS driver was disabled because PnP support is provided by the ACPI driver.", "label": "KlogPnpBiosDisabled" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "PnPBIOS.*", "advice": "The PnPBIOS driver has detected an issue that fwts does not know about.", "label": "KlogPnpBiosError" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "Node number .* is out of sequence following node .* Aborting.", "advice": "Device node numbers are out of sequence.", "label": "KlogPnpBiosDevNodeSeqError" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_CRITICAL", "pattern": "PCI: BIOS BUG #", "advice": "A call to the PCI BIOS32 service routine (with service signature $PCI) has returned a bad status or an illegal PCI signature. The kernel will disable the use of the PCI BIOS.", "label": "KlogBios32PciFailed" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_CRITICAL", "pattern": "e820: too many entries; ignoring ", "advice": "Legacy E820 BIOS has a limit of 128 entries in the E820 memory map but the firmware seems to have more than this. For EFI Numa hardare, the limit is 128 + 3 * maximum number of nodes. The kernel has ignore the extra entries. This could lead to regions of memory being used by the kernel when in fact is should be reserved and this can lead to unexpected behaviour.", "label": "KlogE820TooManyEntries" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_CRITICAL", "pattern": "Ooops! Too many entries in the memory map!", "advice": "Legacy E820 BIOS has a limit of 128 entries in the E820 memory map but the firmware seems to have more than this. For EFI Numa hardare, the limit is 128 + 3 * maximum number of nodes. The kernel has ignore the extra entries. This could lead to regions of memory being used by the kernel when in fact is should be reserved and this can lead to unexpected behaviour.", "label": "KlogE820TooManyEntries" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_LOW", "pattern": "MTRR.*CPU.*SYSCFG.*MtrrFixDramModEn.*not cleared by BIOS, clearing this bit", "advice": "The firmware is expected to clear MtrrFixDramModEn bit, see for example BIOS and Kernel Developer's Guide for the AMD Athlon 64 and AMD Opteron Processors (26094 Rev. 3.30 February 2006), section 13.2.1.2 SYSCFG Register. The MtrrFixDramModEn bit should be set 1 during firmware initialization of the fixed MTRRs, then cleared to 0 for operation. Hence the kernel has detected and worked around this fault.", "label": "KlogMtrrFixDramModEnNotClear" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "MTRR.*CPU.*Writing MSR .* to .* failed", "advice": "Writing to a MTRR MSR has failed. The kernel cannot do much about this and has ignored the failure.", "label": "KlogMtrrWriteMsrFailed" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "acpi_request_vector.*invalid interrupt type", "advice": "An attempt to request an interrupt vector greater than 256 (ACPI_MAX_PLATFORM_INTERRUPTS) has occurred and will be rejected.", "label": "KlogAcpiIa64RequestBadVector" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "ACPI.*Can't find MADT", "advice": "Could not find the ACPI MADT. The kernel could not find this table so it could determine how many CPUs the system had. The machine will boot with just one CPU which may be the incorrect number of CPUs.", "label": "KlogAcpiMadtMissing" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "ACPI.*Error parsing MADT - no LAPIC entries", "advice": "The ACPI MADT could not be parsed to determine the number of Local APIC entries. This may lead to sub-optimal configuration of the machine.", "label": "KlogAcpiMadtLapicParseError" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "ACPI.*Error parsing LAPIC address override entry", "advice": "The ACPI MADT could not be parsed to determine the Local APIC override entry.", "label": "KlogAcpiMadtLapiceOverrideParseError" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "ACPI.*Error parsing LAPIC NMI entry", "advice": "The ACPI MADT could not be parsed to determine the Local APIC NMI entry.", "label": "KlogAcpiMadtLapicNmiParseError" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "ACPI.*Error parsing MADT.*no IOSAPIC entries", "advice": "The ACPI MADT could not be parsed to find the IOSAPIC entries.", "label": "KlogAcpiMadtIosapicParseError" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "ACPI.*Error parsing platform interrupt source entry", "advice": "The ACPI MADT could not be parsed to find the platform intrerrupt source entry.", "label": "KlogAcpiMadtPlatIntSrcParseError" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "ACPI.*Can't find FADT", "advice": "The ACPI Fixed ACPI Description Table (FADT) is missing and so the kernel cannot determine if the legacy keyboard controller is present. It cannot also determine the SCI_INT interrupt line which is used for ACPI events, such as the power and sleep buttons. If the SCI_INT is not on a legacy interrupt then it needs to be specified in the FADT. ", "label": "KlogAcpiFadtMissing" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "ACPI.*Cannot create", "advice": "The ACPI driver attempted to create an entry in /proc/acpi but failed. This should not happen and is a kernel bug.", "label": "KlogAcpiProcfsCreateFailed" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "ACPI.*Create sysfs link", "advice": "The ACPI driver attempted to create a sysfs link for a device and this failed. This should not happen and is a kernel bug.", "label": "KlogAcpiSysfsLinkCreateFailed" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Error updating fan power state", "advice": "Failed to update the fan power state when coming out of resume. The call to acpi_bus_update_power() failed even though the fan device was valid.", "label": "KlogAcpiFanResumeUpdate" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "does not support this state", "advice": "A request to suspend the machine was aborted because it was asked to transition to a sleep state that is not supported by the ACPI driver or this machine.", "label": "KlogAcpiUnsupportedSleepState" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Hardware changed while hibernated, cannot resume", "advice": "The FACS hardware signature has changed when coming out of hibernation. The kernel has concluded that the machine has changed and therefore won't commit to resuming from hibernate.", "label": "KlogAcpiS4ResumeBadFacsSignature" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Device don't exist, dropping EJECT", "advice": "A processor hotplug notify eject request event was rejected because the device does not seem to exist.", "label": "KlogAcpiHotPlugEjectMissingDevice" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Driver data is NULL, dropping EJECT", "advice": "A processor hotplug notify eject request event was rejected because the device data is NULL.", "label": "KlogAcpiHotplugEjectNullDeviceData" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Invalid reference to IOAPIC pin", "advice": "The IOAPIC pin was invalid, it exceeded the maximum expected pin reference value (MP_MAX_IOAPIC_PIN 127).", "label": "KlogAcpiIoApicPinRefInvalid" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_CRITICAL", "pattern": "Error parsing IOAPIC entry", "advice": "Failed to parse the ACPI MADT, the number of IOAPIC entries found was less than zero, which probably means the MADT is broken.", "label": "KlogAcpiMadtParseError" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_CRITICAL", "pattern": "No IOAPIC entries present", "advice": "The ACPI MADT was expected to contain at least one IOAPIC entry, however, none were found. Cannot enumerate the IOAPICs.", "label": "KlogAcpiMadtNoIoApicEntry" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Error parsing interrupt source overrides entry", "advice": "Could not parse the ACPI MADT to determine the interrupt override for the SCI. This could lead to unexpected behaviour.", "label": "KlogAcpiMadtIrqOverrideParseError" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Error parsing NMI SRC entry", "advice": "Could not parse the ACPI MADT to determine the NMI SRC entry. This could lead to unexpected behaviour.", "label": "KlogAcpiMadtNmiSrcEntryParseError" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "pci_create_slot returned", "advice": "A PCI slot could not be register because a call to pci_create_slot() failed.", "label": "KlogAcpiPciSlot" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "walk_p2p_bridge failure", "advice": "Traversing the PCI root bridge failed because of an error walking the P2P bridge.", "label": "KlogAcpiPciSlot" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "register_slot failure", "advice": "Adding a PCI slot failed because traversing the PCI root bridge failed.", "label": "KlogAcpiPciSlot" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "_PRS resource type .* isn't an IRQ", "advice": "The ACPI _PRS resource type was expected to be an IRQ type and was not.", "label": "KlogAcpiPciLinkPrsIrq" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "_CRS resource type 0x%x isn't an IRQ", "advice": "The ACPI _CRS resource type was expected to be an IRQ type and was not.", "label": "KlogAcpiPciLinkCrsIrq" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Unable to read status", "advice": "A query of _STA to get the bus status failed and the current link status is unknown.", "label": "KlogAcpiPciLinkSta" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "_CRS returned 0", "advice": "The query of the bus status failed because the _CRS controlled returned IRQ 0, which was not expected.", "label": "KlogAcpiPciLinkCrsIrqZero" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Invalid Resource_type", "advice": "A PCI link set failed because the link IRQ resource type is invalid.", "label": "KlogAcpiPciLinkIrqResourceInvalid" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "Unable to set IRQ for", "advice": "An attempt to enabled the link device failed.", "label": "KlogAcpiPciLinkFailed" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Invalid link device", "advice": "Unable to allocate an IRQ failed because the link device is invalid.", "label": "KlogAcpiPciLinkDeviceInvalid" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Invalid link context", "advice": "Unable to allocate an IRQ failed because the link context was invalid (NULL).", "label": "KlogAcpiPciLinkContextNull" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "ACPI.*Invalid index", "advice": "Support for multiple index IRQ entries per link device is not yet implemented.", "label": "KlogAcpiPciLinkMultipleIrqEntries" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Link active IRQ is 0", "advice": "Unable to allocate an IRQ failed because the active IRQ is 0, which is wrong.", "label": "KlogAcpiPciLinkActiveIrqZero" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_MEDIUM", "pattern": "Link isn't initialized", "advice": "An attempt to free the IRQ of a link failed because the link was not initialized.", "label": "KlogAcpiPciLinkNotInitialized" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_CRITICAL", "pattern": "Evaluating processor object", "advice": "An error occurred evaluating the ACPI Processor() object, ACPI CPU control for this CPU broken.", "label": "KlogAcpiProcessorFailed" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_CRITICAL", "pattern": "Evaluating processor _UID", "advice": "An error occurred evaluating an ACPI CPU _UID, ACPI CPU control for this CPU is broken.", "label": "KlogAcpiProcessorBadUid" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Invalid PBLK length", "advice": "The Processor Register Block data is not the expected size, ACPI control of this CPU will not occur.", "label": "KlogAcpiProcessorPblkBad" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Processor driver could not be attached", "advice": "An attempt to add a processor to the system failed in acpi_processor_add(), the processor driver's .probe failed calling device_attach(). The CPU cannot be added to the system under ACPI control.", "label": "KlogAcpiProcessorNotAttached" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Invalid _PSS data", "advice": "Failed to get ACPI performance states from the _PSS contol, buffer was either NULL or not an ACPI package.", "label": "KlogAcpiPssFailed" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Invalid BIOS _PSS frequency found for processor", "advice": "CPU frequency in MHz as supplied by _PSS control cannot be stored in a 32 bit unsigned integer, overflow error.", "label": "KlogAcpiPssFreqTooBig" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "No valid BIOS _PSS frequency found for processor", "advice": "One of the CPUs did not have a valid _PSS frequency defined. Cannot fetch _PSS levels for this CPU.", "label": "KlogAcpiPssNotFound" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Invalid _PSD data", "advice": "The ACPI _PSD control returned a pointer that was NULL or not an ACPI package or did not have 1 item in the package or the item could not be fetched out of the package. P-State dependencies cannot be evaluated, machine may perform sub-optimally.", "label": "KlogAcpiPsdBadData" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Unknown _PSD:num_entries", "advice": "The number of _PSD entries should be 5 but a different count was returned. The P-State dependencies cannot be evaluated, machine may perform sub-optimally.", "label": "KlogAcpiPsdBadCount" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Unknown _PSD:revision", "advice": "The _PSD revision should be 0 but a different version was returned. P-State dependencies cannot be evaluated, machine may perform sub-optimally.", "label": "KlogAcpiPsdBadRevision" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Invalid _PSD:coord_type", "advice": "The _PSD coordination type was invalid, it should be SW_ALL, SW_ANY or HW_ALL. P-State dependencies cannot be evaluated, machine may perform sub-optimally.", "label": "KlogAcpiPsdBadCoordType" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Failed to switch the brightness", "advice": "The ACPI video brightness for the LCD could not be set because _BCM failed.", "label": "KlogAcpiVideoBcmFailed" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Invalid _DOD data in element", "advice": "The ACPI _DOD control returned an element that was not an ACPI integer as expected. This element will be ignored, which could lead to reduced functionality.", "label": "KlogAcpiVideoDodFailed" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Invalid _DDC data", "advice": "The ACPI _DDC control is returning either a NULL buffer pointer or data that is not an ACPI buffer. The Extended Display Identification Data (EDID) structure that represents the display output device could not be fetched. This may affect video output.", "label": "KlogAcpiVideoDdcFailed" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Invalid _BCL data", "advice": "The ACPI _BCL control is returning either a NULL buffer pointer or data that is not an ACPI package. LCD brightness level queries will not work.", "label": "KlogAcpiVideoBclFailed" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Oops, 'acpi_handle' corrupt", "advice": "Failed to unbind a device, the ACPI handle was corrupt.", "label": "KlogAcpiHandleCorrupt" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_MEDIUM", "pattern": "Can't use platform_notify", "advice": "Cannot add the ACPI platform notifiers, they are already registered. This should not happen.", "label": "KlogAcpiPlatformNotify" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_MEDIUM", "pattern": "memory_hp:Error in acpi_memory_enable_device", "advice": "Adding a hotplug memory device failed because.", "label": "KlogAcpiHotPlugAddMemDeviceFailed" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_INFO", "pattern": "memory_hp:Disable memory device", "advice": "An ACPI notify eject request occurred to disable a memory device.", "label": "KlogAcpiHotPlugNotifyDisableOkay" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_MEDIUM", "pattern": "memory_hp:Driver Data is NULL", "advice": "An ACPI notify eject request failed because the device data is NULL.", "label": "KlogAcpiHotPlugNotifyEjectDataNull" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_MEDIUM", "pattern": "Device doesn't exist", "advice": "An ACPI notify eject request failed because the device does not exist.", "label": "KlogAcpiHotPlugNotifyEjectDeviceNotExist" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_MEDIUM", "pattern": "memory_hp:Cannot enable memory device", "advice": "Memory device notify failed because it could not enabled the memory device.", "label": "KlogAcpiHotPlugEnableFailed" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_MEDIUM", "pattern": "memory_hp:Cannot find driver data", "advice": "Memory device notify failed because it could not find the relevant driver data for this device.", "label": "KlogAcpiHotPlugDeviceNotify" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_MEDIUM", "pattern": "memory_hp:add_memory failed", "advice": "Failed to add memory device, add_memory() failed for some reason.", "label": "KlogAcpiHotPlugAddMemoryFailed" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_MEDIUM", "pattern": "memory_hp:get_device_resources failed", "advice": "The devices resources could not be determined from the relevant ACPI _CRS control and so the memory device could not be enabled.", "label": "KlogAcpiHotPlugCrsFailed" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_MEDIUM", "pattern": "Fatal opcode executed", "advice": "An ACPI AML fatal opcode was executed and the kernel has trapped this signal. It could be because of faulty control method code.", "label": "KlogAcpiFatalOpcodeSignal" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_MEDIUM", "pattern": "Call to queue_work() failed.", "advice": "Failed to queue up AML exec work on CPU 0. This results in ACPI control code not being executed which could lead to unexpected behaviour.", "label": "KlogAcpiQueueWorkFailed" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_MEDIUM", "pattern": "acpi_os_get_timer() TBD", "advice": "Support for the 64 bit ACPI AML timer operand is not implemented, this will be emulated and may affect AML code that relies on accurate timers.", "label": "KlogAcpiGetTimerNotImplemented" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "SCI .* allocation failed", "advice": "Failed to install an ACPI SCI interrupt handler because the the IRQ allocation failed.", "label": "KlogAcpiSciIrqAllocError" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "SCI .*ACPI GSI .* not registered", "advice": "Failed to install an ACPI SCI interrupt handler because the Global System Interrupt (GSI) is not registered.", "label": "KlogAcpiSciGsiError" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_CRITICAL", "pattern": "Cannot map memory that high", "advice": "Cannot map an ACPI physical address above the 32 bit 4GB limit, this could lead to broken functionality.", "label": "KlogAcpiMap4GbLimit" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_CRITICAL", "pattern": "System description tables not found", "advice": "The EFI ACPI20 or ACPI RSDP pointers were invalid, so the kernel cannot find any of the ACPI tables. ACPI support will be disabled.", "label": "KlogAcpiEfiRsdpError" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_MEDIUM", "pattern": "Invalid EFI RTC value: write of .* to EFI RTC failed", "advice": "Failed to update the EFI Real Time Clock (RTC), the provided time was not a valid time and so the EFI RTC was not updated.", "label": "KlogAcpiEfiRtcWriteFailed" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "acpi_memory_enable_device() error", "advice": "ACPI memory hotplug failed to add an ACPI memory device to the systen. This error can occur if the memory block has already been used by the kernel or if the ACPI memory bind failed.", "label": "KlogAcpiMemEnableDevice" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "Vendor .* System .* Revision .* has a known ACPI BIOS problem", "advice": "The kernel has recognised that this particular version of the firmware has known ACPI issues and so ACPI support will be disabled. Reduced functionality will occur.", "label": "KlogAcpiBlackListed" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_CRITICAL", "pattern": "Unable to register for device notifications", "advice": "The ACPI device notify handlers failed to be installed and so ACPI support with be disabled.", "label": "KlogAcpiNotifyHandlerInstallFailed" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_CRITICAL", "pattern": "Unable to initialize ACPI objects", "advice": "The ACPI objects failed to initialize and so ACPI support with be disabled.", "label": "KlogAcpiObjectsFailed" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_CRITICAL", "pattern": "Unable to start the ACPI Interpreter", "advice": "The ACPI interpreter failed to start up correctly and so ACPI support with be disabled.", "label": "KlogAcpiInterpreterFailed" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_CRITICAL", "pattern": "Unable to enable ACPI", "advice": "The ACPI subsystem failed to be enabled and so ACPI support with be disabled.", "label": "KlogAcpiEnableFailed" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_CRITICAL", "pattern": "Unable to load the System Description Tables", "advice": "The ACPI driver was unabled to load the ACPI tables and so ACPI support will be disabled.", "label": "KlogAcpiLoadFailed" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_CRITICAL", "pattern": "Unable to initialize the ACPI Interpreter", "advice": "The ACPI interpreter could not be intialized and so ACPI support will be disabled.", "label": "KlogAcpiInitFailed" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_CRITICAL", "pattern": "Unable to reallocate ACPI tables", "advice": "The kernel count not reallocate the ACPI tables into memory from firmware and so ACPI support will be disabled.", "label": "KlogAcpiReallocateFailed" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_CRITICAL", "pattern": "can't evaluate _SEG", "advice": "The _SEG ACPI control could not be evaluated. This will stop certain PCI root bridges from being added and enabled on the computer.", "label": "KlogAcpiSegFailed" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_CRITICAL", "pattern": "can't evaluate _BBN", "advice": "The _BBN ACPI control could not be evaluated. This will stop certain PCI root bridges from being added and enabled on the computer.", "label": "KlogAcpiSegFailed" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_CRITICAL", "pattern": "Bus .*:.* not present in PCI namespace", "advice": "The bus cound not be found in the PCI namespace. This will stop certain PCI root bridges from being added and enabled on the computer.", "label": "KlogAcpiPciScanFailed" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_MEDIUM", "pattern": "_DSW execution failed", "advice": "The ACPI control _DSW (Device Sleep Wake) failed to execute, this may impact on the ability to enable or disable the wake capabilities of a device in the computer.", "label": "KlogAcpiDswFailed" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_MEDIUM", "pattern": "_PSW execution failed", "advice": "The ACPI control _PSW (Power State Wake) failed to execute, this may impact on the ability to enable or disable the wake capabilities of a device in the computer.", "label": "KlogAcpiPswFailed" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_MEDIUM", "pattern": "Transition power state", "advice": "Failed to power on or shutdown a wakeup device using _PSW or _DSW control methods.", "label": "KlogAcpiSuspend" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Fail in evaluating the _REG object of EC device", "advice": "The _REG object for the Embedded Controller Device could not be evaluated, however the kernel will ignore this and try to install the handler for the Embedded Controller.", "label": "KlogAcpiEcBadReg" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Unable to undock", "advice": "An undock event was requested but the machine still seems to be docked.", "label": "KlogAcpiDockCannotUndock" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Unable to dock", "advice": "A dock notify event was handled but the machine still seems to be undocked.", "label": "KlogAcpiDockCannotDoct" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Unknown dock event", "advice": "A dock notify event was handled, but the type of notify event was not recognised.", "label": "KlogAcpiDockEvent" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": ".* encountered error .*", "advice": "An error occurred when trying to add a new dock station device.", "label": "KlogAcpiDockAdd" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "More than one Lid device found", "advice": "Failed to add a Lid device because one already exists. The kernel does not support more than one Lid device.", "label": "KlogAcpiLidMany" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_CRITICAL", "pattern": "Unsupported hid", "advice": "The Lid Hardware ID (HID) is one that the kernel does not recognise and so the Lid device was not added to the system. This can explain why the Lid does not work.", "label": "KlogAcpiLidBadHid" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "device is NULL", "advice": "The kernel count not add a container because the device associated with this was NULL, which is unexexpected.", "label": "KlogAcpiContainer" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_CRITICAL", "pattern": "wakeup header does not match", "advice": "The ACPI suspend wakeup header did not contain the expected header value so the kernel had to abort the suspend. This can happen if the data is corrupted.", "label": "KlogAcpiSuspendHeader" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_CRITICAL", "pattern": "not enough elements in _CST", "advice": "_CST returned either a NULL buffer or a type that wasn't an ACPI package or less than 2 elements in the package. The kernel could not evaluate the CPU supported C states supported, meaning that the machine will not run optimally.", "label": "KlogAcpiCstElements" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_CRITICAL", "pattern": "count given by _CST is not valid", "advice": "_CST returned an invalid number of elements, the package a different number of C states to the number of C states that _CST reported. The kernel could not evaluate the CPU supported C states supported, meaning that the machine will not run optimally.", "label": "KlogAcpiCstCount" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "No return object", "advice": "An ACPI evaluate for a reference returned a buffer of zero length or a NULL buffer pointer.", "label": "KlogAcpiEvalReferenceBadBuffer" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Expecting a [Package], found type", "advice": "An ACPI evaluate for a reference did not return a ACPI package as expected.", "label": "KlogAcpiEvalReferenceNotPackage" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "[Package] has zero elements", "advice": "An ACPI evaluate for a reference returned an illeage package of zero elements.", "label": "KlogAcpiEvalReferencePackageZeroElements" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Expecting a [Reference] package element, found type", "advice": "An ACPI evaluate for a reference returned contained an element that was not a reference type.", "label": "KlogAcpiEvalReferencePackageElementType" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "error obtaining _EC", "advice": "The ACPI Embedded Controller Offset Query Control Method _EC failed to evaluate. It is either missing or broken and means the kernel cound not add a SMBUS host controller.", "label": "KlogAcpiEcFailed" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "host controller is not configured", "advice": "The kernel count not issue a SMBUS transaction because the host controller was not configured. See acpi_smbus_transaction()", "label": "KlogSmbusHostController" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_CRITICAL", "pattern": "Error attaching device data", "advice": "The kernel could not register a thermal zone because acpi_attach_data() failed for some reason. The machine may not be able to optimally cool itself and may have overheating issues because of this error.", "label": "KlogAcpiThermZoneAttachFailed" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Invalid _TSS data: freq is zero", "advice": "The _TSS has returned a zero fequency setting in one or more of the package elements.", "label": "KlogAcpiTssZeroFrequency" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Invalid _TSS data", "advice": "The _TSS has returned a NULL data pointer or data which isn't an ACPI package.", "label": "KlogAcpiTssBadData" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Unknown _TSD:num_entries", "advice": "The number of entries in the throlling domain information was not 5.", "label": "KlogAcpiTsdIllegalNumEntries" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Unknown _TSD:revision", "advice": "The expected TSD revision was not 0.", "label": "KlogAcpiTsdBadRevision" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "HARDWARE addr space,NOT supported yet", "advice": "The CPU does not seem to support the MSR_IA32_THERM_CONTROL MSR.", "label": "KlogAcpiUnsupportedThermControlMsr" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Unknown addr space", "advice": "Could not read the hardware specific throttling status, the status register space ID was not a system I/O space or a fixed hardware space.", "label": "KlogAcpiThrottleStatusBadRead" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Invalid _TSD data", "advice": "The _TSD has returned data which isn't valid, either a NULL data pointer or data which isn't an ACPI package has been returned.", "label": "KlogAcpiTsdBadData" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Invalid _PTC control register", "advice": "The _PTC control register bit widths or bit offsets are incorrect.", "label": "KlogAcpiPtcControlRegisterInvalid" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Invalid _PTC status register", "advice": "The _PTC status register bit widths or bit offsets are incorrect.", "label": "KlogAcpiPtcStatusRegisterInvalid" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Invalid _PTC data (status_register)", "advice": "The _PTC status register data (element 1 of the package) was either NULL or too small.", "label": "KlogAcpiPtcDataStatusRegister" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Invalid _PTC data (control_register)", "advice": "The _PTC control register data (element 0 of the package) was either NULL or too small.", "label": "KlogAcpiPtcDataControlRegister" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Invalid _PTC data", "advice": "_PTC did not return a package of two elements, expected a two element package containing bufffers for the control and status register.", "label": "KlogAcpiPtcDataBad" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Failed to create sysfs link 'thermal_cooling'", "advice": "sysfs_create_link() failed to create the thermal 'thermal_cooling' sysfs entry.", "label": "KlogAcpiThermalThermalCoolingSysfs" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Failed to create sysfs link 'device'", "advice": "sysfs_create_link() failed to create the thermal 'device' sysfs entry.", "label": "KlogAcpiThemalDeviceSysfs" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Setting initial power state", "advice": "The call to acpi_bus_update_power() in acpi_fan_add() failed while adding a new fan device.", "label": "KlogAcpiFanAddFailed" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "EC.*input buffer is not empty, aborting transaction", "advice": "The ACPI Embedded Controller (EC) driver attempted to perform a read or write transaction but had to abort because the EC was still busy and the input buffer was not emptied within 500ms. Normally this indicates an EC firmware fault. One can try increasing the delay using the acpi.ec_delay kernel parameter or writing to /sys/module/acpi/parameters/ec_delay - however this generally does not help much if the EC firmware is buggy.", "label": "KlogAcpiEcInputBufferIsNotEmpty" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_INFO", "pattern": "ENERGY_PERF_BIAS.*Set to 'normal'.* was 'performance'", "advice": "This is not exactly a failure but a warning from the kernel. The MSR_IA32_ENERGY_PERF_BIAS was initialized and defaulted to a high performance bias setting. The kernel has detected this and changed it down to a 'normal' bias setting.", "label": "KlogEnergyPerfBiasSetToNormal" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_CRITICAL", "pattern": "pnp.*can't evaluate _CRS: 12311", "advice": "The _CRS object could not be evaluated because an invalid resource type has been returned. This can lead to misconfigured PNP hardware and may render a system unbootable.", "label": "KlogPnpCrsInvalidResourceType" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_CRITICAL", "pattern": "pnp.*can't evaluate _CRS:", "advice": "The _CRS object could not be evaluated, the error code is an ACPI error return code (see include/acpi/acexecp.h in the linux source, this is composed of bottom 12 bits of an error number and upper 4 bits of an AE_CODE_* code. Typically, _CRS evaluation errors can lead to misconfigured PNP hardware and may render a system unbootable.", "label": "KlogPnpCrsCannotEvaluate" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "dell_wmi:.*Received unknown WMI event", "advice": "The Dell WMI driver has received an unknown WMI event. The driver should handle this new event or the firmware is reporting an incorrect and unknown event.", "label": "KlogDellWmiReceivedUnknownWMIEvent" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "dell_wmi:.*bad event status 0x", "advice": "The Dell WMI driver has received a bad event status. This should be investigated further.", "label": "KlogDellWmiBadEventStatus" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "asus_wmi:.*Unknown key.*pressed", "advice": "The ASUS WMI driver has received an unknown key event. The driver should handle this new key event or the firmware is reporting an incorrect and unknown event.", "label": "KlogAsusWmiUnknownKeypressed" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "hp_wmi:.*bad event status 0x", "advice": "The HP WMI driver has received a bad event status. This should be investigated further.", "label": "KlogHpWmiBadEventStatus" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "hp_wmi:.*Unknown response received", "advice": "The HP WMI driver has received a return object that was not of type ACPI_BUFFER. The driver needs to be updated to handle this new return type or there is a bug in the WMI mechanism on this machine.", "label": "KlogHpWmiUnknownResponseReceived" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "hp_wmi:.*Unknown buffer length", "advice": "The HP WMI driver has received a return buffer that was not the expected size of 8 or 16 bytes. This is probably a bug in the WMI mechanism on this machine.", "label": "KlogHpWmiUnknownBufferLength" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "hp_wmi:.*Unknown key code - 0x", "advice": "The HP WMI driver has received a key code that it does not recognise. The driver needs to be updated to handle this new key code.", "label": "KlogHpWmiUnknownKeyCode" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "hp_wmi:.*Unknown event_id", "advice": "The HP WMI driver has received an event ID that it does not recognise. The driver needs to be updated to handle this new event ID.", "label": "KlogHpWmiUnknownEventId" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "msi_wmi:.*Unknown key pressed", "advice": "The MSI WMI driver has received a key code that it does not recognise. The driver needs to be updated to handle this new key code.", "label": "KlogMsiWmiUnknownKeyPressed" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "ACPI.*Handling Garbled _PRT entry", "advice": "BIOS has a garbled _PRT entry; source_name and source_index swapped.", "label": "KlogAcpiHandlingGarbledPrtEntry" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_MEDIUM", "pattern": "Invalid _PCT data", "advice": "The ACPI _PCT data is invalid.", "label": "KlogInvalidPctData" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "ACPI Error.*ACPI path has too many parent prefixes", "advice": "A path to an ACPI obejct has too many ^ parent prefixes and references passed the top of the root node. Please check AML for all ^ prefixed ACPI path names.", "label": "KlogAcpiPathTooManyParentPrefixes" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_CRITICAL", "pattern": "A valid RSDP was not found", "advice": "An ACPI compatible system must provide an RSDP (Root System Description Pointer). This structure provides the physical address of the RSDT and XSDT. Since this could not be found, the ACPI driver has had to disable ACPI support.", "label": "KlogAcpiValidRsdpNotFound" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_CRITICAL", "pattern": "ACPI Error.*Cannot release Mutex", "advice": "Attempted to release of a Mutex that was not previous acquired. This needs fixing as it could lead to race conditions when operating on a resource that needs to be proteced by a Mutex.", "label": "KlogAcpiCannotReleaseMutex" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "ACPI Error.*Could not disable .* event", "advice": "", "label": "KlogAcpiCouldNotDisableEvent" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "ACPI Error.*Could not enable .* event", "advice": "", "label": "KlogAcpiCouldNotEnableEvent" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "ACPI Error.*Namespace lookup failure, AE_ALREADY_EXISTS", "advice": "", "label": "KlogAcpiNamespaceLookupFailure" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_CRITICAL", "pattern": "ACPI Error.*_SB_._OSC.*AE_AML_BUFFER_LIMIT", "advice": "Section 6.2.10.2 of V4.0a of the ACPI specification states that the _OSC Method should be passed an 8 byte buffer of 2 x 32 DWORDs, however it appears that the method is possibly trying to access data outside this buffer. This is a bug in the _OSC method.", "label": "KlogAcpiSbOscAeAmlBufferLimit" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_CRITICAL", "pattern": ".*pci.*ACPI _OSC request failed.*returned control mask", "advice": "The _OSC method evaluation failed, which will result in disabling PCIe functionality, for example, the Linux kernel has to disable Active State Power Management (ASPM) which means that PCIe power management is not optimally configured.", "label": "KlogPciAcpiOscRequestFailed" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "_OSC invalid UUID", "advice": "The _OSC method indicates it has been passed an invalid UUID, see section 6.2.10 _OSC (Operating System Capabilities) of the ACPI specification for more details. Note that it has been observed on some systems that this error is returned because the _OSC has evaluated incorrectly and it returns with an incorrect error setting the OSC invalid UUID error bit.", "label": "KlogOscInvalidUuid" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "_OSC invalid revision", "advice": "The _OSC method indicates it has been passed an invalid revision number, see section 6.2.10 _OSC (Operating System Capabilities) of the ACPI specification for more details. Note that the revision level is specific to the given UUID.", "label": "KlogOscInvalidRevision" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "_OSC request failed", "advice": "The _OSC method evaluation failed for some unknown reason. This could be that the data passed to it was incorrect or that the method itself is broken. See section 6.2.10 _OSC (Operating System Capabilities) of the ACPI specification for more details.", "label": "KlogOscRequestFailed" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "_OSC request failed", "advice": "The _OSC method evaluation failed for some unknown reason. This could be that the data passed to it was incorrect or that the method itself is broken. See section 6.2.10 _OSC (Operating System Capabilities) of the ACPI specification for more details.", "label": "KlogOscRequestFailed" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_CRITICAL", "pattern": "ACPI Error.*Field.*exceeds Buffer", "advice": "The field exceeds the allocated buffer size. This can lead to unexpected results when fetching data outside this region.", "label": "KlogAcpiFieldexceedsBuffer" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_CRITICAL", "pattern": "ACPI Error.*Illegal I\/O port address\/length above 64K", "advice": "A port address or length has exceeded the maximum allowed 64K address limit. This will lead to unpredicable errors.", "label": "KlogAcpiIllegalIOAbove64K" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "ACPI Error.*Incorrect return type", "advice": "An ACPI Method has returned an unexpected and incorrect return type.", "label": "KlogAcpiIncorrectReturnType" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "ACPI Error.*Needed .*\\[Buffer\/String\/Package\\], found \\[Integer\\]", "advice": "An ACPI Method has returned an Integer type when a Buffer, String or Package was expected.", "label": "KlogAcpiNeededBufferOrStringOrPackage" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "ACPI Error.*Needed .*\\[Reference\\], found \\[Device\\]", "advice": "An ACPI Method has returned an Device type when a Reference type was expected.", "label": "KlogAcpiNeededReference" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "ACPI Error.*No handler for Region.*SystemCMOS", "advice": "An attempt to dispatch an address space or operation region access to CMOS memory has failed because the Linux kernel does not yet have a CMOS handler. This may have little or no detrimental effect, however it is worth examining the AML to see what kind of access is occurring to see if the firmware really requires CMOS access. For example, recent firmware may implement Peak Shift, which requires access CMOS memory and this can trigger this error.", "label": "KlogAcpiNoHandlerForRegion" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "No handler for Region", "advice": "ACPI attempted to read or write to a region however the ACPI driver does not have a handler implemented for this particular region space. The read/write will fail and undefined behaviour will occur.", "label": "KlogAcpiNoHandlerForRegion" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "ACPI Error.*Region SystemCMOS.* has no handler", "advice": "An attempt to read or write a single field to a CMOS Operation Region has failed because the Linux kernel does not yet have a CMOS handler. This may have little or no detrimental effect, however it is worth examining the AML to see what kind of access is occurring to see if the firmware really requires CMOS access. For example, recent firmware may implement Peak Shift, which requires access CMOS memory and this can trigger this error.", "label": "KlogAcpiRegionHasNoHandler" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "ACPI Error.*Region .* has no handler", "advice": "", "label": "KlogAcpiRegionHasNoHandler" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "ACPI Error.*Missing expected return value", "advice": "The ACPI Method did not return a value and was expected too. This is a bug and needs fixing.", "label": "KlogAcpiMissingExpectedReturnValue" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "Package List length.*larger than.*truncated", "advice": "A Method has returned a Package List that was larger than expected.", "label": "KlogAcpiPackageListLargerThanExpected" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_CRITICAL", "pattern": "ACPI Error.*Found unknown opcode", "advice": "An illegal AML opcode has been found and is ignored. This indicates either badly compiled code or opcode corruption in the DSDT or SSDT tables or a bug in the ACPI execution engine. Recommend disassembing using iasl to find any offending code.", "label": "KlogAcpiFoundUnknownOpcode" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_CRITICAL", "pattern": "ACPI Warning.*Detected an unsupported executable opcode", "advice": "An illegal AML opcode has been found and is ignored. This indicates either badly compiled code or opcode corruption in the DSDT or SSDT tables or a bug in the ACPI execution engine. Recommend disassembing using iasl to find any offending code.", "label": "KlogAcpiDetectedUnsupportedOpCode" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "bios32_service.*not present", "advice": "The BIOS has found a BIOS32 Service Directory but the BIOS has returned error 0x80 on calling the service, which indicates that the requested service has not been implemented in the firmware.", "label": "KlogBios32ServiceNotPresent" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "bios32_service.*BIOS bug", "advice": "The BIOS has found a BIOS32 Service Directory but the BIOS has returned an error on calling the service, which is unexpected and usually means the firmware is broken.", "label": "KlogBios32ServiceBiosBug" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "PCI: Error.*when fetching IRQ routing table", "advice": "The BIOS has been interrogated for the PCI IRQ routing table but the BIOS returned an error.", "label": "KlogPciFetchingIRQRoutingTable" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_CRITICAL", "pattern": "ACPI Error.*Denied AML access to port", "advice": "AML code was accessing an I/O port that was banned from accesses. Ports 0x20-0x21 (PIC0), 0xa0-0xa1 (PIC1), 0x4d0-0x4d1 (ELCR) are always banned. For _OSI() greater or equal to 'Windows 2001' (Windows XP) ports 0x00-0x0f (DMA), 0x40-0x43 (PIT1), 0x48-0x4b (PIT2), 0x70-0x71 (RTC), 0x81-0x83 (DMA1), 0x87 (DMA1L), 0x89-0x8b (DMA2), 0x8f (DMA2L), 0x90-0x91 (ARBC), 0x93-0x94 (SETUP), 0x96-0x97 (POS), 0xc0-0xdf (ISA DMA) and 0xcf8-0xcff (PCI config) are banned. Since the AML code has been banned from accessing these ports you will get undefined behaviour and the AML code should be fixed.", "label": "KlogAcpiDeniedAmlAccessToPort" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "Method parse\/execution failed.*AE_AML_NO_RETURN_VALUE", "advice": "The ACPI Method was expected to return a value and did not.", "label": "KlogAcpiMethodNoReturnValue" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "Method parse/execution failed.*EC.*AE_TIME", "advice": "The ACPI driver encountered an error executing some ACPI AML code which originated from the Embedded Controller (EC) timing out while waiting for a transaction to complete. This could indicate that either EC interrupts are being disabled or that the EC has temporarily gone offline or locked up, so this could be a kernel error or more probably a bug in the EC firmware. See the kernel driver drivers/acpi/ec.c. One can increase EC timeouts using the kernel parameter ec_delay to specify the timeout in milliseconds, the default is 500.", "label": "KlogAcpiEcTimeout" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "Method parse/execution failed.*AE_TIME", "advice": "The ACPI driver encountered an error executing some ACPI AML code which originated from a device timing out.", "label": "KlogAcpiTimeout" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "ACPI Error.*Method (execution|parse\/execution) failed.*AE_ALREADY_EXISTS", "advice": "", "label": "KlogAcpiObjectAlreadyExists" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "ACPI Error.*Method (execution|parse\/execution) failed.*AE_INVALID_TABLE_LENGTH", "advice": "The ACPI Method returned a table of the incorrect length. This can lead to unexepected results.", "label": "KlogAcpiInvalidTableLength" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "ACPI Error.*Method (execution|parse\/execution) failed.*_SRS.*AE_AML_BUFFER_LIMIT", "advice": "Method failed: ResourceSourceIndex is present but ResourceSource is not. This is a common issue from a particular BIOS vendor, the _SRS (Set Resource Settings) optional control takes a byte stream argument that specifies a new resource allocation for a device. The resource descriptors in the byte stream argument must be specified exactly as listed by _CRS. However, in this case _SRS has been passed a byte stream that is too short and attempted to access bytes outside the buffer causing this error. This is a firmware bug that needs to be fixed.", "label": "KlogAcpiBufferLimit" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "ACPI Error.*Method (execution|parse\/execution) failed.*AE_AML_BUFFER_LIMIT", "advice": "Generally this error occurs because of access outside of a buffer. This occurs for several reasons: a) A field does not fit within the current length of a buffer, b) an ACPI table load did not fit into a buffer, c) An attempt to convert a buffer into an integer failed because the buffer was zero sized, d) a SMBus/IPMI/GenericSerialBus write failed because the buffer was too small, e) An index into a buffer was too long and fell outside the buffer.", "label": "KlogAcpiBufferLimit" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_INFO", "pattern": "ACPI Error.*Method (execution|parse\/execution) failed.*_PTS.*AE_NOT_EXIST", "advice": "The kernel has attempted to execute the _PTS (Prepare to Suspend) control but it has not been implemented on this platform. Section 6.1 of the ACPI specification states: 'The _PTS control method provides the BIOS a mechanism for performing some housekeeping, such as writing the sleep type value to the embedded controller, before entering the system sleeping state'. Hence _PTS is provided for the firmware to do housekeeping and therefore does not appear to be mandatory. In this case, the platform seems to have omitted _PTS because it may not need it. Unfortunately the kernel complains about this not existing. This is most probably not an error.", "label": "KlogAcpiObjectDoesNotExist" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "ACPI Error.*Method (execution|parse\/execution) failed.*AE_NOT_EXIST", "advice": "The ACPI interpreter failed to execute or parse some AML because a object or control did not exist. This normally occurs because of buggy firmware and may lead to unexpected behaviour or loss of functionality.", "label": "KlogAcpiObjectDoesNotExist" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "ACPI Error.*Method (execution|parse\/execution) failed.*AE_NOT_FOUND", "advice": "", "label": "KlogAcpiObjectNotFound" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "ACPI Error.*Method (execution|parse\/execution) failed.*AE_LIMIT", "advice": "", "label": "KlogAcpiExecLimit" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "ACPI Error.*Method (execution|parse\/execution) failed.*AE_AML_OPERAND_TYPE", "advice": "", "label": "KlogAcpiOperandType" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "ACPI Error.*Method (execution|parse\/execution) failed.*AE_TIME", "advice": "", "label": "KlogAcpiTimeOut" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "ACPI Error.*Method (execution|parse\/execution) failed.*AE_AML_PACKAGE_LIMIT", "advice": "", "label": "KlogAcpiPackageLimit" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "ACPI Error.*Method (execution|parse\/execution) failed.*AE_OWNER_ID_LIMIT", "advice": "Method failed to allocate owner ID.", "label": "KlogAcpiOwnerIdLimit" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "ACPI Error.*Method (execution|parse\/execution) failed.*AE_AML_MUTEX_NOT_ACQUIRED", "advice": "A Mutex acquire failed, which could possibly indicate that it was previously acquired and not released, or a race has occurred. Some AML code fails to miss Mutex acquire failures, so it is a good idea to verify all Mutex Acquires using the syntaxcheck test.", "label": "KlogAcpiMutexNotAcquired" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Method parse/execution failed", "advice": "The ACPI driver encountered a parse or execution error on some ACPI AML code. This is unexepcted and normally indicates that there is a bug in the compiled AML code. It could be a programming fault or an AML compiler issue. See acpi_ps_parse_aml().", "label": "KlogAcpiParseExecAmlFailed" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "ACPI Error.*SMBus or IPMI write requires Buffer of", "advice": "An incorrect SMBus or IPMI write buffer size was used.", "label": "KlogAcpiIncorrectWriteBufferSize" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "ACPI (Warning|Error).*Evaluating .* failed", "advice": "Executing the ACPI Method leaded in an execution failure. This needs investigating.", "label": "KlogAcpiEvaluationFailed" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "ACPI Warning.*Optional field.*has zero address or length", "advice": "An ACPI table contains Generic Address Structure that has an address that is incorrectly set to zero, or a zero length. This needs to be fixed. ", "label": "KlogAcpiOptionalFieldZeroAddressOrLength" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "ACPI (Warning|Error).*two DSDT tables", "advice": "The FADT table contains a mismatch between the 32 bit pointer (DSDT) and 64 bit pointer (X_DSDT) pointer to the FACS table. Section 5.2.9 of version 4.0a of the ACPI specification states that X_DSDT should be zero if DSDT is defined, or DSDT should be zero if X_DSDT is zero. With two different pointers defined, the kernel has to make a choice, and opts for the 32 bit pointer. Because these pointers are different, it suggests either one of them is incorrect, or different 32 bit and 64 bit DSDT tables are present in your system, which is NOT complaint with the ACPI specification. The kernel has to make a choice and opts for the 32 bit DSDT.", "label": "KlogAcpiTwoDsdt" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "ACPI (Warning|Error).*two FACS tables", "advice": "The FADT table contains a mismatch between the 32 bit pointer (FIRMWARE_CTRL) and 64 bit pointer (X_FIRMWARE_CTRL) pointer to the FACS table. Section 5.2.9 of version 4.0a of the ACPI specification states that X_FIRMWARE_CTRL should be zero if FIRMWARE_CTRL is defined, or FIRMWARE_CTRL should be zero if X_FIRMWARE_CTRL is zero. With two different pointers defined, the kernel has to make a choice, and opts for the 32 bit pointer. Because these pointers are different, it suggests either one of them is incorrect, or different 32 bit and 64 bit FACS tables are present in your system, which is NOT complaint with the ACPI specification. The kernel has to make a choice and opts for the 32 bit FIRMWARE_CTRL.", "label": "KlogAcpiTwoFacs" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "32/64X address mismatch in.*, using 32", "advice": "The FADT table contains a mismatch between a 32 bit pointer and a 64 bit Generic Address pointer. Because these pointers are different, it suggests either one of them is incorrect. If a non-null 32 bit pointer exists, then the kernel will opt for this in preference to the 64 bit pointer even though this is not in accordance to the ACPI specification.", "label": "KlogAcpi32Bit64BitAddressMismatch" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "ACPI (Warning|Error).*32\/64.*(length|address) mismatch in.*tbfadt", "advice": "The FADT table contains Generic Address Structure that has a mismatch between the 32 bit and 64 bit versions of an address. This should be fixed so there are no mismatches. ", "label": "KlogAcpi32Bit64BitAddressMismatchInFadt" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "ACPI (Warning|Error).*32\/64.*(length|address) mismatch in", "advice": "A table contains Generic Address Structure that has a mismatch between the 32 bit and 64 bit versions of an address. This should be fixed so there are no mismatches. ", "label": "KlogAcpi32Bit64BitAddressMismatch" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "ACPI Warning.*Return Package type mismatch", "advice": "ACPI AML interpreter executed a Method that returned a package with incorrectly typed data. The offending method needs to be fixed.", "label": "KlogAcpiReturnPackageTypeMismatch" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "ACPI Warning.*Return Package has no elements", "advice": "ACPI AML interpreter executed a Method that returned a package with no elements inside it. This is most probably a bug in the Method and needs to be fixed.", "label": "KlogAcpiReturnPackageZeroElements" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "ACPI Warning.*Return Package is too small", "advice": "ACPI AML interpreter executed a Method that returned a package with too few elements inside it. This is most probably a bug in the Method and needs to be fixed.", "label": "KlogAcpiReturnPackageTooSmall" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_MEDIUM", "pattern": "ACPI Warning.*Incorrect checksum in table", "advice": "The ACPI table listed above has an incorrect checksum, this could be a BIOS bug or due to table corruption.", "label": "KlogAcpiIncorrectTableChecksum" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "ACPI Warning.*_BQC returned an invalid level", "advice": "Method _BQC (Brightness Query Current) returned an invalid display brightness level.", "label": "KlogAcpiBqcReturnedInvalidLevel" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "ACPI Warning.*Could not enable fixed event", "advice": "", "label": "KlogAcpiCannotEnableFixedEvent" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "ACPI Warning.*Return type mismatch", "advice": "The ACPI Method returned an incorrect type, this should be fixed.", "label": "KlogAcpiReturnTypeMismatch" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "ACPI Warning.*Parameter count mismatch", "advice": "The ACPI Method was executing with a different number of parameters than the Method expected. This should be fixed.", "label": "KlogAcpiParameterCountMistmatch" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "ACPI Warning.*Insufficient arguments", "advice": "The ACPI Method has not enough arguments as expected. This should be fixed.", "label": "KlogAcpiInsufficientArguments" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "ACPI Warning.*Package has no elements", "advice": "The ACPI Method returned a package with no elements in it, and some were exepected.This should be fixed.", "label": "KlogAcpiPackageHasNoElements" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "ACPI Warning.*Converted Buffer to expected String", "advice": "Method returned a Buffer type instead of a String type and ACPI driver automatically converted it to a String. It is worth fixing this in the DSDT or SSDT even if the kernel fixes it at run time.", "label": "KlogAcpiConvertedBufferToString" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "ACPI Warning.*Return Package type mistmatch at index", "advice": "The ACPI Method returned a package that contained data of the incorrect data type. This data type needs fixing.", "label": "KlogAcpiReturnPackageTypeMismatch" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "ACPI Warning.*Invalid length for.*fadt", "advice": "This item in the FADT is the incorrect length. Should be corrected.", "label": "KlogAcpiFadtInvalidLength" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_INFO", "pattern": "ACPI Warning.*FADT .*revision 5.* is longer than ACPI 2.*0 version", "advice": "The kernel has not supported ACPI version 5.0, it truncated the FADT back to ACPI2.0 size and ignored the extra ACPI5.0 settings.", "label": "KlogAcpiFadtTruncatedLength" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "ACPI Warning.*Invalid throttling state", "advice": "", "label": "KlogAcpiInvalidThrottlingState" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "ACPI Warning", "advice": "ACPI AML intepreter has found some non-conforming AML code. This should be investigated and fixed.", "label": "KlogAcpiBadAmlCode" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "ACPI.*BIOS bug: multiple APIC\/MADT found, using", "advice": "The kernel has detected more than one ACPI Multiple APIC Description Table (MADT) (these tables have the \"APIC\" signature). There should only be one MADT and the kernel will by default select the first one. However, one can override this and select the Nth MADT using acpi_apic_instance=N.", "label": "KlogAcpiMultipleApicMadtFound" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_MEDIUM", "pattern": "\\[Firmware Bug\\]: ACPI.*Invalid physical address in GAR", "advice": "ACPI Generic Address is invalid", "label": "KlogAcpiInvalidPhysicalAddress" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_MEDIUM", "pattern": "\\[Firmware Bug\\]: powernow-k8.*(No PSB or ACPI _PSS objects|No compatible ACPI _PSS|Your BIOS does not provide ACPI _PSS objects)", "advice": "The _PSS object (Performance Supported States) is an optional object that indicates the number of supported processor performance states. The powernow-k8 driver source states: If you see this message, complain to BIOS manufacturer. If he tells you \"we do not support Linux\" or some similar nonsense, remember that Windows 2000 uses the same legacy mechanism that the old Linux PSB driver uses. Tell them it is broken with Windows 2000. The reference to the AMD documentation is chapter 9 in the BIOS and Kernel Developer's Guide, which is available on www.amd.com.", "label": "KlogAcpiAmdK8ExpectedPssObjects" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_MEDIUM", "pattern": "\\[Firmware Bug\\]: powernow-k8.*Try again with latest", "advice": "", "label": "KlogAcpiTryNewAmdFirmware" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_MEDIUM", "pattern": "\\[Firmware Bug\\]: ACPI.*Invalid bit width in GAR", "advice": "ACPI Generic Address width must be 8, 16, 32 or 64", "label": "KlogAcpiGarInvalidBitWidth" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_MEDIUM", "pattern": "\\[Firmware Bug\\]: ACPI.*Invalid address space type in GAR", "advice": "ACPI Generic Address space type must be system memory or system IO space.", "label": "KlogAcpiGarInvalidAddressType" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_MEDIUM", "pattern": "\\[Firmware Bug\\]: ACPI.*no secondary bus range in _CRS", "advice": "_CRS Method should return a secondary bus address for the status\/command port. The kernel is having to guess this based on the _BBN or assume it's 0x00-0xff.", "label": "KlogAcpiCrsSecondaryBusRangeMissing" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_MEDIUM", "pattern": "\\[Firmware Bug\\]: ACPI.*Invalid BIOS _PSS frequency", "advice": "_PSS (Performance Supported States) package has an incorrectly define core frequency (first DWORD entry in the _PSS package).", "label": "KlogAcpiInvalidPssFrequency" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_LOW", "pattern": "No _BQC method", "advice": "_BQC (Brightness Query Current level) seems to be missing. This method returns the current brightness level of a built-in display output device.", "label": "KlogAcpiMissingBqc" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "\\[Firmware Bug\\]: ACPI.*brightness control misses _BQC function", "advice": "_BQC (Brightness Query Current level) seems to be missing. This method returns the current brightness level of a built-in display output device.", "label": "KlogAcpiMissingBqc" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "BIOS needs update for CPU frequency support", "advice": "Having _PPC but missing frequencies (_PSS, _PCT) is a good hint that the BIOS is older than the CPU and does not know the CPU frequencies.", "label": "KlogAcpiMissingPssPct" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "\\[Firmware Bug\\]: ERST.*ERST table is invalid", "advice": "The Error Record Serialization Table (ERST) seems to be invalid. This normally indicates that the ERST table header size is too small, or the table size (excluding header) is not a multiple of the ERST entries.", "label": "KlogAcpiErstInvalid" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_CRITICAL", "pattern": "Invalid critical threshold", "advice": "ACPI _CRT (Critical Trip Point) is returning a threshold lower than zero degrees Celsius which is clearly incorrect.", "label": "KlogAcpiCrtInvalidThreshold" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_CRITICAL", "pattern": "No valid trip found", "advice": "No valid ACPI _CRT (Critical Trip Point) was found.", "label": "KlogAcpiNoValidCrt" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "_BCQ is used instead of _BQC", "advice": "ACPI Method _BCQ was defined (typo) instead of _BQC - this should be fixed.however the kernel has detected this and is working around this typo.", "label": "KlogAcpiBcqInsteadOfBqc" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_CRITICAL", "pattern": "MPTABLE: bad signature", "advice": "The MultiProcessor table has an incorrect signature, it should be PCMP. The kernel cannot trust the table and has disabled SMP support.", "label": "KlogBiosMptableBadSignature" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_CRITICAL", "pattern": "MPTABLE: checksum error", "advice": "The MultiProcessor table has an incorrect checksum. The kernel cannot trust the table and has disabled SMP support.", "label": "KlogBiosMptableChecksumError" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_CRITICAL", "pattern": "MPTABLE: bad table version", "advice": "The MultiProcessor table has an incorrect version. It should be 0x01 or 0x04 (for versions 1.1 and 1.4 respectively). The kernel cannot trust the table and has disabled SMP support.", "label": "KlogBiosMptableBadVersion" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_CRITICAL", "pattern": "MPTABLE: null local APIC address", "advice": "The MultiProcessor table contains a NULL Local APIC address but the Local APIC address must be defined. The kernel has disabled SMP support.", "label": "KlogBiosMptableNullLapicAddress" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_CRITICAL", "pattern": "MPTABLE: no processors registered", "advice": "The MultiProcessor table contains no Processor Entry Fields, and hence there are no CPUs defined. The kernel has no option but to disable SMP support.", "label": "KlogBiosMptableNoProcessors" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_CRITICAL", "pattern": "BIOS bug.*no explicit IRQ entries.*using default mptable", "advice": "The MultiProcessor table contains no IRQ Entry Fields, and hence there are no IRQs defined. The table is broken and should be fixed. The kernel will set up the low 16 IO-APIC pins to the ISA defaults in the hope the machine may work.", "label": "KlogBiosMptableNoIRQentries" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "BIOS bug.*timer not connected to IO-APIC", "advice": "The BIOS is reporting the ExtINTA I/O APIC input from the cascaded 8259A as the timer interrupt input. The kernel has detected just one pin, so it has to check the timer directly and through the 8259A because of the broken BIOS reporting.", "label": "KlogBiosTimerNotConnectedtoIoApic" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "BIOS bug,.*IO-APIC.*ID is.*in the MPC table.*", "advice": "The IO-APIC id in the MPC table is wrong and the kernel has detected this and attempted to fix it. The MPC table in the firmware needs to be fixed.", "label": "KlogBiosIoApicInMpcTable" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "BIOS bug,.*IO-APIC.*ID is already used!", "advice": "The IO-APIC id has been defined more than once in the MPC table, which is a firmware bug and should be fixed. The kernel has detected this and skopped this duplication to avoid stuck on smp_invalidate_needed IPI wait' messages.", "label": "KlogBiosIoApicIdAlreadyUsed" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_CRITICAL", "pattern": "WARNING.*BIOS bug.*CPU MTRRs don't cover all of memory, losing", "advice": "The Memory Type Range Registers (MTRRs) which define memory caching policy are misconfigued by the BIOS and don't appear to cover all available physical memory. The kernel has detected this and has reduced the amount of memory available to be safe. Either check that the BIOS memory caching options are set correctly or contact your BIOS vendor to get this fixed.", "label": "KlogBiosCpuMtrrMisconfigured" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "mtrr:.*no more MTRRs available", "advice": "A device driver has tried to allocate a Memory Type Range Register (MTRR) to optimially configure a caching policy on a memory region but there are no more free MTRRs available. Generally the firmware should allow for one or two free MTRRs for drivers to allocate. The system will have a sub-optimally configured memory region and this may severely impact on performance.", "label": "KlogBiosNoMoreMtrrsAvailable" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "[drm].*MTRR allocation failed.*Graphics performance may suffer", "advice": "The DRM driver has tried to allocate a Memory Type Range Register (MTRR) but there are no more free MTRRs available. The system will have a sub-optimally configured graphics memory region and this may severely impact on graphics rendering throughput and performance. The firmware should allow for one or two free MTRRs, but it hasn't, which is probably a firmware bug.", "label": "KlogBiosMtrrAllocationFailed" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_MEDIUM", "pattern": "mtrr:.*your BIOS has configured an incorrect mask, fixing it", "advice": "The Memory Type Range Registers (MTRRs) which define memory caching policy are misconfigued by the BIOS. In this case, the mask is incorrectly set and the kernel has detected this and worked around the firmware bug.", "label": "KlogBiosMtrrIncorrectMask" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_MEDIUM", "pattern": "mtrr:.*your CPUs had inconsistent fixed MTRR settings", "advice": "The fixed Memory Type Range Registers (MTRRs) which define memory caching policy are not consistent across all CPUs which is a firmware bug. The kernel has worked around this bug, but it may be worth getting the BIOS vendor to fix this.", "label": "KlogBiosMtrrsInconsistentAcrossCPUs" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_MEDIUM", "pattern": "mtrr:.*your CPUs had inconsistent variable MTRR settings", "advice": "The variable Memory Type Range Registers (MTRRs) which define memory caching policy are not consistent across all CPUs which is a firmware bug. The kernel has worked around this bug, but it may be worth getting the BIOS vendor to fix this.", "label": "KlogBiosMtrrsInconsistentAcrossCPUs" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_MEDIUM", "pattern": "mtrr:.*your CPUs had inconsistent MTRRdefType settings", "advice": "The Memory Type Range Registers (MTRRs) which define memory caching policy do not have a MTRRdefType consistently set across all CPUs which is a firmware bug. The kernel has worked around this bug, but it may be worth getting the BIOS vendor to fix this.", "label": "KlogBiosMtrrDefTypeIncosistent" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "mtrr:.*base.*is not 4 MiB aligned", "advice": "The Memory Type Range Registers (MTRRs) for Intel PPro CPUs with stepping < 8 must be 4 MiB aligned and not touch 0x70000000 -> 0x7003FFFF. This BIOS misconfiguration and should be fixed.", "label": "KlogBiosMtrrNot4MbAligned" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_CRITIICAL", "pattern": "mtrr:.*writable mtrr between 0x70000000 and 0x7003FFFF may hang the CPU", "advice": "The Memory Type Range Registers (MTRRs) for Intel PPro CPUs with stepping < 8 must not touch region 0x70000000 -> 0x7003FFFF. This BIOS misconfiguration may hang the CPU and should be fixed.", "label": "KlogBiosMtrrMayHangCPU" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "mtrr:.*base.*is not aligned on a size.*boundary", "advice": "The Memory Type Range Registers (MTRRs) must be correctly aligned. This BIOS misconfiguration and should be fixed.", "label": "KlogBiosMtrrNotAlignedCorrectly" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_LOW", "pattern": ".*defines _DOD but not _DOS", "advice": "ACPI Method _DOD (Enumerate all devices attached to display adapter) is defined but we should also have _DOS (Enable\/Disable output switching) defined but it's been omitted.", "label": "KlogAcpiDodWithNoDos" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "WARNING:.*bogus zero IO-APIC address found in MPTABLE", "advice": "An IO-APIC address of zero has been found in the MPTABLE and is thus treated as misconfigured or bogus. I/O APIC support has been disabled. This is considered a firmware bug and the MPTABLE needs to be fixed.", "label": "KlogAcpiBogusIoApicInMptable" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "WARNING:.*Bogus.*APIC address found in table", "advice": "An IO-APIC address of zero has been found in the MPTABLE and is thus treated as misconfigured or bogus. I/O APIC support has been disabled. This is considered a firmware bug and the MPTABLE needs to be fixed.", "label": "KlogAcpiBogusIoApicInMptable" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_MEDIUM", "pattern": "\\[Firmware Bug\\]:.*Duplicate ACPI video bus", "advice": "Try video module parameter video.allow_duplicates=1 if the current driver does't work.", "label": "KlogAcpiDuplicateAcpiVideoBus" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_MEDIUM", "pattern": "\\[Firmware Bug\\]:.*PCI.*MMCONFIG.*not reserved in ACPI motherboard resources", "advice": "It appears that PCI config space has been configured for a specific device but does not appear to be reserved by the ACPI motherboard resources.", "label": "KlogAcpiMmconfigNotReserved" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_MEDIUM", "pattern": "\\[Firmware Bug\\]: PCI.*not reserved in ACPI motherboard resources", "advice": "PCI firmware bug. Please see the kernel log for more details.", "label": "KlogPciNotReserved" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_INFO", "pattern": "\\[Firmware Bug\\]:.*_OSI.*Linux.*ignored", "advice": "This is not exactly a failure mode but a warning from the kernel. The _OSI() method has implemented a match to the 'Linux' query in the DSDT and this is redundant because the ACPI driver matches onto the Windows _OSI strings by default.", "label": "KlogAcpiOsiLinuxIgnored" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "\\[Firmware Bug\\]: ACPI:", "advice": "ACPI driver has detected an ACPI bug. This generally points to a bug in an ACPI table. Examine the kernel log for more details.", "label": "KlogAcpiFirmwareError" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_MEDIUM", "pattern": "cpu .* try to use APIC.* for vector .*, but the register is already in use for vector .* on another cpu", "advice": "The local vector table (LVT) offsets that provided by firmware have conflicts, the assignment to the same offset causes the second APIC setup failed.", "label": "KlogLVTOffsetAssignConflict" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_MEDIUM", "pattern": "cpu .* try to use APIC.* for vector .*, but the register is already in use for vector .* on this cpu" , "advice": "The local vector table (LVT) offsets that provided by firmware have conflicts, the assignment to the same offset causes the second APIC setup failed.", "label": "KlogLVTOffsetAssignConflict" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "\\[Firmware Bug\\]:.*", "advice": "The kernel has detected a Firmware bug in the BIOS or ACPI which needs investigating and fixing.", "label": "KlogAcpiFirmwareError" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_MEDIUM", "pattern": "PCI.*BIOS Bug:", "advice": "", "label": "KlogBiosBug" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "ACPI Error.*Namespace lookup failure, AE_NOT_FOUND", "advice": "The kernel has detected an error trying to execute an Method and it cannot find an object. This is indicates a bug in the DSDT or SSDT AML code.", "label": "KlogAcpiNamespaceLookupFailure" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "ACPI Error.+psparse", "advice": "The ACPI engine has failed to execute some AML. The error message above lists the method that caused this error.", "label": "KlogAcpiParseOrExecFailure" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "ACPI Error", "advice": "The kernel has most probably detected an error while executing ACPI AML. The error lists the ACPI driver module and the line number where the bug has been caught and the method that caused the error.", "label": "KlogAcpiExecFailure" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "No object was returned from", "advice": "The ACPI interpreter was requested to evaluate an ACPI namespace object and was expecting an ACPI object to be returned, but nothing was returned. This appears to be an ACPI AML bug.", "label": "KlogAcpiEvalObjNoObjReturned" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Method execution failed", "advice": "Execution of an ACPI AML method failed. This is normally a bug in the ACPI AML code", "label": "KlogAcpiExecFailure" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_CRITICAL", "pattern": "\\*\\*\\* Error.*Method execution failed.*AE_AML_METHOD_LIMIT", "advice": "ACPI method reached maximum reentrancy limit of 255 - infinite recursion in AML in DSTD or SSDT", "label": "KlogAcpiRecursionTooDeep" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_CRITICAL", "pattern": "\\*\\*\\* Error.*Method reached maximum reentrancy limit", "advice": "ACPI method has reached reentrancy limit, this is a recursion bug in the AML.", "label": "KlogAcpiRecursionTooDeep" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "Return object type is incorrect", "advice": "Return object type is not the correct type, this is an AML error in the DSDT or SSDT. See also acpi_ut_evaluate_object().", "label": "KlogAcpiReturnObjectTypeIncorrect" } ], "pm_error_warning_patterns": [ { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "PM: Failed to prepare device", "advice": "dpm_prepare() failed to prepare all non-sys devices for a system PM transition. The device should be listed in the error message.", "label": "PmFailedToPrepareDevice" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "PM: Some devices failed to power down", "advice": "dpm_suspend_noirq failed because some devices did not power down ", "label": "PmDevicesFailedToPowerDown" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "PM: Some system devices failed to power down", "advice": "sysdev_suspend failed because some system devices did not power down.", "label": "PmSystemDevicesFailedToPowerDown" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "PM: Error", "advice": "", "label": "PmError" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "PM: Some devices failed to power down", "advice": "", "label": "PmDevicesFailedToPowerDown" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_CRITICAL", "pattern": "PM: Restore failed, recovering", "advice": "A resume from hibernate failed when calling hibernation_restore()", "label": "PmResumeFromHibernateFailed" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_CRITICAL", "pattern": "PM: Resume from disk failed", "advice": "", "label": "PmResumeFromDiskFailed" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_CRITICAL", "pattern": "PM: Not enough free memory", "advice": "There was not enough physical memory to be able to generate a hibernation image before dumping it to disc.", "label": "PmNotEnoughFreeMemory" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_CRITICAL", "pattern": "PM: Memory allocation failed", "advice": "swusp_alloc() failed trying to allocate highmem and failing that non-highmem pages for the suspend image. There is probably just not enough free physical memory available.", "label": "PmMemoryAllocationFailed" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_CRITICAL", "pattern": "PM: Image mismatch", "advice": "Mismatch in kernel version, system type, kernel release version or machine id between suspended kernel and resumed kernel.", "label": "PmKernelMismatch" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_CRITICAL", "pattern": "PM: Some devices failed to power down", "advice": "", "label": "PmDevicesFailedToPowerDown" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_CRITICAL", "pattern": "PM: Some devices failed to suspend", "advice": "", "label": "PmDevicesFailedToSuspend" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_MEDIUM", "pattern": "PM: can't read", "advice": "Testing suspend cannot read RTC", "label": "PmCannotReadRealTimeClock" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_MEDIUM", "pattern": "PM: can't set", "advice": "Testing suspend cannot set RTC", "label": "PmCannotSetRealTimeClock" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "PM: suspend test failed, error", "advice": "", "label": "PmSuspendTestFailed" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "PM: can't test ", "advice": "", "label": "PmCannotTest" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_MEDIUM", "pattern": "PM: no wakealarm-capable RTC driver is ready", "advice": "", "label": "PmNoWakeAlarmRealTimeClock" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_CRITICAL", "pattern": "PM: Adding page to bio failed at", "advice": "An attempt to write the hibernate image to disk failed because a write BIO operation failed. This is usually a result of some physical hardware problem.", "label": "PmPhysicalDiskWriteError" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_CRITICAL", "pattern": "PM: Swap header not found", "advice": "An attempt to write a hibernate image to disk failed because a valid swap device header could not be found. Make sure there is a formatted swap device on the machine and it is added using swapon -a.", "label": "PmSwapHeaderNotFound" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_CRITICAL", "pattern": "PM: Cannot find swap device", "advice": "An attempt to write a hibernate image to disk failed because the swap device could not be found. Make sure there is a formatted swap device on the machine and it is added using swapon -a.", "label": "PmCannotFindSwapDevice" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_CRITICAL", "pattern": "PM: Not enough free swap", "advice": "Hibernate failed because the swap parition was probably too small.", "label": "PmNotEnoughFreeSwap" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "PM: Image device not init", "advice": "", "label": "PmImageDeviceNotInitialised" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "PM: Please power down manually", "advice": "", "label": "PMPowerDownManually" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "check_for_bios_corruption", "advice": "The BIOS seems to be corrupting the first 64K of memory when doing suspend\/resume. Setting bios_corruption_check=0 will disable this check.", "label": "PmBiosCorruptFirst64K" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "pattern": "WARNING: at.*hpet_next_event", "advice": "Possibly an Intel I\/O controller hub HPET Write Timing issue: A read transaction that immediately follows a write transaction to the HPET TIMn_COMP Timer 0 (108h), HPET MAIN_CNT (0F0h), or TIMn_CONF.bit 6 (100h) may return an incorrect value. This is known to cause issues when coming out of S3.", "label": "PmHpetWriteTimingIssue" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "pattern": "BUG: soft lockup.*stuck for 0s", "advice": "Softlock errors that occur when coming out of S3 may be tripped by TSC warping. It may be worth trying the notsc kernel parameter and repeating S3 tests to see if this solves the problem.", "label": "PmProcessSoftLockup" } ] } data/syntaxcheck.json000066400000000000000000000355011231470457100152160ustar00rootroot00000000000000{ "erroradvice": [ { "id": "ASL_MSG_FIELD_ACCESS_WIDTH", "advice": "The region needs to be at least as big as the access width." }, { "id": "ASL_MSG_FIELD_UNIT_ACCESS_WIDTH", "advice": "The field plus the access width must not go beyond the end of the region." }, { "id": "ASL_MSG_HID_SUFFIX", "advice": "The remaining characters (suffix) of the _HID string must be hexadecimal digits." }, { "id": "ASL_MSG_ISA_ADDRESS", "advice": "The fixed I/O ISA address is illegal, it is greater than 0x03ff." }, { "id": "ASL_MSG_LEADING_ASTERISK", "advice": "The leading character of the string is an asterisk '*'. This is used by some platform manufacturers. While this is allowed for a _CID, the compiler complains about this since a valid use of this has never been seen." }, { "id": "ASL_MSG_LIST_LENGTH_LONG", "advice": "The package length is smaller than the length of the initializer list." }, { "id": "ASL_MSG_LOCAL_INIT", "advice": "A local variable to a method has not been initialized. This is a bug and can lead to undefined execution behaviour." }, { "id": "ASL_MSG_NAME_EXISTS", "advice": "The name already exists in this scope. The compiler will continue to process it." }, { "id": "ASL_MSG_NO_REGION", "advice": "_REG requires a corresponding Operation Region, however one was not found." }, { "id": "ASL_MSG_NOT_FOUND", "advice": "The name referenced by Scope() should exist, but does not; forward references for Scope() are not supported by the Microsoft Windows ACPI interpreter." }, { "id": "ASL_MSG_NOT_METHOD", "advice": "The node type is not a method, so it cannot be invoked." }, { "id": "ASL_MSG_NOT_REACHABLE", "advice": "The name exists in the name space, but not it could not be accessed from the scope." }, { "id": "ASL_MSG_RESERVED_METHOD", "advice": "The reserved method must be a control method, this occurs for example for the _Lxx, _Exx, _Wxx or _Qxx methods, or for a predefined name that requires input arguments, or no return value from prefefined names such as _DIS, _INI, _IRC, _OFF, _ON, _PSx." }, { "id": "ASL_MSG_RESERVED_OPERAND_TYPE", "advice": "The object type for the reserved name does not match the expected type." }, { "id": "ASL_MSG_SCOPE_FWD_REF", "advice": "The Microsoft ACPI interpreter cannot handle a forward reference from the Scope() operator, so the compiler flags this up as an error." }, { "id": "ASL_MSG_TAG_LARGER", "advice": "The resource tag length is larger than the field length." }, { "id": "ASL_MSG_TAG_SMALLER", "advice": "The resource tag length is smaller than the field length." }, { "id": "ASL_MSG_UNKNOWN_RESERVED_NAME", "advice": "The name does not match any of the known predefined names. Names that start with an underscore '_' are reserved by the ACPI specification and so this name should be one of these known names." }, { "id": "ASL_MSG_UNREACHABLE_CODE", "advice": "This occurs when there is some code following a Return() - this code is unreachable code, it cannot be executed, so it is most probably a bug." }, { "id": "ASL_MSG_NOT_EXIST", "advice": "The referenced object could not be found during a name space lookup, it does not seem to exist." }, { "id": "ASL_MSG_CORE_EXCEPTION", "advice": "An internel compiler core execption error has occurred performing a name space lookuop." }, { "id": "ASL_MSG_DEBUG_FILE_OPEN", "advice": "The compiler could not open a debug file for output." }, { "id": "ASL_MSG_DEBUG_FILENAME", "advice": "A debug filename could not be generated by the compiler." }, { "id": "ASL_MSG_DEPENDENT_NESTING", "advice": "A resource descriptor nesting error has occurred." }, { "id": "ASL_MSG_DUPLICATE_CASE", "advice": "A case value has already been specified." }, { "id": "ASL_MSG_EARLY_EOF", "advice": "The End-Of-File was reached prematurely." }, { "id": "ASL_MSG_CONSTANT_FOLDED", "advice": "The compiler has performed a constant folding optimization." }, { "id": "ASL_MSG_CONSTANT_EVALUATION", "advice": "Failed to evaluate a constant expression, the compiler could not resolve a subtree for some unknown reason." }, { "id": "ASL_MSG_CONNECTION_MISSING", "advice": "The compiler was parsing a FieldUnitList and was expecting a Connection() operator but instead found a NameSeg() opcode." }, { "id": "ASL_MSG_CONNECTION_INVALID", "advice": "A Connection() operator is only valid for the GeneralPurposeIo and GenericSerialBus operation region SpaceIds." }, { "id": "ASL_MSG_CLOSE", "advice": "An error occurred closing a file in the ASL compiler, this is a system error and should not normally occur." }, { "id": "ASL_MSG_COMPILER_INTERNAL", "advice": "An error occurred inside the compiler." }, { "id": "ASL_MSG_COMPILER_RESERVED", "advice": "This normally occurs when disassembled code is being compiled and it contains compiler-emitted names of the form '_T_x'. This is just a remark generated by the compiler and can normally be ignored." }, { "id": "ASL_MSG_RETURN_TYPES", "advice": "Some of the execution paths do not return a value. All control paths that return must return a value otherwise unexpected behaviour may occur. This error occurs because a branch on an conditional op-code returns a value and another does not, which is inconsistent behaviour." }, { "id": "ASL_MSG_RESERVED_RETURN_VALUE", "advice": "A reserved method was expected to return a value, however, it does not. This is unexpected behaviour that does not conform the the ACPI specification." }, { "id": "ASL_MSG_INVALID_TYPE", "advice": "An invalid type was used. A different type was expected to be used.", }, { "id": "ASL_MSG_RESERVED_NO_RETURN_VAL", "advice": "A reserved method returned a value however it is not expected to return anything, so this does not conform to the expected behaviour. The kernel will most probably ignore the return value, so this is not going to produce any run time errors." }, { "id": "ASL_MSG_ALIGNMENT", "advice": "Addresses must be an exact multiple of the alignment value." }, { "id": "ASL_MSG_ALPHANUMERIC_STRING", "advice": "For _HID (Hardware object IDs), the ACPI specification requires all characters must be alphanumeric. Section 6.1.4 of the specification states that a valid PNP ID must be of the form AAA#### (where A is an uppercase letter and # is a hex digit) and a valid ACPI ID must be of the form ACPI#### where # is a hex digit." }, { "id": "ASL_MSG_AML_NOT_IMPLEMENTED", "advice": "This error message should not occur." }, { "id": "ASL_MSG_ARG_COUNT_HI", "advice": "Method is called with too many arguments. This is a bug and can lead to unexpected and undefined behaviour." }, { "id": "ASL_MSG_ARG_COUNT_LO", "advice": "Method is called with too few arguments. This is a bug and can lead to unexpected and undefined behaviour." }, { "id": "ASL_MSG_ARG_INIT", "advice": "A reference argument has not been initialized." }, { "id": "ASL_MSG_BACKWARDS_OFFSET", "advice": "Backwards offsets in fields are illegal and this is a bug in the AML. The iasl compiler will ignore this node completely." }, { "id": "ASL_MSG_BUFFER_LENGTH", "advice": "The AML buffer length was zero and contained no items. This is most probably a mistake - but the compiler has gone ahead and compiled this in as a zero sized buffer anyway." }, { "id": "ASL_MSG_DMA_CHANNEL", "advice": "DMA channels are described by an 8 bit mask, hence there can only be 8 channels 0..7. See the ACPI specification, section 6.4.2.2, DMA Descriptor for more details." }, { "id": "ASL_MSG_DMA_LIST", "advice": "Only a maximum of 8 DMA channels can be specified in a list." }, { "id": "ASL_MSG_DUPLICATE_ITEM", "advice": "An initializer list has duplicate items, which is illegal." }, { "id": "ASL_MSG_HID_LENGTH", "advice": " _HID String must be of the form XXX#### or ACPI####." }, { "id": "ASL_MSG_INTEGER_LENGTH", "advice": "A 64 bit integer has been truncated down to a 32 bit value. This could lead to unexpected behaviour due to loss of data through truncation." }, { "id": "ASL_MSG_INTERRUPT_NUMBER", "advice": "Only interrupts 0..15 are allowed as the IRQ mask is just 16 bits wide." }, { "id": "ASL_MSG_INVALID_ADDR_FLAGS", "advice": "This occurs if the length is zero and just one of the resource MIF/MAF flags are set, or the length is non-zero and resource MIF/MAF flags are both set. These are illegal combinations and need to be fixed. See section 6.4.3.5 Address Space Resource Descriptors of the ACPI specification for more details." }, { "id": "ASL_MSG_INVALID_EISAID", "advice": "The EISAID string must be exactly 7 characters and of the form UUUXXXX, 3 uppercase letters and 4 hex digits (e.g., 'PNP0001'). See section 18.5.35 'EISAID (EISA ID String To Integer Conversion Macro)' of the ACPI specification for more details." }, { "id": "ASL_MSG_INVALID_GRANULARITY", "advice": "This occurs if the specified granularity is non-zero and not a power-of-two minus one in value." }, { "id": "ASL_MSG_INVALID_LENGTH", "advice": "This needs to be fixed as the length specified is greater than the window size specified by the Min/Max fields - this is clealy ambiguous." }, { "id": "ASL_MSG_INVALID_LENGTH_FIXED", "advice": "The minimum address is greater than the maximum address. This is illegal." }, { "id": "ASL_MSG_INVALID_MIN_MAX", "advice": "The minimum, maximum addresses and length must be a multiple of the alignment, which must be a power of 2." }, { "id": "ASL_MSG_INVALID_PERFORMANCE", "advice": "Performance/Robustness value in StartDependentFn declaration was > 2. It must be one of: 0 = Good, 1 = Acceptable, 2 = Sub-optimal. See section 18.5.111 of the ACPI specification for more information." }, { "id": "ASL_MSG_INVALID_PRIORITY", "advice": "Priority in StartDependentFn declaration was > 2. It must be one of: 0 = Good, 1 = Acceptable, 2 = Sub-optimal. See section 18.5.111 of the ACPI specification for more information." }, { "id": "ASL_MSG_INVALID_TIME", "advice": "Illegal stall time (>255). Generally, stall times > 100 microseconds must use sleep() instead. See section 18.5.110 Stall (Stall for a Short Time) of the ACPI specification." }, { "id": "ASL_MSG_NAMED_OBJECT_IN_WHILE", "advice": "A named object cannot be created inside a while loop. This needs to be fixed." }, { "id": "ASL_MSG_NO_RETVAL", "advice": "The called method did not return a value, which was unexpected. This is a bug and will lead to undefined behaviour during execution." }, { "id": "ASL_MSG_NULL_DESCRIPTOR", "advice": "A 'null descriptor' (where most fields are set to zero) has been found. Usually, these are updated or completed at run time using BufferFields, but to do so one requires a resource tag and this descriptor does not have one, hence it cannot be referenced to allow it to be updated. This is most probably a bug and needs to be fixed." }, { "id": "ASL_MSG_REGION_BUFFER_ACCESS", "advice": "SMBUS and IPMI regions require BufferAcc access. This error occurs when the incorrect access type is used on a region." }, { "id": "ASL_MSG_REGION_BYTE_ACCESS", "advice": "Embedded Controller (EC) and CMOS regions can only be accessed using ByteAcc access." }, { "id": "ASL_MSG_RESERVED_ARG_COUNT_HI", "advice": "Reserved method is called with too many arguments. This is a bug and can lead to unexpected and undefined behaviour." }, { "id": "ASL_MSG_RESERVED_ARG_COUNT_LO", "advice": "Method is called with too few arguments. This is a bug and can lead to unexpected and undefined behaviour." }, { "id": "ASL_MSG_RESULT_NOT_USED", "advice": "The result from an operation is not used. This is probably not intended and could be a bug and should be checked." }, { "id": "ASL_MSG_SERIALIZED", "advice": "A method needs to be marked Serialized because of the wat Switch() has been implemented (multiple threads cannot execute the method concurrently since local temporary names need to be created which could lead to race condtions). This should be explicity specified in the original code to avoid potential run time race conditions." }, { "id": "ASL_MSG_SOME_NO_RETVAL", "advice": "Method sometimes return a value, sometimes it does not. This is inconsistent behaviour and a bug in the AML. This needs to be fixed to avoid incorrect behaviour at run time." }, { "id": "ASL_MSG_SYNC_LEVEL", "advice": "Data mutex synchronization level is too large, should be 0..15. See section 18.5.79 Mutex (Declare Synchronization/Mutex Object) of the ACPI specification for more details." }, { "id": "ASL_MSG_SYNTAX", "advice": "The disassembled code cannot be reassembled using the strict IASL compiler as it contains syntax errors." }, { "id": "ASL_MSG_TABLE_SIGNATURE", "advice": "Table signature must be 4 characters long and must contain alphanumeric characters." }, { "id": "ASL_MSG_TIMEOUT", "advice": "The operation can possibly timeout, and hence the return value indicates an timeout error. However, because the return value is not checked this very probably indicates that the code is buggy. A possible scenario is that a mutex times out and the code attempts to access data in a critical region when it should not. This will lead to undefined behaviour. This should be fixed." }, { "id": "ASL_MSG_UPPER_CASE", "advice": "Characters in literal string that are not hexadecimal letters must be upper case." }, { "id": "ASL_MSG_RECURSION", "advice": "Internal IASL Node recursion detected." }, { "id": "ASL_MSG_LOCAL_OUTSIDE_METHOD", "advice": "A local variable was used outside of a control method, or there is an error in the method declaration." }, { "id": "ASL_MSG_NOT_PARAMETER", "advice": "Argument to the method is not a real argument." }, { "id": "ASL_MSG_SERIALIZED_REQUIRED", "advice": "A named object is created inside a non-serialized method - this method should be serialized. It is possible that one thread enters the method and blocks and then a second thread also executes the method, ending up in two attempts to create the object and causing a failure." }, { "id": "ASL_MSG_TRUNCATION", "advice": "A truncation on a integer value has occurred. For example, a 32 bit value for a 16 bit timeout has been used." }, { "id": "ASL_MSG_LIST_LENGTH_SHORT", "advice": "The provided data is actually shorter than the specified length, for example in an ACPI buffer containing vendor data." }, { "id": "ASL_MSG_PACKAGE_LENGTH", "advice": "The package is larger than expected, hence wasting some space." }, { "id": "ASL_MSG_RESERVED_PACKAGE_LENGTH", "advice": "The package is smaller than required." } ] } debian/000077500000000000000000000000001231470457100123045ustar00rootroot00000000000000debian/changelog000066400000000000000000003374021231470457100141670ustar00rootroot00000000000000fwts (14.03.01-0ubuntu2) trusty; urgency=low [Alex Hung] * klog: ACPI does not specify _BQC as a mandatory method * s3: add a "s3-hybrid" option to enable hybrid sleep for s3 (LP: #1295146) * fwts-test: klog: updates for _BQC changes in 76c3ffd814cc882564f680b16f2c2d314ae58b07 * fwts-test: arg-help-0001: updates tests for new --s3-hybrid option * fwts-test: arg-help-0001: fix test-0002.sh incorrectly uses arg-help-0001.log * doc: add --s3-hybrid man page entry [Colin Ian King] * acpi: wmi: add some newer UUIDs that are supported by linux (LP: #1292515) * fwts_hwinfo: don't compare network addresses (LP: #1293297) * acpi: acpidump: fix dump offsets in various table dumps (LP: #1293613) * fwts-test: re-sync with fwts fix to acpidump * lib: fwts_alloc: fix low 32 bit memory allocator (LP: #1295849) * fwts-test: arg-help-0001: don't check the version field * fwts-test: wmi-0001: update test to sync with WMI changes in fwts * fwts-test: arg-log-format-0001: fix aarch64 failures * acpi: method: add more advice for failed _PTS, _TTS and _WAK (LP: #1296737) * lib: fwts_acpi_object_eval: report better advice on exec failure (LP: #1296710) * acpi: method: fix _ACx test (LP: #1297323) * fwts-test: keep method-0001 test in sync with changes in fwts method * acpica: update to version 20140325 (LP: #1297531) * fwts-test: update ACPICA related tests due to ACPICA updates [Keng-Yu Lin] * debian: skip fwts-test on arm64 [Matt Fleming] * lib: fwts_log: Add missing log field flags -- Ivan Hu Thu, 27 Mar 2014 10:09:59 +0800 fwts (14.03.00-0ubuntu1) trusty; urgency=low [Colin Ian King] * acpi: fwts_acpi_tables: fix up missing FACS (LP: #1284097) * acpi: acpidump: provide table provenance (LP: #1284205) * apci: acpiinfo: enable for non-x86 arches (LP: #1284557) * Add utility to dump _PLD (Physical Device Location) information (LP: #1281835) * acpi: add in a tool to dump GPE information (LP: #1283473) * lib: fwts_acpi_tables: handle zero 64 bit addrs in FADT (LP: #1285167) * bios: hda_audio: skip the test if audio devices don't exist (LP: #1285571) * Remove copy-acpica.sh script, it is no longer used * acpi: checksum: print RSDP checksum correctly (LP: #1287815) * lib: fwts_acpi_tables: update RSDP checksum on fixed-up RSDP (LP: #1287852) * acpi: acpitables: remove irrelevant test case (LP: #1287891) * uefi: uefidump: small re-working of uefi GUID lookup * fwts-test: update acpidump-0001 * fwts-test: acpitables-0002: sync with recent table fixing * fwts-test: syntaxcheck-0001: update to sync with fwts * fwts-test: arg-show-tests-0001: keep in sync with fwts * fwts-test: arg-show-tests-full-0001: keep in sync with fwts * fwts-test: checksum-0001: update due to fwts formatting fixes * fwts-test: arg-table-path-0001: sync with fwts changes * fwts-test: acpitables-0003: update to sync with fwts * fwts-test: acpitables-0004: update test * fwts-test: acpitables-0005: update test * fwts-test: acpitables-0006: update test * fwts-test: acpitables-0007: update test * fwts-test: acpitables-0008: update test * fwts-test: skip some tests on non-x86 builds * fwts-test: fix tests not to compare against date (LP: #1289225) * fwts-test: arg-help-0001: fix up some tests issues * fwts-test: arg-log-format-0001: make test less pedandic on line numbers * fwts-test: arg-show-progress-dialog: remove version from test * acpica: ppc64el needs to be built as a 64 bit architecture * debian: limit architectures to i386 amd64 armel armhf arm64 ppc64 ppc64el [Keng-Yu Lin] * fwts-test: Copy all files from fwts-test git tree (LP: #1201250) * lib: Make --disassemble-aml accept the outputdir argument (LP: #1201250) * fwts-test: Update disassemble-0001 test (LP: #1201250) * fwts-test: Update the test scripts for new test environment (LP: #1201250) * lib: fwts_args: determine tty width from stdin * fwts-test: disassemble-0001: rename *.orig to *.original -- Ivan Hu Mon, 17 Mar 2014 15:13:44 +0800 fwts (14.02.00-0ubuntu0) trusty; urgency=low [Colin Ian King] * acpi: method: fix ppc64el build failure (LP: #1272265) * acpi: acpidump: handle invalid MADT table data (LP: #1278422) * cpu: cpufreq: tidy code, show advice when cpu scaling unavailable (LP: #1267959) * lib: fwts_release: call lsb_release rather than parsing raw data (LP: #1266823) * ACPICA: update to version 20140214. (LP: #1281096) * lib: fwts_acpi_tables: fix parsing of empty data (LP: #1281197) [Ivan Hu] * data: klog.json: lower the level of the failure when the _S1 and _S2 not implemented (LP: #1279714) -- Alex Hung Wed, 19 Feb 2014 11:48:01 +0800 fwts (14.01.01-0ubuntu0) trusty; urgency=low [Alex Hung] * auto-packager: mkpackage.sh: add trusty * debian: add dependency lts-saucy to fwts-efi-runtime-dkms [Colin Ian King] * fwts: add subdir-objects as required now by automake 1.14 (LP: #1268685) * ACPICA: update to version 20140114 (LP: #1269423) * fwts_log.h: remove LOG_TAG, fix up following bitfields (LP: #1269076) * updated automake files for libjson-c (LP: #1268005) * lib: fwts_framework: fix --stdout-summary output (LP: #1252186) * Allow for RSDP that is not 16 byte aligned (LP: #1271522) * fwts_exec: fix status check (LP: #1271607) -- Alex Hung Fri, 24 Jan 2014 10:54:58 +0800 fwts (14.01.00-0ubuntu1) trusty; urgency=low [Alex Hung] * dmi: change max value of "Upgrade" field" from 0x2a to 0x2c (LP: #1263634) [Colin Ian King] * cpu: microcode: test should skip if no microcound found (LP: #1259900) * acpi: acpidump: add SPCR table (LP: #1260351) * acpi: acpidump: add DBGP table (LP: #1260353) * acpi: acpidump: add DBG2 table (LP: #1260356) * Enable ACPI table dumping for non-x86 systems (LP: #1260470) * Allow RSDP to be provided manually or scan for it in klog (LP: #1260400) * Dump ACPI table addresses with correct address length (LP: #1260482) * ACPICA: update to version 20131218 (LP: #1262348) * acpi: acpidump: dump out table descriptions (LP: #1261483) * acpi: acpidump: Add MCHI table (LP: #1261484) * fwts: remove launchpad tagging from fwts * doc: remove tag options --lp-tags and --lp-tags-log * data: klog.json: remove redundant tags from database * lib: klog: add fwts_klog_find_changes to compare klogs (LP: #1262208) * acpi: s3: do kernel log comparisons without destroying klog (LP: #1262208) * acpi: s4: do kernel log comparisons without destroying klog (LP: #1262208) * lib: add fwts_exec() helper function * fwts: use fwts_exec rather than fwts_pipe_exec * acpi: crsdump: fix large resource length calculation (LP: #1255793) * acpi: crsdump, prsdump: add support for _PRS dumping (LP: #1265827) * fwts: all: update copyright year to 2014 * fwts: debian: update copyright dates * fwts: doc: update dates, some of these are way too old * dmi: dmicheck: add more checks for invalid DMI fields (LP: #1262236) * data: klog: sync up with 3.13 kernel (LP: #1266786) * fwts: attempt to make fwts less Ubuntu specific, (LP: #1246653) * fwts: fix common realloc() memory leak anti-pattern (LP: #1267193) * acpi: s3: remove redundant variable * bios: pciirq: fix printf format and tidy some variable scopes * acpi: powerbutton: ensure we don't get scanf buffer overflow * cpu: cpufreq: use correct printf format specifiers [IvanHu] * lib: fwts_uefi header add attribure packed for struct typedef * uefi: uefidump: add the Media Protocol subtype-5 support on media device path type for uefidump (LP: #1260147) * uefi: uefidump: add the PIWG Firmware File subtype-6 support on media device path type for uefidump (LP: #1260147) * uefi: uefidump: add the PIWG Firmware Volume subtype-7 support on media device path type for uefidump (LP: #1260147) * uefi: uefidump: extend the Messaging Device Path type Vedor subtype-10 (LP: #1262095) -- Alex Hung Tue, 14 Jan 2014 16:13:37 +0800 fwts (13.12.00-0ubuntu1) trusty; urgency=low [Alex Hung] * data: klog.json: set _DOS error to low as kernel workarounds it (LP: #1250764) * acpi: method: add _PIC control method test (LP: #1252997) * acpi: method: move commented _CWS to correct section * acpi: method: add _IFT and _SRV control method tests (LP: #1255915) * acpi: method: remove resource descriptor field "_INT" from method/object list [Colin Ian King] * lib: fwts_hwinfo.c: Fix strict aliasing build failure on Lucid (LP: #1251587) * ACPICA: update to version 20131115 * data: klog.json: thermal overrun messages should be checked on klog test (LP: #1253146) * data: klog.json: fix two spelling mistakes * acpi: method: fix spelling mistake in comment * cpu: cpufreq: check CPU freq max limits (LP: #1253047) * cpu: maxfreq: report maxfreq and tidy up the test (LP: #1253658) * cpu: msr: tidy up output and tidy up source (LP: #1253684) * cpu: msr: Add Ivybridge and Haswell MSRs (LP: #1254066) * cpu: msr: remove the need for shift in tables, tidy up tables * lib: fwts_guid: consitify and minor tidy up * lib: fwts_acpi: constify fwts_acpi_fadt_preferred_pm_profile * acpi: acpidump: constify tables and func args, tidy up source * hpet: hpet_check: skip test3 if HPET address was not found (LP: #1257825) * acpi: autobrightness: make error reporting far less verbose (LP: #1257782) * doc: fix --s3-sleep-delay man page entry * lib: remove fwts_virt, it contains code that is not used (LP: #1259655) [Ivan Hu] * uefi: uefidump: add more subtype support on acpi device path type for uefidump (LP: #1253000) * uefi: uefidump: dealing with the End of Hardware Device Path sub-type 0x01 (LP: #1253906) * uefi: uefidump: add the Fibre Channel Ex subtype-21 support on messaging device path type for uefidump (LP: #1255387) * uefi: uefidump: add the SATA subtype-18 support on messaging device path type for uefidump (LP: #1255387) * uefi: uefidump: add the USB WWID subtype-16 support on messaging device path type for uefidump (LP: #1255387) * uefi: uefidump: add the VLAN subtype-20 support on messaging device path type for uefidump(LP: #1255387) * uefi: uefidump: add the Device Logical Unit subtype-17 support on messaging device path type for uefidump(LP: #1255387) * uefi: uefidump: add the SAS Ex subtype-22 support on messaging device path type for uefidump(LP: #1255387) * uefi: uefidump: add the iSCSI subtype-19 support on messaging device path type for uefidump(LP: #1255387) * uefi: uefidump: add the NVM Express namespace subtype-23 support on messaging device path type for uefidump (LP: #1255387) * lib: fwts_acpi_table: multi-FADT table support fimware make sure the table from XSDT be checked first. (LP: #1258378) -- Keng-Yu Lin Wed, 11 Dec 2013 14:09:00 +0800 fwts (13.11.00-0ubuntu1) trusty; urgency=low [Alex Hung] * acpi: method: correct alphabetical order in comments to sync with acpi spec * acpi: method: add missing names to acpi-method list * acpi: method: add _CBA control method test (LP: #1249171) * acpi: method: add _CDM control method test (LP: #1249172) * acpi: method: add _CID control method test (LP: #1249174) * acpi: method: add _GAI control method test (LP: #1249894) * acpi: method: add _MSG control method test (LP: #1249939) * acpi: method: add _PMM control method test (LP: #1249941) * acpi: method: add _UPD and _UPP control method tests (LP: #1251168) [Colin Ian King] * lib: framework: report warning[s] correctly (LP:#1223736) * lib: update copyright year. (LP: #1226590) * acpi: mcfg: Parse /sys/bus/pci rather than using lspci (LP: #1226615) * syntaxcheck: report IASL compiler remarks as low failures (LP: #1200606) * acpi: fadt: sanity check reset register settings (LP: #1230394) * ACPICA: update to version 20130927. * iasl: capture output from stderr to catch iasl fatal errors * pci: aspm: remove the need to run and parse lspci output (LP: #1227853) * lib: fwts_klog: Add ability to write message to kernel log * acpi: s3: add timings report for suspend/resume (LP: #1241638) * acpi: s3: add --s3-suspend-time and --s3-resume-time (LP: #1241638) * lib: add new PCI definitions * pci: aspm: use new fwts PCI defintions * pci: maxreadreq: don't use lspci to get PCI specific data (LP: #1244676) * uefi: uefidump: add more checks to avoid buffer overruns (LP: #1239641) * bios: mtrr: don't use lspci to get PCI specific data (LP: #1244673) * wakealarm: use ioctl() interface as this more of a generic interface (LP: #1244184) * Tests: replace "check" with "test" in test name headings (LP: #1246650) * data: klog.json: Sync up with latest kernel 3.12 (LP: #1248499) * lib: Add PCI helper to return description of a device * lib: fwts_hwinfo: don't use external utils for H/W checks (LP: #1246646) * debian: control: remove some unrequired suggests * acpi: brightness: use /sys/class/backlight interface (LP: #1250517) * acpi: brightness: break up brightness test (LP: #1250429) * acpi: syntaxcheck: non-x86 may have ACPI support (LP: #1251293) * acpi: method: Change "Check" to "Test", (LP: #1246650) [Ivan Hu] * uefi: uefidump: fix the boot load option Boot#### larger than Boot1000 doesn't be parsered (LP: #1225850) * uefi: uefidump: Add support for DriverOrder (LP: #1237263) * uefi: uefidump: add support for Driver#### (LP: #1237263) * uefidump: add support for Key#### (LP: #1237263) * uefi: uefidump: add support for db, dbx, dbt... variables scan (LP: #1247749) * uefi: uefidump: compare the SignarureType GUID and print out type for signature database parser (LP: #1247749) * uefi: uefidump: add support for KEK, KEKDefault, PK, PKDefault global variables scan (LP: #1247749) [Keng-Yu Lin] * Force to use automake1.11 to prevent FTBFS in Trusy (LP: #1250340) -- Keng-Yu Lin Fri, 15 Nov 2013 14:11:00 +0800 fwts (13.09.01-0ubuntu1) saucy; urgency=low [Alex Hung] * live-image/fwts-frontend-text: add uefi tests to fwts-live (LP: #1223793) [Keng-Yu Lin] * efi_runtime: fix the broken kernel vermagic when upgrading the kernel pacakge (LP: #1223801) -- Keng-Yu Lin Tue, 17 Sep 2013 15:27:31 +0800 fwts (13.09.00-0ubuntu1) saucy; urgency=low [Colin Ian King] * lib/fwts_uefi.c: fix time-of-use race on open/stat (LP: #1209251) * lib: fwts_cpu.c: fix time-of-use race on stat/open (LP: #1209225) * lib: fwts_dump: remove the redundant path in fwts_dump_info (LP: #1216344) * data: klog.json: Add some more ACPI related kernel error messages (LP: #1219006) * fwts: framework: Add missing closed parenthesis for -U option (LP: #1219576) [Ivan Hu] * UEFI: move the UEFI tests into the UEFI category (LP:#1207200) * uefi: uefidump: Add support for HwErrRecSupport * uefi: uefidump: Add support for OsIndicationsSupported * uefi: uefidump: Add support for VendorKeys [Naresh Bhat] * ACPICA:enable 64bit build for aarch64 architecture -- Keng-Yu Lin Tue, 10 Sep 2013 17:33:17 +0800 fwts (13.08.00-0ubuntu1) saucy; urgency=low [Alex Hung] * dmi: dmi_decode: merge smbios test as they both check dmi/smbios * dmi: rename dmi_decode test to dmicheck [Colin Ian King] * uefi: uefirtvariable: minor cleanup of failure message * uefi: uefirtvariable: add options to specify iterations in variable stress tests (LP: #1197742) * efi_runtime: Fix efi_runtime build warnings (LP: #1198168) * efi_runtime: ensure it always builds for kernels > 3.0.0 (LP: #1198168) * efi_runtime: memset the entire structure (LP: #1198236) * lib: add acpica mode types * lib: framework: add new acpica mode flags * lib: acpica: set various ACPICA global mode flags depending on acpica_mode * lib: fwts_framework: add support for new --acpica option * acpi: method: handle ACPICA slack mode gracefully * doc: add --acpica option to man page * acpi: syntaxcheck: use ASL_MESSAGE_TYPES instead of #defining them (LP: #1200568) * acpi: syntaxcheck: ensure error message strings are in sync with error (LP: #1200568) * lib: fwts_log: set non-TTY log with to 80 characters (LP: #1200592) * acpi: syntaxcheck: fix spelling mistake (LP: #1200602) * fwts_iasl_interface.c: ensure we read in all of stdout (LP: #1200426) * data: klog.json: rename "Common" label prefix to "Klog", (LP: #1201311) * data: klog.json: Update patterns to keep in sync with Linux 3.10 (LP: #1201335) * bios: hdaaudio: skip the test if no BIOS pin config found (LP: #1201903) * pci: aspm: test should skip if it can't read FACP or PCIe config (LP: #1201909) * docs: remove legacy notes created during early fwts development * smatchify.sh: fix spelling mistake * bios: mtrr: fix spelling mistake * acpica: Makefile.am: fix spelling mistake * data: syntaxcheck.json: fix spelling mistakes * data: klog.json: fix spelling mistakes * docs: fwts.1: fix spelling mistake * doc: fwts-frontend-text.1: fix spelling mistake * ACPICA: update to version 20130725 (LP: #1205203) * acpi: syntaxcheck: strcpy should be replaced with strncpy (LP: #1205215) * acpi: method: check for NULL buf before dereferencing it (LP: #1205267) * lib: fwts_alloc: use plain old mmap on 32 bit machines (LP: #1204065) * ACPICA BZ 1035 fixes segfault with too many ^^^^^^ prefixes. (LP: #1205714) * lib: fwts_log_json: check sting from json is not null (LP: #1206285) * acpi: acpidump: fix segfault on BERT entries (LP: #1206643) * data: klog.json: Add some firmware related kernel warnings (LP: #1206958) * utils: kernelscan: also scan for warning messages (LP: #1206953) * lib: fwts_log_json: enable json human readable formatting (LP: #1206290) [Zhang Rui] * update README_ACPICA to reflect the real ACPICA repo -- Keng-Yu Lin Wed, 07 Aug 2013 10:27:51 +0800 fwts (13.07.00-0ubuntu1) saucy; urgency=low [Alex Hung] * data: klog.json: remove duplicated patterns [Colin Ian King] * data: klog.json: Add some more advice for the now common lpc_ich warnings * apci: acpidump: fix segfault when dumping ASF! tables (LP: #1188209) * acpica: fwts_acpica: some cosmetic tidying up. * acpica: fwts_acpica: no need to check for null ptr on fwts_low_free * lib: acpica + fwts_framework: add --acpica-debug option * cpu: cpufreq: re-phrase P-state coordination message * cpu: cpufreq: remove the time to run from the description * Makefile.am: move apicedge test to keep tests in alpabetical order * bios: smbios: minor re-structure of test1 * klog: move from acpi to kernel directory * bios: mpdump: fix indexing outside of mpdump_sys_addr_type array * lib, acpi, hotkey: remove redundant null checks before free() * bios: smbios: add more sanity checks to SMBIOS information * lib: fix assembly/disassembly segfault when AcpiOsVprintf is calle (LP: #1195209) * ACPICA: update to version 20130626 * acpica: nspredef: fix null pointer dereference issue (LP: #1195251) * lib: fwts_framework: remove fwts_framework_setting * lib: fwts_framework: minor tidy up of code * lib: fwts_framework: remove some old and redundant #defines * fwts_iasl_interface.c: allocate temp buffers required for IASL (LP: #1196463) [Ivan Hu] * uefivarinfo: add the utility to show the NVRam and variable info [Keng-Yu Lin] * update_version.sh: use non-localised date representation -- Keng-Yu Lin Wed, 03 Jul 2013 11:07:03 +0800 fwts (13.06.00-0ubuntu1) saucy; urgency=low [Alex Hung] * bios: mtrr: add uncached string for DEFAULT type * pci: maxreadreq: Audio device to chipset devices. * data: klog.json: remove a redudent line break [Colin Ian King] * debian: control: fix typo * lib: fwts_uefi: make vars work on recent kernels (LP: #1171617) * cpufreq: use qsort to sort frequencies * lib: fwts_uefi: cast to __SWORD_TYPE 32 bit builds * apic: apicedge: minor code tidy-up * cmos: cmosdump: remove unused commented out code * cmos: cmosdump: minor code tidy up, formatting * cpu: maxfreq: remove unused fwts_cpuinfo typedef * cpu: maxfreq: use number of cpus as number of items in calloc() * cpu: maxfreq: use doubles for cpu freqs rather than int * doc/fwts.1 add in names of contributors to fwts * copy-acpica.sh: update to use the correct ACPICA git repo * uefi: uefidump: don't recurse forever on zero lengths (LP: #1174947) * acpica: update to ACPICA version 20130418. * cpu: cpufreq: fix leak of file if fgets returns NULL * cpu: cpufreq: fix leak of dir before we return * cpu: maxfreq: fix leak of cpuinfo * lib: fwts_microcode: fix leak of allocated microcode buffer * lib: fwts_memorymap: free klog on error * lib: fwts_keymap: free keymap_list on error * lib: fwts_cpu: free cpu on error * hotkey: close fd on error * cpu: nx: free fwts_nx_cpuinfo on error * bios: mtrr: free mtrr_list on file open error * cpu: maxfreq: free cpufreq on error * acpi: dmar: free klog list on error * acpi: fan: fix resource leak bugs * acpi: lid: free gpe resources on error * acpi: s3: free quirks and command resources * acpi: s3power: free quirks and command resources * lib: fwts_cpu: initialize variable, stop coverity warning * lib: fwts_uefi: fix check of empty d_name * lib: fwts_uefi: only close fp if it was successfully opened * lib: fwts_memorymap: handle the case where str maybe NULL * cpu: cpufreq: avoid division by zero * uefi: uefidump: fix missing break in switch statement * uefi: uefidump: missing va_end on str == NULL return path * dmi: dmi_decode: remove redundant snprintf * acpi: cstates: set state->present[nr] if nr < MAX_CSTATE * utilities: kernelscan: fix memory leak * lib: fwts_dump: check error return on mkdir * lib: fwts_acpid: check fcntl return rather than assuming it works * hotkey: check lstat() return value rather * acpi: ac_adapter: initialize matching and not_matching * acpi: acpidump: fix overflow before widening bug * lib: fwts_args: free long_options on error * lib: fwts_framework: free resources on error * lib: fwts_log: free filenames on error condition * acpica: fwts_acpica: clear sa_mask fields * bios: hdaaudio: free list items and not list * lib: fwts_framework: free just items in list and not list descriptor * acpi: lid: Fix nesting bug * acpi: battery: Fix nesting bug * lib: fwts_release: check *str rather than str * acpica: fwts_acpica: missing unlock on error path * cpu: virt: correctly return true if SVM is enabled * lib: fwts_framework: ensure we don't truncate null names * acpi: fan: fix cur_state comparison bugs * acpi: brightness: check get_setting return * acpi: s4: free quirks * acpi: s3: free quirks * lib: fwts_log: free log_file on error exit * acpica: Fix for _INI regression. * acpi: battery: free gpe resources on error * data: klog.json: Add ACPI video notify handler check * data: klog.json: Add ACPI video notify handler remove check * data: klog.json: Add checks for Intel Lynxpoint LPSS errors * data: klog.json: Add check for ACPI region field type error * data: klog.json: Add check for object repair or convert failure * data: klog.json: Add ACPI fixed event error checking * data: klog.json: Make ArgType a regex to match various similar strings * data: klog.json: Drop ACPI prefix, make patten a string match * data: klog.json: Bit offset pattern should be a regex not a string match * Revert "acpi: s3: free quirks and command resources" * lib: framework: don't check for long string if src is NULL * acpi: acpidump: ensure we are shifting a 64 bit unsigned long * cpu: cpufreq: make test more generic for non-x86 systems * acpica: update to ACPICA version 20130517. * lib: remove fwts_microcode * cpu: microcode: rewrite so we no longer need to load microcode (LP: #1120240) * dmi: dmi_decode: Add checks for frequent bad defaults on AMI firmware * acpi: wakealarm: enable for non-x86 devices (LP: #1182630) * acpi: wakealarm: minor tidy up to the test * acpi: acpiinfo: missing possessive apostrophe * data: klog.json: fix spelling mistake [Ivan Hu] * lib: fwts_uefi: modify the return value of the fwts_uefi_get_interface * acpica: fix the build error after patch the update to ACPICA version 20130418 * uefirtvariable: fix the unchecked return value * lib: fwts_uefi: add the function to check the efivars interface existence * securebootcert: need to check the efivars interface existence while checking the variable db and kek [Keng-Yu Lin] * efi_runtime: Update the address of the Free Software Foundation * auto-packager: mkpackage.sh: remove Natty and Oneiric * debian: control: Add the backported HWE kernel header packages * auto-packager: mkpackage.sh: Add Saucy * configure.ac: Use AM_PROG_AR when it exists -- Keng-Yu Lin Wed, 05 Jun 2013 10:51:43 +0800 fwts (0.26.08-0ubuntu1) raring; urgency=low [Colin Ian King] * uefi: uefivariable: fix build error on older compilers * acpi: acpidump: fix spelling mistake, useage -> usage * acpi: acpidump: abort dumping of SLIC if length is zero * data: klog.json: Add in another batch of BIOS and ACPI related checks * dmi: dmi_decode: Add another commonly used serial number * uefi: uefirtvariable: minor reformatting for 80 char width lines * uefi: uefirtvariable: minor code tidy up, constify and statics [Ivan Hu] * efiruntime: getnextvariablename update the VariableNameSize before return when get EFI_BUFFER_TOO_SMALL * uefirtvariable: add some information for the GetNextVariableName sub-tests -- Keng-Yu Lin Mon, 08 Apr 2013 16:45:31 +0800 fwts (0.26.07-0ubuntu1) raring; urgency=low [Colin Ian King] * update_version.sh: Insert just date + time in date stamp * acpi: mcfg: move PCI mmap and munmap to compare_config_space * acpi: syntaxcheck: reformat warning messages * acpi: syntaxcheck: add in extra error level messages * acpi: syntaxcheck: re-work IASL error mappings * data: syntaxcheck: remove redundant error code * acpi: syntaxcheck: add helpers to convert error_code * acpi: syntaxcheck: issue error messages depending on error level * acpi: syntaxcheck: add some more per-table information in log * data: syntaxcheck: add a few more advice entries * lib: Add helper function to get release info * data: cater for _PTS not existing * data: klog.json: cater for CMOS handler errors * data: klog.json: fix a typo: of --> if * data: klog.json: Add some vague advice for AE_NOT_EXIST * data: klog.json: Improve the advice for AE_AML_BUFFER_LIMIT * lib: fwts_log_*: fix a few smatch errors * dmi: dmi_decode: DMI not used by kernel should be low failures (LP: #1148703) * lib: framework: add in test name before test description * data: syntaxcheck.json: add more advice info for common errors * data: klog.json: Add some more ACPI related kernel message checks [Ivan Hu] * lib: fwts_uefi: fixed the newer inteface never be used * securebootcert: add Ubuntu UEFI secure boot tests * securebootcert: add Ubuntu UEFI secure boot test - check MS UEFI CA * securebootcert: add Ubuntu UEFI secure boot test - check Ubuntu CA presence * lib: fwts_uefi: add a helper fuction to convert attribute into readable form * data: klog.json: add message for the LVT offset conflict issue [Matt Fleming] * uefirtvariable: Correct DataSize for GetVariable() * uefirtvariable: Check new VariableNameSize from GetNextVariableName() * uefirtvariable: Test GetNextVariableName() returns unique variables * uefirtvariable: Test GetNextVariableName() error handling * efi_runtime: Add 'install' target -- Keng-Yu Lin Tue, 12 Mar 2013 16:01:22 +0800 fwts (0.26.06-0ubuntu1) raring; urgency=low [Alex Hung] * lib: fwts_ioport: fix calling unmatched I/O function in a help function. [Colin Ian King] * lib: fwts_ioport: add dummy stubs for non-x86 arch * acpica: fwts_acpica: remove fwtsInstallLateHandlers * acpi: wmi: re-write to eval _WDG rather than parse AML * acpi: method: print out BCL brightness levels rather than dump the object * cpu: cpufreq: tidy up information message formatting [Ivan Hu] * wmi.c: fix build error when using gcc 4.6.3 [Keng-Yu Lin] * debian: add fwts-efi-runtime-dkms package in the dependency -- Keng-Yu Lin Thu, 21 Feb 2013 14:54:18 +0800 fwts (0.26.05-0ubuntu1) raring; urgency=low [Colin Ian King] * lib: fwts_uefi: fix build error when using gcc 4.6.3 * lib: fwts_uefi: fix a couple of spelling mistakes that crept in * doc/fwts: remove debug options from fwts man page (LP: #1100955) * data: klog.json: add better advice for a common firmware issue * acpi: method: format _TSS states into a table * acpi: method: Show the name of the _PSS control * acpi: method: implement _CST sanity checks * acpi: method: refactor some of the passed messages * acpi: method: tidy up passed/failure messages * apci: method: update comments on implemented tests * acpi: method: use a helper function for MethodReturnNullObj errors * data: klog.json: Make PnP BIOS message into an info message * data: klog.json: Handle SystemIO conflict messages * acpi: method: Add simple _FIX test * acpi: method: Add _HPP (Hot Plug Parameters) sanity check * lib: framework: Increase precision of progress, add a spinner progress indicator * acpi: method: Add _INI (Init) sanity check * acpi: method: _CST test checks for wrong number of package elements * acpi: method: Add _PRS return buffer sanity checking. * acpi: method: update comments describing objects/controls * acpi: method: Add helpers to check for package sizes * lib: fwts_list: optimize list functions a little, make small helper funcs inline * acpi: method: fix some tests that don't indicate passed when they are complete * acpi: method: tidy up some more tests * acpi: method: add helper to check for package contents, simplify code. * lib: fwts_ioport: add helper functions to do port I/O * acpi: fadt: use new I/O port helpers to avoid segfaults * lib: fwts_cmos: Use new I/O helpers, add more error checking * hpet: hpetcheck: fix a bug found by smatch * apci: apicinstance: clean up smatch warning * script: smatchify.sh: build fwts and check with smatch * kernel: version: gather kernel boot command line * acpi: crsdump: dump ACPI _CRS buffers in an annotated form [Ivan Hu] * data: klog.json: Make FADT truncated warning into info message * efi_runtime: add UEFI runtime service QueryCapsuleCapabilities interface * uefirtmisc: add UEFI runtime service QueryCapsuleCapabilities interface test. * efirtmisc: add UEFI runtime service QueryCapsuleCapabilities interface stress test -- Keng-Yu Lin Mon, 04 Feb 2013 15:25:56 +0800 fwts (0.26.04-0ubuntu1) raring; urgency=low [Colin Ian King] * lib: fwts_list: make list creation and initialisation more optimal. * lib: cpu: add common CPU performance measuring code to fwts library * lib: Makefile: Link in math library because we need sqrt() * acpi: cstates: use new fwts_cpu_performance() helper function * cpu: cpufreq: Use new fwts_cpu_performance() helper function * bios: pciirq: make table dump more compact, fix formatting * acpi: method: ignore _WAK return values * acpi: method: don't bother dumping _WAK package, it's just noise * acpi: cstates: cater for different kernel C-state info * acpi: method: don't bother reporting internal ACPI lock success * acpi: method: dump out _PSS states in a tabular format * apci: method: don't bother dumping out the _BST contents * apci: method: don't bother dumping out the _BIF contents * apci: method: don't bother dumping out the _BIX contents * apci: method: don't bother dumping out the _DOD contents * cmos: cmosdump: add in some previously unknown RTC settings * README: Updated for latest version of fwts. Add more info too. * README_SOURCE: Reformat to make it 80 char width friendly, minor changes. * src: lib: Makefile.am: Minor tidy up of the makefile. * src: acpica: Makefile: Slight tidy up of the makefile. * src/Makefile.am: Tidy up fwts main makefile, re-order tests * lib: fwts_apci_method: rename object evaluation functions * acpi: pcc: renaming of ACPI object evaluation function names * acpi: method: renaming of ACPI object evaluation function names * lib: rename fwts_acpi_method to fwts_acpi_object_eval * lib: fwts_ac_adapter: constify some struct fields and variables * lib: fwts_guid: constify guid_str_len and guid_len parameters * lib: fwts_framework: test names should be dislayed in a wider format field * data: klog: Remove a duplicate timer BIOS bug check * data: klog.json: Add more specfic parse/execution failure checks on timeouts * data: klog.json: move the most generic parse/execition failure message down * acpi: acpidump: use offsetof macro from stddef.h rather than define our own * acpi: pcc: fix some stupid typos * hpet: hpetcheck: add ACPI HPET table check * lib: update copyright year to 2013 * tests: update copyright year to 2013 * misc: update copyright year to 2013 * lib + tests: don't stringify the test name in FWTS_REGISTER * lib: fwts_framework: assert on FWTS_REGISTER names being too long * lib: framework: log the fwts command line for reference. * acpi: acpidump: fix ACPI FPDT dump * cpu: cpufreq: fix a bunch of 32 bit build errors * lib: fwts_acpi_tables: speed up table loading on 64 bit systems * acpica: fwts_acpica: optimise semaphore tracking * acpica + acpi: method test: remove fwts_acpica_simulate_sem_timeout() * acpica: fwts_acpica: force indefinite AML Wait() to timeout * acpi: method: Add better _CRS resource checking * data: klog.json: fix spelling mistake * data: klog.json: fix spelling mistake [Ivan Hu] * uefirtvariable: add more specific passed messages for each sub-tests * uefirtvariable: add the function to print out the return status messages * uefirttime: print out the return status and description when errors occur * uefirttime: unload the efi_runtime module when deinit the test * uefirtvariable: remove the invalid attribute tests after ExitBootServices() is performed * uefirtvariable: add function test for SetVariable with invalid attributes * fwts_uefi:uefirtvariable:use sizeof() for defining long integer for fixing build failure on 32 bit systems * uefirtvariable: restore the environment when errors occur after the test variables have been set * uefirtvariable: add new test for UEFI runtime QueryVariableInfo * uefirtvariable: add stress test for UEFI runtime interface GetVariable * uefirtvariable: add stress test for UEFI runtime interface GetNextVariableName * uefirtvariable: add stress test for UEFI runtime interface SetVariable with the same data * uefirtvariable: add stress test for UEFI runtime interface SetVariable with different data * uefirtvariable: add stress test for UEFI runtime interface SetVariable with different name * uefirtvariable: add stress test for UEFI runtime interface SetVariable with different name and data * uefirtvariable: skip the tests when get the EFI_OUT_OF_RESOURCES from firmware * uefirtvariable: add stress test for the UEFI runtime QueryVariableInfo interface * uefirtmisc: add the test for UEFI runtime GetNextHighMonotonicCount interface * uefirtmisc: add stress test for UEFI runtime GetNextHighMonotonicCount interface [Keng-Yu Lin] * uefi: uefirtvariable: use sizeof() for finding the bit size of long integer * debian: change the mail address of the maintainer * auto-packager: mkpackage.sh: Add raring -- Keng-Yu Lin Thu, 17 Jan 2013 14:01:06 +0800 fwts (0.26.03-1) raring; urgency=low [Colin Ian King] * data: klog.json: fix up and correct a few miscellaneous klog items * data: klog.json: promote EC error so it gets caught before generic handler * kernel: version: make test infoonly rather than pass/fail tests * cpu: cpufreq: spell Ghz as GHz and Mhz and MHz * cpu: cpufreq: Make this test no longer experimental. * lib: fwts_pipeio: fwts_pipe_exec() should return FWTS_ERROR instead of -1 * lib + tests: modify fwts_pipe_exec to return the child exit status * acpi: apicinstance: make this an Intel x86 only test * acpi: method: handle ACPI failures a little more gracefully * apci: aspm: clean up messages * acpi: acpidump: print a message if no ACPI tables could be found. * lib: fwts_dump_data: tidy up code, ensure we limit nbytes to 16 * data: klog.json: Add next 20 or so ACPI_ERROR messages * utilities: kernelscan: Add check for ACPI_ERROR_METHOD kernel errors * data/klog.json: Scan for all the ACPI_ERROR_METHOD kernel errors * acpi: acpidump: fix formatting of bit fields * data/klog.json: Update a parse/execution failure advice line * acpi: acpiinfo: Complete reworking to bring it up to date. * acpi: fadt: only perform port read on valid port widths * pci: aspm: make pcie_capability a packed struct type * bios: mtrr: remove unused VGA region check * bios: mtrr: move buffer memset() to after failed is declared. * bios: mtrr: make the failed flag a boolean * bios: mtrr: make is_prefetchable() return a bool type * bios: mtrr: make skiperror a boolean * acpi: dmar: Make this test no longer experimental. * lib: fwts_cmos: fix build error with non-Intel architectures * lib: fwts_smbios: fix build error with non-Intel architectures * lib: fwts_virt: fix non-Intel build errors * acpi: pcc: make this test an Intel only test * bios: mtrr: make prefetchable checks handle lspci exec failures * bios: mtrr: remove mtrr_test4 because we're removed FWTS_TEST_VGA_REGION * lib, tests: remove fwts common test, merge into fwts klog [Ivan Hu] * uefirtvariable: Add new test for UEFI runtime GetVariable * uefirtvariable: Add new test for UEFI runtime GetNextVariableName * uefirtvariable: Add new test for UEFI runtime SetVariable, subtest 1 * uefirtvariable: Add new test for UEFI runtime SetVariable, subtest 2 * uefirtvariable: Add new test for UEFI runtime SetVariable, subtest 3 * uefirtvariable: Add new test for UEFI runtime SetVariable, subtest 4 * uefirtvariable: Add new test for UEFI runtime SetVariable, subtest 5 -- Keng-Yu Lin Mon, 17 Dec 2012 15:13:11 +0800 fwts (0.26.02-1) raring; urgency=low [Alex Hung] * acpi: mcfg: Set MCFGMMIONotReserved error to low [Colin Ian King] * fwts_mmap: fwts_page_size fix comparing size_t against -1 * lib: fwts: add FWTS_UNUSED() macro for unused func arguments * lib: fwts_*: use FWTS_UNUSED on unused func args in fwts library * lib: Makefile.am: enable -Wextra * dmi: dmi_decode: remove some redundant range changes on uint8_t values * tests: use FWTS_UNUSED on unused func args * Makefile.am: enable -Wextra * lib: include: fwts_log, add in new label field * lib: klog: load labels from json data file rather than auto-generate * data: klog.json: add in label for each error message * lib: klog: tidy up the code a little * utilities: kernelscan: Tool to scan kernel for error messages * utilities: kernelscan: tidy up the formatting of output messages. * utilities: kernelscan.sh: scan various directories for kernel error messages * utlities: kernelscan: make some regex optimisations * utilities: kernelscan: fix comment that explains how to use this tool * utilities: kernelscan.sh - add execute flag to script * data: klog.json: Add support for ACPI fan and ACPI processor throttling * data: klog.json: Add support for the ACPI SMBUS driver * data: klog.json: Add support for the ACPI utils kernel error messages * data: klog.json: Add support for the ACPI processor_idle kernel error messages * data: klog.json: Add support for the ACPI arch x86 kernel sleep * data: klog.json: Add support for the ACPI container handler * data: klog.json: Add support for the ACPI Lid errors * data: klog.json: Add support for the ACPI Docking handler * data: klog.json: Add support for the ACPI EC handler * data: klog.json: Add support for the ACPI thermal zone handler. * data: klog.json: Add support for the ACPI device power handler * data: klog.json: Add support for the ACPI PCI root handler * data: klog.json: Add support for the ACPI initialisation error messages * data: klog.json: Add support for the ACPI blacklisting messages * data: klog.json: Add support for the ACPI osl messages * data: klog.json: Add support for the ACPI memory hotplug messages * data: klog.json: Add support for the ACPI glue code * data: klog.json: Add support for the ACPI video handler * data: klog.json: Add support for the ACPI processor perf driver * data: klog.json: Add support for the ACPI processor driver * data: klog.json: Add support for the ACPI PCI link control messages * data: klog.json: Add support for the ACPI PCI slot messages * data: klog.json: Add in some more miscellaneous ACPI error messages * data: klog.json: Add support for the ia64 ACPI handler. * data: klog.json: Add support for the x86 MTRR kernel messages * data: klog.json: Add support for various BIOS and PnPBIOS kernel messages * utilities: kernelscan: add in ACPI configs and more printk message types * utilities: kernelscan.sh: Add more paths to scan * data: klog.json: Add support for the APM driver kernel messages * data: klog.json: Add support for E820 handler in 3.2.x Kernels * utilities: kernelscan.sh: Check that the file exists * utilities: kernelscan.c: Add scanning for ACPI_ERROR * cpu: microcode: ensure we don't overflow with strncpy * pci: maxreadreq: ensure we don't overflow with strncpy * data: klog.json: ACPICA ACPI_ERROR messages * data: klog.json: ACPICA ACPI_ERROR messages * data: klog.json: ACPI ACPI_ERROR messages * data: klog.json: ACPICA ACPI_ERROR messages * data: klog.json: ACPICA ACPI_ERROR messages * data: klog.json: ACPICA ACPI_ERROR messages * lib: fwts_oops: check for WARN_ON messages as well as oopses * kernel: oops: also check for WARN_ON messages found * acpi: s3: also check for WARN_ON messages found * acpi: s4: also check for WARN_ON messages found * data: klog.json: ACPICA ACPI_ERROR messages * data: klog.json: ACPICA ACPI_ERROR messages * data: klog.json: ACPICA ACPI_ERROR messages * data: klog.json: ACPICA ACPI_ERROR messages * utilities: kernelscan.c: add scanning for ACPI_BIOS_ERROR messages * lib: fwts_test: calloc being called with args swapped * lib: fwts_oops: fix fwts_oops_check dereference checks on oopses and warn_ons * utilities: kernelscan: swap calloc arguments in unget_next() * utilities: kernelscan.c: add scanning for ACPI_EXCEPTION messages * acpi: pcc: New test to sanity check PCC, (LP: #863175) * data: klog.json: ACPICA ACPI_ERROR messages, exutils.c * data: klog.json: ACPICA ACPI_ERROR messages, utmath.c * data: klog.json: ACPICA ACPI_ERROR messages, dswload2.c * data: klog.json: ACPICA ACPI_ERROR messages, utexcep.c * data: klog.json: ACPICA ACPI_ERROR messages, hwxfsleep.c * data: klog.json: ACPICA ACPI_ERROR messages, exoparg2.c * data: klog.json: ACPICA ACPI_ERROR messages, evevent.c * data: klog.json: ACPICA ACPI_ERROR messages, utmutex.c * lib: fwts_framework: make framework magic id into a uint32_t * lib: fwts_framework: failed_level should be type fwts_log_level * lib: fwts_framework: show_progress flag should be a bool * lib: fwts_framework: print_summary should be a bool * lib: fwts_framework: use fwts_framework_flags instead of int * lib: fwts_framework: make test priority a strongly typed enum * lib: fwts_klog: forgot to log a klog error using the pattern string * lib: fwts_klog: Don't regex compile non-regex strings * lib: fwts_framework, fwts_klog: Add filtering to fwts errors * lib: fwts_framework: sanity check new options * doc: Add new --filter-error-discard and --filter-error-keep options. * data: klog.json: Add the final set of ACPI_EXCEPTION errors * data: klog.json: fix up the RSDP error exception advice to make more sense * data: klog.json: Add all the ACPI_BIOS_ERROR messages [Ivan Hu] * klog: change the MSR_IA32_ENERGY_PERF_BIAS test from fauilure to info * uefirttime: add the fwts test for the UEFI get wakeup time runtime service * uefirttime: add the fwts test for the UEFI set wakeup time runtime service * cpufreq: fix the CPUFreqCPUsSetToSW_ANY failed LP#1076694 * cpufreq: fix the CPUFreqSW_ALL and CPUFreqSW_ANY failed LP#1076694 [Keng-Yu Lin] * data: klog.json: remove the duplicated KlogEnergyPerfBiasSetToNormal item -- Keng-Yu Lin Thu, 29 Nov 2012 13:52:59 +0800 fwts (0.26.01-1) raring; urgency=low [Alex Hung] * pcie: aspm: add more information for L0s and L1 warnings (LP: #1055430) * hotkey: remove redundant framework parameter from hotkey_find_keyboard * bios: hdaaudio: fix user pin configurations (user_pin_configs) is not checked. [Colin Ian King] * lib: acpi: add ACPI 5.0 GIC and GICD structs to MADT * acpi: acpidump: Dump out the new MADT GIC and GICD structures * acpi: acpitables: Add checks for MADT GIC and GICD * acpi: acpitables: fix typo in LAPICX2 APIC NMI Flags tag * lib: acpi: Add support for the new ACPI 5.0 PCCT * acpi: acpidump: Add support for ACPI 5.0 PCCT * acpi: apcidump: Add ACPI 5.0 support for boot flag CMOS RTC present bit * acpi: method: re-order tests based on location in specification * acpi: method: re-order method test functions * acpi: method: tidy source; 80 columns wide formatting * acpi: method: add some more comments * acpi: method: clean up spacing in for loops * acpi: method: add in all ACPI control method and objects * acpi: method: add DDN, HID, HRV, PLD, SUB, STR checks * acpi: method: add checks for EDL, RMV, STA * acpi: method: add BCT test * acpi: method: add checks for GCP, GRT, GWS * acpi: method: Add check for GSB * acpi: method: Add check for SEG * acpi: method: Add PRx, SxD, SxW checks * acpi: method: fix typo SWP --> SWS * acpi: method: Add _S0_ .. _S5_, _SWS checks * acpi: method: Add CPC, CSD, PCT, PDL, PPC, TDL, TSD and TSS checks * bios: smbios: fix typo Stucture ==> Structure * cpu: virt fix typo extentions ==> extensions * cpu: virt: fix typo originall ==> originally * lib: fwts_formatting: fix typo upto ==> up to * lib: fwts_log_html: fix typo convertion ==> conversion * lib: fwts_checkeuid: fix typo priviledges ==> privileges * example: blank test: fix typos ommitted ==> omitted * acpi: wakealarm: fix typo existance ==> existence * acpi: acpitables: fix typo managment ==> management * acpi: acpidump: print format using inttypes * acpi: acpitables: print format using inttypes * acpi: checksum: print format using inttypes * acpi: fadt: print format using inttypes * acpi: method: print format using inttypes * acpi: s3power: print format using inttypes * bios: bios32: print format using inttypes * bios: ebda_region: print format using inttypes * bios: ebdadump: print format using inttypes * bios: mtrr: print format using inttypes * bios: mpcheck: print format using inttypes * cpu: msr: print format using inttypes * dmi: dmi_decode: print format using inttypes * hpet: hpet_check: print format using inttypes * lib: fwts_memorymap: print format using inttypes * uefi: csm: print format using inttypes * uefi: uefidump: print format using inttypes and whitespace tidy * lib: fwts_acpid: fix checking of return from read() * lib: fwts_acpi_method: fix for loop index type * lib: fwts_dump: fix loop variable type to match table length type * lib: fwts_framework: Make string length type a size_t rather than an int * lib: fwts_framework: remove redundant parameter from fwts_framework_run_test * lib: fwts_framework: remove redundant fw parameter from fwts_framework_show_tests_brief * lib: fwts_framework: remove fw parameter from fwts_framework_test_find * lib: fwts_framework: remove fw parameter from fwts_framework_skip_test_parse * lib: fwts_battery: remove redundant framework parameter in helper functions * lib: fwts_button: Remove framework parameter from fwts_button_match_state_proc * lib: fwts_button: fix comment on function name * acpi: acpidump: fix a bunch of int type issues. * acpi: acpitables: use the correct type for failed * acpi: mcfg: make mcfg_size a ssize_t * acpi: wmi: make size a size_t * bios: bios_info: fix bug where product_serial was not being dumped * bios: hdaaudio: remove redundant fw parameter from hda_audio_check_pins * bios: dmi_decode: remove redundant parameters from helper functions * dmi: dmi_decode: failed_count should be uint32_t * pci: aspm: remove redundant parameter in pcie_check_aspm_registers * cpu: maxfreq: remove redundant init and deinit functions * hotkey: remove redundant framework parameter from hotkey_find_keymap * uefi: csm: use uint32_t for BIOS address ranges * uefi: uefidump: cast to ptrdiff_t to remove mixed signed/unsigned comparison * acpi: method: fix a bunch of mixed type comparison issues * lib: fwts_alloc: use ptrdiff_t to ensure non-mixed type comparison * lib: fwts_json: wrapper for json error returns * lib: fwts_klog: use FWTS_JSON_ERROR macro for error checking * acpi: syntaxcheck: use FWTS_JSON_ERROR macro for error checking * uefi: uefidump: remove FWTS_FLAG_UNSAFE from test. * lib: fwts_ac_adapter: constify state * lib: fwts_acpi_method: constify funcs and static tables * lib: fwts_acpi_tables: constify func arguments where appropriate * lib: fwts_args: constify func arguments where appropriate * lib: fwts_battery: constify func arguments where appropriate * lib: fwts_button: constify function arguments where appropriate * lib: fwts_checkeuid: constify function arguments where appropriate * lib: fwts_hwinfo: constify function arguments where appropriate * lib: fwts_memorymap: constify function arguments where appropriate * lib: fwts_log: constify function arguments where appropriate * lib: fwts_summary: constify function arguments where appropriate * cpu: cpufreq: add init function to determine number of CPUs * lib: fwts_mmap: add fwts_page_size() * acpi: acpidump: correctly dump out MCFG configuration * acpi: mcfg: use fwts_acpi_mcfg_configuration as defined in fwts_acpi.h * acpi: mcfg: more code tidying. * acpi: mcfg: split into two distinct tests [Ivan Hu] * efi_runtime: add efi_runtime kernel driver module into fwts * efi_runtime: add checking the efi environment * efi_runtime: add UEFI runtime service QueryVariableInfo interface * efi_runtime: add UEFI runtime service GetNextHighMonotonicCount interface * lib: fwts_efi_module: add fwts library helper fuctions for efi_runtime module * uefirttime: add fwts tests for the UEFI get/set time runtime services [Keng-Yu Lin] * uefi: Add fwts-efi-runtime-dkms package * Add autotools scripts for the data directory -- Keng-Yu Lin Thu, 25 Oct 2012 16:14:43 +0800 fwts (0.26.00-1) quantal; urgency=low [Colin Ian King] * uefi: uefidump: Dump out variables containing kernel messages * uefi: uefidump: add support for ConErrDev * uefi: uefifump: Add support for dumping SecureBoot and SetupMode vars * uefi: uefidump: Add support for dumping MemoryOverwriteRequestControl. * uefi: uefidump: Add support for AcpiGlobalVariable * uefi: uefidump: Add support for SignatureSupport variable * lib: fwts_guid: Add fwts_guid_str_to_buf to convert string back to a GUID * uefi: add in support for new uefivar file system interface * lib: framework: Add "unsafe" test category * lib + tests: bulk rename of fwts flag macros * lib: fwts_framework: fix unnecessary escaping * acpica: Fix segfault when disassembling AML (LP: #1050475) [Keng-Yu Lin] * auto-packager: mkpackage.sh: checksum only the specified version -- Keng-Yu Lin Fri, 14 Sep 2012 13:35:31 +0800 fwts (0.25.07-1) quantal; urgency=low [Chris Van Hoof] * fwts-collect: make sure we are executing as root or with sudo * fwts-collect: reference sudo requirement in show_help() [Colin Ian King] * acpi: method: remove _GTS and _BFS tests * acpi: method: _PSS power dissipation levels can be equal to previous level * acpi: method: only get pedantic about therm returns if values are hard coded * misc: remove old crufty valgrind script * acpica: tidy up code to remove GCC warnings * Add some MTRR specific klog tests. * lib: fwts_klog: sanity check json klog data is readable [Ivan Hu] * msr: remove the IA32_A_PMC0-3 and IA32_TSC_AUX from cosistent test * mtrr: fix mtrr checking without devices that are under bridges [Keng-Yu Lin] * auto-packager: Add Quantal and remove Maverick * auto-packager: update mkpackage.README * auto-packager: Add mktar.sh to make the release tarball * auto-packager: mkpackage.sh to handle the released tarball * auto-packager: Update the mkpackage.README * debian: change source package format to 3.0 (quilt) * Add dh-autoreconf support and clean up generated files (LP: #1042287) -- Keng-Yu Lin Wed, 05 Sep 2012 16:31:13 +0800 fwts (0.25.06) quantal; urgency=low [Alex Hung] * acpi: method: Change _BBN's test_type from METHOD_MOBILE to METHOD_OPTIONAL [Colin Ian King] * acpi: acpidump: add extra ACPI 5.0 fields to FACP * acpi: acpidump: Add support for bit 20 and 21 of FADT flags * Update FADT preferred PM profile to add Tablet * dmi: dmi_decode: make advice more relevant to data handled by the kernel * Add mutex around semaphore counting (LP: #1017388) * acpi: method: remove race delay kludge * lib: acpi_acpi_tables: Add tables based on ACPI name and not file name. * lib: fwts_acpi_tables: Force fixup on XSDT and RSDT when loading from .dat files * lib: acpica: fix semaphore counting by waiting for threads to complete * acpica: incorporate new ACPICA sources to enable fwts to build * acpica: use latest ACPICA source * Update copy-acpica.sh to copy over new sources * Update README_ACPICA.txt to add in new acpica sources * acpi: acpidump + acpi headers: Add simple support for FPDT * acpi: acpidump + acpi headers: Add basic dump of RASF * acpi: acpidump: Add stub for MPST * acpi: acpidump: make arrays static * data: klog.json: make the _OSC failure advice more general and hand-wavy * cpu: cpufreq: cpufreq and cpuidle dirs confusing cpuN parsing * cpu: cpufreq: make progress estimate more accurate * cpu: cpufreq: tidy up table output * cpu: cpufreq: rename some global variables to make them more readable * cpu: cpufreq: various whitespace clean ups * cpu: cpufreq: tidy up memset usage * cpu: cpufreq: make HzToHuman() more efficient * cpu: cpufreq: add need to run as root * bios: mtrr: fix stupid typos * lib: fwts_klog: optimize regex scanning (LP: #1028031) [Keng-Yu Lin] * debian: Add hardening options -- Keng-Yu Lin Fri, 27 Jul 2012 17:22:07 +0800 fwts (0.25.05) quantal; urgency=low [Chris Van Hoof] * live-image/fwts-frontend-text: use mv versus ln as symbolic links are not supported on fat file systems [Colin Ian King] * dmi_decode: Add some more advice text * dmi_decode: Only be pedantic if we are sure about the board type (LP: #1021674) * dmi_decode: report chassis types with 0x prefix since they are in hex * lib: tidy up source, remove trailing whitespaces and empty lines * acpi: method: update table of implemented tests * acpi: method: add new _AEI check * acpi: method: Add stub for ACPI 5.0 _CPC * acpi: method: Add new ACPI 5.0 _PRE * acpi: method: Add new ACPI 5.0 _PSE check * acpi: acpidump: Add ACPI 5.0 GTDT support. * acpi: acpidump: Add ACPI 5.0 BGRT support. * lib: fwts_log_json: do more json object out of memory checking * acpi: acpidump: dump out ACPI UEFI tables * acpi: acpidump: Add SLIC table dump * acpi: acpidump: dump out the DMAR table * acpi: acpidump: dump out the ASF! table * acpi: acpidump: Add dump of TCPA * acpi: s4: hibernate/resume failures should be HIGH failures * acpi: s3: suspend/resume failures should be HIGH failures * Add empty m4 directory so autoreconf does not fail * Remove the autotool generated files * lib: fwts_hwinfo: sort device info before comparing (LP: #1018288) [Keng-Yu Lin] * Install the libraries in pkglib * debian: Add autoreconf parameters -ivf -- Keng-Yu Lin Wed, 11 Jul 2012 13:58:43 +0800 fwts (0.25.04) quantal; urgency=low [Colin Ian King] * apci: acpitables: only check CMOS in BOOT table from firmware tables (LP: #1016469) * lib: fwts_acpi_tables: add ACPI table provenance * lib: fwts_acpi_tables: load tables in deterministically * lib: fwts_log: handle special logfile names * lib: log: move line counting to logging back-ends * lib: fwts_log: remove fwts_log_line_number(), no longer used * lib: fwts_framework: output all logfile names being written to * lib: fwts_log: add fwts_log_get_filenames() * lib: fwts_summary: remove references to log line number [Keng-Yu Lin] * debian: Fix up the dependency of debian packages -- Keng-Yu Lin Mon, 25 Jun 2012 16:44:51 +0800 fwts (0.25.03) quantal; urgency=low [Chris Van Hoof] * live-image/fwts-frontend-text: conditional added to done_tests_finish() which creates a symbolic link to the latest results.html at the top level WORK_DIR * live-image/fwts-frontend-text: adding support for both plaintext and html log out by default with --log-type [Colin Ian King] * apci: checksum: RSDT and XSDT checksum failures should not be critical (LP: #1013168) * lib: fwts_log_html: convert misc ASCII chars to HTML mnemonics * lib: fwts_framework: handle --log-type parse errors * lib: fwts_summary: handle the log_type now that it is a bit map * lib: rework logging and framework to allow for multiple output logs * lib: fwts_framework: handle nested log section endings on ABORT * lib: fwts_log_html: remove timestamp as it is in the heading anyhow * Update README * lib: fwts_acpi_tables: fake table start address when loading from file. * lib: fwts_framework: set log name suffix when using --log-type option * lib: fwts_summary: HTML summary should not be in verbatum * lib: fwts_log_html: tweak style and table format * lib: fwts_memorymap: output should be in verbatum style * bios: mtrr: make MTRR overview all verbatum style, looks better on HTML log * lib: add HTML logging backend * lib: fwts_framework: log advice as LOG_ADVICE and not LOG_RESULT * lib: fwts_framework: remove fwts_framework_results, remove redundant code * lib: fwts_log: add extra log types and upper case flavour of fwts_log_field_to_str_full() * lib: fwts_framework: drop unneccessary \n in log call * lib: add xml logging * lib: fwts_acpi_method: remove leading 0x in front of dumped strings * bios: mtrr: strip off trailing newlines * bios: bios_info: strip off trailing newlines * kernel: version: strip off trailing newline * lib: fwts_wakealarm.c: add more comments * lib: fwts_oops.c: add more comments * lib: fwts_mmap.c: add more comments * lib: fwts_keymap.c: add more comments * lib: fwts_iasl.c: add more comments * lib: fwts_guid.c: add more comments * lib: fwts_button.c: add more comments * lib: fwts_ac_adapter.c: add more comments [Keng-Yu Lin] * debian: update copyright to conform to copyright-format 1.0 * debian: update the control file -- Keng-Yu Lin Tue, 19 Jun 2012 13:31:53 +0800 fwts (0.25.02) quantal; urgency=low * fwts V0.25.02 release (LP: #1004410) [Alex Hung] * acpi: battery: add trip point tests for acpi batteries * lib: fwts_battery: fix incorrect strings for a battery with unit of mWh * lib: fwts_battery: fix no fclose() after fopen is called. * acpi: battery: added cycle count check for acpi batteries. [Colin Ian King] * doc: update man page * lib: fwts_summary.c: force non-word wrap using *_verbatum logging * lib: fwts_framework: default to plaintext log type * lib: re-work logging to add in json formatted log output * lib: fwts_log: tidy up white spaces and strncmps * lib: fwts_log: re-work log underline * lib: move log line number into log struct * lib: fwts_log: remove default line num and test name from log * lib: fwts_args: remove strlen() calls, more efficient and stops valgrind complaining * acpica: fwts_acpica.c: Override ACPICA Semaphores to fix memory leak bug * pci: aspm: make functions static * pci: aspm: free memory from lists * pci: aspm: fix memory read outside buffer * lib: fwts_battery: added interface for cycle count. -- Keng-Yu Lin Fri, 25 May 2012 18:11:11 +0800 fwts (0.25.01) precise; urgency=low [Keng-Yu Lin] * wmi: Fix an error on processing the _WDG data -- Keng-Yu Lin Thu, 26 Apr 2012 10:30:35 +0800 fwts (0.25.00) precise; urgency=low [Alex Hung] * doc: remove --aspm option from man page * pcie: added explanations to aspm messages. [Colin Ian King] * acpi: method: add _PSS test * lib: fwts_acpi_method: gather all object names rather than just method names * acpica: add -fno-strict-aliasing to ignore type punning warnings (LP: #971886) * Update copy-acpica.sh to include new ACPICA sources * acpica: force infinite loops and OS delays to complete faster since timing is not relevant * acpica: fwts_iasl_interface: we need to enable preprocessor to stop ramdom segfaulting * data: syntaxcheck.json: re-order based on new ACPICA error code updates * acpica + lib: fix assemble/dissassemble to work with new ACPICA core * lib: fwts_acpi_tables: ensure we don't overflow a table name when given bad input * Update README_ACPICA.txt to reflect new ACPICA sources added * acpica: fwts_acpica: reworking required for new ACPICA changes * acpica: update Makefiles * acpica: updates to existing ACPICA sources * acpica: new ACPICA sources * lib: fwts_fileio.c: remove unnecessary variable len * acpi: acpidump: remove unnecessary variable n * lib: fwts_tag: use size_t instead of int * lib: fwts_stringextras: use size_t instead of int * lib: fwts_framework: use size_t instead of int * lib: fwts_battery: use size_t instead of int * lib: fwts_acpi_method: use size_t instead of int * acpica: fwts_acpica: use size_t instead of int * acpi: method: use size_t instead of int * acpi: cstates: use size_t instead of int * acpi: acpitables: use size_t instead of int * lib: fwts_args: only handle non-zero length short_names * Update copyright year * Remove old TODO.txt * klog: Add EC transaction failure detection [Keng-Yu Lin] * debian: update Standards-Version and debhelper version -- Keng-Yu Lin Fri, 20 Apr 2012 09:54:15 +0800 fwts (0.24.21) precise; urgency=low [Alex Hung] * pcie: add pcie aspm registers check on root port and device. [Chris Van Hoof] * fwts-frontend: v2 update to conditional logic to better detect if we're booted via casper and additional logic to toggle auto shutdown behaviour when testing [Colin Ian King] * uefi: uefidump: handle realloc failure * lib: fwts_pipeio: handle realloc failure * lib: fwts_args: handle realloc failure * lib: acpid: handle realloc failures in fwts_acpi_event_read() * lib: fwts_acpi_tables: handle fwts_low_realloc() failures * acpica: handle realloc failures in fwts_acpica_vprintf() * lib: fwts_klog: remove redundant free() * acpi: checksum: flag up errors that are critical, add more helpful advice * acpi: checksum: fix typo shorted -> shortened * acpi: checksum: reformat lines to fit into 80 columns * acpi: wmi: use snprintf to be safe * acpi: wmi: const func args * acpi: wmi: reformat source into 80 columns * acpi: dmar: make seg a uint16_t rather than an int * acpi: dmar: make func args const * acpi: acpiinfo: tidy up source * bios: hdaaudio: ensure source fits into 80 columns * bios: hdaaudio: use calloc() instead of malloc() * lib: fwts_tag: handle out of memory failure * bios: ebdadump: ensure source fits into 80 columns * bios: bios32: ensure source fits into 80 columns * lib: arg + framework: more robust out of memory handling. * lib: fwts_stringextras: handle out of memory failure * uefi: uefidump: fix infinite recursion on unknown end terminator (v2) * bios: memmapdump: ensure source fits into 80 columns * acpica: fwts_acpica_init(): handle out of memory failures * bios: mtrr: handle out of memory failures * hpet: hpet_check: make func args const where possible * hpet: hpet_check: ensure source fits into 80 columns * fwts-collect: fix typo * fwts-collect: tidy up error handling * fwts-collect: collect more fwts dumped data * read /proc/mtrr rather than use ioctl() interface [Keng-Yu Lin] * debian: use autoreconf instead of dh-autoreconf -- Keng-Yu Lin Fri, 09 Mar 2012 15:04:30 +0800 fwts (0.24.20) precise; urgency=low [Chris Van Hoof] * debian: update fwts-frontend.install to include fwts-frontend-text man page * doc: addition of fwts-frontend-text man page * src/Makefile: include fwts-frontend-text.1 to man_MANS [Keng-Yu Lin] * auto-packager: change the git location * auto-packager: add Precise release -- Keng-Yu Lin Thu, 09 Feb 2012 18:00:42 +0800 fwts (0.24.19) precise; urgency=low [Alex Hung] * dmi: dmi_decode: check type 3 chassis type with acpi preferred_pm_profile * dmi: dmi_decode: check acpi battery if type 22 is present. * pcie: aspm: use FWTS_ROOT_PRIV flag [Colin Ian King] * cpu: msr: GPF avoidance on BOCHs QEMU systems (LP: #925001) -- Keng-Yu Lin Thu, 09 Feb 2012 13:52:50 +0800 fwts (0.24.18) precise; urgency=low [Alex Hung] * cpu:msr: fixed errors for checking SMRR MSR registers [Keng-Yu Lin] * Fix a typo error of "DSTD" -- Keng-Yu Lin Mon, 06 Feb 2012 16:39:43 +0800 fwts (0.24.17) precise; urgency=low [Alex Hung] * pcie: aspm: add aspm option and detect if the "PCIe ASPM Controls" bit is set in FADT. [Colin Ian King] * Sanity check for MSR_IA32_ENERGY_PERF_BIAS messages. * Since aspm is a test, move it out of the fwts core library * Update copyright year [Keng-Yu Lin] * lib: add PCIe ASPM configuration check in the batch test * debian: use dh-autoreconf -- Keng-Yu Lin Tue, 31 Jan 2012 13:47:48 +0800 fwts (0.24.16) precise; urgency=low [Chris Van Hoof] * Renaming directory 'iso-image' to 'live-image' and 'live-image/fwts_wrapper' to 'live-image/fwts-frontend-text' * Adding a default dialogrc configuration file to select the Ubuntu color palatte when fwts-frontend-text is executed * Adding a bit of conditional logic to fwts-frontend-text to better detect if executed in a live image and setting defaults which make the script easier to control * debian: adding fwts-frontend.install * debian: update control file to build the _optional_ fwts-frontend package -- Keng-Yu Lin Mon, 09 Jan 2012 11:08:06 +0100 fwts (0.24.15) precise; urgency=low * lib: fwts_acpi_find_rsdp_bios should only scan for RSDP on Intel/AMD * cpu: msr: disabled test for non-Intel/AMD architectures -- Keng-Yu Lin Mon, 09 Jan 2012 10:17:46 +0100 fwts (0.24.14) precise; urgency=low * Add copy-acpica.sh script that updates the ACPI * data: klog: add _OSC evaluation failure tests * data: klog: add _CRS evaluation PNP kernel erro * uefi: csm: fix typo. -- Keng-Yu Lin Wed, 16 Nov 2011 11:49:04 +0800 fwts (0.24.13) precise; urgency=low * acpi: power_button: remove check on /proc/acpi/button/power * lib: fwts_button: add power button support * acpi: lid: use button helper * lib: add generic button helper into lib * lib: add generic button helper -- Colin King Tue, 9 Nov 2011 12:37:00 +0100 fwts (0.24.12) precise; urgency=low * debian: update control * uefi: add UEFI CSM check. -- Colin King Tue, 9 Nov 2011 10:05:00 +0100 fwts (0.24.11) oneiric; urgency=low * lib: update battery helpers and re-work tests * acpi: s3power: use fwts_battery helper * lib: add fwts_battery * s3power: use fwts_ac_adapter() * acpi: ac_adapter: use fwts_ac_adapter lib * lib: add fwts_ac_adapter * acpi: ac_adapter: use newer /sys interface * acpi: method: clean up dangling whitespaces * acpi: method: handle mobile platform tests when FADT is lying * acpi: method: dump return object on non-null return failures. * acpi: method: make lock delay between each test 0 usecs * acpi: method: on non-mobile tests explicitly report skipped mobile tests * lib: fwts_cmos: disabled interrupts during port I/O (LP: #880472) * bios: pciirq: fix typo * bios: pnp: fix typo in event_notification_addr -- Colin King Fri, 4 Nov 2011 09:09:00 +0100 fwts (0.24.10) oneiric; urgency=low * fwts-collect: fix mpdump log and don't remove README.txt * doc: remove --dmidecode option from man page * pci: crs: fetch BIOS date from /sys/class/dmi/id/bios_date * lib + tests: remove framework dmidecode and --dmidecode option * lib: fwts_dump: don't use fw->dmidecode anymore * lib: fwts_dump: warnings if not being run by root. * lib: fwts_framework: fwts_framework_show_version() more generic * lib + tests: add warning flag to fwts_check_root_euid() * klog: enable this for non-x86 * pci: maxreadreq: enable this for non-x86 * kernel: oops: enable this for non-x86 * lib: fwts_dump: do sensible non-x86 dumps * lib: fwts_smbios: fix non-x86 build failure. -- Colin King Thu, 20 Oct 2011 09:11:00 +0100 fwts (0.24.09) oneiric; urgency=low * bios: Add PnP Installation Check structure test * bios: pciirq: fix formatting * bios: Add Legacy PCI IRQ Routing Table test -- Colin King Wed, 19 Oct 2011 18:41:00 +0100 fwts (0.24.08) oneiric; urgency=low * debian: remove dependancy on dmidecode * pci: crs: get BIOS date from SMBIOS rather than rely on dmidecode * lib: fwts_smbios: add in fwts_dmi_header from dmi_decode * lib: fwts_smbios, fetch version number too. * dmi: dmi_decode: complete re-write, better detection (LP: #874373) * bios: smbios: handle legacy DMI header * lib: smbios: handle legacy DMI header * lib: tidy up headers * bios: smbios: use smbios find helper * lib: add smbios find helper * bios: smbios: check header fully and dump fields (LP: #876331) * bios: bios32: use fwts_checksum * acpi: checksum: use fwts_checksum * lib: fwts_acpi_tables: use fwts_checksum * lib: multiproc: use fwts_checksum * lib: add checksum helper fwts_checksum() * bios: smbios: use systab efi helper * lib: fwts_acpi_tables: use systab efi helper * lib: add efi systab scanning helper. * acpi: fwts_apci_method + method: improve error checking and object dumping -- Colin King Tue, 18 Oct 2011 16:36:00 +0100 fwts (0.24.07) oneiric; urgency=low * uefi: uefidump: use new fwts_guid_buf_to_str() * acpi: wmi: use new fwts_guid_buf_to_str() * lib: Add GUID string formatting * acpi: method: use acpi_methods_* funcs * lib: add acpi_methods_* handling -- Colin King Fri, 14 Oct 2011 15:56:00 +0100 fwts (0.24.06) oneiric; urgency=low * libfwtsiasl: ensure .y builds are not racey * acpi: method: fix typo on method_exists() func name * lib: fwts_log: fix off-by error on month on %date (LP: #872736) * Add debian autopackager -- Colin King Thu, 13 Oct 2011 11:29:00 +0100 fwts (0.24.05) oneiric; urgency=low * libfwtsiasl: fix pbuilder warnings * Add notes on structure and coding conventions of fwts * example: blank test - fix to use new framework style * fwts_wrapper: update copyright dates * Remove old cruft * Update README_ACPICA to keep in sync with latest ACPICA * Update with autoreconf respin * Update to ACPICA, commit 45ebe2cf90521fe511b827007e9c1e5c610292b6 -- Colin King Fri, 7 Oct 2011 19:01:00 +0100 fwts (0.24.04) oneiric; urgency=low * acpi: checksum: output correct checksum value (LP: #869018) * framework: -T option should be -t, (LP: #868226) * klog: detect WMI driver pr_info() warning messages (LP: #865384) -- Colin King Thu, 6 Oct 2011 14:50:00 +0100 fwts (0.24.03) oneiric; urgency=low * acpi: acpitables: Tidy FADT RESET_REG error message. * acpi: method: relax _BIF, _BIX tests. * acpi: acpitables: fix spurious advice infomation (LP: #862170) * acpi: method: less noisy errors when many _BCL levels are in wrong order. * acpi: method: Check _BST charging + discharging more thoroughly (LP: #862153) -- Colin King Thu, 29 Sep 2011 10:48:49 +0100 fwts (0.24.02) oneiric; urgency=low * acpi: method: check AE_OK return from AcpiEvaluateObject() * pci: maxreadreq: add more helpful advice (LP: #859651) * acpi: method: Make incorrect _WAK returns non-fatal as kernel ignores these anyway. * lib: fwts_hwinfo: do pactl checking correctly (LP: #837606) -- Colin King Wed, 28 Sep 2011 11:42:00 +0100 fwts (0.24.01) oneiric; urgency=low * add fwts-collect man page * debian: add fwts-collect to fwts installer * scripts: fwts-collect - collect up logs for bug reporting -- Colin King Tue, 20 Sep 2011 18:28:46 +0100 fwts (0.24.00) oneiric; urgency=low * iso-image: fwts_wrapper dialog wrapper script. * assets: fwts logo -- Colin King Tue, 20 Sep 2011 18:16:00 +0100 fwts (0.23.23) oneiric; urgency=low * cmos: cmosdump: fix floppy disk info * cmos: cmosdump: fix register 0x0b dump (LP: #837969) -- Colin King Wed, 31 Aug 2011 17:07:34 +0100 fwts (0.23.22) oneiric; urgency=low * declare various private variables and functions static (LP: #837215) * bios: multiproc: make mpdump_get_apic_id static * bios: multiproc: remove redundant mpcheck_get_apic_id() * cpu: virt: make cpu_has_vmx static * acpi: lid: make lid_*() static * acpi: ac_adapter: make ac_adapter_check_field static * acpi: powerbutton: make power_button_check_field static * acpi: brightness: make *_setting static * cpu: virt: make cpu_has_svm, vt_locked_by_bios static * lib: framework: make init funcs static * acpi: wmi: make wmi_wdg_flags_to_text() static * bios: mtrr: rename fwts_virt_cpuinfo to fwts_cpuinfo * acpi: acpidump: make table_vec static * cpu: msr: make cpuinfo static * acpi: ac_adapter: make ac_adapterdir static * acpi: lid: make liddir static * acpi: powerbutton: make power_buttondir static * bios: mtrr: remove redundant mtrr_resource * acpi: acpidump: fix typo 'Sealed Case' * cpu: msr: drop TSC_AUX and SMBASE tests (LP: #834591) -- Colin King Tue, 30 Aug 2011 09:18:53 +0100 fwts (0.23.21) oneiric; urgency=low * acpi: acpitables: remove false positive warnings (LP: #833644) * acpi: method: don't run mobile platform tests on servers (LP: #834554) * bios: mpcheck: check uniqueness of CPU APIC IDs (LP: #834504) * acpi: cstates: drop experimental status of the test. -- Colin King Fri, 26 Aug 2011 11:05:19 +0100 fwts (0.23.20) oneiric; urgency=low * hpet: hpet_check: get HPET base on newer kernel logs (LP: #832273) -- Colin King Tue, 23 Aug 2011 19:56:23 +0100 fwts (0.23.19) oneiric; urgency=low * apci: fan: use newer thermal interface, test fans on loaded CPU (LP: #831905) -- Colin King Tue, 23 Aug 2011 12:12:12 +0100 fwts (0.23.18) oneiric; urgency=low * lib: acpica: ensure table pointers are NULL when table input is corrupt (LP: #826774) -- Colin King Mon, 15 Aug 2011 15:33:30 +0100 fwts (0.23.17) oneiric; urgency=low * acpi: method: tidy up source. * acpi: acpitables: tidy up source. * acpi: wmi: tidy up source. * acpi: wakealarm: tidy up source. * acpi: syntaxcheck: tidy up source. * acpi: s4: tidy up source. * acpi: s3power: tidy up source. * acpi: s3: tidy up source. * acpi: powerbutton: tidy up source. * acpi: osilinux: tidy up source. * acpi: mcfg: tidy up source. * acpi: lid: fix failure format string (LP: #826676) * acpi: klog: tidy up source. * acpi: fan: tidy up source. * acpi: fadt: tidy up source. * acpi: dmar: tidy up source. * acpi: cstates: tidy up source. * acpi: common: tidy up source. * acpi: checksum: tidy up source. * acpi: battery: tidy up source. * acpi: apicinstance: tidy up source. * acpi: acpiinfo: tidy up source. * acpi: ac_adapter: tidy up source. -- Colin King Mon, 15 Aug 2011 12:11:12 +0100 fwts (0.23.16) oneiric; urgency=low * cpu: virt: tidy up sources. * cpu: nx: tidy up source. * cpu: msr: tidy up source. * cpu: microcode: tidy up source. * cpu: maxfreq: tidy up source. * cpu: cpufreq: tidy up source. * hotkey: hotkey: tidy up source. * dmi: dmi_decode: fix failure format string (LP: #826418) * kernel: version: tidy up source. * kernel: oops: tidy up source. * cmos: cmosdump: tidy up source. * apic: apicedge: tidy up source. * pci: maxreadreq: tidy up source. * pci: crs: tidy up source. -- Colin King Sun, 14 Aug 2011 21:04:00 +0100 fwts (0.23.15) oneiric; urgency=low * lib: fwts_framework: helper macros: use fmt arg * bios: os2gap: add more failure info. * bios: smbios: tidy up source. * bios: romdump: tidy up source. * bios: os2gap: fix failure format string (LP: #825945) * bios: mtrr: tidy up source. * bios: memmapdump: tidy up source. * bios: hdaaudio: tidy up source. * bios: ebda_region: tidy up source. * bios: ebdadump: tidy up source. * bios: bios_info: tidy up source. * bios: bios32: tidy up source. * bios: mpcheck: tidy up source. -- Colin King Sat, 13 Aug 2011 21:33:00 +0100 fwts (0.23.14) oneiric; urgency=low * lib: fwts_acpi_tables: make acpidump parsing more resiliant to bad data. * lib: fwts_acpi_tables: read in data correctly (LP: #818042) * acpi: checksum: handle RSDP. * lib: fwts_acpi_tables.h: add fwts_acpi_checksum * lib: fwts_acpi_tables: name RSD PTR to RSDP. * lib: fwts_acpi_tables: handle ACPI 1.0 sized RSDP * lib: fwts_acpi: rsdp requires a 64 bit xsdt * acpi: syntaxcheck: log errors as per-test failures and include unique error code in error. * acpi: acpitables: add more advice, deprecate FACS test, it was nonsense. -- Colin King Fri, 29 Jul 2011 17:28:00 +0100 fwts (0.23.13) oneiric; urgency=low * lib + method test: better handling of object eval errors. (LP: #816877) * apci: method: detect zero sized access bit width (LP: #816877) * acpi: method: check for NULL _DDC and _UID object returns. * acpi: method: only derefernce non-null _DOD objects (LP: #816824) * lib: acpica: make hash unsigned int (LP: #816819) * acpi: syntaxcheck: don't erroneously put syntaxcheck_table. * cmosdump: print drive info with %hhu and pluralise. * mpcheck: print uint8_t values with %hhu * mtrr: print entry reg as uint8_t. * bios32: print bios32 values in hex. * fadt: ensure we print out preferred_pm_profile as 8 bit int. * acpitables: ensure we are printing out correct int values. * acpi: wmi: fix typo in test identifier. -- Colin King Wed, 27 Jul 2011 14:17:23 +0100 fwts (0.23.12) oneiric; urgency=low * lib + tests: add unique test label that identifies each failure test. * lib + tests: replace fwts_failed_low with fwts_failed. * lib + tests: replace fwts_failed_medium with fwts_failed. * lib + tests: replace fwts_failed_high with fwts_failed. * lib + tests: replace fwts_failed_critical with fwts_failed. * lib: remove fwts_failed_level macro * lib + tests: fwts_failed now includes log level. * lib: fix ARM FTBFS (LP: #814745) * apcica lib: fake PCI config reads (LP: #813376) -- Colin King Mon, 25 Jul 2011 14:54:44 +0100 fwts (0.23.11) oneiric; urgency=low * data: klog.json: add 7 more MTRR BIOS misconfiguration log checks. -- Colin King Mon, 18 Jul 2011 16:44:42 +0100 fwts (0.23.10) oneiric; urgency=low * lib: fwts_log: increase log width. * apci: method: reduce infinite AML loops to 0x0100 iterations. * cpu: msr: remove redundant variable 'failed'. * cpu: cpufreq: remove redundant variable i * bios: smbios: comment out redundant assigment. * acpi: method: fix ommitted args to method evaluate calls. * lib: fwts_framework: remove redundant var percent. -- Colin King Tue, 5 Jul 2011 17:42:00 +0100 fwts (0.23.09) oneiric; urgency=low * acpi: syntaxcheck: fix segfault due to null error list (LP: #805980) -- Colin King Tue, 5 Jul 2011 15:45:20 +0100 fwts (0.23.08) oneiric; urgency=low * kernel: oops: make oops failures critical (LP: #797649) -- Colin King Wed, 15 Jun 2011 12:08:00 +0100 fwts (0.23.07) oneiric; urgency=low * fix changelog LP bug number formatting * fix incorrect aborted total (LP: #789114) * fix table loading (LP: #784013) * fwts_iasl: fix segfault on bad input (LP: #781709) * acpi: method: fix incorrect sem counts (LP: #744405) -- Colin King Fri, 27 May 2011 16:20:23 +0100 fwts (0.23.06) oneiric; urgency=low * acpi: s3power: measure power loss during S3 suspend. * lib: fwts_framework: fix LP: #789114, incorrect aborted total * acpi: s3: remove redundant deinit -- Colin King Fri, 27 May 2011 15:17:02 +0100 fwts (0.23.05) oneiric; urgency=low * lib: fwts_acpi_tables: fix LP: #784013, cannot load tables. * acpi: apicinstance: fix 64 bit build error * acpi: acpidump: fix 64 bit build error * lib: fwts_pipeio: fix 64 bit build error * lib: fwts_list: tidy up fwts_list_len -- Colin King Tue, 17 May 2011 16:42:00 +0100 fwts (0.23.04) oneiric; urgency=low * lib: fwts_iasl: fix LP: #781709, segfault on bad input * lib: fwts_stringextras: use const where appropriate * lib: fwts_pipe_read: length should be ssize_t * lib: fwts_mp_checksum: use const where appropriate * lib: fwts_mmap: use const where appropriate * lib: fwts_firmware: remove redundant FLAGS * lib: fwts_cmos_read: offset should be const uint8_t * lib: fwts_tag: use const where appropriate * lib: fwts_uefi: use const where appropriate * lib: fwts_formatting: use const where appropriate * lib: fwts_acpi_tables: use const and size_t where appropriate * lib: fwts_acpi_table_info: make data const void * and length size_t * lib + tests: fwts_acpi_event_read(): use size_t for length * lib: fwts_alloc: use const -- Colin King Thu, 12 May 2011 17:38:00 +0200 fwts (0.23.03) oneiric; urgency=low * acpi: syntaxcheck: remove redundant params * lib: fwts_multiproc: fix -Wextra warnings * lib: fwts_log.h: make magic unsigned int * lib: fwts_klog: fix calloc failure check * lib: fwts_dump: fix -Wextra warnings * lib: fwts_alloc: make magic unsigned int * lib: fwts_interactive: make fwts_getchar more robust * lib: fwts_cpu: call _exit() on signal * lib: fwts_text_list: remove fwts_text_list_dump * doc: manpage: update introduction -- Colin King Wed, 4 May 2011 08:59:42 +0100 fwts (0.23.02) oneiric; urgency=low * debian: control: fix typos * bios: mpcheck: fix reporting of incorrect CPU entry that has suspect LAPIC ID * bios: multiproc: drop APIC version check, fix io_apic_entries feedback. * acpi: method: fix typo in THERM check. * acpi: method: fix false alert with THERM check. * acpi: wmi: fix guidstr: should be all in uppercase. * cpu: msr: Add AMD specific MSR checks. * cpu: msr: add CPU arch specific MSR checks. * lib: fwts_cpu: use sysconf to determine number of CPUs * acpi: method: fix LP: #744405, incorrect sem counts * method: rename *execute* -> *evaluate* * hotkey: check for keyboard find failure. * lib: acpica: disable single step debug when hitting AML_BREAK_POINT opcodes. * bios: hdaudio: minor tidy up of formatting and code. * acpi: s4: remove redundant 'Restarting tasks' check * acpi: wmi: check for known GUIDs -- Colin King Fri, 8 Apr 2011 10:36:52 +0100 fwts (0.23.01) oneiric; urgency=low * work around systems that don't support MAP32_BIT (LP: #739256) -- Colin King Mon, 21 Mar 2011 10:49:00 +0000 fwts (0.23.00) oneiric; urgency=low * post natty freeze, bug fixes and new features * fix segfault of method test on 64 bit machines (LP: #736874) * drop thermal_trip test (LP: #730132) * Fix cstates test (LP: #728685) * acpi: acpidump: use more sensible heading, fix SCI text * hpet: Fail test and skip sanity check when base address not found * bios: ebda_region: close fd on error * acpi: acpidump: use more sensible heading, fix SCI text * hpet: Fail test and skip sanity check when base address not found * bios: ebda_region: close fd on error. * lib: fwts_acpi_tables: check for broken table sizes. * lib: use low memory allocator for ACPI tables * lib: fwts: include fwts_alloc.h * lib: add 32 bit allocator * lib: multiproc: add check of lower 1K region * cpu: msr: fix 64 bit build warnings. * lib: summary: add totals to table. * cpu: msr: add MSR checking. * lib: cpu: add Intel and AMD cpu ident checks. * pci: crs: use FWTS_ROOT_PRIV flag * uefi: uefidump: use FWTS_ROOT_PRIV flag * pci: maxreadreq: use FWTS_ROOT_PRIV flag * hpet: hpet_check: use FWTS_ROOT_PRIV flag * hotkey: hotkey: use FWTS_ROOT_PRIV flag * dmi: dmi_decode: use FWTS_ROOT_PRIV flag * cpu: virt: use FWTS_ROOT_PRIV flag * cpu: nx: use FWTS_ROOT_PRIV flag * cpu: microcode: use FWTS_ROOT_PRIV flag * bios: smbios: use FWTS_ROOT_PRIV flag and remove .init * bios: romdump: use FWTS_ROOT_PRIV flag and remove .init * bios: mpdump: use FWTS_ROOT_PRIV flag * bios: mpcheck: use FWTS_ROOT_PRIV flag * bios: mtrr: use FWTS_ROOT_PRIV flag * bios: ebdadump: use FWTS_ROOT_PRIV flag and remove .init * bios: ebda_region: use FWTS_ROOT_PRIV flag * bios: bios32: use FWTS_ROOT_PRIV flag and remove .init * acpi: wakealarm: use FWTS_ROOT_PRIV flag * acpi: s4: use FWTS_ROOT_PRIV flag * acpi: s3: use FWTS_ROOT_PRIV flag * acpi: mcfg: use FWTS_ROOT_PRIV flag * acpi: fadt: use FWTS_ROOT_PRIV flag * cmos: cmosdump: use FWTS_ROOT_PRIV flag, remove init check * lib: framework: allow FWTS_ROOT_PRIV flag on test * lib: framework: add ROOT_PRIV flag, tidy _run_test * lib: framework: rationalise test status logging. * lib: framework: rename FWTS_*_TEXT to FWTS_FRAMEWORK_*, move typedef into header. * framework + tests: remove .headline, replace with .description * data: klog.json: add 6 MultiProcessor table checks. * lib, bios: mpcheck: move MP header signature to fwts_multiproc.h * bios: multiproc check - fix to make it a batch test. * bios: multiproc check - fix test heading. * add new multiproc table sanity checking. * method: reference /sys/class/thermal rather than /proc/acpi/thermal_zone * tests, lib: use new fwts_ebda_get() primitive * lib: add fwts_ebda_get - return EBDA offset for mmap'ing the region * acpi: acpudump: use more sensible heading, fix SCI text * bios: add ebdadump to dump EBDA region * tests: use fwts_mmap primitives * lib: use fwts_mmap primitives * lib: add fwts_mmap - memory mapping primitives * multiproc: mpdump: collate data into tables. * lib + test: initial MultiProc test support * hpet: Fail test and skip sanity check when base address not found * bios: ebda_region: close fd on error. -- Colin King Thu, 17 Mar 2011 16:43:54 +0000 fwts (0.22.03) natty; urgency=low * Fixes for lintian warnings (LP: #725336) * fix build order (acpica/source/compiler must build first) -- Colin King Fri, 25 Feb 2011 23:15:01 +0000 fwts (0.22.02) natty; urgency=low * clean up libtool linker usage. * fix build order (acpica/source/compiler must build first). * remove redundant 2nd pciutils from control file. * lib: virt: rename exec_cpuid to fwts_exec_cpuid * lib: acpid: rename event funcs with fwts_ prrefix * configure.ac: remove AC_PROG_OBJCOPY * debian: control: add more description to libraries. * acpi: acpidump: fix typo 'suppored' -> 'supported'. * doc: fwts man page: fix - to \- -- Colin King Fri, 25 Feb 2011 16:36:23 +0000 fwts (0.22.01) natty; urgency=low * Fixes for minor bugs (LP: #723746) * bios: mtrr: fix: disable MTRR VGA test as it is not helpful. * doc: fix fwts man page, remove duplicated -s options. * acpi: s3: fix typo. * acpi: method: comments on what needs testing. * bios: mtrr: fix to stop valgrind complaining. * lib: fwts_summary: fix summary fields to fit in 80 columns. -- Colin King Wed, 23 Feb 2011 14:37:00 +0000 fwts (0.22.00) natty; urgency=low * New version for Natty release (LP: #720271) * New upstream version 0.22.00 -- Colin King Wed, 16 Feb 2011 18:47:59 +0000 fwts (0.21.15) natty; urgency=low * summary: collate summary items for a more compact summary. * klog: add better progress feedback when scanning large logs. * args: fix optind offset bug. * klog: add _BCM execution failure check. * klog: add more intelligence to FADT checking. * New upstream version 0.21.15 -- Colin King Wed, 16 Feb 2011 16:20:00 +0000 fwts (0.21.14) natty; urgency=low * acpi: s3,s4: break up pass/fail message summary. * New upstream version 0.21.14 -- Colin King Tue, 15 Feb 2011 19:50:04 +0000 fwts (0.21.13) natty; urgency=low * Print informational count when non-zero * tidy up progress output. * change results text "informational" to "info only". * cpu microcode test: remove need to alloc/free cpu list. * bios mtrr test: check for list_new NULL return. * arg handling: remove need for alloc/free of options_list * sort tests on name when dumping list of available tests. * New upstream version 0.21.13 -- Colin King Sat, 12 Feb 2011 18:38:20 +0000 fwts (0.21.12) natty; urgency=low * Print informational count when non-zero * New upstream version 0.21.12 -- Colin King Fri, 11 Feb 2011 23:29:00 +0000 fwts (0.21.11) natty; urgency=low * Fix skipped message truncation * Make static libs into shared libs * New upstream version 0.21.11 -- Colin King Fri, 11 Feb 2011 22:49:40 +0000 fwts (0.21.10) natty; urgency=low * Extend progress feedback. * New upstream version 0.21.10 -- Colin King Thu, 10 Feb 2011 18:33:39 +0000 fwts (0.21.09) natty; urgency=low * Add more feedback during s3, s4 tests. * Add better arg checking post arg parsing. * Fix a bunch of typos in s3, s4 help. * New upstream version 0.21.09 -- Colin King Thu, 10 Feb 2011 15:13:22 +0000 fwts (0.21.08) natty; urgency=low * Ensure all tests log a passed/failed/skipped/aborted/infoonly state (LP: #715755) * Add --s3-device-check-delay option * Add --s4-device-check-delay option * New upstream version 0.21.08 -- Colin King Wed, 9 Feb 2011 15:08:20 +0000 fwts (0.21.07) natty; urgency=low * Add --s3-quirks option * Add --s4-quirks option * Update man page * New upstream version 0.21.07 -- Colin King Wed, 9 Feb 2011 11:07:02 +0000 fwts (0.21.06) natty; urgency=low * Add hwinfo device checking for s3 and s4 tests * Update man page * New upstream version 0.21.06 -- Colin King Wed, 9 Feb 2011 00:51:47 +0000 fwts (0.21.05) natty; urgency=low * acpi: dmar: don't free table as it's a cached copy. * New upstream version 0.21.05 -- Colin King Tue, 8 Feb 2011 13:38:31 +0000 fwts (0.21.04) natty; urgency=low * s3, s4: multiple tests must run at least twice if multiples not specified. * s4, s4: scan log for oopsing to catch driver/kernel breakages. * oops: Add test to scan for random kernel oopsing. * manpage - fix data/date typo. * New upstream version 0.21.04 -- Colin King Wed, 2 Feb 2011 12:03:03 +0000 fwts (0.21.03) natty; urgency=low * Add uefidump to dump UEFI variables * Fix cmosdump - was dumping too much data in hex dump. * Add klog check for banned ioport operations from AML. * New upstream version 0.21.03 -- Colin King Tue, 25 Jan 2011 15:05:05 +0000 fwts (0.21.02) natty; urgency=low * Add --s4-min-delay, --s4-max-delay, --s4-delay-delta S4 delay options * New upstream version 0.21.02 -- Colin King Fri, 21 Jan 2011 16:06:49 +0000 fwts (0.21.01) natty; urgency=low * Fix null pointer bug * New upstream version 0.21.01 -- Colin King Sun, 16 Jan 2011 19:42:03 +0000 fwts (0.21.00) natty; urgency=low * New version for release (LP: #702821) -- Colin King Fri, 14 Jan 2011 11:13:00 +0000 fwts (0.20.20) natty; urgency=low * acpi: wmi: handle "table not found" correctly. * doc: manpage. fix --disassemble-aml text. * lib: framework: report month correctly (offset by 1) -- Colin King Fri, 14 Jan 2011 09:28:00 +0000 fwts (0.20.19) natty; urgency=low * New version for release (LP: #701843) * lib: framework: add --disassemble-aml to help. * lib: fwts_acpi.h: remove old FWTS_GET_* macros. * all: update copyright date. * lib: framework: use list head macro. * lib: list: include list head and tail macros * hpet: hpet_check: use list iterator (for klog scanning). * bios: mtrr: minor rewrite to stop scoping of item confusion when doing mtrr_bios_list scanning * bios: mtrr: use list iterator * New upstream version 0.20.19 -- Colin King Wed, 12 Jan 2011 09:58:07 +0000 fwts (0.20.18) natty; urgency=low * Add --disassemble-aml to disassemble AML in DSDT and SSDT tables * Add more syntaxcheck advise * New upstream version 0.20.18 -- Colin King Mon, 10 Jan 2011 16:11:52 +0000 fwts (0.20.17) natty; urgency=low * Add --s4-sleep-delay=N option to specify delays during hibernate * Add syntaxcheck advise from a json lookup table * New upstream version 0.20.17 -- Colin King Thu, 6 Jan 2011 19:17:02 +0000 fwts (0.20.16) natty; urgency=low * Dump out AML source with error message on syntaxcheck test * New upstream version 0.20.16 -- Colin King Thu, 6 Jan 2011 11:47:47 +0000 fwts (0.20.15) natty; urgency=low * Disable case sensitivity in lex scanner * Tidy up iasl specific code * New upstream version 0.20.15 -- Colin King Wed, 5 Jan 2011 19:07:59 +0000 fwts (0.20.14) natty; urgency=low * Add debian/libfwtsiasl1.install * New upstream version 0.20.14 -- Colin King Wed, 5 Jan 2011 14:14:05 +0000 fwts (0.20.13) natty; urgency=low * Include ACPICA iasl compiler into a library * Remove --iasl option * Remove need to check for existance of iasl tool * New upstream version 0.20.13 -- Colin King Wed, 5 Jan 2011 13:18:02 +0000 fwts (0.20.12) natty; urgency=low * Update with latest ACPICA sources * New upstream version 0.20.12 -- Colin King Tue, 28 Dec 2010 16:55:43 +0000 fwts (0.20.11) natty; urgency=low * Add and use fwts_list_data() to access list data more abstractly * acpica: fix init/deinit bug, avoid double free'ing of DSDT * framework: add per test pass/fail/abort/warn/skip summary * framework: move per test results to fwts_framework_ops so we can tabulate in summary * framework: remove current_ops * framework: fix memory leak detected with valgrind * method: remove unwanted _OSI cruft * remove trailing whitespaces from sources * framework: pretty print -h, --help output to tty width * framework: fix typos in help * New upstream version 0.20.11 -- Colin King Tue, 21 Dec 2010 14:55:58 +0000 fwts (0.20.10) natty; urgency=low * New version for release (LP: #690598) * Fix a couple of memory leaks * Add MTRR misconfiguration klog checks * oscilinux: make test a warning rather than a low failure * klog, only scan unique error messages and report repeats, reduces noise * _OSI(Linux) klog errors logged as just information rather than an error * New upstream version 0.20.10 -- Colin King Wed, 15 Dec 2010 11:27:27 +0000 fwts (0.20.09) natty; urgency=low * show available tests in short form * don't display progress on interactive tests * New upstream version 0.20.09 -- Colin King Wed, 15 Dec 2010 00:01:23 +0000 fwts (0.20.08) natty; urgency=low * method test: check for null object returns. * New upstream version 0.20.08 -- Colin King Thu, 9 Dec 2010 15:05:44 +0000 fwts (0.20.07) natty; urgency=low * s4 test: only attempt to hibernate if swap is available * klog test: only dump advice if it's available. * More info in _WAK test failure * New upstream version 0.20.07 -- Colin King Thu, 9 Dec 2010 09:15:00 +0000 fwts (0.20.06) natty; urgency=low * Fix hangs on corrupt input ACPI table data * Add some IO APIC kernel log scanning checks * New upstream version 0.20.06 -- Colin King Tue, 7 Dec 2010 11:53:00 +0000 fwts (0.20.05) natty; urgency=low * Add --lp-tags-log option to log LP tags into the results log * Make --lp-tags just dump out all LP tags found in testing * New upstream version 0.20.05 -- Colin King Sat, 4 Dec 2010 19:22:39 +0000 fwts (0.20.04) natty; urgency=low * Fix stack smashing on corrupt ACPI dumped data input * Add -j, --json-data-path options * New upstream version 0.20.04 -- Colin King Sat, 4 Dec 2010 01:12:22 +0000 fwts (0.20.03) natty; urgency=low * Changes to run successfully on UEFI systems. * New upstream version 0.20.03 -- Colin King Fri, 3 Dec 2010 15:48:57 +0000 fwts (0.20.02) natty; urgency=low * Fix help and update man page for -u, --utils option * New upstream version 0.20.02 -- Colin King Fri, 3 Dec 2010 11:56:01 +0000 fwts (0.20.01) natty; urgency=low * Fix PowerPC and ARM FTBFS issues (LP: #684663) * New upstream version 0.20.01 -- Colin King Fri, 3 Dec 2010 11:09:49 +0000 fwts (0.20.00) natty; urgency=low * Add -u, --utils option * New upstream version 0.20.00 -- Colin King Wed, 1 Dec 2010 16:27:37 +0000 fwts (0.19.29) maverick; urgency=low * Fix 64 bit build warnings * Add more advice into method test * New upstream version 0.19.29 -- Colin King Mon, 30 Nov 2010 14:26:23 +0000 fwts (0.19.28) maverick; urgency=low * Add in acpitable MADT checks for APICs * dump out global_irq_base from MADT IO APIC correctly * New upstream version 0.19.28 -- Colin King Fri, 26 Nov 2010 18:43:01 +0000 fwts (0.19.27) maverick; urgency=low * Fix GCC warnings now that we're checking log printf() args * Add infinite loop checking in AML method execution * New upstream version 0.19.27 -- Colin King Fri, 26 Nov 2010 11:26:47 +0000 fwts (0.19.26) maverick; urgency=low * Add more ACPI method tests * New upstream version 0.19.26 -- Colin King Tue, 23 Nov 2010 15:41:34 +0000 fwts (0.19.25) maverick; urgency=low * Add in ACPICA core + ACPI method tests * New upstream version 0.19.25 -- Colin King Tue, 23 Nov 2010 10:02:10 +0000 fwts (0.19.24) maverick; urgency=low * Minor changes in help text and better CMOS error detection. * New upstream version 0.19.24 -- Colin King Sun, 21 Nov 2010 12:22:21 +0000 fwts (0.19.23) maverick; urgency=low * More intelligent advice for FADT pointer mismatches to FACS * New upstream version 0.19.23 -- Colin King Fri, 19 Nov 2010 18:36:56 +0000 fwts (0.19.22) maverick; urgency=low * Add \_SB_._OSC buffer overflow checking * Add more graceful ACPI table load failure error handling * New upstream version 0.19.22 -- Colin King Thu, 18 Nov 2010 13:48:03 +0000 fwts (0.19.21) maverick; urgency=low * Fix wmi and hpet test breakage * New upstream version 0.19.21 -- Colin King Mon, 15 Nov 2010 17:39:34 +0000 fwts (0.19.20) maverick; urgency=low * Add acpitable test * New upstream version 0.19.20 -- Colin King Mon, 15 Nov 2010 13:22:23 +0000 fwts (0.19.19) maverick; urgency=low * Add acpitable test * New upstream version 0.19.19 -- Colin King Fri, 12 Nov 2010 15:33:17 +0000 fwts (0.19.18) maverick; urgency=low * Update makefile * New upstream version 0.19.18 -- Colin King Thu, 11 Nov 2010 15:37:53 +0000 fwts (0.19.17) maverick; urgency=low * klog data now in json formatted datafile * New upstream version 0.19.17 -- Colin King Thu, 11 Nov 2010 14:59:02 +0000 fwts (0.19.16) maverick; urgency=low * New upstream version 0.19.16 -- Colin King Wed, 10 Nov 2010 16:24:27 +0000 fwts (0.19.15) maverick; urgency=low * New upstream version 0.19.15 -- Colin King Wed, 10 Nov 2010 09:15:02 +0100 fwts (0.19.14) maverick; urgency=low * New upstream version 0.19.14 -- Colin King Tue, 9 Nov 2010 15:59:32 +0100 fwts (0.19.13) maverick; urgency=low * New upstream version 0.19.13 -- Colin King Sat, 6 Nov 2010 15:35:10 +0100 fwts (0.19.12) maverick; urgency=low * New upstream version 0.19.12 -- Colin King Fri, 5 Nov 2010 15:33:23 +0100 fwts (0.19.11) maverick; urgency=low * New upstream version 0.19.11 -- Colin King Mon, 1 Nov 2010 17:37:52 +0100 fwts (0.19.10) maverick; urgency=low * New upstream version 0.19.10 -- Colin King Mon, 1 Nov 2010 16:47:21 +0100 fwts (0.19.09) maverick; urgency=low * New upstream version 0.19.09 -- Colin King Sat, 30 Oct 2010 13:30:13 +0100 fwts (0.19.08) maverick; urgency=low * New upstream version 0.19.08 -- Colin King Sat, 30 Oct 2010 11:51:10 +0100 fwts (0.19.07) maverick; urgency=low * New upstream version 0.19.07 -- Colin King Thu, 28 Oct 2010 10:43:00 +0100 fwts (0.19.06) maverick; urgency=low * New upstream version 0.19.06 -- Colin King Mon, 18 Oct 2010 12:24:02 +0100 fwts (0.19.05) maverick; urgency=low * New upstream version 0.19.05 -- Colin King Mon, 11 Oct 2010 14:31:10 +0100 fwts (0.19.04) maverick; urgency=low * New upstream version 0.19.04 -- Colin King Wed, 6 Oct 2010 16:41:21 +0100 fwts (0.19.03) maverick; urgency=low * New upstream version 0.19.03 -- Colin King Wed, 6 Oct 2010 12:38:42 +0100 fwts (0.19.02) maverick; urgency=low * New upstream version 0.19.02 -- Colin King Tue, 5 Oct 2010 09:49:10 +0100 fwts (0.19.01) maverick; urgency=low * New upstream version 0.19.01 -- Colin King Mon, 4 Oct 2010 13:56:53 +0100 fwts (0.19.00) maverick; urgency=low * New upstream version 0.19.00 -- Colin King Mon, 4 Oct 2010 13:15:22 +0100 fwts (0.18.02) maverick; urgency=low * FADT test read correct ACPI table from /sys/firmware (closes: #627959) * New upstream version 0.18.02 -- Colin King Wed, 1 Sep 2010 11:11:20 +0100 fwts (0.18.01) maverick; urgency=low * New upstream version 0.18.01 -- Colin King Fri, 13 Aug 2010 10:04:54 +0100 fwts (0.18.0) maverick; urgency=low * New upstream version 0.18.0 -- Colin King Thu, 12 Aug 2010 19:09:19 +0100 fwts (0.17.9.1) maverick; urgency=low * New upstream version 0.17.9.1 -- Colin King Thu, 12 Aug 2010 19:01:49 +0100 fwts (0.17.9) maverick; urgency=low * New upstream version 0.17.9 -- Colin King Sat, 7 Aug 2010 20:17:31 +0100 fwts (0.17.8) maverick; urgency=low * New upstream version 0.17.8 -- Colin King Sat, 7 Aug 2010 19:08:56 +0100 fwts (0.17.7) maverick; urgency=low * New upstream version 0.17.7 -- Colin King Sat, 7 Aug 2010 18:59:59 +0100 fwts (0.17.6) maverick; urgency=low * New upstream version 0.17.6 -- Colin King Sat, 7 Aug 2010 18:14:48 +0100 fwts (0.17.5) maverick; urgency=low * New upstream version 0.17.5 -- Colin King Fri, 6 Aug 2010 09:14:45 +0100 fwts (0.17.4) maverick; urgency=low * New upstream version 0.17.4 -- Colin King Tue, 3 Aug 2010 15:36:02 +0100 fwts (0.17.3) maverick; urgency=low * New upstream version 0.17.3 -- Colin King Fri, 30 Jul 2010 08:54:12 +0100 fwts (0.17.2) maverick; urgency=low * New upstream version 0.17.2 -- Colin King Wed, 28 Jul 2010 12:20:07 +0100 fwts (0.17.1) maverick; urgency=low * New upstream version 0.17.1 -- Colin King Tue, 27 Jul 2010 17:57:01 +0100 fwts (0.17.0) maverick; urgency=low * New upstream version 0.17.0 -- Colin King Fri, 23 Jul 2010 16:32:58 +0200 fwts (0.16.14) maverick; urgency=low * New upstream version 0.16.14 -- Colin King Fri, 23 Jul 2010 10:56:53 +0200 fwts (0.16.13) maverick; urgency=low * New upstream version 0.16.13 -- Colin King Fri, 23 Jul 2010 10:40:40 +0200 fwts (0.16.12) maverick; urgency=low * New upstream version 0.16.12 -- Colin King Thu, 22 Jul 2010 15:49:14 +0100 fwts (0.16.11) maverick; urgency=low * New upstream version 0.16.11 -- Colin King Wed, 21 Jul 2010 10:54:20 +0200 fwts (0.16.10) maverick; urgency=low * New upstream version 0.16.10 -- Colin King Mon, 19 Jul 2010 14:11:26 +0100 fwts (0.16.09) maverick; urgency=low * New upstream version 0.16.09 -- Colin King Sat, 17 Jul 2010 14:55:38 +0100 fwts (0.16.08) maverick; urgency=low * New upstream version 0.16.08 -- Colin King Fri, 16 Jul 2010 11:22:17 +0100 fwts (0.16.07) maverick; urgency=low * New upstream version 0.16.07 -- Colin King Thu, 15 Jul 2010 15:25:44 +0100 fwts (0.16.06) maverick; urgency=low * New upstream version 0.16.06 -- Colin King Thu, 15 Jul 2010 10:07:43 +0100 fwts (0.16.05) maverick; urgency=low * New upstream version 0.16.05 -- Colin King Mon, 12 Jul 2010 10:22:40 +0100 fwts (0.16.04) maverick; urgency=low * New upstream version 0.16.04 -- Colin King Sat, 10 Jul 2010 19:22:54 +0100 fwts (0.16.03) maverick; urgency=low * New upstream version 0.16.03 -- Colin King Fri, 9 Jul 2010 18:41:53 +0100 fwts (0.16.02) maverick; urgency=low * New upstream version 0.16.02 -- Colin King Thu, 8 Jul 2010 19:29:36 +0100 fwts (0.16.01) maverick; urgency=low * New upstream version 0.16.01 -- Colin King Thu, 8 Jul 2010 13:59:51 +0100 fwts (0.16.0) maverick; urgency=low * New upstream version 0.16.0 -- Colin King Thu, 8 Jul 2010 10:49:04 +0100 fwts (0.15.9) maverick; urgency=low * New upstream version 0.15.9 -- Colin King Thu, 8 Jul 2010 09:25:17 +0100 fwts (0.15.8) maverick; urgency=low * New upstream version 0.15.8 -- Colin King Wed, 7 Jul 2010 20:00:03 +0100 fwts (0.15.7) maverick; urgency=low * New upstream version 0.15.7 -- Colin King Tue, 6 Jul 2010 19:50:01 +0100 fwts (0.15.6) maverick; urgency=low * New upstream version 0.15.6 -- Colin King Tue, 6 Jul 2010 10:13:06 +0100 fwts (0.15.5) maverick; urgency=low * New upstream version 0.15.5 -- Colin King Mon, 5 Jul 2010 18:23:47 +0100 fwts (0.15.4) maverick; urgency=low * New upstream version 0.15.4 -- Colin King Mon, 5 Jul 2010 17:05:00 +0100 fwts (0.15.3) maverick; urgency=low * New upstream version 0.15.3 -- Colin King Mon, 5 Jul 2010 12:22:25 +0100 fwts (0.15.2) maverick; urgency=low * New upstream version 0.15.2 -- Colin King Sun, 4 Jul 2010 15:33:27 +0100 fwts (0.15.1) maverick; urgency=low * New upstream version 0.15.1 -- Colin King Fri, 2 Jul 2010 06:15:03 +0100 fwts (0.15.0) maverick; urgency=low * New upstream version 0.15.0 -- Colin King Thu, 1 Jul 2010 12:45:32 +0100 fwts (0.14.8) maverick; urgency=low * New upstream version 0.14.8 -- Colin King Tue, 29 Jun 2010 17:55:26 +0100 fwts (0.14.7) maverick; urgency=low * New upstream version 0.14.7 -- Colin King Tue, 29 Jun 2010 10:59:02 +0100 fwts (0.14.6) maverick; urgency=low * New upstream version 0.14.6 -- Colin King Mon, 28 Jun 2010 16:49:19 +0100 fwts (0.14.5) maverick; urgency=low * New upstream version 0.14.5 -- Colin King Mon, 28 Jun 2010 15:54:19 +0100 fwts (0.14.4) maverick; urgency=low * New upstream version 0.14.4 -- Colin King Mon, 28 Jun 2010 12:52:25 +0100 fwts (0.14.3) maverick; urgency=low * New upstream version 0.14.3 -- Colin King Sun, 27 Jun 2010 11:52:50 +0100 fwts (0.14.2) maverick; urgency=low * New upstream version 0.14.2 -- Colin King Sat, 26 Jun 2010 20:09:37 +0100 fwts (0.14.1) maverick; urgency=low * New upstream version 0.14.1 -- Colin King Fri, 25 Jun 2010 17:11:49 +0100 fwts (0.14) maverick; urgency=low * New upstream version 0.14 -- Colin King Fri, 25 Jun 2010 10:40:02 +0100 fwts (0.13.1) maverick; urgency=low * New upstream version 0.13.1 -- Colin King Fri, 18 Jun 2010 15:26:53 +0100 fwts (0.13) maverick; urgency=low * New upstream version 0.13 -- Colin King Fri, 18 Jun 2010 10:48:50 +0100 fwts (0.12.4) maverick; urgency=low * New upstream version 0.12.4 -- Colin King Thu, 17 Jun 2010 17:55:01 +0100 fwts (0.12.3) maverick; urgency=low * New upstream version 0.12.3 -- Colin King Thu, 17 Jun 2010 14:09:35 +0100 fwts (0.12.2) maverick; urgency=low * New upstream version 0.12.2 -- Colin King Thu, 17 Jun 2010 12:18:16 +0100 fwts (0.12.1) maverick; urgency=low * New upstream version 0.12.1 -- Colin King Thu, 17 Jun 2010 11:40:43 +0100 fwts (0.12) maverick; urgency=low * New upstream version 0.12 -- Colin King Thu, 17 Jun 2010 10:01:08 +0100 fwts (0.11) maverick; urgency=low * New upstream version 0.11 -- Colin King Mon, 7 Jun 2010 09:04:13 +0100 fwts (0.1) maverick; urgency=low * New upstream version 0.1 -- Colin King Fri, 28 May 2010 11:15:26 +0100 debian/compat000066400000000000000000000000021231470457100135020ustar00rootroot000000000000007 debian/control000066400000000000000000000065201231470457100137120ustar00rootroot00000000000000Source: fwts Section: devel Priority: optional Maintainer: Firmware Testing Team Uploaders: Colin King , Keng-Yu Lin , Alex Hung , Chris Van Hoof , Ivan Hu Standards-Version: 3.9.3 Build-Depends: debhelper (>= 7.0.50~), autoconf, automake1.11, libtool, libpcre3-dev (>= 7.8), libjson0-dev (>= 0.9), flex, bison, hardening-wrapper, dh-autoreconf, dkms Package: fwts Architecture: i386 amd64 armel armhf arm64 ppc64 ppc64el Depends: libfwtsiasl1 (= ${binary:Version}), libfwtsacpica1 (= ${binary:Version}), libfwts1 (= ${binary:Version}), fwts-efi-runtime-dkms (= ${binary:Version}) [amd64] , ${shlibs:Depends}, ${misc:Depends}, pciutils Suggests: dmidecode Description: FirmWare Test Suite This is a firmware test suite that performs sanity checks on Intel/AMD PC firmware. It is intended to identify BIOS and ACPI errors and if appropriate it will try to explain the errors and give advice to help workaround or fix firmware bugs. It is primarily intended to be a Linux-centric firmware troubleshooting tool. Package: libfwtsiasl1 Architecture: i386 amd64 armel armhf arm64 ppc64 ppc64el Depends: ${shlibs:Depends}, ${misc:Depends} Description: FirmWare Test Suite ACPICA core built for iasl functionality The firmware test suite requires the ACPICA core engine to be built in compiler mode (with ACPI_ASL_COMPILER enabled) to support assembly and disassembly of ACPI Machine Language (AML) in the ACPI DSDT and SSDTs. This library contains this code with a thin fwts specific API to interface with fwts. Package: libfwtsacpica1 Architecture: i386 amd64 armel armhf arm64 ppc64 ppc64el Depends: ${shlibs:Depends}, ${misc:Depends} Description: FirmWare Test Suite ACPICA core built for acpiexec functionality The firmware test suite requires the ACPICA core engine to be built in execution mode (with ACPI_EXEC_APP enabled) to support run time execution of ACPI Machine Language (AML) in the ACPI DSDT and SSDTs. This library contains this code with a thin fwts specific API to interface with fwts. Package: libfwts1 Architecture: i386 amd64 armel armhf arm64 ppc64 ppc64el Depends: ${shlibs:Depends}, ${misc:Depends} Description: FirmWare Test Suite core support library This is the fwts core library. It contains a top level test framework and a rich range of firmware specific testing support code for the various fwts tests. Package: fwts-frontend Architecture: i386 amd64 armel armhf arm64 ppc64 ppc64el Priority: optional Depends: ${shlibs:Depends}, ${misc:Depends}, dialog, fwts Description: Firmware Test Suite frontend interface This is a dialog based interface designed to provide an easy to use method to execute tests via Firmware Test Suite and is also used as the primary interface within Firmware Test Suite live images. Package: fwts-efi-runtime-dkms Architecture: i386 amd64 armel armhf arm64 ppc64 ppc64el Priority: optional Depends: ${shlibs:Depends}, ${misc:Depends}, dkms, linux-headers-generic | linux-headers | linux-headers-generic-lts-quantal | linux-headers-generic-lts-raring | linux-headers-generic-lts-saucy Description: Firmware Test Suite UEFI Runtime Service kernel driver This package provides the efi_runtime kernel driver in DKMS format, which is required for accessing UEFI Runtime Services. debian/copyright000066400000000000000000000171451231470457100142470ustar00rootroot00000000000000Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ Upstream-Name: fwts Source: git://kernel.ubuntu.com/hwe/fwts Files: * src/acpica/source/compiler/fwts_iasl_interface.c src/acpica/source/compiler/fwts_iasl_interface.h Copyright: 2010-2014, Canonical Ltd License: GPL-2 On Debian systems, the complete text of the GNU General Public License can be found in `/usr/share/common-licenses/GPL-2'. Files: src/acpi/acpiinfo/acpiinfo.c src/acpi/battery/battery.c src/acpi/common/common.c src/acpi/cstates/cstates.c src/acpi/dmar/dmar.c src/acpi/fan/fan.c src/apic/apicedge/apicedge.c src/bios/ebda_region/ebda_region.c src/bios/mtrr/mtrr.c src/cpu/cpufreq/cpufreq.c src/cpu/microcode/microcode.c src/dmi/dmi_decode/dmi_decode.c src/hpet/hpet_check/hpet_check.c src/lib/include/fwts_e820.h src/lib/src/e820.c src/pci/maxreadreq/maxreadreq.c Copyright: 2010-2014, Canonical Ltd 2006, Intel Corporation License: GPL-2 On Debian systems, the complete text of the GNU General Public License can be found in `/usr/share/common-licenses/GPL-2'. Files: src/cpu/virt/virt.c src/lib/include/fwts_virt.h src/lib/src/virt.c Copyright: 2010-2014, Canonical Ltd 2007, AMD Inc 2006, Intel Corporation License: GPL-2 On Debian systems, the complete text of the GNU General Public License can be found in `/usr/share/common-licenses/GPL-2'. Files: src/cpu/virt/virt_svm.c src/cpu/virt/virt_vmx.c Copyright: 2010-2014, Canonical Ltd 2007, AMD Inc 2006, Intel Corporation License: LGPL On Debian systems, the complete text of the GNU General Public License can be found in `/usr/share/common-licenses/LGPL'. Files: src/acpcia/source/* Copyright: Copyright (c) 1999 - 2014, Intel Corp. License: other 2. License . 2.1. This is your license from Intel Corp. under its intellectual property rights. You may have additional license terms from the party that provided you this software, covering your right to use that party's intellectual property rights. . 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a copy of the source code appearing in this file ("Covered Code") an irrevocable, perpetual, worldwide license under Intel's copyrights in the base code distributed originally by Intel ("Original Intel Code") to copy, make derivatives, distribute, use and display any portion of the Covered Code in any form, with the right to sublicense such rights; and . 2.3. Intel grants Licensee a non-exclusive and non-transferable patent license (with the right to sublicense), under only those claims of Intel patents that are infringed by the Original Intel Code, to make, use, sell, offer to sell, and import the Covered Code and derivative works thereof solely to the minimum extent necessary to exercise the above copyright license, and in no event shall the patent license extend to any additions to or modifications of the Original Intel Code. No other license or right is granted directly or by implication, estoppel or otherwise; . The above copyright and patent license is granted only if the following conditions are met: . 3. Conditions . 3.1. Redistribution of Source with Rights to Further Distribute Source. Redistribution of source code of any substantial portion of the Covered Code or modification with rights to further distribute source must include the above Copyright Notice, the above License, this list of Conditions, and the following Disclaimer and Export Compliance provision. In addition, Licensee must cause all Covered Code to which Licensee contributes to contain a file documenting the changes Licensee made to create that Covered Code and the date of any change. Licensee must include in that file the documentation of any changes made by any predecessor Licensee. Licensee must include a prominent statement that the modification is derived, directly or indirectly, from Original Intel Code. . 3.2. Redistribution of Source with no Rights to Further Distribute Source. Redistribution of source code of any substantial portion of the Covered Code or modification without rights to further distribute source must include the following Disclaimer and Export Compliance provision in the documentation and/or other materials provided with distribution. In addition, Licensee may not authorize further sublicense of source of any portion of the Covered Code, and must include terms to the effect that the license from Licensee to its licensee is limited to the intellectual property embodied in the software Licensee provides to its licensee, and not to intellectual property embodied in modifications its licensee may make. . 3.3. Redistribution of Executable. Redistribution in executable form of any substantial portion of the Covered Code or modification must reproduce the above Copyright Notice, and the following Disclaimer and Export Compliance provision in the documentation and/or other materials provided with the distribution. . 3.4. Intel retains all right, title, and interest in and to the Original Intel Code. . 3.5. Neither the name Intel nor any other trademark owned or controlled by Intel shall be used in advertising or otherwise to promote the sale, use or other dealings in products derived from or relating to the Covered Code without prior written authorization from Intel. . 4. Disclaimer and Export Compliance . 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A PARTICULAR PURPOSE. . 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY LIMITED REMEDY. . 4.3. Licensee shall not export, either directly or indirectly, any of this software or system incorporating such software without first obtaining any required license or other approval from the U. S. Department of Commerce or any other agency or department of the United States Government. In the event Licensee exports any such software from the United States or re-exports any such software from a foreign destination, Licensee shall ensure that the distribution and export/re-export of the software is in compliance with all laws, regulations, orders, or other restrictions of the U.S. Export Administration Regulations. Licensee agrees that neither it nor any of its subsidiaries will export/re-export any technical data, process, software, or service, directly or indirectly, to any country for which the United States government or any agency thereof requires an export license, other governmental approval, or letter of assurance, without first obtaining such license, approval or letter. debian/fwts-efi-runtime-dkms.dkms000066400000000000000000000002771231470457100173330ustar00rootroot00000000000000PACKAGE_NAME="fwts-efi-runtime-dkms" PACKAGE_VERSION="#MODULE_VERSION#" MAKE[0]="KVER=$kernelver make" BUILT_MODULE_NAME[0]="efi_runtime" DEST_MODULE_LOCATION[0]="/updates" AUTOINSTALL="yes" debian/fwts-frontend.install000066400000000000000000000002161231470457100164730ustar00rootroot00000000000000live-image/fwts-frontend-text usr/bin live-image/fwts-live-dialogrc usr/share/fwts usr/share/man/man1/fwts-frontend-text.1 usr/share/man/man1 debian/fwts.install000066400000000000000000000003271231470457100146610ustar00rootroot00000000000000data/klog.json usr/share/fwts data/syntaxcheck.json usr/share/fwts usr/bin/fwts usr/bin usr/share/man/man1/fwts.1 usr/share/man/man1 scripts/fwts-collect usr/bin usr/share/man/man1/fwts-collect.1 usr/share/man/man1 debian/libfwts1.install000066400000000000000000000000471231470457100154300ustar00rootroot00000000000000usr/lib/fwts/libfwts.so.* usr/lib/fwts debian/libfwtsacpica1.install000066400000000000000000000000551231470457100165700ustar00rootroot00000000000000usr/lib/fwts/libfwtsacpica.so.* usr/lib/fwts debian/libfwtsiasl1.install000066400000000000000000000000531231470457100162760ustar00rootroot00000000000000usr/lib/fwts/libfwtsiasl.so.* usr/lib/fwts debian/rules000077500000000000000000000012701231470457100133640ustar00rootroot00000000000000#!/usr/bin/make -f export DEB_BUILD_HARDENING=1 export AUTOMAKE=automake-1.11 export ACLOCAL=aclocal-1.11 DEB_BUILD_ARCH := $(shell dpkg-architecture -qDEB_BUILD_ARCH) DEBVERS := $(shell dpkg-parsechangelog | grep ^Version: | cut -d' ' -f2 \ | cut -d- -f1) VERSION := $(shell echo '$(DEBVERS)' | sed -e 's/[+-].*//' -e 's/~//g') DKMS_SRC_DIR := $(CURDIR)/debian/fwts-efi-runtime-dkms/usr/src/fwts-efi-runtime-dkms-$(VERSION) override_dh_auto_install: install -d $(DKMS_SRC_DIR) cp -a efi_runtime/* $(DKMS_SRC_DIR) dh_auto_install override_dh_dkms: dh_dkms -V $(VERSION) override_dh_auto_test: ifneq ($(DEB_BUILD_ARCH),arm64) dh_auto_test $@ endif %: dh $@ --with autoreconf,dkms debian/source/000077500000000000000000000000001231470457100136045ustar00rootroot00000000000000debian/source/format000066400000000000000000000000141231470457100150120ustar00rootroot000000000000003.0 (quilt) doc/000077500000000000000000000000001231470457100116275ustar00rootroot00000000000000doc/fwts-collect.1000066400000000000000000000037531231470457100143270ustar00rootroot00000000000000.\" Hey, EMACS: -*- nroff -*- .\" First parameter, NAME, should be all caps .\" Second parameter, SECTION, should be 1-8, maybe w/ subsection .\" other parameters are allowed: see man(7), man(1) .TH FWTS 1 "2 January, 2014" .\" Please adjust this date whenever revising the manpage. .\" .\" Some roff macros, for reference: .\" .nh disable hyphenation .\" .hy enable hyphenation .\" .ad l left justify .\" .ad b justify to both left and right margins .\" .nf disable filling .\" .fi enable filling .\" .br insert line break .\" .sp insert n+1 empty lines .\" for manpage-specific macros, see man(7) .SH NAME fwts-collect \- collect logs for fwts bug reporting. .br .SH SYNOPSIS .B fwts-collect .RI [ FILES ] .br .SH DESCRIPTION This manual page documents briefly the .B fwts-collect firmware test suite log collecting tool. The tool .B fwts-collect collects logs and various system and firmware dumps into the gzip'd tar ball fwts-logs.tar.gz which can then be added to bug reports. It collects data from /proc/iomem, /proc/mtrr, /proc/interrupts, IRQ counts from /sys/firmware/acpi/interrupts and kernel logs. It also invokes fwts and gathers ACPI tables, memorymaps, MultiProcessor table dumps, CMOS data, UEFI variables, EBDA region, kernel version and ACPI version information. .B fwts using sudo is required. .br Running .B fwts with no options will collect logs automatically. However, one can also specify the names of addition files to be added to the gzip'd tar ball. .P .SH EXAMPLES .LP Gather up logs into fwts-logs.tar.gz .RS 8 sudo fwts-collect .RE .LP Gather up logs and also /var/log/pm-powersave.log .RS 8 sudo fwts-collect /var/log/pm-powersave.log .SH SEE ALSO .BR fwts (1), .BR dmidecode (8), .BR lspci (8) .SH AUTHOR fwts-collect was written by Colin King .PP This manual page was written by Colin King , for the Ubuntu project (but may be used by others). doc/fwts-frontend-text.1000066400000000000000000000034501231470457100154750ustar00rootroot00000000000000.\" Hey, EMACS: -*- nroff -*- .\" First parameter, NAME, should be all caps .\" Second parameter, SECTION, should be 1-8, maybe w/ subsection .\" other parameters are allowed: see man(7), man(1) .TH FWTS-FRONTEND 1 "2 January, 2014" .\" Please adjust this date whenever revising the manpage. .\" .\" Some roff macros, for reference: .\" .nh disable hyphenation .\" .hy enable hyphenation .\" .ad l left justify .\" .ad b justify to both left and right margins .\" .nf disable filling .\" .fi enable filling .\" .br insert line break .\" .sp insert n+1 empty lines .\" for manpage-specific macros, see man(7) .SH NAME fwts-frontend-text \- text based interface to fwts. .br .SH SYNOPSIS .B fwts-frontend-text .br .SH DESCRIPTION This manual page briefly documents the .B fwts-frontend-text utility. The tool .B fwts-frontend-text executes a user-friendly interface to the Firmware Test Suite, providing the user a simple interface to execute all batch tests or the ability to select individual tests to execute. .B fwts-frontend-text should be run with root privilege, for example using sudo. .br .LP Running .B fwts-frontend-text with the argument noautoshutdown will prevent the system from shutting down after tests have been executed. .P .SH EXAMPLES .LP Execute fwts-frontend-text .RS 8 sudo fwts-frontend-text .RE .LP Execute fwts-frontend-text and disable automatic shutdown .RS 8 sudo fwts-frontend-text noautoshutdown .SH SEE ALSO .BR fwts (1), .BR dmidecode (8), .BR lspci (8) .SH AUTHOR fwts-frontend-text was written by Colin King , and Chris Van Hoof .PP This manual page was written by Chris Van Hoof , for the Ubuntu project (but may be used by others). doc/fwts.1000066400000000000000000000325131231470457100127000ustar00rootroot00000000000000.\" Hey, EMACS: -*- nroff -*- .\" First parameter, NAME, should be all caps .\" Second parameter, SECTION, should be 1-8, maybe w/ subsection .\" other parameters are allowed: see man(7), man(1) .TH FWTS 1 "2 January, 2014" .\" Please adjust this date whenever revising the manpage. .\" .\" Some roff macros, for reference: .\" .nh disable hyphenation .\" .hy enable hyphenation .\" .ad l left justify .\" .ad b justify to both left and right margins .\" .nf disable filling .\" .fi enable filling .\" .br insert line break .\" .sp insert n+1 empty lines .\" for manpage-specific macros, see man(7) .SH NAME fwts \- a firmware test suite to identify firmware bugs. .br .SH SYNOPSIS .B fwts .RI [ options ] .RI [ test(s) ] .br .SH DESCRIPTION This manual page documents briefly the .B fwts firmware test suite. The tool .B fwts is comprised of over fifty tests that are designed to examine and test different aspects of PC firmware. Many of these tests need super user access to extract tables and interact with the firmware and ACPI, so running .B fwts using sudo is required. .br Running .B fwts with no options will run through all the batch tests that require no user interaction. However, one can select just specific tests to run if required. .P By default .B fwts outputs the test results into the log file .B results.log however a different log file name can be specified and if required, output to stderr or stdout can be selected. .P Note that there a variety of tests, including tests that can potentially hang a machine (such as a suspend/hibernate/resume). .SH OPTIONS fwts options are as follow: .TP .B \- output results to stdout. .TP .B \-\-acpica enable ACPICA execution mode options. These can be specified as a comma separated list of one or more options. Avaiable options are: serialized (serialized execution of AML), slack (run in less pedeantic mode), ignore\-errors (ignore ACPICA exception errors), disable\-auto\-repair (disable ACPICA from automatically fixing broken ACPICA controls). Note that the slack mode will turn on implicit returns of zero on control methods to attempt to allow buggy AML to work on non-Windows systems. .TP .B \-\-acpica\-debug enable ACPICA debug warning and error messages when invoking the ACPICA subsystem. This is mainly for fwts developers to help track down any ACPICA interfacing issues with fwts. .TP .B \-a, \-\-all run all the tests. .TP .B \-b, \-\-batch run the non-interactive batch tests. Batch tests require no user interaction. .TP .B \-\-batch\-experimental run only batch experimental tests. .TP .B \-\-disassemble\-aml Disassemble AML (ACPI machine language) byte code. This attempts to disassemble AML in DSDT and SSDT tables and generates DSDT.dsl and SSDTx.dsl sources. .TP .B \-d, \-\-dump extracts firmware data and dumps it into log files. This generates: .br acpidump.log \- containing a hex dump of the ACPI tables (which can be read using acpixtract). .br dmesg.log \- containing the current kernel log messages. .br dmidecode.log \- containing the output from dmidecode. .br lspci.log \- containing the output from lspci \-vv \-nn .br README.txt \- containing a timestamp and kernel version information. .TP .B \-\-dumpfile=acpidump.log Load ACPI tables from output generated from acpidump or from sudo fwts \-\-dump. The latter is preferred as fwts \-\-dump is able to dump more tables than acpidump. This allows one to dump tables from one machine and processes them with fwts on another machine. .TP .B \-\-uefi\-get\-var\-multiple Specifies the number of times to get a variable in the uefirtvariable get variable stress test. .TP .B \-\-uefi\-set\-var\-multiple Specifies the number of times to set a variable in the uefirtvariable set variable stress test. .TP .B \-\-uefi\-query\-var\-multiple Specifies the number of times to query a variable in the uefirtvariable query variable stress test. .TP .B \-\-filter\-error\-discard Specifies the errors that one wants to silently ignore. One supplies a comma sperated list of fwts error message labels that one wants fwts to not report as errors. fwts will run the test but if there is a test failure and the label matches the one supplied in this list fwts will then just ignore this error. This cannot be used with \-\-filter\-error\-keep. .TP .B \-\-filter\-error\-keep Specifies the errors that one wants to keep, all other errors are silently ignored. One supplies a comma sperated list of fwts error message labels that one wants fwts report as errors, other test failures will be not reported and silently ignored. This cannot be used with \-\-filter\-error\-discard. .TP .B \-f, \-\-force\-clean creates a new results log file, rather than just appending to any existing one (default). .TP .B \-h, \-\-help outputs the internal help page. .TP .B \-i, \-\-interactive run the interactive tests. These tests require user interaction. .TP .B \-\-interactive\-experimental run only interactive experimental tests. .TP .B \-j, \-\-json\-data\-path specifies the path to the fwts json data files. These files contain json formatted configuation tables, for example klog scanning patterns. .TP .B \-k, \-\-klog=file read the kernel log from the specified file rather than from the kernel log ring buffer. This allows one to run the kernel log scanning tests such as klog against pre-gathered log data. .TP .B \-\-log\-fields show the available log filtering fields. Specifying these fields with \-\-log\-filter to select which fields one wants to log. .TP .B \-\-log\-filter specify which particular types of log data to be output into the log file. Each line of log data is tagged with a special marker depending on what type of log information is being output. The available types can be see by using \-\-log\-fields. Specify the desired log types with comma separated list. To disable a field, prefix the name with ~, for example: .br \-\-log\-filter=RES,SUM logs just the results and summary lines. .br \-\-log\-filter=ALL,~INF logs all lines except for the information lines. .TP .B \-\-log\-format specify the information in each log line. The following specifiers are available: .br %date \- date .br %time \- time .br %field \- log\-filter fields .br %owner \- name of the test routine .br %level \- test failure level .br %line \- log line .br e.g. \-\-log\-format="%date %time [%field] (%owner): " .TP .B \-\-log\-type specify the log type. Currently plaintext, json and xml log types are available and the default is plaintext. .TP .B \-\-lspci=path specify the full path and filename to the the lspci binary. .TP .B \-P, \-\-power\-states run S3 and S4 power state tests (s3, s4 tests) .TP .B \-\-results\-no\-separators no pretty printing of horizontal separators in the results log file. .TP .B \-r, \-\-results\-output=filename specify the results output log file. One can also specify stdout and stderr to redirect to these output streams. .TP .B \-R, \-\-rsdp=physaddr specify the physical address of ACPI RSDP. This is useful on some systems where it cannot be automatically detected. .TP .B \-\-s3\-delay\-delta=N time to be added onto delay between each S3 iteration. .TP .B \-\-s3\-device\-check check differences between device configurations over a S3 cycle. Note this adds 15 seconds delay after each s3 resume to allow wifi to re-associate. .TP .B \-\-s3\-device\-check\-delay specify the time to wait while devices re-configure (e.g. wifi to re-associate, ethernet to connect..) before a device configuration check is run. The default is 15 seconds. If this option is used the device checking is assumed so one does not also need to use the \-\-s3\-device\-check flag. .TP .B \-\-s3\-hybrid Enables fwts to run Hybrid Sleep. .TP .B \-\-s3\-min\-delay=N minimum time between S3 iterations. .TP .B \-\-s3\-max\-delay=N maximum time between S3 iterations. .TP .B \-\-s3\-multiple=N specified the number of multiple S3 suspend/resume tests to run. The default is 2 tests. .TP .B \-\-s3\-quirks=--quirk[,--quirk] specify a comma separated list of quirk arguments to pass to pm-suspend, for example: \-\-s3\-quirks=\-\-quirk\-s3\-bios,\-\-quirk\-save\-pci .TP .B \-\-s3\-sleep\-delay=N sleep N seconds from the start of the suspend to the wakeup time. Note that this time MUST be longer than the time it takes to suspend the machine otherwise the wakeup timer will fire during the suspend state. The default is 30 seconds. .TP .B \-\-s3\-suspend\-time=N specify the maximum allowed suspend time in seconds. If suspend takes longer than this then an error is logged. .TP .B \-\-s3\-resume\-time=N specify the maximum allowed resume time in seconds. If resume takes longer than this then an error is logged. .TP .B \-\-s4\-delay\-delta=N time to be added onto delay between each S4 iteration. .TP .B \-\-s4\-device\-check check differences between device configurations over a S4 cycle. Note this adds 15 seconds delay after each s3 resume to allow wifi to re-associate. .TP .B \-\-s4\-device\-check\-delay specify the time to wait while devices re-configure (e.g. wifi to re-associate, ethernet to connect..) before a device configuration check is run. The default is 15 seconds. If this option is used the device checking is assumed so one does not also need to use the \-\-s4\-device\-check flag. .TP .B \-\-s4\-min\-delay=N minimum time between S4 iterations. .TP .B \-\-s4\-max\-delay=N maximum time between S4 iterations. .TP .B \-\-s4\-multiple=N specified the number of multiple S4 hibernate/resume tests to run. The default is 2 tests. .TP .B \-\-s4\-quirks=--quirk[,--quirk] specify a comma separated list of quirk arguments to pass to pm-hibernate, for example: \-\-s4\-quirks=\-\-quirk\-save\-pci .TP .B \-\-s4\-sleep\-delay=N sleep N seconds from the start of the hibernate to the wakeup time. Note that this time MUST be longer than the time it takes to hibernate the machine otherwise the wakeup timer will fire during the hibernate state. The default is currently 90 seconds. .TP .B \-p, \-\-show\-progress show the progress of the tests being run. Each test will identified as it is being run. For long tests, a percentage of completion time will be displayed. As of fwts 0.19.06 this is enabled by default and can be disabled with \-\-quiet (or \-q). .TP .B \-q, \-\-quiet run quietly with no output to stdout. .TP .B \-D, \-\-show\-progress\-dialog output the progress of tests being run in a form that can be piped into the dialog tool with the \-\-gauge option. .TP .B \-s, \-\-show\-tests show the names of available tests. By default will show all tests. Use the \-\-batch, \-\-interactive, \-\-batch\-experimental, \-\-interactive\-experimental, \-\-utils options to show these specific tests. .TP .B \-\-show\-tests\-full show all the available tests listed by minor test description. By default will show all tests. Use the \-\-batch, \-\-interactive, \-\-batch\-experimental, \-\-interactive\-experimental options to show these specific tests. .TP .B \-\-skip\-test=test[,test..] specify tests to skip over and not run. List must be comma separated. .TP .B \-\-stdout\-summary output SUCCESS or FAILED to stdout at end of tests. .TP .B \-t, \-\-table\-path=path specify the path containing ACPI tables. These tables need to be named in the format: tablename.dat, for example DSDT.dat, for example, as extracted using acpidump or fwts \-\-dump and then acpixtract. .TP .B \-u, \-\-utils run utilities. Designed to dump system information, such as annotated ACPI tables, CMOS memory, Int 15 E820 memory map, firmware ROM data. .TP .B \-v, \-\-version output version number and build date of the .B fwts tool. .TP .B \-w, \-\-width=N specify the width in characters of the output logfile. The default is 130. .SH EXAMPLES .LP Run all the batch tests and append the results into the default log results.log: .RS 8 sudo fwts .RE .LP Run all the interactive tests and start a clean results log called interactive.log: .RS 8 sudo fwts \-i \-f \-r interactive.log .br .RE .LP Run all the tests, interactive and batch: .RS 8 sudo fwts \-i \-b .RE .LP Run just the battery and cpufreq tests: .RS 8 sudo fwts battery cpufreq .RE .LP Run all the batch tests and define a new log format using just the date and line number: .RS 8 sudo fwts \-\-log\-format="%date %line: " .RE .LP Run all the interative tests and log just the results, info and summary data: .RS 8 sudo fwts \-i \-\-log\-filter=RES,INF,SUM .RE .LP Dump all the interesting firmware information into log files for analysis later: .RS 8 sudo fwts \-\-dump .RE .LP View kernel and ACPI driver version and BIOS information: .RS 8 sudo fwts \-w 80 \-r stdout version bios_info \-\-log\-filter=INF \-\-log\-format="" .RE .LP Show the batch and batch experimental tests: .RS 8 fwts \-\-show\-tests \-\-batch \-\-batch\-experimental .RE .LP Run multiple S3 tests with delay between each test ranging from 1 second to 10 seconds with a delay delta per test of 0.2 seconds .RS 8 sudo fwts s3 \-\-s3\-multiple=100 \-\-s3\-min\-delay=1 \-\-s3\-max\-delay=10 \-\-s3\-delay\-delta=0.2 .SH SEE ALSO .BR iasl (1), .BR acpixtract (1), .BR acpidump (1), .BR dmidecode (8), .BR lspci (8) .SH AUTHOR fwts was originally written by Colin King with much of the original test code derived from the Intel Linux Firmware test kit. Many thanks also for contributions (in alpabetical order) from AceLan Kao, Alex Hung, Chris Van Hoof, Ivan Hu, Kamal Mostafa, Keng-Yu Lin, Matt Flemimg, Robert Hooker and Seth Forshee. .PP This manual page was written by Colin King for the Ubuntu project (but may be used by others). efi_runtime/000077500000000000000000000000001231470457100133705ustar00rootroot00000000000000efi_runtime/Makefile000066400000000000000000000003201231470457100150230ustar00rootroot00000000000000obj-m += efi_runtime.o all: make -C /lib/modules/$(KVER)/build M=`pwd` modules install: make -C /lib/modules/$(KVER)/build M=`pwd` modules_install clean: make -C /lib/modules/$(KVER)/build M=`pwd` clean efi_runtime/efi_runtime.c000066400000000000000000000251041231470457100160440ustar00rootroot00000000000000/* * EFI Runtime driver * * Copyright(C) 2012-2014 Canonical Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ #include #include #include #include #include #include #include #include "efi_runtime.h" #define EFI_FWTS_EFI_VERSION "0.1" MODULE_AUTHOR("Ivan Hu"); MODULE_DESCRIPTION("EFI Runtime Driver"); MODULE_LICENSE("GPL"); /* commit 83e681897 turned efi_enabled into a function, so abstract it */ #ifdef EFI_RUNTIME_SERVICES #define EFI_RUNTIME_ENABLED efi_enabled(EFI_RUNTIME_SERVICES) #else #define EFI_RUNTIME_ENABLED efi_enabled #endif static void convert_from_efi_time(efi_time_t *eft, EFI_TIME *time) { memset(time, 0, sizeof(EFI_TIME)); time->Year = eft->year; time->Month = eft->month; time->Day = eft->day; time->Hour = eft->hour; time->Minute = eft->minute; time->Second = eft->second; time->Pad1 = eft->pad1; time->Nanosecond = eft->nanosecond; time->TimeZone = eft->timezone; time->Daylight = eft->daylight; time->Pad2 = eft->pad2; } static void convert_to_efi_time(efi_time_t *eft, EFI_TIME *time) { memset(eft, 0, sizeof(*eft)); eft->year = time->Year; eft->month = time->Month; eft->day = time->Day; eft->hour = time->Hour; eft->minute = time->Minute; eft->second = time->Second; eft->pad1 = time->Pad1; eft->nanosecond = time->Nanosecond; eft->timezone = time->TimeZone; eft->daylight = time->Daylight; eft->pad2 = time->Pad2; } static void convert_from_guid(efi_guid_t *vendor, EFI_GUID *vendor_guid) { int i; for (i = 0; i < 16; i++) { if (i < 4) vendor->b[i] = (vendor_guid->Data1 >> (8*i)) & 0xff; else if (i < 6) vendor->b[i] = (vendor_guid->Data2 >> (8*(i-4))) & 0xff; else if (i < 8) vendor->b[i] = (vendor_guid->Data3 >> (8*(i-6))) & 0xff; else vendor->b[i] = (vendor_guid->Data4[i-8]); } } static void convert_to_guid(efi_guid_t *vendor, EFI_GUID *vendor_guid) { int i; vendor_guid->Data1 = vendor->b[0] + (vendor->b[1] << 8) + (vendor->b[2] << 16) + (vendor->b[3] << 24); vendor_guid->Data2 = vendor->b[4] + (vendor->b[5] << 8); vendor_guid->Data3 = vendor->b[6] + (vendor->b[7] << 8); for (i = 0; i < 8; i++) vendor_guid->Data4[i] = vendor->b[i+8]; } static long efi_runtime_ioctl(struct file *file, unsigned int cmd, unsigned long arg) { efi_status_t status; struct efi_getvariable __user *pgetvariable; struct efi_setvariable __user *psetvariable; efi_guid_t vendor; EFI_GUID vendor_guid; unsigned long datasize; uint32_t attr; efi_time_t eft; efi_time_cap_t cap; struct efi_gettime __user *pgettime; struct efi_settime __user *psettime; unsigned char enabled, pending; EFI_TIME efi_time; struct efi_getwakeuptime __user *pgetwakeuptime; struct efi_setwakeuptime __user *psetwakeuptime; struct efi_getnextvariablename __user *pgetnextvariablename; unsigned long name_size; struct efi_getnexthighmonotoniccount __user *pgetnexthighmonotoniccount; #if LINUX_VERSION_CODE >= KERNEL_VERSION(3,1,0) struct efi_queryvariableinfo __user *pqueryvariableinfo; struct efi_querycapsulecapabilities __user *pquerycapsulecapabilities; #endif switch (cmd) { case EFI_RUNTIME_GET_VARIABLE: pgetvariable = (struct efi_getvariable __user *)arg; if (get_user(datasize, pgetvariable->DataSize) || copy_from_user(&vendor_guid, pgetvariable->VendorGuid, sizeof(EFI_GUID))) return -EFAULT; convert_from_guid(&vendor, &vendor_guid); status = efi.get_variable(pgetvariable->VariableName, &vendor, &attr, &datasize, pgetvariable->Data); if (put_user(status, pgetvariable->status)) return -EFAULT; if (status == EFI_SUCCESS) { if (put_user(attr, pgetvariable->Attributes) || put_user(datasize, pgetvariable->DataSize)) return -EFAULT; return 0; } else { printk(KERN_ERR "efi_runtime: can't get variable\n"); return -EINVAL; } case EFI_RUNTIME_SET_VARIABLE: psetvariable = (struct efi_setvariable __user *)arg; if (get_user(datasize, &psetvariable->DataSize) || get_user(attr, &psetvariable->Attributes) || copy_from_user(&vendor_guid, psetvariable->VendorGuid, sizeof(EFI_GUID))) return -EFAULT; convert_from_guid(&vendor, &vendor_guid); status = efi.set_variable(psetvariable->VariableName, &vendor, attr, datasize, psetvariable->Data); if (put_user(status, psetvariable->status)) return -EFAULT; return status == EFI_SUCCESS ? 0 : -EINVAL; case EFI_RUNTIME_GET_TIME: status = efi.get_time(&eft, &cap); pgettime = (struct efi_gettime __user *)arg; if (put_user(status, pgettime->status)) return -EFAULT; if (status != EFI_SUCCESS) { printk(KERN_ERR "efitime: can't read time\n"); return -EINVAL; } if (put_user(cap.resolution, &pgettime->Capabilities->Resolution) || put_user(cap.accuracy, &pgettime->Capabilities->Accuracy) || put_user(cap.sets_to_zero, &pgettime->Capabilities->SetsToZero)) return -EFAULT; return copy_to_user(pgettime->Time, &eft, sizeof(EFI_TIME)) ? -EFAULT : 0; case EFI_RUNTIME_SET_TIME: psettime = (struct efi_settime __user *)arg; if (copy_from_user(&efi_time, psettime->Time, sizeof(EFI_TIME))) return -EFAULT; convert_to_efi_time(&eft, &efi_time); status = efi.set_time(&eft); if (put_user(status, psettime->status)) return -EFAULT; return status == EFI_SUCCESS ? 0 : -EINVAL; case EFI_RUNTIME_GET_WAKETIME: status = efi.get_wakeup_time((efi_bool_t *)&enabled, (efi_bool_t *)&pending, &eft); pgetwakeuptime = (struct efi_getwakeuptime __user *)arg; if (put_user(status, pgetwakeuptime->status)) return -EFAULT; if (status != EFI_SUCCESS) return -EINVAL; if (put_user(enabled, pgetwakeuptime->Enabled) || put_user(pending, pgetwakeuptime->Pending)) return -EFAULT; convert_from_efi_time(&eft, &efi_time); return copy_to_user(pgetwakeuptime->Time, &efi_time, sizeof(EFI_TIME)) ? -EFAULT : 0; case EFI_RUNTIME_SET_WAKETIME: psetwakeuptime = (struct efi_setwakeuptime __user *)arg; if (get_user(enabled, &psetwakeuptime->Enabled) || copy_from_user(&efi_time, psetwakeuptime->Time, sizeof(EFI_TIME))) return -EFAULT; convert_to_efi_time(&eft, &efi_time); status = efi.set_wakeup_time(enabled, &eft); if (put_user(status, psetwakeuptime->status)) return -EFAULT; return status == EFI_SUCCESS ? 0 : -EINVAL; case EFI_RUNTIME_GET_NEXTVARIABLENAME: pgetnextvariablename = (struct efi_getnextvariablename __user *)arg; if (get_user(name_size, pgetnextvariablename->VariableNameSize) || copy_from_user(&vendor_guid, pgetnextvariablename->VendorGuid, sizeof(EFI_GUID))) return -EFAULT; if (name_size > 1024) return -EFAULT; convert_from_guid(&vendor, &vendor_guid); status = efi.get_next_variable(&name_size, pgetnextvariablename->VariableName, &vendor); if (put_user(status, pgetnextvariablename->status)) return -EFAULT; convert_to_guid(&vendor, &vendor_guid); if (put_user(name_size, pgetnextvariablename->VariableNameSize)) return -EFAULT; if (copy_to_user(pgetnextvariablename->VendorGuid, &vendor_guid, sizeof(EFI_GUID))) return -EFAULT; if (status != EFI_SUCCESS) return -EINVAL; return 0; #if LINUX_VERSION_CODE >= KERNEL_VERSION(3,1,0) case EFI_RUNTIME_QUERY_VARIABLEINFO: pqueryvariableinfo = (struct efi_queryvariableinfo __user *)arg; if (get_user(attr, &pqueryvariableinfo->Attributes)) return -EFAULT; status = efi.query_variable_info(attr, pqueryvariableinfo->MaximumVariableStorageSize, pqueryvariableinfo->RemainingVariableStorageSize , pqueryvariableinfo->MaximumVariableSize); if (put_user(status, pqueryvariableinfo->status)) return -EFAULT; if (status != EFI_SUCCESS) return -EINVAL; return 0; #endif case EFI_RUNTIME_GET_NEXTHIGHMONOTONICCOUNT: pgetnexthighmonotoniccount = (struct efi_getnexthighmonotoniccount __user *)arg; status = efi.get_next_high_mono_count(pgetnexthighmonotoniccount ->HighCount); if (put_user(status, pgetnexthighmonotoniccount->status)) return -EFAULT; if (status != EFI_SUCCESS) return -EINVAL; return 0; #if LINUX_VERSION_CODE >= KERNEL_VERSION(3,1,0) case EFI_RUNTIME_QUERY_CAPSULECAPABILITIES: pquerycapsulecapabilities = (struct efi_querycapsulecapabilities __user *)arg; status = efi.query_capsule_caps( (efi_capsule_header_t **) pquerycapsulecapabilities->CapsuleHeaderArray, pquerycapsulecapabilities->CapsuleCount, pquerycapsulecapabilities->MaximumCapsuleSize, (int *)pquerycapsulecapabilities->ResetType); if (put_user(status, pquerycapsulecapabilities->status)) return -EFAULT; if (status != EFI_SUCCESS) return -EINVAL; return 0; #endif } return -ENOTTY; } static int efi_runtime_open(struct inode *inode, struct file *file) { /* * nothing special to do here * We do accept multiple open files at the same time as we * synchronize on the per call operation. */ return 0; } static int efi_runtime_close(struct inode *inode, struct file *file) { return 0; } /* * The various file operations we support. */ static const struct file_operations efi_runtime_fops = { .owner = THIS_MODULE, .unlocked_ioctl = efi_runtime_ioctl, .open = efi_runtime_open, .release = efi_runtime_close, .llseek = no_llseek, }; static struct miscdevice efi_runtime_dev = { MISC_DYNAMIC_MINOR, "efi_runtime", &efi_runtime_fops }; static int __init efi_runtime_init(void) { int ret; printk(KERN_INFO "EFI_RUNTIME Driver v%s\n", EFI_FWTS_EFI_VERSION); if (!EFI_RUNTIME_ENABLED) { printk(KERN_INFO "EFI runtime services not enabled.\n"); return -ENODEV; } ret = misc_register(&efi_runtime_dev); if (ret) { printk(KERN_ERR "efi_runtime: can't misc_register on minor=%d\n", MISC_DYNAMIC_MINOR); return ret; } return 0; } static void __exit efi_runtime_exit(void) { printk(KERN_INFO "EFI_RUNTIME Driver Exit.\n"); misc_deregister(&efi_runtime_dev); } module_init(efi_runtime_init); module_exit(efi_runtime_exit); efi_runtime/efi_runtime.h000066400000000000000000000101501231470457100160440ustar00rootroot00000000000000/* * EFI Runtime driver * * Copyright(C) 2012-2014 Canonical Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ #ifndef _EFI_RUNTIME_H_ #define _EFI_RUNTIME_H_ typedef enum { EfiResetCold, EfiResetWarm, EfiResetShutdown } EFI_RESET_TYPE; typedef struct { uint32_t Data1; uint16_t Data2; uint16_t Data3; uint8_t Data4[8]; } __attribute__ ((packed)) EFI_GUID; typedef struct { uint16_t Year; /* 1900 – 9999 */ uint8_t Month; /* 1 – 12 */ uint8_t Day; /* 1 – 31 */ uint8_t Hour; /* 0 – 23 */ uint8_t Minute; /* 0 – 59 */ uint8_t Second; /* 0 – 59 */ uint8_t Pad1; uint32_t Nanosecond; /* 0 – 999,999,999 */ int16_t TimeZone; /* -1440 to 1440 or 2047 */ uint8_t Daylight; uint8_t Pad2; } __attribute__ ((packed)) EFI_TIME; typedef struct { uint32_t Resolution; uint32_t Accuracy; uint8_t SetsToZero; } __attribute__ ((packed)) EFI_TIME_CAPABILITIES; typedef struct { EFI_GUID CapsuleGuid; uint32_t HeaderSize; uint32_t Flags; uint32_t CapsuleImageSize; } __attribute__ ((packed)) EFI_CAPSULE_HEADER; struct efi_getvariable { uint16_t *VariableName; EFI_GUID *VendorGuid; uint32_t *Attributes; uint64_t *DataSize; void *Data; uint64_t *status; } __attribute__ ((packed)); struct efi_setvariable { uint16_t *VariableName; EFI_GUID *VendorGuid; uint32_t Attributes; uint64_t DataSize; void *Data; uint64_t *status; } __attribute__ ((packed)); struct efi_getnextvariablename { uint64_t *VariableNameSize; uint16_t *VariableName; EFI_GUID *VendorGuid; uint64_t *status; } __attribute__ ((packed)); struct efi_queryvariableinfo { uint32_t Attributes; uint64_t *MaximumVariableStorageSize; uint64_t *RemainingVariableStorageSize; uint64_t *MaximumVariableSize; uint64_t *status; } __attribute__ ((packed)); struct efi_gettime { EFI_TIME *Time; EFI_TIME_CAPABILITIES *Capabilities; uint64_t *status; } __attribute__ ((packed)); struct efi_settime { EFI_TIME *Time; uint64_t *status; } __attribute__ ((packed)); struct efi_getwakeuptime { uint8_t *Enabled; uint8_t *Pending; EFI_TIME *Time; uint64_t *status; } __attribute__ ((packed)); struct efi_setwakeuptime { uint8_t Enabled; EFI_TIME *Time; uint64_t *status; } __attribute__ ((packed)); struct efi_getnexthighmonotoniccount { uint32_t *HighCount; uint64_t *status; } __attribute__ ((packed)); struct efi_querycapsulecapabilities { EFI_CAPSULE_HEADER **CapsuleHeaderArray; uint64_t CapsuleCount; uint64_t *MaximumCapsuleSize; EFI_RESET_TYPE *ResetType; uint64_t *status; } __attribute__ ((packed)); /* ioctl calls that are permitted to the /dev/efi_runtime interface. */ #define EFI_RUNTIME_GET_VARIABLE \ _IOWR('p', 0x01, struct efi_getvariable) #define EFI_RUNTIME_SET_VARIABLE \ _IOW('p', 0x02, struct efi_setvariable) #define EFI_RUNTIME_GET_TIME \ _IOR('p', 0x03, struct efi_gettime) #define EFI_RUNTIME_SET_TIME \ _IOW('p', 0x04, struct efi_settime) #define EFI_RUNTIME_GET_WAKETIME \ _IOR('p', 0x05, struct efi_getwakeuptime) #define EFI_RUNTIME_SET_WAKETIME \ _IOW('p', 0x06, struct efi_setwakeuptime) #define EFI_RUNTIME_GET_NEXTVARIABLENAME \ _IOWR('p', 0x07, struct efi_getnextvariablename) #define EFI_RUNTIME_QUERY_VARIABLEINFO \ _IOR('p', 0x08, struct efi_queryvariableinfo) #define EFI_RUNTIME_GET_NEXTHIGHMONOTONICCOUNT \ _IOR('p', 0x09, struct efi_getnexthighmonotoniccount) #define EFI_RUNTIME_QUERY_CAPSULECAPABILITIES \ _IOR('p', 0x0A, struct efi_querycapsulecapabilities) #endif /* _EFI_RUNTIME_H_ */ example-data/000077500000000000000000000000001231470457100134245ustar00rootroot00000000000000example-data/sample-errors-short.log000066400000000000000000000272551231470457100200720ustar00rootroot00000000000000ACPI Error: 32/64X address mismatch in Gpe0Block: 00008018/0000000000008028, using 32 (20090903/tbfadt-427)" ACPI Error: 32/64X address mismatch in Pm2ControlBlock: 00008030/0000000000008020, using 32 (20090903/tbfadt-427)" ACPI Error: ACPI path has too many parent prefixes (^) - reached beyond root node (20090903/nsaccess-429)" ACPI Error: A valid RSDP was not found 20090521 tbxfroot-219" ACPI Error: Cannot release Mutex [MUT0], not acquired (20090903/exmutex-374)" ACPI Error: Could not disable RealTimeClock events 20090521 evxfevnt-373" ACPI Error: Could not enable PowerButton event (20090903/evxfevnt-193)" ACPI Error: Could not enable SleepButton event (20090903/evxfevnt-193)" ACPI Error: Current brightness invalid 20090521 video-538" ACPI Error (dsfield-0143): [CAPD] Namespace lookup failure, AE_ALREADY_EXISTS" ACPI Error (dsobject-0501): Package List length (5) larger than NumElements count (3), truncated" ACPI Error (dsopcode-0595): Field [I9MN] at 544 exceeds Buffer [IORT] size 464 (bits) [20080926]" ACPI Error (dswload-0674): [\___p] Namespace lookup failure, AE_NOT_FOUND" ACPI Error (dswload-0790): [_T_0] Namespace lookup failure, AE_ALREADY_EXISTS" ACPI Error (dswstate-0097): Result stack is empty! State=ffff8800378ba400 [20080926]" ACPI Error (dswstate-0097): Result stack is empty! State=ffff8800378ba800 [20080926]" ACPI Error: Evaluating _BCM failed 20090521 video-526" ACPI Error (evregion-0315): No handler for Region [ERAM] (ffff88013f819ee8) [EmbeddedControl] [20080926]" ACPI Error (evxfevnt-0193): Could not enable SleepButton event [20090320]" ACPI Error (evxfevnt-0366): Could not disable RealTimeClock events [20080926]" ACPI Error (exfldio-0291): Region EmbeddedControl(3) has no handler [20080926]" ACPI Error: Field [ASSM] at 524320 exceeds Buffer [BUF0] size 880 (bits) (20090903/dsopcode-596)" ACPI Error: Field [I9MN] at 544 exceeds Buffer [IORT] size 464 (bits) (20090903/dsopcode-596)" ACPI Error: Illegal I/O port address/length above 64K: 0x0000000000400020/4 20090521 hwvalid-154" ACPI Error: Incorrect return type [Integer] requested [Package] 20090521 nsxfeval-134" ACPI Error: Needed [Buffer/String/Package], found [Integer] f7257c08 (20090903/exresop-590)" ACPI Error: Needed type [Reference], found [Device] ffff88014b82d800 (20090903/exresop-104)" ACPI Error: No handler for Region [ECF2] (ffff88013ba313a8) [EmbeddedControl] (20090903/evregion-319)" ACPI Error (nsaccess-0434): ACPI path has too many parent prefixes (^) - reached beyond root node [20080926]" ACPI Error (nspredef-0163): \_SB_.PCI0.FNC2.PRT0._GTF: Missing expected return value [20080926]" ACPI Error (psargs-0359): [\_PR_.CPU0._PPC] Namespace lookup failure, AE_NOT_FOUND" ACPI Error (psargs-0359): [Z012] Namespace lookup failure, AE_NOT_FOUND" ACPI Error (psloop-0136): Found unknown opcode 26 at AML address ffff88003785663a offset 56, ignoring [20080926]" ACPI Error (psparse-0524): Method parse/execution failed [\_PR_.CPU0._PSS] (Node ffff88007f26eee0), AE_AML_NO_RETURN_VALUE" ACPI Error (psparse-0524): Method parse/execution failed [\_PR_.CPU1._PDC] (Node f6c10180), AE_ALREADY_EXISTS" ACPI Error (psparse-0524): Method parse/execution failed [\_PR_.CPU1._PDC] (Node f6c11150), AE_INVALID_TABLE_LENGTH" ACPI Error (psparse-0524): Method parse/execution failed [\_PR_.CPU1._PDC] (Node ffff88022f819f00), AE_ALREADY_EXISTS" ACPI Error (psparse-0524): Method parse/execution failed [\_PR_.CPU1._PSS] (Node ffff88007f26efa0), AE_AML_NO_RETURN_VALUE" ACPI Error (psparse-0524): Method parse/execution failed [\_SB_.MEM_._CRS] (Node f6c1b0a8), AE_AML_BUFFER_LIMIT" ACPI Error (psparse-0524): Method parse/execution failed [\_SB_.PCI0._INI] (Node db02d630), AE_NOT_FOUND" ACPI Error (psparse-0524): Method parse/execution failed [\_SB_.PCI0.LPCB.EC0_._REG] (Node ffff88013f81a260), AE_NOT_EXIST" ACPI Error (psparse-0537): Method parse/execution failed [\_GPE._L09] (Node ffff88003b5a7520), AE_LIMIT" ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.PCI0.CBST] (Node f7015000), AE_TIME" ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.PCI0.GFX0.DD02.GBQC] (Node f7017a68), AE_AML_OPERAND_TYPE" ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.PCI0._OSC] (Node f7016d98), AE_AML_OPERAND_TYPE" ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.PCI0.PEGP.EVGA.LCD_._BCM] (Node ffff8800bc647c80), AE_AML_PACKAGE_LIMIT" ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.PCI0.PIB_.EXFG] (Node f7015768), AE_AML_MUTEX_NOT_ACQUIRED" ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.PCI0.PIB_.FIR_._STA] (Node f7015900), AE_AML_MUTEX_NOT_ACQUIRED" ACPI Error (psparse-0537): Method parse/execution failed [\_TZ_.C2E8] (Node f701b108), AE_AML_PACKAGE_LIMIT" ACPI Error (psparse-0537): Method parse/execution failed [\_TZ_.TZ2_._TMP] (Node f701b7c8), AE_AML_PACKAGE_LIMIT" ACPI Error: Region EmbeddedControl(3) has no handler (20090903/exfldio-295)" ACPI Error: Region PCI_Config(2) has no handler (20090903/exfldio-295)" ACPI Error: SMBus or IPMI write requires Buffer of length 42, found length 20 (20090903/exfield-286)" ACPI Error (uteval-0232): Method execution failed [\_SB_.MEM_._CRS] (Node f6c1b0a8), AE_AML_BUFFER_LIMIT" ACPI Error (uteval-0232): Method execution failed [\_SB_.PCI0.LPC0.PMIO._CRS] (Node f6c15900), AE_AML_BUFFER_LIMIT" ACPI Error (uteval-0232): Method execution failed [\_SB_.PCI0.LPC0.PMIO._CRS] (Node ffff880135a32980), AE_AML_BUFFER_LIMIT" ACPI Error (uteval-0256): Method execution failed [\_SB_.MEM_._CRS] (Node f7017f60), AE_AML_BUFFER_LIMIT" ACPI Warning: 32/64 FACS address mismatch in FADT - two FACS tables! (20100121/tbfadt-369)" ACPI Warning: 32/64X FACS address mismatch in FADT - DF647F40/00000000DF64AD40, using 32 20090521 tbfadt-487" ACPI Warning: 32/64X length mismatch in Gpe1Block: 0/32 (20100121/tbfadt-526)" ACPI Warning: _BQC returned an invalid level (20100121/video-638)" ACPI Warning: Could not enable fixed event 3 (20090903/evxface-146)" ACPI Warning: Detected an unsupported executable opcode at module-level: [0x007B] at table offset 0x0080 (20090903/psloop-522)" ACPI Warning (dsobject-0502): Package List length (C) larger than NumElements count (3), truncated" ACPI Warning: Evaluating _BQC failed (20090903/video-641)" ACPI Warning (evxface-0146): Could not enable fixed event 3 [20090320]" ACPI Warning for \_PR_.CPU0._PSD: [] lapic_timer_state_broadcast+0x46/0x48" ACPI Warning for \_SB_.BAT0._BIF: Return Package type mismatch at index 9 - found [NULL Object Descriptor], expected String/Buffer (20090903/nspredef-1012)" ACPI Warning for \_SB_.BAT1._BIF: Return Package type mismatch at index 12 - found Integer, expected String/Buffer (20090903/nspredef-1012)" ACPI Warning for \_SB_.PCI0.BAT0._BIF: Converted Buffer to expected String at index 9 (20090903/nsrepair-132)" ACPI Warning for \_SB_.PCI0.IDE1.PRT0._GTF: Return type mismatch - found Integer, expected Buffer (20090903/nspredef-1006)" ACPI Warning for \_SB_.PCI0.LPC_.EC__.BAT0._BIF: Converted Buffer to expected String at index 9 (20090903/nsrepair-132)" ACPI Warning for \_SB_.PCI0._OSC: Parameter count mismatch - ASL declared 5, ACPI requires 4 (20100121/nspredef-352)" ACPI Warning for \_SB_.PCI0._OSC: Return type mismatch - found Integer, expected Buffer (20090903/nspredef-1006)" ACPI Warning for \_SB_.PCI0.PCIB._PRT: Return Package has no elements (empty) (20090903/nspredef-433)" ACPI Warning for \_SB_.PCI0._PRT: Return Package type mismatch at index 2 - found [NULL Object Descriptor], expected Integer/Reference (20090903/nspredef-1012)" ACPI Warning for \_SB_.PCI0.SATA.PRT1._GTF: Return type mismatch - found Integer, expected Buffer (20090903/nspredef-1006)" ACPI Warning for \_SB_.PCI0.VID2._DOD: Return Package has no elements (empty) (20090903/nspredef-433)" ACPI Warning for \_TZ_.THRM._PSL: Return Package type mismatch at index 0 - found [NULL Object Descriptor], expected Reference (20100121/nspredef-1059)" ACPI Warning for \_TZ_.THRM._PSL: Return Package type mismatch at index 0 - found Processor, expected Reference (20090903/nspredef-1012)" ACPI Warning for \_TZ_.TZ01._PSV: Return type mismatch - found Package, expected Integer (20090903/nspredef-1006)" ACPI Warning: Incorrect checksum in table [SSDT] - AE, should be 74 20090521 tbutils-246" ACPI Warning: Invalid length for Pm2ControlBlock: 16, using default 8 20090521 tbfadt-608" ACPI Warning: Invalid throttling state, reset 20090521 processor_throttling-843" ACPI Warning (nseval-0168): Insufficient arguments - method [_OSC] needs 5, found 4 [20080926]" ACPI Warning (nspredef-0252): \_SB_.PCI0._OSC: Parameter count mismatch - ASL declared 5, expected 4 [20080926]" ACPI Warning (nspredef-0357): \_PR_.CPU1._PSD: Return Package has no elements (empty) [20080926]" ACPI Warning (nspredef-0357): \_SB_.PCI0.AGP_.SLI_.SLI1.VID1._DOD: Return Package has no elements (empty) [20080926]" ACPI Warning (nspredef-0437): \_SB_.PCI0.VID2._DOD: Return Package has no elements (empty) [20090320]" ACPI Warning (nspredef-0852): \_PR_.CPU0._PSS: Return type mismatch - found Integer, expected Package [20080926]" ACPI Warning (nspredef-0852): \_SB_.PCI0.SATA.PRT1._GTF: Return type mismatch - found Integer, expected Buffer [20080926]" ACPI Warning (nspredef-0858): \_TZ_.THRM._PSL: Return Package type mismatch at index 0 - found Processor, expected Reference [20080926]" ACPI Warning (nspredef-0943): \_SB_.PCI0.FNC2.PRT0._GTF: Return type mismatch - found Integer, expected Buffer [20090320]" ACPI Warning (nspredef-0949): \_SB_.BAT1._BIF: Return Package type mismatch at index 12 - found Integer, expected String/Buffer [20090320]" ACPI Warning: Optional field Gpe1Block has zero address or length: 000000000000802C/0 (20090903/tbfadt-557)" ACPI Warning: Optional field Pm2ControlBlock has zero address or length: 0000000000000820/0 20090521 tbfadt-558" ACPI Warning: Package List length (0x10) larger than NumElements count (0x6), truncated" ACPI Warning: Package List length (EA) larger than NumElements count (3), truncated" ACPI Warning: \_PR_.CPU0._CST: Return Package is too small - found 4, expected 4 20090521 nspredef-748" ACPI Warning: \_PR_.CPU0._PSD: Return Package type mismatch at index 0 - found Integer, expected Package 20090521 nspredef-946" ACPI Warning (processor_throttling-0843): Invalid throttling state, reset [20090320]" ACPI Warning: \_SB_.PCI0.FNC2.PRT4._GTF: Return type mismatch - found Integer, expected Buffer 20090521 nspredef-940" ACPI Warning: \_SB_.PCI0.PEGP.NVGA.MXMI: Excess arguments - needs 1, found 2 20090521 nspredef-287" ACPI Warning: \_SB_.PCI0.VID2._DOD: Return Package has no elements (empty) 20090521 nspredef-434" ACPI Warning (tbutils-0246): Incorrect checksum in table [OEMB] - 96, should be 95 [20090320]" ACPI Warning: \_TZ_.THRM._PSL: Return Package type mismatch at index 0 - found [NULL Object Descriptor], expected Reference 20090521 nspredef-946" ACPI Warning: \_TZ_.TZ00._PSL: Return Package type mismatch at index 0 - found Processor, expected Reference 20090521 nspredef-946" CPU0: Temperature above threshold, cpu clock throttled (total events = 1)" Disabling IRQ #10" Disabling IRQ #9" [Firmware Bug]: ACPI: ACPI brightness control misses _BQC function" [Firmware Bug]: ACPI(IGPU) defines _DOD but not _DOS" [Firmware Bug]: ACPI: Invalid BIOS _PSS frequency: 0x0 MHz" [Firmware Bug]: ACPI(Z01I) defines _DOD but not _DOS" [Firmware Bug]: _BCQ is used instead of _BQC" [Firmware Bug]: BIOS needs update for CPU frequency support" [Firmware Bug]: Invalid critical threshold (0)" [Firmware Bug]: powernow-k8: No compatible ACPI _PSS objects found." [Firmware Bug]: powernow-k8: No PSB or ACPI _PSS objects" [Firmware Bug]: powernow-k8: Try again with latest BIOS." [Firmware Bug]: powernow-k8: Your BIOS does not provide ACPI _PSS objects in a way that Linux understands. Please report this to the Linux ACPI maintainers and complain to your BIOS vendor." example-data/sample-errors.log000066400000000000000000002565471231470457100167450ustar00rootroot00000000000000ACPI Error: 32/64X address mismatch in Gpe0Block: 00008018/0000000000008028, using 32 (20090903/tbfadt-427)" ACPI Error: 32/64X address mismatch in Gpe0Block: 00008020/0000000000008028, using 32 20090521 tbfadt-428" ACPI Error: 32/64X address mismatch in Gpe0Block: 00008020/0000000000008028, using 32 (20090903/tbfadt-427)" ACPI Error: 32/64X address mismatch in Gpe0Block: 0000F828/000000000001F030, using 32 20090521 tbfadt-428" ACPI Error: 32/64X address mismatch in Pm2ControlBlock: 00008030/0000000000008020, using 32 (20090903/tbfadt-427)" ACPI Error: 32/64X address mismatch in Pm2ControlBlock: 00008800/0000000000008100, using 32 20090521 tbfadt-428" ACPI Error: 32/64X address mismatch in Pm2ControlBlock: 00008800/0000000000008100, using 32 (20090903/tbfadt-427)" ACPI Error: ACPI path has too many parent prefixes (^) - reached beyond root node (20090903/nsaccess-429)" ACPI Error: A valid RSDP was not found 20090521 tbxfroot-219" ACPI Error: A valid RSDP was not found (20090903/tbxfroot-219)" ACPI Error: Cannot release Mutex [MUT0], not acquired (20090903/exmutex-374)" ACPI Error: Could not disable RealTimeClock events 20090521 evxfevnt-373" ACPI Error: Could not enable PowerButton event 20090521 evxfevnt-193" ACPI Error: Could not enable PowerButton event (20090903/evxfevnt-193)" ACPI Error: Could not enable SleepButton event 20090521 evxfevnt-193" ACPI Error: Could not enable SleepButton event (20090903/evxfevnt-193)" ACPI Error: Current brightness invalid 20090521 video-538" ACPI Error (dsfield-0139): [CAPB] Namespace lookup failure, AE_ALREADY_EXISTS" ACPI Error (dsfield-0140): [CAPB] Namespace lookup failure, AE_ALREADY_EXISTS" ACPI Error (dsfield-0140): [CAPD] Namespace lookup failure, AE_ALREADY_EXISTS" ACPI Error (dsfield-0143): [CAPB] Namespace lookup failure, AE_ALREADY_EXISTS" ACPI Error (dsfield-0143): [CAPD] Namespace lookup failure, AE_ALREADY_EXISTS" ACPI Error (dsobject-0501): Package List length (5) larger than NumElements count (3), truncated" ACPI Error (dsopcode-0595): Field [ASSM] at 524320 exceeds Buffer [BUF0] size 880 (bits) [20080926]" ACPI Error (dsopcode-0595): Field [I9MN] at 544 exceeds Buffer [IORT] size 464 (bits) [20080609]" ACPI Error (dsopcode-0595): Field [I9MN] at 544 exceeds Buffer [IORT] size 464 (bits) [20080926]" ACPI Error (dswload-0190): [\_PR_.CPU0] Namespace lookup failure, AE_NOT_FOUND" ACPI Error (dswload-0659): [DD02] Namespace lookup failure, AE_NOT_FOUND" ACPI Error (dswload-0659): [EHC1] Namespace lookup failure, AE_NOT_FOUND" ACPI Error (dswload-0659): [\___P] Namespace lookup failure, AE_NOT_FOUND" ACPI Error (dswload-0659): [USB0] Namespace lookup failure, AE_NOT_FOUND" ACPI Error (dswload-0673): [\___p] Namespace lookup failure, AE_NOT_FOUND" ACPI Error (dswload-0674): [\___p] Namespace lookup failure, AE_NOT_FOUND" ACPI Error (dswload-0781): [PRID] Namespace lookup failure, AE_ALREADY_EXISTS" ACPI Error (dswload-0781): [_PSW] Namespace lookup failure, AE_ALREADY_EXISTS" ACPI Error (dswload-0781): [_T_0] Namespace lookup failure, AE_ALREADY_EXISTS" ACPI Error (dswload-0790): [_T_0] Namespace lookup failure, AE_ALREADY_EXISTS" ACPI Error (dswstate-0097): Result stack is empty! State=ffff8800378ba400 [20080926]" ACPI Error (dswstate-0097): Result stack is empty! State=ffff8800378ba800 [20080926]" ACPI Error: Evaluating _BCM failed 20090521 video-526" ACPI Error (evregion-0315): No handler for Region [ERAM] (ffff88013f819ee8) [EmbeddedControl] [20080926]" ACPI Error (evxfevnt-0193): Could not enable SleepButton event [20090320]" ACPI Error (evxfevnt-0366): Could not disable RealTimeClock events [20080926]" ACPI Error (exfldio-0291): Region EmbeddedControl(3) has no handler [20080926]" ACPI Error: Field [ASSM] at 524320 exceeds Buffer [BUF0] size 880 (bits) 20090521 dsopcode-596" ACPI Error: Field [ASSM] at 524320 exceeds Buffer [BUF0] size 880 (bits) (20090903/dsopcode-596)" ACPI Error: Field [I9MN] at 544 exceeds Buffer [IORT] size 464 (bits) (20090903/dsopcode-596)" ACPI Error: Illegal I/O port address/length above 64K: 0x0000000000400020/4 20090521 hwvalid-154" ACPI Error: Incorrect return type [Integer] requested [Package] 20090521 nsxfeval-134" ACPI Error: Needed [Buffer/String/Package], found [Integer] f7257c08 (20090903/exresop-590)" ACPI Error: Needed type [Reference], found [Device] f700ef90 20090521 exresop-104" ACPI Error: Needed type [Reference], found [Device] f700ff90 20090521 exresop-104" ACPI Error: Needed type [Reference], found [Device] f700ff90 (20090903/exresop-104)" ACPI Error: Needed type [Reference], found [Device] f7012f90 (20090903/exresop-104)" ACPI Error: Needed type [Reference], found [Device] ffff8800379a6800 (20090903/exresop-104)" ACPI Error: Needed type [Reference], found [Device] ffff8800379a7800 (20090903/exresop-104)" ACPI Error: Needed type [Reference], found [Device] ffff880075927800 (20090903/exresop-104)" ACPI Error: Needed type [Reference], found [Device] ffff880075928800 20090521 exresop-104" ACPI Error: Needed type [Reference], found [Device] ffff88014b82d800 (20090903/exresop-104)" ACPI Error: No handler for Region [ECF2] (ffff88013ba313a8) [EmbeddedControl] (20090903/evregion-319)" ACPI Error: No handler for Region [ERAM] (f70124d8) [EmbeddedControl] 20090521 evregion-319" ACPI Error: No handler for Region [ERAM] (f7016938) [EmbeddedControl] 20090521 evregion-319" ACPI Error: No handler for Region [ERAM] (ffff88007592bd80) [EmbeddedControl] 20090521 evregion-319" ACPI Error: No handler for Region [ERAM] (ffff88007cf2dea0) [EmbeddedControl] 20090521 evregion-319" ACPI Error: No handler for Region [ERAM] (ffff88007d32bf78) [EmbeddedControl] (20090903/evregion-319)" ACPI Error: No handler for Region [ERAM] (ffff88007db2ad80) [EmbeddedControl] (20090903/evregion-319)" ACPI Error: No handler for Region [ERAM] (ffff88011b82fd80) [EmbeddedControl] 20090521 evregion-319" ACPI Error: No handler for Region [ERAM] (ffff880133e3e798) [EmbeddedControl] (20090903/evregion-319)" ACPI Error: No handler for Region [PCFG] (f704b118) [PCI_Config] (20090903/evregion-319)" ACPI Error: No handler for Region [PCFG] (ffff880137a733f0) [PCI_Config] (20090903/evregion-319)" ACPI Error: No handler for Region [PCFG] (ffff88013ba6ff78) [PCI_Config] (20090903/evregion-319)" ACPI Error: No handler for Region [PCFG] (ffff8801b907a3f0) [PCI_Config] (20090903/evregion-319)" ACPI Error: No handler for Region [SACS] (f701b500) [PCI_Config] (20090903/evregion-319)" ACPI Error: No handler for Region [SACS] (f70c52a8) [PCI_Config] (20090903/evregion-319)" ACPI Error: No handler for Region [SACS] (ffff88006df3f7e0) [PCI_Config] (20090903/evregion-319)" ACPI Error: No handler for Region [SACS] (ffff88012bb0f1f8) [PCI_Config] (20090903/evregion-319)" ACPI Error (nsaccess-0434): ACPI path has too many parent prefixes (^) - reached beyond root node [20080926]" ACPI Error (nspredef-0163): \_SB_.PCI0.FNC2.PRT0._GTF: Missing expected return value [20080926]" ACPI Error (nspredef-0163): \_SB_.PCI0.FNC2.PRT1._GTF: Missing expected return value [20080926]" ACPI Error (psargs-0358): [CDW1] Namespace lookup failure, AE_NOT_FOUND" ACPI Error (psargs-0359): [CDW1] Namespace lookup failure, AE_NOT_FOUND" ACPI Error (psargs-0359): [ECEN] Namespace lookup failure, AE_NOT_FOUND" ACPI Error (psargs-0359): [FZHD] Namespace lookup failure, AE_NOT_FOUND" ACPI Error (psargs-0359): [GTF0] Namespace lookup failure, AE_NOT_FOUND" ACPI Error (psargs-0359): [GTF1] Namespace lookup failure, AE_NOT_FOUND" ACPI Error (psargs-0359): [HPTF] Namespace lookup failure, AE_NOT_FOUND" ACPI Error (psargs-0359): [MPEN] Namespace lookup failure, AE_NOT_FOUND" ACPI Error (psargs-0359): [OSYS] Namespace lookup failure, AE_NOT_FOUND" ACPI Error (psargs-0359): [PDSX] Namespace lookup failure, AE_NOT_FOUND" ACPI Error (psargs-0359): [\_PR_.CPU0._PPC] Namespace lookup failure, AE_NOT_FOUND" ACPI Error (psargs-0359): [\_SB_.PCI0.LPCB.EC0_.HBTN] Namespace lookup failure, AE_NOT_FOUND" ACPI Error (psargs-0359): [\_SB_.PHSR] Namespace lookup failure, AE_NOT_FOUND" ACPI Error (psargs-0359): [SMS_] Namespace lookup failure, AE_NOT_FOUND" ACPI Error (psargs-0359): [SUPP] Namespace lookup failure, AE_NOT_FOUND" ACPI Error (psargs-0359): [_T_0] Namespace lookup failure, AE_NOT_FOUND" ACPI Error (psargs-0359): [TPOS] Namespace lookup failure, AE_NOT_FOUND" ACPI Error (psargs-0359): [URES] Namespace lookup failure, AE_NOT_FOUND" ACPI Error (psargs-0359): [Z012] Namespace lookup failure, AE_NOT_FOUND" ACPI Error (psloop-0136): Found unknown opcode 26 at AML address ffff88003785663a offset 56, ignoring [20080926]" ACPI Error (psparse-0524): Method parse/execution failed [\_PR_.CPU0._PSS] (Node ffff88007f26eee0), AE_AML_NO_RETURN_VALUE" ACPI Error (psparse-0524): Method parse/execution failed [\_PR_.CPU1._OSC] (Node f6c10198), AE_ALREADY_EXISTS" ACPI Error (psparse-0524): Method parse/execution failed [\_PR_.CPU1._PDC] (Node f6c10180), AE_ALREADY_EXISTS" ACPI Error (psparse-0524): Method parse/execution failed [\_PR_.CPU1._PDC] (Node f6c11150), AE_INVALID_TABLE_LENGTH" ACPI Error (psparse-0524): Method parse/execution failed [\_PR_.CPU1._PDC] (Node ffff88022f819f00), AE_ALREADY_EXISTS" ACPI Error (psparse-0524): Method parse/execution failed [\_PR_.CPU1._PSS] (Node ffff88007f26efa0), AE_AML_NO_RETURN_VALUE" ACPI Error (psparse-0524): Method parse/execution failed [\_PR_.CPU2._OSC] (Node f6c10270), AE_ALREADY_EXISTS" ACPI Error (psparse-0524): Method parse/execution failed [\_PR_.CPU2._PDC] (Node f6c10258), AE_ALREADY_EXISTS" ACPI Error (psparse-0524): Method parse/execution failed [\_PR_.CPU2._PDC] (Node f6c111e0), AE_INVALID_TABLE_LENGTH" ACPI Error (psparse-0524): Method parse/execution failed [\_SB_.MEM_._CRS] (Node f6c1b0a8), AE_AML_BUFFER_LIMIT" ACPI Error (psparse-0524): Method parse/execution failed [\_SB_.PCI0._INI] (Node db02d630), AE_NOT_FOUND" ACPI Error (psparse-0524): Method parse/execution failed [\_SB_.PCI0.LPC0.PMIO._CRS] (Node f6c15900), AE_AML_BUFFER_LIMIT" ACPI Error (psparse-0524): Method parse/execution failed [\_SB_.PCI0.LPC0.PMIO._CRS] (Node ffff88007f017980), AE_AML_BUFFER_LIMIT" ACPI Error (psparse-0524): Method parse/execution failed [\_SB_.PCI0.LPC0.PMIO._CRS] (Node ffff88007f817980), AE_AML_BUFFER_LIMIT" ACPI Error (psparse-0524): Method parse/execution failed [\_SB_.PCI0.LPCB.EC0_._REG] (Node ffff88013f81a260), AE_NOT_EXIST" ACPI Error (psparse-0524): Method parse/execution failed [\_SB_.PCI0._OSC] (Node de813cc0), AE_ALREADY_EXISTS" ACPI Error (psparse-0524): Method parse/execution failed [\_SB_.PCI0._OSC] (Node de814cc0), AE_ALREADY_EXISTS" ACPI Error (psparse-0524): Method parse/execution failed [\_SB_.PCI0._OSC] (Node f6c10d38), AE_ALREADY_EXISTS" ACPI Error (psparse-0524): Method parse/execution failed [\_SB_.PCI0._OSC] (Node f6c14cc0), AE_ALREADY_EXISTS" ACPI Error (psparse-0524): Method parse/execution failed [\_SB_.PCI0._OSC] (Node f6c15cc0), AE_ALREADY_EXISTS" ACPI Error (psparse-0524): Method parse/execution failed [\_SB_.PCI0._OSC] (Node f6c15dc8), AE_ALREADY_EXISTS" ACPI Error (psparse-0524): Method parse/execution failed [\_SB_.PCI0._OSC] (Node ffff8800bf017360), AE_NOT_FOUND" ACPI Error (psparse-0524): Method parse/execution failed [\_SB_.PCI0._OSC] (Node ffff88013f814b80), AE_NOT_FOUND" ACPI Error (psparse-0524): Method parse/execution failed [\_SB_.PCI0._OSC] (Node ffff88013f814e40), AE_NOT_FOUND" ACPI Error (psparse-0530): Method parse/execution failed [\_SB_.PCI0.LPC0.PMIO._CRS] (Node ffff880135a32980), AE_AML_BUFFER_LIMIT" ACPI Error (psparse-0537): Method parse/execution failed [\CPUT] (Node f7017600), AE_NOT_FOUND" ACPI Error (psparse-0537): Method parse/execution failed [\CPUT] (Node f701c150), AE_NOT_FOUND" ACPI Error (psparse-0537): Method parse/execution failed [\CPUT] (Node ffff88013384e6e0), AE_NOT_FOUND" ACPI Error (psparse-0537): Method parse/execution failed [\CPUT] (Node ffff880137a4e840), AE_NOT_FOUND" ACPI Error (psparse-0537): Method parse/execution failed [\CPUT] (Node ffff88013ba4e100), AE_NOT_FOUND" ACPI Error (psparse-0537): Method parse/execution failed [\CPUT] (Node ffff88013ba4f480), AE_NOT_FOUND" ACPI Error (psparse-0537): Method parse/execution failed [\CPUT] (Node ffff8801b9059860), AE_NOT_FOUND" ACPI Error (psparse-0537): Method parse/execution failed [\CPUT] (Node ffff880237056be0), AE_NOT_FOUND" ACPI Error (psparse-0537): Method parse/execution failed [\CPUT] (Node ffff8802370570c0), AE_NOT_FOUND" ACPI Error (psparse-0537): Method parse/execution failed [\EV4_] (Node f701b210), AE_NOT_FOUND" ACPI Error (psparse-0537): Method parse/execution failed [\EV4_] (Node ffff880227059000), AE_NOT_FOUND" ACPI Error (psparse-0537): Method parse/execution failed [\_GPE._L02] (Node ffff88007cf2a9c0), AE_NOT_EXIST" ACPI Error (psparse-0537): Method parse/execution failed [\_GPE._L02] (Node ffff88007d3289c0), AE_NOT_EXIST" ACPI Error (psparse-0537): Method parse/execution failed [\_GPE._L02] (Node ffff88013ba32120), AE_NOT_EXIST" ACPI Error (psparse-0537): Method parse/execution failed [\_GPE._L09] (Node ffff88003b5a7520), AE_LIMIT" ACPI Error (psparse-0537): Method parse/execution failed [\J380._STA] (Node f701cba0), AE_NOT_EXIST" ACPI Error (psparse-0537): Method parse/execution failed [\J380._STA] (Node ffff88013710c380), AE_NOT_EXIST" ACPI Error (psparse-0537): Method parse/execution failed [\J380._STA] (Node ffff88013712b380), AE_NOT_EXIST" ACPI Error (psparse-0537): Method parse/execution failed [\J380._STA] (Node ffff88013bb3fa80), AE_NOT_EXIST" ACPI Error (psparse-0537): Method parse/execution failed [\J380._STA] (Node ffff8801b916e720), AE_NOT_EXIST" ACPI Error (psparse-0537): Method parse/execution failed [\NEVT] (Node f702e9d8), AE_NOT_FOUND" ACPI Error (psparse-0537): Method parse/execution failed [\NEVT] (Node ffff880227052160), AE_NOT_FOUND" ACPI Error (psparse-0537): Method parse/execution failed [\] (Node c08cc7dc), AE_NOT_FOUND" ACPI Error (psparse-0537): Method parse/execution failed [\] (Node c08ce7dc), AE_ALREADY_EXISTS" ACPI Error (psparse-0537): Method parse/execution failed [\] (Node c08ce7dc), AE_NOT_FOUND" ACPI Error (psparse-0537): Method parse/execution failed [\] (Node c090665c), AE_NOT_FOUND" ACPI Error (psparse-0537): Method parse/execution failed [\] (Node c091bffc), AE_ALREADY_EXISTS" ACPI Error (psparse-0537): Method parse/execution failed [\] (Node c091bffc), AE_NOT_FOUND" ACPI Error (psparse-0537): Method parse/execution failed [\] (Node c091f65c), AE_NOT_FOUND" ACPI Error (psparse-0537): Method parse/execution failed [\] (Node ffffffff81a06440), AE_NOT_FOUND" ACPI Error (psparse-0537): Method parse/execution failed [\] (Node ffffffff81a08440), AE_ALREADY_EXISTS" ACPI Error (psparse-0537): Method parse/execution failed [\] (Node ffffffff81a08440), AE_NOT_FOUND" ACPI Error (psparse-0537): Method parse/execution failed [\] (Node ffffffff81a4d180), AE_NOT_FOUND" ACPI Error (psparse-0537): Method parse/execution failed [\P8XH] (Node ffff88013ba28020), AE_NOT_EXIST" ACPI Error (psparse-0537): Method parse/execution failed [\_PR_.CPU1._PDC] (Node f700e150), AE_INVALID_TABLE_LENGTH" ACPI Error (psparse-0537): Method parse/execution failed [\_PR_.CPU1._PDC] (Node f7015930), AE_ALREADY_EXISTS" ACPI Error (psparse-0537): Method parse/execution failed [\_PR_.CPU1._PDC] (Node ffff88012ba49180), AE_ALREADY_EXISTS" ACPI Error (psparse-0537): Method parse/execution failed [\_PR_.CPU1._PDC] (Node ffff88013ba3ffa0), AE_ALREADY_EXISTS" ACPI Error (psparse-0537): Method parse/execution failed [\_PR_.CPU2._PDC] (Node ef80d1e0), AE_INVALID_TABLE_LENGTH" ACPI Error (psparse-0537): Method parse/execution failed [\PRID.P_D0._STA] (Node f701ba38), AE_NOT_EXIST" ACPI Error (psparse-0537): Method parse/execution failed [\PRID.P_D0._STA] (Node f7072000), AE_NOT_EXIST" ACPI Error (psparse-0537): Method parse/execution failed [\PRID.P_D0._STA] (Node ffff88006df34f00), AE_NOT_EXIST" ACPI Error (psparse-0537): Method parse/execution failed [\PRID.P_D0._STA] (Node ffff88012bb111a0), AE_NOT_EXIST" ACPI Error (psparse-0537): Method parse/execution failed [\PRID.P_D1._STA] (Node f701baf8), AE_NOT_EXIST" ACPI Error (psparse-0537): Method parse/execution failed [\PRID.P_D1._STA] (Node f70720a8), AE_NOT_EXIST" ACPI Error (psparse-0537): Method parse/execution failed [\PRID.P_D1._STA] (Node ffff88006dfe3000), AE_NOT_EXIST" ACPI Error (psparse-0537): Method parse/execution failed [\PRID.P_D1._STA] (Node ffff88012bb11280), AE_NOT_EXIST" ACPI Error (psparse-0537): Method parse/execution failed [\_PR_.PPCE] (Node f702c7c8), AE_NOT_FOUND" ACPI Error (psparse-0537): Method parse/execution failed [\_PR_.PPCE] (Node ffff88022704e960), AE_NOT_FOUND" ACPI Error (psparse-0537): Method parse/execution failed [\PSSC] (Node f7017618), AE_NOT_FOUND" ACPI Error (psparse-0537): Method parse/execution failed [\PSSC] (Node f701c168), AE_NOT_FOUND" ACPI Error (psparse-0537): Method parse/execution failed [\PSSC] (Node ffff88013384e700), AE_NOT_FOUND" ACPI Error (psparse-0537): Method parse/execution failed [\PSSC] (Node ffff880137a4e860), AE_NOT_FOUND" ACPI Error (psparse-0537): Method parse/execution failed [\PSSC] (Node ffff88013ba4e120), AE_NOT_FOUND" ACPI Error (psparse-0537): Method parse/execution failed [\PSSC] (Node ffff88013ba4f4a0), AE_NOT_FOUND" ACPI Error (psparse-0537): Method parse/execution failed [\PSSC] (Node ffff8801b9059880), AE_NOT_FOUND" ACPI Error (psparse-0537): Method parse/execution failed [\PSSC] (Node ffff880237056c00), AE_NOT_FOUND" ACPI Error (psparse-0537): Method parse/execution failed [\PSSC] (Node ffff8802370570e0), AE_NOT_FOUND" ACPI Error (psparse-0537): Method parse/execution failed [\_PSW] (Node f701f0a8), AE_NOT_FOUND" ACPI Error (psparse-0537): Method parse/execution failed [\PXSX._STA] (Node ffff880133871ee0), AE_NOT_FOUND" ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.ADP0.ADJP] (Node ffff88013ba355c0), AE_NOT_FOUND" ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.ADP0.ADJP] (Node ffff88013ba3c5a0), AE_NOT_FOUND" ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.ADP0._PSR] (Node ffff88013ba35580), AE_NOT_FOUND" ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.ADP0._PSR] (Node ffff88013ba3c560), AE_NOT_FOUND" ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.BAT1._BIF] (Node f700ed38), AE_NOT_FOUND" ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.BAT1._BIF] (Node f700ee40), AE_NOT_FOUND" ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.BAT1._BIF] (Node f7010d38), AE_ALREADY_EXISTS" ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.BAT1.UBIF] (Node f700ed68), AE_ALREADY_EXISTS" ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.BAT1.UBIF] (Node f700ed68), AE_NOT_FOUND" ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.BAT1.UBIF] (Node f700ee70), AE_ALREADY_EXISTS" ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.BAT1.UBIF] (Node f700ee70), AE_NOT_FOUND" ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.BAT1.UBIF] (Node f7010d68), AE_ALREADY_EXISTS" ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.BAT1.UBIF] (Node f7010d68), AE_NOT_FOUND" ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.HTEV] (Node f700de58), AE_NOT_EXIST" ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.HTEV] (Node f700ee10), AE_NOT_EXIST" ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.HTEV] (Node ffff880075929600), AE_NOT_EXIST" ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.HTEV] (Node ffff88007db28600), AE_NOT_EXIST" ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.HTEV] (Node ffff88011b82d600), AE_NOT_EXIST" ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.MEM_._CRS] (Node f7017f60), AE_AML_BUFFER_LIMIT" ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.MEM_._CRS] (Node f7018f60), AE_AML_BUFFER_LIMIT" ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.MEM_._CRS] (Node ffff8800b4444e60), AE_AML_BUFFER_LIMIT" ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.MEM_._CRS] (Node ffff88013ba44cc0), AE_AML_BUFFER_LIMIT" ACPI Error (psparse-0537): Method parse/execution failed [\_SB_._OSC] (Node f701a648), AE_NOT_FOUND" ACPI Error (psparse-0537): Method parse/execution failed [\_SB_._OSC] (Node ffff88007f815ba0), AE_NOT_FOUND" ACPI Error (psparse-0537): Method parse/execution failed [\_SB_._OSC] (Node ffff88122fc1ea00), AE_NOT_FOUND" ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.PCI0.ACAD._PSR] (Node f701aa98), AE_NOT_FOUND" ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.PCI0.ACAD._PSR] (Node ffff88013384d720), AE_NOT_FOUND" ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.PCI0.ACEL._STA] (Node f7019f18), AE_NOT_FOUND" ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.PCI0.BAT0._BST] (Node f7013f30), AE_TIME" ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.PCI0.CBST] (Node f7015000), AE_TIME" ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.PCI0.DOCK._STA] (Node ffff880133e48620), AE_NOT_EXIST" ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.PCI0.GFX0.DD02._BQC] (Node f7017a50), AE_AML_OPERAND_TYPE" ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.PCI0.GFX0.DD02.GBQC] (Node f7017a68), AE_AML_OPERAND_TYPE" ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.PCI0.HPET._CRS] (Node ffff88007db32220), AE_NOT_FOUND" ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.PCI0.HPET._CRS] (Node ffff88013ba40220), AE_NOT_FOUND" ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.PCI0.HPET._STA] (Node ffff88007db32200), AE_NOT_FOUND" ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.PCI0.HPET._STA] (Node ffff88013ba40200), AE_NOT_FOUND" ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.PCI0._INI] (Node db80e690), AE_NOT_FOUND" ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.PCI0._INI] (Node f700f6c0), AE_NOT_FOUND" ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.PCI0.LPC0.BAT1._BST] (Node f70141e0), AE_TIME" ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.PCI0.LPC0.EC0_._REG] (Node f7013be8), AE_NOT_EXIST" ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.PCI0.LPC0.EC0_._REG] (Node f7017d08), AE_NOT_EXIST" ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.PCI0.LPC0.EC0_._REG] (Node ffff88002f1b4aa0), AE_NOT_FOUND" ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.PCI0.LPC0.EC0_._REG] (Node ffff8800759319a0), AE_NOT_EXIST" ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.PCI0.LPC0.EC0_._REG] (Node ffff88007db309a0), AE_NOT_EXIST" ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.PCI0.LPC0.EC0_._REG] (Node ffff88011b8359a0), AE_NOT_EXIST" ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.PCI0.LPC0.PMIO._CRS] (Node f7015900), AE_AML_BUFFER_LIMIT" ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.PCI0.LPCB.EC0_._Q09] (Node f7017468), AE_ALREADY_EXISTS" ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.PCI0.LPCB.EC0_._Q09] (Node f70177b0), AE_ALREADY_EXISTS" ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.PCI0.LPCB.EC0_._Q09] (Node f7019468), AE_NOT_FOUND" ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.PCI0.LPCB.EC0_._REG] (Node f7012a50), AE_NOT_FOUND" ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.PCI0.LPCB.EC0_._REG] (Node f702f3c0), AE_NOT_FOUND" ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.PCI0.LPCB.EC0_._REG] (Node ffff88013383fbc0), AE_NOT_FOUND" ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.PCI0.LPCB.EC0_._REG] (Node ffff880137a3fd00), AE_NOT_FOUND" ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.PCI0.LPCB.EC0_._REG] (Node ffff88013ba3c700), AE_NOT_FOUND" ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.PCI0.LPCB.EC0_._REG] (Node ffff88013ba49700), AE_NOT_FOUND" ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.PCI0.LPCB.EC0_._REG] (Node ffff8801b903fd20), AE_NOT_FOUND" ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.PCI0.LPCB.EC0_._REG] (Node ffff88023703fa80), AE_NOT_FOUND" ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.PCI0.LPCB.EC0_._REG] (Node ffff880237048d20), AE_NOT_FOUND" ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.PCI0.LPCB.ECDV._Q66] (Node f702e690), AE_NOT_FOUND" ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.PCI0.LPCB.ECDV._Q66] (Node ffff880227050d00), AE_NOT_FOUND" ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.PCI0.LPCB.KBC0.SMWR] (Node ffff88007cf2ebc0), AE_NOT_EXIST" ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.PCI0.LPCB.KBC0.SMWR] (Node ffff88007d32c8c0), AE_NOT_EXIST" ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.PCI0.LPC_.EC0_._REG] (Node f70142b8), AE_NOT_FOUND" ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.PCI0._OSC] (Node db412378), AE_ALREADY_EXISTS" ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.PCI0._OSC] (Node de811cc0), AE_ALREADY_EXISTS" ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.PCI0._OSC] (Node de8151e0), AE_ALREADY_EXISTS" ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.PCI0._OSC] (Node dec11cc0), AE_ALREADY_EXISTS" ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.PCI0._OSC] (Node dec13ca8), AE_ALREADY_EXISTS" ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.PCI0._OSC] (Node f7010e88), AE_ALREADY_EXISTS" ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.PCI0._OSC] (Node f7011780), AE_NOT_FOUND" ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.PCI0._OSC] (Node f7011bd0), AE_ALREADY_EXISTS" ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.PCI0._OSC] (Node f70122a0), AE_ALREADY_EXISTS" ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.PCI0._OSC] (Node f70124f8), AE_NOT_FOUND" ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.PCI0._OSC] (Node f7012cc0), AE_ALREADY_EXISTS" ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.PCI0._OSC] (Node f7012dc8), AE_ALREADY_EXISTS" ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.PCI0._OSC] (Node f7012f00), AE_NOT_FOUND" ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.PCI0._OSC] (Node f7013330), AE_ALREADY_EXISTS" ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.PCI0._OSC] (Node f70137f8), AE_ALREADY_EXISTS" ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.PCI0._OSC] (Node f70140d8), AE_ALREADY_EXISTS" ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.PCI0._OSC] (Node f7014228), AE_NOT_FOUND" ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.PCI0._OSC] (Node f70142b8), AE_ALREADY_EXISTS" ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.PCI0._OSC] (Node f7014a50), AE_ALREADY_EXISTS" ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.PCI0._OSC] (Node f7014a68), AE_ALREADY_EXISTS" ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.PCI0._OSC] (Node f7014a80), AE_ALREADY_EXISTS" ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.PCI0._OSC] (Node f7014ca8), AE_ALREADY_EXISTS" ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.PCI0._OSC] (Node f70155b8), AE_ALREADY_EXISTS" ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.PCI0._OSC] (Node f7016a68), AE_ALREADY_EXISTS" ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.PCI0._OSC] (Node f7016d98), AE_AML_OPERAND_TYPE" ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.PCI0._OSC] (Node f7016dc8), AE_AML_OPERAND_TYPE" ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.PCI0._OSC] (Node f7017dc8), AE_AML_OPERAND_TYPE" ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.PCI0._OSC] (Node f7018dc8), AE_AML_OPERAND_TYPE" ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.PCI0._OSC] (Node f701adc8), AE_AML_OPERAND_TYPE" ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.PCI0._OSC] (Node f7413270), AE_NOT_FOUND" ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.PCI0._OSC] (Node f74141e0), AE_ALREADY_EXISTS" ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.PCI0._OSC] (Node ffff8800379bba80), AE_AML_OPERAND_TYPE" ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.PCI0._OSC] (Node ffff8800379bbaa0), AE_AML_OPERAND_TYPE" ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.PCI0._OSC] (Node ffff8800379bca80), AE_AML_OPERAND_TYPE" ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.PCI0._OSC] (Node ffff88007592ea80), AE_AML_OPERAND_TYPE" ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.PCI0._OSC] (Node ffff88007592eaa0), AE_AML_OPERAND_TYPE" ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.PCI0._OSC] (Node ffff88007592faa0), AE_AML_OPERAND_TYPE" ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.PCI0._OSC] (Node ffff88007bf2bf20), AE_ALREADY_EXISTS" ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.PCI0._OSC] (Node ffff88007d32abc0), AE_NOT_FOUND" ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.PCI0._OSC] (Node ffff88007d32ccc0), AE_ALREADY_EXISTS" ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.PCI0._OSC] (Node ffff8800bc62d3a0), AE_NOT_FOUND" ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.PCI0._OSC] (Node ffff88011ba2d200), AE_ALREADY_EXISTS" ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.PCI0._OSC] (Node ffff88012ba38260), AE_ALREADY_EXISTS" ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.PCI0._OSC] (Node ffff88013ba29e80), AE_NOT_FOUND" ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.PCI0._OSC] (Node ffff88013ba393a0), AE_NOT_FOUND" ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.PCI0._OSC] (Node ffff88014b83caa0), AE_AML_OPERAND_TYPE" ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.PCI0.PEGP.EVGA.LCD_._BCM] (Node ffff8800bc647c80), AE_AML_PACKAGE_LIMIT" ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.PCI0.PIB_.EXFG] (Node f7015768), AE_AML_MUTEX_NOT_ACQUIRED" ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.PCI0.PIB_.FIR_._STA] (Node f7015900), AE_AML_MUTEX_NOT_ACQUIRED" ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.PCI0.RTC_._CRS] (Node ffff88007db322c0), AE_NOT_FOUND" ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.PCI0.RTC_._CRS] (Node ffff88013ba402c0), AE_NOT_FOUND" ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.PCI0.SAT0.PRT0._SDD] (Node ffff880233656ce0), AE_NOT_FOUND" ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.PCI0.SAT0.PRT1._SDD] (Node ffff880233656dc0), AE_NOT_FOUND" ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.PCI0.SAT1.CHN0._GTM] (Node f7014a38), AE_NOT_FOUND" ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.PCI0.SAT1.CHN0._GTM] (Node f70150f0), AE_NOT_FOUND" ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.PCI0.SAT1.CHN1._GTM] (Node f7014b28), AE_NOT_FOUND" ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.PCI0.SAT1.CHN1._GTM] (Node f70151e0), AE_NOT_FOUND" ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.PCI0.SATA.CHN0._GTM] (Node f7014300), AE_NOT_FOUND" ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.PCI0.SATA.CHN0._GTM] (Node f7014978), AE_NOT_FOUND" ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.PCI0.SATA.CHN1._GTM] (Node f70143f0), AE_NOT_FOUND" ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.PCI0.SATA.CHN1._GTM] (Node f7014a68), AE_NOT_FOUND" ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.PCI0.SATA.PRT0._SDD] (Node f7018e58), AE_NOT_FOUND" ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.PCI0.SATA.PRT0._SDD] (Node ffff8800bc632c60), AE_NOT_FOUND" ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.PCI0.SBRG.EC0_.BST2] (Node f7012e58), AE_TIME" ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.PMI0._GHL] (Node ffff88122fc1ece0), AE_AML_BUFFER_LIMIT" ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.PMI0._PMC] (Node ffff88122fc1ec60), AE_AML_BUFFER_LIMIT" ACPI Error (psparse-0537): Method parse/execution failed [\SECD.S_D0._STA] (Node f701bc78), AE_NOT_EXIST" ACPI Error (psparse-0537): Method parse/execution failed [\SECD.S_D0._STA] (Node f7072210), AE_NOT_EXIST" ACPI Error (psparse-0537): Method parse/execution failed [\SECD.S_D0._STA] (Node ffff88006dfe3200), AE_NOT_EXIST" ACPI Error (psparse-0537): Method parse/execution failed [\SECD.S_D0._STA] (Node ffff88012bb11460), AE_NOT_EXIST" ACPI Error (psparse-0537): Method parse/execution failed [\SECD.S_D1._STA] (Node f701bd38), AE_NOT_EXIST" ACPI Error (psparse-0537): Method parse/execution failed [\SECD.S_D1._STA] (Node f70722b8), AE_NOT_EXIST" ACPI Error (psparse-0537): Method parse/execution failed [\SECD.S_D1._STA] (Node ffff88006dfe3300), AE_NOT_EXIST" ACPI Error (psparse-0537): Method parse/execution failed [\SECD.S_D1._STA] (Node ffff88012bb11540), AE_NOT_EXIST" ACPI Error (psparse-0537): Method parse/execution failed [\SMIE] (Node f702ea20), AE_NOT_FOUND" ACPI Error (psparse-0537): Method parse/execution failed [\SMIE] (Node ffff8802270521c0), AE_NOT_FOUND" ACPI Error (psparse-0537): Method parse/execution failed [\_TZ_.C2E5] (Node f7017f30), AE_AML_PACKAGE_LIMIT" ACPI Error (psparse-0537): Method parse/execution failed [\_TZ_.C2E6] (Node f7017f48), AE_AML_PACKAGE_LIMIT" ACPI Error (psparse-0537): Method parse/execution failed [\_TZ_.C2E7] (Node f701b0f0), AE_AML_PACKAGE_LIMIT" ACPI Error (psparse-0537): Method parse/execution failed [\_TZ_.C2E8] (Node f701b108), AE_AML_PACKAGE_LIMIT" ACPI Error (psparse-0537): Method parse/execution failed [\_TZ_.THRM.SFAN] (Node ffff88007cf2aec0), AE_NOT_EXIST" ACPI Error (psparse-0537): Method parse/execution failed [\_TZ_.THRM.SFAN] (Node ffff88007d328ec0), AE_NOT_EXIST" ACPI Error (psparse-0537): Method parse/execution failed [\_TZ_.THRM.THCK] (Node ffff88007cf2af40), AE_NOT_EXIST" ACPI Error (psparse-0537): Method parse/execution failed [\_TZ_.THRM.THCK] (Node ffff88007d328f40), AE_NOT_EXIST" ACPI Error (psparse-0537): Method parse/execution failed [\_TZ_.THRM._TMP] (Node f7018be8), AE_TIME" ACPI Error (psparse-0537): Method parse/execution failed [\_TZ_.THRM._TMP] (Node f701a018), AE_TIME" ACPI Error (psparse-0537): Method parse/execution failed [\_TZ_.TZ00._PSL] (Node ffff88013be3fde0), AE_NOT_FOUND" ACPI Error (psparse-0537): Method parse/execution failed [\_TZ_.TZ00._PSL] (Node ffff88015ba4de00), AE_NOT_FOUND" ACPI Error (psparse-0537): Method parse/execution failed [\_TZ_.TZ00._PSL] (Node ffff880257054e20), AE_NOT_FOUND" ACPI Error (psparse-0537): Method parse/execution failed [\_TZ_.TZ01._HOT] (Node f7019e70), AE_NOT_FOUND" ACPI Error (psparse-0537): Method parse/execution failed [\_TZ_.TZ2_._TMP] (Node f7019618), AE_AML_PACKAGE_LIMIT" ACPI Error (psparse-0537): Method parse/execution failed [\_TZ_.TZ2_._TMP] (Node f701b7c8), AE_AML_PACKAGE_LIMIT" ACPI Error: Region EmbeddedControl(3) has no handler 20090521 exfldio-288" ACPI Error: Region EmbeddedControl(3) has no handler 20090521 exfldio-294" ACPI Error: Region EmbeddedControl(3) has no handler (20090903/exfldio-295)" ACPI Error: Region PCI_Config(2) has no handler (20090903/exfldio-295)" ACPI Error: SMBus or IPMI write requires Buffer of length 42, found length 20 (20090903/exfield-286)" ACPI Error (uteval-0232): Method execution failed [\_SB_.MEM_._CRS] (Node f6c1b0a8), AE_AML_BUFFER_LIMIT" ACPI Error (uteval-0232): Method execution failed [\_SB_.PCI0.LPC0.PMIO._CRS] (Node f6c15900), AE_AML_BUFFER_LIMIT" ACPI Error (uteval-0232): Method execution failed [\_SB_.PCI0.LPC0.PMIO._CRS] (Node ffff88007f017980), AE_AML_BUFFER_LIMIT" ACPI Error (uteval-0232): Method execution failed [\_SB_.PCI0.LPC0.PMIO._CRS] (Node ffff88007f817980), AE_AML_BUFFER_LIMIT" ACPI Error (uteval-0232): Method execution failed [\_SB_.PCI0.LPC0.PMIO._CRS] (Node ffff880135a32980), AE_AML_BUFFER_LIMIT" ACPI Error (uteval-0250): Method execution failed [\J380._STA] (Node f701cba0), AE_NOT_EXIST" ACPI Error (uteval-0250): Method execution failed [\J380._STA] (Node ffff88013710c380), AE_NOT_EXIST" ACPI Error (uteval-0250): Method execution failed [\J380._STA] (Node ffff88013712b380), AE_NOT_EXIST" ACPI Error (uteval-0250): Method execution failed [\J380._STA] (Node ffff88013bb3fa80), AE_NOT_EXIST" ACPI Error (uteval-0250): Method execution failed [\J380._STA] (Node ffff8801b916e720), AE_NOT_EXIST" ACPI Error (uteval-0250): Method execution failed [\PRID.P_D0._STA] (Node f701ba38), AE_NOT_EXIST" ACPI Error (uteval-0250): Method execution failed [\PRID.P_D0._STA] (Node f7072000), AE_NOT_EXIST" ACPI Error (uteval-0250): Method execution failed [\PRID.P_D0._STA] (Node ffff88006df34f00), AE_NOT_EXIST" ACPI Error (uteval-0250): Method execution failed [\PRID.P_D0._STA] (Node ffff88012bb111a0), AE_NOT_EXIST" ACPI Error (uteval-0250): Method execution failed [\PRID.P_D1._STA] (Node f701baf8), AE_NOT_EXIST" ACPI Error (uteval-0250): Method execution failed [\PRID.P_D1._STA] (Node f70720a8), AE_NOT_EXIST" ACPI Error (uteval-0250): Method execution failed [\PRID.P_D1._STA] (Node ffff88006dfe3000), AE_NOT_EXIST" ACPI Error (uteval-0250): Method execution failed [\PRID.P_D1._STA] (Node ffff88012bb11280), AE_NOT_EXIST" ACPI Error (uteval-0250): Method execution failed [\_SB_.MEM_._CRS] (Node f7018f60), AE_AML_BUFFER_LIMIT" ACPI Error (uteval-0250): Method execution failed [\_SB_.MEM_._CRS] (Node ffff8800b4444e60), AE_AML_BUFFER_LIMIT" ACPI Error (uteval-0250): Method execution failed [\_SB_.MEM_._CRS] (Node ffff88013ba44cc0), AE_AML_BUFFER_LIMIT" ACPI Error (uteval-0250): Method execution failed [\_SB_.PCI0.DOCK._STA] (Node ffff880133e48620), AE_NOT_EXIST" ACPI Error (uteval-0250): Method execution failed [\_SB_.PCI0.LPC0.PMIO._CRS] (Node f7015900), AE_AML_BUFFER_LIMIT" ACPI Error (uteval-0250): Method execution failed [\_SB_.PCI0.PIB_.FIR_._STA] (Node f7015900), AE_AML_MUTEX_NOT_ACQUIRED" ACPI Error (uteval-0250): Method execution failed [\SECD.S_D0._STA] (Node f701bc78), AE_NOT_EXIST" ACPI Error (uteval-0250): Method execution failed [\SECD.S_D0._STA] (Node f7072210), AE_NOT_EXIST" ACPI Error (uteval-0250): Method execution failed [\SECD.S_D0._STA] (Node ffff88006dfe3200), AE_NOT_EXIST" ACPI Error (uteval-0250): Method execution failed [\SECD.S_D0._STA] (Node ffff88012bb11460), AE_NOT_EXIST" ACPI Error (uteval-0250): Method execution failed [\SECD.S_D1._STA] (Node f701bd38), AE_NOT_EXIST" ACPI Error (uteval-0250): Method execution failed [\SECD.S_D1._STA] (Node f70722b8), AE_NOT_EXIST" ACPI Error (uteval-0250): Method execution failed [\SECD.S_D1._STA] (Node ffff88006dfe3300), AE_NOT_EXIST" ACPI Error (uteval-0250): Method execution failed [\SECD.S_D1._STA] (Node ffff88012bb11540), AE_NOT_EXIST" ACPI Error (uteval-0256): Method execution failed [\_SB_.MEM_._CRS] (Node f7017f60), AE_AML_BUFFER_LIMIT" ACPI Warning: 32/64 FACS address mismatch in FADT - two FACS tables! 20090521 tbfadt-370" ACPI Warning: 32/64 FACS address mismatch in FADT - two FACS tables! (20090903/tbfadt-369)" ACPI Warning: 32/64 FACS address mismatch in FADT - two FACS tables! (20100121/tbfadt-369)" ACPI Warning: 32/64X FACS address mismatch in FADT - 3762DF40/000000003762DF80, using 32 (20090903/tbfadt-486)" ACPI Warning: 32/64X FACS address mismatch in FADT - 3F611E40/000000003F611D40, using 32 20090521 tbfadt-487" ACPI Warning: 32/64X FACS address mismatch in FADT - 3F611E40/000000003F611D40, using 32 (20090903/tbfadt-486)" ACPI Warning: 32/64X FACS address mismatch in FADT - 5F611E40/000000005F611D40, using 32 20090521 tbfadt-487" ACPI Warning: 32/64X FACS address mismatch in FADT - 7B76BF40/000000007B76ED40, using 32 (20090903/tbfadt-486)" ACPI Warning: 32/64X FACS address mismatch in FADT - 7F3EBF40/000000007F3E7F40, using 32 20090521 tbfadt-487" ACPI Warning: 32/64X FACS address mismatch in FADT - 7F3ECF40/000000007F3E8F40, using 32 (20090903/tbfadt-486)" ACPI Warning: 32/64X FACS address mismatch in FADT - 7F611E40/000000007F611D40, using 32 20090521 tbfadt-487" ACPI Warning: 32/64X FACS address mismatch in FADT - 7FD5FF40/000000007FD65E40, using 32 20090521 tbfadt-487" ACPI Warning: 32/64X FACS address mismatch in FADT - 9DCC4F40/000000009DCC5E40, using 32 (20090903/tbfadt-486)" ACPI Warning: 32/64X FACS address mismatch in FADT - 9DF17E40/000000009DF17D40, using 32 20090521 tbfadt-487" ACPI Warning: 32/64X FACS address mismatch in FADT - B7B1CE40/00000000B7B1CD40, using 32 (20100121/tbfadt-486)" ACPI Warning: 32/64X FACS address mismatch in FADT - BADABF40/00000000BADAED40, using 32 (20090903/tbfadt-486)" ACPI Warning: 32/64X FACS address mismatch in FADT - BB76BF40/00000000BB76ED40, using 32 (20090903/tbfadt-486)" ACPI Warning: 32/64X FACS address mismatch in FADT - BBB61F40/00000000BBB67E40, using 32 20090521 tbfadt-487" ACPI Warning: 32/64X FACS address mismatch in FADT - BD651F40/00000000BD656F40, using 32 20090521 tbfadt-487" ACPI Warning: 32/64X FACS address mismatch in FADT - BDB5FF40/00000000BDB64F40, using 32 (20090903/tbfadt-486)" ACPI Warning: 32/64X FACS address mismatch in FADT - BDB61F40/00000000BDB66F40, using 32 20090521 tbfadt-487" ACPI Warning: 32/64X FACS address mismatch in FADT - BDF19E40/00000000BDF19D40, using 32 (20090903/tbfadt-486)" ACPI Warning: 32/64X FACS address mismatch in FADT - BFA51F40/00000000BFA56F40, using 32 20090521 tbfadt-487" ACPI Warning: 32/64X FACS address mismatch in FADT - BFE17E40/00000000BFE17D40, using 32 20090521 tbfadt-487" ACPI Warning: 32/64X FACS address mismatch in FADT - CB628E40/00000000CB628D40, using 32 20090521 tbfadt-487" ACPI Warning: 32/64X FACS address mismatch in FADT - CBE4AF40/00000000CBE4FF40, using 32 (20090903/tbfadt-486)" ACPI Warning: 32/64X FACS address mismatch in FADT - CBF6BF40/00000000CBF6ED40, using 32 (20090903/tbfadt-486)" ACPI Warning: 32/64X FACS address mismatch in FADT - CEF28F40/00000000CEF2BD40, using 32 (20090903/tbfadt-486)" ACPI Warning: 32/64X FACS address mismatch in FADT - CEF2CF40/00000000CEF2FD40, using 32 (20090903/tbfadt-486)" ACPI Warning: 32/64X FACS address mismatch in FADT - DADC1F40/00000000DADD5D40, using 32 (20090903/tbfadt-486)" ACPI Warning: 32/64X FACS address mismatch in FADT - DF647F40/00000000DF64AD40, using 32 20090521 tbfadt-487" ACPI Warning: 32/64X length mismatch in Gpe1Block: 0/32 20090521 tbfadt-527" ACPI Warning: 32/64X length mismatch in Gpe1Block: 0/32 (20090903/tbfadt-526)" ACPI Warning: 32/64X length mismatch in Gpe1Block: 0/32 (20100121/tbfadt-526)" ACPI Warning: _BQC returned an invalid level 20090521 video-629" ACPI Warning: _BQC returned an invalid level (20090903/video-631)" ACPI Warning: _BQC returned an invalid level (20091214/video-638)" ACPI Warning: _BQC returned an invalid level (20100121/video-638)" ACPI Warning: Could not enable fixed event 2 20090521 evxface-146" ACPI Warning: Could not enable fixed event 2 (20090903/evxface-146)" ACPI Warning: Could not enable fixed event 3 20090521 evxface-146" ACPI Warning: Could not enable fixed event 3 (20090903/evxface-146)" ACPI Warning: Detected an unsupported executable opcode at module-level: [0x0070] at table offset 0x006C (20090903/psloop-522)" ACPI Warning: Detected an unsupported executable opcode at module-level: [0x0070] at table offset 0x006F (20090903/psloop-522)" ACPI Warning: Detected an unsupported executable opcode at module-level: [0x0070] at table offset 0x0070 (20090903/psloop-522)" ACPI Warning: Detected an unsupported executable opcode at module-level: [0x0070] at table offset 0x0077 (20090903/psloop-522)" ACPI Warning: Detected an unsupported executable opcode at module-level: [0x0070] at table offset 0x007C (20090903/psloop-522)" ACPI Warning: Detected an unsupported executable opcode at module-level: [0x007B] at table offset 0x007D (20090903/psloop-522)" ACPI Warning: Detected an unsupported executable opcode at module-level: [0x007B] at table offset 0x007F (20090903/psloop-522)" ACPI Warning: Detected an unsupported executable opcode at module-level: [0x007B] at table offset 0x0080 (20090903/psloop-522)" ACPI Warning (dsobject-0501): Package List length (1) larger than NumElements count (0), truncated" ACPI Warning (dsobject-0501): Package List length (5) larger than NumElements count (4), truncated" ACPI Warning (dsobject-0501): Package List length (C) larger than NumElements count (2), truncated" ACPI Warning (dsobject-0501): Package List length (C) larger than NumElements count (3), truncated" ACPI Warning (dsobject-0501): Package List length (C) larger than NumElements count (4), truncated" ACPI Warning (dsobject-0502): Package List length (C) larger than NumElements count (3), truncated" ACPI Warning: Evaluating _BQC failed (20090903/video-641)" ACPI Warning (evxface-0146): Could not enable fixed event 3 [20090320]" ACPI Warning for \_PR_.CPU0._PSD:" ACPI Warning for \_PR_.CPU0._PSD: [] lapic_timer_state_broadcast+0x46/0x48" ACPI Warning for \_PR_.CPU0._PSD: Return Package type mismatch at index 4 - found [NULL Object Descriptor], expected Integer (20090903/nspredef-1012)" ACPI Warning for \_PR_.CPU1._PSD: Return Package type mismatch at index 4 - found [NULL Object Descriptor], expected Integer (20090903/nspredef-1012)" ACPI Warning for \_PR_.CPU2._PSD: Return Package type mismatch at index 4 - found [NULL Object Descriptor], expected Integer (20090903/nspredef-1012)" ACPI Warning for \_PR_.CPU3._PSD: Return Package type mismatch at index 4 - found [NULL Object Descriptor], expected Integer (20090903/nspredef-1012)" ACPI Warning for \_PR_.CPU4._PSD: Return Package type mismatch at index 4 - found [NULL Object Descriptor], expected Integer (20090903/nspredef-1012)" ACPI Warning for \_PR_.CPU5._PSD: Return Package type mismatch at index 4 - found [NULL Object Descriptor], expected Integer (20090903/nspredef-1012)" ACPI Warning for \_PR_.CPU6._PSD: Return Package type mismatch at index 4 - found [NULL Object Descriptor], expected Integer (20090903/nspredef-1012)" ACPI Warning for \_PR_.CPU7._PSD: Return Package type mismatch at index 4 - found [NULL Object Descriptor], expected Integer (20090903/nspredef-1012)" ACPI Warning for \_SB_.BAT0._BIF: Return Package type mismatch at index 12 - found Integer, expected String/Buffer (20090903/nspredef-1012)" ACPI Warning for \_SB_.BAT0._BIF: Return Package type mismatch at index 9 - found [NULL Object Descriptor], expected String/Buffer (20090903/nspredef-1012)" ACPI Warning for \_SB_.BAT1._BIF: Return Package type mismatch at index 12 - found Integer, expected String/Buffer (20090903/nspredef-1012)" ACPI Warning for \_SB_.BAT1._BST: Return Package type mismatch at index 2 - found [NULL Object Descriptor], expected Integer (20090903/nspredef-1012)" ACPI Warning for \_SB_.PCI0.BAT0._BIF: Converted Buffer to expected String at index 9 (20090903/nsrepair-132)" ACPI Warning for \_SB_.PCI0.FNC2.PRT0._GTF: Return type mismatch - found Integer, expected Buffer (20090903/nspredef-1006)" ACPI Warning for \_SB_.PCI0.FNC2.PRT1._GTF: Return type mismatch - found Integer, expected Buffer (20090903/nspredef-1006)" ACPI Warning for \_SB_.PCI0.IDE1.PRT0._GTF: Return type mismatch - found Integer, expected Buffer (20090903/nspredef-1006)" ACPI Warning for \_SB_.PCI0.LPC_.EC__.BAT0._BIF:" ACPI Warning for \_SB_.PCI0.LPC_.EC__.BAT0._BIF: Converted Buffer to expected String at index 10 (20090903/nsrepair-132)" ACPI Warning for \_SB_.PCI0.LPC_.EC__.BAT0._BIF: Converted Buffer to expected String at index 11 (20090903/nsrepair-132)" ACPI Warning for \_SB_.PCI0.LPC_.EC__.BAT0._BIF: Converted Buffer to expected String at index 12 (20090903/nsrepair-132)" ACPI Warning for \_SB_.PCI0.LPC_.EC__.BAT0._BIF: Converted Buffer to expected String at index 9 (20090903/nsrepair-132)" ACPI Warning for \_SB_.PCI0._OSC: Parameter count mismatch - ASL declared 5, ACPI requires 4 (20090903/nspredef-336)" ACPI Warning for \_SB_.PCI0._OSC: Parameter count mismatch - ASL declared 5, ACPI requires 4 (20091214/nspredef-351)" ACPI Warning for \_SB_.PCI0._OSC: Parameter count mismatch - ASL declared 5, ACPI requires 4 (20100121/nspredef-352)" ACPI Warning for \_SB_.PCI0._OSC: Return type mismatch - found Integer, expected Buffer (20090903/nspredef-1006)" ACPI Warning for \_SB_.PCI0.P0P1._PRT: Return Package has no elements (empty) (20090903/nspredef-433)" ACPI Warning for \_SB_.PCI0.PCIB._PRT: Return Package has no elements (empty) (20090903/nspredef-433)" ACPI Warning for \_SB_.PCI0._PRT: Return Package type mismatch at index 2 - found [NULL Object Descriptor], expected Integer/Reference (20090903/nspredef-1012)" ACPI Warning for \_SB_.PCI0.SAT0.PRT0._GTF: Return type mismatch - found Integer, expected Buffer (20090903/nspredef-1006)" ACPI Warning for \_SB_.PCI0.SAT0.PRT1._GTF: Return type mismatch - found Integer, expected Buffer (20090903/nspredef-1006)" ACPI Warning for \_SB_.PCI0.SATA.PRT0._GTF: Return type mismatch - found Integer, expected Buffer (20090903/nspredef-1006)" ACPI Warning for \_SB_.PCI0.SATA.PRT1._GTF: Return type mismatch - found Integer, expected Buffer (20090903/nspredef-1006)" ACPI Warning for \_SB_.PCI0.VID2._DOD: Return Package has no elements (empty) (20090903/nspredef-433)" ACPI Warning for \_TZ_.THRM._PSL: Return Package type mismatch at index 0 - found [NULL Object Descriptor], expected Reference (20090903/nspredef-1012)" ACPI Warning for \_TZ_.THRM._PSL: Return Package type mismatch at index 0 - found [NULL Object Descriptor], expected Reference (20100121/nspredef-1059)" ACPI Warning for \_TZ_.THRM._PSL: Return Package type mismatch at index 0 - found Processor, expected Reference (20090903/nspredef-1012)" ACPI Warning for \_TZ_.TZ01._PSV: Return type mismatch - found Package, expected Integer (20090903/nspredef-1006)" ACPI Warning: Incorrect checksum in table [ASF!] - 59, should be 08 20090521 tbutils-246" ACPI Warning: Incorrect checksum in table [ASF!] - 77, should be B6 (20090903/tbutils-314)" ACPI Warning: Incorrect checksum in table [ASF!] - E9, should be 94 20090521 tbutils-246" ACPI Warning: Incorrect checksum in table [ASF!] - F2, should be 8D (20090903/tbutils-314)" ACPI Warning: Incorrect checksum in table [ATKG] - 0F, should be E7 (20090903/tbutils-314)" ACPI Warning: Incorrect checksum in table [ATKG] - 49, should be 84 20090521 tbutils-246" ACPI Warning: Incorrect checksum in table [ATKG] - 6A, should be E5 (20090903/tbutils-314)" ACPI Warning: Incorrect checksum in table [ATKG] - 90, should be 59 (20090903/tbutils-314)" ACPI Warning: Incorrect checksum in table [ATKG] - 96, should be 59 20090521 tbutils-246" ACPI Warning: Incorrect checksum in table [ATKG] - 9D, should be 53 20090521 tbutils-246" ACPI Warning: Incorrect checksum in table [ATKG] - A4, should be 59 20090521 tbutils-246" ACPI Warning: Incorrect checksum in table [ATKG] - AA, should be 59 20090521 tbutils-246" ACPI Warning: Incorrect checksum in table [ATKG] - B0, should be 4A 20090521 tbutils-246" ACPI Warning: Incorrect checksum in table [ATKG] - C8, should be E5 (20100121/tbutils-314)" ACPI Warning: Incorrect checksum in table [ATKG] - CD, should be 59 20090521 tbutils-246" ACPI Warning: Incorrect checksum in table [ATKG] - E4, should be 59 (20090903/tbutils-314)" ACPI Warning: Incorrect checksum in table [ATKG] - E5, should be 59 20090521 tbutils-246" ACPI Warning: Incorrect checksum in table [ATKG] - E7, should be 59 20090521 tbutils-246" ACPI Warning: Incorrect checksum in table [GSCI] - 3B, should be BF (20090903/tbutils-314)" ACPI Warning: Incorrect checksum in table [GSCI] - 58, should be AA (20090903/tbutils-314)" ACPI Warning: Incorrect checksum in table [GSCI] - A8, should be 7B (20100121/tbutils-314)" ACPI Warning: Incorrect checksum in table [OEMB] - 00, should be FF 20090521 tbutils-246" ACPI Warning: Incorrect checksum in table [OEMB] - 03, should be FE 20090521 tbutils-246" ACPI Warning: Incorrect checksum in table [OEMB] - 04, should be 54 20090521 tbutils-246" ACPI Warning: Incorrect checksum in table [OEMB] - 05, should be FD 20090521 tbutils-246" ACPI Warning: Incorrect checksum in table [OEMB] - 06, should be 05 20090521 tbutils-246" ACPI Warning: Incorrect checksum in table [OEMB] - 0B, should be 02 20090521 tbutils-246" ACPI Warning: Incorrect checksum in table [OEMB] - 0B, should be 02 (20090903/tbutils-314)" ACPI Warning: Incorrect checksum in table [OEMB] - 0C, should be FF 20090521 tbutils-246" ACPI Warning: Incorrect checksum in table [OEMB] - 0F, should be 03 (20090903/tbutils-314)" ACPI Warning: Incorrect checksum in table [OEMB] - 0x77, should be 0x6A (20100428/tbutils-314)" ACPI Warning: Incorrect checksum in table [OEMB] - 16, should be 14 20090521 tbutils-246" ACPI Warning: Incorrect checksum in table [OEMB] - 17, should be 67 20090521 tbutils-246" ACPI Warning: Incorrect checksum in table [OEMB] - 18, should be 13 (20090903/tbutils-314)" ACPI Warning: Incorrect checksum in table [OEMB] - 1D, should be 10 (20090903/tbutils-314)" ACPI Warning: Incorrect checksum in table [OEMB] - 1F, should be 16 20090521 tbutils-246" ACPI Warning: Incorrect checksum in table [OEMB] - 20, should be 17 20090521 tbutils-246" ACPI Warning: Incorrect checksum in table [OEMB] - 24, should be 17 20090521 tbutils-246" ACPI Warning: Incorrect checksum in table [OEMB] - 24, should be 1D 20090521 tbutils-246" ACPI Warning: Incorrect checksum in table [OEMB] - 25, should be 16 (20090903/tbutils-314)" ACPI Warning: Incorrect checksum in table [OEMB] - 26, should be 76 20090521 tbutils-246" ACPI Warning: Incorrect checksum in table [OEMB] - 29, should be 1A (20090903/tbutils-314)" ACPI Warning: Incorrect checksum in table [OEMB] - 2A, should be 29 (20090903/tbutils-314)" ACPI Warning: Incorrect checksum in table [OEMB] - 2E, should be 2D 20090521 tbutils-246" ACPI Warning: Incorrect checksum in table [OEMB] - 2F, should be 22 (20090903/tbutils-314)" ACPI Warning: Incorrect checksum in table [OEMB] - 2F, should be 24 20090521 tbutils-246" ACPI Warning: Incorrect checksum in table [OEMB] - 30, should be 23 20090521 tbutils-246" ACPI Warning: Incorrect checksum in table [OEMB] - 33, should be 2E (20090903/tbutils-314)" ACPI Warning: Incorrect checksum in table [OEMB] - 3F, should be 3B (20090903/tbutils-314)" ACPI Warning: Incorrect checksum in table [OEMB] - 40, should be 3F (20090903/tbutils-314)" ACPI Warning: Incorrect checksum in table [OEMB] - 42, should be 35 20090521 tbutils-246" ACPI Warning: Incorrect checksum in table [OEMB] - 43, should be 3E 20090521 tbutils-246" ACPI Warning: Incorrect checksum in table [OEMB] - 44, should be 6C (20090903/tbutils-314)" ACPI Warning: Incorrect checksum in table [OEMB] - 45, should be 40 20090521 tbutils-246" ACPI Warning: Incorrect checksum in table [OEMB] - 4C, should be 40 20090521 tbutils-246" ACPI Warning: Incorrect checksum in table [OEMB] - 52, should be 4E 20090521 tbutils-246" ACPI Warning: Incorrect checksum in table [OEMB] - 52, should be 7D 20090521 tbutils-246" ACPI Warning: Incorrect checksum in table [OEMB] - 55, should be 4D 20090521 tbutils-246" ACPI Warning: Incorrect checksum in table [OEMB] - 57, should be 4E 20090521 tbutils-246" ACPI Warning: Incorrect checksum in table [OEMB] - 58, should be 53 20090521 tbutils-246" ACPI Warning: Incorrect checksum in table [OEMB] - 59, should be 4C 20090521 tbutils-246" ACPI Warning: Incorrect checksum in table [OEMB] - 5B, should be 50 20090521 tbutils-246" ACPI Warning: Incorrect checksum in table [OEMB] - 5B, should be 5A 20090521 tbutils-246" ACPI Warning: Incorrect checksum in table [OEMB] - 5C, should be 4F 20090521 tbutils-246" ACPI Warning: Incorrect checksum in table [OEMB] - 5F, should be 52 20090521 tbutils-246" ACPI Warning: Incorrect checksum in table [OEMB] - 61, should be 54 (20090903/tbutils-314)" ACPI Warning: Incorrect checksum in table [OEMB] - 61, should be 58 (20090903/tbutils-314)" ACPI Warning: Incorrect checksum in table [OEMB] - 63, should be 5E 20090521 tbutils-246" ACPI Warning: Incorrect checksum in table [OEMB] - 65, should be 5C 20090521 tbutils-246" ACPI Warning: Incorrect checksum in table [OEMB] - 66, should be 5D 20090521 tbutils-246" ACPI Warning: Incorrect checksum in table [OEMB] - 68, should be 5A 20090521 tbutils-246" ACPI Warning: Incorrect checksum in table [OEMB] - 69, should be 5F (20090903/tbutils-314)" ACPI Warning: Incorrect checksum in table [OEMB] - 6B, should be 66 20090521 tbutils-246" ACPI Warning: Incorrect checksum in table [OEMB] - 6B, should be 6A (20090903/tbutils-314)" ACPI Warning: Incorrect checksum in table [OEMB] - 6C, should be 27 20090521 tbutils-246" ACPI Warning: Incorrect checksum in table [OEMB] - 6D, should be 60 (20090903/tbutils-314)" ACPI Warning: Incorrect checksum in table [OEMB] - 6D, should be 6A (20090903/tbutils-314)" ACPI Warning: Incorrect checksum in table [OEMB] - 6E, should be 65 20090521 tbutils-246" ACPI Warning: Incorrect checksum in table [OEMB] - 6E, should be 66 20090521 tbutils-246" ACPI Warning: Incorrect checksum in table [OEMB] - 6F, should be 6E (20090903/tbutils-314)" ACPI Warning: Incorrect checksum in table [OEMB] - 6F, should be 9A (20090903/tbutils-314)" ACPI Warning: Incorrect checksum in table [OEMB] - 70, should be 67 20090521 tbutils-246" ACPI Warning: Incorrect checksum in table [OEMB] - 72, should be 69 20090521 tbutils-246" ACPI Warning: Incorrect checksum in table [OEMB] - 72, should be 69 (20090903/tbutils-314)" ACPI Warning: Incorrect checksum in table [OEMB] - 73, should be 64 20090521 tbutils-246" ACPI Warning: Incorrect checksum in table [OEMB] - 73, should be 66 20090521 tbutils-246" ACPI Warning: Incorrect checksum in table [OEMB] - 74, should be 6F 20090521 tbutils-246" ACPI Warning: Incorrect checksum in table [OEMB] - 75, should be 74 (20090903/tbutils-314)" ACPI Warning: Incorrect checksum in table [OEMB] - 77, should be 6A 20090521 tbutils-246" ACPI Warning: Incorrect checksum in table [OEMB] - 77, should be 76 (20090903/tbutils-314)" ACPI Warning: Incorrect checksum in table [OEMB] - 7B, should be 74 (20090903/tbutils-314)" ACPI Warning: Incorrect checksum in table [OEMB] - 7B, should be 76 (20090903/tbutils-314)" ACPI Warning: Incorrect checksum in table [OEMB] - 7B, should be 7A 20090521 tbutils-246" ACPI Warning: Incorrect checksum in table [OEMB] - 7D, should be 74 20090521 tbutils-246" ACPI Warning: Incorrect checksum in table [OEMB] - 7D, should be 74 (20090903/tbutils-314)" ACPI Warning: Incorrect checksum in table [OEMB] - 83, should be 7A 20090521 tbutils-246" ACPI Warning: Incorrect checksum in table [OEMB] - 83, should be 82 20090521 tbutils-246" ACPI Warning: Incorrect checksum in table [OEMB] - 85, should be 78 (20090903/tbutils-314)" ACPI Warning: Incorrect checksum in table [OEMB] - 85, should be 84 20090521 tbutils-246" ACPI Warning: Incorrect checksum in table [OEMB] - 86, should be 83 20090521 tbutils-246" ACPI Warning: Incorrect checksum in table [OEMB] - 86, should be 85 20090521 tbutils-246" ACPI Warning: Incorrect checksum in table [OEMB] - 88, should be 7F (20090903/tbutils-314)" ACPI Warning: Incorrect checksum in table [OEMB] - 89, should be 88 20090521 tbutils-246" ACPI Warning: Incorrect checksum in table [OEMB] - 8B, should be 7F 20090521 tbutils-246" ACPI Warning: Incorrect checksum in table [OEMB] - 8B, should be 8A (20090903/tbutils-314)" ACPI Warning: Incorrect checksum in table [OEMB] - 8C, should be 88 20090521 tbutils-246" ACPI Warning: Incorrect checksum in table [OEMB] - 8D, should be 80 20090521 tbutils-246" ACPI Warning: Incorrect checksum in table [OEMB] - 8D, should be 88 20090521 tbutils-246" ACPI Warning: Incorrect checksum in table [OEMB] - 8D, should be 8C 20090521 tbutils-246" ACPI Warning: Incorrect checksum in table [OEMB] - 8E, should be 85 (20090903/tbutils-314)" ACPI Warning: Incorrect checksum in table [OEMB] - 91, should be 88 20090521 tbutils-246" ACPI Warning: Incorrect checksum in table [OEMB] - 91, should be 90 (20090903/tbutils-314)" ACPI Warning: Incorrect checksum in table [OEMB] - 96, should be 91 (20090903/tbutils-314)" ACPI Warning: Incorrect checksum in table [OEMB] - 99, should be 94 20090521 tbutils-246" ACPI Warning: Incorrect checksum in table [OEMB] - 9D, should be B1 20090521 tbutils-246" ACPI Warning: Incorrect checksum in table [OEMB] - A0, should be 9B 20090521 tbutils-246" ACPI Warning: Incorrect checksum in table [OEMB] - A1, should be 94 (20090903/tbutils-314)" ACPI Warning: Incorrect checksum in table [OEMB] - A3, should be 9E (20090903/tbutils-314)" ACPI Warning: Incorrect checksum in table [OEMB] - A6, should be A1 (20090903/tbutils-314)" ACPI Warning: Incorrect checksum in table [OEMB] - A8, should be A0 20090521 tbutils-246" ACPI Warning: Incorrect checksum in table [OEMB] - A9, should be 9B 20090521 tbutils-246" ACPI Warning: Incorrect checksum in table [OEMB] - AC, should be A5 20090521 tbutils-246" ACPI Warning: Incorrect checksum in table [OEMB] - AC, should be A7 20090521 tbutils-246" ACPI Warning: Incorrect checksum in table [OEMB] - AD, should be A4 20090521 tbutils-246" ACPI Warning: Incorrect checksum in table [OEMB] - AE, should be A1 20090521 tbutils-246" ACPI Warning: Incorrect checksum in table [OEMB] - B0, should be AB (20090903/tbutils-314)" ACPI Warning: Incorrect checksum in table [OEMB] - B1, should be A8 (20090903/tbutils-314)" ACPI Warning: Incorrect checksum in table [OEMB] - B2, should be A5 (20090903/tbutils-314)" ACPI Warning: Incorrect checksum in table [OEMB] - B2, should be A9 20090521 tbutils-246" ACPI Warning: Incorrect checksum in table [OEMB] - B2, should be B1 20090521 tbutils-246" ACPI Warning: Incorrect checksum in table [OEMB] - B2, should be B1 (20090903/tbutils-314)" ACPI Warning: Incorrect checksum in table [OEMB] - B3, should be AE (20090903/tbutils-314)" ACPI Warning: Incorrect checksum in table [OEMB] - B6, should be B3 (20090903/tbutils-314)" ACPI Warning: Incorrect checksum in table [OEMB] - B7, should be B6 (20090903/tbutils-314)" ACPI Warning: Incorrect checksum in table [OEMB] - B8, should be B1 20090521 tbutils-246" ACPI Warning: Incorrect checksum in table [OEMB] - B8, should be B7 20090521 tbutils-246" ACPI Warning: Incorrect checksum in table [OEMB] - BB, should be AE 20090521 tbutils-246" ACPI Warning: Incorrect checksum in table [OEMB] - BB, should be AE (20090903/tbutils-314)" ACPI Warning: Incorrect checksum in table [OEMB] - BC, should be B3 20090521 tbutils-246" ACPI Warning: Incorrect checksum in table [OEMB] - BF, should be B2 (20090903/tbutils-314)" ACPI Warning: Incorrect checksum in table [OEMB] - C0, should be B7 20090521 tbutils-246" ACPI Warning: Incorrect checksum in table [OEMB] - C1, should be C0 20090521 tbutils-246" ACPI Warning: Incorrect checksum in table [OEMB] - C1, should be C0 (20090903/tbutils-314)" ACPI Warning: Incorrect checksum in table [OEMB] - C2, should be B9 20090521 tbutils-246" ACPI Warning: Incorrect checksum in table [OEMB] - C5, should be BC 20090521 tbutils-246" ACPI Warning: Incorrect checksum in table [OEMB] - C7, should be B8 20090521 tbutils-246" ACPI Warning: Incorrect checksum in table [OEMB] - C9, should be C8 20090521 tbutils-246" ACPI Warning: Incorrect checksum in table [OEMB] - CA, should be C9 (20090903/tbutils-314)" ACPI Warning: Incorrect checksum in table [OEMB] - CB, should be C3 20090521 tbutils-246" ACPI Warning: Incorrect checksum in table [OEMB] - CB, should be C6 (20090903/tbutils-314)" ACPI Warning: Incorrect checksum in table [OEMB] - CC, should be BF 20090521 tbutils-246" ACPI Warning: Incorrect checksum in table [OEMB] - CD, should be C4 20090521 tbutils-246" ACPI Warning: Incorrect checksum in table [OEMB] - CD, should be CC (20090903/tbutils-314)" ACPI Warning: Incorrect checksum in table [OEMB] - CE, should be C9 (20090903/tbutils-314)" ACPI Warning: Incorrect checksum in table [OEMB] - CF, should be A8 20090521 tbutils-246" ACPI Warning: Incorrect checksum in table [OEMB] - D0, should be C1 20090521 tbutils-246" ACPI Warning: Incorrect checksum in table [OEMB] - D0, should be CF 20090521 tbutils-246" ACPI Warning: Incorrect checksum in table [OEMB] - D3, should be C6 (20090903/tbutils-314)" ACPI Warning: Incorrect checksum in table [OEMB] - D4, should be C7 20090521 tbutils-246" ACPI Warning: Incorrect checksum in table [OEMB] - D4, should be D0 20090521 tbutils-246" ACPI Warning: Incorrect checksum in table [OEMB] - D5, should be D4 20090521 tbutils-246" ACPI Warning: Incorrect checksum in table [OEMB] - D6, should be D5 20090521 tbutils-246" ACPI Warning: Incorrect checksum in table [OEMB] - D7, should be CE (20090903/tbutils-314)" ACPI Warning: Incorrect checksum in table [OEMB] - D8, should be AC 20090521 tbutils-246" ACPI Warning: Incorrect checksum in table [OEMB] - DA, should be D9 20090521 tbutils-246" ACPI Warning: Incorrect checksum in table [OEMB] - DA, should be D9 (20090903/tbutils-314)" ACPI Warning: Incorrect checksum in table [OEMB] - DC, should be D7 (20090903/tbutils-314)" ACPI Warning: Incorrect checksum in table [OEMB] - DD, should be D0 (20090903/tbutils-314)" ACPI Warning: Incorrect checksum in table [OEMB] - DD, should be D4 20090521 tbutils-246" ACPI Warning: Incorrect checksum in table [OEMB] - DD, should be D8 20090521 tbutils-246" ACPI Warning: Incorrect checksum in table [OEMB] - DE, should be D6 20090521 tbutils-246" ACPI Warning: Incorrect checksum in table [OEMB] - DF, should be 2F (20090903/tbutils-314)" ACPI Warning: Incorrect checksum in table [OEMB] - E0, should be 30 (20090903/tbutils-314)" ACPI Warning: Incorrect checksum in table [OEMB] - E0, should be D7 (20090903/tbutils-314)" ACPI Warning: Incorrect checksum in table [OEMB] - E1, should be D3 (20090903/tbutils-314)" ACPI Warning: Incorrect checksum in table [OEMB] - E1, should be D8 20090521 tbutils-246" ACPI Warning: Incorrect checksum in table [OEMB] - E1, should be D8 (20090903/tbutils-314)" ACPI Warning: Incorrect checksum in table [OEMB] - E4, should be D7 20090521 tbutils-246" ACPI Warning: Incorrect checksum in table [OEMB] - E4, should be E3 20090521 tbutils-246" ACPI Warning: Incorrect checksum in table [OEMB] - E6, should be DD 20090521 tbutils-246" ACPI Warning: Incorrect checksum in table [OEMB] - E7, should be D8 20090521 tbutils-246" ACPI Warning: Incorrect checksum in table [OEMB] - E8, should be E3 20090521 tbutils-246" ACPI Warning: Incorrect checksum in table [OEMB] - E8, should be E3 (20090903/tbutils-314)" ACPI Warning: Incorrect checksum in table [OEMB] - EA, should be DD 20090521 tbutils-246" ACPI Warning: Incorrect checksum in table [OEMB] - EB, should be DE 20090521 tbutils-246" ACPI Warning: Incorrect checksum in table [OEMB] - EB, should be E3 20090521 tbutils-246" ACPI Warning: Incorrect checksum in table [OEMB] - EB, should be EA 20090521 tbutils-246" ACPI Warning: Incorrect checksum in table [OEMB] - EC, should be E7 (20090903/tbutils-314)" ACPI Warning: Incorrect checksum in table [OEMB] - ED, should be EC 20090521 tbutils-246" ACPI Warning: Incorrect checksum in table [OEMB] - EE, should be E9 (20090903/tbutils-314)" ACPI Warning: Incorrect checksum in table [OEMB] - F0, should be E3 20090521 tbutils-246" ACPI Warning: Incorrect checksum in table [OEMB] - F1, should be E8 20090521 tbutils-246" ACPI Warning: Incorrect checksum in table [OEMB] - F6, should be 46 20090521 tbutils-246" ACPI Warning: Incorrect checksum in table [OEMB] - F6, should be E7 (20090903/tbutils-314)" ACPI Warning: Incorrect checksum in table [OEMB] - F9, should be 24 20090521 tbutils-246" ACPI Warning: Incorrect checksum in table [OEMB] - FC, should be ED 20090521 tbutils-246" ACPI Warning: Incorrect checksum in table [OEMB] - FF, should be FA (20090903/tbutils-314)" ACPI Warning: Incorrect checksum in table [_RAT] - 00, should be 63 (20090903/tbutils-314)" ACPI Warning: Incorrect checksum in table [SSDT] - 37, should be C7 20090521 tbutils-246" ACPI Warning: Incorrect checksum in table [SSDT] - 39, should be 1C 20090521 tbutils-246" ACPI Warning: Incorrect checksum in table [SSDT] - 46, should be AF 20090521 tbutils-246" ACPI Warning: Incorrect checksum in table [SSDT] - 49, should be 4D 20090521 tbutils-246" ACPI Warning: Incorrect checksum in table [SSDT] - 4C, should be 12 (20090903/tbutils-314)" ACPI Warning: Incorrect checksum in table [SSDT] - 57, should be 18 20090521 tbutils-246" ACPI Warning: Incorrect checksum in table [SSDT] - 5C, should be 22 20090521 tbutils-246" ACPI Warning: Incorrect checksum in table [SSDT] - 5C, should be A6 (20090903/tbutils-314)" ACPI Warning: Incorrect checksum in table [SSDT] - 63, should be A6 20090521 tbutils-246" ACPI Warning: Incorrect checksum in table [SSDT] - 68, should be E9 20090521 tbutils-246" ACPI Warning: Incorrect checksum in table [SSDT] - 6D, should be DB (20090903/tbutils-314)" ACPI Warning: Incorrect checksum in table [SSDT] - 72, should be 79 (20090903/tbutils-314)" ACPI Warning: Incorrect checksum in table [SSDT] - 7B, should be ED 20090521 tbutils-246" ACPI Warning: Incorrect checksum in table [SSDT] - 83, should be 7F (20090903/tbutils-314)" ACPI Warning: Incorrect checksum in table [SSDT] - 83, should be 8F 20090521 tbutils-246" ACPI Warning: Incorrect checksum in table [SSDT] - 83, should be E1 20090521 tbutils-246" ACPI Warning: Incorrect checksum in table [SSDT] - 8D, should be 39 (20090903/tbutils-314)" ACPI Warning: Incorrect checksum in table [SSDT] - A8, should be 37 20090521 tbutils-246" ACPI Warning: Incorrect checksum in table [SSDT] - AE, should be 74 20090521 tbutils-246" ACPI Warning: Incorrect checksum in table [SSDT] - B3, should be B2 (20090903/tbutils-314)" ACPI Warning: Incorrect checksum in table [SSDT] - C5, should be CC 20090521 tbutils-246" ACPI Warning: Incorrect checksum in table [SSDT] - D9, should be 4D 20090521 tbutils-246" ACPI Warning: Incorrect checksum in table [SSDT] - E4, should be 73 20090521 tbutils-246" ACPI Warning: Incorrect checksum in table [SSDT] - EB, should be AC 20090521 tbutils-246" ACPI Warning: Incorrect checksum in table [SSDT] - F5, should be 51 20090521 tbutils-246" ACPI Warning: Incorrect checksum in table [SSDT] - F9, should be 3C (20090903/tbutils-314)" ACPI Warning: Incorrect checksum in table [TAMG] - E0, should be DF (20090903/tbutils-314)" ACPI Warning: Incorrect checksum in table [TCPA] - 00, should be 7F 20090521 tbutils-246" ACPI Warning: Incorrect checksum in table [TCPA] - 00, should be 7F (20090903/tbutils-314)" ACPI Warning: Incorrect checksum in table [TCPA] - 00, should be 87 20090521 tbutils-246" ACPI Warning: Incorrect checksum in table [TCPA] - 00, should be 87 (20090903/tbutils-314)" ACPI Warning: Incorrect checksum in table [TCPA] - 00, should be 89 20090521 tbutils-246" ACPI Warning: Incorrect checksum in table [TCPA] - 00, should be 93 20090521 tbutils-246" ACPI Warning: Incorrect checksum in table [TCPA] - 00, should be 95 20090521 tbutils-246" ACPI Warning: Incorrect checksum in table [TCPA] - 00, should be 96 20090521 tbutils-246" ACPI Warning: Incorrect checksum in table [TCPA] - 00, should be 96 (20090903/tbutils-314)" ACPI Warning: Incorrect checksum in table [TCPA] - 00, should be A9 20090521 tbutils-246" ACPI Warning: Incorrect checksum in table [TCPA] - 00, should be AB (20090903/tbutils-314)" ACPI Warning: Incorrect checksum in table [TCPA] - B6, should be 5A 20090521 tbutils-246" ACPI Warning: Incorrect checksum in table [TCPA] - B6, should be 5A (20090903/tbutils-314)" ACPI Warning: Incorrect checksum in table [TCPA] - D3, should be 77 20090521 tbutils-246" ACPI Warning: Invalid length for Pm1aControlBlock: 32, using default 16 20090521 tbfadt-608" ACPI Warning: Invalid length for Pm1aControlBlock: 32, using default 16 (20090903/tbfadt-607)" ACPI Warning: Invalid length for Pm2ControlBlock: 0, using default 8 20090521 tbfadt-608" ACPI Warning: Invalid length for Pm2ControlBlock: 16, using default 8 20090521 tbfadt-608" ACPI Warning: Invalid throttling state, reset 20090521 processor_throttling-843" ACPI Warning (nseval-0168): Insufficient arguments - method [_OSC] needs 5, found 4 [20080926]" ACPI Warning (nspredef-0252): \_SB_.PCI0._OSC: Parameter count mismatch - ASL declared 5, expected 4 [20080926]" ACPI Warning (nspredef-0357): \_PR_.CPU1._PSD: Return Package has no elements (empty) [20080926]" ACPI Warning (nspredef-0357): \_SB_.PCI0.AGP_.SLI_.SLI1.VID1._DOD: Return Package has no elements (empty) [20080926]" ACPI Warning (nspredef-0357): \_SB_.PCI0.P0P1._PRT: Return Package has no elements (empty) [20080926]" ACPI Warning (nspredef-0357): \_SB_.PCI0.P2P_._PRT: Return Package has no elements (empty) [20080926]" ACPI Warning (nspredef-0357): \_SB_.PCI0.PCIB._PRT: Return Package has no elements (empty) [20080926]" ACPI Warning (nspredef-0357): \_SB_.PCI0.VID2._DOD: Return Package has no elements (empty) [20080926]" ACPI Warning (nspredef-0437): \_SB_.PCI0.VID2._DOD: Return Package has no elements (empty) [20090320]" ACPI Warning (nspredef-0852): \_PR_.CPU0._PSS: Return type mismatch - found Integer, expected Package [20080926]" ACPI Warning (nspredef-0852): \_SB_.PCI0.SATA.PRT0._GTF: Return type mismatch - found Integer, expected Buffer [20080926]" ACPI Warning (nspredef-0852): \_SB_.PCI0.SATA.PRT1._GTF: Return type mismatch - found Integer, expected Buffer [20080926]" ACPI Warning (nspredef-0858): \_SB_.BAT1._BIF: Return Package type mismatch at index 12 - found Integer, expected String/Buffer [20080926]" ACPI Warning (nspredef-0858): \_SB_.BAT1._BST: Return Package type mismatch at index 2 - found [NULL Object Descriptor], expected Integer [20080926]" ACPI Warning (nspredef-0858): \_SB_.BAT2._BIF: Return Package type mismatch at index 12 - found Integer, expected String/Buffer [20080926]" ACPI Warning (nspredef-0858): \_TZ_.THRM._PSL: Return Package type mismatch at index 0 - found [NULL Object Descriptor], expected Reference [20080926]" ACPI Warning (nspredef-0858): \_TZ_.THRM._PSL: Return Package type mismatch at index 0 - found Processor, expected Reference [20080926]" ACPI Warning (nspredef-0943): \_SB_.PCI0.FNC2.PRT0._GTF: Return type mismatch - found Integer, expected Buffer [20090320]" ACPI Warning (nspredef-0949): \_SB_.BAT1._BIF: Return Package type mismatch at index 12 - found Integer, expected String/Buffer [20090320]" ACPI Warning: Optional field Gpe1Block has zero address or length: 000000000000102C/0 20090521 tbfadt-558" ACPI Warning: Optional field Gpe1Block has zero address or length: 000000000000102C/0 (20090903/tbfadt-557)" ACPI Warning: Optional field Gpe1Block has zero address or length: 000000000000102C/0 (20100121/tbfadt-557)" ACPI Warning: Optional field Gpe1Block has zero address or length: 000000000000802C/0 (20090903/tbfadt-557)" ACPI Warning: Optional field Pm2ControlBlock has zero address or length: 0000000000000000/1 20090521 tbfadt-558" ACPI Warning: Optional field Pm2ControlBlock has zero address or length: 0000000000000000/1 (20090903/tbfadt-557)" ACPI Warning: Optional field Pm2ControlBlock has zero address or length: 0000000000000000/1 (20100121/tbfadt-557)" ACPI Warning: Optional field Pm2ControlBlock has zero address or length: 0000000000000450/0 20090521 tbfadt-558" ACPI Warning: Optional field Pm2ControlBlock has zero address or length: 0000000000000820/0 20090521 tbfadt-558" ACPI Warning: Package List length (0x10) larger than NumElements count (0x6), truncated" ACPI Warning: Package List length (0x10) larger than NumElements count (0x8), truncated" ACPI Warning: Package List length (0x1) larger than NumElements count (0x0), truncated" ACPI Warning: Package List length (0x5) larger than NumElements count (0x2), truncated" ACPI Warning: Package List length (0x5) larger than NumElements count (0x3), truncated" ACPI Warning: Package List length (0x6) larger than NumElements count (0x2), truncated" ACPI Warning: Package List length (0x6) larger than NumElements count (0x3), truncated" ACPI Warning: Package List length (0x7) larger than NumElements count (0x3), truncated" ACPI Warning: Package List length (0xA8) larger than NumElements count (0x3), truncated" ACPI Warning: Package List length (0xCA) larger than NumElements count (0x4), truncated" ACPI Warning: Package List length (0xC) larger than NumElements count (0x4), truncated" ACPI Warning: Package List length (10A) larger than NumElements count (2), truncated" ACPI Warning: Package List length (10) larger than NumElements count (6), truncated" ACPI Warning: Package List length (1) larger than NumElements count (0), truncated" ACPI Warning: Package List length (6) larger than NumElements count (2), truncated" ACPI Warning: Package List length (8) larger than NumElements count (5), truncated" ACPI Warning: Package List length (A8) larger than NumElements count (3), truncated" ACPI Warning: Package List length (CA) larger than NumElements count (4), truncated" ACPI Warning: Package List length (C) larger than NumElements count (3), truncated" ACPI Warning: Package List length (C) larger than NumElements count (4), truncated" ACPI Warning: Package List length (C) larger than NumElements count (6), truncated" ACPI Warning: Package List length (EA) larger than NumElements count (3), truncated" ACPI Warning: \_PR_.CPU0._CST: Return Package is too small - found 4, expected 4 20090521 nspredef-748" ACPI Warning: \_PR_.CPU0._PSD: Return Package type mismatch at index 0 - found Integer, expected Package 20090521 nspredef-946" ACPI Warning: \_PR_.CPU0._TSD: Return Package type mismatch at index 0 - found Integer, expected Package 20090521 nspredef-946" ACPI Warning: \_PR_.CPU1._PSD: Return Package type mismatch at index 0 - found Integer, expected Package 20090521 nspredef-946" ACPI Warning: \_PR_.CPU1._TSD: Return Package type mismatch at index 0 - found Integer, expected Package 20090521 nspredef-946" ACPI Warning (processor_throttling-0843): Invalid throttling state, reset [20090320]" ACPI Warning: \_SB_.BAT1._BIF: Return Package type mismatch at index 12 - found Integer, expected String/Buffer 20090521 nspredef-946" ACPI Warning: \_SB_.BAT1._BST: Return Package type mismatch at index 2 - found [NULL Object Descriptor], expected Integer 20090521 nspredef-946" ACPI Warning: \_SB_.PCI0.AGP_.VGA_.LCD_._BQC: Return type mismatch - found Reference, expected Integer 20090521 nspredef-940" ACPI Warning: \_SB_.PCI0.FNC2.PRT0._GTF: Return type mismatch - found Integer, expected Buffer 20090521 nspredef-940" ACPI Warning: \_SB_.PCI0.FNC2.PRT1._GTF: Return type mismatch - found Integer, expected Buffer 20090521 nspredef-940" ACPI Warning: \_SB_.PCI0.FNC2.PRT4._GTF: Return type mismatch - found Integer, expected Buffer 20090521 nspredef-940" ACPI Warning: \_SB_.PCI0._OSC: Parameter count mismatch - ASL declared 5, ACPI requires 4 20090521 nspredef-328" ACPI Warning: \_SB_.PCI0.P0P1._PRT: Return Package has no elements (empty) 20090521 nspredef-434" ACPI Warning: \_SB_.PCI0.P0P2.M86_.LCD_._BCL: Return type mismatch - found Integer, expected Package 20090521 nspredef-940" ACPI Warning: \_SB_.PCI0.P2P_._PRT: Return Package has no elements (empty) 20090521 nspredef-434" ACPI Warning: \_SB_.PCI0.PCIB._PRT: Return Package has no elements (empty) 20090521 nspredef-434" ACPI Warning: \_SB_.PCI0.PEGP.NVGA.MXMI: Excess arguments - needs 1, found 2 20090521 nspredef-287" ACPI Warning: \_SB_.PCI0.PEGP.NVGA.MXMS: Excess arguments - needs 1, found 2 20090521 nspredef-287" ACPI Warning: \_SB_.PCI0.SATA.PRT0._GTF: Return type mismatch - found Integer, expected Buffer 20090521 nspredef-940" ACPI Warning: \_SB_.PCI0.SATA.PRT2._GTF: Return type mismatch - found Integer, expected Buffer 20090521 nspredef-940" ACPI Warning: \_SB_.PCI0.VID2._DOD: Return Package has no elements (empty) 20090521 nspredef-434" ACPI Warning (tbfadt-0370): 32/64 FACS address mismatch in FADT - two FACS tables! [20090320]" ACPI Warning (tbfadt-0442): Optional field "Gpe1Block" has zero address or length: 000000000000102C/0 [20080321]" ACPI Warning (tbfadt-0442): Optional field "Gpe1Block" has zero address or length: 000000000000102C/0 [20080609]" ACPI Warning (tbfadt-0442): Optional field "Pm2ControlBlock" has zero address or length: 0000000000000000/1 [20080609]" ACPI Warning (tbfadt-0460): Optional field "Gpe1Block" has zero address or length: 000000000000102C/0 [20080926]" ACPI Warning (tbfadt-0460): Optional field "Pm2ControlBlock" has zero address or length: 0000000000000000/1 [20080926]" ACPI Warning (tbfadt-0460): Optional field "Pm2ControlBlock" has zero address or length: 0000000000000820/0 [20080926]" ACPI Warning (tbfadt-0488): 32/64X FACS address mismatch in FADT - 3F611E40/000000003F611D40, using 32 [20090320]" ACPI Warning (tbfadt-0488): 32/64X FACS address mismatch in FADT - 7DB62F40/000000007DB67F40, using 32 [20090320]" ACPI Warning (tbfadt-0531): 32/64X length mismatch in Gpe1Block: 0/32 [20090320]" ACPI Warning (tbfadt-0562): Optional field Gpe1Block has zero address or length: 000000000000102C/0 [20090320]" ACPI Warning (tbutils-0217): Incorrect checksum in table [ASF!] - CD, should be 61 [20080926]" ACPI Warning (tbutils-0217): Incorrect checksum in table [ASF!] - FC, should be 97 [20080926]" ACPI Warning (tbutils-0217): Incorrect checksum in table [ATKG] - 16, should be 59 [20080609]" ACPI Warning (tbutils-0217): Incorrect checksum in table [ATKG] - 6E, should be E5 [20080926]" ACPI Warning (tbutils-0217): Incorrect checksum in table [ATKG] - 9D, should be 59 [20080926]" ACPI Warning (tbutils-0217): Incorrect checksum in table [ATKG] - B0, should be 4A [20080926]" ACPI Warning (tbutils-0217): Incorrect checksum in table [ATKG] - C9, should be EC [20080926]" ACPI Warning (tbutils-0217): Incorrect checksum in table [ATKG] - D4, should be 59 [20080926]" ACPI Warning (tbutils-0217): Incorrect checksum in table [OEMB] - 0B, should be 0A [20080926]" ACPI Warning (tbutils-0217): Incorrect checksum in table [OEMB] - 1B, should be 12 [20080926]" ACPI Warning (tbutils-0217): Incorrect checksum in table [OEMB] - 26, should be 18 [20080926]" ACPI Warning (tbutils-0217): Incorrect checksum in table [OEMB] - 35, should be 60 [20080926]" ACPI Warning (tbutils-0217): Incorrect checksum in table [OEMB] - 38, should be 63 [20080926]" ACPI Warning (tbutils-0217): Incorrect checksum in table [OEMB] - 58, should be 4F [20080926]" ACPI Warning (tbutils-0217): Incorrect checksum in table [OEMB] - 5C, should be 4F [20080926]" ACPI Warning (tbutils-0217): Incorrect checksum in table [OEMB] - 5E, should be 51 [20080609]" ACPI Warning (tbutils-0217): Incorrect checksum in table [OEMB] - 6B, should be 5E [20080926]" ACPI Warning (tbutils-0217): Incorrect checksum in table [OEMB] - 6C, should be 62 [20080926]" ACPI Warning (tbutils-0217): Incorrect checksum in table [OEMB] - 6C, should be 67 [20080609]" ACPI Warning (tbutils-0217): Incorrect checksum in table [OEMB] - 74, should be 6C [20080926]" ACPI Warning (tbutils-0217): Incorrect checksum in table [OEMB] - 75, should be A0 [20080926]" ACPI Warning (tbutils-0217): Incorrect checksum in table [OEMB] - 78, should be B0 [20080926]" ACPI Warning (tbutils-0217): Incorrect checksum in table [OEMB] - 79, should be A4 [20080926]" ACPI Warning (tbutils-0217): Incorrect checksum in table [OEMB] - 85, should be 78 [20080321]" ACPI Warning (tbutils-0217): Incorrect checksum in table [OEMB] - 8D, should be 7F [20080926]" ACPI Warning (tbutils-0217): Incorrect checksum in table [OEMB] - 9A, should be 91 [20080926]" ACPI Warning (tbutils-0217): Incorrect checksum in table [OEMB] - A2, should be 99 [20080926]" ACPI Warning (tbutils-0217): Incorrect checksum in table [OEMB] - A8, should be 9B [20080926]" ACPI Warning (tbutils-0217): Incorrect checksum in table [OEMB] - AF, should be 81 [20080926]" ACPI Warning (tbutils-0217): Incorrect checksum in table [OEMB] - B1, should be A4 [20080926]" ACPI Warning (tbutils-0217): Incorrect checksum in table [OEMB] - B2, should be A5 [20080926]" ACPI Warning (tbutils-0217): Incorrect checksum in table [OEMB] - B2, should be AA [20080926]" ACPI Warning (tbutils-0217): Incorrect checksum in table [OEMB] - C0, should be BB [20080926]" ACPI Warning (tbutils-0217): Incorrect checksum in table [OEMB] - C6, should be BD [20080926]" ACPI Warning (tbutils-0217): Incorrect checksum in table [OEMB] - CC, should be BF [20080926]" ACPI Warning (tbutils-0217): Incorrect checksum in table [OEMB] - CC, should be FD [20080926]" ACPI Warning (tbutils-0217): Incorrect checksum in table [OEMB] - CF, should be C6 [20080926]" ACPI Warning (tbutils-0217): Incorrect checksum in table [OEMB] - DD, should be D4 [20080926]" ACPI Warning (tbutils-0217): Incorrect checksum in table [OEMB] - DE, should be D3 [20080926]" ACPI Warning (tbutils-0217): Incorrect checksum in table [OEMB] - E0, should be DD [20080926]" ACPI Warning (tbutils-0217): Incorrect checksum in table [OEMB] - E2, should be D5 [20080926]" ACPI Warning (tbutils-0217): Incorrect checksum in table [OEMB] - E4, should be D7 [20080926]" ACPI Warning (tbutils-0217): Incorrect checksum in table [OEMB] - E4, should be DB [20080609]" ACPI Warning (tbutils-0217): Incorrect checksum in table [OEMB] - EC, should be E3 [20080926]" ACPI Warning (tbutils-0217): Incorrect checksum in table [OEMB] - EE, should be E1 [20080926]" ACPI Warning (tbutils-0217): Incorrect checksum in table [OEMB] - F1, should be E4 [20080926]" ACPI Warning (tbutils-0217): Incorrect checksum in table [OEMB] - F3, should be EE [20080926]" ACPI Warning (tbutils-0217): Incorrect checksum in table [OEMB] - F6, should be E9 [20080609]" ACPI Warning (tbutils-0217): Incorrect checksum in table [OEMB] - F6, should be F5 [20080926]" ACPI Warning (tbutils-0217): Incorrect checksum in table [OEMB] - FA, should be ED [20080926]" ACPI Warning (tbutils-0217): Incorrect checksum in table [OEMB] - FB, should be FA [20080926]" ACPI Warning (tbutils-0217): Incorrect checksum in table [SSDT] - 48, should be 0E [20080926]" ACPI Warning (tbutils-0217): Incorrect checksum in table [SSDT] - 64, should be 2A [20080926]" ACPI Warning (tbutils-0217): Incorrect checksum in table [SSDT] - 83, should be 7B [20080926]" ACPI Warning (tbutils-0217): Incorrect checksum in table [SSDT] - 83, should be 97 [20080926]" ACPI Warning (tbutils-0217): Incorrect checksum in table [SSDT] - 9E, should be 4A [20080926]" ACPI Warning (tbutils-0217): Incorrect checksum in table [TCPA] - 00, should be 87 [20080926]" ACPI Warning (tbutils-0217): Incorrect checksum in table [TCPA] - 00, should be 9A [20080926]" ACPI Warning (tbutils-0217): Incorrect checksum in table [TCPA] - 00, should be A5 [20080926]" ACPI Warning (tbutils-0217): Incorrect checksum in table [TCPA] - 00, should be A9 [20080926]" ACPI Warning (tbutils-0246): Incorrect checksum in table [OEMB] - 35, should be 60 [20090320]" ACPI Warning (tbutils-0246): Incorrect checksum in table [OEMB] - 96, should be 95 [20090320]" ACPI Warning: \_TZ_.THRM._AL0: Return Package type mismatch at index 0 - found [NULL Object Descriptor], expected Reference 20090521 nspredef-946" ACPI Warning: \_TZ_.THRM._PSL: Return Package type mismatch at index 0 - found [NULL Object Descriptor], expected Reference 20090521 nspredef-946" ACPI Warning: \_TZ_.THRM._PSL: Return Package type mismatch at index 0 - found Processor, expected Reference 20090521 nspredef-946" ACPI Warning: \_TZ_.THRM._TZD: Return Package type mismatch at index 0 - found Processor, expected Reference 20090521 nspredef-946" ACPI Warning: \_TZ_.TZ00._PSL: Return Package type mismatch at index 0 - found Processor, expected Reference 20090521 nspredef-946" CPU0: Temperature above threshold, cpu clock throttled (total events = 1)" Disabling IRQ #10" Disabling IRQ #11" Disabling IRQ #16" Disabling IRQ #18" Disabling IRQ #19" Disabling IRQ #20" Disabling IRQ #21" Disabling IRQ #5" Disabling IRQ #9" [Firmware Bug]: ACPI: ACPI brightness control misses _BQC function" [Firmware Bug]: ACPI(EVGA) defines _DOD but not _DOS" [Firmware Bug]: ACPI(IGPU) defines _DOD but not _DOS" [Firmware Bug]: ACPI: Invalid BIOS _PSS frequency: 0x0 MHz" [Firmware Bug]: ACPI(NGFX) defines _DOD but not _DOS" [Firmware Bug]: ACPI(NVGA) defines _DOD but not _DOS" [Firmware Bug]: ACPI(PEGP) defines _DOD but not _DOS" [Firmware Bug]: ACPI(VGA0) defines _DOD but not _DOS" [Firmware Bug]: ACPI(VGA) defines _DOD but not _DOS" [Firmware Bug]: ACPI(XVS0) defines _DOD but not _DOS" [Firmware Bug]: ACPI(Z00P) defines _DOD but not _DOS" [Firmware Bug]: ACPI(Z01I) defines _DOD but not _DOS" [Firmware Bug]: _BCQ is used instead of _BQC" [Firmware Bug]: BIOS needs update for CPU frequency support" [Firmware Bug]: Invalid critical threshold (0)" [Firmware Bug]: powernow-k8: No compatible ACPI _PSS objects found." [Firmware Bug]: powernow-k8: No PSB or ACPI _PSS objects" [Firmware Bug]: powernow-k8: Try again with latest BIOS." [Firmware Bug]: powernow-k8: Your BIOS does not provide ACPI _PSS objects in a way that Linux understands. Please report this to the Linux ACPI maintainers and complain to your BIOS vendor." fwts-test/000077500000000000000000000000001231470457100130225ustar00rootroot00000000000000fwts-test/acpidump-0001/000077500000000000000000000000001231470457100152025ustar00rootroot00000000000000fwts-test/acpidump-0001/acpidump-0001.log000066400000000000000000001474661231470457100201070ustar00rootroot00000000000000acpidump acpidump: Dump ACPI tables. acpidump ---------------------------------------------------------- acpidump Test 1 of 1: Dump ACPI tables. acpidump RSDP @ f7240 (36 bytes) (loaded from file) acpidump ---- acpidump Root System Description Pointer: acpidump acpidump [0x000 0000 8] Signature: RSD PTR acpidump [0x008 0008 1] Checksum: 0xc5 acpidump [0x009 0009 6] OEM ID: LENOVO acpidump [0x00f 0015 1] Revision: 0x02 acpidump [0x010 0016 4] RsdtAddress: 0xbf6d8794 acpidump [0x014 0020 4] Length: 0x00000024 acpidump [0x018 0024 8] XsdtAddress: 0x00000000bf6d87f0 acpidump [0x020 0032 1] Extended Checksum: 0x39 acpidump [0x021 0033 3] Reserved: 0x00 [0] acpidump [0x021 0033 3] Reserved: 0x00 [1] acpidump [0x021 0033 3] Reserved: 0x00 [2] acpidump acpidump RSDT @ bf6d8794 (88 bytes) (loaded from file) acpidump ---- acpidump Root System Description Table: acpidump acpidump [0x000 0000 4] Signature: RSDT acpidump [0x004 0004 4] Length: 0x00000058 acpidump [0x008 0008 1] Revision: 0x01 acpidump [0x009 0009 1] Checksum: 0x43 acpidump [0x00a 0010 6] OEM ID: LENOVO acpidump [0x010 0016 8] OEM Table ID: TP-68 acpidump [0x018 0024 4] OEM Revision: 0x06040000 acpidump [0x01c 0028 4] Creator ID: LTP acpidump [0x020 0032 4] Creator Revision: 0x00000000 acpidump [0x024 0036 4] Entry 00 FACP: 0xbf6dfb5e acpidump [0x028 0040 4] Entry 01 APIC: 0xbf6dfcc6 acpidump [0x02c 0044 4] Entry 02 HPET: 0xbf6dfd2e acpidump [0x030 0048 4] Entry 03 MCFG: 0xbf6dfd66 acpidump [0x034 0052 4] Entry 04 BOOT: 0xbf6dffd8 acpidump [0x038 0056 4] Entry 05 TMOR: 0xbf6dfdd4 acpidump [0x03c 0060 4] Entry 06 SLIC: 0xbf6dfdfa acpidump [0x040 0064 4] Entry 07 APIC: 0xbf6dff70 acpidump [0x044 0068 4] Entry 08 SSDT: 0xbf6d98bd acpidump [0x048 0072 4] Entry 09 SSDT: 0xbf6d981a acpidump [0x04c 0076 4] Entry 10 SSDT: 0xbf6d8e10 acpidump [0x050 0080 4] Entry 11 SSDT: 0xbf6d8d6a acpidump [0x054 0084 4] Entry 12 SSDT: 0xbf6d8884 acpidump acpidump DSDT @ bf6d9b6a (24564 bytes) (loaded from file) acpidump ---- acpidump Differentiated System Description Table: acpidump acpidump [0x000 0000 4] Signature: DSDT acpidump [0x004 0004 4] Length: 0x00005ff4 acpidump [0x008 0008 1] Revision: 0x02 acpidump [0x009 0009 1] Checksum: 0x11 acpidump [0x00a 0010 6] OEM ID: TOSCPL acpidump [0x010 0016 8] OEM Table ID: CRESTLNE acpidump [0x018 0024 4] OEM Revision: 0x06040000 acpidump [0x01c 0028 4] Creator ID: INTL acpidump [0x020 0032 4] Creator Revision: 0x20060608 acpidump Contains 0x5fd0 bytes of AML byte code acpidump acpidump FACS @ bf6e2fc0 (64 bytes) (loaded from file) acpidump ---- acpidump Firmware ACPI Control Structure: acpidump acpidump [0x000 0000 4] Signature: FACS acpidump [0x004 0004 4] Length: 0x00000040 acpidump [0x008 0008 4] H/W Signature: 0x00000000 acpidump [0x00c 0012 4] Waking Vector: 0x00000000 acpidump [0x010 0016 4] Global Lock: 0x00000000 acpidump [0x014 0020 4] Flags: 0x00000000 acpidump [0x018 0024 8] X Waking Vector: 0x0000000000000000 acpidump [0x020 0032 1] Version: 0x01 acpidump [0x024 0036 4] OSPM Flags: 0x00000000 acpidump acpidump FACP @ bf6dfb5e (116 bytes) (loaded from file) acpidump ---- acpidump Fixed ACPI Description Table: acpidump acpidump [0x000 0000 4] Signature: FACP acpidump [0x004 0004 4] Length: 0x00000074 acpidump [0x008 0008 1] Revision: 0x01 acpidump [0x009 0009 1] Checksum: 0x5c acpidump [0x00a 0010 6] OEM ID: TOSCPL acpidump [0x010 0016 8] OEM Table ID: CRESTLNE acpidump [0x018 0024 4] OEM Revision: 0x06040000 acpidump [0x01c 0028 4] Creator ID: LOHR acpidump [0x020 0032 4] Creator Revision: 0x0000005a acpidump [0x024 0036 4] FACS Address: 0xbf6e2fc0 acpidump [0x028 0040 4] DSDT Address: 0xbf6d9b6a acpidump [0x02c 0044 1] Model: 0x00 acpidump [0x02d 0045 1] PM Profile: 0x00 (Unspecified) acpidump [0x02e 0046 2] SCI Interrupt: 0x0009 acpidump [0x030 0048 4] SMI Command Port: 0x000000b2 acpidump [0x034 0052 1] ACPI Enable Value: 0xf0 acpidump [0x035 0053 1] ACPI Disable Value: 0xf1 acpidump [0x036 0054 1] S4BIOS Command: 0x00 acpidump [0x037 0055 1] P-State Control: 0x80 acpidump [0x038 0056 4] PM1A Event Block: 0x00001000 acpidump [0x03c 0060 4] PM1B Event Block: 0x00000000 acpidump [0x040 0064 4] PM1A Control Block: 0x00001004 acpidump [0x044 0068 4] PM1B Control Block: 0x00000000 acpidump [0x048 0072 4] PM2 Control Block: 0x00001020 acpidump [0x04c 0076 4] PM Timer Block: 0x00001008 acpidump [0x050 0080 4] GPE0 Block: 0x00001028 acpidump [0x054 0084 4] GPE1 Block: 0x00000000 acpidump [0x058 0088 1] PM1 Event Block Length: 0x04 acpidump [0x059 0089 1] PM1 Control Block Length: 0x02 acpidump [0x05a 0090 1] PM2 Control Block Length: 0x01 acpidump [0x05b 0091 1] PM Timer Block Length: 0x04 acpidump [0x05c 0092 1] GPE0 Block Length: 0x08 acpidump [0x05d 0093 1] GPE1 Block Length: 0x00 acpidump [0x05f 0095 1] _CST Support: 0x85 acpidump [0x060 0096 2] C2 Latency: 0x0001 acpidump [0x062 0098 2] C3 Latency: 0x0039 acpidump [0x064 0100 2] CPU Cache Size: 0x0000 acpidump [0x066 0102 2] CPU Cache Flush Stride: 0x0000 acpidump [0x068 0104 1] Duty Cycle Offset: 0x01 acpidump [0x069 0105 1] Duty Cycle Width: 0x03 acpidump [0x06a 0106 1] RTC Day Alarm Index: 0x0d acpidump [0x06b 0107 1] RTC Month Alarm Index: 0x00 acpidump [0x06c 0108 1] RTC Century Index: 0x32 acpidump [0x06d 0109 2] IA-PC Boot Flags (see below): 0x0000 acpidump Legacy Devices Supported (V2): 0x0 acpidump 8042 present on ports 60/64 (V2): 0x0 acpidump VGA Not Present (V4): 0x0 acpidump MSI Not Supported (V4): 0x0 acpidump PCIe ASPM Not supported (V4): 0x0 acpidump CMOS RTC Not Present (V5): 0x0 acpidump [0x070 0112 4] Flags (see below): 0x000080a5 acpidump WBINVD instruction (V1): 0x1 acpidump WBINVD flushes all caches (V1): 0x0 acpidump All CPUs support C1 (V1): 0x1 acpidump C2 works on MP system (V1): 0x0 acpidump Control Method Power Button (V1): 0x0 acpidump Control Method Sleep Button (V1): 0x1 acpidump RTC wake not in fixed reg space (V1): 0x0 acpidump RTC can wake system from S4 (V1): 0x1 acpidump 32 bit PM timer (V1): 0x0 acpidump Docking Capability (V1): 0x0 acpidump Reset Register Supported (V2): 0x0 acpidump Sealed Case (V3): 0x0 acpidump Headless, No Video (V3): 0x0 acpidump Use native instr. after SLP_TYPx (V3): 0x0 acpidump PCI_EXP_WAK bits supported (V4): 0x0 acpidump Use patform clock (V4): 0x1 acpidump RTC_STS Valid after S4 wake (V4): 0x0 acpidump Remote power on capable (V4): 0x0 acpidump Use APIC Cluster Model (V4): 0x0 acpidump Use APIC Physical Dest. Mode (V4): 0x0 acpidump ACPI hardware is not implemented (V5): 0x0 acpidump S0 power savings are equal or better than S3 (V5): 0x0 acpidump RESERVED: 0x000 acpidump acpidump APIC @ bf6dfcc6 (104 bytes) (loaded from file) acpidump ---- acpidump Multiple APIC Description Table: acpidump acpidump [0x000 0000 4] Signature: APIC acpidump [0x004 0004 4] Length: 0x00000068 acpidump [0x008 0008 1] Revision: 0x01 acpidump [0x009 0009 1] Checksum: 0xcc acpidump [0x00a 0010 6] OEM ID: INTEL acpidump [0x010 0016 8] OEM Table ID: CRESTLNE acpidump [0x018 0024 4] OEM Revision: 0x06040000 acpidump [0x01c 0028 4] Creator ID: LOHR acpidump [0x020 0032 4] Creator Revision: 0x0000005a acpidump [0x024 0036 4] Local APIC Address: 0xfee00000 acpidump [0x028 0040 4] Flags: 0x00000001 acpidump PCAT_COMPAT: 0x1 acpidump APIC Structure #1: acpidump [0x02c 0044 1] Type: 0x00 (Processor Local APIC) acpidump [0x02d 0045 1] Length: 0x08 acpidump [0x02e 0046 1] ACPI CPU ID: 0x00 acpidump [0x02f 0047 1] APIC ID: 0x00 acpidump [0x030 0048 4] Flags: 0x00000001 acpidump Enabled: 0x1 acpidump APIC Structure #2: acpidump [0x034 0052 1] Type: 0x00 (Processor Local APIC) acpidump [0x035 0053 1] Length: 0x08 acpidump [0x036 0054 1] ACPI CPU ID: 0x01 acpidump [0x037 0055 1] APIC ID: 0x01 acpidump [0x038 0056 4] Flags: 0x00000001 acpidump Enabled: 0x1 acpidump APIC Structure #3: acpidump [0x03c 0060 1] Type: 0x01 (I/O APIC) acpidump [0x03d 0061 1] Length: 0x0c acpidump [0x03e 0062 1] I/O APIC ID: 0x01 acpidump [0x040 0064 4] I/O APIC Addr: 0xfec00000 acpidump [0x044 0068 4] Global IRQ Base: 0x00000000 acpidump APIC Structure #4: acpidump [0x048 0072 1] Type: 0x02 (Interrupt Source Override) acpidump [0x049 0073 1] Length: 0x0a acpidump [0x04a 0074 1] Bus: 0x00 acpidump [0x04b 0075 1] Source: 0x00 acpidump [0x04c 0076 4] Gbl Sys Int: 0x00000002 acpidump [0x050 0080 2] Flags: 0x0000 acpidump Polarity: 0x0 acpidump Trigger Mode: 0x0 acpidump APIC Structure #5: acpidump [0x052 0082 1] Type: 0x02 (Interrupt Source Override) acpidump [0x053 0083 1] Length: 0x0a acpidump [0x054 0084 1] Bus: 0x00 acpidump [0x055 0085 1] Source: 0x09 acpidump [0x056 0086 4] Gbl Sys Int: 0x00000009 acpidump [0x05a 0090 2] Flags: 0x000d acpidump Polarity: 0x1 acpidump Trigger Mode: 0x3 acpidump APIC Structure #6: acpidump [0x05c 0092 1] Type: 0x04 (Local APIC NMI) acpidump [0x05d 0093 1] Length: 0x06 acpidump [0x05e 0094 1] ACPI CPU ID: 0x00 acpidump [0x05f 0095 2] Flags: 0x0005 acpidump [0x061 0097 1] Local APIC LINT: 0x01 acpidump APIC Structure #7: acpidump [0x062 0098 1] Type: 0x04 (Local APIC NMI) acpidump [0x063 0099 1] Length: 0x06 acpidump [0x064 0100 1] ACPI CPU ID: 0x01 acpidump [0x065 0101 2] Flags: 0x0005 acpidump [0x067 0103 1] Local APIC LINT: 0x01 acpidump acpidump HPET @ bf6dfd2e (56 bytes) (loaded from file) acpidump ---- acpidump IA-PC High Precision Event Timer Table: acpidump acpidump [0x000 0000 4] Signature: HPET acpidump [0x004 0004 4] Length: 0x00000038 acpidump [0x008 0008 1] Revision: 0x01 acpidump [0x009 0009 1] Checksum: 0x0a acpidump [0x00a 0010 6] OEM ID: INTEL acpidump [0x010 0016 8] OEM Table ID: CRESTLNE acpidump [0x018 0024 4] OEM Revision: 0x06040000 acpidump [0x01c 0028 4] Creator ID: LOHR acpidump [0x020 0032 4] Creator Revision: 0x0000005a acpidump [0x024 0036 4] Event Timer ID: 0x8086a201 acpidump Hardware Rev: 0x01 acpidump Num Comparitors: 0x02 acpidump Count Size Cap: 0x1 acpidump Reserved: 0x0 acpidump IRQ Routing Cap: 0x1 acpidump PCI Vendor ID: 0x8086 acpidump acpidump [0x028 0040 12] Base Address: (Generic Address Structure) acpidump [0x028 0040 1] addr_space_id: 0x00 (System Memory) acpidump [0x029 0041 1] reg_bit_width: 0x00 acpidump [0x02a 0042 1] reg_bit_offset: 0x00 acpidump [0x02b 0043 1] access_width: 0x00 (Undefined (legacy reasons)) acpidump [0x02c 0044 8] address: 0x00000000fed00000 acpidump [0x034 0052 1] HPET Number: 0x00 acpidump [0x035 0053 2] Main Counter Min: 0x0080 acpidump [0x037 0055 1] Page Prot Attr: 0x00 acpidump Page Protection: 0x0 acpidump OEM Attr: 0x0 acpidump acpidump MCFG @ bf6dfd66 (60 bytes) (loaded from file) acpidump ---- acpidump PCI Express Memory Mapped Config Space Base Address Table: acpidump acpidump [0x000 0000 4] Signature: MCFG acpidump [0x004 0004 4] Length: 0x0000003c acpidump [0x008 0008 1] Revision: 0x01 acpidump [0x009 0009 1] Checksum: 0x32 acpidump [0x00a 0010 6] OEM ID: INTEL acpidump [0x010 0016 8] OEM Table ID: CRESTLNE acpidump [0x018 0024 4] OEM Revision: 0x06040000 acpidump [0x01c 0028 4] Creator ID: LOHR acpidump [0x020 0032 4] Creator Revision: 0x0000005a acpidump [0x024 0036 8] Reserved: 0x0000000000000000 acpidump acpidump Configuration #1: acpidump [0x000 0000 8] Base Address: 0x00000000e0000000 acpidump [0x008 0008 2] PCI Seg Grp Num: 0x0000 acpidump [0x00a 0010 1] Start Bus Num: 0x00 acpidump [0x00b 0011 1] End Bus Num: 0xff acpidump [0x00c 0012 4] Reserved: 0x00000000 acpidump acpidump BOOT @ bf6dffd8 (40 bytes) (loaded from file) acpidump ---- acpidump Simple Boot Flag Table: acpidump acpidump [0x000 0000 4] Signature: BOOT acpidump [0x004 0004 4] Length: 0x00000028 acpidump [0x008 0008 1] Revision: 0x01 acpidump [0x009 0009 1] Checksum: 0xa5 acpidump [0x00a 0010 6] OEM ID: PTLTD acpidump [0x010 0016 8] OEM Table ID: $SBFTBL$ acpidump [0x018 0024 4] OEM Revision: 0x06040000 acpidump [0x01c 0028 4] Creator ID: LTP acpidump [0x020 0032 4] Creator Revision: 0x00000001 acpidump [0x024 0036 1] CMOS offset: 0x36 acpidump acpidump TMOR @ bf6dfdd4 (38 bytes) (loaded from file) acpidump ---- acpidump [0x000 0000 4] Signature: TMOR acpidump [0x004 0004 4] Length: 0x00000026 acpidump [0x008 0008 1] Revision: 0x01 acpidump [0x009 0009 1] Checksum: 0xeb acpidump [0x00a 0010 6] OEM ID: PTLTD acpidump [0x010 0016 8] OEM Table ID: acpidump [0x018 0024 4] OEM Revision: 0x06040000 acpidump [0x01c 0028 4] Creator ID: PTL acpidump [0x020 0032 4] Creator Revision: 0x00000003 acpidump acpidump 0000: 54 4d 4f 52 26 00 00 00 01 eb 50 54 4c 54 44 20 TMOR&.....PTLTD acpidump 0010: 20 20 20 20 20 20 20 20 00 00 04 06 50 54 4c 20 ....PTL acpidump 0020: 03 00 00 00 f3 f4 ...... acpidump acpidump SLIC @ bf6dfdfa (374 bytes) (loaded from file) acpidump ---- acpidump Microsoft Software License Table: acpidump acpidump [0x000 0000 4] Signature: SLIC acpidump [0x004 0004 4] Length: 0x00000176 acpidump [0x008 0008 1] Revision: 0x01 acpidump [0x009 0009 1] Checksum: 0x99 acpidump [0x00a 0010 6] OEM ID: LENOVO acpidump [0x010 0016 8] OEM Table ID: TP-68 acpidump [0x018 0024 4] OEM Revision: 0x06040000 acpidump [0x01c 0028 4] Creator ID: TBD acpidump [0x020 0032 4] Creator Revision: 0x00000001 acpidump acpidump [0x024 0036 4] Type: 0x00000000 acpidump [0x028 0040 4] Length: 0x0000009c acpidump [0x02c 0044 1] Key Type: 0x06 acpidump [0x02d 0045 1] Version: 0x02 acpidump [0x02e 0046 2] Reserved: 0x0000 acpidump [0x030 0048 4] Algorithm: 0x00002400 acpidump [0x034 0052 4] Magic: 0x31415352 acpidump [0x038 0056 4] Bit Length: 0x00000400 acpidump [0x03c 0060 128] Modulus: 01 00 01 00 69 16 4a 9f acpidump [0x03c 0060 128] Modulus: b1 4b 3a fb 80 20 aa af acpidump [0x03c 0060 128] Modulus: c4 f9 3e c1 80 49 ee 6a acpidump [0x03c 0060 128] Modulus: 65 26 72 1e cd bf 5f 2f acpidump [0x03c 0060 128] Modulus: 96 d6 c0 0a 92 f5 06 b5 acpidump [0x03c 0060 128] Modulus: 00 b2 3b 29 02 e2 4c 8d acpidump [0x03c 0060 128] Modulus: c2 f2 bc 41 77 9c 70 f0 acpidump [0x03c 0060 128] Modulus: f3 1b 09 d2 63 5a dc a8 acpidump [0x03c 0060 128] Modulus: 83 f8 5e c9 15 95 f9 fa acpidump [0x03c 0060 128] Modulus: fd dc 05 b7 4d 67 7f 2d acpidump [0x03c 0060 128] Modulus: b3 84 33 20 e1 d1 79 2a acpidump [0x03c 0060 128] Modulus: a7 6a 77 d1 b6 20 2a 76 acpidump [0x03c 0060 128] Modulus: 42 c5 d5 e9 b6 43 40 55 acpidump [0x03c 0060 128] Modulus: 44 c3 c9 37 99 5f 41 97 acpidump [0x03c 0060 128] Modulus: 70 f3 d1 f6 07 ec 7b 1a acpidump [0x03c 0060 128] Modulus: 29 a1 c1 f1 91 fd 48 86 acpidump acpidump [0x0c0 0192 4] Type: 0x00000001 acpidump [0x0c4 0196 4] Length: 0x000000b6 acpidump [0x0c8 0200 4] Version: 0x00020000 acpidump [0x0cc 0204 6] OEM ID: LENOVO acpidump [0x0d2 0210 8] OEM TABLE ID: TP-68 acpidump [0x0da 0218 8] Windows Flag: 57 49 4e 44 4f 57 53 20 acpidump [0x0e2 0226 4] SLIC Version: 0x00000000 acpidump [0x0e6 0230 16] Reserved: 00 00 00 00 00 00 00 00 acpidump [0x0e6 0230 16] Reserved: 00 00 00 00 00 00 00 00 acpidump [0x0f6 0246 128] Signature: 8a 6e 2e c9 36 e6 7f 10 acpidump [0x0f6 0246 128] Signature: 8a ea 14 ad d2 93 b7 6d acpidump [0x0f6 0246 128] Signature: 9b 73 ad 83 36 b8 6c a7 acpidump [0x0f6 0246 128] Signature: a7 ee 37 47 16 fe f3 fc acpidump [0x0f6 0246 128] Signature: cd c7 89 84 06 16 91 0b acpidump [0x0f6 0246 128] Signature: 1e 81 11 42 b1 35 52 57 acpidump [0x0f6 0246 128] Signature: f6 6b bb 5f a5 81 e2 ff acpidump [0x0f6 0246 128] Signature: 89 8a 95 c3 4d fc e9 56 acpidump [0x0f6 0246 128] Signature: 4f 4c 34 cc 99 5e 62 e1 acpidump [0x0f6 0246 128] Signature: 90 8a 54 be 4a 00 5c 9b acpidump [0x0f6 0246 128] Signature: a0 86 41 46 66 9d e2 f2 acpidump [0x0f6 0246 128] Signature: e7 36 9c 33 91 27 e7 8d acpidump [0x0f6 0246 128] Signature: 5c a1 d8 f9 a4 61 8a 1c acpidump [0x0f6 0246 128] Signature: 04 07 e3 2a 1e 14 f1 bd acpidump [0x0f6 0246 128] Signature: 7f 4c 09 ff 19 11 a9 d4 acpidump [0x0f6 0246 128] Signature: 74 ca 11 9e dc 54 39 bf acpidump acpidump APIC @ bf6dff70 (104 bytes) (loaded from file) acpidump ---- acpidump Multiple APIC Description Table: acpidump acpidump [0x000 0000 4] Signature: APIC acpidump [0x004 0004 4] Length: 0x00000068 acpidump [0x008 0008 1] Revision: 0x01 acpidump [0x009 0009 1] Checksum: 0x13 acpidump [0x00a 0010 6] OEM ID: PTLTD acpidump [0x010 0016 8] OEM Table ID: APIC acpidump [0x018 0024 4] OEM Revision: 0x06040000 acpidump [0x01c 0028 4] Creator ID: LTP acpidump [0x020 0032 4] Creator Revision: 0x00000000 acpidump [0x024 0036 4] Local APIC Address: 0xfee00000 acpidump [0x028 0040 4] Flags: 0x00000001 acpidump PCAT_COMPAT: 0x1 acpidump APIC Structure #1: acpidump [0x02c 0044 1] Type: 0x00 (Processor Local APIC) acpidump [0x02d 0045 1] Length: 0x08 acpidump [0x02e 0046 1] ACPI CPU ID: 0x00 acpidump [0x02f 0047 1] APIC ID: 0x00 acpidump [0x030 0048 4] Flags: 0x00000001 acpidump Enabled: 0x1 acpidump APIC Structure #2: acpidump [0x034 0052 1] Type: 0x00 (Processor Local APIC) acpidump [0x035 0053 1] Length: 0x08 acpidump [0x036 0054 1] ACPI CPU ID: 0x01 acpidump [0x037 0055 1] APIC ID: 0x01 acpidump [0x038 0056 4] Flags: 0x00000001 acpidump Enabled: 0x1 acpidump APIC Structure #3: acpidump [0x03c 0060 1] Type: 0x01 (I/O APIC) acpidump [0x03d 0061 1] Length: 0x0c acpidump [0x03e 0062 1] I/O APIC ID: 0x02 acpidump [0x040 0064 4] I/O APIC Addr: 0xfec00000 acpidump [0x044 0068 4] Global IRQ Base: 0x00000000 acpidump APIC Structure #4: acpidump [0x048 0072 1] Type: 0x04 (Local APIC NMI) acpidump [0x049 0073 1] Length: 0x06 acpidump [0x04a 0074 1] ACPI CPU ID: 0x00 acpidump [0x04b 0075 2] Flags: 0x0005 acpidump [0x04d 0077 1] Local APIC LINT: 0x01 acpidump APIC Structure #5: acpidump [0x04e 0078 1] Type: 0x04 (Local APIC NMI) acpidump [0x04f 0079 1] Length: 0x06 acpidump [0x050 0080 1] ACPI CPU ID: 0x01 acpidump [0x051 0081 2] Flags: 0x0005 acpidump [0x053 0083 1] Local APIC LINT: 0x01 acpidump APIC Structure #6: acpidump [0x054 0084 1] Type: 0x02 (Interrupt Source Override) acpidump [0x055 0085 1] Length: 0x0a acpidump [0x056 0086 1] Bus: 0x00 acpidump [0x057 0087 1] Source: 0x00 acpidump [0x058 0088 4] Gbl Sys Int: 0x00000002 acpidump [0x05c 0092 2] Flags: 0x0005 acpidump Polarity: 0x1 acpidump Trigger Mode: 0x1 acpidump APIC Structure #7: acpidump [0x05e 0094 1] Type: 0x02 (Interrupt Source Override) acpidump [0x05f 0095 1] Length: 0x0a acpidump [0x060 0096 1] Bus: 0x00 acpidump [0x061 0097 1] Source: 0x09 acpidump [0x062 0098 4] Gbl Sys Int: 0x00000009 acpidump [0x066 0102 2] Flags: 0x000d acpidump Polarity: 0x1 acpidump Trigger Mode: 0x3 acpidump acpidump SSDT @ bf6d98bd (685 bytes) (loaded from file) acpidump ---- acpidump Secondary System Description Table: acpidump acpidump [0x000 0000 4] Signature: SSDT acpidump [0x004 0004 4] Length: 0x000002ad acpidump [0x008 0008 1] Revision: 0x01 acpidump [0x009 0009 1] Checksum: 0x59 acpidump [0x00a 0010 6] OEM ID: SataRe acpidump [0x010 0016 8] OEM Table ID: SataAhci acpidump [0x018 0024 4] OEM Revision: 0x00001000 acpidump [0x01c 0028 4] Creator ID: INTL acpidump [0x020 0032 4] Creator Revision: 0x20050624 acpidump Contains 0x289 bytes of AML byte code acpidump acpidump SSDT @ bf6d981a (163 bytes) (loaded from file) acpidump ---- acpidump Secondary System Description Table: acpidump acpidump [0x000 0000 4] Signature: SSDT acpidump [0x004 0004 4] Length: 0x000000a3 acpidump [0x008 0008 1] Revision: 0x01 acpidump [0x009 0009 1] Checksum: 0xed acpidump [0x00a 0010 6] OEM ID: BrtRef acpidump [0x010 0016 8] OEM Table ID: DD01BRT acpidump [0x018 0024 4] OEM Revision: 0x00001000 acpidump [0x01c 0028 4] Creator ID: INTL acpidump [0x020 0032 4] Creator Revision: 0x20050624 acpidump Contains 0x7f bytes of AML byte code acpidump acpidump SSDT @ bf6d8e10 (607 bytes) (loaded from file) acpidump ---- acpidump Secondary System Description Table: acpidump acpidump [0x000 0000 4] Signature: SSDT acpidump [0x004 0004 4] Length: 0x0000025f acpidump [0x008 0008 1] Revision: 0x01 acpidump [0x009 0009 1] Checksum: 0xc8 acpidump [0x00a 0010 6] OEM ID: PmRef acpidump [0x010 0016 8] OEM Table ID: Cpu0Tst acpidump [0x018 0024 4] OEM Revision: 0x00003000 acpidump [0x01c 0028 4] Creator ID: INTL acpidump [0x020 0032 4] Creator Revision: 0x20050624 acpidump Contains 0x23b bytes of AML byte code acpidump acpidump SSDT @ bf6d8d6a (166 bytes) (loaded from file) acpidump ---- acpidump Secondary System Description Table: acpidump acpidump [0x000 0000 4] Signature: SSDT acpidump [0x004 0004 4] Length: 0x000000a6 acpidump [0x008 0008 1] Revision: 0x01 acpidump [0x009 0009 1] Checksum: 0x6d acpidump [0x00a 0010 6] OEM ID: PmRef acpidump [0x010 0016 8] OEM Table ID: Cpu1Tst acpidump [0x018 0024 4] OEM Revision: 0x00003000 acpidump [0x01c 0028 4] Creator ID: INTL acpidump [0x020 0032 4] Creator Revision: 0x20050624 acpidump Contains 0x82 bytes of AML byte code acpidump acpidump SSDT @ bf6d8884 (1254 bytes) (loaded from file) acpidump ---- acpidump Secondary System Description Table: acpidump acpidump [0x000 0000 4] Signature: SSDT acpidump [0x004 0004 4] Length: 0x000004e6 acpidump [0x008 0008 1] Revision: 0x01 acpidump [0x009 0009 1] Checksum: 0xdf acpidump [0x00a 0010 6] OEM ID: PmRef acpidump [0x010 0016 8] OEM Table ID: CpuPm acpidump [0x018 0024 4] OEM Revision: 0x00003000 acpidump [0x01c 0028 4] Creator ID: INTL acpidump [0x020 0032 4] Creator Revision: 0x20050624 acpidump Contains 0x4c2 bytes of AML byte code acpidump acpidump XSDT @ bf6d87f0 (148 bytes) (loaded from file) acpidump ---- acpidump Extended System Description Table: acpidump acpidump [0x000 0000 4] Signature: XSDT acpidump [0x004 0004 4] Length: 0x00000094 acpidump [0x008 0008 1] Revision: 0x01 acpidump [0x009 0009 1] Checksum: 0xc2 acpidump [0x00a 0010 6] OEM ID: LENOVO acpidump [0x010 0016 8] OEM Table ID: TP-68 acpidump [0x018 0024 4] OEM Revision: 0x06040000 acpidump [0x01c 0028 4] Creator ID: LTP acpidump [0x020 0032 4] Creator Revision: 0x00000000 acpidump [0x024 0036 8] Entry 00 FACP: 0x00000000bf6dfbd2 acpidump [0x02c 0044 8] Entry 01 APIC: 0x00000000bf6dfcc6 acpidump [0x034 0052 8] Entry 02 HPET: 0x00000000bf6dfd2e acpidump [0x03c 0060 8] Entry 03 MCFG: 0x00000000bf6dfd66 acpidump [0x044 0068 8] Entry 04 TCPA: 0x00000000bf6dfda2 acpidump [0x04c 0076 8] Entry 05 TMOR: 0x00000000bf6dfdd4 acpidump [0x054 0084 8] Entry 06 SLIC: 0x00000000bf6dfdfa acpidump [0x05c 0092 8] Entry 07 APIC: 0x00000000bf6dff70 acpidump [0x064 0100 8] Entry 08 BOOT: 0x00000000bf6dffd8 acpidump [0x06c 0108 8] Entry 09 SSDT: 0x00000000bf6d98bd acpidump [0x074 0116 8] Entry 10 SSDT: 0x00000000bf6d981a acpidump [0x07c 0124 8] Entry 11 SSDT: 0x00000000bf6d8e10 acpidump [0x084 0132 8] Entry 12 SSDT: 0x00000000bf6d8d6a acpidump [0x08c 0140 8] Entry 13 SSDT: 0x00000000bf6d8884 acpidump acpidump FACP @ bf6dfbd2 (244 bytes) (loaded from file) acpidump ---- acpidump Fixed ACPI Description Table: acpidump acpidump [0x000 0000 4] Signature: FACP acpidump [0x004 0004 4] Length: 0x000000f4 acpidump [0x008 0008 1] Revision: 0x03 acpidump [0x009 0009 1] Checksum: 0x52 acpidump [0x00a 0010 6] OEM ID: TOSCPL acpidump [0x010 0016 8] OEM Table ID: CRESTLNE acpidump [0x018 0024 4] OEM Revision: 0x06040000 acpidump [0x01c 0028 4] Creator ID: ALAN acpidump [0x020 0032 4] Creator Revision: 0x00000001 acpidump [0x024 0036 4] FACS Address: 0xbf6e2fc0 acpidump [0x028 0040 4] DSDT Address: 0xbf6d9b6a acpidump [0x02c 0044 1] Model: 0x00 acpidump [0x02d 0045 1] PM Profile: 0x02 (Mobile) acpidump [0x02e 0046 2] SCI Interrupt: 0x0009 acpidump [0x030 0048 4] SMI Command Port: 0x000000b2 acpidump [0x034 0052 1] ACPI Enable Value: 0xf0 acpidump [0x035 0053 1] ACPI Disable Value: 0xf1 acpidump [0x036 0054 1] S4BIOS Command: 0x00 acpidump [0x037 0055 1] P-State Control: 0x80 acpidump [0x038 0056 4] PM1A Event Block: 0x00001000 acpidump [0x03c 0060 4] PM1B Event Block: 0x00000000 acpidump [0x040 0064 4] PM1A Control Block: 0x00001004 acpidump [0x044 0068 4] PM1B Control Block: 0x00000000 acpidump [0x048 0072 4] PM2 Control Block: 0x00001020 acpidump [0x04c 0076 4] PM Timer Block: 0x00001008 acpidump [0x050 0080 4] GPE0 Block: 0x00001028 acpidump [0x054 0084 4] GPE1 Block: 0x00000000 acpidump [0x058 0088 1] PM1 Event Block Length: 0x04 acpidump [0x059 0089 1] PM1 Control Block Length: 0x02 acpidump [0x05a 0090 1] PM2 Control Block Length: 0x01 acpidump [0x05b 0091 1] PM Timer Block Length: 0x04 acpidump [0x05c 0092 1] GPE0 Block Length: 0x08 acpidump [0x05d 0093 1] GPE1 Block Length: 0x00 acpidump [0x05f 0095 1] _CST Support: 0x85 acpidump [0x060 0096 2] C2 Latency: 0x0001 acpidump [0x062 0098 2] C3 Latency: 0x0023 acpidump [0x064 0100 2] CPU Cache Size: 0x0000 acpidump [0x066 0102 2] CPU Cache Flush Stride: 0x0000 acpidump [0x068 0104 1] Duty Cycle Offset: 0x01 acpidump [0x069 0105 1] Duty Cycle Width: 0x03 acpidump [0x06a 0106 1] RTC Day Alarm Index: 0x0d acpidump [0x06b 0107 1] RTC Month Alarm Index: 0x00 acpidump [0x06c 0108 1] RTC Century Index: 0x32 acpidump [0x06d 0109 2] IA-PC Boot Flags (see below): 0x0000 acpidump Legacy Devices Supported (V2): 0x0 acpidump 8042 present on ports 60/64 (V2): 0x0 acpidump VGA Not Present (V4): 0x0 acpidump MSI Not Supported (V4): 0x0 acpidump PCIe ASPM Not supported (V4): 0x0 acpidump CMOS RTC Not Present (V5): 0x0 acpidump [0x070 0112 4] Flags (see below): 0x000000a5 acpidump WBINVD instruction (V1): 0x1 acpidump WBINVD flushes all caches (V1): 0x0 acpidump All CPUs support C1 (V1): 0x1 acpidump C2 works on MP system (V1): 0x0 acpidump Control Method Power Button (V1): 0x0 acpidump Control Method Sleep Button (V1): 0x1 acpidump RTC wake not in fixed reg space (V1): 0x0 acpidump RTC can wake system from S4 (V1): 0x1 acpidump 32 bit PM timer (V1): 0x0 acpidump Docking Capability (V1): 0x0 acpidump Reset Register Supported (V2): 0x0 acpidump Sealed Case (V3): 0x0 acpidump Headless, No Video (V3): 0x0 acpidump Use native instr. after SLP_TYPx (V3): 0x0 acpidump PCI_EXP_WAK bits supported (V4): 0x0 acpidump Use patform clock (V4): 0x0 acpidump RTC_STS Valid after S4 wake (V4): 0x0 acpidump Remote power on capable (V4): 0x0 acpidump Use APIC Cluster Model (V4): 0x0 acpidump Use APIC Physical Dest. Mode (V4): 0x0 acpidump ACPI hardware is not implemented (V5): 0x0 acpidump S0 power savings are equal or better than S3 (V5): 0x0 acpidump RESERVED: 0x000 acpidump acpidump [0x074 0116 12] RESET_REG: (Generic Address Structure) acpidump [0x074 0116 1] addr_space_id: 0x00 (System Memory) acpidump [0x075 0117 1] reg_bit_width: 0x00 acpidump [0x076 0118 1] reg_bit_offset: 0x00 acpidump [0x077 0119 1] access_width: 0x00 (Undefined (legacy reasons)) acpidump [0x078 0120 8] address: 0x0000000000000000 acpidump [0x080 0128 1] RESET_VALUE: 0x00 acpidump [0x084 0132 8] X_FIRMWARE_CTRL: 0x00000000bf6e2fc0 acpidump [0x08c 0140 8] X_DSDT: 0x00000000bf6d9b6a acpidump acpidump [0x094 0148 12] X_PM1a_EVT_BLK: (Generic Address Structure) acpidump [0x094 0148 1] addr_space_id: 0x01 (System I/O) acpidump [0x095 0149 1] reg_bit_width: 0x20 acpidump [0x096 0150 1] reg_bit_offset: 0x00 acpidump [0x097 0151 1] access_width: 0x00 (Undefined (legacy reasons)) acpidump [0x098 0152 8] address: 0x0000000000001000 acpidump acpidump [0x0a0 0160 12] X_PM1b_EVT_BLK: (Generic Address Structure) acpidump [0x0a0 0160 1] addr_space_id: 0x00 (System Memory) acpidump [0x0a1 0161 1] reg_bit_width: 0x00 acpidump [0x0a2 0162 1] reg_bit_offset: 0x00 acpidump [0x0a3 0163 1] access_width: 0x00 (Undefined (legacy reasons)) acpidump [0x0a4 0164 8] address: 0x0000000000000000 acpidump acpidump [0x0ac 0172 12] X_PM1a_CNT_BLK: (Generic Address Structure) acpidump [0x0ac 0172 1] addr_space_id: 0x01 (System I/O) acpidump [0x0ad 0173 1] reg_bit_width: 0x10 acpidump [0x0ae 0174 1] reg_bit_offset: 0x00 acpidump [0x0af 0175 1] access_width: 0x00 (Undefined (legacy reasons)) acpidump [0x0b0 0176 8] address: 0x0000000000001004 acpidump acpidump [0x0b8 0184 12] X_PM1b_CNT_BLK: (Generic Address Structure) acpidump [0x0b8 0184 1] addr_space_id: 0x00 (System Memory) acpidump [0x0b9 0185 1] reg_bit_width: 0x00 acpidump [0x0ba 0186 1] reg_bit_offset: 0x00 acpidump [0x0bb 0187 1] access_width: 0x00 (Undefined (legacy reasons)) acpidump [0x0bc 0188 8] address: 0x0000000000000000 acpidump acpidump [0x0c4 0196 12] X_PM2_CNT_BLK: (Generic Address Structure) acpidump [0x0c4 0196 1] addr_space_id: 0x01 (System I/O) acpidump [0x0c5 0197 1] reg_bit_width: 0x08 acpidump [0x0c6 0198 1] reg_bit_offset: 0x00 acpidump [0x0c7 0199 1] access_width: 0x00 (Undefined (legacy reasons)) acpidump [0x0c8 0200 8] address: 0x0000000000001020 acpidump acpidump [0x0d0 0208 12] X_PM_TMR_BLK: (Generic Address Structure) acpidump [0x0d0 0208 1] addr_space_id: 0x01 (System I/O) acpidump [0x0d1 0209 1] reg_bit_width: 0x20 acpidump [0x0d2 0210 1] reg_bit_offset: 0x00 acpidump [0x0d3 0211 1] access_width: 0x00 (Undefined (legacy reasons)) acpidump [0x0d4 0212 8] address: 0x0000000000001008 acpidump acpidump [0x0dc 0220 12] X_GPE0_BLK: (Generic Address Structure) acpidump [0x0dc 0220 1] addr_space_id: 0x01 (System I/O) acpidump [0x0dd 0221 1] reg_bit_width: 0x40 acpidump [0x0de 0222 1] reg_bit_offset: 0x00 acpidump [0x0df 0223 1] access_width: 0x00 (Undefined (legacy reasons)) acpidump [0x0e0 0224 8] address: 0x0000000000001028 acpidump acpidump [0x0e8 0232 12] X_GPE1_BLK: (Generic Address Structure) acpidump [0x0e8 0232 1] addr_space_id: 0x00 (System Memory) acpidump [0x0e9 0233 1] reg_bit_width: 0x00 acpidump [0x0ea 0234 1] reg_bit_offset: 0x00 acpidump [0x0eb 0235 1] access_width: 0x00 (Undefined (legacy reasons)) acpidump [0x0ec 0236 8] address: 0x0000000000000000 acpidump acpidump TCPA @ bf6dfda2 (50 bytes) (loaded from file) acpidump ---- acpidump Trusted Computing Platform Alliance Capabilities Table: acpidump acpidump [0x000 0000 4] Signature: TCPA acpidump [0x004 0004 4] Length: 0x00000032 acpidump [0x008 0008 1] Revision: 0x01 acpidump [0x009 0009 1] Checksum: 0x8f acpidump [0x00a 0010 6] OEM ID: Intel acpidump [0x010 0016 8] OEM Table ID: CRESTLNE acpidump [0x018 0024 4] OEM Revision: 0x06040000 acpidump [0x01c 0028 4] Creator ID: LOHR acpidump [0x020 0032 4] Creator Revision: 0x0000005a acpidump [0x024 0036 2] Reserved: 0x0000 acpidump [0x026 0038 4] Log Zone Length: 0x00010000 acpidump [0x02a 0042 8] Log Zone Address: 0x0000000000000000 acpidump acpidump fwts-test/acpidump-0001/acpidump.log000066400000000000000000004074541231470457100175250ustar00rootroot00000000000000RSDP @ 0xf7240 0000: 52 53 44 20 50 54 52 20 c5 4c 45 4e 4f 56 4f 02 RSD PTR .LENOVO. 0010: 94 87 6d bf 24 00 00 00 f0 87 6d bf 00 00 00 00 ..m.$.....m..... 0020: 39 00 00 00 9... RSDT @ 0xbf6d8794 0000: 52 53 44 54 58 00 00 00 01 43 4c 45 4e 4f 56 4f RSDTX....CLENOVO 0010: 54 50 2d 36 38 20 20 20 00 00 04 06 20 4c 54 50 TP-68 .... LTP 0020: 00 00 00 00 5e fb 6d bf c6 fc 6d bf 2e fd 6d bf ....^.m...m...m. 0030: 66 fd 6d bf d8 ff 6d bf d4 fd 6d bf fa fd 6d bf f.m...m...m...m. 0040: 70 ff 6d bf bd 98 6d bf 1a 98 6d bf 10 8e 6d bf p.m...m...m...m. 0050: 6a 8d 6d bf 84 88 6d bf j.m...m. DSDT @ 0xbf6d9b6a 0000: 44 53 44 54 f4 5f 00 00 02 11 54 4f 53 43 50 4c DSDT._....TOSCPL 0010: 43 52 45 53 54 4c 4e 45 00 00 04 06 49 4e 54 4c CRESTLNE....INTL 0020: 08 06 06 20 08 5a 30 30 30 01 08 5a 30 30 31 0a ... .Z000..Z001. 0030: 02 08 5a 30 30 32 0a 04 08 5a 30 30 33 0a 08 08 ..Z002...Z003... 0040: 5a 30 30 34 00 08 5a 30 30 35 0a 0f 08 5a 30 30 Z004..Z005...Z00 0050: 36 0a 0d 08 5a 30 30 37 0a 0b 08 5a 30 30 38 0a 6...Z007...Z008. 0060: 09 08 45 43 44 59 0a 07 5b 01 4d 55 54 58 00 5b ..ECDY..[.MUTX.[ 0070: 80 50 52 54 30 01 0a 80 0a 04 5b 81 0b 50 52 54 .PRT0.....[..PRT 0080: 30 13 50 38 30 48 20 14 4e 07 50 38 58 48 0a a0 0.P80H .N.P8XH.. 0090: 17 93 68 00 70 7d 7b 50 38 30 44 0c 00 ff ff ff ..h.p}{P80D..... 00a0: 00 69 00 50 38 30 44 a0 1b 93 68 01 70 7d 7b 50 .i.P80D...h.p}{P 00b0: 38 30 44 0c ff 00 ff ff 00 79 69 0a 08 00 00 50 80D......yi....P 00c0: 38 30 44 a0 1c 93 68 0a 02 70 7d 7b 50 38 30 44 80D...h..p}{P80D 00d0: 0c ff ff 00 ff 00 79 69 0a 10 00 00 50 38 30 44 ......yi....P80D 00e0: a0 1c 93 68 0a 03 70 7d 7b 50 38 30 44 0c ff ff ...h..p}{P80D... 00f0: ff 00 00 79 69 0a 18 00 00 50 38 30 44 70 50 38 ...yi....P80DpP8 0100: 30 44 50 38 30 48 14 0c 5f 50 49 43 01 70 68 47 0DP80H.._PIC.phG 0110: 50 49 43 14 46 06 5f 50 54 53 01 70 00 50 38 30 PIC.F._PTS.p.P80 0120: 44 50 38 58 48 00 68 a0 1e 93 68 0a 03 70 01 5c DP8XH.h...h..p.\ 0130: 2f 05 5f 53 42 5f 50 43 49 30 4c 50 43 42 45 43 /._SB_PCI0LPCBEC 0140: 30 5f 53 33 4c 44 a0 33 93 68 0a 04 70 01 5c 2f 0_S3LD.3.h..p.\/ 0150: 05 5f 53 42 5f 50 43 49 30 4c 50 43 42 45 43 30 ._SB_PCI0LPCBEC0 0160: 5f 53 33 4c 44 5c 2f 04 5f 53 42 5f 50 43 49 30 _S3LD\/._SB_PCI0 0170: 4c 50 43 42 50 48 53 53 0a 0e 14 4c 1c 5f 57 41 LPCBPHSS...L._WA 0180: 4b 01 50 38 58 48 01 0a ab a0 30 91 93 68 0a 03 K.P8XH....0..h.. 0190: 93 68 0a 04 a0 25 7b 43 46 47 44 0c 00 00 00 01 .h...%{CFGD..... 01a0: 00 a0 18 90 7b 43 46 47 44 0a f0 00 93 4f 53 59 ....{CFGD....OSY 01b0: 53 0b d1 07 54 52 41 50 0a 3d a0 18 93 52 50 31 S...TRAP.=...RP1 01c0: 44 00 86 5c 2f 03 5f 53 42 5f 50 43 49 30 52 50 D..\/._SB_PCI0RP 01d0: 30 31 00 a0 18 93 52 50 32 44 00 86 5c 2f 03 5f 01....RP2D..\/._ 01e0: 53 42 5f 50 43 49 30 52 50 30 32 00 a0 18 93 52 SB_PCI0RP02....R 01f0: 50 33 44 00 86 5c 2f 03 5f 53 42 5f 50 43 49 30 P3D..\/._SB_PCI0 0200: 52 50 30 33 00 a0 18 93 52 50 34 44 00 86 5c 2f RP03....RP4D..\/ 0210: 03 5f 53 42 5f 50 43 49 30 52 50 30 34 00 a0 18 ._SB_PCI0RP04... 0220: 93 52 50 35 44 00 86 5c 2f 03 5f 53 42 5f 50 43 .RP5D..\/._SB_PC 0230: 49 30 52 50 30 35 00 a0 18 93 52 50 36 44 00 86 I0RP05....RP6D.. 0240: 5c 2f 03 5f 53 42 5f 50 43 49 30 52 50 30 36 00 \/._SB_PCI0RP06. 0250: a0 12 93 68 0a 03 50 38 58 48 00 0a 30 54 52 41 ...h..P8XH..0TRA 0260: 50 0a 46 a0 43 0d 93 68 0a 04 50 38 58 48 00 0a P.F.C..h..P8XH.. 0270: 40 5c 2f 04 5f 53 42 5f 50 43 49 30 4c 50 43 42 @\/._SB_PCI0LPCB 0280: 50 48 53 53 0a 0f 70 57 41 4b 46 60 70 00 57 41 PHSS..pWAKF`p.WA 0290: 4b 46 7b 60 0a 05 60 a0 18 93 60 01 50 38 58 48 KF{`..`...`.P8XH 02a0: 00 0a 41 86 5c 2e 5f 53 42 5f 50 57 52 42 0a 02 ..A.\._SB_PWRB.. 02b0: a0 46 08 44 54 53 45 54 52 41 50 0a 47 a0 42 06 .F.DTSETRAP.G.B. 02c0: 90 5c 2f 04 5f 53 42 5f 50 43 49 30 4c 50 43 42 .\/._SB_PCI0LPCB 02d0: 45 43 4f 4b 93 45 43 44 59 00 a0 27 92 95 44 54 ECOK.ECDY..'..DT 02e0: 53 31 44 54 53 32 70 44 54 53 31 5c 2f 05 5f 53 S1DTS2pDTS1\/._S 02f0: 42 5f 50 43 49 30 4c 50 43 42 45 43 30 5f 53 4b B_PCI0LPCBEC0_SK 0300: 54 41 a1 1d 70 44 54 53 32 5c 2f 05 5f 53 42 5f TA..pDTS2\/._SB_ 0310: 50 43 49 30 4c 50 43 42 45 43 30 5f 53 4b 54 41 PCI0LPCBEC0_SKTA 0320: a1 16 5c 2f 04 5f 53 42 5f 50 43 49 30 4c 50 43 ..\/._SB_PCI0LPC 0330: 42 50 48 53 53 0a 10 5c 2e 5f 50 52 5f 52 50 50 BPHSS..\._PR_RPP 0340: 43 a4 12 04 02 00 00 14 1e 47 45 54 42 0b 77 68 C........GETB.wh 0350: 0a 08 60 77 69 0a 08 61 5b 13 6a 60 61 54 42 46 ..`wi..a[.j`aTBF 0360: 33 a4 54 42 46 33 14 42 09 50 4e 4f 54 08 a0 4a 3.TBF3.B.PNOT..J 0370: 06 4d 50 45 4e a0 31 7b 50 44 43 30 0a 08 00 86 .MPEN.1{PDC0.... 0380: 5c 2e 5f 50 52 5f 43 50 55 30 0a 80 a0 1a 7b 50 \._PR_CPU0....{P 0390: 44 43 30 0a 10 00 5b 22 0a 64 86 5c 2e 5f 50 52 DC0...[".d.\._PR 03a0: 5f 43 50 55 30 0a 81 a0 31 7b 50 44 43 31 0a 08 _CPU0...1{PDC1.. 03b0: 00 86 5c 2e 5f 50 52 5f 43 50 55 31 0a 80 a0 1a ..\._PR_CPU1.... 03c0: 7b 50 44 43 31 0a 10 00 5b 22 0a 64 86 5c 2e 5f {PDC1...[".d.\._ 03d0: 50 52 5f 43 50 55 31 0a 81 a1 1f 86 5c 2e 5f 50 PR_CPU1.....\._P 03e0: 52 5f 43 50 55 30 0a 80 5b 22 0a 64 86 5c 2e 5f R_CPU0..[".d.\._ 03f0: 50 52 5f 43 50 55 30 0a 81 14 17 54 52 41 50 09 PR_CPU0....TRAP. 0400: 70 68 53 4d 49 46 70 00 54 52 50 30 a4 53 4d 49 phSMIFp.TRP0.SMI 0410: 46 10 41 0f 5f 53 42 5f 14 4a 0e 5f 49 4e 49 00 F.A._SB_.J._INI. 0420: 70 0b 99 99 4d 41 52 4b a0 1c 44 54 53 45 54 52 p...MARK..DTSETR 0430: 41 50 0a 47 5e 2f 03 50 43 49 30 4c 50 43 42 50 AP.G^/.PCI0LPCBP 0440: 48 53 53 0a 10 70 0b d0 07 4f 53 59 53 a0 4a 09 HSS..p...OSYS.J. 0450: 5b 12 5f 4f 53 49 60 a0 18 5f 4f 53 49 0d 4c 69 [._OSI`.._OSI.Li 0460: 6e 75 78 00 70 01 4c 49 4e 58 70 00 45 43 44 59 nux.p.LINXp.ECDY 0470: a0 1b 5f 4f 53 49 0d 57 69 6e 64 6f 77 73 20 32 .._OSI.Windows 2 0480: 30 30 31 00 70 0b d1 07 4f 53 59 53 a0 1f 5f 4f 001.p...OSYS.._O 0490: 53 49 0d 57 69 6e 64 6f 77 73 20 32 30 30 31 20 SI.Windows 2001 04a0: 53 50 31 00 70 0b d1 07 4f 53 59 53 a0 1f 5f 4f SP1.p...OSYS.._O 04b0: 53 49 0d 57 69 6e 64 6f 77 73 20 32 30 30 31 20 SI.Windows 2001 04c0: 53 50 32 00 70 0b d2 07 4f 53 59 53 a0 1b 5f 4f SP2.p...OSYS.._O 04d0: 53 49 0d 57 69 6e 64 6f 77 73 20 32 30 30 36 00 SI.Windows 2006. 04e0: 70 0b d6 07 4f 53 59 53 a0 14 90 4d 50 45 4e 93 p...OSYS...MPEN. 04f0: 4f 53 59 53 0b d1 07 54 52 41 50 0a 3d 54 52 41 OSYS...TRAP.=TRA 0500: 50 0a 2b 5b 80 47 4e 56 53 00 0c bc 2d 6e bf 0b P.+[.GNVS...-n.. 0510: 00 01 5b 81 45 24 47 4e 56 53 10 4f 53 59 53 10 ..[.E$GNVS.OSYS. 0520: 53 4d 49 46 08 50 52 4d 30 08 50 52 4d 31 08 53 SMIF.PRM0.PRM1.S 0530: 43 49 46 08 50 52 4d 32 08 50 52 4d 33 08 4c 43 CIF.PRM2.PRM3.LC 0540: 4b 46 08 50 52 4d 34 08 50 52 4d 35 08 50 38 30 KF.PRM4.PRM5.P80 0550: 44 20 4c 49 44 53 08 50 57 52 53 08 44 42 47 53 D LIDS.PWRS.DBGS 0560: 08 4c 49 4e 58 08 00 08 41 43 54 31 08 41 43 54 .LINX...ACT1.ACT 0570: 54 08 50 53 56 54 08 54 43 31 56 08 54 43 32 56 T.PSVT.TC1V.TC2V 0580: 08 54 53 50 56 08 43 52 54 54 08 44 54 53 45 08 .TSPV.CRTT.DTSE. 0590: 44 54 53 31 08 44 54 53 32 08 00 40 05 41 50 49 DTS1.DTS2..@.API 05a0: 43 08 4d 50 45 4e 08 50 43 50 30 08 50 43 50 31 C.MPEN.PCP0.PCP1 05b0: 08 50 50 43 4d 08 00 28 43 4d 41 50 08 43 4d 42 .PPCM..(CMAP.CMB 05c0: 50 08 4c 50 54 50 08 46 44 43 50 08 00 30 49 47 P.LPTP.FDCP..0IG 05d0: 44 53 08 54 4c 53 54 08 43 41 44 4c 08 50 41 44 DS.TLST.CADL.PAD 05e0: 4c 08 43 53 54 45 10 4e 53 54 45 10 53 53 54 45 L.CSTE.NSTE.SSTE 05f0: 10 4e 44 49 44 08 44 49 44 31 20 44 49 44 32 20 .NDID.DID1 DID2 0600: 44 49 44 33 20 44 49 44 34 20 44 49 44 35 20 00 DID3 DID4 DID5 . 0610: 40 06 42 4c 43 53 08 42 52 54 4c 08 41 4c 53 45 @.BLCS.BRTL.ALSE 0620: 08 41 4c 41 46 08 4c 4c 4f 57 08 4c 48 49 48 08 .ALAF.LLOW.LHIH. 0630: 00 08 45 4d 41 45 08 45 4d 41 50 10 45 4d 41 4c ..EMAE.EMAP.EMAL 0640: 10 00 08 4d 45 46 45 08 00 18 54 50 4d 50 08 54 ...MEFE...TPMP.T 0650: 50 4d 45 08 00 40 04 47 54 46 30 38 47 54 46 32 PME..@.GTF08GTF2 0660: 38 49 44 45 4d 08 47 54 46 31 38 00 40 09 41 53 8IDEM.GTF18.@.AS 0670: 4c 42 20 49 42 54 54 08 49 50 41 54 08 49 54 56 LB IBTT.IPAT.ITV 0680: 46 08 49 54 56 4d 08 49 50 53 43 08 49 42 4c 43 F.ITVM.IPSC.IBLC 0690: 08 49 42 49 41 08 49 53 53 43 08 49 34 30 39 08 .IBIA.ISSC.I409. 06a0: 49 35 30 39 08 49 36 30 39 08 49 37 30 39 08 49 I509.I609.I709.I 06b0: 44 4d 4d 08 49 44 4d 53 08 49 46 31 45 08 48 56 DMM.IDMS.IF1E.HV 06c0: 43 4f 08 4e 58 44 31 20 4e 58 44 32 20 4d 41 52 CO.NXD1 NXD2 MAR 06d0: 4b 10 42 52 41 44 08 42 54 45 4e 08 56 56 45 4e K.BRAD.BTEN.VVEN 06e0: 08 42 47 54 4c 08 54 4d 45 45 01 00 07 53 43 55 .BGTL.TMEE...SCU 06f0: 30 01 53 43 55 31 01 53 43 55 32 01 53 43 55 33 0.SCU1.SCU2.SCU3 0700: 01 00 04 58 4b 53 50 01 58 4b 49 4e 01 58 4b 49 ...XKSP.XKIN.XKI 0710: 44 01 58 4b 4f 4b 01 00 04 42 47 55 31 08 42 53 D.XKOK...BGU1.BS 0720: 54 31 08 42 46 43 31 10 57 4b 4c 4e 08 57 41 4b T1.BFC1.WKLN.WAK 0730: 46 08 44 53 4d 44 08 42 41 59 53 08 48 41 50 45 F.DSMD.BAYS.HAPE 0740: 01 00 07 44 54 53 4d 01 00 07 4f 44 54 31 08 4f ...DTSM...ODT1.O 0750: 44 54 32 08 44 54 53 57 08 08 44 53 45 4e 01 08 DT2.DTSW..DSEN.. 0760: 45 43 4f 4e 00 08 47 50 49 43 00 08 43 54 59 50 ECON..GPIC..CTYP 0770: 00 08 4c 30 31 43 00 08 56 46 4e 30 00 08 56 46 ..L01C..VFN0..VF 0780: 4e 31 00 10 4a 7c 5f 47 50 45 14 46 35 5f 4c 30 N1..J|_GPE.F5_L0 0790: 31 00 72 4c 30 31 43 01 4c 30 31 43 50 38 58 48 1.rL01C.L01CP8XH 07a0: 00 01 50 38 58 48 01 4c 30 31 43 a0 48 08 90 93 ..P8XH.L01C.H... 07b0: 52 50 31 44 00 5c 2f 04 5f 53 42 5f 50 43 49 30 RP1D.\/._SB_PCI0 07c0: 52 50 30 31 48 50 53 58 5b 22 0a 64 a0 40 05 5c RP01HPSX[".d.@.\ 07d0: 2f 04 5f 53 42 5f 50 43 49 30 52 50 30 31 50 44 /._SB_PCI0RP01PD 07e0: 43 58 70 01 5c 2f 04 5f 53 42 5f 50 43 49 30 52 CXp.\/._SB_PCI0R 07f0: 50 30 31 50 44 43 58 70 01 5c 2f 04 5f 53 42 5f P01PDCXp.\/._SB_ 0800: 50 43 49 30 52 50 30 31 48 50 53 58 86 5c 2f 03 PCI0RP01HPSX.\/. 0810: 5f 53 42 5f 50 43 49 30 52 50 30 31 00 a1 16 70 _SB_PCI0RP01...p 0820: 01 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 30 31 .\/._SB_PCI0RP01 0830: 48 50 53 58 a0 48 08 90 93 52 50 32 44 00 5c 2f HPSX.H...RP2D.\/ 0840: 04 5f 53 42 5f 50 43 49 30 52 50 30 32 48 50 53 ._SB_PCI0RP02HPS 0850: 58 5b 22 0a 64 a0 40 05 5c 2f 04 5f 53 42 5f 50 X[".d.@.\/._SB_P 0860: 43 49 30 52 50 30 32 50 44 43 58 70 01 5c 2f 04 CI0RP02PDCXp.\/. 0870: 5f 53 42 5f 50 43 49 30 52 50 30 32 50 44 43 58 _SB_PCI0RP02PDCX 0880: 70 01 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 30 p.\/._SB_PCI0RP0 0890: 32 48 50 53 58 86 5c 2f 03 5f 53 42 5f 50 43 49 2HPSX.\/._SB_PCI 08a0: 30 52 50 30 32 00 a1 16 70 01 5c 2f 04 5f 53 42 0RP02...p.\/._SB 08b0: 5f 50 43 49 30 52 50 30 32 48 50 53 58 a0 48 08 _PCI0RP02HPSX.H. 08c0: 90 93 52 50 33 44 00 5c 2f 04 5f 53 42 5f 50 43 ..RP3D.\/._SB_PC 08d0: 49 30 52 50 30 33 48 50 53 58 5b 22 0a 64 a0 40 I0RP03HPSX[".d.@ 08e0: 05 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 30 33 .\/._SB_PCI0RP03 08f0: 50 44 43 58 70 01 5c 2f 04 5f 53 42 5f 50 43 49 PDCXp.\/._SB_PCI 0900: 30 52 50 30 33 50 44 43 58 70 01 5c 2f 04 5f 53 0RP03PDCXp.\/._S 0910: 42 5f 50 43 49 30 52 50 30 33 48 50 53 58 86 5c B_PCI0RP03HPSX.\ 0920: 2f 03 5f 53 42 5f 50 43 49 30 52 50 30 33 00 a1 /._SB_PCI0RP03.. 0930: 16 70 01 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 .p.\/._SB_PCI0RP 0940: 30 33 48 50 53 58 a0 48 08 90 93 52 50 34 44 00 03HPSX.H...RP4D. 0950: 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 30 34 48 \/._SB_PCI0RP04H 0960: 50 53 58 5b 22 0a 64 a0 40 05 5c 2f 04 5f 53 42 PSX[".d.@.\/._SB 0970: 5f 50 43 49 30 52 50 30 34 50 44 43 58 70 01 5c _PCI0RP04PDCXp.\ 0980: 2f 04 5f 53 42 5f 50 43 49 30 52 50 30 34 50 44 /._SB_PCI0RP04PD 0990: 43 58 70 01 5c 2f 04 5f 53 42 5f 50 43 49 30 52 CXp.\/._SB_PCI0R 09a0: 50 30 34 48 50 53 58 86 5c 2f 03 5f 53 42 5f 50 P04HPSX.\/._SB_P 09b0: 43 49 30 52 50 30 34 00 a1 16 70 01 5c 2f 04 5f CI0RP04...p.\/._ 09c0: 53 42 5f 50 43 49 30 52 50 30 34 48 50 53 58 a0 SB_PCI0RP04HPSX. 09d0: 48 08 90 93 52 50 35 44 00 5c 2f 04 5f 53 42 5f H...RP5D.\/._SB_ 09e0: 50 43 49 30 52 50 30 35 48 50 53 58 5b 22 0a 64 PCI0RP05HPSX[".d 09f0: a0 40 05 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 .@.\/._SB_PCI0RP 0a00: 30 35 50 44 43 58 70 01 5c 2f 04 5f 53 42 5f 50 05PDCXp.\/._SB_P 0a10: 43 49 30 52 50 30 35 50 44 43 58 70 01 5c 2f 04 CI0RP05PDCXp.\/. 0a20: 5f 53 42 5f 50 43 49 30 52 50 30 35 48 50 53 58 _SB_PCI0RP05HPSX 0a30: 86 5c 2f 03 5f 53 42 5f 50 43 49 30 52 50 30 35 .\/._SB_PCI0RP05 0a40: 00 a1 16 70 01 5c 2f 04 5f 53 42 5f 50 43 49 30 ...p.\/._SB_PCI0 0a50: 52 50 30 35 48 50 53 58 a0 48 08 90 93 52 50 36 RP05HPSX.H...RP6 0a60: 44 00 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 30 D.\/._SB_PCI0RP0 0a70: 36 48 50 53 58 5b 22 0a 64 a0 40 05 5c 2f 04 5f 6HPSX[".d.@.\/._ 0a80: 53 42 5f 50 43 49 30 52 50 30 36 50 44 43 58 70 SB_PCI0RP06PDCXp 0a90: 01 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 30 36 .\/._SB_PCI0RP06 0aa0: 50 44 43 58 70 01 5c 2f 04 5f 53 42 5f 50 43 49 PDCXp.\/._SB_PCI 0ab0: 30 52 50 30 36 48 50 53 58 86 5c 2f 03 5f 53 42 0RP06HPSX.\/._SB 0ac0: 5f 50 43 49 30 52 50 30 36 00 a1 16 70 01 5c 2f _PCI0RP06...p.\/ 0ad0: 04 5f 53 42 5f 50 43 49 30 52 50 30 36 48 50 53 ._SB_PCI0RP06HPS 0ae0: 58 14 42 0d 5f 4c 30 32 00 70 00 47 50 45 43 a0 X.B._L02.p.GPEC. 0af0: 4d 0a 5c 2f 04 5f 53 42 5f 50 43 49 30 4c 50 43 M.\/._SB_PCI0LPC 0b00: 42 45 43 4f 4b a0 4e 04 93 44 54 53 57 01 a0 27 BECOK.N..DTSW..' 0b10: 92 95 44 54 53 31 44 54 53 32 70 44 54 53 31 5c ..DTS1DTS2pDTS1\ 0b20: 2f 05 5f 53 42 5f 50 43 49 30 4c 50 43 42 45 43 /._SB_PCI0LPCBEC 0b30: 30 5f 53 4b 54 41 a1 1d 70 44 54 53 32 5c 2f 05 0_SKTA..pDTS2\/. 0b40: 5f 53 42 5f 50 43 49 30 4c 50 43 42 45 43 30 5f _SB_PCI0LPCBEC0_ 0b50: 53 4b 54 41 a1 48 04 a0 27 92 95 4f 44 54 31 4f SKTA.H..'..ODT1O 0b60: 44 54 32 70 4f 44 54 31 5c 2f 05 5f 53 42 5f 50 DT2pODT1\/._SB_P 0b70: 43 49 30 4c 50 43 42 45 43 30 5f 53 4b 54 41 a1 CI0LPCBEC0_SKTA. 0b80: 1d 70 4f 44 54 32 5c 2f 05 5f 53 42 5f 50 43 49 .pODT2\/._SB_PCI 0b90: 30 4c 50 43 42 45 43 30 5f 53 4b 54 41 a1 16 5c 0LPCBEC0_SKTA..\ 0ba0: 2f 04 5f 53 42 5f 50 43 49 30 4c 50 43 42 50 48 /._SB_PCI0LPCBPH 0bb0: 53 53 0a 10 14 18 5f 4c 30 33 00 86 5c 2f 03 5f SS...._L03..\/._ 0bc0: 53 42 5f 50 43 49 30 55 53 42 31 0a 02 14 18 5f SB_PCI0USB1...._ 0bd0: 4c 30 34 00 86 5c 2f 03 5f 53 42 5f 50 43 49 30 L04..\/._SB_PCI0 0be0: 55 53 42 32 0a 02 14 18 5f 4c 30 35 00 86 5c 2f USB2...._L05..\/ 0bf0: 03 5f 53 42 5f 50 43 49 30 55 53 42 35 0a 02 14 ._SB_PCI0USB5... 0c00: 36 5f 4c 30 36 00 a0 27 5c 2f 04 5f 53 42 5f 50 6_L06..'\/._SB_P 0c10: 43 49 30 47 46 58 30 47 53 53 45 5c 2f 04 5f 53 CI0GFX0GSSE\/._S 0c20: 42 5f 50 43 49 30 47 46 58 30 47 53 43 49 a1 07 B_PCI0GFX0GSCI.. 0c30: 70 01 53 43 49 53 14 43 1f 5f 4c 30 39 00 a0 41 p.SCIS.C._L09..A 0c40: 05 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 30 31 .\/._SB_PCI0RP01 0c50: 50 53 50 58 70 01 5c 2f 04 5f 53 42 5f 50 43 49 PSPXp.\/._SB_PCI 0c60: 30 52 50 30 31 50 53 50 58 70 01 5c 2f 04 5f 53 0RP01PSPXp.\/._S 0c70: 42 5f 50 43 49 30 52 50 30 31 50 4d 53 58 86 5c B_PCI0RP01PMSX.\ 0c80: 2f 03 5f 53 42 5f 50 43 49 30 52 50 30 31 0a 02 /._SB_PCI0RP01.. 0c90: a0 41 05 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 .A.\/._SB_PCI0RP 0ca0: 30 32 50 53 50 58 70 01 5c 2f 04 5f 53 42 5f 50 02PSPXp.\/._SB_P 0cb0: 43 49 30 52 50 30 32 50 53 50 58 70 01 5c 2f 04 CI0RP02PSPXp.\/. 0cc0: 5f 53 42 5f 50 43 49 30 52 50 30 32 50 4d 53 58 _SB_PCI0RP02PMSX 0cd0: 86 5c 2f 03 5f 53 42 5f 50 43 49 30 52 50 30 32 .\/._SB_PCI0RP02 0ce0: 0a 02 a0 41 05 5c 2f 04 5f 53 42 5f 50 43 49 30 ...A.\/._SB_PCI0 0cf0: 52 50 30 33 50 53 50 58 70 01 5c 2f 04 5f 53 42 RP03PSPXp.\/._SB 0d00: 5f 50 43 49 30 52 50 30 33 50 53 50 58 70 01 5c _PCI0RP03PSPXp.\ 0d10: 2f 04 5f 53 42 5f 50 43 49 30 52 50 30 33 50 4d /._SB_PCI0RP03PM 0d20: 53 58 86 5c 2f 03 5f 53 42 5f 50 43 49 30 52 50 SX.\/._SB_PCI0RP 0d30: 30 33 0a 02 a0 41 05 5c 2f 04 5f 53 42 5f 50 43 03...A.\/._SB_PC 0d40: 49 30 52 50 30 34 50 53 50 58 70 01 5c 2f 04 5f I0RP04PSPXp.\/._ 0d50: 53 42 5f 50 43 49 30 52 50 30 34 50 53 50 58 70 SB_PCI0RP04PSPXp 0d60: 01 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 30 34 .\/._SB_PCI0RP04 0d70: 50 4d 53 58 86 5c 2f 03 5f 53 42 5f 50 43 49 30 PMSX.\/._SB_PCI0 0d80: 52 50 30 34 0a 02 a0 41 05 5c 2f 04 5f 53 42 5f RP04...A.\/._SB_ 0d90: 50 43 49 30 52 50 30 35 50 53 50 58 70 01 5c 2f PCI0RP05PSPXp.\/ 0da0: 04 5f 53 42 5f 50 43 49 30 52 50 30 35 50 53 50 ._SB_PCI0RP05PSP 0db0: 58 70 01 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 Xp.\/._SB_PCI0RP 0dc0: 30 35 50 4d 53 58 86 5c 2f 03 5f 53 42 5f 50 43 05PMSX.\/._SB_PC 0dd0: 49 30 52 50 30 35 0a 02 a0 41 05 5c 2f 04 5f 53 I0RP05...A.\/._S 0de0: 42 5f 50 43 49 30 52 50 30 36 50 53 50 58 70 01 B_PCI0RP06PSPXp. 0df0: 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 30 36 50 \/._SB_PCI0RP06P 0e00: 53 50 58 70 01 5c 2f 04 5f 53 42 5f 50 43 49 30 SPXp.\/._SB_PCI0 0e10: 52 50 30 36 50 4d 53 58 86 5c 2f 03 5f 53 42 5f RP06PMSX.\/._SB_ 0e20: 50 43 49 30 52 50 30 36 0a 02 14 18 5f 4c 30 42 PCI0RP06...._L0B 0e30: 00 86 5c 2f 03 5f 53 42 5f 50 43 49 30 50 43 49 ..\/._SB_PCI0PCI 0e40: 42 0a 02 14 18 5f 4c 30 43 00 86 5c 2f 03 5f 53 B...._L0C..\/._S 0e50: 42 5f 50 43 49 30 55 53 42 33 0a 02 14 4b 0b 5f B_PCI0USB3...K._ 0e60: 4c 30 44 00 a0 3b 5c 2f 04 5f 53 42 5f 50 43 49 L0D..;\/._SB_PCI 0e70: 30 45 48 43 31 50 4d 45 53 70 01 5c 2f 04 5f 53 0EHC1PMESp.\/._S 0e80: 42 5f 50 43 49 30 45 48 43 31 50 4d 45 53 86 5c B_PCI0EHC1PMES.\ 0e90: 2f 03 5f 53 42 5f 50 43 49 30 45 48 43 31 0a 02 /._SB_PCI0EHC1.. 0ea0: a0 3b 5c 2f 04 5f 53 42 5f 50 43 49 30 45 48 43 .;\/._SB_PCI0EHC 0eb0: 32 50 4d 45 53 70 01 5c 2f 04 5f 53 42 5f 50 43 2PMESp.\/._SB_PC 0ec0: 49 30 45 48 43 32 50 4d 45 53 86 5c 2f 03 5f 53 I0EHC2PMES.\/._S 0ed0: 42 5f 50 43 49 30 45 48 43 32 0a 02 a0 3b 5c 2f B_PCI0EHC2...;\/ 0ee0: 04 5f 53 42 5f 50 43 49 30 48 44 45 46 50 4d 45 ._SB_PCI0HDEFPME 0ef0: 53 70 01 5c 2f 04 5f 53 42 5f 50 43 49 30 48 44 Sp.\/._SB_PCI0HD 0f00: 45 46 50 4d 45 53 86 5c 2f 03 5f 53 42 5f 50 43 EFPMES.\/._SB_PC 0f10: 49 30 48 44 45 46 0a 02 14 18 5f 4c 30 45 00 86 I0HDEF...._L0E.. 0f20: 5c 2f 03 5f 53 42 5f 50 43 49 30 55 53 42 34 0a \/._SB_PCI0USB4. 0f30: 02 14 1c 5f 4c 31 42 00 80 4c 50 4f 4c 4c 50 4f ..._L1B..LPOLLPO 0f40: 4c 86 5c 2e 5f 53 42 5f 4c 49 44 30 0a 80 10 46 L.\._SB_LID0...F 0f50: 0b 5f 50 52 5f 5b 83 0b 43 50 55 30 00 10 10 00 ._PR_[..CPU0.... 0f60: 00 06 5b 83 0b 43 50 55 31 01 10 10 00 00 06 14 ..[..CPU1....... 0f70: 45 09 52 50 50 43 00 a0 4d 08 93 4f 53 59 53 0b E.RPPC..M..OSYS. 0f80: d2 07 a0 42 08 7b 43 46 47 44 01 00 a0 42 04 94 ...B.{CFGD...B.. 0f90: 5e 2e 43 50 55 30 5f 50 50 43 00 74 5e 2e 43 50 ^.CPU0_PPC.t^.CP 0fa0: 55 30 5f 50 50 43 01 5e 2e 43 50 55 30 5f 50 50 U0_PPC.^.CPU0_PP 0fb0: 43 50 4e 4f 54 72 5e 2e 43 50 55 30 5f 50 50 43 CPNOTr^.CPU0_PPC 0fc0: 01 5e 2e 43 50 55 30 5f 50 50 43 50 4e 4f 54 a1 .^.CPU0_PPCPNOT. 0fd0: 35 72 5e 2e 43 50 55 30 5f 50 50 43 01 5e 2e 43 5r^.CPU0_PPC.^.C 0fe0: 50 55 30 5f 50 50 43 50 4e 4f 54 74 5e 2e 43 50 PU0_PPCPNOTt^.CP 0ff0: 55 30 5f 50 50 43 01 5e 2e 43 50 55 30 5f 50 50 U0_PPC.^.CPU0_PP 1000: 43 50 4e 4f 54 08 46 57 53 4f 0d 46 57 53 4f 00 CPNOT.FWSO.FWSO. 1010: 08 5f 50 53 43 00 14 12 5f 50 53 30 00 70 5f 50 ._PSC..._PS0.p_P 1020: 53 43 60 70 00 5f 50 53 43 14 0d 5f 50 53 33 00 SC`p._PSC.._PS3. 1030: 70 0a 03 5f 50 53 43 10 8c fb 04 5f 53 42 5f 5b p.._PSC...._SB_[ 1040: 82 4f 3e 41 4d 57 30 08 5f 48 49 44 0d 70 6e 70 .O>AMW0._HID.pnp 1050: 30 63 31 34 00 08 5f 55 49 44 00 08 5f 57 44 47 0c14.._UID.._WDG 1060: 11 3f 0a 3c a7 1d 85 2e 53 d0 5f 49 9d fa 1a 4a .?.<....S._I...J 1070: d6 2e 6a 86 41 43 01 00 3b 6d 43 71 dd fb 72 4c ..j.AC..;mCq..rL 1080: bc b8 43 5b fe 0d 64 f9 42 43 01 00 21 12 90 05 ..C[..d.BC..!... 1090: 66 d5 d1 11 b2 f0 00 a0 c9 06 29 10 42 41 01 00 f.........).BA.. 10a0: 08 53 54 41 43 11 07 0a 04 01 14 03 00 14 1f 57 .STAC..........W 10b0: 51 41 43 01 70 0d 4d 58 4d 54 43 43 6f 6e 66 69 QAC.p.MXMTCConfi 10c0: 67 44 61 74 61 00 5b 31 a4 53 54 41 43 08 53 54 gData.[1.STAC.ST 10d0: 42 43 11 07 0a 04 01 00 00 00 14 34 57 51 42 43 BC.........4WQBC 10e0: 01 70 0d 47 65 74 20 4d 58 4d 54 43 43 6f 6e 74 .p.Get MXMTCCont 10f0: 72 6f 6c 44 61 74 61 3a 20 53 54 42 43 20 3d 20 rolData: STBC = 1100: 00 5b 31 70 53 54 42 43 5b 31 a4 53 54 42 43 14 .[1pSTBC[1.STBC. 1110: 47 06 57 53 42 43 02 70 69 53 54 42 43 70 0d 53 G.WSBC.piSTBCp.S 1120: 65 74 20 4d 58 4d 54 43 43 6f 6e 74 72 6f 6c 44 et MXMTCControlD 1130: 61 74 61 3a 20 53 54 42 43 20 3d 20 00 5b 31 70 ata: STBC = .[1p 1140: 53 54 42 43 5b 31 a0 30 93 5e 5e 2f 03 50 43 49 STBC[1.0.^^/.PCI 1150: 30 4c 50 43 42 45 43 4f 4b 01 70 83 88 53 54 42 0LPCBECOK.p..STB 1160: 43 01 00 5e 5e 2f 04 50 43 49 30 4c 50 43 42 45 C..^^/.PCI0LPCBE 1170: 43 30 5f 53 4b 54 43 08 57 51 42 41 11 43 2b 0b C0_SKTC.WQBA.C+. 1180: ae 02 46 4f 4d 42 01 00 00 00 9e 02 00 00 c0 0b ..FOMB.......... 1190: 00 00 44 53 00 01 1a 7d da 54 28 d9 85 00 01 06 ..DS...}.T(..... 11a0: 18 42 10 07 10 0a 4b 61 02 c9 21 52 3c 18 94 05 .B....Ka..!R<... 11b0: 10 43 88 57 04 44 04 84 bc 0a b0 29 c0 24 88 fa .C.W.D.....).$.. 11c0: f7 87 28 09 0e 25 04 42 12 05 98 17 a0 5b 80 61 ..(..%.B.....[.a 11d0: 01 b6 05 98 16 e0 18 92 4a 03 a7 04 96 02 21 a1 ........J.....!. 11e0: 02 94 0b f0 2d 40 3b a2 24 0b b0 0c 23 02 8f 82 ....-@;.$...#... 11f0: a1 71 68 ec 30 2c 13 4c 83 38 8c b2 91 45 60 dc .qh.0,.L.8...E`. 1200: 4e 05 c8 15 20 4c 80 78 54 61 34 07 45 e0 42 63 N... L.xTa4.E.Bc 1210: 64 40 c8 a3 00 ab a3 d0 a4 12 d8 bd 00 65 02 2c d@...........e., 1220: 0a 10 27 c0 9a 00 63 48 32 28 40 9b 00 5b 20 42 ..'...cH2(@..[ B 1230: 0f d4 19 8a 46 70 02 51 6a 46 11 48 ac 1a 01 85 ....Fp.QjF.H.... 1240: 12 34 46 b0 10 81 c2 86 37 46 98 03 88 d1 fe 20 .4F.....7F..... 1250: 48 20 05 e3 66 91 46 83 1a 6b 82 63 f7 68 4e b8 H ..f.F..k.c.hN. 1260: 73 01 d2 e7 26 90 a3 3b b8 3a 07 4d 86 c7 b0 1e s...&..;.:.M.... 1270: 06 d8 29 00 ef 1a 50 d3 3f 78 26 08 0e 35 44 8f ..)...P.?x&..5D. 1280: 3a dc 09 1c fb 91 30 88 b3 3b 6e ac c3 c9 68 d0 :.....0..;n...h. 1290: a5 0a 30 7b 00 d0 d0 12 9c f6 99 84 7e 0f 38 9f ..0{........~.8. 12a0: 9e 21 89 fc 41 a0 46 e6 ff 3f b4 c7 78 5a 31 43 .!..A.F..?..xZ1C 12b0: 3e 0b 1c 16 13 0b a1 4d 6a 3c 40 40 e1 d1 40 08 >......Mj<@@..@. 12c0: 6f 06 9e af 09 46 86 90 93 f1 a0 06 e0 41 d7 3a o....F.......A.: 12d0: 32 8d 27 a6 21 cf e8 00 22 bf 32 78 0c 41 02 f9 2.'.!...".2x.A.. 12e0: c4 60 b8 c7 81 13 78 02 f0 59 40 10 92 00 21 51 .`....x..Y@...!Q 12f0: e3 a7 47 08 7e 7a 78 93 30 28 1f d2 99 f9 90 e1 ..G.~zx.0(...... 1300: 11 c2 07 c4 7b 9f 3b 19 c1 29 7b a4 e0 b0 7e 0e ....{.;..){...~. 1310: 20 c0 af 0f 8f 0d 09 7c ae 08 8c 1d aa fd 0a 40 ......|.......@ 1320: 08 1e ed 51 e0 54 23 1c 2d 78 08 8a 1c 03 4a cc ...Q.T#.-x....J. 1330: 18 50 03 38 85 d0 e7 73 04 47 14 25 f6 21 19 da .P.8...s.G.%.!.. 1340: 08 e1 1f 39 4e c1 f7 8b 23 3d ad 23 78 91 f0 08 ...9N...#=.#x... 1350: 30 e1 ce 28 a8 38 30 f4 ff 7f 4c 01 dc 7a 3b a6 0..(.80...L..z;. 1360: 80 3e c0 31 05 50 fc ff 3f a6 00 87 a8 c7 14 f4 .>.1.P..?....... 1370: 40 0c 7c 2e a1 0d ff 96 c1 8e 03 87 74 6a 8f 28 @.|.........tj.( 1380: 80 29 79 47 14 50 8c 14 d6 f1 04 18 05 3c 9b a0 .)yG.P.......<.. 1390: 22 1d 4f 80 ce ff ff 78 02 58 b8 9a bc 92 84 7d ".O....x.X.....} 13a0: 1e 78 1d 89 14 e3 41 e2 b5 e4 c1 24 46 98 08 8f .x....A....$F... 13b0: 27 1e 47 c0 b7 82 28 91 8e 3e c4 83 49 28 63 3e '.G...(..>..I(c> 13c0: a3 84 89 f9 04 70 22 ef 27 46 0a 73 2a 8f 27 2c .....p".'F.s*.', 13d0: c4 f1 04 a0 85 e2 e3 09 3a 2c 84 fe ff c7 13 dc ........:,...... 13e0: e1 c1 a7 0c fc 85 0c c6 f9 04 30 24 f0 7c 02 ca ..........0$.|.. 13f0: db 18 e6 80 02 8c 14 da f4 a9 d1 a8 55 83 32 35 ............U.25 1400: ca 34 a8 d5 a7 52 63 c6 4c 9c 52 bc 6c 8d df f2 .4...Rc.L.R.l... 1410: 9e 09 02 b1 20 0a 81 38 cc f3 42 20 96 a2 01 84 .... ..8..B .... 1420: 85 06 a1 42 a9 05 e2 98 20 34 92 0a 10 f6 ff 07 ...B.... 4...... 1430: 5b 82 1b 4c 49 44 30 08 5f 48 49 44 0c 41 d0 0c [..LID0._HID.A.. 1440: 0d 14 0b 5f 4c 49 44 00 a4 4c 50 4f 4c 5b 82 0f ..._LID..LPOL[.. 1450: 50 57 52 42 08 5f 48 49 44 0c 41 d0 0c 0c 5b 82 PWRB._HID.A...[. 1460: 84 b9 04 50 43 49 30 14 09 5f 53 33 44 00 a4 0a ...PCI0.._S3D... 1470: 02 14 09 5f 53 34 44 00 a4 0a 02 08 5f 48 49 44 ..._S4D....._HID 1480: 0c 41 d0 0a 08 08 5f 43 49 44 0c 41 d0 0a 03 5b .A...._CID.A...[ 1490: 82 43 0e 4d 43 48 43 08 5f 41 44 52 00 5b 80 48 .C.MCHC._ADR.[.H 14a0: 42 55 53 02 0a 40 0a c0 5b 81 4a 0c 48 42 55 53 BUS..@..[.J.HBUS 14b0: 03 45 50 45 4e 01 00 0b 45 50 42 52 14 00 20 4d .EPEN...EPBR.. M 14c0: 48 45 4e 01 00 0d 4d 48 42 52 12 00 40 0a 50 58 HEN...MHBR..@.PX 14d0: 45 4e 01 50 58 53 5a 02 00 17 50 58 42 52 06 00 EN.PXSZ...PXBR.. 14e0: 20 44 49 45 4e 01 00 0b 44 49 42 52 14 00 20 49 DIEN...DIBR.. I 14f0: 50 45 4e 01 00 0b 49 50 42 52 14 00 40 0e 00 04 PEN...IPBR..@... 1500: 50 4d 30 48 02 00 02 50 4d 31 4c 02 00 02 50 4d PM0H...PM1L...PM 1510: 31 48 02 00 02 50 4d 32 4c 02 00 02 50 4d 32 48 1H...PM2L...PM2H 1520: 02 00 02 50 4d 33 4c 02 00 02 50 4d 33 48 02 00 ...PM3L...PM3H.. 1530: 02 50 4d 34 4c 02 00 02 50 4d 34 48 02 00 02 50 .PM4L...PM4H...P 1540: 4d 35 4c 02 00 02 50 4d 35 48 02 00 02 50 4d 36 M5L...PM5H...PM6 1550: 4c 02 00 02 50 4d 36 48 02 00 02 00 07 48 45 4e L...PM6H.....HEN 1560: 41 01 00 40 05 54 55 55 44 10 00 40 06 00 04 54 A..@.TUUD..@...T 1570: 4c 55 44 0c 08 42 55 46 30 11 4d 20 0b 08 02 88 LUD..BUF0.M .... 1580: 0d 00 02 0c 00 00 00 00 00 ff 00 00 00 00 01 87 ................ 1590: 17 00 01 0c 03 00 00 00 00 00 00 00 00 f7 0c 00 ................ 15a0: 00 00 00 00 00 f8 0c 00 00 47 01 f8 0c f8 0c 01 .........G...... 15b0: 08 87 17 00 01 0c 03 00 00 00 00 00 0d 00 00 ff ................ 15c0: ff 00 00 00 00 00 00 00 f3 00 00 87 17 00 00 0c ................ 15d0: 03 00 00 00 00 00 00 0a 00 ff ff 0b 00 00 00 00 ................ 15e0: 00 00 00 02 00 87 17 00 00 0c 03 00 00 00 00 00 ................ 15f0: 00 0c 00 ff 3f 0c 00 00 00 00 00 00 40 00 00 87 ....?.......@... 1600: 17 00 00 0c 03 00 00 00 00 00 40 0c 00 ff 7f 0c ..........@..... 1610: 00 00 00 00 00 00 40 00 00 87 17 00 00 0c 03 00 ......@......... 1620: 00 00 00 00 80 0c 00 ff bf 0c 00 00 00 00 00 00 ................ 1630: 40 00 00 87 17 00 00 0c 03 00 00 00 00 00 c0 0c @............... 1640: 00 ff ff 0c 00 00 00 00 00 00 40 00 00 87 17 00 ..........@..... 1650: 00 0c 03 00 00 00 00 00 00 0d 00 ff 3f 0d 00 00 ............?... 1660: 00 00 00 00 40 00 00 87 17 00 00 0c 03 00 00 00 ....@........... 1670: 00 00 40 0d 00 ff 7f 0d 00 00 00 00 00 00 40 00 ..@...........@. 1680: 00 87 17 00 00 0c 03 00 00 00 00 00 80 0d 00 ff ................ 1690: bf 0d 00 00 00 00 00 00 40 00 00 87 17 00 00 0c ........@....... 16a0: 03 00 00 00 00 00 c0 0d 00 ff ff 0d 00 00 00 00 ................ 16b0: 00 00 40 00 00 87 17 00 00 0c 03 00 00 00 00 00 ..@............. 16c0: 00 0e 00 ff 3f 0e 00 00 00 00 00 00 40 00 00 87 ....?.......@... 16d0: 17 00 00 0c 03 00 00 00 00 00 40 0e 00 ff 7f 0e ..........@..... 16e0: 00 00 00 00 00 00 40 00 00 87 17 00 00 0c 03 00 ......@......... 16f0: 00 00 00 00 80 0e 00 ff bf 0e 00 00 00 00 00 00 ................ 1700: 40 00 00 87 17 00 00 0c 03 00 00 00 00 00 c0 0e @............... 1710: 00 ff ff 0e 00 00 00 00 00 00 40 00 00 87 17 00 ..........@..... 1720: 00 0c 03 00 00 00 00 00 00 0f 00 ff ff 0f 00 00 ................ 1730: 00 00 00 00 00 01 00 87 17 00 00 0c 03 00 00 00 ................ 1740: 00 00 00 00 00 ff ff ff df 00 00 00 00 00 00 00 ................ 1750: 00 87 17 00 00 0c 03 00 00 00 00 00 00 00 f0 ff ................ 1760: ff bf fe 00 00 00 00 00 00 c0 0e 87 17 00 00 0c ................ 1770: 03 00 00 00 00 00 00 d4 fe ff 4f d4 fe 00 00 00 ..........O..... 1780: 00 00 00 00 00 79 00 14 4b 3d 5f 43 52 53 08 a0 .....y..K=_CRS.. 1790: 1c 5e 2e 4d 43 48 43 50 4d 31 4c 8a 42 55 46 30 .^.MCHCPM1L.BUF0 17a0: 0a 7c 43 30 4c 4e 70 00 43 30 4c 4e a0 1f 93 5e .|C0LNp.C0LN...^ 17b0: 2e 4d 43 48 43 50 4d 31 4c 01 8d 42 55 46 30 0b .MCHCPM1L..BUF0. 17c0: 58 03 43 30 52 57 70 00 43 30 52 57 a0 1c 5e 2e X.C0RWp.C0RW..^. 17d0: 4d 43 48 43 50 4d 31 48 8a 42 55 46 30 0a 96 43 MCHCPM1H.BUF0..C 17e0: 34 4c 4e 70 00 43 34 4c 4e a0 1f 93 5e 2e 4d 43 4LNp.C4LN...^.MC 17f0: 48 43 50 4d 31 48 01 8d 42 55 46 30 0b 28 04 43 HCPM1H..BUF0.(.C 1800: 34 52 57 70 00 43 34 52 57 a0 1c 5e 2e 4d 43 48 4RWp.C4RW..^.MCH 1810: 43 50 4d 32 4c 8a 42 55 46 30 0a b0 43 38 4c 4e CPM2L.BUF0..C8LN 1820: 70 00 43 38 4c 4e a0 1f 93 5e 2e 4d 43 48 43 50 p.C8LN...^.MCHCP 1830: 4d 32 4c 01 8d 42 55 46 30 0b f8 04 43 38 52 57 M2L..BUF0...C8RW 1840: 70 00 43 38 52 57 a0 1c 5e 2e 4d 43 48 43 50 4d p.C8RW..^.MCHCPM 1850: 32 48 8a 42 55 46 30 0a ca 43 43 4c 4e 70 00 43 2H.BUF0..CCLNp.C 1860: 43 4c 4e a0 1f 93 5e 2e 4d 43 48 43 50 4d 32 48 CLN...^.MCHCPM2H 1870: 01 8d 42 55 46 30 0b c8 05 43 43 52 57 70 00 43 ..BUF0...CCRWp.C 1880: 43 52 57 a0 1c 5e 2e 4d 43 48 43 50 4d 33 4c 8a CRW..^.MCHCPM3L. 1890: 42 55 46 30 0a e4 44 30 4c 4e 70 00 44 30 4c 4e BUF0..D0LNp.D0LN 18a0: a0 1f 93 5e 2e 4d 43 48 43 50 4d 33 4c 01 8d 42 ...^.MCHCPM3L..B 18b0: 55 46 30 0b 98 06 44 30 52 57 70 00 44 30 52 57 UF0...D0RWp.D0RW 18c0: a0 1c 5e 2e 4d 43 48 43 50 4d 33 48 8a 42 55 46 ..^.MCHCPM3H.BUF 18d0: 30 0a fe 44 34 4c 4e 70 00 44 34 4c 4e a0 1f 93 0..D4LNp.D4LN... 18e0: 5e 2e 4d 43 48 43 50 4d 33 48 01 8d 42 55 46 30 ^.MCHCPM3H..BUF0 18f0: 0b 68 07 44 34 52 57 70 00 44 34 52 57 a0 1d 5e .h.D4RWp.D4RW..^ 1900: 2e 4d 43 48 43 50 4d 34 4c 8a 42 55 46 30 0b 18 .MCHCPM4L.BUF0.. 1910: 01 44 38 4c 4e 70 00 44 38 4c 4e a0 1f 93 5e 2e .D8LNp.D8LN...^. 1920: 4d 43 48 43 50 4d 34 4c 01 8d 42 55 46 30 0b 38 MCHCPM4L..BUF0.8 1930: 08 44 38 52 57 70 00 44 38 52 57 a0 1d 5e 2e 4d .D8RWp.D8RW..^.M 1940: 43 48 43 50 4d 34 48 8a 42 55 46 30 0b 32 01 44 CHCPM4H.BUF0.2.D 1950: 43 4c 4e 70 00 44 43 4c 4e a0 1f 93 5e 2e 4d 43 CLNp.DCLN...^.MC 1960: 48 43 50 4d 34 48 01 8d 42 55 46 30 0b 08 09 44 HCPM4H..BUF0...D 1970: 43 52 57 70 00 44 43 52 57 a0 1d 5e 2e 4d 43 48 CRWp.DCRW..^.MCH 1980: 43 50 4d 35 4c 8a 42 55 46 30 0b 4c 01 45 30 4c CPM5L.BUF0.L.E0L 1990: 4e 70 00 45 30 4c 4e a0 1f 93 5e 2e 4d 43 48 43 Np.E0LN...^.MCHC 19a0: 50 4d 35 4c 01 8d 42 55 46 30 0b d8 09 45 30 52 PM5L..BUF0...E0R 19b0: 57 70 00 45 30 52 57 a0 1d 5e 2e 4d 43 48 43 50 Wp.E0RW..^.MCHCP 19c0: 4d 35 48 8a 42 55 46 30 0b 66 01 45 34 4c 4e 70 M5H.BUF0.f.E4LNp 19d0: 00 45 34 4c 4e a0 1f 93 5e 2e 4d 43 48 43 50 4d .E4LN...^.MCHCPM 19e0: 35 48 01 8d 42 55 46 30 0b a8 0a 45 34 52 57 70 5H..BUF0...E4RWp 19f0: 00 45 34 52 57 a0 1d 5e 2e 4d 43 48 43 50 4d 36 .E4RW..^.MCHCPM6 1a00: 4c 8a 42 55 46 30 0b 80 01 45 38 4c 4e 70 00 45 L.BUF0...E8LNp.E 1a10: 38 4c 4e a0 1f 93 5e 2e 4d 43 48 43 50 4d 36 4c 8LN...^.MCHCPM6L 1a20: 01 8d 42 55 46 30 0b 78 0b 45 38 52 57 70 00 45 ..BUF0.x.E8RWp.E 1a30: 38 52 57 a0 1d 5e 2e 4d 43 48 43 50 4d 36 48 8a 8RW..^.MCHCPM6H. 1a40: 42 55 46 30 0b 9a 01 45 43 4c 4e 70 00 45 43 4c BUF0...ECLNp.ECL 1a50: 4e a0 1f 93 5e 2e 4d 43 48 43 50 4d 36 48 01 8d N...^.MCHCPM6H.. 1a60: 42 55 46 30 0b 48 0c 45 43 52 57 70 00 45 43 52 BUF0.H.ECRWp.ECR 1a70: 57 a0 1d 5e 2e 4d 43 48 43 50 4d 30 48 8a 42 55 W..^.MCHCPM0H.BU 1a80: 46 30 0b b4 01 46 30 4c 4e 70 00 46 30 4c 4e a0 F0...F0LNp.F0LN. 1a90: 1f 93 5e 2e 4d 43 48 43 50 4d 30 48 01 8d 42 55 ..^.MCHCPM0H..BU 1aa0: 46 30 0b 18 0d 46 30 52 57 70 00 46 30 52 57 8a F0...F0RWp.F0RW. 1ab0: 42 55 46 30 0b c2 01 4d 31 4d 4e 8a 42 55 46 30 BUF0...M1MN.BUF0 1ac0: 0b c6 01 4d 31 4d 58 8a 42 55 46 30 0b ce 01 4d ...M1MX.BUF0...M 1ad0: 31 4c 4e 8a 42 55 46 30 0b dc 01 4d 32 4d 4e 8a 1LN.BUF0...M2MN. 1ae0: 42 55 46 30 0b e0 01 4d 32 4d 58 8a 42 55 46 30 BUF0...M2MX.BUF0 1af0: 0b e8 01 4d 32 4c 4e 79 5e 2e 4d 43 48 43 50 58 ...M2LNy^.MCHCPX 1b00: 42 52 0a 1a 4d 31 4d 58 7a 0c 00 00 00 10 5e 2e BR..M1MXz.....^. 1b10: 4d 43 48 43 50 58 53 5a 60 72 4d 31 4d 58 60 4d MCHCPXSZ`rM1MX`M 1b20: 32 4d 4e 72 74 4d 32 4d 58 4d 32 4d 4e 00 01 4d 2MNrtM2MXM2MN..M 1b30: 32 4c 4e 74 4d 31 4d 58 01 4d 31 4d 58 79 5e 2e 2LNtM1MX.M1MXy^. 1b40: 4d 43 48 43 54 4c 55 44 0a 14 4d 31 4d 4e 72 74 MCHCTLUD..M1MNrt 1b50: 4d 31 4d 58 4d 31 4d 4e 00 01 4d 31 4c 4e a4 42 M1MXM1MN..M1LN.B 1b60: 55 46 30 14 47 28 5f 50 52 54 00 a0 45 0f 47 50 UF0.G(_PRT..E.GP 1b70: 49 43 a4 12 4d 0e 13 12 0b 04 0c ff ff 01 00 00 IC..M........... 1b80: 00 0a 10 12 0b 04 0c ff ff 02 00 00 00 0a 10 12 ................ 1b90: 0b 04 0c ff ff 07 00 00 00 0a 10 12 0b 04 0c ff ................ 1ba0: ff 19 00 00 00 0a 14 12 0b 04 0c ff ff 1a 00 00 ................ 1bb0: 00 0a 10 12 0b 04 0c ff ff 1a 00 01 00 0a 15 12 ................ 1bc0: 0c 04 0c ff ff 1a 00 0a 02 00 0a 12 12 0b 04 0c ................ 1bd0: ff ff 1b 00 00 00 0a 16 12 0b 04 0c ff ff 1c 00 ................ 1be0: 00 00 0a 11 12 0b 04 0c ff ff 1c 00 01 00 0a 10 ................ 1bf0: 12 0c 04 0c ff ff 1c 00 0a 02 00 0a 12 12 0c 04 ................ 1c00: 0c ff ff 1c 00 0a 03 00 0a 13 12 0b 04 0c ff ff ................ 1c10: 1d 00 00 00 0a 17 12 0b 04 0c ff ff 1d 00 01 00 ................ 1c20: 0a 13 12 0c 04 0c ff ff 1d 00 0a 02 00 0a 12 12 ................ 1c30: 0b 04 0c ff ff 1f 00 00 00 0a 13 12 0b 04 0c ff ................ 1c40: ff 1f 00 01 00 0a 13 12 0c 04 0c ff ff 1f 00 0a ................ 1c50: 02 00 0a 13 12 0c 04 0c ff ff 1f 00 0a 03 00 0a ................ 1c60: 10 a1 49 18 a4 12 45 18 13 12 13 04 0c ff ff 01 ..I...E......... 1c70: 00 00 5e 2e 4c 50 43 42 4c 4e 4b 41 00 12 13 04 ..^.LPCBLNKA.... 1c80: 0c ff ff 02 00 00 5e 2e 4c 50 43 42 4c 4e 4b 41 ......^.LPCBLNKA 1c90: 00 12 13 04 0c ff ff 07 00 00 5e 2e 4c 50 43 42 ..........^.LPCB 1ca0: 4c 4e 4b 41 00 12 13 04 0c ff ff 19 00 00 5e 2e LNKA..........^. 1cb0: 4c 50 43 42 4c 4e 4b 45 00 12 13 04 0c ff ff 1a LPCBLNKE........ 1cc0: 00 00 5e 2e 4c 50 43 42 4c 4e 4b 41 00 12 13 04 ..^.LPCBLNKA.... 1cd0: 0c ff ff 1a 00 01 5e 2e 4c 50 43 42 4c 4e 4b 46 ......^.LPCBLNKF 1ce0: 00 12 14 04 0c ff ff 1a 00 0a 02 5e 2e 4c 50 43 ...........^.LPC 1cf0: 42 4c 4e 4b 43 00 12 13 04 0c ff ff 1b 00 00 5e BLNKC..........^ 1d00: 2e 4c 50 43 42 4c 4e 4b 47 00 12 13 04 0c ff ff .LPCBLNKG....... 1d10: 1c 00 00 5e 2e 4c 50 43 42 4c 4e 4b 42 00 12 13 ...^.LPCBLNKB... 1d20: 04 0c ff ff 1c 00 01 5e 2e 4c 50 43 42 4c 4e 4b .......^.LPCBLNK 1d30: 41 00 12 14 04 0c ff ff 1c 00 0a 02 5e 2e 4c 50 A...........^.LP 1d40: 43 42 4c 4e 4b 43 00 12 14 04 0c ff ff 1c 00 0a CBLNKC.......... 1d50: 03 5e 2e 4c 50 43 42 4c 4e 4b 44 00 12 13 04 0c .^.LPCBLNKD..... 1d60: ff ff 1d 00 00 5e 2e 4c 50 43 42 4c 4e 4b 48 00 .....^.LPCBLNKH. 1d70: 12 13 04 0c ff ff 1d 00 01 5e 2e 4c 50 43 42 4c .........^.LPCBL 1d80: 4e 4b 44 00 12 14 04 0c ff ff 1d 00 0a 02 5e 2e NKD...........^. 1d90: 4c 50 43 42 4c 4e 4b 43 00 12 13 04 0c ff ff 1f LPCBLNKC........ 1da0: 00 00 5e 2e 4c 50 43 42 4c 4e 4b 44 00 12 13 04 ..^.LPCBLNKD.... 1db0: 0c ff ff 1f 00 01 5e 2e 4c 50 43 42 4c 4e 4b 44 ......^.LPCBLNKD 1dc0: 00 12 14 04 0c ff ff 1f 00 0a 02 5e 2e 4c 50 43 ...........^.LPC 1dd0: 42 4c 4e 4b 44 00 12 14 04 0c ff ff 1f 00 0a 03 BLNKD........... 1de0: 5e 2e 4c 50 43 42 4c 4e 4b 41 00 5b 82 40 14 50 ^.LPCBLNKA.[.@.P 1df0: 44 52 43 08 5f 48 49 44 0c 41 d0 0c 02 08 5f 55 DRC._HID.A...._U 1e00: 49 44 01 08 42 55 46 30 11 46 06 0a 62 86 09 00 ID..BUF0.F..b... 1e10: 01 00 00 00 00 00 40 00 00 86 09 00 01 00 00 00 ......@......... 1e20: 00 00 40 00 00 86 09 00 01 00 00 00 00 00 10 00 ..@............. 1e30: 00 86 09 00 01 00 00 00 00 00 10 00 00 86 09 00 ................ 1e40: 01 00 00 00 00 00 00 00 00 86 09 00 01 00 00 d2 ................ 1e50: fe 00 00 02 00 86 09 00 01 00 00 d4 fe 00 50 00 ..............P. 1e60: 00 86 09 00 01 00 50 d4 fe 00 b0 04 00 79 00 14 ......P......y.. 1e70: 4d 0b 5f 43 52 53 08 8a 42 55 46 30 0a 04 52 42 M._CRS..BUF0..RB 1e80: 52 30 79 5e 5e 2e 4c 50 43 42 52 43 42 41 0a 0e R0y^^.LPCBRCBA.. 1e90: 52 42 52 30 8a 42 55 46 30 0a 10 4d 42 52 30 79 RBR0.BUF0..MBR0y 1ea0: 5e 5e 2e 4d 43 48 43 4d 48 42 52 0a 0e 4d 42 52 ^^.MCHCMHBR..MBR 1eb0: 30 8a 42 55 46 30 0a 1c 44 42 52 30 79 5e 5e 2e 0.BUF0..DBR0y^^. 1ec0: 4d 43 48 43 44 49 42 52 0a 0c 44 42 52 30 8a 42 MCHCDIBR..DBR0.B 1ed0: 55 46 30 0a 28 45 42 52 30 79 5e 5e 2e 4d 43 48 UF0.(EBR0y^^.MCH 1ee0: 43 45 50 42 52 0a 0c 45 42 52 30 8a 42 55 46 30 CEPBR..EBR0.BUF0 1ef0: 0a 34 58 42 52 30 79 5e 5e 2e 4d 43 48 43 50 58 .4XBR0y^^.MCHCPX 1f00: 42 52 0a 1a 58 42 52 30 8a 42 55 46 30 0a 38 58 BR..XBR0.BUF0.8X 1f10: 53 5a 30 7a 0c 00 00 00 10 5e 5e 2e 4d 43 48 43 SZ0z.....^^.MCHC 1f20: 50 58 53 5a 58 53 5a 30 a4 42 55 46 30 5b 82 4d PXSZXSZ0.BUF0[.M 1f30: 50 50 45 47 50 08 5f 41 44 52 0c 00 00 01 00 14 PPEGP._ADR...... 1f40: 41 09 5f 50 52 54 00 a0 33 47 50 49 43 a4 12 2c A._PRT..3GPIC.., 1f50: 04 12 09 04 0b ff ff 00 00 0a 10 12 09 04 0b ff ................ 1f60: ff 01 00 0a 11 12 0a 04 0b ff ff 0a 02 00 0a 12 ................ 1f70: 12 0a 04 0b ff ff 0a 03 00 0a 13 a1 45 05 a4 12 ............E... 1f80: 41 05 04 12 12 04 0b ff ff 00 5e 5e 2e 4c 50 43 A.........^^.LPC 1f90: 42 4c 4e 4b 41 00 12 12 04 0b ff ff 01 5e 5e 2e BLNKA........^^. 1fa0: 4c 50 43 42 4c 4e 4b 42 00 12 13 04 0b ff ff 0a LPCBLNKB........ 1fb0: 02 5e 5e 2e 4c 50 43 42 4c 4e 4b 43 00 12 13 04 .^^.LPCBLNKC.... 1fc0: 0b ff ff 0a 03 5e 5e 2e 4c 50 43 42 4c 4e 4b 44 .....^^.LPCBLNKD 1fd0: 00 5b 82 49 46 56 47 41 5f 08 5f 41 44 52 00 08 .[.IFVGA_._ADR.. 1fe0: 53 57 49 54 01 08 43 52 54 41 01 08 4c 43 44 41 SWIT..CRTA..LCDA 1ff0: 01 08 54 56 41 41 01 08 56 4c 44 46 01 5b 80 56 ..TVAA..VLDF.[.V 2000: 49 44 53 02 00 0a c8 5b 81 0b 56 49 44 53 03 56 IDS....[..VIDS.V 2010: 44 49 44 20 14 09 5f 53 54 41 00 a4 0a 0f 08 5f DID .._STA....._ 2020: 50 53 43 00 14 0c 5f 50 53 30 00 70 00 5f 50 53 PSC..._PS0.p._PS 2030: 43 14 0c 5f 50 53 31 00 70 01 5f 50 53 43 14 0d C.._PS1.p._PSC.. 2040: 5f 50 53 33 00 70 0a 03 5f 50 53 43 14 10 5f 44 _PS3.p.._PSC.._D 2050: 4f 53 01 70 7b 68 0a 03 00 53 57 49 54 14 17 5f OS.p{h...SWIT.._ 2060: 44 4f 44 00 a4 12 0f 03 0c 00 01 01 00 0c 10 01 DOD............. 2070: 01 00 0b 00 02 5b 82 4d 08 43 52 54 5f 14 0a 5f .....[.M.CRT_.._ 2080: 41 44 52 00 a4 0b 00 01 14 41 06 5f 44 43 53 00 ADR......A._DCS. 2090: 5e 5e 5e 5e 2e 4c 50 43 42 50 48 53 53 0a 0c 70 ^^^^.LPCBPHSS..p 20a0: 43 41 44 4c 60 70 43 53 54 45 61 7b 60 0a 02 60 CADL`pCSTEa{`..` 20b0: 7b 61 0a 02 61 a0 08 60 70 01 43 52 54 41 a1 07 {a..a..`p.CRTA.. 20c0: 70 00 43 52 54 41 a0 13 43 52 54 41 a0 08 93 61 p.CRTA..CRTA...a 20d0: 0a 02 a4 0a 1f a1 04 a4 0a 1d a1 0f a0 08 93 61 ...............a 20e0: 0a 02 a4 0a 0f a1 04 a4 0a 0d 14 12 5f 44 47 53 ............_DGS 20f0: 00 a0 07 43 52 54 41 a4 01 a1 03 a4 00 14 06 5f ...CRTA........_ 2100: 44 53 53 01 5b 82 47 0e 4c 43 44 5f 14 0a 5f 41 DSS.[.G.LCD_.._A 2110: 44 52 00 a4 0b 10 01 14 4d 05 5f 44 43 53 00 5e DR......M._DCS.^ 2120: 5e 5e 5e 2e 4c 50 43 42 50 48 53 53 0a 0c 70 43 ^^^.LPCBPHSS..pC 2130: 41 44 4c 60 70 43 53 54 45 61 7b 60 01 60 7b 61 ADL`pCSTEa{`.`{a 2140: 01 61 a0 08 60 70 01 4c 43 44 41 a1 07 70 00 4c .a..`p.LCDA..p.L 2150: 43 44 41 a0 12 4c 43 44 41 a0 07 93 61 01 a4 0a CDA..LCDA...a... 2160: 1f a1 04 a4 0a 1d a1 0e a0 07 93 61 01 a4 0a 0f ...........a.... 2170: a1 04 a4 0a 0d 14 12 5f 44 47 53 00 a0 07 4c 43 ......._DGS...LC 2180: 44 41 a4 01 a1 03 a4 00 14 06 5f 44 53 53 01 14 DA........_DSS.. 2190: 1d 5f 42 43 4c 00 a4 12 15 0a 0a 46 0a 28 00 0a ._BCL......F.(.. 21a0: 0a 0a 14 0a 1e 0a 28 0a 32 0a 3c 0a 46 14 20 5f ......(.2.<.F. _ 21b0: 42 43 4d 01 78 68 0a 0a 60 61 70 61 5e 5e 5e 5e BCM.xh..`apa^^^^ 21c0: 2f 03 4c 50 43 42 45 43 30 5f 42 52 54 53 14 1e /.LPCBEC0_BRTS.. 21d0: 5f 42 51 43 00 77 5e 5e 5e 5e 2f 03 4c 50 43 42 _BQC.w^^^^/.LPCB 21e0: 45 43 30 5f 42 52 54 53 0a 0a 60 a4 60 5b 82 4d EC0_BRTS..`.`[.M 21f0: 08 54 56 5f 5f 14 0a 5f 41 44 52 00 a4 0b 00 02 .TV__.._ADR..... 2200: 14 41 06 5f 44 43 53 00 5e 5e 5e 5e 2e 4c 50 43 .A._DCS.^^^^.LPC 2210: 42 50 48 53 53 0a 0c 70 43 41 44 4c 60 70 43 53 BPHSS..pCADL`pCS 2220: 54 45 61 7b 60 0a 04 60 7b 61 0a 04 61 a0 08 60 TEa{`..`{a..a..` 2230: 70 01 54 56 41 41 a1 07 70 00 54 56 41 41 a0 13 p.TVAA..p.TVAA.. 2240: 54 56 41 41 a0 08 93 61 0a 04 a4 0a 1f a1 04 a4 TVAA...a........ 2250: 0a 1d a1 0f a0 08 93 61 0a 04 a4 0a 0f a1 04 a4 .......a........ 2260: 0a 0d 14 12 5f 44 47 53 00 a0 07 54 56 41 41 a4 ...._DGS...TVAA. 2270: 01 a1 03 a4 00 14 06 5f 44 53 53 01 14 49 10 44 ......._DSS..I.D 2280: 53 53 57 00 a0 4a 0e 93 53 57 49 54 00 5e 5e 5e SSW..J..SWIT.^^^ 2290: 2e 4c 50 43 42 50 48 53 53 0a 0c 70 43 41 44 4c .LPCBPHSS..pCADL 22a0: 60 70 43 53 54 45 61 a0 16 94 61 01 7b 60 61 56 `pCSTEa...a.{`aV 22b0: 4c 44 46 7b 56 4c 44 46 0a fe 56 4c 44 46 a0 43 LDF{VLDF..VLDF.C 22c0: 0a 56 4c 44 46 a0 27 93 60 0a 09 a0 0b 93 61 0a .VLDF.'.`.....a. 22d0: 08 53 54 42 4c 0a 02 a0 0a 93 61 01 53 54 42 4c .STBL.....a.STBL 22e0: 0a 03 a0 0a 93 61 0a 09 53 54 42 4c 01 a0 28 93 .....a..STBL..(. 22f0: 60 0a 0a a0 0b 93 61 0a 08 53 54 42 4c 0a 05 a0 `.....a..STBL... 2300: 0a 93 61 0a 02 53 54 42 4c 01 a0 0b 93 61 0a 0a ..a..STBL....a.. 2310: 53 54 42 4c 0a 04 a0 4b 04 93 60 0a 0b a0 0b 93 STBL...K..`..... 2320: 61 0a 08 53 54 42 4c 0a 02 a0 0b 93 61 0a 09 53 a..STBL.....a..S 2330: 54 42 4c 0a 05 a0 0a 93 61 01 53 54 42 4c 0a 03 TBL.....a.STBL.. 2340: a0 0b 93 61 0a 0a 53 54 42 4c 0a 04 a0 0a 93 61 ...a..STBL.....a 2350: 0a 02 53 54 42 4c 01 a0 0a 93 61 0a 0b 53 54 42 ..STBL....a..STB 2360: 4c 01 a1 0c 70 01 56 4c 44 46 53 54 42 4c 01 a1 L...p.VLDFSTBL.. 2370: 16 a0 14 93 53 57 49 54 01 5e 5e 5e 2e 4c 50 43 ....SWIT.^^^.LPC 2380: 42 50 48 53 53 01 14 45 0b 53 54 42 4c 01 a0 16 BPHSS..E.STBL... 2390: 93 68 01 70 00 43 52 54 41 70 01 4c 43 44 41 70 .h.p.CRTAp.LCDAp 23a0: 00 54 56 41 41 a0 17 93 68 0a 02 70 01 43 52 54 .TVAA...h..p.CRT 23b0: 41 70 00 4c 43 44 41 70 00 54 56 41 41 a0 17 93 Ap.LCDAp.TVAA... 23c0: 68 0a 03 70 01 43 52 54 41 70 01 4c 43 44 41 70 h..p.CRTAp.LCDAp 23d0: 00 54 56 41 41 a0 17 93 68 0a 04 70 00 43 52 54 .TVAA...h..p.CRT 23e0: 41 70 00 4c 43 44 41 70 01 54 56 41 41 a0 17 93 Ap.LCDAp.TVAA... 23f0: 68 0a 05 70 00 43 52 54 41 70 01 4c 43 44 41 70 h..p.CRTAp.LCDAp 2400: 01 54 56 41 41 a0 17 93 68 0a 06 70 01 43 52 54 .TVAA...h..p.CRT 2410: 41 70 00 4c 43 44 41 70 01 54 56 41 41 a0 17 93 Ap.LCDAp.TVAA... 2420: 68 0a 07 70 01 43 52 54 41 70 01 4c 43 44 41 70 h..p.CRTAp.LCDAp 2430: 01 54 56 41 41 86 56 47 41 5f 0a 80 5b 82 42 f8 .TVAA.VGA_..[.B. 2440: 47 46 58 30 08 5f 41 44 52 0c 00 00 02 00 14 10 GFX0._ADR....... 2450: 5f 44 4f 53 01 70 7b 68 0a 07 00 44 53 45 4e 14 _DOS.p{h...DSEN. 2460: 41 26 5f 44 4f 44 00 70 00 4e 44 49 44 a0 15 92 A&_DOD.p.NDID... 2470: 93 44 49 44 4c 00 70 53 44 44 4c 44 49 44 31 44 .DIDL.pSDDLDID1D 2480: 49 44 31 a0 15 92 93 44 44 4c 32 00 70 53 44 44 ID1....DDL2.pSDD 2490: 4c 44 49 44 32 44 49 44 32 a0 15 92 93 44 44 4c LDID2DID2....DDL 24a0: 33 00 70 53 44 44 4c 44 49 44 33 44 49 44 33 a0 3.pSDDLDID3DID3. 24b0: 15 92 93 44 44 4c 34 00 70 53 44 44 4c 44 49 44 ...DDL4.pSDDLDID 24c0: 34 44 49 44 34 a0 15 92 93 44 44 4c 35 00 70 53 4DID4....DDL5.pS 24d0: 44 44 4c 44 49 44 35 44 49 44 35 a0 2c 93 4e 44 DDLDID5DID5.,.ND 24e0: 49 44 01 08 54 4d 50 31 12 07 01 0c ff ff ff ff ID..TMP1........ 24f0: 70 7d 0c 00 00 01 00 44 49 44 31 00 88 54 4d 50 p}.....DID1..TMP 2500: 31 00 00 a4 54 4d 50 31 a0 46 04 93 4e 44 49 44 1...TMP1.F..NDID 2510: 0a 02 08 54 4d 50 32 12 0c 02 0c ff ff ff ff 0c ...TMP2......... 2520: ff ff ff ff 70 7d 0c 00 00 01 00 44 49 44 31 00 ....p}.....DID1. 2530: 88 54 4d 50 32 00 00 70 7d 0c 00 00 01 00 44 49 .TMP2..p}.....DI 2540: 44 32 00 88 54 4d 50 32 01 00 a4 54 4d 50 32 a0 D2..TMP2...TMP2. 2550: 4f 05 93 4e 44 49 44 0a 03 08 54 4d 50 33 12 11 O..NDID...TMP3.. 2560: 03 0c ff ff ff ff 0c ff ff ff ff 0c ff ff ff ff ................ 2570: 70 7d 0c 00 00 01 00 44 49 44 31 00 88 54 4d 50 p}.....DID1..TMP 2580: 33 00 00 70 7d 0c 00 00 01 00 44 49 44 32 00 88 3..p}.....DID2.. 2590: 54 4d 50 33 01 00 70 7d 0c 00 00 01 00 44 49 44 TMP3..p}.....DID 25a0: 33 00 88 54 4d 50 33 0a 02 00 a4 54 4d 50 33 a0 3..TMP3....TMP3. 25b0: 48 07 93 4e 44 49 44 0a 04 08 54 4d 50 34 12 16 H..NDID...TMP4.. 25c0: 04 0c ff ff ff ff 0c ff ff ff ff 0c ff ff ff ff ................ 25d0: 0c ff ff ff ff 70 7d 0c 00 00 01 00 44 49 44 31 .....p}.....DID1 25e0: 00 88 54 4d 50 34 00 00 70 7d 0c 00 00 01 00 44 ..TMP4..p}.....D 25f0: 49 44 32 00 88 54 4d 50 34 01 00 70 7d 0c 00 00 ID2..TMP4..p}... 2600: 01 00 44 49 44 33 00 88 54 4d 50 34 0a 02 00 70 ..DID3..TMP4...p 2610: 7d 0c 00 00 01 00 44 49 44 34 00 88 54 4d 50 34 }.....DID4..TMP4 2620: 0a 03 00 a4 54 4d 50 34 a0 41 09 94 4e 44 49 44 ....TMP4.A..NDID 2630: 0a 04 08 54 4d 50 35 12 1b 05 0c ff ff ff ff 0c ...TMP5......... 2640: ff ff ff ff 0c ff ff ff ff 0c ff ff ff ff 0c ff ................ 2650: ff ff ff 70 7d 0c 00 00 01 00 44 49 44 31 00 88 ...p}.....DID1.. 2660: 54 4d 50 35 00 00 70 7d 0c 00 00 01 00 44 49 44 TMP5..p}.....DID 2670: 32 00 88 54 4d 50 35 01 00 70 7d 0c 00 00 01 00 2..TMP5..p}..... 2680: 44 49 44 33 00 88 54 4d 50 35 0a 02 00 70 7d 0c DID3..TMP5...p}. 2690: 00 00 01 00 44 49 44 34 00 88 54 4d 50 35 0a 03 ....DID4..TMP5.. 26a0: 00 70 7d 0c 00 00 01 00 44 49 44 34 00 88 54 4d .p}.....DID4..TM 26b0: 50 35 0a 04 00 a4 54 4d 50 35 a4 12 05 01 0b 00 P5....TMP5...... 26c0: 04 5b 82 43 06 44 44 30 31 14 1c 5f 41 44 52 08 .[.C.DD01.._ADR. 26d0: a0 09 93 44 49 44 31 00 a4 01 a1 0b a4 7b 0b ff ...DID1......{.. 26e0: ff 44 49 44 31 00 14 0f 5f 44 43 53 00 a4 43 44 .DID1..._DCS..CD 26f0: 44 53 44 49 44 31 14 0f 5f 44 47 53 00 a4 4e 44 DSDID1.._DGS..ND 2700: 44 53 44 49 44 31 14 1f 5f 44 53 53 01 a0 18 93 DSDID1.._DSS.... 2710: 7b 68 0c 00 00 00 c0 00 0c 00 00 00 c0 70 4e 53 {h...........pNS 2720: 54 45 43 53 54 45 5b 82 44 06 44 44 30 32 14 1d TECSTE[.D.DD02.. 2730: 5f 41 44 52 08 a0 0a 93 44 49 44 32 00 a4 0a 02 _ADR....DID2.... 2740: a1 0b a4 7b 0b ff ff 44 49 44 32 00 14 0f 5f 44 ...{...DID2..._D 2750: 43 53 00 a4 43 44 44 53 44 49 44 32 14 0f 5f 44 CS..CDDSDID2.._D 2760: 47 53 00 a4 4e 44 44 53 44 49 44 32 14 1f 5f 44 GS..NDDSDID2.._D 2770: 53 53 01 a0 18 93 7b 68 0c 00 00 00 c0 00 0c 00 SS....{h........ 2780: 00 00 c0 70 4e 53 54 45 43 53 54 45 5b 82 41 07 ...pNSTECSTE[.A. 2790: 44 44 30 33 14 1d 5f 41 44 52 08 a0 0a 93 44 49 DD03.._ADR....DI 27a0: 44 33 00 a4 0a 03 a1 0b a4 7b 0b ff ff 44 49 44 D3.......{...DID 27b0: 33 00 14 1c 5f 44 43 53 00 a0 0a 93 44 49 44 33 3..._DCS....DID3 27c0: 00 a4 0a 0b a1 0a a4 43 44 44 53 44 49 44 33 14 .......CDDSDID3. 27d0: 0f 5f 44 47 53 00 a4 4e 44 44 53 44 49 44 33 14 ._DGS..NDDSDID3. 27e0: 1f 5f 44 53 53 01 a0 18 93 7b 68 0c 00 00 00 c0 ._DSS....{h..... 27f0: 00 0c 00 00 00 c0 70 4e 53 54 45 43 53 54 45 5b ......pNSTECSTE[ 2800: 82 41 07 44 44 30 34 14 1d 5f 41 44 52 08 a0 0a .A.DD04.._ADR... 2810: 93 44 49 44 34 00 a4 0a 04 a1 0b a4 7b 0b ff ff .DID4.......{... 2820: 44 49 44 34 00 14 1c 5f 44 43 53 00 a0 0a 93 44 DID4..._DCS....D 2830: 49 44 34 00 a4 0a 0b a1 0a a4 43 44 44 53 44 49 ID4.......CDDSDI 2840: 44 34 14 0f 5f 44 47 53 00 a4 4e 44 44 53 44 49 D4.._DGS..NDDSDI 2850: 44 34 14 1f 5f 44 53 53 01 a0 18 93 7b 68 0c 00 D4.._DSS....{h.. 2860: 00 00 c0 00 0c 00 00 00 c0 70 4e 53 54 45 43 53 .........pNSTECS 2870: 54 45 5b 82 41 07 44 44 30 35 14 1d 5f 41 44 52 TE[.A.DD05.._ADR 2880: 08 a0 0a 93 44 49 44 35 00 a4 0a 05 a1 0b a4 7b ....DID5.......{ 2890: 0b ff ff 44 49 44 35 00 14 1c 5f 44 43 53 00 a0 ...DID5..._DCS.. 28a0: 0a 93 44 49 44 35 00 a4 0a 0b a1 0a a4 43 44 44 ..DID5.......CDD 28b0: 53 44 49 44 35 14 0f 5f 44 47 53 00 a4 4e 44 44 SDID5.._DGS..NDD 28c0: 53 44 49 44 35 14 1f 5f 44 53 53 01 a0 18 93 7b SDID5.._DSS....{ 28d0: 68 0c 00 00 00 c0 00 0c 00 00 00 c0 70 4e 53 54 h...........pNST 28e0: 45 43 53 54 45 14 4e 06 53 44 44 4c 01 75 4e 44 ECSTE.N.SDDL.uND 28f0: 49 44 70 7b 68 0b 0f 0f 00 60 7d 0c 00 00 00 80 IDp{h....`}..... 2900: 60 61 a0 09 93 44 49 44 4c 60 a4 61 a0 09 93 44 `a...DIDL`.a...D 2910: 44 4c 32 60 a4 61 a0 09 93 44 44 4c 33 60 a4 61 DL2`.a...DDL3`.a 2920: a0 09 93 44 44 4c 34 60 a4 61 a0 09 93 44 44 4c ...DDL4`.a...DDL 2930: 35 60 a4 61 a0 09 93 44 44 4c 36 60 a4 61 a0 09 5`.a...DDL6`.a.. 2940: 93 44 44 4c 37 60 a4 61 a0 09 93 44 44 4c 38 60 .DDL7`.a...DDL8` 2950: a4 61 a4 00 14 4a 08 43 44 44 53 01 a0 0f 93 43 .a...J.CDDS....C 2960: 41 44 4c 7b 68 0b 0f 0f 00 a4 0a 1f a0 0f 93 43 ADL{h..........C 2970: 41 4c 32 7b 68 0b 0f 0f 00 a4 0a 1f a0 0f 93 43 AL2{h..........C 2980: 41 4c 33 7b 68 0b 0f 0f 00 a4 0a 1f a0 0f 93 43 AL3{h..........C 2990: 41 4c 34 7b 68 0b 0f 0f 00 a4 0a 1f a0 0f 93 43 AL4{h..........C 29a0: 41 4c 35 7b 68 0b 0f 0f 00 a4 0a 1f a0 0f 93 43 AL5{h..........C 29b0: 41 4c 36 7b 68 0b 0f 0f 00 a4 0a 1f a0 0f 93 43 AL6{h..........C 29c0: 41 4c 37 7b 68 0b 0f 0f 00 a4 0a 1f a0 0f 93 43 AL7{h..........C 29d0: 41 4c 38 7b 68 0b 0f 0f 00 a4 0a 1f a4 0a 1d 14 AL8{h........... 29e0: 41 08 4e 44 44 53 01 a0 0e 93 4e 41 44 4c 7b 68 A.NDDS....NADL{h 29f0: 0b 0f 0f 00 a4 01 a0 0e 93 4e 44 4c 32 7b 68 0b .........NDL2{h. 2a00: 0f 0f 00 a4 01 a0 0e 93 4e 44 4c 33 7b 68 0b 0f ........NDL3{h.. 2a10: 0f 00 a4 01 a0 0e 93 4e 44 4c 34 7b 68 0b 0f 0f .......NDL4{h... 2a20: 00 a4 01 a0 0e 93 4e 44 4c 35 7b 68 0b 0f 0f 00 ......NDL5{h.... 2a30: a4 01 a0 0e 93 4e 44 4c 36 7b 68 0b 0f 0f 00 a4 .....NDL6{h..... 2a40: 01 a0 0e 93 4e 44 4c 37 7b 68 0b 0f 0f 00 a4 01 ....NDL7{h...... 2a50: a0 0e 93 4e 44 4c 38 7b 68 0b 0f 0f 00 a4 01 a4 ...NDL8{h....... 2a60: 00 14 40 07 42 52 54 4e 09 a0 14 93 7b 44 49 44 ..@.BRTN....{DID 2a70: 31 0b 00 0f 00 0b 00 04 86 44 44 30 31 68 a0 14 1........DD01h.. 2a80: 93 7b 44 49 44 32 0b 00 0f 00 0b 00 04 86 44 44 .{DID2........DD 2a90: 30 32 68 a0 14 93 7b 44 49 44 33 0b 00 0f 00 0b 02h...{DID3..... 2aa0: 00 04 86 44 44 30 33 68 a0 14 93 7b 44 49 44 34 ...DD03h...{DID4 2ab0: 0b 00 0f 00 0b 00 04 86 44 44 30 34 68 a0 14 93 ........DD04h... 2ac0: 7b 44 49 44 35 0b 00 0f 00 0b 00 04 86 44 44 30 {DID5........DD0 2ad0: 35 68 10 24 5e 5e 50 43 49 30 5b 80 4d 43 48 50 5h.$^^PCI0[.MCHP 2ae0: 02 0a 40 0a c0 5b 81 10 4d 43 48 50 00 00 40 30 ..@..[..MCHP..@0 2af0: 54 41 53 4d 0a 00 06 5b 80 49 47 44 50 02 0a 40 TASM...[.IGDP..@ 2b00: 0a c0 5b 81 45 05 49 47 44 50 00 00 40 09 00 01 ..[.E.IGDP..@... 2b10: 47 49 56 44 01 00 02 47 55 4d 41 03 00 09 00 04 GIVD...GUMA..... 2b20: 47 4d 46 4e 01 00 1b 00 40 46 41 53 4c 45 08 00 GMFN....@FASLE.. 2b30: 18 47 53 53 45 01 47 53 53 42 0e 47 53 45 53 01 .GSSE.GSSB.GSES. 2b40: 00 30 00 08 43 44 56 4c 05 00 03 00 18 4c 42 50 .0..CDVL.....LBP 2b50: 43 08 00 30 41 53 4c 53 20 5b 80 49 47 44 4d 00 C..0ASLS [.IGDM. 2b60: 41 53 4c 42 0b 00 20 5b 81 4e 16 49 47 44 4d 00 ASLB.. [.N.IGDM. 2b70: 53 49 47 4e 40 08 53 49 5a 45 20 4f 56 45 52 20 SIGN@.SIZE OVER 2b80: 53 56 45 52 40 10 56 56 45 52 40 08 47 56 45 52 SVER@.VVER@.GVER 2b90: 40 08 4d 42 4f 58 20 00 40 52 44 52 44 59 20 43 @.MBOX .@RDRDY C 2ba0: 53 54 53 20 43 45 56 54 20 00 40 0a 44 49 44 4c STS CEVT .@.DIDL 2bb0: 20 44 44 4c 32 20 44 44 4c 33 20 44 44 4c 34 20 DDL2 DDL3 DDL4 2bc0: 44 44 4c 35 20 44 44 4c 36 20 44 44 4c 37 20 44 DDL5 DDL6 DDL7 D 2bd0: 44 4c 38 20 43 50 44 4c 20 43 50 4c 32 20 43 50 DL8 CPDL CPL2 CP 2be0: 4c 33 20 43 50 4c 34 20 43 50 4c 35 20 43 50 4c L3 CPL4 CPL5 CPL 2bf0: 36 20 43 50 4c 37 20 43 50 4c 38 20 43 41 44 4c 6 CPL7 CPL8 CADL 2c00: 20 43 41 4c 32 20 43 41 4c 33 20 43 41 4c 34 20 CAL2 CAL3 CAL4 2c10: 43 41 4c 35 20 43 41 4c 36 20 43 41 4c 37 20 43 CAL5 CAL6 CAL7 C 2c20: 41 4c 38 20 4e 41 44 4c 20 4e 44 4c 32 20 4e 44 AL8 NADL NDL2 ND 2c30: 4c 33 20 4e 44 4c 34 20 4e 44 4c 35 20 4e 44 4c L3 NDL4 NDL5 NDL 2c40: 36 20 4e 44 4c 37 20 4e 44 4c 38 20 41 53 4c 50 6 NDL7 NDL8 ASLP 2c50: 20 54 49 44 58 20 43 48 50 44 20 43 4c 49 44 20 TIDX CHPD CLID 2c60: 43 44 43 4b 20 53 58 53 57 20 45 56 54 53 20 43 CDCK SXSW EVTS C 2c70: 4e 4f 54 20 4e 52 44 59 20 00 40 1e 53 43 49 45 NOT NRDY .@.SCIE 2c80: 01 47 45 46 43 04 47 58 46 43 03 47 45 53 46 08 .GEFC.GXFC.GESF. 2c90: 00 10 50 41 52 4d 20 44 53 4c 50 20 00 40 7a 41 ..PARM DSLP .@zA 2ca0: 52 44 59 20 41 53 4c 43 20 54 43 48 45 20 41 4c RDY ASLC TCHE AL 2cb0: 53 49 20 42 43 4c 50 20 50 46 49 54 20 43 42 4c SI BCLP PFIT CBL 2cc0: 56 20 42 43 4c 4d 40 14 43 50 46 4d 20 00 40 5c V BCLM@.CPFM .@\ 2cd0: 47 56 44 31 80 00 0e 08 44 42 54 42 12 32 15 00 GVD1....DBTB.2.. 2ce0: 0a 07 0a 38 0b c0 01 0b 00 0e 0a 3f 0b c7 01 0b ...8.......?.... 2cf0: 07 0e 0b f8 01 0b 38 0e 0b c0 0f 00 00 00 00 00 ......8......... 2d00: 0b 00 70 0b 07 70 0b 38 70 0b c0 71 0b 00 7e 08 ..p..p.8p..q..~. 2d10: 43 44 43 54 12 23 03 12 0a 03 0a c8 0b 40 01 0b CDCT.#.......@.. 2d20: 90 01 12 0a 03 0a c8 0b 4d 01 0b 90 01 12 0a 03 ........M....... 2d30: 0a de 0b 4d 01 0b 7d 01 08 53 55 43 43 01 08 4e ...M..}..SUCC..N 2d40: 56 4c 44 0a 02 08 43 52 49 54 0a 04 08 4e 43 52 VLD...CRIT...NCR 2d50: 54 0a 06 14 4c 4a 47 53 43 49 08 14 44 1e 47 42 T...LJGSCI..D.GB 2d60: 44 41 08 a0 1a 93 47 45 53 46 00 70 0b 79 02 50 DA....GESF.p.y.P 2d70: 41 52 4d 70 00 47 45 53 46 a4 53 55 43 43 a0 1a ARMp.GESF.SUCC.. 2d80: 93 47 45 53 46 01 70 0b 40 02 50 41 52 4d 70 00 .GESF.p.@.PARMp. 2d90: 47 45 53 46 a4 53 55 43 43 a0 47 04 93 47 45 53 GESF.SUCC.G..GES 2da0: 46 0a 04 7b 50 41 52 4d 0c 00 00 ff ef 50 41 52 F..{PARM.....PAR 2db0: 4d 7b 50 41 52 4d 79 83 88 44 42 54 42 49 42 54 M{PARMy..DBTBIBT 2dc0: 54 00 0a 10 00 50 41 52 4d 7d 49 42 54 54 50 41 T....PARM}IBTTPA 2dd0: 52 4d 50 41 52 4d 70 00 47 45 53 46 a4 53 55 43 RMPARMp.GESF.SUC 2de0: 43 a0 4a 06 93 47 45 53 46 0a 05 70 49 50 53 43 C.J..GESF..pIPSC 2df0: 50 41 52 4d 7d 50 41 52 4d 79 49 50 41 54 0a 08 PARM}PARMyIPAT.. 2e00: 00 50 41 52 4d 72 50 41 52 4d 0b 00 01 50 41 52 .PARMrPARM...PAR 2e10: 4d 7d 50 41 52 4d 79 4c 49 44 53 0a 10 00 50 41 M}PARMyLIDS...PA 2e20: 52 4d 72 50 41 52 4d 0c 00 00 01 00 50 41 52 4d RMrPARM.....PARM 2e30: 7d 50 41 52 4d 79 49 42 49 41 0a 14 00 50 41 52 }PARMyIBIA...PAR 2e40: 4d 70 00 47 45 53 46 a4 53 55 43 43 a0 2d 93 47 Mp.GESF.SUCC.-.G 2e50: 45 53 46 0a 06 70 49 54 56 46 50 41 52 4d 7d 50 ESF..pITVFPARM}P 2e60: 41 52 4d 79 49 54 56 4d 0a 04 00 50 41 52 4d 70 ARMyITVM...PARMp 2e70: 00 47 45 53 46 a4 53 55 43 43 a0 4f 08 93 47 45 .GESF.SUCC.O..GE 2e80: 53 46 0a 07 70 47 49 56 44 50 41 52 4d 7f 50 41 SF..pGIVDPARM.PA 2e90: 52 4d 01 50 41 52 4d 7d 50 41 52 4d 79 47 4d 46 RM.PARM}PARMyGMF 2ea0: 4e 01 00 50 41 52 4d 7d 50 41 52 4d 0b 00 10 50 N..PARM}PARM...P 2eb0: 41 52 4d a0 16 49 44 4d 4d 7d 50 41 52 4d 79 49 ARM..IDMM}PARMyI 2ec0: 44 4d 53 0a 11 00 50 41 52 4d a1 12 7d 50 41 52 DMS...PARM..}PAR 2ed0: 4d 79 49 44 4d 53 0a 0d 00 50 41 52 4d 7d 79 83 MyIDMS...PARM}y. 2ee0: 88 83 88 43 44 43 54 48 56 43 4f 00 74 43 44 56 ...CDCTHVCO.tCDV 2ef0: 4c 01 00 00 0a 15 00 50 41 52 4d 50 41 52 4d 70 L......PARMPARMp 2f00: 01 47 45 53 46 a4 53 55 43 43 a0 2a 93 47 45 53 .GESF.SUCC.*.GES 2f10: 46 0a 0a 70 00 50 41 52 4d a0 10 49 53 53 43 7d F..p.PARM..ISSC} 2f20: 50 41 52 4d 0a 03 50 41 52 4d 70 00 47 45 53 46 PARM..PARMp.GESF 2f30: a4 53 55 43 43 70 00 47 45 53 46 a4 43 52 49 54 .SUCCp.GESF.CRIT 2f40: 14 41 28 53 42 43 42 08 a0 20 93 47 45 53 46 00 .A(SBCB.. .GESF. 2f50: 70 00 50 41 52 4d 70 0b 7d f7 50 41 52 4d 70 00 p.PARMp.}.PARMp. 2f60: 47 45 53 46 a4 53 55 43 43 a0 18 93 47 45 53 46 GESF.SUCC...GESF 2f70: 01 70 00 47 45 53 46 70 00 50 41 52 4d a4 53 55 .p.GESFp.PARM.SU 2f80: 43 43 a0 19 93 47 45 53 46 0a 03 70 00 47 45 53 CC...GESF..p.GES 2f90: 46 70 00 50 41 52 4d a4 53 55 43 43 a0 19 93 47 Fp.PARM.SUCC...G 2fa0: 45 53 46 0a 04 70 00 47 45 53 46 70 00 50 41 52 ESF..p.GESFp.PAR 2fb0: 4d a4 53 55 43 43 a0 19 93 47 45 53 46 0a 05 70 M.SUCC...GESF..p 2fc0: 00 47 45 53 46 70 00 50 41 52 4d a4 53 55 43 43 .GESFp.PARM.SUCC 2fd0: a0 37 93 47 45 53 46 0a 06 70 7b 50 41 52 4d 0a .7.GESF..p{PARM. 2fe0: 0f 00 49 54 56 46 70 7a 7b 50 41 52 4d 0a f0 00 ..ITVFpz{PARM... 2ff0: 0a 04 00 49 54 56 4d 70 00 47 45 53 46 70 00 50 ...ITVMp.GESFp.P 3000: 41 52 4d a4 53 55 43 43 a0 19 93 47 45 53 46 0a ARM.SUCC...GESF. 3010: 07 70 00 47 45 53 46 70 00 50 41 52 4d a4 53 55 .p.GESFp.PARM.SU 3020: 43 43 a0 19 93 47 45 53 46 0a 08 70 00 47 45 53 CC...GESF..p.GES 3030: 46 70 00 50 41 52 4d a4 53 55 43 43 a0 24 93 47 Fp.PARM.SUCC.$.G 3040: 45 53 46 0a 09 7b 50 41 52 4d 0a ff 49 42 54 54 ESF..{PARM..IBTT 3050: 70 00 47 45 53 46 70 00 50 41 52 4d a4 53 55 43 p.GESFp.PARM.SUC 3060: 43 a0 46 05 93 47 45 53 46 0a 0a 7b 50 41 52 4d C.F..GESF..{PARM 3070: 0a ff 49 50 53 43 a0 21 7b 7a 50 41 52 4d 0a 08 ..IPSC.!{zPARM.. 3080: 00 0a ff 00 7b 7a 50 41 52 4d 0a 08 00 0a ff 49 ....{zPARM.....I 3090: 50 41 54 76 49 50 41 54 7b 7a 50 41 52 4d 0a 14 PATvIPAT{zPARM.. 30a0: 00 0a 07 49 42 49 41 70 00 47 45 53 46 70 00 50 ...IBIAp.GESFp.P 30b0: 41 52 4d a4 53 55 43 43 a0 40 06 93 47 45 53 46 ARM.SUCC.@..GESF 30c0: 0a 0b 7b 7a 50 41 52 4d 01 00 01 49 46 31 45 a0 ..{zPARM...IF1E. 30d0: 21 7b 50 41 52 4d 0c 00 e0 01 00 00 7b 7a 50 41 !{PARM......{zPA 30e0: 52 4d 0a 0d 00 0a 0f 49 44 4d 53 70 00 49 44 4d RM.....IDMSp.IDM 30f0: 4d a1 16 7b 7a 50 41 52 4d 0a 11 00 0a 0f 49 44 M..{zPARM.....ID 3100: 4d 53 70 01 49 44 4d 4d 70 00 47 45 53 46 70 00 MSp.IDMMp.GESFp. 3110: 50 41 52 4d a4 53 55 43 43 a0 19 93 47 45 53 46 PARM.SUCC...GESF 3120: 0a 10 70 00 47 45 53 46 70 00 50 41 52 4d a4 53 ..p.GESFp.PARM.S 3130: 55 43 43 a0 1f 93 47 45 53 46 0a 11 7d 50 41 52 UCC...GESF..}PAR 3140: 4d 0b 00 01 50 41 52 4d 70 00 47 45 53 46 a4 53 M...PARMp.GESF.S 3150: 55 43 43 a0 49 04 93 47 45 53 46 0a 12 a0 26 7b UCC.I..GESF...&{ 3160: 50 41 52 4d 01 00 a0 10 93 7a 50 41 52 4d 01 00 PARM.....zPARM.. 3170: 01 70 01 49 53 53 43 a1 0c 70 00 47 45 53 46 a4 .p.ISSC..p.GESF. 3180: 43 52 49 54 a1 07 70 00 49 53 53 43 70 00 47 45 CRIT..p.ISSCp.GE 3190: 53 46 70 00 50 41 52 4d a4 53 55 43 43 a0 19 93 SFp.PARM.SUCC... 31a0: 47 45 53 46 0a 13 70 00 47 45 53 46 70 00 50 41 GESF..p.GESFp.PA 31b0: 52 4d a4 53 55 43 43 70 00 47 45 53 46 a4 53 55 RM.SUCCp.GESF.SU 31c0: 43 43 a0 11 93 47 45 46 43 0a 04 70 47 42 44 41 CC...GEFC..pGBDA 31d0: 47 58 46 43 a0 11 93 47 45 46 43 0a 06 70 53 42 GXFC...GEFC..pSB 31e0: 43 42 47 58 46 43 70 00 47 45 46 43 70 01 53 43 CBGXFCp.GEFCp.SC 31f0: 49 53 70 00 47 53 53 45 70 00 53 43 49 45 a4 00 ISp.GSSEp.SCIE.. 3200: 14 19 50 44 52 44 00 a0 0c 92 44 52 44 59 5b 22 ..PDRD....DRDY[" 3210: 41 53 4c 50 a4 92 44 52 44 59 14 1d 50 53 54 53 ASLP..DRDY..PSTS 3220: 00 a0 0e 94 43 53 54 53 0a 02 5b 22 41 53 4c 50 ....CSTS..["ASLP 3230: a4 93 43 53 54 53 0a 03 14 47 06 47 4e 4f 54 02 ..CSTS...G.GNOT. 3240: a0 07 50 44 52 44 a4 01 a0 07 50 53 54 53 a4 01 ..PDRD....PSTS.. 3250: 70 68 43 45 56 54 70 0a 03 43 53 54 53 a0 2c 90 phCEVTp..CSTS.,. 3260: 93 43 48 50 44 00 93 69 00 a0 18 91 94 4f 53 59 .CHPD..i.....OSY 3270: 53 0b d0 07 95 4f 53 59 53 0b d6 07 86 50 43 49 S....OSYS....PCI 3280: 30 69 a1 07 86 47 46 58 30 69 86 47 46 58 30 0a 0i...GFX0i.GFX0. 3290: 80 a0 0c 92 50 53 54 53 70 00 43 45 56 54 a4 00 ....PSTSp.CEVT.. 32a0: 14 13 47 48 44 53 01 70 68 54 49 44 58 a4 47 4e ..GHDS.phTIDX.GN 32b0: 4f 54 01 00 14 14 47 4c 49 44 01 70 68 43 4c 49 OT....GLID.phCLI 32c0: 44 a4 47 4e 4f 54 0a 02 00 14 15 47 44 43 4b 01 D.GNOT.....GDCK. 32d0: 70 68 43 44 43 4b a4 47 4e 4f 54 0a 04 0a 80 14 phCDCK.GNOT..... 32e0: 19 50 41 52 44 00 a0 0c 92 41 52 44 59 5b 22 41 .PARD....ARDY["A 32f0: 53 4c 50 a4 92 41 52 44 59 14 46 0c 41 49 4e 54 SLP..ARDY.F.AINT 3300: 02 a0 0e 92 7b 54 43 48 45 79 01 68 00 00 a4 01 ....{TCHEy.h.... 3310: a0 07 50 41 52 44 a4 01 a0 4c 05 93 68 0a 02 a0 ..PARD...L..h... 3320: 33 43 50 46 4d a0 0e 93 43 50 46 4d 01 70 0a 06 3CPFM...CPFM.p.. 3330: 50 46 49 54 a0 0f 93 43 50 46 4d 0a 06 70 0a 08 PFIT...CPFM..p.. 3340: 50 46 49 54 a0 0e 93 43 50 46 4d 0a 08 70 01 50 PFIT...CPFM..p.P 3350: 46 49 54 a1 0c 7f 50 46 49 54 0a 07 50 46 49 54 FIT...PFIT..PFIT 3360: 7d 50 46 49 54 0c 00 00 00 80 50 46 49 54 70 0a }PFIT.....PFITp. 3370: 04 41 53 4c 43 a1 42 04 a0 28 93 68 01 70 78 77 .ASLC.B..(.h.pxw 3380: 69 0a ff 00 0a 64 00 00 42 43 4c 50 7d 42 43 4c i....d..BCLP}BCL 3390: 50 0c 00 00 00 80 42 43 4c 50 70 0a 02 41 53 4c P.....BCLPp..ASL 33a0: 43 a1 16 a0 10 93 68 00 70 69 41 4c 53 49 70 01 C.....h.piALSIp. 33b0: 41 53 4c 43 a1 03 a4 01 70 00 4c 42 50 43 a4 00 ASLC....p.LBPC.. 33c0: 10 41 36 5c 00 5b 80 49 4f 5f 54 01 0b 00 08 0a .A6\.[.IO_T..... 33d0: 10 5b 81 0e 49 4f 5f 54 01 00 40 04 54 52 50 30 .[..IO_T..@.TRP0 33e0: 08 5b 80 50 4d 49 4f 01 0b 00 10 0a 80 5b 81 28 .[.PMIO......[.( 33f0: 50 4d 49 4f 01 00 40 15 00 08 00 02 41 43 50 57 PMIO..@.....ACPW 3400: 01 00 45 0b 00 01 47 50 45 43 01 00 4e 10 00 09 ..E...GPEC..N... 3410: 53 43 49 53 01 00 06 5b 80 47 50 49 4f 01 0b 80 SCIS...[.GPIO... 3420: 11 0a 3c 5b 81 40 0c 47 50 49 4f 01 47 55 30 30 ..<[.@.GPIO.GU00 3430: 08 47 55 30 31 08 47 55 30 32 08 47 55 30 33 08 .GU01.GU02.GU03. 3440: 47 49 4f 30 08 47 49 4f 31 08 47 49 4f 32 08 47 GIO0.GIO1.GIO2.G 3450: 49 4f 33 08 00 20 47 4c 30 30 08 47 4c 30 31 08 IO3.. GL00.GL01. 3460: 47 4c 30 32 08 00 03 47 50 32 37 01 47 50 32 38 GL02...GP27.GP28 3470: 01 00 03 00 40 04 47 42 30 30 08 47 42 30 31 08 ....@.GB00.GB01. 3480: 47 42 30 32 08 47 42 30 33 08 00 40 08 47 49 56 GB02.GB03..@.GIV 3490: 30 08 00 03 4c 50 4f 4c 01 00 04 47 49 56 32 08 0...LPOL...GIV2. 34a0: 47 49 56 33 08 47 55 30 34 08 47 55 30 35 08 47 GIV3.GU04.GU05.G 34b0: 55 30 36 08 47 55 30 37 08 47 49 4f 34 08 47 49 U06.GU07.GIO4.GI 34c0: 4f 35 08 47 49 4f 36 08 47 49 4f 37 08 00 05 47 O5.GIO6.GIO7...G 34d0: 50 33 37 01 00 02 47 4c 30 35 08 47 4c 30 36 08 P37...GL05.GL06. 34e0: 47 4c 30 37 08 5b 80 52 43 52 42 00 0c 00 c0 d1 GL07.[.RCRB..... 34f0: fe 0b 00 40 5b 81 48 05 52 43 52 42 13 00 80 00 ...@[.H.RCRB.... 3500: 08 00 80 00 10 00 80 02 02 48 50 41 53 02 00 05 .........HPAS... 3510: 48 50 41 45 01 00 48 09 00 01 50 41 54 44 01 53 HPAE..H...PATD.S 3520: 41 54 44 01 53 4d 42 44 01 48 44 41 44 01 00 0b ATD.SMBD.HDAD... 3530: 52 50 31 44 01 52 50 32 44 01 52 50 33 44 01 52 RP1D.RP2D.RP3D.R 3540: 50 34 44 01 52 50 35 44 01 52 50 36 44 01 08 5f P4D.RP5D.RP6D.._ 3550: 53 30 5f 12 05 03 00 00 00 08 5f 53 33 5f 12 07 S0_......._S3_.. 3560: 03 0a 05 0a 05 00 08 5f 53 34 5f 12 07 03 0a 06 ......._S4_..... 3570: 0a 06 00 08 5f 53 35 5f 12 07 03 0a 07 0a 07 00 ...._S5_........ 3580: 14 45 04 47 45 54 50 09 a0 0e 93 7b 68 0a 09 00 .E.GETP....{h... 3590: 00 a4 0c ff ff ff ff a0 0d 93 7b 68 0a 09 00 0a ..........{h.... 35a0: 08 a4 0b 84 03 7a 7b 68 0b 00 03 00 0a 08 60 7a .....z{h......`z 35b0: 7b 68 0b 00 30 00 0a 0c 61 a4 77 0a 1e 74 0a 09 {h..0...a.w..t.. 35c0: 72 60 61 00 00 00 14 30 47 44 4d 41 0d a0 23 68 r`a....0GDMA..#h 35d0: a0 07 90 69 6c a4 0a 14 a0 0e 90 6a 6c a4 77 74 ...il......jl.wt 35e0: 0a 04 6b 00 0a 0f 00 a4 77 74 0a 04 6b 00 0a 1e ..k.....wt..k... 35f0: 00 a4 0c ff ff ff ff 14 1f 47 45 54 54 09 a4 77 .........GETT..w 3600: 0a 1e 74 0a 09 72 7b 7a 68 0a 02 00 0a 03 00 7b ..t..r{zh......{ 3610: 68 0a 03 00 00 00 00 14 44 06 47 45 54 46 0b 08 h.......D.GETF.. 3620: 54 4d 50 46 00 a0 0c 68 7d 54 4d 50 46 01 54 4d TMPF...h}TMPF.TM 3630: 50 46 a0 11 7b 6a 0a 02 00 7d 54 4d 50 46 0a 02 PF..{j...}TMPF.. 3640: 54 4d 50 46 a0 0d 69 7d 54 4d 50 46 0a 04 54 4d TMPF..i}TMPF..TM 3650: 50 46 a0 11 7b 6a 0a 20 00 7d 54 4d 50 46 0a 08 PF..{j. .}TMPF.. 3660: 54 4d 50 46 a0 12 7b 6a 0b 00 40 00 7d 54 4d 50 TMPF..{j..@.}TMP 3670: 46 0a 10 54 4d 50 46 a4 54 4d 50 46 14 3d 53 45 F..TMPF.TMPF.=SE 3680: 54 50 0b a0 08 94 68 0a f0 a4 0a 08 a1 2d a0 27 TP....h......-.' 3690: 7b 69 0a 02 00 a0 10 90 92 94 68 0a 78 7b 6a 0a {i........h.x{j. 36a0: 02 00 a4 0b 01 23 a0 0f 90 92 94 68 0a b4 7b 6a .....#.....h..{j 36b0: 01 00 a4 0b 01 21 a4 0b 01 10 14 37 53 44 4d 41 .....!.....7SDMA 36c0: 09 a0 08 92 94 68 0a 14 a4 01 a0 09 92 94 68 0a .....h........h. 36d0: 1e a4 0a 02 a0 08 92 94 68 0a 2d a4 01 a0 09 92 ........h.-..... 36e0: 94 68 0a 3c a4 0a 02 a0 08 92 94 68 0a 5a a4 01 .h.<.......h.Z.. 36f0: a4 00 14 2f 53 45 54 54 0b a0 25 7b 69 0a 02 00 .../SETT..%{i... 3700: a0 0f 90 92 94 68 0a 78 7b 6a 0a 02 00 a4 0a 0b .....h.x{j...... 3710: a0 0e 90 92 94 68 0a b4 7b 6a 01 00 a4 0a 09 a4 .....h..{j...... 3720: 0a 04 5b 82 4b 04 48 44 45 46 08 5f 41 44 52 0c ..[.K.HDEF._ADR. 3730: 00 00 1b 00 5b 80 48 44 41 52 02 0a 4c 0a 10 5b ....[.HDAR..L..[ 3740: 81 22 48 44 41 52 02 44 43 4b 41 01 00 07 44 43 ."HDAR.DCKA...DC 3750: 4b 4d 01 00 06 44 43 4b 53 01 00 30 00 0f 50 4d KM...DCKS..0..PM 3760: 45 53 01 08 5f 50 52 57 12 06 02 0a 0d 0a 03 5b ES.._PRW.......[ 3770: 82 41 10 52 50 30 31 08 5f 41 44 52 0c 00 00 1c .A.RP01._ADR.... 3780: 00 5b 80 50 58 43 53 02 0a 40 0a c0 5b 81 45 04 .[.PXCS..@..[.E. 3790: 50 58 43 53 40 00 40 09 00 0d 4c 41 53 58 01 00 PXCS@.@...LASX.. 37a0: 32 41 42 50 58 01 00 02 50 44 43 58 01 00 02 50 2ABPX...PDCX...P 37b0: 44 53 58 01 00 01 4c 53 43 58 01 00 27 00 10 50 DSX...LSCX..'..P 37c0: 53 50 58 01 00 4f 3c 00 1e 48 50 53 58 01 50 4d SPX..O<..HPSX.PM 37d0: 53 58 01 5b 82 0b 50 58 53 58 08 5f 41 44 52 00 SX.[..PXSX._ADR. 37e0: 14 41 09 5f 50 52 54 00 a0 33 47 50 49 43 a4 12 .A._PRT..3GPIC.. 37f0: 2c 04 12 09 04 0b ff ff 00 00 0a 10 12 09 04 0b ,............... 3800: ff ff 01 00 0a 11 12 0a 04 0b ff ff 0a 02 00 0a ................ 3810: 12 12 0a 04 0b ff ff 0a 03 00 0a 13 a1 45 05 a4 .............E.. 3820: 12 41 05 04 12 12 04 0b ff ff 00 5e 5e 2e 4c 50 .A.........^^.LP 3830: 43 42 4c 4e 4b 41 00 12 12 04 0b ff ff 01 5e 5e CBLNKA........^^ 3840: 2e 4c 50 43 42 4c 4e 4b 42 00 12 13 04 0b ff ff .LPCBLNKB....... 3850: 0a 02 5e 5e 2e 4c 50 43 42 4c 4e 4b 43 00 12 13 ..^^.LPCBLNKC... 3860: 04 0b ff ff 0a 03 5e 5e 2e 4c 50 43 42 4c 4e 4b ......^^.LPCBLNK 3870: 44 00 5b 82 41 10 52 50 30 32 08 5f 41 44 52 0c D.[.A.RP02._ADR. 3880: 01 00 1c 00 5b 80 50 58 43 53 02 0a 40 0a c0 5b ....[.PXCS..@..[ 3890: 81 45 04 50 58 43 53 40 00 40 09 00 0d 4c 41 53 .E.PXCS@.@...LAS 38a0: 58 01 00 32 41 42 50 58 01 00 02 50 44 43 58 01 X..2ABPX...PDCX. 38b0: 00 02 50 44 53 58 01 00 01 4c 53 43 58 01 00 27 ..PDSX...LSCX..' 38c0: 00 10 50 53 50 58 01 00 4f 3c 00 1e 48 50 53 58 ..PSPX..O<..HPSX 38d0: 01 50 4d 53 58 01 5b 82 0b 50 58 53 58 08 5f 41 .PMSX.[..PXSX._A 38e0: 44 52 00 14 41 09 5f 50 52 54 00 a0 33 47 50 49 DR..A._PRT..3GPI 38f0: 43 a4 12 2c 04 12 09 04 0b ff ff 00 00 0a 11 12 C..,............ 3900: 09 04 0b ff ff 01 00 0a 12 12 0a 04 0b ff ff 0a ................ 3910: 02 00 0a 13 12 0a 04 0b ff ff 0a 03 00 0a 10 a1 ................ 3920: 45 05 a4 12 41 05 04 12 12 04 0b ff ff 00 5e 5e E...A.........^^ 3930: 2e 4c 50 43 42 4c 4e 4b 42 00 12 12 04 0b ff ff .LPCBLNKB....... 3940: 01 5e 5e 2e 4c 50 43 42 4c 4e 4b 43 00 12 13 04 .^^.LPCBLNKC.... 3950: 0b ff ff 0a 02 5e 5e 2e 4c 50 43 42 4c 4e 4b 44 .....^^.LPCBLNKD 3960: 00 12 13 04 0b ff ff 0a 03 5e 5e 2e 4c 50 43 42 .........^^.LPCB 3970: 4c 4e 4b 41 00 5b 82 4d 11 52 50 30 33 08 5f 41 LNKA.[.M.RP03._A 3980: 44 52 0c 02 00 1c 00 5b 80 50 58 43 53 02 0a 40 DR.....[.PXCS..@ 3990: 0a c0 5b 81 45 04 50 58 43 53 40 00 40 09 00 0d ..[.E.PXCS@.@... 39a0: 4c 41 53 58 01 00 32 41 42 50 58 01 00 02 50 44 LASX..2ABPX...PD 39b0: 43 58 01 00 02 50 44 53 58 01 00 01 4c 53 43 58 CX...PDSX...LSCX 39c0: 01 00 27 00 10 50 53 50 58 01 00 4f 3c 00 1e 48 ..'..PSPX..O<..H 39d0: 50 53 58 01 50 4d 53 58 01 5b 82 0b 50 58 53 58 PSX.PMSX.[..PXSX 39e0: 08 5f 41 44 52 00 08 2e 50 58 53 58 5f 52 4d 56 ._ADR...PXSX_RMV 39f0: 01 08 2e 50 58 53 58 5f 50 52 57 12 06 02 0a 09 ...PXSX_PRW..... 3a00: 0a 03 14 41 09 5f 50 52 54 00 a0 33 47 50 49 43 ...A._PRT..3GPIC 3a10: a4 12 2c 04 12 09 04 0b ff ff 00 00 0a 12 12 09 ..,............. 3a20: 04 0b ff ff 01 00 0a 13 12 0a 04 0b ff ff 0a 02 ................ 3a30: 00 0a 10 12 0a 04 0b ff ff 0a 03 00 0a 11 a1 45 ...............E 3a40: 05 a4 12 41 05 04 12 12 04 0b ff ff 00 5e 5e 2e ...A.........^^. 3a50: 4c 50 43 42 4c 4e 4b 43 00 12 12 04 0b ff ff 01 LPCBLNKC........ 3a60: 5e 5e 2e 4c 50 43 42 4c 4e 4b 44 00 12 13 04 0b ^^.LPCBLNKD..... 3a70: ff ff 0a 02 5e 5e 2e 4c 50 43 42 4c 4e 4b 41 00 ....^^.LPCBLNKA. 3a80: 12 13 04 0b ff ff 0a 03 5e 5e 2e 4c 50 43 42 4c ........^^.LPCBL 3a90: 4e 4b 42 00 5b 82 4f 11 52 50 30 34 08 5f 41 44 NKB.[.O.RP04._AD 3aa0: 52 0c 03 00 1c 00 5b 80 50 58 43 53 02 0a 40 0a R.....[.PXCS..@. 3ab0: c0 5b 81 45 04 50 58 43 53 40 00 40 09 00 0d 4c .[.E.PXCS@.@...L 3ac0: 41 53 58 01 00 32 41 42 50 58 01 00 02 50 44 43 ASX..2ABPX...PDC 3ad0: 58 01 00 02 50 44 53 58 01 00 01 4c 53 43 58 01 X...PDSX...LSCX. 3ae0: 00 27 00 10 50 53 50 58 01 00 4f 3c 00 1e 48 50 .'..PSPX..O<..HP 3af0: 53 58 01 50 4d 53 58 01 5b 82 29 50 58 53 58 08 SX.PMSX.[.)PXSX. 3b00: 5f 41 44 52 00 14 1d 5f 50 52 57 00 a0 0d 57 4b _ADR..._PRW...WK 3b10: 4c 4e a4 12 06 02 0a 09 0a 03 a1 08 a4 12 05 02 LN.............. 3b20: 0a 09 00 14 41 09 5f 50 52 54 00 a0 33 47 50 49 ....A._PRT..3GPI 3b30: 43 a4 12 2c 04 12 09 04 0b ff ff 00 00 0a 13 12 C..,............ 3b40: 09 04 0b ff ff 01 00 0a 10 12 0a 04 0b ff ff 0a ................ 3b50: 02 00 0a 11 12 0a 04 0b ff ff 0a 03 00 0a 12 a1 ................ 3b60: 45 05 a4 12 41 05 04 12 12 04 0b ff ff 00 5e 5e E...A.........^^ 3b70: 2e 4c 50 43 42 4c 4e 4b 44 00 12 12 04 0b ff ff .LPCBLNKD....... 3b80: 01 5e 5e 2e 4c 50 43 42 4c 4e 4b 41 00 12 13 04 .^^.LPCBLNKA.... 3b90: 0b ff ff 0a 02 5e 5e 2e 4c 50 43 42 4c 4e 4b 42 .....^^.LPCBLNKB 3ba0: 00 12 13 04 0b ff ff 0a 03 5e 5e 2e 4c 50 43 42 .........^^.LPCB 3bb0: 4c 4e 4b 43 00 5b 82 41 10 52 50 30 35 08 5f 41 LNKC.[.A.RP05._A 3bc0: 44 52 0c 04 00 1c 00 5b 80 50 58 43 53 02 0a 40 DR.....[.PXCS..@ 3bd0: 0a c0 5b 81 45 04 50 58 43 53 40 00 40 09 00 0d ..[.E.PXCS@.@... 3be0: 4c 41 53 58 01 00 32 41 42 50 58 01 00 02 50 44 LASX..2ABPX...PD 3bf0: 43 58 01 00 02 50 44 53 58 01 00 01 4c 53 43 58 CX...PDSX...LSCX 3c00: 01 00 27 00 10 50 53 50 58 01 00 4f 3c 00 1e 48 ..'..PSPX..O<..H 3c10: 50 53 58 01 50 4d 53 58 01 5b 82 0b 50 58 53 58 PSX.PMSX.[..PXSX 3c20: 08 5f 41 44 52 00 14 41 09 5f 50 52 54 00 a0 33 ._ADR..A._PRT..3 3c30: 47 50 49 43 a4 12 2c 04 12 09 04 0b ff ff 00 00 GPIC..,......... 3c40: 0a 10 12 09 04 0b ff ff 01 00 0a 11 12 0a 04 0b ................ 3c50: ff ff 0a 02 00 0a 12 12 0a 04 0b ff ff 0a 03 00 ................ 3c60: 0a 13 a1 45 05 a4 12 41 05 04 12 12 04 0b ff ff ...E...A........ 3c70: 00 5e 5e 2e 4c 50 43 42 4c 4e 4b 41 00 12 12 04 .^^.LPCBLNKA.... 3c80: 0b ff ff 01 5e 5e 2e 4c 50 43 42 4c 4e 4b 42 00 ....^^.LPCBLNKB. 3c90: 12 13 04 0b ff ff 0a 02 5e 5e 2e 4c 50 43 42 4c ........^^.LPCBL 3ca0: 4e 4b 43 00 12 13 04 0b ff ff 0a 03 5e 5e 2e 4c NKC.........^^.L 3cb0: 50 43 42 4c 4e 4b 44 00 5b 82 41 10 52 50 30 36 PCBLNKD.[.A.RP06 3cc0: 08 5f 41 44 52 0c 05 00 1c 00 5b 80 50 58 43 53 ._ADR.....[.PXCS 3cd0: 02 0a 40 0a c0 5b 81 45 04 50 58 43 53 40 00 40 ..@..[.E.PXCS@.@ 3ce0: 09 00 0d 4c 41 53 58 01 00 32 41 42 50 58 01 00 ...LASX..2ABPX.. 3cf0: 02 50 44 43 58 01 00 02 50 44 53 58 01 00 01 4c .PDCX...PDSX...L 3d00: 53 43 58 01 00 27 00 10 50 53 50 58 01 00 4f 3c SCX..'..PSPX..O< 3d10: 00 1e 48 50 53 58 01 50 4d 53 58 01 5b 82 0b 50 ..HPSX.PMSX.[..P 3d20: 58 53 58 08 5f 41 44 52 00 14 41 09 5f 50 52 54 XSX._ADR..A._PRT 3d30: 00 a0 33 47 50 49 43 a4 12 2c 04 12 09 04 0b ff ..3GPIC..,...... 3d40: ff 00 00 0a 11 12 09 04 0b ff ff 01 00 0a 12 12 ................ 3d50: 0a 04 0b ff ff 0a 02 00 0a 13 12 0a 04 0b ff ff ................ 3d60: 0a 03 00 0a 10 a1 45 05 a4 12 41 05 04 12 12 04 ......E...A..... 3d70: 0b ff ff 00 5e 5e 2e 4c 50 43 42 4c 4e 4b 42 00 ....^^.LPCBLNKB. 3d80: 12 12 04 0b ff ff 01 5e 5e 2e 4c 50 43 42 4c 4e .......^^.LPCBLN 3d90: 4b 43 00 12 13 04 0b ff ff 0a 02 5e 5e 2e 4c 50 KC.........^^.LP 3da0: 43 42 4c 4e 4b 44 00 12 13 04 0b ff ff 0a 03 5e CBLNKD.........^ 3db0: 5e 2e 4c 50 43 42 4c 4e 4b 41 00 5b 82 4d 06 55 ^.LPCBLNKA.[.M.U 3dc0: 53 42 31 08 5f 41 44 52 0c 00 00 1d 00 5b 80 55 SB1._ADR.....[.U 3dd0: 31 43 53 02 0a c4 0a 04 5b 81 0b 55 31 43 53 03 1CS.....[..U1CS. 3de0: 55 31 45 4e 02 08 5f 50 52 57 12 06 02 0a 03 0a U1EN.._PRW...... 3df0: 03 14 24 5f 50 53 57 01 a0 15 68 70 01 41 43 50 ..$_PSW...hp.ACP 3e00: 57 a0 0c 41 43 50 57 70 0a 03 55 31 45 4e a1 07 W..ACPWp..U1EN.. 3e10: 70 00 55 31 45 4e 14 09 5f 53 33 44 00 a4 0a 02 p.U1EN.._S3D.... 3e20: 14 09 5f 53 34 44 00 a4 0a 02 5b 82 4c 06 55 53 .._S4D....[.L.US 3e30: 42 32 08 5f 41 44 52 0c 01 00 1d 00 5b 80 55 32 B2._ADR.....[.U2 3e40: 43 53 02 0a c4 0a 04 5b 81 0b 55 32 43 53 03 55 CS.....[..U2CS.U 3e50: 32 45 4e 02 08 5f 50 52 57 12 06 02 0a 04 0a 03 2EN.._PRW....... 3e60: 14 23 5f 50 53 57 01 a0 14 68 70 01 41 43 50 57 .#_PSW...hp.ACPW 3e70: a0 0b 41 43 50 57 70 01 55 32 45 4e a1 07 70 00 ..ACPWp.U2EN..p. 3e80: 55 32 45 4e 14 09 5f 53 33 44 00 a4 0a 02 14 09 U2EN.._S3D...... 3e90: 5f 53 34 44 00 a4 0a 02 5b 82 4d 06 55 53 42 33 _S4D....[.M.USB3 3ea0: 08 5f 41 44 52 0c 02 00 1d 00 5b 80 55 32 43 53 ._ADR.....[.U2CS 3eb0: 02 0a c4 0a 04 5b 81 0b 55 32 43 53 03 55 33 45 .....[..U2CS.U3E 3ec0: 4e 02 08 5f 50 52 57 12 06 02 0a 0c 0a 03 14 24 N.._PRW........$ 3ed0: 5f 50 53 57 01 a0 15 68 70 01 41 43 50 57 a0 0c _PSW...hp.ACPW.. 3ee0: 41 43 50 57 70 0a 03 55 33 45 4e a1 07 70 00 55 ACPWp..U3EN..p.U 3ef0: 33 45 4e 14 09 5f 53 33 44 00 a4 0a 02 14 09 5f 3EN.._S3D......_ 3f00: 53 34 44 00 a4 0a 02 5b 82 4d 06 55 53 42 34 08 S4D....[.M.USB4. 3f10: 5f 41 44 52 0c 00 00 1a 00 5b 80 55 34 43 53 02 _ADR.....[.U4CS. 3f20: 0a c4 0a 04 5b 81 0b 55 34 43 53 03 55 34 45 4e ....[..U4CS.U4EN 3f30: 02 08 5f 50 52 57 12 06 02 0a 0e 0a 03 14 24 5f .._PRW........$_ 3f40: 50 53 57 01 a0 15 68 70 01 41 43 50 57 a0 0c 41 PSW...hp.ACPW..A 3f50: 43 50 57 70 0a 03 55 34 45 4e a1 07 70 00 55 34 CPWp..U4EN..p.U4 3f60: 45 4e 14 09 5f 53 33 44 00 a4 0a 02 14 09 5f 53 EN.._S3D......_S 3f70: 34 44 00 a4 0a 02 5b 82 41 06 55 53 42 35 08 5f 4D....[.A.USB5._ 3f80: 41 44 52 0c 01 00 1a 00 5b 80 55 35 43 53 02 0a ADR.....[.U5CS.. 3f90: c4 0a 04 5b 81 0b 55 35 43 53 03 55 35 45 4e 02 ...[..U5CS.U5EN. 3fa0: 14 24 5f 50 53 57 01 a0 15 68 70 01 41 43 50 57 .$_PSW...hp.ACPW 3fb0: a0 0c 41 43 50 57 70 0a 03 55 35 45 4e a1 07 70 ..ACPWp..U5EN..p 3fc0: 00 55 35 45 4e 14 09 5f 53 33 44 00 a4 0a 02 14 .U5EN.._S3D..... 3fd0: 09 5f 53 34 44 00 a4 0a 02 5b 82 4b 0a 45 48 43 ._S4D....[.K.EHC 3fe0: 31 08 5f 41 44 52 0c 07 00 1d 00 5b 80 55 37 43 1._ADR.....[.U7C 3ff0: 53 02 0a 54 0a 04 5b 81 0d 55 37 43 53 03 00 0f S..T..[..U7CS... 4000: 50 4d 45 53 01 5b 82 4f 05 48 55 42 37 08 5f 41 PMES.[.O.HUB7._A 4010: 44 52 00 5b 82 0b 50 52 54 31 08 5f 41 44 52 01 DR.[..PRT1._ADR. 4020: 5b 82 0c 50 52 54 32 08 5f 41 44 52 0a 02 5b 82 [..PRT2._ADR..[. 4030: 0c 50 52 54 33 08 5f 41 44 52 0a 03 5b 82 0c 50 .PRT3._ADR..[..P 4040: 52 54 34 08 5f 41 44 52 0a 04 5b 82 0c 50 52 54 RT4._ADR..[..PRT 4050: 35 08 5f 41 44 52 0a 05 5b 82 0c 50 52 54 36 08 5._ADR..[..PRT6. 4060: 5f 41 44 52 0a 06 08 5f 50 52 57 12 06 02 0a 0d _ADR..._PRW..... 4070: 0a 03 14 09 5f 53 33 44 00 a4 0a 02 14 09 5f 53 ...._S3D......_S 4080: 34 44 00 a4 0a 02 5b 82 4f 08 45 48 43 32 08 5f 4D....[.O.EHC2._ 4090: 41 44 52 0c 07 00 1a 00 5b 80 55 46 43 53 02 0a ADR.....[.UFCS.. 40a0: 54 0a 04 5b 81 0d 55 46 43 53 03 00 0f 50 4d 45 T..[..UFCS...PME 40b0: 53 01 5b 82 43 04 48 55 42 37 08 5f 41 44 52 00 S.[.C.HUB7._ADR. 40c0: 5b 82 0b 50 52 54 31 08 5f 41 44 52 01 5b 82 0c [..PRT1._ADR.[.. 40d0: 50 52 54 32 08 5f 41 44 52 0a 02 5b 82 0c 50 52 PRT2._ADR..[..PR 40e0: 54 33 08 5f 41 44 52 0a 03 5b 82 0c 50 52 54 34 T3._ADR..[..PRT4 40f0: 08 5f 41 44 52 0a 04 08 5f 50 52 57 12 06 02 0a ._ADR..._PRW.... 4100: 0d 0a 03 14 09 5f 53 33 44 00 a4 0a 02 14 09 5f ....._S3D......_ 4110: 53 34 44 00 a4 0a 02 5b 82 4a 06 50 43 49 42 08 S4D....[.J.PCIB. 4120: 5f 41 44 52 0c 00 00 1e 00 14 49 05 5f 50 52 54 _ADR......I._PRT 4130: 00 a0 21 47 50 49 43 a4 12 1a 02 12 0b 04 0c ff ..!GPIC......... 4140: ff 06 00 00 00 0a 16 12 0b 04 0c ff ff 06 00 01 ................ 4150: 00 0a 17 a1 2f a4 12 2c 02 12 14 04 0c ff ff 06 ..../..,........ 4160: 00 00 5e 5e 2e 4c 50 43 42 4c 4e 4b 47 00 12 14 ..^^.LPCBLNKG... 4170: 04 0c ff ff 06 00 01 5e 5e 2e 4c 50 43 42 4c 4e .......^^.LPCBLN 4180: 4b 48 00 5b 82 8d 2e 01 4c 50 43 42 08 5f 41 44 KH.[....LPCB._AD 4190: 52 0c 00 00 1f 00 5b 80 4c 50 43 30 02 0a 40 0a R.....[.LPC0..@. 41a0: c0 5b 81 4d 07 4c 50 43 30 00 00 40 10 50 41 52 .[.M.LPC0..@.PAR 41b0: 43 08 50 42 52 43 08 50 43 52 43 08 50 44 52 43 C.PBRC.PCRC.PDRC 41c0: 08 00 20 50 45 52 43 08 50 46 52 43 08 50 47 52 .. PERC.PFRC.PGR 41d0: 43 08 50 48 52 43 08 00 40 0a 43 4d 41 52 03 00 C.PHRC..@.CMAR.. 41e0: 01 43 4d 42 52 03 00 01 4c 50 54 52 02 00 06 43 .CMBR...LPTR...C 41f0: 4d 41 44 01 43 4d 42 44 01 4c 50 54 44 01 46 44 MAD.CMBD.LPTD.FD 4200: 44 44 01 00 2c 49 4f 52 32 10 00 02 4c 47 52 4d DD..,IOR2...LGRM 4210: 06 00 48 32 52 41 45 4e 01 00 0d 52 43 42 41 12 ..H2RAEN...RCBA. 4220: 5b 80 53 4d 49 30 01 0c 00 fe 00 00 0c 02 00 00 [.SMI0.......... 4230: 00 5b 81 0b 53 4d 49 30 00 53 4d 49 43 08 5b 80 .[..SMI0.SMIC.[. 4240: 53 4d 49 31 00 0c bd 2e 6e bf 0c 90 00 00 00 5b SMI1....n......[ 4250: 81 16 53 4d 49 31 00 42 43 4d 44 08 44 49 44 5f ..SMI1.BCMD.DID_ 4260: 20 49 4e 46 4f 40 40 5b 81 15 53 4d 49 31 00 01 INFO@@[..SMI1.. 4270: 01 00 00 28 49 4e 46 5f 08 49 4e 46 31 20 5b 01 ...(INF_.INF1 [. 4280: 50 53 4d 58 00 14 27 50 48 53 53 01 5b 23 50 53 PSMX..'PHSS.[#PS 4290: 4d 58 ff ff 70 0a 80 42 43 4d 44 70 68 44 49 44 MX..p..BCMDphDID 42a0: 5f 70 00 53 4d 49 43 5b 27 50 53 4d 58 5b 82 41 _p.SMIC['PSMX[.A 42b0: 0a 4c 4e 4b 41 08 5f 48 49 44 0c 41 d0 0c 0f 08 .LNKA._HID.A.... 42c0: 5f 55 49 44 01 14 0d 5f 44 49 53 08 70 0a 80 50 _UID..._DIS.p..P 42d0: 41 52 43 08 5f 50 52 53 11 09 0a 06 23 fa d4 18 ARC._PRS....#... 42e0: 79 00 14 38 5f 43 52 53 08 08 52 54 4c 41 11 09 y..8_CRS..RTLA.. 42f0: 0a 06 23 00 00 18 79 00 8b 52 54 4c 41 01 49 52 ..#...y..RTLA.IR 4300: 51 30 70 00 49 52 51 30 79 01 7b 50 41 52 43 0a Q0p.IRQ0y.{PARC. 4310: 0f 00 49 52 51 30 a4 52 54 4c 41 14 1b 5f 53 52 ..IRQ0.RTLA.._SR 4320: 53 09 8b 68 01 49 52 51 30 82 49 52 51 30 60 76 S..h.IRQ0.IRQ0`v 4330: 60 70 60 50 41 52 43 14 18 5f 53 54 41 08 a0 0c `p`PARC.._STA... 4340: 7b 50 41 52 43 0a 80 00 a4 0a 09 a1 04 a4 0a 0b {PARC........... 4350: 5b 82 42 0a 4c 4e 4b 42 08 5f 48 49 44 0c 41 d0 [.B.LNKB._HID.A. 4360: 0c 0f 08 5f 55 49 44 0a 02 14 0d 5f 44 49 53 08 ..._UID...._DIS. 4370: 70 0a 80 50 42 52 43 08 5f 50 52 53 11 09 0a 06 p..PBRC._PRS.... 4380: 23 fa d8 18 79 00 14 38 5f 43 52 53 08 08 52 54 #...y..8_CRS..RT 4390: 4c 42 11 09 0a 06 23 00 00 18 79 00 8b 52 54 4c LB....#...y..RTL 43a0: 42 01 49 52 51 30 70 00 49 52 51 30 79 01 7b 50 B.IRQ0p.IRQ0y.{P 43b0: 42 52 43 0a 0f 00 49 52 51 30 a4 52 54 4c 42 14 BRC...IRQ0.RTLB. 43c0: 1b 5f 53 52 53 09 8b 68 01 49 52 51 30 82 49 52 ._SRS..h.IRQ0.IR 43d0: 51 30 60 76 60 70 60 50 42 52 43 14 18 5f 53 54 Q0`v`p`PBRC.._ST 43e0: 41 08 a0 0c 7b 50 42 52 43 0a 80 00 a4 0a 09 a1 A...{PBRC....... 43f0: 04 a4 0a 0b 5b 82 42 0a 4c 4e 4b 43 08 5f 48 49 ....[.B.LNKC._HI 4400: 44 0c 41 d0 0c 0f 08 5f 55 49 44 0a 03 14 0d 5f D.A...._UID...._ 4410: 44 49 53 08 70 0a 80 50 43 52 43 08 5f 50 52 53 DIS.p..PCRC._PRS 4420: 11 09 0a 06 23 fa d4 18 79 00 14 38 5f 43 52 53 ....#...y..8_CRS 4430: 08 08 52 54 4c 43 11 09 0a 06 23 00 00 18 79 00 ..RTLC....#...y. 4440: 8b 52 54 4c 43 01 49 52 51 30 70 00 49 52 51 30 .RTLC.IRQ0p.IRQ0 4450: 79 01 7b 50 43 52 43 0a 0f 00 49 52 51 30 a4 52 y.{PCRC...IRQ0.R 4460: 54 4c 43 14 1b 5f 53 52 53 09 8b 68 01 49 52 51 TLC.._SRS..h.IRQ 4470: 30 82 49 52 51 30 60 76 60 70 60 50 43 52 43 14 0.IRQ0`v`p`PCRC. 4480: 18 5f 53 54 41 08 a0 0c 7b 50 43 52 43 0a 80 00 ._STA...{PCRC... 4490: a4 0a 09 a1 04 a4 0a 0b 5b 82 42 0a 4c 4e 4b 44 ........[.B.LNKD 44a0: 08 5f 48 49 44 0c 41 d0 0c 0f 08 5f 55 49 44 0a ._HID.A...._UID. 44b0: 04 14 0d 5f 44 49 53 08 70 0a 80 50 44 52 43 08 ..._DIS.p..PDRC. 44c0: 5f 50 52 53 11 09 0a 06 23 fa d8 18 79 00 14 38 _PRS....#...y..8 44d0: 5f 43 52 53 08 08 52 54 4c 44 11 09 0a 06 23 00 _CRS..RTLD....#. 44e0: 00 18 79 00 8b 52 54 4c 44 01 49 52 51 30 70 00 ..y..RTLD.IRQ0p. 44f0: 49 52 51 30 79 01 7b 50 44 52 43 0a 0f 00 49 52 IRQ0y.{PDRC...IR 4500: 51 30 a4 52 54 4c 44 14 1b 5f 53 52 53 09 8b 68 Q0.RTLD.._SRS..h 4510: 01 49 52 51 30 82 49 52 51 30 60 76 60 70 60 50 .IRQ0.IRQ0`v`p`P 4520: 44 52 43 14 18 5f 53 54 41 08 a0 0c 7b 50 44 52 DRC.._STA...{PDR 4530: 43 0a 80 00 a4 0a 09 a1 04 a4 0a 0b 5b 82 42 0a C...........[.B. 4540: 4c 4e 4b 45 08 5f 48 49 44 0c 41 d0 0c 0f 08 5f LNKE._HID.A...._ 4550: 55 49 44 0a 05 14 0d 5f 44 49 53 08 70 0a 80 50 UID...._DIS.p..P 4560: 45 52 43 08 5f 50 52 53 11 09 0a 06 23 fa d4 18 ERC._PRS....#... 4570: 79 00 14 38 5f 43 52 53 08 08 52 54 4c 45 11 09 y..8_CRS..RTLE.. 4580: 0a 06 23 00 00 18 79 00 8b 52 54 4c 45 01 49 52 ..#...y..RTLE.IR 4590: 51 30 70 00 49 52 51 30 79 01 7b 50 45 52 43 0a Q0p.IRQ0y.{PERC. 45a0: 0f 00 49 52 51 30 a4 52 54 4c 45 14 1b 5f 53 52 ..IRQ0.RTLE.._SR 45b0: 53 09 8b 68 01 49 52 51 30 82 49 52 51 30 60 76 S..h.IRQ0.IRQ0`v 45c0: 60 70 60 50 45 52 43 14 18 5f 53 54 41 08 a0 0c `p`PERC.._STA... 45d0: 7b 50 45 52 43 0a 80 00 a4 0a 09 a1 04 a4 0a 0b {PERC........... 45e0: 5b 82 42 0a 4c 4e 4b 46 08 5f 48 49 44 0c 41 d0 [.B.LNKF._HID.A. 45f0: 0c 0f 08 5f 55 49 44 0a 06 14 0d 5f 44 49 53 08 ..._UID...._DIS. 4600: 70 0a 80 50 46 52 43 08 5f 50 52 53 11 09 0a 06 p..PFRC._PRS.... 4610: 23 fa d8 18 79 00 14 38 5f 43 52 53 08 08 52 54 #...y..8_CRS..RT 4620: 4c 46 11 09 0a 06 23 00 00 18 79 00 8b 52 54 4c LF....#...y..RTL 4630: 46 01 49 52 51 30 70 00 49 52 51 30 79 01 7b 50 F.IRQ0p.IRQ0y.{P 4640: 46 52 43 0a 0f 00 49 52 51 30 a4 52 54 4c 46 14 FRC...IRQ0.RTLF. 4650: 1b 5f 53 52 53 09 8b 68 01 49 52 51 30 82 49 52 ._SRS..h.IRQ0.IR 4660: 51 30 60 76 60 70 60 50 46 52 43 14 18 5f 53 54 Q0`v`p`PFRC.._ST 4670: 41 08 a0 0c 7b 50 46 52 43 0a 80 00 a4 0a 09 a1 A...{PFRC....... 4680: 04 a4 0a 0b 5b 82 42 0a 4c 4e 4b 47 08 5f 48 49 ....[.B.LNKG._HI 4690: 44 0c 41 d0 0c 0f 08 5f 55 49 44 0a 07 14 0d 5f D.A...._UID...._ 46a0: 44 49 53 08 70 0a 80 50 47 52 43 08 5f 50 52 53 DIS.p..PGRC._PRS 46b0: 11 09 0a 06 23 fa d4 18 79 00 14 38 5f 43 52 53 ....#...y..8_CRS 46c0: 08 08 52 54 4c 47 11 09 0a 06 23 00 00 18 79 00 ..RTLG....#...y. 46d0: 8b 52 54 4c 47 01 49 52 51 30 70 00 49 52 51 30 .RTLG.IRQ0p.IRQ0 46e0: 79 01 7b 50 47 52 43 0a 0f 00 49 52 51 30 a4 52 y.{PGRC...IRQ0.R 46f0: 54 4c 47 14 1b 5f 53 52 53 09 8b 68 01 49 52 51 TLG.._SRS..h.IRQ 4700: 30 82 49 52 51 30 60 76 60 70 60 50 47 52 43 14 0.IRQ0`v`p`PGRC. 4710: 18 5f 53 54 41 08 a0 0c 7b 50 47 52 43 0a 80 00 ._STA...{PGRC... 4720: a4 0a 09 a1 04 a4 0a 0b 5b 82 42 0a 4c 4e 4b 48 ........[.B.LNKH 4730: 08 5f 48 49 44 0c 41 d0 0c 0f 08 5f 55 49 44 0a ._HID.A...._UID. 4740: 08 14 0d 5f 44 49 53 08 70 0a 80 50 48 52 43 08 ..._DIS.p..PHRC. 4750: 5f 50 52 53 11 09 0a 06 23 fa d8 18 79 00 14 38 _PRS....#...y..8 4760: 5f 43 52 53 08 08 52 54 4c 48 11 09 0a 06 23 00 _CRS..RTLH....#. 4770: 00 18 79 00 8b 52 54 4c 48 01 49 52 51 30 70 00 ..y..RTLH.IRQ0p. 4780: 49 52 51 30 79 01 7b 50 48 52 43 0a 0f 00 49 52 IRQ0y.{PHRC...IR 4790: 51 30 a4 52 54 4c 48 14 1b 5f 53 52 53 09 8b 68 Q0.RTLH.._SRS..h 47a0: 01 49 52 51 30 82 49 52 51 30 60 76 60 70 60 50 .IRQ0.IRQ0`v`p`P 47b0: 48 52 43 14 18 5f 53 54 41 08 a0 0c 7b 50 48 52 HRC.._STA...{PHR 47c0: 43 0a 80 00 a4 0a 09 a1 04 a4 0a 0b 5b 82 3d 44 C...........[.=D 47d0: 4d 41 43 08 5f 48 49 44 0c 41 d0 02 00 08 5f 43 MAC._HID.A...._C 47e0: 52 53 11 28 0a 25 47 01 00 00 00 00 01 20 47 01 RS.(.%G...... G. 47f0: 81 00 81 00 01 11 47 01 93 00 93 00 01 0d 47 01 ......G.......G. 4800: c0 00 c0 00 01 20 2a 10 01 79 00 5b 82 26 46 57 ..... *..y.[.&FW 4810: 48 44 08 5f 48 49 44 0c 25 d4 08 00 08 5f 43 52 HD._HID.%...._CR 4820: 53 11 11 0a 0e 86 09 00 00 00 00 00 ff 00 00 00 S............... 4830: 01 79 00 5b 82 40 0b 48 50 45 54 08 5f 48 49 44 .y.[.@.HPET._HID 4840: 0c 41 d0 01 03 08 5f 43 49 44 0c 41 d0 0c 01 08 .A...._CID.A.... 4850: 42 55 46 30 11 11 0a 0e 86 09 00 00 00 00 d0 fe BUF0............ 4860: 00 04 00 00 79 00 14 27 5f 53 54 41 00 a0 13 92 ....y..'_STA.... 4870: 95 4f 53 59 53 0b d1 07 a0 08 48 50 41 45 a4 0a .OSYS.....HPAE.. 4880: 0f a1 0a a0 08 48 50 41 45 a4 0a 0b a4 00 14 46 .....HPAE......F 4890: 05 5f 43 52 53 08 a0 49 04 48 50 41 45 8a 42 55 ._CRS..I.HPAE.BU 48a0: 46 30 0a 04 48 50 54 30 a0 11 93 48 50 41 53 01 F0..HPT0...HPAS. 48b0: 70 0c 00 10 d0 fe 48 50 54 30 a0 12 93 48 50 41 p.....HPT0...HPA 48c0: 53 0a 02 70 0c 00 20 d0 fe 48 50 54 30 a0 12 93 S..p.. ..HPT0... 48d0: 48 50 41 53 0a 03 70 0c 00 30 d0 fe 48 50 54 30 HPAS..p..0..HPT0 48e0: a4 42 55 46 30 5b 82 45 0a 49 50 49 43 08 5f 48 .BUF0[.E.IPIC._H 48f0: 49 44 0b 41 d0 08 5f 43 52 53 11 41 09 0a 8d 47 ID.A.._CRS.A...G 4900: 01 20 00 20 00 01 02 47 01 24 00 24 00 01 02 47 . . ...G.$.$...G 4910: 01 28 00 28 00 01 02 47 01 2c 00 2c 00 01 02 47 .(.(...G.,.,...G 4920: 01 30 00 30 00 01 02 47 01 34 00 34 00 01 02 47 .0.0...G.4.4...G 4930: 01 38 00 38 00 01 02 47 01 3c 00 3c 00 01 02 47 .8.8...G.<.<...G 4940: 01 a0 00 a0 00 01 02 47 01 a4 00 a4 00 01 02 47 .......G.......G 4950: 01 a8 00 a8 00 01 02 47 01 ac 00 ac 00 01 02 47 .......G.......G 4960: 01 b0 00 b0 00 01 02 47 01 b4 00 b4 00 01 02 47 .......G.......G 4970: 01 b8 00 b8 00 01 02 47 01 bc 00 bc 00 01 02 47 .......G.......G 4980: 01 d0 04 d0 04 01 02 22 04 00 79 00 5b 82 25 4d ......."..y.[.%M 4990: 41 54 48 08 5f 48 49 44 0c 41 d0 0c 04 08 5f 43 ATH._HID.A...._C 49a0: 52 53 11 10 0a 0d 47 01 f0 00 f0 00 01 01 22 00 RS....G.......". 49b0: 20 79 00 5b 82 4b 09 4c 44 52 43 08 5f 48 49 44 y.[.K.LDRC._HID 49c0: 0c 41 d0 0c 02 08 5f 55 49 44 0a 02 08 5f 43 52 .A...._UID..._CR 49d0: 53 11 4e 07 0a 7a 47 01 2e 00 2e 00 01 02 47 01 S.N..zG.......G. 49e0: 4e 00 4e 00 01 02 47 01 61 00 61 00 01 01 47 01 N.N...G.a.a...G. 49f0: 63 00 63 00 01 01 47 01 65 00 65 00 01 01 47 01 c.c...G.e.e...G. 4a00: 67 00 67 00 01 01 47 01 80 00 80 00 01 01 47 01 g.g...G.......G. 4a10: 92 00 92 00 01 01 47 01 b2 00 b2 00 01 02 47 01 ......G.......G. 4a20: 80 06 80 06 01 20 47 01 00 08 00 08 01 10 47 01 ..... G.......G. 4a30: 00 10 00 10 01 80 47 01 80 11 80 11 01 40 47 01 ......G......@G. 4a40: 00 fe 00 fe 01 01 47 01 00 ff 00 ff 01 80 79 00 ......G.......y. 4a50: 5b 82 25 52 54 43 5f 08 5f 48 49 44 0c 41 d0 0b [.%RTC_._HID.A.. 4a60: 00 08 5f 43 52 53 11 10 0a 0d 47 01 70 00 70 00 .._CRS....G.p.p. 4a70: 01 08 22 00 01 79 00 5b 82 2d 54 49 4d 52 08 5f .."..y.[.-TIMR._ 4a80: 48 49 44 0c 41 d0 01 00 08 5f 43 52 53 11 18 0a HID.A...._CRS... 4a90: 15 47 01 40 00 40 00 01 04 47 01 50 00 50 00 10 .G.@.@...G.P.P.. 4aa0: 04 22 01 00 79 00 5b 82 32 41 43 41 44 08 5f 48 ."..y.[.2ACAD._H 4ab0: 49 44 0d 41 43 50 49 30 30 30 33 00 08 5f 50 43 ID.ACPI0003.._PC 4ac0: 4c 12 06 01 5f 53 42 5f 14 11 5f 50 53 52 00 70 L..._SB_.._PSR.p 4ad0: 01 41 43 50 57 a4 41 43 50 57 14 1a 45 43 4f 4b .ACPW.ACPW..ECOK 4ae0: 00 a0 0f 93 5e 2e 45 43 30 5f 5a 30 30 39 01 a4 ....^.EC0_Z009.. 4af0: 01 a1 03 a4 00 5b 82 4e 6f 45 43 30 5f 08 5f 48 .....[.NoEC0_._H 4b00: 49 44 0c 41 d0 0c 09 08 5f 47 50 45 0a 1c 08 5a ID.A...._GPE...Z 4b10: 30 30 39 00 08 5f 43 52 53 11 15 0a 12 47 01 62 009.._CRS....G.b 4b20: 00 62 00 01 01 47 01 66 00 66 00 01 01 79 00 14 .b...G.f.f...y.. 4b30: 3b 5f 52 45 47 02 a0 34 93 68 0a 03 70 69 5a 30 ;_REG..4.h..piZ0 4b40: 30 39 a0 28 5b 12 5f 4f 53 49 60 70 00 42 54 44 09.([._OSI`p.BTD 4b50: 53 a0 19 5f 4f 53 49 0d 57 69 6e 64 6f 77 73 20 S.._OSI.Windows 4b60: 32 30 30 36 00 70 01 42 54 44 53 5b 80 45 52 41 2006.p.BTDS[.ERA 4b70: 4d 03 00 0a ff 5b 81 4e 2e 45 52 41 4d 11 00 40 M....[.N.ERAM..@ 4b80: 30 53 4d 50 52 08 53 4d 53 54 08 53 4d 41 44 08 0SMPR.SMST.SMAD. 4b90: 53 4d 43 4d 08 53 4d 44 30 40 10 42 43 4e 54 08 SMCM.SMD0@.BCNT. 4ba0: 53 4d 41 41 18 00 40 04 43 48 47 4d 10 43 48 47 SMAA..@.CHGM.CHG 4bb0: 53 10 45 4e 49 44 08 45 4e 49 42 08 45 4e 44 44 S.ENID.ENIB.ENDD 4bc0: 08 43 48 47 56 08 43 48 47 41 10 42 41 4c 30 01 .CHGV.CHGA.BAL0. 4bd0: 42 41 4c 31 01 42 41 4c 32 01 42 41 4c 33 01 42 BAL1.BAL2.BAL3.B 4be0: 42 43 30 01 42 42 43 31 01 42 42 43 32 01 42 42 BC0.BBC1.BBC2.BB 4bf0: 43 33 01 00 08 50 48 44 44 01 49 46 44 44 01 49 C3...PHDD.IFDD.I 4c00: 4f 44 44 01 53 48 44 44 01 53 31 32 30 01 45 46 ODD.SHDD.S120.EF 4c10: 44 44 01 43 52 54 44 01 53 50 57 52 01 53 42 54 DD.CRTD.SPWR.SBT 4c20: 4e 01 56 49 44 4f 01 56 4f 4c 44 01 56 4f 4c 55 N.VIDO.VOLD.VOLU 4c30: 01 4d 55 54 45 01 43 4f 4e 54 01 42 52 47 54 01 .MUTE.CONT.BRGT. 4c40: 48 42 54 4e 01 53 34 53 54 01 53 4b 45 59 01 42 HBTN.S4ST.SKEY.B 4c50: 4b 45 59 01 54 4f 55 50 01 46 4e 42 4e 01 4c 49 KEY.TOUP.FNBN.LI 4c60: 44 46 01 44 49 47 4d 01 55 57 41 4b 01 00 08 44 DF.DIGM.UWAK...D 4c70: 4b 53 50 01 44 4b 49 4e 01 44 4b 49 44 01 44 4b KSP.DKIN.DKID.DK 4c80: 4f 4b 01 00 04 44 4b 50 57 01 00 07 42 54 4e 53 OK...DKPW...BTNS 4c90: 08 53 31 4c 44 01 53 33 4c 44 01 56 47 41 51 01 .S1LD.S3LD.VGAQ. 4ca0: 50 43 4d 51 01 50 43 4d 52 01 41 44 50 54 01 53 PCMQ.PCMR.ADPT.S 4cb0: 4c 4c 53 01 53 59 53 37 01 50 57 41 4b 01 4d 57 LLS.SYS7.PWAK.MW 4cc0: 41 4b 01 4c 57 41 4b 01 00 05 00 28 54 43 4e 4c AK.LWAK....(TCNL 4cd0: 08 54 4d 50 49 08 54 4d 53 44 08 46 41 53 4e 04 .TMPI.TMSD.FASN. 4ce0: 46 41 53 55 04 50 43 56 4c 04 00 02 53 57 54 4f FASU.PCVL...SWTO 4cf0: 01 48 57 54 4f 01 4d 4f 44 45 01 46 41 4e 53 02 .HWTO.MODE.FANS. 4d00: 49 4e 49 54 01 46 41 4e 31 01 46 41 4e 32 01 46 INIT.FAN1.FAN2.F 4d10: 41 4e 54 01 53 4b 4e 4d 01 43 54 4d 50 08 4c 49 ANT.SKNM.CTMP.LI 4d20: 44 45 01 50 4d 45 45 01 50 57 42 45 01 52 4e 47 DE.PMEE.PWBE.RNG 4d30: 45 01 42 54 57 45 01 44 43 4b 45 01 00 02 53 4b E.BTWE.DCKE...SK 4d40: 54 58 08 53 4b 54 42 08 53 4b 54 43 08 53 4b 54 TX.SKTB.SKTC.SKT 4d50: 41 08 00 08 48 41 50 4c 02 48 41 50 52 01 00 05 A...HAPL.HAPR... 4d60: 42 54 44 54 01 42 54 50 57 01 42 54 44 53 01 42 BTDT.BTPW.BTDS.B 4d70: 54 50 53 01 42 54 53 57 01 42 54 57 4b 01 42 54 TPS.BTSW.BTWK.BT 4d80: 4c 44 01 00 01 42 52 54 53 08 43 4e 54 53 08 57 LD...BRTS.CNTS.W 4d90: 4c 41 54 01 42 54 41 54 01 57 4c 45 58 01 42 54 LAT.BTAT.WLEX.BT 4da0: 45 58 01 4b 4c 53 57 01 57 4c 4f 4b 01 00 02 50 EX.KLSW.WLOK...P 4db0: 54 49 44 08 43 50 55 54 08 45 50 4b 54 08 47 48 TID.CPUT.EPKT.GH 4dc0: 49 44 08 00 04 42 4d 46 30 03 42 54 59 30 01 42 ID...BMF0.BTY0.B 4dd0: 53 54 30 08 42 52 43 30 10 42 53 4e 30 10 42 50 ST0.BRC0.BSN0.BP 4de0: 56 30 10 42 44 56 30 10 42 44 43 30 10 42 46 43 V0.BDV0.BDC0.BFC 4df0: 30 10 47 41 55 30 08 43 59 43 30 08 42 50 43 30 0.GAU0.CYC0.BPC0 4e00: 10 42 41 43 30 10 42 41 54 30 08 42 54 57 30 10 .BAC0.BAT0.BTW0. 4e10: 42 44 4e 30 08 00 40 04 00 04 42 4d 46 31 03 42 BDN0..@...BMF1.B 4e20: 54 59 31 01 42 53 54 31 08 42 52 43 31 10 42 53 TY1.BST1.BRC1.BS 4e30: 4e 31 10 42 50 56 31 10 42 44 56 31 10 42 44 43 N1.BPV1.BDV1.BDC 4e40: 31 10 42 46 43 31 10 47 41 55 31 08 43 59 43 31 1.BFC1.GAU1.CYC1 4e50: 08 42 50 43 31 10 42 41 43 31 10 42 41 54 31 08 .BPC1.BAC1.BAT1. 4e60: 42 54 57 31 10 14 37 5f 51 31 31 00 70 0a 87 50 BTW1..7_Q11.p..P 4e70: 38 30 48 a0 13 49 47 44 53 5e 5e 5e 2e 47 46 58 80H..IGDS^^^.GFX 4e80: 30 42 52 54 4e 0a 87 a1 15 86 5e 5e 5e 2f 03 50 0BRTN.....^^^/.P 4e90: 45 47 50 56 47 41 5f 4c 43 44 5f 0a 87 14 37 5f EGPVGA_LCD_...7_ 4ea0: 51 31 32 00 70 0a 86 50 38 30 48 a0 13 49 47 44 Q12.p..P80H..IGD 4eb0: 53 5e 5e 5e 2e 47 46 58 30 42 52 54 4e 0a 86 a1 S^^^.GFX0BRTN... 4ec0: 15 86 5e 5e 5e 2f 03 50 45 47 50 56 47 41 5f 4c ..^^^/.PEGPVGA_L 4ed0: 43 44 5f 0a 86 14 40 05 5f 51 31 43 00 70 0d 3d CD_...@._Q1C.p.= 4ee0: 3d 3d 3d 3d 51 55 45 52 59 5f 31 43 3d 3d 3d 3d ====QUERY_1C==== 4ef0: 3d 00 5b 31 a0 31 56 49 44 4f a0 12 49 47 44 53 =.[1.1VIDO..IGDS 4f00: 5e 5e 5e 2e 47 46 58 30 47 48 44 53 00 a1 12 5e ^^^.GFX0GHDS...^ 4f10: 5e 5e 2f 03 50 45 47 50 56 47 41 5f 44 53 53 57 ^^/.PEGPVGA_DSSW 4f20: 70 00 56 49 44 4f 14 21 5f 51 31 44 00 70 0d 3d p.VIDO.!_Q1D.p.= 4f30: 3d 3d 3d 3d 51 55 45 52 59 5f 31 44 3d 3d 3d 3d ====QUERY_1D==== 4f40: 3d 00 5b 31 50 43 4c 4b 14 21 5f 51 31 45 00 70 =.[1PCLK.!_Q1E.p 4f50: 0d 3d 3d 3d 3d 3d 51 55 45 52 59 5f 31 45 3d 3d .=====QUERY_1E== 4f60: 3d 3d 3d 00 5b 31 50 43 4c 4b 14 39 5f 51 32 35 ===.[1PCLK.9_Q25 4f70: 00 70 0d 3d 3d 3d 3d 3d 51 55 45 52 59 5f 32 35 .p.=====QUERY_25 4f80: 3d 3d 3d 3d 3d 00 5b 31 5b 22 0b e8 03 86 5e 5e =====.[1["....^^ 4f90: 42 41 54 31 0a 81 5b 22 0b e8 03 86 5e 5e 42 41 BAT1..["....^^BA 4fa0: 54 31 0a 80 14 2f 5f 51 33 34 00 70 0d 3d 3d 3d T1.../_Q34.p.=== 4fb0: 3d 3d 51 55 45 52 59 5f 33 34 3d 3d 3d 3d 3d 00 ==QUERY_34=====. 4fc0: 5b 31 a0 11 42 4b 45 59 50 48 53 53 0a 71 70 00 [1..BKEYPHSS.qp. 4fd0: 42 4b 45 59 14 32 5f 51 33 37 00 70 0d 3d 3d 3d BKEY.2_Q37.p.=== 4fe0: 3d 3d 51 55 45 52 59 5f 33 37 3d 3d 3d 3d 3d 00 ==QUERY_37=====. 4ff0: 5b 31 86 41 43 41 44 0a 80 5b 22 0b e8 03 86 5e [1.ACAD..["....^ 5000: 5e 42 41 54 31 0a 80 14 32 5f 51 33 38 00 70 0d ^BAT1...2_Q38.p. 5010: 3d 3d 3d 3d 3d 51 55 45 52 59 5f 33 38 3d 3d 3d =====QUERY_38=== 5020: 3d 3d 00 5b 31 86 41 43 41 44 0a 80 5b 22 0b e8 ==.[1.ACAD..[".. 5030: 03 86 5e 5e 42 41 54 31 0a 80 14 29 5f 51 32 44 ..^^BAT1...)_Q2D 5040: 00 70 0d 3d 3d 3d 3d 3d 51 55 45 52 59 5f 32 44 .p.=====QUERY_2D 5050: 3d 3d 3d 3d 3d 00 5b 31 70 00 44 54 53 4d 54 52 =====.[1p.DTSMTR 5060: 41 50 0a 46 14 29 5f 51 32 45 00 70 0d 3d 3d 3d AP.F.)_Q2E.p.=== 5070: 3d 3d 51 55 45 52 59 5f 32 45 3d 3d 3d 3d 3d 00 ==QUERY_2E=====. 5080: 5b 31 70 01 44 54 53 4d 54 52 41 50 0a 46 5b 80 [1p.DTSMTRAP.F[. 5090: 43 43 4c 4b 01 0b 10 10 0a 04 5b 81 20 43 43 4c CCLK......[. CCL 50a0: 4b 03 00 01 44 55 54 59 03 54 48 45 4e 01 00 03 K...DUTY.THEN... 50b0: 46 54 54 5f 01 00 08 54 53 54 53 01 5b 80 45 43 FTT_...TSTS.[.EC 50c0: 52 4d 03 00 0a ff 5b 81 44 04 45 43 52 4d 11 00 RM....[.D.ECRM.. 50d0: 40 4a 45 52 49 42 10 45 52 42 44 08 00 48 0a 53 @JERIB.ERBD..H.S 50e0: 44 54 4d 08 46 53 53 4e 04 46 41 4e 55 04 50 54 DTM.FSSN.FANU.PT 50f0: 56 4c 03 00 04 54 54 48 52 01 00 48 06 50 4a 49 VL...TTHR..H.PJI 5100: 44 08 00 08 00 48 1d 52 46 52 44 10 5b 01 46 41 D....H.RFRD.[.FA 5110: 4d 58 00 14 22 46 41 4e 47 01 5b 23 46 41 4d 58 MX.."FANG.[#FAMX 5120: ff ff 70 68 45 52 49 42 70 45 52 42 44 60 5b 27 ..phERIBpERBD`[' 5130: 46 41 4d 58 a4 60 14 22 46 41 4e 57 02 5b 23 46 FAMX.`."FANW.[#F 5140: 41 4d 58 ff ff 70 68 45 52 49 42 70 69 45 52 42 AMX..phERIBpiERB 5150: 44 5b 27 46 41 4d 58 a4 69 14 09 54 55 56 52 01 D['FAMX.i..TUVR. 5160: a4 0a 03 14 2e 54 48 52 4f 01 a0 09 93 68 00 a4 .....THRO....h.. 5170: 54 48 45 4e a1 1d a0 09 93 68 01 a4 44 55 54 59 THEN.....h..DUTY 5180: a1 11 a0 0a 93 68 0a 02 a4 54 54 48 52 a1 04 a4 .....h...TTHR... 5190: 0a ff 14 2a 43 4c 43 4b 01 a0 10 93 68 00 70 00 ...*CLCK....h.p. 51a0: 54 48 45 4e 70 00 46 54 54 5f a1 0d 70 68 44 55 THENp.FTT_..phDU 51b0: 54 59 70 01 54 48 45 4e a4 54 48 45 4e 14 37 50 TYp.THEN.THEN.7P 51c0: 43 4c 4b 00 70 50 54 56 4c 60 a0 10 93 60 00 70 CLK.pPTVL`...`.p 51d0: 00 54 48 45 4e 70 00 46 54 54 5f a1 19 76 60 70 .THENp.FTT_..v`p 51e0: 80 60 00 61 7b 61 0a 07 61 70 61 44 55 54 59 70 .`.a{a..apaDUTYp 51f0: 01 54 48 45 4e 5b 82 4b 22 42 41 54 31 08 5f 48 .THEN[.K"BAT1._H 5200: 49 44 0c 41 d0 0c 0a 08 5f 55 49 44 01 08 5f 50 ID.A...._UID.._P 5210: 43 4c 12 06 01 5f 53 42 5f 14 39 5f 53 54 41 00 CL..._SB_.9_STA. 5220: a0 29 90 45 43 4f 4b 93 45 43 44 59 00 a0 13 5e .).ECOK.ECDY...^ 5230: 5e 2e 45 43 30 5f 42 41 4c 30 5b 22 0a 14 a4 0a ^.EC0_BAL0[".... 5240: 1f a1 08 5b 22 0a 14 a4 0a 0f a1 08 5b 22 0a 14 ...[".......[".. 5250: a4 0a 1f 14 48 10 5f 42 49 46 00 08 53 54 41 54 ....H._BIF..STAT 5260: 12 3a 0d 01 0b a0 0f 0b a0 0f 01 0b 5c 2b 0b a4 .:..........\+.. 5270: 01 0a 9c 0b 08 01 0b c4 0e 0d 50 41 33 34 36 35 ..........PA3465 5280: 55 20 00 0d 33 36 35 38 51 00 0d 4c 69 2d 49 6f U ..3658Q..Li-Io 5290: 6e 00 0d 43 4f 4d 50 41 4c 20 00 a0 4b 07 90 45 n..COMPAL ..K..E 52a0: 43 4f 4b 93 45 43 44 59 00 70 5e 5e 2e 45 43 30 COK.ECDY.p^^.EC0 52b0: 5f 42 44 4e 30 60 a0 23 93 60 0a 08 70 0a b4 88 _BDN0`.#.`..p... 52c0: 53 54 41 54 0a 06 00 70 0d 50 41 33 34 35 37 55 STAT...p.PA3457U 52d0: 20 00 88 53 54 41 54 0a 09 00 a0 24 93 60 0a 20 ..STAT....$.`. 52e0: 70 0b 02 01 88 53 54 41 54 0a 06 00 70 0d 50 41 p....STAT...p.PA 52f0: 33 34 35 37 55 20 00 88 53 54 41 54 0a 09 00 5b 3457U ..STAT...[ 5300: 22 0a 14 70 5e 5e 2e 45 43 30 5f 42 44 43 30 42 "..p^^.EC0_BDC0B 5310: 46 43 31 5b 22 0a 14 a1 12 70 0d 4c 69 2d 49 6f FC1["....p.Li-Io 5320: 6e 00 88 53 54 41 54 0a 0b 00 a0 2c 42 46 43 31 n..STAT....,BFC1 5330: 78 42 46 43 31 0a 64 60 61 77 61 0a 64 61 70 61 xBFC1.d`awa.dapa 5340: 42 46 43 31 70 61 88 53 54 41 54 01 00 70 61 88 BFC1pa.STAT..pa. 5350: 53 54 41 54 0a 02 00 a4 53 54 41 54 14 45 0c 5f STAT....STAT.E._ 5360: 42 53 54 00 08 50 42 53 54 12 10 04 00 0c ff ff BST..PBST....... 5370: ff ff 0c ff ff ff ff 0b 5c 2b 70 0b 5c 2b 63 a0 ........\+p.\+c. 5380: 38 90 45 43 4f 4b 93 45 43 44 59 00 5b 22 0a 14 8.ECOK.ECDY.[".. 5390: 70 5e 5e 2e 45 43 30 5f 42 53 54 30 42 53 54 31 p^^.EC0_BST0BST1 53a0: 5b 22 0a 14 70 5e 5e 2e 45 43 30 5f 47 41 55 30 ["..p^^.EC0_GAU0 53b0: 42 47 55 31 5b 22 0a 14 a0 15 42 46 43 31 77 42 BGU1["....BFC1wB 53c0: 47 55 31 42 46 43 31 62 78 62 0a 64 64 62 a1 09 GU1BFC1bxb.ddb.. 53d0: 77 42 47 55 31 0a 28 62 70 42 53 54 31 88 50 42 wBGU1.(bpBST1.PB 53e0: 53 54 00 00 70 00 88 50 42 53 54 01 00 70 62 88 ST..p..PBST..pb. 53f0: 50 42 53 54 0a 02 00 70 63 88 50 42 53 54 0a 03 PBST...pc.PBST.. 5400: 00 a0 1b 94 45 43 44 59 00 76 45 43 44 59 a0 0e ....ECDY.vECDY.. 5410: 93 45 43 44 59 00 86 42 41 54 31 0a 80 a4 50 42 .ECDY..BAT1...PB 5420: 53 54 5b 82 2e 50 53 32 4b 08 5f 48 49 44 0c 41 ST[..PS2K._HID.A 5430: d0 03 03 08 5f 43 52 53 11 19 0a 16 47 01 60 00 ...._CRS....G.`. 5440: 60 00 01 01 47 01 64 00 64 00 01 01 23 02 00 01 `...G.d.d...#... 5450: 79 00 5b 82 1e 50 53 32 4d 08 5f 48 49 44 0c 41 y.[..PS2M._HID.A 5460: d0 0f 13 08 5f 43 52 53 11 09 0a 06 23 00 10 01 ...._CRS....#... 5470: 79 00 5b 82 43 6a 50 41 54 41 08 5f 41 44 52 0c y.[.CjPATA._ADR. 5480: 01 00 1f 00 5b 80 50 41 43 53 02 0a 40 0a c0 5b ....[.PACS..@..[ 5490: 81 49 04 50 41 43 53 03 50 52 49 54 10 00 10 50 .I.PACS.PRIT...P 54a0: 53 49 54 04 00 1c 53 59 4e 43 04 00 0c 53 44 54 SIT...SYNC...SDT 54b0: 30 02 00 02 53 44 54 31 02 00 4a 04 49 43 52 30 0...SDT1..J.ICR0 54c0: 04 49 43 52 31 04 49 43 52 32 04 49 43 52 33 04 .ICR1.ICR2.ICR3. 54d0: 49 43 52 34 04 49 43 52 35 04 5b 82 4b 63 50 52 ICR4.ICR5.[.KcPR 54e0: 49 44 08 5f 41 44 52 00 14 40 17 5f 47 54 4d 00 ID._ADR..@._GTM. 54f0: 08 50 42 55 46 11 17 0a 14 00 00 00 00 00 00 00 .PBUF........... 5500: 00 00 00 00 00 00 00 00 00 00 00 00 00 8a 50 42 ..............PB 5510: 55 46 00 50 49 4f 30 8a 50 42 55 46 0a 04 44 4d UF.PIO0.PBUF..DM 5520: 41 30 8a 50 42 55 46 0a 08 50 49 4f 31 8a 50 42 A0.PBUF..PIO1.PB 5530: 55 46 0a 0c 44 4d 41 31 8a 50 42 55 46 0a 10 46 UF..DMA1.PBUF..F 5540: 4c 41 47 70 47 45 54 50 50 52 49 54 50 49 4f 30 LAGpGETPPRITPIO0 5550: 70 47 44 4d 41 7b 53 59 4e 43 01 00 7b 49 43 52 pGDMA{SYNC..{ICR 5560: 33 01 00 7b 49 43 52 30 01 00 53 44 54 30 7b 49 3..{ICR0..SDT0{I 5570: 43 52 31 01 00 44 4d 41 30 a0 14 93 44 4d 41 30 CR1..DMA0...DMA0 5580: 0c ff ff ff ff 70 50 49 4f 30 44 4d 41 30 a0 2e .....pPIO0DMA0.. 5590: 7b 50 52 49 54 0b 00 40 00 a0 14 93 7b 50 52 49 {PRIT..@....{PRI 55a0: 54 0a 90 00 0a 80 70 0b 84 03 50 49 4f 31 a1 0e T.....p...PIO1.. 55b0: 70 47 45 54 54 50 53 49 54 50 49 4f 31 a1 0b 70 pGETTPSITPIO1..p 55c0: 0c ff ff ff ff 50 49 4f 31 70 47 44 4d 41 7b 53 .....PIO1pGDMA{S 55d0: 59 4e 43 0a 02 00 7b 49 43 52 33 0a 02 00 7b 49 YNC...{ICR3...{I 55e0: 43 52 30 0a 02 00 53 44 54 31 7b 49 43 52 31 0a CR0...SDT1{ICR1. 55f0: 02 00 44 4d 41 31 a0 14 93 44 4d 41 31 0c ff ff ..DMA1...DMA1... 5600: ff ff 70 50 49 4f 31 44 4d 41 31 70 47 45 54 46 ..pPIO1DMA1pGETF 5610: 7b 53 59 4e 43 01 00 7b 53 59 4e 43 0a 02 00 50 {SYNC..{SYNC...P 5620: 52 49 54 46 4c 41 47 a0 2c 7b 93 50 49 4f 30 0c RITFLAG.,{.PIO0. 5630: ff ff ff ff 93 44 4d 41 30 0c ff ff ff ff 00 70 .....DMA0......p 5640: 0a 78 50 49 4f 30 70 0a 14 44 4d 41 30 70 0a 03 .xPIO0p..DMA0p.. 5650: 46 4c 41 47 a4 50 42 55 46 14 4c 2a 5f 53 54 4d FLAG.PBUF.L*_STM 5660: 03 8a 68 00 50 49 4f 30 8a 68 0a 04 44 4d 41 30 ..h.PIO0.h..DMA0 5670: 8a 68 0a 08 50 49 4f 31 8a 68 0a 0c 44 4d 41 31 .h..PIO1.h..DMA1 5680: 8a 68 0a 10 46 4c 41 47 a0 41 12 93 87 69 0b 00 .h..FLAG.A...i.. 5690: 02 7b 50 52 49 54 0b f0 c0 50 52 49 54 7b 53 59 .{PRIT...PRIT{SY 56a0: 4e 43 0a 02 53 59 4e 43 70 00 53 44 54 30 7b 49 NC..SYNCp.SDT0{I 56b0: 43 52 30 0a 02 49 43 52 30 7b 49 43 52 31 0a 02 CR0..ICR0{ICR1.. 56c0: 49 43 52 31 7b 49 43 52 33 0a 02 49 43 52 33 7b ICR1{ICR3..ICR3{ 56d0: 49 43 52 35 0a 02 49 43 52 35 8b 69 0a 62 57 34 ICR5..ICR5.i.bW4 56e0: 39 30 8b 69 0a 6a 57 35 33 30 8b 69 0a 7e 57 36 90.i.jW530.i.~W6 56f0: 33 30 8b 69 0a 80 57 36 34 30 8b 69 0a b0 57 38 30.i..W640.i..W8 5700: 38 30 8b 69 0a ba 57 39 33 30 7d 50 52 49 54 0b 80.i..W930}PRIT. 5710: 04 80 50 52 49 54 a0 1e 90 7b 46 4c 41 47 0a 02 ..PRIT...{FLAG.. 5720: 00 7b 57 34 39 30 0b 00 08 00 7d 50 52 49 54 0a .{W490....}PRIT. 5730: 02 50 52 49 54 7d 50 52 49 54 53 45 54 50 50 49 .PRIT}PRITSETPPI 5740: 4f 30 57 35 33 30 57 36 34 30 50 52 49 54 a0 4b O0W530W640PRIT.K 5750: 05 7b 46 4c 41 47 01 00 7d 53 59 4e 43 01 53 59 .{FLAG..}SYNC.SY 5760: 4e 43 70 53 44 4d 41 44 4d 41 30 53 44 54 30 a0 NCpSDMADMA0SDT0. 5770: 12 95 44 4d 41 30 0a 1e 7d 49 43 52 33 01 49 43 ..DMA0..}ICR3.IC 5780: 52 33 a0 12 95 44 4d 41 30 0a 3c 7d 49 43 52 30 R3...DMA0.<}ICR0 5790: 01 49 43 52 30 a0 14 7b 57 39 33 30 0b 00 20 00 .ICR0..{W930.. . 57a0: 7d 49 43 52 31 01 49 43 52 31 a0 4b 15 93 87 6a }ICR1.ICR1.K...j 57b0: 0b 00 02 7b 50 52 49 54 0b 0f bf 50 52 49 54 70 ...{PRIT...PRITp 57c0: 00 50 53 49 54 7b 53 59 4e 43 01 53 59 4e 43 70 .PSIT{SYNC.SYNCp 57d0: 00 53 44 54 31 7b 49 43 52 30 01 49 43 52 30 7b .SDT1{ICR0.ICR0{ 57e0: 49 43 52 31 01 49 43 52 31 7b 49 43 52 33 01 49 ICR1.ICR1{ICR3.I 57f0: 43 52 33 7b 49 43 52 35 01 49 43 52 35 8b 6a 0a CR3{ICR5.ICR5.j. 5800: 62 57 34 39 31 8b 6a 0a 6a 57 35 33 31 8b 6a 0a bW491.j.jW531.j. 5810: 7e 57 36 33 31 8b 6a 0a 80 57 36 34 31 8b 6a 0a ~W631.j..W641.j. 5820: b0 57 38 38 31 8b 6a 0a ba 57 39 33 31 7d 50 52 .W881.j..W931}PR 5830: 49 54 0b 40 80 50 52 49 54 a0 1e 90 7b 46 4c 41 IT.@.PRIT...{FLA 5840: 47 0a 08 00 7b 57 34 39 31 0b 00 08 00 7d 50 52 G...{W491....}PR 5850: 49 54 0a 20 50 52 49 54 a0 4c 04 7b 46 4c 41 47 IT. PRIT.L.{FLAG 5860: 0a 10 00 7d 50 52 49 54 0b 00 40 50 52 49 54 a0 ...}PRIT..@PRIT. 5870: 13 94 50 49 4f 31 0a f0 7d 50 52 49 54 0a 80 50 ..PIO1..}PRIT..P 5880: 52 49 54 a1 21 7d 50 52 49 54 0a 10 50 52 49 54 RIT.!}PRIT..PRIT 5890: 70 53 45 54 54 50 49 4f 31 57 35 33 31 57 36 34 pSETTPIO1W531W64 58a0: 31 50 53 49 54 a0 40 06 7b 46 4c 41 47 0a 04 00 1PSIT.@.{FLAG... 58b0: 7d 53 59 4e 43 0a 02 53 59 4e 43 70 53 44 4d 41 }SYNC..SYNCpSDMA 58c0: 44 4d 41 31 53 44 54 31 a0 13 95 44 4d 41 31 0a DMA1SDT1...DMA1. 58d0: 1e 7d 49 43 52 33 0a 02 49 43 52 33 a0 13 95 44 .}ICR3..ICR3...D 58e0: 4d 41 31 0a 3c 7d 49 43 52 30 0a 02 49 43 52 30 MA1.<}ICR0..ICR0 58f0: a0 15 7b 57 39 33 31 0b 00 20 00 7d 49 43 52 31 ..{W931.. .}ICR1 5900: 0a 02 49 43 52 31 5b 82 47 10 50 5f 44 30 08 5f ..ICR1[.G.P_D0._ 5910: 41 44 52 00 14 4a 0f 5f 47 54 46 00 08 50 49 42 ADR..J._GTF..PIB 5920: 30 11 11 0a 0e 03 00 00 00 00 a0 ef 03 00 00 00 0............... 5930: 00 a0 ef 8c 50 49 42 30 01 50 4d 44 30 8c 50 49 ....PIB0.PMD0.PI 5940: 42 30 0a 08 44 4d 44 30 a0 40 06 7b 50 52 49 54 B0..DMD0.@.{PRIT 5950: 0a 02 00 a0 13 93 7b 50 52 49 54 0a 09 00 0a 08 ......{PRIT..... 5960: 70 0a 08 50 4d 44 30 a1 41 04 70 0a 0a 50 4d 44 p..PMD0.A.p..PMD 5970: 30 7a 7b 50 52 49 54 0b 00 03 00 0a 08 60 7a 7b 0z{PRIT......`z{ 5980: 50 52 49 54 0b 00 30 00 0a 0c 61 72 60 61 62 a0 PRIT..0...ar`ab. 5990: 0c 93 0a 03 62 70 0a 0b 50 4d 44 30 a0 0c 93 0a ....bp..PMD0.... 59a0: 05 62 70 0a 0c 50 4d 44 30 a1 07 70 01 50 4d 44 .bp..PMD0..p.PMD 59b0: 30 a0 43 04 7b 53 59 4e 43 01 00 70 7d 53 44 54 0.C.{SYNC..p}SDT 59c0: 30 0a 40 00 44 4d 44 30 a0 2c 7b 49 43 52 31 01 0.@.DMD0.,{ICR1. 59d0: 00 a0 13 7b 49 43 52 30 01 00 72 44 4d 44 30 0a ...{ICR0..rDMD0. 59e0: 02 44 4d 44 30 a0 0f 7b 49 43 52 33 01 00 70 0a .DMD0..{ICR3..p. 59f0: 45 44 4d 44 30 a1 14 7d 74 7b 50 4d 44 30 0a 07 EDMD0..}t{PMD0.. 5a00: 00 0a 02 00 0a 20 44 4d 44 30 a4 50 49 42 30 5b ..... DMD0.PIB0[ 5a10: 82 46 10 50 5f 44 31 08 5f 41 44 52 01 14 49 0f .F.P_D1._ADR..I. 5a20: 5f 47 54 46 00 08 50 49 42 31 11 11 0a 0e 03 00 _GTF..PIB1...... 5a30: 00 00 00 b0 ef 03 00 00 00 00 b0 ef 8c 50 49 42 .............PIB 5a40: 31 01 50 4d 44 31 8c 50 49 42 31 0a 08 44 4d 44 1.PMD1.PIB1..DMD 5a50: 31 a0 4b 05 7b 50 52 49 54 0a 20 00 a0 13 93 7b 1.K.{PRIT. ....{ 5a60: 50 52 49 54 0a 90 00 0a 80 70 0a 08 50 4d 44 31 PRIT.....p..PMD1 5a70: a1 3c 72 7b 50 53 49 54 0a 03 00 7a 7b 50 53 49 .. 0050: 80 49 ee 6a 65 26 72 1e cd bf 5f 2f 96 d6 c0 0a .I.je&r..._/.... 0060: 92 f5 06 b5 00 b2 3b 29 02 e2 4c 8d c2 f2 bc 41 ......;)..L....A 0070: 77 9c 70 f0 f3 1b 09 d2 63 5a dc a8 83 f8 5e c9 w.p.....cZ....^. 0080: 15 95 f9 fa fd dc 05 b7 4d 67 7f 2d b3 84 33 20 ........Mg.-..3 0090: e1 d1 79 2a a7 6a 77 d1 b6 20 2a 76 42 c5 d5 e9 ..y*.jw.. *vB... 00a0: b6 43 40 55 44 c3 c9 37 99 5f 41 97 70 f3 d1 f6 .C@UD..7._A.p... 00b0: 07 ec 7b 1a 29 a1 c1 f1 91 fd 48 86 6e 3e ce cb ..{.).....H.n>.. 00c0: 01 00 00 00 b6 00 00 00 00 00 02 00 4c 45 4e 4f ............LENO 00d0: 56 4f 54 50 2d 36 38 20 20 20 57 49 4e 44 4f 57 VOTP-68 WINDOW 00e0: 53 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 S .............. 00f0: 00 00 00 00 00 00 8a 6e 2e c9 36 e6 7f 10 8a ea .......n..6..... 0100: 14 ad d2 93 b7 6d 9b 73 ad 83 36 b8 6c a7 a7 ee .....m.s..6.l... 0110: 37 47 16 fe f3 fc cd c7 89 84 06 16 91 0b 1e 81 7G.............. 0120: 11 42 b1 35 52 57 f6 6b bb 5f a5 81 e2 ff 89 8a .B.5RW.k._...... 0130: 95 c3 4d fc e9 56 4f 4c 34 cc 99 5e 62 e1 90 8a ..M..VOL4..^b... 0140: 54 be 4a 00 5c 9b a0 86 41 46 66 9d e2 f2 e7 36 T.J.\...AFf....6 0150: 9c 33 91 27 e7 8d 5c a1 d8 f9 a4 61 8a 1c 04 07 .3.'..\....a.... 0160: e3 2a 1e 14 f1 bd 7f 4c 09 ff 19 11 a9 d4 74 ca .*.....L......t. 0170: 11 9e dc 54 39 bf ...T9. APIC @ 0xbf6dff70 0000: 41 50 49 43 68 00 00 00 01 13 50 54 4c 54 44 20 APICh.....PTLTD 0010: 09 20 41 50 49 43 20 20 00 00 04 06 20 4c 54 50 . APIC .... LTP 0020: 00 00 00 00 00 00 e0 fe 01 00 00 00 00 08 00 00 ................ 0030: 01 00 00 00 00 08 01 01 01 00 00 00 01 0c 02 00 ................ 0040: 00 00 c0 fe 00 00 00 00 04 06 00 05 00 01 04 06 ................ 0050: 01 05 00 01 02 0a 00 00 02 00 00 00 05 00 02 0a ................ 0060: 00 09 09 00 00 00 0d 00 ........ SSDT @ 0xbf6d98bd 0000: 53 53 44 54 ad 02 00 00 01 59 53 61 74 61 52 65 SSDT.....YSataRe 0010: 53 61 74 61 41 68 63 69 00 10 00 00 49 4e 54 4c SataAhci....INTL 0020: 24 06 05 20 10 48 28 5c 2f 03 5f 53 42 5f 50 43 $.. .H(\/._SB_PC 0030: 49 30 53 41 54 41 5b 82 4f 0c 50 52 54 30 08 5f I0SATA[.O.PRT0._ 0040: 41 44 52 0b ff ff 14 44 0b 5f 53 44 44 01 08 47 ADR....D._SDD..G 0050: 42 55 30 11 0a 0a 07 00 00 00 00 00 a0 00 8c 47 BU0............G 0060: 42 55 30 0a 00 47 42 30 30 8c 47 42 55 30 0a 01 BU0..GB00.GBU0.. 0070: 47 42 30 31 8c 47 42 55 30 0a 02 47 42 30 32 8c GB01.GBU0..GB02. 0080: 47 42 55 30 0a 03 47 42 30 33 8c 47 42 55 30 0a GBU0..GB03.GBU0. 0090: 04 47 42 30 34 8c 47 42 55 30 0a 05 47 42 30 35 .GB04.GBU0..GB05 00a0: 8c 47 42 55 30 0a 06 47 42 30 36 a0 46 04 93 87 .GBU0..GB06.F... 00b0: 68 0b 00 02 8b 68 0a 9c 57 37 38 30 a0 1e 7b 57 h....h..W780..{W 00c0: 37 38 30 0a 08 00 70 0a 10 47 42 30 30 70 0a 03 780...p..GB00p.. 00d0: 47 42 30 31 70 0a ef 47 42 30 36 a1 16 70 0a 90 GB01p..GB06..p.. 00e0: 47 42 30 30 70 0a 03 47 42 30 31 70 0a ef 47 42 GB00p..GB01p..GB 00f0: 30 36 70 47 42 55 30 47 54 46 30 14 0b 5f 47 54 06pGBU0GTF0.._GT 0100: 46 00 a4 47 54 46 30 5b 82 41 0d 50 52 54 31 08 F..GTF0[.A.PRT1. 0110: 5f 41 44 52 0c ff ff 01 00 14 44 0b 5f 53 44 44 _ADR......D._SDD 0120: 01 08 47 42 55 31 11 0a 0a 07 00 00 00 00 00 a0 ..GBU1.......... 0130: 00 8c 47 42 55 31 0a 00 47 42 31 30 8c 47 42 55 ..GBU1..GB10.GBU 0140: 31 0a 01 47 42 31 31 8c 47 42 55 31 0a 02 47 42 1..GB11.GBU1..GB 0150: 31 32 8c 47 42 55 31 0a 03 47 42 31 33 8c 47 42 12.GBU1..GB13.GB 0160: 55 31 0a 04 47 42 31 34 8c 47 42 55 31 0a 05 47 U1..GB14.GBU1..G 0170: 42 31 35 8c 47 42 55 31 0a 06 47 42 31 36 a0 46 B15.GBU1..GB16.F 0180: 04 93 87 68 0b 00 02 8b 68 0a 9c 57 37 38 31 a0 ...h....h..W781. 0190: 1e 7b 57 37 38 31 0a 08 00 70 0a 10 47 42 31 30 .{W781...p..GB10 01a0: 70 0a 03 47 42 31 31 70 0a ef 47 42 31 36 a1 16 p..GB11p..GB16.. 01b0: 70 0a 90 47 42 31 30 70 0a 03 47 42 31 31 70 0a p..GB10p..GB11p. 01c0: ef 47 42 31 36 70 47 42 55 31 47 54 46 31 14 0b .GB16pGBU1GTF1.. 01d0: 5f 47 54 46 00 a4 47 54 46 31 5b 82 41 0d 50 52 _GTF..GTF1[.A.PR 01e0: 54 32 08 5f 41 44 52 0c ff ff 02 00 14 44 0b 5f T2._ADR......D._ 01f0: 53 44 44 01 08 47 42 55 32 11 0a 0a 07 00 00 00 SDD..GBU2....... 0200: 00 00 a0 00 8c 47 42 55 32 0a 00 47 42 32 30 8c .....GBU2..GB20. 0210: 47 42 55 32 0a 01 47 42 32 31 8c 47 42 55 32 0a GBU2..GB21.GBU2. 0220: 02 47 42 32 32 8c 47 42 55 32 0a 03 47 42 32 33 .GB22.GBU2..GB23 0230: 8c 47 42 55 32 0a 04 47 42 32 34 8c 47 42 55 32 .GBU2..GB24.GBU2 0240: 0a 05 47 42 32 35 8c 47 42 55 32 0a 06 47 42 32 ..GB25.GBU2..GB2 0250: 36 a0 46 04 93 87 68 0b 00 02 8b 68 0a 9c 57 37 6.F...h....h..W7 0260: 38 32 a0 1e 7b 57 37 38 32 0a 08 00 70 0a 10 47 82..{W782...p..G 0270: 42 32 30 70 0a 03 47 42 32 31 70 0a ef 47 42 32 B20p..GB21p..GB2 0280: 36 a1 16 70 0a 90 47 42 32 30 70 0a 03 47 42 32 6..p..GB20p..GB2 0290: 31 70 0a ef 47 42 32 36 70 47 42 55 32 47 54 46 1p..GB26pGBU2GTF 02a0: 32 14 0b 5f 47 54 46 00 a4 47 54 46 32 2.._GTF..GTF2 SSDT @ 0xbf6d981a 0000: 53 53 44 54 a3 00 00 00 01 ed 42 72 74 52 65 66 SSDT......BrtRef 0010: 44 44 30 31 42 52 54 00 00 10 00 00 49 4e 54 4c DD01BRT.....INTL 0020: 24 06 05 20 10 4e 07 5c 2f 04 5f 53 42 5f 50 43 $.. .N.\/._SB_PC 0030: 49 30 47 46 58 30 44 44 30 33 14 1e 5f 42 43 4c I0GFX0DD03.._BCL 0040: 00 a4 12 16 0a 0a 46 0a 28 0a 00 0a 0a 0a 14 0a ......F.(....... 0050: 1e 0a 28 0a 32 0a 3c 0a 46 14 25 5f 42 43 4d 01 ..(.2.<.F.%_BCM. 0060: 78 68 0a 0a 60 61 70 61 5c 2f 05 5f 53 42 5f 50 xh..`apa\/._SB_P 0070: 43 49 30 4c 50 43 42 45 43 30 5f 42 52 54 53 14 CI0LPCBEC0_BRTS. 0080: 23 5f 42 51 43 00 77 5c 2f 05 5f 53 42 5f 50 43 #_BQC.w\/._SB_PC 0090: 49 30 4c 50 43 42 45 43 30 5f 42 52 54 53 0a 0a I0LPCBEC0_BRTS.. 00a0: 60 a4 60 `.` SSDT @ 0xbf6d8e10 0000: 53 53 44 54 5f 02 00 00 01 c8 50 6d 52 65 66 00 SSDT_.....PmRef. 0010: 43 70 75 30 54 73 74 00 00 30 00 00 49 4e 54 4c Cpu0Tst..0..INTL 0020: 24 06 05 20 10 4a 23 5c 2e 5f 50 52 5f 43 50 55 $.. .J#\._PR_CPU 0030: 30 08 5f 54 50 43 0a 00 14 4d 06 5f 50 54 43 00 0._TPC...M._PTC. 0040: a0 37 7b 50 44 43 30 0a 04 00 a4 12 2c 02 11 14 .7{PDC0.....,... 0050: 0a 11 82 0c 00 7f 00 00 00 00 00 00 00 00 00 00 ................ 0060: 00 79 00 11 14 0a 11 82 0c 00 7f 00 00 00 00 00 .y.............. 0070: 00 00 00 00 00 00 79 00 a4 12 2c 02 11 14 0a 11 ......y...,..... 0080: 82 0c 00 01 04 01 00 10 10 00 00 00 00 00 00 79 ...............y 0090: 00 11 14 0a 11 82 0c 00 01 04 01 00 10 10 00 00 ................ 00a0: 00 00 00 00 79 00 08 54 53 53 49 12 41 07 08 12 ....y..TSSI.A... 00b0: 0d 05 0a 64 0b e8 03 0a 00 0a 00 0a 00 12 0d 05 ...d............ 00c0: 0a 58 0b 6b 03 0a 00 0a 0f 0a 00 12 0d 05 0a 4b .X.k...........K 00d0: 0b ee 02 0a 00 0a 0e 0a 00 12 0d 05 0a 3f 0b 71 .............?.q 00e0: 02 0a 00 0a 0d 0a 00 12 0d 05 0a 32 0b f4 01 0a ...........2.... 00f0: 00 0a 0c 0a 00 12 0d 05 0a 26 0b 77 01 0a 00 0a .........&.w.... 0100: 0b 0a 00 12 0c 05 0a 19 0a fa 0a 00 0a 0a 0a 00 ................ 0110: 12 0c 05 0a 0d 0a 7d 0a 00 0a 09 0a 00 08 54 53 ......}.......TS 0120: 53 4d 12 41 07 08 12 0d 05 0a 64 0b e8 03 0a 00 SM.A......d..... 0130: 0a 00 0a 00 12 0d 05 0a 58 0b 6b 03 0a 00 0a 1e ........X.k..... 0140: 0a 00 12 0d 05 0a 4b 0b ee 02 0a 00 0a 1c 0a 00 ......K......... 0150: 12 0d 05 0a 3f 0b 71 02 0a 00 0a 1a 0a 00 12 0d ....?.q......... 0160: 05 0a 32 0b f4 01 0a 00 0a 18 0a 00 12 0d 05 0a ..2............. 0170: 26 0b 77 01 0a 00 0a 16 0a 00 12 0c 05 0a 19 0a &.w............. 0180: fa 0a 00 0a 14 0a 00 12 0c 05 0a 0d 0a 7d 0a 00 .............}.. 0190: 0a 12 0a 00 08 54 53 53 46 0a 00 14 43 08 5f 54 .....TSSF...C._T 01a0: 53 53 00 a0 47 06 90 92 54 53 53 46 5b 12 5f 50 SS..G...TSSF[._P 01b0: 53 53 00 70 5f 50 53 53 60 70 87 60 61 76 61 70 SS.p_PSS`p.`avap 01c0: 83 88 83 88 60 61 00 0a 01 00 62 70 0a 00 63 a2 ....`a....bp..c. 01d0: 35 95 63 87 54 53 53 49 70 78 77 62 74 0a 08 63 5.c.TSSIpxwbt..c 01e0: 00 00 0a 08 00 00 64 70 64 88 83 88 54 53 53 49 ......dpd...TSSI 01f0: 63 00 0a 01 00 70 64 88 83 88 54 53 53 4d 63 00 c....pd...TSSMc. 0200: 0a 01 00 75 63 70 ff 54 53 53 46 a0 0e 7b 50 44 ...ucp.TSSF..{PD 0210: 43 30 0a 04 00 a4 54 53 53 4d a4 54 53 53 49 14 C0....TSSM.TSSI. 0220: 3f 5f 54 53 44 00 a0 27 90 7b 43 46 47 44 0c 00 ?_TSD..'.{CFGD.. 0230: 00 00 01 00 92 7b 50 44 43 30 0a 04 00 a4 12 0f .....{PDC0...... 0240: 01 12 0c 05 0a 05 0a 00 0a 00 0a fd 0a 02 a4 12 ................ 0250: 0f 01 12 0c 05 0a 05 0a 00 0a 00 0a fc 0a 01 ............... SSDT @ 0xbf6d8d6a 0000: 53 53 44 54 a6 00 00 00 01 6d 50 6d 52 65 66 00 SSDT.....mPmRef. 0010: 43 70 75 31 54 73 74 00 00 30 00 00 49 4e 54 4c Cpu1Tst..0..INTL 0020: 24 06 05 20 10 41 08 5c 2e 5f 50 52 5f 43 50 55 $.. .A.\._PR_CPU 0030: 31 08 5f 54 50 43 0a 00 14 16 5f 50 54 43 00 a4 1._TPC...._PTC.. 0040: 5c 2f 03 5f 50 52 5f 43 50 55 30 5f 50 54 43 14 \/._PR_CPU0_PTC. 0050: 16 5f 54 53 53 00 a4 5c 2f 03 5f 50 52 5f 43 50 ._TSS..\/._PR_CP 0060: 55 30 5f 54 53 53 14 3f 5f 54 53 44 00 a0 27 90 U0_TSS.?_TSD..'. 0070: 7b 43 46 47 44 0c 00 00 00 01 00 92 7b 50 44 43 {CFGD.......{PDC 0080: 31 0a 04 00 a4 12 0f 01 12 0c 05 0a 05 0a 00 0a 1............... 0090: 00 0a fd 0a 02 a4 12 0f 01 12 0c 05 0a 05 0a 00 ................ 00a0: 0a 01 0a fc 0a 01 ...... SSDT @ 0xbf6d8884 0000: 53 53 44 54 e6 04 00 00 01 df 50 6d 52 65 66 00 SSDT......PmRef. 0010: 43 70 75 50 6d 00 00 00 00 30 00 00 49 4e 54 4c CpuPm....0..INTL 0020: 24 06 05 20 10 45 08 5c 00 08 53 53 44 54 12 43 $.. .E.\..SSDT.C 0030: 05 0c 0d 43 50 55 30 49 53 54 20 00 0c 9e 95 6d ...CPU0IST ....m 0040: bf 0c b4 01 00 00 0d 43 50 55 31 49 53 54 20 00 .......CPU1IST . 0050: 0c 52 97 6d bf 0c c8 00 00 00 0d 43 50 55 30 43 .R.m.......CPU0C 0060: 53 54 20 00 0c 6f 90 6d bf 0c aa 04 00 00 0d 43 ST ..o.m.......C 0070: 50 55 31 43 53 54 20 00 0c 19 95 6d bf 0c 85 00 PU1CST ....m.... 0080: 00 00 08 43 46 47 44 0c f1 69 3f 11 08 5c 50 44 ...CFGD..i?..\PD 0090: 43 30 0c 00 00 00 80 08 5c 50 44 43 31 0c 00 00 C0......\PDC1... 00a0: 00 80 08 5c 53 44 54 4c 0a 00 10 4d 21 5c 2e 5f ...\SDTL...M!\._ 00b0: 50 52 5f 43 50 55 30 08 48 49 30 5f 0a 00 08 48 PR_CPU0.HI0_...H 00c0: 43 30 5f 0a 00 14 48 06 5f 50 44 43 01 8a 68 0a C0_...H._PDC..h. 00d0: 00 52 45 56 53 8a 68 0a 04 53 49 5a 45 70 87 68 .REVS.h..SIZEp.h 00e0: 60 70 74 60 0a 08 00 61 5b 13 68 0a 40 77 61 0a `pt`...a[.h.@wa. 00f0: 08 00 54 45 4d 50 08 53 54 53 30 11 07 0a 04 00 ..TEMP.STS0..... 0100: 00 00 00 73 53 54 53 30 54 45 4d 50 62 5f 4f 53 ...sSTS0TEMPb_OS 0110: 43 11 13 0a 10 16 a6 77 40 0c 29 be 47 9e bd d8 C......w@.).G... 0120: 70 58 71 39 53 52 45 56 53 53 49 5a 45 62 14 49 pXq9SREVSSIZEb.I 0130: 19 5f 4f 53 43 04 8a 6b 0a 00 53 54 53 30 8a 6b ._OSC..k..STS0.k 0140: 0a 04 43 41 50 30 8a 68 0a 00 49 49 44 30 8a 68 ..CAP0.h..IID0.h 0150: 0a 04 49 49 44 31 8a 68 0a 08 49 49 44 32 8a 68 ..IID1.h..IID2.h 0160: 0a 0c 49 49 44 33 08 55 49 44 30 11 13 0a 10 16 ..IID3.UID0..... 0170: a6 77 40 0c 29 be 47 9e bd d8 70 58 71 39 53 8a .w@.).G...pXq9S. 0180: 55 49 44 30 0a 00 45 49 44 30 8a 55 49 44 30 0a UID0..EID0.UID0. 0190: 04 45 49 44 31 8a 55 49 44 30 0a 08 45 49 44 32 .EID1.UID0..EID2 01a0: 8a 55 49 44 30 0a 0c 45 49 44 33 a0 32 92 90 90 .UID0..EID3.2... 01b0: 93 49 49 44 30 45 49 44 30 93 49 49 44 31 45 49 .IID0EID0.IID1EI 01c0: 44 31 90 93 49 49 44 32 45 49 44 32 93 49 49 44 D1..IID2EID2.IID 01d0: 33 45 49 44 33 70 0a 06 53 54 53 30 a4 6b a0 0f 3EID3p..STS0.k.. 01e0: 92 93 69 0a 01 70 0a 0a 53 54 53 30 a4 6b 7d 7b ..i..p..STS0.k}{ 01f0: 50 44 43 30 0c ff ff ff 7f 00 43 41 50 30 50 44 PDC0......CAP0PD 0200: 43 30 70 7b 50 44 43 30 0a ff 00 50 43 50 30 a0 C0p{PDC0...PCP0. 0210: 4c 05 7b 43 46 47 44 0a 01 00 a0 41 05 90 90 7b L.{CFGD....A...{ 0220: 43 46 47 44 0c 00 00 00 01 00 93 7b 50 44 43 30 CFGD.......{PDC0 0230: 0a 09 00 0a 09 92 7b 53 44 54 4c 0a 01 00 7d 53 ......{SDTL...}S 0240: 44 54 4c 0a 01 53 44 54 4c 5b 80 49 53 54 30 00 DTL..SDTL[.IST0. 0250: 83 88 53 53 44 54 0a 01 00 83 88 53 53 44 54 0a ..SSDT.....SSDT. 0260: 02 00 5b 20 49 53 54 30 48 49 30 5f a0 49 05 7b ..[ IST0HI0_.I.{ 0270: 43 46 47 44 0a f0 00 a0 4e 04 90 90 7b 43 46 47 CFGD....N...{CFG 0280: 44 0c 00 00 00 01 00 7b 50 44 43 30 0a 18 00 92 D......{PDC0.... 0290: 7b 53 44 54 4c 0a 02 00 7d 53 44 54 4c 0a 02 53 {SDTL...}SDTL..S 02a0: 44 54 4c 5b 80 43 53 54 30 00 83 88 53 53 44 54 DTL[.CST0...SSDT 02b0: 0a 07 00 83 88 53 53 44 54 0a 08 00 5b 20 43 53 .....SSDT...[ CS 02c0: 54 30 48 43 30 5f a4 6b 10 4d 21 5c 2e 5f 50 52 T0HC0_.k.M!\._PR 02d0: 5f 43 50 55 31 08 48 49 31 5f 0a 00 08 48 43 31 _CPU1.HI1_...HC1 02e0: 5f 0a 00 14 48 06 5f 50 44 43 01 8a 68 0a 00 52 _...H._PDC..h..R 02f0: 45 56 53 8a 68 0a 04 53 49 5a 45 70 87 68 60 70 EVS.h..SIZEp.h`p 0300: 74 60 0a 08 00 61 5b 13 68 0a 40 77 61 0a 08 00 t`...a[.h.@wa... 0310: 54 45 4d 50 08 53 54 53 31 11 07 0a 04 00 00 00 TEMP.STS1....... 0320: 00 73 53 54 53 31 54 45 4d 50 62 5f 4f 53 43 11 .sSTS1TEMPb_OSC. 0330: 13 0a 10 16 a6 77 40 0c 29 be 47 9e bd d8 70 58 .....w@.).G...pX 0340: 71 39 53 52 45 56 53 53 49 5a 45 62 14 49 19 5f q9SREVSSIZEb.I._ 0350: 4f 53 43 04 8a 6b 0a 00 53 54 53 31 8a 6b 0a 04 OSC..k..STS1.k.. 0360: 43 41 50 31 8a 68 0a 00 49 49 44 30 8a 68 0a 04 CAP1.h..IID0.h.. 0370: 49 49 44 31 8a 68 0a 08 49 49 44 32 8a 68 0a 0c IID1.h..IID2.h.. 0380: 49 49 44 33 08 55 49 44 31 11 13 0a 10 16 a6 77 IID3.UID1......w 0390: 40 0c 29 be 47 9e bd d8 70 58 71 39 53 8a 55 49 @.).G...pXq9S.UI 03a0: 44 31 0a 00 45 49 44 30 8a 55 49 44 31 0a 04 45 D1..EID0.UID1..E 03b0: 49 44 31 8a 55 49 44 31 0a 08 45 49 44 32 8a 55 ID1.UID1..EID2.U 03c0: 49 44 31 0a 0c 45 49 44 33 a0 32 92 90 90 93 49 ID1..EID3.2....I 03d0: 49 44 30 45 49 44 30 93 49 49 44 31 45 49 44 31 ID0EID0.IID1EID1 03e0: 90 93 49 49 44 32 45 49 44 32 93 49 49 44 33 45 ..IID2EID2.IID3E 03f0: 49 44 33 70 0a 06 53 54 53 31 a4 6b a0 0f 92 93 ID3p..STS1.k.... 0400: 69 0a 01 70 0a 0a 53 54 53 31 a4 6b 7d 7b 50 44 i..p..STS1.k}{PD 0410: 43 31 0c ff ff ff 7f 00 43 41 50 31 50 44 43 31 C1......CAP1PDC1 0420: 70 7b 50 44 43 31 0a ff 00 50 43 50 31 a0 4c 05 p{PDC1...PCP1.L. 0430: 7b 43 46 47 44 0a 01 00 a0 41 05 90 90 7b 43 46 {CFGD....A...{CF 0440: 47 44 0c 00 00 00 01 00 93 7b 50 44 43 31 0a 09 GD.......{PDC1.. 0450: 00 0a 09 92 7b 53 44 54 4c 0a 10 00 7d 53 44 54 ....{SDTL...}SDT 0460: 4c 0a 10 53 44 54 4c 5b 80 49 53 54 31 00 83 88 L..SDTL[.IST1... 0470: 53 53 44 54 0a 04 00 83 88 53 53 44 54 0a 05 00 SSDT.....SSDT... 0480: 5b 20 49 53 54 31 48 49 31 5f a0 49 05 7b 43 46 [ IST1HI1_.I.{CF 0490: 47 44 0a f0 00 a0 4e 04 90 90 7b 43 46 47 44 0c GD....N...{CFGD. 04a0: 00 00 00 01 00 7b 50 44 43 31 0a 18 00 92 7b 53 .....{PDC1....{S 04b0: 44 54 4c 0a 20 00 7d 53 44 54 4c 0a 20 53 44 54 DTL. .}SDTL. SDT 04c0: 4c 5b 80 43 53 54 31 00 83 88 53 53 44 54 0a 0a L[.CST1...SSDT.. 04d0: 00 83 88 53 53 44 54 0a 0b 00 5b 20 43 53 54 31 ...SSDT...[ CST1 04e0: 48 43 31 5f a4 6b HC1_.k XSDT @ 0xbf6d87f0 0000: 58 53 44 54 94 00 00 00 01 c2 4c 45 4e 4f 56 4f XSDT......LENOVO 0010: 54 50 2d 36 38 20 20 20 00 00 04 06 20 4c 54 50 TP-68 .... LTP 0020: 00 00 00 00 d2 fb 6d bf 00 00 00 00 c6 fc 6d bf ......m.......m. 0030: 00 00 00 00 2e fd 6d bf 00 00 00 00 66 fd 6d bf ......m.....f.m. 0040: 00 00 00 00 a2 fd 6d bf 00 00 00 00 d4 fd 6d bf ......m.......m. 0050: 00 00 00 00 fa fd 6d bf 00 00 00 00 70 ff 6d bf ......m.....p.m. 0060: 00 00 00 00 d8 ff 6d bf 00 00 00 00 bd 98 6d bf ......m.......m. 0070: 00 00 00 00 1a 98 6d bf 00 00 00 00 10 8e 6d bf ......m.......m. 0080: 00 00 00 00 6a 8d 6d bf 00 00 00 00 84 88 6d bf ....j.m.......m. 0090: 00 00 00 00 .... FACP @ 0xbf6dfbd2 0000: 46 41 43 50 f4 00 00 00 03 52 54 4f 53 43 50 4c FACP.....RTOSCPL 0010: 43 52 45 53 54 4c 4e 45 00 00 04 06 41 4c 41 4e CRESTLNE....ALAN 0020: 01 00 00 00 c0 2f 6e bf 6a 9b 6d bf 00 02 09 00 ...../n.j.m..... 0030: b2 00 00 00 f0 f1 00 80 00 10 00 00 00 00 00 00 ................ 0040: 04 10 00 00 00 00 00 00 20 10 00 00 08 10 00 00 ........ ....... 0050: 28 10 00 00 00 00 00 00 04 02 01 04 08 00 00 85 (............... 0060: 01 00 23 00 00 00 00 00 01 03 0d 00 32 00 00 00 ..#.........2... 0070: a5 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0080: 00 00 00 00 c0 2f 6e bf 00 00 00 00 6a 9b 6d bf ...../n.....j.m. 0090: 00 00 00 00 01 20 00 00 00 10 00 00 00 00 00 00 ..... .......... 00a0: 00 00 00 00 00 00 00 00 00 00 00 00 01 10 00 00 ................ 00b0: 04 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00c0: 00 00 00 00 01 08 00 00 20 10 00 00 00 00 00 00 ........ ....... 00d0: 01 20 00 00 08 10 00 00 00 00 00 00 01 40 00 00 . ...........@.. 00e0: 28 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 (............... 00f0: 00 00 00 00 .... TCPA @ 0xbf6dfda2 0000: 54 43 50 41 32 00 00 00 01 8f 49 6e 74 65 6c 20 TCPA2.....Intel 0010: 43 52 45 53 54 4c 4e 45 00 00 04 06 4c 4f 48 52 CRESTLNE....LOHR 0020: 5a 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 Z............... 0030: 00 00 .. fwts-test/acpidump-0001/test-0001.sh000077500000000000000000000007031231470457100170760ustar00rootroot00000000000000#!/bin/bash # TEST="Test acpidump against known ACPI tables" NAME=test-0001.sh TMPLOG=$TMP/acpidump.log.$$ $FWTS --log-format="%line %owner " -w 80 --dumpfile=$FWTSTESTDIR/acpidump-0001/acpidump.log acpidump - | grep "^[0-9]*[ ]*acpidump" | cut -c7- > $TMPLOG diff $TMPLOG $FWTSTESTDIR/acpidump-0001/acpidump-0001.log >> $FAILURE_LOG ret=$? if [ $ret -eq 0 ]; then echo PASSED: $TEST, $NAME else echo FAILED: $TEST, $NAME fi rm $TMPLOG exit $ret fwts-test/acpitables-0001/000077500000000000000000000000001231470457100155075ustar00rootroot00000000000000fwts-test/acpitables-0001/acpidump-0001.log000066400000000000000000004054211231470457100204000ustar00rootroot00000000000000DSDT @ 0xbf6d9b6a 0000: 44 53 44 54 f4 5f 00 00 02 11 54 4f 53 43 50 4c DSDT._....TOSCPL 0010: 43 52 45 53 54 4c 4e 45 00 00 04 06 49 4e 54 4c CRESTLNE....INTL 0020: 08 06 06 20 08 5a 30 30 30 01 08 5a 30 30 31 0a ... .Z000..Z001. 0030: 02 08 5a 30 30 32 0a 04 08 5a 30 30 33 0a 08 08 ..Z002...Z003... 0040: 5a 30 30 34 00 08 5a 30 30 35 0a 0f 08 5a 30 30 Z004..Z005...Z00 0050: 36 0a 0d 08 5a 30 30 37 0a 0b 08 5a 30 30 38 0a 6...Z007...Z008. 0060: 09 08 45 43 44 59 0a 07 5b 01 4d 55 54 58 00 5b ..ECDY..[.MUTX.[ 0070: 80 50 52 54 30 01 0a 80 0a 04 5b 81 0b 50 52 54 .PRT0.....[..PRT 0080: 30 13 50 38 30 48 20 14 4e 07 50 38 58 48 0a a0 0.P80H .N.P8XH.. 0090: 17 93 68 00 70 7d 7b 50 38 30 44 0c 00 ff ff ff ..h.p}{P80D..... 00a0: 00 69 00 50 38 30 44 a0 1b 93 68 01 70 7d 7b 50 .i.P80D...h.p}{P 00b0: 38 30 44 0c ff 00 ff ff 00 79 69 0a 08 00 00 50 80D......yi....P 00c0: 38 30 44 a0 1c 93 68 0a 02 70 7d 7b 50 38 30 44 80D...h..p}{P80D 00d0: 0c ff ff 00 ff 00 79 69 0a 10 00 00 50 38 30 44 ......yi....P80D 00e0: a0 1c 93 68 0a 03 70 7d 7b 50 38 30 44 0c ff ff ...h..p}{P80D... 00f0: ff 00 00 79 69 0a 18 00 00 50 38 30 44 70 50 38 ...yi....P80DpP8 0100: 30 44 50 38 30 48 14 0c 5f 50 49 43 01 70 68 47 0DP80H.._PIC.phG 0110: 50 49 43 14 46 06 5f 50 54 53 01 70 00 50 38 30 PIC.F._PTS.p.P80 0120: 44 50 38 58 48 00 68 a0 1e 93 68 0a 03 70 01 5c DP8XH.h...h..p.\ 0130: 2f 05 5f 53 42 5f 50 43 49 30 4c 50 43 42 45 43 /._SB_PCI0LPCBEC 0140: 30 5f 53 33 4c 44 a0 33 93 68 0a 04 70 01 5c 2f 0_S3LD.3.h..p.\/ 0150: 05 5f 53 42 5f 50 43 49 30 4c 50 43 42 45 43 30 ._SB_PCI0LPCBEC0 0160: 5f 53 33 4c 44 5c 2f 04 5f 53 42 5f 50 43 49 30 _S3LD\/._SB_PCI0 0170: 4c 50 43 42 50 48 53 53 0a 0e 14 4c 1c 5f 57 41 LPCBPHSS...L._WA 0180: 4b 01 50 38 58 48 01 0a ab a0 30 91 93 68 0a 03 K.P8XH....0..h.. 0190: 93 68 0a 04 a0 25 7b 43 46 47 44 0c 00 00 00 01 .h...%{CFGD..... 01a0: 00 a0 18 90 7b 43 46 47 44 0a f0 00 93 4f 53 59 ....{CFGD....OSY 01b0: 53 0b d1 07 54 52 41 50 0a 3d a0 18 93 52 50 31 S...TRAP.=...RP1 01c0: 44 00 86 5c 2f 03 5f 53 42 5f 50 43 49 30 52 50 D..\/._SB_PCI0RP 01d0: 30 31 00 a0 18 93 52 50 32 44 00 86 5c 2f 03 5f 01....RP2D..\/._ 01e0: 53 42 5f 50 43 49 30 52 50 30 32 00 a0 18 93 52 SB_PCI0RP02....R 01f0: 50 33 44 00 86 5c 2f 03 5f 53 42 5f 50 43 49 30 P3D..\/._SB_PCI0 0200: 52 50 30 33 00 a0 18 93 52 50 34 44 00 86 5c 2f RP03....RP4D..\/ 0210: 03 5f 53 42 5f 50 43 49 30 52 50 30 34 00 a0 18 ._SB_PCI0RP04... 0220: 93 52 50 35 44 00 86 5c 2f 03 5f 53 42 5f 50 43 .RP5D..\/._SB_PC 0230: 49 30 52 50 30 35 00 a0 18 93 52 50 36 44 00 86 I0RP05....RP6D.. 0240: 5c 2f 03 5f 53 42 5f 50 43 49 30 52 50 30 36 00 \/._SB_PCI0RP06. 0250: a0 12 93 68 0a 03 50 38 58 48 00 0a 30 54 52 41 ...h..P8XH..0TRA 0260: 50 0a 46 a0 43 0d 93 68 0a 04 50 38 58 48 00 0a P.F.C..h..P8XH.. 0270: 40 5c 2f 04 5f 53 42 5f 50 43 49 30 4c 50 43 42 @\/._SB_PCI0LPCB 0280: 50 48 53 53 0a 0f 70 57 41 4b 46 60 70 00 57 41 PHSS..pWAKF`p.WA 0290: 4b 46 7b 60 0a 05 60 a0 18 93 60 01 50 38 58 48 KF{`..`...`.P8XH 02a0: 00 0a 41 86 5c 2e 5f 53 42 5f 50 57 52 42 0a 02 ..A.\._SB_PWRB.. 02b0: a0 46 08 44 54 53 45 54 52 41 50 0a 47 a0 42 06 .F.DTSETRAP.G.B. 02c0: 90 5c 2f 04 5f 53 42 5f 50 43 49 30 4c 50 43 42 .\/._SB_PCI0LPCB 02d0: 45 43 4f 4b 93 45 43 44 59 00 a0 27 92 95 44 54 ECOK.ECDY..'..DT 02e0: 53 31 44 54 53 32 70 44 54 53 31 5c 2f 05 5f 53 S1DTS2pDTS1\/._S 02f0: 42 5f 50 43 49 30 4c 50 43 42 45 43 30 5f 53 4b B_PCI0LPCBEC0_SK 0300: 54 41 a1 1d 70 44 54 53 32 5c 2f 05 5f 53 42 5f TA..pDTS2\/._SB_ 0310: 50 43 49 30 4c 50 43 42 45 43 30 5f 53 4b 54 41 PCI0LPCBEC0_SKTA 0320: a1 16 5c 2f 04 5f 53 42 5f 50 43 49 30 4c 50 43 ..\/._SB_PCI0LPC 0330: 42 50 48 53 53 0a 10 5c 2e 5f 50 52 5f 52 50 50 BPHSS..\._PR_RPP 0340: 43 a4 12 04 02 00 00 14 1e 47 45 54 42 0b 77 68 C........GETB.wh 0350: 0a 08 60 77 69 0a 08 61 5b 13 6a 60 61 54 42 46 ..`wi..a[.j`aTBF 0360: 33 a4 54 42 46 33 14 42 09 50 4e 4f 54 08 a0 4a 3.TBF3.B.PNOT..J 0370: 06 4d 50 45 4e a0 31 7b 50 44 43 30 0a 08 00 86 .MPEN.1{PDC0.... 0380: 5c 2e 5f 50 52 5f 43 50 55 30 0a 80 a0 1a 7b 50 \._PR_CPU0....{P 0390: 44 43 30 0a 10 00 5b 22 0a 64 86 5c 2e 5f 50 52 DC0...[".d.\._PR 03a0: 5f 43 50 55 30 0a 81 a0 31 7b 50 44 43 31 0a 08 _CPU0...1{PDC1.. 03b0: 00 86 5c 2e 5f 50 52 5f 43 50 55 31 0a 80 a0 1a ..\._PR_CPU1.... 03c0: 7b 50 44 43 31 0a 10 00 5b 22 0a 64 86 5c 2e 5f {PDC1...[".d.\._ 03d0: 50 52 5f 43 50 55 31 0a 81 a1 1f 86 5c 2e 5f 50 PR_CPU1.....\._P 03e0: 52 5f 43 50 55 30 0a 80 5b 22 0a 64 86 5c 2e 5f R_CPU0..[".d.\._ 03f0: 50 52 5f 43 50 55 30 0a 81 14 17 54 52 41 50 09 PR_CPU0....TRAP. 0400: 70 68 53 4d 49 46 70 00 54 52 50 30 a4 53 4d 49 phSMIFp.TRP0.SMI 0410: 46 10 41 0f 5f 53 42 5f 14 4a 0e 5f 49 4e 49 00 F.A._SB_.J._INI. 0420: 70 0b 99 99 4d 41 52 4b a0 1c 44 54 53 45 54 52 p...MARK..DTSETR 0430: 41 50 0a 47 5e 2f 03 50 43 49 30 4c 50 43 42 50 AP.G^/.PCI0LPCBP 0440: 48 53 53 0a 10 70 0b d0 07 4f 53 59 53 a0 4a 09 HSS..p...OSYS.J. 0450: 5b 12 5f 4f 53 49 60 a0 18 5f 4f 53 49 0d 4c 69 [._OSI`.._OSI.Li 0460: 6e 75 78 00 70 01 4c 49 4e 58 70 00 45 43 44 59 nux.p.LINXp.ECDY 0470: a0 1b 5f 4f 53 49 0d 57 69 6e 64 6f 77 73 20 32 .._OSI.Windows 2 0480: 30 30 31 00 70 0b d1 07 4f 53 59 53 a0 1f 5f 4f 001.p...OSYS.._O 0490: 53 49 0d 57 69 6e 64 6f 77 73 20 32 30 30 31 20 SI.Windows 2001 04a0: 53 50 31 00 70 0b d1 07 4f 53 59 53 a0 1f 5f 4f SP1.p...OSYS.._O 04b0: 53 49 0d 57 69 6e 64 6f 77 73 20 32 30 30 31 20 SI.Windows 2001 04c0: 53 50 32 00 70 0b d2 07 4f 53 59 53 a0 1b 5f 4f SP2.p...OSYS.._O 04d0: 53 49 0d 57 69 6e 64 6f 77 73 20 32 30 30 36 00 SI.Windows 2006. 04e0: 70 0b d6 07 4f 53 59 53 a0 14 90 4d 50 45 4e 93 p...OSYS...MPEN. 04f0: 4f 53 59 53 0b d1 07 54 52 41 50 0a 3d 54 52 41 OSYS...TRAP.=TRA 0500: 50 0a 2b 5b 80 47 4e 56 53 00 0c bc 2d 6e bf 0b P.+[.GNVS...-n.. 0510: 00 01 5b 81 45 24 47 4e 56 53 10 4f 53 59 53 10 ..[.E$GNVS.OSYS. 0520: 53 4d 49 46 08 50 52 4d 30 08 50 52 4d 31 08 53 SMIF.PRM0.PRM1.S 0530: 43 49 46 08 50 52 4d 32 08 50 52 4d 33 08 4c 43 CIF.PRM2.PRM3.LC 0540: 4b 46 08 50 52 4d 34 08 50 52 4d 35 08 50 38 30 KF.PRM4.PRM5.P80 0550: 44 20 4c 49 44 53 08 50 57 52 53 08 44 42 47 53 D LIDS.PWRS.DBGS 0560: 08 4c 49 4e 58 08 00 08 41 43 54 31 08 41 43 54 .LINX...ACT1.ACT 0570: 54 08 50 53 56 54 08 54 43 31 56 08 54 43 32 56 T.PSVT.TC1V.TC2V 0580: 08 54 53 50 56 08 43 52 54 54 08 44 54 53 45 08 .TSPV.CRTT.DTSE. 0590: 44 54 53 31 08 44 54 53 32 08 00 40 05 41 50 49 DTS1.DTS2..@.API 05a0: 43 08 4d 50 45 4e 08 50 43 50 30 08 50 43 50 31 C.MPEN.PCP0.PCP1 05b0: 08 50 50 43 4d 08 00 28 43 4d 41 50 08 43 4d 42 .PPCM..(CMAP.CMB 05c0: 50 08 4c 50 54 50 08 46 44 43 50 08 00 30 49 47 P.LPTP.FDCP..0IG 05d0: 44 53 08 54 4c 53 54 08 43 41 44 4c 08 50 41 44 DS.TLST.CADL.PAD 05e0: 4c 08 43 53 54 45 10 4e 53 54 45 10 53 53 54 45 L.CSTE.NSTE.SSTE 05f0: 10 4e 44 49 44 08 44 49 44 31 20 44 49 44 32 20 .NDID.DID1 DID2 0600: 44 49 44 33 20 44 49 44 34 20 44 49 44 35 20 00 DID3 DID4 DID5 . 0610: 40 06 42 4c 43 53 08 42 52 54 4c 08 41 4c 53 45 @.BLCS.BRTL.ALSE 0620: 08 41 4c 41 46 08 4c 4c 4f 57 08 4c 48 49 48 08 .ALAF.LLOW.LHIH. 0630: 00 08 45 4d 41 45 08 45 4d 41 50 10 45 4d 41 4c ..EMAE.EMAP.EMAL 0640: 10 00 08 4d 45 46 45 08 00 18 54 50 4d 50 08 54 ...MEFE...TPMP.T 0650: 50 4d 45 08 00 40 04 47 54 46 30 38 47 54 46 32 PME..@.GTF08GTF2 0660: 38 49 44 45 4d 08 47 54 46 31 38 00 40 09 41 53 8IDEM.GTF18.@.AS 0670: 4c 42 20 49 42 54 54 08 49 50 41 54 08 49 54 56 LB IBTT.IPAT.ITV 0680: 46 08 49 54 56 4d 08 49 50 53 43 08 49 42 4c 43 F.ITVM.IPSC.IBLC 0690: 08 49 42 49 41 08 49 53 53 43 08 49 34 30 39 08 .IBIA.ISSC.I409. 06a0: 49 35 30 39 08 49 36 30 39 08 49 37 30 39 08 49 I509.I609.I709.I 06b0: 44 4d 4d 08 49 44 4d 53 08 49 46 31 45 08 48 56 DMM.IDMS.IF1E.HV 06c0: 43 4f 08 4e 58 44 31 20 4e 58 44 32 20 4d 41 52 CO.NXD1 NXD2 MAR 06d0: 4b 10 42 52 41 44 08 42 54 45 4e 08 56 56 45 4e K.BRAD.BTEN.VVEN 06e0: 08 42 47 54 4c 08 54 4d 45 45 01 00 07 53 43 55 .BGTL.TMEE...SCU 06f0: 30 01 53 43 55 31 01 53 43 55 32 01 53 43 55 33 0.SCU1.SCU2.SCU3 0700: 01 00 04 58 4b 53 50 01 58 4b 49 4e 01 58 4b 49 ...XKSP.XKIN.XKI 0710: 44 01 58 4b 4f 4b 01 00 04 42 47 55 31 08 42 53 D.XKOK...BGU1.BS 0720: 54 31 08 42 46 43 31 10 57 4b 4c 4e 08 57 41 4b T1.BFC1.WKLN.WAK 0730: 46 08 44 53 4d 44 08 42 41 59 53 08 48 41 50 45 F.DSMD.BAYS.HAPE 0740: 01 00 07 44 54 53 4d 01 00 07 4f 44 54 31 08 4f ...DTSM...ODT1.O 0750: 44 54 32 08 44 54 53 57 08 08 44 53 45 4e 01 08 DT2.DTSW..DSEN.. 0760: 45 43 4f 4e 00 08 47 50 49 43 00 08 43 54 59 50 ECON..GPIC..CTYP 0770: 00 08 4c 30 31 43 00 08 56 46 4e 30 00 08 56 46 ..L01C..VFN0..VF 0780: 4e 31 00 10 4a 7c 5f 47 50 45 14 46 35 5f 4c 30 N1..J|_GPE.F5_L0 0790: 31 00 72 4c 30 31 43 01 4c 30 31 43 50 38 58 48 1.rL01C.L01CP8XH 07a0: 00 01 50 38 58 48 01 4c 30 31 43 a0 48 08 90 93 ..P8XH.L01C.H... 07b0: 52 50 31 44 00 5c 2f 04 5f 53 42 5f 50 43 49 30 RP1D.\/._SB_PCI0 07c0: 52 50 30 31 48 50 53 58 5b 22 0a 64 a0 40 05 5c RP01HPSX[".d.@.\ 07d0: 2f 04 5f 53 42 5f 50 43 49 30 52 50 30 31 50 44 /._SB_PCI0RP01PD 07e0: 43 58 70 01 5c 2f 04 5f 53 42 5f 50 43 49 30 52 CXp.\/._SB_PCI0R 07f0: 50 30 31 50 44 43 58 70 01 5c 2f 04 5f 53 42 5f P01PDCXp.\/._SB_ 0800: 50 43 49 30 52 50 30 31 48 50 53 58 86 5c 2f 03 PCI0RP01HPSX.\/. 0810: 5f 53 42 5f 50 43 49 30 52 50 30 31 00 a1 16 70 _SB_PCI0RP01...p 0820: 01 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 30 31 .\/._SB_PCI0RP01 0830: 48 50 53 58 a0 48 08 90 93 52 50 32 44 00 5c 2f HPSX.H...RP2D.\/ 0840: 04 5f 53 42 5f 50 43 49 30 52 50 30 32 48 50 53 ._SB_PCI0RP02HPS 0850: 58 5b 22 0a 64 a0 40 05 5c 2f 04 5f 53 42 5f 50 X[".d.@.\/._SB_P 0860: 43 49 30 52 50 30 32 50 44 43 58 70 01 5c 2f 04 CI0RP02PDCXp.\/. 0870: 5f 53 42 5f 50 43 49 30 52 50 30 32 50 44 43 58 _SB_PCI0RP02PDCX 0880: 70 01 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 30 p.\/._SB_PCI0RP0 0890: 32 48 50 53 58 86 5c 2f 03 5f 53 42 5f 50 43 49 2HPSX.\/._SB_PCI 08a0: 30 52 50 30 32 00 a1 16 70 01 5c 2f 04 5f 53 42 0RP02...p.\/._SB 08b0: 5f 50 43 49 30 52 50 30 32 48 50 53 58 a0 48 08 _PCI0RP02HPSX.H. 08c0: 90 93 52 50 33 44 00 5c 2f 04 5f 53 42 5f 50 43 ..RP3D.\/._SB_PC 08d0: 49 30 52 50 30 33 48 50 53 58 5b 22 0a 64 a0 40 I0RP03HPSX[".d.@ 08e0: 05 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 30 33 .\/._SB_PCI0RP03 08f0: 50 44 43 58 70 01 5c 2f 04 5f 53 42 5f 50 43 49 PDCXp.\/._SB_PCI 0900: 30 52 50 30 33 50 44 43 58 70 01 5c 2f 04 5f 53 0RP03PDCXp.\/._S 0910: 42 5f 50 43 49 30 52 50 30 33 48 50 53 58 86 5c B_PCI0RP03HPSX.\ 0920: 2f 03 5f 53 42 5f 50 43 49 30 52 50 30 33 00 a1 /._SB_PCI0RP03.. 0930: 16 70 01 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 .p.\/._SB_PCI0RP 0940: 30 33 48 50 53 58 a0 48 08 90 93 52 50 34 44 00 03HPSX.H...RP4D. 0950: 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 30 34 48 \/._SB_PCI0RP04H 0960: 50 53 58 5b 22 0a 64 a0 40 05 5c 2f 04 5f 53 42 PSX[".d.@.\/._SB 0970: 5f 50 43 49 30 52 50 30 34 50 44 43 58 70 01 5c _PCI0RP04PDCXp.\ 0980: 2f 04 5f 53 42 5f 50 43 49 30 52 50 30 34 50 44 /._SB_PCI0RP04PD 0990: 43 58 70 01 5c 2f 04 5f 53 42 5f 50 43 49 30 52 CXp.\/._SB_PCI0R 09a0: 50 30 34 48 50 53 58 86 5c 2f 03 5f 53 42 5f 50 P04HPSX.\/._SB_P 09b0: 43 49 30 52 50 30 34 00 a1 16 70 01 5c 2f 04 5f CI0RP04...p.\/._ 09c0: 53 42 5f 50 43 49 30 52 50 30 34 48 50 53 58 a0 SB_PCI0RP04HPSX. 09d0: 48 08 90 93 52 50 35 44 00 5c 2f 04 5f 53 42 5f H...RP5D.\/._SB_ 09e0: 50 43 49 30 52 50 30 35 48 50 53 58 5b 22 0a 64 PCI0RP05HPSX[".d 09f0: a0 40 05 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 .@.\/._SB_PCI0RP 0a00: 30 35 50 44 43 58 70 01 5c 2f 04 5f 53 42 5f 50 05PDCXp.\/._SB_P 0a10: 43 49 30 52 50 30 35 50 44 43 58 70 01 5c 2f 04 CI0RP05PDCXp.\/. 0a20: 5f 53 42 5f 50 43 49 30 52 50 30 35 48 50 53 58 _SB_PCI0RP05HPSX 0a30: 86 5c 2f 03 5f 53 42 5f 50 43 49 30 52 50 30 35 .\/._SB_PCI0RP05 0a40: 00 a1 16 70 01 5c 2f 04 5f 53 42 5f 50 43 49 30 ...p.\/._SB_PCI0 0a50: 52 50 30 35 48 50 53 58 a0 48 08 90 93 52 50 36 RP05HPSX.H...RP6 0a60: 44 00 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 30 D.\/._SB_PCI0RP0 0a70: 36 48 50 53 58 5b 22 0a 64 a0 40 05 5c 2f 04 5f 6HPSX[".d.@.\/._ 0a80: 53 42 5f 50 43 49 30 52 50 30 36 50 44 43 58 70 SB_PCI0RP06PDCXp 0a90: 01 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 30 36 .\/._SB_PCI0RP06 0aa0: 50 44 43 58 70 01 5c 2f 04 5f 53 42 5f 50 43 49 PDCXp.\/._SB_PCI 0ab0: 30 52 50 30 36 48 50 53 58 86 5c 2f 03 5f 53 42 0RP06HPSX.\/._SB 0ac0: 5f 50 43 49 30 52 50 30 36 00 a1 16 70 01 5c 2f _PCI0RP06...p.\/ 0ad0: 04 5f 53 42 5f 50 43 49 30 52 50 30 36 48 50 53 ._SB_PCI0RP06HPS 0ae0: 58 14 42 0d 5f 4c 30 32 00 70 00 47 50 45 43 a0 X.B._L02.p.GPEC. 0af0: 4d 0a 5c 2f 04 5f 53 42 5f 50 43 49 30 4c 50 43 M.\/._SB_PCI0LPC 0b00: 42 45 43 4f 4b a0 4e 04 93 44 54 53 57 01 a0 27 BECOK.N..DTSW..' 0b10: 92 95 44 54 53 31 44 54 53 32 70 44 54 53 31 5c ..DTS1DTS2pDTS1\ 0b20: 2f 05 5f 53 42 5f 50 43 49 30 4c 50 43 42 45 43 /._SB_PCI0LPCBEC 0b30: 30 5f 53 4b 54 41 a1 1d 70 44 54 53 32 5c 2f 05 0_SKTA..pDTS2\/. 0b40: 5f 53 42 5f 50 43 49 30 4c 50 43 42 45 43 30 5f _SB_PCI0LPCBEC0_ 0b50: 53 4b 54 41 a1 48 04 a0 27 92 95 4f 44 54 31 4f SKTA.H..'..ODT1O 0b60: 44 54 32 70 4f 44 54 31 5c 2f 05 5f 53 42 5f 50 DT2pODT1\/._SB_P 0b70: 43 49 30 4c 50 43 42 45 43 30 5f 53 4b 54 41 a1 CI0LPCBEC0_SKTA. 0b80: 1d 70 4f 44 54 32 5c 2f 05 5f 53 42 5f 50 43 49 .pODT2\/._SB_PCI 0b90: 30 4c 50 43 42 45 43 30 5f 53 4b 54 41 a1 16 5c 0LPCBEC0_SKTA..\ 0ba0: 2f 04 5f 53 42 5f 50 43 49 30 4c 50 43 42 50 48 /._SB_PCI0LPCBPH 0bb0: 53 53 0a 10 14 18 5f 4c 30 33 00 86 5c 2f 03 5f SS...._L03..\/._ 0bc0: 53 42 5f 50 43 49 30 55 53 42 31 0a 02 14 18 5f SB_PCI0USB1...._ 0bd0: 4c 30 34 00 86 5c 2f 03 5f 53 42 5f 50 43 49 30 L04..\/._SB_PCI0 0be0: 55 53 42 32 0a 02 14 18 5f 4c 30 35 00 86 5c 2f USB2...._L05..\/ 0bf0: 03 5f 53 42 5f 50 43 49 30 55 53 42 35 0a 02 14 ._SB_PCI0USB5... 0c00: 36 5f 4c 30 36 00 a0 27 5c 2f 04 5f 53 42 5f 50 6_L06..'\/._SB_P 0c10: 43 49 30 47 46 58 30 47 53 53 45 5c 2f 04 5f 53 CI0GFX0GSSE\/._S 0c20: 42 5f 50 43 49 30 47 46 58 30 47 53 43 49 a1 07 B_PCI0GFX0GSCI.. 0c30: 70 01 53 43 49 53 14 43 1f 5f 4c 30 39 00 a0 41 p.SCIS.C._L09..A 0c40: 05 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 30 31 .\/._SB_PCI0RP01 0c50: 50 53 50 58 70 01 5c 2f 04 5f 53 42 5f 50 43 49 PSPXp.\/._SB_PCI 0c60: 30 52 50 30 31 50 53 50 58 70 01 5c 2f 04 5f 53 0RP01PSPXp.\/._S 0c70: 42 5f 50 43 49 30 52 50 30 31 50 4d 53 58 86 5c B_PCI0RP01PMSX.\ 0c80: 2f 03 5f 53 42 5f 50 43 49 30 52 50 30 31 0a 02 /._SB_PCI0RP01.. 0c90: a0 41 05 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 .A.\/._SB_PCI0RP 0ca0: 30 32 50 53 50 58 70 01 5c 2f 04 5f 53 42 5f 50 02PSPXp.\/._SB_P 0cb0: 43 49 30 52 50 30 32 50 53 50 58 70 01 5c 2f 04 CI0RP02PSPXp.\/. 0cc0: 5f 53 42 5f 50 43 49 30 52 50 30 32 50 4d 53 58 _SB_PCI0RP02PMSX 0cd0: 86 5c 2f 03 5f 53 42 5f 50 43 49 30 52 50 30 32 .\/._SB_PCI0RP02 0ce0: 0a 02 a0 41 05 5c 2f 04 5f 53 42 5f 50 43 49 30 ...A.\/._SB_PCI0 0cf0: 52 50 30 33 50 53 50 58 70 01 5c 2f 04 5f 53 42 RP03PSPXp.\/._SB 0d00: 5f 50 43 49 30 52 50 30 33 50 53 50 58 70 01 5c _PCI0RP03PSPXp.\ 0d10: 2f 04 5f 53 42 5f 50 43 49 30 52 50 30 33 50 4d /._SB_PCI0RP03PM 0d20: 53 58 86 5c 2f 03 5f 53 42 5f 50 43 49 30 52 50 SX.\/._SB_PCI0RP 0d30: 30 33 0a 02 a0 41 05 5c 2f 04 5f 53 42 5f 50 43 03...A.\/._SB_PC 0d40: 49 30 52 50 30 34 50 53 50 58 70 01 5c 2f 04 5f I0RP04PSPXp.\/._ 0d50: 53 42 5f 50 43 49 30 52 50 30 34 50 53 50 58 70 SB_PCI0RP04PSPXp 0d60: 01 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 30 34 .\/._SB_PCI0RP04 0d70: 50 4d 53 58 86 5c 2f 03 5f 53 42 5f 50 43 49 30 PMSX.\/._SB_PCI0 0d80: 52 50 30 34 0a 02 a0 41 05 5c 2f 04 5f 53 42 5f RP04...A.\/._SB_ 0d90: 50 43 49 30 52 50 30 35 50 53 50 58 70 01 5c 2f PCI0RP05PSPXp.\/ 0da0: 04 5f 53 42 5f 50 43 49 30 52 50 30 35 50 53 50 ._SB_PCI0RP05PSP 0db0: 58 70 01 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 Xp.\/._SB_PCI0RP 0dc0: 30 35 50 4d 53 58 86 5c 2f 03 5f 53 42 5f 50 43 05PMSX.\/._SB_PC 0dd0: 49 30 52 50 30 35 0a 02 a0 41 05 5c 2f 04 5f 53 I0RP05...A.\/._S 0de0: 42 5f 50 43 49 30 52 50 30 36 50 53 50 58 70 01 B_PCI0RP06PSPXp. 0df0: 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 30 36 50 \/._SB_PCI0RP06P 0e00: 53 50 58 70 01 5c 2f 04 5f 53 42 5f 50 43 49 30 SPXp.\/._SB_PCI0 0e10: 52 50 30 36 50 4d 53 58 86 5c 2f 03 5f 53 42 5f RP06PMSX.\/._SB_ 0e20: 50 43 49 30 52 50 30 36 0a 02 14 18 5f 4c 30 42 PCI0RP06...._L0B 0e30: 00 86 5c 2f 03 5f 53 42 5f 50 43 49 30 50 43 49 ..\/._SB_PCI0PCI 0e40: 42 0a 02 14 18 5f 4c 30 43 00 86 5c 2f 03 5f 53 B...._L0C..\/._S 0e50: 42 5f 50 43 49 30 55 53 42 33 0a 02 14 4b 0b 5f B_PCI0USB3...K._ 0e60: 4c 30 44 00 a0 3b 5c 2f 04 5f 53 42 5f 50 43 49 L0D..;\/._SB_PCI 0e70: 30 45 48 43 31 50 4d 45 53 70 01 5c 2f 04 5f 53 0EHC1PMESp.\/._S 0e80: 42 5f 50 43 49 30 45 48 43 31 50 4d 45 53 86 5c B_PCI0EHC1PMES.\ 0e90: 2f 03 5f 53 42 5f 50 43 49 30 45 48 43 31 0a 02 /._SB_PCI0EHC1.. 0ea0: a0 3b 5c 2f 04 5f 53 42 5f 50 43 49 30 45 48 43 .;\/._SB_PCI0EHC 0eb0: 32 50 4d 45 53 70 01 5c 2f 04 5f 53 42 5f 50 43 2PMESp.\/._SB_PC 0ec0: 49 30 45 48 43 32 50 4d 45 53 86 5c 2f 03 5f 53 I0EHC2PMES.\/._S 0ed0: 42 5f 50 43 49 30 45 48 43 32 0a 02 a0 3b 5c 2f B_PCI0EHC2...;\/ 0ee0: 04 5f 53 42 5f 50 43 49 30 48 44 45 46 50 4d 45 ._SB_PCI0HDEFPME 0ef0: 53 70 01 5c 2f 04 5f 53 42 5f 50 43 49 30 48 44 Sp.\/._SB_PCI0HD 0f00: 45 46 50 4d 45 53 86 5c 2f 03 5f 53 42 5f 50 43 EFPMES.\/._SB_PC 0f10: 49 30 48 44 45 46 0a 02 14 18 5f 4c 30 45 00 86 I0HDEF...._L0E.. 0f20: 5c 2f 03 5f 53 42 5f 50 43 49 30 55 53 42 34 0a \/._SB_PCI0USB4. 0f30: 02 14 1c 5f 4c 31 42 00 80 4c 50 4f 4c 4c 50 4f ..._L1B..LPOLLPO 0f40: 4c 86 5c 2e 5f 53 42 5f 4c 49 44 30 0a 80 10 46 L.\._SB_LID0...F 0f50: 0b 5f 50 52 5f 5b 83 0b 43 50 55 30 00 10 10 00 ._PR_[..CPU0.... 0f60: 00 06 5b 83 0b 43 50 55 31 01 10 10 00 00 06 14 ..[..CPU1....... 0f70: 45 09 52 50 50 43 00 a0 4d 08 93 4f 53 59 53 0b E.RPPC..M..OSYS. 0f80: d2 07 a0 42 08 7b 43 46 47 44 01 00 a0 42 04 94 ...B.{CFGD...B.. 0f90: 5e 2e 43 50 55 30 5f 50 50 43 00 74 5e 2e 43 50 ^.CPU0_PPC.t^.CP 0fa0: 55 30 5f 50 50 43 01 5e 2e 43 50 55 30 5f 50 50 U0_PPC.^.CPU0_PP 0fb0: 43 50 4e 4f 54 72 5e 2e 43 50 55 30 5f 50 50 43 CPNOTr^.CPU0_PPC 0fc0: 01 5e 2e 43 50 55 30 5f 50 50 43 50 4e 4f 54 a1 .^.CPU0_PPCPNOT. 0fd0: 35 72 5e 2e 43 50 55 30 5f 50 50 43 01 5e 2e 43 5r^.CPU0_PPC.^.C 0fe0: 50 55 30 5f 50 50 43 50 4e 4f 54 74 5e 2e 43 50 PU0_PPCPNOTt^.CP 0ff0: 55 30 5f 50 50 43 01 5e 2e 43 50 55 30 5f 50 50 U0_PPC.^.CPU0_PP 1000: 43 50 4e 4f 54 08 46 57 53 4f 0d 46 57 53 4f 00 CPNOT.FWSO.FWSO. 1010: 08 5f 50 53 43 00 14 12 5f 50 53 30 00 70 5f 50 ._PSC..._PS0.p_P 1020: 53 43 60 70 00 5f 50 53 43 14 0d 5f 50 53 33 00 SC`p._PSC.._PS3. 1030: 70 0a 03 5f 50 53 43 10 8c fb 04 5f 53 42 5f 5b p.._PSC...._SB_[ 1040: 82 4f 3e 41 4d 57 30 08 5f 48 49 44 0d 70 6e 70 .O>AMW0._HID.pnp 1050: 30 63 31 34 00 08 5f 55 49 44 00 08 5f 57 44 47 0c14.._UID.._WDG 1060: 11 3f 0a 3c a7 1d 85 2e 53 d0 5f 49 9d fa 1a 4a .?.<....S._I...J 1070: d6 2e 6a 86 41 43 01 00 3b 6d 43 71 dd fb 72 4c ..j.AC..;mCq..rL 1080: bc b8 43 5b fe 0d 64 f9 42 43 01 00 21 12 90 05 ..C[..d.BC..!... 1090: 66 d5 d1 11 b2 f0 00 a0 c9 06 29 10 42 41 01 00 f.........).BA.. 10a0: 08 53 54 41 43 11 07 0a 04 01 14 03 00 14 1f 57 .STAC..........W 10b0: 51 41 43 01 70 0d 4d 58 4d 54 43 43 6f 6e 66 69 QAC.p.MXMTCConfi 10c0: 67 44 61 74 61 00 5b 31 a4 53 54 41 43 08 53 54 gData.[1.STAC.ST 10d0: 42 43 11 07 0a 04 01 00 00 00 14 34 57 51 42 43 BC.........4WQBC 10e0: 01 70 0d 47 65 74 20 4d 58 4d 54 43 43 6f 6e 74 .p.Get MXMTCCont 10f0: 72 6f 6c 44 61 74 61 3a 20 53 54 42 43 20 3d 20 rolData: STBC = 1100: 00 5b 31 70 53 54 42 43 5b 31 a4 53 54 42 43 14 .[1pSTBC[1.STBC. 1110: 47 06 57 53 42 43 02 70 69 53 54 42 43 70 0d 53 G.WSBC.piSTBCp.S 1120: 65 74 20 4d 58 4d 54 43 43 6f 6e 74 72 6f 6c 44 et MXMTCControlD 1130: 61 74 61 3a 20 53 54 42 43 20 3d 20 00 5b 31 70 ata: STBC = .[1p 1140: 53 54 42 43 5b 31 a0 30 93 5e 5e 2f 03 50 43 49 STBC[1.0.^^/.PCI 1150: 30 4c 50 43 42 45 43 4f 4b 01 70 83 88 53 54 42 0LPCBECOK.p..STB 1160: 43 01 00 5e 5e 2f 04 50 43 49 30 4c 50 43 42 45 C..^^/.PCI0LPCBE 1170: 43 30 5f 53 4b 54 43 08 57 51 42 41 11 43 2b 0b C0_SKTC.WQBA.C+. 1180: ae 02 46 4f 4d 42 01 00 00 00 9e 02 00 00 c0 0b ..FOMB.......... 1190: 00 00 44 53 00 01 1a 7d da 54 28 d9 85 00 01 06 ..DS...}.T(..... 11a0: 18 42 10 07 10 0a 4b 61 02 c9 21 52 3c 18 94 05 .B....Ka..!R<... 11b0: 10 43 88 57 04 44 04 84 bc 0a b0 29 c0 24 88 fa .C.W.D.....).$.. 11c0: f7 87 28 09 0e 25 04 42 12 05 98 17 a0 5b 80 61 ..(..%.B.....[.a 11d0: 01 b6 05 98 16 e0 18 92 4a 03 a7 04 96 02 21 a1 ........J.....!. 11e0: 02 94 0b f0 2d 40 3b a2 24 0b b0 0c 23 02 8f 82 ....-@;.$...#... 11f0: a1 71 68 ec 30 2c 13 4c 83 38 8c b2 91 45 60 dc .qh.0,.L.8...E`. 1200: 4e 05 c8 15 20 4c 80 78 54 61 34 07 45 e0 42 63 N... L.xTa4.E.Bc 1210: 64 40 c8 a3 00 ab a3 d0 a4 12 d8 bd 00 65 02 2c d@...........e., 1220: 0a 10 27 c0 9a 00 63 48 32 28 40 9b 00 5b 20 42 ..'...cH2(@..[ B 1230: 0f d4 19 8a 46 70 02 51 6a 46 11 48 ac 1a 01 85 ....Fp.QjF.H.... 1240: 12 34 46 b0 10 81 c2 86 37 46 98 03 88 d1 fe 20 .4F.....7F..... 1250: 48 20 05 e3 66 91 46 83 1a 6b 82 63 f7 68 4e b8 H ..f.F..k.c.hN. 1260: 73 01 d2 e7 26 90 a3 3b b8 3a 07 4d 86 c7 b0 1e s...&..;.:.M.... 1270: 06 d8 29 00 ef 1a 50 d3 3f 78 26 08 0e 35 44 8f ..)...P.?x&..5D. 1280: 3a dc 09 1c fb 91 30 88 b3 3b 6e ac c3 c9 68 d0 :.....0..;n...h. 1290: a5 0a 30 7b 00 d0 d0 12 9c f6 99 84 7e 0f 38 9f ..0{........~.8. 12a0: 9e 21 89 fc 41 a0 46 e6 ff 3f b4 c7 78 5a 31 43 .!..A.F..?..xZ1C 12b0: 3e 0b 1c 16 13 0b a1 4d 6a 3c 40 40 e1 d1 40 08 >......Mj<@@..@. 12c0: 6f 06 9e af 09 46 86 90 93 f1 a0 06 e0 41 d7 3a o....F.......A.: 12d0: 32 8d 27 a6 21 cf e8 00 22 bf 32 78 0c 41 02 f9 2.'.!...".2x.A.. 12e0: c4 60 b8 c7 81 13 78 02 f0 59 40 10 92 00 21 51 .`....x..Y@...!Q 12f0: e3 a7 47 08 7e 7a 78 93 30 28 1f d2 99 f9 90 e1 ..G.~zx.0(...... 1300: 11 c2 07 c4 7b 9f 3b 19 c1 29 7b a4 e0 b0 7e 0e ....{.;..){...~. 1310: 20 c0 af 0f 8f 0d 09 7c ae 08 8c 1d aa fd 0a 40 ......|.......@ 1320: 08 1e ed 51 e0 54 23 1c 2d 78 08 8a 1c 03 4a cc ...Q.T#.-x....J. 1330: 18 50 03 38 85 d0 e7 73 04 47 14 25 f6 21 19 da .P.8...s.G.%.!.. 1340: 08 e1 1f 39 4e c1 f7 8b 23 3d ad 23 78 91 f0 08 ...9N...#=.#x... 1350: 30 e1 ce 28 a8 38 30 f4 ff 7f 4c 01 dc 7a 3b a6 0..(.80...L..z;. 1360: 80 3e c0 31 05 50 fc ff 3f a6 00 87 a8 c7 14 f4 .>.1.P..?....... 1370: 40 0c 7c 2e a1 0d ff 96 c1 8e 03 87 74 6a 8f 28 @.|.........tj.( 1380: 80 29 79 47 14 50 8c 14 d6 f1 04 18 05 3c 9b a0 .)yG.P.......<.. 1390: 22 1d 4f 80 ce ff ff 78 02 58 b8 9a bc 92 84 7d ".O....x.X.....} 13a0: 1e 78 1d 89 14 e3 41 e2 b5 e4 c1 24 46 98 08 8f .x....A....$F... 13b0: 27 1e 47 c0 b7 82 28 91 8e 3e c4 83 49 28 63 3e '.G...(..>..I(c> 13c0: a3 84 89 f9 04 70 22 ef 27 46 0a 73 2a 8f 27 2c .....p".'F.s*.', 13d0: c4 f1 04 a0 85 e2 e3 09 3a 2c 84 fe ff c7 13 dc ........:,...... 13e0: e1 c1 a7 0c fc 85 0c c6 f9 04 30 24 f0 7c 02 ca ..........0$.|.. 13f0: db 18 e6 80 02 8c 14 da f4 a9 d1 a8 55 83 32 35 ............U.25 1400: ca 34 a8 d5 a7 52 63 c6 4c 9c 52 bc 6c 8d df f2 .4...Rc.L.R.l... 1410: 9e 09 02 b1 20 0a 81 38 cc f3 42 20 96 a2 01 84 .... ..8..B .... 1420: 85 06 a1 42 a9 05 e2 98 20 34 92 0a 10 f6 ff 07 ...B.... 4...... 1430: 5b 82 1b 4c 49 44 30 08 5f 48 49 44 0c 41 d0 0c [..LID0._HID.A.. 1440: 0d 14 0b 5f 4c 49 44 00 a4 4c 50 4f 4c 5b 82 0f ..._LID..LPOL[.. 1450: 50 57 52 42 08 5f 48 49 44 0c 41 d0 0c 0c 5b 82 PWRB._HID.A...[. 1460: 84 b9 04 50 43 49 30 14 09 5f 53 33 44 00 a4 0a ...PCI0.._S3D... 1470: 02 14 09 5f 53 34 44 00 a4 0a 02 08 5f 48 49 44 ..._S4D....._HID 1480: 0c 41 d0 0a 08 08 5f 43 49 44 0c 41 d0 0a 03 5b .A...._CID.A...[ 1490: 82 43 0e 4d 43 48 43 08 5f 41 44 52 00 5b 80 48 .C.MCHC._ADR.[.H 14a0: 42 55 53 02 0a 40 0a c0 5b 81 4a 0c 48 42 55 53 BUS..@..[.J.HBUS 14b0: 03 45 50 45 4e 01 00 0b 45 50 42 52 14 00 20 4d .EPEN...EPBR.. M 14c0: 48 45 4e 01 00 0d 4d 48 42 52 12 00 40 0a 50 58 HEN...MHBR..@.PX 14d0: 45 4e 01 50 58 53 5a 02 00 17 50 58 42 52 06 00 EN.PXSZ...PXBR.. 14e0: 20 44 49 45 4e 01 00 0b 44 49 42 52 14 00 20 49 DIEN...DIBR.. I 14f0: 50 45 4e 01 00 0b 49 50 42 52 14 00 40 0e 00 04 PEN...IPBR..@... 1500: 50 4d 30 48 02 00 02 50 4d 31 4c 02 00 02 50 4d PM0H...PM1L...PM 1510: 31 48 02 00 02 50 4d 32 4c 02 00 02 50 4d 32 48 1H...PM2L...PM2H 1520: 02 00 02 50 4d 33 4c 02 00 02 50 4d 33 48 02 00 ...PM3L...PM3H.. 1530: 02 50 4d 34 4c 02 00 02 50 4d 34 48 02 00 02 50 .PM4L...PM4H...P 1540: 4d 35 4c 02 00 02 50 4d 35 48 02 00 02 50 4d 36 M5L...PM5H...PM6 1550: 4c 02 00 02 50 4d 36 48 02 00 02 00 07 48 45 4e L...PM6H.....HEN 1560: 41 01 00 40 05 54 55 55 44 10 00 40 06 00 04 54 A..@.TUUD..@...T 1570: 4c 55 44 0c 08 42 55 46 30 11 4d 20 0b 08 02 88 LUD..BUF0.M .... 1580: 0d 00 02 0c 00 00 00 00 00 ff 00 00 00 00 01 87 ................ 1590: 17 00 01 0c 03 00 00 00 00 00 00 00 00 f7 0c 00 ................ 15a0: 00 00 00 00 00 f8 0c 00 00 47 01 f8 0c f8 0c 01 .........G...... 15b0: 08 87 17 00 01 0c 03 00 00 00 00 00 0d 00 00 ff ................ 15c0: ff 00 00 00 00 00 00 00 f3 00 00 87 17 00 00 0c ................ 15d0: 03 00 00 00 00 00 00 0a 00 ff ff 0b 00 00 00 00 ................ 15e0: 00 00 00 02 00 87 17 00 00 0c 03 00 00 00 00 00 ................ 15f0: 00 0c 00 ff 3f 0c 00 00 00 00 00 00 40 00 00 87 ....?.......@... 1600: 17 00 00 0c 03 00 00 00 00 00 40 0c 00 ff 7f 0c ..........@..... 1610: 00 00 00 00 00 00 40 00 00 87 17 00 00 0c 03 00 ......@......... 1620: 00 00 00 00 80 0c 00 ff bf 0c 00 00 00 00 00 00 ................ 1630: 40 00 00 87 17 00 00 0c 03 00 00 00 00 00 c0 0c @............... 1640: 00 ff ff 0c 00 00 00 00 00 00 40 00 00 87 17 00 ..........@..... 1650: 00 0c 03 00 00 00 00 00 00 0d 00 ff 3f 0d 00 00 ............?... 1660: 00 00 00 00 40 00 00 87 17 00 00 0c 03 00 00 00 ....@........... 1670: 00 00 40 0d 00 ff 7f 0d 00 00 00 00 00 00 40 00 ..@...........@. 1680: 00 87 17 00 00 0c 03 00 00 00 00 00 80 0d 00 ff ................ 1690: bf 0d 00 00 00 00 00 00 40 00 00 87 17 00 00 0c ........@....... 16a0: 03 00 00 00 00 00 c0 0d 00 ff ff 0d 00 00 00 00 ................ 16b0: 00 00 40 00 00 87 17 00 00 0c 03 00 00 00 00 00 ..@............. 16c0: 00 0e 00 ff 3f 0e 00 00 00 00 00 00 40 00 00 87 ....?.......@... 16d0: 17 00 00 0c 03 00 00 00 00 00 40 0e 00 ff 7f 0e ..........@..... 16e0: 00 00 00 00 00 00 40 00 00 87 17 00 00 0c 03 00 ......@......... 16f0: 00 00 00 00 80 0e 00 ff bf 0e 00 00 00 00 00 00 ................ 1700: 40 00 00 87 17 00 00 0c 03 00 00 00 00 00 c0 0e @............... 1710: 00 ff ff 0e 00 00 00 00 00 00 40 00 00 87 17 00 ..........@..... 1720: 00 0c 03 00 00 00 00 00 00 0f 00 ff ff 0f 00 00 ................ 1730: 00 00 00 00 00 01 00 87 17 00 00 0c 03 00 00 00 ................ 1740: 00 00 00 00 00 ff ff ff df 00 00 00 00 00 00 00 ................ 1750: 00 87 17 00 00 0c 03 00 00 00 00 00 00 00 f0 ff ................ 1760: ff bf fe 00 00 00 00 00 00 c0 0e 87 17 00 00 0c ................ 1770: 03 00 00 00 00 00 00 d4 fe ff 4f d4 fe 00 00 00 ..........O..... 1780: 00 00 00 00 00 79 00 14 4b 3d 5f 43 52 53 08 a0 .....y..K=_CRS.. 1790: 1c 5e 2e 4d 43 48 43 50 4d 31 4c 8a 42 55 46 30 .^.MCHCPM1L.BUF0 17a0: 0a 7c 43 30 4c 4e 70 00 43 30 4c 4e a0 1f 93 5e .|C0LNp.C0LN...^ 17b0: 2e 4d 43 48 43 50 4d 31 4c 01 8d 42 55 46 30 0b .MCHCPM1L..BUF0. 17c0: 58 03 43 30 52 57 70 00 43 30 52 57 a0 1c 5e 2e X.C0RWp.C0RW..^. 17d0: 4d 43 48 43 50 4d 31 48 8a 42 55 46 30 0a 96 43 MCHCPM1H.BUF0..C 17e0: 34 4c 4e 70 00 43 34 4c 4e a0 1f 93 5e 2e 4d 43 4LNp.C4LN...^.MC 17f0: 48 43 50 4d 31 48 01 8d 42 55 46 30 0b 28 04 43 HCPM1H..BUF0.(.C 1800: 34 52 57 70 00 43 34 52 57 a0 1c 5e 2e 4d 43 48 4RWp.C4RW..^.MCH 1810: 43 50 4d 32 4c 8a 42 55 46 30 0a b0 43 38 4c 4e CPM2L.BUF0..C8LN 1820: 70 00 43 38 4c 4e a0 1f 93 5e 2e 4d 43 48 43 50 p.C8LN...^.MCHCP 1830: 4d 32 4c 01 8d 42 55 46 30 0b f8 04 43 38 52 57 M2L..BUF0...C8RW 1840: 70 00 43 38 52 57 a0 1c 5e 2e 4d 43 48 43 50 4d p.C8RW..^.MCHCPM 1850: 32 48 8a 42 55 46 30 0a ca 43 43 4c 4e 70 00 43 2H.BUF0..CCLNp.C 1860: 43 4c 4e a0 1f 93 5e 2e 4d 43 48 43 50 4d 32 48 CLN...^.MCHCPM2H 1870: 01 8d 42 55 46 30 0b c8 05 43 43 52 57 70 00 43 ..BUF0...CCRWp.C 1880: 43 52 57 a0 1c 5e 2e 4d 43 48 43 50 4d 33 4c 8a CRW..^.MCHCPM3L. 1890: 42 55 46 30 0a e4 44 30 4c 4e 70 00 44 30 4c 4e BUF0..D0LNp.D0LN 18a0: a0 1f 93 5e 2e 4d 43 48 43 50 4d 33 4c 01 8d 42 ...^.MCHCPM3L..B 18b0: 55 46 30 0b 98 06 44 30 52 57 70 00 44 30 52 57 UF0...D0RWp.D0RW 18c0: a0 1c 5e 2e 4d 43 48 43 50 4d 33 48 8a 42 55 46 ..^.MCHCPM3H.BUF 18d0: 30 0a fe 44 34 4c 4e 70 00 44 34 4c 4e a0 1f 93 0..D4LNp.D4LN... 18e0: 5e 2e 4d 43 48 43 50 4d 33 48 01 8d 42 55 46 30 ^.MCHCPM3H..BUF0 18f0: 0b 68 07 44 34 52 57 70 00 44 34 52 57 a0 1d 5e .h.D4RWp.D4RW..^ 1900: 2e 4d 43 48 43 50 4d 34 4c 8a 42 55 46 30 0b 18 .MCHCPM4L.BUF0.. 1910: 01 44 38 4c 4e 70 00 44 38 4c 4e a0 1f 93 5e 2e .D8LNp.D8LN...^. 1920: 4d 43 48 43 50 4d 34 4c 01 8d 42 55 46 30 0b 38 MCHCPM4L..BUF0.8 1930: 08 44 38 52 57 70 00 44 38 52 57 a0 1d 5e 2e 4d .D8RWp.D8RW..^.M 1940: 43 48 43 50 4d 34 48 8a 42 55 46 30 0b 32 01 44 CHCPM4H.BUF0.2.D 1950: 43 4c 4e 70 00 44 43 4c 4e a0 1f 93 5e 2e 4d 43 CLNp.DCLN...^.MC 1960: 48 43 50 4d 34 48 01 8d 42 55 46 30 0b 08 09 44 HCPM4H..BUF0...D 1970: 43 52 57 70 00 44 43 52 57 a0 1d 5e 2e 4d 43 48 CRWp.DCRW..^.MCH 1980: 43 50 4d 35 4c 8a 42 55 46 30 0b 4c 01 45 30 4c CPM5L.BUF0.L.E0L 1990: 4e 70 00 45 30 4c 4e a0 1f 93 5e 2e 4d 43 48 43 Np.E0LN...^.MCHC 19a0: 50 4d 35 4c 01 8d 42 55 46 30 0b d8 09 45 30 52 PM5L..BUF0...E0R 19b0: 57 70 00 45 30 52 57 a0 1d 5e 2e 4d 43 48 43 50 Wp.E0RW..^.MCHCP 19c0: 4d 35 48 8a 42 55 46 30 0b 66 01 45 34 4c 4e 70 M5H.BUF0.f.E4LNp 19d0: 00 45 34 4c 4e a0 1f 93 5e 2e 4d 43 48 43 50 4d .E4LN...^.MCHCPM 19e0: 35 48 01 8d 42 55 46 30 0b a8 0a 45 34 52 57 70 5H..BUF0...E4RWp 19f0: 00 45 34 52 57 a0 1d 5e 2e 4d 43 48 43 50 4d 36 .E4RW..^.MCHCPM6 1a00: 4c 8a 42 55 46 30 0b 80 01 45 38 4c 4e 70 00 45 L.BUF0...E8LNp.E 1a10: 38 4c 4e a0 1f 93 5e 2e 4d 43 48 43 50 4d 36 4c 8LN...^.MCHCPM6L 1a20: 01 8d 42 55 46 30 0b 78 0b 45 38 52 57 70 00 45 ..BUF0.x.E8RWp.E 1a30: 38 52 57 a0 1d 5e 2e 4d 43 48 43 50 4d 36 48 8a 8RW..^.MCHCPM6H. 1a40: 42 55 46 30 0b 9a 01 45 43 4c 4e 70 00 45 43 4c BUF0...ECLNp.ECL 1a50: 4e a0 1f 93 5e 2e 4d 43 48 43 50 4d 36 48 01 8d N...^.MCHCPM6H.. 1a60: 42 55 46 30 0b 48 0c 45 43 52 57 70 00 45 43 52 BUF0.H.ECRWp.ECR 1a70: 57 a0 1d 5e 2e 4d 43 48 43 50 4d 30 48 8a 42 55 W..^.MCHCPM0H.BU 1a80: 46 30 0b b4 01 46 30 4c 4e 70 00 46 30 4c 4e a0 F0...F0LNp.F0LN. 1a90: 1f 93 5e 2e 4d 43 48 43 50 4d 30 48 01 8d 42 55 ..^.MCHCPM0H..BU 1aa0: 46 30 0b 18 0d 46 30 52 57 70 00 46 30 52 57 8a F0...F0RWp.F0RW. 1ab0: 42 55 46 30 0b c2 01 4d 31 4d 4e 8a 42 55 46 30 BUF0...M1MN.BUF0 1ac0: 0b c6 01 4d 31 4d 58 8a 42 55 46 30 0b ce 01 4d ...M1MX.BUF0...M 1ad0: 31 4c 4e 8a 42 55 46 30 0b dc 01 4d 32 4d 4e 8a 1LN.BUF0...M2MN. 1ae0: 42 55 46 30 0b e0 01 4d 32 4d 58 8a 42 55 46 30 BUF0...M2MX.BUF0 1af0: 0b e8 01 4d 32 4c 4e 79 5e 2e 4d 43 48 43 50 58 ...M2LNy^.MCHCPX 1b00: 42 52 0a 1a 4d 31 4d 58 7a 0c 00 00 00 10 5e 2e BR..M1MXz.....^. 1b10: 4d 43 48 43 50 58 53 5a 60 72 4d 31 4d 58 60 4d MCHCPXSZ`rM1MX`M 1b20: 32 4d 4e 72 74 4d 32 4d 58 4d 32 4d 4e 00 01 4d 2MNrtM2MXM2MN..M 1b30: 32 4c 4e 74 4d 31 4d 58 01 4d 31 4d 58 79 5e 2e 2LNtM1MX.M1MXy^. 1b40: 4d 43 48 43 54 4c 55 44 0a 14 4d 31 4d 4e 72 74 MCHCTLUD..M1MNrt 1b50: 4d 31 4d 58 4d 31 4d 4e 00 01 4d 31 4c 4e a4 42 M1MXM1MN..M1LN.B 1b60: 55 46 30 14 47 28 5f 50 52 54 00 a0 45 0f 47 50 UF0.G(_PRT..E.GP 1b70: 49 43 a4 12 4d 0e 13 12 0b 04 0c ff ff 01 00 00 IC..M........... 1b80: 00 0a 10 12 0b 04 0c ff ff 02 00 00 00 0a 10 12 ................ 1b90: 0b 04 0c ff ff 07 00 00 00 0a 10 12 0b 04 0c ff ................ 1ba0: ff 19 00 00 00 0a 14 12 0b 04 0c ff ff 1a 00 00 ................ 1bb0: 00 0a 10 12 0b 04 0c ff ff 1a 00 01 00 0a 15 12 ................ 1bc0: 0c 04 0c ff ff 1a 00 0a 02 00 0a 12 12 0b 04 0c ................ 1bd0: ff ff 1b 00 00 00 0a 16 12 0b 04 0c ff ff 1c 00 ................ 1be0: 00 00 0a 11 12 0b 04 0c ff ff 1c 00 01 00 0a 10 ................ 1bf0: 12 0c 04 0c ff ff 1c 00 0a 02 00 0a 12 12 0c 04 ................ 1c00: 0c ff ff 1c 00 0a 03 00 0a 13 12 0b 04 0c ff ff ................ 1c10: 1d 00 00 00 0a 17 12 0b 04 0c ff ff 1d 00 01 00 ................ 1c20: 0a 13 12 0c 04 0c ff ff 1d 00 0a 02 00 0a 12 12 ................ 1c30: 0b 04 0c ff ff 1f 00 00 00 0a 13 12 0b 04 0c ff ................ 1c40: ff 1f 00 01 00 0a 13 12 0c 04 0c ff ff 1f 00 0a ................ 1c50: 02 00 0a 13 12 0c 04 0c ff ff 1f 00 0a 03 00 0a ................ 1c60: 10 a1 49 18 a4 12 45 18 13 12 13 04 0c ff ff 01 ..I...E......... 1c70: 00 00 5e 2e 4c 50 43 42 4c 4e 4b 41 00 12 13 04 ..^.LPCBLNKA.... 1c80: 0c ff ff 02 00 00 5e 2e 4c 50 43 42 4c 4e 4b 41 ......^.LPCBLNKA 1c90: 00 12 13 04 0c ff ff 07 00 00 5e 2e 4c 50 43 42 ..........^.LPCB 1ca0: 4c 4e 4b 41 00 12 13 04 0c ff ff 19 00 00 5e 2e LNKA..........^. 1cb0: 4c 50 43 42 4c 4e 4b 45 00 12 13 04 0c ff ff 1a LPCBLNKE........ 1cc0: 00 00 5e 2e 4c 50 43 42 4c 4e 4b 41 00 12 13 04 ..^.LPCBLNKA.... 1cd0: 0c ff ff 1a 00 01 5e 2e 4c 50 43 42 4c 4e 4b 46 ......^.LPCBLNKF 1ce0: 00 12 14 04 0c ff ff 1a 00 0a 02 5e 2e 4c 50 43 ...........^.LPC 1cf0: 42 4c 4e 4b 43 00 12 13 04 0c ff ff 1b 00 00 5e BLNKC..........^ 1d00: 2e 4c 50 43 42 4c 4e 4b 47 00 12 13 04 0c ff ff .LPCBLNKG....... 1d10: 1c 00 00 5e 2e 4c 50 43 42 4c 4e 4b 42 00 12 13 ...^.LPCBLNKB... 1d20: 04 0c ff ff 1c 00 01 5e 2e 4c 50 43 42 4c 4e 4b .......^.LPCBLNK 1d30: 41 00 12 14 04 0c ff ff 1c 00 0a 02 5e 2e 4c 50 A...........^.LP 1d40: 43 42 4c 4e 4b 43 00 12 14 04 0c ff ff 1c 00 0a CBLNKC.......... 1d50: 03 5e 2e 4c 50 43 42 4c 4e 4b 44 00 12 13 04 0c .^.LPCBLNKD..... 1d60: ff ff 1d 00 00 5e 2e 4c 50 43 42 4c 4e 4b 48 00 .....^.LPCBLNKH. 1d70: 12 13 04 0c ff ff 1d 00 01 5e 2e 4c 50 43 42 4c .........^.LPCBL 1d80: 4e 4b 44 00 12 14 04 0c ff ff 1d 00 0a 02 5e 2e NKD...........^. 1d90: 4c 50 43 42 4c 4e 4b 43 00 12 13 04 0c ff ff 1f LPCBLNKC........ 1da0: 00 00 5e 2e 4c 50 43 42 4c 4e 4b 44 00 12 13 04 ..^.LPCBLNKD.... 1db0: 0c ff ff 1f 00 01 5e 2e 4c 50 43 42 4c 4e 4b 44 ......^.LPCBLNKD 1dc0: 00 12 14 04 0c ff ff 1f 00 0a 02 5e 2e 4c 50 43 ...........^.LPC 1dd0: 42 4c 4e 4b 44 00 12 14 04 0c ff ff 1f 00 0a 03 BLNKD........... 1de0: 5e 2e 4c 50 43 42 4c 4e 4b 41 00 5b 82 40 14 50 ^.LPCBLNKA.[.@.P 1df0: 44 52 43 08 5f 48 49 44 0c 41 d0 0c 02 08 5f 55 DRC._HID.A...._U 1e00: 49 44 01 08 42 55 46 30 11 46 06 0a 62 86 09 00 ID..BUF0.F..b... 1e10: 01 00 00 00 00 00 40 00 00 86 09 00 01 00 00 00 ......@......... 1e20: 00 00 40 00 00 86 09 00 01 00 00 00 00 00 10 00 ..@............. 1e30: 00 86 09 00 01 00 00 00 00 00 10 00 00 86 09 00 ................ 1e40: 01 00 00 00 00 00 00 00 00 86 09 00 01 00 00 d2 ................ 1e50: fe 00 00 02 00 86 09 00 01 00 00 d4 fe 00 50 00 ..............P. 1e60: 00 86 09 00 01 00 50 d4 fe 00 b0 04 00 79 00 14 ......P......y.. 1e70: 4d 0b 5f 43 52 53 08 8a 42 55 46 30 0a 04 52 42 M._CRS..BUF0..RB 1e80: 52 30 79 5e 5e 2e 4c 50 43 42 52 43 42 41 0a 0e R0y^^.LPCBRCBA.. 1e90: 52 42 52 30 8a 42 55 46 30 0a 10 4d 42 52 30 79 RBR0.BUF0..MBR0y 1ea0: 5e 5e 2e 4d 43 48 43 4d 48 42 52 0a 0e 4d 42 52 ^^.MCHCMHBR..MBR 1eb0: 30 8a 42 55 46 30 0a 1c 44 42 52 30 79 5e 5e 2e 0.BUF0..DBR0y^^. 1ec0: 4d 43 48 43 44 49 42 52 0a 0c 44 42 52 30 8a 42 MCHCDIBR..DBR0.B 1ed0: 55 46 30 0a 28 45 42 52 30 79 5e 5e 2e 4d 43 48 UF0.(EBR0y^^.MCH 1ee0: 43 45 50 42 52 0a 0c 45 42 52 30 8a 42 55 46 30 CEPBR..EBR0.BUF0 1ef0: 0a 34 58 42 52 30 79 5e 5e 2e 4d 43 48 43 50 58 .4XBR0y^^.MCHCPX 1f00: 42 52 0a 1a 58 42 52 30 8a 42 55 46 30 0a 38 58 BR..XBR0.BUF0.8X 1f10: 53 5a 30 7a 0c 00 00 00 10 5e 5e 2e 4d 43 48 43 SZ0z.....^^.MCHC 1f20: 50 58 53 5a 58 53 5a 30 a4 42 55 46 30 5b 82 4d PXSZXSZ0.BUF0[.M 1f30: 50 50 45 47 50 08 5f 41 44 52 0c 00 00 01 00 14 PPEGP._ADR...... 1f40: 41 09 5f 50 52 54 00 a0 33 47 50 49 43 a4 12 2c A._PRT..3GPIC.., 1f50: 04 12 09 04 0b ff ff 00 00 0a 10 12 09 04 0b ff ................ 1f60: ff 01 00 0a 11 12 0a 04 0b ff ff 0a 02 00 0a 12 ................ 1f70: 12 0a 04 0b ff ff 0a 03 00 0a 13 a1 45 05 a4 12 ............E... 1f80: 41 05 04 12 12 04 0b ff ff 00 5e 5e 2e 4c 50 43 A.........^^.LPC 1f90: 42 4c 4e 4b 41 00 12 12 04 0b ff ff 01 5e 5e 2e BLNKA........^^. 1fa0: 4c 50 43 42 4c 4e 4b 42 00 12 13 04 0b ff ff 0a LPCBLNKB........ 1fb0: 02 5e 5e 2e 4c 50 43 42 4c 4e 4b 43 00 12 13 04 .^^.LPCBLNKC.... 1fc0: 0b ff ff 0a 03 5e 5e 2e 4c 50 43 42 4c 4e 4b 44 .....^^.LPCBLNKD 1fd0: 00 5b 82 49 46 56 47 41 5f 08 5f 41 44 52 00 08 .[.IFVGA_._ADR.. 1fe0: 53 57 49 54 01 08 43 52 54 41 01 08 4c 43 44 41 SWIT..CRTA..LCDA 1ff0: 01 08 54 56 41 41 01 08 56 4c 44 46 01 5b 80 56 ..TVAA..VLDF.[.V 2000: 49 44 53 02 00 0a c8 5b 81 0b 56 49 44 53 03 56 IDS....[..VIDS.V 2010: 44 49 44 20 14 09 5f 53 54 41 00 a4 0a 0f 08 5f DID .._STA....._ 2020: 50 53 43 00 14 0c 5f 50 53 30 00 70 00 5f 50 53 PSC..._PS0.p._PS 2030: 43 14 0c 5f 50 53 31 00 70 01 5f 50 53 43 14 0d C.._PS1.p._PSC.. 2040: 5f 50 53 33 00 70 0a 03 5f 50 53 43 14 10 5f 44 _PS3.p.._PSC.._D 2050: 4f 53 01 70 7b 68 0a 03 00 53 57 49 54 14 17 5f OS.p{h...SWIT.._ 2060: 44 4f 44 00 a4 12 0f 03 0c 00 01 01 00 0c 10 01 DOD............. 2070: 01 00 0b 00 02 5b 82 4d 08 43 52 54 5f 14 0a 5f .....[.M.CRT_.._ 2080: 41 44 52 00 a4 0b 00 01 14 41 06 5f 44 43 53 00 ADR......A._DCS. 2090: 5e 5e 5e 5e 2e 4c 50 43 42 50 48 53 53 0a 0c 70 ^^^^.LPCBPHSS..p 20a0: 43 41 44 4c 60 70 43 53 54 45 61 7b 60 0a 02 60 CADL`pCSTEa{`..` 20b0: 7b 61 0a 02 61 a0 08 60 70 01 43 52 54 41 a1 07 {a..a..`p.CRTA.. 20c0: 70 00 43 52 54 41 a0 13 43 52 54 41 a0 08 93 61 p.CRTA..CRTA...a 20d0: 0a 02 a4 0a 1f a1 04 a4 0a 1d a1 0f a0 08 93 61 ...............a 20e0: 0a 02 a4 0a 0f a1 04 a4 0a 0d 14 12 5f 44 47 53 ............_DGS 20f0: 00 a0 07 43 52 54 41 a4 01 a1 03 a4 00 14 06 5f ...CRTA........_ 2100: 44 53 53 01 5b 82 47 0e 4c 43 44 5f 14 0a 5f 41 DSS.[.G.LCD_.._A 2110: 44 52 00 a4 0b 10 01 14 4d 05 5f 44 43 53 00 5e DR......M._DCS.^ 2120: 5e 5e 5e 2e 4c 50 43 42 50 48 53 53 0a 0c 70 43 ^^^.LPCBPHSS..pC 2130: 41 44 4c 60 70 43 53 54 45 61 7b 60 01 60 7b 61 ADL`pCSTEa{`.`{a 2140: 01 61 a0 08 60 70 01 4c 43 44 41 a1 07 70 00 4c .a..`p.LCDA..p.L 2150: 43 44 41 a0 12 4c 43 44 41 a0 07 93 61 01 a4 0a CDA..LCDA...a... 2160: 1f a1 04 a4 0a 1d a1 0e a0 07 93 61 01 a4 0a 0f ...........a.... 2170: a1 04 a4 0a 0d 14 12 5f 44 47 53 00 a0 07 4c 43 ......._DGS...LC 2180: 44 41 a4 01 a1 03 a4 00 14 06 5f 44 53 53 01 14 DA........_DSS.. 2190: 1d 5f 42 43 4c 00 a4 12 15 0a 0a 46 0a 28 00 0a ._BCL......F.(.. 21a0: 0a 0a 14 0a 1e 0a 28 0a 32 0a 3c 0a 46 14 20 5f ......(.2.<.F. _ 21b0: 42 43 4d 01 78 68 0a 0a 60 61 70 61 5e 5e 5e 5e BCM.xh..`apa^^^^ 21c0: 2f 03 4c 50 43 42 45 43 30 5f 42 52 54 53 14 1e /.LPCBEC0_BRTS.. 21d0: 5f 42 51 43 00 77 5e 5e 5e 5e 2f 03 4c 50 43 42 _BQC.w^^^^/.LPCB 21e0: 45 43 30 5f 42 52 54 53 0a 0a 60 a4 60 5b 82 4d EC0_BRTS..`.`[.M 21f0: 08 54 56 5f 5f 14 0a 5f 41 44 52 00 a4 0b 00 02 .TV__.._ADR..... 2200: 14 41 06 5f 44 43 53 00 5e 5e 5e 5e 2e 4c 50 43 .A._DCS.^^^^.LPC 2210: 42 50 48 53 53 0a 0c 70 43 41 44 4c 60 70 43 53 BPHSS..pCADL`pCS 2220: 54 45 61 7b 60 0a 04 60 7b 61 0a 04 61 a0 08 60 TEa{`..`{a..a..` 2230: 70 01 54 56 41 41 a1 07 70 00 54 56 41 41 a0 13 p.TVAA..p.TVAA.. 2240: 54 56 41 41 a0 08 93 61 0a 04 a4 0a 1f a1 04 a4 TVAA...a........ 2250: 0a 1d a1 0f a0 08 93 61 0a 04 a4 0a 0f a1 04 a4 .......a........ 2260: 0a 0d 14 12 5f 44 47 53 00 a0 07 54 56 41 41 a4 ...._DGS...TVAA. 2270: 01 a1 03 a4 00 14 06 5f 44 53 53 01 14 49 10 44 ......._DSS..I.D 2280: 53 53 57 00 a0 4a 0e 93 53 57 49 54 00 5e 5e 5e SSW..J..SWIT.^^^ 2290: 2e 4c 50 43 42 50 48 53 53 0a 0c 70 43 41 44 4c .LPCBPHSS..pCADL 22a0: 60 70 43 53 54 45 61 a0 16 94 61 01 7b 60 61 56 `pCSTEa...a.{`aV 22b0: 4c 44 46 7b 56 4c 44 46 0a fe 56 4c 44 46 a0 43 LDF{VLDF..VLDF.C 22c0: 0a 56 4c 44 46 a0 27 93 60 0a 09 a0 0b 93 61 0a .VLDF.'.`.....a. 22d0: 08 53 54 42 4c 0a 02 a0 0a 93 61 01 53 54 42 4c .STBL.....a.STBL 22e0: 0a 03 a0 0a 93 61 0a 09 53 54 42 4c 01 a0 28 93 .....a..STBL..(. 22f0: 60 0a 0a a0 0b 93 61 0a 08 53 54 42 4c 0a 05 a0 `.....a..STBL... 2300: 0a 93 61 0a 02 53 54 42 4c 01 a0 0b 93 61 0a 0a ..a..STBL....a.. 2310: 53 54 42 4c 0a 04 a0 4b 04 93 60 0a 0b a0 0b 93 STBL...K..`..... 2320: 61 0a 08 53 54 42 4c 0a 02 a0 0b 93 61 0a 09 53 a..STBL.....a..S 2330: 54 42 4c 0a 05 a0 0a 93 61 01 53 54 42 4c 0a 03 TBL.....a.STBL.. 2340: a0 0b 93 61 0a 0a 53 54 42 4c 0a 04 a0 0a 93 61 ...a..STBL.....a 2350: 0a 02 53 54 42 4c 01 a0 0a 93 61 0a 0b 53 54 42 ..STBL....a..STB 2360: 4c 01 a1 0c 70 01 56 4c 44 46 53 54 42 4c 01 a1 L...p.VLDFSTBL.. 2370: 16 a0 14 93 53 57 49 54 01 5e 5e 5e 2e 4c 50 43 ....SWIT.^^^.LPC 2380: 42 50 48 53 53 01 14 45 0b 53 54 42 4c 01 a0 16 BPHSS..E.STBL... 2390: 93 68 01 70 00 43 52 54 41 70 01 4c 43 44 41 70 .h.p.CRTAp.LCDAp 23a0: 00 54 56 41 41 a0 17 93 68 0a 02 70 01 43 52 54 .TVAA...h..p.CRT 23b0: 41 70 00 4c 43 44 41 70 00 54 56 41 41 a0 17 93 Ap.LCDAp.TVAA... 23c0: 68 0a 03 70 01 43 52 54 41 70 01 4c 43 44 41 70 h..p.CRTAp.LCDAp 23d0: 00 54 56 41 41 a0 17 93 68 0a 04 70 00 43 52 54 .TVAA...h..p.CRT 23e0: 41 70 00 4c 43 44 41 70 01 54 56 41 41 a0 17 93 Ap.LCDAp.TVAA... 23f0: 68 0a 05 70 00 43 52 54 41 70 01 4c 43 44 41 70 h..p.CRTAp.LCDAp 2400: 01 54 56 41 41 a0 17 93 68 0a 06 70 01 43 52 54 .TVAA...h..p.CRT 2410: 41 70 00 4c 43 44 41 70 01 54 56 41 41 a0 17 93 Ap.LCDAp.TVAA... 2420: 68 0a 07 70 01 43 52 54 41 70 01 4c 43 44 41 70 h..p.CRTAp.LCDAp 2430: 01 54 56 41 41 86 56 47 41 5f 0a 80 5b 82 42 f8 .TVAA.VGA_..[.B. 2440: 47 46 58 30 08 5f 41 44 52 0c 00 00 02 00 14 10 GFX0._ADR....... 2450: 5f 44 4f 53 01 70 7b 68 0a 07 00 44 53 45 4e 14 _DOS.p{h...DSEN. 2460: 41 26 5f 44 4f 44 00 70 00 4e 44 49 44 a0 15 92 A&_DOD.p.NDID... 2470: 93 44 49 44 4c 00 70 53 44 44 4c 44 49 44 31 44 .DIDL.pSDDLDID1D 2480: 49 44 31 a0 15 92 93 44 44 4c 32 00 70 53 44 44 ID1....DDL2.pSDD 2490: 4c 44 49 44 32 44 49 44 32 a0 15 92 93 44 44 4c LDID2DID2....DDL 24a0: 33 00 70 53 44 44 4c 44 49 44 33 44 49 44 33 a0 3.pSDDLDID3DID3. 24b0: 15 92 93 44 44 4c 34 00 70 53 44 44 4c 44 49 44 ...DDL4.pSDDLDID 24c0: 34 44 49 44 34 a0 15 92 93 44 44 4c 35 00 70 53 4DID4....DDL5.pS 24d0: 44 44 4c 44 49 44 35 44 49 44 35 a0 2c 93 4e 44 DDLDID5DID5.,.ND 24e0: 49 44 01 08 54 4d 50 31 12 07 01 0c ff ff ff ff ID..TMP1........ 24f0: 70 7d 0c 00 00 01 00 44 49 44 31 00 88 54 4d 50 p}.....DID1..TMP 2500: 31 00 00 a4 54 4d 50 31 a0 46 04 93 4e 44 49 44 1...TMP1.F..NDID 2510: 0a 02 08 54 4d 50 32 12 0c 02 0c ff ff ff ff 0c ...TMP2......... 2520: ff ff ff ff 70 7d 0c 00 00 01 00 44 49 44 31 00 ....p}.....DID1. 2530: 88 54 4d 50 32 00 00 70 7d 0c 00 00 01 00 44 49 .TMP2..p}.....DI 2540: 44 32 00 88 54 4d 50 32 01 00 a4 54 4d 50 32 a0 D2..TMP2...TMP2. 2550: 4f 05 93 4e 44 49 44 0a 03 08 54 4d 50 33 12 11 O..NDID...TMP3.. 2560: 03 0c ff ff ff ff 0c ff ff ff ff 0c ff ff ff ff ................ 2570: 70 7d 0c 00 00 01 00 44 49 44 31 00 88 54 4d 50 p}.....DID1..TMP 2580: 33 00 00 70 7d 0c 00 00 01 00 44 49 44 32 00 88 3..p}.....DID2.. 2590: 54 4d 50 33 01 00 70 7d 0c 00 00 01 00 44 49 44 TMP3..p}.....DID 25a0: 33 00 88 54 4d 50 33 0a 02 00 a4 54 4d 50 33 a0 3..TMP3....TMP3. 25b0: 48 07 93 4e 44 49 44 0a 04 08 54 4d 50 34 12 16 H..NDID...TMP4.. 25c0: 04 0c ff ff ff ff 0c ff ff ff ff 0c ff ff ff ff ................ 25d0: 0c ff ff ff ff 70 7d 0c 00 00 01 00 44 49 44 31 .....p}.....DID1 25e0: 00 88 54 4d 50 34 00 00 70 7d 0c 00 00 01 00 44 ..TMP4..p}.....D 25f0: 49 44 32 00 88 54 4d 50 34 01 00 70 7d 0c 00 00 ID2..TMP4..p}... 2600: 01 00 44 49 44 33 00 88 54 4d 50 34 0a 02 00 70 ..DID3..TMP4...p 2610: 7d 0c 00 00 01 00 44 49 44 34 00 88 54 4d 50 34 }.....DID4..TMP4 2620: 0a 03 00 a4 54 4d 50 34 a0 41 09 94 4e 44 49 44 ....TMP4.A..NDID 2630: 0a 04 08 54 4d 50 35 12 1b 05 0c ff ff ff ff 0c ...TMP5......... 2640: ff ff ff ff 0c ff ff ff ff 0c ff ff ff ff 0c ff ................ 2650: ff ff ff 70 7d 0c 00 00 01 00 44 49 44 31 00 88 ...p}.....DID1.. 2660: 54 4d 50 35 00 00 70 7d 0c 00 00 01 00 44 49 44 TMP5..p}.....DID 2670: 32 00 88 54 4d 50 35 01 00 70 7d 0c 00 00 01 00 2..TMP5..p}..... 2680: 44 49 44 33 00 88 54 4d 50 35 0a 02 00 70 7d 0c DID3..TMP5...p}. 2690: 00 00 01 00 44 49 44 34 00 88 54 4d 50 35 0a 03 ....DID4..TMP5.. 26a0: 00 70 7d 0c 00 00 01 00 44 49 44 34 00 88 54 4d .p}.....DID4..TM 26b0: 50 35 0a 04 00 a4 54 4d 50 35 a4 12 05 01 0b 00 P5....TMP5...... 26c0: 04 5b 82 43 06 44 44 30 31 14 1c 5f 41 44 52 08 .[.C.DD01.._ADR. 26d0: a0 09 93 44 49 44 31 00 a4 01 a1 0b a4 7b 0b ff ...DID1......{.. 26e0: ff 44 49 44 31 00 14 0f 5f 44 43 53 00 a4 43 44 .DID1..._DCS..CD 26f0: 44 53 44 49 44 31 14 0f 5f 44 47 53 00 a4 4e 44 DSDID1.._DGS..ND 2700: 44 53 44 49 44 31 14 1f 5f 44 53 53 01 a0 18 93 DSDID1.._DSS.... 2710: 7b 68 0c 00 00 00 c0 00 0c 00 00 00 c0 70 4e 53 {h...........pNS 2720: 54 45 43 53 54 45 5b 82 44 06 44 44 30 32 14 1d TECSTE[.D.DD02.. 2730: 5f 41 44 52 08 a0 0a 93 44 49 44 32 00 a4 0a 02 _ADR....DID2.... 2740: a1 0b a4 7b 0b ff ff 44 49 44 32 00 14 0f 5f 44 ...{...DID2..._D 2750: 43 53 00 a4 43 44 44 53 44 49 44 32 14 0f 5f 44 CS..CDDSDID2.._D 2760: 47 53 00 a4 4e 44 44 53 44 49 44 32 14 1f 5f 44 GS..NDDSDID2.._D 2770: 53 53 01 a0 18 93 7b 68 0c 00 00 00 c0 00 0c 00 SS....{h........ 2780: 00 00 c0 70 4e 53 54 45 43 53 54 45 5b 82 41 07 ...pNSTECSTE[.A. 2790: 44 44 30 33 14 1d 5f 41 44 52 08 a0 0a 93 44 49 DD03.._ADR....DI 27a0: 44 33 00 a4 0a 03 a1 0b a4 7b 0b ff ff 44 49 44 D3.......{...DID 27b0: 33 00 14 1c 5f 44 43 53 00 a0 0a 93 44 49 44 33 3..._DCS....DID3 27c0: 00 a4 0a 0b a1 0a a4 43 44 44 53 44 49 44 33 14 .......CDDSDID3. 27d0: 0f 5f 44 47 53 00 a4 4e 44 44 53 44 49 44 33 14 ._DGS..NDDSDID3. 27e0: 1f 5f 44 53 53 01 a0 18 93 7b 68 0c 00 00 00 c0 ._DSS....{h..... 27f0: 00 0c 00 00 00 c0 70 4e 53 54 45 43 53 54 45 5b ......pNSTECSTE[ 2800: 82 41 07 44 44 30 34 14 1d 5f 41 44 52 08 a0 0a .A.DD04.._ADR... 2810: 93 44 49 44 34 00 a4 0a 04 a1 0b a4 7b 0b ff ff .DID4.......{... 2820: 44 49 44 34 00 14 1c 5f 44 43 53 00 a0 0a 93 44 DID4..._DCS....D 2830: 49 44 34 00 a4 0a 0b a1 0a a4 43 44 44 53 44 49 ID4.......CDDSDI 2840: 44 34 14 0f 5f 44 47 53 00 a4 4e 44 44 53 44 49 D4.._DGS..NDDSDI 2850: 44 34 14 1f 5f 44 53 53 01 a0 18 93 7b 68 0c 00 D4.._DSS....{h.. 2860: 00 00 c0 00 0c 00 00 00 c0 70 4e 53 54 45 43 53 .........pNSTECS 2870: 54 45 5b 82 41 07 44 44 30 35 14 1d 5f 41 44 52 TE[.A.DD05.._ADR 2880: 08 a0 0a 93 44 49 44 35 00 a4 0a 05 a1 0b a4 7b ....DID5.......{ 2890: 0b ff ff 44 49 44 35 00 14 1c 5f 44 43 53 00 a0 ...DID5..._DCS.. 28a0: 0a 93 44 49 44 35 00 a4 0a 0b a1 0a a4 43 44 44 ..DID5.......CDD 28b0: 53 44 49 44 35 14 0f 5f 44 47 53 00 a4 4e 44 44 SDID5.._DGS..NDD 28c0: 53 44 49 44 35 14 1f 5f 44 53 53 01 a0 18 93 7b SDID5.._DSS....{ 28d0: 68 0c 00 00 00 c0 00 0c 00 00 00 c0 70 4e 53 54 h...........pNST 28e0: 45 43 53 54 45 14 4e 06 53 44 44 4c 01 75 4e 44 ECSTE.N.SDDL.uND 28f0: 49 44 70 7b 68 0b 0f 0f 00 60 7d 0c 00 00 00 80 IDp{h....`}..... 2900: 60 61 a0 09 93 44 49 44 4c 60 a4 61 a0 09 93 44 `a...DIDL`.a...D 2910: 44 4c 32 60 a4 61 a0 09 93 44 44 4c 33 60 a4 61 DL2`.a...DDL3`.a 2920: a0 09 93 44 44 4c 34 60 a4 61 a0 09 93 44 44 4c ...DDL4`.a...DDL 2930: 35 60 a4 61 a0 09 93 44 44 4c 36 60 a4 61 a0 09 5`.a...DDL6`.a.. 2940: 93 44 44 4c 37 60 a4 61 a0 09 93 44 44 4c 38 60 .DDL7`.a...DDL8` 2950: a4 61 a4 00 14 4a 08 43 44 44 53 01 a0 0f 93 43 .a...J.CDDS....C 2960: 41 44 4c 7b 68 0b 0f 0f 00 a4 0a 1f a0 0f 93 43 ADL{h..........C 2970: 41 4c 32 7b 68 0b 0f 0f 00 a4 0a 1f a0 0f 93 43 AL2{h..........C 2980: 41 4c 33 7b 68 0b 0f 0f 00 a4 0a 1f a0 0f 93 43 AL3{h..........C 2990: 41 4c 34 7b 68 0b 0f 0f 00 a4 0a 1f a0 0f 93 43 AL4{h..........C 29a0: 41 4c 35 7b 68 0b 0f 0f 00 a4 0a 1f a0 0f 93 43 AL5{h..........C 29b0: 41 4c 36 7b 68 0b 0f 0f 00 a4 0a 1f a0 0f 93 43 AL6{h..........C 29c0: 41 4c 37 7b 68 0b 0f 0f 00 a4 0a 1f a0 0f 93 43 AL7{h..........C 29d0: 41 4c 38 7b 68 0b 0f 0f 00 a4 0a 1f a4 0a 1d 14 AL8{h........... 29e0: 41 08 4e 44 44 53 01 a0 0e 93 4e 41 44 4c 7b 68 A.NDDS....NADL{h 29f0: 0b 0f 0f 00 a4 01 a0 0e 93 4e 44 4c 32 7b 68 0b .........NDL2{h. 2a00: 0f 0f 00 a4 01 a0 0e 93 4e 44 4c 33 7b 68 0b 0f ........NDL3{h.. 2a10: 0f 00 a4 01 a0 0e 93 4e 44 4c 34 7b 68 0b 0f 0f .......NDL4{h... 2a20: 00 a4 01 a0 0e 93 4e 44 4c 35 7b 68 0b 0f 0f 00 ......NDL5{h.... 2a30: a4 01 a0 0e 93 4e 44 4c 36 7b 68 0b 0f 0f 00 a4 .....NDL6{h..... 2a40: 01 a0 0e 93 4e 44 4c 37 7b 68 0b 0f 0f 00 a4 01 ....NDL7{h...... 2a50: a0 0e 93 4e 44 4c 38 7b 68 0b 0f 0f 00 a4 01 a4 ...NDL8{h....... 2a60: 00 14 40 07 42 52 54 4e 09 a0 14 93 7b 44 49 44 ..@.BRTN....{DID 2a70: 31 0b 00 0f 00 0b 00 04 86 44 44 30 31 68 a0 14 1........DD01h.. 2a80: 93 7b 44 49 44 32 0b 00 0f 00 0b 00 04 86 44 44 .{DID2........DD 2a90: 30 32 68 a0 14 93 7b 44 49 44 33 0b 00 0f 00 0b 02h...{DID3..... 2aa0: 00 04 86 44 44 30 33 68 a0 14 93 7b 44 49 44 34 ...DD03h...{DID4 2ab0: 0b 00 0f 00 0b 00 04 86 44 44 30 34 68 a0 14 93 ........DD04h... 2ac0: 7b 44 49 44 35 0b 00 0f 00 0b 00 04 86 44 44 30 {DID5........DD0 2ad0: 35 68 10 24 5e 5e 50 43 49 30 5b 80 4d 43 48 50 5h.$^^PCI0[.MCHP 2ae0: 02 0a 40 0a c0 5b 81 10 4d 43 48 50 00 00 40 30 ..@..[..MCHP..@0 2af0: 54 41 53 4d 0a 00 06 5b 80 49 47 44 50 02 0a 40 TASM...[.IGDP..@ 2b00: 0a c0 5b 81 45 05 49 47 44 50 00 00 40 09 00 01 ..[.E.IGDP..@... 2b10: 47 49 56 44 01 00 02 47 55 4d 41 03 00 09 00 04 GIVD...GUMA..... 2b20: 47 4d 46 4e 01 00 1b 00 40 46 41 53 4c 45 08 00 GMFN....@FASLE.. 2b30: 18 47 53 53 45 01 47 53 53 42 0e 47 53 45 53 01 .GSSE.GSSB.GSES. 2b40: 00 30 00 08 43 44 56 4c 05 00 03 00 18 4c 42 50 .0..CDVL.....LBP 2b50: 43 08 00 30 41 53 4c 53 20 5b 80 49 47 44 4d 00 C..0ASLS [.IGDM. 2b60: 41 53 4c 42 0b 00 20 5b 81 4e 16 49 47 44 4d 00 ASLB.. [.N.IGDM. 2b70: 53 49 47 4e 40 08 53 49 5a 45 20 4f 56 45 52 20 SIGN@.SIZE OVER 2b80: 53 56 45 52 40 10 56 56 45 52 40 08 47 56 45 52 SVER@.VVER@.GVER 2b90: 40 08 4d 42 4f 58 20 00 40 52 44 52 44 59 20 43 @.MBOX .@RDRDY C 2ba0: 53 54 53 20 43 45 56 54 20 00 40 0a 44 49 44 4c STS CEVT .@.DIDL 2bb0: 20 44 44 4c 32 20 44 44 4c 33 20 44 44 4c 34 20 DDL2 DDL3 DDL4 2bc0: 44 44 4c 35 20 44 44 4c 36 20 44 44 4c 37 20 44 DDL5 DDL6 DDL7 D 2bd0: 44 4c 38 20 43 50 44 4c 20 43 50 4c 32 20 43 50 DL8 CPDL CPL2 CP 2be0: 4c 33 20 43 50 4c 34 20 43 50 4c 35 20 43 50 4c L3 CPL4 CPL5 CPL 2bf0: 36 20 43 50 4c 37 20 43 50 4c 38 20 43 41 44 4c 6 CPL7 CPL8 CADL 2c00: 20 43 41 4c 32 20 43 41 4c 33 20 43 41 4c 34 20 CAL2 CAL3 CAL4 2c10: 43 41 4c 35 20 43 41 4c 36 20 43 41 4c 37 20 43 CAL5 CAL6 CAL7 C 2c20: 41 4c 38 20 4e 41 44 4c 20 4e 44 4c 32 20 4e 44 AL8 NADL NDL2 ND 2c30: 4c 33 20 4e 44 4c 34 20 4e 44 4c 35 20 4e 44 4c L3 NDL4 NDL5 NDL 2c40: 36 20 4e 44 4c 37 20 4e 44 4c 38 20 41 53 4c 50 6 NDL7 NDL8 ASLP 2c50: 20 54 49 44 58 20 43 48 50 44 20 43 4c 49 44 20 TIDX CHPD CLID 2c60: 43 44 43 4b 20 53 58 53 57 20 45 56 54 53 20 43 CDCK SXSW EVTS C 2c70: 4e 4f 54 20 4e 52 44 59 20 00 40 1e 53 43 49 45 NOT NRDY .@.SCIE 2c80: 01 47 45 46 43 04 47 58 46 43 03 47 45 53 46 08 .GEFC.GXFC.GESF. 2c90: 00 10 50 41 52 4d 20 44 53 4c 50 20 00 40 7a 41 ..PARM DSLP .@zA 2ca0: 52 44 59 20 41 53 4c 43 20 54 43 48 45 20 41 4c RDY ASLC TCHE AL 2cb0: 53 49 20 42 43 4c 50 20 50 46 49 54 20 43 42 4c SI BCLP PFIT CBL 2cc0: 56 20 42 43 4c 4d 40 14 43 50 46 4d 20 00 40 5c V BCLM@.CPFM .@\ 2cd0: 47 56 44 31 80 00 0e 08 44 42 54 42 12 32 15 00 GVD1....DBTB.2.. 2ce0: 0a 07 0a 38 0b c0 01 0b 00 0e 0a 3f 0b c7 01 0b ...8.......?.... 2cf0: 07 0e 0b f8 01 0b 38 0e 0b c0 0f 00 00 00 00 00 ......8......... 2d00: 0b 00 70 0b 07 70 0b 38 70 0b c0 71 0b 00 7e 08 ..p..p.8p..q..~. 2d10: 43 44 43 54 12 23 03 12 0a 03 0a c8 0b 40 01 0b CDCT.#.......@.. 2d20: 90 01 12 0a 03 0a c8 0b 4d 01 0b 90 01 12 0a 03 ........M....... 2d30: 0a de 0b 4d 01 0b 7d 01 08 53 55 43 43 01 08 4e ...M..}..SUCC..N 2d40: 56 4c 44 0a 02 08 43 52 49 54 0a 04 08 4e 43 52 VLD...CRIT...NCR 2d50: 54 0a 06 14 4c 4a 47 53 43 49 08 14 44 1e 47 42 T...LJGSCI..D.GB 2d60: 44 41 08 a0 1a 93 47 45 53 46 00 70 0b 79 02 50 DA....GESF.p.y.P 2d70: 41 52 4d 70 00 47 45 53 46 a4 53 55 43 43 a0 1a ARMp.GESF.SUCC.. 2d80: 93 47 45 53 46 01 70 0b 40 02 50 41 52 4d 70 00 .GESF.p.@.PARMp. 2d90: 47 45 53 46 a4 53 55 43 43 a0 47 04 93 47 45 53 GESF.SUCC.G..GES 2da0: 46 0a 04 7b 50 41 52 4d 0c 00 00 ff ef 50 41 52 F..{PARM.....PAR 2db0: 4d 7b 50 41 52 4d 79 83 88 44 42 54 42 49 42 54 M{PARMy..DBTBIBT 2dc0: 54 00 0a 10 00 50 41 52 4d 7d 49 42 54 54 50 41 T....PARM}IBTTPA 2dd0: 52 4d 50 41 52 4d 70 00 47 45 53 46 a4 53 55 43 RMPARMp.GESF.SUC 2de0: 43 a0 4a 06 93 47 45 53 46 0a 05 70 49 50 53 43 C.J..GESF..pIPSC 2df0: 50 41 52 4d 7d 50 41 52 4d 79 49 50 41 54 0a 08 PARM}PARMyIPAT.. 2e00: 00 50 41 52 4d 72 50 41 52 4d 0b 00 01 50 41 52 .PARMrPARM...PAR 2e10: 4d 7d 50 41 52 4d 79 4c 49 44 53 0a 10 00 50 41 M}PARMyLIDS...PA 2e20: 52 4d 72 50 41 52 4d 0c 00 00 01 00 50 41 52 4d RMrPARM.....PARM 2e30: 7d 50 41 52 4d 79 49 42 49 41 0a 14 00 50 41 52 }PARMyIBIA...PAR 2e40: 4d 70 00 47 45 53 46 a4 53 55 43 43 a0 2d 93 47 Mp.GESF.SUCC.-.G 2e50: 45 53 46 0a 06 70 49 54 56 46 50 41 52 4d 7d 50 ESF..pITVFPARM}P 2e60: 41 52 4d 79 49 54 56 4d 0a 04 00 50 41 52 4d 70 ARMyITVM...PARMp 2e70: 00 47 45 53 46 a4 53 55 43 43 a0 4f 08 93 47 45 .GESF.SUCC.O..GE 2e80: 53 46 0a 07 70 47 49 56 44 50 41 52 4d 7f 50 41 SF..pGIVDPARM.PA 2e90: 52 4d 01 50 41 52 4d 7d 50 41 52 4d 79 47 4d 46 RM.PARM}PARMyGMF 2ea0: 4e 01 00 50 41 52 4d 7d 50 41 52 4d 0b 00 10 50 N..PARM}PARM...P 2eb0: 41 52 4d a0 16 49 44 4d 4d 7d 50 41 52 4d 79 49 ARM..IDMM}PARMyI 2ec0: 44 4d 53 0a 11 00 50 41 52 4d a1 12 7d 50 41 52 DMS...PARM..}PAR 2ed0: 4d 79 49 44 4d 53 0a 0d 00 50 41 52 4d 7d 79 83 MyIDMS...PARM}y. 2ee0: 88 83 88 43 44 43 54 48 56 43 4f 00 74 43 44 56 ...CDCTHVCO.tCDV 2ef0: 4c 01 00 00 0a 15 00 50 41 52 4d 50 41 52 4d 70 L......PARMPARMp 2f00: 01 47 45 53 46 a4 53 55 43 43 a0 2a 93 47 45 53 .GESF.SUCC.*.GES 2f10: 46 0a 0a 70 00 50 41 52 4d a0 10 49 53 53 43 7d F..p.PARM..ISSC} 2f20: 50 41 52 4d 0a 03 50 41 52 4d 70 00 47 45 53 46 PARM..PARMp.GESF 2f30: a4 53 55 43 43 70 00 47 45 53 46 a4 43 52 49 54 .SUCCp.GESF.CRIT 2f40: 14 41 28 53 42 43 42 08 a0 20 93 47 45 53 46 00 .A(SBCB.. .GESF. 2f50: 70 00 50 41 52 4d 70 0b 7d f7 50 41 52 4d 70 00 p.PARMp.}.PARMp. 2f60: 47 45 53 46 a4 53 55 43 43 a0 18 93 47 45 53 46 GESF.SUCC...GESF 2f70: 01 70 00 47 45 53 46 70 00 50 41 52 4d a4 53 55 .p.GESFp.PARM.SU 2f80: 43 43 a0 19 93 47 45 53 46 0a 03 70 00 47 45 53 CC...GESF..p.GES 2f90: 46 70 00 50 41 52 4d a4 53 55 43 43 a0 19 93 47 Fp.PARM.SUCC...G 2fa0: 45 53 46 0a 04 70 00 47 45 53 46 70 00 50 41 52 ESF..p.GESFp.PAR 2fb0: 4d a4 53 55 43 43 a0 19 93 47 45 53 46 0a 05 70 M.SUCC...GESF..p 2fc0: 00 47 45 53 46 70 00 50 41 52 4d a4 53 55 43 43 .GESFp.PARM.SUCC 2fd0: a0 37 93 47 45 53 46 0a 06 70 7b 50 41 52 4d 0a .7.GESF..p{PARM. 2fe0: 0f 00 49 54 56 46 70 7a 7b 50 41 52 4d 0a f0 00 ..ITVFpz{PARM... 2ff0: 0a 04 00 49 54 56 4d 70 00 47 45 53 46 70 00 50 ...ITVMp.GESFp.P 3000: 41 52 4d a4 53 55 43 43 a0 19 93 47 45 53 46 0a ARM.SUCC...GESF. 3010: 07 70 00 47 45 53 46 70 00 50 41 52 4d a4 53 55 .p.GESFp.PARM.SU 3020: 43 43 a0 19 93 47 45 53 46 0a 08 70 00 47 45 53 CC...GESF..p.GES 3030: 46 70 00 50 41 52 4d a4 53 55 43 43 a0 24 93 47 Fp.PARM.SUCC.$.G 3040: 45 53 46 0a 09 7b 50 41 52 4d 0a ff 49 42 54 54 ESF..{PARM..IBTT 3050: 70 00 47 45 53 46 70 00 50 41 52 4d a4 53 55 43 p.GESFp.PARM.SUC 3060: 43 a0 46 05 93 47 45 53 46 0a 0a 7b 50 41 52 4d C.F..GESF..{PARM 3070: 0a ff 49 50 53 43 a0 21 7b 7a 50 41 52 4d 0a 08 ..IPSC.!{zPARM.. 3080: 00 0a ff 00 7b 7a 50 41 52 4d 0a 08 00 0a ff 49 ....{zPARM.....I 3090: 50 41 54 76 49 50 41 54 7b 7a 50 41 52 4d 0a 14 PATvIPAT{zPARM.. 30a0: 00 0a 07 49 42 49 41 70 00 47 45 53 46 70 00 50 ...IBIAp.GESFp.P 30b0: 41 52 4d a4 53 55 43 43 a0 40 06 93 47 45 53 46 ARM.SUCC.@..GESF 30c0: 0a 0b 7b 7a 50 41 52 4d 01 00 01 49 46 31 45 a0 ..{zPARM...IF1E. 30d0: 21 7b 50 41 52 4d 0c 00 e0 01 00 00 7b 7a 50 41 !{PARM......{zPA 30e0: 52 4d 0a 0d 00 0a 0f 49 44 4d 53 70 00 49 44 4d RM.....IDMSp.IDM 30f0: 4d a1 16 7b 7a 50 41 52 4d 0a 11 00 0a 0f 49 44 M..{zPARM.....ID 3100: 4d 53 70 01 49 44 4d 4d 70 00 47 45 53 46 70 00 MSp.IDMMp.GESFp. 3110: 50 41 52 4d a4 53 55 43 43 a0 19 93 47 45 53 46 PARM.SUCC...GESF 3120: 0a 10 70 00 47 45 53 46 70 00 50 41 52 4d a4 53 ..p.GESFp.PARM.S 3130: 55 43 43 a0 1f 93 47 45 53 46 0a 11 7d 50 41 52 UCC...GESF..}PAR 3140: 4d 0b 00 01 50 41 52 4d 70 00 47 45 53 46 a4 53 M...PARMp.GESF.S 3150: 55 43 43 a0 49 04 93 47 45 53 46 0a 12 a0 26 7b UCC.I..GESF...&{ 3160: 50 41 52 4d 01 00 a0 10 93 7a 50 41 52 4d 01 00 PARM.....zPARM.. 3170: 01 70 01 49 53 53 43 a1 0c 70 00 47 45 53 46 a4 .p.ISSC..p.GESF. 3180: 43 52 49 54 a1 07 70 00 49 53 53 43 70 00 47 45 CRIT..p.ISSCp.GE 3190: 53 46 70 00 50 41 52 4d a4 53 55 43 43 a0 19 93 SFp.PARM.SUCC... 31a0: 47 45 53 46 0a 13 70 00 47 45 53 46 70 00 50 41 GESF..p.GESFp.PA 31b0: 52 4d a4 53 55 43 43 70 00 47 45 53 46 a4 53 55 RM.SUCCp.GESF.SU 31c0: 43 43 a0 11 93 47 45 46 43 0a 04 70 47 42 44 41 CC...GEFC..pGBDA 31d0: 47 58 46 43 a0 11 93 47 45 46 43 0a 06 70 53 42 GXFC...GEFC..pSB 31e0: 43 42 47 58 46 43 70 00 47 45 46 43 70 01 53 43 CBGXFCp.GEFCp.SC 31f0: 49 53 70 00 47 53 53 45 70 00 53 43 49 45 a4 00 ISp.GSSEp.SCIE.. 3200: 14 19 50 44 52 44 00 a0 0c 92 44 52 44 59 5b 22 ..PDRD....DRDY[" 3210: 41 53 4c 50 a4 92 44 52 44 59 14 1d 50 53 54 53 ASLP..DRDY..PSTS 3220: 00 a0 0e 94 43 53 54 53 0a 02 5b 22 41 53 4c 50 ....CSTS..["ASLP 3230: a4 93 43 53 54 53 0a 03 14 47 06 47 4e 4f 54 02 ..CSTS...G.GNOT. 3240: a0 07 50 44 52 44 a4 01 a0 07 50 53 54 53 a4 01 ..PDRD....PSTS.. 3250: 70 68 43 45 56 54 70 0a 03 43 53 54 53 a0 2c 90 phCEVTp..CSTS.,. 3260: 93 43 48 50 44 00 93 69 00 a0 18 91 94 4f 53 59 .CHPD..i.....OSY 3270: 53 0b d0 07 95 4f 53 59 53 0b d6 07 86 50 43 49 S....OSYS....PCI 3280: 30 69 a1 07 86 47 46 58 30 69 86 47 46 58 30 0a 0i...GFX0i.GFX0. 3290: 80 a0 0c 92 50 53 54 53 70 00 43 45 56 54 a4 00 ....PSTSp.CEVT.. 32a0: 14 13 47 48 44 53 01 70 68 54 49 44 58 a4 47 4e ..GHDS.phTIDX.GN 32b0: 4f 54 01 00 14 14 47 4c 49 44 01 70 68 43 4c 49 OT....GLID.phCLI 32c0: 44 a4 47 4e 4f 54 0a 02 00 14 15 47 44 43 4b 01 D.GNOT.....GDCK. 32d0: 70 68 43 44 43 4b a4 47 4e 4f 54 0a 04 0a 80 14 phCDCK.GNOT..... 32e0: 19 50 41 52 44 00 a0 0c 92 41 52 44 59 5b 22 41 .PARD....ARDY["A 32f0: 53 4c 50 a4 92 41 52 44 59 14 46 0c 41 49 4e 54 SLP..ARDY.F.AINT 3300: 02 a0 0e 92 7b 54 43 48 45 79 01 68 00 00 a4 01 ....{TCHEy.h.... 3310: a0 07 50 41 52 44 a4 01 a0 4c 05 93 68 0a 02 a0 ..PARD...L..h... 3320: 33 43 50 46 4d a0 0e 93 43 50 46 4d 01 70 0a 06 3CPFM...CPFM.p.. 3330: 50 46 49 54 a0 0f 93 43 50 46 4d 0a 06 70 0a 08 PFIT...CPFM..p.. 3340: 50 46 49 54 a0 0e 93 43 50 46 4d 0a 08 70 01 50 PFIT...CPFM..p.P 3350: 46 49 54 a1 0c 7f 50 46 49 54 0a 07 50 46 49 54 FIT...PFIT..PFIT 3360: 7d 50 46 49 54 0c 00 00 00 80 50 46 49 54 70 0a }PFIT.....PFITp. 3370: 04 41 53 4c 43 a1 42 04 a0 28 93 68 01 70 78 77 .ASLC.B..(.h.pxw 3380: 69 0a ff 00 0a 64 00 00 42 43 4c 50 7d 42 43 4c i....d..BCLP}BCL 3390: 50 0c 00 00 00 80 42 43 4c 50 70 0a 02 41 53 4c P.....BCLPp..ASL 33a0: 43 a1 16 a0 10 93 68 00 70 69 41 4c 53 49 70 01 C.....h.piALSIp. 33b0: 41 53 4c 43 a1 03 a4 01 70 00 4c 42 50 43 a4 00 ASLC....p.LBPC.. 33c0: 10 41 36 5c 00 5b 80 49 4f 5f 54 01 0b 00 08 0a .A6\.[.IO_T..... 33d0: 10 5b 81 0e 49 4f 5f 54 01 00 40 04 54 52 50 30 .[..IO_T..@.TRP0 33e0: 08 5b 80 50 4d 49 4f 01 0b 00 10 0a 80 5b 81 28 .[.PMIO......[.( 33f0: 50 4d 49 4f 01 00 40 15 00 08 00 02 41 43 50 57 PMIO..@.....ACPW 3400: 01 00 45 0b 00 01 47 50 45 43 01 00 4e 10 00 09 ..E...GPEC..N... 3410: 53 43 49 53 01 00 06 5b 80 47 50 49 4f 01 0b 80 SCIS...[.GPIO... 3420: 11 0a 3c 5b 81 40 0c 47 50 49 4f 01 47 55 30 30 ..<[.@.GPIO.GU00 3430: 08 47 55 30 31 08 47 55 30 32 08 47 55 30 33 08 .GU01.GU02.GU03. 3440: 47 49 4f 30 08 47 49 4f 31 08 47 49 4f 32 08 47 GIO0.GIO1.GIO2.G 3450: 49 4f 33 08 00 20 47 4c 30 30 08 47 4c 30 31 08 IO3.. GL00.GL01. 3460: 47 4c 30 32 08 00 03 47 50 32 37 01 47 50 32 38 GL02...GP27.GP28 3470: 01 00 03 00 40 04 47 42 30 30 08 47 42 30 31 08 ....@.GB00.GB01. 3480: 47 42 30 32 08 47 42 30 33 08 00 40 08 47 49 56 GB02.GB03..@.GIV 3490: 30 08 00 03 4c 50 4f 4c 01 00 04 47 49 56 32 08 0...LPOL...GIV2. 34a0: 47 49 56 33 08 47 55 30 34 08 47 55 30 35 08 47 GIV3.GU04.GU05.G 34b0: 55 30 36 08 47 55 30 37 08 47 49 4f 34 08 47 49 U06.GU07.GIO4.GI 34c0: 4f 35 08 47 49 4f 36 08 47 49 4f 37 08 00 05 47 O5.GIO6.GIO7...G 34d0: 50 33 37 01 00 02 47 4c 30 35 08 47 4c 30 36 08 P37...GL05.GL06. 34e0: 47 4c 30 37 08 5b 80 52 43 52 42 00 0c 00 c0 d1 GL07.[.RCRB..... 34f0: fe 0b 00 40 5b 81 48 05 52 43 52 42 13 00 80 00 ...@[.H.RCRB.... 3500: 08 00 80 00 10 00 80 02 02 48 50 41 53 02 00 05 .........HPAS... 3510: 48 50 41 45 01 00 48 09 00 01 50 41 54 44 01 53 HPAE..H...PATD.S 3520: 41 54 44 01 53 4d 42 44 01 48 44 41 44 01 00 0b ATD.SMBD.HDAD... 3530: 52 50 31 44 01 52 50 32 44 01 52 50 33 44 01 52 RP1D.RP2D.RP3D.R 3540: 50 34 44 01 52 50 35 44 01 52 50 36 44 01 08 5f P4D.RP5D.RP6D.._ 3550: 53 30 5f 12 05 03 00 00 00 08 5f 53 33 5f 12 07 S0_......._S3_.. 3560: 03 0a 05 0a 05 00 08 5f 53 34 5f 12 07 03 0a 06 ......._S4_..... 3570: 0a 06 00 08 5f 53 35 5f 12 07 03 0a 07 0a 07 00 ...._S5_........ 3580: 14 45 04 47 45 54 50 09 a0 0e 93 7b 68 0a 09 00 .E.GETP....{h... 3590: 00 a4 0c ff ff ff ff a0 0d 93 7b 68 0a 09 00 0a ..........{h.... 35a0: 08 a4 0b 84 03 7a 7b 68 0b 00 03 00 0a 08 60 7a .....z{h......`z 35b0: 7b 68 0b 00 30 00 0a 0c 61 a4 77 0a 1e 74 0a 09 {h..0...a.w..t.. 35c0: 72 60 61 00 00 00 14 30 47 44 4d 41 0d a0 23 68 r`a....0GDMA..#h 35d0: a0 07 90 69 6c a4 0a 14 a0 0e 90 6a 6c a4 77 74 ...il......jl.wt 35e0: 0a 04 6b 00 0a 0f 00 a4 77 74 0a 04 6b 00 0a 1e ..k.....wt..k... 35f0: 00 a4 0c ff ff ff ff 14 1f 47 45 54 54 09 a4 77 .........GETT..w 3600: 0a 1e 74 0a 09 72 7b 7a 68 0a 02 00 0a 03 00 7b ..t..r{zh......{ 3610: 68 0a 03 00 00 00 00 14 44 06 47 45 54 46 0b 08 h.......D.GETF.. 3620: 54 4d 50 46 00 a0 0c 68 7d 54 4d 50 46 01 54 4d TMPF...h}TMPF.TM 3630: 50 46 a0 11 7b 6a 0a 02 00 7d 54 4d 50 46 0a 02 PF..{j...}TMPF.. 3640: 54 4d 50 46 a0 0d 69 7d 54 4d 50 46 0a 04 54 4d TMPF..i}TMPF..TM 3650: 50 46 a0 11 7b 6a 0a 20 00 7d 54 4d 50 46 0a 08 PF..{j. .}TMPF.. 3660: 54 4d 50 46 a0 12 7b 6a 0b 00 40 00 7d 54 4d 50 TMPF..{j..@.}TMP 3670: 46 0a 10 54 4d 50 46 a4 54 4d 50 46 14 3d 53 45 F..TMPF.TMPF.=SE 3680: 54 50 0b a0 08 94 68 0a f0 a4 0a 08 a1 2d a0 27 TP....h......-.' 3690: 7b 69 0a 02 00 a0 10 90 92 94 68 0a 78 7b 6a 0a {i........h.x{j. 36a0: 02 00 a4 0b 01 23 a0 0f 90 92 94 68 0a b4 7b 6a .....#.....h..{j 36b0: 01 00 a4 0b 01 21 a4 0b 01 10 14 37 53 44 4d 41 .....!.....7SDMA 36c0: 09 a0 08 92 94 68 0a 14 a4 01 a0 09 92 94 68 0a .....h........h. 36d0: 1e a4 0a 02 a0 08 92 94 68 0a 2d a4 01 a0 09 92 ........h.-..... 36e0: 94 68 0a 3c a4 0a 02 a0 08 92 94 68 0a 5a a4 01 .h.<.......h.Z.. 36f0: a4 00 14 2f 53 45 54 54 0b a0 25 7b 69 0a 02 00 .../SETT..%{i... 3700: a0 0f 90 92 94 68 0a 78 7b 6a 0a 02 00 a4 0a 0b .....h.x{j...... 3710: a0 0e 90 92 94 68 0a b4 7b 6a 01 00 a4 0a 09 a4 .....h..{j...... 3720: 0a 04 5b 82 4b 04 48 44 45 46 08 5f 41 44 52 0c ..[.K.HDEF._ADR. 3730: 00 00 1b 00 5b 80 48 44 41 52 02 0a 4c 0a 10 5b ....[.HDAR..L..[ 3740: 81 22 48 44 41 52 02 44 43 4b 41 01 00 07 44 43 ."HDAR.DCKA...DC 3750: 4b 4d 01 00 06 44 43 4b 53 01 00 30 00 0f 50 4d KM...DCKS..0..PM 3760: 45 53 01 08 5f 50 52 57 12 06 02 0a 0d 0a 03 5b ES.._PRW.......[ 3770: 82 41 10 52 50 30 31 08 5f 41 44 52 0c 00 00 1c .A.RP01._ADR.... 3780: 00 5b 80 50 58 43 53 02 0a 40 0a c0 5b 81 45 04 .[.PXCS..@..[.E. 3790: 50 58 43 53 40 00 40 09 00 0d 4c 41 53 58 01 00 PXCS@.@...LASX.. 37a0: 32 41 42 50 58 01 00 02 50 44 43 58 01 00 02 50 2ABPX...PDCX...P 37b0: 44 53 58 01 00 01 4c 53 43 58 01 00 27 00 10 50 DSX...LSCX..'..P 37c0: 53 50 58 01 00 4f 3c 00 1e 48 50 53 58 01 50 4d SPX..O<..HPSX.PM 37d0: 53 58 01 5b 82 0b 50 58 53 58 08 5f 41 44 52 00 SX.[..PXSX._ADR. 37e0: 14 41 09 5f 50 52 54 00 a0 33 47 50 49 43 a4 12 .A._PRT..3GPIC.. 37f0: 2c 04 12 09 04 0b ff ff 00 00 0a 10 12 09 04 0b ,............... 3800: ff ff 01 00 0a 11 12 0a 04 0b ff ff 0a 02 00 0a ................ 3810: 12 12 0a 04 0b ff ff 0a 03 00 0a 13 a1 45 05 a4 .............E.. 3820: 12 41 05 04 12 12 04 0b ff ff 00 5e 5e 2e 4c 50 .A.........^^.LP 3830: 43 42 4c 4e 4b 41 00 12 12 04 0b ff ff 01 5e 5e CBLNKA........^^ 3840: 2e 4c 50 43 42 4c 4e 4b 42 00 12 13 04 0b ff ff .LPCBLNKB....... 3850: 0a 02 5e 5e 2e 4c 50 43 42 4c 4e 4b 43 00 12 13 ..^^.LPCBLNKC... 3860: 04 0b ff ff 0a 03 5e 5e 2e 4c 50 43 42 4c 4e 4b ......^^.LPCBLNK 3870: 44 00 5b 82 41 10 52 50 30 32 08 5f 41 44 52 0c D.[.A.RP02._ADR. 3880: 01 00 1c 00 5b 80 50 58 43 53 02 0a 40 0a c0 5b ....[.PXCS..@..[ 3890: 81 45 04 50 58 43 53 40 00 40 09 00 0d 4c 41 53 .E.PXCS@.@...LAS 38a0: 58 01 00 32 41 42 50 58 01 00 02 50 44 43 58 01 X..2ABPX...PDCX. 38b0: 00 02 50 44 53 58 01 00 01 4c 53 43 58 01 00 27 ..PDSX...LSCX..' 38c0: 00 10 50 53 50 58 01 00 4f 3c 00 1e 48 50 53 58 ..PSPX..O<..HPSX 38d0: 01 50 4d 53 58 01 5b 82 0b 50 58 53 58 08 5f 41 .PMSX.[..PXSX._A 38e0: 44 52 00 14 41 09 5f 50 52 54 00 a0 33 47 50 49 DR..A._PRT..3GPI 38f0: 43 a4 12 2c 04 12 09 04 0b ff ff 00 00 0a 11 12 C..,............ 3900: 09 04 0b ff ff 01 00 0a 12 12 0a 04 0b ff ff 0a ................ 3910: 02 00 0a 13 12 0a 04 0b ff ff 0a 03 00 0a 10 a1 ................ 3920: 45 05 a4 12 41 05 04 12 12 04 0b ff ff 00 5e 5e E...A.........^^ 3930: 2e 4c 50 43 42 4c 4e 4b 42 00 12 12 04 0b ff ff .LPCBLNKB....... 3940: 01 5e 5e 2e 4c 50 43 42 4c 4e 4b 43 00 12 13 04 .^^.LPCBLNKC.... 3950: 0b ff ff 0a 02 5e 5e 2e 4c 50 43 42 4c 4e 4b 44 .....^^.LPCBLNKD 3960: 00 12 13 04 0b ff ff 0a 03 5e 5e 2e 4c 50 43 42 .........^^.LPCB 3970: 4c 4e 4b 41 00 5b 82 4d 11 52 50 30 33 08 5f 41 LNKA.[.M.RP03._A 3980: 44 52 0c 02 00 1c 00 5b 80 50 58 43 53 02 0a 40 DR.....[.PXCS..@ 3990: 0a c0 5b 81 45 04 50 58 43 53 40 00 40 09 00 0d ..[.E.PXCS@.@... 39a0: 4c 41 53 58 01 00 32 41 42 50 58 01 00 02 50 44 LASX..2ABPX...PD 39b0: 43 58 01 00 02 50 44 53 58 01 00 01 4c 53 43 58 CX...PDSX...LSCX 39c0: 01 00 27 00 10 50 53 50 58 01 00 4f 3c 00 1e 48 ..'..PSPX..O<..H 39d0: 50 53 58 01 50 4d 53 58 01 5b 82 0b 50 58 53 58 PSX.PMSX.[..PXSX 39e0: 08 5f 41 44 52 00 08 2e 50 58 53 58 5f 52 4d 56 ._ADR...PXSX_RMV 39f0: 01 08 2e 50 58 53 58 5f 50 52 57 12 06 02 0a 09 ...PXSX_PRW..... 3a00: 0a 03 14 41 09 5f 50 52 54 00 a0 33 47 50 49 43 ...A._PRT..3GPIC 3a10: a4 12 2c 04 12 09 04 0b ff ff 00 00 0a 12 12 09 ..,............. 3a20: 04 0b ff ff 01 00 0a 13 12 0a 04 0b ff ff 0a 02 ................ 3a30: 00 0a 10 12 0a 04 0b ff ff 0a 03 00 0a 11 a1 45 ...............E 3a40: 05 a4 12 41 05 04 12 12 04 0b ff ff 00 5e 5e 2e ...A.........^^. 3a50: 4c 50 43 42 4c 4e 4b 43 00 12 12 04 0b ff ff 01 LPCBLNKC........ 3a60: 5e 5e 2e 4c 50 43 42 4c 4e 4b 44 00 12 13 04 0b ^^.LPCBLNKD..... 3a70: ff ff 0a 02 5e 5e 2e 4c 50 43 42 4c 4e 4b 41 00 ....^^.LPCBLNKA. 3a80: 12 13 04 0b ff ff 0a 03 5e 5e 2e 4c 50 43 42 4c ........^^.LPCBL 3a90: 4e 4b 42 00 5b 82 4f 11 52 50 30 34 08 5f 41 44 NKB.[.O.RP04._AD 3aa0: 52 0c 03 00 1c 00 5b 80 50 58 43 53 02 0a 40 0a R.....[.PXCS..@. 3ab0: c0 5b 81 45 04 50 58 43 53 40 00 40 09 00 0d 4c .[.E.PXCS@.@...L 3ac0: 41 53 58 01 00 32 41 42 50 58 01 00 02 50 44 43 ASX..2ABPX...PDC 3ad0: 58 01 00 02 50 44 53 58 01 00 01 4c 53 43 58 01 X...PDSX...LSCX. 3ae0: 00 27 00 10 50 53 50 58 01 00 4f 3c 00 1e 48 50 .'..PSPX..O<..HP 3af0: 53 58 01 50 4d 53 58 01 5b 82 29 50 58 53 58 08 SX.PMSX.[.)PXSX. 3b00: 5f 41 44 52 00 14 1d 5f 50 52 57 00 a0 0d 57 4b _ADR..._PRW...WK 3b10: 4c 4e a4 12 06 02 0a 09 0a 03 a1 08 a4 12 05 02 LN.............. 3b20: 0a 09 00 14 41 09 5f 50 52 54 00 a0 33 47 50 49 ....A._PRT..3GPI 3b30: 43 a4 12 2c 04 12 09 04 0b ff ff 00 00 0a 13 12 C..,............ 3b40: 09 04 0b ff ff 01 00 0a 10 12 0a 04 0b ff ff 0a ................ 3b50: 02 00 0a 11 12 0a 04 0b ff ff 0a 03 00 0a 12 a1 ................ 3b60: 45 05 a4 12 41 05 04 12 12 04 0b ff ff 00 5e 5e E...A.........^^ 3b70: 2e 4c 50 43 42 4c 4e 4b 44 00 12 12 04 0b ff ff .LPCBLNKD....... 3b80: 01 5e 5e 2e 4c 50 43 42 4c 4e 4b 41 00 12 13 04 .^^.LPCBLNKA.... 3b90: 0b ff ff 0a 02 5e 5e 2e 4c 50 43 42 4c 4e 4b 42 .....^^.LPCBLNKB 3ba0: 00 12 13 04 0b ff ff 0a 03 5e 5e 2e 4c 50 43 42 .........^^.LPCB 3bb0: 4c 4e 4b 43 00 5b 82 41 10 52 50 30 35 08 5f 41 LNKC.[.A.RP05._A 3bc0: 44 52 0c 04 00 1c 00 5b 80 50 58 43 53 02 0a 40 DR.....[.PXCS..@ 3bd0: 0a c0 5b 81 45 04 50 58 43 53 40 00 40 09 00 0d ..[.E.PXCS@.@... 3be0: 4c 41 53 58 01 00 32 41 42 50 58 01 00 02 50 44 LASX..2ABPX...PD 3bf0: 43 58 01 00 02 50 44 53 58 01 00 01 4c 53 43 58 CX...PDSX...LSCX 3c00: 01 00 27 00 10 50 53 50 58 01 00 4f 3c 00 1e 48 ..'..PSPX..O<..H 3c10: 50 53 58 01 50 4d 53 58 01 5b 82 0b 50 58 53 58 PSX.PMSX.[..PXSX 3c20: 08 5f 41 44 52 00 14 41 09 5f 50 52 54 00 a0 33 ._ADR..A._PRT..3 3c30: 47 50 49 43 a4 12 2c 04 12 09 04 0b ff ff 00 00 GPIC..,......... 3c40: 0a 10 12 09 04 0b ff ff 01 00 0a 11 12 0a 04 0b ................ 3c50: ff ff 0a 02 00 0a 12 12 0a 04 0b ff ff 0a 03 00 ................ 3c60: 0a 13 a1 45 05 a4 12 41 05 04 12 12 04 0b ff ff ...E...A........ 3c70: 00 5e 5e 2e 4c 50 43 42 4c 4e 4b 41 00 12 12 04 .^^.LPCBLNKA.... 3c80: 0b ff ff 01 5e 5e 2e 4c 50 43 42 4c 4e 4b 42 00 ....^^.LPCBLNKB. 3c90: 12 13 04 0b ff ff 0a 02 5e 5e 2e 4c 50 43 42 4c ........^^.LPCBL 3ca0: 4e 4b 43 00 12 13 04 0b ff ff 0a 03 5e 5e 2e 4c NKC.........^^.L 3cb0: 50 43 42 4c 4e 4b 44 00 5b 82 41 10 52 50 30 36 PCBLNKD.[.A.RP06 3cc0: 08 5f 41 44 52 0c 05 00 1c 00 5b 80 50 58 43 53 ._ADR.....[.PXCS 3cd0: 02 0a 40 0a c0 5b 81 45 04 50 58 43 53 40 00 40 ..@..[.E.PXCS@.@ 3ce0: 09 00 0d 4c 41 53 58 01 00 32 41 42 50 58 01 00 ...LASX..2ABPX.. 3cf0: 02 50 44 43 58 01 00 02 50 44 53 58 01 00 01 4c .PDCX...PDSX...L 3d00: 53 43 58 01 00 27 00 10 50 53 50 58 01 00 4f 3c SCX..'..PSPX..O< 3d10: 00 1e 48 50 53 58 01 50 4d 53 58 01 5b 82 0b 50 ..HPSX.PMSX.[..P 3d20: 58 53 58 08 5f 41 44 52 00 14 41 09 5f 50 52 54 XSX._ADR..A._PRT 3d30: 00 a0 33 47 50 49 43 a4 12 2c 04 12 09 04 0b ff ..3GPIC..,...... 3d40: ff 00 00 0a 11 12 09 04 0b ff ff 01 00 0a 12 12 ................ 3d50: 0a 04 0b ff ff 0a 02 00 0a 13 12 0a 04 0b ff ff ................ 3d60: 0a 03 00 0a 10 a1 45 05 a4 12 41 05 04 12 12 04 ......E...A..... 3d70: 0b ff ff 00 5e 5e 2e 4c 50 43 42 4c 4e 4b 42 00 ....^^.LPCBLNKB. 3d80: 12 12 04 0b ff ff 01 5e 5e 2e 4c 50 43 42 4c 4e .......^^.LPCBLN 3d90: 4b 43 00 12 13 04 0b ff ff 0a 02 5e 5e 2e 4c 50 KC.........^^.LP 3da0: 43 42 4c 4e 4b 44 00 12 13 04 0b ff ff 0a 03 5e CBLNKD.........^ 3db0: 5e 2e 4c 50 43 42 4c 4e 4b 41 00 5b 82 4d 06 55 ^.LPCBLNKA.[.M.U 3dc0: 53 42 31 08 5f 41 44 52 0c 00 00 1d 00 5b 80 55 SB1._ADR.....[.U 3dd0: 31 43 53 02 0a c4 0a 04 5b 81 0b 55 31 43 53 03 1CS.....[..U1CS. 3de0: 55 31 45 4e 02 08 5f 50 52 57 12 06 02 0a 03 0a U1EN.._PRW...... 3df0: 03 14 24 5f 50 53 57 01 a0 15 68 70 01 41 43 50 ..$_PSW...hp.ACP 3e00: 57 a0 0c 41 43 50 57 70 0a 03 55 31 45 4e a1 07 W..ACPWp..U1EN.. 3e10: 70 00 55 31 45 4e 14 09 5f 53 33 44 00 a4 0a 02 p.U1EN.._S3D.... 3e20: 14 09 5f 53 34 44 00 a4 0a 02 5b 82 4c 06 55 53 .._S4D....[.L.US 3e30: 42 32 08 5f 41 44 52 0c 01 00 1d 00 5b 80 55 32 B2._ADR.....[.U2 3e40: 43 53 02 0a c4 0a 04 5b 81 0b 55 32 43 53 03 55 CS.....[..U2CS.U 3e50: 32 45 4e 02 08 5f 50 52 57 12 06 02 0a 04 0a 03 2EN.._PRW....... 3e60: 14 23 5f 50 53 57 01 a0 14 68 70 01 41 43 50 57 .#_PSW...hp.ACPW 3e70: a0 0b 41 43 50 57 70 01 55 32 45 4e a1 07 70 00 ..ACPWp.U2EN..p. 3e80: 55 32 45 4e 14 09 5f 53 33 44 00 a4 0a 02 14 09 U2EN.._S3D...... 3e90: 5f 53 34 44 00 a4 0a 02 5b 82 4d 06 55 53 42 33 _S4D....[.M.USB3 3ea0: 08 5f 41 44 52 0c 02 00 1d 00 5b 80 55 32 43 53 ._ADR.....[.U2CS 3eb0: 02 0a c4 0a 04 5b 81 0b 55 32 43 53 03 55 33 45 .....[..U2CS.U3E 3ec0: 4e 02 08 5f 50 52 57 12 06 02 0a 0c 0a 03 14 24 N.._PRW........$ 3ed0: 5f 50 53 57 01 a0 15 68 70 01 41 43 50 57 a0 0c _PSW...hp.ACPW.. 3ee0: 41 43 50 57 70 0a 03 55 33 45 4e a1 07 70 00 55 ACPWp..U3EN..p.U 3ef0: 33 45 4e 14 09 5f 53 33 44 00 a4 0a 02 14 09 5f 3EN.._S3D......_ 3f00: 53 34 44 00 a4 0a 02 5b 82 4d 06 55 53 42 34 08 S4D....[.M.USB4. 3f10: 5f 41 44 52 0c 00 00 1a 00 5b 80 55 34 43 53 02 _ADR.....[.U4CS. 3f20: 0a c4 0a 04 5b 81 0b 55 34 43 53 03 55 34 45 4e ....[..U4CS.U4EN 3f30: 02 08 5f 50 52 57 12 06 02 0a 0e 0a 03 14 24 5f .._PRW........$_ 3f40: 50 53 57 01 a0 15 68 70 01 41 43 50 57 a0 0c 41 PSW...hp.ACPW..A 3f50: 43 50 57 70 0a 03 55 34 45 4e a1 07 70 00 55 34 CPWp..U4EN..p.U4 3f60: 45 4e 14 09 5f 53 33 44 00 a4 0a 02 14 09 5f 53 EN.._S3D......_S 3f70: 34 44 00 a4 0a 02 5b 82 41 06 55 53 42 35 08 5f 4D....[.A.USB5._ 3f80: 41 44 52 0c 01 00 1a 00 5b 80 55 35 43 53 02 0a ADR.....[.U5CS.. 3f90: c4 0a 04 5b 81 0b 55 35 43 53 03 55 35 45 4e 02 ...[..U5CS.U5EN. 3fa0: 14 24 5f 50 53 57 01 a0 15 68 70 01 41 43 50 57 .$_PSW...hp.ACPW 3fb0: a0 0c 41 43 50 57 70 0a 03 55 35 45 4e a1 07 70 ..ACPWp..U5EN..p 3fc0: 00 55 35 45 4e 14 09 5f 53 33 44 00 a4 0a 02 14 .U5EN.._S3D..... 3fd0: 09 5f 53 34 44 00 a4 0a 02 5b 82 4b 0a 45 48 43 ._S4D....[.K.EHC 3fe0: 31 08 5f 41 44 52 0c 07 00 1d 00 5b 80 55 37 43 1._ADR.....[.U7C 3ff0: 53 02 0a 54 0a 04 5b 81 0d 55 37 43 53 03 00 0f S..T..[..U7CS... 4000: 50 4d 45 53 01 5b 82 4f 05 48 55 42 37 08 5f 41 PMES.[.O.HUB7._A 4010: 44 52 00 5b 82 0b 50 52 54 31 08 5f 41 44 52 01 DR.[..PRT1._ADR. 4020: 5b 82 0c 50 52 54 32 08 5f 41 44 52 0a 02 5b 82 [..PRT2._ADR..[. 4030: 0c 50 52 54 33 08 5f 41 44 52 0a 03 5b 82 0c 50 .PRT3._ADR..[..P 4040: 52 54 34 08 5f 41 44 52 0a 04 5b 82 0c 50 52 54 RT4._ADR..[..PRT 4050: 35 08 5f 41 44 52 0a 05 5b 82 0c 50 52 54 36 08 5._ADR..[..PRT6. 4060: 5f 41 44 52 0a 06 08 5f 50 52 57 12 06 02 0a 0d _ADR..._PRW..... 4070: 0a 03 14 09 5f 53 33 44 00 a4 0a 02 14 09 5f 53 ...._S3D......_S 4080: 34 44 00 a4 0a 02 5b 82 4f 08 45 48 43 32 08 5f 4D....[.O.EHC2._ 4090: 41 44 52 0c 07 00 1a 00 5b 80 55 46 43 53 02 0a ADR.....[.UFCS.. 40a0: 54 0a 04 5b 81 0d 55 46 43 53 03 00 0f 50 4d 45 T..[..UFCS...PME 40b0: 53 01 5b 82 43 04 48 55 42 37 08 5f 41 44 52 00 S.[.C.HUB7._ADR. 40c0: 5b 82 0b 50 52 54 31 08 5f 41 44 52 01 5b 82 0c [..PRT1._ADR.[.. 40d0: 50 52 54 32 08 5f 41 44 52 0a 02 5b 82 0c 50 52 PRT2._ADR..[..PR 40e0: 54 33 08 5f 41 44 52 0a 03 5b 82 0c 50 52 54 34 T3._ADR..[..PRT4 40f0: 08 5f 41 44 52 0a 04 08 5f 50 52 57 12 06 02 0a ._ADR..._PRW.... 4100: 0d 0a 03 14 09 5f 53 33 44 00 a4 0a 02 14 09 5f ....._S3D......_ 4110: 53 34 44 00 a4 0a 02 5b 82 4a 06 50 43 49 42 08 S4D....[.J.PCIB. 4120: 5f 41 44 52 0c 00 00 1e 00 14 49 05 5f 50 52 54 _ADR......I._PRT 4130: 00 a0 21 47 50 49 43 a4 12 1a 02 12 0b 04 0c ff ..!GPIC......... 4140: ff 06 00 00 00 0a 16 12 0b 04 0c ff ff 06 00 01 ................ 4150: 00 0a 17 a1 2f a4 12 2c 02 12 14 04 0c ff ff 06 ..../..,........ 4160: 00 00 5e 5e 2e 4c 50 43 42 4c 4e 4b 47 00 12 14 ..^^.LPCBLNKG... 4170: 04 0c ff ff 06 00 01 5e 5e 2e 4c 50 43 42 4c 4e .......^^.LPCBLN 4180: 4b 48 00 5b 82 8d 2e 01 4c 50 43 42 08 5f 41 44 KH.[....LPCB._AD 4190: 52 0c 00 00 1f 00 5b 80 4c 50 43 30 02 0a 40 0a R.....[.LPC0..@. 41a0: c0 5b 81 4d 07 4c 50 43 30 00 00 40 10 50 41 52 .[.M.LPC0..@.PAR 41b0: 43 08 50 42 52 43 08 50 43 52 43 08 50 44 52 43 C.PBRC.PCRC.PDRC 41c0: 08 00 20 50 45 52 43 08 50 46 52 43 08 50 47 52 .. PERC.PFRC.PGR 41d0: 43 08 50 48 52 43 08 00 40 0a 43 4d 41 52 03 00 C.PHRC..@.CMAR.. 41e0: 01 43 4d 42 52 03 00 01 4c 50 54 52 02 00 06 43 .CMBR...LPTR...C 41f0: 4d 41 44 01 43 4d 42 44 01 4c 50 54 44 01 46 44 MAD.CMBD.LPTD.FD 4200: 44 44 01 00 2c 49 4f 52 32 10 00 02 4c 47 52 4d DD..,IOR2...LGRM 4210: 06 00 48 32 52 41 45 4e 01 00 0d 52 43 42 41 12 ..H2RAEN...RCBA. 4220: 5b 80 53 4d 49 30 01 0c 00 fe 00 00 0c 02 00 00 [.SMI0.......... 4230: 00 5b 81 0b 53 4d 49 30 00 53 4d 49 43 08 5b 80 .[..SMI0.SMIC.[. 4240: 53 4d 49 31 00 0c bd 2e 6e bf 0c 90 00 00 00 5b SMI1....n......[ 4250: 81 16 53 4d 49 31 00 42 43 4d 44 08 44 49 44 5f ..SMI1.BCMD.DID_ 4260: 20 49 4e 46 4f 40 40 5b 81 15 53 4d 49 31 00 01 INFO@@[..SMI1.. 4270: 01 00 00 28 49 4e 46 5f 08 49 4e 46 31 20 5b 01 ...(INF_.INF1 [. 4280: 50 53 4d 58 00 14 27 50 48 53 53 01 5b 23 50 53 PSMX..'PHSS.[#PS 4290: 4d 58 ff ff 70 0a 80 42 43 4d 44 70 68 44 49 44 MX..p..BCMDphDID 42a0: 5f 70 00 53 4d 49 43 5b 27 50 53 4d 58 5b 82 41 _p.SMIC['PSMX[.A 42b0: 0a 4c 4e 4b 41 08 5f 48 49 44 0c 41 d0 0c 0f 08 .LNKA._HID.A.... 42c0: 5f 55 49 44 01 14 0d 5f 44 49 53 08 70 0a 80 50 _UID..._DIS.p..P 42d0: 41 52 43 08 5f 50 52 53 11 09 0a 06 23 fa d4 18 ARC._PRS....#... 42e0: 79 00 14 38 5f 43 52 53 08 08 52 54 4c 41 11 09 y..8_CRS..RTLA.. 42f0: 0a 06 23 00 00 18 79 00 8b 52 54 4c 41 01 49 52 ..#...y..RTLA.IR 4300: 51 30 70 00 49 52 51 30 79 01 7b 50 41 52 43 0a Q0p.IRQ0y.{PARC. 4310: 0f 00 49 52 51 30 a4 52 54 4c 41 14 1b 5f 53 52 ..IRQ0.RTLA.._SR 4320: 53 09 8b 68 01 49 52 51 30 82 49 52 51 30 60 76 S..h.IRQ0.IRQ0`v 4330: 60 70 60 50 41 52 43 14 18 5f 53 54 41 08 a0 0c `p`PARC.._STA... 4340: 7b 50 41 52 43 0a 80 00 a4 0a 09 a1 04 a4 0a 0b {PARC........... 4350: 5b 82 42 0a 4c 4e 4b 42 08 5f 48 49 44 0c 41 d0 [.B.LNKB._HID.A. 4360: 0c 0f 08 5f 55 49 44 0a 02 14 0d 5f 44 49 53 08 ..._UID...._DIS. 4370: 70 0a 80 50 42 52 43 08 5f 50 52 53 11 09 0a 06 p..PBRC._PRS.... 4380: 23 fa d8 18 79 00 14 38 5f 43 52 53 08 08 52 54 #...y..8_CRS..RT 4390: 4c 42 11 09 0a 06 23 00 00 18 79 00 8b 52 54 4c LB....#...y..RTL 43a0: 42 01 49 52 51 30 70 00 49 52 51 30 79 01 7b 50 B.IRQ0p.IRQ0y.{P 43b0: 42 52 43 0a 0f 00 49 52 51 30 a4 52 54 4c 42 14 BRC...IRQ0.RTLB. 43c0: 1b 5f 53 52 53 09 8b 68 01 49 52 51 30 82 49 52 ._SRS..h.IRQ0.IR 43d0: 51 30 60 76 60 70 60 50 42 52 43 14 18 5f 53 54 Q0`v`p`PBRC.._ST 43e0: 41 08 a0 0c 7b 50 42 52 43 0a 80 00 a4 0a 09 a1 A...{PBRC....... 43f0: 04 a4 0a 0b 5b 82 42 0a 4c 4e 4b 43 08 5f 48 49 ....[.B.LNKC._HI 4400: 44 0c 41 d0 0c 0f 08 5f 55 49 44 0a 03 14 0d 5f D.A...._UID...._ 4410: 44 49 53 08 70 0a 80 50 43 52 43 08 5f 50 52 53 DIS.p..PCRC._PRS 4420: 11 09 0a 06 23 fa d4 18 79 00 14 38 5f 43 52 53 ....#...y..8_CRS 4430: 08 08 52 54 4c 43 11 09 0a 06 23 00 00 18 79 00 ..RTLC....#...y. 4440: 8b 52 54 4c 43 01 49 52 51 30 70 00 49 52 51 30 .RTLC.IRQ0p.IRQ0 4450: 79 01 7b 50 43 52 43 0a 0f 00 49 52 51 30 a4 52 y.{PCRC...IRQ0.R 4460: 54 4c 43 14 1b 5f 53 52 53 09 8b 68 01 49 52 51 TLC.._SRS..h.IRQ 4470: 30 82 49 52 51 30 60 76 60 70 60 50 43 52 43 14 0.IRQ0`v`p`PCRC. 4480: 18 5f 53 54 41 08 a0 0c 7b 50 43 52 43 0a 80 00 ._STA...{PCRC... 4490: a4 0a 09 a1 04 a4 0a 0b 5b 82 42 0a 4c 4e 4b 44 ........[.B.LNKD 44a0: 08 5f 48 49 44 0c 41 d0 0c 0f 08 5f 55 49 44 0a ._HID.A...._UID. 44b0: 04 14 0d 5f 44 49 53 08 70 0a 80 50 44 52 43 08 ..._DIS.p..PDRC. 44c0: 5f 50 52 53 11 09 0a 06 23 fa d8 18 79 00 14 38 _PRS....#...y..8 44d0: 5f 43 52 53 08 08 52 54 4c 44 11 09 0a 06 23 00 _CRS..RTLD....#. 44e0: 00 18 79 00 8b 52 54 4c 44 01 49 52 51 30 70 00 ..y..RTLD.IRQ0p. 44f0: 49 52 51 30 79 01 7b 50 44 52 43 0a 0f 00 49 52 IRQ0y.{PDRC...IR 4500: 51 30 a4 52 54 4c 44 14 1b 5f 53 52 53 09 8b 68 Q0.RTLD.._SRS..h 4510: 01 49 52 51 30 82 49 52 51 30 60 76 60 70 60 50 .IRQ0.IRQ0`v`p`P 4520: 44 52 43 14 18 5f 53 54 41 08 a0 0c 7b 50 44 52 DRC.._STA...{PDR 4530: 43 0a 80 00 a4 0a 09 a1 04 a4 0a 0b 5b 82 42 0a C...........[.B. 4540: 4c 4e 4b 45 08 5f 48 49 44 0c 41 d0 0c 0f 08 5f LNKE._HID.A...._ 4550: 55 49 44 0a 05 14 0d 5f 44 49 53 08 70 0a 80 50 UID...._DIS.p..P 4560: 45 52 43 08 5f 50 52 53 11 09 0a 06 23 fa d4 18 ERC._PRS....#... 4570: 79 00 14 38 5f 43 52 53 08 08 52 54 4c 45 11 09 y..8_CRS..RTLE.. 4580: 0a 06 23 00 00 18 79 00 8b 52 54 4c 45 01 49 52 ..#...y..RTLE.IR 4590: 51 30 70 00 49 52 51 30 79 01 7b 50 45 52 43 0a Q0p.IRQ0y.{PERC. 45a0: 0f 00 49 52 51 30 a4 52 54 4c 45 14 1b 5f 53 52 ..IRQ0.RTLE.._SR 45b0: 53 09 8b 68 01 49 52 51 30 82 49 52 51 30 60 76 S..h.IRQ0.IRQ0`v 45c0: 60 70 60 50 45 52 43 14 18 5f 53 54 41 08 a0 0c `p`PERC.._STA... 45d0: 7b 50 45 52 43 0a 80 00 a4 0a 09 a1 04 a4 0a 0b {PERC........... 45e0: 5b 82 42 0a 4c 4e 4b 46 08 5f 48 49 44 0c 41 d0 [.B.LNKF._HID.A. 45f0: 0c 0f 08 5f 55 49 44 0a 06 14 0d 5f 44 49 53 08 ..._UID...._DIS. 4600: 70 0a 80 50 46 52 43 08 5f 50 52 53 11 09 0a 06 p..PFRC._PRS.... 4610: 23 fa d8 18 79 00 14 38 5f 43 52 53 08 08 52 54 #...y..8_CRS..RT 4620: 4c 46 11 09 0a 06 23 00 00 18 79 00 8b 52 54 4c LF....#...y..RTL 4630: 46 01 49 52 51 30 70 00 49 52 51 30 79 01 7b 50 F.IRQ0p.IRQ0y.{P 4640: 46 52 43 0a 0f 00 49 52 51 30 a4 52 54 4c 46 14 FRC...IRQ0.RTLF. 4650: 1b 5f 53 52 53 09 8b 68 01 49 52 51 30 82 49 52 ._SRS..h.IRQ0.IR 4660: 51 30 60 76 60 70 60 50 46 52 43 14 18 5f 53 54 Q0`v`p`PFRC.._ST 4670: 41 08 a0 0c 7b 50 46 52 43 0a 80 00 a4 0a 09 a1 A...{PFRC....... 4680: 04 a4 0a 0b 5b 82 42 0a 4c 4e 4b 47 08 5f 48 49 ....[.B.LNKG._HI 4690: 44 0c 41 d0 0c 0f 08 5f 55 49 44 0a 07 14 0d 5f D.A...._UID...._ 46a0: 44 49 53 08 70 0a 80 50 47 52 43 08 5f 50 52 53 DIS.p..PGRC._PRS 46b0: 11 09 0a 06 23 fa d4 18 79 00 14 38 5f 43 52 53 ....#...y..8_CRS 46c0: 08 08 52 54 4c 47 11 09 0a 06 23 00 00 18 79 00 ..RTLG....#...y. 46d0: 8b 52 54 4c 47 01 49 52 51 30 70 00 49 52 51 30 .RTLG.IRQ0p.IRQ0 46e0: 79 01 7b 50 47 52 43 0a 0f 00 49 52 51 30 a4 52 y.{PGRC...IRQ0.R 46f0: 54 4c 47 14 1b 5f 53 52 53 09 8b 68 01 49 52 51 TLG.._SRS..h.IRQ 4700: 30 82 49 52 51 30 60 76 60 70 60 50 47 52 43 14 0.IRQ0`v`p`PGRC. 4710: 18 5f 53 54 41 08 a0 0c 7b 50 47 52 43 0a 80 00 ._STA...{PGRC... 4720: a4 0a 09 a1 04 a4 0a 0b 5b 82 42 0a 4c 4e 4b 48 ........[.B.LNKH 4730: 08 5f 48 49 44 0c 41 d0 0c 0f 08 5f 55 49 44 0a ._HID.A...._UID. 4740: 08 14 0d 5f 44 49 53 08 70 0a 80 50 48 52 43 08 ..._DIS.p..PHRC. 4750: 5f 50 52 53 11 09 0a 06 23 fa d8 18 79 00 14 38 _PRS....#...y..8 4760: 5f 43 52 53 08 08 52 54 4c 48 11 09 0a 06 23 00 _CRS..RTLH....#. 4770: 00 18 79 00 8b 52 54 4c 48 01 49 52 51 30 70 00 ..y..RTLH.IRQ0p. 4780: 49 52 51 30 79 01 7b 50 48 52 43 0a 0f 00 49 52 IRQ0y.{PHRC...IR 4790: 51 30 a4 52 54 4c 48 14 1b 5f 53 52 53 09 8b 68 Q0.RTLH.._SRS..h 47a0: 01 49 52 51 30 82 49 52 51 30 60 76 60 70 60 50 .IRQ0.IRQ0`v`p`P 47b0: 48 52 43 14 18 5f 53 54 41 08 a0 0c 7b 50 48 52 HRC.._STA...{PHR 47c0: 43 0a 80 00 a4 0a 09 a1 04 a4 0a 0b 5b 82 3d 44 C...........[.=D 47d0: 4d 41 43 08 5f 48 49 44 0c 41 d0 02 00 08 5f 43 MAC._HID.A...._C 47e0: 52 53 11 28 0a 25 47 01 00 00 00 00 01 20 47 01 RS.(.%G...... G. 47f0: 81 00 81 00 01 11 47 01 93 00 93 00 01 0d 47 01 ......G.......G. 4800: c0 00 c0 00 01 20 2a 10 01 79 00 5b 82 26 46 57 ..... *..y.[.&FW 4810: 48 44 08 5f 48 49 44 0c 25 d4 08 00 08 5f 43 52 HD._HID.%...._CR 4820: 53 11 11 0a 0e 86 09 00 00 00 00 00 ff 00 00 00 S............... 4830: 01 79 00 5b 82 40 0b 48 50 45 54 08 5f 48 49 44 .y.[.@.HPET._HID 4840: 0c 41 d0 01 03 08 5f 43 49 44 0c 41 d0 0c 01 08 .A...._CID.A.... 4850: 42 55 46 30 11 11 0a 0e 86 09 00 00 00 00 d0 fe BUF0............ 4860: 00 04 00 00 79 00 14 27 5f 53 54 41 00 a0 13 92 ....y..'_STA.... 4870: 95 4f 53 59 53 0b d1 07 a0 08 48 50 41 45 a4 0a .OSYS.....HPAE.. 4880: 0f a1 0a a0 08 48 50 41 45 a4 0a 0b a4 00 14 46 .....HPAE......F 4890: 05 5f 43 52 53 08 a0 49 04 48 50 41 45 8a 42 55 ._CRS..I.HPAE.BU 48a0: 46 30 0a 04 48 50 54 30 a0 11 93 48 50 41 53 01 F0..HPT0...HPAS. 48b0: 70 0c 00 10 d0 fe 48 50 54 30 a0 12 93 48 50 41 p.....HPT0...HPA 48c0: 53 0a 02 70 0c 00 20 d0 fe 48 50 54 30 a0 12 93 S..p.. ..HPT0... 48d0: 48 50 41 53 0a 03 70 0c 00 30 d0 fe 48 50 54 30 HPAS..p..0..HPT0 48e0: a4 42 55 46 30 5b 82 45 0a 49 50 49 43 08 5f 48 .BUF0[.E.IPIC._H 48f0: 49 44 0b 41 d0 08 5f 43 52 53 11 41 09 0a 8d 47 ID.A.._CRS.A...G 4900: 01 20 00 20 00 01 02 47 01 24 00 24 00 01 02 47 . . ...G.$.$...G 4910: 01 28 00 28 00 01 02 47 01 2c 00 2c 00 01 02 47 .(.(...G.,.,...G 4920: 01 30 00 30 00 01 02 47 01 34 00 34 00 01 02 47 .0.0...G.4.4...G 4930: 01 38 00 38 00 01 02 47 01 3c 00 3c 00 01 02 47 .8.8...G.<.<...G 4940: 01 a0 00 a0 00 01 02 47 01 a4 00 a4 00 01 02 47 .......G.......G 4950: 01 a8 00 a8 00 01 02 47 01 ac 00 ac 00 01 02 47 .......G.......G 4960: 01 b0 00 b0 00 01 02 47 01 b4 00 b4 00 01 02 47 .......G.......G 4970: 01 b8 00 b8 00 01 02 47 01 bc 00 bc 00 01 02 47 .......G.......G 4980: 01 d0 04 d0 04 01 02 22 04 00 79 00 5b 82 25 4d ......."..y.[.%M 4990: 41 54 48 08 5f 48 49 44 0c 41 d0 0c 04 08 5f 43 ATH._HID.A...._C 49a0: 52 53 11 10 0a 0d 47 01 f0 00 f0 00 01 01 22 00 RS....G.......". 49b0: 20 79 00 5b 82 4b 09 4c 44 52 43 08 5f 48 49 44 y.[.K.LDRC._HID 49c0: 0c 41 d0 0c 02 08 5f 55 49 44 0a 02 08 5f 43 52 .A...._UID..._CR 49d0: 53 11 4e 07 0a 7a 47 01 2e 00 2e 00 01 02 47 01 S.N..zG.......G. 49e0: 4e 00 4e 00 01 02 47 01 61 00 61 00 01 01 47 01 N.N...G.a.a...G. 49f0: 63 00 63 00 01 01 47 01 65 00 65 00 01 01 47 01 c.c...G.e.e...G. 4a00: 67 00 67 00 01 01 47 01 80 00 80 00 01 01 47 01 g.g...G.......G. 4a10: 92 00 92 00 01 01 47 01 b2 00 b2 00 01 02 47 01 ......G.......G. 4a20: 80 06 80 06 01 20 47 01 00 08 00 08 01 10 47 01 ..... G.......G. 4a30: 00 10 00 10 01 80 47 01 80 11 80 11 01 40 47 01 ......G......@G. 4a40: 00 fe 00 fe 01 01 47 01 00 ff 00 ff 01 80 79 00 ......G.......y. 4a50: 5b 82 25 52 54 43 5f 08 5f 48 49 44 0c 41 d0 0b [.%RTC_._HID.A.. 4a60: 00 08 5f 43 52 53 11 10 0a 0d 47 01 70 00 70 00 .._CRS....G.p.p. 4a70: 01 08 22 00 01 79 00 5b 82 2d 54 49 4d 52 08 5f .."..y.[.-TIMR._ 4a80: 48 49 44 0c 41 d0 01 00 08 5f 43 52 53 11 18 0a HID.A...._CRS... 4a90: 15 47 01 40 00 40 00 01 04 47 01 50 00 50 00 10 .G.@.@...G.P.P.. 4aa0: 04 22 01 00 79 00 5b 82 32 41 43 41 44 08 5f 48 ."..y.[.2ACAD._H 4ab0: 49 44 0d 41 43 50 49 30 30 30 33 00 08 5f 50 43 ID.ACPI0003.._PC 4ac0: 4c 12 06 01 5f 53 42 5f 14 11 5f 50 53 52 00 70 L..._SB_.._PSR.p 4ad0: 01 41 43 50 57 a4 41 43 50 57 14 1a 45 43 4f 4b .ACPW.ACPW..ECOK 4ae0: 00 a0 0f 93 5e 2e 45 43 30 5f 5a 30 30 39 01 a4 ....^.EC0_Z009.. 4af0: 01 a1 03 a4 00 5b 82 4e 6f 45 43 30 5f 08 5f 48 .....[.NoEC0_._H 4b00: 49 44 0c 41 d0 0c 09 08 5f 47 50 45 0a 1c 08 5a ID.A...._GPE...Z 4b10: 30 30 39 00 08 5f 43 52 53 11 15 0a 12 47 01 62 009.._CRS....G.b 4b20: 00 62 00 01 01 47 01 66 00 66 00 01 01 79 00 14 .b...G.f.f...y.. 4b30: 3b 5f 52 45 47 02 a0 34 93 68 0a 03 70 69 5a 30 ;_REG..4.h..piZ0 4b40: 30 39 a0 28 5b 12 5f 4f 53 49 60 70 00 42 54 44 09.([._OSI`p.BTD 4b50: 53 a0 19 5f 4f 53 49 0d 57 69 6e 64 6f 77 73 20 S.._OSI.Windows 4b60: 32 30 30 36 00 70 01 42 54 44 53 5b 80 45 52 41 2006.p.BTDS[.ERA 4b70: 4d 03 00 0a ff 5b 81 4e 2e 45 52 41 4d 11 00 40 M....[.N.ERAM..@ 4b80: 30 53 4d 50 52 08 53 4d 53 54 08 53 4d 41 44 08 0SMPR.SMST.SMAD. 4b90: 53 4d 43 4d 08 53 4d 44 30 40 10 42 43 4e 54 08 SMCM.SMD0@.BCNT. 4ba0: 53 4d 41 41 18 00 40 04 43 48 47 4d 10 43 48 47 SMAA..@.CHGM.CHG 4bb0: 53 10 45 4e 49 44 08 45 4e 49 42 08 45 4e 44 44 S.ENID.ENIB.ENDD 4bc0: 08 43 48 47 56 08 43 48 47 41 10 42 41 4c 30 01 .CHGV.CHGA.BAL0. 4bd0: 42 41 4c 31 01 42 41 4c 32 01 42 41 4c 33 01 42 BAL1.BAL2.BAL3.B 4be0: 42 43 30 01 42 42 43 31 01 42 42 43 32 01 42 42 BC0.BBC1.BBC2.BB 4bf0: 43 33 01 00 08 50 48 44 44 01 49 46 44 44 01 49 C3...PHDD.IFDD.I 4c00: 4f 44 44 01 53 48 44 44 01 53 31 32 30 01 45 46 ODD.SHDD.S120.EF 4c10: 44 44 01 43 52 54 44 01 53 50 57 52 01 53 42 54 DD.CRTD.SPWR.SBT 4c20: 4e 01 56 49 44 4f 01 56 4f 4c 44 01 56 4f 4c 55 N.VIDO.VOLD.VOLU 4c30: 01 4d 55 54 45 01 43 4f 4e 54 01 42 52 47 54 01 .MUTE.CONT.BRGT. 4c40: 48 42 54 4e 01 53 34 53 54 01 53 4b 45 59 01 42 HBTN.S4ST.SKEY.B 4c50: 4b 45 59 01 54 4f 55 50 01 46 4e 42 4e 01 4c 49 KEY.TOUP.FNBN.LI 4c60: 44 46 01 44 49 47 4d 01 55 57 41 4b 01 00 08 44 DF.DIGM.UWAK...D 4c70: 4b 53 50 01 44 4b 49 4e 01 44 4b 49 44 01 44 4b KSP.DKIN.DKID.DK 4c80: 4f 4b 01 00 04 44 4b 50 57 01 00 07 42 54 4e 53 OK...DKPW...BTNS 4c90: 08 53 31 4c 44 01 53 33 4c 44 01 56 47 41 51 01 .S1LD.S3LD.VGAQ. 4ca0: 50 43 4d 51 01 50 43 4d 52 01 41 44 50 54 01 53 PCMQ.PCMR.ADPT.S 4cb0: 4c 4c 53 01 53 59 53 37 01 50 57 41 4b 01 4d 57 LLS.SYS7.PWAK.MW 4cc0: 41 4b 01 4c 57 41 4b 01 00 05 00 28 54 43 4e 4c AK.LWAK....(TCNL 4cd0: 08 54 4d 50 49 08 54 4d 53 44 08 46 41 53 4e 04 .TMPI.TMSD.FASN. 4ce0: 46 41 53 55 04 50 43 56 4c 04 00 02 53 57 54 4f FASU.PCVL...SWTO 4cf0: 01 48 57 54 4f 01 4d 4f 44 45 01 46 41 4e 53 02 .HWTO.MODE.FANS. 4d00: 49 4e 49 54 01 46 41 4e 31 01 46 41 4e 32 01 46 INIT.FAN1.FAN2.F 4d10: 41 4e 54 01 53 4b 4e 4d 01 43 54 4d 50 08 4c 49 ANT.SKNM.CTMP.LI 4d20: 44 45 01 50 4d 45 45 01 50 57 42 45 01 52 4e 47 DE.PMEE.PWBE.RNG 4d30: 45 01 42 54 57 45 01 44 43 4b 45 01 00 02 53 4b E.BTWE.DCKE...SK 4d40: 54 58 08 53 4b 54 42 08 53 4b 54 43 08 53 4b 54 TX.SKTB.SKTC.SKT 4d50: 41 08 00 08 48 41 50 4c 02 48 41 50 52 01 00 05 A...HAPL.HAPR... 4d60: 42 54 44 54 01 42 54 50 57 01 42 54 44 53 01 42 BTDT.BTPW.BTDS.B 4d70: 54 50 53 01 42 54 53 57 01 42 54 57 4b 01 42 54 TPS.BTSW.BTWK.BT 4d80: 4c 44 01 00 01 42 52 54 53 08 43 4e 54 53 08 57 LD...BRTS.CNTS.W 4d90: 4c 41 54 01 42 54 41 54 01 57 4c 45 58 01 42 54 LAT.BTAT.WLEX.BT 4da0: 45 58 01 4b 4c 53 57 01 57 4c 4f 4b 01 00 02 50 EX.KLSW.WLOK...P 4db0: 54 49 44 08 43 50 55 54 08 45 50 4b 54 08 47 48 TID.CPUT.EPKT.GH 4dc0: 49 44 08 00 04 42 4d 46 30 03 42 54 59 30 01 42 ID...BMF0.BTY0.B 4dd0: 53 54 30 08 42 52 43 30 10 42 53 4e 30 10 42 50 ST0.BRC0.BSN0.BP 4de0: 56 30 10 42 44 56 30 10 42 44 43 30 10 42 46 43 V0.BDV0.BDC0.BFC 4df0: 30 10 47 41 55 30 08 43 59 43 30 08 42 50 43 30 0.GAU0.CYC0.BPC0 4e00: 10 42 41 43 30 10 42 41 54 30 08 42 54 57 30 10 .BAC0.BAT0.BTW0. 4e10: 42 44 4e 30 08 00 40 04 00 04 42 4d 46 31 03 42 BDN0..@...BMF1.B 4e20: 54 59 31 01 42 53 54 31 08 42 52 43 31 10 42 53 TY1.BST1.BRC1.BS 4e30: 4e 31 10 42 50 56 31 10 42 44 56 31 10 42 44 43 N1.BPV1.BDV1.BDC 4e40: 31 10 42 46 43 31 10 47 41 55 31 08 43 59 43 31 1.BFC1.GAU1.CYC1 4e50: 08 42 50 43 31 10 42 41 43 31 10 42 41 54 31 08 .BPC1.BAC1.BAT1. 4e60: 42 54 57 31 10 14 37 5f 51 31 31 00 70 0a 87 50 BTW1..7_Q11.p..P 4e70: 38 30 48 a0 13 49 47 44 53 5e 5e 5e 2e 47 46 58 80H..IGDS^^^.GFX 4e80: 30 42 52 54 4e 0a 87 a1 15 86 5e 5e 5e 2f 03 50 0BRTN.....^^^/.P 4e90: 45 47 50 56 47 41 5f 4c 43 44 5f 0a 87 14 37 5f EGPVGA_LCD_...7_ 4ea0: 51 31 32 00 70 0a 86 50 38 30 48 a0 13 49 47 44 Q12.p..P80H..IGD 4eb0: 53 5e 5e 5e 2e 47 46 58 30 42 52 54 4e 0a 86 a1 S^^^.GFX0BRTN... 4ec0: 15 86 5e 5e 5e 2f 03 50 45 47 50 56 47 41 5f 4c ..^^^/.PEGPVGA_L 4ed0: 43 44 5f 0a 86 14 40 05 5f 51 31 43 00 70 0d 3d CD_...@._Q1C.p.= 4ee0: 3d 3d 3d 3d 51 55 45 52 59 5f 31 43 3d 3d 3d 3d ====QUERY_1C==== 4ef0: 3d 00 5b 31 a0 31 56 49 44 4f a0 12 49 47 44 53 =.[1.1VIDO..IGDS 4f00: 5e 5e 5e 2e 47 46 58 30 47 48 44 53 00 a1 12 5e ^^^.GFX0GHDS...^ 4f10: 5e 5e 2f 03 50 45 47 50 56 47 41 5f 44 53 53 57 ^^/.PEGPVGA_DSSW 4f20: 70 00 56 49 44 4f 14 21 5f 51 31 44 00 70 0d 3d p.VIDO.!_Q1D.p.= 4f30: 3d 3d 3d 3d 51 55 45 52 59 5f 31 44 3d 3d 3d 3d ====QUERY_1D==== 4f40: 3d 00 5b 31 50 43 4c 4b 14 21 5f 51 31 45 00 70 =.[1PCLK.!_Q1E.p 4f50: 0d 3d 3d 3d 3d 3d 51 55 45 52 59 5f 31 45 3d 3d .=====QUERY_1E== 4f60: 3d 3d 3d 00 5b 31 50 43 4c 4b 14 39 5f 51 32 35 ===.[1PCLK.9_Q25 4f70: 00 70 0d 3d 3d 3d 3d 3d 51 55 45 52 59 5f 32 35 .p.=====QUERY_25 4f80: 3d 3d 3d 3d 3d 00 5b 31 5b 22 0b e8 03 86 5e 5e =====.[1["....^^ 4f90: 42 41 54 31 0a 81 5b 22 0b e8 03 86 5e 5e 42 41 BAT1..["....^^BA 4fa0: 54 31 0a 80 14 2f 5f 51 33 34 00 70 0d 3d 3d 3d T1.../_Q34.p.=== 4fb0: 3d 3d 51 55 45 52 59 5f 33 34 3d 3d 3d 3d 3d 00 ==QUERY_34=====. 4fc0: 5b 31 a0 11 42 4b 45 59 50 48 53 53 0a 71 70 00 [1..BKEYPHSS.qp. 4fd0: 42 4b 45 59 14 32 5f 51 33 37 00 70 0d 3d 3d 3d BKEY.2_Q37.p.=== 4fe0: 3d 3d 51 55 45 52 59 5f 33 37 3d 3d 3d 3d 3d 00 ==QUERY_37=====. 4ff0: 5b 31 86 41 43 41 44 0a 80 5b 22 0b e8 03 86 5e [1.ACAD..["....^ 5000: 5e 42 41 54 31 0a 80 14 32 5f 51 33 38 00 70 0d ^BAT1...2_Q38.p. 5010: 3d 3d 3d 3d 3d 51 55 45 52 59 5f 33 38 3d 3d 3d =====QUERY_38=== 5020: 3d 3d 00 5b 31 86 41 43 41 44 0a 80 5b 22 0b e8 ==.[1.ACAD..[".. 5030: 03 86 5e 5e 42 41 54 31 0a 80 14 29 5f 51 32 44 ..^^BAT1...)_Q2D 5040: 00 70 0d 3d 3d 3d 3d 3d 51 55 45 52 59 5f 32 44 .p.=====QUERY_2D 5050: 3d 3d 3d 3d 3d 00 5b 31 70 00 44 54 53 4d 54 52 =====.[1p.DTSMTR 5060: 41 50 0a 46 14 29 5f 51 32 45 00 70 0d 3d 3d 3d AP.F.)_Q2E.p.=== 5070: 3d 3d 51 55 45 52 59 5f 32 45 3d 3d 3d 3d 3d 00 ==QUERY_2E=====. 5080: 5b 31 70 01 44 54 53 4d 54 52 41 50 0a 46 5b 80 [1p.DTSMTRAP.F[. 5090: 43 43 4c 4b 01 0b 10 10 0a 04 5b 81 20 43 43 4c CCLK......[. CCL 50a0: 4b 03 00 01 44 55 54 59 03 54 48 45 4e 01 00 03 K...DUTY.THEN... 50b0: 46 54 54 5f 01 00 08 54 53 54 53 01 5b 80 45 43 FTT_...TSTS.[.EC 50c0: 52 4d 03 00 0a ff 5b 81 44 04 45 43 52 4d 11 00 RM....[.D.ECRM.. 50d0: 40 4a 45 52 49 42 10 45 52 42 44 08 00 48 0a 53 @JERIB.ERBD..H.S 50e0: 44 54 4d 08 46 53 53 4e 04 46 41 4e 55 04 50 54 DTM.FSSN.FANU.PT 50f0: 56 4c 03 00 04 54 54 48 52 01 00 48 06 50 4a 49 VL...TTHR..H.PJI 5100: 44 08 00 08 00 48 1d 52 46 52 44 10 5b 01 46 41 D....H.RFRD.[.FA 5110: 4d 58 00 14 22 46 41 4e 47 01 5b 23 46 41 4d 58 MX.."FANG.[#FAMX 5120: ff ff 70 68 45 52 49 42 70 45 52 42 44 60 5b 27 ..phERIBpERBD`[' 5130: 46 41 4d 58 a4 60 14 22 46 41 4e 57 02 5b 23 46 FAMX.`."FANW.[#F 5140: 41 4d 58 ff ff 70 68 45 52 49 42 70 69 45 52 42 AMX..phERIBpiERB 5150: 44 5b 27 46 41 4d 58 a4 69 14 09 54 55 56 52 01 D['FAMX.i..TUVR. 5160: a4 0a 03 14 2e 54 48 52 4f 01 a0 09 93 68 00 a4 .....THRO....h.. 5170: 54 48 45 4e a1 1d a0 09 93 68 01 a4 44 55 54 59 THEN.....h..DUTY 5180: a1 11 a0 0a 93 68 0a 02 a4 54 54 48 52 a1 04 a4 .....h...TTHR... 5190: 0a ff 14 2a 43 4c 43 4b 01 a0 10 93 68 00 70 00 ...*CLCK....h.p. 51a0: 54 48 45 4e 70 00 46 54 54 5f a1 0d 70 68 44 55 THENp.FTT_..phDU 51b0: 54 59 70 01 54 48 45 4e a4 54 48 45 4e 14 37 50 TYp.THEN.THEN.7P 51c0: 43 4c 4b 00 70 50 54 56 4c 60 a0 10 93 60 00 70 CLK.pPTVL`...`.p 51d0: 00 54 48 45 4e 70 00 46 54 54 5f a1 19 76 60 70 .THENp.FTT_..v`p 51e0: 80 60 00 61 7b 61 0a 07 61 70 61 44 55 54 59 70 .`.a{a..apaDUTYp 51f0: 01 54 48 45 4e 5b 82 4b 22 42 41 54 31 08 5f 48 .THEN[.K"BAT1._H 5200: 49 44 0c 41 d0 0c 0a 08 5f 55 49 44 01 08 5f 50 ID.A...._UID.._P 5210: 43 4c 12 06 01 5f 53 42 5f 14 39 5f 53 54 41 00 CL..._SB_.9_STA. 5220: a0 29 90 45 43 4f 4b 93 45 43 44 59 00 a0 13 5e .).ECOK.ECDY...^ 5230: 5e 2e 45 43 30 5f 42 41 4c 30 5b 22 0a 14 a4 0a ^.EC0_BAL0[".... 5240: 1f a1 08 5b 22 0a 14 a4 0a 0f a1 08 5b 22 0a 14 ...[".......[".. 5250: a4 0a 1f 14 48 10 5f 42 49 46 00 08 53 54 41 54 ....H._BIF..STAT 5260: 12 3a 0d 01 0b a0 0f 0b a0 0f 01 0b 5c 2b 0b a4 .:..........\+.. 5270: 01 0a 9c 0b 08 01 0b c4 0e 0d 50 41 33 34 36 35 ..........PA3465 5280: 55 20 00 0d 33 36 35 38 51 00 0d 4c 69 2d 49 6f U ..3658Q..Li-Io 5290: 6e 00 0d 43 4f 4d 50 41 4c 20 00 a0 4b 07 90 45 n..COMPAL ..K..E 52a0: 43 4f 4b 93 45 43 44 59 00 70 5e 5e 2e 45 43 30 COK.ECDY.p^^.EC0 52b0: 5f 42 44 4e 30 60 a0 23 93 60 0a 08 70 0a b4 88 _BDN0`.#.`..p... 52c0: 53 54 41 54 0a 06 00 70 0d 50 41 33 34 35 37 55 STAT...p.PA3457U 52d0: 20 00 88 53 54 41 54 0a 09 00 a0 24 93 60 0a 20 ..STAT....$.`. 52e0: 70 0b 02 01 88 53 54 41 54 0a 06 00 70 0d 50 41 p....STAT...p.PA 52f0: 33 34 35 37 55 20 00 88 53 54 41 54 0a 09 00 5b 3457U ..STAT...[ 5300: 22 0a 14 70 5e 5e 2e 45 43 30 5f 42 44 43 30 42 "..p^^.EC0_BDC0B 5310: 46 43 31 5b 22 0a 14 a1 12 70 0d 4c 69 2d 49 6f FC1["....p.Li-Io 5320: 6e 00 88 53 54 41 54 0a 0b 00 a0 2c 42 46 43 31 n..STAT....,BFC1 5330: 78 42 46 43 31 0a 64 60 61 77 61 0a 64 61 70 61 xBFC1.d`awa.dapa 5340: 42 46 43 31 70 61 88 53 54 41 54 01 00 70 61 88 BFC1pa.STAT..pa. 5350: 53 54 41 54 0a 02 00 a4 53 54 41 54 14 45 0c 5f STAT....STAT.E._ 5360: 42 53 54 00 08 50 42 53 54 12 10 04 00 0c ff ff BST..PBST....... 5370: ff ff 0c ff ff ff ff 0b 5c 2b 70 0b 5c 2b 63 a0 ........\+p.\+c. 5380: 38 90 45 43 4f 4b 93 45 43 44 59 00 5b 22 0a 14 8.ECOK.ECDY.[".. 5390: 70 5e 5e 2e 45 43 30 5f 42 53 54 30 42 53 54 31 p^^.EC0_BST0BST1 53a0: 5b 22 0a 14 70 5e 5e 2e 45 43 30 5f 47 41 55 30 ["..p^^.EC0_GAU0 53b0: 42 47 55 31 5b 22 0a 14 a0 15 42 46 43 31 77 42 BGU1["....BFC1wB 53c0: 47 55 31 42 46 43 31 62 78 62 0a 64 64 62 a1 09 GU1BFC1bxb.ddb.. 53d0: 77 42 47 55 31 0a 28 62 70 42 53 54 31 88 50 42 wBGU1.(bpBST1.PB 53e0: 53 54 00 00 70 00 88 50 42 53 54 01 00 70 62 88 ST..p..PBST..pb. 53f0: 50 42 53 54 0a 02 00 70 63 88 50 42 53 54 0a 03 PBST...pc.PBST.. 5400: 00 a0 1b 94 45 43 44 59 00 76 45 43 44 59 a0 0e ....ECDY.vECDY.. 5410: 93 45 43 44 59 00 86 42 41 54 31 0a 80 a4 50 42 .ECDY..BAT1...PB 5420: 53 54 5b 82 2e 50 53 32 4b 08 5f 48 49 44 0c 41 ST[..PS2K._HID.A 5430: d0 03 03 08 5f 43 52 53 11 19 0a 16 47 01 60 00 ...._CRS....G.`. 5440: 60 00 01 01 47 01 64 00 64 00 01 01 23 02 00 01 `...G.d.d...#... 5450: 79 00 5b 82 1e 50 53 32 4d 08 5f 48 49 44 0c 41 y.[..PS2M._HID.A 5460: d0 0f 13 08 5f 43 52 53 11 09 0a 06 23 00 10 01 ...._CRS....#... 5470: 79 00 5b 82 43 6a 50 41 54 41 08 5f 41 44 52 0c y.[.CjPATA._ADR. 5480: 01 00 1f 00 5b 80 50 41 43 53 02 0a 40 0a c0 5b ....[.PACS..@..[ 5490: 81 49 04 50 41 43 53 03 50 52 49 54 10 00 10 50 .I.PACS.PRIT...P 54a0: 53 49 54 04 00 1c 53 59 4e 43 04 00 0c 53 44 54 SIT...SYNC...SDT 54b0: 30 02 00 02 53 44 54 31 02 00 4a 04 49 43 52 30 0...SDT1..J.ICR0 54c0: 04 49 43 52 31 04 49 43 52 32 04 49 43 52 33 04 .ICR1.ICR2.ICR3. 54d0: 49 43 52 34 04 49 43 52 35 04 5b 82 4b 63 50 52 ICR4.ICR5.[.KcPR 54e0: 49 44 08 5f 41 44 52 00 14 40 17 5f 47 54 4d 00 ID._ADR..@._GTM. 54f0: 08 50 42 55 46 11 17 0a 14 00 00 00 00 00 00 00 .PBUF........... 5500: 00 00 00 00 00 00 00 00 00 00 00 00 00 8a 50 42 ..............PB 5510: 55 46 00 50 49 4f 30 8a 50 42 55 46 0a 04 44 4d UF.PIO0.PBUF..DM 5520: 41 30 8a 50 42 55 46 0a 08 50 49 4f 31 8a 50 42 A0.PBUF..PIO1.PB 5530: 55 46 0a 0c 44 4d 41 31 8a 50 42 55 46 0a 10 46 UF..DMA1.PBUF..F 5540: 4c 41 47 70 47 45 54 50 50 52 49 54 50 49 4f 30 LAGpGETPPRITPIO0 5550: 70 47 44 4d 41 7b 53 59 4e 43 01 00 7b 49 43 52 pGDMA{SYNC..{ICR 5560: 33 01 00 7b 49 43 52 30 01 00 53 44 54 30 7b 49 3..{ICR0..SDT0{I 5570: 43 52 31 01 00 44 4d 41 30 a0 14 93 44 4d 41 30 CR1..DMA0...DMA0 5580: 0c ff ff ff ff 70 50 49 4f 30 44 4d 41 30 a0 2e .....pPIO0DMA0.. 5590: 7b 50 52 49 54 0b 00 40 00 a0 14 93 7b 50 52 49 {PRIT..@....{PRI 55a0: 54 0a 90 00 0a 80 70 0b 84 03 50 49 4f 31 a1 0e T.....p...PIO1.. 55b0: 70 47 45 54 54 50 53 49 54 50 49 4f 31 a1 0b 70 pGETTPSITPIO1..p 55c0: 0c ff ff ff ff 50 49 4f 31 70 47 44 4d 41 7b 53 .....PIO1pGDMA{S 55d0: 59 4e 43 0a 02 00 7b 49 43 52 33 0a 02 00 7b 49 YNC...{ICR3...{I 55e0: 43 52 30 0a 02 00 53 44 54 31 7b 49 43 52 31 0a CR0...SDT1{ICR1. 55f0: 02 00 44 4d 41 31 a0 14 93 44 4d 41 31 0c ff ff ..DMA1...DMA1... 5600: ff ff 70 50 49 4f 31 44 4d 41 31 70 47 45 54 46 ..pPIO1DMA1pGETF 5610: 7b 53 59 4e 43 01 00 7b 53 59 4e 43 0a 02 00 50 {SYNC..{SYNC...P 5620: 52 49 54 46 4c 41 47 a0 2c 7b 93 50 49 4f 30 0c RITFLAG.,{.PIO0. 5630: ff ff ff ff 93 44 4d 41 30 0c ff ff ff ff 00 70 .....DMA0......p 5640: 0a 78 50 49 4f 30 70 0a 14 44 4d 41 30 70 0a 03 .xPIO0p..DMA0p.. 5650: 46 4c 41 47 a4 50 42 55 46 14 4c 2a 5f 53 54 4d FLAG.PBUF.L*_STM 5660: 03 8a 68 00 50 49 4f 30 8a 68 0a 04 44 4d 41 30 ..h.PIO0.h..DMA0 5670: 8a 68 0a 08 50 49 4f 31 8a 68 0a 0c 44 4d 41 31 .h..PIO1.h..DMA1 5680: 8a 68 0a 10 46 4c 41 47 a0 41 12 93 87 69 0b 00 .h..FLAG.A...i.. 5690: 02 7b 50 52 49 54 0b f0 c0 50 52 49 54 7b 53 59 .{PRIT...PRIT{SY 56a0: 4e 43 0a 02 53 59 4e 43 70 00 53 44 54 30 7b 49 NC..SYNCp.SDT0{I 56b0: 43 52 30 0a 02 49 43 52 30 7b 49 43 52 31 0a 02 CR0..ICR0{ICR1.. 56c0: 49 43 52 31 7b 49 43 52 33 0a 02 49 43 52 33 7b ICR1{ICR3..ICR3{ 56d0: 49 43 52 35 0a 02 49 43 52 35 8b 69 0a 62 57 34 ICR5..ICR5.i.bW4 56e0: 39 30 8b 69 0a 6a 57 35 33 30 8b 69 0a 7e 57 36 90.i.jW530.i.~W6 56f0: 33 30 8b 69 0a 80 57 36 34 30 8b 69 0a b0 57 38 30.i..W640.i..W8 5700: 38 30 8b 69 0a ba 57 39 33 30 7d 50 52 49 54 0b 80.i..W930}PRIT. 5710: 04 80 50 52 49 54 a0 1e 90 7b 46 4c 41 47 0a 02 ..PRIT...{FLAG.. 5720: 00 7b 57 34 39 30 0b 00 08 00 7d 50 52 49 54 0a .{W490....}PRIT. 5730: 02 50 52 49 54 7d 50 52 49 54 53 45 54 50 50 49 .PRIT}PRITSETPPI 5740: 4f 30 57 35 33 30 57 36 34 30 50 52 49 54 a0 4b O0W530W640PRIT.K 5750: 05 7b 46 4c 41 47 01 00 7d 53 59 4e 43 01 53 59 .{FLAG..}SYNC.SY 5760: 4e 43 70 53 44 4d 41 44 4d 41 30 53 44 54 30 a0 NCpSDMADMA0SDT0. 5770: 12 95 44 4d 41 30 0a 1e 7d 49 43 52 33 01 49 43 ..DMA0..}ICR3.IC 5780: 52 33 a0 12 95 44 4d 41 30 0a 3c 7d 49 43 52 30 R3...DMA0.<}ICR0 5790: 01 49 43 52 30 a0 14 7b 57 39 33 30 0b 00 20 00 .ICR0..{W930.. . 57a0: 7d 49 43 52 31 01 49 43 52 31 a0 4b 15 93 87 6a }ICR1.ICR1.K...j 57b0: 0b 00 02 7b 50 52 49 54 0b 0f bf 50 52 49 54 70 ...{PRIT...PRITp 57c0: 00 50 53 49 54 7b 53 59 4e 43 01 53 59 4e 43 70 .PSIT{SYNC.SYNCp 57d0: 00 53 44 54 31 7b 49 43 52 30 01 49 43 52 30 7b .SDT1{ICR0.ICR0{ 57e0: 49 43 52 31 01 49 43 52 31 7b 49 43 52 33 01 49 ICR1.ICR1{ICR3.I 57f0: 43 52 33 7b 49 43 52 35 01 49 43 52 35 8b 6a 0a CR3{ICR5.ICR5.j. 5800: 62 57 34 39 31 8b 6a 0a 6a 57 35 33 31 8b 6a 0a bW491.j.jW531.j. 5810: 7e 57 36 33 31 8b 6a 0a 80 57 36 34 31 8b 6a 0a ~W631.j..W641.j. 5820: b0 57 38 38 31 8b 6a 0a ba 57 39 33 31 7d 50 52 .W881.j..W931}PR 5830: 49 54 0b 40 80 50 52 49 54 a0 1e 90 7b 46 4c 41 IT.@.PRIT...{FLA 5840: 47 0a 08 00 7b 57 34 39 31 0b 00 08 00 7d 50 52 G...{W491....}PR 5850: 49 54 0a 20 50 52 49 54 a0 4c 04 7b 46 4c 41 47 IT. PRIT.L.{FLAG 5860: 0a 10 00 7d 50 52 49 54 0b 00 40 50 52 49 54 a0 ...}PRIT..@PRIT. 5870: 13 94 50 49 4f 31 0a f0 7d 50 52 49 54 0a 80 50 ..PIO1..}PRIT..P 5880: 52 49 54 a1 21 7d 50 52 49 54 0a 10 50 52 49 54 RIT.!}PRIT..PRIT 5890: 70 53 45 54 54 50 49 4f 31 57 35 33 31 57 36 34 pSETTPIO1W531W64 58a0: 31 50 53 49 54 a0 40 06 7b 46 4c 41 47 0a 04 00 1PSIT.@.{FLAG... 58b0: 7d 53 59 4e 43 0a 02 53 59 4e 43 70 53 44 4d 41 }SYNC..SYNCpSDMA 58c0: 44 4d 41 31 53 44 54 31 a0 13 95 44 4d 41 31 0a DMA1SDT1...DMA1. 58d0: 1e 7d 49 43 52 33 0a 02 49 43 52 33 a0 13 95 44 .}ICR3..ICR3...D 58e0: 4d 41 31 0a 3c 7d 49 43 52 30 0a 02 49 43 52 30 MA1.<}ICR0..ICR0 58f0: a0 15 7b 57 39 33 31 0b 00 20 00 7d 49 43 52 31 ..{W931.. .}ICR1 5900: 0a 02 49 43 52 31 5b 82 47 10 50 5f 44 30 08 5f ..ICR1[.G.P_D0._ 5910: 41 44 52 00 14 4a 0f 5f 47 54 46 00 08 50 49 42 ADR..J._GTF..PIB 5920: 30 11 11 0a 0e 03 00 00 00 00 a0 ef 03 00 00 00 0............... 5930: 00 a0 ef 8c 50 49 42 30 01 50 4d 44 30 8c 50 49 ....PIB0.PMD0.PI 5940: 42 30 0a 08 44 4d 44 30 a0 40 06 7b 50 52 49 54 B0..DMD0.@.{PRIT 5950: 0a 02 00 a0 13 93 7b 50 52 49 54 0a 09 00 0a 08 ......{PRIT..... 5960: 70 0a 08 50 4d 44 30 a1 41 04 70 0a 0a 50 4d 44 p..PMD0.A.p..PMD 5970: 30 7a 7b 50 52 49 54 0b 00 03 00 0a 08 60 7a 7b 0z{PRIT......`z{ 5980: 50 52 49 54 0b 00 30 00 0a 0c 61 72 60 61 62 a0 PRIT..0...ar`ab. 5990: 0c 93 0a 03 62 70 0a 0b 50 4d 44 30 a0 0c 93 0a ....bp..PMD0.... 59a0: 05 62 70 0a 0c 50 4d 44 30 a1 07 70 01 50 4d 44 .bp..PMD0..p.PMD 59b0: 30 a0 43 04 7b 53 59 4e 43 01 00 70 7d 53 44 54 0.C.{SYNC..p}SDT 59c0: 30 0a 40 00 44 4d 44 30 a0 2c 7b 49 43 52 31 01 0.@.DMD0.,{ICR1. 59d0: 00 a0 13 7b 49 43 52 30 01 00 72 44 4d 44 30 0a ...{ICR0..rDMD0. 59e0: 02 44 4d 44 30 a0 0f 7b 49 43 52 33 01 00 70 0a .DMD0..{ICR3..p. 59f0: 45 44 4d 44 30 a1 14 7d 74 7b 50 4d 44 30 0a 07 EDMD0..}t{PMD0.. 5a00: 00 0a 02 00 0a 20 44 4d 44 30 a4 50 49 42 30 5b ..... DMD0.PIB0[ 5a10: 82 46 10 50 5f 44 31 08 5f 41 44 52 01 14 49 0f .F.P_D1._ADR..I. 5a20: 5f 47 54 46 00 08 50 49 42 31 11 11 0a 0e 03 00 _GTF..PIB1...... 5a30: 00 00 00 b0 ef 03 00 00 00 00 b0 ef 8c 50 49 42 .............PIB 5a40: 31 01 50 4d 44 31 8c 50 49 42 31 0a 08 44 4d 44 1.PMD1.PIB1..DMD 5a50: 31 a0 4b 05 7b 50 52 49 54 0a 20 00 a0 13 93 7b 1.K.{PRIT. ....{ 5a60: 50 52 49 54 0a 90 00 0a 80 70 0a 08 50 4d 44 31 PRIT.....p..PMD1 5a70: a1 3c 72 7b 50 53 49 54 0a 03 00 7a 7b 50 53 49 .. 0050: 80 49 ee 6a 65 26 72 1e cd bf 5f 2f 96 d6 c0 0a .I.je&r..._/.... 0060: 92 f5 06 b5 00 b2 3b 29 02 e2 4c 8d c2 f2 bc 41 ......;)..L....A 0070: 77 9c 70 f0 f3 1b 09 d2 63 5a dc a8 83 f8 5e c9 w.p.....cZ....^. 0080: 15 95 f9 fa fd dc 05 b7 4d 67 7f 2d b3 84 33 20 ........Mg.-..3 0090: e1 d1 79 2a a7 6a 77 d1 b6 20 2a 76 42 c5 d5 e9 ..y*.jw.. *vB... 00a0: b6 43 40 55 44 c3 c9 37 99 5f 41 97 70 f3 d1 f6 .C@UD..7._A.p... 00b0: 07 ec 7b 1a 29 a1 c1 f1 91 fd 48 86 6e 3e ce cb ..{.).....H.n>.. 00c0: 01 00 00 00 b6 00 00 00 00 00 02 00 4c 45 4e 4f ............LENO 00d0: 56 4f 54 50 2d 36 38 20 20 20 57 49 4e 44 4f 57 VOTP-68 WINDOW 00e0: 53 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 S .............. 00f0: 00 00 00 00 00 00 8a 6e 2e c9 36 e6 7f 10 8a ea .......n..6..... 0100: 14 ad d2 93 b7 6d 9b 73 ad 83 36 b8 6c a7 a7 ee .....m.s..6.l... 0110: 37 47 16 fe f3 fc cd c7 89 84 06 16 91 0b 1e 81 7G.............. 0120: 11 42 b1 35 52 57 f6 6b bb 5f a5 81 e2 ff 89 8a .B.5RW.k._...... 0130: 95 c3 4d fc e9 56 4f 4c 34 cc 99 5e 62 e1 90 8a ..M..VOL4..^b... 0140: 54 be 4a 00 5c 9b a0 86 41 46 66 9d e2 f2 e7 36 T.J.\...AFf....6 0150: 9c 33 91 27 e7 8d 5c a1 d8 f9 a4 61 8a 1c 04 07 .3.'..\....a.... 0160: e3 2a 1e 14 f1 bd 7f 4c 09 ff 19 11 a9 d4 74 ca .*.....L......t. 0170: 11 9e dc 54 39 bf ...T9. APIC @ 0xbf6dff70 0000: 41 50 49 43 68 00 00 00 01 13 50 54 4c 54 44 20 APICh.....PTLTD 0010: 09 20 41 50 49 43 20 20 00 00 04 06 20 4c 54 50 . APIC .... LTP 0020: 00 00 00 00 00 00 e0 fe 01 00 00 00 00 08 00 00 ................ 0030: 01 00 00 00 00 08 01 01 01 00 00 00 01 0c 02 00 ................ 0040: 00 00 c0 fe 00 00 00 00 04 06 00 05 00 01 04 06 ................ 0050: 01 05 00 01 02 0a 00 00 02 00 00 00 05 00 02 0a ................ 0060: 00 09 09 00 00 00 0d 00 ........ BOOT @ 0xbf6dffd8 0000: 42 4f 4f 54 28 00 00 00 01 a5 50 54 4c 54 44 20 BOOT(.....PTLTD 0010: 24 53 42 46 54 42 4c 24 00 00 04 06 20 4c 54 50 $SBFTBL$.... LTP 0020: 01 00 00 00 36 00 00 00 ....6... SSDT @ 0xbf6d98bd 0000: 53 53 44 54 ad 02 00 00 01 59 53 61 74 61 52 65 SSDT.....YSataRe 0010: 53 61 74 61 41 68 63 69 00 10 00 00 49 4e 54 4c SataAhci....INTL 0020: 24 06 05 20 10 48 28 5c 2f 03 5f 53 42 5f 50 43 $.. .H(\/._SB_PC 0030: 49 30 53 41 54 41 5b 82 4f 0c 50 52 54 30 08 5f I0SATA[.O.PRT0._ 0040: 41 44 52 0b ff ff 14 44 0b 5f 53 44 44 01 08 47 ADR....D._SDD..G 0050: 42 55 30 11 0a 0a 07 00 00 00 00 00 a0 00 8c 47 BU0............G 0060: 42 55 30 0a 00 47 42 30 30 8c 47 42 55 30 0a 01 BU0..GB00.GBU0.. 0070: 47 42 30 31 8c 47 42 55 30 0a 02 47 42 30 32 8c GB01.GBU0..GB02. 0080: 47 42 55 30 0a 03 47 42 30 33 8c 47 42 55 30 0a GBU0..GB03.GBU0. 0090: 04 47 42 30 34 8c 47 42 55 30 0a 05 47 42 30 35 .GB04.GBU0..GB05 00a0: 8c 47 42 55 30 0a 06 47 42 30 36 a0 46 04 93 87 .GBU0..GB06.F... 00b0: 68 0b 00 02 8b 68 0a 9c 57 37 38 30 a0 1e 7b 57 h....h..W780..{W 00c0: 37 38 30 0a 08 00 70 0a 10 47 42 30 30 70 0a 03 780...p..GB00p.. 00d0: 47 42 30 31 70 0a ef 47 42 30 36 a1 16 70 0a 90 GB01p..GB06..p.. 00e0: 47 42 30 30 70 0a 03 47 42 30 31 70 0a ef 47 42 GB00p..GB01p..GB 00f0: 30 36 70 47 42 55 30 47 54 46 30 14 0b 5f 47 54 06pGBU0GTF0.._GT 0100: 46 00 a4 47 54 46 30 5b 82 41 0d 50 52 54 31 08 F..GTF0[.A.PRT1. 0110: 5f 41 44 52 0c ff ff 01 00 14 44 0b 5f 53 44 44 _ADR......D._SDD 0120: 01 08 47 42 55 31 11 0a 0a 07 00 00 00 00 00 a0 ..GBU1.......... 0130: 00 8c 47 42 55 31 0a 00 47 42 31 30 8c 47 42 55 ..GBU1..GB10.GBU 0140: 31 0a 01 47 42 31 31 8c 47 42 55 31 0a 02 47 42 1..GB11.GBU1..GB 0150: 31 32 8c 47 42 55 31 0a 03 47 42 31 33 8c 47 42 12.GBU1..GB13.GB 0160: 55 31 0a 04 47 42 31 34 8c 47 42 55 31 0a 05 47 U1..GB14.GBU1..G 0170: 42 31 35 8c 47 42 55 31 0a 06 47 42 31 36 a0 46 B15.GBU1..GB16.F 0180: 04 93 87 68 0b 00 02 8b 68 0a 9c 57 37 38 31 a0 ...h....h..W781. 0190: 1e 7b 57 37 38 31 0a 08 00 70 0a 10 47 42 31 30 .{W781...p..GB10 01a0: 70 0a 03 47 42 31 31 70 0a ef 47 42 31 36 a1 16 p..GB11p..GB16.. 01b0: 70 0a 90 47 42 31 30 70 0a 03 47 42 31 31 70 0a p..GB10p..GB11p. 01c0: ef 47 42 31 36 70 47 42 55 31 47 54 46 31 14 0b .GB16pGBU1GTF1.. 01d0: 5f 47 54 46 00 a4 47 54 46 31 5b 82 41 0d 50 52 _GTF..GTF1[.A.PR 01e0: 54 32 08 5f 41 44 52 0c ff ff 02 00 14 44 0b 5f T2._ADR......D._ 01f0: 53 44 44 01 08 47 42 55 32 11 0a 0a 07 00 00 00 SDD..GBU2....... 0200: 00 00 a0 00 8c 47 42 55 32 0a 00 47 42 32 30 8c .....GBU2..GB20. 0210: 47 42 55 32 0a 01 47 42 32 31 8c 47 42 55 32 0a GBU2..GB21.GBU2. 0220: 02 47 42 32 32 8c 47 42 55 32 0a 03 47 42 32 33 .GB22.GBU2..GB23 0230: 8c 47 42 55 32 0a 04 47 42 32 34 8c 47 42 55 32 .GBU2..GB24.GBU2 0240: 0a 05 47 42 32 35 8c 47 42 55 32 0a 06 47 42 32 ..GB25.GBU2..GB2 0250: 36 a0 46 04 93 87 68 0b 00 02 8b 68 0a 9c 57 37 6.F...h....h..W7 0260: 38 32 a0 1e 7b 57 37 38 32 0a 08 00 70 0a 10 47 82..{W782...p..G 0270: 42 32 30 70 0a 03 47 42 32 31 70 0a ef 47 42 32 B20p..GB21p..GB2 0280: 36 a1 16 70 0a 90 47 42 32 30 70 0a 03 47 42 32 6..p..GB20p..GB2 0290: 31 70 0a ef 47 42 32 36 70 47 42 55 32 47 54 46 1p..GB26pGBU2GTF 02a0: 32 14 0b 5f 47 54 46 00 a4 47 54 46 32 2.._GTF..GTF2 SSDT @ 0xbf6d981a 0000: 53 53 44 54 a3 00 00 00 01 ed 42 72 74 52 65 66 SSDT......BrtRef 0010: 44 44 30 31 42 52 54 00 00 10 00 00 49 4e 54 4c DD01BRT.....INTL 0020: 24 06 05 20 10 4e 07 5c 2f 04 5f 53 42 5f 50 43 $.. .N.\/._SB_PC 0030: 49 30 47 46 58 30 44 44 30 33 14 1e 5f 42 43 4c I0GFX0DD03.._BCL 0040: 00 a4 12 16 0a 0a 46 0a 28 0a 00 0a 0a 0a 14 0a ......F.(....... 0050: 1e 0a 28 0a 32 0a 3c 0a 46 14 25 5f 42 43 4d 01 ..(.2.<.F.%_BCM. 0060: 78 68 0a 0a 60 61 70 61 5c 2f 05 5f 53 42 5f 50 xh..`apa\/._SB_P 0070: 43 49 30 4c 50 43 42 45 43 30 5f 42 52 54 53 14 CI0LPCBEC0_BRTS. 0080: 23 5f 42 51 43 00 77 5c 2f 05 5f 53 42 5f 50 43 #_BQC.w\/._SB_PC 0090: 49 30 4c 50 43 42 45 43 30 5f 42 52 54 53 0a 0a I0LPCBEC0_BRTS.. 00a0: 60 a4 60 `.` SSDT @ 0xbf6d8e10 0000: 53 53 44 54 5f 02 00 00 01 c8 50 6d 52 65 66 00 SSDT_.....PmRef. 0010: 43 70 75 30 54 73 74 00 00 30 00 00 49 4e 54 4c Cpu0Tst..0..INTL 0020: 24 06 05 20 10 4a 23 5c 2e 5f 50 52 5f 43 50 55 $.. .J#\._PR_CPU 0030: 30 08 5f 54 50 43 0a 00 14 4d 06 5f 50 54 43 00 0._TPC...M._PTC. 0040: a0 37 7b 50 44 43 30 0a 04 00 a4 12 2c 02 11 14 .7{PDC0.....,... 0050: 0a 11 82 0c 00 7f 00 00 00 00 00 00 00 00 00 00 ................ 0060: 00 79 00 11 14 0a 11 82 0c 00 7f 00 00 00 00 00 .y.............. 0070: 00 00 00 00 00 00 79 00 a4 12 2c 02 11 14 0a 11 ......y...,..... 0080: 82 0c 00 01 04 01 00 10 10 00 00 00 00 00 00 79 ...............y 0090: 00 11 14 0a 11 82 0c 00 01 04 01 00 10 10 00 00 ................ 00a0: 00 00 00 00 79 00 08 54 53 53 49 12 41 07 08 12 ....y..TSSI.A... 00b0: 0d 05 0a 64 0b e8 03 0a 00 0a 00 0a 00 12 0d 05 ...d............ 00c0: 0a 58 0b 6b 03 0a 00 0a 0f 0a 00 12 0d 05 0a 4b .X.k...........K 00d0: 0b ee 02 0a 00 0a 0e 0a 00 12 0d 05 0a 3f 0b 71 .............?.q 00e0: 02 0a 00 0a 0d 0a 00 12 0d 05 0a 32 0b f4 01 0a ...........2.... 00f0: 00 0a 0c 0a 00 12 0d 05 0a 26 0b 77 01 0a 00 0a .........&.w.... 0100: 0b 0a 00 12 0c 05 0a 19 0a fa 0a 00 0a 0a 0a 00 ................ 0110: 12 0c 05 0a 0d 0a 7d 0a 00 0a 09 0a 00 08 54 53 ......}.......TS 0120: 53 4d 12 41 07 08 12 0d 05 0a 64 0b e8 03 0a 00 SM.A......d..... 0130: 0a 00 0a 00 12 0d 05 0a 58 0b 6b 03 0a 00 0a 1e ........X.k..... 0140: 0a 00 12 0d 05 0a 4b 0b ee 02 0a 00 0a 1c 0a 00 ......K......... 0150: 12 0d 05 0a 3f 0b 71 02 0a 00 0a 1a 0a 00 12 0d ....?.q......... 0160: 05 0a 32 0b f4 01 0a 00 0a 18 0a 00 12 0d 05 0a ..2............. 0170: 26 0b 77 01 0a 00 0a 16 0a 00 12 0c 05 0a 19 0a &.w............. 0180: fa 0a 00 0a 14 0a 00 12 0c 05 0a 0d 0a 7d 0a 00 .............}.. 0190: 0a 12 0a 00 08 54 53 53 46 0a 00 14 43 08 5f 54 .....TSSF...C._T 01a0: 53 53 00 a0 47 06 90 92 54 53 53 46 5b 12 5f 50 SS..G...TSSF[._P 01b0: 53 53 00 70 5f 50 53 53 60 70 87 60 61 76 61 70 SS.p_PSS`p.`avap 01c0: 83 88 83 88 60 61 00 0a 01 00 62 70 0a 00 63 a2 ....`a....bp..c. 01d0: 35 95 63 87 54 53 53 49 70 78 77 62 74 0a 08 63 5.c.TSSIpxwbt..c 01e0: 00 00 0a 08 00 00 64 70 64 88 83 88 54 53 53 49 ......dpd...TSSI 01f0: 63 00 0a 01 00 70 64 88 83 88 54 53 53 4d 63 00 c....pd...TSSMc. 0200: 0a 01 00 75 63 70 ff 54 53 53 46 a0 0e 7b 50 44 ...ucp.TSSF..{PD 0210: 43 30 0a 04 00 a4 54 53 53 4d a4 54 53 53 49 14 C0....TSSM.TSSI. 0220: 3f 5f 54 53 44 00 a0 27 90 7b 43 46 47 44 0c 00 ?_TSD..'.{CFGD.. 0230: 00 00 01 00 92 7b 50 44 43 30 0a 04 00 a4 12 0f .....{PDC0...... 0240: 01 12 0c 05 0a 05 0a 00 0a 00 0a fd 0a 02 a4 12 ................ 0250: 0f 01 12 0c 05 0a 05 0a 00 0a 00 0a fc 0a 01 ............... SSDT @ 0xbf6d8d6a 0000: 53 53 44 54 a6 00 00 00 01 6d 50 6d 52 65 66 00 SSDT.....mPmRef. 0010: 43 70 75 31 54 73 74 00 00 30 00 00 49 4e 54 4c Cpu1Tst..0..INTL 0020: 24 06 05 20 10 41 08 5c 2e 5f 50 52 5f 43 50 55 $.. .A.\._PR_CPU 0030: 31 08 5f 54 50 43 0a 00 14 16 5f 50 54 43 00 a4 1._TPC...._PTC.. 0040: 5c 2f 03 5f 50 52 5f 43 50 55 30 5f 50 54 43 14 \/._PR_CPU0_PTC. 0050: 16 5f 54 53 53 00 a4 5c 2f 03 5f 50 52 5f 43 50 ._TSS..\/._PR_CP 0060: 55 30 5f 54 53 53 14 3f 5f 54 53 44 00 a0 27 90 U0_TSS.?_TSD..'. 0070: 7b 43 46 47 44 0c 00 00 00 01 00 92 7b 50 44 43 {CFGD.......{PDC 0080: 31 0a 04 00 a4 12 0f 01 12 0c 05 0a 05 0a 00 0a 1............... 0090: 00 0a fd 0a 02 a4 12 0f 01 12 0c 05 0a 05 0a 00 ................ 00a0: 0a 01 0a fc 0a 01 ...... SSDT @ 0xbf6d8884 0000: 53 53 44 54 e6 04 00 00 01 df 50 6d 52 65 66 00 SSDT......PmRef. 0010: 43 70 75 50 6d 00 00 00 00 30 00 00 49 4e 54 4c CpuPm....0..INTL 0020: 24 06 05 20 10 45 08 5c 00 08 53 53 44 54 12 43 $.. .E.\..SSDT.C 0030: 05 0c 0d 43 50 55 30 49 53 54 20 00 0c 9e 95 6d ...CPU0IST ....m 0040: bf 0c b4 01 00 00 0d 43 50 55 31 49 53 54 20 00 .......CPU1IST . 0050: 0c 52 97 6d bf 0c c8 00 00 00 0d 43 50 55 30 43 .R.m.......CPU0C 0060: 53 54 20 00 0c 6f 90 6d bf 0c aa 04 00 00 0d 43 ST ..o.m.......C 0070: 50 55 31 43 53 54 20 00 0c 19 95 6d bf 0c 85 00 PU1CST ....m.... 0080: 00 00 08 43 46 47 44 0c f1 69 3f 11 08 5c 50 44 ...CFGD..i?..\PD 0090: 43 30 0c 00 00 00 80 08 5c 50 44 43 31 0c 00 00 C0......\PDC1... 00a0: 00 80 08 5c 53 44 54 4c 0a 00 10 4d 21 5c 2e 5f ...\SDTL...M!\._ 00b0: 50 52 5f 43 50 55 30 08 48 49 30 5f 0a 00 08 48 PR_CPU0.HI0_...H 00c0: 43 30 5f 0a 00 14 48 06 5f 50 44 43 01 8a 68 0a C0_...H._PDC..h. 00d0: 00 52 45 56 53 8a 68 0a 04 53 49 5a 45 70 87 68 .REVS.h..SIZEp.h 00e0: 60 70 74 60 0a 08 00 61 5b 13 68 0a 40 77 61 0a `pt`...a[.h.@wa. 00f0: 08 00 54 45 4d 50 08 53 54 53 30 11 07 0a 04 00 ..TEMP.STS0..... 0100: 00 00 00 73 53 54 53 30 54 45 4d 50 62 5f 4f 53 ...sSTS0TEMPb_OS 0110: 43 11 13 0a 10 16 a6 77 40 0c 29 be 47 9e bd d8 C......w@.).G... 0120: 70 58 71 39 53 52 45 56 53 53 49 5a 45 62 14 49 pXq9SREVSSIZEb.I 0130: 19 5f 4f 53 43 04 8a 6b 0a 00 53 54 53 30 8a 6b ._OSC..k..STS0.k 0140: 0a 04 43 41 50 30 8a 68 0a 00 49 49 44 30 8a 68 ..CAP0.h..IID0.h 0150: 0a 04 49 49 44 31 8a 68 0a 08 49 49 44 32 8a 68 ..IID1.h..IID2.h 0160: 0a 0c 49 49 44 33 08 55 49 44 30 11 13 0a 10 16 ..IID3.UID0..... 0170: a6 77 40 0c 29 be 47 9e bd d8 70 58 71 39 53 8a .w@.).G...pXq9S. 0180: 55 49 44 30 0a 00 45 49 44 30 8a 55 49 44 30 0a UID0..EID0.UID0. 0190: 04 45 49 44 31 8a 55 49 44 30 0a 08 45 49 44 32 .EID1.UID0..EID2 01a0: 8a 55 49 44 30 0a 0c 45 49 44 33 a0 32 92 90 90 .UID0..EID3.2... 01b0: 93 49 49 44 30 45 49 44 30 93 49 49 44 31 45 49 .IID0EID0.IID1EI 01c0: 44 31 90 93 49 49 44 32 45 49 44 32 93 49 49 44 D1..IID2EID2.IID 01d0: 33 45 49 44 33 70 0a 06 53 54 53 30 a4 6b a0 0f 3EID3p..STS0.k.. 01e0: 92 93 69 0a 01 70 0a 0a 53 54 53 30 a4 6b 7d 7b ..i..p..STS0.k}{ 01f0: 50 44 43 30 0c ff ff ff 7f 00 43 41 50 30 50 44 PDC0......CAP0PD 0200: 43 30 70 7b 50 44 43 30 0a ff 00 50 43 50 30 a0 C0p{PDC0...PCP0. 0210: 4c 05 7b 43 46 47 44 0a 01 00 a0 41 05 90 90 7b L.{CFGD....A...{ 0220: 43 46 47 44 0c 00 00 00 01 00 93 7b 50 44 43 30 CFGD.......{PDC0 0230: 0a 09 00 0a 09 92 7b 53 44 54 4c 0a 01 00 7d 53 ......{SDTL...}S 0240: 44 54 4c 0a 01 53 44 54 4c 5b 80 49 53 54 30 00 DTL..SDTL[.IST0. 0250: 83 88 53 53 44 54 0a 01 00 83 88 53 53 44 54 0a ..SSDT.....SSDT. 0260: 02 00 5b 20 49 53 54 30 48 49 30 5f a0 49 05 7b ..[ IST0HI0_.I.{ 0270: 43 46 47 44 0a f0 00 a0 4e 04 90 90 7b 43 46 47 CFGD....N...{CFG 0280: 44 0c 00 00 00 01 00 7b 50 44 43 30 0a 18 00 92 D......{PDC0.... 0290: 7b 53 44 54 4c 0a 02 00 7d 53 44 54 4c 0a 02 53 {SDTL...}SDTL..S 02a0: 44 54 4c 5b 80 43 53 54 30 00 83 88 53 53 44 54 DTL[.CST0...SSDT 02b0: 0a 07 00 83 88 53 53 44 54 0a 08 00 5b 20 43 53 .....SSDT...[ CS 02c0: 54 30 48 43 30 5f a4 6b 10 4d 21 5c 2e 5f 50 52 T0HC0_.k.M!\._PR 02d0: 5f 43 50 55 31 08 48 49 31 5f 0a 00 08 48 43 31 _CPU1.HI1_...HC1 02e0: 5f 0a 00 14 48 06 5f 50 44 43 01 8a 68 0a 00 52 _...H._PDC..h..R 02f0: 45 56 53 8a 68 0a 04 53 49 5a 45 70 87 68 60 70 EVS.h..SIZEp.h`p 0300: 74 60 0a 08 00 61 5b 13 68 0a 40 77 61 0a 08 00 t`...a[.h.@wa... 0310: 54 45 4d 50 08 53 54 53 31 11 07 0a 04 00 00 00 TEMP.STS1....... 0320: 00 73 53 54 53 31 54 45 4d 50 62 5f 4f 53 43 11 .sSTS1TEMPb_OSC. 0330: 13 0a 10 16 a6 77 40 0c 29 be 47 9e bd d8 70 58 .....w@.).G...pX 0340: 71 39 53 52 45 56 53 53 49 5a 45 62 14 49 19 5f q9SREVSSIZEb.I._ 0350: 4f 53 43 04 8a 6b 0a 00 53 54 53 31 8a 6b 0a 04 OSC..k..STS1.k.. 0360: 43 41 50 31 8a 68 0a 00 49 49 44 30 8a 68 0a 04 CAP1.h..IID0.h.. 0370: 49 49 44 31 8a 68 0a 08 49 49 44 32 8a 68 0a 0c IID1.h..IID2.h.. 0380: 49 49 44 33 08 55 49 44 31 11 13 0a 10 16 a6 77 IID3.UID1......w 0390: 40 0c 29 be 47 9e bd d8 70 58 71 39 53 8a 55 49 @.).G...pXq9S.UI 03a0: 44 31 0a 00 45 49 44 30 8a 55 49 44 31 0a 04 45 D1..EID0.UID1..E 03b0: 49 44 31 8a 55 49 44 31 0a 08 45 49 44 32 8a 55 ID1.UID1..EID2.U 03c0: 49 44 31 0a 0c 45 49 44 33 a0 32 92 90 90 93 49 ID1..EID3.2....I 03d0: 49 44 30 45 49 44 30 93 49 49 44 31 45 49 44 31 ID0EID0.IID1EID1 03e0: 90 93 49 49 44 32 45 49 44 32 93 49 49 44 33 45 ..IID2EID2.IID3E 03f0: 49 44 33 70 0a 06 53 54 53 31 a4 6b a0 0f 92 93 ID3p..STS1.k.... 0400: 69 0a 01 70 0a 0a 53 54 53 31 a4 6b 7d 7b 50 44 i..p..STS1.k}{PD 0410: 43 31 0c ff ff ff 7f 00 43 41 50 31 50 44 43 31 C1......CAP1PDC1 0420: 70 7b 50 44 43 31 0a ff 00 50 43 50 31 a0 4c 05 p{PDC1...PCP1.L. 0430: 7b 43 46 47 44 0a 01 00 a0 41 05 90 90 7b 43 46 {CFGD....A...{CF 0440: 47 44 0c 00 00 00 01 00 93 7b 50 44 43 31 0a 09 GD.......{PDC1.. 0450: 00 0a 09 92 7b 53 44 54 4c 0a 10 00 7d 53 44 54 ....{SDTL...}SDT 0460: 4c 0a 10 53 44 54 4c 5b 80 49 53 54 31 00 83 88 L..SDTL[.IST1... 0470: 53 53 44 54 0a 04 00 83 88 53 53 44 54 0a 05 00 SSDT.....SSDT... 0480: 5b 20 49 53 54 31 48 49 31 5f a0 49 05 7b 43 46 [ IST1HI1_.I.{CF 0490: 47 44 0a f0 00 a0 4e 04 90 90 7b 43 46 47 44 0c GD....N...{CFGD. 04a0: 00 00 00 01 00 7b 50 44 43 31 0a 18 00 92 7b 53 .....{PDC1....{S 04b0: 44 54 4c 0a 20 00 7d 53 44 54 4c 0a 20 53 44 54 DTL. .}SDTL. SDT 04c0: 4c 5b 80 43 53 54 31 00 83 88 53 53 44 54 0a 0a L[.CST1...SSDT.. 04d0: 00 83 88 53 53 44 54 0a 0b 00 5b 20 43 53 54 31 ...SSDT...[ CST1 04e0: 48 43 31 5f a4 6b HC1_.k XSDT @ 0xbf6d87f0 0000: 58 53 44 54 94 00 00 00 01 c2 4c 45 4e 4f 56 4f XSDT......LENOVO 0010: 54 50 2d 36 38 20 20 20 00 00 04 06 20 4c 54 50 TP-68 .... LTP 0020: 00 00 00 00 d2 fb 6d bf 00 00 00 00 c6 fc 6d bf ......m.......m. 0030: 00 00 00 00 2e fd 6d bf 00 00 00 00 66 fd 6d bf ......m.....f.m. 0040: 00 00 00 00 a2 fd 6d bf 00 00 00 00 d4 fd 6d bf ......m.......m. 0050: 00 00 00 00 fa fd 6d bf 00 00 00 00 70 ff 6d bf ......m.....p.m. 0060: 00 00 00 00 d8 ff 6d bf 00 00 00 00 bd 98 6d bf ......m.......m. 0070: 00 00 00 00 1a 98 6d bf 00 00 00 00 10 8e 6d bf ......m.......m. 0080: 00 00 00 00 6a 8d 6d bf 00 00 00 00 84 88 6d bf ....j.m.......m. 0090: 00 00 00 00 .... RSD PTR @ 0xf7240 0000: 52 53 44 20 50 54 52 20 c5 4c 45 4e 4f 56 4f 02 RSD PTR .LENOVO. 0010: 94 87 6d bf 24 00 00 00 f0 87 6d bf 00 00 00 00 ..m.$.....m..... 0020: 39 00 00 00 9... fwts-test/acpitables-0001/acpitables-0001.log000066400000000000000000000016101231470457100206750ustar00rootroot00000000000000acpitables acpitables: ACPI table settings sanity tests. acpitables ---------------------------------------------------------- acpitables Test 1 of 1: Test ACPI tables. acpitables PASSED: Test 1, Table APIC passed. acpitables Table ECDT not present to check. acpitables PASSED: Test 1, Table FACP passed. acpitables PASSED: Test 1, Table HPET passed. acpitables PASSED: Test 1, Table MCFG passed. acpitables PASSED: Test 1, Table RSDT passed. acpitables PASSED: Test 1, Table RSDP passed. acpitables Table SBST not present to check. acpitables PASSED: Test 1, Table XSDT passed. acpitables acpitables ========================================================== acpitables 7 passed, 0 failed, 0 warning, 0 aborted, 0 skipped, 0 acpitables info only. acpitables ========================================================== fwts-test/acpitables-0001/results.log000066400000000000000000000000001231470457100177010ustar00rootroot00000000000000fwts-test/acpitables-0001/test-0001.sh000077500000000000000000000007361231470457100174110ustar00rootroot00000000000000#!/bin/bash # TEST="Test apcitables against known correct ACPI tables" NAME=test-0001.sh TMPLOG=$TMP/acpitables.log.$$ $FWTS --log-format="%line %owner " -w 80 --dumpfile=$FWTSTESTDIR/acpitables-0001/acpidump-0001.log acpitables - | grep "^[0-9]*[ ]*acpitables" | cut -c7- > $TMPLOG diff $TMPLOG $FWTSTESTDIR/acpitables-0001/acpitables-0001.log >> $FAILURE_LOG ret=$? if [ $ret -eq 0 ]; then echo PASSED: $TEST, $NAME else echo FAILED: $TEST, $NAME fi rm $TMPLOG exit $ret fwts-test/acpitables-0002/000077500000000000000000000000001231470457100155105ustar00rootroot00000000000000fwts-test/acpitables-0002/acpidump-0001.log000066400000000000000000000024061231470457100203750ustar00rootroot00000000000000APIC @ 0xbf6dfcc6 0000: 41 50 49 43 68 00 00 00 01 cc 49 4e 54 45 4c 20 APICh.....INTEL 0010: 43 52 45 53 54 4c 4e 45 00 00 04 06 4c 4f 48 52 CRESTLNE....LOHR 0020: 5a 00 00 00 00 00 e0 fe 01 00 00 00 00 08 00 00 Z............... 0030: 01 00 00 00 00 08 01 01 01 00 00 00 01 0c 01 00 ................ 0040: 00 00 c0 fe 00 00 00 00 02 0a 00 00 02 00 00 00 ................ 0050: 00 00 02 0a 00 09 09 00 00 00 0d 00 04 06 00 05 ................ 0060: 00 01 04 06 01 05 00 01 ........ APIC @ 0xbf6dff70 0000: 41 50 49 43 68 00 00 00 01 13 50 54 4c 54 44 20 APICh.....PTLTD 0010: 09 20 41 50 49 43 20 20 00 00 04 06 20 4c 54 50 . APIC .... LTP 0020: 00 00 00 00 00 00 e0 fe 01 00 00 00 00 08 00 00 ................ 0030: 01 00 00 00 00 08 01 01 01 00 00 00 01 0c 02 00 ................ 0040: 00 00 c0 fe 00 00 00 00 04 06 00 05 00 01 04 06 ................ 0050: 01 05 00 01 02 0a 00 00 02 00 00 00 05 00 02 0a ................ 0060: 00 09 09 00 00 00 0d 00 ........ RSD PTR @ 0xf7240 0000: 52 53 44 20 50 54 52 20 c5 4c 45 4e 4f 56 4f 02 RSD PTR .LENOVO. 0010: 94 87 6d bf 24 00 00 00 f0 87 6d bf 00 00 00 00 ..m.$.....m..... 0020: 39 00 00 00 9... fwts-test/acpitables-0002/acpidump-0002.log000066400000000000000000000013651231470457100204010ustar00rootroot00000000000000APIC @ 0xbf6dfcc6 0000: 41 50 49 43 68 00 00 00 01 cc 49 4e 54 45 4c 20 APICh.....INTEL 0010: 43 52 45 53 54 4c 4e 45 00 00 04 06 4c 4f 48 52 CRESTLNE....LOHR 0020: 5a 00 00 00 00 00 e0 fe 01 00 00 00 00 08 00 00 Z............... 0030: 0f 00 00 00 00 08 01 01 0d 00 00 00 01 0c 03 00 ................ 0040: 00 00 00 00 00 00 00 00 02 0a 0f 02 02 00 00 00 ................ 0050: ee 00 02 0a 0e 09 09 00 00 00 fd 00 04 06 00 ff ................ 0060: 00 01 04 06 01 10 00 01 ........ RSD PTR @ 0xf7240 0000: 52 53 44 20 50 54 52 20 c5 4c 45 4e 4f 56 4f 02 RSD PTR .LENOVO. 0010: 94 87 6d bf 24 00 00 00 f0 87 6d bf 00 00 00 00 ..m.$.....m..... 0020: 39 00 00 00 9... fwts-test/acpitables-0002/acpitables-0001.log000066400000000000000000000016361231470457100207060ustar00rootroot00000000000000acpitables acpitables: ACPI table settings sanity tests. acpitables ---------------------------------------------------------- acpitables Test 1 of 1: Test ACPI tables. acpitables Cannot find FACP. acpitables PASSED: Test 1, Table APIC passed. acpitables Table ECDT not present to check. acpitables Table FACP not present to check. acpitables Table HPET not present to check. acpitables Table MCFG not present to check. acpitables Table RSDT not present to check. acpitables Table RSDP not present to check. acpitables Table SBST not present to check. acpitables Table XSDT not present to check. acpitables acpitables ========================================================== acpitables 1 passed, 0 failed, 0 warning, 0 aborted, 0 skipped, 0 acpitables info only. acpitables ========================================================== fwts-test/acpitables-0002/acpitables-0002.log000066400000000000000000000044701231470457100207060ustar00rootroot00000000000000acpitables acpitables: ACPI table settings sanity tests. acpitables ---------------------------------------------------------- acpitables Test 1 of 1: Test ACPI tables. acpitables FAILED [MEDIUM] MADTAPICFlagsNonZero: Test 1, MADT Local acpitables APIC flags field, bits 1..31 are reserved and should be acpitables zero, but are set as: f. acpitables FAILED [MEDIUM] MADTAPICFlagsNonZero: Test 1, MADT Local acpitables APIC flags field, bits 1..31 are reserved and should be acpitables zero, but are set as: d. acpitables FAILED [MEDIUM] MADTIOAPICAddrZero: Test 1, MADT IO APIC acpitables address is zero, appears not to be defined. acpitables FAILED [MEDIUM] MADTIRQSrcISA: Test 1, MADT Interrupt acpitables Source Override Bus should be 0 for ISA bus. acpitables FAILED [MEDIUM] MADTIRQSrcFlags: Test 1, MADT Interrupt acpitables Source Override flags, bits 4..31 are reserved and should acpitables be zero, but are set as: ee. acpitables FAILED [MEDIUM] MADTIRQSrcISA: Test 1, MADT Interrupt acpitables Source Override Bus should be 0 for ISA bus. acpitables FAILED [MEDIUM] MADTIRQSrcFlags: Test 1, MADT Interrupt acpitables Source Override flags, bits 4..31 are reserved and should acpitables be zero, but are set as: fd. acpitables FAILED [MEDIUM] MADTLAPICNMIFlags: Test 1, MADT Local APIC acpitables NMI flags, bits 4..31 are reserved and should be zero, but acpitables are set as: ff. acpitables FAILED [MEDIUM] MADTLAPICNMIFlags: Test 1, MADT Local APIC acpitables NMI flags, bits 4..31 are reserved and should be zero, but acpitables are set as: 10. acpitables Table ECDT not present to check. acpitables Table FACP not present to check. acpitables Table HPET not present to check. acpitables Table MCFG not present to check. acpitables PASSED: Test 1, Table RSDT passed. acpitables PASSED: Test 1, Table RSDP passed. acpitables Table SBST not present to check. acpitables PASSED: Test 1, Table XSDT passed. acpitables acpitables ========================================================== acpitables 3 passed, 9 failed, 0 warning, 0 aborted, 0 skipped, 0 acpitables info only. acpitables ========================================================== fwts-test/acpitables-0002/test-0001.sh000077500000000000000000000007431231470457100174100ustar00rootroot00000000000000#!/bin/bash # TEST="Test apcitables against known correct ACPI APIC tables" NAME=test-0001.sh TMPLOG=$TMP/acpitables.log.$$ $FWTS --log-format="%line %owner " -w 80 --dumpfile=$FWTSTESTDIR/acpitables-0002/acpidump-0001.log acpitables - | grep "^[0-9]*[ ]*acpitables" | cut -c7- > $TMPLOG diff $TMPLOG $FWTSTESTDIR/acpitables-0002/acpitables-0001.log >> $FAILURE_LOG ret=$? if [ $ret -eq 0 ]; then echo PASSED: $TEST, $NAME else echo FAILED: $TEST, $NAME fi rm $TMPLOG exit $ret fwts-test/acpitables-0002/test-0002.sh000077500000000000000000000007361231470457100174130ustar00rootroot00000000000000#!/bin/bash # TEST="Test apcitables against incorrect ACPI APIC tables" NAME=test-0002.sh TMPLOG=$TMP/acpitables.log.$$ $FWTS --log-format="%line %owner " -w 80 --dumpfile=$FWTSTESTDIR/acpitables-0002/acpidump-0001.log acpitables - | grep "^[0-9]*[ ]*acpitables"| cut -c7- > $TMPLOG diff $TMPLOG $FWTSTESTDIR/acpitables-0002/acpitables-0001.log >> $FAILURE_LOG ret=$? if [ $ret -eq 0 ]; then echo PASSED: $TEST, $NAME else echo FAILED: $TEST, $NAME fi rm $TMPLOG exit $ret fwts-test/acpitables-0003/000077500000000000000000000000001231470457100155115ustar00rootroot00000000000000fwts-test/acpitables-0003/acpidump-0001.log000066400000000000000000000026141231470457100203770ustar00rootroot00000000000000FACP @ 0xbf6dfbd2 0000: 46 41 43 50 f4 00 00 00 03 52 54 4f 53 43 50 4c FACP.....RTOSCPL 0010: 43 52 45 53 54 4c 4e 45 00 00 04 06 41 4c 41 4e CRESTLNE....ALAN 0020: 01 00 00 00 00 00 00 00 00 00 00 00 00 02 00 00 ...../n.j.m..... 0030: 00 00 00 00 f0 f1 00 80 00 10 00 00 00 00 00 00 ................ 0040: 04 10 00 00 00 00 00 00 20 10 00 00 08 10 00 00 ........ ....... 0050: 28 10 00 00 00 00 00 00 04 02 01 03 09 0f 00 85 (............... 0060: 01 00 23 00 00 00 00 00 01 03 0d 00 32 00 00 00 ..#.........2... 0070: a5 00 00 00 03 00 00 00 00 00 00 00 00 00 00 00 ................ 0080: 00 00 00 00 00 00 00 00 00 00 00 00 6a 9b 6d bf ...../n.....j.m. 0090: 00 00 00 00 01 20 00 00 00 10 00 00 00 00 00 00 ..... .......... 00a0: 00 00 00 00 00 00 00 00 00 00 00 00 01 10 00 00 ................ 00b0: 04 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00c0: 00 00 00 00 01 08 00 00 20 10 00 00 00 00 00 00 ........ ....... 00d0: 01 20 00 00 08 10 00 00 00 00 00 00 01 40 00 00 . ...........@.. 00e0: 28 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 (............... 00f0: 00 00 00 00 .... RSD PTR @ 0xf7240 0000: 52 53 44 20 50 54 52 20 c5 4c 45 4e 4f 56 4f 02 RSD PTR .LENOVO. 0010: 94 87 6d bf 24 00 00 00 f0 87 6d bf 00 00 00 00 ..m.$.....m..... 0020: 39 00 00 00 9... fwts-test/acpitables-0003/acpitables-0001.log000066400000000000000000000103241231470457100207010ustar00rootroot00000000000000acpitables acpitables: ACPI table settings sanity tests. acpitables ---------------------------------------------------------- acpitables Test 1 of 1: Test ACPI tables. acpitables No FACS found, fwts has faked one instead. acpitables Table APIC not present to check. acpitables Table ECDT not present to check. acpitables FAILED [MEDIUM] FADTDSTNull: Test 1, FADT DSDT address is acpitables null. acpitables FAILED [MEDIUM] FADT32And64Mismatch: Test 1, FADT 32 bit acpitables DSDT (0x0) does not point to same physical address as 64 acpitables bit X_DSDT (0xbf6d9b6a). acpitables acpitables ADVICE: One would expect the 32 bit DSDT and 64 bit X_DSDT acpitables pointers to point to the same DSDT, however they don't acpitables which is clearly ambiguous and wrong. The kernel works acpitables around this by using the 64 bit X_DSDT pointer to the acpitables DSDT. acpitables acpitables FAILED [MEDIUM] FADTSCIIRQZero: Test 1, FADT SCI Interrupt acpitables is 0x00, should be defined. acpitables FAILED [MEDIUM] FADTSMICMDZero: Test 1, FADT SMI_CMD is acpitables 0x00, however, one or more of ACPI_ENABLE, ACPI_DISABLE, acpitables S4BIOS_REQ, PSTATE_CNT and CST_CNT are defined which means acpitables SMI_CMD should be defined otherwise SMI commands cannot be acpitables sent. acpitables acpitables ADVICE: The configuration seems to suggest that SMI acpitables command should be defined to allow the kernel to trigger acpitables system management interrupts via the SMD_CMD port. The acpitables fact that SMD_CMD is zero which is invalid means that SMIs acpitables are not possible through the normal ACPI mechanisms. This acpitables means some firmware based machine specific functions will acpitables not work. acpitables acpitables FAILED [MEDIUM] FADTBadPMTMRLEN: Test 1, FADT PM_TMR_LEN acpitables is 3, should be 4. acpitables acpitables ADVICE: FADT field PM_TMR_LEN defines the number of bytes acpitables decoded by PM_TMR_BLK. This fields value must be 4. If it acpitables is not the correct size then the kernel will not request a acpitables region for the pm timer block. acpitables acpitables FAILED [MEDIUM] FADTBadGPEBLKLEN: Test 1, FADT acpitables GPE0_BLK_LEN is 9, should a multiple of 2. acpitables acpitables ADVICE: The FADT GPE_BLK_LEN should be a multiple of 2. acpitables Because it isn't, the ACPI driver will not map in the GPE0 acpitables region. This could mean that General Purpose Events will acpitables not function correctly (for example lid or ac-power acpitables events). acpitables acpitables FAILED [MEDIUM] FADTBadGPE1BLKLEN: Test 1, FADT acpitables GPE1_BLK_LEN is 15, should a multiple of 2. acpitables acpitables ADVICE: The FADT GPE_BLK_LEN should be a multiple of 2. acpitables Because it isn't, the ACPI driver will not map in the GPE1 acpitables region. This could mean that General Purpose Events will acpitables not function correctly (for example lid or ac-power acpitables events). acpitables acpitables FAILED [MEDIUM] FADTBadRESETREG: Test 1, FADT RESET_REG acpitables address space ID was 3, must be System Memory space (0), acpitables System I/O space (1), or PCI configuration space (2). acpitables acpitables ADVICE: If the FADT RESET_REG address space ID is not set acpitables correctly then ACPI writes to this register *may* nor work acpitables correctly, meaning a reboot via this mechanism may not acpitables work. acpitables acpitables Table HPET not present to check. acpitables Table MCFG not present to check. acpitables PASSED: Test 1, Table RSDT passed. acpitables PASSED: Test 1, Table RSDP passed. acpitables Table SBST not present to check. acpitables PASSED: Test 1, Table XSDT passed. acpitables acpitables ========================================================== acpitables 3 passed, 8 failed, 0 warning, 0 aborted, 0 skipped, 0 acpitables info only. acpitables ========================================================== fwts-test/acpitables-0003/test-0001.sh000077500000000000000000000007251231470457100174110ustar00rootroot00000000000000#!/bin/bash # TEST="Test apcitables against broken ACPI FADT" NAME=test-0001.sh TMPLOG=$TMP/acpitables.log.$$ $FWTS --log-format="%line %owner " -w 80 --dumpfile=$FWTSTESTDIR/acpitables-0003/acpidump-0001.log acpitables - | grep "^[0-9]*[ ]*acpitables" | cut -c7- > $TMPLOG diff $TMPLOG $FWTSTESTDIR/acpitables-0003/acpitables-0001.log >> $FAILURE_LOG ret=$? if [ $ret -eq 0 ]; then echo PASSED: $TEST, $NAME else echo FAILED: $TEST, $NAME fi rm $TMPLOG exit $ret fwts-test/acpitables-0004/000077500000000000000000000000001231470457100155125ustar00rootroot00000000000000fwts-test/acpitables-0004/acpidump-0001.log000066400000000000000000000010301231470457100203670ustar00rootroot00000000000000HPET @ 0xbf6dfd2e 0000: 48 50 45 54 38 00 00 00 01 0a 49 4e 54 45 4c 20 HPET8.....INTEL 0010: 43 52 45 53 54 4c 4e 45 00 00 04 06 4c 4f 48 52 CRESTLNE....LOHR 0020: 5a 00 00 00 01 a2 00 00 00 00 00 00 00 00 00 00 Z............... 0030: 00 00 00 00 00 80 00 00 ........ RSD PTR @ 0xf7240 0000: 52 53 44 20 50 54 52 20 c5 4c 45 4e 4f 56 4f 02 RSD PTR .LENOVO. 0010: 94 87 6d bf 24 00 00 00 f0 87 6d bf 00 00 00 00 ..m.$.....m..... 0020: 39 00 00 00 9... fwts-test/acpitables-0004/acpitables-0001.log000066400000000000000000000031241231470457100207020ustar00rootroot00000000000000acpitables acpitables: ACPI table settings sanity tests. acpitables ---------------------------------------------------------- acpitables Test 1 of 1: Test ACPI tables. acpitables Cannot find FACP. acpitables Table APIC not present to check. acpitables Table ECDT not present to check. acpitables Table FACP not present to check. acpitables FAILED [MEDIUM] HPETBaseZero: Test 1, HPET base is acpitables 0x000000000000, which is invalid. acpitables FAILED [MEDIUM] HPETVendorIdZero: Test 1, HPET PCI Vendor acpitables ID is 0x0000, which is invalid. acpitables acpitables ADVICE: The HPET specification (http://www.intel.com acpitables /hardwaredesign/hpetspec_1.pdf) describes the HPET table acpitables in section 3.2.4 'The ACPI 2.0 HPET Description Table acpitables (HPET)'. The top 16 bits of the Event Timer Block ID acpitables specify the Vendor ID and this should not be zero. This acpitables won't affect the kernel behaviour, but should be fixed as acpitables it is an undefined ID value. acpitables acpitables Table MCFG not present to check. acpitables Table RSDT not present to check. acpitables Table RSDP not present to check. acpitables Table SBST not present to check. acpitables Table XSDT not present to check. acpitables acpitables ========================================================== acpitables 0 passed, 2 failed, 0 warning, 0 aborted, 0 skipped, 0 acpitables info only. acpitables ========================================================== fwts-test/acpitables-0004/test-0001.sh000077500000000000000000000007331231470457100174110ustar00rootroot00000000000000#!/bin/bash # TEST="Test apcitables against broken ACPI HPET table" NAME=test-0001.sh TMPLOG=$TMP/acpitables.log.$$ $FWTS --log-format="%line %owner " -w 80 --dumpfile=$FWTSTESTDIR/acpitables-0004/acpidump-0001.log acpitables - | grep "^[0-9]*[ ]*acpitables" | cut -c7- > $TMPLOG diff $TMPLOG $FWTSTESTDIR/acpitables-0004/acpitables-0001.log >> $FAILURE_LOG ret=$? if [ $ret -eq 0 ]; then echo PASSED: $TEST, $NAME else echo FAILED: $TEST, $NAME fi rm $TMPLOG exit $ret fwts-test/acpitables-0005/000077500000000000000000000000001231470457100155135ustar00rootroot00000000000000fwts-test/acpitables-0005/acpidump-0001.log000066400000000000000000000010341231470457100203740ustar00rootroot00000000000000MCFG @ 0xbf6dfd66 0000: 4d 43 46 47 3c 00 00 00 01 32 49 4e 54 45 4c 20 MCFG<....2INTEL 0010: 43 52 45 53 54 4c 4e 45 00 00 04 06 4c 4f 48 52 CRESTLNE....LOHR 0020: 5a 00 00 00 00 00 00 00 00 00 00 00 00 00 00 e0 Z............... 0030: 00 00 00 00 00 00 00 ff 00 00 00 00 ............ RSD PTR @ 0xf7240 0000: 52 53 44 20 50 54 52 20 c5 4c 45 4e 4f 56 4f 02 RSD PTR .LENOVO. 0010: 94 87 6d bf 24 00 00 00 f0 87 6d bf 00 00 00 00 ..m.$.....m..... 0020: 39 00 00 00 9... fwts-test/acpitables-0005/acpitables-0001.log000066400000000000000000000016361231470457100207110ustar00rootroot00000000000000acpitables acpitables: ACPI table settings sanity tests. acpitables ---------------------------------------------------------- acpitables Test 1 of 1: Test ACPI tables. acpitables Cannot find FACP. acpitables Table APIC not present to check. acpitables Table ECDT not present to check. acpitables Table FACP not present to check. acpitables Table HPET not present to check. acpitables PASSED: Test 1, Table MCFG passed. acpitables Table RSDT not present to check. acpitables Table RSDP not present to check. acpitables Table SBST not present to check. acpitables Table XSDT not present to check. acpitables acpitables ========================================================== acpitables 1 passed, 0 failed, 0 warning, 0 aborted, 0 skipped, 0 acpitables info only. acpitables ========================================================== fwts-test/acpitables-0005/test-0001.sh000077500000000000000000000007331231470457100174120ustar00rootroot00000000000000#!/bin/bash # TEST="Test apcitables against broken ACPI MCFG table" NAME=test-0001.sh TMPLOG=$TMP/acpitables.log.$$ $FWTS --log-format="%line %owner " -w 80 --dumpfile=$FWTSTESTDIR/acpitables-0005/acpidump-0001.log acpitables - | grep "^[0-9]*[ ]*acpitables" | cut -c7- > $TMPLOG diff $TMPLOG $FWTSTESTDIR/acpitables-0005/acpitables-0001.log >> $FAILURE_LOG ret=$? if [ $ret -eq 0 ]; then echo PASSED: $TEST, $NAME else echo FAILED: $TEST, $NAME fi rm $TMPLOG exit $ret fwts-test/acpitables-0006/000077500000000000000000000000001231470457100155145ustar00rootroot00000000000000fwts-test/acpitables-0006/acpidump-0001.log000066400000000000000000000013761231470457100204060ustar00rootroot00000000000000RSDT @ 0xbf6d87f0 0000: 52 53 44 54 70 00 00 00 01 07 4c 45 4e 4f 56 4f RSDT......LENOVO 0010: 54 50 2d 36 38 20 20 20 00 00 04 06 20 4c 54 50 TP-68 .... LTP 0020: 00 00 00 00 00 00 00 bf 00 00 00 00 00 00 00 00 ................ 0030: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0040: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0050: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0060: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ RSD PTR @ 0xf7240 0000: 52 53 44 20 50 54 52 20 c5 4c 45 4e 4f 56 4f 02 RSD PTR .LENOVO. 0010: 94 87 6d bf 24 00 00 00 f0 87 6d bf 00 00 00 00 ..m.$.....m..... 0020: 39 00 00 00 9... fwts-test/acpitables-0006/acpitables-0001.log000066400000000000000000000212221231470457100207030ustar00rootroot00000000000000acpitables acpitables: ACPI table settings sanity tests. acpitables ---------------------------------------------------------- acpitables Test 1 of 1: Test ACPI tables. acpitables Cannot find FACP. acpitables Table APIC not present to check. acpitables Table ECDT not present to check. acpitables Table FACP not present to check. acpitables Table HPET not present to check. acpitables Table MCFG not present to check. acpitables FAILED [HIGH] RSDTEntryNull: Test 1, RSDT Entry 1 is null, acpitables should not be non-zero. acpitables acpitables ADVICE: A RSDT pointer is null and therefore erroneously acpitables points to an invalid 32 bit ACPI table header. At worse acpitables this will cause the kernel to oops, at best the kernel may acpitables ignore this. However, it should be fixed where possible. acpitables acpitables FAILED [HIGH] RSDTEntryNull: Test 1, RSDT Entry 2 is null, acpitables should not be non-zero. acpitables acpitables ADVICE: A RSDT pointer is null and therefore erroneously acpitables points to an invalid 32 bit ACPI table header. At worse acpitables this will cause the kernel to oops, at best the kernel may acpitables ignore this. However, it should be fixed where possible. acpitables acpitables FAILED [HIGH] RSDTEntryNull: Test 1, RSDT Entry 3 is null, acpitables should not be non-zero. acpitables acpitables ADVICE: A RSDT pointer is null and therefore erroneously acpitables points to an invalid 32 bit ACPI table header. At worse acpitables this will cause the kernel to oops, at best the kernel may acpitables ignore this. However, it should be fixed where possible. acpitables acpitables FAILED [HIGH] RSDTEntryNull: Test 1, RSDT Entry 4 is null, acpitables should not be non-zero. acpitables acpitables ADVICE: A RSDT pointer is null and therefore erroneously acpitables points to an invalid 32 bit ACPI table header. At worse acpitables this will cause the kernel to oops, at best the kernel may acpitables ignore this. However, it should be fixed where possible. acpitables acpitables FAILED [HIGH] RSDTEntryNull: Test 1, RSDT Entry 5 is null, acpitables should not be non-zero. acpitables acpitables ADVICE: A RSDT pointer is null and therefore erroneously acpitables points to an invalid 32 bit ACPI table header. At worse acpitables this will cause the kernel to oops, at best the kernel may acpitables ignore this. However, it should be fixed where possible. acpitables acpitables FAILED [HIGH] RSDTEntryNull: Test 1, RSDT Entry 6 is null, acpitables should not be non-zero. acpitables acpitables ADVICE: A RSDT pointer is null and therefore erroneously acpitables points to an invalid 32 bit ACPI table header. At worse acpitables this will cause the kernel to oops, at best the kernel may acpitables ignore this. However, it should be fixed where possible. acpitables acpitables FAILED [HIGH] RSDTEntryNull: Test 1, RSDT Entry 7 is null, acpitables should not be non-zero. acpitables acpitables ADVICE: A RSDT pointer is null and therefore erroneously acpitables points to an invalid 32 bit ACPI table header. At worse acpitables this will cause the kernel to oops, at best the kernel may acpitables ignore this. However, it should be fixed where possible. acpitables acpitables FAILED [HIGH] RSDTEntryNull: Test 1, RSDT Entry 8 is null, acpitables should not be non-zero. acpitables acpitables ADVICE: A RSDT pointer is null and therefore erroneously acpitables points to an invalid 32 bit ACPI table header. At worse acpitables this will cause the kernel to oops, at best the kernel may acpitables ignore this. However, it should be fixed where possible. acpitables acpitables FAILED [HIGH] RSDTEntryNull: Test 1, RSDT Entry 9 is null, acpitables should not be non-zero. acpitables acpitables ADVICE: A RSDT pointer is null and therefore erroneously acpitables points to an invalid 32 bit ACPI table header. At worse acpitables this will cause the kernel to oops, at best the kernel may acpitables ignore this. However, it should be fixed where possible. acpitables acpitables FAILED [HIGH] RSDTEntryNull: Test 1, RSDT Entry 10 is null acpitables , should not be non-zero. acpitables acpitables ADVICE: A RSDT pointer is null and therefore erroneously acpitables points to an invalid 32 bit ACPI table header. At worse acpitables this will cause the kernel to oops, at best the kernel may acpitables ignore this. However, it should be fixed where possible. acpitables acpitables FAILED [HIGH] RSDTEntryNull: Test 1, RSDT Entry 11 is null acpitables , should not be non-zero. acpitables acpitables ADVICE: A RSDT pointer is null and therefore erroneously acpitables points to an invalid 32 bit ACPI table header. At worse acpitables this will cause the kernel to oops, at best the kernel may acpitables ignore this. However, it should be fixed where possible. acpitables acpitables FAILED [HIGH] RSDTEntryNull: Test 1, RSDT Entry 12 is null acpitables , should not be non-zero. acpitables acpitables ADVICE: A RSDT pointer is null and therefore erroneously acpitables points to an invalid 32 bit ACPI table header. At worse acpitables this will cause the kernel to oops, at best the kernel may acpitables ignore this. However, it should be fixed where possible. acpitables acpitables FAILED [HIGH] RSDTEntryNull: Test 1, RSDT Entry 13 is null acpitables , should not be non-zero. acpitables acpitables ADVICE: A RSDT pointer is null and therefore erroneously acpitables points to an invalid 32 bit ACPI table header. At worse acpitables this will cause the kernel to oops, at best the kernel may acpitables ignore this. However, it should be fixed where possible. acpitables acpitables FAILED [HIGH] RSDTEntryNull: Test 1, RSDT Entry 14 is null acpitables , should not be non-zero. acpitables acpitables ADVICE: A RSDT pointer is null and therefore erroneously acpitables points to an invalid 32 bit ACPI table header. At worse acpitables this will cause the kernel to oops, at best the kernel may acpitables ignore this. However, it should be fixed where possible. acpitables acpitables FAILED [HIGH] RSDTEntryNull: Test 1, RSDT Entry 15 is null acpitables , should not be non-zero. acpitables acpitables ADVICE: A RSDT pointer is null and therefore erroneously acpitables points to an invalid 32 bit ACPI table header. At worse acpitables this will cause the kernel to oops, at best the kernel may acpitables ignore this. However, it should be fixed where possible. acpitables acpitables FAILED [HIGH] RSDTEntryNull: Test 1, RSDT Entry 16 is null acpitables , should not be non-zero. acpitables acpitables ADVICE: A RSDT pointer is null and therefore erroneously acpitables points to an invalid 32 bit ACPI table header. At worse acpitables this will cause the kernel to oops, at best the kernel may acpitables ignore this. However, it should be fixed where possible. acpitables acpitables FAILED [HIGH] RSDTEntryNull: Test 1, RSDT Entry 17 is null acpitables , should not be non-zero. acpitables acpitables ADVICE: A RSDT pointer is null and therefore erroneously acpitables points to an invalid 32 bit ACPI table header. At worse acpitables this will cause the kernel to oops, at best the kernel may acpitables ignore this. However, it should be fixed where possible. acpitables acpitables FAILED [HIGH] RSDTEntryNull: Test 1, RSDT Entry 18 is null acpitables , should not be non-zero. acpitables acpitables ADVICE: A RSDT pointer is null and therefore erroneously acpitables points to an invalid 32 bit ACPI table header. At worse acpitables this will cause the kernel to oops, at best the kernel may acpitables ignore this. However, it should be fixed where possible. acpitables acpitables Table RSDP not present to check. acpitables Table SBST not present to check. acpitables Table XSDT not present to check. acpitables acpitables ========================================================== acpitables 0 passed, 18 failed, 0 warning, 0 aborted, 0 skipped, 0 acpitables info only. acpitables ========================================================== fwts-test/acpitables-0006/test-0001.sh000077500000000000000000000007331231470457100174130ustar00rootroot00000000000000#!/bin/bash # TEST="Test apcitables against broken ACPI RSDT table" NAME=test-0001.sh TMPLOG=$TMP/acpitables.log.$$ $FWTS --log-format="%line %owner " -w 80 --dumpfile=$FWTSTESTDIR/acpitables-0006/acpidump-0001.log acpitables - | grep "^[0-9]*[ ]*acpitables" | cut -c7- > $TMPLOG diff $TMPLOG $FWTSTESTDIR/acpitables-0006/acpitables-0001.log >> $FAILURE_LOG ret=$? if [ $ret -eq 0 ]; then echo PASSED: $TEST, $NAME else echo FAILED: $TEST, $NAME fi rm $TMPLOG exit $ret fwts-test/acpitables-0007/000077500000000000000000000000001231470457100155155ustar00rootroot00000000000000fwts-test/acpitables-0007/acpidump-0001.log000066400000000000000000000017201231470457100204000ustar00rootroot00000000000000XSDT @ 0xbf6d87f0 0000: 58 53 44 54 94 00 00 00 01 9c 4c 45 4e 4f 56 4f XSDT......LENOVO 0010: 54 50 2d 36 38 20 20 20 00 00 04 06 20 4c 54 50 TP-68 .... LTP 0020: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0030: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0040: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0050: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0060: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0070: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0080: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0090: 00 00 00 00 .... RSD PTR @ 0xf7240 0000: 52 53 44 20 50 54 52 20 c5 4c 45 4e 4f 56 4f 02 RSD PTR .LENOVO. 0010: 94 87 6d bf 24 00 00 00 f0 87 6d bf 00 00 00 00 ..m.$.....m..... 0020: 39 00 00 00 9... fwts-test/acpitables-0007/acpitables-0001.log000066400000000000000000000156701231470457100207160ustar00rootroot00000000000000acpitables acpitables: ACPI table settings sanity tests. acpitables ---------------------------------------------------------- acpitables Test 1 of 1: Test ACPI tables. acpitables Cannot find FACP. acpitables Table APIC not present to check. acpitables Table ECDT not present to check. acpitables Table FACP not present to check. acpitables Table HPET not present to check. acpitables Table MCFG not present to check. acpitables Table RSDT not present to check. acpitables Table RSDP not present to check. acpitables Table SBST not present to check. acpitables FAILED [MEDIUM] XSDTEntryNull: Test 1, XSDT Entry 0 is acpitables null, should not be non-zero. acpitables acpitables ADVICE: A XSDT pointer is null and therefore erroneously acpitables points to an invalid 64 bit ACPI table header. At worse acpitables this will cause the kernel to oops, at best the kernel may acpitables ignore this. However, it should be fixed where possible. acpitables acpitables FAILED [MEDIUM] XSDTEntryNull: Test 1, XSDT Entry 1 is acpitables null, should not be non-zero. acpitables acpitables ADVICE: A XSDT pointer is null and therefore erroneously acpitables points to an invalid 64 bit ACPI table header. At worse acpitables this will cause the kernel to oops, at best the kernel may acpitables ignore this. However, it should be fixed where possible. acpitables acpitables FAILED [MEDIUM] XSDTEntryNull: Test 1, XSDT Entry 2 is acpitables null, should not be non-zero. acpitables acpitables ADVICE: A XSDT pointer is null and therefore erroneously acpitables points to an invalid 64 bit ACPI table header. At worse acpitables this will cause the kernel to oops, at best the kernel may acpitables ignore this. However, it should be fixed where possible. acpitables acpitables FAILED [MEDIUM] XSDTEntryNull: Test 1, XSDT Entry 3 is acpitables null, should not be non-zero. acpitables acpitables ADVICE: A XSDT pointer is null and therefore erroneously acpitables points to an invalid 64 bit ACPI table header. At worse acpitables this will cause the kernel to oops, at best the kernel may acpitables ignore this. However, it should be fixed where possible. acpitables acpitables FAILED [MEDIUM] XSDTEntryNull: Test 1, XSDT Entry 4 is acpitables null, should not be non-zero. acpitables acpitables ADVICE: A XSDT pointer is null and therefore erroneously acpitables points to an invalid 64 bit ACPI table header. At worse acpitables this will cause the kernel to oops, at best the kernel may acpitables ignore this. However, it should be fixed where possible. acpitables acpitables FAILED [MEDIUM] XSDTEntryNull: Test 1, XSDT Entry 5 is acpitables null, should not be non-zero. acpitables acpitables ADVICE: A XSDT pointer is null and therefore erroneously acpitables points to an invalid 64 bit ACPI table header. At worse acpitables this will cause the kernel to oops, at best the kernel may acpitables ignore this. However, it should be fixed where possible. acpitables acpitables FAILED [MEDIUM] XSDTEntryNull: Test 1, XSDT Entry 6 is acpitables null, should not be non-zero. acpitables acpitables ADVICE: A XSDT pointer is null and therefore erroneously acpitables points to an invalid 64 bit ACPI table header. At worse acpitables this will cause the kernel to oops, at best the kernel may acpitables ignore this. However, it should be fixed where possible. acpitables acpitables FAILED [MEDIUM] XSDTEntryNull: Test 1, XSDT Entry 7 is acpitables null, should not be non-zero. acpitables acpitables ADVICE: A XSDT pointer is null and therefore erroneously acpitables points to an invalid 64 bit ACPI table header. At worse acpitables this will cause the kernel to oops, at best the kernel may acpitables ignore this. However, it should be fixed where possible. acpitables acpitables FAILED [MEDIUM] XSDTEntryNull: Test 1, XSDT Entry 8 is acpitables null, should not be non-zero. acpitables acpitables ADVICE: A XSDT pointer is null and therefore erroneously acpitables points to an invalid 64 bit ACPI table header. At worse acpitables this will cause the kernel to oops, at best the kernel may acpitables ignore this. However, it should be fixed where possible. acpitables acpitables FAILED [MEDIUM] XSDTEntryNull: Test 1, XSDT Entry 9 is acpitables null, should not be non-zero. acpitables acpitables ADVICE: A XSDT pointer is null and therefore erroneously acpitables points to an invalid 64 bit ACPI table header. At worse acpitables this will cause the kernel to oops, at best the kernel may acpitables ignore this. However, it should be fixed where possible. acpitables acpitables FAILED [MEDIUM] XSDTEntryNull: Test 1, XSDT Entry 10 is acpitables null, should not be non-zero. acpitables acpitables ADVICE: A XSDT pointer is null and therefore erroneously acpitables points to an invalid 64 bit ACPI table header. At worse acpitables this will cause the kernel to oops, at best the kernel may acpitables ignore this. However, it should be fixed where possible. acpitables acpitables FAILED [MEDIUM] XSDTEntryNull: Test 1, XSDT Entry 11 is acpitables null, should not be non-zero. acpitables acpitables ADVICE: A XSDT pointer is null and therefore erroneously acpitables points to an invalid 64 bit ACPI table header. At worse acpitables this will cause the kernel to oops, at best the kernel may acpitables ignore this. However, it should be fixed where possible. acpitables acpitables FAILED [MEDIUM] XSDTEntryNull: Test 1, XSDT Entry 12 is acpitables null, should not be non-zero. acpitables acpitables ADVICE: A XSDT pointer is null and therefore erroneously acpitables points to an invalid 64 bit ACPI table header. At worse acpitables this will cause the kernel to oops, at best the kernel may acpitables ignore this. However, it should be fixed where possible. acpitables acpitables FAILED [MEDIUM] XSDTEntryNull: Test 1, XSDT Entry 13 is acpitables null, should not be non-zero. acpitables acpitables ADVICE: A XSDT pointer is null and therefore erroneously acpitables points to an invalid 64 bit ACPI table header. At worse acpitables this will cause the kernel to oops, at best the kernel may acpitables ignore this. However, it should be fixed where possible. acpitables acpitables acpitables ========================================================== acpitables 0 passed, 14 failed, 0 warning, 0 aborted, 0 skipped, 0 acpitables info only. acpitables ========================================================== fwts-test/acpitables-0007/test-0001.sh000077500000000000000000000007331231470457100174140ustar00rootroot00000000000000#!/bin/bash # TEST="Test apcitables against broken ACPI XSDT table" NAME=test-0001.sh TMPLOG=$TMP/acpitables.log.$$ $FWTS --log-format="%line %owner " -w 80 --dumpfile=$FWTSTESTDIR/acpitables-0007/acpidump-0001.log acpitables - | grep "^[0-9]*[ ]*acpitables" | cut -c7- > $TMPLOG diff $TMPLOG $FWTSTESTDIR/acpitables-0007/acpitables-0001.log >> $FAILURE_LOG ret=$? if [ $ret -eq 0 ]; then echo PASSED: $TEST, $NAME else echo FAILED: $TEST, $NAME fi rm $TMPLOG exit $ret fwts-test/acpitables-0008/000077500000000000000000000000001231470457100155165ustar00rootroot00000000000000fwts-test/acpitables-0008/acpidump-0001.log000066400000000000000000000003451231470457100204030ustar00rootroot00000000000000RSD PTR @ 0xf7240 0000: 52 53 44 20 50 54 52 20 c5 20 20 20 20 20 20 03 RSD PTR . 0010: 94 87 6d bf 24 00 00 00 f0 87 6d bf 00 00 00 00 ..m.$.....m..... 0020: 39 00 00 00 9... fwts-test/acpitables-0008/acpitables-0001.log000066400000000000000000000016341231470457100207120ustar00rootroot00000000000000acpitables acpitables: ACPI table settings sanity tests. acpitables ---------------------------------------------------------- acpitables Test 1 of 1: Test ACPI tables. acpitables Cannot find FACP. acpitables Table APIC not present to check. acpitables Table ECDT not present to check. acpitables Table FACP not present to check. acpitables Table HPET not present to check. acpitables Table MCFG not present to check. acpitables Table RSDT not present to check. acpitables Table RSDP not present to check. acpitables Table SBST not present to check. acpitables Table XSDT not present to check. acpitables acpitables ========================================================== acpitables 0 passed, 0 failed, 0 warning, 0 aborted, 0 skipped, 0 acpitables info only. acpitables ========================================================== fwts-test/acpitables-0008/test-0001.sh000077500000000000000000000007251231470457100174160ustar00rootroot00000000000000#!/bin/bash # TEST="Test apcitables against broken ACPI RSDP" NAME=test-0001.sh TMPLOG=$TMP/acpitables.log.$$ $FWTS --log-format="%line %owner " -w 80 --dumpfile=$FWTSTESTDIR/acpitables-0008/acpidump-0001.log acpitables - | grep "^[0-9]*[ ]*acpitables" | cut -c7- > $TMPLOG diff $TMPLOG $FWTSTESTDIR/acpitables-0008/acpitables-0001.log >> $FAILURE_LOG ret=$? if [ $ret -eq 0 ]; then echo PASSED: $TEST, $NAME else echo FAILED: $TEST, $NAME fi rm $TMPLOG exit $ret fwts-test/apicinstance-0001/000077500000000000000000000000001231470457100160415ustar00rootroot00000000000000fwts-test/apicinstance-0001/acpidump-0001.log000066400000000000000000004054211231470457100207320ustar00rootroot00000000000000DSDT @ 0xbf6d9b6a 0000: 44 53 44 54 f4 5f 00 00 02 11 54 4f 53 43 50 4c DSDT._....TOSCPL 0010: 43 52 45 53 54 4c 4e 45 00 00 04 06 49 4e 54 4c CRESTLNE....INTL 0020: 08 06 06 20 08 5a 30 30 30 01 08 5a 30 30 31 0a ... .Z000..Z001. 0030: 02 08 5a 30 30 32 0a 04 08 5a 30 30 33 0a 08 08 ..Z002...Z003... 0040: 5a 30 30 34 00 08 5a 30 30 35 0a 0f 08 5a 30 30 Z004..Z005...Z00 0050: 36 0a 0d 08 5a 30 30 37 0a 0b 08 5a 30 30 38 0a 6...Z007...Z008. 0060: 09 08 45 43 44 59 0a 07 5b 01 4d 55 54 58 00 5b ..ECDY..[.MUTX.[ 0070: 80 50 52 54 30 01 0a 80 0a 04 5b 81 0b 50 52 54 .PRT0.....[..PRT 0080: 30 13 50 38 30 48 20 14 4e 07 50 38 58 48 0a a0 0.P80H .N.P8XH.. 0090: 17 93 68 00 70 7d 7b 50 38 30 44 0c 00 ff ff ff ..h.p}{P80D..... 00a0: 00 69 00 50 38 30 44 a0 1b 93 68 01 70 7d 7b 50 .i.P80D...h.p}{P 00b0: 38 30 44 0c ff 00 ff ff 00 79 69 0a 08 00 00 50 80D......yi....P 00c0: 38 30 44 a0 1c 93 68 0a 02 70 7d 7b 50 38 30 44 80D...h..p}{P80D 00d0: 0c ff ff 00 ff 00 79 69 0a 10 00 00 50 38 30 44 ......yi....P80D 00e0: a0 1c 93 68 0a 03 70 7d 7b 50 38 30 44 0c ff ff ...h..p}{P80D... 00f0: ff 00 00 79 69 0a 18 00 00 50 38 30 44 70 50 38 ...yi....P80DpP8 0100: 30 44 50 38 30 48 14 0c 5f 50 49 43 01 70 68 47 0DP80H.._PIC.phG 0110: 50 49 43 14 46 06 5f 50 54 53 01 70 00 50 38 30 PIC.F._PTS.p.P80 0120: 44 50 38 58 48 00 68 a0 1e 93 68 0a 03 70 01 5c DP8XH.h...h..p.\ 0130: 2f 05 5f 53 42 5f 50 43 49 30 4c 50 43 42 45 43 /._SB_PCI0LPCBEC 0140: 30 5f 53 33 4c 44 a0 33 93 68 0a 04 70 01 5c 2f 0_S3LD.3.h..p.\/ 0150: 05 5f 53 42 5f 50 43 49 30 4c 50 43 42 45 43 30 ._SB_PCI0LPCBEC0 0160: 5f 53 33 4c 44 5c 2f 04 5f 53 42 5f 50 43 49 30 _S3LD\/._SB_PCI0 0170: 4c 50 43 42 50 48 53 53 0a 0e 14 4c 1c 5f 57 41 LPCBPHSS...L._WA 0180: 4b 01 50 38 58 48 01 0a ab a0 30 91 93 68 0a 03 K.P8XH....0..h.. 0190: 93 68 0a 04 a0 25 7b 43 46 47 44 0c 00 00 00 01 .h...%{CFGD..... 01a0: 00 a0 18 90 7b 43 46 47 44 0a f0 00 93 4f 53 59 ....{CFGD....OSY 01b0: 53 0b d1 07 54 52 41 50 0a 3d a0 18 93 52 50 31 S...TRAP.=...RP1 01c0: 44 00 86 5c 2f 03 5f 53 42 5f 50 43 49 30 52 50 D..\/._SB_PCI0RP 01d0: 30 31 00 a0 18 93 52 50 32 44 00 86 5c 2f 03 5f 01....RP2D..\/._ 01e0: 53 42 5f 50 43 49 30 52 50 30 32 00 a0 18 93 52 SB_PCI0RP02....R 01f0: 50 33 44 00 86 5c 2f 03 5f 53 42 5f 50 43 49 30 P3D..\/._SB_PCI0 0200: 52 50 30 33 00 a0 18 93 52 50 34 44 00 86 5c 2f RP03....RP4D..\/ 0210: 03 5f 53 42 5f 50 43 49 30 52 50 30 34 00 a0 18 ._SB_PCI0RP04... 0220: 93 52 50 35 44 00 86 5c 2f 03 5f 53 42 5f 50 43 .RP5D..\/._SB_PC 0230: 49 30 52 50 30 35 00 a0 18 93 52 50 36 44 00 86 I0RP05....RP6D.. 0240: 5c 2f 03 5f 53 42 5f 50 43 49 30 52 50 30 36 00 \/._SB_PCI0RP06. 0250: a0 12 93 68 0a 03 50 38 58 48 00 0a 30 54 52 41 ...h..P8XH..0TRA 0260: 50 0a 46 a0 43 0d 93 68 0a 04 50 38 58 48 00 0a P.F.C..h..P8XH.. 0270: 40 5c 2f 04 5f 53 42 5f 50 43 49 30 4c 50 43 42 @\/._SB_PCI0LPCB 0280: 50 48 53 53 0a 0f 70 57 41 4b 46 60 70 00 57 41 PHSS..pWAKF`p.WA 0290: 4b 46 7b 60 0a 05 60 a0 18 93 60 01 50 38 58 48 KF{`..`...`.P8XH 02a0: 00 0a 41 86 5c 2e 5f 53 42 5f 50 57 52 42 0a 02 ..A.\._SB_PWRB.. 02b0: a0 46 08 44 54 53 45 54 52 41 50 0a 47 a0 42 06 .F.DTSETRAP.G.B. 02c0: 90 5c 2f 04 5f 53 42 5f 50 43 49 30 4c 50 43 42 .\/._SB_PCI0LPCB 02d0: 45 43 4f 4b 93 45 43 44 59 00 a0 27 92 95 44 54 ECOK.ECDY..'..DT 02e0: 53 31 44 54 53 32 70 44 54 53 31 5c 2f 05 5f 53 S1DTS2pDTS1\/._S 02f0: 42 5f 50 43 49 30 4c 50 43 42 45 43 30 5f 53 4b B_PCI0LPCBEC0_SK 0300: 54 41 a1 1d 70 44 54 53 32 5c 2f 05 5f 53 42 5f TA..pDTS2\/._SB_ 0310: 50 43 49 30 4c 50 43 42 45 43 30 5f 53 4b 54 41 PCI0LPCBEC0_SKTA 0320: a1 16 5c 2f 04 5f 53 42 5f 50 43 49 30 4c 50 43 ..\/._SB_PCI0LPC 0330: 42 50 48 53 53 0a 10 5c 2e 5f 50 52 5f 52 50 50 BPHSS..\._PR_RPP 0340: 43 a4 12 04 02 00 00 14 1e 47 45 54 42 0b 77 68 C........GETB.wh 0350: 0a 08 60 77 69 0a 08 61 5b 13 6a 60 61 54 42 46 ..`wi..a[.j`aTBF 0360: 33 a4 54 42 46 33 14 42 09 50 4e 4f 54 08 a0 4a 3.TBF3.B.PNOT..J 0370: 06 4d 50 45 4e a0 31 7b 50 44 43 30 0a 08 00 86 .MPEN.1{PDC0.... 0380: 5c 2e 5f 50 52 5f 43 50 55 30 0a 80 a0 1a 7b 50 \._PR_CPU0....{P 0390: 44 43 30 0a 10 00 5b 22 0a 64 86 5c 2e 5f 50 52 DC0...[".d.\._PR 03a0: 5f 43 50 55 30 0a 81 a0 31 7b 50 44 43 31 0a 08 _CPU0...1{PDC1.. 03b0: 00 86 5c 2e 5f 50 52 5f 43 50 55 31 0a 80 a0 1a ..\._PR_CPU1.... 03c0: 7b 50 44 43 31 0a 10 00 5b 22 0a 64 86 5c 2e 5f {PDC1...[".d.\._ 03d0: 50 52 5f 43 50 55 31 0a 81 a1 1f 86 5c 2e 5f 50 PR_CPU1.....\._P 03e0: 52 5f 43 50 55 30 0a 80 5b 22 0a 64 86 5c 2e 5f R_CPU0..[".d.\._ 03f0: 50 52 5f 43 50 55 30 0a 81 14 17 54 52 41 50 09 PR_CPU0....TRAP. 0400: 70 68 53 4d 49 46 70 00 54 52 50 30 a4 53 4d 49 phSMIFp.TRP0.SMI 0410: 46 10 41 0f 5f 53 42 5f 14 4a 0e 5f 49 4e 49 00 F.A._SB_.J._INI. 0420: 70 0b 99 99 4d 41 52 4b a0 1c 44 54 53 45 54 52 p...MARK..DTSETR 0430: 41 50 0a 47 5e 2f 03 50 43 49 30 4c 50 43 42 50 AP.G^/.PCI0LPCBP 0440: 48 53 53 0a 10 70 0b d0 07 4f 53 59 53 a0 4a 09 HSS..p...OSYS.J. 0450: 5b 12 5f 4f 53 49 60 a0 18 5f 4f 53 49 0d 4c 69 [._OSI`.._OSI.Li 0460: 6e 75 78 00 70 01 4c 49 4e 58 70 00 45 43 44 59 nux.p.LINXp.ECDY 0470: a0 1b 5f 4f 53 49 0d 57 69 6e 64 6f 77 73 20 32 .._OSI.Windows 2 0480: 30 30 31 00 70 0b d1 07 4f 53 59 53 a0 1f 5f 4f 001.p...OSYS.._O 0490: 53 49 0d 57 69 6e 64 6f 77 73 20 32 30 30 31 20 SI.Windows 2001 04a0: 53 50 31 00 70 0b d1 07 4f 53 59 53 a0 1f 5f 4f SP1.p...OSYS.._O 04b0: 53 49 0d 57 69 6e 64 6f 77 73 20 32 30 30 31 20 SI.Windows 2001 04c0: 53 50 32 00 70 0b d2 07 4f 53 59 53 a0 1b 5f 4f SP2.p...OSYS.._O 04d0: 53 49 0d 57 69 6e 64 6f 77 73 20 32 30 30 36 00 SI.Windows 2006. 04e0: 70 0b d6 07 4f 53 59 53 a0 14 90 4d 50 45 4e 93 p...OSYS...MPEN. 04f0: 4f 53 59 53 0b d1 07 54 52 41 50 0a 3d 54 52 41 OSYS...TRAP.=TRA 0500: 50 0a 2b 5b 80 47 4e 56 53 00 0c bc 2d 6e bf 0b P.+[.GNVS...-n.. 0510: 00 01 5b 81 45 24 47 4e 56 53 10 4f 53 59 53 10 ..[.E$GNVS.OSYS. 0520: 53 4d 49 46 08 50 52 4d 30 08 50 52 4d 31 08 53 SMIF.PRM0.PRM1.S 0530: 43 49 46 08 50 52 4d 32 08 50 52 4d 33 08 4c 43 CIF.PRM2.PRM3.LC 0540: 4b 46 08 50 52 4d 34 08 50 52 4d 35 08 50 38 30 KF.PRM4.PRM5.P80 0550: 44 20 4c 49 44 53 08 50 57 52 53 08 44 42 47 53 D LIDS.PWRS.DBGS 0560: 08 4c 49 4e 58 08 00 08 41 43 54 31 08 41 43 54 .LINX...ACT1.ACT 0570: 54 08 50 53 56 54 08 54 43 31 56 08 54 43 32 56 T.PSVT.TC1V.TC2V 0580: 08 54 53 50 56 08 43 52 54 54 08 44 54 53 45 08 .TSPV.CRTT.DTSE. 0590: 44 54 53 31 08 44 54 53 32 08 00 40 05 41 50 49 DTS1.DTS2..@.API 05a0: 43 08 4d 50 45 4e 08 50 43 50 30 08 50 43 50 31 C.MPEN.PCP0.PCP1 05b0: 08 50 50 43 4d 08 00 28 43 4d 41 50 08 43 4d 42 .PPCM..(CMAP.CMB 05c0: 50 08 4c 50 54 50 08 46 44 43 50 08 00 30 49 47 P.LPTP.FDCP..0IG 05d0: 44 53 08 54 4c 53 54 08 43 41 44 4c 08 50 41 44 DS.TLST.CADL.PAD 05e0: 4c 08 43 53 54 45 10 4e 53 54 45 10 53 53 54 45 L.CSTE.NSTE.SSTE 05f0: 10 4e 44 49 44 08 44 49 44 31 20 44 49 44 32 20 .NDID.DID1 DID2 0600: 44 49 44 33 20 44 49 44 34 20 44 49 44 35 20 00 DID3 DID4 DID5 . 0610: 40 06 42 4c 43 53 08 42 52 54 4c 08 41 4c 53 45 @.BLCS.BRTL.ALSE 0620: 08 41 4c 41 46 08 4c 4c 4f 57 08 4c 48 49 48 08 .ALAF.LLOW.LHIH. 0630: 00 08 45 4d 41 45 08 45 4d 41 50 10 45 4d 41 4c ..EMAE.EMAP.EMAL 0640: 10 00 08 4d 45 46 45 08 00 18 54 50 4d 50 08 54 ...MEFE...TPMP.T 0650: 50 4d 45 08 00 40 04 47 54 46 30 38 47 54 46 32 PME..@.GTF08GTF2 0660: 38 49 44 45 4d 08 47 54 46 31 38 00 40 09 41 53 8IDEM.GTF18.@.AS 0670: 4c 42 20 49 42 54 54 08 49 50 41 54 08 49 54 56 LB IBTT.IPAT.ITV 0680: 46 08 49 54 56 4d 08 49 50 53 43 08 49 42 4c 43 F.ITVM.IPSC.IBLC 0690: 08 49 42 49 41 08 49 53 53 43 08 49 34 30 39 08 .IBIA.ISSC.I409. 06a0: 49 35 30 39 08 49 36 30 39 08 49 37 30 39 08 49 I509.I609.I709.I 06b0: 44 4d 4d 08 49 44 4d 53 08 49 46 31 45 08 48 56 DMM.IDMS.IF1E.HV 06c0: 43 4f 08 4e 58 44 31 20 4e 58 44 32 20 4d 41 52 CO.NXD1 NXD2 MAR 06d0: 4b 10 42 52 41 44 08 42 54 45 4e 08 56 56 45 4e K.BRAD.BTEN.VVEN 06e0: 08 42 47 54 4c 08 54 4d 45 45 01 00 07 53 43 55 .BGTL.TMEE...SCU 06f0: 30 01 53 43 55 31 01 53 43 55 32 01 53 43 55 33 0.SCU1.SCU2.SCU3 0700: 01 00 04 58 4b 53 50 01 58 4b 49 4e 01 58 4b 49 ...XKSP.XKIN.XKI 0710: 44 01 58 4b 4f 4b 01 00 04 42 47 55 31 08 42 53 D.XKOK...BGU1.BS 0720: 54 31 08 42 46 43 31 10 57 4b 4c 4e 08 57 41 4b T1.BFC1.WKLN.WAK 0730: 46 08 44 53 4d 44 08 42 41 59 53 08 48 41 50 45 F.DSMD.BAYS.HAPE 0740: 01 00 07 44 54 53 4d 01 00 07 4f 44 54 31 08 4f ...DTSM...ODT1.O 0750: 44 54 32 08 44 54 53 57 08 08 44 53 45 4e 01 08 DT2.DTSW..DSEN.. 0760: 45 43 4f 4e 00 08 47 50 49 43 00 08 43 54 59 50 ECON..GPIC..CTYP 0770: 00 08 4c 30 31 43 00 08 56 46 4e 30 00 08 56 46 ..L01C..VFN0..VF 0780: 4e 31 00 10 4a 7c 5f 47 50 45 14 46 35 5f 4c 30 N1..J|_GPE.F5_L0 0790: 31 00 72 4c 30 31 43 01 4c 30 31 43 50 38 58 48 1.rL01C.L01CP8XH 07a0: 00 01 50 38 58 48 01 4c 30 31 43 a0 48 08 90 93 ..P8XH.L01C.H... 07b0: 52 50 31 44 00 5c 2f 04 5f 53 42 5f 50 43 49 30 RP1D.\/._SB_PCI0 07c0: 52 50 30 31 48 50 53 58 5b 22 0a 64 a0 40 05 5c RP01HPSX[".d.@.\ 07d0: 2f 04 5f 53 42 5f 50 43 49 30 52 50 30 31 50 44 /._SB_PCI0RP01PD 07e0: 43 58 70 01 5c 2f 04 5f 53 42 5f 50 43 49 30 52 CXp.\/._SB_PCI0R 07f0: 50 30 31 50 44 43 58 70 01 5c 2f 04 5f 53 42 5f P01PDCXp.\/._SB_ 0800: 50 43 49 30 52 50 30 31 48 50 53 58 86 5c 2f 03 PCI0RP01HPSX.\/. 0810: 5f 53 42 5f 50 43 49 30 52 50 30 31 00 a1 16 70 _SB_PCI0RP01...p 0820: 01 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 30 31 .\/._SB_PCI0RP01 0830: 48 50 53 58 a0 48 08 90 93 52 50 32 44 00 5c 2f HPSX.H...RP2D.\/ 0840: 04 5f 53 42 5f 50 43 49 30 52 50 30 32 48 50 53 ._SB_PCI0RP02HPS 0850: 58 5b 22 0a 64 a0 40 05 5c 2f 04 5f 53 42 5f 50 X[".d.@.\/._SB_P 0860: 43 49 30 52 50 30 32 50 44 43 58 70 01 5c 2f 04 CI0RP02PDCXp.\/. 0870: 5f 53 42 5f 50 43 49 30 52 50 30 32 50 44 43 58 _SB_PCI0RP02PDCX 0880: 70 01 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 30 p.\/._SB_PCI0RP0 0890: 32 48 50 53 58 86 5c 2f 03 5f 53 42 5f 50 43 49 2HPSX.\/._SB_PCI 08a0: 30 52 50 30 32 00 a1 16 70 01 5c 2f 04 5f 53 42 0RP02...p.\/._SB 08b0: 5f 50 43 49 30 52 50 30 32 48 50 53 58 a0 48 08 _PCI0RP02HPSX.H. 08c0: 90 93 52 50 33 44 00 5c 2f 04 5f 53 42 5f 50 43 ..RP3D.\/._SB_PC 08d0: 49 30 52 50 30 33 48 50 53 58 5b 22 0a 64 a0 40 I0RP03HPSX[".d.@ 08e0: 05 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 30 33 .\/._SB_PCI0RP03 08f0: 50 44 43 58 70 01 5c 2f 04 5f 53 42 5f 50 43 49 PDCXp.\/._SB_PCI 0900: 30 52 50 30 33 50 44 43 58 70 01 5c 2f 04 5f 53 0RP03PDCXp.\/._S 0910: 42 5f 50 43 49 30 52 50 30 33 48 50 53 58 86 5c B_PCI0RP03HPSX.\ 0920: 2f 03 5f 53 42 5f 50 43 49 30 52 50 30 33 00 a1 /._SB_PCI0RP03.. 0930: 16 70 01 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 .p.\/._SB_PCI0RP 0940: 30 33 48 50 53 58 a0 48 08 90 93 52 50 34 44 00 03HPSX.H...RP4D. 0950: 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 30 34 48 \/._SB_PCI0RP04H 0960: 50 53 58 5b 22 0a 64 a0 40 05 5c 2f 04 5f 53 42 PSX[".d.@.\/._SB 0970: 5f 50 43 49 30 52 50 30 34 50 44 43 58 70 01 5c _PCI0RP04PDCXp.\ 0980: 2f 04 5f 53 42 5f 50 43 49 30 52 50 30 34 50 44 /._SB_PCI0RP04PD 0990: 43 58 70 01 5c 2f 04 5f 53 42 5f 50 43 49 30 52 CXp.\/._SB_PCI0R 09a0: 50 30 34 48 50 53 58 86 5c 2f 03 5f 53 42 5f 50 P04HPSX.\/._SB_P 09b0: 43 49 30 52 50 30 34 00 a1 16 70 01 5c 2f 04 5f CI0RP04...p.\/._ 09c0: 53 42 5f 50 43 49 30 52 50 30 34 48 50 53 58 a0 SB_PCI0RP04HPSX. 09d0: 48 08 90 93 52 50 35 44 00 5c 2f 04 5f 53 42 5f H...RP5D.\/._SB_ 09e0: 50 43 49 30 52 50 30 35 48 50 53 58 5b 22 0a 64 PCI0RP05HPSX[".d 09f0: a0 40 05 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 .@.\/._SB_PCI0RP 0a00: 30 35 50 44 43 58 70 01 5c 2f 04 5f 53 42 5f 50 05PDCXp.\/._SB_P 0a10: 43 49 30 52 50 30 35 50 44 43 58 70 01 5c 2f 04 CI0RP05PDCXp.\/. 0a20: 5f 53 42 5f 50 43 49 30 52 50 30 35 48 50 53 58 _SB_PCI0RP05HPSX 0a30: 86 5c 2f 03 5f 53 42 5f 50 43 49 30 52 50 30 35 .\/._SB_PCI0RP05 0a40: 00 a1 16 70 01 5c 2f 04 5f 53 42 5f 50 43 49 30 ...p.\/._SB_PCI0 0a50: 52 50 30 35 48 50 53 58 a0 48 08 90 93 52 50 36 RP05HPSX.H...RP6 0a60: 44 00 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 30 D.\/._SB_PCI0RP0 0a70: 36 48 50 53 58 5b 22 0a 64 a0 40 05 5c 2f 04 5f 6HPSX[".d.@.\/._ 0a80: 53 42 5f 50 43 49 30 52 50 30 36 50 44 43 58 70 SB_PCI0RP06PDCXp 0a90: 01 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 30 36 .\/._SB_PCI0RP06 0aa0: 50 44 43 58 70 01 5c 2f 04 5f 53 42 5f 50 43 49 PDCXp.\/._SB_PCI 0ab0: 30 52 50 30 36 48 50 53 58 86 5c 2f 03 5f 53 42 0RP06HPSX.\/._SB 0ac0: 5f 50 43 49 30 52 50 30 36 00 a1 16 70 01 5c 2f _PCI0RP06...p.\/ 0ad0: 04 5f 53 42 5f 50 43 49 30 52 50 30 36 48 50 53 ._SB_PCI0RP06HPS 0ae0: 58 14 42 0d 5f 4c 30 32 00 70 00 47 50 45 43 a0 X.B._L02.p.GPEC. 0af0: 4d 0a 5c 2f 04 5f 53 42 5f 50 43 49 30 4c 50 43 M.\/._SB_PCI0LPC 0b00: 42 45 43 4f 4b a0 4e 04 93 44 54 53 57 01 a0 27 BECOK.N..DTSW..' 0b10: 92 95 44 54 53 31 44 54 53 32 70 44 54 53 31 5c ..DTS1DTS2pDTS1\ 0b20: 2f 05 5f 53 42 5f 50 43 49 30 4c 50 43 42 45 43 /._SB_PCI0LPCBEC 0b30: 30 5f 53 4b 54 41 a1 1d 70 44 54 53 32 5c 2f 05 0_SKTA..pDTS2\/. 0b40: 5f 53 42 5f 50 43 49 30 4c 50 43 42 45 43 30 5f _SB_PCI0LPCBEC0_ 0b50: 53 4b 54 41 a1 48 04 a0 27 92 95 4f 44 54 31 4f SKTA.H..'..ODT1O 0b60: 44 54 32 70 4f 44 54 31 5c 2f 05 5f 53 42 5f 50 DT2pODT1\/._SB_P 0b70: 43 49 30 4c 50 43 42 45 43 30 5f 53 4b 54 41 a1 CI0LPCBEC0_SKTA. 0b80: 1d 70 4f 44 54 32 5c 2f 05 5f 53 42 5f 50 43 49 .pODT2\/._SB_PCI 0b90: 30 4c 50 43 42 45 43 30 5f 53 4b 54 41 a1 16 5c 0LPCBEC0_SKTA..\ 0ba0: 2f 04 5f 53 42 5f 50 43 49 30 4c 50 43 42 50 48 /._SB_PCI0LPCBPH 0bb0: 53 53 0a 10 14 18 5f 4c 30 33 00 86 5c 2f 03 5f SS...._L03..\/._ 0bc0: 53 42 5f 50 43 49 30 55 53 42 31 0a 02 14 18 5f SB_PCI0USB1...._ 0bd0: 4c 30 34 00 86 5c 2f 03 5f 53 42 5f 50 43 49 30 L04..\/._SB_PCI0 0be0: 55 53 42 32 0a 02 14 18 5f 4c 30 35 00 86 5c 2f USB2...._L05..\/ 0bf0: 03 5f 53 42 5f 50 43 49 30 55 53 42 35 0a 02 14 ._SB_PCI0USB5... 0c00: 36 5f 4c 30 36 00 a0 27 5c 2f 04 5f 53 42 5f 50 6_L06..'\/._SB_P 0c10: 43 49 30 47 46 58 30 47 53 53 45 5c 2f 04 5f 53 CI0GFX0GSSE\/._S 0c20: 42 5f 50 43 49 30 47 46 58 30 47 53 43 49 a1 07 B_PCI0GFX0GSCI.. 0c30: 70 01 53 43 49 53 14 43 1f 5f 4c 30 39 00 a0 41 p.SCIS.C._L09..A 0c40: 05 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 30 31 .\/._SB_PCI0RP01 0c50: 50 53 50 58 70 01 5c 2f 04 5f 53 42 5f 50 43 49 PSPXp.\/._SB_PCI 0c60: 30 52 50 30 31 50 53 50 58 70 01 5c 2f 04 5f 53 0RP01PSPXp.\/._S 0c70: 42 5f 50 43 49 30 52 50 30 31 50 4d 53 58 86 5c B_PCI0RP01PMSX.\ 0c80: 2f 03 5f 53 42 5f 50 43 49 30 52 50 30 31 0a 02 /._SB_PCI0RP01.. 0c90: a0 41 05 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 .A.\/._SB_PCI0RP 0ca0: 30 32 50 53 50 58 70 01 5c 2f 04 5f 53 42 5f 50 02PSPXp.\/._SB_P 0cb0: 43 49 30 52 50 30 32 50 53 50 58 70 01 5c 2f 04 CI0RP02PSPXp.\/. 0cc0: 5f 53 42 5f 50 43 49 30 52 50 30 32 50 4d 53 58 _SB_PCI0RP02PMSX 0cd0: 86 5c 2f 03 5f 53 42 5f 50 43 49 30 52 50 30 32 .\/._SB_PCI0RP02 0ce0: 0a 02 a0 41 05 5c 2f 04 5f 53 42 5f 50 43 49 30 ...A.\/._SB_PCI0 0cf0: 52 50 30 33 50 53 50 58 70 01 5c 2f 04 5f 53 42 RP03PSPXp.\/._SB 0d00: 5f 50 43 49 30 52 50 30 33 50 53 50 58 70 01 5c _PCI0RP03PSPXp.\ 0d10: 2f 04 5f 53 42 5f 50 43 49 30 52 50 30 33 50 4d /._SB_PCI0RP03PM 0d20: 53 58 86 5c 2f 03 5f 53 42 5f 50 43 49 30 52 50 SX.\/._SB_PCI0RP 0d30: 30 33 0a 02 a0 41 05 5c 2f 04 5f 53 42 5f 50 43 03...A.\/._SB_PC 0d40: 49 30 52 50 30 34 50 53 50 58 70 01 5c 2f 04 5f I0RP04PSPXp.\/._ 0d50: 53 42 5f 50 43 49 30 52 50 30 34 50 53 50 58 70 SB_PCI0RP04PSPXp 0d60: 01 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 30 34 .\/._SB_PCI0RP04 0d70: 50 4d 53 58 86 5c 2f 03 5f 53 42 5f 50 43 49 30 PMSX.\/._SB_PCI0 0d80: 52 50 30 34 0a 02 a0 41 05 5c 2f 04 5f 53 42 5f RP04...A.\/._SB_ 0d90: 50 43 49 30 52 50 30 35 50 53 50 58 70 01 5c 2f PCI0RP05PSPXp.\/ 0da0: 04 5f 53 42 5f 50 43 49 30 52 50 30 35 50 53 50 ._SB_PCI0RP05PSP 0db0: 58 70 01 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 Xp.\/._SB_PCI0RP 0dc0: 30 35 50 4d 53 58 86 5c 2f 03 5f 53 42 5f 50 43 05PMSX.\/._SB_PC 0dd0: 49 30 52 50 30 35 0a 02 a0 41 05 5c 2f 04 5f 53 I0RP05...A.\/._S 0de0: 42 5f 50 43 49 30 52 50 30 36 50 53 50 58 70 01 B_PCI0RP06PSPXp. 0df0: 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 30 36 50 \/._SB_PCI0RP06P 0e00: 53 50 58 70 01 5c 2f 04 5f 53 42 5f 50 43 49 30 SPXp.\/._SB_PCI0 0e10: 52 50 30 36 50 4d 53 58 86 5c 2f 03 5f 53 42 5f RP06PMSX.\/._SB_ 0e20: 50 43 49 30 52 50 30 36 0a 02 14 18 5f 4c 30 42 PCI0RP06...._L0B 0e30: 00 86 5c 2f 03 5f 53 42 5f 50 43 49 30 50 43 49 ..\/._SB_PCI0PCI 0e40: 42 0a 02 14 18 5f 4c 30 43 00 86 5c 2f 03 5f 53 B...._L0C..\/._S 0e50: 42 5f 50 43 49 30 55 53 42 33 0a 02 14 4b 0b 5f B_PCI0USB3...K._ 0e60: 4c 30 44 00 a0 3b 5c 2f 04 5f 53 42 5f 50 43 49 L0D..;\/._SB_PCI 0e70: 30 45 48 43 31 50 4d 45 53 70 01 5c 2f 04 5f 53 0EHC1PMESp.\/._S 0e80: 42 5f 50 43 49 30 45 48 43 31 50 4d 45 53 86 5c B_PCI0EHC1PMES.\ 0e90: 2f 03 5f 53 42 5f 50 43 49 30 45 48 43 31 0a 02 /._SB_PCI0EHC1.. 0ea0: a0 3b 5c 2f 04 5f 53 42 5f 50 43 49 30 45 48 43 .;\/._SB_PCI0EHC 0eb0: 32 50 4d 45 53 70 01 5c 2f 04 5f 53 42 5f 50 43 2PMESp.\/._SB_PC 0ec0: 49 30 45 48 43 32 50 4d 45 53 86 5c 2f 03 5f 53 I0EHC2PMES.\/._S 0ed0: 42 5f 50 43 49 30 45 48 43 32 0a 02 a0 3b 5c 2f B_PCI0EHC2...;\/ 0ee0: 04 5f 53 42 5f 50 43 49 30 48 44 45 46 50 4d 45 ._SB_PCI0HDEFPME 0ef0: 53 70 01 5c 2f 04 5f 53 42 5f 50 43 49 30 48 44 Sp.\/._SB_PCI0HD 0f00: 45 46 50 4d 45 53 86 5c 2f 03 5f 53 42 5f 50 43 EFPMES.\/._SB_PC 0f10: 49 30 48 44 45 46 0a 02 14 18 5f 4c 30 45 00 86 I0HDEF...._L0E.. 0f20: 5c 2f 03 5f 53 42 5f 50 43 49 30 55 53 42 34 0a \/._SB_PCI0USB4. 0f30: 02 14 1c 5f 4c 31 42 00 80 4c 50 4f 4c 4c 50 4f ..._L1B..LPOLLPO 0f40: 4c 86 5c 2e 5f 53 42 5f 4c 49 44 30 0a 80 10 46 L.\._SB_LID0...F 0f50: 0b 5f 50 52 5f 5b 83 0b 43 50 55 30 00 10 10 00 ._PR_[..CPU0.... 0f60: 00 06 5b 83 0b 43 50 55 31 01 10 10 00 00 06 14 ..[..CPU1....... 0f70: 45 09 52 50 50 43 00 a0 4d 08 93 4f 53 59 53 0b E.RPPC..M..OSYS. 0f80: d2 07 a0 42 08 7b 43 46 47 44 01 00 a0 42 04 94 ...B.{CFGD...B.. 0f90: 5e 2e 43 50 55 30 5f 50 50 43 00 74 5e 2e 43 50 ^.CPU0_PPC.t^.CP 0fa0: 55 30 5f 50 50 43 01 5e 2e 43 50 55 30 5f 50 50 U0_PPC.^.CPU0_PP 0fb0: 43 50 4e 4f 54 72 5e 2e 43 50 55 30 5f 50 50 43 CPNOTr^.CPU0_PPC 0fc0: 01 5e 2e 43 50 55 30 5f 50 50 43 50 4e 4f 54 a1 .^.CPU0_PPCPNOT. 0fd0: 35 72 5e 2e 43 50 55 30 5f 50 50 43 01 5e 2e 43 5r^.CPU0_PPC.^.C 0fe0: 50 55 30 5f 50 50 43 50 4e 4f 54 74 5e 2e 43 50 PU0_PPCPNOTt^.CP 0ff0: 55 30 5f 50 50 43 01 5e 2e 43 50 55 30 5f 50 50 U0_PPC.^.CPU0_PP 1000: 43 50 4e 4f 54 08 46 57 53 4f 0d 46 57 53 4f 00 CPNOT.FWSO.FWSO. 1010: 08 5f 50 53 43 00 14 12 5f 50 53 30 00 70 5f 50 ._PSC..._PS0.p_P 1020: 53 43 60 70 00 5f 50 53 43 14 0d 5f 50 53 33 00 SC`p._PSC.._PS3. 1030: 70 0a 03 5f 50 53 43 10 8c fb 04 5f 53 42 5f 5b p.._PSC...._SB_[ 1040: 82 4f 3e 41 4d 57 30 08 5f 48 49 44 0d 70 6e 70 .O>AMW0._HID.pnp 1050: 30 63 31 34 00 08 5f 55 49 44 00 08 5f 57 44 47 0c14.._UID.._WDG 1060: 11 3f 0a 3c a7 1d 85 2e 53 d0 5f 49 9d fa 1a 4a .?.<....S._I...J 1070: d6 2e 6a 86 41 43 01 00 3b 6d 43 71 dd fb 72 4c ..j.AC..;mCq..rL 1080: bc b8 43 5b fe 0d 64 f9 42 43 01 00 21 12 90 05 ..C[..d.BC..!... 1090: 66 d5 d1 11 b2 f0 00 a0 c9 06 29 10 42 41 01 00 f.........).BA.. 10a0: 08 53 54 41 43 11 07 0a 04 01 14 03 00 14 1f 57 .STAC..........W 10b0: 51 41 43 01 70 0d 4d 58 4d 54 43 43 6f 6e 66 69 QAC.p.MXMTCConfi 10c0: 67 44 61 74 61 00 5b 31 a4 53 54 41 43 08 53 54 gData.[1.STAC.ST 10d0: 42 43 11 07 0a 04 01 00 00 00 14 34 57 51 42 43 BC.........4WQBC 10e0: 01 70 0d 47 65 74 20 4d 58 4d 54 43 43 6f 6e 74 .p.Get MXMTCCont 10f0: 72 6f 6c 44 61 74 61 3a 20 53 54 42 43 20 3d 20 rolData: STBC = 1100: 00 5b 31 70 53 54 42 43 5b 31 a4 53 54 42 43 14 .[1pSTBC[1.STBC. 1110: 47 06 57 53 42 43 02 70 69 53 54 42 43 70 0d 53 G.WSBC.piSTBCp.S 1120: 65 74 20 4d 58 4d 54 43 43 6f 6e 74 72 6f 6c 44 et MXMTCControlD 1130: 61 74 61 3a 20 53 54 42 43 20 3d 20 00 5b 31 70 ata: STBC = .[1p 1140: 53 54 42 43 5b 31 a0 30 93 5e 5e 2f 03 50 43 49 STBC[1.0.^^/.PCI 1150: 30 4c 50 43 42 45 43 4f 4b 01 70 83 88 53 54 42 0LPCBECOK.p..STB 1160: 43 01 00 5e 5e 2f 04 50 43 49 30 4c 50 43 42 45 C..^^/.PCI0LPCBE 1170: 43 30 5f 53 4b 54 43 08 57 51 42 41 11 43 2b 0b C0_SKTC.WQBA.C+. 1180: ae 02 46 4f 4d 42 01 00 00 00 9e 02 00 00 c0 0b ..FOMB.......... 1190: 00 00 44 53 00 01 1a 7d da 54 28 d9 85 00 01 06 ..DS...}.T(..... 11a0: 18 42 10 07 10 0a 4b 61 02 c9 21 52 3c 18 94 05 .B....Ka..!R<... 11b0: 10 43 88 57 04 44 04 84 bc 0a b0 29 c0 24 88 fa .C.W.D.....).$.. 11c0: f7 87 28 09 0e 25 04 42 12 05 98 17 a0 5b 80 61 ..(..%.B.....[.a 11d0: 01 b6 05 98 16 e0 18 92 4a 03 a7 04 96 02 21 a1 ........J.....!. 11e0: 02 94 0b f0 2d 40 3b a2 24 0b b0 0c 23 02 8f 82 ....-@;.$...#... 11f0: a1 71 68 ec 30 2c 13 4c 83 38 8c b2 91 45 60 dc .qh.0,.L.8...E`. 1200: 4e 05 c8 15 20 4c 80 78 54 61 34 07 45 e0 42 63 N... L.xTa4.E.Bc 1210: 64 40 c8 a3 00 ab a3 d0 a4 12 d8 bd 00 65 02 2c d@...........e., 1220: 0a 10 27 c0 9a 00 63 48 32 28 40 9b 00 5b 20 42 ..'...cH2(@..[ B 1230: 0f d4 19 8a 46 70 02 51 6a 46 11 48 ac 1a 01 85 ....Fp.QjF.H.... 1240: 12 34 46 b0 10 81 c2 86 37 46 98 03 88 d1 fe 20 .4F.....7F..... 1250: 48 20 05 e3 66 91 46 83 1a 6b 82 63 f7 68 4e b8 H ..f.F..k.c.hN. 1260: 73 01 d2 e7 26 90 a3 3b b8 3a 07 4d 86 c7 b0 1e s...&..;.:.M.... 1270: 06 d8 29 00 ef 1a 50 d3 3f 78 26 08 0e 35 44 8f ..)...P.?x&..5D. 1280: 3a dc 09 1c fb 91 30 88 b3 3b 6e ac c3 c9 68 d0 :.....0..;n...h. 1290: a5 0a 30 7b 00 d0 d0 12 9c f6 99 84 7e 0f 38 9f ..0{........~.8. 12a0: 9e 21 89 fc 41 a0 46 e6 ff 3f b4 c7 78 5a 31 43 .!..A.F..?..xZ1C 12b0: 3e 0b 1c 16 13 0b a1 4d 6a 3c 40 40 e1 d1 40 08 >......Mj<@@..@. 12c0: 6f 06 9e af 09 46 86 90 93 f1 a0 06 e0 41 d7 3a o....F.......A.: 12d0: 32 8d 27 a6 21 cf e8 00 22 bf 32 78 0c 41 02 f9 2.'.!...".2x.A.. 12e0: c4 60 b8 c7 81 13 78 02 f0 59 40 10 92 00 21 51 .`....x..Y@...!Q 12f0: e3 a7 47 08 7e 7a 78 93 30 28 1f d2 99 f9 90 e1 ..G.~zx.0(...... 1300: 11 c2 07 c4 7b 9f 3b 19 c1 29 7b a4 e0 b0 7e 0e ....{.;..){...~. 1310: 20 c0 af 0f 8f 0d 09 7c ae 08 8c 1d aa fd 0a 40 ......|.......@ 1320: 08 1e ed 51 e0 54 23 1c 2d 78 08 8a 1c 03 4a cc ...Q.T#.-x....J. 1330: 18 50 03 38 85 d0 e7 73 04 47 14 25 f6 21 19 da .P.8...s.G.%.!.. 1340: 08 e1 1f 39 4e c1 f7 8b 23 3d ad 23 78 91 f0 08 ...9N...#=.#x... 1350: 30 e1 ce 28 a8 38 30 f4 ff 7f 4c 01 dc 7a 3b a6 0..(.80...L..z;. 1360: 80 3e c0 31 05 50 fc ff 3f a6 00 87 a8 c7 14 f4 .>.1.P..?....... 1370: 40 0c 7c 2e a1 0d ff 96 c1 8e 03 87 74 6a 8f 28 @.|.........tj.( 1380: 80 29 79 47 14 50 8c 14 d6 f1 04 18 05 3c 9b a0 .)yG.P.......<.. 1390: 22 1d 4f 80 ce ff ff 78 02 58 b8 9a bc 92 84 7d ".O....x.X.....} 13a0: 1e 78 1d 89 14 e3 41 e2 b5 e4 c1 24 46 98 08 8f .x....A....$F... 13b0: 27 1e 47 c0 b7 82 28 91 8e 3e c4 83 49 28 63 3e '.G...(..>..I(c> 13c0: a3 84 89 f9 04 70 22 ef 27 46 0a 73 2a 8f 27 2c .....p".'F.s*.', 13d0: c4 f1 04 a0 85 e2 e3 09 3a 2c 84 fe ff c7 13 dc ........:,...... 13e0: e1 c1 a7 0c fc 85 0c c6 f9 04 30 24 f0 7c 02 ca ..........0$.|.. 13f0: db 18 e6 80 02 8c 14 da f4 a9 d1 a8 55 83 32 35 ............U.25 1400: ca 34 a8 d5 a7 52 63 c6 4c 9c 52 bc 6c 8d df f2 .4...Rc.L.R.l... 1410: 9e 09 02 b1 20 0a 81 38 cc f3 42 20 96 a2 01 84 .... ..8..B .... 1420: 85 06 a1 42 a9 05 e2 98 20 34 92 0a 10 f6 ff 07 ...B.... 4...... 1430: 5b 82 1b 4c 49 44 30 08 5f 48 49 44 0c 41 d0 0c [..LID0._HID.A.. 1440: 0d 14 0b 5f 4c 49 44 00 a4 4c 50 4f 4c 5b 82 0f ..._LID..LPOL[.. 1450: 50 57 52 42 08 5f 48 49 44 0c 41 d0 0c 0c 5b 82 PWRB._HID.A...[. 1460: 84 b9 04 50 43 49 30 14 09 5f 53 33 44 00 a4 0a ...PCI0.._S3D... 1470: 02 14 09 5f 53 34 44 00 a4 0a 02 08 5f 48 49 44 ..._S4D....._HID 1480: 0c 41 d0 0a 08 08 5f 43 49 44 0c 41 d0 0a 03 5b .A...._CID.A...[ 1490: 82 43 0e 4d 43 48 43 08 5f 41 44 52 00 5b 80 48 .C.MCHC._ADR.[.H 14a0: 42 55 53 02 0a 40 0a c0 5b 81 4a 0c 48 42 55 53 BUS..@..[.J.HBUS 14b0: 03 45 50 45 4e 01 00 0b 45 50 42 52 14 00 20 4d .EPEN...EPBR.. M 14c0: 48 45 4e 01 00 0d 4d 48 42 52 12 00 40 0a 50 58 HEN...MHBR..@.PX 14d0: 45 4e 01 50 58 53 5a 02 00 17 50 58 42 52 06 00 EN.PXSZ...PXBR.. 14e0: 20 44 49 45 4e 01 00 0b 44 49 42 52 14 00 20 49 DIEN...DIBR.. I 14f0: 50 45 4e 01 00 0b 49 50 42 52 14 00 40 0e 00 04 PEN...IPBR..@... 1500: 50 4d 30 48 02 00 02 50 4d 31 4c 02 00 02 50 4d PM0H...PM1L...PM 1510: 31 48 02 00 02 50 4d 32 4c 02 00 02 50 4d 32 48 1H...PM2L...PM2H 1520: 02 00 02 50 4d 33 4c 02 00 02 50 4d 33 48 02 00 ...PM3L...PM3H.. 1530: 02 50 4d 34 4c 02 00 02 50 4d 34 48 02 00 02 50 .PM4L...PM4H...P 1540: 4d 35 4c 02 00 02 50 4d 35 48 02 00 02 50 4d 36 M5L...PM5H...PM6 1550: 4c 02 00 02 50 4d 36 48 02 00 02 00 07 48 45 4e L...PM6H.....HEN 1560: 41 01 00 40 05 54 55 55 44 10 00 40 06 00 04 54 A..@.TUUD..@...T 1570: 4c 55 44 0c 08 42 55 46 30 11 4d 20 0b 08 02 88 LUD..BUF0.M .... 1580: 0d 00 02 0c 00 00 00 00 00 ff 00 00 00 00 01 87 ................ 1590: 17 00 01 0c 03 00 00 00 00 00 00 00 00 f7 0c 00 ................ 15a0: 00 00 00 00 00 f8 0c 00 00 47 01 f8 0c f8 0c 01 .........G...... 15b0: 08 87 17 00 01 0c 03 00 00 00 00 00 0d 00 00 ff ................ 15c0: ff 00 00 00 00 00 00 00 f3 00 00 87 17 00 00 0c ................ 15d0: 03 00 00 00 00 00 00 0a 00 ff ff 0b 00 00 00 00 ................ 15e0: 00 00 00 02 00 87 17 00 00 0c 03 00 00 00 00 00 ................ 15f0: 00 0c 00 ff 3f 0c 00 00 00 00 00 00 40 00 00 87 ....?.......@... 1600: 17 00 00 0c 03 00 00 00 00 00 40 0c 00 ff 7f 0c ..........@..... 1610: 00 00 00 00 00 00 40 00 00 87 17 00 00 0c 03 00 ......@......... 1620: 00 00 00 00 80 0c 00 ff bf 0c 00 00 00 00 00 00 ................ 1630: 40 00 00 87 17 00 00 0c 03 00 00 00 00 00 c0 0c @............... 1640: 00 ff ff 0c 00 00 00 00 00 00 40 00 00 87 17 00 ..........@..... 1650: 00 0c 03 00 00 00 00 00 00 0d 00 ff 3f 0d 00 00 ............?... 1660: 00 00 00 00 40 00 00 87 17 00 00 0c 03 00 00 00 ....@........... 1670: 00 00 40 0d 00 ff 7f 0d 00 00 00 00 00 00 40 00 ..@...........@. 1680: 00 87 17 00 00 0c 03 00 00 00 00 00 80 0d 00 ff ................ 1690: bf 0d 00 00 00 00 00 00 40 00 00 87 17 00 00 0c ........@....... 16a0: 03 00 00 00 00 00 c0 0d 00 ff ff 0d 00 00 00 00 ................ 16b0: 00 00 40 00 00 87 17 00 00 0c 03 00 00 00 00 00 ..@............. 16c0: 00 0e 00 ff 3f 0e 00 00 00 00 00 00 40 00 00 87 ....?.......@... 16d0: 17 00 00 0c 03 00 00 00 00 00 40 0e 00 ff 7f 0e ..........@..... 16e0: 00 00 00 00 00 00 40 00 00 87 17 00 00 0c 03 00 ......@......... 16f0: 00 00 00 00 80 0e 00 ff bf 0e 00 00 00 00 00 00 ................ 1700: 40 00 00 87 17 00 00 0c 03 00 00 00 00 00 c0 0e @............... 1710: 00 ff ff 0e 00 00 00 00 00 00 40 00 00 87 17 00 ..........@..... 1720: 00 0c 03 00 00 00 00 00 00 0f 00 ff ff 0f 00 00 ................ 1730: 00 00 00 00 00 01 00 87 17 00 00 0c 03 00 00 00 ................ 1740: 00 00 00 00 00 ff ff ff df 00 00 00 00 00 00 00 ................ 1750: 00 87 17 00 00 0c 03 00 00 00 00 00 00 00 f0 ff ................ 1760: ff bf fe 00 00 00 00 00 00 c0 0e 87 17 00 00 0c ................ 1770: 03 00 00 00 00 00 00 d4 fe ff 4f d4 fe 00 00 00 ..........O..... 1780: 00 00 00 00 00 79 00 14 4b 3d 5f 43 52 53 08 a0 .....y..K=_CRS.. 1790: 1c 5e 2e 4d 43 48 43 50 4d 31 4c 8a 42 55 46 30 .^.MCHCPM1L.BUF0 17a0: 0a 7c 43 30 4c 4e 70 00 43 30 4c 4e a0 1f 93 5e .|C0LNp.C0LN...^ 17b0: 2e 4d 43 48 43 50 4d 31 4c 01 8d 42 55 46 30 0b .MCHCPM1L..BUF0. 17c0: 58 03 43 30 52 57 70 00 43 30 52 57 a0 1c 5e 2e X.C0RWp.C0RW..^. 17d0: 4d 43 48 43 50 4d 31 48 8a 42 55 46 30 0a 96 43 MCHCPM1H.BUF0..C 17e0: 34 4c 4e 70 00 43 34 4c 4e a0 1f 93 5e 2e 4d 43 4LNp.C4LN...^.MC 17f0: 48 43 50 4d 31 48 01 8d 42 55 46 30 0b 28 04 43 HCPM1H..BUF0.(.C 1800: 34 52 57 70 00 43 34 52 57 a0 1c 5e 2e 4d 43 48 4RWp.C4RW..^.MCH 1810: 43 50 4d 32 4c 8a 42 55 46 30 0a b0 43 38 4c 4e CPM2L.BUF0..C8LN 1820: 70 00 43 38 4c 4e a0 1f 93 5e 2e 4d 43 48 43 50 p.C8LN...^.MCHCP 1830: 4d 32 4c 01 8d 42 55 46 30 0b f8 04 43 38 52 57 M2L..BUF0...C8RW 1840: 70 00 43 38 52 57 a0 1c 5e 2e 4d 43 48 43 50 4d p.C8RW..^.MCHCPM 1850: 32 48 8a 42 55 46 30 0a ca 43 43 4c 4e 70 00 43 2H.BUF0..CCLNp.C 1860: 43 4c 4e a0 1f 93 5e 2e 4d 43 48 43 50 4d 32 48 CLN...^.MCHCPM2H 1870: 01 8d 42 55 46 30 0b c8 05 43 43 52 57 70 00 43 ..BUF0...CCRWp.C 1880: 43 52 57 a0 1c 5e 2e 4d 43 48 43 50 4d 33 4c 8a CRW..^.MCHCPM3L. 1890: 42 55 46 30 0a e4 44 30 4c 4e 70 00 44 30 4c 4e BUF0..D0LNp.D0LN 18a0: a0 1f 93 5e 2e 4d 43 48 43 50 4d 33 4c 01 8d 42 ...^.MCHCPM3L..B 18b0: 55 46 30 0b 98 06 44 30 52 57 70 00 44 30 52 57 UF0...D0RWp.D0RW 18c0: a0 1c 5e 2e 4d 43 48 43 50 4d 33 48 8a 42 55 46 ..^.MCHCPM3H.BUF 18d0: 30 0a fe 44 34 4c 4e 70 00 44 34 4c 4e a0 1f 93 0..D4LNp.D4LN... 18e0: 5e 2e 4d 43 48 43 50 4d 33 48 01 8d 42 55 46 30 ^.MCHCPM3H..BUF0 18f0: 0b 68 07 44 34 52 57 70 00 44 34 52 57 a0 1d 5e .h.D4RWp.D4RW..^ 1900: 2e 4d 43 48 43 50 4d 34 4c 8a 42 55 46 30 0b 18 .MCHCPM4L.BUF0.. 1910: 01 44 38 4c 4e 70 00 44 38 4c 4e a0 1f 93 5e 2e .D8LNp.D8LN...^. 1920: 4d 43 48 43 50 4d 34 4c 01 8d 42 55 46 30 0b 38 MCHCPM4L..BUF0.8 1930: 08 44 38 52 57 70 00 44 38 52 57 a0 1d 5e 2e 4d .D8RWp.D8RW..^.M 1940: 43 48 43 50 4d 34 48 8a 42 55 46 30 0b 32 01 44 CHCPM4H.BUF0.2.D 1950: 43 4c 4e 70 00 44 43 4c 4e a0 1f 93 5e 2e 4d 43 CLNp.DCLN...^.MC 1960: 48 43 50 4d 34 48 01 8d 42 55 46 30 0b 08 09 44 HCPM4H..BUF0...D 1970: 43 52 57 70 00 44 43 52 57 a0 1d 5e 2e 4d 43 48 CRWp.DCRW..^.MCH 1980: 43 50 4d 35 4c 8a 42 55 46 30 0b 4c 01 45 30 4c CPM5L.BUF0.L.E0L 1990: 4e 70 00 45 30 4c 4e a0 1f 93 5e 2e 4d 43 48 43 Np.E0LN...^.MCHC 19a0: 50 4d 35 4c 01 8d 42 55 46 30 0b d8 09 45 30 52 PM5L..BUF0...E0R 19b0: 57 70 00 45 30 52 57 a0 1d 5e 2e 4d 43 48 43 50 Wp.E0RW..^.MCHCP 19c0: 4d 35 48 8a 42 55 46 30 0b 66 01 45 34 4c 4e 70 M5H.BUF0.f.E4LNp 19d0: 00 45 34 4c 4e a0 1f 93 5e 2e 4d 43 48 43 50 4d .E4LN...^.MCHCPM 19e0: 35 48 01 8d 42 55 46 30 0b a8 0a 45 34 52 57 70 5H..BUF0...E4RWp 19f0: 00 45 34 52 57 a0 1d 5e 2e 4d 43 48 43 50 4d 36 .E4RW..^.MCHCPM6 1a00: 4c 8a 42 55 46 30 0b 80 01 45 38 4c 4e 70 00 45 L.BUF0...E8LNp.E 1a10: 38 4c 4e a0 1f 93 5e 2e 4d 43 48 43 50 4d 36 4c 8LN...^.MCHCPM6L 1a20: 01 8d 42 55 46 30 0b 78 0b 45 38 52 57 70 00 45 ..BUF0.x.E8RWp.E 1a30: 38 52 57 a0 1d 5e 2e 4d 43 48 43 50 4d 36 48 8a 8RW..^.MCHCPM6H. 1a40: 42 55 46 30 0b 9a 01 45 43 4c 4e 70 00 45 43 4c BUF0...ECLNp.ECL 1a50: 4e a0 1f 93 5e 2e 4d 43 48 43 50 4d 36 48 01 8d N...^.MCHCPM6H.. 1a60: 42 55 46 30 0b 48 0c 45 43 52 57 70 00 45 43 52 BUF0.H.ECRWp.ECR 1a70: 57 a0 1d 5e 2e 4d 43 48 43 50 4d 30 48 8a 42 55 W..^.MCHCPM0H.BU 1a80: 46 30 0b b4 01 46 30 4c 4e 70 00 46 30 4c 4e a0 F0...F0LNp.F0LN. 1a90: 1f 93 5e 2e 4d 43 48 43 50 4d 30 48 01 8d 42 55 ..^.MCHCPM0H..BU 1aa0: 46 30 0b 18 0d 46 30 52 57 70 00 46 30 52 57 8a F0...F0RWp.F0RW. 1ab0: 42 55 46 30 0b c2 01 4d 31 4d 4e 8a 42 55 46 30 BUF0...M1MN.BUF0 1ac0: 0b c6 01 4d 31 4d 58 8a 42 55 46 30 0b ce 01 4d ...M1MX.BUF0...M 1ad0: 31 4c 4e 8a 42 55 46 30 0b dc 01 4d 32 4d 4e 8a 1LN.BUF0...M2MN. 1ae0: 42 55 46 30 0b e0 01 4d 32 4d 58 8a 42 55 46 30 BUF0...M2MX.BUF0 1af0: 0b e8 01 4d 32 4c 4e 79 5e 2e 4d 43 48 43 50 58 ...M2LNy^.MCHCPX 1b00: 42 52 0a 1a 4d 31 4d 58 7a 0c 00 00 00 10 5e 2e BR..M1MXz.....^. 1b10: 4d 43 48 43 50 58 53 5a 60 72 4d 31 4d 58 60 4d MCHCPXSZ`rM1MX`M 1b20: 32 4d 4e 72 74 4d 32 4d 58 4d 32 4d 4e 00 01 4d 2MNrtM2MXM2MN..M 1b30: 32 4c 4e 74 4d 31 4d 58 01 4d 31 4d 58 79 5e 2e 2LNtM1MX.M1MXy^. 1b40: 4d 43 48 43 54 4c 55 44 0a 14 4d 31 4d 4e 72 74 MCHCTLUD..M1MNrt 1b50: 4d 31 4d 58 4d 31 4d 4e 00 01 4d 31 4c 4e a4 42 M1MXM1MN..M1LN.B 1b60: 55 46 30 14 47 28 5f 50 52 54 00 a0 45 0f 47 50 UF0.G(_PRT..E.GP 1b70: 49 43 a4 12 4d 0e 13 12 0b 04 0c ff ff 01 00 00 IC..M........... 1b80: 00 0a 10 12 0b 04 0c ff ff 02 00 00 00 0a 10 12 ................ 1b90: 0b 04 0c ff ff 07 00 00 00 0a 10 12 0b 04 0c ff ................ 1ba0: ff 19 00 00 00 0a 14 12 0b 04 0c ff ff 1a 00 00 ................ 1bb0: 00 0a 10 12 0b 04 0c ff ff 1a 00 01 00 0a 15 12 ................ 1bc0: 0c 04 0c ff ff 1a 00 0a 02 00 0a 12 12 0b 04 0c ................ 1bd0: ff ff 1b 00 00 00 0a 16 12 0b 04 0c ff ff 1c 00 ................ 1be0: 00 00 0a 11 12 0b 04 0c ff ff 1c 00 01 00 0a 10 ................ 1bf0: 12 0c 04 0c ff ff 1c 00 0a 02 00 0a 12 12 0c 04 ................ 1c00: 0c ff ff 1c 00 0a 03 00 0a 13 12 0b 04 0c ff ff ................ 1c10: 1d 00 00 00 0a 17 12 0b 04 0c ff ff 1d 00 01 00 ................ 1c20: 0a 13 12 0c 04 0c ff ff 1d 00 0a 02 00 0a 12 12 ................ 1c30: 0b 04 0c ff ff 1f 00 00 00 0a 13 12 0b 04 0c ff ................ 1c40: ff 1f 00 01 00 0a 13 12 0c 04 0c ff ff 1f 00 0a ................ 1c50: 02 00 0a 13 12 0c 04 0c ff ff 1f 00 0a 03 00 0a ................ 1c60: 10 a1 49 18 a4 12 45 18 13 12 13 04 0c ff ff 01 ..I...E......... 1c70: 00 00 5e 2e 4c 50 43 42 4c 4e 4b 41 00 12 13 04 ..^.LPCBLNKA.... 1c80: 0c ff ff 02 00 00 5e 2e 4c 50 43 42 4c 4e 4b 41 ......^.LPCBLNKA 1c90: 00 12 13 04 0c ff ff 07 00 00 5e 2e 4c 50 43 42 ..........^.LPCB 1ca0: 4c 4e 4b 41 00 12 13 04 0c ff ff 19 00 00 5e 2e LNKA..........^. 1cb0: 4c 50 43 42 4c 4e 4b 45 00 12 13 04 0c ff ff 1a LPCBLNKE........ 1cc0: 00 00 5e 2e 4c 50 43 42 4c 4e 4b 41 00 12 13 04 ..^.LPCBLNKA.... 1cd0: 0c ff ff 1a 00 01 5e 2e 4c 50 43 42 4c 4e 4b 46 ......^.LPCBLNKF 1ce0: 00 12 14 04 0c ff ff 1a 00 0a 02 5e 2e 4c 50 43 ...........^.LPC 1cf0: 42 4c 4e 4b 43 00 12 13 04 0c ff ff 1b 00 00 5e BLNKC..........^ 1d00: 2e 4c 50 43 42 4c 4e 4b 47 00 12 13 04 0c ff ff .LPCBLNKG....... 1d10: 1c 00 00 5e 2e 4c 50 43 42 4c 4e 4b 42 00 12 13 ...^.LPCBLNKB... 1d20: 04 0c ff ff 1c 00 01 5e 2e 4c 50 43 42 4c 4e 4b .......^.LPCBLNK 1d30: 41 00 12 14 04 0c ff ff 1c 00 0a 02 5e 2e 4c 50 A...........^.LP 1d40: 43 42 4c 4e 4b 43 00 12 14 04 0c ff ff 1c 00 0a CBLNKC.......... 1d50: 03 5e 2e 4c 50 43 42 4c 4e 4b 44 00 12 13 04 0c .^.LPCBLNKD..... 1d60: ff ff 1d 00 00 5e 2e 4c 50 43 42 4c 4e 4b 48 00 .....^.LPCBLNKH. 1d70: 12 13 04 0c ff ff 1d 00 01 5e 2e 4c 50 43 42 4c .........^.LPCBL 1d80: 4e 4b 44 00 12 14 04 0c ff ff 1d 00 0a 02 5e 2e NKD...........^. 1d90: 4c 50 43 42 4c 4e 4b 43 00 12 13 04 0c ff ff 1f LPCBLNKC........ 1da0: 00 00 5e 2e 4c 50 43 42 4c 4e 4b 44 00 12 13 04 ..^.LPCBLNKD.... 1db0: 0c ff ff 1f 00 01 5e 2e 4c 50 43 42 4c 4e 4b 44 ......^.LPCBLNKD 1dc0: 00 12 14 04 0c ff ff 1f 00 0a 02 5e 2e 4c 50 43 ...........^.LPC 1dd0: 42 4c 4e 4b 44 00 12 14 04 0c ff ff 1f 00 0a 03 BLNKD........... 1de0: 5e 2e 4c 50 43 42 4c 4e 4b 41 00 5b 82 40 14 50 ^.LPCBLNKA.[.@.P 1df0: 44 52 43 08 5f 48 49 44 0c 41 d0 0c 02 08 5f 55 DRC._HID.A...._U 1e00: 49 44 01 08 42 55 46 30 11 46 06 0a 62 86 09 00 ID..BUF0.F..b... 1e10: 01 00 00 00 00 00 40 00 00 86 09 00 01 00 00 00 ......@......... 1e20: 00 00 40 00 00 86 09 00 01 00 00 00 00 00 10 00 ..@............. 1e30: 00 86 09 00 01 00 00 00 00 00 10 00 00 86 09 00 ................ 1e40: 01 00 00 00 00 00 00 00 00 86 09 00 01 00 00 d2 ................ 1e50: fe 00 00 02 00 86 09 00 01 00 00 d4 fe 00 50 00 ..............P. 1e60: 00 86 09 00 01 00 50 d4 fe 00 b0 04 00 79 00 14 ......P......y.. 1e70: 4d 0b 5f 43 52 53 08 8a 42 55 46 30 0a 04 52 42 M._CRS..BUF0..RB 1e80: 52 30 79 5e 5e 2e 4c 50 43 42 52 43 42 41 0a 0e R0y^^.LPCBRCBA.. 1e90: 52 42 52 30 8a 42 55 46 30 0a 10 4d 42 52 30 79 RBR0.BUF0..MBR0y 1ea0: 5e 5e 2e 4d 43 48 43 4d 48 42 52 0a 0e 4d 42 52 ^^.MCHCMHBR..MBR 1eb0: 30 8a 42 55 46 30 0a 1c 44 42 52 30 79 5e 5e 2e 0.BUF0..DBR0y^^. 1ec0: 4d 43 48 43 44 49 42 52 0a 0c 44 42 52 30 8a 42 MCHCDIBR..DBR0.B 1ed0: 55 46 30 0a 28 45 42 52 30 79 5e 5e 2e 4d 43 48 UF0.(EBR0y^^.MCH 1ee0: 43 45 50 42 52 0a 0c 45 42 52 30 8a 42 55 46 30 CEPBR..EBR0.BUF0 1ef0: 0a 34 58 42 52 30 79 5e 5e 2e 4d 43 48 43 50 58 .4XBR0y^^.MCHCPX 1f00: 42 52 0a 1a 58 42 52 30 8a 42 55 46 30 0a 38 58 BR..XBR0.BUF0.8X 1f10: 53 5a 30 7a 0c 00 00 00 10 5e 5e 2e 4d 43 48 43 SZ0z.....^^.MCHC 1f20: 50 58 53 5a 58 53 5a 30 a4 42 55 46 30 5b 82 4d PXSZXSZ0.BUF0[.M 1f30: 50 50 45 47 50 08 5f 41 44 52 0c 00 00 01 00 14 PPEGP._ADR...... 1f40: 41 09 5f 50 52 54 00 a0 33 47 50 49 43 a4 12 2c A._PRT..3GPIC.., 1f50: 04 12 09 04 0b ff ff 00 00 0a 10 12 09 04 0b ff ................ 1f60: ff 01 00 0a 11 12 0a 04 0b ff ff 0a 02 00 0a 12 ................ 1f70: 12 0a 04 0b ff ff 0a 03 00 0a 13 a1 45 05 a4 12 ............E... 1f80: 41 05 04 12 12 04 0b ff ff 00 5e 5e 2e 4c 50 43 A.........^^.LPC 1f90: 42 4c 4e 4b 41 00 12 12 04 0b ff ff 01 5e 5e 2e BLNKA........^^. 1fa0: 4c 50 43 42 4c 4e 4b 42 00 12 13 04 0b ff ff 0a LPCBLNKB........ 1fb0: 02 5e 5e 2e 4c 50 43 42 4c 4e 4b 43 00 12 13 04 .^^.LPCBLNKC.... 1fc0: 0b ff ff 0a 03 5e 5e 2e 4c 50 43 42 4c 4e 4b 44 .....^^.LPCBLNKD 1fd0: 00 5b 82 49 46 56 47 41 5f 08 5f 41 44 52 00 08 .[.IFVGA_._ADR.. 1fe0: 53 57 49 54 01 08 43 52 54 41 01 08 4c 43 44 41 SWIT..CRTA..LCDA 1ff0: 01 08 54 56 41 41 01 08 56 4c 44 46 01 5b 80 56 ..TVAA..VLDF.[.V 2000: 49 44 53 02 00 0a c8 5b 81 0b 56 49 44 53 03 56 IDS....[..VIDS.V 2010: 44 49 44 20 14 09 5f 53 54 41 00 a4 0a 0f 08 5f DID .._STA....._ 2020: 50 53 43 00 14 0c 5f 50 53 30 00 70 00 5f 50 53 PSC..._PS0.p._PS 2030: 43 14 0c 5f 50 53 31 00 70 01 5f 50 53 43 14 0d C.._PS1.p._PSC.. 2040: 5f 50 53 33 00 70 0a 03 5f 50 53 43 14 10 5f 44 _PS3.p.._PSC.._D 2050: 4f 53 01 70 7b 68 0a 03 00 53 57 49 54 14 17 5f OS.p{h...SWIT.._ 2060: 44 4f 44 00 a4 12 0f 03 0c 00 01 01 00 0c 10 01 DOD............. 2070: 01 00 0b 00 02 5b 82 4d 08 43 52 54 5f 14 0a 5f .....[.M.CRT_.._ 2080: 41 44 52 00 a4 0b 00 01 14 41 06 5f 44 43 53 00 ADR......A._DCS. 2090: 5e 5e 5e 5e 2e 4c 50 43 42 50 48 53 53 0a 0c 70 ^^^^.LPCBPHSS..p 20a0: 43 41 44 4c 60 70 43 53 54 45 61 7b 60 0a 02 60 CADL`pCSTEa{`..` 20b0: 7b 61 0a 02 61 a0 08 60 70 01 43 52 54 41 a1 07 {a..a..`p.CRTA.. 20c0: 70 00 43 52 54 41 a0 13 43 52 54 41 a0 08 93 61 p.CRTA..CRTA...a 20d0: 0a 02 a4 0a 1f a1 04 a4 0a 1d a1 0f a0 08 93 61 ...............a 20e0: 0a 02 a4 0a 0f a1 04 a4 0a 0d 14 12 5f 44 47 53 ............_DGS 20f0: 00 a0 07 43 52 54 41 a4 01 a1 03 a4 00 14 06 5f ...CRTA........_ 2100: 44 53 53 01 5b 82 47 0e 4c 43 44 5f 14 0a 5f 41 DSS.[.G.LCD_.._A 2110: 44 52 00 a4 0b 10 01 14 4d 05 5f 44 43 53 00 5e DR......M._DCS.^ 2120: 5e 5e 5e 2e 4c 50 43 42 50 48 53 53 0a 0c 70 43 ^^^.LPCBPHSS..pC 2130: 41 44 4c 60 70 43 53 54 45 61 7b 60 01 60 7b 61 ADL`pCSTEa{`.`{a 2140: 01 61 a0 08 60 70 01 4c 43 44 41 a1 07 70 00 4c .a..`p.LCDA..p.L 2150: 43 44 41 a0 12 4c 43 44 41 a0 07 93 61 01 a4 0a CDA..LCDA...a... 2160: 1f a1 04 a4 0a 1d a1 0e a0 07 93 61 01 a4 0a 0f ...........a.... 2170: a1 04 a4 0a 0d 14 12 5f 44 47 53 00 a0 07 4c 43 ......._DGS...LC 2180: 44 41 a4 01 a1 03 a4 00 14 06 5f 44 53 53 01 14 DA........_DSS.. 2190: 1d 5f 42 43 4c 00 a4 12 15 0a 0a 46 0a 28 00 0a ._BCL......F.(.. 21a0: 0a 0a 14 0a 1e 0a 28 0a 32 0a 3c 0a 46 14 20 5f ......(.2.<.F. _ 21b0: 42 43 4d 01 78 68 0a 0a 60 61 70 61 5e 5e 5e 5e BCM.xh..`apa^^^^ 21c0: 2f 03 4c 50 43 42 45 43 30 5f 42 52 54 53 14 1e /.LPCBEC0_BRTS.. 21d0: 5f 42 51 43 00 77 5e 5e 5e 5e 2f 03 4c 50 43 42 _BQC.w^^^^/.LPCB 21e0: 45 43 30 5f 42 52 54 53 0a 0a 60 a4 60 5b 82 4d EC0_BRTS..`.`[.M 21f0: 08 54 56 5f 5f 14 0a 5f 41 44 52 00 a4 0b 00 02 .TV__.._ADR..... 2200: 14 41 06 5f 44 43 53 00 5e 5e 5e 5e 2e 4c 50 43 .A._DCS.^^^^.LPC 2210: 42 50 48 53 53 0a 0c 70 43 41 44 4c 60 70 43 53 BPHSS..pCADL`pCS 2220: 54 45 61 7b 60 0a 04 60 7b 61 0a 04 61 a0 08 60 TEa{`..`{a..a..` 2230: 70 01 54 56 41 41 a1 07 70 00 54 56 41 41 a0 13 p.TVAA..p.TVAA.. 2240: 54 56 41 41 a0 08 93 61 0a 04 a4 0a 1f a1 04 a4 TVAA...a........ 2250: 0a 1d a1 0f a0 08 93 61 0a 04 a4 0a 0f a1 04 a4 .......a........ 2260: 0a 0d 14 12 5f 44 47 53 00 a0 07 54 56 41 41 a4 ...._DGS...TVAA. 2270: 01 a1 03 a4 00 14 06 5f 44 53 53 01 14 49 10 44 ......._DSS..I.D 2280: 53 53 57 00 a0 4a 0e 93 53 57 49 54 00 5e 5e 5e SSW..J..SWIT.^^^ 2290: 2e 4c 50 43 42 50 48 53 53 0a 0c 70 43 41 44 4c .LPCBPHSS..pCADL 22a0: 60 70 43 53 54 45 61 a0 16 94 61 01 7b 60 61 56 `pCSTEa...a.{`aV 22b0: 4c 44 46 7b 56 4c 44 46 0a fe 56 4c 44 46 a0 43 LDF{VLDF..VLDF.C 22c0: 0a 56 4c 44 46 a0 27 93 60 0a 09 a0 0b 93 61 0a .VLDF.'.`.....a. 22d0: 08 53 54 42 4c 0a 02 a0 0a 93 61 01 53 54 42 4c .STBL.....a.STBL 22e0: 0a 03 a0 0a 93 61 0a 09 53 54 42 4c 01 a0 28 93 .....a..STBL..(. 22f0: 60 0a 0a a0 0b 93 61 0a 08 53 54 42 4c 0a 05 a0 `.....a..STBL... 2300: 0a 93 61 0a 02 53 54 42 4c 01 a0 0b 93 61 0a 0a ..a..STBL....a.. 2310: 53 54 42 4c 0a 04 a0 4b 04 93 60 0a 0b a0 0b 93 STBL...K..`..... 2320: 61 0a 08 53 54 42 4c 0a 02 a0 0b 93 61 0a 09 53 a..STBL.....a..S 2330: 54 42 4c 0a 05 a0 0a 93 61 01 53 54 42 4c 0a 03 TBL.....a.STBL.. 2340: a0 0b 93 61 0a 0a 53 54 42 4c 0a 04 a0 0a 93 61 ...a..STBL.....a 2350: 0a 02 53 54 42 4c 01 a0 0a 93 61 0a 0b 53 54 42 ..STBL....a..STB 2360: 4c 01 a1 0c 70 01 56 4c 44 46 53 54 42 4c 01 a1 L...p.VLDFSTBL.. 2370: 16 a0 14 93 53 57 49 54 01 5e 5e 5e 2e 4c 50 43 ....SWIT.^^^.LPC 2380: 42 50 48 53 53 01 14 45 0b 53 54 42 4c 01 a0 16 BPHSS..E.STBL... 2390: 93 68 01 70 00 43 52 54 41 70 01 4c 43 44 41 70 .h.p.CRTAp.LCDAp 23a0: 00 54 56 41 41 a0 17 93 68 0a 02 70 01 43 52 54 .TVAA...h..p.CRT 23b0: 41 70 00 4c 43 44 41 70 00 54 56 41 41 a0 17 93 Ap.LCDAp.TVAA... 23c0: 68 0a 03 70 01 43 52 54 41 70 01 4c 43 44 41 70 h..p.CRTAp.LCDAp 23d0: 00 54 56 41 41 a0 17 93 68 0a 04 70 00 43 52 54 .TVAA...h..p.CRT 23e0: 41 70 00 4c 43 44 41 70 01 54 56 41 41 a0 17 93 Ap.LCDAp.TVAA... 23f0: 68 0a 05 70 00 43 52 54 41 70 01 4c 43 44 41 70 h..p.CRTAp.LCDAp 2400: 01 54 56 41 41 a0 17 93 68 0a 06 70 01 43 52 54 .TVAA...h..p.CRT 2410: 41 70 00 4c 43 44 41 70 01 54 56 41 41 a0 17 93 Ap.LCDAp.TVAA... 2420: 68 0a 07 70 01 43 52 54 41 70 01 4c 43 44 41 70 h..p.CRTAp.LCDAp 2430: 01 54 56 41 41 86 56 47 41 5f 0a 80 5b 82 42 f8 .TVAA.VGA_..[.B. 2440: 47 46 58 30 08 5f 41 44 52 0c 00 00 02 00 14 10 GFX0._ADR....... 2450: 5f 44 4f 53 01 70 7b 68 0a 07 00 44 53 45 4e 14 _DOS.p{h...DSEN. 2460: 41 26 5f 44 4f 44 00 70 00 4e 44 49 44 a0 15 92 A&_DOD.p.NDID... 2470: 93 44 49 44 4c 00 70 53 44 44 4c 44 49 44 31 44 .DIDL.pSDDLDID1D 2480: 49 44 31 a0 15 92 93 44 44 4c 32 00 70 53 44 44 ID1....DDL2.pSDD 2490: 4c 44 49 44 32 44 49 44 32 a0 15 92 93 44 44 4c LDID2DID2....DDL 24a0: 33 00 70 53 44 44 4c 44 49 44 33 44 49 44 33 a0 3.pSDDLDID3DID3. 24b0: 15 92 93 44 44 4c 34 00 70 53 44 44 4c 44 49 44 ...DDL4.pSDDLDID 24c0: 34 44 49 44 34 a0 15 92 93 44 44 4c 35 00 70 53 4DID4....DDL5.pS 24d0: 44 44 4c 44 49 44 35 44 49 44 35 a0 2c 93 4e 44 DDLDID5DID5.,.ND 24e0: 49 44 01 08 54 4d 50 31 12 07 01 0c ff ff ff ff ID..TMP1........ 24f0: 70 7d 0c 00 00 01 00 44 49 44 31 00 88 54 4d 50 p}.....DID1..TMP 2500: 31 00 00 a4 54 4d 50 31 a0 46 04 93 4e 44 49 44 1...TMP1.F..NDID 2510: 0a 02 08 54 4d 50 32 12 0c 02 0c ff ff ff ff 0c ...TMP2......... 2520: ff ff ff ff 70 7d 0c 00 00 01 00 44 49 44 31 00 ....p}.....DID1. 2530: 88 54 4d 50 32 00 00 70 7d 0c 00 00 01 00 44 49 .TMP2..p}.....DI 2540: 44 32 00 88 54 4d 50 32 01 00 a4 54 4d 50 32 a0 D2..TMP2...TMP2. 2550: 4f 05 93 4e 44 49 44 0a 03 08 54 4d 50 33 12 11 O..NDID...TMP3.. 2560: 03 0c ff ff ff ff 0c ff ff ff ff 0c ff ff ff ff ................ 2570: 70 7d 0c 00 00 01 00 44 49 44 31 00 88 54 4d 50 p}.....DID1..TMP 2580: 33 00 00 70 7d 0c 00 00 01 00 44 49 44 32 00 88 3..p}.....DID2.. 2590: 54 4d 50 33 01 00 70 7d 0c 00 00 01 00 44 49 44 TMP3..p}.....DID 25a0: 33 00 88 54 4d 50 33 0a 02 00 a4 54 4d 50 33 a0 3..TMP3....TMP3. 25b0: 48 07 93 4e 44 49 44 0a 04 08 54 4d 50 34 12 16 H..NDID...TMP4.. 25c0: 04 0c ff ff ff ff 0c ff ff ff ff 0c ff ff ff ff ................ 25d0: 0c ff ff ff ff 70 7d 0c 00 00 01 00 44 49 44 31 .....p}.....DID1 25e0: 00 88 54 4d 50 34 00 00 70 7d 0c 00 00 01 00 44 ..TMP4..p}.....D 25f0: 49 44 32 00 88 54 4d 50 34 01 00 70 7d 0c 00 00 ID2..TMP4..p}... 2600: 01 00 44 49 44 33 00 88 54 4d 50 34 0a 02 00 70 ..DID3..TMP4...p 2610: 7d 0c 00 00 01 00 44 49 44 34 00 88 54 4d 50 34 }.....DID4..TMP4 2620: 0a 03 00 a4 54 4d 50 34 a0 41 09 94 4e 44 49 44 ....TMP4.A..NDID 2630: 0a 04 08 54 4d 50 35 12 1b 05 0c ff ff ff ff 0c ...TMP5......... 2640: ff ff ff ff 0c ff ff ff ff 0c ff ff ff ff 0c ff ................ 2650: ff ff ff 70 7d 0c 00 00 01 00 44 49 44 31 00 88 ...p}.....DID1.. 2660: 54 4d 50 35 00 00 70 7d 0c 00 00 01 00 44 49 44 TMP5..p}.....DID 2670: 32 00 88 54 4d 50 35 01 00 70 7d 0c 00 00 01 00 2..TMP5..p}..... 2680: 44 49 44 33 00 88 54 4d 50 35 0a 02 00 70 7d 0c DID3..TMP5...p}. 2690: 00 00 01 00 44 49 44 34 00 88 54 4d 50 35 0a 03 ....DID4..TMP5.. 26a0: 00 70 7d 0c 00 00 01 00 44 49 44 34 00 88 54 4d .p}.....DID4..TM 26b0: 50 35 0a 04 00 a4 54 4d 50 35 a4 12 05 01 0b 00 P5....TMP5...... 26c0: 04 5b 82 43 06 44 44 30 31 14 1c 5f 41 44 52 08 .[.C.DD01.._ADR. 26d0: a0 09 93 44 49 44 31 00 a4 01 a1 0b a4 7b 0b ff ...DID1......{.. 26e0: ff 44 49 44 31 00 14 0f 5f 44 43 53 00 a4 43 44 .DID1..._DCS..CD 26f0: 44 53 44 49 44 31 14 0f 5f 44 47 53 00 a4 4e 44 DSDID1.._DGS..ND 2700: 44 53 44 49 44 31 14 1f 5f 44 53 53 01 a0 18 93 DSDID1.._DSS.... 2710: 7b 68 0c 00 00 00 c0 00 0c 00 00 00 c0 70 4e 53 {h...........pNS 2720: 54 45 43 53 54 45 5b 82 44 06 44 44 30 32 14 1d TECSTE[.D.DD02.. 2730: 5f 41 44 52 08 a0 0a 93 44 49 44 32 00 a4 0a 02 _ADR....DID2.... 2740: a1 0b a4 7b 0b ff ff 44 49 44 32 00 14 0f 5f 44 ...{...DID2..._D 2750: 43 53 00 a4 43 44 44 53 44 49 44 32 14 0f 5f 44 CS..CDDSDID2.._D 2760: 47 53 00 a4 4e 44 44 53 44 49 44 32 14 1f 5f 44 GS..NDDSDID2.._D 2770: 53 53 01 a0 18 93 7b 68 0c 00 00 00 c0 00 0c 00 SS....{h........ 2780: 00 00 c0 70 4e 53 54 45 43 53 54 45 5b 82 41 07 ...pNSTECSTE[.A. 2790: 44 44 30 33 14 1d 5f 41 44 52 08 a0 0a 93 44 49 DD03.._ADR....DI 27a0: 44 33 00 a4 0a 03 a1 0b a4 7b 0b ff ff 44 49 44 D3.......{...DID 27b0: 33 00 14 1c 5f 44 43 53 00 a0 0a 93 44 49 44 33 3..._DCS....DID3 27c0: 00 a4 0a 0b a1 0a a4 43 44 44 53 44 49 44 33 14 .......CDDSDID3. 27d0: 0f 5f 44 47 53 00 a4 4e 44 44 53 44 49 44 33 14 ._DGS..NDDSDID3. 27e0: 1f 5f 44 53 53 01 a0 18 93 7b 68 0c 00 00 00 c0 ._DSS....{h..... 27f0: 00 0c 00 00 00 c0 70 4e 53 54 45 43 53 54 45 5b ......pNSTECSTE[ 2800: 82 41 07 44 44 30 34 14 1d 5f 41 44 52 08 a0 0a .A.DD04.._ADR... 2810: 93 44 49 44 34 00 a4 0a 04 a1 0b a4 7b 0b ff ff .DID4.......{... 2820: 44 49 44 34 00 14 1c 5f 44 43 53 00 a0 0a 93 44 DID4..._DCS....D 2830: 49 44 34 00 a4 0a 0b a1 0a a4 43 44 44 53 44 49 ID4.......CDDSDI 2840: 44 34 14 0f 5f 44 47 53 00 a4 4e 44 44 53 44 49 D4.._DGS..NDDSDI 2850: 44 34 14 1f 5f 44 53 53 01 a0 18 93 7b 68 0c 00 D4.._DSS....{h.. 2860: 00 00 c0 00 0c 00 00 00 c0 70 4e 53 54 45 43 53 .........pNSTECS 2870: 54 45 5b 82 41 07 44 44 30 35 14 1d 5f 41 44 52 TE[.A.DD05.._ADR 2880: 08 a0 0a 93 44 49 44 35 00 a4 0a 05 a1 0b a4 7b ....DID5.......{ 2890: 0b ff ff 44 49 44 35 00 14 1c 5f 44 43 53 00 a0 ...DID5..._DCS.. 28a0: 0a 93 44 49 44 35 00 a4 0a 0b a1 0a a4 43 44 44 ..DID5.......CDD 28b0: 53 44 49 44 35 14 0f 5f 44 47 53 00 a4 4e 44 44 SDID5.._DGS..NDD 28c0: 53 44 49 44 35 14 1f 5f 44 53 53 01 a0 18 93 7b SDID5.._DSS....{ 28d0: 68 0c 00 00 00 c0 00 0c 00 00 00 c0 70 4e 53 54 h...........pNST 28e0: 45 43 53 54 45 14 4e 06 53 44 44 4c 01 75 4e 44 ECSTE.N.SDDL.uND 28f0: 49 44 70 7b 68 0b 0f 0f 00 60 7d 0c 00 00 00 80 IDp{h....`}..... 2900: 60 61 a0 09 93 44 49 44 4c 60 a4 61 a0 09 93 44 `a...DIDL`.a...D 2910: 44 4c 32 60 a4 61 a0 09 93 44 44 4c 33 60 a4 61 DL2`.a...DDL3`.a 2920: a0 09 93 44 44 4c 34 60 a4 61 a0 09 93 44 44 4c ...DDL4`.a...DDL 2930: 35 60 a4 61 a0 09 93 44 44 4c 36 60 a4 61 a0 09 5`.a...DDL6`.a.. 2940: 93 44 44 4c 37 60 a4 61 a0 09 93 44 44 4c 38 60 .DDL7`.a...DDL8` 2950: a4 61 a4 00 14 4a 08 43 44 44 53 01 a0 0f 93 43 .a...J.CDDS....C 2960: 41 44 4c 7b 68 0b 0f 0f 00 a4 0a 1f a0 0f 93 43 ADL{h..........C 2970: 41 4c 32 7b 68 0b 0f 0f 00 a4 0a 1f a0 0f 93 43 AL2{h..........C 2980: 41 4c 33 7b 68 0b 0f 0f 00 a4 0a 1f a0 0f 93 43 AL3{h..........C 2990: 41 4c 34 7b 68 0b 0f 0f 00 a4 0a 1f a0 0f 93 43 AL4{h..........C 29a0: 41 4c 35 7b 68 0b 0f 0f 00 a4 0a 1f a0 0f 93 43 AL5{h..........C 29b0: 41 4c 36 7b 68 0b 0f 0f 00 a4 0a 1f a0 0f 93 43 AL6{h..........C 29c0: 41 4c 37 7b 68 0b 0f 0f 00 a4 0a 1f a0 0f 93 43 AL7{h..........C 29d0: 41 4c 38 7b 68 0b 0f 0f 00 a4 0a 1f a4 0a 1d 14 AL8{h........... 29e0: 41 08 4e 44 44 53 01 a0 0e 93 4e 41 44 4c 7b 68 A.NDDS....NADL{h 29f0: 0b 0f 0f 00 a4 01 a0 0e 93 4e 44 4c 32 7b 68 0b .........NDL2{h. 2a00: 0f 0f 00 a4 01 a0 0e 93 4e 44 4c 33 7b 68 0b 0f ........NDL3{h.. 2a10: 0f 00 a4 01 a0 0e 93 4e 44 4c 34 7b 68 0b 0f 0f .......NDL4{h... 2a20: 00 a4 01 a0 0e 93 4e 44 4c 35 7b 68 0b 0f 0f 00 ......NDL5{h.... 2a30: a4 01 a0 0e 93 4e 44 4c 36 7b 68 0b 0f 0f 00 a4 .....NDL6{h..... 2a40: 01 a0 0e 93 4e 44 4c 37 7b 68 0b 0f 0f 00 a4 01 ....NDL7{h...... 2a50: a0 0e 93 4e 44 4c 38 7b 68 0b 0f 0f 00 a4 01 a4 ...NDL8{h....... 2a60: 00 14 40 07 42 52 54 4e 09 a0 14 93 7b 44 49 44 ..@.BRTN....{DID 2a70: 31 0b 00 0f 00 0b 00 04 86 44 44 30 31 68 a0 14 1........DD01h.. 2a80: 93 7b 44 49 44 32 0b 00 0f 00 0b 00 04 86 44 44 .{DID2........DD 2a90: 30 32 68 a0 14 93 7b 44 49 44 33 0b 00 0f 00 0b 02h...{DID3..... 2aa0: 00 04 86 44 44 30 33 68 a0 14 93 7b 44 49 44 34 ...DD03h...{DID4 2ab0: 0b 00 0f 00 0b 00 04 86 44 44 30 34 68 a0 14 93 ........DD04h... 2ac0: 7b 44 49 44 35 0b 00 0f 00 0b 00 04 86 44 44 30 {DID5........DD0 2ad0: 35 68 10 24 5e 5e 50 43 49 30 5b 80 4d 43 48 50 5h.$^^PCI0[.MCHP 2ae0: 02 0a 40 0a c0 5b 81 10 4d 43 48 50 00 00 40 30 ..@..[..MCHP..@0 2af0: 54 41 53 4d 0a 00 06 5b 80 49 47 44 50 02 0a 40 TASM...[.IGDP..@ 2b00: 0a c0 5b 81 45 05 49 47 44 50 00 00 40 09 00 01 ..[.E.IGDP..@... 2b10: 47 49 56 44 01 00 02 47 55 4d 41 03 00 09 00 04 GIVD...GUMA..... 2b20: 47 4d 46 4e 01 00 1b 00 40 46 41 53 4c 45 08 00 GMFN....@FASLE.. 2b30: 18 47 53 53 45 01 47 53 53 42 0e 47 53 45 53 01 .GSSE.GSSB.GSES. 2b40: 00 30 00 08 43 44 56 4c 05 00 03 00 18 4c 42 50 .0..CDVL.....LBP 2b50: 43 08 00 30 41 53 4c 53 20 5b 80 49 47 44 4d 00 C..0ASLS [.IGDM. 2b60: 41 53 4c 42 0b 00 20 5b 81 4e 16 49 47 44 4d 00 ASLB.. [.N.IGDM. 2b70: 53 49 47 4e 40 08 53 49 5a 45 20 4f 56 45 52 20 SIGN@.SIZE OVER 2b80: 53 56 45 52 40 10 56 56 45 52 40 08 47 56 45 52 SVER@.VVER@.GVER 2b90: 40 08 4d 42 4f 58 20 00 40 52 44 52 44 59 20 43 @.MBOX .@RDRDY C 2ba0: 53 54 53 20 43 45 56 54 20 00 40 0a 44 49 44 4c STS CEVT .@.DIDL 2bb0: 20 44 44 4c 32 20 44 44 4c 33 20 44 44 4c 34 20 DDL2 DDL3 DDL4 2bc0: 44 44 4c 35 20 44 44 4c 36 20 44 44 4c 37 20 44 DDL5 DDL6 DDL7 D 2bd0: 44 4c 38 20 43 50 44 4c 20 43 50 4c 32 20 43 50 DL8 CPDL CPL2 CP 2be0: 4c 33 20 43 50 4c 34 20 43 50 4c 35 20 43 50 4c L3 CPL4 CPL5 CPL 2bf0: 36 20 43 50 4c 37 20 43 50 4c 38 20 43 41 44 4c 6 CPL7 CPL8 CADL 2c00: 20 43 41 4c 32 20 43 41 4c 33 20 43 41 4c 34 20 CAL2 CAL3 CAL4 2c10: 43 41 4c 35 20 43 41 4c 36 20 43 41 4c 37 20 43 CAL5 CAL6 CAL7 C 2c20: 41 4c 38 20 4e 41 44 4c 20 4e 44 4c 32 20 4e 44 AL8 NADL NDL2 ND 2c30: 4c 33 20 4e 44 4c 34 20 4e 44 4c 35 20 4e 44 4c L3 NDL4 NDL5 NDL 2c40: 36 20 4e 44 4c 37 20 4e 44 4c 38 20 41 53 4c 50 6 NDL7 NDL8 ASLP 2c50: 20 54 49 44 58 20 43 48 50 44 20 43 4c 49 44 20 TIDX CHPD CLID 2c60: 43 44 43 4b 20 53 58 53 57 20 45 56 54 53 20 43 CDCK SXSW EVTS C 2c70: 4e 4f 54 20 4e 52 44 59 20 00 40 1e 53 43 49 45 NOT NRDY .@.SCIE 2c80: 01 47 45 46 43 04 47 58 46 43 03 47 45 53 46 08 .GEFC.GXFC.GESF. 2c90: 00 10 50 41 52 4d 20 44 53 4c 50 20 00 40 7a 41 ..PARM DSLP .@zA 2ca0: 52 44 59 20 41 53 4c 43 20 54 43 48 45 20 41 4c RDY ASLC TCHE AL 2cb0: 53 49 20 42 43 4c 50 20 50 46 49 54 20 43 42 4c SI BCLP PFIT CBL 2cc0: 56 20 42 43 4c 4d 40 14 43 50 46 4d 20 00 40 5c V BCLM@.CPFM .@\ 2cd0: 47 56 44 31 80 00 0e 08 44 42 54 42 12 32 15 00 GVD1....DBTB.2.. 2ce0: 0a 07 0a 38 0b c0 01 0b 00 0e 0a 3f 0b c7 01 0b ...8.......?.... 2cf0: 07 0e 0b f8 01 0b 38 0e 0b c0 0f 00 00 00 00 00 ......8......... 2d00: 0b 00 70 0b 07 70 0b 38 70 0b c0 71 0b 00 7e 08 ..p..p.8p..q..~. 2d10: 43 44 43 54 12 23 03 12 0a 03 0a c8 0b 40 01 0b CDCT.#.......@.. 2d20: 90 01 12 0a 03 0a c8 0b 4d 01 0b 90 01 12 0a 03 ........M....... 2d30: 0a de 0b 4d 01 0b 7d 01 08 53 55 43 43 01 08 4e ...M..}..SUCC..N 2d40: 56 4c 44 0a 02 08 43 52 49 54 0a 04 08 4e 43 52 VLD...CRIT...NCR 2d50: 54 0a 06 14 4c 4a 47 53 43 49 08 14 44 1e 47 42 T...LJGSCI..D.GB 2d60: 44 41 08 a0 1a 93 47 45 53 46 00 70 0b 79 02 50 DA....GESF.p.y.P 2d70: 41 52 4d 70 00 47 45 53 46 a4 53 55 43 43 a0 1a ARMp.GESF.SUCC.. 2d80: 93 47 45 53 46 01 70 0b 40 02 50 41 52 4d 70 00 .GESF.p.@.PARMp. 2d90: 47 45 53 46 a4 53 55 43 43 a0 47 04 93 47 45 53 GESF.SUCC.G..GES 2da0: 46 0a 04 7b 50 41 52 4d 0c 00 00 ff ef 50 41 52 F..{PARM.....PAR 2db0: 4d 7b 50 41 52 4d 79 83 88 44 42 54 42 49 42 54 M{PARMy..DBTBIBT 2dc0: 54 00 0a 10 00 50 41 52 4d 7d 49 42 54 54 50 41 T....PARM}IBTTPA 2dd0: 52 4d 50 41 52 4d 70 00 47 45 53 46 a4 53 55 43 RMPARMp.GESF.SUC 2de0: 43 a0 4a 06 93 47 45 53 46 0a 05 70 49 50 53 43 C.J..GESF..pIPSC 2df0: 50 41 52 4d 7d 50 41 52 4d 79 49 50 41 54 0a 08 PARM}PARMyIPAT.. 2e00: 00 50 41 52 4d 72 50 41 52 4d 0b 00 01 50 41 52 .PARMrPARM...PAR 2e10: 4d 7d 50 41 52 4d 79 4c 49 44 53 0a 10 00 50 41 M}PARMyLIDS...PA 2e20: 52 4d 72 50 41 52 4d 0c 00 00 01 00 50 41 52 4d RMrPARM.....PARM 2e30: 7d 50 41 52 4d 79 49 42 49 41 0a 14 00 50 41 52 }PARMyIBIA...PAR 2e40: 4d 70 00 47 45 53 46 a4 53 55 43 43 a0 2d 93 47 Mp.GESF.SUCC.-.G 2e50: 45 53 46 0a 06 70 49 54 56 46 50 41 52 4d 7d 50 ESF..pITVFPARM}P 2e60: 41 52 4d 79 49 54 56 4d 0a 04 00 50 41 52 4d 70 ARMyITVM...PARMp 2e70: 00 47 45 53 46 a4 53 55 43 43 a0 4f 08 93 47 45 .GESF.SUCC.O..GE 2e80: 53 46 0a 07 70 47 49 56 44 50 41 52 4d 7f 50 41 SF..pGIVDPARM.PA 2e90: 52 4d 01 50 41 52 4d 7d 50 41 52 4d 79 47 4d 46 RM.PARM}PARMyGMF 2ea0: 4e 01 00 50 41 52 4d 7d 50 41 52 4d 0b 00 10 50 N..PARM}PARM...P 2eb0: 41 52 4d a0 16 49 44 4d 4d 7d 50 41 52 4d 79 49 ARM..IDMM}PARMyI 2ec0: 44 4d 53 0a 11 00 50 41 52 4d a1 12 7d 50 41 52 DMS...PARM..}PAR 2ed0: 4d 79 49 44 4d 53 0a 0d 00 50 41 52 4d 7d 79 83 MyIDMS...PARM}y. 2ee0: 88 83 88 43 44 43 54 48 56 43 4f 00 74 43 44 56 ...CDCTHVCO.tCDV 2ef0: 4c 01 00 00 0a 15 00 50 41 52 4d 50 41 52 4d 70 L......PARMPARMp 2f00: 01 47 45 53 46 a4 53 55 43 43 a0 2a 93 47 45 53 .GESF.SUCC.*.GES 2f10: 46 0a 0a 70 00 50 41 52 4d a0 10 49 53 53 43 7d F..p.PARM..ISSC} 2f20: 50 41 52 4d 0a 03 50 41 52 4d 70 00 47 45 53 46 PARM..PARMp.GESF 2f30: a4 53 55 43 43 70 00 47 45 53 46 a4 43 52 49 54 .SUCCp.GESF.CRIT 2f40: 14 41 28 53 42 43 42 08 a0 20 93 47 45 53 46 00 .A(SBCB.. .GESF. 2f50: 70 00 50 41 52 4d 70 0b 7d f7 50 41 52 4d 70 00 p.PARMp.}.PARMp. 2f60: 47 45 53 46 a4 53 55 43 43 a0 18 93 47 45 53 46 GESF.SUCC...GESF 2f70: 01 70 00 47 45 53 46 70 00 50 41 52 4d a4 53 55 .p.GESFp.PARM.SU 2f80: 43 43 a0 19 93 47 45 53 46 0a 03 70 00 47 45 53 CC...GESF..p.GES 2f90: 46 70 00 50 41 52 4d a4 53 55 43 43 a0 19 93 47 Fp.PARM.SUCC...G 2fa0: 45 53 46 0a 04 70 00 47 45 53 46 70 00 50 41 52 ESF..p.GESFp.PAR 2fb0: 4d a4 53 55 43 43 a0 19 93 47 45 53 46 0a 05 70 M.SUCC...GESF..p 2fc0: 00 47 45 53 46 70 00 50 41 52 4d a4 53 55 43 43 .GESFp.PARM.SUCC 2fd0: a0 37 93 47 45 53 46 0a 06 70 7b 50 41 52 4d 0a .7.GESF..p{PARM. 2fe0: 0f 00 49 54 56 46 70 7a 7b 50 41 52 4d 0a f0 00 ..ITVFpz{PARM... 2ff0: 0a 04 00 49 54 56 4d 70 00 47 45 53 46 70 00 50 ...ITVMp.GESFp.P 3000: 41 52 4d a4 53 55 43 43 a0 19 93 47 45 53 46 0a ARM.SUCC...GESF. 3010: 07 70 00 47 45 53 46 70 00 50 41 52 4d a4 53 55 .p.GESFp.PARM.SU 3020: 43 43 a0 19 93 47 45 53 46 0a 08 70 00 47 45 53 CC...GESF..p.GES 3030: 46 70 00 50 41 52 4d a4 53 55 43 43 a0 24 93 47 Fp.PARM.SUCC.$.G 3040: 45 53 46 0a 09 7b 50 41 52 4d 0a ff 49 42 54 54 ESF..{PARM..IBTT 3050: 70 00 47 45 53 46 70 00 50 41 52 4d a4 53 55 43 p.GESFp.PARM.SUC 3060: 43 a0 46 05 93 47 45 53 46 0a 0a 7b 50 41 52 4d C.F..GESF..{PARM 3070: 0a ff 49 50 53 43 a0 21 7b 7a 50 41 52 4d 0a 08 ..IPSC.!{zPARM.. 3080: 00 0a ff 00 7b 7a 50 41 52 4d 0a 08 00 0a ff 49 ....{zPARM.....I 3090: 50 41 54 76 49 50 41 54 7b 7a 50 41 52 4d 0a 14 PATvIPAT{zPARM.. 30a0: 00 0a 07 49 42 49 41 70 00 47 45 53 46 70 00 50 ...IBIAp.GESFp.P 30b0: 41 52 4d a4 53 55 43 43 a0 40 06 93 47 45 53 46 ARM.SUCC.@..GESF 30c0: 0a 0b 7b 7a 50 41 52 4d 01 00 01 49 46 31 45 a0 ..{zPARM...IF1E. 30d0: 21 7b 50 41 52 4d 0c 00 e0 01 00 00 7b 7a 50 41 !{PARM......{zPA 30e0: 52 4d 0a 0d 00 0a 0f 49 44 4d 53 70 00 49 44 4d RM.....IDMSp.IDM 30f0: 4d a1 16 7b 7a 50 41 52 4d 0a 11 00 0a 0f 49 44 M..{zPARM.....ID 3100: 4d 53 70 01 49 44 4d 4d 70 00 47 45 53 46 70 00 MSp.IDMMp.GESFp. 3110: 50 41 52 4d a4 53 55 43 43 a0 19 93 47 45 53 46 PARM.SUCC...GESF 3120: 0a 10 70 00 47 45 53 46 70 00 50 41 52 4d a4 53 ..p.GESFp.PARM.S 3130: 55 43 43 a0 1f 93 47 45 53 46 0a 11 7d 50 41 52 UCC...GESF..}PAR 3140: 4d 0b 00 01 50 41 52 4d 70 00 47 45 53 46 a4 53 M...PARMp.GESF.S 3150: 55 43 43 a0 49 04 93 47 45 53 46 0a 12 a0 26 7b UCC.I..GESF...&{ 3160: 50 41 52 4d 01 00 a0 10 93 7a 50 41 52 4d 01 00 PARM.....zPARM.. 3170: 01 70 01 49 53 53 43 a1 0c 70 00 47 45 53 46 a4 .p.ISSC..p.GESF. 3180: 43 52 49 54 a1 07 70 00 49 53 53 43 70 00 47 45 CRIT..p.ISSCp.GE 3190: 53 46 70 00 50 41 52 4d a4 53 55 43 43 a0 19 93 SFp.PARM.SUCC... 31a0: 47 45 53 46 0a 13 70 00 47 45 53 46 70 00 50 41 GESF..p.GESFp.PA 31b0: 52 4d a4 53 55 43 43 70 00 47 45 53 46 a4 53 55 RM.SUCCp.GESF.SU 31c0: 43 43 a0 11 93 47 45 46 43 0a 04 70 47 42 44 41 CC...GEFC..pGBDA 31d0: 47 58 46 43 a0 11 93 47 45 46 43 0a 06 70 53 42 GXFC...GEFC..pSB 31e0: 43 42 47 58 46 43 70 00 47 45 46 43 70 01 53 43 CBGXFCp.GEFCp.SC 31f0: 49 53 70 00 47 53 53 45 70 00 53 43 49 45 a4 00 ISp.GSSEp.SCIE.. 3200: 14 19 50 44 52 44 00 a0 0c 92 44 52 44 59 5b 22 ..PDRD....DRDY[" 3210: 41 53 4c 50 a4 92 44 52 44 59 14 1d 50 53 54 53 ASLP..DRDY..PSTS 3220: 00 a0 0e 94 43 53 54 53 0a 02 5b 22 41 53 4c 50 ....CSTS..["ASLP 3230: a4 93 43 53 54 53 0a 03 14 47 06 47 4e 4f 54 02 ..CSTS...G.GNOT. 3240: a0 07 50 44 52 44 a4 01 a0 07 50 53 54 53 a4 01 ..PDRD....PSTS.. 3250: 70 68 43 45 56 54 70 0a 03 43 53 54 53 a0 2c 90 phCEVTp..CSTS.,. 3260: 93 43 48 50 44 00 93 69 00 a0 18 91 94 4f 53 59 .CHPD..i.....OSY 3270: 53 0b d0 07 95 4f 53 59 53 0b d6 07 86 50 43 49 S....OSYS....PCI 3280: 30 69 a1 07 86 47 46 58 30 69 86 47 46 58 30 0a 0i...GFX0i.GFX0. 3290: 80 a0 0c 92 50 53 54 53 70 00 43 45 56 54 a4 00 ....PSTSp.CEVT.. 32a0: 14 13 47 48 44 53 01 70 68 54 49 44 58 a4 47 4e ..GHDS.phTIDX.GN 32b0: 4f 54 01 00 14 14 47 4c 49 44 01 70 68 43 4c 49 OT....GLID.phCLI 32c0: 44 a4 47 4e 4f 54 0a 02 00 14 15 47 44 43 4b 01 D.GNOT.....GDCK. 32d0: 70 68 43 44 43 4b a4 47 4e 4f 54 0a 04 0a 80 14 phCDCK.GNOT..... 32e0: 19 50 41 52 44 00 a0 0c 92 41 52 44 59 5b 22 41 .PARD....ARDY["A 32f0: 53 4c 50 a4 92 41 52 44 59 14 46 0c 41 49 4e 54 SLP..ARDY.F.AINT 3300: 02 a0 0e 92 7b 54 43 48 45 79 01 68 00 00 a4 01 ....{TCHEy.h.... 3310: a0 07 50 41 52 44 a4 01 a0 4c 05 93 68 0a 02 a0 ..PARD...L..h... 3320: 33 43 50 46 4d a0 0e 93 43 50 46 4d 01 70 0a 06 3CPFM...CPFM.p.. 3330: 50 46 49 54 a0 0f 93 43 50 46 4d 0a 06 70 0a 08 PFIT...CPFM..p.. 3340: 50 46 49 54 a0 0e 93 43 50 46 4d 0a 08 70 01 50 PFIT...CPFM..p.P 3350: 46 49 54 a1 0c 7f 50 46 49 54 0a 07 50 46 49 54 FIT...PFIT..PFIT 3360: 7d 50 46 49 54 0c 00 00 00 80 50 46 49 54 70 0a }PFIT.....PFITp. 3370: 04 41 53 4c 43 a1 42 04 a0 28 93 68 01 70 78 77 .ASLC.B..(.h.pxw 3380: 69 0a ff 00 0a 64 00 00 42 43 4c 50 7d 42 43 4c i....d..BCLP}BCL 3390: 50 0c 00 00 00 80 42 43 4c 50 70 0a 02 41 53 4c P.....BCLPp..ASL 33a0: 43 a1 16 a0 10 93 68 00 70 69 41 4c 53 49 70 01 C.....h.piALSIp. 33b0: 41 53 4c 43 a1 03 a4 01 70 00 4c 42 50 43 a4 00 ASLC....p.LBPC.. 33c0: 10 41 36 5c 00 5b 80 49 4f 5f 54 01 0b 00 08 0a .A6\.[.IO_T..... 33d0: 10 5b 81 0e 49 4f 5f 54 01 00 40 04 54 52 50 30 .[..IO_T..@.TRP0 33e0: 08 5b 80 50 4d 49 4f 01 0b 00 10 0a 80 5b 81 28 .[.PMIO......[.( 33f0: 50 4d 49 4f 01 00 40 15 00 08 00 02 41 43 50 57 PMIO..@.....ACPW 3400: 01 00 45 0b 00 01 47 50 45 43 01 00 4e 10 00 09 ..E...GPEC..N... 3410: 53 43 49 53 01 00 06 5b 80 47 50 49 4f 01 0b 80 SCIS...[.GPIO... 3420: 11 0a 3c 5b 81 40 0c 47 50 49 4f 01 47 55 30 30 ..<[.@.GPIO.GU00 3430: 08 47 55 30 31 08 47 55 30 32 08 47 55 30 33 08 .GU01.GU02.GU03. 3440: 47 49 4f 30 08 47 49 4f 31 08 47 49 4f 32 08 47 GIO0.GIO1.GIO2.G 3450: 49 4f 33 08 00 20 47 4c 30 30 08 47 4c 30 31 08 IO3.. GL00.GL01. 3460: 47 4c 30 32 08 00 03 47 50 32 37 01 47 50 32 38 GL02...GP27.GP28 3470: 01 00 03 00 40 04 47 42 30 30 08 47 42 30 31 08 ....@.GB00.GB01. 3480: 47 42 30 32 08 47 42 30 33 08 00 40 08 47 49 56 GB02.GB03..@.GIV 3490: 30 08 00 03 4c 50 4f 4c 01 00 04 47 49 56 32 08 0...LPOL...GIV2. 34a0: 47 49 56 33 08 47 55 30 34 08 47 55 30 35 08 47 GIV3.GU04.GU05.G 34b0: 55 30 36 08 47 55 30 37 08 47 49 4f 34 08 47 49 U06.GU07.GIO4.GI 34c0: 4f 35 08 47 49 4f 36 08 47 49 4f 37 08 00 05 47 O5.GIO6.GIO7...G 34d0: 50 33 37 01 00 02 47 4c 30 35 08 47 4c 30 36 08 P37...GL05.GL06. 34e0: 47 4c 30 37 08 5b 80 52 43 52 42 00 0c 00 c0 d1 GL07.[.RCRB..... 34f0: fe 0b 00 40 5b 81 48 05 52 43 52 42 13 00 80 00 ...@[.H.RCRB.... 3500: 08 00 80 00 10 00 80 02 02 48 50 41 53 02 00 05 .........HPAS... 3510: 48 50 41 45 01 00 48 09 00 01 50 41 54 44 01 53 HPAE..H...PATD.S 3520: 41 54 44 01 53 4d 42 44 01 48 44 41 44 01 00 0b ATD.SMBD.HDAD... 3530: 52 50 31 44 01 52 50 32 44 01 52 50 33 44 01 52 RP1D.RP2D.RP3D.R 3540: 50 34 44 01 52 50 35 44 01 52 50 36 44 01 08 5f P4D.RP5D.RP6D.._ 3550: 53 30 5f 12 05 03 00 00 00 08 5f 53 33 5f 12 07 S0_......._S3_.. 3560: 03 0a 05 0a 05 00 08 5f 53 34 5f 12 07 03 0a 06 ......._S4_..... 3570: 0a 06 00 08 5f 53 35 5f 12 07 03 0a 07 0a 07 00 ...._S5_........ 3580: 14 45 04 47 45 54 50 09 a0 0e 93 7b 68 0a 09 00 .E.GETP....{h... 3590: 00 a4 0c ff ff ff ff a0 0d 93 7b 68 0a 09 00 0a ..........{h.... 35a0: 08 a4 0b 84 03 7a 7b 68 0b 00 03 00 0a 08 60 7a .....z{h......`z 35b0: 7b 68 0b 00 30 00 0a 0c 61 a4 77 0a 1e 74 0a 09 {h..0...a.w..t.. 35c0: 72 60 61 00 00 00 14 30 47 44 4d 41 0d a0 23 68 r`a....0GDMA..#h 35d0: a0 07 90 69 6c a4 0a 14 a0 0e 90 6a 6c a4 77 74 ...il......jl.wt 35e0: 0a 04 6b 00 0a 0f 00 a4 77 74 0a 04 6b 00 0a 1e ..k.....wt..k... 35f0: 00 a4 0c ff ff ff ff 14 1f 47 45 54 54 09 a4 77 .........GETT..w 3600: 0a 1e 74 0a 09 72 7b 7a 68 0a 02 00 0a 03 00 7b ..t..r{zh......{ 3610: 68 0a 03 00 00 00 00 14 44 06 47 45 54 46 0b 08 h.......D.GETF.. 3620: 54 4d 50 46 00 a0 0c 68 7d 54 4d 50 46 01 54 4d TMPF...h}TMPF.TM 3630: 50 46 a0 11 7b 6a 0a 02 00 7d 54 4d 50 46 0a 02 PF..{j...}TMPF.. 3640: 54 4d 50 46 a0 0d 69 7d 54 4d 50 46 0a 04 54 4d TMPF..i}TMPF..TM 3650: 50 46 a0 11 7b 6a 0a 20 00 7d 54 4d 50 46 0a 08 PF..{j. .}TMPF.. 3660: 54 4d 50 46 a0 12 7b 6a 0b 00 40 00 7d 54 4d 50 TMPF..{j..@.}TMP 3670: 46 0a 10 54 4d 50 46 a4 54 4d 50 46 14 3d 53 45 F..TMPF.TMPF.=SE 3680: 54 50 0b a0 08 94 68 0a f0 a4 0a 08 a1 2d a0 27 TP....h......-.' 3690: 7b 69 0a 02 00 a0 10 90 92 94 68 0a 78 7b 6a 0a {i........h.x{j. 36a0: 02 00 a4 0b 01 23 a0 0f 90 92 94 68 0a b4 7b 6a .....#.....h..{j 36b0: 01 00 a4 0b 01 21 a4 0b 01 10 14 37 53 44 4d 41 .....!.....7SDMA 36c0: 09 a0 08 92 94 68 0a 14 a4 01 a0 09 92 94 68 0a .....h........h. 36d0: 1e a4 0a 02 a0 08 92 94 68 0a 2d a4 01 a0 09 92 ........h.-..... 36e0: 94 68 0a 3c a4 0a 02 a0 08 92 94 68 0a 5a a4 01 .h.<.......h.Z.. 36f0: a4 00 14 2f 53 45 54 54 0b a0 25 7b 69 0a 02 00 .../SETT..%{i... 3700: a0 0f 90 92 94 68 0a 78 7b 6a 0a 02 00 a4 0a 0b .....h.x{j...... 3710: a0 0e 90 92 94 68 0a b4 7b 6a 01 00 a4 0a 09 a4 .....h..{j...... 3720: 0a 04 5b 82 4b 04 48 44 45 46 08 5f 41 44 52 0c ..[.K.HDEF._ADR. 3730: 00 00 1b 00 5b 80 48 44 41 52 02 0a 4c 0a 10 5b ....[.HDAR..L..[ 3740: 81 22 48 44 41 52 02 44 43 4b 41 01 00 07 44 43 ."HDAR.DCKA...DC 3750: 4b 4d 01 00 06 44 43 4b 53 01 00 30 00 0f 50 4d KM...DCKS..0..PM 3760: 45 53 01 08 5f 50 52 57 12 06 02 0a 0d 0a 03 5b ES.._PRW.......[ 3770: 82 41 10 52 50 30 31 08 5f 41 44 52 0c 00 00 1c .A.RP01._ADR.... 3780: 00 5b 80 50 58 43 53 02 0a 40 0a c0 5b 81 45 04 .[.PXCS..@..[.E. 3790: 50 58 43 53 40 00 40 09 00 0d 4c 41 53 58 01 00 PXCS@.@...LASX.. 37a0: 32 41 42 50 58 01 00 02 50 44 43 58 01 00 02 50 2ABPX...PDCX...P 37b0: 44 53 58 01 00 01 4c 53 43 58 01 00 27 00 10 50 DSX...LSCX..'..P 37c0: 53 50 58 01 00 4f 3c 00 1e 48 50 53 58 01 50 4d SPX..O<..HPSX.PM 37d0: 53 58 01 5b 82 0b 50 58 53 58 08 5f 41 44 52 00 SX.[..PXSX._ADR. 37e0: 14 41 09 5f 50 52 54 00 a0 33 47 50 49 43 a4 12 .A._PRT..3GPIC.. 37f0: 2c 04 12 09 04 0b ff ff 00 00 0a 10 12 09 04 0b ,............... 3800: ff ff 01 00 0a 11 12 0a 04 0b ff ff 0a 02 00 0a ................ 3810: 12 12 0a 04 0b ff ff 0a 03 00 0a 13 a1 45 05 a4 .............E.. 3820: 12 41 05 04 12 12 04 0b ff ff 00 5e 5e 2e 4c 50 .A.........^^.LP 3830: 43 42 4c 4e 4b 41 00 12 12 04 0b ff ff 01 5e 5e CBLNKA........^^ 3840: 2e 4c 50 43 42 4c 4e 4b 42 00 12 13 04 0b ff ff .LPCBLNKB....... 3850: 0a 02 5e 5e 2e 4c 50 43 42 4c 4e 4b 43 00 12 13 ..^^.LPCBLNKC... 3860: 04 0b ff ff 0a 03 5e 5e 2e 4c 50 43 42 4c 4e 4b ......^^.LPCBLNK 3870: 44 00 5b 82 41 10 52 50 30 32 08 5f 41 44 52 0c D.[.A.RP02._ADR. 3880: 01 00 1c 00 5b 80 50 58 43 53 02 0a 40 0a c0 5b ....[.PXCS..@..[ 3890: 81 45 04 50 58 43 53 40 00 40 09 00 0d 4c 41 53 .E.PXCS@.@...LAS 38a0: 58 01 00 32 41 42 50 58 01 00 02 50 44 43 58 01 X..2ABPX...PDCX. 38b0: 00 02 50 44 53 58 01 00 01 4c 53 43 58 01 00 27 ..PDSX...LSCX..' 38c0: 00 10 50 53 50 58 01 00 4f 3c 00 1e 48 50 53 58 ..PSPX..O<..HPSX 38d0: 01 50 4d 53 58 01 5b 82 0b 50 58 53 58 08 5f 41 .PMSX.[..PXSX._A 38e0: 44 52 00 14 41 09 5f 50 52 54 00 a0 33 47 50 49 DR..A._PRT..3GPI 38f0: 43 a4 12 2c 04 12 09 04 0b ff ff 00 00 0a 11 12 C..,............ 3900: 09 04 0b ff ff 01 00 0a 12 12 0a 04 0b ff ff 0a ................ 3910: 02 00 0a 13 12 0a 04 0b ff ff 0a 03 00 0a 10 a1 ................ 3920: 45 05 a4 12 41 05 04 12 12 04 0b ff ff 00 5e 5e E...A.........^^ 3930: 2e 4c 50 43 42 4c 4e 4b 42 00 12 12 04 0b ff ff .LPCBLNKB....... 3940: 01 5e 5e 2e 4c 50 43 42 4c 4e 4b 43 00 12 13 04 .^^.LPCBLNKC.... 3950: 0b ff ff 0a 02 5e 5e 2e 4c 50 43 42 4c 4e 4b 44 .....^^.LPCBLNKD 3960: 00 12 13 04 0b ff ff 0a 03 5e 5e 2e 4c 50 43 42 .........^^.LPCB 3970: 4c 4e 4b 41 00 5b 82 4d 11 52 50 30 33 08 5f 41 LNKA.[.M.RP03._A 3980: 44 52 0c 02 00 1c 00 5b 80 50 58 43 53 02 0a 40 DR.....[.PXCS..@ 3990: 0a c0 5b 81 45 04 50 58 43 53 40 00 40 09 00 0d ..[.E.PXCS@.@... 39a0: 4c 41 53 58 01 00 32 41 42 50 58 01 00 02 50 44 LASX..2ABPX...PD 39b0: 43 58 01 00 02 50 44 53 58 01 00 01 4c 53 43 58 CX...PDSX...LSCX 39c0: 01 00 27 00 10 50 53 50 58 01 00 4f 3c 00 1e 48 ..'..PSPX..O<..H 39d0: 50 53 58 01 50 4d 53 58 01 5b 82 0b 50 58 53 58 PSX.PMSX.[..PXSX 39e0: 08 5f 41 44 52 00 08 2e 50 58 53 58 5f 52 4d 56 ._ADR...PXSX_RMV 39f0: 01 08 2e 50 58 53 58 5f 50 52 57 12 06 02 0a 09 ...PXSX_PRW..... 3a00: 0a 03 14 41 09 5f 50 52 54 00 a0 33 47 50 49 43 ...A._PRT..3GPIC 3a10: a4 12 2c 04 12 09 04 0b ff ff 00 00 0a 12 12 09 ..,............. 3a20: 04 0b ff ff 01 00 0a 13 12 0a 04 0b ff ff 0a 02 ................ 3a30: 00 0a 10 12 0a 04 0b ff ff 0a 03 00 0a 11 a1 45 ...............E 3a40: 05 a4 12 41 05 04 12 12 04 0b ff ff 00 5e 5e 2e ...A.........^^. 3a50: 4c 50 43 42 4c 4e 4b 43 00 12 12 04 0b ff ff 01 LPCBLNKC........ 3a60: 5e 5e 2e 4c 50 43 42 4c 4e 4b 44 00 12 13 04 0b ^^.LPCBLNKD..... 3a70: ff ff 0a 02 5e 5e 2e 4c 50 43 42 4c 4e 4b 41 00 ....^^.LPCBLNKA. 3a80: 12 13 04 0b ff ff 0a 03 5e 5e 2e 4c 50 43 42 4c ........^^.LPCBL 3a90: 4e 4b 42 00 5b 82 4f 11 52 50 30 34 08 5f 41 44 NKB.[.O.RP04._AD 3aa0: 52 0c 03 00 1c 00 5b 80 50 58 43 53 02 0a 40 0a R.....[.PXCS..@. 3ab0: c0 5b 81 45 04 50 58 43 53 40 00 40 09 00 0d 4c .[.E.PXCS@.@...L 3ac0: 41 53 58 01 00 32 41 42 50 58 01 00 02 50 44 43 ASX..2ABPX...PDC 3ad0: 58 01 00 02 50 44 53 58 01 00 01 4c 53 43 58 01 X...PDSX...LSCX. 3ae0: 00 27 00 10 50 53 50 58 01 00 4f 3c 00 1e 48 50 .'..PSPX..O<..HP 3af0: 53 58 01 50 4d 53 58 01 5b 82 29 50 58 53 58 08 SX.PMSX.[.)PXSX. 3b00: 5f 41 44 52 00 14 1d 5f 50 52 57 00 a0 0d 57 4b _ADR..._PRW...WK 3b10: 4c 4e a4 12 06 02 0a 09 0a 03 a1 08 a4 12 05 02 LN.............. 3b20: 0a 09 00 14 41 09 5f 50 52 54 00 a0 33 47 50 49 ....A._PRT..3GPI 3b30: 43 a4 12 2c 04 12 09 04 0b ff ff 00 00 0a 13 12 C..,............ 3b40: 09 04 0b ff ff 01 00 0a 10 12 0a 04 0b ff ff 0a ................ 3b50: 02 00 0a 11 12 0a 04 0b ff ff 0a 03 00 0a 12 a1 ................ 3b60: 45 05 a4 12 41 05 04 12 12 04 0b ff ff 00 5e 5e E...A.........^^ 3b70: 2e 4c 50 43 42 4c 4e 4b 44 00 12 12 04 0b ff ff .LPCBLNKD....... 3b80: 01 5e 5e 2e 4c 50 43 42 4c 4e 4b 41 00 12 13 04 .^^.LPCBLNKA.... 3b90: 0b ff ff 0a 02 5e 5e 2e 4c 50 43 42 4c 4e 4b 42 .....^^.LPCBLNKB 3ba0: 00 12 13 04 0b ff ff 0a 03 5e 5e 2e 4c 50 43 42 .........^^.LPCB 3bb0: 4c 4e 4b 43 00 5b 82 41 10 52 50 30 35 08 5f 41 LNKC.[.A.RP05._A 3bc0: 44 52 0c 04 00 1c 00 5b 80 50 58 43 53 02 0a 40 DR.....[.PXCS..@ 3bd0: 0a c0 5b 81 45 04 50 58 43 53 40 00 40 09 00 0d ..[.E.PXCS@.@... 3be0: 4c 41 53 58 01 00 32 41 42 50 58 01 00 02 50 44 LASX..2ABPX...PD 3bf0: 43 58 01 00 02 50 44 53 58 01 00 01 4c 53 43 58 CX...PDSX...LSCX 3c00: 01 00 27 00 10 50 53 50 58 01 00 4f 3c 00 1e 48 ..'..PSPX..O<..H 3c10: 50 53 58 01 50 4d 53 58 01 5b 82 0b 50 58 53 58 PSX.PMSX.[..PXSX 3c20: 08 5f 41 44 52 00 14 41 09 5f 50 52 54 00 a0 33 ._ADR..A._PRT..3 3c30: 47 50 49 43 a4 12 2c 04 12 09 04 0b ff ff 00 00 GPIC..,......... 3c40: 0a 10 12 09 04 0b ff ff 01 00 0a 11 12 0a 04 0b ................ 3c50: ff ff 0a 02 00 0a 12 12 0a 04 0b ff ff 0a 03 00 ................ 3c60: 0a 13 a1 45 05 a4 12 41 05 04 12 12 04 0b ff ff ...E...A........ 3c70: 00 5e 5e 2e 4c 50 43 42 4c 4e 4b 41 00 12 12 04 .^^.LPCBLNKA.... 3c80: 0b ff ff 01 5e 5e 2e 4c 50 43 42 4c 4e 4b 42 00 ....^^.LPCBLNKB. 3c90: 12 13 04 0b ff ff 0a 02 5e 5e 2e 4c 50 43 42 4c ........^^.LPCBL 3ca0: 4e 4b 43 00 12 13 04 0b ff ff 0a 03 5e 5e 2e 4c NKC.........^^.L 3cb0: 50 43 42 4c 4e 4b 44 00 5b 82 41 10 52 50 30 36 PCBLNKD.[.A.RP06 3cc0: 08 5f 41 44 52 0c 05 00 1c 00 5b 80 50 58 43 53 ._ADR.....[.PXCS 3cd0: 02 0a 40 0a c0 5b 81 45 04 50 58 43 53 40 00 40 ..@..[.E.PXCS@.@ 3ce0: 09 00 0d 4c 41 53 58 01 00 32 41 42 50 58 01 00 ...LASX..2ABPX.. 3cf0: 02 50 44 43 58 01 00 02 50 44 53 58 01 00 01 4c .PDCX...PDSX...L 3d00: 53 43 58 01 00 27 00 10 50 53 50 58 01 00 4f 3c SCX..'..PSPX..O< 3d10: 00 1e 48 50 53 58 01 50 4d 53 58 01 5b 82 0b 50 ..HPSX.PMSX.[..P 3d20: 58 53 58 08 5f 41 44 52 00 14 41 09 5f 50 52 54 XSX._ADR..A._PRT 3d30: 00 a0 33 47 50 49 43 a4 12 2c 04 12 09 04 0b ff ..3GPIC..,...... 3d40: ff 00 00 0a 11 12 09 04 0b ff ff 01 00 0a 12 12 ................ 3d50: 0a 04 0b ff ff 0a 02 00 0a 13 12 0a 04 0b ff ff ................ 3d60: 0a 03 00 0a 10 a1 45 05 a4 12 41 05 04 12 12 04 ......E...A..... 3d70: 0b ff ff 00 5e 5e 2e 4c 50 43 42 4c 4e 4b 42 00 ....^^.LPCBLNKB. 3d80: 12 12 04 0b ff ff 01 5e 5e 2e 4c 50 43 42 4c 4e .......^^.LPCBLN 3d90: 4b 43 00 12 13 04 0b ff ff 0a 02 5e 5e 2e 4c 50 KC.........^^.LP 3da0: 43 42 4c 4e 4b 44 00 12 13 04 0b ff ff 0a 03 5e CBLNKD.........^ 3db0: 5e 2e 4c 50 43 42 4c 4e 4b 41 00 5b 82 4d 06 55 ^.LPCBLNKA.[.M.U 3dc0: 53 42 31 08 5f 41 44 52 0c 00 00 1d 00 5b 80 55 SB1._ADR.....[.U 3dd0: 31 43 53 02 0a c4 0a 04 5b 81 0b 55 31 43 53 03 1CS.....[..U1CS. 3de0: 55 31 45 4e 02 08 5f 50 52 57 12 06 02 0a 03 0a U1EN.._PRW...... 3df0: 03 14 24 5f 50 53 57 01 a0 15 68 70 01 41 43 50 ..$_PSW...hp.ACP 3e00: 57 a0 0c 41 43 50 57 70 0a 03 55 31 45 4e a1 07 W..ACPWp..U1EN.. 3e10: 70 00 55 31 45 4e 14 09 5f 53 33 44 00 a4 0a 02 p.U1EN.._S3D.... 3e20: 14 09 5f 53 34 44 00 a4 0a 02 5b 82 4c 06 55 53 .._S4D....[.L.US 3e30: 42 32 08 5f 41 44 52 0c 01 00 1d 00 5b 80 55 32 B2._ADR.....[.U2 3e40: 43 53 02 0a c4 0a 04 5b 81 0b 55 32 43 53 03 55 CS.....[..U2CS.U 3e50: 32 45 4e 02 08 5f 50 52 57 12 06 02 0a 04 0a 03 2EN.._PRW....... 3e60: 14 23 5f 50 53 57 01 a0 14 68 70 01 41 43 50 57 .#_PSW...hp.ACPW 3e70: a0 0b 41 43 50 57 70 01 55 32 45 4e a1 07 70 00 ..ACPWp.U2EN..p. 3e80: 55 32 45 4e 14 09 5f 53 33 44 00 a4 0a 02 14 09 U2EN.._S3D...... 3e90: 5f 53 34 44 00 a4 0a 02 5b 82 4d 06 55 53 42 33 _S4D....[.M.USB3 3ea0: 08 5f 41 44 52 0c 02 00 1d 00 5b 80 55 32 43 53 ._ADR.....[.U2CS 3eb0: 02 0a c4 0a 04 5b 81 0b 55 32 43 53 03 55 33 45 .....[..U2CS.U3E 3ec0: 4e 02 08 5f 50 52 57 12 06 02 0a 0c 0a 03 14 24 N.._PRW........$ 3ed0: 5f 50 53 57 01 a0 15 68 70 01 41 43 50 57 a0 0c _PSW...hp.ACPW.. 3ee0: 41 43 50 57 70 0a 03 55 33 45 4e a1 07 70 00 55 ACPWp..U3EN..p.U 3ef0: 33 45 4e 14 09 5f 53 33 44 00 a4 0a 02 14 09 5f 3EN.._S3D......_ 3f00: 53 34 44 00 a4 0a 02 5b 82 4d 06 55 53 42 34 08 S4D....[.M.USB4. 3f10: 5f 41 44 52 0c 00 00 1a 00 5b 80 55 34 43 53 02 _ADR.....[.U4CS. 3f20: 0a c4 0a 04 5b 81 0b 55 34 43 53 03 55 34 45 4e ....[..U4CS.U4EN 3f30: 02 08 5f 50 52 57 12 06 02 0a 0e 0a 03 14 24 5f .._PRW........$_ 3f40: 50 53 57 01 a0 15 68 70 01 41 43 50 57 a0 0c 41 PSW...hp.ACPW..A 3f50: 43 50 57 70 0a 03 55 34 45 4e a1 07 70 00 55 34 CPWp..U4EN..p.U4 3f60: 45 4e 14 09 5f 53 33 44 00 a4 0a 02 14 09 5f 53 EN.._S3D......_S 3f70: 34 44 00 a4 0a 02 5b 82 41 06 55 53 42 35 08 5f 4D....[.A.USB5._ 3f80: 41 44 52 0c 01 00 1a 00 5b 80 55 35 43 53 02 0a ADR.....[.U5CS.. 3f90: c4 0a 04 5b 81 0b 55 35 43 53 03 55 35 45 4e 02 ...[..U5CS.U5EN. 3fa0: 14 24 5f 50 53 57 01 a0 15 68 70 01 41 43 50 57 .$_PSW...hp.ACPW 3fb0: a0 0c 41 43 50 57 70 0a 03 55 35 45 4e a1 07 70 ..ACPWp..U5EN..p 3fc0: 00 55 35 45 4e 14 09 5f 53 33 44 00 a4 0a 02 14 .U5EN.._S3D..... 3fd0: 09 5f 53 34 44 00 a4 0a 02 5b 82 4b 0a 45 48 43 ._S4D....[.K.EHC 3fe0: 31 08 5f 41 44 52 0c 07 00 1d 00 5b 80 55 37 43 1._ADR.....[.U7C 3ff0: 53 02 0a 54 0a 04 5b 81 0d 55 37 43 53 03 00 0f S..T..[..U7CS... 4000: 50 4d 45 53 01 5b 82 4f 05 48 55 42 37 08 5f 41 PMES.[.O.HUB7._A 4010: 44 52 00 5b 82 0b 50 52 54 31 08 5f 41 44 52 01 DR.[..PRT1._ADR. 4020: 5b 82 0c 50 52 54 32 08 5f 41 44 52 0a 02 5b 82 [..PRT2._ADR..[. 4030: 0c 50 52 54 33 08 5f 41 44 52 0a 03 5b 82 0c 50 .PRT3._ADR..[..P 4040: 52 54 34 08 5f 41 44 52 0a 04 5b 82 0c 50 52 54 RT4._ADR..[..PRT 4050: 35 08 5f 41 44 52 0a 05 5b 82 0c 50 52 54 36 08 5._ADR..[..PRT6. 4060: 5f 41 44 52 0a 06 08 5f 50 52 57 12 06 02 0a 0d _ADR..._PRW..... 4070: 0a 03 14 09 5f 53 33 44 00 a4 0a 02 14 09 5f 53 ...._S3D......_S 4080: 34 44 00 a4 0a 02 5b 82 4f 08 45 48 43 32 08 5f 4D....[.O.EHC2._ 4090: 41 44 52 0c 07 00 1a 00 5b 80 55 46 43 53 02 0a ADR.....[.UFCS.. 40a0: 54 0a 04 5b 81 0d 55 46 43 53 03 00 0f 50 4d 45 T..[..UFCS...PME 40b0: 53 01 5b 82 43 04 48 55 42 37 08 5f 41 44 52 00 S.[.C.HUB7._ADR. 40c0: 5b 82 0b 50 52 54 31 08 5f 41 44 52 01 5b 82 0c [..PRT1._ADR.[.. 40d0: 50 52 54 32 08 5f 41 44 52 0a 02 5b 82 0c 50 52 PRT2._ADR..[..PR 40e0: 54 33 08 5f 41 44 52 0a 03 5b 82 0c 50 52 54 34 T3._ADR..[..PRT4 40f0: 08 5f 41 44 52 0a 04 08 5f 50 52 57 12 06 02 0a ._ADR..._PRW.... 4100: 0d 0a 03 14 09 5f 53 33 44 00 a4 0a 02 14 09 5f ....._S3D......_ 4110: 53 34 44 00 a4 0a 02 5b 82 4a 06 50 43 49 42 08 S4D....[.J.PCIB. 4120: 5f 41 44 52 0c 00 00 1e 00 14 49 05 5f 50 52 54 _ADR......I._PRT 4130: 00 a0 21 47 50 49 43 a4 12 1a 02 12 0b 04 0c ff ..!GPIC......... 4140: ff 06 00 00 00 0a 16 12 0b 04 0c ff ff 06 00 01 ................ 4150: 00 0a 17 a1 2f a4 12 2c 02 12 14 04 0c ff ff 06 ..../..,........ 4160: 00 00 5e 5e 2e 4c 50 43 42 4c 4e 4b 47 00 12 14 ..^^.LPCBLNKG... 4170: 04 0c ff ff 06 00 01 5e 5e 2e 4c 50 43 42 4c 4e .......^^.LPCBLN 4180: 4b 48 00 5b 82 8d 2e 01 4c 50 43 42 08 5f 41 44 KH.[....LPCB._AD 4190: 52 0c 00 00 1f 00 5b 80 4c 50 43 30 02 0a 40 0a R.....[.LPC0..@. 41a0: c0 5b 81 4d 07 4c 50 43 30 00 00 40 10 50 41 52 .[.M.LPC0..@.PAR 41b0: 43 08 50 42 52 43 08 50 43 52 43 08 50 44 52 43 C.PBRC.PCRC.PDRC 41c0: 08 00 20 50 45 52 43 08 50 46 52 43 08 50 47 52 .. PERC.PFRC.PGR 41d0: 43 08 50 48 52 43 08 00 40 0a 43 4d 41 52 03 00 C.PHRC..@.CMAR.. 41e0: 01 43 4d 42 52 03 00 01 4c 50 54 52 02 00 06 43 .CMBR...LPTR...C 41f0: 4d 41 44 01 43 4d 42 44 01 4c 50 54 44 01 46 44 MAD.CMBD.LPTD.FD 4200: 44 44 01 00 2c 49 4f 52 32 10 00 02 4c 47 52 4d DD..,IOR2...LGRM 4210: 06 00 48 32 52 41 45 4e 01 00 0d 52 43 42 41 12 ..H2RAEN...RCBA. 4220: 5b 80 53 4d 49 30 01 0c 00 fe 00 00 0c 02 00 00 [.SMI0.......... 4230: 00 5b 81 0b 53 4d 49 30 00 53 4d 49 43 08 5b 80 .[..SMI0.SMIC.[. 4240: 53 4d 49 31 00 0c bd 2e 6e bf 0c 90 00 00 00 5b SMI1....n......[ 4250: 81 16 53 4d 49 31 00 42 43 4d 44 08 44 49 44 5f ..SMI1.BCMD.DID_ 4260: 20 49 4e 46 4f 40 40 5b 81 15 53 4d 49 31 00 01 INFO@@[..SMI1.. 4270: 01 00 00 28 49 4e 46 5f 08 49 4e 46 31 20 5b 01 ...(INF_.INF1 [. 4280: 50 53 4d 58 00 14 27 50 48 53 53 01 5b 23 50 53 PSMX..'PHSS.[#PS 4290: 4d 58 ff ff 70 0a 80 42 43 4d 44 70 68 44 49 44 MX..p..BCMDphDID 42a0: 5f 70 00 53 4d 49 43 5b 27 50 53 4d 58 5b 82 41 _p.SMIC['PSMX[.A 42b0: 0a 4c 4e 4b 41 08 5f 48 49 44 0c 41 d0 0c 0f 08 .LNKA._HID.A.... 42c0: 5f 55 49 44 01 14 0d 5f 44 49 53 08 70 0a 80 50 _UID..._DIS.p..P 42d0: 41 52 43 08 5f 50 52 53 11 09 0a 06 23 fa d4 18 ARC._PRS....#... 42e0: 79 00 14 38 5f 43 52 53 08 08 52 54 4c 41 11 09 y..8_CRS..RTLA.. 42f0: 0a 06 23 00 00 18 79 00 8b 52 54 4c 41 01 49 52 ..#...y..RTLA.IR 4300: 51 30 70 00 49 52 51 30 79 01 7b 50 41 52 43 0a Q0p.IRQ0y.{PARC. 4310: 0f 00 49 52 51 30 a4 52 54 4c 41 14 1b 5f 53 52 ..IRQ0.RTLA.._SR 4320: 53 09 8b 68 01 49 52 51 30 82 49 52 51 30 60 76 S..h.IRQ0.IRQ0`v 4330: 60 70 60 50 41 52 43 14 18 5f 53 54 41 08 a0 0c `p`PARC.._STA... 4340: 7b 50 41 52 43 0a 80 00 a4 0a 09 a1 04 a4 0a 0b {PARC........... 4350: 5b 82 42 0a 4c 4e 4b 42 08 5f 48 49 44 0c 41 d0 [.B.LNKB._HID.A. 4360: 0c 0f 08 5f 55 49 44 0a 02 14 0d 5f 44 49 53 08 ..._UID...._DIS. 4370: 70 0a 80 50 42 52 43 08 5f 50 52 53 11 09 0a 06 p..PBRC._PRS.... 4380: 23 fa d8 18 79 00 14 38 5f 43 52 53 08 08 52 54 #...y..8_CRS..RT 4390: 4c 42 11 09 0a 06 23 00 00 18 79 00 8b 52 54 4c LB....#...y..RTL 43a0: 42 01 49 52 51 30 70 00 49 52 51 30 79 01 7b 50 B.IRQ0p.IRQ0y.{P 43b0: 42 52 43 0a 0f 00 49 52 51 30 a4 52 54 4c 42 14 BRC...IRQ0.RTLB. 43c0: 1b 5f 53 52 53 09 8b 68 01 49 52 51 30 82 49 52 ._SRS..h.IRQ0.IR 43d0: 51 30 60 76 60 70 60 50 42 52 43 14 18 5f 53 54 Q0`v`p`PBRC.._ST 43e0: 41 08 a0 0c 7b 50 42 52 43 0a 80 00 a4 0a 09 a1 A...{PBRC....... 43f0: 04 a4 0a 0b 5b 82 42 0a 4c 4e 4b 43 08 5f 48 49 ....[.B.LNKC._HI 4400: 44 0c 41 d0 0c 0f 08 5f 55 49 44 0a 03 14 0d 5f D.A...._UID...._ 4410: 44 49 53 08 70 0a 80 50 43 52 43 08 5f 50 52 53 DIS.p..PCRC._PRS 4420: 11 09 0a 06 23 fa d4 18 79 00 14 38 5f 43 52 53 ....#...y..8_CRS 4430: 08 08 52 54 4c 43 11 09 0a 06 23 00 00 18 79 00 ..RTLC....#...y. 4440: 8b 52 54 4c 43 01 49 52 51 30 70 00 49 52 51 30 .RTLC.IRQ0p.IRQ0 4450: 79 01 7b 50 43 52 43 0a 0f 00 49 52 51 30 a4 52 y.{PCRC...IRQ0.R 4460: 54 4c 43 14 1b 5f 53 52 53 09 8b 68 01 49 52 51 TLC.._SRS..h.IRQ 4470: 30 82 49 52 51 30 60 76 60 70 60 50 43 52 43 14 0.IRQ0`v`p`PCRC. 4480: 18 5f 53 54 41 08 a0 0c 7b 50 43 52 43 0a 80 00 ._STA...{PCRC... 4490: a4 0a 09 a1 04 a4 0a 0b 5b 82 42 0a 4c 4e 4b 44 ........[.B.LNKD 44a0: 08 5f 48 49 44 0c 41 d0 0c 0f 08 5f 55 49 44 0a ._HID.A...._UID. 44b0: 04 14 0d 5f 44 49 53 08 70 0a 80 50 44 52 43 08 ..._DIS.p..PDRC. 44c0: 5f 50 52 53 11 09 0a 06 23 fa d8 18 79 00 14 38 _PRS....#...y..8 44d0: 5f 43 52 53 08 08 52 54 4c 44 11 09 0a 06 23 00 _CRS..RTLD....#. 44e0: 00 18 79 00 8b 52 54 4c 44 01 49 52 51 30 70 00 ..y..RTLD.IRQ0p. 44f0: 49 52 51 30 79 01 7b 50 44 52 43 0a 0f 00 49 52 IRQ0y.{PDRC...IR 4500: 51 30 a4 52 54 4c 44 14 1b 5f 53 52 53 09 8b 68 Q0.RTLD.._SRS..h 4510: 01 49 52 51 30 82 49 52 51 30 60 76 60 70 60 50 .IRQ0.IRQ0`v`p`P 4520: 44 52 43 14 18 5f 53 54 41 08 a0 0c 7b 50 44 52 DRC.._STA...{PDR 4530: 43 0a 80 00 a4 0a 09 a1 04 a4 0a 0b 5b 82 42 0a C...........[.B. 4540: 4c 4e 4b 45 08 5f 48 49 44 0c 41 d0 0c 0f 08 5f LNKE._HID.A...._ 4550: 55 49 44 0a 05 14 0d 5f 44 49 53 08 70 0a 80 50 UID...._DIS.p..P 4560: 45 52 43 08 5f 50 52 53 11 09 0a 06 23 fa d4 18 ERC._PRS....#... 4570: 79 00 14 38 5f 43 52 53 08 08 52 54 4c 45 11 09 y..8_CRS..RTLE.. 4580: 0a 06 23 00 00 18 79 00 8b 52 54 4c 45 01 49 52 ..#...y..RTLE.IR 4590: 51 30 70 00 49 52 51 30 79 01 7b 50 45 52 43 0a Q0p.IRQ0y.{PERC. 45a0: 0f 00 49 52 51 30 a4 52 54 4c 45 14 1b 5f 53 52 ..IRQ0.RTLE.._SR 45b0: 53 09 8b 68 01 49 52 51 30 82 49 52 51 30 60 76 S..h.IRQ0.IRQ0`v 45c0: 60 70 60 50 45 52 43 14 18 5f 53 54 41 08 a0 0c `p`PERC.._STA... 45d0: 7b 50 45 52 43 0a 80 00 a4 0a 09 a1 04 a4 0a 0b {PERC........... 45e0: 5b 82 42 0a 4c 4e 4b 46 08 5f 48 49 44 0c 41 d0 [.B.LNKF._HID.A. 45f0: 0c 0f 08 5f 55 49 44 0a 06 14 0d 5f 44 49 53 08 ..._UID...._DIS. 4600: 70 0a 80 50 46 52 43 08 5f 50 52 53 11 09 0a 06 p..PFRC._PRS.... 4610: 23 fa d8 18 79 00 14 38 5f 43 52 53 08 08 52 54 #...y..8_CRS..RT 4620: 4c 46 11 09 0a 06 23 00 00 18 79 00 8b 52 54 4c LF....#...y..RTL 4630: 46 01 49 52 51 30 70 00 49 52 51 30 79 01 7b 50 F.IRQ0p.IRQ0y.{P 4640: 46 52 43 0a 0f 00 49 52 51 30 a4 52 54 4c 46 14 FRC...IRQ0.RTLF. 4650: 1b 5f 53 52 53 09 8b 68 01 49 52 51 30 82 49 52 ._SRS..h.IRQ0.IR 4660: 51 30 60 76 60 70 60 50 46 52 43 14 18 5f 53 54 Q0`v`p`PFRC.._ST 4670: 41 08 a0 0c 7b 50 46 52 43 0a 80 00 a4 0a 09 a1 A...{PFRC....... 4680: 04 a4 0a 0b 5b 82 42 0a 4c 4e 4b 47 08 5f 48 49 ....[.B.LNKG._HI 4690: 44 0c 41 d0 0c 0f 08 5f 55 49 44 0a 07 14 0d 5f D.A...._UID...._ 46a0: 44 49 53 08 70 0a 80 50 47 52 43 08 5f 50 52 53 DIS.p..PGRC._PRS 46b0: 11 09 0a 06 23 fa d4 18 79 00 14 38 5f 43 52 53 ....#...y..8_CRS 46c0: 08 08 52 54 4c 47 11 09 0a 06 23 00 00 18 79 00 ..RTLG....#...y. 46d0: 8b 52 54 4c 47 01 49 52 51 30 70 00 49 52 51 30 .RTLG.IRQ0p.IRQ0 46e0: 79 01 7b 50 47 52 43 0a 0f 00 49 52 51 30 a4 52 y.{PGRC...IRQ0.R 46f0: 54 4c 47 14 1b 5f 53 52 53 09 8b 68 01 49 52 51 TLG.._SRS..h.IRQ 4700: 30 82 49 52 51 30 60 76 60 70 60 50 47 52 43 14 0.IRQ0`v`p`PGRC. 4710: 18 5f 53 54 41 08 a0 0c 7b 50 47 52 43 0a 80 00 ._STA...{PGRC... 4720: a4 0a 09 a1 04 a4 0a 0b 5b 82 42 0a 4c 4e 4b 48 ........[.B.LNKH 4730: 08 5f 48 49 44 0c 41 d0 0c 0f 08 5f 55 49 44 0a ._HID.A...._UID. 4740: 08 14 0d 5f 44 49 53 08 70 0a 80 50 48 52 43 08 ..._DIS.p..PHRC. 4750: 5f 50 52 53 11 09 0a 06 23 fa d8 18 79 00 14 38 _PRS....#...y..8 4760: 5f 43 52 53 08 08 52 54 4c 48 11 09 0a 06 23 00 _CRS..RTLH....#. 4770: 00 18 79 00 8b 52 54 4c 48 01 49 52 51 30 70 00 ..y..RTLH.IRQ0p. 4780: 49 52 51 30 79 01 7b 50 48 52 43 0a 0f 00 49 52 IRQ0y.{PHRC...IR 4790: 51 30 a4 52 54 4c 48 14 1b 5f 53 52 53 09 8b 68 Q0.RTLH.._SRS..h 47a0: 01 49 52 51 30 82 49 52 51 30 60 76 60 70 60 50 .IRQ0.IRQ0`v`p`P 47b0: 48 52 43 14 18 5f 53 54 41 08 a0 0c 7b 50 48 52 HRC.._STA...{PHR 47c0: 43 0a 80 00 a4 0a 09 a1 04 a4 0a 0b 5b 82 3d 44 C...........[.=D 47d0: 4d 41 43 08 5f 48 49 44 0c 41 d0 02 00 08 5f 43 MAC._HID.A...._C 47e0: 52 53 11 28 0a 25 47 01 00 00 00 00 01 20 47 01 RS.(.%G...... G. 47f0: 81 00 81 00 01 11 47 01 93 00 93 00 01 0d 47 01 ......G.......G. 4800: c0 00 c0 00 01 20 2a 10 01 79 00 5b 82 26 46 57 ..... *..y.[.&FW 4810: 48 44 08 5f 48 49 44 0c 25 d4 08 00 08 5f 43 52 HD._HID.%...._CR 4820: 53 11 11 0a 0e 86 09 00 00 00 00 00 ff 00 00 00 S............... 4830: 01 79 00 5b 82 40 0b 48 50 45 54 08 5f 48 49 44 .y.[.@.HPET._HID 4840: 0c 41 d0 01 03 08 5f 43 49 44 0c 41 d0 0c 01 08 .A...._CID.A.... 4850: 42 55 46 30 11 11 0a 0e 86 09 00 00 00 00 d0 fe BUF0............ 4860: 00 04 00 00 79 00 14 27 5f 53 54 41 00 a0 13 92 ....y..'_STA.... 4870: 95 4f 53 59 53 0b d1 07 a0 08 48 50 41 45 a4 0a .OSYS.....HPAE.. 4880: 0f a1 0a a0 08 48 50 41 45 a4 0a 0b a4 00 14 46 .....HPAE......F 4890: 05 5f 43 52 53 08 a0 49 04 48 50 41 45 8a 42 55 ._CRS..I.HPAE.BU 48a0: 46 30 0a 04 48 50 54 30 a0 11 93 48 50 41 53 01 F0..HPT0...HPAS. 48b0: 70 0c 00 10 d0 fe 48 50 54 30 a0 12 93 48 50 41 p.....HPT0...HPA 48c0: 53 0a 02 70 0c 00 20 d0 fe 48 50 54 30 a0 12 93 S..p.. ..HPT0... 48d0: 48 50 41 53 0a 03 70 0c 00 30 d0 fe 48 50 54 30 HPAS..p..0..HPT0 48e0: a4 42 55 46 30 5b 82 45 0a 49 50 49 43 08 5f 48 .BUF0[.E.IPIC._H 48f0: 49 44 0b 41 d0 08 5f 43 52 53 11 41 09 0a 8d 47 ID.A.._CRS.A...G 4900: 01 20 00 20 00 01 02 47 01 24 00 24 00 01 02 47 . . ...G.$.$...G 4910: 01 28 00 28 00 01 02 47 01 2c 00 2c 00 01 02 47 .(.(...G.,.,...G 4920: 01 30 00 30 00 01 02 47 01 34 00 34 00 01 02 47 .0.0...G.4.4...G 4930: 01 38 00 38 00 01 02 47 01 3c 00 3c 00 01 02 47 .8.8...G.<.<...G 4940: 01 a0 00 a0 00 01 02 47 01 a4 00 a4 00 01 02 47 .......G.......G 4950: 01 a8 00 a8 00 01 02 47 01 ac 00 ac 00 01 02 47 .......G.......G 4960: 01 b0 00 b0 00 01 02 47 01 b4 00 b4 00 01 02 47 .......G.......G 4970: 01 b8 00 b8 00 01 02 47 01 bc 00 bc 00 01 02 47 .......G.......G 4980: 01 d0 04 d0 04 01 02 22 04 00 79 00 5b 82 25 4d ......."..y.[.%M 4990: 41 54 48 08 5f 48 49 44 0c 41 d0 0c 04 08 5f 43 ATH._HID.A...._C 49a0: 52 53 11 10 0a 0d 47 01 f0 00 f0 00 01 01 22 00 RS....G.......". 49b0: 20 79 00 5b 82 4b 09 4c 44 52 43 08 5f 48 49 44 y.[.K.LDRC._HID 49c0: 0c 41 d0 0c 02 08 5f 55 49 44 0a 02 08 5f 43 52 .A...._UID..._CR 49d0: 53 11 4e 07 0a 7a 47 01 2e 00 2e 00 01 02 47 01 S.N..zG.......G. 49e0: 4e 00 4e 00 01 02 47 01 61 00 61 00 01 01 47 01 N.N...G.a.a...G. 49f0: 63 00 63 00 01 01 47 01 65 00 65 00 01 01 47 01 c.c...G.e.e...G. 4a00: 67 00 67 00 01 01 47 01 80 00 80 00 01 01 47 01 g.g...G.......G. 4a10: 92 00 92 00 01 01 47 01 b2 00 b2 00 01 02 47 01 ......G.......G. 4a20: 80 06 80 06 01 20 47 01 00 08 00 08 01 10 47 01 ..... G.......G. 4a30: 00 10 00 10 01 80 47 01 80 11 80 11 01 40 47 01 ......G......@G. 4a40: 00 fe 00 fe 01 01 47 01 00 ff 00 ff 01 80 79 00 ......G.......y. 4a50: 5b 82 25 52 54 43 5f 08 5f 48 49 44 0c 41 d0 0b [.%RTC_._HID.A.. 4a60: 00 08 5f 43 52 53 11 10 0a 0d 47 01 70 00 70 00 .._CRS....G.p.p. 4a70: 01 08 22 00 01 79 00 5b 82 2d 54 49 4d 52 08 5f .."..y.[.-TIMR._ 4a80: 48 49 44 0c 41 d0 01 00 08 5f 43 52 53 11 18 0a HID.A...._CRS... 4a90: 15 47 01 40 00 40 00 01 04 47 01 50 00 50 00 10 .G.@.@...G.P.P.. 4aa0: 04 22 01 00 79 00 5b 82 32 41 43 41 44 08 5f 48 ."..y.[.2ACAD._H 4ab0: 49 44 0d 41 43 50 49 30 30 30 33 00 08 5f 50 43 ID.ACPI0003.._PC 4ac0: 4c 12 06 01 5f 53 42 5f 14 11 5f 50 53 52 00 70 L..._SB_.._PSR.p 4ad0: 01 41 43 50 57 a4 41 43 50 57 14 1a 45 43 4f 4b .ACPW.ACPW..ECOK 4ae0: 00 a0 0f 93 5e 2e 45 43 30 5f 5a 30 30 39 01 a4 ....^.EC0_Z009.. 4af0: 01 a1 03 a4 00 5b 82 4e 6f 45 43 30 5f 08 5f 48 .....[.NoEC0_._H 4b00: 49 44 0c 41 d0 0c 09 08 5f 47 50 45 0a 1c 08 5a ID.A...._GPE...Z 4b10: 30 30 39 00 08 5f 43 52 53 11 15 0a 12 47 01 62 009.._CRS....G.b 4b20: 00 62 00 01 01 47 01 66 00 66 00 01 01 79 00 14 .b...G.f.f...y.. 4b30: 3b 5f 52 45 47 02 a0 34 93 68 0a 03 70 69 5a 30 ;_REG..4.h..piZ0 4b40: 30 39 a0 28 5b 12 5f 4f 53 49 60 70 00 42 54 44 09.([._OSI`p.BTD 4b50: 53 a0 19 5f 4f 53 49 0d 57 69 6e 64 6f 77 73 20 S.._OSI.Windows 4b60: 32 30 30 36 00 70 01 42 54 44 53 5b 80 45 52 41 2006.p.BTDS[.ERA 4b70: 4d 03 00 0a ff 5b 81 4e 2e 45 52 41 4d 11 00 40 M....[.N.ERAM..@ 4b80: 30 53 4d 50 52 08 53 4d 53 54 08 53 4d 41 44 08 0SMPR.SMST.SMAD. 4b90: 53 4d 43 4d 08 53 4d 44 30 40 10 42 43 4e 54 08 SMCM.SMD0@.BCNT. 4ba0: 53 4d 41 41 18 00 40 04 43 48 47 4d 10 43 48 47 SMAA..@.CHGM.CHG 4bb0: 53 10 45 4e 49 44 08 45 4e 49 42 08 45 4e 44 44 S.ENID.ENIB.ENDD 4bc0: 08 43 48 47 56 08 43 48 47 41 10 42 41 4c 30 01 .CHGV.CHGA.BAL0. 4bd0: 42 41 4c 31 01 42 41 4c 32 01 42 41 4c 33 01 42 BAL1.BAL2.BAL3.B 4be0: 42 43 30 01 42 42 43 31 01 42 42 43 32 01 42 42 BC0.BBC1.BBC2.BB 4bf0: 43 33 01 00 08 50 48 44 44 01 49 46 44 44 01 49 C3...PHDD.IFDD.I 4c00: 4f 44 44 01 53 48 44 44 01 53 31 32 30 01 45 46 ODD.SHDD.S120.EF 4c10: 44 44 01 43 52 54 44 01 53 50 57 52 01 53 42 54 DD.CRTD.SPWR.SBT 4c20: 4e 01 56 49 44 4f 01 56 4f 4c 44 01 56 4f 4c 55 N.VIDO.VOLD.VOLU 4c30: 01 4d 55 54 45 01 43 4f 4e 54 01 42 52 47 54 01 .MUTE.CONT.BRGT. 4c40: 48 42 54 4e 01 53 34 53 54 01 53 4b 45 59 01 42 HBTN.S4ST.SKEY.B 4c50: 4b 45 59 01 54 4f 55 50 01 46 4e 42 4e 01 4c 49 KEY.TOUP.FNBN.LI 4c60: 44 46 01 44 49 47 4d 01 55 57 41 4b 01 00 08 44 DF.DIGM.UWAK...D 4c70: 4b 53 50 01 44 4b 49 4e 01 44 4b 49 44 01 44 4b KSP.DKIN.DKID.DK 4c80: 4f 4b 01 00 04 44 4b 50 57 01 00 07 42 54 4e 53 OK...DKPW...BTNS 4c90: 08 53 31 4c 44 01 53 33 4c 44 01 56 47 41 51 01 .S1LD.S3LD.VGAQ. 4ca0: 50 43 4d 51 01 50 43 4d 52 01 41 44 50 54 01 53 PCMQ.PCMR.ADPT.S 4cb0: 4c 4c 53 01 53 59 53 37 01 50 57 41 4b 01 4d 57 LLS.SYS7.PWAK.MW 4cc0: 41 4b 01 4c 57 41 4b 01 00 05 00 28 54 43 4e 4c AK.LWAK....(TCNL 4cd0: 08 54 4d 50 49 08 54 4d 53 44 08 46 41 53 4e 04 .TMPI.TMSD.FASN. 4ce0: 46 41 53 55 04 50 43 56 4c 04 00 02 53 57 54 4f FASU.PCVL...SWTO 4cf0: 01 48 57 54 4f 01 4d 4f 44 45 01 46 41 4e 53 02 .HWTO.MODE.FANS. 4d00: 49 4e 49 54 01 46 41 4e 31 01 46 41 4e 32 01 46 INIT.FAN1.FAN2.F 4d10: 41 4e 54 01 53 4b 4e 4d 01 43 54 4d 50 08 4c 49 ANT.SKNM.CTMP.LI 4d20: 44 45 01 50 4d 45 45 01 50 57 42 45 01 52 4e 47 DE.PMEE.PWBE.RNG 4d30: 45 01 42 54 57 45 01 44 43 4b 45 01 00 02 53 4b E.BTWE.DCKE...SK 4d40: 54 58 08 53 4b 54 42 08 53 4b 54 43 08 53 4b 54 TX.SKTB.SKTC.SKT 4d50: 41 08 00 08 48 41 50 4c 02 48 41 50 52 01 00 05 A...HAPL.HAPR... 4d60: 42 54 44 54 01 42 54 50 57 01 42 54 44 53 01 42 BTDT.BTPW.BTDS.B 4d70: 54 50 53 01 42 54 53 57 01 42 54 57 4b 01 42 54 TPS.BTSW.BTWK.BT 4d80: 4c 44 01 00 01 42 52 54 53 08 43 4e 54 53 08 57 LD...BRTS.CNTS.W 4d90: 4c 41 54 01 42 54 41 54 01 57 4c 45 58 01 42 54 LAT.BTAT.WLEX.BT 4da0: 45 58 01 4b 4c 53 57 01 57 4c 4f 4b 01 00 02 50 EX.KLSW.WLOK...P 4db0: 54 49 44 08 43 50 55 54 08 45 50 4b 54 08 47 48 TID.CPUT.EPKT.GH 4dc0: 49 44 08 00 04 42 4d 46 30 03 42 54 59 30 01 42 ID...BMF0.BTY0.B 4dd0: 53 54 30 08 42 52 43 30 10 42 53 4e 30 10 42 50 ST0.BRC0.BSN0.BP 4de0: 56 30 10 42 44 56 30 10 42 44 43 30 10 42 46 43 V0.BDV0.BDC0.BFC 4df0: 30 10 47 41 55 30 08 43 59 43 30 08 42 50 43 30 0.GAU0.CYC0.BPC0 4e00: 10 42 41 43 30 10 42 41 54 30 08 42 54 57 30 10 .BAC0.BAT0.BTW0. 4e10: 42 44 4e 30 08 00 40 04 00 04 42 4d 46 31 03 42 BDN0..@...BMF1.B 4e20: 54 59 31 01 42 53 54 31 08 42 52 43 31 10 42 53 TY1.BST1.BRC1.BS 4e30: 4e 31 10 42 50 56 31 10 42 44 56 31 10 42 44 43 N1.BPV1.BDV1.BDC 4e40: 31 10 42 46 43 31 10 47 41 55 31 08 43 59 43 31 1.BFC1.GAU1.CYC1 4e50: 08 42 50 43 31 10 42 41 43 31 10 42 41 54 31 08 .BPC1.BAC1.BAT1. 4e60: 42 54 57 31 10 14 37 5f 51 31 31 00 70 0a 87 50 BTW1..7_Q11.p..P 4e70: 38 30 48 a0 13 49 47 44 53 5e 5e 5e 2e 47 46 58 80H..IGDS^^^.GFX 4e80: 30 42 52 54 4e 0a 87 a1 15 86 5e 5e 5e 2f 03 50 0BRTN.....^^^/.P 4e90: 45 47 50 56 47 41 5f 4c 43 44 5f 0a 87 14 37 5f EGPVGA_LCD_...7_ 4ea0: 51 31 32 00 70 0a 86 50 38 30 48 a0 13 49 47 44 Q12.p..P80H..IGD 4eb0: 53 5e 5e 5e 2e 47 46 58 30 42 52 54 4e 0a 86 a1 S^^^.GFX0BRTN... 4ec0: 15 86 5e 5e 5e 2f 03 50 45 47 50 56 47 41 5f 4c ..^^^/.PEGPVGA_L 4ed0: 43 44 5f 0a 86 14 40 05 5f 51 31 43 00 70 0d 3d CD_...@._Q1C.p.= 4ee0: 3d 3d 3d 3d 51 55 45 52 59 5f 31 43 3d 3d 3d 3d ====QUERY_1C==== 4ef0: 3d 00 5b 31 a0 31 56 49 44 4f a0 12 49 47 44 53 =.[1.1VIDO..IGDS 4f00: 5e 5e 5e 2e 47 46 58 30 47 48 44 53 00 a1 12 5e ^^^.GFX0GHDS...^ 4f10: 5e 5e 2f 03 50 45 47 50 56 47 41 5f 44 53 53 57 ^^/.PEGPVGA_DSSW 4f20: 70 00 56 49 44 4f 14 21 5f 51 31 44 00 70 0d 3d p.VIDO.!_Q1D.p.= 4f30: 3d 3d 3d 3d 51 55 45 52 59 5f 31 44 3d 3d 3d 3d ====QUERY_1D==== 4f40: 3d 00 5b 31 50 43 4c 4b 14 21 5f 51 31 45 00 70 =.[1PCLK.!_Q1E.p 4f50: 0d 3d 3d 3d 3d 3d 51 55 45 52 59 5f 31 45 3d 3d .=====QUERY_1E== 4f60: 3d 3d 3d 00 5b 31 50 43 4c 4b 14 39 5f 51 32 35 ===.[1PCLK.9_Q25 4f70: 00 70 0d 3d 3d 3d 3d 3d 51 55 45 52 59 5f 32 35 .p.=====QUERY_25 4f80: 3d 3d 3d 3d 3d 00 5b 31 5b 22 0b e8 03 86 5e 5e =====.[1["....^^ 4f90: 42 41 54 31 0a 81 5b 22 0b e8 03 86 5e 5e 42 41 BAT1..["....^^BA 4fa0: 54 31 0a 80 14 2f 5f 51 33 34 00 70 0d 3d 3d 3d T1.../_Q34.p.=== 4fb0: 3d 3d 51 55 45 52 59 5f 33 34 3d 3d 3d 3d 3d 00 ==QUERY_34=====. 4fc0: 5b 31 a0 11 42 4b 45 59 50 48 53 53 0a 71 70 00 [1..BKEYPHSS.qp. 4fd0: 42 4b 45 59 14 32 5f 51 33 37 00 70 0d 3d 3d 3d BKEY.2_Q37.p.=== 4fe0: 3d 3d 51 55 45 52 59 5f 33 37 3d 3d 3d 3d 3d 00 ==QUERY_37=====. 4ff0: 5b 31 86 41 43 41 44 0a 80 5b 22 0b e8 03 86 5e [1.ACAD..["....^ 5000: 5e 42 41 54 31 0a 80 14 32 5f 51 33 38 00 70 0d ^BAT1...2_Q38.p. 5010: 3d 3d 3d 3d 3d 51 55 45 52 59 5f 33 38 3d 3d 3d =====QUERY_38=== 5020: 3d 3d 00 5b 31 86 41 43 41 44 0a 80 5b 22 0b e8 ==.[1.ACAD..[".. 5030: 03 86 5e 5e 42 41 54 31 0a 80 14 29 5f 51 32 44 ..^^BAT1...)_Q2D 5040: 00 70 0d 3d 3d 3d 3d 3d 51 55 45 52 59 5f 32 44 .p.=====QUERY_2D 5050: 3d 3d 3d 3d 3d 00 5b 31 70 00 44 54 53 4d 54 52 =====.[1p.DTSMTR 5060: 41 50 0a 46 14 29 5f 51 32 45 00 70 0d 3d 3d 3d AP.F.)_Q2E.p.=== 5070: 3d 3d 51 55 45 52 59 5f 32 45 3d 3d 3d 3d 3d 00 ==QUERY_2E=====. 5080: 5b 31 70 01 44 54 53 4d 54 52 41 50 0a 46 5b 80 [1p.DTSMTRAP.F[. 5090: 43 43 4c 4b 01 0b 10 10 0a 04 5b 81 20 43 43 4c CCLK......[. CCL 50a0: 4b 03 00 01 44 55 54 59 03 54 48 45 4e 01 00 03 K...DUTY.THEN... 50b0: 46 54 54 5f 01 00 08 54 53 54 53 01 5b 80 45 43 FTT_...TSTS.[.EC 50c0: 52 4d 03 00 0a ff 5b 81 44 04 45 43 52 4d 11 00 RM....[.D.ECRM.. 50d0: 40 4a 45 52 49 42 10 45 52 42 44 08 00 48 0a 53 @JERIB.ERBD..H.S 50e0: 44 54 4d 08 46 53 53 4e 04 46 41 4e 55 04 50 54 DTM.FSSN.FANU.PT 50f0: 56 4c 03 00 04 54 54 48 52 01 00 48 06 50 4a 49 VL...TTHR..H.PJI 5100: 44 08 00 08 00 48 1d 52 46 52 44 10 5b 01 46 41 D....H.RFRD.[.FA 5110: 4d 58 00 14 22 46 41 4e 47 01 5b 23 46 41 4d 58 MX.."FANG.[#FAMX 5120: ff ff 70 68 45 52 49 42 70 45 52 42 44 60 5b 27 ..phERIBpERBD`[' 5130: 46 41 4d 58 a4 60 14 22 46 41 4e 57 02 5b 23 46 FAMX.`."FANW.[#F 5140: 41 4d 58 ff ff 70 68 45 52 49 42 70 69 45 52 42 AMX..phERIBpiERB 5150: 44 5b 27 46 41 4d 58 a4 69 14 09 54 55 56 52 01 D['FAMX.i..TUVR. 5160: a4 0a 03 14 2e 54 48 52 4f 01 a0 09 93 68 00 a4 .....THRO....h.. 5170: 54 48 45 4e a1 1d a0 09 93 68 01 a4 44 55 54 59 THEN.....h..DUTY 5180: a1 11 a0 0a 93 68 0a 02 a4 54 54 48 52 a1 04 a4 .....h...TTHR... 5190: 0a ff 14 2a 43 4c 43 4b 01 a0 10 93 68 00 70 00 ...*CLCK....h.p. 51a0: 54 48 45 4e 70 00 46 54 54 5f a1 0d 70 68 44 55 THENp.FTT_..phDU 51b0: 54 59 70 01 54 48 45 4e a4 54 48 45 4e 14 37 50 TYp.THEN.THEN.7P 51c0: 43 4c 4b 00 70 50 54 56 4c 60 a0 10 93 60 00 70 CLK.pPTVL`...`.p 51d0: 00 54 48 45 4e 70 00 46 54 54 5f a1 19 76 60 70 .THENp.FTT_..v`p 51e0: 80 60 00 61 7b 61 0a 07 61 70 61 44 55 54 59 70 .`.a{a..apaDUTYp 51f0: 01 54 48 45 4e 5b 82 4b 22 42 41 54 31 08 5f 48 .THEN[.K"BAT1._H 5200: 49 44 0c 41 d0 0c 0a 08 5f 55 49 44 01 08 5f 50 ID.A...._UID.._P 5210: 43 4c 12 06 01 5f 53 42 5f 14 39 5f 53 54 41 00 CL..._SB_.9_STA. 5220: a0 29 90 45 43 4f 4b 93 45 43 44 59 00 a0 13 5e .).ECOK.ECDY...^ 5230: 5e 2e 45 43 30 5f 42 41 4c 30 5b 22 0a 14 a4 0a ^.EC0_BAL0[".... 5240: 1f a1 08 5b 22 0a 14 a4 0a 0f a1 08 5b 22 0a 14 ...[".......[".. 5250: a4 0a 1f 14 48 10 5f 42 49 46 00 08 53 54 41 54 ....H._BIF..STAT 5260: 12 3a 0d 01 0b a0 0f 0b a0 0f 01 0b 5c 2b 0b a4 .:..........\+.. 5270: 01 0a 9c 0b 08 01 0b c4 0e 0d 50 41 33 34 36 35 ..........PA3465 5280: 55 20 00 0d 33 36 35 38 51 00 0d 4c 69 2d 49 6f U ..3658Q..Li-Io 5290: 6e 00 0d 43 4f 4d 50 41 4c 20 00 a0 4b 07 90 45 n..COMPAL ..K..E 52a0: 43 4f 4b 93 45 43 44 59 00 70 5e 5e 2e 45 43 30 COK.ECDY.p^^.EC0 52b0: 5f 42 44 4e 30 60 a0 23 93 60 0a 08 70 0a b4 88 _BDN0`.#.`..p... 52c0: 53 54 41 54 0a 06 00 70 0d 50 41 33 34 35 37 55 STAT...p.PA3457U 52d0: 20 00 88 53 54 41 54 0a 09 00 a0 24 93 60 0a 20 ..STAT....$.`. 52e0: 70 0b 02 01 88 53 54 41 54 0a 06 00 70 0d 50 41 p....STAT...p.PA 52f0: 33 34 35 37 55 20 00 88 53 54 41 54 0a 09 00 5b 3457U ..STAT...[ 5300: 22 0a 14 70 5e 5e 2e 45 43 30 5f 42 44 43 30 42 "..p^^.EC0_BDC0B 5310: 46 43 31 5b 22 0a 14 a1 12 70 0d 4c 69 2d 49 6f FC1["....p.Li-Io 5320: 6e 00 88 53 54 41 54 0a 0b 00 a0 2c 42 46 43 31 n..STAT....,BFC1 5330: 78 42 46 43 31 0a 64 60 61 77 61 0a 64 61 70 61 xBFC1.d`awa.dapa 5340: 42 46 43 31 70 61 88 53 54 41 54 01 00 70 61 88 BFC1pa.STAT..pa. 5350: 53 54 41 54 0a 02 00 a4 53 54 41 54 14 45 0c 5f STAT....STAT.E._ 5360: 42 53 54 00 08 50 42 53 54 12 10 04 00 0c ff ff BST..PBST....... 5370: ff ff 0c ff ff ff ff 0b 5c 2b 70 0b 5c 2b 63 a0 ........\+p.\+c. 5380: 38 90 45 43 4f 4b 93 45 43 44 59 00 5b 22 0a 14 8.ECOK.ECDY.[".. 5390: 70 5e 5e 2e 45 43 30 5f 42 53 54 30 42 53 54 31 p^^.EC0_BST0BST1 53a0: 5b 22 0a 14 70 5e 5e 2e 45 43 30 5f 47 41 55 30 ["..p^^.EC0_GAU0 53b0: 42 47 55 31 5b 22 0a 14 a0 15 42 46 43 31 77 42 BGU1["....BFC1wB 53c0: 47 55 31 42 46 43 31 62 78 62 0a 64 64 62 a1 09 GU1BFC1bxb.ddb.. 53d0: 77 42 47 55 31 0a 28 62 70 42 53 54 31 88 50 42 wBGU1.(bpBST1.PB 53e0: 53 54 00 00 70 00 88 50 42 53 54 01 00 70 62 88 ST..p..PBST..pb. 53f0: 50 42 53 54 0a 02 00 70 63 88 50 42 53 54 0a 03 PBST...pc.PBST.. 5400: 00 a0 1b 94 45 43 44 59 00 76 45 43 44 59 a0 0e ....ECDY.vECDY.. 5410: 93 45 43 44 59 00 86 42 41 54 31 0a 80 a4 50 42 .ECDY..BAT1...PB 5420: 53 54 5b 82 2e 50 53 32 4b 08 5f 48 49 44 0c 41 ST[..PS2K._HID.A 5430: d0 03 03 08 5f 43 52 53 11 19 0a 16 47 01 60 00 ...._CRS....G.`. 5440: 60 00 01 01 47 01 64 00 64 00 01 01 23 02 00 01 `...G.d.d...#... 5450: 79 00 5b 82 1e 50 53 32 4d 08 5f 48 49 44 0c 41 y.[..PS2M._HID.A 5460: d0 0f 13 08 5f 43 52 53 11 09 0a 06 23 00 10 01 ...._CRS....#... 5470: 79 00 5b 82 43 6a 50 41 54 41 08 5f 41 44 52 0c y.[.CjPATA._ADR. 5480: 01 00 1f 00 5b 80 50 41 43 53 02 0a 40 0a c0 5b ....[.PACS..@..[ 5490: 81 49 04 50 41 43 53 03 50 52 49 54 10 00 10 50 .I.PACS.PRIT...P 54a0: 53 49 54 04 00 1c 53 59 4e 43 04 00 0c 53 44 54 SIT...SYNC...SDT 54b0: 30 02 00 02 53 44 54 31 02 00 4a 04 49 43 52 30 0...SDT1..J.ICR0 54c0: 04 49 43 52 31 04 49 43 52 32 04 49 43 52 33 04 .ICR1.ICR2.ICR3. 54d0: 49 43 52 34 04 49 43 52 35 04 5b 82 4b 63 50 52 ICR4.ICR5.[.KcPR 54e0: 49 44 08 5f 41 44 52 00 14 40 17 5f 47 54 4d 00 ID._ADR..@._GTM. 54f0: 08 50 42 55 46 11 17 0a 14 00 00 00 00 00 00 00 .PBUF........... 5500: 00 00 00 00 00 00 00 00 00 00 00 00 00 8a 50 42 ..............PB 5510: 55 46 00 50 49 4f 30 8a 50 42 55 46 0a 04 44 4d UF.PIO0.PBUF..DM 5520: 41 30 8a 50 42 55 46 0a 08 50 49 4f 31 8a 50 42 A0.PBUF..PIO1.PB 5530: 55 46 0a 0c 44 4d 41 31 8a 50 42 55 46 0a 10 46 UF..DMA1.PBUF..F 5540: 4c 41 47 70 47 45 54 50 50 52 49 54 50 49 4f 30 LAGpGETPPRITPIO0 5550: 70 47 44 4d 41 7b 53 59 4e 43 01 00 7b 49 43 52 pGDMA{SYNC..{ICR 5560: 33 01 00 7b 49 43 52 30 01 00 53 44 54 30 7b 49 3..{ICR0..SDT0{I 5570: 43 52 31 01 00 44 4d 41 30 a0 14 93 44 4d 41 30 CR1..DMA0...DMA0 5580: 0c ff ff ff ff 70 50 49 4f 30 44 4d 41 30 a0 2e .....pPIO0DMA0.. 5590: 7b 50 52 49 54 0b 00 40 00 a0 14 93 7b 50 52 49 {PRIT..@....{PRI 55a0: 54 0a 90 00 0a 80 70 0b 84 03 50 49 4f 31 a1 0e T.....p...PIO1.. 55b0: 70 47 45 54 54 50 53 49 54 50 49 4f 31 a1 0b 70 pGETTPSITPIO1..p 55c0: 0c ff ff ff ff 50 49 4f 31 70 47 44 4d 41 7b 53 .....PIO1pGDMA{S 55d0: 59 4e 43 0a 02 00 7b 49 43 52 33 0a 02 00 7b 49 YNC...{ICR3...{I 55e0: 43 52 30 0a 02 00 53 44 54 31 7b 49 43 52 31 0a CR0...SDT1{ICR1. 55f0: 02 00 44 4d 41 31 a0 14 93 44 4d 41 31 0c ff ff ..DMA1...DMA1... 5600: ff ff 70 50 49 4f 31 44 4d 41 31 70 47 45 54 46 ..pPIO1DMA1pGETF 5610: 7b 53 59 4e 43 01 00 7b 53 59 4e 43 0a 02 00 50 {SYNC..{SYNC...P 5620: 52 49 54 46 4c 41 47 a0 2c 7b 93 50 49 4f 30 0c RITFLAG.,{.PIO0. 5630: ff ff ff ff 93 44 4d 41 30 0c ff ff ff ff 00 70 .....DMA0......p 5640: 0a 78 50 49 4f 30 70 0a 14 44 4d 41 30 70 0a 03 .xPIO0p..DMA0p.. 5650: 46 4c 41 47 a4 50 42 55 46 14 4c 2a 5f 53 54 4d FLAG.PBUF.L*_STM 5660: 03 8a 68 00 50 49 4f 30 8a 68 0a 04 44 4d 41 30 ..h.PIO0.h..DMA0 5670: 8a 68 0a 08 50 49 4f 31 8a 68 0a 0c 44 4d 41 31 .h..PIO1.h..DMA1 5680: 8a 68 0a 10 46 4c 41 47 a0 41 12 93 87 69 0b 00 .h..FLAG.A...i.. 5690: 02 7b 50 52 49 54 0b f0 c0 50 52 49 54 7b 53 59 .{PRIT...PRIT{SY 56a0: 4e 43 0a 02 53 59 4e 43 70 00 53 44 54 30 7b 49 NC..SYNCp.SDT0{I 56b0: 43 52 30 0a 02 49 43 52 30 7b 49 43 52 31 0a 02 CR0..ICR0{ICR1.. 56c0: 49 43 52 31 7b 49 43 52 33 0a 02 49 43 52 33 7b ICR1{ICR3..ICR3{ 56d0: 49 43 52 35 0a 02 49 43 52 35 8b 69 0a 62 57 34 ICR5..ICR5.i.bW4 56e0: 39 30 8b 69 0a 6a 57 35 33 30 8b 69 0a 7e 57 36 90.i.jW530.i.~W6 56f0: 33 30 8b 69 0a 80 57 36 34 30 8b 69 0a b0 57 38 30.i..W640.i..W8 5700: 38 30 8b 69 0a ba 57 39 33 30 7d 50 52 49 54 0b 80.i..W930}PRIT. 5710: 04 80 50 52 49 54 a0 1e 90 7b 46 4c 41 47 0a 02 ..PRIT...{FLAG.. 5720: 00 7b 57 34 39 30 0b 00 08 00 7d 50 52 49 54 0a .{W490....}PRIT. 5730: 02 50 52 49 54 7d 50 52 49 54 53 45 54 50 50 49 .PRIT}PRITSETPPI 5740: 4f 30 57 35 33 30 57 36 34 30 50 52 49 54 a0 4b O0W530W640PRIT.K 5750: 05 7b 46 4c 41 47 01 00 7d 53 59 4e 43 01 53 59 .{FLAG..}SYNC.SY 5760: 4e 43 70 53 44 4d 41 44 4d 41 30 53 44 54 30 a0 NCpSDMADMA0SDT0. 5770: 12 95 44 4d 41 30 0a 1e 7d 49 43 52 33 01 49 43 ..DMA0..}ICR3.IC 5780: 52 33 a0 12 95 44 4d 41 30 0a 3c 7d 49 43 52 30 R3...DMA0.<}ICR0 5790: 01 49 43 52 30 a0 14 7b 57 39 33 30 0b 00 20 00 .ICR0..{W930.. . 57a0: 7d 49 43 52 31 01 49 43 52 31 a0 4b 15 93 87 6a }ICR1.ICR1.K...j 57b0: 0b 00 02 7b 50 52 49 54 0b 0f bf 50 52 49 54 70 ...{PRIT...PRITp 57c0: 00 50 53 49 54 7b 53 59 4e 43 01 53 59 4e 43 70 .PSIT{SYNC.SYNCp 57d0: 00 53 44 54 31 7b 49 43 52 30 01 49 43 52 30 7b .SDT1{ICR0.ICR0{ 57e0: 49 43 52 31 01 49 43 52 31 7b 49 43 52 33 01 49 ICR1.ICR1{ICR3.I 57f0: 43 52 33 7b 49 43 52 35 01 49 43 52 35 8b 6a 0a CR3{ICR5.ICR5.j. 5800: 62 57 34 39 31 8b 6a 0a 6a 57 35 33 31 8b 6a 0a bW491.j.jW531.j. 5810: 7e 57 36 33 31 8b 6a 0a 80 57 36 34 31 8b 6a 0a ~W631.j..W641.j. 5820: b0 57 38 38 31 8b 6a 0a ba 57 39 33 31 7d 50 52 .W881.j..W931}PR 5830: 49 54 0b 40 80 50 52 49 54 a0 1e 90 7b 46 4c 41 IT.@.PRIT...{FLA 5840: 47 0a 08 00 7b 57 34 39 31 0b 00 08 00 7d 50 52 G...{W491....}PR 5850: 49 54 0a 20 50 52 49 54 a0 4c 04 7b 46 4c 41 47 IT. PRIT.L.{FLAG 5860: 0a 10 00 7d 50 52 49 54 0b 00 40 50 52 49 54 a0 ...}PRIT..@PRIT. 5870: 13 94 50 49 4f 31 0a f0 7d 50 52 49 54 0a 80 50 ..PIO1..}PRIT..P 5880: 52 49 54 a1 21 7d 50 52 49 54 0a 10 50 52 49 54 RIT.!}PRIT..PRIT 5890: 70 53 45 54 54 50 49 4f 31 57 35 33 31 57 36 34 pSETTPIO1W531W64 58a0: 31 50 53 49 54 a0 40 06 7b 46 4c 41 47 0a 04 00 1PSIT.@.{FLAG... 58b0: 7d 53 59 4e 43 0a 02 53 59 4e 43 70 53 44 4d 41 }SYNC..SYNCpSDMA 58c0: 44 4d 41 31 53 44 54 31 a0 13 95 44 4d 41 31 0a DMA1SDT1...DMA1. 58d0: 1e 7d 49 43 52 33 0a 02 49 43 52 33 a0 13 95 44 .}ICR3..ICR3...D 58e0: 4d 41 31 0a 3c 7d 49 43 52 30 0a 02 49 43 52 30 MA1.<}ICR0..ICR0 58f0: a0 15 7b 57 39 33 31 0b 00 20 00 7d 49 43 52 31 ..{W931.. .}ICR1 5900: 0a 02 49 43 52 31 5b 82 47 10 50 5f 44 30 08 5f ..ICR1[.G.P_D0._ 5910: 41 44 52 00 14 4a 0f 5f 47 54 46 00 08 50 49 42 ADR..J._GTF..PIB 5920: 30 11 11 0a 0e 03 00 00 00 00 a0 ef 03 00 00 00 0............... 5930: 00 a0 ef 8c 50 49 42 30 01 50 4d 44 30 8c 50 49 ....PIB0.PMD0.PI 5940: 42 30 0a 08 44 4d 44 30 a0 40 06 7b 50 52 49 54 B0..DMD0.@.{PRIT 5950: 0a 02 00 a0 13 93 7b 50 52 49 54 0a 09 00 0a 08 ......{PRIT..... 5960: 70 0a 08 50 4d 44 30 a1 41 04 70 0a 0a 50 4d 44 p..PMD0.A.p..PMD 5970: 30 7a 7b 50 52 49 54 0b 00 03 00 0a 08 60 7a 7b 0z{PRIT......`z{ 5980: 50 52 49 54 0b 00 30 00 0a 0c 61 72 60 61 62 a0 PRIT..0...ar`ab. 5990: 0c 93 0a 03 62 70 0a 0b 50 4d 44 30 a0 0c 93 0a ....bp..PMD0.... 59a0: 05 62 70 0a 0c 50 4d 44 30 a1 07 70 01 50 4d 44 .bp..PMD0..p.PMD 59b0: 30 a0 43 04 7b 53 59 4e 43 01 00 70 7d 53 44 54 0.C.{SYNC..p}SDT 59c0: 30 0a 40 00 44 4d 44 30 a0 2c 7b 49 43 52 31 01 0.@.DMD0.,{ICR1. 59d0: 00 a0 13 7b 49 43 52 30 01 00 72 44 4d 44 30 0a ...{ICR0..rDMD0. 59e0: 02 44 4d 44 30 a0 0f 7b 49 43 52 33 01 00 70 0a .DMD0..{ICR3..p. 59f0: 45 44 4d 44 30 a1 14 7d 74 7b 50 4d 44 30 0a 07 EDMD0..}t{PMD0.. 5a00: 00 0a 02 00 0a 20 44 4d 44 30 a4 50 49 42 30 5b ..... DMD0.PIB0[ 5a10: 82 46 10 50 5f 44 31 08 5f 41 44 52 01 14 49 0f .F.P_D1._ADR..I. 5a20: 5f 47 54 46 00 08 50 49 42 31 11 11 0a 0e 03 00 _GTF..PIB1...... 5a30: 00 00 00 b0 ef 03 00 00 00 00 b0 ef 8c 50 49 42 .............PIB 5a40: 31 01 50 4d 44 31 8c 50 49 42 31 0a 08 44 4d 44 1.PMD1.PIB1..DMD 5a50: 31 a0 4b 05 7b 50 52 49 54 0a 20 00 a0 13 93 7b 1.K.{PRIT. ....{ 5a60: 50 52 49 54 0a 90 00 0a 80 70 0a 08 50 4d 44 31 PRIT.....p..PMD1 5a70: a1 3c 72 7b 50 53 49 54 0a 03 00 7a 7b 50 53 49 .. 0050: 80 49 ee 6a 65 26 72 1e cd bf 5f 2f 96 d6 c0 0a .I.je&r..._/.... 0060: 92 f5 06 b5 00 b2 3b 29 02 e2 4c 8d c2 f2 bc 41 ......;)..L....A 0070: 77 9c 70 f0 f3 1b 09 d2 63 5a dc a8 83 f8 5e c9 w.p.....cZ....^. 0080: 15 95 f9 fa fd dc 05 b7 4d 67 7f 2d b3 84 33 20 ........Mg.-..3 0090: e1 d1 79 2a a7 6a 77 d1 b6 20 2a 76 42 c5 d5 e9 ..y*.jw.. *vB... 00a0: b6 43 40 55 44 c3 c9 37 99 5f 41 97 70 f3 d1 f6 .C@UD..7._A.p... 00b0: 07 ec 7b 1a 29 a1 c1 f1 91 fd 48 86 6e 3e ce cb ..{.).....H.n>.. 00c0: 01 00 00 00 b6 00 00 00 00 00 02 00 4c 45 4e 4f ............LENO 00d0: 56 4f 54 50 2d 36 38 20 20 20 57 49 4e 44 4f 57 VOTP-68 WINDOW 00e0: 53 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 S .............. 00f0: 00 00 00 00 00 00 8a 6e 2e c9 36 e6 7f 10 8a ea .......n..6..... 0100: 14 ad d2 93 b7 6d 9b 73 ad 83 36 b8 6c a7 a7 ee .....m.s..6.l... 0110: 37 47 16 fe f3 fc cd c7 89 84 06 16 91 0b 1e 81 7G.............. 0120: 11 42 b1 35 52 57 f6 6b bb 5f a5 81 e2 ff 89 8a .B.5RW.k._...... 0130: 95 c3 4d fc e9 56 4f 4c 34 cc 99 5e 62 e1 90 8a ..M..VOL4..^b... 0140: 54 be 4a 00 5c 9b a0 86 41 46 66 9d e2 f2 e7 36 T.J.\...AFf....6 0150: 9c 33 91 27 e7 8d 5c a1 d8 f9 a4 61 8a 1c 04 07 .3.'..\....a.... 0160: e3 2a 1e 14 f1 bd 7f 4c 09 ff 19 11 a9 d4 74 ca .*.....L......t. 0170: 11 9e dc 54 39 bf ...T9. APIC @ 0xbf6dff70 0000: 41 50 49 43 68 00 00 00 01 13 50 54 4c 54 44 20 APICh.....PTLTD 0010: 09 20 41 50 49 43 20 20 00 00 04 06 20 4c 54 50 . APIC .... LTP 0020: 00 00 00 00 00 00 e0 fe 01 00 00 00 00 08 00 00 ................ 0030: 01 00 00 00 00 08 01 01 01 00 00 00 01 0c 02 00 ................ 0040: 00 00 c0 fe 00 00 00 00 04 06 00 05 00 01 04 06 ................ 0050: 01 05 00 01 02 0a 00 00 02 00 00 00 05 00 02 0a ................ 0060: 00 09 09 00 00 00 0d 00 ........ BOOT @ 0xbf6dffd8 0000: 42 4f 4f 54 28 00 00 00 01 a5 50 54 4c 54 44 20 BOOT(.....PTLTD 0010: 24 53 42 46 54 42 4c 24 00 00 04 06 20 4c 54 50 $SBFTBL$.... LTP 0020: 01 00 00 00 36 00 00 00 ....6... SSDT @ 0xbf6d98bd 0000: 53 53 44 54 ad 02 00 00 01 59 53 61 74 61 52 65 SSDT.....YSataRe 0010: 53 61 74 61 41 68 63 69 00 10 00 00 49 4e 54 4c SataAhci....INTL 0020: 24 06 05 20 10 48 28 5c 2f 03 5f 53 42 5f 50 43 $.. .H(\/._SB_PC 0030: 49 30 53 41 54 41 5b 82 4f 0c 50 52 54 30 08 5f I0SATA[.O.PRT0._ 0040: 41 44 52 0b ff ff 14 44 0b 5f 53 44 44 01 08 47 ADR....D._SDD..G 0050: 42 55 30 11 0a 0a 07 00 00 00 00 00 a0 00 8c 47 BU0............G 0060: 42 55 30 0a 00 47 42 30 30 8c 47 42 55 30 0a 01 BU0..GB00.GBU0.. 0070: 47 42 30 31 8c 47 42 55 30 0a 02 47 42 30 32 8c GB01.GBU0..GB02. 0080: 47 42 55 30 0a 03 47 42 30 33 8c 47 42 55 30 0a GBU0..GB03.GBU0. 0090: 04 47 42 30 34 8c 47 42 55 30 0a 05 47 42 30 35 .GB04.GBU0..GB05 00a0: 8c 47 42 55 30 0a 06 47 42 30 36 a0 46 04 93 87 .GBU0..GB06.F... 00b0: 68 0b 00 02 8b 68 0a 9c 57 37 38 30 a0 1e 7b 57 h....h..W780..{W 00c0: 37 38 30 0a 08 00 70 0a 10 47 42 30 30 70 0a 03 780...p..GB00p.. 00d0: 47 42 30 31 70 0a ef 47 42 30 36 a1 16 70 0a 90 GB01p..GB06..p.. 00e0: 47 42 30 30 70 0a 03 47 42 30 31 70 0a ef 47 42 GB00p..GB01p..GB 00f0: 30 36 70 47 42 55 30 47 54 46 30 14 0b 5f 47 54 06pGBU0GTF0.._GT 0100: 46 00 a4 47 54 46 30 5b 82 41 0d 50 52 54 31 08 F..GTF0[.A.PRT1. 0110: 5f 41 44 52 0c ff ff 01 00 14 44 0b 5f 53 44 44 _ADR......D._SDD 0120: 01 08 47 42 55 31 11 0a 0a 07 00 00 00 00 00 a0 ..GBU1.......... 0130: 00 8c 47 42 55 31 0a 00 47 42 31 30 8c 47 42 55 ..GBU1..GB10.GBU 0140: 31 0a 01 47 42 31 31 8c 47 42 55 31 0a 02 47 42 1..GB11.GBU1..GB 0150: 31 32 8c 47 42 55 31 0a 03 47 42 31 33 8c 47 42 12.GBU1..GB13.GB 0160: 55 31 0a 04 47 42 31 34 8c 47 42 55 31 0a 05 47 U1..GB14.GBU1..G 0170: 42 31 35 8c 47 42 55 31 0a 06 47 42 31 36 a0 46 B15.GBU1..GB16.F 0180: 04 93 87 68 0b 00 02 8b 68 0a 9c 57 37 38 31 a0 ...h....h..W781. 0190: 1e 7b 57 37 38 31 0a 08 00 70 0a 10 47 42 31 30 .{W781...p..GB10 01a0: 70 0a 03 47 42 31 31 70 0a ef 47 42 31 36 a1 16 p..GB11p..GB16.. 01b0: 70 0a 90 47 42 31 30 70 0a 03 47 42 31 31 70 0a p..GB10p..GB11p. 01c0: ef 47 42 31 36 70 47 42 55 31 47 54 46 31 14 0b .GB16pGBU1GTF1.. 01d0: 5f 47 54 46 00 a4 47 54 46 31 5b 82 41 0d 50 52 _GTF..GTF1[.A.PR 01e0: 54 32 08 5f 41 44 52 0c ff ff 02 00 14 44 0b 5f T2._ADR......D._ 01f0: 53 44 44 01 08 47 42 55 32 11 0a 0a 07 00 00 00 SDD..GBU2....... 0200: 00 00 a0 00 8c 47 42 55 32 0a 00 47 42 32 30 8c .....GBU2..GB20. 0210: 47 42 55 32 0a 01 47 42 32 31 8c 47 42 55 32 0a GBU2..GB21.GBU2. 0220: 02 47 42 32 32 8c 47 42 55 32 0a 03 47 42 32 33 .GB22.GBU2..GB23 0230: 8c 47 42 55 32 0a 04 47 42 32 34 8c 47 42 55 32 .GBU2..GB24.GBU2 0240: 0a 05 47 42 32 35 8c 47 42 55 32 0a 06 47 42 32 ..GB25.GBU2..GB2 0250: 36 a0 46 04 93 87 68 0b 00 02 8b 68 0a 9c 57 37 6.F...h....h..W7 0260: 38 32 a0 1e 7b 57 37 38 32 0a 08 00 70 0a 10 47 82..{W782...p..G 0270: 42 32 30 70 0a 03 47 42 32 31 70 0a ef 47 42 32 B20p..GB21p..GB2 0280: 36 a1 16 70 0a 90 47 42 32 30 70 0a 03 47 42 32 6..p..GB20p..GB2 0290: 31 70 0a ef 47 42 32 36 70 47 42 55 32 47 54 46 1p..GB26pGBU2GTF 02a0: 32 14 0b 5f 47 54 46 00 a4 47 54 46 32 2.._GTF..GTF2 SSDT @ 0xbf6d981a 0000: 53 53 44 54 a3 00 00 00 01 ed 42 72 74 52 65 66 SSDT......BrtRef 0010: 44 44 30 31 42 52 54 00 00 10 00 00 49 4e 54 4c DD01BRT.....INTL 0020: 24 06 05 20 10 4e 07 5c 2f 04 5f 53 42 5f 50 43 $.. .N.\/._SB_PC 0030: 49 30 47 46 58 30 44 44 30 33 14 1e 5f 42 43 4c I0GFX0DD03.._BCL 0040: 00 a4 12 16 0a 0a 46 0a 28 0a 00 0a 0a 0a 14 0a ......F.(....... 0050: 1e 0a 28 0a 32 0a 3c 0a 46 14 25 5f 42 43 4d 01 ..(.2.<.F.%_BCM. 0060: 78 68 0a 0a 60 61 70 61 5c 2f 05 5f 53 42 5f 50 xh..`apa\/._SB_P 0070: 43 49 30 4c 50 43 42 45 43 30 5f 42 52 54 53 14 CI0LPCBEC0_BRTS. 0080: 23 5f 42 51 43 00 77 5c 2f 05 5f 53 42 5f 50 43 #_BQC.w\/._SB_PC 0090: 49 30 4c 50 43 42 45 43 30 5f 42 52 54 53 0a 0a I0LPCBEC0_BRTS.. 00a0: 60 a4 60 `.` SSDT @ 0xbf6d8e10 0000: 53 53 44 54 5f 02 00 00 01 c8 50 6d 52 65 66 00 SSDT_.....PmRef. 0010: 43 70 75 30 54 73 74 00 00 30 00 00 49 4e 54 4c Cpu0Tst..0..INTL 0020: 24 06 05 20 10 4a 23 5c 2e 5f 50 52 5f 43 50 55 $.. .J#\._PR_CPU 0030: 30 08 5f 54 50 43 0a 00 14 4d 06 5f 50 54 43 00 0._TPC...M._PTC. 0040: a0 37 7b 50 44 43 30 0a 04 00 a4 12 2c 02 11 14 .7{PDC0.....,... 0050: 0a 11 82 0c 00 7f 00 00 00 00 00 00 00 00 00 00 ................ 0060: 00 79 00 11 14 0a 11 82 0c 00 7f 00 00 00 00 00 .y.............. 0070: 00 00 00 00 00 00 79 00 a4 12 2c 02 11 14 0a 11 ......y...,..... 0080: 82 0c 00 01 04 01 00 10 10 00 00 00 00 00 00 79 ...............y 0090: 00 11 14 0a 11 82 0c 00 01 04 01 00 10 10 00 00 ................ 00a0: 00 00 00 00 79 00 08 54 53 53 49 12 41 07 08 12 ....y..TSSI.A... 00b0: 0d 05 0a 64 0b e8 03 0a 00 0a 00 0a 00 12 0d 05 ...d............ 00c0: 0a 58 0b 6b 03 0a 00 0a 0f 0a 00 12 0d 05 0a 4b .X.k...........K 00d0: 0b ee 02 0a 00 0a 0e 0a 00 12 0d 05 0a 3f 0b 71 .............?.q 00e0: 02 0a 00 0a 0d 0a 00 12 0d 05 0a 32 0b f4 01 0a ...........2.... 00f0: 00 0a 0c 0a 00 12 0d 05 0a 26 0b 77 01 0a 00 0a .........&.w.... 0100: 0b 0a 00 12 0c 05 0a 19 0a fa 0a 00 0a 0a 0a 00 ................ 0110: 12 0c 05 0a 0d 0a 7d 0a 00 0a 09 0a 00 08 54 53 ......}.......TS 0120: 53 4d 12 41 07 08 12 0d 05 0a 64 0b e8 03 0a 00 SM.A......d..... 0130: 0a 00 0a 00 12 0d 05 0a 58 0b 6b 03 0a 00 0a 1e ........X.k..... 0140: 0a 00 12 0d 05 0a 4b 0b ee 02 0a 00 0a 1c 0a 00 ......K......... 0150: 12 0d 05 0a 3f 0b 71 02 0a 00 0a 1a 0a 00 12 0d ....?.q......... 0160: 05 0a 32 0b f4 01 0a 00 0a 18 0a 00 12 0d 05 0a ..2............. 0170: 26 0b 77 01 0a 00 0a 16 0a 00 12 0c 05 0a 19 0a &.w............. 0180: fa 0a 00 0a 14 0a 00 12 0c 05 0a 0d 0a 7d 0a 00 .............}.. 0190: 0a 12 0a 00 08 54 53 53 46 0a 00 14 43 08 5f 54 .....TSSF...C._T 01a0: 53 53 00 a0 47 06 90 92 54 53 53 46 5b 12 5f 50 SS..G...TSSF[._P 01b0: 53 53 00 70 5f 50 53 53 60 70 87 60 61 76 61 70 SS.p_PSS`p.`avap 01c0: 83 88 83 88 60 61 00 0a 01 00 62 70 0a 00 63 a2 ....`a....bp..c. 01d0: 35 95 63 87 54 53 53 49 70 78 77 62 74 0a 08 63 5.c.TSSIpxwbt..c 01e0: 00 00 0a 08 00 00 64 70 64 88 83 88 54 53 53 49 ......dpd...TSSI 01f0: 63 00 0a 01 00 70 64 88 83 88 54 53 53 4d 63 00 c....pd...TSSMc. 0200: 0a 01 00 75 63 70 ff 54 53 53 46 a0 0e 7b 50 44 ...ucp.TSSF..{PD 0210: 43 30 0a 04 00 a4 54 53 53 4d a4 54 53 53 49 14 C0....TSSM.TSSI. 0220: 3f 5f 54 53 44 00 a0 27 90 7b 43 46 47 44 0c 00 ?_TSD..'.{CFGD.. 0230: 00 00 01 00 92 7b 50 44 43 30 0a 04 00 a4 12 0f .....{PDC0...... 0240: 01 12 0c 05 0a 05 0a 00 0a 00 0a fd 0a 02 a4 12 ................ 0250: 0f 01 12 0c 05 0a 05 0a 00 0a 00 0a fc 0a 01 ............... SSDT @ 0xbf6d8d6a 0000: 53 53 44 54 a6 00 00 00 01 6d 50 6d 52 65 66 00 SSDT.....mPmRef. 0010: 43 70 75 31 54 73 74 00 00 30 00 00 49 4e 54 4c Cpu1Tst..0..INTL 0020: 24 06 05 20 10 41 08 5c 2e 5f 50 52 5f 43 50 55 $.. .A.\._PR_CPU 0030: 31 08 5f 54 50 43 0a 00 14 16 5f 50 54 43 00 a4 1._TPC...._PTC.. 0040: 5c 2f 03 5f 50 52 5f 43 50 55 30 5f 50 54 43 14 \/._PR_CPU0_PTC. 0050: 16 5f 54 53 53 00 a4 5c 2f 03 5f 50 52 5f 43 50 ._TSS..\/._PR_CP 0060: 55 30 5f 54 53 53 14 3f 5f 54 53 44 00 a0 27 90 U0_TSS.?_TSD..'. 0070: 7b 43 46 47 44 0c 00 00 00 01 00 92 7b 50 44 43 {CFGD.......{PDC 0080: 31 0a 04 00 a4 12 0f 01 12 0c 05 0a 05 0a 00 0a 1............... 0090: 00 0a fd 0a 02 a4 12 0f 01 12 0c 05 0a 05 0a 00 ................ 00a0: 0a 01 0a fc 0a 01 ...... SSDT @ 0xbf6d8884 0000: 53 53 44 54 e6 04 00 00 01 df 50 6d 52 65 66 00 SSDT......PmRef. 0010: 43 70 75 50 6d 00 00 00 00 30 00 00 49 4e 54 4c CpuPm....0..INTL 0020: 24 06 05 20 10 45 08 5c 00 08 53 53 44 54 12 43 $.. .E.\..SSDT.C 0030: 05 0c 0d 43 50 55 30 49 53 54 20 00 0c 9e 95 6d ...CPU0IST ....m 0040: bf 0c b4 01 00 00 0d 43 50 55 31 49 53 54 20 00 .......CPU1IST . 0050: 0c 52 97 6d bf 0c c8 00 00 00 0d 43 50 55 30 43 .R.m.......CPU0C 0060: 53 54 20 00 0c 6f 90 6d bf 0c aa 04 00 00 0d 43 ST ..o.m.......C 0070: 50 55 31 43 53 54 20 00 0c 19 95 6d bf 0c 85 00 PU1CST ....m.... 0080: 00 00 08 43 46 47 44 0c f1 69 3f 11 08 5c 50 44 ...CFGD..i?..\PD 0090: 43 30 0c 00 00 00 80 08 5c 50 44 43 31 0c 00 00 C0......\PDC1... 00a0: 00 80 08 5c 53 44 54 4c 0a 00 10 4d 21 5c 2e 5f ...\SDTL...M!\._ 00b0: 50 52 5f 43 50 55 30 08 48 49 30 5f 0a 00 08 48 PR_CPU0.HI0_...H 00c0: 43 30 5f 0a 00 14 48 06 5f 50 44 43 01 8a 68 0a C0_...H._PDC..h. 00d0: 00 52 45 56 53 8a 68 0a 04 53 49 5a 45 70 87 68 .REVS.h..SIZEp.h 00e0: 60 70 74 60 0a 08 00 61 5b 13 68 0a 40 77 61 0a `pt`...a[.h.@wa. 00f0: 08 00 54 45 4d 50 08 53 54 53 30 11 07 0a 04 00 ..TEMP.STS0..... 0100: 00 00 00 73 53 54 53 30 54 45 4d 50 62 5f 4f 53 ...sSTS0TEMPb_OS 0110: 43 11 13 0a 10 16 a6 77 40 0c 29 be 47 9e bd d8 C......w@.).G... 0120: 70 58 71 39 53 52 45 56 53 53 49 5a 45 62 14 49 pXq9SREVSSIZEb.I 0130: 19 5f 4f 53 43 04 8a 6b 0a 00 53 54 53 30 8a 6b ._OSC..k..STS0.k 0140: 0a 04 43 41 50 30 8a 68 0a 00 49 49 44 30 8a 68 ..CAP0.h..IID0.h 0150: 0a 04 49 49 44 31 8a 68 0a 08 49 49 44 32 8a 68 ..IID1.h..IID2.h 0160: 0a 0c 49 49 44 33 08 55 49 44 30 11 13 0a 10 16 ..IID3.UID0..... 0170: a6 77 40 0c 29 be 47 9e bd d8 70 58 71 39 53 8a .w@.).G...pXq9S. 0180: 55 49 44 30 0a 00 45 49 44 30 8a 55 49 44 30 0a UID0..EID0.UID0. 0190: 04 45 49 44 31 8a 55 49 44 30 0a 08 45 49 44 32 .EID1.UID0..EID2 01a0: 8a 55 49 44 30 0a 0c 45 49 44 33 a0 32 92 90 90 .UID0..EID3.2... 01b0: 93 49 49 44 30 45 49 44 30 93 49 49 44 31 45 49 .IID0EID0.IID1EI 01c0: 44 31 90 93 49 49 44 32 45 49 44 32 93 49 49 44 D1..IID2EID2.IID 01d0: 33 45 49 44 33 70 0a 06 53 54 53 30 a4 6b a0 0f 3EID3p..STS0.k.. 01e0: 92 93 69 0a 01 70 0a 0a 53 54 53 30 a4 6b 7d 7b ..i..p..STS0.k}{ 01f0: 50 44 43 30 0c ff ff ff 7f 00 43 41 50 30 50 44 PDC0......CAP0PD 0200: 43 30 70 7b 50 44 43 30 0a ff 00 50 43 50 30 a0 C0p{PDC0...PCP0. 0210: 4c 05 7b 43 46 47 44 0a 01 00 a0 41 05 90 90 7b L.{CFGD....A...{ 0220: 43 46 47 44 0c 00 00 00 01 00 93 7b 50 44 43 30 CFGD.......{PDC0 0230: 0a 09 00 0a 09 92 7b 53 44 54 4c 0a 01 00 7d 53 ......{SDTL...}S 0240: 44 54 4c 0a 01 53 44 54 4c 5b 80 49 53 54 30 00 DTL..SDTL[.IST0. 0250: 83 88 53 53 44 54 0a 01 00 83 88 53 53 44 54 0a ..SSDT.....SSDT. 0260: 02 00 5b 20 49 53 54 30 48 49 30 5f a0 49 05 7b ..[ IST0HI0_.I.{ 0270: 43 46 47 44 0a f0 00 a0 4e 04 90 90 7b 43 46 47 CFGD....N...{CFG 0280: 44 0c 00 00 00 01 00 7b 50 44 43 30 0a 18 00 92 D......{PDC0.... 0290: 7b 53 44 54 4c 0a 02 00 7d 53 44 54 4c 0a 02 53 {SDTL...}SDTL..S 02a0: 44 54 4c 5b 80 43 53 54 30 00 83 88 53 53 44 54 DTL[.CST0...SSDT 02b0: 0a 07 00 83 88 53 53 44 54 0a 08 00 5b 20 43 53 .....SSDT...[ CS 02c0: 54 30 48 43 30 5f a4 6b 10 4d 21 5c 2e 5f 50 52 T0HC0_.k.M!\._PR 02d0: 5f 43 50 55 31 08 48 49 31 5f 0a 00 08 48 43 31 _CPU1.HI1_...HC1 02e0: 5f 0a 00 14 48 06 5f 50 44 43 01 8a 68 0a 00 52 _...H._PDC..h..R 02f0: 45 56 53 8a 68 0a 04 53 49 5a 45 70 87 68 60 70 EVS.h..SIZEp.h`p 0300: 74 60 0a 08 00 61 5b 13 68 0a 40 77 61 0a 08 00 t`...a[.h.@wa... 0310: 54 45 4d 50 08 53 54 53 31 11 07 0a 04 00 00 00 TEMP.STS1....... 0320: 00 73 53 54 53 31 54 45 4d 50 62 5f 4f 53 43 11 .sSTS1TEMPb_OSC. 0330: 13 0a 10 16 a6 77 40 0c 29 be 47 9e bd d8 70 58 .....w@.).G...pX 0340: 71 39 53 52 45 56 53 53 49 5a 45 62 14 49 19 5f q9SREVSSIZEb.I._ 0350: 4f 53 43 04 8a 6b 0a 00 53 54 53 31 8a 6b 0a 04 OSC..k..STS1.k.. 0360: 43 41 50 31 8a 68 0a 00 49 49 44 30 8a 68 0a 04 CAP1.h..IID0.h.. 0370: 49 49 44 31 8a 68 0a 08 49 49 44 32 8a 68 0a 0c IID1.h..IID2.h.. 0380: 49 49 44 33 08 55 49 44 31 11 13 0a 10 16 a6 77 IID3.UID1......w 0390: 40 0c 29 be 47 9e bd d8 70 58 71 39 53 8a 55 49 @.).G...pXq9S.UI 03a0: 44 31 0a 00 45 49 44 30 8a 55 49 44 31 0a 04 45 D1..EID0.UID1..E 03b0: 49 44 31 8a 55 49 44 31 0a 08 45 49 44 32 8a 55 ID1.UID1..EID2.U 03c0: 49 44 31 0a 0c 45 49 44 33 a0 32 92 90 90 93 49 ID1..EID3.2....I 03d0: 49 44 30 45 49 44 30 93 49 49 44 31 45 49 44 31 ID0EID0.IID1EID1 03e0: 90 93 49 49 44 32 45 49 44 32 93 49 49 44 33 45 ..IID2EID2.IID3E 03f0: 49 44 33 70 0a 06 53 54 53 31 a4 6b a0 0f 92 93 ID3p..STS1.k.... 0400: 69 0a 01 70 0a 0a 53 54 53 31 a4 6b 7d 7b 50 44 i..p..STS1.k}{PD 0410: 43 31 0c ff ff ff 7f 00 43 41 50 31 50 44 43 31 C1......CAP1PDC1 0420: 70 7b 50 44 43 31 0a ff 00 50 43 50 31 a0 4c 05 p{PDC1...PCP1.L. 0430: 7b 43 46 47 44 0a 01 00 a0 41 05 90 90 7b 43 46 {CFGD....A...{CF 0440: 47 44 0c 00 00 00 01 00 93 7b 50 44 43 31 0a 09 GD.......{PDC1.. 0450: 00 0a 09 92 7b 53 44 54 4c 0a 10 00 7d 53 44 54 ....{SDTL...}SDT 0460: 4c 0a 10 53 44 54 4c 5b 80 49 53 54 31 00 83 88 L..SDTL[.IST1... 0470: 53 53 44 54 0a 04 00 83 88 53 53 44 54 0a 05 00 SSDT.....SSDT... 0480: 5b 20 49 53 54 31 48 49 31 5f a0 49 05 7b 43 46 [ IST1HI1_.I.{CF 0490: 47 44 0a f0 00 a0 4e 04 90 90 7b 43 46 47 44 0c GD....N...{CFGD. 04a0: 00 00 00 01 00 7b 50 44 43 31 0a 18 00 92 7b 53 .....{PDC1....{S 04b0: 44 54 4c 0a 20 00 7d 53 44 54 4c 0a 20 53 44 54 DTL. .}SDTL. SDT 04c0: 4c 5b 80 43 53 54 31 00 83 88 53 53 44 54 0a 0a L[.CST1...SSDT.. 04d0: 00 83 88 53 53 44 54 0a 0b 00 5b 20 43 53 54 31 ...SSDT...[ CST1 04e0: 48 43 31 5f a4 6b HC1_.k XSDT @ 0xbf6d87f0 0000: 58 53 44 54 94 00 00 00 01 c2 4c 45 4e 4f 56 4f XSDT......LENOVO 0010: 54 50 2d 36 38 20 20 20 00 00 04 06 20 4c 54 50 TP-68 .... LTP 0020: 00 00 00 00 d2 fb 6d bf 00 00 00 00 c6 fc 6d bf ......m.......m. 0030: 00 00 00 00 2e fd 6d bf 00 00 00 00 66 fd 6d bf ......m.....f.m. 0040: 00 00 00 00 a2 fd 6d bf 00 00 00 00 d4 fd 6d bf ......m.......m. 0050: 00 00 00 00 fa fd 6d bf 00 00 00 00 70 ff 6d bf ......m.....p.m. 0060: 00 00 00 00 d8 ff 6d bf 00 00 00 00 bd 98 6d bf ......m.......m. 0070: 00 00 00 00 1a 98 6d bf 00 00 00 00 10 8e 6d bf ......m.......m. 0080: 00 00 00 00 6a 8d 6d bf 00 00 00 00 84 88 6d bf ....j.m.......m. 0090: 00 00 00 00 .... RSD PTR @ 0xf7240 0000: 52 53 44 20 50 54 52 20 c5 4c 45 4e 4f 56 4f 02 RSD PTR .LENOVO. 0010: 94 87 6d bf 24 00 00 00 f0 87 6d bf 00 00 00 00 ..m.$.....m..... 0020: 39 00 00 00 9... fwts-test/apicinstance-0001/acpidump-0002.log000066400000000000000000004044001231470457100207270ustar00rootroot00000000000000DSDT @ 0xbf6d9b6a 0000: 44 53 44 54 f4 5f 00 00 02 11 54 4f 53 43 50 4c DSDT._....TOSCPL 0010: 43 52 45 53 54 4c 4e 45 00 00 04 06 49 4e 54 4c CRESTLNE....INTL 0020: 08 06 06 20 08 5a 30 30 30 01 08 5a 30 30 31 0a ... .Z000..Z001. 0030: 02 08 5a 30 30 32 0a 04 08 5a 30 30 33 0a 08 08 ..Z002...Z003... 0040: 5a 30 30 34 00 08 5a 30 30 35 0a 0f 08 5a 30 30 Z004..Z005...Z00 0050: 36 0a 0d 08 5a 30 30 37 0a 0b 08 5a 30 30 38 0a 6...Z007...Z008. 0060: 09 08 45 43 44 59 0a 07 5b 01 4d 55 54 58 00 5b ..ECDY..[.MUTX.[ 0070: 80 50 52 54 30 01 0a 80 0a 04 5b 81 0b 50 52 54 .PRT0.....[..PRT 0080: 30 13 50 38 30 48 20 14 4e 07 50 38 58 48 0a a0 0.P80H .N.P8XH.. 0090: 17 93 68 00 70 7d 7b 50 38 30 44 0c 00 ff ff ff ..h.p}{P80D..... 00a0: 00 69 00 50 38 30 44 a0 1b 93 68 01 70 7d 7b 50 .i.P80D...h.p}{P 00b0: 38 30 44 0c ff 00 ff ff 00 79 69 0a 08 00 00 50 80D......yi....P 00c0: 38 30 44 a0 1c 93 68 0a 02 70 7d 7b 50 38 30 44 80D...h..p}{P80D 00d0: 0c ff ff 00 ff 00 79 69 0a 10 00 00 50 38 30 44 ......yi....P80D 00e0: a0 1c 93 68 0a 03 70 7d 7b 50 38 30 44 0c ff ff ...h..p}{P80D... 00f0: ff 00 00 79 69 0a 18 00 00 50 38 30 44 70 50 38 ...yi....P80DpP8 0100: 30 44 50 38 30 48 14 0c 5f 50 49 43 01 70 68 47 0DP80H.._PIC.phG 0110: 50 49 43 14 46 06 5f 50 54 53 01 70 00 50 38 30 PIC.F._PTS.p.P80 0120: 44 50 38 58 48 00 68 a0 1e 93 68 0a 03 70 01 5c DP8XH.h...h..p.\ 0130: 2f 05 5f 53 42 5f 50 43 49 30 4c 50 43 42 45 43 /._SB_PCI0LPCBEC 0140: 30 5f 53 33 4c 44 a0 33 93 68 0a 04 70 01 5c 2f 0_S3LD.3.h..p.\/ 0150: 05 5f 53 42 5f 50 43 49 30 4c 50 43 42 45 43 30 ._SB_PCI0LPCBEC0 0160: 5f 53 33 4c 44 5c 2f 04 5f 53 42 5f 50 43 49 30 _S3LD\/._SB_PCI0 0170: 4c 50 43 42 50 48 53 53 0a 0e 14 4c 1c 5f 57 41 LPCBPHSS...L._WA 0180: 4b 01 50 38 58 48 01 0a ab a0 30 91 93 68 0a 03 K.P8XH....0..h.. 0190: 93 68 0a 04 a0 25 7b 43 46 47 44 0c 00 00 00 01 .h...%{CFGD..... 01a0: 00 a0 18 90 7b 43 46 47 44 0a f0 00 93 4f 53 59 ....{CFGD....OSY 01b0: 53 0b d1 07 54 52 41 50 0a 3d a0 18 93 52 50 31 S...TRAP.=...RP1 01c0: 44 00 86 5c 2f 03 5f 53 42 5f 50 43 49 30 52 50 D..\/._SB_PCI0RP 01d0: 30 31 00 a0 18 93 52 50 32 44 00 86 5c 2f 03 5f 01....RP2D..\/._ 01e0: 53 42 5f 50 43 49 30 52 50 30 32 00 a0 18 93 52 SB_PCI0RP02....R 01f0: 50 33 44 00 86 5c 2f 03 5f 53 42 5f 50 43 49 30 P3D..\/._SB_PCI0 0200: 52 50 30 33 00 a0 18 93 52 50 34 44 00 86 5c 2f RP03....RP4D..\/ 0210: 03 5f 53 42 5f 50 43 49 30 52 50 30 34 00 a0 18 ._SB_PCI0RP04... 0220: 93 52 50 35 44 00 86 5c 2f 03 5f 53 42 5f 50 43 .RP5D..\/._SB_PC 0230: 49 30 52 50 30 35 00 a0 18 93 52 50 36 44 00 86 I0RP05....RP6D.. 0240: 5c 2f 03 5f 53 42 5f 50 43 49 30 52 50 30 36 00 \/._SB_PCI0RP06. 0250: a0 12 93 68 0a 03 50 38 58 48 00 0a 30 54 52 41 ...h..P8XH..0TRA 0260: 50 0a 46 a0 43 0d 93 68 0a 04 50 38 58 48 00 0a P.F.C..h..P8XH.. 0270: 40 5c 2f 04 5f 53 42 5f 50 43 49 30 4c 50 43 42 @\/._SB_PCI0LPCB 0280: 50 48 53 53 0a 0f 70 57 41 4b 46 60 70 00 57 41 PHSS..pWAKF`p.WA 0290: 4b 46 7b 60 0a 05 60 a0 18 93 60 01 50 38 58 48 KF{`..`...`.P8XH 02a0: 00 0a 41 86 5c 2e 5f 53 42 5f 50 57 52 42 0a 02 ..A.\._SB_PWRB.. 02b0: a0 46 08 44 54 53 45 54 52 41 50 0a 47 a0 42 06 .F.DTSETRAP.G.B. 02c0: 90 5c 2f 04 5f 53 42 5f 50 43 49 30 4c 50 43 42 .\/._SB_PCI0LPCB 02d0: 45 43 4f 4b 93 45 43 44 59 00 a0 27 92 95 44 54 ECOK.ECDY..'..DT 02e0: 53 31 44 54 53 32 70 44 54 53 31 5c 2f 05 5f 53 S1DTS2pDTS1\/._S 02f0: 42 5f 50 43 49 30 4c 50 43 42 45 43 30 5f 53 4b B_PCI0LPCBEC0_SK 0300: 54 41 a1 1d 70 44 54 53 32 5c 2f 05 5f 53 42 5f TA..pDTS2\/._SB_ 0310: 50 43 49 30 4c 50 43 42 45 43 30 5f 53 4b 54 41 PCI0LPCBEC0_SKTA 0320: a1 16 5c 2f 04 5f 53 42 5f 50 43 49 30 4c 50 43 ..\/._SB_PCI0LPC 0330: 42 50 48 53 53 0a 10 5c 2e 5f 50 52 5f 52 50 50 BPHSS..\._PR_RPP 0340: 43 a4 12 04 02 00 00 14 1e 47 45 54 42 0b 77 68 C........GETB.wh 0350: 0a 08 60 77 69 0a 08 61 5b 13 6a 60 61 54 42 46 ..`wi..a[.j`aTBF 0360: 33 a4 54 42 46 33 14 42 09 50 4e 4f 54 08 a0 4a 3.TBF3.B.PNOT..J 0370: 06 4d 50 45 4e a0 31 7b 50 44 43 30 0a 08 00 86 .MPEN.1{PDC0.... 0380: 5c 2e 5f 50 52 5f 43 50 55 30 0a 80 a0 1a 7b 50 \._PR_CPU0....{P 0390: 44 43 30 0a 10 00 5b 22 0a 64 86 5c 2e 5f 50 52 DC0...[".d.\._PR 03a0: 5f 43 50 55 30 0a 81 a0 31 7b 50 44 43 31 0a 08 _CPU0...1{PDC1.. 03b0: 00 86 5c 2e 5f 50 52 5f 43 50 55 31 0a 80 a0 1a ..\._PR_CPU1.... 03c0: 7b 50 44 43 31 0a 10 00 5b 22 0a 64 86 5c 2e 5f {PDC1...[".d.\._ 03d0: 50 52 5f 43 50 55 31 0a 81 a1 1f 86 5c 2e 5f 50 PR_CPU1.....\._P 03e0: 52 5f 43 50 55 30 0a 80 5b 22 0a 64 86 5c 2e 5f R_CPU0..[".d.\._ 03f0: 50 52 5f 43 50 55 30 0a 81 14 17 54 52 41 50 09 PR_CPU0....TRAP. 0400: 70 68 53 4d 49 46 70 00 54 52 50 30 a4 53 4d 49 phSMIFp.TRP0.SMI 0410: 46 10 41 0f 5f 53 42 5f 14 4a 0e 5f 49 4e 49 00 F.A._SB_.J._INI. 0420: 70 0b 99 99 4d 41 52 4b a0 1c 44 54 53 45 54 52 p...MARK..DTSETR 0430: 41 50 0a 47 5e 2f 03 50 43 49 30 4c 50 43 42 50 AP.G^/.PCI0LPCBP 0440: 48 53 53 0a 10 70 0b d0 07 4f 53 59 53 a0 4a 09 HSS..p...OSYS.J. 0450: 5b 12 5f 4f 53 49 60 a0 18 5f 4f 53 49 0d 4c 69 [._OSI`.._OSI.Li 0460: 6e 75 78 00 70 01 4c 49 4e 58 70 00 45 43 44 59 nux.p.LINXp.ECDY 0470: a0 1b 5f 4f 53 49 0d 57 69 6e 64 6f 77 73 20 32 .._OSI.Windows 2 0480: 30 30 31 00 70 0b d1 07 4f 53 59 53 a0 1f 5f 4f 001.p...OSYS.._O 0490: 53 49 0d 57 69 6e 64 6f 77 73 20 32 30 30 31 20 SI.Windows 2001 04a0: 53 50 31 00 70 0b d1 07 4f 53 59 53 a0 1f 5f 4f SP1.p...OSYS.._O 04b0: 53 49 0d 57 69 6e 64 6f 77 73 20 32 30 30 31 20 SI.Windows 2001 04c0: 53 50 32 00 70 0b d2 07 4f 53 59 53 a0 1b 5f 4f SP2.p...OSYS.._O 04d0: 53 49 0d 57 69 6e 64 6f 77 73 20 32 30 30 36 00 SI.Windows 2006. 04e0: 70 0b d6 07 4f 53 59 53 a0 14 90 4d 50 45 4e 93 p...OSYS...MPEN. 04f0: 4f 53 59 53 0b d1 07 54 52 41 50 0a 3d 54 52 41 OSYS...TRAP.=TRA 0500: 50 0a 2b 5b 80 47 4e 56 53 00 0c bc 2d 6e bf 0b P.+[.GNVS...-n.. 0510: 00 01 5b 81 45 24 47 4e 56 53 10 4f 53 59 53 10 ..[.E$GNVS.OSYS. 0520: 53 4d 49 46 08 50 52 4d 30 08 50 52 4d 31 08 53 SMIF.PRM0.PRM1.S 0530: 43 49 46 08 50 52 4d 32 08 50 52 4d 33 08 4c 43 CIF.PRM2.PRM3.LC 0540: 4b 46 08 50 52 4d 34 08 50 52 4d 35 08 50 38 30 KF.PRM4.PRM5.P80 0550: 44 20 4c 49 44 53 08 50 57 52 53 08 44 42 47 53 D LIDS.PWRS.DBGS 0560: 08 4c 49 4e 58 08 00 08 41 43 54 31 08 41 43 54 .LINX...ACT1.ACT 0570: 54 08 50 53 56 54 08 54 43 31 56 08 54 43 32 56 T.PSVT.TC1V.TC2V 0580: 08 54 53 50 56 08 43 52 54 54 08 44 54 53 45 08 .TSPV.CRTT.DTSE. 0590: 44 54 53 31 08 44 54 53 32 08 00 40 05 41 50 49 DTS1.DTS2..@.API 05a0: 43 08 4d 50 45 4e 08 50 43 50 30 08 50 43 50 31 C.MPEN.PCP0.PCP1 05b0: 08 50 50 43 4d 08 00 28 43 4d 41 50 08 43 4d 42 .PPCM..(CMAP.CMB 05c0: 50 08 4c 50 54 50 08 46 44 43 50 08 00 30 49 47 P.LPTP.FDCP..0IG 05d0: 44 53 08 54 4c 53 54 08 43 41 44 4c 08 50 41 44 DS.TLST.CADL.PAD 05e0: 4c 08 43 53 54 45 10 4e 53 54 45 10 53 53 54 45 L.CSTE.NSTE.SSTE 05f0: 10 4e 44 49 44 08 44 49 44 31 20 44 49 44 32 20 .NDID.DID1 DID2 0600: 44 49 44 33 20 44 49 44 34 20 44 49 44 35 20 00 DID3 DID4 DID5 . 0610: 40 06 42 4c 43 53 08 42 52 54 4c 08 41 4c 53 45 @.BLCS.BRTL.ALSE 0620: 08 41 4c 41 46 08 4c 4c 4f 57 08 4c 48 49 48 08 .ALAF.LLOW.LHIH. 0630: 00 08 45 4d 41 45 08 45 4d 41 50 10 45 4d 41 4c ..EMAE.EMAP.EMAL 0640: 10 00 08 4d 45 46 45 08 00 18 54 50 4d 50 08 54 ...MEFE...TPMP.T 0650: 50 4d 45 08 00 40 04 47 54 46 30 38 47 54 46 32 PME..@.GTF08GTF2 0660: 38 49 44 45 4d 08 47 54 46 31 38 00 40 09 41 53 8IDEM.GTF18.@.AS 0670: 4c 42 20 49 42 54 54 08 49 50 41 54 08 49 54 56 LB IBTT.IPAT.ITV 0680: 46 08 49 54 56 4d 08 49 50 53 43 08 49 42 4c 43 F.ITVM.IPSC.IBLC 0690: 08 49 42 49 41 08 49 53 53 43 08 49 34 30 39 08 .IBIA.ISSC.I409. 06a0: 49 35 30 39 08 49 36 30 39 08 49 37 30 39 08 49 I509.I609.I709.I 06b0: 44 4d 4d 08 49 44 4d 53 08 49 46 31 45 08 48 56 DMM.IDMS.IF1E.HV 06c0: 43 4f 08 4e 58 44 31 20 4e 58 44 32 20 4d 41 52 CO.NXD1 NXD2 MAR 06d0: 4b 10 42 52 41 44 08 42 54 45 4e 08 56 56 45 4e K.BRAD.BTEN.VVEN 06e0: 08 42 47 54 4c 08 54 4d 45 45 01 00 07 53 43 55 .BGTL.TMEE...SCU 06f0: 30 01 53 43 55 31 01 53 43 55 32 01 53 43 55 33 0.SCU1.SCU2.SCU3 0700: 01 00 04 58 4b 53 50 01 58 4b 49 4e 01 58 4b 49 ...XKSP.XKIN.XKI 0710: 44 01 58 4b 4f 4b 01 00 04 42 47 55 31 08 42 53 D.XKOK...BGU1.BS 0720: 54 31 08 42 46 43 31 10 57 4b 4c 4e 08 57 41 4b T1.BFC1.WKLN.WAK 0730: 46 08 44 53 4d 44 08 42 41 59 53 08 48 41 50 45 F.DSMD.BAYS.HAPE 0740: 01 00 07 44 54 53 4d 01 00 07 4f 44 54 31 08 4f ...DTSM...ODT1.O 0750: 44 54 32 08 44 54 53 57 08 08 44 53 45 4e 01 08 DT2.DTSW..DSEN.. 0760: 45 43 4f 4e 00 08 47 50 49 43 00 08 43 54 59 50 ECON..GPIC..CTYP 0770: 00 08 4c 30 31 43 00 08 56 46 4e 30 00 08 56 46 ..L01C..VFN0..VF 0780: 4e 31 00 10 4a 7c 5f 47 50 45 14 46 35 5f 4c 30 N1..J|_GPE.F5_L0 0790: 31 00 72 4c 30 31 43 01 4c 30 31 43 50 38 58 48 1.rL01C.L01CP8XH 07a0: 00 01 50 38 58 48 01 4c 30 31 43 a0 48 08 90 93 ..P8XH.L01C.H... 07b0: 52 50 31 44 00 5c 2f 04 5f 53 42 5f 50 43 49 30 RP1D.\/._SB_PCI0 07c0: 52 50 30 31 48 50 53 58 5b 22 0a 64 a0 40 05 5c RP01HPSX[".d.@.\ 07d0: 2f 04 5f 53 42 5f 50 43 49 30 52 50 30 31 50 44 /._SB_PCI0RP01PD 07e0: 43 58 70 01 5c 2f 04 5f 53 42 5f 50 43 49 30 52 CXp.\/._SB_PCI0R 07f0: 50 30 31 50 44 43 58 70 01 5c 2f 04 5f 53 42 5f P01PDCXp.\/._SB_ 0800: 50 43 49 30 52 50 30 31 48 50 53 58 86 5c 2f 03 PCI0RP01HPSX.\/. 0810: 5f 53 42 5f 50 43 49 30 52 50 30 31 00 a1 16 70 _SB_PCI0RP01...p 0820: 01 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 30 31 .\/._SB_PCI0RP01 0830: 48 50 53 58 a0 48 08 90 93 52 50 32 44 00 5c 2f HPSX.H...RP2D.\/ 0840: 04 5f 53 42 5f 50 43 49 30 52 50 30 32 48 50 53 ._SB_PCI0RP02HPS 0850: 58 5b 22 0a 64 a0 40 05 5c 2f 04 5f 53 42 5f 50 X[".d.@.\/._SB_P 0860: 43 49 30 52 50 30 32 50 44 43 58 70 01 5c 2f 04 CI0RP02PDCXp.\/. 0870: 5f 53 42 5f 50 43 49 30 52 50 30 32 50 44 43 58 _SB_PCI0RP02PDCX 0880: 70 01 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 30 p.\/._SB_PCI0RP0 0890: 32 48 50 53 58 86 5c 2f 03 5f 53 42 5f 50 43 49 2HPSX.\/._SB_PCI 08a0: 30 52 50 30 32 00 a1 16 70 01 5c 2f 04 5f 53 42 0RP02...p.\/._SB 08b0: 5f 50 43 49 30 52 50 30 32 48 50 53 58 a0 48 08 _PCI0RP02HPSX.H. 08c0: 90 93 52 50 33 44 00 5c 2f 04 5f 53 42 5f 50 43 ..RP3D.\/._SB_PC 08d0: 49 30 52 50 30 33 48 50 53 58 5b 22 0a 64 a0 40 I0RP03HPSX[".d.@ 08e0: 05 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 30 33 .\/._SB_PCI0RP03 08f0: 50 44 43 58 70 01 5c 2f 04 5f 53 42 5f 50 43 49 PDCXp.\/._SB_PCI 0900: 30 52 50 30 33 50 44 43 58 70 01 5c 2f 04 5f 53 0RP03PDCXp.\/._S 0910: 42 5f 50 43 49 30 52 50 30 33 48 50 53 58 86 5c B_PCI0RP03HPSX.\ 0920: 2f 03 5f 53 42 5f 50 43 49 30 52 50 30 33 00 a1 /._SB_PCI0RP03.. 0930: 16 70 01 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 .p.\/._SB_PCI0RP 0940: 30 33 48 50 53 58 a0 48 08 90 93 52 50 34 44 00 03HPSX.H...RP4D. 0950: 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 30 34 48 \/._SB_PCI0RP04H 0960: 50 53 58 5b 22 0a 64 a0 40 05 5c 2f 04 5f 53 42 PSX[".d.@.\/._SB 0970: 5f 50 43 49 30 52 50 30 34 50 44 43 58 70 01 5c _PCI0RP04PDCXp.\ 0980: 2f 04 5f 53 42 5f 50 43 49 30 52 50 30 34 50 44 /._SB_PCI0RP04PD 0990: 43 58 70 01 5c 2f 04 5f 53 42 5f 50 43 49 30 52 CXp.\/._SB_PCI0R 09a0: 50 30 34 48 50 53 58 86 5c 2f 03 5f 53 42 5f 50 P04HPSX.\/._SB_P 09b0: 43 49 30 52 50 30 34 00 a1 16 70 01 5c 2f 04 5f CI0RP04...p.\/._ 09c0: 53 42 5f 50 43 49 30 52 50 30 34 48 50 53 58 a0 SB_PCI0RP04HPSX. 09d0: 48 08 90 93 52 50 35 44 00 5c 2f 04 5f 53 42 5f H...RP5D.\/._SB_ 09e0: 50 43 49 30 52 50 30 35 48 50 53 58 5b 22 0a 64 PCI0RP05HPSX[".d 09f0: a0 40 05 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 .@.\/._SB_PCI0RP 0a00: 30 35 50 44 43 58 70 01 5c 2f 04 5f 53 42 5f 50 05PDCXp.\/._SB_P 0a10: 43 49 30 52 50 30 35 50 44 43 58 70 01 5c 2f 04 CI0RP05PDCXp.\/. 0a20: 5f 53 42 5f 50 43 49 30 52 50 30 35 48 50 53 58 _SB_PCI0RP05HPSX 0a30: 86 5c 2f 03 5f 53 42 5f 50 43 49 30 52 50 30 35 .\/._SB_PCI0RP05 0a40: 00 a1 16 70 01 5c 2f 04 5f 53 42 5f 50 43 49 30 ...p.\/._SB_PCI0 0a50: 52 50 30 35 48 50 53 58 a0 48 08 90 93 52 50 36 RP05HPSX.H...RP6 0a60: 44 00 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 30 D.\/._SB_PCI0RP0 0a70: 36 48 50 53 58 5b 22 0a 64 a0 40 05 5c 2f 04 5f 6HPSX[".d.@.\/._ 0a80: 53 42 5f 50 43 49 30 52 50 30 36 50 44 43 58 70 SB_PCI0RP06PDCXp 0a90: 01 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 30 36 .\/._SB_PCI0RP06 0aa0: 50 44 43 58 70 01 5c 2f 04 5f 53 42 5f 50 43 49 PDCXp.\/._SB_PCI 0ab0: 30 52 50 30 36 48 50 53 58 86 5c 2f 03 5f 53 42 0RP06HPSX.\/._SB 0ac0: 5f 50 43 49 30 52 50 30 36 00 a1 16 70 01 5c 2f _PCI0RP06...p.\/ 0ad0: 04 5f 53 42 5f 50 43 49 30 52 50 30 36 48 50 53 ._SB_PCI0RP06HPS 0ae0: 58 14 42 0d 5f 4c 30 32 00 70 00 47 50 45 43 a0 X.B._L02.p.GPEC. 0af0: 4d 0a 5c 2f 04 5f 53 42 5f 50 43 49 30 4c 50 43 M.\/._SB_PCI0LPC 0b00: 42 45 43 4f 4b a0 4e 04 93 44 54 53 57 01 a0 27 BECOK.N..DTSW..' 0b10: 92 95 44 54 53 31 44 54 53 32 70 44 54 53 31 5c ..DTS1DTS2pDTS1\ 0b20: 2f 05 5f 53 42 5f 50 43 49 30 4c 50 43 42 45 43 /._SB_PCI0LPCBEC 0b30: 30 5f 53 4b 54 41 a1 1d 70 44 54 53 32 5c 2f 05 0_SKTA..pDTS2\/. 0b40: 5f 53 42 5f 50 43 49 30 4c 50 43 42 45 43 30 5f _SB_PCI0LPCBEC0_ 0b50: 53 4b 54 41 a1 48 04 a0 27 92 95 4f 44 54 31 4f SKTA.H..'..ODT1O 0b60: 44 54 32 70 4f 44 54 31 5c 2f 05 5f 53 42 5f 50 DT2pODT1\/._SB_P 0b70: 43 49 30 4c 50 43 42 45 43 30 5f 53 4b 54 41 a1 CI0LPCBEC0_SKTA. 0b80: 1d 70 4f 44 54 32 5c 2f 05 5f 53 42 5f 50 43 49 .pODT2\/._SB_PCI 0b90: 30 4c 50 43 42 45 43 30 5f 53 4b 54 41 a1 16 5c 0LPCBEC0_SKTA..\ 0ba0: 2f 04 5f 53 42 5f 50 43 49 30 4c 50 43 42 50 48 /._SB_PCI0LPCBPH 0bb0: 53 53 0a 10 14 18 5f 4c 30 33 00 86 5c 2f 03 5f SS...._L03..\/._ 0bc0: 53 42 5f 50 43 49 30 55 53 42 31 0a 02 14 18 5f SB_PCI0USB1...._ 0bd0: 4c 30 34 00 86 5c 2f 03 5f 53 42 5f 50 43 49 30 L04..\/._SB_PCI0 0be0: 55 53 42 32 0a 02 14 18 5f 4c 30 35 00 86 5c 2f USB2...._L05..\/ 0bf0: 03 5f 53 42 5f 50 43 49 30 55 53 42 35 0a 02 14 ._SB_PCI0USB5... 0c00: 36 5f 4c 30 36 00 a0 27 5c 2f 04 5f 53 42 5f 50 6_L06..'\/._SB_P 0c10: 43 49 30 47 46 58 30 47 53 53 45 5c 2f 04 5f 53 CI0GFX0GSSE\/._S 0c20: 42 5f 50 43 49 30 47 46 58 30 47 53 43 49 a1 07 B_PCI0GFX0GSCI.. 0c30: 70 01 53 43 49 53 14 43 1f 5f 4c 30 39 00 a0 41 p.SCIS.C._L09..A 0c40: 05 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 30 31 .\/._SB_PCI0RP01 0c50: 50 53 50 58 70 01 5c 2f 04 5f 53 42 5f 50 43 49 PSPXp.\/._SB_PCI 0c60: 30 52 50 30 31 50 53 50 58 70 01 5c 2f 04 5f 53 0RP01PSPXp.\/._S 0c70: 42 5f 50 43 49 30 52 50 30 31 50 4d 53 58 86 5c B_PCI0RP01PMSX.\ 0c80: 2f 03 5f 53 42 5f 50 43 49 30 52 50 30 31 0a 02 /._SB_PCI0RP01.. 0c90: a0 41 05 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 .A.\/._SB_PCI0RP 0ca0: 30 32 50 53 50 58 70 01 5c 2f 04 5f 53 42 5f 50 02PSPXp.\/._SB_P 0cb0: 43 49 30 52 50 30 32 50 53 50 58 70 01 5c 2f 04 CI0RP02PSPXp.\/. 0cc0: 5f 53 42 5f 50 43 49 30 52 50 30 32 50 4d 53 58 _SB_PCI0RP02PMSX 0cd0: 86 5c 2f 03 5f 53 42 5f 50 43 49 30 52 50 30 32 .\/._SB_PCI0RP02 0ce0: 0a 02 a0 41 05 5c 2f 04 5f 53 42 5f 50 43 49 30 ...A.\/._SB_PCI0 0cf0: 52 50 30 33 50 53 50 58 70 01 5c 2f 04 5f 53 42 RP03PSPXp.\/._SB 0d00: 5f 50 43 49 30 52 50 30 33 50 53 50 58 70 01 5c _PCI0RP03PSPXp.\ 0d10: 2f 04 5f 53 42 5f 50 43 49 30 52 50 30 33 50 4d /._SB_PCI0RP03PM 0d20: 53 58 86 5c 2f 03 5f 53 42 5f 50 43 49 30 52 50 SX.\/._SB_PCI0RP 0d30: 30 33 0a 02 a0 41 05 5c 2f 04 5f 53 42 5f 50 43 03...A.\/._SB_PC 0d40: 49 30 52 50 30 34 50 53 50 58 70 01 5c 2f 04 5f I0RP04PSPXp.\/._ 0d50: 53 42 5f 50 43 49 30 52 50 30 34 50 53 50 58 70 SB_PCI0RP04PSPXp 0d60: 01 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 30 34 .\/._SB_PCI0RP04 0d70: 50 4d 53 58 86 5c 2f 03 5f 53 42 5f 50 43 49 30 PMSX.\/._SB_PCI0 0d80: 52 50 30 34 0a 02 a0 41 05 5c 2f 04 5f 53 42 5f RP04...A.\/._SB_ 0d90: 50 43 49 30 52 50 30 35 50 53 50 58 70 01 5c 2f PCI0RP05PSPXp.\/ 0da0: 04 5f 53 42 5f 50 43 49 30 52 50 30 35 50 53 50 ._SB_PCI0RP05PSP 0db0: 58 70 01 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 Xp.\/._SB_PCI0RP 0dc0: 30 35 50 4d 53 58 86 5c 2f 03 5f 53 42 5f 50 43 05PMSX.\/._SB_PC 0dd0: 49 30 52 50 30 35 0a 02 a0 41 05 5c 2f 04 5f 53 I0RP05...A.\/._S 0de0: 42 5f 50 43 49 30 52 50 30 36 50 53 50 58 70 01 B_PCI0RP06PSPXp. 0df0: 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 30 36 50 \/._SB_PCI0RP06P 0e00: 53 50 58 70 01 5c 2f 04 5f 53 42 5f 50 43 49 30 SPXp.\/._SB_PCI0 0e10: 52 50 30 36 50 4d 53 58 86 5c 2f 03 5f 53 42 5f RP06PMSX.\/._SB_ 0e20: 50 43 49 30 52 50 30 36 0a 02 14 18 5f 4c 30 42 PCI0RP06...._L0B 0e30: 00 86 5c 2f 03 5f 53 42 5f 50 43 49 30 50 43 49 ..\/._SB_PCI0PCI 0e40: 42 0a 02 14 18 5f 4c 30 43 00 86 5c 2f 03 5f 53 B...._L0C..\/._S 0e50: 42 5f 50 43 49 30 55 53 42 33 0a 02 14 4b 0b 5f B_PCI0USB3...K._ 0e60: 4c 30 44 00 a0 3b 5c 2f 04 5f 53 42 5f 50 43 49 L0D..;\/._SB_PCI 0e70: 30 45 48 43 31 50 4d 45 53 70 01 5c 2f 04 5f 53 0EHC1PMESp.\/._S 0e80: 42 5f 50 43 49 30 45 48 43 31 50 4d 45 53 86 5c B_PCI0EHC1PMES.\ 0e90: 2f 03 5f 53 42 5f 50 43 49 30 45 48 43 31 0a 02 /._SB_PCI0EHC1.. 0ea0: a0 3b 5c 2f 04 5f 53 42 5f 50 43 49 30 45 48 43 .;\/._SB_PCI0EHC 0eb0: 32 50 4d 45 53 70 01 5c 2f 04 5f 53 42 5f 50 43 2PMESp.\/._SB_PC 0ec0: 49 30 45 48 43 32 50 4d 45 53 86 5c 2f 03 5f 53 I0EHC2PMES.\/._S 0ed0: 42 5f 50 43 49 30 45 48 43 32 0a 02 a0 3b 5c 2f B_PCI0EHC2...;\/ 0ee0: 04 5f 53 42 5f 50 43 49 30 48 44 45 46 50 4d 45 ._SB_PCI0HDEFPME 0ef0: 53 70 01 5c 2f 04 5f 53 42 5f 50 43 49 30 48 44 Sp.\/._SB_PCI0HD 0f00: 45 46 50 4d 45 53 86 5c 2f 03 5f 53 42 5f 50 43 EFPMES.\/._SB_PC 0f10: 49 30 48 44 45 46 0a 02 14 18 5f 4c 30 45 00 86 I0HDEF...._L0E.. 0f20: 5c 2f 03 5f 53 42 5f 50 43 49 30 55 53 42 34 0a \/._SB_PCI0USB4. 0f30: 02 14 1c 5f 4c 31 42 00 80 4c 50 4f 4c 4c 50 4f ..._L1B..LPOLLPO 0f40: 4c 86 5c 2e 5f 53 42 5f 4c 49 44 30 0a 80 10 46 L.\._SB_LID0...F 0f50: 0b 5f 50 52 5f 5b 83 0b 43 50 55 30 00 10 10 00 ._PR_[..CPU0.... 0f60: 00 06 5b 83 0b 43 50 55 31 01 10 10 00 00 06 14 ..[..CPU1....... 0f70: 45 09 52 50 50 43 00 a0 4d 08 93 4f 53 59 53 0b E.RPPC..M..OSYS. 0f80: d2 07 a0 42 08 7b 43 46 47 44 01 00 a0 42 04 94 ...B.{CFGD...B.. 0f90: 5e 2e 43 50 55 30 5f 50 50 43 00 74 5e 2e 43 50 ^.CPU0_PPC.t^.CP 0fa0: 55 30 5f 50 50 43 01 5e 2e 43 50 55 30 5f 50 50 U0_PPC.^.CPU0_PP 0fb0: 43 50 4e 4f 54 72 5e 2e 43 50 55 30 5f 50 50 43 CPNOTr^.CPU0_PPC 0fc0: 01 5e 2e 43 50 55 30 5f 50 50 43 50 4e 4f 54 a1 .^.CPU0_PPCPNOT. 0fd0: 35 72 5e 2e 43 50 55 30 5f 50 50 43 01 5e 2e 43 5r^.CPU0_PPC.^.C 0fe0: 50 55 30 5f 50 50 43 50 4e 4f 54 74 5e 2e 43 50 PU0_PPCPNOTt^.CP 0ff0: 55 30 5f 50 50 43 01 5e 2e 43 50 55 30 5f 50 50 U0_PPC.^.CPU0_PP 1000: 43 50 4e 4f 54 08 46 57 53 4f 0d 46 57 53 4f 00 CPNOT.FWSO.FWSO. 1010: 08 5f 50 53 43 00 14 12 5f 50 53 30 00 70 5f 50 ._PSC..._PS0.p_P 1020: 53 43 60 70 00 5f 50 53 43 14 0d 5f 50 53 33 00 SC`p._PSC.._PS3. 1030: 70 0a 03 5f 50 53 43 10 8c fb 04 5f 53 42 5f 5b p.._PSC...._SB_[ 1040: 82 4f 3e 41 4d 57 30 08 5f 48 49 44 0d 70 6e 70 .O>AMW0._HID.pnp 1050: 30 63 31 34 00 08 5f 55 49 44 00 08 5f 57 44 47 0c14.._UID.._WDG 1060: 11 3f 0a 3c a7 1d 85 2e 53 d0 5f 49 9d fa 1a 4a .?.<....S._I...J 1070: d6 2e 6a 86 41 43 01 00 3b 6d 43 71 dd fb 72 4c ..j.AC..;mCq..rL 1080: bc b8 43 5b fe 0d 64 f9 42 43 01 00 21 12 90 05 ..C[..d.BC..!... 1090: 66 d5 d1 11 b2 f0 00 a0 c9 06 29 10 42 41 01 00 f.........).BA.. 10a0: 08 53 54 41 43 11 07 0a 04 01 14 03 00 14 1f 57 .STAC..........W 10b0: 51 41 43 01 70 0d 4d 58 4d 54 43 43 6f 6e 66 69 QAC.p.MXMTCConfi 10c0: 67 44 61 74 61 00 5b 31 a4 53 54 41 43 08 53 54 gData.[1.STAC.ST 10d0: 42 43 11 07 0a 04 01 00 00 00 14 34 57 51 42 43 BC.........4WQBC 10e0: 01 70 0d 47 65 74 20 4d 58 4d 54 43 43 6f 6e 74 .p.Get MXMTCCont 10f0: 72 6f 6c 44 61 74 61 3a 20 53 54 42 43 20 3d 20 rolData: STBC = 1100: 00 5b 31 70 53 54 42 43 5b 31 a4 53 54 42 43 14 .[1pSTBC[1.STBC. 1110: 47 06 57 53 42 43 02 70 69 53 54 42 43 70 0d 53 G.WSBC.piSTBCp.S 1120: 65 74 20 4d 58 4d 54 43 43 6f 6e 74 72 6f 6c 44 et MXMTCControlD 1130: 61 74 61 3a 20 53 54 42 43 20 3d 20 00 5b 31 70 ata: STBC = .[1p 1140: 53 54 42 43 5b 31 a0 30 93 5e 5e 2f 03 50 43 49 STBC[1.0.^^/.PCI 1150: 30 4c 50 43 42 45 43 4f 4b 01 70 83 88 53 54 42 0LPCBECOK.p..STB 1160: 43 01 00 5e 5e 2f 04 50 43 49 30 4c 50 43 42 45 C..^^/.PCI0LPCBE 1170: 43 30 5f 53 4b 54 43 08 57 51 42 41 11 43 2b 0b C0_SKTC.WQBA.C+. 1180: ae 02 46 4f 4d 42 01 00 00 00 9e 02 00 00 c0 0b ..FOMB.......... 1190: 00 00 44 53 00 01 1a 7d da 54 28 d9 85 00 01 06 ..DS...}.T(..... 11a0: 18 42 10 07 10 0a 4b 61 02 c9 21 52 3c 18 94 05 .B....Ka..!R<... 11b0: 10 43 88 57 04 44 04 84 bc 0a b0 29 c0 24 88 fa .C.W.D.....).$.. 11c0: f7 87 28 09 0e 25 04 42 12 05 98 17 a0 5b 80 61 ..(..%.B.....[.a 11d0: 01 b6 05 98 16 e0 18 92 4a 03 a7 04 96 02 21 a1 ........J.....!. 11e0: 02 94 0b f0 2d 40 3b a2 24 0b b0 0c 23 02 8f 82 ....-@;.$...#... 11f0: a1 71 68 ec 30 2c 13 4c 83 38 8c b2 91 45 60 dc .qh.0,.L.8...E`. 1200: 4e 05 c8 15 20 4c 80 78 54 61 34 07 45 e0 42 63 N... L.xTa4.E.Bc 1210: 64 40 c8 a3 00 ab a3 d0 a4 12 d8 bd 00 65 02 2c d@...........e., 1220: 0a 10 27 c0 9a 00 63 48 32 28 40 9b 00 5b 20 42 ..'...cH2(@..[ B 1230: 0f d4 19 8a 46 70 02 51 6a 46 11 48 ac 1a 01 85 ....Fp.QjF.H.... 1240: 12 34 46 b0 10 81 c2 86 37 46 98 03 88 d1 fe 20 .4F.....7F..... 1250: 48 20 05 e3 66 91 46 83 1a 6b 82 63 f7 68 4e b8 H ..f.F..k.c.hN. 1260: 73 01 d2 e7 26 90 a3 3b b8 3a 07 4d 86 c7 b0 1e s...&..;.:.M.... 1270: 06 d8 29 00 ef 1a 50 d3 3f 78 26 08 0e 35 44 8f ..)...P.?x&..5D. 1280: 3a dc 09 1c fb 91 30 88 b3 3b 6e ac c3 c9 68 d0 :.....0..;n...h. 1290: a5 0a 30 7b 00 d0 d0 12 9c f6 99 84 7e 0f 38 9f ..0{........~.8. 12a0: 9e 21 89 fc 41 a0 46 e6 ff 3f b4 c7 78 5a 31 43 .!..A.F..?..xZ1C 12b0: 3e 0b 1c 16 13 0b a1 4d 6a 3c 40 40 e1 d1 40 08 >......Mj<@@..@. 12c0: 6f 06 9e af 09 46 86 90 93 f1 a0 06 e0 41 d7 3a o....F.......A.: 12d0: 32 8d 27 a6 21 cf e8 00 22 bf 32 78 0c 41 02 f9 2.'.!...".2x.A.. 12e0: c4 60 b8 c7 81 13 78 02 f0 59 40 10 92 00 21 51 .`....x..Y@...!Q 12f0: e3 a7 47 08 7e 7a 78 93 30 28 1f d2 99 f9 90 e1 ..G.~zx.0(...... 1300: 11 c2 07 c4 7b 9f 3b 19 c1 29 7b a4 e0 b0 7e 0e ....{.;..){...~. 1310: 20 c0 af 0f 8f 0d 09 7c ae 08 8c 1d aa fd 0a 40 ......|.......@ 1320: 08 1e ed 51 e0 54 23 1c 2d 78 08 8a 1c 03 4a cc ...Q.T#.-x....J. 1330: 18 50 03 38 85 d0 e7 73 04 47 14 25 f6 21 19 da .P.8...s.G.%.!.. 1340: 08 e1 1f 39 4e c1 f7 8b 23 3d ad 23 78 91 f0 08 ...9N...#=.#x... 1350: 30 e1 ce 28 a8 38 30 f4 ff 7f 4c 01 dc 7a 3b a6 0..(.80...L..z;. 1360: 80 3e c0 31 05 50 fc ff 3f a6 00 87 a8 c7 14 f4 .>.1.P..?....... 1370: 40 0c 7c 2e a1 0d ff 96 c1 8e 03 87 74 6a 8f 28 @.|.........tj.( 1380: 80 29 79 47 14 50 8c 14 d6 f1 04 18 05 3c 9b a0 .)yG.P.......<.. 1390: 22 1d 4f 80 ce ff ff 78 02 58 b8 9a bc 92 84 7d ".O....x.X.....} 13a0: 1e 78 1d 89 14 e3 41 e2 b5 e4 c1 24 46 98 08 8f .x....A....$F... 13b0: 27 1e 47 c0 b7 82 28 91 8e 3e c4 83 49 28 63 3e '.G...(..>..I(c> 13c0: a3 84 89 f9 04 70 22 ef 27 46 0a 73 2a 8f 27 2c .....p".'F.s*.', 13d0: c4 f1 04 a0 85 e2 e3 09 3a 2c 84 fe ff c7 13 dc ........:,...... 13e0: e1 c1 a7 0c fc 85 0c c6 f9 04 30 24 f0 7c 02 ca ..........0$.|.. 13f0: db 18 e6 80 02 8c 14 da f4 a9 d1 a8 55 83 32 35 ............U.25 1400: ca 34 a8 d5 a7 52 63 c6 4c 9c 52 bc 6c 8d df f2 .4...Rc.L.R.l... 1410: 9e 09 02 b1 20 0a 81 38 cc f3 42 20 96 a2 01 84 .... ..8..B .... 1420: 85 06 a1 42 a9 05 e2 98 20 34 92 0a 10 f6 ff 07 ...B.... 4...... 1430: 5b 82 1b 4c 49 44 30 08 5f 48 49 44 0c 41 d0 0c [..LID0._HID.A.. 1440: 0d 14 0b 5f 4c 49 44 00 a4 4c 50 4f 4c 5b 82 0f ..._LID..LPOL[.. 1450: 50 57 52 42 08 5f 48 49 44 0c 41 d0 0c 0c 5b 82 PWRB._HID.A...[. 1460: 84 b9 04 50 43 49 30 14 09 5f 53 33 44 00 a4 0a ...PCI0.._S3D... 1470: 02 14 09 5f 53 34 44 00 a4 0a 02 08 5f 48 49 44 ..._S4D....._HID 1480: 0c 41 d0 0a 08 08 5f 43 49 44 0c 41 d0 0a 03 5b .A...._CID.A...[ 1490: 82 43 0e 4d 43 48 43 08 5f 41 44 52 00 5b 80 48 .C.MCHC._ADR.[.H 14a0: 42 55 53 02 0a 40 0a c0 5b 81 4a 0c 48 42 55 53 BUS..@..[.J.HBUS 14b0: 03 45 50 45 4e 01 00 0b 45 50 42 52 14 00 20 4d .EPEN...EPBR.. M 14c0: 48 45 4e 01 00 0d 4d 48 42 52 12 00 40 0a 50 58 HEN...MHBR..@.PX 14d0: 45 4e 01 50 58 53 5a 02 00 17 50 58 42 52 06 00 EN.PXSZ...PXBR.. 14e0: 20 44 49 45 4e 01 00 0b 44 49 42 52 14 00 20 49 DIEN...DIBR.. I 14f0: 50 45 4e 01 00 0b 49 50 42 52 14 00 40 0e 00 04 PEN...IPBR..@... 1500: 50 4d 30 48 02 00 02 50 4d 31 4c 02 00 02 50 4d PM0H...PM1L...PM 1510: 31 48 02 00 02 50 4d 32 4c 02 00 02 50 4d 32 48 1H...PM2L...PM2H 1520: 02 00 02 50 4d 33 4c 02 00 02 50 4d 33 48 02 00 ...PM3L...PM3H.. 1530: 02 50 4d 34 4c 02 00 02 50 4d 34 48 02 00 02 50 .PM4L...PM4H...P 1540: 4d 35 4c 02 00 02 50 4d 35 48 02 00 02 50 4d 36 M5L...PM5H...PM6 1550: 4c 02 00 02 50 4d 36 48 02 00 02 00 07 48 45 4e L...PM6H.....HEN 1560: 41 01 00 40 05 54 55 55 44 10 00 40 06 00 04 54 A..@.TUUD..@...T 1570: 4c 55 44 0c 08 42 55 46 30 11 4d 20 0b 08 02 88 LUD..BUF0.M .... 1580: 0d 00 02 0c 00 00 00 00 00 ff 00 00 00 00 01 87 ................ 1590: 17 00 01 0c 03 00 00 00 00 00 00 00 00 f7 0c 00 ................ 15a0: 00 00 00 00 00 f8 0c 00 00 47 01 f8 0c f8 0c 01 .........G...... 15b0: 08 87 17 00 01 0c 03 00 00 00 00 00 0d 00 00 ff ................ 15c0: ff 00 00 00 00 00 00 00 f3 00 00 87 17 00 00 0c ................ 15d0: 03 00 00 00 00 00 00 0a 00 ff ff 0b 00 00 00 00 ................ 15e0: 00 00 00 02 00 87 17 00 00 0c 03 00 00 00 00 00 ................ 15f0: 00 0c 00 ff 3f 0c 00 00 00 00 00 00 40 00 00 87 ....?.......@... 1600: 17 00 00 0c 03 00 00 00 00 00 40 0c 00 ff 7f 0c ..........@..... 1610: 00 00 00 00 00 00 40 00 00 87 17 00 00 0c 03 00 ......@......... 1620: 00 00 00 00 80 0c 00 ff bf 0c 00 00 00 00 00 00 ................ 1630: 40 00 00 87 17 00 00 0c 03 00 00 00 00 00 c0 0c @............... 1640: 00 ff ff 0c 00 00 00 00 00 00 40 00 00 87 17 00 ..........@..... 1650: 00 0c 03 00 00 00 00 00 00 0d 00 ff 3f 0d 00 00 ............?... 1660: 00 00 00 00 40 00 00 87 17 00 00 0c 03 00 00 00 ....@........... 1670: 00 00 40 0d 00 ff 7f 0d 00 00 00 00 00 00 40 00 ..@...........@. 1680: 00 87 17 00 00 0c 03 00 00 00 00 00 80 0d 00 ff ................ 1690: bf 0d 00 00 00 00 00 00 40 00 00 87 17 00 00 0c ........@....... 16a0: 03 00 00 00 00 00 c0 0d 00 ff ff 0d 00 00 00 00 ................ 16b0: 00 00 40 00 00 87 17 00 00 0c 03 00 00 00 00 00 ..@............. 16c0: 00 0e 00 ff 3f 0e 00 00 00 00 00 00 40 00 00 87 ....?.......@... 16d0: 17 00 00 0c 03 00 00 00 00 00 40 0e 00 ff 7f 0e ..........@..... 16e0: 00 00 00 00 00 00 40 00 00 87 17 00 00 0c 03 00 ......@......... 16f0: 00 00 00 00 80 0e 00 ff bf 0e 00 00 00 00 00 00 ................ 1700: 40 00 00 87 17 00 00 0c 03 00 00 00 00 00 c0 0e @............... 1710: 00 ff ff 0e 00 00 00 00 00 00 40 00 00 87 17 00 ..........@..... 1720: 00 0c 03 00 00 00 00 00 00 0f 00 ff ff 0f 00 00 ................ 1730: 00 00 00 00 00 01 00 87 17 00 00 0c 03 00 00 00 ................ 1740: 00 00 00 00 00 ff ff ff df 00 00 00 00 00 00 00 ................ 1750: 00 87 17 00 00 0c 03 00 00 00 00 00 00 00 f0 ff ................ 1760: ff bf fe 00 00 00 00 00 00 c0 0e 87 17 00 00 0c ................ 1770: 03 00 00 00 00 00 00 d4 fe ff 4f d4 fe 00 00 00 ..........O..... 1780: 00 00 00 00 00 79 00 14 4b 3d 5f 43 52 53 08 a0 .....y..K=_CRS.. 1790: 1c 5e 2e 4d 43 48 43 50 4d 31 4c 8a 42 55 46 30 .^.MCHCPM1L.BUF0 17a0: 0a 7c 43 30 4c 4e 70 00 43 30 4c 4e a0 1f 93 5e .|C0LNp.C0LN...^ 17b0: 2e 4d 43 48 43 50 4d 31 4c 01 8d 42 55 46 30 0b .MCHCPM1L..BUF0. 17c0: 58 03 43 30 52 57 70 00 43 30 52 57 a0 1c 5e 2e X.C0RWp.C0RW..^. 17d0: 4d 43 48 43 50 4d 31 48 8a 42 55 46 30 0a 96 43 MCHCPM1H.BUF0..C 17e0: 34 4c 4e 70 00 43 34 4c 4e a0 1f 93 5e 2e 4d 43 4LNp.C4LN...^.MC 17f0: 48 43 50 4d 31 48 01 8d 42 55 46 30 0b 28 04 43 HCPM1H..BUF0.(.C 1800: 34 52 57 70 00 43 34 52 57 a0 1c 5e 2e 4d 43 48 4RWp.C4RW..^.MCH 1810: 43 50 4d 32 4c 8a 42 55 46 30 0a b0 43 38 4c 4e CPM2L.BUF0..C8LN 1820: 70 00 43 38 4c 4e a0 1f 93 5e 2e 4d 43 48 43 50 p.C8LN...^.MCHCP 1830: 4d 32 4c 01 8d 42 55 46 30 0b f8 04 43 38 52 57 M2L..BUF0...C8RW 1840: 70 00 43 38 52 57 a0 1c 5e 2e 4d 43 48 43 50 4d p.C8RW..^.MCHCPM 1850: 32 48 8a 42 55 46 30 0a ca 43 43 4c 4e 70 00 43 2H.BUF0..CCLNp.C 1860: 43 4c 4e a0 1f 93 5e 2e 4d 43 48 43 50 4d 32 48 CLN...^.MCHCPM2H 1870: 01 8d 42 55 46 30 0b c8 05 43 43 52 57 70 00 43 ..BUF0...CCRWp.C 1880: 43 52 57 a0 1c 5e 2e 4d 43 48 43 50 4d 33 4c 8a CRW..^.MCHCPM3L. 1890: 42 55 46 30 0a e4 44 30 4c 4e 70 00 44 30 4c 4e BUF0..D0LNp.D0LN 18a0: a0 1f 93 5e 2e 4d 43 48 43 50 4d 33 4c 01 8d 42 ...^.MCHCPM3L..B 18b0: 55 46 30 0b 98 06 44 30 52 57 70 00 44 30 52 57 UF0...D0RWp.D0RW 18c0: a0 1c 5e 2e 4d 43 48 43 50 4d 33 48 8a 42 55 46 ..^.MCHCPM3H.BUF 18d0: 30 0a fe 44 34 4c 4e 70 00 44 34 4c 4e a0 1f 93 0..D4LNp.D4LN... 18e0: 5e 2e 4d 43 48 43 50 4d 33 48 01 8d 42 55 46 30 ^.MCHCPM3H..BUF0 18f0: 0b 68 07 44 34 52 57 70 00 44 34 52 57 a0 1d 5e .h.D4RWp.D4RW..^ 1900: 2e 4d 43 48 43 50 4d 34 4c 8a 42 55 46 30 0b 18 .MCHCPM4L.BUF0.. 1910: 01 44 38 4c 4e 70 00 44 38 4c 4e a0 1f 93 5e 2e .D8LNp.D8LN...^. 1920: 4d 43 48 43 50 4d 34 4c 01 8d 42 55 46 30 0b 38 MCHCPM4L..BUF0.8 1930: 08 44 38 52 57 70 00 44 38 52 57 a0 1d 5e 2e 4d .D8RWp.D8RW..^.M 1940: 43 48 43 50 4d 34 48 8a 42 55 46 30 0b 32 01 44 CHCPM4H.BUF0.2.D 1950: 43 4c 4e 70 00 44 43 4c 4e a0 1f 93 5e 2e 4d 43 CLNp.DCLN...^.MC 1960: 48 43 50 4d 34 48 01 8d 42 55 46 30 0b 08 09 44 HCPM4H..BUF0...D 1970: 43 52 57 70 00 44 43 52 57 a0 1d 5e 2e 4d 43 48 CRWp.DCRW..^.MCH 1980: 43 50 4d 35 4c 8a 42 55 46 30 0b 4c 01 45 30 4c CPM5L.BUF0.L.E0L 1990: 4e 70 00 45 30 4c 4e a0 1f 93 5e 2e 4d 43 48 43 Np.E0LN...^.MCHC 19a0: 50 4d 35 4c 01 8d 42 55 46 30 0b d8 09 45 30 52 PM5L..BUF0...E0R 19b0: 57 70 00 45 30 52 57 a0 1d 5e 2e 4d 43 48 43 50 Wp.E0RW..^.MCHCP 19c0: 4d 35 48 8a 42 55 46 30 0b 66 01 45 34 4c 4e 70 M5H.BUF0.f.E4LNp 19d0: 00 45 34 4c 4e a0 1f 93 5e 2e 4d 43 48 43 50 4d .E4LN...^.MCHCPM 19e0: 35 48 01 8d 42 55 46 30 0b a8 0a 45 34 52 57 70 5H..BUF0...E4RWp 19f0: 00 45 34 52 57 a0 1d 5e 2e 4d 43 48 43 50 4d 36 .E4RW..^.MCHCPM6 1a00: 4c 8a 42 55 46 30 0b 80 01 45 38 4c 4e 70 00 45 L.BUF0...E8LNp.E 1a10: 38 4c 4e a0 1f 93 5e 2e 4d 43 48 43 50 4d 36 4c 8LN...^.MCHCPM6L 1a20: 01 8d 42 55 46 30 0b 78 0b 45 38 52 57 70 00 45 ..BUF0.x.E8RWp.E 1a30: 38 52 57 a0 1d 5e 2e 4d 43 48 43 50 4d 36 48 8a 8RW..^.MCHCPM6H. 1a40: 42 55 46 30 0b 9a 01 45 43 4c 4e 70 00 45 43 4c BUF0...ECLNp.ECL 1a50: 4e a0 1f 93 5e 2e 4d 43 48 43 50 4d 36 48 01 8d N...^.MCHCPM6H.. 1a60: 42 55 46 30 0b 48 0c 45 43 52 57 70 00 45 43 52 BUF0.H.ECRWp.ECR 1a70: 57 a0 1d 5e 2e 4d 43 48 43 50 4d 30 48 8a 42 55 W..^.MCHCPM0H.BU 1a80: 46 30 0b b4 01 46 30 4c 4e 70 00 46 30 4c 4e a0 F0...F0LNp.F0LN. 1a90: 1f 93 5e 2e 4d 43 48 43 50 4d 30 48 01 8d 42 55 ..^.MCHCPM0H..BU 1aa0: 46 30 0b 18 0d 46 30 52 57 70 00 46 30 52 57 8a F0...F0RWp.F0RW. 1ab0: 42 55 46 30 0b c2 01 4d 31 4d 4e 8a 42 55 46 30 BUF0...M1MN.BUF0 1ac0: 0b c6 01 4d 31 4d 58 8a 42 55 46 30 0b ce 01 4d ...M1MX.BUF0...M 1ad0: 31 4c 4e 8a 42 55 46 30 0b dc 01 4d 32 4d 4e 8a 1LN.BUF0...M2MN. 1ae0: 42 55 46 30 0b e0 01 4d 32 4d 58 8a 42 55 46 30 BUF0...M2MX.BUF0 1af0: 0b e8 01 4d 32 4c 4e 79 5e 2e 4d 43 48 43 50 58 ...M2LNy^.MCHCPX 1b00: 42 52 0a 1a 4d 31 4d 58 7a 0c 00 00 00 10 5e 2e BR..M1MXz.....^. 1b10: 4d 43 48 43 50 58 53 5a 60 72 4d 31 4d 58 60 4d MCHCPXSZ`rM1MX`M 1b20: 32 4d 4e 72 74 4d 32 4d 58 4d 32 4d 4e 00 01 4d 2MNrtM2MXM2MN..M 1b30: 32 4c 4e 74 4d 31 4d 58 01 4d 31 4d 58 79 5e 2e 2LNtM1MX.M1MXy^. 1b40: 4d 43 48 43 54 4c 55 44 0a 14 4d 31 4d 4e 72 74 MCHCTLUD..M1MNrt 1b50: 4d 31 4d 58 4d 31 4d 4e 00 01 4d 31 4c 4e a4 42 M1MXM1MN..M1LN.B 1b60: 55 46 30 14 47 28 5f 50 52 54 00 a0 45 0f 47 50 UF0.G(_PRT..E.GP 1b70: 49 43 a4 12 4d 0e 13 12 0b 04 0c ff ff 01 00 00 IC..M........... 1b80: 00 0a 10 12 0b 04 0c ff ff 02 00 00 00 0a 10 12 ................ 1b90: 0b 04 0c ff ff 07 00 00 00 0a 10 12 0b 04 0c ff ................ 1ba0: ff 19 00 00 00 0a 14 12 0b 04 0c ff ff 1a 00 00 ................ 1bb0: 00 0a 10 12 0b 04 0c ff ff 1a 00 01 00 0a 15 12 ................ 1bc0: 0c 04 0c ff ff 1a 00 0a 02 00 0a 12 12 0b 04 0c ................ 1bd0: ff ff 1b 00 00 00 0a 16 12 0b 04 0c ff ff 1c 00 ................ 1be0: 00 00 0a 11 12 0b 04 0c ff ff 1c 00 01 00 0a 10 ................ 1bf0: 12 0c 04 0c ff ff 1c 00 0a 02 00 0a 12 12 0c 04 ................ 1c00: 0c ff ff 1c 00 0a 03 00 0a 13 12 0b 04 0c ff ff ................ 1c10: 1d 00 00 00 0a 17 12 0b 04 0c ff ff 1d 00 01 00 ................ 1c20: 0a 13 12 0c 04 0c ff ff 1d 00 0a 02 00 0a 12 12 ................ 1c30: 0b 04 0c ff ff 1f 00 00 00 0a 13 12 0b 04 0c ff ................ 1c40: ff 1f 00 01 00 0a 13 12 0c 04 0c ff ff 1f 00 0a ................ 1c50: 02 00 0a 13 12 0c 04 0c ff ff 1f 00 0a 03 00 0a ................ 1c60: 10 a1 49 18 a4 12 45 18 13 12 13 04 0c ff ff 01 ..I...E......... 1c70: 00 00 5e 2e 4c 50 43 42 4c 4e 4b 41 00 12 13 04 ..^.LPCBLNKA.... 1c80: 0c ff ff 02 00 00 5e 2e 4c 50 43 42 4c 4e 4b 41 ......^.LPCBLNKA 1c90: 00 12 13 04 0c ff ff 07 00 00 5e 2e 4c 50 43 42 ..........^.LPCB 1ca0: 4c 4e 4b 41 00 12 13 04 0c ff ff 19 00 00 5e 2e LNKA..........^. 1cb0: 4c 50 43 42 4c 4e 4b 45 00 12 13 04 0c ff ff 1a LPCBLNKE........ 1cc0: 00 00 5e 2e 4c 50 43 42 4c 4e 4b 41 00 12 13 04 ..^.LPCBLNKA.... 1cd0: 0c ff ff 1a 00 01 5e 2e 4c 50 43 42 4c 4e 4b 46 ......^.LPCBLNKF 1ce0: 00 12 14 04 0c ff ff 1a 00 0a 02 5e 2e 4c 50 43 ...........^.LPC 1cf0: 42 4c 4e 4b 43 00 12 13 04 0c ff ff 1b 00 00 5e BLNKC..........^ 1d00: 2e 4c 50 43 42 4c 4e 4b 47 00 12 13 04 0c ff ff .LPCBLNKG....... 1d10: 1c 00 00 5e 2e 4c 50 43 42 4c 4e 4b 42 00 12 13 ...^.LPCBLNKB... 1d20: 04 0c ff ff 1c 00 01 5e 2e 4c 50 43 42 4c 4e 4b .......^.LPCBLNK 1d30: 41 00 12 14 04 0c ff ff 1c 00 0a 02 5e 2e 4c 50 A...........^.LP 1d40: 43 42 4c 4e 4b 43 00 12 14 04 0c ff ff 1c 00 0a CBLNKC.......... 1d50: 03 5e 2e 4c 50 43 42 4c 4e 4b 44 00 12 13 04 0c .^.LPCBLNKD..... 1d60: ff ff 1d 00 00 5e 2e 4c 50 43 42 4c 4e 4b 48 00 .....^.LPCBLNKH. 1d70: 12 13 04 0c ff ff 1d 00 01 5e 2e 4c 50 43 42 4c .........^.LPCBL 1d80: 4e 4b 44 00 12 14 04 0c ff ff 1d 00 0a 02 5e 2e NKD...........^. 1d90: 4c 50 43 42 4c 4e 4b 43 00 12 13 04 0c ff ff 1f LPCBLNKC........ 1da0: 00 00 5e 2e 4c 50 43 42 4c 4e 4b 44 00 12 13 04 ..^.LPCBLNKD.... 1db0: 0c ff ff 1f 00 01 5e 2e 4c 50 43 42 4c 4e 4b 44 ......^.LPCBLNKD 1dc0: 00 12 14 04 0c ff ff 1f 00 0a 02 5e 2e 4c 50 43 ...........^.LPC 1dd0: 42 4c 4e 4b 44 00 12 14 04 0c ff ff 1f 00 0a 03 BLNKD........... 1de0: 5e 2e 4c 50 43 42 4c 4e 4b 41 00 5b 82 40 14 50 ^.LPCBLNKA.[.@.P 1df0: 44 52 43 08 5f 48 49 44 0c 41 d0 0c 02 08 5f 55 DRC._HID.A...._U 1e00: 49 44 01 08 42 55 46 30 11 46 06 0a 62 86 09 00 ID..BUF0.F..b... 1e10: 01 00 00 00 00 00 40 00 00 86 09 00 01 00 00 00 ......@......... 1e20: 00 00 40 00 00 86 09 00 01 00 00 00 00 00 10 00 ..@............. 1e30: 00 86 09 00 01 00 00 00 00 00 10 00 00 86 09 00 ................ 1e40: 01 00 00 00 00 00 00 00 00 86 09 00 01 00 00 d2 ................ 1e50: fe 00 00 02 00 86 09 00 01 00 00 d4 fe 00 50 00 ..............P. 1e60: 00 86 09 00 01 00 50 d4 fe 00 b0 04 00 79 00 14 ......P......y.. 1e70: 4d 0b 5f 43 52 53 08 8a 42 55 46 30 0a 04 52 42 M._CRS..BUF0..RB 1e80: 52 30 79 5e 5e 2e 4c 50 43 42 52 43 42 41 0a 0e R0y^^.LPCBRCBA.. 1e90: 52 42 52 30 8a 42 55 46 30 0a 10 4d 42 52 30 79 RBR0.BUF0..MBR0y 1ea0: 5e 5e 2e 4d 43 48 43 4d 48 42 52 0a 0e 4d 42 52 ^^.MCHCMHBR..MBR 1eb0: 30 8a 42 55 46 30 0a 1c 44 42 52 30 79 5e 5e 2e 0.BUF0..DBR0y^^. 1ec0: 4d 43 48 43 44 49 42 52 0a 0c 44 42 52 30 8a 42 MCHCDIBR..DBR0.B 1ed0: 55 46 30 0a 28 45 42 52 30 79 5e 5e 2e 4d 43 48 UF0.(EBR0y^^.MCH 1ee0: 43 45 50 42 52 0a 0c 45 42 52 30 8a 42 55 46 30 CEPBR..EBR0.BUF0 1ef0: 0a 34 58 42 52 30 79 5e 5e 2e 4d 43 48 43 50 58 .4XBR0y^^.MCHCPX 1f00: 42 52 0a 1a 58 42 52 30 8a 42 55 46 30 0a 38 58 BR..XBR0.BUF0.8X 1f10: 53 5a 30 7a 0c 00 00 00 10 5e 5e 2e 4d 43 48 43 SZ0z.....^^.MCHC 1f20: 50 58 53 5a 58 53 5a 30 a4 42 55 46 30 5b 82 4d PXSZXSZ0.BUF0[.M 1f30: 50 50 45 47 50 08 5f 41 44 52 0c 00 00 01 00 14 PPEGP._ADR...... 1f40: 41 09 5f 50 52 54 00 a0 33 47 50 49 43 a4 12 2c A._PRT..3GPIC.., 1f50: 04 12 09 04 0b ff ff 00 00 0a 10 12 09 04 0b ff ................ 1f60: ff 01 00 0a 11 12 0a 04 0b ff ff 0a 02 00 0a 12 ................ 1f70: 12 0a 04 0b ff ff 0a 03 00 0a 13 a1 45 05 a4 12 ............E... 1f80: 41 05 04 12 12 04 0b ff ff 00 5e 5e 2e 4c 50 43 A.........^^.LPC 1f90: 42 4c 4e 4b 41 00 12 12 04 0b ff ff 01 5e 5e 2e BLNKA........^^. 1fa0: 4c 50 43 42 4c 4e 4b 42 00 12 13 04 0b ff ff 0a LPCBLNKB........ 1fb0: 02 5e 5e 2e 4c 50 43 42 4c 4e 4b 43 00 12 13 04 .^^.LPCBLNKC.... 1fc0: 0b ff ff 0a 03 5e 5e 2e 4c 50 43 42 4c 4e 4b 44 .....^^.LPCBLNKD 1fd0: 00 5b 82 49 46 56 47 41 5f 08 5f 41 44 52 00 08 .[.IFVGA_._ADR.. 1fe0: 53 57 49 54 01 08 43 52 54 41 01 08 4c 43 44 41 SWIT..CRTA..LCDA 1ff0: 01 08 54 56 41 41 01 08 56 4c 44 46 01 5b 80 56 ..TVAA..VLDF.[.V 2000: 49 44 53 02 00 0a c8 5b 81 0b 56 49 44 53 03 56 IDS....[..VIDS.V 2010: 44 49 44 20 14 09 5f 53 54 41 00 a4 0a 0f 08 5f DID .._STA....._ 2020: 50 53 43 00 14 0c 5f 50 53 30 00 70 00 5f 50 53 PSC..._PS0.p._PS 2030: 43 14 0c 5f 50 53 31 00 70 01 5f 50 53 43 14 0d C.._PS1.p._PSC.. 2040: 5f 50 53 33 00 70 0a 03 5f 50 53 43 14 10 5f 44 _PS3.p.._PSC.._D 2050: 4f 53 01 70 7b 68 0a 03 00 53 57 49 54 14 17 5f OS.p{h...SWIT.._ 2060: 44 4f 44 00 a4 12 0f 03 0c 00 01 01 00 0c 10 01 DOD............. 2070: 01 00 0b 00 02 5b 82 4d 08 43 52 54 5f 14 0a 5f .....[.M.CRT_.._ 2080: 41 44 52 00 a4 0b 00 01 14 41 06 5f 44 43 53 00 ADR......A._DCS. 2090: 5e 5e 5e 5e 2e 4c 50 43 42 50 48 53 53 0a 0c 70 ^^^^.LPCBPHSS..p 20a0: 43 41 44 4c 60 70 43 53 54 45 61 7b 60 0a 02 60 CADL`pCSTEa{`..` 20b0: 7b 61 0a 02 61 a0 08 60 70 01 43 52 54 41 a1 07 {a..a..`p.CRTA.. 20c0: 70 00 43 52 54 41 a0 13 43 52 54 41 a0 08 93 61 p.CRTA..CRTA...a 20d0: 0a 02 a4 0a 1f a1 04 a4 0a 1d a1 0f a0 08 93 61 ...............a 20e0: 0a 02 a4 0a 0f a1 04 a4 0a 0d 14 12 5f 44 47 53 ............_DGS 20f0: 00 a0 07 43 52 54 41 a4 01 a1 03 a4 00 14 06 5f ...CRTA........_ 2100: 44 53 53 01 5b 82 47 0e 4c 43 44 5f 14 0a 5f 41 DSS.[.G.LCD_.._A 2110: 44 52 00 a4 0b 10 01 14 4d 05 5f 44 43 53 00 5e DR......M._DCS.^ 2120: 5e 5e 5e 2e 4c 50 43 42 50 48 53 53 0a 0c 70 43 ^^^.LPCBPHSS..pC 2130: 41 44 4c 60 70 43 53 54 45 61 7b 60 01 60 7b 61 ADL`pCSTEa{`.`{a 2140: 01 61 a0 08 60 70 01 4c 43 44 41 a1 07 70 00 4c .a..`p.LCDA..p.L 2150: 43 44 41 a0 12 4c 43 44 41 a0 07 93 61 01 a4 0a CDA..LCDA...a... 2160: 1f a1 04 a4 0a 1d a1 0e a0 07 93 61 01 a4 0a 0f ...........a.... 2170: a1 04 a4 0a 0d 14 12 5f 44 47 53 00 a0 07 4c 43 ......._DGS...LC 2180: 44 41 a4 01 a1 03 a4 00 14 06 5f 44 53 53 01 14 DA........_DSS.. 2190: 1d 5f 42 43 4c 00 a4 12 15 0a 0a 46 0a 28 00 0a ._BCL......F.(.. 21a0: 0a 0a 14 0a 1e 0a 28 0a 32 0a 3c 0a 46 14 20 5f ......(.2.<.F. _ 21b0: 42 43 4d 01 78 68 0a 0a 60 61 70 61 5e 5e 5e 5e BCM.xh..`apa^^^^ 21c0: 2f 03 4c 50 43 42 45 43 30 5f 42 52 54 53 14 1e /.LPCBEC0_BRTS.. 21d0: 5f 42 51 43 00 77 5e 5e 5e 5e 2f 03 4c 50 43 42 _BQC.w^^^^/.LPCB 21e0: 45 43 30 5f 42 52 54 53 0a 0a 60 a4 60 5b 82 4d EC0_BRTS..`.`[.M 21f0: 08 54 56 5f 5f 14 0a 5f 41 44 52 00 a4 0b 00 02 .TV__.._ADR..... 2200: 14 41 06 5f 44 43 53 00 5e 5e 5e 5e 2e 4c 50 43 .A._DCS.^^^^.LPC 2210: 42 50 48 53 53 0a 0c 70 43 41 44 4c 60 70 43 53 BPHSS..pCADL`pCS 2220: 54 45 61 7b 60 0a 04 60 7b 61 0a 04 61 a0 08 60 TEa{`..`{a..a..` 2230: 70 01 54 56 41 41 a1 07 70 00 54 56 41 41 a0 13 p.TVAA..p.TVAA.. 2240: 54 56 41 41 a0 08 93 61 0a 04 a4 0a 1f a1 04 a4 TVAA...a........ 2250: 0a 1d a1 0f a0 08 93 61 0a 04 a4 0a 0f a1 04 a4 .......a........ 2260: 0a 0d 14 12 5f 44 47 53 00 a0 07 54 56 41 41 a4 ...._DGS...TVAA. 2270: 01 a1 03 a4 00 14 06 5f 44 53 53 01 14 49 10 44 ......._DSS..I.D 2280: 53 53 57 00 a0 4a 0e 93 53 57 49 54 00 5e 5e 5e SSW..J..SWIT.^^^ 2290: 2e 4c 50 43 42 50 48 53 53 0a 0c 70 43 41 44 4c .LPCBPHSS..pCADL 22a0: 60 70 43 53 54 45 61 a0 16 94 61 01 7b 60 61 56 `pCSTEa...a.{`aV 22b0: 4c 44 46 7b 56 4c 44 46 0a fe 56 4c 44 46 a0 43 LDF{VLDF..VLDF.C 22c0: 0a 56 4c 44 46 a0 27 93 60 0a 09 a0 0b 93 61 0a .VLDF.'.`.....a. 22d0: 08 53 54 42 4c 0a 02 a0 0a 93 61 01 53 54 42 4c .STBL.....a.STBL 22e0: 0a 03 a0 0a 93 61 0a 09 53 54 42 4c 01 a0 28 93 .....a..STBL..(. 22f0: 60 0a 0a a0 0b 93 61 0a 08 53 54 42 4c 0a 05 a0 `.....a..STBL... 2300: 0a 93 61 0a 02 53 54 42 4c 01 a0 0b 93 61 0a 0a ..a..STBL....a.. 2310: 53 54 42 4c 0a 04 a0 4b 04 93 60 0a 0b a0 0b 93 STBL...K..`..... 2320: 61 0a 08 53 54 42 4c 0a 02 a0 0b 93 61 0a 09 53 a..STBL.....a..S 2330: 54 42 4c 0a 05 a0 0a 93 61 01 53 54 42 4c 0a 03 TBL.....a.STBL.. 2340: a0 0b 93 61 0a 0a 53 54 42 4c 0a 04 a0 0a 93 61 ...a..STBL.....a 2350: 0a 02 53 54 42 4c 01 a0 0a 93 61 0a 0b 53 54 42 ..STBL....a..STB 2360: 4c 01 a1 0c 70 01 56 4c 44 46 53 54 42 4c 01 a1 L...p.VLDFSTBL.. 2370: 16 a0 14 93 53 57 49 54 01 5e 5e 5e 2e 4c 50 43 ....SWIT.^^^.LPC 2380: 42 50 48 53 53 01 14 45 0b 53 54 42 4c 01 a0 16 BPHSS..E.STBL... 2390: 93 68 01 70 00 43 52 54 41 70 01 4c 43 44 41 70 .h.p.CRTAp.LCDAp 23a0: 00 54 56 41 41 a0 17 93 68 0a 02 70 01 43 52 54 .TVAA...h..p.CRT 23b0: 41 70 00 4c 43 44 41 70 00 54 56 41 41 a0 17 93 Ap.LCDAp.TVAA... 23c0: 68 0a 03 70 01 43 52 54 41 70 01 4c 43 44 41 70 h..p.CRTAp.LCDAp 23d0: 00 54 56 41 41 a0 17 93 68 0a 04 70 00 43 52 54 .TVAA...h..p.CRT 23e0: 41 70 00 4c 43 44 41 70 01 54 56 41 41 a0 17 93 Ap.LCDAp.TVAA... 23f0: 68 0a 05 70 00 43 52 54 41 70 01 4c 43 44 41 70 h..p.CRTAp.LCDAp 2400: 01 54 56 41 41 a0 17 93 68 0a 06 70 01 43 52 54 .TVAA...h..p.CRT 2410: 41 70 00 4c 43 44 41 70 01 54 56 41 41 a0 17 93 Ap.LCDAp.TVAA... 2420: 68 0a 07 70 01 43 52 54 41 70 01 4c 43 44 41 70 h..p.CRTAp.LCDAp 2430: 01 54 56 41 41 86 56 47 41 5f 0a 80 5b 82 42 f8 .TVAA.VGA_..[.B. 2440: 47 46 58 30 08 5f 41 44 52 0c 00 00 02 00 14 10 GFX0._ADR....... 2450: 5f 44 4f 53 01 70 7b 68 0a 07 00 44 53 45 4e 14 _DOS.p{h...DSEN. 2460: 41 26 5f 44 4f 44 00 70 00 4e 44 49 44 a0 15 92 A&_DOD.p.NDID... 2470: 93 44 49 44 4c 00 70 53 44 44 4c 44 49 44 31 44 .DIDL.pSDDLDID1D 2480: 49 44 31 a0 15 92 93 44 44 4c 32 00 70 53 44 44 ID1....DDL2.pSDD 2490: 4c 44 49 44 32 44 49 44 32 a0 15 92 93 44 44 4c LDID2DID2....DDL 24a0: 33 00 70 53 44 44 4c 44 49 44 33 44 49 44 33 a0 3.pSDDLDID3DID3. 24b0: 15 92 93 44 44 4c 34 00 70 53 44 44 4c 44 49 44 ...DDL4.pSDDLDID 24c0: 34 44 49 44 34 a0 15 92 93 44 44 4c 35 00 70 53 4DID4....DDL5.pS 24d0: 44 44 4c 44 49 44 35 44 49 44 35 a0 2c 93 4e 44 DDLDID5DID5.,.ND 24e0: 49 44 01 08 54 4d 50 31 12 07 01 0c ff ff ff ff ID..TMP1........ 24f0: 70 7d 0c 00 00 01 00 44 49 44 31 00 88 54 4d 50 p}.....DID1..TMP 2500: 31 00 00 a4 54 4d 50 31 a0 46 04 93 4e 44 49 44 1...TMP1.F..NDID 2510: 0a 02 08 54 4d 50 32 12 0c 02 0c ff ff ff ff 0c ...TMP2......... 2520: ff ff ff ff 70 7d 0c 00 00 01 00 44 49 44 31 00 ....p}.....DID1. 2530: 88 54 4d 50 32 00 00 70 7d 0c 00 00 01 00 44 49 .TMP2..p}.....DI 2540: 44 32 00 88 54 4d 50 32 01 00 a4 54 4d 50 32 a0 D2..TMP2...TMP2. 2550: 4f 05 93 4e 44 49 44 0a 03 08 54 4d 50 33 12 11 O..NDID...TMP3.. 2560: 03 0c ff ff ff ff 0c ff ff ff ff 0c ff ff ff ff ................ 2570: 70 7d 0c 00 00 01 00 44 49 44 31 00 88 54 4d 50 p}.....DID1..TMP 2580: 33 00 00 70 7d 0c 00 00 01 00 44 49 44 32 00 88 3..p}.....DID2.. 2590: 54 4d 50 33 01 00 70 7d 0c 00 00 01 00 44 49 44 TMP3..p}.....DID 25a0: 33 00 88 54 4d 50 33 0a 02 00 a4 54 4d 50 33 a0 3..TMP3....TMP3. 25b0: 48 07 93 4e 44 49 44 0a 04 08 54 4d 50 34 12 16 H..NDID...TMP4.. 25c0: 04 0c ff ff ff ff 0c ff ff ff ff 0c ff ff ff ff ................ 25d0: 0c ff ff ff ff 70 7d 0c 00 00 01 00 44 49 44 31 .....p}.....DID1 25e0: 00 88 54 4d 50 34 00 00 70 7d 0c 00 00 01 00 44 ..TMP4..p}.....D 25f0: 49 44 32 00 88 54 4d 50 34 01 00 70 7d 0c 00 00 ID2..TMP4..p}... 2600: 01 00 44 49 44 33 00 88 54 4d 50 34 0a 02 00 70 ..DID3..TMP4...p 2610: 7d 0c 00 00 01 00 44 49 44 34 00 88 54 4d 50 34 }.....DID4..TMP4 2620: 0a 03 00 a4 54 4d 50 34 a0 41 09 94 4e 44 49 44 ....TMP4.A..NDID 2630: 0a 04 08 54 4d 50 35 12 1b 05 0c ff ff ff ff 0c ...TMP5......... 2640: ff ff ff ff 0c ff ff ff ff 0c ff ff ff ff 0c ff ................ 2650: ff ff ff 70 7d 0c 00 00 01 00 44 49 44 31 00 88 ...p}.....DID1.. 2660: 54 4d 50 35 00 00 70 7d 0c 00 00 01 00 44 49 44 TMP5..p}.....DID 2670: 32 00 88 54 4d 50 35 01 00 70 7d 0c 00 00 01 00 2..TMP5..p}..... 2680: 44 49 44 33 00 88 54 4d 50 35 0a 02 00 70 7d 0c DID3..TMP5...p}. 2690: 00 00 01 00 44 49 44 34 00 88 54 4d 50 35 0a 03 ....DID4..TMP5.. 26a0: 00 70 7d 0c 00 00 01 00 44 49 44 34 00 88 54 4d .p}.....DID4..TM 26b0: 50 35 0a 04 00 a4 54 4d 50 35 a4 12 05 01 0b 00 P5....TMP5...... 26c0: 04 5b 82 43 06 44 44 30 31 14 1c 5f 41 44 52 08 .[.C.DD01.._ADR. 26d0: a0 09 93 44 49 44 31 00 a4 01 a1 0b a4 7b 0b ff ...DID1......{.. 26e0: ff 44 49 44 31 00 14 0f 5f 44 43 53 00 a4 43 44 .DID1..._DCS..CD 26f0: 44 53 44 49 44 31 14 0f 5f 44 47 53 00 a4 4e 44 DSDID1.._DGS..ND 2700: 44 53 44 49 44 31 14 1f 5f 44 53 53 01 a0 18 93 DSDID1.._DSS.... 2710: 7b 68 0c 00 00 00 c0 00 0c 00 00 00 c0 70 4e 53 {h...........pNS 2720: 54 45 43 53 54 45 5b 82 44 06 44 44 30 32 14 1d TECSTE[.D.DD02.. 2730: 5f 41 44 52 08 a0 0a 93 44 49 44 32 00 a4 0a 02 _ADR....DID2.... 2740: a1 0b a4 7b 0b ff ff 44 49 44 32 00 14 0f 5f 44 ...{...DID2..._D 2750: 43 53 00 a4 43 44 44 53 44 49 44 32 14 0f 5f 44 CS..CDDSDID2.._D 2760: 47 53 00 a4 4e 44 44 53 44 49 44 32 14 1f 5f 44 GS..NDDSDID2.._D 2770: 53 53 01 a0 18 93 7b 68 0c 00 00 00 c0 00 0c 00 SS....{h........ 2780: 00 00 c0 70 4e 53 54 45 43 53 54 45 5b 82 41 07 ...pNSTECSTE[.A. 2790: 44 44 30 33 14 1d 5f 41 44 52 08 a0 0a 93 44 49 DD03.._ADR....DI 27a0: 44 33 00 a4 0a 03 a1 0b a4 7b 0b ff ff 44 49 44 D3.......{...DID 27b0: 33 00 14 1c 5f 44 43 53 00 a0 0a 93 44 49 44 33 3..._DCS....DID3 27c0: 00 a4 0a 0b a1 0a a4 43 44 44 53 44 49 44 33 14 .......CDDSDID3. 27d0: 0f 5f 44 47 53 00 a4 4e 44 44 53 44 49 44 33 14 ._DGS..NDDSDID3. 27e0: 1f 5f 44 53 53 01 a0 18 93 7b 68 0c 00 00 00 c0 ._DSS....{h..... 27f0: 00 0c 00 00 00 c0 70 4e 53 54 45 43 53 54 45 5b ......pNSTECSTE[ 2800: 82 41 07 44 44 30 34 14 1d 5f 41 44 52 08 a0 0a .A.DD04.._ADR... 2810: 93 44 49 44 34 00 a4 0a 04 a1 0b a4 7b 0b ff ff .DID4.......{... 2820: 44 49 44 34 00 14 1c 5f 44 43 53 00 a0 0a 93 44 DID4..._DCS....D 2830: 49 44 34 00 a4 0a 0b a1 0a a4 43 44 44 53 44 49 ID4.......CDDSDI 2840: 44 34 14 0f 5f 44 47 53 00 a4 4e 44 44 53 44 49 D4.._DGS..NDDSDI 2850: 44 34 14 1f 5f 44 53 53 01 a0 18 93 7b 68 0c 00 D4.._DSS....{h.. 2860: 00 00 c0 00 0c 00 00 00 c0 70 4e 53 54 45 43 53 .........pNSTECS 2870: 54 45 5b 82 41 07 44 44 30 35 14 1d 5f 41 44 52 TE[.A.DD05.._ADR 2880: 08 a0 0a 93 44 49 44 35 00 a4 0a 05 a1 0b a4 7b ....DID5.......{ 2890: 0b ff ff 44 49 44 35 00 14 1c 5f 44 43 53 00 a0 ...DID5..._DCS.. 28a0: 0a 93 44 49 44 35 00 a4 0a 0b a1 0a a4 43 44 44 ..DID5.......CDD 28b0: 53 44 49 44 35 14 0f 5f 44 47 53 00 a4 4e 44 44 SDID5.._DGS..NDD 28c0: 53 44 49 44 35 14 1f 5f 44 53 53 01 a0 18 93 7b SDID5.._DSS....{ 28d0: 68 0c 00 00 00 c0 00 0c 00 00 00 c0 70 4e 53 54 h...........pNST 28e0: 45 43 53 54 45 14 4e 06 53 44 44 4c 01 75 4e 44 ECSTE.N.SDDL.uND 28f0: 49 44 70 7b 68 0b 0f 0f 00 60 7d 0c 00 00 00 80 IDp{h....`}..... 2900: 60 61 a0 09 93 44 49 44 4c 60 a4 61 a0 09 93 44 `a...DIDL`.a...D 2910: 44 4c 32 60 a4 61 a0 09 93 44 44 4c 33 60 a4 61 DL2`.a...DDL3`.a 2920: a0 09 93 44 44 4c 34 60 a4 61 a0 09 93 44 44 4c ...DDL4`.a...DDL 2930: 35 60 a4 61 a0 09 93 44 44 4c 36 60 a4 61 a0 09 5`.a...DDL6`.a.. 2940: 93 44 44 4c 37 60 a4 61 a0 09 93 44 44 4c 38 60 .DDL7`.a...DDL8` 2950: a4 61 a4 00 14 4a 08 43 44 44 53 01 a0 0f 93 43 .a...J.CDDS....C 2960: 41 44 4c 7b 68 0b 0f 0f 00 a4 0a 1f a0 0f 93 43 ADL{h..........C 2970: 41 4c 32 7b 68 0b 0f 0f 00 a4 0a 1f a0 0f 93 43 AL2{h..........C 2980: 41 4c 33 7b 68 0b 0f 0f 00 a4 0a 1f a0 0f 93 43 AL3{h..........C 2990: 41 4c 34 7b 68 0b 0f 0f 00 a4 0a 1f a0 0f 93 43 AL4{h..........C 29a0: 41 4c 35 7b 68 0b 0f 0f 00 a4 0a 1f a0 0f 93 43 AL5{h..........C 29b0: 41 4c 36 7b 68 0b 0f 0f 00 a4 0a 1f a0 0f 93 43 AL6{h..........C 29c0: 41 4c 37 7b 68 0b 0f 0f 00 a4 0a 1f a0 0f 93 43 AL7{h..........C 29d0: 41 4c 38 7b 68 0b 0f 0f 00 a4 0a 1f a4 0a 1d 14 AL8{h........... 29e0: 41 08 4e 44 44 53 01 a0 0e 93 4e 41 44 4c 7b 68 A.NDDS....NADL{h 29f0: 0b 0f 0f 00 a4 01 a0 0e 93 4e 44 4c 32 7b 68 0b .........NDL2{h. 2a00: 0f 0f 00 a4 01 a0 0e 93 4e 44 4c 33 7b 68 0b 0f ........NDL3{h.. 2a10: 0f 00 a4 01 a0 0e 93 4e 44 4c 34 7b 68 0b 0f 0f .......NDL4{h... 2a20: 00 a4 01 a0 0e 93 4e 44 4c 35 7b 68 0b 0f 0f 00 ......NDL5{h.... 2a30: a4 01 a0 0e 93 4e 44 4c 36 7b 68 0b 0f 0f 00 a4 .....NDL6{h..... 2a40: 01 a0 0e 93 4e 44 4c 37 7b 68 0b 0f 0f 00 a4 01 ....NDL7{h...... 2a50: a0 0e 93 4e 44 4c 38 7b 68 0b 0f 0f 00 a4 01 a4 ...NDL8{h....... 2a60: 00 14 40 07 42 52 54 4e 09 a0 14 93 7b 44 49 44 ..@.BRTN....{DID 2a70: 31 0b 00 0f 00 0b 00 04 86 44 44 30 31 68 a0 14 1........DD01h.. 2a80: 93 7b 44 49 44 32 0b 00 0f 00 0b 00 04 86 44 44 .{DID2........DD 2a90: 30 32 68 a0 14 93 7b 44 49 44 33 0b 00 0f 00 0b 02h...{DID3..... 2aa0: 00 04 86 44 44 30 33 68 a0 14 93 7b 44 49 44 34 ...DD03h...{DID4 2ab0: 0b 00 0f 00 0b 00 04 86 44 44 30 34 68 a0 14 93 ........DD04h... 2ac0: 7b 44 49 44 35 0b 00 0f 00 0b 00 04 86 44 44 30 {DID5........DD0 2ad0: 35 68 10 24 5e 5e 50 43 49 30 5b 80 4d 43 48 50 5h.$^^PCI0[.MCHP 2ae0: 02 0a 40 0a c0 5b 81 10 4d 43 48 50 00 00 40 30 ..@..[..MCHP..@0 2af0: 54 41 53 4d 0a 00 06 5b 80 49 47 44 50 02 0a 40 TASM...[.IGDP..@ 2b00: 0a c0 5b 81 45 05 49 47 44 50 00 00 40 09 00 01 ..[.E.IGDP..@... 2b10: 47 49 56 44 01 00 02 47 55 4d 41 03 00 09 00 04 GIVD...GUMA..... 2b20: 47 4d 46 4e 01 00 1b 00 40 46 41 53 4c 45 08 00 GMFN....@FASLE.. 2b30: 18 47 53 53 45 01 47 53 53 42 0e 47 53 45 53 01 .GSSE.GSSB.GSES. 2b40: 00 30 00 08 43 44 56 4c 05 00 03 00 18 4c 42 50 .0..CDVL.....LBP 2b50: 43 08 00 30 41 53 4c 53 20 5b 80 49 47 44 4d 00 C..0ASLS [.IGDM. 2b60: 41 53 4c 42 0b 00 20 5b 81 4e 16 49 47 44 4d 00 ASLB.. [.N.IGDM. 2b70: 53 49 47 4e 40 08 53 49 5a 45 20 4f 56 45 52 20 SIGN@.SIZE OVER 2b80: 53 56 45 52 40 10 56 56 45 52 40 08 47 56 45 52 SVER@.VVER@.GVER 2b90: 40 08 4d 42 4f 58 20 00 40 52 44 52 44 59 20 43 @.MBOX .@RDRDY C 2ba0: 53 54 53 20 43 45 56 54 20 00 40 0a 44 49 44 4c STS CEVT .@.DIDL 2bb0: 20 44 44 4c 32 20 44 44 4c 33 20 44 44 4c 34 20 DDL2 DDL3 DDL4 2bc0: 44 44 4c 35 20 44 44 4c 36 20 44 44 4c 37 20 44 DDL5 DDL6 DDL7 D 2bd0: 44 4c 38 20 43 50 44 4c 20 43 50 4c 32 20 43 50 DL8 CPDL CPL2 CP 2be0: 4c 33 20 43 50 4c 34 20 43 50 4c 35 20 43 50 4c L3 CPL4 CPL5 CPL 2bf0: 36 20 43 50 4c 37 20 43 50 4c 38 20 43 41 44 4c 6 CPL7 CPL8 CADL 2c00: 20 43 41 4c 32 20 43 41 4c 33 20 43 41 4c 34 20 CAL2 CAL3 CAL4 2c10: 43 41 4c 35 20 43 41 4c 36 20 43 41 4c 37 20 43 CAL5 CAL6 CAL7 C 2c20: 41 4c 38 20 4e 41 44 4c 20 4e 44 4c 32 20 4e 44 AL8 NADL NDL2 ND 2c30: 4c 33 20 4e 44 4c 34 20 4e 44 4c 35 20 4e 44 4c L3 NDL4 NDL5 NDL 2c40: 36 20 4e 44 4c 37 20 4e 44 4c 38 20 41 53 4c 50 6 NDL7 NDL8 ASLP 2c50: 20 54 49 44 58 20 43 48 50 44 20 43 4c 49 44 20 TIDX CHPD CLID 2c60: 43 44 43 4b 20 53 58 53 57 20 45 56 54 53 20 43 CDCK SXSW EVTS C 2c70: 4e 4f 54 20 4e 52 44 59 20 00 40 1e 53 43 49 45 NOT NRDY .@.SCIE 2c80: 01 47 45 46 43 04 47 58 46 43 03 47 45 53 46 08 .GEFC.GXFC.GESF. 2c90: 00 10 50 41 52 4d 20 44 53 4c 50 20 00 40 7a 41 ..PARM DSLP .@zA 2ca0: 52 44 59 20 41 53 4c 43 20 54 43 48 45 20 41 4c RDY ASLC TCHE AL 2cb0: 53 49 20 42 43 4c 50 20 50 46 49 54 20 43 42 4c SI BCLP PFIT CBL 2cc0: 56 20 42 43 4c 4d 40 14 43 50 46 4d 20 00 40 5c V BCLM@.CPFM .@\ 2cd0: 47 56 44 31 80 00 0e 08 44 42 54 42 12 32 15 00 GVD1....DBTB.2.. 2ce0: 0a 07 0a 38 0b c0 01 0b 00 0e 0a 3f 0b c7 01 0b ...8.......?.... 2cf0: 07 0e 0b f8 01 0b 38 0e 0b c0 0f 00 00 00 00 00 ......8......... 2d00: 0b 00 70 0b 07 70 0b 38 70 0b c0 71 0b 00 7e 08 ..p..p.8p..q..~. 2d10: 43 44 43 54 12 23 03 12 0a 03 0a c8 0b 40 01 0b CDCT.#.......@.. 2d20: 90 01 12 0a 03 0a c8 0b 4d 01 0b 90 01 12 0a 03 ........M....... 2d30: 0a de 0b 4d 01 0b 7d 01 08 53 55 43 43 01 08 4e ...M..}..SUCC..N 2d40: 56 4c 44 0a 02 08 43 52 49 54 0a 04 08 4e 43 52 VLD...CRIT...NCR 2d50: 54 0a 06 14 4c 4a 47 53 43 49 08 14 44 1e 47 42 T...LJGSCI..D.GB 2d60: 44 41 08 a0 1a 93 47 45 53 46 00 70 0b 79 02 50 DA....GESF.p.y.P 2d70: 41 52 4d 70 00 47 45 53 46 a4 53 55 43 43 a0 1a ARMp.GESF.SUCC.. 2d80: 93 47 45 53 46 01 70 0b 40 02 50 41 52 4d 70 00 .GESF.p.@.PARMp. 2d90: 47 45 53 46 a4 53 55 43 43 a0 47 04 93 47 45 53 GESF.SUCC.G..GES 2da0: 46 0a 04 7b 50 41 52 4d 0c 00 00 ff ef 50 41 52 F..{PARM.....PAR 2db0: 4d 7b 50 41 52 4d 79 83 88 44 42 54 42 49 42 54 M{PARMy..DBTBIBT 2dc0: 54 00 0a 10 00 50 41 52 4d 7d 49 42 54 54 50 41 T....PARM}IBTTPA 2dd0: 52 4d 50 41 52 4d 70 00 47 45 53 46 a4 53 55 43 RMPARMp.GESF.SUC 2de0: 43 a0 4a 06 93 47 45 53 46 0a 05 70 49 50 53 43 C.J..GESF..pIPSC 2df0: 50 41 52 4d 7d 50 41 52 4d 79 49 50 41 54 0a 08 PARM}PARMyIPAT.. 2e00: 00 50 41 52 4d 72 50 41 52 4d 0b 00 01 50 41 52 .PARMrPARM...PAR 2e10: 4d 7d 50 41 52 4d 79 4c 49 44 53 0a 10 00 50 41 M}PARMyLIDS...PA 2e20: 52 4d 72 50 41 52 4d 0c 00 00 01 00 50 41 52 4d RMrPARM.....PARM 2e30: 7d 50 41 52 4d 79 49 42 49 41 0a 14 00 50 41 52 }PARMyIBIA...PAR 2e40: 4d 70 00 47 45 53 46 a4 53 55 43 43 a0 2d 93 47 Mp.GESF.SUCC.-.G 2e50: 45 53 46 0a 06 70 49 54 56 46 50 41 52 4d 7d 50 ESF..pITVFPARM}P 2e60: 41 52 4d 79 49 54 56 4d 0a 04 00 50 41 52 4d 70 ARMyITVM...PARMp 2e70: 00 47 45 53 46 a4 53 55 43 43 a0 4f 08 93 47 45 .GESF.SUCC.O..GE 2e80: 53 46 0a 07 70 47 49 56 44 50 41 52 4d 7f 50 41 SF..pGIVDPARM.PA 2e90: 52 4d 01 50 41 52 4d 7d 50 41 52 4d 79 47 4d 46 RM.PARM}PARMyGMF 2ea0: 4e 01 00 50 41 52 4d 7d 50 41 52 4d 0b 00 10 50 N..PARM}PARM...P 2eb0: 41 52 4d a0 16 49 44 4d 4d 7d 50 41 52 4d 79 49 ARM..IDMM}PARMyI 2ec0: 44 4d 53 0a 11 00 50 41 52 4d a1 12 7d 50 41 52 DMS...PARM..}PAR 2ed0: 4d 79 49 44 4d 53 0a 0d 00 50 41 52 4d 7d 79 83 MyIDMS...PARM}y. 2ee0: 88 83 88 43 44 43 54 48 56 43 4f 00 74 43 44 56 ...CDCTHVCO.tCDV 2ef0: 4c 01 00 00 0a 15 00 50 41 52 4d 50 41 52 4d 70 L......PARMPARMp 2f00: 01 47 45 53 46 a4 53 55 43 43 a0 2a 93 47 45 53 .GESF.SUCC.*.GES 2f10: 46 0a 0a 70 00 50 41 52 4d a0 10 49 53 53 43 7d F..p.PARM..ISSC} 2f20: 50 41 52 4d 0a 03 50 41 52 4d 70 00 47 45 53 46 PARM..PARMp.GESF 2f30: a4 53 55 43 43 70 00 47 45 53 46 a4 43 52 49 54 .SUCCp.GESF.CRIT 2f40: 14 41 28 53 42 43 42 08 a0 20 93 47 45 53 46 00 .A(SBCB.. .GESF. 2f50: 70 00 50 41 52 4d 70 0b 7d f7 50 41 52 4d 70 00 p.PARMp.}.PARMp. 2f60: 47 45 53 46 a4 53 55 43 43 a0 18 93 47 45 53 46 GESF.SUCC...GESF 2f70: 01 70 00 47 45 53 46 70 00 50 41 52 4d a4 53 55 .p.GESFp.PARM.SU 2f80: 43 43 a0 19 93 47 45 53 46 0a 03 70 00 47 45 53 CC...GESF..p.GES 2f90: 46 70 00 50 41 52 4d a4 53 55 43 43 a0 19 93 47 Fp.PARM.SUCC...G 2fa0: 45 53 46 0a 04 70 00 47 45 53 46 70 00 50 41 52 ESF..p.GESFp.PAR 2fb0: 4d a4 53 55 43 43 a0 19 93 47 45 53 46 0a 05 70 M.SUCC...GESF..p 2fc0: 00 47 45 53 46 70 00 50 41 52 4d a4 53 55 43 43 .GESFp.PARM.SUCC 2fd0: a0 37 93 47 45 53 46 0a 06 70 7b 50 41 52 4d 0a .7.GESF..p{PARM. 2fe0: 0f 00 49 54 56 46 70 7a 7b 50 41 52 4d 0a f0 00 ..ITVFpz{PARM... 2ff0: 0a 04 00 49 54 56 4d 70 00 47 45 53 46 70 00 50 ...ITVMp.GESFp.P 3000: 41 52 4d a4 53 55 43 43 a0 19 93 47 45 53 46 0a ARM.SUCC...GESF. 3010: 07 70 00 47 45 53 46 70 00 50 41 52 4d a4 53 55 .p.GESFp.PARM.SU 3020: 43 43 a0 19 93 47 45 53 46 0a 08 70 00 47 45 53 CC...GESF..p.GES 3030: 46 70 00 50 41 52 4d a4 53 55 43 43 a0 24 93 47 Fp.PARM.SUCC.$.G 3040: 45 53 46 0a 09 7b 50 41 52 4d 0a ff 49 42 54 54 ESF..{PARM..IBTT 3050: 70 00 47 45 53 46 70 00 50 41 52 4d a4 53 55 43 p.GESFp.PARM.SUC 3060: 43 a0 46 05 93 47 45 53 46 0a 0a 7b 50 41 52 4d C.F..GESF..{PARM 3070: 0a ff 49 50 53 43 a0 21 7b 7a 50 41 52 4d 0a 08 ..IPSC.!{zPARM.. 3080: 00 0a ff 00 7b 7a 50 41 52 4d 0a 08 00 0a ff 49 ....{zPARM.....I 3090: 50 41 54 76 49 50 41 54 7b 7a 50 41 52 4d 0a 14 PATvIPAT{zPARM.. 30a0: 00 0a 07 49 42 49 41 70 00 47 45 53 46 70 00 50 ...IBIAp.GESFp.P 30b0: 41 52 4d a4 53 55 43 43 a0 40 06 93 47 45 53 46 ARM.SUCC.@..GESF 30c0: 0a 0b 7b 7a 50 41 52 4d 01 00 01 49 46 31 45 a0 ..{zPARM...IF1E. 30d0: 21 7b 50 41 52 4d 0c 00 e0 01 00 00 7b 7a 50 41 !{PARM......{zPA 30e0: 52 4d 0a 0d 00 0a 0f 49 44 4d 53 70 00 49 44 4d RM.....IDMSp.IDM 30f0: 4d a1 16 7b 7a 50 41 52 4d 0a 11 00 0a 0f 49 44 M..{zPARM.....ID 3100: 4d 53 70 01 49 44 4d 4d 70 00 47 45 53 46 70 00 MSp.IDMMp.GESFp. 3110: 50 41 52 4d a4 53 55 43 43 a0 19 93 47 45 53 46 PARM.SUCC...GESF 3120: 0a 10 70 00 47 45 53 46 70 00 50 41 52 4d a4 53 ..p.GESFp.PARM.S 3130: 55 43 43 a0 1f 93 47 45 53 46 0a 11 7d 50 41 52 UCC...GESF..}PAR 3140: 4d 0b 00 01 50 41 52 4d 70 00 47 45 53 46 a4 53 M...PARMp.GESF.S 3150: 55 43 43 a0 49 04 93 47 45 53 46 0a 12 a0 26 7b UCC.I..GESF...&{ 3160: 50 41 52 4d 01 00 a0 10 93 7a 50 41 52 4d 01 00 PARM.....zPARM.. 3170: 01 70 01 49 53 53 43 a1 0c 70 00 47 45 53 46 a4 .p.ISSC..p.GESF. 3180: 43 52 49 54 a1 07 70 00 49 53 53 43 70 00 47 45 CRIT..p.ISSCp.GE 3190: 53 46 70 00 50 41 52 4d a4 53 55 43 43 a0 19 93 SFp.PARM.SUCC... 31a0: 47 45 53 46 0a 13 70 00 47 45 53 46 70 00 50 41 GESF..p.GESFp.PA 31b0: 52 4d a4 53 55 43 43 70 00 47 45 53 46 a4 53 55 RM.SUCCp.GESF.SU 31c0: 43 43 a0 11 93 47 45 46 43 0a 04 70 47 42 44 41 CC...GEFC..pGBDA 31d0: 47 58 46 43 a0 11 93 47 45 46 43 0a 06 70 53 42 GXFC...GEFC..pSB 31e0: 43 42 47 58 46 43 70 00 47 45 46 43 70 01 53 43 CBGXFCp.GEFCp.SC 31f0: 49 53 70 00 47 53 53 45 70 00 53 43 49 45 a4 00 ISp.GSSEp.SCIE.. 3200: 14 19 50 44 52 44 00 a0 0c 92 44 52 44 59 5b 22 ..PDRD....DRDY[" 3210: 41 53 4c 50 a4 92 44 52 44 59 14 1d 50 53 54 53 ASLP..DRDY..PSTS 3220: 00 a0 0e 94 43 53 54 53 0a 02 5b 22 41 53 4c 50 ....CSTS..["ASLP 3230: a4 93 43 53 54 53 0a 03 14 47 06 47 4e 4f 54 02 ..CSTS...G.GNOT. 3240: a0 07 50 44 52 44 a4 01 a0 07 50 53 54 53 a4 01 ..PDRD....PSTS.. 3250: 70 68 43 45 56 54 70 0a 03 43 53 54 53 a0 2c 90 phCEVTp..CSTS.,. 3260: 93 43 48 50 44 00 93 69 00 a0 18 91 94 4f 53 59 .CHPD..i.....OSY 3270: 53 0b d0 07 95 4f 53 59 53 0b d6 07 86 50 43 49 S....OSYS....PCI 3280: 30 69 a1 07 86 47 46 58 30 69 86 47 46 58 30 0a 0i...GFX0i.GFX0. 3290: 80 a0 0c 92 50 53 54 53 70 00 43 45 56 54 a4 00 ....PSTSp.CEVT.. 32a0: 14 13 47 48 44 53 01 70 68 54 49 44 58 a4 47 4e ..GHDS.phTIDX.GN 32b0: 4f 54 01 00 14 14 47 4c 49 44 01 70 68 43 4c 49 OT....GLID.phCLI 32c0: 44 a4 47 4e 4f 54 0a 02 00 14 15 47 44 43 4b 01 D.GNOT.....GDCK. 32d0: 70 68 43 44 43 4b a4 47 4e 4f 54 0a 04 0a 80 14 phCDCK.GNOT..... 32e0: 19 50 41 52 44 00 a0 0c 92 41 52 44 59 5b 22 41 .PARD....ARDY["A 32f0: 53 4c 50 a4 92 41 52 44 59 14 46 0c 41 49 4e 54 SLP..ARDY.F.AINT 3300: 02 a0 0e 92 7b 54 43 48 45 79 01 68 00 00 a4 01 ....{TCHEy.h.... 3310: a0 07 50 41 52 44 a4 01 a0 4c 05 93 68 0a 02 a0 ..PARD...L..h... 3320: 33 43 50 46 4d a0 0e 93 43 50 46 4d 01 70 0a 06 3CPFM...CPFM.p.. 3330: 50 46 49 54 a0 0f 93 43 50 46 4d 0a 06 70 0a 08 PFIT...CPFM..p.. 3340: 50 46 49 54 a0 0e 93 43 50 46 4d 0a 08 70 01 50 PFIT...CPFM..p.P 3350: 46 49 54 a1 0c 7f 50 46 49 54 0a 07 50 46 49 54 FIT...PFIT..PFIT 3360: 7d 50 46 49 54 0c 00 00 00 80 50 46 49 54 70 0a }PFIT.....PFITp. 3370: 04 41 53 4c 43 a1 42 04 a0 28 93 68 01 70 78 77 .ASLC.B..(.h.pxw 3380: 69 0a ff 00 0a 64 00 00 42 43 4c 50 7d 42 43 4c i....d..BCLP}BCL 3390: 50 0c 00 00 00 80 42 43 4c 50 70 0a 02 41 53 4c P.....BCLPp..ASL 33a0: 43 a1 16 a0 10 93 68 00 70 69 41 4c 53 49 70 01 C.....h.piALSIp. 33b0: 41 53 4c 43 a1 03 a4 01 70 00 4c 42 50 43 a4 00 ASLC....p.LBPC.. 33c0: 10 41 36 5c 00 5b 80 49 4f 5f 54 01 0b 00 08 0a .A6\.[.IO_T..... 33d0: 10 5b 81 0e 49 4f 5f 54 01 00 40 04 54 52 50 30 .[..IO_T..@.TRP0 33e0: 08 5b 80 50 4d 49 4f 01 0b 00 10 0a 80 5b 81 28 .[.PMIO......[.( 33f0: 50 4d 49 4f 01 00 40 15 00 08 00 02 41 43 50 57 PMIO..@.....ACPW 3400: 01 00 45 0b 00 01 47 50 45 43 01 00 4e 10 00 09 ..E...GPEC..N... 3410: 53 43 49 53 01 00 06 5b 80 47 50 49 4f 01 0b 80 SCIS...[.GPIO... 3420: 11 0a 3c 5b 81 40 0c 47 50 49 4f 01 47 55 30 30 ..<[.@.GPIO.GU00 3430: 08 47 55 30 31 08 47 55 30 32 08 47 55 30 33 08 .GU01.GU02.GU03. 3440: 47 49 4f 30 08 47 49 4f 31 08 47 49 4f 32 08 47 GIO0.GIO1.GIO2.G 3450: 49 4f 33 08 00 20 47 4c 30 30 08 47 4c 30 31 08 IO3.. GL00.GL01. 3460: 47 4c 30 32 08 00 03 47 50 32 37 01 47 50 32 38 GL02...GP27.GP28 3470: 01 00 03 00 40 04 47 42 30 30 08 47 42 30 31 08 ....@.GB00.GB01. 3480: 47 42 30 32 08 47 42 30 33 08 00 40 08 47 49 56 GB02.GB03..@.GIV 3490: 30 08 00 03 4c 50 4f 4c 01 00 04 47 49 56 32 08 0...LPOL...GIV2. 34a0: 47 49 56 33 08 47 55 30 34 08 47 55 30 35 08 47 GIV3.GU04.GU05.G 34b0: 55 30 36 08 47 55 30 37 08 47 49 4f 34 08 47 49 U06.GU07.GIO4.GI 34c0: 4f 35 08 47 49 4f 36 08 47 49 4f 37 08 00 05 47 O5.GIO6.GIO7...G 34d0: 50 33 37 01 00 02 47 4c 30 35 08 47 4c 30 36 08 P37...GL05.GL06. 34e0: 47 4c 30 37 08 5b 80 52 43 52 42 00 0c 00 c0 d1 GL07.[.RCRB..... 34f0: fe 0b 00 40 5b 81 48 05 52 43 52 42 13 00 80 00 ...@[.H.RCRB.... 3500: 08 00 80 00 10 00 80 02 02 48 50 41 53 02 00 05 .........HPAS... 3510: 48 50 41 45 01 00 48 09 00 01 50 41 54 44 01 53 HPAE..H...PATD.S 3520: 41 54 44 01 53 4d 42 44 01 48 44 41 44 01 00 0b ATD.SMBD.HDAD... 3530: 52 50 31 44 01 52 50 32 44 01 52 50 33 44 01 52 RP1D.RP2D.RP3D.R 3540: 50 34 44 01 52 50 35 44 01 52 50 36 44 01 08 5f P4D.RP5D.RP6D.._ 3550: 53 30 5f 12 05 03 00 00 00 08 5f 53 33 5f 12 07 S0_......._S3_.. 3560: 03 0a 05 0a 05 00 08 5f 53 34 5f 12 07 03 0a 06 ......._S4_..... 3570: 0a 06 00 08 5f 53 35 5f 12 07 03 0a 07 0a 07 00 ...._S5_........ 3580: 14 45 04 47 45 54 50 09 a0 0e 93 7b 68 0a 09 00 .E.GETP....{h... 3590: 00 a4 0c ff ff ff ff a0 0d 93 7b 68 0a 09 00 0a ..........{h.... 35a0: 08 a4 0b 84 03 7a 7b 68 0b 00 03 00 0a 08 60 7a .....z{h......`z 35b0: 7b 68 0b 00 30 00 0a 0c 61 a4 77 0a 1e 74 0a 09 {h..0...a.w..t.. 35c0: 72 60 61 00 00 00 14 30 47 44 4d 41 0d a0 23 68 r`a....0GDMA..#h 35d0: a0 07 90 69 6c a4 0a 14 a0 0e 90 6a 6c a4 77 74 ...il......jl.wt 35e0: 0a 04 6b 00 0a 0f 00 a4 77 74 0a 04 6b 00 0a 1e ..k.....wt..k... 35f0: 00 a4 0c ff ff ff ff 14 1f 47 45 54 54 09 a4 77 .........GETT..w 3600: 0a 1e 74 0a 09 72 7b 7a 68 0a 02 00 0a 03 00 7b ..t..r{zh......{ 3610: 68 0a 03 00 00 00 00 14 44 06 47 45 54 46 0b 08 h.......D.GETF.. 3620: 54 4d 50 46 00 a0 0c 68 7d 54 4d 50 46 01 54 4d TMPF...h}TMPF.TM 3630: 50 46 a0 11 7b 6a 0a 02 00 7d 54 4d 50 46 0a 02 PF..{j...}TMPF.. 3640: 54 4d 50 46 a0 0d 69 7d 54 4d 50 46 0a 04 54 4d TMPF..i}TMPF..TM 3650: 50 46 a0 11 7b 6a 0a 20 00 7d 54 4d 50 46 0a 08 PF..{j. .}TMPF.. 3660: 54 4d 50 46 a0 12 7b 6a 0b 00 40 00 7d 54 4d 50 TMPF..{j..@.}TMP 3670: 46 0a 10 54 4d 50 46 a4 54 4d 50 46 14 3d 53 45 F..TMPF.TMPF.=SE 3680: 54 50 0b a0 08 94 68 0a f0 a4 0a 08 a1 2d a0 27 TP....h......-.' 3690: 7b 69 0a 02 00 a0 10 90 92 94 68 0a 78 7b 6a 0a {i........h.x{j. 36a0: 02 00 a4 0b 01 23 a0 0f 90 92 94 68 0a b4 7b 6a .....#.....h..{j 36b0: 01 00 a4 0b 01 21 a4 0b 01 10 14 37 53 44 4d 41 .....!.....7SDMA 36c0: 09 a0 08 92 94 68 0a 14 a4 01 a0 09 92 94 68 0a .....h........h. 36d0: 1e a4 0a 02 a0 08 92 94 68 0a 2d a4 01 a0 09 92 ........h.-..... 36e0: 94 68 0a 3c a4 0a 02 a0 08 92 94 68 0a 5a a4 01 .h.<.......h.Z.. 36f0: a4 00 14 2f 53 45 54 54 0b a0 25 7b 69 0a 02 00 .../SETT..%{i... 3700: a0 0f 90 92 94 68 0a 78 7b 6a 0a 02 00 a4 0a 0b .....h.x{j...... 3710: a0 0e 90 92 94 68 0a b4 7b 6a 01 00 a4 0a 09 a4 .....h..{j...... 3720: 0a 04 5b 82 4b 04 48 44 45 46 08 5f 41 44 52 0c ..[.K.HDEF._ADR. 3730: 00 00 1b 00 5b 80 48 44 41 52 02 0a 4c 0a 10 5b ....[.HDAR..L..[ 3740: 81 22 48 44 41 52 02 44 43 4b 41 01 00 07 44 43 ."HDAR.DCKA...DC 3750: 4b 4d 01 00 06 44 43 4b 53 01 00 30 00 0f 50 4d KM...DCKS..0..PM 3760: 45 53 01 08 5f 50 52 57 12 06 02 0a 0d 0a 03 5b ES.._PRW.......[ 3770: 82 41 10 52 50 30 31 08 5f 41 44 52 0c 00 00 1c .A.RP01._ADR.... 3780: 00 5b 80 50 58 43 53 02 0a 40 0a c0 5b 81 45 04 .[.PXCS..@..[.E. 3790: 50 58 43 53 40 00 40 09 00 0d 4c 41 53 58 01 00 PXCS@.@...LASX.. 37a0: 32 41 42 50 58 01 00 02 50 44 43 58 01 00 02 50 2ABPX...PDCX...P 37b0: 44 53 58 01 00 01 4c 53 43 58 01 00 27 00 10 50 DSX...LSCX..'..P 37c0: 53 50 58 01 00 4f 3c 00 1e 48 50 53 58 01 50 4d SPX..O<..HPSX.PM 37d0: 53 58 01 5b 82 0b 50 58 53 58 08 5f 41 44 52 00 SX.[..PXSX._ADR. 37e0: 14 41 09 5f 50 52 54 00 a0 33 47 50 49 43 a4 12 .A._PRT..3GPIC.. 37f0: 2c 04 12 09 04 0b ff ff 00 00 0a 10 12 09 04 0b ,............... 3800: ff ff 01 00 0a 11 12 0a 04 0b ff ff 0a 02 00 0a ................ 3810: 12 12 0a 04 0b ff ff 0a 03 00 0a 13 a1 45 05 a4 .............E.. 3820: 12 41 05 04 12 12 04 0b ff ff 00 5e 5e 2e 4c 50 .A.........^^.LP 3830: 43 42 4c 4e 4b 41 00 12 12 04 0b ff ff 01 5e 5e CBLNKA........^^ 3840: 2e 4c 50 43 42 4c 4e 4b 42 00 12 13 04 0b ff ff .LPCBLNKB....... 3850: 0a 02 5e 5e 2e 4c 50 43 42 4c 4e 4b 43 00 12 13 ..^^.LPCBLNKC... 3860: 04 0b ff ff 0a 03 5e 5e 2e 4c 50 43 42 4c 4e 4b ......^^.LPCBLNK 3870: 44 00 5b 82 41 10 52 50 30 32 08 5f 41 44 52 0c D.[.A.RP02._ADR. 3880: 01 00 1c 00 5b 80 50 58 43 53 02 0a 40 0a c0 5b ....[.PXCS..@..[ 3890: 81 45 04 50 58 43 53 40 00 40 09 00 0d 4c 41 53 .E.PXCS@.@...LAS 38a0: 58 01 00 32 41 42 50 58 01 00 02 50 44 43 58 01 X..2ABPX...PDCX. 38b0: 00 02 50 44 53 58 01 00 01 4c 53 43 58 01 00 27 ..PDSX...LSCX..' 38c0: 00 10 50 53 50 58 01 00 4f 3c 00 1e 48 50 53 58 ..PSPX..O<..HPSX 38d0: 01 50 4d 53 58 01 5b 82 0b 50 58 53 58 08 5f 41 .PMSX.[..PXSX._A 38e0: 44 52 00 14 41 09 5f 50 52 54 00 a0 33 47 50 49 DR..A._PRT..3GPI 38f0: 43 a4 12 2c 04 12 09 04 0b ff ff 00 00 0a 11 12 C..,............ 3900: 09 04 0b ff ff 01 00 0a 12 12 0a 04 0b ff ff 0a ................ 3910: 02 00 0a 13 12 0a 04 0b ff ff 0a 03 00 0a 10 a1 ................ 3920: 45 05 a4 12 41 05 04 12 12 04 0b ff ff 00 5e 5e E...A.........^^ 3930: 2e 4c 50 43 42 4c 4e 4b 42 00 12 12 04 0b ff ff .LPCBLNKB....... 3940: 01 5e 5e 2e 4c 50 43 42 4c 4e 4b 43 00 12 13 04 .^^.LPCBLNKC.... 3950: 0b ff ff 0a 02 5e 5e 2e 4c 50 43 42 4c 4e 4b 44 .....^^.LPCBLNKD 3960: 00 12 13 04 0b ff ff 0a 03 5e 5e 2e 4c 50 43 42 .........^^.LPCB 3970: 4c 4e 4b 41 00 5b 82 4d 11 52 50 30 33 08 5f 41 LNKA.[.M.RP03._A 3980: 44 52 0c 02 00 1c 00 5b 80 50 58 43 53 02 0a 40 DR.....[.PXCS..@ 3990: 0a c0 5b 81 45 04 50 58 43 53 40 00 40 09 00 0d ..[.E.PXCS@.@... 39a0: 4c 41 53 58 01 00 32 41 42 50 58 01 00 02 50 44 LASX..2ABPX...PD 39b0: 43 58 01 00 02 50 44 53 58 01 00 01 4c 53 43 58 CX...PDSX...LSCX 39c0: 01 00 27 00 10 50 53 50 58 01 00 4f 3c 00 1e 48 ..'..PSPX..O<..H 39d0: 50 53 58 01 50 4d 53 58 01 5b 82 0b 50 58 53 58 PSX.PMSX.[..PXSX 39e0: 08 5f 41 44 52 00 08 2e 50 58 53 58 5f 52 4d 56 ._ADR...PXSX_RMV 39f0: 01 08 2e 50 58 53 58 5f 50 52 57 12 06 02 0a 09 ...PXSX_PRW..... 3a00: 0a 03 14 41 09 5f 50 52 54 00 a0 33 47 50 49 43 ...A._PRT..3GPIC 3a10: a4 12 2c 04 12 09 04 0b ff ff 00 00 0a 12 12 09 ..,............. 3a20: 04 0b ff ff 01 00 0a 13 12 0a 04 0b ff ff 0a 02 ................ 3a30: 00 0a 10 12 0a 04 0b ff ff 0a 03 00 0a 11 a1 45 ...............E 3a40: 05 a4 12 41 05 04 12 12 04 0b ff ff 00 5e 5e 2e ...A.........^^. 3a50: 4c 50 43 42 4c 4e 4b 43 00 12 12 04 0b ff ff 01 LPCBLNKC........ 3a60: 5e 5e 2e 4c 50 43 42 4c 4e 4b 44 00 12 13 04 0b ^^.LPCBLNKD..... 3a70: ff ff 0a 02 5e 5e 2e 4c 50 43 42 4c 4e 4b 41 00 ....^^.LPCBLNKA. 3a80: 12 13 04 0b ff ff 0a 03 5e 5e 2e 4c 50 43 42 4c ........^^.LPCBL 3a90: 4e 4b 42 00 5b 82 4f 11 52 50 30 34 08 5f 41 44 NKB.[.O.RP04._AD 3aa0: 52 0c 03 00 1c 00 5b 80 50 58 43 53 02 0a 40 0a R.....[.PXCS..@. 3ab0: c0 5b 81 45 04 50 58 43 53 40 00 40 09 00 0d 4c .[.E.PXCS@.@...L 3ac0: 41 53 58 01 00 32 41 42 50 58 01 00 02 50 44 43 ASX..2ABPX...PDC 3ad0: 58 01 00 02 50 44 53 58 01 00 01 4c 53 43 58 01 X...PDSX...LSCX. 3ae0: 00 27 00 10 50 53 50 58 01 00 4f 3c 00 1e 48 50 .'..PSPX..O<..HP 3af0: 53 58 01 50 4d 53 58 01 5b 82 29 50 58 53 58 08 SX.PMSX.[.)PXSX. 3b00: 5f 41 44 52 00 14 1d 5f 50 52 57 00 a0 0d 57 4b _ADR..._PRW...WK 3b10: 4c 4e a4 12 06 02 0a 09 0a 03 a1 08 a4 12 05 02 LN.............. 3b20: 0a 09 00 14 41 09 5f 50 52 54 00 a0 33 47 50 49 ....A._PRT..3GPI 3b30: 43 a4 12 2c 04 12 09 04 0b ff ff 00 00 0a 13 12 C..,............ 3b40: 09 04 0b ff ff 01 00 0a 10 12 0a 04 0b ff ff 0a ................ 3b50: 02 00 0a 11 12 0a 04 0b ff ff 0a 03 00 0a 12 a1 ................ 3b60: 45 05 a4 12 41 05 04 12 12 04 0b ff ff 00 5e 5e E...A.........^^ 3b70: 2e 4c 50 43 42 4c 4e 4b 44 00 12 12 04 0b ff ff .LPCBLNKD....... 3b80: 01 5e 5e 2e 4c 50 43 42 4c 4e 4b 41 00 12 13 04 .^^.LPCBLNKA.... 3b90: 0b ff ff 0a 02 5e 5e 2e 4c 50 43 42 4c 4e 4b 42 .....^^.LPCBLNKB 3ba0: 00 12 13 04 0b ff ff 0a 03 5e 5e 2e 4c 50 43 42 .........^^.LPCB 3bb0: 4c 4e 4b 43 00 5b 82 41 10 52 50 30 35 08 5f 41 LNKC.[.A.RP05._A 3bc0: 44 52 0c 04 00 1c 00 5b 80 50 58 43 53 02 0a 40 DR.....[.PXCS..@ 3bd0: 0a c0 5b 81 45 04 50 58 43 53 40 00 40 09 00 0d ..[.E.PXCS@.@... 3be0: 4c 41 53 58 01 00 32 41 42 50 58 01 00 02 50 44 LASX..2ABPX...PD 3bf0: 43 58 01 00 02 50 44 53 58 01 00 01 4c 53 43 58 CX...PDSX...LSCX 3c00: 01 00 27 00 10 50 53 50 58 01 00 4f 3c 00 1e 48 ..'..PSPX..O<..H 3c10: 50 53 58 01 50 4d 53 58 01 5b 82 0b 50 58 53 58 PSX.PMSX.[..PXSX 3c20: 08 5f 41 44 52 00 14 41 09 5f 50 52 54 00 a0 33 ._ADR..A._PRT..3 3c30: 47 50 49 43 a4 12 2c 04 12 09 04 0b ff ff 00 00 GPIC..,......... 3c40: 0a 10 12 09 04 0b ff ff 01 00 0a 11 12 0a 04 0b ................ 3c50: ff ff 0a 02 00 0a 12 12 0a 04 0b ff ff 0a 03 00 ................ 3c60: 0a 13 a1 45 05 a4 12 41 05 04 12 12 04 0b ff ff ...E...A........ 3c70: 00 5e 5e 2e 4c 50 43 42 4c 4e 4b 41 00 12 12 04 .^^.LPCBLNKA.... 3c80: 0b ff ff 01 5e 5e 2e 4c 50 43 42 4c 4e 4b 42 00 ....^^.LPCBLNKB. 3c90: 12 13 04 0b ff ff 0a 02 5e 5e 2e 4c 50 43 42 4c ........^^.LPCBL 3ca0: 4e 4b 43 00 12 13 04 0b ff ff 0a 03 5e 5e 2e 4c NKC.........^^.L 3cb0: 50 43 42 4c 4e 4b 44 00 5b 82 41 10 52 50 30 36 PCBLNKD.[.A.RP06 3cc0: 08 5f 41 44 52 0c 05 00 1c 00 5b 80 50 58 43 53 ._ADR.....[.PXCS 3cd0: 02 0a 40 0a c0 5b 81 45 04 50 58 43 53 40 00 40 ..@..[.E.PXCS@.@ 3ce0: 09 00 0d 4c 41 53 58 01 00 32 41 42 50 58 01 00 ...LASX..2ABPX.. 3cf0: 02 50 44 43 58 01 00 02 50 44 53 58 01 00 01 4c .PDCX...PDSX...L 3d00: 53 43 58 01 00 27 00 10 50 53 50 58 01 00 4f 3c SCX..'..PSPX..O< 3d10: 00 1e 48 50 53 58 01 50 4d 53 58 01 5b 82 0b 50 ..HPSX.PMSX.[..P 3d20: 58 53 58 08 5f 41 44 52 00 14 41 09 5f 50 52 54 XSX._ADR..A._PRT 3d30: 00 a0 33 47 50 49 43 a4 12 2c 04 12 09 04 0b ff ..3GPIC..,...... 3d40: ff 00 00 0a 11 12 09 04 0b ff ff 01 00 0a 12 12 ................ 3d50: 0a 04 0b ff ff 0a 02 00 0a 13 12 0a 04 0b ff ff ................ 3d60: 0a 03 00 0a 10 a1 45 05 a4 12 41 05 04 12 12 04 ......E...A..... 3d70: 0b ff ff 00 5e 5e 2e 4c 50 43 42 4c 4e 4b 42 00 ....^^.LPCBLNKB. 3d80: 12 12 04 0b ff ff 01 5e 5e 2e 4c 50 43 42 4c 4e .......^^.LPCBLN 3d90: 4b 43 00 12 13 04 0b ff ff 0a 02 5e 5e 2e 4c 50 KC.........^^.LP 3da0: 43 42 4c 4e 4b 44 00 12 13 04 0b ff ff 0a 03 5e CBLNKD.........^ 3db0: 5e 2e 4c 50 43 42 4c 4e 4b 41 00 5b 82 4d 06 55 ^.LPCBLNKA.[.M.U 3dc0: 53 42 31 08 5f 41 44 52 0c 00 00 1d 00 5b 80 55 SB1._ADR.....[.U 3dd0: 31 43 53 02 0a c4 0a 04 5b 81 0b 55 31 43 53 03 1CS.....[..U1CS. 3de0: 55 31 45 4e 02 08 5f 50 52 57 12 06 02 0a 03 0a U1EN.._PRW...... 3df0: 03 14 24 5f 50 53 57 01 a0 15 68 70 01 41 43 50 ..$_PSW...hp.ACP 3e00: 57 a0 0c 41 43 50 57 70 0a 03 55 31 45 4e a1 07 W..ACPWp..U1EN.. 3e10: 70 00 55 31 45 4e 14 09 5f 53 33 44 00 a4 0a 02 p.U1EN.._S3D.... 3e20: 14 09 5f 53 34 44 00 a4 0a 02 5b 82 4c 06 55 53 .._S4D....[.L.US 3e30: 42 32 08 5f 41 44 52 0c 01 00 1d 00 5b 80 55 32 B2._ADR.....[.U2 3e40: 43 53 02 0a c4 0a 04 5b 81 0b 55 32 43 53 03 55 CS.....[..U2CS.U 3e50: 32 45 4e 02 08 5f 50 52 57 12 06 02 0a 04 0a 03 2EN.._PRW....... 3e60: 14 23 5f 50 53 57 01 a0 14 68 70 01 41 43 50 57 .#_PSW...hp.ACPW 3e70: a0 0b 41 43 50 57 70 01 55 32 45 4e a1 07 70 00 ..ACPWp.U2EN..p. 3e80: 55 32 45 4e 14 09 5f 53 33 44 00 a4 0a 02 14 09 U2EN.._S3D...... 3e90: 5f 53 34 44 00 a4 0a 02 5b 82 4d 06 55 53 42 33 _S4D....[.M.USB3 3ea0: 08 5f 41 44 52 0c 02 00 1d 00 5b 80 55 32 43 53 ._ADR.....[.U2CS 3eb0: 02 0a c4 0a 04 5b 81 0b 55 32 43 53 03 55 33 45 .....[..U2CS.U3E 3ec0: 4e 02 08 5f 50 52 57 12 06 02 0a 0c 0a 03 14 24 N.._PRW........$ 3ed0: 5f 50 53 57 01 a0 15 68 70 01 41 43 50 57 a0 0c _PSW...hp.ACPW.. 3ee0: 41 43 50 57 70 0a 03 55 33 45 4e a1 07 70 00 55 ACPWp..U3EN..p.U 3ef0: 33 45 4e 14 09 5f 53 33 44 00 a4 0a 02 14 09 5f 3EN.._S3D......_ 3f00: 53 34 44 00 a4 0a 02 5b 82 4d 06 55 53 42 34 08 S4D....[.M.USB4. 3f10: 5f 41 44 52 0c 00 00 1a 00 5b 80 55 34 43 53 02 _ADR.....[.U4CS. 3f20: 0a c4 0a 04 5b 81 0b 55 34 43 53 03 55 34 45 4e ....[..U4CS.U4EN 3f30: 02 08 5f 50 52 57 12 06 02 0a 0e 0a 03 14 24 5f .._PRW........$_ 3f40: 50 53 57 01 a0 15 68 70 01 41 43 50 57 a0 0c 41 PSW...hp.ACPW..A 3f50: 43 50 57 70 0a 03 55 34 45 4e a1 07 70 00 55 34 CPWp..U4EN..p.U4 3f60: 45 4e 14 09 5f 53 33 44 00 a4 0a 02 14 09 5f 53 EN.._S3D......_S 3f70: 34 44 00 a4 0a 02 5b 82 41 06 55 53 42 35 08 5f 4D....[.A.USB5._ 3f80: 41 44 52 0c 01 00 1a 00 5b 80 55 35 43 53 02 0a ADR.....[.U5CS.. 3f90: c4 0a 04 5b 81 0b 55 35 43 53 03 55 35 45 4e 02 ...[..U5CS.U5EN. 3fa0: 14 24 5f 50 53 57 01 a0 15 68 70 01 41 43 50 57 .$_PSW...hp.ACPW 3fb0: a0 0c 41 43 50 57 70 0a 03 55 35 45 4e a1 07 70 ..ACPWp..U5EN..p 3fc0: 00 55 35 45 4e 14 09 5f 53 33 44 00 a4 0a 02 14 .U5EN.._S3D..... 3fd0: 09 5f 53 34 44 00 a4 0a 02 5b 82 4b 0a 45 48 43 ._S4D....[.K.EHC 3fe0: 31 08 5f 41 44 52 0c 07 00 1d 00 5b 80 55 37 43 1._ADR.....[.U7C 3ff0: 53 02 0a 54 0a 04 5b 81 0d 55 37 43 53 03 00 0f S..T..[..U7CS... 4000: 50 4d 45 53 01 5b 82 4f 05 48 55 42 37 08 5f 41 PMES.[.O.HUB7._A 4010: 44 52 00 5b 82 0b 50 52 54 31 08 5f 41 44 52 01 DR.[..PRT1._ADR. 4020: 5b 82 0c 50 52 54 32 08 5f 41 44 52 0a 02 5b 82 [..PRT2._ADR..[. 4030: 0c 50 52 54 33 08 5f 41 44 52 0a 03 5b 82 0c 50 .PRT3._ADR..[..P 4040: 52 54 34 08 5f 41 44 52 0a 04 5b 82 0c 50 52 54 RT4._ADR..[..PRT 4050: 35 08 5f 41 44 52 0a 05 5b 82 0c 50 52 54 36 08 5._ADR..[..PRT6. 4060: 5f 41 44 52 0a 06 08 5f 50 52 57 12 06 02 0a 0d _ADR..._PRW..... 4070: 0a 03 14 09 5f 53 33 44 00 a4 0a 02 14 09 5f 53 ...._S3D......_S 4080: 34 44 00 a4 0a 02 5b 82 4f 08 45 48 43 32 08 5f 4D....[.O.EHC2._ 4090: 41 44 52 0c 07 00 1a 00 5b 80 55 46 43 53 02 0a ADR.....[.UFCS.. 40a0: 54 0a 04 5b 81 0d 55 46 43 53 03 00 0f 50 4d 45 T..[..UFCS...PME 40b0: 53 01 5b 82 43 04 48 55 42 37 08 5f 41 44 52 00 S.[.C.HUB7._ADR. 40c0: 5b 82 0b 50 52 54 31 08 5f 41 44 52 01 5b 82 0c [..PRT1._ADR.[.. 40d0: 50 52 54 32 08 5f 41 44 52 0a 02 5b 82 0c 50 52 PRT2._ADR..[..PR 40e0: 54 33 08 5f 41 44 52 0a 03 5b 82 0c 50 52 54 34 T3._ADR..[..PRT4 40f0: 08 5f 41 44 52 0a 04 08 5f 50 52 57 12 06 02 0a ._ADR..._PRW.... 4100: 0d 0a 03 14 09 5f 53 33 44 00 a4 0a 02 14 09 5f ....._S3D......_ 4110: 53 34 44 00 a4 0a 02 5b 82 4a 06 50 43 49 42 08 S4D....[.J.PCIB. 4120: 5f 41 44 52 0c 00 00 1e 00 14 49 05 5f 50 52 54 _ADR......I._PRT 4130: 00 a0 21 47 50 49 43 a4 12 1a 02 12 0b 04 0c ff ..!GPIC......... 4140: ff 06 00 00 00 0a 16 12 0b 04 0c ff ff 06 00 01 ................ 4150: 00 0a 17 a1 2f a4 12 2c 02 12 14 04 0c ff ff 06 ..../..,........ 4160: 00 00 5e 5e 2e 4c 50 43 42 4c 4e 4b 47 00 12 14 ..^^.LPCBLNKG... 4170: 04 0c ff ff 06 00 01 5e 5e 2e 4c 50 43 42 4c 4e .......^^.LPCBLN 4180: 4b 48 00 5b 82 8d 2e 01 4c 50 43 42 08 5f 41 44 KH.[....LPCB._AD 4190: 52 0c 00 00 1f 00 5b 80 4c 50 43 30 02 0a 40 0a R.....[.LPC0..@. 41a0: c0 5b 81 4d 07 4c 50 43 30 00 00 40 10 50 41 52 .[.M.LPC0..@.PAR 41b0: 43 08 50 42 52 43 08 50 43 52 43 08 50 44 52 43 C.PBRC.PCRC.PDRC 41c0: 08 00 20 50 45 52 43 08 50 46 52 43 08 50 47 52 .. PERC.PFRC.PGR 41d0: 43 08 50 48 52 43 08 00 40 0a 43 4d 41 52 03 00 C.PHRC..@.CMAR.. 41e0: 01 43 4d 42 52 03 00 01 4c 50 54 52 02 00 06 43 .CMBR...LPTR...C 41f0: 4d 41 44 01 43 4d 42 44 01 4c 50 54 44 01 46 44 MAD.CMBD.LPTD.FD 4200: 44 44 01 00 2c 49 4f 52 32 10 00 02 4c 47 52 4d DD..,IOR2...LGRM 4210: 06 00 48 32 52 41 45 4e 01 00 0d 52 43 42 41 12 ..H2RAEN...RCBA. 4220: 5b 80 53 4d 49 30 01 0c 00 fe 00 00 0c 02 00 00 [.SMI0.......... 4230: 00 5b 81 0b 53 4d 49 30 00 53 4d 49 43 08 5b 80 .[..SMI0.SMIC.[. 4240: 53 4d 49 31 00 0c bd 2e 6e bf 0c 90 00 00 00 5b SMI1....n......[ 4250: 81 16 53 4d 49 31 00 42 43 4d 44 08 44 49 44 5f ..SMI1.BCMD.DID_ 4260: 20 49 4e 46 4f 40 40 5b 81 15 53 4d 49 31 00 01 INFO@@[..SMI1.. 4270: 01 00 00 28 49 4e 46 5f 08 49 4e 46 31 20 5b 01 ...(INF_.INF1 [. 4280: 50 53 4d 58 00 14 27 50 48 53 53 01 5b 23 50 53 PSMX..'PHSS.[#PS 4290: 4d 58 ff ff 70 0a 80 42 43 4d 44 70 68 44 49 44 MX..p..BCMDphDID 42a0: 5f 70 00 53 4d 49 43 5b 27 50 53 4d 58 5b 82 41 _p.SMIC['PSMX[.A 42b0: 0a 4c 4e 4b 41 08 5f 48 49 44 0c 41 d0 0c 0f 08 .LNKA._HID.A.... 42c0: 5f 55 49 44 01 14 0d 5f 44 49 53 08 70 0a 80 50 _UID..._DIS.p..P 42d0: 41 52 43 08 5f 50 52 53 11 09 0a 06 23 fa d4 18 ARC._PRS....#... 42e0: 79 00 14 38 5f 43 52 53 08 08 52 54 4c 41 11 09 y..8_CRS..RTLA.. 42f0: 0a 06 23 00 00 18 79 00 8b 52 54 4c 41 01 49 52 ..#...y..RTLA.IR 4300: 51 30 70 00 49 52 51 30 79 01 7b 50 41 52 43 0a Q0p.IRQ0y.{PARC. 4310: 0f 00 49 52 51 30 a4 52 54 4c 41 14 1b 5f 53 52 ..IRQ0.RTLA.._SR 4320: 53 09 8b 68 01 49 52 51 30 82 49 52 51 30 60 76 S..h.IRQ0.IRQ0`v 4330: 60 70 60 50 41 52 43 14 18 5f 53 54 41 08 a0 0c `p`PARC.._STA... 4340: 7b 50 41 52 43 0a 80 00 a4 0a 09 a1 04 a4 0a 0b {PARC........... 4350: 5b 82 42 0a 4c 4e 4b 42 08 5f 48 49 44 0c 41 d0 [.B.LNKB._HID.A. 4360: 0c 0f 08 5f 55 49 44 0a 02 14 0d 5f 44 49 53 08 ..._UID...._DIS. 4370: 70 0a 80 50 42 52 43 08 5f 50 52 53 11 09 0a 06 p..PBRC._PRS.... 4380: 23 fa d8 18 79 00 14 38 5f 43 52 53 08 08 52 54 #...y..8_CRS..RT 4390: 4c 42 11 09 0a 06 23 00 00 18 79 00 8b 52 54 4c LB....#...y..RTL 43a0: 42 01 49 52 51 30 70 00 49 52 51 30 79 01 7b 50 B.IRQ0p.IRQ0y.{P 43b0: 42 52 43 0a 0f 00 49 52 51 30 a4 52 54 4c 42 14 BRC...IRQ0.RTLB. 43c0: 1b 5f 53 52 53 09 8b 68 01 49 52 51 30 82 49 52 ._SRS..h.IRQ0.IR 43d0: 51 30 60 76 60 70 60 50 42 52 43 14 18 5f 53 54 Q0`v`p`PBRC.._ST 43e0: 41 08 a0 0c 7b 50 42 52 43 0a 80 00 a4 0a 09 a1 A...{PBRC....... 43f0: 04 a4 0a 0b 5b 82 42 0a 4c 4e 4b 43 08 5f 48 49 ....[.B.LNKC._HI 4400: 44 0c 41 d0 0c 0f 08 5f 55 49 44 0a 03 14 0d 5f D.A...._UID...._ 4410: 44 49 53 08 70 0a 80 50 43 52 43 08 5f 50 52 53 DIS.p..PCRC._PRS 4420: 11 09 0a 06 23 fa d4 18 79 00 14 38 5f 43 52 53 ....#...y..8_CRS 4430: 08 08 52 54 4c 43 11 09 0a 06 23 00 00 18 79 00 ..RTLC....#...y. 4440: 8b 52 54 4c 43 01 49 52 51 30 70 00 49 52 51 30 .RTLC.IRQ0p.IRQ0 4450: 79 01 7b 50 43 52 43 0a 0f 00 49 52 51 30 a4 52 y.{PCRC...IRQ0.R 4460: 54 4c 43 14 1b 5f 53 52 53 09 8b 68 01 49 52 51 TLC.._SRS..h.IRQ 4470: 30 82 49 52 51 30 60 76 60 70 60 50 43 52 43 14 0.IRQ0`v`p`PCRC. 4480: 18 5f 53 54 41 08 a0 0c 7b 50 43 52 43 0a 80 00 ._STA...{PCRC... 4490: a4 0a 09 a1 04 a4 0a 0b 5b 82 42 0a 4c 4e 4b 44 ........[.B.LNKD 44a0: 08 5f 48 49 44 0c 41 d0 0c 0f 08 5f 55 49 44 0a ._HID.A...._UID. 44b0: 04 14 0d 5f 44 49 53 08 70 0a 80 50 44 52 43 08 ..._DIS.p..PDRC. 44c0: 5f 50 52 53 11 09 0a 06 23 fa d8 18 79 00 14 38 _PRS....#...y..8 44d0: 5f 43 52 53 08 08 52 54 4c 44 11 09 0a 06 23 00 _CRS..RTLD....#. 44e0: 00 18 79 00 8b 52 54 4c 44 01 49 52 51 30 70 00 ..y..RTLD.IRQ0p. 44f0: 49 52 51 30 79 01 7b 50 44 52 43 0a 0f 00 49 52 IRQ0y.{PDRC...IR 4500: 51 30 a4 52 54 4c 44 14 1b 5f 53 52 53 09 8b 68 Q0.RTLD.._SRS..h 4510: 01 49 52 51 30 82 49 52 51 30 60 76 60 70 60 50 .IRQ0.IRQ0`v`p`P 4520: 44 52 43 14 18 5f 53 54 41 08 a0 0c 7b 50 44 52 DRC.._STA...{PDR 4530: 43 0a 80 00 a4 0a 09 a1 04 a4 0a 0b 5b 82 42 0a C...........[.B. 4540: 4c 4e 4b 45 08 5f 48 49 44 0c 41 d0 0c 0f 08 5f LNKE._HID.A...._ 4550: 55 49 44 0a 05 14 0d 5f 44 49 53 08 70 0a 80 50 UID...._DIS.p..P 4560: 45 52 43 08 5f 50 52 53 11 09 0a 06 23 fa d4 18 ERC._PRS....#... 4570: 79 00 14 38 5f 43 52 53 08 08 52 54 4c 45 11 09 y..8_CRS..RTLE.. 4580: 0a 06 23 00 00 18 79 00 8b 52 54 4c 45 01 49 52 ..#...y..RTLE.IR 4590: 51 30 70 00 49 52 51 30 79 01 7b 50 45 52 43 0a Q0p.IRQ0y.{PERC. 45a0: 0f 00 49 52 51 30 a4 52 54 4c 45 14 1b 5f 53 52 ..IRQ0.RTLE.._SR 45b0: 53 09 8b 68 01 49 52 51 30 82 49 52 51 30 60 76 S..h.IRQ0.IRQ0`v 45c0: 60 70 60 50 45 52 43 14 18 5f 53 54 41 08 a0 0c `p`PERC.._STA... 45d0: 7b 50 45 52 43 0a 80 00 a4 0a 09 a1 04 a4 0a 0b {PERC........... 45e0: 5b 82 42 0a 4c 4e 4b 46 08 5f 48 49 44 0c 41 d0 [.B.LNKF._HID.A. 45f0: 0c 0f 08 5f 55 49 44 0a 06 14 0d 5f 44 49 53 08 ..._UID...._DIS. 4600: 70 0a 80 50 46 52 43 08 5f 50 52 53 11 09 0a 06 p..PFRC._PRS.... 4610: 23 fa d8 18 79 00 14 38 5f 43 52 53 08 08 52 54 #...y..8_CRS..RT 4620: 4c 46 11 09 0a 06 23 00 00 18 79 00 8b 52 54 4c LF....#...y..RTL 4630: 46 01 49 52 51 30 70 00 49 52 51 30 79 01 7b 50 F.IRQ0p.IRQ0y.{P 4640: 46 52 43 0a 0f 00 49 52 51 30 a4 52 54 4c 46 14 FRC...IRQ0.RTLF. 4650: 1b 5f 53 52 53 09 8b 68 01 49 52 51 30 82 49 52 ._SRS..h.IRQ0.IR 4660: 51 30 60 76 60 70 60 50 46 52 43 14 18 5f 53 54 Q0`v`p`PFRC.._ST 4670: 41 08 a0 0c 7b 50 46 52 43 0a 80 00 a4 0a 09 a1 A...{PFRC....... 4680: 04 a4 0a 0b 5b 82 42 0a 4c 4e 4b 47 08 5f 48 49 ....[.B.LNKG._HI 4690: 44 0c 41 d0 0c 0f 08 5f 55 49 44 0a 07 14 0d 5f D.A...._UID...._ 46a0: 44 49 53 08 70 0a 80 50 47 52 43 08 5f 50 52 53 DIS.p..PGRC._PRS 46b0: 11 09 0a 06 23 fa d4 18 79 00 14 38 5f 43 52 53 ....#...y..8_CRS 46c0: 08 08 52 54 4c 47 11 09 0a 06 23 00 00 18 79 00 ..RTLG....#...y. 46d0: 8b 52 54 4c 47 01 49 52 51 30 70 00 49 52 51 30 .RTLG.IRQ0p.IRQ0 46e0: 79 01 7b 50 47 52 43 0a 0f 00 49 52 51 30 a4 52 y.{PGRC...IRQ0.R 46f0: 54 4c 47 14 1b 5f 53 52 53 09 8b 68 01 49 52 51 TLG.._SRS..h.IRQ 4700: 30 82 49 52 51 30 60 76 60 70 60 50 47 52 43 14 0.IRQ0`v`p`PGRC. 4710: 18 5f 53 54 41 08 a0 0c 7b 50 47 52 43 0a 80 00 ._STA...{PGRC... 4720: a4 0a 09 a1 04 a4 0a 0b 5b 82 42 0a 4c 4e 4b 48 ........[.B.LNKH 4730: 08 5f 48 49 44 0c 41 d0 0c 0f 08 5f 55 49 44 0a ._HID.A...._UID. 4740: 08 14 0d 5f 44 49 53 08 70 0a 80 50 48 52 43 08 ..._DIS.p..PHRC. 4750: 5f 50 52 53 11 09 0a 06 23 fa d8 18 79 00 14 38 _PRS....#...y..8 4760: 5f 43 52 53 08 08 52 54 4c 48 11 09 0a 06 23 00 _CRS..RTLH....#. 4770: 00 18 79 00 8b 52 54 4c 48 01 49 52 51 30 70 00 ..y..RTLH.IRQ0p. 4780: 49 52 51 30 79 01 7b 50 48 52 43 0a 0f 00 49 52 IRQ0y.{PHRC...IR 4790: 51 30 a4 52 54 4c 48 14 1b 5f 53 52 53 09 8b 68 Q0.RTLH.._SRS..h 47a0: 01 49 52 51 30 82 49 52 51 30 60 76 60 70 60 50 .IRQ0.IRQ0`v`p`P 47b0: 48 52 43 14 18 5f 53 54 41 08 a0 0c 7b 50 48 52 HRC.._STA...{PHR 47c0: 43 0a 80 00 a4 0a 09 a1 04 a4 0a 0b 5b 82 3d 44 C...........[.=D 47d0: 4d 41 43 08 5f 48 49 44 0c 41 d0 02 00 08 5f 43 MAC._HID.A...._C 47e0: 52 53 11 28 0a 25 47 01 00 00 00 00 01 20 47 01 RS.(.%G...... G. 47f0: 81 00 81 00 01 11 47 01 93 00 93 00 01 0d 47 01 ......G.......G. 4800: c0 00 c0 00 01 20 2a 10 01 79 00 5b 82 26 46 57 ..... *..y.[.&FW 4810: 48 44 08 5f 48 49 44 0c 25 d4 08 00 08 5f 43 52 HD._HID.%...._CR 4820: 53 11 11 0a 0e 86 09 00 00 00 00 00 ff 00 00 00 S............... 4830: 01 79 00 5b 82 40 0b 48 50 45 54 08 5f 48 49 44 .y.[.@.HPET._HID 4840: 0c 41 d0 01 03 08 5f 43 49 44 0c 41 d0 0c 01 08 .A...._CID.A.... 4850: 42 55 46 30 11 11 0a 0e 86 09 00 00 00 00 d0 fe BUF0............ 4860: 00 04 00 00 79 00 14 27 5f 53 54 41 00 a0 13 92 ....y..'_STA.... 4870: 95 4f 53 59 53 0b d1 07 a0 08 48 50 41 45 a4 0a .OSYS.....HPAE.. 4880: 0f a1 0a a0 08 48 50 41 45 a4 0a 0b a4 00 14 46 .....HPAE......F 4890: 05 5f 43 52 53 08 a0 49 04 48 50 41 45 8a 42 55 ._CRS..I.HPAE.BU 48a0: 46 30 0a 04 48 50 54 30 a0 11 93 48 50 41 53 01 F0..HPT0...HPAS. 48b0: 70 0c 00 10 d0 fe 48 50 54 30 a0 12 93 48 50 41 p.....HPT0...HPA 48c0: 53 0a 02 70 0c 00 20 d0 fe 48 50 54 30 a0 12 93 S..p.. ..HPT0... 48d0: 48 50 41 53 0a 03 70 0c 00 30 d0 fe 48 50 54 30 HPAS..p..0..HPT0 48e0: a4 42 55 46 30 5b 82 45 0a 49 50 49 43 08 5f 48 .BUF0[.E.IPIC._H 48f0: 49 44 0b 41 d0 08 5f 43 52 53 11 41 09 0a 8d 47 ID.A.._CRS.A...G 4900: 01 20 00 20 00 01 02 47 01 24 00 24 00 01 02 47 . . ...G.$.$...G 4910: 01 28 00 28 00 01 02 47 01 2c 00 2c 00 01 02 47 .(.(...G.,.,...G 4920: 01 30 00 30 00 01 02 47 01 34 00 34 00 01 02 47 .0.0...G.4.4...G 4930: 01 38 00 38 00 01 02 47 01 3c 00 3c 00 01 02 47 .8.8...G.<.<...G 4940: 01 a0 00 a0 00 01 02 47 01 a4 00 a4 00 01 02 47 .......G.......G 4950: 01 a8 00 a8 00 01 02 47 01 ac 00 ac 00 01 02 47 .......G.......G 4960: 01 b0 00 b0 00 01 02 47 01 b4 00 b4 00 01 02 47 .......G.......G 4970: 01 b8 00 b8 00 01 02 47 01 bc 00 bc 00 01 02 47 .......G.......G 4980: 01 d0 04 d0 04 01 02 22 04 00 79 00 5b 82 25 4d ......."..y.[.%M 4990: 41 54 48 08 5f 48 49 44 0c 41 d0 0c 04 08 5f 43 ATH._HID.A...._C 49a0: 52 53 11 10 0a 0d 47 01 f0 00 f0 00 01 01 22 00 RS....G.......". 49b0: 20 79 00 5b 82 4b 09 4c 44 52 43 08 5f 48 49 44 y.[.K.LDRC._HID 49c0: 0c 41 d0 0c 02 08 5f 55 49 44 0a 02 08 5f 43 52 .A...._UID..._CR 49d0: 53 11 4e 07 0a 7a 47 01 2e 00 2e 00 01 02 47 01 S.N..zG.......G. 49e0: 4e 00 4e 00 01 02 47 01 61 00 61 00 01 01 47 01 N.N...G.a.a...G. 49f0: 63 00 63 00 01 01 47 01 65 00 65 00 01 01 47 01 c.c...G.e.e...G. 4a00: 67 00 67 00 01 01 47 01 80 00 80 00 01 01 47 01 g.g...G.......G. 4a10: 92 00 92 00 01 01 47 01 b2 00 b2 00 01 02 47 01 ......G.......G. 4a20: 80 06 80 06 01 20 47 01 00 08 00 08 01 10 47 01 ..... G.......G. 4a30: 00 10 00 10 01 80 47 01 80 11 80 11 01 40 47 01 ......G......@G. 4a40: 00 fe 00 fe 01 01 47 01 00 ff 00 ff 01 80 79 00 ......G.......y. 4a50: 5b 82 25 52 54 43 5f 08 5f 48 49 44 0c 41 d0 0b [.%RTC_._HID.A.. 4a60: 00 08 5f 43 52 53 11 10 0a 0d 47 01 70 00 70 00 .._CRS....G.p.p. 4a70: 01 08 22 00 01 79 00 5b 82 2d 54 49 4d 52 08 5f .."..y.[.-TIMR._ 4a80: 48 49 44 0c 41 d0 01 00 08 5f 43 52 53 11 18 0a HID.A...._CRS... 4a90: 15 47 01 40 00 40 00 01 04 47 01 50 00 50 00 10 .G.@.@...G.P.P.. 4aa0: 04 22 01 00 79 00 5b 82 32 41 43 41 44 08 5f 48 ."..y.[.2ACAD._H 4ab0: 49 44 0d 41 43 50 49 30 30 30 33 00 08 5f 50 43 ID.ACPI0003.._PC 4ac0: 4c 12 06 01 5f 53 42 5f 14 11 5f 50 53 52 00 70 L..._SB_.._PSR.p 4ad0: 01 41 43 50 57 a4 41 43 50 57 14 1a 45 43 4f 4b .ACPW.ACPW..ECOK 4ae0: 00 a0 0f 93 5e 2e 45 43 30 5f 5a 30 30 39 01 a4 ....^.EC0_Z009.. 4af0: 01 a1 03 a4 00 5b 82 4e 6f 45 43 30 5f 08 5f 48 .....[.NoEC0_._H 4b00: 49 44 0c 41 d0 0c 09 08 5f 47 50 45 0a 1c 08 5a ID.A...._GPE...Z 4b10: 30 30 39 00 08 5f 43 52 53 11 15 0a 12 47 01 62 009.._CRS....G.b 4b20: 00 62 00 01 01 47 01 66 00 66 00 01 01 79 00 14 .b...G.f.f...y.. 4b30: 3b 5f 52 45 47 02 a0 34 93 68 0a 03 70 69 5a 30 ;_REG..4.h..piZ0 4b40: 30 39 a0 28 5b 12 5f 4f 53 49 60 70 00 42 54 44 09.([._OSI`p.BTD 4b50: 53 a0 19 5f 4f 53 49 0d 57 69 6e 64 6f 77 73 20 S.._OSI.Windows 4b60: 32 30 30 36 00 70 01 42 54 44 53 5b 80 45 52 41 2006.p.BTDS[.ERA 4b70: 4d 03 00 0a ff 5b 81 4e 2e 45 52 41 4d 11 00 40 M....[.N.ERAM..@ 4b80: 30 53 4d 50 52 08 53 4d 53 54 08 53 4d 41 44 08 0SMPR.SMST.SMAD. 4b90: 53 4d 43 4d 08 53 4d 44 30 40 10 42 43 4e 54 08 SMCM.SMD0@.BCNT. 4ba0: 53 4d 41 41 18 00 40 04 43 48 47 4d 10 43 48 47 SMAA..@.CHGM.CHG 4bb0: 53 10 45 4e 49 44 08 45 4e 49 42 08 45 4e 44 44 S.ENID.ENIB.ENDD 4bc0: 08 43 48 47 56 08 43 48 47 41 10 42 41 4c 30 01 .CHGV.CHGA.BAL0. 4bd0: 42 41 4c 31 01 42 41 4c 32 01 42 41 4c 33 01 42 BAL1.BAL2.BAL3.B 4be0: 42 43 30 01 42 42 43 31 01 42 42 43 32 01 42 42 BC0.BBC1.BBC2.BB 4bf0: 43 33 01 00 08 50 48 44 44 01 49 46 44 44 01 49 C3...PHDD.IFDD.I 4c00: 4f 44 44 01 53 48 44 44 01 53 31 32 30 01 45 46 ODD.SHDD.S120.EF 4c10: 44 44 01 43 52 54 44 01 53 50 57 52 01 53 42 54 DD.CRTD.SPWR.SBT 4c20: 4e 01 56 49 44 4f 01 56 4f 4c 44 01 56 4f 4c 55 N.VIDO.VOLD.VOLU 4c30: 01 4d 55 54 45 01 43 4f 4e 54 01 42 52 47 54 01 .MUTE.CONT.BRGT. 4c40: 48 42 54 4e 01 53 34 53 54 01 53 4b 45 59 01 42 HBTN.S4ST.SKEY.B 4c50: 4b 45 59 01 54 4f 55 50 01 46 4e 42 4e 01 4c 49 KEY.TOUP.FNBN.LI 4c60: 44 46 01 44 49 47 4d 01 55 57 41 4b 01 00 08 44 DF.DIGM.UWAK...D 4c70: 4b 53 50 01 44 4b 49 4e 01 44 4b 49 44 01 44 4b KSP.DKIN.DKID.DK 4c80: 4f 4b 01 00 04 44 4b 50 57 01 00 07 42 54 4e 53 OK...DKPW...BTNS 4c90: 08 53 31 4c 44 01 53 33 4c 44 01 56 47 41 51 01 .S1LD.S3LD.VGAQ. 4ca0: 50 43 4d 51 01 50 43 4d 52 01 41 44 50 54 01 53 PCMQ.PCMR.ADPT.S 4cb0: 4c 4c 53 01 53 59 53 37 01 50 57 41 4b 01 4d 57 LLS.SYS7.PWAK.MW 4cc0: 41 4b 01 4c 57 41 4b 01 00 05 00 28 54 43 4e 4c AK.LWAK....(TCNL 4cd0: 08 54 4d 50 49 08 54 4d 53 44 08 46 41 53 4e 04 .TMPI.TMSD.FASN. 4ce0: 46 41 53 55 04 50 43 56 4c 04 00 02 53 57 54 4f FASU.PCVL...SWTO 4cf0: 01 48 57 54 4f 01 4d 4f 44 45 01 46 41 4e 53 02 .HWTO.MODE.FANS. 4d00: 49 4e 49 54 01 46 41 4e 31 01 46 41 4e 32 01 46 INIT.FAN1.FAN2.F 4d10: 41 4e 54 01 53 4b 4e 4d 01 43 54 4d 50 08 4c 49 ANT.SKNM.CTMP.LI 4d20: 44 45 01 50 4d 45 45 01 50 57 42 45 01 52 4e 47 DE.PMEE.PWBE.RNG 4d30: 45 01 42 54 57 45 01 44 43 4b 45 01 00 02 53 4b E.BTWE.DCKE...SK 4d40: 54 58 08 53 4b 54 42 08 53 4b 54 43 08 53 4b 54 TX.SKTB.SKTC.SKT 4d50: 41 08 00 08 48 41 50 4c 02 48 41 50 52 01 00 05 A...HAPL.HAPR... 4d60: 42 54 44 54 01 42 54 50 57 01 42 54 44 53 01 42 BTDT.BTPW.BTDS.B 4d70: 54 50 53 01 42 54 53 57 01 42 54 57 4b 01 42 54 TPS.BTSW.BTWK.BT 4d80: 4c 44 01 00 01 42 52 54 53 08 43 4e 54 53 08 57 LD...BRTS.CNTS.W 4d90: 4c 41 54 01 42 54 41 54 01 57 4c 45 58 01 42 54 LAT.BTAT.WLEX.BT 4da0: 45 58 01 4b 4c 53 57 01 57 4c 4f 4b 01 00 02 50 EX.KLSW.WLOK...P 4db0: 54 49 44 08 43 50 55 54 08 45 50 4b 54 08 47 48 TID.CPUT.EPKT.GH 4dc0: 49 44 08 00 04 42 4d 46 30 03 42 54 59 30 01 42 ID...BMF0.BTY0.B 4dd0: 53 54 30 08 42 52 43 30 10 42 53 4e 30 10 42 50 ST0.BRC0.BSN0.BP 4de0: 56 30 10 42 44 56 30 10 42 44 43 30 10 42 46 43 V0.BDV0.BDC0.BFC 4df0: 30 10 47 41 55 30 08 43 59 43 30 08 42 50 43 30 0.GAU0.CYC0.BPC0 4e00: 10 42 41 43 30 10 42 41 54 30 08 42 54 57 30 10 .BAC0.BAT0.BTW0. 4e10: 42 44 4e 30 08 00 40 04 00 04 42 4d 46 31 03 42 BDN0..@...BMF1.B 4e20: 54 59 31 01 42 53 54 31 08 42 52 43 31 10 42 53 TY1.BST1.BRC1.BS 4e30: 4e 31 10 42 50 56 31 10 42 44 56 31 10 42 44 43 N1.BPV1.BDV1.BDC 4e40: 31 10 42 46 43 31 10 47 41 55 31 08 43 59 43 31 1.BFC1.GAU1.CYC1 4e50: 08 42 50 43 31 10 42 41 43 31 10 42 41 54 31 08 .BPC1.BAC1.BAT1. 4e60: 42 54 57 31 10 14 37 5f 51 31 31 00 70 0a 87 50 BTW1..7_Q11.p..P 4e70: 38 30 48 a0 13 49 47 44 53 5e 5e 5e 2e 47 46 58 80H..IGDS^^^.GFX 4e80: 30 42 52 54 4e 0a 87 a1 15 86 5e 5e 5e 2f 03 50 0BRTN.....^^^/.P 4e90: 45 47 50 56 47 41 5f 4c 43 44 5f 0a 87 14 37 5f EGPVGA_LCD_...7_ 4ea0: 51 31 32 00 70 0a 86 50 38 30 48 a0 13 49 47 44 Q12.p..P80H..IGD 4eb0: 53 5e 5e 5e 2e 47 46 58 30 42 52 54 4e 0a 86 a1 S^^^.GFX0BRTN... 4ec0: 15 86 5e 5e 5e 2f 03 50 45 47 50 56 47 41 5f 4c ..^^^/.PEGPVGA_L 4ed0: 43 44 5f 0a 86 14 40 05 5f 51 31 43 00 70 0d 3d CD_...@._Q1C.p.= 4ee0: 3d 3d 3d 3d 51 55 45 52 59 5f 31 43 3d 3d 3d 3d ====QUERY_1C==== 4ef0: 3d 00 5b 31 a0 31 56 49 44 4f a0 12 49 47 44 53 =.[1.1VIDO..IGDS 4f00: 5e 5e 5e 2e 47 46 58 30 47 48 44 53 00 a1 12 5e ^^^.GFX0GHDS...^ 4f10: 5e 5e 2f 03 50 45 47 50 56 47 41 5f 44 53 53 57 ^^/.PEGPVGA_DSSW 4f20: 70 00 56 49 44 4f 14 21 5f 51 31 44 00 70 0d 3d p.VIDO.!_Q1D.p.= 4f30: 3d 3d 3d 3d 51 55 45 52 59 5f 31 44 3d 3d 3d 3d ====QUERY_1D==== 4f40: 3d 00 5b 31 50 43 4c 4b 14 21 5f 51 31 45 00 70 =.[1PCLK.!_Q1E.p 4f50: 0d 3d 3d 3d 3d 3d 51 55 45 52 59 5f 31 45 3d 3d .=====QUERY_1E== 4f60: 3d 3d 3d 00 5b 31 50 43 4c 4b 14 39 5f 51 32 35 ===.[1PCLK.9_Q25 4f70: 00 70 0d 3d 3d 3d 3d 3d 51 55 45 52 59 5f 32 35 .p.=====QUERY_25 4f80: 3d 3d 3d 3d 3d 00 5b 31 5b 22 0b e8 03 86 5e 5e =====.[1["....^^ 4f90: 42 41 54 31 0a 81 5b 22 0b e8 03 86 5e 5e 42 41 BAT1..["....^^BA 4fa0: 54 31 0a 80 14 2f 5f 51 33 34 00 70 0d 3d 3d 3d T1.../_Q34.p.=== 4fb0: 3d 3d 51 55 45 52 59 5f 33 34 3d 3d 3d 3d 3d 00 ==QUERY_34=====. 4fc0: 5b 31 a0 11 42 4b 45 59 50 48 53 53 0a 71 70 00 [1..BKEYPHSS.qp. 4fd0: 42 4b 45 59 14 32 5f 51 33 37 00 70 0d 3d 3d 3d BKEY.2_Q37.p.=== 4fe0: 3d 3d 51 55 45 52 59 5f 33 37 3d 3d 3d 3d 3d 00 ==QUERY_37=====. 4ff0: 5b 31 86 41 43 41 44 0a 80 5b 22 0b e8 03 86 5e [1.ACAD..["....^ 5000: 5e 42 41 54 31 0a 80 14 32 5f 51 33 38 00 70 0d ^BAT1...2_Q38.p. 5010: 3d 3d 3d 3d 3d 51 55 45 52 59 5f 33 38 3d 3d 3d =====QUERY_38=== 5020: 3d 3d 00 5b 31 86 41 43 41 44 0a 80 5b 22 0b e8 ==.[1.ACAD..[".. 5030: 03 86 5e 5e 42 41 54 31 0a 80 14 29 5f 51 32 44 ..^^BAT1...)_Q2D 5040: 00 70 0d 3d 3d 3d 3d 3d 51 55 45 52 59 5f 32 44 .p.=====QUERY_2D 5050: 3d 3d 3d 3d 3d 00 5b 31 70 00 44 54 53 4d 54 52 =====.[1p.DTSMTR 5060: 41 50 0a 46 14 29 5f 51 32 45 00 70 0d 3d 3d 3d AP.F.)_Q2E.p.=== 5070: 3d 3d 51 55 45 52 59 5f 32 45 3d 3d 3d 3d 3d 00 ==QUERY_2E=====. 5080: 5b 31 70 01 44 54 53 4d 54 52 41 50 0a 46 5b 80 [1p.DTSMTRAP.F[. 5090: 43 43 4c 4b 01 0b 10 10 0a 04 5b 81 20 43 43 4c CCLK......[. CCL 50a0: 4b 03 00 01 44 55 54 59 03 54 48 45 4e 01 00 03 K...DUTY.THEN... 50b0: 46 54 54 5f 01 00 08 54 53 54 53 01 5b 80 45 43 FTT_...TSTS.[.EC 50c0: 52 4d 03 00 0a ff 5b 81 44 04 45 43 52 4d 11 00 RM....[.D.ECRM.. 50d0: 40 4a 45 52 49 42 10 45 52 42 44 08 00 48 0a 53 @JERIB.ERBD..H.S 50e0: 44 54 4d 08 46 53 53 4e 04 46 41 4e 55 04 50 54 DTM.FSSN.FANU.PT 50f0: 56 4c 03 00 04 54 54 48 52 01 00 48 06 50 4a 49 VL...TTHR..H.PJI 5100: 44 08 00 08 00 48 1d 52 46 52 44 10 5b 01 46 41 D....H.RFRD.[.FA 5110: 4d 58 00 14 22 46 41 4e 47 01 5b 23 46 41 4d 58 MX.."FANG.[#FAMX 5120: ff ff 70 68 45 52 49 42 70 45 52 42 44 60 5b 27 ..phERIBpERBD`[' 5130: 46 41 4d 58 a4 60 14 22 46 41 4e 57 02 5b 23 46 FAMX.`."FANW.[#F 5140: 41 4d 58 ff ff 70 68 45 52 49 42 70 69 45 52 42 AMX..phERIBpiERB 5150: 44 5b 27 46 41 4d 58 a4 69 14 09 54 55 56 52 01 D['FAMX.i..TUVR. 5160: a4 0a 03 14 2e 54 48 52 4f 01 a0 09 93 68 00 a4 .....THRO....h.. 5170: 54 48 45 4e a1 1d a0 09 93 68 01 a4 44 55 54 59 THEN.....h..DUTY 5180: a1 11 a0 0a 93 68 0a 02 a4 54 54 48 52 a1 04 a4 .....h...TTHR... 5190: 0a ff 14 2a 43 4c 43 4b 01 a0 10 93 68 00 70 00 ...*CLCK....h.p. 51a0: 54 48 45 4e 70 00 46 54 54 5f a1 0d 70 68 44 55 THENp.FTT_..phDU 51b0: 54 59 70 01 54 48 45 4e a4 54 48 45 4e 14 37 50 TYp.THEN.THEN.7P 51c0: 43 4c 4b 00 70 50 54 56 4c 60 a0 10 93 60 00 70 CLK.pPTVL`...`.p 51d0: 00 54 48 45 4e 70 00 46 54 54 5f a1 19 76 60 70 .THENp.FTT_..v`p 51e0: 80 60 00 61 7b 61 0a 07 61 70 61 44 55 54 59 70 .`.a{a..apaDUTYp 51f0: 01 54 48 45 4e 5b 82 4b 22 42 41 54 31 08 5f 48 .THEN[.K"BAT1._H 5200: 49 44 0c 41 d0 0c 0a 08 5f 55 49 44 01 08 5f 50 ID.A...._UID.._P 5210: 43 4c 12 06 01 5f 53 42 5f 14 39 5f 53 54 41 00 CL..._SB_.9_STA. 5220: a0 29 90 45 43 4f 4b 93 45 43 44 59 00 a0 13 5e .).ECOK.ECDY...^ 5230: 5e 2e 45 43 30 5f 42 41 4c 30 5b 22 0a 14 a4 0a ^.EC0_BAL0[".... 5240: 1f a1 08 5b 22 0a 14 a4 0a 0f a1 08 5b 22 0a 14 ...[".......[".. 5250: a4 0a 1f 14 48 10 5f 42 49 46 00 08 53 54 41 54 ....H._BIF..STAT 5260: 12 3a 0d 01 0b a0 0f 0b a0 0f 01 0b 5c 2b 0b a4 .:..........\+.. 5270: 01 0a 9c 0b 08 01 0b c4 0e 0d 50 41 33 34 36 35 ..........PA3465 5280: 55 20 00 0d 33 36 35 38 51 00 0d 4c 69 2d 49 6f U ..3658Q..Li-Io 5290: 6e 00 0d 43 4f 4d 50 41 4c 20 00 a0 4b 07 90 45 n..COMPAL ..K..E 52a0: 43 4f 4b 93 45 43 44 59 00 70 5e 5e 2e 45 43 30 COK.ECDY.p^^.EC0 52b0: 5f 42 44 4e 30 60 a0 23 93 60 0a 08 70 0a b4 88 _BDN0`.#.`..p... 52c0: 53 54 41 54 0a 06 00 70 0d 50 41 33 34 35 37 55 STAT...p.PA3457U 52d0: 20 00 88 53 54 41 54 0a 09 00 a0 24 93 60 0a 20 ..STAT....$.`. 52e0: 70 0b 02 01 88 53 54 41 54 0a 06 00 70 0d 50 41 p....STAT...p.PA 52f0: 33 34 35 37 55 20 00 88 53 54 41 54 0a 09 00 5b 3457U ..STAT...[ 5300: 22 0a 14 70 5e 5e 2e 45 43 30 5f 42 44 43 30 42 "..p^^.EC0_BDC0B 5310: 46 43 31 5b 22 0a 14 a1 12 70 0d 4c 69 2d 49 6f FC1["....p.Li-Io 5320: 6e 00 88 53 54 41 54 0a 0b 00 a0 2c 42 46 43 31 n..STAT....,BFC1 5330: 78 42 46 43 31 0a 64 60 61 77 61 0a 64 61 70 61 xBFC1.d`awa.dapa 5340: 42 46 43 31 70 61 88 53 54 41 54 01 00 70 61 88 BFC1pa.STAT..pa. 5350: 53 54 41 54 0a 02 00 a4 53 54 41 54 14 45 0c 5f STAT....STAT.E._ 5360: 42 53 54 00 08 50 42 53 54 12 10 04 00 0c ff ff BST..PBST....... 5370: ff ff 0c ff ff ff ff 0b 5c 2b 70 0b 5c 2b 63 a0 ........\+p.\+c. 5380: 38 90 45 43 4f 4b 93 45 43 44 59 00 5b 22 0a 14 8.ECOK.ECDY.[".. 5390: 70 5e 5e 2e 45 43 30 5f 42 53 54 30 42 53 54 31 p^^.EC0_BST0BST1 53a0: 5b 22 0a 14 70 5e 5e 2e 45 43 30 5f 47 41 55 30 ["..p^^.EC0_GAU0 53b0: 42 47 55 31 5b 22 0a 14 a0 15 42 46 43 31 77 42 BGU1["....BFC1wB 53c0: 47 55 31 42 46 43 31 62 78 62 0a 64 64 62 a1 09 GU1BFC1bxb.ddb.. 53d0: 77 42 47 55 31 0a 28 62 70 42 53 54 31 88 50 42 wBGU1.(bpBST1.PB 53e0: 53 54 00 00 70 00 88 50 42 53 54 01 00 70 62 88 ST..p..PBST..pb. 53f0: 50 42 53 54 0a 02 00 70 63 88 50 42 53 54 0a 03 PBST...pc.PBST.. 5400: 00 a0 1b 94 45 43 44 59 00 76 45 43 44 59 a0 0e ....ECDY.vECDY.. 5410: 93 45 43 44 59 00 86 42 41 54 31 0a 80 a4 50 42 .ECDY..BAT1...PB 5420: 53 54 5b 82 2e 50 53 32 4b 08 5f 48 49 44 0c 41 ST[..PS2K._HID.A 5430: d0 03 03 08 5f 43 52 53 11 19 0a 16 47 01 60 00 ...._CRS....G.`. 5440: 60 00 01 01 47 01 64 00 64 00 01 01 23 02 00 01 `...G.d.d...#... 5450: 79 00 5b 82 1e 50 53 32 4d 08 5f 48 49 44 0c 41 y.[..PS2M._HID.A 5460: d0 0f 13 08 5f 43 52 53 11 09 0a 06 23 00 10 01 ...._CRS....#... 5470: 79 00 5b 82 43 6a 50 41 54 41 08 5f 41 44 52 0c y.[.CjPATA._ADR. 5480: 01 00 1f 00 5b 80 50 41 43 53 02 0a 40 0a c0 5b ....[.PACS..@..[ 5490: 81 49 04 50 41 43 53 03 50 52 49 54 10 00 10 50 .I.PACS.PRIT...P 54a0: 53 49 54 04 00 1c 53 59 4e 43 04 00 0c 53 44 54 SIT...SYNC...SDT 54b0: 30 02 00 02 53 44 54 31 02 00 4a 04 49 43 52 30 0...SDT1..J.ICR0 54c0: 04 49 43 52 31 04 49 43 52 32 04 49 43 52 33 04 .ICR1.ICR2.ICR3. 54d0: 49 43 52 34 04 49 43 52 35 04 5b 82 4b 63 50 52 ICR4.ICR5.[.KcPR 54e0: 49 44 08 5f 41 44 52 00 14 40 17 5f 47 54 4d 00 ID._ADR..@._GTM. 54f0: 08 50 42 55 46 11 17 0a 14 00 00 00 00 00 00 00 .PBUF........... 5500: 00 00 00 00 00 00 00 00 00 00 00 00 00 8a 50 42 ..............PB 5510: 55 46 00 50 49 4f 30 8a 50 42 55 46 0a 04 44 4d UF.PIO0.PBUF..DM 5520: 41 30 8a 50 42 55 46 0a 08 50 49 4f 31 8a 50 42 A0.PBUF..PIO1.PB 5530: 55 46 0a 0c 44 4d 41 31 8a 50 42 55 46 0a 10 46 UF..DMA1.PBUF..F 5540: 4c 41 47 70 47 45 54 50 50 52 49 54 50 49 4f 30 LAGpGETPPRITPIO0 5550: 70 47 44 4d 41 7b 53 59 4e 43 01 00 7b 49 43 52 pGDMA{SYNC..{ICR 5560: 33 01 00 7b 49 43 52 30 01 00 53 44 54 30 7b 49 3..{ICR0..SDT0{I 5570: 43 52 31 01 00 44 4d 41 30 a0 14 93 44 4d 41 30 CR1..DMA0...DMA0 5580: 0c ff ff ff ff 70 50 49 4f 30 44 4d 41 30 a0 2e .....pPIO0DMA0.. 5590: 7b 50 52 49 54 0b 00 40 00 a0 14 93 7b 50 52 49 {PRIT..@....{PRI 55a0: 54 0a 90 00 0a 80 70 0b 84 03 50 49 4f 31 a1 0e T.....p...PIO1.. 55b0: 70 47 45 54 54 50 53 49 54 50 49 4f 31 a1 0b 70 pGETTPSITPIO1..p 55c0: 0c ff ff ff ff 50 49 4f 31 70 47 44 4d 41 7b 53 .....PIO1pGDMA{S 55d0: 59 4e 43 0a 02 00 7b 49 43 52 33 0a 02 00 7b 49 YNC...{ICR3...{I 55e0: 43 52 30 0a 02 00 53 44 54 31 7b 49 43 52 31 0a CR0...SDT1{ICR1. 55f0: 02 00 44 4d 41 31 a0 14 93 44 4d 41 31 0c ff ff ..DMA1...DMA1... 5600: ff ff 70 50 49 4f 31 44 4d 41 31 70 47 45 54 46 ..pPIO1DMA1pGETF 5610: 7b 53 59 4e 43 01 00 7b 53 59 4e 43 0a 02 00 50 {SYNC..{SYNC...P 5620: 52 49 54 46 4c 41 47 a0 2c 7b 93 50 49 4f 30 0c RITFLAG.,{.PIO0. 5630: ff ff ff ff 93 44 4d 41 30 0c ff ff ff ff 00 70 .....DMA0......p 5640: 0a 78 50 49 4f 30 70 0a 14 44 4d 41 30 70 0a 03 .xPIO0p..DMA0p.. 5650: 46 4c 41 47 a4 50 42 55 46 14 4c 2a 5f 53 54 4d FLAG.PBUF.L*_STM 5660: 03 8a 68 00 50 49 4f 30 8a 68 0a 04 44 4d 41 30 ..h.PIO0.h..DMA0 5670: 8a 68 0a 08 50 49 4f 31 8a 68 0a 0c 44 4d 41 31 .h..PIO1.h..DMA1 5680: 8a 68 0a 10 46 4c 41 47 a0 41 12 93 87 69 0b 00 .h..FLAG.A...i.. 5690: 02 7b 50 52 49 54 0b f0 c0 50 52 49 54 7b 53 59 .{PRIT...PRIT{SY 56a0: 4e 43 0a 02 53 59 4e 43 70 00 53 44 54 30 7b 49 NC..SYNCp.SDT0{I 56b0: 43 52 30 0a 02 49 43 52 30 7b 49 43 52 31 0a 02 CR0..ICR0{ICR1.. 56c0: 49 43 52 31 7b 49 43 52 33 0a 02 49 43 52 33 7b ICR1{ICR3..ICR3{ 56d0: 49 43 52 35 0a 02 49 43 52 35 8b 69 0a 62 57 34 ICR5..ICR5.i.bW4 56e0: 39 30 8b 69 0a 6a 57 35 33 30 8b 69 0a 7e 57 36 90.i.jW530.i.~W6 56f0: 33 30 8b 69 0a 80 57 36 34 30 8b 69 0a b0 57 38 30.i..W640.i..W8 5700: 38 30 8b 69 0a ba 57 39 33 30 7d 50 52 49 54 0b 80.i..W930}PRIT. 5710: 04 80 50 52 49 54 a0 1e 90 7b 46 4c 41 47 0a 02 ..PRIT...{FLAG.. 5720: 00 7b 57 34 39 30 0b 00 08 00 7d 50 52 49 54 0a .{W490....}PRIT. 5730: 02 50 52 49 54 7d 50 52 49 54 53 45 54 50 50 49 .PRIT}PRITSETPPI 5740: 4f 30 57 35 33 30 57 36 34 30 50 52 49 54 a0 4b O0W530W640PRIT.K 5750: 05 7b 46 4c 41 47 01 00 7d 53 59 4e 43 01 53 59 .{FLAG..}SYNC.SY 5760: 4e 43 70 53 44 4d 41 44 4d 41 30 53 44 54 30 a0 NCpSDMADMA0SDT0. 5770: 12 95 44 4d 41 30 0a 1e 7d 49 43 52 33 01 49 43 ..DMA0..}ICR3.IC 5780: 52 33 a0 12 95 44 4d 41 30 0a 3c 7d 49 43 52 30 R3...DMA0.<}ICR0 5790: 01 49 43 52 30 a0 14 7b 57 39 33 30 0b 00 20 00 .ICR0..{W930.. . 57a0: 7d 49 43 52 31 01 49 43 52 31 a0 4b 15 93 87 6a }ICR1.ICR1.K...j 57b0: 0b 00 02 7b 50 52 49 54 0b 0f bf 50 52 49 54 70 ...{PRIT...PRITp 57c0: 00 50 53 49 54 7b 53 59 4e 43 01 53 59 4e 43 70 .PSIT{SYNC.SYNCp 57d0: 00 53 44 54 31 7b 49 43 52 30 01 49 43 52 30 7b .SDT1{ICR0.ICR0{ 57e0: 49 43 52 31 01 49 43 52 31 7b 49 43 52 33 01 49 ICR1.ICR1{ICR3.I 57f0: 43 52 33 7b 49 43 52 35 01 49 43 52 35 8b 6a 0a CR3{ICR5.ICR5.j. 5800: 62 57 34 39 31 8b 6a 0a 6a 57 35 33 31 8b 6a 0a bW491.j.jW531.j. 5810: 7e 57 36 33 31 8b 6a 0a 80 57 36 34 31 8b 6a 0a ~W631.j..W641.j. 5820: b0 57 38 38 31 8b 6a 0a ba 57 39 33 31 7d 50 52 .W881.j..W931}PR 5830: 49 54 0b 40 80 50 52 49 54 a0 1e 90 7b 46 4c 41 IT.@.PRIT...{FLA 5840: 47 0a 08 00 7b 57 34 39 31 0b 00 08 00 7d 50 52 G...{W491....}PR 5850: 49 54 0a 20 50 52 49 54 a0 4c 04 7b 46 4c 41 47 IT. PRIT.L.{FLAG 5860: 0a 10 00 7d 50 52 49 54 0b 00 40 50 52 49 54 a0 ...}PRIT..@PRIT. 5870: 13 94 50 49 4f 31 0a f0 7d 50 52 49 54 0a 80 50 ..PIO1..}PRIT..P 5880: 52 49 54 a1 21 7d 50 52 49 54 0a 10 50 52 49 54 RIT.!}PRIT..PRIT 5890: 70 53 45 54 54 50 49 4f 31 57 35 33 31 57 36 34 pSETTPIO1W531W64 58a0: 31 50 53 49 54 a0 40 06 7b 46 4c 41 47 0a 04 00 1PSIT.@.{FLAG... 58b0: 7d 53 59 4e 43 0a 02 53 59 4e 43 70 53 44 4d 41 }SYNC..SYNCpSDMA 58c0: 44 4d 41 31 53 44 54 31 a0 13 95 44 4d 41 31 0a DMA1SDT1...DMA1. 58d0: 1e 7d 49 43 52 33 0a 02 49 43 52 33 a0 13 95 44 .}ICR3..ICR3...D 58e0: 4d 41 31 0a 3c 7d 49 43 52 30 0a 02 49 43 52 30 MA1.<}ICR0..ICR0 58f0: a0 15 7b 57 39 33 31 0b 00 20 00 7d 49 43 52 31 ..{W931.. .}ICR1 5900: 0a 02 49 43 52 31 5b 82 47 10 50 5f 44 30 08 5f ..ICR1[.G.P_D0._ 5910: 41 44 52 00 14 4a 0f 5f 47 54 46 00 08 50 49 42 ADR..J._GTF..PIB 5920: 30 11 11 0a 0e 03 00 00 00 00 a0 ef 03 00 00 00 0............... 5930: 00 a0 ef 8c 50 49 42 30 01 50 4d 44 30 8c 50 49 ....PIB0.PMD0.PI 5940: 42 30 0a 08 44 4d 44 30 a0 40 06 7b 50 52 49 54 B0..DMD0.@.{PRIT 5950: 0a 02 00 a0 13 93 7b 50 52 49 54 0a 09 00 0a 08 ......{PRIT..... 5960: 70 0a 08 50 4d 44 30 a1 41 04 70 0a 0a 50 4d 44 p..PMD0.A.p..PMD 5970: 30 7a 7b 50 52 49 54 0b 00 03 00 0a 08 60 7a 7b 0z{PRIT......`z{ 5980: 50 52 49 54 0b 00 30 00 0a 0c 61 72 60 61 62 a0 PRIT..0...ar`ab. 5990: 0c 93 0a 03 62 70 0a 0b 50 4d 44 30 a0 0c 93 0a ....bp..PMD0.... 59a0: 05 62 70 0a 0c 50 4d 44 30 a1 07 70 01 50 4d 44 .bp..PMD0..p.PMD 59b0: 30 a0 43 04 7b 53 59 4e 43 01 00 70 7d 53 44 54 0.C.{SYNC..p}SDT 59c0: 30 0a 40 00 44 4d 44 30 a0 2c 7b 49 43 52 31 01 0.@.DMD0.,{ICR1. 59d0: 00 a0 13 7b 49 43 52 30 01 00 72 44 4d 44 30 0a ...{ICR0..rDMD0. 59e0: 02 44 4d 44 30 a0 0f 7b 49 43 52 33 01 00 70 0a .DMD0..{ICR3..p. 59f0: 45 44 4d 44 30 a1 14 7d 74 7b 50 4d 44 30 0a 07 EDMD0..}t{PMD0.. 5a00: 00 0a 02 00 0a 20 44 4d 44 30 a4 50 49 42 30 5b ..... DMD0.PIB0[ 5a10: 82 46 10 50 5f 44 31 08 5f 41 44 52 01 14 49 0f .F.P_D1._ADR..I. 5a20: 5f 47 54 46 00 08 50 49 42 31 11 11 0a 0e 03 00 _GTF..PIB1...... 5a30: 00 00 00 b0 ef 03 00 00 00 00 b0 ef 8c 50 49 42 .............PIB 5a40: 31 01 50 4d 44 31 8c 50 49 42 31 0a 08 44 4d 44 1.PMD1.PIB1..DMD 5a50: 31 a0 4b 05 7b 50 52 49 54 0a 20 00 a0 13 93 7b 1.K.{PRIT. ....{ 5a60: 50 52 49 54 0a 90 00 0a 80 70 0a 08 50 4d 44 31 PRIT.....p..PMD1 5a70: a1 3c 72 7b 50 53 49 54 0a 03 00 7a 7b 50 53 49 .. 0050: 80 49 ee 6a 65 26 72 1e cd bf 5f 2f 96 d6 c0 0a .I.je&r..._/.... 0060: 92 f5 06 b5 00 b2 3b 29 02 e2 4c 8d c2 f2 bc 41 ......;)..L....A 0070: 77 9c 70 f0 f3 1b 09 d2 63 5a dc a8 83 f8 5e c9 w.p.....cZ....^. 0080: 15 95 f9 fa fd dc 05 b7 4d 67 7f 2d b3 84 33 20 ........Mg.-..3 0090: e1 d1 79 2a a7 6a 77 d1 b6 20 2a 76 42 c5 d5 e9 ..y*.jw.. *vB... 00a0: b6 43 40 55 44 c3 c9 37 99 5f 41 97 70 f3 d1 f6 .C@UD..7._A.p... 00b0: 07 ec 7b 1a 29 a1 c1 f1 91 fd 48 86 6e 3e ce cb ..{.).....H.n>.. 00c0: 01 00 00 00 b6 00 00 00 00 00 02 00 4c 45 4e 4f ............LENO 00d0: 56 4f 54 50 2d 36 38 20 20 20 57 49 4e 44 4f 57 VOTP-68 WINDOW 00e0: 53 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 S .............. 00f0: 00 00 00 00 00 00 8a 6e 2e c9 36 e6 7f 10 8a ea .......n..6..... 0100: 14 ad d2 93 b7 6d 9b 73 ad 83 36 b8 6c a7 a7 ee .....m.s..6.l... 0110: 37 47 16 fe f3 fc cd c7 89 84 06 16 91 0b 1e 81 7G.............. 0120: 11 42 b1 35 52 57 f6 6b bb 5f a5 81 e2 ff 89 8a .B.5RW.k._...... 0130: 95 c3 4d fc e9 56 4f 4c 34 cc 99 5e 62 e1 90 8a ..M..VOL4..^b... 0140: 54 be 4a 00 5c 9b a0 86 41 46 66 9d e2 f2 e7 36 T.J.\...AFf....6 0150: 9c 33 91 27 e7 8d 5c a1 d8 f9 a4 61 8a 1c 04 07 .3.'..\....a.... 0160: e3 2a 1e 14 f1 bd 7f 4c 09 ff 19 11 a9 d4 74 ca .*.....L......t. 0170: 11 9e dc 54 39 bf ...T9. BOOT @ 0xbf6dffd8 0000: 42 4f 4f 54 28 00 00 00 01 a5 50 54 4c 54 44 20 BOOT(.....PTLTD 0010: 24 53 42 46 54 42 4c 24 00 00 04 06 20 4c 54 50 $SBFTBL$.... LTP 0020: 01 00 00 00 36 00 00 00 ....6... SSDT @ 0xbf6d98bd 0000: 53 53 44 54 ad 02 00 00 01 59 53 61 74 61 52 65 SSDT.....YSataRe 0010: 53 61 74 61 41 68 63 69 00 10 00 00 49 4e 54 4c SataAhci....INTL 0020: 24 06 05 20 10 48 28 5c 2f 03 5f 53 42 5f 50 43 $.. .H(\/._SB_PC 0030: 49 30 53 41 54 41 5b 82 4f 0c 50 52 54 30 08 5f I0SATA[.O.PRT0._ 0040: 41 44 52 0b ff ff 14 44 0b 5f 53 44 44 01 08 47 ADR....D._SDD..G 0050: 42 55 30 11 0a 0a 07 00 00 00 00 00 a0 00 8c 47 BU0............G 0060: 42 55 30 0a 00 47 42 30 30 8c 47 42 55 30 0a 01 BU0..GB00.GBU0.. 0070: 47 42 30 31 8c 47 42 55 30 0a 02 47 42 30 32 8c GB01.GBU0..GB02. 0080: 47 42 55 30 0a 03 47 42 30 33 8c 47 42 55 30 0a GBU0..GB03.GBU0. 0090: 04 47 42 30 34 8c 47 42 55 30 0a 05 47 42 30 35 .GB04.GBU0..GB05 00a0: 8c 47 42 55 30 0a 06 47 42 30 36 a0 46 04 93 87 .GBU0..GB06.F... 00b0: 68 0b 00 02 8b 68 0a 9c 57 37 38 30 a0 1e 7b 57 h....h..W780..{W 00c0: 37 38 30 0a 08 00 70 0a 10 47 42 30 30 70 0a 03 780...p..GB00p.. 00d0: 47 42 30 31 70 0a ef 47 42 30 36 a1 16 70 0a 90 GB01p..GB06..p.. 00e0: 47 42 30 30 70 0a 03 47 42 30 31 70 0a ef 47 42 GB00p..GB01p..GB 00f0: 30 36 70 47 42 55 30 47 54 46 30 14 0b 5f 47 54 06pGBU0GTF0.._GT 0100: 46 00 a4 47 54 46 30 5b 82 41 0d 50 52 54 31 08 F..GTF0[.A.PRT1. 0110: 5f 41 44 52 0c ff ff 01 00 14 44 0b 5f 53 44 44 _ADR......D._SDD 0120: 01 08 47 42 55 31 11 0a 0a 07 00 00 00 00 00 a0 ..GBU1.......... 0130: 00 8c 47 42 55 31 0a 00 47 42 31 30 8c 47 42 55 ..GBU1..GB10.GBU 0140: 31 0a 01 47 42 31 31 8c 47 42 55 31 0a 02 47 42 1..GB11.GBU1..GB 0150: 31 32 8c 47 42 55 31 0a 03 47 42 31 33 8c 47 42 12.GBU1..GB13.GB 0160: 55 31 0a 04 47 42 31 34 8c 47 42 55 31 0a 05 47 U1..GB14.GBU1..G 0170: 42 31 35 8c 47 42 55 31 0a 06 47 42 31 36 a0 46 B15.GBU1..GB16.F 0180: 04 93 87 68 0b 00 02 8b 68 0a 9c 57 37 38 31 a0 ...h....h..W781. 0190: 1e 7b 57 37 38 31 0a 08 00 70 0a 10 47 42 31 30 .{W781...p..GB10 01a0: 70 0a 03 47 42 31 31 70 0a ef 47 42 31 36 a1 16 p..GB11p..GB16.. 01b0: 70 0a 90 47 42 31 30 70 0a 03 47 42 31 31 70 0a p..GB10p..GB11p. 01c0: ef 47 42 31 36 70 47 42 55 31 47 54 46 31 14 0b .GB16pGBU1GTF1.. 01d0: 5f 47 54 46 00 a4 47 54 46 31 5b 82 41 0d 50 52 _GTF..GTF1[.A.PR 01e0: 54 32 08 5f 41 44 52 0c ff ff 02 00 14 44 0b 5f T2._ADR......D._ 01f0: 53 44 44 01 08 47 42 55 32 11 0a 0a 07 00 00 00 SDD..GBU2....... 0200: 00 00 a0 00 8c 47 42 55 32 0a 00 47 42 32 30 8c .....GBU2..GB20. 0210: 47 42 55 32 0a 01 47 42 32 31 8c 47 42 55 32 0a GBU2..GB21.GBU2. 0220: 02 47 42 32 32 8c 47 42 55 32 0a 03 47 42 32 33 .GB22.GBU2..GB23 0230: 8c 47 42 55 32 0a 04 47 42 32 34 8c 47 42 55 32 .GBU2..GB24.GBU2 0240: 0a 05 47 42 32 35 8c 47 42 55 32 0a 06 47 42 32 ..GB25.GBU2..GB2 0250: 36 a0 46 04 93 87 68 0b 00 02 8b 68 0a 9c 57 37 6.F...h....h..W7 0260: 38 32 a0 1e 7b 57 37 38 32 0a 08 00 70 0a 10 47 82..{W782...p..G 0270: 42 32 30 70 0a 03 47 42 32 31 70 0a ef 47 42 32 B20p..GB21p..GB2 0280: 36 a1 16 70 0a 90 47 42 32 30 70 0a 03 47 42 32 6..p..GB20p..GB2 0290: 31 70 0a ef 47 42 32 36 70 47 42 55 32 47 54 46 1p..GB26pGBU2GTF 02a0: 32 14 0b 5f 47 54 46 00 a4 47 54 46 32 2.._GTF..GTF2 SSDT @ 0xbf6d981a 0000: 53 53 44 54 a3 00 00 00 01 ed 42 72 74 52 65 66 SSDT......BrtRef 0010: 44 44 30 31 42 52 54 00 00 10 00 00 49 4e 54 4c DD01BRT.....INTL 0020: 24 06 05 20 10 4e 07 5c 2f 04 5f 53 42 5f 50 43 $.. .N.\/._SB_PC 0030: 49 30 47 46 58 30 44 44 30 33 14 1e 5f 42 43 4c I0GFX0DD03.._BCL 0040: 00 a4 12 16 0a 0a 46 0a 28 0a 00 0a 0a 0a 14 0a ......F.(....... 0050: 1e 0a 28 0a 32 0a 3c 0a 46 14 25 5f 42 43 4d 01 ..(.2.<.F.%_BCM. 0060: 78 68 0a 0a 60 61 70 61 5c 2f 05 5f 53 42 5f 50 xh..`apa\/._SB_P 0070: 43 49 30 4c 50 43 42 45 43 30 5f 42 52 54 53 14 CI0LPCBEC0_BRTS. 0080: 23 5f 42 51 43 00 77 5c 2f 05 5f 53 42 5f 50 43 #_BQC.w\/._SB_PC 0090: 49 30 4c 50 43 42 45 43 30 5f 42 52 54 53 0a 0a I0LPCBEC0_BRTS.. 00a0: 60 a4 60 `.` SSDT @ 0xbf6d8e10 0000: 53 53 44 54 5f 02 00 00 01 c8 50 6d 52 65 66 00 SSDT_.....PmRef. 0010: 43 70 75 30 54 73 74 00 00 30 00 00 49 4e 54 4c Cpu0Tst..0..INTL 0020: 24 06 05 20 10 4a 23 5c 2e 5f 50 52 5f 43 50 55 $.. .J#\._PR_CPU 0030: 30 08 5f 54 50 43 0a 00 14 4d 06 5f 50 54 43 00 0._TPC...M._PTC. 0040: a0 37 7b 50 44 43 30 0a 04 00 a4 12 2c 02 11 14 .7{PDC0.....,... 0050: 0a 11 82 0c 00 7f 00 00 00 00 00 00 00 00 00 00 ................ 0060: 00 79 00 11 14 0a 11 82 0c 00 7f 00 00 00 00 00 .y.............. 0070: 00 00 00 00 00 00 79 00 a4 12 2c 02 11 14 0a 11 ......y...,..... 0080: 82 0c 00 01 04 01 00 10 10 00 00 00 00 00 00 79 ...............y 0090: 00 11 14 0a 11 82 0c 00 01 04 01 00 10 10 00 00 ................ 00a0: 00 00 00 00 79 00 08 54 53 53 49 12 41 07 08 12 ....y..TSSI.A... 00b0: 0d 05 0a 64 0b e8 03 0a 00 0a 00 0a 00 12 0d 05 ...d............ 00c0: 0a 58 0b 6b 03 0a 00 0a 0f 0a 00 12 0d 05 0a 4b .X.k...........K 00d0: 0b ee 02 0a 00 0a 0e 0a 00 12 0d 05 0a 3f 0b 71 .............?.q 00e0: 02 0a 00 0a 0d 0a 00 12 0d 05 0a 32 0b f4 01 0a ...........2.... 00f0: 00 0a 0c 0a 00 12 0d 05 0a 26 0b 77 01 0a 00 0a .........&.w.... 0100: 0b 0a 00 12 0c 05 0a 19 0a fa 0a 00 0a 0a 0a 00 ................ 0110: 12 0c 05 0a 0d 0a 7d 0a 00 0a 09 0a 00 08 54 53 ......}.......TS 0120: 53 4d 12 41 07 08 12 0d 05 0a 64 0b e8 03 0a 00 SM.A......d..... 0130: 0a 00 0a 00 12 0d 05 0a 58 0b 6b 03 0a 00 0a 1e ........X.k..... 0140: 0a 00 12 0d 05 0a 4b 0b ee 02 0a 00 0a 1c 0a 00 ......K......... 0150: 12 0d 05 0a 3f 0b 71 02 0a 00 0a 1a 0a 00 12 0d ....?.q......... 0160: 05 0a 32 0b f4 01 0a 00 0a 18 0a 00 12 0d 05 0a ..2............. 0170: 26 0b 77 01 0a 00 0a 16 0a 00 12 0c 05 0a 19 0a &.w............. 0180: fa 0a 00 0a 14 0a 00 12 0c 05 0a 0d 0a 7d 0a 00 .............}.. 0190: 0a 12 0a 00 08 54 53 53 46 0a 00 14 43 08 5f 54 .....TSSF...C._T 01a0: 53 53 00 a0 47 06 90 92 54 53 53 46 5b 12 5f 50 SS..G...TSSF[._P 01b0: 53 53 00 70 5f 50 53 53 60 70 87 60 61 76 61 70 SS.p_PSS`p.`avap 01c0: 83 88 83 88 60 61 00 0a 01 00 62 70 0a 00 63 a2 ....`a....bp..c. 01d0: 35 95 63 87 54 53 53 49 70 78 77 62 74 0a 08 63 5.c.TSSIpxwbt..c 01e0: 00 00 0a 08 00 00 64 70 64 88 83 88 54 53 53 49 ......dpd...TSSI 01f0: 63 00 0a 01 00 70 64 88 83 88 54 53 53 4d 63 00 c....pd...TSSMc. 0200: 0a 01 00 75 63 70 ff 54 53 53 46 a0 0e 7b 50 44 ...ucp.TSSF..{PD 0210: 43 30 0a 04 00 a4 54 53 53 4d a4 54 53 53 49 14 C0....TSSM.TSSI. 0220: 3f 5f 54 53 44 00 a0 27 90 7b 43 46 47 44 0c 00 ?_TSD..'.{CFGD.. 0230: 00 00 01 00 92 7b 50 44 43 30 0a 04 00 a4 12 0f .....{PDC0...... 0240: 01 12 0c 05 0a 05 0a 00 0a 00 0a fd 0a 02 a4 12 ................ 0250: 0f 01 12 0c 05 0a 05 0a 00 0a 00 0a fc 0a 01 ............... SSDT @ 0xbf6d8d6a 0000: 53 53 44 54 a6 00 00 00 01 6d 50 6d 52 65 66 00 SSDT.....mPmRef. 0010: 43 70 75 31 54 73 74 00 00 30 00 00 49 4e 54 4c Cpu1Tst..0..INTL 0020: 24 06 05 20 10 41 08 5c 2e 5f 50 52 5f 43 50 55 $.. .A.\._PR_CPU 0030: 31 08 5f 54 50 43 0a 00 14 16 5f 50 54 43 00 a4 1._TPC...._PTC.. 0040: 5c 2f 03 5f 50 52 5f 43 50 55 30 5f 50 54 43 14 \/._PR_CPU0_PTC. 0050: 16 5f 54 53 53 00 a4 5c 2f 03 5f 50 52 5f 43 50 ._TSS..\/._PR_CP 0060: 55 30 5f 54 53 53 14 3f 5f 54 53 44 00 a0 27 90 U0_TSS.?_TSD..'. 0070: 7b 43 46 47 44 0c 00 00 00 01 00 92 7b 50 44 43 {CFGD.......{PDC 0080: 31 0a 04 00 a4 12 0f 01 12 0c 05 0a 05 0a 00 0a 1............... 0090: 00 0a fd 0a 02 a4 12 0f 01 12 0c 05 0a 05 0a 00 ................ 00a0: 0a 01 0a fc 0a 01 ...... SSDT @ 0xbf6d8884 0000: 53 53 44 54 e6 04 00 00 01 df 50 6d 52 65 66 00 SSDT......PmRef. 0010: 43 70 75 50 6d 00 00 00 00 30 00 00 49 4e 54 4c CpuPm....0..INTL 0020: 24 06 05 20 10 45 08 5c 00 08 53 53 44 54 12 43 $.. .E.\..SSDT.C 0030: 05 0c 0d 43 50 55 30 49 53 54 20 00 0c 9e 95 6d ...CPU0IST ....m 0040: bf 0c b4 01 00 00 0d 43 50 55 31 49 53 54 20 00 .......CPU1IST . 0050: 0c 52 97 6d bf 0c c8 00 00 00 0d 43 50 55 30 43 .R.m.......CPU0C 0060: 53 54 20 00 0c 6f 90 6d bf 0c aa 04 00 00 0d 43 ST ..o.m.......C 0070: 50 55 31 43 53 54 20 00 0c 19 95 6d bf 0c 85 00 PU1CST ....m.... 0080: 00 00 08 43 46 47 44 0c f1 69 3f 11 08 5c 50 44 ...CFGD..i?..\PD 0090: 43 30 0c 00 00 00 80 08 5c 50 44 43 31 0c 00 00 C0......\PDC1... 00a0: 00 80 08 5c 53 44 54 4c 0a 00 10 4d 21 5c 2e 5f ...\SDTL...M!\._ 00b0: 50 52 5f 43 50 55 30 08 48 49 30 5f 0a 00 08 48 PR_CPU0.HI0_...H 00c0: 43 30 5f 0a 00 14 48 06 5f 50 44 43 01 8a 68 0a C0_...H._PDC..h. 00d0: 00 52 45 56 53 8a 68 0a 04 53 49 5a 45 70 87 68 .REVS.h..SIZEp.h 00e0: 60 70 74 60 0a 08 00 61 5b 13 68 0a 40 77 61 0a `pt`...a[.h.@wa. 00f0: 08 00 54 45 4d 50 08 53 54 53 30 11 07 0a 04 00 ..TEMP.STS0..... 0100: 00 00 00 73 53 54 53 30 54 45 4d 50 62 5f 4f 53 ...sSTS0TEMPb_OS 0110: 43 11 13 0a 10 16 a6 77 40 0c 29 be 47 9e bd d8 C......w@.).G... 0120: 70 58 71 39 53 52 45 56 53 53 49 5a 45 62 14 49 pXq9SREVSSIZEb.I 0130: 19 5f 4f 53 43 04 8a 6b 0a 00 53 54 53 30 8a 6b ._OSC..k..STS0.k 0140: 0a 04 43 41 50 30 8a 68 0a 00 49 49 44 30 8a 68 ..CAP0.h..IID0.h 0150: 0a 04 49 49 44 31 8a 68 0a 08 49 49 44 32 8a 68 ..IID1.h..IID2.h 0160: 0a 0c 49 49 44 33 08 55 49 44 30 11 13 0a 10 16 ..IID3.UID0..... 0170: a6 77 40 0c 29 be 47 9e bd d8 70 58 71 39 53 8a .w@.).G...pXq9S. 0180: 55 49 44 30 0a 00 45 49 44 30 8a 55 49 44 30 0a UID0..EID0.UID0. 0190: 04 45 49 44 31 8a 55 49 44 30 0a 08 45 49 44 32 .EID1.UID0..EID2 01a0: 8a 55 49 44 30 0a 0c 45 49 44 33 a0 32 92 90 90 .UID0..EID3.2... 01b0: 93 49 49 44 30 45 49 44 30 93 49 49 44 31 45 49 .IID0EID0.IID1EI 01c0: 44 31 90 93 49 49 44 32 45 49 44 32 93 49 49 44 D1..IID2EID2.IID 01d0: 33 45 49 44 33 70 0a 06 53 54 53 30 a4 6b a0 0f 3EID3p..STS0.k.. 01e0: 92 93 69 0a 01 70 0a 0a 53 54 53 30 a4 6b 7d 7b ..i..p..STS0.k}{ 01f0: 50 44 43 30 0c ff ff ff 7f 00 43 41 50 30 50 44 PDC0......CAP0PD 0200: 43 30 70 7b 50 44 43 30 0a ff 00 50 43 50 30 a0 C0p{PDC0...PCP0. 0210: 4c 05 7b 43 46 47 44 0a 01 00 a0 41 05 90 90 7b L.{CFGD....A...{ 0220: 43 46 47 44 0c 00 00 00 01 00 93 7b 50 44 43 30 CFGD.......{PDC0 0230: 0a 09 00 0a 09 92 7b 53 44 54 4c 0a 01 00 7d 53 ......{SDTL...}S 0240: 44 54 4c 0a 01 53 44 54 4c 5b 80 49 53 54 30 00 DTL..SDTL[.IST0. 0250: 83 88 53 53 44 54 0a 01 00 83 88 53 53 44 54 0a ..SSDT.....SSDT. 0260: 02 00 5b 20 49 53 54 30 48 49 30 5f a0 49 05 7b ..[ IST0HI0_.I.{ 0270: 43 46 47 44 0a f0 00 a0 4e 04 90 90 7b 43 46 47 CFGD....N...{CFG 0280: 44 0c 00 00 00 01 00 7b 50 44 43 30 0a 18 00 92 D......{PDC0.... 0290: 7b 53 44 54 4c 0a 02 00 7d 53 44 54 4c 0a 02 53 {SDTL...}SDTL..S 02a0: 44 54 4c 5b 80 43 53 54 30 00 83 88 53 53 44 54 DTL[.CST0...SSDT 02b0: 0a 07 00 83 88 53 53 44 54 0a 08 00 5b 20 43 53 .....SSDT...[ CS 02c0: 54 30 48 43 30 5f a4 6b 10 4d 21 5c 2e 5f 50 52 T0HC0_.k.M!\._PR 02d0: 5f 43 50 55 31 08 48 49 31 5f 0a 00 08 48 43 31 _CPU1.HI1_...HC1 02e0: 5f 0a 00 14 48 06 5f 50 44 43 01 8a 68 0a 00 52 _...H._PDC..h..R 02f0: 45 56 53 8a 68 0a 04 53 49 5a 45 70 87 68 60 70 EVS.h..SIZEp.h`p 0300: 74 60 0a 08 00 61 5b 13 68 0a 40 77 61 0a 08 00 t`...a[.h.@wa... 0310: 54 45 4d 50 08 53 54 53 31 11 07 0a 04 00 00 00 TEMP.STS1....... 0320: 00 73 53 54 53 31 54 45 4d 50 62 5f 4f 53 43 11 .sSTS1TEMPb_OSC. 0330: 13 0a 10 16 a6 77 40 0c 29 be 47 9e bd d8 70 58 .....w@.).G...pX 0340: 71 39 53 52 45 56 53 53 49 5a 45 62 14 49 19 5f q9SREVSSIZEb.I._ 0350: 4f 53 43 04 8a 6b 0a 00 53 54 53 31 8a 6b 0a 04 OSC..k..STS1.k.. 0360: 43 41 50 31 8a 68 0a 00 49 49 44 30 8a 68 0a 04 CAP1.h..IID0.h.. 0370: 49 49 44 31 8a 68 0a 08 49 49 44 32 8a 68 0a 0c IID1.h..IID2.h.. 0380: 49 49 44 33 08 55 49 44 31 11 13 0a 10 16 a6 77 IID3.UID1......w 0390: 40 0c 29 be 47 9e bd d8 70 58 71 39 53 8a 55 49 @.).G...pXq9S.UI 03a0: 44 31 0a 00 45 49 44 30 8a 55 49 44 31 0a 04 45 D1..EID0.UID1..E 03b0: 49 44 31 8a 55 49 44 31 0a 08 45 49 44 32 8a 55 ID1.UID1..EID2.U 03c0: 49 44 31 0a 0c 45 49 44 33 a0 32 92 90 90 93 49 ID1..EID3.2....I 03d0: 49 44 30 45 49 44 30 93 49 49 44 31 45 49 44 31 ID0EID0.IID1EID1 03e0: 90 93 49 49 44 32 45 49 44 32 93 49 49 44 33 45 ..IID2EID2.IID3E 03f0: 49 44 33 70 0a 06 53 54 53 31 a4 6b a0 0f 92 93 ID3p..STS1.k.... 0400: 69 0a 01 70 0a 0a 53 54 53 31 a4 6b 7d 7b 50 44 i..p..STS1.k}{PD 0410: 43 31 0c ff ff ff 7f 00 43 41 50 31 50 44 43 31 C1......CAP1PDC1 0420: 70 7b 50 44 43 31 0a ff 00 50 43 50 31 a0 4c 05 p{PDC1...PCP1.L. 0430: 7b 43 46 47 44 0a 01 00 a0 41 05 90 90 7b 43 46 {CFGD....A...{CF 0440: 47 44 0c 00 00 00 01 00 93 7b 50 44 43 31 0a 09 GD.......{PDC1.. 0450: 00 0a 09 92 7b 53 44 54 4c 0a 10 00 7d 53 44 54 ....{SDTL...}SDT 0460: 4c 0a 10 53 44 54 4c 5b 80 49 53 54 31 00 83 88 L..SDTL[.IST1... 0470: 53 53 44 54 0a 04 00 83 88 53 53 44 54 0a 05 00 SSDT.....SSDT... 0480: 5b 20 49 53 54 31 48 49 31 5f a0 49 05 7b 43 46 [ IST1HI1_.I.{CF 0490: 47 44 0a f0 00 a0 4e 04 90 90 7b 43 46 47 44 0c GD....N...{CFGD. 04a0: 00 00 00 01 00 7b 50 44 43 31 0a 18 00 92 7b 53 .....{PDC1....{S 04b0: 44 54 4c 0a 20 00 7d 53 44 54 4c 0a 20 53 44 54 DTL. .}SDTL. SDT 04c0: 4c 5b 80 43 53 54 31 00 83 88 53 53 44 54 0a 0a L[.CST1...SSDT.. 04d0: 00 83 88 53 53 44 54 0a 0b 00 5b 20 43 53 54 31 ...SSDT...[ CST1 04e0: 48 43 31 5f a4 6b HC1_.k XSDT @ 0xbf6d87f0 0000: 58 53 44 54 94 00 00 00 01 c2 4c 45 4e 4f 56 4f XSDT......LENOVO 0010: 54 50 2d 36 38 20 20 20 00 00 04 06 20 4c 54 50 TP-68 .... LTP 0020: 00 00 00 00 d2 fb 6d bf 00 00 00 00 c6 fc 6d bf ......m.......m. 0030: 00 00 00 00 2e fd 6d bf 00 00 00 00 66 fd 6d bf ......m.....f.m. 0040: 00 00 00 00 a2 fd 6d bf 00 00 00 00 d4 fd 6d bf ......m.......m. 0050: 00 00 00 00 fa fd 6d bf 00 00 00 00 70 ff 6d bf ......m.....p.m. 0060: 00 00 00 00 d8 ff 6d bf 00 00 00 00 bd 98 6d bf ......m.......m. 0070: 00 00 00 00 1a 98 6d bf 00 00 00 00 10 8e 6d bf ......m.......m. 0080: 00 00 00 00 6a 8d 6d bf 00 00 00 00 84 88 6d bf ....j.m.......m. 0090: 00 00 00 00 .... RSD PTR @ 0xf7240 0000: 52 53 44 20 50 54 52 20 c5 4c 45 4e 4f 56 4f 02 RSD PTR .LENOVO. 0010: 94 87 6d bf 24 00 00 00 f0 87 6d bf 00 00 00 00 ..m.$.....m..... 0020: 39 00 00 00 9... fwts-test/apicinstance-0001/apicinstance-0001.log000066400000000000000000000016221231470457100215640ustar00rootroot00000000000000apicinstance apicinstance: Test for single instance of APIC/MADT table. apicinstance ---------------------------------------------------------- apicinstance Test 1 of 1: Test for single instance of APIC/MADT table. apicinstance Found APIC/MADT table APIC @ bf6dfcc6, length 0x104 apicinstance Found APIC/MADT table APIC @ bf6dff70, length 0x104 apicinstance (and differs from first APIC/MADT table). apicinstance FAILED [HIGH] MultipleAPICMADT: Test 1, Found 2 APIC/MADT apicinstance tables, the kernel expects just one. apicinstance If you find any APIC issues, perhaps try using apicinstance acpi_apic_instance=2. apicinstance apicinstance ========================================================== apicinstance 0 passed, 1 failed, 0 warning, 0 aborted, 0 skipped, 0 apicinstance info only. apicinstance ========================================================== fwts-test/apicinstance-0001/apicinstance-0002.log000066400000000000000000000011671231470457100215710ustar00rootroot00000000000000apicinstance apicinstance: Test for single instance of APIC/MADT table. apicinstance ---------------------------------------------------------- apicinstance Test 1 of 1: Test for single instance of APIC/MADT table. apicinstance Found APIC/MADT table APIC @ bf6dfcc6, length 0x104 apicinstance PASSED: Test 1, Found 1 APIC/MADT table(s), as expected. apicinstance apicinstance ========================================================== apicinstance 1 passed, 0 failed, 0 warning, 0 aborted, 0 skipped, 0 apicinstance info only. apicinstance ========================================================== fwts-test/apicinstance-0001/test-0001.sh000077500000000000000000000011351231470457100177350ustar00rootroot00000000000000#!/bin/bash # TEST="Test apicinstance against known incorrect ACPI tables" NAME=test-0001.sh TMPLOG=$TMP/apicinstance.log.$$ $FWTS --show-tests | grep apicinstance > /dev/null if [ $? -eq 1 ]; then echo SKIP: $TEST, $NAME exit 77 fi $FWTS --log-format="%line %owner " -w 80 --dumpfile=$FWTSTESTDIR/apicinstance-0001/acpidump-0001.log apicinstance - | grep "^[0-9]*[ ]*apicinstance" | cut -c7- > $TMPLOG diff $TMPLOG $FWTSTESTDIR/apicinstance-0001/apicinstance-0001.log >> $FAILURE_LOG ret=$? if [ $ret -eq 0 ]; then echo PASSED: $TEST, $NAME else echo FAILED: $TEST, $NAME fi rm $TMPLOG exit $ret fwts-test/apicinstance-0001/test-0002.sh000077500000000000000000000011331231470457100177340ustar00rootroot00000000000000#!/bin/bash # TEST="Test apicinstance against known correct ACPI tables" NAME=test-0002.sh TMPLOG=$TMP/apicinstance.log.$$ $FWTS --show-tests | grep apicinstance > /dev/null if [ $? -eq 1 ]; then echo SKIP: $TEST, $NAME exit 77 fi $FWTS --log-format="%line %owner " -w 80 --dumpfile=$FWTSTESTDIR/apicinstance-0001/acpidump-0002.log apicinstance - | grep "^[0-9]*[ ]*apicinstance" | cut -c7- > $TMPLOG diff $TMPLOG $FWTSTESTDIR/apicinstance-0001/apicinstance-0002.log >> $FAILURE_LOG ret=$? if [ $ret -eq 0 ]; then echo PASSED: $TEST, $NAME else echo FAILED: $TEST, $NAME fi rm $TMPLOG exit $ret fwts-test/arg-help-0001/000077500000000000000000000000001231470457100150775ustar00rootroot00000000000000fwts-test/arg-help-0001/arg-help-0001.log000066400000000000000000000237531231470457100176710ustar00rootroot00000000000000--acpica Enable ACPICA run time options. --acpica-debug Enable ACPICA debug /warning messages. -a, --all Run all tests. -b, --batch Run non-Interactive tests. --batch-experimental Run Batch Experimental tests. --disassemble-aml Disassemble AML from DSDT and SSDT tables. -d, --dump Dump out dmesg, dmidecode, lspci, ACPI tables to logs. --dumpfile Load ACPI tables using file generated by acpidump, e.g. --dumpfile=acpidump.dat --filter-error-discard Discard errors that match any of the specified labels. --filter-error-keep Keep errors that match any of the specified labels. -f, --force-clean Force a clean results log file. -h, -?, --help Print this help. -i, --interactive Just run Interactive tests. --interactive-experimental Just run Interactive Experimental tests. -j, --json-data-path Specify path to fwts json data files - default is /usr/share /fwts. -k, --klog Specify kernel log file rather than reading it from the kernel, e.g. --klog=dmesg.log --log-fields Show available log filtering fields. --log-filter Define filters to dump out specific log fields: --log-filter=RES,SUM - dump out results and summary, --log-filter=ALL,~INF - dump out all fields except info fields. --log-format Define output log format: e.g. --log-format="%date %time [%field] (%owner): ". Fields are: %time - time, %field - filter field , %owner - name of test, %level - failure error level, %line - log line number. --log-type Specify log type (plaintext, json, html or xml). -w, --log-width Define the output log width in characters. --lspci Specify path to lspci , e.g. --lspci=path. -P, --power-states Test S3, S4 power states. -q, --quiet Run quietly. --results-no-separators No horizontal separators in results log. -r, --results-output Output results to a named file. Filename can also be stout or stderr, e.g. --results-output=myresults.log , -r stdout. -R, --rsdp Specify the physical address of the ACPI RSDP. --s3-delay-delta Time to be added to delay between S3 iterations. Used in conjunction with --s3-min-delay and --s3-max-delay, e.g. --s3-delay-delta=2.5 --s3-device-check Check differences between device configurations over a S3 cycle. Note we add a default of 15 seconds to allow wifi to re-associate. Cannot be used with --s3-min-delay, --s3-max-delay and --s3-delay-delta. --s3-device-check-delay Sleep N seconds before we run a device check after waking up from suspend. Default is 15 seconds, e.g. --s3-device-check-delay=20 --s3-hybrid Run S3 with hybrid sleep, i.e. saving system states as S4 does. --s3-max-delay Maximum time between S3 iterations, e.g. --s3-max-delay=20 --s3-min-delay Minimum time between S3 iterations, e.g. --s3-min-delay=10 --s3-multiple Run S3 tests multiple times, e.g. --s3-multiple=10. --s3-quirks Comma separated list of quirk arguments to pass to pm-suspend. --s3-resume-time Maximum expected resume time in seconds, e.g. --s3-resume-time=5.1 --s3-sleep-delay Sleep N seconds between start of suspend and wakeup, e.g. --s3-sleep-delay=60 --s3-suspend-time Maximum expected suspend time in seconds, e.g. --s3-suspend-time=3.5 --s3power-sleep-delay Sleep N seconds between start of suspend and wakeup, e.g. --s3power-sleep-delay=60 --s4-delay-delta Time to be added to delay between S4 iterations. Used in conjunction with --s4-min-delay and --s4-max-delay. --s4-device-check Check differences between device configurations over a S4 cycle. Note we add a default of 15 seconds to allow wifi to re-associate. Cannot be used with --s4-min-delay, --s4-max-delay and --s4-delay-delta. --s4-device-check-delay Sleep N seconds before we run a device check after waking up from hibernate. Default is 15 seconds. --s4-max-delay Maximum time between S4 iterations. --s4-min-delay Minimum time between S4 iterations. --s4-multiple Run S4 tests multiple times, e.g. --s4-multiple=10. --s4-quirks Comma separated list of quirk arguments to pass to pm-hibernate. --s4-sleep-delay Sleep N seconds between start of hibernate and wakeup. -p, --show-progress Output test progress report to stderr. -D, --show-progress-dialog Output test progress for use in dialog tool. -s, --show-tests Show available tests. --show-tests-full Show available tests including all minor tests. -S, --skip-test Skip listed tests, e.g. --skip-test=s3 ,nx,method --stdout-summary Output SUCCESS or FAILED to stdout at end of tests. -t, --table-path Path to ACPI tables dumped by acpidump and then acpixtract, e.g. --table-path= /some/path/to/acpidumps --uefi Run UEFI tests. --uefi-get-var-multiple Run uefirtvariable get variable test multiple times. --uefi-query-var-multiple Run uefirtvariable query variable test multiple times. --uefi-set-var-multiple Run uefirtvariable set variable test multiple times. -U, --unsafe Unsafe tests (tests that can potentially cause kernel oopses). -u, --utils Run Utility 'tests'. (V14.02.00). Some of this work - Copyright (c) 1999 - 2014, Intel Corp. All rights reserved. Some of this work - Copyright (c) 2010 - 2014, Canonical. fwts-test/arg-help-0001/arg-help-0002.log000066400000000000000000000237531231470457100176720ustar00rootroot00000000000000--acpica Enable ACPICA run time options. --acpica-debug Enable ACPICA debug /warning messages. -a, --all Run all tests. -b, --batch Run non-Interactive tests. --batch-experimental Run Batch Experimental tests. --disassemble-aml Disassemble AML from DSDT and SSDT tables. -d, --dump Dump out dmesg, dmidecode, lspci, ACPI tables to logs. --dumpfile Load ACPI tables using file generated by acpidump, e.g. --dumpfile=acpidump.dat --filter-error-discard Discard errors that match any of the specified labels. --filter-error-keep Keep errors that match any of the specified labels. -f, --force-clean Force a clean results log file. -h, -?, --help Print this help. -i, --interactive Just run Interactive tests. --interactive-experimental Just run Interactive Experimental tests. -j, --json-data-path Specify path to fwts json data files - default is /usr/share /fwts. -k, --klog Specify kernel log file rather than reading it from the kernel, e.g. --klog=dmesg.log --log-fields Show available log filtering fields. --log-filter Define filters to dump out specific log fields: --log-filter=RES,SUM - dump out results and summary, --log-filter=ALL,~INF - dump out all fields except info fields. --log-format Define output log format: e.g. --log-format="%date %time [%field] (%owner): ". Fields are: %time - time, %field - filter field , %owner - name of test, %level - failure error level, %line - log line number. --log-type Specify log type (plaintext, json, html or xml). -w, --log-width Define the output log width in characters. --lspci Specify path to lspci , e.g. --lspci=path. -P, --power-states Test S3, S4 power states. -q, --quiet Run quietly. --results-no-separators No horizontal separators in results log. -r, --results-output Output results to a named file. Filename can also be stout or stderr, e.g. --results-output=myresults.log , -r stdout. -R, --rsdp Specify the physical address of the ACPI RSDP. --s3-delay-delta Time to be added to delay between S3 iterations. Used in conjunction with --s3-min-delay and --s3-max-delay, e.g. --s3-delay-delta=2.5 --s3-device-check Check differences between device configurations over a S3 cycle. Note we add a default of 15 seconds to allow wifi to re-associate. Cannot be used with --s3-min-delay, --s3-max-delay and --s3-delay-delta. --s3-device-check-delay Sleep N seconds before we run a device check after waking up from suspend. Default is 15 seconds, e.g. --s3-device-check-delay=20 --s3-hybrid Run S3 with hybrid sleep, i.e. saving system states as S4 does. --s3-max-delay Maximum time between S3 iterations, e.g. --s3-max-delay=20 --s3-min-delay Minimum time between S3 iterations, e.g. --s3-min-delay=10 --s3-multiple Run S3 tests multiple times, e.g. --s3-multiple=10. --s3-quirks Comma separated list of quirk arguments to pass to pm-suspend. --s3-resume-time Maximum expected resume time in seconds, e.g. --s3-resume-time=5.1 --s3-sleep-delay Sleep N seconds between start of suspend and wakeup, e.g. --s3-sleep-delay=60 --s3-suspend-time Maximum expected suspend time in seconds, e.g. --s3-suspend-time=3.5 --s3power-sleep-delay Sleep N seconds between start of suspend and wakeup, e.g. --s3power-sleep-delay=60 --s4-delay-delta Time to be added to delay between S4 iterations. Used in conjunction with --s4-min-delay and --s4-max-delay. --s4-device-check Check differences between device configurations over a S4 cycle. Note we add a default of 15 seconds to allow wifi to re-associate. Cannot be used with --s4-min-delay, --s4-max-delay and --s4-delay-delta. --s4-device-check-delay Sleep N seconds before we run a device check after waking up from hibernate. Default is 15 seconds. --s4-max-delay Maximum time between S4 iterations. --s4-min-delay Minimum time between S4 iterations. --s4-multiple Run S4 tests multiple times, e.g. --s4-multiple=10. --s4-quirks Comma separated list of quirk arguments to pass to pm-hibernate. --s4-sleep-delay Sleep N seconds between start of hibernate and wakeup. -p, --show-progress Output test progress report to stderr. -D, --show-progress-dialog Output test progress for use in dialog tool. -s, --show-tests Show available tests. --show-tests-full Show available tests including all minor tests. -S, --skip-test Skip listed tests, e.g. --skip-test=s3 ,nx,method --stdout-summary Output SUCCESS or FAILED to stdout at end of tests. -t, --table-path Path to ACPI tables dumped by acpidump and then acpixtract, e.g. --table-path= /some/path/to/acpidumps --uefi Run UEFI tests. --uefi-get-var-multiple Run uefirtvariable get variable test multiple times. --uefi-query-var-multiple Run uefirtvariable query variable test multiple times. --uefi-set-var-multiple Run uefirtvariable set variable test multiple times. -U, --unsafe Unsafe tests (tests that can potentially cause kernel oopses). -u, --utils Run Utility 'tests'. (V14.02.00). Some of this work - Copyright (c) 1999 - 2014, Intel Corp. All rights reserved. Some of this work - Copyright (c) 2010 - 2014, Canonical. fwts-test/arg-help-0001/test-0001.sh000077500000000000000000000016411231470457100167750ustar00rootroot00000000000000#!/bin/bash # TEST="Test -h option" NAME=test-0001.sh TMPLOG=$TMP/help.log.$$ HERE=`pwd` # # Non-x86 tests don't have WMI so skip this test # $FWTS --show-tests | grep wmi > /dev/null if [ $? -eq 1 ]; then echo SKIP: $TEST, $NAME exit 77 fi cols=$(stty -a | tr ';' '\n' | grep "columns" | cut -d' ' -f3) 2> /dev/null # # If we can't set the tty then we can't test # stty cols 50 2> /dev/null if [ $? -eq 1 ]; then echo SKIP: $TEST, $NAME exit 77 fi $FWTS -h | grep -v "Show version" | grep -v "Usage" | sed s/\(V[0-9][0-9]\.[0-9][0-9]\.[0-9][0-9]\)/\(Vxx\.xx\.xx\)/ > $TMPLOG sed s/\(V[0-9][0-9]\.[0-9][0-9]\.[0-9][0-9]\)/\(Vxx\.xx\.xx\)/ < $FWTSTESTDIR/arg-help-0001/arg-help-0001.log > $TMP/help.log.$$.orig diff $TMPLOG $TMP/help.log.$$.orig >> $FAILURE_LOG ret=$? if [ $ret -eq 0 ]; then echo PASSED: $TEST, $NAME else echo FAILED: $TEST, $NAME fi stty cols 80 2> /dev/null tset 2> /dev/null rm $TMPLOG exit $ret fwts-test/arg-help-0001/test-0002.sh000077500000000000000000000017311231470457100167760ustar00rootroot00000000000000#!/bin/bash # TEST="Test --help option" NAME=test-0002.sh TMPLOG=$TMP/help.log.$$ HERE=`pwd` # # Non-x86 tests don't have WMI so skip this test # $FWTS --show-tests | grep wmi > /dev/null if [ $? -eq 1 ]; then echo SKIP: $TEST, $NAME exit 77 fi cols=$(stty -a | tr ';' '\n' | grep "columns" | cut -d' ' -f3) 2> /dev/null # # If we can't set the tty then we can't test # stty cols 50 2> /dev/null if [ $? -eq 1 ]; then echo SKIP: $TEST, $NAME exit 77 fi $FWTS --help | grep -v "Show version" | grep -v "Usage" | sed s/\(V[0-9][0-9]\.[0-9][0-9]\.[0-9][0-9]\)/\(Vxx\.xx\.xx\)/ > $TMPLOG sed s/\(V[0-9][0-9]\.[0-9][0-9]\.[0-9][0-9]\)/\(Vxx\.xx\.xx\)/ < $FWTSTESTDIR/arg-help-0001/arg-help-0002.log > $TMP/help.log.$$.orig diff $TMPLOG $TMP/help.log.$$.orig >> $FAILURE_LOG ret=$? if [ $ret -eq 0 ]; then echo PASSED: $TEST, $NAME else echo FAILED: $TEST, $NAME fi if [ $cols -ne 0 ]; then stty cols $cols 2> /dev/null fi tset 2> /dev/null rm $TMPLOG exit $ret fwts-test/arg-json-0001/000077500000000000000000000000001231470457100151205ustar00rootroot00000000000000fwts-test/arg-json-0001/klog-0001.log000066400000000000000000000030701231470457100171350ustar00rootroot00000000000000klog klog: Scan kernel log for errors and warnings. klog ---------------------------------------------------------- klog Test 1 of 1: Kernel log error check. klog FAILED [HIGH] KlogACPIBIOSBugMultipleAPIC: Test 1, HIGH klog Kernel message: [ 0.000000] ACPI: BIOS bug: multiple APIC klog /MADT found, using 0 klog klog ADVICE: The kernel has detected more than one ACPI klog Multiple APIC Description Table (MADT) (these tables have klog the "APIC" signature). There should only be one MADT and klog the kernel will by default select the first one. However, klog one can override this and select the Nth MADT using klog acpi_apic_instance=N. klog klog Kernel message: [ 0.228089] [Firmware Bug]: ACPI: BIOS klog _OSI(Linux) query ignored klog klog ADVICE: This is not exactly a failure mode but a warning klog from the kernel. The _OSI() method has implemented a match klog to the 'Linux' query in the DSDT and this is redundant klog because the ACPI driver matches onto the Windows _OSI klog strings by default. klog klog Found 1 unique errors in kernel log. klog klog ========================================================== klog 0 passed, 1 failed, 0 warning, 0 aborted, 0 skipped, 0 klog info only. klog ========================================================== fwts-test/arg-json-0001/klog-0002.log000066400000000000000000000030701231470457100171360ustar00rootroot00000000000000klog klog: Scan kernel log for errors and warnings. klog ---------------------------------------------------------- klog Test 1 of 1: Kernel log error check. klog FAILED [HIGH] KlogACPIBIOSBugMultipleAPIC: Test 1, HIGH klog Kernel message: [ 0.000000] ACPI: BIOS bug: multiple APIC klog /MADT found, using 0 klog klog ADVICE: The kernel has detected more than one ACPI klog Multiple APIC Description Table (MADT) (these tables have klog the "APIC" signature). There should only be one MADT and klog the kernel will by default select the first one. However, klog one can override this and select the Nth MADT using klog acpi_apic_instance=N. klog klog Kernel message: [ 0.228089] [Firmware Bug]: ACPI: BIOS klog _OSI(Linux) query ignored klog klog ADVICE: This is not exactly a failure mode but a warning klog from the kernel. The _OSI() method has implemented a match klog to the 'Linux' query in the DSDT and this is redundant klog because the ACPI driver matches onto the Windows _OSI klog strings by default. klog klog Found 1 unique errors in kernel log. klog klog ========================================================== klog 0 passed, 1 failed, 0 warning, 0 aborted, 0 skipped, 0 klog info only. klog ========================================================== fwts-test/arg-json-0001/klog-0003.log000066400000000000000000000010511231470457100171340ustar00rootroot00000000000000klog klog: Scan kernel log for errors and warnings. klog ---------------------------------------------------------- klog Test 1 of 1: Kernel log error check. klog Cannot read file /xxxx/fooo/klog.json. klog Error parsing kernel log. klog klog ========================================================== klog 0 passed, 0 failed, 0 warning, 0 aborted, 0 skipped, 0 klog info only. klog ========================================================== fwts-test/arg-json-0001/klog-0004.log000066400000000000000000000010511231470457100171350ustar00rootroot00000000000000klog klog: Scan kernel log for errors and warnings. klog ---------------------------------------------------------- klog Test 1 of 1: Kernel log error check. klog Cannot read file /xxxx/fooo/klog.json. klog Error parsing kernel log. klog klog ========================================================== klog 0 passed, 0 failed, 0 warning, 0 aborted, 0 skipped, 0 klog info only. klog ========================================================== fwts-test/arg-json-0001/klog.json000066400000000000000000001377711231470457100167670ustar00rootroot00000000000000{ "common_error_warning_patterns": [ { "compare_mode": "string", "log_level": "LOG_LEVEL_CRITICAL", "tag": "FWTS_TAG_BIOS_THERMAL", "pattern": "Temperature above threshold, cpu clock throttled", "advice": "Test caused CPU temperature above critical threshold. Insufficient cooling?" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_MEDIUM", "tag": "FWTS_TAG_BIOS", "pattern": "BIOS never enumerated boot CPU", "advice": "The boot processor is not enumerated!" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "tag": "FWTS_TAG_ACPI_HOTPLUG", "pattern": "acpi_shpchprm.*_HPP fail", "advice": "Hotplug _HPP method failed" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "tag": "FWTS_TAG_ACPI_HOTPLUG", "pattern": "shpchp.*acpi_pciehprm.*OSHP fail", "advice": "ACPI Hotplug OSHP method failed" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "tag": "FWTS_TAG_ACPI_HOTPLUG", "pattern": "shpchp.*acpi_shpchprm.*evaluate _BBN fail", "advice": "Hotplug _BBN method is missing" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "tag": "FWTS_TAG_ACPI", "pattern": "Error while parsing _PSD domain information", "advice": "_PSD domain information is corrupt!" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_CRITICAL", "tag": "FWTS_TAG_ACPI", "pattern": "Wrong _BBN value, reboot and use option 'pci=noacpi'", "advice": "The BIOS has wrong _BBN value, which will make PCI root bridge have wrong bus number" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "tag": "FWTS_TAG_ACPI_APIC", "pattern": "ACPI.*apic on CPU.* stops in C2", "advice": "The local apic timer incorrectly stops during C2 idle state.The ACPI specification forbids this and Linux needs the local APIC timer to work. The most likely cause of this is that the firmware uses a hardware C3 or C4 state that is mapped to the ACPI C2 state." }, { "compare_mode": "string", "log_level": "LOG_LEVEL_CRITICAL", "tag": "FWTS_TAG_BIOS_IRQ", "pattern": "Disabling IRQ", "advice": "The kernel detected an irq storm. This is most probably an IRQ routing bug." } ], "firmware_error_warning_patterns": [ { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "tag": "FWTS_TAG_WMI", "pattern": "dell_wmi:.*Received unknown WMI event", "advice": "The Dell WMI driver has received an unknown WMI event. The driver should handle this new event or the firmware is reporting an incorrect and unknown event." }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "tag": "FWTS_TAG_WMI", "pattern": "dell_wmi:.*bad event status 0x", "advice": "The Dell WMI driver has received a bad event status. This should be investigated further." }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "tag": "FWTS_TAG_WMI", "pattern": "asus_wmi:.*Unknown key.*pressed", "advice": "The ASUS WMI driver has received an unknown key event. The driver should handle this new key event or the firmware is reporting an incorrect and unknown event." }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "tag": "FWTS_TAG_WMI", "pattern": "hp_wmi:.*bad event status 0x", "advice": "The HP WMI driver has received a bad event status. This should be investigated further." }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "tag": "FWTS_TAG_WMI", "pattern": "hp_wmi:.*Unknown response received", "advice": "The HP WMI driver has received a return object that was not of type ACPI_BUFFER. The driver needs to be updated to handle this new return type or there is a bug in the WMI mechanism on this machine." }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "tag": "FWTS_TAG_WMI", "pattern": "hp_wmi:.*Unknown buffer length", "advice": "The HP WMI driver has received a return buffer that was not the expected size of 8 or 16 bytes. This is probably a bug in the WMI mechanism on this machine." }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "tag": "FWTS_TAG_WMI", "pattern": "hp_wmi:.*Unknown key code - 0x", "advice": "The HP WMI driver has received a key code that it does not recognise. The driver needs to be updated to handle this new key code." }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "tag": "FWTS_TAG_WMI", "pattern": "hp_wmi:.*Unknown event_id", "advice": "The HP WMI driver has received an event ID that it does not recognise. The driver needs to be updated to handle this new event ID." }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "tag": "FWTS_TAG_WMI", "pattern": "msi_wmi:.*Unknown key pressed", "advice": "The MSI WMI driver has received a key code that it does not recognise. The driver needs to be updated to handle this new key code." }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "tag": "FWTS_TAG_ACPI", "pattern": "ACPI.*Handling Garbled _PRT entry", "advice": "BIOS has a garbled _PRT entry; source_name and source_index swapped." }, { "compare_mode": "string", "log_level": "LOG_LEVEL_MEDIUM", "tag": "FWTS_TAG_ACPI", "pattern": "Invalid _PCT data", "advice": "The ACPI _PCT data is invalid." }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "tag": "FWTS_TAG_ACPI", "pattern": "ACPI Error.*ACPI path has too many parent prefixes", "advice": "A path to an ACPI obejct has too many ^ parent prefixes and references passed the top of the root node. Please check AML for all ^ prefixed ACPI path names." }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_CRITICAL", "tag": "FWTS_TAG_ACPI_RSDP", "pattern": "ACPI Error.*A valid RSDP was not found", "advice": "An ACPI-compatible system must provide an RSDP (Root System Description Pointer in the system’s low address space. This structure’s only purpose is to provide the physical address of the RSDT and XSDT." }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_CRITICAL", "tag": "FWTS_TAG_ACPI_MUTEX", "pattern": "ACPI Error.*Cannot release Mutex", "advice": "Attempted to release of a Mutex that was not previous acquired. This needs fixing as it could lead to race conditions when operating on a resource that needs to be proteced by a Mutex." }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "tag": "FWTS_TAG_ACPI_EVENT", "pattern": "ACPI Error.*Could not disable .* event", "advice": "" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "tag": "FWTS_TAG_ACPI_EVENT", "pattern": "ACPI Error.*Could not enable .* event", "advice": "" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "tag": "FWTS_TAG_ACPI_BRIGHTNESS", "pattern": "ACPI Error.*Current brightness invalid", "advice": "ACPI video driver has encountered a brightness level that is outside the expected range." }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "tag": "FWTS_TAG_ACPI_NAMESPACE_LOOKUP", "pattern": "ACPI Error.*Namespace lookup failure, AE_ALREADY_EXISTS", "advice": "" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_CRITICAL", "tag": "FWTS_TAG_ACPI_BUFFER_OVERFLOW", "pattern": "ACPI Error.*_SB_._OSC.*AE_AML_BUFFER_LIMIT", "advice": "Section 6.2.10.2 of V4.0a of the ACPI specification states that the _OSC Method should be passed an 8 byte buffer of 2 x 32 DWORDs, however it appears that the method is possibly trying to access data outside this buffer. This is a bug in the _OSC method." }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_CRITICAL", "tag": "FWTS_TAG_ACPI_BUFFER_OVERFLOW", "pattern": "ACPI Error.*Field.*exceeds Buffer", "advice": "The field exceeds the allocated buffer size. This can lead to unexpected results when fetching data outside this region." }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_CRITICAL", "tag": "FWTS_TAG_ACPI_IO_PORT", "pattern": "ACPI Error.*Illegal I\/O port address\/length above 64K", "advice": "A port address or length has exceeded the maximum allowed 64K address limit. This will lead to unpredicable errors." }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "tag": "FWTS_TAG_ACPI_METHOD_RETURN", "pattern": "ACPI Error.*Incorrect return type", "advice": "An ACPI Method has returned an unexpected and incorrect return type." }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "tag": "FWTS_TAG_ACPI_METHOD_RETURN", "pattern": "ACPI Error.*Needed .*\\[Buffer\/String\/Package\\], found \\[Integer\\]", "advice": "An ACPI Method has returned an Integer type when a Buffer, String or Package was expected." }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "tag": "FWTS_TAG_ACPI_METHOD_RETURN", "pattern": "ACPI Error.*Needed .*\\[Reference\\], found \\[Device\\]", "advice": "An ACPI Method has returned an Device type when a Reference type was expected." }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "tag": "FWTS_TAG_ACPI_NO_HANDLER", "pattern": "ACPI Error.*No handler for Region", "advice": "" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "tag": "FWTS_TAG_ACPI_NO_HANDLER", "pattern": "ACPI Error.*Region .* has no handler", "advice": "" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "tag": "FWTS_TAG_ACPI_METHOD_RETURN", "pattern": "ACPI Error.*Missing expected return value", "advice": "The ACPI Method did not return a value and was expected too. This is a bug and needs fixing." }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "tag": "FWTS_TAG_ACPI_METHOD_RETURN", "pattern": "Package List length.*larger than.*truncated", "advice": "A Method has returned a Package List that was larger than expected." }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "tag": "FWTS_TAG_ACPI_METHOD_RETURN", "pattern": "ACPI Error.*Result stack is empty!", "advice": "" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_CRITICAL", "tag": "FWTS_TAG_ACPI_AML_OPCODE", "pattern": "ACPI Error.*Found unknown opcode", "advice": "An illegal AML opcode has been found and is ignored. This indicates either badly compiled code or opcode corruption in the DSDT or SSDT tables or a bug in the ACPI execution engine. Recommend disassembing using iasl to find any offending code." }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_CRITICAL", "tag": "FWTS_TAG_ACPI_AML_OPCODE", "pattern": "ACPI Warning.*Detected an unsupported executable opcode", "advice": "An illegal AML opcode has been found and is ignored. This indicates either badly compiled code or opcode corruption in the DSDT or SSDT tables or a bug in the ACPI execution engine. Recommend disassembing using iasl to find any offending code." }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "tag": "FWTS_TAG_BIOS", "pattern": "bios32_service.*not present", "advice": "The BIOS has found a BIOS32 Service Directory but the BIOS has returned error 0x80 on calling the service, which indicates that the requested service has not been implemented in the firmware." }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "tag": "FWTS_TAG_BIOS", "pattern": "bios32_service.*BIOS bug", "advice": "The BIOS has found a BIOS32 Service Directory but the BIOS has returned an error on calling the service, which is unexpected and usually means the firmware is broken." }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "tag": "FWTS_TAG_BIOS_IRQ", "pattern": "PCI: Error.*when fetching IRQ routing table", "advice": "The BIOS has been interrogated for the PCI IRQ routing table but the BIOS returned an error." }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_CRITICAL", "tag": "FWTS_TAG_ACPI_PARSE_EXEC_FAIL", "pattern": "ACPI Error.*Denied AML access to port", "advice": "AML code was accessing an I/O port that was banned from accesses. Ports 0x20-0x21 (PIC0), 0xa0-0xa1 (PIC1), 0x4d0-0x4d1 (ELCR) are always banned. For _OSI() greater or equal to 'Windows 2001' (Windows XP) ports 0x00-0x0f (DMA), 0x40-0x43 (PIT1), 0x48-0x4b (PIT2), 0x70-0x71 (RTC), 0x81-0x83 (DMA1), 0x87 (DMA1L), 0x89-0x8b (DMA2), 0x8f (DMA2L), 0x90-0x91 (ARBC), 0x93-0x94 (SETUP), 0x96-0x97 (POS), 0xc0-0xdf (ISA DMA) and 0xcf8-0xcff (PCI config) are banned. Since the AML code has been banned from accessing these ports you will get undefined behaviour and the AML code should be fixed." }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "tag": "FWTS_TAG_ACPI_PARSE_EXEC_FAIL", "pattern": "ACPI Error.*Method parse\/execution failed.*AE_AML_NO_RETURN_VALUE", "advice": "The ACPI Method was expected to return a value and did not." }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "tag": "FWTS_TAG_ACPI_PARSE_EXEC_FAIL", "pattern": "ACPI Error.*Method (execution|parse\/execution) failed.*AE_ALREADY_EXISTS", "advice": "" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "tag": "FWTS_TAG_ACPI_PARSE_EXEC_FAIL", "pattern": "ACPI Error.*Method (execution|parse\/execution) failed.*AE_INVALID_TABLE_LENGTH", "advice": "The ACPI Method returned a table of the incorrect length. This can lead to unexepected results." }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "tag": "FWTS_TAG_ACPI_PARSE_EXEC_FAIL", "pattern": "ACPI Error.*Method (execution|parse\/execution) failed.*AE_AML_BUFFER_LIMIT", "advice": "Method failed: ResourceSourceIndex is present but ResourceSource is not." }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "tag": "FWTS_TAG_ACPI_PARSE_EXEC_FAIL", "pattern": "ACPI Error.*Method (execution|parse\/execution) failed.*AE_NOT_EXIST", "advice": "" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "tag": "FWTS_TAG_ACPI_PARSE_EXEC_FAIL", "pattern": "ACPI Error.*Method (execution|parse\/execution) failed.*AE_NOT_FOUND", "advice": "" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "tag": "FWTS_TAG_ACPI_PARSE_EXEC_FAIL", "pattern": "ACPI Error.*Method (execution|parse\/execution) failed.*AE_LIMIT", "advice": "" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "tag": "FWTS_TAG_ACPI_PARSE_EXEC_FAIL", "pattern": "ACPI Error.*Method (execution|parse\/execution) failed.*AE_AML_OPERAND_TYPE", "advice": "" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "tag": "FWTS_TAG_ACPI_PARSE_EXEC_FAIL", "pattern": "ACPI Error.*Method (execution|parse\/execution) failed.*AE_TIME", "advice": "" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "tag": "FWTS_TAG_ACPI_PARSE_EXEC_FAIL", "pattern": "ACPI Error.*Method (execution|parse\/execution) failed.*AE_AML_PACKAGE_LIMIT", "advice": "" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "tag": "FWTS_TAG_ACPI_PARSE_EXEC_FAIL", "pattern": "ACPI Error.*Method (execution|parse\/execution) failed.*AE_OWNER_ID_LIMIT", "advice": "Method failed to allocate owner ID." }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "tag": "FWTS_TAG_ACPI_PARSE_EXEC_FAIL", "pattern": "ACPI Error.*Method (execution|parse\/execution) failed.*AE_AML_MUTEX_NOT_ACQUIRED", "advice": "A Mutex acquire failed, which could possibly indicate that it was previously acquired and not released, or a race has occurred. Some AML code fails to miss Mutex acquire failures, so it is a good idea to verify all Mutex Acquires using the syntaxcheck test." }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "tag": "FWTS_TAG_ACPI", "pattern": "ACPI Error.*SMBus or IPMI write requires Buffer of", "advice": "An incorrect SMBus or IPMI write buffer size was used." }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "tag": "FWTS_TAG_ACPI_BRIGHTNESS", "pattern": "ACPI Error.*Evaluating _BCM failed", "advice": "The ACPI engine has failed to execute the _BCM Brightness Control Method. This will result in possibly failing to set the display brightness level." }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "tag": "FWTS_TAG_ACPI_EVAL", "pattern": "ACPI (Warning|Error).*Evaluating .* failed", "advice": "Executing the ACPI Method leaded in an execution failure. This needs investigating." }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "tag": "FWTS_TAG_ACPI_BAD_ADDRESS", "pattern": "ACPI Warning.*Optional field.*has zero address or length", "advice": "An ACPI table contains Generic Address Structure that has an address that is incorrectly set to zero, or a zero length. This needs to be fixed. " }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "tag": "FWTS_TAG_ACPI_BAD_ADDRESS", "pattern": "ACPI (Warning|Error).*two DSDT tables", "advice": "The FADT table contains a mismatch between the 32 bit pointer (DSDT) and 64 bit pointer (X_DSDT) pointer to the FACS table. Section 5.2.9 of version 4.0a of the ACPI specification states that X_DSDT should be zero if DSDT is defined, or DSDT should be zero if X_DSDT is zero. With two different pointers defined, the kernel has to make a choice, and opts for the 32 bit pointer. Because these pointers are different, it suggests either one of them is incorrect, or different 32 bit and 64 bit DSDT tables are present in your system, which is NOT complaint with the ACPI specification. The kernel has to make a choice and opts for the 32 bit DSDT." }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "tag": "FWTS_TAG_ACPI_BAD_ADDRESS", "pattern": "ACPI (Warning|Error).*two FACS tables", "advice": "The FADT table contains a mismatch between the 32 bit pointer (FIRMWARE_CTRL) and 64 bit pointer (X_FIRMWARE_CTRL) pointer to the FACS table. Section 5.2.9 of version 4.0a of the ACPI specification states that X_FIRMWARE_CTRL should be zero if FIRMWARE_CTRL is defined, or FIRMWARE_CTRL should be zero if X_FIRMWARE_CTRL is zero. With two different pointers defined, the kernel has to make a choice, and opts for the 32 bit pointer. Because these pointers are different, it suggests either one of them is incorrect, or different 32 bit and 64 bit FACS tables are present in your system, which is NOT complaint with the ACPI specification. The kernel has to make a choice and opts for the 32 bit FIRMWARE_CTRL." }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "tag": "FWTS_TAG_ACPI_BAD_ADDRESS", "pattern": "ACPI Error.*32/64X address mismatch in.*, using 32", "advice": "The FADT table contains a mismatch between a 32 bit pointer and a 64 bit Generic Address pointer. Because these pointers are different, it suggests either one of them is incorrect. If a non-null 32 bit pointer exists, then the kernel will opt for this in preference to the 64 bit pointer even though this is not in accordance to the ACPI specification." }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "tag": "FWTS_TAG_ACPI_BAD_ADDRESS", "pattern": "ACPI (Warning|Error).*32\/64.*(length|address) mismatch in.*tbfadt", "advice": "The FADT table contains Generic Address Structure that has a mismatch between the 32 bit and 64 bit versions of an address. This should be fixed so there are no mismatches. " }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "tag": "FWTS_TAG_ACPI_BAD_ADDRESS", "pattern": "ACPI (Warning|Error).*32\/64.*(length|address) mismatch in", "advice": "A table contains Generic Address Structure that has a mismatch between the 32 bit and 64 bit versions of an address. This should be fixed so there are no mismatches. " }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "tag": "FWTS_TAG_ACPI_METHOD_RETURN", "pattern": "ACPI Warning.*Return Package type mismatch", "advice": "ACPI AML interpreter executed a Method that returned a package with incorrectly typed data. The offending method needs to be fixed." }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "tag": "FWTS_TAG_ACPI_METHOD_RETURN", "pattern": "ACPI Warning.*Return Package has no elements", "advice": "ACPI AML interpreter executed a Method that returned a package with no elements inside it. This is most probably a bug in the Method and needs to be fixed." }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "tag": "FWTS_TAG_ACPI_METHOD_RETURN", "pattern": "ACPI Warning.*Return Package is too small", "advice": "ACPI AML interpreter executed a Method that returned a package with too few elements inside it. This is most probably a bug in the Method and needs to be fixed." }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_MEDIUM", "tag": "FWTS_TAG_ACPI_TABLE_CHECKSUM", "pattern": "ACPI Warning.*Incorrect checksum in table", "advice": "The ACPI table listed above has an incorrect checksum, this could be a BIOS bug or due to table corruption." }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "tag": "FWTS_TAG_ACPI_METHOD_RETURN", "pattern": "ACPI Warning.*_BQC returned an invalid level", "advice": "Method _BQC (Brightness Query Current) returned an invalid display brightness level." }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "tag": "FWTS_TAG_ACPI_BRIGHTNESS", "pattern": "ACPI Error.*Found unordered _BCL package", "advice": "Method _BCL (Query List of Brightness Control Levels Supported) has a maximum brightness value which is not the last value in the returned package. Values returned must be in ascending order." }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "tag": "FWTS_TAG_ACPI_BRIGHTNESS", "pattern": "ACPI Error.*Too many duplicates in _BCL package", "advice": "Method _BCL (Query List of Brightness Control Levels Supported) contains too many duplicated brightness levels in the returned package and this is non-standard." }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "tag": "FWTS_TAG_ACPI", "pattern": "ACPI Warning.*Could not enable fixed event", "advice": "" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "tag": "FWTS_TAG_ACPI_METHOD_RETURN", "pattern": "ACPI Warning.*Return type mismatch", "advice": "The ACPI Method returned an incorrect type, this should be fixed." }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "tag": "FWTS_TAG_ACPI_PARAMETER", "pattern": "ACPI Warning.*Parameter count mismatch", "advice": "The ACPI Method was executing with a different number of parameters than the Method expected. This should be fixed." }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "tag": "FWTS_TAG_ACPI_PARAMETER", "pattern": "ACPI Warning.*Insufficient arguments", "advice": "The ACPI Method has not enough arguments as expected. This should be fixed." }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "tag": "FWTS_TAG_ACPI_PACKAGE", "pattern": "ACPI Warning.*Package has no elements", "advice": "The ACPI Method returned a package with no elements in it, and some were exepected.This should be fixed." }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "tag": "FWTS_TAG_ACPI_METHOD_RETURN", "pattern": "ACPI Warning.*Converted Buffer to expected String", "advice": "Method returned a Buffer type instead of a String type and ACPI driver automatically converted it to a String. It is worth fixing this in the DSDT or SSDT even if the kernel fixes it at run time." }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "tag": "FWTS_TAG_ACPI_PACKAGE", "pattern": "ACPI Warning.*Return Package type mistmatch at index", "advice": "The ACPI Method returned a package that contained data of the incorrect data type. This data type needs fixing." }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "tag": "FWTS_TAG_ACPI_BAD_LENGTH", "pattern": "ACPI Warning.*Invalid length for.*fadt", "advice": "This item in the FADT is the incorrect length. Should be corrected." }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "tag": "FWTS_TAG_ACPI_THROTTLING", "pattern": "ACPI Warning.*Invalid throttling state", "advice": "" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "tag": "FWTS_TAG_EMBEDDED_CONTROLLER", "pattern": "ACPI Exception:.*AE_TIME.*Returned by Handler for.*[EmbeddedControl]", "advice": "This is most probably caused by when a read or write operation to the EC memory has failed because of a timeout waiting for the Embedded Controller to complete the transaction. Normally, the kernel waits for 500ms for the Embedded Controller status port to indicate that a transaction is complete, but in this case it has not and a AE_TIME error has been returned. " }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "tag": "FWTS_TAG_ACPI", "pattern": "ACPI Warning", "advice": "ACPI AML intepreter has found some non-conforming AML code. This should be investigated and fixed." }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "tag": "FWTS_TAG_ACPI_APIC", "pattern": "ACPI.*BIOS bug: multiple APIC\/MADT found, using", "advice": "The kernel has detected more than one ACPI Multiple APIC Description Table (MADT) (these tables have the \"APIC\" signature). There should only be one MADT and the kernel will by default select the first one. However, one can override this and select the Nth MADT using acpi_apic_instance=N." }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_MEDIUM", "tag": "FWTS_TAG_ACPI_BAD_ADDRESS", "pattern": "\\[Firmware Bug\\]: ACPI.*Invalid physical address in GAR", "advice": "ACPI Generic Address is invalid" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_MEDIUM", "tag": "FWTS_TAG_BIOS_AMD_POWERNOW", "pattern": "\\[Firmware Bug\\]: powernow-k8.*(No PSB or ACPI _PSS objects|No compatible ACPI _PSS|Your BIOS does not provide ACPI _PSS objects)", "advice": "The _PSS object (Performance Supported States) is an optional object that indicates the number of supported processor performance states. The powernow-k8 driver source states: If you see this message, complain to BIOS manufacturer. If he tells you \"we do not support Linux\" or some similar nonsense, remember that Windows 2000 uses the same legacy mechanism that the old Linux PSB driver uses. Tell them it is broken with Windows 2000. The reference to the AMD documentation is chapter 9 in the BIOS and Kernel Developer's Guide, which is available on www.amd.com." }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_MEDIUM", "tag": "FWTS_TAG_BIOS_AMD_POWERNOW", "pattern": "\\[Firmware Bug\\]: powernow-k8.*Try again with latest", "advice": "" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_MEDIUM", "tag": "FWTS_TAG_ACPI_BAD_ADDRESS", "pattern": "\\[Firmware Bug\\]: ACPI.*Invalid bit width in GAR", "advice": "ACPI Generic Address width must be 8, 16, 32 or 64" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_MEDIUM", "tag": "FWTS_TAG_ACPI_BAD_ADDRESS", "pattern": "\\[Firmware Bug\\]: ACPI.*Invalid address space type in GAR", "advice": "ACPI Generic Address space type must be system memory or system IO space." }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_MEDIUM", "tag": "FWTS_TAG_ACPI_BAD_ADDRESS", "pattern": "\\[Firmware Bug\\]: ACPI.*no secondary bus range in _CRS", "advice": "_CRS Method should return a secondary bus address for the status\/command port. The kernel is having to guess this based on the _BBN or assume it's 0x00-0xff." }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_MEDIUM", "tag": "FWTS_TAG_ACPI", "pattern": "\\[Firmware Bug\\]: ACPI.*Invalid BIOS _PSS frequency", "advice": "_PSS (Performance Supported States) package has an incorrectly define core frequency (first DWORD entry in the _PSS package)." }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "tag": "FWTS_TAG_ACPI_BRIGHTNESS", "pattern": "\\[Firmware Bug\\]: ACPI.*No _BQC method", "advice": "_BQC (Brightness Query Current level) seems to be missing. This method returns the current brightness level of a built-in display output device." }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "tag": "FWTS_TAG_ACPI_BRIGHTNESS", "pattern": "\\[Firmware Bug\\]: ACPI.*brightness control misses _BQC function", "advice": "_BQC (Brightness Query Current level) seems to be missing. This method returns the current brightness level of a built-in display output device." }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "tag": "FWTS_TAG_ACPI", "pattern": "\\[Firmware Bug\\]: BIOS needs update for CPU frequency support", "advice": "Having _PPC but missing frequencies (_PSS, _PCT) is a good hint that the BIOS is older than the CPU and does not know the CPU frequencies." }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "tag": "FWTS_TAG_ACPI", "pattern": "\\[Firmware Bug\\]: ERST.*ERST table is invalid", "advice": "The Error Record Serialization Table (ERST) seems to be invalid. This normally indicates that the ERST table header size is too small, or the table size (excluding header) is not a multiple of the ERST entries." }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_CRITICAL", "tag": "FWTS_TAG_ACPI_THERMAL", "pattern": "\\[Firmware Bug\\]:.*Invalid critical threshold", "advice": "ACPI _CRT (Critical Trip Point) is returning a threshold lower than zero degrees Celsius which is clearly incorrect." }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_CRITICAL", "tag": "FWTS_TAG_ACPI_THERMAL", "pattern": "\\[Firmware Bug\\]:.*No valid trip found", "advice": "No valud ACPI _CRT (Critical Trip Point) was found." }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "tag": "FWTS_TAG_ACPI_BRIGHTNESS", "pattern": "\\[Firmware Bug\\]:.*_BCQ is used instead of _BQC", "advice": "ACPI Method _BCQ was defined (typo) instead of _BQC - this should be fixed.however the kernel has detected this and is working around this typo." }, { "compare_mode": "string", "log_level": "LOG_LEVEL_CRITICAL", "tag": "FWTS_TAG_BIOS", "pattern": "MPTABLE: bad signature", "advice": "The MultiProcessor table has an incorrect signature, it should be PCMP. The kernel cannot trust the table and has disabled SMP support." }, { "compare_mode": "string", "log_level": "LOG_LEVEL_CRITICAL", "tag": "FWTS_TAG_BIOS", "pattern": "MPTABLE: checksum error", "advice": "The MultiProcessor table has an incorrect checksum. The kernel cannot trust the table and has disabled SMP support." }, { "compare_mode": "string", "log_level": "LOG_LEVEL_CRITICAL", "tag": "FWTS_TAG_BIOS", "pattern": "MPTABLE: bad table version", "advice": "The MultiProcessor table has an incorrect version. It should be 0x01 or 0x04 (for versions 1.1 and 1.4 respectively). The kernel cannot trust the table and has disabled SMP support." }, { "compare_mode": "string", "log_level": "LOG_LEVEL_CRITICAL", "tag": "FWTS_TAG_BIOS", "pattern": "MPTABLE: null local APIC address", "advice": "The MultiProcessor table contains a NULL Local APIC address but the Local APIC address must be defined. The kernel has disabled SMP support." }, { "compare_mode": "string", "log_level": "LOG_LEVEL_CRITICAL", "tag": "FWTS_TAG_BIOS", "pattern": "MPTABLE: no processors registered", "advice": "The MultiProcessor table contains no Processor Entry Fields, and hence there are no CPUs defined. The kernel has no option but to disable SMP support." }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_CRITICAL", "tag": "FWTS_TAG_BIOS", "pattern": "BIOS bug.*no explicit IRQ entries.*using default mptable", "advice": "The MultiProcessor table contains no IRQ Entry Fields, and hence there are no IRQs defined. The table is broken and should be fixed. The kernel will set up the low 16 IO-APIC pins to the ISA defaults in the hope the machine may work." }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "tag": "FWTS_TAG_BIOS_IRQ", "pattern": "BIOS bug.*timer not connected to IO-APIC", "advice": "The BIOS is reporting the ExtINTA I/O APIC input from the cascaded 8259A as the timer interrupt input. The kernel has detected just one pin, so it has to check the timer directly and through the 8259A because of the broken BIOS reporting." }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "tag": "FWTS_TAG_BIOS_IRQ", "pattern": "BIOS bug,.*IO-APIC.*ID is.*in the MPC table.*", "advice": "The IO-APIC id in the MPC table is wrong and the kernel has detected this and attempted to fix it. The MPC table in the firmware needs to be fixed." }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "tag": "FWTS_TAG_BIOS_IRQ", "pattern": "BIOS bug,.*IO-APIC.*ID is already used!", "advice": "The IO-APIC id has been defined more than once in the MPC table, which is a firmware bug and should be fixed. The kernel has detected this and skopped this duplication to avoid stuck on smp_invalidate_needed IPI wait' messages." }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_CRITICAL", "tag": "FWTS_TAG_BIOS", "pattern": "WARNING.*BIOS bug.*CPU MTRRs don't cover all of memory, losing", "advice": "The Memory Type Range Registers (MTRRs) which define memory caching policy are misconfigued by the BIOS and don't appear to cover all available physical memory. The kernel has detected this and has reduced the amount of memory available to be safe. Either check that the BIOS memory caching options are set correctly or contact your BIOS vendor to get this fixed." }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_MEDIUM", "tag": "FWTS_TAG_BIOS", "pattern": "mtrr:.*your BIOS has configured an incorrect mask, fixing it", "advice": "The Memory Type Range Registers (MTRRs) which define memory caching policy are misconfigued by the BIOS. In this case, the mask is incorrectly set and the kernel has detected this and worked around the firmware bug." }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_MEDIUM", "tag": "FWTS_TAG_BIOS", "pattern": "mtrr:.*your CPUs had inconsistent fixed MTRR settings", "advice": "The fixed Memory Type Range Registers (MTRRs) which define memory caching policy are not consistent across all CPUs which is a firmware bug. The kernel has worked around this bug, but it may be worth getting the BIOS vendor to fix this." }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_MEDIUM", "tag": "FWTS_TAG_BIOS", "pattern": "mtrr:.*your CPUs had inconsistent variable MTRR settings", "advice": "The variable Memory Type Range Registers (MTRRs) which define memory caching policy are not consistent across all CPUs which is a firmware bug. The kernel has worked around this bug, but it may be worth getting the BIOS vendor to fix this." }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_MEDIUM", "tag": "FWTS_TAG_BIOS", "pattern": "mtrr:.*your CPUs had inconsistent MTRRdefType settings", "advice": "The Memory Type Range Registers (MTRRs) which define memory caching policy do not have a MTRRdefType consistently set across all CPUs which is a firmware bug. The kernel has worked around this bug, but it may be worth getting the BIOS vendor to fix this." }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "tag": "FWTS_TAG_BIOS", "pattern": "mtrr:.*base.*is not 4 MiB aligned", "advice": "The Memory Type Range Registers (MTRRs) for Intel PPro CPUs with stepping < 8 must be 4 MiB aligned and not touch 0x70000000 -> 0x7003FFFF. This BIOS misconfiguration and should be fixed." }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_CRITIICAL", "tag": "FWTS_TAG_BIOS", "pattern": "mtrr:.*writable mtrr between 0x70000000 and 0x7003FFFF may hang the CPU", "advice": "The Memory Type Range Registers (MTRRs) for Intel PPro CPUs with stepping < 8 must not touch region 0x70000000 -> 0x7003FFFF. This BIOS misconfiguration may hang the CPU and should be fixed." }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "tag": "FWTS_TAG_BIOS", "pattern": "mtrr:.*base.*is not aligned on a size.*boundary", "advice": "The Memory Type Range Registers (MTRRs) must be correctly aligned. This BIOS misconfiguration and should be fixed." }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "tag": "FWTS_TAG_ACPI", "pattern": ".*defines _DOD but not _DOS", "advice": "ACPI Method _DOD (Enumerate all devices attached to display adapter) is defined but we should also have _DOS (Enable\/Disable output switching) defined but it's been omitted. This can cause display switching issues." }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "tag": "FWTS_TAG_ACPI", "pattern": "WARNING:.*bogus zero IO-APIC address found in MPTABLE", "advice": "An IO-APIC address of zero has been found in the MPTABLE and is thus treated as misconfigured or bogus. I/O APIC support has been disabled. This is considered a firmware bug and the MPTABLE needs to be fixed." }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "tag": "FWTS_TAG_ACPI", "pattern": "WARNING:.*Bogus.*APIC address found in table", "advice": "An IO-APIC address of zero has been found in the MPTABLE and is thus treated as misconfigured or bogus. I/O APIC support has been disabled. This is considered a firmware bug and the MPTABLE needs to be fixed." }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_MEDIUM", "tag": "FWTS_TAG_ACPI", "pattern": "\\[Firmware Bug\\]:.*Duplicate ACPI video bus", "advice": "Try video module parameter video.allow_duplicates=1 if the current driver does't work." }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_MEDIUM", "tag": "FWTS_TAG_ACPI_PCI_EXPRESS", "pattern": "\\[Firmware Bug\\]:.*PCI.*MMCONFIG.*not reserved in ACPI motherboard resources", "advice": "It appears that PCI config space has been configured for a specific device but does not appear to be reserved by the ACPI motherboard resources." }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_MEDIUM", "tag": "FWTS_TAG_ACPI", "pattern": "\\[Firmware Bug\\]: PCI.*not reserved in ACPI motherboard resources", "advice": "PCI firmware bug. Please see the kernel log for more details." }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_INFO", "tag": "FWTS_TAG_ACPI", "pattern": "\\[Firmware Bug\\]:.*_OSI.*Linux.*ignored", "advice": "This is not exactly a failure mode but a warning from the kernel. The _OSI() method has implemented a match to the 'Linux' query in the DSDT and this is redundant because the ACPI driver matches onto the Windows _OSI strings by default." }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "tag": "FWTS_TAG_ACPI", "pattern": "\\[Firmware Bug\\]: ACPI:", "advice": "ACPI driver has detected an ACPI bug. This generally points to a bug in an ACPI table. Examine the kernel log for more details." }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "tag": "FWTS_TAG_ACPI", "pattern": "\\[Firmware Bug\\]:.*", "advice": "The kernel has detected a Firmware bug in the BIOS or ACPI which needs investigating and fixing." }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_MEDIUM", "tag": "FWTS_TAG_BIOS", "pattern": "PCI.*BIOS Bug:", "advice": "" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "tag": "FWTS_TAG_ACPI_NAMESPACE_LOOKUP", "pattern": "ACPI Error.*Namespace lookup failure, AE_NOT_FOUND", "advice": "The kernel has detected an error trying to execute an Method and it cannot find an object. This is indicates a bug in the DSDT or SSDT AML code." }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "tag": "FWTS_TAG_ACPI_PARSE_EXEC_FAIL", "pattern": "ACPI Error.+psparse", "advice": "The ACPI engine has failed to execute some AML. The error message above lists the method that caused this error." }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "tag": "FWTS_TAG_ACPI", "pattern": "ACPI Error", "advice": "The kernel has most probably detected an error while executing ACPI AML. The error lists the ACPI driver module and the line number where the bug has been caught and the method that caused the error." }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "tag": "FWTS_TAG_ACPI_PARSE_EXEC_FAIL", "pattern": "\\*\\*\\* Error.*Method execution failed", "advice": "Execution of an ACPI AML method failed." }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_CRITICAL", "tag": "FWTS_TAG_ACPI_PARSE_EXEC_FAIL", "pattern": "\\*\\*\\* Error.*Method execution failed.*AE_AML_METHOD_LIMIT", "advice": "ACPI method reached maximum reentrancy limit of 255 - infinite recursion in AML in DSTD or SSDT" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_CRITICAL", "tag": "FWTS_TAG_ACPI_PARSE_EXEC_FAIL", "pattern": "\\*\\*\\* Error.*Method reached maximum reentrancy limitACPI method has reached reentrancy limit, this is a recursion bug in the AML", "advice": "" }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "tag": "FWTS_TAG_ACPI_METHOD_RETURN", "pattern": "\\*\\*\\* Error.*Return object type is incorrect", "advice": "Return object type is not the correct type, this is an AML error in the DSDT or SSDT" } ], "pm_error_warning_patterns": [ { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "tag": "FWTS_TAG_POWER_MANAGEMENT", "pattern": "PM: Failed to prepare device", "advice": "dpm_prepare() failed to prepare all non-sys devices for a system PM transition. The device should be listed in the error message." }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "tag": "FWTS_TAG_POWER_MANAGEMENT", "pattern": "PM: Some devices failed to power down", "advice": "dpm_suspend_noirq failed because some devices did not power down " }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "tag": "FWTS_TAG_POWER_MANAGEMENT", "pattern": "PM: Some system devices failed to power down", "advice": "sysdev_suspend failed because some system devices did not power down." }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "tag": "FWTS_TAG_POWER_MANAGEMENT", "pattern": "PM: Error", "advice": "" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "tag": "FWTS_TAG_NONE", "pattern": "PM: Some devices failed to power down", "advice": "" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_CRITICAL", "tag": "FWTS_TAG_POWER_MANAGEMENT", "pattern": "PM: Restore failed, recovering", "advice": "A resume from hibernate failed when calling hibernation_restore()" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_CRITICAL", "tag": "FWTS_TAG_POWER_MANAGEMENT", "pattern": "PM: Resume from disk failed", "advice": "" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_CRITICAL", "tag": "FWTS_TAG_POWER_MANAGEMENT", "pattern": "PM: Not enough free memory", "advice": "There was not enough physical memory to be able to generate a hibernation image before dumping it to disc." }, { "compare_mode": "string", "log_level": "LOG_LEVEL_CRITICAL", "tag": "FWTS_TAG_POWER_MANAGEMENT", "pattern": "PM: Memory allocation failed", "advice": "swusp_alloc() failed trying to allocate highmem and failing that non-highmem pages for the suspend image. There is probably just not enough free physcial memory available." }, { "compare_mode": "string", "log_level": "LOG_LEVEL_CRITICAL", "tag": "FWTS_TAG_POWER_MANAGEMENT", "pattern": "PM: Image mismatch", "advice": "Mismatch in kernel version, system type, kernel release version or machine id between suspended kernel and resumed kernel." }, { "compare_mode": "string", "log_level": "LOG_LEVEL_CRITICAL", "tag": "FWTS_TAG_POWER_MANAGEMENT", "pattern": "PM: Some devices failed to power down", "advice": "" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_CRITICAL", "tag": "FWTS_TAG_POWER_MANAGEMENT", "pattern": "PM: Some devices failed to suspend", "advice": "" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_MEDIUM", "tag": "FWTS_TAG_POWER_MANAGEMENT", "pattern": "PM: can't read", "advice": "Testing suspend cannot read RTC" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_MEDIUM", "tag": "FWTS_TAG_POWER_MANAGEMENT", "pattern": "PM: can't set", "advice": "Testing suspend cannot set RTC" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "tag": "FWTS_TAG_POWER_MANAGEMENT", "pattern": "PM: suspend test failed, error", "advice": "" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "tag": "FWTS_TAG_POWER_MANAGEMENT", "pattern": "PM: can't test ", "advice": "" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_MEDIUM", "tag": "FWTS_TAG_POWER_MANAGEMENT", "pattern": "PM: no wakealarm-capable RTC driver is ready", "advice": "" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_CRITICAL", "tag": "FWTS_TAG_POWER_MANAGEMENT", "pattern": "PM: Adding page to bio failed at", "advice": "An attempt to write the hibernate image to disk failed because a write BIO operation failed. This is usually a result of some physical hardware problem." }, { "compare_mode": "string", "log_level": "LOG_LEVEL_CRITICAL", "tag": "FWTS_TAG_POWER_MANAGEMENT", "pattern": "PM: Swap header not found", "advice": "An attempt to write a hibernate image to disk failed because a valid swap device header could not be found. Make sure there is a formatted swap device on the machine and it is added using swapon -a." }, { "compare_mode": "string", "log_level": "LOG_LEVEL_CRITICAL", "tag": "FWTS_TAG_POWER_MANAGEMENT", "pattern": "PM: Cannot find swap device", "advice": "An attempt to write a hibernate image to disk failed because the swap device could not be found. Make sure there is a formatted swap device on the machine and it is added using swapon -a." }, { "compare_mode": "string", "log_level": "LOG_LEVEL_CRITICAL", "tag": "FWTS_TAG_POWER_MANAGEMENT", "pattern": "PM: Not enough free swap", "advice": "Hibernate failed because the swap parition was probably too small." }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "tag": "FWTS_TAG_POWER_MANAGEMENT", "pattern": "PM: Image device not initialised", "advice": "" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "tag": "FWTS_TAG_POWER_MANAGEMENT", "pattern": "PM: Please power down manually", "advice": "" }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "tag": "FWTS_TAG_POWER_MANAGEMENT", "pattern": "check_for_bios_corruption", "advice": "The BIOS seems to be corrupting the first 64K of memory when doing suspend\/resume. Setting bios_corruption_check=0 will disable this check." }, { "compare_mode": "regex", "log_level": "LOG_LEVEL_HIGH", "tag": "FWTS_TAG_POWER_MANAGEMENT", "pattern": "WARNING: at.*hpet_next_event", "advice": "Possibly an Intel I\/O controller hub HPET Write Timing issue: A read transaction that immediately follows a write transaction to the HPET TIMn_COMP Timer 0 (108h), HPET MAIN_CNT (0F0h), or TIMn_CONF.bit 6 (100h) may return an incorrect value. This is known to cause issues when coming out of S3." }, { "compare_mode": "string", "log_level": "LOG_LEVEL_HIGH", "tag": "FWTS_TAG_POWER_MANAGEMENT", "pattern": "BUG: soft lockup.*stuck for 0s", "advice": "Softlock errors that occur when coming out of S3 may be tripped by TSC warping. It may be worth trying the notsc kernel parameter and repeating S3 tests to see if this solves the problem." } ] } fwts-test/arg-json-0001/klog.txt000066400000000000000000002225711231470457100166260ustar00rootroot00000000000000[ 0.000000] Initializing cgroup subsys cpuset [ 0.000000] Initializing cgroup subsys cpu [ 0.000000] Linux version 3.0.0-12-generic (buildd@crested) (gcc version 4.6.1 (Ubuntu/Linaro 4.6.1-9ubuntu3) ) #19-Ubuntu SMP Fri Sep 23 21:23:39 UTC 2011 (Ubuntu 3.0.0-12.19-generic 3.0.4) [ 0.000000] Command line: BOOT_IMAGE=/vmlinuz-3.0.0-12-generic root=UUID=08ed6ce0-0907-4d06-b1e1-b9c3ec647fe2 ro crashkernel=384M-2G:64M,2G-:128M quiet splash vt.handoff=7 [ 0.000000] KERNEL supported cpus: [ 0.000000] Intel GenuineIntel [ 0.000000] AMD AuthenticAMD [ 0.000000] Centaur CentaurHauls [ 0.000000] BIOS-provided physical RAM map: [ 0.000000] BIOS-e820: 0000000000000000 - 000000000009f800 (usable) [ 0.000000] BIOS-e820: 000000000009f800 - 00000000000a0000 (reserved) [ 0.000000] BIOS-e820: 00000000000d2000 - 00000000000d4000 (reserved) [ 0.000000] BIOS-e820: 00000000000dc000 - 0000000000100000 (reserved) [ 0.000000] BIOS-e820: 0000000000100000 - 00000000bf6d0000 (usable) [ 0.000000] BIOS-e820: 00000000bf6d0000 - 00000000bf6e3000 (ACPI NVS) [ 0.000000] BIOS-e820: 00000000bf6e3000 - 00000000c0000000 (reserved) [ 0.000000] BIOS-e820: 00000000e0000000 - 00000000f0000000 (reserved) [ 0.000000] BIOS-e820: 00000000fec00000 - 00000000fec10000 (reserved) [ 0.000000] BIOS-e820: 00000000fed00000 - 00000000fed00400 (reserved) [ 0.000000] BIOS-e820: 00000000fed14000 - 00000000fed1a000 (reserved) [ 0.000000] BIOS-e820: 00000000fed1c000 - 00000000fed90000 (reserved) [ 0.000000] BIOS-e820: 00000000fee00000 - 00000000fee01000 (reserved) [ 0.000000] BIOS-e820: 00000000ff000000 - 0000000100000000 (reserved) [ 0.000000] NX (Execute Disable) protection: active [ 0.000000] DMI present. [ 0.000000] DMI: LENOVO 0769BMG/IEL10, BIOS 68ET27WW 11/14/2007 [ 0.000000] e820 update range: 0000000000000000 - 0000000000010000 (usable) ==> (reserved) [ 0.000000] e820 remove range: 00000000000a0000 - 0000000000100000 (usable) [ 0.000000] No AGP bridge found [ 0.000000] last_pfn = 0xbf6d0 max_arch_pfn = 0x400000000 [ 0.000000] MTRR default type: uncachable [ 0.000000] MTRR fixed ranges enabled: [ 0.000000] 00000-9FFFF write-back [ 0.000000] A0000-BFFFF uncachable [ 0.000000] C0000-FFFFF write-protect [ 0.000000] MTRR variable ranges enabled: [ 0.000000] 0 base 000000000 mask F80000000 write-back [ 0.000000] 1 base 080000000 mask FC0000000 write-back [ 0.000000] 2 base 0BF700000 mask FFFF00000 uncachable [ 0.000000] 3 base 0BF800000 mask FFF800000 uncachable [ 0.000000] 4 disabled [ 0.000000] 5 disabled [ 0.000000] 6 disabled [ 0.000000] 7 disabled [ 0.000000] x86 PAT enabled: cpu 0, old 0x7040600070406, new 0x7010600070106 [ 0.000000] original variable MTRRs [ 0.000000] reg 0, base: 0GB, range: 2GB, type WB [ 0.000000] reg 1, base: 2GB, range: 1GB, type WB [ 0.000000] reg 2, base: 3063MB, range: 1MB, type UC [ 0.000000] reg 3, base: 3064MB, range: 8MB, type UC [ 0.000000] total RAM covered: 3063M [ 0.000000] Found optimal setting for mtrr clean up [ 0.000000] gran_size: 64K chunk_size: 16M num_reg: 4 lose cover RAM: 0G [ 0.000000] New variable MTRRs [ 0.000000] reg 0, base: 0GB, range: 2GB, type WB [ 0.000000] reg 1, base: 2GB, range: 1GB, type WB [ 0.000000] reg 2, base: 3063MB, range: 1MB, type UC [ 0.000000] reg 3, base: 3064MB, range: 8MB, type UC [ 0.000000] found SMP MP-table at [ffff8800000f72c0] f72c0 [ 0.000000] initial memory mapped : 0 - 20000000 [ 0.000000] Base memory trampoline at [ffff88000009a000] 9a000 size 20480 [ 0.000000] init_memory_mapping: 0000000000000000-00000000bf6d0000 [ 0.000000] 0000000000 - 00bf600000 page 2M [ 0.000000] 00bf600000 - 00bf6d0000 page 4k [ 0.000000] kernel direct mapping tables up to bf6d0000 @ bf6cb000-bf6d0000 [ 0.000000] RAMDISK: 359ec000 - 36cee000 [ 0.000000] Reserving 128MB of memory at 720MB for crashkernel (System RAM: 3062MB) [ 0.000000] ACPI: RSDP 00000000000f7240 00024 (v02 LENOVO) [ 0.000000] ACPI: XSDT 00000000bf6d87f0 00094 (v01 LENOVO TP-68 06040000 LTP 00000000) [ 0.000000] ACPI: FACP 00000000bf6dfbd2 000F4 (v03 TOSCPL CRESTLNE 06040000 ALAN 00000001) [ 0.000000] ACPI: DSDT 00000000bf6d9b6a 05FF4 (v02 TOSCPL CRESTLNE 06040000 INTL 20060608) [ 0.000000] ACPI: FACS 00000000bf6e2fc0 00040 [ 0.000000] ACPI: APIC 00000000bf6dfcc6 00068 (v01 INTEL CRESTLNE 06040000 LOHR 0000005A) [ 0.000000] ACPI: HPET 00000000bf6dfd2e 00038 (v01 INTEL CRESTLNE 06040000 LOHR 0000005A) [ 0.000000] ACPI: MCFG 00000000bf6dfd66 0003C (v01 INTEL CRESTLNE 06040000 LOHR 0000005A) [ 0.000000] ACPI: TCPA 00000000bf6dfda2 00032 (v01 Intel CRESTLNE 06040000 LOHR 0000005A) [ 0.000000] ACPI: TMOR 00000000bf6dfdd4 00026 (v01 PTLTD 06040000 PTL 00000003) [ 0.000000] ACPI: SLIC 00000000bf6dfdfa 00176 (v01 LENOVO TP-68 06040000 TBD 00000001) [ 0.000000] ACPI: APIC 00000000bf6dff70 00068 (v01 PTLTD ? APIC 06040000 LTP 00000000) [ 0.000000] ACPI: BOOT 00000000bf6dffd8 00028 (v01 PTLTD $SBFTBL$ 06040000 LTP 00000001) [ 0.000000] ACPI: SSDT 00000000bf6d98bd 002AD (v01 SataRe SataAhci 00001000 INTL 20050624) [ 0.000000] ACPI: SSDT 00000000bf6d981a 000A3 (v01 BrtRef DD01BRT 00001000 INTL 20050624) [ 0.000000] ACPI: SSDT 00000000bf6d8e10 0025F (v01 PmRef Cpu0Tst 00003000 INTL 20050624) [ 0.000000] ACPI: SSDT 00000000bf6d8d6a 000A6 (v01 PmRef Cpu1Tst 00003000 INTL 20050624) [ 0.000000] ACPI: SSDT 00000000bf6d8884 004E6 (v01 PmRef CpuPm 00003000 INTL 20050624) [ 0.000000] ACPI: BIOS bug: multiple APIC/MADT found, using 0 [ 0.000000] ACPI: If "acpi_apic_instance=2" works better, notify linux-acpi@vger.kernel.org [ 0.000000] ACPI: Local APIC address 0xfee00000 [ 0.000000] No NUMA configuration found [ 0.000000] Faking a node at 0000000000000000-00000000bf6d0000 [ 0.000000] Initmem setup node 0 0000000000000000-00000000bf6d0000 [ 0.000000] NODE_DATA [00000000bf6c6000 - 00000000bf6cafff] [ 0.000000] [ffffea0000000000-ffffea00029fffff] PMD -> [ffff8800bbe00000-ffff8800be7fffff] on node 0 [ 0.000000] Zone PFN ranges: [ 0.000000] DMA 0x00000010 -> 0x00001000 [ 0.000000] DMA32 0x00001000 -> 0x00100000 [ 0.000000] Normal empty [ 0.000000] Movable zone start PFN for each node [ 0.000000] early_node_map[2] active PFN ranges [ 0.000000] 0: 0x00000010 -> 0x0000009f [ 0.000000] 0: 0x00000100 -> 0x000bf6d0 [ 0.000000] On node 0 totalpages: 783967 [ 0.000000] DMA zone: 56 pages used for memmap [ 0.000000] DMA zone: 5 pages reserved [ 0.000000] DMA zone: 3922 pages, LIFO batch:0 [ 0.000000] DMA32 zone: 10664 pages used for memmap [ 0.000000] DMA32 zone: 769320 pages, LIFO batch:31 [ 0.000000] ACPI: PM-Timer IO Port: 0x1008 [ 0.000000] ACPI: Local APIC address 0xfee00000 [ 0.000000] ACPI: LAPIC (acpi_id[0x00] lapic_id[0x00] enabled) [ 0.000000] ACPI: LAPIC (acpi_id[0x01] lapic_id[0x01] enabled) [ 0.000000] ACPI: LAPIC_NMI (acpi_id[0x00] high edge lint[0x1]) [ 0.000000] ACPI: LAPIC_NMI (acpi_id[0x01] high edge lint[0x1]) [ 0.000000] ACPI: IOAPIC (id[0x01] address[0xfec00000] gsi_base[0]) [ 0.000000] IOAPIC[0]: apic_id 1, version 32, address 0xfec00000, GSI 0-23 [ 0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 0 global_irq 2 dfl dfl) [ 0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 9 global_irq 9 high level) [ 0.000000] ACPI: IRQ0 used by override. [ 0.000000] ACPI: IRQ2 used by override. [ 0.000000] ACPI: IRQ9 used by override. [ 0.000000] Using ACPI (MADT) for SMP configuration information [ 0.000000] ACPI: HPET id: 0x8086a201 base: 0xfed00000 [ 0.000000] SMP: Allowing 2 CPUs, 0 hotplug CPUs [ 0.000000] nr_irqs_gsi: 40 [ 0.000000] PM: Registered nosave memory: 000000000009f000 - 00000000000a0000 [ 0.000000] PM: Registered nosave memory: 00000000000a0000 - 00000000000d2000 [ 0.000000] PM: Registered nosave memory: 00000000000d2000 - 00000000000d4000 [ 0.000000] PM: Registered nosave memory: 00000000000d4000 - 00000000000dc000 [ 0.000000] PM: Registered nosave memory: 00000000000dc000 - 0000000000100000 [ 0.000000] Allocating PCI resources starting at c0000000 (gap: c0000000:20000000) [ 0.000000] Booting paravirtualized kernel on bare hardware [ 0.000000] setup_percpu: NR_CPUS:256 nr_cpumask_bits:256 nr_cpu_ids:2 nr_node_ids:1 [ 0.000000] PERCPU: Embedded 27 pages/cpu @ffff8800bf400000 s79616 r8192 d22784 u1048576 [ 0.000000] pcpu-alloc: s79616 r8192 d22784 u1048576 alloc=1*2097152 [ 0.000000] pcpu-alloc: [0] 0 1 [ 0.000000] Built 1 zonelists in Node order, mobility grouping on. Total pages: 773242 [ 0.000000] Policy zone: DMA32 [ 0.000000] Kernel command line: BOOT_IMAGE=/vmlinuz-3.0.0-12-generic root=UUID=08ed6ce0-0907-4d06-b1e1-b9c3ec647fe2 ro crashkernel=384M-2G:64M,2G-:128M quiet splash vt.handoff=7 [ 0.000000] PID hash table entries: 4096 (order: 3, 32768 bytes) [ 0.000000] Checking aperture... [ 0.000000] No AGP bridge found [ 0.000000] Calgary: detecting Calgary via BIOS EBDA area [ 0.000000] Calgary: Unable to locate Rio Grande table in EBDA - bailing! [ 0.000000] Memory: 2928536k/3136320k available (6104k kernel code, 452k absent, 207332k reserved, 4880k data, 984k init) [ 0.000000] SLUB: Genslabs=15, HWalign=64, Order=0-3, MinObjects=0, CPUs=2, Nodes=1 [ 0.000000] Hierarchical RCU implementation. [ 0.000000] RCU dyntick-idle grace-period acceleration is enabled. [ 0.000000] NR_IRQS:16640 nr_irqs:512 16 [ 0.000000] Extended CMOS year: 2000 [ 0.000000] vt handoff: transparent VT on vt#7 [ 0.000000] Console: colour dummy device 80x25 [ 0.000000] console [tty0] enabled [ 0.000000] allocated 25165824 bytes of page_cgroup [ 0.000000] please try 'cgroup_disable=memory' option if you don't want memory cgroups [ 0.000000] hpet clockevent registered [ 0.000000] Fast TSC calibration using PIT [ 0.000000] Detected 1496.217 MHz processor. [ 0.004006] Calibrating delay loop (skipped), value calculated using timer frequency.. 2992.43 BogoMIPS (lpj=5984868) [ 0.004013] pid_max: default: 32768 minimum: 301 [ 0.004056] Security Framework initialized [ 0.004080] AppArmor: AppArmor initialized [ 0.004083] Yama: becoming mindful. [ 0.004759] Dentry cache hash table entries: 524288 (order: 10, 4194304 bytes) [ 0.010636] Inode-cache hash table entries: 262144 (order: 9, 2097152 bytes) [ 0.012341] Mount-cache hash table entries: 256 [ 0.012557] Initializing cgroup subsys cpuacct [ 0.012565] Initializing cgroup subsys memory [ 0.012580] Initializing cgroup subsys devices [ 0.012583] Initializing cgroup subsys freezer [ 0.012586] Initializing cgroup subsys net_cls [ 0.012589] Initializing cgroup subsys blkio [ 0.012598] Initializing cgroup subsys perf_event [ 0.012643] CPU: Physical Processor ID: 0 [ 0.012645] CPU: Processor Core ID: 0 [ 0.012649] mce: CPU supports 6 MCE banks [ 0.012661] CPU0: Thermal monitoring handled by SMI [ 0.012667] using mwait in idle threads. [ 0.016288] ACPI: Core revision 20110413 [ 0.024040] ftrace: allocating 25651 entries in 101 pages [ 0.028444] ..TIMER: vector=0x30 apic1=0 pin1=2 apic2=-1 pin2=-1 [ 0.071627] CPU0: Intel(R) Core(TM)2 Duo CPU T5250 @ 1.50GHz stepping 0d [ 0.072003] Performance Events: PEBS fmt0+, Core2 events, Intel PMU driver. [ 0.072003] PEBS disabled due to CPU errata. [ 0.072003] ... version: 2 [ 0.072003] ... bit width: 40 [ 0.072003] ... generic registers: 2 [ 0.072003] ... value mask: 000000ffffffffff [ 0.072003] ... max period: 000000007fffffff [ 0.072003] ... fixed-purpose events: 3 [ 0.072003] ... event mask: 0000000700000003 [ 0.072003] Booting Node 0, Processors #1 Ok. [ 0.072003] smpboot cpu 1: start_ip = 9a000 [ 0.008000] CPU1: Thermal monitoring handled by SMI [ 0.160029] Brought up 2 CPUs [ 0.160033] Total of 2 processors activated (5984.88 BogoMIPS). [ 0.161224] devtmpfs: initialized [ 0.161224] PM: Registering ACPI NVS region at bf6d0000 (77824 bytes) [ 0.162075] print_constraints: dummy: [ 0.162115] Time: 7:34:42 Date: 10/05/11 [ 0.162171] NET: Registered protocol family 16 [ 0.162209] Trying to unpack rootfs image as initramfs... [ 0.164047] ACPI: bus type pci registered [ 0.164133] PCI: MMCONFIG for domain 0000 [bus 00-ff] at [mem 0xe0000000-0xefffffff] (base 0xe0000000) [ 0.164138] PCI: MMCONFIG at [mem 0xe0000000-0xefffffff] reserved in E820 [ 0.220043] PCI: Using configuration type 1 for base access [ 0.221379] bio: create slab at 0 [ 0.223506] ACPI: EC: Look up EC in DSDT [ 0.228089] [Firmware Bug]: ACPI: BIOS _OSI(Linux) query ignored [ 0.229039] ACPI: SSDT 00000000bf6d959e 001B4 (v01 PmRef Cpu0Ist 00003000 INTL 20050624) [ 0.229543] ACPI: Dynamic OEM Table Load: [ 0.229548] ACPI: SSDT (null) 001B4 (v01 PmRef Cpu0Ist 00003000 INTL 20050624) [ 0.229696] ACPI: SSDT 00000000bf6d906f 004AA (v01 PmRef Cpu0Cst 00003001 INTL 20050624) [ 0.230165] ACPI: Dynamic OEM Table Load: [ 0.230169] ACPI: SSDT (null) 004AA (v01 PmRef Cpu0Cst 00003001 INTL 20050624) [ 0.230454] ACPI: SSDT 00000000bf6d9752 000C8 (v01 PmRef Cpu1Ist 00003000 INTL 20050624) [ 0.232427] ACPI: Dynamic OEM Table Load: [ 0.232432] ACPI: SSDT (null) 000C8 (v01 PmRef Cpu1Ist 00003000 INTL 20050624) [ 0.232541] ACPI: SSDT 00000000bf6d9519 00085 (v01 PmRef Cpu1Cst 00003000 INTL 20050624) [ 0.233011] ACPI: Dynamic OEM Table Load: [ 0.233015] ACPI: SSDT (null) 00085 (v01 PmRef Cpu1Cst 00003000 INTL 20050624) [ 0.238295] ACPI: EC: GPE storm detected, transactions will use polling mode [ 0.344070] ACPI: Interpreter enabled [ 0.344078] ACPI: (supports S0 S3 S4 S5) [ 0.344118] ACPI: Using IOAPIC for interrupt routing [ 0.389051] ACPI: EC: GPE = 0x1c, I/O: command/status = 0x66, data = 0x62 [ 0.389294] ACPI: No dock devices found. [ 0.389298] HEST: Table not found. [ 0.389303] PCI: Ignoring host bridge windows from ACPI; if necessary, use "pci=use_crs" and report a bug [ 0.389762] ACPI: PCI Root Bridge [PCI0] (domain 0000 [bus 00-ff]) [ 0.390623] pci_root PNP0A08:00: host bridge window [io 0x0000-0x0cf7] (ignored) [ 0.390628] pci_root PNP0A08:00: host bridge window [io 0x0d00-0xffff] (ignored) [ 0.390632] pci_root PNP0A08:00: host bridge window [mem 0x000a0000-0x000bffff] (ignored) [ 0.390636] pci_root PNP0A08:00: host bridge window [mem 0x000d4000-0x000d7fff] (ignored) [ 0.390640] pci_root PNP0A08:00: host bridge window [mem 0x000d8000-0x000dbfff] (ignored) [ 0.390645] pci_root PNP0A08:00: host bridge window [mem 0xc0000000-0xdfffffff] (ignored) [ 0.390648] pci_root PNP0A08:00: host bridge window [mem 0xf0000000-0xfebfffff] (ignored) [ 0.390665] pci 0000:00:00.0: [8086:2a00] type 0 class 0x000600 [ 0.390726] pci 0000:00:02.0: [8086:2a02] type 0 class 0x000300 [ 0.390746] pci 0000:00:02.0: reg 10: [mem 0xfc000000-0xfc0fffff 64bit] [ 0.390758] pci 0000:00:02.0: reg 18: [mem 0xd0000000-0xdfffffff 64bit pref] [ 0.390767] pci 0000:00:02.0: reg 20: [io 0x1800-0x1807] [ 0.390812] pci 0000:00:02.1: [8086:2a03] type 0 class 0x000380 [ 0.390829] pci 0000:00:02.1: reg 10: [mem 0xfc100000-0xfc1fffff 64bit] [ 0.390937] pci 0000:00:1a.0: [8086:2834] type 0 class 0x000c03 [ 0.391013] pci 0000:00:1a.0: reg 20: [io 0x1820-0x183f] [ 0.391065] pci 0000:00:1a.1: [8086:2835] type 0 class 0x000c03 [ 0.391126] pci 0000:00:1a.1: reg 20: [io 0x1840-0x185f] [ 0.391187] pci 0000:00:1a.7: [8086:283a] type 0 class 0x000c03 [ 0.391216] pci 0000:00:1a.7: reg 10: [mem 0xfc504800-0xfc504bff] [ 0.391321] pci 0000:00:1a.7: PME# supported from D0 D3hot D3cold [ 0.391328] pci 0000:00:1a.7: PME# disabled [ 0.391362] pci 0000:00:1b.0: [8086:284b] type 0 class 0x000403 [ 0.391386] pci 0000:00:1b.0: reg 10: [mem 0xfc300000-0xfc303fff 64bit] [ 0.391473] pci 0000:00:1b.0: PME# supported from D0 D3hot D3cold [ 0.391479] pci 0000:00:1b.0: PME# disabled [ 0.391514] pci 0000:00:1c.0: [8086:283f] type 1 class 0x000604 [ 0.391605] pci 0000:00:1c.0: PME# supported from D0 D3hot D3cold [ 0.391611] pci 0000:00:1c.0: PME# disabled [ 0.391647] pci 0000:00:1c.1: [8086:2841] type 1 class 0x000604 [ 0.391735] pci 0000:00:1c.1: PME# supported from D0 D3hot D3cold [ 0.391741] pci 0000:00:1c.1: PME# disabled [ 0.391775] pci 0000:00:1c.2: [8086:2843] type 1 class 0x000604 [ 0.391868] pci 0000:00:1c.2: PME# supported from D0 D3hot D3cold [ 0.391874] pci 0000:00:1c.2: PME# disabled [ 0.391911] pci 0000:00:1c.3: [8086:2845] type 1 class 0x000604 [ 0.391999] pci 0000:00:1c.3: PME# supported from D0 D3hot D3cold [ 0.392005] pci 0000:00:1c.3: PME# disabled [ 0.392053] pci 0000:00:1d.0: [8086:2830] type 0 class 0x000c03 [ 0.392114] pci 0000:00:1d.0: reg 20: [io 0x1860-0x187f] [ 0.392162] pci 0000:00:1d.1: [8086:2831] type 0 class 0x000c03 [ 0.392238] pci 0000:00:1d.1: reg 20: [io 0x1880-0x189f] [ 0.392293] pci 0000:00:1d.2: [8086:2832] type 0 class 0x000c03 [ 0.392371] pci 0000:00:1d.2: reg 20: [io 0x18a0-0x18bf] [ 0.392438] pci 0000:00:1d.7: [8086:2836] type 0 class 0x000c03 [ 0.392466] pci 0000:00:1d.7: reg 10: [mem 0xfc504c00-0xfc504fff] [ 0.392567] pci 0000:00:1d.7: PME# supported from D0 D3hot D3cold [ 0.392573] pci 0000:00:1d.7: PME# disabled [ 0.392603] pci 0000:00:1e.0: [8086:2448] type 1 class 0x000604 [ 0.392698] pci 0000:00:1f.0: [8086:2815] type 0 class 0x000601 [ 0.392816] pci 0000:00:1f.0: quirk: [io 0x1000-0x107f] claimed by ICH6 ACPI/GPIO/TCO [ 0.392824] pci 0000:00:1f.0: quirk: [io 0x1180-0x11bf] claimed by ICH6 GPIO [ 0.392829] pci 0000:00:1f.0: ICH7 LPC Generic IO decode 1 PIO at 0680 (mask 007f) [ 0.392835] pci 0000:00:1f.0: ICH7 LPC Generic IO decode 2 PIO at 1640 (mask 000f) [ 0.392884] pci 0000:00:1f.1: [8086:2850] type 0 class 0x000101 [ 0.392903] pci 0000:00:1f.1: reg 10: [io 0x0000-0x0007] [ 0.392918] pci 0000:00:1f.1: reg 14: [io 0x0000-0x0003] [ 0.392931] pci 0000:00:1f.1: reg 18: [io 0x0000-0x0007] [ 0.392944] pci 0000:00:1f.1: reg 1c: [io 0x0000-0x0003] [ 0.392958] pci 0000:00:1f.1: reg 20: [io 0x1810-0x181f] [ 0.393014] pci 0000:00:1f.2: [8086:2829] type 0 class 0x000106 [ 0.393042] pci 0000:00:1f.2: reg 10: [io 0x1c00-0x1c07] [ 0.393056] pci 0000:00:1f.2: reg 14: [io 0x18d4-0x18d7] [ 0.393069] pci 0000:00:1f.2: reg 18: [io 0x18d8-0x18df] [ 0.393082] pci 0000:00:1f.2: reg 1c: [io 0x18d0-0x18d3] [ 0.393095] pci 0000:00:1f.2: reg 20: [io 0x18e0-0x18ff] [ 0.393108] pci 0000:00:1f.2: reg 24: [mem 0xfc504000-0xfc5047ff] [ 0.393157] pci 0000:00:1f.2: PME# supported from D3hot [ 0.393163] pci 0000:00:1f.2: PME# disabled [ 0.393188] pci 0000:00:1f.3: [8086:283e] type 0 class 0x000c05 [ 0.393206] pci 0000:00:1f.3: reg 10: [mem 0x00000000-0x000000ff] [ 0.393250] pci 0000:00:1f.3: reg 20: [io 0x1c20-0x1c3f] [ 0.393354] pci 0000:00:1c.0: PCI bridge to [bus 02-02] [ 0.393360] pci 0000:00:1c.0: bridge window [io 0x2000-0x2fff] [ 0.393367] pci 0000:00:1c.0: bridge window [mem 0xf6000000-0xf7ffffff] [ 0.393376] pci 0000:00:1c.0: bridge window [mem 0xf0000000-0xf1ffffff 64bit pref] [ 0.393501] pci 0000:04:00.0: [8086:4227] type 0 class 0x000280 [ 0.393557] pci 0000:04:00.0: reg 10: [mem 0xf8000000-0xf8000fff] [ 0.393895] pci 0000:04:00.0: PME# supported from D0 D3hot D3cold [ 0.393908] pci 0000:04:00.0: PME# disabled [ 0.393979] pci 0000:04:00.0: disabling ASPM on pre-1.1 PCIe device. You can enable it with 'pcie_aspm=force' [ 0.394021] pci 0000:00:1c.1: PCI bridge to [bus 04-04] [ 0.394027] pci 0000:00:1c.1: bridge window [io 0x3000-0x3fff] [ 0.394033] pci 0000:00:1c.1: bridge window [mem 0xf8000000-0xf9ffffff] [ 0.394043] pci 0000:00:1c.1: bridge window [mem 0xf2000000-0xf3ffffff 64bit pref] [ 0.394110] pci 0000:00:1c.2: PCI bridge to [bus 05-05] [ 0.394116] pci 0000:00:1c.2: bridge window [io 0x4000-0x4fff] [ 0.394122] pci 0000:00:1c.2: bridge window [mem 0xfa000000-0xfbffffff] [ 0.394132] pci 0000:00:1c.2: bridge window [mem 0xf4000000-0xf5ffffff 64bit pref] [ 0.394268] pci 0000:06:00.0: [14e4:1713] type 0 class 0x000200 [ 0.394336] pci 0000:06:00.0: reg 10: [mem 0xc8000000-0xc800ffff 64bit] [ 0.394639] pci 0000:06:00.0: PME# supported from D3hot D3cold [ 0.394651] pci 0000:06:00.0: PME# disabled [ 0.394783] pci 0000:00:1c.3: PCI bridge to [bus 06-06] [ 0.394789] pci 0000:00:1c.3: bridge window [io 0x5000-0x5fff] [ 0.394796] pci 0000:00:1c.3: bridge window [mem 0xc8000000-0xc9ffffff] [ 0.394806] pci 0000:00:1c.3: bridge window [mem 0xcc000000-0xcdffffff 64bit pref] [ 0.394868] pci 0000:08:06.0: [1180:0832] type 0 class 0x000c00 [ 0.394886] pci 0000:08:06.0: proprietary Ricoh MMC controller disabled (via firewire function) [ 0.394890] pci 0000:08:06.0: MMC cards are now supported by standard SDHCI controller [ 0.394909] pci 0000:08:06.0: reg 10: [mem 0xfc200000-0xfc2007ff] [ 0.395006] pci 0000:08:06.0: supports D1 D2 [ 0.395009] pci 0000:08:06.0: PME# supported from D0 D1 D2 D3hot D3cold [ 0.395016] pci 0000:08:06.0: PME# disabled [ 0.395045] pci 0000:08:06.1: [1180:0822] type 0 class 0x000805 [ 0.395069] pci 0000:08:06.1: reg 10: [mem 0xfc200800-0xfc2008ff] [ 0.395165] pci 0000:08:06.1: supports D1 D2 [ 0.395168] pci 0000:08:06.1: PME# supported from D0 D1 D2 D3hot D3cold [ 0.395174] pci 0000:08:06.1: PME# disabled [ 0.395199] pci 0000:08:06.2: [1180:0592] type 0 class 0x000880 [ 0.395224] pci 0000:08:06.2: reg 10: [mem 0xfc201000-0xfc2010ff] [ 0.395317] pci 0000:08:06.2: supports D1 D2 [ 0.395320] pci 0000:08:06.2: PME# supported from D0 D1 D2 D3hot D3cold [ 0.395326] pci 0000:08:06.2: PME# disabled [ 0.395350] pci 0000:08:06.3: [1180:0852] type 0 class 0x000880 [ 0.395376] pci 0000:08:06.3: reg 10: [mem 0xfc201400-0xfc2014ff] [ 0.395474] pci 0000:08:06.3: supports D1 D2 [ 0.395477] pci 0000:08:06.3: PME# supported from D0 D1 D2 D3hot D3cold [ 0.395484] pci 0000:08:06.3: PME# disabled [ 0.395549] pci 0000:00:1e.0: PCI bridge to [bus 08-08] (subtractive decode) [ 0.395556] pci 0000:00:1e.0: bridge window [io 0xf000-0x0000] (disabled) [ 0.395562] pci 0000:00:1e.0: bridge window [mem 0xfc200000-0xfc2fffff] [ 0.395572] pci 0000:00:1e.0: bridge window [mem 0xfff00000-0x000fffff pref] (disabled) [ 0.395576] pci 0000:00:1e.0: bridge window [io 0x0000-0xffff] (subtractive decode) [ 0.395580] pci 0000:00:1e.0: bridge window [mem 0x00000000-0xfffffffff] (subtractive decode) [ 0.395619] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0._PRT] [ 0.395828] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.RP01._PRT] [ 0.395887] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.RP02._PRT] [ 0.395944] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.RP03._PRT] [ 0.395999] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.RP04._PRT] [ 0.396116] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PCIB._PRT] [ 0.396176] pci0000:00: Requesting ACPI _OSC control (0x1d) [ 0.396181] pci0000:00: ACPI _OSC request failed (AE_NOT_FOUND), returned control mask: 0x1d [ 0.396184] ACPI _OSC control for PCIe not granted, disabling ASPM [ 0.404002] ACPI: PCI Interrupt Link [LNKA] (IRQs 1 3 4 *5 6 7 10 12 14 15) [ 0.404086] ACPI: PCI Interrupt Link [LNKB] (IRQs 1 3 4 5 6 7 11 12 14 15) *10 [ 0.404153] ACPI: PCI Interrupt Link [LNKC] (IRQs 1 3 4 5 6 *7 10 12 14 15) [ 0.404217] ACPI: PCI Interrupt Link [LNKD] (IRQs 1 3 4 5 6 7 11 12 14 15) *10 [ 0.404282] ACPI: PCI Interrupt Link [LNKE] (IRQs 1 3 4 5 6 7 10 12 14 15) *0, disabled. [ 0.404353] ACPI: PCI Interrupt Link [LNKF] (IRQs 1 3 4 5 6 7 11 12 14 15) *10 [ 0.404419] ACPI: PCI Interrupt Link [LNKG] (IRQs 1 3 4 5 6 7 10 12 14 15) *11 [ 0.404484] ACPI: PCI Interrupt Link [LNKH] (IRQs 1 3 4 5 6 7 *11 12 14 15) [ 0.404647] vgaarb: device added: PCI:0000:00:02.0,decodes=io+mem,owns=io+mem,locks=none [ 0.404670] vgaarb: loaded [ 0.404672] vgaarb: bridge control possible 0000:00:02.0 [ 0.404971] SCSI subsystem initialized [ 0.405069] libata version 3.00 loaded. [ 0.405143] usbcore: registered new interface driver usbfs [ 0.405158] usbcore: registered new interface driver hub [ 0.405200] usbcore: registered new device driver usb [ 0.405322] PCI: Using ACPI for IRQ routing [ 0.416330] PCI: pci_cache_line_size set to 64 bytes [ 0.416509] reserve RAM buffer: 000000000009f800 - 000000000009ffff [ 0.416513] reserve RAM buffer: 00000000bf6d0000 - 00000000bfffffff [ 0.416683] NetLabel: Initializing [ 0.416686] NetLabel: domain hash size = 128 [ 0.416688] NetLabel: protocols = UNLABELED CIPSOv4 [ 0.416706] NetLabel: unlabeled traffic allowed by default [ 0.416770] HPET: 3 timers in total, 0 timers will be used for per-cpu timer [ 0.416777] hpet0: at MMIO 0xfed00000, IRQs 2, 8, 0 [ 0.416784] hpet0: 3 comparators, 64-bit 14.318180 MHz counter [ 0.420524] Switching to clocksource hpet [ 0.423392] Switched to NOHz mode on CPU #0 [ 0.423487] Switched to NOHz mode on CPU #1 [ 0.430603] AppArmor: AppArmor Filesystem Enabled [ 0.430649] pnp: PnP ACPI init [ 0.430672] ACPI: bus type pnp registered [ 0.431166] pnp 00:00: [bus 00-ff] [ 0.431171] pnp 00:00: [io 0x0000-0x0cf7 window] [ 0.431174] pnp 00:00: [io 0x0cf8-0x0cff] [ 0.431177] pnp 00:00: [io 0x0d00-0xffff window] [ 0.431181] pnp 00:00: [mem 0x000a0000-0x000bffff window] [ 0.431184] pnp 00:00: [mem 0x000c0000-0x000c3fff window] [ 0.431187] pnp 00:00: [mem 0x000c4000-0x000c7fff window] [ 0.431190] pnp 00:00: [mem 0x000c8000-0x000cbfff window] [ 0.431197] pnp 00:00: [mem 0x000cc000-0x000cffff window] [ 0.431201] pnp 00:00: [mem 0x000d0000-0x000d3fff window] [ 0.431204] pnp 00:00: [mem 0x000d4000-0x000d7fff window] [ 0.431207] pnp 00:00: [mem 0x000d8000-0x000dbfff window] [ 0.431210] pnp 00:00: [mem 0x000dc000-0x000dffff window] [ 0.431213] pnp 00:00: [mem 0x000e0000-0x000e3fff window] [ 0.431216] pnp 00:00: [mem 0x000e4000-0x000e7fff window] [ 0.431219] pnp 00:00: [mem 0x000e8000-0x000ebfff window] [ 0.431222] pnp 00:00: [mem 0x000ec000-0x000effff window] [ 0.431225] pnp 00:00: [mem 0x000f0000-0x000fffff window] [ 0.431229] pnp 00:00: [mem 0xc0000000-0xdfffffff window] [ 0.431232] pnp 00:00: [mem 0xf0000000-0xfebfffff window] [ 0.431235] pnp 00:00: [mem 0xfed40000-0xfed44fff window] [ 0.431344] pnp 00:00: Plug and Play ACPI device, IDs PNP0a08 PNP0a03 (active) [ 0.431447] pnp 00:01: [mem 0xfed1c000-0xfed1ffff] [ 0.431450] pnp 00:01: [mem 0xfed14000-0xfed17fff] [ 0.431453] pnp 00:01: [mem 0xfed18000-0xfed18fff] [ 0.431456] pnp 00:01: [mem 0xfed19000-0xfed19fff] [ 0.431458] pnp 00:01: [mem 0xe0000000-0xefffffff] [ 0.431461] pnp 00:01: [mem 0xfed20000-0xfed3ffff] [ 0.431464] pnp 00:01: [mem 0xfed40000-0xfed44fff] [ 0.431467] pnp 00:01: [mem 0xfed45000-0xfed8ffff] [ 0.431559] system 00:01: [mem 0xfed1c000-0xfed1ffff] has been reserved [ 0.431564] system 00:01: [mem 0xfed14000-0xfed17fff] has been reserved [ 0.431568] system 00:01: [mem 0xfed18000-0xfed18fff] has been reserved [ 0.431572] system 00:01: [mem 0xfed19000-0xfed19fff] has been reserved [ 0.431576] system 00:01: [mem 0xe0000000-0xefffffff] has been reserved [ 0.431580] system 00:01: [mem 0xfed20000-0xfed3ffff] has been reserved [ 0.431584] system 00:01: [mem 0xfed40000-0xfed44fff] has been reserved [ 0.431588] system 00:01: [mem 0xfed45000-0xfed8ffff] has been reserved [ 0.431593] system 00:01: Plug and Play ACPI device, IDs PNP0c02 (active) [ 0.431859] pnp 00:02: [io 0x0000-0x001f] [ 0.431862] pnp 00:02: [io 0x0081-0x0091] [ 0.431864] pnp 00:02: [io 0x0093-0x009f] [ 0.431867] pnp 00:02: [io 0x00c0-0x00df] [ 0.431870] pnp 00:02: [dma 4] [ 0.431931] pnp 00:02: Plug and Play ACPI device, IDs PNP0200 (active) [ 0.431946] pnp 00:03: [mem 0xff000000-0xffffffff] [ 0.432030] pnp 00:03: Plug and Play ACPI device, IDs INT0800 (active) [ 0.432131] pnp 00:04: [mem 0xfed00000-0xfed003ff] [ 0.432218] system 00:04: [mem 0xfed00000-0xfed003ff] has been reserved [ 0.432223] system 00:04: Plug and Play ACPI device, IDs PNP0103 PNP0c01 (active) [ 0.432239] pnp 00:05: [io 0x00f0] [ 0.432256] pnp 00:05: [irq 13] [ 0.432321] pnp 00:05: Plug and Play ACPI device, IDs PNP0c04 (active) [ 0.432337] pnp 00:06: [io 0x002e-0x002f] [ 0.432340] pnp 00:06: [io 0x004e-0x004f] [ 0.432343] pnp 00:06: [io 0x0061] [ 0.432345] pnp 00:06: [io 0x0063] [ 0.432348] pnp 00:06: [io 0x0065] [ 0.432351] pnp 00:06: [io 0x0067] [ 0.432353] pnp 00:06: [io 0x0080] [ 0.432355] pnp 00:06: [io 0x0092] [ 0.432358] pnp 00:06: [io 0x00b2-0x00b3] [ 0.432361] pnp 00:06: [io 0x0680-0x069f] [ 0.432363] pnp 00:06: [io 0x0800-0x080f] [ 0.432366] pnp 00:06: [io 0x1000-0x107f] [ 0.432373] pnp 00:06: [io 0x1180-0x11bf] [ 0.432375] pnp 00:06: [io 0xfe00] [ 0.432378] pnp 00:06: [io 0xff00-0xff7f] [ 0.432479] system 00:06: [io 0x0680-0x069f] has been reserved [ 0.432484] system 00:06: [io 0x0800-0x080f] has been reserved [ 0.432487] system 00:06: [io 0x1000-0x107f] has been reserved [ 0.432491] system 00:06: [io 0x1180-0x11bf] has been reserved [ 0.432495] system 00:06: [io 0xfe00] has been reserved [ 0.432499] system 00:06: [io 0xff00-0xff7f] has been reserved [ 0.432504] system 00:06: Plug and Play ACPI device, IDs PNP0c02 (active) [ 0.432517] pnp 00:07: [io 0x0070-0x0077] [ 0.432525] pnp 00:07: [irq 8] [ 0.432587] pnp 00:07: Plug and Play ACPI device, IDs PNP0b00 (active) [ 0.452092] pnp 00:08: [io 0x0060] [ 0.452096] pnp 00:08: [io 0x0064] [ 0.452112] pnp 00:08: [irq 1] [ 0.452226] pnp 00:08: Plug and Play ACPI device, IDs PNP0303 (active) [ 0.452246] pnp 00:09: [irq 12] [ 0.452305] pnp 00:09: Plug and Play ACPI device, IDs PNP0f13 (active) [ 0.452340] pnp: PnP ACPI: found 10 devices [ 0.452343] ACPI: ACPI bus type pnp unregistered [ 0.459104] PCI: max bus depth: 1 pci_try_num: 2 [ 0.459195] pci 0000:00:1f.3: BAR 0: assigned [mem 0xc0000000-0xc00000ff] [ 0.459204] pci 0000:00:1f.3: BAR 0: set to [mem 0xc0000000-0xc00000ff] (PCI address [0xc0000000-0xc00000ff]) [ 0.459209] pci 0000:00:1c.0: PCI bridge to [bus 02-02] [ 0.459214] pci 0000:00:1c.0: bridge window [io 0x2000-0x2fff] [ 0.459222] pci 0000:00:1c.0: bridge window [mem 0xf6000000-0xf7ffffff] [ 0.459229] pci 0000:00:1c.0: bridge window [mem 0xf0000000-0xf1ffffff 64bit pref] [ 0.459239] pci 0000:00:1c.1: PCI bridge to [bus 04-04] [ 0.459244] pci 0000:00:1c.1: bridge window [io 0x3000-0x3fff] [ 0.459252] pci 0000:00:1c.1: bridge window [mem 0xf8000000-0xf9ffffff] [ 0.459259] pci 0000:00:1c.1: bridge window [mem 0xf2000000-0xf3ffffff 64bit pref] [ 0.459268] pci 0000:00:1c.2: PCI bridge to [bus 05-05] [ 0.459272] pci 0000:00:1c.2: bridge window [io 0x4000-0x4fff] [ 0.459280] pci 0000:00:1c.2: bridge window [mem 0xfa000000-0xfbffffff] [ 0.459287] pci 0000:00:1c.2: bridge window [mem 0xf4000000-0xf5ffffff 64bit pref] [ 0.459296] pci 0000:00:1c.3: PCI bridge to [bus 06-06] [ 0.459301] pci 0000:00:1c.3: bridge window [io 0x5000-0x5fff] [ 0.459308] pci 0000:00:1c.3: bridge window [mem 0xc8000000-0xc9ffffff] [ 0.459314] pci 0000:00:1c.3: bridge window [mem 0xcc000000-0xcdffffff 64bit pref] [ 0.459324] pci 0000:00:1e.0: PCI bridge to [bus 08-08] [ 0.459327] pci 0000:00:1e.0: bridge window [io disabled] [ 0.459334] pci 0000:00:1e.0: bridge window [mem 0xfc200000-0xfc2fffff] [ 0.459340] pci 0000:00:1e.0: bridge window [mem pref disabled] [ 0.459373] pci 0000:00:1c.0: PCI INT A -> GSI 17 (level, low) -> IRQ 17 [ 0.459380] pci 0000:00:1c.0: setting latency timer to 64 [ 0.459399] pci 0000:00:1c.1: PCI INT B -> GSI 16 (level, low) -> IRQ 16 [ 0.459405] pci 0000:00:1c.1: setting latency timer to 64 [ 0.459419] pci 0000:00:1c.2: PCI INT C -> GSI 18 (level, low) -> IRQ 18 [ 0.459425] pci 0000:00:1c.2: setting latency timer to 64 [ 0.459438] pci 0000:00:1c.3: PCI INT D -> GSI 19 (level, low) -> IRQ 19 [ 0.459444] pci 0000:00:1c.3: setting latency timer to 64 [ 0.459455] pci 0000:00:1e.0: setting latency timer to 64 [ 0.459460] pci_bus 0000:00: resource 0 [io 0x0000-0xffff] [ 0.459464] pci_bus 0000:00: resource 1 [mem 0x00000000-0xfffffffff] [ 0.459467] pci_bus 0000:02: resource 0 [io 0x2000-0x2fff] [ 0.459470] pci_bus 0000:02: resource 1 [mem 0xf6000000-0xf7ffffff] [ 0.459474] pci_bus 0000:02: resource 2 [mem 0xf0000000-0xf1ffffff 64bit pref] [ 0.459478] pci_bus 0000:04: resource 0 [io 0x3000-0x3fff] [ 0.459481] pci_bus 0000:04: resource 1 [mem 0xf8000000-0xf9ffffff] [ 0.459484] pci_bus 0000:04: resource 2 [mem 0xf2000000-0xf3ffffff 64bit pref] [ 0.459488] pci_bus 0000:05: resource 0 [io 0x4000-0x4fff] [ 0.459491] pci_bus 0000:05: resource 1 [mem 0xfa000000-0xfbffffff] [ 0.459495] pci_bus 0000:05: resource 2 [mem 0xf4000000-0xf5ffffff 64bit pref] [ 0.459498] pci_bus 0000:06: resource 0 [io 0x5000-0x5fff] [ 0.459501] pci_bus 0000:06: resource 1 [mem 0xc8000000-0xc9ffffff] [ 0.459505] pci_bus 0000:06: resource 2 [mem 0xcc000000-0xcdffffff 64bit pref] [ 0.459508] pci_bus 0000:08: resource 1 [mem 0xfc200000-0xfc2fffff] [ 0.459512] pci_bus 0000:08: resource 4 [io 0x0000-0xffff] [ 0.459515] pci_bus 0000:08: resource 5 [mem 0x00000000-0xfffffffff] [ 0.459580] NET: Registered protocol family 2 [ 0.459816] IP route cache hash table entries: 131072 (order: 8, 1048576 bytes) [ 0.461759] TCP established hash table entries: 524288 (order: 11, 8388608 bytes) [ 0.468207] TCP bind hash table entries: 65536 (order: 8, 1048576 bytes) [ 0.469024] TCP: Hash tables configured (established 524288 bind 65536) [ 0.469028] TCP reno registered [ 0.469052] UDP hash table entries: 2048 (order: 4, 65536 bytes) [ 0.469120] UDP-Lite hash table entries: 2048 (order: 4, 65536 bytes) [ 0.469325] NET: Registered protocol family 1 [ 0.469358] pci 0000:00:02.0: Boot video device [ 0.469577] PCI: CLS 64 bytes, default 64 [ 0.469604] Simple Boot Flag at 0x36 set to 0x1 [ 0.470069] audit: initializing netlink socket (disabled) [ 0.470088] type=2000 audit(1317800082.464:1): initialized [ 0.509918] HugeTLB registered 2 MB page size, pre-allocated 0 pages [ 0.531362] VFS: Disk quotas dquot_6.5.2 [ 0.531454] Dquot-cache hash table entries: 512 (order 0, 4096 bytes) [ 0.532343] fuse init (API version 7.16) [ 0.532465] msgmni has been set to 5719 [ 0.532931] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 253) [ 0.532975] io scheduler noop registered [ 0.532978] io scheduler deadline registered [ 0.533033] io scheduler cfq registered (default) [ 0.533206] pcieport 0000:00:1c.0: setting latency timer to 64 [ 0.533281] pcieport 0000:00:1c.0: irq 40 for MSI/MSI-X [ 0.533378] pcieport 0000:00:1c.1: setting latency timer to 64 [ 0.533444] pcieport 0000:00:1c.1: irq 41 for MSI/MSI-X [ 0.533540] pcieport 0000:00:1c.2: setting latency timer to 64 [ 0.533607] pcieport 0000:00:1c.2: irq 42 for MSI/MSI-X [ 0.533705] pcieport 0000:00:1c.3: setting latency timer to 64 [ 0.533770] pcieport 0000:00:1c.3: irq 43 for MSI/MSI-X [ 0.533898] pci_hotplug: PCI Hot Plug PCI Core version: 0.5 [ 0.533934] pciehp: PCI Express Hot Plug Controller Driver version: 0.4 [ 0.533994] intel_idle: MWAIT substates: 0x22220 [ 0.533997] intel_idle: does not run on family 6 model 15 [ 0.534105] ACPI: Deprecated procfs I/F for AC is loaded, please retry with CONFIG_ACPI_PROCFS_POWER cleared [ 0.534186] ACPI: AC Adapter [ACAD] (on-line) [ 0.534267] input: Lid Switch as /devices/LNXSYSTM:00/device:00/PNP0C0D:00/input/input0 [ 0.534291] ACPI: Lid Switch [LID0] [ 0.534348] input: Power Button as /devices/LNXSYSTM:00/device:00/PNP0C0C:00/input/input1 [ 0.534353] ACPI: Power Button [PWRB] [ 0.534429] input: Power Button as /devices/LNXSYSTM:00/LNXPWRBN:00/input/input2 [ 0.534434] ACPI: Power Button [PWRF] [ 0.534479] ACPI: acpi_idle registered with cpuidle [ 0.536970] Monitor-Mwait will be used to enter C-1 state [ 0.537024] Monitor-Mwait will be used to enter C-2 state [ 0.537059] Monitor-Mwait will be used to enter C-3 state [ 0.537066] Marking TSC unstable due to TSC halts in idle [ 0.576306] ACPI: Deprecated procfs I/F for battery is loaded, please retry with CONFIG_ACPI_PROCFS_POWER cleared [ 0.576339] ERST: Table is not found! [ 0.576477] Serial: 8250/16550 driver, 32 ports, IRQ sharing enabled [ 0.596514] ACPI: Battery Slot [BAT1] (battery present) [ 0.756873] Freeing initrd memory: 19464k freed [ 0.789948] Linux agpgart interface v0.103 [ 0.790084] agpgart-intel 0000:00:00.0: Intel 965GM Chipset [ 0.790242] agpgart-intel 0000:00:00.0: detected gtt size: 524288K total, 262144K mappable [ 0.791097] agpgart-intel 0000:00:00.0: detected 8192K stolen memory [ 0.791250] agpgart-intel 0000:00:00.0: AGP aperture is 256M @ 0xd0000000 [ 0.792794] brd: module loaded [ 0.793486] loop: module loaded [ 0.793683] ata_piix 0000:00:1f.1: version 2.13 [ 0.793701] ata_piix 0000:00:1f.1: PCI INT A -> GSI 19 (level, low) -> IRQ 19 [ 0.793746] ata_piix 0000:00:1f.1: setting latency timer to 64 [ 0.794143] scsi0 : ata_piix [ 0.794282] scsi1 : ata_piix [ 0.794784] ata1: PATA max UDMA/100 cmd 0x1f0 ctl 0x3f6 bmdma 0x1810 irq 14 [ 0.794789] ata2: PATA max UDMA/100 cmd 0x170 ctl 0x376 bmdma 0x1818 irq 15 [ 0.795227] Fixed MDIO Bus: probed [ 0.795261] PPP generic driver version 2.4.2 [ 0.795315] tun: Universal TUN/TAP device driver, 1.6 [ 0.795318] tun: (C) 1999-2004 Max Krasnyansky [ 0.795429] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver [ 0.795451] ehci_hcd 0000:00:1a.7: PCI INT C -> GSI 18 (level, low) -> IRQ 18 [ 0.795472] ehci_hcd 0000:00:1a.7: setting latency timer to 64 [ 0.795477] ehci_hcd 0000:00:1a.7: EHCI Host Controller [ 0.795524] ehci_hcd 0000:00:1a.7: new USB bus registered, assigned bus number 1 [ 0.795567] ehci_hcd 0000:00:1a.7: debug port 1 [ 0.799463] ehci_hcd 0000:00:1a.7: cache line size of 64 is not supported [ 0.799485] ehci_hcd 0000:00:1a.7: irq 18, io mem 0xfc504800 [ 0.812020] ehci_hcd 0000:00:1a.7: USB 2.0 started, EHCI 1.00 [ 0.812182] hub 1-0:1.0: USB hub found [ 0.812189] hub 1-0:1.0: 4 ports detected [ 0.812291] ehci_hcd 0000:00:1d.7: PCI INT A -> GSI 23 (level, low) -> IRQ 23 [ 0.812305] ehci_hcd 0000:00:1d.7: setting latency timer to 64 [ 0.812310] ehci_hcd 0000:00:1d.7: EHCI Host Controller [ 0.812363] ehci_hcd 0000:00:1d.7: new USB bus registered, assigned bus number 2 [ 0.812398] ehci_hcd 0000:00:1d.7: debug port 1 [ 0.816279] ehci_hcd 0000:00:1d.7: cache line size of 64 is not supported [ 0.816301] ehci_hcd 0000:00:1d.7: irq 23, io mem 0xfc504c00 [ 0.832023] ehci_hcd 0000:00:1d.7: USB 2.0 started, EHCI 1.00 [ 0.832151] hub 2-0:1.0: USB hub found [ 0.832157] hub 2-0:1.0: 6 ports detected [ 0.832258] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver [ 0.832276] uhci_hcd: USB Universal Host Controller Interface driver [ 0.832305] uhci_hcd 0000:00:1a.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16 [ 0.832314] uhci_hcd 0000:00:1a.0: setting latency timer to 64 [ 0.832319] uhci_hcd 0000:00:1a.0: UHCI Host Controller [ 0.832366] uhci_hcd 0000:00:1a.0: new USB bus registered, assigned bus number 3 [ 0.832412] uhci_hcd 0000:00:1a.0: irq 16, io base 0x00001820 [ 0.832569] hub 3-0:1.0: USB hub found [ 0.832575] hub 3-0:1.0: 2 ports detected [ 0.832668] uhci_hcd 0000:00:1a.1: PCI INT B -> GSI 21 (level, low) -> IRQ 21 [ 0.832679] uhci_hcd 0000:00:1a.1: setting latency timer to 64 [ 0.832684] uhci_hcd 0000:00:1a.1: UHCI Host Controller [ 0.832731] uhci_hcd 0000:00:1a.1: new USB bus registered, assigned bus number 4 [ 0.832775] uhci_hcd 0000:00:1a.1: irq 21, io base 0x00001840 [ 0.832936] hub 4-0:1.0: USB hub found [ 0.832941] hub 4-0:1.0: 2 ports detected [ 0.833028] uhci_hcd 0000:00:1d.0: PCI INT A -> GSI 23 (level, low) -> IRQ 23 [ 0.833037] uhci_hcd 0000:00:1d.0: setting latency timer to 64 [ 0.833042] uhci_hcd 0000:00:1d.0: UHCI Host Controller [ 0.833099] uhci_hcd 0000:00:1d.0: new USB bus registered, assigned bus number 5 [ 0.833134] uhci_hcd 0000:00:1d.0: irq 23, io base 0x00001860 [ 0.833291] hub 5-0:1.0: USB hub found [ 0.833296] hub 5-0:1.0: 2 ports detected [ 0.833384] uhci_hcd 0000:00:1d.1: PCI INT B -> GSI 19 (level, low) -> IRQ 19 [ 0.833392] uhci_hcd 0000:00:1d.1: setting latency timer to 64 [ 0.833397] uhci_hcd 0000:00:1d.1: UHCI Host Controller [ 0.833448] uhci_hcd 0000:00:1d.1: new USB bus registered, assigned bus number 6 [ 0.833493] uhci_hcd 0000:00:1d.1: irq 19, io base 0x00001880 [ 0.833649] hub 6-0:1.0: USB hub found [ 0.833655] hub 6-0:1.0: 2 ports detected [ 0.833737] uhci_hcd 0000:00:1d.2: PCI INT C -> GSI 18 (level, low) -> IRQ 18 [ 0.833746] uhci_hcd 0000:00:1d.2: setting latency timer to 64 [ 0.833750] uhci_hcd 0000:00:1d.2: UHCI Host Controller [ 0.833797] uhci_hcd 0000:00:1d.2: new USB bus registered, assigned bus number 7 [ 0.833832] uhci_hcd 0000:00:1d.2: irq 18, io base 0x000018a0 [ 0.833984] hub 7-0:1.0: USB hub found [ 0.833990] hub 7-0:1.0: 2 ports detected [ 0.834133] i8042: PNP: PS/2 Controller [PNP0303:PS2K,PNP0f13:PS2M] at 0x60,0x64 irq 1,12 [ 0.858635] serio: i8042 KBD port at 0x60,0x64 irq 1 [ 0.858644] serio: i8042 AUX port at 0x60,0x64 irq 12 [ 0.858792] mousedev: PS/2 mouse device common for all mice [ 0.860515] rtc_cmos 00:07: RTC can wake from S4 [ 0.860650] rtc_cmos 00:07: rtc core: registered rtc_cmos as rtc0 [ 0.860686] rtc0: alarms up to one month, y3k, 242 bytes nvram, hpet irqs [ 0.860821] device-mapper: uevent: version 1.0.3 [ 0.860928] device-mapper: ioctl: 4.20.0-ioctl (2011-02-02) initialised: dm-devel@redhat.com [ 0.861015] cpuidle: using governor ladder [ 0.861137] cpuidle: using governor menu [ 0.861140] EFI Variables Facility v0.08 2004-May-17 [ 0.861497] TCP cubic registered [ 0.861666] NET: Registered protocol family 10 [ 0.862339] NET: Registered protocol family 17 [ 0.862362] Registering the dns_resolver key type [ 0.862505] PM: Hibernation image not present or could not be loaded. [ 0.862521] registered taskstats version 1 [ 0.881709] Magic number: 15:169:571 [ 0.881852] rtc_cmos 00:07: setting system clock to 2011-10-05 07:34:43 UTC (1317800083) [ 0.882695] BIOS EDD facility v0.16 2004-Jun-25, 0 devices found [ 0.882699] EDD information not available. [ 0.885384] input: AT Translated Set 2 keyboard as /devices/platform/i8042/serio0/input/input3 [ 0.964510] ata1.00: ATAPI: MATSHITADVD-RAM UJ-850 z, RB32, max UDMA/33 [ 0.980374] ata1.00: configured for UDMA/33 [ 0.983110] scsi 0:0:0:0: CD-ROM MATSHITA DVD-RAM UJ-850 z RB32 PQ: 0 ANSI: 5 [ 0.985684] sr0: scsi3-mmc drive: 24x/24x writer dvd-ram cd/rw xa/form2 cdda tray [ 0.985690] cdrom: Uniform CD-ROM driver Revision: 3.20 [ 0.985886] sr 0:0:0:0: Attached scsi CD-ROM sr0 [ 0.985957] sr 0:0:0:0: Attached scsi generic sg0 type 5 [ 0.988684] Freeing unused kernel memory: 984k freed [ 0.989019] Write protecting the kernel read-only data: 10240k [ 0.989354] Freeing unused kernel memory: 20k freed [ 0.996526] Freeing unused kernel memory: 1400k freed [ 1.023090] udevd[92]: starting version 173 [ 1.095474] [drm] Initialized drm 1.1.0 20060810 [ 1.111223] tg3.c:v3.119 (May 18, 2011) [ 1.111255] tg3 0000:06:00.0: PCI INT A -> GSI 19 (level, low) -> IRQ 19 [ 1.111275] tg3 0000:06:00.0: setting latency timer to 64 [ 1.123354] wmi: Mapper loaded [ 1.135292] i915 0000:00:02.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16 [ 1.135301] i915 0000:00:02.0: setting latency timer to 64 [ 1.229432] i915 0000:00:02.0: irq 44 for MSI/MSI-X [ 1.229442] [drm] Supports vblank timestamp caching Rev 1 (10.10.2010). [ 1.229444] [drm] Driver supports precise vblank timestamp query. [ 1.229504] vgaarb: device changed decodes: PCI:0000:00:02.0,olddecodes=io+mem,decodes=io+mem:owns=io+mem [ 1.231431] sdhci: Secure Digital Host Controller Interface driver [ 1.231435] sdhci: Copyright(c) Pierre Ossman [ 1.231761] sdhci-pci 0000:08:06.1: SDHCI controller found [1180:0822] (rev 19) [ 1.231780] sdhci-pci 0000:08:06.1: PCI INT B -> GSI 23 (level, low) -> IRQ 23 [ 1.232804] sdhci-pci 0000:08:06.1: Will use DMA mode even though HW doesn't fully claim to support it. [ 1.251222] mmc0: no vmmc regulator found [ 1.252265] Registered led device: mmc0:: [ 1.258216] mmc0: SDHCI controller on PCI [0000:08:06.1] using DMA [ 1.278826] tg3 0000:06:00.0: eth0: Tigon3 [partno(BCM95906) rev c002] (PCI Express) MAC address 00:1b:38:0c:7f:47 [ 1.278833] tg3 0000:06:00.0: eth0: attached PHY is 5906 (10/100Base-TX Ethernet) (WireSpeed[0], EEE[0]) [ 1.278838] tg3 0000:06:00.0: eth0: RXcsums[1] LinkChgREG[0] MIirq[0] ASF[0] TSOcap[1] [ 1.278842] tg3 0000:06:00.0: eth0: dma_rwctrl[76180000] dma_mask[64-bit] [ 1.288114] firewire_ohci 0000:08:06.0: PCI INT A -> GSI 22 (level, low) -> IRQ 22 [ 1.288352] fixme: max PWM is zero. [ 1.321105] [drm] initialized overlay support [ 1.363095] firewire_ohci: Added fw-ohci device 0000:08:06.0, OHCI v1.10, 4 IR + 4 IT contexts, quirks 0x1 [ 1.429305] usb 1-4: new high speed USB device number 4 using ehci_hcd [ 1.510188] fbcon: inteldrmfb (fb0) is primary device [ 1.510267] Console: switching to colour frame buffer device 160x50 [ 1.510301] fb0: inteldrmfb frame buffer device [ 1.510304] drm: registered panic notifier [ 1.596139] acpi device:08: registered as cooling_device2 [ 1.596350] input: Video Bus as /devices/LNXSYSTM:00/device:00/PNP0A08:00/LNXVIDEO:01/input/input4 [ 1.596428] ACPI: Video Device [GFX0] (multi-head: yes rom: no post: no) [ 1.596505] [drm] Initialized i915 1.6.0 20080730 for 0000:00:02.0 on minor 0 [ 1.596723] ahci 0000:00:1f.2: version 3.0 [ 1.596748] ahci 0000:00:1f.2: PCI INT B -> GSI 19 (level, low) -> IRQ 19 [ 1.596832] ahci 0000:00:1f.2: irq 45 for MSI/MSI-X [ 1.596928] ahci 0000:00:1f.2: AHCI 0001.0100 32 slots 3 ports 3 Gbps 0x7 impl SATA mode [ 1.596934] ahci 0000:00:1f.2: flags: 64bit ncq sntf pm led clo pio slum part ccc [ 1.596941] ahci 0000:00:1f.2: setting latency timer to 64 [ 1.600697] scsi2 : ahci [ 1.601002] scsi3 : ahci [ 1.601154] scsi4 : ahci [ 1.601328] ata3: SATA max UDMA/133 abar m2048@0xfc504000 port 0xfc504100 irq 45 [ 1.601335] ata4: SATA max UDMA/133 abar m2048@0xfc504000 port 0xfc504180 irq 45 [ 1.601340] ata5: SATA max UDMA/133 abar m2048@0xfc504000 port 0xfc504200 irq 45 [ 1.860262] firewire_core: created device fw0: GUID 00023f7bac4040de, S400 [ 1.920122] ata3: SATA link up 3.0 Gbps (SStatus 123 SControl 300) [ 1.921792] ata3.00: unexpected _GTF length (8) [ 1.922070] ata3.00: ATA-8: WDC WD2500BEKT-75PVMT0, 01.01A01, max UDMA/133 [ 1.922077] ata3.00: 488397168 sectors, multi 16: LBA48 NCQ (depth 31/32), AA [ 1.923756] ata3.00: unexpected _GTF length (8) [ 1.924053] ata4: SATA link down (SStatus 0 SControl 300) [ 1.924081] ata3.00: configured for UDMA/133 [ 1.924106] ata5: SATA link down (SStatus 0 SControl 300) [ 1.924318] scsi 2:0:0:0: Direct-Access ATA WDC WD2500BEKT-7 01.0 PQ: 0 ANSI: 5 [ 1.924525] sd 2:0:0:0: Attached scsi generic sg1 type 0 [ 1.924642] sd 2:0:0:0: [sda] 488397168 512-byte logical blocks: (250 GB/232 GiB) [ 1.924823] sd 2:0:0:0: [sda] Write Protect is off [ 1.924828] sd 2:0:0:0: [sda] Mode Sense: 00 3a 00 00 [ 1.924898] sd 2:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA [ 2.020840] sda: sda1 sda2 sda3 sda4 < sda5 > [ 2.021461] sd 2:0:0:0: [sda] Attached SCSI disk [ 2.032059] usb 3-1: new full speed USB device number 2 using uhci_hcd [ 2.464056] usb 4-1: new full speed USB device number 2 using uhci_hcd [ 2.872042] usb 6-1: new low speed USB device number 2 using uhci_hcd [ 3.093235] input: MLK Trust Mouse as /devices/pci0000:00/0000:00:1d.1/usb6/6-1/6-1:1.0/input/input5 [ 3.093727] generic-usb 0003:04FC:05DA.0001: input,hiddev0,hidraw0: USB HID v1.10 Mouse [MLK Trust Mouse] on usb-0000:00:1d.1-1/input0 [ 3.093905] usbcore: registered new interface driver usbhid [ 3.093909] usbhid: USB HID core driver [ 3.288960] EXT4-fs (sda2): mounted filesystem with ordered data mode. Opts: (null) [ 3.308073] usb 6-2: new full speed USB device number 3 using uhci_hcd [ 3.720052] usb 7-1: new low speed USB device number 2 using uhci_hcd [ 3.918393] input: LITEON Technology USB Multimedia Keyboard as /devices/pci0000:00/0000:00:1d.2/usb7/7-1/7-1:1.0/input/input6 [ 3.918495] generic-usb 0003:046D:C312.0002: input,hidraw1: USB HID v1.10 Keyboard [LITEON Technology USB Multimedia Keyboard] on usb-0000:00:1d.2-1/input0 [ 5.565904] Adding 15999996k swap on /dev/sda3. Priority:-1 extents:1 across:15999996k [ 5.691364] udevd[373]: starting version 173 [ 6.303871] lp: driver loaded but no devices found [ 7.040655] cfg80211: Calling CRDA to update world regulatory domain [ 7.159284] r852 0000:08:06.3: PCI INT B -> GSI 23 (level, low) -> IRQ 23 [ 7.159297] r852 0000:08:06.3: setting latency timer to 64 [ 7.159394] r852: Non dma capable device detected, dma disabled [ 7.159411] r852: driver loaded successfully [ 7.169632] iwl3945: Intel(R) PRO/Wireless 3945ABG/BG Network Connection driver for Linux, in-tree:s [ 7.169637] iwl3945: Copyright(c) 2003-2011 Intel Corporation [ 7.169734] iwl3945 0000:04:00.0: PCI INT A -> GSI 17 (level, low) -> IRQ 17 [ 7.169751] iwl3945 0000:04:00.0: setting latency timer to 64 [ 7.225063] iwl3945 0000:04:00.0: Tunable channels: 13 802.11bg, 23 802.11a channels [ 7.225067] iwl3945 0000:04:00.0: Detected Intel Wireless WiFi Link 3945ABG [ 7.225225] iwl3945 0000:04:00.0: irq 46 for MSI/MSI-X [ 7.225470] Registered led device: phy0-led [ 7.225511] cfg80211: Ignoring regulatory request Set by core since the driver uses its own custom regulatory domain [ 7.521071] ieee80211 phy0: Selected rate control algorithm 'iwl-3945-rs' [ 7.728682] udevd[389]: renamed network interface eth0 to eth1 [ 7.785421] udevd[392]: renamed network interface wlan0 to wlan1 [ 7.839555] device-mapper: multipath: version 1.3.0 loaded [ 7.920206] Synaptics Touchpad, model: 1, fw: 6.3, id: 0x25c0b1, caps: 0xa04713/0x200000/0x0 [ 8.001393] input: SynPS/2 Synaptics TouchPad as /devices/platform/i8042/serio1/input/input7 [ 8.103705] Linux video capture interface: v2.00 [ 8.142601] uvcvideo: Found UVC 1.00 device USB 2.0 Camera (04f2:b013) [ 8.145395] input: USB 2.0 Camera as /devices/pci0000:00/0000:00:1a.7/usb1/1-4/1-4:1.0/input/input8 [ 8.145503] usbcore: registered new interface driver uvcvideo [ 8.145506] USB Video Class driver (v1.1.0) [ 8.268868] gspca: v2.13.0 registered [ 8.426860] Bluetooth: Core ver 2.16 [ 8.426898] NET: Registered protocol family 31 [ 8.426901] Bluetooth: HCI device and connection manager initialized [ 8.426905] Bluetooth: HCI socket layer initialized [ 8.426908] Bluetooth: L2CAP socket layer initialized [ 8.426983] Bluetooth: SCO socket layer initialized [ 8.445120] Bluetooth: Generic Bluetooth USB driver ver 0.6 [ 8.445873] usbcore: registered new interface driver btusb [ 8.596127] cfg80211: Ignoring regulatory request Set by core since the driver uses its own custom regulatory domain [ 8.596132] cfg80211: World regulatory domain updated: [ 8.596135] cfg80211: (start_freq - end_freq @ bandwidth), (max_antenna_gain, max_eirp) [ 8.596139] cfg80211: (2402000 KHz - 2472000 KHz @ 40000 KHz), (300 mBi, 2000 mBm) [ 8.596144] cfg80211: (2457000 KHz - 2482000 KHz @ 20000 KHz), (300 mBi, 2000 mBm) [ 8.596147] cfg80211: (2474000 KHz - 2494000 KHz @ 20000 KHz), (300 mBi, 2000 mBm) [ 8.596151] cfg80211: (5170000 KHz - 5250000 KHz @ 40000 KHz), (300 mBi, 2000 mBm) [ 8.596155] cfg80211: (5735000 KHz - 5835000 KHz @ 40000 KHz), (300 mBi, 2000 mBm) [ 8.713241] HDA Intel 0000:00:1b.0: PCI INT A -> GSI 22 (level, low) -> IRQ 22 [ 8.713332] HDA Intel 0000:00:1b.0: irq 47 for MSI/MSI-X [ 8.713375] HDA Intel 0000:00:1b.0: setting latency timer to 64 [ 9.214524] type=1400 audit(1317800091.827:2): apparmor="STATUS" operation="profile_load" name="/sbin/dhclient" pid=762 comm="apparmor_parser" [ 9.214539] type=1400 audit(1317800091.827:3): apparmor="STATUS" operation="profile_replace" name="/sbin/dhclient" pid=760 comm="apparmor_parser" [ 9.214899] type=1400 audit(1317800091.827:4): apparmor="STATUS" operation="profile_load" name="/usr/lib/NetworkManager/nm-dhcp-client.action" pid=762 comm="apparmor_parser" [ 9.214917] type=1400 audit(1317800091.827:5): apparmor="STATUS" operation="profile_replace" name="/usr/lib/NetworkManager/nm-dhcp-client.action" pid=760 comm="apparmor_parser" [ 9.215139] type=1400 audit(1317800091.827:6): apparmor="STATUS" operation="profile_load" name="/usr/lib/connman/scripts/dhclient-script" pid=762 comm="apparmor_parser" [ 9.215162] type=1400 audit(1317800091.827:7): apparmor="STATUS" operation="profile_replace" name="/usr/lib/connman/scripts/dhclient-script" pid=760 comm="apparmor_parser" [ 9.215989] type=1400 audit(1317800091.827:8): apparmor="STATUS" operation="profile_replace" name="/sbin/dhclient" pid=761 comm="apparmor_parser" [ 9.216386] type=1400 audit(1317800091.831:9): apparmor="STATUS" operation="profile_replace" name="/usr/lib/NetworkManager/nm-dhcp-client.action" pid=761 comm="apparmor_parser" [ 9.216637] type=1400 audit(1317800091.831:10): apparmor="STATUS" operation="profile_replace" name="/usr/lib/connman/scripts/dhclient-script" pid=761 comm="apparmor_parser" [ 9.565602] input: zc3xx as /devices/pci0000:00/0000:00:1a.0/usb3/3-1/input/input9 [ 9.565840] usbcore: registered new interface driver zc3xx [ 9.567768] usbcore: registered new interface driver snd-usb-audio [ 10.957262] EXT4-fs (sda2): re-mounted. Opts: errors=remount-ro [ 11.498897] EXT4-fs (sda1): mounted filesystem with ordered data mode. Opts: (null) [ 11.610016] EXT4-fs (sda5): mounted filesystem with ordered data mode. Opts: (null) [ 13.338782] type=1400 audit(1317800095.951:11): apparmor="STATUS" operation="profile_load" name="/usr/lib/lightdm/lightdm-guest-session-wrapper" pid=1170 comm="apparmor_parser" [ 14.107842] ppdev: user-space parallel port driver [ 16.201248] microcode: CPU0 sig=0x6fd, pf=0x80, revision=0xa1 [ 16.241864] microcode: CPU1 sig=0x6fd, pf=0x80, revision=0xa1 [ 16.244584] microcode: Microcode Update Driver: v2.00 , Peter Oruba [ 16.257389] iwl3945 0000:04:00.0: loaded firmware version 15.32.2.9 [ 16.319712] microcode: CPU0 updated to revision 0xa4, date = 2010-10-02 [ 16.320392] microcode: CPU1 updated to revision 0xa4, date = 2010-10-02 [ 16.327663] ADDRCONF(NETDEV_UP): wlan1: link is not ready [ 16.411245] tg3 0000:06:00.0: irq 48 for MSI/MSI-X [ 16.441602] ADDRCONF(NETDEV_UP): eth1: link is not ready [ 17.163336] init: failsafe main process (1112) killed by TERM signal [ 17.369512] init: gdm main process (1340) killed by TERM signal [ 18.121686] tg3 0000:06:00.0: eth1: Link is up at 100 Mbps, full duplex [ 18.121691] tg3 0000:06:00.0: eth1: Flow control is on for TX and on for RX [ 18.122295] ADDRCONF(NETDEV_CHANGE): eth1: link becomes ready [ 21.210518] RPC: Registered named UNIX socket transport module. [ 21.210523] RPC: Registered udp transport module. [ 21.210525] RPC: Registered tcp transport module. [ 21.210528] RPC: Registered tcp NFSv4.1 backchannel transport module. [ 21.445931] Installing knfsd (copyright (C) 1996 okir@monad.swb.de). [ 21.627527] NFSD: Using /var/lib/nfs/v4recovery as the NFSv4 state recovery directory [ 21.636586] NFSD: starting 90-second grace period [ 24.852307] vboxdrv: Found 2 processor cores. [ 24.852593] vboxdrv: fAsync=0 offMin=0x1c2 offMax=0xae6 [ 24.852666] vboxdrv: TSC mode is 'synchronous', kernel timer mode is 'normal'. [ 24.852669] vboxdrv: Successfully loaded version 4.1.2_Ubuntu (interface 0x00190000). [ 25.101599] vboxpci: IOMMU not found (not registered) [ 27.046401] Bluetooth: BNEP (Ethernet Emulation) ver 1.3 [ 27.046405] Bluetooth: BNEP filters: protocol multicast [ 27.081903] Bluetooth: RFCOMM TTY layer initialized [ 27.081919] Bluetooth: RFCOMM socket layer initialized [ 27.081921] Bluetooth: RFCOMM ver 1.11 [ 28.752057] eth1: no IPv6 routers present [ 33.139443] init: plymouth-stop pre-start process (2005) terminated with status 1 [ 33.628053] EXT4-fs (sda2): re-mounted. Opts: errors=remount-ro,commit=0 [ 34.056830] EXT4-fs (sda1): re-mounted. Opts: commit=0 [ 34.217110] EXT4-fs (sda5): re-mounted. Opts: commit=0 [ 45.192742] wlan1: authenticate with 00:1a:c1:38:47:d4 (try 1) [ 45.196319] wlan1: authenticated [ 45.199717] wlan1: associate with 00:1a:c1:38:47:d4 (try 1) [ 45.202749] wlan1: RX AssocResp from 00:1a:c1:38:47:d4 (capab=0x431 status=0 aid=2) [ 45.202758] wlan1: associated [ 45.206342] ADDRCONF(NETDEV_CHANGE): wlan1: link becomes ready [ 45.206456] cfg80211: Calling CRDA for country: GB [ 45.213483] cfg80211: Updating information on frequency 2412 MHz for a 20 MHz width channel with regulatory rule: [ 45.213493] cfg80211: 2402000 KHz - 2482000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 45.213498] cfg80211: Updating information on frequency 2417 MHz for a 20 MHz width channel with regulatory rule: [ 45.213505] cfg80211: 2402000 KHz - 2482000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 45.213509] cfg80211: Updating information on frequency 2422 MHz for a 20 MHz width channel with regulatory rule: [ 45.213516] cfg80211: 2402000 KHz - 2482000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 45.213520] cfg80211: Updating information on frequency 2427 MHz for a 20 MHz width channel with regulatory rule: [ 45.213526] cfg80211: 2402000 KHz - 2482000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 45.213531] cfg80211: Updating information on frequency 2432 MHz for a 20 MHz width channel with regulatory rule: [ 45.213537] cfg80211: 2402000 KHz - 2482000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 45.213542] cfg80211: Updating information on frequency 2437 MHz for a 20 MHz width channel with regulatory rule: [ 45.213547] cfg80211: 2402000 KHz - 2482000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 45.213552] cfg80211: Updating information on frequency 2442 MHz for a 20 MHz width channel with regulatory rule: [ 45.213558] cfg80211: 2402000 KHz - 2482000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 45.213563] cfg80211: Updating information on frequency 2447 MHz for a 20 MHz width channel with regulatory rule: [ 45.213569] cfg80211: 2402000 KHz - 2482000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 45.213573] cfg80211: Updating information on frequency 2452 MHz for a 20 MHz width channel with regulatory rule: [ 45.213579] cfg80211: 2402000 KHz - 2482000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 45.213584] cfg80211: Updating information on frequency 2457 MHz for a 20 MHz width channel with regulatory rule: [ 45.213590] cfg80211: 2402000 KHz - 2482000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 45.213594] cfg80211: Updating information on frequency 2462 MHz for a 20 MHz width channel with regulatory rule: [ 45.213600] cfg80211: 2402000 KHz - 2482000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 45.213605] cfg80211: Updating information on frequency 2467 MHz for a 20 MHz width channel with regulatory rule: [ 45.213611] cfg80211: 2402000 KHz - 2482000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 45.213615] cfg80211: Updating information on frequency 2472 MHz for a 20 MHz width channel with regulatory rule: [ 45.213621] cfg80211: 2402000 KHz - 2482000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 45.213626] cfg80211: Disabling freq 5170 MHz [ 45.213630] cfg80211: Updating information on frequency 5180 MHz for a 20 MHz width channel with regulatory rule: [ 45.213636] cfg80211: 5170000 KHz - 5250000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 45.213640] cfg80211: Updating information on frequency 5190 MHz for a 20 MHz width channel with regulatory rule: [ 45.213646] cfg80211: 5170000 KHz - 5250000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 45.213651] cfg80211: Updating information on frequency 5200 MHz for a 20 MHz width channel with regulatory rule: [ 45.213657] cfg80211: 5170000 KHz - 5250000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 45.213662] cfg80211: Updating information on frequency 5210 MHz for a 20 MHz width channel with regulatory rule: [ 45.213667] cfg80211: 5170000 KHz - 5250000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 45.213672] cfg80211: Updating information on frequency 5220 MHz for a 20 MHz width channel with regulatory rule: [ 45.213678] cfg80211: 5170000 KHz - 5250000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 45.213683] cfg80211: Updating information on frequency 5230 MHz for a 20 MHz width channel with regulatory rule: [ 45.213688] cfg80211: 5170000 KHz - 5250000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 45.213693] cfg80211: Updating information on frequency 5240 MHz for a 20 MHz width channel with regulatory rule: [ 45.213699] cfg80211: 5170000 KHz - 5250000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 45.213704] cfg80211: Updating information on frequency 5260 MHz for a 20 MHz width channel with regulatory rule: [ 45.213710] cfg80211: 5250000 KHz - 5330000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 45.213714] cfg80211: Updating information on frequency 5280 MHz for a 20 MHz width channel with regulatory rule: [ 45.213720] cfg80211: 5250000 KHz - 5330000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 45.213725] cfg80211: Updating information on frequency 5300 MHz for a 20 MHz width channel with regulatory rule: [ 45.213731] cfg80211: 5250000 KHz - 5330000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 45.213736] cfg80211: Updating information on frequency 5320 MHz for a 20 MHz width channel with regulatory rule: [ 45.213742] cfg80211: 5250000 KHz - 5330000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 45.213746] cfg80211: Updating information on frequency 5500 MHz for a 20 MHz width channel with regulatory rule: [ 45.213752] cfg80211: 5490000 KHz - 5710000 KHz @ KHz), (N/A mBi, 2700 mBm) [ 45.213757] cfg80211: Updating information on frequency 5520 MHz for a 20 MHz width channel with regulatory rule: [ 45.213763] cfg80211: 5490000 KHz - 5710000 KHz @ KHz), (N/A mBi, 2700 mBm) [ 45.213768] cfg80211: Updating information on frequency 5540 MHz for a 20 MHz width channel with regulatory rule: [ 45.213774] cfg80211: 5490000 KHz - 5710000 KHz @ KHz), (N/A mBi, 2700 mBm) [ 45.213779] cfg80211: Updating information on frequency 5560 MHz for a 20 MHz width channel with regulatory rule: [ 45.213785] cfg80211: 5490000 KHz - 5710000 KHz @ KHz), (N/A mBi, 2700 mBm) [ 45.213789] cfg80211: Updating information on frequency 5580 MHz for a 20 MHz width channel with regulatory rule: [ 45.213795] cfg80211: 5490000 KHz - 5710000 KHz @ KHz), (N/A mBi, 2700 mBm) [ 45.213800] cfg80211: Updating information on frequency 5600 MHz for a 20 MHz width channel with regulatory rule: [ 45.213806] cfg80211: 5490000 KHz - 5710000 KHz @ KHz), (N/A mBi, 2700 mBm) [ 45.213810] cfg80211: Updating information on frequency 5620 MHz for a 20 MHz width channel with regulatory rule: [ 45.213816] cfg80211: 5490000 KHz - 5710000 KHz @ KHz), (N/A mBi, 2700 mBm) [ 45.213821] cfg80211: Updating information on frequency 5640 MHz for a 20 MHz width channel with regulatory rule: [ 45.213827] cfg80211: 5490000 KHz - 5710000 KHz @ KHz), (N/A mBi, 2700 mBm) [ 45.213831] cfg80211: Updating information on frequency 5660 MHz for a 20 MHz width channel with regulatory rule: [ 45.213837] cfg80211: 5490000 KHz - 5710000 KHz @ KHz), (N/A mBi, 2700 mBm) [ 45.213842] cfg80211: Updating information on frequency 5680 MHz for a 20 MHz width channel with regulatory rule: [ 45.213848] cfg80211: 5490000 KHz - 5710000 KHz @ KHz), (N/A mBi, 2700 mBm) [ 45.213852] cfg80211: Updating information on frequency 5700 MHz for a 20 MHz width channel with regulatory rule: [ 45.213858] cfg80211: 5490000 KHz - 5710000 KHz @ KHz), (N/A mBi, 2700 mBm) [ 45.213864] cfg80211: Regulatory domain changed to country: GB [ 45.213868] cfg80211: (start_freq - end_freq @ bandwidth), (max_antenna_gain, max_eirp) [ 45.213873] cfg80211: (2402000 KHz - 2482000 KHz @ 40000 KHz), (N/A, 2000 mBm) [ 45.213879] cfg80211: (5170000 KHz - 5250000 KHz @ 40000 KHz), (N/A, 2000 mBm) [ 45.213884] cfg80211: (5250000 KHz - 5330000 KHz @ 40000 KHz), (N/A, 2000 mBm) [ 45.213889] cfg80211: (5490000 KHz - 5710000 KHz @ 40000 KHz), (N/A, 2700 mBm) [ 52.640123] eth1: no IPv6 routers present [ 55.208282] wlan1: disassociating from 00:1a:c1:38:47:d4 by local choice (reason=3) [ 55.214021] cfg80211: All devices are disconnected, going to restore regulatory settings [ 55.214032] cfg80211: Restoring regulatory settings [ 55.214052] cfg80211: Calling CRDA to update world regulatory domain [ 55.214778] wlan1: deauthenticating from 00:1a:c1:38:47:d4 by local choice (reason=3) [ 55.221291] cfg80211: Ignoring regulatory request Set by core since the driver uses its own custom regulatory domain [ 55.221299] cfg80211: World regulatory domain updated: [ 55.221303] cfg80211: (start_freq - end_freq @ bandwidth), (max_antenna_gain, max_eirp) [ 55.221309] cfg80211: (2402000 KHz - 2472000 KHz @ 40000 KHz), (300 mBi, 2000 mBm) [ 55.221315] cfg80211: (2457000 KHz - 2482000 KHz @ 20000 KHz), (300 mBi, 2000 mBm) [ 55.221321] cfg80211: (2474000 KHz - 2494000 KHz @ 20000 KHz), (300 mBi, 2000 mBm) [ 55.221327] cfg80211: (5170000 KHz - 5250000 KHz @ 40000 KHz), (300 mBi, 2000 mBm) [ 55.221333] cfg80211: (5735000 KHz - 5835000 KHz @ 40000 KHz), (300 mBi, 2000 mBm) [ 55.392119] wlan1: no IPv6 routers present [ 58.763822] wlan1: authenticate with 00:1a:c1:38:47:d4 (try 1) [ 58.765582] wlan1: authenticated [ 58.766582] wlan1: associate with 00:1a:c1:38:47:d4 (try 1) [ 58.769972] wlan1: RX ReassocResp from 00:1a:c1:38:47:d4 (capab=0x431 status=0 aid=2) [ 58.769980] wlan1: associated [ 58.773587] cfg80211: Calling CRDA for country: GB [ 58.778304] cfg80211: Updating information on frequency 2412 MHz for a 20 MHz width channel with regulatory rule: [ 58.778310] cfg80211: 2402000 KHz - 2482000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 58.778314] cfg80211: Updating information on frequency 2417 MHz for a 20 MHz width channel with regulatory rule: [ 58.778318] cfg80211: 2402000 KHz - 2482000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 58.778321] cfg80211: Updating information on frequency 2422 MHz for a 20 MHz width channel with regulatory rule: [ 58.778325] cfg80211: 2402000 KHz - 2482000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 58.778328] cfg80211: Updating information on frequency 2427 MHz for a 20 MHz width channel with regulatory rule: [ 58.778332] cfg80211: 2402000 KHz - 2482000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 58.778335] cfg80211: Updating information on frequency 2432 MHz for a 20 MHz width channel with regulatory rule: [ 58.778340] cfg80211: 2402000 KHz - 2482000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 58.778343] cfg80211: Updating information on frequency 2437 MHz for a 20 MHz width channel with regulatory rule: [ 58.778347] cfg80211: 2402000 KHz - 2482000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 58.778350] cfg80211: Updating information on frequency 2442 MHz for a 20 MHz width channel with regulatory rule: [ 58.778354] cfg80211: 2402000 KHz - 2482000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 58.778357] cfg80211: Updating information on frequency 2447 MHz for a 20 MHz width channel with regulatory rule: [ 58.778361] cfg80211: 2402000 KHz - 2482000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 58.778364] cfg80211: Updating information on frequency 2452 MHz for a 20 MHz width channel with regulatory rule: [ 58.778368] cfg80211: 2402000 KHz - 2482000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 58.778371] cfg80211: Updating information on frequency 2457 MHz for a 20 MHz width channel with regulatory rule: [ 58.778375] cfg80211: 2402000 KHz - 2482000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 58.778378] cfg80211: Updating information on frequency 2462 MHz for a 20 MHz width channel with regulatory rule: [ 58.778382] cfg80211: 2402000 KHz - 2482000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 58.778385] cfg80211: Updating information on frequency 2467 MHz for a 20 MHz width channel with regulatory rule: [ 58.778389] cfg80211: 2402000 KHz - 2482000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 58.778392] cfg80211: Updating information on frequency 2472 MHz for a 20 MHz width channel with regulatory rule: [ 58.778396] cfg80211: 2402000 KHz - 2482000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 58.778399] cfg80211: Disabling freq 5170 MHz [ 58.778402] cfg80211: Updating information on frequency 5180 MHz for a 20 MHz width channel with regulatory rule: [ 58.778406] cfg80211: 5170000 KHz - 5250000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 58.778409] cfg80211: Updating information on frequency 5190 MHz for a 20 MHz width channel with regulatory rule: [ 58.778413] cfg80211: 5170000 KHz - 5250000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 58.778416] cfg80211: Updating information on frequency 5200 MHz for a 20 MHz width channel with regulatory rule: [ 58.778420] cfg80211: 5170000 KHz - 5250000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 58.778423] cfg80211: Updating information on frequency 5210 MHz for a 20 MHz width channel with regulatory rule: [ 58.778427] cfg80211: 5170000 KHz - 5250000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 58.778430] cfg80211: Updating information on frequency 5220 MHz for a 20 MHz width channel with regulatory rule: [ 58.778434] cfg80211: 5170000 KHz - 5250000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 58.778437] cfg80211: Updating information on frequency 5230 MHz for a 20 MHz width channel with regulatory rule: [ 58.778441] cfg80211: 5170000 KHz - 5250000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 58.778444] cfg80211: Updating information on frequency 5240 MHz for a 20 MHz width channel with regulatory rule: [ 58.778448] cfg80211: 5170000 KHz - 5250000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 58.778452] cfg80211: Updating information on frequency 5260 MHz for a 20 MHz width channel with regulatory rule: [ 58.778456] cfg80211: 5250000 KHz - 5330000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 58.778459] cfg80211: Updating information on frequency 5280 MHz for a 20 MHz width channel with regulatory rule: [ 58.778463] cfg80211: 5250000 KHz - 5330000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 58.778466] cfg80211: Updating information on frequency 5300 MHz for a 20 MHz width channel with regulatory rule: [ 58.778470] cfg80211: 5250000 KHz - 5330000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 58.778473] cfg80211: Updating information on frequency 5320 MHz for a 20 MHz width channel with regulatory rule: [ 58.778477] cfg80211: 5250000 KHz - 5330000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 58.778480] cfg80211: Updating information on frequency 5500 MHz for a 20 MHz width channel with regulatory rule: [ 58.778484] cfg80211: 5490000 KHz - 5710000 KHz @ KHz), (N/A mBi, 2700 mBm) [ 58.778487] cfg80211: Updating information on frequency 5520 MHz for a 20 MHz width channel with regulatory rule: [ 58.778491] cfg80211: 5490000 KHz - 5710000 KHz @ KHz), (N/A mBi, 2700 mBm) [ 58.778494] cfg80211: Updating information on frequency 5540 MHz for a 20 MHz width channel with regulatory rule: [ 58.778498] cfg80211: 5490000 KHz - 5710000 KHz @ KHz), (N/A mBi, 2700 mBm) [ 58.778501] cfg80211: Updating information on frequency 5560 MHz for a 20 MHz width channel with regulatory rule: [ 58.778505] cfg80211: 5490000 KHz - 5710000 KHz @ KHz), (N/A mBi, 2700 mBm) [ 58.778508] cfg80211: Updating information on frequency 5580 MHz for a 20 MHz width channel with regulatory rule: [ 58.778512] cfg80211: 5490000 KHz - 5710000 KHz @ KHz), (N/A mBi, 2700 mBm) [ 58.778515] cfg80211: Updating information on frequency 5600 MHz for a 20 MHz width channel with regulatory rule: [ 58.778519] cfg80211: 5490000 KHz - 5710000 KHz @ KHz), (N/A mBi, 2700 mBm) [ 58.778522] cfg80211: Updating information on frequency 5620 MHz for a 20 MHz width channel with regulatory rule: [ 58.778526] cfg80211: 5490000 KHz - 5710000 KHz @ KHz), (N/A mBi, 2700 mBm) [ 58.778529] cfg80211: Updating information on frequency 5640 MHz for a 20 MHz width channel with regulatory rule: [ 58.778533] cfg80211: 5490000 KHz - 5710000 KHz @ KHz), (N/A mBi, 2700 mBm) [ 58.778536] cfg80211: Updating information on frequency 5660 MHz for a 20 MHz width channel with regulatory rule: [ 58.778540] cfg80211: 5490000 KHz - 5710000 KHz @ KHz), (N/A mBi, 2700 mBm) [ 58.778543] cfg80211: Updating information on frequency 5680 MHz for a 20 MHz width channel with regulatory rule: [ 58.778547] cfg80211: 5490000 KHz - 5710000 KHz @ KHz), (N/A mBi, 2700 mBm) [ 58.778550] cfg80211: Updating information on frequency 5700 MHz for a 20 MHz width channel with regulatory rule: [ 58.778554] cfg80211: 5490000 KHz - 5710000 KHz @ KHz), (N/A mBi, 2700 mBm) [ 58.778558] cfg80211: Regulatory domain changed to country: GB [ 58.778560] cfg80211: (start_freq - end_freq @ bandwidth), (max_antenna_gain, max_eirp) [ 58.778564] cfg80211: (2402000 KHz - 2482000 KHz @ 40000 KHz), (N/A, 2000 mBm) [ 58.778568] cfg80211: (5170000 KHz - 5250000 KHz @ 40000 KHz), (N/A, 2000 mBm) [ 58.778571] cfg80211: (5250000 KHz - 5330000 KHz @ 40000 KHz), (N/A, 2000 mBm) [ 58.778575] cfg80211: (5490000 KHz - 5710000 KHz @ 40000 KHz), (N/A, 2700 mBm) [ 70.176124] wlan1: no IPv6 routers present [ 75.152080] eth1: no IPv6 routers present [ 98.736094] eth1: no IPv6 routers present [ 648.357292] ecryptfs_mount: kern_path() failed [ 648.388155] Reading sb failed; rc = [-2] [ 670.016019] eth1: no IPv6 routers present [ 688.176048] eth1: no IPv6 routers present [ 711.096140] eth1: no IPv6 routers present fwts-test/arg-json-0001/test-0001.sh000077500000000000000000000007271231470457100170220ustar00rootroot00000000000000#!/bin/bash # TEST="Test --json-data-path option" NAME=test-0001.sh TMPLOG=$TMP/klog.log.$$ HERE=$FWTSTESTDIR/arg-json-0001 $FWTS --log-format="%line %owner " -w 80 --json-data-path=$HERE --klog=$FWTSTESTDIR/arg-json-0001/klog.txt klog - | grep "^[0-9]*[ ]*klog" | cut -c7- > $TMPLOG diff $TMPLOG $FWTSTESTDIR/arg-json-0001/klog-0001.log >> $FAILURE_LOG ret=$? if [ $ret -eq 0 ]; then echo PASSED: $TEST, $NAME else echo FAILED: $TEST, $NAME fi rm $TMPLOG exit $ret fwts-test/arg-json-0001/test-0002.sh000077500000000000000000000006731231470457100170230ustar00rootroot00000000000000#!/bin/bash # TEST="Test -j option" NAME=test-0002.sh TMPLOG=$TMP/klog.log.$$ HERE=$FWTSTESTDIR/arg-json-0001 $FWTS --log-format="%line %owner " -w 80 -j $HERE --klog=$FWTSTESTDIR/arg-json-0001/klog.txt klog - | grep "^[0-9]*[ ]*klog" | cut -c7- > $TMPLOG diff $TMPLOG $FWTSTESTDIR/arg-json-0001/klog-0002.log >> $FAILURE_LOG ret=$? if [ $ret -eq 0 ]; then echo PASSED: $TEST, $NAME else echo FAILED: $TEST, $NAME fi rm $TMPLOG exit $ret fwts-test/arg-json-0001/test-0003.sh000077500000000000000000000007251231470457100170220ustar00rootroot00000000000000#!/bin/bash # TEST="Test --json-data-path option with bad path" NAME=test-0003.sh TMPLOG=$TMP/klog.log.$$ HERE=`pwd` $FWTS --log-format="%line %owner " -w 80 --json-data-path=/xxxx/fooo --klog=$FWTSTESTDIR/arg-json-0001/klog.txt klog - | grep "^[0-9]*[ ]*klog" | cut -c7- > $TMPLOG diff $TMPLOG $FWTSTESTDIR/arg-json-0001/klog-0003.log >> $FAILURE_LOG ret=$? if [ $ret -eq 0 ]; then echo PASSED: $TEST, $NAME else echo FAILED: $TEST, $NAME fi rm $TMPLOG exit $ret fwts-test/arg-json-0001/test-0004.sh000077500000000000000000000006711231470457100170230ustar00rootroot00000000000000#!/bin/bash # TEST="Test -j option with bad path" NAME=test-0004.sh TMPLOG=$TMP/klog.log.$$ HERE=`pwd` $FWTS --log-format="%line %owner " -w 80 -j /xxxx/fooo --klog=$FWTSTESTDIR/arg-json-0001/klog.txt klog - | grep "^[0-9]*[ ]*klog" | cut -c7- > $TMPLOG diff $TMPLOG $FWTSTESTDIR/arg-json-0001/klog-0004.log >> $FAILURE_LOG ret=$? if [ $ret -eq 0 ]; then echo PASSED: $TEST, $NAME else echo FAILED: $TEST, $NAME fi rm $TMPLOG exit $ret fwts-test/arg-klog-0001/000077500000000000000000000000001231470457100151035ustar00rootroot00000000000000fwts-test/arg-klog-0001/klog-0001.log000066400000000000000000000061211231470457100171200ustar00rootroot00000000000000klog klog: Scan kernel log for errors and warnings. klog ---------------------------------------------------------- klog Test 1 of 1: Kernel log error check. klog FAILED [HIGH] KlogAcpiMultipleApicMadtFound: Test 1, HIGH klog Kernel message: [ 0.000000] ACPI: BIOS bug: multiple APIC klog /MADT found, using 0 klog klog ADVICE: The kernel has detected more than one ACPI klog Multiple APIC Description Table (MADT) (these tables have klog the "APIC" signature). There should only be one MADT and klog the kernel will by default select the first one. However, klog one can override this and select the Nth MADT using klog acpi_apic_instance=N. klog klog Kernel message: [ 0.228089] [Firmware Bug]: ACPI: BIOS klog _OSI(Linux) query ignored klog klog ADVICE: This is not exactly a failure mode but a warning klog from the kernel. The _OSI() method has implemented a match klog to the 'Linux' query in the DSDT and this is redundant klog because the ACPI driver matches onto the Windows _OSI klog strings by default. klog klog FAILED [CRITICAL] KlogPciAcpiOscRequestFailed: Test 1, klog CRITICAL Kernel message: [ 0.396181] pci0000:00: ACPI _OSC klog request failed (AE_NOT_FOUND), returned control mask: 0x1d klog klog ADVICE: The _OSC method evaluation failed, which will klog result in disabling PCIe functionality, for example, the klog Linux kernel has to disable Active State Power Management klog (ASPM) which means that PCIe power management is not klog optimally configured. klog klog FAILED [LOW] KlogAcpiDeprecatedProcfsInterface: Test 1, klog LOW Kernel message: [ 0.534105] ACPI: Deprecated procfs I klog /F for AC is loaded, please retry with klog CONFIG_ACPI_PROCFS_POWER cleared klog klog ADVICE: Using an old procfs interface for ACPI AC Adapter, klog this occurs if CONFIG_ACPI_PROCFS_POWER is enabled. This klog should be disabled for kernels > 2.6.37. klog klog FAILED [LOW] KlogAcpiDeprecatedProcfsInterface: Test 1, klog LOW Kernel message: [ 0.576306] ACPI: Deprecated procfs I klog /F for battery is loaded, please retry with klog CONFIG_ACPI_PROCFS_POWER cleared klog klog ADVICE: Using an old procfs interface for ACPI battery, klog this occurs if CONFIG_ACPI_PROCFS_POWER is enabled. This klog should be disabled for kernels > 2.6.37. klog klog Found 4 unique errors in kernel log. klog klog ========================================================== klog 0 passed, 4 failed, 0 warning, 0 aborted, 0 skipped, 0 klog info only. klog ========================================================== fwts-test/arg-klog-0001/klog.txt000066400000000000000000002225711231470457100166110ustar00rootroot00000000000000[ 0.000000] Initializing cgroup subsys cpuset [ 0.000000] Initializing cgroup subsys cpu [ 0.000000] Linux version 3.0.0-12-generic (buildd@crested) (gcc version 4.6.1 (Ubuntu/Linaro 4.6.1-9ubuntu3) ) #19-Ubuntu SMP Fri Sep 23 21:23:39 UTC 2011 (Ubuntu 3.0.0-12.19-generic 3.0.4) [ 0.000000] Command line: BOOT_IMAGE=/vmlinuz-3.0.0-12-generic root=UUID=08ed6ce0-0907-4d06-b1e1-b9c3ec647fe2 ro crashkernel=384M-2G:64M,2G-:128M quiet splash vt.handoff=7 [ 0.000000] KERNEL supported cpus: [ 0.000000] Intel GenuineIntel [ 0.000000] AMD AuthenticAMD [ 0.000000] Centaur CentaurHauls [ 0.000000] BIOS-provided physical RAM map: [ 0.000000] BIOS-e820: 0000000000000000 - 000000000009f800 (usable) [ 0.000000] BIOS-e820: 000000000009f800 - 00000000000a0000 (reserved) [ 0.000000] BIOS-e820: 00000000000d2000 - 00000000000d4000 (reserved) [ 0.000000] BIOS-e820: 00000000000dc000 - 0000000000100000 (reserved) [ 0.000000] BIOS-e820: 0000000000100000 - 00000000bf6d0000 (usable) [ 0.000000] BIOS-e820: 00000000bf6d0000 - 00000000bf6e3000 (ACPI NVS) [ 0.000000] BIOS-e820: 00000000bf6e3000 - 00000000c0000000 (reserved) [ 0.000000] BIOS-e820: 00000000e0000000 - 00000000f0000000 (reserved) [ 0.000000] BIOS-e820: 00000000fec00000 - 00000000fec10000 (reserved) [ 0.000000] BIOS-e820: 00000000fed00000 - 00000000fed00400 (reserved) [ 0.000000] BIOS-e820: 00000000fed14000 - 00000000fed1a000 (reserved) [ 0.000000] BIOS-e820: 00000000fed1c000 - 00000000fed90000 (reserved) [ 0.000000] BIOS-e820: 00000000fee00000 - 00000000fee01000 (reserved) [ 0.000000] BIOS-e820: 00000000ff000000 - 0000000100000000 (reserved) [ 0.000000] NX (Execute Disable) protection: active [ 0.000000] DMI present. [ 0.000000] DMI: LENOVO 0769BMG/IEL10, BIOS 68ET27WW 11/14/2007 [ 0.000000] e820 update range: 0000000000000000 - 0000000000010000 (usable) ==> (reserved) [ 0.000000] e820 remove range: 00000000000a0000 - 0000000000100000 (usable) [ 0.000000] No AGP bridge found [ 0.000000] last_pfn = 0xbf6d0 max_arch_pfn = 0x400000000 [ 0.000000] MTRR default type: uncachable [ 0.000000] MTRR fixed ranges enabled: [ 0.000000] 00000-9FFFF write-back [ 0.000000] A0000-BFFFF uncachable [ 0.000000] C0000-FFFFF write-protect [ 0.000000] MTRR variable ranges enabled: [ 0.000000] 0 base 000000000 mask F80000000 write-back [ 0.000000] 1 base 080000000 mask FC0000000 write-back [ 0.000000] 2 base 0BF700000 mask FFFF00000 uncachable [ 0.000000] 3 base 0BF800000 mask FFF800000 uncachable [ 0.000000] 4 disabled [ 0.000000] 5 disabled [ 0.000000] 6 disabled [ 0.000000] 7 disabled [ 0.000000] x86 PAT enabled: cpu 0, old 0x7040600070406, new 0x7010600070106 [ 0.000000] original variable MTRRs [ 0.000000] reg 0, base: 0GB, range: 2GB, type WB [ 0.000000] reg 1, base: 2GB, range: 1GB, type WB [ 0.000000] reg 2, base: 3063MB, range: 1MB, type UC [ 0.000000] reg 3, base: 3064MB, range: 8MB, type UC [ 0.000000] total RAM covered: 3063M [ 0.000000] Found optimal setting for mtrr clean up [ 0.000000] gran_size: 64K chunk_size: 16M num_reg: 4 lose cover RAM: 0G [ 0.000000] New variable MTRRs [ 0.000000] reg 0, base: 0GB, range: 2GB, type WB [ 0.000000] reg 1, base: 2GB, range: 1GB, type WB [ 0.000000] reg 2, base: 3063MB, range: 1MB, type UC [ 0.000000] reg 3, base: 3064MB, range: 8MB, type UC [ 0.000000] found SMP MP-table at [ffff8800000f72c0] f72c0 [ 0.000000] initial memory mapped : 0 - 20000000 [ 0.000000] Base memory trampoline at [ffff88000009a000] 9a000 size 20480 [ 0.000000] init_memory_mapping: 0000000000000000-00000000bf6d0000 [ 0.000000] 0000000000 - 00bf600000 page 2M [ 0.000000] 00bf600000 - 00bf6d0000 page 4k [ 0.000000] kernel direct mapping tables up to bf6d0000 @ bf6cb000-bf6d0000 [ 0.000000] RAMDISK: 359ec000 - 36cee000 [ 0.000000] Reserving 128MB of memory at 720MB for crashkernel (System RAM: 3062MB) [ 0.000000] ACPI: RSDP 00000000000f7240 00024 (v02 LENOVO) [ 0.000000] ACPI: XSDT 00000000bf6d87f0 00094 (v01 LENOVO TP-68 06040000 LTP 00000000) [ 0.000000] ACPI: FACP 00000000bf6dfbd2 000F4 (v03 TOSCPL CRESTLNE 06040000 ALAN 00000001) [ 0.000000] ACPI: DSDT 00000000bf6d9b6a 05FF4 (v02 TOSCPL CRESTLNE 06040000 INTL 20060608) [ 0.000000] ACPI: FACS 00000000bf6e2fc0 00040 [ 0.000000] ACPI: APIC 00000000bf6dfcc6 00068 (v01 INTEL CRESTLNE 06040000 LOHR 0000005A) [ 0.000000] ACPI: HPET 00000000bf6dfd2e 00038 (v01 INTEL CRESTLNE 06040000 LOHR 0000005A) [ 0.000000] ACPI: MCFG 00000000bf6dfd66 0003C (v01 INTEL CRESTLNE 06040000 LOHR 0000005A) [ 0.000000] ACPI: TCPA 00000000bf6dfda2 00032 (v01 Intel CRESTLNE 06040000 LOHR 0000005A) [ 0.000000] ACPI: TMOR 00000000bf6dfdd4 00026 (v01 PTLTD 06040000 PTL 00000003) [ 0.000000] ACPI: SLIC 00000000bf6dfdfa 00176 (v01 LENOVO TP-68 06040000 TBD 00000001) [ 0.000000] ACPI: APIC 00000000bf6dff70 00068 (v01 PTLTD ? APIC 06040000 LTP 00000000) [ 0.000000] ACPI: BOOT 00000000bf6dffd8 00028 (v01 PTLTD $SBFTBL$ 06040000 LTP 00000001) [ 0.000000] ACPI: SSDT 00000000bf6d98bd 002AD (v01 SataRe SataAhci 00001000 INTL 20050624) [ 0.000000] ACPI: SSDT 00000000bf6d981a 000A3 (v01 BrtRef DD01BRT 00001000 INTL 20050624) [ 0.000000] ACPI: SSDT 00000000bf6d8e10 0025F (v01 PmRef Cpu0Tst 00003000 INTL 20050624) [ 0.000000] ACPI: SSDT 00000000bf6d8d6a 000A6 (v01 PmRef Cpu1Tst 00003000 INTL 20050624) [ 0.000000] ACPI: SSDT 00000000bf6d8884 004E6 (v01 PmRef CpuPm 00003000 INTL 20050624) [ 0.000000] ACPI: BIOS bug: multiple APIC/MADT found, using 0 [ 0.000000] ACPI: If "acpi_apic_instance=2" works better, notify linux-acpi@vger.kernel.org [ 0.000000] ACPI: Local APIC address 0xfee00000 [ 0.000000] No NUMA configuration found [ 0.000000] Faking a node at 0000000000000000-00000000bf6d0000 [ 0.000000] Initmem setup node 0 0000000000000000-00000000bf6d0000 [ 0.000000] NODE_DATA [00000000bf6c6000 - 00000000bf6cafff] [ 0.000000] [ffffea0000000000-ffffea00029fffff] PMD -> [ffff8800bbe00000-ffff8800be7fffff] on node 0 [ 0.000000] Zone PFN ranges: [ 0.000000] DMA 0x00000010 -> 0x00001000 [ 0.000000] DMA32 0x00001000 -> 0x00100000 [ 0.000000] Normal empty [ 0.000000] Movable zone start PFN for each node [ 0.000000] early_node_map[2] active PFN ranges [ 0.000000] 0: 0x00000010 -> 0x0000009f [ 0.000000] 0: 0x00000100 -> 0x000bf6d0 [ 0.000000] On node 0 totalpages: 783967 [ 0.000000] DMA zone: 56 pages used for memmap [ 0.000000] DMA zone: 5 pages reserved [ 0.000000] DMA zone: 3922 pages, LIFO batch:0 [ 0.000000] DMA32 zone: 10664 pages used for memmap [ 0.000000] DMA32 zone: 769320 pages, LIFO batch:31 [ 0.000000] ACPI: PM-Timer IO Port: 0x1008 [ 0.000000] ACPI: Local APIC address 0xfee00000 [ 0.000000] ACPI: LAPIC (acpi_id[0x00] lapic_id[0x00] enabled) [ 0.000000] ACPI: LAPIC (acpi_id[0x01] lapic_id[0x01] enabled) [ 0.000000] ACPI: LAPIC_NMI (acpi_id[0x00] high edge lint[0x1]) [ 0.000000] ACPI: LAPIC_NMI (acpi_id[0x01] high edge lint[0x1]) [ 0.000000] ACPI: IOAPIC (id[0x01] address[0xfec00000] gsi_base[0]) [ 0.000000] IOAPIC[0]: apic_id 1, version 32, address 0xfec00000, GSI 0-23 [ 0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 0 global_irq 2 dfl dfl) [ 0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 9 global_irq 9 high level) [ 0.000000] ACPI: IRQ0 used by override. [ 0.000000] ACPI: IRQ2 used by override. [ 0.000000] ACPI: IRQ9 used by override. [ 0.000000] Using ACPI (MADT) for SMP configuration information [ 0.000000] ACPI: HPET id: 0x8086a201 base: 0xfed00000 [ 0.000000] SMP: Allowing 2 CPUs, 0 hotplug CPUs [ 0.000000] nr_irqs_gsi: 40 [ 0.000000] PM: Registered nosave memory: 000000000009f000 - 00000000000a0000 [ 0.000000] PM: Registered nosave memory: 00000000000a0000 - 00000000000d2000 [ 0.000000] PM: Registered nosave memory: 00000000000d2000 - 00000000000d4000 [ 0.000000] PM: Registered nosave memory: 00000000000d4000 - 00000000000dc000 [ 0.000000] PM: Registered nosave memory: 00000000000dc000 - 0000000000100000 [ 0.000000] Allocating PCI resources starting at c0000000 (gap: c0000000:20000000) [ 0.000000] Booting paravirtualized kernel on bare hardware [ 0.000000] setup_percpu: NR_CPUS:256 nr_cpumask_bits:256 nr_cpu_ids:2 nr_node_ids:1 [ 0.000000] PERCPU: Embedded 27 pages/cpu @ffff8800bf400000 s79616 r8192 d22784 u1048576 [ 0.000000] pcpu-alloc: s79616 r8192 d22784 u1048576 alloc=1*2097152 [ 0.000000] pcpu-alloc: [0] 0 1 [ 0.000000] Built 1 zonelists in Node order, mobility grouping on. Total pages: 773242 [ 0.000000] Policy zone: DMA32 [ 0.000000] Kernel command line: BOOT_IMAGE=/vmlinuz-3.0.0-12-generic root=UUID=08ed6ce0-0907-4d06-b1e1-b9c3ec647fe2 ro crashkernel=384M-2G:64M,2G-:128M quiet splash vt.handoff=7 [ 0.000000] PID hash table entries: 4096 (order: 3, 32768 bytes) [ 0.000000] Checking aperture... [ 0.000000] No AGP bridge found [ 0.000000] Calgary: detecting Calgary via BIOS EBDA area [ 0.000000] Calgary: Unable to locate Rio Grande table in EBDA - bailing! [ 0.000000] Memory: 2928536k/3136320k available (6104k kernel code, 452k absent, 207332k reserved, 4880k data, 984k init) [ 0.000000] SLUB: Genslabs=15, HWalign=64, Order=0-3, MinObjects=0, CPUs=2, Nodes=1 [ 0.000000] Hierarchical RCU implementation. [ 0.000000] RCU dyntick-idle grace-period acceleration is enabled. [ 0.000000] NR_IRQS:16640 nr_irqs:512 16 [ 0.000000] Extended CMOS year: 2000 [ 0.000000] vt handoff: transparent VT on vt#7 [ 0.000000] Console: colour dummy device 80x25 [ 0.000000] console [tty0] enabled [ 0.000000] allocated 25165824 bytes of page_cgroup [ 0.000000] please try 'cgroup_disable=memory' option if you don't want memory cgroups [ 0.000000] hpet clockevent registered [ 0.000000] Fast TSC calibration using PIT [ 0.000000] Detected 1496.217 MHz processor. [ 0.004006] Calibrating delay loop (skipped), value calculated using timer frequency.. 2992.43 BogoMIPS (lpj=5984868) [ 0.004013] pid_max: default: 32768 minimum: 301 [ 0.004056] Security Framework initialized [ 0.004080] AppArmor: AppArmor initialized [ 0.004083] Yama: becoming mindful. [ 0.004759] Dentry cache hash table entries: 524288 (order: 10, 4194304 bytes) [ 0.010636] Inode-cache hash table entries: 262144 (order: 9, 2097152 bytes) [ 0.012341] Mount-cache hash table entries: 256 [ 0.012557] Initializing cgroup subsys cpuacct [ 0.012565] Initializing cgroup subsys memory [ 0.012580] Initializing cgroup subsys devices [ 0.012583] Initializing cgroup subsys freezer [ 0.012586] Initializing cgroup subsys net_cls [ 0.012589] Initializing cgroup subsys blkio [ 0.012598] Initializing cgroup subsys perf_event [ 0.012643] CPU: Physical Processor ID: 0 [ 0.012645] CPU: Processor Core ID: 0 [ 0.012649] mce: CPU supports 6 MCE banks [ 0.012661] CPU0: Thermal monitoring handled by SMI [ 0.012667] using mwait in idle threads. [ 0.016288] ACPI: Core revision 20110413 [ 0.024040] ftrace: allocating 25651 entries in 101 pages [ 0.028444] ..TIMER: vector=0x30 apic1=0 pin1=2 apic2=-1 pin2=-1 [ 0.071627] CPU0: Intel(R) Core(TM)2 Duo CPU T5250 @ 1.50GHz stepping 0d [ 0.072003] Performance Events: PEBS fmt0+, Core2 events, Intel PMU driver. [ 0.072003] PEBS disabled due to CPU errata. [ 0.072003] ... version: 2 [ 0.072003] ... bit width: 40 [ 0.072003] ... generic registers: 2 [ 0.072003] ... value mask: 000000ffffffffff [ 0.072003] ... max period: 000000007fffffff [ 0.072003] ... fixed-purpose events: 3 [ 0.072003] ... event mask: 0000000700000003 [ 0.072003] Booting Node 0, Processors #1 Ok. [ 0.072003] smpboot cpu 1: start_ip = 9a000 [ 0.008000] CPU1: Thermal monitoring handled by SMI [ 0.160029] Brought up 2 CPUs [ 0.160033] Total of 2 processors activated (5984.88 BogoMIPS). [ 0.161224] devtmpfs: initialized [ 0.161224] PM: Registering ACPI NVS region at bf6d0000 (77824 bytes) [ 0.162075] print_constraints: dummy: [ 0.162115] Time: 7:34:42 Date: 10/05/11 [ 0.162171] NET: Registered protocol family 16 [ 0.162209] Trying to unpack rootfs image as initramfs... [ 0.164047] ACPI: bus type pci registered [ 0.164133] PCI: MMCONFIG for domain 0000 [bus 00-ff] at [mem 0xe0000000-0xefffffff] (base 0xe0000000) [ 0.164138] PCI: MMCONFIG at [mem 0xe0000000-0xefffffff] reserved in E820 [ 0.220043] PCI: Using configuration type 1 for base access [ 0.221379] bio: create slab at 0 [ 0.223506] ACPI: EC: Look up EC in DSDT [ 0.228089] [Firmware Bug]: ACPI: BIOS _OSI(Linux) query ignored [ 0.229039] ACPI: SSDT 00000000bf6d959e 001B4 (v01 PmRef Cpu0Ist 00003000 INTL 20050624) [ 0.229543] ACPI: Dynamic OEM Table Load: [ 0.229548] ACPI: SSDT (null) 001B4 (v01 PmRef Cpu0Ist 00003000 INTL 20050624) [ 0.229696] ACPI: SSDT 00000000bf6d906f 004AA (v01 PmRef Cpu0Cst 00003001 INTL 20050624) [ 0.230165] ACPI: Dynamic OEM Table Load: [ 0.230169] ACPI: SSDT (null) 004AA (v01 PmRef Cpu0Cst 00003001 INTL 20050624) [ 0.230454] ACPI: SSDT 00000000bf6d9752 000C8 (v01 PmRef Cpu1Ist 00003000 INTL 20050624) [ 0.232427] ACPI: Dynamic OEM Table Load: [ 0.232432] ACPI: SSDT (null) 000C8 (v01 PmRef Cpu1Ist 00003000 INTL 20050624) [ 0.232541] ACPI: SSDT 00000000bf6d9519 00085 (v01 PmRef Cpu1Cst 00003000 INTL 20050624) [ 0.233011] ACPI: Dynamic OEM Table Load: [ 0.233015] ACPI: SSDT (null) 00085 (v01 PmRef Cpu1Cst 00003000 INTL 20050624) [ 0.238295] ACPI: EC: GPE storm detected, transactions will use polling mode [ 0.344070] ACPI: Interpreter enabled [ 0.344078] ACPI: (supports S0 S3 S4 S5) [ 0.344118] ACPI: Using IOAPIC for interrupt routing [ 0.389051] ACPI: EC: GPE = 0x1c, I/O: command/status = 0x66, data = 0x62 [ 0.389294] ACPI: No dock devices found. [ 0.389298] HEST: Table not found. [ 0.389303] PCI: Ignoring host bridge windows from ACPI; if necessary, use "pci=use_crs" and report a bug [ 0.389762] ACPI: PCI Root Bridge [PCI0] (domain 0000 [bus 00-ff]) [ 0.390623] pci_root PNP0A08:00: host bridge window [io 0x0000-0x0cf7] (ignored) [ 0.390628] pci_root PNP0A08:00: host bridge window [io 0x0d00-0xffff] (ignored) [ 0.390632] pci_root PNP0A08:00: host bridge window [mem 0x000a0000-0x000bffff] (ignored) [ 0.390636] pci_root PNP0A08:00: host bridge window [mem 0x000d4000-0x000d7fff] (ignored) [ 0.390640] pci_root PNP0A08:00: host bridge window [mem 0x000d8000-0x000dbfff] (ignored) [ 0.390645] pci_root PNP0A08:00: host bridge window [mem 0xc0000000-0xdfffffff] (ignored) [ 0.390648] pci_root PNP0A08:00: host bridge window [mem 0xf0000000-0xfebfffff] (ignored) [ 0.390665] pci 0000:00:00.0: [8086:2a00] type 0 class 0x000600 [ 0.390726] pci 0000:00:02.0: [8086:2a02] type 0 class 0x000300 [ 0.390746] pci 0000:00:02.0: reg 10: [mem 0xfc000000-0xfc0fffff 64bit] [ 0.390758] pci 0000:00:02.0: reg 18: [mem 0xd0000000-0xdfffffff 64bit pref] [ 0.390767] pci 0000:00:02.0: reg 20: [io 0x1800-0x1807] [ 0.390812] pci 0000:00:02.1: [8086:2a03] type 0 class 0x000380 [ 0.390829] pci 0000:00:02.1: reg 10: [mem 0xfc100000-0xfc1fffff 64bit] [ 0.390937] pci 0000:00:1a.0: [8086:2834] type 0 class 0x000c03 [ 0.391013] pci 0000:00:1a.0: reg 20: [io 0x1820-0x183f] [ 0.391065] pci 0000:00:1a.1: [8086:2835] type 0 class 0x000c03 [ 0.391126] pci 0000:00:1a.1: reg 20: [io 0x1840-0x185f] [ 0.391187] pci 0000:00:1a.7: [8086:283a] type 0 class 0x000c03 [ 0.391216] pci 0000:00:1a.7: reg 10: [mem 0xfc504800-0xfc504bff] [ 0.391321] pci 0000:00:1a.7: PME# supported from D0 D3hot D3cold [ 0.391328] pci 0000:00:1a.7: PME# disabled [ 0.391362] pci 0000:00:1b.0: [8086:284b] type 0 class 0x000403 [ 0.391386] pci 0000:00:1b.0: reg 10: [mem 0xfc300000-0xfc303fff 64bit] [ 0.391473] pci 0000:00:1b.0: PME# supported from D0 D3hot D3cold [ 0.391479] pci 0000:00:1b.0: PME# disabled [ 0.391514] pci 0000:00:1c.0: [8086:283f] type 1 class 0x000604 [ 0.391605] pci 0000:00:1c.0: PME# supported from D0 D3hot D3cold [ 0.391611] pci 0000:00:1c.0: PME# disabled [ 0.391647] pci 0000:00:1c.1: [8086:2841] type 1 class 0x000604 [ 0.391735] pci 0000:00:1c.1: PME# supported from D0 D3hot D3cold [ 0.391741] pci 0000:00:1c.1: PME# disabled [ 0.391775] pci 0000:00:1c.2: [8086:2843] type 1 class 0x000604 [ 0.391868] pci 0000:00:1c.2: PME# supported from D0 D3hot D3cold [ 0.391874] pci 0000:00:1c.2: PME# disabled [ 0.391911] pci 0000:00:1c.3: [8086:2845] type 1 class 0x000604 [ 0.391999] pci 0000:00:1c.3: PME# supported from D0 D3hot D3cold [ 0.392005] pci 0000:00:1c.3: PME# disabled [ 0.392053] pci 0000:00:1d.0: [8086:2830] type 0 class 0x000c03 [ 0.392114] pci 0000:00:1d.0: reg 20: [io 0x1860-0x187f] [ 0.392162] pci 0000:00:1d.1: [8086:2831] type 0 class 0x000c03 [ 0.392238] pci 0000:00:1d.1: reg 20: [io 0x1880-0x189f] [ 0.392293] pci 0000:00:1d.2: [8086:2832] type 0 class 0x000c03 [ 0.392371] pci 0000:00:1d.2: reg 20: [io 0x18a0-0x18bf] [ 0.392438] pci 0000:00:1d.7: [8086:2836] type 0 class 0x000c03 [ 0.392466] pci 0000:00:1d.7: reg 10: [mem 0xfc504c00-0xfc504fff] [ 0.392567] pci 0000:00:1d.7: PME# supported from D0 D3hot D3cold [ 0.392573] pci 0000:00:1d.7: PME# disabled [ 0.392603] pci 0000:00:1e.0: [8086:2448] type 1 class 0x000604 [ 0.392698] pci 0000:00:1f.0: [8086:2815] type 0 class 0x000601 [ 0.392816] pci 0000:00:1f.0: quirk: [io 0x1000-0x107f] claimed by ICH6 ACPI/GPIO/TCO [ 0.392824] pci 0000:00:1f.0: quirk: [io 0x1180-0x11bf] claimed by ICH6 GPIO [ 0.392829] pci 0000:00:1f.0: ICH7 LPC Generic IO decode 1 PIO at 0680 (mask 007f) [ 0.392835] pci 0000:00:1f.0: ICH7 LPC Generic IO decode 2 PIO at 1640 (mask 000f) [ 0.392884] pci 0000:00:1f.1: [8086:2850] type 0 class 0x000101 [ 0.392903] pci 0000:00:1f.1: reg 10: [io 0x0000-0x0007] [ 0.392918] pci 0000:00:1f.1: reg 14: [io 0x0000-0x0003] [ 0.392931] pci 0000:00:1f.1: reg 18: [io 0x0000-0x0007] [ 0.392944] pci 0000:00:1f.1: reg 1c: [io 0x0000-0x0003] [ 0.392958] pci 0000:00:1f.1: reg 20: [io 0x1810-0x181f] [ 0.393014] pci 0000:00:1f.2: [8086:2829] type 0 class 0x000106 [ 0.393042] pci 0000:00:1f.2: reg 10: [io 0x1c00-0x1c07] [ 0.393056] pci 0000:00:1f.2: reg 14: [io 0x18d4-0x18d7] [ 0.393069] pci 0000:00:1f.2: reg 18: [io 0x18d8-0x18df] [ 0.393082] pci 0000:00:1f.2: reg 1c: [io 0x18d0-0x18d3] [ 0.393095] pci 0000:00:1f.2: reg 20: [io 0x18e0-0x18ff] [ 0.393108] pci 0000:00:1f.2: reg 24: [mem 0xfc504000-0xfc5047ff] [ 0.393157] pci 0000:00:1f.2: PME# supported from D3hot [ 0.393163] pci 0000:00:1f.2: PME# disabled [ 0.393188] pci 0000:00:1f.3: [8086:283e] type 0 class 0x000c05 [ 0.393206] pci 0000:00:1f.3: reg 10: [mem 0x00000000-0x000000ff] [ 0.393250] pci 0000:00:1f.3: reg 20: [io 0x1c20-0x1c3f] [ 0.393354] pci 0000:00:1c.0: PCI bridge to [bus 02-02] [ 0.393360] pci 0000:00:1c.0: bridge window [io 0x2000-0x2fff] [ 0.393367] pci 0000:00:1c.0: bridge window [mem 0xf6000000-0xf7ffffff] [ 0.393376] pci 0000:00:1c.0: bridge window [mem 0xf0000000-0xf1ffffff 64bit pref] [ 0.393501] pci 0000:04:00.0: [8086:4227] type 0 class 0x000280 [ 0.393557] pci 0000:04:00.0: reg 10: [mem 0xf8000000-0xf8000fff] [ 0.393895] pci 0000:04:00.0: PME# supported from D0 D3hot D3cold [ 0.393908] pci 0000:04:00.0: PME# disabled [ 0.393979] pci 0000:04:00.0: disabling ASPM on pre-1.1 PCIe device. You can enable it with 'pcie_aspm=force' [ 0.394021] pci 0000:00:1c.1: PCI bridge to [bus 04-04] [ 0.394027] pci 0000:00:1c.1: bridge window [io 0x3000-0x3fff] [ 0.394033] pci 0000:00:1c.1: bridge window [mem 0xf8000000-0xf9ffffff] [ 0.394043] pci 0000:00:1c.1: bridge window [mem 0xf2000000-0xf3ffffff 64bit pref] [ 0.394110] pci 0000:00:1c.2: PCI bridge to [bus 05-05] [ 0.394116] pci 0000:00:1c.2: bridge window [io 0x4000-0x4fff] [ 0.394122] pci 0000:00:1c.2: bridge window [mem 0xfa000000-0xfbffffff] [ 0.394132] pci 0000:00:1c.2: bridge window [mem 0xf4000000-0xf5ffffff 64bit pref] [ 0.394268] pci 0000:06:00.0: [14e4:1713] type 0 class 0x000200 [ 0.394336] pci 0000:06:00.0: reg 10: [mem 0xc8000000-0xc800ffff 64bit] [ 0.394639] pci 0000:06:00.0: PME# supported from D3hot D3cold [ 0.394651] pci 0000:06:00.0: PME# disabled [ 0.394783] pci 0000:00:1c.3: PCI bridge to [bus 06-06] [ 0.394789] pci 0000:00:1c.3: bridge window [io 0x5000-0x5fff] [ 0.394796] pci 0000:00:1c.3: bridge window [mem 0xc8000000-0xc9ffffff] [ 0.394806] pci 0000:00:1c.3: bridge window [mem 0xcc000000-0xcdffffff 64bit pref] [ 0.394868] pci 0000:08:06.0: [1180:0832] type 0 class 0x000c00 [ 0.394886] pci 0000:08:06.0: proprietary Ricoh MMC controller disabled (via firewire function) [ 0.394890] pci 0000:08:06.0: MMC cards are now supported by standard SDHCI controller [ 0.394909] pci 0000:08:06.0: reg 10: [mem 0xfc200000-0xfc2007ff] [ 0.395006] pci 0000:08:06.0: supports D1 D2 [ 0.395009] pci 0000:08:06.0: PME# supported from D0 D1 D2 D3hot D3cold [ 0.395016] pci 0000:08:06.0: PME# disabled [ 0.395045] pci 0000:08:06.1: [1180:0822] type 0 class 0x000805 [ 0.395069] pci 0000:08:06.1: reg 10: [mem 0xfc200800-0xfc2008ff] [ 0.395165] pci 0000:08:06.1: supports D1 D2 [ 0.395168] pci 0000:08:06.1: PME# supported from D0 D1 D2 D3hot D3cold [ 0.395174] pci 0000:08:06.1: PME# disabled [ 0.395199] pci 0000:08:06.2: [1180:0592] type 0 class 0x000880 [ 0.395224] pci 0000:08:06.2: reg 10: [mem 0xfc201000-0xfc2010ff] [ 0.395317] pci 0000:08:06.2: supports D1 D2 [ 0.395320] pci 0000:08:06.2: PME# supported from D0 D1 D2 D3hot D3cold [ 0.395326] pci 0000:08:06.2: PME# disabled [ 0.395350] pci 0000:08:06.3: [1180:0852] type 0 class 0x000880 [ 0.395376] pci 0000:08:06.3: reg 10: [mem 0xfc201400-0xfc2014ff] [ 0.395474] pci 0000:08:06.3: supports D1 D2 [ 0.395477] pci 0000:08:06.3: PME# supported from D0 D1 D2 D3hot D3cold [ 0.395484] pci 0000:08:06.3: PME# disabled [ 0.395549] pci 0000:00:1e.0: PCI bridge to [bus 08-08] (subtractive decode) [ 0.395556] pci 0000:00:1e.0: bridge window [io 0xf000-0x0000] (disabled) [ 0.395562] pci 0000:00:1e.0: bridge window [mem 0xfc200000-0xfc2fffff] [ 0.395572] pci 0000:00:1e.0: bridge window [mem 0xfff00000-0x000fffff pref] (disabled) [ 0.395576] pci 0000:00:1e.0: bridge window [io 0x0000-0xffff] (subtractive decode) [ 0.395580] pci 0000:00:1e.0: bridge window [mem 0x00000000-0xfffffffff] (subtractive decode) [ 0.395619] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0._PRT] [ 0.395828] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.RP01._PRT] [ 0.395887] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.RP02._PRT] [ 0.395944] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.RP03._PRT] [ 0.395999] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.RP04._PRT] [ 0.396116] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PCIB._PRT] [ 0.396176] pci0000:00: Requesting ACPI _OSC control (0x1d) [ 0.396181] pci0000:00: ACPI _OSC request failed (AE_NOT_FOUND), returned control mask: 0x1d [ 0.396184] ACPI _OSC control for PCIe not granted, disabling ASPM [ 0.404002] ACPI: PCI Interrupt Link [LNKA] (IRQs 1 3 4 *5 6 7 10 12 14 15) [ 0.404086] ACPI: PCI Interrupt Link [LNKB] (IRQs 1 3 4 5 6 7 11 12 14 15) *10 [ 0.404153] ACPI: PCI Interrupt Link [LNKC] (IRQs 1 3 4 5 6 *7 10 12 14 15) [ 0.404217] ACPI: PCI Interrupt Link [LNKD] (IRQs 1 3 4 5 6 7 11 12 14 15) *10 [ 0.404282] ACPI: PCI Interrupt Link [LNKE] (IRQs 1 3 4 5 6 7 10 12 14 15) *0, disabled. [ 0.404353] ACPI: PCI Interrupt Link [LNKF] (IRQs 1 3 4 5 6 7 11 12 14 15) *10 [ 0.404419] ACPI: PCI Interrupt Link [LNKG] (IRQs 1 3 4 5 6 7 10 12 14 15) *11 [ 0.404484] ACPI: PCI Interrupt Link [LNKH] (IRQs 1 3 4 5 6 7 *11 12 14 15) [ 0.404647] vgaarb: device added: PCI:0000:00:02.0,decodes=io+mem,owns=io+mem,locks=none [ 0.404670] vgaarb: loaded [ 0.404672] vgaarb: bridge control possible 0000:00:02.0 [ 0.404971] SCSI subsystem initialized [ 0.405069] libata version 3.00 loaded. [ 0.405143] usbcore: registered new interface driver usbfs [ 0.405158] usbcore: registered new interface driver hub [ 0.405200] usbcore: registered new device driver usb [ 0.405322] PCI: Using ACPI for IRQ routing [ 0.416330] PCI: pci_cache_line_size set to 64 bytes [ 0.416509] reserve RAM buffer: 000000000009f800 - 000000000009ffff [ 0.416513] reserve RAM buffer: 00000000bf6d0000 - 00000000bfffffff [ 0.416683] NetLabel: Initializing [ 0.416686] NetLabel: domain hash size = 128 [ 0.416688] NetLabel: protocols = UNLABELED CIPSOv4 [ 0.416706] NetLabel: unlabeled traffic allowed by default [ 0.416770] HPET: 3 timers in total, 0 timers will be used for per-cpu timer [ 0.416777] hpet0: at MMIO 0xfed00000, IRQs 2, 8, 0 [ 0.416784] hpet0: 3 comparators, 64-bit 14.318180 MHz counter [ 0.420524] Switching to clocksource hpet [ 0.423392] Switched to NOHz mode on CPU #0 [ 0.423487] Switched to NOHz mode on CPU #1 [ 0.430603] AppArmor: AppArmor Filesystem Enabled [ 0.430649] pnp: PnP ACPI init [ 0.430672] ACPI: bus type pnp registered [ 0.431166] pnp 00:00: [bus 00-ff] [ 0.431171] pnp 00:00: [io 0x0000-0x0cf7 window] [ 0.431174] pnp 00:00: [io 0x0cf8-0x0cff] [ 0.431177] pnp 00:00: [io 0x0d00-0xffff window] [ 0.431181] pnp 00:00: [mem 0x000a0000-0x000bffff window] [ 0.431184] pnp 00:00: [mem 0x000c0000-0x000c3fff window] [ 0.431187] pnp 00:00: [mem 0x000c4000-0x000c7fff window] [ 0.431190] pnp 00:00: [mem 0x000c8000-0x000cbfff window] [ 0.431197] pnp 00:00: [mem 0x000cc000-0x000cffff window] [ 0.431201] pnp 00:00: [mem 0x000d0000-0x000d3fff window] [ 0.431204] pnp 00:00: [mem 0x000d4000-0x000d7fff window] [ 0.431207] pnp 00:00: [mem 0x000d8000-0x000dbfff window] [ 0.431210] pnp 00:00: [mem 0x000dc000-0x000dffff window] [ 0.431213] pnp 00:00: [mem 0x000e0000-0x000e3fff window] [ 0.431216] pnp 00:00: [mem 0x000e4000-0x000e7fff window] [ 0.431219] pnp 00:00: [mem 0x000e8000-0x000ebfff window] [ 0.431222] pnp 00:00: [mem 0x000ec000-0x000effff window] [ 0.431225] pnp 00:00: [mem 0x000f0000-0x000fffff window] [ 0.431229] pnp 00:00: [mem 0xc0000000-0xdfffffff window] [ 0.431232] pnp 00:00: [mem 0xf0000000-0xfebfffff window] [ 0.431235] pnp 00:00: [mem 0xfed40000-0xfed44fff window] [ 0.431344] pnp 00:00: Plug and Play ACPI device, IDs PNP0a08 PNP0a03 (active) [ 0.431447] pnp 00:01: [mem 0xfed1c000-0xfed1ffff] [ 0.431450] pnp 00:01: [mem 0xfed14000-0xfed17fff] [ 0.431453] pnp 00:01: [mem 0xfed18000-0xfed18fff] [ 0.431456] pnp 00:01: [mem 0xfed19000-0xfed19fff] [ 0.431458] pnp 00:01: [mem 0xe0000000-0xefffffff] [ 0.431461] pnp 00:01: [mem 0xfed20000-0xfed3ffff] [ 0.431464] pnp 00:01: [mem 0xfed40000-0xfed44fff] [ 0.431467] pnp 00:01: [mem 0xfed45000-0xfed8ffff] [ 0.431559] system 00:01: [mem 0xfed1c000-0xfed1ffff] has been reserved [ 0.431564] system 00:01: [mem 0xfed14000-0xfed17fff] has been reserved [ 0.431568] system 00:01: [mem 0xfed18000-0xfed18fff] has been reserved [ 0.431572] system 00:01: [mem 0xfed19000-0xfed19fff] has been reserved [ 0.431576] system 00:01: [mem 0xe0000000-0xefffffff] has been reserved [ 0.431580] system 00:01: [mem 0xfed20000-0xfed3ffff] has been reserved [ 0.431584] system 00:01: [mem 0xfed40000-0xfed44fff] has been reserved [ 0.431588] system 00:01: [mem 0xfed45000-0xfed8ffff] has been reserved [ 0.431593] system 00:01: Plug and Play ACPI device, IDs PNP0c02 (active) [ 0.431859] pnp 00:02: [io 0x0000-0x001f] [ 0.431862] pnp 00:02: [io 0x0081-0x0091] [ 0.431864] pnp 00:02: [io 0x0093-0x009f] [ 0.431867] pnp 00:02: [io 0x00c0-0x00df] [ 0.431870] pnp 00:02: [dma 4] [ 0.431931] pnp 00:02: Plug and Play ACPI device, IDs PNP0200 (active) [ 0.431946] pnp 00:03: [mem 0xff000000-0xffffffff] [ 0.432030] pnp 00:03: Plug and Play ACPI device, IDs INT0800 (active) [ 0.432131] pnp 00:04: [mem 0xfed00000-0xfed003ff] [ 0.432218] system 00:04: [mem 0xfed00000-0xfed003ff] has been reserved [ 0.432223] system 00:04: Plug and Play ACPI device, IDs PNP0103 PNP0c01 (active) [ 0.432239] pnp 00:05: [io 0x00f0] [ 0.432256] pnp 00:05: [irq 13] [ 0.432321] pnp 00:05: Plug and Play ACPI device, IDs PNP0c04 (active) [ 0.432337] pnp 00:06: [io 0x002e-0x002f] [ 0.432340] pnp 00:06: [io 0x004e-0x004f] [ 0.432343] pnp 00:06: [io 0x0061] [ 0.432345] pnp 00:06: [io 0x0063] [ 0.432348] pnp 00:06: [io 0x0065] [ 0.432351] pnp 00:06: [io 0x0067] [ 0.432353] pnp 00:06: [io 0x0080] [ 0.432355] pnp 00:06: [io 0x0092] [ 0.432358] pnp 00:06: [io 0x00b2-0x00b3] [ 0.432361] pnp 00:06: [io 0x0680-0x069f] [ 0.432363] pnp 00:06: [io 0x0800-0x080f] [ 0.432366] pnp 00:06: [io 0x1000-0x107f] [ 0.432373] pnp 00:06: [io 0x1180-0x11bf] [ 0.432375] pnp 00:06: [io 0xfe00] [ 0.432378] pnp 00:06: [io 0xff00-0xff7f] [ 0.432479] system 00:06: [io 0x0680-0x069f] has been reserved [ 0.432484] system 00:06: [io 0x0800-0x080f] has been reserved [ 0.432487] system 00:06: [io 0x1000-0x107f] has been reserved [ 0.432491] system 00:06: [io 0x1180-0x11bf] has been reserved [ 0.432495] system 00:06: [io 0xfe00] has been reserved [ 0.432499] system 00:06: [io 0xff00-0xff7f] has been reserved [ 0.432504] system 00:06: Plug and Play ACPI device, IDs PNP0c02 (active) [ 0.432517] pnp 00:07: [io 0x0070-0x0077] [ 0.432525] pnp 00:07: [irq 8] [ 0.432587] pnp 00:07: Plug and Play ACPI device, IDs PNP0b00 (active) [ 0.452092] pnp 00:08: [io 0x0060] [ 0.452096] pnp 00:08: [io 0x0064] [ 0.452112] pnp 00:08: [irq 1] [ 0.452226] pnp 00:08: Plug and Play ACPI device, IDs PNP0303 (active) [ 0.452246] pnp 00:09: [irq 12] [ 0.452305] pnp 00:09: Plug and Play ACPI device, IDs PNP0f13 (active) [ 0.452340] pnp: PnP ACPI: found 10 devices [ 0.452343] ACPI: ACPI bus type pnp unregistered [ 0.459104] PCI: max bus depth: 1 pci_try_num: 2 [ 0.459195] pci 0000:00:1f.3: BAR 0: assigned [mem 0xc0000000-0xc00000ff] [ 0.459204] pci 0000:00:1f.3: BAR 0: set to [mem 0xc0000000-0xc00000ff] (PCI address [0xc0000000-0xc00000ff]) [ 0.459209] pci 0000:00:1c.0: PCI bridge to [bus 02-02] [ 0.459214] pci 0000:00:1c.0: bridge window [io 0x2000-0x2fff] [ 0.459222] pci 0000:00:1c.0: bridge window [mem 0xf6000000-0xf7ffffff] [ 0.459229] pci 0000:00:1c.0: bridge window [mem 0xf0000000-0xf1ffffff 64bit pref] [ 0.459239] pci 0000:00:1c.1: PCI bridge to [bus 04-04] [ 0.459244] pci 0000:00:1c.1: bridge window [io 0x3000-0x3fff] [ 0.459252] pci 0000:00:1c.1: bridge window [mem 0xf8000000-0xf9ffffff] [ 0.459259] pci 0000:00:1c.1: bridge window [mem 0xf2000000-0xf3ffffff 64bit pref] [ 0.459268] pci 0000:00:1c.2: PCI bridge to [bus 05-05] [ 0.459272] pci 0000:00:1c.2: bridge window [io 0x4000-0x4fff] [ 0.459280] pci 0000:00:1c.2: bridge window [mem 0xfa000000-0xfbffffff] [ 0.459287] pci 0000:00:1c.2: bridge window [mem 0xf4000000-0xf5ffffff 64bit pref] [ 0.459296] pci 0000:00:1c.3: PCI bridge to [bus 06-06] [ 0.459301] pci 0000:00:1c.3: bridge window [io 0x5000-0x5fff] [ 0.459308] pci 0000:00:1c.3: bridge window [mem 0xc8000000-0xc9ffffff] [ 0.459314] pci 0000:00:1c.3: bridge window [mem 0xcc000000-0xcdffffff 64bit pref] [ 0.459324] pci 0000:00:1e.0: PCI bridge to [bus 08-08] [ 0.459327] pci 0000:00:1e.0: bridge window [io disabled] [ 0.459334] pci 0000:00:1e.0: bridge window [mem 0xfc200000-0xfc2fffff] [ 0.459340] pci 0000:00:1e.0: bridge window [mem pref disabled] [ 0.459373] pci 0000:00:1c.0: PCI INT A -> GSI 17 (level, low) -> IRQ 17 [ 0.459380] pci 0000:00:1c.0: setting latency timer to 64 [ 0.459399] pci 0000:00:1c.1: PCI INT B -> GSI 16 (level, low) -> IRQ 16 [ 0.459405] pci 0000:00:1c.1: setting latency timer to 64 [ 0.459419] pci 0000:00:1c.2: PCI INT C -> GSI 18 (level, low) -> IRQ 18 [ 0.459425] pci 0000:00:1c.2: setting latency timer to 64 [ 0.459438] pci 0000:00:1c.3: PCI INT D -> GSI 19 (level, low) -> IRQ 19 [ 0.459444] pci 0000:00:1c.3: setting latency timer to 64 [ 0.459455] pci 0000:00:1e.0: setting latency timer to 64 [ 0.459460] pci_bus 0000:00: resource 0 [io 0x0000-0xffff] [ 0.459464] pci_bus 0000:00: resource 1 [mem 0x00000000-0xfffffffff] [ 0.459467] pci_bus 0000:02: resource 0 [io 0x2000-0x2fff] [ 0.459470] pci_bus 0000:02: resource 1 [mem 0xf6000000-0xf7ffffff] [ 0.459474] pci_bus 0000:02: resource 2 [mem 0xf0000000-0xf1ffffff 64bit pref] [ 0.459478] pci_bus 0000:04: resource 0 [io 0x3000-0x3fff] [ 0.459481] pci_bus 0000:04: resource 1 [mem 0xf8000000-0xf9ffffff] [ 0.459484] pci_bus 0000:04: resource 2 [mem 0xf2000000-0xf3ffffff 64bit pref] [ 0.459488] pci_bus 0000:05: resource 0 [io 0x4000-0x4fff] [ 0.459491] pci_bus 0000:05: resource 1 [mem 0xfa000000-0xfbffffff] [ 0.459495] pci_bus 0000:05: resource 2 [mem 0xf4000000-0xf5ffffff 64bit pref] [ 0.459498] pci_bus 0000:06: resource 0 [io 0x5000-0x5fff] [ 0.459501] pci_bus 0000:06: resource 1 [mem 0xc8000000-0xc9ffffff] [ 0.459505] pci_bus 0000:06: resource 2 [mem 0xcc000000-0xcdffffff 64bit pref] [ 0.459508] pci_bus 0000:08: resource 1 [mem 0xfc200000-0xfc2fffff] [ 0.459512] pci_bus 0000:08: resource 4 [io 0x0000-0xffff] [ 0.459515] pci_bus 0000:08: resource 5 [mem 0x00000000-0xfffffffff] [ 0.459580] NET: Registered protocol family 2 [ 0.459816] IP route cache hash table entries: 131072 (order: 8, 1048576 bytes) [ 0.461759] TCP established hash table entries: 524288 (order: 11, 8388608 bytes) [ 0.468207] TCP bind hash table entries: 65536 (order: 8, 1048576 bytes) [ 0.469024] TCP: Hash tables configured (established 524288 bind 65536) [ 0.469028] TCP reno registered [ 0.469052] UDP hash table entries: 2048 (order: 4, 65536 bytes) [ 0.469120] UDP-Lite hash table entries: 2048 (order: 4, 65536 bytes) [ 0.469325] NET: Registered protocol family 1 [ 0.469358] pci 0000:00:02.0: Boot video device [ 0.469577] PCI: CLS 64 bytes, default 64 [ 0.469604] Simple Boot Flag at 0x36 set to 0x1 [ 0.470069] audit: initializing netlink socket (disabled) [ 0.470088] type=2000 audit(1317800082.464:1): initialized [ 0.509918] HugeTLB registered 2 MB page size, pre-allocated 0 pages [ 0.531362] VFS: Disk quotas dquot_6.5.2 [ 0.531454] Dquot-cache hash table entries: 512 (order 0, 4096 bytes) [ 0.532343] fuse init (API version 7.16) [ 0.532465] msgmni has been set to 5719 [ 0.532931] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 253) [ 0.532975] io scheduler noop registered [ 0.532978] io scheduler deadline registered [ 0.533033] io scheduler cfq registered (default) [ 0.533206] pcieport 0000:00:1c.0: setting latency timer to 64 [ 0.533281] pcieport 0000:00:1c.0: irq 40 for MSI/MSI-X [ 0.533378] pcieport 0000:00:1c.1: setting latency timer to 64 [ 0.533444] pcieport 0000:00:1c.1: irq 41 for MSI/MSI-X [ 0.533540] pcieport 0000:00:1c.2: setting latency timer to 64 [ 0.533607] pcieport 0000:00:1c.2: irq 42 for MSI/MSI-X [ 0.533705] pcieport 0000:00:1c.3: setting latency timer to 64 [ 0.533770] pcieport 0000:00:1c.3: irq 43 for MSI/MSI-X [ 0.533898] pci_hotplug: PCI Hot Plug PCI Core version: 0.5 [ 0.533934] pciehp: PCI Express Hot Plug Controller Driver version: 0.4 [ 0.533994] intel_idle: MWAIT substates: 0x22220 [ 0.533997] intel_idle: does not run on family 6 model 15 [ 0.534105] ACPI: Deprecated procfs I/F for AC is loaded, please retry with CONFIG_ACPI_PROCFS_POWER cleared [ 0.534186] ACPI: AC Adapter [ACAD] (on-line) [ 0.534267] input: Lid Switch as /devices/LNXSYSTM:00/device:00/PNP0C0D:00/input/input0 [ 0.534291] ACPI: Lid Switch [LID0] [ 0.534348] input: Power Button as /devices/LNXSYSTM:00/device:00/PNP0C0C:00/input/input1 [ 0.534353] ACPI: Power Button [PWRB] [ 0.534429] input: Power Button as /devices/LNXSYSTM:00/LNXPWRBN:00/input/input2 [ 0.534434] ACPI: Power Button [PWRF] [ 0.534479] ACPI: acpi_idle registered with cpuidle [ 0.536970] Monitor-Mwait will be used to enter C-1 state [ 0.537024] Monitor-Mwait will be used to enter C-2 state [ 0.537059] Monitor-Mwait will be used to enter C-3 state [ 0.537066] Marking TSC unstable due to TSC halts in idle [ 0.576306] ACPI: Deprecated procfs I/F for battery is loaded, please retry with CONFIG_ACPI_PROCFS_POWER cleared [ 0.576339] ERST: Table is not found! [ 0.576477] Serial: 8250/16550 driver, 32 ports, IRQ sharing enabled [ 0.596514] ACPI: Battery Slot [BAT1] (battery present) [ 0.756873] Freeing initrd memory: 19464k freed [ 0.789948] Linux agpgart interface v0.103 [ 0.790084] agpgart-intel 0000:00:00.0: Intel 965GM Chipset [ 0.790242] agpgart-intel 0000:00:00.0: detected gtt size: 524288K total, 262144K mappable [ 0.791097] agpgart-intel 0000:00:00.0: detected 8192K stolen memory [ 0.791250] agpgart-intel 0000:00:00.0: AGP aperture is 256M @ 0xd0000000 [ 0.792794] brd: module loaded [ 0.793486] loop: module loaded [ 0.793683] ata_piix 0000:00:1f.1: version 2.13 [ 0.793701] ata_piix 0000:00:1f.1: PCI INT A -> GSI 19 (level, low) -> IRQ 19 [ 0.793746] ata_piix 0000:00:1f.1: setting latency timer to 64 [ 0.794143] scsi0 : ata_piix [ 0.794282] scsi1 : ata_piix [ 0.794784] ata1: PATA max UDMA/100 cmd 0x1f0 ctl 0x3f6 bmdma 0x1810 irq 14 [ 0.794789] ata2: PATA max UDMA/100 cmd 0x170 ctl 0x376 bmdma 0x1818 irq 15 [ 0.795227] Fixed MDIO Bus: probed [ 0.795261] PPP generic driver version 2.4.2 [ 0.795315] tun: Universal TUN/TAP device driver, 1.6 [ 0.795318] tun: (C) 1999-2004 Max Krasnyansky [ 0.795429] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver [ 0.795451] ehci_hcd 0000:00:1a.7: PCI INT C -> GSI 18 (level, low) -> IRQ 18 [ 0.795472] ehci_hcd 0000:00:1a.7: setting latency timer to 64 [ 0.795477] ehci_hcd 0000:00:1a.7: EHCI Host Controller [ 0.795524] ehci_hcd 0000:00:1a.7: new USB bus registered, assigned bus number 1 [ 0.795567] ehci_hcd 0000:00:1a.7: debug port 1 [ 0.799463] ehci_hcd 0000:00:1a.7: cache line size of 64 is not supported [ 0.799485] ehci_hcd 0000:00:1a.7: irq 18, io mem 0xfc504800 [ 0.812020] ehci_hcd 0000:00:1a.7: USB 2.0 started, EHCI 1.00 [ 0.812182] hub 1-0:1.0: USB hub found [ 0.812189] hub 1-0:1.0: 4 ports detected [ 0.812291] ehci_hcd 0000:00:1d.7: PCI INT A -> GSI 23 (level, low) -> IRQ 23 [ 0.812305] ehci_hcd 0000:00:1d.7: setting latency timer to 64 [ 0.812310] ehci_hcd 0000:00:1d.7: EHCI Host Controller [ 0.812363] ehci_hcd 0000:00:1d.7: new USB bus registered, assigned bus number 2 [ 0.812398] ehci_hcd 0000:00:1d.7: debug port 1 [ 0.816279] ehci_hcd 0000:00:1d.7: cache line size of 64 is not supported [ 0.816301] ehci_hcd 0000:00:1d.7: irq 23, io mem 0xfc504c00 [ 0.832023] ehci_hcd 0000:00:1d.7: USB 2.0 started, EHCI 1.00 [ 0.832151] hub 2-0:1.0: USB hub found [ 0.832157] hub 2-0:1.0: 6 ports detected [ 0.832258] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver [ 0.832276] uhci_hcd: USB Universal Host Controller Interface driver [ 0.832305] uhci_hcd 0000:00:1a.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16 [ 0.832314] uhci_hcd 0000:00:1a.0: setting latency timer to 64 [ 0.832319] uhci_hcd 0000:00:1a.0: UHCI Host Controller [ 0.832366] uhci_hcd 0000:00:1a.0: new USB bus registered, assigned bus number 3 [ 0.832412] uhci_hcd 0000:00:1a.0: irq 16, io base 0x00001820 [ 0.832569] hub 3-0:1.0: USB hub found [ 0.832575] hub 3-0:1.0: 2 ports detected [ 0.832668] uhci_hcd 0000:00:1a.1: PCI INT B -> GSI 21 (level, low) -> IRQ 21 [ 0.832679] uhci_hcd 0000:00:1a.1: setting latency timer to 64 [ 0.832684] uhci_hcd 0000:00:1a.1: UHCI Host Controller [ 0.832731] uhci_hcd 0000:00:1a.1: new USB bus registered, assigned bus number 4 [ 0.832775] uhci_hcd 0000:00:1a.1: irq 21, io base 0x00001840 [ 0.832936] hub 4-0:1.0: USB hub found [ 0.832941] hub 4-0:1.0: 2 ports detected [ 0.833028] uhci_hcd 0000:00:1d.0: PCI INT A -> GSI 23 (level, low) -> IRQ 23 [ 0.833037] uhci_hcd 0000:00:1d.0: setting latency timer to 64 [ 0.833042] uhci_hcd 0000:00:1d.0: UHCI Host Controller [ 0.833099] uhci_hcd 0000:00:1d.0: new USB bus registered, assigned bus number 5 [ 0.833134] uhci_hcd 0000:00:1d.0: irq 23, io base 0x00001860 [ 0.833291] hub 5-0:1.0: USB hub found [ 0.833296] hub 5-0:1.0: 2 ports detected [ 0.833384] uhci_hcd 0000:00:1d.1: PCI INT B -> GSI 19 (level, low) -> IRQ 19 [ 0.833392] uhci_hcd 0000:00:1d.1: setting latency timer to 64 [ 0.833397] uhci_hcd 0000:00:1d.1: UHCI Host Controller [ 0.833448] uhci_hcd 0000:00:1d.1: new USB bus registered, assigned bus number 6 [ 0.833493] uhci_hcd 0000:00:1d.1: irq 19, io base 0x00001880 [ 0.833649] hub 6-0:1.0: USB hub found [ 0.833655] hub 6-0:1.0: 2 ports detected [ 0.833737] uhci_hcd 0000:00:1d.2: PCI INT C -> GSI 18 (level, low) -> IRQ 18 [ 0.833746] uhci_hcd 0000:00:1d.2: setting latency timer to 64 [ 0.833750] uhci_hcd 0000:00:1d.2: UHCI Host Controller [ 0.833797] uhci_hcd 0000:00:1d.2: new USB bus registered, assigned bus number 7 [ 0.833832] uhci_hcd 0000:00:1d.2: irq 18, io base 0x000018a0 [ 0.833984] hub 7-0:1.0: USB hub found [ 0.833990] hub 7-0:1.0: 2 ports detected [ 0.834133] i8042: PNP: PS/2 Controller [PNP0303:PS2K,PNP0f13:PS2M] at 0x60,0x64 irq 1,12 [ 0.858635] serio: i8042 KBD port at 0x60,0x64 irq 1 [ 0.858644] serio: i8042 AUX port at 0x60,0x64 irq 12 [ 0.858792] mousedev: PS/2 mouse device common for all mice [ 0.860515] rtc_cmos 00:07: RTC can wake from S4 [ 0.860650] rtc_cmos 00:07: rtc core: registered rtc_cmos as rtc0 [ 0.860686] rtc0: alarms up to one month, y3k, 242 bytes nvram, hpet irqs [ 0.860821] device-mapper: uevent: version 1.0.3 [ 0.860928] device-mapper: ioctl: 4.20.0-ioctl (2011-02-02) initialised: dm-devel@redhat.com [ 0.861015] cpuidle: using governor ladder [ 0.861137] cpuidle: using governor menu [ 0.861140] EFI Variables Facility v0.08 2004-May-17 [ 0.861497] TCP cubic registered [ 0.861666] NET: Registered protocol family 10 [ 0.862339] NET: Registered protocol family 17 [ 0.862362] Registering the dns_resolver key type [ 0.862505] PM: Hibernation image not present or could not be loaded. [ 0.862521] registered taskstats version 1 [ 0.881709] Magic number: 15:169:571 [ 0.881852] rtc_cmos 00:07: setting system clock to 2011-10-05 07:34:43 UTC (1317800083) [ 0.882695] BIOS EDD facility v0.16 2004-Jun-25, 0 devices found [ 0.882699] EDD information not available. [ 0.885384] input: AT Translated Set 2 keyboard as /devices/platform/i8042/serio0/input/input3 [ 0.964510] ata1.00: ATAPI: MATSHITADVD-RAM UJ-850 z, RB32, max UDMA/33 [ 0.980374] ata1.00: configured for UDMA/33 [ 0.983110] scsi 0:0:0:0: CD-ROM MATSHITA DVD-RAM UJ-850 z RB32 PQ: 0 ANSI: 5 [ 0.985684] sr0: scsi3-mmc drive: 24x/24x writer dvd-ram cd/rw xa/form2 cdda tray [ 0.985690] cdrom: Uniform CD-ROM driver Revision: 3.20 [ 0.985886] sr 0:0:0:0: Attached scsi CD-ROM sr0 [ 0.985957] sr 0:0:0:0: Attached scsi generic sg0 type 5 [ 0.988684] Freeing unused kernel memory: 984k freed [ 0.989019] Write protecting the kernel read-only data: 10240k [ 0.989354] Freeing unused kernel memory: 20k freed [ 0.996526] Freeing unused kernel memory: 1400k freed [ 1.023090] udevd[92]: starting version 173 [ 1.095474] [drm] Initialized drm 1.1.0 20060810 [ 1.111223] tg3.c:v3.119 (May 18, 2011) [ 1.111255] tg3 0000:06:00.0: PCI INT A -> GSI 19 (level, low) -> IRQ 19 [ 1.111275] tg3 0000:06:00.0: setting latency timer to 64 [ 1.123354] wmi: Mapper loaded [ 1.135292] i915 0000:00:02.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16 [ 1.135301] i915 0000:00:02.0: setting latency timer to 64 [ 1.229432] i915 0000:00:02.0: irq 44 for MSI/MSI-X [ 1.229442] [drm] Supports vblank timestamp caching Rev 1 (10.10.2010). [ 1.229444] [drm] Driver supports precise vblank timestamp query. [ 1.229504] vgaarb: device changed decodes: PCI:0000:00:02.0,olddecodes=io+mem,decodes=io+mem:owns=io+mem [ 1.231431] sdhci: Secure Digital Host Controller Interface driver [ 1.231435] sdhci: Copyright(c) Pierre Ossman [ 1.231761] sdhci-pci 0000:08:06.1: SDHCI controller found [1180:0822] (rev 19) [ 1.231780] sdhci-pci 0000:08:06.1: PCI INT B -> GSI 23 (level, low) -> IRQ 23 [ 1.232804] sdhci-pci 0000:08:06.1: Will use DMA mode even though HW doesn't fully claim to support it. [ 1.251222] mmc0: no vmmc regulator found [ 1.252265] Registered led device: mmc0:: [ 1.258216] mmc0: SDHCI controller on PCI [0000:08:06.1] using DMA [ 1.278826] tg3 0000:06:00.0: eth0: Tigon3 [partno(BCM95906) rev c002] (PCI Express) MAC address 00:1b:38:0c:7f:47 [ 1.278833] tg3 0000:06:00.0: eth0: attached PHY is 5906 (10/100Base-TX Ethernet) (WireSpeed[0], EEE[0]) [ 1.278838] tg3 0000:06:00.0: eth0: RXcsums[1] LinkChgREG[0] MIirq[0] ASF[0] TSOcap[1] [ 1.278842] tg3 0000:06:00.0: eth0: dma_rwctrl[76180000] dma_mask[64-bit] [ 1.288114] firewire_ohci 0000:08:06.0: PCI INT A -> GSI 22 (level, low) -> IRQ 22 [ 1.288352] fixme: max PWM is zero. [ 1.321105] [drm] initialized overlay support [ 1.363095] firewire_ohci: Added fw-ohci device 0000:08:06.0, OHCI v1.10, 4 IR + 4 IT contexts, quirks 0x1 [ 1.429305] usb 1-4: new high speed USB device number 4 using ehci_hcd [ 1.510188] fbcon: inteldrmfb (fb0) is primary device [ 1.510267] Console: switching to colour frame buffer device 160x50 [ 1.510301] fb0: inteldrmfb frame buffer device [ 1.510304] drm: registered panic notifier [ 1.596139] acpi device:08: registered as cooling_device2 [ 1.596350] input: Video Bus as /devices/LNXSYSTM:00/device:00/PNP0A08:00/LNXVIDEO:01/input/input4 [ 1.596428] ACPI: Video Device [GFX0] (multi-head: yes rom: no post: no) [ 1.596505] [drm] Initialized i915 1.6.0 20080730 for 0000:00:02.0 on minor 0 [ 1.596723] ahci 0000:00:1f.2: version 3.0 [ 1.596748] ahci 0000:00:1f.2: PCI INT B -> GSI 19 (level, low) -> IRQ 19 [ 1.596832] ahci 0000:00:1f.2: irq 45 for MSI/MSI-X [ 1.596928] ahci 0000:00:1f.2: AHCI 0001.0100 32 slots 3 ports 3 Gbps 0x7 impl SATA mode [ 1.596934] ahci 0000:00:1f.2: flags: 64bit ncq sntf pm led clo pio slum part ccc [ 1.596941] ahci 0000:00:1f.2: setting latency timer to 64 [ 1.600697] scsi2 : ahci [ 1.601002] scsi3 : ahci [ 1.601154] scsi4 : ahci [ 1.601328] ata3: SATA max UDMA/133 abar m2048@0xfc504000 port 0xfc504100 irq 45 [ 1.601335] ata4: SATA max UDMA/133 abar m2048@0xfc504000 port 0xfc504180 irq 45 [ 1.601340] ata5: SATA max UDMA/133 abar m2048@0xfc504000 port 0xfc504200 irq 45 [ 1.860262] firewire_core: created device fw0: GUID 00023f7bac4040de, S400 [ 1.920122] ata3: SATA link up 3.0 Gbps (SStatus 123 SControl 300) [ 1.921792] ata3.00: unexpected _GTF length (8) [ 1.922070] ata3.00: ATA-8: WDC WD2500BEKT-75PVMT0, 01.01A01, max UDMA/133 [ 1.922077] ata3.00: 488397168 sectors, multi 16: LBA48 NCQ (depth 31/32), AA [ 1.923756] ata3.00: unexpected _GTF length (8) [ 1.924053] ata4: SATA link down (SStatus 0 SControl 300) [ 1.924081] ata3.00: configured for UDMA/133 [ 1.924106] ata5: SATA link down (SStatus 0 SControl 300) [ 1.924318] scsi 2:0:0:0: Direct-Access ATA WDC WD2500BEKT-7 01.0 PQ: 0 ANSI: 5 [ 1.924525] sd 2:0:0:0: Attached scsi generic sg1 type 0 [ 1.924642] sd 2:0:0:0: [sda] 488397168 512-byte logical blocks: (250 GB/232 GiB) [ 1.924823] sd 2:0:0:0: [sda] Write Protect is off [ 1.924828] sd 2:0:0:0: [sda] Mode Sense: 00 3a 00 00 [ 1.924898] sd 2:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA [ 2.020840] sda: sda1 sda2 sda3 sda4 < sda5 > [ 2.021461] sd 2:0:0:0: [sda] Attached SCSI disk [ 2.032059] usb 3-1: new full speed USB device number 2 using uhci_hcd [ 2.464056] usb 4-1: new full speed USB device number 2 using uhci_hcd [ 2.872042] usb 6-1: new low speed USB device number 2 using uhci_hcd [ 3.093235] input: MLK Trust Mouse as /devices/pci0000:00/0000:00:1d.1/usb6/6-1/6-1:1.0/input/input5 [ 3.093727] generic-usb 0003:04FC:05DA.0001: input,hiddev0,hidraw0: USB HID v1.10 Mouse [MLK Trust Mouse] on usb-0000:00:1d.1-1/input0 [ 3.093905] usbcore: registered new interface driver usbhid [ 3.093909] usbhid: USB HID core driver [ 3.288960] EXT4-fs (sda2): mounted filesystem with ordered data mode. Opts: (null) [ 3.308073] usb 6-2: new full speed USB device number 3 using uhci_hcd [ 3.720052] usb 7-1: new low speed USB device number 2 using uhci_hcd [ 3.918393] input: LITEON Technology USB Multimedia Keyboard as /devices/pci0000:00/0000:00:1d.2/usb7/7-1/7-1:1.0/input/input6 [ 3.918495] generic-usb 0003:046D:C312.0002: input,hidraw1: USB HID v1.10 Keyboard [LITEON Technology USB Multimedia Keyboard] on usb-0000:00:1d.2-1/input0 [ 5.565904] Adding 15999996k swap on /dev/sda3. Priority:-1 extents:1 across:15999996k [ 5.691364] udevd[373]: starting version 173 [ 6.303871] lp: driver loaded but no devices found [ 7.040655] cfg80211: Calling CRDA to update world regulatory domain [ 7.159284] r852 0000:08:06.3: PCI INT B -> GSI 23 (level, low) -> IRQ 23 [ 7.159297] r852 0000:08:06.3: setting latency timer to 64 [ 7.159394] r852: Non dma capable device detected, dma disabled [ 7.159411] r852: driver loaded successfully [ 7.169632] iwl3945: Intel(R) PRO/Wireless 3945ABG/BG Network Connection driver for Linux, in-tree:s [ 7.169637] iwl3945: Copyright(c) 2003-2011 Intel Corporation [ 7.169734] iwl3945 0000:04:00.0: PCI INT A -> GSI 17 (level, low) -> IRQ 17 [ 7.169751] iwl3945 0000:04:00.0: setting latency timer to 64 [ 7.225063] iwl3945 0000:04:00.0: Tunable channels: 13 802.11bg, 23 802.11a channels [ 7.225067] iwl3945 0000:04:00.0: Detected Intel Wireless WiFi Link 3945ABG [ 7.225225] iwl3945 0000:04:00.0: irq 46 for MSI/MSI-X [ 7.225470] Registered led device: phy0-led [ 7.225511] cfg80211: Ignoring regulatory request Set by core since the driver uses its own custom regulatory domain [ 7.521071] ieee80211 phy0: Selected rate control algorithm 'iwl-3945-rs' [ 7.728682] udevd[389]: renamed network interface eth0 to eth1 [ 7.785421] udevd[392]: renamed network interface wlan0 to wlan1 [ 7.839555] device-mapper: multipath: version 1.3.0 loaded [ 7.920206] Synaptics Touchpad, model: 1, fw: 6.3, id: 0x25c0b1, caps: 0xa04713/0x200000/0x0 [ 8.001393] input: SynPS/2 Synaptics TouchPad as /devices/platform/i8042/serio1/input/input7 [ 8.103705] Linux video capture interface: v2.00 [ 8.142601] uvcvideo: Found UVC 1.00 device USB 2.0 Camera (04f2:b013) [ 8.145395] input: USB 2.0 Camera as /devices/pci0000:00/0000:00:1a.7/usb1/1-4/1-4:1.0/input/input8 [ 8.145503] usbcore: registered new interface driver uvcvideo [ 8.145506] USB Video Class driver (v1.1.0) [ 8.268868] gspca: v2.13.0 registered [ 8.426860] Bluetooth: Core ver 2.16 [ 8.426898] NET: Registered protocol family 31 [ 8.426901] Bluetooth: HCI device and connection manager initialized [ 8.426905] Bluetooth: HCI socket layer initialized [ 8.426908] Bluetooth: L2CAP socket layer initialized [ 8.426983] Bluetooth: SCO socket layer initialized [ 8.445120] Bluetooth: Generic Bluetooth USB driver ver 0.6 [ 8.445873] usbcore: registered new interface driver btusb [ 8.596127] cfg80211: Ignoring regulatory request Set by core since the driver uses its own custom regulatory domain [ 8.596132] cfg80211: World regulatory domain updated: [ 8.596135] cfg80211: (start_freq - end_freq @ bandwidth), (max_antenna_gain, max_eirp) [ 8.596139] cfg80211: (2402000 KHz - 2472000 KHz @ 40000 KHz), (300 mBi, 2000 mBm) [ 8.596144] cfg80211: (2457000 KHz - 2482000 KHz @ 20000 KHz), (300 mBi, 2000 mBm) [ 8.596147] cfg80211: (2474000 KHz - 2494000 KHz @ 20000 KHz), (300 mBi, 2000 mBm) [ 8.596151] cfg80211: (5170000 KHz - 5250000 KHz @ 40000 KHz), (300 mBi, 2000 mBm) [ 8.596155] cfg80211: (5735000 KHz - 5835000 KHz @ 40000 KHz), (300 mBi, 2000 mBm) [ 8.713241] HDA Intel 0000:00:1b.0: PCI INT A -> GSI 22 (level, low) -> IRQ 22 [ 8.713332] HDA Intel 0000:00:1b.0: irq 47 for MSI/MSI-X [ 8.713375] HDA Intel 0000:00:1b.0: setting latency timer to 64 [ 9.214524] type=1400 audit(1317800091.827:2): apparmor="STATUS" operation="profile_load" name="/sbin/dhclient" pid=762 comm="apparmor_parser" [ 9.214539] type=1400 audit(1317800091.827:3): apparmor="STATUS" operation="profile_replace" name="/sbin/dhclient" pid=760 comm="apparmor_parser" [ 9.214899] type=1400 audit(1317800091.827:4): apparmor="STATUS" operation="profile_load" name="/usr/lib/NetworkManager/nm-dhcp-client.action" pid=762 comm="apparmor_parser" [ 9.214917] type=1400 audit(1317800091.827:5): apparmor="STATUS" operation="profile_replace" name="/usr/lib/NetworkManager/nm-dhcp-client.action" pid=760 comm="apparmor_parser" [ 9.215139] type=1400 audit(1317800091.827:6): apparmor="STATUS" operation="profile_load" name="/usr/lib/connman/scripts/dhclient-script" pid=762 comm="apparmor_parser" [ 9.215162] type=1400 audit(1317800091.827:7): apparmor="STATUS" operation="profile_replace" name="/usr/lib/connman/scripts/dhclient-script" pid=760 comm="apparmor_parser" [ 9.215989] type=1400 audit(1317800091.827:8): apparmor="STATUS" operation="profile_replace" name="/sbin/dhclient" pid=761 comm="apparmor_parser" [ 9.216386] type=1400 audit(1317800091.831:9): apparmor="STATUS" operation="profile_replace" name="/usr/lib/NetworkManager/nm-dhcp-client.action" pid=761 comm="apparmor_parser" [ 9.216637] type=1400 audit(1317800091.831:10): apparmor="STATUS" operation="profile_replace" name="/usr/lib/connman/scripts/dhclient-script" pid=761 comm="apparmor_parser" [ 9.565602] input: zc3xx as /devices/pci0000:00/0000:00:1a.0/usb3/3-1/input/input9 [ 9.565840] usbcore: registered new interface driver zc3xx [ 9.567768] usbcore: registered new interface driver snd-usb-audio [ 10.957262] EXT4-fs (sda2): re-mounted. Opts: errors=remount-ro [ 11.498897] EXT4-fs (sda1): mounted filesystem with ordered data mode. Opts: (null) [ 11.610016] EXT4-fs (sda5): mounted filesystem with ordered data mode. Opts: (null) [ 13.338782] type=1400 audit(1317800095.951:11): apparmor="STATUS" operation="profile_load" name="/usr/lib/lightdm/lightdm-guest-session-wrapper" pid=1170 comm="apparmor_parser" [ 14.107842] ppdev: user-space parallel port driver [ 16.201248] microcode: CPU0 sig=0x6fd, pf=0x80, revision=0xa1 [ 16.241864] microcode: CPU1 sig=0x6fd, pf=0x80, revision=0xa1 [ 16.244584] microcode: Microcode Update Driver: v2.00 , Peter Oruba [ 16.257389] iwl3945 0000:04:00.0: loaded firmware version 15.32.2.9 [ 16.319712] microcode: CPU0 updated to revision 0xa4, date = 2010-10-02 [ 16.320392] microcode: CPU1 updated to revision 0xa4, date = 2010-10-02 [ 16.327663] ADDRCONF(NETDEV_UP): wlan1: link is not ready [ 16.411245] tg3 0000:06:00.0: irq 48 for MSI/MSI-X [ 16.441602] ADDRCONF(NETDEV_UP): eth1: link is not ready [ 17.163336] init: failsafe main process (1112) killed by TERM signal [ 17.369512] init: gdm main process (1340) killed by TERM signal [ 18.121686] tg3 0000:06:00.0: eth1: Link is up at 100 Mbps, full duplex [ 18.121691] tg3 0000:06:00.0: eth1: Flow control is on for TX and on for RX [ 18.122295] ADDRCONF(NETDEV_CHANGE): eth1: link becomes ready [ 21.210518] RPC: Registered named UNIX socket transport module. [ 21.210523] RPC: Registered udp transport module. [ 21.210525] RPC: Registered tcp transport module. [ 21.210528] RPC: Registered tcp NFSv4.1 backchannel transport module. [ 21.445931] Installing knfsd (copyright (C) 1996 okir@monad.swb.de). [ 21.627527] NFSD: Using /var/lib/nfs/v4recovery as the NFSv4 state recovery directory [ 21.636586] NFSD: starting 90-second grace period [ 24.852307] vboxdrv: Found 2 processor cores. [ 24.852593] vboxdrv: fAsync=0 offMin=0x1c2 offMax=0xae6 [ 24.852666] vboxdrv: TSC mode is 'synchronous', kernel timer mode is 'normal'. [ 24.852669] vboxdrv: Successfully loaded version 4.1.2_Ubuntu (interface 0x00190000). [ 25.101599] vboxpci: IOMMU not found (not registered) [ 27.046401] Bluetooth: BNEP (Ethernet Emulation) ver 1.3 [ 27.046405] Bluetooth: BNEP filters: protocol multicast [ 27.081903] Bluetooth: RFCOMM TTY layer initialized [ 27.081919] Bluetooth: RFCOMM socket layer initialized [ 27.081921] Bluetooth: RFCOMM ver 1.11 [ 28.752057] eth1: no IPv6 routers present [ 33.139443] init: plymouth-stop pre-start process (2005) terminated with status 1 [ 33.628053] EXT4-fs (sda2): re-mounted. Opts: errors=remount-ro,commit=0 [ 34.056830] EXT4-fs (sda1): re-mounted. Opts: commit=0 [ 34.217110] EXT4-fs (sda5): re-mounted. Opts: commit=0 [ 45.192742] wlan1: authenticate with 00:1a:c1:38:47:d4 (try 1) [ 45.196319] wlan1: authenticated [ 45.199717] wlan1: associate with 00:1a:c1:38:47:d4 (try 1) [ 45.202749] wlan1: RX AssocResp from 00:1a:c1:38:47:d4 (capab=0x431 status=0 aid=2) [ 45.202758] wlan1: associated [ 45.206342] ADDRCONF(NETDEV_CHANGE): wlan1: link becomes ready [ 45.206456] cfg80211: Calling CRDA for country: GB [ 45.213483] cfg80211: Updating information on frequency 2412 MHz for a 20 MHz width channel with regulatory rule: [ 45.213493] cfg80211: 2402000 KHz - 2482000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 45.213498] cfg80211: Updating information on frequency 2417 MHz for a 20 MHz width channel with regulatory rule: [ 45.213505] cfg80211: 2402000 KHz - 2482000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 45.213509] cfg80211: Updating information on frequency 2422 MHz for a 20 MHz width channel with regulatory rule: [ 45.213516] cfg80211: 2402000 KHz - 2482000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 45.213520] cfg80211: Updating information on frequency 2427 MHz for a 20 MHz width channel with regulatory rule: [ 45.213526] cfg80211: 2402000 KHz - 2482000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 45.213531] cfg80211: Updating information on frequency 2432 MHz for a 20 MHz width channel with regulatory rule: [ 45.213537] cfg80211: 2402000 KHz - 2482000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 45.213542] cfg80211: Updating information on frequency 2437 MHz for a 20 MHz width channel with regulatory rule: [ 45.213547] cfg80211: 2402000 KHz - 2482000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 45.213552] cfg80211: Updating information on frequency 2442 MHz for a 20 MHz width channel with regulatory rule: [ 45.213558] cfg80211: 2402000 KHz - 2482000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 45.213563] cfg80211: Updating information on frequency 2447 MHz for a 20 MHz width channel with regulatory rule: [ 45.213569] cfg80211: 2402000 KHz - 2482000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 45.213573] cfg80211: Updating information on frequency 2452 MHz for a 20 MHz width channel with regulatory rule: [ 45.213579] cfg80211: 2402000 KHz - 2482000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 45.213584] cfg80211: Updating information on frequency 2457 MHz for a 20 MHz width channel with regulatory rule: [ 45.213590] cfg80211: 2402000 KHz - 2482000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 45.213594] cfg80211: Updating information on frequency 2462 MHz for a 20 MHz width channel with regulatory rule: [ 45.213600] cfg80211: 2402000 KHz - 2482000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 45.213605] cfg80211: Updating information on frequency 2467 MHz for a 20 MHz width channel with regulatory rule: [ 45.213611] cfg80211: 2402000 KHz - 2482000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 45.213615] cfg80211: Updating information on frequency 2472 MHz for a 20 MHz width channel with regulatory rule: [ 45.213621] cfg80211: 2402000 KHz - 2482000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 45.213626] cfg80211: Disabling freq 5170 MHz [ 45.213630] cfg80211: Updating information on frequency 5180 MHz for a 20 MHz width channel with regulatory rule: [ 45.213636] cfg80211: 5170000 KHz - 5250000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 45.213640] cfg80211: Updating information on frequency 5190 MHz for a 20 MHz width channel with regulatory rule: [ 45.213646] cfg80211: 5170000 KHz - 5250000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 45.213651] cfg80211: Updating information on frequency 5200 MHz for a 20 MHz width channel with regulatory rule: [ 45.213657] cfg80211: 5170000 KHz - 5250000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 45.213662] cfg80211: Updating information on frequency 5210 MHz for a 20 MHz width channel with regulatory rule: [ 45.213667] cfg80211: 5170000 KHz - 5250000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 45.213672] cfg80211: Updating information on frequency 5220 MHz for a 20 MHz width channel with regulatory rule: [ 45.213678] cfg80211: 5170000 KHz - 5250000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 45.213683] cfg80211: Updating information on frequency 5230 MHz for a 20 MHz width channel with regulatory rule: [ 45.213688] cfg80211: 5170000 KHz - 5250000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 45.213693] cfg80211: Updating information on frequency 5240 MHz for a 20 MHz width channel with regulatory rule: [ 45.213699] cfg80211: 5170000 KHz - 5250000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 45.213704] cfg80211: Updating information on frequency 5260 MHz for a 20 MHz width channel with regulatory rule: [ 45.213710] cfg80211: 5250000 KHz - 5330000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 45.213714] cfg80211: Updating information on frequency 5280 MHz for a 20 MHz width channel with regulatory rule: [ 45.213720] cfg80211: 5250000 KHz - 5330000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 45.213725] cfg80211: Updating information on frequency 5300 MHz for a 20 MHz width channel with regulatory rule: [ 45.213731] cfg80211: 5250000 KHz - 5330000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 45.213736] cfg80211: Updating information on frequency 5320 MHz for a 20 MHz width channel with regulatory rule: [ 45.213742] cfg80211: 5250000 KHz - 5330000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 45.213746] cfg80211: Updating information on frequency 5500 MHz for a 20 MHz width channel with regulatory rule: [ 45.213752] cfg80211: 5490000 KHz - 5710000 KHz @ KHz), (N/A mBi, 2700 mBm) [ 45.213757] cfg80211: Updating information on frequency 5520 MHz for a 20 MHz width channel with regulatory rule: [ 45.213763] cfg80211: 5490000 KHz - 5710000 KHz @ KHz), (N/A mBi, 2700 mBm) [ 45.213768] cfg80211: Updating information on frequency 5540 MHz for a 20 MHz width channel with regulatory rule: [ 45.213774] cfg80211: 5490000 KHz - 5710000 KHz @ KHz), (N/A mBi, 2700 mBm) [ 45.213779] cfg80211: Updating information on frequency 5560 MHz for a 20 MHz width channel with regulatory rule: [ 45.213785] cfg80211: 5490000 KHz - 5710000 KHz @ KHz), (N/A mBi, 2700 mBm) [ 45.213789] cfg80211: Updating information on frequency 5580 MHz for a 20 MHz width channel with regulatory rule: [ 45.213795] cfg80211: 5490000 KHz - 5710000 KHz @ KHz), (N/A mBi, 2700 mBm) [ 45.213800] cfg80211: Updating information on frequency 5600 MHz for a 20 MHz width channel with regulatory rule: [ 45.213806] cfg80211: 5490000 KHz - 5710000 KHz @ KHz), (N/A mBi, 2700 mBm) [ 45.213810] cfg80211: Updating information on frequency 5620 MHz for a 20 MHz width channel with regulatory rule: [ 45.213816] cfg80211: 5490000 KHz - 5710000 KHz @ KHz), (N/A mBi, 2700 mBm) [ 45.213821] cfg80211: Updating information on frequency 5640 MHz for a 20 MHz width channel with regulatory rule: [ 45.213827] cfg80211: 5490000 KHz - 5710000 KHz @ KHz), (N/A mBi, 2700 mBm) [ 45.213831] cfg80211: Updating information on frequency 5660 MHz for a 20 MHz width channel with regulatory rule: [ 45.213837] cfg80211: 5490000 KHz - 5710000 KHz @ KHz), (N/A mBi, 2700 mBm) [ 45.213842] cfg80211: Updating information on frequency 5680 MHz for a 20 MHz width channel with regulatory rule: [ 45.213848] cfg80211: 5490000 KHz - 5710000 KHz @ KHz), (N/A mBi, 2700 mBm) [ 45.213852] cfg80211: Updating information on frequency 5700 MHz for a 20 MHz width channel with regulatory rule: [ 45.213858] cfg80211: 5490000 KHz - 5710000 KHz @ KHz), (N/A mBi, 2700 mBm) [ 45.213864] cfg80211: Regulatory domain changed to country: GB [ 45.213868] cfg80211: (start_freq - end_freq @ bandwidth), (max_antenna_gain, max_eirp) [ 45.213873] cfg80211: (2402000 KHz - 2482000 KHz @ 40000 KHz), (N/A, 2000 mBm) [ 45.213879] cfg80211: (5170000 KHz - 5250000 KHz @ 40000 KHz), (N/A, 2000 mBm) [ 45.213884] cfg80211: (5250000 KHz - 5330000 KHz @ 40000 KHz), (N/A, 2000 mBm) [ 45.213889] cfg80211: (5490000 KHz - 5710000 KHz @ 40000 KHz), (N/A, 2700 mBm) [ 52.640123] eth1: no IPv6 routers present [ 55.208282] wlan1: disassociating from 00:1a:c1:38:47:d4 by local choice (reason=3) [ 55.214021] cfg80211: All devices are disconnected, going to restore regulatory settings [ 55.214032] cfg80211: Restoring regulatory settings [ 55.214052] cfg80211: Calling CRDA to update world regulatory domain [ 55.214778] wlan1: deauthenticating from 00:1a:c1:38:47:d4 by local choice (reason=3) [ 55.221291] cfg80211: Ignoring regulatory request Set by core since the driver uses its own custom regulatory domain [ 55.221299] cfg80211: World regulatory domain updated: [ 55.221303] cfg80211: (start_freq - end_freq @ bandwidth), (max_antenna_gain, max_eirp) [ 55.221309] cfg80211: (2402000 KHz - 2472000 KHz @ 40000 KHz), (300 mBi, 2000 mBm) [ 55.221315] cfg80211: (2457000 KHz - 2482000 KHz @ 20000 KHz), (300 mBi, 2000 mBm) [ 55.221321] cfg80211: (2474000 KHz - 2494000 KHz @ 20000 KHz), (300 mBi, 2000 mBm) [ 55.221327] cfg80211: (5170000 KHz - 5250000 KHz @ 40000 KHz), (300 mBi, 2000 mBm) [ 55.221333] cfg80211: (5735000 KHz - 5835000 KHz @ 40000 KHz), (300 mBi, 2000 mBm) [ 55.392119] wlan1: no IPv6 routers present [ 58.763822] wlan1: authenticate with 00:1a:c1:38:47:d4 (try 1) [ 58.765582] wlan1: authenticated [ 58.766582] wlan1: associate with 00:1a:c1:38:47:d4 (try 1) [ 58.769972] wlan1: RX ReassocResp from 00:1a:c1:38:47:d4 (capab=0x431 status=0 aid=2) [ 58.769980] wlan1: associated [ 58.773587] cfg80211: Calling CRDA for country: GB [ 58.778304] cfg80211: Updating information on frequency 2412 MHz for a 20 MHz width channel with regulatory rule: [ 58.778310] cfg80211: 2402000 KHz - 2482000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 58.778314] cfg80211: Updating information on frequency 2417 MHz for a 20 MHz width channel with regulatory rule: [ 58.778318] cfg80211: 2402000 KHz - 2482000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 58.778321] cfg80211: Updating information on frequency 2422 MHz for a 20 MHz width channel with regulatory rule: [ 58.778325] cfg80211: 2402000 KHz - 2482000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 58.778328] cfg80211: Updating information on frequency 2427 MHz for a 20 MHz width channel with regulatory rule: [ 58.778332] cfg80211: 2402000 KHz - 2482000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 58.778335] cfg80211: Updating information on frequency 2432 MHz for a 20 MHz width channel with regulatory rule: [ 58.778340] cfg80211: 2402000 KHz - 2482000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 58.778343] cfg80211: Updating information on frequency 2437 MHz for a 20 MHz width channel with regulatory rule: [ 58.778347] cfg80211: 2402000 KHz - 2482000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 58.778350] cfg80211: Updating information on frequency 2442 MHz for a 20 MHz width channel with regulatory rule: [ 58.778354] cfg80211: 2402000 KHz - 2482000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 58.778357] cfg80211: Updating information on frequency 2447 MHz for a 20 MHz width channel with regulatory rule: [ 58.778361] cfg80211: 2402000 KHz - 2482000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 58.778364] cfg80211: Updating information on frequency 2452 MHz for a 20 MHz width channel with regulatory rule: [ 58.778368] cfg80211: 2402000 KHz - 2482000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 58.778371] cfg80211: Updating information on frequency 2457 MHz for a 20 MHz width channel with regulatory rule: [ 58.778375] cfg80211: 2402000 KHz - 2482000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 58.778378] cfg80211: Updating information on frequency 2462 MHz for a 20 MHz width channel with regulatory rule: [ 58.778382] cfg80211: 2402000 KHz - 2482000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 58.778385] cfg80211: Updating information on frequency 2467 MHz for a 20 MHz width channel with regulatory rule: [ 58.778389] cfg80211: 2402000 KHz - 2482000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 58.778392] cfg80211: Updating information on frequency 2472 MHz for a 20 MHz width channel with regulatory rule: [ 58.778396] cfg80211: 2402000 KHz - 2482000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 58.778399] cfg80211: Disabling freq 5170 MHz [ 58.778402] cfg80211: Updating information on frequency 5180 MHz for a 20 MHz width channel with regulatory rule: [ 58.778406] cfg80211: 5170000 KHz - 5250000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 58.778409] cfg80211: Updating information on frequency 5190 MHz for a 20 MHz width channel with regulatory rule: [ 58.778413] cfg80211: 5170000 KHz - 5250000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 58.778416] cfg80211: Updating information on frequency 5200 MHz for a 20 MHz width channel with regulatory rule: [ 58.778420] cfg80211: 5170000 KHz - 5250000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 58.778423] cfg80211: Updating information on frequency 5210 MHz for a 20 MHz width channel with regulatory rule: [ 58.778427] cfg80211: 5170000 KHz - 5250000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 58.778430] cfg80211: Updating information on frequency 5220 MHz for a 20 MHz width channel with regulatory rule: [ 58.778434] cfg80211: 5170000 KHz - 5250000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 58.778437] cfg80211: Updating information on frequency 5230 MHz for a 20 MHz width channel with regulatory rule: [ 58.778441] cfg80211: 5170000 KHz - 5250000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 58.778444] cfg80211: Updating information on frequency 5240 MHz for a 20 MHz width channel with regulatory rule: [ 58.778448] cfg80211: 5170000 KHz - 5250000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 58.778452] cfg80211: Updating information on frequency 5260 MHz for a 20 MHz width channel with regulatory rule: [ 58.778456] cfg80211: 5250000 KHz - 5330000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 58.778459] cfg80211: Updating information on frequency 5280 MHz for a 20 MHz width channel with regulatory rule: [ 58.778463] cfg80211: 5250000 KHz - 5330000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 58.778466] cfg80211: Updating information on frequency 5300 MHz for a 20 MHz width channel with regulatory rule: [ 58.778470] cfg80211: 5250000 KHz - 5330000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 58.778473] cfg80211: Updating information on frequency 5320 MHz for a 20 MHz width channel with regulatory rule: [ 58.778477] cfg80211: 5250000 KHz - 5330000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 58.778480] cfg80211: Updating information on frequency 5500 MHz for a 20 MHz width channel with regulatory rule: [ 58.778484] cfg80211: 5490000 KHz - 5710000 KHz @ KHz), (N/A mBi, 2700 mBm) [ 58.778487] cfg80211: Updating information on frequency 5520 MHz for a 20 MHz width channel with regulatory rule: [ 58.778491] cfg80211: 5490000 KHz - 5710000 KHz @ KHz), (N/A mBi, 2700 mBm) [ 58.778494] cfg80211: Updating information on frequency 5540 MHz for a 20 MHz width channel with regulatory rule: [ 58.778498] cfg80211: 5490000 KHz - 5710000 KHz @ KHz), (N/A mBi, 2700 mBm) [ 58.778501] cfg80211: Updating information on frequency 5560 MHz for a 20 MHz width channel with regulatory rule: [ 58.778505] cfg80211: 5490000 KHz - 5710000 KHz @ KHz), (N/A mBi, 2700 mBm) [ 58.778508] cfg80211: Updating information on frequency 5580 MHz for a 20 MHz width channel with regulatory rule: [ 58.778512] cfg80211: 5490000 KHz - 5710000 KHz @ KHz), (N/A mBi, 2700 mBm) [ 58.778515] cfg80211: Updating information on frequency 5600 MHz for a 20 MHz width channel with regulatory rule: [ 58.778519] cfg80211: 5490000 KHz - 5710000 KHz @ KHz), (N/A mBi, 2700 mBm) [ 58.778522] cfg80211: Updating information on frequency 5620 MHz for a 20 MHz width channel with regulatory rule: [ 58.778526] cfg80211: 5490000 KHz - 5710000 KHz @ KHz), (N/A mBi, 2700 mBm) [ 58.778529] cfg80211: Updating information on frequency 5640 MHz for a 20 MHz width channel with regulatory rule: [ 58.778533] cfg80211: 5490000 KHz - 5710000 KHz @ KHz), (N/A mBi, 2700 mBm) [ 58.778536] cfg80211: Updating information on frequency 5660 MHz for a 20 MHz width channel with regulatory rule: [ 58.778540] cfg80211: 5490000 KHz - 5710000 KHz @ KHz), (N/A mBi, 2700 mBm) [ 58.778543] cfg80211: Updating information on frequency 5680 MHz for a 20 MHz width channel with regulatory rule: [ 58.778547] cfg80211: 5490000 KHz - 5710000 KHz @ KHz), (N/A mBi, 2700 mBm) [ 58.778550] cfg80211: Updating information on frequency 5700 MHz for a 20 MHz width channel with regulatory rule: [ 58.778554] cfg80211: 5490000 KHz - 5710000 KHz @ KHz), (N/A mBi, 2700 mBm) [ 58.778558] cfg80211: Regulatory domain changed to country: GB [ 58.778560] cfg80211: (start_freq - end_freq @ bandwidth), (max_antenna_gain, max_eirp) [ 58.778564] cfg80211: (2402000 KHz - 2482000 KHz @ 40000 KHz), (N/A, 2000 mBm) [ 58.778568] cfg80211: (5170000 KHz - 5250000 KHz @ 40000 KHz), (N/A, 2000 mBm) [ 58.778571] cfg80211: (5250000 KHz - 5330000 KHz @ 40000 KHz), (N/A, 2000 mBm) [ 58.778575] cfg80211: (5490000 KHz - 5710000 KHz @ 40000 KHz), (N/A, 2700 mBm) [ 70.176124] wlan1: no IPv6 routers present [ 75.152080] eth1: no IPv6 routers present [ 98.736094] eth1: no IPv6 routers present [ 648.357292] ecryptfs_mount: kern_path() failed [ 648.388155] Reading sb failed; rc = [-2] [ 670.016019] eth1: no IPv6 routers present [ 688.176048] eth1: no IPv6 routers present [ 711.096140] eth1: no IPv6 routers present fwts-test/arg-klog-0001/test-0001.sh000077500000000000000000000006561231470457100170060ustar00rootroot00000000000000#!/bin/bash # TEST="Test --klog option" NAME=test-0001.sh TMPLOG=$TMP/klog.log.$$ $FWTS --log-format="%line %owner " -w 80 -j $FWTSTESTDIR/../data --klog=$FWTSTESTDIR/arg-klog-0001/klog.txt klog - | grep "^[0-9]*[ ]*klog" | cut -c7- > $TMPLOG diff $TMPLOG $FWTSTESTDIR/arg-klog-0001/klog-0001.log >> $FAILURE_LOG ret=$? if [ $ret -eq 0 ]; then echo PASSED: $TEST, $NAME else echo FAILED: $TEST, $NAME fi rm $TMPLOG exit $ret fwts-test/arg-klog-0001/test-0002.sh000077500000000000000000000006461231470457100170060ustar00rootroot00000000000000#!/bin/bash # TEST="Test -k option" NAME=test-0001.sh TMPLOG=$TMP/klog.log.$$ $FWTS --log-format="%line %owner " -w 80 -j $FWTSTESTDIR/../data -k $FWTSTESTDIR/arg-klog-0001/klog.txt klog - | grep "^[0-9]*[ ]*klog" | cut -c7- > $TMPLOG diff $TMPLOG $FWTSTESTDIR/arg-klog-0001/klog-0001.log >> $FAILURE_LOG ret=$? if [ $ret -eq 0 ]; then echo PASSED: $TEST, $NAME else echo FAILED: $TEST, $NAME fi rm $TMPLOG exit $ret fwts-test/arg-log-fields-0001/000077500000000000000000000000001231470457100161745ustar00rootroot00000000000000fwts-test/arg-log-fields-0001/logfields-0001.log000066400000000000000000000001161231470457100212230ustar00rootroot00000000000000Available fields: RES,ERR,WRN,DBG,INF,SUM,SEP,NLN,ADV,HED,PAS,FAL,SKP,ABT,INO fwts-test/arg-log-fields-0001/test-0001.sh000077500000000000000000000004711231470457100200720ustar00rootroot00000000000000#!/bin/bash # TEST="Test --log-fields" NAME=test-0001.sh TMPLOG=$TMP/logfields.log.$$ $FWTS --log-fields > $TMPLOG diff $TMPLOG $FWTSTESTDIR/arg-log-fields-0001/logfields-0001.log >> $FAILURE_LOG ret=$? if [ $ret -eq 0 ]; then echo PASSED: $TEST, $NAME else echo FAILED: $TEST, $NAME fi rm $TMPLOG exit $ret fwts-test/arg-log-format-0001/000077500000000000000000000000001231470457100162165ustar00rootroot00000000000000fwts-test/arg-log-format-0001/.klog-0001.log.swp000066400000000000000000000400001231470457100211130ustar00rootroot00000000000000b0VIM 7.3”—Rs†IWlexicalkeelung~lexical/git2/fwts-test/arg-log-format-0001/klog-0001.log 3210#"! Utp6ÿÿÿÿÿÿÿÿ57þÿÿÿÿÿÿÿ6lýÿÿÿÿÿÿÿ6¢üÿÿÿÿÿÿÿ6Øad6±},Ý¥Tµ ƒ X à r & Õ … 8 ô ´ ‰ Q  » l " Ò›p$Ôˆ8ì¢S³c8ü¯`Í¢Q »lÏdklog (00072) <16/05/12> FAL H: FAILED [HIGH] KlogAcpiTwoFacs: Test 1,klog (00071) <16/05/12> NLN : klog (00070) <16/05/12> ADV : disable ACPI support.klog (00069) <16/05/12> ADV : found, the ACPI driver has had toklog (00068) <16/05/12> ADV : RSDT and XSDT. Since this could not beklog (00067) <16/05/12> ADV : provides the physical address of theklog (00066) <16/05/12> ADV : Description Pointer). This structureklog (00065) <16/05/12> ADV : provide an RSDP (Root Systemklog (00064) <16/05/12> ADV : ADVICE: An ACPI compatible system mustklog (00063) <16/05/12> NLN : klog (00062) <16/05/12> FAL C: (20090903/tbxfroot-219)klog (00061) <16/05/12> FAL C: ACPI Error: A valid RSDP was not foundklog (00060) <16/05/12> FAL C: CRITICAL Kernel message: [ 0.000000]klog (00059) <16/05/12> FAL C: KlogAcpiValidRsdpNotFound: Test 1,klog (00058) <16/05/12> FAL C: FAILED [CRITICAL]klog (00057) <16/05/12> NLN : klog (00056) <16/05/12> ADV : accordance to the ACPI specification.klog (00055) <16/05/12> ADV : bit pointer even though this is not inklog (00054) <16/05/12> ADV : opt for this in preference to the 64klog (00053) <16/05/12> ADV : pointer exists, then the kernel willklog (00052) <16/05/12> ADV : incorrect. If a non-null 32 bitklog (00051) <16/05/12> ADV : it suggests either one of them isklog (00050) <16/05/12> ADV : Because these pointers are different,klog (00049) <16/05/12> ADV : a 64 bit Generic Address pointer.klog (00048) <16/05/12> ADV : mismatch between a 32 bit pointer andklog (00047) <16/05/12> ADV : ADVICE: The FADT table contains aklog (00046) <16/05/12> NLN : klog (00045) <16/05/12> FAL H: /tbfadt-427)klog (00044) <16/05/12> FAL H: /0000000000008028, using 32 (20090903klog (00043) <16/05/12> FAL H: mismatch in Gpe0Block: 00008018klog (00042) <16/05/12> FAL H: 0.000000] ACPI Error: 32/64X addressklog (00041) <16/05/12> FAL H: Test 1, HIGH Kernel message: [klog (00040) <16/05/12> FAL H: KlogAcpi32Bit64BitAddressMismatch:klog (00039) <16/05/12> FAL H: FAILED [HIGH]klog (00038) <16/05/12> NLN : klog (00037) <16/05/12> ADV : acpi_apic_instance=N.klog (00036) <16/05/12> ADV : select the Nth MADT usingklog (00035) <16/05/12> ADV : However, one can override this andklog (00034) <16/05/12> ADV : will by default select the first one.klog (00033) <16/05/12> ADV : should only be one MADT and the kernelklog (00032) <16/05/12> ADV : have the "APIC" signature). Thereklog (00031) <16/05/12> ADV : Description Table (MADT) (these tablesklog (00030) <16/05/12> ADV : than one ACPI Multiple APICklog (00029) <16/05/12> ADV : ADVICE: The kernel has detected moreklog (00028) <16/05/12> NLN : klog (00027) <16/05/12> FAL H: using 0klog (00026) <16/05/12> FAL H: BIOS bug: multiple APIC/MADT found,klog (00025) <16/05/12> FAL H: HIGH Kernel message: [ 0.000000] ACPI:klog (00024) <16/05/12> FAL H: KlogAcpiMultipleApicMadtFound: Test 1,klog (00023) <16/05/12> FAL H: FAILED [HIGH]klog (00022) <16/05/12> INF : Test 1 of 1: Kernel log error check.klog (00021) <16/05/12> SEP : --------------------------------------klog (00020) <16/05/12> HED : warnings.klog (00019) <16/05/12> HED : klog: Scan kernel log for errors andadL°…4èLKklog (00293) <16/05/12> SEP : ======================================klog (00292) <16/05/12> SUM : aborted, 0 skipped, 0 info only.klog (00291) <16/05/12> SUM : 0 passed, 18 failed, 0 warning, 0klog (00290) <16/05/12> SEP : ======================================klog (00289) <16/05/12> NLN : klog (00288) <16/05/12> INF : Found 18 unique errors in kernel log.fwts-test/arg-log-format-0001/klog-0001.log000066400000000000000000000460021231470457100202350ustar00rootroot00000000000000klog (00021) <10/02/14> HED : klog: Scan kernel log for errors and klog (00022) <10/02/14> HED : warnings. klog (00023) <10/02/14> SEP : -------------------------------------- klog (00024) <10/02/14> INF : Test 1 of 1: Kernel log error check. klog (00025) <10/02/14> FAL H: FAILED [HIGH] klog (00026) <10/02/14> FAL H: KlogAcpiMultipleApicMadtFound: Test 1, klog (00027) <10/02/14> FAL H: HIGH Kernel message: [ 0.000000] ACPI: klog (00028) <10/02/14> FAL H: BIOS bug: multiple APIC/MADT found, klog (00029) <10/02/14> FAL H: using 0 klog (00030) <10/02/14> NLN : klog (00031) <10/02/14> ADV : ADVICE: The kernel has detected more klog (00032) <10/02/14> ADV : than one ACPI Multiple APIC klog (00033) <10/02/14> ADV : Description Table (MADT) (these tables klog (00034) <10/02/14> ADV : have the "APIC" signature). There klog (00035) <10/02/14> ADV : should only be one MADT and the kernel klog (00036) <10/02/14> ADV : will by default select the first one. klog (00037) <10/02/14> ADV : However, one can override this and klog (00038) <10/02/14> ADV : select the Nth MADT using klog (00039) <10/02/14> ADV : acpi_apic_instance=N. klog (00040) <10/02/14> NLN : klog (00041) <10/02/14> FAL H: FAILED [HIGH] klog (00042) <10/02/14> FAL H: KlogAcpi32Bit64BitAddressMismatch: klog (00043) <10/02/14> FAL H: Test 1, HIGH Kernel message: [ klog (00044) <10/02/14> FAL H: 0.000000] ACPI Error: 32/64X address klog (00045) <10/02/14> FAL H: mismatch in Gpe0Block: 00008018 klog (00046) <10/02/14> FAL H: /0000000000008028, using 32 (20090903 klog (00047) <10/02/14> FAL H: /tbfadt-427) klog (00048) <10/02/14> NLN : klog (00049) <10/02/14> ADV : ADVICE: The FADT table contains a klog (00050) <10/02/14> ADV : mismatch between a 32 bit pointer and klog (00051) <10/02/14> ADV : a 64 bit Generic Address pointer. klog (00052) <10/02/14> ADV : Because these pointers are different, klog (00053) <10/02/14> ADV : it suggests either one of them is klog (00054) <10/02/14> ADV : incorrect. If a non-null 32 bit klog (00055) <10/02/14> ADV : pointer exists, then the kernel will klog (00056) <10/02/14> ADV : opt for this in preference to the 64 klog (00057) <10/02/14> ADV : bit pointer even though this is not in klog (00058) <10/02/14> ADV : accordance to the ACPI specification. klog (00059) <10/02/14> NLN : klog (00060) <10/02/14> FAL C: FAILED [CRITICAL] klog (00061) <10/02/14> FAL C: KlogAcpiValidRsdpNotFound: Test 1, klog (00062) <10/02/14> FAL C: CRITICAL Kernel message: [ 0.000000] klog (00063) <10/02/14> FAL C: ACPI Error: A valid RSDP was not found klog (00064) <10/02/14> FAL C: (20090903/tbxfroot-219) klog (00065) <10/02/14> NLN : klog (00066) <10/02/14> ADV : ADVICE: An ACPI compatible system must klog (00067) <10/02/14> ADV : provide an RSDP (Root System klog (00068) <10/02/14> ADV : Description Pointer). This structure klog (00069) <10/02/14> ADV : provides the physical address of the klog (00070) <10/02/14> ADV : RSDT and XSDT. Since this could not be klog (00071) <10/02/14> ADV : found, the ACPI driver has had to klog (00072) <10/02/14> ADV : disable ACPI support. klog (00073) <10/02/14> NLN : klog (00074) <10/02/14> FAL H: FAILED [HIGH] KlogAcpiTwoFacs: Test 1, klog (00075) <10/02/14> FAL H: HIGH Kernel message: [ 0.000000] ACPI klog (00076) <10/02/14> FAL H: Warning: 32/64 FACS address mismatch klog (00077) <10/02/14> FAL H: in FADT - two FACS tables! (20090903 klog (00078) <10/02/14> FAL H: /tbfadt-369) klog (00079) <10/02/14> NLN : klog (00080) <10/02/14> ADV : ADVICE: The FADT table contains a klog (00081) <10/02/14> ADV : mismatch between the 32 bit pointer klog (00082) <10/02/14> ADV : (FIRMWARE_CTRL) and 64 bit pointer klog (00083) <10/02/14> ADV : (X_FIRMWARE_CTRL) pointer to the FACS klog (00084) <10/02/14> ADV : table. Section 5.2.9 of version 4.0a klog (00085) <10/02/14> ADV : of the ACPI specification states that klog (00086) <10/02/14> ADV : X_FIRMWARE_CTRL should be zero if klog (00087) <10/02/14> ADV : FIRMWARE_CTRL is defined, or klog (00088) <10/02/14> ADV : FIRMWARE_CTRL should be zero if klog (00089) <10/02/14> ADV : X_FIRMWARE_CTRL is zero. With two klog (00090) <10/02/14> ADV : different pointers defined, the kernel klog (00091) <10/02/14> ADV : has to make a choice, and opts for the klog (00092) <10/02/14> ADV : 32 bit pointer. Because these pointers klog (00093) <10/02/14> ADV : are different, it suggests either one klog (00094) <10/02/14> ADV : of them is incorrect, or different 32 klog (00095) <10/02/14> ADV : bit and 64 bit FACS tables are present klog (00096) <10/02/14> ADV : in your system, which is NOT complaint klog (00097) <10/02/14> ADV : with the ACPI specification. The klog (00098) <10/02/14> ADV : kernel has to make a choice and opts klog (00099) <10/02/14> ADV : for the 32 bit FIRMWARE_CTRL. klog (00100) <10/02/14> NLN : klog (00101) <10/02/14> FAL H: FAILED [HIGH] klog (00102) <10/02/14> FAL H: KlogAcpi32Bit64BitAddressMismatchInFadt klog (00103) <10/02/14> FAL H: : Test 1, HIGH Kernel message: [ klog (00104) <10/02/14> FAL H: 0.000000] ACPI Warning: 32/64X FACS klog (00105) <10/02/14> FAL H: address mismatch in FADT - DEF2DF40 klog (00106) <10/02/14> FAL H: /00000000DEF30D40, using 32 (20090903 klog (00107) <10/02/14> FAL H: /tbfadt-486) klog (00108) <10/02/14> NLN : klog (00109) <10/02/14> ADV : ADVICE: The FADT table contains klog (00110) <10/02/14> ADV : Generic Address Structure that has a klog (00111) <10/02/14> ADV : mismatch between the 32 bit and 64 bit klog (00112) <10/02/14> ADV : versions of an address. This should be klog (00113) <10/02/14> ADV : fixed so there are no mismatches. klog (00114) <10/02/14> NLN : klog (00115) <10/02/14> FAL H: FAILED [HIGH] klog (00116) <10/02/14> FAL H: KlogAcpi32Bit64BitAddressMismatchInFadt klog (00117) <10/02/14> FAL H: : Test 1, HIGH Kernel message: [ klog (00118) <10/02/14> FAL H: 0.000000] ACPI Warning: 32/64X length klog (00119) <10/02/14> FAL H: mismatch in Gpe1Block: 0/32 20090521 klog (00120) <10/02/14> FAL H: tbfadt-527 klog (00121) <10/02/14> NLN : klog (00122) <10/02/14> ADV : ADVICE: The FADT table contains klog (00123) <10/02/14> ADV : Generic Address Structure that has a klog (00124) <10/02/14> ADV : mismatch between the 32 bit and 64 bit klog (00125) <10/02/14> ADV : versions of an address. This should be klog (00126) <10/02/14> ADV : fixed so there are no mismatches. klog (00127) <10/02/14> NLN : klog (00128) <10/02/14> FAL H: FAILED [HIGH] KlogAcpiBadAmlCode: Test klog (00129) <10/02/14> FAL H: 1, HIGH Kernel message: [ 0.000000] klog (00130) <10/02/14> FAL H: ACPI Warning: BIOS XSDT has NULL entry klog (00131) <10/02/14> FAL H: , using RSDT (20110112/tbutils-663) klog (00132) <10/02/14> NLN : klog (00133) <10/02/14> ADV : ADVICE: ACPI AML intepreter has found klog (00134) <10/02/14> ADV : some non-conforming AML code. This klog (00135) <10/02/14> ADV : should be investigated and fixed. klog (00136) <10/02/14> NLN : klog (00137) <10/02/14> FAL H: FAILED [HIGH] klog (00138) <10/02/14> FAL H: KlogAcpiFadtInvalidLength: Test 1, klog (00139) <10/02/14> FAL H: HIGH Kernel message: [ 0.000000] ACPI klog (00140) <10/02/14> FAL H: Warning: Invalid length for klog (00141) <10/02/14> FAL H: Pm1aControlBlock: 32, using default 16 klog (00142) <10/02/14> FAL H: (20090903/tbfadt-607) klog (00143) <10/02/14> NLN : klog (00144) <10/02/14> ADV : ADVICE: This item in the FADT is the klog (00145) <10/02/14> ADV : incorrect length. Should be corrected. klog (00146) <10/02/14> NLN : klog (00147) <10/02/14> FAL H: FAILED [HIGH] klog (00148) <10/02/14> FAL H: KlogAcpiOptionalFieldZeroAddressOrLength klog (00149) <10/02/14> FAL H: : Test 1, HIGH Kernel message: [ klog (00150) <10/02/14> FAL H: 0.000000] ACPI Warning: Optional field klog (00151) <10/02/14> FAL H: Gpe1Block has zero address or length: klog (00152) <10/02/14> FAL H: 000000000000102C/0 20090521 tbfadt-558 klog (00153) <10/02/14> NLN : klog (00154) <10/02/14> ADV : ADVICE: An ACPI table contains Generic klog (00155) <10/02/14> ADV : Address Structure that has an address klog (00156) <10/02/14> ADV : that is incorrectly set to zero, or a klog (00157) <10/02/14> ADV : zero length. This needs to be fixed. klog (00158) <10/02/14> NLN : klog (00159) <10/02/14> FAL H: FAILED [HIGH] klog (00160) <10/02/14> FAL H: KlogAcpiOptionalFieldZeroAddressOrLength klog (00161) <10/02/14> FAL H: : Test 1, HIGH Kernel message: [ klog (00162) <10/02/14> FAL H: 0.000000] ACPI Warning: Optional field klog (00163) <10/02/14> FAL H: Pm2ControlBlock has zero address or klog (00164) <10/02/14> FAL H: length: 0000000000000000/1 20090521 klog (00165) <10/02/14> FAL H: tbfadt-558 klog (00166) <10/02/14> NLN : klog (00167) <10/02/14> ADV : ADVICE: An ACPI table contains Generic klog (00168) <10/02/14> ADV : Address Structure that has an address klog (00169) <10/02/14> ADV : that is incorrectly set to zero, or a klog (00170) <10/02/14> ADV : zero length. This needs to be fixed. klog (00171) <10/02/14> NLN : klog (00172) <10/02/14> FAL H: FAILED [HIGH] klog (00173) <10/02/14> FAL H: KlogAcpiOptionalFieldZeroAddressOrLength klog (00174) <10/02/14> FAL H: : Test 1, HIGH Kernel message: [ klog (00175) <10/02/14> FAL H: 0.000000] ACPI Warning (tbfadt-0460): klog (00176) <10/02/14> FAL H: Optional field "Gpe1Block" has zero klog (00177) <10/02/14> FAL H: address or length: 000000000000102C/0 klog (00178) <10/02/14> FAL H: [20080926] klog (00179) <10/02/14> NLN : klog (00180) <10/02/14> ADV : ADVICE: An ACPI table contains Generic klog (00181) <10/02/14> ADV : Address Structure that has an address klog (00182) <10/02/14> ADV : that is incorrectly set to zero, or a klog (00183) <10/02/14> ADV : zero length. This needs to be fixed. klog (00184) <10/02/14> NLN : klog (00185) <10/02/14> FAL M: FAILED [MEDIUM] klog (00186) <10/02/14> FAL M: KlogBiosMtrrIncorrectMask: Test 1, klog (00187) <10/02/14> FAL M: MEDIUM Kernel message: [ 0.000000] klog (00188) <10/02/14> FAL M: mtrr: your BIOS has configured an klog (00189) <10/02/14> FAL M: incorrect mask, fixing it. klog (00190) <10/02/14> NLN : klog (00191) <10/02/14> ADV : ADVICE: The Memory Type Range klog (00192) <10/02/14> ADV : Registers (MTRRs) which define memory klog (00193) <10/02/14> ADV : caching policy are misconfigued by the klog (00194) <10/02/14> ADV : BIOS. In this case, the mask is klog (00195) <10/02/14> ADV : incorrectly set and the kernel has klog (00196) <10/02/14> ADV : detected this and worked around the klog (00197) <10/02/14> ADV : firmware bug. klog (00198) <10/02/14> NLN : klog (00199) <10/02/14> FAL C: FAILED [CRITICAL] klog (00200) <10/02/14> FAL C: KlogBiosCpuMtrrMisconfigured: Test 1, klog (00201) <10/02/14> FAL C: CRITICAL Kernel message: [ 0.000000] klog (00202) <10/02/14> FAL C: WARNING: BIOS bug: CPU MTRRs don't klog (00203) <10/02/14> FAL C: cover all of memory, losing 1408MB of klog (00204) <10/02/14> FAL C: RAM. klog (00205) <10/02/14> NLN : klog (00206) <10/02/14> ADV : ADVICE: The Memory Type Range klog (00207) <10/02/14> ADV : Registers (MTRRs) which define memory klog (00208) <10/02/14> ADV : caching policy are misconfigued by the klog (00209) <10/02/14> ADV : BIOS and don't appear to cover all klog (00210) <10/02/14> ADV : available physical memory. The kernel klog (00211) <10/02/14> ADV : has detected this and has reduced the klog (00212) <10/02/14> ADV : amount of memory available to be safe. klog (00213) <10/02/14> ADV : Either check that the BIOS memory klog (00214) <10/02/14> ADV : caching options are set correctly or klog (00215) <10/02/14> ADV : contact your BIOS vendor to get this klog (00216) <10/02/14> ADV : fixed. klog (00217) <10/02/14> NLN : klog (00218) <10/02/14> FAL H: FAILED [HIGH] KlogAcpiUnknownAmlOpcode klog (00219) <10/02/14> FAL H: : Test 1, HIGH Kernel message: [ klog (00220) <10/02/14> FAL H: 0.022719] ACPI Error: Found unknown klog (00221) <10/02/14> FAL H: opcode 0xFD at AML address f7ffe14c klog (00222) <10/02/14> FAL H: offset 0xE8, ignoring (20110112 klog (00223) <10/02/14> FAL H: /psloop-141) klog (00224) <10/02/14> NLN : klog (00225) <10/02/14> ADV : ADVICE: ACPI execution run time error: klog (00226) <10/02/14> ADV : The ACPI interpreter has reached an klog (00227) <10/02/14> ADV : opcode that is unknown, this normally klog (00228) <10/02/14> ADV : is a bug in the underlying AML code klog (00229) <10/02/14> ADV : either because of badly written AML klog (00230) <10/02/14> ADV : code or the compiler has produced code klog (00231) <10/02/14> ADV : that is incorrect or the ACPI klog (00232) <10/02/14> ADV : interpreter does not support this klog (00233) <10/02/14> ADV : valid opcode. klog (00234) <10/02/14> NLN : klog (00235) <10/02/14> FAL C: FAILED [CRITICAL] klog (00236) <10/02/14> FAL C: KlogAcpiDetectedUnsupportedOpCode: klog (00237) <10/02/14> FAL C: Test 1, CRITICAL Kernel message: [ klog (00238) <10/02/14> FAL C: 0.025463] ACPI Warning: Detected an klog (00239) <10/02/14> FAL C: unsupported executable opcode at klog (00240) <10/02/14> FAL C: module-level: [0x007B] at table offset klog (00241) <10/02/14> FAL C: 0x00C3 (20110112/psloop-526) klog (00242) <10/02/14> NLN : klog (00243) <10/02/14> ADV : ADVICE: An illegal AML opcode has been klog (00244) <10/02/14> ADV : found and is ignored. This indicates klog (00245) <10/02/14> ADV : either badly compiled code or opcode klog (00246) <10/02/14> ADV : corruption in the DSDT or SSDT tables klog (00247) <10/02/14> ADV : or a bug in the ACPI execution engine. klog (00248) <10/02/14> ADV : Recommend disassembing using iasl to klog (00249) <10/02/14> ADV : find any offending code. klog (00250) <10/02/14> NLN : klog (00251) <10/02/14> FAL H: FAILED [HIGH] klog (00252) <10/02/14> FAL H: KlogAcpiObjectAlreadyExists: Test 1, klog (00253) <10/02/14> FAL H: HIGH Kernel message: [ 0.034090] ACPI klog (00254) <10/02/14> FAL H: Error: Method parse/execution failed klog (00255) <10/02/14> FAL H: [_SB_.PCI0._OSC] (Node ee025630), klog (00256) <10/02/14> FAL H: AE_ALREADY_EXISTS (20110112 klog (00257) <10/02/14> FAL H: /psparse-536) klog (00258) <10/02/14> NLN : klog (00259) <10/02/14> ADV : ADVICE: This is a bug picked up by the klog (00260) <10/02/14> ADV : kernel, but as yet, the firmware test klog (00261) <10/02/14> ADV : suite has no diagnostic advice for klog (00262) <10/02/14> ADV : this particular problem. klog (00263) <10/02/14> NLN : klog (00264) <10/02/14> FAL H: FAILED [HIGH] KlogAcpiFirmwareError: klog (00265) <10/02/14> FAL H: Test 1, HIGH Kernel message: [ klog (00266) <10/02/14> FAL H: 0.040119] [Firmware Bug]: the BIOS has klog (00267) <10/02/14> FAL H: corrupted hw-PMU resources (MSR 186 is klog (00268) <10/02/14> FAL H: 400000) klog (00269) <10/02/14> NLN : klog (00270) <10/02/14> ADV : ADVICE: The kernel has detected a klog (00271) <10/02/14> ADV : Firmware bug in the BIOS or ACPI which klog (00272) <10/02/14> ADV : needs investigating and fixing. klog (00273) <10/02/14> NLN : klog (00274) <10/02/14> FAL C: FAILED [CRITICAL] klog (00275) <10/02/14> FAL C: KlogAcpiDetectedUnsupportedOpCode: klog (00276) <10/02/14> FAL C: Test 1, CRITICAL Kernel message: [ klog (00277) <10/02/14> FAL C: 0.042222] ACPI Warning: Detected an klog (00278) <10/02/14> FAL C: unsupported executable opcode at klog (00279) <10/02/14> FAL C: module-level: [0x0070] at table offset klog (00280) <10/02/14> FAL C: 0x2366 (20100121/psloop-526) klog (00281) <10/02/14> NLN : klog (00282) <10/02/14> ADV : ADVICE: An illegal AML opcode has been klog (00283) <10/02/14> ADV : found and is ignored. This indicates klog (00284) <10/02/14> ADV : either badly compiled code or opcode klog (00285) <10/02/14> ADV : corruption in the DSDT or SSDT tables klog (00286) <10/02/14> ADV : or a bug in the ACPI execution engine. klog (00287) <10/02/14> ADV : Recommend disassembing using iasl to klog (00288) <10/02/14> ADV : find any offending code. klog (00289) <10/02/14> NLN : klog (00290) <10/02/14> INF : Found 18 unique errors in kernel log. klog (00291) <10/02/14> NLN : klog (00292) <10/02/14> SEP : ====================================== klog (00293) <10/02/14> SUM : 0 passed, 18 failed, 0 warning, 0 klog (00294) <10/02/14> SUM : aborted, 0 skipped, 0 info only. klog (00295) <10/02/14> SEP : ====================================== fwts-test/arg-log-format-0001/klog-0002.log000066400000000000000000000255341231470457100202450ustar00rootroot00000000000000klog : klog: Scan kernel log for errors and warnings. klog : --------------------------------------------------------------- klog : Test 1 of 1: Kernel log error check. klog : FAILED [HIGH] KlogAcpiMultipleApicMadtFound: Test 1, HIGH klog : Kernel message: [ 0.000000] ACPI: BIOS bug: multiple APIC/MADT klog : found, using 0 klog : klog : ADVICE: The kernel has detected more than one ACPI Multiple klog : APIC Description Table (MADT) (these tables have the "APIC" klog : signature). There should only be one MADT and the kernel will klog : by default select the first one. However, one can override this klog : and select the Nth MADT using acpi_apic_instance=N. klog : klog : FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatch: Test 1, HIGH klog : Kernel message: [ 0.000000] ACPI Error: 32/64X address mismatch klog : in Gpe0Block: 00008018/0000000000008028, using 32 (20090903 klog : /tbfadt-427) klog : klog : ADVICE: The FADT table contains a mismatch between a 32 bit klog : pointer and a 64 bit Generic Address pointer. Because these klog : pointers are different, it suggests either one of them is klog : incorrect. If a non-null 32 bit pointer exists, then the kernel klog : will opt for this in preference to the 64 bit pointer even klog : though this is not in accordance to the ACPI specification. klog : klog : FAILED [CRITICAL] KlogAcpiValidRsdpNotFound: Test 1, CRITICAL klog : Kernel message: [ 0.000000] ACPI Error: A valid RSDP was not klog : found (20090903/tbxfroot-219) klog : klog : ADVICE: An ACPI compatible system must provide an RSDP (Root klog : System Description Pointer). This structure provides the klog : physical address of the RSDT and XSDT. Since this could not be klog : found, the ACPI driver has had to disable ACPI support. klog : klog : FAILED [HIGH] KlogAcpiTwoFacs: Test 1, HIGH Kernel message: [ klog : 0.000000] ACPI Warning: 32/64 FACS address mismatch in FADT - klog : two FACS tables! (20090903/tbfadt-369) klog : klog : ADVICE: The FADT table contains a mismatch between the 32 bit klog : pointer (FIRMWARE_CTRL) and 64 bit pointer (X_FIRMWARE_CTRL) klog : pointer to the FACS table. Section 5.2.9 of version 4.0a of the klog : ACPI specification states that X_FIRMWARE_CTRL should be zero klog : if FIRMWARE_CTRL is defined, or FIRMWARE_CTRL should be zero if klog : X_FIRMWARE_CTRL is zero. With two different pointers defined, klog : the kernel has to make a choice, and opts for the 32 bit klog : pointer. Because these pointers are different, it suggests klog : either one of them is incorrect, or different 32 bit and 64 bit klog : FACS tables are present in your system, which is NOT complaint klog : with the ACPI specification. The kernel has to make a choice klog : and opts for the 32 bit FIRMWARE_CTRL. klog : klog : FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: Test 1, klog : HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X FACS klog : address mismatch in FADT - DEF2DF40/00000000DEF30D40, using 32 klog : (20090903/tbfadt-486) klog : klog : ADVICE: The FADT table contains Generic Address Structure that klog : has a mismatch between the 32 bit and 64 bit versions of an klog : address. This should be fixed so there are no mismatches. klog : klog : FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: Test 1, klog : HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X length klog : mismatch in Gpe1Block: 0/32 20090521 tbfadt-527 klog : klog : ADVICE: The FADT table contains Generic Address Structure that klog : has a mismatch between the 32 bit and 64 bit versions of an klog : address. This should be fixed so there are no mismatches. klog : klog : FAILED [HIGH] KlogAcpiBadAmlCode: Test 1, HIGH Kernel message: klog : [ 0.000000] ACPI Warning: BIOS XSDT has NULL entry, using RSDT klog : (20110112/tbutils-663) klog : klog : ADVICE: ACPI AML intepreter has found some non-conforming AML klog : code. This should be investigated and fixed. klog : klog : FAILED [HIGH] KlogAcpiFadtInvalidLength: Test 1, HIGH Kernel klog : message: [ 0.000000] ACPI Warning: Invalid length for klog : Pm1aControlBlock: 32, using default 16 (20090903/tbfadt-607) klog : klog : ADVICE: This item in the FADT is the incorrect length. Should klog : be corrected. klog : klog : FAILED [HIGH] KlogAcpiOptionalFieldZeroAddressOrLength: Test 1, klog : HIGH Kernel message: [ 0.000000] ACPI Warning: Optional field klog : Gpe1Block has zero address or length: 000000000000102C/0 klog : 20090521 tbfadt-558 klog : klog : ADVICE: An ACPI table contains Generic Address Structure that klog : has an address that is incorrectly set to zero, or a zero klog : length. This needs to be fixed. klog : klog : FAILED [HIGH] KlogAcpiOptionalFieldZeroAddressOrLength: Test 1, klog : HIGH Kernel message: [ 0.000000] ACPI Warning: Optional field klog : Pm2ControlBlock has zero address or length: 0000000000000000/1 klog : 20090521 tbfadt-558 klog : klog : ADVICE: An ACPI table contains Generic Address Structure that klog : has an address that is incorrectly set to zero, or a zero klog : length. This needs to be fixed. klog : klog : FAILED [HIGH] KlogAcpiOptionalFieldZeroAddressOrLength: Test 1, klog : HIGH Kernel message: [ 0.000000] ACPI Warning (tbfadt-0460): klog : Optional field "Gpe1Block" has zero address or length: klog : 000000000000102C/0 [20080926] klog : klog : ADVICE: An ACPI table contains Generic Address Structure that klog : has an address that is incorrectly set to zero, or a zero klog : length. This needs to be fixed. klog : klog : FAILED [MEDIUM] KlogBiosMtrrIncorrectMask: Test 1, MEDIUM klog : Kernel message: [ 0.000000] mtrr: your BIOS has configured an klog : incorrect mask, fixing it. klog : klog : ADVICE: The Memory Type Range Registers (MTRRs) which define klog : memory caching policy are misconfigued by the BIOS. In this klog : case, the mask is incorrectly set and the kernel has detected klog : this and worked around the firmware bug. klog : klog : FAILED [CRITICAL] KlogBiosCpuMtrrMisconfigured: Test 1, klog : CRITICAL Kernel message: [ 0.000000] WARNING: BIOS bug: CPU klog : MTRRs don't cover all of memory, losing 1408MB of RAM. klog : klog : ADVICE: The Memory Type Range Registers (MTRRs) which define klog : memory caching policy are misconfigued by the BIOS and don't klog : appear to cover all available physical memory. The kernel has klog : detected this and has reduced the amount of memory available to klog : be safe. Either check that the BIOS memory caching options are klog : set correctly or contact your BIOS vendor to get this fixed. klog : klog : FAILED [HIGH] KlogAcpiUnknownAmlOpcode: Test 1, HIGH Kernel klog : message: [ 0.022719] ACPI Error: Found unknown opcode 0xFD at klog : AML address f7ffe14c offset 0xE8, ignoring (20110112 klog : /psloop-141) klog : klog : ADVICE: ACPI execution run time error: The ACPI interpreter has klog : reached an opcode that is unknown, this normally is a bug in klog : the underlying AML code either because of badly written AML klog : code or the compiler has produced code that is incorrect or the klog : ACPI interpreter does not support this valid opcode. klog : klog : FAILED [CRITICAL] KlogAcpiDetectedUnsupportedOpCode: Test 1, klog : CRITICAL Kernel message: [ 0.025463] ACPI Warning: Detected an klog : unsupported executable opcode at module-level: [0x007B] at klog : table offset 0x00C3 (20110112/psloop-526) klog : klog : ADVICE: An illegal AML opcode has been found and is ignored. klog : This indicates either badly compiled code or opcode corruption klog : in the DSDT or SSDT tables or a bug in the ACPI execution klog : engine. Recommend disassembing using iasl to find any offending klog : code. klog : klog : FAILED [HIGH] KlogAcpiObjectAlreadyExists: Test 1, HIGH Kernel klog : message: [ 0.034090] ACPI Error: Method parse/execution failed klog : [_SB_.PCI0._OSC] (Node ee025630), AE_ALREADY_EXISTS (20110112 klog : /psparse-536) klog : klog : ADVICE: This is a bug picked up by the kernel, but as yet, the klog : firmware test suite has no diagnostic advice for this klog : particular problem. klog : klog : FAILED [HIGH] KlogAcpiFirmwareError: Test 1, HIGH Kernel klog : message: [ 0.040119] [Firmware Bug]: the BIOS has corrupted klog : hw-PMU resources (MSR 186 is 400000) klog : klog : ADVICE: The kernel has detected a Firmware bug in the BIOS or klog : ACPI which needs investigating and fixing. klog : klog : FAILED [CRITICAL] KlogAcpiDetectedUnsupportedOpCode: Test 1, klog : CRITICAL Kernel message: [ 0.042222] ACPI Warning: Detected an klog : unsupported executable opcode at module-level: [0x0070] at klog : table offset 0x2366 (20100121/psloop-526) klog : klog : ADVICE: An illegal AML opcode has been found and is ignored. klog : This indicates either badly compiled code or opcode corruption klog : in the DSDT or SSDT tables or a bug in the ACPI execution klog : engine. Recommend disassembing using iasl to find any offending klog : code. klog : klog : Found 18 unique errors in kernel log. klog : klog : =============================================================== klog : 0 passed, 18 failed, 0 warning, 0 aborted, 0 skipped, 0 info klog : only. klog : =============================================================== fwts-test/arg-log-format-0001/klog-0003.log000066400000000000000000000303141231470457100202360ustar00rootroot00000000000000klog 00016: klog: Scan kernel log for errors and warnings. klog 00017: --------------------------------------------------------- klog 00018: Test 1 of 1: Kernel log error check. klog 00019: FAILED [HIGH] KlogAcpiMultipleApicMadtFound: Test 1, HIGH klog 00020: Kernel message: [ 0.000000] ACPI: BIOS bug: multiple APIC klog 00021: /MADT found, using 0 klog 00022: klog 00023: ADVICE: The kernel has detected more than one ACPI klog 00024: Multiple APIC Description Table (MADT) (these tables have klog 00025: the "APIC" signature). There should only be one MADT and klog 00026: the kernel will by default select the first one. However, klog 00027: one can override this and select the Nth MADT using klog 00028: acpi_apic_instance=N. klog 00029: klog 00030: FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatch: Test 1, klog 00031: HIGH Kernel message: [ 0.000000] ACPI Error: 32/64X klog 00032: address mismatch in Gpe0Block: 00008018/0000000000008028, klog 00033: using 32 (20090903/tbfadt-427) klog 00034: klog 00035: ADVICE: The FADT table contains a mismatch between a 32 klog 00036: bit pointer and a 64 bit Generic Address pointer. Because klog 00037: these pointers are different, it suggests either one of klog 00038: them is incorrect. If a non-null 32 bit pointer exists, klog 00039: then the kernel will opt for this in preference to the 64 klog 00040: bit pointer even though this is not in accordance to the klog 00041: ACPI specification. klog 00042: klog 00043: FAILED [CRITICAL] KlogAcpiValidRsdpNotFound: Test 1, klog 00044: CRITICAL Kernel message: [ 0.000000] ACPI Error: A valid klog 00045: RSDP was not found (20090903/tbxfroot-219) klog 00046: klog 00047: ADVICE: An ACPI compatible system must provide an RSDP klog 00048: (Root System Description Pointer). This structure klog 00049: provides the physical address of the RSDT and XSDT. Since klog 00050: this could not be found, the ACPI driver has had to klog 00051: disable ACPI support. klog 00052: klog 00053: FAILED [HIGH] KlogAcpiTwoFacs: Test 1, HIGH Kernel klog 00054: message: [ 0.000000] ACPI Warning: 32/64 FACS address klog 00055: mismatch in FADT - two FACS tables! (20090903/tbfadt-369) klog 00056: klog 00057: ADVICE: The FADT table contains a mismatch between the 32 klog 00058: bit pointer (FIRMWARE_CTRL) and 64 bit pointer klog 00059: (X_FIRMWARE_CTRL) pointer to the FACS table. Section klog 00060: 5.2.9 of version 4.0a of the ACPI specification states klog 00061: that X_FIRMWARE_CTRL should be zero if FIRMWARE_CTRL is klog 00062: defined, or FIRMWARE_CTRL should be zero if klog 00063: X_FIRMWARE_CTRL is zero. With two different pointers klog 00064: defined, the kernel has to make a choice, and opts for klog 00065: the 32 bit pointer. Because these pointers are different, klog 00066: it suggests either one of them is incorrect, or different klog 00067: 32 bit and 64 bit FACS tables are present in your system, klog 00068: which is NOT complaint with the ACPI specification. The klog 00069: kernel has to make a choice and opts for the 32 bit klog 00070: FIRMWARE_CTRL. klog 00071: klog 00072: FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog 00073: Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog 00074: /64X FACS address mismatch in FADT - DEF2DF40 klog 00075: /00000000DEF30D40, using 32 (20090903/tbfadt-486) klog 00076: klog 00077: ADVICE: The FADT table contains Generic Address Structure klog 00078: that has a mismatch between the 32 bit and 64 bit klog 00079: versions of an address. This should be fixed so there are klog 00080: no mismatches. klog 00081: klog 00082: FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog 00083: Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog 00084: /64X length mismatch in Gpe1Block: 0/32 20090521 klog 00085: tbfadt-527 klog 00086: klog 00087: ADVICE: The FADT table contains Generic Address Structure klog 00088: that has a mismatch between the 32 bit and 64 bit klog 00089: versions of an address. This should be fixed so there are klog 00090: no mismatches. klog 00091: klog 00092: FAILED [HIGH] KlogAcpiBadAmlCode: Test 1, HIGH Kernel klog 00093: message: [ 0.000000] ACPI Warning: BIOS XSDT has NULL klog 00094: entry, using RSDT (20110112/tbutils-663) klog 00095: klog 00096: ADVICE: ACPI AML intepreter has found some non-conforming klog 00097: AML code. This should be investigated and fixed. klog 00098: klog 00099: FAILED [HIGH] KlogAcpiFadtInvalidLength: Test 1, HIGH klog 00100: Kernel message: [ 0.000000] ACPI Warning: Invalid length klog 00101: for Pm1aControlBlock: 32, using default 16 (20090903 klog 00102: /tbfadt-607) klog 00103: klog 00104: ADVICE: This item in the FADT is the incorrect length. klog 00105: Should be corrected. klog 00106: klog 00107: FAILED [HIGH] KlogAcpiOptionalFieldZeroAddressOrLength: klog 00108: Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: klog 00109: Optional field Gpe1Block has zero address or length: klog 00110: 000000000000102C/0 20090521 tbfadt-558 klog 00111: klog 00112: ADVICE: An ACPI table contains Generic Address Structure klog 00113: that has an address that is incorrectly set to zero, or a klog 00114: zero length. This needs to be fixed. klog 00115: klog 00116: FAILED [HIGH] KlogAcpiOptionalFieldZeroAddressOrLength: klog 00117: Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: klog 00118: Optional field Pm2ControlBlock has zero address or length klog 00119: : 0000000000000000/1 20090521 tbfadt-558 klog 00120: klog 00121: ADVICE: An ACPI table contains Generic Address Structure klog 00122: that has an address that is incorrectly set to zero, or a klog 00123: zero length. This needs to be fixed. klog 00124: klog 00125: FAILED [HIGH] KlogAcpiOptionalFieldZeroAddressOrLength: klog 00126: Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning klog 00127: (tbfadt-0460): Optional field "Gpe1Block" has zero klog 00128: address or length: 000000000000102C/0 [20080926] klog 00129: klog 00130: ADVICE: An ACPI table contains Generic Address Structure klog 00131: that has an address that is incorrectly set to zero, or a klog 00132: zero length. This needs to be fixed. klog 00133: klog 00134: FAILED [MEDIUM] KlogBiosMtrrIncorrectMask: Test 1, MEDIUM klog 00135: Kernel message: [ 0.000000] mtrr: your BIOS has klog 00136: configured an incorrect mask, fixing it. klog 00137: klog 00138: ADVICE: The Memory Type Range Registers (MTRRs) which klog 00139: define memory caching policy are misconfigued by the klog 00140: BIOS. In this case, the mask is incorrectly set and the klog 00141: kernel has detected this and worked around the firmware klog 00142: bug. klog 00143: klog 00144: FAILED [CRITICAL] KlogBiosCpuMtrrMisconfigured: Test 1, klog 00145: CRITICAL Kernel message: [ 0.000000] WARNING: BIOS bug: klog 00146: CPU MTRRs don't cover all of memory, losing 1408MB of klog 00147: RAM. klog 00148: klog 00149: ADVICE: The Memory Type Range Registers (MTRRs) which klog 00150: define memory caching policy are misconfigued by the BIOS klog 00151: and don't appear to cover all available physical memory. klog 00152: The kernel has detected this and has reduced the amount klog 00153: of memory available to be safe. Either check that the klog 00154: BIOS memory caching options are set correctly or contact klog 00155: your BIOS vendor to get this fixed. klog 00156: klog 00157: FAILED [HIGH] KlogAcpiUnknownAmlOpcode: Test 1, HIGH klog 00158: Kernel message: [ 0.022719] ACPI Error: Found unknown klog 00159: opcode 0xFD at AML address f7ffe14c offset 0xE8, ignoring klog 00160: (20110112/psloop-141) klog 00161: klog 00162: ADVICE: ACPI execution run time error: The ACPI klog 00163: interpreter has reached an opcode that is unknown, this klog 00164: normally is a bug in the underlying AML code either klog 00165: because of badly written AML code or the compiler has klog 00166: produced code that is incorrect or the ACPI interpreter klog 00167: does not support this valid opcode. klog 00168: klog 00169: FAILED [CRITICAL] KlogAcpiDetectedUnsupportedOpCode: Test klog 00170: 1, CRITICAL Kernel message: [ 0.025463] ACPI Warning: klog 00171: Detected an unsupported executable opcode at module-level klog 00172: : [0x007B] at table offset 0x00C3 (20110112/psloop-526) klog 00173: klog 00174: ADVICE: An illegal AML opcode has been found and is klog 00175: ignored. This indicates either badly compiled code or klog 00176: opcode corruption in the DSDT or SSDT tables or a bug in klog 00177: the ACPI execution engine. Recommend disassembing using klog 00178: iasl to find any offending code. klog 00179: klog 00180: FAILED [HIGH] KlogAcpiObjectAlreadyExists: Test 1, HIGH klog 00181: Kernel message: [ 0.034090] ACPI Error: Method parse klog 00182: /execution failed [_SB_.PCI0._OSC] (Node ee025630), klog 00183: AE_ALREADY_EXISTS (20110112/psparse-536) klog 00184: klog 00185: ADVICE: This is a bug picked up by the kernel, but as yet klog 00186: , the firmware test suite has no diagnostic advice for klog 00187: this particular problem. klog 00188: klog 00189: FAILED [HIGH] KlogAcpiFirmwareError: Test 1, HIGH Kernel klog 00190: message: [ 0.040119] [Firmware Bug]: the BIOS has klog 00191: corrupted hw-PMU resources (MSR 186 is 400000) klog 00192: klog 00193: ADVICE: The kernel has detected a Firmware bug in the klog 00194: BIOS or ACPI which needs investigating and fixing. klog 00195: klog 00196: FAILED [CRITICAL] KlogAcpiDetectedUnsupportedOpCode: Test klog 00197: 1, CRITICAL Kernel message: [ 0.042222] ACPI Warning: klog 00198: Detected an unsupported executable opcode at module-level klog 00199: : [0x0070] at table offset 0x2366 (20100121/psloop-526) klog 00200: klog 00201: ADVICE: An illegal AML opcode has been found and is klog 00202: ignored. This indicates either badly compiled code or klog 00203: opcode corruption in the DSDT or SSDT tables or a bug in klog 00204: the ACPI execution engine. Recommend disassembing using klog 00205: iasl to find any offending code. klog 00206: klog 00207: Found 18 unique errors in kernel log. klog 00208: klog 00209: ========================================================= klog 00210: 0 passed, 18 failed, 0 warning, 0 aborted, 0 skipped, 0 klog 00211: info only. klog 00212: ========================================================= fwts-test/arg-log-format-0001/klog-0004.log000066400000000000000000000331211231470457100202360ustar00rootroot00000000000000klog 10/10/11 : klog: Scan kernel log for errors and warnings. klog 10/10/11 : ---------------------------------------------------- klog 10/10/11 : Test 1 of 1: Kernel log error check. klog 10/10/11 H: FAILED [HIGH] KlogAcpiMultipleApicMadtFound: Test 1, klog 10/10/11 H: HIGH Kernel message: [ 0.000000] ACPI: BIOS bug: klog 10/10/11 H: multiple APIC/MADT found, using 0 klog 10/10/11 : klog 10/10/11 : ADVICE: The kernel has detected more than one ACPI klog 10/10/11 : Multiple APIC Description Table (MADT) (these tables klog 10/10/11 : have the "APIC" signature). There should only be one klog 10/10/11 : MADT and the kernel will by default select the first klog 10/10/11 : one. However, one can override this and select the klog 10/10/11 : Nth MADT using acpi_apic_instance=N. klog 10/10/11 : klog 10/10/11 H: FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatch: klog 10/10/11 H: Test 1, HIGH Kernel message: [ 0.000000] ACPI Error: klog 10/10/11 H: 32/64X address mismatch in Gpe0Block: 00008018 klog 10/10/11 H: /0000000000008028, using 32 (20090903/tbfadt-427) klog 10/10/11 : klog 10/10/11 : ADVICE: The FADT table contains a mismatch between a klog 10/10/11 : 32 bit pointer and a 64 bit Generic Address pointer. klog 10/10/11 : Because these pointers are different, it suggests klog 10/10/11 : either one of them is incorrect. If a non-null 32 klog 10/10/11 : bit pointer exists, then the kernel will opt for klog 10/10/11 : this in preference to the 64 bit pointer even though klog 10/10/11 : this is not in accordance to the ACPI specification. klog 10/10/11 : klog 10/10/11 C: FAILED [CRITICAL] KlogAcpiValidRsdpNotFound: Test 1, klog 10/10/11 C: CRITICAL Kernel message: [ 0.000000] ACPI Error: A klog 10/10/11 C: valid RSDP was not found (20090903/tbxfroot-219) klog 10/10/11 : klog 10/10/11 : ADVICE: An ACPI compatible system must provide an klog 10/10/11 : RSDP (Root System Description Pointer). This klog 10/10/11 : structure provides the physical address of the RSDT klog 10/10/11 : and XSDT. Since this could not be found, the ACPI klog 10/10/11 : driver has had to disable ACPI support. klog 10/10/11 : klog 10/10/11 H: FAILED [HIGH] KlogAcpiTwoFacs: Test 1, HIGH Kernel klog 10/10/11 H: message: [ 0.000000] ACPI Warning: 32/64 FACS klog 10/10/11 H: address mismatch in FADT - two FACS tables! klog 10/10/11 H: (20090903/tbfadt-369) klog 10/10/11 : klog 10/10/11 : ADVICE: The FADT table contains a mismatch between klog 10/10/11 : the 32 bit pointer (FIRMWARE_CTRL) and 64 bit klog 10/10/11 : pointer (X_FIRMWARE_CTRL) pointer to the FACS table. klog 10/10/11 : Section 5.2.9 of version 4.0a of the ACPI klog 10/10/11 : specification states that X_FIRMWARE_CTRL should be klog 10/10/11 : zero if FIRMWARE_CTRL is defined, or FIRMWARE_CTRL klog 10/10/11 : should be zero if X_FIRMWARE_CTRL is zero. With two klog 10/10/11 : different pointers defined, the kernel has to make a klog 10/10/11 : choice, and opts for the 32 bit pointer. Because klog 10/10/11 : these pointers are different, it suggests either one klog 10/10/11 : of them is incorrect, or different 32 bit and 64 bit klog 10/10/11 : FACS tables are present in your system, which is NOT klog 10/10/11 : complaint with the ACPI specification. The kernel klog 10/10/11 : has to make a choice and opts for the 32 bit klog 10/10/11 : FIRMWARE_CTRL. klog 10/10/11 : klog 10/10/11 H: FAILED [HIGH] klog 10/10/11 H: KlogAcpi32Bit64BitAddressMismatchInFadt: Test 1, klog 10/10/11 H: HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog 10/10/11 H: /64X FACS address mismatch in FADT - DEF2DF40 klog 10/10/11 H: /00000000DEF30D40, using 32 (20090903/tbfadt-486) klog 10/10/11 : klog 10/10/11 : ADVICE: The FADT table contains Generic Address klog 10/10/11 : Structure that has a mismatch between the 32 bit and klog 10/10/11 : 64 bit versions of an address. This should be fixed klog 10/10/11 : so there are no mismatches. klog 10/10/11 : klog 10/10/11 H: FAILED [HIGH] klog 10/10/11 H: KlogAcpi32Bit64BitAddressMismatchInFadt: Test 1, klog 10/10/11 H: HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog 10/10/11 H: /64X length mismatch in Gpe1Block: 0/32 20090521 klog 10/10/11 H: tbfadt-527 klog 10/10/11 : klog 10/10/11 : ADVICE: The FADT table contains Generic Address klog 10/10/11 : Structure that has a mismatch between the 32 bit and klog 10/10/11 : 64 bit versions of an address. This should be fixed klog 10/10/11 : so there are no mismatches. klog 10/10/11 : klog 10/10/11 H: FAILED [HIGH] KlogAcpiBadAmlCode: Test 1, HIGH klog 10/10/11 H: Kernel message: [ 0.000000] ACPI Warning: BIOS XSDT klog 10/10/11 H: has NULL entry, using RSDT (20110112/tbutils-663) klog 10/10/11 : klog 10/10/11 : ADVICE: ACPI AML intepreter has found some klog 10/10/11 : non-conforming AML code. This should be investigated klog 10/10/11 : and fixed. klog 10/10/11 : klog 10/10/11 H: FAILED [HIGH] KlogAcpiFadtInvalidLength: Test 1, klog 10/10/11 H: HIGH Kernel message: [ 0.000000] ACPI Warning: klog 10/10/11 H: Invalid length for Pm1aControlBlock: 32, using klog 10/10/11 H: default 16 (20090903/tbfadt-607) klog 10/10/11 : klog 10/10/11 : ADVICE: This item in the FADT is the incorrect klog 10/10/11 : length. Should be corrected. klog 10/10/11 : klog 10/10/11 H: FAILED [HIGH] klog 10/10/11 H: KlogAcpiOptionalFieldZeroAddressOrLength: Test 1, klog 10/10/11 H: HIGH Kernel message: [ 0.000000] ACPI Warning: klog 10/10/11 H: Optional field Gpe1Block has zero address or length: klog 10/10/11 H: 000000000000102C/0 20090521 tbfadt-558 klog 10/10/11 : klog 10/10/11 : ADVICE: An ACPI table contains Generic Address klog 10/10/11 : Structure that has an address that is incorrectly klog 10/10/11 : set to zero, or a zero length. This needs to be klog 10/10/11 : fixed. klog 10/10/11 : klog 10/10/11 H: FAILED [HIGH] klog 10/10/11 H: KlogAcpiOptionalFieldZeroAddressOrLength: Test 1, klog 10/10/11 H: HIGH Kernel message: [ 0.000000] ACPI Warning: klog 10/10/11 H: Optional field Pm2ControlBlock has zero address or klog 10/10/11 H: length: 0000000000000000/1 20090521 tbfadt-558 klog 10/10/11 : klog 10/10/11 : ADVICE: An ACPI table contains Generic Address klog 10/10/11 : Structure that has an address that is incorrectly klog 10/10/11 : set to zero, or a zero length. This needs to be klog 10/10/11 : fixed. klog 10/10/11 : klog 10/10/11 H: FAILED [HIGH] klog 10/10/11 H: KlogAcpiOptionalFieldZeroAddressOrLength: Test 1, klog 10/10/11 H: HIGH Kernel message: [ 0.000000] ACPI Warning klog 10/10/11 H: (tbfadt-0460): Optional field "Gpe1Block" has zero klog 10/10/11 H: address or length: 000000000000102C/0 [20080926] klog 10/10/11 : klog 10/10/11 : ADVICE: An ACPI table contains Generic Address klog 10/10/11 : Structure that has an address that is incorrectly klog 10/10/11 : set to zero, or a zero length. This needs to be klog 10/10/11 : fixed. klog 10/10/11 : klog 10/10/11 M: FAILED [MEDIUM] KlogBiosMtrrIncorrectMask: Test 1, klog 10/10/11 M: MEDIUM Kernel message: [ 0.000000] mtrr: your BIOS klog 10/10/11 M: has configured an incorrect mask, fixing it. klog 10/10/11 : klog 10/10/11 : ADVICE: The Memory Type Range Registers (MTRRs) klog 10/10/11 : which define memory caching policy are misconfigued klog 10/10/11 : by the BIOS. In this case, the mask is incorrectly klog 10/10/11 : set and the kernel has detected this and worked klog 10/10/11 : around the firmware bug. klog 10/10/11 : klog 10/10/11 C: FAILED [CRITICAL] KlogBiosCpuMtrrMisconfigured: Test klog 10/10/11 C: 1, CRITICAL Kernel message: [ 0.000000] WARNING: klog 10/10/11 C: BIOS bug: CPU MTRRs don't cover all of memory, klog 10/10/11 C: losing 1408MB of RAM. klog 10/10/11 : klog 10/10/11 : ADVICE: The Memory Type Range Registers (MTRRs) klog 10/10/11 : which define memory caching policy are misconfigued klog 10/10/11 : by the BIOS and don't appear to cover all available klog 10/10/11 : physical memory. The kernel has detected this and klog 10/10/11 : has reduced the amount of memory available to be klog 10/10/11 : safe. Either check that the BIOS memory caching klog 10/10/11 : options are set correctly or contact your BIOS klog 10/10/11 : vendor to get this fixed. klog 10/10/11 : klog 10/10/11 H: FAILED [HIGH] KlogAcpiUnknownAmlOpcode: Test 1, HIGH klog 10/10/11 H: Kernel message: [ 0.022719] ACPI Error: Found klog 10/10/11 H: unknown opcode 0xFD at AML address f7ffe14c offset klog 10/10/11 H: 0xE8, ignoring (20110112/psloop-141) klog 10/10/11 : klog 10/10/11 : ADVICE: ACPI execution run time error: The ACPI klog 10/10/11 : interpreter has reached an opcode that is unknown, klog 10/10/11 : this normally is a bug in the underlying AML code klog 10/10/11 : either because of badly written AML code or the klog 10/10/11 : compiler has produced code that is incorrect or the klog 10/10/11 : ACPI interpreter does not support this valid opcode. klog 10/10/11 : klog 10/10/11 : klog 10/10/11 C: FAILED [CRITICAL] KlogAcpiDetectedUnsupportedOpCode: klog 10/10/11 C: Test 1, CRITICAL Kernel message: [ 0.025463] ACPI klog 10/10/11 C: Warning: Detected an unsupported executable opcode klog 10/10/11 C: at module-level: [0x007B] at table offset 0x00C3 klog 10/10/11 C: (20110112/psloop-526) klog 10/10/11 : klog 10/10/11 : ADVICE: An illegal AML opcode has been found and is klog 10/10/11 : ignored. This indicates either badly compiled code klog 10/10/11 : or opcode corruption in the DSDT or SSDT tables or a klog 10/10/11 : bug in the ACPI execution engine. Recommend klog 10/10/11 : disassembing using iasl to find any offending code. klog 10/10/11 : klog 10/10/11 H: FAILED [HIGH] KlogAcpiObjectAlreadyExists: Test 1, klog 10/10/11 H: HIGH Kernel message: [ 0.034090] ACPI Error: Method klog 10/10/11 H: parse/execution failed [_SB_.PCI0._OSC] (Node klog 10/10/11 H: ee025630), AE_ALREADY_EXISTS (20110112/psparse-536) klog 10/10/11 : klog 10/10/11 : ADVICE: This is a bug picked up by the kernel, but klog 10/10/11 : as yet, the firmware test suite has no diagnostic klog 10/10/11 : advice for this particular problem. klog 10/10/11 : klog 10/10/11 H: FAILED [HIGH] KlogAcpiFirmwareError: Test 1, HIGH klog 10/10/11 H: Kernel message: [ 0.040119] [Firmware Bug]: the BIOS klog 10/10/11 H: has corrupted hw-PMU resources (MSR 186 is 400000) klog 10/10/11 : klog 10/10/11 : ADVICE: The kernel has detected a Firmware bug in klog 10/10/11 : the BIOS or ACPI which needs investigating and klog 10/10/11 : fixing. klog 10/10/11 : klog 10/10/11 C: FAILED [CRITICAL] KlogAcpiDetectedUnsupportedOpCode: klog 10/10/11 C: Test 1, CRITICAL Kernel message: [ 0.042222] ACPI klog 10/10/11 C: Warning: Detected an unsupported executable opcode klog 10/10/11 C: at module-level: [0x0070] at table offset 0x2366 klog 10/10/11 C: (20100121/psloop-526) klog 10/10/11 : klog 10/10/11 : ADVICE: An illegal AML opcode has been found and is klog 10/10/11 : ignored. This indicates either badly compiled code klog 10/10/11 : or opcode corruption in the DSDT or SSDT tables or a klog 10/10/11 : bug in the ACPI execution engine. Recommend klog 10/10/11 : disassembing using iasl to find any offending code. klog 10/10/11 : klog 10/10/11 : Found 18 unique errors in kernel log. klog 10/10/11 : klog 10/10/11 : ==================================================== klog 10/10/11 : 0 passed, 18 failed, 0 warning, 0 aborted, 0 skipped klog 10/10/11 : , 0 info only. klog 10/10/11 : ==================================================== fwts-test/arg-log-format-0001/klog.txt000066400000000000000000000035621231470457100177210ustar00rootroot00000000000000[ 0.000000] ACPI: BIOS bug: multiple APIC/MADT found, using 0 [ 0.000000] ACPI Error: 32/64X address mismatch in Gpe0Block: 00008018/0000000000008028, using 32 (20090903/tbfadt-427) [ 0.000000] ACPI Error: A valid RSDP was not found (20090903/tbxfroot-219) [ 0.000000] ACPI Warning: 32/64 FACS address mismatch in FADT - two FACS tables! (20090903/tbfadt-369) [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - DEF2DF40/00000000DEF30D40, using 32 (20090903/tbfadt-486) [ 0.000000] ACPI Warning: 32/64X length mismatch in Gpe1Block: 0/32 20090521 tbfadt-527 [ 0.000000] ACPI Warning: BIOS XSDT has NULL entry, using RSDT (20110112/tbutils-663) [ 0.000000] ACPI Warning: Invalid length for Pm1aControlBlock: 32, using default 16 (20090903/tbfadt-607) [ 0.000000] ACPI Warning: Optional field Gpe1Block has zero address or length: 000000000000102C/0 20090521 tbfadt-558 [ 0.000000] ACPI Warning: Optional field Pm2ControlBlock has zero address or length: 0000000000000000/1 20090521 tbfadt-558 [ 0.000000] ACPI Warning (tbfadt-0460): Optional field "Gpe1Block" has zero address or length: 000000000000102C/0 [20080926] [ 0.000000] mtrr: your BIOS has configured an incorrect mask, fixing it. [ 0.000000] WARNING: BIOS bug: CPU MTRRs don't cover all of memory, losing 1408MB of RAM. [ 0.022719] ACPI Error: Found unknown opcode 0xFD at AML address f7ffe14c offset 0xE8, ignoring (20110112/psloop-141) [ 0.025463] ACPI Warning: Detected an unsupported executable opcode at module-level: [0x007B] at table offset 0x00C3 (20110112/psloop-526) [ 0.034090] ACPI Error: Method parse/execution failed [_SB_.PCI0._OSC] (Node ee025630), AE_ALREADY_EXISTS (20110112/psparse-536) [ 0.040119] [Firmware Bug]: the BIOS has corrupted hw-PMU resources (MSR 186 is 400000) [ 0.042222] ACPI Warning: Detected an unsupported executable opcode at module-level: [0x0070] at table offset 0x2366 (20100121/psloop-526) fwts-test/arg-log-format-0001/test-0001.sh000077500000000000000000000014051231470457100201120ustar00rootroot00000000000000#!/bin/bash # TEST="Test --log-format, all field operators" NAME=test-0001.sh TMPLOG=$TMP/klog.log.$$ TMPLOG_ORIG=$TMP/klog-0001.log.$$ TODAY=`date +%d/%m/%y` $FWTS -w 80 -j $FWTSTESTDIR/../data --klog=$FWTSTESTDIR/arg-log-format-0001/klog.txt --log-format="%owner (%line) <%date> %field %level: " klog - | grep "^klog" | sed "sx([0-9][0-9][0-9][0-9][0-9])x(XXXXX)x" > $TMPLOG # # Need to adjust reference log to today's date # cat $FWTSTESTDIR/arg-log-format-0001/klog-0001.log | sed "sx<[0-9][0-9]\/[0-9][0-9]\/[0-9][0-9]>x<${TODAY}>x" | sed "sx([0-9][0-9][0-9][0-9][0-9])x(XXXXX)x" > $TMPLOG_ORIG diff $TMPLOG $TMPLOG_ORIG >> $FAILURE_LOG ret=$? if [ $ret -eq 0 ]; then echo PASSED: $TEST, $NAME else echo FAILED: $TEST, $NAME fi rm $TMPLOG $TMPLOG_ORIG exit $ret fwts-test/arg-log-format-0001/test-0002.sh000077500000000000000000000006551231470457100201210ustar00rootroot00000000000000#!/bin/bash # TEST="Test --log-format, %owner field" NAME=test-0002.sh TMPLOG=$TMP/klog.log.$$ $FWTS -w 80 -j $FWTSTESTDIR/../data --klog=$FWTSTESTDIR/arg-log-format-0001/klog.txt --log-format="%owner: " klog - | grep "^klog" > $TMPLOG diff $TMPLOG $FWTSTESTDIR/arg-log-format-0001/klog-0002.log >> $FAILURE_LOG ret=$? if [ $ret -eq 0 ]; then echo PASSED: $TEST, $NAME else echo FAILED: $TEST, $NAME fi rm $TMPLOG exit $ret fwts-test/arg-log-format-0001/test-0003.sh000077500000000000000000000012351231470457100201150ustar00rootroot00000000000000#!/bin/bash # TEST="Test --log-format, %line field" NAME=test-0003.sh TMPLOG=$TMP/klog.log.$$ TMPLOG_ORIG=$TMP/klog-0003.log.$$ TODAY=`date +%d/%m/%y` $FWTS -w 80 -j $FWTSTESTDIR/../data --klog=$FWTSTESTDIR/arg-log-format-0001/klog.txt --log-format="%owner %line: " klog - | grep "^klog" | sed sx12\/10\/11x${TODAY}x | sed "sx[0-9][0-9][0-9][0-9][0-9]:xXXXXX:x" > $TMPLOG sed "sx[0-9][0-9][0-9][0-9][0-9]:xXXXXX:x" < $FWTSTESTDIR/arg-log-format-0001/klog-0003.log > $TMPLOG_ORIG diff $TMPLOG $TMPLOG_ORIG >> $FAILURE_LOG ret=$? if [ $ret -eq 0 ]; then echo PASSED: $TEST, $NAME else echo FAILED: $TEST, $NAME cat $FAILURE_LOG fi rm $TMPLOG $TMPLOG_ORIG exit $ret fwts-test/arg-log-format-0001/test-0004.sh000077500000000000000000000012571231470457100201220ustar00rootroot00000000000000#!/bin/bash # TEST="Test --log-format, %date %level field operators" NAME=test-0004.sh TMPLOG=$TMP/klog.log.$$ TODAY=`date +%d/%m/%y` TMPLOG_ORIG=$TMP/klog-0004.log.$$ TODAY=`date +%d/%m/%y` # # Need to adjust reference log to today's date # $FWTS -w 80 -j $FWTSTESTDIR/../data --klog=$FWTSTESTDIR/arg-log-format-0001/klog.txt --log-format="%owner %date %%level: " klog - | grep "^klog" > $TMPLOG sed "sx[0-9][0-9]\/[0-9][0-9]\/[0-9][0-9]x${TODAY}x" < $FWTSTESTDIR/arg-log-format-0001/klog-0004.log > $TMPLOG_ORIG diff $TMPLOG $TMPLOG_ORIG >> $FAILURE_LOG ret=$? if [ $ret -eq 0 ]; then echo PASSED: $TEST, $NAME else echo FAILED: $TEST, $NAME fi rm $TMPLOG $TMPLOG_ORIG exit $ret fwts-test/arg-log-format-0001/testcase.txt000066400000000000000000000000371231470457100205720ustar00rootroot00000000000000Test fwts --log-format options fwts-test/arg-quiet-0001/000077500000000000000000000000001231470457100152765ustar00rootroot00000000000000fwts-test/arg-quiet-0001/klog.txt000066400000000000000000000021311231470457100167700ustar00rootroot00000000000000[ 0.000000] ACPI: BIOS bug: multiple APIC/MADT found, using 0 [ 0.000000] ACPI Error: 32/64X address mismatch in Gpe0Block: 00008018/0000000000008028, using 32 (20090903/tbfadt-427) [ 0.000000] ACPI Error: A valid RSDP was not found (20110112/tbxfroot-219) [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0x3776BF40/0x000000003776ED40, using 32 (20100428/tbfadt-486) [ 30.140475] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.AC__._PSR] (Node ffff880217052420), AE_TIME [ 42.490181] ACPI Error: [_SB_.VDRV] Namespace lookup failure, AE_NOT_FOUND (20110112/psargs-359) [ 42.490202] ACPI Error: Method parse/execution failed [_SB_.PCI0.LPC0.H_EC._Q51] (Node ffff88003d9b1e60), AE_NOT_FOUND (20110112/psparse-536) [ 44.661543] ACPI Warning for _SB_.PCI0.GFX0.DD01._BCL: Return type mismatch - found Integer, expected Package (20090903/nspredef-1006) [ 50.737630] ACPI Warning for _SB_.PCI0.AGP_.VID_.MXMI: Excess arguments - needs 1, found 2 (20090903/nspredef-303) [ 50.737686] ACPI Warning for _SB_.PCI0.AGP_.VID_.MXMS: Excess arguments - needs 1, found 2 (20090903/nspredef-303) fwts-test/arg-quiet-0001/test-0001.sh000077500000000000000000000005431231470457100171740ustar00rootroot00000000000000#!/bin/bash # TEST="Test --quiet option" NAME=test-0001.sh TMPLOG=$TMP/klog.log.$$ $FWTS --quiet -w 80 -j $FWTSTESTDIR/../data --klog=$FWTSTESTDIR/arg-quiet-0001/klog.txt klog -r /dev/null > $TMPLOG diff $TMPLOG /dev/null >> $FAILURE_LOG ret=$? if [ $ret -eq 0 ]; then echo PASSED: $TEST, $NAME else echo FAILED: $TEST, $NAME fi rm $TMPLOG exit $ret fwts-test/arg-quiet-0001/test-0002.sh000077500000000000000000000005311231470457100171720ustar00rootroot00000000000000#!/bin/bash # TEST="Test -q option" NAME=test-0001.sh TMPLOG=$TMP/klog.log.$$ $FWTS -q -w 80 -j $FWTSTESTDIR/../data --klog=$FWTSTESTDIR/arg-quiet-0001/klog.txt klog -r /dev/null > $TMPLOG diff $TMPLOG /dev/null >> $FAILURE_LOG ret=$? if [ $ret -eq 0 ]; then echo PASSED: $TEST, $NAME else echo FAILED: $TEST, $NAME fi rm $TMPLOG exit $ret fwts-test/arg-quiet-0001/testcase.txt000066400000000000000000000000411231470457100176450ustar00rootroot00000000000000Test fwts -q and --quiet options fwts-test/arg-results-0001/000077500000000000000000000000001231470457100156505ustar00rootroot00000000000000fwts-test/arg-results-0001/klog.txt000066400000000000000000002225711231470457100173560ustar00rootroot00000000000000[ 0.000000] Initializing cgroup subsys cpuset [ 0.000000] Initializing cgroup subsys cpu [ 0.000000] Linux version 3.0.0-12-generic (buildd@crested) (gcc version 4.6.1 (Ubuntu/Linaro 4.6.1-9ubuntu3) ) #19-Ubuntu SMP Fri Sep 23 21:23:39 UTC 2011 (Ubuntu 3.0.0-12.19-generic 3.0.4) [ 0.000000] Command line: BOOT_IMAGE=/vmlinuz-3.0.0-12-generic root=UUID=08ed6ce0-0907-4d06-b1e1-b9c3ec647fe2 ro crashkernel=384M-2G:64M,2G-:128M quiet splash vt.handoff=7 [ 0.000000] KERNEL supported cpus: [ 0.000000] Intel GenuineIntel [ 0.000000] AMD AuthenticAMD [ 0.000000] Centaur CentaurHauls [ 0.000000] BIOS-provided physical RAM map: [ 0.000000] BIOS-e820: 0000000000000000 - 000000000009f800 (usable) [ 0.000000] BIOS-e820: 000000000009f800 - 00000000000a0000 (reserved) [ 0.000000] BIOS-e820: 00000000000d2000 - 00000000000d4000 (reserved) [ 0.000000] BIOS-e820: 00000000000dc000 - 0000000000100000 (reserved) [ 0.000000] BIOS-e820: 0000000000100000 - 00000000bf6d0000 (usable) [ 0.000000] BIOS-e820: 00000000bf6d0000 - 00000000bf6e3000 (ACPI NVS) [ 0.000000] BIOS-e820: 00000000bf6e3000 - 00000000c0000000 (reserved) [ 0.000000] BIOS-e820: 00000000e0000000 - 00000000f0000000 (reserved) [ 0.000000] BIOS-e820: 00000000fec00000 - 00000000fec10000 (reserved) [ 0.000000] BIOS-e820: 00000000fed00000 - 00000000fed00400 (reserved) [ 0.000000] BIOS-e820: 00000000fed14000 - 00000000fed1a000 (reserved) [ 0.000000] BIOS-e820: 00000000fed1c000 - 00000000fed90000 (reserved) [ 0.000000] BIOS-e820: 00000000fee00000 - 00000000fee01000 (reserved) [ 0.000000] BIOS-e820: 00000000ff000000 - 0000000100000000 (reserved) [ 0.000000] NX (Execute Disable) protection: active [ 0.000000] DMI present. [ 0.000000] DMI: LENOVO 0769BMG/IEL10, BIOS 68ET27WW 11/14/2007 [ 0.000000] e820 update range: 0000000000000000 - 0000000000010000 (usable) ==> (reserved) [ 0.000000] e820 remove range: 00000000000a0000 - 0000000000100000 (usable) [ 0.000000] No AGP bridge found [ 0.000000] last_pfn = 0xbf6d0 max_arch_pfn = 0x400000000 [ 0.000000] MTRR default type: uncachable [ 0.000000] MTRR fixed ranges enabled: [ 0.000000] 00000-9FFFF write-back [ 0.000000] A0000-BFFFF uncachable [ 0.000000] C0000-FFFFF write-protect [ 0.000000] MTRR variable ranges enabled: [ 0.000000] 0 base 000000000 mask F80000000 write-back [ 0.000000] 1 base 080000000 mask FC0000000 write-back [ 0.000000] 2 base 0BF700000 mask FFFF00000 uncachable [ 0.000000] 3 base 0BF800000 mask FFF800000 uncachable [ 0.000000] 4 disabled [ 0.000000] 5 disabled [ 0.000000] 6 disabled [ 0.000000] 7 disabled [ 0.000000] x86 PAT enabled: cpu 0, old 0x7040600070406, new 0x7010600070106 [ 0.000000] original variable MTRRs [ 0.000000] reg 0, base: 0GB, range: 2GB, type WB [ 0.000000] reg 1, base: 2GB, range: 1GB, type WB [ 0.000000] reg 2, base: 3063MB, range: 1MB, type UC [ 0.000000] reg 3, base: 3064MB, range: 8MB, type UC [ 0.000000] total RAM covered: 3063M [ 0.000000] Found optimal setting for mtrr clean up [ 0.000000] gran_size: 64K chunk_size: 16M num_reg: 4 lose cover RAM: 0G [ 0.000000] New variable MTRRs [ 0.000000] reg 0, base: 0GB, range: 2GB, type WB [ 0.000000] reg 1, base: 2GB, range: 1GB, type WB [ 0.000000] reg 2, base: 3063MB, range: 1MB, type UC [ 0.000000] reg 3, base: 3064MB, range: 8MB, type UC [ 0.000000] found SMP MP-table at [ffff8800000f72c0] f72c0 [ 0.000000] initial memory mapped : 0 - 20000000 [ 0.000000] Base memory trampoline at [ffff88000009a000] 9a000 size 20480 [ 0.000000] init_memory_mapping: 0000000000000000-00000000bf6d0000 [ 0.000000] 0000000000 - 00bf600000 page 2M [ 0.000000] 00bf600000 - 00bf6d0000 page 4k [ 0.000000] kernel direct mapping tables up to bf6d0000 @ bf6cb000-bf6d0000 [ 0.000000] RAMDISK: 359ec000 - 36cee000 [ 0.000000] Reserving 128MB of memory at 720MB for crashkernel (System RAM: 3062MB) [ 0.000000] ACPI: RSDP 00000000000f7240 00024 (v02 LENOVO) [ 0.000000] ACPI: XSDT 00000000bf6d87f0 00094 (v01 LENOVO TP-68 06040000 LTP 00000000) [ 0.000000] ACPI: FACP 00000000bf6dfbd2 000F4 (v03 TOSCPL CRESTLNE 06040000 ALAN 00000001) [ 0.000000] ACPI: DSDT 00000000bf6d9b6a 05FF4 (v02 TOSCPL CRESTLNE 06040000 INTL 20060608) [ 0.000000] ACPI: FACS 00000000bf6e2fc0 00040 [ 0.000000] ACPI: APIC 00000000bf6dfcc6 00068 (v01 INTEL CRESTLNE 06040000 LOHR 0000005A) [ 0.000000] ACPI: HPET 00000000bf6dfd2e 00038 (v01 INTEL CRESTLNE 06040000 LOHR 0000005A) [ 0.000000] ACPI: MCFG 00000000bf6dfd66 0003C (v01 INTEL CRESTLNE 06040000 LOHR 0000005A) [ 0.000000] ACPI: TCPA 00000000bf6dfda2 00032 (v01 Intel CRESTLNE 06040000 LOHR 0000005A) [ 0.000000] ACPI: TMOR 00000000bf6dfdd4 00026 (v01 PTLTD 06040000 PTL 00000003) [ 0.000000] ACPI: SLIC 00000000bf6dfdfa 00176 (v01 LENOVO TP-68 06040000 TBD 00000001) [ 0.000000] ACPI: APIC 00000000bf6dff70 00068 (v01 PTLTD ? APIC 06040000 LTP 00000000) [ 0.000000] ACPI: BOOT 00000000bf6dffd8 00028 (v01 PTLTD $SBFTBL$ 06040000 LTP 00000001) [ 0.000000] ACPI: SSDT 00000000bf6d98bd 002AD (v01 SataRe SataAhci 00001000 INTL 20050624) [ 0.000000] ACPI: SSDT 00000000bf6d981a 000A3 (v01 BrtRef DD01BRT 00001000 INTL 20050624) [ 0.000000] ACPI: SSDT 00000000bf6d8e10 0025F (v01 PmRef Cpu0Tst 00003000 INTL 20050624) [ 0.000000] ACPI: SSDT 00000000bf6d8d6a 000A6 (v01 PmRef Cpu1Tst 00003000 INTL 20050624) [ 0.000000] ACPI: SSDT 00000000bf6d8884 004E6 (v01 PmRef CpuPm 00003000 INTL 20050624) [ 0.000000] ACPI: BIOS bug: multiple APIC/MADT found, using 0 [ 0.000000] ACPI: If "acpi_apic_instance=2" works better, notify linux-acpi@vger.kernel.org [ 0.000000] ACPI: Local APIC address 0xfee00000 [ 0.000000] No NUMA configuration found [ 0.000000] Faking a node at 0000000000000000-00000000bf6d0000 [ 0.000000] Initmem setup node 0 0000000000000000-00000000bf6d0000 [ 0.000000] NODE_DATA [00000000bf6c6000 - 00000000bf6cafff] [ 0.000000] [ffffea0000000000-ffffea00029fffff] PMD -> [ffff8800bbe00000-ffff8800be7fffff] on node 0 [ 0.000000] Zone PFN ranges: [ 0.000000] DMA 0x00000010 -> 0x00001000 [ 0.000000] DMA32 0x00001000 -> 0x00100000 [ 0.000000] Normal empty [ 0.000000] Movable zone start PFN for each node [ 0.000000] early_node_map[2] active PFN ranges [ 0.000000] 0: 0x00000010 -> 0x0000009f [ 0.000000] 0: 0x00000100 -> 0x000bf6d0 [ 0.000000] On node 0 totalpages: 783967 [ 0.000000] DMA zone: 56 pages used for memmap [ 0.000000] DMA zone: 5 pages reserved [ 0.000000] DMA zone: 3922 pages, LIFO batch:0 [ 0.000000] DMA32 zone: 10664 pages used for memmap [ 0.000000] DMA32 zone: 769320 pages, LIFO batch:31 [ 0.000000] ACPI: PM-Timer IO Port: 0x1008 [ 0.000000] ACPI: Local APIC address 0xfee00000 [ 0.000000] ACPI: LAPIC (acpi_id[0x00] lapic_id[0x00] enabled) [ 0.000000] ACPI: LAPIC (acpi_id[0x01] lapic_id[0x01] enabled) [ 0.000000] ACPI: LAPIC_NMI (acpi_id[0x00] high edge lint[0x1]) [ 0.000000] ACPI: LAPIC_NMI (acpi_id[0x01] high edge lint[0x1]) [ 0.000000] ACPI: IOAPIC (id[0x01] address[0xfec00000] gsi_base[0]) [ 0.000000] IOAPIC[0]: apic_id 1, version 32, address 0xfec00000, GSI 0-23 [ 0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 0 global_irq 2 dfl dfl) [ 0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 9 global_irq 9 high level) [ 0.000000] ACPI: IRQ0 used by override. [ 0.000000] ACPI: IRQ2 used by override. [ 0.000000] ACPI: IRQ9 used by override. [ 0.000000] Using ACPI (MADT) for SMP configuration information [ 0.000000] ACPI: HPET id: 0x8086a201 base: 0xfed00000 [ 0.000000] SMP: Allowing 2 CPUs, 0 hotplug CPUs [ 0.000000] nr_irqs_gsi: 40 [ 0.000000] PM: Registered nosave memory: 000000000009f000 - 00000000000a0000 [ 0.000000] PM: Registered nosave memory: 00000000000a0000 - 00000000000d2000 [ 0.000000] PM: Registered nosave memory: 00000000000d2000 - 00000000000d4000 [ 0.000000] PM: Registered nosave memory: 00000000000d4000 - 00000000000dc000 [ 0.000000] PM: Registered nosave memory: 00000000000dc000 - 0000000000100000 [ 0.000000] Allocating PCI resources starting at c0000000 (gap: c0000000:20000000) [ 0.000000] Booting paravirtualized kernel on bare hardware [ 0.000000] setup_percpu: NR_CPUS:256 nr_cpumask_bits:256 nr_cpu_ids:2 nr_node_ids:1 [ 0.000000] PERCPU: Embedded 27 pages/cpu @ffff8800bf400000 s79616 r8192 d22784 u1048576 [ 0.000000] pcpu-alloc: s79616 r8192 d22784 u1048576 alloc=1*2097152 [ 0.000000] pcpu-alloc: [0] 0 1 [ 0.000000] Built 1 zonelists in Node order, mobility grouping on. Total pages: 773242 [ 0.000000] Policy zone: DMA32 [ 0.000000] Kernel command line: BOOT_IMAGE=/vmlinuz-3.0.0-12-generic root=UUID=08ed6ce0-0907-4d06-b1e1-b9c3ec647fe2 ro crashkernel=384M-2G:64M,2G-:128M quiet splash vt.handoff=7 [ 0.000000] PID hash table entries: 4096 (order: 3, 32768 bytes) [ 0.000000] Checking aperture... [ 0.000000] No AGP bridge found [ 0.000000] Calgary: detecting Calgary via BIOS EBDA area [ 0.000000] Calgary: Unable to locate Rio Grande table in EBDA - bailing! [ 0.000000] Memory: 2928536k/3136320k available (6104k kernel code, 452k absent, 207332k reserved, 4880k data, 984k init) [ 0.000000] SLUB: Genslabs=15, HWalign=64, Order=0-3, MinObjects=0, CPUs=2, Nodes=1 [ 0.000000] Hierarchical RCU implementation. [ 0.000000] RCU dyntick-idle grace-period acceleration is enabled. [ 0.000000] NR_IRQS:16640 nr_irqs:512 16 [ 0.000000] Extended CMOS year: 2000 [ 0.000000] vt handoff: transparent VT on vt#7 [ 0.000000] Console: colour dummy device 80x25 [ 0.000000] console [tty0] enabled [ 0.000000] allocated 25165824 bytes of page_cgroup [ 0.000000] please try 'cgroup_disable=memory' option if you don't want memory cgroups [ 0.000000] hpet clockevent registered [ 0.000000] Fast TSC calibration using PIT [ 0.000000] Detected 1496.217 MHz processor. [ 0.004006] Calibrating delay loop (skipped), value calculated using timer frequency.. 2992.43 BogoMIPS (lpj=5984868) [ 0.004013] pid_max: default: 32768 minimum: 301 [ 0.004056] Security Framework initialized [ 0.004080] AppArmor: AppArmor initialized [ 0.004083] Yama: becoming mindful. [ 0.004759] Dentry cache hash table entries: 524288 (order: 10, 4194304 bytes) [ 0.010636] Inode-cache hash table entries: 262144 (order: 9, 2097152 bytes) [ 0.012341] Mount-cache hash table entries: 256 [ 0.012557] Initializing cgroup subsys cpuacct [ 0.012565] Initializing cgroup subsys memory [ 0.012580] Initializing cgroup subsys devices [ 0.012583] Initializing cgroup subsys freezer [ 0.012586] Initializing cgroup subsys net_cls [ 0.012589] Initializing cgroup subsys blkio [ 0.012598] Initializing cgroup subsys perf_event [ 0.012643] CPU: Physical Processor ID: 0 [ 0.012645] CPU: Processor Core ID: 0 [ 0.012649] mce: CPU supports 6 MCE banks [ 0.012661] CPU0: Thermal monitoring handled by SMI [ 0.012667] using mwait in idle threads. [ 0.016288] ACPI: Core revision 20110413 [ 0.024040] ftrace: allocating 25651 entries in 101 pages [ 0.028444] ..TIMER: vector=0x30 apic1=0 pin1=2 apic2=-1 pin2=-1 [ 0.071627] CPU0: Intel(R) Core(TM)2 Duo CPU T5250 @ 1.50GHz stepping 0d [ 0.072003] Performance Events: PEBS fmt0+, Core2 events, Intel PMU driver. [ 0.072003] PEBS disabled due to CPU errata. [ 0.072003] ... version: 2 [ 0.072003] ... bit width: 40 [ 0.072003] ... generic registers: 2 [ 0.072003] ... value mask: 000000ffffffffff [ 0.072003] ... max period: 000000007fffffff [ 0.072003] ... fixed-purpose events: 3 [ 0.072003] ... event mask: 0000000700000003 [ 0.072003] Booting Node 0, Processors #1 Ok. [ 0.072003] smpboot cpu 1: start_ip = 9a000 [ 0.008000] CPU1: Thermal monitoring handled by SMI [ 0.160029] Brought up 2 CPUs [ 0.160033] Total of 2 processors activated (5984.88 BogoMIPS). [ 0.161224] devtmpfs: initialized [ 0.161224] PM: Registering ACPI NVS region at bf6d0000 (77824 bytes) [ 0.162075] print_constraints: dummy: [ 0.162115] Time: 7:34:42 Date: 10/05/11 [ 0.162171] NET: Registered protocol family 16 [ 0.162209] Trying to unpack rootfs image as initramfs... [ 0.164047] ACPI: bus type pci registered [ 0.164133] PCI: MMCONFIG for domain 0000 [bus 00-ff] at [mem 0xe0000000-0xefffffff] (base 0xe0000000) [ 0.164138] PCI: MMCONFIG at [mem 0xe0000000-0xefffffff] reserved in E820 [ 0.220043] PCI: Using configuration type 1 for base access [ 0.221379] bio: create slab at 0 [ 0.223506] ACPI: EC: Look up EC in DSDT [ 0.228089] [Firmware Bug]: ACPI: BIOS _OSI(Linux) query ignored [ 0.229039] ACPI: SSDT 00000000bf6d959e 001B4 (v01 PmRef Cpu0Ist 00003000 INTL 20050624) [ 0.229543] ACPI: Dynamic OEM Table Load: [ 0.229548] ACPI: SSDT (null) 001B4 (v01 PmRef Cpu0Ist 00003000 INTL 20050624) [ 0.229696] ACPI: SSDT 00000000bf6d906f 004AA (v01 PmRef Cpu0Cst 00003001 INTL 20050624) [ 0.230165] ACPI: Dynamic OEM Table Load: [ 0.230169] ACPI: SSDT (null) 004AA (v01 PmRef Cpu0Cst 00003001 INTL 20050624) [ 0.230454] ACPI: SSDT 00000000bf6d9752 000C8 (v01 PmRef Cpu1Ist 00003000 INTL 20050624) [ 0.232427] ACPI: Dynamic OEM Table Load: [ 0.232432] ACPI: SSDT (null) 000C8 (v01 PmRef Cpu1Ist 00003000 INTL 20050624) [ 0.232541] ACPI: SSDT 00000000bf6d9519 00085 (v01 PmRef Cpu1Cst 00003000 INTL 20050624) [ 0.233011] ACPI: Dynamic OEM Table Load: [ 0.233015] ACPI: SSDT (null) 00085 (v01 PmRef Cpu1Cst 00003000 INTL 20050624) [ 0.238295] ACPI: EC: GPE storm detected, transactions will use polling mode [ 0.344070] ACPI: Interpreter enabled [ 0.344078] ACPI: (supports S0 S3 S4 S5) [ 0.344118] ACPI: Using IOAPIC for interrupt routing [ 0.389051] ACPI: EC: GPE = 0x1c, I/O: command/status = 0x66, data = 0x62 [ 0.389294] ACPI: No dock devices found. [ 0.389298] HEST: Table not found. [ 0.389303] PCI: Ignoring host bridge windows from ACPI; if necessary, use "pci=use_crs" and report a bug [ 0.389762] ACPI: PCI Root Bridge [PCI0] (domain 0000 [bus 00-ff]) [ 0.390623] pci_root PNP0A08:00: host bridge window [io 0x0000-0x0cf7] (ignored) [ 0.390628] pci_root PNP0A08:00: host bridge window [io 0x0d00-0xffff] (ignored) [ 0.390632] pci_root PNP0A08:00: host bridge window [mem 0x000a0000-0x000bffff] (ignored) [ 0.390636] pci_root PNP0A08:00: host bridge window [mem 0x000d4000-0x000d7fff] (ignored) [ 0.390640] pci_root PNP0A08:00: host bridge window [mem 0x000d8000-0x000dbfff] (ignored) [ 0.390645] pci_root PNP0A08:00: host bridge window [mem 0xc0000000-0xdfffffff] (ignored) [ 0.390648] pci_root PNP0A08:00: host bridge window [mem 0xf0000000-0xfebfffff] (ignored) [ 0.390665] pci 0000:00:00.0: [8086:2a00] type 0 class 0x000600 [ 0.390726] pci 0000:00:02.0: [8086:2a02] type 0 class 0x000300 [ 0.390746] pci 0000:00:02.0: reg 10: [mem 0xfc000000-0xfc0fffff 64bit] [ 0.390758] pci 0000:00:02.0: reg 18: [mem 0xd0000000-0xdfffffff 64bit pref] [ 0.390767] pci 0000:00:02.0: reg 20: [io 0x1800-0x1807] [ 0.390812] pci 0000:00:02.1: [8086:2a03] type 0 class 0x000380 [ 0.390829] pci 0000:00:02.1: reg 10: [mem 0xfc100000-0xfc1fffff 64bit] [ 0.390937] pci 0000:00:1a.0: [8086:2834] type 0 class 0x000c03 [ 0.391013] pci 0000:00:1a.0: reg 20: [io 0x1820-0x183f] [ 0.391065] pci 0000:00:1a.1: [8086:2835] type 0 class 0x000c03 [ 0.391126] pci 0000:00:1a.1: reg 20: [io 0x1840-0x185f] [ 0.391187] pci 0000:00:1a.7: [8086:283a] type 0 class 0x000c03 [ 0.391216] pci 0000:00:1a.7: reg 10: [mem 0xfc504800-0xfc504bff] [ 0.391321] pci 0000:00:1a.7: PME# supported from D0 D3hot D3cold [ 0.391328] pci 0000:00:1a.7: PME# disabled [ 0.391362] pci 0000:00:1b.0: [8086:284b] type 0 class 0x000403 [ 0.391386] pci 0000:00:1b.0: reg 10: [mem 0xfc300000-0xfc303fff 64bit] [ 0.391473] pci 0000:00:1b.0: PME# supported from D0 D3hot D3cold [ 0.391479] pci 0000:00:1b.0: PME# disabled [ 0.391514] pci 0000:00:1c.0: [8086:283f] type 1 class 0x000604 [ 0.391605] pci 0000:00:1c.0: PME# supported from D0 D3hot D3cold [ 0.391611] pci 0000:00:1c.0: PME# disabled [ 0.391647] pci 0000:00:1c.1: [8086:2841] type 1 class 0x000604 [ 0.391735] pci 0000:00:1c.1: PME# supported from D0 D3hot D3cold [ 0.391741] pci 0000:00:1c.1: PME# disabled [ 0.391775] pci 0000:00:1c.2: [8086:2843] type 1 class 0x000604 [ 0.391868] pci 0000:00:1c.2: PME# supported from D0 D3hot D3cold [ 0.391874] pci 0000:00:1c.2: PME# disabled [ 0.391911] pci 0000:00:1c.3: [8086:2845] type 1 class 0x000604 [ 0.391999] pci 0000:00:1c.3: PME# supported from D0 D3hot D3cold [ 0.392005] pci 0000:00:1c.3: PME# disabled [ 0.392053] pci 0000:00:1d.0: [8086:2830] type 0 class 0x000c03 [ 0.392114] pci 0000:00:1d.0: reg 20: [io 0x1860-0x187f] [ 0.392162] pci 0000:00:1d.1: [8086:2831] type 0 class 0x000c03 [ 0.392238] pci 0000:00:1d.1: reg 20: [io 0x1880-0x189f] [ 0.392293] pci 0000:00:1d.2: [8086:2832] type 0 class 0x000c03 [ 0.392371] pci 0000:00:1d.2: reg 20: [io 0x18a0-0x18bf] [ 0.392438] pci 0000:00:1d.7: [8086:2836] type 0 class 0x000c03 [ 0.392466] pci 0000:00:1d.7: reg 10: [mem 0xfc504c00-0xfc504fff] [ 0.392567] pci 0000:00:1d.7: PME# supported from D0 D3hot D3cold [ 0.392573] pci 0000:00:1d.7: PME# disabled [ 0.392603] pci 0000:00:1e.0: [8086:2448] type 1 class 0x000604 [ 0.392698] pci 0000:00:1f.0: [8086:2815] type 0 class 0x000601 [ 0.392816] pci 0000:00:1f.0: quirk: [io 0x1000-0x107f] claimed by ICH6 ACPI/GPIO/TCO [ 0.392824] pci 0000:00:1f.0: quirk: [io 0x1180-0x11bf] claimed by ICH6 GPIO [ 0.392829] pci 0000:00:1f.0: ICH7 LPC Generic IO decode 1 PIO at 0680 (mask 007f) [ 0.392835] pci 0000:00:1f.0: ICH7 LPC Generic IO decode 2 PIO at 1640 (mask 000f) [ 0.392884] pci 0000:00:1f.1: [8086:2850] type 0 class 0x000101 [ 0.392903] pci 0000:00:1f.1: reg 10: [io 0x0000-0x0007] [ 0.392918] pci 0000:00:1f.1: reg 14: [io 0x0000-0x0003] [ 0.392931] pci 0000:00:1f.1: reg 18: [io 0x0000-0x0007] [ 0.392944] pci 0000:00:1f.1: reg 1c: [io 0x0000-0x0003] [ 0.392958] pci 0000:00:1f.1: reg 20: [io 0x1810-0x181f] [ 0.393014] pci 0000:00:1f.2: [8086:2829] type 0 class 0x000106 [ 0.393042] pci 0000:00:1f.2: reg 10: [io 0x1c00-0x1c07] [ 0.393056] pci 0000:00:1f.2: reg 14: [io 0x18d4-0x18d7] [ 0.393069] pci 0000:00:1f.2: reg 18: [io 0x18d8-0x18df] [ 0.393082] pci 0000:00:1f.2: reg 1c: [io 0x18d0-0x18d3] [ 0.393095] pci 0000:00:1f.2: reg 20: [io 0x18e0-0x18ff] [ 0.393108] pci 0000:00:1f.2: reg 24: [mem 0xfc504000-0xfc5047ff] [ 0.393157] pci 0000:00:1f.2: PME# supported from D3hot [ 0.393163] pci 0000:00:1f.2: PME# disabled [ 0.393188] pci 0000:00:1f.3: [8086:283e] type 0 class 0x000c05 [ 0.393206] pci 0000:00:1f.3: reg 10: [mem 0x00000000-0x000000ff] [ 0.393250] pci 0000:00:1f.3: reg 20: [io 0x1c20-0x1c3f] [ 0.393354] pci 0000:00:1c.0: PCI bridge to [bus 02-02] [ 0.393360] pci 0000:00:1c.0: bridge window [io 0x2000-0x2fff] [ 0.393367] pci 0000:00:1c.0: bridge window [mem 0xf6000000-0xf7ffffff] [ 0.393376] pci 0000:00:1c.0: bridge window [mem 0xf0000000-0xf1ffffff 64bit pref] [ 0.393501] pci 0000:04:00.0: [8086:4227] type 0 class 0x000280 [ 0.393557] pci 0000:04:00.0: reg 10: [mem 0xf8000000-0xf8000fff] [ 0.393895] pci 0000:04:00.0: PME# supported from D0 D3hot D3cold [ 0.393908] pci 0000:04:00.0: PME# disabled [ 0.393979] pci 0000:04:00.0: disabling ASPM on pre-1.1 PCIe device. You can enable it with 'pcie_aspm=force' [ 0.394021] pci 0000:00:1c.1: PCI bridge to [bus 04-04] [ 0.394027] pci 0000:00:1c.1: bridge window [io 0x3000-0x3fff] [ 0.394033] pci 0000:00:1c.1: bridge window [mem 0xf8000000-0xf9ffffff] [ 0.394043] pci 0000:00:1c.1: bridge window [mem 0xf2000000-0xf3ffffff 64bit pref] [ 0.394110] pci 0000:00:1c.2: PCI bridge to [bus 05-05] [ 0.394116] pci 0000:00:1c.2: bridge window [io 0x4000-0x4fff] [ 0.394122] pci 0000:00:1c.2: bridge window [mem 0xfa000000-0xfbffffff] [ 0.394132] pci 0000:00:1c.2: bridge window [mem 0xf4000000-0xf5ffffff 64bit pref] [ 0.394268] pci 0000:06:00.0: [14e4:1713] type 0 class 0x000200 [ 0.394336] pci 0000:06:00.0: reg 10: [mem 0xc8000000-0xc800ffff 64bit] [ 0.394639] pci 0000:06:00.0: PME# supported from D3hot D3cold [ 0.394651] pci 0000:06:00.0: PME# disabled [ 0.394783] pci 0000:00:1c.3: PCI bridge to [bus 06-06] [ 0.394789] pci 0000:00:1c.3: bridge window [io 0x5000-0x5fff] [ 0.394796] pci 0000:00:1c.3: bridge window [mem 0xc8000000-0xc9ffffff] [ 0.394806] pci 0000:00:1c.3: bridge window [mem 0xcc000000-0xcdffffff 64bit pref] [ 0.394868] pci 0000:08:06.0: [1180:0832] type 0 class 0x000c00 [ 0.394886] pci 0000:08:06.0: proprietary Ricoh MMC controller disabled (via firewire function) [ 0.394890] pci 0000:08:06.0: MMC cards are now supported by standard SDHCI controller [ 0.394909] pci 0000:08:06.0: reg 10: [mem 0xfc200000-0xfc2007ff] [ 0.395006] pci 0000:08:06.0: supports D1 D2 [ 0.395009] pci 0000:08:06.0: PME# supported from D0 D1 D2 D3hot D3cold [ 0.395016] pci 0000:08:06.0: PME# disabled [ 0.395045] pci 0000:08:06.1: [1180:0822] type 0 class 0x000805 [ 0.395069] pci 0000:08:06.1: reg 10: [mem 0xfc200800-0xfc2008ff] [ 0.395165] pci 0000:08:06.1: supports D1 D2 [ 0.395168] pci 0000:08:06.1: PME# supported from D0 D1 D2 D3hot D3cold [ 0.395174] pci 0000:08:06.1: PME# disabled [ 0.395199] pci 0000:08:06.2: [1180:0592] type 0 class 0x000880 [ 0.395224] pci 0000:08:06.2: reg 10: [mem 0xfc201000-0xfc2010ff] [ 0.395317] pci 0000:08:06.2: supports D1 D2 [ 0.395320] pci 0000:08:06.2: PME# supported from D0 D1 D2 D3hot D3cold [ 0.395326] pci 0000:08:06.2: PME# disabled [ 0.395350] pci 0000:08:06.3: [1180:0852] type 0 class 0x000880 [ 0.395376] pci 0000:08:06.3: reg 10: [mem 0xfc201400-0xfc2014ff] [ 0.395474] pci 0000:08:06.3: supports D1 D2 [ 0.395477] pci 0000:08:06.3: PME# supported from D0 D1 D2 D3hot D3cold [ 0.395484] pci 0000:08:06.3: PME# disabled [ 0.395549] pci 0000:00:1e.0: PCI bridge to [bus 08-08] (subtractive decode) [ 0.395556] pci 0000:00:1e.0: bridge window [io 0xf000-0x0000] (disabled) [ 0.395562] pci 0000:00:1e.0: bridge window [mem 0xfc200000-0xfc2fffff] [ 0.395572] pci 0000:00:1e.0: bridge window [mem 0xfff00000-0x000fffff pref] (disabled) [ 0.395576] pci 0000:00:1e.0: bridge window [io 0x0000-0xffff] (subtractive decode) [ 0.395580] pci 0000:00:1e.0: bridge window [mem 0x00000000-0xfffffffff] (subtractive decode) [ 0.395619] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0._PRT] [ 0.395828] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.RP01._PRT] [ 0.395887] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.RP02._PRT] [ 0.395944] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.RP03._PRT] [ 0.395999] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.RP04._PRT] [ 0.396116] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PCIB._PRT] [ 0.396176] pci0000:00: Requesting ACPI _OSC control (0x1d) [ 0.396181] pci0000:00: ACPI _OSC request failed (AE_NOT_FOUND), returned control mask: 0x1d [ 0.396184] ACPI _OSC control for PCIe not granted, disabling ASPM [ 0.404002] ACPI: PCI Interrupt Link [LNKA] (IRQs 1 3 4 *5 6 7 10 12 14 15) [ 0.404086] ACPI: PCI Interrupt Link [LNKB] (IRQs 1 3 4 5 6 7 11 12 14 15) *10 [ 0.404153] ACPI: PCI Interrupt Link [LNKC] (IRQs 1 3 4 5 6 *7 10 12 14 15) [ 0.404217] ACPI: PCI Interrupt Link [LNKD] (IRQs 1 3 4 5 6 7 11 12 14 15) *10 [ 0.404282] ACPI: PCI Interrupt Link [LNKE] (IRQs 1 3 4 5 6 7 10 12 14 15) *0, disabled. [ 0.404353] ACPI: PCI Interrupt Link [LNKF] (IRQs 1 3 4 5 6 7 11 12 14 15) *10 [ 0.404419] ACPI: PCI Interrupt Link [LNKG] (IRQs 1 3 4 5 6 7 10 12 14 15) *11 [ 0.404484] ACPI: PCI Interrupt Link [LNKH] (IRQs 1 3 4 5 6 7 *11 12 14 15) [ 0.404647] vgaarb: device added: PCI:0000:00:02.0,decodes=io+mem,owns=io+mem,locks=none [ 0.404670] vgaarb: loaded [ 0.404672] vgaarb: bridge control possible 0000:00:02.0 [ 0.404971] SCSI subsystem initialized [ 0.405069] libata version 3.00 loaded. [ 0.405143] usbcore: registered new interface driver usbfs [ 0.405158] usbcore: registered new interface driver hub [ 0.405200] usbcore: registered new device driver usb [ 0.405322] PCI: Using ACPI for IRQ routing [ 0.416330] PCI: pci_cache_line_size set to 64 bytes [ 0.416509] reserve RAM buffer: 000000000009f800 - 000000000009ffff [ 0.416513] reserve RAM buffer: 00000000bf6d0000 - 00000000bfffffff [ 0.416683] NetLabel: Initializing [ 0.416686] NetLabel: domain hash size = 128 [ 0.416688] NetLabel: protocols = UNLABELED CIPSOv4 [ 0.416706] NetLabel: unlabeled traffic allowed by default [ 0.416770] HPET: 3 timers in total, 0 timers will be used for per-cpu timer [ 0.416777] hpet0: at MMIO 0xfed00000, IRQs 2, 8, 0 [ 0.416784] hpet0: 3 comparators, 64-bit 14.318180 MHz counter [ 0.420524] Switching to clocksource hpet [ 0.423392] Switched to NOHz mode on CPU #0 [ 0.423487] Switched to NOHz mode on CPU #1 [ 0.430603] AppArmor: AppArmor Filesystem Enabled [ 0.430649] pnp: PnP ACPI init [ 0.430672] ACPI: bus type pnp registered [ 0.431166] pnp 00:00: [bus 00-ff] [ 0.431171] pnp 00:00: [io 0x0000-0x0cf7 window] [ 0.431174] pnp 00:00: [io 0x0cf8-0x0cff] [ 0.431177] pnp 00:00: [io 0x0d00-0xffff window] [ 0.431181] pnp 00:00: [mem 0x000a0000-0x000bffff window] [ 0.431184] pnp 00:00: [mem 0x000c0000-0x000c3fff window] [ 0.431187] pnp 00:00: [mem 0x000c4000-0x000c7fff window] [ 0.431190] pnp 00:00: [mem 0x000c8000-0x000cbfff window] [ 0.431197] pnp 00:00: [mem 0x000cc000-0x000cffff window] [ 0.431201] pnp 00:00: [mem 0x000d0000-0x000d3fff window] [ 0.431204] pnp 00:00: [mem 0x000d4000-0x000d7fff window] [ 0.431207] pnp 00:00: [mem 0x000d8000-0x000dbfff window] [ 0.431210] pnp 00:00: [mem 0x000dc000-0x000dffff window] [ 0.431213] pnp 00:00: [mem 0x000e0000-0x000e3fff window] [ 0.431216] pnp 00:00: [mem 0x000e4000-0x000e7fff window] [ 0.431219] pnp 00:00: [mem 0x000e8000-0x000ebfff window] [ 0.431222] pnp 00:00: [mem 0x000ec000-0x000effff window] [ 0.431225] pnp 00:00: [mem 0x000f0000-0x000fffff window] [ 0.431229] pnp 00:00: [mem 0xc0000000-0xdfffffff window] [ 0.431232] pnp 00:00: [mem 0xf0000000-0xfebfffff window] [ 0.431235] pnp 00:00: [mem 0xfed40000-0xfed44fff window] [ 0.431344] pnp 00:00: Plug and Play ACPI device, IDs PNP0a08 PNP0a03 (active) [ 0.431447] pnp 00:01: [mem 0xfed1c000-0xfed1ffff] [ 0.431450] pnp 00:01: [mem 0xfed14000-0xfed17fff] [ 0.431453] pnp 00:01: [mem 0xfed18000-0xfed18fff] [ 0.431456] pnp 00:01: [mem 0xfed19000-0xfed19fff] [ 0.431458] pnp 00:01: [mem 0xe0000000-0xefffffff] [ 0.431461] pnp 00:01: [mem 0xfed20000-0xfed3ffff] [ 0.431464] pnp 00:01: [mem 0xfed40000-0xfed44fff] [ 0.431467] pnp 00:01: [mem 0xfed45000-0xfed8ffff] [ 0.431559] system 00:01: [mem 0xfed1c000-0xfed1ffff] has been reserved [ 0.431564] system 00:01: [mem 0xfed14000-0xfed17fff] has been reserved [ 0.431568] system 00:01: [mem 0xfed18000-0xfed18fff] has been reserved [ 0.431572] system 00:01: [mem 0xfed19000-0xfed19fff] has been reserved [ 0.431576] system 00:01: [mem 0xe0000000-0xefffffff] has been reserved [ 0.431580] system 00:01: [mem 0xfed20000-0xfed3ffff] has been reserved [ 0.431584] system 00:01: [mem 0xfed40000-0xfed44fff] has been reserved [ 0.431588] system 00:01: [mem 0xfed45000-0xfed8ffff] has been reserved [ 0.431593] system 00:01: Plug and Play ACPI device, IDs PNP0c02 (active) [ 0.431859] pnp 00:02: [io 0x0000-0x001f] [ 0.431862] pnp 00:02: [io 0x0081-0x0091] [ 0.431864] pnp 00:02: [io 0x0093-0x009f] [ 0.431867] pnp 00:02: [io 0x00c0-0x00df] [ 0.431870] pnp 00:02: [dma 4] [ 0.431931] pnp 00:02: Plug and Play ACPI device, IDs PNP0200 (active) [ 0.431946] pnp 00:03: [mem 0xff000000-0xffffffff] [ 0.432030] pnp 00:03: Plug and Play ACPI device, IDs INT0800 (active) [ 0.432131] pnp 00:04: [mem 0xfed00000-0xfed003ff] [ 0.432218] system 00:04: [mem 0xfed00000-0xfed003ff] has been reserved [ 0.432223] system 00:04: Plug and Play ACPI device, IDs PNP0103 PNP0c01 (active) [ 0.432239] pnp 00:05: [io 0x00f0] [ 0.432256] pnp 00:05: [irq 13] [ 0.432321] pnp 00:05: Plug and Play ACPI device, IDs PNP0c04 (active) [ 0.432337] pnp 00:06: [io 0x002e-0x002f] [ 0.432340] pnp 00:06: [io 0x004e-0x004f] [ 0.432343] pnp 00:06: [io 0x0061] [ 0.432345] pnp 00:06: [io 0x0063] [ 0.432348] pnp 00:06: [io 0x0065] [ 0.432351] pnp 00:06: [io 0x0067] [ 0.432353] pnp 00:06: [io 0x0080] [ 0.432355] pnp 00:06: [io 0x0092] [ 0.432358] pnp 00:06: [io 0x00b2-0x00b3] [ 0.432361] pnp 00:06: [io 0x0680-0x069f] [ 0.432363] pnp 00:06: [io 0x0800-0x080f] [ 0.432366] pnp 00:06: [io 0x1000-0x107f] [ 0.432373] pnp 00:06: [io 0x1180-0x11bf] [ 0.432375] pnp 00:06: [io 0xfe00] [ 0.432378] pnp 00:06: [io 0xff00-0xff7f] [ 0.432479] system 00:06: [io 0x0680-0x069f] has been reserved [ 0.432484] system 00:06: [io 0x0800-0x080f] has been reserved [ 0.432487] system 00:06: [io 0x1000-0x107f] has been reserved [ 0.432491] system 00:06: [io 0x1180-0x11bf] has been reserved [ 0.432495] system 00:06: [io 0xfe00] has been reserved [ 0.432499] system 00:06: [io 0xff00-0xff7f] has been reserved [ 0.432504] system 00:06: Plug and Play ACPI device, IDs PNP0c02 (active) [ 0.432517] pnp 00:07: [io 0x0070-0x0077] [ 0.432525] pnp 00:07: [irq 8] [ 0.432587] pnp 00:07: Plug and Play ACPI device, IDs PNP0b00 (active) [ 0.452092] pnp 00:08: [io 0x0060] [ 0.452096] pnp 00:08: [io 0x0064] [ 0.452112] pnp 00:08: [irq 1] [ 0.452226] pnp 00:08: Plug and Play ACPI device, IDs PNP0303 (active) [ 0.452246] pnp 00:09: [irq 12] [ 0.452305] pnp 00:09: Plug and Play ACPI device, IDs PNP0f13 (active) [ 0.452340] pnp: PnP ACPI: found 10 devices [ 0.452343] ACPI: ACPI bus type pnp unregistered [ 0.459104] PCI: max bus depth: 1 pci_try_num: 2 [ 0.459195] pci 0000:00:1f.3: BAR 0: assigned [mem 0xc0000000-0xc00000ff] [ 0.459204] pci 0000:00:1f.3: BAR 0: set to [mem 0xc0000000-0xc00000ff] (PCI address [0xc0000000-0xc00000ff]) [ 0.459209] pci 0000:00:1c.0: PCI bridge to [bus 02-02] [ 0.459214] pci 0000:00:1c.0: bridge window [io 0x2000-0x2fff] [ 0.459222] pci 0000:00:1c.0: bridge window [mem 0xf6000000-0xf7ffffff] [ 0.459229] pci 0000:00:1c.0: bridge window [mem 0xf0000000-0xf1ffffff 64bit pref] [ 0.459239] pci 0000:00:1c.1: PCI bridge to [bus 04-04] [ 0.459244] pci 0000:00:1c.1: bridge window [io 0x3000-0x3fff] [ 0.459252] pci 0000:00:1c.1: bridge window [mem 0xf8000000-0xf9ffffff] [ 0.459259] pci 0000:00:1c.1: bridge window [mem 0xf2000000-0xf3ffffff 64bit pref] [ 0.459268] pci 0000:00:1c.2: PCI bridge to [bus 05-05] [ 0.459272] pci 0000:00:1c.2: bridge window [io 0x4000-0x4fff] [ 0.459280] pci 0000:00:1c.2: bridge window [mem 0xfa000000-0xfbffffff] [ 0.459287] pci 0000:00:1c.2: bridge window [mem 0xf4000000-0xf5ffffff 64bit pref] [ 0.459296] pci 0000:00:1c.3: PCI bridge to [bus 06-06] [ 0.459301] pci 0000:00:1c.3: bridge window [io 0x5000-0x5fff] [ 0.459308] pci 0000:00:1c.3: bridge window [mem 0xc8000000-0xc9ffffff] [ 0.459314] pci 0000:00:1c.3: bridge window [mem 0xcc000000-0xcdffffff 64bit pref] [ 0.459324] pci 0000:00:1e.0: PCI bridge to [bus 08-08] [ 0.459327] pci 0000:00:1e.0: bridge window [io disabled] [ 0.459334] pci 0000:00:1e.0: bridge window [mem 0xfc200000-0xfc2fffff] [ 0.459340] pci 0000:00:1e.0: bridge window [mem pref disabled] [ 0.459373] pci 0000:00:1c.0: PCI INT A -> GSI 17 (level, low) -> IRQ 17 [ 0.459380] pci 0000:00:1c.0: setting latency timer to 64 [ 0.459399] pci 0000:00:1c.1: PCI INT B -> GSI 16 (level, low) -> IRQ 16 [ 0.459405] pci 0000:00:1c.1: setting latency timer to 64 [ 0.459419] pci 0000:00:1c.2: PCI INT C -> GSI 18 (level, low) -> IRQ 18 [ 0.459425] pci 0000:00:1c.2: setting latency timer to 64 [ 0.459438] pci 0000:00:1c.3: PCI INT D -> GSI 19 (level, low) -> IRQ 19 [ 0.459444] pci 0000:00:1c.3: setting latency timer to 64 [ 0.459455] pci 0000:00:1e.0: setting latency timer to 64 [ 0.459460] pci_bus 0000:00: resource 0 [io 0x0000-0xffff] [ 0.459464] pci_bus 0000:00: resource 1 [mem 0x00000000-0xfffffffff] [ 0.459467] pci_bus 0000:02: resource 0 [io 0x2000-0x2fff] [ 0.459470] pci_bus 0000:02: resource 1 [mem 0xf6000000-0xf7ffffff] [ 0.459474] pci_bus 0000:02: resource 2 [mem 0xf0000000-0xf1ffffff 64bit pref] [ 0.459478] pci_bus 0000:04: resource 0 [io 0x3000-0x3fff] [ 0.459481] pci_bus 0000:04: resource 1 [mem 0xf8000000-0xf9ffffff] [ 0.459484] pci_bus 0000:04: resource 2 [mem 0xf2000000-0xf3ffffff 64bit pref] [ 0.459488] pci_bus 0000:05: resource 0 [io 0x4000-0x4fff] [ 0.459491] pci_bus 0000:05: resource 1 [mem 0xfa000000-0xfbffffff] [ 0.459495] pci_bus 0000:05: resource 2 [mem 0xf4000000-0xf5ffffff 64bit pref] [ 0.459498] pci_bus 0000:06: resource 0 [io 0x5000-0x5fff] [ 0.459501] pci_bus 0000:06: resource 1 [mem 0xc8000000-0xc9ffffff] [ 0.459505] pci_bus 0000:06: resource 2 [mem 0xcc000000-0xcdffffff 64bit pref] [ 0.459508] pci_bus 0000:08: resource 1 [mem 0xfc200000-0xfc2fffff] [ 0.459512] pci_bus 0000:08: resource 4 [io 0x0000-0xffff] [ 0.459515] pci_bus 0000:08: resource 5 [mem 0x00000000-0xfffffffff] [ 0.459580] NET: Registered protocol family 2 [ 0.459816] IP route cache hash table entries: 131072 (order: 8, 1048576 bytes) [ 0.461759] TCP established hash table entries: 524288 (order: 11, 8388608 bytes) [ 0.468207] TCP bind hash table entries: 65536 (order: 8, 1048576 bytes) [ 0.469024] TCP: Hash tables configured (established 524288 bind 65536) [ 0.469028] TCP reno registered [ 0.469052] UDP hash table entries: 2048 (order: 4, 65536 bytes) [ 0.469120] UDP-Lite hash table entries: 2048 (order: 4, 65536 bytes) [ 0.469325] NET: Registered protocol family 1 [ 0.469358] pci 0000:00:02.0: Boot video device [ 0.469577] PCI: CLS 64 bytes, default 64 [ 0.469604] Simple Boot Flag at 0x36 set to 0x1 [ 0.470069] audit: initializing netlink socket (disabled) [ 0.470088] type=2000 audit(1317800082.464:1): initialized [ 0.509918] HugeTLB registered 2 MB page size, pre-allocated 0 pages [ 0.531362] VFS: Disk quotas dquot_6.5.2 [ 0.531454] Dquot-cache hash table entries: 512 (order 0, 4096 bytes) [ 0.532343] fuse init (API version 7.16) [ 0.532465] msgmni has been set to 5719 [ 0.532931] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 253) [ 0.532975] io scheduler noop registered [ 0.532978] io scheduler deadline registered [ 0.533033] io scheduler cfq registered (default) [ 0.533206] pcieport 0000:00:1c.0: setting latency timer to 64 [ 0.533281] pcieport 0000:00:1c.0: irq 40 for MSI/MSI-X [ 0.533378] pcieport 0000:00:1c.1: setting latency timer to 64 [ 0.533444] pcieport 0000:00:1c.1: irq 41 for MSI/MSI-X [ 0.533540] pcieport 0000:00:1c.2: setting latency timer to 64 [ 0.533607] pcieport 0000:00:1c.2: irq 42 for MSI/MSI-X [ 0.533705] pcieport 0000:00:1c.3: setting latency timer to 64 [ 0.533770] pcieport 0000:00:1c.3: irq 43 for MSI/MSI-X [ 0.533898] pci_hotplug: PCI Hot Plug PCI Core version: 0.5 [ 0.533934] pciehp: PCI Express Hot Plug Controller Driver version: 0.4 [ 0.533994] intel_idle: MWAIT substates: 0x22220 [ 0.533997] intel_idle: does not run on family 6 model 15 [ 0.534105] ACPI: Deprecated procfs I/F for AC is loaded, please retry with CONFIG_ACPI_PROCFS_POWER cleared [ 0.534186] ACPI: AC Adapter [ACAD] (on-line) [ 0.534267] input: Lid Switch as /devices/LNXSYSTM:00/device:00/PNP0C0D:00/input/input0 [ 0.534291] ACPI: Lid Switch [LID0] [ 0.534348] input: Power Button as /devices/LNXSYSTM:00/device:00/PNP0C0C:00/input/input1 [ 0.534353] ACPI: Power Button [PWRB] [ 0.534429] input: Power Button as /devices/LNXSYSTM:00/LNXPWRBN:00/input/input2 [ 0.534434] ACPI: Power Button [PWRF] [ 0.534479] ACPI: acpi_idle registered with cpuidle [ 0.536970] Monitor-Mwait will be used to enter C-1 state [ 0.537024] Monitor-Mwait will be used to enter C-2 state [ 0.537059] Monitor-Mwait will be used to enter C-3 state [ 0.537066] Marking TSC unstable due to TSC halts in idle [ 0.576306] ACPI: Deprecated procfs I/F for battery is loaded, please retry with CONFIG_ACPI_PROCFS_POWER cleared [ 0.576339] ERST: Table is not found! [ 0.576477] Serial: 8250/16550 driver, 32 ports, IRQ sharing enabled [ 0.596514] ACPI: Battery Slot [BAT1] (battery present) [ 0.756873] Freeing initrd memory: 19464k freed [ 0.789948] Linux agpgart interface v0.103 [ 0.790084] agpgart-intel 0000:00:00.0: Intel 965GM Chipset [ 0.790242] agpgart-intel 0000:00:00.0: detected gtt size: 524288K total, 262144K mappable [ 0.791097] agpgart-intel 0000:00:00.0: detected 8192K stolen memory [ 0.791250] agpgart-intel 0000:00:00.0: AGP aperture is 256M @ 0xd0000000 [ 0.792794] brd: module loaded [ 0.793486] loop: module loaded [ 0.793683] ata_piix 0000:00:1f.1: version 2.13 [ 0.793701] ata_piix 0000:00:1f.1: PCI INT A -> GSI 19 (level, low) -> IRQ 19 [ 0.793746] ata_piix 0000:00:1f.1: setting latency timer to 64 [ 0.794143] scsi0 : ata_piix [ 0.794282] scsi1 : ata_piix [ 0.794784] ata1: PATA max UDMA/100 cmd 0x1f0 ctl 0x3f6 bmdma 0x1810 irq 14 [ 0.794789] ata2: PATA max UDMA/100 cmd 0x170 ctl 0x376 bmdma 0x1818 irq 15 [ 0.795227] Fixed MDIO Bus: probed [ 0.795261] PPP generic driver version 2.4.2 [ 0.795315] tun: Universal TUN/TAP device driver, 1.6 [ 0.795318] tun: (C) 1999-2004 Max Krasnyansky [ 0.795429] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver [ 0.795451] ehci_hcd 0000:00:1a.7: PCI INT C -> GSI 18 (level, low) -> IRQ 18 [ 0.795472] ehci_hcd 0000:00:1a.7: setting latency timer to 64 [ 0.795477] ehci_hcd 0000:00:1a.7: EHCI Host Controller [ 0.795524] ehci_hcd 0000:00:1a.7: new USB bus registered, assigned bus number 1 [ 0.795567] ehci_hcd 0000:00:1a.7: debug port 1 [ 0.799463] ehci_hcd 0000:00:1a.7: cache line size of 64 is not supported [ 0.799485] ehci_hcd 0000:00:1a.7: irq 18, io mem 0xfc504800 [ 0.812020] ehci_hcd 0000:00:1a.7: USB 2.0 started, EHCI 1.00 [ 0.812182] hub 1-0:1.0: USB hub found [ 0.812189] hub 1-0:1.0: 4 ports detected [ 0.812291] ehci_hcd 0000:00:1d.7: PCI INT A -> GSI 23 (level, low) -> IRQ 23 [ 0.812305] ehci_hcd 0000:00:1d.7: setting latency timer to 64 [ 0.812310] ehci_hcd 0000:00:1d.7: EHCI Host Controller [ 0.812363] ehci_hcd 0000:00:1d.7: new USB bus registered, assigned bus number 2 [ 0.812398] ehci_hcd 0000:00:1d.7: debug port 1 [ 0.816279] ehci_hcd 0000:00:1d.7: cache line size of 64 is not supported [ 0.816301] ehci_hcd 0000:00:1d.7: irq 23, io mem 0xfc504c00 [ 0.832023] ehci_hcd 0000:00:1d.7: USB 2.0 started, EHCI 1.00 [ 0.832151] hub 2-0:1.0: USB hub found [ 0.832157] hub 2-0:1.0: 6 ports detected [ 0.832258] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver [ 0.832276] uhci_hcd: USB Universal Host Controller Interface driver [ 0.832305] uhci_hcd 0000:00:1a.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16 [ 0.832314] uhci_hcd 0000:00:1a.0: setting latency timer to 64 [ 0.832319] uhci_hcd 0000:00:1a.0: UHCI Host Controller [ 0.832366] uhci_hcd 0000:00:1a.0: new USB bus registered, assigned bus number 3 [ 0.832412] uhci_hcd 0000:00:1a.0: irq 16, io base 0x00001820 [ 0.832569] hub 3-0:1.0: USB hub found [ 0.832575] hub 3-0:1.0: 2 ports detected [ 0.832668] uhci_hcd 0000:00:1a.1: PCI INT B -> GSI 21 (level, low) -> IRQ 21 [ 0.832679] uhci_hcd 0000:00:1a.1: setting latency timer to 64 [ 0.832684] uhci_hcd 0000:00:1a.1: UHCI Host Controller [ 0.832731] uhci_hcd 0000:00:1a.1: new USB bus registered, assigned bus number 4 [ 0.832775] uhci_hcd 0000:00:1a.1: irq 21, io base 0x00001840 [ 0.832936] hub 4-0:1.0: USB hub found [ 0.832941] hub 4-0:1.0: 2 ports detected [ 0.833028] uhci_hcd 0000:00:1d.0: PCI INT A -> GSI 23 (level, low) -> IRQ 23 [ 0.833037] uhci_hcd 0000:00:1d.0: setting latency timer to 64 [ 0.833042] uhci_hcd 0000:00:1d.0: UHCI Host Controller [ 0.833099] uhci_hcd 0000:00:1d.0: new USB bus registered, assigned bus number 5 [ 0.833134] uhci_hcd 0000:00:1d.0: irq 23, io base 0x00001860 [ 0.833291] hub 5-0:1.0: USB hub found [ 0.833296] hub 5-0:1.0: 2 ports detected [ 0.833384] uhci_hcd 0000:00:1d.1: PCI INT B -> GSI 19 (level, low) -> IRQ 19 [ 0.833392] uhci_hcd 0000:00:1d.1: setting latency timer to 64 [ 0.833397] uhci_hcd 0000:00:1d.1: UHCI Host Controller [ 0.833448] uhci_hcd 0000:00:1d.1: new USB bus registered, assigned bus number 6 [ 0.833493] uhci_hcd 0000:00:1d.1: irq 19, io base 0x00001880 [ 0.833649] hub 6-0:1.0: USB hub found [ 0.833655] hub 6-0:1.0: 2 ports detected [ 0.833737] uhci_hcd 0000:00:1d.2: PCI INT C -> GSI 18 (level, low) -> IRQ 18 [ 0.833746] uhci_hcd 0000:00:1d.2: setting latency timer to 64 [ 0.833750] uhci_hcd 0000:00:1d.2: UHCI Host Controller [ 0.833797] uhci_hcd 0000:00:1d.2: new USB bus registered, assigned bus number 7 [ 0.833832] uhci_hcd 0000:00:1d.2: irq 18, io base 0x000018a0 [ 0.833984] hub 7-0:1.0: USB hub found [ 0.833990] hub 7-0:1.0: 2 ports detected [ 0.834133] i8042: PNP: PS/2 Controller [PNP0303:PS2K,PNP0f13:PS2M] at 0x60,0x64 irq 1,12 [ 0.858635] serio: i8042 KBD port at 0x60,0x64 irq 1 [ 0.858644] serio: i8042 AUX port at 0x60,0x64 irq 12 [ 0.858792] mousedev: PS/2 mouse device common for all mice [ 0.860515] rtc_cmos 00:07: RTC can wake from S4 [ 0.860650] rtc_cmos 00:07: rtc core: registered rtc_cmos as rtc0 [ 0.860686] rtc0: alarms up to one month, y3k, 242 bytes nvram, hpet irqs [ 0.860821] device-mapper: uevent: version 1.0.3 [ 0.860928] device-mapper: ioctl: 4.20.0-ioctl (2011-02-02) initialised: dm-devel@redhat.com [ 0.861015] cpuidle: using governor ladder [ 0.861137] cpuidle: using governor menu [ 0.861140] EFI Variables Facility v0.08 2004-May-17 [ 0.861497] TCP cubic registered [ 0.861666] NET: Registered protocol family 10 [ 0.862339] NET: Registered protocol family 17 [ 0.862362] Registering the dns_resolver key type [ 0.862505] PM: Hibernation image not present or could not be loaded. [ 0.862521] registered taskstats version 1 [ 0.881709] Magic number: 15:169:571 [ 0.881852] rtc_cmos 00:07: setting system clock to 2011-10-05 07:34:43 UTC (1317800083) [ 0.882695] BIOS EDD facility v0.16 2004-Jun-25, 0 devices found [ 0.882699] EDD information not available. [ 0.885384] input: AT Translated Set 2 keyboard as /devices/platform/i8042/serio0/input/input3 [ 0.964510] ata1.00: ATAPI: MATSHITADVD-RAM UJ-850 z, RB32, max UDMA/33 [ 0.980374] ata1.00: configured for UDMA/33 [ 0.983110] scsi 0:0:0:0: CD-ROM MATSHITA DVD-RAM UJ-850 z RB32 PQ: 0 ANSI: 5 [ 0.985684] sr0: scsi3-mmc drive: 24x/24x writer dvd-ram cd/rw xa/form2 cdda tray [ 0.985690] cdrom: Uniform CD-ROM driver Revision: 3.20 [ 0.985886] sr 0:0:0:0: Attached scsi CD-ROM sr0 [ 0.985957] sr 0:0:0:0: Attached scsi generic sg0 type 5 [ 0.988684] Freeing unused kernel memory: 984k freed [ 0.989019] Write protecting the kernel read-only data: 10240k [ 0.989354] Freeing unused kernel memory: 20k freed [ 0.996526] Freeing unused kernel memory: 1400k freed [ 1.023090] udevd[92]: starting version 173 [ 1.095474] [drm] Initialized drm 1.1.0 20060810 [ 1.111223] tg3.c:v3.119 (May 18, 2011) [ 1.111255] tg3 0000:06:00.0: PCI INT A -> GSI 19 (level, low) -> IRQ 19 [ 1.111275] tg3 0000:06:00.0: setting latency timer to 64 [ 1.123354] wmi: Mapper loaded [ 1.135292] i915 0000:00:02.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16 [ 1.135301] i915 0000:00:02.0: setting latency timer to 64 [ 1.229432] i915 0000:00:02.0: irq 44 for MSI/MSI-X [ 1.229442] [drm] Supports vblank timestamp caching Rev 1 (10.10.2010). [ 1.229444] [drm] Driver supports precise vblank timestamp query. [ 1.229504] vgaarb: device changed decodes: PCI:0000:00:02.0,olddecodes=io+mem,decodes=io+mem:owns=io+mem [ 1.231431] sdhci: Secure Digital Host Controller Interface driver [ 1.231435] sdhci: Copyright(c) Pierre Ossman [ 1.231761] sdhci-pci 0000:08:06.1: SDHCI controller found [1180:0822] (rev 19) [ 1.231780] sdhci-pci 0000:08:06.1: PCI INT B -> GSI 23 (level, low) -> IRQ 23 [ 1.232804] sdhci-pci 0000:08:06.1: Will use DMA mode even though HW doesn't fully claim to support it. [ 1.251222] mmc0: no vmmc regulator found [ 1.252265] Registered led device: mmc0:: [ 1.258216] mmc0: SDHCI controller on PCI [0000:08:06.1] using DMA [ 1.278826] tg3 0000:06:00.0: eth0: Tigon3 [partno(BCM95906) rev c002] (PCI Express) MAC address 00:1b:38:0c:7f:47 [ 1.278833] tg3 0000:06:00.0: eth0: attached PHY is 5906 (10/100Base-TX Ethernet) (WireSpeed[0], EEE[0]) [ 1.278838] tg3 0000:06:00.0: eth0: RXcsums[1] LinkChgREG[0] MIirq[0] ASF[0] TSOcap[1] [ 1.278842] tg3 0000:06:00.0: eth0: dma_rwctrl[76180000] dma_mask[64-bit] [ 1.288114] firewire_ohci 0000:08:06.0: PCI INT A -> GSI 22 (level, low) -> IRQ 22 [ 1.288352] fixme: max PWM is zero. [ 1.321105] [drm] initialized overlay support [ 1.363095] firewire_ohci: Added fw-ohci device 0000:08:06.0, OHCI v1.10, 4 IR + 4 IT contexts, quirks 0x1 [ 1.429305] usb 1-4: new high speed USB device number 4 using ehci_hcd [ 1.510188] fbcon: inteldrmfb (fb0) is primary device [ 1.510267] Console: switching to colour frame buffer device 160x50 [ 1.510301] fb0: inteldrmfb frame buffer device [ 1.510304] drm: registered panic notifier [ 1.596139] acpi device:08: registered as cooling_device2 [ 1.596350] input: Video Bus as /devices/LNXSYSTM:00/device:00/PNP0A08:00/LNXVIDEO:01/input/input4 [ 1.596428] ACPI: Video Device [GFX0] (multi-head: yes rom: no post: no) [ 1.596505] [drm] Initialized i915 1.6.0 20080730 for 0000:00:02.0 on minor 0 [ 1.596723] ahci 0000:00:1f.2: version 3.0 [ 1.596748] ahci 0000:00:1f.2: PCI INT B -> GSI 19 (level, low) -> IRQ 19 [ 1.596832] ahci 0000:00:1f.2: irq 45 for MSI/MSI-X [ 1.596928] ahci 0000:00:1f.2: AHCI 0001.0100 32 slots 3 ports 3 Gbps 0x7 impl SATA mode [ 1.596934] ahci 0000:00:1f.2: flags: 64bit ncq sntf pm led clo pio slum part ccc [ 1.596941] ahci 0000:00:1f.2: setting latency timer to 64 [ 1.600697] scsi2 : ahci [ 1.601002] scsi3 : ahci [ 1.601154] scsi4 : ahci [ 1.601328] ata3: SATA max UDMA/133 abar m2048@0xfc504000 port 0xfc504100 irq 45 [ 1.601335] ata4: SATA max UDMA/133 abar m2048@0xfc504000 port 0xfc504180 irq 45 [ 1.601340] ata5: SATA max UDMA/133 abar m2048@0xfc504000 port 0xfc504200 irq 45 [ 1.860262] firewire_core: created device fw0: GUID 00023f7bac4040de, S400 [ 1.920122] ata3: SATA link up 3.0 Gbps (SStatus 123 SControl 300) [ 1.921792] ata3.00: unexpected _GTF length (8) [ 1.922070] ata3.00: ATA-8: WDC WD2500BEKT-75PVMT0, 01.01A01, max UDMA/133 [ 1.922077] ata3.00: 488397168 sectors, multi 16: LBA48 NCQ (depth 31/32), AA [ 1.923756] ata3.00: unexpected _GTF length (8) [ 1.924053] ata4: SATA link down (SStatus 0 SControl 300) [ 1.924081] ata3.00: configured for UDMA/133 [ 1.924106] ata5: SATA link down (SStatus 0 SControl 300) [ 1.924318] scsi 2:0:0:0: Direct-Access ATA WDC WD2500BEKT-7 01.0 PQ: 0 ANSI: 5 [ 1.924525] sd 2:0:0:0: Attached scsi generic sg1 type 0 [ 1.924642] sd 2:0:0:0: [sda] 488397168 512-byte logical blocks: (250 GB/232 GiB) [ 1.924823] sd 2:0:0:0: [sda] Write Protect is off [ 1.924828] sd 2:0:0:0: [sda] Mode Sense: 00 3a 00 00 [ 1.924898] sd 2:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA [ 2.020840] sda: sda1 sda2 sda3 sda4 < sda5 > [ 2.021461] sd 2:0:0:0: [sda] Attached SCSI disk [ 2.032059] usb 3-1: new full speed USB device number 2 using uhci_hcd [ 2.464056] usb 4-1: new full speed USB device number 2 using uhci_hcd [ 2.872042] usb 6-1: new low speed USB device number 2 using uhci_hcd [ 3.093235] input: MLK Trust Mouse as /devices/pci0000:00/0000:00:1d.1/usb6/6-1/6-1:1.0/input/input5 [ 3.093727] generic-usb 0003:04FC:05DA.0001: input,hiddev0,hidraw0: USB HID v1.10 Mouse [MLK Trust Mouse] on usb-0000:00:1d.1-1/input0 [ 3.093905] usbcore: registered new interface driver usbhid [ 3.093909] usbhid: USB HID core driver [ 3.288960] EXT4-fs (sda2): mounted filesystem with ordered data mode. Opts: (null) [ 3.308073] usb 6-2: new full speed USB device number 3 using uhci_hcd [ 3.720052] usb 7-1: new low speed USB device number 2 using uhci_hcd [ 3.918393] input: LITEON Technology USB Multimedia Keyboard as /devices/pci0000:00/0000:00:1d.2/usb7/7-1/7-1:1.0/input/input6 [ 3.918495] generic-usb 0003:046D:C312.0002: input,hidraw1: USB HID v1.10 Keyboard [LITEON Technology USB Multimedia Keyboard] on usb-0000:00:1d.2-1/input0 [ 5.565904] Adding 15999996k swap on /dev/sda3. Priority:-1 extents:1 across:15999996k [ 5.691364] udevd[373]: starting version 173 [ 6.303871] lp: driver loaded but no devices found [ 7.040655] cfg80211: Calling CRDA to update world regulatory domain [ 7.159284] r852 0000:08:06.3: PCI INT B -> GSI 23 (level, low) -> IRQ 23 [ 7.159297] r852 0000:08:06.3: setting latency timer to 64 [ 7.159394] r852: Non dma capable device detected, dma disabled [ 7.159411] r852: driver loaded successfully [ 7.169632] iwl3945: Intel(R) PRO/Wireless 3945ABG/BG Network Connection driver for Linux, in-tree:s [ 7.169637] iwl3945: Copyright(c) 2003-2011 Intel Corporation [ 7.169734] iwl3945 0000:04:00.0: PCI INT A -> GSI 17 (level, low) -> IRQ 17 [ 7.169751] iwl3945 0000:04:00.0: setting latency timer to 64 [ 7.225063] iwl3945 0000:04:00.0: Tunable channels: 13 802.11bg, 23 802.11a channels [ 7.225067] iwl3945 0000:04:00.0: Detected Intel Wireless WiFi Link 3945ABG [ 7.225225] iwl3945 0000:04:00.0: irq 46 for MSI/MSI-X [ 7.225470] Registered led device: phy0-led [ 7.225511] cfg80211: Ignoring regulatory request Set by core since the driver uses its own custom regulatory domain [ 7.521071] ieee80211 phy0: Selected rate control algorithm 'iwl-3945-rs' [ 7.728682] udevd[389]: renamed network interface eth0 to eth1 [ 7.785421] udevd[392]: renamed network interface wlan0 to wlan1 [ 7.839555] device-mapper: multipath: version 1.3.0 loaded [ 7.920206] Synaptics Touchpad, model: 1, fw: 6.3, id: 0x25c0b1, caps: 0xa04713/0x200000/0x0 [ 8.001393] input: SynPS/2 Synaptics TouchPad as /devices/platform/i8042/serio1/input/input7 [ 8.103705] Linux video capture interface: v2.00 [ 8.142601] uvcvideo: Found UVC 1.00 device USB 2.0 Camera (04f2:b013) [ 8.145395] input: USB 2.0 Camera as /devices/pci0000:00/0000:00:1a.7/usb1/1-4/1-4:1.0/input/input8 [ 8.145503] usbcore: registered new interface driver uvcvideo [ 8.145506] USB Video Class driver (v1.1.0) [ 8.268868] gspca: v2.13.0 registered [ 8.426860] Bluetooth: Core ver 2.16 [ 8.426898] NET: Registered protocol family 31 [ 8.426901] Bluetooth: HCI device and connection manager initialized [ 8.426905] Bluetooth: HCI socket layer initialized [ 8.426908] Bluetooth: L2CAP socket layer initialized [ 8.426983] Bluetooth: SCO socket layer initialized [ 8.445120] Bluetooth: Generic Bluetooth USB driver ver 0.6 [ 8.445873] usbcore: registered new interface driver btusb [ 8.596127] cfg80211: Ignoring regulatory request Set by core since the driver uses its own custom regulatory domain [ 8.596132] cfg80211: World regulatory domain updated: [ 8.596135] cfg80211: (start_freq - end_freq @ bandwidth), (max_antenna_gain, max_eirp) [ 8.596139] cfg80211: (2402000 KHz - 2472000 KHz @ 40000 KHz), (300 mBi, 2000 mBm) [ 8.596144] cfg80211: (2457000 KHz - 2482000 KHz @ 20000 KHz), (300 mBi, 2000 mBm) [ 8.596147] cfg80211: (2474000 KHz - 2494000 KHz @ 20000 KHz), (300 mBi, 2000 mBm) [ 8.596151] cfg80211: (5170000 KHz - 5250000 KHz @ 40000 KHz), (300 mBi, 2000 mBm) [ 8.596155] cfg80211: (5735000 KHz - 5835000 KHz @ 40000 KHz), (300 mBi, 2000 mBm) [ 8.713241] HDA Intel 0000:00:1b.0: PCI INT A -> GSI 22 (level, low) -> IRQ 22 [ 8.713332] HDA Intel 0000:00:1b.0: irq 47 for MSI/MSI-X [ 8.713375] HDA Intel 0000:00:1b.0: setting latency timer to 64 [ 9.214524] type=1400 audit(1317800091.827:2): apparmor="STATUS" operation="profile_load" name="/sbin/dhclient" pid=762 comm="apparmor_parser" [ 9.214539] type=1400 audit(1317800091.827:3): apparmor="STATUS" operation="profile_replace" name="/sbin/dhclient" pid=760 comm="apparmor_parser" [ 9.214899] type=1400 audit(1317800091.827:4): apparmor="STATUS" operation="profile_load" name="/usr/lib/NetworkManager/nm-dhcp-client.action" pid=762 comm="apparmor_parser" [ 9.214917] type=1400 audit(1317800091.827:5): apparmor="STATUS" operation="profile_replace" name="/usr/lib/NetworkManager/nm-dhcp-client.action" pid=760 comm="apparmor_parser" [ 9.215139] type=1400 audit(1317800091.827:6): apparmor="STATUS" operation="profile_load" name="/usr/lib/connman/scripts/dhclient-script" pid=762 comm="apparmor_parser" [ 9.215162] type=1400 audit(1317800091.827:7): apparmor="STATUS" operation="profile_replace" name="/usr/lib/connman/scripts/dhclient-script" pid=760 comm="apparmor_parser" [ 9.215989] type=1400 audit(1317800091.827:8): apparmor="STATUS" operation="profile_replace" name="/sbin/dhclient" pid=761 comm="apparmor_parser" [ 9.216386] type=1400 audit(1317800091.831:9): apparmor="STATUS" operation="profile_replace" name="/usr/lib/NetworkManager/nm-dhcp-client.action" pid=761 comm="apparmor_parser" [ 9.216637] type=1400 audit(1317800091.831:10): apparmor="STATUS" operation="profile_replace" name="/usr/lib/connman/scripts/dhclient-script" pid=761 comm="apparmor_parser" [ 9.565602] input: zc3xx as /devices/pci0000:00/0000:00:1a.0/usb3/3-1/input/input9 [ 9.565840] usbcore: registered new interface driver zc3xx [ 9.567768] usbcore: registered new interface driver snd-usb-audio [ 10.957262] EXT4-fs (sda2): re-mounted. Opts: errors=remount-ro [ 11.498897] EXT4-fs (sda1): mounted filesystem with ordered data mode. Opts: (null) [ 11.610016] EXT4-fs (sda5): mounted filesystem with ordered data mode. Opts: (null) [ 13.338782] type=1400 audit(1317800095.951:11): apparmor="STATUS" operation="profile_load" name="/usr/lib/lightdm/lightdm-guest-session-wrapper" pid=1170 comm="apparmor_parser" [ 14.107842] ppdev: user-space parallel port driver [ 16.201248] microcode: CPU0 sig=0x6fd, pf=0x80, revision=0xa1 [ 16.241864] microcode: CPU1 sig=0x6fd, pf=0x80, revision=0xa1 [ 16.244584] microcode: Microcode Update Driver: v2.00 , Peter Oruba [ 16.257389] iwl3945 0000:04:00.0: loaded firmware version 15.32.2.9 [ 16.319712] microcode: CPU0 updated to revision 0xa4, date = 2010-10-02 [ 16.320392] microcode: CPU1 updated to revision 0xa4, date = 2010-10-02 [ 16.327663] ADDRCONF(NETDEV_UP): wlan1: link is not ready [ 16.411245] tg3 0000:06:00.0: irq 48 for MSI/MSI-X [ 16.441602] ADDRCONF(NETDEV_UP): eth1: link is not ready [ 17.163336] init: failsafe main process (1112) killed by TERM signal [ 17.369512] init: gdm main process (1340) killed by TERM signal [ 18.121686] tg3 0000:06:00.0: eth1: Link is up at 100 Mbps, full duplex [ 18.121691] tg3 0000:06:00.0: eth1: Flow control is on for TX and on for RX [ 18.122295] ADDRCONF(NETDEV_CHANGE): eth1: link becomes ready [ 21.210518] RPC: Registered named UNIX socket transport module. [ 21.210523] RPC: Registered udp transport module. [ 21.210525] RPC: Registered tcp transport module. [ 21.210528] RPC: Registered tcp NFSv4.1 backchannel transport module. [ 21.445931] Installing knfsd (copyright (C) 1996 okir@monad.swb.de). [ 21.627527] NFSD: Using /var/lib/nfs/v4recovery as the NFSv4 state recovery directory [ 21.636586] NFSD: starting 90-second grace period [ 24.852307] vboxdrv: Found 2 processor cores. [ 24.852593] vboxdrv: fAsync=0 offMin=0x1c2 offMax=0xae6 [ 24.852666] vboxdrv: TSC mode is 'synchronous', kernel timer mode is 'normal'. [ 24.852669] vboxdrv: Successfully loaded version 4.1.2_Ubuntu (interface 0x00190000). [ 25.101599] vboxpci: IOMMU not found (not registered) [ 27.046401] Bluetooth: BNEP (Ethernet Emulation) ver 1.3 [ 27.046405] Bluetooth: BNEP filters: protocol multicast [ 27.081903] Bluetooth: RFCOMM TTY layer initialized [ 27.081919] Bluetooth: RFCOMM socket layer initialized [ 27.081921] Bluetooth: RFCOMM ver 1.11 [ 28.752057] eth1: no IPv6 routers present [ 33.139443] init: plymouth-stop pre-start process (2005) terminated with status 1 [ 33.628053] EXT4-fs (sda2): re-mounted. Opts: errors=remount-ro,commit=0 [ 34.056830] EXT4-fs (sda1): re-mounted. Opts: commit=0 [ 34.217110] EXT4-fs (sda5): re-mounted. Opts: commit=0 [ 45.192742] wlan1: authenticate with 00:1a:c1:38:47:d4 (try 1) [ 45.196319] wlan1: authenticated [ 45.199717] wlan1: associate with 00:1a:c1:38:47:d4 (try 1) [ 45.202749] wlan1: RX AssocResp from 00:1a:c1:38:47:d4 (capab=0x431 status=0 aid=2) [ 45.202758] wlan1: associated [ 45.206342] ADDRCONF(NETDEV_CHANGE): wlan1: link becomes ready [ 45.206456] cfg80211: Calling CRDA for country: GB [ 45.213483] cfg80211: Updating information on frequency 2412 MHz for a 20 MHz width channel with regulatory rule: [ 45.213493] cfg80211: 2402000 KHz - 2482000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 45.213498] cfg80211: Updating information on frequency 2417 MHz for a 20 MHz width channel with regulatory rule: [ 45.213505] cfg80211: 2402000 KHz - 2482000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 45.213509] cfg80211: Updating information on frequency 2422 MHz for a 20 MHz width channel with regulatory rule: [ 45.213516] cfg80211: 2402000 KHz - 2482000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 45.213520] cfg80211: Updating information on frequency 2427 MHz for a 20 MHz width channel with regulatory rule: [ 45.213526] cfg80211: 2402000 KHz - 2482000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 45.213531] cfg80211: Updating information on frequency 2432 MHz for a 20 MHz width channel with regulatory rule: [ 45.213537] cfg80211: 2402000 KHz - 2482000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 45.213542] cfg80211: Updating information on frequency 2437 MHz for a 20 MHz width channel with regulatory rule: [ 45.213547] cfg80211: 2402000 KHz - 2482000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 45.213552] cfg80211: Updating information on frequency 2442 MHz for a 20 MHz width channel with regulatory rule: [ 45.213558] cfg80211: 2402000 KHz - 2482000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 45.213563] cfg80211: Updating information on frequency 2447 MHz for a 20 MHz width channel with regulatory rule: [ 45.213569] cfg80211: 2402000 KHz - 2482000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 45.213573] cfg80211: Updating information on frequency 2452 MHz for a 20 MHz width channel with regulatory rule: [ 45.213579] cfg80211: 2402000 KHz - 2482000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 45.213584] cfg80211: Updating information on frequency 2457 MHz for a 20 MHz width channel with regulatory rule: [ 45.213590] cfg80211: 2402000 KHz - 2482000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 45.213594] cfg80211: Updating information on frequency 2462 MHz for a 20 MHz width channel with regulatory rule: [ 45.213600] cfg80211: 2402000 KHz - 2482000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 45.213605] cfg80211: Updating information on frequency 2467 MHz for a 20 MHz width channel with regulatory rule: [ 45.213611] cfg80211: 2402000 KHz - 2482000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 45.213615] cfg80211: Updating information on frequency 2472 MHz for a 20 MHz width channel with regulatory rule: [ 45.213621] cfg80211: 2402000 KHz - 2482000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 45.213626] cfg80211: Disabling freq 5170 MHz [ 45.213630] cfg80211: Updating information on frequency 5180 MHz for a 20 MHz width channel with regulatory rule: [ 45.213636] cfg80211: 5170000 KHz - 5250000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 45.213640] cfg80211: Updating information on frequency 5190 MHz for a 20 MHz width channel with regulatory rule: [ 45.213646] cfg80211: 5170000 KHz - 5250000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 45.213651] cfg80211: Updating information on frequency 5200 MHz for a 20 MHz width channel with regulatory rule: [ 45.213657] cfg80211: 5170000 KHz - 5250000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 45.213662] cfg80211: Updating information on frequency 5210 MHz for a 20 MHz width channel with regulatory rule: [ 45.213667] cfg80211: 5170000 KHz - 5250000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 45.213672] cfg80211: Updating information on frequency 5220 MHz for a 20 MHz width channel with regulatory rule: [ 45.213678] cfg80211: 5170000 KHz - 5250000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 45.213683] cfg80211: Updating information on frequency 5230 MHz for a 20 MHz width channel with regulatory rule: [ 45.213688] cfg80211: 5170000 KHz - 5250000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 45.213693] cfg80211: Updating information on frequency 5240 MHz for a 20 MHz width channel with regulatory rule: [ 45.213699] cfg80211: 5170000 KHz - 5250000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 45.213704] cfg80211: Updating information on frequency 5260 MHz for a 20 MHz width channel with regulatory rule: [ 45.213710] cfg80211: 5250000 KHz - 5330000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 45.213714] cfg80211: Updating information on frequency 5280 MHz for a 20 MHz width channel with regulatory rule: [ 45.213720] cfg80211: 5250000 KHz - 5330000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 45.213725] cfg80211: Updating information on frequency 5300 MHz for a 20 MHz width channel with regulatory rule: [ 45.213731] cfg80211: 5250000 KHz - 5330000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 45.213736] cfg80211: Updating information on frequency 5320 MHz for a 20 MHz width channel with regulatory rule: [ 45.213742] cfg80211: 5250000 KHz - 5330000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 45.213746] cfg80211: Updating information on frequency 5500 MHz for a 20 MHz width channel with regulatory rule: [ 45.213752] cfg80211: 5490000 KHz - 5710000 KHz @ KHz), (N/A mBi, 2700 mBm) [ 45.213757] cfg80211: Updating information on frequency 5520 MHz for a 20 MHz width channel with regulatory rule: [ 45.213763] cfg80211: 5490000 KHz - 5710000 KHz @ KHz), (N/A mBi, 2700 mBm) [ 45.213768] cfg80211: Updating information on frequency 5540 MHz for a 20 MHz width channel with regulatory rule: [ 45.213774] cfg80211: 5490000 KHz - 5710000 KHz @ KHz), (N/A mBi, 2700 mBm) [ 45.213779] cfg80211: Updating information on frequency 5560 MHz for a 20 MHz width channel with regulatory rule: [ 45.213785] cfg80211: 5490000 KHz - 5710000 KHz @ KHz), (N/A mBi, 2700 mBm) [ 45.213789] cfg80211: Updating information on frequency 5580 MHz for a 20 MHz width channel with regulatory rule: [ 45.213795] cfg80211: 5490000 KHz - 5710000 KHz @ KHz), (N/A mBi, 2700 mBm) [ 45.213800] cfg80211: Updating information on frequency 5600 MHz for a 20 MHz width channel with regulatory rule: [ 45.213806] cfg80211: 5490000 KHz - 5710000 KHz @ KHz), (N/A mBi, 2700 mBm) [ 45.213810] cfg80211: Updating information on frequency 5620 MHz for a 20 MHz width channel with regulatory rule: [ 45.213816] cfg80211: 5490000 KHz - 5710000 KHz @ KHz), (N/A mBi, 2700 mBm) [ 45.213821] cfg80211: Updating information on frequency 5640 MHz for a 20 MHz width channel with regulatory rule: [ 45.213827] cfg80211: 5490000 KHz - 5710000 KHz @ KHz), (N/A mBi, 2700 mBm) [ 45.213831] cfg80211: Updating information on frequency 5660 MHz for a 20 MHz width channel with regulatory rule: [ 45.213837] cfg80211: 5490000 KHz - 5710000 KHz @ KHz), (N/A mBi, 2700 mBm) [ 45.213842] cfg80211: Updating information on frequency 5680 MHz for a 20 MHz width channel with regulatory rule: [ 45.213848] cfg80211: 5490000 KHz - 5710000 KHz @ KHz), (N/A mBi, 2700 mBm) [ 45.213852] cfg80211: Updating information on frequency 5700 MHz for a 20 MHz width channel with regulatory rule: [ 45.213858] cfg80211: 5490000 KHz - 5710000 KHz @ KHz), (N/A mBi, 2700 mBm) [ 45.213864] cfg80211: Regulatory domain changed to country: GB [ 45.213868] cfg80211: (start_freq - end_freq @ bandwidth), (max_antenna_gain, max_eirp) [ 45.213873] cfg80211: (2402000 KHz - 2482000 KHz @ 40000 KHz), (N/A, 2000 mBm) [ 45.213879] cfg80211: (5170000 KHz - 5250000 KHz @ 40000 KHz), (N/A, 2000 mBm) [ 45.213884] cfg80211: (5250000 KHz - 5330000 KHz @ 40000 KHz), (N/A, 2000 mBm) [ 45.213889] cfg80211: (5490000 KHz - 5710000 KHz @ 40000 KHz), (N/A, 2700 mBm) [ 52.640123] eth1: no IPv6 routers present [ 55.208282] wlan1: disassociating from 00:1a:c1:38:47:d4 by local choice (reason=3) [ 55.214021] cfg80211: All devices are disconnected, going to restore regulatory settings [ 55.214032] cfg80211: Restoring regulatory settings [ 55.214052] cfg80211: Calling CRDA to update world regulatory domain [ 55.214778] wlan1: deauthenticating from 00:1a:c1:38:47:d4 by local choice (reason=3) [ 55.221291] cfg80211: Ignoring regulatory request Set by core since the driver uses its own custom regulatory domain [ 55.221299] cfg80211: World regulatory domain updated: [ 55.221303] cfg80211: (start_freq - end_freq @ bandwidth), (max_antenna_gain, max_eirp) [ 55.221309] cfg80211: (2402000 KHz - 2472000 KHz @ 40000 KHz), (300 mBi, 2000 mBm) [ 55.221315] cfg80211: (2457000 KHz - 2482000 KHz @ 20000 KHz), (300 mBi, 2000 mBm) [ 55.221321] cfg80211: (2474000 KHz - 2494000 KHz @ 20000 KHz), (300 mBi, 2000 mBm) [ 55.221327] cfg80211: (5170000 KHz - 5250000 KHz @ 40000 KHz), (300 mBi, 2000 mBm) [ 55.221333] cfg80211: (5735000 KHz - 5835000 KHz @ 40000 KHz), (300 mBi, 2000 mBm) [ 55.392119] wlan1: no IPv6 routers present [ 58.763822] wlan1: authenticate with 00:1a:c1:38:47:d4 (try 1) [ 58.765582] wlan1: authenticated [ 58.766582] wlan1: associate with 00:1a:c1:38:47:d4 (try 1) [ 58.769972] wlan1: RX ReassocResp from 00:1a:c1:38:47:d4 (capab=0x431 status=0 aid=2) [ 58.769980] wlan1: associated [ 58.773587] cfg80211: Calling CRDA for country: GB [ 58.778304] cfg80211: Updating information on frequency 2412 MHz for a 20 MHz width channel with regulatory rule: [ 58.778310] cfg80211: 2402000 KHz - 2482000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 58.778314] cfg80211: Updating information on frequency 2417 MHz for a 20 MHz width channel with regulatory rule: [ 58.778318] cfg80211: 2402000 KHz - 2482000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 58.778321] cfg80211: Updating information on frequency 2422 MHz for a 20 MHz width channel with regulatory rule: [ 58.778325] cfg80211: 2402000 KHz - 2482000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 58.778328] cfg80211: Updating information on frequency 2427 MHz for a 20 MHz width channel with regulatory rule: [ 58.778332] cfg80211: 2402000 KHz - 2482000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 58.778335] cfg80211: Updating information on frequency 2432 MHz for a 20 MHz width channel with regulatory rule: [ 58.778340] cfg80211: 2402000 KHz - 2482000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 58.778343] cfg80211: Updating information on frequency 2437 MHz for a 20 MHz width channel with regulatory rule: [ 58.778347] cfg80211: 2402000 KHz - 2482000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 58.778350] cfg80211: Updating information on frequency 2442 MHz for a 20 MHz width channel with regulatory rule: [ 58.778354] cfg80211: 2402000 KHz - 2482000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 58.778357] cfg80211: Updating information on frequency 2447 MHz for a 20 MHz width channel with regulatory rule: [ 58.778361] cfg80211: 2402000 KHz - 2482000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 58.778364] cfg80211: Updating information on frequency 2452 MHz for a 20 MHz width channel with regulatory rule: [ 58.778368] cfg80211: 2402000 KHz - 2482000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 58.778371] cfg80211: Updating information on frequency 2457 MHz for a 20 MHz width channel with regulatory rule: [ 58.778375] cfg80211: 2402000 KHz - 2482000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 58.778378] cfg80211: Updating information on frequency 2462 MHz for a 20 MHz width channel with regulatory rule: [ 58.778382] cfg80211: 2402000 KHz - 2482000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 58.778385] cfg80211: Updating information on frequency 2467 MHz for a 20 MHz width channel with regulatory rule: [ 58.778389] cfg80211: 2402000 KHz - 2482000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 58.778392] cfg80211: Updating information on frequency 2472 MHz for a 20 MHz width channel with regulatory rule: [ 58.778396] cfg80211: 2402000 KHz - 2482000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 58.778399] cfg80211: Disabling freq 5170 MHz [ 58.778402] cfg80211: Updating information on frequency 5180 MHz for a 20 MHz width channel with regulatory rule: [ 58.778406] cfg80211: 5170000 KHz - 5250000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 58.778409] cfg80211: Updating information on frequency 5190 MHz for a 20 MHz width channel with regulatory rule: [ 58.778413] cfg80211: 5170000 KHz - 5250000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 58.778416] cfg80211: Updating information on frequency 5200 MHz for a 20 MHz width channel with regulatory rule: [ 58.778420] cfg80211: 5170000 KHz - 5250000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 58.778423] cfg80211: Updating information on frequency 5210 MHz for a 20 MHz width channel with regulatory rule: [ 58.778427] cfg80211: 5170000 KHz - 5250000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 58.778430] cfg80211: Updating information on frequency 5220 MHz for a 20 MHz width channel with regulatory rule: [ 58.778434] cfg80211: 5170000 KHz - 5250000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 58.778437] cfg80211: Updating information on frequency 5230 MHz for a 20 MHz width channel with regulatory rule: [ 58.778441] cfg80211: 5170000 KHz - 5250000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 58.778444] cfg80211: Updating information on frequency 5240 MHz for a 20 MHz width channel with regulatory rule: [ 58.778448] cfg80211: 5170000 KHz - 5250000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 58.778452] cfg80211: Updating information on frequency 5260 MHz for a 20 MHz width channel with regulatory rule: [ 58.778456] cfg80211: 5250000 KHz - 5330000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 58.778459] cfg80211: Updating information on frequency 5280 MHz for a 20 MHz width channel with regulatory rule: [ 58.778463] cfg80211: 5250000 KHz - 5330000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 58.778466] cfg80211: Updating information on frequency 5300 MHz for a 20 MHz width channel with regulatory rule: [ 58.778470] cfg80211: 5250000 KHz - 5330000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 58.778473] cfg80211: Updating information on frequency 5320 MHz for a 20 MHz width channel with regulatory rule: [ 58.778477] cfg80211: 5250000 KHz - 5330000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 58.778480] cfg80211: Updating information on frequency 5500 MHz for a 20 MHz width channel with regulatory rule: [ 58.778484] cfg80211: 5490000 KHz - 5710000 KHz @ KHz), (N/A mBi, 2700 mBm) [ 58.778487] cfg80211: Updating information on frequency 5520 MHz for a 20 MHz width channel with regulatory rule: [ 58.778491] cfg80211: 5490000 KHz - 5710000 KHz @ KHz), (N/A mBi, 2700 mBm) [ 58.778494] cfg80211: Updating information on frequency 5540 MHz for a 20 MHz width channel with regulatory rule: [ 58.778498] cfg80211: 5490000 KHz - 5710000 KHz @ KHz), (N/A mBi, 2700 mBm) [ 58.778501] cfg80211: Updating information on frequency 5560 MHz for a 20 MHz width channel with regulatory rule: [ 58.778505] cfg80211: 5490000 KHz - 5710000 KHz @ KHz), (N/A mBi, 2700 mBm) [ 58.778508] cfg80211: Updating information on frequency 5580 MHz for a 20 MHz width channel with regulatory rule: [ 58.778512] cfg80211: 5490000 KHz - 5710000 KHz @ KHz), (N/A mBi, 2700 mBm) [ 58.778515] cfg80211: Updating information on frequency 5600 MHz for a 20 MHz width channel with regulatory rule: [ 58.778519] cfg80211: 5490000 KHz - 5710000 KHz @ KHz), (N/A mBi, 2700 mBm) [ 58.778522] cfg80211: Updating information on frequency 5620 MHz for a 20 MHz width channel with regulatory rule: [ 58.778526] cfg80211: 5490000 KHz - 5710000 KHz @ KHz), (N/A mBi, 2700 mBm) [ 58.778529] cfg80211: Updating information on frequency 5640 MHz for a 20 MHz width channel with regulatory rule: [ 58.778533] cfg80211: 5490000 KHz - 5710000 KHz @ KHz), (N/A mBi, 2700 mBm) [ 58.778536] cfg80211: Updating information on frequency 5660 MHz for a 20 MHz width channel with regulatory rule: [ 58.778540] cfg80211: 5490000 KHz - 5710000 KHz @ KHz), (N/A mBi, 2700 mBm) [ 58.778543] cfg80211: Updating information on frequency 5680 MHz for a 20 MHz width channel with regulatory rule: [ 58.778547] cfg80211: 5490000 KHz - 5710000 KHz @ KHz), (N/A mBi, 2700 mBm) [ 58.778550] cfg80211: Updating information on frequency 5700 MHz for a 20 MHz width channel with regulatory rule: [ 58.778554] cfg80211: 5490000 KHz - 5710000 KHz @ KHz), (N/A mBi, 2700 mBm) [ 58.778558] cfg80211: Regulatory domain changed to country: GB [ 58.778560] cfg80211: (start_freq - end_freq @ bandwidth), (max_antenna_gain, max_eirp) [ 58.778564] cfg80211: (2402000 KHz - 2482000 KHz @ 40000 KHz), (N/A, 2000 mBm) [ 58.778568] cfg80211: (5170000 KHz - 5250000 KHz @ 40000 KHz), (N/A, 2000 mBm) [ 58.778571] cfg80211: (5250000 KHz - 5330000 KHz @ 40000 KHz), (N/A, 2000 mBm) [ 58.778575] cfg80211: (5490000 KHz - 5710000 KHz @ 40000 KHz), (N/A, 2700 mBm) [ 70.176124] wlan1: no IPv6 routers present [ 75.152080] eth1: no IPv6 routers present [ 98.736094] eth1: no IPv6 routers present [ 648.357292] ecryptfs_mount: kern_path() failed [ 648.388155] Reading sb failed; rc = [-2] [ 670.016019] eth1: no IPv6 routers present [ 688.176048] eth1: no IPv6 routers present [ 711.096140] eth1: no IPv6 routers present fwts-test/arg-results-0001/results-0005.log000066400000000000000000000142421231470457100204410ustar00rootroot00000000000000klog klog: Scan kernel log for errors and warnings. klog ---------------------------------------------------------- klog Test 1 of 1: Kernel log error check. klog FAILED [HIGH] KlogAcpiMultipleApicMadtFound: Test 1, HIGH klog Kernel message: [ 0.000000] ACPI: BIOS bug: multiple APIC klog /MADT found, using 0 klog klog ADVICE: The kernel has detected more than one ACPI klog Multiple APIC Description Table (MADT) (these tables have klog the "APIC" signature). There should only be one MADT and klog the kernel will by default select the first one. However, klog one can override this and select the Nth MADT using klog acpi_apic_instance=N. klog klog Kernel message: [ 0.228089] [Firmware Bug]: ACPI: BIOS klog _OSI(Linux) query ignored klog klog ADVICE: This is not exactly a failure mode but a warning klog from the kernel. The _OSI() method has implemented a match klog to the 'Linux' query in the DSDT and this is redundant klog because the ACPI driver matches onto the Windows _OSI klog strings by default. klog klog FAILED [CRITICAL] KlogPciAcpiOscRequestFailed: Test 1, klog CRITICAL Kernel message: [ 0.396181] pci0000:00: ACPI _OSC klog request failed (AE_NOT_FOUND), returned control mask: 0x1d klog klog ADVICE: The _OSC method evaluation failed, which will klog result in disabling PCIe functionality, for example, the klog Linux kernel has to disable Active State Power Management klog (ASPM) which means that PCIe power management is not klog optimally configured. klog klog FAILED [LOW] KlogAcpiDeprecatedProcfsInterface: Test 1, klog LOW Kernel message: [ 0.534105] ACPI: Deprecated procfs I klog /F for AC is loaded, please retry with klog CONFIG_ACPI_PROCFS_POWER cleared klog klog ADVICE: Using an old procfs interface for ACPI AC Adapter, klog this occurs if CONFIG_ACPI_PROCFS_POWER is enabled. This klog should be disabled for kernels > 2.6.37. klog klog FAILED [LOW] KlogAcpiDeprecatedProcfsInterface: Test 1, klog LOW Kernel message: [ 0.576306] ACPI: Deprecated procfs I klog /F for battery is loaded, please retry with klog CONFIG_ACPI_PROCFS_POWER cleared klog klog ADVICE: Using an old procfs interface for ACPI battery, klog this occurs if CONFIG_ACPI_PROCFS_POWER is enabled. This klog should be disabled for kernels > 2.6.37. klog klog Found 4 unique errors in kernel log. klog klog ========================================================== klog 0 passed, 4 failed, 0 warning, 0 aborted, 0 skipped, 0 klog info only. klog ========================================================== klog klog: Scan kernel log for errors and warnings. klog ---------------------------------------------------------- klog Test 1 of 1: Kernel log error check. klog FAILED [HIGH] KlogAcpiMultipleApicMadtFound: Test 1, HIGH klog Kernel message: [ 0.000000] ACPI: BIOS bug: multiple APIC klog /MADT found, using 0 klog klog ADVICE: The kernel has detected more than one ACPI klog Multiple APIC Description Table (MADT) (these tables have klog the "APIC" signature). There should only be one MADT and klog the kernel will by default select the first one. However, klog one can override this and select the Nth MADT using klog acpi_apic_instance=N. klog klog Kernel message: [ 0.228089] [Firmware Bug]: ACPI: BIOS klog _OSI(Linux) query ignored klog klog ADVICE: This is not exactly a failure mode but a warning klog from the kernel. The _OSI() method has implemented a match klog to the 'Linux' query in the DSDT and this is redundant klog because the ACPI driver matches onto the Windows _OSI klog strings by default. klog klog FAILED [CRITICAL] KlogPciAcpiOscRequestFailed: Test 1, klog CRITICAL Kernel message: [ 0.396181] pci0000:00: ACPI _OSC klog request failed (AE_NOT_FOUND), returned control mask: 0x1d klog klog ADVICE: The _OSC method evaluation failed, which will klog result in disabling PCIe functionality, for example, the klog Linux kernel has to disable Active State Power Management klog (ASPM) which means that PCIe power management is not klog optimally configured. klog klog FAILED [LOW] KlogAcpiDeprecatedProcfsInterface: Test 1, klog LOW Kernel message: [ 0.534105] ACPI: Deprecated procfs I klog /F for AC is loaded, please retry with klog CONFIG_ACPI_PROCFS_POWER cleared klog klog ADVICE: Using an old procfs interface for ACPI AC Adapter, klog this occurs if CONFIG_ACPI_PROCFS_POWER is enabled. This klog should be disabled for kernels > 2.6.37. klog klog FAILED [LOW] KlogAcpiDeprecatedProcfsInterface: Test 1, klog LOW Kernel message: [ 0.576306] ACPI: Deprecated procfs I klog /F for battery is loaded, please retry with klog CONFIG_ACPI_PROCFS_POWER cleared klog klog ADVICE: Using an old procfs interface for ACPI battery, klog this occurs if CONFIG_ACPI_PROCFS_POWER is enabled. This klog should be disabled for kernels > 2.6.37. klog klog Found 4 unique errors in kernel log. klog klog ========================================================== klog 0 passed, 4 failed, 0 warning, 0 aborted, 0 skipped, 0 klog info only. klog ========================================================== fwts-test/arg-results-0001/results.log000066400000000000000000000061211231470457100200540ustar00rootroot00000000000000klog klog: Scan kernel log for errors and warnings. klog ---------------------------------------------------------- klog Test 1 of 1: Kernel log error check. klog FAILED [HIGH] KlogAcpiMultipleApicMadtFound: Test 1, HIGH klog Kernel message: [ 0.000000] ACPI: BIOS bug: multiple APIC klog /MADT found, using 0 klog klog ADVICE: The kernel has detected more than one ACPI klog Multiple APIC Description Table (MADT) (these tables have klog the "APIC" signature). There should only be one MADT and klog the kernel will by default select the first one. However, klog one can override this and select the Nth MADT using klog acpi_apic_instance=N. klog klog Kernel message: [ 0.228089] [Firmware Bug]: ACPI: BIOS klog _OSI(Linux) query ignored klog klog ADVICE: This is not exactly a failure mode but a warning klog from the kernel. The _OSI() method has implemented a match klog to the 'Linux' query in the DSDT and this is redundant klog because the ACPI driver matches onto the Windows _OSI klog strings by default. klog klog FAILED [CRITICAL] KlogPciAcpiOscRequestFailed: Test 1, klog CRITICAL Kernel message: [ 0.396181] pci0000:00: ACPI _OSC klog request failed (AE_NOT_FOUND), returned control mask: 0x1d klog klog ADVICE: The _OSC method evaluation failed, which will klog result in disabling PCIe functionality, for example, the klog Linux kernel has to disable Active State Power Management klog (ASPM) which means that PCIe power management is not klog optimally configured. klog klog FAILED [LOW] KlogAcpiDeprecatedProcfsInterface: Test 1, klog LOW Kernel message: [ 0.534105] ACPI: Deprecated procfs I klog /F for AC is loaded, please retry with klog CONFIG_ACPI_PROCFS_POWER cleared klog klog ADVICE: Using an old procfs interface for ACPI AC Adapter, klog this occurs if CONFIG_ACPI_PROCFS_POWER is enabled. This klog should be disabled for kernels > 2.6.37. klog klog FAILED [LOW] KlogAcpiDeprecatedProcfsInterface: Test 1, klog LOW Kernel message: [ 0.576306] ACPI: Deprecated procfs I klog /F for battery is loaded, please retry with klog CONFIG_ACPI_PROCFS_POWER cleared klog klog ADVICE: Using an old procfs interface for ACPI battery, klog this occurs if CONFIG_ACPI_PROCFS_POWER is enabled. This klog should be disabled for kernels > 2.6.37. klog klog Found 4 unique errors in kernel log. klog klog ========================================================== klog 0 passed, 4 failed, 0 warning, 0 aborted, 0 skipped, 0 klog info only. klog ========================================================== fwts-test/arg-results-0001/test-0001.sh000077500000000000000000000010141231470457100175400ustar00rootroot00000000000000#!/bin/bash # TEST="Test --results-output option" NAME=test-0001.sh TMPLOG=$TMP/results_$$.log $FWTS --log-format="%line %owner " -w 80 -j $FWTSTESTDIR/../data --klog=$FWTSTESTDIR/arg-results-0001/klog.txt klog --results-output=$TMPLOG >& /dev/null grep "^[0-9]*[ ]*klog" $TMPLOG | cut -c7- > $TMPLOG.filtered diff $TMPLOG.filtered $FWTSTESTDIR/arg-results-0001/results.log >> $FAILURE_LOG ret=$? if [ $ret -eq 0 ]; then echo PASSED: $TEST, $NAME else echo FAILED: $TEST, $NAME fi rm $TMPLOG $TMPLOG.filtered exit $ret fwts-test/arg-results-0001/test-0002.sh000077500000000000000000000007601231470457100175500ustar00rootroot00000000000000#!/bin/bash # TEST="Test -r option" NAME=test-0002.sh TMPLOG=$TMP/results_$$.log $FWTS --log-format="%line %owner " -w 80 -j $FWTSTESTDIR/../data --klog=$FWTSTESTDIR/arg-results-0001/klog.txt klog -r $TMPLOG >& /dev/null grep "^[0-9]*[ ]*klog" $TMPLOG | cut -c7- > $TMPLOG.filtered diff $TMPLOG.filtered $FWTSTESTDIR/arg-results-0001/results.log >> $FAILURE_LOG ret=$? if [ $ret -eq 0 ]; then echo PASSED: $TEST, $NAME else echo FAILED: $TEST, $NAME fi rm $TMPLOG $TMPLOG.filtered exit $ret fwts-test/arg-results-0001/test-0003.sh000077500000000000000000000007541231470457100175540ustar00rootroot00000000000000#!/bin/bash # TEST="Test --results-output stdout option" NAME=test-0003.sh TMPLOG=$TMP/results_$$.log ($FWTS --log-format="%line %owner " -w 80 -j $FWTSTESTDIR/../data --klog=$FWTSTESTDIR/arg-results-0001/klog.txt klog --results-output=stdout | grep "^[0-9]*[ ]*klog" | cut -c7- > $TMPLOG ) >& /dev/null diff $TMPLOG $FWTSTESTDIR/arg-results-0001/results.log >> $FAILURE_LOG ret=$? if [ $ret -eq 0 ]; then echo PASSED: $TEST, $NAME else echo FAILED: $TEST, $NAME fi rm $TMPLOG exit $ret fwts-test/arg-results-0001/test-0004.sh000077500000000000000000000007201231470457100175460ustar00rootroot00000000000000#!/bin/bash # TEST="Test -r stdout option" NAME=test-0004.sh TMPLOG=$TMP/results_$$.log ($FWTS --log-format="%line %owner " -w 80 -j $FWTSTESTDIR/../data --klog=$FWTSTESTDIR/arg-results-0001/klog.txt klog -r stdout | grep "^[0-9]*[ ]*klog" | cut -c7- > $TMPLOG ) >& /dev/null diff $TMPLOG $FWTSTESTDIR/arg-results-0001/results.log >> $FAILURE_LOG ret=$? if [ $ret -eq 0 ]; then echo PASSED: $TEST, $NAME else echo FAILED: $TEST, $NAME fi rm $TMPLOG exit $ret fwts-test/arg-results-0001/test-0005.sh000077500000000000000000000012641231470457100175530ustar00rootroot00000000000000#!/bin/bash # TEST="Test --results-output option (append)" NAME=test-0005.sh TMPLOG=$TMP/results_$$.log $FWTS --log-format="%line %owner " -w 80 -j $FWTSTESTDIR/../data --klog=$FWTSTESTDIR/arg-results-0001/klog.txt klog --results-output=$TMPLOG >& /dev/null $FWTS --log-format="%line %owner " -w 80 -j $FWTSTESTDIR/../data --klog=$FWTSTESTDIR/arg-results-0001/klog.txt klog --results-output=$TMPLOG >& /dev/null grep "^[0-9]*[ ]*klog" $TMPLOG | cut -c7- > $TMPLOG.filtered diff $TMPLOG.filtered $FWTSTESTDIR/arg-results-0001/results-0005.log >> $FAILURE_LOG ret=$? if [ $ret -eq 0 ]; then echo PASSED: $TEST, $NAME else echo FAILED: $TEST, $NAME fi rm $TMPLOG $TMPLOG.filtered exit $ret fwts-test/arg-results-0001/test-0006.sh000077500000000000000000000012121231470457100175450ustar00rootroot00000000000000#!/bin/bash # TEST="Test -r option (append)" NAME=test-0006.sh TMPLOG=$TMP/results_$$.log $FWTS --log-format="%line %owner " -w 80 -j $FWTSTESTDIR/../data --klog=$FWTSTESTDIR/arg-results-0001/klog.txt klog -r $TMPLOG >& /dev/null $FWTS --log-format="%line %owner " -w 80 -j $FWTSTESTDIR/../data --klog=$FWTSTESTDIR/arg-results-0001/klog.txt klog -r $TMPLOG >& /dev/null grep "^[0-9]*[ ]*klog" $TMPLOG | cut -c7- > $TMPLOG.filtered diff $TMPLOG.filtered $FWTSTESTDIR/arg-results-0001/results-0005.log >> $FAILURE_LOG ret=$? if [ $ret -eq 0 ]; then echo PASSED: $TEST, $NAME else echo FAILED: $TEST, $NAME fi rm $TMPLOG $TMPLOG.filtered exit $ret fwts-test/arg-results-no-separators-0001/000077500000000000000000000000001231470457100204435ustar00rootroot00000000000000fwts-test/arg-results-no-separators-0001/klog-0001.log000066400000000000000000000055601231470457100224660ustar00rootroot00000000000000klog klog: Scan kernel log for errors and warnings. klog Test 1 of 1: Kernel log error check. klog FAILED [HIGH] KlogAcpiMultipleApicMadtFound: Test 1, HIGH klog Kernel message: [ 0.000000] ACPI: BIOS bug: multiple APIC klog /MADT found, using 0 klog klog ADVICE: The kernel has detected more than one ACPI klog Multiple APIC Description Table (MADT) (these tables have klog the "APIC" signature). There should only be one MADT and klog the kernel will by default select the first one. However, klog one can override this and select the Nth MADT using klog acpi_apic_instance=N. klog klog Kernel message: [ 0.228089] [Firmware Bug]: ACPI: BIOS klog _OSI(Linux) query ignored klog klog ADVICE: This is not exactly a failure mode but a warning klog from the kernel. The _OSI() method has implemented a match klog to the 'Linux' query in the DSDT and this is redundant klog because the ACPI driver matches onto the Windows _OSI klog strings by default. klog klog FAILED [CRITICAL] KlogPciAcpiOscRequestFailed: Test 1, klog CRITICAL Kernel message: [ 0.396181] pci0000:00: ACPI _OSC klog request failed (AE_NOT_FOUND), returned control mask: 0x1d klog klog ADVICE: The _OSC method evaluation failed, which will klog result in disabling PCIe functionality, for example, the klog Linux kernel has to disable Active State Power Management klog (ASPM) which means that PCIe power management is not klog optimally configured. klog klog FAILED [LOW] KlogAcpiDeprecatedProcfsInterface: Test 1, klog LOW Kernel message: [ 0.534105] ACPI: Deprecated procfs I klog /F for AC is loaded, please retry with klog CONFIG_ACPI_PROCFS_POWER cleared klog klog ADVICE: Using an old procfs interface for ACPI AC Adapter, klog this occurs if CONFIG_ACPI_PROCFS_POWER is enabled. This klog should be disabled for kernels > 2.6.37. klog klog FAILED [LOW] KlogAcpiDeprecatedProcfsInterface: Test 1, klog LOW Kernel message: [ 0.576306] ACPI: Deprecated procfs I klog /F for battery is loaded, please retry with klog CONFIG_ACPI_PROCFS_POWER cleared klog klog ADVICE: Using an old procfs interface for ACPI battery, klog this occurs if CONFIG_ACPI_PROCFS_POWER is enabled. This klog should be disabled for kernels > 2.6.37. klog klog Found 4 unique errors in kernel log. klog klog 0 passed, 4 failed, 0 warning, 0 aborted, 0 skipped, 0 klog info only. fwts-test/arg-results-no-separators-0001/klog.txt000066400000000000000000002225711231470457100221510ustar00rootroot00000000000000[ 0.000000] Initializing cgroup subsys cpuset [ 0.000000] Initializing cgroup subsys cpu [ 0.000000] Linux version 3.0.0-12-generic (buildd@crested) (gcc version 4.6.1 (Ubuntu/Linaro 4.6.1-9ubuntu3) ) #19-Ubuntu SMP Fri Sep 23 21:23:39 UTC 2011 (Ubuntu 3.0.0-12.19-generic 3.0.4) [ 0.000000] Command line: BOOT_IMAGE=/vmlinuz-3.0.0-12-generic root=UUID=08ed6ce0-0907-4d06-b1e1-b9c3ec647fe2 ro crashkernel=384M-2G:64M,2G-:128M quiet splash vt.handoff=7 [ 0.000000] KERNEL supported cpus: [ 0.000000] Intel GenuineIntel [ 0.000000] AMD AuthenticAMD [ 0.000000] Centaur CentaurHauls [ 0.000000] BIOS-provided physical RAM map: [ 0.000000] BIOS-e820: 0000000000000000 - 000000000009f800 (usable) [ 0.000000] BIOS-e820: 000000000009f800 - 00000000000a0000 (reserved) [ 0.000000] BIOS-e820: 00000000000d2000 - 00000000000d4000 (reserved) [ 0.000000] BIOS-e820: 00000000000dc000 - 0000000000100000 (reserved) [ 0.000000] BIOS-e820: 0000000000100000 - 00000000bf6d0000 (usable) [ 0.000000] BIOS-e820: 00000000bf6d0000 - 00000000bf6e3000 (ACPI NVS) [ 0.000000] BIOS-e820: 00000000bf6e3000 - 00000000c0000000 (reserved) [ 0.000000] BIOS-e820: 00000000e0000000 - 00000000f0000000 (reserved) [ 0.000000] BIOS-e820: 00000000fec00000 - 00000000fec10000 (reserved) [ 0.000000] BIOS-e820: 00000000fed00000 - 00000000fed00400 (reserved) [ 0.000000] BIOS-e820: 00000000fed14000 - 00000000fed1a000 (reserved) [ 0.000000] BIOS-e820: 00000000fed1c000 - 00000000fed90000 (reserved) [ 0.000000] BIOS-e820: 00000000fee00000 - 00000000fee01000 (reserved) [ 0.000000] BIOS-e820: 00000000ff000000 - 0000000100000000 (reserved) [ 0.000000] NX (Execute Disable) protection: active [ 0.000000] DMI present. [ 0.000000] DMI: LENOVO 0769BMG/IEL10, BIOS 68ET27WW 11/14/2007 [ 0.000000] e820 update range: 0000000000000000 - 0000000000010000 (usable) ==> (reserved) [ 0.000000] e820 remove range: 00000000000a0000 - 0000000000100000 (usable) [ 0.000000] No AGP bridge found [ 0.000000] last_pfn = 0xbf6d0 max_arch_pfn = 0x400000000 [ 0.000000] MTRR default type: uncachable [ 0.000000] MTRR fixed ranges enabled: [ 0.000000] 00000-9FFFF write-back [ 0.000000] A0000-BFFFF uncachable [ 0.000000] C0000-FFFFF write-protect [ 0.000000] MTRR variable ranges enabled: [ 0.000000] 0 base 000000000 mask F80000000 write-back [ 0.000000] 1 base 080000000 mask FC0000000 write-back [ 0.000000] 2 base 0BF700000 mask FFFF00000 uncachable [ 0.000000] 3 base 0BF800000 mask FFF800000 uncachable [ 0.000000] 4 disabled [ 0.000000] 5 disabled [ 0.000000] 6 disabled [ 0.000000] 7 disabled [ 0.000000] x86 PAT enabled: cpu 0, old 0x7040600070406, new 0x7010600070106 [ 0.000000] original variable MTRRs [ 0.000000] reg 0, base: 0GB, range: 2GB, type WB [ 0.000000] reg 1, base: 2GB, range: 1GB, type WB [ 0.000000] reg 2, base: 3063MB, range: 1MB, type UC [ 0.000000] reg 3, base: 3064MB, range: 8MB, type UC [ 0.000000] total RAM covered: 3063M [ 0.000000] Found optimal setting for mtrr clean up [ 0.000000] gran_size: 64K chunk_size: 16M num_reg: 4 lose cover RAM: 0G [ 0.000000] New variable MTRRs [ 0.000000] reg 0, base: 0GB, range: 2GB, type WB [ 0.000000] reg 1, base: 2GB, range: 1GB, type WB [ 0.000000] reg 2, base: 3063MB, range: 1MB, type UC [ 0.000000] reg 3, base: 3064MB, range: 8MB, type UC [ 0.000000] found SMP MP-table at [ffff8800000f72c0] f72c0 [ 0.000000] initial memory mapped : 0 - 20000000 [ 0.000000] Base memory trampoline at [ffff88000009a000] 9a000 size 20480 [ 0.000000] init_memory_mapping: 0000000000000000-00000000bf6d0000 [ 0.000000] 0000000000 - 00bf600000 page 2M [ 0.000000] 00bf600000 - 00bf6d0000 page 4k [ 0.000000] kernel direct mapping tables up to bf6d0000 @ bf6cb000-bf6d0000 [ 0.000000] RAMDISK: 359ec000 - 36cee000 [ 0.000000] Reserving 128MB of memory at 720MB for crashkernel (System RAM: 3062MB) [ 0.000000] ACPI: RSDP 00000000000f7240 00024 (v02 LENOVO) [ 0.000000] ACPI: XSDT 00000000bf6d87f0 00094 (v01 LENOVO TP-68 06040000 LTP 00000000) [ 0.000000] ACPI: FACP 00000000bf6dfbd2 000F4 (v03 TOSCPL CRESTLNE 06040000 ALAN 00000001) [ 0.000000] ACPI: DSDT 00000000bf6d9b6a 05FF4 (v02 TOSCPL CRESTLNE 06040000 INTL 20060608) [ 0.000000] ACPI: FACS 00000000bf6e2fc0 00040 [ 0.000000] ACPI: APIC 00000000bf6dfcc6 00068 (v01 INTEL CRESTLNE 06040000 LOHR 0000005A) [ 0.000000] ACPI: HPET 00000000bf6dfd2e 00038 (v01 INTEL CRESTLNE 06040000 LOHR 0000005A) [ 0.000000] ACPI: MCFG 00000000bf6dfd66 0003C (v01 INTEL CRESTLNE 06040000 LOHR 0000005A) [ 0.000000] ACPI: TCPA 00000000bf6dfda2 00032 (v01 Intel CRESTLNE 06040000 LOHR 0000005A) [ 0.000000] ACPI: TMOR 00000000bf6dfdd4 00026 (v01 PTLTD 06040000 PTL 00000003) [ 0.000000] ACPI: SLIC 00000000bf6dfdfa 00176 (v01 LENOVO TP-68 06040000 TBD 00000001) [ 0.000000] ACPI: APIC 00000000bf6dff70 00068 (v01 PTLTD ? APIC 06040000 LTP 00000000) [ 0.000000] ACPI: BOOT 00000000bf6dffd8 00028 (v01 PTLTD $SBFTBL$ 06040000 LTP 00000001) [ 0.000000] ACPI: SSDT 00000000bf6d98bd 002AD (v01 SataRe SataAhci 00001000 INTL 20050624) [ 0.000000] ACPI: SSDT 00000000bf6d981a 000A3 (v01 BrtRef DD01BRT 00001000 INTL 20050624) [ 0.000000] ACPI: SSDT 00000000bf6d8e10 0025F (v01 PmRef Cpu0Tst 00003000 INTL 20050624) [ 0.000000] ACPI: SSDT 00000000bf6d8d6a 000A6 (v01 PmRef Cpu1Tst 00003000 INTL 20050624) [ 0.000000] ACPI: SSDT 00000000bf6d8884 004E6 (v01 PmRef CpuPm 00003000 INTL 20050624) [ 0.000000] ACPI: BIOS bug: multiple APIC/MADT found, using 0 [ 0.000000] ACPI: If "acpi_apic_instance=2" works better, notify linux-acpi@vger.kernel.org [ 0.000000] ACPI: Local APIC address 0xfee00000 [ 0.000000] No NUMA configuration found [ 0.000000] Faking a node at 0000000000000000-00000000bf6d0000 [ 0.000000] Initmem setup node 0 0000000000000000-00000000bf6d0000 [ 0.000000] NODE_DATA [00000000bf6c6000 - 00000000bf6cafff] [ 0.000000] [ffffea0000000000-ffffea00029fffff] PMD -> [ffff8800bbe00000-ffff8800be7fffff] on node 0 [ 0.000000] Zone PFN ranges: [ 0.000000] DMA 0x00000010 -> 0x00001000 [ 0.000000] DMA32 0x00001000 -> 0x00100000 [ 0.000000] Normal empty [ 0.000000] Movable zone start PFN for each node [ 0.000000] early_node_map[2] active PFN ranges [ 0.000000] 0: 0x00000010 -> 0x0000009f [ 0.000000] 0: 0x00000100 -> 0x000bf6d0 [ 0.000000] On node 0 totalpages: 783967 [ 0.000000] DMA zone: 56 pages used for memmap [ 0.000000] DMA zone: 5 pages reserved [ 0.000000] DMA zone: 3922 pages, LIFO batch:0 [ 0.000000] DMA32 zone: 10664 pages used for memmap [ 0.000000] DMA32 zone: 769320 pages, LIFO batch:31 [ 0.000000] ACPI: PM-Timer IO Port: 0x1008 [ 0.000000] ACPI: Local APIC address 0xfee00000 [ 0.000000] ACPI: LAPIC (acpi_id[0x00] lapic_id[0x00] enabled) [ 0.000000] ACPI: LAPIC (acpi_id[0x01] lapic_id[0x01] enabled) [ 0.000000] ACPI: LAPIC_NMI (acpi_id[0x00] high edge lint[0x1]) [ 0.000000] ACPI: LAPIC_NMI (acpi_id[0x01] high edge lint[0x1]) [ 0.000000] ACPI: IOAPIC (id[0x01] address[0xfec00000] gsi_base[0]) [ 0.000000] IOAPIC[0]: apic_id 1, version 32, address 0xfec00000, GSI 0-23 [ 0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 0 global_irq 2 dfl dfl) [ 0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 9 global_irq 9 high level) [ 0.000000] ACPI: IRQ0 used by override. [ 0.000000] ACPI: IRQ2 used by override. [ 0.000000] ACPI: IRQ9 used by override. [ 0.000000] Using ACPI (MADT) for SMP configuration information [ 0.000000] ACPI: HPET id: 0x8086a201 base: 0xfed00000 [ 0.000000] SMP: Allowing 2 CPUs, 0 hotplug CPUs [ 0.000000] nr_irqs_gsi: 40 [ 0.000000] PM: Registered nosave memory: 000000000009f000 - 00000000000a0000 [ 0.000000] PM: Registered nosave memory: 00000000000a0000 - 00000000000d2000 [ 0.000000] PM: Registered nosave memory: 00000000000d2000 - 00000000000d4000 [ 0.000000] PM: Registered nosave memory: 00000000000d4000 - 00000000000dc000 [ 0.000000] PM: Registered nosave memory: 00000000000dc000 - 0000000000100000 [ 0.000000] Allocating PCI resources starting at c0000000 (gap: c0000000:20000000) [ 0.000000] Booting paravirtualized kernel on bare hardware [ 0.000000] setup_percpu: NR_CPUS:256 nr_cpumask_bits:256 nr_cpu_ids:2 nr_node_ids:1 [ 0.000000] PERCPU: Embedded 27 pages/cpu @ffff8800bf400000 s79616 r8192 d22784 u1048576 [ 0.000000] pcpu-alloc: s79616 r8192 d22784 u1048576 alloc=1*2097152 [ 0.000000] pcpu-alloc: [0] 0 1 [ 0.000000] Built 1 zonelists in Node order, mobility grouping on. Total pages: 773242 [ 0.000000] Policy zone: DMA32 [ 0.000000] Kernel command line: BOOT_IMAGE=/vmlinuz-3.0.0-12-generic root=UUID=08ed6ce0-0907-4d06-b1e1-b9c3ec647fe2 ro crashkernel=384M-2G:64M,2G-:128M quiet splash vt.handoff=7 [ 0.000000] PID hash table entries: 4096 (order: 3, 32768 bytes) [ 0.000000] Checking aperture... [ 0.000000] No AGP bridge found [ 0.000000] Calgary: detecting Calgary via BIOS EBDA area [ 0.000000] Calgary: Unable to locate Rio Grande table in EBDA - bailing! [ 0.000000] Memory: 2928536k/3136320k available (6104k kernel code, 452k absent, 207332k reserved, 4880k data, 984k init) [ 0.000000] SLUB: Genslabs=15, HWalign=64, Order=0-3, MinObjects=0, CPUs=2, Nodes=1 [ 0.000000] Hierarchical RCU implementation. [ 0.000000] RCU dyntick-idle grace-period acceleration is enabled. [ 0.000000] NR_IRQS:16640 nr_irqs:512 16 [ 0.000000] Extended CMOS year: 2000 [ 0.000000] vt handoff: transparent VT on vt#7 [ 0.000000] Console: colour dummy device 80x25 [ 0.000000] console [tty0] enabled [ 0.000000] allocated 25165824 bytes of page_cgroup [ 0.000000] please try 'cgroup_disable=memory' option if you don't want memory cgroups [ 0.000000] hpet clockevent registered [ 0.000000] Fast TSC calibration using PIT [ 0.000000] Detected 1496.217 MHz processor. [ 0.004006] Calibrating delay loop (skipped), value calculated using timer frequency.. 2992.43 BogoMIPS (lpj=5984868) [ 0.004013] pid_max: default: 32768 minimum: 301 [ 0.004056] Security Framework initialized [ 0.004080] AppArmor: AppArmor initialized [ 0.004083] Yama: becoming mindful. [ 0.004759] Dentry cache hash table entries: 524288 (order: 10, 4194304 bytes) [ 0.010636] Inode-cache hash table entries: 262144 (order: 9, 2097152 bytes) [ 0.012341] Mount-cache hash table entries: 256 [ 0.012557] Initializing cgroup subsys cpuacct [ 0.012565] Initializing cgroup subsys memory [ 0.012580] Initializing cgroup subsys devices [ 0.012583] Initializing cgroup subsys freezer [ 0.012586] Initializing cgroup subsys net_cls [ 0.012589] Initializing cgroup subsys blkio [ 0.012598] Initializing cgroup subsys perf_event [ 0.012643] CPU: Physical Processor ID: 0 [ 0.012645] CPU: Processor Core ID: 0 [ 0.012649] mce: CPU supports 6 MCE banks [ 0.012661] CPU0: Thermal monitoring handled by SMI [ 0.012667] using mwait in idle threads. [ 0.016288] ACPI: Core revision 20110413 [ 0.024040] ftrace: allocating 25651 entries in 101 pages [ 0.028444] ..TIMER: vector=0x30 apic1=0 pin1=2 apic2=-1 pin2=-1 [ 0.071627] CPU0: Intel(R) Core(TM)2 Duo CPU T5250 @ 1.50GHz stepping 0d [ 0.072003] Performance Events: PEBS fmt0+, Core2 events, Intel PMU driver. [ 0.072003] PEBS disabled due to CPU errata. [ 0.072003] ... version: 2 [ 0.072003] ... bit width: 40 [ 0.072003] ... generic registers: 2 [ 0.072003] ... value mask: 000000ffffffffff [ 0.072003] ... max period: 000000007fffffff [ 0.072003] ... fixed-purpose events: 3 [ 0.072003] ... event mask: 0000000700000003 [ 0.072003] Booting Node 0, Processors #1 Ok. [ 0.072003] smpboot cpu 1: start_ip = 9a000 [ 0.008000] CPU1: Thermal monitoring handled by SMI [ 0.160029] Brought up 2 CPUs [ 0.160033] Total of 2 processors activated (5984.88 BogoMIPS). [ 0.161224] devtmpfs: initialized [ 0.161224] PM: Registering ACPI NVS region at bf6d0000 (77824 bytes) [ 0.162075] print_constraints: dummy: [ 0.162115] Time: 7:34:42 Date: 10/05/11 [ 0.162171] NET: Registered protocol family 16 [ 0.162209] Trying to unpack rootfs image as initramfs... [ 0.164047] ACPI: bus type pci registered [ 0.164133] PCI: MMCONFIG for domain 0000 [bus 00-ff] at [mem 0xe0000000-0xefffffff] (base 0xe0000000) [ 0.164138] PCI: MMCONFIG at [mem 0xe0000000-0xefffffff] reserved in E820 [ 0.220043] PCI: Using configuration type 1 for base access [ 0.221379] bio: create slab at 0 [ 0.223506] ACPI: EC: Look up EC in DSDT [ 0.228089] [Firmware Bug]: ACPI: BIOS _OSI(Linux) query ignored [ 0.229039] ACPI: SSDT 00000000bf6d959e 001B4 (v01 PmRef Cpu0Ist 00003000 INTL 20050624) [ 0.229543] ACPI: Dynamic OEM Table Load: [ 0.229548] ACPI: SSDT (null) 001B4 (v01 PmRef Cpu0Ist 00003000 INTL 20050624) [ 0.229696] ACPI: SSDT 00000000bf6d906f 004AA (v01 PmRef Cpu0Cst 00003001 INTL 20050624) [ 0.230165] ACPI: Dynamic OEM Table Load: [ 0.230169] ACPI: SSDT (null) 004AA (v01 PmRef Cpu0Cst 00003001 INTL 20050624) [ 0.230454] ACPI: SSDT 00000000bf6d9752 000C8 (v01 PmRef Cpu1Ist 00003000 INTL 20050624) [ 0.232427] ACPI: Dynamic OEM Table Load: [ 0.232432] ACPI: SSDT (null) 000C8 (v01 PmRef Cpu1Ist 00003000 INTL 20050624) [ 0.232541] ACPI: SSDT 00000000bf6d9519 00085 (v01 PmRef Cpu1Cst 00003000 INTL 20050624) [ 0.233011] ACPI: Dynamic OEM Table Load: [ 0.233015] ACPI: SSDT (null) 00085 (v01 PmRef Cpu1Cst 00003000 INTL 20050624) [ 0.238295] ACPI: EC: GPE storm detected, transactions will use polling mode [ 0.344070] ACPI: Interpreter enabled [ 0.344078] ACPI: (supports S0 S3 S4 S5) [ 0.344118] ACPI: Using IOAPIC for interrupt routing [ 0.389051] ACPI: EC: GPE = 0x1c, I/O: command/status = 0x66, data = 0x62 [ 0.389294] ACPI: No dock devices found. [ 0.389298] HEST: Table not found. [ 0.389303] PCI: Ignoring host bridge windows from ACPI; if necessary, use "pci=use_crs" and report a bug [ 0.389762] ACPI: PCI Root Bridge [PCI0] (domain 0000 [bus 00-ff]) [ 0.390623] pci_root PNP0A08:00: host bridge window [io 0x0000-0x0cf7] (ignored) [ 0.390628] pci_root PNP0A08:00: host bridge window [io 0x0d00-0xffff] (ignored) [ 0.390632] pci_root PNP0A08:00: host bridge window [mem 0x000a0000-0x000bffff] (ignored) [ 0.390636] pci_root PNP0A08:00: host bridge window [mem 0x000d4000-0x000d7fff] (ignored) [ 0.390640] pci_root PNP0A08:00: host bridge window [mem 0x000d8000-0x000dbfff] (ignored) [ 0.390645] pci_root PNP0A08:00: host bridge window [mem 0xc0000000-0xdfffffff] (ignored) [ 0.390648] pci_root PNP0A08:00: host bridge window [mem 0xf0000000-0xfebfffff] (ignored) [ 0.390665] pci 0000:00:00.0: [8086:2a00] type 0 class 0x000600 [ 0.390726] pci 0000:00:02.0: [8086:2a02] type 0 class 0x000300 [ 0.390746] pci 0000:00:02.0: reg 10: [mem 0xfc000000-0xfc0fffff 64bit] [ 0.390758] pci 0000:00:02.0: reg 18: [mem 0xd0000000-0xdfffffff 64bit pref] [ 0.390767] pci 0000:00:02.0: reg 20: [io 0x1800-0x1807] [ 0.390812] pci 0000:00:02.1: [8086:2a03] type 0 class 0x000380 [ 0.390829] pci 0000:00:02.1: reg 10: [mem 0xfc100000-0xfc1fffff 64bit] [ 0.390937] pci 0000:00:1a.0: [8086:2834] type 0 class 0x000c03 [ 0.391013] pci 0000:00:1a.0: reg 20: [io 0x1820-0x183f] [ 0.391065] pci 0000:00:1a.1: [8086:2835] type 0 class 0x000c03 [ 0.391126] pci 0000:00:1a.1: reg 20: [io 0x1840-0x185f] [ 0.391187] pci 0000:00:1a.7: [8086:283a] type 0 class 0x000c03 [ 0.391216] pci 0000:00:1a.7: reg 10: [mem 0xfc504800-0xfc504bff] [ 0.391321] pci 0000:00:1a.7: PME# supported from D0 D3hot D3cold [ 0.391328] pci 0000:00:1a.7: PME# disabled [ 0.391362] pci 0000:00:1b.0: [8086:284b] type 0 class 0x000403 [ 0.391386] pci 0000:00:1b.0: reg 10: [mem 0xfc300000-0xfc303fff 64bit] [ 0.391473] pci 0000:00:1b.0: PME# supported from D0 D3hot D3cold [ 0.391479] pci 0000:00:1b.0: PME# disabled [ 0.391514] pci 0000:00:1c.0: [8086:283f] type 1 class 0x000604 [ 0.391605] pci 0000:00:1c.0: PME# supported from D0 D3hot D3cold [ 0.391611] pci 0000:00:1c.0: PME# disabled [ 0.391647] pci 0000:00:1c.1: [8086:2841] type 1 class 0x000604 [ 0.391735] pci 0000:00:1c.1: PME# supported from D0 D3hot D3cold [ 0.391741] pci 0000:00:1c.1: PME# disabled [ 0.391775] pci 0000:00:1c.2: [8086:2843] type 1 class 0x000604 [ 0.391868] pci 0000:00:1c.2: PME# supported from D0 D3hot D3cold [ 0.391874] pci 0000:00:1c.2: PME# disabled [ 0.391911] pci 0000:00:1c.3: [8086:2845] type 1 class 0x000604 [ 0.391999] pci 0000:00:1c.3: PME# supported from D0 D3hot D3cold [ 0.392005] pci 0000:00:1c.3: PME# disabled [ 0.392053] pci 0000:00:1d.0: [8086:2830] type 0 class 0x000c03 [ 0.392114] pci 0000:00:1d.0: reg 20: [io 0x1860-0x187f] [ 0.392162] pci 0000:00:1d.1: [8086:2831] type 0 class 0x000c03 [ 0.392238] pci 0000:00:1d.1: reg 20: [io 0x1880-0x189f] [ 0.392293] pci 0000:00:1d.2: [8086:2832] type 0 class 0x000c03 [ 0.392371] pci 0000:00:1d.2: reg 20: [io 0x18a0-0x18bf] [ 0.392438] pci 0000:00:1d.7: [8086:2836] type 0 class 0x000c03 [ 0.392466] pci 0000:00:1d.7: reg 10: [mem 0xfc504c00-0xfc504fff] [ 0.392567] pci 0000:00:1d.7: PME# supported from D0 D3hot D3cold [ 0.392573] pci 0000:00:1d.7: PME# disabled [ 0.392603] pci 0000:00:1e.0: [8086:2448] type 1 class 0x000604 [ 0.392698] pci 0000:00:1f.0: [8086:2815] type 0 class 0x000601 [ 0.392816] pci 0000:00:1f.0: quirk: [io 0x1000-0x107f] claimed by ICH6 ACPI/GPIO/TCO [ 0.392824] pci 0000:00:1f.0: quirk: [io 0x1180-0x11bf] claimed by ICH6 GPIO [ 0.392829] pci 0000:00:1f.0: ICH7 LPC Generic IO decode 1 PIO at 0680 (mask 007f) [ 0.392835] pci 0000:00:1f.0: ICH7 LPC Generic IO decode 2 PIO at 1640 (mask 000f) [ 0.392884] pci 0000:00:1f.1: [8086:2850] type 0 class 0x000101 [ 0.392903] pci 0000:00:1f.1: reg 10: [io 0x0000-0x0007] [ 0.392918] pci 0000:00:1f.1: reg 14: [io 0x0000-0x0003] [ 0.392931] pci 0000:00:1f.1: reg 18: [io 0x0000-0x0007] [ 0.392944] pci 0000:00:1f.1: reg 1c: [io 0x0000-0x0003] [ 0.392958] pci 0000:00:1f.1: reg 20: [io 0x1810-0x181f] [ 0.393014] pci 0000:00:1f.2: [8086:2829] type 0 class 0x000106 [ 0.393042] pci 0000:00:1f.2: reg 10: [io 0x1c00-0x1c07] [ 0.393056] pci 0000:00:1f.2: reg 14: [io 0x18d4-0x18d7] [ 0.393069] pci 0000:00:1f.2: reg 18: [io 0x18d8-0x18df] [ 0.393082] pci 0000:00:1f.2: reg 1c: [io 0x18d0-0x18d3] [ 0.393095] pci 0000:00:1f.2: reg 20: [io 0x18e0-0x18ff] [ 0.393108] pci 0000:00:1f.2: reg 24: [mem 0xfc504000-0xfc5047ff] [ 0.393157] pci 0000:00:1f.2: PME# supported from D3hot [ 0.393163] pci 0000:00:1f.2: PME# disabled [ 0.393188] pci 0000:00:1f.3: [8086:283e] type 0 class 0x000c05 [ 0.393206] pci 0000:00:1f.3: reg 10: [mem 0x00000000-0x000000ff] [ 0.393250] pci 0000:00:1f.3: reg 20: [io 0x1c20-0x1c3f] [ 0.393354] pci 0000:00:1c.0: PCI bridge to [bus 02-02] [ 0.393360] pci 0000:00:1c.0: bridge window [io 0x2000-0x2fff] [ 0.393367] pci 0000:00:1c.0: bridge window [mem 0xf6000000-0xf7ffffff] [ 0.393376] pci 0000:00:1c.0: bridge window [mem 0xf0000000-0xf1ffffff 64bit pref] [ 0.393501] pci 0000:04:00.0: [8086:4227] type 0 class 0x000280 [ 0.393557] pci 0000:04:00.0: reg 10: [mem 0xf8000000-0xf8000fff] [ 0.393895] pci 0000:04:00.0: PME# supported from D0 D3hot D3cold [ 0.393908] pci 0000:04:00.0: PME# disabled [ 0.393979] pci 0000:04:00.0: disabling ASPM on pre-1.1 PCIe device. You can enable it with 'pcie_aspm=force' [ 0.394021] pci 0000:00:1c.1: PCI bridge to [bus 04-04] [ 0.394027] pci 0000:00:1c.1: bridge window [io 0x3000-0x3fff] [ 0.394033] pci 0000:00:1c.1: bridge window [mem 0xf8000000-0xf9ffffff] [ 0.394043] pci 0000:00:1c.1: bridge window [mem 0xf2000000-0xf3ffffff 64bit pref] [ 0.394110] pci 0000:00:1c.2: PCI bridge to [bus 05-05] [ 0.394116] pci 0000:00:1c.2: bridge window [io 0x4000-0x4fff] [ 0.394122] pci 0000:00:1c.2: bridge window [mem 0xfa000000-0xfbffffff] [ 0.394132] pci 0000:00:1c.2: bridge window [mem 0xf4000000-0xf5ffffff 64bit pref] [ 0.394268] pci 0000:06:00.0: [14e4:1713] type 0 class 0x000200 [ 0.394336] pci 0000:06:00.0: reg 10: [mem 0xc8000000-0xc800ffff 64bit] [ 0.394639] pci 0000:06:00.0: PME# supported from D3hot D3cold [ 0.394651] pci 0000:06:00.0: PME# disabled [ 0.394783] pci 0000:00:1c.3: PCI bridge to [bus 06-06] [ 0.394789] pci 0000:00:1c.3: bridge window [io 0x5000-0x5fff] [ 0.394796] pci 0000:00:1c.3: bridge window [mem 0xc8000000-0xc9ffffff] [ 0.394806] pci 0000:00:1c.3: bridge window [mem 0xcc000000-0xcdffffff 64bit pref] [ 0.394868] pci 0000:08:06.0: [1180:0832] type 0 class 0x000c00 [ 0.394886] pci 0000:08:06.0: proprietary Ricoh MMC controller disabled (via firewire function) [ 0.394890] pci 0000:08:06.0: MMC cards are now supported by standard SDHCI controller [ 0.394909] pci 0000:08:06.0: reg 10: [mem 0xfc200000-0xfc2007ff] [ 0.395006] pci 0000:08:06.0: supports D1 D2 [ 0.395009] pci 0000:08:06.0: PME# supported from D0 D1 D2 D3hot D3cold [ 0.395016] pci 0000:08:06.0: PME# disabled [ 0.395045] pci 0000:08:06.1: [1180:0822] type 0 class 0x000805 [ 0.395069] pci 0000:08:06.1: reg 10: [mem 0xfc200800-0xfc2008ff] [ 0.395165] pci 0000:08:06.1: supports D1 D2 [ 0.395168] pci 0000:08:06.1: PME# supported from D0 D1 D2 D3hot D3cold [ 0.395174] pci 0000:08:06.1: PME# disabled [ 0.395199] pci 0000:08:06.2: [1180:0592] type 0 class 0x000880 [ 0.395224] pci 0000:08:06.2: reg 10: [mem 0xfc201000-0xfc2010ff] [ 0.395317] pci 0000:08:06.2: supports D1 D2 [ 0.395320] pci 0000:08:06.2: PME# supported from D0 D1 D2 D3hot D3cold [ 0.395326] pci 0000:08:06.2: PME# disabled [ 0.395350] pci 0000:08:06.3: [1180:0852] type 0 class 0x000880 [ 0.395376] pci 0000:08:06.3: reg 10: [mem 0xfc201400-0xfc2014ff] [ 0.395474] pci 0000:08:06.3: supports D1 D2 [ 0.395477] pci 0000:08:06.3: PME# supported from D0 D1 D2 D3hot D3cold [ 0.395484] pci 0000:08:06.3: PME# disabled [ 0.395549] pci 0000:00:1e.0: PCI bridge to [bus 08-08] (subtractive decode) [ 0.395556] pci 0000:00:1e.0: bridge window [io 0xf000-0x0000] (disabled) [ 0.395562] pci 0000:00:1e.0: bridge window [mem 0xfc200000-0xfc2fffff] [ 0.395572] pci 0000:00:1e.0: bridge window [mem 0xfff00000-0x000fffff pref] (disabled) [ 0.395576] pci 0000:00:1e.0: bridge window [io 0x0000-0xffff] (subtractive decode) [ 0.395580] pci 0000:00:1e.0: bridge window [mem 0x00000000-0xfffffffff] (subtractive decode) [ 0.395619] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0._PRT] [ 0.395828] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.RP01._PRT] [ 0.395887] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.RP02._PRT] [ 0.395944] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.RP03._PRT] [ 0.395999] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.RP04._PRT] [ 0.396116] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PCIB._PRT] [ 0.396176] pci0000:00: Requesting ACPI _OSC control (0x1d) [ 0.396181] pci0000:00: ACPI _OSC request failed (AE_NOT_FOUND), returned control mask: 0x1d [ 0.396184] ACPI _OSC control for PCIe not granted, disabling ASPM [ 0.404002] ACPI: PCI Interrupt Link [LNKA] (IRQs 1 3 4 *5 6 7 10 12 14 15) [ 0.404086] ACPI: PCI Interrupt Link [LNKB] (IRQs 1 3 4 5 6 7 11 12 14 15) *10 [ 0.404153] ACPI: PCI Interrupt Link [LNKC] (IRQs 1 3 4 5 6 *7 10 12 14 15) [ 0.404217] ACPI: PCI Interrupt Link [LNKD] (IRQs 1 3 4 5 6 7 11 12 14 15) *10 [ 0.404282] ACPI: PCI Interrupt Link [LNKE] (IRQs 1 3 4 5 6 7 10 12 14 15) *0, disabled. [ 0.404353] ACPI: PCI Interrupt Link [LNKF] (IRQs 1 3 4 5 6 7 11 12 14 15) *10 [ 0.404419] ACPI: PCI Interrupt Link [LNKG] (IRQs 1 3 4 5 6 7 10 12 14 15) *11 [ 0.404484] ACPI: PCI Interrupt Link [LNKH] (IRQs 1 3 4 5 6 7 *11 12 14 15) [ 0.404647] vgaarb: device added: PCI:0000:00:02.0,decodes=io+mem,owns=io+mem,locks=none [ 0.404670] vgaarb: loaded [ 0.404672] vgaarb: bridge control possible 0000:00:02.0 [ 0.404971] SCSI subsystem initialized [ 0.405069] libata version 3.00 loaded. [ 0.405143] usbcore: registered new interface driver usbfs [ 0.405158] usbcore: registered new interface driver hub [ 0.405200] usbcore: registered new device driver usb [ 0.405322] PCI: Using ACPI for IRQ routing [ 0.416330] PCI: pci_cache_line_size set to 64 bytes [ 0.416509] reserve RAM buffer: 000000000009f800 - 000000000009ffff [ 0.416513] reserve RAM buffer: 00000000bf6d0000 - 00000000bfffffff [ 0.416683] NetLabel: Initializing [ 0.416686] NetLabel: domain hash size = 128 [ 0.416688] NetLabel: protocols = UNLABELED CIPSOv4 [ 0.416706] NetLabel: unlabeled traffic allowed by default [ 0.416770] HPET: 3 timers in total, 0 timers will be used for per-cpu timer [ 0.416777] hpet0: at MMIO 0xfed00000, IRQs 2, 8, 0 [ 0.416784] hpet0: 3 comparators, 64-bit 14.318180 MHz counter [ 0.420524] Switching to clocksource hpet [ 0.423392] Switched to NOHz mode on CPU #0 [ 0.423487] Switched to NOHz mode on CPU #1 [ 0.430603] AppArmor: AppArmor Filesystem Enabled [ 0.430649] pnp: PnP ACPI init [ 0.430672] ACPI: bus type pnp registered [ 0.431166] pnp 00:00: [bus 00-ff] [ 0.431171] pnp 00:00: [io 0x0000-0x0cf7 window] [ 0.431174] pnp 00:00: [io 0x0cf8-0x0cff] [ 0.431177] pnp 00:00: [io 0x0d00-0xffff window] [ 0.431181] pnp 00:00: [mem 0x000a0000-0x000bffff window] [ 0.431184] pnp 00:00: [mem 0x000c0000-0x000c3fff window] [ 0.431187] pnp 00:00: [mem 0x000c4000-0x000c7fff window] [ 0.431190] pnp 00:00: [mem 0x000c8000-0x000cbfff window] [ 0.431197] pnp 00:00: [mem 0x000cc000-0x000cffff window] [ 0.431201] pnp 00:00: [mem 0x000d0000-0x000d3fff window] [ 0.431204] pnp 00:00: [mem 0x000d4000-0x000d7fff window] [ 0.431207] pnp 00:00: [mem 0x000d8000-0x000dbfff window] [ 0.431210] pnp 00:00: [mem 0x000dc000-0x000dffff window] [ 0.431213] pnp 00:00: [mem 0x000e0000-0x000e3fff window] [ 0.431216] pnp 00:00: [mem 0x000e4000-0x000e7fff window] [ 0.431219] pnp 00:00: [mem 0x000e8000-0x000ebfff window] [ 0.431222] pnp 00:00: [mem 0x000ec000-0x000effff window] [ 0.431225] pnp 00:00: [mem 0x000f0000-0x000fffff window] [ 0.431229] pnp 00:00: [mem 0xc0000000-0xdfffffff window] [ 0.431232] pnp 00:00: [mem 0xf0000000-0xfebfffff window] [ 0.431235] pnp 00:00: [mem 0xfed40000-0xfed44fff window] [ 0.431344] pnp 00:00: Plug and Play ACPI device, IDs PNP0a08 PNP0a03 (active) [ 0.431447] pnp 00:01: [mem 0xfed1c000-0xfed1ffff] [ 0.431450] pnp 00:01: [mem 0xfed14000-0xfed17fff] [ 0.431453] pnp 00:01: [mem 0xfed18000-0xfed18fff] [ 0.431456] pnp 00:01: [mem 0xfed19000-0xfed19fff] [ 0.431458] pnp 00:01: [mem 0xe0000000-0xefffffff] [ 0.431461] pnp 00:01: [mem 0xfed20000-0xfed3ffff] [ 0.431464] pnp 00:01: [mem 0xfed40000-0xfed44fff] [ 0.431467] pnp 00:01: [mem 0xfed45000-0xfed8ffff] [ 0.431559] system 00:01: [mem 0xfed1c000-0xfed1ffff] has been reserved [ 0.431564] system 00:01: [mem 0xfed14000-0xfed17fff] has been reserved [ 0.431568] system 00:01: [mem 0xfed18000-0xfed18fff] has been reserved [ 0.431572] system 00:01: [mem 0xfed19000-0xfed19fff] has been reserved [ 0.431576] system 00:01: [mem 0xe0000000-0xefffffff] has been reserved [ 0.431580] system 00:01: [mem 0xfed20000-0xfed3ffff] has been reserved [ 0.431584] system 00:01: [mem 0xfed40000-0xfed44fff] has been reserved [ 0.431588] system 00:01: [mem 0xfed45000-0xfed8ffff] has been reserved [ 0.431593] system 00:01: Plug and Play ACPI device, IDs PNP0c02 (active) [ 0.431859] pnp 00:02: [io 0x0000-0x001f] [ 0.431862] pnp 00:02: [io 0x0081-0x0091] [ 0.431864] pnp 00:02: [io 0x0093-0x009f] [ 0.431867] pnp 00:02: [io 0x00c0-0x00df] [ 0.431870] pnp 00:02: [dma 4] [ 0.431931] pnp 00:02: Plug and Play ACPI device, IDs PNP0200 (active) [ 0.431946] pnp 00:03: [mem 0xff000000-0xffffffff] [ 0.432030] pnp 00:03: Plug and Play ACPI device, IDs INT0800 (active) [ 0.432131] pnp 00:04: [mem 0xfed00000-0xfed003ff] [ 0.432218] system 00:04: [mem 0xfed00000-0xfed003ff] has been reserved [ 0.432223] system 00:04: Plug and Play ACPI device, IDs PNP0103 PNP0c01 (active) [ 0.432239] pnp 00:05: [io 0x00f0] [ 0.432256] pnp 00:05: [irq 13] [ 0.432321] pnp 00:05: Plug and Play ACPI device, IDs PNP0c04 (active) [ 0.432337] pnp 00:06: [io 0x002e-0x002f] [ 0.432340] pnp 00:06: [io 0x004e-0x004f] [ 0.432343] pnp 00:06: [io 0x0061] [ 0.432345] pnp 00:06: [io 0x0063] [ 0.432348] pnp 00:06: [io 0x0065] [ 0.432351] pnp 00:06: [io 0x0067] [ 0.432353] pnp 00:06: [io 0x0080] [ 0.432355] pnp 00:06: [io 0x0092] [ 0.432358] pnp 00:06: [io 0x00b2-0x00b3] [ 0.432361] pnp 00:06: [io 0x0680-0x069f] [ 0.432363] pnp 00:06: [io 0x0800-0x080f] [ 0.432366] pnp 00:06: [io 0x1000-0x107f] [ 0.432373] pnp 00:06: [io 0x1180-0x11bf] [ 0.432375] pnp 00:06: [io 0xfe00] [ 0.432378] pnp 00:06: [io 0xff00-0xff7f] [ 0.432479] system 00:06: [io 0x0680-0x069f] has been reserved [ 0.432484] system 00:06: [io 0x0800-0x080f] has been reserved [ 0.432487] system 00:06: [io 0x1000-0x107f] has been reserved [ 0.432491] system 00:06: [io 0x1180-0x11bf] has been reserved [ 0.432495] system 00:06: [io 0xfe00] has been reserved [ 0.432499] system 00:06: [io 0xff00-0xff7f] has been reserved [ 0.432504] system 00:06: Plug and Play ACPI device, IDs PNP0c02 (active) [ 0.432517] pnp 00:07: [io 0x0070-0x0077] [ 0.432525] pnp 00:07: [irq 8] [ 0.432587] pnp 00:07: Plug and Play ACPI device, IDs PNP0b00 (active) [ 0.452092] pnp 00:08: [io 0x0060] [ 0.452096] pnp 00:08: [io 0x0064] [ 0.452112] pnp 00:08: [irq 1] [ 0.452226] pnp 00:08: Plug and Play ACPI device, IDs PNP0303 (active) [ 0.452246] pnp 00:09: [irq 12] [ 0.452305] pnp 00:09: Plug and Play ACPI device, IDs PNP0f13 (active) [ 0.452340] pnp: PnP ACPI: found 10 devices [ 0.452343] ACPI: ACPI bus type pnp unregistered [ 0.459104] PCI: max bus depth: 1 pci_try_num: 2 [ 0.459195] pci 0000:00:1f.3: BAR 0: assigned [mem 0xc0000000-0xc00000ff] [ 0.459204] pci 0000:00:1f.3: BAR 0: set to [mem 0xc0000000-0xc00000ff] (PCI address [0xc0000000-0xc00000ff]) [ 0.459209] pci 0000:00:1c.0: PCI bridge to [bus 02-02] [ 0.459214] pci 0000:00:1c.0: bridge window [io 0x2000-0x2fff] [ 0.459222] pci 0000:00:1c.0: bridge window [mem 0xf6000000-0xf7ffffff] [ 0.459229] pci 0000:00:1c.0: bridge window [mem 0xf0000000-0xf1ffffff 64bit pref] [ 0.459239] pci 0000:00:1c.1: PCI bridge to [bus 04-04] [ 0.459244] pci 0000:00:1c.1: bridge window [io 0x3000-0x3fff] [ 0.459252] pci 0000:00:1c.1: bridge window [mem 0xf8000000-0xf9ffffff] [ 0.459259] pci 0000:00:1c.1: bridge window [mem 0xf2000000-0xf3ffffff 64bit pref] [ 0.459268] pci 0000:00:1c.2: PCI bridge to [bus 05-05] [ 0.459272] pci 0000:00:1c.2: bridge window [io 0x4000-0x4fff] [ 0.459280] pci 0000:00:1c.2: bridge window [mem 0xfa000000-0xfbffffff] [ 0.459287] pci 0000:00:1c.2: bridge window [mem 0xf4000000-0xf5ffffff 64bit pref] [ 0.459296] pci 0000:00:1c.3: PCI bridge to [bus 06-06] [ 0.459301] pci 0000:00:1c.3: bridge window [io 0x5000-0x5fff] [ 0.459308] pci 0000:00:1c.3: bridge window [mem 0xc8000000-0xc9ffffff] [ 0.459314] pci 0000:00:1c.3: bridge window [mem 0xcc000000-0xcdffffff 64bit pref] [ 0.459324] pci 0000:00:1e.0: PCI bridge to [bus 08-08] [ 0.459327] pci 0000:00:1e.0: bridge window [io disabled] [ 0.459334] pci 0000:00:1e.0: bridge window [mem 0xfc200000-0xfc2fffff] [ 0.459340] pci 0000:00:1e.0: bridge window [mem pref disabled] [ 0.459373] pci 0000:00:1c.0: PCI INT A -> GSI 17 (level, low) -> IRQ 17 [ 0.459380] pci 0000:00:1c.0: setting latency timer to 64 [ 0.459399] pci 0000:00:1c.1: PCI INT B -> GSI 16 (level, low) -> IRQ 16 [ 0.459405] pci 0000:00:1c.1: setting latency timer to 64 [ 0.459419] pci 0000:00:1c.2: PCI INT C -> GSI 18 (level, low) -> IRQ 18 [ 0.459425] pci 0000:00:1c.2: setting latency timer to 64 [ 0.459438] pci 0000:00:1c.3: PCI INT D -> GSI 19 (level, low) -> IRQ 19 [ 0.459444] pci 0000:00:1c.3: setting latency timer to 64 [ 0.459455] pci 0000:00:1e.0: setting latency timer to 64 [ 0.459460] pci_bus 0000:00: resource 0 [io 0x0000-0xffff] [ 0.459464] pci_bus 0000:00: resource 1 [mem 0x00000000-0xfffffffff] [ 0.459467] pci_bus 0000:02: resource 0 [io 0x2000-0x2fff] [ 0.459470] pci_bus 0000:02: resource 1 [mem 0xf6000000-0xf7ffffff] [ 0.459474] pci_bus 0000:02: resource 2 [mem 0xf0000000-0xf1ffffff 64bit pref] [ 0.459478] pci_bus 0000:04: resource 0 [io 0x3000-0x3fff] [ 0.459481] pci_bus 0000:04: resource 1 [mem 0xf8000000-0xf9ffffff] [ 0.459484] pci_bus 0000:04: resource 2 [mem 0xf2000000-0xf3ffffff 64bit pref] [ 0.459488] pci_bus 0000:05: resource 0 [io 0x4000-0x4fff] [ 0.459491] pci_bus 0000:05: resource 1 [mem 0xfa000000-0xfbffffff] [ 0.459495] pci_bus 0000:05: resource 2 [mem 0xf4000000-0xf5ffffff 64bit pref] [ 0.459498] pci_bus 0000:06: resource 0 [io 0x5000-0x5fff] [ 0.459501] pci_bus 0000:06: resource 1 [mem 0xc8000000-0xc9ffffff] [ 0.459505] pci_bus 0000:06: resource 2 [mem 0xcc000000-0xcdffffff 64bit pref] [ 0.459508] pci_bus 0000:08: resource 1 [mem 0xfc200000-0xfc2fffff] [ 0.459512] pci_bus 0000:08: resource 4 [io 0x0000-0xffff] [ 0.459515] pci_bus 0000:08: resource 5 [mem 0x00000000-0xfffffffff] [ 0.459580] NET: Registered protocol family 2 [ 0.459816] IP route cache hash table entries: 131072 (order: 8, 1048576 bytes) [ 0.461759] TCP established hash table entries: 524288 (order: 11, 8388608 bytes) [ 0.468207] TCP bind hash table entries: 65536 (order: 8, 1048576 bytes) [ 0.469024] TCP: Hash tables configured (established 524288 bind 65536) [ 0.469028] TCP reno registered [ 0.469052] UDP hash table entries: 2048 (order: 4, 65536 bytes) [ 0.469120] UDP-Lite hash table entries: 2048 (order: 4, 65536 bytes) [ 0.469325] NET: Registered protocol family 1 [ 0.469358] pci 0000:00:02.0: Boot video device [ 0.469577] PCI: CLS 64 bytes, default 64 [ 0.469604] Simple Boot Flag at 0x36 set to 0x1 [ 0.470069] audit: initializing netlink socket (disabled) [ 0.470088] type=2000 audit(1317800082.464:1): initialized [ 0.509918] HugeTLB registered 2 MB page size, pre-allocated 0 pages [ 0.531362] VFS: Disk quotas dquot_6.5.2 [ 0.531454] Dquot-cache hash table entries: 512 (order 0, 4096 bytes) [ 0.532343] fuse init (API version 7.16) [ 0.532465] msgmni has been set to 5719 [ 0.532931] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 253) [ 0.532975] io scheduler noop registered [ 0.532978] io scheduler deadline registered [ 0.533033] io scheduler cfq registered (default) [ 0.533206] pcieport 0000:00:1c.0: setting latency timer to 64 [ 0.533281] pcieport 0000:00:1c.0: irq 40 for MSI/MSI-X [ 0.533378] pcieport 0000:00:1c.1: setting latency timer to 64 [ 0.533444] pcieport 0000:00:1c.1: irq 41 for MSI/MSI-X [ 0.533540] pcieport 0000:00:1c.2: setting latency timer to 64 [ 0.533607] pcieport 0000:00:1c.2: irq 42 for MSI/MSI-X [ 0.533705] pcieport 0000:00:1c.3: setting latency timer to 64 [ 0.533770] pcieport 0000:00:1c.3: irq 43 for MSI/MSI-X [ 0.533898] pci_hotplug: PCI Hot Plug PCI Core version: 0.5 [ 0.533934] pciehp: PCI Express Hot Plug Controller Driver version: 0.4 [ 0.533994] intel_idle: MWAIT substates: 0x22220 [ 0.533997] intel_idle: does not run on family 6 model 15 [ 0.534105] ACPI: Deprecated procfs I/F for AC is loaded, please retry with CONFIG_ACPI_PROCFS_POWER cleared [ 0.534186] ACPI: AC Adapter [ACAD] (on-line) [ 0.534267] input: Lid Switch as /devices/LNXSYSTM:00/device:00/PNP0C0D:00/input/input0 [ 0.534291] ACPI: Lid Switch [LID0] [ 0.534348] input: Power Button as /devices/LNXSYSTM:00/device:00/PNP0C0C:00/input/input1 [ 0.534353] ACPI: Power Button [PWRB] [ 0.534429] input: Power Button as /devices/LNXSYSTM:00/LNXPWRBN:00/input/input2 [ 0.534434] ACPI: Power Button [PWRF] [ 0.534479] ACPI: acpi_idle registered with cpuidle [ 0.536970] Monitor-Mwait will be used to enter C-1 state [ 0.537024] Monitor-Mwait will be used to enter C-2 state [ 0.537059] Monitor-Mwait will be used to enter C-3 state [ 0.537066] Marking TSC unstable due to TSC halts in idle [ 0.576306] ACPI: Deprecated procfs I/F for battery is loaded, please retry with CONFIG_ACPI_PROCFS_POWER cleared [ 0.576339] ERST: Table is not found! [ 0.576477] Serial: 8250/16550 driver, 32 ports, IRQ sharing enabled [ 0.596514] ACPI: Battery Slot [BAT1] (battery present) [ 0.756873] Freeing initrd memory: 19464k freed [ 0.789948] Linux agpgart interface v0.103 [ 0.790084] agpgart-intel 0000:00:00.0: Intel 965GM Chipset [ 0.790242] agpgart-intel 0000:00:00.0: detected gtt size: 524288K total, 262144K mappable [ 0.791097] agpgart-intel 0000:00:00.0: detected 8192K stolen memory [ 0.791250] agpgart-intel 0000:00:00.0: AGP aperture is 256M @ 0xd0000000 [ 0.792794] brd: module loaded [ 0.793486] loop: module loaded [ 0.793683] ata_piix 0000:00:1f.1: version 2.13 [ 0.793701] ata_piix 0000:00:1f.1: PCI INT A -> GSI 19 (level, low) -> IRQ 19 [ 0.793746] ata_piix 0000:00:1f.1: setting latency timer to 64 [ 0.794143] scsi0 : ata_piix [ 0.794282] scsi1 : ata_piix [ 0.794784] ata1: PATA max UDMA/100 cmd 0x1f0 ctl 0x3f6 bmdma 0x1810 irq 14 [ 0.794789] ata2: PATA max UDMA/100 cmd 0x170 ctl 0x376 bmdma 0x1818 irq 15 [ 0.795227] Fixed MDIO Bus: probed [ 0.795261] PPP generic driver version 2.4.2 [ 0.795315] tun: Universal TUN/TAP device driver, 1.6 [ 0.795318] tun: (C) 1999-2004 Max Krasnyansky [ 0.795429] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver [ 0.795451] ehci_hcd 0000:00:1a.7: PCI INT C -> GSI 18 (level, low) -> IRQ 18 [ 0.795472] ehci_hcd 0000:00:1a.7: setting latency timer to 64 [ 0.795477] ehci_hcd 0000:00:1a.7: EHCI Host Controller [ 0.795524] ehci_hcd 0000:00:1a.7: new USB bus registered, assigned bus number 1 [ 0.795567] ehci_hcd 0000:00:1a.7: debug port 1 [ 0.799463] ehci_hcd 0000:00:1a.7: cache line size of 64 is not supported [ 0.799485] ehci_hcd 0000:00:1a.7: irq 18, io mem 0xfc504800 [ 0.812020] ehci_hcd 0000:00:1a.7: USB 2.0 started, EHCI 1.00 [ 0.812182] hub 1-0:1.0: USB hub found [ 0.812189] hub 1-0:1.0: 4 ports detected [ 0.812291] ehci_hcd 0000:00:1d.7: PCI INT A -> GSI 23 (level, low) -> IRQ 23 [ 0.812305] ehci_hcd 0000:00:1d.7: setting latency timer to 64 [ 0.812310] ehci_hcd 0000:00:1d.7: EHCI Host Controller [ 0.812363] ehci_hcd 0000:00:1d.7: new USB bus registered, assigned bus number 2 [ 0.812398] ehci_hcd 0000:00:1d.7: debug port 1 [ 0.816279] ehci_hcd 0000:00:1d.7: cache line size of 64 is not supported [ 0.816301] ehci_hcd 0000:00:1d.7: irq 23, io mem 0xfc504c00 [ 0.832023] ehci_hcd 0000:00:1d.7: USB 2.0 started, EHCI 1.00 [ 0.832151] hub 2-0:1.0: USB hub found [ 0.832157] hub 2-0:1.0: 6 ports detected [ 0.832258] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver [ 0.832276] uhci_hcd: USB Universal Host Controller Interface driver [ 0.832305] uhci_hcd 0000:00:1a.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16 [ 0.832314] uhci_hcd 0000:00:1a.0: setting latency timer to 64 [ 0.832319] uhci_hcd 0000:00:1a.0: UHCI Host Controller [ 0.832366] uhci_hcd 0000:00:1a.0: new USB bus registered, assigned bus number 3 [ 0.832412] uhci_hcd 0000:00:1a.0: irq 16, io base 0x00001820 [ 0.832569] hub 3-0:1.0: USB hub found [ 0.832575] hub 3-0:1.0: 2 ports detected [ 0.832668] uhci_hcd 0000:00:1a.1: PCI INT B -> GSI 21 (level, low) -> IRQ 21 [ 0.832679] uhci_hcd 0000:00:1a.1: setting latency timer to 64 [ 0.832684] uhci_hcd 0000:00:1a.1: UHCI Host Controller [ 0.832731] uhci_hcd 0000:00:1a.1: new USB bus registered, assigned bus number 4 [ 0.832775] uhci_hcd 0000:00:1a.1: irq 21, io base 0x00001840 [ 0.832936] hub 4-0:1.0: USB hub found [ 0.832941] hub 4-0:1.0: 2 ports detected [ 0.833028] uhci_hcd 0000:00:1d.0: PCI INT A -> GSI 23 (level, low) -> IRQ 23 [ 0.833037] uhci_hcd 0000:00:1d.0: setting latency timer to 64 [ 0.833042] uhci_hcd 0000:00:1d.0: UHCI Host Controller [ 0.833099] uhci_hcd 0000:00:1d.0: new USB bus registered, assigned bus number 5 [ 0.833134] uhci_hcd 0000:00:1d.0: irq 23, io base 0x00001860 [ 0.833291] hub 5-0:1.0: USB hub found [ 0.833296] hub 5-0:1.0: 2 ports detected [ 0.833384] uhci_hcd 0000:00:1d.1: PCI INT B -> GSI 19 (level, low) -> IRQ 19 [ 0.833392] uhci_hcd 0000:00:1d.1: setting latency timer to 64 [ 0.833397] uhci_hcd 0000:00:1d.1: UHCI Host Controller [ 0.833448] uhci_hcd 0000:00:1d.1: new USB bus registered, assigned bus number 6 [ 0.833493] uhci_hcd 0000:00:1d.1: irq 19, io base 0x00001880 [ 0.833649] hub 6-0:1.0: USB hub found [ 0.833655] hub 6-0:1.0: 2 ports detected [ 0.833737] uhci_hcd 0000:00:1d.2: PCI INT C -> GSI 18 (level, low) -> IRQ 18 [ 0.833746] uhci_hcd 0000:00:1d.2: setting latency timer to 64 [ 0.833750] uhci_hcd 0000:00:1d.2: UHCI Host Controller [ 0.833797] uhci_hcd 0000:00:1d.2: new USB bus registered, assigned bus number 7 [ 0.833832] uhci_hcd 0000:00:1d.2: irq 18, io base 0x000018a0 [ 0.833984] hub 7-0:1.0: USB hub found [ 0.833990] hub 7-0:1.0: 2 ports detected [ 0.834133] i8042: PNP: PS/2 Controller [PNP0303:PS2K,PNP0f13:PS2M] at 0x60,0x64 irq 1,12 [ 0.858635] serio: i8042 KBD port at 0x60,0x64 irq 1 [ 0.858644] serio: i8042 AUX port at 0x60,0x64 irq 12 [ 0.858792] mousedev: PS/2 mouse device common for all mice [ 0.860515] rtc_cmos 00:07: RTC can wake from S4 [ 0.860650] rtc_cmos 00:07: rtc core: registered rtc_cmos as rtc0 [ 0.860686] rtc0: alarms up to one month, y3k, 242 bytes nvram, hpet irqs [ 0.860821] device-mapper: uevent: version 1.0.3 [ 0.860928] device-mapper: ioctl: 4.20.0-ioctl (2011-02-02) initialised: dm-devel@redhat.com [ 0.861015] cpuidle: using governor ladder [ 0.861137] cpuidle: using governor menu [ 0.861140] EFI Variables Facility v0.08 2004-May-17 [ 0.861497] TCP cubic registered [ 0.861666] NET: Registered protocol family 10 [ 0.862339] NET: Registered protocol family 17 [ 0.862362] Registering the dns_resolver key type [ 0.862505] PM: Hibernation image not present or could not be loaded. [ 0.862521] registered taskstats version 1 [ 0.881709] Magic number: 15:169:571 [ 0.881852] rtc_cmos 00:07: setting system clock to 2011-10-05 07:34:43 UTC (1317800083) [ 0.882695] BIOS EDD facility v0.16 2004-Jun-25, 0 devices found [ 0.882699] EDD information not available. [ 0.885384] input: AT Translated Set 2 keyboard as /devices/platform/i8042/serio0/input/input3 [ 0.964510] ata1.00: ATAPI: MATSHITADVD-RAM UJ-850 z, RB32, max UDMA/33 [ 0.980374] ata1.00: configured for UDMA/33 [ 0.983110] scsi 0:0:0:0: CD-ROM MATSHITA DVD-RAM UJ-850 z RB32 PQ: 0 ANSI: 5 [ 0.985684] sr0: scsi3-mmc drive: 24x/24x writer dvd-ram cd/rw xa/form2 cdda tray [ 0.985690] cdrom: Uniform CD-ROM driver Revision: 3.20 [ 0.985886] sr 0:0:0:0: Attached scsi CD-ROM sr0 [ 0.985957] sr 0:0:0:0: Attached scsi generic sg0 type 5 [ 0.988684] Freeing unused kernel memory: 984k freed [ 0.989019] Write protecting the kernel read-only data: 10240k [ 0.989354] Freeing unused kernel memory: 20k freed [ 0.996526] Freeing unused kernel memory: 1400k freed [ 1.023090] udevd[92]: starting version 173 [ 1.095474] [drm] Initialized drm 1.1.0 20060810 [ 1.111223] tg3.c:v3.119 (May 18, 2011) [ 1.111255] tg3 0000:06:00.0: PCI INT A -> GSI 19 (level, low) -> IRQ 19 [ 1.111275] tg3 0000:06:00.0: setting latency timer to 64 [ 1.123354] wmi: Mapper loaded [ 1.135292] i915 0000:00:02.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16 [ 1.135301] i915 0000:00:02.0: setting latency timer to 64 [ 1.229432] i915 0000:00:02.0: irq 44 for MSI/MSI-X [ 1.229442] [drm] Supports vblank timestamp caching Rev 1 (10.10.2010). [ 1.229444] [drm] Driver supports precise vblank timestamp query. [ 1.229504] vgaarb: device changed decodes: PCI:0000:00:02.0,olddecodes=io+mem,decodes=io+mem:owns=io+mem [ 1.231431] sdhci: Secure Digital Host Controller Interface driver [ 1.231435] sdhci: Copyright(c) Pierre Ossman [ 1.231761] sdhci-pci 0000:08:06.1: SDHCI controller found [1180:0822] (rev 19) [ 1.231780] sdhci-pci 0000:08:06.1: PCI INT B -> GSI 23 (level, low) -> IRQ 23 [ 1.232804] sdhci-pci 0000:08:06.1: Will use DMA mode even though HW doesn't fully claim to support it. [ 1.251222] mmc0: no vmmc regulator found [ 1.252265] Registered led device: mmc0:: [ 1.258216] mmc0: SDHCI controller on PCI [0000:08:06.1] using DMA [ 1.278826] tg3 0000:06:00.0: eth0: Tigon3 [partno(BCM95906) rev c002] (PCI Express) MAC address 00:1b:38:0c:7f:47 [ 1.278833] tg3 0000:06:00.0: eth0: attached PHY is 5906 (10/100Base-TX Ethernet) (WireSpeed[0], EEE[0]) [ 1.278838] tg3 0000:06:00.0: eth0: RXcsums[1] LinkChgREG[0] MIirq[0] ASF[0] TSOcap[1] [ 1.278842] tg3 0000:06:00.0: eth0: dma_rwctrl[76180000] dma_mask[64-bit] [ 1.288114] firewire_ohci 0000:08:06.0: PCI INT A -> GSI 22 (level, low) -> IRQ 22 [ 1.288352] fixme: max PWM is zero. [ 1.321105] [drm] initialized overlay support [ 1.363095] firewire_ohci: Added fw-ohci device 0000:08:06.0, OHCI v1.10, 4 IR + 4 IT contexts, quirks 0x1 [ 1.429305] usb 1-4: new high speed USB device number 4 using ehci_hcd [ 1.510188] fbcon: inteldrmfb (fb0) is primary device [ 1.510267] Console: switching to colour frame buffer device 160x50 [ 1.510301] fb0: inteldrmfb frame buffer device [ 1.510304] drm: registered panic notifier [ 1.596139] acpi device:08: registered as cooling_device2 [ 1.596350] input: Video Bus as /devices/LNXSYSTM:00/device:00/PNP0A08:00/LNXVIDEO:01/input/input4 [ 1.596428] ACPI: Video Device [GFX0] (multi-head: yes rom: no post: no) [ 1.596505] [drm] Initialized i915 1.6.0 20080730 for 0000:00:02.0 on minor 0 [ 1.596723] ahci 0000:00:1f.2: version 3.0 [ 1.596748] ahci 0000:00:1f.2: PCI INT B -> GSI 19 (level, low) -> IRQ 19 [ 1.596832] ahci 0000:00:1f.2: irq 45 for MSI/MSI-X [ 1.596928] ahci 0000:00:1f.2: AHCI 0001.0100 32 slots 3 ports 3 Gbps 0x7 impl SATA mode [ 1.596934] ahci 0000:00:1f.2: flags: 64bit ncq sntf pm led clo pio slum part ccc [ 1.596941] ahci 0000:00:1f.2: setting latency timer to 64 [ 1.600697] scsi2 : ahci [ 1.601002] scsi3 : ahci [ 1.601154] scsi4 : ahci [ 1.601328] ata3: SATA max UDMA/133 abar m2048@0xfc504000 port 0xfc504100 irq 45 [ 1.601335] ata4: SATA max UDMA/133 abar m2048@0xfc504000 port 0xfc504180 irq 45 [ 1.601340] ata5: SATA max UDMA/133 abar m2048@0xfc504000 port 0xfc504200 irq 45 [ 1.860262] firewire_core: created device fw0: GUID 00023f7bac4040de, S400 [ 1.920122] ata3: SATA link up 3.0 Gbps (SStatus 123 SControl 300) [ 1.921792] ata3.00: unexpected _GTF length (8) [ 1.922070] ata3.00: ATA-8: WDC WD2500BEKT-75PVMT0, 01.01A01, max UDMA/133 [ 1.922077] ata3.00: 488397168 sectors, multi 16: LBA48 NCQ (depth 31/32), AA [ 1.923756] ata3.00: unexpected _GTF length (8) [ 1.924053] ata4: SATA link down (SStatus 0 SControl 300) [ 1.924081] ata3.00: configured for UDMA/133 [ 1.924106] ata5: SATA link down (SStatus 0 SControl 300) [ 1.924318] scsi 2:0:0:0: Direct-Access ATA WDC WD2500BEKT-7 01.0 PQ: 0 ANSI: 5 [ 1.924525] sd 2:0:0:0: Attached scsi generic sg1 type 0 [ 1.924642] sd 2:0:0:0: [sda] 488397168 512-byte logical blocks: (250 GB/232 GiB) [ 1.924823] sd 2:0:0:0: [sda] Write Protect is off [ 1.924828] sd 2:0:0:0: [sda] Mode Sense: 00 3a 00 00 [ 1.924898] sd 2:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA [ 2.020840] sda: sda1 sda2 sda3 sda4 < sda5 > [ 2.021461] sd 2:0:0:0: [sda] Attached SCSI disk [ 2.032059] usb 3-1: new full speed USB device number 2 using uhci_hcd [ 2.464056] usb 4-1: new full speed USB device number 2 using uhci_hcd [ 2.872042] usb 6-1: new low speed USB device number 2 using uhci_hcd [ 3.093235] input: MLK Trust Mouse as /devices/pci0000:00/0000:00:1d.1/usb6/6-1/6-1:1.0/input/input5 [ 3.093727] generic-usb 0003:04FC:05DA.0001: input,hiddev0,hidraw0: USB HID v1.10 Mouse [MLK Trust Mouse] on usb-0000:00:1d.1-1/input0 [ 3.093905] usbcore: registered new interface driver usbhid [ 3.093909] usbhid: USB HID core driver [ 3.288960] EXT4-fs (sda2): mounted filesystem with ordered data mode. Opts: (null) [ 3.308073] usb 6-2: new full speed USB device number 3 using uhci_hcd [ 3.720052] usb 7-1: new low speed USB device number 2 using uhci_hcd [ 3.918393] input: LITEON Technology USB Multimedia Keyboard as /devices/pci0000:00/0000:00:1d.2/usb7/7-1/7-1:1.0/input/input6 [ 3.918495] generic-usb 0003:046D:C312.0002: input,hidraw1: USB HID v1.10 Keyboard [LITEON Technology USB Multimedia Keyboard] on usb-0000:00:1d.2-1/input0 [ 5.565904] Adding 15999996k swap on /dev/sda3. Priority:-1 extents:1 across:15999996k [ 5.691364] udevd[373]: starting version 173 [ 6.303871] lp: driver loaded but no devices found [ 7.040655] cfg80211: Calling CRDA to update world regulatory domain [ 7.159284] r852 0000:08:06.3: PCI INT B -> GSI 23 (level, low) -> IRQ 23 [ 7.159297] r852 0000:08:06.3: setting latency timer to 64 [ 7.159394] r852: Non dma capable device detected, dma disabled [ 7.159411] r852: driver loaded successfully [ 7.169632] iwl3945: Intel(R) PRO/Wireless 3945ABG/BG Network Connection driver for Linux, in-tree:s [ 7.169637] iwl3945: Copyright(c) 2003-2011 Intel Corporation [ 7.169734] iwl3945 0000:04:00.0: PCI INT A -> GSI 17 (level, low) -> IRQ 17 [ 7.169751] iwl3945 0000:04:00.0: setting latency timer to 64 [ 7.225063] iwl3945 0000:04:00.0: Tunable channels: 13 802.11bg, 23 802.11a channels [ 7.225067] iwl3945 0000:04:00.0: Detected Intel Wireless WiFi Link 3945ABG [ 7.225225] iwl3945 0000:04:00.0: irq 46 for MSI/MSI-X [ 7.225470] Registered led device: phy0-led [ 7.225511] cfg80211: Ignoring regulatory request Set by core since the driver uses its own custom regulatory domain [ 7.521071] ieee80211 phy0: Selected rate control algorithm 'iwl-3945-rs' [ 7.728682] udevd[389]: renamed network interface eth0 to eth1 [ 7.785421] udevd[392]: renamed network interface wlan0 to wlan1 [ 7.839555] device-mapper: multipath: version 1.3.0 loaded [ 7.920206] Synaptics Touchpad, model: 1, fw: 6.3, id: 0x25c0b1, caps: 0xa04713/0x200000/0x0 [ 8.001393] input: SynPS/2 Synaptics TouchPad as /devices/platform/i8042/serio1/input/input7 [ 8.103705] Linux video capture interface: v2.00 [ 8.142601] uvcvideo: Found UVC 1.00 device USB 2.0 Camera (04f2:b013) [ 8.145395] input: USB 2.0 Camera as /devices/pci0000:00/0000:00:1a.7/usb1/1-4/1-4:1.0/input/input8 [ 8.145503] usbcore: registered new interface driver uvcvideo [ 8.145506] USB Video Class driver (v1.1.0) [ 8.268868] gspca: v2.13.0 registered [ 8.426860] Bluetooth: Core ver 2.16 [ 8.426898] NET: Registered protocol family 31 [ 8.426901] Bluetooth: HCI device and connection manager initialized [ 8.426905] Bluetooth: HCI socket layer initialized [ 8.426908] Bluetooth: L2CAP socket layer initialized [ 8.426983] Bluetooth: SCO socket layer initialized [ 8.445120] Bluetooth: Generic Bluetooth USB driver ver 0.6 [ 8.445873] usbcore: registered new interface driver btusb [ 8.596127] cfg80211: Ignoring regulatory request Set by core since the driver uses its own custom regulatory domain [ 8.596132] cfg80211: World regulatory domain updated: [ 8.596135] cfg80211: (start_freq - end_freq @ bandwidth), (max_antenna_gain, max_eirp) [ 8.596139] cfg80211: (2402000 KHz - 2472000 KHz @ 40000 KHz), (300 mBi, 2000 mBm) [ 8.596144] cfg80211: (2457000 KHz - 2482000 KHz @ 20000 KHz), (300 mBi, 2000 mBm) [ 8.596147] cfg80211: (2474000 KHz - 2494000 KHz @ 20000 KHz), (300 mBi, 2000 mBm) [ 8.596151] cfg80211: (5170000 KHz - 5250000 KHz @ 40000 KHz), (300 mBi, 2000 mBm) [ 8.596155] cfg80211: (5735000 KHz - 5835000 KHz @ 40000 KHz), (300 mBi, 2000 mBm) [ 8.713241] HDA Intel 0000:00:1b.0: PCI INT A -> GSI 22 (level, low) -> IRQ 22 [ 8.713332] HDA Intel 0000:00:1b.0: irq 47 for MSI/MSI-X [ 8.713375] HDA Intel 0000:00:1b.0: setting latency timer to 64 [ 9.214524] type=1400 audit(1317800091.827:2): apparmor="STATUS" operation="profile_load" name="/sbin/dhclient" pid=762 comm="apparmor_parser" [ 9.214539] type=1400 audit(1317800091.827:3): apparmor="STATUS" operation="profile_replace" name="/sbin/dhclient" pid=760 comm="apparmor_parser" [ 9.214899] type=1400 audit(1317800091.827:4): apparmor="STATUS" operation="profile_load" name="/usr/lib/NetworkManager/nm-dhcp-client.action" pid=762 comm="apparmor_parser" [ 9.214917] type=1400 audit(1317800091.827:5): apparmor="STATUS" operation="profile_replace" name="/usr/lib/NetworkManager/nm-dhcp-client.action" pid=760 comm="apparmor_parser" [ 9.215139] type=1400 audit(1317800091.827:6): apparmor="STATUS" operation="profile_load" name="/usr/lib/connman/scripts/dhclient-script" pid=762 comm="apparmor_parser" [ 9.215162] type=1400 audit(1317800091.827:7): apparmor="STATUS" operation="profile_replace" name="/usr/lib/connman/scripts/dhclient-script" pid=760 comm="apparmor_parser" [ 9.215989] type=1400 audit(1317800091.827:8): apparmor="STATUS" operation="profile_replace" name="/sbin/dhclient" pid=761 comm="apparmor_parser" [ 9.216386] type=1400 audit(1317800091.831:9): apparmor="STATUS" operation="profile_replace" name="/usr/lib/NetworkManager/nm-dhcp-client.action" pid=761 comm="apparmor_parser" [ 9.216637] type=1400 audit(1317800091.831:10): apparmor="STATUS" operation="profile_replace" name="/usr/lib/connman/scripts/dhclient-script" pid=761 comm="apparmor_parser" [ 9.565602] input: zc3xx as /devices/pci0000:00/0000:00:1a.0/usb3/3-1/input/input9 [ 9.565840] usbcore: registered new interface driver zc3xx [ 9.567768] usbcore: registered new interface driver snd-usb-audio [ 10.957262] EXT4-fs (sda2): re-mounted. Opts: errors=remount-ro [ 11.498897] EXT4-fs (sda1): mounted filesystem with ordered data mode. Opts: (null) [ 11.610016] EXT4-fs (sda5): mounted filesystem with ordered data mode. Opts: (null) [ 13.338782] type=1400 audit(1317800095.951:11): apparmor="STATUS" operation="profile_load" name="/usr/lib/lightdm/lightdm-guest-session-wrapper" pid=1170 comm="apparmor_parser" [ 14.107842] ppdev: user-space parallel port driver [ 16.201248] microcode: CPU0 sig=0x6fd, pf=0x80, revision=0xa1 [ 16.241864] microcode: CPU1 sig=0x6fd, pf=0x80, revision=0xa1 [ 16.244584] microcode: Microcode Update Driver: v2.00 , Peter Oruba [ 16.257389] iwl3945 0000:04:00.0: loaded firmware version 15.32.2.9 [ 16.319712] microcode: CPU0 updated to revision 0xa4, date = 2010-10-02 [ 16.320392] microcode: CPU1 updated to revision 0xa4, date = 2010-10-02 [ 16.327663] ADDRCONF(NETDEV_UP): wlan1: link is not ready [ 16.411245] tg3 0000:06:00.0: irq 48 for MSI/MSI-X [ 16.441602] ADDRCONF(NETDEV_UP): eth1: link is not ready [ 17.163336] init: failsafe main process (1112) killed by TERM signal [ 17.369512] init: gdm main process (1340) killed by TERM signal [ 18.121686] tg3 0000:06:00.0: eth1: Link is up at 100 Mbps, full duplex [ 18.121691] tg3 0000:06:00.0: eth1: Flow control is on for TX and on for RX [ 18.122295] ADDRCONF(NETDEV_CHANGE): eth1: link becomes ready [ 21.210518] RPC: Registered named UNIX socket transport module. [ 21.210523] RPC: Registered udp transport module. [ 21.210525] RPC: Registered tcp transport module. [ 21.210528] RPC: Registered tcp NFSv4.1 backchannel transport module. [ 21.445931] Installing knfsd (copyright (C) 1996 okir@monad.swb.de). [ 21.627527] NFSD: Using /var/lib/nfs/v4recovery as the NFSv4 state recovery directory [ 21.636586] NFSD: starting 90-second grace period [ 24.852307] vboxdrv: Found 2 processor cores. [ 24.852593] vboxdrv: fAsync=0 offMin=0x1c2 offMax=0xae6 [ 24.852666] vboxdrv: TSC mode is 'synchronous', kernel timer mode is 'normal'. [ 24.852669] vboxdrv: Successfully loaded version 4.1.2_Ubuntu (interface 0x00190000). [ 25.101599] vboxpci: IOMMU not found (not registered) [ 27.046401] Bluetooth: BNEP (Ethernet Emulation) ver 1.3 [ 27.046405] Bluetooth: BNEP filters: protocol multicast [ 27.081903] Bluetooth: RFCOMM TTY layer initialized [ 27.081919] Bluetooth: RFCOMM socket layer initialized [ 27.081921] Bluetooth: RFCOMM ver 1.11 [ 28.752057] eth1: no IPv6 routers present [ 33.139443] init: plymouth-stop pre-start process (2005) terminated with status 1 [ 33.628053] EXT4-fs (sda2): re-mounted. Opts: errors=remount-ro,commit=0 [ 34.056830] EXT4-fs (sda1): re-mounted. Opts: commit=0 [ 34.217110] EXT4-fs (sda5): re-mounted. Opts: commit=0 [ 45.192742] wlan1: authenticate with 00:1a:c1:38:47:d4 (try 1) [ 45.196319] wlan1: authenticated [ 45.199717] wlan1: associate with 00:1a:c1:38:47:d4 (try 1) [ 45.202749] wlan1: RX AssocResp from 00:1a:c1:38:47:d4 (capab=0x431 status=0 aid=2) [ 45.202758] wlan1: associated [ 45.206342] ADDRCONF(NETDEV_CHANGE): wlan1: link becomes ready [ 45.206456] cfg80211: Calling CRDA for country: GB [ 45.213483] cfg80211: Updating information on frequency 2412 MHz for a 20 MHz width channel with regulatory rule: [ 45.213493] cfg80211: 2402000 KHz - 2482000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 45.213498] cfg80211: Updating information on frequency 2417 MHz for a 20 MHz width channel with regulatory rule: [ 45.213505] cfg80211: 2402000 KHz - 2482000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 45.213509] cfg80211: Updating information on frequency 2422 MHz for a 20 MHz width channel with regulatory rule: [ 45.213516] cfg80211: 2402000 KHz - 2482000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 45.213520] cfg80211: Updating information on frequency 2427 MHz for a 20 MHz width channel with regulatory rule: [ 45.213526] cfg80211: 2402000 KHz - 2482000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 45.213531] cfg80211: Updating information on frequency 2432 MHz for a 20 MHz width channel with regulatory rule: [ 45.213537] cfg80211: 2402000 KHz - 2482000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 45.213542] cfg80211: Updating information on frequency 2437 MHz for a 20 MHz width channel with regulatory rule: [ 45.213547] cfg80211: 2402000 KHz - 2482000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 45.213552] cfg80211: Updating information on frequency 2442 MHz for a 20 MHz width channel with regulatory rule: [ 45.213558] cfg80211: 2402000 KHz - 2482000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 45.213563] cfg80211: Updating information on frequency 2447 MHz for a 20 MHz width channel with regulatory rule: [ 45.213569] cfg80211: 2402000 KHz - 2482000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 45.213573] cfg80211: Updating information on frequency 2452 MHz for a 20 MHz width channel with regulatory rule: [ 45.213579] cfg80211: 2402000 KHz - 2482000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 45.213584] cfg80211: Updating information on frequency 2457 MHz for a 20 MHz width channel with regulatory rule: [ 45.213590] cfg80211: 2402000 KHz - 2482000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 45.213594] cfg80211: Updating information on frequency 2462 MHz for a 20 MHz width channel with regulatory rule: [ 45.213600] cfg80211: 2402000 KHz - 2482000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 45.213605] cfg80211: Updating information on frequency 2467 MHz for a 20 MHz width channel with regulatory rule: [ 45.213611] cfg80211: 2402000 KHz - 2482000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 45.213615] cfg80211: Updating information on frequency 2472 MHz for a 20 MHz width channel with regulatory rule: [ 45.213621] cfg80211: 2402000 KHz - 2482000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 45.213626] cfg80211: Disabling freq 5170 MHz [ 45.213630] cfg80211: Updating information on frequency 5180 MHz for a 20 MHz width channel with regulatory rule: [ 45.213636] cfg80211: 5170000 KHz - 5250000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 45.213640] cfg80211: Updating information on frequency 5190 MHz for a 20 MHz width channel with regulatory rule: [ 45.213646] cfg80211: 5170000 KHz - 5250000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 45.213651] cfg80211: Updating information on frequency 5200 MHz for a 20 MHz width channel with regulatory rule: [ 45.213657] cfg80211: 5170000 KHz - 5250000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 45.213662] cfg80211: Updating information on frequency 5210 MHz for a 20 MHz width channel with regulatory rule: [ 45.213667] cfg80211: 5170000 KHz - 5250000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 45.213672] cfg80211: Updating information on frequency 5220 MHz for a 20 MHz width channel with regulatory rule: [ 45.213678] cfg80211: 5170000 KHz - 5250000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 45.213683] cfg80211: Updating information on frequency 5230 MHz for a 20 MHz width channel with regulatory rule: [ 45.213688] cfg80211: 5170000 KHz - 5250000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 45.213693] cfg80211: Updating information on frequency 5240 MHz for a 20 MHz width channel with regulatory rule: [ 45.213699] cfg80211: 5170000 KHz - 5250000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 45.213704] cfg80211: Updating information on frequency 5260 MHz for a 20 MHz width channel with regulatory rule: [ 45.213710] cfg80211: 5250000 KHz - 5330000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 45.213714] cfg80211: Updating information on frequency 5280 MHz for a 20 MHz width channel with regulatory rule: [ 45.213720] cfg80211: 5250000 KHz - 5330000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 45.213725] cfg80211: Updating information on frequency 5300 MHz for a 20 MHz width channel with regulatory rule: [ 45.213731] cfg80211: 5250000 KHz - 5330000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 45.213736] cfg80211: Updating information on frequency 5320 MHz for a 20 MHz width channel with regulatory rule: [ 45.213742] cfg80211: 5250000 KHz - 5330000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 45.213746] cfg80211: Updating information on frequency 5500 MHz for a 20 MHz width channel with regulatory rule: [ 45.213752] cfg80211: 5490000 KHz - 5710000 KHz @ KHz), (N/A mBi, 2700 mBm) [ 45.213757] cfg80211: Updating information on frequency 5520 MHz for a 20 MHz width channel with regulatory rule: [ 45.213763] cfg80211: 5490000 KHz - 5710000 KHz @ KHz), (N/A mBi, 2700 mBm) [ 45.213768] cfg80211: Updating information on frequency 5540 MHz for a 20 MHz width channel with regulatory rule: [ 45.213774] cfg80211: 5490000 KHz - 5710000 KHz @ KHz), (N/A mBi, 2700 mBm) [ 45.213779] cfg80211: Updating information on frequency 5560 MHz for a 20 MHz width channel with regulatory rule: [ 45.213785] cfg80211: 5490000 KHz - 5710000 KHz @ KHz), (N/A mBi, 2700 mBm) [ 45.213789] cfg80211: Updating information on frequency 5580 MHz for a 20 MHz width channel with regulatory rule: [ 45.213795] cfg80211: 5490000 KHz - 5710000 KHz @ KHz), (N/A mBi, 2700 mBm) [ 45.213800] cfg80211: Updating information on frequency 5600 MHz for a 20 MHz width channel with regulatory rule: [ 45.213806] cfg80211: 5490000 KHz - 5710000 KHz @ KHz), (N/A mBi, 2700 mBm) [ 45.213810] cfg80211: Updating information on frequency 5620 MHz for a 20 MHz width channel with regulatory rule: [ 45.213816] cfg80211: 5490000 KHz - 5710000 KHz @ KHz), (N/A mBi, 2700 mBm) [ 45.213821] cfg80211: Updating information on frequency 5640 MHz for a 20 MHz width channel with regulatory rule: [ 45.213827] cfg80211: 5490000 KHz - 5710000 KHz @ KHz), (N/A mBi, 2700 mBm) [ 45.213831] cfg80211: Updating information on frequency 5660 MHz for a 20 MHz width channel with regulatory rule: [ 45.213837] cfg80211: 5490000 KHz - 5710000 KHz @ KHz), (N/A mBi, 2700 mBm) [ 45.213842] cfg80211: Updating information on frequency 5680 MHz for a 20 MHz width channel with regulatory rule: [ 45.213848] cfg80211: 5490000 KHz - 5710000 KHz @ KHz), (N/A mBi, 2700 mBm) [ 45.213852] cfg80211: Updating information on frequency 5700 MHz for a 20 MHz width channel with regulatory rule: [ 45.213858] cfg80211: 5490000 KHz - 5710000 KHz @ KHz), (N/A mBi, 2700 mBm) [ 45.213864] cfg80211: Regulatory domain changed to country: GB [ 45.213868] cfg80211: (start_freq - end_freq @ bandwidth), (max_antenna_gain, max_eirp) [ 45.213873] cfg80211: (2402000 KHz - 2482000 KHz @ 40000 KHz), (N/A, 2000 mBm) [ 45.213879] cfg80211: (5170000 KHz - 5250000 KHz @ 40000 KHz), (N/A, 2000 mBm) [ 45.213884] cfg80211: (5250000 KHz - 5330000 KHz @ 40000 KHz), (N/A, 2000 mBm) [ 45.213889] cfg80211: (5490000 KHz - 5710000 KHz @ 40000 KHz), (N/A, 2700 mBm) [ 52.640123] eth1: no IPv6 routers present [ 55.208282] wlan1: disassociating from 00:1a:c1:38:47:d4 by local choice (reason=3) [ 55.214021] cfg80211: All devices are disconnected, going to restore regulatory settings [ 55.214032] cfg80211: Restoring regulatory settings [ 55.214052] cfg80211: Calling CRDA to update world regulatory domain [ 55.214778] wlan1: deauthenticating from 00:1a:c1:38:47:d4 by local choice (reason=3) [ 55.221291] cfg80211: Ignoring regulatory request Set by core since the driver uses its own custom regulatory domain [ 55.221299] cfg80211: World regulatory domain updated: [ 55.221303] cfg80211: (start_freq - end_freq @ bandwidth), (max_antenna_gain, max_eirp) [ 55.221309] cfg80211: (2402000 KHz - 2472000 KHz @ 40000 KHz), (300 mBi, 2000 mBm) [ 55.221315] cfg80211: (2457000 KHz - 2482000 KHz @ 20000 KHz), (300 mBi, 2000 mBm) [ 55.221321] cfg80211: (2474000 KHz - 2494000 KHz @ 20000 KHz), (300 mBi, 2000 mBm) [ 55.221327] cfg80211: (5170000 KHz - 5250000 KHz @ 40000 KHz), (300 mBi, 2000 mBm) [ 55.221333] cfg80211: (5735000 KHz - 5835000 KHz @ 40000 KHz), (300 mBi, 2000 mBm) [ 55.392119] wlan1: no IPv6 routers present [ 58.763822] wlan1: authenticate with 00:1a:c1:38:47:d4 (try 1) [ 58.765582] wlan1: authenticated [ 58.766582] wlan1: associate with 00:1a:c1:38:47:d4 (try 1) [ 58.769972] wlan1: RX ReassocResp from 00:1a:c1:38:47:d4 (capab=0x431 status=0 aid=2) [ 58.769980] wlan1: associated [ 58.773587] cfg80211: Calling CRDA for country: GB [ 58.778304] cfg80211: Updating information on frequency 2412 MHz for a 20 MHz width channel with regulatory rule: [ 58.778310] cfg80211: 2402000 KHz - 2482000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 58.778314] cfg80211: Updating information on frequency 2417 MHz for a 20 MHz width channel with regulatory rule: [ 58.778318] cfg80211: 2402000 KHz - 2482000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 58.778321] cfg80211: Updating information on frequency 2422 MHz for a 20 MHz width channel with regulatory rule: [ 58.778325] cfg80211: 2402000 KHz - 2482000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 58.778328] cfg80211: Updating information on frequency 2427 MHz for a 20 MHz width channel with regulatory rule: [ 58.778332] cfg80211: 2402000 KHz - 2482000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 58.778335] cfg80211: Updating information on frequency 2432 MHz for a 20 MHz width channel with regulatory rule: [ 58.778340] cfg80211: 2402000 KHz - 2482000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 58.778343] cfg80211: Updating information on frequency 2437 MHz for a 20 MHz width channel with regulatory rule: [ 58.778347] cfg80211: 2402000 KHz - 2482000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 58.778350] cfg80211: Updating information on frequency 2442 MHz for a 20 MHz width channel with regulatory rule: [ 58.778354] cfg80211: 2402000 KHz - 2482000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 58.778357] cfg80211: Updating information on frequency 2447 MHz for a 20 MHz width channel with regulatory rule: [ 58.778361] cfg80211: 2402000 KHz - 2482000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 58.778364] cfg80211: Updating information on frequency 2452 MHz for a 20 MHz width channel with regulatory rule: [ 58.778368] cfg80211: 2402000 KHz - 2482000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 58.778371] cfg80211: Updating information on frequency 2457 MHz for a 20 MHz width channel with regulatory rule: [ 58.778375] cfg80211: 2402000 KHz - 2482000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 58.778378] cfg80211: Updating information on frequency 2462 MHz for a 20 MHz width channel with regulatory rule: [ 58.778382] cfg80211: 2402000 KHz - 2482000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 58.778385] cfg80211: Updating information on frequency 2467 MHz for a 20 MHz width channel with regulatory rule: [ 58.778389] cfg80211: 2402000 KHz - 2482000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 58.778392] cfg80211: Updating information on frequency 2472 MHz for a 20 MHz width channel with regulatory rule: [ 58.778396] cfg80211: 2402000 KHz - 2482000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 58.778399] cfg80211: Disabling freq 5170 MHz [ 58.778402] cfg80211: Updating information on frequency 5180 MHz for a 20 MHz width channel with regulatory rule: [ 58.778406] cfg80211: 5170000 KHz - 5250000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 58.778409] cfg80211: Updating information on frequency 5190 MHz for a 20 MHz width channel with regulatory rule: [ 58.778413] cfg80211: 5170000 KHz - 5250000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 58.778416] cfg80211: Updating information on frequency 5200 MHz for a 20 MHz width channel with regulatory rule: [ 58.778420] cfg80211: 5170000 KHz - 5250000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 58.778423] cfg80211: Updating information on frequency 5210 MHz for a 20 MHz width channel with regulatory rule: [ 58.778427] cfg80211: 5170000 KHz - 5250000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 58.778430] cfg80211: Updating information on frequency 5220 MHz for a 20 MHz width channel with regulatory rule: [ 58.778434] cfg80211: 5170000 KHz - 5250000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 58.778437] cfg80211: Updating information on frequency 5230 MHz for a 20 MHz width channel with regulatory rule: [ 58.778441] cfg80211: 5170000 KHz - 5250000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 58.778444] cfg80211: Updating information on frequency 5240 MHz for a 20 MHz width channel with regulatory rule: [ 58.778448] cfg80211: 5170000 KHz - 5250000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 58.778452] cfg80211: Updating information on frequency 5260 MHz for a 20 MHz width channel with regulatory rule: [ 58.778456] cfg80211: 5250000 KHz - 5330000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 58.778459] cfg80211: Updating information on frequency 5280 MHz for a 20 MHz width channel with regulatory rule: [ 58.778463] cfg80211: 5250000 KHz - 5330000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 58.778466] cfg80211: Updating information on frequency 5300 MHz for a 20 MHz width channel with regulatory rule: [ 58.778470] cfg80211: 5250000 KHz - 5330000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 58.778473] cfg80211: Updating information on frequency 5320 MHz for a 20 MHz width channel with regulatory rule: [ 58.778477] cfg80211: 5250000 KHz - 5330000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 58.778480] cfg80211: Updating information on frequency 5500 MHz for a 20 MHz width channel with regulatory rule: [ 58.778484] cfg80211: 5490000 KHz - 5710000 KHz @ KHz), (N/A mBi, 2700 mBm) [ 58.778487] cfg80211: Updating information on frequency 5520 MHz for a 20 MHz width channel with regulatory rule: [ 58.778491] cfg80211: 5490000 KHz - 5710000 KHz @ KHz), (N/A mBi, 2700 mBm) [ 58.778494] cfg80211: Updating information on frequency 5540 MHz for a 20 MHz width channel with regulatory rule: [ 58.778498] cfg80211: 5490000 KHz - 5710000 KHz @ KHz), (N/A mBi, 2700 mBm) [ 58.778501] cfg80211: Updating information on frequency 5560 MHz for a 20 MHz width channel with regulatory rule: [ 58.778505] cfg80211: 5490000 KHz - 5710000 KHz @ KHz), (N/A mBi, 2700 mBm) [ 58.778508] cfg80211: Updating information on frequency 5580 MHz for a 20 MHz width channel with regulatory rule: [ 58.778512] cfg80211: 5490000 KHz - 5710000 KHz @ KHz), (N/A mBi, 2700 mBm) [ 58.778515] cfg80211: Updating information on frequency 5600 MHz for a 20 MHz width channel with regulatory rule: [ 58.778519] cfg80211: 5490000 KHz - 5710000 KHz @ KHz), (N/A mBi, 2700 mBm) [ 58.778522] cfg80211: Updating information on frequency 5620 MHz for a 20 MHz width channel with regulatory rule: [ 58.778526] cfg80211: 5490000 KHz - 5710000 KHz @ KHz), (N/A mBi, 2700 mBm) [ 58.778529] cfg80211: Updating information on frequency 5640 MHz for a 20 MHz width channel with regulatory rule: [ 58.778533] cfg80211: 5490000 KHz - 5710000 KHz @ KHz), (N/A mBi, 2700 mBm) [ 58.778536] cfg80211: Updating information on frequency 5660 MHz for a 20 MHz width channel with regulatory rule: [ 58.778540] cfg80211: 5490000 KHz - 5710000 KHz @ KHz), (N/A mBi, 2700 mBm) [ 58.778543] cfg80211: Updating information on frequency 5680 MHz for a 20 MHz width channel with regulatory rule: [ 58.778547] cfg80211: 5490000 KHz - 5710000 KHz @ KHz), (N/A mBi, 2700 mBm) [ 58.778550] cfg80211: Updating information on frequency 5700 MHz for a 20 MHz width channel with regulatory rule: [ 58.778554] cfg80211: 5490000 KHz - 5710000 KHz @ KHz), (N/A mBi, 2700 mBm) [ 58.778558] cfg80211: Regulatory domain changed to country: GB [ 58.778560] cfg80211: (start_freq - end_freq @ bandwidth), (max_antenna_gain, max_eirp) [ 58.778564] cfg80211: (2402000 KHz - 2482000 KHz @ 40000 KHz), (N/A, 2000 mBm) [ 58.778568] cfg80211: (5170000 KHz - 5250000 KHz @ 40000 KHz), (N/A, 2000 mBm) [ 58.778571] cfg80211: (5250000 KHz - 5330000 KHz @ 40000 KHz), (N/A, 2000 mBm) [ 58.778575] cfg80211: (5490000 KHz - 5710000 KHz @ 40000 KHz), (N/A, 2700 mBm) [ 70.176124] wlan1: no IPv6 routers present [ 75.152080] eth1: no IPv6 routers present [ 98.736094] eth1: no IPv6 routers present [ 648.357292] ecryptfs_mount: kern_path() failed [ 648.388155] Reading sb failed; rc = [-2] [ 670.016019] eth1: no IPv6 routers present [ 688.176048] eth1: no IPv6 routers present [ 711.096140] eth1: no IPv6 routers present fwts-test/arg-results-no-separators-0001/test-0001.sh000077500000000000000000000007711231470457100223440ustar00rootroot00000000000000#!/bin/bash # TEST="Test --results-no-separators option" NAME=test-0001.sh TMPLOG=$TMP/klog.log.$$ $FWTS --log-format="%line %owner " -w 80 -j $FWTSTESTDIR/../data --results-no-separators --klog=$FWTSTESTDIR/arg-results-no-separators-0001/klog.txt klog - | grep "^[0-9]*[ ]*klog" | cut -c7- > $TMPLOG diff $TMPLOG $FWTSTESTDIR/arg-results-no-separators-0001/klog-0001.log >> $FAILURE_LOG ret=$? if [ $ret -eq 0 ]; then echo PASSED: $TEST, $NAME else echo FAILED: $TEST, $NAME fi rm $TMPLOG exit $ret fwts-test/arg-show-progress-dialog-0001/000077500000000000000000000000001231470457100202265ustar00rootroot00000000000000fwts-test/arg-show-progress-dialog-0001/klog.txt000066400000000000000000002225711231470457100217340ustar00rootroot00000000000000[ 0.000000] Initializing cgroup subsys cpuset [ 0.000000] Initializing cgroup subsys cpu [ 0.000000] Linux version 3.0.0-12-generic (buildd@crested) (gcc version 4.6.1 (Ubuntu/Linaro 4.6.1-9ubuntu3) ) #19-Ubuntu SMP Fri Sep 23 21:23:39 UTC 2011 (Ubuntu 3.0.0-12.19-generic 3.0.4) [ 0.000000] Command line: BOOT_IMAGE=/vmlinuz-3.0.0-12-generic root=UUID=08ed6ce0-0907-4d06-b1e1-b9c3ec647fe2 ro crashkernel=384M-2G:64M,2G-:128M quiet splash vt.handoff=7 [ 0.000000] KERNEL supported cpus: [ 0.000000] Intel GenuineIntel [ 0.000000] AMD AuthenticAMD [ 0.000000] Centaur CentaurHauls [ 0.000000] BIOS-provided physical RAM map: [ 0.000000] BIOS-e820: 0000000000000000 - 000000000009f800 (usable) [ 0.000000] BIOS-e820: 000000000009f800 - 00000000000a0000 (reserved) [ 0.000000] BIOS-e820: 00000000000d2000 - 00000000000d4000 (reserved) [ 0.000000] BIOS-e820: 00000000000dc000 - 0000000000100000 (reserved) [ 0.000000] BIOS-e820: 0000000000100000 - 00000000bf6d0000 (usable) [ 0.000000] BIOS-e820: 00000000bf6d0000 - 00000000bf6e3000 (ACPI NVS) [ 0.000000] BIOS-e820: 00000000bf6e3000 - 00000000c0000000 (reserved) [ 0.000000] BIOS-e820: 00000000e0000000 - 00000000f0000000 (reserved) [ 0.000000] BIOS-e820: 00000000fec00000 - 00000000fec10000 (reserved) [ 0.000000] BIOS-e820: 00000000fed00000 - 00000000fed00400 (reserved) [ 0.000000] BIOS-e820: 00000000fed14000 - 00000000fed1a000 (reserved) [ 0.000000] BIOS-e820: 00000000fed1c000 - 00000000fed90000 (reserved) [ 0.000000] BIOS-e820: 00000000fee00000 - 00000000fee01000 (reserved) [ 0.000000] BIOS-e820: 00000000ff000000 - 0000000100000000 (reserved) [ 0.000000] NX (Execute Disable) protection: active [ 0.000000] DMI present. [ 0.000000] DMI: LENOVO 0769BMG/IEL10, BIOS 68ET27WW 11/14/2007 [ 0.000000] e820 update range: 0000000000000000 - 0000000000010000 (usable) ==> (reserved) [ 0.000000] e820 remove range: 00000000000a0000 - 0000000000100000 (usable) [ 0.000000] No AGP bridge found [ 0.000000] last_pfn = 0xbf6d0 max_arch_pfn = 0x400000000 [ 0.000000] MTRR default type: uncachable [ 0.000000] MTRR fixed ranges enabled: [ 0.000000] 00000-9FFFF write-back [ 0.000000] A0000-BFFFF uncachable [ 0.000000] C0000-FFFFF write-protect [ 0.000000] MTRR variable ranges enabled: [ 0.000000] 0 base 000000000 mask F80000000 write-back [ 0.000000] 1 base 080000000 mask FC0000000 write-back [ 0.000000] 2 base 0BF700000 mask FFFF00000 uncachable [ 0.000000] 3 base 0BF800000 mask FFF800000 uncachable [ 0.000000] 4 disabled [ 0.000000] 5 disabled [ 0.000000] 6 disabled [ 0.000000] 7 disabled [ 0.000000] x86 PAT enabled: cpu 0, old 0x7040600070406, new 0x7010600070106 [ 0.000000] original variable MTRRs [ 0.000000] reg 0, base: 0GB, range: 2GB, type WB [ 0.000000] reg 1, base: 2GB, range: 1GB, type WB [ 0.000000] reg 2, base: 3063MB, range: 1MB, type UC [ 0.000000] reg 3, base: 3064MB, range: 8MB, type UC [ 0.000000] total RAM covered: 3063M [ 0.000000] Found optimal setting for mtrr clean up [ 0.000000] gran_size: 64K chunk_size: 16M num_reg: 4 lose cover RAM: 0G [ 0.000000] New variable MTRRs [ 0.000000] reg 0, base: 0GB, range: 2GB, type WB [ 0.000000] reg 1, base: 2GB, range: 1GB, type WB [ 0.000000] reg 2, base: 3063MB, range: 1MB, type UC [ 0.000000] reg 3, base: 3064MB, range: 8MB, type UC [ 0.000000] found SMP MP-table at [ffff8800000f72c0] f72c0 [ 0.000000] initial memory mapped : 0 - 20000000 [ 0.000000] Base memory trampoline at [ffff88000009a000] 9a000 size 20480 [ 0.000000] init_memory_mapping: 0000000000000000-00000000bf6d0000 [ 0.000000] 0000000000 - 00bf600000 page 2M [ 0.000000] 00bf600000 - 00bf6d0000 page 4k [ 0.000000] kernel direct mapping tables up to bf6d0000 @ bf6cb000-bf6d0000 [ 0.000000] RAMDISK: 359ec000 - 36cee000 [ 0.000000] Reserving 128MB of memory at 720MB for crashkernel (System RAM: 3062MB) [ 0.000000] ACPI: RSDP 00000000000f7240 00024 (v02 LENOVO) [ 0.000000] ACPI: XSDT 00000000bf6d87f0 00094 (v01 LENOVO TP-68 06040000 LTP 00000000) [ 0.000000] ACPI: FACP 00000000bf6dfbd2 000F4 (v03 TOSCPL CRESTLNE 06040000 ALAN 00000001) [ 0.000000] ACPI: DSDT 00000000bf6d9b6a 05FF4 (v02 TOSCPL CRESTLNE 06040000 INTL 20060608) [ 0.000000] ACPI: FACS 00000000bf6e2fc0 00040 [ 0.000000] ACPI: APIC 00000000bf6dfcc6 00068 (v01 INTEL CRESTLNE 06040000 LOHR 0000005A) [ 0.000000] ACPI: HPET 00000000bf6dfd2e 00038 (v01 INTEL CRESTLNE 06040000 LOHR 0000005A) [ 0.000000] ACPI: MCFG 00000000bf6dfd66 0003C (v01 INTEL CRESTLNE 06040000 LOHR 0000005A) [ 0.000000] ACPI: TCPA 00000000bf6dfda2 00032 (v01 Intel CRESTLNE 06040000 LOHR 0000005A) [ 0.000000] ACPI: TMOR 00000000bf6dfdd4 00026 (v01 PTLTD 06040000 PTL 00000003) [ 0.000000] ACPI: SLIC 00000000bf6dfdfa 00176 (v01 LENOVO TP-68 06040000 TBD 00000001) [ 0.000000] ACPI: APIC 00000000bf6dff70 00068 (v01 PTLTD ? APIC 06040000 LTP 00000000) [ 0.000000] ACPI: BOOT 00000000bf6dffd8 00028 (v01 PTLTD $SBFTBL$ 06040000 LTP 00000001) [ 0.000000] ACPI: SSDT 00000000bf6d98bd 002AD (v01 SataRe SataAhci 00001000 INTL 20050624) [ 0.000000] ACPI: SSDT 00000000bf6d981a 000A3 (v01 BrtRef DD01BRT 00001000 INTL 20050624) [ 0.000000] ACPI: SSDT 00000000bf6d8e10 0025F (v01 PmRef Cpu0Tst 00003000 INTL 20050624) [ 0.000000] ACPI: SSDT 00000000bf6d8d6a 000A6 (v01 PmRef Cpu1Tst 00003000 INTL 20050624) [ 0.000000] ACPI: SSDT 00000000bf6d8884 004E6 (v01 PmRef CpuPm 00003000 INTL 20050624) [ 0.000000] ACPI: BIOS bug: multiple APIC/MADT found, using 0 [ 0.000000] ACPI: If "acpi_apic_instance=2" works better, notify linux-acpi@vger.kernel.org [ 0.000000] ACPI: Local APIC address 0xfee00000 [ 0.000000] No NUMA configuration found [ 0.000000] Faking a node at 0000000000000000-00000000bf6d0000 [ 0.000000] Initmem setup node 0 0000000000000000-00000000bf6d0000 [ 0.000000] NODE_DATA [00000000bf6c6000 - 00000000bf6cafff] [ 0.000000] [ffffea0000000000-ffffea00029fffff] PMD -> [ffff8800bbe00000-ffff8800be7fffff] on node 0 [ 0.000000] Zone PFN ranges: [ 0.000000] DMA 0x00000010 -> 0x00001000 [ 0.000000] DMA32 0x00001000 -> 0x00100000 [ 0.000000] Normal empty [ 0.000000] Movable zone start PFN for each node [ 0.000000] early_node_map[2] active PFN ranges [ 0.000000] 0: 0x00000010 -> 0x0000009f [ 0.000000] 0: 0x00000100 -> 0x000bf6d0 [ 0.000000] On node 0 totalpages: 783967 [ 0.000000] DMA zone: 56 pages used for memmap [ 0.000000] DMA zone: 5 pages reserved [ 0.000000] DMA zone: 3922 pages, LIFO batch:0 [ 0.000000] DMA32 zone: 10664 pages used for memmap [ 0.000000] DMA32 zone: 769320 pages, LIFO batch:31 [ 0.000000] ACPI: PM-Timer IO Port: 0x1008 [ 0.000000] ACPI: Local APIC address 0xfee00000 [ 0.000000] ACPI: LAPIC (acpi_id[0x00] lapic_id[0x00] enabled) [ 0.000000] ACPI: LAPIC (acpi_id[0x01] lapic_id[0x01] enabled) [ 0.000000] ACPI: LAPIC_NMI (acpi_id[0x00] high edge lint[0x1]) [ 0.000000] ACPI: LAPIC_NMI (acpi_id[0x01] high edge lint[0x1]) [ 0.000000] ACPI: IOAPIC (id[0x01] address[0xfec00000] gsi_base[0]) [ 0.000000] IOAPIC[0]: apic_id 1, version 32, address 0xfec00000, GSI 0-23 [ 0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 0 global_irq 2 dfl dfl) [ 0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 9 global_irq 9 high level) [ 0.000000] ACPI: IRQ0 used by override. [ 0.000000] ACPI: IRQ2 used by override. [ 0.000000] ACPI: IRQ9 used by override. [ 0.000000] Using ACPI (MADT) for SMP configuration information [ 0.000000] ACPI: HPET id: 0x8086a201 base: 0xfed00000 [ 0.000000] SMP: Allowing 2 CPUs, 0 hotplug CPUs [ 0.000000] nr_irqs_gsi: 40 [ 0.000000] PM: Registered nosave memory: 000000000009f000 - 00000000000a0000 [ 0.000000] PM: Registered nosave memory: 00000000000a0000 - 00000000000d2000 [ 0.000000] PM: Registered nosave memory: 00000000000d2000 - 00000000000d4000 [ 0.000000] PM: Registered nosave memory: 00000000000d4000 - 00000000000dc000 [ 0.000000] PM: Registered nosave memory: 00000000000dc000 - 0000000000100000 [ 0.000000] Allocating PCI resources starting at c0000000 (gap: c0000000:20000000) [ 0.000000] Booting paravirtualized kernel on bare hardware [ 0.000000] setup_percpu: NR_CPUS:256 nr_cpumask_bits:256 nr_cpu_ids:2 nr_node_ids:1 [ 0.000000] PERCPU: Embedded 27 pages/cpu @ffff8800bf400000 s79616 r8192 d22784 u1048576 [ 0.000000] pcpu-alloc: s79616 r8192 d22784 u1048576 alloc=1*2097152 [ 0.000000] pcpu-alloc: [0] 0 1 [ 0.000000] Built 1 zonelists in Node order, mobility grouping on. Total pages: 773242 [ 0.000000] Policy zone: DMA32 [ 0.000000] Kernel command line: BOOT_IMAGE=/vmlinuz-3.0.0-12-generic root=UUID=08ed6ce0-0907-4d06-b1e1-b9c3ec647fe2 ro crashkernel=384M-2G:64M,2G-:128M quiet splash vt.handoff=7 [ 0.000000] PID hash table entries: 4096 (order: 3, 32768 bytes) [ 0.000000] Checking aperture... [ 0.000000] No AGP bridge found [ 0.000000] Calgary: detecting Calgary via BIOS EBDA area [ 0.000000] Calgary: Unable to locate Rio Grande table in EBDA - bailing! [ 0.000000] Memory: 2928536k/3136320k available (6104k kernel code, 452k absent, 207332k reserved, 4880k data, 984k init) [ 0.000000] SLUB: Genslabs=15, HWalign=64, Order=0-3, MinObjects=0, CPUs=2, Nodes=1 [ 0.000000] Hierarchical RCU implementation. [ 0.000000] RCU dyntick-idle grace-period acceleration is enabled. [ 0.000000] NR_IRQS:16640 nr_irqs:512 16 [ 0.000000] Extended CMOS year: 2000 [ 0.000000] vt handoff: transparent VT on vt#7 [ 0.000000] Console: colour dummy device 80x25 [ 0.000000] console [tty0] enabled [ 0.000000] allocated 25165824 bytes of page_cgroup [ 0.000000] please try 'cgroup_disable=memory' option if you don't want memory cgroups [ 0.000000] hpet clockevent registered [ 0.000000] Fast TSC calibration using PIT [ 0.000000] Detected 1496.217 MHz processor. [ 0.004006] Calibrating delay loop (skipped), value calculated using timer frequency.. 2992.43 BogoMIPS (lpj=5984868) [ 0.004013] pid_max: default: 32768 minimum: 301 [ 0.004056] Security Framework initialized [ 0.004080] AppArmor: AppArmor initialized [ 0.004083] Yama: becoming mindful. [ 0.004759] Dentry cache hash table entries: 524288 (order: 10, 4194304 bytes) [ 0.010636] Inode-cache hash table entries: 262144 (order: 9, 2097152 bytes) [ 0.012341] Mount-cache hash table entries: 256 [ 0.012557] Initializing cgroup subsys cpuacct [ 0.012565] Initializing cgroup subsys memory [ 0.012580] Initializing cgroup subsys devices [ 0.012583] Initializing cgroup subsys freezer [ 0.012586] Initializing cgroup subsys net_cls [ 0.012589] Initializing cgroup subsys blkio [ 0.012598] Initializing cgroup subsys perf_event [ 0.012643] CPU: Physical Processor ID: 0 [ 0.012645] CPU: Processor Core ID: 0 [ 0.012649] mce: CPU supports 6 MCE banks [ 0.012661] CPU0: Thermal monitoring handled by SMI [ 0.012667] using mwait in idle threads. [ 0.016288] ACPI: Core revision 20110413 [ 0.024040] ftrace: allocating 25651 entries in 101 pages [ 0.028444] ..TIMER: vector=0x30 apic1=0 pin1=2 apic2=-1 pin2=-1 [ 0.071627] CPU0: Intel(R) Core(TM)2 Duo CPU T5250 @ 1.50GHz stepping 0d [ 0.072003] Performance Events: PEBS fmt0+, Core2 events, Intel PMU driver. [ 0.072003] PEBS disabled due to CPU errata. [ 0.072003] ... version: 2 [ 0.072003] ... bit width: 40 [ 0.072003] ... generic registers: 2 [ 0.072003] ... value mask: 000000ffffffffff [ 0.072003] ... max period: 000000007fffffff [ 0.072003] ... fixed-purpose events: 3 [ 0.072003] ... event mask: 0000000700000003 [ 0.072003] Booting Node 0, Processors #1 Ok. [ 0.072003] smpboot cpu 1: start_ip = 9a000 [ 0.008000] CPU1: Thermal monitoring handled by SMI [ 0.160029] Brought up 2 CPUs [ 0.160033] Total of 2 processors activated (5984.88 BogoMIPS). [ 0.161224] devtmpfs: initialized [ 0.161224] PM: Registering ACPI NVS region at bf6d0000 (77824 bytes) [ 0.162075] print_constraints: dummy: [ 0.162115] Time: 7:34:42 Date: 10/05/11 [ 0.162171] NET: Registered protocol family 16 [ 0.162209] Trying to unpack rootfs image as initramfs... [ 0.164047] ACPI: bus type pci registered [ 0.164133] PCI: MMCONFIG for domain 0000 [bus 00-ff] at [mem 0xe0000000-0xefffffff] (base 0xe0000000) [ 0.164138] PCI: MMCONFIG at [mem 0xe0000000-0xefffffff] reserved in E820 [ 0.220043] PCI: Using configuration type 1 for base access [ 0.221379] bio: create slab at 0 [ 0.223506] ACPI: EC: Look up EC in DSDT [ 0.228089] [Firmware Bug]: ACPI: BIOS _OSI(Linux) query ignored [ 0.229039] ACPI: SSDT 00000000bf6d959e 001B4 (v01 PmRef Cpu0Ist 00003000 INTL 20050624) [ 0.229543] ACPI: Dynamic OEM Table Load: [ 0.229548] ACPI: SSDT (null) 001B4 (v01 PmRef Cpu0Ist 00003000 INTL 20050624) [ 0.229696] ACPI: SSDT 00000000bf6d906f 004AA (v01 PmRef Cpu0Cst 00003001 INTL 20050624) [ 0.230165] ACPI: Dynamic OEM Table Load: [ 0.230169] ACPI: SSDT (null) 004AA (v01 PmRef Cpu0Cst 00003001 INTL 20050624) [ 0.230454] ACPI: SSDT 00000000bf6d9752 000C8 (v01 PmRef Cpu1Ist 00003000 INTL 20050624) [ 0.232427] ACPI: Dynamic OEM Table Load: [ 0.232432] ACPI: SSDT (null) 000C8 (v01 PmRef Cpu1Ist 00003000 INTL 20050624) [ 0.232541] ACPI: SSDT 00000000bf6d9519 00085 (v01 PmRef Cpu1Cst 00003000 INTL 20050624) [ 0.233011] ACPI: Dynamic OEM Table Load: [ 0.233015] ACPI: SSDT (null) 00085 (v01 PmRef Cpu1Cst 00003000 INTL 20050624) [ 0.238295] ACPI: EC: GPE storm detected, transactions will use polling mode [ 0.344070] ACPI: Interpreter enabled [ 0.344078] ACPI: (supports S0 S3 S4 S5) [ 0.344118] ACPI: Using IOAPIC for interrupt routing [ 0.389051] ACPI: EC: GPE = 0x1c, I/O: command/status = 0x66, data = 0x62 [ 0.389294] ACPI: No dock devices found. [ 0.389298] HEST: Table not found. [ 0.389303] PCI: Ignoring host bridge windows from ACPI; if necessary, use "pci=use_crs" and report a bug [ 0.389762] ACPI: PCI Root Bridge [PCI0] (domain 0000 [bus 00-ff]) [ 0.390623] pci_root PNP0A08:00: host bridge window [io 0x0000-0x0cf7] (ignored) [ 0.390628] pci_root PNP0A08:00: host bridge window [io 0x0d00-0xffff] (ignored) [ 0.390632] pci_root PNP0A08:00: host bridge window [mem 0x000a0000-0x000bffff] (ignored) [ 0.390636] pci_root PNP0A08:00: host bridge window [mem 0x000d4000-0x000d7fff] (ignored) [ 0.390640] pci_root PNP0A08:00: host bridge window [mem 0x000d8000-0x000dbfff] (ignored) [ 0.390645] pci_root PNP0A08:00: host bridge window [mem 0xc0000000-0xdfffffff] (ignored) [ 0.390648] pci_root PNP0A08:00: host bridge window [mem 0xf0000000-0xfebfffff] (ignored) [ 0.390665] pci 0000:00:00.0: [8086:2a00] type 0 class 0x000600 [ 0.390726] pci 0000:00:02.0: [8086:2a02] type 0 class 0x000300 [ 0.390746] pci 0000:00:02.0: reg 10: [mem 0xfc000000-0xfc0fffff 64bit] [ 0.390758] pci 0000:00:02.0: reg 18: [mem 0xd0000000-0xdfffffff 64bit pref] [ 0.390767] pci 0000:00:02.0: reg 20: [io 0x1800-0x1807] [ 0.390812] pci 0000:00:02.1: [8086:2a03] type 0 class 0x000380 [ 0.390829] pci 0000:00:02.1: reg 10: [mem 0xfc100000-0xfc1fffff 64bit] [ 0.390937] pci 0000:00:1a.0: [8086:2834] type 0 class 0x000c03 [ 0.391013] pci 0000:00:1a.0: reg 20: [io 0x1820-0x183f] [ 0.391065] pci 0000:00:1a.1: [8086:2835] type 0 class 0x000c03 [ 0.391126] pci 0000:00:1a.1: reg 20: [io 0x1840-0x185f] [ 0.391187] pci 0000:00:1a.7: [8086:283a] type 0 class 0x000c03 [ 0.391216] pci 0000:00:1a.7: reg 10: [mem 0xfc504800-0xfc504bff] [ 0.391321] pci 0000:00:1a.7: PME# supported from D0 D3hot D3cold [ 0.391328] pci 0000:00:1a.7: PME# disabled [ 0.391362] pci 0000:00:1b.0: [8086:284b] type 0 class 0x000403 [ 0.391386] pci 0000:00:1b.0: reg 10: [mem 0xfc300000-0xfc303fff 64bit] [ 0.391473] pci 0000:00:1b.0: PME# supported from D0 D3hot D3cold [ 0.391479] pci 0000:00:1b.0: PME# disabled [ 0.391514] pci 0000:00:1c.0: [8086:283f] type 1 class 0x000604 [ 0.391605] pci 0000:00:1c.0: PME# supported from D0 D3hot D3cold [ 0.391611] pci 0000:00:1c.0: PME# disabled [ 0.391647] pci 0000:00:1c.1: [8086:2841] type 1 class 0x000604 [ 0.391735] pci 0000:00:1c.1: PME# supported from D0 D3hot D3cold [ 0.391741] pci 0000:00:1c.1: PME# disabled [ 0.391775] pci 0000:00:1c.2: [8086:2843] type 1 class 0x000604 [ 0.391868] pci 0000:00:1c.2: PME# supported from D0 D3hot D3cold [ 0.391874] pci 0000:00:1c.2: PME# disabled [ 0.391911] pci 0000:00:1c.3: [8086:2845] type 1 class 0x000604 [ 0.391999] pci 0000:00:1c.3: PME# supported from D0 D3hot D3cold [ 0.392005] pci 0000:00:1c.3: PME# disabled [ 0.392053] pci 0000:00:1d.0: [8086:2830] type 0 class 0x000c03 [ 0.392114] pci 0000:00:1d.0: reg 20: [io 0x1860-0x187f] [ 0.392162] pci 0000:00:1d.1: [8086:2831] type 0 class 0x000c03 [ 0.392238] pci 0000:00:1d.1: reg 20: [io 0x1880-0x189f] [ 0.392293] pci 0000:00:1d.2: [8086:2832] type 0 class 0x000c03 [ 0.392371] pci 0000:00:1d.2: reg 20: [io 0x18a0-0x18bf] [ 0.392438] pci 0000:00:1d.7: [8086:2836] type 0 class 0x000c03 [ 0.392466] pci 0000:00:1d.7: reg 10: [mem 0xfc504c00-0xfc504fff] [ 0.392567] pci 0000:00:1d.7: PME# supported from D0 D3hot D3cold [ 0.392573] pci 0000:00:1d.7: PME# disabled [ 0.392603] pci 0000:00:1e.0: [8086:2448] type 1 class 0x000604 [ 0.392698] pci 0000:00:1f.0: [8086:2815] type 0 class 0x000601 [ 0.392816] pci 0000:00:1f.0: quirk: [io 0x1000-0x107f] claimed by ICH6 ACPI/GPIO/TCO [ 0.392824] pci 0000:00:1f.0: quirk: [io 0x1180-0x11bf] claimed by ICH6 GPIO [ 0.392829] pci 0000:00:1f.0: ICH7 LPC Generic IO decode 1 PIO at 0680 (mask 007f) [ 0.392835] pci 0000:00:1f.0: ICH7 LPC Generic IO decode 2 PIO at 1640 (mask 000f) [ 0.392884] pci 0000:00:1f.1: [8086:2850] type 0 class 0x000101 [ 0.392903] pci 0000:00:1f.1: reg 10: [io 0x0000-0x0007] [ 0.392918] pci 0000:00:1f.1: reg 14: [io 0x0000-0x0003] [ 0.392931] pci 0000:00:1f.1: reg 18: [io 0x0000-0x0007] [ 0.392944] pci 0000:00:1f.1: reg 1c: [io 0x0000-0x0003] [ 0.392958] pci 0000:00:1f.1: reg 20: [io 0x1810-0x181f] [ 0.393014] pci 0000:00:1f.2: [8086:2829] type 0 class 0x000106 [ 0.393042] pci 0000:00:1f.2: reg 10: [io 0x1c00-0x1c07] [ 0.393056] pci 0000:00:1f.2: reg 14: [io 0x18d4-0x18d7] [ 0.393069] pci 0000:00:1f.2: reg 18: [io 0x18d8-0x18df] [ 0.393082] pci 0000:00:1f.2: reg 1c: [io 0x18d0-0x18d3] [ 0.393095] pci 0000:00:1f.2: reg 20: [io 0x18e0-0x18ff] [ 0.393108] pci 0000:00:1f.2: reg 24: [mem 0xfc504000-0xfc5047ff] [ 0.393157] pci 0000:00:1f.2: PME# supported from D3hot [ 0.393163] pci 0000:00:1f.2: PME# disabled [ 0.393188] pci 0000:00:1f.3: [8086:283e] type 0 class 0x000c05 [ 0.393206] pci 0000:00:1f.3: reg 10: [mem 0x00000000-0x000000ff] [ 0.393250] pci 0000:00:1f.3: reg 20: [io 0x1c20-0x1c3f] [ 0.393354] pci 0000:00:1c.0: PCI bridge to [bus 02-02] [ 0.393360] pci 0000:00:1c.0: bridge window [io 0x2000-0x2fff] [ 0.393367] pci 0000:00:1c.0: bridge window [mem 0xf6000000-0xf7ffffff] [ 0.393376] pci 0000:00:1c.0: bridge window [mem 0xf0000000-0xf1ffffff 64bit pref] [ 0.393501] pci 0000:04:00.0: [8086:4227] type 0 class 0x000280 [ 0.393557] pci 0000:04:00.0: reg 10: [mem 0xf8000000-0xf8000fff] [ 0.393895] pci 0000:04:00.0: PME# supported from D0 D3hot D3cold [ 0.393908] pci 0000:04:00.0: PME# disabled [ 0.393979] pci 0000:04:00.0: disabling ASPM on pre-1.1 PCIe device. You can enable it with 'pcie_aspm=force' [ 0.394021] pci 0000:00:1c.1: PCI bridge to [bus 04-04] [ 0.394027] pci 0000:00:1c.1: bridge window [io 0x3000-0x3fff] [ 0.394033] pci 0000:00:1c.1: bridge window [mem 0xf8000000-0xf9ffffff] [ 0.394043] pci 0000:00:1c.1: bridge window [mem 0xf2000000-0xf3ffffff 64bit pref] [ 0.394110] pci 0000:00:1c.2: PCI bridge to [bus 05-05] [ 0.394116] pci 0000:00:1c.2: bridge window [io 0x4000-0x4fff] [ 0.394122] pci 0000:00:1c.2: bridge window [mem 0xfa000000-0xfbffffff] [ 0.394132] pci 0000:00:1c.2: bridge window [mem 0xf4000000-0xf5ffffff 64bit pref] [ 0.394268] pci 0000:06:00.0: [14e4:1713] type 0 class 0x000200 [ 0.394336] pci 0000:06:00.0: reg 10: [mem 0xc8000000-0xc800ffff 64bit] [ 0.394639] pci 0000:06:00.0: PME# supported from D3hot D3cold [ 0.394651] pci 0000:06:00.0: PME# disabled [ 0.394783] pci 0000:00:1c.3: PCI bridge to [bus 06-06] [ 0.394789] pci 0000:00:1c.3: bridge window [io 0x5000-0x5fff] [ 0.394796] pci 0000:00:1c.3: bridge window [mem 0xc8000000-0xc9ffffff] [ 0.394806] pci 0000:00:1c.3: bridge window [mem 0xcc000000-0xcdffffff 64bit pref] [ 0.394868] pci 0000:08:06.0: [1180:0832] type 0 class 0x000c00 [ 0.394886] pci 0000:08:06.0: proprietary Ricoh MMC controller disabled (via firewire function) [ 0.394890] pci 0000:08:06.0: MMC cards are now supported by standard SDHCI controller [ 0.394909] pci 0000:08:06.0: reg 10: [mem 0xfc200000-0xfc2007ff] [ 0.395006] pci 0000:08:06.0: supports D1 D2 [ 0.395009] pci 0000:08:06.0: PME# supported from D0 D1 D2 D3hot D3cold [ 0.395016] pci 0000:08:06.0: PME# disabled [ 0.395045] pci 0000:08:06.1: [1180:0822] type 0 class 0x000805 [ 0.395069] pci 0000:08:06.1: reg 10: [mem 0xfc200800-0xfc2008ff] [ 0.395165] pci 0000:08:06.1: supports D1 D2 [ 0.395168] pci 0000:08:06.1: PME# supported from D0 D1 D2 D3hot D3cold [ 0.395174] pci 0000:08:06.1: PME# disabled [ 0.395199] pci 0000:08:06.2: [1180:0592] type 0 class 0x000880 [ 0.395224] pci 0000:08:06.2: reg 10: [mem 0xfc201000-0xfc2010ff] [ 0.395317] pci 0000:08:06.2: supports D1 D2 [ 0.395320] pci 0000:08:06.2: PME# supported from D0 D1 D2 D3hot D3cold [ 0.395326] pci 0000:08:06.2: PME# disabled [ 0.395350] pci 0000:08:06.3: [1180:0852] type 0 class 0x000880 [ 0.395376] pci 0000:08:06.3: reg 10: [mem 0xfc201400-0xfc2014ff] [ 0.395474] pci 0000:08:06.3: supports D1 D2 [ 0.395477] pci 0000:08:06.3: PME# supported from D0 D1 D2 D3hot D3cold [ 0.395484] pci 0000:08:06.3: PME# disabled [ 0.395549] pci 0000:00:1e.0: PCI bridge to [bus 08-08] (subtractive decode) [ 0.395556] pci 0000:00:1e.0: bridge window [io 0xf000-0x0000] (disabled) [ 0.395562] pci 0000:00:1e.0: bridge window [mem 0xfc200000-0xfc2fffff] [ 0.395572] pci 0000:00:1e.0: bridge window [mem 0xfff00000-0x000fffff pref] (disabled) [ 0.395576] pci 0000:00:1e.0: bridge window [io 0x0000-0xffff] (subtractive decode) [ 0.395580] pci 0000:00:1e.0: bridge window [mem 0x00000000-0xfffffffff] (subtractive decode) [ 0.395619] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0._PRT] [ 0.395828] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.RP01._PRT] [ 0.395887] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.RP02._PRT] [ 0.395944] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.RP03._PRT] [ 0.395999] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.RP04._PRT] [ 0.396116] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PCIB._PRT] [ 0.396176] pci0000:00: Requesting ACPI _OSC control (0x1d) [ 0.396181] pci0000:00: ACPI _OSC request failed (AE_NOT_FOUND), returned control mask: 0x1d [ 0.396184] ACPI _OSC control for PCIe not granted, disabling ASPM [ 0.404002] ACPI: PCI Interrupt Link [LNKA] (IRQs 1 3 4 *5 6 7 10 12 14 15) [ 0.404086] ACPI: PCI Interrupt Link [LNKB] (IRQs 1 3 4 5 6 7 11 12 14 15) *10 [ 0.404153] ACPI: PCI Interrupt Link [LNKC] (IRQs 1 3 4 5 6 *7 10 12 14 15) [ 0.404217] ACPI: PCI Interrupt Link [LNKD] (IRQs 1 3 4 5 6 7 11 12 14 15) *10 [ 0.404282] ACPI: PCI Interrupt Link [LNKE] (IRQs 1 3 4 5 6 7 10 12 14 15) *0, disabled. [ 0.404353] ACPI: PCI Interrupt Link [LNKF] (IRQs 1 3 4 5 6 7 11 12 14 15) *10 [ 0.404419] ACPI: PCI Interrupt Link [LNKG] (IRQs 1 3 4 5 6 7 10 12 14 15) *11 [ 0.404484] ACPI: PCI Interrupt Link [LNKH] (IRQs 1 3 4 5 6 7 *11 12 14 15) [ 0.404647] vgaarb: device added: PCI:0000:00:02.0,decodes=io+mem,owns=io+mem,locks=none [ 0.404670] vgaarb: loaded [ 0.404672] vgaarb: bridge control possible 0000:00:02.0 [ 0.404971] SCSI subsystem initialized [ 0.405069] libata version 3.00 loaded. [ 0.405143] usbcore: registered new interface driver usbfs [ 0.405158] usbcore: registered new interface driver hub [ 0.405200] usbcore: registered new device driver usb [ 0.405322] PCI: Using ACPI for IRQ routing [ 0.416330] PCI: pci_cache_line_size set to 64 bytes [ 0.416509] reserve RAM buffer: 000000000009f800 - 000000000009ffff [ 0.416513] reserve RAM buffer: 00000000bf6d0000 - 00000000bfffffff [ 0.416683] NetLabel: Initializing [ 0.416686] NetLabel: domain hash size = 128 [ 0.416688] NetLabel: protocols = UNLABELED CIPSOv4 [ 0.416706] NetLabel: unlabeled traffic allowed by default [ 0.416770] HPET: 3 timers in total, 0 timers will be used for per-cpu timer [ 0.416777] hpet0: at MMIO 0xfed00000, IRQs 2, 8, 0 [ 0.416784] hpet0: 3 comparators, 64-bit 14.318180 MHz counter [ 0.420524] Switching to clocksource hpet [ 0.423392] Switched to NOHz mode on CPU #0 [ 0.423487] Switched to NOHz mode on CPU #1 [ 0.430603] AppArmor: AppArmor Filesystem Enabled [ 0.430649] pnp: PnP ACPI init [ 0.430672] ACPI: bus type pnp registered [ 0.431166] pnp 00:00: [bus 00-ff] [ 0.431171] pnp 00:00: [io 0x0000-0x0cf7 window] [ 0.431174] pnp 00:00: [io 0x0cf8-0x0cff] [ 0.431177] pnp 00:00: [io 0x0d00-0xffff window] [ 0.431181] pnp 00:00: [mem 0x000a0000-0x000bffff window] [ 0.431184] pnp 00:00: [mem 0x000c0000-0x000c3fff window] [ 0.431187] pnp 00:00: [mem 0x000c4000-0x000c7fff window] [ 0.431190] pnp 00:00: [mem 0x000c8000-0x000cbfff window] [ 0.431197] pnp 00:00: [mem 0x000cc000-0x000cffff window] [ 0.431201] pnp 00:00: [mem 0x000d0000-0x000d3fff window] [ 0.431204] pnp 00:00: [mem 0x000d4000-0x000d7fff window] [ 0.431207] pnp 00:00: [mem 0x000d8000-0x000dbfff window] [ 0.431210] pnp 00:00: [mem 0x000dc000-0x000dffff window] [ 0.431213] pnp 00:00: [mem 0x000e0000-0x000e3fff window] [ 0.431216] pnp 00:00: [mem 0x000e4000-0x000e7fff window] [ 0.431219] pnp 00:00: [mem 0x000e8000-0x000ebfff window] [ 0.431222] pnp 00:00: [mem 0x000ec000-0x000effff window] [ 0.431225] pnp 00:00: [mem 0x000f0000-0x000fffff window] [ 0.431229] pnp 00:00: [mem 0xc0000000-0xdfffffff window] [ 0.431232] pnp 00:00: [mem 0xf0000000-0xfebfffff window] [ 0.431235] pnp 00:00: [mem 0xfed40000-0xfed44fff window] [ 0.431344] pnp 00:00: Plug and Play ACPI device, IDs PNP0a08 PNP0a03 (active) [ 0.431447] pnp 00:01: [mem 0xfed1c000-0xfed1ffff] [ 0.431450] pnp 00:01: [mem 0xfed14000-0xfed17fff] [ 0.431453] pnp 00:01: [mem 0xfed18000-0xfed18fff] [ 0.431456] pnp 00:01: [mem 0xfed19000-0xfed19fff] [ 0.431458] pnp 00:01: [mem 0xe0000000-0xefffffff] [ 0.431461] pnp 00:01: [mem 0xfed20000-0xfed3ffff] [ 0.431464] pnp 00:01: [mem 0xfed40000-0xfed44fff] [ 0.431467] pnp 00:01: [mem 0xfed45000-0xfed8ffff] [ 0.431559] system 00:01: [mem 0xfed1c000-0xfed1ffff] has been reserved [ 0.431564] system 00:01: [mem 0xfed14000-0xfed17fff] has been reserved [ 0.431568] system 00:01: [mem 0xfed18000-0xfed18fff] has been reserved [ 0.431572] system 00:01: [mem 0xfed19000-0xfed19fff] has been reserved [ 0.431576] system 00:01: [mem 0xe0000000-0xefffffff] has been reserved [ 0.431580] system 00:01: [mem 0xfed20000-0xfed3ffff] has been reserved [ 0.431584] system 00:01: [mem 0xfed40000-0xfed44fff] has been reserved [ 0.431588] system 00:01: [mem 0xfed45000-0xfed8ffff] has been reserved [ 0.431593] system 00:01: Plug and Play ACPI device, IDs PNP0c02 (active) [ 0.431859] pnp 00:02: [io 0x0000-0x001f] [ 0.431862] pnp 00:02: [io 0x0081-0x0091] [ 0.431864] pnp 00:02: [io 0x0093-0x009f] [ 0.431867] pnp 00:02: [io 0x00c0-0x00df] [ 0.431870] pnp 00:02: [dma 4] [ 0.431931] pnp 00:02: Plug and Play ACPI device, IDs PNP0200 (active) [ 0.431946] pnp 00:03: [mem 0xff000000-0xffffffff] [ 0.432030] pnp 00:03: Plug and Play ACPI device, IDs INT0800 (active) [ 0.432131] pnp 00:04: [mem 0xfed00000-0xfed003ff] [ 0.432218] system 00:04: [mem 0xfed00000-0xfed003ff] has been reserved [ 0.432223] system 00:04: Plug and Play ACPI device, IDs PNP0103 PNP0c01 (active) [ 0.432239] pnp 00:05: [io 0x00f0] [ 0.432256] pnp 00:05: [irq 13] [ 0.432321] pnp 00:05: Plug and Play ACPI device, IDs PNP0c04 (active) [ 0.432337] pnp 00:06: [io 0x002e-0x002f] [ 0.432340] pnp 00:06: [io 0x004e-0x004f] [ 0.432343] pnp 00:06: [io 0x0061] [ 0.432345] pnp 00:06: [io 0x0063] [ 0.432348] pnp 00:06: [io 0x0065] [ 0.432351] pnp 00:06: [io 0x0067] [ 0.432353] pnp 00:06: [io 0x0080] [ 0.432355] pnp 00:06: [io 0x0092] [ 0.432358] pnp 00:06: [io 0x00b2-0x00b3] [ 0.432361] pnp 00:06: [io 0x0680-0x069f] [ 0.432363] pnp 00:06: [io 0x0800-0x080f] [ 0.432366] pnp 00:06: [io 0x1000-0x107f] [ 0.432373] pnp 00:06: [io 0x1180-0x11bf] [ 0.432375] pnp 00:06: [io 0xfe00] [ 0.432378] pnp 00:06: [io 0xff00-0xff7f] [ 0.432479] system 00:06: [io 0x0680-0x069f] has been reserved [ 0.432484] system 00:06: [io 0x0800-0x080f] has been reserved [ 0.432487] system 00:06: [io 0x1000-0x107f] has been reserved [ 0.432491] system 00:06: [io 0x1180-0x11bf] has been reserved [ 0.432495] system 00:06: [io 0xfe00] has been reserved [ 0.432499] system 00:06: [io 0xff00-0xff7f] has been reserved [ 0.432504] system 00:06: Plug and Play ACPI device, IDs PNP0c02 (active) [ 0.432517] pnp 00:07: [io 0x0070-0x0077] [ 0.432525] pnp 00:07: [irq 8] [ 0.432587] pnp 00:07: Plug and Play ACPI device, IDs PNP0b00 (active) [ 0.452092] pnp 00:08: [io 0x0060] [ 0.452096] pnp 00:08: [io 0x0064] [ 0.452112] pnp 00:08: [irq 1] [ 0.452226] pnp 00:08: Plug and Play ACPI device, IDs PNP0303 (active) [ 0.452246] pnp 00:09: [irq 12] [ 0.452305] pnp 00:09: Plug and Play ACPI device, IDs PNP0f13 (active) [ 0.452340] pnp: PnP ACPI: found 10 devices [ 0.452343] ACPI: ACPI bus type pnp unregistered [ 0.459104] PCI: max bus depth: 1 pci_try_num: 2 [ 0.459195] pci 0000:00:1f.3: BAR 0: assigned [mem 0xc0000000-0xc00000ff] [ 0.459204] pci 0000:00:1f.3: BAR 0: set to [mem 0xc0000000-0xc00000ff] (PCI address [0xc0000000-0xc00000ff]) [ 0.459209] pci 0000:00:1c.0: PCI bridge to [bus 02-02] [ 0.459214] pci 0000:00:1c.0: bridge window [io 0x2000-0x2fff] [ 0.459222] pci 0000:00:1c.0: bridge window [mem 0xf6000000-0xf7ffffff] [ 0.459229] pci 0000:00:1c.0: bridge window [mem 0xf0000000-0xf1ffffff 64bit pref] [ 0.459239] pci 0000:00:1c.1: PCI bridge to [bus 04-04] [ 0.459244] pci 0000:00:1c.1: bridge window [io 0x3000-0x3fff] [ 0.459252] pci 0000:00:1c.1: bridge window [mem 0xf8000000-0xf9ffffff] [ 0.459259] pci 0000:00:1c.1: bridge window [mem 0xf2000000-0xf3ffffff 64bit pref] [ 0.459268] pci 0000:00:1c.2: PCI bridge to [bus 05-05] [ 0.459272] pci 0000:00:1c.2: bridge window [io 0x4000-0x4fff] [ 0.459280] pci 0000:00:1c.2: bridge window [mem 0xfa000000-0xfbffffff] [ 0.459287] pci 0000:00:1c.2: bridge window [mem 0xf4000000-0xf5ffffff 64bit pref] [ 0.459296] pci 0000:00:1c.3: PCI bridge to [bus 06-06] [ 0.459301] pci 0000:00:1c.3: bridge window [io 0x5000-0x5fff] [ 0.459308] pci 0000:00:1c.3: bridge window [mem 0xc8000000-0xc9ffffff] [ 0.459314] pci 0000:00:1c.3: bridge window [mem 0xcc000000-0xcdffffff 64bit pref] [ 0.459324] pci 0000:00:1e.0: PCI bridge to [bus 08-08] [ 0.459327] pci 0000:00:1e.0: bridge window [io disabled] [ 0.459334] pci 0000:00:1e.0: bridge window [mem 0xfc200000-0xfc2fffff] [ 0.459340] pci 0000:00:1e.0: bridge window [mem pref disabled] [ 0.459373] pci 0000:00:1c.0: PCI INT A -> GSI 17 (level, low) -> IRQ 17 [ 0.459380] pci 0000:00:1c.0: setting latency timer to 64 [ 0.459399] pci 0000:00:1c.1: PCI INT B -> GSI 16 (level, low) -> IRQ 16 [ 0.459405] pci 0000:00:1c.1: setting latency timer to 64 [ 0.459419] pci 0000:00:1c.2: PCI INT C -> GSI 18 (level, low) -> IRQ 18 [ 0.459425] pci 0000:00:1c.2: setting latency timer to 64 [ 0.459438] pci 0000:00:1c.3: PCI INT D -> GSI 19 (level, low) -> IRQ 19 [ 0.459444] pci 0000:00:1c.3: setting latency timer to 64 [ 0.459455] pci 0000:00:1e.0: setting latency timer to 64 [ 0.459460] pci_bus 0000:00: resource 0 [io 0x0000-0xffff] [ 0.459464] pci_bus 0000:00: resource 1 [mem 0x00000000-0xfffffffff] [ 0.459467] pci_bus 0000:02: resource 0 [io 0x2000-0x2fff] [ 0.459470] pci_bus 0000:02: resource 1 [mem 0xf6000000-0xf7ffffff] [ 0.459474] pci_bus 0000:02: resource 2 [mem 0xf0000000-0xf1ffffff 64bit pref] [ 0.459478] pci_bus 0000:04: resource 0 [io 0x3000-0x3fff] [ 0.459481] pci_bus 0000:04: resource 1 [mem 0xf8000000-0xf9ffffff] [ 0.459484] pci_bus 0000:04: resource 2 [mem 0xf2000000-0xf3ffffff 64bit pref] [ 0.459488] pci_bus 0000:05: resource 0 [io 0x4000-0x4fff] [ 0.459491] pci_bus 0000:05: resource 1 [mem 0xfa000000-0xfbffffff] [ 0.459495] pci_bus 0000:05: resource 2 [mem 0xf4000000-0xf5ffffff 64bit pref] [ 0.459498] pci_bus 0000:06: resource 0 [io 0x5000-0x5fff] [ 0.459501] pci_bus 0000:06: resource 1 [mem 0xc8000000-0xc9ffffff] [ 0.459505] pci_bus 0000:06: resource 2 [mem 0xcc000000-0xcdffffff 64bit pref] [ 0.459508] pci_bus 0000:08: resource 1 [mem 0xfc200000-0xfc2fffff] [ 0.459512] pci_bus 0000:08: resource 4 [io 0x0000-0xffff] [ 0.459515] pci_bus 0000:08: resource 5 [mem 0x00000000-0xfffffffff] [ 0.459580] NET: Registered protocol family 2 [ 0.459816] IP route cache hash table entries: 131072 (order: 8, 1048576 bytes) [ 0.461759] TCP established hash table entries: 524288 (order: 11, 8388608 bytes) [ 0.468207] TCP bind hash table entries: 65536 (order: 8, 1048576 bytes) [ 0.469024] TCP: Hash tables configured (established 524288 bind 65536) [ 0.469028] TCP reno registered [ 0.469052] UDP hash table entries: 2048 (order: 4, 65536 bytes) [ 0.469120] UDP-Lite hash table entries: 2048 (order: 4, 65536 bytes) [ 0.469325] NET: Registered protocol family 1 [ 0.469358] pci 0000:00:02.0: Boot video device [ 0.469577] PCI: CLS 64 bytes, default 64 [ 0.469604] Simple Boot Flag at 0x36 set to 0x1 [ 0.470069] audit: initializing netlink socket (disabled) [ 0.470088] type=2000 audit(1317800082.464:1): initialized [ 0.509918] HugeTLB registered 2 MB page size, pre-allocated 0 pages [ 0.531362] VFS: Disk quotas dquot_6.5.2 [ 0.531454] Dquot-cache hash table entries: 512 (order 0, 4096 bytes) [ 0.532343] fuse init (API version 7.16) [ 0.532465] msgmni has been set to 5719 [ 0.532931] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 253) [ 0.532975] io scheduler noop registered [ 0.532978] io scheduler deadline registered [ 0.533033] io scheduler cfq registered (default) [ 0.533206] pcieport 0000:00:1c.0: setting latency timer to 64 [ 0.533281] pcieport 0000:00:1c.0: irq 40 for MSI/MSI-X [ 0.533378] pcieport 0000:00:1c.1: setting latency timer to 64 [ 0.533444] pcieport 0000:00:1c.1: irq 41 for MSI/MSI-X [ 0.533540] pcieport 0000:00:1c.2: setting latency timer to 64 [ 0.533607] pcieport 0000:00:1c.2: irq 42 for MSI/MSI-X [ 0.533705] pcieport 0000:00:1c.3: setting latency timer to 64 [ 0.533770] pcieport 0000:00:1c.3: irq 43 for MSI/MSI-X [ 0.533898] pci_hotplug: PCI Hot Plug PCI Core version: 0.5 [ 0.533934] pciehp: PCI Express Hot Plug Controller Driver version: 0.4 [ 0.533994] intel_idle: MWAIT substates: 0x22220 [ 0.533997] intel_idle: does not run on family 6 model 15 [ 0.534105] ACPI: Deprecated procfs I/F for AC is loaded, please retry with CONFIG_ACPI_PROCFS_POWER cleared [ 0.534186] ACPI: AC Adapter [ACAD] (on-line) [ 0.534267] input: Lid Switch as /devices/LNXSYSTM:00/device:00/PNP0C0D:00/input/input0 [ 0.534291] ACPI: Lid Switch [LID0] [ 0.534348] input: Power Button as /devices/LNXSYSTM:00/device:00/PNP0C0C:00/input/input1 [ 0.534353] ACPI: Power Button [PWRB] [ 0.534429] input: Power Button as /devices/LNXSYSTM:00/LNXPWRBN:00/input/input2 [ 0.534434] ACPI: Power Button [PWRF] [ 0.534479] ACPI: acpi_idle registered with cpuidle [ 0.536970] Monitor-Mwait will be used to enter C-1 state [ 0.537024] Monitor-Mwait will be used to enter C-2 state [ 0.537059] Monitor-Mwait will be used to enter C-3 state [ 0.537066] Marking TSC unstable due to TSC halts in idle [ 0.576306] ACPI: Deprecated procfs I/F for battery is loaded, please retry with CONFIG_ACPI_PROCFS_POWER cleared [ 0.576339] ERST: Table is not found! [ 0.576477] Serial: 8250/16550 driver, 32 ports, IRQ sharing enabled [ 0.596514] ACPI: Battery Slot [BAT1] (battery present) [ 0.756873] Freeing initrd memory: 19464k freed [ 0.789948] Linux agpgart interface v0.103 [ 0.790084] agpgart-intel 0000:00:00.0: Intel 965GM Chipset [ 0.790242] agpgart-intel 0000:00:00.0: detected gtt size: 524288K total, 262144K mappable [ 0.791097] agpgart-intel 0000:00:00.0: detected 8192K stolen memory [ 0.791250] agpgart-intel 0000:00:00.0: AGP aperture is 256M @ 0xd0000000 [ 0.792794] brd: module loaded [ 0.793486] loop: module loaded [ 0.793683] ata_piix 0000:00:1f.1: version 2.13 [ 0.793701] ata_piix 0000:00:1f.1: PCI INT A -> GSI 19 (level, low) -> IRQ 19 [ 0.793746] ata_piix 0000:00:1f.1: setting latency timer to 64 [ 0.794143] scsi0 : ata_piix [ 0.794282] scsi1 : ata_piix [ 0.794784] ata1: PATA max UDMA/100 cmd 0x1f0 ctl 0x3f6 bmdma 0x1810 irq 14 [ 0.794789] ata2: PATA max UDMA/100 cmd 0x170 ctl 0x376 bmdma 0x1818 irq 15 [ 0.795227] Fixed MDIO Bus: probed [ 0.795261] PPP generic driver version 2.4.2 [ 0.795315] tun: Universal TUN/TAP device driver, 1.6 [ 0.795318] tun: (C) 1999-2004 Max Krasnyansky [ 0.795429] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver [ 0.795451] ehci_hcd 0000:00:1a.7: PCI INT C -> GSI 18 (level, low) -> IRQ 18 [ 0.795472] ehci_hcd 0000:00:1a.7: setting latency timer to 64 [ 0.795477] ehci_hcd 0000:00:1a.7: EHCI Host Controller [ 0.795524] ehci_hcd 0000:00:1a.7: new USB bus registered, assigned bus number 1 [ 0.795567] ehci_hcd 0000:00:1a.7: debug port 1 [ 0.799463] ehci_hcd 0000:00:1a.7: cache line size of 64 is not supported [ 0.799485] ehci_hcd 0000:00:1a.7: irq 18, io mem 0xfc504800 [ 0.812020] ehci_hcd 0000:00:1a.7: USB 2.0 started, EHCI 1.00 [ 0.812182] hub 1-0:1.0: USB hub found [ 0.812189] hub 1-0:1.0: 4 ports detected [ 0.812291] ehci_hcd 0000:00:1d.7: PCI INT A -> GSI 23 (level, low) -> IRQ 23 [ 0.812305] ehci_hcd 0000:00:1d.7: setting latency timer to 64 [ 0.812310] ehci_hcd 0000:00:1d.7: EHCI Host Controller [ 0.812363] ehci_hcd 0000:00:1d.7: new USB bus registered, assigned bus number 2 [ 0.812398] ehci_hcd 0000:00:1d.7: debug port 1 [ 0.816279] ehci_hcd 0000:00:1d.7: cache line size of 64 is not supported [ 0.816301] ehci_hcd 0000:00:1d.7: irq 23, io mem 0xfc504c00 [ 0.832023] ehci_hcd 0000:00:1d.7: USB 2.0 started, EHCI 1.00 [ 0.832151] hub 2-0:1.0: USB hub found [ 0.832157] hub 2-0:1.0: 6 ports detected [ 0.832258] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver [ 0.832276] uhci_hcd: USB Universal Host Controller Interface driver [ 0.832305] uhci_hcd 0000:00:1a.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16 [ 0.832314] uhci_hcd 0000:00:1a.0: setting latency timer to 64 [ 0.832319] uhci_hcd 0000:00:1a.0: UHCI Host Controller [ 0.832366] uhci_hcd 0000:00:1a.0: new USB bus registered, assigned bus number 3 [ 0.832412] uhci_hcd 0000:00:1a.0: irq 16, io base 0x00001820 [ 0.832569] hub 3-0:1.0: USB hub found [ 0.832575] hub 3-0:1.0: 2 ports detected [ 0.832668] uhci_hcd 0000:00:1a.1: PCI INT B -> GSI 21 (level, low) -> IRQ 21 [ 0.832679] uhci_hcd 0000:00:1a.1: setting latency timer to 64 [ 0.832684] uhci_hcd 0000:00:1a.1: UHCI Host Controller [ 0.832731] uhci_hcd 0000:00:1a.1: new USB bus registered, assigned bus number 4 [ 0.832775] uhci_hcd 0000:00:1a.1: irq 21, io base 0x00001840 [ 0.832936] hub 4-0:1.0: USB hub found [ 0.832941] hub 4-0:1.0: 2 ports detected [ 0.833028] uhci_hcd 0000:00:1d.0: PCI INT A -> GSI 23 (level, low) -> IRQ 23 [ 0.833037] uhci_hcd 0000:00:1d.0: setting latency timer to 64 [ 0.833042] uhci_hcd 0000:00:1d.0: UHCI Host Controller [ 0.833099] uhci_hcd 0000:00:1d.0: new USB bus registered, assigned bus number 5 [ 0.833134] uhci_hcd 0000:00:1d.0: irq 23, io base 0x00001860 [ 0.833291] hub 5-0:1.0: USB hub found [ 0.833296] hub 5-0:1.0: 2 ports detected [ 0.833384] uhci_hcd 0000:00:1d.1: PCI INT B -> GSI 19 (level, low) -> IRQ 19 [ 0.833392] uhci_hcd 0000:00:1d.1: setting latency timer to 64 [ 0.833397] uhci_hcd 0000:00:1d.1: UHCI Host Controller [ 0.833448] uhci_hcd 0000:00:1d.1: new USB bus registered, assigned bus number 6 [ 0.833493] uhci_hcd 0000:00:1d.1: irq 19, io base 0x00001880 [ 0.833649] hub 6-0:1.0: USB hub found [ 0.833655] hub 6-0:1.0: 2 ports detected [ 0.833737] uhci_hcd 0000:00:1d.2: PCI INT C -> GSI 18 (level, low) -> IRQ 18 [ 0.833746] uhci_hcd 0000:00:1d.2: setting latency timer to 64 [ 0.833750] uhci_hcd 0000:00:1d.2: UHCI Host Controller [ 0.833797] uhci_hcd 0000:00:1d.2: new USB bus registered, assigned bus number 7 [ 0.833832] uhci_hcd 0000:00:1d.2: irq 18, io base 0x000018a0 [ 0.833984] hub 7-0:1.0: USB hub found [ 0.833990] hub 7-0:1.0: 2 ports detected [ 0.834133] i8042: PNP: PS/2 Controller [PNP0303:PS2K,PNP0f13:PS2M] at 0x60,0x64 irq 1,12 [ 0.858635] serio: i8042 KBD port at 0x60,0x64 irq 1 [ 0.858644] serio: i8042 AUX port at 0x60,0x64 irq 12 [ 0.858792] mousedev: PS/2 mouse device common for all mice [ 0.860515] rtc_cmos 00:07: RTC can wake from S4 [ 0.860650] rtc_cmos 00:07: rtc core: registered rtc_cmos as rtc0 [ 0.860686] rtc0: alarms up to one month, y3k, 242 bytes nvram, hpet irqs [ 0.860821] device-mapper: uevent: version 1.0.3 [ 0.860928] device-mapper: ioctl: 4.20.0-ioctl (2011-02-02) initialised: dm-devel@redhat.com [ 0.861015] cpuidle: using governor ladder [ 0.861137] cpuidle: using governor menu [ 0.861140] EFI Variables Facility v0.08 2004-May-17 [ 0.861497] TCP cubic registered [ 0.861666] NET: Registered protocol family 10 [ 0.862339] NET: Registered protocol family 17 [ 0.862362] Registering the dns_resolver key type [ 0.862505] PM: Hibernation image not present or could not be loaded. [ 0.862521] registered taskstats version 1 [ 0.881709] Magic number: 15:169:571 [ 0.881852] rtc_cmos 00:07: setting system clock to 2011-10-05 07:34:43 UTC (1317800083) [ 0.882695] BIOS EDD facility v0.16 2004-Jun-25, 0 devices found [ 0.882699] EDD information not available. [ 0.885384] input: AT Translated Set 2 keyboard as /devices/platform/i8042/serio0/input/input3 [ 0.964510] ata1.00: ATAPI: MATSHITADVD-RAM UJ-850 z, RB32, max UDMA/33 [ 0.980374] ata1.00: configured for UDMA/33 [ 0.983110] scsi 0:0:0:0: CD-ROM MATSHITA DVD-RAM UJ-850 z RB32 PQ: 0 ANSI: 5 [ 0.985684] sr0: scsi3-mmc drive: 24x/24x writer dvd-ram cd/rw xa/form2 cdda tray [ 0.985690] cdrom: Uniform CD-ROM driver Revision: 3.20 [ 0.985886] sr 0:0:0:0: Attached scsi CD-ROM sr0 [ 0.985957] sr 0:0:0:0: Attached scsi generic sg0 type 5 [ 0.988684] Freeing unused kernel memory: 984k freed [ 0.989019] Write protecting the kernel read-only data: 10240k [ 0.989354] Freeing unused kernel memory: 20k freed [ 0.996526] Freeing unused kernel memory: 1400k freed [ 1.023090] udevd[92]: starting version 173 [ 1.095474] [drm] Initialized drm 1.1.0 20060810 [ 1.111223] tg3.c:v3.119 (May 18, 2011) [ 1.111255] tg3 0000:06:00.0: PCI INT A -> GSI 19 (level, low) -> IRQ 19 [ 1.111275] tg3 0000:06:00.0: setting latency timer to 64 [ 1.123354] wmi: Mapper loaded [ 1.135292] i915 0000:00:02.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16 [ 1.135301] i915 0000:00:02.0: setting latency timer to 64 [ 1.229432] i915 0000:00:02.0: irq 44 for MSI/MSI-X [ 1.229442] [drm] Supports vblank timestamp caching Rev 1 (10.10.2010). [ 1.229444] [drm] Driver supports precise vblank timestamp query. [ 1.229504] vgaarb: device changed decodes: PCI:0000:00:02.0,olddecodes=io+mem,decodes=io+mem:owns=io+mem [ 1.231431] sdhci: Secure Digital Host Controller Interface driver [ 1.231435] sdhci: Copyright(c) Pierre Ossman [ 1.231761] sdhci-pci 0000:08:06.1: SDHCI controller found [1180:0822] (rev 19) [ 1.231780] sdhci-pci 0000:08:06.1: PCI INT B -> GSI 23 (level, low) -> IRQ 23 [ 1.232804] sdhci-pci 0000:08:06.1: Will use DMA mode even though HW doesn't fully claim to support it. [ 1.251222] mmc0: no vmmc regulator found [ 1.252265] Registered led device: mmc0:: [ 1.258216] mmc0: SDHCI controller on PCI [0000:08:06.1] using DMA [ 1.278826] tg3 0000:06:00.0: eth0: Tigon3 [partno(BCM95906) rev c002] (PCI Express) MAC address 00:1b:38:0c:7f:47 [ 1.278833] tg3 0000:06:00.0: eth0: attached PHY is 5906 (10/100Base-TX Ethernet) (WireSpeed[0], EEE[0]) [ 1.278838] tg3 0000:06:00.0: eth0: RXcsums[1] LinkChgREG[0] MIirq[0] ASF[0] TSOcap[1] [ 1.278842] tg3 0000:06:00.0: eth0: dma_rwctrl[76180000] dma_mask[64-bit] [ 1.288114] firewire_ohci 0000:08:06.0: PCI INT A -> GSI 22 (level, low) -> IRQ 22 [ 1.288352] fixme: max PWM is zero. [ 1.321105] [drm] initialized overlay support [ 1.363095] firewire_ohci: Added fw-ohci device 0000:08:06.0, OHCI v1.10, 4 IR + 4 IT contexts, quirks 0x1 [ 1.429305] usb 1-4: new high speed USB device number 4 using ehci_hcd [ 1.510188] fbcon: inteldrmfb (fb0) is primary device [ 1.510267] Console: switching to colour frame buffer device 160x50 [ 1.510301] fb0: inteldrmfb frame buffer device [ 1.510304] drm: registered panic notifier [ 1.596139] acpi device:08: registered as cooling_device2 [ 1.596350] input: Video Bus as /devices/LNXSYSTM:00/device:00/PNP0A08:00/LNXVIDEO:01/input/input4 [ 1.596428] ACPI: Video Device [GFX0] (multi-head: yes rom: no post: no) [ 1.596505] [drm] Initialized i915 1.6.0 20080730 for 0000:00:02.0 on minor 0 [ 1.596723] ahci 0000:00:1f.2: version 3.0 [ 1.596748] ahci 0000:00:1f.2: PCI INT B -> GSI 19 (level, low) -> IRQ 19 [ 1.596832] ahci 0000:00:1f.2: irq 45 for MSI/MSI-X [ 1.596928] ahci 0000:00:1f.2: AHCI 0001.0100 32 slots 3 ports 3 Gbps 0x7 impl SATA mode [ 1.596934] ahci 0000:00:1f.2: flags: 64bit ncq sntf pm led clo pio slum part ccc [ 1.596941] ahci 0000:00:1f.2: setting latency timer to 64 [ 1.600697] scsi2 : ahci [ 1.601002] scsi3 : ahci [ 1.601154] scsi4 : ahci [ 1.601328] ata3: SATA max UDMA/133 abar m2048@0xfc504000 port 0xfc504100 irq 45 [ 1.601335] ata4: SATA max UDMA/133 abar m2048@0xfc504000 port 0xfc504180 irq 45 [ 1.601340] ata5: SATA max UDMA/133 abar m2048@0xfc504000 port 0xfc504200 irq 45 [ 1.860262] firewire_core: created device fw0: GUID 00023f7bac4040de, S400 [ 1.920122] ata3: SATA link up 3.0 Gbps (SStatus 123 SControl 300) [ 1.921792] ata3.00: unexpected _GTF length (8) [ 1.922070] ata3.00: ATA-8: WDC WD2500BEKT-75PVMT0, 01.01A01, max UDMA/133 [ 1.922077] ata3.00: 488397168 sectors, multi 16: LBA48 NCQ (depth 31/32), AA [ 1.923756] ata3.00: unexpected _GTF length (8) [ 1.924053] ata4: SATA link down (SStatus 0 SControl 300) [ 1.924081] ata3.00: configured for UDMA/133 [ 1.924106] ata5: SATA link down (SStatus 0 SControl 300) [ 1.924318] scsi 2:0:0:0: Direct-Access ATA WDC WD2500BEKT-7 01.0 PQ: 0 ANSI: 5 [ 1.924525] sd 2:0:0:0: Attached scsi generic sg1 type 0 [ 1.924642] sd 2:0:0:0: [sda] 488397168 512-byte logical blocks: (250 GB/232 GiB) [ 1.924823] sd 2:0:0:0: [sda] Write Protect is off [ 1.924828] sd 2:0:0:0: [sda] Mode Sense: 00 3a 00 00 [ 1.924898] sd 2:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA [ 2.020840] sda: sda1 sda2 sda3 sda4 < sda5 > [ 2.021461] sd 2:0:0:0: [sda] Attached SCSI disk [ 2.032059] usb 3-1: new full speed USB device number 2 using uhci_hcd [ 2.464056] usb 4-1: new full speed USB device number 2 using uhci_hcd [ 2.872042] usb 6-1: new low speed USB device number 2 using uhci_hcd [ 3.093235] input: MLK Trust Mouse as /devices/pci0000:00/0000:00:1d.1/usb6/6-1/6-1:1.0/input/input5 [ 3.093727] generic-usb 0003:04FC:05DA.0001: input,hiddev0,hidraw0: USB HID v1.10 Mouse [MLK Trust Mouse] on usb-0000:00:1d.1-1/input0 [ 3.093905] usbcore: registered new interface driver usbhid [ 3.093909] usbhid: USB HID core driver [ 3.288960] EXT4-fs (sda2): mounted filesystem with ordered data mode. Opts: (null) [ 3.308073] usb 6-2: new full speed USB device number 3 using uhci_hcd [ 3.720052] usb 7-1: new low speed USB device number 2 using uhci_hcd [ 3.918393] input: LITEON Technology USB Multimedia Keyboard as /devices/pci0000:00/0000:00:1d.2/usb7/7-1/7-1:1.0/input/input6 [ 3.918495] generic-usb 0003:046D:C312.0002: input,hidraw1: USB HID v1.10 Keyboard [LITEON Technology USB Multimedia Keyboard] on usb-0000:00:1d.2-1/input0 [ 5.565904] Adding 15999996k swap on /dev/sda3. Priority:-1 extents:1 across:15999996k [ 5.691364] udevd[373]: starting version 173 [ 6.303871] lp: driver loaded but no devices found [ 7.040655] cfg80211: Calling CRDA to update world regulatory domain [ 7.159284] r852 0000:08:06.3: PCI INT B -> GSI 23 (level, low) -> IRQ 23 [ 7.159297] r852 0000:08:06.3: setting latency timer to 64 [ 7.159394] r852: Non dma capable device detected, dma disabled [ 7.159411] r852: driver loaded successfully [ 7.169632] iwl3945: Intel(R) PRO/Wireless 3945ABG/BG Network Connection driver for Linux, in-tree:s [ 7.169637] iwl3945: Copyright(c) 2003-2011 Intel Corporation [ 7.169734] iwl3945 0000:04:00.0: PCI INT A -> GSI 17 (level, low) -> IRQ 17 [ 7.169751] iwl3945 0000:04:00.0: setting latency timer to 64 [ 7.225063] iwl3945 0000:04:00.0: Tunable channels: 13 802.11bg, 23 802.11a channels [ 7.225067] iwl3945 0000:04:00.0: Detected Intel Wireless WiFi Link 3945ABG [ 7.225225] iwl3945 0000:04:00.0: irq 46 for MSI/MSI-X [ 7.225470] Registered led device: phy0-led [ 7.225511] cfg80211: Ignoring regulatory request Set by core since the driver uses its own custom regulatory domain [ 7.521071] ieee80211 phy0: Selected rate control algorithm 'iwl-3945-rs' [ 7.728682] udevd[389]: renamed network interface eth0 to eth1 [ 7.785421] udevd[392]: renamed network interface wlan0 to wlan1 [ 7.839555] device-mapper: multipath: version 1.3.0 loaded [ 7.920206] Synaptics Touchpad, model: 1, fw: 6.3, id: 0x25c0b1, caps: 0xa04713/0x200000/0x0 [ 8.001393] input: SynPS/2 Synaptics TouchPad as /devices/platform/i8042/serio1/input/input7 [ 8.103705] Linux video capture interface: v2.00 [ 8.142601] uvcvideo: Found UVC 1.00 device USB 2.0 Camera (04f2:b013) [ 8.145395] input: USB 2.0 Camera as /devices/pci0000:00/0000:00:1a.7/usb1/1-4/1-4:1.0/input/input8 [ 8.145503] usbcore: registered new interface driver uvcvideo [ 8.145506] USB Video Class driver (v1.1.0) [ 8.268868] gspca: v2.13.0 registered [ 8.426860] Bluetooth: Core ver 2.16 [ 8.426898] NET: Registered protocol family 31 [ 8.426901] Bluetooth: HCI device and connection manager initialized [ 8.426905] Bluetooth: HCI socket layer initialized [ 8.426908] Bluetooth: L2CAP socket layer initialized [ 8.426983] Bluetooth: SCO socket layer initialized [ 8.445120] Bluetooth: Generic Bluetooth USB driver ver 0.6 [ 8.445873] usbcore: registered new interface driver btusb [ 8.596127] cfg80211: Ignoring regulatory request Set by core since the driver uses its own custom regulatory domain [ 8.596132] cfg80211: World regulatory domain updated: [ 8.596135] cfg80211: (start_freq - end_freq @ bandwidth), (max_antenna_gain, max_eirp) [ 8.596139] cfg80211: (2402000 KHz - 2472000 KHz @ 40000 KHz), (300 mBi, 2000 mBm) [ 8.596144] cfg80211: (2457000 KHz - 2482000 KHz @ 20000 KHz), (300 mBi, 2000 mBm) [ 8.596147] cfg80211: (2474000 KHz - 2494000 KHz @ 20000 KHz), (300 mBi, 2000 mBm) [ 8.596151] cfg80211: (5170000 KHz - 5250000 KHz @ 40000 KHz), (300 mBi, 2000 mBm) [ 8.596155] cfg80211: (5735000 KHz - 5835000 KHz @ 40000 KHz), (300 mBi, 2000 mBm) [ 8.713241] HDA Intel 0000:00:1b.0: PCI INT A -> GSI 22 (level, low) -> IRQ 22 [ 8.713332] HDA Intel 0000:00:1b.0: irq 47 for MSI/MSI-X [ 8.713375] HDA Intel 0000:00:1b.0: setting latency timer to 64 [ 9.214524] type=1400 audit(1317800091.827:2): apparmor="STATUS" operation="profile_load" name="/sbin/dhclient" pid=762 comm="apparmor_parser" [ 9.214539] type=1400 audit(1317800091.827:3): apparmor="STATUS" operation="profile_replace" name="/sbin/dhclient" pid=760 comm="apparmor_parser" [ 9.214899] type=1400 audit(1317800091.827:4): apparmor="STATUS" operation="profile_load" name="/usr/lib/NetworkManager/nm-dhcp-client.action" pid=762 comm="apparmor_parser" [ 9.214917] type=1400 audit(1317800091.827:5): apparmor="STATUS" operation="profile_replace" name="/usr/lib/NetworkManager/nm-dhcp-client.action" pid=760 comm="apparmor_parser" [ 9.215139] type=1400 audit(1317800091.827:6): apparmor="STATUS" operation="profile_load" name="/usr/lib/connman/scripts/dhclient-script" pid=762 comm="apparmor_parser" [ 9.215162] type=1400 audit(1317800091.827:7): apparmor="STATUS" operation="profile_replace" name="/usr/lib/connman/scripts/dhclient-script" pid=760 comm="apparmor_parser" [ 9.215989] type=1400 audit(1317800091.827:8): apparmor="STATUS" operation="profile_replace" name="/sbin/dhclient" pid=761 comm="apparmor_parser" [ 9.216386] type=1400 audit(1317800091.831:9): apparmor="STATUS" operation="profile_replace" name="/usr/lib/NetworkManager/nm-dhcp-client.action" pid=761 comm="apparmor_parser" [ 9.216637] type=1400 audit(1317800091.831:10): apparmor="STATUS" operation="profile_replace" name="/usr/lib/connman/scripts/dhclient-script" pid=761 comm="apparmor_parser" [ 9.565602] input: zc3xx as /devices/pci0000:00/0000:00:1a.0/usb3/3-1/input/input9 [ 9.565840] usbcore: registered new interface driver zc3xx [ 9.567768] usbcore: registered new interface driver snd-usb-audio [ 10.957262] EXT4-fs (sda2): re-mounted. Opts: errors=remount-ro [ 11.498897] EXT4-fs (sda1): mounted filesystem with ordered data mode. Opts: (null) [ 11.610016] EXT4-fs (sda5): mounted filesystem with ordered data mode. Opts: (null) [ 13.338782] type=1400 audit(1317800095.951:11): apparmor="STATUS" operation="profile_load" name="/usr/lib/lightdm/lightdm-guest-session-wrapper" pid=1170 comm="apparmor_parser" [ 14.107842] ppdev: user-space parallel port driver [ 16.201248] microcode: CPU0 sig=0x6fd, pf=0x80, revision=0xa1 [ 16.241864] microcode: CPU1 sig=0x6fd, pf=0x80, revision=0xa1 [ 16.244584] microcode: Microcode Update Driver: v2.00 , Peter Oruba [ 16.257389] iwl3945 0000:04:00.0: loaded firmware version 15.32.2.9 [ 16.319712] microcode: CPU0 updated to revision 0xa4, date = 2010-10-02 [ 16.320392] microcode: CPU1 updated to revision 0xa4, date = 2010-10-02 [ 16.327663] ADDRCONF(NETDEV_UP): wlan1: link is not ready [ 16.411245] tg3 0000:06:00.0: irq 48 for MSI/MSI-X [ 16.441602] ADDRCONF(NETDEV_UP): eth1: link is not ready [ 17.163336] init: failsafe main process (1112) killed by TERM signal [ 17.369512] init: gdm main process (1340) killed by TERM signal [ 18.121686] tg3 0000:06:00.0: eth1: Link is up at 100 Mbps, full duplex [ 18.121691] tg3 0000:06:00.0: eth1: Flow control is on for TX and on for RX [ 18.122295] ADDRCONF(NETDEV_CHANGE): eth1: link becomes ready [ 21.210518] RPC: Registered named UNIX socket transport module. [ 21.210523] RPC: Registered udp transport module. [ 21.210525] RPC: Registered tcp transport module. [ 21.210528] RPC: Registered tcp NFSv4.1 backchannel transport module. [ 21.445931] Installing knfsd (copyright (C) 1996 okir@monad.swb.de). [ 21.627527] NFSD: Using /var/lib/nfs/v4recovery as the NFSv4 state recovery directory [ 21.636586] NFSD: starting 90-second grace period [ 24.852307] vboxdrv: Found 2 processor cores. [ 24.852593] vboxdrv: fAsync=0 offMin=0x1c2 offMax=0xae6 [ 24.852666] vboxdrv: TSC mode is 'synchronous', kernel timer mode is 'normal'. [ 24.852669] vboxdrv: Successfully loaded version 4.1.2_Ubuntu (interface 0x00190000). [ 25.101599] vboxpci: IOMMU not found (not registered) [ 27.046401] Bluetooth: BNEP (Ethernet Emulation) ver 1.3 [ 27.046405] Bluetooth: BNEP filters: protocol multicast [ 27.081903] Bluetooth: RFCOMM TTY layer initialized [ 27.081919] Bluetooth: RFCOMM socket layer initialized [ 27.081921] Bluetooth: RFCOMM ver 1.11 [ 28.752057] eth1: no IPv6 routers present [ 33.139443] init: plymouth-stop pre-start process (2005) terminated with status 1 [ 33.628053] EXT4-fs (sda2): re-mounted. Opts: errors=remount-ro,commit=0 [ 34.056830] EXT4-fs (sda1): re-mounted. Opts: commit=0 [ 34.217110] EXT4-fs (sda5): re-mounted. Opts: commit=0 [ 45.192742] wlan1: authenticate with 00:1a:c1:38:47:d4 (try 1) [ 45.196319] wlan1: authenticated [ 45.199717] wlan1: associate with 00:1a:c1:38:47:d4 (try 1) [ 45.202749] wlan1: RX AssocResp from 00:1a:c1:38:47:d4 (capab=0x431 status=0 aid=2) [ 45.202758] wlan1: associated [ 45.206342] ADDRCONF(NETDEV_CHANGE): wlan1: link becomes ready [ 45.206456] cfg80211: Calling CRDA for country: GB [ 45.213483] cfg80211: Updating information on frequency 2412 MHz for a 20 MHz width channel with regulatory rule: [ 45.213493] cfg80211: 2402000 KHz - 2482000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 45.213498] cfg80211: Updating information on frequency 2417 MHz for a 20 MHz width channel with regulatory rule: [ 45.213505] cfg80211: 2402000 KHz - 2482000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 45.213509] cfg80211: Updating information on frequency 2422 MHz for a 20 MHz width channel with regulatory rule: [ 45.213516] cfg80211: 2402000 KHz - 2482000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 45.213520] cfg80211: Updating information on frequency 2427 MHz for a 20 MHz width channel with regulatory rule: [ 45.213526] cfg80211: 2402000 KHz - 2482000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 45.213531] cfg80211: Updating information on frequency 2432 MHz for a 20 MHz width channel with regulatory rule: [ 45.213537] cfg80211: 2402000 KHz - 2482000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 45.213542] cfg80211: Updating information on frequency 2437 MHz for a 20 MHz width channel with regulatory rule: [ 45.213547] cfg80211: 2402000 KHz - 2482000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 45.213552] cfg80211: Updating information on frequency 2442 MHz for a 20 MHz width channel with regulatory rule: [ 45.213558] cfg80211: 2402000 KHz - 2482000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 45.213563] cfg80211: Updating information on frequency 2447 MHz for a 20 MHz width channel with regulatory rule: [ 45.213569] cfg80211: 2402000 KHz - 2482000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 45.213573] cfg80211: Updating information on frequency 2452 MHz for a 20 MHz width channel with regulatory rule: [ 45.213579] cfg80211: 2402000 KHz - 2482000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 45.213584] cfg80211: Updating information on frequency 2457 MHz for a 20 MHz width channel with regulatory rule: [ 45.213590] cfg80211: 2402000 KHz - 2482000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 45.213594] cfg80211: Updating information on frequency 2462 MHz for a 20 MHz width channel with regulatory rule: [ 45.213600] cfg80211: 2402000 KHz - 2482000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 45.213605] cfg80211: Updating information on frequency 2467 MHz for a 20 MHz width channel with regulatory rule: [ 45.213611] cfg80211: 2402000 KHz - 2482000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 45.213615] cfg80211: Updating information on frequency 2472 MHz for a 20 MHz width channel with regulatory rule: [ 45.213621] cfg80211: 2402000 KHz - 2482000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 45.213626] cfg80211: Disabling freq 5170 MHz [ 45.213630] cfg80211: Updating information on frequency 5180 MHz for a 20 MHz width channel with regulatory rule: [ 45.213636] cfg80211: 5170000 KHz - 5250000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 45.213640] cfg80211: Updating information on frequency 5190 MHz for a 20 MHz width channel with regulatory rule: [ 45.213646] cfg80211: 5170000 KHz - 5250000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 45.213651] cfg80211: Updating information on frequency 5200 MHz for a 20 MHz width channel with regulatory rule: [ 45.213657] cfg80211: 5170000 KHz - 5250000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 45.213662] cfg80211: Updating information on frequency 5210 MHz for a 20 MHz width channel with regulatory rule: [ 45.213667] cfg80211: 5170000 KHz - 5250000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 45.213672] cfg80211: Updating information on frequency 5220 MHz for a 20 MHz width channel with regulatory rule: [ 45.213678] cfg80211: 5170000 KHz - 5250000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 45.213683] cfg80211: Updating information on frequency 5230 MHz for a 20 MHz width channel with regulatory rule: [ 45.213688] cfg80211: 5170000 KHz - 5250000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 45.213693] cfg80211: Updating information on frequency 5240 MHz for a 20 MHz width channel with regulatory rule: [ 45.213699] cfg80211: 5170000 KHz - 5250000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 45.213704] cfg80211: Updating information on frequency 5260 MHz for a 20 MHz width channel with regulatory rule: [ 45.213710] cfg80211: 5250000 KHz - 5330000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 45.213714] cfg80211: Updating information on frequency 5280 MHz for a 20 MHz width channel with regulatory rule: [ 45.213720] cfg80211: 5250000 KHz - 5330000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 45.213725] cfg80211: Updating information on frequency 5300 MHz for a 20 MHz width channel with regulatory rule: [ 45.213731] cfg80211: 5250000 KHz - 5330000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 45.213736] cfg80211: Updating information on frequency 5320 MHz for a 20 MHz width channel with regulatory rule: [ 45.213742] cfg80211: 5250000 KHz - 5330000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 45.213746] cfg80211: Updating information on frequency 5500 MHz for a 20 MHz width channel with regulatory rule: [ 45.213752] cfg80211: 5490000 KHz - 5710000 KHz @ KHz), (N/A mBi, 2700 mBm) [ 45.213757] cfg80211: Updating information on frequency 5520 MHz for a 20 MHz width channel with regulatory rule: [ 45.213763] cfg80211: 5490000 KHz - 5710000 KHz @ KHz), (N/A mBi, 2700 mBm) [ 45.213768] cfg80211: Updating information on frequency 5540 MHz for a 20 MHz width channel with regulatory rule: [ 45.213774] cfg80211: 5490000 KHz - 5710000 KHz @ KHz), (N/A mBi, 2700 mBm) [ 45.213779] cfg80211: Updating information on frequency 5560 MHz for a 20 MHz width channel with regulatory rule: [ 45.213785] cfg80211: 5490000 KHz - 5710000 KHz @ KHz), (N/A mBi, 2700 mBm) [ 45.213789] cfg80211: Updating information on frequency 5580 MHz for a 20 MHz width channel with regulatory rule: [ 45.213795] cfg80211: 5490000 KHz - 5710000 KHz @ KHz), (N/A mBi, 2700 mBm) [ 45.213800] cfg80211: Updating information on frequency 5600 MHz for a 20 MHz width channel with regulatory rule: [ 45.213806] cfg80211: 5490000 KHz - 5710000 KHz @ KHz), (N/A mBi, 2700 mBm) [ 45.213810] cfg80211: Updating information on frequency 5620 MHz for a 20 MHz width channel with regulatory rule: [ 45.213816] cfg80211: 5490000 KHz - 5710000 KHz @ KHz), (N/A mBi, 2700 mBm) [ 45.213821] cfg80211: Updating information on frequency 5640 MHz for a 20 MHz width channel with regulatory rule: [ 45.213827] cfg80211: 5490000 KHz - 5710000 KHz @ KHz), (N/A mBi, 2700 mBm) [ 45.213831] cfg80211: Updating information on frequency 5660 MHz for a 20 MHz width channel with regulatory rule: [ 45.213837] cfg80211: 5490000 KHz - 5710000 KHz @ KHz), (N/A mBi, 2700 mBm) [ 45.213842] cfg80211: Updating information on frequency 5680 MHz for a 20 MHz width channel with regulatory rule: [ 45.213848] cfg80211: 5490000 KHz - 5710000 KHz @ KHz), (N/A mBi, 2700 mBm) [ 45.213852] cfg80211: Updating information on frequency 5700 MHz for a 20 MHz width channel with regulatory rule: [ 45.213858] cfg80211: 5490000 KHz - 5710000 KHz @ KHz), (N/A mBi, 2700 mBm) [ 45.213864] cfg80211: Regulatory domain changed to country: GB [ 45.213868] cfg80211: (start_freq - end_freq @ bandwidth), (max_antenna_gain, max_eirp) [ 45.213873] cfg80211: (2402000 KHz - 2482000 KHz @ 40000 KHz), (N/A, 2000 mBm) [ 45.213879] cfg80211: (5170000 KHz - 5250000 KHz @ 40000 KHz), (N/A, 2000 mBm) [ 45.213884] cfg80211: (5250000 KHz - 5330000 KHz @ 40000 KHz), (N/A, 2000 mBm) [ 45.213889] cfg80211: (5490000 KHz - 5710000 KHz @ 40000 KHz), (N/A, 2700 mBm) [ 52.640123] eth1: no IPv6 routers present [ 55.208282] wlan1: disassociating from 00:1a:c1:38:47:d4 by local choice (reason=3) [ 55.214021] cfg80211: All devices are disconnected, going to restore regulatory settings [ 55.214032] cfg80211: Restoring regulatory settings [ 55.214052] cfg80211: Calling CRDA to update world regulatory domain [ 55.214778] wlan1: deauthenticating from 00:1a:c1:38:47:d4 by local choice (reason=3) [ 55.221291] cfg80211: Ignoring regulatory request Set by core since the driver uses its own custom regulatory domain [ 55.221299] cfg80211: World regulatory domain updated: [ 55.221303] cfg80211: (start_freq - end_freq @ bandwidth), (max_antenna_gain, max_eirp) [ 55.221309] cfg80211: (2402000 KHz - 2472000 KHz @ 40000 KHz), (300 mBi, 2000 mBm) [ 55.221315] cfg80211: (2457000 KHz - 2482000 KHz @ 20000 KHz), (300 mBi, 2000 mBm) [ 55.221321] cfg80211: (2474000 KHz - 2494000 KHz @ 20000 KHz), (300 mBi, 2000 mBm) [ 55.221327] cfg80211: (5170000 KHz - 5250000 KHz @ 40000 KHz), (300 mBi, 2000 mBm) [ 55.221333] cfg80211: (5735000 KHz - 5835000 KHz @ 40000 KHz), (300 mBi, 2000 mBm) [ 55.392119] wlan1: no IPv6 routers present [ 58.763822] wlan1: authenticate with 00:1a:c1:38:47:d4 (try 1) [ 58.765582] wlan1: authenticated [ 58.766582] wlan1: associate with 00:1a:c1:38:47:d4 (try 1) [ 58.769972] wlan1: RX ReassocResp from 00:1a:c1:38:47:d4 (capab=0x431 status=0 aid=2) [ 58.769980] wlan1: associated [ 58.773587] cfg80211: Calling CRDA for country: GB [ 58.778304] cfg80211: Updating information on frequency 2412 MHz for a 20 MHz width channel with regulatory rule: [ 58.778310] cfg80211: 2402000 KHz - 2482000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 58.778314] cfg80211: Updating information on frequency 2417 MHz for a 20 MHz width channel with regulatory rule: [ 58.778318] cfg80211: 2402000 KHz - 2482000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 58.778321] cfg80211: Updating information on frequency 2422 MHz for a 20 MHz width channel with regulatory rule: [ 58.778325] cfg80211: 2402000 KHz - 2482000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 58.778328] cfg80211: Updating information on frequency 2427 MHz for a 20 MHz width channel with regulatory rule: [ 58.778332] cfg80211: 2402000 KHz - 2482000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 58.778335] cfg80211: Updating information on frequency 2432 MHz for a 20 MHz width channel with regulatory rule: [ 58.778340] cfg80211: 2402000 KHz - 2482000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 58.778343] cfg80211: Updating information on frequency 2437 MHz for a 20 MHz width channel with regulatory rule: [ 58.778347] cfg80211: 2402000 KHz - 2482000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 58.778350] cfg80211: Updating information on frequency 2442 MHz for a 20 MHz width channel with regulatory rule: [ 58.778354] cfg80211: 2402000 KHz - 2482000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 58.778357] cfg80211: Updating information on frequency 2447 MHz for a 20 MHz width channel with regulatory rule: [ 58.778361] cfg80211: 2402000 KHz - 2482000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 58.778364] cfg80211: Updating information on frequency 2452 MHz for a 20 MHz width channel with regulatory rule: [ 58.778368] cfg80211: 2402000 KHz - 2482000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 58.778371] cfg80211: Updating information on frequency 2457 MHz for a 20 MHz width channel with regulatory rule: [ 58.778375] cfg80211: 2402000 KHz - 2482000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 58.778378] cfg80211: Updating information on frequency 2462 MHz for a 20 MHz width channel with regulatory rule: [ 58.778382] cfg80211: 2402000 KHz - 2482000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 58.778385] cfg80211: Updating information on frequency 2467 MHz for a 20 MHz width channel with regulatory rule: [ 58.778389] cfg80211: 2402000 KHz - 2482000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 58.778392] cfg80211: Updating information on frequency 2472 MHz for a 20 MHz width channel with regulatory rule: [ 58.778396] cfg80211: 2402000 KHz - 2482000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 58.778399] cfg80211: Disabling freq 5170 MHz [ 58.778402] cfg80211: Updating information on frequency 5180 MHz for a 20 MHz width channel with regulatory rule: [ 58.778406] cfg80211: 5170000 KHz - 5250000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 58.778409] cfg80211: Updating information on frequency 5190 MHz for a 20 MHz width channel with regulatory rule: [ 58.778413] cfg80211: 5170000 KHz - 5250000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 58.778416] cfg80211: Updating information on frequency 5200 MHz for a 20 MHz width channel with regulatory rule: [ 58.778420] cfg80211: 5170000 KHz - 5250000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 58.778423] cfg80211: Updating information on frequency 5210 MHz for a 20 MHz width channel with regulatory rule: [ 58.778427] cfg80211: 5170000 KHz - 5250000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 58.778430] cfg80211: Updating information on frequency 5220 MHz for a 20 MHz width channel with regulatory rule: [ 58.778434] cfg80211: 5170000 KHz - 5250000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 58.778437] cfg80211: Updating information on frequency 5230 MHz for a 20 MHz width channel with regulatory rule: [ 58.778441] cfg80211: 5170000 KHz - 5250000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 58.778444] cfg80211: Updating information on frequency 5240 MHz for a 20 MHz width channel with regulatory rule: [ 58.778448] cfg80211: 5170000 KHz - 5250000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 58.778452] cfg80211: Updating information on frequency 5260 MHz for a 20 MHz width channel with regulatory rule: [ 58.778456] cfg80211: 5250000 KHz - 5330000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 58.778459] cfg80211: Updating information on frequency 5280 MHz for a 20 MHz width channel with regulatory rule: [ 58.778463] cfg80211: 5250000 KHz - 5330000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 58.778466] cfg80211: Updating information on frequency 5300 MHz for a 20 MHz width channel with regulatory rule: [ 58.778470] cfg80211: 5250000 KHz - 5330000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 58.778473] cfg80211: Updating information on frequency 5320 MHz for a 20 MHz width channel with regulatory rule: [ 58.778477] cfg80211: 5250000 KHz - 5330000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 58.778480] cfg80211: Updating information on frequency 5500 MHz for a 20 MHz width channel with regulatory rule: [ 58.778484] cfg80211: 5490000 KHz - 5710000 KHz @ KHz), (N/A mBi, 2700 mBm) [ 58.778487] cfg80211: Updating information on frequency 5520 MHz for a 20 MHz width channel with regulatory rule: [ 58.778491] cfg80211: 5490000 KHz - 5710000 KHz @ KHz), (N/A mBi, 2700 mBm) [ 58.778494] cfg80211: Updating information on frequency 5540 MHz for a 20 MHz width channel with regulatory rule: [ 58.778498] cfg80211: 5490000 KHz - 5710000 KHz @ KHz), (N/A mBi, 2700 mBm) [ 58.778501] cfg80211: Updating information on frequency 5560 MHz for a 20 MHz width channel with regulatory rule: [ 58.778505] cfg80211: 5490000 KHz - 5710000 KHz @ KHz), (N/A mBi, 2700 mBm) [ 58.778508] cfg80211: Updating information on frequency 5580 MHz for a 20 MHz width channel with regulatory rule: [ 58.778512] cfg80211: 5490000 KHz - 5710000 KHz @ KHz), (N/A mBi, 2700 mBm) [ 58.778515] cfg80211: Updating information on frequency 5600 MHz for a 20 MHz width channel with regulatory rule: [ 58.778519] cfg80211: 5490000 KHz - 5710000 KHz @ KHz), (N/A mBi, 2700 mBm) [ 58.778522] cfg80211: Updating information on frequency 5620 MHz for a 20 MHz width channel with regulatory rule: [ 58.778526] cfg80211: 5490000 KHz - 5710000 KHz @ KHz), (N/A mBi, 2700 mBm) [ 58.778529] cfg80211: Updating information on frequency 5640 MHz for a 20 MHz width channel with regulatory rule: [ 58.778533] cfg80211: 5490000 KHz - 5710000 KHz @ KHz), (N/A mBi, 2700 mBm) [ 58.778536] cfg80211: Updating information on frequency 5660 MHz for a 20 MHz width channel with regulatory rule: [ 58.778540] cfg80211: 5490000 KHz - 5710000 KHz @ KHz), (N/A mBi, 2700 mBm) [ 58.778543] cfg80211: Updating information on frequency 5680 MHz for a 20 MHz width channel with regulatory rule: [ 58.778547] cfg80211: 5490000 KHz - 5710000 KHz @ KHz), (N/A mBi, 2700 mBm) [ 58.778550] cfg80211: Updating information on frequency 5700 MHz for a 20 MHz width channel with regulatory rule: [ 58.778554] cfg80211: 5490000 KHz - 5710000 KHz @ KHz), (N/A mBi, 2700 mBm) [ 58.778558] cfg80211: Regulatory domain changed to country: GB [ 58.778560] cfg80211: (start_freq - end_freq @ bandwidth), (max_antenna_gain, max_eirp) [ 58.778564] cfg80211: (2402000 KHz - 2482000 KHz @ 40000 KHz), (N/A, 2000 mBm) [ 58.778568] cfg80211: (5170000 KHz - 5250000 KHz @ 40000 KHz), (N/A, 2000 mBm) [ 58.778571] cfg80211: (5250000 KHz - 5330000 KHz @ 40000 KHz), (N/A, 2000 mBm) [ 58.778575] cfg80211: (5490000 KHz - 5710000 KHz @ 40000 KHz), (N/A, 2700 mBm) [ 70.176124] wlan1: no IPv6 routers present [ 75.152080] eth1: no IPv6 routers present [ 98.736094] eth1: no IPv6 routers present [ 648.357292] ecryptfs_mount: kern_path() failed [ 648.388155] Reading sb failed; rc = [-2] [ 670.016019] eth1: no IPv6 routers present [ 688.176048] eth1: no IPv6 routers present [ 711.096140] eth1: no IPv6 routers present fwts-test/arg-show-progress-dialog-0001/progress-0001.log000066400000000000000000000343621231470457100231630ustar00rootroot00000000000000Running 2 tests, results appended to results.log XXX 0 So far: 0 passed, 0 failed, 0 warning, 0 aborted, 0 skipped, 0 info only Scan kernel log for Oopses. Running test #1: XXX XXX 0 So far: 0 passed, 0 failed, 0 warning, 0 aborted, 0 skipped, 0 info only Scan kernel log for Oopses. Running test #1: Kernel log oops check. XXX XXX 50 So far: 0 passed, 0 failed, 0 warning, 0 aborted, 0 skipped, 0 info only Scan kernel log for Oopses. Running test #1: Kernel log oops check. XXX XXX 50 So far: 2 passed, 0 failed, 0 warning, 0 aborted, 0 skipped, 0 info only Scan kernel log for errors and warnings. Running test #2: XXX XXX 50 So far: 2 passed, 0 failed, 0 warning, 0 aborted, 0 skipped, 0 info only Scan kernel log for errors and warnings. Running test #2: Kernel log error check. XXX XXX 50 So far: 2 passed, 0 failed, 0 warning, 0 aborted, 0 skipped, 0 info only Scan kernel log for errors and warnings. Running test #2: Kernel log error check. XXX XXX 50 So far: 2 passed, 0 failed, 0 warning, 0 aborted, 0 skipped, 0 info only Scan kernel log for errors and warnings. Running test #2: Kernel log error check. XXX XXX 51 So far: 2 passed, 0 failed, 0 warning, 0 aborted, 0 skipped, 0 info only Scan kernel log for errors and warnings. Running test #2: Kernel log error check. XXX XXX 51 So far: 2 passed, 0 failed, 0 warning, 0 aborted, 0 skipped, 0 info only Scan kernel log for errors and warnings. Running test #2: Kernel log error check. XXX XXX 52 So far: 2 passed, 0 failed, 0 warning, 0 aborted, 0 skipped, 0 info only Scan kernel log for errors and warnings. Running test #2: Kernel log error check. XXX XXX 52 So far: 2 passed, 0 failed, 0 warning, 0 aborted, 0 skipped, 0 info only Scan kernel log for errors and warnings. Running test #2: Kernel log error check. XXX XXX 53 So far: 2 passed, 0 failed, 0 warning, 0 aborted, 0 skipped, 0 info only Scan kernel log for errors and warnings. Running test #2: Kernel log error check. XXX XXX 54 So far: 2 passed, 0 failed, 0 warning, 0 aborted, 0 skipped, 0 info only Scan kernel log for errors and warnings. Running test #2: Kernel log error check. XXX XXX 54 So far: 2 passed, 0 failed, 0 warning, 0 aborted, 0 skipped, 0 info only Scan kernel log for errors and warnings. Running test #2: Kernel log error check. XXX XXX 55 So far: 2 passed, 0 failed, 0 warning, 0 aborted, 0 skipped, 0 info only Scan kernel log for errors and warnings. Running test #2: Kernel log error check. XXX XXX 55 So far: 2 passed, 0 failed, 0 warning, 0 aborted, 0 skipped, 0 info only Scan kernel log for errors and warnings. Running test #2: Kernel log error check. XXX XXX 56 So far: 2 passed, 0 failed, 0 warning, 0 aborted, 0 skipped, 0 info only Scan kernel log for errors and warnings. Running test #2: Kernel log error check. XXX XXX 57 So far: 2 passed, 0 failed, 0 warning, 0 aborted, 0 skipped, 0 info only Scan kernel log for errors and warnings. Running test #2: Kernel log error check. XXX XXX 57 So far: 2 passed, 0 failed, 0 warning, 0 aborted, 0 skipped, 0 info only Scan kernel log for errors and warnings. Running test #2: Kernel log error check. XXX XXX 58 So far: 2 passed, 0 failed, 0 warning, 0 aborted, 0 skipped, 0 info only Scan kernel log for errors and warnings. Running test #2: Kernel log error check. XXX XXX 58 So far: 2 passed, 0 failed, 0 warning, 0 aborted, 0 skipped, 0 info only Scan kernel log for errors and warnings. Running test #2: Kernel log error check. XXX XXX 59 So far: 2 passed, 0 failed, 0 warning, 0 aborted, 0 skipped, 0 info only Scan kernel log for errors and warnings. Running test #2: Kernel log error check. XXX XXX 59 So far: 2 passed, 0 failed, 0 warning, 0 aborted, 0 skipped, 0 info only Scan kernel log for errors and warnings. Running test #2: Kernel log error check. XXX XXX 60 So far: 2 passed, 0 failed, 0 warning, 0 aborted, 0 skipped, 0 info only Scan kernel log for errors and warnings. Running test #2: Kernel log error check. XXX XXX 61 So far: 2 passed, 0 failed, 0 warning, 0 aborted, 0 skipped, 0 info only Scan kernel log for errors and warnings. Running test #2: Kernel log error check. XXX XXX 61 So far: 2 passed, 0 failed, 0 warning, 0 aborted, 0 skipped, 0 info only Scan kernel log for errors and warnings. Running test #2: Kernel log error check. XXX XXX 62 So far: 2 passed, 0 failed, 0 warning, 0 aborted, 0 skipped, 0 info only Scan kernel log for errors and warnings. Running test #2: Kernel log error check. XXX XXX 62 So far: 2 passed, 0 failed, 0 warning, 0 aborted, 0 skipped, 0 info only Scan kernel log for errors and warnings. Running test #2: Kernel log error check. XXX XXX 63 So far: 2 passed, 0 failed, 0 warning, 0 aborted, 0 skipped, 0 info only Scan kernel log for errors and warnings. Running test #2: Kernel log error check. XXX XXX 64 So far: 2 passed, 0 failed, 0 warning, 0 aborted, 0 skipped, 0 info only Scan kernel log for errors and warnings. Running test #2: Kernel log error check. XXX XXX 64 So far: 2 passed, 0 failed, 0 warning, 0 aborted, 0 skipped, 0 info only Scan kernel log for errors and warnings. Running test #2: Kernel log error check. XXX XXX 65 So far: 2 passed, 0 failed, 0 warning, 0 aborted, 0 skipped, 0 info only Scan kernel log for errors and warnings. Running test #2: Kernel log error check. XXX XXX 65 So far: 2 passed, 0 failed, 0 warning, 0 aborted, 0 skipped, 0 info only Scan kernel log for errors and warnings. Running test #2: Kernel log error check. XXX XXX 66 So far: 2 passed, 0 failed, 0 warning, 0 aborted, 0 skipped, 0 info only Scan kernel log for errors and warnings. Running test #2: Kernel log error check. XXX XXX 67 So far: 2 passed, 0 failed, 0 warning, 0 aborted, 0 skipped, 0 info only Scan kernel log for errors and warnings. Running test #2: Kernel log error check. XXX XXX 67 So far: 2 passed, 0 failed, 0 warning, 0 aborted, 0 skipped, 0 info only Scan kernel log for errors and warnings. Running test #2: Kernel log error check. XXX XXX 68 So far: 2 passed, 0 failed, 0 warning, 0 aborted, 0 skipped, 0 info only Scan kernel log for errors and warnings. Running test #2: Kernel log error check. XXX XXX 68 So far: 2 passed, 0 failed, 0 warning, 0 aborted, 0 skipped, 0 info only Scan kernel log for errors and warnings. Running test #2: Kernel log error check. XXX XXX 69 So far: 2 passed, 0 failed, 0 warning, 0 aborted, 0 skipped, 0 info only Scan kernel log for errors and warnings. Running test #2: Kernel log error check. XXX XXX 69 So far: 2 passed, 0 failed, 0 warning, 0 aborted, 0 skipped, 0 info only Scan kernel log for errors and warnings. Running test #2: Kernel log error check. XXX XXX 70 So far: 2 passed, 0 failed, 0 warning, 0 aborted, 0 skipped, 0 info only Scan kernel log for errors and warnings. Running test #2: Kernel log error check. XXX XXX 71 So far: 2 passed, 0 failed, 0 warning, 0 aborted, 0 skipped, 0 info only Scan kernel log for errors and warnings. Running test #2: Kernel log error check. XXX XXX 71 So far: 2 passed, 0 failed, 0 warning, 0 aborted, 0 skipped, 0 info only Scan kernel log for errors and warnings. Running test #2: Kernel log error check. XXX XXX 72 So far: 2 passed, 0 failed, 0 warning, 0 aborted, 0 skipped, 0 info only Scan kernel log for errors and warnings. Running test #2: Kernel log error check. XXX XXX 72 So far: 2 passed, 0 failed, 0 warning, 0 aborted, 0 skipped, 0 info only Scan kernel log for errors and warnings. Running test #2: Kernel log error check. XXX XXX 73 So far: 2 passed, 0 failed, 0 warning, 0 aborted, 0 skipped, 0 info only Scan kernel log for errors and warnings. Running test #2: Kernel log error check. XXX XXX 74 So far: 2 passed, 0 failed, 0 warning, 0 aborted, 0 skipped, 0 info only Scan kernel log for errors and warnings. Running test #2: Kernel log error check. XXX XXX 74 So far: 2 passed, 0 failed, 0 warning, 0 aborted, 0 skipped, 0 info only Scan kernel log for errors and warnings. Running test #2: Kernel log error check. XXX XXX 50 So far: 2 passed, 0 failed, 0 warning, 0 aborted, 0 skipped, 0 info only Scan kernel log for errors and warnings. Running test #2: Kernel log error check. XXX XXX 50 So far: 2 passed, 0 failed, 0 warning, 0 aborted, 0 skipped, 0 info only Scan kernel log for errors and warnings. Running test #2: Kernel log error check. XXX XXX 51 So far: 2 passed, 0 failed, 0 warning, 0 aborted, 0 skipped, 0 info only Scan kernel log for errors and warnings. Running test #2: Kernel log error check. XXX XXX 52 So far: 2 passed, 0 failed, 0 warning, 0 aborted, 0 skipped, 0 info only Scan kernel log for errors and warnings. Running test #2: Kernel log error check. XXX XXX 52 So far: 2 passed, 0 failed, 0 warning, 0 aborted, 0 skipped, 0 info only Scan kernel log for errors and warnings. Running test #2: Kernel log error check. XXX XXX 53 So far: 2 passed, 0 failed, 0 warning, 0 aborted, 0 skipped, 0 info only Scan kernel log for errors and warnings. Running test #2: Kernel log error check. XXX XXX 54 So far: 2 passed, 0 failed, 0 warning, 0 aborted, 0 skipped, 0 info only Scan kernel log for errors and warnings. Running test #2: Kernel log error check. XXX XXX 54 So far: 2 passed, 0 failed, 0 warning, 0 aborted, 0 skipped, 0 info only Scan kernel log for errors and warnings. Running test #2: Kernel log error check. XXX XXX 55 So far: 2 passed, 0 failed, 0 warning, 0 aborted, 0 skipped, 0 info only Scan kernel log for errors and warnings. Running test #2: Kernel log error check. XXX XXX 56 So far: 2 passed, 0 failed, 0 warning, 0 aborted, 0 skipped, 0 info only Scan kernel log for errors and warnings. Running test #2: Kernel log error check. XXX XXX 56 So far: 2 passed, 0 failed, 0 warning, 0 aborted, 0 skipped, 0 info only Scan kernel log for errors and warnings. Running test #2: Kernel log error check. XXX XXX 57 So far: 2 passed, 0 failed, 0 warning, 0 aborted, 0 skipped, 0 info only Scan kernel log for errors and warnings. Running test #2: Kernel log error check. XXX XXX 58 So far: 2 passed, 0 failed, 0 warning, 0 aborted, 0 skipped, 0 info only Scan kernel log for errors and warnings. Running test #2: Kernel log error check. XXX XXX 59 So far: 2 passed, 0 failed, 0 warning, 0 aborted, 0 skipped, 0 info only Scan kernel log for errors and warnings. Running test #2: Kernel log error check. XXX XXX 59 So far: 2 passed, 0 failed, 0 warning, 0 aborted, 0 skipped, 0 info only Scan kernel log for errors and warnings. Running test #2: Kernel log error check. XXX XXX 60 So far: 2 passed, 0 failed, 0 warning, 0 aborted, 0 skipped, 0 info only Scan kernel log for errors and warnings. Running test #2: Kernel log error check. XXX XXX 61 So far: 2 passed, 0 failed, 0 warning, 0 aborted, 0 skipped, 0 info only Scan kernel log for errors and warnings. Running test #2: Kernel log error check. XXX XXX 61 So far: 2 passed, 0 failed, 0 warning, 0 aborted, 0 skipped, 0 info only Scan kernel log for errors and warnings. Running test #2: Kernel log error check. XXX XXX 62 So far: 2 passed, 0 failed, 0 warning, 0 aborted, 0 skipped, 0 info only Scan kernel log for errors and warnings. Running test #2: Kernel log error check. XXX XXX 63 So far: 2 passed, 0 failed, 0 warning, 0 aborted, 0 skipped, 0 info only Scan kernel log for errors and warnings. Running test #2: Kernel log error check. XXX XXX 63 So far: 2 passed, 0 failed, 0 warning, 0 aborted, 0 skipped, 0 info only Scan kernel log for errors and warnings. Running test #2: Kernel log error check. XXX XXX 64 So far: 2 passed, 0 failed, 0 warning, 0 aborted, 0 skipped, 0 info only Scan kernel log for errors and warnings. Running test #2: Kernel log error check. XXX XXX 65 So far: 2 passed, 0 failed, 0 warning, 0 aborted, 0 skipped, 0 info only Scan kernel log for errors and warnings. Running test #2: Kernel log error check. XXX XXX 65 So far: 2 passed, 0 failed, 0 warning, 0 aborted, 0 skipped, 0 info only Scan kernel log for errors and warnings. Running test #2: Kernel log error check. XXX XXX 66 So far: 2 passed, 0 failed, 0 warning, 0 aborted, 0 skipped, 0 info only Scan kernel log for errors and warnings. Running test #2: Kernel log error check. XXX XXX 67 So far: 2 passed, 0 failed, 0 warning, 0 aborted, 0 skipped, 0 info only Scan kernel log for errors and warnings. Running test #2: Kernel log error check. XXX XXX 67 So far: 2 passed, 0 failed, 0 warning, 0 aborted, 0 skipped, 0 info only Scan kernel log for errors and warnings. Running test #2: Kernel log error check. XXX XXX 68 So far: 2 passed, 0 failed, 0 warning, 0 aborted, 0 skipped, 0 info only Scan kernel log for errors and warnings. Running test #2: Kernel log error check. XXX XXX 69 So far: 2 passed, 0 failed, 0 warning, 0 aborted, 0 skipped, 0 info only Scan kernel log for errors and warnings. Running test #2: Kernel log error check. XXX XXX 70 So far: 2 passed, 0 failed, 0 warning, 0 aborted, 0 skipped, 0 info only Scan kernel log for errors and warnings. Running test #2: Kernel log error check. XXX XXX 70 So far: 2 passed, 0 failed, 0 warning, 0 aborted, 0 skipped, 0 info only Scan kernel log for errors and warnings. Running test #2: Kernel log error check. XXX XXX 71 So far: 2 passed, 0 failed, 0 warning, 0 aborted, 0 skipped, 0 info only Scan kernel log for errors and warnings. Running test #2: Kernel log error check. XXX XXX 72 So far: 2 passed, 0 failed, 0 warning, 0 aborted, 0 skipped, 0 info only Scan kernel log for errors and warnings. Running test #2: Kernel log error check. XXX XXX 72 So far: 2 passed, 0 failed, 0 warning, 0 aborted, 0 skipped, 0 info only Scan kernel log for errors and warnings. Running test #2: Kernel log error check. XXX XXX 73 So far: 2 passed, 0 failed, 0 warning, 0 aborted, 0 skipped, 0 info only Scan kernel log for errors and warnings. Running test #2: Kernel log error check. XXX XXX 74 So far: 2 passed, 0 failed, 0 warning, 0 aborted, 0 skipped, 0 info only Scan kernel log for errors and warnings. Running test #2: Kernel log error check. XXX XXX 74 So far: 2 passed, 0 failed, 0 warning, 0 aborted, 0 skipped, 0 info only Scan kernel log for errors and warnings. Running test #2: Kernel log error check. XXX XXX 100 So far: 2 passed, 0 failed, 0 warning, 0 aborted, 0 skipped, 0 info only Scan kernel log for errors and warnings. Running test #2: Kernel log error check. XXX XXX 100 So far: 2 passed, 0 failed, 0 warning, 0 aborted, 0 skipped, 0 info only Scan kernel log for errors and warnings. Running test #2: Kernel log error check. XXX fwts-test/arg-show-progress-dialog-0001/test-0001.sh000077500000000000000000000006771231470457100221340ustar00rootroot00000000000000#!/bin/bash # TEST="Test --show-progress-dialog option" NAME=test-0001.sh TMPLOG=$TMP/progress.log.$$ $FWTS -w 80 --show-progress-dialog -j $FWTSTESTDIR/../data --klog=$FWTSTESTDIR/arg-show-progress-dialog-0001/klog.txt oops klog > $TMPLOG diff $TMPLOG $FWTSTESTDIR/arg-show-progress-dialog-0001/progress-0001.log >> $FAILURE_LOG ret=$? if [ $ret -eq 0 ]; then echo PASSED: $TEST, $NAME else echo FAILED: $TEST, $NAME fi rm $TMPLOG exit $ret fwts-test/arg-show-progress-dialog-0001/test-0002.sh000077500000000000000000000006271231470457100221300ustar00rootroot00000000000000#!/bin/bash # TEST="Test -D option" NAME=test-0001.sh TMPLOG=$TMP/progress.log.$$ $FWTS -w 80 -D -j $FWTSTESTDIR/../data --klog=$FWTSTESTDIR/arg-show-progress-dialog-0001/klog.txt oops klog > $TMPLOG diff $TMPLOG $FWTSTESTDIR/arg-show-progress-dialog-0001/progress-0001.log >> $FAILURE_LOG ret=$? if [ $ret -eq 0 ]; then echo PASSED: $TEST, $NAME else echo FAILED: $TEST, $NAME fi rm $TMPLOG exit $ret fwts-test/arg-show-tests-0001/000077500000000000000000000000001231470457100162675ustar00rootroot00000000000000fwts-test/arg-show-tests-0001/arg-show-tests-0001.log000066400000000000000000000071641231470457100222470ustar00rootroot00000000000000Batch tests: acpiinfo General ACPI information test. acpitables ACPI table settings sanity tests. apicedge APIC edge/level test. apicinstance Test for single instance of APIC/MADT table. aspm PCIe ASPM test. autobrightness Automated LCD brightness test. bios32 BIOS32 Service Directory test. bios_info Gather BIOS DMI information. checksum ACPI table checksum test. cpufreq CPU frequency scaling tests. crs Test PCI host bridge configuration using _CRS. csm UEFI Compatibility Support Module test. cstates Processor C state support test. dmar DMA Remapping (VT-d) test. dmicheck DMI/SMBIOS table tests. ebda Test EBDA region is mapped and reserved in memory map table. fadt FADT SCI_EN enabled tests. fan Simple fan tests. hda_audio HDA Audio Pin Configuration test. hpet_check HPET configuration tests. klog Scan kernel log for errors and warnings. maxfreq Test max CPU frequencies against max scaling frequency. maxreadreq Test firmware has set PCI Express MaxReadReq to a higher value on non-motherboard devices. mcfg MCFG PCI Express* memory mapped config space test. method ACPI DSDT Method Semantic tests. microcode Test if system is using latest microcode. mpcheck MultiProcessor Tables tests. msr MSR register tests. mtrr MTRR tests. nx Test if CPU NX is disabled by the BIOS. oops Scan kernel log for Oopses. os2gap OS/2 memory hole test. osilinux Disassemble DSDT to check for _OSI("Linux"). pcc Processor Clocking Control (PCC) test. pciirq PCI IRQ Routing Table test. pnp BIOS Support Installation structure test. securebootcert UEFI secure boot test. syntaxcheck Re-assemble DSDT and find syntax errors and warnings. version Gather kernel system information. virt CPU Virtualisation Configuration test. wakealarm ACPI Wakealarm tests. wmi Extract and analyse Windows Management Instrumentation (WMI). Interactive tests: ac_adapter Interactive ac_adapter power test. battery Battery tests. brightness Interactive LCD brightness test. hotkey Hotkey scan code tests. lid Interactive lid button test. power_button Interactive power_button button test. Power States tests: s3 S3 suspend/resume test. s3power S3 power loss during suspend test (takes minimum of 10 minutes to run). s4 S4 hibernate/resume test. Utilities: acpidump Dump ACPI tables. cmosdump Dump CMOS Memory. crsdump Dump ACPI _CRS resources. ebdadump Dump EBDA region. gpedump Dump GPEs. memmapdump Dump system memory map. mpdump Dump MultiProcessor Data. plddump Dump ACPI _PLD (Physical Device Location). prsdump Dump ACPI _PRS resources. romdump Dump ROM data. uefidump Dump UEFI variables. uefivarinfo UEFI variable info query. Unsafe tests: uefirtmisc UEFI miscellaneous runtime service interface tests. uefirttime UEFI Runtime service time interface tests. uefirtvariable UEFI Runtime service variable interface tests. UEFI tests: csm UEFI Compatibility Support Module test. securebootcert UEFI secure boot test. uefirtmisc UEFI miscellaneous runtime service interface tests. uefirttime UEFI Runtime service time interface tests. uefirtvariable UEFI Runtime service variable interface tests. fwts-test/arg-show-tests-0001/test-0001.sh000077500000000000000000000007371231470457100201720ustar00rootroot00000000000000#!/bin/bash # TEST="Test -s option" NAME=test-0001.sh TMPLOG=$TMP/arg-show-tests.log.$$ # # Non-x86 tests don't have WMI so skip this test # $FWTS --show-tests | grep wmi > /dev/null if [ $? -eq 1 ]; then echo SKIP: $TEST, $NAME exit 77 fi stty cols 80 $FWTS -s > $TMPLOG diff $TMPLOG $FWTSTESTDIR/arg-show-tests-0001/arg-show-tests-0001.log >> $FAILURE_LOG ret=$? if [ $ret -eq 0 ]; then echo PASSED: $TEST, $NAME else echo FAILED: $TEST, $NAME fi rm $TMPLOG exit $ret fwts-test/arg-show-tests-0001/test-0002.sh000077500000000000000000000007511231470457100201670ustar00rootroot00000000000000#!/bin/bash # TEST="Test --show-tests option" NAME=test-0002.sh TMPLOG=$TMP/arg-show-tests.log.$$ # # Non-x86 tests don't have WMI so skip this test # $FWTS --show-tests | grep wmi > /dev/null if [ $? -eq 1 ]; then echo SKIP: $TEST, $NAME exit 77 fi stty cols 80 $FWTS -s > $TMPLOG diff $TMPLOG $FWTSTESTDIR/arg-show-tests-0001/arg-show-tests-0001.log >> $FAILURE_LOG ret=$? if [ $ret -eq 0 ]; then echo PASSED: $TEST, $NAME else echo FAILED: $TEST, $NAME fi rm $TMPLOG exit $ret fwts-test/arg-show-tests-full-0001/000077500000000000000000000000001231470457100172275ustar00rootroot00000000000000fwts-test/arg-show-tests-full-0001/arg-show-tests-full-0001.log000066400000000000000000000300311231470457100241340ustar00rootroot00000000000000Batch tests: acpiinfo (3 tests): Determine Kernel ACPI version. Determine machine's ACPI version. Determine AML compiler. acpitables (1 test): Test ACPI tables. apicedge (1 test): Legacy and PCI Interrupt Edge/Level trigger tests. apicinstance (1 test): Test for single instance of APIC/MADT table. aspm (2 tests): PCIe ASPM ACPI test. PCIe ASPM registers test. autobrightness (2 tests): Test for maximum and actual brightness. Change actual brightness. bios32 (1 test): BIOS32 Service Directory test. bios_info (1 test): Gather BIOS DMI information checksum (1 test): ACPI table checksum test. cpufreq (1 test): CPU P-State tests. crs (1 test): Test PCI host bridge configuration using _CRS. csm (1 test): UEFI Compatibility Support Module test. cstates (1 test): Test all CPUs C-states. dmar (1 test): DMA Remapping test. dmicheck (2 tests): Find and test SMBIOS Table Entry Point. Test DMI/SMBIOS tables for errors. ebda (1 test): Test EBDA is reserved in E820 table. fadt (2 tests): Test FADT SCI_EN bit is enabled. Test FADT reset register. fan (2 tests): Test fan status. Load system, check CPU fan status. hda_audio (1 test): HDA Audio Pin Configuration test. hpet_check (4 tests): Test HPET base in kernel log. Test HPET base in HPET table. Test HPET base in DSDT and/or SSDT. Test HPET configuration. klog (1 test): Kernel log error check. maxfreq (1 test): Maximum CPU frequency test. maxreadreq (1 test): Test firmware settings MaxReadReq for PCI Express devices. mcfg (2 tests): Validate MCFG table. Validate MCFG PCI config space. method (155 tests): Test Method Names. Test _AEI. Test _PIC (Inform AML of Interrupt Model). Test _CID (Compatible ID). Test _DDN (DOS Device Name). Test _HID (Hardware ID). Test _HRV (Hardware Revision Number). Test _PLD (Physical Device Location). Test _SUB (Subsystem ID). Test _SUN (Slot User Number). Test _STR (String). Test _UID (Unique ID). Test _CDM (Clock Domain). Test _CRS (Current Resource Settings). Test _DIS (Disable). Test _DMA (Direct Memory Access). Test _FIX (Fixed Register Resource Provider). Test _GSB (Global System Interrupt Base). Test _HPP (Hot Plug Parameters). Test _PRS (Possible Resource Settings). Test _PXM (Proximity). Test _EDL (Eject Device List). Test _EJD (Ejection Dependent Device). Test _EJ0 (Eject). Test _EJ1 (Eject). Test _EJ2 (Eject). Test _EJ3 (Eject). Test _EJ4 (Eject). Test _LCK (Lock). Test _RMV (Remove). Test _STA (Status). Test _BDN (BIOS Dock Name). Test _BBN (Base Bus Number). Test _DCK (Dock). Test _INI (Initialize). Test _SEG (Segment). Test _OFF (Set resource off). Test _ON (Set resource on). Test _DSW (Device Sleep Wake). Test _IRC (In Rush Current). Test _PRE (Power Resources for Enumeration). Test _PR0 (Power Resources for D0). Test _PR1 (Power Resources for D1). Test _PR2 (Power Resources for D2). Test _PR3 (Power Resources for D3). Test _PS0 (Power State 0). Test _PS1 (Power State 1). Test _PS2 (Power State 2). Test _PS3 (Power State 3). Test _PSC (Power State Current). Test _PSE (Power State for Enumeration). Test _PSW (Power State Wake). Test _S1D (S1 Device State). Test _S2D (S2 Device State). Test _S3D (S3 Device State). Test _S4D (S4 Device State). Test _S0W (S0 Device Wake State). Test _S1W (S1 Device Wake State). Test _S2W (S2 Device Wake State). Test _S3W (S3 Device Wake State). Test _S4W (S4 Device Wake State). Test _S0_ (S0 System State). Test _S1_ (S1 System State). Test _S2_ (S2 System State). Test _S3_ (S3 System State). Test _S4_ (S4 System State). Test _S5_ (S5 System State). Test _SWS (System Wake Source). Test _PSS (Performance Supported States). Test _CPC (Continuous Performance Control). Test _CSD (C State Dependencies). Test _CST (C States). Test _PCT (Performance Control). Test _PDL (P-State Depth Limit). Test _PPC (Performance Present Capabilities). Test _PPE (Polling for Platform Error). Test _TDL (T-State Depth Limit). Test _TPC (Throttling Present Capabilities). Test _TSD (Throttling State Dependencies). Test _TSS (Throttling Supported States). Test _MSG (Message). Test _ALC (Ambient Light Colour Chromaticity). Test _ALI (Ambient Light Illuminance). Test _ALT (Ambient Light Temperature). Test _ALP (Ambient Light Polling). Test _LID (Lid Status). Test _UPD (User Presence Detect). Test _UPP (User Presence Polling). Test _GCP (Get Capabilities). Test _GRT (Get Real Time). Test _GWS (Get Wake Status). Test _STP (Set Expired Timer Wake Policy). Test _STV (Set Timer Value). Test _TIP (Expired Timer Wake Policy). Test _TIV (Timer Values). Test _SBS (Smart Battery Subsystem). Test _BCT (Battery Charge Time). Test _BIF (Battery Information). Test _BIX (Battery Information Extended). Test _BMA (Battery Measurement Averaging). Test _BMC (Battery Maintenance Control). Test _BMD (Battery Maintenance Data). Test _BMS (Battery Measurement Sampling Time). Test _BST (Battery Status). Test _BTP (Battery Trip Point). Test _BTM (Battery Time). Test _PCL (Power Consumer List). Test _PIF (Power Source Information). Test _PSR (Power Source). Test _GAI (Get Averaging Level). Test _PMM (Power Meter Measurement). Test _FIF (Fan Information). Test _FSL (Fan Set Level). Test _FST (Fan Status). Test _ACx (Active Cooling). Test _CRT (Critical Trip Point). Test _DTI (Device Temperature Indication). Test _HOT (Hot Temperature). Test _NTT (Notification Temp Threshold). Test _PSV (Passive Temp). Test _RTV (Relative Temp Values). Test _SCP (Set Cooling Policy). Test _TC1 (Thermal Constant 1). Test _TC2 (Thermal Constant 2). Test _TMP (Thermal Zone Current Temp). Test _TPT (Trip Point Temperature). Test _TSP (Thermal Sampling Period). Test _TST (Temperature Sensor Threshold). Test _TZP (Thermal Zone Polling). Test _PTS (Prepare to Sleep). Test _TTS (Transition to State). Test _S0 (System S0 State). Test _S1 (System S1 State). Test _S2 (System S2 State). Test _S3 (System S3 State). Test _S4 (System S4 State). Test _S5 (System S5 State). Test _WAK (System Wake). Test _ADR (Return Unique ID for Device). Test _BCL (Query List of Brightness Control Levels Supported). Test _BCM (Set Brightness Level). Test _BQC (Brightness Query Current Level). Test _DCS (Return the Status of Output Device). Test _DDC (Return the EDID for this Device). Test _DSS (Device Set State). Test _DGS (Query Graphics State). Test _DOD (Enumerate All Devices Attached to Display Adapter). Test _DOS (Enable/Disable Output Switching). Test _GPD (Get POST Device). Test _ROM (Get ROM Data). Test _SPD (Set POST Device). Test _VPO (Video POST Options). Test _CBA (Configuration Base Address). Test _IFT (IPMI Interface Type). Test _SRV (IPMI Interface Revision). microcode (1 test): Test for most recent microcode being loaded. mpcheck (9 tests): Test MP header. Test MP CPU entries. Test MP Bus entries. Test MP IO APIC entries. Test MP IO Interrupt entries. Test MP Local Interrupt entries. Test MP System Address entries. Test MP Bus Hierarchy entries. Test MP Compatible Bus Address Space entries. msr (5 tests): Test CPU generic MSRs. Test CPU specific model MSRs. Test all P State Ratios. Test C1 and C3 autodemotion. Test SMRR MSR registers. mtrr (3 tests): Validate the kernel MTRR IOMEM setup. Validate the MTRR setup across all processors. Test for AMD MtrrFixDramModEn being cleared by the BIOS. nx (3 tests): Test CPU NX capability. Test all CPUs have same BIOS set NX flag. Test all CPUs have same msr setting in MSR 0x1a0. oops (1 test): Kernel log oops check. os2gap (1 test): Test the OS/2 15Mb memory hole is absent. osilinux (1 test): Disassemble DSDT to check for _OSI("Linux"). pcc (1 test): Processor Clocking Control (PCC) test. pciirq (1 test): PCI IRQ Routing Table test. pnp (1 test): PnP BIOS Support Installation structure test. securebootcert (1 test): UEFI secure boot test. syntaxcheck (2 tests): Disassemble and reassemble DSDT Disassemble and reassemble SSDT version (4 tests): Gather kernel signature. Gather kernel system information. Gather kernel boot command line. Gather ACPI driver version. virt (1 test): CPU Virtualisation Configuration test. wakealarm (4 tests): Test existence of RTC with alarm interface. Trigger wakealarm for 1 seconds in the future. Test if wakealarm is fired. Multiple wakealarm firing tests. wmi (1 test): Windows Management Instrumentation test. Interactive tests: ac_adapter (3 tests): Test ACPI ac_adapter state. Test ac_adapter initial on-line state. Test ac_adapter state changes. battery (1 test): Battery test. brightness (3 tests): Observe all brightness changes. Observe min, max brightness changes. Test brightness hotkeys. hotkey (1 test): Hotkey keypress checks. lid (3 tests): Test LID buttons report open correctly. Test LID buttons on a single open/close. Test LID buttons on multiple open/close events. power_button (1 test): Test press of power button and ACPI event. Power States tests: s3 (1 test): S3 suspend/resume test. s3power (1 test): S3 power loss during suspend test. s4 (1 test): S4 hibernate/resume test. Utilities: acpidump (1 test): Dump ACPI tables. cmosdump (1 test): Dump CMOS Memory. crsdump (1 test): Dump ACPI _CRS (Current Resource Settings). ebdadump (1 test): Dump EBDA region. gpedump (1 test): Dump GPEs. memmapdump (1 test): Dump system memory map. mpdump (1 test): Dump Multi Processor Data. plddump (1 test): Dump ACPI _PLD (Physical Device Location). prsdump (1 test): Dump ACPI _PRS (Possible Resource Settings). romdump (1 test): Dump ROM data. uefidump (1 test): Dump UEFI Variables. uefivarinfo (1 test): UEFI variable info query. Unsafe tests: uefirtmisc (2 tests): Test for UEFI miscellaneous runtime service interfaces. Stress test for UEFI miscellaneous runtime service interfaces. uefirttime (4 tests): Test UEFI RT service get time interface. Test UEFI RT service set time interface. Test UEFI RT service get wakeup time interface. Test UEFI RT service set wakeup time interface. uefirtvariable (7 tests): Test UEFI RT service get variable interface. Test UEFI RT service get next variable name interface. Test UEFI RT service set variable interface. Test UEFI RT service query variable info interface. Test UEFI RT service variable interface stress test. Test UEFI RT service set variable interface stress test. Test UEFI RT service query variable info interface stress test. UEFI tests: csm (1 test): UEFI Compatibility Support Module test. securebootcert (1 test): UEFI secure boot test. uefirtmisc (2 tests): Test for UEFI miscellaneous runtime service interfaces. Stress test for UEFI miscellaneous runtime service interfaces. uefirttime (4 tests): Test UEFI RT service get time interface. Test UEFI RT service set time interface. Test UEFI RT service get wakeup time interface. Test UEFI RT service set wakeup time interface. uefirtvariable (7 tests): Test UEFI RT service get variable interface. Test UEFI RT service get next variable name interface. Test UEFI RT service set variable interface. Test UEFI RT service query variable info interface. Test UEFI RT service variable interface stress test. Test UEFI RT service set variable interface stress test. Test UEFI RT service query variable info interface stress test. Total of 285 tests fwts-test/arg-show-tests-full-0001/test-0001.sh000077500000000000000000000010141231470457100211170ustar00rootroot00000000000000#!/bin/bash # TEST="Test --show-tests-full option" NAME=test-0001.sh TMPLOG=$TMP/arg-show-tests-full.log.$$ # # Non-x86 tests don't have WMI so skip this test # $FWTS --show-tests | grep wmi > /dev/null if [ $? -eq 1 ]; then echo SKIP: $TEST, $NAME exit 77 fi stty cols 80 $FWTS --show-tests-full > $TMPLOG diff $TMPLOG $FWTSTESTDIR/arg-show-tests-full-0001/arg-show-tests-full-0001.log >> $FAILURE_LOG ret=$? if [ $ret -eq 0 ]; then echo PASSED: $TEST, $NAME else echo FAILED: $TEST, $NAME fi rm $TMPLOG exit $ret fwts-test/arg-table-path-0001/000077500000000000000000000000001231470457100161705ustar00rootroot00000000000000fwts-test/arg-table-path-0001/APIC1.dat000066400000000000000000000001501231470457100174530ustar00rootroot00000000000000APIChÌINTEL CRESTLNELOHRZàþ Àþ  fwts-test/arg-table-path-0001/APIC2.dat000066400000000000000000000001501231470457100174540ustar00rootroot00000000000000APIChPTLTD APIC  LTPàþ Àþ  fwts-test/arg-table-path-0001/BOOT.dat000066400000000000000000000000501231470457100174200ustar00rootroot00000000000000BOOT(¥PTLTD $SBFTBL$ LTP6fwts-test/arg-table-path-0001/DSDT.dat000066400000000000000000000577641231470457100174430ustar00rootroot00000000000000DSDTô_TOSCPLCRESTLNEINTL Z000Z001 Z002 Z003 Z004Z005 Z006 Z007 Z008 ECDY [MUTX[€PRT0 € [ PRT0P80H NP8XH  “hp}{P80D ÿÿÿiP80D “hp}{P80D ÿÿÿyi P80D “h p}{P80D ÿÿÿyi P80D “h p}{P80D ÿÿÿyi P80DpP80DP80H _PICphGPICF_PTSpP80DP8XHh “h p\/_SB_PCI0LPCBEC0_S3LD 3“h p\/_SB_PCI0LPCBEC0_S3LD\/_SB_PCI0LPCBPHSS L_WAKP8XH « 0‘“h “h  %{CFGD  {CFGD ð“OSYS ÑTRAP = “RP1D†\/_SB_PCI0RP01 “RP2D†\/_SB_PCI0RP02 “RP3D†\/_SB_PCI0RP03 “RP4D†\/_SB_PCI0RP04 “RP5D†\/_SB_PCI0RP05 “RP6D†\/_SB_PCI0RP06 “h P8XH 0TRAP F C “h P8XH @\/_SB_PCI0LPCBPHSS pWAKF`pWAKF{` ` “`P8XH A†\._SB_PWRB  FDTSETRAP G B\/_SB_PCI0LPCBECOK“ECDY '’•DTS1DTS2pDTS1\/_SB_PCI0LPCBEC0_SKTA¡pDTS2\/_SB_PCI0LPCBEC0_SKTA¡\/_SB_PCI0LPCBPHSS \._PR_RPPC¤GETB wh `wi a[j`aTBF3¤TBF3B PNOT JMPEN 1{PDC0 †\._PR_CPU0 € {PDC0 [" d†\._PR_CPU0  1{PDC1 †\._PR_CPU1 € {PDC1 [" d†\._PR_CPU1 ¡†\._PR_CPU0 €[" d†\._PR_CPU0 TRAP phSMIFpTRP0¤SMIFA_SB_J_INIp ™™MARK DTSETRAP G^/PCI0LPCBPHSS p ÐOSYS J [_OSI` _OSI LinuxpLINXpECDY _OSI Windows 2001p ÑOSYS _OSI Windows 2001 SP1p ÑOSYS _OSI Windows 2001 SP2p ÒOSYS _OSI Windows 2006p ÖOSYS MPEN“OSYS ÑTRAP =TRAP +[€GNVS ¼-n¿ [E$GNVSOSYSSMIFPRM0PRM1SCIFPRM2PRM3LCKFPRM4PRM5P80D LIDSPWRSDBGSLINXACT1ACTTPSVTTC1VTC2VTSPVCRTTDTSEDTS1DTS2@APICMPENPCP0PCP1PPCM(CMAPCMBPLPTPFDCP0IGDSTLSTCADLPADLCSTENSTESSTENDIDDID1 DID2 DID3 DID4 DID5 @BLCSBRTLALSEALAFLLOWLHIHEMAEEMAPEMALMEFETPMPTPME@GTF08GTF28IDEMGTF18@ ASLB IBTTIPATITVFITVMIPSCIBLCIBIAISSCI409I509I609I709IDMMIDMSIF1EHVCONXD1 NXD2 MARKBRADBTENVVENBGTLTMEESCU0SCU1SCU2SCU3XKSPXKINXKIDXKOKBGU1BST1BFC1WKLNWAKFDSMDBAYSHAPEDTSMODT1ODT2DTSWDSENECONGPICCTYPL01CVFN0VFN1J|_GPEF5_L01rL01CL01CP8XHP8XHL01C H“RP1D\/_SB_PCI0RP01HPSX[" d @\/_SB_PCI0RP01PDCXp\/_SB_PCI0RP01PDCXp\/_SB_PCI0RP01HPSX†\/_SB_PCI0RP01¡p\/_SB_PCI0RP01HPSX H“RP2D\/_SB_PCI0RP02HPSX[" d @\/_SB_PCI0RP02PDCXp\/_SB_PCI0RP02PDCXp\/_SB_PCI0RP02HPSX†\/_SB_PCI0RP02¡p\/_SB_PCI0RP02HPSX H“RP3D\/_SB_PCI0RP03HPSX[" d @\/_SB_PCI0RP03PDCXp\/_SB_PCI0RP03PDCXp\/_SB_PCI0RP03HPSX†\/_SB_PCI0RP03¡p\/_SB_PCI0RP03HPSX H“RP4D\/_SB_PCI0RP04HPSX[" d @\/_SB_PCI0RP04PDCXp\/_SB_PCI0RP04PDCXp\/_SB_PCI0RP04HPSX†\/_SB_PCI0RP04¡p\/_SB_PCI0RP04HPSX H“RP5D\/_SB_PCI0RP05HPSX[" d @\/_SB_PCI0RP05PDCXp\/_SB_PCI0RP05PDCXp\/_SB_PCI0RP05HPSX†\/_SB_PCI0RP05¡p\/_SB_PCI0RP05HPSX H“RP6D\/_SB_PCI0RP06HPSX[" d @\/_SB_PCI0RP06PDCXp\/_SB_PCI0RP06PDCXp\/_SB_PCI0RP06HPSX†\/_SB_PCI0RP06¡p\/_SB_PCI0RP06HPSXB _L02pGPEC M \/_SB_PCI0LPCBECOK N“DTSW '’•DTS1DTS2pDTS1\/_SB_PCI0LPCBEC0_SKTA¡pDTS2\/_SB_PCI0LPCBEC0_SKTA¡H '’•ODT1ODT2pODT1\/_SB_PCI0LPCBEC0_SKTA¡pODT2\/_SB_PCI0LPCBEC0_SKTA¡\/_SB_PCI0LPCBPHSS _L03†\/_SB_PCI0USB1 _L04†\/_SB_PCI0USB2 _L05†\/_SB_PCI0USB5 6_L06 '\/_SB_PCI0GFX0GSSE\/_SB_PCI0GFX0GSCI¡pSCISC_L09 A\/_SB_PCI0RP01PSPXp\/_SB_PCI0RP01PSPXp\/_SB_PCI0RP01PMSX†\/_SB_PCI0RP01  A\/_SB_PCI0RP02PSPXp\/_SB_PCI0RP02PSPXp\/_SB_PCI0RP02PMSX†\/_SB_PCI0RP02  A\/_SB_PCI0RP03PSPXp\/_SB_PCI0RP03PSPXp\/_SB_PCI0RP03PMSX†\/_SB_PCI0RP03  A\/_SB_PCI0RP04PSPXp\/_SB_PCI0RP04PSPXp\/_SB_PCI0RP04PMSX†\/_SB_PCI0RP04  A\/_SB_PCI0RP05PSPXp\/_SB_PCI0RP05PSPXp\/_SB_PCI0RP05PMSX†\/_SB_PCI0RP05  A\/_SB_PCI0RP06PSPXp\/_SB_PCI0RP06PSPXp\/_SB_PCI0RP06PMSX†\/_SB_PCI0RP06 _L0B†\/_SB_PCI0PCIB _L0C†\/_SB_PCI0USB3 K _L0D ;\/_SB_PCI0EHC1PMESp\/_SB_PCI0EHC1PMES†\/_SB_PCI0EHC1  ;\/_SB_PCI0EHC2PMESp\/_SB_PCI0EHC2PMES†\/_SB_PCI0EHC2  ;\/_SB_PCI0HDEFPMESp\/_SB_PCI0HDEFPMES†\/_SB_PCI0HDEF _L0E†\/_SB_PCI0USB4 _L1B€LPOLLPOL†\._SB_LID0 €F _PR_[ƒ CPU0[ƒ CPU1E RPPC M“OSYS Ò B{CFGD B”^.CPU0_PPCt^.CPU0_PPC^.CPU0_PPCPNOTr^.CPU0_PPC^.CPU0_PPCPNOT¡5r^.CPU0_PPC^.CPU0_PPCPNOTt^.CPU0_PPC^.CPU0_PPCPNOTFWSO FWSO_PSC_PS0p_PSC`p_PSC _PS3p _PSCŒû_SB_[‚O>AMW0_HID pnp0c14_UID_WDG? <§….SÐ_IúJÖ.j†AC;mCqÝûrL¼¸C[þ dùBC!fÕѲð É)BASTAC WQACp MXMTCConfigData[1¤STACSTBC 4WQBCp Get MXMTCControlData: STBC = [1pSTBC[1¤STBCGWSBCpiSTBCp Set MXMTCControlData: STBC = [1pSTBC[1 0“^^/PCI0LPCBECOKpƒˆSTBC^^/PCI0LPCBEC0_SKTCWQBAC+ ®FOMBžÀ DS}ÚT(Ù…B KaÉ!R<”CˆWD„¼ °)À$ˆú÷‡( %B˜ [€a¶˜à’J§–!¡” ð-@;¢$ ° #‚¡qhì0,Lƒ8Œ²‘E`ÜNÈ L€xTa4EàBcd@È£«£Ð¤ؽe, 'ÀšcH2(@›[ BÔŠFpQjFH¬…4F°†7F˜ˆÑþ H ãf‘Fƒk‚c÷hN¸sÒç&£;¸:M†Ç°Ø)ïPÓ?x&5D:Ü û‘0ˆ³;n¬ÃÉhÐ¥ 0{ÐМö™„~8Ÿž!‰üA Fæÿ?´ÇxZ1C>  ¡Mj<@@áÑ@ož¯ F†“ñ àA×:2'¦!Ïè"¿2x AùÄ`¸ÇxðY@’!Qã§G~zx“0(Ò™ùáÂÄ{Ÿ;Á){¤à°~ À¯ |®Œªý @íQàT#-xŠJÌP8…ÐçsG%ö!Úá9NÁ÷‹#=­#x‘ð0áÎ(¨80ôÿLÜz;¦€>À1Püÿ?¦‡¨Çô@ |.¡ ÿ–Áއtj(€)yGPŒÖñ<› "O€ÎÿÿxX¸š¼’„}x‰ãAâµäÁ$F˜'GÀ·‚(‘Ž>ăI(c>£„‰ùp"ï'F s*',Äñ …âã :,„þÿÇÜáÁ§ ü… Æù0$ð|ÊÛæ€ŒÚô©Ñ¨Uƒ25Ê4¨Õ§RcÆLœR¼lßòž ± 8ÌóB –¢„…¡B©☠4’ öÿ[‚LID0_HID AÐ  _LID¤LPOL[‚PWRB_HID AÐ [‚„¹PCI0 _S3D¤  _S4D¤ _HID AÐ _CID AÐ [‚CMCHC_ADR[€HBUS @ À[J HBUSEPEN EPBR MHEN MHBR@ PXENPXSZPXBR DIEN DIBR IPEN IPBR@PM0HPM1LPM1HPM2LPM2HPM3LPM3HPM4LPM4HPM5LPM5HPM6LPM6HHENA@TUUD@TLUD BUF0M ˆ  ÿ‡ ÷ ø Gø ø ‡  ÿÿó‡  ÿÿ ‡  ÿ? @‡ @ ÿ @‡ € ÿ¿ @‡ À ÿÿ @‡  ÿ? @‡ @ ÿ @‡ € ÿ¿ @‡ À ÿÿ @‡ ÿ?@‡ @ÿ@‡ €ÿ¿@‡ Àÿÿ@‡ ÿÿ‡ ÿÿÿ߇ ðÿÿ¿þÀ‡ ÔþÿOÔþyK=_CRS ^.MCHCPM1LŠBUF0 |C0LNpC0LN “^.MCHCPM1LBUF0 XC0RWpC0RW ^.MCHCPM1HŠBUF0 –C4LNpC4LN “^.MCHCPM1HBUF0 (C4RWpC4RW ^.MCHCPM2LŠBUF0 °C8LNpC8LN “^.MCHCPM2LBUF0 øC8RWpC8RW ^.MCHCPM2HŠBUF0 ÊCCLNpCCLN “^.MCHCPM2HBUF0 ÈCCRWpCCRW ^.MCHCPM3LŠBUF0 äD0LNpD0LN “^.MCHCPM3LBUF0 ˜D0RWpD0RW ^.MCHCPM3HŠBUF0 þD4LNpD4LN “^.MCHCPM3HBUF0 hD4RWpD4RW ^.MCHCPM4LŠBUF0 D8LNpD8LN “^.MCHCPM4LBUF0 8D8RWpD8RW ^.MCHCPM4HŠBUF0 2DCLNpDCLN “^.MCHCPM4HBUF0  DCRWpDCRW ^.MCHCPM5LŠBUF0 LE0LNpE0LN “^.MCHCPM5LBUF0 Ø E0RWpE0RW ^.MCHCPM5HŠBUF0 fE4LNpE4LN “^.MCHCPM5HBUF0 ¨ E4RWpE4RW ^.MCHCPM6LŠBUF0 €E8LNpE8LN “^.MCHCPM6LBUF0 x E8RWpE8RW ^.MCHCPM6HŠBUF0 šECLNpECLN “^.MCHCPM6HBUF0 H ECRWpECRW ^.MCHCPM0HŠBUF0 ´F0LNpF0LN “^.MCHCPM0HBUF0  F0RWpF0RWŠBUF0 ÂM1MNŠBUF0 ÆM1MXŠBUF0 ÎM1LNŠBUF0 ÜM2MNŠBUF0 àM2MXŠBUF0 èM2LNy^.MCHCPXBR M1MXz ^.MCHCPXSZ`rM1MX`M2MNrtM2MXM2MNM2LNtM1MXM1MXy^.MCHCTLUD M1MNrtM1MXM1MNM1LN¤BUF0G(_PRT EGPIC¤M  ÿÿ   ÿÿ   ÿÿ   ÿÿ   ÿÿ   ÿÿ   ÿÿ    ÿÿ   ÿÿ   ÿÿ   ÿÿ    ÿÿ    ÿÿ   ÿÿ   ÿÿ    ÿÿ   ÿÿ   ÿÿ    ÿÿ  ¡I¤E ÿÿ^.LPCBLNKA ÿÿ^.LPCBLNKA ÿÿ^.LPCBLNKA ÿÿ^.LPCBLNKE ÿÿ^.LPCBLNKA ÿÿ^.LPCBLNKF ÿÿ ^.LPCBLNKC ÿÿ^.LPCBLNKG ÿÿ^.LPCBLNKB ÿÿ^.LPCBLNKA ÿÿ ^.LPCBLNKC ÿÿ ^.LPCBLNKD ÿÿ^.LPCBLNKH ÿÿ^.LPCBLNKD ÿÿ ^.LPCBLNKC ÿÿ^.LPCBLNKD ÿÿ^.LPCBLNKD ÿÿ ^.LPCBLNKD ÿÿ ^.LPCBLNKA[‚@PDRC_HID AÐ _UIDBUF0F b† @† @† † † † Òþ† ÔþP† PÔþ°yM _CRSŠBUF0 RBR0y^^.LPCBRCBA RBR0ŠBUF0 MBR0y^^.MCHCMHBR MBR0ŠBUF0 DBR0y^^.MCHCDIBR DBR0ŠBUF0 (EBR0y^^.MCHCEPBR EBR0ŠBUF0 4XBR0y^^.MCHCPXBR XBR0ŠBUF0 8XSZ0z ^^.MCHCPXSZXSZ0¤BUF0[‚MPPEGP_ADR A _PRT 3GPIC¤,  ÿÿ   ÿÿ   ÿÿ    ÿÿ  ¡E¤A ÿÿ^^.LPCBLNKA ÿÿ^^.LPCBLNKB ÿÿ ^^.LPCBLNKC ÿÿ ^^.LPCBLNKD[‚IFVGA__ADRSWITCRTALCDATVAAVLDF[€VIDS È[ VIDSVDID  _STA¤ _PSC _PS0p_PSC _PS1p_PSC _PS3p _PSC_DOSp{h SWIT_DOD¤   [‚MCRT_ _ADR¤ A_DCS^^^^.LPCBPHSS pCADL`pCSTEa{` `{a a `pCRTA¡pCRTA CRTA “a ¤ ¡¤ ¡ “a ¤ ¡¤ _DGS CRTA¤¡¤_DSS[‚GLCD_ _ADR¤ M_DCS^^^^.LPCBPHSS pCADL`pCSTEa{``{aa `pLCDA¡pLCDA LCDA “a¤ ¡¤ ¡ “a¤ ¡¤ _DGS LCDA¤¡¤_DSS_BCL¤ F (   ( 2 < F _BCMxh `apa^^^^/LPCBEC0_BRTS_BQCw^^^^/LPCBEC0_BRTS `¤`[‚MTV__ _ADR¤ A_DCS^^^^.LPCBPHSS pCADL`pCSTEa{` `{a a `pTVAA¡pTVAA TVAA “a ¤ ¡¤ ¡ “a ¤ ¡¤ _DGS TVAA¤¡¤_DSSIDSSW J“SWIT^^^.LPCBPHSS pCADL`pCSTEa ”a{`aVLDF{VLDF þVLDF C VLDF '“`   “a STBL   “aSTBL   “a STBL (“`   “a STBL   “a STBL  “a STBL  K“`   “a STBL   “a STBL   “aSTBL   “a STBL   “a STBL  “a STBL¡ pVLDFSTBL¡ “SWIT^^^.LPCBPHSSE STBL “hpCRTApLCDApTVAA “h pCRTApLCDApTVAA “h pCRTApLCDApTVAA “h pCRTApLCDApTVAA “h pCRTApLCDApTVAA “h pCRTApLCDApTVAA “h pCRTApLCDApTVAA†VGA_ €[‚BøGFX0_ADR _DOSp{h DSENA&_DODpNDID ’“DIDLpSDDLDID1DID1 ’“DDL2pSDDLDID2DID2 ’“DDL3pSDDLDID3DID3 ’“DDL4pSDDLDID4DID4 ’“DDL5pSDDLDID5DID5 ,“NDIDTMP1 ÿÿÿÿp} DID1ˆTMP1¤TMP1 F“NDID TMP2  ÿÿÿÿ ÿÿÿÿp} DID1ˆTMP2p} DID2ˆTMP2¤TMP2 O“NDID TMP3 ÿÿÿÿ ÿÿÿÿ ÿÿÿÿp} DID1ˆTMP3p} DID2ˆTMP3p} DID3ˆTMP3 ¤TMP3 H“NDID TMP4 ÿÿÿÿ ÿÿÿÿ ÿÿÿÿ ÿÿÿÿp} DID1ˆTMP4p} DID2ˆTMP4p} DID3ˆTMP4 p} DID4ˆTMP4 ¤TMP4 A ”NDID TMP5 ÿÿÿÿ ÿÿÿÿ ÿÿÿÿ ÿÿÿÿ ÿÿÿÿp} DID1ˆTMP5p} DID2ˆTMP5p} DID3ˆTMP5 p} DID4ˆTMP5 p} DID4ˆTMP5 ¤TMP5¤ [‚CDD01_ADR  “DID1¤¡ ¤{ ÿÿDID1_DCS¤CDDSDID1_DGS¤NDDSDID1_DSS “{h À ÀpNSTECSTE[‚DDD02_ADR  “DID2¤ ¡ ¤{ ÿÿDID2_DCS¤CDDSDID2_DGS¤NDDSDID2_DSS “{h À ÀpNSTECSTE[‚ADD03_ADR  “DID3¤ ¡ ¤{ ÿÿDID3_DCS  “DID3¤ ¡ ¤CDDSDID3_DGS¤NDDSDID3_DSS “{h À ÀpNSTECSTE[‚ADD04_ADR  “DID4¤ ¡ ¤{ ÿÿDID4_DCS  “DID4¤ ¡ ¤CDDSDID4_DGS¤NDDSDID4_DSS “{h À ÀpNSTECSTE[‚ADD05_ADR  “DID5¤ ¡ ¤{ ÿÿDID5_DCS  “DID5¤ ¡ ¤CDDSDID5_DGS¤NDDSDID5_DSS “{h À ÀpNSTECSTENSDDLuNDIDp{h `} €`a  “DIDL`¤a  “DDL2`¤a  “DDL3`¤a  “DDL4`¤a  “DDL5`¤a  “DDL6`¤a  “DDL7`¤a  “DDL8`¤a¤JCDDS “CADL{h ¤  “CAL2{h ¤  “CAL3{h ¤  “CAL4{h ¤  “CAL5{h ¤  “CAL6{h ¤  “CAL7{h ¤  “CAL8{h ¤ ¤ ANDDS “NADL{h ¤ “NDL2{h ¤ “NDL3{h ¤ “NDL4{h ¤ “NDL5{h ¤ “NDL6{h ¤ “NDL7{h ¤ “NDL8{h ¤¤@BRTN  “{DID1  †DD01h “{DID2  †DD02h “{DID3  †DD03h “{DID4  †DD04h “{DID5  †DD05h$^^PCI0[€MCHP @ À[MCHP@0TASM [€IGDP @ À[EIGDP@ GIVDGUMA GMFN@FASLEGSSEGSSBGSES0CDVLLBPC0ASLS [€IGDMASLB [NIGDMSIGN@SIZE OVER SVER@VVER@GVER@MBOX @RDRDY CSTS CEVT @ DIDL DDL2 DDL3 DDL4 DDL5 DDL6 DDL7 DDL8 CPDL CPL2 CPL3 CPL4 CPL5 CPL6 CPL7 CPL8 CADL CAL2 CAL3 CAL4 CAL5 CAL6 CAL7 CAL8 NADL NDL2 NDL3 NDL4 NDL5 NDL6 NDL7 NDL8 ASLP TIDX CHPD CLID CDCK SXSW EVTS CNOT NRDY @SCIEGEFCGXFCGESFPARM DSLP @zARDY ASLC TCHE ALSI BCLP PFIT CBLV BCLM@CPFM @\GVD1€DBTB2  8 À  ? Ç  ø 8 À p p 8p Àq ~CDCT#  È @   È M   Þ M }SUCCNVLD CRIT NCRT LJGSCIDGBDA “GESFp yPARMpGESF¤SUCC “GESFp @PARMpGESF¤SUCC G“GESF {PARM ÿïPARM{PARMyƒˆDBTBIBTT PARM}IBTTPARMPARMpGESF¤SUCC J“GESF pIPSCPARM}PARMyIPAT PARMrPARM PARM}PARMyLIDS PARMrPARM PARM}PARMyIBIA PARMpGESF¤SUCC -“GESF pITVFPARM}PARMyITVM PARMpGESF¤SUCC O“GESF pGIVDPARMPARMPARM}PARMyGMFNPARM}PARM PARM IDMM}PARMyIDMS PARM¡}PARMyIDMS PARM}yƒˆƒˆCDCTHVCOtCDVL PARMPARMpGESF¤SUCC *“GESF pPARM ISSC}PARM PARMpGESF¤SUCCpGESF¤CRITA(SBCB  “GESFpPARMp }÷PARMpGESF¤SUCC “GESFpGESFpPARM¤SUCC “GESF pGESFpPARM¤SUCC “GESF pGESFpPARM¤SUCC “GESF pGESFpPARM¤SUCC 7“GESF p{PARM ITVFpz{PARM ð ITVMpGESFpPARM¤SUCC “GESF pGESFpPARM¤SUCC “GESF pGESFpPARM¤SUCC $“GESF {PARM ÿIBTTpGESFpPARM¤SUCC F“GESF {PARM ÿIPSC !{zPARM  ÿ{zPARM  ÿIPATvIPAT{zPARM  IBIApGESFpPARM¤SUCC @“GESF {zPARMIF1E !{PARM à{zPARM IDMSpIDMM¡{zPARM  IDMSpIDMMpGESFpPARM¤SUCC “GESF pGESFpPARM¤SUCC “GESF }PARM PARMpGESF¤SUCC I“GESF  &{PARM “zPARMpISSC¡ pGESF¤CRIT¡pISSCpGESFpPARM¤SUCC “GESF pGESFpPARM¤SUCCpGESF¤SUCC “GEFC pGBDAGXFC “GEFC pSBCBGXFCpGEFCpSCISpGSSEpSCIE¤PDRD  ’DRDY["ASLP¤’DRDYPSTS ”CSTS ["ASLP¤“CSTS GGNOT PDRD¤ PSTS¤phCEVTp CSTS ,“CHPD“i ‘”OSYS ЕOSYS Ö†PCI0i¡†GFX0i†GFX0 €  ’PSTSpCEVT¤GHDSphTIDX¤GNOTGLIDphCLID¤GNOT GDCKphCDCK¤GNOT  €PARD  ’ARDY["ASLP¤’ARDYF AINT ’{TCHEyh¤ PARD¤ L“h  3CPFM “CPFMp PFIT “CPFM p PFIT “CPFM pPFIT¡ PFIT PFIT}PFIT €PFITp ASLC¡B (“hpxwi ÿ dBCLP}BCLP €BCLPp ASLC¡ “hpiALSIpASLC¡¤pLBPC¤A6\[€IO_T  [IO_T@TRP0[€PMIO  €[(PMIO@ACPWE GPECN SCIS[€GPIO € <[@ GPIOGU00GU01GU02GU03GIO0GIO1GIO2GIO3 GL00GL01GL02GP27GP28@GB00GB01GB02GB03@GIV0LPOLGIV2GIV3GU04GU05GU06GU07GIO4GIO5GIO6GIO7GP37GL05GL06GL07[€RCRB ÀÑþ @[HRCRB€€€HPASHPAEH PATDSATDSMBDHDAD RP1DRP2DRP3DRP4DRP5DRP6D_S0__S3_  _S4_  _S5_  EGETP  “{h ¤ ÿÿÿÿ  “{h ¤ „z{h  `z{h 0 a¤w t r`a0GDMA  #h il¤  jl¤wt k ¤wt k ¤ ÿÿÿÿGETT ¤w t r{zh  {h DGETF TMPF  h}TMPFTMPF {j }TMPF TMPF  i}TMPF TMPF {j }TMPF TMPF {j @}TMPF TMPF¤TMPF=SETP  ”h 𤠡- '{i  ’”h x{j ¤ # ’”h ´{j¤ !¤ 7SDMA  ’”h ¤  ’”h ¤  ’”h -¤  ’”h <¤  ’”h Z¤¤/SETT  %{i  ’”h x{j ¤  ’”h ´{j¤ ¤ [‚KHDEF_ADR [€HDAR L ["HDARDCKADCKMDCKS0PMES_PRW [‚ARP01_ADR [€PXCS @ À[EPXCS@@ LASX2ABPXPDCXPDSXLSCX'PSPXO<HPSXPMSX[‚ PXSX_ADRA _PRT 3GPIC¤,  ÿÿ   ÿÿ   ÿÿ    ÿÿ  ¡E¤A ÿÿ^^.LPCBLNKA ÿÿ^^.LPCBLNKB ÿÿ ^^.LPCBLNKC ÿÿ ^^.LPCBLNKD[‚ARP02_ADR [€PXCS @ À[EPXCS@@ LASX2ABPXPDCXPDSXLSCX'PSPXO<HPSXPMSX[‚ PXSX_ADRA _PRT 3GPIC¤,  ÿÿ   ÿÿ   ÿÿ    ÿÿ  ¡E¤A ÿÿ^^.LPCBLNKB ÿÿ^^.LPCBLNKC ÿÿ ^^.LPCBLNKD ÿÿ ^^.LPCBLNKA[‚MRP03_ADR [€PXCS @ À[EPXCS@@ LASX2ABPXPDCXPDSXLSCX'PSPXO<HPSXPMSX[‚ PXSX_ADR.PXSX_RMV.PXSX_PRW A _PRT 3GPIC¤,  ÿÿ   ÿÿ   ÿÿ    ÿÿ  ¡E¤A ÿÿ^^.LPCBLNKC ÿÿ^^.LPCBLNKD ÿÿ ^^.LPCBLNKA ÿÿ ^^.LPCBLNKB[‚ORP04_ADR [€PXCS @ À[EPXCS@@ LASX2ABPXPDCXPDSXLSCX'PSPXO<HPSXPMSX[‚)PXSX_ADR_PRW  WKLN¤ ¡¤ A _PRT 3GPIC¤,  ÿÿ   ÿÿ   ÿÿ    ÿÿ  ¡E¤A ÿÿ^^.LPCBLNKD ÿÿ^^.LPCBLNKA ÿÿ ^^.LPCBLNKB ÿÿ ^^.LPCBLNKC[‚ARP05_ADR [€PXCS @ À[EPXCS@@ LASX2ABPXPDCXPDSXLSCX'PSPXO<HPSXPMSX[‚ PXSX_ADRA _PRT 3GPIC¤,  ÿÿ   ÿÿ   ÿÿ    ÿÿ  ¡E¤A ÿÿ^^.LPCBLNKA ÿÿ^^.LPCBLNKB ÿÿ ^^.LPCBLNKC ÿÿ ^^.LPCBLNKD[‚ARP06_ADR [€PXCS @ À[EPXCS@@ LASX2ABPXPDCXPDSXLSCX'PSPXO<HPSXPMSX[‚ PXSX_ADRA _PRT 3GPIC¤,  ÿÿ   ÿÿ   ÿÿ    ÿÿ  ¡E¤A ÿÿ^^.LPCBLNKB ÿÿ^^.LPCBLNKC ÿÿ ^^.LPCBLNKD ÿÿ ^^.LPCBLNKA[‚MUSB1_ADR [€U1CS Ä [ U1CSU1EN_PRW  $_PSW hpACPW  ACPWp U1EN¡pU1EN _S3D¤  _S4D¤ [‚LUSB2_ADR [€U2CS Ä [ U2CSU2EN_PRW  #_PSW hpACPW  ACPWpU2EN¡pU2EN _S3D¤  _S4D¤ [‚MUSB3_ADR [€U2CS Ä [ U2CSU3EN_PRW $_PSW hpACPW  ACPWp U3EN¡pU3EN _S3D¤  _S4D¤ [‚MUSB4_ADR [€U4CS Ä [ U4CSU4EN_PRW  $_PSW hpACPW  ACPWp U4EN¡pU4EN _S3D¤  _S4D¤ [‚AUSB5_ADR [€U5CS Ä [ U5CSU5EN$_PSW hpACPW  ACPWp U5EN¡pU5EN _S3D¤  _S4D¤ [‚K EHC1_ADR [€U7CS T [ U7CSPMES[‚OHUB7_ADR[‚ PRT1_ADR[‚ PRT2_ADR [‚ PRT3_ADR [‚ PRT4_ADR [‚ PRT5_ADR [‚ PRT6_ADR _PRW  _S3D¤  _S4D¤ [‚OEHC2_ADR [€UFCS T [ UFCSPMES[‚CHUB7_ADR[‚ PRT1_ADR[‚ PRT2_ADR [‚ PRT3_ADR [‚ PRT4_ADR _PRW  _S3D¤  _S4D¤ [‚JPCIB_ADR I_PRT !GPIC¤  ÿÿ   ÿÿ ¡/¤, ÿÿ^^.LPCBLNKG ÿÿ^^.LPCBLNKH[‚.LPCB_ADR [€LPC0 @ À[MLPC0@PARCPBRCPCRCPDRC PERCPFRCPGRCPHRC@ CMARCMBRLPTRCMADCMBDLPTDFDDD,IOR2LGRMH2RAEN RCBA[€SMI0 þ [ SMI0SMIC[€SMI1 ½.n¿ [SMI1BCMDDID_ INFO@@[SMI1(INF_INF1 [PSMX'PHSS[#PSMXÿÿp €BCMDphDID_pSMIC['PSMX[‚A LNKA_HID AÐ _UID _DISp €PARC_PRS #úÔy8_CRSRTLA #y‹RTLAIRQ0pIRQ0y{PARC IRQ0¤RTLA_SRS ‹hIRQ0‚IRQ0`v`p`PARC_STA  {PARC €¤ ¡¤ [‚B LNKB_HID AÐ _UID  _DISp €PBRC_PRS #úØy8_CRSRTLB #y‹RTLBIRQ0pIRQ0y{PBRC IRQ0¤RTLB_SRS ‹hIRQ0‚IRQ0`v`p`PBRC_STA  {PBRC €¤ ¡¤ [‚B LNKC_HID AÐ _UID  _DISp €PCRC_PRS #úÔy8_CRSRTLC #y‹RTLCIRQ0pIRQ0y{PCRC IRQ0¤RTLC_SRS ‹hIRQ0‚IRQ0`v`p`PCRC_STA  {PCRC €¤ ¡¤ [‚B LNKD_HID AÐ _UID  _DISp €PDRC_PRS #úØy8_CRSRTLD #y‹RTLDIRQ0pIRQ0y{PDRC IRQ0¤RTLD_SRS ‹hIRQ0‚IRQ0`v`p`PDRC_STA  {PDRC €¤ ¡¤ [‚B LNKE_HID AÐ _UID  _DISp €PERC_PRS #úÔy8_CRSRTLE #y‹RTLEIRQ0pIRQ0y{PERC IRQ0¤RTLE_SRS ‹hIRQ0‚IRQ0`v`p`PERC_STA  {PERC €¤ ¡¤ [‚B LNKF_HID AÐ _UID  _DISp €PFRC_PRS #úØy8_CRSRTLF #y‹RTLFIRQ0pIRQ0y{PFRC IRQ0¤RTLF_SRS ‹hIRQ0‚IRQ0`v`p`PFRC_STA  {PFRC €¤ ¡¤ [‚B LNKG_HID AÐ _UID  _DISp €PGRC_PRS #úÔy8_CRSRTLG #y‹RTLGIRQ0pIRQ0y{PGRC IRQ0¤RTLG_SRS ‹hIRQ0‚IRQ0`v`p`PGRC_STA  {PGRC €¤ ¡¤ [‚B LNKH_HID AÐ _UID  _DISp €PHRC_PRS #úØy8_CRSRTLH #y‹RTLHIRQ0pIRQ0y{PHRC IRQ0¤RTLH_SRS ‹hIRQ0‚IRQ0`v`p`PHRC_STA  {PHRC €¤ ¡¤ [‚=DMAC_HID AÐ_CRS( %G GG““ GÀÀ *y[‚&FWHD_HID %Ô_CRS † ÿy[‚@ HPET_HID AÐ_CID AÐ BUF0 † Ðþy'_STA ’•OSYS Ñ HPAE¤ ¡  HPAE¤ ¤F_CRS IHPAEŠBUF0 HPT0 “HPASp ÐþHPT0 “HPAS p ÐþHPT0 “HPAS p 0ÐþHPT0¤BUF0[‚E IPIC_HID AÐ_CRSA G G$$G((G,,G00G44G88G<<G  G¤¤G¨¨G¬¬G°°G´´G¸¸G¼¼GÐÐ"y[‚%MATH_HID AÐ _CRS Gðð" y[‚K LDRC_HID AÐ _UID _CRSN zG..GNNGaaGccGeeGggG€€G’’G²²G€€ GG€G€€@GþþGÿÿ€y[‚%RTC__HID AÐ _CRS Gpp"y[‚-TIMR_HID AÐ_CRS G@@GPP"y[‚2ACAD_HID ACPI0003_PCL_SB__PSRpACPW¤ACPWECOK “^.EC0_Z009¤¡¤[‚NoEC0__HID AÐ _GPE Z009_CRS GbbGffy;_REG 4“h piZ009 ([_OSI`pBTDS _OSI Windows 2006pBTDS[€ERAM ÿ[N.ERAM@0SMPRSMSTSMADSMCMSMD0@BCNTSMAA@CHGMCHGSENIDENIBENDDCHGVCHGABAL0BAL1BAL2BAL3BBC0BBC1BBC2BBC3PHDDIFDDIODDSHDDS120EFDDCRTDSPWRSBTNVIDOVOLDVOLUMUTECONTBRGTHBTNS4STSKEYBKEYTOUPFNBNLIDFDIGMUWAKDKSPDKINDKIDDKOKDKPWBTNSS1LDS3LDVGAQPCMQPCMRADPTSLLSSYS7PWAKMWAKLWAK(TCNLTMPITMSDFASNFASUPCVLSWTOHWTOMODEFANSINITFAN1FAN2FANTSKNMCTMPLIDEPMEEPWBERNGEBTWEDCKESKTXSKTBSKTCSKTAHAPLHAPRBTDTBTPWBTDSBTPSBTSWBTWKBTLDBRTSCNTSWLATBTATWLEXBTEXKLSWWLOKPTIDCPUTEPKTGHIDBMF0BTY0BST0BRC0BSN0BPV0BDV0BDC0BFC0GAU0CYC0BPC0BAC0BAT0BTW0BDN0@BMF1BTY1BST1BRC1BSN1BPV1BDV1BDC1BFC1GAU1CYC1BPC1BAC1BAT1BTW17_Q11p ‡P80H IGDS^^^.GFX0BRTN ‡¡†^^^/PEGPVGA_LCD_ ‡7_Q12p †P80H IGDS^^^.GFX0BRTN †¡†^^^/PEGPVGA_LCD_ †@_Q1Cp =====QUERY_1C=====[1 1VIDO IGDS^^^.GFX0GHDS¡^^^/PEGPVGA_DSSWpVIDO!_Q1Dp =====QUERY_1D=====[1PCLK!_Q1Ep =====QUERY_1E=====[1PCLK9_Q25p =====QUERY_25=====[1[" è†^^BAT1 [" è†^^BAT1 €/_Q34p =====QUERY_34=====[1 BKEYPHSS qpBKEY2_Q37p =====QUERY_37=====[1†ACAD €[" è†^^BAT1 €2_Q38p =====QUERY_38=====[1†ACAD €[" è†^^BAT1 €)_Q2Dp =====QUERY_2D=====[1pDTSMTRAP F)_Q2Ep =====QUERY_2E=====[1pDTSMTRAP F[€CCLK  [ CCLKDUTYTHENFTT_TSTS[€ECRM ÿ[DECRM@JERIBERBDH SDTMFSSNFANUPTVLTTHRHPJIDHRFRD[FAMX"FANG[#FAMXÿÿphERIBpERBD`['FAMX¤`"FANW[#FAMXÿÿphERIBpiERBD['FAMX¤i TUVR¤ .THRO  “h¤THEN¡  “h¤DUTY¡  “h ¤TTHR¡¤ ÿ*CLCK “hpTHENpFTT_¡ phDUTYpTHEN¤THEN7PCLKpPTVL` “`pTHENpFTT_¡v`p€`a{a apaDUTYpTHEN[‚K"BAT1_HID AÐ _UID_PCL_SB_9_STA )ECOK“ECDY ^^.EC0_BAL0[" ¤ ¡[" ¤ ¡[" ¤ H_BIFSTAT:      \+ ¤ œ  Ä PA3465U 3658Q Li-Ion COMPAL  KECOK“ECDYp^^.EC0_BDN0` #“` p ´ˆSTAT p PA3457U ˆSTAT  $“` p ˆSTAT p PA3457U ˆSTAT [" p^^.EC0_BDC0BFC1[" ¡p Li-IonˆSTAT  ,BFC1xBFC1 d`awa dapaBFC1paˆSTATpaˆSTAT ¤STATE _BSTPBST ÿÿÿÿ ÿÿÿÿ \+p \+c 8ECOK“ECDY[" p^^.EC0_BST0BST1[" p^^.EC0_GAU0BGU1["  BFC1wBGU1BFC1bxb ddb¡ wBGU1 (bpBST1ˆPBSTpˆPBSTpbˆPBST pcˆPBST  ”ECDYvECDY “ECDY†BAT1 €¤PBST[‚.PS2K_HID AÐ_CRS G``Gdd#y[‚PS2M_HID AÐ_CRS #y[‚CjPATA_ADR [€PACS @ À[IPACSPRITPSITSYNC SDT0SDT1JICR0ICR1ICR2ICR3ICR4ICR5[‚KcPRID_ADR@_GTMPBUF ŠPBUFPIO0ŠPBUF DMA0ŠPBUF PIO1ŠPBUF DMA1ŠPBUF FLAGpGETPPRITPIO0pGDMA{SYNC{ICR3{ICR0SDT0{ICR1DMA0 “DMA0 ÿÿÿÿpPIO0DMA0 .{PRIT @ “{PRIT €p „PIO1¡pGETTPSITPIO1¡ p ÿÿÿÿPIO1pGDMA{SYNC {ICR3 {ICR0 SDT1{ICR1 DMA1 “DMA1 ÿÿÿÿpPIO1DMA1pGETF{SYNC{SYNC PRITFLAG ,{“PIO0 ÿÿÿÿ“DMA0 ÿÿÿÿp xPIO0p DMA0p FLAG¤PBUFL*_STMŠhPIO0Šh DMA0Šh PIO1Šh DMA1Šh FLAG A“‡i {PRIT ðÀPRIT{SYNC SYNCpSDT0{ICR0 ICR0{ICR1 ICR1{ICR3 ICR3{ICR5 ICR5‹i bW490‹i jW530‹i ~W630‹i €W640‹i °W880‹i ºW930}PRIT €PRIT {FLAG {W490 }PRIT PRIT}PRITSETPPIO0W530W640PRIT K{FLAG}SYNCSYNCpSDMADMA0SDT0 •DMA0 }ICR3ICR3 •DMA0 <}ICR0ICR0 {W930 }ICR1ICR1 K“‡j {PRIT ¿PRITpPSIT{SYNCSYNCpSDT1{ICR0ICR0{ICR1ICR1{ICR3ICR3{ICR5ICR5‹j bW491‹j jW531‹j ~W631‹j €W641‹j °W881‹j ºW931}PRIT @€PRIT {FLAG {W491 }PRIT PRIT L{FLAG }PRIT @PRIT ”PIO1 ð}PRIT €PRIT¡!}PRIT PRITpSETTPIO1W531W641PSIT @{FLAG }SYNC SYNCpSDMADMA1SDT1 •DMA1 }ICR3 ICR3 •DMA1 <}ICR0 ICR0 {W931 }ICR1 ICR1[‚GP_D0_ADRJ_GTFPIB0  ï ïŒPIB0PMD0ŒPIB0 DMD0 @{PRIT  “{PRIT p PMD0¡Ap PMD0z{PRIT  `z{PRIT 0 ar`ab  “ bp PMD0  “ bp PMD0¡pPMD0 C{SYNCp}SDT0 @DMD0 ,{ICR1 {ICR0rDMD0 DMD0 {ICR3p EDMD0¡}t{PMD0   DMD0¤PIB0[‚FP_D1_ADRI_GTFPIB1 °ï°ïŒPIB1PMD1ŒPIB1 DMD1 K{PRIT  “{PRIT €p PMD1¡Á€Iîje&rÍ¿_/–ÖÀ ’õµ²;)âLÂò¼Awœpðó ÒcZܨƒø^É•ùúýÜ·Mg-³„3 áÑy*§jwѶ *vBÅÕé¶C@UDÃÉ7™_A—póÑöì{)¡Áñ‘ýH†n>Î˶LENOVOTP-68 WINDOWS Šn.É6æŠê­Ò“·m›s­ƒ6¸l§§î7GþóüÍlj„‘ B±5RWök»_¥âÿ‰Š•ÃMüéVOL4Ì™^báŠT¾J\› †AFfâòç6œ3‘'ç\¡Øù¤aŠã*ñ½L ÿ©ÔtÊžÜT9¿fwts-test/arg-table-path-0001/SSDT1.dat000066400000000000000000000012551231470457100175230ustar00rootroot00000000000000SSDT­YSataReSataAhciINTL$ H(\/_SB_PCI0SATA[‚O PRT0_ADR ÿÿD _SDDGBU0  ŒGBU0 GB00ŒGBU0 GB01ŒGBU0 GB02ŒGBU0 GB03ŒGBU0 GB04ŒGBU0 GB05ŒGBU0 GB06 F“‡h ‹h œW780 {W780 p GB00p GB01p ïGB06¡p GB00p GB01p ïGB06pGBU0GTF0 _GTF¤GTF0[‚A PRT1_ADR ÿÿD _SDDGBU1  ŒGBU1 GB10ŒGBU1 GB11ŒGBU1 GB12ŒGBU1 GB13ŒGBU1 GB14ŒGBU1 GB15ŒGBU1 GB16 F“‡h ‹h œW781 {W781 p GB10p GB11p ïGB16¡p GB10p GB11p ïGB16pGBU1GTF1 _GTF¤GTF1[‚A PRT2_ADR ÿÿD _SDDGBU2  ŒGBU2 GB20ŒGBU2 GB21ŒGBU2 GB22ŒGBU2 GB23ŒGBU2 GB24ŒGBU2 GB25ŒGBU2 GB26 F“‡h ‹h œW782 {W782 p GB20p GB21p ïGB26¡p GB20p GB21p ïGB26pGBU2GTF2 _GTF¤GTF2fwts-test/arg-table-path-0001/SSDT2.dat000066400000000000000000000002431231470457100175200ustar00rootroot00000000000000SSDT£íBrtRefDD01BRTINTL$ N\/_SB_PCI0GFX0DD03_BCL¤ F (   ( 2 < F%_BCMxh `apa\/_SB_PCI0LPCBEC0_BRTS#_BQCw\/_SB_PCI0LPCBEC0_BRTS `¤`fwts-test/arg-table-path-0001/SSDT3.dat000066400000000000000000000011371231470457100175240ustar00rootroot00000000000000SSDT_ÈPmRefCpu0Tst0INTL$ J#\._PR_CPU0_TPC M_PTC 7{PDC0 ¤, ‚ y ‚ y¤, ‚ y ‚ yTSSIA  d è   X k    K î    ? q   2 ô   & w    ú   } TSSMA  d è   X k    K î    ? q    2 ô    & w     ú    }  TSSF C_TSS G’TSSF[_PSSp_PSS`p‡`avapƒˆƒˆ`a bp c¢5•c‡TSSIpxwbt c dpdˆƒˆTSSIc pdˆƒˆTSSMc ucpÿTSSF {PDC0 ¤TSSM¤TSSI?_TSD '{CFGD ’{PDC0 ¤   ý ¤   ü fwts-test/arg-table-path-0001/SSDT4.dat000066400000000000000000000002461231470457100175250ustar00rootroot00000000000000SSDT¦mPmRefCpu1Tst0INTL$ A\._PR_CPU1_TPC _PTC¤\/_PR_CPU0_PTC_TSS¤\/_PR_CPU0_TSS?_TSD '{CFGD ’{PDC1 ¤   ý ¤    ü fwts-test/arg-table-path-0001/SSDT5.dat000066400000000000000000000023461231470457100175310ustar00rootroot00000000000000SSDTæßPmRefCpuPm0INTL$ E\SSDTC CPU0IST ž•m¿ ´ CPU1IST R—m¿ È CPU0CST om¿ ª CPU1CST •m¿ …CFGD ñi?\PDC0 €\PDC1 €\SDTL M!\._PR_CPU0HI0_ HC0_ H_PDCŠh REVSŠh SIZEp‡h`pt` a[h @wa TEMPSTS0 sSTS0TEMPb_OSC ¦w@ )¾Gž½ØpXq9SREVSSIZEbI_OSCŠk STS0Šk CAP0Šh IID0Šh IID1Šh IID2Šh IID3UID0 ¦w@ )¾Gž½ØpXq9SŠUID0 EID0ŠUID0 EID1ŠUID0 EID2ŠUID0 EID3 2’“IID0EID0“IID1EID1“IID2EID2“IID3EID3p STS0¤k ’“i p STS0¤k}{PDC0 ÿÿÿCAP0PDC0p{PDC0 ÿPCP0 L{CFGD  A{CFGD “{PDC0 ’{SDTL }SDTL SDTL[€IST0ƒˆSSDT ƒˆSSDT [ IST0HI0_ I{CFGD ð N{CFGD {PDC0 ’{SDTL }SDTL SDTL[€CST0ƒˆSSDT ƒˆSSDT [ CST0HC0_¤kM!\._PR_CPU1HI1_ HC1_ H_PDCŠh REVSŠh SIZEp‡h`pt` a[h @wa TEMPSTS1 sSTS1TEMPb_OSC ¦w@ )¾Gž½ØpXq9SREVSSIZEbI_OSCŠk STS1Šk CAP1Šh IID0Šh IID1Šh IID2Šh IID3UID1 ¦w@ )¾Gž½ØpXq9SŠUID1 EID0ŠUID1 EID1ŠUID1 EID2ŠUID1 EID3 2’“IID0EID0“IID1EID1“IID2EID2“IID3EID3p STS1¤k ’“i p STS1¤k}{PDC1 ÿÿÿCAP1PDC1p{PDC1 ÿPCP1 L{CFGD  A{CFGD “{PDC1 ’{SDTL }SDTL SDTL[€IST1ƒˆSSDT ƒˆSSDT [ IST1HI1_ I{CFGD ð N{CFGD {PDC1 ’{SDTL }SDTL SDTL[€CST1ƒˆSSDT ƒˆSSDT [ CST1HC1_¤kfwts-test/arg-table-path-0001/TCPA.dat000066400000000000000000000000621231470457100174070ustar00rootroot00000000000000TCPA2Intel CRESTLNELOHRZfwts-test/arg-table-path-0001/TMOR.dat000066400000000000000000000000461231470457100174430ustar00rootroot00000000000000TMOR&ëPTLTD PTL óôfwts-test/arg-table-path-0001/XSDT.dat000066400000000000000000000002241231470457100174420ustar00rootroot00000000000000XSDT”ÂLENOVOTP-68  LTPÒûm¿Æüm¿.ým¿fým¿¢ým¿Ôým¿úým¿pÿm¿Øÿm¿½˜m¿˜m¿Žm¿jm¿„ˆm¿fwts-test/arg-table-path-0001/acpidump-0001.log000066400000000000000000001120461231470457100210570ustar00rootroot00000000000000acpidump acpidump ---- acpidump ---------------------------------------------------------- acpidump 0000: 54 4d 4f 52 26 00 00 00 01 eb 50 54 4c 54 44 20 TMOR&.....PTLTD acpidump 0010: 20 20 20 20 20 20 20 20 00 00 04 06 50 54 4c 20 ....PTL acpidump 0020: 03 00 00 00 f3 f4 ...... acpidump [0x000 0000 4] Signature: APIC acpidump [0x000 0000 4] Signature: BOOT acpidump [0x000 0000 4] Signature: DSDT acpidump [0x000 0000 4] Signature: FACP acpidump [0x000 0000 4] Signature: FACS acpidump [0x000 0000 4] Signature: HPET acpidump [0x000 0000 4] Signature: MCFG acpidump [0x000 0000 4] Signature: RSDT acpidump [0x000 0000 4] Signature: SLIC acpidump [0x000 0000 4] Signature: SSDT acpidump [0x000 0000 4] Signature: TCPA acpidump [0x000 0000 4] Signature: TMOR acpidump [0x000 0000 4] Signature: XSDT acpidump [0x000 0000 8] Base Address: 0x00000000e0000000 acpidump [0x000 0000 8] Signature: RSD PTR acpidump [0x004 0004 4] Length: 0x00000026 acpidump [0x004 0004 4] Length: 0x00000028 acpidump [0x004 0004 4] Length: 0x00000032 acpidump [0x004 0004 4] Length: 0x00000038 acpidump [0x004 0004 4] Length: 0x0000003c acpidump [0x004 0004 4] Length: 0x00000040 acpidump [0x004 0004 4] Length: 0x00000068 acpidump [0x004 0004 4] Length: 0x000000a3 acpidump [0x004 0004 4] Length: 0x000000a6 acpidump [0x004 0004 4] Length: 0x000000ac acpidump [0x004 0004 4] Length: 0x000000f4 acpidump [0x004 0004 4] Length: 0x00000176 acpidump [0x004 0004 4] Length: 0x0000025f acpidump [0x004 0004 4] Length: 0x000002ad acpidump [0x004 0004 4] Length: 0x000004e6 acpidump [0x004 0004 4] Length: 0x00005ff4 acpidump [0x008 0008 1] Checksum: 0x1c acpidump [0x008 0008 1] Revision: 0x01 acpidump [0x008 0008 1] Revision: 0x02 acpidump [0x008 0008 1] Revision: 0x03 acpidump [0x008 0008 2] PCI Seg Grp Num: 0x0000 acpidump [0x008 0008 4] H/W Signature: 0x00000000 acpidump [0x009 0009 1] Checksum: 0x0a acpidump [0x009 0009 1] Checksum: 0x11 acpidump [0x009 0009 1] Checksum: 0x13 acpidump [0x009 0009 1] Checksum: 0x30 acpidump [0x009 0009 1] Checksum: 0x32 acpidump [0x009 0009 1] Checksum: 0x52 acpidump [0x009 0009 1] Checksum: 0x59 acpidump [0x009 0009 1] Checksum: 0x6d acpidump [0x009 0009 1] Checksum: 0x8f acpidump [0x009 0009 1] Checksum: 0x99 acpidump [0x009 0009 1] Checksum: 0xa5 acpidump [0x009 0009 1] Checksum: 0xc8 acpidump [0x009 0009 1] Checksum: 0xcc acpidump [0x009 0009 1] Checksum: 0xdf acpidump [0x009 0009 1] Checksum: 0xe5 acpidump [0x009 0009 1] Checksum: 0xeb acpidump [0x009 0009 1] Checksum: 0xed acpidump [0x009 0009 6] OEM ID: LENOVO acpidump [0x00a 0010 1] Start Bus Num: 0x00 acpidump [0x00a 0010 6] OEM ID: BrtRef acpidump [0x00a 0010 6] OEM ID: FWTS acpidump [0x00a 0010 6] OEM ID: Intel acpidump [0x00a 0010 6] OEM ID: INTEL acpidump [0x00a 0010 6] OEM ID: LENOVO acpidump [0x00a 0010 6] OEM ID: PmRef acpidump [0x00a 0010 6] OEM ID: PTLTD acpidump [0x00a 0010 6] OEM ID: SataRe acpidump [0x00a 0010 6] OEM ID: TOSCPL acpidump [0x00b 0011 1] End Bus Num: 0xff acpidump [0x00c 0012 4] Reserved: 0x00000000 acpidump [0x00c 0012 4] Waking Vector: 0x00000000 acpidump [0x00f 0015 1] Revision: 0x02 acpidump [0x010 0016 4] Global Lock: 0x00000000 acpidump [0x010 0016 4] RsdtAddress: 0xbff070d1 acpidump [0x010 0016 8] OEM Table ID: acpidump [0x010 0016 8] OEM Table ID: APIC acpidump [0x010 0016 8] OEM Table ID: Cpu0Tst acpidump [0x010 0016 8] OEM Table ID: Cpu1Tst acpidump [0x010 0016 8] OEM Table ID: CpuPm acpidump [0x010 0016 8] OEM Table ID: CRESTLNE acpidump [0x010 0016 8] OEM Table ID: DD01BRT acpidump [0x010 0016 8] OEM Table ID: SataAhci acpidump [0x010 0016 8] OEM Table ID: $SBFTBL$ acpidump [0x010 0016 8] OEM Table ID: TP-68 acpidump [0x014 0020 4] Flags: 0x00000000 acpidump [0x014 0020 4] Length: 0x00000024 acpidump [0x018 0024 4] OEM Revision: 0x00000001 acpidump [0x018 0024 4] OEM Revision: 0x00001000 acpidump [0x018 0024 4] OEM Revision: 0x00003000 acpidump [0x018 0024 4] OEM Revision: 0x06040000 acpidump [0x018 0024 8] XsdtAddress: 0x00000000bff07149 acpidump [0x018 0024 8] X Waking Vector: 0x0000000000000000 acpidump [0x01c 0028 4] Creator ID: ALAN acpidump [0x01c 0028 4] Creator ID: FWTS acpidump [0x01c 0028 4] Creator ID: INTL acpidump [0x01c 0028 4] Creator ID: LOHR acpidump [0x01c 0028 4] Creator ID: LTP acpidump [0x01c 0028 4] Creator ID: PTL acpidump [0x01c 0028 4] Creator ID: TBD acpidump [0x020 0032 1] Extended Checksum: 0x73 acpidump [0x020 0032 1] Version: 0x01 acpidump [0x020 0032 4] Creator Revision: 0x00000000 acpidump [0x020 0032 4] Creator Revision: 0x00000001 acpidump [0x020 0032 4] Creator Revision: 0x00000003 acpidump [0x020 0032 4] Creator Revision: 0x0000005a acpidump [0x020 0032 4] Creator Revision: 0x20050624 acpidump [0x020 0032 4] Creator Revision: 0x20060608 acpidump [0x021 0033 3] Reserved: 0x00 [0] acpidump [0x021 0033 3] Reserved: 0x00 [1] acpidump [0x021 0033 3] Reserved: 0x00 [2] acpidump [0x024 0036 1] CMOS offset: 0x36 acpidump [0x024 0036 2] Reserved: 0x0000 acpidump [0x024 0036 4] Entry 00 APIC: 0xbff00000 acpidump [0x024 0036 4] Event Timer ID: 0x8086a201 acpidump [0x024 0036 4] FACS Address: 0xbf6e2fc0 acpidump [0x024 0036 4] Local APIC Address: 0xfee00000 acpidump [0x024 0036 4] OSPM Flags: 0x00000000 acpidump [0x024 0036 4] Type: 0x00000000 acpidump [0x024 0036 8] Entry 00 APIC: 0x00000000bff00000 acpidump [0x024 0036 8] Reserved: 0x0000000000000000 acpidump [0x026 0038 4] Log Zone Length: 0x00010000 acpidump [0x028 0040 12] Base Address: (Generic Address Structure) acpidump [0x028 0040 1] addr_space_id: 0x00 (System Memory) acpidump [0x028 0040 4] DSDT Address: 0xbf6d9b6a acpidump [0x028 0040 4] Entry 01 APIC: 0xbff00078 acpidump [0x028 0040 4] Flags: 0x00000001 acpidump [0x028 0040 4] Length: 0x0000009c acpidump [0x029 0041 1] reg_bit_width: 0x00 acpidump [0x02a 0042 1] reg_bit_offset: 0x00 acpidump [0x02a 0042 8] Log Zone Address: 0x0000000000000000 acpidump [0x02b 0043 1] access_width: 0x00 (Undefined (legacy reasons)) acpidump [0x02c 0044 1] Key Type: 0x06 acpidump [0x02c 0044 1] Model: 0x00 acpidump [0x02c 0044 1] Type: 0x00 (Processor Local APIC) acpidump [0x02c 0044 4] Entry 02 BOOT: 0xbff000f0 acpidump [0x02c 0044 8] address: 0x00000000fed00000 acpidump [0x02c 0044 8] Entry 01 APIC: 0x00000000bff00078 acpidump [0x02d 0045 1] Length: 0x08 acpidump [0x02d 0045 1] PM Profile: 0x02 (Mobile) acpidump [0x02d 0045 1] Version: 0x02 acpidump [0x02e 0046 1] ACPI CPU ID: 0x00 acpidump [0x02e 0046 2] Reserved: 0x0000 acpidump [0x02e 0046 2] SCI Interrupt: 0x0009 acpidump [0x02f 0047 1] APIC ID: 0x00 acpidump [0x030 0048 4] Algorithm: 0x00002400 acpidump [0x030 0048 4] Entry 03 DSDT: 0xbff00128 acpidump [0x030 0048 4] Flags: 0x00000001 acpidump [0x030 0048 4] SMI Command Port: 0x000000b2 acpidump [0x034 0052 1] ACPI Enable Value: 0xf0 acpidump [0x034 0052 1] HPET Number: 0x00 acpidump [0x034 0052 1] Type: 0x00 (Processor Local APIC) acpidump [0x034 0052 4] Entry 04 FACP: 0xbff0612c acpidump [0x034 0052 4] Magic: 0x31415352 acpidump [0x034 0052 8] Entry 02 BOOT: 0x00000000bff000f0 acpidump [0x035 0053 1] ACPI Disable Value: 0xf1 acpidump [0x035 0053 1] Length: 0x08 acpidump [0x035 0053 2] Main Counter Min: 0x0080 acpidump [0x036 0054 1] ACPI CPU ID: 0x01 acpidump [0x036 0054 1] S4BIOS Command: 0x00 acpidump [0x037 0055 1] APIC ID: 0x01 acpidump [0x037 0055 1] Page Prot Attr: 0x00 acpidump [0x037 0055 1] P-State Control: 0x80 acpidump [0x038 0056 4] Bit Length: 0x00000400 acpidump [0x038 0056 4] Entry 05 FACS: 0xbff06230 acpidump [0x038 0056 4] Flags: 0x00000001 acpidump [0x038 0056 4] PM1A Event Block: 0x00001000 acpidump [0x03c 0060 128] Modulus: 00 b2 3b 29 02 e2 4c 8d acpidump [0x03c 0060 128] Modulus: 01 00 01 00 69 16 4a 9f acpidump [0x03c 0060 128] Modulus: 29 a1 c1 f1 91 fd 48 86 acpidump [0x03c 0060 128] Modulus: 42 c5 d5 e9 b6 43 40 55 acpidump [0x03c 0060 128] Modulus: 44 c3 c9 37 99 5f 41 97 acpidump [0x03c 0060 128] Modulus: 65 26 72 1e cd bf 5f 2f acpidump [0x03c 0060 128] Modulus: 70 f3 d1 f6 07 ec 7b 1a acpidump [0x03c 0060 128] Modulus: 83 f8 5e c9 15 95 f9 fa acpidump [0x03c 0060 128] Modulus: 96 d6 c0 0a 92 f5 06 b5 acpidump [0x03c 0060 128] Modulus: a7 6a 77 d1 b6 20 2a 76 acpidump [0x03c 0060 128] Modulus: b1 4b 3a fb 80 20 aa af acpidump [0x03c 0060 128] Modulus: b3 84 33 20 e1 d1 79 2a acpidump [0x03c 0060 128] Modulus: c2 f2 bc 41 77 9c 70 f0 acpidump [0x03c 0060 128] Modulus: c4 f9 3e c1 80 49 ee 6a acpidump [0x03c 0060 128] Modulus: f3 1b 09 d2 63 5a dc a8 acpidump [0x03c 0060 128] Modulus: fd dc 05 b7 4d 67 7f 2d acpidump [0x03c 0060 1] Type: 0x01 (I/O APIC) acpidump [0x03c 0060 4] Entry 06 HPET: 0xbff06280 acpidump [0x03c 0060 4] PM1B Event Block: 0x00000000 acpidump [0x03c 0060 8] Entry 03 DSDT: 0x00000000bff00128 acpidump [0x03d 0061 1] Length: 0x0c acpidump [0x03e 0062 1] I/O APIC ID: 0x01 acpidump [0x03e 0062 1] I/O APIC ID: 0x02 acpidump [0x040 0064 4] Entry 07 MCFG: 0xbff062c8 acpidump [0x040 0064 4] I/O APIC Addr: 0xfec00000 acpidump [0x040 0064 4] PM1A Control Block: 0x00001004 acpidump [0x044 0068 4] Entry 08 RSDP: 0xbff06314 acpidump [0x044 0068 4] Global IRQ Base: 0x00000000 acpidump [0x044 0068 4] PM1B Control Block: 0x00000000 acpidump [0x044 0068 8] Entry 04 FACP: 0x00000000bff0612c acpidump [0x048 0072 1] Type: 0x02 (Interrupt Source Override) acpidump [0x048 0072 1] Type: 0x04 (Local APIC NMI) acpidump [0x048 0072 4] Entry 09 SLIC: 0xbff06348 acpidump [0x048 0072 4] PM2 Control Block: 0x00001020 acpidump [0x049 0073 1] Length: 0x06 acpidump [0x049 0073 1] Length: 0x0a acpidump [0x04a 0074 1] ACPI CPU ID: 0x00 acpidump [0x04a 0074 1] Bus: 0x00 acpidump [0x04b 0075 1] Source: 0x00 acpidump [0x04b 0075 2] Flags: 0x0005 acpidump [0x04c 0076 4] Entry 10 SSDT: 0xbff064ce acpidump [0x04c 0076 4] Gbl Sys Int: 0x00000002 acpidump [0x04c 0076 4] PM Timer Block: 0x00001008 acpidump [0x04c 0076 8] Entry 05 FACS: 0x00000000bff06230 acpidump [0x04d 0077 1] Local APIC LINT: 0x01 acpidump [0x04e 0078 1] Type: 0x04 (Local APIC NMI) acpidump [0x04f 0079 1] Length: 0x06 acpidump [0x050 0080 1] ACPI CPU ID: 0x01 acpidump [0x050 0080 2] Flags: 0x0000 acpidump [0x050 0080 4] Entry 11 SSDT: 0xbff0678b acpidump [0x050 0080 4] GPE0 Block: 0x00001028 acpidump [0x051 0081 2] Flags: 0x0005 acpidump [0x052 0082 1] Type: 0x02 (Interrupt Source Override) acpidump [0x053 0083 1] Length: 0x0a acpidump [0x053 0083 1] Local APIC LINT: 0x01 acpidump [0x054 0084 1] Bus: 0x00 acpidump [0x054 0084 1] Type: 0x02 (Interrupt Source Override) acpidump [0x054 0084 4] Entry 12 SSDT: 0xbff0683e acpidump [0x054 0084 4] GPE1 Block: 0x00000000 acpidump [0x054 0084 8] Entry 06 HPET: 0x00000000bff06280 acpidump [0x055 0085 1] Length: 0x0a acpidump [0x055 0085 1] Source: 0x09 acpidump [0x056 0086 1] Bus: 0x00 acpidump [0x056 0086 4] Gbl Sys Int: 0x00000009 acpidump [0x057 0087 1] Source: 0x00 acpidump [0x058 0088 1] PM1 Event Block Length: 0x04 acpidump [0x058 0088 4] Entry 13 SSDT: 0xbff06aad acpidump [0x058 0088 4] Gbl Sys Int: 0x00000002 acpidump [0x059 0089 1] PM1 Control Block Length: 0x02 acpidump [0x05a 0090 1] PM2 Control Block Length: 0x01 acpidump [0x05a 0090 2] Flags: 0x000d acpidump [0x05b 0091 1] PM Timer Block Length: 0x04 acpidump [0x05c 0092 1] GPE0 Block Length: 0x08 acpidump [0x05c 0092 1] Type: 0x04 (Local APIC NMI) acpidump [0x05c 0092 2] Flags: 0x0005 acpidump [0x05c 0092 4] Entry 14 SSDT: 0xbff06b63 acpidump [0x05c 0092 8] Entry 07 MCFG: 0x00000000bff062c8 acpidump [0x05d 0093 1] GPE1 Block Length: 0x00 acpidump [0x05d 0093 1] Length: 0x06 acpidump [0x05e 0094 1] ACPI CPU ID: 0x00 acpidump [0x05e 0094 1] Type: 0x02 (Interrupt Source Override) acpidump [0x05f 0095 1] _CST Support: 0x85 acpidump [0x05f 0095 1] Length: 0x0a acpidump [0x05f 0095 2] Flags: 0x0005 acpidump [0x060 0096 1] Bus: 0x00 acpidump [0x060 0096 2] C2 Latency: 0x0001 acpidump [0x060 0096 4] Entry 15 TCPA: 0xbff07059 acpidump [0x061 0097 1] Local APIC LINT: 0x01 acpidump [0x061 0097 1] Source: 0x09 acpidump [0x062 0098 1] Type: 0x04 (Local APIC NMI) acpidump [0x062 0098 2] C3 Latency: 0x0023 acpidump [0x062 0098 4] Gbl Sys Int: 0x00000009 acpidump [0x063 0099 1] Length: 0x06 acpidump [0x064 0100 1] ACPI CPU ID: 0x01 acpidump [0x064 0100 2] CPU Cache Size: 0x0000 acpidump [0x064 0100 4] Entry 16 TMOR: 0xbff0709b acpidump [0x064 0100 8] Entry 08 RSDP: 0x00000000bff06314 acpidump [0x065 0101 2] Flags: 0x0005 acpidump [0x066 0102 2] CPU Cache Flush Stride: 0x0000 acpidump [0x066 0102 2] Flags: 0x000d acpidump [0x067 0103 1] Local APIC LINT: 0x01 acpidump [0x068 0104 1] Duty Cycle Offset: 0x01 acpidump [0x069 0105 1] Duty Cycle Width: 0x03 acpidump [0x06a 0106 1] RTC Day Alarm Index: 0x0d acpidump [0x06b 0107 1] RTC Month Alarm Index: 0x00 acpidump [0x06c 0108 1] RTC Century Index: 0x32 acpidump [0x06c 0108 8] Entry 09 SLIC: 0x00000000bff06348 acpidump [0x06d 0109 2] IA-PC Boot Flags (see below): 0x0000 acpidump [0x070 0112 4] Flags (see below): 0x000000a5 acpidump [0x074 0116 12] RESET_REG: (Generic Address Structure) acpidump [0x074 0116 1] addr_space_id: 0x00 (System Memory) acpidump [0x074 0116 8] Entry 10 SSDT: 0x00000000bff064ce acpidump [0x075 0117 1] reg_bit_width: 0x00 acpidump [0x076 0118 1] reg_bit_offset: 0x00 acpidump [0x077 0119 1] access_width: 0x00 (Undefined (legacy reasons)) acpidump [0x078 0120 8] address: 0x0000000000000000 acpidump [0x07c 0124 8] Entry 11 SSDT: 0x00000000bff0678b acpidump [0x080 0128 1] RESET_VALUE: 0x00 acpidump [0x084 0132 8] Entry 12 SSDT: 0x00000000bff0683e acpidump [0x084 0132 8] X_FIRMWARE_CTRL: 0x00000000bf6e2fc0 acpidump [0x08c 0140 8] Entry 13 SSDT: 0x00000000bff06aad acpidump [0x08c 0140 8] X_DSDT: 0x00000000bf6d9b6a acpidump [0x094 0148 12] X_PM1a_EVT_BLK: (Generic Address Structure) acpidump [0x094 0148 1] addr_space_id: 0x01 (System I/O) acpidump [0x094 0148 8] Entry 14 SSDT: 0x00000000bff06b63 acpidump [0x095 0149 1] reg_bit_width: 0x20 acpidump [0x096 0150 1] reg_bit_offset: 0x00 acpidump [0x097 0151 1] access_width: 0x00 (Undefined (legacy reasons)) acpidump [0x098 0152 8] address: 0x0000000000001000 acpidump [0x09c 0156 8] Entry 15 TCPA: 0x00000000bff07059 acpidump [0x0a0 0160 12] X_PM1b_EVT_BLK: (Generic Address Structure) acpidump [0x0a0 0160 1] addr_space_id: 0x00 (System Memory) acpidump [0x0a1 0161 1] reg_bit_width: 0x00 acpidump [0x0a2 0162 1] reg_bit_offset: 0x00 acpidump [0x0a3 0163 1] access_width: 0x00 (Undefined (legacy reasons)) acpidump [0x0a4 0164 8] address: 0x0000000000000000 acpidump [0x0a4 0164 8] Entry 16 TMOR: 0x00000000bff0709b acpidump [0x0ac 0172 12] X_PM1a_CNT_BLK: (Generic Address Structure) acpidump [0x0ac 0172 1] addr_space_id: 0x01 (System I/O) acpidump [0x0ad 0173 1] reg_bit_width: 0x10 acpidump [0x0ae 0174 1] reg_bit_offset: 0x00 acpidump [0x0af 0175 1] access_width: 0x00 (Undefined (legacy reasons)) acpidump [0x0b0 0176 8] address: 0x0000000000001004 acpidump [0x0b8 0184 12] X_PM1b_CNT_BLK: (Generic Address Structure) acpidump [0x0b8 0184 1] addr_space_id: 0x00 (System Memory) acpidump [0x0b9 0185 1] reg_bit_width: 0x00 acpidump [0x0ba 0186 1] reg_bit_offset: 0x00 acpidump [0x0bb 0187 1] access_width: 0x00 (Undefined (legacy reasons)) acpidump [0x0bc 0188 8] address: 0x0000000000000000 acpidump [0x0c0 0192 4] Type: 0x00000001 acpidump [0x0c4 0196 12] X_PM2_CNT_BLK: (Generic Address Structure) acpidump [0x0c4 0196 1] addr_space_id: 0x01 (System I/O) acpidump [0x0c4 0196 4] Length: 0x000000b6 acpidump [0x0c5 0197 1] reg_bit_width: 0x08 acpidump [0x0c6 0198 1] reg_bit_offset: 0x00 acpidump [0x0c7 0199 1] access_width: 0x00 (Undefined (legacy reasons)) acpidump [0x0c8 0200 4] Version: 0x00020000 acpidump [0x0c8 0200 8] address: 0x0000000000001020 acpidump [0x0cc 0204 6] OEM ID: LENOVO acpidump [0x0d0 0208 12] X_PM_TMR_BLK: (Generic Address Structure) acpidump [0x0d0 0208 1] addr_space_id: 0x01 (System I/O) acpidump [0x0d1 0209 1] reg_bit_width: 0x20 acpidump [0x0d2 0210 1] reg_bit_offset: 0x00 acpidump [0x0d2 0210 8] OEM TABLE ID: TP-68 acpidump [0x0d3 0211 1] access_width: 0x00 (Undefined (legacy reasons)) acpidump [0x0d4 0212 8] address: 0x0000000000001008 acpidump [0x0da 0218 8] Windows Flag: 57 49 4e 44 4f 57 53 20 acpidump [0x0dc 0220 12] X_GPE0_BLK: (Generic Address Structure) acpidump [0x0dc 0220 1] addr_space_id: 0x01 (System I/O) acpidump [0x0dd 0221 1] reg_bit_width: 0x40 acpidump [0x0de 0222 1] reg_bit_offset: 0x00 acpidump [0x0df 0223 1] access_width: 0x00 (Undefined (legacy reasons)) acpidump [0x0e0 0224 8] address: 0x0000000000001028 acpidump [0x0e2 0226 4] SLIC Version: 0x00000000 acpidump [0x0e6 0230 16] Reserved: 00 00 00 00 00 00 00 00 acpidump [0x0e8 0232 12] X_GPE1_BLK: (Generic Address Structure) acpidump [0x0e8 0232 1] addr_space_id: 0x00 (System Memory) acpidump [0x0e9 0233 1] reg_bit_width: 0x00 acpidump [0x0ea 0234 1] reg_bit_offset: 0x00 acpidump [0x0eb 0235 1] access_width: 0x00 (Undefined (legacy reasons)) acpidump [0x0ec 0236 8] address: 0x0000000000000000 acpidump [0x0f6 0246 128] Signature: 04 07 e3 2a 1e 14 f1 bd acpidump [0x0f6 0246 128] Signature: 1e 81 11 42 b1 35 52 57 acpidump [0x0f6 0246 128] Signature: 4f 4c 34 cc 99 5e 62 e1 acpidump [0x0f6 0246 128] Signature: 5c a1 d8 f9 a4 61 8a 1c acpidump [0x0f6 0246 128] Signature: 74 ca 11 9e dc 54 39 bf acpidump [0x0f6 0246 128] Signature: 7f 4c 09 ff 19 11 a9 d4 acpidump [0x0f6 0246 128] Signature: 89 8a 95 c3 4d fc e9 56 acpidump [0x0f6 0246 128] Signature: 8a 6e 2e c9 36 e6 7f 10 acpidump [0x0f6 0246 128] Signature: 8a ea 14 ad d2 93 b7 6d acpidump [0x0f6 0246 128] Signature: 90 8a 54 be 4a 00 5c 9b acpidump [0x0f6 0246 128] Signature: 9b 73 ad 83 36 b8 6c a7 acpidump [0x0f6 0246 128] Signature: a0 86 41 46 66 9d e2 f2 acpidump [0x0f6 0246 128] Signature: a7 ee 37 47 16 fe f3 fc acpidump [0x0f6 0246 128] Signature: cd c7 89 84 06 16 91 0b acpidump [0x0f6 0246 128] Signature: e7 36 9c 33 91 27 e7 8d acpidump [0x0f6 0246 128] Signature: f6 6b bb 5f a5 81 e2 ff acpidump 32 bit PM timer (V1): 0x0 acpidump 8042 present on ports 60/64 (V2): 0x0 acpidump acpidump: Dump ACPI tables. acpidump ACPI hardware is not implemented (V5): 0x0 acpidump All CPUs support C1 (V1): 0x1 acpidump APIC @ bff00000 (104 bytes) (loaded from file) acpidump APIC @ bff00078 (104 bytes) (loaded from file) acpidump APIC Structure #1: acpidump APIC Structure #2: acpidump APIC Structure #3: acpidump APIC Structure #4: acpidump APIC Structure #5: acpidump APIC Structure #6: acpidump APIC Structure #7: acpidump BOOT @ bff000f0 (40 bytes) (loaded from file) acpidump C2 works on MP system (V1): 0x0 acpidump CMOS RTC Not Present (V5): 0x0 acpidump Configuration #1: acpidump Contains 0x23b bytes of AML byte code acpidump Contains 0x289 bytes of AML byte code acpidump Contains 0x4c2 bytes of AML byte code acpidump Contains 0x5fd0 bytes of AML byte code acpidump Contains 0x7f bytes of AML byte code acpidump Contains 0x82 bytes of AML byte code acpidump Control Method Power Button (V1): 0x0 acpidump Control Method Sleep Button (V1): 0x1 acpidump Count Size Cap: 0x1 acpidump Differentiated System Description Table: acpidump Docking Capability (V1): 0x0 acpidump DSDT @ bff00128 (24564 bytes) (loaded from file) acpidump Enabled: 0x1 acpidump Extended System Description Table: acpidump FACP @ bff0612c (244 bytes) (loaded from file) acpidump FACS @ bff06230 (64 bytes) (loaded from file) acpidump Firmware ACPI Control Structure: acpidump Fixed ACPI Description Table: acpidump Hardware Rev: 0x01 acpidump Headless, No Video (V3): 0x0 acpidump HPET @ bff06280 (56 bytes) (loaded from file) acpidump IA-PC High Precision Event Timer Table: acpidump IRQ Routing Cap: 0x1 acpidump Legacy Devices Supported (V2): 0x0 acpidump MCFG @ bff062c8 (60 bytes) (loaded from file) acpidump Microsoft Software License Table: acpidump MSI Not Supported (V4): 0x0 acpidump Multiple APIC Description Table: acpidump Num Comparitors: 0x02 acpidump OEM Attr: 0x0 acpidump Page Protection: 0x0 acpidump PCAT_COMPAT: 0x1 acpidump PCIe ASPM Not supported (V4): 0x0 acpidump PCI Express Memory Mapped Config Space Base Address Table: acpidump PCI_EXP_WAK bits supported (V4): 0x0 acpidump PCI Vendor ID: 0x8086 acpidump Polarity: 0x0 acpidump Polarity: 0x1 acpidump Remote power on capable (V4): 0x0 acpidump Reserved: 0x0 acpidump RESERVED: 0x000 acpidump Reset Register Supported (V2): 0x0 acpidump Root System Description Pointer: acpidump Root System Description Table: acpidump RSDP @ bff06314 (36 bytes) (loaded from file) acpidump RSDT @ bff070d1 (104 bytes) (generated by fwts) acpidump RTC can wake system from S4 (V1): 0x1 acpidump RTC_STS Valid after S4 wake (V4): 0x0 acpidump RTC wake not in fixed reg space (V1): 0x0 acpidump S0 power savings are equal or better than S3 (V5): 0x0 acpidump Sealed Case (V3): 0x0 acpidump Secondary System Description Table: acpidump Simple Boot Flag Table: acpidump SLIC @ bff06348 (374 bytes) (loaded from file) acpidump SSDT @ bff064ce (685 bytes) (loaded from file) acpidump SSDT @ bff0678b (163 bytes) (loaded from file) acpidump SSDT @ bff0683e (607 bytes) (loaded from file) acpidump SSDT @ bff06aad (166 bytes) (loaded from file) acpidump SSDT @ bff06b63 (1254 bytes) (loaded from file) acpidump TCPA @ bff07059 (50 bytes) (loaded from file) acpidump Test 1 of 1: Dump ACPI tables. acpidump TMOR @ bff0709b (38 bytes) (loaded from file) acpidump Trigger Mode: 0x0 acpidump Trigger Mode: 0x1 acpidump Trigger Mode: 0x3 acpidump Trusted Computing Platform Alliance Capabilities Table: acpidump Use APIC Cluster Model (V4): 0x0 acpidump Use APIC Physical Dest. Mode (V4): 0x0 acpidump Use native instr. after SLP_TYPx (V3): 0x0 acpidump Use patform clock (V4): 0x0 acpidump VGA Not Present (V4): 0x0 acpidump WBINVD flushes all caches (V1): 0x0 acpidump WBINVD instruction (V1): 0x1 acpidump XSDT @ bff07149 (172 bytes) (generated by fwts) fwts-test/arg-table-path-0001/acpidump.log000066400000000000000000000005431231470457100204770ustar00rootroot0000000000000000014 acpidump Dump ACPI tables. 00015 acpidump ---------------------------------------------------------- 00016 acpidump Test 1 of 1: Dump ACPI tables. 00017 acpidump Cannot open directory '/home/king/firmware/fwts/fwts-test 00018 acpidump /arg-table-path-0001/acpidump.dat' to read ACPI tables. 00019 acpidump fwts-test/arg-table-path-0001/test-0001.sh000077500000000000000000000014171231470457100200670ustar00rootroot00000000000000#!/bin/bash # TEST="Test --table-path to load dumped tables produced by acpixtract" NAME=test-0001.sh TMPLOG=$TMP/acpidump.log.$$ SORTED=$TMP/acpidump.log.sorted HERE=$FWTSTESTDIR/arg-table-path-0001 # # Unfortunately we can pull in the tables in different order depending # on the way the tables are stored in the directory. Since we only care # about output content and not necessary table order, we sort and uniq # the output before we diff. # $FWTS --log-format="%line %owner " -w 80 --table-path=$HERE acpidump - | grep "^[0-9]*[ ]*acpidump" | cut -c7- | sort | uniq > $TMPLOG sort $HERE/acpidump-0001.log > $SORTED diff $TMPLOG $SORTED >> $FAILURE_LOG ret=$? if [ $ret -eq 0 ]; then echo PASSED: $TEST, $NAME else echo FAILED: $TEST, $NAME fi rm $TMPLOG $SORTED exit $ret fwts-test/arg-table-path-0001/test-0002.sh000077500000000000000000000013731231470457100200710ustar00rootroot00000000000000#!/bin/bash # TEST="Test -T to load dumped tables produced by acpixtract" NAME=test-0002.sh TMPLOG=$TMP/acpidump.log.$$ SORTED=$TMP/acpidump.log.sorted HERE=$FWTSTESTDIR/arg-table-path-0001 # # Unfortunately we can pull in the tables in different order depending # on the way the tables are stored in the directory. Since we only care # about output content and not necessary table order, we sort and uniq # the output before we diff. # $FWTS --log-format="%line %owner " -w 80 -t $HERE acpidump - | grep "^[0-9]*[ ]*acpidump" | cut -c7- | sort | uniq > $TMPLOG sort $HERE/acpidump-0001.log > $SORTED diff $TMPLOG $SORTED >> $FAILURE_LOG ret=$? if [ $ret -eq 0 ]; then echo PASSED: $TEST, $NAME else echo FAILED: $TEST, $NAME fi rm $TMPLOG $SORTED exit $ret fwts-test/arg-width-0001/000077500000000000000000000000001231470457100152665ustar00rootroot00000000000000fwts-test/arg-width-0001/klog-0001.log000066400000000000000000000010071231470457100173010ustar00rootroot00000000000000klog klog: Scan kernel log for errors and warnings. klog ---------------------------------------------------------- klog Test 1 of 1: Kernel log error check. klog PASSED: Test 1, Found no errors in kernel log. klog klog ========================================================== klog 1 passed, 0 failed, 0 warning, 0 aborted, 0 skipped, 0 klog info only. klog ========================================================== fwts-test/arg-width-0001/klog-0002.log000066400000000000000000000010251231470457100173020ustar00rootroot00000000000000klog klog: Scan kernel log for errors and warnings. klog -------------------------------------------------------------------- klog Test 1 of 1: Kernel log error check. klog PASSED: Test 1, Found no errors in kernel log. klog klog ==================================================================== klog 1 passed, 0 failed, 0 warning, 0 aborted, 0 skipped, 0 info only. klog ==================================================================== fwts-test/arg-width-0001/klog-0003.log000066400000000000000000000010631231470457100173050ustar00rootroot00000000000000klog klog: Scan kernel log for errors and warnings. klog ------------------------------------------------------------------------------ klog Test 1 of 1: Kernel log error check. klog PASSED: Test 1, Found no errors in kernel log. klog klog ============================================================================== klog 1 passed, 0 failed, 0 warning, 0 aborted, 0 skipped, 0 info only. klog ============================================================================== fwts-test/arg-width-0001/klog-0004.log000066400000000000000000000062771231470457100173220ustar00rootroot00000000000000klog klog: Scan kernel log for errors and warnings. klog ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ klog Test 1 of 1: Kernel log error check. klog PASSED: Test 1, Found no errors in kernel log. klog klog ================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================== klog 1 passed, 0 failed, 0 warning, 0 aborted, 0 skipped, 0 info only. klog ================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================== fwts-test/arg-width-0001/klog.txt000066400000000000000000000010071231470457100167610ustar00rootroot0000000000000000014 klog Scan kernel log for errors and warnings. 00015 klog --------------------------------------------------------- 00016 klog Cannot read kernel log. 00017 klog Aborted test, initialisation failed. 00018 klog ========================================================= 00019 klog 0 passed, 0 failed, 0 warnings, 1 aborted, 0 skipped, 0 00020 klog info only. 00021 klog ========================================================= fwts-test/arg-width-0001/test-0001.sh000077500000000000000000000006501231470457100171630ustar00rootroot00000000000000#!/bin/bash # TEST="Test -w 80" NAME=test-0001.sh TMPLOG=$TMP/klog.log.$$ $FWTS --log-format="%line %owner " -w 80 -j $FWTSTESTDIR/../data --klog=$FWTSTESTDIR/arg-width-0001/klog.txt klog - | grep "^[0-9]*[ ]*klog" | cut -c7- > $TMPLOG diff $TMPLOG $FWTSTESTDIR/arg-width-0001/klog-0001.log >> $FAILURE_LOG ret=$? if [ $ret -eq 0 ]; then echo PASSED: $TEST, $NAME else echo FAILED: $TEST, $NAME fi rm $TMPLOG exit $ret fwts-test/arg-width-0001/test-0002.sh000077500000000000000000000006521231470457100171660ustar00rootroot00000000000000#!/bin/bash # TEST="Test -w 90" NAME=test-0002.sh TMPLOG=$TMP/klog.log.$$ $FWTS --log-format="%line %owner " -w 90 -j $FWTSTESTDIR/../data --klog=$FWTSTESTDIR/arg-width-0001/klog.txt klog - | grep "^[0-9]*[ ]*klog" | cut -c7- > $TMPLOG diff $TMPLOG $FWTSTESTDIR/arg-width-0001/klog-0002.log >> $FAILURE_LOG ret=$? if [ $ret -eq 0 ]; then echo PASSED: $TEST, $NAME else echo FAILED: $TEST, $NAME fi rm $TMPLOG exit $ret fwts-test/arg-width-0001/test-0003.sh000077500000000000000000000006531231470457100171700ustar00rootroot00000000000000#!/bin/bash # TEST="Test -w 100" NAME=test-0003.sh TMPLOG=$TMP/klog.log.$$ $FWTS --log-format="%line %owner " -w 100 -j $FWTSTESTDIR/../data --klog=$FWTSTESTDIR/arg-width-0001/klog.txt klog - | grep "^[0-9]*[ ]*klog" | cut -c7- > $TMPLOG diff $TMPLOG $FWTSTESTDIR/arg-width-0001/klog-0003.log >> $FAILURE_LOG ret=$? if [ $ret -eq 0 ]; then echo PASSED: $TEST, $NAME else echo FAILED: $TEST, $NAME fi rm $TMPLOG exit $ret fwts-test/arg-width-0001/test-0004.sh000077500000000000000000000006551231470457100171730ustar00rootroot00000000000000#!/bin/bash # TEST="Test -w 1000" NAME=test-0004.sh TMPLOG=$TMP/klog.log.$$ $FWTS --log-format="%line %owner " -w 1000 -j $FWTSTESTDIR/../data --klog=$FWTSTESTDIR/arg-width-0001/klog.txt klog - | grep "^[0-9]*[ ]*klog" | cut -c7- > $TMPLOG diff $TMPLOG $FWTSTESTDIR/arg-width-0001/klog-0004.log >> $FAILURE_LOG ret=$? if [ $ret -eq 0 ]; then echo PASSED: $TEST, $NAME else echo FAILED: $TEST, $NAME fi rm $TMPLOG exit $ret fwts-test/arg-width-0001/test-0005.sh000077500000000000000000000006731231470457100171740ustar00rootroot00000000000000#!/bin/bash # TEST="Test --log-width=80" NAME=test-0005.sh TMPLOG=$TMP/klog.log.$$ $FWTS --log-format="%line %owner " --log-width=80 -j $FWTSTESTDIR/../data --klog=$FWTSTESTDIR/arg-width-0001/klog.txt klog - | grep "^[0-9]*[ ]*klog" | cut -c7- > $TMPLOG diff $TMPLOG $FWTSTESTDIR/arg-width-0001/klog-0001.log >> $FAILURE_LOG ret=$? if [ $ret -eq 0 ]; then echo PASSED: $TEST, $NAME else echo FAILED: $TEST, $NAME fi rm $TMPLOG exit $ret fwts-test/arg-width-0001/test-0006.sh000077500000000000000000000006721231470457100171740ustar00rootroot00000000000000#!/bin/bash # TEST="Test --log-width=90" NAME=test-0006.sh TMPLOG=$TMP/klog.log.$$ $FWTS --log-format="%line %owner " --log-width=90 -j $FWTSTESTDIR/../data --klog=$FWTSTESTDIR/arg-width-0001/klog.txt klog - | grep "^[0-9]*[ ]*klog" | cut -c7- > $TMPLOG diff $TMPLOG $FWTSTESTDIR/arg-width-0001/klog-0002.log >> $FAILURE_LOG ret=$? if [ $ret -eq 0 ]; then echo PASSED: $TEST, $NAME else echo FAILED: $TEST, $NAME fi rm $TMPLOG exit $ret fwts-test/arg-width-0001/test-0007.sh000077500000000000000000000006751231470457100172000ustar00rootroot00000000000000#!/bin/bash # TEST="Test --log-width=100" NAME=test-0007.sh TMPLOG=$TMP/klog.log.$$ $FWTS --log-format="%line %owner " --log-width=100 -j $FWTSTESTDIR/../data --klog=$FWTSTESTDIR/arg-width-0001/klog.txt klog - | grep "^[0-9]*[ ]*klog" | cut -c7- > $TMPLOG diff $TMPLOG $FWTSTESTDIR/arg-width-0001/klog-0003.log >> $FAILURE_LOG ret=$? if [ $ret -eq 0 ]; then echo PASSED: $TEST, $NAME else echo FAILED: $TEST, $NAME fi rm $TMPLOG exit $ret fwts-test/arg-width-0001/test-0008.sh000077500000000000000000000006761231470457100172020ustar00rootroot00000000000000#!/bin/bash # TEST="Test --log-width=1000" NAME=test-0008.sh TMPLOG=$TMP/klog.log.$$ $FWTS --log-format="%line %owner " --log-width=1000 -j $FWTSTESTDIR/../data --klog=$FWTSTESTDIR/arg-width-0001/klog.txt klog - | grep "^[0-9]*[ ]*klog" | cut -c7- > $TMPLOG diff $TMPLOG $FWTSTESTDIR/arg-width-0001/klog-0004.log >> $FAILURE_LOG ret=$? if [ $ret -eq 0 ]; then echo PASSED: $TEST, $NAME else echo FAILED: $TEST, $NAME fi rm $TMPLOG exit $ret fwts-test/checksum-0001/000077500000000000000000000000001231470457100152025ustar00rootroot00000000000000fwts-test/checksum-0001/acpidump-0001.log000066400000000000000000004054211231470457100200730ustar00rootroot00000000000000DSDT @ 0xbf6d9b6a 0000: 44 53 44 54 f4 5f 00 00 02 11 54 4f 53 43 50 4c DSDT._....TOSCPL 0010: 43 52 45 53 54 4c 4e 45 00 00 04 06 49 4e 54 4c CRESTLNE....INTL 0020: 08 06 06 20 08 5a 30 30 30 01 08 5a 30 30 31 0a ... .Z000..Z001. 0030: 02 08 5a 30 30 32 0a 04 08 5a 30 30 33 0a 08 08 ..Z002...Z003... 0040: 5a 30 30 34 00 08 5a 30 30 35 0a 0f 08 5a 30 30 Z004..Z005...Z00 0050: 36 0a 0d 08 5a 30 30 37 0a 0b 08 5a 30 30 38 0a 6...Z007...Z008. 0060: 09 08 45 43 44 59 0a 07 5b 01 4d 55 54 58 00 5b ..ECDY..[.MUTX.[ 0070: 80 50 52 54 30 01 0a 80 0a 04 5b 81 0b 50 52 54 .PRT0.....[..PRT 0080: 30 13 50 38 30 48 20 14 4e 07 50 38 58 48 0a a0 0.P80H .N.P8XH.. 0090: 17 93 68 00 70 7d 7b 50 38 30 44 0c 00 ff ff ff ..h.p}{P80D..... 00a0: 00 69 00 50 38 30 44 a0 1b 93 68 01 70 7d 7b 50 .i.P80D...h.p}{P 00b0: 38 30 44 0c ff 00 ff ff 00 79 69 0a 08 00 00 50 80D......yi....P 00c0: 38 30 44 a0 1c 93 68 0a 02 70 7d 7b 50 38 30 44 80D...h..p}{P80D 00d0: 0c ff ff 00 ff 00 79 69 0a 10 00 00 50 38 30 44 ......yi....P80D 00e0: a0 1c 93 68 0a 03 70 7d 7b 50 38 30 44 0c ff ff ...h..p}{P80D... 00f0: ff 00 00 79 69 0a 18 00 00 50 38 30 44 70 50 38 ...yi....P80DpP8 0100: 30 44 50 38 30 48 14 0c 5f 50 49 43 01 70 68 47 0DP80H.._PIC.phG 0110: 50 49 43 14 46 06 5f 50 54 53 01 70 00 50 38 30 PIC.F._PTS.p.P80 0120: 44 50 38 58 48 00 68 a0 1e 93 68 0a 03 70 01 5c DP8XH.h...h..p.\ 0130: 2f 05 5f 53 42 5f 50 43 49 30 4c 50 43 42 45 43 /._SB_PCI0LPCBEC 0140: 30 5f 53 33 4c 44 a0 33 93 68 0a 04 70 01 5c 2f 0_S3LD.3.h..p.\/ 0150: 05 5f 53 42 5f 50 43 49 30 4c 50 43 42 45 43 30 ._SB_PCI0LPCBEC0 0160: 5f 53 33 4c 44 5c 2f 04 5f 53 42 5f 50 43 49 30 _S3LD\/._SB_PCI0 0170: 4c 50 43 42 50 48 53 53 0a 0e 14 4c 1c 5f 57 41 LPCBPHSS...L._WA 0180: 4b 01 50 38 58 48 01 0a ab a0 30 91 93 68 0a 03 K.P8XH....0..h.. 0190: 93 68 0a 04 a0 25 7b 43 46 47 44 0c 00 00 00 01 .h...%{CFGD..... 01a0: 00 a0 18 90 7b 43 46 47 44 0a f0 00 93 4f 53 59 ....{CFGD....OSY 01b0: 53 0b d1 07 54 52 41 50 0a 3d a0 18 93 52 50 31 S...TRAP.=...RP1 01c0: 44 00 86 5c 2f 03 5f 53 42 5f 50 43 49 30 52 50 D..\/._SB_PCI0RP 01d0: 30 31 00 a0 18 93 52 50 32 44 00 86 5c 2f 03 5f 01....RP2D..\/._ 01e0: 53 42 5f 50 43 49 30 52 50 30 32 00 a0 18 93 52 SB_PCI0RP02....R 01f0: 50 33 44 00 86 5c 2f 03 5f 53 42 5f 50 43 49 30 P3D..\/._SB_PCI0 0200: 52 50 30 33 00 a0 18 93 52 50 34 44 00 86 5c 2f RP03....RP4D..\/ 0210: 03 5f 53 42 5f 50 43 49 30 52 50 30 34 00 a0 18 ._SB_PCI0RP04... 0220: 93 52 50 35 44 00 86 5c 2f 03 5f 53 42 5f 50 43 .RP5D..\/._SB_PC 0230: 49 30 52 50 30 35 00 a0 18 93 52 50 36 44 00 86 I0RP05....RP6D.. 0240: 5c 2f 03 5f 53 42 5f 50 43 49 30 52 50 30 36 00 \/._SB_PCI0RP06. 0250: a0 12 93 68 0a 03 50 38 58 48 00 0a 30 54 52 41 ...h..P8XH..0TRA 0260: 50 0a 46 a0 43 0d 93 68 0a 04 50 38 58 48 00 0a P.F.C..h..P8XH.. 0270: 40 5c 2f 04 5f 53 42 5f 50 43 49 30 4c 50 43 42 @\/._SB_PCI0LPCB 0280: 50 48 53 53 0a 0f 70 57 41 4b 46 60 70 00 57 41 PHSS..pWAKF`p.WA 0290: 4b 46 7b 60 0a 05 60 a0 18 93 60 01 50 38 58 48 KF{`..`...`.P8XH 02a0: 00 0a 41 86 5c 2e 5f 53 42 5f 50 57 52 42 0a 02 ..A.\._SB_PWRB.. 02b0: a0 46 08 44 54 53 45 54 52 41 50 0a 47 a0 42 06 .F.DTSETRAP.G.B. 02c0: 90 5c 2f 04 5f 53 42 5f 50 43 49 30 4c 50 43 42 .\/._SB_PCI0LPCB 02d0: 45 43 4f 4b 93 45 43 44 59 00 a0 27 92 95 44 54 ECOK.ECDY..'..DT 02e0: 53 31 44 54 53 32 70 44 54 53 31 5c 2f 05 5f 53 S1DTS2pDTS1\/._S 02f0: 42 5f 50 43 49 30 4c 50 43 42 45 43 30 5f 53 4b B_PCI0LPCBEC0_SK 0300: 54 41 a1 1d 70 44 54 53 32 5c 2f 05 5f 53 42 5f TA..pDTS2\/._SB_ 0310: 50 43 49 30 4c 50 43 42 45 43 30 5f 53 4b 54 41 PCI0LPCBEC0_SKTA 0320: a1 16 5c 2f 04 5f 53 42 5f 50 43 49 30 4c 50 43 ..\/._SB_PCI0LPC 0330: 42 50 48 53 53 0a 10 5c 2e 5f 50 52 5f 52 50 50 BPHSS..\._PR_RPP 0340: 43 a4 12 04 02 00 00 14 1e 47 45 54 42 0b 77 68 C........GETB.wh 0350: 0a 08 60 77 69 0a 08 61 5b 13 6a 60 61 54 42 46 ..`wi..a[.j`aTBF 0360: 33 a4 54 42 46 33 14 42 09 50 4e 4f 54 08 a0 4a 3.TBF3.B.PNOT..J 0370: 06 4d 50 45 4e a0 31 7b 50 44 43 30 0a 08 00 86 .MPEN.1{PDC0.... 0380: 5c 2e 5f 50 52 5f 43 50 55 30 0a 80 a0 1a 7b 50 \._PR_CPU0....{P 0390: 44 43 30 0a 10 00 5b 22 0a 64 86 5c 2e 5f 50 52 DC0...[".d.\._PR 03a0: 5f 43 50 55 30 0a 81 a0 31 7b 50 44 43 31 0a 08 _CPU0...1{PDC1.. 03b0: 00 86 5c 2e 5f 50 52 5f 43 50 55 31 0a 80 a0 1a ..\._PR_CPU1.... 03c0: 7b 50 44 43 31 0a 10 00 5b 22 0a 64 86 5c 2e 5f {PDC1...[".d.\._ 03d0: 50 52 5f 43 50 55 31 0a 81 a1 1f 86 5c 2e 5f 50 PR_CPU1.....\._P 03e0: 52 5f 43 50 55 30 0a 80 5b 22 0a 64 86 5c 2e 5f R_CPU0..[".d.\._ 03f0: 50 52 5f 43 50 55 30 0a 81 14 17 54 52 41 50 09 PR_CPU0....TRAP. 0400: 70 68 53 4d 49 46 70 00 54 52 50 30 a4 53 4d 49 phSMIFp.TRP0.SMI 0410: 46 10 41 0f 5f 53 42 5f 14 4a 0e 5f 49 4e 49 00 F.A._SB_.J._INI. 0420: 70 0b 99 99 4d 41 52 4b a0 1c 44 54 53 45 54 52 p...MARK..DTSETR 0430: 41 50 0a 47 5e 2f 03 50 43 49 30 4c 50 43 42 50 AP.G^/.PCI0LPCBP 0440: 48 53 53 0a 10 70 0b d0 07 4f 53 59 53 a0 4a 09 HSS..p...OSYS.J. 0450: 5b 12 5f 4f 53 49 60 a0 18 5f 4f 53 49 0d 4c 69 [._OSI`.._OSI.Li 0460: 6e 75 78 00 70 01 4c 49 4e 58 70 00 45 43 44 59 nux.p.LINXp.ECDY 0470: a0 1b 5f 4f 53 49 0d 57 69 6e 64 6f 77 73 20 32 .._OSI.Windows 2 0480: 30 30 31 00 70 0b d1 07 4f 53 59 53 a0 1f 5f 4f 001.p...OSYS.._O 0490: 53 49 0d 57 69 6e 64 6f 77 73 20 32 30 30 31 20 SI.Windows 2001 04a0: 53 50 31 00 70 0b d1 07 4f 53 59 53 a0 1f 5f 4f SP1.p...OSYS.._O 04b0: 53 49 0d 57 69 6e 64 6f 77 73 20 32 30 30 31 20 SI.Windows 2001 04c0: 53 50 32 00 70 0b d2 07 4f 53 59 53 a0 1b 5f 4f SP2.p...OSYS.._O 04d0: 53 49 0d 57 69 6e 64 6f 77 73 20 32 30 30 36 00 SI.Windows 2006. 04e0: 70 0b d6 07 4f 53 59 53 a0 14 90 4d 50 45 4e 93 p...OSYS...MPEN. 04f0: 4f 53 59 53 0b d1 07 54 52 41 50 0a 3d 54 52 41 OSYS...TRAP.=TRA 0500: 50 0a 2b 5b 80 47 4e 56 53 00 0c bc 2d 6e bf 0b P.+[.GNVS...-n.. 0510: 00 01 5b 81 45 24 47 4e 56 53 10 4f 53 59 53 10 ..[.E$GNVS.OSYS. 0520: 53 4d 49 46 08 50 52 4d 30 08 50 52 4d 31 08 53 SMIF.PRM0.PRM1.S 0530: 43 49 46 08 50 52 4d 32 08 50 52 4d 33 08 4c 43 CIF.PRM2.PRM3.LC 0540: 4b 46 08 50 52 4d 34 08 50 52 4d 35 08 50 38 30 KF.PRM4.PRM5.P80 0550: 44 20 4c 49 44 53 08 50 57 52 53 08 44 42 47 53 D LIDS.PWRS.DBGS 0560: 08 4c 49 4e 58 08 00 08 41 43 54 31 08 41 43 54 .LINX...ACT1.ACT 0570: 54 08 50 53 56 54 08 54 43 31 56 08 54 43 32 56 T.PSVT.TC1V.TC2V 0580: 08 54 53 50 56 08 43 52 54 54 08 44 54 53 45 08 .TSPV.CRTT.DTSE. 0590: 44 54 53 31 08 44 54 53 32 08 00 40 05 41 50 49 DTS1.DTS2..@.API 05a0: 43 08 4d 50 45 4e 08 50 43 50 30 08 50 43 50 31 C.MPEN.PCP0.PCP1 05b0: 08 50 50 43 4d 08 00 28 43 4d 41 50 08 43 4d 42 .PPCM..(CMAP.CMB 05c0: 50 08 4c 50 54 50 08 46 44 43 50 08 00 30 49 47 P.LPTP.FDCP..0IG 05d0: 44 53 08 54 4c 53 54 08 43 41 44 4c 08 50 41 44 DS.TLST.CADL.PAD 05e0: 4c 08 43 53 54 45 10 4e 53 54 45 10 53 53 54 45 L.CSTE.NSTE.SSTE 05f0: 10 4e 44 49 44 08 44 49 44 31 20 44 49 44 32 20 .NDID.DID1 DID2 0600: 44 49 44 33 20 44 49 44 34 20 44 49 44 35 20 00 DID3 DID4 DID5 . 0610: 40 06 42 4c 43 53 08 42 52 54 4c 08 41 4c 53 45 @.BLCS.BRTL.ALSE 0620: 08 41 4c 41 46 08 4c 4c 4f 57 08 4c 48 49 48 08 .ALAF.LLOW.LHIH. 0630: 00 08 45 4d 41 45 08 45 4d 41 50 10 45 4d 41 4c ..EMAE.EMAP.EMAL 0640: 10 00 08 4d 45 46 45 08 00 18 54 50 4d 50 08 54 ...MEFE...TPMP.T 0650: 50 4d 45 08 00 40 04 47 54 46 30 38 47 54 46 32 PME..@.GTF08GTF2 0660: 38 49 44 45 4d 08 47 54 46 31 38 00 40 09 41 53 8IDEM.GTF18.@.AS 0670: 4c 42 20 49 42 54 54 08 49 50 41 54 08 49 54 56 LB IBTT.IPAT.ITV 0680: 46 08 49 54 56 4d 08 49 50 53 43 08 49 42 4c 43 F.ITVM.IPSC.IBLC 0690: 08 49 42 49 41 08 49 53 53 43 08 49 34 30 39 08 .IBIA.ISSC.I409. 06a0: 49 35 30 39 08 49 36 30 39 08 49 37 30 39 08 49 I509.I609.I709.I 06b0: 44 4d 4d 08 49 44 4d 53 08 49 46 31 45 08 48 56 DMM.IDMS.IF1E.HV 06c0: 43 4f 08 4e 58 44 31 20 4e 58 44 32 20 4d 41 52 CO.NXD1 NXD2 MAR 06d0: 4b 10 42 52 41 44 08 42 54 45 4e 08 56 56 45 4e K.BRAD.BTEN.VVEN 06e0: 08 42 47 54 4c 08 54 4d 45 45 01 00 07 53 43 55 .BGTL.TMEE...SCU 06f0: 30 01 53 43 55 31 01 53 43 55 32 01 53 43 55 33 0.SCU1.SCU2.SCU3 0700: 01 00 04 58 4b 53 50 01 58 4b 49 4e 01 58 4b 49 ...XKSP.XKIN.XKI 0710: 44 01 58 4b 4f 4b 01 00 04 42 47 55 31 08 42 53 D.XKOK...BGU1.BS 0720: 54 31 08 42 46 43 31 10 57 4b 4c 4e 08 57 41 4b T1.BFC1.WKLN.WAK 0730: 46 08 44 53 4d 44 08 42 41 59 53 08 48 41 50 45 F.DSMD.BAYS.HAPE 0740: 01 00 07 44 54 53 4d 01 00 07 4f 44 54 31 08 4f ...DTSM...ODT1.O 0750: 44 54 32 08 44 54 53 57 08 08 44 53 45 4e 01 08 DT2.DTSW..DSEN.. 0760: 45 43 4f 4e 00 08 47 50 49 43 00 08 43 54 59 50 ECON..GPIC..CTYP 0770: 00 08 4c 30 31 43 00 08 56 46 4e 30 00 08 56 46 ..L01C..VFN0..VF 0780: 4e 31 00 10 4a 7c 5f 47 50 45 14 46 35 5f 4c 30 N1..J|_GPE.F5_L0 0790: 31 00 72 4c 30 31 43 01 4c 30 31 43 50 38 58 48 1.rL01C.L01CP8XH 07a0: 00 01 50 38 58 48 01 4c 30 31 43 a0 48 08 90 93 ..P8XH.L01C.H... 07b0: 52 50 31 44 00 5c 2f 04 5f 53 42 5f 50 43 49 30 RP1D.\/._SB_PCI0 07c0: 52 50 30 31 48 50 53 58 5b 22 0a 64 a0 40 05 5c RP01HPSX[".d.@.\ 07d0: 2f 04 5f 53 42 5f 50 43 49 30 52 50 30 31 50 44 /._SB_PCI0RP01PD 07e0: 43 58 70 01 5c 2f 04 5f 53 42 5f 50 43 49 30 52 CXp.\/._SB_PCI0R 07f0: 50 30 31 50 44 43 58 70 01 5c 2f 04 5f 53 42 5f P01PDCXp.\/._SB_ 0800: 50 43 49 30 52 50 30 31 48 50 53 58 86 5c 2f 03 PCI0RP01HPSX.\/. 0810: 5f 53 42 5f 50 43 49 30 52 50 30 31 00 a1 16 70 _SB_PCI0RP01...p 0820: 01 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 30 31 .\/._SB_PCI0RP01 0830: 48 50 53 58 a0 48 08 90 93 52 50 32 44 00 5c 2f HPSX.H...RP2D.\/ 0840: 04 5f 53 42 5f 50 43 49 30 52 50 30 32 48 50 53 ._SB_PCI0RP02HPS 0850: 58 5b 22 0a 64 a0 40 05 5c 2f 04 5f 53 42 5f 50 X[".d.@.\/._SB_P 0860: 43 49 30 52 50 30 32 50 44 43 58 70 01 5c 2f 04 CI0RP02PDCXp.\/. 0870: 5f 53 42 5f 50 43 49 30 52 50 30 32 50 44 43 58 _SB_PCI0RP02PDCX 0880: 70 01 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 30 p.\/._SB_PCI0RP0 0890: 32 48 50 53 58 86 5c 2f 03 5f 53 42 5f 50 43 49 2HPSX.\/._SB_PCI 08a0: 30 52 50 30 32 00 a1 16 70 01 5c 2f 04 5f 53 42 0RP02...p.\/._SB 08b0: 5f 50 43 49 30 52 50 30 32 48 50 53 58 a0 48 08 _PCI0RP02HPSX.H. 08c0: 90 93 52 50 33 44 00 5c 2f 04 5f 53 42 5f 50 43 ..RP3D.\/._SB_PC 08d0: 49 30 52 50 30 33 48 50 53 58 5b 22 0a 64 a0 40 I0RP03HPSX[".d.@ 08e0: 05 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 30 33 .\/._SB_PCI0RP03 08f0: 50 44 43 58 70 01 5c 2f 04 5f 53 42 5f 50 43 49 PDCXp.\/._SB_PCI 0900: 30 52 50 30 33 50 44 43 58 70 01 5c 2f 04 5f 53 0RP03PDCXp.\/._S 0910: 42 5f 50 43 49 30 52 50 30 33 48 50 53 58 86 5c B_PCI0RP03HPSX.\ 0920: 2f 03 5f 53 42 5f 50 43 49 30 52 50 30 33 00 a1 /._SB_PCI0RP03.. 0930: 16 70 01 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 .p.\/._SB_PCI0RP 0940: 30 33 48 50 53 58 a0 48 08 90 93 52 50 34 44 00 03HPSX.H...RP4D. 0950: 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 30 34 48 \/._SB_PCI0RP04H 0960: 50 53 58 5b 22 0a 64 a0 40 05 5c 2f 04 5f 53 42 PSX[".d.@.\/._SB 0970: 5f 50 43 49 30 52 50 30 34 50 44 43 58 70 01 5c _PCI0RP04PDCXp.\ 0980: 2f 04 5f 53 42 5f 50 43 49 30 52 50 30 34 50 44 /._SB_PCI0RP04PD 0990: 43 58 70 01 5c 2f 04 5f 53 42 5f 50 43 49 30 52 CXp.\/._SB_PCI0R 09a0: 50 30 34 48 50 53 58 86 5c 2f 03 5f 53 42 5f 50 P04HPSX.\/._SB_P 09b0: 43 49 30 52 50 30 34 00 a1 16 70 01 5c 2f 04 5f CI0RP04...p.\/._ 09c0: 53 42 5f 50 43 49 30 52 50 30 34 48 50 53 58 a0 SB_PCI0RP04HPSX. 09d0: 48 08 90 93 52 50 35 44 00 5c 2f 04 5f 53 42 5f H...RP5D.\/._SB_ 09e0: 50 43 49 30 52 50 30 35 48 50 53 58 5b 22 0a 64 PCI0RP05HPSX[".d 09f0: a0 40 05 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 .@.\/._SB_PCI0RP 0a00: 30 35 50 44 43 58 70 01 5c 2f 04 5f 53 42 5f 50 05PDCXp.\/._SB_P 0a10: 43 49 30 52 50 30 35 50 44 43 58 70 01 5c 2f 04 CI0RP05PDCXp.\/. 0a20: 5f 53 42 5f 50 43 49 30 52 50 30 35 48 50 53 58 _SB_PCI0RP05HPSX 0a30: 86 5c 2f 03 5f 53 42 5f 50 43 49 30 52 50 30 35 .\/._SB_PCI0RP05 0a40: 00 a1 16 70 01 5c 2f 04 5f 53 42 5f 50 43 49 30 ...p.\/._SB_PCI0 0a50: 52 50 30 35 48 50 53 58 a0 48 08 90 93 52 50 36 RP05HPSX.H...RP6 0a60: 44 00 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 30 D.\/._SB_PCI0RP0 0a70: 36 48 50 53 58 5b 22 0a 64 a0 40 05 5c 2f 04 5f 6HPSX[".d.@.\/._ 0a80: 53 42 5f 50 43 49 30 52 50 30 36 50 44 43 58 70 SB_PCI0RP06PDCXp 0a90: 01 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 30 36 .\/._SB_PCI0RP06 0aa0: 50 44 43 58 70 01 5c 2f 04 5f 53 42 5f 50 43 49 PDCXp.\/._SB_PCI 0ab0: 30 52 50 30 36 48 50 53 58 86 5c 2f 03 5f 53 42 0RP06HPSX.\/._SB 0ac0: 5f 50 43 49 30 52 50 30 36 00 a1 16 70 01 5c 2f _PCI0RP06...p.\/ 0ad0: 04 5f 53 42 5f 50 43 49 30 52 50 30 36 48 50 53 ._SB_PCI0RP06HPS 0ae0: 58 14 42 0d 5f 4c 30 32 00 70 00 47 50 45 43 a0 X.B._L02.p.GPEC. 0af0: 4d 0a 5c 2f 04 5f 53 42 5f 50 43 49 30 4c 50 43 M.\/._SB_PCI0LPC 0b00: 42 45 43 4f 4b a0 4e 04 93 44 54 53 57 01 a0 27 BECOK.N..DTSW..' 0b10: 92 95 44 54 53 31 44 54 53 32 70 44 54 53 31 5c ..DTS1DTS2pDTS1\ 0b20: 2f 05 5f 53 42 5f 50 43 49 30 4c 50 43 42 45 43 /._SB_PCI0LPCBEC 0b30: 30 5f 53 4b 54 41 a1 1d 70 44 54 53 32 5c 2f 05 0_SKTA..pDTS2\/. 0b40: 5f 53 42 5f 50 43 49 30 4c 50 43 42 45 43 30 5f _SB_PCI0LPCBEC0_ 0b50: 53 4b 54 41 a1 48 04 a0 27 92 95 4f 44 54 31 4f SKTA.H..'..ODT1O 0b60: 44 54 32 70 4f 44 54 31 5c 2f 05 5f 53 42 5f 50 DT2pODT1\/._SB_P 0b70: 43 49 30 4c 50 43 42 45 43 30 5f 53 4b 54 41 a1 CI0LPCBEC0_SKTA. 0b80: 1d 70 4f 44 54 32 5c 2f 05 5f 53 42 5f 50 43 49 .pODT2\/._SB_PCI 0b90: 30 4c 50 43 42 45 43 30 5f 53 4b 54 41 a1 16 5c 0LPCBEC0_SKTA..\ 0ba0: 2f 04 5f 53 42 5f 50 43 49 30 4c 50 43 42 50 48 /._SB_PCI0LPCBPH 0bb0: 53 53 0a 10 14 18 5f 4c 30 33 00 86 5c 2f 03 5f SS...._L03..\/._ 0bc0: 53 42 5f 50 43 49 30 55 53 42 31 0a 02 14 18 5f SB_PCI0USB1...._ 0bd0: 4c 30 34 00 86 5c 2f 03 5f 53 42 5f 50 43 49 30 L04..\/._SB_PCI0 0be0: 55 53 42 32 0a 02 14 18 5f 4c 30 35 00 86 5c 2f USB2...._L05..\/ 0bf0: 03 5f 53 42 5f 50 43 49 30 55 53 42 35 0a 02 14 ._SB_PCI0USB5... 0c00: 36 5f 4c 30 36 00 a0 27 5c 2f 04 5f 53 42 5f 50 6_L06..'\/._SB_P 0c10: 43 49 30 47 46 58 30 47 53 53 45 5c 2f 04 5f 53 CI0GFX0GSSE\/._S 0c20: 42 5f 50 43 49 30 47 46 58 30 47 53 43 49 a1 07 B_PCI0GFX0GSCI.. 0c30: 70 01 53 43 49 53 14 43 1f 5f 4c 30 39 00 a0 41 p.SCIS.C._L09..A 0c40: 05 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 30 31 .\/._SB_PCI0RP01 0c50: 50 53 50 58 70 01 5c 2f 04 5f 53 42 5f 50 43 49 PSPXp.\/._SB_PCI 0c60: 30 52 50 30 31 50 53 50 58 70 01 5c 2f 04 5f 53 0RP01PSPXp.\/._S 0c70: 42 5f 50 43 49 30 52 50 30 31 50 4d 53 58 86 5c B_PCI0RP01PMSX.\ 0c80: 2f 03 5f 53 42 5f 50 43 49 30 52 50 30 31 0a 02 /._SB_PCI0RP01.. 0c90: a0 41 05 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 .A.\/._SB_PCI0RP 0ca0: 30 32 50 53 50 58 70 01 5c 2f 04 5f 53 42 5f 50 02PSPXp.\/._SB_P 0cb0: 43 49 30 52 50 30 32 50 53 50 58 70 01 5c 2f 04 CI0RP02PSPXp.\/. 0cc0: 5f 53 42 5f 50 43 49 30 52 50 30 32 50 4d 53 58 _SB_PCI0RP02PMSX 0cd0: 86 5c 2f 03 5f 53 42 5f 50 43 49 30 52 50 30 32 .\/._SB_PCI0RP02 0ce0: 0a 02 a0 41 05 5c 2f 04 5f 53 42 5f 50 43 49 30 ...A.\/._SB_PCI0 0cf0: 52 50 30 33 50 53 50 58 70 01 5c 2f 04 5f 53 42 RP03PSPXp.\/._SB 0d00: 5f 50 43 49 30 52 50 30 33 50 53 50 58 70 01 5c _PCI0RP03PSPXp.\ 0d10: 2f 04 5f 53 42 5f 50 43 49 30 52 50 30 33 50 4d /._SB_PCI0RP03PM 0d20: 53 58 86 5c 2f 03 5f 53 42 5f 50 43 49 30 52 50 SX.\/._SB_PCI0RP 0d30: 30 33 0a 02 a0 41 05 5c 2f 04 5f 53 42 5f 50 43 03...A.\/._SB_PC 0d40: 49 30 52 50 30 34 50 53 50 58 70 01 5c 2f 04 5f I0RP04PSPXp.\/._ 0d50: 53 42 5f 50 43 49 30 52 50 30 34 50 53 50 58 70 SB_PCI0RP04PSPXp 0d60: 01 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 30 34 .\/._SB_PCI0RP04 0d70: 50 4d 53 58 86 5c 2f 03 5f 53 42 5f 50 43 49 30 PMSX.\/._SB_PCI0 0d80: 52 50 30 34 0a 02 a0 41 05 5c 2f 04 5f 53 42 5f RP04...A.\/._SB_ 0d90: 50 43 49 30 52 50 30 35 50 53 50 58 70 01 5c 2f PCI0RP05PSPXp.\/ 0da0: 04 5f 53 42 5f 50 43 49 30 52 50 30 35 50 53 50 ._SB_PCI0RP05PSP 0db0: 58 70 01 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 Xp.\/._SB_PCI0RP 0dc0: 30 35 50 4d 53 58 86 5c 2f 03 5f 53 42 5f 50 43 05PMSX.\/._SB_PC 0dd0: 49 30 52 50 30 35 0a 02 a0 41 05 5c 2f 04 5f 53 I0RP05...A.\/._S 0de0: 42 5f 50 43 49 30 52 50 30 36 50 53 50 58 70 01 B_PCI0RP06PSPXp. 0df0: 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 30 36 50 \/._SB_PCI0RP06P 0e00: 53 50 58 70 01 5c 2f 04 5f 53 42 5f 50 43 49 30 SPXp.\/._SB_PCI0 0e10: 52 50 30 36 50 4d 53 58 86 5c 2f 03 5f 53 42 5f RP06PMSX.\/._SB_ 0e20: 50 43 49 30 52 50 30 36 0a 02 14 18 5f 4c 30 42 PCI0RP06...._L0B 0e30: 00 86 5c 2f 03 5f 53 42 5f 50 43 49 30 50 43 49 ..\/._SB_PCI0PCI 0e40: 42 0a 02 14 18 5f 4c 30 43 00 86 5c 2f 03 5f 53 B...._L0C..\/._S 0e50: 42 5f 50 43 49 30 55 53 42 33 0a 02 14 4b 0b 5f B_PCI0USB3...K._ 0e60: 4c 30 44 00 a0 3b 5c 2f 04 5f 53 42 5f 50 43 49 L0D..;\/._SB_PCI 0e70: 30 45 48 43 31 50 4d 45 53 70 01 5c 2f 04 5f 53 0EHC1PMESp.\/._S 0e80: 42 5f 50 43 49 30 45 48 43 31 50 4d 45 53 86 5c B_PCI0EHC1PMES.\ 0e90: 2f 03 5f 53 42 5f 50 43 49 30 45 48 43 31 0a 02 /._SB_PCI0EHC1.. 0ea0: a0 3b 5c 2f 04 5f 53 42 5f 50 43 49 30 45 48 43 .;\/._SB_PCI0EHC 0eb0: 32 50 4d 45 53 70 01 5c 2f 04 5f 53 42 5f 50 43 2PMESp.\/._SB_PC 0ec0: 49 30 45 48 43 32 50 4d 45 53 86 5c 2f 03 5f 53 I0EHC2PMES.\/._S 0ed0: 42 5f 50 43 49 30 45 48 43 32 0a 02 a0 3b 5c 2f B_PCI0EHC2...;\/ 0ee0: 04 5f 53 42 5f 50 43 49 30 48 44 45 46 50 4d 45 ._SB_PCI0HDEFPME 0ef0: 53 70 01 5c 2f 04 5f 53 42 5f 50 43 49 30 48 44 Sp.\/._SB_PCI0HD 0f00: 45 46 50 4d 45 53 86 5c 2f 03 5f 53 42 5f 50 43 EFPMES.\/._SB_PC 0f10: 49 30 48 44 45 46 0a 02 14 18 5f 4c 30 45 00 86 I0HDEF...._L0E.. 0f20: 5c 2f 03 5f 53 42 5f 50 43 49 30 55 53 42 34 0a \/._SB_PCI0USB4. 0f30: 02 14 1c 5f 4c 31 42 00 80 4c 50 4f 4c 4c 50 4f ..._L1B..LPOLLPO 0f40: 4c 86 5c 2e 5f 53 42 5f 4c 49 44 30 0a 80 10 46 L.\._SB_LID0...F 0f50: 0b 5f 50 52 5f 5b 83 0b 43 50 55 30 00 10 10 00 ._PR_[..CPU0.... 0f60: 00 06 5b 83 0b 43 50 55 31 01 10 10 00 00 06 14 ..[..CPU1....... 0f70: 45 09 52 50 50 43 00 a0 4d 08 93 4f 53 59 53 0b E.RPPC..M..OSYS. 0f80: d2 07 a0 42 08 7b 43 46 47 44 01 00 a0 42 04 94 ...B.{CFGD...B.. 0f90: 5e 2e 43 50 55 30 5f 50 50 43 00 74 5e 2e 43 50 ^.CPU0_PPC.t^.CP 0fa0: 55 30 5f 50 50 43 01 5e 2e 43 50 55 30 5f 50 50 U0_PPC.^.CPU0_PP 0fb0: 43 50 4e 4f 54 72 5e 2e 43 50 55 30 5f 50 50 43 CPNOTr^.CPU0_PPC 0fc0: 01 5e 2e 43 50 55 30 5f 50 50 43 50 4e 4f 54 a1 .^.CPU0_PPCPNOT. 0fd0: 35 72 5e 2e 43 50 55 30 5f 50 50 43 01 5e 2e 43 5r^.CPU0_PPC.^.C 0fe0: 50 55 30 5f 50 50 43 50 4e 4f 54 74 5e 2e 43 50 PU0_PPCPNOTt^.CP 0ff0: 55 30 5f 50 50 43 01 5e 2e 43 50 55 30 5f 50 50 U0_PPC.^.CPU0_PP 1000: 43 50 4e 4f 54 08 46 57 53 4f 0d 46 57 53 4f 00 CPNOT.FWSO.FWSO. 1010: 08 5f 50 53 43 00 14 12 5f 50 53 30 00 70 5f 50 ._PSC..._PS0.p_P 1020: 53 43 60 70 00 5f 50 53 43 14 0d 5f 50 53 33 00 SC`p._PSC.._PS3. 1030: 70 0a 03 5f 50 53 43 10 8c fb 04 5f 53 42 5f 5b p.._PSC...._SB_[ 1040: 82 4f 3e 41 4d 57 30 08 5f 48 49 44 0d 70 6e 70 .O>AMW0._HID.pnp 1050: 30 63 31 34 00 08 5f 55 49 44 00 08 5f 57 44 47 0c14.._UID.._WDG 1060: 11 3f 0a 3c a7 1d 85 2e 53 d0 5f 49 9d fa 1a 4a .?.<....S._I...J 1070: d6 2e 6a 86 41 43 01 00 3b 6d 43 71 dd fb 72 4c ..j.AC..;mCq..rL 1080: bc b8 43 5b fe 0d 64 f9 42 43 01 00 21 12 90 05 ..C[..d.BC..!... 1090: 66 d5 d1 11 b2 f0 00 a0 c9 06 29 10 42 41 01 00 f.........).BA.. 10a0: 08 53 54 41 43 11 07 0a 04 01 14 03 00 14 1f 57 .STAC..........W 10b0: 51 41 43 01 70 0d 4d 58 4d 54 43 43 6f 6e 66 69 QAC.p.MXMTCConfi 10c0: 67 44 61 74 61 00 5b 31 a4 53 54 41 43 08 53 54 gData.[1.STAC.ST 10d0: 42 43 11 07 0a 04 01 00 00 00 14 34 57 51 42 43 BC.........4WQBC 10e0: 01 70 0d 47 65 74 20 4d 58 4d 54 43 43 6f 6e 74 .p.Get MXMTCCont 10f0: 72 6f 6c 44 61 74 61 3a 20 53 54 42 43 20 3d 20 rolData: STBC = 1100: 00 5b 31 70 53 54 42 43 5b 31 a4 53 54 42 43 14 .[1pSTBC[1.STBC. 1110: 47 06 57 53 42 43 02 70 69 53 54 42 43 70 0d 53 G.WSBC.piSTBCp.S 1120: 65 74 20 4d 58 4d 54 43 43 6f 6e 74 72 6f 6c 44 et MXMTCControlD 1130: 61 74 61 3a 20 53 54 42 43 20 3d 20 00 5b 31 70 ata: STBC = .[1p 1140: 53 54 42 43 5b 31 a0 30 93 5e 5e 2f 03 50 43 49 STBC[1.0.^^/.PCI 1150: 30 4c 50 43 42 45 43 4f 4b 01 70 83 88 53 54 42 0LPCBECOK.p..STB 1160: 43 01 00 5e 5e 2f 04 50 43 49 30 4c 50 43 42 45 C..^^/.PCI0LPCBE 1170: 43 30 5f 53 4b 54 43 08 57 51 42 41 11 43 2b 0b C0_SKTC.WQBA.C+. 1180: ae 02 46 4f 4d 42 01 00 00 00 9e 02 00 00 c0 0b ..FOMB.......... 1190: 00 00 44 53 00 01 1a 7d da 54 28 d9 85 00 01 06 ..DS...}.T(..... 11a0: 18 42 10 07 10 0a 4b 61 02 c9 21 52 3c 18 94 05 .B....Ka..!R<... 11b0: 10 43 88 57 04 44 04 84 bc 0a b0 29 c0 24 88 fa .C.W.D.....).$.. 11c0: f7 87 28 09 0e 25 04 42 12 05 98 17 a0 5b 80 61 ..(..%.B.....[.a 11d0: 01 b6 05 98 16 e0 18 92 4a 03 a7 04 96 02 21 a1 ........J.....!. 11e0: 02 94 0b f0 2d 40 3b a2 24 0b b0 0c 23 02 8f 82 ....-@;.$...#... 11f0: a1 71 68 ec 30 2c 13 4c 83 38 8c b2 91 45 60 dc .qh.0,.L.8...E`. 1200: 4e 05 c8 15 20 4c 80 78 54 61 34 07 45 e0 42 63 N... L.xTa4.E.Bc 1210: 64 40 c8 a3 00 ab a3 d0 a4 12 d8 bd 00 65 02 2c d@...........e., 1220: 0a 10 27 c0 9a 00 63 48 32 28 40 9b 00 5b 20 42 ..'...cH2(@..[ B 1230: 0f d4 19 8a 46 70 02 51 6a 46 11 48 ac 1a 01 85 ....Fp.QjF.H.... 1240: 12 34 46 b0 10 81 c2 86 37 46 98 03 88 d1 fe 20 .4F.....7F..... 1250: 48 20 05 e3 66 91 46 83 1a 6b 82 63 f7 68 4e b8 H ..f.F..k.c.hN. 1260: 73 01 d2 e7 26 90 a3 3b b8 3a 07 4d 86 c7 b0 1e s...&..;.:.M.... 1270: 06 d8 29 00 ef 1a 50 d3 3f 78 26 08 0e 35 44 8f ..)...P.?x&..5D. 1280: 3a dc 09 1c fb 91 30 88 b3 3b 6e ac c3 c9 68 d0 :.....0..;n...h. 1290: a5 0a 30 7b 00 d0 d0 12 9c f6 99 84 7e 0f 38 9f ..0{........~.8. 12a0: 9e 21 89 fc 41 a0 46 e6 ff 3f b4 c7 78 5a 31 43 .!..A.F..?..xZ1C 12b0: 3e 0b 1c 16 13 0b a1 4d 6a 3c 40 40 e1 d1 40 08 >......Mj<@@..@. 12c0: 6f 06 9e af 09 46 86 90 93 f1 a0 06 e0 41 d7 3a o....F.......A.: 12d0: 32 8d 27 a6 21 cf e8 00 22 bf 32 78 0c 41 02 f9 2.'.!...".2x.A.. 12e0: c4 60 b8 c7 81 13 78 02 f0 59 40 10 92 00 21 51 .`....x..Y@...!Q 12f0: e3 a7 47 08 7e 7a 78 93 30 28 1f d2 99 f9 90 e1 ..G.~zx.0(...... 1300: 11 c2 07 c4 7b 9f 3b 19 c1 29 7b a4 e0 b0 7e 0e ....{.;..){...~. 1310: 20 c0 af 0f 8f 0d 09 7c ae 08 8c 1d aa fd 0a 40 ......|.......@ 1320: 08 1e ed 51 e0 54 23 1c 2d 78 08 8a 1c 03 4a cc ...Q.T#.-x....J. 1330: 18 50 03 38 85 d0 e7 73 04 47 14 25 f6 21 19 da .P.8...s.G.%.!.. 1340: 08 e1 1f 39 4e c1 f7 8b 23 3d ad 23 78 91 f0 08 ...9N...#=.#x... 1350: 30 e1 ce 28 a8 38 30 f4 ff 7f 4c 01 dc 7a 3b a6 0..(.80...L..z;. 1360: 80 3e c0 31 05 50 fc ff 3f a6 00 87 a8 c7 14 f4 .>.1.P..?....... 1370: 40 0c 7c 2e a1 0d ff 96 c1 8e 03 87 74 6a 8f 28 @.|.........tj.( 1380: 80 29 79 47 14 50 8c 14 d6 f1 04 18 05 3c 9b a0 .)yG.P.......<.. 1390: 22 1d 4f 80 ce ff ff 78 02 58 b8 9a bc 92 84 7d ".O....x.X.....} 13a0: 1e 78 1d 89 14 e3 41 e2 b5 e4 c1 24 46 98 08 8f .x....A....$F... 13b0: 27 1e 47 c0 b7 82 28 91 8e 3e c4 83 49 28 63 3e '.G...(..>..I(c> 13c0: a3 84 89 f9 04 70 22 ef 27 46 0a 73 2a 8f 27 2c .....p".'F.s*.', 13d0: c4 f1 04 a0 85 e2 e3 09 3a 2c 84 fe ff c7 13 dc ........:,...... 13e0: e1 c1 a7 0c fc 85 0c c6 f9 04 30 24 f0 7c 02 ca ..........0$.|.. 13f0: db 18 e6 80 02 8c 14 da f4 a9 d1 a8 55 83 32 35 ............U.25 1400: ca 34 a8 d5 a7 52 63 c6 4c 9c 52 bc 6c 8d df f2 .4...Rc.L.R.l... 1410: 9e 09 02 b1 20 0a 81 38 cc f3 42 20 96 a2 01 84 .... ..8..B .... 1420: 85 06 a1 42 a9 05 e2 98 20 34 92 0a 10 f6 ff 07 ...B.... 4...... 1430: 5b 82 1b 4c 49 44 30 08 5f 48 49 44 0c 41 d0 0c [..LID0._HID.A.. 1440: 0d 14 0b 5f 4c 49 44 00 a4 4c 50 4f 4c 5b 82 0f ..._LID..LPOL[.. 1450: 50 57 52 42 08 5f 48 49 44 0c 41 d0 0c 0c 5b 82 PWRB._HID.A...[. 1460: 84 b9 04 50 43 49 30 14 09 5f 53 33 44 00 a4 0a ...PCI0.._S3D... 1470: 02 14 09 5f 53 34 44 00 a4 0a 02 08 5f 48 49 44 ..._S4D....._HID 1480: 0c 41 d0 0a 08 08 5f 43 49 44 0c 41 d0 0a 03 5b .A...._CID.A...[ 1490: 82 43 0e 4d 43 48 43 08 5f 41 44 52 00 5b 80 48 .C.MCHC._ADR.[.H 14a0: 42 55 53 02 0a 40 0a c0 5b 81 4a 0c 48 42 55 53 BUS..@..[.J.HBUS 14b0: 03 45 50 45 4e 01 00 0b 45 50 42 52 14 00 20 4d .EPEN...EPBR.. M 14c0: 48 45 4e 01 00 0d 4d 48 42 52 12 00 40 0a 50 58 HEN...MHBR..@.PX 14d0: 45 4e 01 50 58 53 5a 02 00 17 50 58 42 52 06 00 EN.PXSZ...PXBR.. 14e0: 20 44 49 45 4e 01 00 0b 44 49 42 52 14 00 20 49 DIEN...DIBR.. I 14f0: 50 45 4e 01 00 0b 49 50 42 52 14 00 40 0e 00 04 PEN...IPBR..@... 1500: 50 4d 30 48 02 00 02 50 4d 31 4c 02 00 02 50 4d PM0H...PM1L...PM 1510: 31 48 02 00 02 50 4d 32 4c 02 00 02 50 4d 32 48 1H...PM2L...PM2H 1520: 02 00 02 50 4d 33 4c 02 00 02 50 4d 33 48 02 00 ...PM3L...PM3H.. 1530: 02 50 4d 34 4c 02 00 02 50 4d 34 48 02 00 02 50 .PM4L...PM4H...P 1540: 4d 35 4c 02 00 02 50 4d 35 48 02 00 02 50 4d 36 M5L...PM5H...PM6 1550: 4c 02 00 02 50 4d 36 48 02 00 02 00 07 48 45 4e L...PM6H.....HEN 1560: 41 01 00 40 05 54 55 55 44 10 00 40 06 00 04 54 A..@.TUUD..@...T 1570: 4c 55 44 0c 08 42 55 46 30 11 4d 20 0b 08 02 88 LUD..BUF0.M .... 1580: 0d 00 02 0c 00 00 00 00 00 ff 00 00 00 00 01 87 ................ 1590: 17 00 01 0c 03 00 00 00 00 00 00 00 00 f7 0c 00 ................ 15a0: 00 00 00 00 00 f8 0c 00 00 47 01 f8 0c f8 0c 01 .........G...... 15b0: 08 87 17 00 01 0c 03 00 00 00 00 00 0d 00 00 ff ................ 15c0: ff 00 00 00 00 00 00 00 f3 00 00 87 17 00 00 0c ................ 15d0: 03 00 00 00 00 00 00 0a 00 ff ff 0b 00 00 00 00 ................ 15e0: 00 00 00 02 00 87 17 00 00 0c 03 00 00 00 00 00 ................ 15f0: 00 0c 00 ff 3f 0c 00 00 00 00 00 00 40 00 00 87 ....?.......@... 1600: 17 00 00 0c 03 00 00 00 00 00 40 0c 00 ff 7f 0c ..........@..... 1610: 00 00 00 00 00 00 40 00 00 87 17 00 00 0c 03 00 ......@......... 1620: 00 00 00 00 80 0c 00 ff bf 0c 00 00 00 00 00 00 ................ 1630: 40 00 00 87 17 00 00 0c 03 00 00 00 00 00 c0 0c @............... 1640: 00 ff ff 0c 00 00 00 00 00 00 40 00 00 87 17 00 ..........@..... 1650: 00 0c 03 00 00 00 00 00 00 0d 00 ff 3f 0d 00 00 ............?... 1660: 00 00 00 00 40 00 00 87 17 00 00 0c 03 00 00 00 ....@........... 1670: 00 00 40 0d 00 ff 7f 0d 00 00 00 00 00 00 40 00 ..@...........@. 1680: 00 87 17 00 00 0c 03 00 00 00 00 00 80 0d 00 ff ................ 1690: bf 0d 00 00 00 00 00 00 40 00 00 87 17 00 00 0c ........@....... 16a0: 03 00 00 00 00 00 c0 0d 00 ff ff 0d 00 00 00 00 ................ 16b0: 00 00 40 00 00 87 17 00 00 0c 03 00 00 00 00 00 ..@............. 16c0: 00 0e 00 ff 3f 0e 00 00 00 00 00 00 40 00 00 87 ....?.......@... 16d0: 17 00 00 0c 03 00 00 00 00 00 40 0e 00 ff 7f 0e ..........@..... 16e0: 00 00 00 00 00 00 40 00 00 87 17 00 00 0c 03 00 ......@......... 16f0: 00 00 00 00 80 0e 00 ff bf 0e 00 00 00 00 00 00 ................ 1700: 40 00 00 87 17 00 00 0c 03 00 00 00 00 00 c0 0e @............... 1710: 00 ff ff 0e 00 00 00 00 00 00 40 00 00 87 17 00 ..........@..... 1720: 00 0c 03 00 00 00 00 00 00 0f 00 ff ff 0f 00 00 ................ 1730: 00 00 00 00 00 01 00 87 17 00 00 0c 03 00 00 00 ................ 1740: 00 00 00 00 00 ff ff ff df 00 00 00 00 00 00 00 ................ 1750: 00 87 17 00 00 0c 03 00 00 00 00 00 00 00 f0 ff ................ 1760: ff bf fe 00 00 00 00 00 00 c0 0e 87 17 00 00 0c ................ 1770: 03 00 00 00 00 00 00 d4 fe ff 4f d4 fe 00 00 00 ..........O..... 1780: 00 00 00 00 00 79 00 14 4b 3d 5f 43 52 53 08 a0 .....y..K=_CRS.. 1790: 1c 5e 2e 4d 43 48 43 50 4d 31 4c 8a 42 55 46 30 .^.MCHCPM1L.BUF0 17a0: 0a 7c 43 30 4c 4e 70 00 43 30 4c 4e a0 1f 93 5e .|C0LNp.C0LN...^ 17b0: 2e 4d 43 48 43 50 4d 31 4c 01 8d 42 55 46 30 0b .MCHCPM1L..BUF0. 17c0: 58 03 43 30 52 57 70 00 43 30 52 57 a0 1c 5e 2e X.C0RWp.C0RW..^. 17d0: 4d 43 48 43 50 4d 31 48 8a 42 55 46 30 0a 96 43 MCHCPM1H.BUF0..C 17e0: 34 4c 4e 70 00 43 34 4c 4e a0 1f 93 5e 2e 4d 43 4LNp.C4LN...^.MC 17f0: 48 43 50 4d 31 48 01 8d 42 55 46 30 0b 28 04 43 HCPM1H..BUF0.(.C 1800: 34 52 57 70 00 43 34 52 57 a0 1c 5e 2e 4d 43 48 4RWp.C4RW..^.MCH 1810: 43 50 4d 32 4c 8a 42 55 46 30 0a b0 43 38 4c 4e CPM2L.BUF0..C8LN 1820: 70 00 43 38 4c 4e a0 1f 93 5e 2e 4d 43 48 43 50 p.C8LN...^.MCHCP 1830: 4d 32 4c 01 8d 42 55 46 30 0b f8 04 43 38 52 57 M2L..BUF0...C8RW 1840: 70 00 43 38 52 57 a0 1c 5e 2e 4d 43 48 43 50 4d p.C8RW..^.MCHCPM 1850: 32 48 8a 42 55 46 30 0a ca 43 43 4c 4e 70 00 43 2H.BUF0..CCLNp.C 1860: 43 4c 4e a0 1f 93 5e 2e 4d 43 48 43 50 4d 32 48 CLN...^.MCHCPM2H 1870: 01 8d 42 55 46 30 0b c8 05 43 43 52 57 70 00 43 ..BUF0...CCRWp.C 1880: 43 52 57 a0 1c 5e 2e 4d 43 48 43 50 4d 33 4c 8a CRW..^.MCHCPM3L. 1890: 42 55 46 30 0a e4 44 30 4c 4e 70 00 44 30 4c 4e BUF0..D0LNp.D0LN 18a0: a0 1f 93 5e 2e 4d 43 48 43 50 4d 33 4c 01 8d 42 ...^.MCHCPM3L..B 18b0: 55 46 30 0b 98 06 44 30 52 57 70 00 44 30 52 57 UF0...D0RWp.D0RW 18c0: a0 1c 5e 2e 4d 43 48 43 50 4d 33 48 8a 42 55 46 ..^.MCHCPM3H.BUF 18d0: 30 0a fe 44 34 4c 4e 70 00 44 34 4c 4e a0 1f 93 0..D4LNp.D4LN... 18e0: 5e 2e 4d 43 48 43 50 4d 33 48 01 8d 42 55 46 30 ^.MCHCPM3H..BUF0 18f0: 0b 68 07 44 34 52 57 70 00 44 34 52 57 a0 1d 5e .h.D4RWp.D4RW..^ 1900: 2e 4d 43 48 43 50 4d 34 4c 8a 42 55 46 30 0b 18 .MCHCPM4L.BUF0.. 1910: 01 44 38 4c 4e 70 00 44 38 4c 4e a0 1f 93 5e 2e .D8LNp.D8LN...^. 1920: 4d 43 48 43 50 4d 34 4c 01 8d 42 55 46 30 0b 38 MCHCPM4L..BUF0.8 1930: 08 44 38 52 57 70 00 44 38 52 57 a0 1d 5e 2e 4d .D8RWp.D8RW..^.M 1940: 43 48 43 50 4d 34 48 8a 42 55 46 30 0b 32 01 44 CHCPM4H.BUF0.2.D 1950: 43 4c 4e 70 00 44 43 4c 4e a0 1f 93 5e 2e 4d 43 CLNp.DCLN...^.MC 1960: 48 43 50 4d 34 48 01 8d 42 55 46 30 0b 08 09 44 HCPM4H..BUF0...D 1970: 43 52 57 70 00 44 43 52 57 a0 1d 5e 2e 4d 43 48 CRWp.DCRW..^.MCH 1980: 43 50 4d 35 4c 8a 42 55 46 30 0b 4c 01 45 30 4c CPM5L.BUF0.L.E0L 1990: 4e 70 00 45 30 4c 4e a0 1f 93 5e 2e 4d 43 48 43 Np.E0LN...^.MCHC 19a0: 50 4d 35 4c 01 8d 42 55 46 30 0b d8 09 45 30 52 PM5L..BUF0...E0R 19b0: 57 70 00 45 30 52 57 a0 1d 5e 2e 4d 43 48 43 50 Wp.E0RW..^.MCHCP 19c0: 4d 35 48 8a 42 55 46 30 0b 66 01 45 34 4c 4e 70 M5H.BUF0.f.E4LNp 19d0: 00 45 34 4c 4e a0 1f 93 5e 2e 4d 43 48 43 50 4d .E4LN...^.MCHCPM 19e0: 35 48 01 8d 42 55 46 30 0b a8 0a 45 34 52 57 70 5H..BUF0...E4RWp 19f0: 00 45 34 52 57 a0 1d 5e 2e 4d 43 48 43 50 4d 36 .E4RW..^.MCHCPM6 1a00: 4c 8a 42 55 46 30 0b 80 01 45 38 4c 4e 70 00 45 L.BUF0...E8LNp.E 1a10: 38 4c 4e a0 1f 93 5e 2e 4d 43 48 43 50 4d 36 4c 8LN...^.MCHCPM6L 1a20: 01 8d 42 55 46 30 0b 78 0b 45 38 52 57 70 00 45 ..BUF0.x.E8RWp.E 1a30: 38 52 57 a0 1d 5e 2e 4d 43 48 43 50 4d 36 48 8a 8RW..^.MCHCPM6H. 1a40: 42 55 46 30 0b 9a 01 45 43 4c 4e 70 00 45 43 4c BUF0...ECLNp.ECL 1a50: 4e a0 1f 93 5e 2e 4d 43 48 43 50 4d 36 48 01 8d N...^.MCHCPM6H.. 1a60: 42 55 46 30 0b 48 0c 45 43 52 57 70 00 45 43 52 BUF0.H.ECRWp.ECR 1a70: 57 a0 1d 5e 2e 4d 43 48 43 50 4d 30 48 8a 42 55 W..^.MCHCPM0H.BU 1a80: 46 30 0b b4 01 46 30 4c 4e 70 00 46 30 4c 4e a0 F0...F0LNp.F0LN. 1a90: 1f 93 5e 2e 4d 43 48 43 50 4d 30 48 01 8d 42 55 ..^.MCHCPM0H..BU 1aa0: 46 30 0b 18 0d 46 30 52 57 70 00 46 30 52 57 8a F0...F0RWp.F0RW. 1ab0: 42 55 46 30 0b c2 01 4d 31 4d 4e 8a 42 55 46 30 BUF0...M1MN.BUF0 1ac0: 0b c6 01 4d 31 4d 58 8a 42 55 46 30 0b ce 01 4d ...M1MX.BUF0...M 1ad0: 31 4c 4e 8a 42 55 46 30 0b dc 01 4d 32 4d 4e 8a 1LN.BUF0...M2MN. 1ae0: 42 55 46 30 0b e0 01 4d 32 4d 58 8a 42 55 46 30 BUF0...M2MX.BUF0 1af0: 0b e8 01 4d 32 4c 4e 79 5e 2e 4d 43 48 43 50 58 ...M2LNy^.MCHCPX 1b00: 42 52 0a 1a 4d 31 4d 58 7a 0c 00 00 00 10 5e 2e BR..M1MXz.....^. 1b10: 4d 43 48 43 50 58 53 5a 60 72 4d 31 4d 58 60 4d MCHCPXSZ`rM1MX`M 1b20: 32 4d 4e 72 74 4d 32 4d 58 4d 32 4d 4e 00 01 4d 2MNrtM2MXM2MN..M 1b30: 32 4c 4e 74 4d 31 4d 58 01 4d 31 4d 58 79 5e 2e 2LNtM1MX.M1MXy^. 1b40: 4d 43 48 43 54 4c 55 44 0a 14 4d 31 4d 4e 72 74 MCHCTLUD..M1MNrt 1b50: 4d 31 4d 58 4d 31 4d 4e 00 01 4d 31 4c 4e a4 42 M1MXM1MN..M1LN.B 1b60: 55 46 30 14 47 28 5f 50 52 54 00 a0 45 0f 47 50 UF0.G(_PRT..E.GP 1b70: 49 43 a4 12 4d 0e 13 12 0b 04 0c ff ff 01 00 00 IC..M........... 1b80: 00 0a 10 12 0b 04 0c ff ff 02 00 00 00 0a 10 12 ................ 1b90: 0b 04 0c ff ff 07 00 00 00 0a 10 12 0b 04 0c ff ................ 1ba0: ff 19 00 00 00 0a 14 12 0b 04 0c ff ff 1a 00 00 ................ 1bb0: 00 0a 10 12 0b 04 0c ff ff 1a 00 01 00 0a 15 12 ................ 1bc0: 0c 04 0c ff ff 1a 00 0a 02 00 0a 12 12 0b 04 0c ................ 1bd0: ff ff 1b 00 00 00 0a 16 12 0b 04 0c ff ff 1c 00 ................ 1be0: 00 00 0a 11 12 0b 04 0c ff ff 1c 00 01 00 0a 10 ................ 1bf0: 12 0c 04 0c ff ff 1c 00 0a 02 00 0a 12 12 0c 04 ................ 1c00: 0c ff ff 1c 00 0a 03 00 0a 13 12 0b 04 0c ff ff ................ 1c10: 1d 00 00 00 0a 17 12 0b 04 0c ff ff 1d 00 01 00 ................ 1c20: 0a 13 12 0c 04 0c ff ff 1d 00 0a 02 00 0a 12 12 ................ 1c30: 0b 04 0c ff ff 1f 00 00 00 0a 13 12 0b 04 0c ff ................ 1c40: ff 1f 00 01 00 0a 13 12 0c 04 0c ff ff 1f 00 0a ................ 1c50: 02 00 0a 13 12 0c 04 0c ff ff 1f 00 0a 03 00 0a ................ 1c60: 10 a1 49 18 a4 12 45 18 13 12 13 04 0c ff ff 01 ..I...E......... 1c70: 00 00 5e 2e 4c 50 43 42 4c 4e 4b 41 00 12 13 04 ..^.LPCBLNKA.... 1c80: 0c ff ff 02 00 00 5e 2e 4c 50 43 42 4c 4e 4b 41 ......^.LPCBLNKA 1c90: 00 12 13 04 0c ff ff 07 00 00 5e 2e 4c 50 43 42 ..........^.LPCB 1ca0: 4c 4e 4b 41 00 12 13 04 0c ff ff 19 00 00 5e 2e LNKA..........^. 1cb0: 4c 50 43 42 4c 4e 4b 45 00 12 13 04 0c ff ff 1a LPCBLNKE........ 1cc0: 00 00 5e 2e 4c 50 43 42 4c 4e 4b 41 00 12 13 04 ..^.LPCBLNKA.... 1cd0: 0c ff ff 1a 00 01 5e 2e 4c 50 43 42 4c 4e 4b 46 ......^.LPCBLNKF 1ce0: 00 12 14 04 0c ff ff 1a 00 0a 02 5e 2e 4c 50 43 ...........^.LPC 1cf0: 42 4c 4e 4b 43 00 12 13 04 0c ff ff 1b 00 00 5e BLNKC..........^ 1d00: 2e 4c 50 43 42 4c 4e 4b 47 00 12 13 04 0c ff ff .LPCBLNKG....... 1d10: 1c 00 00 5e 2e 4c 50 43 42 4c 4e 4b 42 00 12 13 ...^.LPCBLNKB... 1d20: 04 0c ff ff 1c 00 01 5e 2e 4c 50 43 42 4c 4e 4b .......^.LPCBLNK 1d30: 41 00 12 14 04 0c ff ff 1c 00 0a 02 5e 2e 4c 50 A...........^.LP 1d40: 43 42 4c 4e 4b 43 00 12 14 04 0c ff ff 1c 00 0a CBLNKC.......... 1d50: 03 5e 2e 4c 50 43 42 4c 4e 4b 44 00 12 13 04 0c .^.LPCBLNKD..... 1d60: ff ff 1d 00 00 5e 2e 4c 50 43 42 4c 4e 4b 48 00 .....^.LPCBLNKH. 1d70: 12 13 04 0c ff ff 1d 00 01 5e 2e 4c 50 43 42 4c .........^.LPCBL 1d80: 4e 4b 44 00 12 14 04 0c ff ff 1d 00 0a 02 5e 2e NKD...........^. 1d90: 4c 50 43 42 4c 4e 4b 43 00 12 13 04 0c ff ff 1f LPCBLNKC........ 1da0: 00 00 5e 2e 4c 50 43 42 4c 4e 4b 44 00 12 13 04 ..^.LPCBLNKD.... 1db0: 0c ff ff 1f 00 01 5e 2e 4c 50 43 42 4c 4e 4b 44 ......^.LPCBLNKD 1dc0: 00 12 14 04 0c ff ff 1f 00 0a 02 5e 2e 4c 50 43 ...........^.LPC 1dd0: 42 4c 4e 4b 44 00 12 14 04 0c ff ff 1f 00 0a 03 BLNKD........... 1de0: 5e 2e 4c 50 43 42 4c 4e 4b 41 00 5b 82 40 14 50 ^.LPCBLNKA.[.@.P 1df0: 44 52 43 08 5f 48 49 44 0c 41 d0 0c 02 08 5f 55 DRC._HID.A...._U 1e00: 49 44 01 08 42 55 46 30 11 46 06 0a 62 86 09 00 ID..BUF0.F..b... 1e10: 01 00 00 00 00 00 40 00 00 86 09 00 01 00 00 00 ......@......... 1e20: 00 00 40 00 00 86 09 00 01 00 00 00 00 00 10 00 ..@............. 1e30: 00 86 09 00 01 00 00 00 00 00 10 00 00 86 09 00 ................ 1e40: 01 00 00 00 00 00 00 00 00 86 09 00 01 00 00 d2 ................ 1e50: fe 00 00 02 00 86 09 00 01 00 00 d4 fe 00 50 00 ..............P. 1e60: 00 86 09 00 01 00 50 d4 fe 00 b0 04 00 79 00 14 ......P......y.. 1e70: 4d 0b 5f 43 52 53 08 8a 42 55 46 30 0a 04 52 42 M._CRS..BUF0..RB 1e80: 52 30 79 5e 5e 2e 4c 50 43 42 52 43 42 41 0a 0e R0y^^.LPCBRCBA.. 1e90: 52 42 52 30 8a 42 55 46 30 0a 10 4d 42 52 30 79 RBR0.BUF0..MBR0y 1ea0: 5e 5e 2e 4d 43 48 43 4d 48 42 52 0a 0e 4d 42 52 ^^.MCHCMHBR..MBR 1eb0: 30 8a 42 55 46 30 0a 1c 44 42 52 30 79 5e 5e 2e 0.BUF0..DBR0y^^. 1ec0: 4d 43 48 43 44 49 42 52 0a 0c 44 42 52 30 8a 42 MCHCDIBR..DBR0.B 1ed0: 55 46 30 0a 28 45 42 52 30 79 5e 5e 2e 4d 43 48 UF0.(EBR0y^^.MCH 1ee0: 43 45 50 42 52 0a 0c 45 42 52 30 8a 42 55 46 30 CEPBR..EBR0.BUF0 1ef0: 0a 34 58 42 52 30 79 5e 5e 2e 4d 43 48 43 50 58 .4XBR0y^^.MCHCPX 1f00: 42 52 0a 1a 58 42 52 30 8a 42 55 46 30 0a 38 58 BR..XBR0.BUF0.8X 1f10: 53 5a 30 7a 0c 00 00 00 10 5e 5e 2e 4d 43 48 43 SZ0z.....^^.MCHC 1f20: 50 58 53 5a 58 53 5a 30 a4 42 55 46 30 5b 82 4d PXSZXSZ0.BUF0[.M 1f30: 50 50 45 47 50 08 5f 41 44 52 0c 00 00 01 00 14 PPEGP._ADR...... 1f40: 41 09 5f 50 52 54 00 a0 33 47 50 49 43 a4 12 2c A._PRT..3GPIC.., 1f50: 04 12 09 04 0b ff ff 00 00 0a 10 12 09 04 0b ff ................ 1f60: ff 01 00 0a 11 12 0a 04 0b ff ff 0a 02 00 0a 12 ................ 1f70: 12 0a 04 0b ff ff 0a 03 00 0a 13 a1 45 05 a4 12 ............E... 1f80: 41 05 04 12 12 04 0b ff ff 00 5e 5e 2e 4c 50 43 A.........^^.LPC 1f90: 42 4c 4e 4b 41 00 12 12 04 0b ff ff 01 5e 5e 2e BLNKA........^^. 1fa0: 4c 50 43 42 4c 4e 4b 42 00 12 13 04 0b ff ff 0a LPCBLNKB........ 1fb0: 02 5e 5e 2e 4c 50 43 42 4c 4e 4b 43 00 12 13 04 .^^.LPCBLNKC.... 1fc0: 0b ff ff 0a 03 5e 5e 2e 4c 50 43 42 4c 4e 4b 44 .....^^.LPCBLNKD 1fd0: 00 5b 82 49 46 56 47 41 5f 08 5f 41 44 52 00 08 .[.IFVGA_._ADR.. 1fe0: 53 57 49 54 01 08 43 52 54 41 01 08 4c 43 44 41 SWIT..CRTA..LCDA 1ff0: 01 08 54 56 41 41 01 08 56 4c 44 46 01 5b 80 56 ..TVAA..VLDF.[.V 2000: 49 44 53 02 00 0a c8 5b 81 0b 56 49 44 53 03 56 IDS....[..VIDS.V 2010: 44 49 44 20 14 09 5f 53 54 41 00 a4 0a 0f 08 5f DID .._STA....._ 2020: 50 53 43 00 14 0c 5f 50 53 30 00 70 00 5f 50 53 PSC..._PS0.p._PS 2030: 43 14 0c 5f 50 53 31 00 70 01 5f 50 53 43 14 0d C.._PS1.p._PSC.. 2040: 5f 50 53 33 00 70 0a 03 5f 50 53 43 14 10 5f 44 _PS3.p.._PSC.._D 2050: 4f 53 01 70 7b 68 0a 03 00 53 57 49 54 14 17 5f OS.p{h...SWIT.._ 2060: 44 4f 44 00 a4 12 0f 03 0c 00 01 01 00 0c 10 01 DOD............. 2070: 01 00 0b 00 02 5b 82 4d 08 43 52 54 5f 14 0a 5f .....[.M.CRT_.._ 2080: 41 44 52 00 a4 0b 00 01 14 41 06 5f 44 43 53 00 ADR......A._DCS. 2090: 5e 5e 5e 5e 2e 4c 50 43 42 50 48 53 53 0a 0c 70 ^^^^.LPCBPHSS..p 20a0: 43 41 44 4c 60 70 43 53 54 45 61 7b 60 0a 02 60 CADL`pCSTEa{`..` 20b0: 7b 61 0a 02 61 a0 08 60 70 01 43 52 54 41 a1 07 {a..a..`p.CRTA.. 20c0: 70 00 43 52 54 41 a0 13 43 52 54 41 a0 08 93 61 p.CRTA..CRTA...a 20d0: 0a 02 a4 0a 1f a1 04 a4 0a 1d a1 0f a0 08 93 61 ...............a 20e0: 0a 02 a4 0a 0f a1 04 a4 0a 0d 14 12 5f 44 47 53 ............_DGS 20f0: 00 a0 07 43 52 54 41 a4 01 a1 03 a4 00 14 06 5f ...CRTA........_ 2100: 44 53 53 01 5b 82 47 0e 4c 43 44 5f 14 0a 5f 41 DSS.[.G.LCD_.._A 2110: 44 52 00 a4 0b 10 01 14 4d 05 5f 44 43 53 00 5e DR......M._DCS.^ 2120: 5e 5e 5e 2e 4c 50 43 42 50 48 53 53 0a 0c 70 43 ^^^.LPCBPHSS..pC 2130: 41 44 4c 60 70 43 53 54 45 61 7b 60 01 60 7b 61 ADL`pCSTEa{`.`{a 2140: 01 61 a0 08 60 70 01 4c 43 44 41 a1 07 70 00 4c .a..`p.LCDA..p.L 2150: 43 44 41 a0 12 4c 43 44 41 a0 07 93 61 01 a4 0a CDA..LCDA...a... 2160: 1f a1 04 a4 0a 1d a1 0e a0 07 93 61 01 a4 0a 0f ...........a.... 2170: a1 04 a4 0a 0d 14 12 5f 44 47 53 00 a0 07 4c 43 ......._DGS...LC 2180: 44 41 a4 01 a1 03 a4 00 14 06 5f 44 53 53 01 14 DA........_DSS.. 2190: 1d 5f 42 43 4c 00 a4 12 15 0a 0a 46 0a 28 00 0a ._BCL......F.(.. 21a0: 0a 0a 14 0a 1e 0a 28 0a 32 0a 3c 0a 46 14 20 5f ......(.2.<.F. _ 21b0: 42 43 4d 01 78 68 0a 0a 60 61 70 61 5e 5e 5e 5e BCM.xh..`apa^^^^ 21c0: 2f 03 4c 50 43 42 45 43 30 5f 42 52 54 53 14 1e /.LPCBEC0_BRTS.. 21d0: 5f 42 51 43 00 77 5e 5e 5e 5e 2f 03 4c 50 43 42 _BQC.w^^^^/.LPCB 21e0: 45 43 30 5f 42 52 54 53 0a 0a 60 a4 60 5b 82 4d EC0_BRTS..`.`[.M 21f0: 08 54 56 5f 5f 14 0a 5f 41 44 52 00 a4 0b 00 02 .TV__.._ADR..... 2200: 14 41 06 5f 44 43 53 00 5e 5e 5e 5e 2e 4c 50 43 .A._DCS.^^^^.LPC 2210: 42 50 48 53 53 0a 0c 70 43 41 44 4c 60 70 43 53 BPHSS..pCADL`pCS 2220: 54 45 61 7b 60 0a 04 60 7b 61 0a 04 61 a0 08 60 TEa{`..`{a..a..` 2230: 70 01 54 56 41 41 a1 07 70 00 54 56 41 41 a0 13 p.TVAA..p.TVAA.. 2240: 54 56 41 41 a0 08 93 61 0a 04 a4 0a 1f a1 04 a4 TVAA...a........ 2250: 0a 1d a1 0f a0 08 93 61 0a 04 a4 0a 0f a1 04 a4 .......a........ 2260: 0a 0d 14 12 5f 44 47 53 00 a0 07 54 56 41 41 a4 ...._DGS...TVAA. 2270: 01 a1 03 a4 00 14 06 5f 44 53 53 01 14 49 10 44 ......._DSS..I.D 2280: 53 53 57 00 a0 4a 0e 93 53 57 49 54 00 5e 5e 5e SSW..J..SWIT.^^^ 2290: 2e 4c 50 43 42 50 48 53 53 0a 0c 70 43 41 44 4c .LPCBPHSS..pCADL 22a0: 60 70 43 53 54 45 61 a0 16 94 61 01 7b 60 61 56 `pCSTEa...a.{`aV 22b0: 4c 44 46 7b 56 4c 44 46 0a fe 56 4c 44 46 a0 43 LDF{VLDF..VLDF.C 22c0: 0a 56 4c 44 46 a0 27 93 60 0a 09 a0 0b 93 61 0a .VLDF.'.`.....a. 22d0: 08 53 54 42 4c 0a 02 a0 0a 93 61 01 53 54 42 4c .STBL.....a.STBL 22e0: 0a 03 a0 0a 93 61 0a 09 53 54 42 4c 01 a0 28 93 .....a..STBL..(. 22f0: 60 0a 0a a0 0b 93 61 0a 08 53 54 42 4c 0a 05 a0 `.....a..STBL... 2300: 0a 93 61 0a 02 53 54 42 4c 01 a0 0b 93 61 0a 0a ..a..STBL....a.. 2310: 53 54 42 4c 0a 04 a0 4b 04 93 60 0a 0b a0 0b 93 STBL...K..`..... 2320: 61 0a 08 53 54 42 4c 0a 02 a0 0b 93 61 0a 09 53 a..STBL.....a..S 2330: 54 42 4c 0a 05 a0 0a 93 61 01 53 54 42 4c 0a 03 TBL.....a.STBL.. 2340: a0 0b 93 61 0a 0a 53 54 42 4c 0a 04 a0 0a 93 61 ...a..STBL.....a 2350: 0a 02 53 54 42 4c 01 a0 0a 93 61 0a 0b 53 54 42 ..STBL....a..STB 2360: 4c 01 a1 0c 70 01 56 4c 44 46 53 54 42 4c 01 a1 L...p.VLDFSTBL.. 2370: 16 a0 14 93 53 57 49 54 01 5e 5e 5e 2e 4c 50 43 ....SWIT.^^^.LPC 2380: 42 50 48 53 53 01 14 45 0b 53 54 42 4c 01 a0 16 BPHSS..E.STBL... 2390: 93 68 01 70 00 43 52 54 41 70 01 4c 43 44 41 70 .h.p.CRTAp.LCDAp 23a0: 00 54 56 41 41 a0 17 93 68 0a 02 70 01 43 52 54 .TVAA...h..p.CRT 23b0: 41 70 00 4c 43 44 41 70 00 54 56 41 41 a0 17 93 Ap.LCDAp.TVAA... 23c0: 68 0a 03 70 01 43 52 54 41 70 01 4c 43 44 41 70 h..p.CRTAp.LCDAp 23d0: 00 54 56 41 41 a0 17 93 68 0a 04 70 00 43 52 54 .TVAA...h..p.CRT 23e0: 41 70 00 4c 43 44 41 70 01 54 56 41 41 a0 17 93 Ap.LCDAp.TVAA... 23f0: 68 0a 05 70 00 43 52 54 41 70 01 4c 43 44 41 70 h..p.CRTAp.LCDAp 2400: 01 54 56 41 41 a0 17 93 68 0a 06 70 01 43 52 54 .TVAA...h..p.CRT 2410: 41 70 00 4c 43 44 41 70 01 54 56 41 41 a0 17 93 Ap.LCDAp.TVAA... 2420: 68 0a 07 70 01 43 52 54 41 70 01 4c 43 44 41 70 h..p.CRTAp.LCDAp 2430: 01 54 56 41 41 86 56 47 41 5f 0a 80 5b 82 42 f8 .TVAA.VGA_..[.B. 2440: 47 46 58 30 08 5f 41 44 52 0c 00 00 02 00 14 10 GFX0._ADR....... 2450: 5f 44 4f 53 01 70 7b 68 0a 07 00 44 53 45 4e 14 _DOS.p{h...DSEN. 2460: 41 26 5f 44 4f 44 00 70 00 4e 44 49 44 a0 15 92 A&_DOD.p.NDID... 2470: 93 44 49 44 4c 00 70 53 44 44 4c 44 49 44 31 44 .DIDL.pSDDLDID1D 2480: 49 44 31 a0 15 92 93 44 44 4c 32 00 70 53 44 44 ID1....DDL2.pSDD 2490: 4c 44 49 44 32 44 49 44 32 a0 15 92 93 44 44 4c LDID2DID2....DDL 24a0: 33 00 70 53 44 44 4c 44 49 44 33 44 49 44 33 a0 3.pSDDLDID3DID3. 24b0: 15 92 93 44 44 4c 34 00 70 53 44 44 4c 44 49 44 ...DDL4.pSDDLDID 24c0: 34 44 49 44 34 a0 15 92 93 44 44 4c 35 00 70 53 4DID4....DDL5.pS 24d0: 44 44 4c 44 49 44 35 44 49 44 35 a0 2c 93 4e 44 DDLDID5DID5.,.ND 24e0: 49 44 01 08 54 4d 50 31 12 07 01 0c ff ff ff ff ID..TMP1........ 24f0: 70 7d 0c 00 00 01 00 44 49 44 31 00 88 54 4d 50 p}.....DID1..TMP 2500: 31 00 00 a4 54 4d 50 31 a0 46 04 93 4e 44 49 44 1...TMP1.F..NDID 2510: 0a 02 08 54 4d 50 32 12 0c 02 0c ff ff ff ff 0c ...TMP2......... 2520: ff ff ff ff 70 7d 0c 00 00 01 00 44 49 44 31 00 ....p}.....DID1. 2530: 88 54 4d 50 32 00 00 70 7d 0c 00 00 01 00 44 49 .TMP2..p}.....DI 2540: 44 32 00 88 54 4d 50 32 01 00 a4 54 4d 50 32 a0 D2..TMP2...TMP2. 2550: 4f 05 93 4e 44 49 44 0a 03 08 54 4d 50 33 12 11 O..NDID...TMP3.. 2560: 03 0c ff ff ff ff 0c ff ff ff ff 0c ff ff ff ff ................ 2570: 70 7d 0c 00 00 01 00 44 49 44 31 00 88 54 4d 50 p}.....DID1..TMP 2580: 33 00 00 70 7d 0c 00 00 01 00 44 49 44 32 00 88 3..p}.....DID2.. 2590: 54 4d 50 33 01 00 70 7d 0c 00 00 01 00 44 49 44 TMP3..p}.....DID 25a0: 33 00 88 54 4d 50 33 0a 02 00 a4 54 4d 50 33 a0 3..TMP3....TMP3. 25b0: 48 07 93 4e 44 49 44 0a 04 08 54 4d 50 34 12 16 H..NDID...TMP4.. 25c0: 04 0c ff ff ff ff 0c ff ff ff ff 0c ff ff ff ff ................ 25d0: 0c ff ff ff ff 70 7d 0c 00 00 01 00 44 49 44 31 .....p}.....DID1 25e0: 00 88 54 4d 50 34 00 00 70 7d 0c 00 00 01 00 44 ..TMP4..p}.....D 25f0: 49 44 32 00 88 54 4d 50 34 01 00 70 7d 0c 00 00 ID2..TMP4..p}... 2600: 01 00 44 49 44 33 00 88 54 4d 50 34 0a 02 00 70 ..DID3..TMP4...p 2610: 7d 0c 00 00 01 00 44 49 44 34 00 88 54 4d 50 34 }.....DID4..TMP4 2620: 0a 03 00 a4 54 4d 50 34 a0 41 09 94 4e 44 49 44 ....TMP4.A..NDID 2630: 0a 04 08 54 4d 50 35 12 1b 05 0c ff ff ff ff 0c ...TMP5......... 2640: ff ff ff ff 0c ff ff ff ff 0c ff ff ff ff 0c ff ................ 2650: ff ff ff 70 7d 0c 00 00 01 00 44 49 44 31 00 88 ...p}.....DID1.. 2660: 54 4d 50 35 00 00 70 7d 0c 00 00 01 00 44 49 44 TMP5..p}.....DID 2670: 32 00 88 54 4d 50 35 01 00 70 7d 0c 00 00 01 00 2..TMP5..p}..... 2680: 44 49 44 33 00 88 54 4d 50 35 0a 02 00 70 7d 0c DID3..TMP5...p}. 2690: 00 00 01 00 44 49 44 34 00 88 54 4d 50 35 0a 03 ....DID4..TMP5.. 26a0: 00 70 7d 0c 00 00 01 00 44 49 44 34 00 88 54 4d .p}.....DID4..TM 26b0: 50 35 0a 04 00 a4 54 4d 50 35 a4 12 05 01 0b 00 P5....TMP5...... 26c0: 04 5b 82 43 06 44 44 30 31 14 1c 5f 41 44 52 08 .[.C.DD01.._ADR. 26d0: a0 09 93 44 49 44 31 00 a4 01 a1 0b a4 7b 0b ff ...DID1......{.. 26e0: ff 44 49 44 31 00 14 0f 5f 44 43 53 00 a4 43 44 .DID1..._DCS..CD 26f0: 44 53 44 49 44 31 14 0f 5f 44 47 53 00 a4 4e 44 DSDID1.._DGS..ND 2700: 44 53 44 49 44 31 14 1f 5f 44 53 53 01 a0 18 93 DSDID1.._DSS.... 2710: 7b 68 0c 00 00 00 c0 00 0c 00 00 00 c0 70 4e 53 {h...........pNS 2720: 54 45 43 53 54 45 5b 82 44 06 44 44 30 32 14 1d TECSTE[.D.DD02.. 2730: 5f 41 44 52 08 a0 0a 93 44 49 44 32 00 a4 0a 02 _ADR....DID2.... 2740: a1 0b a4 7b 0b ff ff 44 49 44 32 00 14 0f 5f 44 ...{...DID2..._D 2750: 43 53 00 a4 43 44 44 53 44 49 44 32 14 0f 5f 44 CS..CDDSDID2.._D 2760: 47 53 00 a4 4e 44 44 53 44 49 44 32 14 1f 5f 44 GS..NDDSDID2.._D 2770: 53 53 01 a0 18 93 7b 68 0c 00 00 00 c0 00 0c 00 SS....{h........ 2780: 00 00 c0 70 4e 53 54 45 43 53 54 45 5b 82 41 07 ...pNSTECSTE[.A. 2790: 44 44 30 33 14 1d 5f 41 44 52 08 a0 0a 93 44 49 DD03.._ADR....DI 27a0: 44 33 00 a4 0a 03 a1 0b a4 7b 0b ff ff 44 49 44 D3.......{...DID 27b0: 33 00 14 1c 5f 44 43 53 00 a0 0a 93 44 49 44 33 3..._DCS....DID3 27c0: 00 a4 0a 0b a1 0a a4 43 44 44 53 44 49 44 33 14 .......CDDSDID3. 27d0: 0f 5f 44 47 53 00 a4 4e 44 44 53 44 49 44 33 14 ._DGS..NDDSDID3. 27e0: 1f 5f 44 53 53 01 a0 18 93 7b 68 0c 00 00 00 c0 ._DSS....{h..... 27f0: 00 0c 00 00 00 c0 70 4e 53 54 45 43 53 54 45 5b ......pNSTECSTE[ 2800: 82 41 07 44 44 30 34 14 1d 5f 41 44 52 08 a0 0a .A.DD04.._ADR... 2810: 93 44 49 44 34 00 a4 0a 04 a1 0b a4 7b 0b ff ff .DID4.......{... 2820: 44 49 44 34 00 14 1c 5f 44 43 53 00 a0 0a 93 44 DID4..._DCS....D 2830: 49 44 34 00 a4 0a 0b a1 0a a4 43 44 44 53 44 49 ID4.......CDDSDI 2840: 44 34 14 0f 5f 44 47 53 00 a4 4e 44 44 53 44 49 D4.._DGS..NDDSDI 2850: 44 34 14 1f 5f 44 53 53 01 a0 18 93 7b 68 0c 00 D4.._DSS....{h.. 2860: 00 00 c0 00 0c 00 00 00 c0 70 4e 53 54 45 43 53 .........pNSTECS 2870: 54 45 5b 82 41 07 44 44 30 35 14 1d 5f 41 44 52 TE[.A.DD05.._ADR 2880: 08 a0 0a 93 44 49 44 35 00 a4 0a 05 a1 0b a4 7b ....DID5.......{ 2890: 0b ff ff 44 49 44 35 00 14 1c 5f 44 43 53 00 a0 ...DID5..._DCS.. 28a0: 0a 93 44 49 44 35 00 a4 0a 0b a1 0a a4 43 44 44 ..DID5.......CDD 28b0: 53 44 49 44 35 14 0f 5f 44 47 53 00 a4 4e 44 44 SDID5.._DGS..NDD 28c0: 53 44 49 44 35 14 1f 5f 44 53 53 01 a0 18 93 7b SDID5.._DSS....{ 28d0: 68 0c 00 00 00 c0 00 0c 00 00 00 c0 70 4e 53 54 h...........pNST 28e0: 45 43 53 54 45 14 4e 06 53 44 44 4c 01 75 4e 44 ECSTE.N.SDDL.uND 28f0: 49 44 70 7b 68 0b 0f 0f 00 60 7d 0c 00 00 00 80 IDp{h....`}..... 2900: 60 61 a0 09 93 44 49 44 4c 60 a4 61 a0 09 93 44 `a...DIDL`.a...D 2910: 44 4c 32 60 a4 61 a0 09 93 44 44 4c 33 60 a4 61 DL2`.a...DDL3`.a 2920: a0 09 93 44 44 4c 34 60 a4 61 a0 09 93 44 44 4c ...DDL4`.a...DDL 2930: 35 60 a4 61 a0 09 93 44 44 4c 36 60 a4 61 a0 09 5`.a...DDL6`.a.. 2940: 93 44 44 4c 37 60 a4 61 a0 09 93 44 44 4c 38 60 .DDL7`.a...DDL8` 2950: a4 61 a4 00 14 4a 08 43 44 44 53 01 a0 0f 93 43 .a...J.CDDS....C 2960: 41 44 4c 7b 68 0b 0f 0f 00 a4 0a 1f a0 0f 93 43 ADL{h..........C 2970: 41 4c 32 7b 68 0b 0f 0f 00 a4 0a 1f a0 0f 93 43 AL2{h..........C 2980: 41 4c 33 7b 68 0b 0f 0f 00 a4 0a 1f a0 0f 93 43 AL3{h..........C 2990: 41 4c 34 7b 68 0b 0f 0f 00 a4 0a 1f a0 0f 93 43 AL4{h..........C 29a0: 41 4c 35 7b 68 0b 0f 0f 00 a4 0a 1f a0 0f 93 43 AL5{h..........C 29b0: 41 4c 36 7b 68 0b 0f 0f 00 a4 0a 1f a0 0f 93 43 AL6{h..........C 29c0: 41 4c 37 7b 68 0b 0f 0f 00 a4 0a 1f a0 0f 93 43 AL7{h..........C 29d0: 41 4c 38 7b 68 0b 0f 0f 00 a4 0a 1f a4 0a 1d 14 AL8{h........... 29e0: 41 08 4e 44 44 53 01 a0 0e 93 4e 41 44 4c 7b 68 A.NDDS....NADL{h 29f0: 0b 0f 0f 00 a4 01 a0 0e 93 4e 44 4c 32 7b 68 0b .........NDL2{h. 2a00: 0f 0f 00 a4 01 a0 0e 93 4e 44 4c 33 7b 68 0b 0f ........NDL3{h.. 2a10: 0f 00 a4 01 a0 0e 93 4e 44 4c 34 7b 68 0b 0f 0f .......NDL4{h... 2a20: 00 a4 01 a0 0e 93 4e 44 4c 35 7b 68 0b 0f 0f 00 ......NDL5{h.... 2a30: a4 01 a0 0e 93 4e 44 4c 36 7b 68 0b 0f 0f 00 a4 .....NDL6{h..... 2a40: 01 a0 0e 93 4e 44 4c 37 7b 68 0b 0f 0f 00 a4 01 ....NDL7{h...... 2a50: a0 0e 93 4e 44 4c 38 7b 68 0b 0f 0f 00 a4 01 a4 ...NDL8{h....... 2a60: 00 14 40 07 42 52 54 4e 09 a0 14 93 7b 44 49 44 ..@.BRTN....{DID 2a70: 31 0b 00 0f 00 0b 00 04 86 44 44 30 31 68 a0 14 1........DD01h.. 2a80: 93 7b 44 49 44 32 0b 00 0f 00 0b 00 04 86 44 44 .{DID2........DD 2a90: 30 32 68 a0 14 93 7b 44 49 44 33 0b 00 0f 00 0b 02h...{DID3..... 2aa0: 00 04 86 44 44 30 33 68 a0 14 93 7b 44 49 44 34 ...DD03h...{DID4 2ab0: 0b 00 0f 00 0b 00 04 86 44 44 30 34 68 a0 14 93 ........DD04h... 2ac0: 7b 44 49 44 35 0b 00 0f 00 0b 00 04 86 44 44 30 {DID5........DD0 2ad0: 35 68 10 24 5e 5e 50 43 49 30 5b 80 4d 43 48 50 5h.$^^PCI0[.MCHP 2ae0: 02 0a 40 0a c0 5b 81 10 4d 43 48 50 00 00 40 30 ..@..[..MCHP..@0 2af0: 54 41 53 4d 0a 00 06 5b 80 49 47 44 50 02 0a 40 TASM...[.IGDP..@ 2b00: 0a c0 5b 81 45 05 49 47 44 50 00 00 40 09 00 01 ..[.E.IGDP..@... 2b10: 47 49 56 44 01 00 02 47 55 4d 41 03 00 09 00 04 GIVD...GUMA..... 2b20: 47 4d 46 4e 01 00 1b 00 40 46 41 53 4c 45 08 00 GMFN....@FASLE.. 2b30: 18 47 53 53 45 01 47 53 53 42 0e 47 53 45 53 01 .GSSE.GSSB.GSES. 2b40: 00 30 00 08 43 44 56 4c 05 00 03 00 18 4c 42 50 .0..CDVL.....LBP 2b50: 43 08 00 30 41 53 4c 53 20 5b 80 49 47 44 4d 00 C..0ASLS [.IGDM. 2b60: 41 53 4c 42 0b 00 20 5b 81 4e 16 49 47 44 4d 00 ASLB.. [.N.IGDM. 2b70: 53 49 47 4e 40 08 53 49 5a 45 20 4f 56 45 52 20 SIGN@.SIZE OVER 2b80: 53 56 45 52 40 10 56 56 45 52 40 08 47 56 45 52 SVER@.VVER@.GVER 2b90: 40 08 4d 42 4f 58 20 00 40 52 44 52 44 59 20 43 @.MBOX .@RDRDY C 2ba0: 53 54 53 20 43 45 56 54 20 00 40 0a 44 49 44 4c STS CEVT .@.DIDL 2bb0: 20 44 44 4c 32 20 44 44 4c 33 20 44 44 4c 34 20 DDL2 DDL3 DDL4 2bc0: 44 44 4c 35 20 44 44 4c 36 20 44 44 4c 37 20 44 DDL5 DDL6 DDL7 D 2bd0: 44 4c 38 20 43 50 44 4c 20 43 50 4c 32 20 43 50 DL8 CPDL CPL2 CP 2be0: 4c 33 20 43 50 4c 34 20 43 50 4c 35 20 43 50 4c L3 CPL4 CPL5 CPL 2bf0: 36 20 43 50 4c 37 20 43 50 4c 38 20 43 41 44 4c 6 CPL7 CPL8 CADL 2c00: 20 43 41 4c 32 20 43 41 4c 33 20 43 41 4c 34 20 CAL2 CAL3 CAL4 2c10: 43 41 4c 35 20 43 41 4c 36 20 43 41 4c 37 20 43 CAL5 CAL6 CAL7 C 2c20: 41 4c 38 20 4e 41 44 4c 20 4e 44 4c 32 20 4e 44 AL8 NADL NDL2 ND 2c30: 4c 33 20 4e 44 4c 34 20 4e 44 4c 35 20 4e 44 4c L3 NDL4 NDL5 NDL 2c40: 36 20 4e 44 4c 37 20 4e 44 4c 38 20 41 53 4c 50 6 NDL7 NDL8 ASLP 2c50: 20 54 49 44 58 20 43 48 50 44 20 43 4c 49 44 20 TIDX CHPD CLID 2c60: 43 44 43 4b 20 53 58 53 57 20 45 56 54 53 20 43 CDCK SXSW EVTS C 2c70: 4e 4f 54 20 4e 52 44 59 20 00 40 1e 53 43 49 45 NOT NRDY .@.SCIE 2c80: 01 47 45 46 43 04 47 58 46 43 03 47 45 53 46 08 .GEFC.GXFC.GESF. 2c90: 00 10 50 41 52 4d 20 44 53 4c 50 20 00 40 7a 41 ..PARM DSLP .@zA 2ca0: 52 44 59 20 41 53 4c 43 20 54 43 48 45 20 41 4c RDY ASLC TCHE AL 2cb0: 53 49 20 42 43 4c 50 20 50 46 49 54 20 43 42 4c SI BCLP PFIT CBL 2cc0: 56 20 42 43 4c 4d 40 14 43 50 46 4d 20 00 40 5c V BCLM@.CPFM .@\ 2cd0: 47 56 44 31 80 00 0e 08 44 42 54 42 12 32 15 00 GVD1....DBTB.2.. 2ce0: 0a 07 0a 38 0b c0 01 0b 00 0e 0a 3f 0b c7 01 0b ...8.......?.... 2cf0: 07 0e 0b f8 01 0b 38 0e 0b c0 0f 00 00 00 00 00 ......8......... 2d00: 0b 00 70 0b 07 70 0b 38 70 0b c0 71 0b 00 7e 08 ..p..p.8p..q..~. 2d10: 43 44 43 54 12 23 03 12 0a 03 0a c8 0b 40 01 0b CDCT.#.......@.. 2d20: 90 01 12 0a 03 0a c8 0b 4d 01 0b 90 01 12 0a 03 ........M....... 2d30: 0a de 0b 4d 01 0b 7d 01 08 53 55 43 43 01 08 4e ...M..}..SUCC..N 2d40: 56 4c 44 0a 02 08 43 52 49 54 0a 04 08 4e 43 52 VLD...CRIT...NCR 2d50: 54 0a 06 14 4c 4a 47 53 43 49 08 14 44 1e 47 42 T...LJGSCI..D.GB 2d60: 44 41 08 a0 1a 93 47 45 53 46 00 70 0b 79 02 50 DA....GESF.p.y.P 2d70: 41 52 4d 70 00 47 45 53 46 a4 53 55 43 43 a0 1a ARMp.GESF.SUCC.. 2d80: 93 47 45 53 46 01 70 0b 40 02 50 41 52 4d 70 00 .GESF.p.@.PARMp. 2d90: 47 45 53 46 a4 53 55 43 43 a0 47 04 93 47 45 53 GESF.SUCC.G..GES 2da0: 46 0a 04 7b 50 41 52 4d 0c 00 00 ff ef 50 41 52 F..{PARM.....PAR 2db0: 4d 7b 50 41 52 4d 79 83 88 44 42 54 42 49 42 54 M{PARMy..DBTBIBT 2dc0: 54 00 0a 10 00 50 41 52 4d 7d 49 42 54 54 50 41 T....PARM}IBTTPA 2dd0: 52 4d 50 41 52 4d 70 00 47 45 53 46 a4 53 55 43 RMPARMp.GESF.SUC 2de0: 43 a0 4a 06 93 47 45 53 46 0a 05 70 49 50 53 43 C.J..GESF..pIPSC 2df0: 50 41 52 4d 7d 50 41 52 4d 79 49 50 41 54 0a 08 PARM}PARMyIPAT.. 2e00: 00 50 41 52 4d 72 50 41 52 4d 0b 00 01 50 41 52 .PARMrPARM...PAR 2e10: 4d 7d 50 41 52 4d 79 4c 49 44 53 0a 10 00 50 41 M}PARMyLIDS...PA 2e20: 52 4d 72 50 41 52 4d 0c 00 00 01 00 50 41 52 4d RMrPARM.....PARM 2e30: 7d 50 41 52 4d 79 49 42 49 41 0a 14 00 50 41 52 }PARMyIBIA...PAR 2e40: 4d 70 00 47 45 53 46 a4 53 55 43 43 a0 2d 93 47 Mp.GESF.SUCC.-.G 2e50: 45 53 46 0a 06 70 49 54 56 46 50 41 52 4d 7d 50 ESF..pITVFPARM}P 2e60: 41 52 4d 79 49 54 56 4d 0a 04 00 50 41 52 4d 70 ARMyITVM...PARMp 2e70: 00 47 45 53 46 a4 53 55 43 43 a0 4f 08 93 47 45 .GESF.SUCC.O..GE 2e80: 53 46 0a 07 70 47 49 56 44 50 41 52 4d 7f 50 41 SF..pGIVDPARM.PA 2e90: 52 4d 01 50 41 52 4d 7d 50 41 52 4d 79 47 4d 46 RM.PARM}PARMyGMF 2ea0: 4e 01 00 50 41 52 4d 7d 50 41 52 4d 0b 00 10 50 N..PARM}PARM...P 2eb0: 41 52 4d a0 16 49 44 4d 4d 7d 50 41 52 4d 79 49 ARM..IDMM}PARMyI 2ec0: 44 4d 53 0a 11 00 50 41 52 4d a1 12 7d 50 41 52 DMS...PARM..}PAR 2ed0: 4d 79 49 44 4d 53 0a 0d 00 50 41 52 4d 7d 79 83 MyIDMS...PARM}y. 2ee0: 88 83 88 43 44 43 54 48 56 43 4f 00 74 43 44 56 ...CDCTHVCO.tCDV 2ef0: 4c 01 00 00 0a 15 00 50 41 52 4d 50 41 52 4d 70 L......PARMPARMp 2f00: 01 47 45 53 46 a4 53 55 43 43 a0 2a 93 47 45 53 .GESF.SUCC.*.GES 2f10: 46 0a 0a 70 00 50 41 52 4d a0 10 49 53 53 43 7d F..p.PARM..ISSC} 2f20: 50 41 52 4d 0a 03 50 41 52 4d 70 00 47 45 53 46 PARM..PARMp.GESF 2f30: a4 53 55 43 43 70 00 47 45 53 46 a4 43 52 49 54 .SUCCp.GESF.CRIT 2f40: 14 41 28 53 42 43 42 08 a0 20 93 47 45 53 46 00 .A(SBCB.. .GESF. 2f50: 70 00 50 41 52 4d 70 0b 7d f7 50 41 52 4d 70 00 p.PARMp.}.PARMp. 2f60: 47 45 53 46 a4 53 55 43 43 a0 18 93 47 45 53 46 GESF.SUCC...GESF 2f70: 01 70 00 47 45 53 46 70 00 50 41 52 4d a4 53 55 .p.GESFp.PARM.SU 2f80: 43 43 a0 19 93 47 45 53 46 0a 03 70 00 47 45 53 CC...GESF..p.GES 2f90: 46 70 00 50 41 52 4d a4 53 55 43 43 a0 19 93 47 Fp.PARM.SUCC...G 2fa0: 45 53 46 0a 04 70 00 47 45 53 46 70 00 50 41 52 ESF..p.GESFp.PAR 2fb0: 4d a4 53 55 43 43 a0 19 93 47 45 53 46 0a 05 70 M.SUCC...GESF..p 2fc0: 00 47 45 53 46 70 00 50 41 52 4d a4 53 55 43 43 .GESFp.PARM.SUCC 2fd0: a0 37 93 47 45 53 46 0a 06 70 7b 50 41 52 4d 0a .7.GESF..p{PARM. 2fe0: 0f 00 49 54 56 46 70 7a 7b 50 41 52 4d 0a f0 00 ..ITVFpz{PARM... 2ff0: 0a 04 00 49 54 56 4d 70 00 47 45 53 46 70 00 50 ...ITVMp.GESFp.P 3000: 41 52 4d a4 53 55 43 43 a0 19 93 47 45 53 46 0a ARM.SUCC...GESF. 3010: 07 70 00 47 45 53 46 70 00 50 41 52 4d a4 53 55 .p.GESFp.PARM.SU 3020: 43 43 a0 19 93 47 45 53 46 0a 08 70 00 47 45 53 CC...GESF..p.GES 3030: 46 70 00 50 41 52 4d a4 53 55 43 43 a0 24 93 47 Fp.PARM.SUCC.$.G 3040: 45 53 46 0a 09 7b 50 41 52 4d 0a ff 49 42 54 54 ESF..{PARM..IBTT 3050: 70 00 47 45 53 46 70 00 50 41 52 4d a4 53 55 43 p.GESFp.PARM.SUC 3060: 43 a0 46 05 93 47 45 53 46 0a 0a 7b 50 41 52 4d C.F..GESF..{PARM 3070: 0a ff 49 50 53 43 a0 21 7b 7a 50 41 52 4d 0a 08 ..IPSC.!{zPARM.. 3080: 00 0a ff 00 7b 7a 50 41 52 4d 0a 08 00 0a ff 49 ....{zPARM.....I 3090: 50 41 54 76 49 50 41 54 7b 7a 50 41 52 4d 0a 14 PATvIPAT{zPARM.. 30a0: 00 0a 07 49 42 49 41 70 00 47 45 53 46 70 00 50 ...IBIAp.GESFp.P 30b0: 41 52 4d a4 53 55 43 43 a0 40 06 93 47 45 53 46 ARM.SUCC.@..GESF 30c0: 0a 0b 7b 7a 50 41 52 4d 01 00 01 49 46 31 45 a0 ..{zPARM...IF1E. 30d0: 21 7b 50 41 52 4d 0c 00 e0 01 00 00 7b 7a 50 41 !{PARM......{zPA 30e0: 52 4d 0a 0d 00 0a 0f 49 44 4d 53 70 00 49 44 4d RM.....IDMSp.IDM 30f0: 4d a1 16 7b 7a 50 41 52 4d 0a 11 00 0a 0f 49 44 M..{zPARM.....ID 3100: 4d 53 70 01 49 44 4d 4d 70 00 47 45 53 46 70 00 MSp.IDMMp.GESFp. 3110: 50 41 52 4d a4 53 55 43 43 a0 19 93 47 45 53 46 PARM.SUCC...GESF 3120: 0a 10 70 00 47 45 53 46 70 00 50 41 52 4d a4 53 ..p.GESFp.PARM.S 3130: 55 43 43 a0 1f 93 47 45 53 46 0a 11 7d 50 41 52 UCC...GESF..}PAR 3140: 4d 0b 00 01 50 41 52 4d 70 00 47 45 53 46 a4 53 M...PARMp.GESF.S 3150: 55 43 43 a0 49 04 93 47 45 53 46 0a 12 a0 26 7b UCC.I..GESF...&{ 3160: 50 41 52 4d 01 00 a0 10 93 7a 50 41 52 4d 01 00 PARM.....zPARM.. 3170: 01 70 01 49 53 53 43 a1 0c 70 00 47 45 53 46 a4 .p.ISSC..p.GESF. 3180: 43 52 49 54 a1 07 70 00 49 53 53 43 70 00 47 45 CRIT..p.ISSCp.GE 3190: 53 46 70 00 50 41 52 4d a4 53 55 43 43 a0 19 93 SFp.PARM.SUCC... 31a0: 47 45 53 46 0a 13 70 00 47 45 53 46 70 00 50 41 GESF..p.GESFp.PA 31b0: 52 4d a4 53 55 43 43 70 00 47 45 53 46 a4 53 55 RM.SUCCp.GESF.SU 31c0: 43 43 a0 11 93 47 45 46 43 0a 04 70 47 42 44 41 CC...GEFC..pGBDA 31d0: 47 58 46 43 a0 11 93 47 45 46 43 0a 06 70 53 42 GXFC...GEFC..pSB 31e0: 43 42 47 58 46 43 70 00 47 45 46 43 70 01 53 43 CBGXFCp.GEFCp.SC 31f0: 49 53 70 00 47 53 53 45 70 00 53 43 49 45 a4 00 ISp.GSSEp.SCIE.. 3200: 14 19 50 44 52 44 00 a0 0c 92 44 52 44 59 5b 22 ..PDRD....DRDY[" 3210: 41 53 4c 50 a4 92 44 52 44 59 14 1d 50 53 54 53 ASLP..DRDY..PSTS 3220: 00 a0 0e 94 43 53 54 53 0a 02 5b 22 41 53 4c 50 ....CSTS..["ASLP 3230: a4 93 43 53 54 53 0a 03 14 47 06 47 4e 4f 54 02 ..CSTS...G.GNOT. 3240: a0 07 50 44 52 44 a4 01 a0 07 50 53 54 53 a4 01 ..PDRD....PSTS.. 3250: 70 68 43 45 56 54 70 0a 03 43 53 54 53 a0 2c 90 phCEVTp..CSTS.,. 3260: 93 43 48 50 44 00 93 69 00 a0 18 91 94 4f 53 59 .CHPD..i.....OSY 3270: 53 0b d0 07 95 4f 53 59 53 0b d6 07 86 50 43 49 S....OSYS....PCI 3280: 30 69 a1 07 86 47 46 58 30 69 86 47 46 58 30 0a 0i...GFX0i.GFX0. 3290: 80 a0 0c 92 50 53 54 53 70 00 43 45 56 54 a4 00 ....PSTSp.CEVT.. 32a0: 14 13 47 48 44 53 01 70 68 54 49 44 58 a4 47 4e ..GHDS.phTIDX.GN 32b0: 4f 54 01 00 14 14 47 4c 49 44 01 70 68 43 4c 49 OT....GLID.phCLI 32c0: 44 a4 47 4e 4f 54 0a 02 00 14 15 47 44 43 4b 01 D.GNOT.....GDCK. 32d0: 70 68 43 44 43 4b a4 47 4e 4f 54 0a 04 0a 80 14 phCDCK.GNOT..... 32e0: 19 50 41 52 44 00 a0 0c 92 41 52 44 59 5b 22 41 .PARD....ARDY["A 32f0: 53 4c 50 a4 92 41 52 44 59 14 46 0c 41 49 4e 54 SLP..ARDY.F.AINT 3300: 02 a0 0e 92 7b 54 43 48 45 79 01 68 00 00 a4 01 ....{TCHEy.h.... 3310: a0 07 50 41 52 44 a4 01 a0 4c 05 93 68 0a 02 a0 ..PARD...L..h... 3320: 33 43 50 46 4d a0 0e 93 43 50 46 4d 01 70 0a 06 3CPFM...CPFM.p.. 3330: 50 46 49 54 a0 0f 93 43 50 46 4d 0a 06 70 0a 08 PFIT...CPFM..p.. 3340: 50 46 49 54 a0 0e 93 43 50 46 4d 0a 08 70 01 50 PFIT...CPFM..p.P 3350: 46 49 54 a1 0c 7f 50 46 49 54 0a 07 50 46 49 54 FIT...PFIT..PFIT 3360: 7d 50 46 49 54 0c 00 00 00 80 50 46 49 54 70 0a }PFIT.....PFITp. 3370: 04 41 53 4c 43 a1 42 04 a0 28 93 68 01 70 78 77 .ASLC.B..(.h.pxw 3380: 69 0a ff 00 0a 64 00 00 42 43 4c 50 7d 42 43 4c i....d..BCLP}BCL 3390: 50 0c 00 00 00 80 42 43 4c 50 70 0a 02 41 53 4c P.....BCLPp..ASL 33a0: 43 a1 16 a0 10 93 68 00 70 69 41 4c 53 49 70 01 C.....h.piALSIp. 33b0: 41 53 4c 43 a1 03 a4 01 70 00 4c 42 50 43 a4 00 ASLC....p.LBPC.. 33c0: 10 41 36 5c 00 5b 80 49 4f 5f 54 01 0b 00 08 0a .A6\.[.IO_T..... 33d0: 10 5b 81 0e 49 4f 5f 54 01 00 40 04 54 52 50 30 .[..IO_T..@.TRP0 33e0: 08 5b 80 50 4d 49 4f 01 0b 00 10 0a 80 5b 81 28 .[.PMIO......[.( 33f0: 50 4d 49 4f 01 00 40 15 00 08 00 02 41 43 50 57 PMIO..@.....ACPW 3400: 01 00 45 0b 00 01 47 50 45 43 01 00 4e 10 00 09 ..E...GPEC..N... 3410: 53 43 49 53 01 00 06 5b 80 47 50 49 4f 01 0b 80 SCIS...[.GPIO... 3420: 11 0a 3c 5b 81 40 0c 47 50 49 4f 01 47 55 30 30 ..<[.@.GPIO.GU00 3430: 08 47 55 30 31 08 47 55 30 32 08 47 55 30 33 08 .GU01.GU02.GU03. 3440: 47 49 4f 30 08 47 49 4f 31 08 47 49 4f 32 08 47 GIO0.GIO1.GIO2.G 3450: 49 4f 33 08 00 20 47 4c 30 30 08 47 4c 30 31 08 IO3.. GL00.GL01. 3460: 47 4c 30 32 08 00 03 47 50 32 37 01 47 50 32 38 GL02...GP27.GP28 3470: 01 00 03 00 40 04 47 42 30 30 08 47 42 30 31 08 ....@.GB00.GB01. 3480: 47 42 30 32 08 47 42 30 33 08 00 40 08 47 49 56 GB02.GB03..@.GIV 3490: 30 08 00 03 4c 50 4f 4c 01 00 04 47 49 56 32 08 0...LPOL...GIV2. 34a0: 47 49 56 33 08 47 55 30 34 08 47 55 30 35 08 47 GIV3.GU04.GU05.G 34b0: 55 30 36 08 47 55 30 37 08 47 49 4f 34 08 47 49 U06.GU07.GIO4.GI 34c0: 4f 35 08 47 49 4f 36 08 47 49 4f 37 08 00 05 47 O5.GIO6.GIO7...G 34d0: 50 33 37 01 00 02 47 4c 30 35 08 47 4c 30 36 08 P37...GL05.GL06. 34e0: 47 4c 30 37 08 5b 80 52 43 52 42 00 0c 00 c0 d1 GL07.[.RCRB..... 34f0: fe 0b 00 40 5b 81 48 05 52 43 52 42 13 00 80 00 ...@[.H.RCRB.... 3500: 08 00 80 00 10 00 80 02 02 48 50 41 53 02 00 05 .........HPAS... 3510: 48 50 41 45 01 00 48 09 00 01 50 41 54 44 01 53 HPAE..H...PATD.S 3520: 41 54 44 01 53 4d 42 44 01 48 44 41 44 01 00 0b ATD.SMBD.HDAD... 3530: 52 50 31 44 01 52 50 32 44 01 52 50 33 44 01 52 RP1D.RP2D.RP3D.R 3540: 50 34 44 01 52 50 35 44 01 52 50 36 44 01 08 5f P4D.RP5D.RP6D.._ 3550: 53 30 5f 12 05 03 00 00 00 08 5f 53 33 5f 12 07 S0_......._S3_.. 3560: 03 0a 05 0a 05 00 08 5f 53 34 5f 12 07 03 0a 06 ......._S4_..... 3570: 0a 06 00 08 5f 53 35 5f 12 07 03 0a 07 0a 07 00 ...._S5_........ 3580: 14 45 04 47 45 54 50 09 a0 0e 93 7b 68 0a 09 00 .E.GETP....{h... 3590: 00 a4 0c ff ff ff ff a0 0d 93 7b 68 0a 09 00 0a ..........{h.... 35a0: 08 a4 0b 84 03 7a 7b 68 0b 00 03 00 0a 08 60 7a .....z{h......`z 35b0: 7b 68 0b 00 30 00 0a 0c 61 a4 77 0a 1e 74 0a 09 {h..0...a.w..t.. 35c0: 72 60 61 00 00 00 14 30 47 44 4d 41 0d a0 23 68 r`a....0GDMA..#h 35d0: a0 07 90 69 6c a4 0a 14 a0 0e 90 6a 6c a4 77 74 ...il......jl.wt 35e0: 0a 04 6b 00 0a 0f 00 a4 77 74 0a 04 6b 00 0a 1e ..k.....wt..k... 35f0: 00 a4 0c ff ff ff ff 14 1f 47 45 54 54 09 a4 77 .........GETT..w 3600: 0a 1e 74 0a 09 72 7b 7a 68 0a 02 00 0a 03 00 7b ..t..r{zh......{ 3610: 68 0a 03 00 00 00 00 14 44 06 47 45 54 46 0b 08 h.......D.GETF.. 3620: 54 4d 50 46 00 a0 0c 68 7d 54 4d 50 46 01 54 4d TMPF...h}TMPF.TM 3630: 50 46 a0 11 7b 6a 0a 02 00 7d 54 4d 50 46 0a 02 PF..{j...}TMPF.. 3640: 54 4d 50 46 a0 0d 69 7d 54 4d 50 46 0a 04 54 4d TMPF..i}TMPF..TM 3650: 50 46 a0 11 7b 6a 0a 20 00 7d 54 4d 50 46 0a 08 PF..{j. .}TMPF.. 3660: 54 4d 50 46 a0 12 7b 6a 0b 00 40 00 7d 54 4d 50 TMPF..{j..@.}TMP 3670: 46 0a 10 54 4d 50 46 a4 54 4d 50 46 14 3d 53 45 F..TMPF.TMPF.=SE 3680: 54 50 0b a0 08 94 68 0a f0 a4 0a 08 a1 2d a0 27 TP....h......-.' 3690: 7b 69 0a 02 00 a0 10 90 92 94 68 0a 78 7b 6a 0a {i........h.x{j. 36a0: 02 00 a4 0b 01 23 a0 0f 90 92 94 68 0a b4 7b 6a .....#.....h..{j 36b0: 01 00 a4 0b 01 21 a4 0b 01 10 14 37 53 44 4d 41 .....!.....7SDMA 36c0: 09 a0 08 92 94 68 0a 14 a4 01 a0 09 92 94 68 0a .....h........h. 36d0: 1e a4 0a 02 a0 08 92 94 68 0a 2d a4 01 a0 09 92 ........h.-..... 36e0: 94 68 0a 3c a4 0a 02 a0 08 92 94 68 0a 5a a4 01 .h.<.......h.Z.. 36f0: a4 00 14 2f 53 45 54 54 0b a0 25 7b 69 0a 02 00 .../SETT..%{i... 3700: a0 0f 90 92 94 68 0a 78 7b 6a 0a 02 00 a4 0a 0b .....h.x{j...... 3710: a0 0e 90 92 94 68 0a b4 7b 6a 01 00 a4 0a 09 a4 .....h..{j...... 3720: 0a 04 5b 82 4b 04 48 44 45 46 08 5f 41 44 52 0c ..[.K.HDEF._ADR. 3730: 00 00 1b 00 5b 80 48 44 41 52 02 0a 4c 0a 10 5b ....[.HDAR..L..[ 3740: 81 22 48 44 41 52 02 44 43 4b 41 01 00 07 44 43 ."HDAR.DCKA...DC 3750: 4b 4d 01 00 06 44 43 4b 53 01 00 30 00 0f 50 4d KM...DCKS..0..PM 3760: 45 53 01 08 5f 50 52 57 12 06 02 0a 0d 0a 03 5b ES.._PRW.......[ 3770: 82 41 10 52 50 30 31 08 5f 41 44 52 0c 00 00 1c .A.RP01._ADR.... 3780: 00 5b 80 50 58 43 53 02 0a 40 0a c0 5b 81 45 04 .[.PXCS..@..[.E. 3790: 50 58 43 53 40 00 40 09 00 0d 4c 41 53 58 01 00 PXCS@.@...LASX.. 37a0: 32 41 42 50 58 01 00 02 50 44 43 58 01 00 02 50 2ABPX...PDCX...P 37b0: 44 53 58 01 00 01 4c 53 43 58 01 00 27 00 10 50 DSX...LSCX..'..P 37c0: 53 50 58 01 00 4f 3c 00 1e 48 50 53 58 01 50 4d SPX..O<..HPSX.PM 37d0: 53 58 01 5b 82 0b 50 58 53 58 08 5f 41 44 52 00 SX.[..PXSX._ADR. 37e0: 14 41 09 5f 50 52 54 00 a0 33 47 50 49 43 a4 12 .A._PRT..3GPIC.. 37f0: 2c 04 12 09 04 0b ff ff 00 00 0a 10 12 09 04 0b ,............... 3800: ff ff 01 00 0a 11 12 0a 04 0b ff ff 0a 02 00 0a ................ 3810: 12 12 0a 04 0b ff ff 0a 03 00 0a 13 a1 45 05 a4 .............E.. 3820: 12 41 05 04 12 12 04 0b ff ff 00 5e 5e 2e 4c 50 .A.........^^.LP 3830: 43 42 4c 4e 4b 41 00 12 12 04 0b ff ff 01 5e 5e CBLNKA........^^ 3840: 2e 4c 50 43 42 4c 4e 4b 42 00 12 13 04 0b ff ff .LPCBLNKB....... 3850: 0a 02 5e 5e 2e 4c 50 43 42 4c 4e 4b 43 00 12 13 ..^^.LPCBLNKC... 3860: 04 0b ff ff 0a 03 5e 5e 2e 4c 50 43 42 4c 4e 4b ......^^.LPCBLNK 3870: 44 00 5b 82 41 10 52 50 30 32 08 5f 41 44 52 0c D.[.A.RP02._ADR. 3880: 01 00 1c 00 5b 80 50 58 43 53 02 0a 40 0a c0 5b ....[.PXCS..@..[ 3890: 81 45 04 50 58 43 53 40 00 40 09 00 0d 4c 41 53 .E.PXCS@.@...LAS 38a0: 58 01 00 32 41 42 50 58 01 00 02 50 44 43 58 01 X..2ABPX...PDCX. 38b0: 00 02 50 44 53 58 01 00 01 4c 53 43 58 01 00 27 ..PDSX...LSCX..' 38c0: 00 10 50 53 50 58 01 00 4f 3c 00 1e 48 50 53 58 ..PSPX..O<..HPSX 38d0: 01 50 4d 53 58 01 5b 82 0b 50 58 53 58 08 5f 41 .PMSX.[..PXSX._A 38e0: 44 52 00 14 41 09 5f 50 52 54 00 a0 33 47 50 49 DR..A._PRT..3GPI 38f0: 43 a4 12 2c 04 12 09 04 0b ff ff 00 00 0a 11 12 C..,............ 3900: 09 04 0b ff ff 01 00 0a 12 12 0a 04 0b ff ff 0a ................ 3910: 02 00 0a 13 12 0a 04 0b ff ff 0a 03 00 0a 10 a1 ................ 3920: 45 05 a4 12 41 05 04 12 12 04 0b ff ff 00 5e 5e E...A.........^^ 3930: 2e 4c 50 43 42 4c 4e 4b 42 00 12 12 04 0b ff ff .LPCBLNKB....... 3940: 01 5e 5e 2e 4c 50 43 42 4c 4e 4b 43 00 12 13 04 .^^.LPCBLNKC.... 3950: 0b ff ff 0a 02 5e 5e 2e 4c 50 43 42 4c 4e 4b 44 .....^^.LPCBLNKD 3960: 00 12 13 04 0b ff ff 0a 03 5e 5e 2e 4c 50 43 42 .........^^.LPCB 3970: 4c 4e 4b 41 00 5b 82 4d 11 52 50 30 33 08 5f 41 LNKA.[.M.RP03._A 3980: 44 52 0c 02 00 1c 00 5b 80 50 58 43 53 02 0a 40 DR.....[.PXCS..@ 3990: 0a c0 5b 81 45 04 50 58 43 53 40 00 40 09 00 0d ..[.E.PXCS@.@... 39a0: 4c 41 53 58 01 00 32 41 42 50 58 01 00 02 50 44 LASX..2ABPX...PD 39b0: 43 58 01 00 02 50 44 53 58 01 00 01 4c 53 43 58 CX...PDSX...LSCX 39c0: 01 00 27 00 10 50 53 50 58 01 00 4f 3c 00 1e 48 ..'..PSPX..O<..H 39d0: 50 53 58 01 50 4d 53 58 01 5b 82 0b 50 58 53 58 PSX.PMSX.[..PXSX 39e0: 08 5f 41 44 52 00 08 2e 50 58 53 58 5f 52 4d 56 ._ADR...PXSX_RMV 39f0: 01 08 2e 50 58 53 58 5f 50 52 57 12 06 02 0a 09 ...PXSX_PRW..... 3a00: 0a 03 14 41 09 5f 50 52 54 00 a0 33 47 50 49 43 ...A._PRT..3GPIC 3a10: a4 12 2c 04 12 09 04 0b ff ff 00 00 0a 12 12 09 ..,............. 3a20: 04 0b ff ff 01 00 0a 13 12 0a 04 0b ff ff 0a 02 ................ 3a30: 00 0a 10 12 0a 04 0b ff ff 0a 03 00 0a 11 a1 45 ...............E 3a40: 05 a4 12 41 05 04 12 12 04 0b ff ff 00 5e 5e 2e ...A.........^^. 3a50: 4c 50 43 42 4c 4e 4b 43 00 12 12 04 0b ff ff 01 LPCBLNKC........ 3a60: 5e 5e 2e 4c 50 43 42 4c 4e 4b 44 00 12 13 04 0b ^^.LPCBLNKD..... 3a70: ff ff 0a 02 5e 5e 2e 4c 50 43 42 4c 4e 4b 41 00 ....^^.LPCBLNKA. 3a80: 12 13 04 0b ff ff 0a 03 5e 5e 2e 4c 50 43 42 4c ........^^.LPCBL 3a90: 4e 4b 42 00 5b 82 4f 11 52 50 30 34 08 5f 41 44 NKB.[.O.RP04._AD 3aa0: 52 0c 03 00 1c 00 5b 80 50 58 43 53 02 0a 40 0a R.....[.PXCS..@. 3ab0: c0 5b 81 45 04 50 58 43 53 40 00 40 09 00 0d 4c .[.E.PXCS@.@...L 3ac0: 41 53 58 01 00 32 41 42 50 58 01 00 02 50 44 43 ASX..2ABPX...PDC 3ad0: 58 01 00 02 50 44 53 58 01 00 01 4c 53 43 58 01 X...PDSX...LSCX. 3ae0: 00 27 00 10 50 53 50 58 01 00 4f 3c 00 1e 48 50 .'..PSPX..O<..HP 3af0: 53 58 01 50 4d 53 58 01 5b 82 29 50 58 53 58 08 SX.PMSX.[.)PXSX. 3b00: 5f 41 44 52 00 14 1d 5f 50 52 57 00 a0 0d 57 4b _ADR..._PRW...WK 3b10: 4c 4e a4 12 06 02 0a 09 0a 03 a1 08 a4 12 05 02 LN.............. 3b20: 0a 09 00 14 41 09 5f 50 52 54 00 a0 33 47 50 49 ....A._PRT..3GPI 3b30: 43 a4 12 2c 04 12 09 04 0b ff ff 00 00 0a 13 12 C..,............ 3b40: 09 04 0b ff ff 01 00 0a 10 12 0a 04 0b ff ff 0a ................ 3b50: 02 00 0a 11 12 0a 04 0b ff ff 0a 03 00 0a 12 a1 ................ 3b60: 45 05 a4 12 41 05 04 12 12 04 0b ff ff 00 5e 5e E...A.........^^ 3b70: 2e 4c 50 43 42 4c 4e 4b 44 00 12 12 04 0b ff ff .LPCBLNKD....... 3b80: 01 5e 5e 2e 4c 50 43 42 4c 4e 4b 41 00 12 13 04 .^^.LPCBLNKA.... 3b90: 0b ff ff 0a 02 5e 5e 2e 4c 50 43 42 4c 4e 4b 42 .....^^.LPCBLNKB 3ba0: 00 12 13 04 0b ff ff 0a 03 5e 5e 2e 4c 50 43 42 .........^^.LPCB 3bb0: 4c 4e 4b 43 00 5b 82 41 10 52 50 30 35 08 5f 41 LNKC.[.A.RP05._A 3bc0: 44 52 0c 04 00 1c 00 5b 80 50 58 43 53 02 0a 40 DR.....[.PXCS..@ 3bd0: 0a c0 5b 81 45 04 50 58 43 53 40 00 40 09 00 0d ..[.E.PXCS@.@... 3be0: 4c 41 53 58 01 00 32 41 42 50 58 01 00 02 50 44 LASX..2ABPX...PD 3bf0: 43 58 01 00 02 50 44 53 58 01 00 01 4c 53 43 58 CX...PDSX...LSCX 3c00: 01 00 27 00 10 50 53 50 58 01 00 4f 3c 00 1e 48 ..'..PSPX..O<..H 3c10: 50 53 58 01 50 4d 53 58 01 5b 82 0b 50 58 53 58 PSX.PMSX.[..PXSX 3c20: 08 5f 41 44 52 00 14 41 09 5f 50 52 54 00 a0 33 ._ADR..A._PRT..3 3c30: 47 50 49 43 a4 12 2c 04 12 09 04 0b ff ff 00 00 GPIC..,......... 3c40: 0a 10 12 09 04 0b ff ff 01 00 0a 11 12 0a 04 0b ................ 3c50: ff ff 0a 02 00 0a 12 12 0a 04 0b ff ff 0a 03 00 ................ 3c60: 0a 13 a1 45 05 a4 12 41 05 04 12 12 04 0b ff ff ...E...A........ 3c70: 00 5e 5e 2e 4c 50 43 42 4c 4e 4b 41 00 12 12 04 .^^.LPCBLNKA.... 3c80: 0b ff ff 01 5e 5e 2e 4c 50 43 42 4c 4e 4b 42 00 ....^^.LPCBLNKB. 3c90: 12 13 04 0b ff ff 0a 02 5e 5e 2e 4c 50 43 42 4c ........^^.LPCBL 3ca0: 4e 4b 43 00 12 13 04 0b ff ff 0a 03 5e 5e 2e 4c NKC.........^^.L 3cb0: 50 43 42 4c 4e 4b 44 00 5b 82 41 10 52 50 30 36 PCBLNKD.[.A.RP06 3cc0: 08 5f 41 44 52 0c 05 00 1c 00 5b 80 50 58 43 53 ._ADR.....[.PXCS 3cd0: 02 0a 40 0a c0 5b 81 45 04 50 58 43 53 40 00 40 ..@..[.E.PXCS@.@ 3ce0: 09 00 0d 4c 41 53 58 01 00 32 41 42 50 58 01 00 ...LASX..2ABPX.. 3cf0: 02 50 44 43 58 01 00 02 50 44 53 58 01 00 01 4c .PDCX...PDSX...L 3d00: 53 43 58 01 00 27 00 10 50 53 50 58 01 00 4f 3c SCX..'..PSPX..O< 3d10: 00 1e 48 50 53 58 01 50 4d 53 58 01 5b 82 0b 50 ..HPSX.PMSX.[..P 3d20: 58 53 58 08 5f 41 44 52 00 14 41 09 5f 50 52 54 XSX._ADR..A._PRT 3d30: 00 a0 33 47 50 49 43 a4 12 2c 04 12 09 04 0b ff ..3GPIC..,...... 3d40: ff 00 00 0a 11 12 09 04 0b ff ff 01 00 0a 12 12 ................ 3d50: 0a 04 0b ff ff 0a 02 00 0a 13 12 0a 04 0b ff ff ................ 3d60: 0a 03 00 0a 10 a1 45 05 a4 12 41 05 04 12 12 04 ......E...A..... 3d70: 0b ff ff 00 5e 5e 2e 4c 50 43 42 4c 4e 4b 42 00 ....^^.LPCBLNKB. 3d80: 12 12 04 0b ff ff 01 5e 5e 2e 4c 50 43 42 4c 4e .......^^.LPCBLN 3d90: 4b 43 00 12 13 04 0b ff ff 0a 02 5e 5e 2e 4c 50 KC.........^^.LP 3da0: 43 42 4c 4e 4b 44 00 12 13 04 0b ff ff 0a 03 5e CBLNKD.........^ 3db0: 5e 2e 4c 50 43 42 4c 4e 4b 41 00 5b 82 4d 06 55 ^.LPCBLNKA.[.M.U 3dc0: 53 42 31 08 5f 41 44 52 0c 00 00 1d 00 5b 80 55 SB1._ADR.....[.U 3dd0: 31 43 53 02 0a c4 0a 04 5b 81 0b 55 31 43 53 03 1CS.....[..U1CS. 3de0: 55 31 45 4e 02 08 5f 50 52 57 12 06 02 0a 03 0a U1EN.._PRW...... 3df0: 03 14 24 5f 50 53 57 01 a0 15 68 70 01 41 43 50 ..$_PSW...hp.ACP 3e00: 57 a0 0c 41 43 50 57 70 0a 03 55 31 45 4e a1 07 W..ACPWp..U1EN.. 3e10: 70 00 55 31 45 4e 14 09 5f 53 33 44 00 a4 0a 02 p.U1EN.._S3D.... 3e20: 14 09 5f 53 34 44 00 a4 0a 02 5b 82 4c 06 55 53 .._S4D....[.L.US 3e30: 42 32 08 5f 41 44 52 0c 01 00 1d 00 5b 80 55 32 B2._ADR.....[.U2 3e40: 43 53 02 0a c4 0a 04 5b 81 0b 55 32 43 53 03 55 CS.....[..U2CS.U 3e50: 32 45 4e 02 08 5f 50 52 57 12 06 02 0a 04 0a 03 2EN.._PRW....... 3e60: 14 23 5f 50 53 57 01 a0 14 68 70 01 41 43 50 57 .#_PSW...hp.ACPW 3e70: a0 0b 41 43 50 57 70 01 55 32 45 4e a1 07 70 00 ..ACPWp.U2EN..p. 3e80: 55 32 45 4e 14 09 5f 53 33 44 00 a4 0a 02 14 09 U2EN.._S3D...... 3e90: 5f 53 34 44 00 a4 0a 02 5b 82 4d 06 55 53 42 33 _S4D....[.M.USB3 3ea0: 08 5f 41 44 52 0c 02 00 1d 00 5b 80 55 32 43 53 ._ADR.....[.U2CS 3eb0: 02 0a c4 0a 04 5b 81 0b 55 32 43 53 03 55 33 45 .....[..U2CS.U3E 3ec0: 4e 02 08 5f 50 52 57 12 06 02 0a 0c 0a 03 14 24 N.._PRW........$ 3ed0: 5f 50 53 57 01 a0 15 68 70 01 41 43 50 57 a0 0c _PSW...hp.ACPW.. 3ee0: 41 43 50 57 70 0a 03 55 33 45 4e a1 07 70 00 55 ACPWp..U3EN..p.U 3ef0: 33 45 4e 14 09 5f 53 33 44 00 a4 0a 02 14 09 5f 3EN.._S3D......_ 3f00: 53 34 44 00 a4 0a 02 5b 82 4d 06 55 53 42 34 08 S4D....[.M.USB4. 3f10: 5f 41 44 52 0c 00 00 1a 00 5b 80 55 34 43 53 02 _ADR.....[.U4CS. 3f20: 0a c4 0a 04 5b 81 0b 55 34 43 53 03 55 34 45 4e ....[..U4CS.U4EN 3f30: 02 08 5f 50 52 57 12 06 02 0a 0e 0a 03 14 24 5f .._PRW........$_ 3f40: 50 53 57 01 a0 15 68 70 01 41 43 50 57 a0 0c 41 PSW...hp.ACPW..A 3f50: 43 50 57 70 0a 03 55 34 45 4e a1 07 70 00 55 34 CPWp..U4EN..p.U4 3f60: 45 4e 14 09 5f 53 33 44 00 a4 0a 02 14 09 5f 53 EN.._S3D......_S 3f70: 34 44 00 a4 0a 02 5b 82 41 06 55 53 42 35 08 5f 4D....[.A.USB5._ 3f80: 41 44 52 0c 01 00 1a 00 5b 80 55 35 43 53 02 0a ADR.....[.U5CS.. 3f90: c4 0a 04 5b 81 0b 55 35 43 53 03 55 35 45 4e 02 ...[..U5CS.U5EN. 3fa0: 14 24 5f 50 53 57 01 a0 15 68 70 01 41 43 50 57 .$_PSW...hp.ACPW 3fb0: a0 0c 41 43 50 57 70 0a 03 55 35 45 4e a1 07 70 ..ACPWp..U5EN..p 3fc0: 00 55 35 45 4e 14 09 5f 53 33 44 00 a4 0a 02 14 .U5EN.._S3D..... 3fd0: 09 5f 53 34 44 00 a4 0a 02 5b 82 4b 0a 45 48 43 ._S4D....[.K.EHC 3fe0: 31 08 5f 41 44 52 0c 07 00 1d 00 5b 80 55 37 43 1._ADR.....[.U7C 3ff0: 53 02 0a 54 0a 04 5b 81 0d 55 37 43 53 03 00 0f S..T..[..U7CS... 4000: 50 4d 45 53 01 5b 82 4f 05 48 55 42 37 08 5f 41 PMES.[.O.HUB7._A 4010: 44 52 00 5b 82 0b 50 52 54 31 08 5f 41 44 52 01 DR.[..PRT1._ADR. 4020: 5b 82 0c 50 52 54 32 08 5f 41 44 52 0a 02 5b 82 [..PRT2._ADR..[. 4030: 0c 50 52 54 33 08 5f 41 44 52 0a 03 5b 82 0c 50 .PRT3._ADR..[..P 4040: 52 54 34 08 5f 41 44 52 0a 04 5b 82 0c 50 52 54 RT4._ADR..[..PRT 4050: 35 08 5f 41 44 52 0a 05 5b 82 0c 50 52 54 36 08 5._ADR..[..PRT6. 4060: 5f 41 44 52 0a 06 08 5f 50 52 57 12 06 02 0a 0d _ADR..._PRW..... 4070: 0a 03 14 09 5f 53 33 44 00 a4 0a 02 14 09 5f 53 ...._S3D......_S 4080: 34 44 00 a4 0a 02 5b 82 4f 08 45 48 43 32 08 5f 4D....[.O.EHC2._ 4090: 41 44 52 0c 07 00 1a 00 5b 80 55 46 43 53 02 0a ADR.....[.UFCS.. 40a0: 54 0a 04 5b 81 0d 55 46 43 53 03 00 0f 50 4d 45 T..[..UFCS...PME 40b0: 53 01 5b 82 43 04 48 55 42 37 08 5f 41 44 52 00 S.[.C.HUB7._ADR. 40c0: 5b 82 0b 50 52 54 31 08 5f 41 44 52 01 5b 82 0c [..PRT1._ADR.[.. 40d0: 50 52 54 32 08 5f 41 44 52 0a 02 5b 82 0c 50 52 PRT2._ADR..[..PR 40e0: 54 33 08 5f 41 44 52 0a 03 5b 82 0c 50 52 54 34 T3._ADR..[..PRT4 40f0: 08 5f 41 44 52 0a 04 08 5f 50 52 57 12 06 02 0a ._ADR..._PRW.... 4100: 0d 0a 03 14 09 5f 53 33 44 00 a4 0a 02 14 09 5f ....._S3D......_ 4110: 53 34 44 00 a4 0a 02 5b 82 4a 06 50 43 49 42 08 S4D....[.J.PCIB. 4120: 5f 41 44 52 0c 00 00 1e 00 14 49 05 5f 50 52 54 _ADR......I._PRT 4130: 00 a0 21 47 50 49 43 a4 12 1a 02 12 0b 04 0c ff ..!GPIC......... 4140: ff 06 00 00 00 0a 16 12 0b 04 0c ff ff 06 00 01 ................ 4150: 00 0a 17 a1 2f a4 12 2c 02 12 14 04 0c ff ff 06 ..../..,........ 4160: 00 00 5e 5e 2e 4c 50 43 42 4c 4e 4b 47 00 12 14 ..^^.LPCBLNKG... 4170: 04 0c ff ff 06 00 01 5e 5e 2e 4c 50 43 42 4c 4e .......^^.LPCBLN 4180: 4b 48 00 5b 82 8d 2e 01 4c 50 43 42 08 5f 41 44 KH.[....LPCB._AD 4190: 52 0c 00 00 1f 00 5b 80 4c 50 43 30 02 0a 40 0a R.....[.LPC0..@. 41a0: c0 5b 81 4d 07 4c 50 43 30 00 00 40 10 50 41 52 .[.M.LPC0..@.PAR 41b0: 43 08 50 42 52 43 08 50 43 52 43 08 50 44 52 43 C.PBRC.PCRC.PDRC 41c0: 08 00 20 50 45 52 43 08 50 46 52 43 08 50 47 52 .. PERC.PFRC.PGR 41d0: 43 08 50 48 52 43 08 00 40 0a 43 4d 41 52 03 00 C.PHRC..@.CMAR.. 41e0: 01 43 4d 42 52 03 00 01 4c 50 54 52 02 00 06 43 .CMBR...LPTR...C 41f0: 4d 41 44 01 43 4d 42 44 01 4c 50 54 44 01 46 44 MAD.CMBD.LPTD.FD 4200: 44 44 01 00 2c 49 4f 52 32 10 00 02 4c 47 52 4d DD..,IOR2...LGRM 4210: 06 00 48 32 52 41 45 4e 01 00 0d 52 43 42 41 12 ..H2RAEN...RCBA. 4220: 5b 80 53 4d 49 30 01 0c 00 fe 00 00 0c 02 00 00 [.SMI0.......... 4230: 00 5b 81 0b 53 4d 49 30 00 53 4d 49 43 08 5b 80 .[..SMI0.SMIC.[. 4240: 53 4d 49 31 00 0c bd 2e 6e bf 0c 90 00 00 00 5b SMI1....n......[ 4250: 81 16 53 4d 49 31 00 42 43 4d 44 08 44 49 44 5f ..SMI1.BCMD.DID_ 4260: 20 49 4e 46 4f 40 40 5b 81 15 53 4d 49 31 00 01 INFO@@[..SMI1.. 4270: 01 00 00 28 49 4e 46 5f 08 49 4e 46 31 20 5b 01 ...(INF_.INF1 [. 4280: 50 53 4d 58 00 14 27 50 48 53 53 01 5b 23 50 53 PSMX..'PHSS.[#PS 4290: 4d 58 ff ff 70 0a 80 42 43 4d 44 70 68 44 49 44 MX..p..BCMDphDID 42a0: 5f 70 00 53 4d 49 43 5b 27 50 53 4d 58 5b 82 41 _p.SMIC['PSMX[.A 42b0: 0a 4c 4e 4b 41 08 5f 48 49 44 0c 41 d0 0c 0f 08 .LNKA._HID.A.... 42c0: 5f 55 49 44 01 14 0d 5f 44 49 53 08 70 0a 80 50 _UID..._DIS.p..P 42d0: 41 52 43 08 5f 50 52 53 11 09 0a 06 23 fa d4 18 ARC._PRS....#... 42e0: 79 00 14 38 5f 43 52 53 08 08 52 54 4c 41 11 09 y..8_CRS..RTLA.. 42f0: 0a 06 23 00 00 18 79 00 8b 52 54 4c 41 01 49 52 ..#...y..RTLA.IR 4300: 51 30 70 00 49 52 51 30 79 01 7b 50 41 52 43 0a Q0p.IRQ0y.{PARC. 4310: 0f 00 49 52 51 30 a4 52 54 4c 41 14 1b 5f 53 52 ..IRQ0.RTLA.._SR 4320: 53 09 8b 68 01 49 52 51 30 82 49 52 51 30 60 76 S..h.IRQ0.IRQ0`v 4330: 60 70 60 50 41 52 43 14 18 5f 53 54 41 08 a0 0c `p`PARC.._STA... 4340: 7b 50 41 52 43 0a 80 00 a4 0a 09 a1 04 a4 0a 0b {PARC........... 4350: 5b 82 42 0a 4c 4e 4b 42 08 5f 48 49 44 0c 41 d0 [.B.LNKB._HID.A. 4360: 0c 0f 08 5f 55 49 44 0a 02 14 0d 5f 44 49 53 08 ..._UID...._DIS. 4370: 70 0a 80 50 42 52 43 08 5f 50 52 53 11 09 0a 06 p..PBRC._PRS.... 4380: 23 fa d8 18 79 00 14 38 5f 43 52 53 08 08 52 54 #...y..8_CRS..RT 4390: 4c 42 11 09 0a 06 23 00 00 18 79 00 8b 52 54 4c LB....#...y..RTL 43a0: 42 01 49 52 51 30 70 00 49 52 51 30 79 01 7b 50 B.IRQ0p.IRQ0y.{P 43b0: 42 52 43 0a 0f 00 49 52 51 30 a4 52 54 4c 42 14 BRC...IRQ0.RTLB. 43c0: 1b 5f 53 52 53 09 8b 68 01 49 52 51 30 82 49 52 ._SRS..h.IRQ0.IR 43d0: 51 30 60 76 60 70 60 50 42 52 43 14 18 5f 53 54 Q0`v`p`PBRC.._ST 43e0: 41 08 a0 0c 7b 50 42 52 43 0a 80 00 a4 0a 09 a1 A...{PBRC....... 43f0: 04 a4 0a 0b 5b 82 42 0a 4c 4e 4b 43 08 5f 48 49 ....[.B.LNKC._HI 4400: 44 0c 41 d0 0c 0f 08 5f 55 49 44 0a 03 14 0d 5f D.A...._UID...._ 4410: 44 49 53 08 70 0a 80 50 43 52 43 08 5f 50 52 53 DIS.p..PCRC._PRS 4420: 11 09 0a 06 23 fa d4 18 79 00 14 38 5f 43 52 53 ....#...y..8_CRS 4430: 08 08 52 54 4c 43 11 09 0a 06 23 00 00 18 79 00 ..RTLC....#...y. 4440: 8b 52 54 4c 43 01 49 52 51 30 70 00 49 52 51 30 .RTLC.IRQ0p.IRQ0 4450: 79 01 7b 50 43 52 43 0a 0f 00 49 52 51 30 a4 52 y.{PCRC...IRQ0.R 4460: 54 4c 43 14 1b 5f 53 52 53 09 8b 68 01 49 52 51 TLC.._SRS..h.IRQ 4470: 30 82 49 52 51 30 60 76 60 70 60 50 43 52 43 14 0.IRQ0`v`p`PCRC. 4480: 18 5f 53 54 41 08 a0 0c 7b 50 43 52 43 0a 80 00 ._STA...{PCRC... 4490: a4 0a 09 a1 04 a4 0a 0b 5b 82 42 0a 4c 4e 4b 44 ........[.B.LNKD 44a0: 08 5f 48 49 44 0c 41 d0 0c 0f 08 5f 55 49 44 0a ._HID.A...._UID. 44b0: 04 14 0d 5f 44 49 53 08 70 0a 80 50 44 52 43 08 ..._DIS.p..PDRC. 44c0: 5f 50 52 53 11 09 0a 06 23 fa d8 18 79 00 14 38 _PRS....#...y..8 44d0: 5f 43 52 53 08 08 52 54 4c 44 11 09 0a 06 23 00 _CRS..RTLD....#. 44e0: 00 18 79 00 8b 52 54 4c 44 01 49 52 51 30 70 00 ..y..RTLD.IRQ0p. 44f0: 49 52 51 30 79 01 7b 50 44 52 43 0a 0f 00 49 52 IRQ0y.{PDRC...IR 4500: 51 30 a4 52 54 4c 44 14 1b 5f 53 52 53 09 8b 68 Q0.RTLD.._SRS..h 4510: 01 49 52 51 30 82 49 52 51 30 60 76 60 70 60 50 .IRQ0.IRQ0`v`p`P 4520: 44 52 43 14 18 5f 53 54 41 08 a0 0c 7b 50 44 52 DRC.._STA...{PDR 4530: 43 0a 80 00 a4 0a 09 a1 04 a4 0a 0b 5b 82 42 0a C...........[.B. 4540: 4c 4e 4b 45 08 5f 48 49 44 0c 41 d0 0c 0f 08 5f LNKE._HID.A...._ 4550: 55 49 44 0a 05 14 0d 5f 44 49 53 08 70 0a 80 50 UID...._DIS.p..P 4560: 45 52 43 08 5f 50 52 53 11 09 0a 06 23 fa d4 18 ERC._PRS....#... 4570: 79 00 14 38 5f 43 52 53 08 08 52 54 4c 45 11 09 y..8_CRS..RTLE.. 4580: 0a 06 23 00 00 18 79 00 8b 52 54 4c 45 01 49 52 ..#...y..RTLE.IR 4590: 51 30 70 00 49 52 51 30 79 01 7b 50 45 52 43 0a Q0p.IRQ0y.{PERC. 45a0: 0f 00 49 52 51 30 a4 52 54 4c 45 14 1b 5f 53 52 ..IRQ0.RTLE.._SR 45b0: 53 09 8b 68 01 49 52 51 30 82 49 52 51 30 60 76 S..h.IRQ0.IRQ0`v 45c0: 60 70 60 50 45 52 43 14 18 5f 53 54 41 08 a0 0c `p`PERC.._STA... 45d0: 7b 50 45 52 43 0a 80 00 a4 0a 09 a1 04 a4 0a 0b {PERC........... 45e0: 5b 82 42 0a 4c 4e 4b 46 08 5f 48 49 44 0c 41 d0 [.B.LNKF._HID.A. 45f0: 0c 0f 08 5f 55 49 44 0a 06 14 0d 5f 44 49 53 08 ..._UID...._DIS. 4600: 70 0a 80 50 46 52 43 08 5f 50 52 53 11 09 0a 06 p..PFRC._PRS.... 4610: 23 fa d8 18 79 00 14 38 5f 43 52 53 08 08 52 54 #...y..8_CRS..RT 4620: 4c 46 11 09 0a 06 23 00 00 18 79 00 8b 52 54 4c LF....#...y..RTL 4630: 46 01 49 52 51 30 70 00 49 52 51 30 79 01 7b 50 F.IRQ0p.IRQ0y.{P 4640: 46 52 43 0a 0f 00 49 52 51 30 a4 52 54 4c 46 14 FRC...IRQ0.RTLF. 4650: 1b 5f 53 52 53 09 8b 68 01 49 52 51 30 82 49 52 ._SRS..h.IRQ0.IR 4660: 51 30 60 76 60 70 60 50 46 52 43 14 18 5f 53 54 Q0`v`p`PFRC.._ST 4670: 41 08 a0 0c 7b 50 46 52 43 0a 80 00 a4 0a 09 a1 A...{PFRC....... 4680: 04 a4 0a 0b 5b 82 42 0a 4c 4e 4b 47 08 5f 48 49 ....[.B.LNKG._HI 4690: 44 0c 41 d0 0c 0f 08 5f 55 49 44 0a 07 14 0d 5f D.A...._UID...._ 46a0: 44 49 53 08 70 0a 80 50 47 52 43 08 5f 50 52 53 DIS.p..PGRC._PRS 46b0: 11 09 0a 06 23 fa d4 18 79 00 14 38 5f 43 52 53 ....#...y..8_CRS 46c0: 08 08 52 54 4c 47 11 09 0a 06 23 00 00 18 79 00 ..RTLG....#...y. 46d0: 8b 52 54 4c 47 01 49 52 51 30 70 00 49 52 51 30 .RTLG.IRQ0p.IRQ0 46e0: 79 01 7b 50 47 52 43 0a 0f 00 49 52 51 30 a4 52 y.{PGRC...IRQ0.R 46f0: 54 4c 47 14 1b 5f 53 52 53 09 8b 68 01 49 52 51 TLG.._SRS..h.IRQ 4700: 30 82 49 52 51 30 60 76 60 70 60 50 47 52 43 14 0.IRQ0`v`p`PGRC. 4710: 18 5f 53 54 41 08 a0 0c 7b 50 47 52 43 0a 80 00 ._STA...{PGRC... 4720: a4 0a 09 a1 04 a4 0a 0b 5b 82 42 0a 4c 4e 4b 48 ........[.B.LNKH 4730: 08 5f 48 49 44 0c 41 d0 0c 0f 08 5f 55 49 44 0a ._HID.A...._UID. 4740: 08 14 0d 5f 44 49 53 08 70 0a 80 50 48 52 43 08 ..._DIS.p..PHRC. 4750: 5f 50 52 53 11 09 0a 06 23 fa d8 18 79 00 14 38 _PRS....#...y..8 4760: 5f 43 52 53 08 08 52 54 4c 48 11 09 0a 06 23 00 _CRS..RTLH....#. 4770: 00 18 79 00 8b 52 54 4c 48 01 49 52 51 30 70 00 ..y..RTLH.IRQ0p. 4780: 49 52 51 30 79 01 7b 50 48 52 43 0a 0f 00 49 52 IRQ0y.{PHRC...IR 4790: 51 30 a4 52 54 4c 48 14 1b 5f 53 52 53 09 8b 68 Q0.RTLH.._SRS..h 47a0: 01 49 52 51 30 82 49 52 51 30 60 76 60 70 60 50 .IRQ0.IRQ0`v`p`P 47b0: 48 52 43 14 18 5f 53 54 41 08 a0 0c 7b 50 48 52 HRC.._STA...{PHR 47c0: 43 0a 80 00 a4 0a 09 a1 04 a4 0a 0b 5b 82 3d 44 C...........[.=D 47d0: 4d 41 43 08 5f 48 49 44 0c 41 d0 02 00 08 5f 43 MAC._HID.A...._C 47e0: 52 53 11 28 0a 25 47 01 00 00 00 00 01 20 47 01 RS.(.%G...... G. 47f0: 81 00 81 00 01 11 47 01 93 00 93 00 01 0d 47 01 ......G.......G. 4800: c0 00 c0 00 01 20 2a 10 01 79 00 5b 82 26 46 57 ..... *..y.[.&FW 4810: 48 44 08 5f 48 49 44 0c 25 d4 08 00 08 5f 43 52 HD._HID.%...._CR 4820: 53 11 11 0a 0e 86 09 00 00 00 00 00 ff 00 00 00 S............... 4830: 01 79 00 5b 82 40 0b 48 50 45 54 08 5f 48 49 44 .y.[.@.HPET._HID 4840: 0c 41 d0 01 03 08 5f 43 49 44 0c 41 d0 0c 01 08 .A...._CID.A.... 4850: 42 55 46 30 11 11 0a 0e 86 09 00 00 00 00 d0 fe BUF0............ 4860: 00 04 00 00 79 00 14 27 5f 53 54 41 00 a0 13 92 ....y..'_STA.... 4870: 95 4f 53 59 53 0b d1 07 a0 08 48 50 41 45 a4 0a .OSYS.....HPAE.. 4880: 0f a1 0a a0 08 48 50 41 45 a4 0a 0b a4 00 14 46 .....HPAE......F 4890: 05 5f 43 52 53 08 a0 49 04 48 50 41 45 8a 42 55 ._CRS..I.HPAE.BU 48a0: 46 30 0a 04 48 50 54 30 a0 11 93 48 50 41 53 01 F0..HPT0...HPAS. 48b0: 70 0c 00 10 d0 fe 48 50 54 30 a0 12 93 48 50 41 p.....HPT0...HPA 48c0: 53 0a 02 70 0c 00 20 d0 fe 48 50 54 30 a0 12 93 S..p.. ..HPT0... 48d0: 48 50 41 53 0a 03 70 0c 00 30 d0 fe 48 50 54 30 HPAS..p..0..HPT0 48e0: a4 42 55 46 30 5b 82 45 0a 49 50 49 43 08 5f 48 .BUF0[.E.IPIC._H 48f0: 49 44 0b 41 d0 08 5f 43 52 53 11 41 09 0a 8d 47 ID.A.._CRS.A...G 4900: 01 20 00 20 00 01 02 47 01 24 00 24 00 01 02 47 . . ...G.$.$...G 4910: 01 28 00 28 00 01 02 47 01 2c 00 2c 00 01 02 47 .(.(...G.,.,...G 4920: 01 30 00 30 00 01 02 47 01 34 00 34 00 01 02 47 .0.0...G.4.4...G 4930: 01 38 00 38 00 01 02 47 01 3c 00 3c 00 01 02 47 .8.8...G.<.<...G 4940: 01 a0 00 a0 00 01 02 47 01 a4 00 a4 00 01 02 47 .......G.......G 4950: 01 a8 00 a8 00 01 02 47 01 ac 00 ac 00 01 02 47 .......G.......G 4960: 01 b0 00 b0 00 01 02 47 01 b4 00 b4 00 01 02 47 .......G.......G 4970: 01 b8 00 b8 00 01 02 47 01 bc 00 bc 00 01 02 47 .......G.......G 4980: 01 d0 04 d0 04 01 02 22 04 00 79 00 5b 82 25 4d ......."..y.[.%M 4990: 41 54 48 08 5f 48 49 44 0c 41 d0 0c 04 08 5f 43 ATH._HID.A...._C 49a0: 52 53 11 10 0a 0d 47 01 f0 00 f0 00 01 01 22 00 RS....G.......". 49b0: 20 79 00 5b 82 4b 09 4c 44 52 43 08 5f 48 49 44 y.[.K.LDRC._HID 49c0: 0c 41 d0 0c 02 08 5f 55 49 44 0a 02 08 5f 43 52 .A...._UID..._CR 49d0: 53 11 4e 07 0a 7a 47 01 2e 00 2e 00 01 02 47 01 S.N..zG.......G. 49e0: 4e 00 4e 00 01 02 47 01 61 00 61 00 01 01 47 01 N.N...G.a.a...G. 49f0: 63 00 63 00 01 01 47 01 65 00 65 00 01 01 47 01 c.c...G.e.e...G. 4a00: 67 00 67 00 01 01 47 01 80 00 80 00 01 01 47 01 g.g...G.......G. 4a10: 92 00 92 00 01 01 47 01 b2 00 b2 00 01 02 47 01 ......G.......G. 4a20: 80 06 80 06 01 20 47 01 00 08 00 08 01 10 47 01 ..... G.......G. 4a30: 00 10 00 10 01 80 47 01 80 11 80 11 01 40 47 01 ......G......@G. 4a40: 00 fe 00 fe 01 01 47 01 00 ff 00 ff 01 80 79 00 ......G.......y. 4a50: 5b 82 25 52 54 43 5f 08 5f 48 49 44 0c 41 d0 0b [.%RTC_._HID.A.. 4a60: 00 08 5f 43 52 53 11 10 0a 0d 47 01 70 00 70 00 .._CRS....G.p.p. 4a70: 01 08 22 00 01 79 00 5b 82 2d 54 49 4d 52 08 5f .."..y.[.-TIMR._ 4a80: 48 49 44 0c 41 d0 01 00 08 5f 43 52 53 11 18 0a HID.A...._CRS... 4a90: 15 47 01 40 00 40 00 01 04 47 01 50 00 50 00 10 .G.@.@...G.P.P.. 4aa0: 04 22 01 00 79 00 5b 82 32 41 43 41 44 08 5f 48 ."..y.[.2ACAD._H 4ab0: 49 44 0d 41 43 50 49 30 30 30 33 00 08 5f 50 43 ID.ACPI0003.._PC 4ac0: 4c 12 06 01 5f 53 42 5f 14 11 5f 50 53 52 00 70 L..._SB_.._PSR.p 4ad0: 01 41 43 50 57 a4 41 43 50 57 14 1a 45 43 4f 4b .ACPW.ACPW..ECOK 4ae0: 00 a0 0f 93 5e 2e 45 43 30 5f 5a 30 30 39 01 a4 ....^.EC0_Z009.. 4af0: 01 a1 03 a4 00 5b 82 4e 6f 45 43 30 5f 08 5f 48 .....[.NoEC0_._H 4b00: 49 44 0c 41 d0 0c 09 08 5f 47 50 45 0a 1c 08 5a ID.A...._GPE...Z 4b10: 30 30 39 00 08 5f 43 52 53 11 15 0a 12 47 01 62 009.._CRS....G.b 4b20: 00 62 00 01 01 47 01 66 00 66 00 01 01 79 00 14 .b...G.f.f...y.. 4b30: 3b 5f 52 45 47 02 a0 34 93 68 0a 03 70 69 5a 30 ;_REG..4.h..piZ0 4b40: 30 39 a0 28 5b 12 5f 4f 53 49 60 70 00 42 54 44 09.([._OSI`p.BTD 4b50: 53 a0 19 5f 4f 53 49 0d 57 69 6e 64 6f 77 73 20 S.._OSI.Windows 4b60: 32 30 30 36 00 70 01 42 54 44 53 5b 80 45 52 41 2006.p.BTDS[.ERA 4b70: 4d 03 00 0a ff 5b 81 4e 2e 45 52 41 4d 11 00 40 M....[.N.ERAM..@ 4b80: 30 53 4d 50 52 08 53 4d 53 54 08 53 4d 41 44 08 0SMPR.SMST.SMAD. 4b90: 53 4d 43 4d 08 53 4d 44 30 40 10 42 43 4e 54 08 SMCM.SMD0@.BCNT. 4ba0: 53 4d 41 41 18 00 40 04 43 48 47 4d 10 43 48 47 SMAA..@.CHGM.CHG 4bb0: 53 10 45 4e 49 44 08 45 4e 49 42 08 45 4e 44 44 S.ENID.ENIB.ENDD 4bc0: 08 43 48 47 56 08 43 48 47 41 10 42 41 4c 30 01 .CHGV.CHGA.BAL0. 4bd0: 42 41 4c 31 01 42 41 4c 32 01 42 41 4c 33 01 42 BAL1.BAL2.BAL3.B 4be0: 42 43 30 01 42 42 43 31 01 42 42 43 32 01 42 42 BC0.BBC1.BBC2.BB 4bf0: 43 33 01 00 08 50 48 44 44 01 49 46 44 44 01 49 C3...PHDD.IFDD.I 4c00: 4f 44 44 01 53 48 44 44 01 53 31 32 30 01 45 46 ODD.SHDD.S120.EF 4c10: 44 44 01 43 52 54 44 01 53 50 57 52 01 53 42 54 DD.CRTD.SPWR.SBT 4c20: 4e 01 56 49 44 4f 01 56 4f 4c 44 01 56 4f 4c 55 N.VIDO.VOLD.VOLU 4c30: 01 4d 55 54 45 01 43 4f 4e 54 01 42 52 47 54 01 .MUTE.CONT.BRGT. 4c40: 48 42 54 4e 01 53 34 53 54 01 53 4b 45 59 01 42 HBTN.S4ST.SKEY.B 4c50: 4b 45 59 01 54 4f 55 50 01 46 4e 42 4e 01 4c 49 KEY.TOUP.FNBN.LI 4c60: 44 46 01 44 49 47 4d 01 55 57 41 4b 01 00 08 44 DF.DIGM.UWAK...D 4c70: 4b 53 50 01 44 4b 49 4e 01 44 4b 49 44 01 44 4b KSP.DKIN.DKID.DK 4c80: 4f 4b 01 00 04 44 4b 50 57 01 00 07 42 54 4e 53 OK...DKPW...BTNS 4c90: 08 53 31 4c 44 01 53 33 4c 44 01 56 47 41 51 01 .S1LD.S3LD.VGAQ. 4ca0: 50 43 4d 51 01 50 43 4d 52 01 41 44 50 54 01 53 PCMQ.PCMR.ADPT.S 4cb0: 4c 4c 53 01 53 59 53 37 01 50 57 41 4b 01 4d 57 LLS.SYS7.PWAK.MW 4cc0: 41 4b 01 4c 57 41 4b 01 00 05 00 28 54 43 4e 4c AK.LWAK....(TCNL 4cd0: 08 54 4d 50 49 08 54 4d 53 44 08 46 41 53 4e 04 .TMPI.TMSD.FASN. 4ce0: 46 41 53 55 04 50 43 56 4c 04 00 02 53 57 54 4f FASU.PCVL...SWTO 4cf0: 01 48 57 54 4f 01 4d 4f 44 45 01 46 41 4e 53 02 .HWTO.MODE.FANS. 4d00: 49 4e 49 54 01 46 41 4e 31 01 46 41 4e 32 01 46 INIT.FAN1.FAN2.F 4d10: 41 4e 54 01 53 4b 4e 4d 01 43 54 4d 50 08 4c 49 ANT.SKNM.CTMP.LI 4d20: 44 45 01 50 4d 45 45 01 50 57 42 45 01 52 4e 47 DE.PMEE.PWBE.RNG 4d30: 45 01 42 54 57 45 01 44 43 4b 45 01 00 02 53 4b E.BTWE.DCKE...SK 4d40: 54 58 08 53 4b 54 42 08 53 4b 54 43 08 53 4b 54 TX.SKTB.SKTC.SKT 4d50: 41 08 00 08 48 41 50 4c 02 48 41 50 52 01 00 05 A...HAPL.HAPR... 4d60: 42 54 44 54 01 42 54 50 57 01 42 54 44 53 01 42 BTDT.BTPW.BTDS.B 4d70: 54 50 53 01 42 54 53 57 01 42 54 57 4b 01 42 54 TPS.BTSW.BTWK.BT 4d80: 4c 44 01 00 01 42 52 54 53 08 43 4e 54 53 08 57 LD...BRTS.CNTS.W 4d90: 4c 41 54 01 42 54 41 54 01 57 4c 45 58 01 42 54 LAT.BTAT.WLEX.BT 4da0: 45 58 01 4b 4c 53 57 01 57 4c 4f 4b 01 00 02 50 EX.KLSW.WLOK...P 4db0: 54 49 44 08 43 50 55 54 08 45 50 4b 54 08 47 48 TID.CPUT.EPKT.GH 4dc0: 49 44 08 00 04 42 4d 46 30 03 42 54 59 30 01 42 ID...BMF0.BTY0.B 4dd0: 53 54 30 08 42 52 43 30 10 42 53 4e 30 10 42 50 ST0.BRC0.BSN0.BP 4de0: 56 30 10 42 44 56 30 10 42 44 43 30 10 42 46 43 V0.BDV0.BDC0.BFC 4df0: 30 10 47 41 55 30 08 43 59 43 30 08 42 50 43 30 0.GAU0.CYC0.BPC0 4e00: 10 42 41 43 30 10 42 41 54 30 08 42 54 57 30 10 .BAC0.BAT0.BTW0. 4e10: 42 44 4e 30 08 00 40 04 00 04 42 4d 46 31 03 42 BDN0..@...BMF1.B 4e20: 54 59 31 01 42 53 54 31 08 42 52 43 31 10 42 53 TY1.BST1.BRC1.BS 4e30: 4e 31 10 42 50 56 31 10 42 44 56 31 10 42 44 43 N1.BPV1.BDV1.BDC 4e40: 31 10 42 46 43 31 10 47 41 55 31 08 43 59 43 31 1.BFC1.GAU1.CYC1 4e50: 08 42 50 43 31 10 42 41 43 31 10 42 41 54 31 08 .BPC1.BAC1.BAT1. 4e60: 42 54 57 31 10 14 37 5f 51 31 31 00 70 0a 87 50 BTW1..7_Q11.p..P 4e70: 38 30 48 a0 13 49 47 44 53 5e 5e 5e 2e 47 46 58 80H..IGDS^^^.GFX 4e80: 30 42 52 54 4e 0a 87 a1 15 86 5e 5e 5e 2f 03 50 0BRTN.....^^^/.P 4e90: 45 47 50 56 47 41 5f 4c 43 44 5f 0a 87 14 37 5f EGPVGA_LCD_...7_ 4ea0: 51 31 32 00 70 0a 86 50 38 30 48 a0 13 49 47 44 Q12.p..P80H..IGD 4eb0: 53 5e 5e 5e 2e 47 46 58 30 42 52 54 4e 0a 86 a1 S^^^.GFX0BRTN... 4ec0: 15 86 5e 5e 5e 2f 03 50 45 47 50 56 47 41 5f 4c ..^^^/.PEGPVGA_L 4ed0: 43 44 5f 0a 86 14 40 05 5f 51 31 43 00 70 0d 3d CD_...@._Q1C.p.= 4ee0: 3d 3d 3d 3d 51 55 45 52 59 5f 31 43 3d 3d 3d 3d ====QUERY_1C==== 4ef0: 3d 00 5b 31 a0 31 56 49 44 4f a0 12 49 47 44 53 =.[1.1VIDO..IGDS 4f00: 5e 5e 5e 2e 47 46 58 30 47 48 44 53 00 a1 12 5e ^^^.GFX0GHDS...^ 4f10: 5e 5e 2f 03 50 45 47 50 56 47 41 5f 44 53 53 57 ^^/.PEGPVGA_DSSW 4f20: 70 00 56 49 44 4f 14 21 5f 51 31 44 00 70 0d 3d p.VIDO.!_Q1D.p.= 4f30: 3d 3d 3d 3d 51 55 45 52 59 5f 31 44 3d 3d 3d 3d ====QUERY_1D==== 4f40: 3d 00 5b 31 50 43 4c 4b 14 21 5f 51 31 45 00 70 =.[1PCLK.!_Q1E.p 4f50: 0d 3d 3d 3d 3d 3d 51 55 45 52 59 5f 31 45 3d 3d .=====QUERY_1E== 4f60: 3d 3d 3d 00 5b 31 50 43 4c 4b 14 39 5f 51 32 35 ===.[1PCLK.9_Q25 4f70: 00 70 0d 3d 3d 3d 3d 3d 51 55 45 52 59 5f 32 35 .p.=====QUERY_25 4f80: 3d 3d 3d 3d 3d 00 5b 31 5b 22 0b e8 03 86 5e 5e =====.[1["....^^ 4f90: 42 41 54 31 0a 81 5b 22 0b e8 03 86 5e 5e 42 41 BAT1..["....^^BA 4fa0: 54 31 0a 80 14 2f 5f 51 33 34 00 70 0d 3d 3d 3d T1.../_Q34.p.=== 4fb0: 3d 3d 51 55 45 52 59 5f 33 34 3d 3d 3d 3d 3d 00 ==QUERY_34=====. 4fc0: 5b 31 a0 11 42 4b 45 59 50 48 53 53 0a 71 70 00 [1..BKEYPHSS.qp. 4fd0: 42 4b 45 59 14 32 5f 51 33 37 00 70 0d 3d 3d 3d BKEY.2_Q37.p.=== 4fe0: 3d 3d 51 55 45 52 59 5f 33 37 3d 3d 3d 3d 3d 00 ==QUERY_37=====. 4ff0: 5b 31 86 41 43 41 44 0a 80 5b 22 0b e8 03 86 5e [1.ACAD..["....^ 5000: 5e 42 41 54 31 0a 80 14 32 5f 51 33 38 00 70 0d ^BAT1...2_Q38.p. 5010: 3d 3d 3d 3d 3d 51 55 45 52 59 5f 33 38 3d 3d 3d =====QUERY_38=== 5020: 3d 3d 00 5b 31 86 41 43 41 44 0a 80 5b 22 0b e8 ==.[1.ACAD..[".. 5030: 03 86 5e 5e 42 41 54 31 0a 80 14 29 5f 51 32 44 ..^^BAT1...)_Q2D 5040: 00 70 0d 3d 3d 3d 3d 3d 51 55 45 52 59 5f 32 44 .p.=====QUERY_2D 5050: 3d 3d 3d 3d 3d 00 5b 31 70 00 44 54 53 4d 54 52 =====.[1p.DTSMTR 5060: 41 50 0a 46 14 29 5f 51 32 45 00 70 0d 3d 3d 3d AP.F.)_Q2E.p.=== 5070: 3d 3d 51 55 45 52 59 5f 32 45 3d 3d 3d 3d 3d 00 ==QUERY_2E=====. 5080: 5b 31 70 01 44 54 53 4d 54 52 41 50 0a 46 5b 80 [1p.DTSMTRAP.F[. 5090: 43 43 4c 4b 01 0b 10 10 0a 04 5b 81 20 43 43 4c CCLK......[. CCL 50a0: 4b 03 00 01 44 55 54 59 03 54 48 45 4e 01 00 03 K...DUTY.THEN... 50b0: 46 54 54 5f 01 00 08 54 53 54 53 01 5b 80 45 43 FTT_...TSTS.[.EC 50c0: 52 4d 03 00 0a ff 5b 81 44 04 45 43 52 4d 11 00 RM....[.D.ECRM.. 50d0: 40 4a 45 52 49 42 10 45 52 42 44 08 00 48 0a 53 @JERIB.ERBD..H.S 50e0: 44 54 4d 08 46 53 53 4e 04 46 41 4e 55 04 50 54 DTM.FSSN.FANU.PT 50f0: 56 4c 03 00 04 54 54 48 52 01 00 48 06 50 4a 49 VL...TTHR..H.PJI 5100: 44 08 00 08 00 48 1d 52 46 52 44 10 5b 01 46 41 D....H.RFRD.[.FA 5110: 4d 58 00 14 22 46 41 4e 47 01 5b 23 46 41 4d 58 MX.."FANG.[#FAMX 5120: ff ff 70 68 45 52 49 42 70 45 52 42 44 60 5b 27 ..phERIBpERBD`[' 5130: 46 41 4d 58 a4 60 14 22 46 41 4e 57 02 5b 23 46 FAMX.`."FANW.[#F 5140: 41 4d 58 ff ff 70 68 45 52 49 42 70 69 45 52 42 AMX..phERIBpiERB 5150: 44 5b 27 46 41 4d 58 a4 69 14 09 54 55 56 52 01 D['FAMX.i..TUVR. 5160: a4 0a 03 14 2e 54 48 52 4f 01 a0 09 93 68 00 a4 .....THRO....h.. 5170: 54 48 45 4e a1 1d a0 09 93 68 01 a4 44 55 54 59 THEN.....h..DUTY 5180: a1 11 a0 0a 93 68 0a 02 a4 54 54 48 52 a1 04 a4 .....h...TTHR... 5190: 0a ff 14 2a 43 4c 43 4b 01 a0 10 93 68 00 70 00 ...*CLCK....h.p. 51a0: 54 48 45 4e 70 00 46 54 54 5f a1 0d 70 68 44 55 THENp.FTT_..phDU 51b0: 54 59 70 01 54 48 45 4e a4 54 48 45 4e 14 37 50 TYp.THEN.THEN.7P 51c0: 43 4c 4b 00 70 50 54 56 4c 60 a0 10 93 60 00 70 CLK.pPTVL`...`.p 51d0: 00 54 48 45 4e 70 00 46 54 54 5f a1 19 76 60 70 .THENp.FTT_..v`p 51e0: 80 60 00 61 7b 61 0a 07 61 70 61 44 55 54 59 70 .`.a{a..apaDUTYp 51f0: 01 54 48 45 4e 5b 82 4b 22 42 41 54 31 08 5f 48 .THEN[.K"BAT1._H 5200: 49 44 0c 41 d0 0c 0a 08 5f 55 49 44 01 08 5f 50 ID.A...._UID.._P 5210: 43 4c 12 06 01 5f 53 42 5f 14 39 5f 53 54 41 00 CL..._SB_.9_STA. 5220: a0 29 90 45 43 4f 4b 93 45 43 44 59 00 a0 13 5e .).ECOK.ECDY...^ 5230: 5e 2e 45 43 30 5f 42 41 4c 30 5b 22 0a 14 a4 0a ^.EC0_BAL0[".... 5240: 1f a1 08 5b 22 0a 14 a4 0a 0f a1 08 5b 22 0a 14 ...[".......[".. 5250: a4 0a 1f 14 48 10 5f 42 49 46 00 08 53 54 41 54 ....H._BIF..STAT 5260: 12 3a 0d 01 0b a0 0f 0b a0 0f 01 0b 5c 2b 0b a4 .:..........\+.. 5270: 01 0a 9c 0b 08 01 0b c4 0e 0d 50 41 33 34 36 35 ..........PA3465 5280: 55 20 00 0d 33 36 35 38 51 00 0d 4c 69 2d 49 6f U ..3658Q..Li-Io 5290: 6e 00 0d 43 4f 4d 50 41 4c 20 00 a0 4b 07 90 45 n..COMPAL ..K..E 52a0: 43 4f 4b 93 45 43 44 59 00 70 5e 5e 2e 45 43 30 COK.ECDY.p^^.EC0 52b0: 5f 42 44 4e 30 60 a0 23 93 60 0a 08 70 0a b4 88 _BDN0`.#.`..p... 52c0: 53 54 41 54 0a 06 00 70 0d 50 41 33 34 35 37 55 STAT...p.PA3457U 52d0: 20 00 88 53 54 41 54 0a 09 00 a0 24 93 60 0a 20 ..STAT....$.`. 52e0: 70 0b 02 01 88 53 54 41 54 0a 06 00 70 0d 50 41 p....STAT...p.PA 52f0: 33 34 35 37 55 20 00 88 53 54 41 54 0a 09 00 5b 3457U ..STAT...[ 5300: 22 0a 14 70 5e 5e 2e 45 43 30 5f 42 44 43 30 42 "..p^^.EC0_BDC0B 5310: 46 43 31 5b 22 0a 14 a1 12 70 0d 4c 69 2d 49 6f FC1["....p.Li-Io 5320: 6e 00 88 53 54 41 54 0a 0b 00 a0 2c 42 46 43 31 n..STAT....,BFC1 5330: 78 42 46 43 31 0a 64 60 61 77 61 0a 64 61 70 61 xBFC1.d`awa.dapa 5340: 42 46 43 31 70 61 88 53 54 41 54 01 00 70 61 88 BFC1pa.STAT..pa. 5350: 53 54 41 54 0a 02 00 a4 53 54 41 54 14 45 0c 5f STAT....STAT.E._ 5360: 42 53 54 00 08 50 42 53 54 12 10 04 00 0c ff ff BST..PBST....... 5370: ff ff 0c ff ff ff ff 0b 5c 2b 70 0b 5c 2b 63 a0 ........\+p.\+c. 5380: 38 90 45 43 4f 4b 93 45 43 44 59 00 5b 22 0a 14 8.ECOK.ECDY.[".. 5390: 70 5e 5e 2e 45 43 30 5f 42 53 54 30 42 53 54 31 p^^.EC0_BST0BST1 53a0: 5b 22 0a 14 70 5e 5e 2e 45 43 30 5f 47 41 55 30 ["..p^^.EC0_GAU0 53b0: 42 47 55 31 5b 22 0a 14 a0 15 42 46 43 31 77 42 BGU1["....BFC1wB 53c0: 47 55 31 42 46 43 31 62 78 62 0a 64 64 62 a1 09 GU1BFC1bxb.ddb.. 53d0: 77 42 47 55 31 0a 28 62 70 42 53 54 31 88 50 42 wBGU1.(bpBST1.PB 53e0: 53 54 00 00 70 00 88 50 42 53 54 01 00 70 62 88 ST..p..PBST..pb. 53f0: 50 42 53 54 0a 02 00 70 63 88 50 42 53 54 0a 03 PBST...pc.PBST.. 5400: 00 a0 1b 94 45 43 44 59 00 76 45 43 44 59 a0 0e ....ECDY.vECDY.. 5410: 93 45 43 44 59 00 86 42 41 54 31 0a 80 a4 50 42 .ECDY..BAT1...PB 5420: 53 54 5b 82 2e 50 53 32 4b 08 5f 48 49 44 0c 41 ST[..PS2K._HID.A 5430: d0 03 03 08 5f 43 52 53 11 19 0a 16 47 01 60 00 ...._CRS....G.`. 5440: 60 00 01 01 47 01 64 00 64 00 01 01 23 02 00 01 `...G.d.d...#... 5450: 79 00 5b 82 1e 50 53 32 4d 08 5f 48 49 44 0c 41 y.[..PS2M._HID.A 5460: d0 0f 13 08 5f 43 52 53 11 09 0a 06 23 00 10 01 ...._CRS....#... 5470: 79 00 5b 82 43 6a 50 41 54 41 08 5f 41 44 52 0c y.[.CjPATA._ADR. 5480: 01 00 1f 00 5b 80 50 41 43 53 02 0a 40 0a c0 5b ....[.PACS..@..[ 5490: 81 49 04 50 41 43 53 03 50 52 49 54 10 00 10 50 .I.PACS.PRIT...P 54a0: 53 49 54 04 00 1c 53 59 4e 43 04 00 0c 53 44 54 SIT...SYNC...SDT 54b0: 30 02 00 02 53 44 54 31 02 00 4a 04 49 43 52 30 0...SDT1..J.ICR0 54c0: 04 49 43 52 31 04 49 43 52 32 04 49 43 52 33 04 .ICR1.ICR2.ICR3. 54d0: 49 43 52 34 04 49 43 52 35 04 5b 82 4b 63 50 52 ICR4.ICR5.[.KcPR 54e0: 49 44 08 5f 41 44 52 00 14 40 17 5f 47 54 4d 00 ID._ADR..@._GTM. 54f0: 08 50 42 55 46 11 17 0a 14 00 00 00 00 00 00 00 .PBUF........... 5500: 00 00 00 00 00 00 00 00 00 00 00 00 00 8a 50 42 ..............PB 5510: 55 46 00 50 49 4f 30 8a 50 42 55 46 0a 04 44 4d UF.PIO0.PBUF..DM 5520: 41 30 8a 50 42 55 46 0a 08 50 49 4f 31 8a 50 42 A0.PBUF..PIO1.PB 5530: 55 46 0a 0c 44 4d 41 31 8a 50 42 55 46 0a 10 46 UF..DMA1.PBUF..F 5540: 4c 41 47 70 47 45 54 50 50 52 49 54 50 49 4f 30 LAGpGETPPRITPIO0 5550: 70 47 44 4d 41 7b 53 59 4e 43 01 00 7b 49 43 52 pGDMA{SYNC..{ICR 5560: 33 01 00 7b 49 43 52 30 01 00 53 44 54 30 7b 49 3..{ICR0..SDT0{I 5570: 43 52 31 01 00 44 4d 41 30 a0 14 93 44 4d 41 30 CR1..DMA0...DMA0 5580: 0c ff ff ff ff 70 50 49 4f 30 44 4d 41 30 a0 2e .....pPIO0DMA0.. 5590: 7b 50 52 49 54 0b 00 40 00 a0 14 93 7b 50 52 49 {PRIT..@....{PRI 55a0: 54 0a 90 00 0a 80 70 0b 84 03 50 49 4f 31 a1 0e T.....p...PIO1.. 55b0: 70 47 45 54 54 50 53 49 54 50 49 4f 31 a1 0b 70 pGETTPSITPIO1..p 55c0: 0c ff ff ff ff 50 49 4f 31 70 47 44 4d 41 7b 53 .....PIO1pGDMA{S 55d0: 59 4e 43 0a 02 00 7b 49 43 52 33 0a 02 00 7b 49 YNC...{ICR3...{I 55e0: 43 52 30 0a 02 00 53 44 54 31 7b 49 43 52 31 0a CR0...SDT1{ICR1. 55f0: 02 00 44 4d 41 31 a0 14 93 44 4d 41 31 0c ff ff ..DMA1...DMA1... 5600: ff ff 70 50 49 4f 31 44 4d 41 31 70 47 45 54 46 ..pPIO1DMA1pGETF 5610: 7b 53 59 4e 43 01 00 7b 53 59 4e 43 0a 02 00 50 {SYNC..{SYNC...P 5620: 52 49 54 46 4c 41 47 a0 2c 7b 93 50 49 4f 30 0c RITFLAG.,{.PIO0. 5630: ff ff ff ff 93 44 4d 41 30 0c ff ff ff ff 00 70 .....DMA0......p 5640: 0a 78 50 49 4f 30 70 0a 14 44 4d 41 30 70 0a 03 .xPIO0p..DMA0p.. 5650: 46 4c 41 47 a4 50 42 55 46 14 4c 2a 5f 53 54 4d FLAG.PBUF.L*_STM 5660: 03 8a 68 00 50 49 4f 30 8a 68 0a 04 44 4d 41 30 ..h.PIO0.h..DMA0 5670: 8a 68 0a 08 50 49 4f 31 8a 68 0a 0c 44 4d 41 31 .h..PIO1.h..DMA1 5680: 8a 68 0a 10 46 4c 41 47 a0 41 12 93 87 69 0b 00 .h..FLAG.A...i.. 5690: 02 7b 50 52 49 54 0b f0 c0 50 52 49 54 7b 53 59 .{PRIT...PRIT{SY 56a0: 4e 43 0a 02 53 59 4e 43 70 00 53 44 54 30 7b 49 NC..SYNCp.SDT0{I 56b0: 43 52 30 0a 02 49 43 52 30 7b 49 43 52 31 0a 02 CR0..ICR0{ICR1.. 56c0: 49 43 52 31 7b 49 43 52 33 0a 02 49 43 52 33 7b ICR1{ICR3..ICR3{ 56d0: 49 43 52 35 0a 02 49 43 52 35 8b 69 0a 62 57 34 ICR5..ICR5.i.bW4 56e0: 39 30 8b 69 0a 6a 57 35 33 30 8b 69 0a 7e 57 36 90.i.jW530.i.~W6 56f0: 33 30 8b 69 0a 80 57 36 34 30 8b 69 0a b0 57 38 30.i..W640.i..W8 5700: 38 30 8b 69 0a ba 57 39 33 30 7d 50 52 49 54 0b 80.i..W930}PRIT. 5710: 04 80 50 52 49 54 a0 1e 90 7b 46 4c 41 47 0a 02 ..PRIT...{FLAG.. 5720: 00 7b 57 34 39 30 0b 00 08 00 7d 50 52 49 54 0a .{W490....}PRIT. 5730: 02 50 52 49 54 7d 50 52 49 54 53 45 54 50 50 49 .PRIT}PRITSETPPI 5740: 4f 30 57 35 33 30 57 36 34 30 50 52 49 54 a0 4b O0W530W640PRIT.K 5750: 05 7b 46 4c 41 47 01 00 7d 53 59 4e 43 01 53 59 .{FLAG..}SYNC.SY 5760: 4e 43 70 53 44 4d 41 44 4d 41 30 53 44 54 30 a0 NCpSDMADMA0SDT0. 5770: 12 95 44 4d 41 30 0a 1e 7d 49 43 52 33 01 49 43 ..DMA0..}ICR3.IC 5780: 52 33 a0 12 95 44 4d 41 30 0a 3c 7d 49 43 52 30 R3...DMA0.<}ICR0 5790: 01 49 43 52 30 a0 14 7b 57 39 33 30 0b 00 20 00 .ICR0..{W930.. . 57a0: 7d 49 43 52 31 01 49 43 52 31 a0 4b 15 93 87 6a }ICR1.ICR1.K...j 57b0: 0b 00 02 7b 50 52 49 54 0b 0f bf 50 52 49 54 70 ...{PRIT...PRITp 57c0: 00 50 53 49 54 7b 53 59 4e 43 01 53 59 4e 43 70 .PSIT{SYNC.SYNCp 57d0: 00 53 44 54 31 7b 49 43 52 30 01 49 43 52 30 7b .SDT1{ICR0.ICR0{ 57e0: 49 43 52 31 01 49 43 52 31 7b 49 43 52 33 01 49 ICR1.ICR1{ICR3.I 57f0: 43 52 33 7b 49 43 52 35 01 49 43 52 35 8b 6a 0a CR3{ICR5.ICR5.j. 5800: 62 57 34 39 31 8b 6a 0a 6a 57 35 33 31 8b 6a 0a bW491.j.jW531.j. 5810: 7e 57 36 33 31 8b 6a 0a 80 57 36 34 31 8b 6a 0a ~W631.j..W641.j. 5820: b0 57 38 38 31 8b 6a 0a ba 57 39 33 31 7d 50 52 .W881.j..W931}PR 5830: 49 54 0b 40 80 50 52 49 54 a0 1e 90 7b 46 4c 41 IT.@.PRIT...{FLA 5840: 47 0a 08 00 7b 57 34 39 31 0b 00 08 00 7d 50 52 G...{W491....}PR 5850: 49 54 0a 20 50 52 49 54 a0 4c 04 7b 46 4c 41 47 IT. PRIT.L.{FLAG 5860: 0a 10 00 7d 50 52 49 54 0b 00 40 50 52 49 54 a0 ...}PRIT..@PRIT. 5870: 13 94 50 49 4f 31 0a f0 7d 50 52 49 54 0a 80 50 ..PIO1..}PRIT..P 5880: 52 49 54 a1 21 7d 50 52 49 54 0a 10 50 52 49 54 RIT.!}PRIT..PRIT 5890: 70 53 45 54 54 50 49 4f 31 57 35 33 31 57 36 34 pSETTPIO1W531W64 58a0: 31 50 53 49 54 a0 40 06 7b 46 4c 41 47 0a 04 00 1PSIT.@.{FLAG... 58b0: 7d 53 59 4e 43 0a 02 53 59 4e 43 70 53 44 4d 41 }SYNC..SYNCpSDMA 58c0: 44 4d 41 31 53 44 54 31 a0 13 95 44 4d 41 31 0a DMA1SDT1...DMA1. 58d0: 1e 7d 49 43 52 33 0a 02 49 43 52 33 a0 13 95 44 .}ICR3..ICR3...D 58e0: 4d 41 31 0a 3c 7d 49 43 52 30 0a 02 49 43 52 30 MA1.<}ICR0..ICR0 58f0: a0 15 7b 57 39 33 31 0b 00 20 00 7d 49 43 52 31 ..{W931.. .}ICR1 5900: 0a 02 49 43 52 31 5b 82 47 10 50 5f 44 30 08 5f ..ICR1[.G.P_D0._ 5910: 41 44 52 00 14 4a 0f 5f 47 54 46 00 08 50 49 42 ADR..J._GTF..PIB 5920: 30 11 11 0a 0e 03 00 00 00 00 a0 ef 03 00 00 00 0............... 5930: 00 a0 ef 8c 50 49 42 30 01 50 4d 44 30 8c 50 49 ....PIB0.PMD0.PI 5940: 42 30 0a 08 44 4d 44 30 a0 40 06 7b 50 52 49 54 B0..DMD0.@.{PRIT 5950: 0a 02 00 a0 13 93 7b 50 52 49 54 0a 09 00 0a 08 ......{PRIT..... 5960: 70 0a 08 50 4d 44 30 a1 41 04 70 0a 0a 50 4d 44 p..PMD0.A.p..PMD 5970: 30 7a 7b 50 52 49 54 0b 00 03 00 0a 08 60 7a 7b 0z{PRIT......`z{ 5980: 50 52 49 54 0b 00 30 00 0a 0c 61 72 60 61 62 a0 PRIT..0...ar`ab. 5990: 0c 93 0a 03 62 70 0a 0b 50 4d 44 30 a0 0c 93 0a ....bp..PMD0.... 59a0: 05 62 70 0a 0c 50 4d 44 30 a1 07 70 01 50 4d 44 .bp..PMD0..p.PMD 59b0: 30 a0 43 04 7b 53 59 4e 43 01 00 70 7d 53 44 54 0.C.{SYNC..p}SDT 59c0: 30 0a 40 00 44 4d 44 30 a0 2c 7b 49 43 52 31 01 0.@.DMD0.,{ICR1. 59d0: 00 a0 13 7b 49 43 52 30 01 00 72 44 4d 44 30 0a ...{ICR0..rDMD0. 59e0: 02 44 4d 44 30 a0 0f 7b 49 43 52 33 01 00 70 0a .DMD0..{ICR3..p. 59f0: 45 44 4d 44 30 a1 14 7d 74 7b 50 4d 44 30 0a 07 EDMD0..}t{PMD0.. 5a00: 00 0a 02 00 0a 20 44 4d 44 30 a4 50 49 42 30 5b ..... DMD0.PIB0[ 5a10: 82 46 10 50 5f 44 31 08 5f 41 44 52 01 14 49 0f .F.P_D1._ADR..I. 5a20: 5f 47 54 46 00 08 50 49 42 31 11 11 0a 0e 03 00 _GTF..PIB1...... 5a30: 00 00 00 b0 ef 03 00 00 00 00 b0 ef 8c 50 49 42 .............PIB 5a40: 31 01 50 4d 44 31 8c 50 49 42 31 0a 08 44 4d 44 1.PMD1.PIB1..DMD 5a50: 31 a0 4b 05 7b 50 52 49 54 0a 20 00 a0 13 93 7b 1.K.{PRIT. ....{ 5a60: 50 52 49 54 0a 90 00 0a 80 70 0a 08 50 4d 44 31 PRIT.....p..PMD1 5a70: a1 3c 72 7b 50 53 49 54 0a 03 00 7a 7b 50 53 49 .. 0050: 80 49 ee 6a 65 26 72 1e cd bf 5f 2f 96 d6 c0 0a .I.je&r..._/.... 0060: 92 f5 06 b5 00 b2 3b 29 02 e2 4c 8d c2 f2 bc 41 ......;)..L....A 0070: 77 9c 70 f0 f3 1b 09 d2 63 5a dc a8 83 f8 5e c9 w.p.....cZ....^. 0080: 15 95 f9 fa fd dc 05 b7 4d 67 7f 2d b3 84 33 20 ........Mg.-..3 0090: e1 d1 79 2a a7 6a 77 d1 b6 20 2a 76 42 c5 d5 e9 ..y*.jw.. *vB... 00a0: b6 43 40 55 44 c3 c9 37 99 5f 41 97 70 f3 d1 f6 .C@UD..7._A.p... 00b0: 07 ec 7b 1a 29 a1 c1 f1 91 fd 48 86 6e 3e ce cb ..{.).....H.n>.. 00c0: 01 00 00 00 b6 00 00 00 00 00 02 00 4c 45 4e 4f ............LENO 00d0: 56 4f 54 50 2d 36 38 20 20 20 57 49 4e 44 4f 57 VOTP-68 WINDOW 00e0: 53 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 S .............. 00f0: 00 00 00 00 00 00 8a 6e 2e c9 36 e6 7f 10 8a ea .......n..6..... 0100: 14 ad d2 93 b7 6d 9b 73 ad 83 36 b8 6c a7 a7 ee .....m.s..6.l... 0110: 37 47 16 fe f3 fc cd c7 89 84 06 16 91 0b 1e 81 7G.............. 0120: 11 42 b1 35 52 57 f6 6b bb 5f a5 81 e2 ff 89 8a .B.5RW.k._...... 0130: 95 c3 4d fc e9 56 4f 4c 34 cc 99 5e 62 e1 90 8a ..M..VOL4..^b... 0140: 54 be 4a 00 5c 9b a0 86 41 46 66 9d e2 f2 e7 36 T.J.\...AFf....6 0150: 9c 33 91 27 e7 8d 5c a1 d8 f9 a4 61 8a 1c 04 07 .3.'..\....a.... 0160: e3 2a 1e 14 f1 bd 7f 4c 09 ff 19 11 a9 d4 74 ca .*.....L......t. 0170: 11 9e dc 54 39 bf ...T9. APIC @ 0xbf6dff70 0000: 41 50 49 43 68 00 00 00 01 13 50 54 4c 54 44 20 APICh.....PTLTD 0010: 09 20 41 50 49 43 20 20 00 00 04 06 20 4c 54 50 . APIC .... LTP 0020: 00 00 00 00 00 00 e0 fe 01 00 00 00 00 08 00 00 ................ 0030: 01 00 00 00 00 08 01 01 01 00 00 00 01 0c 02 00 ................ 0040: 00 00 c0 fe 00 00 00 00 04 06 00 05 00 01 04 06 ................ 0050: 01 05 00 01 02 0a 00 00 02 00 00 00 05 00 02 0a ................ 0060: 00 09 09 00 00 00 0d 00 ........ BOOT @ 0xbf6dffd8 0000: 42 4f 4f 54 28 00 00 00 01 a5 50 54 4c 54 44 20 BOOT(.....PTLTD 0010: 24 53 42 46 54 42 4c 24 00 00 04 06 20 4c 54 50 $SBFTBL$.... LTP 0020: 01 00 00 00 36 00 00 00 ....6... SSDT @ 0xbf6d98bd 0000: 53 53 44 54 ad 02 00 00 01 59 53 61 74 61 52 65 SSDT.....YSataRe 0010: 53 61 74 61 41 68 63 69 00 10 00 00 49 4e 54 4c SataAhci....INTL 0020: 24 06 05 20 10 48 28 5c 2f 03 5f 53 42 5f 50 43 $.. .H(\/._SB_PC 0030: 49 30 53 41 54 41 5b 82 4f 0c 50 52 54 30 08 5f I0SATA[.O.PRT0._ 0040: 41 44 52 0b ff ff 14 44 0b 5f 53 44 44 01 08 47 ADR....D._SDD..G 0050: 42 55 30 11 0a 0a 07 00 00 00 00 00 a0 00 8c 47 BU0............G 0060: 42 55 30 0a 00 47 42 30 30 8c 47 42 55 30 0a 01 BU0..GB00.GBU0.. 0070: 47 42 30 31 8c 47 42 55 30 0a 02 47 42 30 32 8c GB01.GBU0..GB02. 0080: 47 42 55 30 0a 03 47 42 30 33 8c 47 42 55 30 0a GBU0..GB03.GBU0. 0090: 04 47 42 30 34 8c 47 42 55 30 0a 05 47 42 30 35 .GB04.GBU0..GB05 00a0: 8c 47 42 55 30 0a 06 47 42 30 36 a0 46 04 93 87 .GBU0..GB06.F... 00b0: 68 0b 00 02 8b 68 0a 9c 57 37 38 30 a0 1e 7b 57 h....h..W780..{W 00c0: 37 38 30 0a 08 00 70 0a 10 47 42 30 30 70 0a 03 780...p..GB00p.. 00d0: 47 42 30 31 70 0a ef 47 42 30 36 a1 16 70 0a 90 GB01p..GB06..p.. 00e0: 47 42 30 30 70 0a 03 47 42 30 31 70 0a ef 47 42 GB00p..GB01p..GB 00f0: 30 36 70 47 42 55 30 47 54 46 30 14 0b 5f 47 54 06pGBU0GTF0.._GT 0100: 46 00 a4 47 54 46 30 5b 82 41 0d 50 52 54 31 08 F..GTF0[.A.PRT1. 0110: 5f 41 44 52 0c ff ff 01 00 14 44 0b 5f 53 44 44 _ADR......D._SDD 0120: 01 08 47 42 55 31 11 0a 0a 07 00 00 00 00 00 a0 ..GBU1.......... 0130: 00 8c 47 42 55 31 0a 00 47 42 31 30 8c 47 42 55 ..GBU1..GB10.GBU 0140: 31 0a 01 47 42 31 31 8c 47 42 55 31 0a 02 47 42 1..GB11.GBU1..GB 0150: 31 32 8c 47 42 55 31 0a 03 47 42 31 33 8c 47 42 12.GBU1..GB13.GB 0160: 55 31 0a 04 47 42 31 34 8c 47 42 55 31 0a 05 47 U1..GB14.GBU1..G 0170: 42 31 35 8c 47 42 55 31 0a 06 47 42 31 36 a0 46 B15.GBU1..GB16.F 0180: 04 93 87 68 0b 00 02 8b 68 0a 9c 57 37 38 31 a0 ...h....h..W781. 0190: 1e 7b 57 37 38 31 0a 08 00 70 0a 10 47 42 31 30 .{W781...p..GB10 01a0: 70 0a 03 47 42 31 31 70 0a ef 47 42 31 36 a1 16 p..GB11p..GB16.. 01b0: 70 0a 90 47 42 31 30 70 0a 03 47 42 31 31 70 0a p..GB10p..GB11p. 01c0: ef 47 42 31 36 70 47 42 55 31 47 54 46 31 14 0b .GB16pGBU1GTF1.. 01d0: 5f 47 54 46 00 a4 47 54 46 31 5b 82 41 0d 50 52 _GTF..GTF1[.A.PR 01e0: 54 32 08 5f 41 44 52 0c ff ff 02 00 14 44 0b 5f T2._ADR......D._ 01f0: 53 44 44 01 08 47 42 55 32 11 0a 0a 07 00 00 00 SDD..GBU2....... 0200: 00 00 a0 00 8c 47 42 55 32 0a 00 47 42 32 30 8c .....GBU2..GB20. 0210: 47 42 55 32 0a 01 47 42 32 31 8c 47 42 55 32 0a GBU2..GB21.GBU2. 0220: 02 47 42 32 32 8c 47 42 55 32 0a 03 47 42 32 33 .GB22.GBU2..GB23 0230: 8c 47 42 55 32 0a 04 47 42 32 34 8c 47 42 55 32 .GBU2..GB24.GBU2 0240: 0a 05 47 42 32 35 8c 47 42 55 32 0a 06 47 42 32 ..GB25.GBU2..GB2 0250: 36 a0 46 04 93 87 68 0b 00 02 8b 68 0a 9c 57 37 6.F...h....h..W7 0260: 38 32 a0 1e 7b 57 37 38 32 0a 08 00 70 0a 10 47 82..{W782...p..G 0270: 42 32 30 70 0a 03 47 42 32 31 70 0a ef 47 42 32 B20p..GB21p..GB2 0280: 36 a1 16 70 0a 90 47 42 32 30 70 0a 03 47 42 32 6..p..GB20p..GB2 0290: 31 70 0a ef 47 42 32 36 70 47 42 55 32 47 54 46 1p..GB26pGBU2GTF 02a0: 32 14 0b 5f 47 54 46 00 a4 47 54 46 32 2.._GTF..GTF2 SSDT @ 0xbf6d981a 0000: 53 53 44 54 a3 00 00 00 01 ed 42 72 74 52 65 66 SSDT......BrtRef 0010: 44 44 30 31 42 52 54 00 00 10 00 00 49 4e 54 4c DD01BRT.....INTL 0020: 24 06 05 20 10 4e 07 5c 2f 04 5f 53 42 5f 50 43 $.. .N.\/._SB_PC 0030: 49 30 47 46 58 30 44 44 30 33 14 1e 5f 42 43 4c I0GFX0DD03.._BCL 0040: 00 a4 12 16 0a 0a 46 0a 28 0a 00 0a 0a 0a 14 0a ......F.(....... 0050: 1e 0a 28 0a 32 0a 3c 0a 46 14 25 5f 42 43 4d 01 ..(.2.<.F.%_BCM. 0060: 78 68 0a 0a 60 61 70 61 5c 2f 05 5f 53 42 5f 50 xh..`apa\/._SB_P 0070: 43 49 30 4c 50 43 42 45 43 30 5f 42 52 54 53 14 CI0LPCBEC0_BRTS. 0080: 23 5f 42 51 43 00 77 5c 2f 05 5f 53 42 5f 50 43 #_BQC.w\/._SB_PC 0090: 49 30 4c 50 43 42 45 43 30 5f 42 52 54 53 0a 0a I0LPCBEC0_BRTS.. 00a0: 60 a4 60 `.` SSDT @ 0xbf6d8e10 0000: 53 53 44 54 5f 02 00 00 01 c8 50 6d 52 65 66 00 SSDT_.....PmRef. 0010: 43 70 75 30 54 73 74 00 00 30 00 00 49 4e 54 4c Cpu0Tst..0..INTL 0020: 24 06 05 20 10 4a 23 5c 2e 5f 50 52 5f 43 50 55 $.. .J#\._PR_CPU 0030: 30 08 5f 54 50 43 0a 00 14 4d 06 5f 50 54 43 00 0._TPC...M._PTC. 0040: a0 37 7b 50 44 43 30 0a 04 00 a4 12 2c 02 11 14 .7{PDC0.....,... 0050: 0a 11 82 0c 00 7f 00 00 00 00 00 00 00 00 00 00 ................ 0060: 00 79 00 11 14 0a 11 82 0c 00 7f 00 00 00 00 00 .y.............. 0070: 00 00 00 00 00 00 79 00 a4 12 2c 02 11 14 0a 11 ......y...,..... 0080: 82 0c 00 01 04 01 00 10 10 00 00 00 00 00 00 79 ...............y 0090: 00 11 14 0a 11 82 0c 00 01 04 01 00 10 10 00 00 ................ 00a0: 00 00 00 00 79 00 08 54 53 53 49 12 41 07 08 12 ....y..TSSI.A... 00b0: 0d 05 0a 64 0b e8 03 0a 00 0a 00 0a 00 12 0d 05 ...d............ 00c0: 0a 58 0b 6b 03 0a 00 0a 0f 0a 00 12 0d 05 0a 4b .X.k...........K 00d0: 0b ee 02 0a 00 0a 0e 0a 00 12 0d 05 0a 3f 0b 71 .............?.q 00e0: 02 0a 00 0a 0d 0a 00 12 0d 05 0a 32 0b f4 01 0a ...........2.... 00f0: 00 0a 0c 0a 00 12 0d 05 0a 26 0b 77 01 0a 00 0a .........&.w.... 0100: 0b 0a 00 12 0c 05 0a 19 0a fa 0a 00 0a 0a 0a 00 ................ 0110: 12 0c 05 0a 0d 0a 7d 0a 00 0a 09 0a 00 08 54 53 ......}.......TS 0120: 53 4d 12 41 07 08 12 0d 05 0a 64 0b e8 03 0a 00 SM.A......d..... 0130: 0a 00 0a 00 12 0d 05 0a 58 0b 6b 03 0a 00 0a 1e ........X.k..... 0140: 0a 00 12 0d 05 0a 4b 0b ee 02 0a 00 0a 1c 0a 00 ......K......... 0150: 12 0d 05 0a 3f 0b 71 02 0a 00 0a 1a 0a 00 12 0d ....?.q......... 0160: 05 0a 32 0b f4 01 0a 00 0a 18 0a 00 12 0d 05 0a ..2............. 0170: 26 0b 77 01 0a 00 0a 16 0a 00 12 0c 05 0a 19 0a &.w............. 0180: fa 0a 00 0a 14 0a 00 12 0c 05 0a 0d 0a 7d 0a 00 .............}.. 0190: 0a 12 0a 00 08 54 53 53 46 0a 00 14 43 08 5f 54 .....TSSF...C._T 01a0: 53 53 00 a0 47 06 90 92 54 53 53 46 5b 12 5f 50 SS..G...TSSF[._P 01b0: 53 53 00 70 5f 50 53 53 60 70 87 60 61 76 61 70 SS.p_PSS`p.`avap 01c0: 83 88 83 88 60 61 00 0a 01 00 62 70 0a 00 63 a2 ....`a....bp..c. 01d0: 35 95 63 87 54 53 53 49 70 78 77 62 74 0a 08 63 5.c.TSSIpxwbt..c 01e0: 00 00 0a 08 00 00 64 70 64 88 83 88 54 53 53 49 ......dpd...TSSI 01f0: 63 00 0a 01 00 70 64 88 83 88 54 53 53 4d 63 00 c....pd...TSSMc. 0200: 0a 01 00 75 63 70 ff 54 53 53 46 a0 0e 7b 50 44 ...ucp.TSSF..{PD 0210: 43 30 0a 04 00 a4 54 53 53 4d a4 54 53 53 49 14 C0....TSSM.TSSI. 0220: 3f 5f 54 53 44 00 a0 27 90 7b 43 46 47 44 0c 00 ?_TSD..'.{CFGD.. 0230: 00 00 01 00 92 7b 50 44 43 30 0a 04 00 a4 12 0f .....{PDC0...... 0240: 01 12 0c 05 0a 05 0a 00 0a 00 0a fd 0a 02 a4 12 ................ 0250: 0f 01 12 0c 05 0a 05 0a 00 0a 00 0a fc 0a 01 ............... SSDT @ 0xbf6d8d6a 0000: 53 53 44 54 a6 00 00 00 01 6d 50 6d 52 65 66 00 SSDT.....mPmRef. 0010: 43 70 75 31 54 73 74 00 00 30 00 00 49 4e 54 4c Cpu1Tst..0..INTL 0020: 24 06 05 20 10 41 08 5c 2e 5f 50 52 5f 43 50 55 $.. .A.\._PR_CPU 0030: 31 08 5f 54 50 43 0a 00 14 16 5f 50 54 43 00 a4 1._TPC...._PTC.. 0040: 5c 2f 03 5f 50 52 5f 43 50 55 30 5f 50 54 43 14 \/._PR_CPU0_PTC. 0050: 16 5f 54 53 53 00 a4 5c 2f 03 5f 50 52 5f 43 50 ._TSS..\/._PR_CP 0060: 55 30 5f 54 53 53 14 3f 5f 54 53 44 00 a0 27 90 U0_TSS.?_TSD..'. 0070: 7b 43 46 47 44 0c 00 00 00 01 00 92 7b 50 44 43 {CFGD.......{PDC 0080: 31 0a 04 00 a4 12 0f 01 12 0c 05 0a 05 0a 00 0a 1............... 0090: 00 0a fd 0a 02 a4 12 0f 01 12 0c 05 0a 05 0a 00 ................ 00a0: 0a 01 0a fc 0a 01 ...... SSDT @ 0xbf6d8884 0000: 53 53 44 54 e6 04 00 00 01 df 50 6d 52 65 66 00 SSDT......PmRef. 0010: 43 70 75 50 6d 00 00 00 00 30 00 00 49 4e 54 4c CpuPm....0..INTL 0020: 24 06 05 20 10 45 08 5c 00 08 53 53 44 54 12 43 $.. .E.\..SSDT.C 0030: 05 0c 0d 43 50 55 30 49 53 54 20 00 0c 9e 95 6d ...CPU0IST ....m 0040: bf 0c b4 01 00 00 0d 43 50 55 31 49 53 54 20 00 .......CPU1IST . 0050: 0c 52 97 6d bf 0c c8 00 00 00 0d 43 50 55 30 43 .R.m.......CPU0C 0060: 53 54 20 00 0c 6f 90 6d bf 0c aa 04 00 00 0d 43 ST ..o.m.......C 0070: 50 55 31 43 53 54 20 00 0c 19 95 6d bf 0c 85 00 PU1CST ....m.... 0080: 00 00 08 43 46 47 44 0c f1 69 3f 11 08 5c 50 44 ...CFGD..i?..\PD 0090: 43 30 0c 00 00 00 80 08 5c 50 44 43 31 0c 00 00 C0......\PDC1... 00a0: 00 80 08 5c 53 44 54 4c 0a 00 10 4d 21 5c 2e 5f ...\SDTL...M!\._ 00b0: 50 52 5f 43 50 55 30 08 48 49 30 5f 0a 00 08 48 PR_CPU0.HI0_...H 00c0: 43 30 5f 0a 00 14 48 06 5f 50 44 43 01 8a 68 0a C0_...H._PDC..h. 00d0: 00 52 45 56 53 8a 68 0a 04 53 49 5a 45 70 87 68 .REVS.h..SIZEp.h 00e0: 60 70 74 60 0a 08 00 61 5b 13 68 0a 40 77 61 0a `pt`...a[.h.@wa. 00f0: 08 00 54 45 4d 50 08 53 54 53 30 11 07 0a 04 00 ..TEMP.STS0..... 0100: 00 00 00 73 53 54 53 30 54 45 4d 50 62 5f 4f 53 ...sSTS0TEMPb_OS 0110: 43 11 13 0a 10 16 a6 77 40 0c 29 be 47 9e bd d8 C......w@.).G... 0120: 70 58 71 39 53 52 45 56 53 53 49 5a 45 62 14 49 pXq9SREVSSIZEb.I 0130: 19 5f 4f 53 43 04 8a 6b 0a 00 53 54 53 30 8a 6b ._OSC..k..STS0.k 0140: 0a 04 43 41 50 30 8a 68 0a 00 49 49 44 30 8a 68 ..CAP0.h..IID0.h 0150: 0a 04 49 49 44 31 8a 68 0a 08 49 49 44 32 8a 68 ..IID1.h..IID2.h 0160: 0a 0c 49 49 44 33 08 55 49 44 30 11 13 0a 10 16 ..IID3.UID0..... 0170: a6 77 40 0c 29 be 47 9e bd d8 70 58 71 39 53 8a .w@.).G...pXq9S. 0180: 55 49 44 30 0a 00 45 49 44 30 8a 55 49 44 30 0a UID0..EID0.UID0. 0190: 04 45 49 44 31 8a 55 49 44 30 0a 08 45 49 44 32 .EID1.UID0..EID2 01a0: 8a 55 49 44 30 0a 0c 45 49 44 33 a0 32 92 90 90 .UID0..EID3.2... 01b0: 93 49 49 44 30 45 49 44 30 93 49 49 44 31 45 49 .IID0EID0.IID1EI 01c0: 44 31 90 93 49 49 44 32 45 49 44 32 93 49 49 44 D1..IID2EID2.IID 01d0: 33 45 49 44 33 70 0a 06 53 54 53 30 a4 6b a0 0f 3EID3p..STS0.k.. 01e0: 92 93 69 0a 01 70 0a 0a 53 54 53 30 a4 6b 7d 7b ..i..p..STS0.k}{ 01f0: 50 44 43 30 0c ff ff ff 7f 00 43 41 50 30 50 44 PDC0......CAP0PD 0200: 43 30 70 7b 50 44 43 30 0a ff 00 50 43 50 30 a0 C0p{PDC0...PCP0. 0210: 4c 05 7b 43 46 47 44 0a 01 00 a0 41 05 90 90 7b L.{CFGD....A...{ 0220: 43 46 47 44 0c 00 00 00 01 00 93 7b 50 44 43 30 CFGD.......{PDC0 0230: 0a 09 00 0a 09 92 7b 53 44 54 4c 0a 01 00 7d 53 ......{SDTL...}S 0240: 44 54 4c 0a 01 53 44 54 4c 5b 80 49 53 54 30 00 DTL..SDTL[.IST0. 0250: 83 88 53 53 44 54 0a 01 00 83 88 53 53 44 54 0a ..SSDT.....SSDT. 0260: 02 00 5b 20 49 53 54 30 48 49 30 5f a0 49 05 7b ..[ IST0HI0_.I.{ 0270: 43 46 47 44 0a f0 00 a0 4e 04 90 90 7b 43 46 47 CFGD....N...{CFG 0280: 44 0c 00 00 00 01 00 7b 50 44 43 30 0a 18 00 92 D......{PDC0.... 0290: 7b 53 44 54 4c 0a 02 00 7d 53 44 54 4c 0a 02 53 {SDTL...}SDTL..S 02a0: 44 54 4c 5b 80 43 53 54 30 00 83 88 53 53 44 54 DTL[.CST0...SSDT 02b0: 0a 07 00 83 88 53 53 44 54 0a 08 00 5b 20 43 53 .....SSDT...[ CS 02c0: 54 30 48 43 30 5f a4 6b 10 4d 21 5c 2e 5f 50 52 T0HC0_.k.M!\._PR 02d0: 5f 43 50 55 31 08 48 49 31 5f 0a 00 08 48 43 31 _CPU1.HI1_...HC1 02e0: 5f 0a 00 14 48 06 5f 50 44 43 01 8a 68 0a 00 52 _...H._PDC..h..R 02f0: 45 56 53 8a 68 0a 04 53 49 5a 45 70 87 68 60 70 EVS.h..SIZEp.h`p 0300: 74 60 0a 08 00 61 5b 13 68 0a 40 77 61 0a 08 00 t`...a[.h.@wa... 0310: 54 45 4d 50 08 53 54 53 31 11 07 0a 04 00 00 00 TEMP.STS1....... 0320: 00 73 53 54 53 31 54 45 4d 50 62 5f 4f 53 43 11 .sSTS1TEMPb_OSC. 0330: 13 0a 10 16 a6 77 40 0c 29 be 47 9e bd d8 70 58 .....w@.).G...pX 0340: 71 39 53 52 45 56 53 53 49 5a 45 62 14 49 19 5f q9SREVSSIZEb.I._ 0350: 4f 53 43 04 8a 6b 0a 00 53 54 53 31 8a 6b 0a 04 OSC..k..STS1.k.. 0360: 43 41 50 31 8a 68 0a 00 49 49 44 30 8a 68 0a 04 CAP1.h..IID0.h.. 0370: 49 49 44 31 8a 68 0a 08 49 49 44 32 8a 68 0a 0c IID1.h..IID2.h.. 0380: 49 49 44 33 08 55 49 44 31 11 13 0a 10 16 a6 77 IID3.UID1......w 0390: 40 0c 29 be 47 9e bd d8 70 58 71 39 53 8a 55 49 @.).G...pXq9S.UI 03a0: 44 31 0a 00 45 49 44 30 8a 55 49 44 31 0a 04 45 D1..EID0.UID1..E 03b0: 49 44 31 8a 55 49 44 31 0a 08 45 49 44 32 8a 55 ID1.UID1..EID2.U 03c0: 49 44 31 0a 0c 45 49 44 33 a0 32 92 90 90 93 49 ID1..EID3.2....I 03d0: 49 44 30 45 49 44 30 93 49 49 44 31 45 49 44 31 ID0EID0.IID1EID1 03e0: 90 93 49 49 44 32 45 49 44 32 93 49 49 44 33 45 ..IID2EID2.IID3E 03f0: 49 44 33 70 0a 06 53 54 53 31 a4 6b a0 0f 92 93 ID3p..STS1.k.... 0400: 69 0a 01 70 0a 0a 53 54 53 31 a4 6b 7d 7b 50 44 i..p..STS1.k}{PD 0410: 43 31 0c ff ff ff 7f 00 43 41 50 31 50 44 43 31 C1......CAP1PDC1 0420: 70 7b 50 44 43 31 0a ff 00 50 43 50 31 a0 4c 05 p{PDC1...PCP1.L. 0430: 7b 43 46 47 44 0a 01 00 a0 41 05 90 90 7b 43 46 {CFGD....A...{CF 0440: 47 44 0c 00 00 00 01 00 93 7b 50 44 43 31 0a 09 GD.......{PDC1.. 0450: 00 0a 09 92 7b 53 44 54 4c 0a 10 00 7d 53 44 54 ....{SDTL...}SDT 0460: 4c 0a 10 53 44 54 4c 5b 80 49 53 54 31 00 83 88 L..SDTL[.IST1... 0470: 53 53 44 54 0a 04 00 83 88 53 53 44 54 0a 05 00 SSDT.....SSDT... 0480: 5b 20 49 53 54 31 48 49 31 5f a0 49 05 7b 43 46 [ IST1HI1_.I.{CF 0490: 47 44 0a f0 00 a0 4e 04 90 90 7b 43 46 47 44 0c GD....N...{CFGD. 04a0: 00 00 00 01 00 7b 50 44 43 31 0a 18 00 92 7b 53 .....{PDC1....{S 04b0: 44 54 4c 0a 20 00 7d 53 44 54 4c 0a 20 53 44 54 DTL. .}SDTL. SDT 04c0: 4c 5b 80 43 53 54 31 00 83 88 53 53 44 54 0a 0a L[.CST1...SSDT.. 04d0: 00 83 88 53 53 44 54 0a 0b 00 5b 20 43 53 54 31 ...SSDT...[ CST1 04e0: 48 43 31 5f a4 6b HC1_.k XSDT @ 0xbf6d87f0 0000: 58 53 44 54 94 00 00 00 01 c2 4c 45 4e 4f 56 4f XSDT......LENOVO 0010: 54 50 2d 36 38 20 20 20 00 00 04 06 20 4c 54 50 TP-68 .... LTP 0020: 00 00 00 00 d2 fb 6d bf 00 00 00 00 c6 fc 6d bf ......m.......m. 0030: 00 00 00 00 2e fd 6d bf 00 00 00 00 66 fd 6d bf ......m.....f.m. 0040: 00 00 00 00 a2 fd 6d bf 00 00 00 00 d4 fd 6d bf ......m.......m. 0050: 00 00 00 00 fa fd 6d bf 00 00 00 00 70 ff 6d bf ......m.....p.m. 0060: 00 00 00 00 d8 ff 6d bf 00 00 00 00 bd 98 6d bf ......m.......m. 0070: 00 00 00 00 1a 98 6d bf 00 00 00 00 10 8e 6d bf ......m.......m. 0080: 00 00 00 00 6a 8d 6d bf 00 00 00 00 84 88 6d bf ....j.m.......m. 0090: 00 00 00 00 .... RSD PTR @ 0xf7240 0000: 52 53 44 20 50 54 52 20 c5 4c 45 4e 4f 56 4f 02 RSD PTR .LENOVO. 0010: 94 87 6d bf 24 00 00 00 f0 87 6d bf 00 00 00 00 ..m.$.....m..... 0020: 39 00 00 00 9... fwts-test/checksum-0001/acpidump-0003.log000066400000000000000000004054211231470457100200750ustar00rootroot00000000000000DSDT @ 0xbf6d9b6a 0000: 44 53 44 54 f4 5f 00 00 02 10 54 4f 53 43 50 4c DSDT._....TOSCPL 0010: 43 52 45 53 54 4c 4e 45 00 00 04 06 49 4e 54 4c CRESTLNE....INTL 0020: 08 06 06 20 08 5a 30 30 30 01 08 5a 30 30 31 0a ... .Z000..Z001. 0030: 02 08 5a 30 30 32 0a 04 08 5a 30 30 33 0a 08 08 ..Z002...Z003... 0040: 5a 30 30 34 00 08 5a 30 30 35 0a 0f 08 5a 30 30 Z004..Z005...Z00 0050: 36 0a 0d 08 5a 30 30 37 0a 0b 08 5a 30 30 38 0a 6...Z007...Z008. 0060: 09 08 45 43 44 59 0a 07 5b 01 4d 55 54 58 00 5b ..ECDY..[.MUTX.[ 0070: 80 50 52 54 30 01 0a 80 0a 04 5b 81 0b 50 52 54 .PRT0.....[..PRT 0080: 30 13 50 38 30 48 20 14 4e 07 50 38 58 48 0a a0 0.P80H .N.P8XH.. 0090: 17 93 68 00 70 7d 7b 50 38 30 44 0c 00 ff ff ff ..h.p}{P80D..... 00a0: 00 69 00 50 38 30 44 a0 1b 93 68 01 70 7d 7b 50 .i.P80D...h.p}{P 00b0: 38 30 44 0c ff 00 ff ff 00 79 69 0a 08 00 00 50 80D......yi....P 00c0: 38 30 44 a0 1c 93 68 0a 02 70 7d 7b 50 38 30 44 80D...h..p}{P80D 00d0: 0c ff ff 00 ff 00 79 69 0a 10 00 00 50 38 30 44 ......yi....P80D 00e0: a0 1c 93 68 0a 03 70 7d 7b 50 38 30 44 0c ff ff ...h..p}{P80D... 00f0: ff 00 00 79 69 0a 18 00 00 50 38 30 44 70 50 38 ...yi....P80DpP8 0100: 30 44 50 38 30 48 14 0c 5f 50 49 43 01 70 68 47 0DP80H.._PIC.phG 0110: 50 49 43 14 46 06 5f 50 54 53 01 70 00 50 38 30 PIC.F._PTS.p.P80 0120: 44 50 38 58 48 00 68 a0 1e 93 68 0a 03 70 01 5c DP8XH.h...h..p.\ 0130: 2f 05 5f 53 42 5f 50 43 49 30 4c 50 43 42 45 43 /._SB_PCI0LPCBEC 0140: 30 5f 53 33 4c 44 a0 33 93 68 0a 04 70 01 5c 2f 0_S3LD.3.h..p.\/ 0150: 05 5f 53 42 5f 50 43 49 30 4c 50 43 42 45 43 30 ._SB_PCI0LPCBEC0 0160: 5f 53 33 4c 44 5c 2f 04 5f 53 42 5f 50 43 49 30 _S3LD\/._SB_PCI0 0170: 4c 50 43 42 50 48 53 53 0a 0e 14 4c 1c 5f 57 41 LPCBPHSS...L._WA 0180: 4b 01 50 38 58 48 01 0a ab a0 30 91 93 68 0a 03 K.P8XH....0..h.. 0190: 93 68 0a 04 a0 25 7b 43 46 47 44 0c 00 00 00 01 .h...%{CFGD..... 01a0: 00 a0 18 90 7b 43 46 47 44 0a f0 00 93 4f 53 59 ....{CFGD....OSY 01b0: 53 0b d1 07 54 52 41 50 0a 3d a0 18 93 52 50 31 S...TRAP.=...RP1 01c0: 44 00 86 5c 2f 03 5f 53 42 5f 50 43 49 30 52 50 D..\/._SB_PCI0RP 01d0: 30 31 00 a0 18 93 52 50 32 44 00 86 5c 2f 03 5f 01....RP2D..\/._ 01e0: 53 42 5f 50 43 49 30 52 50 30 32 00 a0 18 93 52 SB_PCI0RP02....R 01f0: 50 33 44 00 86 5c 2f 03 5f 53 42 5f 50 43 49 30 P3D..\/._SB_PCI0 0200: 52 50 30 33 00 a0 18 93 52 50 34 44 00 86 5c 2f RP03....RP4D..\/ 0210: 03 5f 53 42 5f 50 43 49 30 52 50 30 34 00 a0 18 ._SB_PCI0RP04... 0220: 93 52 50 35 44 00 86 5c 2f 03 5f 53 42 5f 50 43 .RP5D..\/._SB_PC 0230: 49 30 52 50 30 35 00 a0 18 93 52 50 36 44 00 86 I0RP05....RP6D.. 0240: 5c 2f 03 5f 53 42 5f 50 43 49 30 52 50 30 36 00 \/._SB_PCI0RP06. 0250: a0 12 93 68 0a 03 50 38 58 48 00 0a 30 54 52 41 ...h..P8XH..0TRA 0260: 50 0a 46 a0 43 0d 93 68 0a 04 50 38 58 48 00 0a P.F.C..h..P8XH.. 0270: 40 5c 2f 04 5f 53 42 5f 50 43 49 30 4c 50 43 42 @\/._SB_PCI0LPCB 0280: 50 48 53 53 0a 0f 70 57 41 4b 46 60 70 00 57 41 PHSS..pWAKF`p.WA 0290: 4b 46 7b 60 0a 05 60 a0 18 93 60 01 50 38 58 48 KF{`..`...`.P8XH 02a0: 00 0a 41 86 5c 2e 5f 53 42 5f 50 57 52 42 0a 02 ..A.\._SB_PWRB.. 02b0: a0 46 08 44 54 53 45 54 52 41 50 0a 47 a0 42 06 .F.DTSETRAP.G.B. 02c0: 90 5c 2f 04 5f 53 42 5f 50 43 49 30 4c 50 43 42 .\/._SB_PCI0LPCB 02d0: 45 43 4f 4b 93 45 43 44 59 00 a0 27 92 95 44 54 ECOK.ECDY..'..DT 02e0: 53 31 44 54 53 32 70 44 54 53 31 5c 2f 05 5f 53 S1DTS2pDTS1\/._S 02f0: 42 5f 50 43 49 30 4c 50 43 42 45 43 30 5f 53 4b B_PCI0LPCBEC0_SK 0300: 54 41 a1 1d 70 44 54 53 32 5c 2f 05 5f 53 42 5f TA..pDTS2\/._SB_ 0310: 50 43 49 30 4c 50 43 42 45 43 30 5f 53 4b 54 41 PCI0LPCBEC0_SKTA 0320: a1 16 5c 2f 04 5f 53 42 5f 50 43 49 30 4c 50 43 ..\/._SB_PCI0LPC 0330: 42 50 48 53 53 0a 10 5c 2e 5f 50 52 5f 52 50 50 BPHSS..\._PR_RPP 0340: 43 a4 12 04 02 00 00 14 1e 47 45 54 42 0b 77 68 C........GETB.wh 0350: 0a 08 60 77 69 0a 08 61 5b 13 6a 60 61 54 42 46 ..`wi..a[.j`aTBF 0360: 33 a4 54 42 46 33 14 42 09 50 4e 4f 54 08 a0 4a 3.TBF3.B.PNOT..J 0370: 06 4d 50 45 4e a0 31 7b 50 44 43 30 0a 08 00 86 .MPEN.1{PDC0.... 0380: 5c 2e 5f 50 52 5f 43 50 55 30 0a 80 a0 1a 7b 50 \._PR_CPU0....{P 0390: 44 43 30 0a 10 00 5b 22 0a 64 86 5c 2e 5f 50 52 DC0...[".d.\._PR 03a0: 5f 43 50 55 30 0a 81 a0 31 7b 50 44 43 31 0a 08 _CPU0...1{PDC1.. 03b0: 00 86 5c 2e 5f 50 52 5f 43 50 55 31 0a 80 a0 1a ..\._PR_CPU1.... 03c0: 7b 50 44 43 31 0a 10 00 5b 22 0a 64 86 5c 2e 5f {PDC1...[".d.\._ 03d0: 50 52 5f 43 50 55 31 0a 81 a1 1f 86 5c 2e 5f 50 PR_CPU1.....\._P 03e0: 52 5f 43 50 55 30 0a 80 5b 22 0a 64 86 5c 2e 5f R_CPU0..[".d.\._ 03f0: 50 52 5f 43 50 55 30 0a 81 14 17 54 52 41 50 09 PR_CPU0....TRAP. 0400: 70 68 53 4d 49 46 70 00 54 52 50 30 a4 53 4d 49 phSMIFp.TRP0.SMI 0410: 46 10 41 0f 5f 53 42 5f 14 4a 0e 5f 49 4e 49 00 F.A._SB_.J._INI. 0420: 70 0b 99 99 4d 41 52 4b a0 1c 44 54 53 45 54 52 p...MARK..DTSETR 0430: 41 50 0a 47 5e 2f 03 50 43 49 30 4c 50 43 42 50 AP.G^/.PCI0LPCBP 0440: 48 53 53 0a 10 70 0b d0 07 4f 53 59 53 a0 4a 09 HSS..p...OSYS.J. 0450: 5b 12 5f 4f 53 49 60 a0 18 5f 4f 53 49 0d 4c 69 [._OSI`.._OSI.Li 0460: 6e 75 78 00 70 01 4c 49 4e 58 70 00 45 43 44 59 nux.p.LINXp.ECDY 0470: a0 1b 5f 4f 53 49 0d 57 69 6e 64 6f 77 73 20 32 .._OSI.Windows 2 0480: 30 30 31 00 70 0b d1 07 4f 53 59 53 a0 1f 5f 4f 001.p...OSYS.._O 0490: 53 49 0d 57 69 6e 64 6f 77 73 20 32 30 30 31 20 SI.Windows 2001 04a0: 53 50 31 00 70 0b d1 07 4f 53 59 53 a0 1f 5f 4f SP1.p...OSYS.._O 04b0: 53 49 0d 57 69 6e 64 6f 77 73 20 32 30 30 31 20 SI.Windows 2001 04c0: 53 50 32 00 70 0b d2 07 4f 53 59 53 a0 1b 5f 4f SP2.p...OSYS.._O 04d0: 53 49 0d 57 69 6e 64 6f 77 73 20 32 30 30 36 00 SI.Windows 2006. 04e0: 70 0b d6 07 4f 53 59 53 a0 14 90 4d 50 45 4e 93 p...OSYS...MPEN. 04f0: 4f 53 59 53 0b d1 07 54 52 41 50 0a 3d 54 52 41 OSYS...TRAP.=TRA 0500: 50 0a 2b 5b 80 47 4e 56 53 00 0c bc 2d 6e bf 0b P.+[.GNVS...-n.. 0510: 00 01 5b 81 45 24 47 4e 56 53 10 4f 53 59 53 10 ..[.E$GNVS.OSYS. 0520: 53 4d 49 46 08 50 52 4d 30 08 50 52 4d 31 08 53 SMIF.PRM0.PRM1.S 0530: 43 49 46 08 50 52 4d 32 08 50 52 4d 33 08 4c 43 CIF.PRM2.PRM3.LC 0540: 4b 46 08 50 52 4d 34 08 50 52 4d 35 08 50 38 30 KF.PRM4.PRM5.P80 0550: 44 20 4c 49 44 53 08 50 57 52 53 08 44 42 47 53 D LIDS.PWRS.DBGS 0560: 08 4c 49 4e 58 08 00 08 41 43 54 31 08 41 43 54 .LINX...ACT1.ACT 0570: 54 08 50 53 56 54 08 54 43 31 56 08 54 43 32 56 T.PSVT.TC1V.TC2V 0580: 08 54 53 50 56 08 43 52 54 54 08 44 54 53 45 08 .TSPV.CRTT.DTSE. 0590: 44 54 53 31 08 44 54 53 32 08 00 40 05 41 50 49 DTS1.DTS2..@.API 05a0: 43 08 4d 50 45 4e 08 50 43 50 30 08 50 43 50 31 C.MPEN.PCP0.PCP1 05b0: 08 50 50 43 4d 08 00 28 43 4d 41 50 08 43 4d 42 .PPCM..(CMAP.CMB 05c0: 50 08 4c 50 54 50 08 46 44 43 50 08 00 30 49 47 P.LPTP.FDCP..0IG 05d0: 44 53 08 54 4c 53 54 08 43 41 44 4c 08 50 41 44 DS.TLST.CADL.PAD 05e0: 4c 08 43 53 54 45 10 4e 53 54 45 10 53 53 54 45 L.CSTE.NSTE.SSTE 05f0: 10 4e 44 49 44 08 44 49 44 31 20 44 49 44 32 20 .NDID.DID1 DID2 0600: 44 49 44 33 20 44 49 44 34 20 44 49 44 35 20 00 DID3 DID4 DID5 . 0610: 40 06 42 4c 43 53 08 42 52 54 4c 08 41 4c 53 45 @.BLCS.BRTL.ALSE 0620: 08 41 4c 41 46 08 4c 4c 4f 57 08 4c 48 49 48 08 .ALAF.LLOW.LHIH. 0630: 00 08 45 4d 41 45 08 45 4d 41 50 10 45 4d 41 4c ..EMAE.EMAP.EMAL 0640: 10 00 08 4d 45 46 45 08 00 18 54 50 4d 50 08 54 ...MEFE...TPMP.T 0650: 50 4d 45 08 00 40 04 47 54 46 30 38 47 54 46 32 PME..@.GTF08GTF2 0660: 38 49 44 45 4d 08 47 54 46 31 38 00 40 09 41 53 8IDEM.GTF18.@.AS 0670: 4c 42 20 49 42 54 54 08 49 50 41 54 08 49 54 56 LB IBTT.IPAT.ITV 0680: 46 08 49 54 56 4d 08 49 50 53 43 08 49 42 4c 43 F.ITVM.IPSC.IBLC 0690: 08 49 42 49 41 08 49 53 53 43 08 49 34 30 39 08 .IBIA.ISSC.I409. 06a0: 49 35 30 39 08 49 36 30 39 08 49 37 30 39 08 49 I509.I609.I709.I 06b0: 44 4d 4d 08 49 44 4d 53 08 49 46 31 45 08 48 56 DMM.IDMS.IF1E.HV 06c0: 43 4f 08 4e 58 44 31 20 4e 58 44 32 20 4d 41 52 CO.NXD1 NXD2 MAR 06d0: 4b 10 42 52 41 44 08 42 54 45 4e 08 56 56 45 4e K.BRAD.BTEN.VVEN 06e0: 08 42 47 54 4c 08 54 4d 45 45 01 00 07 53 43 55 .BGTL.TMEE...SCU 06f0: 30 01 53 43 55 31 01 53 43 55 32 01 53 43 55 33 0.SCU1.SCU2.SCU3 0700: 01 00 04 58 4b 53 50 01 58 4b 49 4e 01 58 4b 49 ...XKSP.XKIN.XKI 0710: 44 01 58 4b 4f 4b 01 00 04 42 47 55 31 08 42 53 D.XKOK...BGU1.BS 0720: 54 31 08 42 46 43 31 10 57 4b 4c 4e 08 57 41 4b T1.BFC1.WKLN.WAK 0730: 46 08 44 53 4d 44 08 42 41 59 53 08 48 41 50 45 F.DSMD.BAYS.HAPE 0740: 01 00 07 44 54 53 4d 01 00 07 4f 44 54 31 08 4f ...DTSM...ODT1.O 0750: 44 54 32 08 44 54 53 57 08 08 44 53 45 4e 01 08 DT2.DTSW..DSEN.. 0760: 45 43 4f 4e 00 08 47 50 49 43 00 08 43 54 59 50 ECON..GPIC..CTYP 0770: 00 08 4c 30 31 43 00 08 56 46 4e 30 00 08 56 46 ..L01C..VFN0..VF 0780: 4e 31 00 10 4a 7c 5f 47 50 45 14 46 35 5f 4c 30 N1..J|_GPE.F5_L0 0790: 31 00 72 4c 30 31 43 01 4c 30 31 43 50 38 58 48 1.rL01C.L01CP8XH 07a0: 00 01 50 38 58 48 01 4c 30 31 43 a0 48 08 90 93 ..P8XH.L01C.H... 07b0: 52 50 31 44 00 5c 2f 04 5f 53 42 5f 50 43 49 30 RP1D.\/._SB_PCI0 07c0: 52 50 30 31 48 50 53 58 5b 22 0a 64 a0 40 05 5c RP01HPSX[".d.@.\ 07d0: 2f 04 5f 53 42 5f 50 43 49 30 52 50 30 31 50 44 /._SB_PCI0RP01PD 07e0: 43 58 70 01 5c 2f 04 5f 53 42 5f 50 43 49 30 52 CXp.\/._SB_PCI0R 07f0: 50 30 31 50 44 43 58 70 01 5c 2f 04 5f 53 42 5f P01PDCXp.\/._SB_ 0800: 50 43 49 30 52 50 30 31 48 50 53 58 86 5c 2f 03 PCI0RP01HPSX.\/. 0810: 5f 53 42 5f 50 43 49 30 52 50 30 31 00 a1 16 70 _SB_PCI0RP01...p 0820: 01 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 30 31 .\/._SB_PCI0RP01 0830: 48 50 53 58 a0 48 08 90 93 52 50 32 44 00 5c 2f HPSX.H...RP2D.\/ 0840: 04 5f 53 42 5f 50 43 49 30 52 50 30 32 48 50 53 ._SB_PCI0RP02HPS 0850: 58 5b 22 0a 64 a0 40 05 5c 2f 04 5f 53 42 5f 50 X[".d.@.\/._SB_P 0860: 43 49 30 52 50 30 32 50 44 43 58 70 01 5c 2f 04 CI0RP02PDCXp.\/. 0870: 5f 53 42 5f 50 43 49 30 52 50 30 32 50 44 43 58 _SB_PCI0RP02PDCX 0880: 70 01 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 30 p.\/._SB_PCI0RP0 0890: 32 48 50 53 58 86 5c 2f 03 5f 53 42 5f 50 43 49 2HPSX.\/._SB_PCI 08a0: 30 52 50 30 32 00 a1 16 70 01 5c 2f 04 5f 53 42 0RP02...p.\/._SB 08b0: 5f 50 43 49 30 52 50 30 32 48 50 53 58 a0 48 08 _PCI0RP02HPSX.H. 08c0: 90 93 52 50 33 44 00 5c 2f 04 5f 53 42 5f 50 43 ..RP3D.\/._SB_PC 08d0: 49 30 52 50 30 33 48 50 53 58 5b 22 0a 64 a0 40 I0RP03HPSX[".d.@ 08e0: 05 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 30 33 .\/._SB_PCI0RP03 08f0: 50 44 43 58 70 01 5c 2f 04 5f 53 42 5f 50 43 49 PDCXp.\/._SB_PCI 0900: 30 52 50 30 33 50 44 43 58 70 01 5c 2f 04 5f 53 0RP03PDCXp.\/._S 0910: 42 5f 50 43 49 30 52 50 30 33 48 50 53 58 86 5c B_PCI0RP03HPSX.\ 0920: 2f 03 5f 53 42 5f 50 43 49 30 52 50 30 33 00 a1 /._SB_PCI0RP03.. 0930: 16 70 01 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 .p.\/._SB_PCI0RP 0940: 30 33 48 50 53 58 a0 48 08 90 93 52 50 34 44 00 03HPSX.H...RP4D. 0950: 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 30 34 48 \/._SB_PCI0RP04H 0960: 50 53 58 5b 22 0a 64 a0 40 05 5c 2f 04 5f 53 42 PSX[".d.@.\/._SB 0970: 5f 50 43 49 30 52 50 30 34 50 44 43 58 70 01 5c _PCI0RP04PDCXp.\ 0980: 2f 04 5f 53 42 5f 50 43 49 30 52 50 30 34 50 44 /._SB_PCI0RP04PD 0990: 43 58 70 01 5c 2f 04 5f 53 42 5f 50 43 49 30 52 CXp.\/._SB_PCI0R 09a0: 50 30 34 48 50 53 58 86 5c 2f 03 5f 53 42 5f 50 P04HPSX.\/._SB_P 09b0: 43 49 30 52 50 30 34 00 a1 16 70 01 5c 2f 04 5f CI0RP04...p.\/._ 09c0: 53 42 5f 50 43 49 30 52 50 30 34 48 50 53 58 a0 SB_PCI0RP04HPSX. 09d0: 48 08 90 93 52 50 35 44 00 5c 2f 04 5f 53 42 5f H...RP5D.\/._SB_ 09e0: 50 43 49 30 52 50 30 35 48 50 53 58 5b 22 0a 64 PCI0RP05HPSX[".d 09f0: a0 40 05 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 .@.\/._SB_PCI0RP 0a00: 30 35 50 44 43 58 70 01 5c 2f 04 5f 53 42 5f 50 05PDCXp.\/._SB_P 0a10: 43 49 30 52 50 30 35 50 44 43 58 70 01 5c 2f 04 CI0RP05PDCXp.\/. 0a20: 5f 53 42 5f 50 43 49 30 52 50 30 35 48 50 53 58 _SB_PCI0RP05HPSX 0a30: 86 5c 2f 03 5f 53 42 5f 50 43 49 30 52 50 30 35 .\/._SB_PCI0RP05 0a40: 00 a1 16 70 01 5c 2f 04 5f 53 42 5f 50 43 49 30 ...p.\/._SB_PCI0 0a50: 52 50 30 35 48 50 53 58 a0 48 08 90 93 52 50 36 RP05HPSX.H...RP6 0a60: 44 00 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 30 D.\/._SB_PCI0RP0 0a70: 36 48 50 53 58 5b 22 0a 64 a0 40 05 5c 2f 04 5f 6HPSX[".d.@.\/._ 0a80: 53 42 5f 50 43 49 30 52 50 30 36 50 44 43 58 70 SB_PCI0RP06PDCXp 0a90: 01 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 30 36 .\/._SB_PCI0RP06 0aa0: 50 44 43 58 70 01 5c 2f 04 5f 53 42 5f 50 43 49 PDCXp.\/._SB_PCI 0ab0: 30 52 50 30 36 48 50 53 58 86 5c 2f 03 5f 53 42 0RP06HPSX.\/._SB 0ac0: 5f 50 43 49 30 52 50 30 36 00 a1 16 70 01 5c 2f _PCI0RP06...p.\/ 0ad0: 04 5f 53 42 5f 50 43 49 30 52 50 30 36 48 50 53 ._SB_PCI0RP06HPS 0ae0: 58 14 42 0d 5f 4c 30 32 00 70 00 47 50 45 43 a0 X.B._L02.p.GPEC. 0af0: 4d 0a 5c 2f 04 5f 53 42 5f 50 43 49 30 4c 50 43 M.\/._SB_PCI0LPC 0b00: 42 45 43 4f 4b a0 4e 04 93 44 54 53 57 01 a0 27 BECOK.N..DTSW..' 0b10: 92 95 44 54 53 31 44 54 53 32 70 44 54 53 31 5c ..DTS1DTS2pDTS1\ 0b20: 2f 05 5f 53 42 5f 50 43 49 30 4c 50 43 42 45 43 /._SB_PCI0LPCBEC 0b30: 30 5f 53 4b 54 41 a1 1d 70 44 54 53 32 5c 2f 05 0_SKTA..pDTS2\/. 0b40: 5f 53 42 5f 50 43 49 30 4c 50 43 42 45 43 30 5f _SB_PCI0LPCBEC0_ 0b50: 53 4b 54 41 a1 48 04 a0 27 92 95 4f 44 54 31 4f SKTA.H..'..ODT1O 0b60: 44 54 32 70 4f 44 54 31 5c 2f 05 5f 53 42 5f 50 DT2pODT1\/._SB_P 0b70: 43 49 30 4c 50 43 42 45 43 30 5f 53 4b 54 41 a1 CI0LPCBEC0_SKTA. 0b80: 1d 70 4f 44 54 32 5c 2f 05 5f 53 42 5f 50 43 49 .pODT2\/._SB_PCI 0b90: 30 4c 50 43 42 45 43 30 5f 53 4b 54 41 a1 16 5c 0LPCBEC0_SKTA..\ 0ba0: 2f 04 5f 53 42 5f 50 43 49 30 4c 50 43 42 50 48 /._SB_PCI0LPCBPH 0bb0: 53 53 0a 10 14 18 5f 4c 30 33 00 86 5c 2f 03 5f SS...._L03..\/._ 0bc0: 53 42 5f 50 43 49 30 55 53 42 31 0a 02 14 18 5f SB_PCI0USB1...._ 0bd0: 4c 30 34 00 86 5c 2f 03 5f 53 42 5f 50 43 49 30 L04..\/._SB_PCI0 0be0: 55 53 42 32 0a 02 14 18 5f 4c 30 35 00 86 5c 2f USB2...._L05..\/ 0bf0: 03 5f 53 42 5f 50 43 49 30 55 53 42 35 0a 02 14 ._SB_PCI0USB5... 0c00: 36 5f 4c 30 36 00 a0 27 5c 2f 04 5f 53 42 5f 50 6_L06..'\/._SB_P 0c10: 43 49 30 47 46 58 30 47 53 53 45 5c 2f 04 5f 53 CI0GFX0GSSE\/._S 0c20: 42 5f 50 43 49 30 47 46 58 30 47 53 43 49 a1 07 B_PCI0GFX0GSCI.. 0c30: 70 01 53 43 49 53 14 43 1f 5f 4c 30 39 00 a0 41 p.SCIS.C._L09..A 0c40: 05 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 30 31 .\/._SB_PCI0RP01 0c50: 50 53 50 58 70 01 5c 2f 04 5f 53 42 5f 50 43 49 PSPXp.\/._SB_PCI 0c60: 30 52 50 30 31 50 53 50 58 70 01 5c 2f 04 5f 53 0RP01PSPXp.\/._S 0c70: 42 5f 50 43 49 30 52 50 30 31 50 4d 53 58 86 5c B_PCI0RP01PMSX.\ 0c80: 2f 03 5f 53 42 5f 50 43 49 30 52 50 30 31 0a 02 /._SB_PCI0RP01.. 0c90: a0 41 05 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 .A.\/._SB_PCI0RP 0ca0: 30 32 50 53 50 58 70 01 5c 2f 04 5f 53 42 5f 50 02PSPXp.\/._SB_P 0cb0: 43 49 30 52 50 30 32 50 53 50 58 70 01 5c 2f 04 CI0RP02PSPXp.\/. 0cc0: 5f 53 42 5f 50 43 49 30 52 50 30 32 50 4d 53 58 _SB_PCI0RP02PMSX 0cd0: 86 5c 2f 03 5f 53 42 5f 50 43 49 30 52 50 30 32 .\/._SB_PCI0RP02 0ce0: 0a 02 a0 41 05 5c 2f 04 5f 53 42 5f 50 43 49 30 ...A.\/._SB_PCI0 0cf0: 52 50 30 33 50 53 50 58 70 01 5c 2f 04 5f 53 42 RP03PSPXp.\/._SB 0d00: 5f 50 43 49 30 52 50 30 33 50 53 50 58 70 01 5c _PCI0RP03PSPXp.\ 0d10: 2f 04 5f 53 42 5f 50 43 49 30 52 50 30 33 50 4d /._SB_PCI0RP03PM 0d20: 53 58 86 5c 2f 03 5f 53 42 5f 50 43 49 30 52 50 SX.\/._SB_PCI0RP 0d30: 30 33 0a 02 a0 41 05 5c 2f 04 5f 53 42 5f 50 43 03...A.\/._SB_PC 0d40: 49 30 52 50 30 34 50 53 50 58 70 01 5c 2f 04 5f I0RP04PSPXp.\/._ 0d50: 53 42 5f 50 43 49 30 52 50 30 34 50 53 50 58 70 SB_PCI0RP04PSPXp 0d60: 01 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 30 34 .\/._SB_PCI0RP04 0d70: 50 4d 53 58 86 5c 2f 03 5f 53 42 5f 50 43 49 30 PMSX.\/._SB_PCI0 0d80: 52 50 30 34 0a 02 a0 41 05 5c 2f 04 5f 53 42 5f RP04...A.\/._SB_ 0d90: 50 43 49 30 52 50 30 35 50 53 50 58 70 01 5c 2f PCI0RP05PSPXp.\/ 0da0: 04 5f 53 42 5f 50 43 49 30 52 50 30 35 50 53 50 ._SB_PCI0RP05PSP 0db0: 58 70 01 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 Xp.\/._SB_PCI0RP 0dc0: 30 35 50 4d 53 58 86 5c 2f 03 5f 53 42 5f 50 43 05PMSX.\/._SB_PC 0dd0: 49 30 52 50 30 35 0a 02 a0 41 05 5c 2f 04 5f 53 I0RP05...A.\/._S 0de0: 42 5f 50 43 49 30 52 50 30 36 50 53 50 58 70 01 B_PCI0RP06PSPXp. 0df0: 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 30 36 50 \/._SB_PCI0RP06P 0e00: 53 50 58 70 01 5c 2f 04 5f 53 42 5f 50 43 49 30 SPXp.\/._SB_PCI0 0e10: 52 50 30 36 50 4d 53 58 86 5c 2f 03 5f 53 42 5f RP06PMSX.\/._SB_ 0e20: 50 43 49 30 52 50 30 36 0a 02 14 18 5f 4c 30 42 PCI0RP06...._L0B 0e30: 00 86 5c 2f 03 5f 53 42 5f 50 43 49 30 50 43 49 ..\/._SB_PCI0PCI 0e40: 42 0a 02 14 18 5f 4c 30 43 00 86 5c 2f 03 5f 53 B...._L0C..\/._S 0e50: 42 5f 50 43 49 30 55 53 42 33 0a 02 14 4b 0b 5f B_PCI0USB3...K._ 0e60: 4c 30 44 00 a0 3b 5c 2f 04 5f 53 42 5f 50 43 49 L0D..;\/._SB_PCI 0e70: 30 45 48 43 31 50 4d 45 53 70 01 5c 2f 04 5f 53 0EHC1PMESp.\/._S 0e80: 42 5f 50 43 49 30 45 48 43 31 50 4d 45 53 86 5c B_PCI0EHC1PMES.\ 0e90: 2f 03 5f 53 42 5f 50 43 49 30 45 48 43 31 0a 02 /._SB_PCI0EHC1.. 0ea0: a0 3b 5c 2f 04 5f 53 42 5f 50 43 49 30 45 48 43 .;\/._SB_PCI0EHC 0eb0: 32 50 4d 45 53 70 01 5c 2f 04 5f 53 42 5f 50 43 2PMESp.\/._SB_PC 0ec0: 49 30 45 48 43 32 50 4d 45 53 86 5c 2f 03 5f 53 I0EHC2PMES.\/._S 0ed0: 42 5f 50 43 49 30 45 48 43 32 0a 02 a0 3b 5c 2f B_PCI0EHC2...;\/ 0ee0: 04 5f 53 42 5f 50 43 49 30 48 44 45 46 50 4d 45 ._SB_PCI0HDEFPME 0ef0: 53 70 01 5c 2f 04 5f 53 42 5f 50 43 49 30 48 44 Sp.\/._SB_PCI0HD 0f00: 45 46 50 4d 45 53 86 5c 2f 03 5f 53 42 5f 50 43 EFPMES.\/._SB_PC 0f10: 49 30 48 44 45 46 0a 02 14 18 5f 4c 30 45 00 86 I0HDEF...._L0E.. 0f20: 5c 2f 03 5f 53 42 5f 50 43 49 30 55 53 42 34 0a \/._SB_PCI0USB4. 0f30: 02 14 1c 5f 4c 31 42 00 80 4c 50 4f 4c 4c 50 4f ..._L1B..LPOLLPO 0f40: 4c 86 5c 2e 5f 53 42 5f 4c 49 44 30 0a 80 10 46 L.\._SB_LID0...F 0f50: 0b 5f 50 52 5f 5b 83 0b 43 50 55 30 00 10 10 00 ._PR_[..CPU0.... 0f60: 00 06 5b 83 0b 43 50 55 31 01 10 10 00 00 06 14 ..[..CPU1....... 0f70: 45 09 52 50 50 43 00 a0 4d 08 93 4f 53 59 53 0b E.RPPC..M..OSYS. 0f80: d2 07 a0 42 08 7b 43 46 47 44 01 00 a0 42 04 94 ...B.{CFGD...B.. 0f90: 5e 2e 43 50 55 30 5f 50 50 43 00 74 5e 2e 43 50 ^.CPU0_PPC.t^.CP 0fa0: 55 30 5f 50 50 43 01 5e 2e 43 50 55 30 5f 50 50 U0_PPC.^.CPU0_PP 0fb0: 43 50 4e 4f 54 72 5e 2e 43 50 55 30 5f 50 50 43 CPNOTr^.CPU0_PPC 0fc0: 01 5e 2e 43 50 55 30 5f 50 50 43 50 4e 4f 54 a1 .^.CPU0_PPCPNOT. 0fd0: 35 72 5e 2e 43 50 55 30 5f 50 50 43 01 5e 2e 43 5r^.CPU0_PPC.^.C 0fe0: 50 55 30 5f 50 50 43 50 4e 4f 54 74 5e 2e 43 50 PU0_PPCPNOTt^.CP 0ff0: 55 30 5f 50 50 43 01 5e 2e 43 50 55 30 5f 50 50 U0_PPC.^.CPU0_PP 1000: 43 50 4e 4f 54 08 46 57 53 4f 0d 46 57 53 4f 00 CPNOT.FWSO.FWSO. 1010: 08 5f 50 53 43 00 14 12 5f 50 53 30 00 70 5f 50 ._PSC..._PS0.p_P 1020: 53 43 60 70 00 5f 50 53 43 14 0d 5f 50 53 33 00 SC`p._PSC.._PS3. 1030: 70 0a 03 5f 50 53 43 10 8c fb 04 5f 53 42 5f 5b p.._PSC...._SB_[ 1040: 82 4f 3e 41 4d 57 30 08 5f 48 49 44 0d 70 6e 70 .O>AMW0._HID.pnp 1050: 30 63 31 34 00 08 5f 55 49 44 00 08 5f 57 44 47 0c14.._UID.._WDG 1060: 11 3f 0a 3c a7 1d 85 2e 53 d0 5f 49 9d fa 1a 4a .?.<....S._I...J 1070: d6 2e 6a 86 41 43 01 00 3b 6d 43 71 dd fb 72 4c ..j.AC..;mCq..rL 1080: bc b8 43 5b fe 0d 64 f9 42 43 01 00 21 12 90 05 ..C[..d.BC..!... 1090: 66 d5 d1 11 b2 f0 00 a0 c9 06 29 10 42 41 01 00 f.........).BA.. 10a0: 08 53 54 41 43 11 07 0a 04 01 14 03 00 14 1f 57 .STAC..........W 10b0: 51 41 43 01 70 0d 4d 58 4d 54 43 43 6f 6e 66 69 QAC.p.MXMTCConfi 10c0: 67 44 61 74 61 00 5b 31 a4 53 54 41 43 08 53 54 gData.[1.STAC.ST 10d0: 42 43 11 07 0a 04 01 00 00 00 14 34 57 51 42 43 BC.........4WQBC 10e0: 01 70 0d 47 65 74 20 4d 58 4d 54 43 43 6f 6e 74 .p.Get MXMTCCont 10f0: 72 6f 6c 44 61 74 61 3a 20 53 54 42 43 20 3d 20 rolData: STBC = 1100: 00 5b 31 70 53 54 42 43 5b 31 a4 53 54 42 43 14 .[1pSTBC[1.STBC. 1110: 47 06 57 53 42 43 02 70 69 53 54 42 43 70 0d 53 G.WSBC.piSTBCp.S 1120: 65 74 20 4d 58 4d 54 43 43 6f 6e 74 72 6f 6c 44 et MXMTCControlD 1130: 61 74 61 3a 20 53 54 42 43 20 3d 20 00 5b 31 70 ata: STBC = .[1p 1140: 53 54 42 43 5b 31 a0 30 93 5e 5e 2f 03 50 43 49 STBC[1.0.^^/.PCI 1150: 30 4c 50 43 42 45 43 4f 4b 01 70 83 88 53 54 42 0LPCBECOK.p..STB 1160: 43 01 00 5e 5e 2f 04 50 43 49 30 4c 50 43 42 45 C..^^/.PCI0LPCBE 1170: 43 30 5f 53 4b 54 43 08 57 51 42 41 11 43 2b 0b C0_SKTC.WQBA.C+. 1180: ae 02 46 4f 4d 42 01 00 00 00 9e 02 00 00 c0 0b ..FOMB.......... 1190: 00 00 44 53 00 01 1a 7d da 54 28 d9 85 00 01 06 ..DS...}.T(..... 11a0: 18 42 10 07 10 0a 4b 61 02 c9 21 52 3c 18 94 05 .B....Ka..!R<... 11b0: 10 43 88 57 04 44 04 84 bc 0a b0 29 c0 24 88 fa .C.W.D.....).$.. 11c0: f7 87 28 09 0e 25 04 42 12 05 98 17 a0 5b 80 61 ..(..%.B.....[.a 11d0: 01 b6 05 98 16 e0 18 92 4a 03 a7 04 96 02 21 a1 ........J.....!. 11e0: 02 94 0b f0 2d 40 3b a2 24 0b b0 0c 23 02 8f 82 ....-@;.$...#... 11f0: a1 71 68 ec 30 2c 13 4c 83 38 8c b2 91 45 60 dc .qh.0,.L.8...E`. 1200: 4e 05 c8 15 20 4c 80 78 54 61 34 07 45 e0 42 63 N... L.xTa4.E.Bc 1210: 64 40 c8 a3 00 ab a3 d0 a4 12 d8 bd 00 65 02 2c d@...........e., 1220: 0a 10 27 c0 9a 00 63 48 32 28 40 9b 00 5b 20 42 ..'...cH2(@..[ B 1230: 0f d4 19 8a 46 70 02 51 6a 46 11 48 ac 1a 01 85 ....Fp.QjF.H.... 1240: 12 34 46 b0 10 81 c2 86 37 46 98 03 88 d1 fe 20 .4F.....7F..... 1250: 48 20 05 e3 66 91 46 83 1a 6b 82 63 f7 68 4e b8 H ..f.F..k.c.hN. 1260: 73 01 d2 e7 26 90 a3 3b b8 3a 07 4d 86 c7 b0 1e s...&..;.:.M.... 1270: 06 d8 29 00 ef 1a 50 d3 3f 78 26 08 0e 35 44 8f ..)...P.?x&..5D. 1280: 3a dc 09 1c fb 91 30 88 b3 3b 6e ac c3 c9 68 d0 :.....0..;n...h. 1290: a5 0a 30 7b 00 d0 d0 12 9c f6 99 84 7e 0f 38 9f ..0{........~.8. 12a0: 9e 21 89 fc 41 a0 46 e6 ff 3f b4 c7 78 5a 31 43 .!..A.F..?..xZ1C 12b0: 3e 0b 1c 16 13 0b a1 4d 6a 3c 40 40 e1 d1 40 08 >......Mj<@@..@. 12c0: 6f 06 9e af 09 46 86 90 93 f1 a0 06 e0 41 d7 3a o....F.......A.: 12d0: 32 8d 27 a6 21 cf e8 00 22 bf 32 78 0c 41 02 f9 2.'.!...".2x.A.. 12e0: c4 60 b8 c7 81 13 78 02 f0 59 40 10 92 00 21 51 .`....x..Y@...!Q 12f0: e3 a7 47 08 7e 7a 78 93 30 28 1f d2 99 f9 90 e1 ..G.~zx.0(...... 1300: 11 c2 07 c4 7b 9f 3b 19 c1 29 7b a4 e0 b0 7e 0e ....{.;..){...~. 1310: 20 c0 af 0f 8f 0d 09 7c ae 08 8c 1d aa fd 0a 40 ......|.......@ 1320: 08 1e ed 51 e0 54 23 1c 2d 78 08 8a 1c 03 4a cc ...Q.T#.-x....J. 1330: 18 50 03 38 85 d0 e7 73 04 47 14 25 f6 21 19 da .P.8...s.G.%.!.. 1340: 08 e1 1f 39 4e c1 f7 8b 23 3d ad 23 78 91 f0 08 ...9N...#=.#x... 1350: 30 e1 ce 28 a8 38 30 f4 ff 7f 4c 01 dc 7a 3b a6 0..(.80...L..z;. 1360: 80 3e c0 31 05 50 fc ff 3f a6 00 87 a8 c7 14 f4 .>.1.P..?....... 1370: 40 0c 7c 2e a1 0d ff 96 c1 8e 03 87 74 6a 8f 28 @.|.........tj.( 1380: 80 29 79 47 14 50 8c 14 d6 f1 04 18 05 3c 9b a0 .)yG.P.......<.. 1390: 22 1d 4f 80 ce ff ff 78 02 58 b8 9a bc 92 84 7d ".O....x.X.....} 13a0: 1e 78 1d 89 14 e3 41 e2 b5 e4 c1 24 46 98 08 8f .x....A....$F... 13b0: 27 1e 47 c0 b7 82 28 91 8e 3e c4 83 49 28 63 3e '.G...(..>..I(c> 13c0: a3 84 89 f9 04 70 22 ef 27 46 0a 73 2a 8f 27 2c .....p".'F.s*.', 13d0: c4 f1 04 a0 85 e2 e3 09 3a 2c 84 fe ff c7 13 dc ........:,...... 13e0: e1 c1 a7 0c fc 85 0c c6 f9 04 30 24 f0 7c 02 ca ..........0$.|.. 13f0: db 18 e6 80 02 8c 14 da f4 a9 d1 a8 55 83 32 35 ............U.25 1400: ca 34 a8 d5 a7 52 63 c6 4c 9c 52 bc 6c 8d df f2 .4...Rc.L.R.l... 1410: 9e 09 02 b1 20 0a 81 38 cc f3 42 20 96 a2 01 84 .... ..8..B .... 1420: 85 06 a1 42 a9 05 e2 98 20 34 92 0a 10 f6 ff 07 ...B.... 4...... 1430: 5b 82 1b 4c 49 44 30 08 5f 48 49 44 0c 41 d0 0c [..LID0._HID.A.. 1440: 0d 14 0b 5f 4c 49 44 00 a4 4c 50 4f 4c 5b 82 0f ..._LID..LPOL[.. 1450: 50 57 52 42 08 5f 48 49 44 0c 41 d0 0c 0c 5b 82 PWRB._HID.A...[. 1460: 84 b9 04 50 43 49 30 14 09 5f 53 33 44 00 a4 0a ...PCI0.._S3D... 1470: 02 14 09 5f 53 34 44 00 a4 0a 02 08 5f 48 49 44 ..._S4D....._HID 1480: 0c 41 d0 0a 08 08 5f 43 49 44 0c 41 d0 0a 03 5b .A...._CID.A...[ 1490: 82 43 0e 4d 43 48 43 08 5f 41 44 52 00 5b 80 48 .C.MCHC._ADR.[.H 14a0: 42 55 53 02 0a 40 0a c0 5b 81 4a 0c 48 42 55 53 BUS..@..[.J.HBUS 14b0: 03 45 50 45 4e 01 00 0b 45 50 42 52 14 00 20 4d .EPEN...EPBR.. M 14c0: 48 45 4e 01 00 0d 4d 48 42 52 12 00 40 0a 50 58 HEN...MHBR..@.PX 14d0: 45 4e 01 50 58 53 5a 02 00 17 50 58 42 52 06 00 EN.PXSZ...PXBR.. 14e0: 20 44 49 45 4e 01 00 0b 44 49 42 52 14 00 20 49 DIEN...DIBR.. I 14f0: 50 45 4e 01 00 0b 49 50 42 52 14 00 40 0e 00 04 PEN...IPBR..@... 1500: 50 4d 30 48 02 00 02 50 4d 31 4c 02 00 02 50 4d PM0H...PM1L...PM 1510: 31 48 02 00 02 50 4d 32 4c 02 00 02 50 4d 32 48 1H...PM2L...PM2H 1520: 02 00 02 50 4d 33 4c 02 00 02 50 4d 33 48 02 00 ...PM3L...PM3H.. 1530: 02 50 4d 34 4c 02 00 02 50 4d 34 48 02 00 02 50 .PM4L...PM4H...P 1540: 4d 35 4c 02 00 02 50 4d 35 48 02 00 02 50 4d 36 M5L...PM5H...PM6 1550: 4c 02 00 02 50 4d 36 48 02 00 02 00 07 48 45 4e L...PM6H.....HEN 1560: 41 01 00 40 05 54 55 55 44 10 00 40 06 00 04 54 A..@.TUUD..@...T 1570: 4c 55 44 0c 08 42 55 46 30 11 4d 20 0b 08 02 88 LUD..BUF0.M .... 1580: 0d 00 02 0c 00 00 00 00 00 ff 00 00 00 00 01 87 ................ 1590: 17 00 01 0c 03 00 00 00 00 00 00 00 00 f7 0c 00 ................ 15a0: 00 00 00 00 00 f8 0c 00 00 47 01 f8 0c f8 0c 01 .........G...... 15b0: 08 87 17 00 01 0c 03 00 00 00 00 00 0d 00 00 ff ................ 15c0: ff 00 00 00 00 00 00 00 f3 00 00 87 17 00 00 0c ................ 15d0: 03 00 00 00 00 00 00 0a 00 ff ff 0b 00 00 00 00 ................ 15e0: 00 00 00 02 00 87 17 00 00 0c 03 00 00 00 00 00 ................ 15f0: 00 0c 00 ff 3f 0c 00 00 00 00 00 00 40 00 00 87 ....?.......@... 1600: 17 00 00 0c 03 00 00 00 00 00 40 0c 00 ff 7f 0c ..........@..... 1610: 00 00 00 00 00 00 40 00 00 87 17 00 00 0c 03 00 ......@......... 1620: 00 00 00 00 80 0c 00 ff bf 0c 00 00 00 00 00 00 ................ 1630: 40 00 00 87 17 00 00 0c 03 00 00 00 00 00 c0 0c @............... 1640: 00 ff ff 0c 00 00 00 00 00 00 40 00 00 87 17 00 ..........@..... 1650: 00 0c 03 00 00 00 00 00 00 0d 00 ff 3f 0d 00 00 ............?... 1660: 00 00 00 00 40 00 00 87 17 00 00 0c 03 00 00 00 ....@........... 1670: 00 00 40 0d 00 ff 7f 0d 00 00 00 00 00 00 40 00 ..@...........@. 1680: 00 87 17 00 00 0c 03 00 00 00 00 00 80 0d 00 ff ................ 1690: bf 0d 00 00 00 00 00 00 40 00 00 87 17 00 00 0c ........@....... 16a0: 03 00 00 00 00 00 c0 0d 00 ff ff 0d 00 00 00 00 ................ 16b0: 00 00 40 00 00 87 17 00 00 0c 03 00 00 00 00 00 ..@............. 16c0: 00 0e 00 ff 3f 0e 00 00 00 00 00 00 40 00 00 87 ....?.......@... 16d0: 17 00 00 0c 03 00 00 00 00 00 40 0e 00 ff 7f 0e ..........@..... 16e0: 00 00 00 00 00 00 40 00 00 87 17 00 00 0c 03 00 ......@......... 16f0: 00 00 00 00 80 0e 00 ff bf 0e 00 00 00 00 00 00 ................ 1700: 40 00 00 87 17 00 00 0c 03 00 00 00 00 00 c0 0e @............... 1710: 00 ff ff 0e 00 00 00 00 00 00 40 00 00 87 17 00 ..........@..... 1720: 00 0c 03 00 00 00 00 00 00 0f 00 ff ff 0f 00 00 ................ 1730: 00 00 00 00 00 01 00 87 17 00 00 0c 03 00 00 00 ................ 1740: 00 00 00 00 00 ff ff ff df 00 00 00 00 00 00 00 ................ 1750: 00 87 17 00 00 0c 03 00 00 00 00 00 00 00 f0 ff ................ 1760: ff bf fe 00 00 00 00 00 00 c0 0e 87 17 00 00 0c ................ 1770: 03 00 00 00 00 00 00 d4 fe ff 4f d4 fe 00 00 00 ..........O..... 1780: 00 00 00 00 00 79 00 14 4b 3d 5f 43 52 53 08 a0 .....y..K=_CRS.. 1790: 1c 5e 2e 4d 43 48 43 50 4d 31 4c 8a 42 55 46 30 .^.MCHCPM1L.BUF0 17a0: 0a 7c 43 30 4c 4e 70 00 43 30 4c 4e a0 1f 93 5e .|C0LNp.C0LN...^ 17b0: 2e 4d 43 48 43 50 4d 31 4c 01 8d 42 55 46 30 0b .MCHCPM1L..BUF0. 17c0: 58 03 43 30 52 57 70 00 43 30 52 57 a0 1c 5e 2e X.C0RWp.C0RW..^. 17d0: 4d 43 48 43 50 4d 31 48 8a 42 55 46 30 0a 96 43 MCHCPM1H.BUF0..C 17e0: 34 4c 4e 70 00 43 34 4c 4e a0 1f 93 5e 2e 4d 43 4LNp.C4LN...^.MC 17f0: 48 43 50 4d 31 48 01 8d 42 55 46 30 0b 28 04 43 HCPM1H..BUF0.(.C 1800: 34 52 57 70 00 43 34 52 57 a0 1c 5e 2e 4d 43 48 4RWp.C4RW..^.MCH 1810: 43 50 4d 32 4c 8a 42 55 46 30 0a b0 43 38 4c 4e CPM2L.BUF0..C8LN 1820: 70 00 43 38 4c 4e a0 1f 93 5e 2e 4d 43 48 43 50 p.C8LN...^.MCHCP 1830: 4d 32 4c 01 8d 42 55 46 30 0b f8 04 43 38 52 57 M2L..BUF0...C8RW 1840: 70 00 43 38 52 57 a0 1c 5e 2e 4d 43 48 43 50 4d p.C8RW..^.MCHCPM 1850: 32 48 8a 42 55 46 30 0a ca 43 43 4c 4e 70 00 43 2H.BUF0..CCLNp.C 1860: 43 4c 4e a0 1f 93 5e 2e 4d 43 48 43 50 4d 32 48 CLN...^.MCHCPM2H 1870: 01 8d 42 55 46 30 0b c8 05 43 43 52 57 70 00 43 ..BUF0...CCRWp.C 1880: 43 52 57 a0 1c 5e 2e 4d 43 48 43 50 4d 33 4c 8a CRW..^.MCHCPM3L. 1890: 42 55 46 30 0a e4 44 30 4c 4e 70 00 44 30 4c 4e BUF0..D0LNp.D0LN 18a0: a0 1f 93 5e 2e 4d 43 48 43 50 4d 33 4c 01 8d 42 ...^.MCHCPM3L..B 18b0: 55 46 30 0b 98 06 44 30 52 57 70 00 44 30 52 57 UF0...D0RWp.D0RW 18c0: a0 1c 5e 2e 4d 43 48 43 50 4d 33 48 8a 42 55 46 ..^.MCHCPM3H.BUF 18d0: 30 0a fe 44 34 4c 4e 70 00 44 34 4c 4e a0 1f 93 0..D4LNp.D4LN... 18e0: 5e 2e 4d 43 48 43 50 4d 33 48 01 8d 42 55 46 30 ^.MCHCPM3H..BUF0 18f0: 0b 68 07 44 34 52 57 70 00 44 34 52 57 a0 1d 5e .h.D4RWp.D4RW..^ 1900: 2e 4d 43 48 43 50 4d 34 4c 8a 42 55 46 30 0b 18 .MCHCPM4L.BUF0.. 1910: 01 44 38 4c 4e 70 00 44 38 4c 4e a0 1f 93 5e 2e .D8LNp.D8LN...^. 1920: 4d 43 48 43 50 4d 34 4c 01 8d 42 55 46 30 0b 38 MCHCPM4L..BUF0.8 1930: 08 44 38 52 57 70 00 44 38 52 57 a0 1d 5e 2e 4d .D8RWp.D8RW..^.M 1940: 43 48 43 50 4d 34 48 8a 42 55 46 30 0b 32 01 44 CHCPM4H.BUF0.2.D 1950: 43 4c 4e 70 00 44 43 4c 4e a0 1f 93 5e 2e 4d 43 CLNp.DCLN...^.MC 1960: 48 43 50 4d 34 48 01 8d 42 55 46 30 0b 08 09 44 HCPM4H..BUF0...D 1970: 43 52 57 70 00 44 43 52 57 a0 1d 5e 2e 4d 43 48 CRWp.DCRW..^.MCH 1980: 43 50 4d 35 4c 8a 42 55 46 30 0b 4c 01 45 30 4c CPM5L.BUF0.L.E0L 1990: 4e 70 00 45 30 4c 4e a0 1f 93 5e 2e 4d 43 48 43 Np.E0LN...^.MCHC 19a0: 50 4d 35 4c 01 8d 42 55 46 30 0b d8 09 45 30 52 PM5L..BUF0...E0R 19b0: 57 70 00 45 30 52 57 a0 1d 5e 2e 4d 43 48 43 50 Wp.E0RW..^.MCHCP 19c0: 4d 35 48 8a 42 55 46 30 0b 66 01 45 34 4c 4e 70 M5H.BUF0.f.E4LNp 19d0: 00 45 34 4c 4e a0 1f 93 5e 2e 4d 43 48 43 50 4d .E4LN...^.MCHCPM 19e0: 35 48 01 8d 42 55 46 30 0b a8 0a 45 34 52 57 70 5H..BUF0...E4RWp 19f0: 00 45 34 52 57 a0 1d 5e 2e 4d 43 48 43 50 4d 36 .E4RW..^.MCHCPM6 1a00: 4c 8a 42 55 46 30 0b 80 01 45 38 4c 4e 70 00 45 L.BUF0...E8LNp.E 1a10: 38 4c 4e a0 1f 93 5e 2e 4d 43 48 43 50 4d 36 4c 8LN...^.MCHCPM6L 1a20: 01 8d 42 55 46 30 0b 78 0b 45 38 52 57 70 00 45 ..BUF0.x.E8RWp.E 1a30: 38 52 57 a0 1d 5e 2e 4d 43 48 43 50 4d 36 48 8a 8RW..^.MCHCPM6H. 1a40: 42 55 46 30 0b 9a 01 45 43 4c 4e 70 00 45 43 4c BUF0...ECLNp.ECL 1a50: 4e a0 1f 93 5e 2e 4d 43 48 43 50 4d 36 48 01 8d N...^.MCHCPM6H.. 1a60: 42 55 46 30 0b 48 0c 45 43 52 57 70 00 45 43 52 BUF0.H.ECRWp.ECR 1a70: 57 a0 1d 5e 2e 4d 43 48 43 50 4d 30 48 8a 42 55 W..^.MCHCPM0H.BU 1a80: 46 30 0b b4 01 46 30 4c 4e 70 00 46 30 4c 4e a0 F0...F0LNp.F0LN. 1a90: 1f 93 5e 2e 4d 43 48 43 50 4d 30 48 01 8d 42 55 ..^.MCHCPM0H..BU 1aa0: 46 30 0b 18 0d 46 30 52 57 70 00 46 30 52 57 8a F0...F0RWp.F0RW. 1ab0: 42 55 46 30 0b c2 01 4d 31 4d 4e 8a 42 55 46 30 BUF0...M1MN.BUF0 1ac0: 0b c6 01 4d 31 4d 58 8a 42 55 46 30 0b ce 01 4d ...M1MX.BUF0...M 1ad0: 31 4c 4e 8a 42 55 46 30 0b dc 01 4d 32 4d 4e 8a 1LN.BUF0...M2MN. 1ae0: 42 55 46 30 0b e0 01 4d 32 4d 58 8a 42 55 46 30 BUF0...M2MX.BUF0 1af0: 0b e8 01 4d 32 4c 4e 79 5e 2e 4d 43 48 43 50 58 ...M2LNy^.MCHCPX 1b00: 42 52 0a 1a 4d 31 4d 58 7a 0c 00 00 00 10 5e 2e BR..M1MXz.....^. 1b10: 4d 43 48 43 50 58 53 5a 60 72 4d 31 4d 58 60 4d MCHCPXSZ`rM1MX`M 1b20: 32 4d 4e 72 74 4d 32 4d 58 4d 32 4d 4e 00 01 4d 2MNrtM2MXM2MN..M 1b30: 32 4c 4e 74 4d 31 4d 58 01 4d 31 4d 58 79 5e 2e 2LNtM1MX.M1MXy^. 1b40: 4d 43 48 43 54 4c 55 44 0a 14 4d 31 4d 4e 72 74 MCHCTLUD..M1MNrt 1b50: 4d 31 4d 58 4d 31 4d 4e 00 01 4d 31 4c 4e a4 42 M1MXM1MN..M1LN.B 1b60: 55 46 30 14 47 28 5f 50 52 54 00 a0 45 0f 47 50 UF0.G(_PRT..E.GP 1b70: 49 43 a4 12 4d 0e 13 12 0b 04 0c ff ff 01 00 00 IC..M........... 1b80: 00 0a 10 12 0b 04 0c ff ff 02 00 00 00 0a 10 12 ................ 1b90: 0b 04 0c ff ff 07 00 00 00 0a 10 12 0b 04 0c ff ................ 1ba0: ff 19 00 00 00 0a 14 12 0b 04 0c ff ff 1a 00 00 ................ 1bb0: 00 0a 10 12 0b 04 0c ff ff 1a 00 01 00 0a 15 12 ................ 1bc0: 0c 04 0c ff ff 1a 00 0a 02 00 0a 12 12 0b 04 0c ................ 1bd0: ff ff 1b 00 00 00 0a 16 12 0b 04 0c ff ff 1c 00 ................ 1be0: 00 00 0a 11 12 0b 04 0c ff ff 1c 00 01 00 0a 10 ................ 1bf0: 12 0c 04 0c ff ff 1c 00 0a 02 00 0a 12 12 0c 04 ................ 1c00: 0c ff ff 1c 00 0a 03 00 0a 13 12 0b 04 0c ff ff ................ 1c10: 1d 00 00 00 0a 17 12 0b 04 0c ff ff 1d 00 01 00 ................ 1c20: 0a 13 12 0c 04 0c ff ff 1d 00 0a 02 00 0a 12 12 ................ 1c30: 0b 04 0c ff ff 1f 00 00 00 0a 13 12 0b 04 0c ff ................ 1c40: ff 1f 00 01 00 0a 13 12 0c 04 0c ff ff 1f 00 0a ................ 1c50: 02 00 0a 13 12 0c 04 0c ff ff 1f 00 0a 03 00 0a ................ 1c60: 10 a1 49 18 a4 12 45 18 13 12 13 04 0c ff ff 01 ..I...E......... 1c70: 00 00 5e 2e 4c 50 43 42 4c 4e 4b 41 00 12 13 04 ..^.LPCBLNKA.... 1c80: 0c ff ff 02 00 00 5e 2e 4c 50 43 42 4c 4e 4b 41 ......^.LPCBLNKA 1c90: 00 12 13 04 0c ff ff 07 00 00 5e 2e 4c 50 43 42 ..........^.LPCB 1ca0: 4c 4e 4b 41 00 12 13 04 0c ff ff 19 00 00 5e 2e LNKA..........^. 1cb0: 4c 50 43 42 4c 4e 4b 45 00 12 13 04 0c ff ff 1a LPCBLNKE........ 1cc0: 00 00 5e 2e 4c 50 43 42 4c 4e 4b 41 00 12 13 04 ..^.LPCBLNKA.... 1cd0: 0c ff ff 1a 00 01 5e 2e 4c 50 43 42 4c 4e 4b 46 ......^.LPCBLNKF 1ce0: 00 12 14 04 0c ff ff 1a 00 0a 02 5e 2e 4c 50 43 ...........^.LPC 1cf0: 42 4c 4e 4b 43 00 12 13 04 0c ff ff 1b 00 00 5e BLNKC..........^ 1d00: 2e 4c 50 43 42 4c 4e 4b 47 00 12 13 04 0c ff ff .LPCBLNKG....... 1d10: 1c 00 00 5e 2e 4c 50 43 42 4c 4e 4b 42 00 12 13 ...^.LPCBLNKB... 1d20: 04 0c ff ff 1c 00 01 5e 2e 4c 50 43 42 4c 4e 4b .......^.LPCBLNK 1d30: 41 00 12 14 04 0c ff ff 1c 00 0a 02 5e 2e 4c 50 A...........^.LP 1d40: 43 42 4c 4e 4b 43 00 12 14 04 0c ff ff 1c 00 0a CBLNKC.......... 1d50: 03 5e 2e 4c 50 43 42 4c 4e 4b 44 00 12 13 04 0c .^.LPCBLNKD..... 1d60: ff ff 1d 00 00 5e 2e 4c 50 43 42 4c 4e 4b 48 00 .....^.LPCBLNKH. 1d70: 12 13 04 0c ff ff 1d 00 01 5e 2e 4c 50 43 42 4c .........^.LPCBL 1d80: 4e 4b 44 00 12 14 04 0c ff ff 1d 00 0a 02 5e 2e NKD...........^. 1d90: 4c 50 43 42 4c 4e 4b 43 00 12 13 04 0c ff ff 1f LPCBLNKC........ 1da0: 00 00 5e 2e 4c 50 43 42 4c 4e 4b 44 00 12 13 04 ..^.LPCBLNKD.... 1db0: 0c ff ff 1f 00 01 5e 2e 4c 50 43 42 4c 4e 4b 44 ......^.LPCBLNKD 1dc0: 00 12 14 04 0c ff ff 1f 00 0a 02 5e 2e 4c 50 43 ...........^.LPC 1dd0: 42 4c 4e 4b 44 00 12 14 04 0c ff ff 1f 00 0a 03 BLNKD........... 1de0: 5e 2e 4c 50 43 42 4c 4e 4b 41 00 5b 82 40 14 50 ^.LPCBLNKA.[.@.P 1df0: 44 52 43 08 5f 48 49 44 0c 41 d0 0c 02 08 5f 55 DRC._HID.A...._U 1e00: 49 44 01 08 42 55 46 30 11 46 06 0a 62 86 09 00 ID..BUF0.F..b... 1e10: 01 00 00 00 00 00 40 00 00 86 09 00 01 00 00 00 ......@......... 1e20: 00 00 40 00 00 86 09 00 01 00 00 00 00 00 10 00 ..@............. 1e30: 00 86 09 00 01 00 00 00 00 00 10 00 00 86 09 00 ................ 1e40: 01 00 00 00 00 00 00 00 00 86 09 00 01 00 00 d2 ................ 1e50: fe 00 00 02 00 86 09 00 01 00 00 d4 fe 00 50 00 ..............P. 1e60: 00 86 09 00 01 00 50 d4 fe 00 b0 04 00 79 00 14 ......P......y.. 1e70: 4d 0b 5f 43 52 53 08 8a 42 55 46 30 0a 04 52 42 M._CRS..BUF0..RB 1e80: 52 30 79 5e 5e 2e 4c 50 43 42 52 43 42 41 0a 0e R0y^^.LPCBRCBA.. 1e90: 52 42 52 30 8a 42 55 46 30 0a 10 4d 42 52 30 79 RBR0.BUF0..MBR0y 1ea0: 5e 5e 2e 4d 43 48 43 4d 48 42 52 0a 0e 4d 42 52 ^^.MCHCMHBR..MBR 1eb0: 30 8a 42 55 46 30 0a 1c 44 42 52 30 79 5e 5e 2e 0.BUF0..DBR0y^^. 1ec0: 4d 43 48 43 44 49 42 52 0a 0c 44 42 52 30 8a 42 MCHCDIBR..DBR0.B 1ed0: 55 46 30 0a 28 45 42 52 30 79 5e 5e 2e 4d 43 48 UF0.(EBR0y^^.MCH 1ee0: 43 45 50 42 52 0a 0c 45 42 52 30 8a 42 55 46 30 CEPBR..EBR0.BUF0 1ef0: 0a 34 58 42 52 30 79 5e 5e 2e 4d 43 48 43 50 58 .4XBR0y^^.MCHCPX 1f00: 42 52 0a 1a 58 42 52 30 8a 42 55 46 30 0a 38 58 BR..XBR0.BUF0.8X 1f10: 53 5a 30 7a 0c 00 00 00 10 5e 5e 2e 4d 43 48 43 SZ0z.....^^.MCHC 1f20: 50 58 53 5a 58 53 5a 30 a4 42 55 46 30 5b 82 4d PXSZXSZ0.BUF0[.M 1f30: 50 50 45 47 50 08 5f 41 44 52 0c 00 00 01 00 14 PPEGP._ADR...... 1f40: 41 09 5f 50 52 54 00 a0 33 47 50 49 43 a4 12 2c A._PRT..3GPIC.., 1f50: 04 12 09 04 0b ff ff 00 00 0a 10 12 09 04 0b ff ................ 1f60: ff 01 00 0a 11 12 0a 04 0b ff ff 0a 02 00 0a 12 ................ 1f70: 12 0a 04 0b ff ff 0a 03 00 0a 13 a1 45 05 a4 12 ............E... 1f80: 41 05 04 12 12 04 0b ff ff 00 5e 5e 2e 4c 50 43 A.........^^.LPC 1f90: 42 4c 4e 4b 41 00 12 12 04 0b ff ff 01 5e 5e 2e BLNKA........^^. 1fa0: 4c 50 43 42 4c 4e 4b 42 00 12 13 04 0b ff ff 0a LPCBLNKB........ 1fb0: 02 5e 5e 2e 4c 50 43 42 4c 4e 4b 43 00 12 13 04 .^^.LPCBLNKC.... 1fc0: 0b ff ff 0a 03 5e 5e 2e 4c 50 43 42 4c 4e 4b 44 .....^^.LPCBLNKD 1fd0: 00 5b 82 49 46 56 47 41 5f 08 5f 41 44 52 00 08 .[.IFVGA_._ADR.. 1fe0: 53 57 49 54 01 08 43 52 54 41 01 08 4c 43 44 41 SWIT..CRTA..LCDA 1ff0: 01 08 54 56 41 41 01 08 56 4c 44 46 01 5b 80 56 ..TVAA..VLDF.[.V 2000: 49 44 53 02 00 0a c8 5b 81 0b 56 49 44 53 03 56 IDS....[..VIDS.V 2010: 44 49 44 20 14 09 5f 53 54 41 00 a4 0a 0f 08 5f DID .._STA....._ 2020: 50 53 43 00 14 0c 5f 50 53 30 00 70 00 5f 50 53 PSC..._PS0.p._PS 2030: 43 14 0c 5f 50 53 31 00 70 01 5f 50 53 43 14 0d C.._PS1.p._PSC.. 2040: 5f 50 53 33 00 70 0a 03 5f 50 53 43 14 10 5f 44 _PS3.p.._PSC.._D 2050: 4f 53 01 70 7b 68 0a 03 00 53 57 49 54 14 17 5f OS.p{h...SWIT.._ 2060: 44 4f 44 00 a4 12 0f 03 0c 00 01 01 00 0c 10 01 DOD............. 2070: 01 00 0b 00 02 5b 82 4d 08 43 52 54 5f 14 0a 5f .....[.M.CRT_.._ 2080: 41 44 52 00 a4 0b 00 01 14 41 06 5f 44 43 53 00 ADR......A._DCS. 2090: 5e 5e 5e 5e 2e 4c 50 43 42 50 48 53 53 0a 0c 70 ^^^^.LPCBPHSS..p 20a0: 43 41 44 4c 60 70 43 53 54 45 61 7b 60 0a 02 60 CADL`pCSTEa{`..` 20b0: 7b 61 0a 02 61 a0 08 60 70 01 43 52 54 41 a1 07 {a..a..`p.CRTA.. 20c0: 70 00 43 52 54 41 a0 13 43 52 54 41 a0 08 93 61 p.CRTA..CRTA...a 20d0: 0a 02 a4 0a 1f a1 04 a4 0a 1d a1 0f a0 08 93 61 ...............a 20e0: 0a 02 a4 0a 0f a1 04 a4 0a 0d 14 12 5f 44 47 53 ............_DGS 20f0: 00 a0 07 43 52 54 41 a4 01 a1 03 a4 00 14 06 5f ...CRTA........_ 2100: 44 53 53 01 5b 82 47 0e 4c 43 44 5f 14 0a 5f 41 DSS.[.G.LCD_.._A 2110: 44 52 00 a4 0b 10 01 14 4d 05 5f 44 43 53 00 5e DR......M._DCS.^ 2120: 5e 5e 5e 2e 4c 50 43 42 50 48 53 53 0a 0c 70 43 ^^^.LPCBPHSS..pC 2130: 41 44 4c 60 70 43 53 54 45 61 7b 60 01 60 7b 61 ADL`pCSTEa{`.`{a 2140: 01 61 a0 08 60 70 01 4c 43 44 41 a1 07 70 00 4c .a..`p.LCDA..p.L 2150: 43 44 41 a0 12 4c 43 44 41 a0 07 93 61 01 a4 0a CDA..LCDA...a... 2160: 1f a1 04 a4 0a 1d a1 0e a0 07 93 61 01 a4 0a 0f ...........a.... 2170: a1 04 a4 0a 0d 14 12 5f 44 47 53 00 a0 07 4c 43 ......._DGS...LC 2180: 44 41 a4 01 a1 03 a4 00 14 06 5f 44 53 53 01 14 DA........_DSS.. 2190: 1d 5f 42 43 4c 00 a4 12 15 0a 0a 46 0a 28 00 0a ._BCL......F.(.. 21a0: 0a 0a 14 0a 1e 0a 28 0a 32 0a 3c 0a 46 14 20 5f ......(.2.<.F. _ 21b0: 42 43 4d 01 78 68 0a 0a 60 61 70 61 5e 5e 5e 5e BCM.xh..`apa^^^^ 21c0: 2f 03 4c 50 43 42 45 43 30 5f 42 52 54 53 14 1e /.LPCBEC0_BRTS.. 21d0: 5f 42 51 43 00 77 5e 5e 5e 5e 2f 03 4c 50 43 42 _BQC.w^^^^/.LPCB 21e0: 45 43 30 5f 42 52 54 53 0a 0a 60 a4 60 5b 82 4d EC0_BRTS..`.`[.M 21f0: 08 54 56 5f 5f 14 0a 5f 41 44 52 00 a4 0b 00 02 .TV__.._ADR..... 2200: 14 41 06 5f 44 43 53 00 5e 5e 5e 5e 2e 4c 50 43 .A._DCS.^^^^.LPC 2210: 42 50 48 53 53 0a 0c 70 43 41 44 4c 60 70 43 53 BPHSS..pCADL`pCS 2220: 54 45 61 7b 60 0a 04 60 7b 61 0a 04 61 a0 08 60 TEa{`..`{a..a..` 2230: 70 01 54 56 41 41 a1 07 70 00 54 56 41 41 a0 13 p.TVAA..p.TVAA.. 2240: 54 56 41 41 a0 08 93 61 0a 04 a4 0a 1f a1 04 a4 TVAA...a........ 2250: 0a 1d a1 0f a0 08 93 61 0a 04 a4 0a 0f a1 04 a4 .......a........ 2260: 0a 0d 14 12 5f 44 47 53 00 a0 07 54 56 41 41 a4 ...._DGS...TVAA. 2270: 01 a1 03 a4 00 14 06 5f 44 53 53 01 14 49 10 44 ......._DSS..I.D 2280: 53 53 57 00 a0 4a 0e 93 53 57 49 54 00 5e 5e 5e SSW..J..SWIT.^^^ 2290: 2e 4c 50 43 42 50 48 53 53 0a 0c 70 43 41 44 4c .LPCBPHSS..pCADL 22a0: 60 70 43 53 54 45 61 a0 16 94 61 01 7b 60 61 56 `pCSTEa...a.{`aV 22b0: 4c 44 46 7b 56 4c 44 46 0a fe 56 4c 44 46 a0 43 LDF{VLDF..VLDF.C 22c0: 0a 56 4c 44 46 a0 27 93 60 0a 09 a0 0b 93 61 0a .VLDF.'.`.....a. 22d0: 08 53 54 42 4c 0a 02 a0 0a 93 61 01 53 54 42 4c .STBL.....a.STBL 22e0: 0a 03 a0 0a 93 61 0a 09 53 54 42 4c 01 a0 28 93 .....a..STBL..(. 22f0: 60 0a 0a a0 0b 93 61 0a 08 53 54 42 4c 0a 05 a0 `.....a..STBL... 2300: 0a 93 61 0a 02 53 54 42 4c 01 a0 0b 93 61 0a 0a ..a..STBL....a.. 2310: 53 54 42 4c 0a 04 a0 4b 04 93 60 0a 0b a0 0b 93 STBL...K..`..... 2320: 61 0a 08 53 54 42 4c 0a 02 a0 0b 93 61 0a 09 53 a..STBL.....a..S 2330: 54 42 4c 0a 05 a0 0a 93 61 01 53 54 42 4c 0a 03 TBL.....a.STBL.. 2340: a0 0b 93 61 0a 0a 53 54 42 4c 0a 04 a0 0a 93 61 ...a..STBL.....a 2350: 0a 02 53 54 42 4c 01 a0 0a 93 61 0a 0b 53 54 42 ..STBL....a..STB 2360: 4c 01 a1 0c 70 01 56 4c 44 46 53 54 42 4c 01 a1 L...p.VLDFSTBL.. 2370: 16 a0 14 93 53 57 49 54 01 5e 5e 5e 2e 4c 50 43 ....SWIT.^^^.LPC 2380: 42 50 48 53 53 01 14 45 0b 53 54 42 4c 01 a0 16 BPHSS..E.STBL... 2390: 93 68 01 70 00 43 52 54 41 70 01 4c 43 44 41 70 .h.p.CRTAp.LCDAp 23a0: 00 54 56 41 41 a0 17 93 68 0a 02 70 01 43 52 54 .TVAA...h..p.CRT 23b0: 41 70 00 4c 43 44 41 70 00 54 56 41 41 a0 17 93 Ap.LCDAp.TVAA... 23c0: 68 0a 03 70 01 43 52 54 41 70 01 4c 43 44 41 70 h..p.CRTAp.LCDAp 23d0: 00 54 56 41 41 a0 17 93 68 0a 04 70 00 43 52 54 .TVAA...h..p.CRT 23e0: 41 70 00 4c 43 44 41 70 01 54 56 41 41 a0 17 93 Ap.LCDAp.TVAA... 23f0: 68 0a 05 70 00 43 52 54 41 70 01 4c 43 44 41 70 h..p.CRTAp.LCDAp 2400: 01 54 56 41 41 a0 17 93 68 0a 06 70 01 43 52 54 .TVAA...h..p.CRT 2410: 41 70 00 4c 43 44 41 70 01 54 56 41 41 a0 17 93 Ap.LCDAp.TVAA... 2420: 68 0a 07 70 01 43 52 54 41 70 01 4c 43 44 41 70 h..p.CRTAp.LCDAp 2430: 01 54 56 41 41 86 56 47 41 5f 0a 80 5b 82 42 f8 .TVAA.VGA_..[.B. 2440: 47 46 58 30 08 5f 41 44 52 0c 00 00 02 00 14 10 GFX0._ADR....... 2450: 5f 44 4f 53 01 70 7b 68 0a 07 00 44 53 45 4e 14 _DOS.p{h...DSEN. 2460: 41 26 5f 44 4f 44 00 70 00 4e 44 49 44 a0 15 92 A&_DOD.p.NDID... 2470: 93 44 49 44 4c 00 70 53 44 44 4c 44 49 44 31 44 .DIDL.pSDDLDID1D 2480: 49 44 31 a0 15 92 93 44 44 4c 32 00 70 53 44 44 ID1....DDL2.pSDD 2490: 4c 44 49 44 32 44 49 44 32 a0 15 92 93 44 44 4c LDID2DID2....DDL 24a0: 33 00 70 53 44 44 4c 44 49 44 33 44 49 44 33 a0 3.pSDDLDID3DID3. 24b0: 15 92 93 44 44 4c 34 00 70 53 44 44 4c 44 49 44 ...DDL4.pSDDLDID 24c0: 34 44 49 44 34 a0 15 92 93 44 44 4c 35 00 70 53 4DID4....DDL5.pS 24d0: 44 44 4c 44 49 44 35 44 49 44 35 a0 2c 93 4e 44 DDLDID5DID5.,.ND 24e0: 49 44 01 08 54 4d 50 31 12 07 01 0c ff ff ff ff ID..TMP1........ 24f0: 70 7d 0c 00 00 01 00 44 49 44 31 00 88 54 4d 50 p}.....DID1..TMP 2500: 31 00 00 a4 54 4d 50 31 a0 46 04 93 4e 44 49 44 1...TMP1.F..NDID 2510: 0a 02 08 54 4d 50 32 12 0c 02 0c ff ff ff ff 0c ...TMP2......... 2520: ff ff ff ff 70 7d 0c 00 00 01 00 44 49 44 31 00 ....p}.....DID1. 2530: 88 54 4d 50 32 00 00 70 7d 0c 00 00 01 00 44 49 .TMP2..p}.....DI 2540: 44 32 00 88 54 4d 50 32 01 00 a4 54 4d 50 32 a0 D2..TMP2...TMP2. 2550: 4f 05 93 4e 44 49 44 0a 03 08 54 4d 50 33 12 11 O..NDID...TMP3.. 2560: 03 0c ff ff ff ff 0c ff ff ff ff 0c ff ff ff ff ................ 2570: 70 7d 0c 00 00 01 00 44 49 44 31 00 88 54 4d 50 p}.....DID1..TMP 2580: 33 00 00 70 7d 0c 00 00 01 00 44 49 44 32 00 88 3..p}.....DID2.. 2590: 54 4d 50 33 01 00 70 7d 0c 00 00 01 00 44 49 44 TMP3..p}.....DID 25a0: 33 00 88 54 4d 50 33 0a 02 00 a4 54 4d 50 33 a0 3..TMP3....TMP3. 25b0: 48 07 93 4e 44 49 44 0a 04 08 54 4d 50 34 12 16 H..NDID...TMP4.. 25c0: 04 0c ff ff ff ff 0c ff ff ff ff 0c ff ff ff ff ................ 25d0: 0c ff ff ff ff 70 7d 0c 00 00 01 00 44 49 44 31 .....p}.....DID1 25e0: 00 88 54 4d 50 34 00 00 70 7d 0c 00 00 01 00 44 ..TMP4..p}.....D 25f0: 49 44 32 00 88 54 4d 50 34 01 00 70 7d 0c 00 00 ID2..TMP4..p}... 2600: 01 00 44 49 44 33 00 88 54 4d 50 34 0a 02 00 70 ..DID3..TMP4...p 2610: 7d 0c 00 00 01 00 44 49 44 34 00 88 54 4d 50 34 }.....DID4..TMP4 2620: 0a 03 00 a4 54 4d 50 34 a0 41 09 94 4e 44 49 44 ....TMP4.A..NDID 2630: 0a 04 08 54 4d 50 35 12 1b 05 0c ff ff ff ff 0c ...TMP5......... 2640: ff ff ff ff 0c ff ff ff ff 0c ff ff ff ff 0c ff ................ 2650: ff ff ff 70 7d 0c 00 00 01 00 44 49 44 31 00 88 ...p}.....DID1.. 2660: 54 4d 50 35 00 00 70 7d 0c 00 00 01 00 44 49 44 TMP5..p}.....DID 2670: 32 00 88 54 4d 50 35 01 00 70 7d 0c 00 00 01 00 2..TMP5..p}..... 2680: 44 49 44 33 00 88 54 4d 50 35 0a 02 00 70 7d 0c DID3..TMP5...p}. 2690: 00 00 01 00 44 49 44 34 00 88 54 4d 50 35 0a 03 ....DID4..TMP5.. 26a0: 00 70 7d 0c 00 00 01 00 44 49 44 34 00 88 54 4d .p}.....DID4..TM 26b0: 50 35 0a 04 00 a4 54 4d 50 35 a4 12 05 01 0b 00 P5....TMP5...... 26c0: 04 5b 82 43 06 44 44 30 31 14 1c 5f 41 44 52 08 .[.C.DD01.._ADR. 26d0: a0 09 93 44 49 44 31 00 a4 01 a1 0b a4 7b 0b ff ...DID1......{.. 26e0: ff 44 49 44 31 00 14 0f 5f 44 43 53 00 a4 43 44 .DID1..._DCS..CD 26f0: 44 53 44 49 44 31 14 0f 5f 44 47 53 00 a4 4e 44 DSDID1.._DGS..ND 2700: 44 53 44 49 44 31 14 1f 5f 44 53 53 01 a0 18 93 DSDID1.._DSS.... 2710: 7b 68 0c 00 00 00 c0 00 0c 00 00 00 c0 70 4e 53 {h...........pNS 2720: 54 45 43 53 54 45 5b 82 44 06 44 44 30 32 14 1d TECSTE[.D.DD02.. 2730: 5f 41 44 52 08 a0 0a 93 44 49 44 32 00 a4 0a 02 _ADR....DID2.... 2740: a1 0b a4 7b 0b ff ff 44 49 44 32 00 14 0f 5f 44 ...{...DID2..._D 2750: 43 53 00 a4 43 44 44 53 44 49 44 32 14 0f 5f 44 CS..CDDSDID2.._D 2760: 47 53 00 a4 4e 44 44 53 44 49 44 32 14 1f 5f 44 GS..NDDSDID2.._D 2770: 53 53 01 a0 18 93 7b 68 0c 00 00 00 c0 00 0c 00 SS....{h........ 2780: 00 00 c0 70 4e 53 54 45 43 53 54 45 5b 82 41 07 ...pNSTECSTE[.A. 2790: 44 44 30 33 14 1d 5f 41 44 52 08 a0 0a 93 44 49 DD03.._ADR....DI 27a0: 44 33 00 a4 0a 03 a1 0b a4 7b 0b ff ff 44 49 44 D3.......{...DID 27b0: 33 00 14 1c 5f 44 43 53 00 a0 0a 93 44 49 44 33 3..._DCS....DID3 27c0: 00 a4 0a 0b a1 0a a4 43 44 44 53 44 49 44 33 14 .......CDDSDID3. 27d0: 0f 5f 44 47 53 00 a4 4e 44 44 53 44 49 44 33 14 ._DGS..NDDSDID3. 27e0: 1f 5f 44 53 53 01 a0 18 93 7b 68 0c 00 00 00 c0 ._DSS....{h..... 27f0: 00 0c 00 00 00 c0 70 4e 53 54 45 43 53 54 45 5b ......pNSTECSTE[ 2800: 82 41 07 44 44 30 34 14 1d 5f 41 44 52 08 a0 0a .A.DD04.._ADR... 2810: 93 44 49 44 34 00 a4 0a 04 a1 0b a4 7b 0b ff ff .DID4.......{... 2820: 44 49 44 34 00 14 1c 5f 44 43 53 00 a0 0a 93 44 DID4..._DCS....D 2830: 49 44 34 00 a4 0a 0b a1 0a a4 43 44 44 53 44 49 ID4.......CDDSDI 2840: 44 34 14 0f 5f 44 47 53 00 a4 4e 44 44 53 44 49 D4.._DGS..NDDSDI 2850: 44 34 14 1f 5f 44 53 53 01 a0 18 93 7b 68 0c 00 D4.._DSS....{h.. 2860: 00 00 c0 00 0c 00 00 00 c0 70 4e 53 54 45 43 53 .........pNSTECS 2870: 54 45 5b 82 41 07 44 44 30 35 14 1d 5f 41 44 52 TE[.A.DD05.._ADR 2880: 08 a0 0a 93 44 49 44 35 00 a4 0a 05 a1 0b a4 7b ....DID5.......{ 2890: 0b ff ff 44 49 44 35 00 14 1c 5f 44 43 53 00 a0 ...DID5..._DCS.. 28a0: 0a 93 44 49 44 35 00 a4 0a 0b a1 0a a4 43 44 44 ..DID5.......CDD 28b0: 53 44 49 44 35 14 0f 5f 44 47 53 00 a4 4e 44 44 SDID5.._DGS..NDD 28c0: 53 44 49 44 35 14 1f 5f 44 53 53 01 a0 18 93 7b SDID5.._DSS....{ 28d0: 68 0c 00 00 00 c0 00 0c 00 00 00 c0 70 4e 53 54 h...........pNST 28e0: 45 43 53 54 45 14 4e 06 53 44 44 4c 01 75 4e 44 ECSTE.N.SDDL.uND 28f0: 49 44 70 7b 68 0b 0f 0f 00 60 7d 0c 00 00 00 80 IDp{h....`}..... 2900: 60 61 a0 09 93 44 49 44 4c 60 a4 61 a0 09 93 44 `a...DIDL`.a...D 2910: 44 4c 32 60 a4 61 a0 09 93 44 44 4c 33 60 a4 61 DL2`.a...DDL3`.a 2920: a0 09 93 44 44 4c 34 60 a4 61 a0 09 93 44 44 4c ...DDL4`.a...DDL 2930: 35 60 a4 61 a0 09 93 44 44 4c 36 60 a4 61 a0 09 5`.a...DDL6`.a.. 2940: 93 44 44 4c 37 60 a4 61 a0 09 93 44 44 4c 38 60 .DDL7`.a...DDL8` 2950: a4 61 a4 00 14 4a 08 43 44 44 53 01 a0 0f 93 43 .a...J.CDDS....C 2960: 41 44 4c 7b 68 0b 0f 0f 00 a4 0a 1f a0 0f 93 43 ADL{h..........C 2970: 41 4c 32 7b 68 0b 0f 0f 00 a4 0a 1f a0 0f 93 43 AL2{h..........C 2980: 41 4c 33 7b 68 0b 0f 0f 00 a4 0a 1f a0 0f 93 43 AL3{h..........C 2990: 41 4c 34 7b 68 0b 0f 0f 00 a4 0a 1f a0 0f 93 43 AL4{h..........C 29a0: 41 4c 35 7b 68 0b 0f 0f 00 a4 0a 1f a0 0f 93 43 AL5{h..........C 29b0: 41 4c 36 7b 68 0b 0f 0f 00 a4 0a 1f a0 0f 93 43 AL6{h..........C 29c0: 41 4c 37 7b 68 0b 0f 0f 00 a4 0a 1f a0 0f 93 43 AL7{h..........C 29d0: 41 4c 38 7b 68 0b 0f 0f 00 a4 0a 1f a4 0a 1d 14 AL8{h........... 29e0: 41 08 4e 44 44 53 01 a0 0e 93 4e 41 44 4c 7b 68 A.NDDS....NADL{h 29f0: 0b 0f 0f 00 a4 01 a0 0e 93 4e 44 4c 32 7b 68 0b .........NDL2{h. 2a00: 0f 0f 00 a4 01 a0 0e 93 4e 44 4c 33 7b 68 0b 0f ........NDL3{h.. 2a10: 0f 00 a4 01 a0 0e 93 4e 44 4c 34 7b 68 0b 0f 0f .......NDL4{h... 2a20: 00 a4 01 a0 0e 93 4e 44 4c 35 7b 68 0b 0f 0f 00 ......NDL5{h.... 2a30: a4 01 a0 0e 93 4e 44 4c 36 7b 68 0b 0f 0f 00 a4 .....NDL6{h..... 2a40: 01 a0 0e 93 4e 44 4c 37 7b 68 0b 0f 0f 00 a4 01 ....NDL7{h...... 2a50: a0 0e 93 4e 44 4c 38 7b 68 0b 0f 0f 00 a4 01 a4 ...NDL8{h....... 2a60: 00 14 40 07 42 52 54 4e 09 a0 14 93 7b 44 49 44 ..@.BRTN....{DID 2a70: 31 0b 00 0f 00 0b 00 04 86 44 44 30 31 68 a0 14 1........DD01h.. 2a80: 93 7b 44 49 44 32 0b 00 0f 00 0b 00 04 86 44 44 .{DID2........DD 2a90: 30 32 68 a0 14 93 7b 44 49 44 33 0b 00 0f 00 0b 02h...{DID3..... 2aa0: 00 04 86 44 44 30 33 68 a0 14 93 7b 44 49 44 34 ...DD03h...{DID4 2ab0: 0b 00 0f 00 0b 00 04 86 44 44 30 34 68 a0 14 93 ........DD04h... 2ac0: 7b 44 49 44 35 0b 00 0f 00 0b 00 04 86 44 44 30 {DID5........DD0 2ad0: 35 68 10 24 5e 5e 50 43 49 30 5b 80 4d 43 48 50 5h.$^^PCI0[.MCHP 2ae0: 02 0a 40 0a c0 5b 81 10 4d 43 48 50 00 00 40 30 ..@..[..MCHP..@0 2af0: 54 41 53 4d 0a 00 06 5b 80 49 47 44 50 02 0a 40 TASM...[.IGDP..@ 2b00: 0a c0 5b 81 45 05 49 47 44 50 00 00 40 09 00 01 ..[.E.IGDP..@... 2b10: 47 49 56 44 01 00 02 47 55 4d 41 03 00 09 00 04 GIVD...GUMA..... 2b20: 47 4d 46 4e 01 00 1b 00 40 46 41 53 4c 45 08 00 GMFN....@FASLE.. 2b30: 18 47 53 53 45 01 47 53 53 42 0e 47 53 45 53 01 .GSSE.GSSB.GSES. 2b40: 00 30 00 08 43 44 56 4c 05 00 03 00 18 4c 42 50 .0..CDVL.....LBP 2b50: 43 08 00 30 41 53 4c 53 20 5b 80 49 47 44 4d 00 C..0ASLS [.IGDM. 2b60: 41 53 4c 42 0b 00 20 5b 81 4e 16 49 47 44 4d 00 ASLB.. [.N.IGDM. 2b70: 53 49 47 4e 40 08 53 49 5a 45 20 4f 56 45 52 20 SIGN@.SIZE OVER 2b80: 53 56 45 52 40 10 56 56 45 52 40 08 47 56 45 52 SVER@.VVER@.GVER 2b90: 40 08 4d 42 4f 58 20 00 40 52 44 52 44 59 20 43 @.MBOX .@RDRDY C 2ba0: 53 54 53 20 43 45 56 54 20 00 40 0a 44 49 44 4c STS CEVT .@.DIDL 2bb0: 20 44 44 4c 32 20 44 44 4c 33 20 44 44 4c 34 20 DDL2 DDL3 DDL4 2bc0: 44 44 4c 35 20 44 44 4c 36 20 44 44 4c 37 20 44 DDL5 DDL6 DDL7 D 2bd0: 44 4c 38 20 43 50 44 4c 20 43 50 4c 32 20 43 50 DL8 CPDL CPL2 CP 2be0: 4c 33 20 43 50 4c 34 20 43 50 4c 35 20 43 50 4c L3 CPL4 CPL5 CPL 2bf0: 36 20 43 50 4c 37 20 43 50 4c 38 20 43 41 44 4c 6 CPL7 CPL8 CADL 2c00: 20 43 41 4c 32 20 43 41 4c 33 20 43 41 4c 34 20 CAL2 CAL3 CAL4 2c10: 43 41 4c 35 20 43 41 4c 36 20 43 41 4c 37 20 43 CAL5 CAL6 CAL7 C 2c20: 41 4c 38 20 4e 41 44 4c 20 4e 44 4c 32 20 4e 44 AL8 NADL NDL2 ND 2c30: 4c 33 20 4e 44 4c 34 20 4e 44 4c 35 20 4e 44 4c L3 NDL4 NDL5 NDL 2c40: 36 20 4e 44 4c 37 20 4e 44 4c 38 20 41 53 4c 50 6 NDL7 NDL8 ASLP 2c50: 20 54 49 44 58 20 43 48 50 44 20 43 4c 49 44 20 TIDX CHPD CLID 2c60: 43 44 43 4b 20 53 58 53 57 20 45 56 54 53 20 43 CDCK SXSW EVTS C 2c70: 4e 4f 54 20 4e 52 44 59 20 00 40 1e 53 43 49 45 NOT NRDY .@.SCIE 2c80: 01 47 45 46 43 04 47 58 46 43 03 47 45 53 46 08 .GEFC.GXFC.GESF. 2c90: 00 10 50 41 52 4d 20 44 53 4c 50 20 00 40 7a 41 ..PARM DSLP .@zA 2ca0: 52 44 59 20 41 53 4c 43 20 54 43 48 45 20 41 4c RDY ASLC TCHE AL 2cb0: 53 49 20 42 43 4c 50 20 50 46 49 54 20 43 42 4c SI BCLP PFIT CBL 2cc0: 56 20 42 43 4c 4d 40 14 43 50 46 4d 20 00 40 5c V BCLM@.CPFM .@\ 2cd0: 47 56 44 31 80 00 0e 08 44 42 54 42 12 32 15 00 GVD1....DBTB.2.. 2ce0: 0a 07 0a 38 0b c0 01 0b 00 0e 0a 3f 0b c7 01 0b ...8.......?.... 2cf0: 07 0e 0b f8 01 0b 38 0e 0b c0 0f 00 00 00 00 00 ......8......... 2d00: 0b 00 70 0b 07 70 0b 38 70 0b c0 71 0b 00 7e 08 ..p..p.8p..q..~. 2d10: 43 44 43 54 12 23 03 12 0a 03 0a c8 0b 40 01 0b CDCT.#.......@.. 2d20: 90 01 12 0a 03 0a c8 0b 4d 01 0b 90 01 12 0a 03 ........M....... 2d30: 0a de 0b 4d 01 0b 7d 01 08 53 55 43 43 01 08 4e ...M..}..SUCC..N 2d40: 56 4c 44 0a 02 08 43 52 49 54 0a 04 08 4e 43 52 VLD...CRIT...NCR 2d50: 54 0a 06 14 4c 4a 47 53 43 49 08 14 44 1e 47 42 T...LJGSCI..D.GB 2d60: 44 41 08 a0 1a 93 47 45 53 46 00 70 0b 79 02 50 DA....GESF.p.y.P 2d70: 41 52 4d 70 00 47 45 53 46 a4 53 55 43 43 a0 1a ARMp.GESF.SUCC.. 2d80: 93 47 45 53 46 01 70 0b 40 02 50 41 52 4d 70 00 .GESF.p.@.PARMp. 2d90: 47 45 53 46 a4 53 55 43 43 a0 47 04 93 47 45 53 GESF.SUCC.G..GES 2da0: 46 0a 04 7b 50 41 52 4d 0c 00 00 ff ef 50 41 52 F..{PARM.....PAR 2db0: 4d 7b 50 41 52 4d 79 83 88 44 42 54 42 49 42 54 M{PARMy..DBTBIBT 2dc0: 54 00 0a 10 00 50 41 52 4d 7d 49 42 54 54 50 41 T....PARM}IBTTPA 2dd0: 52 4d 50 41 52 4d 70 00 47 45 53 46 a4 53 55 43 RMPARMp.GESF.SUC 2de0: 43 a0 4a 06 93 47 45 53 46 0a 05 70 49 50 53 43 C.J..GESF..pIPSC 2df0: 50 41 52 4d 7d 50 41 52 4d 79 49 50 41 54 0a 08 PARM}PARMyIPAT.. 2e00: 00 50 41 52 4d 72 50 41 52 4d 0b 00 01 50 41 52 .PARMrPARM...PAR 2e10: 4d 7d 50 41 52 4d 79 4c 49 44 53 0a 10 00 50 41 M}PARMyLIDS...PA 2e20: 52 4d 72 50 41 52 4d 0c 00 00 01 00 50 41 52 4d RMrPARM.....PARM 2e30: 7d 50 41 52 4d 79 49 42 49 41 0a 14 00 50 41 52 }PARMyIBIA...PAR 2e40: 4d 70 00 47 45 53 46 a4 53 55 43 43 a0 2d 93 47 Mp.GESF.SUCC.-.G 2e50: 45 53 46 0a 06 70 49 54 56 46 50 41 52 4d 7d 50 ESF..pITVFPARM}P 2e60: 41 52 4d 79 49 54 56 4d 0a 04 00 50 41 52 4d 70 ARMyITVM...PARMp 2e70: 00 47 45 53 46 a4 53 55 43 43 a0 4f 08 93 47 45 .GESF.SUCC.O..GE 2e80: 53 46 0a 07 70 47 49 56 44 50 41 52 4d 7f 50 41 SF..pGIVDPARM.PA 2e90: 52 4d 01 50 41 52 4d 7d 50 41 52 4d 79 47 4d 46 RM.PARM}PARMyGMF 2ea0: 4e 01 00 50 41 52 4d 7d 50 41 52 4d 0b 00 10 50 N..PARM}PARM...P 2eb0: 41 52 4d a0 16 49 44 4d 4d 7d 50 41 52 4d 79 49 ARM..IDMM}PARMyI 2ec0: 44 4d 53 0a 11 00 50 41 52 4d a1 12 7d 50 41 52 DMS...PARM..}PAR 2ed0: 4d 79 49 44 4d 53 0a 0d 00 50 41 52 4d 7d 79 83 MyIDMS...PARM}y. 2ee0: 88 83 88 43 44 43 54 48 56 43 4f 00 74 43 44 56 ...CDCTHVCO.tCDV 2ef0: 4c 01 00 00 0a 15 00 50 41 52 4d 50 41 52 4d 70 L......PARMPARMp 2f00: 01 47 45 53 46 a4 53 55 43 43 a0 2a 93 47 45 53 .GESF.SUCC.*.GES 2f10: 46 0a 0a 70 00 50 41 52 4d a0 10 49 53 53 43 7d F..p.PARM..ISSC} 2f20: 50 41 52 4d 0a 03 50 41 52 4d 70 00 47 45 53 46 PARM..PARMp.GESF 2f30: a4 53 55 43 43 70 00 47 45 53 46 a4 43 52 49 54 .SUCCp.GESF.CRIT 2f40: 14 41 28 53 42 43 42 08 a0 20 93 47 45 53 46 00 .A(SBCB.. .GESF. 2f50: 70 00 50 41 52 4d 70 0b 7d f7 50 41 52 4d 70 00 p.PARMp.}.PARMp. 2f60: 47 45 53 46 a4 53 55 43 43 a0 18 93 47 45 53 46 GESF.SUCC...GESF 2f70: 01 70 00 47 45 53 46 70 00 50 41 52 4d a4 53 55 .p.GESFp.PARM.SU 2f80: 43 43 a0 19 93 47 45 53 46 0a 03 70 00 47 45 53 CC...GESF..p.GES 2f90: 46 70 00 50 41 52 4d a4 53 55 43 43 a0 19 93 47 Fp.PARM.SUCC...G 2fa0: 45 53 46 0a 04 70 00 47 45 53 46 70 00 50 41 52 ESF..p.GESFp.PAR 2fb0: 4d a4 53 55 43 43 a0 19 93 47 45 53 46 0a 05 70 M.SUCC...GESF..p 2fc0: 00 47 45 53 46 70 00 50 41 52 4d a4 53 55 43 43 .GESFp.PARM.SUCC 2fd0: a0 37 93 47 45 53 46 0a 06 70 7b 50 41 52 4d 0a .7.GESF..p{PARM. 2fe0: 0f 00 49 54 56 46 70 7a 7b 50 41 52 4d 0a f0 00 ..ITVFpz{PARM... 2ff0: 0a 04 00 49 54 56 4d 70 00 47 45 53 46 70 00 50 ...ITVMp.GESFp.P 3000: 41 52 4d a4 53 55 43 43 a0 19 93 47 45 53 46 0a ARM.SUCC...GESF. 3010: 07 70 00 47 45 53 46 70 00 50 41 52 4d a4 53 55 .p.GESFp.PARM.SU 3020: 43 43 a0 19 93 47 45 53 46 0a 08 70 00 47 45 53 CC...GESF..p.GES 3030: 46 70 00 50 41 52 4d a4 53 55 43 43 a0 24 93 47 Fp.PARM.SUCC.$.G 3040: 45 53 46 0a 09 7b 50 41 52 4d 0a ff 49 42 54 54 ESF..{PARM..IBTT 3050: 70 00 47 45 53 46 70 00 50 41 52 4d a4 53 55 43 p.GESFp.PARM.SUC 3060: 43 a0 46 05 93 47 45 53 46 0a 0a 7b 50 41 52 4d C.F..GESF..{PARM 3070: 0a ff 49 50 53 43 a0 21 7b 7a 50 41 52 4d 0a 08 ..IPSC.!{zPARM.. 3080: 00 0a ff 00 7b 7a 50 41 52 4d 0a 08 00 0a ff 49 ....{zPARM.....I 3090: 50 41 54 76 49 50 41 54 7b 7a 50 41 52 4d 0a 14 PATvIPAT{zPARM.. 30a0: 00 0a 07 49 42 49 41 70 00 47 45 53 46 70 00 50 ...IBIAp.GESFp.P 30b0: 41 52 4d a4 53 55 43 43 a0 40 06 93 47 45 53 46 ARM.SUCC.@..GESF 30c0: 0a 0b 7b 7a 50 41 52 4d 01 00 01 49 46 31 45 a0 ..{zPARM...IF1E. 30d0: 21 7b 50 41 52 4d 0c 00 e0 01 00 00 7b 7a 50 41 !{PARM......{zPA 30e0: 52 4d 0a 0d 00 0a 0f 49 44 4d 53 70 00 49 44 4d RM.....IDMSp.IDM 30f0: 4d a1 16 7b 7a 50 41 52 4d 0a 11 00 0a 0f 49 44 M..{zPARM.....ID 3100: 4d 53 70 01 49 44 4d 4d 70 00 47 45 53 46 70 00 MSp.IDMMp.GESFp. 3110: 50 41 52 4d a4 53 55 43 43 a0 19 93 47 45 53 46 PARM.SUCC...GESF 3120: 0a 10 70 00 47 45 53 46 70 00 50 41 52 4d a4 53 ..p.GESFp.PARM.S 3130: 55 43 43 a0 1f 93 47 45 53 46 0a 11 7d 50 41 52 UCC...GESF..}PAR 3140: 4d 0b 00 01 50 41 52 4d 70 00 47 45 53 46 a4 53 M...PARMp.GESF.S 3150: 55 43 43 a0 49 04 93 47 45 53 46 0a 12 a0 26 7b UCC.I..GESF...&{ 3160: 50 41 52 4d 01 00 a0 10 93 7a 50 41 52 4d 01 00 PARM.....zPARM.. 3170: 01 70 01 49 53 53 43 a1 0c 70 00 47 45 53 46 a4 .p.ISSC..p.GESF. 3180: 43 52 49 54 a1 07 70 00 49 53 53 43 70 00 47 45 CRIT..p.ISSCp.GE 3190: 53 46 70 00 50 41 52 4d a4 53 55 43 43 a0 19 93 SFp.PARM.SUCC... 31a0: 47 45 53 46 0a 13 70 00 47 45 53 46 70 00 50 41 GESF..p.GESFp.PA 31b0: 52 4d a4 53 55 43 43 70 00 47 45 53 46 a4 53 55 RM.SUCCp.GESF.SU 31c0: 43 43 a0 11 93 47 45 46 43 0a 04 70 47 42 44 41 CC...GEFC..pGBDA 31d0: 47 58 46 43 a0 11 93 47 45 46 43 0a 06 70 53 42 GXFC...GEFC..pSB 31e0: 43 42 47 58 46 43 70 00 47 45 46 43 70 01 53 43 CBGXFCp.GEFCp.SC 31f0: 49 53 70 00 47 53 53 45 70 00 53 43 49 45 a4 00 ISp.GSSEp.SCIE.. 3200: 14 19 50 44 52 44 00 a0 0c 92 44 52 44 59 5b 22 ..PDRD....DRDY[" 3210: 41 53 4c 50 a4 92 44 52 44 59 14 1d 50 53 54 53 ASLP..DRDY..PSTS 3220: 00 a0 0e 94 43 53 54 53 0a 02 5b 22 41 53 4c 50 ....CSTS..["ASLP 3230: a4 93 43 53 54 53 0a 03 14 47 06 47 4e 4f 54 02 ..CSTS...G.GNOT. 3240: a0 07 50 44 52 44 a4 01 a0 07 50 53 54 53 a4 01 ..PDRD....PSTS.. 3250: 70 68 43 45 56 54 70 0a 03 43 53 54 53 a0 2c 90 phCEVTp..CSTS.,. 3260: 93 43 48 50 44 00 93 69 00 a0 18 91 94 4f 53 59 .CHPD..i.....OSY 3270: 53 0b d0 07 95 4f 53 59 53 0b d6 07 86 50 43 49 S....OSYS....PCI 3280: 30 69 a1 07 86 47 46 58 30 69 86 47 46 58 30 0a 0i...GFX0i.GFX0. 3290: 80 a0 0c 92 50 53 54 53 70 00 43 45 56 54 a4 00 ....PSTSp.CEVT.. 32a0: 14 13 47 48 44 53 01 70 68 54 49 44 58 a4 47 4e ..GHDS.phTIDX.GN 32b0: 4f 54 01 00 14 14 47 4c 49 44 01 70 68 43 4c 49 OT....GLID.phCLI 32c0: 44 a4 47 4e 4f 54 0a 02 00 14 15 47 44 43 4b 01 D.GNOT.....GDCK. 32d0: 70 68 43 44 43 4b a4 47 4e 4f 54 0a 04 0a 80 14 phCDCK.GNOT..... 32e0: 19 50 41 52 44 00 a0 0c 92 41 52 44 59 5b 22 41 .PARD....ARDY["A 32f0: 53 4c 50 a4 92 41 52 44 59 14 46 0c 41 49 4e 54 SLP..ARDY.F.AINT 3300: 02 a0 0e 92 7b 54 43 48 45 79 01 68 00 00 a4 01 ....{TCHEy.h.... 3310: a0 07 50 41 52 44 a4 01 a0 4c 05 93 68 0a 02 a0 ..PARD...L..h... 3320: 33 43 50 46 4d a0 0e 93 43 50 46 4d 01 70 0a 06 3CPFM...CPFM.p.. 3330: 50 46 49 54 a0 0f 93 43 50 46 4d 0a 06 70 0a 08 PFIT...CPFM..p.. 3340: 50 46 49 54 a0 0e 93 43 50 46 4d 0a 08 70 01 50 PFIT...CPFM..p.P 3350: 46 49 54 a1 0c 7f 50 46 49 54 0a 07 50 46 49 54 FIT...PFIT..PFIT 3360: 7d 50 46 49 54 0c 00 00 00 80 50 46 49 54 70 0a }PFIT.....PFITp. 3370: 04 41 53 4c 43 a1 42 04 a0 28 93 68 01 70 78 77 .ASLC.B..(.h.pxw 3380: 69 0a ff 00 0a 64 00 00 42 43 4c 50 7d 42 43 4c i....d..BCLP}BCL 3390: 50 0c 00 00 00 80 42 43 4c 50 70 0a 02 41 53 4c P.....BCLPp..ASL 33a0: 43 a1 16 a0 10 93 68 00 70 69 41 4c 53 49 70 01 C.....h.piALSIp. 33b0: 41 53 4c 43 a1 03 a4 01 70 00 4c 42 50 43 a4 00 ASLC....p.LBPC.. 33c0: 10 41 36 5c 00 5b 80 49 4f 5f 54 01 0b 00 08 0a .A6\.[.IO_T..... 33d0: 10 5b 81 0e 49 4f 5f 54 01 00 40 04 54 52 50 30 .[..IO_T..@.TRP0 33e0: 08 5b 80 50 4d 49 4f 01 0b 00 10 0a 80 5b 81 28 .[.PMIO......[.( 33f0: 50 4d 49 4f 01 00 40 15 00 08 00 02 41 43 50 57 PMIO..@.....ACPW 3400: 01 00 45 0b 00 01 47 50 45 43 01 00 4e 10 00 09 ..E...GPEC..N... 3410: 53 43 49 53 01 00 06 5b 80 47 50 49 4f 01 0b 80 SCIS...[.GPIO... 3420: 11 0a 3c 5b 81 40 0c 47 50 49 4f 01 47 55 30 30 ..<[.@.GPIO.GU00 3430: 08 47 55 30 31 08 47 55 30 32 08 47 55 30 33 08 .GU01.GU02.GU03. 3440: 47 49 4f 30 08 47 49 4f 31 08 47 49 4f 32 08 47 GIO0.GIO1.GIO2.G 3450: 49 4f 33 08 00 20 47 4c 30 30 08 47 4c 30 31 08 IO3.. GL00.GL01. 3460: 47 4c 30 32 08 00 03 47 50 32 37 01 47 50 32 38 GL02...GP27.GP28 3470: 01 00 03 00 40 04 47 42 30 30 08 47 42 30 31 08 ....@.GB00.GB01. 3480: 47 42 30 32 08 47 42 30 33 08 00 40 08 47 49 56 GB02.GB03..@.GIV 3490: 30 08 00 03 4c 50 4f 4c 01 00 04 47 49 56 32 08 0...LPOL...GIV2. 34a0: 47 49 56 33 08 47 55 30 34 08 47 55 30 35 08 47 GIV3.GU04.GU05.G 34b0: 55 30 36 08 47 55 30 37 08 47 49 4f 34 08 47 49 U06.GU07.GIO4.GI 34c0: 4f 35 08 47 49 4f 36 08 47 49 4f 37 08 00 05 47 O5.GIO6.GIO7...G 34d0: 50 33 37 01 00 02 47 4c 30 35 08 47 4c 30 36 08 P37...GL05.GL06. 34e0: 47 4c 30 37 08 5b 80 52 43 52 42 00 0c 00 c0 d1 GL07.[.RCRB..... 34f0: fe 0b 00 40 5b 81 48 05 52 43 52 42 13 00 80 00 ...@[.H.RCRB.... 3500: 08 00 80 00 10 00 80 02 02 48 50 41 53 02 00 05 .........HPAS... 3510: 48 50 41 45 01 00 48 09 00 01 50 41 54 44 01 53 HPAE..H...PATD.S 3520: 41 54 44 01 53 4d 42 44 01 48 44 41 44 01 00 0b ATD.SMBD.HDAD... 3530: 52 50 31 44 01 52 50 32 44 01 52 50 33 44 01 52 RP1D.RP2D.RP3D.R 3540: 50 34 44 01 52 50 35 44 01 52 50 36 44 01 08 5f P4D.RP5D.RP6D.._ 3550: 53 30 5f 12 05 03 00 00 00 08 5f 53 33 5f 12 07 S0_......._S3_.. 3560: 03 0a 05 0a 05 00 08 5f 53 34 5f 12 07 03 0a 06 ......._S4_..... 3570: 0a 06 00 08 5f 53 35 5f 12 07 03 0a 07 0a 07 00 ...._S5_........ 3580: 14 45 04 47 45 54 50 09 a0 0e 93 7b 68 0a 09 00 .E.GETP....{h... 3590: 00 a4 0c ff ff ff ff a0 0d 93 7b 68 0a 09 00 0a ..........{h.... 35a0: 08 a4 0b 84 03 7a 7b 68 0b 00 03 00 0a 08 60 7a .....z{h......`z 35b0: 7b 68 0b 00 30 00 0a 0c 61 a4 77 0a 1e 74 0a 09 {h..0...a.w..t.. 35c0: 72 60 61 00 00 00 14 30 47 44 4d 41 0d a0 23 68 r`a....0GDMA..#h 35d0: a0 07 90 69 6c a4 0a 14 a0 0e 90 6a 6c a4 77 74 ...il......jl.wt 35e0: 0a 04 6b 00 0a 0f 00 a4 77 74 0a 04 6b 00 0a 1e ..k.....wt..k... 35f0: 00 a4 0c ff ff ff ff 14 1f 47 45 54 54 09 a4 77 .........GETT..w 3600: 0a 1e 74 0a 09 72 7b 7a 68 0a 02 00 0a 03 00 7b ..t..r{zh......{ 3610: 68 0a 03 00 00 00 00 14 44 06 47 45 54 46 0b 08 h.......D.GETF.. 3620: 54 4d 50 46 00 a0 0c 68 7d 54 4d 50 46 01 54 4d TMPF...h}TMPF.TM 3630: 50 46 a0 11 7b 6a 0a 02 00 7d 54 4d 50 46 0a 02 PF..{j...}TMPF.. 3640: 54 4d 50 46 a0 0d 69 7d 54 4d 50 46 0a 04 54 4d TMPF..i}TMPF..TM 3650: 50 46 a0 11 7b 6a 0a 20 00 7d 54 4d 50 46 0a 08 PF..{j. .}TMPF.. 3660: 54 4d 50 46 a0 12 7b 6a 0b 00 40 00 7d 54 4d 50 TMPF..{j..@.}TMP 3670: 46 0a 10 54 4d 50 46 a4 54 4d 50 46 14 3d 53 45 F..TMPF.TMPF.=SE 3680: 54 50 0b a0 08 94 68 0a f0 a4 0a 08 a1 2d a0 27 TP....h......-.' 3690: 7b 69 0a 02 00 a0 10 90 92 94 68 0a 78 7b 6a 0a {i........h.x{j. 36a0: 02 00 a4 0b 01 23 a0 0f 90 92 94 68 0a b4 7b 6a .....#.....h..{j 36b0: 01 00 a4 0b 01 21 a4 0b 01 10 14 37 53 44 4d 41 .....!.....7SDMA 36c0: 09 a0 08 92 94 68 0a 14 a4 01 a0 09 92 94 68 0a .....h........h. 36d0: 1e a4 0a 02 a0 08 92 94 68 0a 2d a4 01 a0 09 92 ........h.-..... 36e0: 94 68 0a 3c a4 0a 02 a0 08 92 94 68 0a 5a a4 01 .h.<.......h.Z.. 36f0: a4 00 14 2f 53 45 54 54 0b a0 25 7b 69 0a 02 00 .../SETT..%{i... 3700: a0 0f 90 92 94 68 0a 78 7b 6a 0a 02 00 a4 0a 0b .....h.x{j...... 3710: a0 0e 90 92 94 68 0a b4 7b 6a 01 00 a4 0a 09 a4 .....h..{j...... 3720: 0a 04 5b 82 4b 04 48 44 45 46 08 5f 41 44 52 0c ..[.K.HDEF._ADR. 3730: 00 00 1b 00 5b 80 48 44 41 52 02 0a 4c 0a 10 5b ....[.HDAR..L..[ 3740: 81 22 48 44 41 52 02 44 43 4b 41 01 00 07 44 43 ."HDAR.DCKA...DC 3750: 4b 4d 01 00 06 44 43 4b 53 01 00 30 00 0f 50 4d KM...DCKS..0..PM 3760: 45 53 01 08 5f 50 52 57 12 06 02 0a 0d 0a 03 5b ES.._PRW.......[ 3770: 82 41 10 52 50 30 31 08 5f 41 44 52 0c 00 00 1c .A.RP01._ADR.... 3780: 00 5b 80 50 58 43 53 02 0a 40 0a c0 5b 81 45 04 .[.PXCS..@..[.E. 3790: 50 58 43 53 40 00 40 09 00 0d 4c 41 53 58 01 00 PXCS@.@...LASX.. 37a0: 32 41 42 50 58 01 00 02 50 44 43 58 01 00 02 50 2ABPX...PDCX...P 37b0: 44 53 58 01 00 01 4c 53 43 58 01 00 27 00 10 50 DSX...LSCX..'..P 37c0: 53 50 58 01 00 4f 3c 00 1e 48 50 53 58 01 50 4d SPX..O<..HPSX.PM 37d0: 53 58 01 5b 82 0b 50 58 53 58 08 5f 41 44 52 00 SX.[..PXSX._ADR. 37e0: 14 41 09 5f 50 52 54 00 a0 33 47 50 49 43 a4 12 .A._PRT..3GPIC.. 37f0: 2c 04 12 09 04 0b ff ff 00 00 0a 10 12 09 04 0b ,............... 3800: ff ff 01 00 0a 11 12 0a 04 0b ff ff 0a 02 00 0a ................ 3810: 12 12 0a 04 0b ff ff 0a 03 00 0a 13 a1 45 05 a4 .............E.. 3820: 12 41 05 04 12 12 04 0b ff ff 00 5e 5e 2e 4c 50 .A.........^^.LP 3830: 43 42 4c 4e 4b 41 00 12 12 04 0b ff ff 01 5e 5e CBLNKA........^^ 3840: 2e 4c 50 43 42 4c 4e 4b 42 00 12 13 04 0b ff ff .LPCBLNKB....... 3850: 0a 02 5e 5e 2e 4c 50 43 42 4c 4e 4b 43 00 12 13 ..^^.LPCBLNKC... 3860: 04 0b ff ff 0a 03 5e 5e 2e 4c 50 43 42 4c 4e 4b ......^^.LPCBLNK 3870: 44 00 5b 82 41 10 52 50 30 32 08 5f 41 44 52 0c D.[.A.RP02._ADR. 3880: 01 00 1c 00 5b 80 50 58 43 53 02 0a 40 0a c0 5b ....[.PXCS..@..[ 3890: 81 45 04 50 58 43 53 40 00 40 09 00 0d 4c 41 53 .E.PXCS@.@...LAS 38a0: 58 01 00 32 41 42 50 58 01 00 02 50 44 43 58 01 X..2ABPX...PDCX. 38b0: 00 02 50 44 53 58 01 00 01 4c 53 43 58 01 00 27 ..PDSX...LSCX..' 38c0: 00 10 50 53 50 58 01 00 4f 3c 00 1e 48 50 53 58 ..PSPX..O<..HPSX 38d0: 01 50 4d 53 58 01 5b 82 0b 50 58 53 58 08 5f 41 .PMSX.[..PXSX._A 38e0: 44 52 00 14 41 09 5f 50 52 54 00 a0 33 47 50 49 DR..A._PRT..3GPI 38f0: 43 a4 12 2c 04 12 09 04 0b ff ff 00 00 0a 11 12 C..,............ 3900: 09 04 0b ff ff 01 00 0a 12 12 0a 04 0b ff ff 0a ................ 3910: 02 00 0a 13 12 0a 04 0b ff ff 0a 03 00 0a 10 a1 ................ 3920: 45 05 a4 12 41 05 04 12 12 04 0b ff ff 00 5e 5e E...A.........^^ 3930: 2e 4c 50 43 42 4c 4e 4b 42 00 12 12 04 0b ff ff .LPCBLNKB....... 3940: 01 5e 5e 2e 4c 50 43 42 4c 4e 4b 43 00 12 13 04 .^^.LPCBLNKC.... 3950: 0b ff ff 0a 02 5e 5e 2e 4c 50 43 42 4c 4e 4b 44 .....^^.LPCBLNKD 3960: 00 12 13 04 0b ff ff 0a 03 5e 5e 2e 4c 50 43 42 .........^^.LPCB 3970: 4c 4e 4b 41 00 5b 82 4d 11 52 50 30 33 08 5f 41 LNKA.[.M.RP03._A 3980: 44 52 0c 02 00 1c 00 5b 80 50 58 43 53 02 0a 40 DR.....[.PXCS..@ 3990: 0a c0 5b 81 45 04 50 58 43 53 40 00 40 09 00 0d ..[.E.PXCS@.@... 39a0: 4c 41 53 58 01 00 32 41 42 50 58 01 00 02 50 44 LASX..2ABPX...PD 39b0: 43 58 01 00 02 50 44 53 58 01 00 01 4c 53 43 58 CX...PDSX...LSCX 39c0: 01 00 27 00 10 50 53 50 58 01 00 4f 3c 00 1e 48 ..'..PSPX..O<..H 39d0: 50 53 58 01 50 4d 53 58 01 5b 82 0b 50 58 53 58 PSX.PMSX.[..PXSX 39e0: 08 5f 41 44 52 00 08 2e 50 58 53 58 5f 52 4d 56 ._ADR...PXSX_RMV 39f0: 01 08 2e 50 58 53 58 5f 50 52 57 12 06 02 0a 09 ...PXSX_PRW..... 3a00: 0a 03 14 41 09 5f 50 52 54 00 a0 33 47 50 49 43 ...A._PRT..3GPIC 3a10: a4 12 2c 04 12 09 04 0b ff ff 00 00 0a 12 12 09 ..,............. 3a20: 04 0b ff ff 01 00 0a 13 12 0a 04 0b ff ff 0a 02 ................ 3a30: 00 0a 10 12 0a 04 0b ff ff 0a 03 00 0a 11 a1 45 ...............E 3a40: 05 a4 12 41 05 04 12 12 04 0b ff ff 00 5e 5e 2e ...A.........^^. 3a50: 4c 50 43 42 4c 4e 4b 43 00 12 12 04 0b ff ff 01 LPCBLNKC........ 3a60: 5e 5e 2e 4c 50 43 42 4c 4e 4b 44 00 12 13 04 0b ^^.LPCBLNKD..... 3a70: ff ff 0a 02 5e 5e 2e 4c 50 43 42 4c 4e 4b 41 00 ....^^.LPCBLNKA. 3a80: 12 13 04 0b ff ff 0a 03 5e 5e 2e 4c 50 43 42 4c ........^^.LPCBL 3a90: 4e 4b 42 00 5b 82 4f 11 52 50 30 34 08 5f 41 44 NKB.[.O.RP04._AD 3aa0: 52 0c 03 00 1c 00 5b 80 50 58 43 53 02 0a 40 0a R.....[.PXCS..@. 3ab0: c0 5b 81 45 04 50 58 43 53 40 00 40 09 00 0d 4c .[.E.PXCS@.@...L 3ac0: 41 53 58 01 00 32 41 42 50 58 01 00 02 50 44 43 ASX..2ABPX...PDC 3ad0: 58 01 00 02 50 44 53 58 01 00 01 4c 53 43 58 01 X...PDSX...LSCX. 3ae0: 00 27 00 10 50 53 50 58 01 00 4f 3c 00 1e 48 50 .'..PSPX..O<..HP 3af0: 53 58 01 50 4d 53 58 01 5b 82 29 50 58 53 58 08 SX.PMSX.[.)PXSX. 3b00: 5f 41 44 52 00 14 1d 5f 50 52 57 00 a0 0d 57 4b _ADR..._PRW...WK 3b10: 4c 4e a4 12 06 02 0a 09 0a 03 a1 08 a4 12 05 02 LN.............. 3b20: 0a 09 00 14 41 09 5f 50 52 54 00 a0 33 47 50 49 ....A._PRT..3GPI 3b30: 43 a4 12 2c 04 12 09 04 0b ff ff 00 00 0a 13 12 C..,............ 3b40: 09 04 0b ff ff 01 00 0a 10 12 0a 04 0b ff ff 0a ................ 3b50: 02 00 0a 11 12 0a 04 0b ff ff 0a 03 00 0a 12 a1 ................ 3b60: 45 05 a4 12 41 05 04 12 12 04 0b ff ff 00 5e 5e E...A.........^^ 3b70: 2e 4c 50 43 42 4c 4e 4b 44 00 12 12 04 0b ff ff .LPCBLNKD....... 3b80: 01 5e 5e 2e 4c 50 43 42 4c 4e 4b 41 00 12 13 04 .^^.LPCBLNKA.... 3b90: 0b ff ff 0a 02 5e 5e 2e 4c 50 43 42 4c 4e 4b 42 .....^^.LPCBLNKB 3ba0: 00 12 13 04 0b ff ff 0a 03 5e 5e 2e 4c 50 43 42 .........^^.LPCB 3bb0: 4c 4e 4b 43 00 5b 82 41 10 52 50 30 35 08 5f 41 LNKC.[.A.RP05._A 3bc0: 44 52 0c 04 00 1c 00 5b 80 50 58 43 53 02 0a 40 DR.....[.PXCS..@ 3bd0: 0a c0 5b 81 45 04 50 58 43 53 40 00 40 09 00 0d ..[.E.PXCS@.@... 3be0: 4c 41 53 58 01 00 32 41 42 50 58 01 00 02 50 44 LASX..2ABPX...PD 3bf0: 43 58 01 00 02 50 44 53 58 01 00 01 4c 53 43 58 CX...PDSX...LSCX 3c00: 01 00 27 00 10 50 53 50 58 01 00 4f 3c 00 1e 48 ..'..PSPX..O<..H 3c10: 50 53 58 01 50 4d 53 58 01 5b 82 0b 50 58 53 58 PSX.PMSX.[..PXSX 3c20: 08 5f 41 44 52 00 14 41 09 5f 50 52 54 00 a0 33 ._ADR..A._PRT..3 3c30: 47 50 49 43 a4 12 2c 04 12 09 04 0b ff ff 00 00 GPIC..,......... 3c40: 0a 10 12 09 04 0b ff ff 01 00 0a 11 12 0a 04 0b ................ 3c50: ff ff 0a 02 00 0a 12 12 0a 04 0b ff ff 0a 03 00 ................ 3c60: 0a 13 a1 45 05 a4 12 41 05 04 12 12 04 0b ff ff ...E...A........ 3c70: 00 5e 5e 2e 4c 50 43 42 4c 4e 4b 41 00 12 12 04 .^^.LPCBLNKA.... 3c80: 0b ff ff 01 5e 5e 2e 4c 50 43 42 4c 4e 4b 42 00 ....^^.LPCBLNKB. 3c90: 12 13 04 0b ff ff 0a 02 5e 5e 2e 4c 50 43 42 4c ........^^.LPCBL 3ca0: 4e 4b 43 00 12 13 04 0b ff ff 0a 03 5e 5e 2e 4c NKC.........^^.L 3cb0: 50 43 42 4c 4e 4b 44 00 5b 82 41 10 52 50 30 36 PCBLNKD.[.A.RP06 3cc0: 08 5f 41 44 52 0c 05 00 1c 00 5b 80 50 58 43 53 ._ADR.....[.PXCS 3cd0: 02 0a 40 0a c0 5b 81 45 04 50 58 43 53 40 00 40 ..@..[.E.PXCS@.@ 3ce0: 09 00 0d 4c 41 53 58 01 00 32 41 42 50 58 01 00 ...LASX..2ABPX.. 3cf0: 02 50 44 43 58 01 00 02 50 44 53 58 01 00 01 4c .PDCX...PDSX...L 3d00: 53 43 58 01 00 27 00 10 50 53 50 58 01 00 4f 3c SCX..'..PSPX..O< 3d10: 00 1e 48 50 53 58 01 50 4d 53 58 01 5b 82 0b 50 ..HPSX.PMSX.[..P 3d20: 58 53 58 08 5f 41 44 52 00 14 41 09 5f 50 52 54 XSX._ADR..A._PRT 3d30: 00 a0 33 47 50 49 43 a4 12 2c 04 12 09 04 0b ff ..3GPIC..,...... 3d40: ff 00 00 0a 11 12 09 04 0b ff ff 01 00 0a 12 12 ................ 3d50: 0a 04 0b ff ff 0a 02 00 0a 13 12 0a 04 0b ff ff ................ 3d60: 0a 03 00 0a 10 a1 45 05 a4 12 41 05 04 12 12 04 ......E...A..... 3d70: 0b ff ff 00 5e 5e 2e 4c 50 43 42 4c 4e 4b 42 00 ....^^.LPCBLNKB. 3d80: 12 12 04 0b ff ff 01 5e 5e 2e 4c 50 43 42 4c 4e .......^^.LPCBLN 3d90: 4b 43 00 12 13 04 0b ff ff 0a 02 5e 5e 2e 4c 50 KC.........^^.LP 3da0: 43 42 4c 4e 4b 44 00 12 13 04 0b ff ff 0a 03 5e CBLNKD.........^ 3db0: 5e 2e 4c 50 43 42 4c 4e 4b 41 00 5b 82 4d 06 55 ^.LPCBLNKA.[.M.U 3dc0: 53 42 31 08 5f 41 44 52 0c 00 00 1d 00 5b 80 55 SB1._ADR.....[.U 3dd0: 31 43 53 02 0a c4 0a 04 5b 81 0b 55 31 43 53 03 1CS.....[..U1CS. 3de0: 55 31 45 4e 02 08 5f 50 52 57 12 06 02 0a 03 0a U1EN.._PRW...... 3df0: 03 14 24 5f 50 53 57 01 a0 15 68 70 01 41 43 50 ..$_PSW...hp.ACP 3e00: 57 a0 0c 41 43 50 57 70 0a 03 55 31 45 4e a1 07 W..ACPWp..U1EN.. 3e10: 70 00 55 31 45 4e 14 09 5f 53 33 44 00 a4 0a 02 p.U1EN.._S3D.... 3e20: 14 09 5f 53 34 44 00 a4 0a 02 5b 82 4c 06 55 53 .._S4D....[.L.US 3e30: 42 32 08 5f 41 44 52 0c 01 00 1d 00 5b 80 55 32 B2._ADR.....[.U2 3e40: 43 53 02 0a c4 0a 04 5b 81 0b 55 32 43 53 03 55 CS.....[..U2CS.U 3e50: 32 45 4e 02 08 5f 50 52 57 12 06 02 0a 04 0a 03 2EN.._PRW....... 3e60: 14 23 5f 50 53 57 01 a0 14 68 70 01 41 43 50 57 .#_PSW...hp.ACPW 3e70: a0 0b 41 43 50 57 70 01 55 32 45 4e a1 07 70 00 ..ACPWp.U2EN..p. 3e80: 55 32 45 4e 14 09 5f 53 33 44 00 a4 0a 02 14 09 U2EN.._S3D...... 3e90: 5f 53 34 44 00 a4 0a 02 5b 82 4d 06 55 53 42 33 _S4D....[.M.USB3 3ea0: 08 5f 41 44 52 0c 02 00 1d 00 5b 80 55 32 43 53 ._ADR.....[.U2CS 3eb0: 02 0a c4 0a 04 5b 81 0b 55 32 43 53 03 55 33 45 .....[..U2CS.U3E 3ec0: 4e 02 08 5f 50 52 57 12 06 02 0a 0c 0a 03 14 24 N.._PRW........$ 3ed0: 5f 50 53 57 01 a0 15 68 70 01 41 43 50 57 a0 0c _PSW...hp.ACPW.. 3ee0: 41 43 50 57 70 0a 03 55 33 45 4e a1 07 70 00 55 ACPWp..U3EN..p.U 3ef0: 33 45 4e 14 09 5f 53 33 44 00 a4 0a 02 14 09 5f 3EN.._S3D......_ 3f00: 53 34 44 00 a4 0a 02 5b 82 4d 06 55 53 42 34 08 S4D....[.M.USB4. 3f10: 5f 41 44 52 0c 00 00 1a 00 5b 80 55 34 43 53 02 _ADR.....[.U4CS. 3f20: 0a c4 0a 04 5b 81 0b 55 34 43 53 03 55 34 45 4e ....[..U4CS.U4EN 3f30: 02 08 5f 50 52 57 12 06 02 0a 0e 0a 03 14 24 5f .._PRW........$_ 3f40: 50 53 57 01 a0 15 68 70 01 41 43 50 57 a0 0c 41 PSW...hp.ACPW..A 3f50: 43 50 57 70 0a 03 55 34 45 4e a1 07 70 00 55 34 CPWp..U4EN..p.U4 3f60: 45 4e 14 09 5f 53 33 44 00 a4 0a 02 14 09 5f 53 EN.._S3D......_S 3f70: 34 44 00 a4 0a 02 5b 82 41 06 55 53 42 35 08 5f 4D....[.A.USB5._ 3f80: 41 44 52 0c 01 00 1a 00 5b 80 55 35 43 53 02 0a ADR.....[.U5CS.. 3f90: c4 0a 04 5b 81 0b 55 35 43 53 03 55 35 45 4e 02 ...[..U5CS.U5EN. 3fa0: 14 24 5f 50 53 57 01 a0 15 68 70 01 41 43 50 57 .$_PSW...hp.ACPW 3fb0: a0 0c 41 43 50 57 70 0a 03 55 35 45 4e a1 07 70 ..ACPWp..U5EN..p 3fc0: 00 55 35 45 4e 14 09 5f 53 33 44 00 a4 0a 02 14 .U5EN.._S3D..... 3fd0: 09 5f 53 34 44 00 a4 0a 02 5b 82 4b 0a 45 48 43 ._S4D....[.K.EHC 3fe0: 31 08 5f 41 44 52 0c 07 00 1d 00 5b 80 55 37 43 1._ADR.....[.U7C 3ff0: 53 02 0a 54 0a 04 5b 81 0d 55 37 43 53 03 00 0f S..T..[..U7CS... 4000: 50 4d 45 53 01 5b 82 4f 05 48 55 42 37 08 5f 41 PMES.[.O.HUB7._A 4010: 44 52 00 5b 82 0b 50 52 54 31 08 5f 41 44 52 01 DR.[..PRT1._ADR. 4020: 5b 82 0c 50 52 54 32 08 5f 41 44 52 0a 02 5b 82 [..PRT2._ADR..[. 4030: 0c 50 52 54 33 08 5f 41 44 52 0a 03 5b 82 0c 50 .PRT3._ADR..[..P 4040: 52 54 34 08 5f 41 44 52 0a 04 5b 82 0c 50 52 54 RT4._ADR..[..PRT 4050: 35 08 5f 41 44 52 0a 05 5b 82 0c 50 52 54 36 08 5._ADR..[..PRT6. 4060: 5f 41 44 52 0a 06 08 5f 50 52 57 12 06 02 0a 0d _ADR..._PRW..... 4070: 0a 03 14 09 5f 53 33 44 00 a4 0a 02 14 09 5f 53 ...._S3D......_S 4080: 34 44 00 a4 0a 02 5b 82 4f 08 45 48 43 32 08 5f 4D....[.O.EHC2._ 4090: 41 44 52 0c 07 00 1a 00 5b 80 55 46 43 53 02 0a ADR.....[.UFCS.. 40a0: 54 0a 04 5b 81 0d 55 46 43 53 03 00 0f 50 4d 45 T..[..UFCS...PME 40b0: 53 01 5b 82 43 04 48 55 42 37 08 5f 41 44 52 00 S.[.C.HUB7._ADR. 40c0: 5b 82 0b 50 52 54 31 08 5f 41 44 52 01 5b 82 0c [..PRT1._ADR.[.. 40d0: 50 52 54 32 08 5f 41 44 52 0a 02 5b 82 0c 50 52 PRT2._ADR..[..PR 40e0: 54 33 08 5f 41 44 52 0a 03 5b 82 0c 50 52 54 34 T3._ADR..[..PRT4 40f0: 08 5f 41 44 52 0a 04 08 5f 50 52 57 12 06 02 0a ._ADR..._PRW.... 4100: 0d 0a 03 14 09 5f 53 33 44 00 a4 0a 02 14 09 5f ....._S3D......_ 4110: 53 34 44 00 a4 0a 02 5b 82 4a 06 50 43 49 42 08 S4D....[.J.PCIB. 4120: 5f 41 44 52 0c 00 00 1e 00 14 49 05 5f 50 52 54 _ADR......I._PRT 4130: 00 a0 21 47 50 49 43 a4 12 1a 02 12 0b 04 0c ff ..!GPIC......... 4140: ff 06 00 00 00 0a 16 12 0b 04 0c ff ff 06 00 01 ................ 4150: 00 0a 17 a1 2f a4 12 2c 02 12 14 04 0c ff ff 06 ..../..,........ 4160: 00 00 5e 5e 2e 4c 50 43 42 4c 4e 4b 47 00 12 14 ..^^.LPCBLNKG... 4170: 04 0c ff ff 06 00 01 5e 5e 2e 4c 50 43 42 4c 4e .......^^.LPCBLN 4180: 4b 48 00 5b 82 8d 2e 01 4c 50 43 42 08 5f 41 44 KH.[....LPCB._AD 4190: 52 0c 00 00 1f 00 5b 80 4c 50 43 30 02 0a 40 0a R.....[.LPC0..@. 41a0: c0 5b 81 4d 07 4c 50 43 30 00 00 40 10 50 41 52 .[.M.LPC0..@.PAR 41b0: 43 08 50 42 52 43 08 50 43 52 43 08 50 44 52 43 C.PBRC.PCRC.PDRC 41c0: 08 00 20 50 45 52 43 08 50 46 52 43 08 50 47 52 .. PERC.PFRC.PGR 41d0: 43 08 50 48 52 43 08 00 40 0a 43 4d 41 52 03 00 C.PHRC..@.CMAR.. 41e0: 01 43 4d 42 52 03 00 01 4c 50 54 52 02 00 06 43 .CMBR...LPTR...C 41f0: 4d 41 44 01 43 4d 42 44 01 4c 50 54 44 01 46 44 MAD.CMBD.LPTD.FD 4200: 44 44 01 00 2c 49 4f 52 32 10 00 02 4c 47 52 4d DD..,IOR2...LGRM 4210: 06 00 48 32 52 41 45 4e 01 00 0d 52 43 42 41 12 ..H2RAEN...RCBA. 4220: 5b 80 53 4d 49 30 01 0c 00 fe 00 00 0c 02 00 00 [.SMI0.......... 4230: 00 5b 81 0b 53 4d 49 30 00 53 4d 49 43 08 5b 80 .[..SMI0.SMIC.[. 4240: 53 4d 49 31 00 0c bd 2e 6e bf 0c 90 00 00 00 5b SMI1....n......[ 4250: 81 16 53 4d 49 31 00 42 43 4d 44 08 44 49 44 5f ..SMI1.BCMD.DID_ 4260: 20 49 4e 46 4f 40 40 5b 81 15 53 4d 49 31 00 01 INFO@@[..SMI1.. 4270: 01 00 00 28 49 4e 46 5f 08 49 4e 46 31 20 5b 01 ...(INF_.INF1 [. 4280: 50 53 4d 58 00 14 27 50 48 53 53 01 5b 23 50 53 PSMX..'PHSS.[#PS 4290: 4d 58 ff ff 70 0a 80 42 43 4d 44 70 68 44 49 44 MX..p..BCMDphDID 42a0: 5f 70 00 53 4d 49 43 5b 27 50 53 4d 58 5b 82 41 _p.SMIC['PSMX[.A 42b0: 0a 4c 4e 4b 41 08 5f 48 49 44 0c 41 d0 0c 0f 08 .LNKA._HID.A.... 42c0: 5f 55 49 44 01 14 0d 5f 44 49 53 08 70 0a 80 50 _UID..._DIS.p..P 42d0: 41 52 43 08 5f 50 52 53 11 09 0a 06 23 fa d4 18 ARC._PRS....#... 42e0: 79 00 14 38 5f 43 52 53 08 08 52 54 4c 41 11 09 y..8_CRS..RTLA.. 42f0: 0a 06 23 00 00 18 79 00 8b 52 54 4c 41 01 49 52 ..#...y..RTLA.IR 4300: 51 30 70 00 49 52 51 30 79 01 7b 50 41 52 43 0a Q0p.IRQ0y.{PARC. 4310: 0f 00 49 52 51 30 a4 52 54 4c 41 14 1b 5f 53 52 ..IRQ0.RTLA.._SR 4320: 53 09 8b 68 01 49 52 51 30 82 49 52 51 30 60 76 S..h.IRQ0.IRQ0`v 4330: 60 70 60 50 41 52 43 14 18 5f 53 54 41 08 a0 0c `p`PARC.._STA... 4340: 7b 50 41 52 43 0a 80 00 a4 0a 09 a1 04 a4 0a 0b {PARC........... 4350: 5b 82 42 0a 4c 4e 4b 42 08 5f 48 49 44 0c 41 d0 [.B.LNKB._HID.A. 4360: 0c 0f 08 5f 55 49 44 0a 02 14 0d 5f 44 49 53 08 ..._UID...._DIS. 4370: 70 0a 80 50 42 52 43 08 5f 50 52 53 11 09 0a 06 p..PBRC._PRS.... 4380: 23 fa d8 18 79 00 14 38 5f 43 52 53 08 08 52 54 #...y..8_CRS..RT 4390: 4c 42 11 09 0a 06 23 00 00 18 79 00 8b 52 54 4c LB....#...y..RTL 43a0: 42 01 49 52 51 30 70 00 49 52 51 30 79 01 7b 50 B.IRQ0p.IRQ0y.{P 43b0: 42 52 43 0a 0f 00 49 52 51 30 a4 52 54 4c 42 14 BRC...IRQ0.RTLB. 43c0: 1b 5f 53 52 53 09 8b 68 01 49 52 51 30 82 49 52 ._SRS..h.IRQ0.IR 43d0: 51 30 60 76 60 70 60 50 42 52 43 14 18 5f 53 54 Q0`v`p`PBRC.._ST 43e0: 41 08 a0 0c 7b 50 42 52 43 0a 80 00 a4 0a 09 a1 A...{PBRC....... 43f0: 04 a4 0a 0b 5b 82 42 0a 4c 4e 4b 43 08 5f 48 49 ....[.B.LNKC._HI 4400: 44 0c 41 d0 0c 0f 08 5f 55 49 44 0a 03 14 0d 5f D.A...._UID...._ 4410: 44 49 53 08 70 0a 80 50 43 52 43 08 5f 50 52 53 DIS.p..PCRC._PRS 4420: 11 09 0a 06 23 fa d4 18 79 00 14 38 5f 43 52 53 ....#...y..8_CRS 4430: 08 08 52 54 4c 43 11 09 0a 06 23 00 00 18 79 00 ..RTLC....#...y. 4440: 8b 52 54 4c 43 01 49 52 51 30 70 00 49 52 51 30 .RTLC.IRQ0p.IRQ0 4450: 79 01 7b 50 43 52 43 0a 0f 00 49 52 51 30 a4 52 y.{PCRC...IRQ0.R 4460: 54 4c 43 14 1b 5f 53 52 53 09 8b 68 01 49 52 51 TLC.._SRS..h.IRQ 4470: 30 82 49 52 51 30 60 76 60 70 60 50 43 52 43 14 0.IRQ0`v`p`PCRC. 4480: 18 5f 53 54 41 08 a0 0c 7b 50 43 52 43 0a 80 00 ._STA...{PCRC... 4490: a4 0a 09 a1 04 a4 0a 0b 5b 82 42 0a 4c 4e 4b 44 ........[.B.LNKD 44a0: 08 5f 48 49 44 0c 41 d0 0c 0f 08 5f 55 49 44 0a ._HID.A...._UID. 44b0: 04 14 0d 5f 44 49 53 08 70 0a 80 50 44 52 43 08 ..._DIS.p..PDRC. 44c0: 5f 50 52 53 11 09 0a 06 23 fa d8 18 79 00 14 38 _PRS....#...y..8 44d0: 5f 43 52 53 08 08 52 54 4c 44 11 09 0a 06 23 00 _CRS..RTLD....#. 44e0: 00 18 79 00 8b 52 54 4c 44 01 49 52 51 30 70 00 ..y..RTLD.IRQ0p. 44f0: 49 52 51 30 79 01 7b 50 44 52 43 0a 0f 00 49 52 IRQ0y.{PDRC...IR 4500: 51 30 a4 52 54 4c 44 14 1b 5f 53 52 53 09 8b 68 Q0.RTLD.._SRS..h 4510: 01 49 52 51 30 82 49 52 51 30 60 76 60 70 60 50 .IRQ0.IRQ0`v`p`P 4520: 44 52 43 14 18 5f 53 54 41 08 a0 0c 7b 50 44 52 DRC.._STA...{PDR 4530: 43 0a 80 00 a4 0a 09 a1 04 a4 0a 0b 5b 82 42 0a C...........[.B. 4540: 4c 4e 4b 45 08 5f 48 49 44 0c 41 d0 0c 0f 08 5f LNKE._HID.A...._ 4550: 55 49 44 0a 05 14 0d 5f 44 49 53 08 70 0a 80 50 UID...._DIS.p..P 4560: 45 52 43 08 5f 50 52 53 11 09 0a 06 23 fa d4 18 ERC._PRS....#... 4570: 79 00 14 38 5f 43 52 53 08 08 52 54 4c 45 11 09 y..8_CRS..RTLE.. 4580: 0a 06 23 00 00 18 79 00 8b 52 54 4c 45 01 49 52 ..#...y..RTLE.IR 4590: 51 30 70 00 49 52 51 30 79 01 7b 50 45 52 43 0a Q0p.IRQ0y.{PERC. 45a0: 0f 00 49 52 51 30 a4 52 54 4c 45 14 1b 5f 53 52 ..IRQ0.RTLE.._SR 45b0: 53 09 8b 68 01 49 52 51 30 82 49 52 51 30 60 76 S..h.IRQ0.IRQ0`v 45c0: 60 70 60 50 45 52 43 14 18 5f 53 54 41 08 a0 0c `p`PERC.._STA... 45d0: 7b 50 45 52 43 0a 80 00 a4 0a 09 a1 04 a4 0a 0b {PERC........... 45e0: 5b 82 42 0a 4c 4e 4b 46 08 5f 48 49 44 0c 41 d0 [.B.LNKF._HID.A. 45f0: 0c 0f 08 5f 55 49 44 0a 06 14 0d 5f 44 49 53 08 ..._UID...._DIS. 4600: 70 0a 80 50 46 52 43 08 5f 50 52 53 11 09 0a 06 p..PFRC._PRS.... 4610: 23 fa d8 18 79 00 14 38 5f 43 52 53 08 08 52 54 #...y..8_CRS..RT 4620: 4c 46 11 09 0a 06 23 00 00 18 79 00 8b 52 54 4c LF....#...y..RTL 4630: 46 01 49 52 51 30 70 00 49 52 51 30 79 01 7b 50 F.IRQ0p.IRQ0y.{P 4640: 46 52 43 0a 0f 00 49 52 51 30 a4 52 54 4c 46 14 FRC...IRQ0.RTLF. 4650: 1b 5f 53 52 53 09 8b 68 01 49 52 51 30 82 49 52 ._SRS..h.IRQ0.IR 4660: 51 30 60 76 60 70 60 50 46 52 43 14 18 5f 53 54 Q0`v`p`PFRC.._ST 4670: 41 08 a0 0c 7b 50 46 52 43 0a 80 00 a4 0a 09 a1 A...{PFRC....... 4680: 04 a4 0a 0b 5b 82 42 0a 4c 4e 4b 47 08 5f 48 49 ....[.B.LNKG._HI 4690: 44 0c 41 d0 0c 0f 08 5f 55 49 44 0a 07 14 0d 5f D.A...._UID...._ 46a0: 44 49 53 08 70 0a 80 50 47 52 43 08 5f 50 52 53 DIS.p..PGRC._PRS 46b0: 11 09 0a 06 23 fa d4 18 79 00 14 38 5f 43 52 53 ....#...y..8_CRS 46c0: 08 08 52 54 4c 47 11 09 0a 06 23 00 00 18 79 00 ..RTLG....#...y. 46d0: 8b 52 54 4c 47 01 49 52 51 30 70 00 49 52 51 30 .RTLG.IRQ0p.IRQ0 46e0: 79 01 7b 50 47 52 43 0a 0f 00 49 52 51 30 a4 52 y.{PGRC...IRQ0.R 46f0: 54 4c 47 14 1b 5f 53 52 53 09 8b 68 01 49 52 51 TLG.._SRS..h.IRQ 4700: 30 82 49 52 51 30 60 76 60 70 60 50 47 52 43 14 0.IRQ0`v`p`PGRC. 4710: 18 5f 53 54 41 08 a0 0c 7b 50 47 52 43 0a 80 00 ._STA...{PGRC... 4720: a4 0a 09 a1 04 a4 0a 0b 5b 82 42 0a 4c 4e 4b 48 ........[.B.LNKH 4730: 08 5f 48 49 44 0c 41 d0 0c 0f 08 5f 55 49 44 0a ._HID.A...._UID. 4740: 08 14 0d 5f 44 49 53 08 70 0a 80 50 48 52 43 08 ..._DIS.p..PHRC. 4750: 5f 50 52 53 11 09 0a 06 23 fa d8 18 79 00 14 38 _PRS....#...y..8 4760: 5f 43 52 53 08 08 52 54 4c 48 11 09 0a 06 23 00 _CRS..RTLH....#. 4770: 00 18 79 00 8b 52 54 4c 48 01 49 52 51 30 70 00 ..y..RTLH.IRQ0p. 4780: 49 52 51 30 79 01 7b 50 48 52 43 0a 0f 00 49 52 IRQ0y.{PHRC...IR 4790: 51 30 a4 52 54 4c 48 14 1b 5f 53 52 53 09 8b 68 Q0.RTLH.._SRS..h 47a0: 01 49 52 51 30 82 49 52 51 30 60 76 60 70 60 50 .IRQ0.IRQ0`v`p`P 47b0: 48 52 43 14 18 5f 53 54 41 08 a0 0c 7b 50 48 52 HRC.._STA...{PHR 47c0: 43 0a 80 00 a4 0a 09 a1 04 a4 0a 0b 5b 82 3d 44 C...........[.=D 47d0: 4d 41 43 08 5f 48 49 44 0c 41 d0 02 00 08 5f 43 MAC._HID.A...._C 47e0: 52 53 11 28 0a 25 47 01 00 00 00 00 01 20 47 01 RS.(.%G...... G. 47f0: 81 00 81 00 01 11 47 01 93 00 93 00 01 0d 47 01 ......G.......G. 4800: c0 00 c0 00 01 20 2a 10 01 79 00 5b 82 26 46 57 ..... *..y.[.&FW 4810: 48 44 08 5f 48 49 44 0c 25 d4 08 00 08 5f 43 52 HD._HID.%...._CR 4820: 53 11 11 0a 0e 86 09 00 00 00 00 00 ff 00 00 00 S............... 4830: 01 79 00 5b 82 40 0b 48 50 45 54 08 5f 48 49 44 .y.[.@.HPET._HID 4840: 0c 41 d0 01 03 08 5f 43 49 44 0c 41 d0 0c 01 08 .A...._CID.A.... 4850: 42 55 46 30 11 11 0a 0e 86 09 00 00 00 00 d0 fe BUF0............ 4860: 00 04 00 00 79 00 14 27 5f 53 54 41 00 a0 13 92 ....y..'_STA.... 4870: 95 4f 53 59 53 0b d1 07 a0 08 48 50 41 45 a4 0a .OSYS.....HPAE.. 4880: 0f a1 0a a0 08 48 50 41 45 a4 0a 0b a4 00 14 46 .....HPAE......F 4890: 05 5f 43 52 53 08 a0 49 04 48 50 41 45 8a 42 55 ._CRS..I.HPAE.BU 48a0: 46 30 0a 04 48 50 54 30 a0 11 93 48 50 41 53 01 F0..HPT0...HPAS. 48b0: 70 0c 00 10 d0 fe 48 50 54 30 a0 12 93 48 50 41 p.....HPT0...HPA 48c0: 53 0a 02 70 0c 00 20 d0 fe 48 50 54 30 a0 12 93 S..p.. ..HPT0... 48d0: 48 50 41 53 0a 03 70 0c 00 30 d0 fe 48 50 54 30 HPAS..p..0..HPT0 48e0: a4 42 55 46 30 5b 82 45 0a 49 50 49 43 08 5f 48 .BUF0[.E.IPIC._H 48f0: 49 44 0b 41 d0 08 5f 43 52 53 11 41 09 0a 8d 47 ID.A.._CRS.A...G 4900: 01 20 00 20 00 01 02 47 01 24 00 24 00 01 02 47 . . ...G.$.$...G 4910: 01 28 00 28 00 01 02 47 01 2c 00 2c 00 01 02 47 .(.(...G.,.,...G 4920: 01 30 00 30 00 01 02 47 01 34 00 34 00 01 02 47 .0.0...G.4.4...G 4930: 01 38 00 38 00 01 02 47 01 3c 00 3c 00 01 02 47 .8.8...G.<.<...G 4940: 01 a0 00 a0 00 01 02 47 01 a4 00 a4 00 01 02 47 .......G.......G 4950: 01 a8 00 a8 00 01 02 47 01 ac 00 ac 00 01 02 47 .......G.......G 4960: 01 b0 00 b0 00 01 02 47 01 b4 00 b4 00 01 02 47 .......G.......G 4970: 01 b8 00 b8 00 01 02 47 01 bc 00 bc 00 01 02 47 .......G.......G 4980: 01 d0 04 d0 04 01 02 22 04 00 79 00 5b 82 25 4d ......."..y.[.%M 4990: 41 54 48 08 5f 48 49 44 0c 41 d0 0c 04 08 5f 43 ATH._HID.A...._C 49a0: 52 53 11 10 0a 0d 47 01 f0 00 f0 00 01 01 22 00 RS....G.......". 49b0: 20 79 00 5b 82 4b 09 4c 44 52 43 08 5f 48 49 44 y.[.K.LDRC._HID 49c0: 0c 41 d0 0c 02 08 5f 55 49 44 0a 02 08 5f 43 52 .A...._UID..._CR 49d0: 53 11 4e 07 0a 7a 47 01 2e 00 2e 00 01 02 47 01 S.N..zG.......G. 49e0: 4e 00 4e 00 01 02 47 01 61 00 61 00 01 01 47 01 N.N...G.a.a...G. 49f0: 63 00 63 00 01 01 47 01 65 00 65 00 01 01 47 01 c.c...G.e.e...G. 4a00: 67 00 67 00 01 01 47 01 80 00 80 00 01 01 47 01 g.g...G.......G. 4a10: 92 00 92 00 01 01 47 01 b2 00 b2 00 01 02 47 01 ......G.......G. 4a20: 80 06 80 06 01 20 47 01 00 08 00 08 01 10 47 01 ..... G.......G. 4a30: 00 10 00 10 01 80 47 01 80 11 80 11 01 40 47 01 ......G......@G. 4a40: 00 fe 00 fe 01 01 47 01 00 ff 00 ff 01 80 79 00 ......G.......y. 4a50: 5b 82 25 52 54 43 5f 08 5f 48 49 44 0c 41 d0 0b [.%RTC_._HID.A.. 4a60: 00 08 5f 43 52 53 11 10 0a 0d 47 01 70 00 70 00 .._CRS....G.p.p. 4a70: 01 08 22 00 01 79 00 5b 82 2d 54 49 4d 52 08 5f .."..y.[.-TIMR._ 4a80: 48 49 44 0c 41 d0 01 00 08 5f 43 52 53 11 18 0a HID.A...._CRS... 4a90: 15 47 01 40 00 40 00 01 04 47 01 50 00 50 00 10 .G.@.@...G.P.P.. 4aa0: 04 22 01 00 79 00 5b 82 32 41 43 41 44 08 5f 48 ."..y.[.2ACAD._H 4ab0: 49 44 0d 41 43 50 49 30 30 30 33 00 08 5f 50 43 ID.ACPI0003.._PC 4ac0: 4c 12 06 01 5f 53 42 5f 14 11 5f 50 53 52 00 70 L..._SB_.._PSR.p 4ad0: 01 41 43 50 57 a4 41 43 50 57 14 1a 45 43 4f 4b .ACPW.ACPW..ECOK 4ae0: 00 a0 0f 93 5e 2e 45 43 30 5f 5a 30 30 39 01 a4 ....^.EC0_Z009.. 4af0: 01 a1 03 a4 00 5b 82 4e 6f 45 43 30 5f 08 5f 48 .....[.NoEC0_._H 4b00: 49 44 0c 41 d0 0c 09 08 5f 47 50 45 0a 1c 08 5a ID.A...._GPE...Z 4b10: 30 30 39 00 08 5f 43 52 53 11 15 0a 12 47 01 62 009.._CRS....G.b 4b20: 00 62 00 01 01 47 01 66 00 66 00 01 01 79 00 14 .b...G.f.f...y.. 4b30: 3b 5f 52 45 47 02 a0 34 93 68 0a 03 70 69 5a 30 ;_REG..4.h..piZ0 4b40: 30 39 a0 28 5b 12 5f 4f 53 49 60 70 00 42 54 44 09.([._OSI`p.BTD 4b50: 53 a0 19 5f 4f 53 49 0d 57 69 6e 64 6f 77 73 20 S.._OSI.Windows 4b60: 32 30 30 36 00 70 01 42 54 44 53 5b 80 45 52 41 2006.p.BTDS[.ERA 4b70: 4d 03 00 0a ff 5b 81 4e 2e 45 52 41 4d 11 00 40 M....[.N.ERAM..@ 4b80: 30 53 4d 50 52 08 53 4d 53 54 08 53 4d 41 44 08 0SMPR.SMST.SMAD. 4b90: 53 4d 43 4d 08 53 4d 44 30 40 10 42 43 4e 54 08 SMCM.SMD0@.BCNT. 4ba0: 53 4d 41 41 18 00 40 04 43 48 47 4d 10 43 48 47 SMAA..@.CHGM.CHG 4bb0: 53 10 45 4e 49 44 08 45 4e 49 42 08 45 4e 44 44 S.ENID.ENIB.ENDD 4bc0: 08 43 48 47 56 08 43 48 47 41 10 42 41 4c 30 01 .CHGV.CHGA.BAL0. 4bd0: 42 41 4c 31 01 42 41 4c 32 01 42 41 4c 33 01 42 BAL1.BAL2.BAL3.B 4be0: 42 43 30 01 42 42 43 31 01 42 42 43 32 01 42 42 BC0.BBC1.BBC2.BB 4bf0: 43 33 01 00 08 50 48 44 44 01 49 46 44 44 01 49 C3...PHDD.IFDD.I 4c00: 4f 44 44 01 53 48 44 44 01 53 31 32 30 01 45 46 ODD.SHDD.S120.EF 4c10: 44 44 01 43 52 54 44 01 53 50 57 52 01 53 42 54 DD.CRTD.SPWR.SBT 4c20: 4e 01 56 49 44 4f 01 56 4f 4c 44 01 56 4f 4c 55 N.VIDO.VOLD.VOLU 4c30: 01 4d 55 54 45 01 43 4f 4e 54 01 42 52 47 54 01 .MUTE.CONT.BRGT. 4c40: 48 42 54 4e 01 53 34 53 54 01 53 4b 45 59 01 42 HBTN.S4ST.SKEY.B 4c50: 4b 45 59 01 54 4f 55 50 01 46 4e 42 4e 01 4c 49 KEY.TOUP.FNBN.LI 4c60: 44 46 01 44 49 47 4d 01 55 57 41 4b 01 00 08 44 DF.DIGM.UWAK...D 4c70: 4b 53 50 01 44 4b 49 4e 01 44 4b 49 44 01 44 4b KSP.DKIN.DKID.DK 4c80: 4f 4b 01 00 04 44 4b 50 57 01 00 07 42 54 4e 53 OK...DKPW...BTNS 4c90: 08 53 31 4c 44 01 53 33 4c 44 01 56 47 41 51 01 .S1LD.S3LD.VGAQ. 4ca0: 50 43 4d 51 01 50 43 4d 52 01 41 44 50 54 01 53 PCMQ.PCMR.ADPT.S 4cb0: 4c 4c 53 01 53 59 53 37 01 50 57 41 4b 01 4d 57 LLS.SYS7.PWAK.MW 4cc0: 41 4b 01 4c 57 41 4b 01 00 05 00 28 54 43 4e 4c AK.LWAK....(TCNL 4cd0: 08 54 4d 50 49 08 54 4d 53 44 08 46 41 53 4e 04 .TMPI.TMSD.FASN. 4ce0: 46 41 53 55 04 50 43 56 4c 04 00 02 53 57 54 4f FASU.PCVL...SWTO 4cf0: 01 48 57 54 4f 01 4d 4f 44 45 01 46 41 4e 53 02 .HWTO.MODE.FANS. 4d00: 49 4e 49 54 01 46 41 4e 31 01 46 41 4e 32 01 46 INIT.FAN1.FAN2.F 4d10: 41 4e 54 01 53 4b 4e 4d 01 43 54 4d 50 08 4c 49 ANT.SKNM.CTMP.LI 4d20: 44 45 01 50 4d 45 45 01 50 57 42 45 01 52 4e 47 DE.PMEE.PWBE.RNG 4d30: 45 01 42 54 57 45 01 44 43 4b 45 01 00 02 53 4b E.BTWE.DCKE...SK 4d40: 54 58 08 53 4b 54 42 08 53 4b 54 43 08 53 4b 54 TX.SKTB.SKTC.SKT 4d50: 41 08 00 08 48 41 50 4c 02 48 41 50 52 01 00 05 A...HAPL.HAPR... 4d60: 42 54 44 54 01 42 54 50 57 01 42 54 44 53 01 42 BTDT.BTPW.BTDS.B 4d70: 54 50 53 01 42 54 53 57 01 42 54 57 4b 01 42 54 TPS.BTSW.BTWK.BT 4d80: 4c 44 01 00 01 42 52 54 53 08 43 4e 54 53 08 57 LD...BRTS.CNTS.W 4d90: 4c 41 54 01 42 54 41 54 01 57 4c 45 58 01 42 54 LAT.BTAT.WLEX.BT 4da0: 45 58 01 4b 4c 53 57 01 57 4c 4f 4b 01 00 02 50 EX.KLSW.WLOK...P 4db0: 54 49 44 08 43 50 55 54 08 45 50 4b 54 08 47 48 TID.CPUT.EPKT.GH 4dc0: 49 44 08 00 04 42 4d 46 30 03 42 54 59 30 01 42 ID...BMF0.BTY0.B 4dd0: 53 54 30 08 42 52 43 30 10 42 53 4e 30 10 42 50 ST0.BRC0.BSN0.BP 4de0: 56 30 10 42 44 56 30 10 42 44 43 30 10 42 46 43 V0.BDV0.BDC0.BFC 4df0: 30 10 47 41 55 30 08 43 59 43 30 08 42 50 43 30 0.GAU0.CYC0.BPC0 4e00: 10 42 41 43 30 10 42 41 54 30 08 42 54 57 30 10 .BAC0.BAT0.BTW0. 4e10: 42 44 4e 30 08 00 40 04 00 04 42 4d 46 31 03 42 BDN0..@...BMF1.B 4e20: 54 59 31 01 42 53 54 31 08 42 52 43 31 10 42 53 TY1.BST1.BRC1.BS 4e30: 4e 31 10 42 50 56 31 10 42 44 56 31 10 42 44 43 N1.BPV1.BDV1.BDC 4e40: 31 10 42 46 43 31 10 47 41 55 31 08 43 59 43 31 1.BFC1.GAU1.CYC1 4e50: 08 42 50 43 31 10 42 41 43 31 10 42 41 54 31 08 .BPC1.BAC1.BAT1. 4e60: 42 54 57 31 10 14 37 5f 51 31 31 00 70 0a 87 50 BTW1..7_Q11.p..P 4e70: 38 30 48 a0 13 49 47 44 53 5e 5e 5e 2e 47 46 58 80H..IGDS^^^.GFX 4e80: 30 42 52 54 4e 0a 87 a1 15 86 5e 5e 5e 2f 03 50 0BRTN.....^^^/.P 4e90: 45 47 50 56 47 41 5f 4c 43 44 5f 0a 87 14 37 5f EGPVGA_LCD_...7_ 4ea0: 51 31 32 00 70 0a 86 50 38 30 48 a0 13 49 47 44 Q12.p..P80H..IGD 4eb0: 53 5e 5e 5e 2e 47 46 58 30 42 52 54 4e 0a 86 a1 S^^^.GFX0BRTN... 4ec0: 15 86 5e 5e 5e 2f 03 50 45 47 50 56 47 41 5f 4c ..^^^/.PEGPVGA_L 4ed0: 43 44 5f 0a 86 14 40 05 5f 51 31 43 00 70 0d 3d CD_...@._Q1C.p.= 4ee0: 3d 3d 3d 3d 51 55 45 52 59 5f 31 43 3d 3d 3d 3d ====QUERY_1C==== 4ef0: 3d 00 5b 31 a0 31 56 49 44 4f a0 12 49 47 44 53 =.[1.1VIDO..IGDS 4f00: 5e 5e 5e 2e 47 46 58 30 47 48 44 53 00 a1 12 5e ^^^.GFX0GHDS...^ 4f10: 5e 5e 2f 03 50 45 47 50 56 47 41 5f 44 53 53 57 ^^/.PEGPVGA_DSSW 4f20: 70 00 56 49 44 4f 14 21 5f 51 31 44 00 70 0d 3d p.VIDO.!_Q1D.p.= 4f30: 3d 3d 3d 3d 51 55 45 52 59 5f 31 44 3d 3d 3d 3d ====QUERY_1D==== 4f40: 3d 00 5b 31 50 43 4c 4b 14 21 5f 51 31 45 00 70 =.[1PCLK.!_Q1E.p 4f50: 0d 3d 3d 3d 3d 3d 51 55 45 52 59 5f 31 45 3d 3d .=====QUERY_1E== 4f60: 3d 3d 3d 00 5b 31 50 43 4c 4b 14 39 5f 51 32 35 ===.[1PCLK.9_Q25 4f70: 00 70 0d 3d 3d 3d 3d 3d 51 55 45 52 59 5f 32 35 .p.=====QUERY_25 4f80: 3d 3d 3d 3d 3d 00 5b 31 5b 22 0b e8 03 86 5e 5e =====.[1["....^^ 4f90: 42 41 54 31 0a 81 5b 22 0b e8 03 86 5e 5e 42 41 BAT1..["....^^BA 4fa0: 54 31 0a 80 14 2f 5f 51 33 34 00 70 0d 3d 3d 3d T1.../_Q34.p.=== 4fb0: 3d 3d 51 55 45 52 59 5f 33 34 3d 3d 3d 3d 3d 00 ==QUERY_34=====. 4fc0: 5b 31 a0 11 42 4b 45 59 50 48 53 53 0a 71 70 00 [1..BKEYPHSS.qp. 4fd0: 42 4b 45 59 14 32 5f 51 33 37 00 70 0d 3d 3d 3d BKEY.2_Q37.p.=== 4fe0: 3d 3d 51 55 45 52 59 5f 33 37 3d 3d 3d 3d 3d 00 ==QUERY_37=====. 4ff0: 5b 31 86 41 43 41 44 0a 80 5b 22 0b e8 03 86 5e [1.ACAD..["....^ 5000: 5e 42 41 54 31 0a 80 14 32 5f 51 33 38 00 70 0d ^BAT1...2_Q38.p. 5010: 3d 3d 3d 3d 3d 51 55 45 52 59 5f 33 38 3d 3d 3d =====QUERY_38=== 5020: 3d 3d 00 5b 31 86 41 43 41 44 0a 80 5b 22 0b e8 ==.[1.ACAD..[".. 5030: 03 86 5e 5e 42 41 54 31 0a 80 14 29 5f 51 32 44 ..^^BAT1...)_Q2D 5040: 00 70 0d 3d 3d 3d 3d 3d 51 55 45 52 59 5f 32 44 .p.=====QUERY_2D 5050: 3d 3d 3d 3d 3d 00 5b 31 70 00 44 54 53 4d 54 52 =====.[1p.DTSMTR 5060: 41 50 0a 46 14 29 5f 51 32 45 00 70 0d 3d 3d 3d AP.F.)_Q2E.p.=== 5070: 3d 3d 51 55 45 52 59 5f 32 45 3d 3d 3d 3d 3d 00 ==QUERY_2E=====. 5080: 5b 31 70 01 44 54 53 4d 54 52 41 50 0a 46 5b 80 [1p.DTSMTRAP.F[. 5090: 43 43 4c 4b 01 0b 10 10 0a 04 5b 81 20 43 43 4c CCLK......[. CCL 50a0: 4b 03 00 01 44 55 54 59 03 54 48 45 4e 01 00 03 K...DUTY.THEN... 50b0: 46 54 54 5f 01 00 08 54 53 54 53 01 5b 80 45 43 FTT_...TSTS.[.EC 50c0: 52 4d 03 00 0a ff 5b 81 44 04 45 43 52 4d 11 00 RM....[.D.ECRM.. 50d0: 40 4a 45 52 49 42 10 45 52 42 44 08 00 48 0a 53 @JERIB.ERBD..H.S 50e0: 44 54 4d 08 46 53 53 4e 04 46 41 4e 55 04 50 54 DTM.FSSN.FANU.PT 50f0: 56 4c 03 00 04 54 54 48 52 01 00 48 06 50 4a 49 VL...TTHR..H.PJI 5100: 44 08 00 08 00 48 1d 52 46 52 44 10 5b 01 46 41 D....H.RFRD.[.FA 5110: 4d 58 00 14 22 46 41 4e 47 01 5b 23 46 41 4d 58 MX.."FANG.[#FAMX 5120: ff ff 70 68 45 52 49 42 70 45 52 42 44 60 5b 27 ..phERIBpERBD`[' 5130: 46 41 4d 58 a4 60 14 22 46 41 4e 57 02 5b 23 46 FAMX.`."FANW.[#F 5140: 41 4d 58 ff ff 70 68 45 52 49 42 70 69 45 52 42 AMX..phERIBpiERB 5150: 44 5b 27 46 41 4d 58 a4 69 14 09 54 55 56 52 01 D['FAMX.i..TUVR. 5160: a4 0a 03 14 2e 54 48 52 4f 01 a0 09 93 68 00 a4 .....THRO....h.. 5170: 54 48 45 4e a1 1d a0 09 93 68 01 a4 44 55 54 59 THEN.....h..DUTY 5180: a1 11 a0 0a 93 68 0a 02 a4 54 54 48 52 a1 04 a4 .....h...TTHR... 5190: 0a ff 14 2a 43 4c 43 4b 01 a0 10 93 68 00 70 00 ...*CLCK....h.p. 51a0: 54 48 45 4e 70 00 46 54 54 5f a1 0d 70 68 44 55 THENp.FTT_..phDU 51b0: 54 59 70 01 54 48 45 4e a4 54 48 45 4e 14 37 50 TYp.THEN.THEN.7P 51c0: 43 4c 4b 00 70 50 54 56 4c 60 a0 10 93 60 00 70 CLK.pPTVL`...`.p 51d0: 00 54 48 45 4e 70 00 46 54 54 5f a1 19 76 60 70 .THENp.FTT_..v`p 51e0: 80 60 00 61 7b 61 0a 07 61 70 61 44 55 54 59 70 .`.a{a..apaDUTYp 51f0: 01 54 48 45 4e 5b 82 4b 22 42 41 54 31 08 5f 48 .THEN[.K"BAT1._H 5200: 49 44 0c 41 d0 0c 0a 08 5f 55 49 44 01 08 5f 50 ID.A...._UID.._P 5210: 43 4c 12 06 01 5f 53 42 5f 14 39 5f 53 54 41 00 CL..._SB_.9_STA. 5220: a0 29 90 45 43 4f 4b 93 45 43 44 59 00 a0 13 5e .).ECOK.ECDY...^ 5230: 5e 2e 45 43 30 5f 42 41 4c 30 5b 22 0a 14 a4 0a ^.EC0_BAL0[".... 5240: 1f a1 08 5b 22 0a 14 a4 0a 0f a1 08 5b 22 0a 14 ...[".......[".. 5250: a4 0a 1f 14 48 10 5f 42 49 46 00 08 53 54 41 54 ....H._BIF..STAT 5260: 12 3a 0d 01 0b a0 0f 0b a0 0f 01 0b 5c 2b 0b a4 .:..........\+.. 5270: 01 0a 9c 0b 08 01 0b c4 0e 0d 50 41 33 34 36 35 ..........PA3465 5280: 55 20 00 0d 33 36 35 38 51 00 0d 4c 69 2d 49 6f U ..3658Q..Li-Io 5290: 6e 00 0d 43 4f 4d 50 41 4c 20 00 a0 4b 07 90 45 n..COMPAL ..K..E 52a0: 43 4f 4b 93 45 43 44 59 00 70 5e 5e 2e 45 43 30 COK.ECDY.p^^.EC0 52b0: 5f 42 44 4e 30 60 a0 23 93 60 0a 08 70 0a b4 88 _BDN0`.#.`..p... 52c0: 53 54 41 54 0a 06 00 70 0d 50 41 33 34 35 37 55 STAT...p.PA3457U 52d0: 20 00 88 53 54 41 54 0a 09 00 a0 24 93 60 0a 20 ..STAT....$.`. 52e0: 70 0b 02 01 88 53 54 41 54 0a 06 00 70 0d 50 41 p....STAT...p.PA 52f0: 33 34 35 37 55 20 00 88 53 54 41 54 0a 09 00 5b 3457U ..STAT...[ 5300: 22 0a 14 70 5e 5e 2e 45 43 30 5f 42 44 43 30 42 "..p^^.EC0_BDC0B 5310: 46 43 31 5b 22 0a 14 a1 12 70 0d 4c 69 2d 49 6f FC1["....p.Li-Io 5320: 6e 00 88 53 54 41 54 0a 0b 00 a0 2c 42 46 43 31 n..STAT....,BFC1 5330: 78 42 46 43 31 0a 64 60 61 77 61 0a 64 61 70 61 xBFC1.d`awa.dapa 5340: 42 46 43 31 70 61 88 53 54 41 54 01 00 70 61 88 BFC1pa.STAT..pa. 5350: 53 54 41 54 0a 02 00 a4 53 54 41 54 14 45 0c 5f STAT....STAT.E._ 5360: 42 53 54 00 08 50 42 53 54 12 10 04 00 0c ff ff BST..PBST....... 5370: ff ff 0c ff ff ff ff 0b 5c 2b 70 0b 5c 2b 63 a0 ........\+p.\+c. 5380: 38 90 45 43 4f 4b 93 45 43 44 59 00 5b 22 0a 14 8.ECOK.ECDY.[".. 5390: 70 5e 5e 2e 45 43 30 5f 42 53 54 30 42 53 54 31 p^^.EC0_BST0BST1 53a0: 5b 22 0a 14 70 5e 5e 2e 45 43 30 5f 47 41 55 30 ["..p^^.EC0_GAU0 53b0: 42 47 55 31 5b 22 0a 14 a0 15 42 46 43 31 77 42 BGU1["....BFC1wB 53c0: 47 55 31 42 46 43 31 62 78 62 0a 64 64 62 a1 09 GU1BFC1bxb.ddb.. 53d0: 77 42 47 55 31 0a 28 62 70 42 53 54 31 88 50 42 wBGU1.(bpBST1.PB 53e0: 53 54 00 00 70 00 88 50 42 53 54 01 00 70 62 88 ST..p..PBST..pb. 53f0: 50 42 53 54 0a 02 00 70 63 88 50 42 53 54 0a 03 PBST...pc.PBST.. 5400: 00 a0 1b 94 45 43 44 59 00 76 45 43 44 59 a0 0e ....ECDY.vECDY.. 5410: 93 45 43 44 59 00 86 42 41 54 31 0a 80 a4 50 42 .ECDY..BAT1...PB 5420: 53 54 5b 82 2e 50 53 32 4b 08 5f 48 49 44 0c 41 ST[..PS2K._HID.A 5430: d0 03 03 08 5f 43 52 53 11 19 0a 16 47 01 60 00 ...._CRS....G.`. 5440: 60 00 01 01 47 01 64 00 64 00 01 01 23 02 00 01 `...G.d.d...#... 5450: 79 00 5b 82 1e 50 53 32 4d 08 5f 48 49 44 0c 41 y.[..PS2M._HID.A 5460: d0 0f 13 08 5f 43 52 53 11 09 0a 06 23 00 10 01 ...._CRS....#... 5470: 79 00 5b 82 43 6a 50 41 54 41 08 5f 41 44 52 0c y.[.CjPATA._ADR. 5480: 01 00 1f 00 5b 80 50 41 43 53 02 0a 40 0a c0 5b ....[.PACS..@..[ 5490: 81 49 04 50 41 43 53 03 50 52 49 54 10 00 10 50 .I.PACS.PRIT...P 54a0: 53 49 54 04 00 1c 53 59 4e 43 04 00 0c 53 44 54 SIT...SYNC...SDT 54b0: 30 02 00 02 53 44 54 31 02 00 4a 04 49 43 52 30 0...SDT1..J.ICR0 54c0: 04 49 43 52 31 04 49 43 52 32 04 49 43 52 33 04 .ICR1.ICR2.ICR3. 54d0: 49 43 52 34 04 49 43 52 35 04 5b 82 4b 63 50 52 ICR4.ICR5.[.KcPR 54e0: 49 44 08 5f 41 44 52 00 14 40 17 5f 47 54 4d 00 ID._ADR..@._GTM. 54f0: 08 50 42 55 46 11 17 0a 14 00 00 00 00 00 00 00 .PBUF........... 5500: 00 00 00 00 00 00 00 00 00 00 00 00 00 8a 50 42 ..............PB 5510: 55 46 00 50 49 4f 30 8a 50 42 55 46 0a 04 44 4d UF.PIO0.PBUF..DM 5520: 41 30 8a 50 42 55 46 0a 08 50 49 4f 31 8a 50 42 A0.PBUF..PIO1.PB 5530: 55 46 0a 0c 44 4d 41 31 8a 50 42 55 46 0a 10 46 UF..DMA1.PBUF..F 5540: 4c 41 47 70 47 45 54 50 50 52 49 54 50 49 4f 30 LAGpGETPPRITPIO0 5550: 70 47 44 4d 41 7b 53 59 4e 43 01 00 7b 49 43 52 pGDMA{SYNC..{ICR 5560: 33 01 00 7b 49 43 52 30 01 00 53 44 54 30 7b 49 3..{ICR0..SDT0{I 5570: 43 52 31 01 00 44 4d 41 30 a0 14 93 44 4d 41 30 CR1..DMA0...DMA0 5580: 0c ff ff ff ff 70 50 49 4f 30 44 4d 41 30 a0 2e .....pPIO0DMA0.. 5590: 7b 50 52 49 54 0b 00 40 00 a0 14 93 7b 50 52 49 {PRIT..@....{PRI 55a0: 54 0a 90 00 0a 80 70 0b 84 03 50 49 4f 31 a1 0e T.....p...PIO1.. 55b0: 70 47 45 54 54 50 53 49 54 50 49 4f 31 a1 0b 70 pGETTPSITPIO1..p 55c0: 0c ff ff ff ff 50 49 4f 31 70 47 44 4d 41 7b 53 .....PIO1pGDMA{S 55d0: 59 4e 43 0a 02 00 7b 49 43 52 33 0a 02 00 7b 49 YNC...{ICR3...{I 55e0: 43 52 30 0a 02 00 53 44 54 31 7b 49 43 52 31 0a CR0...SDT1{ICR1. 55f0: 02 00 44 4d 41 31 a0 14 93 44 4d 41 31 0c ff ff ..DMA1...DMA1... 5600: ff ff 70 50 49 4f 31 44 4d 41 31 70 47 45 54 46 ..pPIO1DMA1pGETF 5610: 7b 53 59 4e 43 01 00 7b 53 59 4e 43 0a 02 00 50 {SYNC..{SYNC...P 5620: 52 49 54 46 4c 41 47 a0 2c 7b 93 50 49 4f 30 0c RITFLAG.,{.PIO0. 5630: ff ff ff ff 93 44 4d 41 30 0c ff ff ff ff 00 70 .....DMA0......p 5640: 0a 78 50 49 4f 30 70 0a 14 44 4d 41 30 70 0a 03 .xPIO0p..DMA0p.. 5650: 46 4c 41 47 a4 50 42 55 46 14 4c 2a 5f 53 54 4d FLAG.PBUF.L*_STM 5660: 03 8a 68 00 50 49 4f 30 8a 68 0a 04 44 4d 41 30 ..h.PIO0.h..DMA0 5670: 8a 68 0a 08 50 49 4f 31 8a 68 0a 0c 44 4d 41 31 .h..PIO1.h..DMA1 5680: 8a 68 0a 10 46 4c 41 47 a0 41 12 93 87 69 0b 00 .h..FLAG.A...i.. 5690: 02 7b 50 52 49 54 0b f0 c0 50 52 49 54 7b 53 59 .{PRIT...PRIT{SY 56a0: 4e 43 0a 02 53 59 4e 43 70 00 53 44 54 30 7b 49 NC..SYNCp.SDT0{I 56b0: 43 52 30 0a 02 49 43 52 30 7b 49 43 52 31 0a 02 CR0..ICR0{ICR1.. 56c0: 49 43 52 31 7b 49 43 52 33 0a 02 49 43 52 33 7b ICR1{ICR3..ICR3{ 56d0: 49 43 52 35 0a 02 49 43 52 35 8b 69 0a 62 57 34 ICR5..ICR5.i.bW4 56e0: 39 30 8b 69 0a 6a 57 35 33 30 8b 69 0a 7e 57 36 90.i.jW530.i.~W6 56f0: 33 30 8b 69 0a 80 57 36 34 30 8b 69 0a b0 57 38 30.i..W640.i..W8 5700: 38 30 8b 69 0a ba 57 39 33 30 7d 50 52 49 54 0b 80.i..W930}PRIT. 5710: 04 80 50 52 49 54 a0 1e 90 7b 46 4c 41 47 0a 02 ..PRIT...{FLAG.. 5720: 00 7b 57 34 39 30 0b 00 08 00 7d 50 52 49 54 0a .{W490....}PRIT. 5730: 02 50 52 49 54 7d 50 52 49 54 53 45 54 50 50 49 .PRIT}PRITSETPPI 5740: 4f 30 57 35 33 30 57 36 34 30 50 52 49 54 a0 4b O0W530W640PRIT.K 5750: 05 7b 46 4c 41 47 01 00 7d 53 59 4e 43 01 53 59 .{FLAG..}SYNC.SY 5760: 4e 43 70 53 44 4d 41 44 4d 41 30 53 44 54 30 a0 NCpSDMADMA0SDT0. 5770: 12 95 44 4d 41 30 0a 1e 7d 49 43 52 33 01 49 43 ..DMA0..}ICR3.IC 5780: 52 33 a0 12 95 44 4d 41 30 0a 3c 7d 49 43 52 30 R3...DMA0.<}ICR0 5790: 01 49 43 52 30 a0 14 7b 57 39 33 30 0b 00 20 00 .ICR0..{W930.. . 57a0: 7d 49 43 52 31 01 49 43 52 31 a0 4b 15 93 87 6a }ICR1.ICR1.K...j 57b0: 0b 00 02 7b 50 52 49 54 0b 0f bf 50 52 49 54 70 ...{PRIT...PRITp 57c0: 00 50 53 49 54 7b 53 59 4e 43 01 53 59 4e 43 70 .PSIT{SYNC.SYNCp 57d0: 00 53 44 54 31 7b 49 43 52 30 01 49 43 52 30 7b .SDT1{ICR0.ICR0{ 57e0: 49 43 52 31 01 49 43 52 31 7b 49 43 52 33 01 49 ICR1.ICR1{ICR3.I 57f0: 43 52 33 7b 49 43 52 35 01 49 43 52 35 8b 6a 0a CR3{ICR5.ICR5.j. 5800: 62 57 34 39 31 8b 6a 0a 6a 57 35 33 31 8b 6a 0a bW491.j.jW531.j. 5810: 7e 57 36 33 31 8b 6a 0a 80 57 36 34 31 8b 6a 0a ~W631.j..W641.j. 5820: b0 57 38 38 31 8b 6a 0a ba 57 39 33 31 7d 50 52 .W881.j..W931}PR 5830: 49 54 0b 40 80 50 52 49 54 a0 1e 90 7b 46 4c 41 IT.@.PRIT...{FLA 5840: 47 0a 08 00 7b 57 34 39 31 0b 00 08 00 7d 50 52 G...{W491....}PR 5850: 49 54 0a 20 50 52 49 54 a0 4c 04 7b 46 4c 41 47 IT. PRIT.L.{FLAG 5860: 0a 10 00 7d 50 52 49 54 0b 00 40 50 52 49 54 a0 ...}PRIT..@PRIT. 5870: 13 94 50 49 4f 31 0a f0 7d 50 52 49 54 0a 80 50 ..PIO1..}PRIT..P 5880: 52 49 54 a1 21 7d 50 52 49 54 0a 10 50 52 49 54 RIT.!}PRIT..PRIT 5890: 70 53 45 54 54 50 49 4f 31 57 35 33 31 57 36 34 pSETTPIO1W531W64 58a0: 31 50 53 49 54 a0 40 06 7b 46 4c 41 47 0a 04 00 1PSIT.@.{FLAG... 58b0: 7d 53 59 4e 43 0a 02 53 59 4e 43 70 53 44 4d 41 }SYNC..SYNCpSDMA 58c0: 44 4d 41 31 53 44 54 31 a0 13 95 44 4d 41 31 0a DMA1SDT1...DMA1. 58d0: 1e 7d 49 43 52 33 0a 02 49 43 52 33 a0 13 95 44 .}ICR3..ICR3...D 58e0: 4d 41 31 0a 3c 7d 49 43 52 30 0a 02 49 43 52 30 MA1.<}ICR0..ICR0 58f0: a0 15 7b 57 39 33 31 0b 00 20 00 7d 49 43 52 31 ..{W931.. .}ICR1 5900: 0a 02 49 43 52 31 5b 82 47 10 50 5f 44 30 08 5f ..ICR1[.G.P_D0._ 5910: 41 44 52 00 14 4a 0f 5f 47 54 46 00 08 50 49 42 ADR..J._GTF..PIB 5920: 30 11 11 0a 0e 03 00 00 00 00 a0 ef 03 00 00 00 0............... 5930: 00 a0 ef 8c 50 49 42 30 01 50 4d 44 30 8c 50 49 ....PIB0.PMD0.PI 5940: 42 30 0a 08 44 4d 44 30 a0 40 06 7b 50 52 49 54 B0..DMD0.@.{PRIT 5950: 0a 02 00 a0 13 93 7b 50 52 49 54 0a 09 00 0a 08 ......{PRIT..... 5960: 70 0a 08 50 4d 44 30 a1 41 04 70 0a 0a 50 4d 44 p..PMD0.A.p..PMD 5970: 30 7a 7b 50 52 49 54 0b 00 03 00 0a 08 60 7a 7b 0z{PRIT......`z{ 5980: 50 52 49 54 0b 00 30 00 0a 0c 61 72 60 61 62 a0 PRIT..0...ar`ab. 5990: 0c 93 0a 03 62 70 0a 0b 50 4d 44 30 a0 0c 93 0a ....bp..PMD0.... 59a0: 05 62 70 0a 0c 50 4d 44 30 a1 07 70 01 50 4d 44 .bp..PMD0..p.PMD 59b0: 30 a0 43 04 7b 53 59 4e 43 01 00 70 7d 53 44 54 0.C.{SYNC..p}SDT 59c0: 30 0a 40 00 44 4d 44 30 a0 2c 7b 49 43 52 31 01 0.@.DMD0.,{ICR1. 59d0: 00 a0 13 7b 49 43 52 30 01 00 72 44 4d 44 30 0a ...{ICR0..rDMD0. 59e0: 02 44 4d 44 30 a0 0f 7b 49 43 52 33 01 00 70 0a .DMD0..{ICR3..p. 59f0: 45 44 4d 44 30 a1 14 7d 74 7b 50 4d 44 30 0a 07 EDMD0..}t{PMD0.. 5a00: 00 0a 02 00 0a 20 44 4d 44 30 a4 50 49 42 30 5b ..... DMD0.PIB0[ 5a10: 82 46 10 50 5f 44 31 08 5f 41 44 52 01 14 49 0f .F.P_D1._ADR..I. 5a20: 5f 47 54 46 00 08 50 49 42 31 11 11 0a 0e 03 00 _GTF..PIB1...... 5a30: 00 00 00 b0 ef 03 00 00 00 00 b0 ef 8c 50 49 42 .............PIB 5a40: 31 01 50 4d 44 31 8c 50 49 42 31 0a 08 44 4d 44 1.PMD1.PIB1..DMD 5a50: 31 a0 4b 05 7b 50 52 49 54 0a 20 00 a0 13 93 7b 1.K.{PRIT. ....{ 5a60: 50 52 49 54 0a 90 00 0a 80 70 0a 08 50 4d 44 31 PRIT.....p..PMD1 5a70: a1 3c 72 7b 50 53 49 54 0a 03 00 7a 7b 50 53 49 .. 0050: 80 49 ee 6a 65 26 72 1e cd bf 5f 2f 96 d6 c0 0a .I.je&r..._/.... 0060: 92 f5 06 b5 00 b2 3b 29 02 e2 4c 8d c2 f2 bc 41 ......;)..L....A 0070: 77 9c 70 f0 f3 1b 09 d2 63 5a dc a8 83 f8 5e c9 w.p.....cZ....^. 0080: 15 95 f9 fa fd dc 05 b7 4d 67 7f 2d b3 84 33 20 ........Mg.-..3 0090: e1 d1 79 2a a7 6a 77 d1 b6 20 2a 76 42 c5 d5 e9 ..y*.jw.. *vB... 00a0: b6 43 40 55 44 c3 c9 37 99 5f 41 97 70 f3 d1 f6 .C@UD..7._A.p... 00b0: 07 ec 7b 1a 29 a1 c1 f1 91 fd 48 86 6e 3e ce cb ..{.).....H.n>.. 00c0: 01 00 00 00 b6 00 00 00 00 00 02 00 4c 45 4e 4f ............LENO 00d0: 56 4f 54 50 2d 36 38 20 20 20 57 49 4e 44 4f 57 VOTP-68 WINDOW 00e0: 53 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 S .............. 00f0: 00 00 00 00 00 00 8a 6e 2e c9 36 e6 7f 10 8a ea .......n..6..... 0100: 14 ad d2 93 b7 6d 9b 73 ad 83 36 b8 6c a7 a7 ee .....m.s..6.l... 0110: 37 47 16 fe f3 fc cd c7 89 84 06 16 91 0b 1e 81 7G.............. 0120: 11 42 b1 35 52 57 f6 6b bb 5f a5 81 e2 ff 89 8a .B.5RW.k._...... 0130: 95 c3 4d fc e9 56 4f 4c 34 cc 99 5e 62 e1 90 8a ..M..VOL4..^b... 0140: 54 be 4a 00 5c 9b a0 86 41 46 66 9d e2 f2 e7 36 T.J.\...AFf....6 0150: 9c 33 91 27 e7 8d 5c a1 d8 f9 a4 61 8a 1c 04 07 .3.'..\....a.... 0160: e3 2a 1e 14 f1 bd 7f 4c 09 ff 19 11 a9 d4 74 ca .*.....L......t. 0170: 11 9e dc 54 39 bf ...T9. APIC @ 0xbf6dff70 0000: 41 50 49 43 68 00 00 00 01 13 50 54 4c 54 44 20 APICh.....PTLTD 0010: 09 20 41 50 49 43 20 20 00 00 04 06 20 4c 54 50 . APIC .... LTP 0020: 00 00 00 00 00 00 e0 fe 01 00 00 00 00 08 00 00 ................ 0030: 01 00 00 00 00 08 01 01 01 00 00 00 01 0c 02 00 ................ 0040: 00 00 c0 fe 00 00 00 00 04 06 00 05 00 01 04 06 ................ 0050: 01 05 00 01 02 0a 00 00 02 00 00 00 05 00 02 0a ................ 0060: 00 09 09 00 00 00 0d 00 ........ BOOT @ 0xbf6dffd8 0000: 42 4f 4f 54 28 00 00 00 01 a5 50 54 4c 54 44 20 BOOT(.....PTLTD 0010: 24 53 42 46 54 42 4c 24 00 00 04 06 20 4c 54 50 $SBFTBL$.... LTP 0020: 01 00 00 00 36 00 00 00 ....6... SSDT @ 0xbf6d98bd 0000: 53 53 44 54 ad 02 00 00 01 59 53 61 74 61 52 65 SSDT.....YSataRe 0010: 53 61 74 61 41 68 63 69 00 10 00 00 49 4e 54 4c SataAhci....INTL 0020: 24 06 05 20 10 48 28 5c 2f 03 5f 53 42 5f 50 43 $.. .H(\/._SB_PC 0030: 49 30 53 41 54 41 5b 82 4f 0c 50 52 54 30 08 5f I0SATA[.O.PRT0._ 0040: 41 44 52 0b ff ff 14 44 0b 5f 53 44 44 01 08 47 ADR....D._SDD..G 0050: 42 55 30 11 0a 0a 07 00 00 00 00 00 a0 00 8c 47 BU0............G 0060: 42 55 30 0a 00 47 42 30 30 8c 47 42 55 30 0a 01 BU0..GB00.GBU0.. 0070: 47 42 30 31 8c 47 42 55 30 0a 02 47 42 30 32 8c GB01.GBU0..GB02. 0080: 47 42 55 30 0a 03 47 42 30 33 8c 47 42 55 30 0a GBU0..GB03.GBU0. 0090: 04 47 42 30 34 8c 47 42 55 30 0a 05 47 42 30 35 .GB04.GBU0..GB05 00a0: 8c 47 42 55 30 0a 06 47 42 30 36 a0 46 04 93 87 .GBU0..GB06.F... 00b0: 68 0b 00 02 8b 68 0a 9c 57 37 38 30 a0 1e 7b 57 h....h..W780..{W 00c0: 37 38 30 0a 08 00 70 0a 10 47 42 30 30 70 0a 03 780...p..GB00p.. 00d0: 47 42 30 31 70 0a ef 47 42 30 36 a1 16 70 0a 90 GB01p..GB06..p.. 00e0: 47 42 30 30 70 0a 03 47 42 30 31 70 0a ef 47 42 GB00p..GB01p..GB 00f0: 30 36 70 47 42 55 30 47 54 46 30 14 0b 5f 47 54 06pGBU0GTF0.._GT 0100: 46 00 a4 47 54 46 30 5b 82 41 0d 50 52 54 31 08 F..GTF0[.A.PRT1. 0110: 5f 41 44 52 0c ff ff 01 00 14 44 0b 5f 53 44 44 _ADR......D._SDD 0120: 01 08 47 42 55 31 11 0a 0a 07 00 00 00 00 00 a0 ..GBU1.......... 0130: 00 8c 47 42 55 31 0a 00 47 42 31 30 8c 47 42 55 ..GBU1..GB10.GBU 0140: 31 0a 01 47 42 31 31 8c 47 42 55 31 0a 02 47 42 1..GB11.GBU1..GB 0150: 31 32 8c 47 42 55 31 0a 03 47 42 31 33 8c 47 42 12.GBU1..GB13.GB 0160: 55 31 0a 04 47 42 31 34 8c 47 42 55 31 0a 05 47 U1..GB14.GBU1..G 0170: 42 31 35 8c 47 42 55 31 0a 06 47 42 31 36 a0 46 B15.GBU1..GB16.F 0180: 04 93 87 68 0b 00 02 8b 68 0a 9c 57 37 38 31 a0 ...h....h..W781. 0190: 1e 7b 57 37 38 31 0a 08 00 70 0a 10 47 42 31 30 .{W781...p..GB10 01a0: 70 0a 03 47 42 31 31 70 0a ef 47 42 31 36 a1 16 p..GB11p..GB16.. 01b0: 70 0a 90 47 42 31 30 70 0a 03 47 42 31 31 70 0a p..GB10p..GB11p. 01c0: ef 47 42 31 36 70 47 42 55 31 47 54 46 31 14 0b .GB16pGBU1GTF1.. 01d0: 5f 47 54 46 00 a4 47 54 46 31 5b 82 41 0d 50 52 _GTF..GTF1[.A.PR 01e0: 54 32 08 5f 41 44 52 0c ff ff 02 00 14 44 0b 5f T2._ADR......D._ 01f0: 53 44 44 01 08 47 42 55 32 11 0a 0a 07 00 00 00 SDD..GBU2....... 0200: 00 00 a0 00 8c 47 42 55 32 0a 00 47 42 32 30 8c .....GBU2..GB20. 0210: 47 42 55 32 0a 01 47 42 32 31 8c 47 42 55 32 0a GBU2..GB21.GBU2. 0220: 02 47 42 32 32 8c 47 42 55 32 0a 03 47 42 32 33 .GB22.GBU2..GB23 0230: 8c 47 42 55 32 0a 04 47 42 32 34 8c 47 42 55 32 .GBU2..GB24.GBU2 0240: 0a 05 47 42 32 35 8c 47 42 55 32 0a 06 47 42 32 ..GB25.GBU2..GB2 0250: 36 a0 46 04 93 87 68 0b 00 02 8b 68 0a 9c 57 37 6.F...h....h..W7 0260: 38 32 a0 1e 7b 57 37 38 32 0a 08 00 70 0a 10 47 82..{W782...p..G 0270: 42 32 30 70 0a 03 47 42 32 31 70 0a ef 47 42 32 B20p..GB21p..GB2 0280: 36 a1 16 70 0a 90 47 42 32 30 70 0a 03 47 42 32 6..p..GB20p..GB2 0290: 31 70 0a ef 47 42 32 36 70 47 42 55 32 47 54 46 1p..GB26pGBU2GTF 02a0: 32 14 0b 5f 47 54 46 00 a4 47 54 46 32 2.._GTF..GTF2 SSDT @ 0xbf6d981a 0000: 53 53 44 54 a3 00 00 00 01 ed 42 72 74 52 65 66 SSDT......BrtRef 0010: 44 44 30 31 42 52 54 00 00 10 00 00 49 4e 54 4c DD01BRT.....INTL 0020: 24 06 05 20 10 4e 07 5c 2f 04 5f 53 42 5f 50 43 $.. .N.\/._SB_PC 0030: 49 30 47 46 58 30 44 44 30 33 14 1e 5f 42 43 4c I0GFX0DD03.._BCL 0040: 00 a4 12 16 0a 0a 46 0a 28 0a 00 0a 0a 0a 14 0a ......F.(....... 0050: 1e 0a 28 0a 32 0a 3c 0a 46 14 25 5f 42 43 4d 01 ..(.2.<.F.%_BCM. 0060: 78 68 0a 0a 60 61 70 61 5c 2f 05 5f 53 42 5f 50 xh..`apa\/._SB_P 0070: 43 49 30 4c 50 43 42 45 43 30 5f 42 52 54 53 14 CI0LPCBEC0_BRTS. 0080: 23 5f 42 51 43 00 77 5c 2f 05 5f 53 42 5f 50 43 #_BQC.w\/._SB_PC 0090: 49 30 4c 50 43 42 45 43 30 5f 42 52 54 53 0a 0a I0LPCBEC0_BRTS.. 00a0: 60 a4 60 `.` SSDT @ 0xbf6d8e10 0000: 53 53 44 54 5f 02 00 00 01 c8 50 6d 52 65 66 00 SSDT_.....PmRef. 0010: 43 70 75 30 54 73 74 00 00 30 00 00 49 4e 54 4c Cpu0Tst..0..INTL 0020: 24 06 05 20 10 4a 23 5c 2e 5f 50 52 5f 43 50 55 $.. .J#\._PR_CPU 0030: 30 08 5f 54 50 43 0a 00 14 4d 06 5f 50 54 43 00 0._TPC...M._PTC. 0040: a0 37 7b 50 44 43 30 0a 04 00 a4 12 2c 02 11 14 .7{PDC0.....,... 0050: 0a 11 82 0c 00 7f 00 00 00 00 00 00 00 00 00 00 ................ 0060: 00 79 00 11 14 0a 11 82 0c 00 7f 00 00 00 00 00 .y.............. 0070: 00 00 00 00 00 00 79 00 a4 12 2c 02 11 14 0a 11 ......y...,..... 0080: 82 0c 00 01 04 01 00 10 10 00 00 00 00 00 00 79 ...............y 0090: 00 11 14 0a 11 82 0c 00 01 04 01 00 10 10 00 00 ................ 00a0: 00 00 00 00 79 00 08 54 53 53 49 12 41 07 08 12 ....y..TSSI.A... 00b0: 0d 05 0a 64 0b e8 03 0a 00 0a 00 0a 00 12 0d 05 ...d............ 00c0: 0a 58 0b 6b 03 0a 00 0a 0f 0a 00 12 0d 05 0a 4b .X.k...........K 00d0: 0b ee 02 0a 00 0a 0e 0a 00 12 0d 05 0a 3f 0b 71 .............?.q 00e0: 02 0a 00 0a 0d 0a 00 12 0d 05 0a 32 0b f4 01 0a ...........2.... 00f0: 00 0a 0c 0a 00 12 0d 05 0a 26 0b 77 01 0a 00 0a .........&.w.... 0100: 0b 0a 00 12 0c 05 0a 19 0a fa 0a 00 0a 0a 0a 00 ................ 0110: 12 0c 05 0a 0d 0a 7d 0a 00 0a 09 0a 00 08 54 53 ......}.......TS 0120: 53 4d 12 41 07 08 12 0d 05 0a 64 0b e8 03 0a 00 SM.A......d..... 0130: 0a 00 0a 00 12 0d 05 0a 58 0b 6b 03 0a 00 0a 1e ........X.k..... 0140: 0a 00 12 0d 05 0a 4b 0b ee 02 0a 00 0a 1c 0a 00 ......K......... 0150: 12 0d 05 0a 3f 0b 71 02 0a 00 0a 1a 0a 00 12 0d ....?.q......... 0160: 05 0a 32 0b f4 01 0a 00 0a 18 0a 00 12 0d 05 0a ..2............. 0170: 26 0b 77 01 0a 00 0a 16 0a 00 12 0c 05 0a 19 0a &.w............. 0180: fa 0a 00 0a 14 0a 00 12 0c 05 0a 0d 0a 7d 0a 00 .............}.. 0190: 0a 12 0a 00 08 54 53 53 46 0a 00 14 43 08 5f 54 .....TSSF...C._T 01a0: 53 53 00 a0 47 06 90 92 54 53 53 46 5b 12 5f 50 SS..G...TSSF[._P 01b0: 53 53 00 70 5f 50 53 53 60 70 87 60 61 76 61 70 SS.p_PSS`p.`avap 01c0: 83 88 83 88 60 61 00 0a 01 00 62 70 0a 00 63 a2 ....`a....bp..c. 01d0: 35 95 63 87 54 53 53 49 70 78 77 62 74 0a 08 63 5.c.TSSIpxwbt..c 01e0: 00 00 0a 08 00 00 64 70 64 88 83 88 54 53 53 49 ......dpd...TSSI 01f0: 63 00 0a 01 00 70 64 88 83 88 54 53 53 4d 63 00 c....pd...TSSMc. 0200: 0a 01 00 75 63 70 ff 54 53 53 46 a0 0e 7b 50 44 ...ucp.TSSF..{PD 0210: 43 30 0a 04 00 a4 54 53 53 4d a4 54 53 53 49 14 C0....TSSM.TSSI. 0220: 3f 5f 54 53 44 00 a0 27 90 7b 43 46 47 44 0c 00 ?_TSD..'.{CFGD.. 0230: 00 00 01 00 92 7b 50 44 43 30 0a 04 00 a4 12 0f .....{PDC0...... 0240: 01 12 0c 05 0a 05 0a 00 0a 00 0a fd 0a 02 a4 12 ................ 0250: 0f 01 12 0c 05 0a 05 0a 00 0a 00 0a fc 0a 01 ............... SSDT @ 0xbf6d8d6a 0000: 53 53 44 54 a6 00 00 00 01 6d 50 6d 52 65 66 00 SSDT.....mPmRef. 0010: 43 70 75 31 54 73 74 00 00 30 00 00 49 4e 54 4c Cpu1Tst..0..INTL 0020: 24 06 05 20 10 41 08 5c 2e 5f 50 52 5f 43 50 55 $.. .A.\._PR_CPU 0030: 31 08 5f 54 50 43 0a 00 14 16 5f 50 54 43 00 a4 1._TPC...._PTC.. 0040: 5c 2f 03 5f 50 52 5f 43 50 55 30 5f 50 54 43 14 \/._PR_CPU0_PTC. 0050: 16 5f 54 53 53 00 a4 5c 2f 03 5f 50 52 5f 43 50 ._TSS..\/._PR_CP 0060: 55 30 5f 54 53 53 14 3f 5f 54 53 44 00 a0 27 90 U0_TSS.?_TSD..'. 0070: 7b 43 46 47 44 0c 00 00 00 01 00 92 7b 50 44 43 {CFGD.......{PDC 0080: 31 0a 04 00 a4 12 0f 01 12 0c 05 0a 05 0a 00 0a 1............... 0090: 00 0a fd 0a 02 a4 12 0f 01 12 0c 05 0a 05 0a 00 ................ 00a0: 0a 01 0a fc 0a 01 ...... SSDT @ 0xbf6d8884 0000: 53 53 44 54 e6 04 00 00 01 df 50 6d 52 65 66 00 SSDT......PmRef. 0010: 43 70 75 50 6d 00 00 00 00 30 00 00 49 4e 54 4c CpuPm....0..INTL 0020: 24 06 05 20 10 45 08 5c 00 08 53 53 44 54 12 43 $.. .E.\..SSDT.C 0030: 05 0c 0d 43 50 55 30 49 53 54 20 00 0c 9e 95 6d ...CPU0IST ....m 0040: bf 0c b4 01 00 00 0d 43 50 55 31 49 53 54 20 00 .......CPU1IST . 0050: 0c 52 97 6d bf 0c c8 00 00 00 0d 43 50 55 30 43 .R.m.......CPU0C 0060: 53 54 20 00 0c 6f 90 6d bf 0c aa 04 00 00 0d 43 ST ..o.m.......C 0070: 50 55 31 43 53 54 20 00 0c 19 95 6d bf 0c 85 00 PU1CST ....m.... 0080: 00 00 08 43 46 47 44 0c f1 69 3f 11 08 5c 50 44 ...CFGD..i?..\PD 0090: 43 30 0c 00 00 00 80 08 5c 50 44 43 31 0c 00 00 C0......\PDC1... 00a0: 00 80 08 5c 53 44 54 4c 0a 00 10 4d 21 5c 2e 5f ...\SDTL...M!\._ 00b0: 50 52 5f 43 50 55 30 08 48 49 30 5f 0a 00 08 48 PR_CPU0.HI0_...H 00c0: 43 30 5f 0a 00 14 48 06 5f 50 44 43 01 8a 68 0a C0_...H._PDC..h. 00d0: 00 52 45 56 53 8a 68 0a 04 53 49 5a 45 70 87 68 .REVS.h..SIZEp.h 00e0: 60 70 74 60 0a 08 00 61 5b 13 68 0a 40 77 61 0a `pt`...a[.h.@wa. 00f0: 08 00 54 45 4d 50 08 53 54 53 30 11 07 0a 04 00 ..TEMP.STS0..... 0100: 00 00 00 73 53 54 53 30 54 45 4d 50 62 5f 4f 53 ...sSTS0TEMPb_OS 0110: 43 11 13 0a 10 16 a6 77 40 0c 29 be 47 9e bd d8 C......w@.).G... 0120: 70 58 71 39 53 52 45 56 53 53 49 5a 45 62 14 49 pXq9SREVSSIZEb.I 0130: 19 5f 4f 53 43 04 8a 6b 0a 00 53 54 53 30 8a 6b ._OSC..k..STS0.k 0140: 0a 04 43 41 50 30 8a 68 0a 00 49 49 44 30 8a 68 ..CAP0.h..IID0.h 0150: 0a 04 49 49 44 31 8a 68 0a 08 49 49 44 32 8a 68 ..IID1.h..IID2.h 0160: 0a 0c 49 49 44 33 08 55 49 44 30 11 13 0a 10 16 ..IID3.UID0..... 0170: a6 77 40 0c 29 be 47 9e bd d8 70 58 71 39 53 8a .w@.).G...pXq9S. 0180: 55 49 44 30 0a 00 45 49 44 30 8a 55 49 44 30 0a UID0..EID0.UID0. 0190: 04 45 49 44 31 8a 55 49 44 30 0a 08 45 49 44 32 .EID1.UID0..EID2 01a0: 8a 55 49 44 30 0a 0c 45 49 44 33 a0 32 92 90 90 .UID0..EID3.2... 01b0: 93 49 49 44 30 45 49 44 30 93 49 49 44 31 45 49 .IID0EID0.IID1EI 01c0: 44 31 90 93 49 49 44 32 45 49 44 32 93 49 49 44 D1..IID2EID2.IID 01d0: 33 45 49 44 33 70 0a 06 53 54 53 30 a4 6b a0 0f 3EID3p..STS0.k.. 01e0: 92 93 69 0a 01 70 0a 0a 53 54 53 30 a4 6b 7d 7b ..i..p..STS0.k}{ 01f0: 50 44 43 30 0c ff ff ff 7f 00 43 41 50 30 50 44 PDC0......CAP0PD 0200: 43 30 70 7b 50 44 43 30 0a ff 00 50 43 50 30 a0 C0p{PDC0...PCP0. 0210: 4c 05 7b 43 46 47 44 0a 01 00 a0 41 05 90 90 7b L.{CFGD....A...{ 0220: 43 46 47 44 0c 00 00 00 01 00 93 7b 50 44 43 30 CFGD.......{PDC0 0230: 0a 09 00 0a 09 92 7b 53 44 54 4c 0a 01 00 7d 53 ......{SDTL...}S 0240: 44 54 4c 0a 01 53 44 54 4c 5b 80 49 53 54 30 00 DTL..SDTL[.IST0. 0250: 83 88 53 53 44 54 0a 01 00 83 88 53 53 44 54 0a ..SSDT.....SSDT. 0260: 02 00 5b 20 49 53 54 30 48 49 30 5f a0 49 05 7b ..[ IST0HI0_.I.{ 0270: 43 46 47 44 0a f0 00 a0 4e 04 90 90 7b 43 46 47 CFGD....N...{CFG 0280: 44 0c 00 00 00 01 00 7b 50 44 43 30 0a 18 00 92 D......{PDC0.... 0290: 7b 53 44 54 4c 0a 02 00 7d 53 44 54 4c 0a 02 53 {SDTL...}SDTL..S 02a0: 44 54 4c 5b 80 43 53 54 30 00 83 88 53 53 44 54 DTL[.CST0...SSDT 02b0: 0a 07 00 83 88 53 53 44 54 0a 08 00 5b 20 43 53 .....SSDT...[ CS 02c0: 54 30 48 43 30 5f a4 6b 10 4d 21 5c 2e 5f 50 52 T0HC0_.k.M!\._PR 02d0: 5f 43 50 55 31 08 48 49 31 5f 0a 00 08 48 43 31 _CPU1.HI1_...HC1 02e0: 5f 0a 00 14 48 06 5f 50 44 43 01 8a 68 0a 00 52 _...H._PDC..h..R 02f0: 45 56 53 8a 68 0a 04 53 49 5a 45 70 87 68 60 70 EVS.h..SIZEp.h`p 0300: 74 60 0a 08 00 61 5b 13 68 0a 40 77 61 0a 08 00 t`...a[.h.@wa... 0310: 54 45 4d 50 08 53 54 53 31 11 07 0a 04 00 00 00 TEMP.STS1....... 0320: 00 73 53 54 53 31 54 45 4d 50 62 5f 4f 53 43 11 .sSTS1TEMPb_OSC. 0330: 13 0a 10 16 a6 77 40 0c 29 be 47 9e bd d8 70 58 .....w@.).G...pX 0340: 71 39 53 52 45 56 53 53 49 5a 45 62 14 49 19 5f q9SREVSSIZEb.I._ 0350: 4f 53 43 04 8a 6b 0a 00 53 54 53 31 8a 6b 0a 04 OSC..k..STS1.k.. 0360: 43 41 50 31 8a 68 0a 00 49 49 44 30 8a 68 0a 04 CAP1.h..IID0.h.. 0370: 49 49 44 31 8a 68 0a 08 49 49 44 32 8a 68 0a 0c IID1.h..IID2.h.. 0380: 49 49 44 33 08 55 49 44 31 11 13 0a 10 16 a6 77 IID3.UID1......w 0390: 40 0c 29 be 47 9e bd d8 70 58 71 39 53 8a 55 49 @.).G...pXq9S.UI 03a0: 44 31 0a 00 45 49 44 30 8a 55 49 44 31 0a 04 45 D1..EID0.UID1..E 03b0: 49 44 31 8a 55 49 44 31 0a 08 45 49 44 32 8a 55 ID1.UID1..EID2.U 03c0: 49 44 31 0a 0c 45 49 44 33 a0 32 92 90 90 93 49 ID1..EID3.2....I 03d0: 49 44 30 45 49 44 30 93 49 49 44 31 45 49 44 31 ID0EID0.IID1EID1 03e0: 90 93 49 49 44 32 45 49 44 32 93 49 49 44 33 45 ..IID2EID2.IID3E 03f0: 49 44 33 70 0a 06 53 54 53 31 a4 6b a0 0f 92 93 ID3p..STS1.k.... 0400: 69 0a 01 70 0a 0a 53 54 53 31 a4 6b 7d 7b 50 44 i..p..STS1.k}{PD 0410: 43 31 0c ff ff ff 7f 00 43 41 50 31 50 44 43 31 C1......CAP1PDC1 0420: 70 7b 50 44 43 31 0a ff 00 50 43 50 31 a0 4c 05 p{PDC1...PCP1.L. 0430: 7b 43 46 47 44 0a 01 00 a0 41 05 90 90 7b 43 46 {CFGD....A...{CF 0440: 47 44 0c 00 00 00 01 00 93 7b 50 44 43 31 0a 09 GD.......{PDC1.. 0450: 00 0a 09 92 7b 53 44 54 4c 0a 10 00 7d 53 44 54 ....{SDTL...}SDT 0460: 4c 0a 10 53 44 54 4c 5b 80 49 53 54 31 00 83 88 L..SDTL[.IST1... 0470: 53 53 44 54 0a 04 00 83 88 53 53 44 54 0a 05 00 SSDT.....SSDT... 0480: 5b 20 49 53 54 31 48 49 31 5f a0 49 05 7b 43 46 [ IST1HI1_.I.{CF 0490: 47 44 0a f0 00 a0 4e 04 90 90 7b 43 46 47 44 0c GD....N...{CFGD. 04a0: 00 00 00 01 00 7b 50 44 43 31 0a 18 00 92 7b 53 .....{PDC1....{S 04b0: 44 54 4c 0a 20 00 7d 53 44 54 4c 0a 20 53 44 54 DTL. .}SDTL. SDT 04c0: 4c 5b 80 43 53 54 31 00 83 88 53 53 44 54 0a 0a L[.CST1...SSDT.. 04d0: 00 83 88 53 53 44 54 0a 0b 00 5b 20 43 53 54 31 ...SSDT...[ CST1 04e0: 48 43 31 5f a4 6b HC1_.k XSDT @ 0xbf6d87f0 0000: 58 53 44 54 94 00 00 00 01 c2 4c 45 4e 4f 56 4f XSDT......LENOVO 0010: 54 50 2d 36 38 20 20 20 00 00 04 06 20 4c 54 50 TP-68 .... LTP 0020: 00 00 00 00 d2 fb 6d bf 00 00 00 00 c6 fc 6d bf ......m.......m. 0030: 00 00 00 00 2e fd 6d bf 00 00 00 00 66 fd 6d bf ......m.....f.m. 0040: 00 00 00 00 a2 fd 6d bf 00 00 00 00 d4 fd 6d bf ......m.......m. 0050: 00 00 00 00 fa fd 6d bf 00 00 00 00 70 ff 6d bf ......m.....p.m. 0060: 00 00 00 00 d8 ff 6d bf 00 00 00 00 bd 98 6d bf ......m.......m. 0070: 00 00 00 00 1a 98 6d bf 00 00 00 00 10 8e 6d bf ......m.......m. 0080: 00 00 00 00 6a 8d 6d bf 00 00 00 00 84 88 6d bf ....j.m.......m. 0090: 00 00 00 00 .... RSD PTR @ 0xf7240 0000: 52 53 44 20 50 54 52 20 c5 4c 45 4e 4f 56 4f 02 RSD PTR .LENOVO. 0010: 94 87 6d bf 24 00 00 00 f0 87 6d bf 00 00 00 00 ..m.$.....m..... 0020: 39 00 00 00 9... fwts-test/checksum-0001/acpidump-0004.log000066400000000000000000004054211231470457100200760ustar00rootroot00000000000000DSDT @ 0xbf6d9b6a 0000: 44 53 44 54 f4 5f 00 00 02 11 54 4f 53 43 50 4c DSDT._....TOSCPL 0010: 43 52 45 53 54 4c 4e 45 00 00 04 06 49 4e 54 4c CRESTLNE....INTL 0020: 08 06 06 20 08 5a 30 30 30 01 08 5a 30 30 31 0a ... .Z000..Z001. 0030: 02 08 5a 30 30 32 0a 04 08 5a 30 30 33 0a 08 08 ..Z002...Z003... 0040: 5a 30 30 34 00 08 5a 30 30 35 0a 0f 08 5a 30 30 Z004..Z005...Z00 0050: 36 0a 0d 08 5a 30 30 37 0a 0b 08 5a 30 30 38 0a 6...Z007...Z008. 0060: 09 08 45 43 44 59 0a 07 5b 01 4d 55 54 58 00 5b ..ECDY..[.MUTX.[ 0070: 80 50 52 54 30 01 0a 80 0a 04 5b 81 0b 50 52 54 .PRT0.....[..PRT 0080: 30 13 50 38 30 48 20 14 4e 07 50 38 58 48 0a a0 0.P80H .N.P8XH.. 0090: 17 93 68 00 70 7d 7b 50 38 30 44 0c 00 ff ff ff ..h.p}{P80D..... 00a0: 00 69 00 50 38 30 44 a0 1b 93 68 01 70 7d 7b 50 .i.P80D...h.p}{P 00b0: 38 30 44 0c ff 00 ff ff 00 79 69 0a 08 00 00 50 80D......yi....P 00c0: 38 30 44 a0 1c 93 68 0a 02 70 7d 7b 50 38 30 44 80D...h..p}{P80D 00d0: 0c ff ff 00 ff 00 79 69 0a 10 00 00 50 38 30 44 ......yi....P80D 00e0: a0 1c 93 68 0a 03 70 7d 7b 50 38 30 44 0c ff ff ...h..p}{P80D... 00f0: ff 00 00 79 69 0a 18 00 00 50 38 30 44 70 50 38 ...yi....P80DpP8 0100: 30 44 50 38 30 48 14 0c 5f 50 49 43 01 70 68 47 0DP80H.._PIC.phG 0110: 50 49 43 14 46 06 5f 50 54 53 01 70 00 50 38 30 PIC.F._PTS.p.P80 0120: 44 50 38 58 48 00 68 a0 1e 93 68 0a 03 70 01 5c DP8XH.h...h..p.\ 0130: 2f 05 5f 53 42 5f 50 43 49 30 4c 50 43 42 45 43 /._SB_PCI0LPCBEC 0140: 30 5f 53 33 4c 44 a0 33 93 68 0a 04 70 01 5c 2f 0_S3LD.3.h..p.\/ 0150: 05 5f 53 42 5f 50 43 49 30 4c 50 43 42 45 43 30 ._SB_PCI0LPCBEC0 0160: 5f 53 33 4c 44 5c 2f 04 5f 53 42 5f 50 43 49 30 _S3LD\/._SB_PCI0 0170: 4c 50 43 42 50 48 53 53 0a 0e 14 4c 1c 5f 57 41 LPCBPHSS...L._WA 0180: 4b 01 50 38 58 48 01 0a ab a0 30 91 93 68 0a 03 K.P8XH....0..h.. 0190: 93 68 0a 04 a0 25 7b 43 46 47 44 0c 00 00 00 01 .h...%{CFGD..... 01a0: 00 a0 18 90 7b 43 46 47 44 0a f0 00 93 4f 53 59 ....{CFGD....OSY 01b0: 53 0b d1 07 54 52 41 50 0a 3d a0 18 93 52 50 31 S...TRAP.=...RP1 01c0: 44 00 86 5c 2f 03 5f 53 42 5f 50 43 49 30 52 50 D..\/._SB_PCI0RP 01d0: 30 31 00 a0 18 93 52 50 32 44 00 86 5c 2f 03 5f 01....RP2D..\/._ 01e0: 53 42 5f 50 43 49 30 52 50 30 32 00 a0 18 93 52 SB_PCI0RP02....R 01f0: 50 33 44 00 86 5c 2f 03 5f 53 42 5f 50 43 49 30 P3D..\/._SB_PCI0 0200: 52 50 30 33 00 a0 18 93 52 50 34 44 00 86 5c 2f RP03....RP4D..\/ 0210: 03 5f 53 42 5f 50 43 49 30 52 50 30 34 00 a0 18 ._SB_PCI0RP04... 0220: 93 52 50 35 44 00 86 5c 2f 03 5f 53 42 5f 50 43 .RP5D..\/._SB_PC 0230: 49 30 52 50 30 35 00 a0 18 93 52 50 36 44 00 86 I0RP05....RP6D.. 0240: 5c 2f 03 5f 53 42 5f 50 43 49 30 52 50 30 36 00 \/._SB_PCI0RP06. 0250: a0 12 93 68 0a 03 50 38 58 48 00 0a 30 54 52 41 ...h..P8XH..0TRA 0260: 50 0a 46 a0 43 0d 93 68 0a 04 50 38 58 48 00 0a P.F.C..h..P8XH.. 0270: 40 5c 2f 04 5f 53 42 5f 50 43 49 30 4c 50 43 42 @\/._SB_PCI0LPCB 0280: 50 48 53 53 0a 0f 70 57 41 4b 46 60 70 00 57 41 PHSS..pWAKF`p.WA 0290: 4b 46 7b 60 0a 05 60 a0 18 93 60 01 50 38 58 48 KF{`..`...`.P8XH 02a0: 00 0a 41 86 5c 2e 5f 53 42 5f 50 57 52 42 0a 02 ..A.\._SB_PWRB.. 02b0: a0 46 08 44 54 53 45 54 52 41 50 0a 47 a0 42 06 .F.DTSETRAP.G.B. 02c0: 90 5c 2f 04 5f 53 42 5f 50 43 49 30 4c 50 43 42 .\/._SB_PCI0LPCB 02d0: 45 43 4f 4b 93 45 43 44 59 00 a0 27 92 95 44 54 ECOK.ECDY..'..DT 02e0: 53 31 44 54 53 32 70 44 54 53 31 5c 2f 05 5f 53 S1DTS2pDTS1\/._S 02f0: 42 5f 50 43 49 30 4c 50 43 42 45 43 30 5f 53 4b B_PCI0LPCBEC0_SK 0300: 54 41 a1 1d 70 44 54 53 32 5c 2f 05 5f 53 42 5f TA..pDTS2\/._SB_ 0310: 50 43 49 30 4c 50 43 42 45 43 30 5f 53 4b 54 41 PCI0LPCBEC0_SKTA 0320: a1 16 5c 2f 04 5f 53 42 5f 50 43 49 30 4c 50 43 ..\/._SB_PCI0LPC 0330: 42 50 48 53 53 0a 10 5c 2e 5f 50 52 5f 52 50 50 BPHSS..\._PR_RPP 0340: 43 a4 12 04 02 00 00 14 1e 47 45 54 42 0b 77 68 C........GETB.wh 0350: 0a 08 60 77 69 0a 08 61 5b 13 6a 60 61 54 42 46 ..`wi..a[.j`aTBF 0360: 33 a4 54 42 46 33 14 42 09 50 4e 4f 54 08 a0 4a 3.TBF3.B.PNOT..J 0370: 06 4d 50 45 4e a0 31 7b 50 44 43 30 0a 08 00 86 .MPEN.1{PDC0.... 0380: 5c 2e 5f 50 52 5f 43 50 55 30 0a 80 a0 1a 7b 50 \._PR_CPU0....{P 0390: 44 43 30 0a 10 00 5b 22 0a 64 86 5c 2e 5f 50 52 DC0...[".d.\._PR 03a0: 5f 43 50 55 30 0a 81 a0 31 7b 50 44 43 31 0a 08 _CPU0...1{PDC1.. 03b0: 00 86 5c 2e 5f 50 52 5f 43 50 55 31 0a 80 a0 1a ..\._PR_CPU1.... 03c0: 7b 50 44 43 31 0a 10 00 5b 22 0a 64 86 5c 2e 5f {PDC1...[".d.\._ 03d0: 50 52 5f 43 50 55 31 0a 81 a1 1f 86 5c 2e 5f 50 PR_CPU1.....\._P 03e0: 52 5f 43 50 55 30 0a 80 5b 22 0a 64 86 5c 2e 5f R_CPU0..[".d.\._ 03f0: 50 52 5f 43 50 55 30 0a 81 14 17 54 52 41 50 09 PR_CPU0....TRAP. 0400: 70 68 53 4d 49 46 70 00 54 52 50 30 a4 53 4d 49 phSMIFp.TRP0.SMI 0410: 46 10 41 0f 5f 53 42 5f 14 4a 0e 5f 49 4e 49 00 F.A._SB_.J._INI. 0420: 70 0b 99 99 4d 41 52 4b a0 1c 44 54 53 45 54 52 p...MARK..DTSETR 0430: 41 50 0a 47 5e 2f 03 50 43 49 30 4c 50 43 42 50 AP.G^/.PCI0LPCBP 0440: 48 53 53 0a 10 70 0b d0 07 4f 53 59 53 a0 4a 09 HSS..p...OSYS.J. 0450: 5b 12 5f 4f 53 49 60 a0 18 5f 4f 53 49 0d 4c 69 [._OSI`.._OSI.Li 0460: 6e 75 78 00 70 01 4c 49 4e 58 70 00 45 43 44 59 nux.p.LINXp.ECDY 0470: a0 1b 5f 4f 53 49 0d 57 69 6e 64 6f 77 73 20 32 .._OSI.Windows 2 0480: 30 30 31 00 70 0b d1 07 4f 53 59 53 a0 1f 5f 4f 001.p...OSYS.._O 0490: 53 49 0d 57 69 6e 64 6f 77 73 20 32 30 30 31 20 SI.Windows 2001 04a0: 53 50 31 00 70 0b d1 07 4f 53 59 53 a0 1f 5f 4f SP1.p...OSYS.._O 04b0: 53 49 0d 57 69 6e 64 6f 77 73 20 32 30 30 31 20 SI.Windows 2001 04c0: 53 50 32 00 70 0b d2 07 4f 53 59 53 a0 1b 5f 4f SP2.p...OSYS.._O 04d0: 53 49 0d 57 69 6e 64 6f 77 73 20 32 30 30 36 00 SI.Windows 2006. 04e0: 70 0b d6 07 4f 53 59 53 a0 14 90 4d 50 45 4e 93 p...OSYS...MPEN. 04f0: 4f 53 59 53 0b d1 07 54 52 41 50 0a 3d 54 52 41 OSYS...TRAP.=TRA 0500: 50 0a 2b 5b 80 47 4e 56 53 00 0c bc 2d 6e bf 0b P.+[.GNVS...-n.. 0510: 00 01 5b 81 45 24 47 4e 56 53 10 4f 53 59 53 10 ..[.E$GNVS.OSYS. 0520: 53 4d 49 46 08 50 52 4d 30 08 50 52 4d 31 08 53 SMIF.PRM0.PRM1.S 0530: 43 49 46 08 50 52 4d 32 08 50 52 4d 33 08 4c 43 CIF.PRM2.PRM3.LC 0540: 4b 46 08 50 52 4d 34 08 50 52 4d 35 08 50 38 30 KF.PRM4.PRM5.P80 0550: 44 20 4c 49 44 53 08 50 57 52 53 08 44 42 47 53 D LIDS.PWRS.DBGS 0560: 08 4c 49 4e 58 08 00 08 41 43 54 31 08 41 43 54 .LINX...ACT1.ACT 0570: 54 08 50 53 56 54 08 54 43 31 56 08 54 43 32 56 T.PSVT.TC1V.TC2V 0580: 08 54 53 50 56 08 43 52 54 54 08 44 54 53 45 08 .TSPV.CRTT.DTSE. 0590: 44 54 53 31 08 44 54 53 32 08 00 40 05 41 50 49 DTS1.DTS2..@.API 05a0: 43 08 4d 50 45 4e 08 50 43 50 30 08 50 43 50 31 C.MPEN.PCP0.PCP1 05b0: 08 50 50 43 4d 08 00 28 43 4d 41 50 08 43 4d 42 .PPCM..(CMAP.CMB 05c0: 50 08 4c 50 54 50 08 46 44 43 50 08 00 30 49 47 P.LPTP.FDCP..0IG 05d0: 44 53 08 54 4c 53 54 08 43 41 44 4c 08 50 41 44 DS.TLST.CADL.PAD 05e0: 4c 08 43 53 54 45 10 4e 53 54 45 10 53 53 54 45 L.CSTE.NSTE.SSTE 05f0: 10 4e 44 49 44 08 44 49 44 31 20 44 49 44 32 20 .NDID.DID1 DID2 0600: 44 49 44 33 20 44 49 44 34 20 44 49 44 35 20 00 DID3 DID4 DID5 . 0610: 40 06 42 4c 43 53 08 42 52 54 4c 08 41 4c 53 45 @.BLCS.BRTL.ALSE 0620: 08 41 4c 41 46 08 4c 4c 4f 57 08 4c 48 49 48 08 .ALAF.LLOW.LHIH. 0630: 00 08 45 4d 41 45 08 45 4d 41 50 10 45 4d 41 4c ..EMAE.EMAP.EMAL 0640: 10 00 08 4d 45 46 45 08 00 18 54 50 4d 50 08 54 ...MEFE...TPMP.T 0650: 50 4d 45 08 00 40 04 47 54 46 30 38 47 54 46 32 PME..@.GTF08GTF2 0660: 38 49 44 45 4d 08 47 54 46 31 38 00 40 09 41 53 8IDEM.GTF18.@.AS 0670: 4c 42 20 49 42 54 54 08 49 50 41 54 08 49 54 56 LB IBTT.IPAT.ITV 0680: 46 08 49 54 56 4d 08 49 50 53 43 08 49 42 4c 43 F.ITVM.IPSC.IBLC 0690: 08 49 42 49 41 08 49 53 53 43 08 49 34 30 39 08 .IBIA.ISSC.I409. 06a0: 49 35 30 39 08 49 36 30 39 08 49 37 30 39 08 49 I509.I609.I709.I 06b0: 44 4d 4d 08 49 44 4d 53 08 49 46 31 45 08 48 56 DMM.IDMS.IF1E.HV 06c0: 43 4f 08 4e 58 44 31 20 4e 58 44 32 20 4d 41 52 CO.NXD1 NXD2 MAR 06d0: 4b 10 42 52 41 44 08 42 54 45 4e 08 56 56 45 4e K.BRAD.BTEN.VVEN 06e0: 08 42 47 54 4c 08 54 4d 45 45 01 00 07 53 43 55 .BGTL.TMEE...SCU 06f0: 30 01 53 43 55 31 01 53 43 55 32 01 53 43 55 33 0.SCU1.SCU2.SCU3 0700: 01 00 04 58 4b 53 50 01 58 4b 49 4e 01 58 4b 49 ...XKSP.XKIN.XKI 0710: 44 01 58 4b 4f 4b 01 00 04 42 47 55 31 08 42 53 D.XKOK...BGU1.BS 0720: 54 31 08 42 46 43 31 10 57 4b 4c 4e 08 57 41 4b T1.BFC1.WKLN.WAK 0730: 46 08 44 53 4d 44 08 42 41 59 53 08 48 41 50 45 F.DSMD.BAYS.HAPE 0740: 01 00 07 44 54 53 4d 01 00 07 4f 44 54 31 08 4f ...DTSM...ODT1.O 0750: 44 54 32 08 44 54 53 57 08 08 44 53 45 4e 01 08 DT2.DTSW..DSEN.. 0760: 45 43 4f 4e 00 08 47 50 49 43 00 08 43 54 59 50 ECON..GPIC..CTYP 0770: 00 08 4c 30 31 43 00 08 56 46 4e 30 00 08 56 46 ..L01C..VFN0..VF 0780: 4e 31 00 10 4a 7c 5f 47 50 45 14 46 35 5f 4c 30 N1..J|_GPE.F5_L0 0790: 31 00 72 4c 30 31 43 01 4c 30 31 43 50 38 58 48 1.rL01C.L01CP8XH 07a0: 00 01 50 38 58 48 01 4c 30 31 43 a0 48 08 90 93 ..P8XH.L01C.H... 07b0: 52 50 31 44 00 5c 2f 04 5f 53 42 5f 50 43 49 30 RP1D.\/._SB_PCI0 07c0: 52 50 30 31 48 50 53 58 5b 22 0a 64 a0 40 05 5c RP01HPSX[".d.@.\ 07d0: 2f 04 5f 53 42 5f 50 43 49 30 52 50 30 31 50 44 /._SB_PCI0RP01PD 07e0: 43 58 70 01 5c 2f 04 5f 53 42 5f 50 43 49 30 52 CXp.\/._SB_PCI0R 07f0: 50 30 31 50 44 43 58 70 01 5c 2f 04 5f 53 42 5f P01PDCXp.\/._SB_ 0800: 50 43 49 30 52 50 30 31 48 50 53 58 86 5c 2f 03 PCI0RP01HPSX.\/. 0810: 5f 53 42 5f 50 43 49 30 52 50 30 31 00 a1 16 70 _SB_PCI0RP01...p 0820: 01 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 30 31 .\/._SB_PCI0RP01 0830: 48 50 53 58 a0 48 08 90 93 52 50 32 44 00 5c 2f HPSX.H...RP2D.\/ 0840: 04 5f 53 42 5f 50 43 49 30 52 50 30 32 48 50 53 ._SB_PCI0RP02HPS 0850: 58 5b 22 0a 64 a0 40 05 5c 2f 04 5f 53 42 5f 50 X[".d.@.\/._SB_P 0860: 43 49 30 52 50 30 32 50 44 43 58 70 01 5c 2f 04 CI0RP02PDCXp.\/. 0870: 5f 53 42 5f 50 43 49 30 52 50 30 32 50 44 43 58 _SB_PCI0RP02PDCX 0880: 70 01 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 30 p.\/._SB_PCI0RP0 0890: 32 48 50 53 58 86 5c 2f 03 5f 53 42 5f 50 43 49 2HPSX.\/._SB_PCI 08a0: 30 52 50 30 32 00 a1 16 70 01 5c 2f 04 5f 53 42 0RP02...p.\/._SB 08b0: 5f 50 43 49 30 52 50 30 32 48 50 53 58 a0 48 08 _PCI0RP02HPSX.H. 08c0: 90 93 52 50 33 44 00 5c 2f 04 5f 53 42 5f 50 43 ..RP3D.\/._SB_PC 08d0: 49 30 52 50 30 33 48 50 53 58 5b 22 0a 64 a0 40 I0RP03HPSX[".d.@ 08e0: 05 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 30 33 .\/._SB_PCI0RP03 08f0: 50 44 43 58 70 01 5c 2f 04 5f 53 42 5f 50 43 49 PDCXp.\/._SB_PCI 0900: 30 52 50 30 33 50 44 43 58 70 01 5c 2f 04 5f 53 0RP03PDCXp.\/._S 0910: 42 5f 50 43 49 30 52 50 30 33 48 50 53 58 86 5c B_PCI0RP03HPSX.\ 0920: 2f 03 5f 53 42 5f 50 43 49 30 52 50 30 33 00 a1 /._SB_PCI0RP03.. 0930: 16 70 01 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 .p.\/._SB_PCI0RP 0940: 30 33 48 50 53 58 a0 48 08 90 93 52 50 34 44 00 03HPSX.H...RP4D. 0950: 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 30 34 48 \/._SB_PCI0RP04H 0960: 50 53 58 5b 22 0a 64 a0 40 05 5c 2f 04 5f 53 42 PSX[".d.@.\/._SB 0970: 5f 50 43 49 30 52 50 30 34 50 44 43 58 70 01 5c _PCI0RP04PDCXp.\ 0980: 2f 04 5f 53 42 5f 50 43 49 30 52 50 30 34 50 44 /._SB_PCI0RP04PD 0990: 43 58 70 01 5c 2f 04 5f 53 42 5f 50 43 49 30 52 CXp.\/._SB_PCI0R 09a0: 50 30 34 48 50 53 58 86 5c 2f 03 5f 53 42 5f 50 P04HPSX.\/._SB_P 09b0: 43 49 30 52 50 30 34 00 a1 16 70 01 5c 2f 04 5f CI0RP04...p.\/._ 09c0: 53 42 5f 50 43 49 30 52 50 30 34 48 50 53 58 a0 SB_PCI0RP04HPSX. 09d0: 48 08 90 93 52 50 35 44 00 5c 2f 04 5f 53 42 5f H...RP5D.\/._SB_ 09e0: 50 43 49 30 52 50 30 35 48 50 53 58 5b 22 0a 64 PCI0RP05HPSX[".d 09f0: a0 40 05 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 .@.\/._SB_PCI0RP 0a00: 30 35 50 44 43 58 70 01 5c 2f 04 5f 53 42 5f 50 05PDCXp.\/._SB_P 0a10: 43 49 30 52 50 30 35 50 44 43 58 70 01 5c 2f 04 CI0RP05PDCXp.\/. 0a20: 5f 53 42 5f 50 43 49 30 52 50 30 35 48 50 53 58 _SB_PCI0RP05HPSX 0a30: 86 5c 2f 03 5f 53 42 5f 50 43 49 30 52 50 30 35 .\/._SB_PCI0RP05 0a40: 00 a1 16 70 01 5c 2f 04 5f 53 42 5f 50 43 49 30 ...p.\/._SB_PCI0 0a50: 52 50 30 35 48 50 53 58 a0 48 08 90 93 52 50 36 RP05HPSX.H...RP6 0a60: 44 00 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 30 D.\/._SB_PCI0RP0 0a70: 36 48 50 53 58 5b 22 0a 64 a0 40 05 5c 2f 04 5f 6HPSX[".d.@.\/._ 0a80: 53 42 5f 50 43 49 30 52 50 30 36 50 44 43 58 70 SB_PCI0RP06PDCXp 0a90: 01 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 30 36 .\/._SB_PCI0RP06 0aa0: 50 44 43 58 70 01 5c 2f 04 5f 53 42 5f 50 43 49 PDCXp.\/._SB_PCI 0ab0: 30 52 50 30 36 48 50 53 58 86 5c 2f 03 5f 53 42 0RP06HPSX.\/._SB 0ac0: 5f 50 43 49 30 52 50 30 36 00 a1 16 70 01 5c 2f _PCI0RP06...p.\/ 0ad0: 04 5f 53 42 5f 50 43 49 30 52 50 30 36 48 50 53 ._SB_PCI0RP06HPS 0ae0: 58 14 42 0d 5f 4c 30 32 00 70 00 47 50 45 43 a0 X.B._L02.p.GPEC. 0af0: 4d 0a 5c 2f 04 5f 53 42 5f 50 43 49 30 4c 50 43 M.\/._SB_PCI0LPC 0b00: 42 45 43 4f 4b a0 4e 04 93 44 54 53 57 01 a0 27 BECOK.N..DTSW..' 0b10: 92 95 44 54 53 31 44 54 53 32 70 44 54 53 31 5c ..DTS1DTS2pDTS1\ 0b20: 2f 05 5f 53 42 5f 50 43 49 30 4c 50 43 42 45 43 /._SB_PCI0LPCBEC 0b30: 30 5f 53 4b 54 41 a1 1d 70 44 54 53 32 5c 2f 05 0_SKTA..pDTS2\/. 0b40: 5f 53 42 5f 50 43 49 30 4c 50 43 42 45 43 30 5f _SB_PCI0LPCBEC0_ 0b50: 53 4b 54 41 a1 48 04 a0 27 92 95 4f 44 54 31 4f SKTA.H..'..ODT1O 0b60: 44 54 32 70 4f 44 54 31 5c 2f 05 5f 53 42 5f 50 DT2pODT1\/._SB_P 0b70: 43 49 30 4c 50 43 42 45 43 30 5f 53 4b 54 41 a1 CI0LPCBEC0_SKTA. 0b80: 1d 70 4f 44 54 32 5c 2f 05 5f 53 42 5f 50 43 49 .pODT2\/._SB_PCI 0b90: 30 4c 50 43 42 45 43 30 5f 53 4b 54 41 a1 16 5c 0LPCBEC0_SKTA..\ 0ba0: 2f 04 5f 53 42 5f 50 43 49 30 4c 50 43 42 50 48 /._SB_PCI0LPCBPH 0bb0: 53 53 0a 10 14 18 5f 4c 30 33 00 86 5c 2f 03 5f SS...._L03..\/._ 0bc0: 53 42 5f 50 43 49 30 55 53 42 31 0a 02 14 18 5f SB_PCI0USB1...._ 0bd0: 4c 30 34 00 86 5c 2f 03 5f 53 42 5f 50 43 49 30 L04..\/._SB_PCI0 0be0: 55 53 42 32 0a 02 14 18 5f 4c 30 35 00 86 5c 2f USB2...._L05..\/ 0bf0: 03 5f 53 42 5f 50 43 49 30 55 53 42 35 0a 02 14 ._SB_PCI0USB5... 0c00: 36 5f 4c 30 36 00 a0 27 5c 2f 04 5f 53 42 5f 50 6_L06..'\/._SB_P 0c10: 43 49 30 47 46 58 30 47 53 53 45 5c 2f 04 5f 53 CI0GFX0GSSE\/._S 0c20: 42 5f 50 43 49 30 47 46 58 30 47 53 43 49 a1 07 B_PCI0GFX0GSCI.. 0c30: 70 01 53 43 49 53 14 43 1f 5f 4c 30 39 00 a0 41 p.SCIS.C._L09..A 0c40: 05 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 30 31 .\/._SB_PCI0RP01 0c50: 50 53 50 58 70 01 5c 2f 04 5f 53 42 5f 50 43 49 PSPXp.\/._SB_PCI 0c60: 30 52 50 30 31 50 53 50 58 70 01 5c 2f 04 5f 53 0RP01PSPXp.\/._S 0c70: 42 5f 50 43 49 30 52 50 30 31 50 4d 53 58 86 5c B_PCI0RP01PMSX.\ 0c80: 2f 03 5f 53 42 5f 50 43 49 30 52 50 30 31 0a 02 /._SB_PCI0RP01.. 0c90: a0 41 05 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 .A.\/._SB_PCI0RP 0ca0: 30 32 50 53 50 58 70 01 5c 2f 04 5f 53 42 5f 50 02PSPXp.\/._SB_P 0cb0: 43 49 30 52 50 30 32 50 53 50 58 70 01 5c 2f 04 CI0RP02PSPXp.\/. 0cc0: 5f 53 42 5f 50 43 49 30 52 50 30 32 50 4d 53 58 _SB_PCI0RP02PMSX 0cd0: 86 5c 2f 03 5f 53 42 5f 50 43 49 30 52 50 30 32 .\/._SB_PCI0RP02 0ce0: 0a 02 a0 41 05 5c 2f 04 5f 53 42 5f 50 43 49 30 ...A.\/._SB_PCI0 0cf0: 52 50 30 33 50 53 50 58 70 01 5c 2f 04 5f 53 42 RP03PSPXp.\/._SB 0d00: 5f 50 43 49 30 52 50 30 33 50 53 50 58 70 01 5c _PCI0RP03PSPXp.\ 0d10: 2f 04 5f 53 42 5f 50 43 49 30 52 50 30 33 50 4d /._SB_PCI0RP03PM 0d20: 53 58 86 5c 2f 03 5f 53 42 5f 50 43 49 30 52 50 SX.\/._SB_PCI0RP 0d30: 30 33 0a 02 a0 41 05 5c 2f 04 5f 53 42 5f 50 43 03...A.\/._SB_PC 0d40: 49 30 52 50 30 34 50 53 50 58 70 01 5c 2f 04 5f I0RP04PSPXp.\/._ 0d50: 53 42 5f 50 43 49 30 52 50 30 34 50 53 50 58 70 SB_PCI0RP04PSPXp 0d60: 01 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 30 34 .\/._SB_PCI0RP04 0d70: 50 4d 53 58 86 5c 2f 03 5f 53 42 5f 50 43 49 30 PMSX.\/._SB_PCI0 0d80: 52 50 30 34 0a 02 a0 41 05 5c 2f 04 5f 53 42 5f RP04...A.\/._SB_ 0d90: 50 43 49 30 52 50 30 35 50 53 50 58 70 01 5c 2f PCI0RP05PSPXp.\/ 0da0: 04 5f 53 42 5f 50 43 49 30 52 50 30 35 50 53 50 ._SB_PCI0RP05PSP 0db0: 58 70 01 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 Xp.\/._SB_PCI0RP 0dc0: 30 35 50 4d 53 58 86 5c 2f 03 5f 53 42 5f 50 43 05PMSX.\/._SB_PC 0dd0: 49 30 52 50 30 35 0a 02 a0 41 05 5c 2f 04 5f 53 I0RP05...A.\/._S 0de0: 42 5f 50 43 49 30 52 50 30 36 50 53 50 58 70 01 B_PCI0RP06PSPXp. 0df0: 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 30 36 50 \/._SB_PCI0RP06P 0e00: 53 50 58 70 01 5c 2f 04 5f 53 42 5f 50 43 49 30 SPXp.\/._SB_PCI0 0e10: 52 50 30 36 50 4d 53 58 86 5c 2f 03 5f 53 42 5f RP06PMSX.\/._SB_ 0e20: 50 43 49 30 52 50 30 36 0a 02 14 18 5f 4c 30 42 PCI0RP06...._L0B 0e30: 00 86 5c 2f 03 5f 53 42 5f 50 43 49 30 50 43 49 ..\/._SB_PCI0PCI 0e40: 42 0a 02 14 18 5f 4c 30 43 00 86 5c 2f 03 5f 53 B...._L0C..\/._S 0e50: 42 5f 50 43 49 30 55 53 42 33 0a 02 14 4b 0b 5f B_PCI0USB3...K._ 0e60: 4c 30 44 00 a0 3b 5c 2f 04 5f 53 42 5f 50 43 49 L0D..;\/._SB_PCI 0e70: 30 45 48 43 31 50 4d 45 53 70 01 5c 2f 04 5f 53 0EHC1PMESp.\/._S 0e80: 42 5f 50 43 49 30 45 48 43 31 50 4d 45 53 86 5c B_PCI0EHC1PMES.\ 0e90: 2f 03 5f 53 42 5f 50 43 49 30 45 48 43 31 0a 02 /._SB_PCI0EHC1.. 0ea0: a0 3b 5c 2f 04 5f 53 42 5f 50 43 49 30 45 48 43 .;\/._SB_PCI0EHC 0eb0: 32 50 4d 45 53 70 01 5c 2f 04 5f 53 42 5f 50 43 2PMESp.\/._SB_PC 0ec0: 49 30 45 48 43 32 50 4d 45 53 86 5c 2f 03 5f 53 I0EHC2PMES.\/._S 0ed0: 42 5f 50 43 49 30 45 48 43 32 0a 02 a0 3b 5c 2f B_PCI0EHC2...;\/ 0ee0: 04 5f 53 42 5f 50 43 49 30 48 44 45 46 50 4d 45 ._SB_PCI0HDEFPME 0ef0: 53 70 01 5c 2f 04 5f 53 42 5f 50 43 49 30 48 44 Sp.\/._SB_PCI0HD 0f00: 45 46 50 4d 45 53 86 5c 2f 03 5f 53 42 5f 50 43 EFPMES.\/._SB_PC 0f10: 49 30 48 44 45 46 0a 02 14 18 5f 4c 30 45 00 86 I0HDEF...._L0E.. 0f20: 5c 2f 03 5f 53 42 5f 50 43 49 30 55 53 42 34 0a \/._SB_PCI0USB4. 0f30: 02 14 1c 5f 4c 31 42 00 80 4c 50 4f 4c 4c 50 4f ..._L1B..LPOLLPO 0f40: 4c 86 5c 2e 5f 53 42 5f 4c 49 44 30 0a 80 10 46 L.\._SB_LID0...F 0f50: 0b 5f 50 52 5f 5b 83 0b 43 50 55 30 00 10 10 00 ._PR_[..CPU0.... 0f60: 00 06 5b 83 0b 43 50 55 31 01 10 10 00 00 06 14 ..[..CPU1....... 0f70: 45 09 52 50 50 43 00 a0 4d 08 93 4f 53 59 53 0b E.RPPC..M..OSYS. 0f80: d2 07 a0 42 08 7b 43 46 47 44 01 00 a0 42 04 94 ...B.{CFGD...B.. 0f90: 5e 2e 43 50 55 30 5f 50 50 43 00 74 5e 2e 43 50 ^.CPU0_PPC.t^.CP 0fa0: 55 30 5f 50 50 43 01 5e 2e 43 50 55 30 5f 50 50 U0_PPC.^.CPU0_PP 0fb0: 43 50 4e 4f 54 72 5e 2e 43 50 55 30 5f 50 50 43 CPNOTr^.CPU0_PPC 0fc0: 01 5e 2e 43 50 55 30 5f 50 50 43 50 4e 4f 54 a1 .^.CPU0_PPCPNOT. 0fd0: 35 72 5e 2e 43 50 55 30 5f 50 50 43 01 5e 2e 43 5r^.CPU0_PPC.^.C 0fe0: 50 55 30 5f 50 50 43 50 4e 4f 54 74 5e 2e 43 50 PU0_PPCPNOTt^.CP 0ff0: 55 30 5f 50 50 43 01 5e 2e 43 50 55 30 5f 50 50 U0_PPC.^.CPU0_PP 1000: 43 50 4e 4f 54 08 46 57 53 4f 0d 46 57 53 4f 00 CPNOT.FWSO.FWSO. 1010: 08 5f 50 53 43 00 14 12 5f 50 53 30 00 70 5f 50 ._PSC..._PS0.p_P 1020: 53 43 60 70 00 5f 50 53 43 14 0d 5f 50 53 33 00 SC`p._PSC.._PS3. 1030: 70 0a 03 5f 50 53 43 10 8c fb 04 5f 53 42 5f 5b p.._PSC...._SB_[ 1040: 82 4f 3e 41 4d 57 30 08 5f 48 49 44 0d 70 6e 70 .O>AMW0._HID.pnp 1050: 30 63 31 34 00 08 5f 55 49 44 00 08 5f 57 44 47 0c14.._UID.._WDG 1060: 11 3f 0a 3c a7 1d 85 2e 53 d0 5f 49 9d fa 1a 4a .?.<....S._I...J 1070: d6 2e 6a 86 41 43 01 00 3b 6d 43 71 dd fb 72 4c ..j.AC..;mCq..rL 1080: bc b8 43 5b fe 0d 64 f9 42 43 01 00 21 12 90 05 ..C[..d.BC..!... 1090: 66 d5 d1 11 b2 f0 00 a0 c9 06 29 10 42 41 01 00 f.........).BA.. 10a0: 08 53 54 41 43 11 07 0a 04 01 14 03 00 14 1f 57 .STAC..........W 10b0: 51 41 43 01 70 0d 4d 58 4d 54 43 43 6f 6e 66 69 QAC.p.MXMTCConfi 10c0: 67 44 61 74 61 00 5b 31 a4 53 54 41 43 08 53 54 gData.[1.STAC.ST 10d0: 42 43 11 07 0a 04 01 00 00 00 14 34 57 51 42 43 BC.........4WQBC 10e0: 01 70 0d 47 65 74 20 4d 58 4d 54 43 43 6f 6e 74 .p.Get MXMTCCont 10f0: 72 6f 6c 44 61 74 61 3a 20 53 54 42 43 20 3d 20 rolData: STBC = 1100: 00 5b 31 70 53 54 42 43 5b 31 a4 53 54 42 43 14 .[1pSTBC[1.STBC. 1110: 47 06 57 53 42 43 02 70 69 53 54 42 43 70 0d 53 G.WSBC.piSTBCp.S 1120: 65 74 20 4d 58 4d 54 43 43 6f 6e 74 72 6f 6c 44 et MXMTCControlD 1130: 61 74 61 3a 20 53 54 42 43 20 3d 20 00 5b 31 70 ata: STBC = .[1p 1140: 53 54 42 43 5b 31 a0 30 93 5e 5e 2f 03 50 43 49 STBC[1.0.^^/.PCI 1150: 30 4c 50 43 42 45 43 4f 4b 01 70 83 88 53 54 42 0LPCBECOK.p..STB 1160: 43 01 00 5e 5e 2f 04 50 43 49 30 4c 50 43 42 45 C..^^/.PCI0LPCBE 1170: 43 30 5f 53 4b 54 43 08 57 51 42 41 11 43 2b 0b C0_SKTC.WQBA.C+. 1180: ae 02 46 4f 4d 42 01 00 00 00 9e 02 00 00 c0 0b ..FOMB.......... 1190: 00 00 44 53 00 01 1a 7d da 54 28 d9 85 00 01 06 ..DS...}.T(..... 11a0: 18 42 10 07 10 0a 4b 61 02 c9 21 52 3c 18 94 05 .B....Ka..!R<... 11b0: 10 43 88 57 04 44 04 84 bc 0a b0 29 c0 24 88 fa .C.W.D.....).$.. 11c0: f7 87 28 09 0e 25 04 42 12 05 98 17 a0 5b 80 61 ..(..%.B.....[.a 11d0: 01 b6 05 98 16 e0 18 92 4a 03 a7 04 96 02 21 a1 ........J.....!. 11e0: 02 94 0b f0 2d 40 3b a2 24 0b b0 0c 23 02 8f 82 ....-@;.$...#... 11f0: a1 71 68 ec 30 2c 13 4c 83 38 8c b2 91 45 60 dc .qh.0,.L.8...E`. 1200: 4e 05 c8 15 20 4c 80 78 54 61 34 07 45 e0 42 63 N... L.xTa4.E.Bc 1210: 64 40 c8 a3 00 ab a3 d0 a4 12 d8 bd 00 65 02 2c d@...........e., 1220: 0a 10 27 c0 9a 00 63 48 32 28 40 9b 00 5b 20 42 ..'...cH2(@..[ B 1230: 0f d4 19 8a 46 70 02 51 6a 46 11 48 ac 1a 01 85 ....Fp.QjF.H.... 1240: 12 34 46 b0 10 81 c2 86 37 46 98 03 88 d1 fe 20 .4F.....7F..... 1250: 48 20 05 e3 66 91 46 83 1a 6b 82 63 f7 68 4e b8 H ..f.F..k.c.hN. 1260: 73 01 d2 e7 26 90 a3 3b b8 3a 07 4d 86 c7 b0 1e s...&..;.:.M.... 1270: 06 d8 29 00 ef 1a 50 d3 3f 78 26 08 0e 35 44 8f ..)...P.?x&..5D. 1280: 3a dc 09 1c fb 91 30 88 b3 3b 6e ac c3 c9 68 d0 :.....0..;n...h. 1290: a5 0a 30 7b 00 d0 d0 12 9c f6 99 84 7e 0f 38 9f ..0{........~.8. 12a0: 9e 21 89 fc 41 a0 46 e6 ff 3f b4 c7 78 5a 31 43 .!..A.F..?..xZ1C 12b0: 3e 0b 1c 16 13 0b a1 4d 6a 3c 40 40 e1 d1 40 08 >......Mj<@@..@. 12c0: 6f 06 9e af 09 46 86 90 93 f1 a0 06 e0 41 d7 3a o....F.......A.: 12d0: 32 8d 27 a6 21 cf e8 00 22 bf 32 78 0c 41 02 f9 2.'.!...".2x.A.. 12e0: c4 60 b8 c7 81 13 78 02 f0 59 40 10 92 00 21 51 .`....x..Y@...!Q 12f0: e3 a7 47 08 7e 7a 78 93 30 28 1f d2 99 f9 90 e1 ..G.~zx.0(...... 1300: 11 c2 07 c4 7b 9f 3b 19 c1 29 7b a4 e0 b0 7e 0e ....{.;..){...~. 1310: 20 c0 af 0f 8f 0d 09 7c ae 08 8c 1d aa fd 0a 40 ......|.......@ 1320: 08 1e ed 51 e0 54 23 1c 2d 78 08 8a 1c 03 4a cc ...Q.T#.-x....J. 1330: 18 50 03 38 85 d0 e7 73 04 47 14 25 f6 21 19 da .P.8...s.G.%.!.. 1340: 08 e1 1f 39 4e c1 f7 8b 23 3d ad 23 78 91 f0 08 ...9N...#=.#x... 1350: 30 e1 ce 28 a8 38 30 f4 ff 7f 4c 01 dc 7a 3b a6 0..(.80...L..z;. 1360: 80 3e c0 31 05 50 fc ff 3f a6 00 87 a8 c7 14 f4 .>.1.P..?....... 1370: 40 0c 7c 2e a1 0d ff 96 c1 8e 03 87 74 6a 8f 28 @.|.........tj.( 1380: 80 29 79 47 14 50 8c 14 d6 f1 04 18 05 3c 9b a0 .)yG.P.......<.. 1390: 22 1d 4f 80 ce ff ff 78 02 58 b8 9a bc 92 84 7d ".O....x.X.....} 13a0: 1e 78 1d 89 14 e3 41 e2 b5 e4 c1 24 46 98 08 8f .x....A....$F... 13b0: 27 1e 47 c0 b7 82 28 91 8e 3e c4 83 49 28 63 3e '.G...(..>..I(c> 13c0: a3 84 89 f9 04 70 22 ef 27 46 0a 73 2a 8f 27 2c .....p".'F.s*.', 13d0: c4 f1 04 a0 85 e2 e3 09 3a 2c 84 fe ff c7 13 dc ........:,...... 13e0: e1 c1 a7 0c fc 85 0c c6 f9 04 30 24 f0 7c 02 ca ..........0$.|.. 13f0: db 18 e6 80 02 8c 14 da f4 a9 d1 a8 55 83 32 35 ............U.25 1400: ca 34 a8 d5 a7 52 63 c6 4c 9c 52 bc 6c 8d df f2 .4...Rc.L.R.l... 1410: 9e 09 02 b1 20 0a 81 38 cc f3 42 20 96 a2 01 84 .... ..8..B .... 1420: 85 06 a1 42 a9 05 e2 98 20 34 92 0a 10 f6 ff 07 ...B.... 4...... 1430: 5b 82 1b 4c 49 44 30 08 5f 48 49 44 0c 41 d0 0c [..LID0._HID.A.. 1440: 0d 14 0b 5f 4c 49 44 00 a4 4c 50 4f 4c 5b 82 0f ..._LID..LPOL[.. 1450: 50 57 52 42 08 5f 48 49 44 0c 41 d0 0c 0c 5b 82 PWRB._HID.A...[. 1460: 84 b9 04 50 43 49 30 14 09 5f 53 33 44 00 a4 0a ...PCI0.._S3D... 1470: 02 14 09 5f 53 34 44 00 a4 0a 02 08 5f 48 49 44 ..._S4D....._HID 1480: 0c 41 d0 0a 08 08 5f 43 49 44 0c 41 d0 0a 03 5b .A...._CID.A...[ 1490: 82 43 0e 4d 43 48 43 08 5f 41 44 52 00 5b 80 48 .C.MCHC._ADR.[.H 14a0: 42 55 53 02 0a 40 0a c0 5b 81 4a 0c 48 42 55 53 BUS..@..[.J.HBUS 14b0: 03 45 50 45 4e 01 00 0b 45 50 42 52 14 00 20 4d .EPEN...EPBR.. M 14c0: 48 45 4e 01 00 0d 4d 48 42 52 12 00 40 0a 50 58 HEN...MHBR..@.PX 14d0: 45 4e 01 50 58 53 5a 02 00 17 50 58 42 52 06 00 EN.PXSZ...PXBR.. 14e0: 20 44 49 45 4e 01 00 0b 44 49 42 52 14 00 20 49 DIEN...DIBR.. I 14f0: 50 45 4e 01 00 0b 49 50 42 52 14 00 40 0e 00 04 PEN...IPBR..@... 1500: 50 4d 30 48 02 00 02 50 4d 31 4c 02 00 02 50 4d PM0H...PM1L...PM 1510: 31 48 02 00 02 50 4d 32 4c 02 00 02 50 4d 32 48 1H...PM2L...PM2H 1520: 02 00 02 50 4d 33 4c 02 00 02 50 4d 33 48 02 00 ...PM3L...PM3H.. 1530: 02 50 4d 34 4c 02 00 02 50 4d 34 48 02 00 02 50 .PM4L...PM4H...P 1540: 4d 35 4c 02 00 02 50 4d 35 48 02 00 02 50 4d 36 M5L...PM5H...PM6 1550: 4c 02 00 02 50 4d 36 48 02 00 02 00 07 48 45 4e L...PM6H.....HEN 1560: 41 01 00 40 05 54 55 55 44 10 00 40 06 00 04 54 A..@.TUUD..@...T 1570: 4c 55 44 0c 08 42 55 46 30 11 4d 20 0b 08 02 88 LUD..BUF0.M .... 1580: 0d 00 02 0c 00 00 00 00 00 ff 00 00 00 00 01 87 ................ 1590: 17 00 01 0c 03 00 00 00 00 00 00 00 00 f7 0c 00 ................ 15a0: 00 00 00 00 00 f8 0c 00 00 47 01 f8 0c f8 0c 01 .........G...... 15b0: 08 87 17 00 01 0c 03 00 00 00 00 00 0d 00 00 ff ................ 15c0: ff 00 00 00 00 00 00 00 f3 00 00 87 17 00 00 0c ................ 15d0: 03 00 00 00 00 00 00 0a 00 ff ff 0b 00 00 00 00 ................ 15e0: 00 00 00 02 00 87 17 00 00 0c 03 00 00 00 00 00 ................ 15f0: 00 0c 00 ff 3f 0c 00 00 00 00 00 00 40 00 00 87 ....?.......@... 1600: 17 00 00 0c 03 00 00 00 00 00 40 0c 00 ff 7f 0c ..........@..... 1610: 00 00 00 00 00 00 40 00 00 87 17 00 00 0c 03 00 ......@......... 1620: 00 00 00 00 80 0c 00 ff bf 0c 00 00 00 00 00 00 ................ 1630: 40 00 00 87 17 00 00 0c 03 00 00 00 00 00 c0 0c @............... 1640: 00 ff ff 0c 00 00 00 00 00 00 40 00 00 87 17 00 ..........@..... 1650: 00 0c 03 00 00 00 00 00 00 0d 00 ff 3f 0d 00 00 ............?... 1660: 00 00 00 00 40 00 00 87 17 00 00 0c 03 00 00 00 ....@........... 1670: 00 00 40 0d 00 ff 7f 0d 00 00 00 00 00 00 40 00 ..@...........@. 1680: 00 87 17 00 00 0c 03 00 00 00 00 00 80 0d 00 ff ................ 1690: bf 0d 00 00 00 00 00 00 40 00 00 87 17 00 00 0c ........@....... 16a0: 03 00 00 00 00 00 c0 0d 00 ff ff 0d 00 00 00 00 ................ 16b0: 00 00 40 00 00 87 17 00 00 0c 03 00 00 00 00 00 ..@............. 16c0: 00 0e 00 ff 3f 0e 00 00 00 00 00 00 40 00 00 87 ....?.......@... 16d0: 17 00 00 0c 03 00 00 00 00 00 40 0e 00 ff 7f 0e ..........@..... 16e0: 00 00 00 00 00 00 40 00 00 87 17 00 00 0c 03 00 ......@......... 16f0: 00 00 00 00 80 0e 00 ff bf 0e 00 00 00 00 00 00 ................ 1700: 40 00 00 87 17 00 00 0c 03 00 00 00 00 00 c0 0e @............... 1710: 00 ff ff 0e 00 00 00 00 00 00 40 00 00 87 17 00 ..........@..... 1720: 00 0c 03 00 00 00 00 00 00 0f 00 ff ff 0f 00 00 ................ 1730: 00 00 00 00 00 01 00 87 17 00 00 0c 03 00 00 00 ................ 1740: 00 00 00 00 00 ff ff ff df 00 00 00 00 00 00 00 ................ 1750: 00 87 17 00 00 0c 03 00 00 00 00 00 00 00 f0 ff ................ 1760: ff bf fe 00 00 00 00 00 00 c0 0e 87 17 00 00 0c ................ 1770: 03 00 00 00 00 00 00 d4 fe ff 4f d4 fe 00 00 00 ..........O..... 1780: 00 00 00 00 00 79 00 14 4b 3d 5f 43 52 53 08 a0 .....y..K=_CRS.. 1790: 1c 5e 2e 4d 43 48 43 50 4d 31 4c 8a 42 55 46 30 .^.MCHCPM1L.BUF0 17a0: 0a 7c 43 30 4c 4e 70 00 43 30 4c 4e a0 1f 93 5e .|C0LNp.C0LN...^ 17b0: 2e 4d 43 48 43 50 4d 31 4c 01 8d 42 55 46 30 0b .MCHCPM1L..BUF0. 17c0: 58 03 43 30 52 57 70 00 43 30 52 57 a0 1c 5e 2e X.C0RWp.C0RW..^. 17d0: 4d 43 48 43 50 4d 31 48 8a 42 55 46 30 0a 96 43 MCHCPM1H.BUF0..C 17e0: 34 4c 4e 70 00 43 34 4c 4e a0 1f 93 5e 2e 4d 43 4LNp.C4LN...^.MC 17f0: 48 43 50 4d 31 48 01 8d 42 55 46 30 0b 28 04 43 HCPM1H..BUF0.(.C 1800: 34 52 57 70 00 43 34 52 57 a0 1c 5e 2e 4d 43 48 4RWp.C4RW..^.MCH 1810: 43 50 4d 32 4c 8a 42 55 46 30 0a b0 43 38 4c 4e CPM2L.BUF0..C8LN 1820: 70 00 43 38 4c 4e a0 1f 93 5e 2e 4d 43 48 43 50 p.C8LN...^.MCHCP 1830: 4d 32 4c 01 8d 42 55 46 30 0b f8 04 43 38 52 57 M2L..BUF0...C8RW 1840: 70 00 43 38 52 57 a0 1c 5e 2e 4d 43 48 43 50 4d p.C8RW..^.MCHCPM 1850: 32 48 8a 42 55 46 30 0a ca 43 43 4c 4e 70 00 43 2H.BUF0..CCLNp.C 1860: 43 4c 4e a0 1f 93 5e 2e 4d 43 48 43 50 4d 32 48 CLN...^.MCHCPM2H 1870: 01 8d 42 55 46 30 0b c8 05 43 43 52 57 70 00 43 ..BUF0...CCRWp.C 1880: 43 52 57 a0 1c 5e 2e 4d 43 48 43 50 4d 33 4c 8a CRW..^.MCHCPM3L. 1890: 42 55 46 30 0a e4 44 30 4c 4e 70 00 44 30 4c 4e BUF0..D0LNp.D0LN 18a0: a0 1f 93 5e 2e 4d 43 48 43 50 4d 33 4c 01 8d 42 ...^.MCHCPM3L..B 18b0: 55 46 30 0b 98 06 44 30 52 57 70 00 44 30 52 57 UF0...D0RWp.D0RW 18c0: a0 1c 5e 2e 4d 43 48 43 50 4d 33 48 8a 42 55 46 ..^.MCHCPM3H.BUF 18d0: 30 0a fe 44 34 4c 4e 70 00 44 34 4c 4e a0 1f 93 0..D4LNp.D4LN... 18e0: 5e 2e 4d 43 48 43 50 4d 33 48 01 8d 42 55 46 30 ^.MCHCPM3H..BUF0 18f0: 0b 68 07 44 34 52 57 70 00 44 34 52 57 a0 1d 5e .h.D4RWp.D4RW..^ 1900: 2e 4d 43 48 43 50 4d 34 4c 8a 42 55 46 30 0b 18 .MCHCPM4L.BUF0.. 1910: 01 44 38 4c 4e 70 00 44 38 4c 4e a0 1f 93 5e 2e .D8LNp.D8LN...^. 1920: 4d 43 48 43 50 4d 34 4c 01 8d 42 55 46 30 0b 38 MCHCPM4L..BUF0.8 1930: 08 44 38 52 57 70 00 44 38 52 57 a0 1d 5e 2e 4d .D8RWp.D8RW..^.M 1940: 43 48 43 50 4d 34 48 8a 42 55 46 30 0b 32 01 44 CHCPM4H.BUF0.2.D 1950: 43 4c 4e 70 00 44 43 4c 4e a0 1f 93 5e 2e 4d 43 CLNp.DCLN...^.MC 1960: 48 43 50 4d 34 48 01 8d 42 55 46 30 0b 08 09 44 HCPM4H..BUF0...D 1970: 43 52 57 70 00 44 43 52 57 a0 1d 5e 2e 4d 43 48 CRWp.DCRW..^.MCH 1980: 43 50 4d 35 4c 8a 42 55 46 30 0b 4c 01 45 30 4c CPM5L.BUF0.L.E0L 1990: 4e 70 00 45 30 4c 4e a0 1f 93 5e 2e 4d 43 48 43 Np.E0LN...^.MCHC 19a0: 50 4d 35 4c 01 8d 42 55 46 30 0b d8 09 45 30 52 PM5L..BUF0...E0R 19b0: 57 70 00 45 30 52 57 a0 1d 5e 2e 4d 43 48 43 50 Wp.E0RW..^.MCHCP 19c0: 4d 35 48 8a 42 55 46 30 0b 66 01 45 34 4c 4e 70 M5H.BUF0.f.E4LNp 19d0: 00 45 34 4c 4e a0 1f 93 5e 2e 4d 43 48 43 50 4d .E4LN...^.MCHCPM 19e0: 35 48 01 8d 42 55 46 30 0b a8 0a 45 34 52 57 70 5H..BUF0...E4RWp 19f0: 00 45 34 52 57 a0 1d 5e 2e 4d 43 48 43 50 4d 36 .E4RW..^.MCHCPM6 1a00: 4c 8a 42 55 46 30 0b 80 01 45 38 4c 4e 70 00 45 L.BUF0...E8LNp.E 1a10: 38 4c 4e a0 1f 93 5e 2e 4d 43 48 43 50 4d 36 4c 8LN...^.MCHCPM6L 1a20: 01 8d 42 55 46 30 0b 78 0b 45 38 52 57 70 00 45 ..BUF0.x.E8RWp.E 1a30: 38 52 57 a0 1d 5e 2e 4d 43 48 43 50 4d 36 48 8a 8RW..^.MCHCPM6H. 1a40: 42 55 46 30 0b 9a 01 45 43 4c 4e 70 00 45 43 4c BUF0...ECLNp.ECL 1a50: 4e a0 1f 93 5e 2e 4d 43 48 43 50 4d 36 48 01 8d N...^.MCHCPM6H.. 1a60: 42 55 46 30 0b 48 0c 45 43 52 57 70 00 45 43 52 BUF0.H.ECRWp.ECR 1a70: 57 a0 1d 5e 2e 4d 43 48 43 50 4d 30 48 8a 42 55 W..^.MCHCPM0H.BU 1a80: 46 30 0b b4 01 46 30 4c 4e 70 00 46 30 4c 4e a0 F0...F0LNp.F0LN. 1a90: 1f 93 5e 2e 4d 43 48 43 50 4d 30 48 01 8d 42 55 ..^.MCHCPM0H..BU 1aa0: 46 30 0b 18 0d 46 30 52 57 70 00 46 30 52 57 8a F0...F0RWp.F0RW. 1ab0: 42 55 46 30 0b c2 01 4d 31 4d 4e 8a 42 55 46 30 BUF0...M1MN.BUF0 1ac0: 0b c6 01 4d 31 4d 58 8a 42 55 46 30 0b ce 01 4d ...M1MX.BUF0...M 1ad0: 31 4c 4e 8a 42 55 46 30 0b dc 01 4d 32 4d 4e 8a 1LN.BUF0...M2MN. 1ae0: 42 55 46 30 0b e0 01 4d 32 4d 58 8a 42 55 46 30 BUF0...M2MX.BUF0 1af0: 0b e8 01 4d 32 4c 4e 79 5e 2e 4d 43 48 43 50 58 ...M2LNy^.MCHCPX 1b00: 42 52 0a 1a 4d 31 4d 58 7a 0c 00 00 00 10 5e 2e BR..M1MXz.....^. 1b10: 4d 43 48 43 50 58 53 5a 60 72 4d 31 4d 58 60 4d MCHCPXSZ`rM1MX`M 1b20: 32 4d 4e 72 74 4d 32 4d 58 4d 32 4d 4e 00 01 4d 2MNrtM2MXM2MN..M 1b30: 32 4c 4e 74 4d 31 4d 58 01 4d 31 4d 58 79 5e 2e 2LNtM1MX.M1MXy^. 1b40: 4d 43 48 43 54 4c 55 44 0a 14 4d 31 4d 4e 72 74 MCHCTLUD..M1MNrt 1b50: 4d 31 4d 58 4d 31 4d 4e 00 01 4d 31 4c 4e a4 42 M1MXM1MN..M1LN.B 1b60: 55 46 30 14 47 28 5f 50 52 54 00 a0 45 0f 47 50 UF0.G(_PRT..E.GP 1b70: 49 43 a4 12 4d 0e 13 12 0b 04 0c ff ff 01 00 00 IC..M........... 1b80: 00 0a 10 12 0b 04 0c ff ff 02 00 00 00 0a 10 12 ................ 1b90: 0b 04 0c ff ff 07 00 00 00 0a 10 12 0b 04 0c ff ................ 1ba0: ff 19 00 00 00 0a 14 12 0b 04 0c ff ff 1a 00 00 ................ 1bb0: 00 0a 10 12 0b 04 0c ff ff 1a 00 01 00 0a 15 12 ................ 1bc0: 0c 04 0c ff ff 1a 00 0a 02 00 0a 12 12 0b 04 0c ................ 1bd0: ff ff 1b 00 00 00 0a 16 12 0b 04 0c ff ff 1c 00 ................ 1be0: 00 00 0a 11 12 0b 04 0c ff ff 1c 00 01 00 0a 10 ................ 1bf0: 12 0c 04 0c ff ff 1c 00 0a 02 00 0a 12 12 0c 04 ................ 1c00: 0c ff ff 1c 00 0a 03 00 0a 13 12 0b 04 0c ff ff ................ 1c10: 1d 00 00 00 0a 17 12 0b 04 0c ff ff 1d 00 01 00 ................ 1c20: 0a 13 12 0c 04 0c ff ff 1d 00 0a 02 00 0a 12 12 ................ 1c30: 0b 04 0c ff ff 1f 00 00 00 0a 13 12 0b 04 0c ff ................ 1c40: ff 1f 00 01 00 0a 13 12 0c 04 0c ff ff 1f 00 0a ................ 1c50: 02 00 0a 13 12 0c 04 0c ff ff 1f 00 0a 03 00 0a ................ 1c60: 10 a1 49 18 a4 12 45 18 13 12 13 04 0c ff ff 01 ..I...E......... 1c70: 00 00 5e 2e 4c 50 43 42 4c 4e 4b 41 00 12 13 04 ..^.LPCBLNKA.... 1c80: 0c ff ff 02 00 00 5e 2e 4c 50 43 42 4c 4e 4b 41 ......^.LPCBLNKA 1c90: 00 12 13 04 0c ff ff 07 00 00 5e 2e 4c 50 43 42 ..........^.LPCB 1ca0: 4c 4e 4b 41 00 12 13 04 0c ff ff 19 00 00 5e 2e LNKA..........^. 1cb0: 4c 50 43 42 4c 4e 4b 45 00 12 13 04 0c ff ff 1a LPCBLNKE........ 1cc0: 00 00 5e 2e 4c 50 43 42 4c 4e 4b 41 00 12 13 04 ..^.LPCBLNKA.... 1cd0: 0c ff ff 1a 00 01 5e 2e 4c 50 43 42 4c 4e 4b 46 ......^.LPCBLNKF 1ce0: 00 12 14 04 0c ff ff 1a 00 0a 02 5e 2e 4c 50 43 ...........^.LPC 1cf0: 42 4c 4e 4b 43 00 12 13 04 0c ff ff 1b 00 00 5e BLNKC..........^ 1d00: 2e 4c 50 43 42 4c 4e 4b 47 00 12 13 04 0c ff ff .LPCBLNKG....... 1d10: 1c 00 00 5e 2e 4c 50 43 42 4c 4e 4b 42 00 12 13 ...^.LPCBLNKB... 1d20: 04 0c ff ff 1c 00 01 5e 2e 4c 50 43 42 4c 4e 4b .......^.LPCBLNK 1d30: 41 00 12 14 04 0c ff ff 1c 00 0a 02 5e 2e 4c 50 A...........^.LP 1d40: 43 42 4c 4e 4b 43 00 12 14 04 0c ff ff 1c 00 0a CBLNKC.......... 1d50: 03 5e 2e 4c 50 43 42 4c 4e 4b 44 00 12 13 04 0c .^.LPCBLNKD..... 1d60: ff ff 1d 00 00 5e 2e 4c 50 43 42 4c 4e 4b 48 00 .....^.LPCBLNKH. 1d70: 12 13 04 0c ff ff 1d 00 01 5e 2e 4c 50 43 42 4c .........^.LPCBL 1d80: 4e 4b 44 00 12 14 04 0c ff ff 1d 00 0a 02 5e 2e NKD...........^. 1d90: 4c 50 43 42 4c 4e 4b 43 00 12 13 04 0c ff ff 1f LPCBLNKC........ 1da0: 00 00 5e 2e 4c 50 43 42 4c 4e 4b 44 00 12 13 04 ..^.LPCBLNKD.... 1db0: 0c ff ff 1f 00 01 5e 2e 4c 50 43 42 4c 4e 4b 44 ......^.LPCBLNKD 1dc0: 00 12 14 04 0c ff ff 1f 00 0a 02 5e 2e 4c 50 43 ...........^.LPC 1dd0: 42 4c 4e 4b 44 00 12 14 04 0c ff ff 1f 00 0a 03 BLNKD........... 1de0: 5e 2e 4c 50 43 42 4c 4e 4b 41 00 5b 82 40 14 50 ^.LPCBLNKA.[.@.P 1df0: 44 52 43 08 5f 48 49 44 0c 41 d0 0c 02 08 5f 55 DRC._HID.A...._U 1e00: 49 44 01 08 42 55 46 30 11 46 06 0a 62 86 09 00 ID..BUF0.F..b... 1e10: 01 00 00 00 00 00 40 00 00 86 09 00 01 00 00 00 ......@......... 1e20: 00 00 40 00 00 86 09 00 01 00 00 00 00 00 10 00 ..@............. 1e30: 00 86 09 00 01 00 00 00 00 00 10 00 00 86 09 00 ................ 1e40: 01 00 00 00 00 00 00 00 00 86 09 00 01 00 00 d2 ................ 1e50: fe 00 00 02 00 86 09 00 01 00 00 d4 fe 00 50 00 ..............P. 1e60: 00 86 09 00 01 00 50 d4 fe 00 b0 04 00 79 00 14 ......P......y.. 1e70: 4d 0b 5f 43 52 53 08 8a 42 55 46 30 0a 04 52 42 M._CRS..BUF0..RB 1e80: 52 30 79 5e 5e 2e 4c 50 43 42 52 43 42 41 0a 0e R0y^^.LPCBRCBA.. 1e90: 52 42 52 30 8a 42 55 46 30 0a 10 4d 42 52 30 79 RBR0.BUF0..MBR0y 1ea0: 5e 5e 2e 4d 43 48 43 4d 48 42 52 0a 0e 4d 42 52 ^^.MCHCMHBR..MBR 1eb0: 30 8a 42 55 46 30 0a 1c 44 42 52 30 79 5e 5e 2e 0.BUF0..DBR0y^^. 1ec0: 4d 43 48 43 44 49 42 52 0a 0c 44 42 52 30 8a 42 MCHCDIBR..DBR0.B 1ed0: 55 46 30 0a 28 45 42 52 30 79 5e 5e 2e 4d 43 48 UF0.(EBR0y^^.MCH 1ee0: 43 45 50 42 52 0a 0c 45 42 52 30 8a 42 55 46 30 CEPBR..EBR0.BUF0 1ef0: 0a 34 58 42 52 30 79 5e 5e 2e 4d 43 48 43 50 58 .4XBR0y^^.MCHCPX 1f00: 42 52 0a 1a 58 42 52 30 8a 42 55 46 30 0a 38 58 BR..XBR0.BUF0.8X 1f10: 53 5a 30 7a 0c 00 00 00 10 5e 5e 2e 4d 43 48 43 SZ0z.....^^.MCHC 1f20: 50 58 53 5a 58 53 5a 30 a4 42 55 46 30 5b 82 4d PXSZXSZ0.BUF0[.M 1f30: 50 50 45 47 50 08 5f 41 44 52 0c 00 00 01 00 14 PPEGP._ADR...... 1f40: 41 09 5f 50 52 54 00 a0 33 47 50 49 43 a4 12 2c A._PRT..3GPIC.., 1f50: 04 12 09 04 0b ff ff 00 00 0a 10 12 09 04 0b ff ................ 1f60: ff 01 00 0a 11 12 0a 04 0b ff ff 0a 02 00 0a 12 ................ 1f70: 12 0a 04 0b ff ff 0a 03 00 0a 13 a1 45 05 a4 12 ............E... 1f80: 41 05 04 12 12 04 0b ff ff 00 5e 5e 2e 4c 50 43 A.........^^.LPC 1f90: 42 4c 4e 4b 41 00 12 12 04 0b ff ff 01 5e 5e 2e BLNKA........^^. 1fa0: 4c 50 43 42 4c 4e 4b 42 00 12 13 04 0b ff ff 0a LPCBLNKB........ 1fb0: 02 5e 5e 2e 4c 50 43 42 4c 4e 4b 43 00 12 13 04 .^^.LPCBLNKC.... 1fc0: 0b ff ff 0a 03 5e 5e 2e 4c 50 43 42 4c 4e 4b 44 .....^^.LPCBLNKD 1fd0: 00 5b 82 49 46 56 47 41 5f 08 5f 41 44 52 00 08 .[.IFVGA_._ADR.. 1fe0: 53 57 49 54 01 08 43 52 54 41 01 08 4c 43 44 41 SWIT..CRTA..LCDA 1ff0: 01 08 54 56 41 41 01 08 56 4c 44 46 01 5b 80 56 ..TVAA..VLDF.[.V 2000: 49 44 53 02 00 0a c8 5b 81 0b 56 49 44 53 03 56 IDS....[..VIDS.V 2010: 44 49 44 20 14 09 5f 53 54 41 00 a4 0a 0f 08 5f DID .._STA....._ 2020: 50 53 43 00 14 0c 5f 50 53 30 00 70 00 5f 50 53 PSC..._PS0.p._PS 2030: 43 14 0c 5f 50 53 31 00 70 01 5f 50 53 43 14 0d C.._PS1.p._PSC.. 2040: 5f 50 53 33 00 70 0a 03 5f 50 53 43 14 10 5f 44 _PS3.p.._PSC.._D 2050: 4f 53 01 70 7b 68 0a 03 00 53 57 49 54 14 17 5f OS.p{h...SWIT.._ 2060: 44 4f 44 00 a4 12 0f 03 0c 00 01 01 00 0c 10 01 DOD............. 2070: 01 00 0b 00 02 5b 82 4d 08 43 52 54 5f 14 0a 5f .....[.M.CRT_.._ 2080: 41 44 52 00 a4 0b 00 01 14 41 06 5f 44 43 53 00 ADR......A._DCS. 2090: 5e 5e 5e 5e 2e 4c 50 43 42 50 48 53 53 0a 0c 70 ^^^^.LPCBPHSS..p 20a0: 43 41 44 4c 60 70 43 53 54 45 61 7b 60 0a 02 60 CADL`pCSTEa{`..` 20b0: 7b 61 0a 02 61 a0 08 60 70 01 43 52 54 41 a1 07 {a..a..`p.CRTA.. 20c0: 70 00 43 52 54 41 a0 13 43 52 54 41 a0 08 93 61 p.CRTA..CRTA...a 20d0: 0a 02 a4 0a 1f a1 04 a4 0a 1d a1 0f a0 08 93 61 ...............a 20e0: 0a 02 a4 0a 0f a1 04 a4 0a 0d 14 12 5f 44 47 53 ............_DGS 20f0: 00 a0 07 43 52 54 41 a4 01 a1 03 a4 00 14 06 5f ...CRTA........_ 2100: 44 53 53 01 5b 82 47 0e 4c 43 44 5f 14 0a 5f 41 DSS.[.G.LCD_.._A 2110: 44 52 00 a4 0b 10 01 14 4d 05 5f 44 43 53 00 5e DR......M._DCS.^ 2120: 5e 5e 5e 2e 4c 50 43 42 50 48 53 53 0a 0c 70 43 ^^^.LPCBPHSS..pC 2130: 41 44 4c 60 70 43 53 54 45 61 7b 60 01 60 7b 61 ADL`pCSTEa{`.`{a 2140: 01 61 a0 08 60 70 01 4c 43 44 41 a1 07 70 00 4c .a..`p.LCDA..p.L 2150: 43 44 41 a0 12 4c 43 44 41 a0 07 93 61 01 a4 0a CDA..LCDA...a... 2160: 1f a1 04 a4 0a 1d a1 0e a0 07 93 61 01 a4 0a 0f ...........a.... 2170: a1 04 a4 0a 0d 14 12 5f 44 47 53 00 a0 07 4c 43 ......._DGS...LC 2180: 44 41 a4 01 a1 03 a4 00 14 06 5f 44 53 53 01 14 DA........_DSS.. 2190: 1d 5f 42 43 4c 00 a4 12 15 0a 0a 46 0a 28 00 0a ._BCL......F.(.. 21a0: 0a 0a 14 0a 1e 0a 28 0a 32 0a 3c 0a 46 14 20 5f ......(.2.<.F. _ 21b0: 42 43 4d 01 78 68 0a 0a 60 61 70 61 5e 5e 5e 5e BCM.xh..`apa^^^^ 21c0: 2f 03 4c 50 43 42 45 43 30 5f 42 52 54 53 14 1e /.LPCBEC0_BRTS.. 21d0: 5f 42 51 43 00 77 5e 5e 5e 5e 2f 03 4c 50 43 42 _BQC.w^^^^/.LPCB 21e0: 45 43 30 5f 42 52 54 53 0a 0a 60 a4 60 5b 82 4d EC0_BRTS..`.`[.M 21f0: 08 54 56 5f 5f 14 0a 5f 41 44 52 00 a4 0b 00 02 .TV__.._ADR..... 2200: 14 41 06 5f 44 43 53 00 5e 5e 5e 5e 2e 4c 50 43 .A._DCS.^^^^.LPC 2210: 42 50 48 53 53 0a 0c 70 43 41 44 4c 60 70 43 53 BPHSS..pCADL`pCS 2220: 54 45 61 7b 60 0a 04 60 7b 61 0a 04 61 a0 08 60 TEa{`..`{a..a..` 2230: 70 01 54 56 41 41 a1 07 70 00 54 56 41 41 a0 13 p.TVAA..p.TVAA.. 2240: 54 56 41 41 a0 08 93 61 0a 04 a4 0a 1f a1 04 a4 TVAA...a........ 2250: 0a 1d a1 0f a0 08 93 61 0a 04 a4 0a 0f a1 04 a4 .......a........ 2260: 0a 0d 14 12 5f 44 47 53 00 a0 07 54 56 41 41 a4 ...._DGS...TVAA. 2270: 01 a1 03 a4 00 14 06 5f 44 53 53 01 14 49 10 44 ......._DSS..I.D 2280: 53 53 57 00 a0 4a 0e 93 53 57 49 54 00 5e 5e 5e SSW..J..SWIT.^^^ 2290: 2e 4c 50 43 42 50 48 53 53 0a 0c 70 43 41 44 4c .LPCBPHSS..pCADL 22a0: 60 70 43 53 54 45 61 a0 16 94 61 01 7b 60 61 56 `pCSTEa...a.{`aV 22b0: 4c 44 46 7b 56 4c 44 46 0a fe 56 4c 44 46 a0 43 LDF{VLDF..VLDF.C 22c0: 0a 56 4c 44 46 a0 27 93 60 0a 09 a0 0b 93 61 0a .VLDF.'.`.....a. 22d0: 08 53 54 42 4c 0a 02 a0 0a 93 61 01 53 54 42 4c .STBL.....a.STBL 22e0: 0a 03 a0 0a 93 61 0a 09 53 54 42 4c 01 a0 28 93 .....a..STBL..(. 22f0: 60 0a 0a a0 0b 93 61 0a 08 53 54 42 4c 0a 05 a0 `.....a..STBL... 2300: 0a 93 61 0a 02 53 54 42 4c 01 a0 0b 93 61 0a 0a ..a..STBL....a.. 2310: 53 54 42 4c 0a 04 a0 4b 04 93 60 0a 0b a0 0b 93 STBL...K..`..... 2320: 61 0a 08 53 54 42 4c 0a 02 a0 0b 93 61 0a 09 53 a..STBL.....a..S 2330: 54 42 4c 0a 05 a0 0a 93 61 01 53 54 42 4c 0a 03 TBL.....a.STBL.. 2340: a0 0b 93 61 0a 0a 53 54 42 4c 0a 04 a0 0a 93 61 ...a..STBL.....a 2350: 0a 02 53 54 42 4c 01 a0 0a 93 61 0a 0b 53 54 42 ..STBL....a..STB 2360: 4c 01 a1 0c 70 01 56 4c 44 46 53 54 42 4c 01 a1 L...p.VLDFSTBL.. 2370: 16 a0 14 93 53 57 49 54 01 5e 5e 5e 2e 4c 50 43 ....SWIT.^^^.LPC 2380: 42 50 48 53 53 01 14 45 0b 53 54 42 4c 01 a0 16 BPHSS..E.STBL... 2390: 93 68 01 70 00 43 52 54 41 70 01 4c 43 44 41 70 .h.p.CRTAp.LCDAp 23a0: 00 54 56 41 41 a0 17 93 68 0a 02 70 01 43 52 54 .TVAA...h..p.CRT 23b0: 41 70 00 4c 43 44 41 70 00 54 56 41 41 a0 17 93 Ap.LCDAp.TVAA... 23c0: 68 0a 03 70 01 43 52 54 41 70 01 4c 43 44 41 70 h..p.CRTAp.LCDAp 23d0: 00 54 56 41 41 a0 17 93 68 0a 04 70 00 43 52 54 .TVAA...h..p.CRT 23e0: 41 70 00 4c 43 44 41 70 01 54 56 41 41 a0 17 93 Ap.LCDAp.TVAA... 23f0: 68 0a 05 70 00 43 52 54 41 70 01 4c 43 44 41 70 h..p.CRTAp.LCDAp 2400: 01 54 56 41 41 a0 17 93 68 0a 06 70 01 43 52 54 .TVAA...h..p.CRT 2410: 41 70 00 4c 43 44 41 70 01 54 56 41 41 a0 17 93 Ap.LCDAp.TVAA... 2420: 68 0a 07 70 01 43 52 54 41 70 01 4c 43 44 41 70 h..p.CRTAp.LCDAp 2430: 01 54 56 41 41 86 56 47 41 5f 0a 80 5b 82 42 f8 .TVAA.VGA_..[.B. 2440: 47 46 58 30 08 5f 41 44 52 0c 00 00 02 00 14 10 GFX0._ADR....... 2450: 5f 44 4f 53 01 70 7b 68 0a 07 00 44 53 45 4e 14 _DOS.p{h...DSEN. 2460: 41 26 5f 44 4f 44 00 70 00 4e 44 49 44 a0 15 92 A&_DOD.p.NDID... 2470: 93 44 49 44 4c 00 70 53 44 44 4c 44 49 44 31 44 .DIDL.pSDDLDID1D 2480: 49 44 31 a0 15 92 93 44 44 4c 32 00 70 53 44 44 ID1....DDL2.pSDD 2490: 4c 44 49 44 32 44 49 44 32 a0 15 92 93 44 44 4c LDID2DID2....DDL 24a0: 33 00 70 53 44 44 4c 44 49 44 33 44 49 44 33 a0 3.pSDDLDID3DID3. 24b0: 15 92 93 44 44 4c 34 00 70 53 44 44 4c 44 49 44 ...DDL4.pSDDLDID 24c0: 34 44 49 44 34 a0 15 92 93 44 44 4c 35 00 70 53 4DID4....DDL5.pS 24d0: 44 44 4c 44 49 44 35 44 49 44 35 a0 2c 93 4e 44 DDLDID5DID5.,.ND 24e0: 49 44 01 08 54 4d 50 31 12 07 01 0c ff ff ff ff ID..TMP1........ 24f0: 70 7d 0c 00 00 01 00 44 49 44 31 00 88 54 4d 50 p}.....DID1..TMP 2500: 31 00 00 a4 54 4d 50 31 a0 46 04 93 4e 44 49 44 1...TMP1.F..NDID 2510: 0a 02 08 54 4d 50 32 12 0c 02 0c ff ff ff ff 0c ...TMP2......... 2520: ff ff ff ff 70 7d 0c 00 00 01 00 44 49 44 31 00 ....p}.....DID1. 2530: 88 54 4d 50 32 00 00 70 7d 0c 00 00 01 00 44 49 .TMP2..p}.....DI 2540: 44 32 00 88 54 4d 50 32 01 00 a4 54 4d 50 32 a0 D2..TMP2...TMP2. 2550: 4f 05 93 4e 44 49 44 0a 03 08 54 4d 50 33 12 11 O..NDID...TMP3.. 2560: 03 0c ff ff ff ff 0c ff ff ff ff 0c ff ff ff ff ................ 2570: 70 7d 0c 00 00 01 00 44 49 44 31 00 88 54 4d 50 p}.....DID1..TMP 2580: 33 00 00 70 7d 0c 00 00 01 00 44 49 44 32 00 88 3..p}.....DID2.. 2590: 54 4d 50 33 01 00 70 7d 0c 00 00 01 00 44 49 44 TMP3..p}.....DID 25a0: 33 00 88 54 4d 50 33 0a 02 00 a4 54 4d 50 33 a0 3..TMP3....TMP3. 25b0: 48 07 93 4e 44 49 44 0a 04 08 54 4d 50 34 12 16 H..NDID...TMP4.. 25c0: 04 0c ff ff ff ff 0c ff ff ff ff 0c ff ff ff ff ................ 25d0: 0c ff ff ff ff 70 7d 0c 00 00 01 00 44 49 44 31 .....p}.....DID1 25e0: 00 88 54 4d 50 34 00 00 70 7d 0c 00 00 01 00 44 ..TMP4..p}.....D 25f0: 49 44 32 00 88 54 4d 50 34 01 00 70 7d 0c 00 00 ID2..TMP4..p}... 2600: 01 00 44 49 44 33 00 88 54 4d 50 34 0a 02 00 70 ..DID3..TMP4...p 2610: 7d 0c 00 00 01 00 44 49 44 34 00 88 54 4d 50 34 }.....DID4..TMP4 2620: 0a 03 00 a4 54 4d 50 34 a0 41 09 94 4e 44 49 44 ....TMP4.A..NDID 2630: 0a 04 08 54 4d 50 35 12 1b 05 0c ff ff ff ff 0c ...TMP5......... 2640: ff ff ff ff 0c ff ff ff ff 0c ff ff ff ff 0c ff ................ 2650: ff ff ff 70 7d 0c 00 00 01 00 44 49 44 31 00 88 ...p}.....DID1.. 2660: 54 4d 50 35 00 00 70 7d 0c 00 00 01 00 44 49 44 TMP5..p}.....DID 2670: 32 00 88 54 4d 50 35 01 00 70 7d 0c 00 00 01 00 2..TMP5..p}..... 2680: 44 49 44 33 00 88 54 4d 50 35 0a 02 00 70 7d 0c DID3..TMP5...p}. 2690: 00 00 01 00 44 49 44 34 00 88 54 4d 50 35 0a 03 ....DID4..TMP5.. 26a0: 00 70 7d 0c 00 00 01 00 44 49 44 34 00 88 54 4d .p}.....DID4..TM 26b0: 50 35 0a 04 00 a4 54 4d 50 35 a4 12 05 01 0b 00 P5....TMP5...... 26c0: 04 5b 82 43 06 44 44 30 31 14 1c 5f 41 44 52 08 .[.C.DD01.._ADR. 26d0: a0 09 93 44 49 44 31 00 a4 01 a1 0b a4 7b 0b ff ...DID1......{.. 26e0: ff 44 49 44 31 00 14 0f 5f 44 43 53 00 a4 43 44 .DID1..._DCS..CD 26f0: 44 53 44 49 44 31 14 0f 5f 44 47 53 00 a4 4e 44 DSDID1.._DGS..ND 2700: 44 53 44 49 44 31 14 1f 5f 44 53 53 01 a0 18 93 DSDID1.._DSS.... 2710: 7b 68 0c 00 00 00 c0 00 0c 00 00 00 c0 70 4e 53 {h...........pNS 2720: 54 45 43 53 54 45 5b 82 44 06 44 44 30 32 14 1d TECSTE[.D.DD02.. 2730: 5f 41 44 52 08 a0 0a 93 44 49 44 32 00 a4 0a 02 _ADR....DID2.... 2740: a1 0b a4 7b 0b ff ff 44 49 44 32 00 14 0f 5f 44 ...{...DID2..._D 2750: 43 53 00 a4 43 44 44 53 44 49 44 32 14 0f 5f 44 CS..CDDSDID2.._D 2760: 47 53 00 a4 4e 44 44 53 44 49 44 32 14 1f 5f 44 GS..NDDSDID2.._D 2770: 53 53 01 a0 18 93 7b 68 0c 00 00 00 c0 00 0c 00 SS....{h........ 2780: 00 00 c0 70 4e 53 54 45 43 53 54 45 5b 82 41 07 ...pNSTECSTE[.A. 2790: 44 44 30 33 14 1d 5f 41 44 52 08 a0 0a 93 44 49 DD03.._ADR....DI 27a0: 44 33 00 a4 0a 03 a1 0b a4 7b 0b ff ff 44 49 44 D3.......{...DID 27b0: 33 00 14 1c 5f 44 43 53 00 a0 0a 93 44 49 44 33 3..._DCS....DID3 27c0: 00 a4 0a 0b a1 0a a4 43 44 44 53 44 49 44 33 14 .......CDDSDID3. 27d0: 0f 5f 44 47 53 00 a4 4e 44 44 53 44 49 44 33 14 ._DGS..NDDSDID3. 27e0: 1f 5f 44 53 53 01 a0 18 93 7b 68 0c 00 00 00 c0 ._DSS....{h..... 27f0: 00 0c 00 00 00 c0 70 4e 53 54 45 43 53 54 45 5b ......pNSTECSTE[ 2800: 82 41 07 44 44 30 34 14 1d 5f 41 44 52 08 a0 0a .A.DD04.._ADR... 2810: 93 44 49 44 34 00 a4 0a 04 a1 0b a4 7b 0b ff ff .DID4.......{... 2820: 44 49 44 34 00 14 1c 5f 44 43 53 00 a0 0a 93 44 DID4..._DCS....D 2830: 49 44 34 00 a4 0a 0b a1 0a a4 43 44 44 53 44 49 ID4.......CDDSDI 2840: 44 34 14 0f 5f 44 47 53 00 a4 4e 44 44 53 44 49 D4.._DGS..NDDSDI 2850: 44 34 14 1f 5f 44 53 53 01 a0 18 93 7b 68 0c 00 D4.._DSS....{h.. 2860: 00 00 c0 00 0c 00 00 00 c0 70 4e 53 54 45 43 53 .........pNSTECS 2870: 54 45 5b 82 41 07 44 44 30 35 14 1d 5f 41 44 52 TE[.A.DD05.._ADR 2880: 08 a0 0a 93 44 49 44 35 00 a4 0a 05 a1 0b a4 7b ....DID5.......{ 2890: 0b ff ff 44 49 44 35 00 14 1c 5f 44 43 53 00 a0 ...DID5..._DCS.. 28a0: 0a 93 44 49 44 35 00 a4 0a 0b a1 0a a4 43 44 44 ..DID5.......CDD 28b0: 53 44 49 44 35 14 0f 5f 44 47 53 00 a4 4e 44 44 SDID5.._DGS..NDD 28c0: 53 44 49 44 35 14 1f 5f 44 53 53 01 a0 18 93 7b SDID5.._DSS....{ 28d0: 68 0c 00 00 00 c0 00 0c 00 00 00 c0 70 4e 53 54 h...........pNST 28e0: 45 43 53 54 45 14 4e 06 53 44 44 4c 01 75 4e 44 ECSTE.N.SDDL.uND 28f0: 49 44 70 7b 68 0b 0f 0f 00 60 7d 0c 00 00 00 80 IDp{h....`}..... 2900: 60 61 a0 09 93 44 49 44 4c 60 a4 61 a0 09 93 44 `a...DIDL`.a...D 2910: 44 4c 32 60 a4 61 a0 09 93 44 44 4c 33 60 a4 61 DL2`.a...DDL3`.a 2920: a0 09 93 44 44 4c 34 60 a4 61 a0 09 93 44 44 4c ...DDL4`.a...DDL 2930: 35 60 a4 61 a0 09 93 44 44 4c 36 60 a4 61 a0 09 5`.a...DDL6`.a.. 2940: 93 44 44 4c 37 60 a4 61 a0 09 93 44 44 4c 38 60 .DDL7`.a...DDL8` 2950: a4 61 a4 00 14 4a 08 43 44 44 53 01 a0 0f 93 43 .a...J.CDDS....C 2960: 41 44 4c 7b 68 0b 0f 0f 00 a4 0a 1f a0 0f 93 43 ADL{h..........C 2970: 41 4c 32 7b 68 0b 0f 0f 00 a4 0a 1f a0 0f 93 43 AL2{h..........C 2980: 41 4c 33 7b 68 0b 0f 0f 00 a4 0a 1f a0 0f 93 43 AL3{h..........C 2990: 41 4c 34 7b 68 0b 0f 0f 00 a4 0a 1f a0 0f 93 43 AL4{h..........C 29a0: 41 4c 35 7b 68 0b 0f 0f 00 a4 0a 1f a0 0f 93 43 AL5{h..........C 29b0: 41 4c 36 7b 68 0b 0f 0f 00 a4 0a 1f a0 0f 93 43 AL6{h..........C 29c0: 41 4c 37 7b 68 0b 0f 0f 00 a4 0a 1f a0 0f 93 43 AL7{h..........C 29d0: 41 4c 38 7b 68 0b 0f 0f 00 a4 0a 1f a4 0a 1d 14 AL8{h........... 29e0: 41 08 4e 44 44 53 01 a0 0e 93 4e 41 44 4c 7b 68 A.NDDS....NADL{h 29f0: 0b 0f 0f 00 a4 01 a0 0e 93 4e 44 4c 32 7b 68 0b .........NDL2{h. 2a00: 0f 0f 00 a4 01 a0 0e 93 4e 44 4c 33 7b 68 0b 0f ........NDL3{h.. 2a10: 0f 00 a4 01 a0 0e 93 4e 44 4c 34 7b 68 0b 0f 0f .......NDL4{h... 2a20: 00 a4 01 a0 0e 93 4e 44 4c 35 7b 68 0b 0f 0f 00 ......NDL5{h.... 2a30: a4 01 a0 0e 93 4e 44 4c 36 7b 68 0b 0f 0f 00 a4 .....NDL6{h..... 2a40: 01 a0 0e 93 4e 44 4c 37 7b 68 0b 0f 0f 00 a4 01 ....NDL7{h...... 2a50: a0 0e 93 4e 44 4c 38 7b 68 0b 0f 0f 00 a4 01 a4 ...NDL8{h....... 2a60: 00 14 40 07 42 52 54 4e 09 a0 14 93 7b 44 49 44 ..@.BRTN....{DID 2a70: 31 0b 00 0f 00 0b 00 04 86 44 44 30 31 68 a0 14 1........DD01h.. 2a80: 93 7b 44 49 44 32 0b 00 0f 00 0b 00 04 86 44 44 .{DID2........DD 2a90: 30 32 68 a0 14 93 7b 44 49 44 33 0b 00 0f 00 0b 02h...{DID3..... 2aa0: 00 04 86 44 44 30 33 68 a0 14 93 7b 44 49 44 34 ...DD03h...{DID4 2ab0: 0b 00 0f 00 0b 00 04 86 44 44 30 34 68 a0 14 93 ........DD04h... 2ac0: 7b 44 49 44 35 0b 00 0f 00 0b 00 04 86 44 44 30 {DID5........DD0 2ad0: 35 68 10 24 5e 5e 50 43 49 30 5b 80 4d 43 48 50 5h.$^^PCI0[.MCHP 2ae0: 02 0a 40 0a c0 5b 81 10 4d 43 48 50 00 00 40 30 ..@..[..MCHP..@0 2af0: 54 41 53 4d 0a 00 06 5b 80 49 47 44 50 02 0a 40 TASM...[.IGDP..@ 2b00: 0a c0 5b 81 45 05 49 47 44 50 00 00 40 09 00 01 ..[.E.IGDP..@... 2b10: 47 49 56 44 01 00 02 47 55 4d 41 03 00 09 00 04 GIVD...GUMA..... 2b20: 47 4d 46 4e 01 00 1b 00 40 46 41 53 4c 45 08 00 GMFN....@FASLE.. 2b30: 18 47 53 53 45 01 47 53 53 42 0e 47 53 45 53 01 .GSSE.GSSB.GSES. 2b40: 00 30 00 08 43 44 56 4c 05 00 03 00 18 4c 42 50 .0..CDVL.....LBP 2b50: 43 08 00 30 41 53 4c 53 20 5b 80 49 47 44 4d 00 C..0ASLS [.IGDM. 2b60: 41 53 4c 42 0b 00 20 5b 81 4e 16 49 47 44 4d 00 ASLB.. [.N.IGDM. 2b70: 53 49 47 4e 40 08 53 49 5a 45 20 4f 56 45 52 20 SIGN@.SIZE OVER 2b80: 53 56 45 52 40 10 56 56 45 52 40 08 47 56 45 52 SVER@.VVER@.GVER 2b90: 40 08 4d 42 4f 58 20 00 40 52 44 52 44 59 20 43 @.MBOX .@RDRDY C 2ba0: 53 54 53 20 43 45 56 54 20 00 40 0a 44 49 44 4c STS CEVT .@.DIDL 2bb0: 20 44 44 4c 32 20 44 44 4c 33 20 44 44 4c 34 20 DDL2 DDL3 DDL4 2bc0: 44 44 4c 35 20 44 44 4c 36 20 44 44 4c 37 20 44 DDL5 DDL6 DDL7 D 2bd0: 44 4c 38 20 43 50 44 4c 20 43 50 4c 32 20 43 50 DL8 CPDL CPL2 CP 2be0: 4c 33 20 43 50 4c 34 20 43 50 4c 35 20 43 50 4c L3 CPL4 CPL5 CPL 2bf0: 36 20 43 50 4c 37 20 43 50 4c 38 20 43 41 44 4c 6 CPL7 CPL8 CADL 2c00: 20 43 41 4c 32 20 43 41 4c 33 20 43 41 4c 34 20 CAL2 CAL3 CAL4 2c10: 43 41 4c 35 20 43 41 4c 36 20 43 41 4c 37 20 43 CAL5 CAL6 CAL7 C 2c20: 41 4c 38 20 4e 41 44 4c 20 4e 44 4c 32 20 4e 44 AL8 NADL NDL2 ND 2c30: 4c 33 20 4e 44 4c 34 20 4e 44 4c 35 20 4e 44 4c L3 NDL4 NDL5 NDL 2c40: 36 20 4e 44 4c 37 20 4e 44 4c 38 20 41 53 4c 50 6 NDL7 NDL8 ASLP 2c50: 20 54 49 44 58 20 43 48 50 44 20 43 4c 49 44 20 TIDX CHPD CLID 2c60: 43 44 43 4b 20 53 58 53 57 20 45 56 54 53 20 43 CDCK SXSW EVTS C 2c70: 4e 4f 54 20 4e 52 44 59 20 00 40 1e 53 43 49 45 NOT NRDY .@.SCIE 2c80: 01 47 45 46 43 04 47 58 46 43 03 47 45 53 46 08 .GEFC.GXFC.GESF. 2c90: 00 10 50 41 52 4d 20 44 53 4c 50 20 00 40 7a 41 ..PARM DSLP .@zA 2ca0: 52 44 59 20 41 53 4c 43 20 54 43 48 45 20 41 4c RDY ASLC TCHE AL 2cb0: 53 49 20 42 43 4c 50 20 50 46 49 54 20 43 42 4c SI BCLP PFIT CBL 2cc0: 56 20 42 43 4c 4d 40 14 43 50 46 4d 20 00 40 5c V BCLM@.CPFM .@\ 2cd0: 47 56 44 31 80 00 0e 08 44 42 54 42 12 32 15 00 GVD1....DBTB.2.. 2ce0: 0a 07 0a 38 0b c0 01 0b 00 0e 0a 3f 0b c7 01 0b ...8.......?.... 2cf0: 07 0e 0b f8 01 0b 38 0e 0b c0 0f 00 00 00 00 00 ......8......... 2d00: 0b 00 70 0b 07 70 0b 38 70 0b c0 71 0b 00 7e 08 ..p..p.8p..q..~. 2d10: 43 44 43 54 12 23 03 12 0a 03 0a c8 0b 40 01 0b CDCT.#.......@.. 2d20: 90 01 12 0a 03 0a c8 0b 4d 01 0b 90 01 12 0a 03 ........M....... 2d30: 0a de 0b 4d 01 0b 7d 01 08 53 55 43 43 01 08 4e ...M..}..SUCC..N 2d40: 56 4c 44 0a 02 08 43 52 49 54 0a 04 08 4e 43 52 VLD...CRIT...NCR 2d50: 54 0a 06 14 4c 4a 47 53 43 49 08 14 44 1e 47 42 T...LJGSCI..D.GB 2d60: 44 41 08 a0 1a 93 47 45 53 46 00 70 0b 79 02 50 DA....GESF.p.y.P 2d70: 41 52 4d 70 00 47 45 53 46 a4 53 55 43 43 a0 1a ARMp.GESF.SUCC.. 2d80: 93 47 45 53 46 01 70 0b 40 02 50 41 52 4d 70 00 .GESF.p.@.PARMp. 2d90: 47 45 53 46 a4 53 55 43 43 a0 47 04 93 47 45 53 GESF.SUCC.G..GES 2da0: 46 0a 04 7b 50 41 52 4d 0c 00 00 ff ef 50 41 52 F..{PARM.....PAR 2db0: 4d 7b 50 41 52 4d 79 83 88 44 42 54 42 49 42 54 M{PARMy..DBTBIBT 2dc0: 54 00 0a 10 00 50 41 52 4d 7d 49 42 54 54 50 41 T....PARM}IBTTPA 2dd0: 52 4d 50 41 52 4d 70 00 47 45 53 46 a4 53 55 43 RMPARMp.GESF.SUC 2de0: 43 a0 4a 06 93 47 45 53 46 0a 05 70 49 50 53 43 C.J..GESF..pIPSC 2df0: 50 41 52 4d 7d 50 41 52 4d 79 49 50 41 54 0a 08 PARM}PARMyIPAT.. 2e00: 00 50 41 52 4d 72 50 41 52 4d 0b 00 01 50 41 52 .PARMrPARM...PAR 2e10: 4d 7d 50 41 52 4d 79 4c 49 44 53 0a 10 00 50 41 M}PARMyLIDS...PA 2e20: 52 4d 72 50 41 52 4d 0c 00 00 01 00 50 41 52 4d RMrPARM.....PARM 2e30: 7d 50 41 52 4d 79 49 42 49 41 0a 14 00 50 41 52 }PARMyIBIA...PAR 2e40: 4d 70 00 47 45 53 46 a4 53 55 43 43 a0 2d 93 47 Mp.GESF.SUCC.-.G 2e50: 45 53 46 0a 06 70 49 54 56 46 50 41 52 4d 7d 50 ESF..pITVFPARM}P 2e60: 41 52 4d 79 49 54 56 4d 0a 04 00 50 41 52 4d 70 ARMyITVM...PARMp 2e70: 00 47 45 53 46 a4 53 55 43 43 a0 4f 08 93 47 45 .GESF.SUCC.O..GE 2e80: 53 46 0a 07 70 47 49 56 44 50 41 52 4d 7f 50 41 SF..pGIVDPARM.PA 2e90: 52 4d 01 50 41 52 4d 7d 50 41 52 4d 79 47 4d 46 RM.PARM}PARMyGMF 2ea0: 4e 01 00 50 41 52 4d 7d 50 41 52 4d 0b 00 10 50 N..PARM}PARM...P 2eb0: 41 52 4d a0 16 49 44 4d 4d 7d 50 41 52 4d 79 49 ARM..IDMM}PARMyI 2ec0: 44 4d 53 0a 11 00 50 41 52 4d a1 12 7d 50 41 52 DMS...PARM..}PAR 2ed0: 4d 79 49 44 4d 53 0a 0d 00 50 41 52 4d 7d 79 83 MyIDMS...PARM}y. 2ee0: 88 83 88 43 44 43 54 48 56 43 4f 00 74 43 44 56 ...CDCTHVCO.tCDV 2ef0: 4c 01 00 00 0a 15 00 50 41 52 4d 50 41 52 4d 70 L......PARMPARMp 2f00: 01 47 45 53 46 a4 53 55 43 43 a0 2a 93 47 45 53 .GESF.SUCC.*.GES 2f10: 46 0a 0a 70 00 50 41 52 4d a0 10 49 53 53 43 7d F..p.PARM..ISSC} 2f20: 50 41 52 4d 0a 03 50 41 52 4d 70 00 47 45 53 46 PARM..PARMp.GESF 2f30: a4 53 55 43 43 70 00 47 45 53 46 a4 43 52 49 54 .SUCCp.GESF.CRIT 2f40: 14 41 28 53 42 43 42 08 a0 20 93 47 45 53 46 00 .A(SBCB.. .GESF. 2f50: 70 00 50 41 52 4d 70 0b 7d f7 50 41 52 4d 70 00 p.PARMp.}.PARMp. 2f60: 47 45 53 46 a4 53 55 43 43 a0 18 93 47 45 53 46 GESF.SUCC...GESF 2f70: 01 70 00 47 45 53 46 70 00 50 41 52 4d a4 53 55 .p.GESFp.PARM.SU 2f80: 43 43 a0 19 93 47 45 53 46 0a 03 70 00 47 45 53 CC...GESF..p.GES 2f90: 46 70 00 50 41 52 4d a4 53 55 43 43 a0 19 93 47 Fp.PARM.SUCC...G 2fa0: 45 53 46 0a 04 70 00 47 45 53 46 70 00 50 41 52 ESF..p.GESFp.PAR 2fb0: 4d a4 53 55 43 43 a0 19 93 47 45 53 46 0a 05 70 M.SUCC...GESF..p 2fc0: 00 47 45 53 46 70 00 50 41 52 4d a4 53 55 43 43 .GESFp.PARM.SUCC 2fd0: a0 37 93 47 45 53 46 0a 06 70 7b 50 41 52 4d 0a .7.GESF..p{PARM. 2fe0: 0f 00 49 54 56 46 70 7a 7b 50 41 52 4d 0a f0 00 ..ITVFpz{PARM... 2ff0: 0a 04 00 49 54 56 4d 70 00 47 45 53 46 70 00 50 ...ITVMp.GESFp.P 3000: 41 52 4d a4 53 55 43 43 a0 19 93 47 45 53 46 0a ARM.SUCC...GESF. 3010: 07 70 00 47 45 53 46 70 00 50 41 52 4d a4 53 55 .p.GESFp.PARM.SU 3020: 43 43 a0 19 93 47 45 53 46 0a 08 70 00 47 45 53 CC...GESF..p.GES 3030: 46 70 00 50 41 52 4d a4 53 55 43 43 a0 24 93 47 Fp.PARM.SUCC.$.G 3040: 45 53 46 0a 09 7b 50 41 52 4d 0a ff 49 42 54 54 ESF..{PARM..IBTT 3050: 70 00 47 45 53 46 70 00 50 41 52 4d a4 53 55 43 p.GESFp.PARM.SUC 3060: 43 a0 46 05 93 47 45 53 46 0a 0a 7b 50 41 52 4d C.F..GESF..{PARM 3070: 0a ff 49 50 53 43 a0 21 7b 7a 50 41 52 4d 0a 08 ..IPSC.!{zPARM.. 3080: 00 0a ff 00 7b 7a 50 41 52 4d 0a 08 00 0a ff 49 ....{zPARM.....I 3090: 50 41 54 76 49 50 41 54 7b 7a 50 41 52 4d 0a 14 PATvIPAT{zPARM.. 30a0: 00 0a 07 49 42 49 41 70 00 47 45 53 46 70 00 50 ...IBIAp.GESFp.P 30b0: 41 52 4d a4 53 55 43 43 a0 40 06 93 47 45 53 46 ARM.SUCC.@..GESF 30c0: 0a 0b 7b 7a 50 41 52 4d 01 00 01 49 46 31 45 a0 ..{zPARM...IF1E. 30d0: 21 7b 50 41 52 4d 0c 00 e0 01 00 00 7b 7a 50 41 !{PARM......{zPA 30e0: 52 4d 0a 0d 00 0a 0f 49 44 4d 53 70 00 49 44 4d RM.....IDMSp.IDM 30f0: 4d a1 16 7b 7a 50 41 52 4d 0a 11 00 0a 0f 49 44 M..{zPARM.....ID 3100: 4d 53 70 01 49 44 4d 4d 70 00 47 45 53 46 70 00 MSp.IDMMp.GESFp. 3110: 50 41 52 4d a4 53 55 43 43 a0 19 93 47 45 53 46 PARM.SUCC...GESF 3120: 0a 10 70 00 47 45 53 46 70 00 50 41 52 4d a4 53 ..p.GESFp.PARM.S 3130: 55 43 43 a0 1f 93 47 45 53 46 0a 11 7d 50 41 52 UCC...GESF..}PAR 3140: 4d 0b 00 01 50 41 52 4d 70 00 47 45 53 46 a4 53 M...PARMp.GESF.S 3150: 55 43 43 a0 49 04 93 47 45 53 46 0a 12 a0 26 7b UCC.I..GESF...&{ 3160: 50 41 52 4d 01 00 a0 10 93 7a 50 41 52 4d 01 00 PARM.....zPARM.. 3170: 01 70 01 49 53 53 43 a1 0c 70 00 47 45 53 46 a4 .p.ISSC..p.GESF. 3180: 43 52 49 54 a1 07 70 00 49 53 53 43 70 00 47 45 CRIT..p.ISSCp.GE 3190: 53 46 70 00 50 41 52 4d a4 53 55 43 43 a0 19 93 SFp.PARM.SUCC... 31a0: 47 45 53 46 0a 13 70 00 47 45 53 46 70 00 50 41 GESF..p.GESFp.PA 31b0: 52 4d a4 53 55 43 43 70 00 47 45 53 46 a4 53 55 RM.SUCCp.GESF.SU 31c0: 43 43 a0 11 93 47 45 46 43 0a 04 70 47 42 44 41 CC...GEFC..pGBDA 31d0: 47 58 46 43 a0 11 93 47 45 46 43 0a 06 70 53 42 GXFC...GEFC..pSB 31e0: 43 42 47 58 46 43 70 00 47 45 46 43 70 01 53 43 CBGXFCp.GEFCp.SC 31f0: 49 53 70 00 47 53 53 45 70 00 53 43 49 45 a4 00 ISp.GSSEp.SCIE.. 3200: 14 19 50 44 52 44 00 a0 0c 92 44 52 44 59 5b 22 ..PDRD....DRDY[" 3210: 41 53 4c 50 a4 92 44 52 44 59 14 1d 50 53 54 53 ASLP..DRDY..PSTS 3220: 00 a0 0e 94 43 53 54 53 0a 02 5b 22 41 53 4c 50 ....CSTS..["ASLP 3230: a4 93 43 53 54 53 0a 03 14 47 06 47 4e 4f 54 02 ..CSTS...G.GNOT. 3240: a0 07 50 44 52 44 a4 01 a0 07 50 53 54 53 a4 01 ..PDRD....PSTS.. 3250: 70 68 43 45 56 54 70 0a 03 43 53 54 53 a0 2c 90 phCEVTp..CSTS.,. 3260: 93 43 48 50 44 00 93 69 00 a0 18 91 94 4f 53 59 .CHPD..i.....OSY 3270: 53 0b d0 07 95 4f 53 59 53 0b d6 07 86 50 43 49 S....OSYS....PCI 3280: 30 69 a1 07 86 47 46 58 30 69 86 47 46 58 30 0a 0i...GFX0i.GFX0. 3290: 80 a0 0c 92 50 53 54 53 70 00 43 45 56 54 a4 00 ....PSTSp.CEVT.. 32a0: 14 13 47 48 44 53 01 70 68 54 49 44 58 a4 47 4e ..GHDS.phTIDX.GN 32b0: 4f 54 01 00 14 14 47 4c 49 44 01 70 68 43 4c 49 OT....GLID.phCLI 32c0: 44 a4 47 4e 4f 54 0a 02 00 14 15 47 44 43 4b 01 D.GNOT.....GDCK. 32d0: 70 68 43 44 43 4b a4 47 4e 4f 54 0a 04 0a 80 14 phCDCK.GNOT..... 32e0: 19 50 41 52 44 00 a0 0c 92 41 52 44 59 5b 22 41 .PARD....ARDY["A 32f0: 53 4c 50 a4 92 41 52 44 59 14 46 0c 41 49 4e 54 SLP..ARDY.F.AINT 3300: 02 a0 0e 92 7b 54 43 48 45 79 01 68 00 00 a4 01 ....{TCHEy.h.... 3310: a0 07 50 41 52 44 a4 01 a0 4c 05 93 68 0a 02 a0 ..PARD...L..h... 3320: 33 43 50 46 4d a0 0e 93 43 50 46 4d 01 70 0a 06 3CPFM...CPFM.p.. 3330: 50 46 49 54 a0 0f 93 43 50 46 4d 0a 06 70 0a 08 PFIT...CPFM..p.. 3340: 50 46 49 54 a0 0e 93 43 50 46 4d 0a 08 70 01 50 PFIT...CPFM..p.P 3350: 46 49 54 a1 0c 7f 50 46 49 54 0a 07 50 46 49 54 FIT...PFIT..PFIT 3360: 7d 50 46 49 54 0c 00 00 00 80 50 46 49 54 70 0a }PFIT.....PFITp. 3370: 04 41 53 4c 43 a1 42 04 a0 28 93 68 01 70 78 77 .ASLC.B..(.h.pxw 3380: 69 0a ff 00 0a 64 00 00 42 43 4c 50 7d 42 43 4c i....d..BCLP}BCL 3390: 50 0c 00 00 00 80 42 43 4c 50 70 0a 02 41 53 4c P.....BCLPp..ASL 33a0: 43 a1 16 a0 10 93 68 00 70 69 41 4c 53 49 70 01 C.....h.piALSIp. 33b0: 41 53 4c 43 a1 03 a4 01 70 00 4c 42 50 43 a4 00 ASLC....p.LBPC.. 33c0: 10 41 36 5c 00 5b 80 49 4f 5f 54 01 0b 00 08 0a .A6\.[.IO_T..... 33d0: 10 5b 81 0e 49 4f 5f 54 01 00 40 04 54 52 50 30 .[..IO_T..@.TRP0 33e0: 08 5b 80 50 4d 49 4f 01 0b 00 10 0a 80 5b 81 28 .[.PMIO......[.( 33f0: 50 4d 49 4f 01 00 40 15 00 08 00 02 41 43 50 57 PMIO..@.....ACPW 3400: 01 00 45 0b 00 01 47 50 45 43 01 00 4e 10 00 09 ..E...GPEC..N... 3410: 53 43 49 53 01 00 06 5b 80 47 50 49 4f 01 0b 80 SCIS...[.GPIO... 3420: 11 0a 3c 5b 81 40 0c 47 50 49 4f 01 47 55 30 30 ..<[.@.GPIO.GU00 3430: 08 47 55 30 31 08 47 55 30 32 08 47 55 30 33 08 .GU01.GU02.GU03. 3440: 47 49 4f 30 08 47 49 4f 31 08 47 49 4f 32 08 47 GIO0.GIO1.GIO2.G 3450: 49 4f 33 08 00 20 47 4c 30 30 08 47 4c 30 31 08 IO3.. GL00.GL01. 3460: 47 4c 30 32 08 00 03 47 50 32 37 01 47 50 32 38 GL02...GP27.GP28 3470: 01 00 03 00 40 04 47 42 30 30 08 47 42 30 31 08 ....@.GB00.GB01. 3480: 47 42 30 32 08 47 42 30 33 08 00 40 08 47 49 56 GB02.GB03..@.GIV 3490: 30 08 00 03 4c 50 4f 4c 01 00 04 47 49 56 32 08 0...LPOL...GIV2. 34a0: 47 49 56 33 08 47 55 30 34 08 47 55 30 35 08 47 GIV3.GU04.GU05.G 34b0: 55 30 36 08 47 55 30 37 08 47 49 4f 34 08 47 49 U06.GU07.GIO4.GI 34c0: 4f 35 08 47 49 4f 36 08 47 49 4f 37 08 00 05 47 O5.GIO6.GIO7...G 34d0: 50 33 37 01 00 02 47 4c 30 35 08 47 4c 30 36 08 P37...GL05.GL06. 34e0: 47 4c 30 37 08 5b 80 52 43 52 42 00 0c 00 c0 d1 GL07.[.RCRB..... 34f0: fe 0b 00 40 5b 81 48 05 52 43 52 42 13 00 80 00 ...@[.H.RCRB.... 3500: 08 00 80 00 10 00 80 02 02 48 50 41 53 02 00 05 .........HPAS... 3510: 48 50 41 45 01 00 48 09 00 01 50 41 54 44 01 53 HPAE..H...PATD.S 3520: 41 54 44 01 53 4d 42 44 01 48 44 41 44 01 00 0b ATD.SMBD.HDAD... 3530: 52 50 31 44 01 52 50 32 44 01 52 50 33 44 01 52 RP1D.RP2D.RP3D.R 3540: 50 34 44 01 52 50 35 44 01 52 50 36 44 01 08 5f P4D.RP5D.RP6D.._ 3550: 53 30 5f 12 05 03 00 00 00 08 5f 53 33 5f 12 07 S0_......._S3_.. 3560: 03 0a 05 0a 05 00 08 5f 53 34 5f 12 07 03 0a 06 ......._S4_..... 3570: 0a 06 00 08 5f 53 35 5f 12 07 03 0a 07 0a 07 00 ...._S5_........ 3580: 14 45 04 47 45 54 50 09 a0 0e 93 7b 68 0a 09 00 .E.GETP....{h... 3590: 00 a4 0c ff ff ff ff a0 0d 93 7b 68 0a 09 00 0a ..........{h.... 35a0: 08 a4 0b 84 03 7a 7b 68 0b 00 03 00 0a 08 60 7a .....z{h......`z 35b0: 7b 68 0b 00 30 00 0a 0c 61 a4 77 0a 1e 74 0a 09 {h..0...a.w..t.. 35c0: 72 60 61 00 00 00 14 30 47 44 4d 41 0d a0 23 68 r`a....0GDMA..#h 35d0: a0 07 90 69 6c a4 0a 14 a0 0e 90 6a 6c a4 77 74 ...il......jl.wt 35e0: 0a 04 6b 00 0a 0f 00 a4 77 74 0a 04 6b 00 0a 1e ..k.....wt..k... 35f0: 00 a4 0c ff ff ff ff 14 1f 47 45 54 54 09 a4 77 .........GETT..w 3600: 0a 1e 74 0a 09 72 7b 7a 68 0a 02 00 0a 03 00 7b ..t..r{zh......{ 3610: 68 0a 03 00 00 00 00 14 44 06 47 45 54 46 0b 08 h.......D.GETF.. 3620: 54 4d 50 46 00 a0 0c 68 7d 54 4d 50 46 01 54 4d TMPF...h}TMPF.TM 3630: 50 46 a0 11 7b 6a 0a 02 00 7d 54 4d 50 46 0a 02 PF..{j...}TMPF.. 3640: 54 4d 50 46 a0 0d 69 7d 54 4d 50 46 0a 04 54 4d TMPF..i}TMPF..TM 3650: 50 46 a0 11 7b 6a 0a 20 00 7d 54 4d 50 46 0a 08 PF..{j. .}TMPF.. 3660: 54 4d 50 46 a0 12 7b 6a 0b 00 40 00 7d 54 4d 50 TMPF..{j..@.}TMP 3670: 46 0a 10 54 4d 50 46 a4 54 4d 50 46 14 3d 53 45 F..TMPF.TMPF.=SE 3680: 54 50 0b a0 08 94 68 0a f0 a4 0a 08 a1 2d a0 27 TP....h......-.' 3690: 7b 69 0a 02 00 a0 10 90 92 94 68 0a 78 7b 6a 0a {i........h.x{j. 36a0: 02 00 a4 0b 01 23 a0 0f 90 92 94 68 0a b4 7b 6a .....#.....h..{j 36b0: 01 00 a4 0b 01 21 a4 0b 01 10 14 37 53 44 4d 41 .....!.....7SDMA 36c0: 09 a0 08 92 94 68 0a 14 a4 01 a0 09 92 94 68 0a .....h........h. 36d0: 1e a4 0a 02 a0 08 92 94 68 0a 2d a4 01 a0 09 92 ........h.-..... 36e0: 94 68 0a 3c a4 0a 02 a0 08 92 94 68 0a 5a a4 01 .h.<.......h.Z.. 36f0: a4 00 14 2f 53 45 54 54 0b a0 25 7b 69 0a 02 00 .../SETT..%{i... 3700: a0 0f 90 92 94 68 0a 78 7b 6a 0a 02 00 a4 0a 0b .....h.x{j...... 3710: a0 0e 90 92 94 68 0a b4 7b 6a 01 00 a4 0a 09 a4 .....h..{j...... 3720: 0a 04 5b 82 4b 04 48 44 45 46 08 5f 41 44 52 0c ..[.K.HDEF._ADR. 3730: 00 00 1b 00 5b 80 48 44 41 52 02 0a 4c 0a 10 5b ....[.HDAR..L..[ 3740: 81 22 48 44 41 52 02 44 43 4b 41 01 00 07 44 43 ."HDAR.DCKA...DC 3750: 4b 4d 01 00 06 44 43 4b 53 01 00 30 00 0f 50 4d KM...DCKS..0..PM 3760: 45 53 01 08 5f 50 52 57 12 06 02 0a 0d 0a 03 5b ES.._PRW.......[ 3770: 82 41 10 52 50 30 31 08 5f 41 44 52 0c 00 00 1c .A.RP01._ADR.... 3780: 00 5b 80 50 58 43 53 02 0a 40 0a c0 5b 81 45 04 .[.PXCS..@..[.E. 3790: 50 58 43 53 40 00 40 09 00 0d 4c 41 53 58 01 00 PXCS@.@...LASX.. 37a0: 32 41 42 50 58 01 00 02 50 44 43 58 01 00 02 50 2ABPX...PDCX...P 37b0: 44 53 58 01 00 01 4c 53 43 58 01 00 27 00 10 50 DSX...LSCX..'..P 37c0: 53 50 58 01 00 4f 3c 00 1e 48 50 53 58 01 50 4d SPX..O<..HPSX.PM 37d0: 53 58 01 5b 82 0b 50 58 53 58 08 5f 41 44 52 00 SX.[..PXSX._ADR. 37e0: 14 41 09 5f 50 52 54 00 a0 33 47 50 49 43 a4 12 .A._PRT..3GPIC.. 37f0: 2c 04 12 09 04 0b ff ff 00 00 0a 10 12 09 04 0b ,............... 3800: ff ff 01 00 0a 11 12 0a 04 0b ff ff 0a 02 00 0a ................ 3810: 12 12 0a 04 0b ff ff 0a 03 00 0a 13 a1 45 05 a4 .............E.. 3820: 12 41 05 04 12 12 04 0b ff ff 00 5e 5e 2e 4c 50 .A.........^^.LP 3830: 43 42 4c 4e 4b 41 00 12 12 04 0b ff ff 01 5e 5e CBLNKA........^^ 3840: 2e 4c 50 43 42 4c 4e 4b 42 00 12 13 04 0b ff ff .LPCBLNKB....... 3850: 0a 02 5e 5e 2e 4c 50 43 42 4c 4e 4b 43 00 12 13 ..^^.LPCBLNKC... 3860: 04 0b ff ff 0a 03 5e 5e 2e 4c 50 43 42 4c 4e 4b ......^^.LPCBLNK 3870: 44 00 5b 82 41 10 52 50 30 32 08 5f 41 44 52 0c D.[.A.RP02._ADR. 3880: 01 00 1c 00 5b 80 50 58 43 53 02 0a 40 0a c0 5b ....[.PXCS..@..[ 3890: 81 45 04 50 58 43 53 40 00 40 09 00 0d 4c 41 53 .E.PXCS@.@...LAS 38a0: 58 01 00 32 41 42 50 58 01 00 02 50 44 43 58 01 X..2ABPX...PDCX. 38b0: 00 02 50 44 53 58 01 00 01 4c 53 43 58 01 00 27 ..PDSX...LSCX..' 38c0: 00 10 50 53 50 58 01 00 4f 3c 00 1e 48 50 53 58 ..PSPX..O<..HPSX 38d0: 01 50 4d 53 58 01 5b 82 0b 50 58 53 58 08 5f 41 .PMSX.[..PXSX._A 38e0: 44 52 00 14 41 09 5f 50 52 54 00 a0 33 47 50 49 DR..A._PRT..3GPI 38f0: 43 a4 12 2c 04 12 09 04 0b ff ff 00 00 0a 11 12 C..,............ 3900: 09 04 0b ff ff 01 00 0a 12 12 0a 04 0b ff ff 0a ................ 3910: 02 00 0a 13 12 0a 04 0b ff ff 0a 03 00 0a 10 a1 ................ 3920: 45 05 a4 12 41 05 04 12 12 04 0b ff ff 00 5e 5e E...A.........^^ 3930: 2e 4c 50 43 42 4c 4e 4b 42 00 12 12 04 0b ff ff .LPCBLNKB....... 3940: 01 5e 5e 2e 4c 50 43 42 4c 4e 4b 43 00 12 13 04 .^^.LPCBLNKC.... 3950: 0b ff ff 0a 02 5e 5e 2e 4c 50 43 42 4c 4e 4b 44 .....^^.LPCBLNKD 3960: 00 12 13 04 0b ff ff 0a 03 5e 5e 2e 4c 50 43 42 .........^^.LPCB 3970: 4c 4e 4b 41 00 5b 82 4d 11 52 50 30 33 08 5f 41 LNKA.[.M.RP03._A 3980: 44 52 0c 02 00 1c 00 5b 80 50 58 43 53 02 0a 40 DR.....[.PXCS..@ 3990: 0a c0 5b 81 45 04 50 58 43 53 40 00 40 09 00 0d ..[.E.PXCS@.@... 39a0: 4c 41 53 58 01 00 32 41 42 50 58 01 00 02 50 44 LASX..2ABPX...PD 39b0: 43 58 01 00 02 50 44 53 58 01 00 01 4c 53 43 58 CX...PDSX...LSCX 39c0: 01 00 27 00 10 50 53 50 58 01 00 4f 3c 00 1e 48 ..'..PSPX..O<..H 39d0: 50 53 58 01 50 4d 53 58 01 5b 82 0b 50 58 53 58 PSX.PMSX.[..PXSX 39e0: 08 5f 41 44 52 00 08 2e 50 58 53 58 5f 52 4d 56 ._ADR...PXSX_RMV 39f0: 01 08 2e 50 58 53 58 5f 50 52 57 12 06 02 0a 09 ...PXSX_PRW..... 3a00: 0a 03 14 41 09 5f 50 52 54 00 a0 33 47 50 49 43 ...A._PRT..3GPIC 3a10: a4 12 2c 04 12 09 04 0b ff ff 00 00 0a 12 12 09 ..,............. 3a20: 04 0b ff ff 01 00 0a 13 12 0a 04 0b ff ff 0a 02 ................ 3a30: 00 0a 10 12 0a 04 0b ff ff 0a 03 00 0a 11 a1 45 ...............E 3a40: 05 a4 12 41 05 04 12 12 04 0b ff ff 00 5e 5e 2e ...A.........^^. 3a50: 4c 50 43 42 4c 4e 4b 43 00 12 12 04 0b ff ff 01 LPCBLNKC........ 3a60: 5e 5e 2e 4c 50 43 42 4c 4e 4b 44 00 12 13 04 0b ^^.LPCBLNKD..... 3a70: ff ff 0a 02 5e 5e 2e 4c 50 43 42 4c 4e 4b 41 00 ....^^.LPCBLNKA. 3a80: 12 13 04 0b ff ff 0a 03 5e 5e 2e 4c 50 43 42 4c ........^^.LPCBL 3a90: 4e 4b 42 00 5b 82 4f 11 52 50 30 34 08 5f 41 44 NKB.[.O.RP04._AD 3aa0: 52 0c 03 00 1c 00 5b 80 50 58 43 53 02 0a 40 0a R.....[.PXCS..@. 3ab0: c0 5b 81 45 04 50 58 43 53 40 00 40 09 00 0d 4c .[.E.PXCS@.@...L 3ac0: 41 53 58 01 00 32 41 42 50 58 01 00 02 50 44 43 ASX..2ABPX...PDC 3ad0: 58 01 00 02 50 44 53 58 01 00 01 4c 53 43 58 01 X...PDSX...LSCX. 3ae0: 00 27 00 10 50 53 50 58 01 00 4f 3c 00 1e 48 50 .'..PSPX..O<..HP 3af0: 53 58 01 50 4d 53 58 01 5b 82 29 50 58 53 58 08 SX.PMSX.[.)PXSX. 3b00: 5f 41 44 52 00 14 1d 5f 50 52 57 00 a0 0d 57 4b _ADR..._PRW...WK 3b10: 4c 4e a4 12 06 02 0a 09 0a 03 a1 08 a4 12 05 02 LN.............. 3b20: 0a 09 00 14 41 09 5f 50 52 54 00 a0 33 47 50 49 ....A._PRT..3GPI 3b30: 43 a4 12 2c 04 12 09 04 0b ff ff 00 00 0a 13 12 C..,............ 3b40: 09 04 0b ff ff 01 00 0a 10 12 0a 04 0b ff ff 0a ................ 3b50: 02 00 0a 11 12 0a 04 0b ff ff 0a 03 00 0a 12 a1 ................ 3b60: 45 05 a4 12 41 05 04 12 12 04 0b ff ff 00 5e 5e E...A.........^^ 3b70: 2e 4c 50 43 42 4c 4e 4b 44 00 12 12 04 0b ff ff .LPCBLNKD....... 3b80: 01 5e 5e 2e 4c 50 43 42 4c 4e 4b 41 00 12 13 04 .^^.LPCBLNKA.... 3b90: 0b ff ff 0a 02 5e 5e 2e 4c 50 43 42 4c 4e 4b 42 .....^^.LPCBLNKB 3ba0: 00 12 13 04 0b ff ff 0a 03 5e 5e 2e 4c 50 43 42 .........^^.LPCB 3bb0: 4c 4e 4b 43 00 5b 82 41 10 52 50 30 35 08 5f 41 LNKC.[.A.RP05._A 3bc0: 44 52 0c 04 00 1c 00 5b 80 50 58 43 53 02 0a 40 DR.....[.PXCS..@ 3bd0: 0a c0 5b 81 45 04 50 58 43 53 40 00 40 09 00 0d ..[.E.PXCS@.@... 3be0: 4c 41 53 58 01 00 32 41 42 50 58 01 00 02 50 44 LASX..2ABPX...PD 3bf0: 43 58 01 00 02 50 44 53 58 01 00 01 4c 53 43 58 CX...PDSX...LSCX 3c00: 01 00 27 00 10 50 53 50 58 01 00 4f 3c 00 1e 48 ..'..PSPX..O<..H 3c10: 50 53 58 01 50 4d 53 58 01 5b 82 0b 50 58 53 58 PSX.PMSX.[..PXSX 3c20: 08 5f 41 44 52 00 14 41 09 5f 50 52 54 00 a0 33 ._ADR..A._PRT..3 3c30: 47 50 49 43 a4 12 2c 04 12 09 04 0b ff ff 00 00 GPIC..,......... 3c40: 0a 10 12 09 04 0b ff ff 01 00 0a 11 12 0a 04 0b ................ 3c50: ff ff 0a 02 00 0a 12 12 0a 04 0b ff ff 0a 03 00 ................ 3c60: 0a 13 a1 45 05 a4 12 41 05 04 12 12 04 0b ff ff ...E...A........ 3c70: 00 5e 5e 2e 4c 50 43 42 4c 4e 4b 41 00 12 12 04 .^^.LPCBLNKA.... 3c80: 0b ff ff 01 5e 5e 2e 4c 50 43 42 4c 4e 4b 42 00 ....^^.LPCBLNKB. 3c90: 12 13 04 0b ff ff 0a 02 5e 5e 2e 4c 50 43 42 4c ........^^.LPCBL 3ca0: 4e 4b 43 00 12 13 04 0b ff ff 0a 03 5e 5e 2e 4c NKC.........^^.L 3cb0: 50 43 42 4c 4e 4b 44 00 5b 82 41 10 52 50 30 36 PCBLNKD.[.A.RP06 3cc0: 08 5f 41 44 52 0c 05 00 1c 00 5b 80 50 58 43 53 ._ADR.....[.PXCS 3cd0: 02 0a 40 0a c0 5b 81 45 04 50 58 43 53 40 00 40 ..@..[.E.PXCS@.@ 3ce0: 09 00 0d 4c 41 53 58 01 00 32 41 42 50 58 01 00 ...LASX..2ABPX.. 3cf0: 02 50 44 43 58 01 00 02 50 44 53 58 01 00 01 4c .PDCX...PDSX...L 3d00: 53 43 58 01 00 27 00 10 50 53 50 58 01 00 4f 3c SCX..'..PSPX..O< 3d10: 00 1e 48 50 53 58 01 50 4d 53 58 01 5b 82 0b 50 ..HPSX.PMSX.[..P 3d20: 58 53 58 08 5f 41 44 52 00 14 41 09 5f 50 52 54 XSX._ADR..A._PRT 3d30: 00 a0 33 47 50 49 43 a4 12 2c 04 12 09 04 0b ff ..3GPIC..,...... 3d40: ff 00 00 0a 11 12 09 04 0b ff ff 01 00 0a 12 12 ................ 3d50: 0a 04 0b ff ff 0a 02 00 0a 13 12 0a 04 0b ff ff ................ 3d60: 0a 03 00 0a 10 a1 45 05 a4 12 41 05 04 12 12 04 ......E...A..... 3d70: 0b ff ff 00 5e 5e 2e 4c 50 43 42 4c 4e 4b 42 00 ....^^.LPCBLNKB. 3d80: 12 12 04 0b ff ff 01 5e 5e 2e 4c 50 43 42 4c 4e .......^^.LPCBLN 3d90: 4b 43 00 12 13 04 0b ff ff 0a 02 5e 5e 2e 4c 50 KC.........^^.LP 3da0: 43 42 4c 4e 4b 44 00 12 13 04 0b ff ff 0a 03 5e CBLNKD.........^ 3db0: 5e 2e 4c 50 43 42 4c 4e 4b 41 00 5b 82 4d 06 55 ^.LPCBLNKA.[.M.U 3dc0: 53 42 31 08 5f 41 44 52 0c 00 00 1d 00 5b 80 55 SB1._ADR.....[.U 3dd0: 31 43 53 02 0a c4 0a 04 5b 81 0b 55 31 43 53 03 1CS.....[..U1CS. 3de0: 55 31 45 4e 02 08 5f 50 52 57 12 06 02 0a 03 0a U1EN.._PRW...... 3df0: 03 14 24 5f 50 53 57 01 a0 15 68 70 01 41 43 50 ..$_PSW...hp.ACP 3e00: 57 a0 0c 41 43 50 57 70 0a 03 55 31 45 4e a1 07 W..ACPWp..U1EN.. 3e10: 70 00 55 31 45 4e 14 09 5f 53 33 44 00 a4 0a 02 p.U1EN.._S3D.... 3e20: 14 09 5f 53 34 44 00 a4 0a 02 5b 82 4c 06 55 53 .._S4D....[.L.US 3e30: 42 32 08 5f 41 44 52 0c 01 00 1d 00 5b 80 55 32 B2._ADR.....[.U2 3e40: 43 53 02 0a c4 0a 04 5b 81 0b 55 32 43 53 03 55 CS.....[..U2CS.U 3e50: 32 45 4e 02 08 5f 50 52 57 12 06 02 0a 04 0a 03 2EN.._PRW....... 3e60: 14 23 5f 50 53 57 01 a0 14 68 70 01 41 43 50 57 .#_PSW...hp.ACPW 3e70: a0 0b 41 43 50 57 70 01 55 32 45 4e a1 07 70 00 ..ACPWp.U2EN..p. 3e80: 55 32 45 4e 14 09 5f 53 33 44 00 a4 0a 02 14 09 U2EN.._S3D...... 3e90: 5f 53 34 44 00 a4 0a 02 5b 82 4d 06 55 53 42 33 _S4D....[.M.USB3 3ea0: 08 5f 41 44 52 0c 02 00 1d 00 5b 80 55 32 43 53 ._ADR.....[.U2CS 3eb0: 02 0a c4 0a 04 5b 81 0b 55 32 43 53 03 55 33 45 .....[..U2CS.U3E 3ec0: 4e 02 08 5f 50 52 57 12 06 02 0a 0c 0a 03 14 24 N.._PRW........$ 3ed0: 5f 50 53 57 01 a0 15 68 70 01 41 43 50 57 a0 0c _PSW...hp.ACPW.. 3ee0: 41 43 50 57 70 0a 03 55 33 45 4e a1 07 70 00 55 ACPWp..U3EN..p.U 3ef0: 33 45 4e 14 09 5f 53 33 44 00 a4 0a 02 14 09 5f 3EN.._S3D......_ 3f00: 53 34 44 00 a4 0a 02 5b 82 4d 06 55 53 42 34 08 S4D....[.M.USB4. 3f10: 5f 41 44 52 0c 00 00 1a 00 5b 80 55 34 43 53 02 _ADR.....[.U4CS. 3f20: 0a c4 0a 04 5b 81 0b 55 34 43 53 03 55 34 45 4e ....[..U4CS.U4EN 3f30: 02 08 5f 50 52 57 12 06 02 0a 0e 0a 03 14 24 5f .._PRW........$_ 3f40: 50 53 57 01 a0 15 68 70 01 41 43 50 57 a0 0c 41 PSW...hp.ACPW..A 3f50: 43 50 57 70 0a 03 55 34 45 4e a1 07 70 00 55 34 CPWp..U4EN..p.U4 3f60: 45 4e 14 09 5f 53 33 44 00 a4 0a 02 14 09 5f 53 EN.._S3D......_S 3f70: 34 44 00 a4 0a 02 5b 82 41 06 55 53 42 35 08 5f 4D....[.A.USB5._ 3f80: 41 44 52 0c 01 00 1a 00 5b 80 55 35 43 53 02 0a ADR.....[.U5CS.. 3f90: c4 0a 04 5b 81 0b 55 35 43 53 03 55 35 45 4e 02 ...[..U5CS.U5EN. 3fa0: 14 24 5f 50 53 57 01 a0 15 68 70 01 41 43 50 57 .$_PSW...hp.ACPW 3fb0: a0 0c 41 43 50 57 70 0a 03 55 35 45 4e a1 07 70 ..ACPWp..U5EN..p 3fc0: 00 55 35 45 4e 14 09 5f 53 33 44 00 a4 0a 02 14 .U5EN.._S3D..... 3fd0: 09 5f 53 34 44 00 a4 0a 02 5b 82 4b 0a 45 48 43 ._S4D....[.K.EHC 3fe0: 31 08 5f 41 44 52 0c 07 00 1d 00 5b 80 55 37 43 1._ADR.....[.U7C 3ff0: 53 02 0a 54 0a 04 5b 81 0d 55 37 43 53 03 00 0f S..T..[..U7CS... 4000: 50 4d 45 53 01 5b 82 4f 05 48 55 42 37 08 5f 41 PMES.[.O.HUB7._A 4010: 44 52 00 5b 82 0b 50 52 54 31 08 5f 41 44 52 01 DR.[..PRT1._ADR. 4020: 5b 82 0c 50 52 54 32 08 5f 41 44 52 0a 02 5b 82 [..PRT2._ADR..[. 4030: 0c 50 52 54 33 08 5f 41 44 52 0a 03 5b 82 0c 50 .PRT3._ADR..[..P 4040: 52 54 34 08 5f 41 44 52 0a 04 5b 82 0c 50 52 54 RT4._ADR..[..PRT 4050: 35 08 5f 41 44 52 0a 05 5b 82 0c 50 52 54 36 08 5._ADR..[..PRT6. 4060: 5f 41 44 52 0a 06 08 5f 50 52 57 12 06 02 0a 0d _ADR..._PRW..... 4070: 0a 03 14 09 5f 53 33 44 00 a4 0a 02 14 09 5f 53 ...._S3D......_S 4080: 34 44 00 a4 0a 02 5b 82 4f 08 45 48 43 32 08 5f 4D....[.O.EHC2._ 4090: 41 44 52 0c 07 00 1a 00 5b 80 55 46 43 53 02 0a ADR.....[.UFCS.. 40a0: 54 0a 04 5b 81 0d 55 46 43 53 03 00 0f 50 4d 45 T..[..UFCS...PME 40b0: 53 01 5b 82 43 04 48 55 42 37 08 5f 41 44 52 00 S.[.C.HUB7._ADR. 40c0: 5b 82 0b 50 52 54 31 08 5f 41 44 52 01 5b 82 0c [..PRT1._ADR.[.. 40d0: 50 52 54 32 08 5f 41 44 52 0a 02 5b 82 0c 50 52 PRT2._ADR..[..PR 40e0: 54 33 08 5f 41 44 52 0a 03 5b 82 0c 50 52 54 34 T3._ADR..[..PRT4 40f0: 08 5f 41 44 52 0a 04 08 5f 50 52 57 12 06 02 0a ._ADR..._PRW.... 4100: 0d 0a 03 14 09 5f 53 33 44 00 a4 0a 02 14 09 5f ....._S3D......_ 4110: 53 34 44 00 a4 0a 02 5b 82 4a 06 50 43 49 42 08 S4D....[.J.PCIB. 4120: 5f 41 44 52 0c 00 00 1e 00 14 49 05 5f 50 52 54 _ADR......I._PRT 4130: 00 a0 21 47 50 49 43 a4 12 1a 02 12 0b 04 0c ff ..!GPIC......... 4140: ff 06 00 00 00 0a 16 12 0b 04 0c ff ff 06 00 01 ................ 4150: 00 0a 17 a1 2f a4 12 2c 02 12 14 04 0c ff ff 06 ..../..,........ 4160: 00 00 5e 5e 2e 4c 50 43 42 4c 4e 4b 47 00 12 14 ..^^.LPCBLNKG... 4170: 04 0c ff ff 06 00 01 5e 5e 2e 4c 50 43 42 4c 4e .......^^.LPCBLN 4180: 4b 48 00 5b 82 8d 2e 01 4c 50 43 42 08 5f 41 44 KH.[....LPCB._AD 4190: 52 0c 00 00 1f 00 5b 80 4c 50 43 30 02 0a 40 0a R.....[.LPC0..@. 41a0: c0 5b 81 4d 07 4c 50 43 30 00 00 40 10 50 41 52 .[.M.LPC0..@.PAR 41b0: 43 08 50 42 52 43 08 50 43 52 43 08 50 44 52 43 C.PBRC.PCRC.PDRC 41c0: 08 00 20 50 45 52 43 08 50 46 52 43 08 50 47 52 .. PERC.PFRC.PGR 41d0: 43 08 50 48 52 43 08 00 40 0a 43 4d 41 52 03 00 C.PHRC..@.CMAR.. 41e0: 01 43 4d 42 52 03 00 01 4c 50 54 52 02 00 06 43 .CMBR...LPTR...C 41f0: 4d 41 44 01 43 4d 42 44 01 4c 50 54 44 01 46 44 MAD.CMBD.LPTD.FD 4200: 44 44 01 00 2c 49 4f 52 32 10 00 02 4c 47 52 4d DD..,IOR2...LGRM 4210: 06 00 48 32 52 41 45 4e 01 00 0d 52 43 42 41 12 ..H2RAEN...RCBA. 4220: 5b 80 53 4d 49 30 01 0c 00 fe 00 00 0c 02 00 00 [.SMI0.......... 4230: 00 5b 81 0b 53 4d 49 30 00 53 4d 49 43 08 5b 80 .[..SMI0.SMIC.[. 4240: 53 4d 49 31 00 0c bd 2e 6e bf 0c 90 00 00 00 5b SMI1....n......[ 4250: 81 16 53 4d 49 31 00 42 43 4d 44 08 44 49 44 5f ..SMI1.BCMD.DID_ 4260: 20 49 4e 46 4f 40 40 5b 81 15 53 4d 49 31 00 01 INFO@@[..SMI1.. 4270: 01 00 00 28 49 4e 46 5f 08 49 4e 46 31 20 5b 01 ...(INF_.INF1 [. 4280: 50 53 4d 58 00 14 27 50 48 53 53 01 5b 23 50 53 PSMX..'PHSS.[#PS 4290: 4d 58 ff ff 70 0a 80 42 43 4d 44 70 68 44 49 44 MX..p..BCMDphDID 42a0: 5f 70 00 53 4d 49 43 5b 27 50 53 4d 58 5b 82 41 _p.SMIC['PSMX[.A 42b0: 0a 4c 4e 4b 41 08 5f 48 49 44 0c 41 d0 0c 0f 08 .LNKA._HID.A.... 42c0: 5f 55 49 44 01 14 0d 5f 44 49 53 08 70 0a 80 50 _UID..._DIS.p..P 42d0: 41 52 43 08 5f 50 52 53 11 09 0a 06 23 fa d4 18 ARC._PRS....#... 42e0: 79 00 14 38 5f 43 52 53 08 08 52 54 4c 41 11 09 y..8_CRS..RTLA.. 42f0: 0a 06 23 00 00 18 79 00 8b 52 54 4c 41 01 49 52 ..#...y..RTLA.IR 4300: 51 30 70 00 49 52 51 30 79 01 7b 50 41 52 43 0a Q0p.IRQ0y.{PARC. 4310: 0f 00 49 52 51 30 a4 52 54 4c 41 14 1b 5f 53 52 ..IRQ0.RTLA.._SR 4320: 53 09 8b 68 01 49 52 51 30 82 49 52 51 30 60 76 S..h.IRQ0.IRQ0`v 4330: 60 70 60 50 41 52 43 14 18 5f 53 54 41 08 a0 0c `p`PARC.._STA... 4340: 7b 50 41 52 43 0a 80 00 a4 0a 09 a1 04 a4 0a 0b {PARC........... 4350: 5b 82 42 0a 4c 4e 4b 42 08 5f 48 49 44 0c 41 d0 [.B.LNKB._HID.A. 4360: 0c 0f 08 5f 55 49 44 0a 02 14 0d 5f 44 49 53 08 ..._UID...._DIS. 4370: 70 0a 80 50 42 52 43 08 5f 50 52 53 11 09 0a 06 p..PBRC._PRS.... 4380: 23 fa d8 18 79 00 14 38 5f 43 52 53 08 08 52 54 #...y..8_CRS..RT 4390: 4c 42 11 09 0a 06 23 00 00 18 79 00 8b 52 54 4c LB....#...y..RTL 43a0: 42 01 49 52 51 30 70 00 49 52 51 30 79 01 7b 50 B.IRQ0p.IRQ0y.{P 43b0: 42 52 43 0a 0f 00 49 52 51 30 a4 52 54 4c 42 14 BRC...IRQ0.RTLB. 43c0: 1b 5f 53 52 53 09 8b 68 01 49 52 51 30 82 49 52 ._SRS..h.IRQ0.IR 43d0: 51 30 60 76 60 70 60 50 42 52 43 14 18 5f 53 54 Q0`v`p`PBRC.._ST 43e0: 41 08 a0 0c 7b 50 42 52 43 0a 80 00 a4 0a 09 a1 A...{PBRC....... 43f0: 04 a4 0a 0b 5b 82 42 0a 4c 4e 4b 43 08 5f 48 49 ....[.B.LNKC._HI 4400: 44 0c 41 d0 0c 0f 08 5f 55 49 44 0a 03 14 0d 5f D.A...._UID...._ 4410: 44 49 53 08 70 0a 80 50 43 52 43 08 5f 50 52 53 DIS.p..PCRC._PRS 4420: 11 09 0a 06 23 fa d4 18 79 00 14 38 5f 43 52 53 ....#...y..8_CRS 4430: 08 08 52 54 4c 43 11 09 0a 06 23 00 00 18 79 00 ..RTLC....#...y. 4440: 8b 52 54 4c 43 01 49 52 51 30 70 00 49 52 51 30 .RTLC.IRQ0p.IRQ0 4450: 79 01 7b 50 43 52 43 0a 0f 00 49 52 51 30 a4 52 y.{PCRC...IRQ0.R 4460: 54 4c 43 14 1b 5f 53 52 53 09 8b 68 01 49 52 51 TLC.._SRS..h.IRQ 4470: 30 82 49 52 51 30 60 76 60 70 60 50 43 52 43 14 0.IRQ0`v`p`PCRC. 4480: 18 5f 53 54 41 08 a0 0c 7b 50 43 52 43 0a 80 00 ._STA...{PCRC... 4490: a4 0a 09 a1 04 a4 0a 0b 5b 82 42 0a 4c 4e 4b 44 ........[.B.LNKD 44a0: 08 5f 48 49 44 0c 41 d0 0c 0f 08 5f 55 49 44 0a ._HID.A...._UID. 44b0: 04 14 0d 5f 44 49 53 08 70 0a 80 50 44 52 43 08 ..._DIS.p..PDRC. 44c0: 5f 50 52 53 11 09 0a 06 23 fa d8 18 79 00 14 38 _PRS....#...y..8 44d0: 5f 43 52 53 08 08 52 54 4c 44 11 09 0a 06 23 00 _CRS..RTLD....#. 44e0: 00 18 79 00 8b 52 54 4c 44 01 49 52 51 30 70 00 ..y..RTLD.IRQ0p. 44f0: 49 52 51 30 79 01 7b 50 44 52 43 0a 0f 00 49 52 IRQ0y.{PDRC...IR 4500: 51 30 a4 52 54 4c 44 14 1b 5f 53 52 53 09 8b 68 Q0.RTLD.._SRS..h 4510: 01 49 52 51 30 82 49 52 51 30 60 76 60 70 60 50 .IRQ0.IRQ0`v`p`P 4520: 44 52 43 14 18 5f 53 54 41 08 a0 0c 7b 50 44 52 DRC.._STA...{PDR 4530: 43 0a 80 00 a4 0a 09 a1 04 a4 0a 0b 5b 82 42 0a C...........[.B. 4540: 4c 4e 4b 45 08 5f 48 49 44 0c 41 d0 0c 0f 08 5f LNKE._HID.A...._ 4550: 55 49 44 0a 05 14 0d 5f 44 49 53 08 70 0a 80 50 UID...._DIS.p..P 4560: 45 52 43 08 5f 50 52 53 11 09 0a 06 23 fa d4 18 ERC._PRS....#... 4570: 79 00 14 38 5f 43 52 53 08 08 52 54 4c 45 11 09 y..8_CRS..RTLE.. 4580: 0a 06 23 00 00 18 79 00 8b 52 54 4c 45 01 49 52 ..#...y..RTLE.IR 4590: 51 30 70 00 49 52 51 30 79 01 7b 50 45 52 43 0a Q0p.IRQ0y.{PERC. 45a0: 0f 00 49 52 51 30 a4 52 54 4c 45 14 1b 5f 53 52 ..IRQ0.RTLE.._SR 45b0: 53 09 8b 68 01 49 52 51 30 82 49 52 51 30 60 76 S..h.IRQ0.IRQ0`v 45c0: 60 70 60 50 45 52 43 14 18 5f 53 54 41 08 a0 0c `p`PERC.._STA... 45d0: 7b 50 45 52 43 0a 80 00 a4 0a 09 a1 04 a4 0a 0b {PERC........... 45e0: 5b 82 42 0a 4c 4e 4b 46 08 5f 48 49 44 0c 41 d0 [.B.LNKF._HID.A. 45f0: 0c 0f 08 5f 55 49 44 0a 06 14 0d 5f 44 49 53 08 ..._UID...._DIS. 4600: 70 0a 80 50 46 52 43 08 5f 50 52 53 11 09 0a 06 p..PFRC._PRS.... 4610: 23 fa d8 18 79 00 14 38 5f 43 52 53 08 08 52 54 #...y..8_CRS..RT 4620: 4c 46 11 09 0a 06 23 00 00 18 79 00 8b 52 54 4c LF....#...y..RTL 4630: 46 01 49 52 51 30 70 00 49 52 51 30 79 01 7b 50 F.IRQ0p.IRQ0y.{P 4640: 46 52 43 0a 0f 00 49 52 51 30 a4 52 54 4c 46 14 FRC...IRQ0.RTLF. 4650: 1b 5f 53 52 53 09 8b 68 01 49 52 51 30 82 49 52 ._SRS..h.IRQ0.IR 4660: 51 30 60 76 60 70 60 50 46 52 43 14 18 5f 53 54 Q0`v`p`PFRC.._ST 4670: 41 08 a0 0c 7b 50 46 52 43 0a 80 00 a4 0a 09 a1 A...{PFRC....... 4680: 04 a4 0a 0b 5b 82 42 0a 4c 4e 4b 47 08 5f 48 49 ....[.B.LNKG._HI 4690: 44 0c 41 d0 0c 0f 08 5f 55 49 44 0a 07 14 0d 5f D.A...._UID...._ 46a0: 44 49 53 08 70 0a 80 50 47 52 43 08 5f 50 52 53 DIS.p..PGRC._PRS 46b0: 11 09 0a 06 23 fa d4 18 79 00 14 38 5f 43 52 53 ....#...y..8_CRS 46c0: 08 08 52 54 4c 47 11 09 0a 06 23 00 00 18 79 00 ..RTLG....#...y. 46d0: 8b 52 54 4c 47 01 49 52 51 30 70 00 49 52 51 30 .RTLG.IRQ0p.IRQ0 46e0: 79 01 7b 50 47 52 43 0a 0f 00 49 52 51 30 a4 52 y.{PGRC...IRQ0.R 46f0: 54 4c 47 14 1b 5f 53 52 53 09 8b 68 01 49 52 51 TLG.._SRS..h.IRQ 4700: 30 82 49 52 51 30 60 76 60 70 60 50 47 52 43 14 0.IRQ0`v`p`PGRC. 4710: 18 5f 53 54 41 08 a0 0c 7b 50 47 52 43 0a 80 00 ._STA...{PGRC... 4720: a4 0a 09 a1 04 a4 0a 0b 5b 82 42 0a 4c 4e 4b 48 ........[.B.LNKH 4730: 08 5f 48 49 44 0c 41 d0 0c 0f 08 5f 55 49 44 0a ._HID.A...._UID. 4740: 08 14 0d 5f 44 49 53 08 70 0a 80 50 48 52 43 08 ..._DIS.p..PHRC. 4750: 5f 50 52 53 11 09 0a 06 23 fa d8 18 79 00 14 38 _PRS....#...y..8 4760: 5f 43 52 53 08 08 52 54 4c 48 11 09 0a 06 23 00 _CRS..RTLH....#. 4770: 00 18 79 00 8b 52 54 4c 48 01 49 52 51 30 70 00 ..y..RTLH.IRQ0p. 4780: 49 52 51 30 79 01 7b 50 48 52 43 0a 0f 00 49 52 IRQ0y.{PHRC...IR 4790: 51 30 a4 52 54 4c 48 14 1b 5f 53 52 53 09 8b 68 Q0.RTLH.._SRS..h 47a0: 01 49 52 51 30 82 49 52 51 30 60 76 60 70 60 50 .IRQ0.IRQ0`v`p`P 47b0: 48 52 43 14 18 5f 53 54 41 08 a0 0c 7b 50 48 52 HRC.._STA...{PHR 47c0: 43 0a 80 00 a4 0a 09 a1 04 a4 0a 0b 5b 82 3d 44 C...........[.=D 47d0: 4d 41 43 08 5f 48 49 44 0c 41 d0 02 00 08 5f 43 MAC._HID.A...._C 47e0: 52 53 11 28 0a 25 47 01 00 00 00 00 01 20 47 01 RS.(.%G...... G. 47f0: 81 00 81 00 01 11 47 01 93 00 93 00 01 0d 47 01 ......G.......G. 4800: c0 00 c0 00 01 20 2a 10 01 79 00 5b 82 26 46 57 ..... *..y.[.&FW 4810: 48 44 08 5f 48 49 44 0c 25 d4 08 00 08 5f 43 52 HD._HID.%...._CR 4820: 53 11 11 0a 0e 86 09 00 00 00 00 00 ff 00 00 00 S............... 4830: 01 79 00 5b 82 40 0b 48 50 45 54 08 5f 48 49 44 .y.[.@.HPET._HID 4840: 0c 41 d0 01 03 08 5f 43 49 44 0c 41 d0 0c 01 08 .A...._CID.A.... 4850: 42 55 46 30 11 11 0a 0e 86 09 00 00 00 00 d0 fe BUF0............ 4860: 00 04 00 00 79 00 14 27 5f 53 54 41 00 a0 13 92 ....y..'_STA.... 4870: 95 4f 53 59 53 0b d1 07 a0 08 48 50 41 45 a4 0a .OSYS.....HPAE.. 4880: 0f a1 0a a0 08 48 50 41 45 a4 0a 0b a4 00 14 46 .....HPAE......F 4890: 05 5f 43 52 53 08 a0 49 04 48 50 41 45 8a 42 55 ._CRS..I.HPAE.BU 48a0: 46 30 0a 04 48 50 54 30 a0 11 93 48 50 41 53 01 F0..HPT0...HPAS. 48b0: 70 0c 00 10 d0 fe 48 50 54 30 a0 12 93 48 50 41 p.....HPT0...HPA 48c0: 53 0a 02 70 0c 00 20 d0 fe 48 50 54 30 a0 12 93 S..p.. ..HPT0... 48d0: 48 50 41 53 0a 03 70 0c 00 30 d0 fe 48 50 54 30 HPAS..p..0..HPT0 48e0: a4 42 55 46 30 5b 82 45 0a 49 50 49 43 08 5f 48 .BUF0[.E.IPIC._H 48f0: 49 44 0b 41 d0 08 5f 43 52 53 11 41 09 0a 8d 47 ID.A.._CRS.A...G 4900: 01 20 00 20 00 01 02 47 01 24 00 24 00 01 02 47 . . ...G.$.$...G 4910: 01 28 00 28 00 01 02 47 01 2c 00 2c 00 01 02 47 .(.(...G.,.,...G 4920: 01 30 00 30 00 01 02 47 01 34 00 34 00 01 02 47 .0.0...G.4.4...G 4930: 01 38 00 38 00 01 02 47 01 3c 00 3c 00 01 02 47 .8.8...G.<.<...G 4940: 01 a0 00 a0 00 01 02 47 01 a4 00 a4 00 01 02 47 .......G.......G 4950: 01 a8 00 a8 00 01 02 47 01 ac 00 ac 00 01 02 47 .......G.......G 4960: 01 b0 00 b0 00 01 02 47 01 b4 00 b4 00 01 02 47 .......G.......G 4970: 01 b8 00 b8 00 01 02 47 01 bc 00 bc 00 01 02 47 .......G.......G 4980: 01 d0 04 d0 04 01 02 22 04 00 79 00 5b 82 25 4d ......."..y.[.%M 4990: 41 54 48 08 5f 48 49 44 0c 41 d0 0c 04 08 5f 43 ATH._HID.A...._C 49a0: 52 53 11 10 0a 0d 47 01 f0 00 f0 00 01 01 22 00 RS....G.......". 49b0: 20 79 00 5b 82 4b 09 4c 44 52 43 08 5f 48 49 44 y.[.K.LDRC._HID 49c0: 0c 41 d0 0c 02 08 5f 55 49 44 0a 02 08 5f 43 52 .A...._UID..._CR 49d0: 53 11 4e 07 0a 7a 47 01 2e 00 2e 00 01 02 47 01 S.N..zG.......G. 49e0: 4e 00 4e 00 01 02 47 01 61 00 61 00 01 01 47 01 N.N...G.a.a...G. 49f0: 63 00 63 00 01 01 47 01 65 00 65 00 01 01 47 01 c.c...G.e.e...G. 4a00: 67 00 67 00 01 01 47 01 80 00 80 00 01 01 47 01 g.g...G.......G. 4a10: 92 00 92 00 01 01 47 01 b2 00 b2 00 01 02 47 01 ......G.......G. 4a20: 80 06 80 06 01 20 47 01 00 08 00 08 01 10 47 01 ..... G.......G. 4a30: 00 10 00 10 01 80 47 01 80 11 80 11 01 40 47 01 ......G......@G. 4a40: 00 fe 00 fe 01 01 47 01 00 ff 00 ff 01 80 79 00 ......G.......y. 4a50: 5b 82 25 52 54 43 5f 08 5f 48 49 44 0c 41 d0 0b [.%RTC_._HID.A.. 4a60: 00 08 5f 43 52 53 11 10 0a 0d 47 01 70 00 70 00 .._CRS....G.p.p. 4a70: 01 08 22 00 01 79 00 5b 82 2d 54 49 4d 52 08 5f .."..y.[.-TIMR._ 4a80: 48 49 44 0c 41 d0 01 00 08 5f 43 52 53 11 18 0a HID.A...._CRS... 4a90: 15 47 01 40 00 40 00 01 04 47 01 50 00 50 00 10 .G.@.@...G.P.P.. 4aa0: 04 22 01 00 79 00 5b 82 32 41 43 41 44 08 5f 48 ."..y.[.2ACAD._H 4ab0: 49 44 0d 41 43 50 49 30 30 30 33 00 08 5f 50 43 ID.ACPI0003.._PC 4ac0: 4c 12 06 01 5f 53 42 5f 14 11 5f 50 53 52 00 70 L..._SB_.._PSR.p 4ad0: 01 41 43 50 57 a4 41 43 50 57 14 1a 45 43 4f 4b .ACPW.ACPW..ECOK 4ae0: 00 a0 0f 93 5e 2e 45 43 30 5f 5a 30 30 39 01 a4 ....^.EC0_Z009.. 4af0: 01 a1 03 a4 00 5b 82 4e 6f 45 43 30 5f 08 5f 48 .....[.NoEC0_._H 4b00: 49 44 0c 41 d0 0c 09 08 5f 47 50 45 0a 1c 08 5a ID.A...._GPE...Z 4b10: 30 30 39 00 08 5f 43 52 53 11 15 0a 12 47 01 62 009.._CRS....G.b 4b20: 00 62 00 01 01 47 01 66 00 66 00 01 01 79 00 14 .b...G.f.f...y.. 4b30: 3b 5f 52 45 47 02 a0 34 93 68 0a 03 70 69 5a 30 ;_REG..4.h..piZ0 4b40: 30 39 a0 28 5b 12 5f 4f 53 49 60 70 00 42 54 44 09.([._OSI`p.BTD 4b50: 53 a0 19 5f 4f 53 49 0d 57 69 6e 64 6f 77 73 20 S.._OSI.Windows 4b60: 32 30 30 36 00 70 01 42 54 44 53 5b 80 45 52 41 2006.p.BTDS[.ERA 4b70: 4d 03 00 0a ff 5b 81 4e 2e 45 52 41 4d 11 00 40 M....[.N.ERAM..@ 4b80: 30 53 4d 50 52 08 53 4d 53 54 08 53 4d 41 44 08 0SMPR.SMST.SMAD. 4b90: 53 4d 43 4d 08 53 4d 44 30 40 10 42 43 4e 54 08 SMCM.SMD0@.BCNT. 4ba0: 53 4d 41 41 18 00 40 04 43 48 47 4d 10 43 48 47 SMAA..@.CHGM.CHG 4bb0: 53 10 45 4e 49 44 08 45 4e 49 42 08 45 4e 44 44 S.ENID.ENIB.ENDD 4bc0: 08 43 48 47 56 08 43 48 47 41 10 42 41 4c 30 01 .CHGV.CHGA.BAL0. 4bd0: 42 41 4c 31 01 42 41 4c 32 01 42 41 4c 33 01 42 BAL1.BAL2.BAL3.B 4be0: 42 43 30 01 42 42 43 31 01 42 42 43 32 01 42 42 BC0.BBC1.BBC2.BB 4bf0: 43 33 01 00 08 50 48 44 44 01 49 46 44 44 01 49 C3...PHDD.IFDD.I 4c00: 4f 44 44 01 53 48 44 44 01 53 31 32 30 01 45 46 ODD.SHDD.S120.EF 4c10: 44 44 01 43 52 54 44 01 53 50 57 52 01 53 42 54 DD.CRTD.SPWR.SBT 4c20: 4e 01 56 49 44 4f 01 56 4f 4c 44 01 56 4f 4c 55 N.VIDO.VOLD.VOLU 4c30: 01 4d 55 54 45 01 43 4f 4e 54 01 42 52 47 54 01 .MUTE.CONT.BRGT. 4c40: 48 42 54 4e 01 53 34 53 54 01 53 4b 45 59 01 42 HBTN.S4ST.SKEY.B 4c50: 4b 45 59 01 54 4f 55 50 01 46 4e 42 4e 01 4c 49 KEY.TOUP.FNBN.LI 4c60: 44 46 01 44 49 47 4d 01 55 57 41 4b 01 00 08 44 DF.DIGM.UWAK...D 4c70: 4b 53 50 01 44 4b 49 4e 01 44 4b 49 44 01 44 4b KSP.DKIN.DKID.DK 4c80: 4f 4b 01 00 04 44 4b 50 57 01 00 07 42 54 4e 53 OK...DKPW...BTNS 4c90: 08 53 31 4c 44 01 53 33 4c 44 01 56 47 41 51 01 .S1LD.S3LD.VGAQ. 4ca0: 50 43 4d 51 01 50 43 4d 52 01 41 44 50 54 01 53 PCMQ.PCMR.ADPT.S 4cb0: 4c 4c 53 01 53 59 53 37 01 50 57 41 4b 01 4d 57 LLS.SYS7.PWAK.MW 4cc0: 41 4b 01 4c 57 41 4b 01 00 05 00 28 54 43 4e 4c AK.LWAK....(TCNL 4cd0: 08 54 4d 50 49 08 54 4d 53 44 08 46 41 53 4e 04 .TMPI.TMSD.FASN. 4ce0: 46 41 53 55 04 50 43 56 4c 04 00 02 53 57 54 4f FASU.PCVL...SWTO 4cf0: 01 48 57 54 4f 01 4d 4f 44 45 01 46 41 4e 53 02 .HWTO.MODE.FANS. 4d00: 49 4e 49 54 01 46 41 4e 31 01 46 41 4e 32 01 46 INIT.FAN1.FAN2.F 4d10: 41 4e 54 01 53 4b 4e 4d 01 43 54 4d 50 08 4c 49 ANT.SKNM.CTMP.LI 4d20: 44 45 01 50 4d 45 45 01 50 57 42 45 01 52 4e 47 DE.PMEE.PWBE.RNG 4d30: 45 01 42 54 57 45 01 44 43 4b 45 01 00 02 53 4b E.BTWE.DCKE...SK 4d40: 54 58 08 53 4b 54 42 08 53 4b 54 43 08 53 4b 54 TX.SKTB.SKTC.SKT 4d50: 41 08 00 08 48 41 50 4c 02 48 41 50 52 01 00 05 A...HAPL.HAPR... 4d60: 42 54 44 54 01 42 54 50 57 01 42 54 44 53 01 42 BTDT.BTPW.BTDS.B 4d70: 54 50 53 01 42 54 53 57 01 42 54 57 4b 01 42 54 TPS.BTSW.BTWK.BT 4d80: 4c 44 01 00 01 42 52 54 53 08 43 4e 54 53 08 57 LD...BRTS.CNTS.W 4d90: 4c 41 54 01 42 54 41 54 01 57 4c 45 58 01 42 54 LAT.BTAT.WLEX.BT 4da0: 45 58 01 4b 4c 53 57 01 57 4c 4f 4b 01 00 02 50 EX.KLSW.WLOK...P 4db0: 54 49 44 08 43 50 55 54 08 45 50 4b 54 08 47 48 TID.CPUT.EPKT.GH 4dc0: 49 44 08 00 04 42 4d 46 30 03 42 54 59 30 01 42 ID...BMF0.BTY0.B 4dd0: 53 54 30 08 42 52 43 30 10 42 53 4e 30 10 42 50 ST0.BRC0.BSN0.BP 4de0: 56 30 10 42 44 56 30 10 42 44 43 30 10 42 46 43 V0.BDV0.BDC0.BFC 4df0: 30 10 47 41 55 30 08 43 59 43 30 08 42 50 43 30 0.GAU0.CYC0.BPC0 4e00: 10 42 41 43 30 10 42 41 54 30 08 42 54 57 30 10 .BAC0.BAT0.BTW0. 4e10: 42 44 4e 30 08 00 40 04 00 04 42 4d 46 31 03 42 BDN0..@...BMF1.B 4e20: 54 59 31 01 42 53 54 31 08 42 52 43 31 10 42 53 TY1.BST1.BRC1.BS 4e30: 4e 31 10 42 50 56 31 10 42 44 56 31 10 42 44 43 N1.BPV1.BDV1.BDC 4e40: 31 10 42 46 43 31 10 47 41 55 31 08 43 59 43 31 1.BFC1.GAU1.CYC1 4e50: 08 42 50 43 31 10 42 41 43 31 10 42 41 54 31 08 .BPC1.BAC1.BAT1. 4e60: 42 54 57 31 10 14 37 5f 51 31 31 00 70 0a 87 50 BTW1..7_Q11.p..P 4e70: 38 30 48 a0 13 49 47 44 53 5e 5e 5e 2e 47 46 58 80H..IGDS^^^.GFX 4e80: 30 42 52 54 4e 0a 87 a1 15 86 5e 5e 5e 2f 03 50 0BRTN.....^^^/.P 4e90: 45 47 50 56 47 41 5f 4c 43 44 5f 0a 87 14 37 5f EGPVGA_LCD_...7_ 4ea0: 51 31 32 00 70 0a 86 50 38 30 48 a0 13 49 47 44 Q12.p..P80H..IGD 4eb0: 53 5e 5e 5e 2e 47 46 58 30 42 52 54 4e 0a 86 a1 S^^^.GFX0BRTN... 4ec0: 15 86 5e 5e 5e 2f 03 50 45 47 50 56 47 41 5f 4c ..^^^/.PEGPVGA_L 4ed0: 43 44 5f 0a 86 14 40 05 5f 51 31 43 00 70 0d 3d CD_...@._Q1C.p.= 4ee0: 3d 3d 3d 3d 51 55 45 52 59 5f 31 43 3d 3d 3d 3d ====QUERY_1C==== 4ef0: 3d 00 5b 31 a0 31 56 49 44 4f a0 12 49 47 44 53 =.[1.1VIDO..IGDS 4f00: 5e 5e 5e 2e 47 46 58 30 47 48 44 53 00 a1 12 5e ^^^.GFX0GHDS...^ 4f10: 5e 5e 2f 03 50 45 47 50 56 47 41 5f 44 53 53 57 ^^/.PEGPVGA_DSSW 4f20: 70 00 56 49 44 4f 14 21 5f 51 31 44 00 70 0d 3d p.VIDO.!_Q1D.p.= 4f30: 3d 3d 3d 3d 51 55 45 52 59 5f 31 44 3d 3d 3d 3d ====QUERY_1D==== 4f40: 3d 00 5b 31 50 43 4c 4b 14 21 5f 51 31 45 00 70 =.[1PCLK.!_Q1E.p 4f50: 0d 3d 3d 3d 3d 3d 51 55 45 52 59 5f 31 45 3d 3d .=====QUERY_1E== 4f60: 3d 3d 3d 00 5b 31 50 43 4c 4b 14 39 5f 51 32 35 ===.[1PCLK.9_Q25 4f70: 00 70 0d 3d 3d 3d 3d 3d 51 55 45 52 59 5f 32 35 .p.=====QUERY_25 4f80: 3d 3d 3d 3d 3d 00 5b 31 5b 22 0b e8 03 86 5e 5e =====.[1["....^^ 4f90: 42 41 54 31 0a 81 5b 22 0b e8 03 86 5e 5e 42 41 BAT1..["....^^BA 4fa0: 54 31 0a 80 14 2f 5f 51 33 34 00 70 0d 3d 3d 3d T1.../_Q34.p.=== 4fb0: 3d 3d 51 55 45 52 59 5f 33 34 3d 3d 3d 3d 3d 00 ==QUERY_34=====. 4fc0: 5b 31 a0 11 42 4b 45 59 50 48 53 53 0a 71 70 00 [1..BKEYPHSS.qp. 4fd0: 42 4b 45 59 14 32 5f 51 33 37 00 70 0d 3d 3d 3d BKEY.2_Q37.p.=== 4fe0: 3d 3d 51 55 45 52 59 5f 33 37 3d 3d 3d 3d 3d 00 ==QUERY_37=====. 4ff0: 5b 31 86 41 43 41 44 0a 80 5b 22 0b e8 03 86 5e [1.ACAD..["....^ 5000: 5e 42 41 54 31 0a 80 14 32 5f 51 33 38 00 70 0d ^BAT1...2_Q38.p. 5010: 3d 3d 3d 3d 3d 51 55 45 52 59 5f 33 38 3d 3d 3d =====QUERY_38=== 5020: 3d 3d 00 5b 31 86 41 43 41 44 0a 80 5b 22 0b e8 ==.[1.ACAD..[".. 5030: 03 86 5e 5e 42 41 54 31 0a 80 14 29 5f 51 32 44 ..^^BAT1...)_Q2D 5040: 00 70 0d 3d 3d 3d 3d 3d 51 55 45 52 59 5f 32 44 .p.=====QUERY_2D 5050: 3d 3d 3d 3d 3d 00 5b 31 70 00 44 54 53 4d 54 52 =====.[1p.DTSMTR 5060: 41 50 0a 46 14 29 5f 51 32 45 00 70 0d 3d 3d 3d AP.F.)_Q2E.p.=== 5070: 3d 3d 51 55 45 52 59 5f 32 45 3d 3d 3d 3d 3d 00 ==QUERY_2E=====. 5080: 5b 31 70 01 44 54 53 4d 54 52 41 50 0a 46 5b 80 [1p.DTSMTRAP.F[. 5090: 43 43 4c 4b 01 0b 10 10 0a 04 5b 81 20 43 43 4c CCLK......[. CCL 50a0: 4b 03 00 01 44 55 54 59 03 54 48 45 4e 01 00 03 K...DUTY.THEN... 50b0: 46 54 54 5f 01 00 08 54 53 54 53 01 5b 80 45 43 FTT_...TSTS.[.EC 50c0: 52 4d 03 00 0a ff 5b 81 44 04 45 43 52 4d 11 00 RM....[.D.ECRM.. 50d0: 40 4a 45 52 49 42 10 45 52 42 44 08 00 48 0a 53 @JERIB.ERBD..H.S 50e0: 44 54 4d 08 46 53 53 4e 04 46 41 4e 55 04 50 54 DTM.FSSN.FANU.PT 50f0: 56 4c 03 00 04 54 54 48 52 01 00 48 06 50 4a 49 VL...TTHR..H.PJI 5100: 44 08 00 08 00 48 1d 52 46 52 44 10 5b 01 46 41 D....H.RFRD.[.FA 5110: 4d 58 00 14 22 46 41 4e 47 01 5b 23 46 41 4d 58 MX.."FANG.[#FAMX 5120: ff ff 70 68 45 52 49 42 70 45 52 42 44 60 5b 27 ..phERIBpERBD`[' 5130: 46 41 4d 58 a4 60 14 22 46 41 4e 57 02 5b 23 46 FAMX.`."FANW.[#F 5140: 41 4d 58 ff ff 70 68 45 52 49 42 70 69 45 52 42 AMX..phERIBpiERB 5150: 44 5b 27 46 41 4d 58 a4 69 14 09 54 55 56 52 01 D['FAMX.i..TUVR. 5160: a4 0a 03 14 2e 54 48 52 4f 01 a0 09 93 68 00 a4 .....THRO....h.. 5170: 54 48 45 4e a1 1d a0 09 93 68 01 a4 44 55 54 59 THEN.....h..DUTY 5180: a1 11 a0 0a 93 68 0a 02 a4 54 54 48 52 a1 04 a4 .....h...TTHR... 5190: 0a ff 14 2a 43 4c 43 4b 01 a0 10 93 68 00 70 00 ...*CLCK....h.p. 51a0: 54 48 45 4e 70 00 46 54 54 5f a1 0d 70 68 44 55 THENp.FTT_..phDU 51b0: 54 59 70 01 54 48 45 4e a4 54 48 45 4e 14 37 50 TYp.THEN.THEN.7P 51c0: 43 4c 4b 00 70 50 54 56 4c 60 a0 10 93 60 00 70 CLK.pPTVL`...`.p 51d0: 00 54 48 45 4e 70 00 46 54 54 5f a1 19 76 60 70 .THENp.FTT_..v`p 51e0: 80 60 00 61 7b 61 0a 07 61 70 61 44 55 54 59 70 .`.a{a..apaDUTYp 51f0: 01 54 48 45 4e 5b 82 4b 22 42 41 54 31 08 5f 48 .THEN[.K"BAT1._H 5200: 49 44 0c 41 d0 0c 0a 08 5f 55 49 44 01 08 5f 50 ID.A...._UID.._P 5210: 43 4c 12 06 01 5f 53 42 5f 14 39 5f 53 54 41 00 CL..._SB_.9_STA. 5220: a0 29 90 45 43 4f 4b 93 45 43 44 59 00 a0 13 5e .).ECOK.ECDY...^ 5230: 5e 2e 45 43 30 5f 42 41 4c 30 5b 22 0a 14 a4 0a ^.EC0_BAL0[".... 5240: 1f a1 08 5b 22 0a 14 a4 0a 0f a1 08 5b 22 0a 14 ...[".......[".. 5250: a4 0a 1f 14 48 10 5f 42 49 46 00 08 53 54 41 54 ....H._BIF..STAT 5260: 12 3a 0d 01 0b a0 0f 0b a0 0f 01 0b 5c 2b 0b a4 .:..........\+.. 5270: 01 0a 9c 0b 08 01 0b c4 0e 0d 50 41 33 34 36 35 ..........PA3465 5280: 55 20 00 0d 33 36 35 38 51 00 0d 4c 69 2d 49 6f U ..3658Q..Li-Io 5290: 6e 00 0d 43 4f 4d 50 41 4c 20 00 a0 4b 07 90 45 n..COMPAL ..K..E 52a0: 43 4f 4b 93 45 43 44 59 00 70 5e 5e 2e 45 43 30 COK.ECDY.p^^.EC0 52b0: 5f 42 44 4e 30 60 a0 23 93 60 0a 08 70 0a b4 88 _BDN0`.#.`..p... 52c0: 53 54 41 54 0a 06 00 70 0d 50 41 33 34 35 37 55 STAT...p.PA3457U 52d0: 20 00 88 53 54 41 54 0a 09 00 a0 24 93 60 0a 20 ..STAT....$.`. 52e0: 70 0b 02 01 88 53 54 41 54 0a 06 00 70 0d 50 41 p....STAT...p.PA 52f0: 33 34 35 37 55 20 00 88 53 54 41 54 0a 09 00 5b 3457U ..STAT...[ 5300: 22 0a 14 70 5e 5e 2e 45 43 30 5f 42 44 43 30 42 "..p^^.EC0_BDC0B 5310: 46 43 31 5b 22 0a 14 a1 12 70 0d 4c 69 2d 49 6f FC1["....p.Li-Io 5320: 6e 00 88 53 54 41 54 0a 0b 00 a0 2c 42 46 43 31 n..STAT....,BFC1 5330: 78 42 46 43 31 0a 64 60 61 77 61 0a 64 61 70 61 xBFC1.d`awa.dapa 5340: 42 46 43 31 70 61 88 53 54 41 54 01 00 70 61 88 BFC1pa.STAT..pa. 5350: 53 54 41 54 0a 02 00 a4 53 54 41 54 14 45 0c 5f STAT....STAT.E._ 5360: 42 53 54 00 08 50 42 53 54 12 10 04 00 0c ff ff BST..PBST....... 5370: ff ff 0c ff ff ff ff 0b 5c 2b 70 0b 5c 2b 63 a0 ........\+p.\+c. 5380: 38 90 45 43 4f 4b 93 45 43 44 59 00 5b 22 0a 14 8.ECOK.ECDY.[".. 5390: 70 5e 5e 2e 45 43 30 5f 42 53 54 30 42 53 54 31 p^^.EC0_BST0BST1 53a0: 5b 22 0a 14 70 5e 5e 2e 45 43 30 5f 47 41 55 30 ["..p^^.EC0_GAU0 53b0: 42 47 55 31 5b 22 0a 14 a0 15 42 46 43 31 77 42 BGU1["....BFC1wB 53c0: 47 55 31 42 46 43 31 62 78 62 0a 64 64 62 a1 09 GU1BFC1bxb.ddb.. 53d0: 77 42 47 55 31 0a 28 62 70 42 53 54 31 88 50 42 wBGU1.(bpBST1.PB 53e0: 53 54 00 00 70 00 88 50 42 53 54 01 00 70 62 88 ST..p..PBST..pb. 53f0: 50 42 53 54 0a 02 00 70 63 88 50 42 53 54 0a 03 PBST...pc.PBST.. 5400: 00 a0 1b 94 45 43 44 59 00 76 45 43 44 59 a0 0e ....ECDY.vECDY.. 5410: 93 45 43 44 59 00 86 42 41 54 31 0a 80 a4 50 42 .ECDY..BAT1...PB 5420: 53 54 5b 82 2e 50 53 32 4b 08 5f 48 49 44 0c 41 ST[..PS2K._HID.A 5430: d0 03 03 08 5f 43 52 53 11 19 0a 16 47 01 60 00 ...._CRS....G.`. 5440: 60 00 01 01 47 01 64 00 64 00 01 01 23 02 00 01 `...G.d.d...#... 5450: 79 00 5b 82 1e 50 53 32 4d 08 5f 48 49 44 0c 41 y.[..PS2M._HID.A 5460: d0 0f 13 08 5f 43 52 53 11 09 0a 06 23 00 10 01 ...._CRS....#... 5470: 79 00 5b 82 43 6a 50 41 54 41 08 5f 41 44 52 0c y.[.CjPATA._ADR. 5480: 01 00 1f 00 5b 80 50 41 43 53 02 0a 40 0a c0 5b ....[.PACS..@..[ 5490: 81 49 04 50 41 43 53 03 50 52 49 54 10 00 10 50 .I.PACS.PRIT...P 54a0: 53 49 54 04 00 1c 53 59 4e 43 04 00 0c 53 44 54 SIT...SYNC...SDT 54b0: 30 02 00 02 53 44 54 31 02 00 4a 04 49 43 52 30 0...SDT1..J.ICR0 54c0: 04 49 43 52 31 04 49 43 52 32 04 49 43 52 33 04 .ICR1.ICR2.ICR3. 54d0: 49 43 52 34 04 49 43 52 35 04 5b 82 4b 63 50 52 ICR4.ICR5.[.KcPR 54e0: 49 44 08 5f 41 44 52 00 14 40 17 5f 47 54 4d 00 ID._ADR..@._GTM. 54f0: 08 50 42 55 46 11 17 0a 14 00 00 00 00 00 00 00 .PBUF........... 5500: 00 00 00 00 00 00 00 00 00 00 00 00 00 8a 50 42 ..............PB 5510: 55 46 00 50 49 4f 30 8a 50 42 55 46 0a 04 44 4d UF.PIO0.PBUF..DM 5520: 41 30 8a 50 42 55 46 0a 08 50 49 4f 31 8a 50 42 A0.PBUF..PIO1.PB 5530: 55 46 0a 0c 44 4d 41 31 8a 50 42 55 46 0a 10 46 UF..DMA1.PBUF..F 5540: 4c 41 47 70 47 45 54 50 50 52 49 54 50 49 4f 30 LAGpGETPPRITPIO0 5550: 70 47 44 4d 41 7b 53 59 4e 43 01 00 7b 49 43 52 pGDMA{SYNC..{ICR 5560: 33 01 00 7b 49 43 52 30 01 00 53 44 54 30 7b 49 3..{ICR0..SDT0{I 5570: 43 52 31 01 00 44 4d 41 30 a0 14 93 44 4d 41 30 CR1..DMA0...DMA0 5580: 0c ff ff ff ff 70 50 49 4f 30 44 4d 41 30 a0 2e .....pPIO0DMA0.. 5590: 7b 50 52 49 54 0b 00 40 00 a0 14 93 7b 50 52 49 {PRIT..@....{PRI 55a0: 54 0a 90 00 0a 80 70 0b 84 03 50 49 4f 31 a1 0e T.....p...PIO1.. 55b0: 70 47 45 54 54 50 53 49 54 50 49 4f 31 a1 0b 70 pGETTPSITPIO1..p 55c0: 0c ff ff ff ff 50 49 4f 31 70 47 44 4d 41 7b 53 .....PIO1pGDMA{S 55d0: 59 4e 43 0a 02 00 7b 49 43 52 33 0a 02 00 7b 49 YNC...{ICR3...{I 55e0: 43 52 30 0a 02 00 53 44 54 31 7b 49 43 52 31 0a CR0...SDT1{ICR1. 55f0: 02 00 44 4d 41 31 a0 14 93 44 4d 41 31 0c ff ff ..DMA1...DMA1... 5600: ff ff 70 50 49 4f 31 44 4d 41 31 70 47 45 54 46 ..pPIO1DMA1pGETF 5610: 7b 53 59 4e 43 01 00 7b 53 59 4e 43 0a 02 00 50 {SYNC..{SYNC...P 5620: 52 49 54 46 4c 41 47 a0 2c 7b 93 50 49 4f 30 0c RITFLAG.,{.PIO0. 5630: ff ff ff ff 93 44 4d 41 30 0c ff ff ff ff 00 70 .....DMA0......p 5640: 0a 78 50 49 4f 30 70 0a 14 44 4d 41 30 70 0a 03 .xPIO0p..DMA0p.. 5650: 46 4c 41 47 a4 50 42 55 46 14 4c 2a 5f 53 54 4d FLAG.PBUF.L*_STM 5660: 03 8a 68 00 50 49 4f 30 8a 68 0a 04 44 4d 41 30 ..h.PIO0.h..DMA0 5670: 8a 68 0a 08 50 49 4f 31 8a 68 0a 0c 44 4d 41 31 .h..PIO1.h..DMA1 5680: 8a 68 0a 10 46 4c 41 47 a0 41 12 93 87 69 0b 00 .h..FLAG.A...i.. 5690: 02 7b 50 52 49 54 0b f0 c0 50 52 49 54 7b 53 59 .{PRIT...PRIT{SY 56a0: 4e 43 0a 02 53 59 4e 43 70 00 53 44 54 30 7b 49 NC..SYNCp.SDT0{I 56b0: 43 52 30 0a 02 49 43 52 30 7b 49 43 52 31 0a 02 CR0..ICR0{ICR1.. 56c0: 49 43 52 31 7b 49 43 52 33 0a 02 49 43 52 33 7b ICR1{ICR3..ICR3{ 56d0: 49 43 52 35 0a 02 49 43 52 35 8b 69 0a 62 57 34 ICR5..ICR5.i.bW4 56e0: 39 30 8b 69 0a 6a 57 35 33 30 8b 69 0a 7e 57 36 90.i.jW530.i.~W6 56f0: 33 30 8b 69 0a 80 57 36 34 30 8b 69 0a b0 57 38 30.i..W640.i..W8 5700: 38 30 8b 69 0a ba 57 39 33 30 7d 50 52 49 54 0b 80.i..W930}PRIT. 5710: 04 80 50 52 49 54 a0 1e 90 7b 46 4c 41 47 0a 02 ..PRIT...{FLAG.. 5720: 00 7b 57 34 39 30 0b 00 08 00 7d 50 52 49 54 0a .{W490....}PRIT. 5730: 02 50 52 49 54 7d 50 52 49 54 53 45 54 50 50 49 .PRIT}PRITSETPPI 5740: 4f 30 57 35 33 30 57 36 34 30 50 52 49 54 a0 4b O0W530W640PRIT.K 5750: 05 7b 46 4c 41 47 01 00 7d 53 59 4e 43 01 53 59 .{FLAG..}SYNC.SY 5760: 4e 43 70 53 44 4d 41 44 4d 41 30 53 44 54 30 a0 NCpSDMADMA0SDT0. 5770: 12 95 44 4d 41 30 0a 1e 7d 49 43 52 33 01 49 43 ..DMA0..}ICR3.IC 5780: 52 33 a0 12 95 44 4d 41 30 0a 3c 7d 49 43 52 30 R3...DMA0.<}ICR0 5790: 01 49 43 52 30 a0 14 7b 57 39 33 30 0b 00 20 00 .ICR0..{W930.. . 57a0: 7d 49 43 52 31 01 49 43 52 31 a0 4b 15 93 87 6a }ICR1.ICR1.K...j 57b0: 0b 00 02 7b 50 52 49 54 0b 0f bf 50 52 49 54 70 ...{PRIT...PRITp 57c0: 00 50 53 49 54 7b 53 59 4e 43 01 53 59 4e 43 70 .PSIT{SYNC.SYNCp 57d0: 00 53 44 54 31 7b 49 43 52 30 01 49 43 52 30 7b .SDT1{ICR0.ICR0{ 57e0: 49 43 52 31 01 49 43 52 31 7b 49 43 52 33 01 49 ICR1.ICR1{ICR3.I 57f0: 43 52 33 7b 49 43 52 35 01 49 43 52 35 8b 6a 0a CR3{ICR5.ICR5.j. 5800: 62 57 34 39 31 8b 6a 0a 6a 57 35 33 31 8b 6a 0a bW491.j.jW531.j. 5810: 7e 57 36 33 31 8b 6a 0a 80 57 36 34 31 8b 6a 0a ~W631.j..W641.j. 5820: b0 57 38 38 31 8b 6a 0a ba 57 39 33 31 7d 50 52 .W881.j..W931}PR 5830: 49 54 0b 40 80 50 52 49 54 a0 1e 90 7b 46 4c 41 IT.@.PRIT...{FLA 5840: 47 0a 08 00 7b 57 34 39 31 0b 00 08 00 7d 50 52 G...{W491....}PR 5850: 49 54 0a 20 50 52 49 54 a0 4c 04 7b 46 4c 41 47 IT. PRIT.L.{FLAG 5860: 0a 10 00 7d 50 52 49 54 0b 00 40 50 52 49 54 a0 ...}PRIT..@PRIT. 5870: 13 94 50 49 4f 31 0a f0 7d 50 52 49 54 0a 80 50 ..PIO1..}PRIT..P 5880: 52 49 54 a1 21 7d 50 52 49 54 0a 10 50 52 49 54 RIT.!}PRIT..PRIT 5890: 70 53 45 54 54 50 49 4f 31 57 35 33 31 57 36 34 pSETTPIO1W531W64 58a0: 31 50 53 49 54 a0 40 06 7b 46 4c 41 47 0a 04 00 1PSIT.@.{FLAG... 58b0: 7d 53 59 4e 43 0a 02 53 59 4e 43 70 53 44 4d 41 }SYNC..SYNCpSDMA 58c0: 44 4d 41 31 53 44 54 31 a0 13 95 44 4d 41 31 0a DMA1SDT1...DMA1. 58d0: 1e 7d 49 43 52 33 0a 02 49 43 52 33 a0 13 95 44 .}ICR3..ICR3...D 58e0: 4d 41 31 0a 3c 7d 49 43 52 30 0a 02 49 43 52 30 MA1.<}ICR0..ICR0 58f0: a0 15 7b 57 39 33 31 0b 00 20 00 7d 49 43 52 31 ..{W931.. .}ICR1 5900: 0a 02 49 43 52 31 5b 82 47 10 50 5f 44 30 08 5f ..ICR1[.G.P_D0._ 5910: 41 44 52 00 14 4a 0f 5f 47 54 46 00 08 50 49 42 ADR..J._GTF..PIB 5920: 30 11 11 0a 0e 03 00 00 00 00 a0 ef 03 00 00 00 0............... 5930: 00 a0 ef 8c 50 49 42 30 01 50 4d 44 30 8c 50 49 ....PIB0.PMD0.PI 5940: 42 30 0a 08 44 4d 44 30 a0 40 06 7b 50 52 49 54 B0..DMD0.@.{PRIT 5950: 0a 02 00 a0 13 93 7b 50 52 49 54 0a 09 00 0a 08 ......{PRIT..... 5960: 70 0a 08 50 4d 44 30 a1 41 04 70 0a 0a 50 4d 44 p..PMD0.A.p..PMD 5970: 30 7a 7b 50 52 49 54 0b 00 03 00 0a 08 60 7a 7b 0z{PRIT......`z{ 5980: 50 52 49 54 0b 00 30 00 0a 0c 61 72 60 61 62 a0 PRIT..0...ar`ab. 5990: 0c 93 0a 03 62 70 0a 0b 50 4d 44 30 a0 0c 93 0a ....bp..PMD0.... 59a0: 05 62 70 0a 0c 50 4d 44 30 a1 07 70 01 50 4d 44 .bp..PMD0..p.PMD 59b0: 30 a0 43 04 7b 53 59 4e 43 01 00 70 7d 53 44 54 0.C.{SYNC..p}SDT 59c0: 30 0a 40 00 44 4d 44 30 a0 2c 7b 49 43 52 31 01 0.@.DMD0.,{ICR1. 59d0: 00 a0 13 7b 49 43 52 30 01 00 72 44 4d 44 30 0a ...{ICR0..rDMD0. 59e0: 02 44 4d 44 30 a0 0f 7b 49 43 52 33 01 00 70 0a .DMD0..{ICR3..p. 59f0: 45 44 4d 44 30 a1 14 7d 74 7b 50 4d 44 30 0a 07 EDMD0..}t{PMD0.. 5a00: 00 0a 02 00 0a 20 44 4d 44 30 a4 50 49 42 30 5b ..... DMD0.PIB0[ 5a10: 82 46 10 50 5f 44 31 08 5f 41 44 52 01 14 49 0f .F.P_D1._ADR..I. 5a20: 5f 47 54 46 00 08 50 49 42 31 11 11 0a 0e 03 00 _GTF..PIB1...... 5a30: 00 00 00 b0 ef 03 00 00 00 00 b0 ef 8c 50 49 42 .............PIB 5a40: 31 01 50 4d 44 31 8c 50 49 42 31 0a 08 44 4d 44 1.PMD1.PIB1..DMD 5a50: 31 a0 4b 05 7b 50 52 49 54 0a 20 00 a0 13 93 7b 1.K.{PRIT. ....{ 5a60: 50 52 49 54 0a 90 00 0a 80 70 0a 08 50 4d 44 31 PRIT.....p..PMD1 5a70: a1 3c 72 7b 50 53 49 54 0a 03 00 7a 7b 50 53 49 .. 0050: 80 49 ee 6a 65 26 72 1e cd bf 5f 2f 96 d6 c0 0a .I.je&r..._/.... 0060: 92 f5 06 b5 00 b2 3b 29 02 e2 4c 8d c2 f2 bc 41 ......;)..L....A 0070: 77 9c 70 f0 f3 1b 09 d2 63 5a dc a8 83 f8 5e c9 w.p.....cZ....^. 0080: 15 95 f9 fa fd dc 05 b7 4d 67 7f 2d b3 84 33 20 ........Mg.-..3 0090: e1 d1 79 2a a7 6a 77 d1 b6 20 2a 76 42 c5 d5 e9 ..y*.jw.. *vB... 00a0: b6 43 40 55 44 c3 c9 37 99 5f 41 97 70 f3 d1 f6 .C@UD..7._A.p... 00b0: 07 ec 7b 1a 29 a1 c1 f1 91 fd 48 86 6e 3e ce cb ..{.).....H.n>.. 00c0: 01 00 00 00 b6 00 00 00 00 00 02 00 4c 45 4e 4f ............LENO 00d0: 56 4f 54 50 2d 36 38 20 20 20 57 49 4e 44 4f 57 VOTP-68 WINDOW 00e0: 53 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 S .............. 00f0: 00 00 00 00 00 00 8a 6e 2e c9 36 e6 7f 10 8a ea .......n..6..... 0100: 14 ad d2 93 b7 6d 9b 73 ad 83 36 b8 6c a7 a7 ee .....m.s..6.l... 0110: 37 47 16 fe f3 fc cd c7 89 84 06 16 91 0b 1e 81 7G.............. 0120: 11 42 b1 35 52 57 f6 6b bb 5f a5 81 e2 ff 89 8a .B.5RW.k._...... 0130: 95 c3 4d fc e9 56 4f 4c 34 cc 99 5e 62 e1 90 8a ..M..VOL4..^b... 0140: 54 be 4a 00 5c 9b a0 86 41 46 66 9d e2 f2 e7 36 T.J.\...AFf....6 0150: 9c 33 91 27 e7 8d 5c a1 d8 f9 a4 61 8a 1c 04 07 .3.'..\....a.... 0160: e3 2a 1e 14 f1 bd 7f 4c 09 ff 19 11 a9 d4 74 ca .*.....L......t. 0170: 11 9e dc 54 39 bf ...T9. APIC @ 0xbf6dff70 0000: 41 50 49 43 68 00 00 00 01 12 50 54 4c 54 44 20 APICh.....PTLTD 0010: 09 20 41 50 49 43 20 20 00 00 04 06 20 4c 54 50 . APIC .... LTP 0020: 00 00 00 00 00 00 e0 fe 01 00 00 00 00 08 00 00 ................ 0030: 01 00 00 00 00 08 01 01 01 00 00 00 01 0c 02 00 ................ 0040: 00 00 c0 fe 00 00 00 00 04 06 00 05 00 01 04 06 ................ 0050: 01 05 00 01 02 0a 00 00 02 00 00 00 05 00 02 0a ................ 0060: 00 09 09 00 00 00 0d 00 ........ BOOT @ 0xbf6dffd8 0000: 42 4f 4f 54 28 00 00 00 01 a6 50 54 4c 54 44 20 BOOT(.....PTLTD 0010: 24 53 42 46 54 42 4c 24 00 00 04 06 20 4c 54 50 $SBFTBL$.... LTP 0020: 01 00 00 00 36 00 00 00 ....6... SSDT @ 0xbf6d98bd 0000: 53 53 44 54 ad 02 00 00 01 01 53 61 74 61 52 65 SSDT.....YSataRe 0010: 53 61 74 61 41 68 63 69 00 10 00 00 49 4e 54 4c SataAhci....INTL 0020: 24 06 05 20 10 48 28 5c 2f 03 5f 53 42 5f 50 43 $.. .H(\/._SB_PC 0030: 49 30 53 41 54 41 5b 82 4f 0c 50 52 54 30 08 5f I0SATA[.O.PRT0._ 0040: 41 44 52 0b ff ff 14 44 0b 5f 53 44 44 01 08 47 ADR....D._SDD..G 0050: 42 55 30 11 0a 0a 07 00 00 00 00 00 a0 00 8c 47 BU0............G 0060: 42 55 30 0a 00 47 42 30 30 8c 47 42 55 30 0a 01 BU0..GB00.GBU0.. 0070: 47 42 30 31 8c 47 42 55 30 0a 02 47 42 30 32 8c GB01.GBU0..GB02. 0080: 47 42 55 30 0a 03 47 42 30 33 8c 47 42 55 30 0a GBU0..GB03.GBU0. 0090: 04 47 42 30 34 8c 47 42 55 30 0a 05 47 42 30 35 .GB04.GBU0..GB05 00a0: 8c 47 42 55 30 0a 06 47 42 30 36 a0 46 04 93 87 .GBU0..GB06.F... 00b0: 68 0b 00 02 8b 68 0a 9c 57 37 38 30 a0 1e 7b 57 h....h..W780..{W 00c0: 37 38 30 0a 08 00 70 0a 10 47 42 30 30 70 0a 03 780...p..GB00p.. 00d0: 47 42 30 31 70 0a ef 47 42 30 36 a1 16 70 0a 90 GB01p..GB06..p.. 00e0: 47 42 30 30 70 0a 03 47 42 30 31 70 0a ef 47 42 GB00p..GB01p..GB 00f0: 30 36 70 47 42 55 30 47 54 46 30 14 0b 5f 47 54 06pGBU0GTF0.._GT 0100: 46 00 a4 47 54 46 30 5b 82 41 0d 50 52 54 31 08 F..GTF0[.A.PRT1. 0110: 5f 41 44 52 0c ff ff 01 00 14 44 0b 5f 53 44 44 _ADR......D._SDD 0120: 01 08 47 42 55 31 11 0a 0a 07 00 00 00 00 00 a0 ..GBU1.......... 0130: 00 8c 47 42 55 31 0a 00 47 42 31 30 8c 47 42 55 ..GBU1..GB10.GBU 0140: 31 0a 01 47 42 31 31 8c 47 42 55 31 0a 02 47 42 1..GB11.GBU1..GB 0150: 31 32 8c 47 42 55 31 0a 03 47 42 31 33 8c 47 42 12.GBU1..GB13.GB 0160: 55 31 0a 04 47 42 31 34 8c 47 42 55 31 0a 05 47 U1..GB14.GBU1..G 0170: 42 31 35 8c 47 42 55 31 0a 06 47 42 31 36 a0 46 B15.GBU1..GB16.F 0180: 04 93 87 68 0b 00 02 8b 68 0a 9c 57 37 38 31 a0 ...h....h..W781. 0190: 1e 7b 57 37 38 31 0a 08 00 70 0a 10 47 42 31 30 .{W781...p..GB10 01a0: 70 0a 03 47 42 31 31 70 0a ef 47 42 31 36 a1 16 p..GB11p..GB16.. 01b0: 70 0a 90 47 42 31 30 70 0a 03 47 42 31 31 70 0a p..GB10p..GB11p. 01c0: ef 47 42 31 36 70 47 42 55 31 47 54 46 31 14 0b .GB16pGBU1GTF1.. 01d0: 5f 47 54 46 00 a4 47 54 46 31 5b 82 41 0d 50 52 _GTF..GTF1[.A.PR 01e0: 54 32 08 5f 41 44 52 0c ff ff 02 00 14 44 0b 5f T2._ADR......D._ 01f0: 53 44 44 01 08 47 42 55 32 11 0a 0a 07 00 00 00 SDD..GBU2....... 0200: 00 00 a0 00 8c 47 42 55 32 0a 00 47 42 32 30 8c .....GBU2..GB20. 0210: 47 42 55 32 0a 01 47 42 32 31 8c 47 42 55 32 0a GBU2..GB21.GBU2. 0220: 02 47 42 32 32 8c 47 42 55 32 0a 03 47 42 32 33 .GB22.GBU2..GB23 0230: 8c 47 42 55 32 0a 04 47 42 32 34 8c 47 42 55 32 .GBU2..GB24.GBU2 0240: 0a 05 47 42 32 35 8c 47 42 55 32 0a 06 47 42 32 ..GB25.GBU2..GB2 0250: 36 a0 46 04 93 87 68 0b 00 02 8b 68 0a 9c 57 37 6.F...h....h..W7 0260: 38 32 a0 1e 7b 57 37 38 32 0a 08 00 70 0a 10 47 82..{W782...p..G 0270: 42 32 30 70 0a 03 47 42 32 31 70 0a ef 47 42 32 B20p..GB21p..GB2 0280: 36 a1 16 70 0a 90 47 42 32 30 70 0a 03 47 42 32 6..p..GB20p..GB2 0290: 31 70 0a ef 47 42 32 36 70 47 42 55 32 47 54 46 1p..GB26pGBU2GTF 02a0: 32 14 0b 5f 47 54 46 00 a4 47 54 46 32 2.._GTF..GTF2 SSDT @ 0xbf6d981a 0000: 53 53 44 54 a3 00 00 00 01 ef 42 72 74 52 65 66 SSDT......BrtRef 0010: 44 44 30 31 42 52 54 00 00 10 00 00 49 4e 54 4c DD01BRT.....INTL 0020: 24 06 05 20 10 4e 07 5c 2f 04 5f 53 42 5f 50 43 $.. .N.\/._SB_PC 0030: 49 30 47 46 58 30 44 44 30 33 14 1e 5f 42 43 4c I0GFX0DD03.._BCL 0040: 00 a4 12 16 0a 0a 46 0a 28 0a 00 0a 0a 0a 14 0a ......F.(....... 0050: 1e 0a 28 0a 32 0a 3c 0a 46 14 25 5f 42 43 4d 01 ..(.2.<.F.%_BCM. 0060: 78 68 0a 0a 60 61 70 61 5c 2f 05 5f 53 42 5f 50 xh..`apa\/._SB_P 0070: 43 49 30 4c 50 43 42 45 43 30 5f 42 52 54 53 14 CI0LPCBEC0_BRTS. 0080: 23 5f 42 51 43 00 77 5c 2f 05 5f 53 42 5f 50 43 #_BQC.w\/._SB_PC 0090: 49 30 4c 50 43 42 45 43 30 5f 42 52 54 53 0a 0a I0LPCBEC0_BRTS.. 00a0: 60 a4 60 `.` SSDT @ 0xbf6d8e10 0000: 53 53 44 54 5f 02 00 00 01 00 50 6d 52 65 66 00 SSDT_.....PmRef. 0010: 43 70 75 30 54 73 74 00 00 30 00 00 49 4e 54 4c Cpu0Tst..0..INTL 0020: 24 06 05 20 10 4a 23 5c 2e 5f 50 52 5f 43 50 55 $.. .J#\._PR_CPU 0030: 30 08 5f 54 50 43 0a 00 14 4d 06 5f 50 54 43 00 0._TPC...M._PTC. 0040: a0 37 7b 50 44 43 30 0a 04 00 a4 12 2c 02 11 14 .7{PDC0.....,... 0050: 0a 11 82 0c 00 7f 00 00 00 00 00 00 00 00 00 00 ................ 0060: 00 79 00 11 14 0a 11 82 0c 00 7f 00 00 00 00 00 .y.............. 0070: 00 00 00 00 00 00 79 00 a4 12 2c 02 11 14 0a 11 ......y...,..... 0080: 82 0c 00 01 04 01 00 10 10 00 00 00 00 00 00 79 ...............y 0090: 00 11 14 0a 11 82 0c 00 01 04 01 00 10 10 00 00 ................ 00a0: 00 00 00 00 79 00 08 54 53 53 49 12 41 07 08 12 ....y..TSSI.A... 00b0: 0d 05 0a 64 0b e8 03 0a 00 0a 00 0a 00 12 0d 05 ...d............ 00c0: 0a 58 0b 6b 03 0a 00 0a 0f 0a 00 12 0d 05 0a 4b .X.k...........K 00d0: 0b ee 02 0a 00 0a 0e 0a 00 12 0d 05 0a 3f 0b 71 .............?.q 00e0: 02 0a 00 0a 0d 0a 00 12 0d 05 0a 32 0b f4 01 0a ...........2.... 00f0: 00 0a 0c 0a 00 12 0d 05 0a 26 0b 77 01 0a 00 0a .........&.w.... 0100: 0b 0a 00 12 0c 05 0a 19 0a fa 0a 00 0a 0a 0a 00 ................ 0110: 12 0c 05 0a 0d 0a 7d 0a 00 0a 09 0a 00 08 54 53 ......}.......TS 0120: 53 4d 12 41 07 08 12 0d 05 0a 64 0b e8 03 0a 00 SM.A......d..... 0130: 0a 00 0a 00 12 0d 05 0a 58 0b 6b 03 0a 00 0a 1e ........X.k..... 0140: 0a 00 12 0d 05 0a 4b 0b ee 02 0a 00 0a 1c 0a 00 ......K......... 0150: 12 0d 05 0a 3f 0b 71 02 0a 00 0a 1a 0a 00 12 0d ....?.q......... 0160: 05 0a 32 0b f4 01 0a 00 0a 18 0a 00 12 0d 05 0a ..2............. 0170: 26 0b 77 01 0a 00 0a 16 0a 00 12 0c 05 0a 19 0a &.w............. 0180: fa 0a 00 0a 14 0a 00 12 0c 05 0a 0d 0a 7d 0a 00 .............}.. 0190: 0a 12 0a 00 08 54 53 53 46 0a 00 14 43 08 5f 54 .....TSSF...C._T 01a0: 53 53 00 a0 47 06 90 92 54 53 53 46 5b 12 5f 50 SS..G...TSSF[._P 01b0: 53 53 00 70 5f 50 53 53 60 70 87 60 61 76 61 70 SS.p_PSS`p.`avap 01c0: 83 88 83 88 60 61 00 0a 01 00 62 70 0a 00 63 a2 ....`a....bp..c. 01d0: 35 95 63 87 54 53 53 49 70 78 77 62 74 0a 08 63 5.c.TSSIpxwbt..c 01e0: 00 00 0a 08 00 00 64 70 64 88 83 88 54 53 53 49 ......dpd...TSSI 01f0: 63 00 0a 01 00 70 64 88 83 88 54 53 53 4d 63 00 c....pd...TSSMc. 0200: 0a 01 00 75 63 70 ff 54 53 53 46 a0 0e 7b 50 44 ...ucp.TSSF..{PD 0210: 43 30 0a 04 00 a4 54 53 53 4d a4 54 53 53 49 14 C0....TSSM.TSSI. 0220: 3f 5f 54 53 44 00 a0 27 90 7b 43 46 47 44 0c 00 ?_TSD..'.{CFGD.. 0230: 00 00 01 00 92 7b 50 44 43 30 0a 04 00 a4 12 0f .....{PDC0...... 0240: 01 12 0c 05 0a 05 0a 00 0a 00 0a fd 0a 02 a4 12 ................ 0250: 0f 01 12 0c 05 0a 05 0a 00 0a 00 0a fc 0a 01 ............... SSDT @ 0xbf6d8d6a 0000: 53 53 44 54 a6 00 00 00 01 dd 50 6d 52 65 66 00 SSDT.....mPmRef. 0010: 43 70 75 31 54 73 74 00 00 30 00 00 49 4e 54 4c Cpu1Tst..0..INTL 0020: 24 06 05 20 10 41 08 5c 2e 5f 50 52 5f 43 50 55 $.. .A.\._PR_CPU 0030: 31 08 5f 54 50 43 0a 00 14 16 5f 50 54 43 00 a4 1._TPC...._PTC.. 0040: 5c 2f 03 5f 50 52 5f 43 50 55 30 5f 50 54 43 14 \/._PR_CPU0_PTC. 0050: 16 5f 54 53 53 00 a4 5c 2f 03 5f 50 52 5f 43 50 ._TSS..\/._PR_CP 0060: 55 30 5f 54 53 53 14 3f 5f 54 53 44 00 a0 27 90 U0_TSS.?_TSD..'. 0070: 7b 43 46 47 44 0c 00 00 00 01 00 92 7b 50 44 43 {CFGD.......{PDC 0080: 31 0a 04 00 a4 12 0f 01 12 0c 05 0a 05 0a 00 0a 1............... 0090: 00 0a fd 0a 02 a4 12 0f 01 12 0c 05 0a 05 0a 00 ................ 00a0: 0a 01 0a fc 0a 01 ...... SSDT @ 0xbf6d8884 0000: 53 53 44 54 e6 04 00 00 01 de 50 6d 52 65 66 00 SSDT......PmRef. 0010: 43 70 75 50 6d 00 00 00 00 30 00 00 49 4e 54 4c CpuPm....0..INTL 0020: 24 06 05 20 10 45 08 5c 00 08 53 53 44 54 12 43 $.. .E.\..SSDT.C 0030: 05 0c 0d 43 50 55 30 49 53 54 20 00 0c 9e 95 6d ...CPU0IST ....m 0040: bf 0c b4 01 00 00 0d 43 50 55 31 49 53 54 20 00 .......CPU1IST . 0050: 0c 52 97 6d bf 0c c8 00 00 00 0d 43 50 55 30 43 .R.m.......CPU0C 0060: 53 54 20 00 0c 6f 90 6d bf 0c aa 04 00 00 0d 43 ST ..o.m.......C 0070: 50 55 31 43 53 54 20 00 0c 19 95 6d bf 0c 85 00 PU1CST ....m.... 0080: 00 00 08 43 46 47 44 0c f1 69 3f 11 08 5c 50 44 ...CFGD..i?..\PD 0090: 43 30 0c 00 00 00 80 08 5c 50 44 43 31 0c 00 00 C0......\PDC1... 00a0: 00 80 08 5c 53 44 54 4c 0a 00 10 4d 21 5c 2e 5f ...\SDTL...M!\._ 00b0: 50 52 5f 43 50 55 30 08 48 49 30 5f 0a 00 08 48 PR_CPU0.HI0_...H 00c0: 43 30 5f 0a 00 14 48 06 5f 50 44 43 01 8a 68 0a C0_...H._PDC..h. 00d0: 00 52 45 56 53 8a 68 0a 04 53 49 5a 45 70 87 68 .REVS.h..SIZEp.h 00e0: 60 70 74 60 0a 08 00 61 5b 13 68 0a 40 77 61 0a `pt`...a[.h.@wa. 00f0: 08 00 54 45 4d 50 08 53 54 53 30 11 07 0a 04 00 ..TEMP.STS0..... 0100: 00 00 00 73 53 54 53 30 54 45 4d 50 62 5f 4f 53 ...sSTS0TEMPb_OS 0110: 43 11 13 0a 10 16 a6 77 40 0c 29 be 47 9e bd d8 C......w@.).G... 0120: 70 58 71 39 53 52 45 56 53 53 49 5a 45 62 14 49 pXq9SREVSSIZEb.I 0130: 19 5f 4f 53 43 04 8a 6b 0a 00 53 54 53 30 8a 6b ._OSC..k..STS0.k 0140: 0a 04 43 41 50 30 8a 68 0a 00 49 49 44 30 8a 68 ..CAP0.h..IID0.h 0150: 0a 04 49 49 44 31 8a 68 0a 08 49 49 44 32 8a 68 ..IID1.h..IID2.h 0160: 0a 0c 49 49 44 33 08 55 49 44 30 11 13 0a 10 16 ..IID3.UID0..... 0170: a6 77 40 0c 29 be 47 9e bd d8 70 58 71 39 53 8a .w@.).G...pXq9S. 0180: 55 49 44 30 0a 00 45 49 44 30 8a 55 49 44 30 0a UID0..EID0.UID0. 0190: 04 45 49 44 31 8a 55 49 44 30 0a 08 45 49 44 32 .EID1.UID0..EID2 01a0: 8a 55 49 44 30 0a 0c 45 49 44 33 a0 32 92 90 90 .UID0..EID3.2... 01b0: 93 49 49 44 30 45 49 44 30 93 49 49 44 31 45 49 .IID0EID0.IID1EI 01c0: 44 31 90 93 49 49 44 32 45 49 44 32 93 49 49 44 D1..IID2EID2.IID 01d0: 33 45 49 44 33 70 0a 06 53 54 53 30 a4 6b a0 0f 3EID3p..STS0.k.. 01e0: 92 93 69 0a 01 70 0a 0a 53 54 53 30 a4 6b 7d 7b ..i..p..STS0.k}{ 01f0: 50 44 43 30 0c ff ff ff 7f 00 43 41 50 30 50 44 PDC0......CAP0PD 0200: 43 30 70 7b 50 44 43 30 0a ff 00 50 43 50 30 a0 C0p{PDC0...PCP0. 0210: 4c 05 7b 43 46 47 44 0a 01 00 a0 41 05 90 90 7b L.{CFGD....A...{ 0220: 43 46 47 44 0c 00 00 00 01 00 93 7b 50 44 43 30 CFGD.......{PDC0 0230: 0a 09 00 0a 09 92 7b 53 44 54 4c 0a 01 00 7d 53 ......{SDTL...}S 0240: 44 54 4c 0a 01 53 44 54 4c 5b 80 49 53 54 30 00 DTL..SDTL[.IST0. 0250: 83 88 53 53 44 54 0a 01 00 83 88 53 53 44 54 0a ..SSDT.....SSDT. 0260: 02 00 5b 20 49 53 54 30 48 49 30 5f a0 49 05 7b ..[ IST0HI0_.I.{ 0270: 43 46 47 44 0a f0 00 a0 4e 04 90 90 7b 43 46 47 CFGD....N...{CFG 0280: 44 0c 00 00 00 01 00 7b 50 44 43 30 0a 18 00 92 D......{PDC0.... 0290: 7b 53 44 54 4c 0a 02 00 7d 53 44 54 4c 0a 02 53 {SDTL...}SDTL..S 02a0: 44 54 4c 5b 80 43 53 54 30 00 83 88 53 53 44 54 DTL[.CST0...SSDT 02b0: 0a 07 00 83 88 53 53 44 54 0a 08 00 5b 20 43 53 .....SSDT...[ CS 02c0: 54 30 48 43 30 5f a4 6b 10 4d 21 5c 2e 5f 50 52 T0HC0_.k.M!\._PR 02d0: 5f 43 50 55 31 08 48 49 31 5f 0a 00 08 48 43 31 _CPU1.HI1_...HC1 02e0: 5f 0a 00 14 48 06 5f 50 44 43 01 8a 68 0a 00 52 _...H._PDC..h..R 02f0: 45 56 53 8a 68 0a 04 53 49 5a 45 70 87 68 60 70 EVS.h..SIZEp.h`p 0300: 74 60 0a 08 00 61 5b 13 68 0a 40 77 61 0a 08 00 t`...a[.h.@wa... 0310: 54 45 4d 50 08 53 54 53 31 11 07 0a 04 00 00 00 TEMP.STS1....... 0320: 00 73 53 54 53 31 54 45 4d 50 62 5f 4f 53 43 11 .sSTS1TEMPb_OSC. 0330: 13 0a 10 16 a6 77 40 0c 29 be 47 9e bd d8 70 58 .....w@.).G...pX 0340: 71 39 53 52 45 56 53 53 49 5a 45 62 14 49 19 5f q9SREVSSIZEb.I._ 0350: 4f 53 43 04 8a 6b 0a 00 53 54 53 31 8a 6b 0a 04 OSC..k..STS1.k.. 0360: 43 41 50 31 8a 68 0a 00 49 49 44 30 8a 68 0a 04 CAP1.h..IID0.h.. 0370: 49 49 44 31 8a 68 0a 08 49 49 44 32 8a 68 0a 0c IID1.h..IID2.h.. 0380: 49 49 44 33 08 55 49 44 31 11 13 0a 10 16 a6 77 IID3.UID1......w 0390: 40 0c 29 be 47 9e bd d8 70 58 71 39 53 8a 55 49 @.).G...pXq9S.UI 03a0: 44 31 0a 00 45 49 44 30 8a 55 49 44 31 0a 04 45 D1..EID0.UID1..E 03b0: 49 44 31 8a 55 49 44 31 0a 08 45 49 44 32 8a 55 ID1.UID1..EID2.U 03c0: 49 44 31 0a 0c 45 49 44 33 a0 32 92 90 90 93 49 ID1..EID3.2....I 03d0: 49 44 30 45 49 44 30 93 49 49 44 31 45 49 44 31 ID0EID0.IID1EID1 03e0: 90 93 49 49 44 32 45 49 44 32 93 49 49 44 33 45 ..IID2EID2.IID3E 03f0: 49 44 33 70 0a 06 53 54 53 31 a4 6b a0 0f 92 93 ID3p..STS1.k.... 0400: 69 0a 01 70 0a 0a 53 54 53 31 a4 6b 7d 7b 50 44 i..p..STS1.k}{PD 0410: 43 31 0c ff ff ff 7f 00 43 41 50 31 50 44 43 31 C1......CAP1PDC1 0420: 70 7b 50 44 43 31 0a ff 00 50 43 50 31 a0 4c 05 p{PDC1...PCP1.L. 0430: 7b 43 46 47 44 0a 01 00 a0 41 05 90 90 7b 43 46 {CFGD....A...{CF 0440: 47 44 0c 00 00 00 01 00 93 7b 50 44 43 31 0a 09 GD.......{PDC1.. 0450: 00 0a 09 92 7b 53 44 54 4c 0a 10 00 7d 53 44 54 ....{SDTL...}SDT 0460: 4c 0a 10 53 44 54 4c 5b 80 49 53 54 31 00 83 88 L..SDTL[.IST1... 0470: 53 53 44 54 0a 04 00 83 88 53 53 44 54 0a 05 00 SSDT.....SSDT... 0480: 5b 20 49 53 54 31 48 49 31 5f a0 49 05 7b 43 46 [ IST1HI1_.I.{CF 0490: 47 44 0a f0 00 a0 4e 04 90 90 7b 43 46 47 44 0c GD....N...{CFGD. 04a0: 00 00 00 01 00 7b 50 44 43 31 0a 18 00 92 7b 53 .....{PDC1....{S 04b0: 44 54 4c 0a 20 00 7d 53 44 54 4c 0a 20 53 44 54 DTL. .}SDTL. SDT 04c0: 4c 5b 80 43 53 54 31 00 83 88 53 53 44 54 0a 0a L[.CST1...SSDT.. 04d0: 00 83 88 53 53 44 54 0a 0b 00 5b 20 43 53 54 31 ...SSDT...[ CST1 04e0: 48 43 31 5f a4 6b HC1_.k XSDT @ 0xbf6d87f0 0000: 58 53 44 54 94 00 00 00 01 c3 4c 45 4e 4f 56 4f XSDT......LENOVO 0010: 54 50 2d 36 38 20 20 20 00 00 04 06 20 4c 54 50 TP-68 .... LTP 0020: 00 00 00 00 d2 fb 6d bf 00 00 00 00 c6 fc 6d bf ......m.......m. 0030: 00 00 00 00 2e fd 6d bf 00 00 00 00 66 fd 6d bf ......m.....f.m. 0040: 00 00 00 00 a2 fd 6d bf 00 00 00 00 d4 fd 6d bf ......m.......m. 0050: 00 00 00 00 fa fd 6d bf 00 00 00 00 70 ff 6d bf ......m.....p.m. 0060: 00 00 00 00 d8 ff 6d bf 00 00 00 00 bd 98 6d bf ......m.......m. 0070: 00 00 00 00 1a 98 6d bf 00 00 00 00 10 8e 6d bf ......m.......m. 0080: 00 00 00 00 6a 8d 6d bf 00 00 00 00 84 88 6d bf ....j.m.......m. 0090: 00 00 00 00 .... RSD PTR @ 0xf7240 0000: 52 53 44 20 50 54 52 20 c5 4c 45 4e 4f 56 4f 02 RSD PTR .LENOVO. 0010: 94 87 6d bf 24 00 00 00 f0 87 6d bf 00 00 00 00 ..m.$.....m..... 0020: 39 00 00 00 9... fwts-test/checksum-0001/checksum-0001.log000066400000000000000000000032751231470457100200740ustar00rootroot00000000000000checksum checksum: ACPI table checksum test. checksum -------------------------------------------------------------------------------------------------- checksum Test 1 of 1: ACPI table checksum test. checksum PASSED: Test 1, Table DSDT has correct checksum 0x11 checksum PASSED: Test 1, Table FACP has correct checksum 0x52 checksum PASSED: Test 1, Table APIC has correct checksum 0xcc checksum PASSED: Test 1, Table HPET has correct checksum 0x0a checksum PASSED: Test 1, Table MCFG has correct checksum 0x32 checksum PASSED: Test 1, Table TCPA has correct checksum 0x8f checksum PASSED: Test 1, Table TMOR has correct checksum 0xeb checksum PASSED: Test 1, Table SLIC has correct checksum 0x99 checksum PASSED: Test 1, Table APIC has correct checksum 0x13 checksum PASSED: Test 1, Table BOOT has correct checksum 0xa5 checksum PASSED: Test 1, Table SSDT has correct checksum 0x59 checksum PASSED: Test 1, Table SSDT has correct checksum 0xed checksum PASSED: Test 1, Table SSDT has correct checksum 0xc8 checksum PASSED: Test 1, Table SSDT has correct checksum 0x6d checksum PASSED: Test 1, Table SSDT has correct checksum 0xdf checksum PASSED: Test 1, Table XSDT has correct checksum 0xc2 checksum PASSED: Test 1, Table RSDT has correct checksum 0x0d checksum checksum ================================================================================================== checksum 19 passed, 0 failed, 0 warning, 0 aborted, 0 skipped, 0 info only. checksum ================================================================================================== fwts-test/checksum-0001/checksum-0003.log000066400000000000000000000040401231470457100200650ustar00rootroot00000000000000checksum checksum: ACPI table checksum test. checksum -------------------------------------------------------------------------------------------------- checksum Test 1 of 1: ACPI table checksum test. checksum FAILED [MEDIUM] ACPITableChecksum: Test 1, Table DSDT has incorrect checksum, expected 0x11, got checksum 0x10. checksum checksum ADVICE: The kernel will warn that this table has an invalid checksum but will ignore the error and checksum still load it. This is not a critical issue, but should be fixed if possible to avoid the warning checksum messages. checksum checksum PASSED: Test 1, Table FACP has correct checksum 0x52 checksum PASSED: Test 1, Table APIC has correct checksum 0xcc checksum PASSED: Test 1, Table HPET has correct checksum 0x0a checksum PASSED: Test 1, Table MCFG has correct checksum 0x32 checksum PASSED: Test 1, Table TCPA has correct checksum 0x8f checksum PASSED: Test 1, Table TMOR has correct checksum 0xeb checksum PASSED: Test 1, Table SLIC has correct checksum 0x99 checksum PASSED: Test 1, Table APIC has correct checksum 0x13 checksum PASSED: Test 1, Table BOOT has correct checksum 0xa5 checksum PASSED: Test 1, Table SSDT has correct checksum 0x59 checksum PASSED: Test 1, Table SSDT has correct checksum 0xed checksum PASSED: Test 1, Table SSDT has correct checksum 0xc8 checksum PASSED: Test 1, Table SSDT has correct checksum 0x6d checksum PASSED: Test 1, Table SSDT has correct checksum 0xdf checksum PASSED: Test 1, Table XSDT has correct checksum 0xc2 checksum PASSED: Test 1, Table RSDT has correct checksum 0x0d checksum checksum ================================================================================================== checksum 18 passed, 1 failed, 0 warning, 0 aborted, 0 skipped, 0 info only. checksum ================================================================================================== fwts-test/checksum-0001/checksum-0004.log000066400000000000000000000156121231470457100200750ustar00rootroot00000000000000checksum checksum: ACPI table checksum test. checksum -------------------------------------------------------------------------------------------------- checksum Test 1 of 1: ACPI table checksum test. checksum PASSED: Test 1, Table DSDT has correct checksum 0x11 checksum FAILED [MEDIUM] ACPITableChecksum: Test 1, Table FACP has incorrect checksum, expected 0x52, got checksum 0x53. checksum checksum ADVICE: The kernel will warn that this table has an invalid checksum but will ignore the error and checksum still load it. This is not a critical issue, but should be fixed if possible to avoid the warning checksum messages. checksum checksum FAILED [MEDIUM] ACPITableChecksum: Test 1, Table APIC has incorrect checksum, expected 0xcc, got checksum 0xcb. checksum checksum ADVICE: The kernel will warn that this table has an invalid checksum but will ignore the error and checksum still load it. This is not a critical issue, but should be fixed if possible to avoid the warning checksum messages. checksum checksum FAILED [MEDIUM] ACPITableChecksum: Test 1, Table HPET has incorrect checksum, expected 0x0a, got checksum 0x09. checksum checksum ADVICE: The kernel will warn that this table has an invalid checksum but will ignore the error and checksum still load it. This is not a critical issue, but should be fixed if possible to avoid the warning checksum messages. checksum checksum FAILED [MEDIUM] ACPITableChecksum: Test 1, Table MCFG has incorrect checksum, expected 0x32, got checksum 0x33. checksum checksum ADVICE: The kernel will warn that this table has an invalid checksum but will ignore the error and checksum still load it. This is not a critical issue, but should be fixed if possible to avoid the warning checksum messages. checksum checksum FAILED [MEDIUM] ACPITableChecksum: Test 1, Table TCPA has incorrect checksum, expected 0x8f, got checksum 0xff. checksum checksum ADVICE: The kernel will warn that this table has an invalid checksum but will ignore the error and checksum still load it. This is not a critical issue, but should be fixed if possible to avoid the warning checksum messages. checksum checksum FAILED [MEDIUM] ACPITableChecksum: Test 1, Table TMOR has incorrect checksum, expected 0xeb, got checksum 0xbe. checksum checksum ADVICE: The kernel will warn that this table has an invalid checksum but will ignore the error and checksum still load it. This is not a critical issue, but should be fixed if possible to avoid the warning checksum messages. checksum checksum FAILED [MEDIUM] ACPITableChecksum: Test 1, Table SLIC has incorrect checksum, expected 0x99, got checksum 0x88. checksum checksum ADVICE: The kernel will warn that this table has an invalid checksum but will ignore the error and checksum still load it. This is not a critical issue, but should be fixed if possible to avoid the warning checksum messages. checksum checksum FAILED [MEDIUM] ACPITableChecksum: Test 1, Table APIC has incorrect checksum, expected 0x13, got checksum 0x12. checksum checksum ADVICE: The kernel will warn that this table has an invalid checksum but will ignore the error and checksum still load it. This is not a critical issue, but should be fixed if possible to avoid the warning checksum messages. checksum checksum FAILED [MEDIUM] ACPITableChecksum: Test 1, Table BOOT has incorrect checksum, expected 0xa5, got checksum 0xa6. checksum checksum ADVICE: The kernel will warn that this table has an invalid checksum but will ignore the error and checksum still load it. This is not a critical issue, but should be fixed if possible to avoid the warning checksum messages. checksum checksum FAILED [MEDIUM] ACPITableChecksum: Test 1, Table SSDT has incorrect checksum, expected 0x59, got checksum 0x01. checksum checksum ADVICE: The kernel will warn that this table has an invalid checksum but will ignore the error and checksum still load it. This is not a critical issue, but should be fixed if possible to avoid the warning checksum messages. checksum checksum FAILED [MEDIUM] ACPITableChecksum: Test 1, Table SSDT has incorrect checksum, expected 0xed, got checksum 0xef. checksum checksum ADVICE: The kernel will warn that this table has an invalid checksum but will ignore the error and checksum still load it. This is not a critical issue, but should be fixed if possible to avoid the warning checksum messages. checksum checksum FAILED [MEDIUM] ACPITableChecksum: Test 1, Table SSDT has incorrect checksum, expected 0xc8, got checksum 0x00. checksum checksum ADVICE: The kernel will warn that this table has an invalid checksum but will ignore the error and checksum still load it. This is not a critical issue, but should be fixed if possible to avoid the warning checksum messages. checksum checksum FAILED [MEDIUM] ACPITableChecksum: Test 1, Table SSDT has incorrect checksum, expected 0x6d, got checksum 0xdd. checksum checksum ADVICE: The kernel will warn that this table has an invalid checksum but will ignore the error and checksum still load it. This is not a critical issue, but should be fixed if possible to avoid the warning checksum messages. checksum checksum FAILED [MEDIUM] ACPITableChecksum: Test 1, Table SSDT has incorrect checksum, expected 0xdf, got checksum 0xde. checksum checksum ADVICE: The kernel will warn that this table has an invalid checksum but will ignore the error and checksum still load it. This is not a critical issue, but should be fixed if possible to avoid the warning checksum messages. checksum checksum FAILED [MEDIUM] ACPITableChecksum: Test 1, Table XSDT has incorrect checksum, expected 0xc2, got checksum 0xc3. checksum checksum ADVICE: The kernel will warn that this table has an invalid checksum but will ignore the error and checksum still load it. This is not a critical issue, but should be fixed if possible to avoid the warning checksum messages. checksum checksum PASSED: Test 1, Table RSDT has correct checksum 0x0d checksum checksum ================================================================================================== checksum 4 passed, 15 failed, 0 warning, 0 aborted, 0 skipped, 0 info only. checksum ================================================================================================== fwts-test/checksum-0001/test-0001.sh000077500000000000000000000007371231470457100171050ustar00rootroot00000000000000#!/bin/bash # TEST="Test checksum against known correct ACPI tables" NAME=test-0001.sh TMPLOG=$TMP/checksum.log.$$ $FWTS --log-format="%line %owner " -w 120 --dumpfile=$FWTSTESTDIR/checksum-0001/acpidump-0001.log checksum - | grep "^[0-9]*[ ]*checksum" | grep -v RSDP | cut -c7- > $TMPLOG diff $TMPLOG $FWTSTESTDIR/checksum-0001/checksum-0001.log >> $FAILURE_LOG ret=$? if [ $ret -eq 0 ]; then echo PASSED: $TEST, $NAME else echo FAILED: $TEST, $NAME fi rm $TMPLOG exit $ret fwts-test/checksum-0001/test-0003.sh000077500000000000000000000007401231470457100171010ustar00rootroot00000000000000#!/bin/bash # TEST="Test checksum against incorrect ACPI DSDT table" NAME=test-0003.sh TMPLOG=$TMP/checksum.log.$$ $FWTS --log-format="%line %owner " -w 120 --dumpfile=$FWTSTESTDIR/checksum-0001/acpidump-0003.log checksum - | grep "^[0-9]*[ ]*checksum" | grep -v RSDP | cut -c7- > $TMPLOG diff $TMPLOG $FWTSTESTDIR/checksum-0001/checksum-0003.log >> $FAILURE_LOG ret=$? if [ $ret -eq 0 ]; then echo PASSED: $TEST, $NAME else echo FAILED: $TEST, $NAME fi rm $TMPLOG exit $ret fwts-test/checksum-0001/test-0004.sh000077500000000000000000000007401231470457100171020ustar00rootroot00000000000000#!/bin/bash # TEST="Test checksum against incorrect ACPI DSDT table" NAME=test-0004.sh TMPLOG=$TMP/checksum.log.$$ $FWTS --log-format="%line %owner " -w 120 --dumpfile=$FWTSTESTDIR/checksum-0001/acpidump-0004.log checksum - | grep "^[0-9]*[ ]*checksum" | grep -v RSDP | cut -c7- > $TMPLOG diff $TMPLOG $FWTSTESTDIR/checksum-0001/checksum-0004.log >> $FAILURE_LOG ret=$? if [ $ret -eq 0 ]; then echo PASSED: $TEST, $NAME else echo FAILED: $TEST, $NAME fi rm $TMPLOG exit $ret fwts-test/disassemble-0001/000077500000000000000000000000001231470457100156735ustar00rootroot00000000000000fwts-test/disassemble-0001/DSDT.dsl.original000066400000000000000000007435271231470457100207620ustar00rootroot00000000000000/* * Intel ACPI Component Architecture * AML Disassembler version 20140325-64 [Mar 25 2014] * Copyright (c) 2000 - 2014 Intel Corporation * * Disassembly of /tmp/fwts_iasl_27987_DSDT.dat, Tue Mar 25 20:18:15 2014 * * Original Table Header: * Signature "DSDT" * Length 0x00005FF4 (24564) * Revision 0x02 * Checksum 0x11 * OEM ID "TOSCPL" * OEM Table ID "CRESTLNE" * OEM Revision 0x06040000 (100925440) * Compiler ID "INTL" * Compiler Version 0x20060608 (537265672) */ DefinitionBlock ("/tmp/fwts_iasl_27987_DSDT.aml", "DSDT", 2, "TOSCPL", "CRESTLNE", 0x06040000) { External (_PR_.CPU0._PPC, UnknownObj) External (CFGD, UnknownObj) External (PDC0, UnknownObj) External (PDC1, UnknownObj) Name (Z000, One) Name (Z001, 0x02) Name (Z002, 0x04) Name (Z003, 0x08) Name (Z004, Zero) Name (Z005, 0x0F) Name (Z006, 0x0D) Name (Z007, 0x0B) Name (Z008, 0x09) Name (ECDY, 0x07) Mutex (MUTX, 0x00) OperationRegion (PRT0, SystemIO, 0x80, 0x04) Field (PRT0, DWordAcc, Lock, Preserve) { P80H, 32 } Method (P8XH, 2, Serialized) { If (LEqual (Arg0, Zero)) { Store (Or (And (P80D, 0xFFFFFF00), Arg1), P80D) /* \P80D */ } If (LEqual (Arg0, One)) { Store (Or (And (P80D, 0xFFFF00FF), ShiftLeft (Arg1, 0x08) ), P80D) /* \P80D */ } If (LEqual (Arg0, 0x02)) { Store (Or (And (P80D, 0xFF00FFFF), ShiftLeft (Arg1, 0x10) ), P80D) /* \P80D */ } If (LEqual (Arg0, 0x03)) { Store (Or (And (P80D, 0x00FFFFFF), ShiftLeft (Arg1, 0x18) ), P80D) /* \P80D */ } Store (P80D, P80H) /* \P80H */ } Method (_PIC, 1, NotSerialized) // _PIC: Interrupt Model { Store (Arg0, GPIC) /* \GPIC */ } Method (_PTS, 1, NotSerialized) // _PTS: Prepare To Sleep { Store (Zero, P80D) /* \P80D */ P8XH (Zero, Arg0) If (LEqual (Arg0, 0x03)) { Store (One, \_SB.PCI0.LPCB.EC0.S3LD) } If (LEqual (Arg0, 0x04)) { Store (One, \_SB.PCI0.LPCB.EC0.S3LD) \_SB.PCI0.LPCB.PHSS (0x0E) } } Method (_WAK, 1, NotSerialized) // _WAK: Wake { P8XH (One, 0xAB) If (LOr (LEqual (Arg0, 0x03), LEqual (Arg0, 0x04))) { If (And (CFGD, 0x01000000)) { If (LAnd (And (CFGD, 0xF0), LEqual (OSYS, 0x07D1))) { TRAP (0x3D) } } } If (LEqual (RP1D, Zero)) { Notify (\_SB.PCI0.RP01, Zero) // Bus Check } If (LEqual (RP2D, Zero)) { Notify (\_SB.PCI0.RP02, Zero) // Bus Check } If (LEqual (RP3D, Zero)) { Notify (\_SB.PCI0.RP03, Zero) // Bus Check } If (LEqual (RP4D, Zero)) { Notify (\_SB.PCI0.RP04, Zero) // Bus Check } If (LEqual (RP5D, Zero)) { Notify (\_SB.PCI0.RP05, Zero) // Bus Check } If (LEqual (RP6D, Zero)) { Notify (\_SB.PCI0.RP06, Zero) // Bus Check } If (LEqual (Arg0, 0x03)) { P8XH (Zero, 0x30) TRAP (0x46) } If (LEqual (Arg0, 0x04)) { P8XH (Zero, 0x40) \_SB.PCI0.LPCB.PHSS (0x0F) Store (WAKF, Local0) Store (Zero, WAKF) /* \WAKF */ And (Local0, 0x05, Local0) If (LEqual (Local0, One)) { P8XH (Zero, 0x41) Notify (\_SB.PWRB, 0x02) // Device Wake } If (DTSE) { TRAP (0x47) If (LAnd (\_SB.PCI0.LPCB.ECOK (), LEqual (ECDY, Zero))) { If (LGreaterEqual (DTS1, DTS2)) { Store (DTS1, \_SB.PCI0.LPCB.EC0.SKTA) } Else { Store (DTS2, \_SB.PCI0.LPCB.EC0.SKTA) } } Else { \_SB.PCI0.LPCB.PHSS (0x10) } } } \_PR.RPPC () Return (Package (0x02) { Zero, Zero }) } Method (GETB, 3, Serialized) { Multiply (Arg0, 0x08, Local0) Multiply (Arg1, 0x08, Local1) CreateField (Arg2, Local0, Local1, TBF3) Return (TBF3) /* \GETB.TBF3 */ } Method (PNOT, 0, Serialized) { If (MPEN) { If (And (PDC0, 0x08)) { Notify (\_PR.CPU0, 0x80) // Performance Capability Change If (And (PDC0, 0x10)) { Sleep (0x64) Notify (\_PR.CPU0, 0x81) // C-State Change } } If (And (PDC1, 0x08)) { Notify (\_PR.CPU1, 0x80) // Performance Capability Change If (And (PDC1, 0x10)) { Sleep (0x64) Notify (\_PR.CPU1, 0x81) // C-State Change } } } Else { Notify (\_PR.CPU0, 0x80) // Performance Capability Change Sleep (0x64) Notify (\_PR.CPU0, 0x81) // C-State Change } } Method (TRAP, 1, Serialized) { Store (Arg0, SMIF) /* \SMIF */ Store (Zero, TRP0) /* \TRP0 */ Return (SMIF) /* \SMIF */ } Scope (_SB) { Method (_INI, 0, NotSerialized) // _INI: Initialize { Store (0x9999, MARK) /* \MARK */ If (DTSE) { TRAP (0x47) ^PCI0.LPCB.PHSS (0x10) } Store (0x07D0, OSYS) /* \OSYS */ If (CondRefOf (_OSI, Local0)) { If (_OSI ("Linux")) { Store (One, LINX) /* \LINX */ Store (Zero, ECDY) /* \ECDY */ } If (_OSI ("Windows 2001")) { Store (0x07D1, OSYS) /* \OSYS */ } If (_OSI ("Windows 2001 SP1")) { Store (0x07D1, OSYS) /* \OSYS */ } If (_OSI ("Windows 2001 SP2")) { Store (0x07D2, OSYS) /* \OSYS */ } If (_OSI ("Windows 2006")) { Store (0x07D6, OSYS) /* \OSYS */ } } If (LAnd (MPEN, LEqual (OSYS, 0x07D1))) { TRAP (0x3D) } TRAP (0x2B) } } OperationRegion (GNVS, SystemMemory, 0xBF6E2DBC, 0x0100) Field (GNVS, AnyAcc, Lock, Preserve) { OSYS, 16, SMIF, 8, PRM0, 8, PRM1, 8, SCIF, 8, PRM2, 8, PRM3, 8, LCKF, 8, PRM4, 8, PRM5, 8, P80D, 32, LIDS, 8, PWRS, 8, DBGS, 8, LINX, 8, Offset (0x14), ACT1, 8, ACTT, 8, PSVT, 8, TC1V, 8, TC2V, 8, TSPV, 8, CRTT, 8, DTSE, 8, DTS1, 8, DTS2, 8, Offset (0x28), APIC, 8, MPEN, 8, PCP0, 8, PCP1, 8, PPCM, 8, Offset (0x32), CMAP, 8, CMBP, 8, LPTP, 8, FDCP, 8, Offset (0x3C), IGDS, 8, TLST, 8, CADL, 8, PADL, 8, CSTE, 16, NSTE, 16, SSTE, 16, NDID, 8, DID1, 32, DID2, 32, DID3, 32, DID4, 32, DID5, 32, Offset (0x67), BLCS, 8, BRTL, 8, ALSE, 8, ALAF, 8, LLOW, 8, LHIH, 8, Offset (0x6E), EMAE, 8, EMAP, 16, EMAL, 16, Offset (0x74), MEFE, 8, Offset (0x78), TPMP, 8, TPME, 8, Offset (0x82), GTF0, 56, GTF2, 56, IDEM, 8, GTF1, 56, Offset (0xAA), ASLB, 32, IBTT, 8, IPAT, 8, ITVF, 8, ITVM, 8, IPSC, 8, IBLC, 8, IBIA, 8, ISSC, 8, I409, 8, I509, 8, I609, 8, I709, 8, IDMM, 8, IDMS, 8, IF1E, 8, HVCO, 8, NXD1, 32, NXD2, 32, MARK, 16, BRAD, 8, BTEN, 8, VVEN, 8, BGTL, 8, TMEE, 1, Offset (0xCD), SCU0, 1, SCU1, 1, SCU2, 1, SCU3, 1, Offset (0xCE), XKSP, 1, XKIN, 1, XKID, 1, XKOK, 1, Offset (0xCF), BGU1, 8, BST1, 8, BFC1, 16, WKLN, 8, WAKF, 8, DSMD, 8, BAYS, 8, HAPE, 1, Offset (0xD8), DTSM, 1, Offset (0xD9), ODT1, 8, ODT2, 8, DTSW, 8 } Name (DSEN, One) Name (ECON, Zero) Name (GPIC, Zero) Name (CTYP, Zero) Name (L01C, Zero) Name (VFN0, Zero) Name (VFN1, Zero) Scope (_GPE) { Method (_L01, 0, NotSerialized) // _Lxx: Level-Triggered GPE { Add (L01C, One, L01C) /* \L01C */ P8XH (Zero, One) P8XH (One, L01C) If (LAnd (LEqual (RP1D, Zero), \_SB.PCI0.RP01.HPSX)) { Sleep (0x64) If (\_SB.PCI0.RP01.PDCX) { Store (One, \_SB.PCI0.RP01.PDCX) Store (One, \_SB.PCI0.RP01.HPSX) Notify (\_SB.PCI0.RP01, Zero) // Bus Check } Else { Store (One, \_SB.PCI0.RP01.HPSX) } } If (LAnd (LEqual (RP2D, Zero), \_SB.PCI0.RP02.HPSX)) { Sleep (0x64) If (\_SB.PCI0.RP02.PDCX) { Store (One, \_SB.PCI0.RP02.PDCX) Store (One, \_SB.PCI0.RP02.HPSX) Notify (\_SB.PCI0.RP02, Zero) // Bus Check } Else { Store (One, \_SB.PCI0.RP02.HPSX) } } If (LAnd (LEqual (RP3D, Zero), \_SB.PCI0.RP03.HPSX)) { Sleep (0x64) If (\_SB.PCI0.RP03.PDCX) { Store (One, \_SB.PCI0.RP03.PDCX) Store (One, \_SB.PCI0.RP03.HPSX) Notify (\_SB.PCI0.RP03, Zero) // Bus Check } Else { Store (One, \_SB.PCI0.RP03.HPSX) } } If (LAnd (LEqual (RP4D, Zero), \_SB.PCI0.RP04.HPSX)) { Sleep (0x64) If (\_SB.PCI0.RP04.PDCX) { Store (One, \_SB.PCI0.RP04.PDCX) Store (One, \_SB.PCI0.RP04.HPSX) Notify (\_SB.PCI0.RP04, Zero) // Bus Check } Else { Store (One, \_SB.PCI0.RP04.HPSX) } } If (LAnd (LEqual (RP5D, Zero), \_SB.PCI0.RP05.HPSX)) { Sleep (0x64) If (\_SB.PCI0.RP05.PDCX) { Store (One, \_SB.PCI0.RP05.PDCX) Store (One, \_SB.PCI0.RP05.HPSX) Notify (\_SB.PCI0.RP05, Zero) // Bus Check } Else { Store (One, \_SB.PCI0.RP05.HPSX) } } If (LAnd (LEqual (RP6D, Zero), \_SB.PCI0.RP06.HPSX)) { Sleep (0x64) If (\_SB.PCI0.RP06.PDCX) { Store (One, \_SB.PCI0.RP06.PDCX) Store (One, \_SB.PCI0.RP06.HPSX) Notify (\_SB.PCI0.RP06, Zero) // Bus Check } Else { Store (One, \_SB.PCI0.RP06.HPSX) } } } Method (_L02, 0, NotSerialized) // _Lxx: Level-Triggered GPE { Store (Zero, GPEC) /* \GPEC */ If (\_SB.PCI0.LPCB.ECOK ()) { If (LEqual (DTSW, One)) { If (LGreaterEqual (DTS1, DTS2)) { Store (DTS1, \_SB.PCI0.LPCB.EC0.SKTA) } Else { Store (DTS2, \_SB.PCI0.LPCB.EC0.SKTA) } } Else { If (LGreaterEqual (ODT1, ODT2)) { Store (ODT1, \_SB.PCI0.LPCB.EC0.SKTA) } Else { Store (ODT2, \_SB.PCI0.LPCB.EC0.SKTA) } } } Else { \_SB.PCI0.LPCB.PHSS (0x10) } } Method (_L03, 0, NotSerialized) // _Lxx: Level-Triggered GPE { Notify (\_SB.PCI0.USB1, 0x02) // Device Wake } Method (_L04, 0, NotSerialized) // _Lxx: Level-Triggered GPE { Notify (\_SB.PCI0.USB2, 0x02) // Device Wake } Method (_L05, 0, NotSerialized) // _Lxx: Level-Triggered GPE { Notify (\_SB.PCI0.USB5, 0x02) // Device Wake } Method (_L06, 0, NotSerialized) // _Lxx: Level-Triggered GPE { If (\_SB.PCI0.GFX0.GSSE) { \_SB.PCI0.GFX0.GSCI () } Else { Store (One, SCIS) /* \SCIS */ } } Method (_L09, 0, NotSerialized) // _Lxx: Level-Triggered GPE { If (\_SB.PCI0.RP01.PSPX) { Store (One, \_SB.PCI0.RP01.PSPX) Store (One, \_SB.PCI0.RP01.PMSX) Notify (\_SB.PCI0.RP01, 0x02) // Device Wake } If (\_SB.PCI0.RP02.PSPX) { Store (One, \_SB.PCI0.RP02.PSPX) Store (One, \_SB.PCI0.RP02.PMSX) Notify (\_SB.PCI0.RP02, 0x02) // Device Wake } If (\_SB.PCI0.RP03.PSPX) { Store (One, \_SB.PCI0.RP03.PSPX) Store (One, \_SB.PCI0.RP03.PMSX) Notify (\_SB.PCI0.RP03, 0x02) // Device Wake } If (\_SB.PCI0.RP04.PSPX) { Store (One, \_SB.PCI0.RP04.PSPX) Store (One, \_SB.PCI0.RP04.PMSX) Notify (\_SB.PCI0.RP04, 0x02) // Device Wake } If (\_SB.PCI0.RP05.PSPX) { Store (One, \_SB.PCI0.RP05.PSPX) Store (One, \_SB.PCI0.RP05.PMSX) Notify (\_SB.PCI0.RP05, 0x02) // Device Wake } If (\_SB.PCI0.RP06.PSPX) { Store (One, \_SB.PCI0.RP06.PSPX) Store (One, \_SB.PCI0.RP06.PMSX) Notify (\_SB.PCI0.RP06, 0x02) // Device Wake } } Method (_L0B, 0, NotSerialized) // _Lxx: Level-Triggered GPE { Notify (\_SB.PCI0.PCIB, 0x02) // Device Wake } Method (_L0C, 0, NotSerialized) // _Lxx: Level-Triggered GPE { Notify (\_SB.PCI0.USB3, 0x02) // Device Wake } Method (_L0D, 0, NotSerialized) // _Lxx: Level-Triggered GPE { If (\_SB.PCI0.EHC1.PMES) { Store (One, \_SB.PCI0.EHC1.PMES) Notify (\_SB.PCI0.EHC1, 0x02) // Device Wake } If (\_SB.PCI0.EHC2.PMES) { Store (One, \_SB.PCI0.EHC2.PMES) Notify (\_SB.PCI0.EHC2, 0x02) // Device Wake } If (\_SB.PCI0.HDEF.PMES) { Store (One, \_SB.PCI0.HDEF.PMES) Notify (\_SB.PCI0.HDEF, 0x02) // Device Wake } } Method (_L0E, 0, NotSerialized) // _Lxx: Level-Triggered GPE { Notify (\_SB.PCI0.USB4, 0x02) // Device Wake } Method (_L1B, 0, NotSerialized) // _Lxx: Level-Triggered GPE { Not (LPOL, LPOL) /* \LPOL */ Notify (\_SB.LID0, 0x80) // Status Change } } Scope (_PR) { Processor (CPU0, 0x00, 0x00001010, 0x06) {} Processor (CPU1, 0x01, 0x00001010, 0x06) {} Method (RPPC, 0, NotSerialized) { If (LEqual (OSYS, 0x07D2)) { If (And (CFGD, One)) { If (LGreater (^CPU0._PPC, Zero)) { Subtract (^CPU0._PPC, One, ^CPU0._PPC) /* External reference */ PNOT () Add (^CPU0._PPC, One, ^CPU0._PPC) /* External reference */ PNOT () } Else { Add (^CPU0._PPC, One, ^CPU0._PPC) /* External reference */ PNOT () Subtract (^CPU0._PPC, One, ^CPU0._PPC) /* External reference */ PNOT () } } } } } Name (FWSO, "FWSO") Name (_PSC, Zero) // _PSC: Power State Current Method (_PS0, 0, NotSerialized) // _PS0: Power State 0 { Store (_PSC, Local0) Store (Zero, _PSC) /* \_PSC */ } Method (_PS3, 0, NotSerialized) // _PS3: Power State 3 { Store (0x03, _PSC) /* \_PSC */ } Scope (_SB) { Device (AMW0) { Name (_HID, "pnp0c14") // _HID: Hardware ID Name (_UID, Zero) // _UID: Unique ID Name (_WDG, Buffer (0x3C) { /* 0000 */ 0xA7, 0x1D, 0x85, 0x2E, 0x53, 0xD0, 0x5F, 0x49, /* 0008 */ 0x9D, 0xFA, 0x1A, 0x4A, 0xD6, 0x2E, 0x6A, 0x86, /* 0010 */ 0x41, 0x43, 0x01, 0x00, 0x3B, 0x6D, 0x43, 0x71, /* 0018 */ 0xDD, 0xFB, 0x72, 0x4C, 0xBC, 0xB8, 0x43, 0x5B, /* 0020 */ 0xFE, 0x0D, 0x64, 0xF9, 0x42, 0x43, 0x01, 0x00, /* 0028 */ 0x21, 0x12, 0x90, 0x05, 0x66, 0xD5, 0xD1, 0x11, /* 0030 */ 0xB2, 0xF0, 0x00, 0xA0, 0xC9, 0x06, 0x29, 0x10, /* 0038 */ 0x42, 0x41, 0x01, 0x00 }) Name (STAC, Buffer (0x04) { 0x01, 0x14, 0x03, 0x00 }) Method (WQAC, 1, NotSerialized) { Store ("MXMTCConfigData", Debug) Return (STAC) /* \_SB_.AMW0.STAC */ } Name (STBC, Buffer (0x04) { 0x01, 0x00, 0x00, 0x00 }) Method (WQBC, 1, NotSerialized) { Store ("Get MXMTCControlData: STBC = ", Debug) Store (STBC, Debug) Return (STBC) /* \_SB_.AMW0.STBC */ } Method (WSBC, 2, NotSerialized) { Store (Arg1, STBC) /* \_SB_.AMW0.STBC */ Store ("Set MXMTCControlData: STBC = ", Debug) Store (STBC, Debug) If (LEqual (^^PCI0.LPCB.ECOK (), One)) { Store (DerefOf (Index (STBC, One)), ^^PCI0.LPCB.EC0.SKTC) /* \_SB_.PCI0.LPCB.EC0_.SKTC */ } } Name (WQBA, Buffer (0x02AE) { /* 0000 */ 0x46, 0x4F, 0x4D, 0x42, 0x01, 0x00, 0x00, 0x00, /* 0008 */ 0x9E, 0x02, 0x00, 0x00, 0xC0, 0x0B, 0x00, 0x00, /* 0010 */ 0x44, 0x53, 0x00, 0x01, 0x1A, 0x7D, 0xDA, 0x54, /* 0018 */ 0x28, 0xD9, 0x85, 0x00, 0x01, 0x06, 0x18, 0x42, /* 0020 */ 0x10, 0x07, 0x10, 0x0A, 0x4B, 0x61, 0x02, 0xC9, /* 0028 */ 0x21, 0x52, 0x3C, 0x18, 0x94, 0x05, 0x10, 0x43, /* 0030 */ 0x88, 0x57, 0x04, 0x44, 0x04, 0x84, 0xBC, 0x0A, /* 0038 */ 0xB0, 0x29, 0xC0, 0x24, 0x88, 0xFA, 0xF7, 0x87, /* 0040 */ 0x28, 0x09, 0x0E, 0x25, 0x04, 0x42, 0x12, 0x05, /* 0048 */ 0x98, 0x17, 0xA0, 0x5B, 0x80, 0x61, 0x01, 0xB6, /* 0050 */ 0x05, 0x98, 0x16, 0xE0, 0x18, 0x92, 0x4A, 0x03, /* 0058 */ 0xA7, 0x04, 0x96, 0x02, 0x21, 0xA1, 0x02, 0x94, /* 0060 */ 0x0B, 0xF0, 0x2D, 0x40, 0x3B, 0xA2, 0x24, 0x0B, /* 0068 */ 0xB0, 0x0C, 0x23, 0x02, 0x8F, 0x82, 0xA1, 0x71, /* 0070 */ 0x68, 0xEC, 0x30, 0x2C, 0x13, 0x4C, 0x83, 0x38, /* 0078 */ 0x8C, 0xB2, 0x91, 0x45, 0x60, 0xDC, 0x4E, 0x05, /* 0080 */ 0xC8, 0x15, 0x20, 0x4C, 0x80, 0x78, 0x54, 0x61, /* 0088 */ 0x34, 0x07, 0x45, 0xE0, 0x42, 0x63, 0x64, 0x40, /* 0090 */ 0xC8, 0xA3, 0x00, 0xAB, 0xA3, 0xD0, 0xA4, 0x12, /* 0098 */ 0xD8, 0xBD, 0x00, 0x65, 0x02, 0x2C, 0x0A, 0x10, /* 00A0 */ 0x27, 0xC0, 0x9A, 0x00, 0x63, 0x48, 0x32, 0x28, /* 00A8 */ 0x40, 0x9B, 0x00, 0x5B, 0x20, 0x42, 0x0F, 0xD4, /* 00B0 */ 0x19, 0x8A, 0x46, 0x70, 0x02, 0x51, 0x6A, 0x46, /* 00B8 */ 0x11, 0x48, 0xAC, 0x1A, 0x01, 0x85, 0x12, 0x34, /* 00C0 */ 0x46, 0xB0, 0x10, 0x81, 0xC2, 0x86, 0x37, 0x46, /* 00C8 */ 0x98, 0x03, 0x88, 0xD1, 0xFE, 0x20, 0x48, 0x20, /* 00D0 */ 0x05, 0xE3, 0x66, 0x91, 0x46, 0x83, 0x1A, 0x6B, /* 00D8 */ 0x82, 0x63, 0xF7, 0x68, 0x4E, 0xB8, 0x73, 0x01, /* 00E0 */ 0xD2, 0xE7, 0x26, 0x90, 0xA3, 0x3B, 0xB8, 0x3A, /* 00E8 */ 0x07, 0x4D, 0x86, 0xC7, 0xB0, 0x1E, 0x06, 0xD8, /* 00F0 */ 0x29, 0x00, 0xEF, 0x1A, 0x50, 0xD3, 0x3F, 0x78, /* 00F8 */ 0x26, 0x08, 0x0E, 0x35, 0x44, 0x8F, 0x3A, 0xDC, /* 0100 */ 0x09, 0x1C, 0xFB, 0x91, 0x30, 0x88, 0xB3, 0x3B, /* 0108 */ 0x6E, 0xAC, 0xC3, 0xC9, 0x68, 0xD0, 0xA5, 0x0A, /* 0110 */ 0x30, 0x7B, 0x00, 0xD0, 0xD0, 0x12, 0x9C, 0xF6, /* 0118 */ 0x99, 0x84, 0x7E, 0x0F, 0x38, 0x9F, 0x9E, 0x21, /* 0120 */ 0x89, 0xFC, 0x41, 0xA0, 0x46, 0xE6, 0xFF, 0x3F, /* 0128 */ 0xB4, 0xC7, 0x78, 0x5A, 0x31, 0x43, 0x3E, 0x0B, /* 0130 */ 0x1C, 0x16, 0x13, 0x0B, 0xA1, 0x4D, 0x6A, 0x3C, /* 0138 */ 0x40, 0x40, 0xE1, 0xD1, 0x40, 0x08, 0x6F, 0x06, /* 0140 */ 0x9E, 0xAF, 0x09, 0x46, 0x86, 0x90, 0x93, 0xF1, /* 0148 */ 0xA0, 0x06, 0xE0, 0x41, 0xD7, 0x3A, 0x32, 0x8D, /* 0150 */ 0x27, 0xA6, 0x21, 0xCF, 0xE8, 0x00, 0x22, 0xBF, /* 0158 */ 0x32, 0x78, 0x0C, 0x41, 0x02, 0xF9, 0xC4, 0x60, /* 0160 */ 0xB8, 0xC7, 0x81, 0x13, 0x78, 0x02, 0xF0, 0x59, /* 0168 */ 0x40, 0x10, 0x92, 0x00, 0x21, 0x51, 0xE3, 0xA7, /* 0170 */ 0x47, 0x08, 0x7E, 0x7A, 0x78, 0x93, 0x30, 0x28, /* 0178 */ 0x1F, 0xD2, 0x99, 0xF9, 0x90, 0xE1, 0x11, 0xC2, /* 0180 */ 0x07, 0xC4, 0x7B, 0x9F, 0x3B, 0x19, 0xC1, 0x29, /* 0188 */ 0x7B, 0xA4, 0xE0, 0xB0, 0x7E, 0x0E, 0x20, 0xC0, /* 0190 */ 0xAF, 0x0F, 0x8F, 0x0D, 0x09, 0x7C, 0xAE, 0x08, /* 0198 */ 0x8C, 0x1D, 0xAA, 0xFD, 0x0A, 0x40, 0x08, 0x1E, /* 01A0 */ 0xED, 0x51, 0xE0, 0x54, 0x23, 0x1C, 0x2D, 0x78, /* 01A8 */ 0x08, 0x8A, 0x1C, 0x03, 0x4A, 0xCC, 0x18, 0x50, /* 01B0 */ 0x03, 0x38, 0x85, 0xD0, 0xE7, 0x73, 0x04, 0x47, /* 01B8 */ 0x14, 0x25, 0xF6, 0x21, 0x19, 0xDA, 0x08, 0xE1, /* 01C0 */ 0x1F, 0x39, 0x4E, 0xC1, 0xF7, 0x8B, 0x23, 0x3D, /* 01C8 */ 0xAD, 0x23, 0x78, 0x91, 0xF0, 0x08, 0x30, 0xE1, /* 01D0 */ 0xCE, 0x28, 0xA8, 0x38, 0x30, 0xF4, 0xFF, 0x7F, /* 01D8 */ 0x4C, 0x01, 0xDC, 0x7A, 0x3B, 0xA6, 0x80, 0x3E, /* 01E0 */ 0xC0, 0x31, 0x05, 0x50, 0xFC, 0xFF, 0x3F, 0xA6, /* 01E8 */ 0x00, 0x87, 0xA8, 0xC7, 0x14, 0xF4, 0x40, 0x0C, /* 01F0 */ 0x7C, 0x2E, 0xA1, 0x0D, 0xFF, 0x96, 0xC1, 0x8E, /* 01F8 */ 0x03, 0x87, 0x74, 0x6A, 0x8F, 0x28, 0x80, 0x29, /* 0200 */ 0x79, 0x47, 0x14, 0x50, 0x8C, 0x14, 0xD6, 0xF1, /* 0208 */ 0x04, 0x18, 0x05, 0x3C, 0x9B, 0xA0, 0x22, 0x1D, /* 0210 */ 0x4F, 0x80, 0xCE, 0xFF, 0xFF, 0x78, 0x02, 0x58, /* 0218 */ 0xB8, 0x9A, 0xBC, 0x92, 0x84, 0x7D, 0x1E, 0x78, /* 0220 */ 0x1D, 0x89, 0x14, 0xE3, 0x41, 0xE2, 0xB5, 0xE4, /* 0228 */ 0xC1, 0x24, 0x46, 0x98, 0x08, 0x8F, 0x27, 0x1E, /* 0230 */ 0x47, 0xC0, 0xB7, 0x82, 0x28, 0x91, 0x8E, 0x3E, /* 0238 */ 0xC4, 0x83, 0x49, 0x28, 0x63, 0x3E, 0xA3, 0x84, /* 0240 */ 0x89, 0xF9, 0x04, 0x70, 0x22, 0xEF, 0x27, 0x46, /* 0248 */ 0x0A, 0x73, 0x2A, 0x8F, 0x27, 0x2C, 0xC4, 0xF1, /* 0250 */ 0x04, 0xA0, 0x85, 0xE2, 0xE3, 0x09, 0x3A, 0x2C, /* 0258 */ 0x84, 0xFE, 0xFF, 0xC7, 0x13, 0xDC, 0xE1, 0xC1, /* 0260 */ 0xA7, 0x0C, 0xFC, 0x85, 0x0C, 0xC6, 0xF9, 0x04, /* 0268 */ 0x30, 0x24, 0xF0, 0x7C, 0x02, 0xCA, 0xDB, 0x18, /* 0270 */ 0xE6, 0x80, 0x02, 0x8C, 0x14, 0xDA, 0xF4, 0xA9, /* 0278 */ 0xD1, 0xA8, 0x55, 0x83, 0x32, 0x35, 0xCA, 0x34, /* 0280 */ 0xA8, 0xD5, 0xA7, 0x52, 0x63, 0xC6, 0x4C, 0x9C, /* 0288 */ 0x52, 0xBC, 0x6C, 0x8D, 0xDF, 0xF2, 0x9E, 0x09, /* 0290 */ 0x02, 0xB1, 0x20, 0x0A, 0x81, 0x38, 0xCC, 0xF3, /* 0298 */ 0x42, 0x20, 0x96, 0xA2, 0x01, 0x84, 0x85, 0x06, /* 02A0 */ 0xA1, 0x42, 0xA9, 0x05, 0xE2, 0x98, 0x20, 0x34, /* 02A8 */ 0x92, 0x0A, 0x10, 0xF6, 0xFF, 0x07 }) } Device (LID0) { Name (_HID, EisaId ("PNP0C0D") /* Lid Device */) // _HID: Hardware ID Method (_LID, 0, NotSerialized) // _LID: Lid Status { Return (LPOL) /* \LPOL */ } } Device (PWRB) { Name (_HID, EisaId ("PNP0C0C") /* Power Button Device */) // _HID: Hardware ID } Device (PCI0) { Method (_S3D, 0, NotSerialized) // _S3D: S3 Device State { Return (0x02) } Method (_S4D, 0, NotSerialized) // _S4D: S4 Device State { Return (0x02) } Name (_HID, EisaId ("PNP0A08") /* PCI Express Bus */) // _HID: Hardware ID Name (_CID, EisaId ("PNP0A03") /* PCI Bus */) // _CID: Compatible ID Device (MCHC) { Name (_ADR, Zero) // _ADR: Address OperationRegion (HBUS, PCI_Config, 0x40, 0xC0) Field (HBUS, DWordAcc, NoLock, Preserve) { EPEN, 1, , 11, EPBR, 20, Offset (0x08), MHEN, 1, , 13, MHBR, 18, Offset (0x20), PXEN, 1, PXSZ, 2, , 23, PXBR, 6, Offset (0x28), DIEN, 1, , 11, DIBR, 20, Offset (0x30), IPEN, 1, , 11, IPBR, 20, Offset (0x50), , 4, PM0H, 2, Offset (0x51), PM1L, 2, , 2, PM1H, 2, Offset (0x52), PM2L, 2, , 2, PM2H, 2, Offset (0x53), PM3L, 2, , 2, PM3H, 2, Offset (0x54), PM4L, 2, , 2, PM4H, 2, Offset (0x55), PM5L, 2, , 2, PM5H, 2, Offset (0x56), PM6L, 2, , 2, PM6H, 2, Offset (0x57), , 7, HENA, 1, Offset (0x62), TUUD, 16, Offset (0x70), , 4, TLUD, 12 } } Name (BUF0, ResourceTemplate () { WordBusNumber (ResourceProducer, MinFixed, MaxFixed, PosDecode, 0x0000, // Granularity 0x0000, // Range Minimum 0x00FF, // Range Maximum 0x0000, // Translation Offset 0x0100, // Length ,, ) DWordIO (ResourceProducer, MinFixed, MaxFixed, PosDecode, EntireRange, 0x00000000, // Granularity 0x00000000, // Range Minimum 0x00000CF7, // Range Maximum 0x00000000, // Translation Offset 0x00000CF8, // Length ,, , TypeStatic) IO (Decode16, 0x0CF8, // Range Minimum 0x0CF8, // Range Maximum 0x01, // Alignment 0x08, // Length ) DWordIO (ResourceProducer, MinFixed, MaxFixed, PosDecode, EntireRange, 0x00000000, // Granularity 0x00000D00, // Range Minimum 0x0000FFFF, // Range Maximum 0x00000000, // Translation Offset 0x0000F300, // Length ,, , TypeStatic) DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite, 0x00000000, // Granularity 0x000A0000, // Range Minimum 0x000BFFFF, // Range Maximum 0x00000000, // Translation Offset 0x00020000, // Length ,, , AddressRangeMemory, TypeStatic) DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite, 0x00000000, // Granularity 0x000C0000, // Range Minimum 0x000C3FFF, // Range Maximum 0x00000000, // Translation Offset 0x00004000, // Length ,, _Y00, AddressRangeMemory, TypeStatic) DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite, 0x00000000, // Granularity 0x000C4000, // Range Minimum 0x000C7FFF, // Range Maximum 0x00000000, // Translation Offset 0x00004000, // Length ,, _Y01, AddressRangeMemory, TypeStatic) DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite, 0x00000000, // Granularity 0x000C8000, // Range Minimum 0x000CBFFF, // Range Maximum 0x00000000, // Translation Offset 0x00004000, // Length ,, _Y02, AddressRangeMemory, TypeStatic) DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite, 0x00000000, // Granularity 0x000CC000, // Range Minimum 0x000CFFFF, // Range Maximum 0x00000000, // Translation Offset 0x00004000, // Length ,, _Y03, AddressRangeMemory, TypeStatic) DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite, 0x00000000, // Granularity 0x000D0000, // Range Minimum 0x000D3FFF, // Range Maximum 0x00000000, // Translation Offset 0x00004000, // Length ,, _Y04, AddressRangeMemory, TypeStatic) DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite, 0x00000000, // Granularity 0x000D4000, // Range Minimum 0x000D7FFF, // Range Maximum 0x00000000, // Translation Offset 0x00004000, // Length ,, _Y05, AddressRangeMemory, TypeStatic) DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite, 0x00000000, // Granularity 0x000D8000, // Range Minimum 0x000DBFFF, // Range Maximum 0x00000000, // Translation Offset 0x00004000, // Length ,, _Y06, AddressRangeMemory, TypeStatic) DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite, 0x00000000, // Granularity 0x000DC000, // Range Minimum 0x000DFFFF, // Range Maximum 0x00000000, // Translation Offset 0x00004000, // Length ,, _Y07, AddressRangeMemory, TypeStatic) DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite, 0x00000000, // Granularity 0x000E0000, // Range Minimum 0x000E3FFF, // Range Maximum 0x00000000, // Translation Offset 0x00004000, // Length ,, _Y08, AddressRangeMemory, TypeStatic) DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite, 0x00000000, // Granularity 0x000E4000, // Range Minimum 0x000E7FFF, // Range Maximum 0x00000000, // Translation Offset 0x00004000, // Length ,, _Y09, AddressRangeMemory, TypeStatic) DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite, 0x00000000, // Granularity 0x000E8000, // Range Minimum 0x000EBFFF, // Range Maximum 0x00000000, // Translation Offset 0x00004000, // Length ,, _Y0A, AddressRangeMemory, TypeStatic) DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite, 0x00000000, // Granularity 0x000EC000, // Range Minimum 0x000EFFFF, // Range Maximum 0x00000000, // Translation Offset 0x00004000, // Length ,, _Y0B, AddressRangeMemory, TypeStatic) DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite, 0x00000000, // Granularity 0x000F0000, // Range Minimum 0x000FFFFF, // Range Maximum 0x00000000, // Translation Offset 0x00010000, // Length ,, _Y0C, AddressRangeMemory, TypeStatic) DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite, 0x00000000, // Granularity 0x00000000, // Range Minimum 0xDFFFFFFF, // Range Maximum 0x00000000, // Translation Offset 0x00000000, // Length ,, _Y0D, AddressRangeMemory, TypeStatic) DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite, 0x00000000, // Granularity 0xF0000000, // Range Minimum 0xFEBFFFFF, // Range Maximum 0x00000000, // Translation Offset 0x0EC00000, // Length ,, _Y0E, AddressRangeMemory, TypeStatic) DWordMemory (ResourceProducer, PosDecode, MinFixed, MaxFixed, Cacheable, ReadWrite, 0x00000000, // Granularity 0xFED40000, // Range Minimum 0xFED44FFF, // Range Maximum 0x00000000, // Translation Offset 0x00000000, // Length ,, , AddressRangeMemory, TypeStatic) }) Method (_CRS, 0, Serialized) // _CRS: Current Resource Settings { If (^MCHC.PM1L) { CreateDWordField (BUF0, \_SB.PCI0._Y00._LEN, C0LN) // _LEN: Length Store (Zero, C0LN) /* \_SB_.PCI0._CRS.C0LN */ } If (LEqual (^MCHC.PM1L, One)) { CreateBitField (BUF0, \_SB.PCI0._Y00._RW, C0RW) // _RW_: Read-Write Status Store (Zero, C0RW) /* \_SB_.PCI0._CRS.C0RW */ } If (^MCHC.PM1H) { CreateDWordField (BUF0, \_SB.PCI0._Y01._LEN, C4LN) // _LEN: Length Store (Zero, C4LN) /* \_SB_.PCI0._CRS.C4LN */ } If (LEqual (^MCHC.PM1H, One)) { CreateBitField (BUF0, \_SB.PCI0._Y01._RW, C4RW) // _RW_: Read-Write Status Store (Zero, C4RW) /* \_SB_.PCI0._CRS.C4RW */ } If (^MCHC.PM2L) { CreateDWordField (BUF0, \_SB.PCI0._Y02._LEN, C8LN) // _LEN: Length Store (Zero, C8LN) /* \_SB_.PCI0._CRS.C8LN */ } If (LEqual (^MCHC.PM2L, One)) { CreateBitField (BUF0, \_SB.PCI0._Y02._RW, C8RW) // _RW_: Read-Write Status Store (Zero, C8RW) /* \_SB_.PCI0._CRS.C8RW */ } If (^MCHC.PM2H) { CreateDWordField (BUF0, \_SB.PCI0._Y03._LEN, CCLN) // _LEN: Length Store (Zero, CCLN) /* \_SB_.PCI0._CRS.CCLN */ } If (LEqual (^MCHC.PM2H, One)) { CreateBitField (BUF0, \_SB.PCI0._Y03._RW, CCRW) // _RW_: Read-Write Status Store (Zero, CCRW) /* \_SB_.PCI0._CRS.CCRW */ } If (^MCHC.PM3L) { CreateDWordField (BUF0, \_SB.PCI0._Y04._LEN, D0LN) // _LEN: Length Store (Zero, D0LN) /* \_SB_.PCI0._CRS.D0LN */ } If (LEqual (^MCHC.PM3L, One)) { CreateBitField (BUF0, \_SB.PCI0._Y04._RW, D0RW) // _RW_: Read-Write Status Store (Zero, D0RW) /* \_SB_.PCI0._CRS.D0RW */ } If (^MCHC.PM3H) { CreateDWordField (BUF0, \_SB.PCI0._Y05._LEN, D4LN) // _LEN: Length Store (Zero, D4LN) /* \_SB_.PCI0._CRS.D4LN */ } If (LEqual (^MCHC.PM3H, One)) { CreateBitField (BUF0, \_SB.PCI0._Y05._RW, D4RW) // _RW_: Read-Write Status Store (Zero, D4RW) /* \_SB_.PCI0._CRS.D4RW */ } If (^MCHC.PM4L) { CreateDWordField (BUF0, \_SB.PCI0._Y06._LEN, D8LN) // _LEN: Length Store (Zero, D8LN) /* \_SB_.PCI0._CRS.D8LN */ } If (LEqual (^MCHC.PM4L, One)) { CreateBitField (BUF0, \_SB.PCI0._Y06._RW, D8RW) // _RW_: Read-Write Status Store (Zero, D8RW) /* \_SB_.PCI0._CRS.D8RW */ } If (^MCHC.PM4H) { CreateDWordField (BUF0, \_SB.PCI0._Y07._LEN, DCLN) // _LEN: Length Store (Zero, DCLN) /* \_SB_.PCI0._CRS.DCLN */ } If (LEqual (^MCHC.PM4H, One)) { CreateBitField (BUF0, \_SB.PCI0._Y07._RW, DCRW) // _RW_: Read-Write Status Store (Zero, DCRW) /* \_SB_.PCI0._CRS.DCRW */ } If (^MCHC.PM5L) { CreateDWordField (BUF0, \_SB.PCI0._Y08._LEN, E0LN) // _LEN: Length Store (Zero, E0LN) /* \_SB_.PCI0._CRS.E0LN */ } If (LEqual (^MCHC.PM5L, One)) { CreateBitField (BUF0, \_SB.PCI0._Y08._RW, E0RW) // _RW_: Read-Write Status Store (Zero, E0RW) /* \_SB_.PCI0._CRS.E0RW */ } If (^MCHC.PM5H) { CreateDWordField (BUF0, \_SB.PCI0._Y09._LEN, E4LN) // _LEN: Length Store (Zero, E4LN) /* \_SB_.PCI0._CRS.E4LN */ } If (LEqual (^MCHC.PM5H, One)) { CreateBitField (BUF0, \_SB.PCI0._Y09._RW, E4RW) // _RW_: Read-Write Status Store (Zero, E4RW) /* \_SB_.PCI0._CRS.E4RW */ } If (^MCHC.PM6L) { CreateDWordField (BUF0, \_SB.PCI0._Y0A._LEN, E8LN) // _LEN: Length Store (Zero, E8LN) /* \_SB_.PCI0._CRS.E8LN */ } If (LEqual (^MCHC.PM6L, One)) { CreateBitField (BUF0, \_SB.PCI0._Y0A._RW, E8RW) // _RW_: Read-Write Status Store (Zero, E8RW) /* \_SB_.PCI0._CRS.E8RW */ } If (^MCHC.PM6H) { CreateDWordField (BUF0, \_SB.PCI0._Y0B._LEN, ECLN) // _LEN: Length Store (Zero, ECLN) /* \_SB_.PCI0._CRS.ECLN */ } If (LEqual (^MCHC.PM6H, One)) { CreateBitField (BUF0, \_SB.PCI0._Y0B._RW, ECRW) // _RW_: Read-Write Status Store (Zero, ECRW) /* \_SB_.PCI0._CRS.ECRW */ } If (^MCHC.PM0H) { CreateDWordField (BUF0, \_SB.PCI0._Y0C._LEN, F0LN) // _LEN: Length Store (Zero, F0LN) /* \_SB_.PCI0._CRS.F0LN */ } If (LEqual (^MCHC.PM0H, One)) { CreateBitField (BUF0, \_SB.PCI0._Y0C._RW, F0RW) // _RW_: Read-Write Status Store (Zero, F0RW) /* \_SB_.PCI0._CRS.F0RW */ } CreateDWordField (BUF0, \_SB.PCI0._Y0D._MIN, M1MN) // _MIN: Minimum Base Address CreateDWordField (BUF0, \_SB.PCI0._Y0D._MAX, M1MX) // _MAX: Maximum Base Address CreateDWordField (BUF0, \_SB.PCI0._Y0D._LEN, M1LN) // _LEN: Length CreateDWordField (BUF0, \_SB.PCI0._Y0E._MIN, M2MN) // _MIN: Minimum Base Address CreateDWordField (BUF0, \_SB.PCI0._Y0E._MAX, M2MX) // _MAX: Maximum Base Address CreateDWordField (BUF0, \_SB.PCI0._Y0E._LEN, M2LN) // _LEN: Length ShiftLeft (^MCHC.PXBR, 0x1A, M1MX) /* \_SB_.PCI0._CRS.M1MX */ ShiftRight (0x10000000, ^MCHC.PXSZ, Local0) Add (M1MX, Local0, M2MN) /* \_SB_.PCI0._CRS.M2MN */ Add (Subtract (M2MX, M2MN), One, M2LN) /* \_SB_.PCI0._CRS.M2LN */ Subtract (M1MX, One, M1MX) /* \_SB_.PCI0._CRS.M1MX */ ShiftLeft (^MCHC.TLUD, 0x14, M1MN) /* \_SB_.PCI0._CRS.M1MN */ Add (Subtract (M1MX, M1MN), One, M1LN) /* \_SB_.PCI0._CRS.M1LN */ Return (BUF0) /* \_SB_.PCI0.BUF0 */ } Method (_PRT, 0, NotSerialized) // _PRT: PCI Routing Table { If (GPIC) { Return (Package (0x13) { Package (0x04) { 0x0001FFFF, Zero, Zero, 0x10 }, Package (0x04) { 0x0002FFFF, Zero, Zero, 0x10 }, Package (0x04) { 0x0007FFFF, Zero, Zero, 0x10 }, Package (0x04) { 0x0019FFFF, Zero, Zero, 0x14 }, Package (0x04) { 0x001AFFFF, Zero, Zero, 0x10 }, Package (0x04) { 0x001AFFFF, One, Zero, 0x15 }, Package (0x04) { 0x001AFFFF, 0x02, Zero, 0x12 }, Package (0x04) { 0x001BFFFF, Zero, Zero, 0x16 }, Package (0x04) { 0x001CFFFF, Zero, Zero, 0x11 }, Package (0x04) { 0x001CFFFF, One, Zero, 0x10 }, Package (0x04) { 0x001CFFFF, 0x02, Zero, 0x12 }, Package (0x04) { 0x001CFFFF, 0x03, Zero, 0x13 }, Package (0x04) { 0x001DFFFF, Zero, Zero, 0x17 }, Package (0x04) { 0x001DFFFF, One, Zero, 0x13 }, Package (0x04) { 0x001DFFFF, 0x02, Zero, 0x12 }, Package (0x04) { 0x001FFFFF, Zero, Zero, 0x13 }, Package (0x04) { 0x001FFFFF, One, Zero, 0x13 }, Package (0x04) { 0x001FFFFF, 0x02, Zero, 0x13 }, Package (0x04) { 0x001FFFFF, 0x03, Zero, 0x10 } }) } Else { Return (Package (0x13) { Package (0x04) { 0x0001FFFF, Zero, ^LPCB.LNKA, Zero }, Package (0x04) { 0x0002FFFF, Zero, ^LPCB.LNKA, Zero }, Package (0x04) { 0x0007FFFF, Zero, ^LPCB.LNKA, Zero }, Package (0x04) { 0x0019FFFF, Zero, ^LPCB.LNKE, Zero }, Package (0x04) { 0x001AFFFF, Zero, ^LPCB.LNKA, Zero }, Package (0x04) { 0x001AFFFF, One, ^LPCB.LNKF, Zero }, Package (0x04) { 0x001AFFFF, 0x02, ^LPCB.LNKC, Zero }, Package (0x04) { 0x001BFFFF, Zero, ^LPCB.LNKG, Zero }, Package (0x04) { 0x001CFFFF, Zero, ^LPCB.LNKB, Zero }, Package (0x04) { 0x001CFFFF, One, ^LPCB.LNKA, Zero }, Package (0x04) { 0x001CFFFF, 0x02, ^LPCB.LNKC, Zero }, Package (0x04) { 0x001CFFFF, 0x03, ^LPCB.LNKD, Zero }, Package (0x04) { 0x001DFFFF, Zero, ^LPCB.LNKH, Zero }, Package (0x04) { 0x001DFFFF, One, ^LPCB.LNKD, Zero }, Package (0x04) { 0x001DFFFF, 0x02, ^LPCB.LNKC, Zero }, Package (0x04) { 0x001FFFFF, Zero, ^LPCB.LNKD, Zero }, Package (0x04) { 0x001FFFFF, One, ^LPCB.LNKD, Zero }, Package (0x04) { 0x001FFFFF, 0x02, ^LPCB.LNKD, Zero }, Package (0x04) { 0x001FFFFF, 0x03, ^LPCB.LNKA, Zero } }) } } Device (PDRC) { Name (_HID, EisaId ("PNP0C02") /* PNP Motherboard Resources */) // _HID: Hardware ID Name (_UID, One) // _UID: Unique ID Name (BUF0, ResourceTemplate () { Memory32Fixed (ReadWrite, 0x00000000, // Address Base 0x00004000, // Address Length _Y0F) Memory32Fixed (ReadWrite, 0x00000000, // Address Base 0x00004000, // Address Length _Y10) Memory32Fixed (ReadWrite, 0x00000000, // Address Base 0x00001000, // Address Length _Y11) Memory32Fixed (ReadWrite, 0x00000000, // Address Base 0x00001000, // Address Length _Y12) Memory32Fixed (ReadWrite, 0x00000000, // Address Base 0x00000000, // Address Length _Y13) Memory32Fixed (ReadWrite, 0xFED20000, // Address Base 0x00020000, // Address Length ) Memory32Fixed (ReadWrite, 0xFED40000, // Address Base 0x00005000, // Address Length ) Memory32Fixed (ReadWrite, 0xFED45000, // Address Base 0x0004B000, // Address Length ) }) Method (_CRS, 0, Serialized) // _CRS: Current Resource Settings { CreateDWordField (BUF0, \_SB.PCI0.PDRC._Y0F._BAS, RBR0) // _BAS: Base Address ShiftLeft (^^LPCB.RCBA, 0x0E, RBR0) /* \_SB_.PCI0.PDRC._CRS.RBR0 */ CreateDWordField (BUF0, \_SB.PCI0.PDRC._Y10._BAS, MBR0) // _BAS: Base Address ShiftLeft (^^MCHC.MHBR, 0x0E, MBR0) /* \_SB_.PCI0.PDRC._CRS.MBR0 */ CreateDWordField (BUF0, \_SB.PCI0.PDRC._Y11._BAS, DBR0) // _BAS: Base Address ShiftLeft (^^MCHC.DIBR, 0x0C, DBR0) /* \_SB_.PCI0.PDRC._CRS.DBR0 */ CreateDWordField (BUF0, \_SB.PCI0.PDRC._Y12._BAS, EBR0) // _BAS: Base Address ShiftLeft (^^MCHC.EPBR, 0x0C, EBR0) /* \_SB_.PCI0.PDRC._CRS.EBR0 */ CreateDWordField (BUF0, \_SB.PCI0.PDRC._Y13._BAS, XBR0) // _BAS: Base Address ShiftLeft (^^MCHC.PXBR, 0x1A, XBR0) /* \_SB_.PCI0.PDRC._CRS.XBR0 */ CreateDWordField (BUF0, \_SB.PCI0.PDRC._Y13._LEN, XSZ0) // _LEN: Length ShiftRight (0x10000000, ^^MCHC.PXSZ, XSZ0) /* \_SB_.PCI0.PDRC._CRS.XSZ0 */ Return (BUF0) /* \_SB_.PCI0.PDRC.BUF0 */ } } Device (PEGP) { Name (_ADR, 0x00010000) // _ADR: Address Method (_PRT, 0, NotSerialized) // _PRT: PCI Routing Table { If (GPIC) { Return (Package (0x04) { Package (0x04) { 0xFFFF, Zero, Zero, 0x10 }, Package (0x04) { 0xFFFF, One, Zero, 0x11 }, Package (0x04) { 0xFFFF, 0x02, Zero, 0x12 }, Package (0x04) { 0xFFFF, 0x03, Zero, 0x13 } }) } Else { Return (Package (0x04) { Package (0x04) { 0xFFFF, Zero, ^^LPCB.LNKA, Zero }, Package (0x04) { 0xFFFF, One, ^^LPCB.LNKB, Zero }, Package (0x04) { 0xFFFF, 0x02, ^^LPCB.LNKC, Zero }, Package (0x04) { 0xFFFF, 0x03, ^^LPCB.LNKD, Zero } }) } } Device (VGA) { Name (_ADR, Zero) // _ADR: Address Name (SWIT, One) Name (CRTA, One) Name (LCDA, One) Name (TVAA, One) Name (VLDF, One) OperationRegion (VIDS, PCI_Config, Zero, 0xC8) Field (VIDS, DWordAcc, NoLock, Preserve) { VDID, 32 } Method (_STA, 0, NotSerialized) // _STA: Status { Return (0x0F) } Name (_PSC, Zero) // _PSC: Power State Current Method (_PS0, 0, NotSerialized) // _PS0: Power State 0 { Store (Zero, _PSC) /* \_SB_.PCI0.PEGP.VGA_._PSC */ } Method (_PS1, 0, NotSerialized) // _PS1: Power State 1 { Store (One, _PSC) /* \_SB_.PCI0.PEGP.VGA_._PSC */ } Method (_PS3, 0, NotSerialized) // _PS3: Power State 3 { Store (0x03, _PSC) /* \_SB_.PCI0.PEGP.VGA_._PSC */ } Method (_DOS, 1, NotSerialized) // _DOS: Disable Output Switching { Store (And (Arg0, 0x03), SWIT) /* \_SB_.PCI0.PEGP.VGA_.SWIT */ } Method (_DOD, 0, NotSerialized) // _DOD: Display Output Devices { Return (Package (0x03) { 0x00010100, 0x00010110, 0x0200 }) } Device (CRT) { Method (_ADR, 0, NotSerialized) // _ADR: Address { Return (0x0100) } Method (_DCS, 0, NotSerialized) // _DCS: Display Current Status { ^^^^LPCB.PHSS (0x0C) Store (CADL, Local0) Store (CSTE, Local1) And (Local0, 0x02, Local0) And (Local1, 0x02, Local1) If (Local0) { Store (One, CRTA) /* \_SB_.PCI0.PEGP.VGA_.CRTA */ } Else { Store (Zero, CRTA) /* \_SB_.PCI0.PEGP.VGA_.CRTA */ } If (CRTA) { If (LEqual (Local1, 0x02)) { Return (0x1F) } Else { Return (0x1D) } } Else { If (LEqual (Local1, 0x02)) { Return (0x0F) } Else { Return (0x0D) } } } Method (_DGS, 0, NotSerialized) // _DGS: Display Graphics State { If (CRTA) { Return (One) } Else { Return (Zero) } } Method (_DSS, 1, NotSerialized) // _DSS: Device Set State { } } Device (LCD) { Method (_ADR, 0, NotSerialized) // _ADR: Address { Return (0x0110) } Method (_DCS, 0, NotSerialized) // _DCS: Display Current Status { ^^^^LPCB.PHSS (0x0C) Store (CADL, Local0) Store (CSTE, Local1) And (Local0, One, Local0) And (Local1, One, Local1) If (Local0) { Store (One, LCDA) /* \_SB_.PCI0.PEGP.VGA_.LCDA */ } Else { Store (Zero, LCDA) /* \_SB_.PCI0.PEGP.VGA_.LCDA */ } If (LCDA) { If (LEqual (Local1, One)) { Return (0x1F) } Else { Return (0x1D) } } Else { If (LEqual (Local1, One)) { Return (0x0F) } Else { Return (0x0D) } } } Method (_DGS, 0, NotSerialized) // _DGS: Display Graphics State { If (LCDA) { Return (One) } Else { Return (Zero) } } Method (_DSS, 1, NotSerialized) // _DSS: Device Set State { } Method (_BCL, 0, NotSerialized) // _BCL: Brightness Control Levels { Return (Package (0x0A) { 0x46, 0x28, Zero, 0x0A, 0x14, 0x1E, 0x28, 0x32, 0x3C, 0x46 }) } Method (_BCM, 1, NotSerialized) // _BCM: Brightness Control Method { Divide (Arg0, 0x0A, Local0, Local1) Store (Local1, ^^^^LPCB.EC0.BRTS) /* \_SB_.PCI0.LPCB.EC0_.BRTS */ } Method (_BQC, 0, NotSerialized) // _BQC: Brightness Query Current { Multiply (^^^^LPCB.EC0.BRTS, 0x0A, Local0) Return (Local0) } } Device (TV) { Method (_ADR, 0, NotSerialized) // _ADR: Address { Return (0x0200) } Method (_DCS, 0, NotSerialized) // _DCS: Display Current Status { ^^^^LPCB.PHSS (0x0C) Store (CADL, Local0) Store (CSTE, Local1) And (Local0, 0x04, Local0) And (Local1, 0x04, Local1) If (Local0) { Store (One, TVAA) /* \_SB_.PCI0.PEGP.VGA_.TVAA */ } Else { Store (Zero, TVAA) /* \_SB_.PCI0.PEGP.VGA_.TVAA */ } If (TVAA) { If (LEqual (Local1, 0x04)) { Return (0x1F) } Else { Return (0x1D) } } Else { If (LEqual (Local1, 0x04)) { Return (0x0F) } Else { Return (0x0D) } } } Method (_DGS, 0, NotSerialized) // _DGS: Display Graphics State { If (TVAA) { Return (One) } Else { Return (Zero) } } Method (_DSS, 1, NotSerialized) // _DSS: Device Set State { } } Method (DSSW, 0, NotSerialized) { If (LEqual (SWIT, Zero)) { ^^^LPCB.PHSS (0x0C) Store (CADL, Local0) Store (CSTE, Local1) If (LGreater (Local1, One)) { And (Local0, Local1, VLDF) /* \_SB_.PCI0.PEGP.VGA_.VLDF */ And (VLDF, 0xFE, VLDF) /* \_SB_.PCI0.PEGP.VGA_.VLDF */ } If (VLDF) { If (LEqual (Local0, 0x09)) { If (LEqual (Local1, 0x08)) { STBL (0x02) } If (LEqual (Local1, One)) { STBL (0x03) } If (LEqual (Local1, 0x09)) { STBL (One) } } If (LEqual (Local0, 0x0A)) { If (LEqual (Local1, 0x08)) { STBL (0x05) } If (LEqual (Local1, 0x02)) { STBL (One) } If (LEqual (Local1, 0x0A)) { STBL (0x04) } } If (LEqual (Local0, 0x0B)) { If (LEqual (Local1, 0x08)) { STBL (0x02) } If (LEqual (Local1, 0x09)) { STBL (0x05) } If (LEqual (Local1, One)) { STBL (0x03) } If (LEqual (Local1, 0x0A)) { STBL (0x04) } If (LEqual (Local1, 0x02)) { STBL (One) } If (LEqual (Local1, 0x0B)) { STBL (One) } } } Else { Store (One, VLDF) /* \_SB_.PCI0.PEGP.VGA_.VLDF */ STBL (One) } } Else { If (LEqual (SWIT, One)) { ^^^LPCB.PHSS (One) } } } Method (STBL, 1, NotSerialized) { If (LEqual (Arg0, One)) { Store (Zero, CRTA) /* \_SB_.PCI0.PEGP.VGA_.CRTA */ Store (One, LCDA) /* \_SB_.PCI0.PEGP.VGA_.LCDA */ Store (Zero, TVAA) /* \_SB_.PCI0.PEGP.VGA_.TVAA */ } If (LEqual (Arg0, 0x02)) { Store (One, CRTA) /* \_SB_.PCI0.PEGP.VGA_.CRTA */ Store (Zero, LCDA) /* \_SB_.PCI0.PEGP.VGA_.LCDA */ Store (Zero, TVAA) /* \_SB_.PCI0.PEGP.VGA_.TVAA */ } If (LEqual (Arg0, 0x03)) { Store (One, CRTA) /* \_SB_.PCI0.PEGP.VGA_.CRTA */ Store (One, LCDA) /* \_SB_.PCI0.PEGP.VGA_.LCDA */ Store (Zero, TVAA) /* \_SB_.PCI0.PEGP.VGA_.TVAA */ } If (LEqual (Arg0, 0x04)) { Store (Zero, CRTA) /* \_SB_.PCI0.PEGP.VGA_.CRTA */ Store (Zero, LCDA) /* \_SB_.PCI0.PEGP.VGA_.LCDA */ Store (One, TVAA) /* \_SB_.PCI0.PEGP.VGA_.TVAA */ } If (LEqual (Arg0, 0x05)) { Store (Zero, CRTA) /* \_SB_.PCI0.PEGP.VGA_.CRTA */ Store (One, LCDA) /* \_SB_.PCI0.PEGP.VGA_.LCDA */ Store (One, TVAA) /* \_SB_.PCI0.PEGP.VGA_.TVAA */ } If (LEqual (Arg0, 0x06)) { Store (One, CRTA) /* \_SB_.PCI0.PEGP.VGA_.CRTA */ Store (Zero, LCDA) /* \_SB_.PCI0.PEGP.VGA_.LCDA */ Store (One, TVAA) /* \_SB_.PCI0.PEGP.VGA_.TVAA */ } If (LEqual (Arg0, 0x07)) { Store (One, CRTA) /* \_SB_.PCI0.PEGP.VGA_.CRTA */ Store (One, LCDA) /* \_SB_.PCI0.PEGP.VGA_.LCDA */ Store (One, TVAA) /* \_SB_.PCI0.PEGP.VGA_.TVAA */ } Notify (VGA, 0x80) // Status Change } } } Device (GFX0) { Name (_ADR, 0x00020000) // _ADR: Address Method (_DOS, 1, NotSerialized) // _DOS: Disable Output Switching { Store (And (Arg0, 0x07), DSEN) /* \DSEN */ } Method (_DOD, 0, NotSerialized) // _DOD: Display Output Devices { Store (Zero, NDID) /* \NDID */ If (LNotEqual (DIDL, Zero)) { Store (SDDL (DID1), DID1) /* \DID1 */ } If (LNotEqual (DDL2, Zero)) { Store (SDDL (DID2), DID2) /* \DID2 */ } If (LNotEqual (DDL3, Zero)) { Store (SDDL (DID3), DID3) /* \DID3 */ } If (LNotEqual (DDL4, Zero)) { Store (SDDL (DID4), DID4) /* \DID4 */ } If (LNotEqual (DDL5, Zero)) { Store (SDDL (DID5), DID5) /* \DID5 */ } If (LEqual (NDID, One)) { Name (TMP1, Package (0x01) { 0xFFFFFFFF }) Store (Or (0x00010000, DID1), Index (TMP1, Zero)) Return (TMP1) /* \_SB_.PCI0.GFX0._DOD.TMP1 */ } If (LEqual (NDID, 0x02)) { Name (TMP2, Package (0x02) { 0xFFFFFFFF, 0xFFFFFFFF }) Store (Or (0x00010000, DID1), Index (TMP2, Zero)) Store (Or (0x00010000, DID2), Index (TMP2, One)) Return (TMP2) /* \_SB_.PCI0.GFX0._DOD.TMP2 */ } If (LEqual (NDID, 0x03)) { Name (TMP3, Package (0x03) { 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF }) Store (Or (0x00010000, DID1), Index (TMP3, Zero)) Store (Or (0x00010000, DID2), Index (TMP3, One)) Store (Or (0x00010000, DID3), Index (TMP3, 0x02)) Return (TMP3) /* \_SB_.PCI0.GFX0._DOD.TMP3 */ } If (LEqual (NDID, 0x04)) { Name (TMP4, Package (0x04) { 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF }) Store (Or (0x00010000, DID1), Index (TMP4, Zero)) Store (Or (0x00010000, DID2), Index (TMP4, One)) Store (Or (0x00010000, DID3), Index (TMP4, 0x02)) Store (Or (0x00010000, DID4), Index (TMP4, 0x03)) Return (TMP4) /* \_SB_.PCI0.GFX0._DOD.TMP4 */ } If (LGreater (NDID, 0x04)) { Name (TMP5, Package (0x05) { 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF }) Store (Or (0x00010000, DID1), Index (TMP5, Zero)) Store (Or (0x00010000, DID2), Index (TMP5, One)) Store (Or (0x00010000, DID3), Index (TMP5, 0x02)) Store (Or (0x00010000, DID4), Index (TMP5, 0x03)) Store (Or (0x00010000, DID4), Index (TMP5, 0x04)) Return (TMP5) /* \_SB_.PCI0.GFX0._DOD.TMP5 */ } Return (Package (0x01) { 0x0400 }) } Device (DD01) { Method (_ADR, 0, Serialized) // _ADR: Address { If (LEqual (DID1, Zero)) { Return (One) } Else { Return (And (0xFFFF, DID1)) } } Method (_DCS, 0, NotSerialized) // _DCS: Display Current Status { Return (CDDS (DID1)) } Method (_DGS, 0, NotSerialized) // _DGS: Display Graphics State { Return (NDDS (DID1)) } Method (_DSS, 1, NotSerialized) // _DSS: Device Set State { If (LEqual (And (Arg0, 0xC0000000), 0xC0000000)) { Store (NSTE, CSTE) /* \CSTE */ } } } Device (DD02) { Method (_ADR, 0, Serialized) // _ADR: Address { If (LEqual (DID2, Zero)) { Return (0x02) } Else { Return (And (0xFFFF, DID2)) } } Method (_DCS, 0, NotSerialized) // _DCS: Display Current Status { Return (CDDS (DID2)) } Method (_DGS, 0, NotSerialized) // _DGS: Display Graphics State { Return (NDDS (DID2)) } Method (_DSS, 1, NotSerialized) // _DSS: Device Set State { If (LEqual (And (Arg0, 0xC0000000), 0xC0000000)) { Store (NSTE, CSTE) /* \CSTE */ } } } Device (DD03) { Method (_ADR, 0, Serialized) // _ADR: Address { If (LEqual (DID3, Zero)) { Return (0x03) } Else { Return (And (0xFFFF, DID3)) } } Method (_DCS, 0, NotSerialized) // _DCS: Display Current Status { If (LEqual (DID3, Zero)) { Return (0x0B) } Else { Return (CDDS (DID3)) } } Method (_DGS, 0, NotSerialized) // _DGS: Display Graphics State { Return (NDDS (DID3)) } Method (_DSS, 1, NotSerialized) // _DSS: Device Set State { If (LEqual (And (Arg0, 0xC0000000), 0xC0000000)) { Store (NSTE, CSTE) /* \CSTE */ } } } Device (DD04) { Method (_ADR, 0, Serialized) // _ADR: Address { If (LEqual (DID4, Zero)) { Return (0x04) } Else { Return (And (0xFFFF, DID4)) } } Method (_DCS, 0, NotSerialized) // _DCS: Display Current Status { If (LEqual (DID4, Zero)) { Return (0x0B) } Else { Return (CDDS (DID4)) } } Method (_DGS, 0, NotSerialized) // _DGS: Display Graphics State { Return (NDDS (DID4)) } Method (_DSS, 1, NotSerialized) // _DSS: Device Set State { If (LEqual (And (Arg0, 0xC0000000), 0xC0000000)) { Store (NSTE, CSTE) /* \CSTE */ } } } Device (DD05) { Method (_ADR, 0, Serialized) // _ADR: Address { If (LEqual (DID5, Zero)) { Return (0x05) } Else { Return (And (0xFFFF, DID5)) } } Method (_DCS, 0, NotSerialized) // _DCS: Display Current Status { If (LEqual (DID5, Zero)) { Return (0x0B) } Else { Return (CDDS (DID5)) } } Method (_DGS, 0, NotSerialized) // _DGS: Display Graphics State { Return (NDDS (DID5)) } Method (_DSS, 1, NotSerialized) // _DSS: Device Set State { If (LEqual (And (Arg0, 0xC0000000), 0xC0000000)) { Store (NSTE, CSTE) /* \CSTE */ } } } Method (SDDL, 1, NotSerialized) { Increment (NDID) Store (And (Arg0, 0x0F0F), Local0) Or (0x80000000, Local0, Local1) If (LEqual (DIDL, Local0)) { Return (Local1) } If (LEqual (DDL2, Local0)) { Return (Local1) } If (LEqual (DDL3, Local0)) { Return (Local1) } If (LEqual (DDL4, Local0)) { Return (Local1) } If (LEqual (DDL5, Local0)) { Return (Local1) } If (LEqual (DDL6, Local0)) { Return (Local1) } If (LEqual (DDL7, Local0)) { Return (Local1) } If (LEqual (DDL8, Local0)) { Return (Local1) } Return (Zero) } Method (CDDS, 1, NotSerialized) { If (LEqual (CADL, And (Arg0, 0x0F0F))) { Return (0x1F) } If (LEqual (CAL2, And (Arg0, 0x0F0F))) { Return (0x1F) } If (LEqual (CAL3, And (Arg0, 0x0F0F))) { Return (0x1F) } If (LEqual (CAL4, And (Arg0, 0x0F0F))) { Return (0x1F) } If (LEqual (CAL5, And (Arg0, 0x0F0F))) { Return (0x1F) } If (LEqual (CAL6, And (Arg0, 0x0F0F))) { Return (0x1F) } If (LEqual (CAL7, And (Arg0, 0x0F0F))) { Return (0x1F) } If (LEqual (CAL8, And (Arg0, 0x0F0F))) { Return (0x1F) } Return (0x1D) } Method (NDDS, 1, NotSerialized) { If (LEqual (NADL, And (Arg0, 0x0F0F))) { Return (One) } If (LEqual (NDL2, And (Arg0, 0x0F0F))) { Return (One) } If (LEqual (NDL3, And (Arg0, 0x0F0F))) { Return (One) } If (LEqual (NDL4, And (Arg0, 0x0F0F))) { Return (One) } If (LEqual (NDL5, And (Arg0, 0x0F0F))) { Return (One) } If (LEqual (NDL6, And (Arg0, 0x0F0F))) { Return (One) } If (LEqual (NDL7, And (Arg0, 0x0F0F))) { Return (One) } If (LEqual (NDL8, And (Arg0, 0x0F0F))) { Return (One) } Return (Zero) } Method (BRTN, 1, Serialized) { If (LEqual (And (DID1, 0x0F00), 0x0400)) { Notify (DD01, Arg0) } If (LEqual (And (DID2, 0x0F00), 0x0400)) { Notify (DD02, Arg0) } If (LEqual (And (DID3, 0x0F00), 0x0400)) { Notify (DD03, Arg0) } If (LEqual (And (DID4, 0x0F00), 0x0400)) { Notify (DD04, Arg0) } If (LEqual (And (DID5, 0x0F00), 0x0400)) { Notify (DD05, Arg0) } } Scope (^^PCI0) { OperationRegion (MCHP, PCI_Config, 0x40, 0xC0) Field (MCHP, AnyAcc, NoLock, Preserve) { Offset (0x60), TASM, 10, Offset (0x62) } } OperationRegion (IGDP, PCI_Config, 0x40, 0xC0) Field (IGDP, AnyAcc, NoLock, Preserve) { Offset (0x12), , 1, GIVD, 1, , 2, GUMA, 3, Offset (0x14), , 4, GMFN, 1, Offset (0x18), Offset (0xA4), ASLE, 8, Offset (0xA8), GSSE, 1, GSSB, 14, GSES, 1, Offset (0xB0), Offset (0xB1), CDVL, 5, Offset (0xB2), Offset (0xB5), LBPC, 8, Offset (0xBC), ASLS, 32 } OperationRegion (IGDM, SystemMemory, ASLB, 0x2000) Field (IGDM, AnyAcc, NoLock, Preserve) { SIGN, 128, SIZE, 32, OVER, 32, SVER, 256, VVER, 128, GVER, 128, MBOX, 32, Offset (0x100), DRDY, 32, CSTS, 32, CEVT, 32, Offset (0x120), DIDL, 32, DDL2, 32, DDL3, 32, DDL4, 32, DDL5, 32, DDL6, 32, DDL7, 32, DDL8, 32, CPDL, 32, CPL2, 32, CPL3, 32, CPL4, 32, CPL5, 32, CPL6, 32, CPL7, 32, CPL8, 32, CADL, 32, CAL2, 32, CAL3, 32, CAL4, 32, CAL5, 32, CAL6, 32, CAL7, 32, CAL8, 32, NADL, 32, NDL2, 32, NDL3, 32, NDL4, 32, NDL5, 32, NDL6, 32, NDL7, 32, NDL8, 32, ASLP, 32, TIDX, 32, CHPD, 32, CLID, 32, CDCK, 32, SXSW, 32, EVTS, 32, CNOT, 32, NRDY, 32, Offset (0x200), SCIE, 1, GEFC, 4, GXFC, 3, GESF, 8, Offset (0x204), PARM, 32, DSLP, 32, Offset (0x300), ARDY, 32, ASLC, 32, TCHE, 32, ALSI, 32, BCLP, 32, PFIT, 32, CBLV, 32, BCLM, 320, CPFM, 32, Offset (0x400), GVD1, 57344 } Name (DBTB, Package (0x15) { Zero, 0x07, 0x38, 0x01C0, 0x0E00, 0x3F, 0x01C7, 0x0E07, 0x01F8, 0x0E38, 0x0FC0, Zero, Zero, Zero, Zero, Zero, 0x7000, 0x7007, 0x7038, 0x71C0, 0x7E00 }) Name (CDCT, Package (0x03) { Package (0x03) { 0xC8, 0x0140, 0x0190 }, Package (0x03) { 0xC8, 0x014D, 0x0190 }, Package (0x03) { 0xDE, 0x014D, 0x017D } }) Name (SUCC, One) Name (NVLD, 0x02) Name (CRIT, 0x04) Name (NCRT, 0x06) Method (GSCI, 0, Serialized) { Method (GBDA, 0, Serialized) { If (LEqual (GESF, Zero)) { Store (0x0279, PARM) /* \_SB_.PCI0.GFX0.PARM */ Store (Zero, GESF) /* \_SB_.PCI0.GFX0.GESF */ Return (SUCC) /* \_SB_.PCI0.GFX0.SUCC */ } If (LEqual (GESF, One)) { Store (0x0240, PARM) /* \_SB_.PCI0.GFX0.PARM */ Store (Zero, GESF) /* \_SB_.PCI0.GFX0.GESF */ Return (SUCC) /* \_SB_.PCI0.GFX0.SUCC */ } If (LEqual (GESF, 0x04)) { And (PARM, 0xEFFF0000, PARM) /* \_SB_.PCI0.GFX0.PARM */ And (PARM, ShiftLeft (DerefOf (Index (DBTB, IBTT)), 0x10), PARM) /* \_SB_.PCI0.GFX0.PARM */ Or (IBTT, PARM, PARM) /* \_SB_.PCI0.GFX0.PARM */ Store (Zero, GESF) /* \_SB_.PCI0.GFX0.GESF */ Return (SUCC) /* \_SB_.PCI0.GFX0.SUCC */ } If (LEqual (GESF, 0x05)) { Store (IPSC, PARM) /* \_SB_.PCI0.GFX0.PARM */ Or (PARM, ShiftLeft (IPAT, 0x08), PARM) /* \_SB_.PCI0.GFX0.PARM */ Add (PARM, 0x0100, PARM) /* \_SB_.PCI0.GFX0.PARM */ Or (PARM, ShiftLeft (LIDS, 0x10), PARM) /* \_SB_.PCI0.GFX0.PARM */ Add (PARM, 0x00010000, PARM) /* \_SB_.PCI0.GFX0.PARM */ Or (PARM, ShiftLeft (IBIA, 0x14), PARM) /* \_SB_.PCI0.GFX0.PARM */ Store (Zero, GESF) /* \_SB_.PCI0.GFX0.GESF */ Return (SUCC) /* \_SB_.PCI0.GFX0.SUCC */ } If (LEqual (GESF, 0x06)) { Store (ITVF, PARM) /* \_SB_.PCI0.GFX0.PARM */ Or (PARM, ShiftLeft (ITVM, 0x04), PARM) /* \_SB_.PCI0.GFX0.PARM */ Store (Zero, GESF) /* \_SB_.PCI0.GFX0.GESF */ Return (SUCC) /* \_SB_.PCI0.GFX0.SUCC */ } If (LEqual (GESF, 0x07)) { Store (GIVD, PARM) /* \_SB_.PCI0.GFX0.PARM */ XOr (PARM, One, PARM) /* \_SB_.PCI0.GFX0.PARM */ Or (PARM, ShiftLeft (GMFN, One), PARM) /* \_SB_.PCI0.GFX0.PARM */ Or (PARM, 0x1000, PARM) /* \_SB_.PCI0.GFX0.PARM */ If (IDMM) { Or (PARM, ShiftLeft (IDMS, 0x11), PARM) /* \_SB_.PCI0.GFX0.PARM */ } Else { Or (PARM, ShiftLeft (IDMS, 0x0D), PARM) /* \_SB_.PCI0.GFX0.PARM */ } Or (ShiftLeft (DerefOf (Index (DerefOf (Index (CDCT, HVCO)), Subtract ( CDVL, One))), 0x15), PARM, PARM) /* \_SB_.PCI0.GFX0.PARM */ Store (One, GESF) /* \_SB_.PCI0.GFX0.GESF */ Return (SUCC) /* \_SB_.PCI0.GFX0.SUCC */ } If (LEqual (GESF, 0x0A)) { Store (Zero, PARM) /* \_SB_.PCI0.GFX0.PARM */ If (ISSC) { Or (PARM, 0x03, PARM) /* \_SB_.PCI0.GFX0.PARM */ } Store (Zero, GESF) /* \_SB_.PCI0.GFX0.GESF */ Return (SUCC) /* \_SB_.PCI0.GFX0.SUCC */ } Store (Zero, GESF) /* \_SB_.PCI0.GFX0.GESF */ Return (CRIT) /* \_SB_.PCI0.GFX0.CRIT */ } Method (SBCB, 0, Serialized) { If (LEqual (GESF, Zero)) { Store (Zero, PARM) /* \_SB_.PCI0.GFX0.PARM */ Store (0xF77D, PARM) /* \_SB_.PCI0.GFX0.PARM */ Store (Zero, GESF) /* \_SB_.PCI0.GFX0.GESF */ Return (SUCC) /* \_SB_.PCI0.GFX0.SUCC */ } If (LEqual (GESF, One)) { Store (Zero, GESF) /* \_SB_.PCI0.GFX0.GESF */ Store (Zero, PARM) /* \_SB_.PCI0.GFX0.PARM */ Return (SUCC) /* \_SB_.PCI0.GFX0.SUCC */ } If (LEqual (GESF, 0x03)) { Store (Zero, GESF) /* \_SB_.PCI0.GFX0.GESF */ Store (Zero, PARM) /* \_SB_.PCI0.GFX0.PARM */ Return (SUCC) /* \_SB_.PCI0.GFX0.SUCC */ } If (LEqual (GESF, 0x04)) { Store (Zero, GESF) /* \_SB_.PCI0.GFX0.GESF */ Store (Zero, PARM) /* \_SB_.PCI0.GFX0.PARM */ Return (SUCC) /* \_SB_.PCI0.GFX0.SUCC */ } If (LEqual (GESF, 0x05)) { Store (Zero, GESF) /* \_SB_.PCI0.GFX0.GESF */ Store (Zero, PARM) /* \_SB_.PCI0.GFX0.PARM */ Return (SUCC) /* \_SB_.PCI0.GFX0.SUCC */ } If (LEqual (GESF, 0x06)) { Store (And (PARM, 0x0F), ITVF) /* \ITVF */ Store (ShiftRight (And (PARM, 0xF0), 0x04), ITVM) /* \ITVM */ Store (Zero, GESF) /* \_SB_.PCI0.GFX0.GESF */ Store (Zero, PARM) /* \_SB_.PCI0.GFX0.PARM */ Return (SUCC) /* \_SB_.PCI0.GFX0.SUCC */ } If (LEqual (GESF, 0x07)) { Store (Zero, GESF) /* \_SB_.PCI0.GFX0.GESF */ Store (Zero, PARM) /* \_SB_.PCI0.GFX0.PARM */ Return (SUCC) /* \_SB_.PCI0.GFX0.SUCC */ } If (LEqual (GESF, 0x08)) { Store (Zero, GESF) /* \_SB_.PCI0.GFX0.GESF */ Store (Zero, PARM) /* \_SB_.PCI0.GFX0.PARM */ Return (SUCC) /* \_SB_.PCI0.GFX0.SUCC */ } If (LEqual (GESF, 0x09)) { And (PARM, 0xFF, IBTT) /* \IBTT */ Store (Zero, GESF) /* \_SB_.PCI0.GFX0.GESF */ Store (Zero, PARM) /* \_SB_.PCI0.GFX0.PARM */ Return (SUCC) /* \_SB_.PCI0.GFX0.SUCC */ } If (LEqual (GESF, 0x0A)) { And (PARM, 0xFF, IPSC) /* \IPSC */ If (And (ShiftRight (PARM, 0x08), 0xFF)) { And (ShiftRight (PARM, 0x08), 0xFF, IPAT) /* \IPAT */ Decrement (IPAT) } And (ShiftRight (PARM, 0x14), 0x07, IBIA) /* \IBIA */ Store (Zero, GESF) /* \_SB_.PCI0.GFX0.GESF */ Store (Zero, PARM) /* \_SB_.PCI0.GFX0.PARM */ Return (SUCC) /* \_SB_.PCI0.GFX0.SUCC */ } If (LEqual (GESF, 0x0B)) { And (ShiftRight (PARM, One), One, IF1E) /* \IF1E */ If (And (PARM, 0x0001E000)) { And (ShiftRight (PARM, 0x0D), 0x0F, IDMS) /* \IDMS */ Store (Zero, IDMM) /* \IDMM */ } Else { And (ShiftRight (PARM, 0x11), 0x0F, IDMS) /* \IDMS */ Store (One, IDMM) /* \IDMM */ } Store (Zero, GESF) /* \_SB_.PCI0.GFX0.GESF */ Store (Zero, PARM) /* \_SB_.PCI0.GFX0.PARM */ Return (SUCC) /* \_SB_.PCI0.GFX0.SUCC */ } If (LEqual (GESF, 0x10)) { Store (Zero, GESF) /* \_SB_.PCI0.GFX0.GESF */ Store (Zero, PARM) /* \_SB_.PCI0.GFX0.PARM */ Return (SUCC) /* \_SB_.PCI0.GFX0.SUCC */ } If (LEqual (GESF, 0x11)) { Or (PARM, 0x0100, PARM) /* \_SB_.PCI0.GFX0.PARM */ Store (Zero, GESF) /* \_SB_.PCI0.GFX0.GESF */ Return (SUCC) /* \_SB_.PCI0.GFX0.SUCC */ } If (LEqual (GESF, 0x12)) { If (And (PARM, One)) { If (LEqual (ShiftRight (PARM, One), One)) { Store (One, ISSC) /* \ISSC */ } Else { Store (Zero, GESF) /* \_SB_.PCI0.GFX0.GESF */ Return (CRIT) /* \_SB_.PCI0.GFX0.CRIT */ } } Else { Store (Zero, ISSC) /* \ISSC */ } Store (Zero, GESF) /* \_SB_.PCI0.GFX0.GESF */ Store (Zero, PARM) /* \_SB_.PCI0.GFX0.PARM */ Return (SUCC) /* \_SB_.PCI0.GFX0.SUCC */ } If (LEqual (GESF, 0x13)) { Store (Zero, GESF) /* \_SB_.PCI0.GFX0.GESF */ Store (Zero, PARM) /* \_SB_.PCI0.GFX0.PARM */ Return (SUCC) /* \_SB_.PCI0.GFX0.SUCC */ } Store (Zero, GESF) /* \_SB_.PCI0.GFX0.GESF */ Return (SUCC) /* \_SB_.PCI0.GFX0.SUCC */ } If (LEqual (GEFC, 0x04)) { Store (GBDA (), GXFC) /* \_SB_.PCI0.GFX0.GXFC */ } If (LEqual (GEFC, 0x06)) { Store (SBCB (), GXFC) /* \_SB_.PCI0.GFX0.GXFC */ } Store (Zero, GEFC) /* \_SB_.PCI0.GFX0.GEFC */ Store (One, SCIS) /* \SCIS */ Store (Zero, GSSE) /* \_SB_.PCI0.GFX0.GSSE */ Store (Zero, SCIE) /* \_SB_.PCI0.GFX0.SCIE */ Return (Zero) } Method (PDRD, 0, NotSerialized) { If (LNot (DRDY)) { Sleep (ASLP) } Return (LNot (DRDY)) } Method (PSTS, 0, NotSerialized) { If (LGreater (CSTS, 0x02)) { Sleep (ASLP) } Return (LEqual (CSTS, 0x03)) } Method (GNOT, 2, NotSerialized) { If (PDRD ()) { Return (One) } If (PSTS ()) { Return (One) } Store (Arg0, CEVT) /* \_SB_.PCI0.GFX0.CEVT */ Store (0x03, CSTS) /* \_SB_.PCI0.GFX0.CSTS */ If (LAnd (LEqual (CHPD, Zero), LEqual (Arg1, Zero))) { If (LOr (LGreater (OSYS, 0x07D0), LLess (OSYS, 0x07D6))) { Notify (PCI0, Arg1) } Else { Notify (GFX0, Arg1) } } Notify (GFX0, 0x80) // Status Change If (LNot (PSTS ())) { Store (Zero, CEVT) /* \_SB_.PCI0.GFX0.CEVT */ } Return (Zero) } Method (GHDS, 1, NotSerialized) { Store (Arg0, TIDX) /* \_SB_.PCI0.GFX0.TIDX */ Return (GNOT (One, Zero)) } Method (GLID, 1, NotSerialized) { Store (Arg0, CLID) /* \_SB_.PCI0.GFX0.CLID */ Return (GNOT (0x02, Zero)) } Method (GDCK, 1, NotSerialized) { Store (Arg0, CDCK) /* \_SB_.PCI0.GFX0.CDCK */ Return (GNOT (0x04, 0x80)) } Method (PARD, 0, NotSerialized) { If (LNot (ARDY)) { Sleep (ASLP) } Return (LNot (ARDY)) } Method (AINT, 2, NotSerialized) { If (LNot (And (TCHE, ShiftLeft (One, Arg0)))) { Return (One) } If (PARD ()) { Return (One) } If (LEqual (Arg0, 0x02)) { If (CPFM) { If (LEqual (CPFM, One)) { Store (0x06, PFIT) /* \_SB_.PCI0.GFX0.PFIT */ } If (LEqual (CPFM, 0x06)) { Store (0x08, PFIT) /* \_SB_.PCI0.GFX0.PFIT */ } If (LEqual (CPFM, 0x08)) { Store (One, PFIT) /* \_SB_.PCI0.GFX0.PFIT */ } } Else { XOr (PFIT, 0x07, PFIT) /* \_SB_.PCI0.GFX0.PFIT */ } Or (PFIT, 0x80000000, PFIT) /* \_SB_.PCI0.GFX0.PFIT */ Store (0x04, ASLC) /* \_SB_.PCI0.GFX0.ASLC */ } Else { If (LEqual (Arg0, One)) { Store (Divide (Multiply (Arg1, 0xFF), 0x64, ), BCLP) /* \_SB_.PCI0.GFX0.BCLP */ Or (BCLP, 0x80000000, BCLP) /* \_SB_.PCI0.GFX0.BCLP */ Store (0x02, ASLC) /* \_SB_.PCI0.GFX0.ASLC */ } Else { If (LEqual (Arg0, Zero)) { Store (Arg1, ALSI) /* \_SB_.PCI0.GFX0.ALSI */ Store (One, ASLC) /* \_SB_.PCI0.GFX0.ASLC */ } Else { Return (One) } } } Store (Zero, LBPC) /* \_SB_.PCI0.GFX0.LBPC */ Return (Zero) } } Scope (\) { OperationRegion (IO_T, SystemIO, 0x0800, 0x10) Field (IO_T, ByteAcc, NoLock, Preserve) { Offset (0x08), TRP0, 8 } OperationRegion (PMIO, SystemIO, 0x1000, 0x80) Field (PMIO, ByteAcc, NoLock, Preserve) { Offset (0x2A), Offset (0x2B), , 2, ACPW, 1, Offset (0x42), , 1, GPEC, 1, Offset (0x64), , 9, SCIS, 1, Offset (0x66) } OperationRegion (GPIO, SystemIO, 0x1180, 0x3C) Field (GPIO, ByteAcc, NoLock, Preserve) { GU00, 8, GU01, 8, GU02, 8, GU03, 8, GIO0, 8, GIO1, 8, GIO2, 8, GIO3, 8, Offset (0x0C), GL00, 8, GL01, 8, GL02, 8, , 3, GP27, 1, GP28, 1, Offset (0x10), Offset (0x18), GB00, 8, GB01, 8, GB02, 8, GB03, 8, Offset (0x2C), GIV0, 8, , 3, LPOL, 1, Offset (0x2E), GIV2, 8, GIV3, 8, GU04, 8, GU05, 8, GU06, 8, GU07, 8, GIO4, 8, GIO5, 8, GIO6, 8, GIO7, 8, , 5, GP37, 1, Offset (0x39), GL05, 8, GL06, 8, GL07, 8 } OperationRegion (RCRB, SystemMemory, 0xFED1C000, 0x4000) Field (RCRB, DWordAcc, Lock, Preserve) { Offset (0x1000), Offset (0x3000), Offset (0x3404), HPAS, 2, , 5, HPAE, 1, Offset (0x3418), , 1, PATD, 1, SATD, 1, SMBD, 1, HDAD, 1, Offset (0x341A), RP1D, 1, RP2D, 1, RP3D, 1, RP4D, 1, RP5D, 1, RP6D, 1 } Name (_S0, Package (0x03) // _S0_: S0 System State { Zero, Zero, Zero }) Name (_S3, Package (0x03) // _S3_: S3 System State { 0x05, 0x05, Zero }) Name (_S4, Package (0x03) // _S4_: S4 System State { 0x06, 0x06, Zero }) Name (_S5, Package (0x03) // _S5_: S5 System State { 0x07, 0x07, Zero }) Method (GETP, 1, Serialized) { If (LEqual (And (Arg0, 0x09), Zero)) { Return (0xFFFFFFFF) } If (LEqual (And (Arg0, 0x09), 0x08)) { Return (0x0384) } ShiftRight (And (Arg0, 0x0300), 0x08, Local0) ShiftRight (And (Arg0, 0x3000), 0x0C, Local1) Return (Multiply (0x1E, Subtract (0x09, Add (Local0, Local1)) )) } Method (GDMA, 5, Serialized) { If (Arg0) { If (LAnd (Arg1, Arg4)) { Return (0x14) } If (LAnd (Arg2, Arg4)) { Return (Multiply (Subtract (0x04, Arg3), 0x0F)) } Return (Multiply (Subtract (0x04, Arg3), 0x1E)) } Return (0xFFFFFFFF) } Method (GETT, 1, Serialized) { Return (Multiply (0x1E, Subtract (0x09, Add (And (ShiftRight (Arg0, 0x02 ), 0x03), And (Arg0, 0x03))))) } Method (GETF, 3, Serialized) { Name (TMPF, Zero) If (Arg0) { Or (TMPF, One, TMPF) /* \GETF.TMPF */ } If (And (Arg2, 0x02)) { Or (TMPF, 0x02, TMPF) /* \GETF.TMPF */ } If (Arg1) { Or (TMPF, 0x04, TMPF) /* \GETF.TMPF */ } If (And (Arg2, 0x20)) { Or (TMPF, 0x08, TMPF) /* \GETF.TMPF */ } If (And (Arg2, 0x4000)) { Or (TMPF, 0x10, TMPF) /* \GETF.TMPF */ } Return (TMPF) /* \GETF.TMPF */ } Method (SETP, 3, Serialized) { If (LGreater (Arg0, 0xF0)) { Return (0x08) } Else { If (And (Arg1, 0x02)) { If (LAnd (LLessEqual (Arg0, 0x78), And (Arg2, 0x02))) { Return (0x2301) } If (LAnd (LLessEqual (Arg0, 0xB4), And (Arg2, One))) { Return (0x2101) } } Return (0x1001) } } Method (SDMA, 1, Serialized) { If (LLessEqual (Arg0, 0x14)) { Return (One) } If (LLessEqual (Arg0, 0x1E)) { Return (0x02) } If (LLessEqual (Arg0, 0x2D)) { Return (One) } If (LLessEqual (Arg0, 0x3C)) { Return (0x02) } If (LLessEqual (Arg0, 0x5A)) { Return (One) } Return (Zero) } Method (SETT, 3, Serialized) { If (And (Arg1, 0x02)) { If (LAnd (LLessEqual (Arg0, 0x78), And (Arg2, 0x02))) { Return (0x0B) } If (LAnd (LLessEqual (Arg0, 0xB4), And (Arg2, One))) { Return (0x09) } } Return (0x04) } } Device (HDEF) { Name (_ADR, 0x001B0000) // _ADR: Address OperationRegion (HDAR, PCI_Config, 0x4C, 0x10) Field (HDAR, WordAcc, NoLock, Preserve) { DCKA, 1, Offset (0x01), DCKM, 1, , 6, DCKS, 1, Offset (0x08), , 15, PMES, 1 } Name (_PRW, Package (0x02) // _PRW: Power Resources for Wake { 0x0D, 0x03 }) } Device (RP01) { Name (_ADR, 0x001C0000) // _ADR: Address OperationRegion (PXCS, PCI_Config, 0x40, 0xC0) Field (PXCS, AnyAcc, NoLock, WriteAsZeros) { Offset (0x12), , 13, LASX, 1, Offset (0x1A), ABPX, 1, , 2, PDCX, 1, , 2, PDSX, 1, Offset (0x1B), LSCX, 1, Offset (0x20), Offset (0x22), PSPX, 1, Offset (0x9C), , 30, HPSX, 1, PMSX, 1 } Device (PXSX) { Name (_ADR, Zero) // _ADR: Address } Method (_PRT, 0, NotSerialized) // _PRT: PCI Routing Table { If (GPIC) { Return (Package (0x04) { Package (0x04) { 0xFFFF, Zero, Zero, 0x10 }, Package (0x04) { 0xFFFF, One, Zero, 0x11 }, Package (0x04) { 0xFFFF, 0x02, Zero, 0x12 }, Package (0x04) { 0xFFFF, 0x03, Zero, 0x13 } }) } Else { Return (Package (0x04) { Package (0x04) { 0xFFFF, Zero, ^^LPCB.LNKA, Zero }, Package (0x04) { 0xFFFF, One, ^^LPCB.LNKB, Zero }, Package (0x04) { 0xFFFF, 0x02, ^^LPCB.LNKC, Zero }, Package (0x04) { 0xFFFF, 0x03, ^^LPCB.LNKD, Zero } }) } } } Device (RP02) { Name (_ADR, 0x001C0001) // _ADR: Address OperationRegion (PXCS, PCI_Config, 0x40, 0xC0) Field (PXCS, AnyAcc, NoLock, WriteAsZeros) { Offset (0x12), , 13, LASX, 1, Offset (0x1A), ABPX, 1, , 2, PDCX, 1, , 2, PDSX, 1, Offset (0x1B), LSCX, 1, Offset (0x20), Offset (0x22), PSPX, 1, Offset (0x9C), , 30, HPSX, 1, PMSX, 1 } Device (PXSX) { Name (_ADR, Zero) // _ADR: Address } Method (_PRT, 0, NotSerialized) // _PRT: PCI Routing Table { If (GPIC) { Return (Package (0x04) { Package (0x04) { 0xFFFF, Zero, Zero, 0x11 }, Package (0x04) { 0xFFFF, One, Zero, 0x12 }, Package (0x04) { 0xFFFF, 0x02, Zero, 0x13 }, Package (0x04) { 0xFFFF, 0x03, Zero, 0x10 } }) } Else { Return (Package (0x04) { Package (0x04) { 0xFFFF, Zero, ^^LPCB.LNKB, Zero }, Package (0x04) { 0xFFFF, One, ^^LPCB.LNKC, Zero }, Package (0x04) { 0xFFFF, 0x02, ^^LPCB.LNKD, Zero }, Package (0x04) { 0xFFFF, 0x03, ^^LPCB.LNKA, Zero } }) } } } Device (RP03) { Name (_ADR, 0x001C0002) // _ADR: Address OperationRegion (PXCS, PCI_Config, 0x40, 0xC0) Field (PXCS, AnyAcc, NoLock, WriteAsZeros) { Offset (0x12), , 13, LASX, 1, Offset (0x1A), ABPX, 1, , 2, PDCX, 1, , 2, PDSX, 1, Offset (0x1B), LSCX, 1, Offset (0x20), Offset (0x22), PSPX, 1, Offset (0x9C), , 30, HPSX, 1, PMSX, 1 } Device (PXSX) { Name (_ADR, Zero) // _ADR: Address } Name (PXSX._RMV, One) // _RMV: Removal Status Name (PXSX._PRW, Package (0x02) // _PRW: Power Resources for Wake { 0x09, 0x03 }) Method (_PRT, 0, NotSerialized) // _PRT: PCI Routing Table { If (GPIC) { Return (Package (0x04) { Package (0x04) { 0xFFFF, Zero, Zero, 0x12 }, Package (0x04) { 0xFFFF, One, Zero, 0x13 }, Package (0x04) { 0xFFFF, 0x02, Zero, 0x10 }, Package (0x04) { 0xFFFF, 0x03, Zero, 0x11 } }) } Else { Return (Package (0x04) { Package (0x04) { 0xFFFF, Zero, ^^LPCB.LNKC, Zero }, Package (0x04) { 0xFFFF, One, ^^LPCB.LNKD, Zero }, Package (0x04) { 0xFFFF, 0x02, ^^LPCB.LNKA, Zero }, Package (0x04) { 0xFFFF, 0x03, ^^LPCB.LNKB, Zero } }) } } } Device (RP04) { Name (_ADR, 0x001C0003) // _ADR: Address OperationRegion (PXCS, PCI_Config, 0x40, 0xC0) Field (PXCS, AnyAcc, NoLock, WriteAsZeros) { Offset (0x12), , 13, LASX, 1, Offset (0x1A), ABPX, 1, , 2, PDCX, 1, , 2, PDSX, 1, Offset (0x1B), LSCX, 1, Offset (0x20), Offset (0x22), PSPX, 1, Offset (0x9C), , 30, HPSX, 1, PMSX, 1 } Device (PXSX) { Name (_ADR, Zero) // _ADR: Address Method (_PRW, 0, NotSerialized) // _PRW: Power Resources for Wake { If (WKLN) { Return (Package (0x02) { 0x09, 0x03 }) } Else { Return (Package (0x02) { 0x09, Zero }) } } } Method (_PRT, 0, NotSerialized) // _PRT: PCI Routing Table { If (GPIC) { Return (Package (0x04) { Package (0x04) { 0xFFFF, Zero, Zero, 0x13 }, Package (0x04) { 0xFFFF, One, Zero, 0x10 }, Package (0x04) { 0xFFFF, 0x02, Zero, 0x11 }, Package (0x04) { 0xFFFF, 0x03, Zero, 0x12 } }) } Else { Return (Package (0x04) { Package (0x04) { 0xFFFF, Zero, ^^LPCB.LNKD, Zero }, Package (0x04) { 0xFFFF, One, ^^LPCB.LNKA, Zero }, Package (0x04) { 0xFFFF, 0x02, ^^LPCB.LNKB, Zero }, Package (0x04) { 0xFFFF, 0x03, ^^LPCB.LNKC, Zero } }) } } } Device (RP05) { Name (_ADR, 0x001C0004) // _ADR: Address OperationRegion (PXCS, PCI_Config, 0x40, 0xC0) Field (PXCS, AnyAcc, NoLock, WriteAsZeros) { Offset (0x12), , 13, LASX, 1, Offset (0x1A), ABPX, 1, , 2, PDCX, 1, , 2, PDSX, 1, Offset (0x1B), LSCX, 1, Offset (0x20), Offset (0x22), PSPX, 1, Offset (0x9C), , 30, HPSX, 1, PMSX, 1 } Device (PXSX) { Name (_ADR, Zero) // _ADR: Address } Method (_PRT, 0, NotSerialized) // _PRT: PCI Routing Table { If (GPIC) { Return (Package (0x04) { Package (0x04) { 0xFFFF, Zero, Zero, 0x10 }, Package (0x04) { 0xFFFF, One, Zero, 0x11 }, Package (0x04) { 0xFFFF, 0x02, Zero, 0x12 }, Package (0x04) { 0xFFFF, 0x03, Zero, 0x13 } }) } Else { Return (Package (0x04) { Package (0x04) { 0xFFFF, Zero, ^^LPCB.LNKA, Zero }, Package (0x04) { 0xFFFF, One, ^^LPCB.LNKB, Zero }, Package (0x04) { 0xFFFF, 0x02, ^^LPCB.LNKC, Zero }, Package (0x04) { 0xFFFF, 0x03, ^^LPCB.LNKD, Zero } }) } } } Device (RP06) { Name (_ADR, 0x001C0005) // _ADR: Address OperationRegion (PXCS, PCI_Config, 0x40, 0xC0) Field (PXCS, AnyAcc, NoLock, WriteAsZeros) { Offset (0x12), , 13, LASX, 1, Offset (0x1A), ABPX, 1, , 2, PDCX, 1, , 2, PDSX, 1, Offset (0x1B), LSCX, 1, Offset (0x20), Offset (0x22), PSPX, 1, Offset (0x9C), , 30, HPSX, 1, PMSX, 1 } Device (PXSX) { Name (_ADR, Zero) // _ADR: Address } Method (_PRT, 0, NotSerialized) // _PRT: PCI Routing Table { If (GPIC) { Return (Package (0x04) { Package (0x04) { 0xFFFF, Zero, Zero, 0x11 }, Package (0x04) { 0xFFFF, One, Zero, 0x12 }, Package (0x04) { 0xFFFF, 0x02, Zero, 0x13 }, Package (0x04) { 0xFFFF, 0x03, Zero, 0x10 } }) } Else { Return (Package (0x04) { Package (0x04) { 0xFFFF, Zero, ^^LPCB.LNKB, Zero }, Package (0x04) { 0xFFFF, One, ^^LPCB.LNKC, Zero }, Package (0x04) { 0xFFFF, 0x02, ^^LPCB.LNKD, Zero }, Package (0x04) { 0xFFFF, 0x03, ^^LPCB.LNKA, Zero } }) } } } Device (USB1) { Name (_ADR, 0x001D0000) // _ADR: Address OperationRegion (U1CS, PCI_Config, 0xC4, 0x04) Field (U1CS, DWordAcc, NoLock, Preserve) { U1EN, 2 } Name (_PRW, Package (0x02) // _PRW: Power Resources for Wake { 0x03, 0x03 }) Method (_PSW, 1, NotSerialized) // _PSW: Power State Wake { If (Arg0) { Store (One, ACPW) /* \ACPW */ If (ACPW) { Store (0x03, U1EN) /* \_SB_.PCI0.USB1.U1EN */ } } Else { Store (Zero, U1EN) /* \_SB_.PCI0.USB1.U1EN */ } } Method (_S3D, 0, NotSerialized) // _S3D: S3 Device State { Return (0x02) } Method (_S4D, 0, NotSerialized) // _S4D: S4 Device State { Return (0x02) } } Device (USB2) { Name (_ADR, 0x001D0001) // _ADR: Address OperationRegion (U2CS, PCI_Config, 0xC4, 0x04) Field (U2CS, DWordAcc, NoLock, Preserve) { U2EN, 2 } Name (_PRW, Package (0x02) // _PRW: Power Resources for Wake { 0x04, 0x03 }) Method (_PSW, 1, NotSerialized) // _PSW: Power State Wake { If (Arg0) { Store (One, ACPW) /* \ACPW */ If (ACPW) { Store (One, U2EN) /* \_SB_.PCI0.USB2.U2EN */ } } Else { Store (Zero, U2EN) /* \_SB_.PCI0.USB2.U2EN */ } } Method (_S3D, 0, NotSerialized) // _S3D: S3 Device State { Return (0x02) } Method (_S4D, 0, NotSerialized) // _S4D: S4 Device State { Return (0x02) } } Device (USB3) { Name (_ADR, 0x001D0002) // _ADR: Address OperationRegion (U2CS, PCI_Config, 0xC4, 0x04) Field (U2CS, DWordAcc, NoLock, Preserve) { U3EN, 2 } Name (_PRW, Package (0x02) // _PRW: Power Resources for Wake { 0x0C, 0x03 }) Method (_PSW, 1, NotSerialized) // _PSW: Power State Wake { If (Arg0) { Store (One, ACPW) /* \ACPW */ If (ACPW) { Store (0x03, U3EN) /* \_SB_.PCI0.USB3.U3EN */ } } Else { Store (Zero, U3EN) /* \_SB_.PCI0.USB3.U3EN */ } } Method (_S3D, 0, NotSerialized) // _S3D: S3 Device State { Return (0x02) } Method (_S4D, 0, NotSerialized) // _S4D: S4 Device State { Return (0x02) } } Device (USB4) { Name (_ADR, 0x001A0000) // _ADR: Address OperationRegion (U4CS, PCI_Config, 0xC4, 0x04) Field (U4CS, DWordAcc, NoLock, Preserve) { U4EN, 2 } Name (_PRW, Package (0x02) // _PRW: Power Resources for Wake { 0x0E, 0x03 }) Method (_PSW, 1, NotSerialized) // _PSW: Power State Wake { If (Arg0) { Store (One, ACPW) /* \ACPW */ If (ACPW) { Store (0x03, U4EN) /* \_SB_.PCI0.USB4.U4EN */ } } Else { Store (Zero, U4EN) /* \_SB_.PCI0.USB4.U4EN */ } } Method (_S3D, 0, NotSerialized) // _S3D: S3 Device State { Return (0x02) } Method (_S4D, 0, NotSerialized) // _S4D: S4 Device State { Return (0x02) } } Device (USB5) { Name (_ADR, 0x001A0001) // _ADR: Address OperationRegion (U5CS, PCI_Config, 0xC4, 0x04) Field (U5CS, DWordAcc, NoLock, Preserve) { U5EN, 2 } Method (_PSW, 1, NotSerialized) // _PSW: Power State Wake { If (Arg0) { Store (One, ACPW) /* \ACPW */ If (ACPW) { Store (0x03, U5EN) /* \_SB_.PCI0.USB5.U5EN */ } } Else { Store (Zero, U5EN) /* \_SB_.PCI0.USB5.U5EN */ } } Method (_S3D, 0, NotSerialized) // _S3D: S3 Device State { Return (0x02) } Method (_S4D, 0, NotSerialized) // _S4D: S4 Device State { Return (0x02) } } Device (EHC1) { Name (_ADR, 0x001D0007) // _ADR: Address OperationRegion (U7CS, PCI_Config, 0x54, 0x04) Field (U7CS, DWordAcc, NoLock, Preserve) { , 15, PMES, 1 } Device (HUB7) { Name (_ADR, Zero) // _ADR: Address Device (PRT1) { Name (_ADR, One) // _ADR: Address } Device (PRT2) { Name (_ADR, 0x02) // _ADR: Address } Device (PRT3) { Name (_ADR, 0x03) // _ADR: Address } Device (PRT4) { Name (_ADR, 0x04) // _ADR: Address } Device (PRT5) { Name (_ADR, 0x05) // _ADR: Address } Device (PRT6) { Name (_ADR, 0x06) // _ADR: Address } } Name (_PRW, Package (0x02) // _PRW: Power Resources for Wake { 0x0D, 0x03 }) Method (_S3D, 0, NotSerialized) // _S3D: S3 Device State { Return (0x02) } Method (_S4D, 0, NotSerialized) // _S4D: S4 Device State { Return (0x02) } } Device (EHC2) { Name (_ADR, 0x001A0007) // _ADR: Address OperationRegion (UFCS, PCI_Config, 0x54, 0x04) Field (UFCS, DWordAcc, NoLock, Preserve) { , 15, PMES, 1 } Device (HUB7) { Name (_ADR, Zero) // _ADR: Address Device (PRT1) { Name (_ADR, One) // _ADR: Address } Device (PRT2) { Name (_ADR, 0x02) // _ADR: Address } Device (PRT3) { Name (_ADR, 0x03) // _ADR: Address } Device (PRT4) { Name (_ADR, 0x04) // _ADR: Address } } Name (_PRW, Package (0x02) // _PRW: Power Resources for Wake { 0x0D, 0x03 }) Method (_S3D, 0, NotSerialized) // _S3D: S3 Device State { Return (0x02) } Method (_S4D, 0, NotSerialized) // _S4D: S4 Device State { Return (0x02) } } Device (PCIB) { Name (_ADR, 0x001E0000) // _ADR: Address Method (_PRT, 0, NotSerialized) // _PRT: PCI Routing Table { If (GPIC) { Return (Package (0x02) { Package (0x04) { 0x0006FFFF, Zero, Zero, 0x16 }, Package (0x04) { 0x0006FFFF, One, Zero, 0x17 } }) } Else { Return (Package (0x02) { Package (0x04) { 0x0006FFFF, Zero, ^^LPCB.LNKG, Zero }, Package (0x04) { 0x0006FFFF, One, ^^LPCB.LNKH, Zero } }) } } } Device (LPCB) { Name (_ADR, 0x001F0000) // _ADR: Address OperationRegion (LPC0, PCI_Config, 0x40, 0xC0) Field (LPC0, AnyAcc, NoLock, Preserve) { Offset (0x20), PARC, 8, PBRC, 8, PCRC, 8, PDRC, 8, Offset (0x28), PERC, 8, PFRC, 8, PGRC, 8, PHRC, 8, Offset (0x40), CMAR, 3, , 1, CMBR, 3, Offset (0x41), LPTR, 2, Offset (0x42), CMAD, 1, CMBD, 1, LPTD, 1, FDDD, 1, Offset (0x48), IOR2, 16, , 2, LGRM, 6, Offset (0xB0), RAEN, 1, , 13, RCBA, 18 } OperationRegion (SMI0, SystemIO, 0x0000FE00, 0x00000002) Field (SMI0, AnyAcc, NoLock, Preserve) { SMIC, 8 } OperationRegion (SMI1, SystemMemory, 0xBF6E2EBD, 0x00000090) Field (SMI1, AnyAcc, NoLock, Preserve) { BCMD, 8, DID, 32, INFO, 1024 } Field (SMI1, AnyAcc, NoLock, Preserve) { AccessAs (ByteAcc, 0x00), Offset (0x05), INF, 8, INF1, 32 } Mutex (PSMX, 0x00) Method (PHSS, 1, NotSerialized) { Acquire (PSMX, 0xFFFF) Store (0x80, BCMD) /* \_SB_.PCI0.LPCB.BCMD */ Store (Arg0, DID) /* \_SB_.PCI0.LPCB.DID_ */ Store (Zero, SMIC) /* \_SB_.PCI0.LPCB.SMIC */ Release (PSMX) } Device (LNKA) { Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID Name (_UID, One) // _UID: Unique ID Method (_DIS, 0, Serialized) // _DIS: Disable Device { Store (0x80, PARC) /* \_SB_.PCI0.LPCB.PARC */ } Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings { IRQ (Level, ActiveLow, Shared, ) {1,3,4,5,6,7,10,12,14,15} }) Method (_CRS, 0, Serialized) // _CRS: Current Resource Settings { Name (RTLA, ResourceTemplate () { IRQ (Level, ActiveLow, Shared, ) {} }) CreateWordField (RTLA, One, IRQ0) Store (Zero, IRQ0) /* \_SB_.PCI0.LPCB.LNKA._CRS.IRQ0 */ ShiftLeft (One, And (PARC, 0x0F), IRQ0) /* \_SB_.PCI0.LPCB.LNKA._CRS.IRQ0 */ Return (RTLA) /* \_SB_.PCI0.LPCB.LNKA._CRS.RTLA */ } Method (_SRS, 1, Serialized) // _SRS: Set Resource Settings { CreateWordField (Arg0, One, IRQ0) FindSetRightBit (IRQ0, Local0) Decrement (Local0) Store (Local0, PARC) /* \_SB_.PCI0.LPCB.PARC */ } Method (_STA, 0, Serialized) // _STA: Status { If (And (PARC, 0x80)) { Return (0x09) } Else { Return (0x0B) } } } Device (LNKB) { Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID Name (_UID, 0x02) // _UID: Unique ID Method (_DIS, 0, Serialized) // _DIS: Disable Device { Store (0x80, PBRC) /* \_SB_.PCI0.LPCB.PBRC */ } Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings { IRQ (Level, ActiveLow, Shared, ) {1,3,4,5,6,7,11,12,14,15} }) Method (_CRS, 0, Serialized) // _CRS: Current Resource Settings { Name (RTLB, ResourceTemplate () { IRQ (Level, ActiveLow, Shared, ) {} }) CreateWordField (RTLB, One, IRQ0) Store (Zero, IRQ0) /* \_SB_.PCI0.LPCB.LNKB._CRS.IRQ0 */ ShiftLeft (One, And (PBRC, 0x0F), IRQ0) /* \_SB_.PCI0.LPCB.LNKB._CRS.IRQ0 */ Return (RTLB) /* \_SB_.PCI0.LPCB.LNKB._CRS.RTLB */ } Method (_SRS, 1, Serialized) // _SRS: Set Resource Settings { CreateWordField (Arg0, One, IRQ0) FindSetRightBit (IRQ0, Local0) Decrement (Local0) Store (Local0, PBRC) /* \_SB_.PCI0.LPCB.PBRC */ } Method (_STA, 0, Serialized) // _STA: Status { If (And (PBRC, 0x80)) { Return (0x09) } Else { Return (0x0B) } } } Device (LNKC) { Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID Name (_UID, 0x03) // _UID: Unique ID Method (_DIS, 0, Serialized) // _DIS: Disable Device { Store (0x80, PCRC) /* \_SB_.PCI0.LPCB.PCRC */ } Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings { IRQ (Level, ActiveLow, Shared, ) {1,3,4,5,6,7,10,12,14,15} }) Method (_CRS, 0, Serialized) // _CRS: Current Resource Settings { Name (RTLC, ResourceTemplate () { IRQ (Level, ActiveLow, Shared, ) {} }) CreateWordField (RTLC, One, IRQ0) Store (Zero, IRQ0) /* \_SB_.PCI0.LPCB.LNKC._CRS.IRQ0 */ ShiftLeft (One, And (PCRC, 0x0F), IRQ0) /* \_SB_.PCI0.LPCB.LNKC._CRS.IRQ0 */ Return (RTLC) /* \_SB_.PCI0.LPCB.LNKC._CRS.RTLC */ } Method (_SRS, 1, Serialized) // _SRS: Set Resource Settings { CreateWordField (Arg0, One, IRQ0) FindSetRightBit (IRQ0, Local0) Decrement (Local0) Store (Local0, PCRC) /* \_SB_.PCI0.LPCB.PCRC */ } Method (_STA, 0, Serialized) // _STA: Status { If (And (PCRC, 0x80)) { Return (0x09) } Else { Return (0x0B) } } } Device (LNKD) { Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID Name (_UID, 0x04) // _UID: Unique ID Method (_DIS, 0, Serialized) // _DIS: Disable Device { Store (0x80, PDRC) /* \_SB_.PCI0.LPCB.PDRC */ } Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings { IRQ (Level, ActiveLow, Shared, ) {1,3,4,5,6,7,11,12,14,15} }) Method (_CRS, 0, Serialized) // _CRS: Current Resource Settings { Name (RTLD, ResourceTemplate () { IRQ (Level, ActiveLow, Shared, ) {} }) CreateWordField (RTLD, One, IRQ0) Store (Zero, IRQ0) /* \_SB_.PCI0.LPCB.LNKD._CRS.IRQ0 */ ShiftLeft (One, And (PDRC, 0x0F), IRQ0) /* \_SB_.PCI0.LPCB.LNKD._CRS.IRQ0 */ Return (RTLD) /* \_SB_.PCI0.LPCB.LNKD._CRS.RTLD */ } Method (_SRS, 1, Serialized) // _SRS: Set Resource Settings { CreateWordField (Arg0, One, IRQ0) FindSetRightBit (IRQ0, Local0) Decrement (Local0) Store (Local0, PDRC) /* \_SB_.PCI0.LPCB.PDRC */ } Method (_STA, 0, Serialized) // _STA: Status { If (And (PDRC, 0x80)) { Return (0x09) } Else { Return (0x0B) } } } Device (LNKE) { Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID Name (_UID, 0x05) // _UID: Unique ID Method (_DIS, 0, Serialized) // _DIS: Disable Device { Store (0x80, PERC) /* \_SB_.PCI0.LPCB.PERC */ } Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings { IRQ (Level, ActiveLow, Shared, ) {1,3,4,5,6,7,10,12,14,15} }) Method (_CRS, 0, Serialized) // _CRS: Current Resource Settings { Name (RTLE, ResourceTemplate () { IRQ (Level, ActiveLow, Shared, ) {} }) CreateWordField (RTLE, One, IRQ0) Store (Zero, IRQ0) /* \_SB_.PCI0.LPCB.LNKE._CRS.IRQ0 */ ShiftLeft (One, And (PERC, 0x0F), IRQ0) /* \_SB_.PCI0.LPCB.LNKE._CRS.IRQ0 */ Return (RTLE) /* \_SB_.PCI0.LPCB.LNKE._CRS.RTLE */ } Method (_SRS, 1, Serialized) // _SRS: Set Resource Settings { CreateWordField (Arg0, One, IRQ0) FindSetRightBit (IRQ0, Local0) Decrement (Local0) Store (Local0, PERC) /* \_SB_.PCI0.LPCB.PERC */ } Method (_STA, 0, Serialized) // _STA: Status { If (And (PERC, 0x80)) { Return (0x09) } Else { Return (0x0B) } } } Device (LNKF) { Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID Name (_UID, 0x06) // _UID: Unique ID Method (_DIS, 0, Serialized) // _DIS: Disable Device { Store (0x80, PFRC) /* \_SB_.PCI0.LPCB.PFRC */ } Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings { IRQ (Level, ActiveLow, Shared, ) {1,3,4,5,6,7,11,12,14,15} }) Method (_CRS, 0, Serialized) // _CRS: Current Resource Settings { Name (RTLF, ResourceTemplate () { IRQ (Level, ActiveLow, Shared, ) {} }) CreateWordField (RTLF, One, IRQ0) Store (Zero, IRQ0) /* \_SB_.PCI0.LPCB.LNKF._CRS.IRQ0 */ ShiftLeft (One, And (PFRC, 0x0F), IRQ0) /* \_SB_.PCI0.LPCB.LNKF._CRS.IRQ0 */ Return (RTLF) /* \_SB_.PCI0.LPCB.LNKF._CRS.RTLF */ } Method (_SRS, 1, Serialized) // _SRS: Set Resource Settings { CreateWordField (Arg0, One, IRQ0) FindSetRightBit (IRQ0, Local0) Decrement (Local0) Store (Local0, PFRC) /* \_SB_.PCI0.LPCB.PFRC */ } Method (_STA, 0, Serialized) // _STA: Status { If (And (PFRC, 0x80)) { Return (0x09) } Else { Return (0x0B) } } } Device (LNKG) { Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID Name (_UID, 0x07) // _UID: Unique ID Method (_DIS, 0, Serialized) // _DIS: Disable Device { Store (0x80, PGRC) /* \_SB_.PCI0.LPCB.PGRC */ } Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings { IRQ (Level, ActiveLow, Shared, ) {1,3,4,5,6,7,10,12,14,15} }) Method (_CRS, 0, Serialized) // _CRS: Current Resource Settings { Name (RTLG, ResourceTemplate () { IRQ (Level, ActiveLow, Shared, ) {} }) CreateWordField (RTLG, One, IRQ0) Store (Zero, IRQ0) /* \_SB_.PCI0.LPCB.LNKG._CRS.IRQ0 */ ShiftLeft (One, And (PGRC, 0x0F), IRQ0) /* \_SB_.PCI0.LPCB.LNKG._CRS.IRQ0 */ Return (RTLG) /* \_SB_.PCI0.LPCB.LNKG._CRS.RTLG */ } Method (_SRS, 1, Serialized) // _SRS: Set Resource Settings { CreateWordField (Arg0, One, IRQ0) FindSetRightBit (IRQ0, Local0) Decrement (Local0) Store (Local0, PGRC) /* \_SB_.PCI0.LPCB.PGRC */ } Method (_STA, 0, Serialized) // _STA: Status { If (And (PGRC, 0x80)) { Return (0x09) } Else { Return (0x0B) } } } Device (LNKH) { Name (_HID, EisaId ("PNP0C0F") /* PCI Interrupt Link Device */) // _HID: Hardware ID Name (_UID, 0x08) // _UID: Unique ID Method (_DIS, 0, Serialized) // _DIS: Disable Device { Store (0x80, PHRC) /* \_SB_.PCI0.LPCB.PHRC */ } Name (_PRS, ResourceTemplate () // _PRS: Possible Resource Settings { IRQ (Level, ActiveLow, Shared, ) {1,3,4,5,6,7,11,12,14,15} }) Method (_CRS, 0, Serialized) // _CRS: Current Resource Settings { Name (RTLH, ResourceTemplate () { IRQ (Level, ActiveLow, Shared, ) {} }) CreateWordField (RTLH, One, IRQ0) Store (Zero, IRQ0) /* \_SB_.PCI0.LPCB.LNKH._CRS.IRQ0 */ ShiftLeft (One, And (PHRC, 0x0F), IRQ0) /* \_SB_.PCI0.LPCB.LNKH._CRS.IRQ0 */ Return (RTLH) /* \_SB_.PCI0.LPCB.LNKH._CRS.RTLH */ } Method (_SRS, 1, Serialized) // _SRS: Set Resource Settings { CreateWordField (Arg0, One, IRQ0) FindSetRightBit (IRQ0, Local0) Decrement (Local0) Store (Local0, PHRC) /* \_SB_.PCI0.LPCB.PHRC */ } Method (_STA, 0, Serialized) // _STA: Status { If (And (PHRC, 0x80)) { Return (0x09) } Else { Return (0x0B) } } } Device (DMAC) { Name (_HID, EisaId ("PNP0200") /* PC-class DMA Controller */) // _HID: Hardware ID Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings { IO (Decode16, 0x0000, // Range Minimum 0x0000, // Range Maximum 0x01, // Alignment 0x20, // Length ) IO (Decode16, 0x0081, // Range Minimum 0x0081, // Range Maximum 0x01, // Alignment 0x11, // Length ) IO (Decode16, 0x0093, // Range Minimum 0x0093, // Range Maximum 0x01, // Alignment 0x0D, // Length ) IO (Decode16, 0x00C0, // Range Minimum 0x00C0, // Range Maximum 0x01, // Alignment 0x20, // Length ) DMA (Compatibility, NotBusMaster, Transfer8_16, ) {4} }) } Device (FWHD) { Name (_HID, EisaId ("INT0800") /* Intel 82802 Firmware Hub Device */) // _HID: Hardware ID Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings { Memory32Fixed (ReadOnly, 0xFF000000, // Address Base 0x01000000, // Address Length ) }) } Device (HPET) { Name (_HID, EisaId ("PNP0103") /* HPET System Timer */) // _HID: Hardware ID Name (_CID, EisaId ("PNP0C01") /* System Board */) // _CID: Compatible ID Name (BUF0, ResourceTemplate () { Memory32Fixed (ReadOnly, 0xFED00000, // Address Base 0x00000400, // Address Length _Y14) }) Method (_STA, 0, NotSerialized) // _STA: Status { If (LGreaterEqual (OSYS, 0x07D1)) { If (HPAE) { Return (0x0F) } } Else { If (HPAE) { Return (0x0B) } } Return (Zero) } Method (_CRS, 0, Serialized) // _CRS: Current Resource Settings { If (HPAE) { CreateDWordField (BUF0, \_SB.PCI0.LPCB.HPET._Y14._BAS, HPT0) // _BAS: Base Address If (LEqual (HPAS, One)) { Store (0xFED01000, HPT0) /* \_SB_.PCI0.LPCB.HPET._CRS.HPT0 */ } If (LEqual (HPAS, 0x02)) { Store (0xFED02000, HPT0) /* \_SB_.PCI0.LPCB.HPET._CRS.HPT0 */ } If (LEqual (HPAS, 0x03)) { Store (0xFED03000, HPT0) /* \_SB_.PCI0.LPCB.HPET._CRS.HPT0 */ } } Return (BUF0) /* \_SB_.PCI0.LPCB.HPET.BUF0 */ } } Device (IPIC) { Name (_HID, EisaId ("PNP0000") /* 8259-compatible Programmable Interrupt Controller */) // _HID: Hardware ID Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings { IO (Decode16, 0x0020, // Range Minimum 0x0020, // Range Maximum 0x01, // Alignment 0x02, // Length ) IO (Decode16, 0x0024, // Range Minimum 0x0024, // Range Maximum 0x01, // Alignment 0x02, // Length ) IO (Decode16, 0x0028, // Range Minimum 0x0028, // Range Maximum 0x01, // Alignment 0x02, // Length ) IO (Decode16, 0x002C, // Range Minimum 0x002C, // Range Maximum 0x01, // Alignment 0x02, // Length ) IO (Decode16, 0x0030, // Range Minimum 0x0030, // Range Maximum 0x01, // Alignment 0x02, // Length ) IO (Decode16, 0x0034, // Range Minimum 0x0034, // Range Maximum 0x01, // Alignment 0x02, // Length ) IO (Decode16, 0x0038, // Range Minimum 0x0038, // Range Maximum 0x01, // Alignment 0x02, // Length ) IO (Decode16, 0x003C, // Range Minimum 0x003C, // Range Maximum 0x01, // Alignment 0x02, // Length ) IO (Decode16, 0x00A0, // Range Minimum 0x00A0, // Range Maximum 0x01, // Alignment 0x02, // Length ) IO (Decode16, 0x00A4, // Range Minimum 0x00A4, // Range Maximum 0x01, // Alignment 0x02, // Length ) IO (Decode16, 0x00A8, // Range Minimum 0x00A8, // Range Maximum 0x01, // Alignment 0x02, // Length ) IO (Decode16, 0x00AC, // Range Minimum 0x00AC, // Range Maximum 0x01, // Alignment 0x02, // Length ) IO (Decode16, 0x00B0, // Range Minimum 0x00B0, // Range Maximum 0x01, // Alignment 0x02, // Length ) IO (Decode16, 0x00B4, // Range Minimum 0x00B4, // Range Maximum 0x01, // Alignment 0x02, // Length ) IO (Decode16, 0x00B8, // Range Minimum 0x00B8, // Range Maximum 0x01, // Alignment 0x02, // Length ) IO (Decode16, 0x00BC, // Range Minimum 0x00BC, // Range Maximum 0x01, // Alignment 0x02, // Length ) IO (Decode16, 0x04D0, // Range Minimum 0x04D0, // Range Maximum 0x01, // Alignment 0x02, // Length ) IRQNoFlags () {2} }) } Device (MATH) { Name (_HID, EisaId ("PNP0C04") /* x87-compatible Floating Point Processing Unit */) // _HID: Hardware ID Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings { IO (Decode16, 0x00F0, // Range Minimum 0x00F0, // Range Maximum 0x01, // Alignment 0x01, // Length ) IRQNoFlags () {13} }) } Device (LDRC) { Name (_HID, EisaId ("PNP0C02") /* PNP Motherboard Resources */) // _HID: Hardware ID Name (_UID, 0x02) // _UID: Unique ID Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings { IO (Decode16, 0x002E, // Range Minimum 0x002E, // Range Maximum 0x01, // Alignment 0x02, // Length ) IO (Decode16, 0x004E, // Range Minimum 0x004E, // Range Maximum 0x01, // Alignment 0x02, // Length ) IO (Decode16, 0x0061, // Range Minimum 0x0061, // Range Maximum 0x01, // Alignment 0x01, // Length ) IO (Decode16, 0x0063, // Range Minimum 0x0063, // Range Maximum 0x01, // Alignment 0x01, // Length ) IO (Decode16, 0x0065, // Range Minimum 0x0065, // Range Maximum 0x01, // Alignment 0x01, // Length ) IO (Decode16, 0x0067, // Range Minimum 0x0067, // Range Maximum 0x01, // Alignment 0x01, // Length ) IO (Decode16, 0x0080, // Range Minimum 0x0080, // Range Maximum 0x01, // Alignment 0x01, // Length ) IO (Decode16, 0x0092, // Range Minimum 0x0092, // Range Maximum 0x01, // Alignment 0x01, // Length ) IO (Decode16, 0x00B2, // Range Minimum 0x00B2, // Range Maximum 0x01, // Alignment 0x02, // Length ) IO (Decode16, 0x0680, // Range Minimum 0x0680, // Range Maximum 0x01, // Alignment 0x20, // Length ) IO (Decode16, 0x0800, // Range Minimum 0x0800, // Range Maximum 0x01, // Alignment 0x10, // Length ) IO (Decode16, 0x1000, // Range Minimum 0x1000, // Range Maximum 0x01, // Alignment 0x80, // Length ) IO (Decode16, 0x1180, // Range Minimum 0x1180, // Range Maximum 0x01, // Alignment 0x40, // Length ) IO (Decode16, 0xFE00, // Range Minimum 0xFE00, // Range Maximum 0x01, // Alignment 0x01, // Length ) IO (Decode16, 0xFF00, // Range Minimum 0xFF00, // Range Maximum 0x01, // Alignment 0x80, // Length ) }) } Device (RTC) { Name (_HID, EisaId ("PNP0B00") /* AT Real-Time Clock */) // _HID: Hardware ID Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings { IO (Decode16, 0x0070, // Range Minimum 0x0070, // Range Maximum 0x01, // Alignment 0x08, // Length ) IRQNoFlags () {8} }) } Device (TIMR) { Name (_HID, EisaId ("PNP0100") /* PC-class System Timer */) // _HID: Hardware ID Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings { IO (Decode16, 0x0040, // Range Minimum 0x0040, // Range Maximum 0x01, // Alignment 0x04, // Length ) IO (Decode16, 0x0050, // Range Minimum 0x0050, // Range Maximum 0x10, // Alignment 0x04, // Length ) IRQNoFlags () {0} }) } Device (ACAD) { Name (_HID, "ACPI0003" /* Power Source Device */) // _HID: Hardware ID Name (_PCL, Package (0x01) // _PCL: Power Consumer List { _SB }) Method (_PSR, 0, NotSerialized) // _PSR: Power Source { Store (One, ACPW) /* \ACPW */ Return (ACPW) /* \ACPW */ } } Method (ECOK, 0, NotSerialized) { If (LEqual (^EC0.Z009, One)) { Return (One) } Else { Return (Zero) } } Device (EC0) { Name (_HID, EisaId ("PNP0C09") /* Embedded Controller Device */) // _HID: Hardware ID Name (_GPE, 0x1C) // _GPE: General Purpose Events Name (Z009, Zero) Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings { IO (Decode16, 0x0062, // Range Minimum 0x0062, // Range Maximum 0x01, // Alignment 0x01, // Length ) IO (Decode16, 0x0066, // Range Minimum 0x0066, // Range Maximum 0x01, // Alignment 0x01, // Length ) }) Method (_REG, 2, NotSerialized) // _REG: Region Availability { If (LEqual (Arg0, 0x03)) { Store (Arg1, Z009) /* \_SB_.PCI0.LPCB.EC0_.Z009 */ If (CondRefOf (_OSI, Local0)) { Store (Zero, BTDS) /* \_SB_.PCI0.LPCB.EC0_.BTDS */ If (_OSI ("Windows 2006")) { Store (One, BTDS) /* \_SB_.PCI0.LPCB.EC0_.BTDS */ } } } } OperationRegion (ERAM, EmbeddedControl, Zero, 0xFF) Field (ERAM, ByteAcc, Lock, Preserve) { Offset (0x60), SMPR, 8, SMST, 8, SMAD, 8, SMCM, 8, SMD0, 256, BCNT, 8, SMAA, 24, Offset (0x90), CHGM, 16, CHGS, 16, ENID, 8, ENIB, 8, ENDD, 8, CHGV, 8, CHGA, 16, BAL0, 1, BAL1, 1, BAL2, 1, BAL3, 1, BBC0, 1, BBC1, 1, BBC2, 1, BBC3, 1, Offset (0x9C), PHDD, 1, IFDD, 1, IODD, 1, SHDD, 1, S120, 1, EFDD, 1, CRTD, 1, SPWR, 1, SBTN, 1, VIDO, 1, VOLD, 1, VOLU, 1, MUTE, 1, CONT, 1, BRGT, 1, HBTN, 1, S4ST, 1, SKEY, 1, BKEY, 1, TOUP, 1, FNBN, 1, LIDF, 1, DIGM, 1, UWAK, 1, Offset (0xA0), DKSP, 1, DKIN, 1, DKID, 1, DKOK, 1, Offset (0xA1), DKPW, 1, Offset (0xA2), BTNS, 8, S1LD, 1, S3LD, 1, VGAQ, 1, PCMQ, 1, PCMR, 1, ADPT, 1, SLLS, 1, SYS7, 1, PWAK, 1, MWAK, 1, LWAK, 1, Offset (0xA5), Offset (0xAA), TCNL, 8, TMPI, 8, TMSD, 8, FASN, 4, FASU, 4, PCVL, 4, , 2, SWTO, 1, HWTO, 1, MODE, 1, FANS, 2, INIT, 1, FAN1, 1, FAN2, 1, FANT, 1, SKNM, 1, CTMP, 8, LIDE, 1, PMEE, 1, PWBE, 1, RNGE, 1, BTWE, 1, DCKE, 1, Offset (0xB2), SKTX, 8, SKTB, 8, SKTC, 8, SKTA, 8, Offset (0xB7), HAPL, 2, HAPR, 1, Offset (0xB8), BTDT, 1, BTPW, 1, BTDS, 1, BTPS, 1, BTSW, 1, BTWK, 1, BTLD, 1, Offset (0xB9), BRTS, 8, CNTS, 8, WLAT, 1, BTAT, 1, WLEX, 1, BTEX, 1, KLSW, 1, WLOK, 1, Offset (0xBC), PTID, 8, CPUT, 8, EPKT, 8, GHID, 8, , 4, BMF0, 3, BTY0, 1, BST0, 8, BRC0, 16, BSN0, 16, BPV0, 16, BDV0, 16, BDC0, 16, BFC0, 16, GAU0, 8, CYC0, 8, BPC0, 16, BAC0, 16, BAT0, 8, BTW0, 16, BDN0, 8, Offset (0xE0), , 4, BMF1, 3, BTY1, 1, BST1, 8, BRC1, 16, BSN1, 16, BPV1, 16, BDV1, 16, BDC1, 16, BFC1, 16, GAU1, 8, CYC1, 8, BPC1, 16, BAC1, 16, BAT1, 8, BTW1, 16 } Method (_Q11, 0, NotSerialized) // _Qxx: EC Query { Store (0x87, P80H) /* \P80H */ If (IGDS) { ^^^GFX0.BRTN (0x87) } Else { Notify (^^^PEGP.VGA.LCD, 0x87) // Device-Specific } } Method (_Q12, 0, NotSerialized) // _Qxx: EC Query { Store (0x86, P80H) /* \P80H */ If (IGDS) { ^^^GFX0.BRTN (0x86) } Else { Notify (^^^PEGP.VGA.LCD, 0x86) // Device-Specific } } Method (_Q1C, 0, NotSerialized) // _Qxx: EC Query { Store ("=====QUERY_1C=====", Debug) If (VIDO) { If (IGDS) { ^^^GFX0.GHDS (Zero) } Else { ^^^PEGP.VGA.DSSW () } Store (Zero, VIDO) /* \_SB_.PCI0.LPCB.EC0_.VIDO */ } } Method (_Q1D, 0, NotSerialized) // _Qxx: EC Query { Store ("=====QUERY_1D=====", Debug) PCLK () } Method (_Q1E, 0, NotSerialized) // _Qxx: EC Query { Store ("=====QUERY_1E=====", Debug) PCLK () } Method (_Q25, 0, NotSerialized) // _Qxx: EC Query { Store ("=====QUERY_25=====", Debug) Sleep (0x03E8) Notify (^^BAT1, 0x81) // Information Change Sleep (0x03E8) Notify (^^BAT1, 0x80) // Status Change } Method (_Q34, 0, NotSerialized) // _Qxx: EC Query { Store ("=====QUERY_34=====", Debug) If (BKEY) { PHSS (0x71) Store (Zero, BKEY) /* \_SB_.PCI0.LPCB.EC0_.BKEY */ } } Method (_Q37, 0, NotSerialized) // _Qxx: EC Query { Store ("=====QUERY_37=====", Debug) Notify (ACAD, 0x80) // Status Change Sleep (0x03E8) Notify (^^BAT1, 0x80) // Status Change } Method (_Q38, 0, NotSerialized) // _Qxx: EC Query { Store ("=====QUERY_38=====", Debug) Notify (ACAD, 0x80) // Status Change Sleep (0x03E8) Notify (^^BAT1, 0x80) // Status Change } Method (_Q2D, 0, NotSerialized) // _Qxx: EC Query { Store ("=====QUERY_2D=====", Debug) Store (Zero, DTSM) /* \DTSM */ TRAP (0x46) } Method (_Q2E, 0, NotSerialized) // _Qxx: EC Query { Store ("=====QUERY_2E=====", Debug) Store (One, DTSM) /* \DTSM */ TRAP (0x46) } OperationRegion (CCLK, SystemIO, 0x1010, 0x04) Field (CCLK, DWordAcc, NoLock, Preserve) { , 1, DUTY, 3, THEN, 1, Offset (0x01), FTT, 1, , 8, TSTS, 1 } OperationRegion (ECRM, EmbeddedControl, Zero, 0xFF) Field (ECRM, ByteAcc, Lock, Preserve) { Offset (0x94), ERIB, 16, ERBD, 8, Offset (0xAC), SDTM, 8, FSSN, 4, FANU, 4, PTVL, 3, , 4, TTHR, 1, Offset (0xBC), PJID, 8, Offset (0xBE), Offset (0xF9), RFRD, 16 } Mutex (FAMX, 0x00) Method (FANG, 1, NotSerialized) { Acquire (FAMX, 0xFFFF) Store (Arg0, ERIB) /* \_SB_.PCI0.LPCB.EC0_.ERIB */ Store (ERBD, Local0) Release (FAMX) Return (Local0) } Method (FANW, 2, NotSerialized) { Acquire (FAMX, 0xFFFF) Store (Arg0, ERIB) /* \_SB_.PCI0.LPCB.EC0_.ERIB */ Store (Arg1, ERBD) /* \_SB_.PCI0.LPCB.EC0_.ERBD */ Release (FAMX) Return (Arg1) } Method (TUVR, 1, NotSerialized) { Return (0x03) } Method (THRO, 1, NotSerialized) { If (LEqual (Arg0, Zero)) { Return (THEN) /* \_SB_.PCI0.LPCB.EC0_.THEN */ } Else { If (LEqual (Arg0, One)) { Return (DUTY) /* \_SB_.PCI0.LPCB.EC0_.DUTY */ } Else { If (LEqual (Arg0, 0x02)) { Return (TTHR) /* \_SB_.PCI0.LPCB.EC0_.TTHR */ } Else { Return (0xFF) } } } } Method (CLCK, 1, NotSerialized) { If (LEqual (Arg0, Zero)) { Store (Zero, THEN) /* \_SB_.PCI0.LPCB.EC0_.THEN */ Store (Zero, FTT) /* \_SB_.PCI0.LPCB.EC0_.FTT_ */ } Else { Store (Arg0, DUTY) /* \_SB_.PCI0.LPCB.EC0_.DUTY */ Store (One, THEN) /* \_SB_.PCI0.LPCB.EC0_.THEN */ } Return (THEN) /* \_SB_.PCI0.LPCB.EC0_.THEN */ } Method (PCLK, 0, NotSerialized) { Store (PTVL, Local0) If (LEqual (Local0, Zero)) { Store (Zero, THEN) /* \_SB_.PCI0.LPCB.EC0_.THEN */ Store (Zero, FTT) /* \_SB_.PCI0.LPCB.EC0_.FTT_ */ } Else { Decrement (Local0) Store (Not (Local0), Local1) And (Local1, 0x07, Local1) Store (Local1, DUTY) /* \_SB_.PCI0.LPCB.EC0_.DUTY */ Store (One, THEN) /* \_SB_.PCI0.LPCB.EC0_.THEN */ } } } Device (BAT1) { Name (_HID, EisaId ("PNP0C0A") /* Control Method Battery */) // _HID: Hardware ID Name (_UID, One) // _UID: Unique ID Name (_PCL, Package (0x01) // _PCL: Power Consumer List { _SB }) Method (_STA, 0, NotSerialized) // _STA: Status { If (LAnd (ECOK (), LEqual (ECDY, Zero))) { If (^^EC0.BAL0) { Sleep (0x14) Return (0x1F) } Else { Sleep (0x14) Return (0x0F) } } Else { Sleep (0x14) Return (0x1F) } } Method (_BIF, 0, NotSerialized) // _BIF: Battery Information { Name (STAT, Package (0x0D) { One, 0x0FA0, 0x0FA0, One, 0x2B5C, 0x01A4, 0x9C, 0x0108, 0x0EC4, "PA3465U ", "3658Q", "Li-Ion", "COMPAL " }) If (LAnd (ECOK (), LEqual (ECDY, Zero))) { Store (^^EC0.BDN0, Local0) If (LEqual (Local0, 0x08)) { Store (0xB4, Index (STAT, 0x06)) Store ("PA3457U ", Index (STAT, 0x09)) } If (LEqual (Local0, 0x20)) { Store (0x0102, Index (STAT, 0x06)) Store ("PA3457U ", Index (STAT, 0x09)) } Sleep (0x14) Store (^^EC0.BDC0, BFC1) /* \BFC1 */ Sleep (0x14) } Else { Store ("Li-Ion", Index (STAT, 0x0B)) } If (BFC1) { Divide (BFC1, 0x64, Local0, Local1) Multiply (Local1, 0x64, Local1) Store (Local1, BFC1) /* \BFC1 */ Store (Local1, Index (STAT, One)) Store (Local1, Index (STAT, 0x02)) } Return (STAT) /* \_SB_.PCI0.LPCB.BAT1._BIF.STAT */ } Method (_BST, 0, NotSerialized) // _BST: Battery Status { Name (PBST, Package (0x04) { Zero, 0xFFFFFFFF, 0xFFFFFFFF, 0x2B5C }) Store (0x2B5C, Local3) If (LAnd (ECOK (), LEqual (ECDY, Zero))) { Sleep (0x14) Store (^^EC0.BST0, BST1) /* \BST1 */ Sleep (0x14) Store (^^EC0.GAU0, BGU1) /* \BGU1 */ Sleep (0x14) } If (BFC1) { Multiply (BGU1, BFC1, Local2) Divide (Local2, 0x64, Local4, Local2) } Else { Multiply (BGU1, 0x28, Local2) } Store (BST1, Index (PBST, Zero)) Store (Zero, Index (PBST, One)) Store (Local2, Index (PBST, 0x02)) Store (Local3, Index (PBST, 0x03)) If (LGreater (ECDY, Zero)) { Decrement (ECDY) If (LEqual (ECDY, Zero)) { Notify (BAT1, 0x80) // Status Change } } Return (PBST) /* \_SB_.PCI0.LPCB.BAT1._BST.PBST */ } } Device (PS2K) { Name (_HID, EisaId ("PNP0303") /* IBM Enhanced Keyboard (101/102-key, PS/2 Mouse) */) // _HID: Hardware ID Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings { IO (Decode16, 0x0060, // Range Minimum 0x0060, // Range Maximum 0x01, // Alignment 0x01, // Length ) IO (Decode16, 0x0064, // Range Minimum 0x0064, // Range Maximum 0x01, // Alignment 0x01, // Length ) IRQ (Edge, ActiveHigh, Exclusive, ) {1} }) } Device (PS2M) { Name (_HID, EisaId ("PNP0F13")) // _HID: Hardware ID Name (_CRS, ResourceTemplate () // _CRS: Current Resource Settings { IRQ (Edge, ActiveHigh, Exclusive, ) {12} }) } } Device (PATA) { Name (_ADR, 0x001F0001) // _ADR: Address OperationRegion (PACS, PCI_Config, 0x40, 0xC0) Field (PACS, DWordAcc, NoLock, Preserve) { PRIT, 16, Offset (0x04), PSIT, 4, Offset (0x08), SYNC, 4, Offset (0x0A), SDT0, 2, , 2, SDT1, 2, Offset (0x14), ICR0, 4, ICR1, 4, ICR2, 4, ICR3, 4, ICR4, 4, ICR5, 4 } Device (PRID) { Name (_ADR, Zero) // _ADR: Address Method (_GTM, 0, NotSerialized) // _GTM: Get Timing Mode { Name (PBUF, Buffer (0x14) { /* 0000 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0008 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0010 */ 0x00, 0x00, 0x00, 0x00 }) CreateDWordField (PBUF, Zero, PIO0) CreateDWordField (PBUF, 0x04, DMA0) CreateDWordField (PBUF, 0x08, PIO1) CreateDWordField (PBUF, 0x0C, DMA1) CreateDWordField (PBUF, 0x10, FLAG) Store (GETP (PRIT), PIO0) /* \_SB_.PCI0.PATA.PRID._GTM.PIO0 */ Store (GDMA (And (SYNC, One), And (ICR3, One), And (ICR0, One), SDT0, And (ICR1, One)), DMA0) /* \_SB_.PCI0.PATA.PRID._GTM.DMA0 */ If (LEqual (DMA0, 0xFFFFFFFF)) { Store (PIO0, DMA0) /* \_SB_.PCI0.PATA.PRID._GTM.DMA0 */ } If (And (PRIT, 0x4000)) { If (LEqual (And (PRIT, 0x90), 0x80)) { Store (0x0384, PIO1) /* \_SB_.PCI0.PATA.PRID._GTM.PIO1 */ } Else { Store (GETT (PSIT), PIO1) /* \_SB_.PCI0.PATA.PRID._GTM.PIO1 */ } } Else { Store (0xFFFFFFFF, PIO1) /* \_SB_.PCI0.PATA.PRID._GTM.PIO1 */ } Store (GDMA (And (SYNC, 0x02), And (ICR3, 0x02), And (ICR0, 0x02), SDT1, And (ICR1, 0x02)), DMA1) /* \_SB_.PCI0.PATA.PRID._GTM.DMA1 */ If (LEqual (DMA1, 0xFFFFFFFF)) { Store (PIO1, DMA1) /* \_SB_.PCI0.PATA.PRID._GTM.DMA1 */ } Store (GETF (And (SYNC, One), And (SYNC, 0x02), PRIT), FLAG) /* \_SB_.PCI0.PATA.PRID._GTM.FLAG */ If (And (LEqual (PIO0, 0xFFFFFFFF), LEqual (DMA0, 0xFFFFFFFF))) { Store (0x78, PIO0) /* \_SB_.PCI0.PATA.PRID._GTM.PIO0 */ Store (0x14, DMA0) /* \_SB_.PCI0.PATA.PRID._GTM.DMA0 */ Store (0x03, FLAG) /* \_SB_.PCI0.PATA.PRID._GTM.FLAG */ } Return (PBUF) /* \_SB_.PCI0.PATA.PRID._GTM.PBUF */ } Method (_STM, 3, NotSerialized) // _STM: Set Timing Mode { CreateDWordField (Arg0, Zero, PIO0) CreateDWordField (Arg0, 0x04, DMA0) CreateDWordField (Arg0, 0x08, PIO1) CreateDWordField (Arg0, 0x0C, DMA1) CreateDWordField (Arg0, 0x10, FLAG) If (LEqual (SizeOf (Arg1), 0x0200)) { And (PRIT, 0xC0F0, PRIT) /* \_SB_.PCI0.PATA.PRIT */ And (SYNC, 0x02, SYNC) /* \_SB_.PCI0.PATA.SYNC */ Store (Zero, SDT0) /* \_SB_.PCI0.PATA.SDT0 */ And (ICR0, 0x02, ICR0) /* \_SB_.PCI0.PATA.ICR0 */ And (ICR1, 0x02, ICR1) /* \_SB_.PCI0.PATA.ICR1 */ And (ICR3, 0x02, ICR3) /* \_SB_.PCI0.PATA.ICR3 */ And (ICR5, 0x02, ICR5) /* \_SB_.PCI0.PATA.ICR5 */ CreateWordField (Arg1, 0x62, W490) CreateWordField (Arg1, 0x6A, W530) CreateWordField (Arg1, 0x7E, W630) CreateWordField (Arg1, 0x80, W640) CreateWordField (Arg1, 0xB0, W880) CreateWordField (Arg1, 0xBA, W930) Or (PRIT, 0x8004, PRIT) /* \_SB_.PCI0.PATA.PRIT */ If (LAnd (And (FLAG, 0x02), And (W490, 0x0800))) { Or (PRIT, 0x02, PRIT) /* \_SB_.PCI0.PATA.PRIT */ } Or (PRIT, SETP (PIO0, W530, W640), PRIT) /* \_SB_.PCI0.PATA.PRIT */ If (And (FLAG, One)) { Or (SYNC, One, SYNC) /* \_SB_.PCI0.PATA.SYNC */ Store (SDMA (DMA0), SDT0) /* \_SB_.PCI0.PATA.SDT0 */ If (LLess (DMA0, 0x1E)) { Or (ICR3, One, ICR3) /* \_SB_.PCI0.PATA.ICR3 */ } If (LLess (DMA0, 0x3C)) { Or (ICR0, One, ICR0) /* \_SB_.PCI0.PATA.ICR0 */ } If (And (W930, 0x2000)) { Or (ICR1, One, ICR1) /* \_SB_.PCI0.PATA.ICR1 */ } } } If (LEqual (SizeOf (Arg2), 0x0200)) { And (PRIT, 0xBF0F, PRIT) /* \_SB_.PCI0.PATA.PRIT */ Store (Zero, PSIT) /* \_SB_.PCI0.PATA.PSIT */ And (SYNC, One, SYNC) /* \_SB_.PCI0.PATA.SYNC */ Store (Zero, SDT1) /* \_SB_.PCI0.PATA.SDT1 */ And (ICR0, One, ICR0) /* \_SB_.PCI0.PATA.ICR0 */ And (ICR1, One, ICR1) /* \_SB_.PCI0.PATA.ICR1 */ And (ICR3, One, ICR3) /* \_SB_.PCI0.PATA.ICR3 */ And (ICR5, One, ICR5) /* \_SB_.PCI0.PATA.ICR5 */ CreateWordField (Arg2, 0x62, W491) CreateWordField (Arg2, 0x6A, W531) CreateWordField (Arg2, 0x7E, W631) CreateWordField (Arg2, 0x80, W641) CreateWordField (Arg2, 0xB0, W881) CreateWordField (Arg2, 0xBA, W931) Or (PRIT, 0x8040, PRIT) /* \_SB_.PCI0.PATA.PRIT */ If (LAnd (And (FLAG, 0x08), And (W491, 0x0800))) { Or (PRIT, 0x20, PRIT) /* \_SB_.PCI0.PATA.PRIT */ } If (And (FLAG, 0x10)) { Or (PRIT, 0x4000, PRIT) /* \_SB_.PCI0.PATA.PRIT */ If (LGreater (PIO1, 0xF0)) { Or (PRIT, 0x80, PRIT) /* \_SB_.PCI0.PATA.PRIT */ } Else { Or (PRIT, 0x10, PRIT) /* \_SB_.PCI0.PATA.PRIT */ Store (SETT (PIO1, W531, W641), PSIT) /* \_SB_.PCI0.PATA.PSIT */ } } If (And (FLAG, 0x04)) { Or (SYNC, 0x02, SYNC) /* \_SB_.PCI0.PATA.SYNC */ Store (SDMA (DMA1), SDT1) /* \_SB_.PCI0.PATA.SDT1 */ If (LLess (DMA1, 0x1E)) { Or (ICR3, 0x02, ICR3) /* \_SB_.PCI0.PATA.ICR3 */ } If (LLess (DMA1, 0x3C)) { Or (ICR0, 0x02, ICR0) /* \_SB_.PCI0.PATA.ICR0 */ } If (And (W931, 0x2000)) { Or (ICR1, 0x02, ICR1) /* \_SB_.PCI0.PATA.ICR1 */ } } } } Device (P_D0) { Name (_ADR, Zero) // _ADR: Address Method (_GTF, 0, NotSerialized) // _GTF: Get Task File { Name (PIB0, Buffer (0x0E) { /* 0000 */ 0x03, 0x00, 0x00, 0x00, 0x00, 0xA0, 0xEF, 0x03, /* 0008 */ 0x00, 0x00, 0x00, 0x00, 0xA0, 0xEF }) CreateByteField (PIB0, One, PMD0) CreateByteField (PIB0, 0x08, DMD0) If (And (PRIT, 0x02)) { If (LEqual (And (PRIT, 0x09), 0x08)) { Store (0x08, PMD0) /* \_SB_.PCI0.PATA.PRID.P_D0._GTF.PMD0 */ } Else { Store (0x0A, PMD0) /* \_SB_.PCI0.PATA.PRID.P_D0._GTF.PMD0 */ ShiftRight (And (PRIT, 0x0300), 0x08, Local0) ShiftRight (And (PRIT, 0x3000), 0x0C, Local1) Add (Local0, Local1, Local2) If (LEqual (0x03, Local2)) { Store (0x0B, PMD0) /* \_SB_.PCI0.PATA.PRID.P_D0._GTF.PMD0 */ } If (LEqual (0x05, Local2)) { Store (0x0C, PMD0) /* \_SB_.PCI0.PATA.PRID.P_D0._GTF.PMD0 */ } } } Else { Store (One, PMD0) /* \_SB_.PCI0.PATA.PRID.P_D0._GTF.PMD0 */ } If (And (SYNC, One)) { Store (Or (SDT0, 0x40), DMD0) /* \_SB_.PCI0.PATA.PRID.P_D0._GTF.DMD0 */ If (And (ICR1, One)) { If (And (ICR0, One)) { Add (DMD0, 0x02, DMD0) /* \_SB_.PCI0.PATA.PRID.P_D0._GTF.DMD0 */ } If (And (ICR3, One)) { Store (0x45, DMD0) /* \_SB_.PCI0.PATA.PRID.P_D0._GTF.DMD0 */ } } } Else { Or (Subtract (And (PMD0, 0x07), 0x02), 0x20, DMD0) /* \_SB_.PCI0.PATA.PRID.P_D0._GTF.DMD0 */ } Return (PIB0) /* \_SB_.PCI0.PATA.PRID.P_D0._GTF.PIB0 */ } } Device (P_D1) { Name (_ADR, One) // _ADR: Address Method (_GTF, 0, NotSerialized) // _GTF: Get Task File { Name (PIB1, Buffer (0x0E) { /* 0000 */ 0x03, 0x00, 0x00, 0x00, 0x00, 0xB0, 0xEF, 0x03, /* 0008 */ 0x00, 0x00, 0x00, 0x00, 0xB0, 0xEF }) CreateByteField (PIB1, One, PMD1) CreateByteField (PIB1, 0x08, DMD1) If (And (PRIT, 0x20)) { If (LEqual (And (PRIT, 0x90), 0x80)) { Store (0x08, PMD1) /* \_SB_.PCI0.PATA.PRID.P_D1._GTF.PMD1 */ } Else { Add (And (PSIT, 0x03), ShiftRight (And (PSIT, 0x0C), 0x02), Local0) If (LEqual (0x05, Local0)) { Store (0x0C, PMD1) /* \_SB_.PCI0.PATA.PRID.P_D1._GTF.PMD1 */ } Else { If (LEqual (0x03, Local0)) { Store (0x0B, PMD1) /* \_SB_.PCI0.PATA.PRID.P_D1._GTF.PMD1 */ } Else { Store (0x0A, PMD1) /* \_SB_.PCI0.PATA.PRID.P_D1._GTF.PMD1 */ } } } } Else { Store (One, PMD1) /* \_SB_.PCI0.PATA.PRID.P_D1._GTF.PMD1 */ } If (And (SYNC, 0x02)) { Store (Or (SDT1, 0x40), DMD1) /* \_SB_.PCI0.PATA.PRID.P_D1._GTF.DMD1 */ If (And (ICR1, 0x02)) { If (And (ICR0, 0x02)) { Add (DMD1, 0x02, DMD1) /* \_SB_.PCI0.PATA.PRID.P_D1._GTF.DMD1 */ } If (And (ICR3, 0x02)) { Store (0x45, DMD1) /* \_SB_.PCI0.PATA.PRID.P_D1._GTF.DMD1 */ } } } Else { Or (Subtract (And (PMD1, 0x07), 0x02), 0x20, DMD1) /* \_SB_.PCI0.PATA.PRID.P_D1._GTF.DMD1 */ } Return (PIB1) /* \_SB_.PCI0.PATA.PRID.P_D1._GTF.PIB1 */ } } } } Device (SATA) { Name (_ADR, 0x001F0002) // _ADR: Address OperationRegion (SACS, PCI_Config, 0x40, 0xC0) Field (SACS, DWordAcc, NoLock, Preserve) { PRIT, 16, SECT, 16, PSIT, 4, SSIT, 4, Offset (0x08), SYNC, 4, Offset (0x0A), SDT0, 2, , 2, SDT1, 2, Offset (0x0B), SDT2, 2, , 2, SDT3, 2, Offset (0x14), ICR0, 4, ICR1, 4, ICR2, 4, ICR3, 4, ICR4, 4, ICR5, 4, Offset (0x50), MAPV, 2 } } Device (SBUS) { Name (_ADR, 0x001F0003) // _ADR: Address OperationRegion (SMBP, PCI_Config, 0x40, 0xC0) Field (SMBP, DWordAcc, NoLock, Preserve) { , 2, I2CE, 1 } OperationRegion (SMBI, SystemIO, 0x1C20, 0x10) Field (SMBI, ByteAcc, NoLock, Preserve) { HSTS, 8, Offset (0x02), HCON, 8, HCOM, 8, TXSA, 8, DAT0, 8, DAT1, 8, HBDR, 8, PECR, 8, RXSA, 8, SDAT, 16 } Method (SSXB, 2, Serialized) { If (STRT ()) { Return (Zero) } Store (Zero, I2CE) /* \_SB_.PCI0.SBUS.I2CE */ Store (0xBF, HSTS) /* \_SB_.PCI0.SBUS.HSTS */ Store (Arg0, TXSA) /* \_SB_.PCI0.SBUS.TXSA */ Store (Arg1, HCOM) /* \_SB_.PCI0.SBUS.HCOM */ Store (0x48, HCON) /* \_SB_.PCI0.SBUS.HCON */ If (COMP ()) { Or (HSTS, 0xFF, HSTS) /* \_SB_.PCI0.SBUS.HSTS */ Return (One) } Return (Zero) } Method (SRXB, 1, Serialized) { If (STRT ()) { Return (0xFFFF) } Store (Zero, I2CE) /* \_SB_.PCI0.SBUS.I2CE */ Store (0xBF, HSTS) /* \_SB_.PCI0.SBUS.HSTS */ Store (Or (Arg0, One), TXSA) /* \_SB_.PCI0.SBUS.TXSA */ Store (0x44, HCON) /* \_SB_.PCI0.SBUS.HCON */ If (COMP ()) { Or (HSTS, 0xFF, HSTS) /* \_SB_.PCI0.SBUS.HSTS */ Return (DAT0) /* \_SB_.PCI0.SBUS.DAT0 */ } Return (0xFFFF) } Method (SWRB, 3, Serialized) { If (STRT ()) { Return (Zero) } Store (Zero, I2CE) /* \_SB_.PCI0.SBUS.I2CE */ Store (0xBF, HSTS) /* \_SB_.PCI0.SBUS.HSTS */ Store (Arg0, TXSA) /* \_SB_.PCI0.SBUS.TXSA */ Store (Arg1, HCOM) /* \_SB_.PCI0.SBUS.HCOM */ Store (Arg2, DAT0) /* \_SB_.PCI0.SBUS.DAT0 */ Store (0x48, HCON) /* \_SB_.PCI0.SBUS.HCON */ If (COMP ()) { Or (HSTS, 0xFF, HSTS) /* \_SB_.PCI0.SBUS.HSTS */ Return (One) } Return (Zero) } Method (SRDB, 2, Serialized) { If (STRT ()) { Return (0xFFFF) } Store (Zero, I2CE) /* \_SB_.PCI0.SBUS.I2CE */ Store (0xBF, HSTS) /* \_SB_.PCI0.SBUS.HSTS */ Store (Or (Arg0, One), TXSA) /* \_SB_.PCI0.SBUS.TXSA */ Store (Arg1, HCOM) /* \_SB_.PCI0.SBUS.HCOM */ Store (0x48, HCON) /* \_SB_.PCI0.SBUS.HCON */ If (COMP ()) { Or (HSTS, 0xFF, HSTS) /* \_SB_.PCI0.SBUS.HSTS */ Return (DAT0) /* \_SB_.PCI0.SBUS.DAT0 */ } Return (0xFFFF) } Method (SWRW, 3, Serialized) { If (STRT ()) { Return (Zero) } Store (Zero, I2CE) /* \_SB_.PCI0.SBUS.I2CE */ Store (0xBF, HSTS) /* \_SB_.PCI0.SBUS.HSTS */ Store (Arg0, TXSA) /* \_SB_.PCI0.SBUS.TXSA */ Store (Arg1, HCOM) /* \_SB_.PCI0.SBUS.HCOM */ And (Arg2, 0xFF, DAT0) /* \_SB_.PCI0.SBUS.DAT0 */ And (ShiftRight (Arg2, 0x08), 0xFF, DAT1) /* \_SB_.PCI0.SBUS.DAT1 */ Store (0x4C, HCON) /* \_SB_.PCI0.SBUS.HCON */ If (COMP ()) { Or (HSTS, 0xFF, HSTS) /* \_SB_.PCI0.SBUS.HSTS */ Return (One) } Return (Zero) } Method (SRDW, 2, Serialized) { If (STRT ()) { Return (0xFFFF) } Store (Zero, I2CE) /* \_SB_.PCI0.SBUS.I2CE */ Store (0xBF, HSTS) /* \_SB_.PCI0.SBUS.HSTS */ Store (Or (Arg0, One), TXSA) /* \_SB_.PCI0.SBUS.TXSA */ Store (Arg1, HCOM) /* \_SB_.PCI0.SBUS.HCOM */ Store (0x4C, HCON) /* \_SB_.PCI0.SBUS.HCON */ If (COMP ()) { Or (HSTS, 0xFF, HSTS) /* \_SB_.PCI0.SBUS.HSTS */ Return (Or (ShiftLeft (DAT1, 0x08), DAT0)) } Return (0xFFFFFFFF) } Method (SBLW, 4, Serialized) { If (STRT ()) { Return (Zero) } Store (Arg3, I2CE) /* \_SB_.PCI0.SBUS.I2CE */ Store (0xBF, HSTS) /* \_SB_.PCI0.SBUS.HSTS */ Store (Arg0, TXSA) /* \_SB_.PCI0.SBUS.TXSA */ Store (Arg1, HCOM) /* \_SB_.PCI0.SBUS.HCOM */ Store (SizeOf (Arg2), DAT0) /* \_SB_.PCI0.SBUS.DAT0 */ Store (Zero, Local1) Store (DerefOf (Index (Arg2, Zero)), HBDR) /* \_SB_.PCI0.SBUS.HBDR */ Store (0x54, HCON) /* \_SB_.PCI0.SBUS.HCON */ While (LGreater (SizeOf (Arg2), Local1)) { Store (0x0FA0, Local0) While (LAnd (LNot (And (HSTS, 0x80)), Local0)) { Decrement (Local0) Stall (0x32) } If (LNot (Local0)) { KILL () Return (Zero) } Store (0x80, HSTS) /* \_SB_.PCI0.SBUS.HSTS */ Increment (Local1) If (LGreater (SizeOf (Arg2), Local1)) { Store (DerefOf (Index (Arg2, Local1)), HBDR) /* \_SB_.PCI0.SBUS.HBDR */ } } If (COMP ()) { Or (HSTS, 0xFF, HSTS) /* \_SB_.PCI0.SBUS.HSTS */ Return (One) } Return (Zero) } Method (SBLR, 3, Serialized) { Name (TBUF, Buffer (0x0100) {}) If (STRT ()) { Return (Zero) } Store (Arg2, I2CE) /* \_SB_.PCI0.SBUS.I2CE */ Store (0xBF, HSTS) /* \_SB_.PCI0.SBUS.HSTS */ Store (Or (Arg0, One), TXSA) /* \_SB_.PCI0.SBUS.TXSA */ Store (Arg1, HCOM) /* \_SB_.PCI0.SBUS.HCOM */ Store (0x54, HCON) /* \_SB_.PCI0.SBUS.HCON */ Store (0x0FA0, Local0) While (LAnd (LNot (And (HSTS, 0x80)), Local0)) { Decrement (Local0) Stall (0x32) } If (LNot (Local0)) { KILL () Return (Zero) } Store (DAT0, Index (TBUF, Zero)) Store (0x80, HSTS) /* \_SB_.PCI0.SBUS.HSTS */ Store (One, Local1) While (LLess (Local1, DerefOf (Index (TBUF, Zero)))) { Store (0x0FA0, Local0) While (LAnd (LNot (And (HSTS, 0x80)), Local0)) { Decrement (Local0) Stall (0x32) } If (LNot (Local0)) { KILL () Return (Zero) } Store (HBDR, Index (TBUF, Local1)) Store (0x80, HSTS) /* \_SB_.PCI0.SBUS.HSTS */ Increment (Local1) } If (COMP ()) { Or (HSTS, 0xFF, HSTS) /* \_SB_.PCI0.SBUS.HSTS */ Return (TBUF) /* \_SB_.PCI0.SBUS.SBLR.TBUF */ } Return (Zero) } Method (STRT, 0, Serialized) { Store (0xC8, Local0) While (Local0) { If (And (HSTS, 0x40)) { Decrement (Local0) Sleep (One) If (LEqual (Local0, Zero)) { Return (One) } } Else { Store (Zero, Local0) } } Store (0x0FA0, Local0) While (Local0) { If (And (HSTS, One)) { Decrement (Local0) Stall (0x32) If (LEqual (Local0, Zero)) { KILL () } } Else { Return (Zero) } } Return (One) } Method (COMP, 0, Serialized) { Store (0x0FA0, Local0) While (Local0) { If (And (HSTS, 0x02)) { Return (One) } Else { Decrement (Local0) Stall (0x32) If (LEqual (Local0, Zero)) { KILL () } } } Return (Zero) } Method (KILL, 0, Serialized) { Or (HCON, 0x02, HCON) /* \_SB_.PCI0.SBUS.HCON */ Or (HSTS, 0xFF, HSTS) /* \_SB_.PCI0.SBUS.HSTS */ } } } } } fwts-test/disassemble-0001/SSDT0.dsl.original000066400000000000000000000133731231470457100210460ustar00rootroot00000000000000/* * Intel ACPI Component Architecture * AML Disassembler version 20140325-64 [Mar 25 2014] * Copyright (c) 2000 - 2014 Intel Corporation * * Disassembly of /tmp/fwts_iasl_27987_SSDT.dat, Tue Mar 25 20:18:15 2014 * * Original Table Header: * Signature "SSDT" * Length 0x000002AD (685) * Revision 0x01 * Checksum 0x59 * OEM ID "SataRe" * OEM Table ID "SataAhci" * OEM Revision 0x00001000 (4096) * Compiler ID "INTL" * Compiler Version 0x20050624 (537200164) */ DefinitionBlock ("/tmp/fwts_iasl_27987_SSDT.aml", "SSDT", 1, "SataRe", "SataAhci", 0x00001000) { External (_SB_.PCI0.SATA, DeviceObj) External (GTF0, IntObj) External (GTF1, IntObj) External (GTF2, IntObj) Scope (\_SB.PCI0.SATA) { Device (PRT0) { Name (_ADR, 0xFFFF) // _ADR: Address Method (_SDD, 1, NotSerialized) // _SDD: Set Device Data { Name (GBU0, Buffer (0x07) { 0x00, 0x00, 0x00, 0x00, 0x00, 0xA0, 0x00 }) CreateByteField (GBU0, 0x00, GB00) CreateByteField (GBU0, 0x01, GB01) CreateByteField (GBU0, 0x02, GB02) CreateByteField (GBU0, 0x03, GB03) CreateByteField (GBU0, 0x04, GB04) CreateByteField (GBU0, 0x05, GB05) CreateByteField (GBU0, 0x06, GB06) If (LEqual (SizeOf (Arg0), 0x0200)) { CreateWordField (Arg0, 0x9C, W780) If (And (W780, 0x08)) { Store (0x10, GB00) /* \_SB_.PCI0.SATA.PRT0._SDD.GB00 */ Store (0x03, GB01) /* \_SB_.PCI0.SATA.PRT0._SDD.GB01 */ Store (0xEF, GB06) /* \_SB_.PCI0.SATA.PRT0._SDD.GB06 */ } Else { Store (0x90, GB00) /* \_SB_.PCI0.SATA.PRT0._SDD.GB00 */ Store (0x03, GB01) /* \_SB_.PCI0.SATA.PRT0._SDD.GB01 */ Store (0xEF, GB06) /* \_SB_.PCI0.SATA.PRT0._SDD.GB06 */ } } Store (GBU0, GTF0) /* External reference */ } Method (_GTF, 0, NotSerialized) // _GTF: Get Task File { Return (GTF0) /* External reference */ } } Device (PRT1) { Name (_ADR, 0x0001FFFF) // _ADR: Address Method (_SDD, 1, NotSerialized) // _SDD: Set Device Data { Name (GBU1, Buffer (0x07) { 0x00, 0x00, 0x00, 0x00, 0x00, 0xA0, 0x00 }) CreateByteField (GBU1, 0x00, GB10) CreateByteField (GBU1, 0x01, GB11) CreateByteField (GBU1, 0x02, GB12) CreateByteField (GBU1, 0x03, GB13) CreateByteField (GBU1, 0x04, GB14) CreateByteField (GBU1, 0x05, GB15) CreateByteField (GBU1, 0x06, GB16) If (LEqual (SizeOf (Arg0), 0x0200)) { CreateWordField (Arg0, 0x9C, W781) If (And (W781, 0x08)) { Store (0x10, GB10) /* \_SB_.PCI0.SATA.PRT1._SDD.GB10 */ Store (0x03, GB11) /* \_SB_.PCI0.SATA.PRT1._SDD.GB11 */ Store (0xEF, GB16) /* \_SB_.PCI0.SATA.PRT1._SDD.GB16 */ } Else { Store (0x90, GB10) /* \_SB_.PCI0.SATA.PRT1._SDD.GB10 */ Store (0x03, GB11) /* \_SB_.PCI0.SATA.PRT1._SDD.GB11 */ Store (0xEF, GB16) /* \_SB_.PCI0.SATA.PRT1._SDD.GB16 */ } } Store (GBU1, GTF1) /* External reference */ } Method (_GTF, 0, NotSerialized) // _GTF: Get Task File { Return (GTF1) /* External reference */ } } Device (PRT2) { Name (_ADR, 0x0002FFFF) // _ADR: Address Method (_SDD, 1, NotSerialized) // _SDD: Set Device Data { Name (GBU2, Buffer (0x07) { 0x00, 0x00, 0x00, 0x00, 0x00, 0xA0, 0x00 }) CreateByteField (GBU2, 0x00, GB20) CreateByteField (GBU2, 0x01, GB21) CreateByteField (GBU2, 0x02, GB22) CreateByteField (GBU2, 0x03, GB23) CreateByteField (GBU2, 0x04, GB24) CreateByteField (GBU2, 0x05, GB25) CreateByteField (GBU2, 0x06, GB26) If (LEqual (SizeOf (Arg0), 0x0200)) { CreateWordField (Arg0, 0x9C, W782) If (And (W782, 0x08)) { Store (0x10, GB20) /* \_SB_.PCI0.SATA.PRT2._SDD.GB20 */ Store (0x03, GB21) /* \_SB_.PCI0.SATA.PRT2._SDD.GB21 */ Store (0xEF, GB26) /* \_SB_.PCI0.SATA.PRT2._SDD.GB26 */ } Else { Store (0x90, GB20) /* \_SB_.PCI0.SATA.PRT2._SDD.GB20 */ Store (0x03, GB21) /* \_SB_.PCI0.SATA.PRT2._SDD.GB21 */ Store (0xEF, GB26) /* \_SB_.PCI0.SATA.PRT2._SDD.GB26 */ } } Store (GBU2, GTF2) /* External reference */ } Method (_GTF, 0, NotSerialized) // _GTF: Get Task File { Return (GTF2) /* External reference */ } } } } fwts-test/disassemble-0001/SSDT1.dsl.original000066400000000000000000000031071231470457100210410ustar00rootroot00000000000000/* * Intel ACPI Component Architecture * AML Disassembler version 20140325-64 [Mar 25 2014] * Copyright (c) 2000 - 2014 Intel Corporation * * Disassembly of /tmp/fwts_iasl_27987_SSDT.dat, Tue Mar 25 20:18:15 2014 * * Original Table Header: * Signature "SSDT" * Length 0x000000A3 (163) * Revision 0x01 * Checksum 0xED * OEM ID "BrtRef" * OEM Table ID "DD01BRT" * OEM Revision 0x00001000 (4096) * Compiler ID "INTL" * Compiler Version 0x20050624 (537200164) */ DefinitionBlock ("/tmp/fwts_iasl_27987_SSDT.aml", "SSDT", 1, "BrtRef", "DD01BRT", 0x00001000) { External (_SB_.PCI0.GFX0.DD03, DeviceObj) External (_SB_.PCI0.LPCB.EC0_.BRTS, UnknownObj) Scope (\_SB.PCI0.GFX0.DD03) { Method (_BCL, 0, NotSerialized) // _BCL: Brightness Control Levels { Return (Package (0x0A) { 0x46, 0x28, 0x00, 0x0A, 0x14, 0x1E, 0x28, 0x32, 0x3C, 0x46 }) } Method (_BCM, 1, NotSerialized) // _BCM: Brightness Control Method { Divide (Arg0, 0x0A, Local0, Local1) Store (Local1, \_SB.PCI0.LPCB.EC0.BRTS) /* External reference */ } Method (_BQC, 0, NotSerialized) // _BQC: Brightness Query Current { Multiply (\_SB.PCI0.LPCB.EC0.BRTS, 0x0A, Local0) Return (Local0) } } } fwts-test/disassemble-0001/SSDT2.dsl.original000066400000000000000000000161541231470457100210500ustar00rootroot00000000000000/* * Intel ACPI Component Architecture * AML Disassembler version 20140325-64 [Mar 25 2014] * Copyright (c) 2000 - 2014 Intel Corporation * * Disassembly of /tmp/fwts_iasl_27987_SSDT.dat, Tue Mar 25 20:18:15 2014 * * Original Table Header: * Signature "SSDT" * Length 0x0000025F (607) * Revision 0x01 * Checksum 0xC8 * OEM ID "PmRef" * OEM Table ID "Cpu0Tst" * OEM Revision 0x00003000 (12288) * Compiler ID "INTL" * Compiler Version 0x20050624 (537200164) */ DefinitionBlock ("/tmp/fwts_iasl_27987_SSDT.aml", "SSDT", 1, "PmRef", "Cpu0Tst", 0x00003000) { External (_PR_.CPU0, DeviceObj) External (_PSS, IntObj) External (CFGD, UnknownObj) External (PDC0, UnknownObj) Scope (\_PR.CPU0) { Name (_TPC, 0x00) // _TPC: Throttling Present Capabilities Method (_PTC, 0, NotSerialized) // _PTC: Processor Throttling Control { If (And (PDC0, 0x04)) { Return (Package (0x02) { ResourceTemplate () { Register (FFixedHW, 0x00, // Bit Width 0x00, // Bit Offset 0x0000000000000000, // Address ,) }, ResourceTemplate () { Register (FFixedHW, 0x00, // Bit Width 0x00, // Bit Offset 0x0000000000000000, // Address ,) } }) } Return (Package (0x02) { ResourceTemplate () { Register (SystemIO, 0x04, // Bit Width 0x01, // Bit Offset 0x0000000000001010, // Address ,) }, ResourceTemplate () { Register (SystemIO, 0x04, // Bit Width 0x01, // Bit Offset 0x0000000000001010, // Address ,) } }) } Name (TSSI, Package (0x08) { Package (0x05) { 0x64, 0x03E8, 0x00, 0x00, 0x00 }, Package (0x05) { 0x58, 0x036B, 0x00, 0x0F, 0x00 }, Package (0x05) { 0x4B, 0x02EE, 0x00, 0x0E, 0x00 }, Package (0x05) { 0x3F, 0x0271, 0x00, 0x0D, 0x00 }, Package (0x05) { 0x32, 0x01F4, 0x00, 0x0C, 0x00 }, Package (0x05) { 0x26, 0x0177, 0x00, 0x0B, 0x00 }, Package (0x05) { 0x19, 0xFA, 0x00, 0x0A, 0x00 }, Package (0x05) { 0x0D, 0x7D, 0x00, 0x09, 0x00 } }) Name (TSSM, Package (0x08) { Package (0x05) { 0x64, 0x03E8, 0x00, 0x00, 0x00 }, Package (0x05) { 0x58, 0x036B, 0x00, 0x1E, 0x00 }, Package (0x05) { 0x4B, 0x02EE, 0x00, 0x1C, 0x00 }, Package (0x05) { 0x3F, 0x0271, 0x00, 0x1A, 0x00 }, Package (0x05) { 0x32, 0x01F4, 0x00, 0x18, 0x00 }, Package (0x05) { 0x26, 0x0177, 0x00, 0x16, 0x00 }, Package (0x05) { 0x19, 0xFA, 0x00, 0x14, 0x00 }, Package (0x05) { 0x0D, 0x7D, 0x00, 0x12, 0x00 } }) Name (TSSF, 0x00) Method (_TSS, 0, NotSerialized) // _TSS: Throttling Supported States { If (LAnd (LNot (TSSF), CondRefOf (_PSS))) { Store (_PSS, Local0) Store (SizeOf (Local0), Local1) Decrement (Local1) Store (DerefOf (Index (DerefOf (Index (Local0, Local1)), 0x01)), Local2) Store (0x00, Local3) While (LLess (Local3, SizeOf (TSSI))) { Store (Divide (Multiply (Local2, Subtract (0x08, Local3)), 0x08, ), Local4) Store (Local4, Index (DerefOf (Index (TSSI, Local3)), 0x01)) Store (Local4, Index (DerefOf (Index (TSSM, Local3)), 0x01)) Increment (Local3) } Store (Ones, TSSF) /* \_PR_.CPU0.TSSF */ } If (And (PDC0, 0x04)) { Return (TSSM) /* \_PR_.CPU0.TSSM */ } Return (TSSI) /* \_PR_.CPU0.TSSI */ } Method (_TSD, 0, NotSerialized) // _TSD: Throttling State Dependencies { If (LAnd (And (CFGD, 0x01000000), LNot (And (PDC0, 0x04 )))) { Return (Package (0x01) { Package (0x05) { 0x05, 0x00, 0x00, 0xFD, 0x02 } }) } Return (Package (0x01) { Package (0x05) { 0x05, 0x00, 0x00, 0xFC, 0x01 } }) } } } fwts-test/disassemble-0001/SSDT3.dsl.original000066400000000000000000000040121231470457100210370ustar00rootroot00000000000000/* * Intel ACPI Component Architecture * AML Disassembler version 20140325-64 [Mar 25 2014] * Copyright (c) 2000 - 2014 Intel Corporation * * Disassembly of /tmp/fwts_iasl_27987_SSDT.dat, Tue Mar 25 20:18:15 2014 * * Original Table Header: * Signature "SSDT" * Length 0x000000A6 (166) * Revision 0x01 * Checksum 0x6D * OEM ID "PmRef" * OEM Table ID "Cpu1Tst" * OEM Revision 0x00003000 (12288) * Compiler ID "INTL" * Compiler Version 0x20050624 (537200164) */ DefinitionBlock ("/tmp/fwts_iasl_27987_SSDT.aml", "SSDT", 1, "PmRef", "Cpu1Tst", 0x00003000) { External (_PR_.CPU0._PTC, IntObj) External (_PR_.CPU0._TSS, IntObj) External (_PR_.CPU1, DeviceObj) External (CFGD, UnknownObj) External (PDC1, UnknownObj) Scope (\_PR.CPU1) { Name (_TPC, 0x00) // _TPC: Throttling Present Capabilities Method (_PTC, 0, NotSerialized) // _PTC: Processor Throttling Control { Return (\_PR.CPU0._PTC) /* External reference */ } Method (_TSS, 0, NotSerialized) // _TSS: Throttling Supported States { Return (\_PR.CPU0._TSS) /* External reference */ } Method (_TSD, 0, NotSerialized) // _TSD: Throttling State Dependencies { If (LAnd (And (CFGD, 0x01000000), LNot (And (PDC1, 0x04 )))) { Return (Package (0x01) { Package (0x05) { 0x05, 0x00, 0x00, 0xFD, 0x02 } }) } Return (Package (0x01) { Package (0x05) { 0x05, 0x00, 0x01, 0xFC, 0x01 } }) } } } fwts-test/disassemble-0001/SSDT4.dsl.original000066400000000000000000000170271231470457100210520ustar00rootroot00000000000000/* * Intel ACPI Component Architecture * AML Disassembler version 20140325-64 [Mar 25 2014] * Copyright (c) 2000 - 2014 Intel Corporation * * Disassembly of /tmp/fwts_iasl_27987_SSDT.dat, Tue Mar 25 20:18:15 2014 * * Original Table Header: * Signature "SSDT" * Length 0x000004E6 (1254) * Revision 0x01 * Checksum 0xDF * OEM ID "PmRef" * OEM Table ID "CpuPm" * OEM Revision 0x00003000 (12288) * Compiler ID "INTL" * Compiler Version 0x20050624 (537200164) */ DefinitionBlock ("/tmp/fwts_iasl_27987_SSDT.aml", "SSDT", 1, "PmRef", "CpuPm", 0x00003000) { External (_PR_.CPU0, DeviceObj) External (_PR_.CPU1, DeviceObj) External (PCP0, UnknownObj) External (PCP1, UnknownObj) Scope (\) { Name (SSDT, Package (0x0C) { "CPU0IST ", 0xBF6D959E, 0x000001B4, "CPU1IST ", 0xBF6D9752, 0x000000C8, "CPU0CST ", 0xBF6D906F, 0x000004AA, "CPU1CST ", 0xBF6D9519, 0x00000085 }) Name (CFGD, 0x113F69F1) Name (\PDC0, 0x80000000) Name (\PDC1, 0x80000000) Name (\SDTL, 0x00) } Scope (\_PR.CPU0) { Name (HI0, 0x00) Name (HC0, 0x00) Method (_PDC, 1, NotSerialized) // _PDC: Processor Driver Capabilities { CreateDWordField (Arg0, 0x00, REVS) CreateDWordField (Arg0, 0x04, SIZE) Store (SizeOf (Arg0), Local0) Store (Subtract (Local0, 0x08), Local1) CreateField (Arg0, 0x40, Multiply (Local1, 0x08), TEMP) Name (STS0, Buffer (0x04) { 0x00, 0x00, 0x00, 0x00 }) Concatenate (STS0, TEMP, Local2) _OSC (Buffer (0x10) { /* 0000 */ 0x16, 0xA6, 0x77, 0x40, 0x0C, 0x29, 0xBE, 0x47, /* 0008 */ 0x9E, 0xBD, 0xD8, 0x70, 0x58, 0x71, 0x39, 0x53 }, REVS, SIZE, Local2) } Method (_OSC, 4, NotSerialized) // _OSC: Operating System Capabilities { CreateDWordField (Arg3, 0x00, STS0) CreateDWordField (Arg3, 0x04, CAP0) CreateDWordField (Arg0, 0x00, IID0) CreateDWordField (Arg0, 0x04, IID1) CreateDWordField (Arg0, 0x08, IID2) CreateDWordField (Arg0, 0x0C, IID3) Name (UID0, Buffer (0x10) { /* 0000 */ 0x16, 0xA6, 0x77, 0x40, 0x0C, 0x29, 0xBE, 0x47, /* 0008 */ 0x9E, 0xBD, 0xD8, 0x70, 0x58, 0x71, 0x39, 0x53 }) CreateDWordField (UID0, 0x00, EID0) CreateDWordField (UID0, 0x04, EID1) CreateDWordField (UID0, 0x08, EID2) CreateDWordField (UID0, 0x0C, EID3) If (LNot (LAnd (LAnd (LEqual (IID0, EID0), LEqual (IID1, EID1)), LAnd (LEqual (IID2, EID2), LEqual (IID3, EID3))))) { Store (0x06, STS0) /* \_PR_.CPU0._OSC.STS0 */ Return (Arg3) } If (LNotEqual (Arg1, 0x01)) { Store (0x0A, STS0) /* \_PR_.CPU0._OSC.STS0 */ Return (Arg3) } Or (And (PDC0, 0x7FFFFFFF), CAP0, PDC0) /* \PDC0 */ Store (And (PDC0, 0xFF), PCP0) /* External reference */ If (And (CFGD, 0x01)) { If (LAnd (LAnd (And (CFGD, 0x01000000), LEqual (And (PDC0, 0x09), 0x09)), LNot (And (SDTL, 0x01)))) { Or (SDTL, 0x01, SDTL) /* \SDTL */ OperationRegion (IST0, SystemMemory, DerefOf (Index (SSDT, 0x01)), DerefOf (Index (SSDT, 0x02 ))) Load (IST0, HI0) /* \_PR_.CPU0.HI0_ */ } } If (And (CFGD, 0xF0)) { If (LAnd (LAnd (And (CFGD, 0x01000000), And (PDC0, 0x18 )), LNot (And (SDTL, 0x02)))) { Or (SDTL, 0x02, SDTL) /* \SDTL */ OperationRegion (CST0, SystemMemory, DerefOf (Index (SSDT, 0x07)), DerefOf (Index (SSDT, 0x08 ))) Load (CST0, HC0) /* \_PR_.CPU0.HC0_ */ } } Return (Arg3) } } Scope (\_PR.CPU1) { Name (HI1, 0x00) Name (HC1, 0x00) Method (_PDC, 1, NotSerialized) // _PDC: Processor Driver Capabilities { CreateDWordField (Arg0, 0x00, REVS) CreateDWordField (Arg0, 0x04, SIZE) Store (SizeOf (Arg0), Local0) Store (Subtract (Local0, 0x08), Local1) CreateField (Arg0, 0x40, Multiply (Local1, 0x08), TEMP) Name (STS1, Buffer (0x04) { 0x00, 0x00, 0x00, 0x00 }) Concatenate (STS1, TEMP, Local2) _OSC (Buffer (0x10) { /* 0000 */ 0x16, 0xA6, 0x77, 0x40, 0x0C, 0x29, 0xBE, 0x47, /* 0008 */ 0x9E, 0xBD, 0xD8, 0x70, 0x58, 0x71, 0x39, 0x53 }, REVS, SIZE, Local2) } Method (_OSC, 4, NotSerialized) // _OSC: Operating System Capabilities { CreateDWordField (Arg3, 0x00, STS1) CreateDWordField (Arg3, 0x04, CAP1) CreateDWordField (Arg0, 0x00, IID0) CreateDWordField (Arg0, 0x04, IID1) CreateDWordField (Arg0, 0x08, IID2) CreateDWordField (Arg0, 0x0C, IID3) Name (UID1, Buffer (0x10) { /* 0000 */ 0x16, 0xA6, 0x77, 0x40, 0x0C, 0x29, 0xBE, 0x47, /* 0008 */ 0x9E, 0xBD, 0xD8, 0x70, 0x58, 0x71, 0x39, 0x53 }) CreateDWordField (UID1, 0x00, EID0) CreateDWordField (UID1, 0x04, EID1) CreateDWordField (UID1, 0x08, EID2) CreateDWordField (UID1, 0x0C, EID3) If (LNot (LAnd (LAnd (LEqual (IID0, EID0), LEqual (IID1, EID1)), LAnd (LEqual (IID2, EID2), LEqual (IID3, EID3))))) { Store (0x06, STS1) /* \_PR_.CPU1._OSC.STS1 */ Return (Arg3) } If (LNotEqual (Arg1, 0x01)) { Store (0x0A, STS1) /* \_PR_.CPU1._OSC.STS1 */ Return (Arg3) } Or (And (PDC1, 0x7FFFFFFF), CAP1, PDC1) /* \PDC1 */ Store (And (PDC1, 0xFF), PCP1) /* External reference */ If (And (CFGD, 0x01)) { If (LAnd (LAnd (And (CFGD, 0x01000000), LEqual (And (PDC1, 0x09), 0x09)), LNot (And (SDTL, 0x10)))) { Or (SDTL, 0x10, SDTL) /* \SDTL */ OperationRegion (IST1, SystemMemory, DerefOf (Index (SSDT, 0x04)), DerefOf (Index (SSDT, 0x05 ))) Load (IST1, HI1) /* \_PR_.CPU1.HI1_ */ } } If (And (CFGD, 0xF0)) { If (LAnd (LAnd (And (CFGD, 0x01000000), And (PDC1, 0x18 )), LNot (And (SDTL, 0x20)))) { Or (SDTL, 0x20, SDTL) /* \SDTL */ OperationRegion (CST1, SystemMemory, DerefOf (Index (SSDT, 0x0A)), DerefOf (Index (SSDT, 0x0B ))) Load (CST1, HC1) /* \_PR_.CPU1.HC1_ */ } } Return (Arg3) } } } fwts-test/disassemble-0001/acpidump.log000066400000000000000000004074541231470457100202160ustar00rootroot00000000000000RSDP @ 0xf7240 0000: 52 53 44 20 50 54 52 20 c5 4c 45 4e 4f 56 4f 02 RSD PTR .LENOVO. 0010: 94 87 6d bf 24 00 00 00 f0 87 6d bf 00 00 00 00 ..m.$.....m..... 0020: 39 00 00 00 9... RSDT @ 0xbf6d8794 0000: 52 53 44 54 58 00 00 00 01 43 4c 45 4e 4f 56 4f RSDTX....CLENOVO 0010: 54 50 2d 36 38 20 20 20 00 00 04 06 20 4c 54 50 TP-68 .... LTP 0020: 00 00 00 00 5e fb 6d bf c6 fc 6d bf 2e fd 6d bf ....^.m...m...m. 0030: 66 fd 6d bf d8 ff 6d bf d4 fd 6d bf fa fd 6d bf f.m...m...m...m. 0040: 70 ff 6d bf bd 98 6d bf 1a 98 6d bf 10 8e 6d bf p.m...m...m...m. 0050: 6a 8d 6d bf 84 88 6d bf j.m...m. DSDT @ 0xbf6d9b6a 0000: 44 53 44 54 f4 5f 00 00 02 11 54 4f 53 43 50 4c DSDT._....TOSCPL 0010: 43 52 45 53 54 4c 4e 45 00 00 04 06 49 4e 54 4c CRESTLNE....INTL 0020: 08 06 06 20 08 5a 30 30 30 01 08 5a 30 30 31 0a ... .Z000..Z001. 0030: 02 08 5a 30 30 32 0a 04 08 5a 30 30 33 0a 08 08 ..Z002...Z003... 0040: 5a 30 30 34 00 08 5a 30 30 35 0a 0f 08 5a 30 30 Z004..Z005...Z00 0050: 36 0a 0d 08 5a 30 30 37 0a 0b 08 5a 30 30 38 0a 6...Z007...Z008. 0060: 09 08 45 43 44 59 0a 07 5b 01 4d 55 54 58 00 5b ..ECDY..[.MUTX.[ 0070: 80 50 52 54 30 01 0a 80 0a 04 5b 81 0b 50 52 54 .PRT0.....[..PRT 0080: 30 13 50 38 30 48 20 14 4e 07 50 38 58 48 0a a0 0.P80H .N.P8XH.. 0090: 17 93 68 00 70 7d 7b 50 38 30 44 0c 00 ff ff ff ..h.p}{P80D..... 00a0: 00 69 00 50 38 30 44 a0 1b 93 68 01 70 7d 7b 50 .i.P80D...h.p}{P 00b0: 38 30 44 0c ff 00 ff ff 00 79 69 0a 08 00 00 50 80D......yi....P 00c0: 38 30 44 a0 1c 93 68 0a 02 70 7d 7b 50 38 30 44 80D...h..p}{P80D 00d0: 0c ff ff 00 ff 00 79 69 0a 10 00 00 50 38 30 44 ......yi....P80D 00e0: a0 1c 93 68 0a 03 70 7d 7b 50 38 30 44 0c ff ff ...h..p}{P80D... 00f0: ff 00 00 79 69 0a 18 00 00 50 38 30 44 70 50 38 ...yi....P80DpP8 0100: 30 44 50 38 30 48 14 0c 5f 50 49 43 01 70 68 47 0DP80H.._PIC.phG 0110: 50 49 43 14 46 06 5f 50 54 53 01 70 00 50 38 30 PIC.F._PTS.p.P80 0120: 44 50 38 58 48 00 68 a0 1e 93 68 0a 03 70 01 5c DP8XH.h...h..p.\ 0130: 2f 05 5f 53 42 5f 50 43 49 30 4c 50 43 42 45 43 /._SB_PCI0LPCBEC 0140: 30 5f 53 33 4c 44 a0 33 93 68 0a 04 70 01 5c 2f 0_S3LD.3.h..p.\/ 0150: 05 5f 53 42 5f 50 43 49 30 4c 50 43 42 45 43 30 ._SB_PCI0LPCBEC0 0160: 5f 53 33 4c 44 5c 2f 04 5f 53 42 5f 50 43 49 30 _S3LD\/._SB_PCI0 0170: 4c 50 43 42 50 48 53 53 0a 0e 14 4c 1c 5f 57 41 LPCBPHSS...L._WA 0180: 4b 01 50 38 58 48 01 0a ab a0 30 91 93 68 0a 03 K.P8XH....0..h.. 0190: 93 68 0a 04 a0 25 7b 43 46 47 44 0c 00 00 00 01 .h...%{CFGD..... 01a0: 00 a0 18 90 7b 43 46 47 44 0a f0 00 93 4f 53 59 ....{CFGD....OSY 01b0: 53 0b d1 07 54 52 41 50 0a 3d a0 18 93 52 50 31 S...TRAP.=...RP1 01c0: 44 00 86 5c 2f 03 5f 53 42 5f 50 43 49 30 52 50 D..\/._SB_PCI0RP 01d0: 30 31 00 a0 18 93 52 50 32 44 00 86 5c 2f 03 5f 01....RP2D..\/._ 01e0: 53 42 5f 50 43 49 30 52 50 30 32 00 a0 18 93 52 SB_PCI0RP02....R 01f0: 50 33 44 00 86 5c 2f 03 5f 53 42 5f 50 43 49 30 P3D..\/._SB_PCI0 0200: 52 50 30 33 00 a0 18 93 52 50 34 44 00 86 5c 2f RP03....RP4D..\/ 0210: 03 5f 53 42 5f 50 43 49 30 52 50 30 34 00 a0 18 ._SB_PCI0RP04... 0220: 93 52 50 35 44 00 86 5c 2f 03 5f 53 42 5f 50 43 .RP5D..\/._SB_PC 0230: 49 30 52 50 30 35 00 a0 18 93 52 50 36 44 00 86 I0RP05....RP6D.. 0240: 5c 2f 03 5f 53 42 5f 50 43 49 30 52 50 30 36 00 \/._SB_PCI0RP06. 0250: a0 12 93 68 0a 03 50 38 58 48 00 0a 30 54 52 41 ...h..P8XH..0TRA 0260: 50 0a 46 a0 43 0d 93 68 0a 04 50 38 58 48 00 0a P.F.C..h..P8XH.. 0270: 40 5c 2f 04 5f 53 42 5f 50 43 49 30 4c 50 43 42 @\/._SB_PCI0LPCB 0280: 50 48 53 53 0a 0f 70 57 41 4b 46 60 70 00 57 41 PHSS..pWAKF`p.WA 0290: 4b 46 7b 60 0a 05 60 a0 18 93 60 01 50 38 58 48 KF{`..`...`.P8XH 02a0: 00 0a 41 86 5c 2e 5f 53 42 5f 50 57 52 42 0a 02 ..A.\._SB_PWRB.. 02b0: a0 46 08 44 54 53 45 54 52 41 50 0a 47 a0 42 06 .F.DTSETRAP.G.B. 02c0: 90 5c 2f 04 5f 53 42 5f 50 43 49 30 4c 50 43 42 .\/._SB_PCI0LPCB 02d0: 45 43 4f 4b 93 45 43 44 59 00 a0 27 92 95 44 54 ECOK.ECDY..'..DT 02e0: 53 31 44 54 53 32 70 44 54 53 31 5c 2f 05 5f 53 S1DTS2pDTS1\/._S 02f0: 42 5f 50 43 49 30 4c 50 43 42 45 43 30 5f 53 4b B_PCI0LPCBEC0_SK 0300: 54 41 a1 1d 70 44 54 53 32 5c 2f 05 5f 53 42 5f TA..pDTS2\/._SB_ 0310: 50 43 49 30 4c 50 43 42 45 43 30 5f 53 4b 54 41 PCI0LPCBEC0_SKTA 0320: a1 16 5c 2f 04 5f 53 42 5f 50 43 49 30 4c 50 43 ..\/._SB_PCI0LPC 0330: 42 50 48 53 53 0a 10 5c 2e 5f 50 52 5f 52 50 50 BPHSS..\._PR_RPP 0340: 43 a4 12 04 02 00 00 14 1e 47 45 54 42 0b 77 68 C........GETB.wh 0350: 0a 08 60 77 69 0a 08 61 5b 13 6a 60 61 54 42 46 ..`wi..a[.j`aTBF 0360: 33 a4 54 42 46 33 14 42 09 50 4e 4f 54 08 a0 4a 3.TBF3.B.PNOT..J 0370: 06 4d 50 45 4e a0 31 7b 50 44 43 30 0a 08 00 86 .MPEN.1{PDC0.... 0380: 5c 2e 5f 50 52 5f 43 50 55 30 0a 80 a0 1a 7b 50 \._PR_CPU0....{P 0390: 44 43 30 0a 10 00 5b 22 0a 64 86 5c 2e 5f 50 52 DC0...[".d.\._PR 03a0: 5f 43 50 55 30 0a 81 a0 31 7b 50 44 43 31 0a 08 _CPU0...1{PDC1.. 03b0: 00 86 5c 2e 5f 50 52 5f 43 50 55 31 0a 80 a0 1a ..\._PR_CPU1.... 03c0: 7b 50 44 43 31 0a 10 00 5b 22 0a 64 86 5c 2e 5f {PDC1...[".d.\._ 03d0: 50 52 5f 43 50 55 31 0a 81 a1 1f 86 5c 2e 5f 50 PR_CPU1.....\._P 03e0: 52 5f 43 50 55 30 0a 80 5b 22 0a 64 86 5c 2e 5f R_CPU0..[".d.\._ 03f0: 50 52 5f 43 50 55 30 0a 81 14 17 54 52 41 50 09 PR_CPU0....TRAP. 0400: 70 68 53 4d 49 46 70 00 54 52 50 30 a4 53 4d 49 phSMIFp.TRP0.SMI 0410: 46 10 41 0f 5f 53 42 5f 14 4a 0e 5f 49 4e 49 00 F.A._SB_.J._INI. 0420: 70 0b 99 99 4d 41 52 4b a0 1c 44 54 53 45 54 52 p...MARK..DTSETR 0430: 41 50 0a 47 5e 2f 03 50 43 49 30 4c 50 43 42 50 AP.G^/.PCI0LPCBP 0440: 48 53 53 0a 10 70 0b d0 07 4f 53 59 53 a0 4a 09 HSS..p...OSYS.J. 0450: 5b 12 5f 4f 53 49 60 a0 18 5f 4f 53 49 0d 4c 69 [._OSI`.._OSI.Li 0460: 6e 75 78 00 70 01 4c 49 4e 58 70 00 45 43 44 59 nux.p.LINXp.ECDY 0470: a0 1b 5f 4f 53 49 0d 57 69 6e 64 6f 77 73 20 32 .._OSI.Windows 2 0480: 30 30 31 00 70 0b d1 07 4f 53 59 53 a0 1f 5f 4f 001.p...OSYS.._O 0490: 53 49 0d 57 69 6e 64 6f 77 73 20 32 30 30 31 20 SI.Windows 2001 04a0: 53 50 31 00 70 0b d1 07 4f 53 59 53 a0 1f 5f 4f SP1.p...OSYS.._O 04b0: 53 49 0d 57 69 6e 64 6f 77 73 20 32 30 30 31 20 SI.Windows 2001 04c0: 53 50 32 00 70 0b d2 07 4f 53 59 53 a0 1b 5f 4f SP2.p...OSYS.._O 04d0: 53 49 0d 57 69 6e 64 6f 77 73 20 32 30 30 36 00 SI.Windows 2006. 04e0: 70 0b d6 07 4f 53 59 53 a0 14 90 4d 50 45 4e 93 p...OSYS...MPEN. 04f0: 4f 53 59 53 0b d1 07 54 52 41 50 0a 3d 54 52 41 OSYS...TRAP.=TRA 0500: 50 0a 2b 5b 80 47 4e 56 53 00 0c bc 2d 6e bf 0b P.+[.GNVS...-n.. 0510: 00 01 5b 81 45 24 47 4e 56 53 10 4f 53 59 53 10 ..[.E$GNVS.OSYS. 0520: 53 4d 49 46 08 50 52 4d 30 08 50 52 4d 31 08 53 SMIF.PRM0.PRM1.S 0530: 43 49 46 08 50 52 4d 32 08 50 52 4d 33 08 4c 43 CIF.PRM2.PRM3.LC 0540: 4b 46 08 50 52 4d 34 08 50 52 4d 35 08 50 38 30 KF.PRM4.PRM5.P80 0550: 44 20 4c 49 44 53 08 50 57 52 53 08 44 42 47 53 D LIDS.PWRS.DBGS 0560: 08 4c 49 4e 58 08 00 08 41 43 54 31 08 41 43 54 .LINX...ACT1.ACT 0570: 54 08 50 53 56 54 08 54 43 31 56 08 54 43 32 56 T.PSVT.TC1V.TC2V 0580: 08 54 53 50 56 08 43 52 54 54 08 44 54 53 45 08 .TSPV.CRTT.DTSE. 0590: 44 54 53 31 08 44 54 53 32 08 00 40 05 41 50 49 DTS1.DTS2..@.API 05a0: 43 08 4d 50 45 4e 08 50 43 50 30 08 50 43 50 31 C.MPEN.PCP0.PCP1 05b0: 08 50 50 43 4d 08 00 28 43 4d 41 50 08 43 4d 42 .PPCM..(CMAP.CMB 05c0: 50 08 4c 50 54 50 08 46 44 43 50 08 00 30 49 47 P.LPTP.FDCP..0IG 05d0: 44 53 08 54 4c 53 54 08 43 41 44 4c 08 50 41 44 DS.TLST.CADL.PAD 05e0: 4c 08 43 53 54 45 10 4e 53 54 45 10 53 53 54 45 L.CSTE.NSTE.SSTE 05f0: 10 4e 44 49 44 08 44 49 44 31 20 44 49 44 32 20 .NDID.DID1 DID2 0600: 44 49 44 33 20 44 49 44 34 20 44 49 44 35 20 00 DID3 DID4 DID5 . 0610: 40 06 42 4c 43 53 08 42 52 54 4c 08 41 4c 53 45 @.BLCS.BRTL.ALSE 0620: 08 41 4c 41 46 08 4c 4c 4f 57 08 4c 48 49 48 08 .ALAF.LLOW.LHIH. 0630: 00 08 45 4d 41 45 08 45 4d 41 50 10 45 4d 41 4c ..EMAE.EMAP.EMAL 0640: 10 00 08 4d 45 46 45 08 00 18 54 50 4d 50 08 54 ...MEFE...TPMP.T 0650: 50 4d 45 08 00 40 04 47 54 46 30 38 47 54 46 32 PME..@.GTF08GTF2 0660: 38 49 44 45 4d 08 47 54 46 31 38 00 40 09 41 53 8IDEM.GTF18.@.AS 0670: 4c 42 20 49 42 54 54 08 49 50 41 54 08 49 54 56 LB IBTT.IPAT.ITV 0680: 46 08 49 54 56 4d 08 49 50 53 43 08 49 42 4c 43 F.ITVM.IPSC.IBLC 0690: 08 49 42 49 41 08 49 53 53 43 08 49 34 30 39 08 .IBIA.ISSC.I409. 06a0: 49 35 30 39 08 49 36 30 39 08 49 37 30 39 08 49 I509.I609.I709.I 06b0: 44 4d 4d 08 49 44 4d 53 08 49 46 31 45 08 48 56 DMM.IDMS.IF1E.HV 06c0: 43 4f 08 4e 58 44 31 20 4e 58 44 32 20 4d 41 52 CO.NXD1 NXD2 MAR 06d0: 4b 10 42 52 41 44 08 42 54 45 4e 08 56 56 45 4e K.BRAD.BTEN.VVEN 06e0: 08 42 47 54 4c 08 54 4d 45 45 01 00 07 53 43 55 .BGTL.TMEE...SCU 06f0: 30 01 53 43 55 31 01 53 43 55 32 01 53 43 55 33 0.SCU1.SCU2.SCU3 0700: 01 00 04 58 4b 53 50 01 58 4b 49 4e 01 58 4b 49 ...XKSP.XKIN.XKI 0710: 44 01 58 4b 4f 4b 01 00 04 42 47 55 31 08 42 53 D.XKOK...BGU1.BS 0720: 54 31 08 42 46 43 31 10 57 4b 4c 4e 08 57 41 4b T1.BFC1.WKLN.WAK 0730: 46 08 44 53 4d 44 08 42 41 59 53 08 48 41 50 45 F.DSMD.BAYS.HAPE 0740: 01 00 07 44 54 53 4d 01 00 07 4f 44 54 31 08 4f ...DTSM...ODT1.O 0750: 44 54 32 08 44 54 53 57 08 08 44 53 45 4e 01 08 DT2.DTSW..DSEN.. 0760: 45 43 4f 4e 00 08 47 50 49 43 00 08 43 54 59 50 ECON..GPIC..CTYP 0770: 00 08 4c 30 31 43 00 08 56 46 4e 30 00 08 56 46 ..L01C..VFN0..VF 0780: 4e 31 00 10 4a 7c 5f 47 50 45 14 46 35 5f 4c 30 N1..J|_GPE.F5_L0 0790: 31 00 72 4c 30 31 43 01 4c 30 31 43 50 38 58 48 1.rL01C.L01CP8XH 07a0: 00 01 50 38 58 48 01 4c 30 31 43 a0 48 08 90 93 ..P8XH.L01C.H... 07b0: 52 50 31 44 00 5c 2f 04 5f 53 42 5f 50 43 49 30 RP1D.\/._SB_PCI0 07c0: 52 50 30 31 48 50 53 58 5b 22 0a 64 a0 40 05 5c RP01HPSX[".d.@.\ 07d0: 2f 04 5f 53 42 5f 50 43 49 30 52 50 30 31 50 44 /._SB_PCI0RP01PD 07e0: 43 58 70 01 5c 2f 04 5f 53 42 5f 50 43 49 30 52 CXp.\/._SB_PCI0R 07f0: 50 30 31 50 44 43 58 70 01 5c 2f 04 5f 53 42 5f P01PDCXp.\/._SB_ 0800: 50 43 49 30 52 50 30 31 48 50 53 58 86 5c 2f 03 PCI0RP01HPSX.\/. 0810: 5f 53 42 5f 50 43 49 30 52 50 30 31 00 a1 16 70 _SB_PCI0RP01...p 0820: 01 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 30 31 .\/._SB_PCI0RP01 0830: 48 50 53 58 a0 48 08 90 93 52 50 32 44 00 5c 2f HPSX.H...RP2D.\/ 0840: 04 5f 53 42 5f 50 43 49 30 52 50 30 32 48 50 53 ._SB_PCI0RP02HPS 0850: 58 5b 22 0a 64 a0 40 05 5c 2f 04 5f 53 42 5f 50 X[".d.@.\/._SB_P 0860: 43 49 30 52 50 30 32 50 44 43 58 70 01 5c 2f 04 CI0RP02PDCXp.\/. 0870: 5f 53 42 5f 50 43 49 30 52 50 30 32 50 44 43 58 _SB_PCI0RP02PDCX 0880: 70 01 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 30 p.\/._SB_PCI0RP0 0890: 32 48 50 53 58 86 5c 2f 03 5f 53 42 5f 50 43 49 2HPSX.\/._SB_PCI 08a0: 30 52 50 30 32 00 a1 16 70 01 5c 2f 04 5f 53 42 0RP02...p.\/._SB 08b0: 5f 50 43 49 30 52 50 30 32 48 50 53 58 a0 48 08 _PCI0RP02HPSX.H. 08c0: 90 93 52 50 33 44 00 5c 2f 04 5f 53 42 5f 50 43 ..RP3D.\/._SB_PC 08d0: 49 30 52 50 30 33 48 50 53 58 5b 22 0a 64 a0 40 I0RP03HPSX[".d.@ 08e0: 05 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 30 33 .\/._SB_PCI0RP03 08f0: 50 44 43 58 70 01 5c 2f 04 5f 53 42 5f 50 43 49 PDCXp.\/._SB_PCI 0900: 30 52 50 30 33 50 44 43 58 70 01 5c 2f 04 5f 53 0RP03PDCXp.\/._S 0910: 42 5f 50 43 49 30 52 50 30 33 48 50 53 58 86 5c B_PCI0RP03HPSX.\ 0920: 2f 03 5f 53 42 5f 50 43 49 30 52 50 30 33 00 a1 /._SB_PCI0RP03.. 0930: 16 70 01 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 .p.\/._SB_PCI0RP 0940: 30 33 48 50 53 58 a0 48 08 90 93 52 50 34 44 00 03HPSX.H...RP4D. 0950: 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 30 34 48 \/._SB_PCI0RP04H 0960: 50 53 58 5b 22 0a 64 a0 40 05 5c 2f 04 5f 53 42 PSX[".d.@.\/._SB 0970: 5f 50 43 49 30 52 50 30 34 50 44 43 58 70 01 5c _PCI0RP04PDCXp.\ 0980: 2f 04 5f 53 42 5f 50 43 49 30 52 50 30 34 50 44 /._SB_PCI0RP04PD 0990: 43 58 70 01 5c 2f 04 5f 53 42 5f 50 43 49 30 52 CXp.\/._SB_PCI0R 09a0: 50 30 34 48 50 53 58 86 5c 2f 03 5f 53 42 5f 50 P04HPSX.\/._SB_P 09b0: 43 49 30 52 50 30 34 00 a1 16 70 01 5c 2f 04 5f CI0RP04...p.\/._ 09c0: 53 42 5f 50 43 49 30 52 50 30 34 48 50 53 58 a0 SB_PCI0RP04HPSX. 09d0: 48 08 90 93 52 50 35 44 00 5c 2f 04 5f 53 42 5f H...RP5D.\/._SB_ 09e0: 50 43 49 30 52 50 30 35 48 50 53 58 5b 22 0a 64 PCI0RP05HPSX[".d 09f0: a0 40 05 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 .@.\/._SB_PCI0RP 0a00: 30 35 50 44 43 58 70 01 5c 2f 04 5f 53 42 5f 50 05PDCXp.\/._SB_P 0a10: 43 49 30 52 50 30 35 50 44 43 58 70 01 5c 2f 04 CI0RP05PDCXp.\/. 0a20: 5f 53 42 5f 50 43 49 30 52 50 30 35 48 50 53 58 _SB_PCI0RP05HPSX 0a30: 86 5c 2f 03 5f 53 42 5f 50 43 49 30 52 50 30 35 .\/._SB_PCI0RP05 0a40: 00 a1 16 70 01 5c 2f 04 5f 53 42 5f 50 43 49 30 ...p.\/._SB_PCI0 0a50: 52 50 30 35 48 50 53 58 a0 48 08 90 93 52 50 36 RP05HPSX.H...RP6 0a60: 44 00 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 30 D.\/._SB_PCI0RP0 0a70: 36 48 50 53 58 5b 22 0a 64 a0 40 05 5c 2f 04 5f 6HPSX[".d.@.\/._ 0a80: 53 42 5f 50 43 49 30 52 50 30 36 50 44 43 58 70 SB_PCI0RP06PDCXp 0a90: 01 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 30 36 .\/._SB_PCI0RP06 0aa0: 50 44 43 58 70 01 5c 2f 04 5f 53 42 5f 50 43 49 PDCXp.\/._SB_PCI 0ab0: 30 52 50 30 36 48 50 53 58 86 5c 2f 03 5f 53 42 0RP06HPSX.\/._SB 0ac0: 5f 50 43 49 30 52 50 30 36 00 a1 16 70 01 5c 2f _PCI0RP06...p.\/ 0ad0: 04 5f 53 42 5f 50 43 49 30 52 50 30 36 48 50 53 ._SB_PCI0RP06HPS 0ae0: 58 14 42 0d 5f 4c 30 32 00 70 00 47 50 45 43 a0 X.B._L02.p.GPEC. 0af0: 4d 0a 5c 2f 04 5f 53 42 5f 50 43 49 30 4c 50 43 M.\/._SB_PCI0LPC 0b00: 42 45 43 4f 4b a0 4e 04 93 44 54 53 57 01 a0 27 BECOK.N..DTSW..' 0b10: 92 95 44 54 53 31 44 54 53 32 70 44 54 53 31 5c ..DTS1DTS2pDTS1\ 0b20: 2f 05 5f 53 42 5f 50 43 49 30 4c 50 43 42 45 43 /._SB_PCI0LPCBEC 0b30: 30 5f 53 4b 54 41 a1 1d 70 44 54 53 32 5c 2f 05 0_SKTA..pDTS2\/. 0b40: 5f 53 42 5f 50 43 49 30 4c 50 43 42 45 43 30 5f _SB_PCI0LPCBEC0_ 0b50: 53 4b 54 41 a1 48 04 a0 27 92 95 4f 44 54 31 4f SKTA.H..'..ODT1O 0b60: 44 54 32 70 4f 44 54 31 5c 2f 05 5f 53 42 5f 50 DT2pODT1\/._SB_P 0b70: 43 49 30 4c 50 43 42 45 43 30 5f 53 4b 54 41 a1 CI0LPCBEC0_SKTA. 0b80: 1d 70 4f 44 54 32 5c 2f 05 5f 53 42 5f 50 43 49 .pODT2\/._SB_PCI 0b90: 30 4c 50 43 42 45 43 30 5f 53 4b 54 41 a1 16 5c 0LPCBEC0_SKTA..\ 0ba0: 2f 04 5f 53 42 5f 50 43 49 30 4c 50 43 42 50 48 /._SB_PCI0LPCBPH 0bb0: 53 53 0a 10 14 18 5f 4c 30 33 00 86 5c 2f 03 5f SS...._L03..\/._ 0bc0: 53 42 5f 50 43 49 30 55 53 42 31 0a 02 14 18 5f SB_PCI0USB1...._ 0bd0: 4c 30 34 00 86 5c 2f 03 5f 53 42 5f 50 43 49 30 L04..\/._SB_PCI0 0be0: 55 53 42 32 0a 02 14 18 5f 4c 30 35 00 86 5c 2f USB2...._L05..\/ 0bf0: 03 5f 53 42 5f 50 43 49 30 55 53 42 35 0a 02 14 ._SB_PCI0USB5... 0c00: 36 5f 4c 30 36 00 a0 27 5c 2f 04 5f 53 42 5f 50 6_L06..'\/._SB_P 0c10: 43 49 30 47 46 58 30 47 53 53 45 5c 2f 04 5f 53 CI0GFX0GSSE\/._S 0c20: 42 5f 50 43 49 30 47 46 58 30 47 53 43 49 a1 07 B_PCI0GFX0GSCI.. 0c30: 70 01 53 43 49 53 14 43 1f 5f 4c 30 39 00 a0 41 p.SCIS.C._L09..A 0c40: 05 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 30 31 .\/._SB_PCI0RP01 0c50: 50 53 50 58 70 01 5c 2f 04 5f 53 42 5f 50 43 49 PSPXp.\/._SB_PCI 0c60: 30 52 50 30 31 50 53 50 58 70 01 5c 2f 04 5f 53 0RP01PSPXp.\/._S 0c70: 42 5f 50 43 49 30 52 50 30 31 50 4d 53 58 86 5c B_PCI0RP01PMSX.\ 0c80: 2f 03 5f 53 42 5f 50 43 49 30 52 50 30 31 0a 02 /._SB_PCI0RP01.. 0c90: a0 41 05 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 .A.\/._SB_PCI0RP 0ca0: 30 32 50 53 50 58 70 01 5c 2f 04 5f 53 42 5f 50 02PSPXp.\/._SB_P 0cb0: 43 49 30 52 50 30 32 50 53 50 58 70 01 5c 2f 04 CI0RP02PSPXp.\/. 0cc0: 5f 53 42 5f 50 43 49 30 52 50 30 32 50 4d 53 58 _SB_PCI0RP02PMSX 0cd0: 86 5c 2f 03 5f 53 42 5f 50 43 49 30 52 50 30 32 .\/._SB_PCI0RP02 0ce0: 0a 02 a0 41 05 5c 2f 04 5f 53 42 5f 50 43 49 30 ...A.\/._SB_PCI0 0cf0: 52 50 30 33 50 53 50 58 70 01 5c 2f 04 5f 53 42 RP03PSPXp.\/._SB 0d00: 5f 50 43 49 30 52 50 30 33 50 53 50 58 70 01 5c _PCI0RP03PSPXp.\ 0d10: 2f 04 5f 53 42 5f 50 43 49 30 52 50 30 33 50 4d /._SB_PCI0RP03PM 0d20: 53 58 86 5c 2f 03 5f 53 42 5f 50 43 49 30 52 50 SX.\/._SB_PCI0RP 0d30: 30 33 0a 02 a0 41 05 5c 2f 04 5f 53 42 5f 50 43 03...A.\/._SB_PC 0d40: 49 30 52 50 30 34 50 53 50 58 70 01 5c 2f 04 5f I0RP04PSPXp.\/._ 0d50: 53 42 5f 50 43 49 30 52 50 30 34 50 53 50 58 70 SB_PCI0RP04PSPXp 0d60: 01 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 30 34 .\/._SB_PCI0RP04 0d70: 50 4d 53 58 86 5c 2f 03 5f 53 42 5f 50 43 49 30 PMSX.\/._SB_PCI0 0d80: 52 50 30 34 0a 02 a0 41 05 5c 2f 04 5f 53 42 5f RP04...A.\/._SB_ 0d90: 50 43 49 30 52 50 30 35 50 53 50 58 70 01 5c 2f PCI0RP05PSPXp.\/ 0da0: 04 5f 53 42 5f 50 43 49 30 52 50 30 35 50 53 50 ._SB_PCI0RP05PSP 0db0: 58 70 01 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 Xp.\/._SB_PCI0RP 0dc0: 30 35 50 4d 53 58 86 5c 2f 03 5f 53 42 5f 50 43 05PMSX.\/._SB_PC 0dd0: 49 30 52 50 30 35 0a 02 a0 41 05 5c 2f 04 5f 53 I0RP05...A.\/._S 0de0: 42 5f 50 43 49 30 52 50 30 36 50 53 50 58 70 01 B_PCI0RP06PSPXp. 0df0: 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 30 36 50 \/._SB_PCI0RP06P 0e00: 53 50 58 70 01 5c 2f 04 5f 53 42 5f 50 43 49 30 SPXp.\/._SB_PCI0 0e10: 52 50 30 36 50 4d 53 58 86 5c 2f 03 5f 53 42 5f RP06PMSX.\/._SB_ 0e20: 50 43 49 30 52 50 30 36 0a 02 14 18 5f 4c 30 42 PCI0RP06...._L0B 0e30: 00 86 5c 2f 03 5f 53 42 5f 50 43 49 30 50 43 49 ..\/._SB_PCI0PCI 0e40: 42 0a 02 14 18 5f 4c 30 43 00 86 5c 2f 03 5f 53 B...._L0C..\/._S 0e50: 42 5f 50 43 49 30 55 53 42 33 0a 02 14 4b 0b 5f B_PCI0USB3...K._ 0e60: 4c 30 44 00 a0 3b 5c 2f 04 5f 53 42 5f 50 43 49 L0D..;\/._SB_PCI 0e70: 30 45 48 43 31 50 4d 45 53 70 01 5c 2f 04 5f 53 0EHC1PMESp.\/._S 0e80: 42 5f 50 43 49 30 45 48 43 31 50 4d 45 53 86 5c B_PCI0EHC1PMES.\ 0e90: 2f 03 5f 53 42 5f 50 43 49 30 45 48 43 31 0a 02 /._SB_PCI0EHC1.. 0ea0: a0 3b 5c 2f 04 5f 53 42 5f 50 43 49 30 45 48 43 .;\/._SB_PCI0EHC 0eb0: 32 50 4d 45 53 70 01 5c 2f 04 5f 53 42 5f 50 43 2PMESp.\/._SB_PC 0ec0: 49 30 45 48 43 32 50 4d 45 53 86 5c 2f 03 5f 53 I0EHC2PMES.\/._S 0ed0: 42 5f 50 43 49 30 45 48 43 32 0a 02 a0 3b 5c 2f B_PCI0EHC2...;\/ 0ee0: 04 5f 53 42 5f 50 43 49 30 48 44 45 46 50 4d 45 ._SB_PCI0HDEFPME 0ef0: 53 70 01 5c 2f 04 5f 53 42 5f 50 43 49 30 48 44 Sp.\/._SB_PCI0HD 0f00: 45 46 50 4d 45 53 86 5c 2f 03 5f 53 42 5f 50 43 EFPMES.\/._SB_PC 0f10: 49 30 48 44 45 46 0a 02 14 18 5f 4c 30 45 00 86 I0HDEF...._L0E.. 0f20: 5c 2f 03 5f 53 42 5f 50 43 49 30 55 53 42 34 0a \/._SB_PCI0USB4. 0f30: 02 14 1c 5f 4c 31 42 00 80 4c 50 4f 4c 4c 50 4f ..._L1B..LPOLLPO 0f40: 4c 86 5c 2e 5f 53 42 5f 4c 49 44 30 0a 80 10 46 L.\._SB_LID0...F 0f50: 0b 5f 50 52 5f 5b 83 0b 43 50 55 30 00 10 10 00 ._PR_[..CPU0.... 0f60: 00 06 5b 83 0b 43 50 55 31 01 10 10 00 00 06 14 ..[..CPU1....... 0f70: 45 09 52 50 50 43 00 a0 4d 08 93 4f 53 59 53 0b E.RPPC..M..OSYS. 0f80: d2 07 a0 42 08 7b 43 46 47 44 01 00 a0 42 04 94 ...B.{CFGD...B.. 0f90: 5e 2e 43 50 55 30 5f 50 50 43 00 74 5e 2e 43 50 ^.CPU0_PPC.t^.CP 0fa0: 55 30 5f 50 50 43 01 5e 2e 43 50 55 30 5f 50 50 U0_PPC.^.CPU0_PP 0fb0: 43 50 4e 4f 54 72 5e 2e 43 50 55 30 5f 50 50 43 CPNOTr^.CPU0_PPC 0fc0: 01 5e 2e 43 50 55 30 5f 50 50 43 50 4e 4f 54 a1 .^.CPU0_PPCPNOT. 0fd0: 35 72 5e 2e 43 50 55 30 5f 50 50 43 01 5e 2e 43 5r^.CPU0_PPC.^.C 0fe0: 50 55 30 5f 50 50 43 50 4e 4f 54 74 5e 2e 43 50 PU0_PPCPNOTt^.CP 0ff0: 55 30 5f 50 50 43 01 5e 2e 43 50 55 30 5f 50 50 U0_PPC.^.CPU0_PP 1000: 43 50 4e 4f 54 08 46 57 53 4f 0d 46 57 53 4f 00 CPNOT.FWSO.FWSO. 1010: 08 5f 50 53 43 00 14 12 5f 50 53 30 00 70 5f 50 ._PSC..._PS0.p_P 1020: 53 43 60 70 00 5f 50 53 43 14 0d 5f 50 53 33 00 SC`p._PSC.._PS3. 1030: 70 0a 03 5f 50 53 43 10 8c fb 04 5f 53 42 5f 5b p.._PSC...._SB_[ 1040: 82 4f 3e 41 4d 57 30 08 5f 48 49 44 0d 70 6e 70 .O>AMW0._HID.pnp 1050: 30 63 31 34 00 08 5f 55 49 44 00 08 5f 57 44 47 0c14.._UID.._WDG 1060: 11 3f 0a 3c a7 1d 85 2e 53 d0 5f 49 9d fa 1a 4a .?.<....S._I...J 1070: d6 2e 6a 86 41 43 01 00 3b 6d 43 71 dd fb 72 4c ..j.AC..;mCq..rL 1080: bc b8 43 5b fe 0d 64 f9 42 43 01 00 21 12 90 05 ..C[..d.BC..!... 1090: 66 d5 d1 11 b2 f0 00 a0 c9 06 29 10 42 41 01 00 f.........).BA.. 10a0: 08 53 54 41 43 11 07 0a 04 01 14 03 00 14 1f 57 .STAC..........W 10b0: 51 41 43 01 70 0d 4d 58 4d 54 43 43 6f 6e 66 69 QAC.p.MXMTCConfi 10c0: 67 44 61 74 61 00 5b 31 a4 53 54 41 43 08 53 54 gData.[1.STAC.ST 10d0: 42 43 11 07 0a 04 01 00 00 00 14 34 57 51 42 43 BC.........4WQBC 10e0: 01 70 0d 47 65 74 20 4d 58 4d 54 43 43 6f 6e 74 .p.Get MXMTCCont 10f0: 72 6f 6c 44 61 74 61 3a 20 53 54 42 43 20 3d 20 rolData: STBC = 1100: 00 5b 31 70 53 54 42 43 5b 31 a4 53 54 42 43 14 .[1pSTBC[1.STBC. 1110: 47 06 57 53 42 43 02 70 69 53 54 42 43 70 0d 53 G.WSBC.piSTBCp.S 1120: 65 74 20 4d 58 4d 54 43 43 6f 6e 74 72 6f 6c 44 et MXMTCControlD 1130: 61 74 61 3a 20 53 54 42 43 20 3d 20 00 5b 31 70 ata: STBC = .[1p 1140: 53 54 42 43 5b 31 a0 30 93 5e 5e 2f 03 50 43 49 STBC[1.0.^^/.PCI 1150: 30 4c 50 43 42 45 43 4f 4b 01 70 83 88 53 54 42 0LPCBECOK.p..STB 1160: 43 01 00 5e 5e 2f 04 50 43 49 30 4c 50 43 42 45 C..^^/.PCI0LPCBE 1170: 43 30 5f 53 4b 54 43 08 57 51 42 41 11 43 2b 0b C0_SKTC.WQBA.C+. 1180: ae 02 46 4f 4d 42 01 00 00 00 9e 02 00 00 c0 0b ..FOMB.......... 1190: 00 00 44 53 00 01 1a 7d da 54 28 d9 85 00 01 06 ..DS...}.T(..... 11a0: 18 42 10 07 10 0a 4b 61 02 c9 21 52 3c 18 94 05 .B....Ka..!R<... 11b0: 10 43 88 57 04 44 04 84 bc 0a b0 29 c0 24 88 fa .C.W.D.....).$.. 11c0: f7 87 28 09 0e 25 04 42 12 05 98 17 a0 5b 80 61 ..(..%.B.....[.a 11d0: 01 b6 05 98 16 e0 18 92 4a 03 a7 04 96 02 21 a1 ........J.....!. 11e0: 02 94 0b f0 2d 40 3b a2 24 0b b0 0c 23 02 8f 82 ....-@;.$...#... 11f0: a1 71 68 ec 30 2c 13 4c 83 38 8c b2 91 45 60 dc .qh.0,.L.8...E`. 1200: 4e 05 c8 15 20 4c 80 78 54 61 34 07 45 e0 42 63 N... L.xTa4.E.Bc 1210: 64 40 c8 a3 00 ab a3 d0 a4 12 d8 bd 00 65 02 2c d@...........e., 1220: 0a 10 27 c0 9a 00 63 48 32 28 40 9b 00 5b 20 42 ..'...cH2(@..[ B 1230: 0f d4 19 8a 46 70 02 51 6a 46 11 48 ac 1a 01 85 ....Fp.QjF.H.... 1240: 12 34 46 b0 10 81 c2 86 37 46 98 03 88 d1 fe 20 .4F.....7F..... 1250: 48 20 05 e3 66 91 46 83 1a 6b 82 63 f7 68 4e b8 H ..f.F..k.c.hN. 1260: 73 01 d2 e7 26 90 a3 3b b8 3a 07 4d 86 c7 b0 1e s...&..;.:.M.... 1270: 06 d8 29 00 ef 1a 50 d3 3f 78 26 08 0e 35 44 8f ..)...P.?x&..5D. 1280: 3a dc 09 1c fb 91 30 88 b3 3b 6e ac c3 c9 68 d0 :.....0..;n...h. 1290: a5 0a 30 7b 00 d0 d0 12 9c f6 99 84 7e 0f 38 9f ..0{........~.8. 12a0: 9e 21 89 fc 41 a0 46 e6 ff 3f b4 c7 78 5a 31 43 .!..A.F..?..xZ1C 12b0: 3e 0b 1c 16 13 0b a1 4d 6a 3c 40 40 e1 d1 40 08 >......Mj<@@..@. 12c0: 6f 06 9e af 09 46 86 90 93 f1 a0 06 e0 41 d7 3a o....F.......A.: 12d0: 32 8d 27 a6 21 cf e8 00 22 bf 32 78 0c 41 02 f9 2.'.!...".2x.A.. 12e0: c4 60 b8 c7 81 13 78 02 f0 59 40 10 92 00 21 51 .`....x..Y@...!Q 12f0: e3 a7 47 08 7e 7a 78 93 30 28 1f d2 99 f9 90 e1 ..G.~zx.0(...... 1300: 11 c2 07 c4 7b 9f 3b 19 c1 29 7b a4 e0 b0 7e 0e ....{.;..){...~. 1310: 20 c0 af 0f 8f 0d 09 7c ae 08 8c 1d aa fd 0a 40 ......|.......@ 1320: 08 1e ed 51 e0 54 23 1c 2d 78 08 8a 1c 03 4a cc ...Q.T#.-x....J. 1330: 18 50 03 38 85 d0 e7 73 04 47 14 25 f6 21 19 da .P.8...s.G.%.!.. 1340: 08 e1 1f 39 4e c1 f7 8b 23 3d ad 23 78 91 f0 08 ...9N...#=.#x... 1350: 30 e1 ce 28 a8 38 30 f4 ff 7f 4c 01 dc 7a 3b a6 0..(.80...L..z;. 1360: 80 3e c0 31 05 50 fc ff 3f a6 00 87 a8 c7 14 f4 .>.1.P..?....... 1370: 40 0c 7c 2e a1 0d ff 96 c1 8e 03 87 74 6a 8f 28 @.|.........tj.( 1380: 80 29 79 47 14 50 8c 14 d6 f1 04 18 05 3c 9b a0 .)yG.P.......<.. 1390: 22 1d 4f 80 ce ff ff 78 02 58 b8 9a bc 92 84 7d ".O....x.X.....} 13a0: 1e 78 1d 89 14 e3 41 e2 b5 e4 c1 24 46 98 08 8f .x....A....$F... 13b0: 27 1e 47 c0 b7 82 28 91 8e 3e c4 83 49 28 63 3e '.G...(..>..I(c> 13c0: a3 84 89 f9 04 70 22 ef 27 46 0a 73 2a 8f 27 2c .....p".'F.s*.', 13d0: c4 f1 04 a0 85 e2 e3 09 3a 2c 84 fe ff c7 13 dc ........:,...... 13e0: e1 c1 a7 0c fc 85 0c c6 f9 04 30 24 f0 7c 02 ca ..........0$.|.. 13f0: db 18 e6 80 02 8c 14 da f4 a9 d1 a8 55 83 32 35 ............U.25 1400: ca 34 a8 d5 a7 52 63 c6 4c 9c 52 bc 6c 8d df f2 .4...Rc.L.R.l... 1410: 9e 09 02 b1 20 0a 81 38 cc f3 42 20 96 a2 01 84 .... ..8..B .... 1420: 85 06 a1 42 a9 05 e2 98 20 34 92 0a 10 f6 ff 07 ...B.... 4...... 1430: 5b 82 1b 4c 49 44 30 08 5f 48 49 44 0c 41 d0 0c [..LID0._HID.A.. 1440: 0d 14 0b 5f 4c 49 44 00 a4 4c 50 4f 4c 5b 82 0f ..._LID..LPOL[.. 1450: 50 57 52 42 08 5f 48 49 44 0c 41 d0 0c 0c 5b 82 PWRB._HID.A...[. 1460: 84 b9 04 50 43 49 30 14 09 5f 53 33 44 00 a4 0a ...PCI0.._S3D... 1470: 02 14 09 5f 53 34 44 00 a4 0a 02 08 5f 48 49 44 ..._S4D....._HID 1480: 0c 41 d0 0a 08 08 5f 43 49 44 0c 41 d0 0a 03 5b .A...._CID.A...[ 1490: 82 43 0e 4d 43 48 43 08 5f 41 44 52 00 5b 80 48 .C.MCHC._ADR.[.H 14a0: 42 55 53 02 0a 40 0a c0 5b 81 4a 0c 48 42 55 53 BUS..@..[.J.HBUS 14b0: 03 45 50 45 4e 01 00 0b 45 50 42 52 14 00 20 4d .EPEN...EPBR.. M 14c0: 48 45 4e 01 00 0d 4d 48 42 52 12 00 40 0a 50 58 HEN...MHBR..@.PX 14d0: 45 4e 01 50 58 53 5a 02 00 17 50 58 42 52 06 00 EN.PXSZ...PXBR.. 14e0: 20 44 49 45 4e 01 00 0b 44 49 42 52 14 00 20 49 DIEN...DIBR.. I 14f0: 50 45 4e 01 00 0b 49 50 42 52 14 00 40 0e 00 04 PEN...IPBR..@... 1500: 50 4d 30 48 02 00 02 50 4d 31 4c 02 00 02 50 4d PM0H...PM1L...PM 1510: 31 48 02 00 02 50 4d 32 4c 02 00 02 50 4d 32 48 1H...PM2L...PM2H 1520: 02 00 02 50 4d 33 4c 02 00 02 50 4d 33 48 02 00 ...PM3L...PM3H.. 1530: 02 50 4d 34 4c 02 00 02 50 4d 34 48 02 00 02 50 .PM4L...PM4H...P 1540: 4d 35 4c 02 00 02 50 4d 35 48 02 00 02 50 4d 36 M5L...PM5H...PM6 1550: 4c 02 00 02 50 4d 36 48 02 00 02 00 07 48 45 4e L...PM6H.....HEN 1560: 41 01 00 40 05 54 55 55 44 10 00 40 06 00 04 54 A..@.TUUD..@...T 1570: 4c 55 44 0c 08 42 55 46 30 11 4d 20 0b 08 02 88 LUD..BUF0.M .... 1580: 0d 00 02 0c 00 00 00 00 00 ff 00 00 00 00 01 87 ................ 1590: 17 00 01 0c 03 00 00 00 00 00 00 00 00 f7 0c 00 ................ 15a0: 00 00 00 00 00 f8 0c 00 00 47 01 f8 0c f8 0c 01 .........G...... 15b0: 08 87 17 00 01 0c 03 00 00 00 00 00 0d 00 00 ff ................ 15c0: ff 00 00 00 00 00 00 00 f3 00 00 87 17 00 00 0c ................ 15d0: 03 00 00 00 00 00 00 0a 00 ff ff 0b 00 00 00 00 ................ 15e0: 00 00 00 02 00 87 17 00 00 0c 03 00 00 00 00 00 ................ 15f0: 00 0c 00 ff 3f 0c 00 00 00 00 00 00 40 00 00 87 ....?.......@... 1600: 17 00 00 0c 03 00 00 00 00 00 40 0c 00 ff 7f 0c ..........@..... 1610: 00 00 00 00 00 00 40 00 00 87 17 00 00 0c 03 00 ......@......... 1620: 00 00 00 00 80 0c 00 ff bf 0c 00 00 00 00 00 00 ................ 1630: 40 00 00 87 17 00 00 0c 03 00 00 00 00 00 c0 0c @............... 1640: 00 ff ff 0c 00 00 00 00 00 00 40 00 00 87 17 00 ..........@..... 1650: 00 0c 03 00 00 00 00 00 00 0d 00 ff 3f 0d 00 00 ............?... 1660: 00 00 00 00 40 00 00 87 17 00 00 0c 03 00 00 00 ....@........... 1670: 00 00 40 0d 00 ff 7f 0d 00 00 00 00 00 00 40 00 ..@...........@. 1680: 00 87 17 00 00 0c 03 00 00 00 00 00 80 0d 00 ff ................ 1690: bf 0d 00 00 00 00 00 00 40 00 00 87 17 00 00 0c ........@....... 16a0: 03 00 00 00 00 00 c0 0d 00 ff ff 0d 00 00 00 00 ................ 16b0: 00 00 40 00 00 87 17 00 00 0c 03 00 00 00 00 00 ..@............. 16c0: 00 0e 00 ff 3f 0e 00 00 00 00 00 00 40 00 00 87 ....?.......@... 16d0: 17 00 00 0c 03 00 00 00 00 00 40 0e 00 ff 7f 0e ..........@..... 16e0: 00 00 00 00 00 00 40 00 00 87 17 00 00 0c 03 00 ......@......... 16f0: 00 00 00 00 80 0e 00 ff bf 0e 00 00 00 00 00 00 ................ 1700: 40 00 00 87 17 00 00 0c 03 00 00 00 00 00 c0 0e @............... 1710: 00 ff ff 0e 00 00 00 00 00 00 40 00 00 87 17 00 ..........@..... 1720: 00 0c 03 00 00 00 00 00 00 0f 00 ff ff 0f 00 00 ................ 1730: 00 00 00 00 00 01 00 87 17 00 00 0c 03 00 00 00 ................ 1740: 00 00 00 00 00 ff ff ff df 00 00 00 00 00 00 00 ................ 1750: 00 87 17 00 00 0c 03 00 00 00 00 00 00 00 f0 ff ................ 1760: ff bf fe 00 00 00 00 00 00 c0 0e 87 17 00 00 0c ................ 1770: 03 00 00 00 00 00 00 d4 fe ff 4f d4 fe 00 00 00 ..........O..... 1780: 00 00 00 00 00 79 00 14 4b 3d 5f 43 52 53 08 a0 .....y..K=_CRS.. 1790: 1c 5e 2e 4d 43 48 43 50 4d 31 4c 8a 42 55 46 30 .^.MCHCPM1L.BUF0 17a0: 0a 7c 43 30 4c 4e 70 00 43 30 4c 4e a0 1f 93 5e .|C0LNp.C0LN...^ 17b0: 2e 4d 43 48 43 50 4d 31 4c 01 8d 42 55 46 30 0b .MCHCPM1L..BUF0. 17c0: 58 03 43 30 52 57 70 00 43 30 52 57 a0 1c 5e 2e X.C0RWp.C0RW..^. 17d0: 4d 43 48 43 50 4d 31 48 8a 42 55 46 30 0a 96 43 MCHCPM1H.BUF0..C 17e0: 34 4c 4e 70 00 43 34 4c 4e a0 1f 93 5e 2e 4d 43 4LNp.C4LN...^.MC 17f0: 48 43 50 4d 31 48 01 8d 42 55 46 30 0b 28 04 43 HCPM1H..BUF0.(.C 1800: 34 52 57 70 00 43 34 52 57 a0 1c 5e 2e 4d 43 48 4RWp.C4RW..^.MCH 1810: 43 50 4d 32 4c 8a 42 55 46 30 0a b0 43 38 4c 4e CPM2L.BUF0..C8LN 1820: 70 00 43 38 4c 4e a0 1f 93 5e 2e 4d 43 48 43 50 p.C8LN...^.MCHCP 1830: 4d 32 4c 01 8d 42 55 46 30 0b f8 04 43 38 52 57 M2L..BUF0...C8RW 1840: 70 00 43 38 52 57 a0 1c 5e 2e 4d 43 48 43 50 4d p.C8RW..^.MCHCPM 1850: 32 48 8a 42 55 46 30 0a ca 43 43 4c 4e 70 00 43 2H.BUF0..CCLNp.C 1860: 43 4c 4e a0 1f 93 5e 2e 4d 43 48 43 50 4d 32 48 CLN...^.MCHCPM2H 1870: 01 8d 42 55 46 30 0b c8 05 43 43 52 57 70 00 43 ..BUF0...CCRWp.C 1880: 43 52 57 a0 1c 5e 2e 4d 43 48 43 50 4d 33 4c 8a CRW..^.MCHCPM3L. 1890: 42 55 46 30 0a e4 44 30 4c 4e 70 00 44 30 4c 4e BUF0..D0LNp.D0LN 18a0: a0 1f 93 5e 2e 4d 43 48 43 50 4d 33 4c 01 8d 42 ...^.MCHCPM3L..B 18b0: 55 46 30 0b 98 06 44 30 52 57 70 00 44 30 52 57 UF0...D0RWp.D0RW 18c0: a0 1c 5e 2e 4d 43 48 43 50 4d 33 48 8a 42 55 46 ..^.MCHCPM3H.BUF 18d0: 30 0a fe 44 34 4c 4e 70 00 44 34 4c 4e a0 1f 93 0..D4LNp.D4LN... 18e0: 5e 2e 4d 43 48 43 50 4d 33 48 01 8d 42 55 46 30 ^.MCHCPM3H..BUF0 18f0: 0b 68 07 44 34 52 57 70 00 44 34 52 57 a0 1d 5e .h.D4RWp.D4RW..^ 1900: 2e 4d 43 48 43 50 4d 34 4c 8a 42 55 46 30 0b 18 .MCHCPM4L.BUF0.. 1910: 01 44 38 4c 4e 70 00 44 38 4c 4e a0 1f 93 5e 2e .D8LNp.D8LN...^. 1920: 4d 43 48 43 50 4d 34 4c 01 8d 42 55 46 30 0b 38 MCHCPM4L..BUF0.8 1930: 08 44 38 52 57 70 00 44 38 52 57 a0 1d 5e 2e 4d .D8RWp.D8RW..^.M 1940: 43 48 43 50 4d 34 48 8a 42 55 46 30 0b 32 01 44 CHCPM4H.BUF0.2.D 1950: 43 4c 4e 70 00 44 43 4c 4e a0 1f 93 5e 2e 4d 43 CLNp.DCLN...^.MC 1960: 48 43 50 4d 34 48 01 8d 42 55 46 30 0b 08 09 44 HCPM4H..BUF0...D 1970: 43 52 57 70 00 44 43 52 57 a0 1d 5e 2e 4d 43 48 CRWp.DCRW..^.MCH 1980: 43 50 4d 35 4c 8a 42 55 46 30 0b 4c 01 45 30 4c CPM5L.BUF0.L.E0L 1990: 4e 70 00 45 30 4c 4e a0 1f 93 5e 2e 4d 43 48 43 Np.E0LN...^.MCHC 19a0: 50 4d 35 4c 01 8d 42 55 46 30 0b d8 09 45 30 52 PM5L..BUF0...E0R 19b0: 57 70 00 45 30 52 57 a0 1d 5e 2e 4d 43 48 43 50 Wp.E0RW..^.MCHCP 19c0: 4d 35 48 8a 42 55 46 30 0b 66 01 45 34 4c 4e 70 M5H.BUF0.f.E4LNp 19d0: 00 45 34 4c 4e a0 1f 93 5e 2e 4d 43 48 43 50 4d .E4LN...^.MCHCPM 19e0: 35 48 01 8d 42 55 46 30 0b a8 0a 45 34 52 57 70 5H..BUF0...E4RWp 19f0: 00 45 34 52 57 a0 1d 5e 2e 4d 43 48 43 50 4d 36 .E4RW..^.MCHCPM6 1a00: 4c 8a 42 55 46 30 0b 80 01 45 38 4c 4e 70 00 45 L.BUF0...E8LNp.E 1a10: 38 4c 4e a0 1f 93 5e 2e 4d 43 48 43 50 4d 36 4c 8LN...^.MCHCPM6L 1a20: 01 8d 42 55 46 30 0b 78 0b 45 38 52 57 70 00 45 ..BUF0.x.E8RWp.E 1a30: 38 52 57 a0 1d 5e 2e 4d 43 48 43 50 4d 36 48 8a 8RW..^.MCHCPM6H. 1a40: 42 55 46 30 0b 9a 01 45 43 4c 4e 70 00 45 43 4c BUF0...ECLNp.ECL 1a50: 4e a0 1f 93 5e 2e 4d 43 48 43 50 4d 36 48 01 8d N...^.MCHCPM6H.. 1a60: 42 55 46 30 0b 48 0c 45 43 52 57 70 00 45 43 52 BUF0.H.ECRWp.ECR 1a70: 57 a0 1d 5e 2e 4d 43 48 43 50 4d 30 48 8a 42 55 W..^.MCHCPM0H.BU 1a80: 46 30 0b b4 01 46 30 4c 4e 70 00 46 30 4c 4e a0 F0...F0LNp.F0LN. 1a90: 1f 93 5e 2e 4d 43 48 43 50 4d 30 48 01 8d 42 55 ..^.MCHCPM0H..BU 1aa0: 46 30 0b 18 0d 46 30 52 57 70 00 46 30 52 57 8a F0...F0RWp.F0RW. 1ab0: 42 55 46 30 0b c2 01 4d 31 4d 4e 8a 42 55 46 30 BUF0...M1MN.BUF0 1ac0: 0b c6 01 4d 31 4d 58 8a 42 55 46 30 0b ce 01 4d ...M1MX.BUF0...M 1ad0: 31 4c 4e 8a 42 55 46 30 0b dc 01 4d 32 4d 4e 8a 1LN.BUF0...M2MN. 1ae0: 42 55 46 30 0b e0 01 4d 32 4d 58 8a 42 55 46 30 BUF0...M2MX.BUF0 1af0: 0b e8 01 4d 32 4c 4e 79 5e 2e 4d 43 48 43 50 58 ...M2LNy^.MCHCPX 1b00: 42 52 0a 1a 4d 31 4d 58 7a 0c 00 00 00 10 5e 2e BR..M1MXz.....^. 1b10: 4d 43 48 43 50 58 53 5a 60 72 4d 31 4d 58 60 4d MCHCPXSZ`rM1MX`M 1b20: 32 4d 4e 72 74 4d 32 4d 58 4d 32 4d 4e 00 01 4d 2MNrtM2MXM2MN..M 1b30: 32 4c 4e 74 4d 31 4d 58 01 4d 31 4d 58 79 5e 2e 2LNtM1MX.M1MXy^. 1b40: 4d 43 48 43 54 4c 55 44 0a 14 4d 31 4d 4e 72 74 MCHCTLUD..M1MNrt 1b50: 4d 31 4d 58 4d 31 4d 4e 00 01 4d 31 4c 4e a4 42 M1MXM1MN..M1LN.B 1b60: 55 46 30 14 47 28 5f 50 52 54 00 a0 45 0f 47 50 UF0.G(_PRT..E.GP 1b70: 49 43 a4 12 4d 0e 13 12 0b 04 0c ff ff 01 00 00 IC..M........... 1b80: 00 0a 10 12 0b 04 0c ff ff 02 00 00 00 0a 10 12 ................ 1b90: 0b 04 0c ff ff 07 00 00 00 0a 10 12 0b 04 0c ff ................ 1ba0: ff 19 00 00 00 0a 14 12 0b 04 0c ff ff 1a 00 00 ................ 1bb0: 00 0a 10 12 0b 04 0c ff ff 1a 00 01 00 0a 15 12 ................ 1bc0: 0c 04 0c ff ff 1a 00 0a 02 00 0a 12 12 0b 04 0c ................ 1bd0: ff ff 1b 00 00 00 0a 16 12 0b 04 0c ff ff 1c 00 ................ 1be0: 00 00 0a 11 12 0b 04 0c ff ff 1c 00 01 00 0a 10 ................ 1bf0: 12 0c 04 0c ff ff 1c 00 0a 02 00 0a 12 12 0c 04 ................ 1c00: 0c ff ff 1c 00 0a 03 00 0a 13 12 0b 04 0c ff ff ................ 1c10: 1d 00 00 00 0a 17 12 0b 04 0c ff ff 1d 00 01 00 ................ 1c20: 0a 13 12 0c 04 0c ff ff 1d 00 0a 02 00 0a 12 12 ................ 1c30: 0b 04 0c ff ff 1f 00 00 00 0a 13 12 0b 04 0c ff ................ 1c40: ff 1f 00 01 00 0a 13 12 0c 04 0c ff ff 1f 00 0a ................ 1c50: 02 00 0a 13 12 0c 04 0c ff ff 1f 00 0a 03 00 0a ................ 1c60: 10 a1 49 18 a4 12 45 18 13 12 13 04 0c ff ff 01 ..I...E......... 1c70: 00 00 5e 2e 4c 50 43 42 4c 4e 4b 41 00 12 13 04 ..^.LPCBLNKA.... 1c80: 0c ff ff 02 00 00 5e 2e 4c 50 43 42 4c 4e 4b 41 ......^.LPCBLNKA 1c90: 00 12 13 04 0c ff ff 07 00 00 5e 2e 4c 50 43 42 ..........^.LPCB 1ca0: 4c 4e 4b 41 00 12 13 04 0c ff ff 19 00 00 5e 2e LNKA..........^. 1cb0: 4c 50 43 42 4c 4e 4b 45 00 12 13 04 0c ff ff 1a LPCBLNKE........ 1cc0: 00 00 5e 2e 4c 50 43 42 4c 4e 4b 41 00 12 13 04 ..^.LPCBLNKA.... 1cd0: 0c ff ff 1a 00 01 5e 2e 4c 50 43 42 4c 4e 4b 46 ......^.LPCBLNKF 1ce0: 00 12 14 04 0c ff ff 1a 00 0a 02 5e 2e 4c 50 43 ...........^.LPC 1cf0: 42 4c 4e 4b 43 00 12 13 04 0c ff ff 1b 00 00 5e BLNKC..........^ 1d00: 2e 4c 50 43 42 4c 4e 4b 47 00 12 13 04 0c ff ff .LPCBLNKG....... 1d10: 1c 00 00 5e 2e 4c 50 43 42 4c 4e 4b 42 00 12 13 ...^.LPCBLNKB... 1d20: 04 0c ff ff 1c 00 01 5e 2e 4c 50 43 42 4c 4e 4b .......^.LPCBLNK 1d30: 41 00 12 14 04 0c ff ff 1c 00 0a 02 5e 2e 4c 50 A...........^.LP 1d40: 43 42 4c 4e 4b 43 00 12 14 04 0c ff ff 1c 00 0a CBLNKC.......... 1d50: 03 5e 2e 4c 50 43 42 4c 4e 4b 44 00 12 13 04 0c .^.LPCBLNKD..... 1d60: ff ff 1d 00 00 5e 2e 4c 50 43 42 4c 4e 4b 48 00 .....^.LPCBLNKH. 1d70: 12 13 04 0c ff ff 1d 00 01 5e 2e 4c 50 43 42 4c .........^.LPCBL 1d80: 4e 4b 44 00 12 14 04 0c ff ff 1d 00 0a 02 5e 2e NKD...........^. 1d90: 4c 50 43 42 4c 4e 4b 43 00 12 13 04 0c ff ff 1f LPCBLNKC........ 1da0: 00 00 5e 2e 4c 50 43 42 4c 4e 4b 44 00 12 13 04 ..^.LPCBLNKD.... 1db0: 0c ff ff 1f 00 01 5e 2e 4c 50 43 42 4c 4e 4b 44 ......^.LPCBLNKD 1dc0: 00 12 14 04 0c ff ff 1f 00 0a 02 5e 2e 4c 50 43 ...........^.LPC 1dd0: 42 4c 4e 4b 44 00 12 14 04 0c ff ff 1f 00 0a 03 BLNKD........... 1de0: 5e 2e 4c 50 43 42 4c 4e 4b 41 00 5b 82 40 14 50 ^.LPCBLNKA.[.@.P 1df0: 44 52 43 08 5f 48 49 44 0c 41 d0 0c 02 08 5f 55 DRC._HID.A...._U 1e00: 49 44 01 08 42 55 46 30 11 46 06 0a 62 86 09 00 ID..BUF0.F..b... 1e10: 01 00 00 00 00 00 40 00 00 86 09 00 01 00 00 00 ......@......... 1e20: 00 00 40 00 00 86 09 00 01 00 00 00 00 00 10 00 ..@............. 1e30: 00 86 09 00 01 00 00 00 00 00 10 00 00 86 09 00 ................ 1e40: 01 00 00 00 00 00 00 00 00 86 09 00 01 00 00 d2 ................ 1e50: fe 00 00 02 00 86 09 00 01 00 00 d4 fe 00 50 00 ..............P. 1e60: 00 86 09 00 01 00 50 d4 fe 00 b0 04 00 79 00 14 ......P......y.. 1e70: 4d 0b 5f 43 52 53 08 8a 42 55 46 30 0a 04 52 42 M._CRS..BUF0..RB 1e80: 52 30 79 5e 5e 2e 4c 50 43 42 52 43 42 41 0a 0e R0y^^.LPCBRCBA.. 1e90: 52 42 52 30 8a 42 55 46 30 0a 10 4d 42 52 30 79 RBR0.BUF0..MBR0y 1ea0: 5e 5e 2e 4d 43 48 43 4d 48 42 52 0a 0e 4d 42 52 ^^.MCHCMHBR..MBR 1eb0: 30 8a 42 55 46 30 0a 1c 44 42 52 30 79 5e 5e 2e 0.BUF0..DBR0y^^. 1ec0: 4d 43 48 43 44 49 42 52 0a 0c 44 42 52 30 8a 42 MCHCDIBR..DBR0.B 1ed0: 55 46 30 0a 28 45 42 52 30 79 5e 5e 2e 4d 43 48 UF0.(EBR0y^^.MCH 1ee0: 43 45 50 42 52 0a 0c 45 42 52 30 8a 42 55 46 30 CEPBR..EBR0.BUF0 1ef0: 0a 34 58 42 52 30 79 5e 5e 2e 4d 43 48 43 50 58 .4XBR0y^^.MCHCPX 1f00: 42 52 0a 1a 58 42 52 30 8a 42 55 46 30 0a 38 58 BR..XBR0.BUF0.8X 1f10: 53 5a 30 7a 0c 00 00 00 10 5e 5e 2e 4d 43 48 43 SZ0z.....^^.MCHC 1f20: 50 58 53 5a 58 53 5a 30 a4 42 55 46 30 5b 82 4d PXSZXSZ0.BUF0[.M 1f30: 50 50 45 47 50 08 5f 41 44 52 0c 00 00 01 00 14 PPEGP._ADR...... 1f40: 41 09 5f 50 52 54 00 a0 33 47 50 49 43 a4 12 2c A._PRT..3GPIC.., 1f50: 04 12 09 04 0b ff ff 00 00 0a 10 12 09 04 0b ff ................ 1f60: ff 01 00 0a 11 12 0a 04 0b ff ff 0a 02 00 0a 12 ................ 1f70: 12 0a 04 0b ff ff 0a 03 00 0a 13 a1 45 05 a4 12 ............E... 1f80: 41 05 04 12 12 04 0b ff ff 00 5e 5e 2e 4c 50 43 A.........^^.LPC 1f90: 42 4c 4e 4b 41 00 12 12 04 0b ff ff 01 5e 5e 2e BLNKA........^^. 1fa0: 4c 50 43 42 4c 4e 4b 42 00 12 13 04 0b ff ff 0a LPCBLNKB........ 1fb0: 02 5e 5e 2e 4c 50 43 42 4c 4e 4b 43 00 12 13 04 .^^.LPCBLNKC.... 1fc0: 0b ff ff 0a 03 5e 5e 2e 4c 50 43 42 4c 4e 4b 44 .....^^.LPCBLNKD 1fd0: 00 5b 82 49 46 56 47 41 5f 08 5f 41 44 52 00 08 .[.IFVGA_._ADR.. 1fe0: 53 57 49 54 01 08 43 52 54 41 01 08 4c 43 44 41 SWIT..CRTA..LCDA 1ff0: 01 08 54 56 41 41 01 08 56 4c 44 46 01 5b 80 56 ..TVAA..VLDF.[.V 2000: 49 44 53 02 00 0a c8 5b 81 0b 56 49 44 53 03 56 IDS....[..VIDS.V 2010: 44 49 44 20 14 09 5f 53 54 41 00 a4 0a 0f 08 5f DID .._STA....._ 2020: 50 53 43 00 14 0c 5f 50 53 30 00 70 00 5f 50 53 PSC..._PS0.p._PS 2030: 43 14 0c 5f 50 53 31 00 70 01 5f 50 53 43 14 0d C.._PS1.p._PSC.. 2040: 5f 50 53 33 00 70 0a 03 5f 50 53 43 14 10 5f 44 _PS3.p.._PSC.._D 2050: 4f 53 01 70 7b 68 0a 03 00 53 57 49 54 14 17 5f OS.p{h...SWIT.._ 2060: 44 4f 44 00 a4 12 0f 03 0c 00 01 01 00 0c 10 01 DOD............. 2070: 01 00 0b 00 02 5b 82 4d 08 43 52 54 5f 14 0a 5f .....[.M.CRT_.._ 2080: 41 44 52 00 a4 0b 00 01 14 41 06 5f 44 43 53 00 ADR......A._DCS. 2090: 5e 5e 5e 5e 2e 4c 50 43 42 50 48 53 53 0a 0c 70 ^^^^.LPCBPHSS..p 20a0: 43 41 44 4c 60 70 43 53 54 45 61 7b 60 0a 02 60 CADL`pCSTEa{`..` 20b0: 7b 61 0a 02 61 a0 08 60 70 01 43 52 54 41 a1 07 {a..a..`p.CRTA.. 20c0: 70 00 43 52 54 41 a0 13 43 52 54 41 a0 08 93 61 p.CRTA..CRTA...a 20d0: 0a 02 a4 0a 1f a1 04 a4 0a 1d a1 0f a0 08 93 61 ...............a 20e0: 0a 02 a4 0a 0f a1 04 a4 0a 0d 14 12 5f 44 47 53 ............_DGS 20f0: 00 a0 07 43 52 54 41 a4 01 a1 03 a4 00 14 06 5f ...CRTA........_ 2100: 44 53 53 01 5b 82 47 0e 4c 43 44 5f 14 0a 5f 41 DSS.[.G.LCD_.._A 2110: 44 52 00 a4 0b 10 01 14 4d 05 5f 44 43 53 00 5e DR......M._DCS.^ 2120: 5e 5e 5e 2e 4c 50 43 42 50 48 53 53 0a 0c 70 43 ^^^.LPCBPHSS..pC 2130: 41 44 4c 60 70 43 53 54 45 61 7b 60 01 60 7b 61 ADL`pCSTEa{`.`{a 2140: 01 61 a0 08 60 70 01 4c 43 44 41 a1 07 70 00 4c .a..`p.LCDA..p.L 2150: 43 44 41 a0 12 4c 43 44 41 a0 07 93 61 01 a4 0a CDA..LCDA...a... 2160: 1f a1 04 a4 0a 1d a1 0e a0 07 93 61 01 a4 0a 0f ...........a.... 2170: a1 04 a4 0a 0d 14 12 5f 44 47 53 00 a0 07 4c 43 ......._DGS...LC 2180: 44 41 a4 01 a1 03 a4 00 14 06 5f 44 53 53 01 14 DA........_DSS.. 2190: 1d 5f 42 43 4c 00 a4 12 15 0a 0a 46 0a 28 00 0a ._BCL......F.(.. 21a0: 0a 0a 14 0a 1e 0a 28 0a 32 0a 3c 0a 46 14 20 5f ......(.2.<.F. _ 21b0: 42 43 4d 01 78 68 0a 0a 60 61 70 61 5e 5e 5e 5e BCM.xh..`apa^^^^ 21c0: 2f 03 4c 50 43 42 45 43 30 5f 42 52 54 53 14 1e /.LPCBEC0_BRTS.. 21d0: 5f 42 51 43 00 77 5e 5e 5e 5e 2f 03 4c 50 43 42 _BQC.w^^^^/.LPCB 21e0: 45 43 30 5f 42 52 54 53 0a 0a 60 a4 60 5b 82 4d EC0_BRTS..`.`[.M 21f0: 08 54 56 5f 5f 14 0a 5f 41 44 52 00 a4 0b 00 02 .TV__.._ADR..... 2200: 14 41 06 5f 44 43 53 00 5e 5e 5e 5e 2e 4c 50 43 .A._DCS.^^^^.LPC 2210: 42 50 48 53 53 0a 0c 70 43 41 44 4c 60 70 43 53 BPHSS..pCADL`pCS 2220: 54 45 61 7b 60 0a 04 60 7b 61 0a 04 61 a0 08 60 TEa{`..`{a..a..` 2230: 70 01 54 56 41 41 a1 07 70 00 54 56 41 41 a0 13 p.TVAA..p.TVAA.. 2240: 54 56 41 41 a0 08 93 61 0a 04 a4 0a 1f a1 04 a4 TVAA...a........ 2250: 0a 1d a1 0f a0 08 93 61 0a 04 a4 0a 0f a1 04 a4 .......a........ 2260: 0a 0d 14 12 5f 44 47 53 00 a0 07 54 56 41 41 a4 ...._DGS...TVAA. 2270: 01 a1 03 a4 00 14 06 5f 44 53 53 01 14 49 10 44 ......._DSS..I.D 2280: 53 53 57 00 a0 4a 0e 93 53 57 49 54 00 5e 5e 5e SSW..J..SWIT.^^^ 2290: 2e 4c 50 43 42 50 48 53 53 0a 0c 70 43 41 44 4c .LPCBPHSS..pCADL 22a0: 60 70 43 53 54 45 61 a0 16 94 61 01 7b 60 61 56 `pCSTEa...a.{`aV 22b0: 4c 44 46 7b 56 4c 44 46 0a fe 56 4c 44 46 a0 43 LDF{VLDF..VLDF.C 22c0: 0a 56 4c 44 46 a0 27 93 60 0a 09 a0 0b 93 61 0a .VLDF.'.`.....a. 22d0: 08 53 54 42 4c 0a 02 a0 0a 93 61 01 53 54 42 4c .STBL.....a.STBL 22e0: 0a 03 a0 0a 93 61 0a 09 53 54 42 4c 01 a0 28 93 .....a..STBL..(. 22f0: 60 0a 0a a0 0b 93 61 0a 08 53 54 42 4c 0a 05 a0 `.....a..STBL... 2300: 0a 93 61 0a 02 53 54 42 4c 01 a0 0b 93 61 0a 0a ..a..STBL....a.. 2310: 53 54 42 4c 0a 04 a0 4b 04 93 60 0a 0b a0 0b 93 STBL...K..`..... 2320: 61 0a 08 53 54 42 4c 0a 02 a0 0b 93 61 0a 09 53 a..STBL.....a..S 2330: 54 42 4c 0a 05 a0 0a 93 61 01 53 54 42 4c 0a 03 TBL.....a.STBL.. 2340: a0 0b 93 61 0a 0a 53 54 42 4c 0a 04 a0 0a 93 61 ...a..STBL.....a 2350: 0a 02 53 54 42 4c 01 a0 0a 93 61 0a 0b 53 54 42 ..STBL....a..STB 2360: 4c 01 a1 0c 70 01 56 4c 44 46 53 54 42 4c 01 a1 L...p.VLDFSTBL.. 2370: 16 a0 14 93 53 57 49 54 01 5e 5e 5e 2e 4c 50 43 ....SWIT.^^^.LPC 2380: 42 50 48 53 53 01 14 45 0b 53 54 42 4c 01 a0 16 BPHSS..E.STBL... 2390: 93 68 01 70 00 43 52 54 41 70 01 4c 43 44 41 70 .h.p.CRTAp.LCDAp 23a0: 00 54 56 41 41 a0 17 93 68 0a 02 70 01 43 52 54 .TVAA...h..p.CRT 23b0: 41 70 00 4c 43 44 41 70 00 54 56 41 41 a0 17 93 Ap.LCDAp.TVAA... 23c0: 68 0a 03 70 01 43 52 54 41 70 01 4c 43 44 41 70 h..p.CRTAp.LCDAp 23d0: 00 54 56 41 41 a0 17 93 68 0a 04 70 00 43 52 54 .TVAA...h..p.CRT 23e0: 41 70 00 4c 43 44 41 70 01 54 56 41 41 a0 17 93 Ap.LCDAp.TVAA... 23f0: 68 0a 05 70 00 43 52 54 41 70 01 4c 43 44 41 70 h..p.CRTAp.LCDAp 2400: 01 54 56 41 41 a0 17 93 68 0a 06 70 01 43 52 54 .TVAA...h..p.CRT 2410: 41 70 00 4c 43 44 41 70 01 54 56 41 41 a0 17 93 Ap.LCDAp.TVAA... 2420: 68 0a 07 70 01 43 52 54 41 70 01 4c 43 44 41 70 h..p.CRTAp.LCDAp 2430: 01 54 56 41 41 86 56 47 41 5f 0a 80 5b 82 42 f8 .TVAA.VGA_..[.B. 2440: 47 46 58 30 08 5f 41 44 52 0c 00 00 02 00 14 10 GFX0._ADR....... 2450: 5f 44 4f 53 01 70 7b 68 0a 07 00 44 53 45 4e 14 _DOS.p{h...DSEN. 2460: 41 26 5f 44 4f 44 00 70 00 4e 44 49 44 a0 15 92 A&_DOD.p.NDID... 2470: 93 44 49 44 4c 00 70 53 44 44 4c 44 49 44 31 44 .DIDL.pSDDLDID1D 2480: 49 44 31 a0 15 92 93 44 44 4c 32 00 70 53 44 44 ID1....DDL2.pSDD 2490: 4c 44 49 44 32 44 49 44 32 a0 15 92 93 44 44 4c LDID2DID2....DDL 24a0: 33 00 70 53 44 44 4c 44 49 44 33 44 49 44 33 a0 3.pSDDLDID3DID3. 24b0: 15 92 93 44 44 4c 34 00 70 53 44 44 4c 44 49 44 ...DDL4.pSDDLDID 24c0: 34 44 49 44 34 a0 15 92 93 44 44 4c 35 00 70 53 4DID4....DDL5.pS 24d0: 44 44 4c 44 49 44 35 44 49 44 35 a0 2c 93 4e 44 DDLDID5DID5.,.ND 24e0: 49 44 01 08 54 4d 50 31 12 07 01 0c ff ff ff ff ID..TMP1........ 24f0: 70 7d 0c 00 00 01 00 44 49 44 31 00 88 54 4d 50 p}.....DID1..TMP 2500: 31 00 00 a4 54 4d 50 31 a0 46 04 93 4e 44 49 44 1...TMP1.F..NDID 2510: 0a 02 08 54 4d 50 32 12 0c 02 0c ff ff ff ff 0c ...TMP2......... 2520: ff ff ff ff 70 7d 0c 00 00 01 00 44 49 44 31 00 ....p}.....DID1. 2530: 88 54 4d 50 32 00 00 70 7d 0c 00 00 01 00 44 49 .TMP2..p}.....DI 2540: 44 32 00 88 54 4d 50 32 01 00 a4 54 4d 50 32 a0 D2..TMP2...TMP2. 2550: 4f 05 93 4e 44 49 44 0a 03 08 54 4d 50 33 12 11 O..NDID...TMP3.. 2560: 03 0c ff ff ff ff 0c ff ff ff ff 0c ff ff ff ff ................ 2570: 70 7d 0c 00 00 01 00 44 49 44 31 00 88 54 4d 50 p}.....DID1..TMP 2580: 33 00 00 70 7d 0c 00 00 01 00 44 49 44 32 00 88 3..p}.....DID2.. 2590: 54 4d 50 33 01 00 70 7d 0c 00 00 01 00 44 49 44 TMP3..p}.....DID 25a0: 33 00 88 54 4d 50 33 0a 02 00 a4 54 4d 50 33 a0 3..TMP3....TMP3. 25b0: 48 07 93 4e 44 49 44 0a 04 08 54 4d 50 34 12 16 H..NDID...TMP4.. 25c0: 04 0c ff ff ff ff 0c ff ff ff ff 0c ff ff ff ff ................ 25d0: 0c ff ff ff ff 70 7d 0c 00 00 01 00 44 49 44 31 .....p}.....DID1 25e0: 00 88 54 4d 50 34 00 00 70 7d 0c 00 00 01 00 44 ..TMP4..p}.....D 25f0: 49 44 32 00 88 54 4d 50 34 01 00 70 7d 0c 00 00 ID2..TMP4..p}... 2600: 01 00 44 49 44 33 00 88 54 4d 50 34 0a 02 00 70 ..DID3..TMP4...p 2610: 7d 0c 00 00 01 00 44 49 44 34 00 88 54 4d 50 34 }.....DID4..TMP4 2620: 0a 03 00 a4 54 4d 50 34 a0 41 09 94 4e 44 49 44 ....TMP4.A..NDID 2630: 0a 04 08 54 4d 50 35 12 1b 05 0c ff ff ff ff 0c ...TMP5......... 2640: ff ff ff ff 0c ff ff ff ff 0c ff ff ff ff 0c ff ................ 2650: ff ff ff 70 7d 0c 00 00 01 00 44 49 44 31 00 88 ...p}.....DID1.. 2660: 54 4d 50 35 00 00 70 7d 0c 00 00 01 00 44 49 44 TMP5..p}.....DID 2670: 32 00 88 54 4d 50 35 01 00 70 7d 0c 00 00 01 00 2..TMP5..p}..... 2680: 44 49 44 33 00 88 54 4d 50 35 0a 02 00 70 7d 0c DID3..TMP5...p}. 2690: 00 00 01 00 44 49 44 34 00 88 54 4d 50 35 0a 03 ....DID4..TMP5.. 26a0: 00 70 7d 0c 00 00 01 00 44 49 44 34 00 88 54 4d .p}.....DID4..TM 26b0: 50 35 0a 04 00 a4 54 4d 50 35 a4 12 05 01 0b 00 P5....TMP5...... 26c0: 04 5b 82 43 06 44 44 30 31 14 1c 5f 41 44 52 08 .[.C.DD01.._ADR. 26d0: a0 09 93 44 49 44 31 00 a4 01 a1 0b a4 7b 0b ff ...DID1......{.. 26e0: ff 44 49 44 31 00 14 0f 5f 44 43 53 00 a4 43 44 .DID1..._DCS..CD 26f0: 44 53 44 49 44 31 14 0f 5f 44 47 53 00 a4 4e 44 DSDID1.._DGS..ND 2700: 44 53 44 49 44 31 14 1f 5f 44 53 53 01 a0 18 93 DSDID1.._DSS.... 2710: 7b 68 0c 00 00 00 c0 00 0c 00 00 00 c0 70 4e 53 {h...........pNS 2720: 54 45 43 53 54 45 5b 82 44 06 44 44 30 32 14 1d TECSTE[.D.DD02.. 2730: 5f 41 44 52 08 a0 0a 93 44 49 44 32 00 a4 0a 02 _ADR....DID2.... 2740: a1 0b a4 7b 0b ff ff 44 49 44 32 00 14 0f 5f 44 ...{...DID2..._D 2750: 43 53 00 a4 43 44 44 53 44 49 44 32 14 0f 5f 44 CS..CDDSDID2.._D 2760: 47 53 00 a4 4e 44 44 53 44 49 44 32 14 1f 5f 44 GS..NDDSDID2.._D 2770: 53 53 01 a0 18 93 7b 68 0c 00 00 00 c0 00 0c 00 SS....{h........ 2780: 00 00 c0 70 4e 53 54 45 43 53 54 45 5b 82 41 07 ...pNSTECSTE[.A. 2790: 44 44 30 33 14 1d 5f 41 44 52 08 a0 0a 93 44 49 DD03.._ADR....DI 27a0: 44 33 00 a4 0a 03 a1 0b a4 7b 0b ff ff 44 49 44 D3.......{...DID 27b0: 33 00 14 1c 5f 44 43 53 00 a0 0a 93 44 49 44 33 3..._DCS....DID3 27c0: 00 a4 0a 0b a1 0a a4 43 44 44 53 44 49 44 33 14 .......CDDSDID3. 27d0: 0f 5f 44 47 53 00 a4 4e 44 44 53 44 49 44 33 14 ._DGS..NDDSDID3. 27e0: 1f 5f 44 53 53 01 a0 18 93 7b 68 0c 00 00 00 c0 ._DSS....{h..... 27f0: 00 0c 00 00 00 c0 70 4e 53 54 45 43 53 54 45 5b ......pNSTECSTE[ 2800: 82 41 07 44 44 30 34 14 1d 5f 41 44 52 08 a0 0a .A.DD04.._ADR... 2810: 93 44 49 44 34 00 a4 0a 04 a1 0b a4 7b 0b ff ff .DID4.......{... 2820: 44 49 44 34 00 14 1c 5f 44 43 53 00 a0 0a 93 44 DID4..._DCS....D 2830: 49 44 34 00 a4 0a 0b a1 0a a4 43 44 44 53 44 49 ID4.......CDDSDI 2840: 44 34 14 0f 5f 44 47 53 00 a4 4e 44 44 53 44 49 D4.._DGS..NDDSDI 2850: 44 34 14 1f 5f 44 53 53 01 a0 18 93 7b 68 0c 00 D4.._DSS....{h.. 2860: 00 00 c0 00 0c 00 00 00 c0 70 4e 53 54 45 43 53 .........pNSTECS 2870: 54 45 5b 82 41 07 44 44 30 35 14 1d 5f 41 44 52 TE[.A.DD05.._ADR 2880: 08 a0 0a 93 44 49 44 35 00 a4 0a 05 a1 0b a4 7b ....DID5.......{ 2890: 0b ff ff 44 49 44 35 00 14 1c 5f 44 43 53 00 a0 ...DID5..._DCS.. 28a0: 0a 93 44 49 44 35 00 a4 0a 0b a1 0a a4 43 44 44 ..DID5.......CDD 28b0: 53 44 49 44 35 14 0f 5f 44 47 53 00 a4 4e 44 44 SDID5.._DGS..NDD 28c0: 53 44 49 44 35 14 1f 5f 44 53 53 01 a0 18 93 7b SDID5.._DSS....{ 28d0: 68 0c 00 00 00 c0 00 0c 00 00 00 c0 70 4e 53 54 h...........pNST 28e0: 45 43 53 54 45 14 4e 06 53 44 44 4c 01 75 4e 44 ECSTE.N.SDDL.uND 28f0: 49 44 70 7b 68 0b 0f 0f 00 60 7d 0c 00 00 00 80 IDp{h....`}..... 2900: 60 61 a0 09 93 44 49 44 4c 60 a4 61 a0 09 93 44 `a...DIDL`.a...D 2910: 44 4c 32 60 a4 61 a0 09 93 44 44 4c 33 60 a4 61 DL2`.a...DDL3`.a 2920: a0 09 93 44 44 4c 34 60 a4 61 a0 09 93 44 44 4c ...DDL4`.a...DDL 2930: 35 60 a4 61 a0 09 93 44 44 4c 36 60 a4 61 a0 09 5`.a...DDL6`.a.. 2940: 93 44 44 4c 37 60 a4 61 a0 09 93 44 44 4c 38 60 .DDL7`.a...DDL8` 2950: a4 61 a4 00 14 4a 08 43 44 44 53 01 a0 0f 93 43 .a...J.CDDS....C 2960: 41 44 4c 7b 68 0b 0f 0f 00 a4 0a 1f a0 0f 93 43 ADL{h..........C 2970: 41 4c 32 7b 68 0b 0f 0f 00 a4 0a 1f a0 0f 93 43 AL2{h..........C 2980: 41 4c 33 7b 68 0b 0f 0f 00 a4 0a 1f a0 0f 93 43 AL3{h..........C 2990: 41 4c 34 7b 68 0b 0f 0f 00 a4 0a 1f a0 0f 93 43 AL4{h..........C 29a0: 41 4c 35 7b 68 0b 0f 0f 00 a4 0a 1f a0 0f 93 43 AL5{h..........C 29b0: 41 4c 36 7b 68 0b 0f 0f 00 a4 0a 1f a0 0f 93 43 AL6{h..........C 29c0: 41 4c 37 7b 68 0b 0f 0f 00 a4 0a 1f a0 0f 93 43 AL7{h..........C 29d0: 41 4c 38 7b 68 0b 0f 0f 00 a4 0a 1f a4 0a 1d 14 AL8{h........... 29e0: 41 08 4e 44 44 53 01 a0 0e 93 4e 41 44 4c 7b 68 A.NDDS....NADL{h 29f0: 0b 0f 0f 00 a4 01 a0 0e 93 4e 44 4c 32 7b 68 0b .........NDL2{h. 2a00: 0f 0f 00 a4 01 a0 0e 93 4e 44 4c 33 7b 68 0b 0f ........NDL3{h.. 2a10: 0f 00 a4 01 a0 0e 93 4e 44 4c 34 7b 68 0b 0f 0f .......NDL4{h... 2a20: 00 a4 01 a0 0e 93 4e 44 4c 35 7b 68 0b 0f 0f 00 ......NDL5{h.... 2a30: a4 01 a0 0e 93 4e 44 4c 36 7b 68 0b 0f 0f 00 a4 .....NDL6{h..... 2a40: 01 a0 0e 93 4e 44 4c 37 7b 68 0b 0f 0f 00 a4 01 ....NDL7{h...... 2a50: a0 0e 93 4e 44 4c 38 7b 68 0b 0f 0f 00 a4 01 a4 ...NDL8{h....... 2a60: 00 14 40 07 42 52 54 4e 09 a0 14 93 7b 44 49 44 ..@.BRTN....{DID 2a70: 31 0b 00 0f 00 0b 00 04 86 44 44 30 31 68 a0 14 1........DD01h.. 2a80: 93 7b 44 49 44 32 0b 00 0f 00 0b 00 04 86 44 44 .{DID2........DD 2a90: 30 32 68 a0 14 93 7b 44 49 44 33 0b 00 0f 00 0b 02h...{DID3..... 2aa0: 00 04 86 44 44 30 33 68 a0 14 93 7b 44 49 44 34 ...DD03h...{DID4 2ab0: 0b 00 0f 00 0b 00 04 86 44 44 30 34 68 a0 14 93 ........DD04h... 2ac0: 7b 44 49 44 35 0b 00 0f 00 0b 00 04 86 44 44 30 {DID5........DD0 2ad0: 35 68 10 24 5e 5e 50 43 49 30 5b 80 4d 43 48 50 5h.$^^PCI0[.MCHP 2ae0: 02 0a 40 0a c0 5b 81 10 4d 43 48 50 00 00 40 30 ..@..[..MCHP..@0 2af0: 54 41 53 4d 0a 00 06 5b 80 49 47 44 50 02 0a 40 TASM...[.IGDP..@ 2b00: 0a c0 5b 81 45 05 49 47 44 50 00 00 40 09 00 01 ..[.E.IGDP..@... 2b10: 47 49 56 44 01 00 02 47 55 4d 41 03 00 09 00 04 GIVD...GUMA..... 2b20: 47 4d 46 4e 01 00 1b 00 40 46 41 53 4c 45 08 00 GMFN....@FASLE.. 2b30: 18 47 53 53 45 01 47 53 53 42 0e 47 53 45 53 01 .GSSE.GSSB.GSES. 2b40: 00 30 00 08 43 44 56 4c 05 00 03 00 18 4c 42 50 .0..CDVL.....LBP 2b50: 43 08 00 30 41 53 4c 53 20 5b 80 49 47 44 4d 00 C..0ASLS [.IGDM. 2b60: 41 53 4c 42 0b 00 20 5b 81 4e 16 49 47 44 4d 00 ASLB.. [.N.IGDM. 2b70: 53 49 47 4e 40 08 53 49 5a 45 20 4f 56 45 52 20 SIGN@.SIZE OVER 2b80: 53 56 45 52 40 10 56 56 45 52 40 08 47 56 45 52 SVER@.VVER@.GVER 2b90: 40 08 4d 42 4f 58 20 00 40 52 44 52 44 59 20 43 @.MBOX .@RDRDY C 2ba0: 53 54 53 20 43 45 56 54 20 00 40 0a 44 49 44 4c STS CEVT .@.DIDL 2bb0: 20 44 44 4c 32 20 44 44 4c 33 20 44 44 4c 34 20 DDL2 DDL3 DDL4 2bc0: 44 44 4c 35 20 44 44 4c 36 20 44 44 4c 37 20 44 DDL5 DDL6 DDL7 D 2bd0: 44 4c 38 20 43 50 44 4c 20 43 50 4c 32 20 43 50 DL8 CPDL CPL2 CP 2be0: 4c 33 20 43 50 4c 34 20 43 50 4c 35 20 43 50 4c L3 CPL4 CPL5 CPL 2bf0: 36 20 43 50 4c 37 20 43 50 4c 38 20 43 41 44 4c 6 CPL7 CPL8 CADL 2c00: 20 43 41 4c 32 20 43 41 4c 33 20 43 41 4c 34 20 CAL2 CAL3 CAL4 2c10: 43 41 4c 35 20 43 41 4c 36 20 43 41 4c 37 20 43 CAL5 CAL6 CAL7 C 2c20: 41 4c 38 20 4e 41 44 4c 20 4e 44 4c 32 20 4e 44 AL8 NADL NDL2 ND 2c30: 4c 33 20 4e 44 4c 34 20 4e 44 4c 35 20 4e 44 4c L3 NDL4 NDL5 NDL 2c40: 36 20 4e 44 4c 37 20 4e 44 4c 38 20 41 53 4c 50 6 NDL7 NDL8 ASLP 2c50: 20 54 49 44 58 20 43 48 50 44 20 43 4c 49 44 20 TIDX CHPD CLID 2c60: 43 44 43 4b 20 53 58 53 57 20 45 56 54 53 20 43 CDCK SXSW EVTS C 2c70: 4e 4f 54 20 4e 52 44 59 20 00 40 1e 53 43 49 45 NOT NRDY .@.SCIE 2c80: 01 47 45 46 43 04 47 58 46 43 03 47 45 53 46 08 .GEFC.GXFC.GESF. 2c90: 00 10 50 41 52 4d 20 44 53 4c 50 20 00 40 7a 41 ..PARM DSLP .@zA 2ca0: 52 44 59 20 41 53 4c 43 20 54 43 48 45 20 41 4c RDY ASLC TCHE AL 2cb0: 53 49 20 42 43 4c 50 20 50 46 49 54 20 43 42 4c SI BCLP PFIT CBL 2cc0: 56 20 42 43 4c 4d 40 14 43 50 46 4d 20 00 40 5c V BCLM@.CPFM .@\ 2cd0: 47 56 44 31 80 00 0e 08 44 42 54 42 12 32 15 00 GVD1....DBTB.2.. 2ce0: 0a 07 0a 38 0b c0 01 0b 00 0e 0a 3f 0b c7 01 0b ...8.......?.... 2cf0: 07 0e 0b f8 01 0b 38 0e 0b c0 0f 00 00 00 00 00 ......8......... 2d00: 0b 00 70 0b 07 70 0b 38 70 0b c0 71 0b 00 7e 08 ..p..p.8p..q..~. 2d10: 43 44 43 54 12 23 03 12 0a 03 0a c8 0b 40 01 0b CDCT.#.......@.. 2d20: 90 01 12 0a 03 0a c8 0b 4d 01 0b 90 01 12 0a 03 ........M....... 2d30: 0a de 0b 4d 01 0b 7d 01 08 53 55 43 43 01 08 4e ...M..}..SUCC..N 2d40: 56 4c 44 0a 02 08 43 52 49 54 0a 04 08 4e 43 52 VLD...CRIT...NCR 2d50: 54 0a 06 14 4c 4a 47 53 43 49 08 14 44 1e 47 42 T...LJGSCI..D.GB 2d60: 44 41 08 a0 1a 93 47 45 53 46 00 70 0b 79 02 50 DA....GESF.p.y.P 2d70: 41 52 4d 70 00 47 45 53 46 a4 53 55 43 43 a0 1a ARMp.GESF.SUCC.. 2d80: 93 47 45 53 46 01 70 0b 40 02 50 41 52 4d 70 00 .GESF.p.@.PARMp. 2d90: 47 45 53 46 a4 53 55 43 43 a0 47 04 93 47 45 53 GESF.SUCC.G..GES 2da0: 46 0a 04 7b 50 41 52 4d 0c 00 00 ff ef 50 41 52 F..{PARM.....PAR 2db0: 4d 7b 50 41 52 4d 79 83 88 44 42 54 42 49 42 54 M{PARMy..DBTBIBT 2dc0: 54 00 0a 10 00 50 41 52 4d 7d 49 42 54 54 50 41 T....PARM}IBTTPA 2dd0: 52 4d 50 41 52 4d 70 00 47 45 53 46 a4 53 55 43 RMPARMp.GESF.SUC 2de0: 43 a0 4a 06 93 47 45 53 46 0a 05 70 49 50 53 43 C.J..GESF..pIPSC 2df0: 50 41 52 4d 7d 50 41 52 4d 79 49 50 41 54 0a 08 PARM}PARMyIPAT.. 2e00: 00 50 41 52 4d 72 50 41 52 4d 0b 00 01 50 41 52 .PARMrPARM...PAR 2e10: 4d 7d 50 41 52 4d 79 4c 49 44 53 0a 10 00 50 41 M}PARMyLIDS...PA 2e20: 52 4d 72 50 41 52 4d 0c 00 00 01 00 50 41 52 4d RMrPARM.....PARM 2e30: 7d 50 41 52 4d 79 49 42 49 41 0a 14 00 50 41 52 }PARMyIBIA...PAR 2e40: 4d 70 00 47 45 53 46 a4 53 55 43 43 a0 2d 93 47 Mp.GESF.SUCC.-.G 2e50: 45 53 46 0a 06 70 49 54 56 46 50 41 52 4d 7d 50 ESF..pITVFPARM}P 2e60: 41 52 4d 79 49 54 56 4d 0a 04 00 50 41 52 4d 70 ARMyITVM...PARMp 2e70: 00 47 45 53 46 a4 53 55 43 43 a0 4f 08 93 47 45 .GESF.SUCC.O..GE 2e80: 53 46 0a 07 70 47 49 56 44 50 41 52 4d 7f 50 41 SF..pGIVDPARM.PA 2e90: 52 4d 01 50 41 52 4d 7d 50 41 52 4d 79 47 4d 46 RM.PARM}PARMyGMF 2ea0: 4e 01 00 50 41 52 4d 7d 50 41 52 4d 0b 00 10 50 N..PARM}PARM...P 2eb0: 41 52 4d a0 16 49 44 4d 4d 7d 50 41 52 4d 79 49 ARM..IDMM}PARMyI 2ec0: 44 4d 53 0a 11 00 50 41 52 4d a1 12 7d 50 41 52 DMS...PARM..}PAR 2ed0: 4d 79 49 44 4d 53 0a 0d 00 50 41 52 4d 7d 79 83 MyIDMS...PARM}y. 2ee0: 88 83 88 43 44 43 54 48 56 43 4f 00 74 43 44 56 ...CDCTHVCO.tCDV 2ef0: 4c 01 00 00 0a 15 00 50 41 52 4d 50 41 52 4d 70 L......PARMPARMp 2f00: 01 47 45 53 46 a4 53 55 43 43 a0 2a 93 47 45 53 .GESF.SUCC.*.GES 2f10: 46 0a 0a 70 00 50 41 52 4d a0 10 49 53 53 43 7d F..p.PARM..ISSC} 2f20: 50 41 52 4d 0a 03 50 41 52 4d 70 00 47 45 53 46 PARM..PARMp.GESF 2f30: a4 53 55 43 43 70 00 47 45 53 46 a4 43 52 49 54 .SUCCp.GESF.CRIT 2f40: 14 41 28 53 42 43 42 08 a0 20 93 47 45 53 46 00 .A(SBCB.. .GESF. 2f50: 70 00 50 41 52 4d 70 0b 7d f7 50 41 52 4d 70 00 p.PARMp.}.PARMp. 2f60: 47 45 53 46 a4 53 55 43 43 a0 18 93 47 45 53 46 GESF.SUCC...GESF 2f70: 01 70 00 47 45 53 46 70 00 50 41 52 4d a4 53 55 .p.GESFp.PARM.SU 2f80: 43 43 a0 19 93 47 45 53 46 0a 03 70 00 47 45 53 CC...GESF..p.GES 2f90: 46 70 00 50 41 52 4d a4 53 55 43 43 a0 19 93 47 Fp.PARM.SUCC...G 2fa0: 45 53 46 0a 04 70 00 47 45 53 46 70 00 50 41 52 ESF..p.GESFp.PAR 2fb0: 4d a4 53 55 43 43 a0 19 93 47 45 53 46 0a 05 70 M.SUCC...GESF..p 2fc0: 00 47 45 53 46 70 00 50 41 52 4d a4 53 55 43 43 .GESFp.PARM.SUCC 2fd0: a0 37 93 47 45 53 46 0a 06 70 7b 50 41 52 4d 0a .7.GESF..p{PARM. 2fe0: 0f 00 49 54 56 46 70 7a 7b 50 41 52 4d 0a f0 00 ..ITVFpz{PARM... 2ff0: 0a 04 00 49 54 56 4d 70 00 47 45 53 46 70 00 50 ...ITVMp.GESFp.P 3000: 41 52 4d a4 53 55 43 43 a0 19 93 47 45 53 46 0a ARM.SUCC...GESF. 3010: 07 70 00 47 45 53 46 70 00 50 41 52 4d a4 53 55 .p.GESFp.PARM.SU 3020: 43 43 a0 19 93 47 45 53 46 0a 08 70 00 47 45 53 CC...GESF..p.GES 3030: 46 70 00 50 41 52 4d a4 53 55 43 43 a0 24 93 47 Fp.PARM.SUCC.$.G 3040: 45 53 46 0a 09 7b 50 41 52 4d 0a ff 49 42 54 54 ESF..{PARM..IBTT 3050: 70 00 47 45 53 46 70 00 50 41 52 4d a4 53 55 43 p.GESFp.PARM.SUC 3060: 43 a0 46 05 93 47 45 53 46 0a 0a 7b 50 41 52 4d C.F..GESF..{PARM 3070: 0a ff 49 50 53 43 a0 21 7b 7a 50 41 52 4d 0a 08 ..IPSC.!{zPARM.. 3080: 00 0a ff 00 7b 7a 50 41 52 4d 0a 08 00 0a ff 49 ....{zPARM.....I 3090: 50 41 54 76 49 50 41 54 7b 7a 50 41 52 4d 0a 14 PATvIPAT{zPARM.. 30a0: 00 0a 07 49 42 49 41 70 00 47 45 53 46 70 00 50 ...IBIAp.GESFp.P 30b0: 41 52 4d a4 53 55 43 43 a0 40 06 93 47 45 53 46 ARM.SUCC.@..GESF 30c0: 0a 0b 7b 7a 50 41 52 4d 01 00 01 49 46 31 45 a0 ..{zPARM...IF1E. 30d0: 21 7b 50 41 52 4d 0c 00 e0 01 00 00 7b 7a 50 41 !{PARM......{zPA 30e0: 52 4d 0a 0d 00 0a 0f 49 44 4d 53 70 00 49 44 4d RM.....IDMSp.IDM 30f0: 4d a1 16 7b 7a 50 41 52 4d 0a 11 00 0a 0f 49 44 M..{zPARM.....ID 3100: 4d 53 70 01 49 44 4d 4d 70 00 47 45 53 46 70 00 MSp.IDMMp.GESFp. 3110: 50 41 52 4d a4 53 55 43 43 a0 19 93 47 45 53 46 PARM.SUCC...GESF 3120: 0a 10 70 00 47 45 53 46 70 00 50 41 52 4d a4 53 ..p.GESFp.PARM.S 3130: 55 43 43 a0 1f 93 47 45 53 46 0a 11 7d 50 41 52 UCC...GESF..}PAR 3140: 4d 0b 00 01 50 41 52 4d 70 00 47 45 53 46 a4 53 M...PARMp.GESF.S 3150: 55 43 43 a0 49 04 93 47 45 53 46 0a 12 a0 26 7b UCC.I..GESF...&{ 3160: 50 41 52 4d 01 00 a0 10 93 7a 50 41 52 4d 01 00 PARM.....zPARM.. 3170: 01 70 01 49 53 53 43 a1 0c 70 00 47 45 53 46 a4 .p.ISSC..p.GESF. 3180: 43 52 49 54 a1 07 70 00 49 53 53 43 70 00 47 45 CRIT..p.ISSCp.GE 3190: 53 46 70 00 50 41 52 4d a4 53 55 43 43 a0 19 93 SFp.PARM.SUCC... 31a0: 47 45 53 46 0a 13 70 00 47 45 53 46 70 00 50 41 GESF..p.GESFp.PA 31b0: 52 4d a4 53 55 43 43 70 00 47 45 53 46 a4 53 55 RM.SUCCp.GESF.SU 31c0: 43 43 a0 11 93 47 45 46 43 0a 04 70 47 42 44 41 CC...GEFC..pGBDA 31d0: 47 58 46 43 a0 11 93 47 45 46 43 0a 06 70 53 42 GXFC...GEFC..pSB 31e0: 43 42 47 58 46 43 70 00 47 45 46 43 70 01 53 43 CBGXFCp.GEFCp.SC 31f0: 49 53 70 00 47 53 53 45 70 00 53 43 49 45 a4 00 ISp.GSSEp.SCIE.. 3200: 14 19 50 44 52 44 00 a0 0c 92 44 52 44 59 5b 22 ..PDRD....DRDY[" 3210: 41 53 4c 50 a4 92 44 52 44 59 14 1d 50 53 54 53 ASLP..DRDY..PSTS 3220: 00 a0 0e 94 43 53 54 53 0a 02 5b 22 41 53 4c 50 ....CSTS..["ASLP 3230: a4 93 43 53 54 53 0a 03 14 47 06 47 4e 4f 54 02 ..CSTS...G.GNOT. 3240: a0 07 50 44 52 44 a4 01 a0 07 50 53 54 53 a4 01 ..PDRD....PSTS.. 3250: 70 68 43 45 56 54 70 0a 03 43 53 54 53 a0 2c 90 phCEVTp..CSTS.,. 3260: 93 43 48 50 44 00 93 69 00 a0 18 91 94 4f 53 59 .CHPD..i.....OSY 3270: 53 0b d0 07 95 4f 53 59 53 0b d6 07 86 50 43 49 S....OSYS....PCI 3280: 30 69 a1 07 86 47 46 58 30 69 86 47 46 58 30 0a 0i...GFX0i.GFX0. 3290: 80 a0 0c 92 50 53 54 53 70 00 43 45 56 54 a4 00 ....PSTSp.CEVT.. 32a0: 14 13 47 48 44 53 01 70 68 54 49 44 58 a4 47 4e ..GHDS.phTIDX.GN 32b0: 4f 54 01 00 14 14 47 4c 49 44 01 70 68 43 4c 49 OT....GLID.phCLI 32c0: 44 a4 47 4e 4f 54 0a 02 00 14 15 47 44 43 4b 01 D.GNOT.....GDCK. 32d0: 70 68 43 44 43 4b a4 47 4e 4f 54 0a 04 0a 80 14 phCDCK.GNOT..... 32e0: 19 50 41 52 44 00 a0 0c 92 41 52 44 59 5b 22 41 .PARD....ARDY["A 32f0: 53 4c 50 a4 92 41 52 44 59 14 46 0c 41 49 4e 54 SLP..ARDY.F.AINT 3300: 02 a0 0e 92 7b 54 43 48 45 79 01 68 00 00 a4 01 ....{TCHEy.h.... 3310: a0 07 50 41 52 44 a4 01 a0 4c 05 93 68 0a 02 a0 ..PARD...L..h... 3320: 33 43 50 46 4d a0 0e 93 43 50 46 4d 01 70 0a 06 3CPFM...CPFM.p.. 3330: 50 46 49 54 a0 0f 93 43 50 46 4d 0a 06 70 0a 08 PFIT...CPFM..p.. 3340: 50 46 49 54 a0 0e 93 43 50 46 4d 0a 08 70 01 50 PFIT...CPFM..p.P 3350: 46 49 54 a1 0c 7f 50 46 49 54 0a 07 50 46 49 54 FIT...PFIT..PFIT 3360: 7d 50 46 49 54 0c 00 00 00 80 50 46 49 54 70 0a }PFIT.....PFITp. 3370: 04 41 53 4c 43 a1 42 04 a0 28 93 68 01 70 78 77 .ASLC.B..(.h.pxw 3380: 69 0a ff 00 0a 64 00 00 42 43 4c 50 7d 42 43 4c i....d..BCLP}BCL 3390: 50 0c 00 00 00 80 42 43 4c 50 70 0a 02 41 53 4c P.....BCLPp..ASL 33a0: 43 a1 16 a0 10 93 68 00 70 69 41 4c 53 49 70 01 C.....h.piALSIp. 33b0: 41 53 4c 43 a1 03 a4 01 70 00 4c 42 50 43 a4 00 ASLC....p.LBPC.. 33c0: 10 41 36 5c 00 5b 80 49 4f 5f 54 01 0b 00 08 0a .A6\.[.IO_T..... 33d0: 10 5b 81 0e 49 4f 5f 54 01 00 40 04 54 52 50 30 .[..IO_T..@.TRP0 33e0: 08 5b 80 50 4d 49 4f 01 0b 00 10 0a 80 5b 81 28 .[.PMIO......[.( 33f0: 50 4d 49 4f 01 00 40 15 00 08 00 02 41 43 50 57 PMIO..@.....ACPW 3400: 01 00 45 0b 00 01 47 50 45 43 01 00 4e 10 00 09 ..E...GPEC..N... 3410: 53 43 49 53 01 00 06 5b 80 47 50 49 4f 01 0b 80 SCIS...[.GPIO... 3420: 11 0a 3c 5b 81 40 0c 47 50 49 4f 01 47 55 30 30 ..<[.@.GPIO.GU00 3430: 08 47 55 30 31 08 47 55 30 32 08 47 55 30 33 08 .GU01.GU02.GU03. 3440: 47 49 4f 30 08 47 49 4f 31 08 47 49 4f 32 08 47 GIO0.GIO1.GIO2.G 3450: 49 4f 33 08 00 20 47 4c 30 30 08 47 4c 30 31 08 IO3.. GL00.GL01. 3460: 47 4c 30 32 08 00 03 47 50 32 37 01 47 50 32 38 GL02...GP27.GP28 3470: 01 00 03 00 40 04 47 42 30 30 08 47 42 30 31 08 ....@.GB00.GB01. 3480: 47 42 30 32 08 47 42 30 33 08 00 40 08 47 49 56 GB02.GB03..@.GIV 3490: 30 08 00 03 4c 50 4f 4c 01 00 04 47 49 56 32 08 0...LPOL...GIV2. 34a0: 47 49 56 33 08 47 55 30 34 08 47 55 30 35 08 47 GIV3.GU04.GU05.G 34b0: 55 30 36 08 47 55 30 37 08 47 49 4f 34 08 47 49 U06.GU07.GIO4.GI 34c0: 4f 35 08 47 49 4f 36 08 47 49 4f 37 08 00 05 47 O5.GIO6.GIO7...G 34d0: 50 33 37 01 00 02 47 4c 30 35 08 47 4c 30 36 08 P37...GL05.GL06. 34e0: 47 4c 30 37 08 5b 80 52 43 52 42 00 0c 00 c0 d1 GL07.[.RCRB..... 34f0: fe 0b 00 40 5b 81 48 05 52 43 52 42 13 00 80 00 ...@[.H.RCRB.... 3500: 08 00 80 00 10 00 80 02 02 48 50 41 53 02 00 05 .........HPAS... 3510: 48 50 41 45 01 00 48 09 00 01 50 41 54 44 01 53 HPAE..H...PATD.S 3520: 41 54 44 01 53 4d 42 44 01 48 44 41 44 01 00 0b ATD.SMBD.HDAD... 3530: 52 50 31 44 01 52 50 32 44 01 52 50 33 44 01 52 RP1D.RP2D.RP3D.R 3540: 50 34 44 01 52 50 35 44 01 52 50 36 44 01 08 5f P4D.RP5D.RP6D.._ 3550: 53 30 5f 12 05 03 00 00 00 08 5f 53 33 5f 12 07 S0_......._S3_.. 3560: 03 0a 05 0a 05 00 08 5f 53 34 5f 12 07 03 0a 06 ......._S4_..... 3570: 0a 06 00 08 5f 53 35 5f 12 07 03 0a 07 0a 07 00 ...._S5_........ 3580: 14 45 04 47 45 54 50 09 a0 0e 93 7b 68 0a 09 00 .E.GETP....{h... 3590: 00 a4 0c ff ff ff ff a0 0d 93 7b 68 0a 09 00 0a ..........{h.... 35a0: 08 a4 0b 84 03 7a 7b 68 0b 00 03 00 0a 08 60 7a .....z{h......`z 35b0: 7b 68 0b 00 30 00 0a 0c 61 a4 77 0a 1e 74 0a 09 {h..0...a.w..t.. 35c0: 72 60 61 00 00 00 14 30 47 44 4d 41 0d a0 23 68 r`a....0GDMA..#h 35d0: a0 07 90 69 6c a4 0a 14 a0 0e 90 6a 6c a4 77 74 ...il......jl.wt 35e0: 0a 04 6b 00 0a 0f 00 a4 77 74 0a 04 6b 00 0a 1e ..k.....wt..k... 35f0: 00 a4 0c ff ff ff ff 14 1f 47 45 54 54 09 a4 77 .........GETT..w 3600: 0a 1e 74 0a 09 72 7b 7a 68 0a 02 00 0a 03 00 7b ..t..r{zh......{ 3610: 68 0a 03 00 00 00 00 14 44 06 47 45 54 46 0b 08 h.......D.GETF.. 3620: 54 4d 50 46 00 a0 0c 68 7d 54 4d 50 46 01 54 4d TMPF...h}TMPF.TM 3630: 50 46 a0 11 7b 6a 0a 02 00 7d 54 4d 50 46 0a 02 PF..{j...}TMPF.. 3640: 54 4d 50 46 a0 0d 69 7d 54 4d 50 46 0a 04 54 4d TMPF..i}TMPF..TM 3650: 50 46 a0 11 7b 6a 0a 20 00 7d 54 4d 50 46 0a 08 PF..{j. .}TMPF.. 3660: 54 4d 50 46 a0 12 7b 6a 0b 00 40 00 7d 54 4d 50 TMPF..{j..@.}TMP 3670: 46 0a 10 54 4d 50 46 a4 54 4d 50 46 14 3d 53 45 F..TMPF.TMPF.=SE 3680: 54 50 0b a0 08 94 68 0a f0 a4 0a 08 a1 2d a0 27 TP....h......-.' 3690: 7b 69 0a 02 00 a0 10 90 92 94 68 0a 78 7b 6a 0a {i........h.x{j. 36a0: 02 00 a4 0b 01 23 a0 0f 90 92 94 68 0a b4 7b 6a .....#.....h..{j 36b0: 01 00 a4 0b 01 21 a4 0b 01 10 14 37 53 44 4d 41 .....!.....7SDMA 36c0: 09 a0 08 92 94 68 0a 14 a4 01 a0 09 92 94 68 0a .....h........h. 36d0: 1e a4 0a 02 a0 08 92 94 68 0a 2d a4 01 a0 09 92 ........h.-..... 36e0: 94 68 0a 3c a4 0a 02 a0 08 92 94 68 0a 5a a4 01 .h.<.......h.Z.. 36f0: a4 00 14 2f 53 45 54 54 0b a0 25 7b 69 0a 02 00 .../SETT..%{i... 3700: a0 0f 90 92 94 68 0a 78 7b 6a 0a 02 00 a4 0a 0b .....h.x{j...... 3710: a0 0e 90 92 94 68 0a b4 7b 6a 01 00 a4 0a 09 a4 .....h..{j...... 3720: 0a 04 5b 82 4b 04 48 44 45 46 08 5f 41 44 52 0c ..[.K.HDEF._ADR. 3730: 00 00 1b 00 5b 80 48 44 41 52 02 0a 4c 0a 10 5b ....[.HDAR..L..[ 3740: 81 22 48 44 41 52 02 44 43 4b 41 01 00 07 44 43 ."HDAR.DCKA...DC 3750: 4b 4d 01 00 06 44 43 4b 53 01 00 30 00 0f 50 4d KM...DCKS..0..PM 3760: 45 53 01 08 5f 50 52 57 12 06 02 0a 0d 0a 03 5b ES.._PRW.......[ 3770: 82 41 10 52 50 30 31 08 5f 41 44 52 0c 00 00 1c .A.RP01._ADR.... 3780: 00 5b 80 50 58 43 53 02 0a 40 0a c0 5b 81 45 04 .[.PXCS..@..[.E. 3790: 50 58 43 53 40 00 40 09 00 0d 4c 41 53 58 01 00 PXCS@.@...LASX.. 37a0: 32 41 42 50 58 01 00 02 50 44 43 58 01 00 02 50 2ABPX...PDCX...P 37b0: 44 53 58 01 00 01 4c 53 43 58 01 00 27 00 10 50 DSX...LSCX..'..P 37c0: 53 50 58 01 00 4f 3c 00 1e 48 50 53 58 01 50 4d SPX..O<..HPSX.PM 37d0: 53 58 01 5b 82 0b 50 58 53 58 08 5f 41 44 52 00 SX.[..PXSX._ADR. 37e0: 14 41 09 5f 50 52 54 00 a0 33 47 50 49 43 a4 12 .A._PRT..3GPIC.. 37f0: 2c 04 12 09 04 0b ff ff 00 00 0a 10 12 09 04 0b ,............... 3800: ff ff 01 00 0a 11 12 0a 04 0b ff ff 0a 02 00 0a ................ 3810: 12 12 0a 04 0b ff ff 0a 03 00 0a 13 a1 45 05 a4 .............E.. 3820: 12 41 05 04 12 12 04 0b ff ff 00 5e 5e 2e 4c 50 .A.........^^.LP 3830: 43 42 4c 4e 4b 41 00 12 12 04 0b ff ff 01 5e 5e CBLNKA........^^ 3840: 2e 4c 50 43 42 4c 4e 4b 42 00 12 13 04 0b ff ff .LPCBLNKB....... 3850: 0a 02 5e 5e 2e 4c 50 43 42 4c 4e 4b 43 00 12 13 ..^^.LPCBLNKC... 3860: 04 0b ff ff 0a 03 5e 5e 2e 4c 50 43 42 4c 4e 4b ......^^.LPCBLNK 3870: 44 00 5b 82 41 10 52 50 30 32 08 5f 41 44 52 0c D.[.A.RP02._ADR. 3880: 01 00 1c 00 5b 80 50 58 43 53 02 0a 40 0a c0 5b ....[.PXCS..@..[ 3890: 81 45 04 50 58 43 53 40 00 40 09 00 0d 4c 41 53 .E.PXCS@.@...LAS 38a0: 58 01 00 32 41 42 50 58 01 00 02 50 44 43 58 01 X..2ABPX...PDCX. 38b0: 00 02 50 44 53 58 01 00 01 4c 53 43 58 01 00 27 ..PDSX...LSCX..' 38c0: 00 10 50 53 50 58 01 00 4f 3c 00 1e 48 50 53 58 ..PSPX..O<..HPSX 38d0: 01 50 4d 53 58 01 5b 82 0b 50 58 53 58 08 5f 41 .PMSX.[..PXSX._A 38e0: 44 52 00 14 41 09 5f 50 52 54 00 a0 33 47 50 49 DR..A._PRT..3GPI 38f0: 43 a4 12 2c 04 12 09 04 0b ff ff 00 00 0a 11 12 C..,............ 3900: 09 04 0b ff ff 01 00 0a 12 12 0a 04 0b ff ff 0a ................ 3910: 02 00 0a 13 12 0a 04 0b ff ff 0a 03 00 0a 10 a1 ................ 3920: 45 05 a4 12 41 05 04 12 12 04 0b ff ff 00 5e 5e E...A.........^^ 3930: 2e 4c 50 43 42 4c 4e 4b 42 00 12 12 04 0b ff ff .LPCBLNKB....... 3940: 01 5e 5e 2e 4c 50 43 42 4c 4e 4b 43 00 12 13 04 .^^.LPCBLNKC.... 3950: 0b ff ff 0a 02 5e 5e 2e 4c 50 43 42 4c 4e 4b 44 .....^^.LPCBLNKD 3960: 00 12 13 04 0b ff ff 0a 03 5e 5e 2e 4c 50 43 42 .........^^.LPCB 3970: 4c 4e 4b 41 00 5b 82 4d 11 52 50 30 33 08 5f 41 LNKA.[.M.RP03._A 3980: 44 52 0c 02 00 1c 00 5b 80 50 58 43 53 02 0a 40 DR.....[.PXCS..@ 3990: 0a c0 5b 81 45 04 50 58 43 53 40 00 40 09 00 0d ..[.E.PXCS@.@... 39a0: 4c 41 53 58 01 00 32 41 42 50 58 01 00 02 50 44 LASX..2ABPX...PD 39b0: 43 58 01 00 02 50 44 53 58 01 00 01 4c 53 43 58 CX...PDSX...LSCX 39c0: 01 00 27 00 10 50 53 50 58 01 00 4f 3c 00 1e 48 ..'..PSPX..O<..H 39d0: 50 53 58 01 50 4d 53 58 01 5b 82 0b 50 58 53 58 PSX.PMSX.[..PXSX 39e0: 08 5f 41 44 52 00 08 2e 50 58 53 58 5f 52 4d 56 ._ADR...PXSX_RMV 39f0: 01 08 2e 50 58 53 58 5f 50 52 57 12 06 02 0a 09 ...PXSX_PRW..... 3a00: 0a 03 14 41 09 5f 50 52 54 00 a0 33 47 50 49 43 ...A._PRT..3GPIC 3a10: a4 12 2c 04 12 09 04 0b ff ff 00 00 0a 12 12 09 ..,............. 3a20: 04 0b ff ff 01 00 0a 13 12 0a 04 0b ff ff 0a 02 ................ 3a30: 00 0a 10 12 0a 04 0b ff ff 0a 03 00 0a 11 a1 45 ...............E 3a40: 05 a4 12 41 05 04 12 12 04 0b ff ff 00 5e 5e 2e ...A.........^^. 3a50: 4c 50 43 42 4c 4e 4b 43 00 12 12 04 0b ff ff 01 LPCBLNKC........ 3a60: 5e 5e 2e 4c 50 43 42 4c 4e 4b 44 00 12 13 04 0b ^^.LPCBLNKD..... 3a70: ff ff 0a 02 5e 5e 2e 4c 50 43 42 4c 4e 4b 41 00 ....^^.LPCBLNKA. 3a80: 12 13 04 0b ff ff 0a 03 5e 5e 2e 4c 50 43 42 4c ........^^.LPCBL 3a90: 4e 4b 42 00 5b 82 4f 11 52 50 30 34 08 5f 41 44 NKB.[.O.RP04._AD 3aa0: 52 0c 03 00 1c 00 5b 80 50 58 43 53 02 0a 40 0a R.....[.PXCS..@. 3ab0: c0 5b 81 45 04 50 58 43 53 40 00 40 09 00 0d 4c .[.E.PXCS@.@...L 3ac0: 41 53 58 01 00 32 41 42 50 58 01 00 02 50 44 43 ASX..2ABPX...PDC 3ad0: 58 01 00 02 50 44 53 58 01 00 01 4c 53 43 58 01 X...PDSX...LSCX. 3ae0: 00 27 00 10 50 53 50 58 01 00 4f 3c 00 1e 48 50 .'..PSPX..O<..HP 3af0: 53 58 01 50 4d 53 58 01 5b 82 29 50 58 53 58 08 SX.PMSX.[.)PXSX. 3b00: 5f 41 44 52 00 14 1d 5f 50 52 57 00 a0 0d 57 4b _ADR..._PRW...WK 3b10: 4c 4e a4 12 06 02 0a 09 0a 03 a1 08 a4 12 05 02 LN.............. 3b20: 0a 09 00 14 41 09 5f 50 52 54 00 a0 33 47 50 49 ....A._PRT..3GPI 3b30: 43 a4 12 2c 04 12 09 04 0b ff ff 00 00 0a 13 12 C..,............ 3b40: 09 04 0b ff ff 01 00 0a 10 12 0a 04 0b ff ff 0a ................ 3b50: 02 00 0a 11 12 0a 04 0b ff ff 0a 03 00 0a 12 a1 ................ 3b60: 45 05 a4 12 41 05 04 12 12 04 0b ff ff 00 5e 5e E...A.........^^ 3b70: 2e 4c 50 43 42 4c 4e 4b 44 00 12 12 04 0b ff ff .LPCBLNKD....... 3b80: 01 5e 5e 2e 4c 50 43 42 4c 4e 4b 41 00 12 13 04 .^^.LPCBLNKA.... 3b90: 0b ff ff 0a 02 5e 5e 2e 4c 50 43 42 4c 4e 4b 42 .....^^.LPCBLNKB 3ba0: 00 12 13 04 0b ff ff 0a 03 5e 5e 2e 4c 50 43 42 .........^^.LPCB 3bb0: 4c 4e 4b 43 00 5b 82 41 10 52 50 30 35 08 5f 41 LNKC.[.A.RP05._A 3bc0: 44 52 0c 04 00 1c 00 5b 80 50 58 43 53 02 0a 40 DR.....[.PXCS..@ 3bd0: 0a c0 5b 81 45 04 50 58 43 53 40 00 40 09 00 0d ..[.E.PXCS@.@... 3be0: 4c 41 53 58 01 00 32 41 42 50 58 01 00 02 50 44 LASX..2ABPX...PD 3bf0: 43 58 01 00 02 50 44 53 58 01 00 01 4c 53 43 58 CX...PDSX...LSCX 3c00: 01 00 27 00 10 50 53 50 58 01 00 4f 3c 00 1e 48 ..'..PSPX..O<..H 3c10: 50 53 58 01 50 4d 53 58 01 5b 82 0b 50 58 53 58 PSX.PMSX.[..PXSX 3c20: 08 5f 41 44 52 00 14 41 09 5f 50 52 54 00 a0 33 ._ADR..A._PRT..3 3c30: 47 50 49 43 a4 12 2c 04 12 09 04 0b ff ff 00 00 GPIC..,......... 3c40: 0a 10 12 09 04 0b ff ff 01 00 0a 11 12 0a 04 0b ................ 3c50: ff ff 0a 02 00 0a 12 12 0a 04 0b ff ff 0a 03 00 ................ 3c60: 0a 13 a1 45 05 a4 12 41 05 04 12 12 04 0b ff ff ...E...A........ 3c70: 00 5e 5e 2e 4c 50 43 42 4c 4e 4b 41 00 12 12 04 .^^.LPCBLNKA.... 3c80: 0b ff ff 01 5e 5e 2e 4c 50 43 42 4c 4e 4b 42 00 ....^^.LPCBLNKB. 3c90: 12 13 04 0b ff ff 0a 02 5e 5e 2e 4c 50 43 42 4c ........^^.LPCBL 3ca0: 4e 4b 43 00 12 13 04 0b ff ff 0a 03 5e 5e 2e 4c NKC.........^^.L 3cb0: 50 43 42 4c 4e 4b 44 00 5b 82 41 10 52 50 30 36 PCBLNKD.[.A.RP06 3cc0: 08 5f 41 44 52 0c 05 00 1c 00 5b 80 50 58 43 53 ._ADR.....[.PXCS 3cd0: 02 0a 40 0a c0 5b 81 45 04 50 58 43 53 40 00 40 ..@..[.E.PXCS@.@ 3ce0: 09 00 0d 4c 41 53 58 01 00 32 41 42 50 58 01 00 ...LASX..2ABPX.. 3cf0: 02 50 44 43 58 01 00 02 50 44 53 58 01 00 01 4c .PDCX...PDSX...L 3d00: 53 43 58 01 00 27 00 10 50 53 50 58 01 00 4f 3c SCX..'..PSPX..O< 3d10: 00 1e 48 50 53 58 01 50 4d 53 58 01 5b 82 0b 50 ..HPSX.PMSX.[..P 3d20: 58 53 58 08 5f 41 44 52 00 14 41 09 5f 50 52 54 XSX._ADR..A._PRT 3d30: 00 a0 33 47 50 49 43 a4 12 2c 04 12 09 04 0b ff ..3GPIC..,...... 3d40: ff 00 00 0a 11 12 09 04 0b ff ff 01 00 0a 12 12 ................ 3d50: 0a 04 0b ff ff 0a 02 00 0a 13 12 0a 04 0b ff ff ................ 3d60: 0a 03 00 0a 10 a1 45 05 a4 12 41 05 04 12 12 04 ......E...A..... 3d70: 0b ff ff 00 5e 5e 2e 4c 50 43 42 4c 4e 4b 42 00 ....^^.LPCBLNKB. 3d80: 12 12 04 0b ff ff 01 5e 5e 2e 4c 50 43 42 4c 4e .......^^.LPCBLN 3d90: 4b 43 00 12 13 04 0b ff ff 0a 02 5e 5e 2e 4c 50 KC.........^^.LP 3da0: 43 42 4c 4e 4b 44 00 12 13 04 0b ff ff 0a 03 5e CBLNKD.........^ 3db0: 5e 2e 4c 50 43 42 4c 4e 4b 41 00 5b 82 4d 06 55 ^.LPCBLNKA.[.M.U 3dc0: 53 42 31 08 5f 41 44 52 0c 00 00 1d 00 5b 80 55 SB1._ADR.....[.U 3dd0: 31 43 53 02 0a c4 0a 04 5b 81 0b 55 31 43 53 03 1CS.....[..U1CS. 3de0: 55 31 45 4e 02 08 5f 50 52 57 12 06 02 0a 03 0a U1EN.._PRW...... 3df0: 03 14 24 5f 50 53 57 01 a0 15 68 70 01 41 43 50 ..$_PSW...hp.ACP 3e00: 57 a0 0c 41 43 50 57 70 0a 03 55 31 45 4e a1 07 W..ACPWp..U1EN.. 3e10: 70 00 55 31 45 4e 14 09 5f 53 33 44 00 a4 0a 02 p.U1EN.._S3D.... 3e20: 14 09 5f 53 34 44 00 a4 0a 02 5b 82 4c 06 55 53 .._S4D....[.L.US 3e30: 42 32 08 5f 41 44 52 0c 01 00 1d 00 5b 80 55 32 B2._ADR.....[.U2 3e40: 43 53 02 0a c4 0a 04 5b 81 0b 55 32 43 53 03 55 CS.....[..U2CS.U 3e50: 32 45 4e 02 08 5f 50 52 57 12 06 02 0a 04 0a 03 2EN.._PRW....... 3e60: 14 23 5f 50 53 57 01 a0 14 68 70 01 41 43 50 57 .#_PSW...hp.ACPW 3e70: a0 0b 41 43 50 57 70 01 55 32 45 4e a1 07 70 00 ..ACPWp.U2EN..p. 3e80: 55 32 45 4e 14 09 5f 53 33 44 00 a4 0a 02 14 09 U2EN.._S3D...... 3e90: 5f 53 34 44 00 a4 0a 02 5b 82 4d 06 55 53 42 33 _S4D....[.M.USB3 3ea0: 08 5f 41 44 52 0c 02 00 1d 00 5b 80 55 32 43 53 ._ADR.....[.U2CS 3eb0: 02 0a c4 0a 04 5b 81 0b 55 32 43 53 03 55 33 45 .....[..U2CS.U3E 3ec0: 4e 02 08 5f 50 52 57 12 06 02 0a 0c 0a 03 14 24 N.._PRW........$ 3ed0: 5f 50 53 57 01 a0 15 68 70 01 41 43 50 57 a0 0c _PSW...hp.ACPW.. 3ee0: 41 43 50 57 70 0a 03 55 33 45 4e a1 07 70 00 55 ACPWp..U3EN..p.U 3ef0: 33 45 4e 14 09 5f 53 33 44 00 a4 0a 02 14 09 5f 3EN.._S3D......_ 3f00: 53 34 44 00 a4 0a 02 5b 82 4d 06 55 53 42 34 08 S4D....[.M.USB4. 3f10: 5f 41 44 52 0c 00 00 1a 00 5b 80 55 34 43 53 02 _ADR.....[.U4CS. 3f20: 0a c4 0a 04 5b 81 0b 55 34 43 53 03 55 34 45 4e ....[..U4CS.U4EN 3f30: 02 08 5f 50 52 57 12 06 02 0a 0e 0a 03 14 24 5f .._PRW........$_ 3f40: 50 53 57 01 a0 15 68 70 01 41 43 50 57 a0 0c 41 PSW...hp.ACPW..A 3f50: 43 50 57 70 0a 03 55 34 45 4e a1 07 70 00 55 34 CPWp..U4EN..p.U4 3f60: 45 4e 14 09 5f 53 33 44 00 a4 0a 02 14 09 5f 53 EN.._S3D......_S 3f70: 34 44 00 a4 0a 02 5b 82 41 06 55 53 42 35 08 5f 4D....[.A.USB5._ 3f80: 41 44 52 0c 01 00 1a 00 5b 80 55 35 43 53 02 0a ADR.....[.U5CS.. 3f90: c4 0a 04 5b 81 0b 55 35 43 53 03 55 35 45 4e 02 ...[..U5CS.U5EN. 3fa0: 14 24 5f 50 53 57 01 a0 15 68 70 01 41 43 50 57 .$_PSW...hp.ACPW 3fb0: a0 0c 41 43 50 57 70 0a 03 55 35 45 4e a1 07 70 ..ACPWp..U5EN..p 3fc0: 00 55 35 45 4e 14 09 5f 53 33 44 00 a4 0a 02 14 .U5EN.._S3D..... 3fd0: 09 5f 53 34 44 00 a4 0a 02 5b 82 4b 0a 45 48 43 ._S4D....[.K.EHC 3fe0: 31 08 5f 41 44 52 0c 07 00 1d 00 5b 80 55 37 43 1._ADR.....[.U7C 3ff0: 53 02 0a 54 0a 04 5b 81 0d 55 37 43 53 03 00 0f S..T..[..U7CS... 4000: 50 4d 45 53 01 5b 82 4f 05 48 55 42 37 08 5f 41 PMES.[.O.HUB7._A 4010: 44 52 00 5b 82 0b 50 52 54 31 08 5f 41 44 52 01 DR.[..PRT1._ADR. 4020: 5b 82 0c 50 52 54 32 08 5f 41 44 52 0a 02 5b 82 [..PRT2._ADR..[. 4030: 0c 50 52 54 33 08 5f 41 44 52 0a 03 5b 82 0c 50 .PRT3._ADR..[..P 4040: 52 54 34 08 5f 41 44 52 0a 04 5b 82 0c 50 52 54 RT4._ADR..[..PRT 4050: 35 08 5f 41 44 52 0a 05 5b 82 0c 50 52 54 36 08 5._ADR..[..PRT6. 4060: 5f 41 44 52 0a 06 08 5f 50 52 57 12 06 02 0a 0d _ADR..._PRW..... 4070: 0a 03 14 09 5f 53 33 44 00 a4 0a 02 14 09 5f 53 ...._S3D......_S 4080: 34 44 00 a4 0a 02 5b 82 4f 08 45 48 43 32 08 5f 4D....[.O.EHC2._ 4090: 41 44 52 0c 07 00 1a 00 5b 80 55 46 43 53 02 0a ADR.....[.UFCS.. 40a0: 54 0a 04 5b 81 0d 55 46 43 53 03 00 0f 50 4d 45 T..[..UFCS...PME 40b0: 53 01 5b 82 43 04 48 55 42 37 08 5f 41 44 52 00 S.[.C.HUB7._ADR. 40c0: 5b 82 0b 50 52 54 31 08 5f 41 44 52 01 5b 82 0c [..PRT1._ADR.[.. 40d0: 50 52 54 32 08 5f 41 44 52 0a 02 5b 82 0c 50 52 PRT2._ADR..[..PR 40e0: 54 33 08 5f 41 44 52 0a 03 5b 82 0c 50 52 54 34 T3._ADR..[..PRT4 40f0: 08 5f 41 44 52 0a 04 08 5f 50 52 57 12 06 02 0a ._ADR..._PRW.... 4100: 0d 0a 03 14 09 5f 53 33 44 00 a4 0a 02 14 09 5f ....._S3D......_ 4110: 53 34 44 00 a4 0a 02 5b 82 4a 06 50 43 49 42 08 S4D....[.J.PCIB. 4120: 5f 41 44 52 0c 00 00 1e 00 14 49 05 5f 50 52 54 _ADR......I._PRT 4130: 00 a0 21 47 50 49 43 a4 12 1a 02 12 0b 04 0c ff ..!GPIC......... 4140: ff 06 00 00 00 0a 16 12 0b 04 0c ff ff 06 00 01 ................ 4150: 00 0a 17 a1 2f a4 12 2c 02 12 14 04 0c ff ff 06 ..../..,........ 4160: 00 00 5e 5e 2e 4c 50 43 42 4c 4e 4b 47 00 12 14 ..^^.LPCBLNKG... 4170: 04 0c ff ff 06 00 01 5e 5e 2e 4c 50 43 42 4c 4e .......^^.LPCBLN 4180: 4b 48 00 5b 82 8d 2e 01 4c 50 43 42 08 5f 41 44 KH.[....LPCB._AD 4190: 52 0c 00 00 1f 00 5b 80 4c 50 43 30 02 0a 40 0a R.....[.LPC0..@. 41a0: c0 5b 81 4d 07 4c 50 43 30 00 00 40 10 50 41 52 .[.M.LPC0..@.PAR 41b0: 43 08 50 42 52 43 08 50 43 52 43 08 50 44 52 43 C.PBRC.PCRC.PDRC 41c0: 08 00 20 50 45 52 43 08 50 46 52 43 08 50 47 52 .. PERC.PFRC.PGR 41d0: 43 08 50 48 52 43 08 00 40 0a 43 4d 41 52 03 00 C.PHRC..@.CMAR.. 41e0: 01 43 4d 42 52 03 00 01 4c 50 54 52 02 00 06 43 .CMBR...LPTR...C 41f0: 4d 41 44 01 43 4d 42 44 01 4c 50 54 44 01 46 44 MAD.CMBD.LPTD.FD 4200: 44 44 01 00 2c 49 4f 52 32 10 00 02 4c 47 52 4d DD..,IOR2...LGRM 4210: 06 00 48 32 52 41 45 4e 01 00 0d 52 43 42 41 12 ..H2RAEN...RCBA. 4220: 5b 80 53 4d 49 30 01 0c 00 fe 00 00 0c 02 00 00 [.SMI0.......... 4230: 00 5b 81 0b 53 4d 49 30 00 53 4d 49 43 08 5b 80 .[..SMI0.SMIC.[. 4240: 53 4d 49 31 00 0c bd 2e 6e bf 0c 90 00 00 00 5b SMI1....n......[ 4250: 81 16 53 4d 49 31 00 42 43 4d 44 08 44 49 44 5f ..SMI1.BCMD.DID_ 4260: 20 49 4e 46 4f 40 40 5b 81 15 53 4d 49 31 00 01 INFO@@[..SMI1.. 4270: 01 00 00 28 49 4e 46 5f 08 49 4e 46 31 20 5b 01 ...(INF_.INF1 [. 4280: 50 53 4d 58 00 14 27 50 48 53 53 01 5b 23 50 53 PSMX..'PHSS.[#PS 4290: 4d 58 ff ff 70 0a 80 42 43 4d 44 70 68 44 49 44 MX..p..BCMDphDID 42a0: 5f 70 00 53 4d 49 43 5b 27 50 53 4d 58 5b 82 41 _p.SMIC['PSMX[.A 42b0: 0a 4c 4e 4b 41 08 5f 48 49 44 0c 41 d0 0c 0f 08 .LNKA._HID.A.... 42c0: 5f 55 49 44 01 14 0d 5f 44 49 53 08 70 0a 80 50 _UID..._DIS.p..P 42d0: 41 52 43 08 5f 50 52 53 11 09 0a 06 23 fa d4 18 ARC._PRS....#... 42e0: 79 00 14 38 5f 43 52 53 08 08 52 54 4c 41 11 09 y..8_CRS..RTLA.. 42f0: 0a 06 23 00 00 18 79 00 8b 52 54 4c 41 01 49 52 ..#...y..RTLA.IR 4300: 51 30 70 00 49 52 51 30 79 01 7b 50 41 52 43 0a Q0p.IRQ0y.{PARC. 4310: 0f 00 49 52 51 30 a4 52 54 4c 41 14 1b 5f 53 52 ..IRQ0.RTLA.._SR 4320: 53 09 8b 68 01 49 52 51 30 82 49 52 51 30 60 76 S..h.IRQ0.IRQ0`v 4330: 60 70 60 50 41 52 43 14 18 5f 53 54 41 08 a0 0c `p`PARC.._STA... 4340: 7b 50 41 52 43 0a 80 00 a4 0a 09 a1 04 a4 0a 0b {PARC........... 4350: 5b 82 42 0a 4c 4e 4b 42 08 5f 48 49 44 0c 41 d0 [.B.LNKB._HID.A. 4360: 0c 0f 08 5f 55 49 44 0a 02 14 0d 5f 44 49 53 08 ..._UID...._DIS. 4370: 70 0a 80 50 42 52 43 08 5f 50 52 53 11 09 0a 06 p..PBRC._PRS.... 4380: 23 fa d8 18 79 00 14 38 5f 43 52 53 08 08 52 54 #...y..8_CRS..RT 4390: 4c 42 11 09 0a 06 23 00 00 18 79 00 8b 52 54 4c LB....#...y..RTL 43a0: 42 01 49 52 51 30 70 00 49 52 51 30 79 01 7b 50 B.IRQ0p.IRQ0y.{P 43b0: 42 52 43 0a 0f 00 49 52 51 30 a4 52 54 4c 42 14 BRC...IRQ0.RTLB. 43c0: 1b 5f 53 52 53 09 8b 68 01 49 52 51 30 82 49 52 ._SRS..h.IRQ0.IR 43d0: 51 30 60 76 60 70 60 50 42 52 43 14 18 5f 53 54 Q0`v`p`PBRC.._ST 43e0: 41 08 a0 0c 7b 50 42 52 43 0a 80 00 a4 0a 09 a1 A...{PBRC....... 43f0: 04 a4 0a 0b 5b 82 42 0a 4c 4e 4b 43 08 5f 48 49 ....[.B.LNKC._HI 4400: 44 0c 41 d0 0c 0f 08 5f 55 49 44 0a 03 14 0d 5f D.A...._UID...._ 4410: 44 49 53 08 70 0a 80 50 43 52 43 08 5f 50 52 53 DIS.p..PCRC._PRS 4420: 11 09 0a 06 23 fa d4 18 79 00 14 38 5f 43 52 53 ....#...y..8_CRS 4430: 08 08 52 54 4c 43 11 09 0a 06 23 00 00 18 79 00 ..RTLC....#...y. 4440: 8b 52 54 4c 43 01 49 52 51 30 70 00 49 52 51 30 .RTLC.IRQ0p.IRQ0 4450: 79 01 7b 50 43 52 43 0a 0f 00 49 52 51 30 a4 52 y.{PCRC...IRQ0.R 4460: 54 4c 43 14 1b 5f 53 52 53 09 8b 68 01 49 52 51 TLC.._SRS..h.IRQ 4470: 30 82 49 52 51 30 60 76 60 70 60 50 43 52 43 14 0.IRQ0`v`p`PCRC. 4480: 18 5f 53 54 41 08 a0 0c 7b 50 43 52 43 0a 80 00 ._STA...{PCRC... 4490: a4 0a 09 a1 04 a4 0a 0b 5b 82 42 0a 4c 4e 4b 44 ........[.B.LNKD 44a0: 08 5f 48 49 44 0c 41 d0 0c 0f 08 5f 55 49 44 0a ._HID.A...._UID. 44b0: 04 14 0d 5f 44 49 53 08 70 0a 80 50 44 52 43 08 ..._DIS.p..PDRC. 44c0: 5f 50 52 53 11 09 0a 06 23 fa d8 18 79 00 14 38 _PRS....#...y..8 44d0: 5f 43 52 53 08 08 52 54 4c 44 11 09 0a 06 23 00 _CRS..RTLD....#. 44e0: 00 18 79 00 8b 52 54 4c 44 01 49 52 51 30 70 00 ..y..RTLD.IRQ0p. 44f0: 49 52 51 30 79 01 7b 50 44 52 43 0a 0f 00 49 52 IRQ0y.{PDRC...IR 4500: 51 30 a4 52 54 4c 44 14 1b 5f 53 52 53 09 8b 68 Q0.RTLD.._SRS..h 4510: 01 49 52 51 30 82 49 52 51 30 60 76 60 70 60 50 .IRQ0.IRQ0`v`p`P 4520: 44 52 43 14 18 5f 53 54 41 08 a0 0c 7b 50 44 52 DRC.._STA...{PDR 4530: 43 0a 80 00 a4 0a 09 a1 04 a4 0a 0b 5b 82 42 0a C...........[.B. 4540: 4c 4e 4b 45 08 5f 48 49 44 0c 41 d0 0c 0f 08 5f LNKE._HID.A...._ 4550: 55 49 44 0a 05 14 0d 5f 44 49 53 08 70 0a 80 50 UID...._DIS.p..P 4560: 45 52 43 08 5f 50 52 53 11 09 0a 06 23 fa d4 18 ERC._PRS....#... 4570: 79 00 14 38 5f 43 52 53 08 08 52 54 4c 45 11 09 y..8_CRS..RTLE.. 4580: 0a 06 23 00 00 18 79 00 8b 52 54 4c 45 01 49 52 ..#...y..RTLE.IR 4590: 51 30 70 00 49 52 51 30 79 01 7b 50 45 52 43 0a Q0p.IRQ0y.{PERC. 45a0: 0f 00 49 52 51 30 a4 52 54 4c 45 14 1b 5f 53 52 ..IRQ0.RTLE.._SR 45b0: 53 09 8b 68 01 49 52 51 30 82 49 52 51 30 60 76 S..h.IRQ0.IRQ0`v 45c0: 60 70 60 50 45 52 43 14 18 5f 53 54 41 08 a0 0c `p`PERC.._STA... 45d0: 7b 50 45 52 43 0a 80 00 a4 0a 09 a1 04 a4 0a 0b {PERC........... 45e0: 5b 82 42 0a 4c 4e 4b 46 08 5f 48 49 44 0c 41 d0 [.B.LNKF._HID.A. 45f0: 0c 0f 08 5f 55 49 44 0a 06 14 0d 5f 44 49 53 08 ..._UID...._DIS. 4600: 70 0a 80 50 46 52 43 08 5f 50 52 53 11 09 0a 06 p..PFRC._PRS.... 4610: 23 fa d8 18 79 00 14 38 5f 43 52 53 08 08 52 54 #...y..8_CRS..RT 4620: 4c 46 11 09 0a 06 23 00 00 18 79 00 8b 52 54 4c LF....#...y..RTL 4630: 46 01 49 52 51 30 70 00 49 52 51 30 79 01 7b 50 F.IRQ0p.IRQ0y.{P 4640: 46 52 43 0a 0f 00 49 52 51 30 a4 52 54 4c 46 14 FRC...IRQ0.RTLF. 4650: 1b 5f 53 52 53 09 8b 68 01 49 52 51 30 82 49 52 ._SRS..h.IRQ0.IR 4660: 51 30 60 76 60 70 60 50 46 52 43 14 18 5f 53 54 Q0`v`p`PFRC.._ST 4670: 41 08 a0 0c 7b 50 46 52 43 0a 80 00 a4 0a 09 a1 A...{PFRC....... 4680: 04 a4 0a 0b 5b 82 42 0a 4c 4e 4b 47 08 5f 48 49 ....[.B.LNKG._HI 4690: 44 0c 41 d0 0c 0f 08 5f 55 49 44 0a 07 14 0d 5f D.A...._UID...._ 46a0: 44 49 53 08 70 0a 80 50 47 52 43 08 5f 50 52 53 DIS.p..PGRC._PRS 46b0: 11 09 0a 06 23 fa d4 18 79 00 14 38 5f 43 52 53 ....#...y..8_CRS 46c0: 08 08 52 54 4c 47 11 09 0a 06 23 00 00 18 79 00 ..RTLG....#...y. 46d0: 8b 52 54 4c 47 01 49 52 51 30 70 00 49 52 51 30 .RTLG.IRQ0p.IRQ0 46e0: 79 01 7b 50 47 52 43 0a 0f 00 49 52 51 30 a4 52 y.{PGRC...IRQ0.R 46f0: 54 4c 47 14 1b 5f 53 52 53 09 8b 68 01 49 52 51 TLG.._SRS..h.IRQ 4700: 30 82 49 52 51 30 60 76 60 70 60 50 47 52 43 14 0.IRQ0`v`p`PGRC. 4710: 18 5f 53 54 41 08 a0 0c 7b 50 47 52 43 0a 80 00 ._STA...{PGRC... 4720: a4 0a 09 a1 04 a4 0a 0b 5b 82 42 0a 4c 4e 4b 48 ........[.B.LNKH 4730: 08 5f 48 49 44 0c 41 d0 0c 0f 08 5f 55 49 44 0a ._HID.A...._UID. 4740: 08 14 0d 5f 44 49 53 08 70 0a 80 50 48 52 43 08 ..._DIS.p..PHRC. 4750: 5f 50 52 53 11 09 0a 06 23 fa d8 18 79 00 14 38 _PRS....#...y..8 4760: 5f 43 52 53 08 08 52 54 4c 48 11 09 0a 06 23 00 _CRS..RTLH....#. 4770: 00 18 79 00 8b 52 54 4c 48 01 49 52 51 30 70 00 ..y..RTLH.IRQ0p. 4780: 49 52 51 30 79 01 7b 50 48 52 43 0a 0f 00 49 52 IRQ0y.{PHRC...IR 4790: 51 30 a4 52 54 4c 48 14 1b 5f 53 52 53 09 8b 68 Q0.RTLH.._SRS..h 47a0: 01 49 52 51 30 82 49 52 51 30 60 76 60 70 60 50 .IRQ0.IRQ0`v`p`P 47b0: 48 52 43 14 18 5f 53 54 41 08 a0 0c 7b 50 48 52 HRC.._STA...{PHR 47c0: 43 0a 80 00 a4 0a 09 a1 04 a4 0a 0b 5b 82 3d 44 C...........[.=D 47d0: 4d 41 43 08 5f 48 49 44 0c 41 d0 02 00 08 5f 43 MAC._HID.A...._C 47e0: 52 53 11 28 0a 25 47 01 00 00 00 00 01 20 47 01 RS.(.%G...... G. 47f0: 81 00 81 00 01 11 47 01 93 00 93 00 01 0d 47 01 ......G.......G. 4800: c0 00 c0 00 01 20 2a 10 01 79 00 5b 82 26 46 57 ..... *..y.[.&FW 4810: 48 44 08 5f 48 49 44 0c 25 d4 08 00 08 5f 43 52 HD._HID.%...._CR 4820: 53 11 11 0a 0e 86 09 00 00 00 00 00 ff 00 00 00 S............... 4830: 01 79 00 5b 82 40 0b 48 50 45 54 08 5f 48 49 44 .y.[.@.HPET._HID 4840: 0c 41 d0 01 03 08 5f 43 49 44 0c 41 d0 0c 01 08 .A...._CID.A.... 4850: 42 55 46 30 11 11 0a 0e 86 09 00 00 00 00 d0 fe BUF0............ 4860: 00 04 00 00 79 00 14 27 5f 53 54 41 00 a0 13 92 ....y..'_STA.... 4870: 95 4f 53 59 53 0b d1 07 a0 08 48 50 41 45 a4 0a .OSYS.....HPAE.. 4880: 0f a1 0a a0 08 48 50 41 45 a4 0a 0b a4 00 14 46 .....HPAE......F 4890: 05 5f 43 52 53 08 a0 49 04 48 50 41 45 8a 42 55 ._CRS..I.HPAE.BU 48a0: 46 30 0a 04 48 50 54 30 a0 11 93 48 50 41 53 01 F0..HPT0...HPAS. 48b0: 70 0c 00 10 d0 fe 48 50 54 30 a0 12 93 48 50 41 p.....HPT0...HPA 48c0: 53 0a 02 70 0c 00 20 d0 fe 48 50 54 30 a0 12 93 S..p.. ..HPT0... 48d0: 48 50 41 53 0a 03 70 0c 00 30 d0 fe 48 50 54 30 HPAS..p..0..HPT0 48e0: a4 42 55 46 30 5b 82 45 0a 49 50 49 43 08 5f 48 .BUF0[.E.IPIC._H 48f0: 49 44 0b 41 d0 08 5f 43 52 53 11 41 09 0a 8d 47 ID.A.._CRS.A...G 4900: 01 20 00 20 00 01 02 47 01 24 00 24 00 01 02 47 . . ...G.$.$...G 4910: 01 28 00 28 00 01 02 47 01 2c 00 2c 00 01 02 47 .(.(...G.,.,...G 4920: 01 30 00 30 00 01 02 47 01 34 00 34 00 01 02 47 .0.0...G.4.4...G 4930: 01 38 00 38 00 01 02 47 01 3c 00 3c 00 01 02 47 .8.8...G.<.<...G 4940: 01 a0 00 a0 00 01 02 47 01 a4 00 a4 00 01 02 47 .......G.......G 4950: 01 a8 00 a8 00 01 02 47 01 ac 00 ac 00 01 02 47 .......G.......G 4960: 01 b0 00 b0 00 01 02 47 01 b4 00 b4 00 01 02 47 .......G.......G 4970: 01 b8 00 b8 00 01 02 47 01 bc 00 bc 00 01 02 47 .......G.......G 4980: 01 d0 04 d0 04 01 02 22 04 00 79 00 5b 82 25 4d ......."..y.[.%M 4990: 41 54 48 08 5f 48 49 44 0c 41 d0 0c 04 08 5f 43 ATH._HID.A...._C 49a0: 52 53 11 10 0a 0d 47 01 f0 00 f0 00 01 01 22 00 RS....G.......". 49b0: 20 79 00 5b 82 4b 09 4c 44 52 43 08 5f 48 49 44 y.[.K.LDRC._HID 49c0: 0c 41 d0 0c 02 08 5f 55 49 44 0a 02 08 5f 43 52 .A...._UID..._CR 49d0: 53 11 4e 07 0a 7a 47 01 2e 00 2e 00 01 02 47 01 S.N..zG.......G. 49e0: 4e 00 4e 00 01 02 47 01 61 00 61 00 01 01 47 01 N.N...G.a.a...G. 49f0: 63 00 63 00 01 01 47 01 65 00 65 00 01 01 47 01 c.c...G.e.e...G. 4a00: 67 00 67 00 01 01 47 01 80 00 80 00 01 01 47 01 g.g...G.......G. 4a10: 92 00 92 00 01 01 47 01 b2 00 b2 00 01 02 47 01 ......G.......G. 4a20: 80 06 80 06 01 20 47 01 00 08 00 08 01 10 47 01 ..... G.......G. 4a30: 00 10 00 10 01 80 47 01 80 11 80 11 01 40 47 01 ......G......@G. 4a40: 00 fe 00 fe 01 01 47 01 00 ff 00 ff 01 80 79 00 ......G.......y. 4a50: 5b 82 25 52 54 43 5f 08 5f 48 49 44 0c 41 d0 0b [.%RTC_._HID.A.. 4a60: 00 08 5f 43 52 53 11 10 0a 0d 47 01 70 00 70 00 .._CRS....G.p.p. 4a70: 01 08 22 00 01 79 00 5b 82 2d 54 49 4d 52 08 5f .."..y.[.-TIMR._ 4a80: 48 49 44 0c 41 d0 01 00 08 5f 43 52 53 11 18 0a HID.A...._CRS... 4a90: 15 47 01 40 00 40 00 01 04 47 01 50 00 50 00 10 .G.@.@...G.P.P.. 4aa0: 04 22 01 00 79 00 5b 82 32 41 43 41 44 08 5f 48 ."..y.[.2ACAD._H 4ab0: 49 44 0d 41 43 50 49 30 30 30 33 00 08 5f 50 43 ID.ACPI0003.._PC 4ac0: 4c 12 06 01 5f 53 42 5f 14 11 5f 50 53 52 00 70 L..._SB_.._PSR.p 4ad0: 01 41 43 50 57 a4 41 43 50 57 14 1a 45 43 4f 4b .ACPW.ACPW..ECOK 4ae0: 00 a0 0f 93 5e 2e 45 43 30 5f 5a 30 30 39 01 a4 ....^.EC0_Z009.. 4af0: 01 a1 03 a4 00 5b 82 4e 6f 45 43 30 5f 08 5f 48 .....[.NoEC0_._H 4b00: 49 44 0c 41 d0 0c 09 08 5f 47 50 45 0a 1c 08 5a ID.A...._GPE...Z 4b10: 30 30 39 00 08 5f 43 52 53 11 15 0a 12 47 01 62 009.._CRS....G.b 4b20: 00 62 00 01 01 47 01 66 00 66 00 01 01 79 00 14 .b...G.f.f...y.. 4b30: 3b 5f 52 45 47 02 a0 34 93 68 0a 03 70 69 5a 30 ;_REG..4.h..piZ0 4b40: 30 39 a0 28 5b 12 5f 4f 53 49 60 70 00 42 54 44 09.([._OSI`p.BTD 4b50: 53 a0 19 5f 4f 53 49 0d 57 69 6e 64 6f 77 73 20 S.._OSI.Windows 4b60: 32 30 30 36 00 70 01 42 54 44 53 5b 80 45 52 41 2006.p.BTDS[.ERA 4b70: 4d 03 00 0a ff 5b 81 4e 2e 45 52 41 4d 11 00 40 M....[.N.ERAM..@ 4b80: 30 53 4d 50 52 08 53 4d 53 54 08 53 4d 41 44 08 0SMPR.SMST.SMAD. 4b90: 53 4d 43 4d 08 53 4d 44 30 40 10 42 43 4e 54 08 SMCM.SMD0@.BCNT. 4ba0: 53 4d 41 41 18 00 40 04 43 48 47 4d 10 43 48 47 SMAA..@.CHGM.CHG 4bb0: 53 10 45 4e 49 44 08 45 4e 49 42 08 45 4e 44 44 S.ENID.ENIB.ENDD 4bc0: 08 43 48 47 56 08 43 48 47 41 10 42 41 4c 30 01 .CHGV.CHGA.BAL0. 4bd0: 42 41 4c 31 01 42 41 4c 32 01 42 41 4c 33 01 42 BAL1.BAL2.BAL3.B 4be0: 42 43 30 01 42 42 43 31 01 42 42 43 32 01 42 42 BC0.BBC1.BBC2.BB 4bf0: 43 33 01 00 08 50 48 44 44 01 49 46 44 44 01 49 C3...PHDD.IFDD.I 4c00: 4f 44 44 01 53 48 44 44 01 53 31 32 30 01 45 46 ODD.SHDD.S120.EF 4c10: 44 44 01 43 52 54 44 01 53 50 57 52 01 53 42 54 DD.CRTD.SPWR.SBT 4c20: 4e 01 56 49 44 4f 01 56 4f 4c 44 01 56 4f 4c 55 N.VIDO.VOLD.VOLU 4c30: 01 4d 55 54 45 01 43 4f 4e 54 01 42 52 47 54 01 .MUTE.CONT.BRGT. 4c40: 48 42 54 4e 01 53 34 53 54 01 53 4b 45 59 01 42 HBTN.S4ST.SKEY.B 4c50: 4b 45 59 01 54 4f 55 50 01 46 4e 42 4e 01 4c 49 KEY.TOUP.FNBN.LI 4c60: 44 46 01 44 49 47 4d 01 55 57 41 4b 01 00 08 44 DF.DIGM.UWAK...D 4c70: 4b 53 50 01 44 4b 49 4e 01 44 4b 49 44 01 44 4b KSP.DKIN.DKID.DK 4c80: 4f 4b 01 00 04 44 4b 50 57 01 00 07 42 54 4e 53 OK...DKPW...BTNS 4c90: 08 53 31 4c 44 01 53 33 4c 44 01 56 47 41 51 01 .S1LD.S3LD.VGAQ. 4ca0: 50 43 4d 51 01 50 43 4d 52 01 41 44 50 54 01 53 PCMQ.PCMR.ADPT.S 4cb0: 4c 4c 53 01 53 59 53 37 01 50 57 41 4b 01 4d 57 LLS.SYS7.PWAK.MW 4cc0: 41 4b 01 4c 57 41 4b 01 00 05 00 28 54 43 4e 4c AK.LWAK....(TCNL 4cd0: 08 54 4d 50 49 08 54 4d 53 44 08 46 41 53 4e 04 .TMPI.TMSD.FASN. 4ce0: 46 41 53 55 04 50 43 56 4c 04 00 02 53 57 54 4f FASU.PCVL...SWTO 4cf0: 01 48 57 54 4f 01 4d 4f 44 45 01 46 41 4e 53 02 .HWTO.MODE.FANS. 4d00: 49 4e 49 54 01 46 41 4e 31 01 46 41 4e 32 01 46 INIT.FAN1.FAN2.F 4d10: 41 4e 54 01 53 4b 4e 4d 01 43 54 4d 50 08 4c 49 ANT.SKNM.CTMP.LI 4d20: 44 45 01 50 4d 45 45 01 50 57 42 45 01 52 4e 47 DE.PMEE.PWBE.RNG 4d30: 45 01 42 54 57 45 01 44 43 4b 45 01 00 02 53 4b E.BTWE.DCKE...SK 4d40: 54 58 08 53 4b 54 42 08 53 4b 54 43 08 53 4b 54 TX.SKTB.SKTC.SKT 4d50: 41 08 00 08 48 41 50 4c 02 48 41 50 52 01 00 05 A...HAPL.HAPR... 4d60: 42 54 44 54 01 42 54 50 57 01 42 54 44 53 01 42 BTDT.BTPW.BTDS.B 4d70: 54 50 53 01 42 54 53 57 01 42 54 57 4b 01 42 54 TPS.BTSW.BTWK.BT 4d80: 4c 44 01 00 01 42 52 54 53 08 43 4e 54 53 08 57 LD...BRTS.CNTS.W 4d90: 4c 41 54 01 42 54 41 54 01 57 4c 45 58 01 42 54 LAT.BTAT.WLEX.BT 4da0: 45 58 01 4b 4c 53 57 01 57 4c 4f 4b 01 00 02 50 EX.KLSW.WLOK...P 4db0: 54 49 44 08 43 50 55 54 08 45 50 4b 54 08 47 48 TID.CPUT.EPKT.GH 4dc0: 49 44 08 00 04 42 4d 46 30 03 42 54 59 30 01 42 ID...BMF0.BTY0.B 4dd0: 53 54 30 08 42 52 43 30 10 42 53 4e 30 10 42 50 ST0.BRC0.BSN0.BP 4de0: 56 30 10 42 44 56 30 10 42 44 43 30 10 42 46 43 V0.BDV0.BDC0.BFC 4df0: 30 10 47 41 55 30 08 43 59 43 30 08 42 50 43 30 0.GAU0.CYC0.BPC0 4e00: 10 42 41 43 30 10 42 41 54 30 08 42 54 57 30 10 .BAC0.BAT0.BTW0. 4e10: 42 44 4e 30 08 00 40 04 00 04 42 4d 46 31 03 42 BDN0..@...BMF1.B 4e20: 54 59 31 01 42 53 54 31 08 42 52 43 31 10 42 53 TY1.BST1.BRC1.BS 4e30: 4e 31 10 42 50 56 31 10 42 44 56 31 10 42 44 43 N1.BPV1.BDV1.BDC 4e40: 31 10 42 46 43 31 10 47 41 55 31 08 43 59 43 31 1.BFC1.GAU1.CYC1 4e50: 08 42 50 43 31 10 42 41 43 31 10 42 41 54 31 08 .BPC1.BAC1.BAT1. 4e60: 42 54 57 31 10 14 37 5f 51 31 31 00 70 0a 87 50 BTW1..7_Q11.p..P 4e70: 38 30 48 a0 13 49 47 44 53 5e 5e 5e 2e 47 46 58 80H..IGDS^^^.GFX 4e80: 30 42 52 54 4e 0a 87 a1 15 86 5e 5e 5e 2f 03 50 0BRTN.....^^^/.P 4e90: 45 47 50 56 47 41 5f 4c 43 44 5f 0a 87 14 37 5f EGPVGA_LCD_...7_ 4ea0: 51 31 32 00 70 0a 86 50 38 30 48 a0 13 49 47 44 Q12.p..P80H..IGD 4eb0: 53 5e 5e 5e 2e 47 46 58 30 42 52 54 4e 0a 86 a1 S^^^.GFX0BRTN... 4ec0: 15 86 5e 5e 5e 2f 03 50 45 47 50 56 47 41 5f 4c ..^^^/.PEGPVGA_L 4ed0: 43 44 5f 0a 86 14 40 05 5f 51 31 43 00 70 0d 3d CD_...@._Q1C.p.= 4ee0: 3d 3d 3d 3d 51 55 45 52 59 5f 31 43 3d 3d 3d 3d ====QUERY_1C==== 4ef0: 3d 00 5b 31 a0 31 56 49 44 4f a0 12 49 47 44 53 =.[1.1VIDO..IGDS 4f00: 5e 5e 5e 2e 47 46 58 30 47 48 44 53 00 a1 12 5e ^^^.GFX0GHDS...^ 4f10: 5e 5e 2f 03 50 45 47 50 56 47 41 5f 44 53 53 57 ^^/.PEGPVGA_DSSW 4f20: 70 00 56 49 44 4f 14 21 5f 51 31 44 00 70 0d 3d p.VIDO.!_Q1D.p.= 4f30: 3d 3d 3d 3d 51 55 45 52 59 5f 31 44 3d 3d 3d 3d ====QUERY_1D==== 4f40: 3d 00 5b 31 50 43 4c 4b 14 21 5f 51 31 45 00 70 =.[1PCLK.!_Q1E.p 4f50: 0d 3d 3d 3d 3d 3d 51 55 45 52 59 5f 31 45 3d 3d .=====QUERY_1E== 4f60: 3d 3d 3d 00 5b 31 50 43 4c 4b 14 39 5f 51 32 35 ===.[1PCLK.9_Q25 4f70: 00 70 0d 3d 3d 3d 3d 3d 51 55 45 52 59 5f 32 35 .p.=====QUERY_25 4f80: 3d 3d 3d 3d 3d 00 5b 31 5b 22 0b e8 03 86 5e 5e =====.[1["....^^ 4f90: 42 41 54 31 0a 81 5b 22 0b e8 03 86 5e 5e 42 41 BAT1..["....^^BA 4fa0: 54 31 0a 80 14 2f 5f 51 33 34 00 70 0d 3d 3d 3d T1.../_Q34.p.=== 4fb0: 3d 3d 51 55 45 52 59 5f 33 34 3d 3d 3d 3d 3d 00 ==QUERY_34=====. 4fc0: 5b 31 a0 11 42 4b 45 59 50 48 53 53 0a 71 70 00 [1..BKEYPHSS.qp. 4fd0: 42 4b 45 59 14 32 5f 51 33 37 00 70 0d 3d 3d 3d BKEY.2_Q37.p.=== 4fe0: 3d 3d 51 55 45 52 59 5f 33 37 3d 3d 3d 3d 3d 00 ==QUERY_37=====. 4ff0: 5b 31 86 41 43 41 44 0a 80 5b 22 0b e8 03 86 5e [1.ACAD..["....^ 5000: 5e 42 41 54 31 0a 80 14 32 5f 51 33 38 00 70 0d ^BAT1...2_Q38.p. 5010: 3d 3d 3d 3d 3d 51 55 45 52 59 5f 33 38 3d 3d 3d =====QUERY_38=== 5020: 3d 3d 00 5b 31 86 41 43 41 44 0a 80 5b 22 0b e8 ==.[1.ACAD..[".. 5030: 03 86 5e 5e 42 41 54 31 0a 80 14 29 5f 51 32 44 ..^^BAT1...)_Q2D 5040: 00 70 0d 3d 3d 3d 3d 3d 51 55 45 52 59 5f 32 44 .p.=====QUERY_2D 5050: 3d 3d 3d 3d 3d 00 5b 31 70 00 44 54 53 4d 54 52 =====.[1p.DTSMTR 5060: 41 50 0a 46 14 29 5f 51 32 45 00 70 0d 3d 3d 3d AP.F.)_Q2E.p.=== 5070: 3d 3d 51 55 45 52 59 5f 32 45 3d 3d 3d 3d 3d 00 ==QUERY_2E=====. 5080: 5b 31 70 01 44 54 53 4d 54 52 41 50 0a 46 5b 80 [1p.DTSMTRAP.F[. 5090: 43 43 4c 4b 01 0b 10 10 0a 04 5b 81 20 43 43 4c CCLK......[. CCL 50a0: 4b 03 00 01 44 55 54 59 03 54 48 45 4e 01 00 03 K...DUTY.THEN... 50b0: 46 54 54 5f 01 00 08 54 53 54 53 01 5b 80 45 43 FTT_...TSTS.[.EC 50c0: 52 4d 03 00 0a ff 5b 81 44 04 45 43 52 4d 11 00 RM....[.D.ECRM.. 50d0: 40 4a 45 52 49 42 10 45 52 42 44 08 00 48 0a 53 @JERIB.ERBD..H.S 50e0: 44 54 4d 08 46 53 53 4e 04 46 41 4e 55 04 50 54 DTM.FSSN.FANU.PT 50f0: 56 4c 03 00 04 54 54 48 52 01 00 48 06 50 4a 49 VL...TTHR..H.PJI 5100: 44 08 00 08 00 48 1d 52 46 52 44 10 5b 01 46 41 D....H.RFRD.[.FA 5110: 4d 58 00 14 22 46 41 4e 47 01 5b 23 46 41 4d 58 MX.."FANG.[#FAMX 5120: ff ff 70 68 45 52 49 42 70 45 52 42 44 60 5b 27 ..phERIBpERBD`[' 5130: 46 41 4d 58 a4 60 14 22 46 41 4e 57 02 5b 23 46 FAMX.`."FANW.[#F 5140: 41 4d 58 ff ff 70 68 45 52 49 42 70 69 45 52 42 AMX..phERIBpiERB 5150: 44 5b 27 46 41 4d 58 a4 69 14 09 54 55 56 52 01 D['FAMX.i..TUVR. 5160: a4 0a 03 14 2e 54 48 52 4f 01 a0 09 93 68 00 a4 .....THRO....h.. 5170: 54 48 45 4e a1 1d a0 09 93 68 01 a4 44 55 54 59 THEN.....h..DUTY 5180: a1 11 a0 0a 93 68 0a 02 a4 54 54 48 52 a1 04 a4 .....h...TTHR... 5190: 0a ff 14 2a 43 4c 43 4b 01 a0 10 93 68 00 70 00 ...*CLCK....h.p. 51a0: 54 48 45 4e 70 00 46 54 54 5f a1 0d 70 68 44 55 THENp.FTT_..phDU 51b0: 54 59 70 01 54 48 45 4e a4 54 48 45 4e 14 37 50 TYp.THEN.THEN.7P 51c0: 43 4c 4b 00 70 50 54 56 4c 60 a0 10 93 60 00 70 CLK.pPTVL`...`.p 51d0: 00 54 48 45 4e 70 00 46 54 54 5f a1 19 76 60 70 .THENp.FTT_..v`p 51e0: 80 60 00 61 7b 61 0a 07 61 70 61 44 55 54 59 70 .`.a{a..apaDUTYp 51f0: 01 54 48 45 4e 5b 82 4b 22 42 41 54 31 08 5f 48 .THEN[.K"BAT1._H 5200: 49 44 0c 41 d0 0c 0a 08 5f 55 49 44 01 08 5f 50 ID.A...._UID.._P 5210: 43 4c 12 06 01 5f 53 42 5f 14 39 5f 53 54 41 00 CL..._SB_.9_STA. 5220: a0 29 90 45 43 4f 4b 93 45 43 44 59 00 a0 13 5e .).ECOK.ECDY...^ 5230: 5e 2e 45 43 30 5f 42 41 4c 30 5b 22 0a 14 a4 0a ^.EC0_BAL0[".... 5240: 1f a1 08 5b 22 0a 14 a4 0a 0f a1 08 5b 22 0a 14 ...[".......[".. 5250: a4 0a 1f 14 48 10 5f 42 49 46 00 08 53 54 41 54 ....H._BIF..STAT 5260: 12 3a 0d 01 0b a0 0f 0b a0 0f 01 0b 5c 2b 0b a4 .:..........\+.. 5270: 01 0a 9c 0b 08 01 0b c4 0e 0d 50 41 33 34 36 35 ..........PA3465 5280: 55 20 00 0d 33 36 35 38 51 00 0d 4c 69 2d 49 6f U ..3658Q..Li-Io 5290: 6e 00 0d 43 4f 4d 50 41 4c 20 00 a0 4b 07 90 45 n..COMPAL ..K..E 52a0: 43 4f 4b 93 45 43 44 59 00 70 5e 5e 2e 45 43 30 COK.ECDY.p^^.EC0 52b0: 5f 42 44 4e 30 60 a0 23 93 60 0a 08 70 0a b4 88 _BDN0`.#.`..p... 52c0: 53 54 41 54 0a 06 00 70 0d 50 41 33 34 35 37 55 STAT...p.PA3457U 52d0: 20 00 88 53 54 41 54 0a 09 00 a0 24 93 60 0a 20 ..STAT....$.`. 52e0: 70 0b 02 01 88 53 54 41 54 0a 06 00 70 0d 50 41 p....STAT...p.PA 52f0: 33 34 35 37 55 20 00 88 53 54 41 54 0a 09 00 5b 3457U ..STAT...[ 5300: 22 0a 14 70 5e 5e 2e 45 43 30 5f 42 44 43 30 42 "..p^^.EC0_BDC0B 5310: 46 43 31 5b 22 0a 14 a1 12 70 0d 4c 69 2d 49 6f FC1["....p.Li-Io 5320: 6e 00 88 53 54 41 54 0a 0b 00 a0 2c 42 46 43 31 n..STAT....,BFC1 5330: 78 42 46 43 31 0a 64 60 61 77 61 0a 64 61 70 61 xBFC1.d`awa.dapa 5340: 42 46 43 31 70 61 88 53 54 41 54 01 00 70 61 88 BFC1pa.STAT..pa. 5350: 53 54 41 54 0a 02 00 a4 53 54 41 54 14 45 0c 5f STAT....STAT.E._ 5360: 42 53 54 00 08 50 42 53 54 12 10 04 00 0c ff ff BST..PBST....... 5370: ff ff 0c ff ff ff ff 0b 5c 2b 70 0b 5c 2b 63 a0 ........\+p.\+c. 5380: 38 90 45 43 4f 4b 93 45 43 44 59 00 5b 22 0a 14 8.ECOK.ECDY.[".. 5390: 70 5e 5e 2e 45 43 30 5f 42 53 54 30 42 53 54 31 p^^.EC0_BST0BST1 53a0: 5b 22 0a 14 70 5e 5e 2e 45 43 30 5f 47 41 55 30 ["..p^^.EC0_GAU0 53b0: 42 47 55 31 5b 22 0a 14 a0 15 42 46 43 31 77 42 BGU1["....BFC1wB 53c0: 47 55 31 42 46 43 31 62 78 62 0a 64 64 62 a1 09 GU1BFC1bxb.ddb.. 53d0: 77 42 47 55 31 0a 28 62 70 42 53 54 31 88 50 42 wBGU1.(bpBST1.PB 53e0: 53 54 00 00 70 00 88 50 42 53 54 01 00 70 62 88 ST..p..PBST..pb. 53f0: 50 42 53 54 0a 02 00 70 63 88 50 42 53 54 0a 03 PBST...pc.PBST.. 5400: 00 a0 1b 94 45 43 44 59 00 76 45 43 44 59 a0 0e ....ECDY.vECDY.. 5410: 93 45 43 44 59 00 86 42 41 54 31 0a 80 a4 50 42 .ECDY..BAT1...PB 5420: 53 54 5b 82 2e 50 53 32 4b 08 5f 48 49 44 0c 41 ST[..PS2K._HID.A 5430: d0 03 03 08 5f 43 52 53 11 19 0a 16 47 01 60 00 ...._CRS....G.`. 5440: 60 00 01 01 47 01 64 00 64 00 01 01 23 02 00 01 `...G.d.d...#... 5450: 79 00 5b 82 1e 50 53 32 4d 08 5f 48 49 44 0c 41 y.[..PS2M._HID.A 5460: d0 0f 13 08 5f 43 52 53 11 09 0a 06 23 00 10 01 ...._CRS....#... 5470: 79 00 5b 82 43 6a 50 41 54 41 08 5f 41 44 52 0c y.[.CjPATA._ADR. 5480: 01 00 1f 00 5b 80 50 41 43 53 02 0a 40 0a c0 5b ....[.PACS..@..[ 5490: 81 49 04 50 41 43 53 03 50 52 49 54 10 00 10 50 .I.PACS.PRIT...P 54a0: 53 49 54 04 00 1c 53 59 4e 43 04 00 0c 53 44 54 SIT...SYNC...SDT 54b0: 30 02 00 02 53 44 54 31 02 00 4a 04 49 43 52 30 0...SDT1..J.ICR0 54c0: 04 49 43 52 31 04 49 43 52 32 04 49 43 52 33 04 .ICR1.ICR2.ICR3. 54d0: 49 43 52 34 04 49 43 52 35 04 5b 82 4b 63 50 52 ICR4.ICR5.[.KcPR 54e0: 49 44 08 5f 41 44 52 00 14 40 17 5f 47 54 4d 00 ID._ADR..@._GTM. 54f0: 08 50 42 55 46 11 17 0a 14 00 00 00 00 00 00 00 .PBUF........... 5500: 00 00 00 00 00 00 00 00 00 00 00 00 00 8a 50 42 ..............PB 5510: 55 46 00 50 49 4f 30 8a 50 42 55 46 0a 04 44 4d UF.PIO0.PBUF..DM 5520: 41 30 8a 50 42 55 46 0a 08 50 49 4f 31 8a 50 42 A0.PBUF..PIO1.PB 5530: 55 46 0a 0c 44 4d 41 31 8a 50 42 55 46 0a 10 46 UF..DMA1.PBUF..F 5540: 4c 41 47 70 47 45 54 50 50 52 49 54 50 49 4f 30 LAGpGETPPRITPIO0 5550: 70 47 44 4d 41 7b 53 59 4e 43 01 00 7b 49 43 52 pGDMA{SYNC..{ICR 5560: 33 01 00 7b 49 43 52 30 01 00 53 44 54 30 7b 49 3..{ICR0..SDT0{I 5570: 43 52 31 01 00 44 4d 41 30 a0 14 93 44 4d 41 30 CR1..DMA0...DMA0 5580: 0c ff ff ff ff 70 50 49 4f 30 44 4d 41 30 a0 2e .....pPIO0DMA0.. 5590: 7b 50 52 49 54 0b 00 40 00 a0 14 93 7b 50 52 49 {PRIT..@....{PRI 55a0: 54 0a 90 00 0a 80 70 0b 84 03 50 49 4f 31 a1 0e T.....p...PIO1.. 55b0: 70 47 45 54 54 50 53 49 54 50 49 4f 31 a1 0b 70 pGETTPSITPIO1..p 55c0: 0c ff ff ff ff 50 49 4f 31 70 47 44 4d 41 7b 53 .....PIO1pGDMA{S 55d0: 59 4e 43 0a 02 00 7b 49 43 52 33 0a 02 00 7b 49 YNC...{ICR3...{I 55e0: 43 52 30 0a 02 00 53 44 54 31 7b 49 43 52 31 0a CR0...SDT1{ICR1. 55f0: 02 00 44 4d 41 31 a0 14 93 44 4d 41 31 0c ff ff ..DMA1...DMA1... 5600: ff ff 70 50 49 4f 31 44 4d 41 31 70 47 45 54 46 ..pPIO1DMA1pGETF 5610: 7b 53 59 4e 43 01 00 7b 53 59 4e 43 0a 02 00 50 {SYNC..{SYNC...P 5620: 52 49 54 46 4c 41 47 a0 2c 7b 93 50 49 4f 30 0c RITFLAG.,{.PIO0. 5630: ff ff ff ff 93 44 4d 41 30 0c ff ff ff ff 00 70 .....DMA0......p 5640: 0a 78 50 49 4f 30 70 0a 14 44 4d 41 30 70 0a 03 .xPIO0p..DMA0p.. 5650: 46 4c 41 47 a4 50 42 55 46 14 4c 2a 5f 53 54 4d FLAG.PBUF.L*_STM 5660: 03 8a 68 00 50 49 4f 30 8a 68 0a 04 44 4d 41 30 ..h.PIO0.h..DMA0 5670: 8a 68 0a 08 50 49 4f 31 8a 68 0a 0c 44 4d 41 31 .h..PIO1.h..DMA1 5680: 8a 68 0a 10 46 4c 41 47 a0 41 12 93 87 69 0b 00 .h..FLAG.A...i.. 5690: 02 7b 50 52 49 54 0b f0 c0 50 52 49 54 7b 53 59 .{PRIT...PRIT{SY 56a0: 4e 43 0a 02 53 59 4e 43 70 00 53 44 54 30 7b 49 NC..SYNCp.SDT0{I 56b0: 43 52 30 0a 02 49 43 52 30 7b 49 43 52 31 0a 02 CR0..ICR0{ICR1.. 56c0: 49 43 52 31 7b 49 43 52 33 0a 02 49 43 52 33 7b ICR1{ICR3..ICR3{ 56d0: 49 43 52 35 0a 02 49 43 52 35 8b 69 0a 62 57 34 ICR5..ICR5.i.bW4 56e0: 39 30 8b 69 0a 6a 57 35 33 30 8b 69 0a 7e 57 36 90.i.jW530.i.~W6 56f0: 33 30 8b 69 0a 80 57 36 34 30 8b 69 0a b0 57 38 30.i..W640.i..W8 5700: 38 30 8b 69 0a ba 57 39 33 30 7d 50 52 49 54 0b 80.i..W930}PRIT. 5710: 04 80 50 52 49 54 a0 1e 90 7b 46 4c 41 47 0a 02 ..PRIT...{FLAG.. 5720: 00 7b 57 34 39 30 0b 00 08 00 7d 50 52 49 54 0a .{W490....}PRIT. 5730: 02 50 52 49 54 7d 50 52 49 54 53 45 54 50 50 49 .PRIT}PRITSETPPI 5740: 4f 30 57 35 33 30 57 36 34 30 50 52 49 54 a0 4b O0W530W640PRIT.K 5750: 05 7b 46 4c 41 47 01 00 7d 53 59 4e 43 01 53 59 .{FLAG..}SYNC.SY 5760: 4e 43 70 53 44 4d 41 44 4d 41 30 53 44 54 30 a0 NCpSDMADMA0SDT0. 5770: 12 95 44 4d 41 30 0a 1e 7d 49 43 52 33 01 49 43 ..DMA0..}ICR3.IC 5780: 52 33 a0 12 95 44 4d 41 30 0a 3c 7d 49 43 52 30 R3...DMA0.<}ICR0 5790: 01 49 43 52 30 a0 14 7b 57 39 33 30 0b 00 20 00 .ICR0..{W930.. . 57a0: 7d 49 43 52 31 01 49 43 52 31 a0 4b 15 93 87 6a }ICR1.ICR1.K...j 57b0: 0b 00 02 7b 50 52 49 54 0b 0f bf 50 52 49 54 70 ...{PRIT...PRITp 57c0: 00 50 53 49 54 7b 53 59 4e 43 01 53 59 4e 43 70 .PSIT{SYNC.SYNCp 57d0: 00 53 44 54 31 7b 49 43 52 30 01 49 43 52 30 7b .SDT1{ICR0.ICR0{ 57e0: 49 43 52 31 01 49 43 52 31 7b 49 43 52 33 01 49 ICR1.ICR1{ICR3.I 57f0: 43 52 33 7b 49 43 52 35 01 49 43 52 35 8b 6a 0a CR3{ICR5.ICR5.j. 5800: 62 57 34 39 31 8b 6a 0a 6a 57 35 33 31 8b 6a 0a bW491.j.jW531.j. 5810: 7e 57 36 33 31 8b 6a 0a 80 57 36 34 31 8b 6a 0a ~W631.j..W641.j. 5820: b0 57 38 38 31 8b 6a 0a ba 57 39 33 31 7d 50 52 .W881.j..W931}PR 5830: 49 54 0b 40 80 50 52 49 54 a0 1e 90 7b 46 4c 41 IT.@.PRIT...{FLA 5840: 47 0a 08 00 7b 57 34 39 31 0b 00 08 00 7d 50 52 G...{W491....}PR 5850: 49 54 0a 20 50 52 49 54 a0 4c 04 7b 46 4c 41 47 IT. PRIT.L.{FLAG 5860: 0a 10 00 7d 50 52 49 54 0b 00 40 50 52 49 54 a0 ...}PRIT..@PRIT. 5870: 13 94 50 49 4f 31 0a f0 7d 50 52 49 54 0a 80 50 ..PIO1..}PRIT..P 5880: 52 49 54 a1 21 7d 50 52 49 54 0a 10 50 52 49 54 RIT.!}PRIT..PRIT 5890: 70 53 45 54 54 50 49 4f 31 57 35 33 31 57 36 34 pSETTPIO1W531W64 58a0: 31 50 53 49 54 a0 40 06 7b 46 4c 41 47 0a 04 00 1PSIT.@.{FLAG... 58b0: 7d 53 59 4e 43 0a 02 53 59 4e 43 70 53 44 4d 41 }SYNC..SYNCpSDMA 58c0: 44 4d 41 31 53 44 54 31 a0 13 95 44 4d 41 31 0a DMA1SDT1...DMA1. 58d0: 1e 7d 49 43 52 33 0a 02 49 43 52 33 a0 13 95 44 .}ICR3..ICR3...D 58e0: 4d 41 31 0a 3c 7d 49 43 52 30 0a 02 49 43 52 30 MA1.<}ICR0..ICR0 58f0: a0 15 7b 57 39 33 31 0b 00 20 00 7d 49 43 52 31 ..{W931.. .}ICR1 5900: 0a 02 49 43 52 31 5b 82 47 10 50 5f 44 30 08 5f ..ICR1[.G.P_D0._ 5910: 41 44 52 00 14 4a 0f 5f 47 54 46 00 08 50 49 42 ADR..J._GTF..PIB 5920: 30 11 11 0a 0e 03 00 00 00 00 a0 ef 03 00 00 00 0............... 5930: 00 a0 ef 8c 50 49 42 30 01 50 4d 44 30 8c 50 49 ....PIB0.PMD0.PI 5940: 42 30 0a 08 44 4d 44 30 a0 40 06 7b 50 52 49 54 B0..DMD0.@.{PRIT 5950: 0a 02 00 a0 13 93 7b 50 52 49 54 0a 09 00 0a 08 ......{PRIT..... 5960: 70 0a 08 50 4d 44 30 a1 41 04 70 0a 0a 50 4d 44 p..PMD0.A.p..PMD 5970: 30 7a 7b 50 52 49 54 0b 00 03 00 0a 08 60 7a 7b 0z{PRIT......`z{ 5980: 50 52 49 54 0b 00 30 00 0a 0c 61 72 60 61 62 a0 PRIT..0...ar`ab. 5990: 0c 93 0a 03 62 70 0a 0b 50 4d 44 30 a0 0c 93 0a ....bp..PMD0.... 59a0: 05 62 70 0a 0c 50 4d 44 30 a1 07 70 01 50 4d 44 .bp..PMD0..p.PMD 59b0: 30 a0 43 04 7b 53 59 4e 43 01 00 70 7d 53 44 54 0.C.{SYNC..p}SDT 59c0: 30 0a 40 00 44 4d 44 30 a0 2c 7b 49 43 52 31 01 0.@.DMD0.,{ICR1. 59d0: 00 a0 13 7b 49 43 52 30 01 00 72 44 4d 44 30 0a ...{ICR0..rDMD0. 59e0: 02 44 4d 44 30 a0 0f 7b 49 43 52 33 01 00 70 0a .DMD0..{ICR3..p. 59f0: 45 44 4d 44 30 a1 14 7d 74 7b 50 4d 44 30 0a 07 EDMD0..}t{PMD0.. 5a00: 00 0a 02 00 0a 20 44 4d 44 30 a4 50 49 42 30 5b ..... DMD0.PIB0[ 5a10: 82 46 10 50 5f 44 31 08 5f 41 44 52 01 14 49 0f .F.P_D1._ADR..I. 5a20: 5f 47 54 46 00 08 50 49 42 31 11 11 0a 0e 03 00 _GTF..PIB1...... 5a30: 00 00 00 b0 ef 03 00 00 00 00 b0 ef 8c 50 49 42 .............PIB 5a40: 31 01 50 4d 44 31 8c 50 49 42 31 0a 08 44 4d 44 1.PMD1.PIB1..DMD 5a50: 31 a0 4b 05 7b 50 52 49 54 0a 20 00 a0 13 93 7b 1.K.{PRIT. ....{ 5a60: 50 52 49 54 0a 90 00 0a 80 70 0a 08 50 4d 44 31 PRIT.....p..PMD1 5a70: a1 3c 72 7b 50 53 49 54 0a 03 00 7a 7b 50 53 49 .. 0050: 80 49 ee 6a 65 26 72 1e cd bf 5f 2f 96 d6 c0 0a .I.je&r..._/.... 0060: 92 f5 06 b5 00 b2 3b 29 02 e2 4c 8d c2 f2 bc 41 ......;)..L....A 0070: 77 9c 70 f0 f3 1b 09 d2 63 5a dc a8 83 f8 5e c9 w.p.....cZ....^. 0080: 15 95 f9 fa fd dc 05 b7 4d 67 7f 2d b3 84 33 20 ........Mg.-..3 0090: e1 d1 79 2a a7 6a 77 d1 b6 20 2a 76 42 c5 d5 e9 ..y*.jw.. *vB... 00a0: b6 43 40 55 44 c3 c9 37 99 5f 41 97 70 f3 d1 f6 .C@UD..7._A.p... 00b0: 07 ec 7b 1a 29 a1 c1 f1 91 fd 48 86 6e 3e ce cb ..{.).....H.n>.. 00c0: 01 00 00 00 b6 00 00 00 00 00 02 00 4c 45 4e 4f ............LENO 00d0: 56 4f 54 50 2d 36 38 20 20 20 57 49 4e 44 4f 57 VOTP-68 WINDOW 00e0: 53 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 S .............. 00f0: 00 00 00 00 00 00 8a 6e 2e c9 36 e6 7f 10 8a ea .......n..6..... 0100: 14 ad d2 93 b7 6d 9b 73 ad 83 36 b8 6c a7 a7 ee .....m.s..6.l... 0110: 37 47 16 fe f3 fc cd c7 89 84 06 16 91 0b 1e 81 7G.............. 0120: 11 42 b1 35 52 57 f6 6b bb 5f a5 81 e2 ff 89 8a .B.5RW.k._...... 0130: 95 c3 4d fc e9 56 4f 4c 34 cc 99 5e 62 e1 90 8a ..M..VOL4..^b... 0140: 54 be 4a 00 5c 9b a0 86 41 46 66 9d e2 f2 e7 36 T.J.\...AFf....6 0150: 9c 33 91 27 e7 8d 5c a1 d8 f9 a4 61 8a 1c 04 07 .3.'..\....a.... 0160: e3 2a 1e 14 f1 bd 7f 4c 09 ff 19 11 a9 d4 74 ca .*.....L......t. 0170: 11 9e dc 54 39 bf ...T9. APIC @ 0xbf6dff70 0000: 41 50 49 43 68 00 00 00 01 13 50 54 4c 54 44 20 APICh.....PTLTD 0010: 09 20 41 50 49 43 20 20 00 00 04 06 20 4c 54 50 . APIC .... LTP 0020: 00 00 00 00 00 00 e0 fe 01 00 00 00 00 08 00 00 ................ 0030: 01 00 00 00 00 08 01 01 01 00 00 00 01 0c 02 00 ................ 0040: 00 00 c0 fe 00 00 00 00 04 06 00 05 00 01 04 06 ................ 0050: 01 05 00 01 02 0a 00 00 02 00 00 00 05 00 02 0a ................ 0060: 00 09 09 00 00 00 0d 00 ........ SSDT @ 0xbf6d98bd 0000: 53 53 44 54 ad 02 00 00 01 59 53 61 74 61 52 65 SSDT.....YSataRe 0010: 53 61 74 61 41 68 63 69 00 10 00 00 49 4e 54 4c SataAhci....INTL 0020: 24 06 05 20 10 48 28 5c 2f 03 5f 53 42 5f 50 43 $.. .H(\/._SB_PC 0030: 49 30 53 41 54 41 5b 82 4f 0c 50 52 54 30 08 5f I0SATA[.O.PRT0._ 0040: 41 44 52 0b ff ff 14 44 0b 5f 53 44 44 01 08 47 ADR....D._SDD..G 0050: 42 55 30 11 0a 0a 07 00 00 00 00 00 a0 00 8c 47 BU0............G 0060: 42 55 30 0a 00 47 42 30 30 8c 47 42 55 30 0a 01 BU0..GB00.GBU0.. 0070: 47 42 30 31 8c 47 42 55 30 0a 02 47 42 30 32 8c GB01.GBU0..GB02. 0080: 47 42 55 30 0a 03 47 42 30 33 8c 47 42 55 30 0a GBU0..GB03.GBU0. 0090: 04 47 42 30 34 8c 47 42 55 30 0a 05 47 42 30 35 .GB04.GBU0..GB05 00a0: 8c 47 42 55 30 0a 06 47 42 30 36 a0 46 04 93 87 .GBU0..GB06.F... 00b0: 68 0b 00 02 8b 68 0a 9c 57 37 38 30 a0 1e 7b 57 h....h..W780..{W 00c0: 37 38 30 0a 08 00 70 0a 10 47 42 30 30 70 0a 03 780...p..GB00p.. 00d0: 47 42 30 31 70 0a ef 47 42 30 36 a1 16 70 0a 90 GB01p..GB06..p.. 00e0: 47 42 30 30 70 0a 03 47 42 30 31 70 0a ef 47 42 GB00p..GB01p..GB 00f0: 30 36 70 47 42 55 30 47 54 46 30 14 0b 5f 47 54 06pGBU0GTF0.._GT 0100: 46 00 a4 47 54 46 30 5b 82 41 0d 50 52 54 31 08 F..GTF0[.A.PRT1. 0110: 5f 41 44 52 0c ff ff 01 00 14 44 0b 5f 53 44 44 _ADR......D._SDD 0120: 01 08 47 42 55 31 11 0a 0a 07 00 00 00 00 00 a0 ..GBU1.......... 0130: 00 8c 47 42 55 31 0a 00 47 42 31 30 8c 47 42 55 ..GBU1..GB10.GBU 0140: 31 0a 01 47 42 31 31 8c 47 42 55 31 0a 02 47 42 1..GB11.GBU1..GB 0150: 31 32 8c 47 42 55 31 0a 03 47 42 31 33 8c 47 42 12.GBU1..GB13.GB 0160: 55 31 0a 04 47 42 31 34 8c 47 42 55 31 0a 05 47 U1..GB14.GBU1..G 0170: 42 31 35 8c 47 42 55 31 0a 06 47 42 31 36 a0 46 B15.GBU1..GB16.F 0180: 04 93 87 68 0b 00 02 8b 68 0a 9c 57 37 38 31 a0 ...h....h..W781. 0190: 1e 7b 57 37 38 31 0a 08 00 70 0a 10 47 42 31 30 .{W781...p..GB10 01a0: 70 0a 03 47 42 31 31 70 0a ef 47 42 31 36 a1 16 p..GB11p..GB16.. 01b0: 70 0a 90 47 42 31 30 70 0a 03 47 42 31 31 70 0a p..GB10p..GB11p. 01c0: ef 47 42 31 36 70 47 42 55 31 47 54 46 31 14 0b .GB16pGBU1GTF1.. 01d0: 5f 47 54 46 00 a4 47 54 46 31 5b 82 41 0d 50 52 _GTF..GTF1[.A.PR 01e0: 54 32 08 5f 41 44 52 0c ff ff 02 00 14 44 0b 5f T2._ADR......D._ 01f0: 53 44 44 01 08 47 42 55 32 11 0a 0a 07 00 00 00 SDD..GBU2....... 0200: 00 00 a0 00 8c 47 42 55 32 0a 00 47 42 32 30 8c .....GBU2..GB20. 0210: 47 42 55 32 0a 01 47 42 32 31 8c 47 42 55 32 0a GBU2..GB21.GBU2. 0220: 02 47 42 32 32 8c 47 42 55 32 0a 03 47 42 32 33 .GB22.GBU2..GB23 0230: 8c 47 42 55 32 0a 04 47 42 32 34 8c 47 42 55 32 .GBU2..GB24.GBU2 0240: 0a 05 47 42 32 35 8c 47 42 55 32 0a 06 47 42 32 ..GB25.GBU2..GB2 0250: 36 a0 46 04 93 87 68 0b 00 02 8b 68 0a 9c 57 37 6.F...h....h..W7 0260: 38 32 a0 1e 7b 57 37 38 32 0a 08 00 70 0a 10 47 82..{W782...p..G 0270: 42 32 30 70 0a 03 47 42 32 31 70 0a ef 47 42 32 B20p..GB21p..GB2 0280: 36 a1 16 70 0a 90 47 42 32 30 70 0a 03 47 42 32 6..p..GB20p..GB2 0290: 31 70 0a ef 47 42 32 36 70 47 42 55 32 47 54 46 1p..GB26pGBU2GTF 02a0: 32 14 0b 5f 47 54 46 00 a4 47 54 46 32 2.._GTF..GTF2 SSDT @ 0xbf6d981a 0000: 53 53 44 54 a3 00 00 00 01 ed 42 72 74 52 65 66 SSDT......BrtRef 0010: 44 44 30 31 42 52 54 00 00 10 00 00 49 4e 54 4c DD01BRT.....INTL 0020: 24 06 05 20 10 4e 07 5c 2f 04 5f 53 42 5f 50 43 $.. .N.\/._SB_PC 0030: 49 30 47 46 58 30 44 44 30 33 14 1e 5f 42 43 4c I0GFX0DD03.._BCL 0040: 00 a4 12 16 0a 0a 46 0a 28 0a 00 0a 0a 0a 14 0a ......F.(....... 0050: 1e 0a 28 0a 32 0a 3c 0a 46 14 25 5f 42 43 4d 01 ..(.2.<.F.%_BCM. 0060: 78 68 0a 0a 60 61 70 61 5c 2f 05 5f 53 42 5f 50 xh..`apa\/._SB_P 0070: 43 49 30 4c 50 43 42 45 43 30 5f 42 52 54 53 14 CI0LPCBEC0_BRTS. 0080: 23 5f 42 51 43 00 77 5c 2f 05 5f 53 42 5f 50 43 #_BQC.w\/._SB_PC 0090: 49 30 4c 50 43 42 45 43 30 5f 42 52 54 53 0a 0a I0LPCBEC0_BRTS.. 00a0: 60 a4 60 `.` SSDT @ 0xbf6d8e10 0000: 53 53 44 54 5f 02 00 00 01 c8 50 6d 52 65 66 00 SSDT_.....PmRef. 0010: 43 70 75 30 54 73 74 00 00 30 00 00 49 4e 54 4c Cpu0Tst..0..INTL 0020: 24 06 05 20 10 4a 23 5c 2e 5f 50 52 5f 43 50 55 $.. .J#\._PR_CPU 0030: 30 08 5f 54 50 43 0a 00 14 4d 06 5f 50 54 43 00 0._TPC...M._PTC. 0040: a0 37 7b 50 44 43 30 0a 04 00 a4 12 2c 02 11 14 .7{PDC0.....,... 0050: 0a 11 82 0c 00 7f 00 00 00 00 00 00 00 00 00 00 ................ 0060: 00 79 00 11 14 0a 11 82 0c 00 7f 00 00 00 00 00 .y.............. 0070: 00 00 00 00 00 00 79 00 a4 12 2c 02 11 14 0a 11 ......y...,..... 0080: 82 0c 00 01 04 01 00 10 10 00 00 00 00 00 00 79 ...............y 0090: 00 11 14 0a 11 82 0c 00 01 04 01 00 10 10 00 00 ................ 00a0: 00 00 00 00 79 00 08 54 53 53 49 12 41 07 08 12 ....y..TSSI.A... 00b0: 0d 05 0a 64 0b e8 03 0a 00 0a 00 0a 00 12 0d 05 ...d............ 00c0: 0a 58 0b 6b 03 0a 00 0a 0f 0a 00 12 0d 05 0a 4b .X.k...........K 00d0: 0b ee 02 0a 00 0a 0e 0a 00 12 0d 05 0a 3f 0b 71 .............?.q 00e0: 02 0a 00 0a 0d 0a 00 12 0d 05 0a 32 0b f4 01 0a ...........2.... 00f0: 00 0a 0c 0a 00 12 0d 05 0a 26 0b 77 01 0a 00 0a .........&.w.... 0100: 0b 0a 00 12 0c 05 0a 19 0a fa 0a 00 0a 0a 0a 00 ................ 0110: 12 0c 05 0a 0d 0a 7d 0a 00 0a 09 0a 00 08 54 53 ......}.......TS 0120: 53 4d 12 41 07 08 12 0d 05 0a 64 0b e8 03 0a 00 SM.A......d..... 0130: 0a 00 0a 00 12 0d 05 0a 58 0b 6b 03 0a 00 0a 1e ........X.k..... 0140: 0a 00 12 0d 05 0a 4b 0b ee 02 0a 00 0a 1c 0a 00 ......K......... 0150: 12 0d 05 0a 3f 0b 71 02 0a 00 0a 1a 0a 00 12 0d ....?.q......... 0160: 05 0a 32 0b f4 01 0a 00 0a 18 0a 00 12 0d 05 0a ..2............. 0170: 26 0b 77 01 0a 00 0a 16 0a 00 12 0c 05 0a 19 0a &.w............. 0180: fa 0a 00 0a 14 0a 00 12 0c 05 0a 0d 0a 7d 0a 00 .............}.. 0190: 0a 12 0a 00 08 54 53 53 46 0a 00 14 43 08 5f 54 .....TSSF...C._T 01a0: 53 53 00 a0 47 06 90 92 54 53 53 46 5b 12 5f 50 SS..G...TSSF[._P 01b0: 53 53 00 70 5f 50 53 53 60 70 87 60 61 76 61 70 SS.p_PSS`p.`avap 01c0: 83 88 83 88 60 61 00 0a 01 00 62 70 0a 00 63 a2 ....`a....bp..c. 01d0: 35 95 63 87 54 53 53 49 70 78 77 62 74 0a 08 63 5.c.TSSIpxwbt..c 01e0: 00 00 0a 08 00 00 64 70 64 88 83 88 54 53 53 49 ......dpd...TSSI 01f0: 63 00 0a 01 00 70 64 88 83 88 54 53 53 4d 63 00 c....pd...TSSMc. 0200: 0a 01 00 75 63 70 ff 54 53 53 46 a0 0e 7b 50 44 ...ucp.TSSF..{PD 0210: 43 30 0a 04 00 a4 54 53 53 4d a4 54 53 53 49 14 C0....TSSM.TSSI. 0220: 3f 5f 54 53 44 00 a0 27 90 7b 43 46 47 44 0c 00 ?_TSD..'.{CFGD.. 0230: 00 00 01 00 92 7b 50 44 43 30 0a 04 00 a4 12 0f .....{PDC0...... 0240: 01 12 0c 05 0a 05 0a 00 0a 00 0a fd 0a 02 a4 12 ................ 0250: 0f 01 12 0c 05 0a 05 0a 00 0a 00 0a fc 0a 01 ............... SSDT @ 0xbf6d8d6a 0000: 53 53 44 54 a6 00 00 00 01 6d 50 6d 52 65 66 00 SSDT.....mPmRef. 0010: 43 70 75 31 54 73 74 00 00 30 00 00 49 4e 54 4c Cpu1Tst..0..INTL 0020: 24 06 05 20 10 41 08 5c 2e 5f 50 52 5f 43 50 55 $.. .A.\._PR_CPU 0030: 31 08 5f 54 50 43 0a 00 14 16 5f 50 54 43 00 a4 1._TPC...._PTC.. 0040: 5c 2f 03 5f 50 52 5f 43 50 55 30 5f 50 54 43 14 \/._PR_CPU0_PTC. 0050: 16 5f 54 53 53 00 a4 5c 2f 03 5f 50 52 5f 43 50 ._TSS..\/._PR_CP 0060: 55 30 5f 54 53 53 14 3f 5f 54 53 44 00 a0 27 90 U0_TSS.?_TSD..'. 0070: 7b 43 46 47 44 0c 00 00 00 01 00 92 7b 50 44 43 {CFGD.......{PDC 0080: 31 0a 04 00 a4 12 0f 01 12 0c 05 0a 05 0a 00 0a 1............... 0090: 00 0a fd 0a 02 a4 12 0f 01 12 0c 05 0a 05 0a 00 ................ 00a0: 0a 01 0a fc 0a 01 ...... SSDT @ 0xbf6d8884 0000: 53 53 44 54 e6 04 00 00 01 df 50 6d 52 65 66 00 SSDT......PmRef. 0010: 43 70 75 50 6d 00 00 00 00 30 00 00 49 4e 54 4c CpuPm....0..INTL 0020: 24 06 05 20 10 45 08 5c 00 08 53 53 44 54 12 43 $.. .E.\..SSDT.C 0030: 05 0c 0d 43 50 55 30 49 53 54 20 00 0c 9e 95 6d ...CPU0IST ....m 0040: bf 0c b4 01 00 00 0d 43 50 55 31 49 53 54 20 00 .......CPU1IST . 0050: 0c 52 97 6d bf 0c c8 00 00 00 0d 43 50 55 30 43 .R.m.......CPU0C 0060: 53 54 20 00 0c 6f 90 6d bf 0c aa 04 00 00 0d 43 ST ..o.m.......C 0070: 50 55 31 43 53 54 20 00 0c 19 95 6d bf 0c 85 00 PU1CST ....m.... 0080: 00 00 08 43 46 47 44 0c f1 69 3f 11 08 5c 50 44 ...CFGD..i?..\PD 0090: 43 30 0c 00 00 00 80 08 5c 50 44 43 31 0c 00 00 C0......\PDC1... 00a0: 00 80 08 5c 53 44 54 4c 0a 00 10 4d 21 5c 2e 5f ...\SDTL...M!\._ 00b0: 50 52 5f 43 50 55 30 08 48 49 30 5f 0a 00 08 48 PR_CPU0.HI0_...H 00c0: 43 30 5f 0a 00 14 48 06 5f 50 44 43 01 8a 68 0a C0_...H._PDC..h. 00d0: 00 52 45 56 53 8a 68 0a 04 53 49 5a 45 70 87 68 .REVS.h..SIZEp.h 00e0: 60 70 74 60 0a 08 00 61 5b 13 68 0a 40 77 61 0a `pt`...a[.h.@wa. 00f0: 08 00 54 45 4d 50 08 53 54 53 30 11 07 0a 04 00 ..TEMP.STS0..... 0100: 00 00 00 73 53 54 53 30 54 45 4d 50 62 5f 4f 53 ...sSTS0TEMPb_OS 0110: 43 11 13 0a 10 16 a6 77 40 0c 29 be 47 9e bd d8 C......w@.).G... 0120: 70 58 71 39 53 52 45 56 53 53 49 5a 45 62 14 49 pXq9SREVSSIZEb.I 0130: 19 5f 4f 53 43 04 8a 6b 0a 00 53 54 53 30 8a 6b ._OSC..k..STS0.k 0140: 0a 04 43 41 50 30 8a 68 0a 00 49 49 44 30 8a 68 ..CAP0.h..IID0.h 0150: 0a 04 49 49 44 31 8a 68 0a 08 49 49 44 32 8a 68 ..IID1.h..IID2.h 0160: 0a 0c 49 49 44 33 08 55 49 44 30 11 13 0a 10 16 ..IID3.UID0..... 0170: a6 77 40 0c 29 be 47 9e bd d8 70 58 71 39 53 8a .w@.).G...pXq9S. 0180: 55 49 44 30 0a 00 45 49 44 30 8a 55 49 44 30 0a UID0..EID0.UID0. 0190: 04 45 49 44 31 8a 55 49 44 30 0a 08 45 49 44 32 .EID1.UID0..EID2 01a0: 8a 55 49 44 30 0a 0c 45 49 44 33 a0 32 92 90 90 .UID0..EID3.2... 01b0: 93 49 49 44 30 45 49 44 30 93 49 49 44 31 45 49 .IID0EID0.IID1EI 01c0: 44 31 90 93 49 49 44 32 45 49 44 32 93 49 49 44 D1..IID2EID2.IID 01d0: 33 45 49 44 33 70 0a 06 53 54 53 30 a4 6b a0 0f 3EID3p..STS0.k.. 01e0: 92 93 69 0a 01 70 0a 0a 53 54 53 30 a4 6b 7d 7b ..i..p..STS0.k}{ 01f0: 50 44 43 30 0c ff ff ff 7f 00 43 41 50 30 50 44 PDC0......CAP0PD 0200: 43 30 70 7b 50 44 43 30 0a ff 00 50 43 50 30 a0 C0p{PDC0...PCP0. 0210: 4c 05 7b 43 46 47 44 0a 01 00 a0 41 05 90 90 7b L.{CFGD....A...{ 0220: 43 46 47 44 0c 00 00 00 01 00 93 7b 50 44 43 30 CFGD.......{PDC0 0230: 0a 09 00 0a 09 92 7b 53 44 54 4c 0a 01 00 7d 53 ......{SDTL...}S 0240: 44 54 4c 0a 01 53 44 54 4c 5b 80 49 53 54 30 00 DTL..SDTL[.IST0. 0250: 83 88 53 53 44 54 0a 01 00 83 88 53 53 44 54 0a ..SSDT.....SSDT. 0260: 02 00 5b 20 49 53 54 30 48 49 30 5f a0 49 05 7b ..[ IST0HI0_.I.{ 0270: 43 46 47 44 0a f0 00 a0 4e 04 90 90 7b 43 46 47 CFGD....N...{CFG 0280: 44 0c 00 00 00 01 00 7b 50 44 43 30 0a 18 00 92 D......{PDC0.... 0290: 7b 53 44 54 4c 0a 02 00 7d 53 44 54 4c 0a 02 53 {SDTL...}SDTL..S 02a0: 44 54 4c 5b 80 43 53 54 30 00 83 88 53 53 44 54 DTL[.CST0...SSDT 02b0: 0a 07 00 83 88 53 53 44 54 0a 08 00 5b 20 43 53 .....SSDT...[ CS 02c0: 54 30 48 43 30 5f a4 6b 10 4d 21 5c 2e 5f 50 52 T0HC0_.k.M!\._PR 02d0: 5f 43 50 55 31 08 48 49 31 5f 0a 00 08 48 43 31 _CPU1.HI1_...HC1 02e0: 5f 0a 00 14 48 06 5f 50 44 43 01 8a 68 0a 00 52 _...H._PDC..h..R 02f0: 45 56 53 8a 68 0a 04 53 49 5a 45 70 87 68 60 70 EVS.h..SIZEp.h`p 0300: 74 60 0a 08 00 61 5b 13 68 0a 40 77 61 0a 08 00 t`...a[.h.@wa... 0310: 54 45 4d 50 08 53 54 53 31 11 07 0a 04 00 00 00 TEMP.STS1....... 0320: 00 73 53 54 53 31 54 45 4d 50 62 5f 4f 53 43 11 .sSTS1TEMPb_OSC. 0330: 13 0a 10 16 a6 77 40 0c 29 be 47 9e bd d8 70 58 .....w@.).G...pX 0340: 71 39 53 52 45 56 53 53 49 5a 45 62 14 49 19 5f q9SREVSSIZEb.I._ 0350: 4f 53 43 04 8a 6b 0a 00 53 54 53 31 8a 6b 0a 04 OSC..k..STS1.k.. 0360: 43 41 50 31 8a 68 0a 00 49 49 44 30 8a 68 0a 04 CAP1.h..IID0.h.. 0370: 49 49 44 31 8a 68 0a 08 49 49 44 32 8a 68 0a 0c IID1.h..IID2.h.. 0380: 49 49 44 33 08 55 49 44 31 11 13 0a 10 16 a6 77 IID3.UID1......w 0390: 40 0c 29 be 47 9e bd d8 70 58 71 39 53 8a 55 49 @.).G...pXq9S.UI 03a0: 44 31 0a 00 45 49 44 30 8a 55 49 44 31 0a 04 45 D1..EID0.UID1..E 03b0: 49 44 31 8a 55 49 44 31 0a 08 45 49 44 32 8a 55 ID1.UID1..EID2.U 03c0: 49 44 31 0a 0c 45 49 44 33 a0 32 92 90 90 93 49 ID1..EID3.2....I 03d0: 49 44 30 45 49 44 30 93 49 49 44 31 45 49 44 31 ID0EID0.IID1EID1 03e0: 90 93 49 49 44 32 45 49 44 32 93 49 49 44 33 45 ..IID2EID2.IID3E 03f0: 49 44 33 70 0a 06 53 54 53 31 a4 6b a0 0f 92 93 ID3p..STS1.k.... 0400: 69 0a 01 70 0a 0a 53 54 53 31 a4 6b 7d 7b 50 44 i..p..STS1.k}{PD 0410: 43 31 0c ff ff ff 7f 00 43 41 50 31 50 44 43 31 C1......CAP1PDC1 0420: 70 7b 50 44 43 31 0a ff 00 50 43 50 31 a0 4c 05 p{PDC1...PCP1.L. 0430: 7b 43 46 47 44 0a 01 00 a0 41 05 90 90 7b 43 46 {CFGD....A...{CF 0440: 47 44 0c 00 00 00 01 00 93 7b 50 44 43 31 0a 09 GD.......{PDC1.. 0450: 00 0a 09 92 7b 53 44 54 4c 0a 10 00 7d 53 44 54 ....{SDTL...}SDT 0460: 4c 0a 10 53 44 54 4c 5b 80 49 53 54 31 00 83 88 L..SDTL[.IST1... 0470: 53 53 44 54 0a 04 00 83 88 53 53 44 54 0a 05 00 SSDT.....SSDT... 0480: 5b 20 49 53 54 31 48 49 31 5f a0 49 05 7b 43 46 [ IST1HI1_.I.{CF 0490: 47 44 0a f0 00 a0 4e 04 90 90 7b 43 46 47 44 0c GD....N...{CFGD. 04a0: 00 00 00 01 00 7b 50 44 43 31 0a 18 00 92 7b 53 .....{PDC1....{S 04b0: 44 54 4c 0a 20 00 7d 53 44 54 4c 0a 20 53 44 54 DTL. .}SDTL. SDT 04c0: 4c 5b 80 43 53 54 31 00 83 88 53 53 44 54 0a 0a L[.CST1...SSDT.. 04d0: 00 83 88 53 53 44 54 0a 0b 00 5b 20 43 53 54 31 ...SSDT...[ CST1 04e0: 48 43 31 5f a4 6b HC1_.k XSDT @ 0xbf6d87f0 0000: 58 53 44 54 94 00 00 00 01 c2 4c 45 4e 4f 56 4f XSDT......LENOVO 0010: 54 50 2d 36 38 20 20 20 00 00 04 06 20 4c 54 50 TP-68 .... LTP 0020: 00 00 00 00 d2 fb 6d bf 00 00 00 00 c6 fc 6d bf ......m.......m. 0030: 00 00 00 00 2e fd 6d bf 00 00 00 00 66 fd 6d bf ......m.....f.m. 0040: 00 00 00 00 a2 fd 6d bf 00 00 00 00 d4 fd 6d bf ......m.......m. 0050: 00 00 00 00 fa fd 6d bf 00 00 00 00 70 ff 6d bf ......m.....p.m. 0060: 00 00 00 00 d8 ff 6d bf 00 00 00 00 bd 98 6d bf ......m.......m. 0070: 00 00 00 00 1a 98 6d bf 00 00 00 00 10 8e 6d bf ......m.......m. 0080: 00 00 00 00 6a 8d 6d bf 00 00 00 00 84 88 6d bf ....j.m.......m. 0090: 00 00 00 00 .... FACP @ 0xbf6dfbd2 0000: 46 41 43 50 f4 00 00 00 03 52 54 4f 53 43 50 4c FACP.....RTOSCPL 0010: 43 52 45 53 54 4c 4e 45 00 00 04 06 41 4c 41 4e CRESTLNE....ALAN 0020: 01 00 00 00 c0 2f 6e bf 6a 9b 6d bf 00 02 09 00 ...../n.j.m..... 0030: b2 00 00 00 f0 f1 00 80 00 10 00 00 00 00 00 00 ................ 0040: 04 10 00 00 00 00 00 00 20 10 00 00 08 10 00 00 ........ ....... 0050: 28 10 00 00 00 00 00 00 04 02 01 04 08 00 00 85 (............... 0060: 01 00 23 00 00 00 00 00 01 03 0d 00 32 00 00 00 ..#.........2... 0070: a5 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0080: 00 00 00 00 c0 2f 6e bf 00 00 00 00 6a 9b 6d bf ...../n.....j.m. 0090: 00 00 00 00 01 20 00 00 00 10 00 00 00 00 00 00 ..... .......... 00a0: 00 00 00 00 00 00 00 00 00 00 00 00 01 10 00 00 ................ 00b0: 04 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00c0: 00 00 00 00 01 08 00 00 20 10 00 00 00 00 00 00 ........ ....... 00d0: 01 20 00 00 08 10 00 00 00 00 00 00 01 40 00 00 . ...........@.. 00e0: 28 10 00 00 00 00 00 00 00 00 00 00 00 00 00 00 (............... 00f0: 00 00 00 00 .... TCPA @ 0xbf6dfda2 0000: 54 43 50 41 32 00 00 00 01 8f 49 6e 74 65 6c 20 TCPA2.....Intel 0010: 43 52 45 53 54 4c 4e 45 00 00 04 06 4c 4f 48 52 CRESTLNE....LOHR 0020: 5a 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 Z............... 0030: 00 00 .. fwts-test/disassemble-0001/disassemble-aml-0001.log000066400000000000000000000005011231470457100220120ustar00rootroot00000000000000Disassembled DSDT to /tmp/disassemble-aml/DSDT.dsl Disassembled SSDT 0 to /tmp/disassemble-aml/SSDT0.dsl Disassembled SSDT 1 to /tmp/disassemble-aml/SSDT1.dsl Disassembled SSDT 2 to /tmp/disassemble-aml/SSDT2.dsl Disassembled SSDT 3 to /tmp/disassemble-aml/SSDT3.dsl Disassembled SSDT 4 to /tmp/disassemble-aml/SSDT4.dsl fwts-test/disassemble-0001/test-0001.sh000077500000000000000000000021031231470457100175630ustar00rootroot00000000000000#!/bin/bash # NAME=test-0001.sh TMPDIR=$TMP/disassemble-aml TMPLOG=$TMP/disassemble-aml.log.$$ HERE=$FWTSTESTDIR/disassemble-0001 mkdir $TMPDIR $FWTS -w 80 --dumpfile=$HERE/acpidump.log --disassemble-aml=$TMPDIR - > $TMPLOG failed=0 TEST="Test --disassemble-aml output to stdout" diff $HERE/disassemble-aml-0001.log $TMPLOG >> $FAILURE_LOG if [ $? -eq 0 ]; then echo PASSED: $TEST, $NAME else echo FAILED: $TEST, $NAME failed=1 fi for I in DSDT SSDT0 SSDT1 SSDT2 SSDT3 SSDT4 do TEST="Test --disassemble-aml against known $I" # # Remove lines that contain a tmp file output name in disassembly # grep -v "/tmp/fwts_iasl" $TMPDIR/$I.dsl | grep -v "AML Disassembler version" > $TMPDIR/$I.dsl.fixed.$$ grep -v "/tmp/fwts_iasl" $HERE/$I.dsl.original | grep -v "AML Disassembler version" > $TMPDIR/$I.dsl.orig.fixed.$$ diff $TMPDIR/$I.dsl.fixed.$$ $TMPDIR/$I.dsl.orig.fixed.$$ if [ $? -eq 0 ]; then echo PASSED: $TEST, $NAME else echo FAILED: $TEST, $NAME failed=1 fi rm $TMPDIR/$I.dsl.fixed.$$ $TMPDIR/$I.dsl.orig.fixed.$$ done rm -rf $TMPDIR $TMPLOG exit $failed fwts-test/klog-0001/000077500000000000000000000000001231470457100143345ustar00rootroot00000000000000fwts-test/klog-0001/klog-0001.log000066400000000000000000030761551231470457100163720ustar00rootroot00000000000000klog klog: Scan kernel log for errors and warnings. klog ---------------------------------------------------------- klog Test 1 of 1: Kernel log error check. klog FAILED [HIGH] KlogAcpiMultipleApicMadtFound: Test 1, HIGH klog Kernel message: [ 0.000000] ACPI: BIOS bug: multiple APIC klog /MADT found, using 0 klog klog ADVICE: The kernel has detected more than one ACPI klog Multiple APIC Description Table (MADT) (these tables have klog the "APIC" signature). There should only be one MADT and klog the kernel will by default select the first one. However, klog one can override this and select the Nth MADT using klog acpi_apic_instance=N. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatch: Test 1, klog HIGH Kernel message: [ 0.000000] ACPI Error: 32/64X klog address mismatch in Gpe0Block: 00008018/0000000000008028, klog using 32 (20090903/tbfadt-427) klog klog ADVICE: The FADT table contains a mismatch between a 32 klog bit pointer and a 64 bit Generic Address pointer. Because klog these pointers are different, it suggests either one of klog them is incorrect. If a non-null 32 bit pointer exists, klog then the kernel will opt for this in preference to the 64 klog bit pointer even though this is not in accordance to the klog ACPI specification. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatch: Test 1, klog HIGH Kernel message: [ 0.000000] ACPI Error: 32/64X klog address mismatch in Gpe0Block: 00008020/0000000000008028, klog using 32 (20090903/tbfadt-427) klog klog ADVICE: The FADT table contains a mismatch between a 32 klog bit pointer and a 64 bit Generic Address pointer. Because klog these pointers are different, it suggests either one of klog them is incorrect. If a non-null 32 bit pointer exists, klog then the kernel will opt for this in preference to the 64 klog bit pointer even though this is not in accordance to the klog ACPI specification. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatch: Test 1, klog HIGH Kernel message: [ 0.000000] ACPI Error: 32/64X klog address mismatch in Gpe0Block: 0x00008020 klog /0x0000000000008028, using 32 (20110112/tbfadt-427) klog klog ADVICE: The FADT table contains a mismatch between a 32 klog bit pointer and a 64 bit Generic Address pointer. Because klog these pointers are different, it suggests either one of klog them is incorrect. If a non-null 32 bit pointer exists, klog then the kernel will opt for this in preference to the 64 klog bit pointer even though this is not in accordance to the klog ACPI specification. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatch: Test 1, klog HIGH Kernel message: [ 0.000000] ACPI Error: 32/64X klog address mismatch in Pm2ControlBlock: 00008030 klog /0000000000008020, using 32 (20090903/tbfadt-427) klog klog ADVICE: The FADT table contains a mismatch between a 32 klog bit pointer and a 64 bit Generic Address pointer. Because klog these pointers are different, it suggests either one of klog them is incorrect. If a non-null 32 bit pointer exists, klog then the kernel will opt for this in preference to the 64 klog bit pointer even though this is not in accordance to the klog ACPI specification. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatch: Test 1, klog HIGH Kernel message: [ 0.000000] ACPI Error: 32/64X klog address mismatch in Pm2ControlBlock: 00008800 klog /0000000000008100, using 32 (20090903/tbfadt-427) klog klog ADVICE: The FADT table contains a mismatch between a 32 klog bit pointer and a 64 bit Generic Address pointer. Because klog these pointers are different, it suggests either one of klog them is incorrect. If a non-null 32 bit pointer exists, klog then the kernel will opt for this in preference to the 64 klog bit pointer even though this is not in accordance to the klog ACPI specification. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatch: Test 1, klog HIGH Kernel message: [ 0.000000] ACPI Error: 32/64X klog address mismatch in Pm2ControlBlock: 0x00000900 klog /0x0000000000000800, using 32 (20110112/tbfadt-427) klog klog ADVICE: The FADT table contains a mismatch between a 32 klog bit pointer and a 64 bit Generic Address pointer. Because klog these pointers are different, it suggests either one of klog them is incorrect. If a non-null 32 bit pointer exists, klog then the kernel will opt for this in preference to the 64 klog bit pointer even though this is not in accordance to the klog ACPI specification. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatch: Test 1, klog HIGH Kernel message: [ 0.000000] ACPI Error: 32/64X klog address mismatch in Pm2ControlBlock: 0x00001218 klog /0x0000000000001214, using 32 (20100428/tbfadt-427) klog klog ADVICE: The FADT table contains a mismatch between a 32 klog bit pointer and a 64 bit Generic Address pointer. Because klog these pointers are different, it suggests either one of klog them is incorrect. If a non-null 32 bit pointer exists, klog then the kernel will opt for this in preference to the 64 klog bit pointer even though this is not in accordance to the klog ACPI specification. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatch: Test 1, klog HIGH Kernel message: [ 0.000000] ACPI Error: 32/64X klog address mismatch in Pm2ControlBlock: 0x00001218 klog /0x0000000000001214, using 32 (20110413/tbfadt-430) klog klog ADVICE: The FADT table contains a mismatch between a 32 klog bit pointer and a 64 bit Generic Address pointer. Because klog these pointers are different, it suggests either one of klog them is incorrect. If a non-null 32 bit pointer exists, klog then the kernel will opt for this in preference to the 64 klog bit pointer even though this is not in accordance to the klog ACPI specification. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatch: Test 1, klog HIGH Kernel message: [ 0.000000] ACPI Error: 32/64X klog address mismatch in Pm2ControlBlock: 0x00008800 klog /0x0000000000008100, using 32 (20110112/tbfadt-427) klog klog ADVICE: The FADT table contains a mismatch between a 32 klog bit pointer and a 64 bit Generic Address pointer. Because klog these pointers are different, it suggests either one of klog them is incorrect. If a non-null 32 bit pointer exists, klog then the kernel will opt for this in preference to the 64 klog bit pointer even though this is not in accordance to the klog ACPI specification. klog klog FAILED [CRITICAL] KlogAcpiValidRsdpNotFound: Test 1, klog CRITICAL Kernel message: [ 0.000000] ACPI Error: A valid klog RSDP was not found (20090903/tbxfroot-219) klog klog ADVICE: An ACPI compatible system must provide an RSDP klog (Root System Description Pointer). This structure provides klog the physical address of the RSDT and XSDT. Since this klog could not be found, the ACPI driver has had to disable klog ACPI support. klog klog FAILED [CRITICAL] KlogAcpiValidRsdpNotFound: Test 1, klog CRITICAL Kernel message: [ 0.000000] ACPI Error: A valid klog RSDP was not found (20100428/tbxfroot-219) klog klog ADVICE: An ACPI compatible system must provide an RSDP klog (Root System Description Pointer). This structure provides klog the physical address of the RSDT and XSDT. Since this klog could not be found, the ACPI driver has had to disable klog ACPI support. klog klog FAILED [CRITICAL] KlogAcpiValidRsdpNotFound: Test 1, klog CRITICAL Kernel message: [ 0.000000] ACPI Error: A valid klog RSDP was not found (20110112/tbxfroot-219) klog klog ADVICE: An ACPI compatible system must provide an RSDP klog (Root System Description Pointer). This structure provides klog the physical address of the RSDT and XSDT. Since this klog could not be found, the ACPI driver has had to disable klog ACPI support. klog klog FAILED [HIGH] KlogAcpiTwoFacs: Test 1, HIGH Kernel message klog : [ 0.000000] ACPI Warning: 32/64 FACS address mismatch in klog FADT - two FACS tables! 20090521 tbfadt-370 klog klog ADVICE: The FADT table contains a mismatch between the 32 klog bit pointer (FIRMWARE_CTRL) and 64 bit pointer klog (X_FIRMWARE_CTRL) pointer to the FACS table. Section 5.2.9 klog of version 4.0a of the ACPI specification states that klog X_FIRMWARE_CTRL should be zero if FIRMWARE_CTRL is defined klog , or FIRMWARE_CTRL should be zero if X_FIRMWARE_CTRL is klog zero. With two different pointers defined, the kernel has klog to make a choice, and opts for the 32 bit pointer. Because klog these pointers are different, it suggests either one of klog them is incorrect, or different 32 bit and 64 bit FACS klog tables are present in your system, which is NOT complaint klog with the ACPI specification. The kernel has to make a klog choice and opts for the 32 bit FIRMWARE_CTRL. klog klog FAILED [HIGH] KlogAcpiTwoFacs: Test 1, HIGH Kernel message klog : [ 0.000000] ACPI Warning: 32/64 FACS address mismatch in klog FADT - two FACS tables! (20090903/tbfadt-369) klog klog ADVICE: The FADT table contains a mismatch between the 32 klog bit pointer (FIRMWARE_CTRL) and 64 bit pointer klog (X_FIRMWARE_CTRL) pointer to the FACS table. Section 5.2.9 klog of version 4.0a of the ACPI specification states that klog X_FIRMWARE_CTRL should be zero if FIRMWARE_CTRL is defined klog , or FIRMWARE_CTRL should be zero if X_FIRMWARE_CTRL is klog zero. With two different pointers defined, the kernel has klog to make a choice, and opts for the 32 bit pointer. Because klog these pointers are different, it suggests either one of klog them is incorrect, or different 32 bit and 64 bit FACS klog tables are present in your system, which is NOT complaint klog with the ACPI specification. The kernel has to make a klog choice and opts for the 32 bit FIRMWARE_CTRL. klog klog FAILED [HIGH] KlogAcpiTwoFacs: Test 1, HIGH Kernel message klog : [ 0.000000] ACPI Warning: 32/64 FACS address mismatch in klog FADT - two FACS tables! (20100121/tbfadt-369) klog klog ADVICE: The FADT table contains a mismatch between the 32 klog bit pointer (FIRMWARE_CTRL) and 64 bit pointer klog (X_FIRMWARE_CTRL) pointer to the FACS table. Section 5.2.9 klog of version 4.0a of the ACPI specification states that klog X_FIRMWARE_CTRL should be zero if FIRMWARE_CTRL is defined klog , or FIRMWARE_CTRL should be zero if X_FIRMWARE_CTRL is klog zero. With two different pointers defined, the kernel has klog to make a choice, and opts for the 32 bit pointer. Because klog these pointers are different, it suggests either one of klog them is incorrect, or different 32 bit and 64 bit FACS klog tables are present in your system, which is NOT complaint klog with the ACPI specification. The kernel has to make a klog choice and opts for the 32 bit FIRMWARE_CTRL. klog klog FAILED [HIGH] KlogAcpiTwoFacs: Test 1, HIGH Kernel message klog : [ 0.000000] ACPI Warning: 32/64 FACS address mismatch in klog FADT - two FACS tables! (20100428/tbfadt-369) klog klog ADVICE: The FADT table contains a mismatch between the 32 klog bit pointer (FIRMWARE_CTRL) and 64 bit pointer klog (X_FIRMWARE_CTRL) pointer to the FACS table. Section 5.2.9 klog of version 4.0a of the ACPI specification states that klog X_FIRMWARE_CTRL should be zero if FIRMWARE_CTRL is defined klog , or FIRMWARE_CTRL should be zero if X_FIRMWARE_CTRL is klog zero. With two different pointers defined, the kernel has klog to make a choice, and opts for the 32 bit pointer. Because klog these pointers are different, it suggests either one of klog them is incorrect, or different 32 bit and 64 bit FACS klog tables are present in your system, which is NOT complaint klog with the ACPI specification. The kernel has to make a klog choice and opts for the 32 bit FIRMWARE_CTRL. klog klog FAILED [HIGH] KlogAcpiTwoFacs: Test 1, HIGH Kernel message klog : [ 0.000000] ACPI Warning: 32/64 FACS address mismatch in klog FADT - two FACS tables! (20100702/tbfadt-369) klog klog ADVICE: The FADT table contains a mismatch between the 32 klog bit pointer (FIRMWARE_CTRL) and 64 bit pointer klog (X_FIRMWARE_CTRL) pointer to the FACS table. Section 5.2.9 klog of version 4.0a of the ACPI specification states that klog X_FIRMWARE_CTRL should be zero if FIRMWARE_CTRL is defined klog , or FIRMWARE_CTRL should be zero if X_FIRMWARE_CTRL is klog zero. With two different pointers defined, the kernel has klog to make a choice, and opts for the 32 bit pointer. Because klog these pointers are different, it suggests either one of klog them is incorrect, or different 32 bit and 64 bit FACS klog tables are present in your system, which is NOT complaint klog with the ACPI specification. The kernel has to make a klog choice and opts for the 32 bit FIRMWARE_CTRL. klog klog FAILED [HIGH] KlogAcpiTwoFacs: Test 1, HIGH Kernel message klog : [ 0.000000] ACPI Warning: 32/64 FACS address mismatch in klog FADT - two FACS tables! (20101013/tbfadt-369) klog klog ADVICE: The FADT table contains a mismatch between the 32 klog bit pointer (FIRMWARE_CTRL) and 64 bit pointer klog (X_FIRMWARE_CTRL) pointer to the FACS table. Section 5.2.9 klog of version 4.0a of the ACPI specification states that klog X_FIRMWARE_CTRL should be zero if FIRMWARE_CTRL is defined klog , or FIRMWARE_CTRL should be zero if X_FIRMWARE_CTRL is klog zero. With two different pointers defined, the kernel has klog to make a choice, and opts for the 32 bit pointer. Because klog these pointers are different, it suggests either one of klog them is incorrect, or different 32 bit and 64 bit FACS klog tables are present in your system, which is NOT complaint klog with the ACPI specification. The kernel has to make a klog choice and opts for the 32 bit FIRMWARE_CTRL. klog klog FAILED [HIGH] KlogAcpiTwoFacs: Test 1, HIGH Kernel message klog : [ 0.000000] ACPI Warning: 32/64 FACS address mismatch in klog FADT - two FACS tables! (20110112/tbfadt-369) klog klog ADVICE: The FADT table contains a mismatch between the 32 klog bit pointer (FIRMWARE_CTRL) and 64 bit pointer klog (X_FIRMWARE_CTRL) pointer to the FACS table. Section 5.2.9 klog of version 4.0a of the ACPI specification states that klog X_FIRMWARE_CTRL should be zero if FIRMWARE_CTRL is defined klog , or FIRMWARE_CTRL should be zero if X_FIRMWARE_CTRL is klog zero. With two different pointers defined, the kernel has klog to make a choice, and opts for the 32 bit pointer. Because klog these pointers are different, it suggests either one of klog them is incorrect, or different 32 bit and 64 bit FACS klog tables are present in your system, which is NOT complaint klog with the ACPI specification. The kernel has to make a klog choice and opts for the 32 bit FIRMWARE_CTRL. klog klog FAILED [HIGH] KlogAcpiTwoFacs: Test 1, HIGH Kernel message klog : [ 0.000000] ACPI Warning: 32/64 FACS address mismatch in klog FADT - two FACS tables! (20110316/tbfadt-369) klog klog ADVICE: The FADT table contains a mismatch between the 32 klog bit pointer (FIRMWARE_CTRL) and 64 bit pointer klog (X_FIRMWARE_CTRL) pointer to the FACS table. Section 5.2.9 klog of version 4.0a of the ACPI specification states that klog X_FIRMWARE_CTRL should be zero if FIRMWARE_CTRL is defined klog , or FIRMWARE_CTRL should be zero if X_FIRMWARE_CTRL is klog zero. With two different pointers defined, the kernel has klog to make a choice, and opts for the 32 bit pointer. Because klog these pointers are different, it suggests either one of klog them is incorrect, or different 32 bit and 64 bit FACS klog tables are present in your system, which is NOT complaint klog with the ACPI specification. The kernel has to make a klog choice and opts for the 32 bit FIRMWARE_CTRL. klog klog FAILED [HIGH] KlogAcpiTwoFacs: Test 1, HIGH Kernel message klog : [ 0.000000] ACPI Warning: 32/64 FACS address mismatch in klog FADT - two FACS tables! (20110413/tbfadt-369) klog klog ADVICE: The FADT table contains a mismatch between the 32 klog bit pointer (FIRMWARE_CTRL) and 64 bit pointer klog (X_FIRMWARE_CTRL) pointer to the FACS table. Section 5.2.9 klog of version 4.0a of the ACPI specification states that klog X_FIRMWARE_CTRL should be zero if FIRMWARE_CTRL is defined klog , or FIRMWARE_CTRL should be zero if X_FIRMWARE_CTRL is klog zero. With two different pointers defined, the kernel has klog to make a choice, and opts for the 32 bit pointer. Because klog these pointers are different, it suggests either one of klog them is incorrect, or different 32 bit and 64 bit FACS klog tables are present in your system, which is NOT complaint klog with the ACPI specification. The kernel has to make a klog choice and opts for the 32 bit FIRMWARE_CTRL. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X FACS address mismatch in FADT - 0x3776BF40 klog /0x000000003776ED40, using 32 (20100428/tbfadt-486) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X FACS address mismatch in FADT - 0x38FE4E40 klog /0x0000000038FE4D40, using 32 (20110112/tbfadt-486) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X FACS address mismatch in FADT - 0x38FE4E40 klog /0x0000000038FE4D40, using 32 (20110413/tbfadt-489) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X FACS address mismatch in FADT - 0x3F465F40 klog /0x000000003F465F80, using 32 (20110112/tbfadt-486) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X FACS address mismatch in FADT - 0x3F473F40 klog /0x000000003F473F80, using 32 (20100428/tbfadt-486) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X FACS address mismatch in FADT - 0x3F509F40 klog /0x000000003F509F80, using 32 (20100428/tbfadt-486) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X FACS address mismatch in FADT - 0x3F509F40 klog /0x000000003F509F80, using 32 (20110112/tbfadt-486) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X FACS address mismatch in FADT - 0x3F611E40 klog /0x000000003F611D40, using 32 (20100428/tbfadt-486) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X FACS address mismatch in FADT - 0x3F611E40 klog /0x000000003F611D40, using 32 (20110112/tbfadt-486) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X FACS address mismatch in FADT - 0x3F611E40 klog /0x000000003F611D40, using 32 (20110413/tbfadt-489) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X FACS address mismatch in FADT - 0x6FB75F40 klog /0x000000006FB75F80, using 32 (20110112/tbfadt-486) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X FACS address mismatch in FADT - 0x77603F40 klog /0x0000000077603F80, using 32 (20110112/tbfadt-486) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X FACS address mismatch in FADT - 0x77603F40 klog /0x0000000077603F80, using 32 (20110413/tbfadt-489) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X FACS address mismatch in FADT - 0x7762DF40 klog /0x000000007762DF80, using 32 (20110112/tbfadt-486) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X FACS address mismatch in FADT - 0x77630F40 klog /0x0000000077630F80, using 32 (20110112/tbfadt-486) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X FACS address mismatch in FADT - 0x7776BF40 klog /0x000000007776ED40, using 32 (20100428/tbfadt-486) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X FACS address mismatch in FADT - 0x7776BF40 klog /0x000000007776ED40, using 32 (20110112/tbfadt-486) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X FACS address mismatch in FADT - 0x78FE4E40 klog /0x0000000078FE4D40, using 32 (20110413/tbfadt-489) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X FACS address mismatch in FADT - 0x7A7E4E40 klog /0x000000007A7E4D40, using 32 (20110112/tbfadt-486) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X FACS address mismatch in FADT - 0x7BE20F40 klog /0x000000007BE20F80, using 32 (20110413/tbfadt-489) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X FACS address mismatch in FADT - 0x7D7E4E40 klog /0x000000007D7E4D40, using 32 (20110112/tbfadt-486) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X FACS address mismatch in FADT - 0x7D8C4F40 klog /0x000000007D8C5E40, using 32 (20110413/tbfadt-489) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X FACS address mismatch in FADT - 0x7F611E40 klog /0x000000007F611D40, using 32 (20110112/tbfadt-486) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X FACS address mismatch in FADT - 0x7FCEBF40 klog /0x000000007FCE7F40, using 32 (20110112/tbfadt-486) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X FACS address mismatch in FADT - 0x7FD5AF40 klog /0x000000007FD5FF40, using 32 (20110112/tbfadt-486) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X FACS address mismatch in FADT - 0xAAD87F40 klog /0x00000000AADA1D40, using 32 (20110112/tbfadt-486) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X FACS address mismatch in FADT - 0xAAD87F40 klog /0x00000000AADA1D40, using 32 (20110316/tbfadt-489) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X FACS address mismatch in FADT - 0xAAD87F40 klog /0x00000000AADA1D40, using 32 (20110413/tbfadt-489) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X FACS address mismatch in FADT - 0xAADB7F40 klog /0x00000000AADD1D40, using 32 (20100428/tbfadt-486) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X FACS address mismatch in FADT - 0xAADB7F40 klog /0x00000000AADD1D40, using 32 (20110112/tbfadt-486) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X FACS address mismatch in FADT - 0xAADB9F40 klog /0x00000000AADD3D40, using 32 (20110112/tbfadt-486) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X FACS address mismatch in FADT - 0xAAF2AF40 klog /0x00000000AAF2DD40, using 32 (20110112/tbfadt-486) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X FACS address mismatch in FADT - 0xAAFE4E40 klog /0x00000000AAFE4D40, using 32 (20110112/tbfadt-486) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X FACS address mismatch in FADT - 0xAB62DF40 klog /0x00000000AB62DF80, using 32 (20100428/tbfadt-486) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X FACS address mismatch in FADT - 0xAB62DF40 klog /0x00000000AB62DF80, using 32 (20110112/tbfadt-486) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X FACS address mismatch in FADT - 0xAFB77F40 klog /0x00000000AFB77F80, using 32 (20110112/tbfadt-486) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X FACS address mismatch in FADT - 0xB5F17E40 klog /0x00000000B5F17D40, using 32 (20100428/tbfadt-486) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X FACS address mismatch in FADT - 0xB5F1BE40 klog /0x00000000B5F1BD40, using 32 (20100428/tbfadt-486) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X FACS address mismatch in FADT - 0xB6D5AF40 klog /0x00000000B6D61D40, using 32 (20100428/tbfadt-486) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X FACS address mismatch in FADT - 0xB6DB9F40 klog /0x00000000B6DD3D40, using 32 (20110112/tbfadt-486) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X FACS address mismatch in FADT - 0xB762CF40 klog /0x00000000B762CF80, using 32 (20110112/tbfadt-486) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X FACS address mismatch in FADT - 0xB7B1CE40 klog /0x00000000B7B1CD40, using 32 (20110112/tbfadt-486) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X FACS address mismatch in FADT - 0xB7B1CE40 klog /0x00000000B7B1CD40, using 32 (20110316/tbfadt-489) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X FACS address mismatch in FADT - 0xB7B1CE40 klog /0x00000000B7B1CD40, using 32 (20110413/tbfadt-489) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X FACS address mismatch in FADT - 0xB8FE4E40 klog /0x00000000B8FE4D40, using 32 (20110112/tbfadt-486) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X FACS address mismatch in FADT - 0xBAD17F40 klog /0x00000000BAD31D40, using 32 (20110112/tbfadt-486) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X FACS address mismatch in FADT - 0xBAD87F40 klog /0x00000000BADA1D40, using 32 (20110112/tbfadt-486) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X FACS address mismatch in FADT - 0xBADABF40 klog /0x00000000BADAED40, using 32 (20100428/tbfadt-486) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X FACS address mismatch in FADT - 0xBADABF40 klog /0x00000000BADAED40, using 32 (20110112/tbfadt-486) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X FACS address mismatch in FADT - 0xBAF1CF40 klog /0x00000000BAF1FD40, using 32 (20110112/tbfadt-486) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X FACS address mismatch in FADT - 0xBAFE4E40 klog /0x00000000BAFE4D40, using 32 (20110112/tbfadt-486) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X FACS address mismatch in FADT - 0xBAFE5E40 klog /0x00000000BAFE5D40, using 32 (20110112/tbfadt-486) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X FACS address mismatch in FADT - 0xBB4D1F40 klog /0x00000000BB4DFD40, using 32 (20110112/tbfadt-486) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X FACS address mismatch in FADT - 0xBB583F40 klog /0x00000000BB59DD40, using 32 (20100428/tbfadt-486) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X FACS address mismatch in FADT - 0xBB583F40 klog /0x00000000BB59DD40, using 32 (20110112/tbfadt-486) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X FACS address mismatch in FADT - 0xBB5B3F40 klog /0x00000000BB5CDD40, using 32 (20100428/tbfadt-486) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X FACS address mismatch in FADT - 0xBB5B3F40 klog /0x00000000BB5CDD40, using 32 (20110112/tbfadt-486) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X FACS address mismatch in FADT - 0xBB5B3F40 klog /0x00000000BB5CDD40, using 32 (20110413/tbfadt-489) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X FACS address mismatch in FADT - 0xBB62CF40 klog /0x00000000BB62CF80, using 32 (20100428/tbfadt-486) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X FACS address mismatch in FADT - 0xBB62DF40 klog /0x00000000BB62DF80, using 32 (20100428/tbfadt-486) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X FACS address mismatch in FADT - 0xBB648F40 klog /0x00000000BB64BD40, using 32 (20110112/tbfadt-486) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X FACS address mismatch in FADT - 0xBB649F40 klog /0x00000000BB64CD40, using 32 (20110112/tbfadt-486) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X FACS address mismatch in FADT - 0xBB76BF40 klog /0x00000000BB76ED40, using 32 (20100428/tbfadt-486) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X FACS address mismatch in FADT - 0xBBE27F40 klog /0x00000000BBE27F80, using 32 (20110112/tbfadt-486) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X FACS address mismatch in FADT - 0xBBE27F40 klog /0x00000000BBE27F80, using 32 (20110413/tbfadt-489) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X FACS address mismatch in FADT - 0xBBE29F40 klog /0x00000000BBE29F80, using 32 (20110112/tbfadt-486) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X FACS address mismatch in FADT - 0xBDB65F40 klog /0x00000000BDB6BE40, using 32 (20100428/tbfadt-486) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X FACS address mismatch in FADT - 0xBDF17E40 klog /0x00000000BDF17D40, using 32 (20110112/tbfadt-486) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X FACS address mismatch in FADT - 0xBDF18E40 klog /0x00000000BDF18D40, using 32 (20100428/tbfadt-486) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X FACS address mismatch in FADT - 0xBDF19E40 klog /0x00000000BDF19D40, using 32 (20100428/tbfadt-486) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X FACS address mismatch in FADT - 0xBDF19E40 klog /0x00000000BDF19D40, using 32 (20101013/tbfadt-486) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X FACS address mismatch in FADT - 0xBDF19E40 klog /0x00000000BDF19D40, using 32 (20110112/tbfadt-486) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X FACS address mismatch in FADT - 0xBDF1AE40 klog /0x00000000BDF1AD40, using 32 (20100428/tbfadt-486) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X FACS address mismatch in FADT - 0xBE97CF40 klog /0x00000000BE996D40, using 32 (20110112/tbfadt-486) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X FACS address mismatch in FADT - 0xBEDB7F40 klog /0x00000000BEDD1D40, using 32 (20110112/tbfadt-486) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X FACS address mismatch in FADT - 0xBEDB8F40 klog /0x00000000BEDD1D40, using 32 (20100428/tbfadt-486) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X FACS address mismatch in FADT - 0xBEDB8F40 klog /0x00000000BEDD1D40, using 32 (20110112/tbfadt-486) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X FACS address mismatch in FADT - 0xBEDB9F40 klog /0x00000000BEDD3D40, using 32 (20110112/tbfadt-486) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X FACS address mismatch in FADT - 0xBF4D1F40 klog /0x00000000BF4DFD40, using 32 (20110112/tbfadt-486) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X FACS address mismatch in FADT - 0xBF62CF40 klog /0x00000000BF62CF80, using 32 (20110112/tbfadt-486) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X FACS address mismatch in FADT - 0xBF62DF40 klog /0x00000000BF62DF80, using 32 (20100428/tbfadt-486) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X FACS address mismatch in FADT - 0xBF654F40 klog /0x00000000BF662D40, using 32 (20110112/tbfadt-486) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X FACS address mismatch in FADT - 0xBF7E4E40 klog /0x00000000BF7E4D40, using 32 (20110112/tbfadt-486) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X FACS address mismatch in FADT - 0xBFA4CF40 klog /0x00000000BFA51F40, using 32 (20110112/tbfadt-486) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X FACS address mismatch in FADT - 0xBFA4CF40 klog /0x00000000BFA51F40, using 32 (20110413/tbfadt-489) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X FACS address mismatch in FADT - 0xBFE17E40 klog /0x00000000BFE17D40, using 32 (20110112/tbfadt-486) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X FACS address mismatch in FADT - 0xBFE21F40 klog /0x00000000BFE21E40, using 32 (20110112/tbfadt-486) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X FACS address mismatch in FADT - 0xC9E58F40 klog /0x00000000C9E6ED40, using 32 (20110112/tbfadt-486) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X FACS address mismatch in FADT - 0xCAB39F40 klog /0x00000000CAB3CD40, using 32 (20100428/tbfadt-486) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X FACS address mismatch in FADT - 0xCAFE4E40 klog /0x00000000CAFE4D40, using 32 (20110112/tbfadt-486) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X FACS address mismatch in FADT - 0xCAFE4E40 klog /0x00000000CAFE4D40, using 32 (20110413/tbfadt-489) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X FACS address mismatch in FADT - 0xCAFE5E40 klog /0x00000000CAFE5D40, using 32 (20110112/tbfadt-486) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X FACS address mismatch in FADT - 0xCB61DF40 klog /0x00000000CB61DE40, using 32 (20100428/tbfadt-486) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X FACS address mismatch in FADT - 0xCB61DF40 klog /0x00000000CB61DE40, using 32 (20110112/tbfadt-486) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X FACS address mismatch in FADT - 0xCBE4CF40 klog /0x00000000CBE51F40, using 32 (20100428/tbfadt-486) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X FACS address mismatch in FADT - 0xCBE4CF40 klog /0x00000000CBE51F40, using 32 (20110112/tbfadt-486) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X FACS address mismatch in FADT - 0xCBF6BF40 klog /0x00000000CBF6ED40, using 32 (20110112/tbfadt-486) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X FACS address mismatch in FADT - 0xCEF27F40 klog /0x00000000CEF2AD40, using 32 (20100428/tbfadt-486) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X FACS address mismatch in FADT - 0xCEF27F40 klog /0x00000000CEF2AD40, using 32 (20110112/tbfadt-486) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X FACS address mismatch in FADT - 0xCEF27F40 klog /0x00000000CEF2AD40, using 32 (20110413/tbfadt-489) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X FACS address mismatch in FADT - 0xCEF28F40 klog /0x00000000CEF2BD40, using 32 (20100428/tbfadt-486) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X FACS address mismatch in FADT - 0xCEF28F40 klog /0x00000000CEF2BD40, using 32 (20110112/tbfadt-486) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X FACS address mismatch in FADT - 0xCEF2BF40 klog /0x00000000CEF2ED40, using 32 (20100428/tbfadt-486) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X FACS address mismatch in FADT - 0xCEF2BF40 klog /0x00000000CEF2ED40, using 32 (20110413/tbfadt-489) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X FACS address mismatch in FADT - 0xCF36BF40 klog /0x00000000CF36ED40, using 32 (20100702/tbfadt-486) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X FACS address mismatch in FADT - 0xCF36BF40 klog /0x00000000CF36ED40, using 32 (20101013/tbfadt-486) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X FACS address mismatch in FADT - 0xCF76BF40 klog /0x00000000CF76ED40, using 32 (20100428/tbfadt-486) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X FACS address mismatch in FADT - 0xCF76BF40 klog /0x00000000CF76ED40, using 32 (20110112/tbfadt-486) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X FACS address mismatch in FADT - 0xCF7E4E40 klog /0x00000000CF7E4D40, using 32 (20100428/tbfadt-486) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X FACS address mismatch in FADT - 0xCF7E4E40 klog /0x00000000CF7E4D40, using 32 (20110112/tbfadt-486) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X FACS address mismatch in FADT - 0xCF7E4E40 klog /0x00000000CF7E4D40, using 32 (20110413/tbfadt-489) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X FACS address mismatch in FADT - 0xCFBFAF40 klog /0x00000000CFBF6F40, using 32 (20100428/tbfadt-486) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X FACS address mismatch in FADT - 0xCFD56F40 klog /0x00000000CFD52F40, using 32 (20110112/tbfadt-486) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X FACS address mismatch in FADT - 0xCFD5FF40 klog /0x00000000CFD65E40, using 32 (20110413/tbfadt-489) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X FACS address mismatch in FADT - 0xD2F2DF40 klog /0x00000000D2F30D40, using 32 (20110112/tbfadt-486) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X FACS address mismatch in FADT - 0xDB36BF40 klog /0x00000000DB36ED40, using 32 (20100428/tbfadt-486) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X FACS address mismatch in FADT - 0xDB36BF40 klog /0x00000000DB36ED40, using 32 (20110112/tbfadt-486) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X FACS address mismatch in FADT - 0xDB76BF40 klog /0x00000000DB76ED40, using 32 (20100428/tbfadt-486) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X FACS address mismatch in FADT - 0xDB76BF40 klog /0x00000000DB76ED40, using 32 (20110112/tbfadt-486) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X FACS address mismatch in FADT - 0xDB76BF40 klog /0x00000000DB76ED40, using 32 (20110413/tbfadt-489) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X FACS address mismatch in FADT - 0xDEB39F40 klog /0x00000000DEB3CD40, using 32 (20110112/tbfadt-486) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X FACS address mismatch in FADT - 0xDEB3AF40 klog /0x00000000DEB3DD40, using 32 (20110112/tbfadt-486) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X FACS address mismatch in FADT - 0xDEEBAF40 klog /0x00000000DEEBDD40, using 32 (20110413/tbfadt-489) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X FACS address mismatch in FADT - 0xDEF2DF40 klog /0x00000000DEF30D40, using 32 (20110112/tbfadt-486) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X FACS address mismatch in FADT - 0xDF64BF40 klog /0x00000000DF64ED40, using 32 (20110112/tbfadt-486) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X FACS address mismatch in FADT - 3762DF40 klog /000000003762DF80, using 32 (20090903/tbfadt-486) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X FACS address mismatch in FADT - 3F611E40 klog /000000003F611D40, using 32 (20090903/tbfadt-486) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X FACS address mismatch in FADT - 7776BF40 klog /000000007776ED40, using 32 (20090903/tbfadt-486) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X FACS address mismatch in FADT - 7DB61F40 klog /000000007DB66F40, using 32 (20090903/tbfadt-486) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X FACS address mismatch in FADT - 7F3ECF40 klog /000000007F3E8F40, using 32 (20090903/tbfadt-486) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X FACS address mismatch in FADT - 7F611E40 klog /000000007F611D40, using 32 (20090903/tbfadt-486) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X FACS address mismatch in FADT - 9DCC4F40 klog /000000009DCC5E40, using 32 (20090903/tbfadt-486) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X FACS address mismatch in FADT - AFB75F40 klog /00000000AFB75F80, using 32 (20090903/tbfadt-486) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X FACS address mismatch in FADT - B7B1CE40 klog /00000000B7B1CD40, using 32 (20090903/tbfadt-486) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X FACS address mismatch in FADT - B7B1CE40 klog /00000000B7B1CD40, using 32 (20100121/tbfadt-486) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X FACS address mismatch in FADT - BADABF40 klog /00000000BADAED40, using 32 (20090903/tbfadt-486) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X FACS address mismatch in FADT - BAF2DF40 klog /00000000BAF30D40, using 32 (20090903/tbfadt-486) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X FACS address mismatch in FADT - BB62DF40 klog /00000000BB62DF80, using 32 (20090903/tbfadt-486) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X FACS address mismatch in FADT - BB76BF40 klog /00000000BB76ED40, using 32 (20090903/tbfadt-486) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X FACS address mismatch in FADT - BBE28E40 klog /00000000BBE28D40, using 32 (20090903/tbfadt-486) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X FACS address mismatch in FADT - BDB5BF40 klog /00000000BDB60F40, using 32 (20090903/tbfadt-486) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X FACS address mismatch in FADT - BDB5FF40 klog /00000000BDB64F40, using 32 20090521 tbfadt-487 klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X FACS address mismatch in FADT - BDF17E40 klog /00000000BDF17D40, using 32 (20090903/tbfadt-486) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X FACS address mismatch in FADT - BEDB7F40 klog /00000000BEDD1D40, using 32 (20090903/tbfadt-486) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X FACS address mismatch in FADT - BF62CF40 klog /00000000BF62CF80, using 32 (20090903/tbfadt-486) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X FACS address mismatch in FADT - BF76BF40 klog /00000000BF76ED40, using 32 (20090903/tbfadt-486) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X FACS address mismatch in FADT - CBE4AF40 klog /00000000CBE4FF40, using 32 (20090903/tbfadt-486) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X FACS address mismatch in FADT - CBF6BF40 klog /00000000CBF6ED40, using 32 (20090903/tbfadt-486) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X FACS address mismatch in FADT - CEF28F40 klog /00000000CEF2BD40, using 32 (20090903/tbfadt-486) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X FACS address mismatch in FADT - CEF2CF40 klog /00000000CEF2FD40, using 32 (20090903/tbfadt-486) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X FACS address mismatch in FADT - D2F2DF40 klog /00000000D2F30D40, using 32 (20090903/tbfadt-486) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X FACS address mismatch in FADT - DADC1F40 klog /00000000DADD5D40, using 32 (20090903/tbfadt-486) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X FACS address mismatch in FADT - DB36BF40 klog /00000000DB36ED40, using 32 (20090903/tbfadt-486) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X FACS address mismatch in FADT - DB76BF40 klog /00000000DB76ED40, using 32 (20090903/tbfadt-486) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X FACS address mismatch in FADT - DEEBAF40 klog /00000000DEEBDD40, using 32 (20090903/tbfadt-486) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X FACS address mismatch in FADT - DEF2DF40 klog /00000000DEF30D40, using 32 (20090903/tbfadt-486) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X length mismatch in Gpe1Block: 0/32 20090521 klog tbfadt-527 klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X length mismatch in Gpe1Block: 0/32 (20090903 klog /tbfadt-526) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X length mismatch in Gpe1Block: 0/32 (20100428 klog /tbfadt-526) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X length mismatch in Gpe1Block: 0/32 (20101013 klog /tbfadt-526) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X length mismatch in Gpe1Block: 0/32 (20110112 klog /tbfadt-526) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpi32Bit64BitAddressMismatchInFadt: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: 32 klog /64X length mismatch in Gpe1Block: 0/32 (20110413 klog /tbfadt-529) klog klog ADVICE: The FADT table contains Generic Address Structure klog that has a mismatch between the 32 bit and 64 bit versions klog of an address. This should be fixed so there are no klog mismatches. klog klog FAILED [HIGH] KlogAcpiBadAmlCode: Test 1, HIGH Kernel klog message: [ 0.000000] ACPI Warning: BIOS XSDT has NULL klog entry, using RSDT (20110112/tbutils-663) klog klog ADVICE: ACPI AML intepreter has found some non-conforming klog AML code. This should be investigated and fixed. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.000000] ACPI Warning: Incorrect klog checksum in table [APIC] - 0x3E, should be 0x41 (20110112 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.000000] ACPI Warning: Incorrect klog checksum in table [APIC] - 0x65, should be 0x68 (20110112 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.000000] ACPI Warning: Incorrect klog checksum in table [APIC] - 0x69, should be 0x6C (20110112 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.000000] ACPI Warning: Incorrect klog checksum in table [APIC] - 0x69, should be 0x6C (20110413 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.000000] ACPI Warning: Incorrect klog checksum in table [APIC] - 0x9E, should be 0xA1 (20110112 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.000000] ACPI Warning: Incorrect klog checksum in table [APIC] - 0xDF, should be 0xE2 (20110112 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.000000] ACPI Warning: Incorrect klog checksum in table [APIC] - 0xE4, should be 0xE7 (20110112 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.000000] ACPI Warning: Incorrect klog checksum in table [XSDT] - 0x89, should be 0x7D (20110413 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [HIGH] KlogAcpiFadtInvalidLength: Test 1, HIGH klog Kernel message: [ 0.000000] ACPI Warning: Invalid length klog for Pm1aControlBlock: 32, using default 16 (20090903 klog /tbfadt-607) klog klog ADVICE: This item in the FADT is the incorrect length. klog Should be corrected. klog klog FAILED [HIGH] KlogAcpiFadtInvalidLength: Test 1, HIGH klog Kernel message: [ 0.000000] ACPI Warning: Invalid length klog for Pm1aControlBlock: 32, using default 16 (20100428 klog /tbfadt-607) klog klog ADVICE: This item in the FADT is the incorrect length. klog Should be corrected. klog klog FAILED [HIGH] KlogAcpiFadtInvalidLength: Test 1, HIGH klog Kernel message: [ 0.000000] ACPI Warning: Invalid length klog for Pm1aControlBlock: 32, using default 16 (20110112 klog /tbfadt-607) klog klog ADVICE: This item in the FADT is the incorrect length. klog Should be corrected. klog klog FAILED [HIGH] KlogAcpiFadtInvalidLength: Test 1, HIGH klog Kernel message: [ 0.000000] ACPI Warning: Invalid length klog for Pm1aControlBlock: 32, using default 16 (20110413 klog /tbfadt-610) klog klog ADVICE: This item in the FADT is the incorrect length. klog Should be corrected. klog klog FAILED [HIGH] KlogAcpiFadtInvalidLength: Test 1, HIGH klog Kernel message: [ 0.000000] ACPI Warning: Invalid length klog for Pm1bControlBlock: 32, using default 16 (20090903 klog /tbfadt-607) klog klog ADVICE: This item in the FADT is the incorrect length. klog Should be corrected. klog klog FAILED [HIGH] KlogAcpiFadtInvalidLength: Test 1, HIGH klog Kernel message: [ 0.000000] ACPI Warning: Invalid length klog for Pm2ControlBlock: 0, using default 8 (20090903 klog /tbfadt-607) klog klog ADVICE: This item in the FADT is the incorrect length. klog Should be corrected. klog klog FAILED [HIGH] KlogAcpiFadtInvalidLength: Test 1, HIGH klog Kernel message: [ 0.000000] ACPI Warning: Invalid length klog for Pm2ControlBlock: 0, using default 8 (20100428 klog /tbfadt-607) klog klog ADVICE: This item in the FADT is the incorrect length. klog Should be corrected. klog klog FAILED [HIGH] KlogAcpiFadtInvalidLength: Test 1, HIGH klog Kernel message: [ 0.000000] ACPI Warning: Invalid length klog for Pm2ControlBlock: 0, using default 8 (20110112 klog /tbfadt-607) klog klog ADVICE: This item in the FADT is the incorrect length. klog Should be corrected. klog klog FAILED [HIGH] KlogAcpiFadtInvalidLength: Test 1, HIGH klog Kernel message: [ 0.000000] ACPI Warning: Invalid length klog for Pm2ControlBlock: 16, using default 8 (20100428 klog /tbfadt-607) klog klog ADVICE: This item in the FADT is the incorrect length. klog Should be corrected. klog klog FAILED [HIGH] KlogAcpiFadtInvalidLength: Test 1, HIGH klog Kernel message: [ 0.000000] ACPI Warning: Invalid length klog for Pm2ControlBlock: 16, using default 8 (20110112 klog /tbfadt-607) klog klog ADVICE: This item in the FADT is the incorrect length. klog Should be corrected. klog klog FAILED [HIGH] KlogAcpiFadtInvalidLength: Test 1, HIGH klog Kernel message: [ 0.000000] ACPI Warning: Invalid length klog for Pm2ControlBlock: 16, using default 8 (20110413 klog /tbfadt-610) klog klog ADVICE: This item in the FADT is the incorrect length. klog Should be corrected. klog klog FAILED [HIGH] KlogAcpiFadtInvalidLength: Test 1, HIGH klog Kernel message: [ 0.000000] ACPI Warning: Invalid length klog for Pm2ControlBlock: 32, using default 8 (20090903 klog /tbfadt-607) klog klog ADVICE: This item in the FADT is the incorrect length. klog Should be corrected. klog klog FAILED [HIGH] KlogAcpiFadtInvalidLength: Test 1, HIGH klog Kernel message: [ 0.000000] ACPI Warning: Invalid length klog for Pm2ControlBlock: 32, using default 8 (20110112 klog /tbfadt-607) klog klog ADVICE: This item in the FADT is the incorrect length. klog Should be corrected. klog klog FAILED [HIGH] KlogAcpiFadtInvalidLength: Test 1, HIGH klog Kernel message: [ 0.000000] ACPI Warning: Invalid length klog for PmTimerBlock: 24, using default 32 (20100428 klog /tbfadt-607) klog klog ADVICE: This item in the FADT is the incorrect length. klog Should be corrected. klog klog FAILED [HIGH] KlogAcpiOptionalFieldZeroAddressOrLength: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: klog Optional field Gpe1Block has zero address or length: klog 000000000000102C/0 20090521 tbfadt-558 klog klog ADVICE: An ACPI table contains Generic Address Structure klog that has an address that is incorrectly set to zero, or a klog zero length. This needs to be fixed. klog klog FAILED [HIGH] KlogAcpiOptionalFieldZeroAddressOrLength: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: klog Optional field Gpe1Block has zero address or length: klog 000000000000102C/0 (20090903/tbfadt-557) klog klog ADVICE: An ACPI table contains Generic Address Structure klog that has an address that is incorrectly set to zero, or a klog zero length. This needs to be fixed. klog klog FAILED [HIGH] KlogAcpiOptionalFieldZeroAddressOrLength: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: klog Optional field Gpe1Block has zero address or length: klog 000000000000802C/0 (20090903/tbfadt-557) klog klog ADVICE: An ACPI table contains Generic Address Structure klog that has an address that is incorrectly set to zero, or a klog zero length. This needs to be fixed. klog klog FAILED [HIGH] KlogAcpiOptionalFieldZeroAddressOrLength: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: klog Optional field Gpe1Block has zero address or length: klog 0x0000000000000000/0x4 (20110413/tbfadt-560) klog klog ADVICE: An ACPI table contains Generic Address Structure klog that has an address that is incorrectly set to zero, or a klog zero length. This needs to be fixed. klog klog FAILED [HIGH] KlogAcpiOptionalFieldZeroAddressOrLength: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: klog Optional field Gpe1Block has zero address or length: klog 0x000000000000102C/0x0 (20100428/tbfadt-557) klog klog ADVICE: An ACPI table contains Generic Address Structure klog that has an address that is incorrectly set to zero, or a klog zero length. This needs to be fixed. klog klog FAILED [HIGH] KlogAcpiOptionalFieldZeroAddressOrLength: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: klog Optional field Gpe1Block has zero address or length: klog 0x000000000000102C/0x0 (20101013/tbfadt-557) klog klog ADVICE: An ACPI table contains Generic Address Structure klog that has an address that is incorrectly set to zero, or a klog zero length. This needs to be fixed. klog klog FAILED [HIGH] KlogAcpiOptionalFieldZeroAddressOrLength: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: klog Optional field Gpe1Block has zero address or length: klog 0x000000000000102C/0x0 (20110112/tbfadt-557) klog klog ADVICE: An ACPI table contains Generic Address Structure klog that has an address that is incorrectly set to zero, or a klog zero length. This needs to be fixed. klog klog FAILED [HIGH] KlogAcpiOptionalFieldZeroAddressOrLength: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: klog Optional field Gpe1Block has zero address or length: klog 0x000000000000102C/0x0 (20110413/tbfadt-560) klog klog ADVICE: An ACPI table contains Generic Address Structure klog that has an address that is incorrectly set to zero, or a klog zero length. This needs to be fixed. klog klog FAILED [HIGH] KlogAcpiOptionalFieldZeroAddressOrLength: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: klog Optional field Gpe1Block has zero address or length: klog 0x00000000000044A0/0x0 (20100428/tbfadt-557) klog klog ADVICE: An ACPI table contains Generic Address Structure klog that has an address that is incorrectly set to zero, or a klog zero length. This needs to be fixed. klog klog FAILED [HIGH] KlogAcpiOptionalFieldZeroAddressOrLength: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: klog Optional field Pm2ControlBlock has zero address or length: klog 0000000000000000/1 20090521 tbfadt-558 klog klog ADVICE: An ACPI table contains Generic Address Structure klog that has an address that is incorrectly set to zero, or a klog zero length. This needs to be fixed. klog klog FAILED [HIGH] KlogAcpiOptionalFieldZeroAddressOrLength: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: klog Optional field Pm2ControlBlock has zero address or length: klog 0000000000000000/1 (20090903/tbfadt-557) klog klog ADVICE: An ACPI table contains Generic Address Structure klog that has an address that is incorrectly set to zero, or a klog zero length. This needs to be fixed. klog klog FAILED [HIGH] KlogAcpiOptionalFieldZeroAddressOrLength: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: klog Optional field Pm2ControlBlock has zero address or length: klog 0000000000000050/0 (20090903/tbfadt-557) klog klog ADVICE: An ACPI table contains Generic Address Structure klog that has an address that is incorrectly set to zero, or a klog zero length. This needs to be fixed. klog klog FAILED [HIGH] KlogAcpiOptionalFieldZeroAddressOrLength: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: klog Optional field Pm2ControlBlock has zero address or length: klog 0x0000000000000000/0x1 (20100428/tbfadt-557) klog klog ADVICE: An ACPI table contains Generic Address Structure klog that has an address that is incorrectly set to zero, or a klog zero length. This needs to be fixed. klog klog FAILED [HIGH] KlogAcpiOptionalFieldZeroAddressOrLength: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: klog Optional field Pm2ControlBlock has zero address or length: klog 0x0000000000000000/0x1 (20101013/tbfadt-557) klog klog ADVICE: An ACPI table contains Generic Address Structure klog that has an address that is incorrectly set to zero, or a klog zero length. This needs to be fixed. klog klog FAILED [HIGH] KlogAcpiOptionalFieldZeroAddressOrLength: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: klog Optional field Pm2ControlBlock has zero address or length: klog 0x0000000000000000/0x1 (20110112/tbfadt-557) klog klog ADVICE: An ACPI table contains Generic Address Structure klog that has an address that is incorrectly set to zero, or a klog zero length. This needs to be fixed. klog klog FAILED [HIGH] KlogAcpiOptionalFieldZeroAddressOrLength: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: klog Optional field Pm2ControlBlock has zero address or length: klog 0x0000000000000000/0x1 (20110413/tbfadt-560) klog klog ADVICE: An ACPI table contains Generic Address Structure klog that has an address that is incorrectly set to zero, or a klog zero length. This needs to be fixed. klog klog FAILED [HIGH] KlogAcpiOptionalFieldZeroAddressOrLength: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: klog Optional field Pm2ControlBlock has zero address or length: klog 0x0000000000000450/0x0 (20100428/tbfadt-557) klog klog ADVICE: An ACPI table contains Generic Address Structure klog that has an address that is incorrectly set to zero, or a klog zero length. This needs to be fixed. klog klog FAILED [HIGH] KlogAcpiOptionalFieldZeroAddressOrLength: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: klog Optional field Pm2ControlBlock has zero address or length: klog 0x0000000000000450/0x0 (20110112/tbfadt-557) klog klog ADVICE: An ACPI table contains Generic Address Structure klog that has an address that is incorrectly set to zero, or a klog zero length. This needs to be fixed. klog klog FAILED [HIGH] KlogAcpiOptionalFieldZeroAddressOrLength: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: klog Optional field Pm2ControlBlock has zero address or length: klog 0x0000000000000814/0x0 (20100428/tbfadt-557) klog klog ADVICE: An ACPI table contains Generic Address Structure klog that has an address that is incorrectly set to zero, or a klog zero length. This needs to be fixed. klog klog FAILED [HIGH] KlogAcpiOptionalFieldZeroAddressOrLength: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: klog Optional field Pm2ControlBlock has zero address or length: klog 0x0000000000000820/0x0 (20100428/tbfadt-557) klog klog ADVICE: An ACPI table contains Generic Address Structure klog that has an address that is incorrectly set to zero, or a klog zero length. This needs to be fixed. klog klog FAILED [HIGH] KlogAcpiOptionalFieldZeroAddressOrLength: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning: klog Optional field Pm2ControlBlock has zero address or length: klog 0x0000000000000820/0x0 (20110112/tbfadt-557) klog klog ADVICE: An ACPI table contains Generic Address Structure klog that has an address that is incorrectly set to zero, or a klog zero length. This needs to be fixed. klog klog FAILED [HIGH] KlogAcpiOptionalFieldZeroAddressOrLength: klog Test 1, HIGH Kernel message: [ 0.000000] ACPI Warning klog (tbfadt-0460): Optional field "Gpe1Block" has zero address klog or length: 000000000000102C/0 [20080926] klog klog ADVICE: An ACPI table contains Generic Address Structure klog that has an address that is incorrectly set to zero, or a klog zero length. This needs to be fixed. klog klog FAILED [MEDIUM] KlogBiosMtrrIncorrectMask: Test 1, MEDIUM klog Kernel message: [ 0.000000] mtrr: your BIOS has configured klog an incorrect mask, fixing it. klog klog ADVICE: The Memory Type Range Registers (MTRRs) which klog define memory caching policy are misconfigued by the BIOS. klog In this case, the mask is incorrectly set and the kernel klog has detected this and worked around the firmware bug. klog klog FAILED [CRITICAL] KlogBiosCpuMtrrMisconfigured: Test 1, klog CRITICAL Kernel message: [ 0.000000] WARNING: BIOS bug: klog CPU MTRRs don't cover all of memory, losing 1408MB of RAM. klog klog ADVICE: The Memory Type Range Registers (MTRRs) which klog define memory caching policy are misconfigued by the BIOS klog and don't appear to cover all available physical memory. klog The kernel has detected this and has reduced the amount of klog memory available to be safe. Either check that the BIOS klog memory caching options are set correctly or contact your klog BIOS vendor to get this fixed. klog klog FAILED [CRITICAL] KlogBiosCpuMtrrMisconfigured: Test 1, klog CRITICAL Kernel message: [ 0.000000] WARNING: BIOS bug: klog CPU MTRRs don't cover all of memory, losing 4MB of RAM. klog klog ADVICE: The Memory Type Range Registers (MTRRs) which klog define memory caching policy are misconfigued by the BIOS klog and don't appear to cover all available physical memory. klog The kernel has detected this and has reduced the amount of klog memory available to be safe. Either check that the BIOS klog memory caching options are set correctly or contact your klog BIOS vendor to get this fixed. klog klog FAILED [HIGH] KlogAcpiUnknownAmlOpcode: Test 1, HIGH klog Kernel message: [ 0.022719] ACPI Error: Found unknown klog opcode 0xFD at AML address f7ffe14c offset 0xE8, ignoring klog (20110112/psloop-141) klog klog ADVICE: ACPI execution run time error: The ACPI klog interpreter has reached an opcode that is unknown, this klog normally is a bug in the underlying AML code either klog because of badly written AML code or the compiler has klog produced code that is incorrect or the ACPI interpreter klog does not support this valid opcode. klog klog FAILED [CRITICAL] KlogAcpiDetectedUnsupportedOpCode: Test klog 1, CRITICAL Kernel message: [ 0.025446] ACPI Warning: klog Detected an unsupported executable opcode at module-level: klog [0x007B] at table offset 0x00BE (20110112/psloop-526) klog klog ADVICE: An illegal AML opcode has been found and is klog ignored. This indicates either badly compiled code or klog opcode corruption in the DSDT or SSDT tables or a bug in klog the ACPI execution engine. Recommend disassembing using klog iasl to find any offending code. klog klog FAILED [CRITICAL] KlogAcpiDetectedUnsupportedOpCode: Test klog 1, CRITICAL Kernel message: [ 0.025463] ACPI Warning: klog Detected an unsupported executable opcode at module-level: klog [0x007B] at table offset 0x00C3 (20110112/psloop-526) klog klog ADVICE: An illegal AML opcode has been found and is klog ignored. This indicates either badly compiled code or klog opcode corruption in the DSDT or SSDT tables or a bug in klog the ACPI execution engine. Recommend disassembing using klog iasl to find any offending code. klog klog FAILED [HIGH] KlogAcpiObjectAlreadyExists: Test 1, HIGH klog Kernel message: [ 0.034090] ACPI Error: Method parse klog /execution failed [_SB_.PCI0._OSC] (Node ee025630), klog AE_ALREADY_EXISTS (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiFirmwareError: Test 1, HIGH Kernel klog message: [ 0.040119] [Firmware Bug]: the BIOS has klog corrupted hw-PMU resources (MSR 186 is 400000) klog klog ADVICE: The kernel has detected a Firmware bug in the BIOS klog or ACPI which needs investigating and fixing. klog klog FAILED [CRITICAL] KlogAcpiDetectedUnsupportedOpCode: Test klog 1, CRITICAL Kernel message: [ 0.042222] ACPI Warning: klog Detected an unsupported executable opcode at module-level: klog [0x0070] at table offset 0x2366 (20100121/psloop-526) klog klog ADVICE: An illegal AML opcode has been found and is klog ignored. This indicates either badly compiled code or klog opcode corruption in the DSDT or SSDT tables or a bug in klog the ACPI execution engine. Recommend disassembing using klog iasl to find any offending code. klog klog FAILED [CRITICAL] KlogAcpiDetectedUnsupportedOpCode: Test klog 1, CRITICAL Kernel message: [ 0.042240] ACPI Warning: klog Detected an unsupported executable opcode at module-level: klog [0x0070] at table offset 0x006C (20090903/psloop-522) klog klog ADVICE: An illegal AML opcode has been found and is klog ignored. This indicates either badly compiled code or klog opcode corruption in the DSDT or SSDT tables or a bug in klog the ACPI execution engine. Recommend disassembing using klog iasl to find any offending code. klog klog FAILED [CRITICAL] KlogAcpiDetectedUnsupportedOpCode: Test klog 1, CRITICAL Kernel message: [ 0.042253] ACPI Warning: klog Detected an unsupported executable opcode at module-level: klog [0x0070] at table offset 0x006F (20090903/psloop-522) klog klog ADVICE: An illegal AML opcode has been found and is klog ignored. This indicates either badly compiled code or klog opcode corruption in the DSDT or SSDT tables or a bug in klog the ACPI execution engine. Recommend disassembing using klog iasl to find any offending code. klog klog FAILED [CRITICAL] KlogAcpiDetectedUnsupportedOpCode: Test klog 1, CRITICAL Kernel message: [ 0.042265] ACPI Warning: klog Detected an unsupported executable opcode at module-level: klog [0x0070] at table offset 0x0070 (20090903/psloop-522) klog klog ADVICE: An illegal AML opcode has been found and is klog ignored. This indicates either badly compiled code or klog opcode corruption in the DSDT or SSDT tables or a bug in klog the ACPI execution engine. Recommend disassembing using klog iasl to find any offending code. klog klog FAILED [CRITICAL] KlogAcpiDetectedUnsupportedOpCode: Test klog 1, CRITICAL Kernel message: [ 0.042279] ACPI Warning: klog Detected an unsupported executable opcode at module-level: klog [0x0070] at table offset 0x0077 (20090903/psloop-522) klog klog ADVICE: An illegal AML opcode has been found and is klog ignored. This indicates either badly compiled code or klog opcode corruption in the DSDT or SSDT tables or a bug in klog the ACPI execution engine. Recommend disassembing using klog iasl to find any offending code. klog klog FAILED [CRITICAL] KlogAcpiDetectedUnsupportedOpCode: Test klog 1, CRITICAL Kernel message: [ 0.042291] ACPI Warning: klog Detected an unsupported executable opcode at module-level: klog [0x0070] at table offset 0x007C (20090903/psloop-522) klog klog ADVICE: An illegal AML opcode has been found and is klog ignored. This indicates either badly compiled code or klog opcode corruption in the DSDT or SSDT tables or a bug in klog the ACPI execution engine. Recommend disassembing using klog iasl to find any offending code. klog klog FAILED [CRITICAL] KlogAcpiDetectedUnsupportedOpCode: Test klog 1, CRITICAL Kernel message: [ 0.042302] ACPI Warning: klog Detected an unsupported executable opcode at module-level: klog [0x007B] at table offset 0x007D (20090903/psloop-522) klog klog ADVICE: An illegal AML opcode has been found and is klog ignored. This indicates either badly compiled code or klog opcode corruption in the DSDT or SSDT tables or a bug in klog the ACPI execution engine. Recommend disassembing using klog iasl to find any offending code. klog klog FAILED [CRITICAL] KlogAcpiDetectedUnsupportedOpCode: Test klog 1, CRITICAL Kernel message: [ 0.042311] ACPI Warning: klog Detected an unsupported executable opcode at module-level: klog [0x007B] at table offset 0x007F (20090903/psloop-522) klog klog ADVICE: An illegal AML opcode has been found and is klog ignored. This indicates either badly compiled code or klog opcode corruption in the DSDT or SSDT tables or a bug in klog the ACPI execution engine. Recommend disassembing using klog iasl to find any offending code. klog klog FAILED [CRITICAL] KlogAcpiDetectedUnsupportedOpCode: Test klog 1, CRITICAL Kernel message: [ 0.042322] ACPI Warning: klog Detected an unsupported executable opcode at module-level: klog [0x007B] at table offset 0x0080 (20090903/psloop-522) klog klog ADVICE: An illegal AML opcode has been found and is klog ignored. This indicates either badly compiled code or klog opcode corruption in the DSDT or SSDT tables or a bug in klog the ACPI execution engine. Recommend disassembing using klog iasl to find any offending code. klog klog FAILED [CRITICAL] KlogAcpiDetectedUnsupportedOpCode: Test klog 1, CRITICAL Kernel message: [ 0.044066] ACPI Warning: klog Detected an unsupported executable opcode at module-level: klog [0x0070] at table offset 0x678F (20100428/psloop-526) klog klog ADVICE: An illegal AML opcode has been found and is klog ignored. This indicates either badly compiled code or klog opcode corruption in the DSDT or SSDT tables or a bug in klog the ACPI execution engine. Recommend disassembing using klog iasl to find any offending code. klog klog FAILED [HIGH] KlogAcpiParameterCountMistmatch: Test 1, klog HIGH Kernel message: [ 0.045570] ACPI Warning: For klog _SB_.PCI0.LPCB.H_EC._GLK: Parameter count mismatch - ASL klog declared 1, ACPI requires 0 (20110112/nspredef-352) klog klog ADVICE: The ACPI Method was executing with a different klog number of parameters than the Method expected. This should klog be fixed. klog klog FAILED [HIGH] KlogAcpiPackageListLargerThanExpected: Test klog 1, HIGH Kernel message: [ 0.050847] ACPI Warning: Package klog List length (0x10) larger than NumElements count (0x8), klog truncated klog klog ADVICE: A Method has returned a Package List that was klog larger than expected. klog klog FAILED [HIGH] KlogAcpiPackageListLargerThanExpected: Test klog 1, HIGH Kernel message: [ 0.053909] ACPI Warning: Package klog List length (0x10) larger than NumElements count (0x6), klog truncated klog klog ADVICE: A Method has returned a Package List that was klog larger than expected. klog klog FAILED [HIGH] KlogAcpiDsdtCorruptOrReplaced: Test 1, HIGH klog Kernel message: [ 0.074070] ACPI Error: The DSDT has been klog corrupted or replaced - old, new headers below (20110413 klog /tbutils-372) klog klog ADVICE: Some firmware corrupts the DSDT or installs a bad klog new DSDT, so a workaround is to copy the DSDT. Booting klog with kernel parameter acpi=copy_dsdt may fix this issue. klog klog FAILED [HIGH] KlogAcpiExecFailure: Test 1, HIGH Kernel klog message: [ 0.074090] ACPI Error: Please send DMI info to klog linux-acpi@vger.kernel.org klog klog ADVICE: The kernel has most probably detected an error klog while executing ACPI AML. The error lists the ACPI driver klog module and the line number where the bug has been caught klog and the method that caused the error. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.076767] ACPI Warning: Incorrect klog checksum in table [OEMB] - 0xA6, should be 0x97 (20100428 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.077157] ACPI Warning: Incorrect klog checksum in table [OEMB] - 0x4C, should be 0x21 (20100428 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 0.077854] ACPI Error: Method parse/execution klog failed [_SB_.PCI0._OSC] (Node f4c250d8), AE_NOT_FOUND klog (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiParseExecAmlFailed: Test 1, HIGH klog Kernel message: [ 0.078226] ACPI Error (psparse-0537): klog Method parse/execution failed [_PR_.CPU1.APCT] (Node klog f7033090), AE_NO_MEMORY klog klog ADVICE: The ACPI driver encountered a parse or execution klog error on some ACPI AML code. This is unexepcted and klog normally indicates that there is a bug in the compiled AML klog code. It could be a programming fault or an AML compiler klog issue. See acpi_ps_parse_aml(). klog klog FAILED [HIGH] KlogAcpiParseExecAmlFailed: Test 1, HIGH klog Kernel message: [ 0.078254] ACPI Error (psparse-0537): klog Method parse/execution failed [_PR_.CPU1.GCAP] (Node klog f7033078), AE_NO_MEMORY klog klog ADVICE: The ACPI driver encountered a parse or execution klog error on some ACPI AML code. This is unexepcted and klog normally indicates that there is a bug in the compiled AML klog code. It could be a programming fault or an AML compiler klog issue. See acpi_ps_parse_aml(). klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.078268] ACPI Warning: Incorrect klog checksum in table [OEMB] - 07, should be 06 (20090903 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [HIGH] KlogAcpiParseExecAmlFailed: Test 1, HIGH klog Kernel message: [ 0.078278] ACPI Error (psparse-0537): klog Method parse/execution failed [_PR_.CPU1._PDC] (Node klog f7033048), AE_NO_MEMORY klog klog ADVICE: The ACPI driver encountered a parse or execution klog error on some ACPI AML code. This is unexepcted and klog normally indicates that there is a bug in the compiled AML klog code. It could be a programming fault or an AML compiler klog issue. See acpi_ps_parse_aml(). klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.078686] ACPI Warning: Incorrect klog checksum in table [OEMB] - 0x38, should be 0x81 (20110413 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.083817] ACPI Warning: Incorrect klog checksum in table [OEMB] - 0xF9, should be 0xF3 (20100428 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [HIGH] KlogAcpiOpRegionMemMapError: Test 1, HIGH klog Kernel message: [ 0.085590] ACPI Error: Could not map klog memory at 0x000000007F5E3520, size 463 (20110112 klog /exregion-178) klog klog ADVICE: The ACPI interpreter was requested to read or klog write to a memory region via a memory space handler but klog the logical address could not be mapped from the given klog physical address given. This memory region is not mappable klog , so it could be an AML opregion bug or a bug in the klog kernel (less likely). klog klog FAILED [HIGH] KlogAcpiParseExecAmlFailed: Test 1, HIGH klog Kernel message: [ 0.085606] ACPI Error: Method parse klog /execution failed [_PR_.CPU1.APPT] (Node f403d228), klog AE_NO_MEMORY (20110112/psparse-536) klog klog ADVICE: The ACPI driver encountered a parse or execution klog error on some ACPI AML code. This is unexepcted and klog normally indicates that there is a bug in the compiled AML klog code. It could be a programming fault or an AML compiler klog issue. See acpi_ps_parse_aml(). klog klog FAILED [HIGH] KlogAcpiParseExecAmlFailed: Test 1, HIGH klog Kernel message: [ 0.085618] ACPI Error: Method parse klog /execution failed [_PR_.CPU1.GCAP] (Node f403d1f8), klog AE_NO_MEMORY (20110112/psparse-536) klog klog ADVICE: The ACPI driver encountered a parse or execution klog error on some ACPI AML code. This is unexepcted and klog normally indicates that there is a bug in the compiled AML klog code. It could be a programming fault or an AML compiler klog issue. See acpi_ps_parse_aml(). klog klog FAILED [HIGH] KlogAcpiOpRegionMemMapError: Test 1, HIGH klog Kernel message: [ 0.085627] ACPI Error: Could not map klog memory at 0x000000007D3E1520, size 463 (20110112 klog /exregion-178) klog klog ADVICE: The ACPI interpreter was requested to read or klog write to a memory region via a memory space handler but klog the logical address could not be mapped from the given klog physical address given. This memory region is not mappable klog , so it could be an AML opregion bug or a bug in the klog kernel (less likely). klog klog FAILED [HIGH] KlogAcpiParseExecAmlFailed: Test 1, HIGH klog Kernel message: [ 0.085628] ACPI Error: Method parse klog /execution failed [_PR_.CPU1._PDC] (Node f403d1c8), klog AE_NO_MEMORY (20110112/psparse-536) klog klog ADVICE: The ACPI driver encountered a parse or execution klog error on some ACPI AML code. This is unexepcted and klog normally indicates that there is a bug in the compiled AML klog code. It could be a programming fault or an AML compiler klog issue. See acpi_ps_parse_aml(). klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.085974] ACPI Warning: Incorrect klog checksum in table [OEMB] - 0x6B, should be 0x39 (20110112 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.086054] ACPI Warning: Incorrect klog checksum in table [TCPA] - 0x00, should be 0x96 (20110112 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [HIGH] KlogAcpiOpRegionMemMapError: Test 1, HIGH klog Kernel message: [ 0.086081] ACPI Error: Could not map klog memory at 0x000000007F395420, size 141 (20110112 klog /exregion-178) klog klog ADVICE: The ACPI interpreter was requested to read or klog write to a memory region via a memory space handler but klog the logical address could not be mapped from the given klog physical address given. This memory region is not mappable klog , so it could be an AML opregion bug or a bug in the klog kernel (less likely). klog klog FAILED [HIGH] KlogAcpiParseExecAmlFailed: Test 1, HIGH klog Kernel message: [ 0.086097] ACPI Error: Method parse klog /execution failed [_PR_.CPU1.APCT] (Node f403d210), klog AE_NO_MEMORY (20110112/psparse-536) klog klog ADVICE: The ACPI driver encountered a parse or execution klog error on some ACPI AML code. This is unexepcted and klog normally indicates that there is a bug in the compiled AML klog code. It could be a programming fault or an AML compiler klog issue. See acpi_ps_parse_aml(). klog klog FAILED [HIGH] KlogAcpiParseExecAmlFailed: Test 1, HIGH klog Kernel message: [ 0.086108] ACPI Error: Method parse klog /execution failed [_PR_.CPU2.GCAP] (Node f403d270), klog AE_NO_MEMORY (20110112/psparse-536) klog klog ADVICE: The ACPI driver encountered a parse or execution klog error on some ACPI AML code. This is unexepcted and klog normally indicates that there is a bug in the compiled AML klog code. It could be a programming fault or an AML compiler klog issue. See acpi_ps_parse_aml(). klog klog FAILED [HIGH] KlogAcpiParseExecAmlFailed: Test 1, HIGH klog Kernel message: [ 0.086118] ACPI Error: Method parse klog /execution failed [_PR_.CPU2._PDC] (Node f403d240), klog AE_NO_MEMORY (20110112/psparse-536) klog klog ADVICE: The ACPI driver encountered a parse or execution klog error on some ACPI AML code. This is unexepcted and klog normally indicates that there is a bug in the compiled AML klog code. It could be a programming fault or an AML compiler klog issue. See acpi_ps_parse_aml(). klog klog FAILED [HIGH] KlogAcpiOpRegionMemMapError: Test 1, HIGH klog Kernel message: [ 0.086119] ACPI Error: Could not map klog memory at 0x000000007D198120, size 141 (20110112 klog /exregion-178) klog klog ADVICE: The ACPI interpreter was requested to read or klog write to a memory region via a memory space handler but klog the logical address could not be mapped from the given klog physical address given. This memory region is not mappable klog , so it could be an AML opregion bug or a bug in the klog kernel (less likely). klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.088999] ACPI Warning: Incorrect klog checksum in table [OEMB] - 0xE8, should be 0xDB (20100428 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.089613] ACPI Warning: Incorrect klog checksum in table [OEMB] - 0xB3, should be 0xAE (20100428 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.089701] ACPI Warning: Incorrect klog checksum in table [OEMB] - 0x77, should be 0x6C (20100428 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [HIGH] KlogAcpiPackageListLargerThanExpected: Test klog 1, HIGH Kernel message: [ 0.091402] ACPI Warning: Package klog List length (0x7) larger than NumElements count (0x3), klog truncated klog klog ADVICE: A Method has returned a Package List that was klog larger than expected. klog klog FAILED [HIGH] KlogAcpiInvalidTableLength: Test 1, HIGH klog Kernel message: [ 0.091463] ACPI Error (psparse-0537): klog Method parse/execution failed [_PR_.CPU1.APPT] (Node klog f701e228), AE_INVALID_TABLE_LENGTH klog klog ADVICE: The ACPI Method returned a table of the incorrect klog length. This can lead to unexepected results. klog klog FAILED [HIGH] KlogAcpiInvalidTableLength: Test 1, HIGH klog Kernel message: [ 0.091510] ACPI Error (psparse-0537): klog Method parse/execution failed [_PR_.CPU1.GCAP] (Node klog f701e1f8), AE_INVALID_TABLE_LENGTH klog klog ADVICE: The ACPI Method returned a table of the incorrect klog length. This can lead to unexepected results. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.091541] ACPI Warning: Incorrect klog checksum in table [OEMB] - F6, should be E7 (20090903 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [HIGH] KlogAcpiInvalidTableLength: Test 1, HIGH klog Kernel message: [ 0.091552] ACPI Error (psparse-0537): klog Method parse/execution failed [_PR_.CPU1._PDC] (Node klog f701e1c8), AE_INVALID_TABLE_LENGTH klog klog ADVICE: The ACPI Method returned a table of the incorrect klog length. This can lead to unexepected results. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.091778] ACPI Warning: Incorrect klog checksum in table [OEMB] - 8E, should be 7F (20090903 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.091911] ACPI Warning: Incorrect klog checksum in table [APIC] - 0x8E, should be 0x91 (20110112 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [HIGH] KlogAcpiParseExecAmlFailed: Test 1, HIGH klog Kernel message: [ 0.092524] ACPI Error (psparse-0537): klog Method parse/execution failed [_PR_.CPU1.APCT] (Node klog f701e210), AE_NO_MEMORY klog klog ADVICE: The ACPI driver encountered a parse or execution klog error on some ACPI AML code. This is unexepcted and klog normally indicates that there is a bug in the compiled AML klog code. It could be a programming fault or an AML compiler klog issue. See acpi_ps_parse_aml(). klog klog FAILED [HIGH] KlogAcpiParseExecAmlFailed: Test 1, HIGH klog Kernel message: [ 0.092570] ACPI Error (psparse-0537): klog Method parse/execution failed [_PR_.CPU2.GCAP] (Node klog f701e270), AE_NO_MEMORY klog klog ADVICE: The ACPI driver encountered a parse or execution klog error on some ACPI AML code. This is unexepcted and klog normally indicates that there is a bug in the compiled AML klog code. It could be a programming fault or an AML compiler klog issue. See acpi_ps_parse_aml(). klog klog FAILED [HIGH] KlogAcpiParseExecAmlFailed: Test 1, HIGH klog Kernel message: [ 0.092612] ACPI Error (psparse-0537): klog Method parse/execution failed [_PR_.CPU2._PDC] (Node klog f701e240), AE_NO_MEMORY klog klog ADVICE: The ACPI driver encountered a parse or execution klog error on some ACPI AML code. This is unexepcted and klog normally indicates that there is a bug in the compiled AML klog code. It could be a programming fault or an AML compiler klog issue. See acpi_ps_parse_aml(). klog klog FAILED [HIGH] KlogAcpiCheckObjectTypeFailed: Test 1, HIGH klog Kernel message: [ 0.093544] ACPI Error: Needed type klog [Reference], found [Device] f7019f90 (20100428 klog /exresop-104) klog klog ADVICE: An ACPI object type did not match the expected klog type. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.094477] ACPI Warning: Incorrect klog checksum in table [OEMB] - 0x97, should be 0x90 (20100428 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [LOW] KlogAcpiMissingBqc: Test 1, LOW Kernel klog message: [ 0.094856] [Firmware Bug]: ACPI: No _BQC method, klog cannot determine initial brightness klog klog ADVICE: _BQC (Brightness Query Current level) seems to be klog missing. This method returns the current brightness level klog of a built-in display output device. klog klog FAILED [HIGH] KlogAcpiOpRegionMemMapError: Test 1, HIGH klog Kernel message: [ 0.095719] ACPI Error: Could not map klog memory at 0x0000000087127520, size 463 (20110112 klog /exregion-178) klog klog ADVICE: The ACPI interpreter was requested to read or klog write to a memory region via a memory space handler but klog the logical address could not be mapped from the given klog physical address given. This memory region is not mappable klog , so it could be an AML opregion bug or a bug in the klog kernel (less likely). klog klog FAILED [HIGH] KlogAcpiParseExecAmlFailed: Test 1, HIGH klog Kernel message: [ 0.095737] ACPI Error: Method parse klog /execution failed [_PR_.CPU1.APPT] (Node f383e498), klog AE_NO_MEMORY (20110112/psparse-536) klog klog ADVICE: The ACPI driver encountered a parse or execution klog error on some ACPI AML code. This is unexepcted and klog normally indicates that there is a bug in the compiled AML klog code. It could be a programming fault or an AML compiler klog issue. See acpi_ps_parse_aml(). klog klog FAILED [HIGH] KlogAcpiParseExecAmlFailed: Test 1, HIGH klog Kernel message: [ 0.095749] ACPI Error: Method parse klog /execution failed [_PR_.CPU1.GCAP] (Node f383e468), klog AE_NO_MEMORY (20110112/psparse-536) klog klog ADVICE: The ACPI driver encountered a parse or execution klog error on some ACPI AML code. This is unexepcted and klog normally indicates that there is a bug in the compiled AML klog code. It could be a programming fault or an AML compiler klog issue. See acpi_ps_parse_aml(). klog klog FAILED [HIGH] KlogAcpiParseExecAmlFailed: Test 1, HIGH klog Kernel message: [ 0.095760] ACPI Error: Method parse klog /execution failed [_PR_.CPU1._PDC] (Node f383e438), klog AE_NO_MEMORY (20110112/psparse-536) klog klog ADVICE: The ACPI driver encountered a parse or execution klog error on some ACPI AML code. This is unexepcted and klog normally indicates that there is a bug in the compiled AML klog code. It could be a programming fault or an AML compiler klog issue. See acpi_ps_parse_aml(). klog klog FAILED [HIGH] KlogAcpiMissingBqc: Test 1, HIGH Kernel klog message: [ 0.095817] [Firmware Bug]: ACPI: ACPI brightness klog control misses _BQC function klog klog ADVICE: _BQC (Brightness Query Current level) seems to be klog missing. This method returns the current brightness level klog of a built-in display output device. klog klog FAILED [HIGH] KlogAcpiOpRegionMemMapError: Test 1, HIGH klog Kernel message: [ 0.096257] ACPI Error: Could not map klog memory at 0x0000000086DB1C20, size 141 (20110112 klog /exregion-178) klog klog ADVICE: The ACPI interpreter was requested to read or klog write to a memory region via a memory space handler but klog the logical address could not be mapped from the given klog physical address given. This memory region is not mappable klog , so it could be an AML opregion bug or a bug in the klog kernel (less likely). klog klog FAILED [HIGH] KlogAcpiParseExecAmlFailed: Test 1, HIGH klog Kernel message: [ 0.096273] ACPI Error: Method parse klog /execution failed [_PR_.CPU1.APCT] (Node f383e480), klog AE_NO_MEMORY (20110112/psparse-536) klog klog ADVICE: The ACPI driver encountered a parse or execution klog error on some ACPI AML code. This is unexepcted and klog normally indicates that there is a bug in the compiled AML klog code. It could be a programming fault or an AML compiler klog issue. See acpi_ps_parse_aml(). klog klog FAILED [HIGH] KlogAcpiParseExecAmlFailed: Test 1, HIGH klog Kernel message: [ 0.096285] ACPI Error: Method parse klog /execution failed [_PR_.CPU2.GCAP] (Node f383e4e0), klog AE_NO_MEMORY (20110112/psparse-536) klog klog ADVICE: The ACPI driver encountered a parse or execution klog error on some ACPI AML code. This is unexepcted and klog normally indicates that there is a bug in the compiled AML klog code. It could be a programming fault or an AML compiler klog issue. See acpi_ps_parse_aml(). klog klog FAILED [HIGH] KlogAcpiParseExecAmlFailed: Test 1, HIGH klog Kernel message: [ 0.096295] ACPI Error: Method parse klog /execution failed [_PR_.CPU2._PDC] (Node f383e4b0), klog AE_NO_MEMORY (20110112/psparse-536) klog klog ADVICE: The ACPI driver encountered a parse or execution klog error on some ACPI AML code. This is unexepcted and klog normally indicates that there is a bug in the compiled AML klog code. It could be a programming fault or an AML compiler klog issue. See acpi_ps_parse_aml(). klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.096447] ACPI Warning: Incorrect klog checksum in table [OEMB] - 66, should be 62 (20090903 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.098113] ACPI Warning: Incorrect klog checksum in table [OEMB] - 0x2C, should be 0x28 (20100428 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.099413] ACPI Warning: Incorrect klog checksum in table [OEMB] - E2, should be D9 (20090903 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [HIGH] KlogAcpiFieldExceedsBuffer: Test 1, HIGH klog Kernel message: [ 0.101941] ACPI Error: Field [ASSM] at klog 524320 exceeds Buffer [BUF0] size 880 (bits) (20110112 klog /dsopcode-597) klog klog ADVICE: Failed to initialise an ACPI buffer field, the klog field exceeded the buffer size provided. This is a klog firmware bug. klog klog FAILED [HIGH] KlogAcpiBufferLimit: Test 1, HIGH Kernel klog message: [ 0.101946] ACPI Error: Method parse/execution klog failed [_SB_.MEM_._CRS] (Node f442af60), klog AE_AML_BUFFER_LIMIT (20110112/psparse-536) klog klog ADVICE: Generally this error occurs because of access klog outside of a buffer. This occurs for several reasons: a) A klog field does not fit within the current length of a buffer, klog b) an ACPI table load did not fit into a buffer, c) An klog attempt to convert a buffer into an integer failed because klog the buffer was zero sized, d) a SMBus/IPMI klog /GenericSerialBus write failed because the buffer was too klog small, e) An index into a buffer was too long and fell klog outside the buffer. klog klog FAILED [HIGH] KlogAcpiBufferLimit: Test 1, HIGH Kernel klog message: [ 0.101953] ACPI Error: Method execution failed klog [_SB_.MEM_._CRS] (Node f442af60), AE_AML_BUFFER_LIMIT klog (20110112/uteval-103) klog klog ADVICE: Generally this error occurs because of access klog outside of a buffer. This occurs for several reasons: a) A klog field does not fit within the current length of a buffer, klog b) an ACPI table load did not fit into a buffer, c) An klog attempt to convert a buffer into an integer failed because klog the buffer was zero sized, d) a SMBus/IPMI klog /GenericSerialBus write failed because the buffer was too klog small, e) An index into a buffer was too long and fell klog outside the buffer. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.102803] ACPI Warning: Incorrect klog checksum in table [OEMB] - 6E, should be 40 (20090903 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [HIGH] KlogAcpiNamespaceLookupFailure: Test 1, HIGH klog Kernel message: [ 0.104297] ACPI Error (psargs-0359): klog [OSYS] Namespace lookup failure, AE_NOT_FOUND klog klog ADVICE: The kernel has detected an error trying to execute klog an Method and it cannot find an object. This is indicates klog a bug in the DSDT or SSDT AML code. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 0.104304] ACPI Error (psparse-0537): Method klog parse/execution failed [_SB_.PCI0.ACEL._STA] (Node klog f701c4e0), AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiPackageListLargerThanExpected: Test klog 1, HIGH Kernel message: [ 0.105061] ACPI Warning: Package klog List length (0xCA) larger than NumElements count (0x4), klog truncated klog klog ADVICE: A Method has returned a Package List that was klog larger than expected. klog klog FAILED [HIGH] KlogAcpiPackageListLargerThanExpected: Test klog 1, HIGH Kernel message: [ 0.106912] ACPI Warning: Package klog List length (0x5) larger than NumElements count (0x2), klog truncated klog klog ADVICE: A Method has returned a Package List that was klog larger than expected. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.108470] ACPI Warning: Incorrect klog checksum in table [OEMB] - 3F, should be 3B (20090903 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.109343] ACPI Warning: Incorrect klog checksum in table [OEMB] - 0x29, should be 0x1C (20100428 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [HIGH] KlogAcpiCheckObjectTypeFailed: Test 1, HIGH klog Kernel message: [ 0.109618] ACPI Error: Needed type klog [Reference], found [Device] f7012f90 (20090903 klog /exresop-104) klog klog ADVICE: An ACPI object type did not match the expected klog type. klog klog FAILED [HIGH] KlogAcpiOperandType: Test 1, HIGH Kernel klog message: [ 0.109635] ACPI Error (psparse-0537): Method klog parse/execution failed [_SB_.PCI0._OSC] (Node f701adc8), klog AE_AML_OPERAND_TYPE klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.110905] ACPI Warning: Incorrect klog checksum in table [OEMB] - 32, should be 25 (20090903 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [HIGH] KlogAcpiInvalidTableLength: Test 1, HIGH klog Kernel message: [ 0.113709] ACPI Error: Method parse klog /execution failed [_PR_.CPU1._PDC] (Node f5822150), klog AE_INVALID_TABLE_LENGTH (20110112/psparse-536) klog klog ADVICE: The ACPI Method returned a table of the incorrect klog length. This can lead to unexepected results. klog klog FAILED [HIGH] KlogAcpiInvalidTableLength: Test 1, HIGH klog Kernel message: [ 0.113864] ACPI Error: Method parse klog /execution failed [_PR_.CPU2._PDC] (Node f58221e0), klog AE_INVALID_TABLE_LENGTH (20110112/psparse-536) klog klog ADVICE: The ACPI Method returned a table of the incorrect klog length. This can lead to unexepected results. klog klog FAILED [HIGH] KlogAcpiInvalidTableLength: Test 1, HIGH klog Kernel message: [ 0.114544] ACPI Error: Method parse klog /execution failed [_PR_.CPU0._PDC] (Node f54211c8), klog AE_INVALID_TABLE_LENGTH (20110112/psparse-536) klog klog ADVICE: The ACPI Method returned a table of the incorrect klog length. This can lead to unexepected results. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.115838] ACPI Warning: Incorrect klog checksum in table [OEMB] - 79, should be 6C (20090903 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [HIGH] KlogAcpiNamespaceLookupFailure: Test 1, HIGH klog Kernel message: [ 0.118277] ACPI Error (psargs-0359): klog [SUPP] Namespace lookup failure, AE_NOT_FOUND klog klog ADVICE: The kernel has detected an error trying to execute klog an Method and it cannot find an object. This is indicates klog a bug in the DSDT or SSDT AML code. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 0.118284] ACPI Error (psparse-0537): Method klog parse/execution failed [_SB_.PCI0._OSC] (Node f7012780), klog AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.118568] ACPI Warning: Incorrect klog checksum in table [OEMB] - 2F, should be 22 (20090903 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [HIGH] KlogAcpiReturnPackageZeroElements: Test 1, klog HIGH Kernel message: [ 0.120765] ACPI Warning for klog _SB_.PCI0.P2P_._PRT: Return Package has no elements klog (empty) (20090903/nspredef-433) klog klog ADVICE: ACPI AML interpreter executed a Method that klog returned a package with no elements inside it. This is klog most probably a bug in the Method and needs to be fixed. klog klog FAILED [HIGH] KlogAcpiOpRegionMemMapError: Test 1, HIGH klog Kernel message: [ 0.122347] ACPI Error: Could not map klog memory at 0x00000000000FFA32, size 0 (20100428 klog /exregion-178) klog klog ADVICE: The ACPI interpreter was requested to read or klog write to a memory region via a memory space handler but klog the logical address could not be mapped from the given klog physical address given. This memory region is not mappable klog , so it could be an AML opregion bug or a bug in the klog kernel (less likely). klog klog FAILED [HIGH] KlogAcpiParseExecAmlFailed: Test 1, HIGH klog Kernel message: [ 0.122369] ACPI Error (psparse-0537): klog Method parse/execution failed [_PR_.CPU0._PDC] (Node klog f70191c8), AE_NO_MEMORY klog klog ADVICE: The ACPI driver encountered a parse or execution klog error on some ACPI AML code. This is unexepcted and klog normally indicates that there is a bug in the compiled AML klog code. It could be a programming fault or an AML compiler klog issue. See acpi_ps_parse_aml(). klog klog FAILED [HIGH] KlogAcpiReturnPackageZeroElements: Test 1, klog HIGH Kernel message: [ 0.128150] ACPI Warning for klog _SB_.PCI0.P32_._PRT: Return Package has no elements klog (empty) (20090903/nspredef-433) klog klog ADVICE: ACPI AML interpreter executed a Method that klog returned a package with no elements inside it. This is klog most probably a bug in the Method and needs to be fixed. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.132540] ACPI Warning: Incorrect klog checksum in table [OEMB] - CB, should be C6 (20090903 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [HIGH] KlogAcpiFieldExceedsBuffer: Test 1, HIGH klog Kernel message: [ 0.136585] ACPI Error: Field [ALB2] at klog 120 exceeds Buffer [CRSA] size 104 (bits) (20090903 klog /dsopcode-596) klog klog ADVICE: Failed to initialise an ACPI buffer field, the klog field exceeded the buffer size provided. This is a klog firmware bug. klog klog FAILED [HIGH] KlogAcpiBufferLimit: Test 1, HIGH Kernel klog message: [ 0.136600] ACPI Error (psparse-0537): Method klog parse/execution failed [_SB_.PCI0.PIB_.SIO0.LPT_._CRS] klog (Node dd8159d8), AE_AML_BUFFER_LIMIT klog klog ADVICE: Generally this error occurs because of access klog outside of a buffer. This occurs for several reasons: a) A klog field does not fit within the current length of a buffer, klog b) an ACPI table load did not fit into a buffer, c) An klog attempt to convert a buffer into an integer failed because klog the buffer was zero sized, d) a SMBus/IPMI klog /GenericSerialBus write failed because the buffer was too klog small, e) An index into a buffer was too long and fell klog outside the buffer. klog klog FAILED [HIGH] KlogAcpiBufferLimit: Test 1, HIGH Kernel klog message: [ 0.136637] ACPI Error (uteval-0250): Method klog execution failed [_SB_.PCI0.PIB_.SIO0.LPT_._CRS] (Node klog dd8159d8), AE_AML_BUFFER_LIMIT klog klog ADVICE: Generally this error occurs because of access klog outside of a buffer. This occurs for several reasons: a) A klog field does not fit within the current length of a buffer, klog b) an ACPI table load did not fit into a buffer, c) An klog attempt to convert a buffer into an integer failed because klog the buffer was zero sized, d) a SMBus/IPMI klog /GenericSerialBus write failed because the buffer was too klog small, e) An index into a buffer was too long and fell klog outside the buffer. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.137394] ACPI Warning: Incorrect klog checksum in table [OEMB] - 29, should be 1A (20090903 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [HIGH] KlogAcpiFirmwareError: Test 1, HIGH Kernel klog message: [ 0.140000] [Firmware Bug]: the BIOS has klog corrupted hw-PMU resources (MSR 186 is 43003c) klog klog ADVICE: The kernel has detected a Firmware bug in the BIOS klog or ACPI which needs investigating and fixing. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.141112] ACPI Warning: Incorrect klog checksum in table [OEMB] - ED, should be E8 20090521 klog tbutils-246 klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [HIGH] KlogAcpiObjectDoesNotExist: Test 1, HIGH klog Kernel message: [ 0.150000] ACPI Error: Method parse klog /execution failed [_SB_.PCI0.SBRG.EC0_._REG] (Node klog ffff880137e47618), AE_NOT_EXIST (20110112/psparse-536) klog klog ADVICE: The ACPI interpreter failed to execute or parse klog some AML because a object or control did not exist. This klog normally occurs because of buggy firmware and may lead to klog unexpected behaviour or loss of functionality. klog klog FAILED [HIGH] KlogAcpiNoHandlerForRegion: Test 1, HIGH klog Kernel message: [ 0.150000] ACPI Error: No handler for klog Region [ERAM] (ffff880137e58e10) [EmbeddedControl] klog (20110112/evregion-369) klog klog ADVICE: ACPI attempted to read or write to a region klog however the ACPI driver does not have a handler klog implemented for this particular region space. The read klog /write will fail and undefined behaviour will occur. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.154764] ACPI Warning: Incorrect klog checksum in table [OEMB] - 7D, should be 6E (20090903 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 0.159797] ACPI Error: Method parse/execution klog failed [_SB_._OSC] (Node f4421648), AE_NOT_FOUND (20110413 klog /psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 0.160246] ACPI Error: Method parse/execution klog failed [_SB_.PCI0.LPC0.EC0_._REG] (Node ffff880147830960), klog AE_NOT_FOUND (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiNamespaceLookupFailure: Test 1, HIGH klog Kernel message: [ 0.160246] ACPI Error: [_SB_.PHSR] klog Namespace lookup failure, AE_NOT_FOUND (20110112 klog /psargs-359) klog klog ADVICE: The kernel has detected an error trying to execute klog an Method and it cannot find an object. This is indicates klog a bug in the DSDT or SSDT AML code. klog klog FAILED [MEDIUM] KlogBiosMtrrsInconsistentAcrossCPUs: Test klog 1, MEDIUM Kernel message: [ 0.160449] mtrr: your CPUs had klog inconsistent fixed MTRR settings klog klog ADVICE: The fixed Memory Type Range Registers (MTRRs) klog which define memory caching policy are not consistent klog across all CPUs which is a firmware bug. The kernel has klog worked around this bug, but it may be worth getting the klog BIOS vendor to fix this. klog klog FAILED [HIGH] KlogAcpiPackageListLargerThanExpected: Test klog 1, HIGH Kernel message: [ 0.163431] ACPI Warning: Package klog List length (0x6) larger than NumElements count (0x3), klog truncated klog klog ADVICE: A Method has returned a Package List that was klog larger than expected. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.163687] ACPI Warning: Incorrect klog checksum in table [TAMG] - 0xFC, should be 0xFB (20110112 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.164073] ACPI Warning: Incorrect klog checksum in table [TAMG] - 0xEE, should be 0xED (20110112 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [HIGH] KlogAcpiNamespaceLookupFailure: Test 1, HIGH klog Kernel message: [ 0.165683] ACPI Error: [CDW1] Namespace klog lookup failure, AE_NOT_FOUND (20110112/psargs-359) klog klog ADVICE: The kernel has detected an error trying to execute klog an Method and it cannot find an object. This is indicates klog a bug in the DSDT or SSDT AML code. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 0.165689] ACPI Error: Method parse/execution klog failed [_SB_._OSC] (Node f3821648), AE_NOT_FOUND (20110112 klog /psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 0.166264] ACPI Error (psparse-0537): Method klog parse/execution failed [_SB_._OSC] (Node f701a648), klog AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 0.166294] ACPI Error: Method parse/execution klog failed [_SB_._OSC] (Node f4021648), AE_NOT_FOUND (20110112 klog /psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiNoHandlerForRegion: Test 1, HIGH klog Kernel message: [ 0.166323] ACPI Error: No handler for klog Region [ERAM] (f7022168) [EmbeddedControl] (20100428 klog /evregion-369) klog klog ADVICE: ACPI attempted to read or write to a region klog however the ACPI driver does not have a handler klog implemented for this particular region space. The read klog /write will fail and undefined behaviour will occur. klog klog FAILED [HIGH] KlogAcpiObjectDoesNotExist: Test 1, HIGH klog Kernel message: [ 0.166336] ACPI Error (psparse-0537): klog Method parse/execution failed [_SB_.PCI0.LPCB.EC0_._REG] klog (Node f7021bb8), AE_NOT_EXIST klog klog ADVICE: The ACPI interpreter failed to execute or parse klog some AML because a object or control did not exist. This klog normally occurs because of buggy firmware and may lead to klog unexpected behaviour or loss of functionality. klog klog FAILED [HIGH] KlogAcpiNoHandlerForRegion: Test 1, HIGH klog Kernel message: [ 0.166808] ACPI Error: No handler for klog Region [ERAM] (f7023938) [EmbeddedControl] (20100428 klog /evregion-369) klog klog ADVICE: ACPI attempted to read or write to a region klog however the ACPI driver does not have a handler klog implemented for this particular region space. The read klog /write will fail and undefined behaviour will occur. klog klog FAILED [HIGH] KlogAcpiObjectDoesNotExist: Test 1, HIGH klog Kernel message: [ 0.166808] ACPI Error (psparse-0537): klog Method parse/execution failed [_SB_.HTEV] (Node f701be10), klog AE_NOT_EXIST klog klog ADVICE: The ACPI interpreter failed to execute or parse klog some AML because a object or control did not exist. This klog normally occurs because of buggy firmware and may lead to klog unexpected behaviour or loss of functionality. klog klog FAILED [HIGH] KlogAcpiObjectDoesNotExist: Test 1, HIGH klog Kernel message: [ 0.166808] ACPI Error (psparse-0537): klog Method parse/execution failed [_SB_.PCI0.LPC0.EC0_._REG] klog (Node f7024d08), AE_NOT_EXIST klog klog ADVICE: The ACPI interpreter failed to execute or parse klog some AML because a object or control did not exist. This klog normally occurs because of buggy firmware and may lead to klog unexpected behaviour or loss of functionality. klog klog FAILED [HIGH] KlogAcpiNamespaceLookupFailure: Test 1, HIGH klog Kernel message: [ 0.169111] ACPI Error: [HPTF] Namespace klog lookup failure, AE_NOT_FOUND (20110112/psargs-359) klog klog ADVICE: The kernel has detected an error trying to execute klog an Method and it cannot find an object. This is indicates klog a bug in the DSDT or SSDT AML code. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 0.169117] ACPI Error: Method parse/execution klog failed [_SB_.PCI0.HPET._STA] (Node f402ae58), AE_NOT_FOUND klog (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.169362] ACPI Warning: Incorrect klog checksum in table [OEMB] - 0x18, should be 0x13 (20100428 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.169398] ACPI Warning: Incorrect klog checksum in table [OEMB] - 0x15, should be 0xAC (20100428 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 0.170000] ACPI Error (psparse-0537): Method klog parse/execution failed [] (Node ffffffff81a06440), klog AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiPackageListLargerThanExpected: Test klog 1, HIGH Kernel message: [ 0.170000] ACPI Warning: Package klog List length (0x6) larger than NumElements count (0x2), klog truncated klog klog ADVICE: A Method has returned a Package List that was klog larger than expected. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.170352] ACPI Warning: Incorrect klog checksum in table [SSDT] - 0xEA, should be 0x42 (20100428 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.171073] ACPI Warning: Incorrect klog checksum in table [OEMB] - 0x67, should be 0x92 (20100428 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.171715] ACPI Warning: Incorrect klog checksum in table [TCPA] - 0x00, should be 0xAB (20110112 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [HIGH] KlogAcpiObjectAlreadyExists: Test 1, HIGH klog Kernel message: [ 0.171916] ACPI Error (psparse-0537): klog Method parse/execution failed [_SB_.PCI0._OSC] (Node klog f700e3d8), AE_ALREADY_EXISTS klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.172406] ACPI Warning: Incorrect klog checksum in table [OEMB] - 0x22, should be 0x15 (20100428 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.172679] ACPI Warning: Incorrect klog checksum in table [TCPA] - 0x00, should be 0xA5 (20100428 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [HIGH] KlogAcpiPackageListLargerThanExpected: Test klog 1, HIGH Kernel message: [ 0.172776] ACPI Warning: Package klog List length (1) larger than NumElements count (0), klog truncated klog klog ADVICE: A Method has returned a Package List that was klog larger than expected. klog klog FAILED [HIGH] KlogAcpiNoHandlerForRegion: Test 1, HIGH klog Kernel message: [ 0.172868] ACPI Error: No handler for klog Region [RAM_] (f7014618) [EmbeddedControl] 20090521 klog evregion-319 klog klog ADVICE: ACPI attempted to read or write to a region klog however the ACPI driver does not have a handler klog implemented for this particular region space. The read klog /write will fail and undefined behaviour will occur. klog klog FAILED [HIGH] KlogAcpiRegionHasNoHandler: Test 1, HIGH klog Kernel message: [ 0.172873] ACPI Error: Region klog EmbeddedControl(3) has no handler 20090521 exfldio-294 klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectDoesNotExist: Test 1, HIGH klog Kernel message: [ 0.172880] ACPI Error (psparse-0537): klog Method parse/execution failed [_SB_.PCI0.LPCB.EC0_._REG] klog (Node f70159f0), AE_NOT_EXIST klog klog ADVICE: The ACPI interpreter failed to execute or parse klog some AML because a object or control did not exist. This klog normally occurs because of buggy firmware and may lead to klog unexpected behaviour or loss of functionality. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.173062] ACPI Warning: Incorrect klog checksum in table [SSDT] - 0xAA, should be 0xED (20110112 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [HIGH] KlogAcpiObjectAlreadyExists: Test 1, HIGH klog Kernel message: [ 0.173605] ACPI Error (psparse-0537): klog Method parse/execution failed [_SB_.PCI0._OSC] (Node klog f70215e8), AE_ALREADY_EXISTS klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.173745] ACPI Warning: Incorrect klog checksum in table [TCPA] - 0x83, should be 0x27 (20110413 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [HIGH] KlogAcpiObjectAlreadyExists: Test 1, HIGH klog Kernel message: [ 0.173917] ACPI Error (psparse-0537): klog Method parse/execution failed [] (Node c08d6804), klog AE_ALREADY_EXISTS klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 0.173917] ACPI Error (psparse-0537): Method klog parse/execution failed [] (Node c08d6804), AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.175144] ACPI Warning: Incorrect klog checksum in table [OEMB] - 95, should be 8C (20090903 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [HIGH] KlogAcpiNoHandlerForRegion: Test 1, HIGH klog Kernel message: [ 0.175379] ACPI Error: No handler for klog Region [ECXP] (f70218e8) [EmbeddedControl] (20100428 klog /evregion-369) klog klog ADVICE: ACPI attempted to read or write to a region klog however the ACPI driver does not have a handler klog implemented for this particular region space. The read klog /write will fail and undefined behaviour will occur. klog klog FAILED [HIGH] KlogAcpiObjectDoesNotExist: Test 1, HIGH klog Kernel message: [ 0.175394] ACPI Error (psparse-0537): klog Method parse/execution failed [_PR_.CPU0._OSC] (Node klog f7025558), AE_NOT_EXIST klog klog ADVICE: The ACPI interpreter failed to execute or parse klog some AML because a object or control did not exist. This klog normally occurs because of buggy firmware and may lead to klog unexpected behaviour or loss of functionality. klog klog FAILED [HIGH] KlogAcpiObjectDoesNotExist: Test 1, HIGH klog Kernel message: [ 0.175428] ACPI Error (psparse-0537): klog Method parse/execution failed [_PR_.CPU0._PDC] (Node klog f7025540), AE_NOT_EXIST klog klog ADVICE: The ACPI interpreter failed to execute or parse klog some AML because a object or control did not exist. This klog normally occurs because of buggy firmware and may lead to klog unexpected behaviour or loss of functionality. klog klog FAILED [HIGH] KlogAcpiPackageListLargerThanExpected: Test klog 1, HIGH Kernel message: [ 0.175892] ACPI Warning: Package klog List length (0x1) larger than NumElements count (0x0), klog truncated klog klog ADVICE: A Method has returned a Package List that was klog larger than expected. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.175987] ACPI Warning: Incorrect klog checksum in table [OEMB] - D7, should be C8 20090521 klog tbutils-246 klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.176309] ACPI Warning: Incorrect klog checksum in table [OEMB] - 0xCF, should be 0xCE (20100428 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [HIGH] KlogAcpiNamespaceLookupFailure: Test 1, HIGH klog Kernel message: [ 0.176410] ACPI Error: [RAMB] Namespace klog lookup failure, AE_NOT_FOUND (20110413/psargs-359) klog klog ADVICE: The kernel has detected an error trying to execute klog an Method and it cannot find an object. This is indicates klog a bug in the DSDT or SSDT AML code. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.176680] ACPI Warning: Incorrect klog checksum in table [OEMB] - D6, should be C7 20090521 klog tbutils-246 klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.176840] ACPI Warning: Incorrect klog checksum in table [SSDT] - 0xAC, should be 0x4D (20100428 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.177033] ACPI Warning: Incorrect klog checksum in table [OEMB] - ED, should be EC 20090521 klog tbutils-246 klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiMmconfigNotReserved: Test 1, klog MEDIUM Kernel message: [ 0.177048] [Firmware Bug]: PCI: klog MMCONFIG at [mem 0xe0000000-0xe03fffff] not reserved in klog ACPI motherboard resources klog klog ADVICE: It appears that PCI config space has been klog configured for a specific device but does not appear to be klog reserved by the ACPI motherboard resources. klog klog FAILED [HIGH] KlogAcpiCheckObjectTypeFailed: Test 1, HIGH klog Kernel message: [ 0.177377] ACPI Error: Needed type klog [Reference], found [Device] f701af90 (20100428 klog /exresop-104) klog klog ADVICE: An ACPI object type did not match the expected klog type. klog klog FAILED [HIGH] KlogAcpiOperandType: Test 1, HIGH Kernel klog message: [ 0.177377] ACPI Error (psparse-0537): Method klog parse/execution failed [_SB_.PCI0._OSC] (Node f7022dc8), klog AE_AML_OPERAND_TYPE klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.177506] ACPI Warning: Incorrect klog checksum in table [SSDT] - 0xA1, should be 0x30 (20100428 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.177670] ACPI Warning: Incorrect klog checksum in table [OEMB] - 1C, should be 17 (20090903 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.178040] ACPI Warning: Incorrect klog checksum in table [OEMB] - 0xF7, should be 0xE8 (20100428 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [HIGH] KlogAcpiNoHandlerForRegion: Test 1, HIGH klog Kernel message: [ 0.178420] ACPI Error: No handler for klog Region [SACS] (f701b500) [PCI_Config] (20090903 klog /evregion-319) klog klog ADVICE: ACPI attempted to read or write to a region klog however the ACPI driver does not have a handler klog implemented for this particular region space. The read klog /write will fail and undefined behaviour will occur. klog klog FAILED [HIGH] KlogAcpiObjectDoesNotExist: Test 1, HIGH klog Kernel message: [ 0.178434] ACPI Error (psparse-0537): klog Method parse/execution failed [PRID.P_D0._STA] (Node klog f7072000), AE_NOT_EXIST klog klog ADVICE: The ACPI interpreter failed to execute or parse klog some AML because a object or control did not exist. This klog normally occurs because of buggy firmware and may lead to klog unexpected behaviour or loss of functionality. klog klog FAILED [HIGH] KlogAcpiObjectDoesNotExist: Test 1, HIGH klog Kernel message: [ 0.178458] ACPI Error (uteval-0250): klog Method execution failed [PRID.P_D0._STA] (Node f7072000), klog AE_NOT_EXIST klog klog ADVICE: The ACPI interpreter failed to execute or parse klog some AML because a object or control did not exist. This klog normally occurs because of buggy firmware and may lead to klog unexpected behaviour or loss of functionality. klog klog FAILED [HIGH] KlogAcpiObjectDoesNotExist: Test 1, HIGH klog Kernel message: [ 0.178486] ACPI Error (psparse-0537): klog Method parse/execution failed [PRID.P_D1._STA] (Node klog f70720a8), AE_NOT_EXIST klog klog ADVICE: The ACPI interpreter failed to execute or parse klog some AML because a object or control did not exist. This klog normally occurs because of buggy firmware and may lead to klog unexpected behaviour or loss of functionality. klog klog FAILED [HIGH] KlogAcpiObjectDoesNotExist: Test 1, HIGH klog Kernel message: [ 0.178510] ACPI Error (uteval-0250): klog Method execution failed [PRID.P_D1._STA] (Node f70720a8), klog AE_NOT_EXIST klog klog ADVICE: The ACPI interpreter failed to execute or parse klog some AML because a object or control did not exist. This klog normally occurs because of buggy firmware and may lead to klog unexpected behaviour or loss of functionality. klog klog FAILED [HIGH] KlogAcpiObjectDoesNotExist: Test 1, HIGH klog Kernel message: [ 0.178539] ACPI Error (psparse-0537): klog Method parse/execution failed [SECD.S_D0._STA] (Node klog f7072210), AE_NOT_EXIST klog klog ADVICE: The ACPI interpreter failed to execute or parse klog some AML because a object or control did not exist. This klog normally occurs because of buggy firmware and may lead to klog unexpected behaviour or loss of functionality. klog klog FAILED [HIGH] KlogAcpiObjectDoesNotExist: Test 1, HIGH klog Kernel message: [ 0.178563] ACPI Error (uteval-0250): klog Method execution failed [SECD.S_D0._STA] (Node f7072210), klog AE_NOT_EXIST klog klog ADVICE: The ACPI interpreter failed to execute or parse klog some AML because a object or control did not exist. This klog normally occurs because of buggy firmware and may lead to klog unexpected behaviour or loss of functionality. klog klog FAILED [HIGH] KlogAcpiObjectDoesNotExist: Test 1, HIGH klog Kernel message: [ 0.178590] ACPI Error (psparse-0537): klog Method parse/execution failed [SECD.S_D1._STA] (Node klog f70722b8), AE_NOT_EXIST klog klog ADVICE: The ACPI interpreter failed to execute or parse klog some AML because a object or control did not exist. This klog normally occurs because of buggy firmware and may lead to klog unexpected behaviour or loss of functionality. klog klog FAILED [HIGH] KlogAcpiObjectDoesNotExist: Test 1, HIGH klog Kernel message: [ 0.178614] ACPI Error (uteval-0250): klog Method execution failed [SECD.S_D1._STA] (Node f70722b8), klog AE_NOT_EXIST klog klog ADVICE: The ACPI interpreter failed to execute or parse klog some AML because a object or control did not exist. This klog normally occurs because of buggy firmware and may lead to klog unexpected behaviour or loss of functionality. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.179475] ACPI Warning: Incorrect klog checksum in table [TCPA] - 0x00, should be 0xAB (20100428 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [HIGH] KlogAcpiObjectAlreadyExists: Test 1, HIGH klog Kernel message: [ 0.179688] ACPI Error (psparse-0537): klog Method parse/execution failed [_SB_.PCI0._OSC] (Node klog f74174c8), AE_ALREADY_EXISTS klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiOperandType: Test 1, HIGH Kernel klog message: [ 0.181591] ACPI Error (psparse-0537): Method klog parse/execution failed [_SB_.PCI0._OSC] (Node f7022db0), klog AE_AML_OPERAND_TYPE klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectAlreadyExists: Test 1, HIGH klog Kernel message: [ 0.181679] ACPI Error (psparse-0537): klog Method parse/execution failed [_SB_.PCI0._OSC] (Node klog f740f438), AE_ALREADY_EXISTS klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.181959] ACPI Warning: Incorrect klog checksum in table [OEMB] - 0x0A, should be 0x09 (20100428 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.182122] ACPI Warning: Incorrect klog checksum in table [OEMB] - 7D, should be 70 (20090903 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 0.182199] ACPI Error: Method parse/execution klog failed [_SB_.PCI0._OSC] (Node f4c25228), AE_NOT_FOUND klog (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiNamespaceLookupFailure: Test 1, HIGH klog Kernel message: [ 0.182199] ACPI Error: [Z012] Namespace klog lookup failure, AE_NOT_FOUND (20110112/psargs-359) klog klog ADVICE: The kernel has detected an error trying to execute klog an Method and it cannot find an object. This is indicates klog a bug in the DSDT or SSDT AML code. klog klog FAILED [HIGH] KlogAcpiNamespaceLookupFailure: Test 1, HIGH klog Kernel message: [ 0.182639] ACPI Error (psargs-0359): klog [ECEN] Namespace lookup failure, AE_NOT_FOUND klog klog ADVICE: The kernel has detected an error trying to execute klog an Method and it cannot find an object. This is indicates klog a bug in the DSDT or SSDT AML code. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 0.182645] ACPI Error (psparse-0537): Method klog parse/execution failed [] (Node c090665c), AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectAlreadyExists: Test 1, HIGH klog Kernel message: [ 0.183306] ACPI Error: Method parse klog /execution failed [_PR_.CPU0._PDC] (Node f403a228), klog AE_ALREADY_EXISTS (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.183518] ACPI Warning: Incorrect klog checksum in table [OEMB] - 10, should be 03 (20090903 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [HIGH] KlogAcpiNoHandlerForRegion: Test 1, HIGH klog Kernel message: [ 0.183725] ACPI Error: No handler for klog Region [SACS] (f70c20f0) [PCI_Config] (20090903 klog /evregion-319) klog klog ADVICE: ACPI attempted to read or write to a region klog however the ACPI driver does not have a handler klog implemented for this particular region space. The read klog /write will fail and undefined behaviour will occur. klog klog FAILED [HIGH] KlogAcpiObjectDoesNotExist: Test 1, HIGH klog Kernel message: [ 0.183734] ACPI Error (psparse-0537): klog Method parse/execution failed [PRID.P_D0._STA] (Node klog f70c4180), AE_NOT_EXIST klog klog ADVICE: The ACPI interpreter failed to execute or parse klog some AML because a object or control did not exist. This klog normally occurs because of buggy firmware and may lead to klog unexpected behaviour or loss of functionality. klog klog FAILED [HIGH] KlogAcpiObjectDoesNotExist: Test 1, HIGH klog Kernel message: [ 0.183755] ACPI Error (uteval-0250): klog Method execution failed [PRID.P_D0._STA] (Node f70c4180), klog AE_NOT_EXIST klog klog ADVICE: The ACPI interpreter failed to execute or parse klog some AML because a object or control did not exist. This klog normally occurs because of buggy firmware and may lead to klog unexpected behaviour or loss of functionality. klog klog FAILED [HIGH] KlogAcpiObjectDoesNotExist: Test 1, HIGH klog Kernel message: [ 0.183773] ACPI Error (psparse-0537): klog Method parse/execution failed [PRID.P_D1._STA] (Node klog f70c4240), AE_NOT_EXIST klog klog ADVICE: The ACPI interpreter failed to execute or parse klog some AML because a object or control did not exist. This klog normally occurs because of buggy firmware and may lead to klog unexpected behaviour or loss of functionality. klog klog FAILED [HIGH] KlogAcpiObjectDoesNotExist: Test 1, HIGH klog Kernel message: [ 0.183793] ACPI Error (uteval-0250): klog Method execution failed [PRID.P_D1._STA] (Node f70c4240), klog AE_NOT_EXIST klog klog ADVICE: The ACPI interpreter failed to execute or parse klog some AML because a object or control did not exist. This klog normally occurs because of buggy firmware and may lead to klog unexpected behaviour or loss of functionality. klog klog FAILED [HIGH] KlogAcpiObjectDoesNotExist: Test 1, HIGH klog Kernel message: [ 0.183812] ACPI Error (psparse-0537): klog Method parse/execution failed [SECD.S_D0._STA] (Node klog f70c43c0), AE_NOT_EXIST klog klog ADVICE: The ACPI interpreter failed to execute or parse klog some AML because a object or control did not exist. This klog normally occurs because of buggy firmware and may lead to klog unexpected behaviour or loss of functionality. klog klog FAILED [HIGH] KlogAcpiObjectDoesNotExist: Test 1, HIGH klog Kernel message: [ 0.183832] ACPI Error (uteval-0250): klog Method execution failed [SECD.S_D0._STA] (Node f70c43c0), klog AE_NOT_EXIST klog klog ADVICE: The ACPI interpreter failed to execute or parse klog some AML because a object or control did not exist. This klog normally occurs because of buggy firmware and may lead to klog unexpected behaviour or loss of functionality. klog klog FAILED [HIGH] KlogAcpiObjectDoesNotExist: Test 1, HIGH klog Kernel message: [ 0.183850] ACPI Error (psparse-0537): klog Method parse/execution failed [SECD.S_D1._STA] (Node klog f70c4480), AE_NOT_EXIST klog klog ADVICE: The ACPI interpreter failed to execute or parse klog some AML because a object or control did not exist. This klog normally occurs because of buggy firmware and may lead to klog unexpected behaviour or loss of functionality. klog klog FAILED [HIGH] KlogAcpiObjectDoesNotExist: Test 1, HIGH klog Kernel message: [ 0.183870] ACPI Error (uteval-0250): klog Method execution failed [SECD.S_D1._STA] (Node f70c4480), klog AE_NOT_EXIST klog klog ADVICE: The ACPI interpreter failed to execute or parse klog some AML because a object or control did not exist. This klog normally occurs because of buggy firmware and may lead to klog unexpected behaviour or loss of functionality. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.183948] ACPI Warning: Incorrect klog checksum in table [TCPA] - 0x00, should be 0x8E (20110112 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.184086] ACPI Warning: Incorrect klog checksum in table [OEMB] - 0x69, should be 0x68 (20110112 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [HIGH] KlogAcpiObjectAlreadyExists: Test 1, HIGH klog Kernel message: [ 0.184314] ACPI Error (psparse-0537): klog Method parse/execution failed [_SB_.PCI0._OSC] (Node klog f7015eb8), AE_ALREADY_EXISTS klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiNamespaceLookupFailure: Test 1, HIGH klog Kernel message: [ 0.185673] ACPI Error (dswload-0659): klog [___P] Namespace lookup failure, AE_NOT_FOUND klog klog ADVICE: The kernel has detected an error trying to execute klog an Method and it cannot find an object. This is indicates klog a bug in the DSDT or SSDT AML code. klog klog FAILED [HIGH] KlogAcpiInvalidTableLength: Test 1, HIGH klog Kernel message: [ 0.185686] ACPI Error (psparse-0537): klog Method parse/execution failed [_PR_.CPU1._PDC] (Node klog f701a150), AE_INVALID_TABLE_LENGTH klog klog ADVICE: The ACPI Method returned a table of the incorrect klog length. This can lead to unexepected results. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 0.185688] ACPI Error (psparse-0537): Method klog parse/execution failed [_SB_.PCI0._INI] (Node f700f6c0), klog AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiInvalidTableLength: Test 1, HIGH klog Kernel message: [ 0.185862] ACPI Error (psparse-0537): klog Method parse/execution failed [_PR_.CPU2._PDC] (Node klog f701a1e0), AE_INVALID_TABLE_LENGTH klog klog ADVICE: The ACPI Method returned a table of the incorrect klog length. This can lead to unexepected results. klog klog FAILED [HIGH] KlogAcpiPackageListLargerThanExpected: Test klog 1, HIGH Kernel message: [ 0.186281] ACPI Warning: Package klog List length (C) larger than NumElements count (4), klog truncated klog klog ADVICE: A Method has returned a Package List that was klog larger than expected. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.186529] ACPI Warning: Incorrect klog checksum in table [OEMB] - B9, should be AC (20090903 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.187574] ACPI Warning: Incorrect klog checksum in table [OEMB] - 77, should be 76 (20090903 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 0.187800] ACPI Error (psparse-0537): Method klog parse/execution failed [] (Node c0994f7c), AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.187872] ACPI Warning: Incorrect klog checksum in table [OEMB] - B6, should be B3 (20090903 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.187981] ACPI Warning: Incorrect klog checksum in table [OEMB] - 8D, should be 8C (20090903 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.187992] ACPI Warning: Incorrect klog checksum in table [OEMB] - 40, should be 3F (20090903 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.188197] ACPI Warning: Incorrect klog checksum in table [OEMB] - 6A, should be 61 (20090903 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.188232] ACPI Warning: Incorrect klog checksum in table [ATKG] - 0x07, should be 0x59 (20100428 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [HIGH] KlogAcpiNamespaceLookupFailure: Test 1, HIGH klog Kernel message: [ 0.188487] ACPI Error (psargs-0359): q z klog Namespace lookup failure, AE_NOT_FOUND klog klog ADVICE: The kernel has detected an error trying to execute klog an Method and it cannot find an object. This is indicates klog a bug in the DSDT or SSDT AML code. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.188669] ACPI Warning: Incorrect klog checksum in table [ATKG] - 0x05, should be 0xE5 (20100428 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [HIGH] KlogAcpiCheckObjectTypeFailed: Test 1, HIGH klog Kernel message: [ 0.189086] ACPI Error: Needed type klog [Reference], found [Device] f700ff90 (20090903 klog /exresop-104) klog klog ADVICE: An ACPI object type did not match the expected klog type. klog klog FAILED [HIGH] KlogAcpiOperandType: Test 1, HIGH Kernel klog message: [ 0.189100] ACPI Error (psparse-0537): Method klog parse/execution failed [_SB_.PCI0._OSC] (Node f7017dc8), klog AE_AML_OPERAND_TYPE klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiCheckObjectTypeFailed: Test 1, HIGH klog Kernel message: [ 0.189451] ACPI Error: Needed type klog [Reference], found [Device] f700ef90 20090521 exresop-104 klog klog ADVICE: An ACPI object type did not match the expected klog type. klog klog FAILED [HIGH] KlogAcpiOperandType: Test 1, HIGH Kernel klog message: [ 0.189466] ACPI Error (psparse-0537): Method klog parse/execution failed [_SB_.PCI0._OSC] (Node f7016dc8), klog AE_AML_OPERAND_TYPE klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiNamespaceLookupFailure: Test 1, HIGH klog Kernel message: [ 0.189515] ACPI Error (psargs-0359): klog [CVCL] Namespace lookup failure, AE_NOT_FOUND klog klog ADVICE: The kernel has detected an error trying to execute klog an Method and it cannot find an object. This is indicates klog a bug in the DSDT or SSDT AML code. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 0.189522] ACPI Error (psparse-0537): Method klog parse/execution failed [_SB_.PCI0.LPCB.DIGI._STA] (Node klog f702a390), AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.191013] ACPI Warning: Incorrect klog checksum in table [ATKG] - 0x81, should be 0xE5 (20100428 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.191774] ACPI Warning: Incorrect klog checksum in table [OEMB] - 37, should be 28 (20090903 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 0.191906] ACPI Error (psparse-0537): Method klog parse/execution failed [] (Node c098ff6c), AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.192037] ACPI Warning: Incorrect klog checksum in table [OEMB] - 0xD9, should be 0xCC (20100428 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [HIGH] KlogAcpiNamespaceLookupFailure: Test 1, HIGH klog Kernel message: [ 0.192146] ACPI Error (dswload-0781): klog [_PSW] Namespace lookup failure, AE_ALREADY_EXISTS klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectAlreadyExists: Test 1, HIGH klog Kernel message: [ 0.192182] ACPI Error (psparse-0537): klog Method parse/execution failed [] (Node c08ce7dc), klog AE_ALREADY_EXISTS klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.192983] ACPI Warning: Incorrect klog checksum in table [OEMB] - C0, should be B3 (20090903 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 0.193750] ACPI Error (psparse-0537): Method klog parse/execution failed [] (Node c08ce7dc), AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.194184] ACPI Warning: Incorrect klog checksum in table [OEMB] - C8, should be BF (20090903 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.194314] ACPI Warning: Incorrect klog checksum in table [OEMB] - AA, should be 9D (20090903 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [HIGH] KlogAcpiInvalidTableLength: Test 1, HIGH klog Kernel message: [ 0.194554] ACPI Error: Method parse klog /execution failed [_PR_.CPU1._PDC] (Node f5821150), klog AE_INVALID_TABLE_LENGTH (20110112/psparse-536) klog klog ADVICE: The ACPI Method returned a table of the incorrect klog length. This can lead to unexepected results. klog klog FAILED [HIGH] KlogAcpiInvalidTableLength: Test 1, HIGH klog Kernel message: [ 0.194701] ACPI Error: Method parse klog /execution failed [_PR_.CPU2._PDC] (Node f58211e0), klog AE_INVALID_TABLE_LENGTH (20110112/psparse-536) klog klog ADVICE: The ACPI Method returned a table of the incorrect klog length. This can lead to unexepected results. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.194897] ACPI Warning: Incorrect klog checksum in table [OEMB] - 0xDD, should be 0xD6 (20100428 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.195685] ACPI Warning: Incorrect klog checksum in table [OEMB] - 2A, should be 29 (20090903 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.195754] ACPI Warning: Incorrect klog checksum in table [OEMB] - 88, should be 83 (20090903 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.196934] ACPI Warning: Incorrect klog checksum in table [OEMB] - 0B, should be 02 (20090903 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.197082] ACPI Warning: Incorrect klog checksum in table [ATKG] - 0xC8, should be 0xE5 (20100428 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [HIGH] KlogAcpiNoHandlerForRegion: Test 1, HIGH klog Kernel message: [ 0.197413] ACPI Error: No handler for klog Region [EC__] (f701c5c8) [EmbeddedControl] (20100428 klog /evregion-369) klog klog ADVICE: ACPI attempted to read or write to a region klog however the ACPI driver does not have a handler klog implemented for this particular region space. The read klog /write will fail and undefined behaviour will occur. klog klog FAILED [HIGH] KlogAcpiObjectDoesNotExist: Test 1, HIGH klog Kernel message: [ 0.197451] ACPI Error (psparse-0537): klog Method parse/execution failed [_SB_.PCI0.SBRG.EC__._REG] klog (Node f701e2a0), AE_NOT_EXIST klog klog ADVICE: The ACPI interpreter failed to execute or parse klog some AML because a object or control did not exist. This klog normally occurs because of buggy firmware and may lead to klog unexpected behaviour or loss of functionality. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.198490] ACPI Warning: Incorrect klog checksum in table [OEMB] - 0xB2, should be 0x47 (20100428 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.198823] ACPI Warning: Incorrect klog checksum in table [OEMB] - 01, should be F4 (20090903 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.199360] ACPI Warning: Incorrect klog checksum in table [TCPA] - 00, should be AB 20090521 klog tbutils-246 klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [HIGH] KlogAcpiNamespaceLookupFailure: Test 1, HIGH klog Kernel message: [ 0.199465] ACPI Error: [CDW1] Namespace klog lookup failure, AE_NOT_FOUND (20110413/psargs-359) klog klog ADVICE: The kernel has detected an error trying to execute klog an Method and it cannot find an object. This is indicates klog a bug in the DSDT or SSDT AML code. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 0.199471] ACPI Error: Method parse/execution klog failed [_SB_._OSC] (Node ffff880138e2ea78), AE_NOT_FOUND klog (20110413/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.200426] ACPI Warning: Incorrect klog checksum in table [OEMB] - A3, should be 9E (20090903 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.200744] ACPI Warning: Incorrect klog checksum in table [ASF!] - 59, should be 08 20090521 klog tbutils-246 klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.201013] ACPI Warning: Incorrect klog checksum in table [OEMB] - 8A, should be 7D (20090903 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [HIGH] KlogAcpiInvalidTableLength: Test 1, HIGH klog Kernel message: [ 0.201466] ACPI Error (psparse-0537): klog Method parse/execution failed [_PR_.CPU1._PDC] (Node klog f700e180), AE_INVALID_TABLE_LENGTH klog klog ADVICE: The ACPI Method returned a table of the incorrect klog length. This can lead to unexepected results. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.203079] ACPI Warning: Incorrect klog checksum in table [OEMB] - 0xE1, should be 0xDC (20100428 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.204335] ACPI Warning: Incorrect klog checksum in table [OEMB] - 0xC1, should be 0x11 (20110413 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.204344] ACPI Warning: Incorrect klog checksum in table [ATKG] - 07, should be 59 (20090903 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [HIGH] KlogAcpiObjectAlreadyExists: Test 1, HIGH klog Kernel message: [ 0.205365] ACPI Error: Method parse klog /execution failed [_SB_.PCI0._OSC] (Node f5422e88), klog AE_ALREADY_EXISTS (20110413/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.206075] ACPI Warning: Incorrect klog checksum in table [ATKG] - BB, should be E5 (20090903 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.207023] ACPI Warning: Incorrect klog checksum in table [TCPA] - 00, should be AB (20090903 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.208479] ACPI Warning: Incorrect klog checksum in table [OEMB] - 0x77, should be 0x72 (20100428 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 0.209105] ACPI Error (psparse-0537): Method klog parse/execution failed [_SB_.PCI0._OSC] (Node f701f270), klog AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.210543] ACPI Warning: Incorrect klog checksum in table [OEMB] - CD, should be CC (20090903 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.210667] ACPI Warning: Incorrect klog checksum in table [OEMB] - D3, should be C4 (20090903 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.211069] ACPI Warning: Incorrect klog checksum in table [OEMB] - 0x99, should be 0x92 (20100428 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.211113] ACPI Warning: Incorrect klog checksum in table [OEMB] - 7B, should be 76 (20090903 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [HIGH] KlogAcpiNoHandlerForRegion: Test 1, HIGH klog Kernel message: [ 0.211904] ACPI Error: No handler for klog Region [ERAM] (ee422ed8) [EmbeddedControl] (20100428 klog /evregion-369) klog klog ADVICE: ACPI attempted to read or write to a region klog however the ACPI driver does not have a handler klog implemented for this particular region space. The read klog /write will fail and undefined behaviour will occur. klog klog FAILED [HIGH] KlogAcpiObjectAlreadyExists: Test 1, HIGH klog Kernel message: [ 0.211928] ACPI Error (psparse-0537): klog Method parse/execution failed [_SB_.PCI0._OSC] (Node klog f701fd08), AE_ALREADY_EXISTS klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectDoesNotExist: Test 1, HIGH klog Kernel message: [ 0.211938] ACPI Error (psparse-0537): klog Method parse/execution failed [_SB_.PCI0.SBRG.EC0_._REG] klog (Node ee423708), AE_NOT_EXIST klog klog ADVICE: The ACPI interpreter failed to execute or parse klog some AML because a object or control did not exist. This klog normally occurs because of buggy firmware and may lead to klog unexpected behaviour or loss of functionality. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.212633] ACPI Warning: Incorrect klog checksum in table [OEMB] - E1, should be D3 (20090903 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 0.212815] ACPI Error: Method parse/execution klog failed [_SB_.PCI0._OSC] (Node f7424eb8), AE_NOT_FOUND klog (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiNamespaceLookupFailure: Test 1, HIGH klog Kernel message: [ 0.213084] ACPI Error (dsfield-0143): klog [CAPB] Namespace lookup failure, AE_ALREADY_EXISTS klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectAlreadyExists: Test 1, HIGH klog Kernel message: [ 0.213100] ACPI Error (psparse-0537): klog Method parse/execution failed [_SB_.PCI0._OSC] (Node klog f7014ca8), AE_ALREADY_EXISTS klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.213771] ACPI Warning: Incorrect klog checksum in table [OEMB] - EC, should be E7 (20090903 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [HIGH] KlogAcpiPackageListLargerThanExpected: Test klog 1, HIGH Kernel message: [ 0.213827] ACPI Warning: Package klog List length (0xC) larger than NumElements count (0x3), klog truncated klog klog ADVICE: A Method has returned a Package List that was klog larger than expected. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.214423] ACPI Warning: Incorrect klog checksum in table [OEMB] - FD, should be EF (20090903 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.215632] ACPI Warning: Incorrect klog checksum in table [OEMB] - 0x0B, should be 0x5B (20100428 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.216249] ACPI Warning: Incorrect klog checksum in table [ATKG] - 0x27, should be 0xE5 (20110112 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [HIGH] KlogAcpiObjectAlreadyExists: Test 1, HIGH klog Kernel message: [ 0.217060] ACPI Error (psparse-0537): klog Method parse/execution failed [_SB_.PCI0._OSC] (Node klog dec13ca8), AE_ALREADY_EXISTS klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectAlreadyExists: Test 1, HIGH klog Kernel message: [ 0.217763] ACPI Error (psparse-0537): klog Method parse/execution failed [_SB_.PCI0._OSC] (Node klog f7013030), AE_ALREADY_EXISTS klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.217957] ACPI Warning: Incorrect klog checksum in table [OEMB] - 69, should be 5F (20090903 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [HIGH] KlogAcpiObjectAlreadyExists: Test 1, HIGH klog Kernel message: [ 0.218957] ACPI Error (psparse-0537): klog Method parse/execution failed [_SB_.PCI0._OSC] (Node klog f701be88), AE_ALREADY_EXISTS klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 0.219691] ACPI Error (psparse-0537): Method klog parse/execution failed [_SB_.PCI0._OSC] (Node f7013270), klog AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiNoHandlerForRegion: Test 1, HIGH klog Kernel message: [ 0.219959] ACPI Error: No handler for klog Region [SACS] (f70c52a8) [PCI_Config] (20090903 klog /evregion-319) klog klog ADVICE: ACPI attempted to read or write to a region klog however the ACPI driver does not have a handler klog implemented for this particular region space. The read klog /write will fail and undefined behaviour will occur. klog klog FAILED [HIGH] KlogAcpiRegionHasNoHandler: Test 1, HIGH klog Kernel message: [ 0.219968] ACPI Error: Region klog PCI_Config(2) has no handler (20090903/exfldio-295) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectDoesNotExist: Test 1, HIGH klog Kernel message: [ 0.219977] ACPI Error (psparse-0537): klog Method parse/execution failed [PRID.P_D0._STA] (Node klog f701ba38), AE_NOT_EXIST klog klog ADVICE: The ACPI interpreter failed to execute or parse klog some AML because a object or control did not exist. This klog normally occurs because of buggy firmware and may lead to klog unexpected behaviour or loss of functionality. klog klog FAILED [HIGH] KlogAcpiObjectDoesNotExist: Test 1, HIGH klog Kernel message: [ 0.220034] ACPI Error (uteval-0250): klog Method execution failed [PRID.P_D0._STA] (Node f701ba38), klog AE_NOT_EXIST klog klog ADVICE: The ACPI interpreter failed to execute or parse klog some AML because a object or control did not exist. This klog normally occurs because of buggy firmware and may lead to klog unexpected behaviour or loss of functionality. klog klog FAILED [HIGH] KlogAcpiObjectDoesNotExist: Test 1, HIGH klog Kernel message: [ 0.220068] ACPI Error (psparse-0537): klog Method parse/execution failed [PRID.P_D1._STA] (Node klog f701baf8), AE_NOT_EXIST klog klog ADVICE: The ACPI interpreter failed to execute or parse klog some AML because a object or control did not exist. This klog normally occurs because of buggy firmware and may lead to klog unexpected behaviour or loss of functionality. klog klog FAILED [HIGH] KlogAcpiObjectDoesNotExist: Test 1, HIGH klog Kernel message: [ 0.220107] ACPI Error (uteval-0250): klog Method execution failed [PRID.P_D1._STA] (Node f701baf8), klog AE_NOT_EXIST klog klog ADVICE: The ACPI interpreter failed to execute or parse klog some AML because a object or control did not exist. This klog normally occurs because of buggy firmware and may lead to klog unexpected behaviour or loss of functionality. klog klog FAILED [HIGH] KlogAcpiObjectDoesNotExist: Test 1, HIGH klog Kernel message: [ 0.220142] ACPI Error (psparse-0537): klog Method parse/execution failed [SECD.S_D0._STA] (Node klog f701bc78), AE_NOT_EXIST klog klog ADVICE: The ACPI interpreter failed to execute or parse klog some AML because a object or control did not exist. This klog normally occurs because of buggy firmware and may lead to klog unexpected behaviour or loss of functionality. klog klog FAILED [HIGH] KlogAcpiObjectDoesNotExist: Test 1, HIGH klog Kernel message: [ 0.220180] ACPI Error (uteval-0250): klog Method execution failed [SECD.S_D0._STA] (Node f701bc78), klog AE_NOT_EXIST klog klog ADVICE: The ACPI interpreter failed to execute or parse klog some AML because a object or control did not exist. This klog normally occurs because of buggy firmware and may lead to klog unexpected behaviour or loss of functionality. klog klog FAILED [HIGH] KlogAcpiObjectDoesNotExist: Test 1, HIGH klog Kernel message: [ 0.220213] ACPI Error (psparse-0537): klog Method parse/execution failed [SECD.S_D1._STA] (Node klog f701bd38), AE_NOT_EXIST klog klog ADVICE: The ACPI interpreter failed to execute or parse klog some AML because a object or control did not exist. This klog normally occurs because of buggy firmware and may lead to klog unexpected behaviour or loss of functionality. klog klog FAILED [HIGH] KlogAcpiObjectDoesNotExist: Test 1, HIGH klog Kernel message: [ 0.220252] ACPI Error (uteval-0250): klog Method execution failed [SECD.S_D1._STA] (Node f701bd38), klog AE_NOT_EXIST klog klog ADVICE: The ACPI interpreter failed to execute or parse klog some AML because a object or control did not exist. This klog normally occurs because of buggy firmware and may lead to klog unexpected behaviour or loss of functionality. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 0.221153] ACPI Error: Method parse/execution klog failed [_SB_.PCI0.HPET._CRS] (Node f402ae70), AE_NOT_FOUND klog (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 0.221220] ACPI Error: Method parse/execution klog failed [_SB_.PCI0.RTC_._CRS] (Node f402aee8), AE_NOT_FOUND klog (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [MEDIUM] KlogBiosMtrrDefTypeIncosistent: Test 1, klog MEDIUM Kernel message: [ 0.221945] mtrr: your CPUs had klog inconsistent MTRRdefType settings klog klog ADVICE: The Memory Type Range Registers (MTRRs) which klog define memory caching policy do not have a MTRRdefType klog consistently set across all CPUs which is a firmware bug. klog The kernel has worked around this bug, but it may be worth klog getting the BIOS vendor to fix this. klog klog FAILED [HIGH] KlogAcpiObjectAlreadyExists: Test 1, HIGH klog Kernel message: [ 0.222211] ACPI Error (psparse-0537): klog Method parse/execution failed [_SB_.PCI0._OSC] (Node klog f701beb8), AE_ALREADY_EXISTS klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.222869] ACPI Warning: Incorrect klog checksum in table [ATKG] - B0, should be 4A (20090903 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [HIGH] KlogAcpiFieldExceedsBuffer: Test 1, HIGH klog Kernel message: [ 0.222980] ACPI Error: Field [I9MN] at klog 544 exceeds Buffer [IORT] size 464 (bits) (20090903 klog /dsopcode-596) klog klog ADVICE: Failed to initialise an ACPI buffer field, the klog field exceeded the buffer size provided. This is a klog firmware bug. klog klog FAILED [HIGH] KlogAcpiBufferLimit: Test 1, HIGH Kernel klog message: [ 0.222987] ACPI Error (psparse-0537): Method klog parse/execution failed [_SB_.PCI0.LPC0.PMIO._CRS] (Node klog f7015900), AE_AML_BUFFER_LIMIT klog klog ADVICE: Generally this error occurs because of access klog outside of a buffer. This occurs for several reasons: a) A klog field does not fit within the current length of a buffer, klog b) an ACPI table load did not fit into a buffer, c) An klog attempt to convert a buffer into an integer failed because klog the buffer was zero sized, d) a SMBus/IPMI klog /GenericSerialBus write failed because the buffer was too klog small, e) An index into a buffer was too long and fell klog outside the buffer. klog klog FAILED [HIGH] KlogAcpiBufferLimit: Test 1, HIGH Kernel klog message: [ 0.223020] ACPI Error (uteval-0250): Method klog execution failed [_SB_.PCI0.LPC0.PMIO._CRS] (Node klog f7015900), AE_AML_BUFFER_LIMIT klog klog ADVICE: Generally this error occurs because of access klog outside of a buffer. This occurs for several reasons: a) A klog field does not fit within the current length of a buffer, klog b) an ACPI table load did not fit into a buffer, c) An klog attempt to convert a buffer into an integer failed because klog the buffer was zero sized, d) a SMBus/IPMI klog /GenericSerialBus write failed because the buffer was too klog small, e) An index into a buffer was too long and fell klog outside the buffer. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.223245] ACPI Warning: Incorrect klog checksum in table [OEMB] - DB, should be DA (20090903 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiMmconfigNotReserved: Test 1, klog MEDIUM Kernel message: [ 0.223485] [Firmware Bug]: PCI: klog MMCONFIG at [mem 0xf0000000-0xf3ffffff] not reserved in klog ACPI motherboard resources klog klog ADVICE: It appears that PCI config space has been klog configured for a specific device but does not appear to be klog reserved by the ACPI motherboard resources. klog klog FAILED [HIGH] KlogAcpiReturnPackageZeroElements: Test 1, klog HIGH Kernel message: [ 0.224289] ACPI Warning for klog _SB_.PCI0.P32_._PRT: Return Package has no elements klog (empty) (20100428/nspredef-456) klog klog ADVICE: ACPI AML interpreter executed a Method that klog returned a package with no elements inside it. This is klog most probably a bug in the Method and needs to be fixed. klog klog FAILED [HIGH] KlogAcpiObjectAlreadyExists: Test 1, HIGH klog Kernel message: [ 0.224569] ACPI Error (psparse-0537): klog Method parse/execution failed [_SB_.PCI0._OSC] (Node klog f701fca8), AE_ALREADY_EXISTS klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiFieldExceedsBuffer: Test 1, HIGH klog Kernel message: [ 0.224987] ACPI Error: Field [ASSM] at klog 524320 exceeds Buffer [BUF0] size 688 (bits) (20100428 klog /dsopcode-597) klog klog ADVICE: Failed to initialise an ACPI buffer field, the klog field exceeded the buffer size provided. This is a klog firmware bug. klog klog FAILED [HIGH] KlogAcpiBufferLimit: Test 1, HIGH Kernel klog message: [ 0.224994] ACPI Error (psparse-0537): Method klog parse/execution failed [_SB_.MEM_._CRS] (Node f7021990), klog AE_AML_BUFFER_LIMIT klog klog ADVICE: Generally this error occurs because of access klog outside of a buffer. This occurs for several reasons: a) A klog field does not fit within the current length of a buffer, klog b) an ACPI table load did not fit into a buffer, c) An klog attempt to convert a buffer into an integer failed because klog the buffer was zero sized, d) a SMBus/IPMI klog /GenericSerialBus write failed because the buffer was too klog small, e) An index into a buffer was too long and fell klog outside the buffer. klog klog FAILED [HIGH] KlogAcpiBufferLimit: Test 1, HIGH Kernel klog message: [ 0.225018] ACPI Error (uteval-0250): Method klog execution failed [_SB_.MEM_._CRS] (Node f7021990), klog AE_AML_BUFFER_LIMIT klog klog ADVICE: Generally this error occurs because of access klog outside of a buffer. This occurs for several reasons: a) A klog field does not fit within the current length of a buffer, klog b) an ACPI table load did not fit into a buffer, c) An klog attempt to convert a buffer into an integer failed because klog the buffer was zero sized, d) a SMBus/IPMI klog /GenericSerialBus write failed because the buffer was too klog small, e) An index into a buffer was too long and fell klog outside the buffer. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.226224] ACPI Warning: Incorrect klog checksum in table [ATKG] - 53, should be 84 (20090903 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.227129] ACPI Warning: Incorrect klog checksum in table [ATKG] - 0x11, should be 0xE5 (20100428 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [HIGH] KlogAcpiNamespaceLookupFailure: Test 1, HIGH klog Kernel message: [ 0.228032] ACPI Error (psargs-0359): klog [_PR_.C002._PPC] Namespace lookup failure, AE_NOT_FOUND klog klog ADVICE: The kernel has detected an error trying to execute klog an Method and it cannot find an object. This is indicates klog a bug in the DSDT or SSDT AML code. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 0.228041] ACPI Error (psparse-0537): Method klog parse/execution failed [_SB_.PCI0.LPC0.EC0_._REG] (Node klog f742a558), AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiFirmwareError: Test 1, HIGH Kernel klog message: [ 0.228469] [Firmware Bug]: the BIOS has klog corrupted hw-PMU resources (MSR 38d is 30) klog klog ADVICE: The kernel has detected a Firmware bug in the BIOS klog or ACPI which needs investigating and fixing. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.228535] ACPI Warning: Incorrect klog checksum in table [OEMB] - 77, should be 6F (20100121 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 0.228773] ACPI Error: Method parse/execution klog failed [_SB_.PCI0._OSC] (Node f4025450), AE_NOT_FOUND klog (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectAlreadyExists: Test 1, HIGH klog Kernel message: [ 0.229334] ACPI Error (psparse-0537): klog Method parse/execution failed [_SB_.PCI0._OSC] (Node klog f7020750), AE_ALREADY_EXISTS klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiNamespaceLookupFailure: Test 1, HIGH klog Kernel message: [ 0.229639] ACPI Error (psargs-0359): klog [CDW1] Namespace lookup failure, AE_NOT_FOUND klog klog ADVICE: The kernel has detected an error trying to execute klog an Method and it cannot find an object. This is indicates klog a bug in the DSDT or SSDT AML code. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 0.229644] ACPI Error (psparse-0537): Method klog parse/execution failed [_SB_.PCI0._OSC] (Node f7413270), klog AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectAlreadyExists: Test 1, HIGH klog Kernel message: [ 0.230075] ACPI Error (psparse-0537): klog Method parse/execution failed [_SB_.PCI0._OSC] (Node klog f7014630), AE_ALREADY_EXISTS klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 0.231134] ACPI Error (psparse-0537): Method klog parse/execution failed [_SB_.PCI0._OSC] (Node f7012f00), klog AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.232350] ACPI Warning: Incorrect klog checksum in table [ATKG] - 15, should be 73 (20090903 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.232460] ACPI Warning: Incorrect klog checksum in table [OEMB] - 8C, should be 87 (20090903 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [HIGH] KlogAcpiObjectAlreadyExists: Test 1, HIGH klog Kernel message: [ 0.232733] ACPI Error (psparse-0537): klog Method parse/execution failed [_SB_.PCI0._OSC] (Node klog f701ebd0), AE_ALREADY_EXISTS klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.232830] ACPI Warning: Incorrect klog checksum in table [OEMB] - 0xC2, should be 0x84 (20100428 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.233493] ACPI Warning: Incorrect klog checksum in table [GSCI] - 58, should be AA (20090903 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.233542] ACPI Warning: Incorrect klog checksum in table [GSCI] - 0x70, should be 0xD2 (20100428 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.233946] ACPI Warning: Incorrect klog checksum in table [ATKG] - 1E, should be E5 (20090903 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.235518] ACPI Warning: Incorrect klog checksum in table [ASF!] - D8, should be 6E (20090903 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.236465] ACPI Warning: Incorrect klog checksum in table [OEMB] - 1D, should be 10 (20090903 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 0.236739] ACPI Error: Method parse/execution klog failed [_SB_.PCI0._OSC] (Node f3c24f00), AE_NOT_FOUND klog (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.241360] ACPI Warning: Incorrect klog checksum in table [OEMB] - 0xBD, should be 0x89 (20100428 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.242473] ACPI Warning: Incorrect klog checksum in table [GSCI] - 0x28, should be 0x8A (20100428 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.244995] ACPI Warning: Incorrect klog checksum in table [OEMB] - 17, should be 67 (20090903 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [HIGH] KlogAcpiReturnTypeMismatch: Test 1, HIGH klog Kernel message: [ 0.245794] ACPI Warning for klog _SB_.PCI0.PCIB._PRT: Return type mismatch - found Integer, klog expected Package (20100428/nspredef-1053) klog klog ADVICE: The ACPI Method returned an incorrect type, this klog should be fixed. klog klog FAILED [HIGH] KlogAcpiExecFailure: Test 1, HIGH Kernel klog message: [ 0.245810] ACPI Error (uteval-0307): Return klog object type is incorrect [_SB_.PCI0.PCIB._PRT] (Node klog f7022c48), AE_TYPE klog klog ADVICE: The kernel has most probably detected an error klog while executing ACPI AML. The error lists the ACPI driver klog module and the line number where the bug has been caught klog and the method that caused the error. klog klog FAILED [HIGH] KlogAcpiIncorrectReturnType: Test 1, HIGH klog Kernel message: [ 0.245830] ACPI Error: Type returned from klog _PRT was incorrect: Integer, expected Btypes: 0x8 klog (20100428/uteval-313) klog klog ADVICE: The ACPI interpreter was evaluating a namespace klog object and discovered that the return type did not match klog the expected return type. This is an ACPI AML bug in the klog ACPI DSDT or SSDTs. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.246137] ACPI Warning: Incorrect klog checksum in table [ATKG] - F1, should be E5 (20090903 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.249246] ACPI Warning: Incorrect klog checksum in table [OEMB] - 70, should be 6D (20090903 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [HIGH] KlogAcpiObjectAlreadyExists: Test 1, HIGH klog Kernel message: [ 0.249570] ACPI Error (psparse-0537): klog Method parse/execution failed [_PR_.CPU1._OSC] (Node klog f7010198), AE_ALREADY_EXISTS klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectAlreadyExists: Test 1, HIGH klog Kernel message: [ 0.249594] ACPI Error (psparse-0537): klog Method parse/execution failed [_PR_.CPU1._PDC] (Node klog f7010180), AE_ALREADY_EXISTS klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectAlreadyExists: Test 1, HIGH klog Kernel message: [ 0.249860] ACPI Error (psparse-0537): klog Method parse/execution failed [_PR_.CPU2._OSC] (Node klog f7010270), AE_ALREADY_EXISTS klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectAlreadyExists: Test 1, HIGH klog Kernel message: [ 0.249882] ACPI Error (psparse-0537): klog Method parse/execution failed [_PR_.CPU2._PDC] (Node klog f7010258), AE_ALREADY_EXISTS klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiNoHandlerForRegion: Test 1, HIGH klog Kernel message: [ 0.250005] ACPI Error: No handler for klog Region [EC__] (f4424bd0) [EmbeddedControl] (20110112 klog /evregion-369) klog klog ADVICE: ACPI attempted to read or write to a region klog however the ACPI driver does not have a handler klog implemented for this particular region space. The read klog /write will fail and undefined behaviour will occur. klog klog FAILED [HIGH] KlogAcpiRegionHasNoHandler: Test 1, HIGH klog Kernel message: [ 0.250012] ACPI Error: Region klog EmbeddedControl(0x3) has no handler (20110112/exfldio-292) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectDoesNotExist: Test 1, HIGH klog Kernel message: [ 0.250019] ACPI Error: Method parse klog /execution failed [_SB_.PCI0.SBRG.EC__._REG] (Node klog f4425bb8), AE_NOT_EXIST (20110112/psparse-536) klog klog ADVICE: The ACPI interpreter failed to execute or parse klog some AML because a object or control did not exist. This klog normally occurs because of buggy firmware and may lead to klog unexpected behaviour or loss of functionality. klog klog FAILED [HIGH] KlogAcpiObjectAlreadyExists: Test 1, HIGH klog Kernel message: [ 0.250572] ACPI Error (psparse-0537): klog Method parse/execution failed [_SB_.PCI0._OSC] (Node klog f7010e88), AE_ALREADY_EXISTS klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectAlreadyExists: Test 1, HIGH klog Kernel message: [ 0.250864] ACPI Error (psparse-0537): klog Method parse/execution failed [_SB_.PCI0._OSC] (Node klog f7013e58), AE_ALREADY_EXISTS klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectAlreadyExists: Test 1, HIGH klog Kernel message: [ 0.250941] ACPI Error: Method parse klog /execution failed [_SB_.PCI0._OSC] (Node f4022e88), klog AE_ALREADY_EXISTS (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiFirmwareError: Test 1, HIGH Kernel klog message: [ 0.250986] [Firmware Bug]: ACPI: BIOS klog _OSI(Linux) query honored via DMI klog klog ADVICE: ACPI driver has detected an ACPI bug. This klog generally points to a bug in an ACPI table. Examine the klog kernel log for more details. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.251711] ACPI Warning: Incorrect klog checksum in table [ATKG] - B0, should be E5 (20090903 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [HIGH] KlogAcpiObjectAlreadyExists: Test 1, HIGH klog Kernel message: [ 0.254947] ACPI Error: Method parse klog /execution failed [_SB_.PCI0._OSC] (Node f3c22e88), klog AE_ALREADY_EXISTS (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectAlreadyExists: Test 1, HIGH klog Kernel message: [ 0.255884] ACPI Error (psparse-0537): klog Method parse/execution failed [_SB_.PCI0._OSC] (Node klog f70142b8), AE_ALREADY_EXISTS klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.256141] ACPI Warning: Incorrect klog checksum in table [ATKG] - 0xAF, should be 0x59 (20110413 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.257910] ACPI Warning: Incorrect klog checksum in table [OEMB] - 04, should be 54 (20090903 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.261013] ACPI Warning: Incorrect klog checksum in table [OEMB] - DF, should be 2F (20090903 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [HIGH] KlogAcpiObjectAlreadyExists: Test 1, HIGH klog Kernel message: [ 0.262586] ACPI Error (psparse-0537): klog Method parse/execution failed [_SB_.PCI0._OSC] (Node klog f701f390), AE_ALREADY_EXISTS klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiFirmwareError: Test 1, HIGH Kernel klog message: [ 0.262663] pci 0000:00:1f.0: [Firmware Bug]: klog TigerPoint LPC.BM_STS cleared klog klog ADVICE: The kernel has detected a Firmware bug in the BIOS klog or ACPI which needs investigating and fixing. klog klog FAILED [HIGH] KlogAcpiObjectAlreadyExists: Test 1, HIGH klog Kernel message: [ 0.264838] ACPI Error (psparse-0537): klog Method parse/execution failed [_SB_.PCI0._OSC] (Node klog f701f2a0), AE_ALREADY_EXISTS klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 0.265119] ACPI Error (psparse-0537): Method klog parse/execution failed [] (Node c08d5804), AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.265541] ACPI Warning: Incorrect klog checksum in table [OEMB] - E0, should be 30 (20090903 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.266577] ACPI Warning: Incorrect klog checksum in table [GSCI] - 3B, should be BF (20090903 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [HIGH] KlogAcpiReturnPackageTypeMismatch: Test 1, klog HIGH Kernel message: [ 0.267893] ACPI Warning for klog _TZ_.TZ01._PSL: Return Package type mismatch at index 0 - klog found Processor, expected Reference (20090903 klog /nspredef-1012) klog klog ADVICE: ACPI AML interpreter executed a Method that klog returned a package with incorrectly typed data. The klog offending method needs to be fixed. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 0.268093] ACPI Error (psparse-0537): Method klog parse/execution failed [] (Node c0927024), AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectAlreadyExists: Test 1, HIGH klog Kernel message: [ 0.268171] ACPI Error (psparse-0537): klog Method parse/execution failed [] (Node c0927024), klog AE_ALREADY_EXISTS klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectAlreadyExists: Test 1, HIGH klog Kernel message: [ 0.268458] ACPI Error (psparse-0537): klog Method parse/execution failed [_SB_.PCI0._OSC] (Node klog f70142a0), AE_ALREADY_EXISTS klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiParseExecAmlFailed: Test 1, HIGH klog Kernel message: [ 0.269488] ACPI Error (psparse-0537): klog Method parse/execution failed [_PR_.CPU1.APCT] (Node klog ffff88007af30560), AE_NO_MEMORY klog klog ADVICE: The ACPI driver encountered a parse or execution klog error on some ACPI AML code. This is unexepcted and klog normally indicates that there is a bug in the compiled AML klog code. It could be a programming fault or an AML compiler klog issue. See acpi_ps_parse_aml(). klog klog FAILED [HIGH] KlogAcpiParseExecAmlFailed: Test 1, HIGH klog Kernel message: [ 0.269534] ACPI Error (psparse-0537): klog Method parse/execution failed [_PR_.CPU1.GCAP] (Node klog ffff88007af30540), AE_NO_MEMORY klog klog ADVICE: The ACPI driver encountered a parse or execution klog error on some ACPI AML code. This is unexepcted and klog normally indicates that there is a bug in the compiled AML klog code. It could be a programming fault or an AML compiler klog issue. See acpi_ps_parse_aml(). klog klog FAILED [HIGH] KlogAcpiParseExecAmlFailed: Test 1, HIGH klog Kernel message: [ 0.269576] ACPI Error (psparse-0537): klog Method parse/execution failed [_PR_.CPU1._PDC] (Node klog ffff88007af30500), AE_NO_MEMORY klog klog ADVICE: The ACPI driver encountered a parse or execution klog error on some ACPI AML code. This is unexepcted and klog normally indicates that there is a bug in the compiled AML klog code. It could be a programming fault or an AML compiler klog issue. See acpi_ps_parse_aml(). klog klog FAILED [HIGH] KlogAcpiNoHandlerForRegion: Test 1, HIGH klog Kernel message: [ 0.272427] ACPI Error: No handler for klog Region [SACS] (f71004d8) [PCI_Config] (20090903 klog /evregion-319) klog klog ADVICE: ACPI attempted to read or write to a region klog however the ACPI driver does not have a handler klog implemented for this particular region space. The read klog /write will fail and undefined behaviour will occur. klog klog FAILED [HIGH] KlogAcpiObjectDoesNotExist: Test 1, HIGH klog Kernel message: [ 0.272435] ACPI Error (psparse-0537): klog Method parse/execution failed [PRID.P_D0._STA] (Node klog f7102150), AE_NOT_EXIST klog klog ADVICE: The ACPI interpreter failed to execute or parse klog some AML because a object or control did not exist. This klog normally occurs because of buggy firmware and may lead to klog unexpected behaviour or loss of functionality. klog klog FAILED [HIGH] KlogAcpiObjectDoesNotExist: Test 1, HIGH klog Kernel message: [ 0.272452] ACPI Error (uteval-0250): klog Method execution failed [PRID.P_D0._STA] (Node f7102150), klog AE_NOT_EXIST klog klog ADVICE: The ACPI interpreter failed to execute or parse klog some AML because a object or control did not exist. This klog normally occurs because of buggy firmware and may lead to klog unexpected behaviour or loss of functionality. klog klog FAILED [HIGH] KlogAcpiObjectDoesNotExist: Test 1, HIGH klog Kernel message: [ 0.272469] ACPI Error (psparse-0537): klog Method parse/execution failed [PRID.P_D1._STA] (Node klog f71021f8), AE_NOT_EXIST klog klog ADVICE: The ACPI interpreter failed to execute or parse klog some AML because a object or control did not exist. This klog normally occurs because of buggy firmware and may lead to klog unexpected behaviour or loss of functionality. klog klog FAILED [HIGH] KlogAcpiObjectDoesNotExist: Test 1, HIGH klog Kernel message: [ 0.272486] ACPI Error (uteval-0250): klog Method execution failed [PRID.P_D1._STA] (Node f71021f8), klog AE_NOT_EXIST klog klog ADVICE: The ACPI interpreter failed to execute or parse klog some AML because a object or control did not exist. This klog normally occurs because of buggy firmware and may lead to klog unexpected behaviour or loss of functionality. klog klog FAILED [HIGH] KlogAcpiObjectDoesNotExist: Test 1, HIGH klog Kernel message: [ 0.272503] ACPI Error (psparse-0537): klog Method parse/execution failed [SECD.S_D0._STA] (Node klog f7102360), AE_NOT_EXIST klog klog ADVICE: The ACPI interpreter failed to execute or parse klog some AML because a object or control did not exist. This klog normally occurs because of buggy firmware and may lead to klog unexpected behaviour or loss of functionality. klog klog FAILED [HIGH] KlogAcpiObjectDoesNotExist: Test 1, HIGH klog Kernel message: [ 0.272519] ACPI Error (uteval-0250): klog Method execution failed [SECD.S_D0._STA] (Node f7102360), klog AE_NOT_EXIST klog klog ADVICE: The ACPI interpreter failed to execute or parse klog some AML because a object or control did not exist. This klog normally occurs because of buggy firmware and may lead to klog unexpected behaviour or loss of functionality. klog klog FAILED [HIGH] KlogAcpiObjectDoesNotExist: Test 1, HIGH klog Kernel message: [ 0.272536] ACPI Error (psparse-0537): klog Method parse/execution failed [SECD.S_D1._STA] (Node klog f7102408), AE_NOT_EXIST klog klog ADVICE: The ACPI interpreter failed to execute or parse klog some AML because a object or control did not exist. This klog normally occurs because of buggy firmware and may lead to klog unexpected behaviour or loss of functionality. klog klog FAILED [HIGH] KlogAcpiObjectDoesNotExist: Test 1, HIGH klog Kernel message: [ 0.272552] ACPI Error (uteval-0250): klog Method execution failed [SECD.S_D1._STA] (Node f7102408), klog AE_NOT_EXIST klog klog ADVICE: The ACPI interpreter failed to execute or parse klog some AML because a object or control did not exist. This klog normally occurs because of buggy firmware and may lead to klog unexpected behaviour or loss of functionality. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.279154] ACPI Warning: Incorrect klog checksum in table [OEMB] - B9, should be AE (20090903 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [HIGH] KlogAcpiPackageLimit: Test 1, HIGH Kernel klog message: [ 0.284552] ACPI Error (psparse-0537): Method klog parse/execution failed [_SB_.PCI0.IDE1.GTM_] (Node klog f7014858), AE_AML_PACKAGE_LIMIT klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiPackageLimit: Test 1, HIGH Kernel klog message: [ 0.284566] ACPI Error (psparse-0537): Method klog parse/execution failed [_SB_.PCI0.IDE1.CHN1._GTM] (Node klog f7014798), AE_AML_PACKAGE_LIMIT klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiNamespaceLookupFailure: Test 1, HIGH klog Kernel message: [ 0.285468] ACPI Error (psargs-0359): klog [_PR_.CPU0._PPC] Namespace lookup failure, AE_NOT_FOUND klog klog ADVICE: The kernel has detected an error trying to execute klog an Method and it cannot find an object. This is indicates klog a bug in the DSDT or SSDT AML code. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 0.285476] ACPI Error (psparse-0537): Method klog parse/execution failed [_SB_.ADP0.ADJP] (Node f7015b10), klog AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 0.285546] ACPI Error (psparse-0537): Method klog parse/execution failed [_SB_.ADP0._PSR] (Node f7015ae0), klog AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.288180] ACPI Warning: Incorrect klog checksum in table [ATKG] - 0x81, should be 0x59 (20110112 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [HIGH] KlogAcpiObjectAlreadyExists: Test 1, HIGH klog Kernel message: [ 0.288591] ACPI Error (psparse-0537): klog Method parse/execution failed [_SB_.PCI0._OSC] (Node klog f701fd50), AE_ALREADY_EXISTS klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 0.288966] ACPI Error: Method parse/execution klog failed [_SB_.PCI0._OSC] (Node f34245b8), AE_NOT_FOUND klog (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [CRITICAL] KlogAcpiCrtInvalidThreshold: Test 1, klog CRITICAL Kernel message: [ 0.296054] [Firmware Bug]: klog Invalid critical threshold (0) klog klog ADVICE: ACPI _CRT (Critical Trip Point) is returning a klog threshold lower than zero degrees Celsius which is clearly klog incorrect. klog klog FAILED [HIGH] KlogAcpiObjectAlreadyExists: Test 1, HIGH klog Kernel message: [ 0.296149] ACPI Error (psparse-0537): klog Method parse/execution failed [_SB_.PCI0._OSC] (Node klog f701eca8), AE_ALREADY_EXISTS klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 0.296644] ACPI Error (psparse-0537): Method klog parse/execution failed [_SB_._OSC] (Node ffff88012fc16660) klog , AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiNamespaceLookupFailure: Test 1, HIGH klog Kernel message: [ 0.302946] ACPI Error (psargs-0359): klog [HPTF] Namespace lookup failure, AE_NOT_FOUND klog klog ADVICE: The kernel has detected an error trying to execute klog an Method and it cannot find an object. This is indicates klog a bug in the DSDT or SSDT AML code. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 0.302952] ACPI Error (psparse-0537): Method klog parse/execution failed [_SB_.PCI0.HPET._STA] (Node klog ffff88007db32200), AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectAlreadyExists: Test 1, HIGH klog Kernel message: [ 0.307009] ACPI Error: Method parse klog /execution failed [_SB_.PCI0._OSC] (Node f4c22e88), klog AE_ALREADY_EXISTS (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 0.307757] ACPI Error (psparse-0537): Method klog parse/execution failed [_SB_.PCI0.SATA.CHN0._GTM] (Node klog f74145a0), AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 0.307837] ACPI Error (psparse-0537): Method klog parse/execution failed [_SB_.PCI0.SATA.CHN1._GTM] (Node klog f7414690), AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.308095] ACPI Warning: Incorrect klog checksum in table [SSDT] - 1F, should be 7F (20090903 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 0.308151] ACPI Error (psparse-0537): Method klog parse/execution failed [_SB_.PCI0.SAT1.CHN0._GTM] (Node klog f7414cd8), AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 0.308213] ACPI Error (psparse-0537): Method klog parse/execution failed [_SB_.PCI0.SAT1.CHN1._GTM] (Node klog f7414dc8), AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiBadAmlCode: Test 1, HIGH Kernel klog message: [ 0.310609] ACPI Warning for _PR_.CPU1._PSS: klog SubPackage[8,9] - suspicious power dissipation values klog (20100428/nsrepair2-403) klog klog ADVICE: ACPI AML intepreter has found some non-conforming klog AML code. This should be investigated and fixed. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.310767] ACPI Warning: Incorrect klog checksum in table [OEMB] - 0x72, should be 0x6A (20100428 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [HIGH] KlogAcpiObjectAlreadyExists: Test 1, HIGH klog Kernel message: [ 0.311025] ACPI Error: Method parse klog /execution failed [_SB_.PCI0._OSC] (Node f4c250d8), klog AE_ALREADY_EXISTS (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectAlreadyExists: Test 1, HIGH klog Kernel message: [ 0.311041] ACPI Error: Method parse klog /execution failed [_SB_.PCI0._OSC] (Node f54250d8), klog AE_ALREADY_EXISTS (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiBadAmlCode: Test 1, HIGH Kernel klog message: [ 0.311335] ACPI Warning for _PR_.CPU2._PSS: klog SubPackage[8,9] - suspicious power dissipation values klog (20100428/nsrepair2-403) klog klog ADVICE: ACPI AML intepreter has found some non-conforming klog AML code. This should be investigated and fixed. klog klog FAILED [HIGH] KlogAcpiEventEnableFailed: Test 1, HIGH klog Kernel message: [ 0.311729] ACPI Error: Could not enable klog PowerButton event (20090903/evxfevnt-193) klog klog ADVICE: An ACPI fixed event could not be enabled. This can klog affect fixed events such as the power management timer, klog power button, sleep button, RTC alarm, wake status, system klog bus master request or the global release lock status. klog klog FAILED [HIGH] KlogAcpiEventEnableFailed: Test 1, HIGH klog Kernel message: [ 0.311932] ACPI Warning: Could not enable klog fixed event 2 (20090903/evxface-146) klog klog ADVICE: An ACPI fixed event could not be enabled. This can klog affect fixed events such as the power management timer, klog power button, sleep button, RTC alarm, wake status, system klog bus master request or the global release lock status. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.314160] ACPI Warning: Incorrect klog checksum in table [OEMB] - 91, should be 90 (20090903 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [HIGH] KlogAcpiObjectAlreadyExists: Test 1, HIGH klog Kernel message: [ 0.314451] ACPI Error (psparse-0537): klog Method parse/execution failed [] (Node ffffffff81a2b040), klog AE_ALREADY_EXISTS klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.314603] ACPI Warning: Incorrect klog checksum in table [OEMB] - 8B, should be 8A (20090903 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogBiosMtrrsInconsistentAcrossCPUs: Test klog 1, MEDIUM Kernel message: [ 0.314675] mtrr: your CPUs had klog inconsistent variable MTRR settings klog klog ADVICE: The variable Memory Type Range Registers (MTRRs) klog which define memory caching policy are not consistent klog across all CPUs which is a firmware bug. The kernel has klog worked around this bug, but it may be worth getting the klog BIOS vendor to fix this. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.316718] ACPI Warning: Incorrect klog checksum in table [OEMB] - 27, should be 22 (20090903 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.316734] ACPI Warning: Incorrect klog checksum in table [TAMG] - 0xF3, should be 0xF2 (20100428 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [HIGH] KlogAcpiNoHandlerForRegion: Test 1, HIGH klog Kernel message: [ 0.316816] ACPI Error: No handler for klog Region [ERAM] (ffff88007a733d80) [EmbeddedControl] klog (20110112/evregion-369) klog klog ADVICE: ACPI attempted to read or write to a region klog however the ACPI driver does not have a handler klog implemented for this particular region space. The read klog /write will fail and undefined behaviour will occur. klog klog FAILED [HIGH] KlogAcpiObjectDoesNotExist: Test 1, HIGH klog Kernel message: [ 0.316829] ACPI Error: Method parse klog /execution failed [_SB_.HTEV] (Node ffff88007a730780), klog AE_NOT_EXIST (20110112/psparse-536) klog klog ADVICE: The ACPI interpreter failed to execute or parse klog some AML because a object or control did not exist. This klog normally occurs because of buggy firmware and may lead to klog unexpected behaviour or loss of functionality. klog klog FAILED [HIGH] KlogAcpiObjectDoesNotExist: Test 1, HIGH klog Kernel message: [ 0.316839] ACPI Error: Method parse klog /execution failed [_SB_.PCI0.LPC0.EC0_._REG] (Node klog ffff88007a73a078), AE_NOT_EXIST (20110112/psparse-536) klog klog ADVICE: The ACPI interpreter failed to execute or parse klog some AML because a object or control did not exist. This klog normally occurs because of buggy firmware and may lead to klog unexpected behaviour or loss of functionality. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.317152] ACPI Warning: Incorrect klog checksum in table [OEMB] - C1, should be B4 (20090903 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [HIGH] KlogAcpiObjectAlreadyExists: Test 1, HIGH klog Kernel message: [ 0.317427] ACPI Error (psparse-0537): klog Method parse/execution failed [_PR_.CPU1._PDC] (Node klog ffff88007d735160), AE_ALREADY_EXISTS klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.317685] ACPI Warning: Incorrect klog checksum in table [ASF!] - 0xFC, should be 0x98 (20100428 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.319223] ACPI Warning: Incorrect klog checksum in table [OEMB] - E7, should be E2 (20090903 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 0.321587] ACPI Error (psparse-0537): Method klog parse/execution failed [] (Node ffffffff81a12040), klog AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiCheckObjectTypeFailed: Test 1, HIGH klog Kernel message: [ 0.321722] ACPI Error: Needed type klog [Reference], found [Device] ffff88007552b900 (20100428 klog /exresop-104) klog klog ADVICE: An ACPI object type did not match the expected klog type. klog klog FAILED [HIGH] KlogAcpiOperandType: Test 1, HIGH Kernel klog message: [ 0.321740] ACPI Error (psparse-0537): Method klog parse/execution failed [_SB_.PCI0._OSC] (Node klog ffff880075532ba0), AE_AML_OPERAND_TYPE klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiNoHandlerForRegion: Test 1, HIGH klog Kernel message: [ 0.322869] ACPI Error: No handler for klog Region [RAM_] (f7425690) [EmbeddedControl] (20110112 klog /evregion-369) klog klog ADVICE: ACPI attempted to read or write to a region klog however the ACPI driver does not have a handler klog implemented for this particular region space. The read klog /write will fail and undefined behaviour will occur. klog klog FAILED [HIGH] KlogAcpiObjectDoesNotExist: Test 1, HIGH klog Kernel message: [ 0.322886] ACPI Error: Method parse klog /execution failed [_SB_.PCI0.LPCB.SNC_.SBRT] (Node klog f7435228), AE_NOT_EXIST (20110112/psparse-536) klog klog ADVICE: The ACPI interpreter failed to execute or parse klog some AML because a object or control did not exist. This klog normally occurs because of buggy firmware and may lead to klog unexpected behaviour or loss of functionality. klog klog FAILED [HIGH] KlogAcpiObjectDoesNotExist: Test 1, HIGH klog Kernel message: [ 0.322899] ACPI Error: Method parse klog /execution failed [_SB_.PCI0.LPCB.EC0_._REG] (Node klog f7428d98), AE_NOT_EXIST (20110112/psparse-536) klog klog ADVICE: The ACPI interpreter failed to execute or parse klog some AML because a object or control did not exist. This klog normally occurs because of buggy firmware and may lead to klog unexpected behaviour or loss of functionality. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.323465] ACPI Warning: Incorrect klog checksum in table [OEMB] - 0x8D, should be 0x8C (20100428 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [HIGH] KlogAcpiPackageListLargerThanExpected: Test klog 1, HIGH Kernel message: [ 0.323777] ACPI Warning: Package klog List length (0xC) larger than NumElements count (0x4), klog truncated klog klog ADVICE: A Method has returned a Package List that was klog larger than expected. klog klog FAILED [HIGH] KlogAcpiNoHandlerForRegion: Test 1, HIGH klog Kernel message: [ 0.325321] ACPI Error: No handler for klog Region [ERAM] (ffff88007d32bf78) [EmbeddedControl] klog (20090903/evregion-319) klog klog ADVICE: ACPI attempted to read or write to a region klog however the ACPI driver does not have a handler klog implemented for this particular region space. The read klog /write will fail and undefined behaviour will occur. klog klog FAILED [HIGH] KlogAcpiObjectDoesNotExist: Test 1, HIGH klog Kernel message: [ 0.325334] ACPI Error (psparse-0537): klog Method parse/execution failed [_SB_.PCI0.LPCB.KBC0.SMWR] klog (Node ffff88007d32c8c0), AE_NOT_EXIST klog klog ADVICE: The ACPI interpreter failed to execute or parse klog some AML because a object or control did not exist. This klog normally occurs because of buggy firmware and may lead to klog unexpected behaviour or loss of functionality. klog klog FAILED [HIGH] KlogAcpiObjectDoesNotExist: Test 1, HIGH klog Kernel message: [ 0.325357] ACPI Error (psparse-0537): klog Method parse/execution failed [_TZ_.THRM.SFAN] (Node klog ffff88007d328ec0), AE_NOT_EXIST klog klog ADVICE: The ACPI interpreter failed to execute or parse klog some AML because a object or control did not exist. This klog normally occurs because of buggy firmware and may lead to klog unexpected behaviour or loss of functionality. klog klog FAILED [HIGH] KlogAcpiObjectDoesNotExist: Test 1, HIGH klog Kernel message: [ 0.325376] ACPI Error (psparse-0537): klog Method parse/execution failed [_TZ_.THRM.THCK] (Node klog ffff88007d328f40), AE_NOT_EXIST klog klog ADVICE: The ACPI interpreter failed to execute or parse klog some AML because a object or control did not exist. This klog normally occurs because of buggy firmware and may lead to klog unexpected behaviour or loss of functionality. klog klog FAILED [HIGH] KlogAcpiObjectDoesNotExist: Test 1, HIGH klog Kernel message: [ 0.325396] ACPI Error (psparse-0537): klog Method parse/execution failed [_GPE._L02] (Node klog ffff88007d3289c0), AE_NOT_EXIST klog klog ADVICE: The ACPI interpreter failed to execute or parse klog some AML because a object or control did not exist. This klog normally occurs because of buggy firmware and may lead to klog unexpected behaviour or loss of functionality. klog klog FAILED [HIGH] KlogAcpiEventEnableFailed: Test 1, HIGH klog Kernel message: [ 0.325630] ACPI Error: Could not enable klog SleepButton event (20100428/evxfevnt-202) klog klog ADVICE: An ACPI fixed event could not be enabled. This can klog affect fixed events such as the power management timer, klog power button, sleep button, RTC alarm, wake status, system klog bus master request or the global release lock status. klog klog FAILED [HIGH] KlogAcpiEventEnableFailed: Test 1, HIGH klog Kernel message: [ 0.325636] ACPI Warning: Could not enable klog fixed event 0x3 (20100428/evxface-146) klog klog ADVICE: An ACPI fixed event could not be enabled. This can klog affect fixed events such as the power management timer, klog power button, sleep button, RTC alarm, wake status, system klog bus master request or the global release lock status. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.328929] ACPI Warning: Incorrect klog checksum in table [OEMB] - 0x45, should be 0x40 (20100428 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.328954] ACPI Warning: Incorrect klog checksum in table [ASF!] - D9, should be 6D (20090903 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [HIGH] KlogAcpiReturnTypeMismatch: Test 1, HIGH klog Kernel message: [ 0.329218] ACPI Warning for klog _SB_.PCI0._OSC: Return type mismatch - found Integer, klog expected Buffer (20090903/nspredef-1006) klog klog ADVICE: The ACPI Method returned an incorrect type, this klog should be fixed. klog klog FAILED [HIGH] KlogAcpiNamespaceLookupFailure: Test 1, HIGH klog Kernel message: [ 0.329373] ACPI Error (dsfield-0143): klog [CAPD] Namespace lookup failure, AE_ALREADY_EXISTS klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectAlreadyExists: Test 1, HIGH klog Kernel message: [ 0.329378] ACPI Error (psparse-0537): klog Method parse/execution failed [_SB_.PCI0._OSC] (Node klog ffff88012b63d760), AE_ALREADY_EXISTS klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.330000] ACPI Warning: Incorrect klog checksum in table [TCPA] - 0xD1, should be 0x75 (20100428 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.330140] ACPI Warning: Incorrect klog checksum in table [ATKG] - 0xE3, should be 0xDC (20110112 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.330280] ACPI Warning: Incorrect klog checksum in table [OEMB] - DE, should be D9 (20090903 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [HIGH] KlogAcpiNoHandlerForRegion: Test 1, HIGH klog Kernel message: [ 0.330488] ACPI Error: No handler for klog Region [SACS] (ffff88011bf101f8) [PCI_Config] (20090903 klog /evregion-319) klog klog ADVICE: ACPI attempted to read or write to a region klog however the ACPI driver does not have a handler klog implemented for this particular region space. The read klog /write will fail and undefined behaviour will occur. klog klog FAILED [HIGH] KlogAcpiObjectDoesNotExist: Test 1, HIGH klog Kernel message: [ 0.330496] ACPI Error (psparse-0537): klog Method parse/execution failed [PRID.P_D0._STA] (Node klog ffff88011bf0d360), AE_NOT_EXIST klog klog ADVICE: The ACPI interpreter failed to execute or parse klog some AML because a object or control did not exist. This klog normally occurs because of buggy firmware and may lead to klog unexpected behaviour or loss of functionality. klog klog FAILED [HIGH] KlogAcpiObjectDoesNotExist: Test 1, HIGH klog Kernel message: [ 0.330513] ACPI Error (uteval-0250): klog Method execution failed [PRID.P_D0._STA] (Node klog ffff88011bf0d360), AE_NOT_EXIST klog klog ADVICE: The ACPI interpreter failed to execute or parse klog some AML because a object or control did not exist. This klog normally occurs because of buggy firmware and may lead to klog unexpected behaviour or loss of functionality. klog klog FAILED [HIGH] KlogAcpiObjectDoesNotExist: Test 1, HIGH klog Kernel message: [ 0.330528] ACPI Error (psparse-0537): klog Method parse/execution failed [PRID.P_D1._STA] (Node klog ffff88011bf0d460), AE_NOT_EXIST klog klog ADVICE: The ACPI interpreter failed to execute or parse klog some AML because a object or control did not exist. This klog normally occurs because of buggy firmware and may lead to klog unexpected behaviour or loss of functionality. klog klog FAILED [HIGH] KlogAcpiObjectDoesNotExist: Test 1, HIGH klog Kernel message: [ 0.330545] ACPI Error (uteval-0250): klog Method execution failed [PRID.P_D1._STA] (Node klog ffff88011bf0d460), AE_NOT_EXIST klog klog ADVICE: The ACPI interpreter failed to execute or parse klog some AML because a object or control did not exist. This klog normally occurs because of buggy firmware and may lead to klog unexpected behaviour or loss of functionality. klog klog FAILED [HIGH] KlogAcpiObjectDoesNotExist: Test 1, HIGH klog Kernel message: [ 0.330560] ACPI Error (psparse-0537): klog Method parse/execution failed [SECD.S_D0._STA] (Node klog ffff88011bf0d660), AE_NOT_EXIST klog klog ADVICE: The ACPI interpreter failed to execute or parse klog some AML because a object or control did not exist. This klog normally occurs because of buggy firmware and may lead to klog unexpected behaviour or loss of functionality. klog klog FAILED [HIGH] KlogAcpiObjectDoesNotExist: Test 1, HIGH klog Kernel message: [ 0.330576] ACPI Error (uteval-0250): klog Method execution failed [SECD.S_D0._STA] (Node klog ffff88011bf0d660), AE_NOT_EXIST klog klog ADVICE: The ACPI interpreter failed to execute or parse klog some AML because a object or control did not exist. This klog normally occurs because of buggy firmware and may lead to klog unexpected behaviour or loss of functionality. klog klog FAILED [HIGH] KlogAcpiObjectDoesNotExist: Test 1, HIGH klog Kernel message: [ 0.330590] ACPI Error (psparse-0537): klog Method parse/execution failed [SECD.S_D1._STA] (Node klog ffff88011bf0d760), AE_NOT_EXIST klog klog ADVICE: The ACPI interpreter failed to execute or parse klog some AML because a object or control did not exist. This klog normally occurs because of buggy firmware and may lead to klog unexpected behaviour or loss of functionality. klog klog FAILED [HIGH] KlogAcpiObjectDoesNotExist: Test 1, HIGH klog Kernel message: [ 0.330606] ACPI Error (uteval-0250): klog Method execution failed [SECD.S_D1._STA] (Node klog ffff88011bf0d760), AE_NOT_EXIST klog klog ADVICE: The ACPI interpreter failed to execute or parse klog some AML because a object or control did not exist. This klog normally occurs because of buggy firmware and may lead to klog unexpected behaviour or loss of functionality. klog klog FAILED [HIGH] KlogAcpiObjectAlreadyExists: Test 1, HIGH klog Kernel message: [ 0.330759] ACPI Error (psparse-0537): klog Method parse/execution failed [_SB_.PCI0._OSC] (Node klog ffff88011763c000), AE_ALREADY_EXISTS klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.330793] ACPI Warning: Incorrect klog checksum in table [TCPA] - 0x00, should be 0x9A (20110112 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [HIGH] KlogAcpiCheckObjectTypeFailed: Test 1, HIGH klog Kernel message: [ 0.331637] ACPI Error: Needed type klog [Reference], found [Device] ffff88014b82d820 (20090903 klog /exresop-104) klog klog ADVICE: An ACPI object type did not match the expected klog type. klog klog FAILED [HIGH] KlogAcpiOperandType: Test 1, HIGH Kernel klog message: [ 0.331653] ACPI Error (psparse-0537): Method klog parse/execution failed [_SB_.PCI0._OSC] (Node klog ffff88014b83cac0), AE_AML_OPERAND_TYPE klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiCheckObjectTypeFailed: Test 1, HIGH klog Kernel message: [ 0.331820] ACPI Error: Needed type klog [Reference], found [Device] ffff8800379aa900 (20100428 klog /exresop-104) klog klog ADVICE: An ACPI object type did not match the expected klog type. klog klog FAILED [HIGH] KlogAcpiOperandType: Test 1, HIGH Kernel klog message: [ 0.331838] ACPI Error (psparse-0537): Method klog parse/execution failed [_SB_.PCI0._OSC] (Node klog ffff8800379bbba0), AE_AML_OPERAND_TYPE klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.331948] ACPI Warning: Incorrect klog checksum in table [OEMB] - 0C, should be 0B (20090903 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [HIGH] KlogAcpiNamespaceLookupFailure: Test 1, HIGH klog Kernel message: [ 0.332160] ACPI Error (dswload-0677): klog [PCI0] Namespace lookup failure, AE_NOT_FOUND klog klog ADVICE: The kernel has detected an error trying to execute klog an Method and it cannot find an object. This is indicates klog a bug in the DSDT or SSDT AML code. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 0.332167] ACPI Error (psparse-0537): Method klog parse/execution failed [] (Node ffffffff81cf5eb0), klog AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.333155] ACPI Warning: Incorrect klog checksum in table [SSDT] - 4A, should be D9 (20090903 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [HIGH] KlogAcpiNoHandlerForRegion: Test 1, HIGH klog Kernel message: [ 0.333287] ACPI Error: No handler for klog Region [ERAM] (ffff8800bc638d80) [EmbeddedControl] klog (20090903/evregion-319) klog klog ADVICE: ACPI attempted to read or write to a region klog however the ACPI driver does not have a handler klog implemented for this particular region space. The read klog /write will fail and undefined behaviour will occur. klog klog FAILED [HIGH] KlogAcpiObjectDoesNotExist: Test 1, HIGH klog Kernel message: [ 0.333300] ACPI Error (psparse-0537): klog Method parse/execution failed [_SB_.HTEV] (Node klog ffff8800bc62e600), AE_NOT_EXIST klog klog ADVICE: The ACPI interpreter failed to execute or parse klog some AML because a object or control did not exist. This klog normally occurs because of buggy firmware and may lead to klog unexpected behaviour or loss of functionality. klog klog FAILED [HIGH] KlogAcpiObjectDoesNotExist: Test 1, HIGH klog Kernel message: [ 0.333326] ACPI Error (psparse-0537): klog Method parse/execution failed [_SB_.PCI0.LPC0.EC0_._REG] klog (Node ffff8800bc63e9a0), AE_NOT_EXIST klog klog ADVICE: The ACPI interpreter failed to execute or parse klog some AML because a object or control did not exist. This klog normally occurs because of buggy firmware and may lead to klog unexpected behaviour or loss of functionality. klog klog FAILED [HIGH] KlogAcpiNoHandlerForRegion: Test 1, HIGH klog Kernel message: [ 0.333559] ACPI Error: No handler for klog Region [ERAM] (ffff88007db2ad80) [EmbeddedControl] klog (20090903/evregion-319) klog klog ADVICE: ACPI attempted to read or write to a region klog however the ACPI driver does not have a handler klog implemented for this particular region space. The read klog /write will fail and undefined behaviour will occur. klog klog FAILED [HIGH] KlogAcpiObjectDoesNotExist: Test 1, HIGH klog Kernel message: [ 0.333573] ACPI Error (psparse-0537): klog Method parse/execution failed [_SB_.HTEV] (Node klog ffff88007db28600), AE_NOT_EXIST klog klog ADVICE: The ACPI interpreter failed to execute or parse klog some AML because a object or control did not exist. This klog normally occurs because of buggy firmware and may lead to klog unexpected behaviour or loss of functionality. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.333591] ACPI Warning: Incorrect klog checksum in table [TAMG] - 0xF4, should be 0xF3 (20110112 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [HIGH] KlogAcpiObjectDoesNotExist: Test 1, HIGH klog Kernel message: [ 0.333601] ACPI Error (psparse-0537): klog Method parse/execution failed [_SB_.PCI0.LPC0.EC0_._REG] klog (Node ffff88007db309a0), AE_NOT_EXIST klog klog ADVICE: The ACPI interpreter failed to execute or parse klog some AML because a object or control did not exist. This klog normally occurs because of buggy firmware and may lead to klog unexpected behaviour or loss of functionality. klog klog FAILED [HIGH] KlogAcpiParameterCountMistmatch: Test 1, klog HIGH Kernel message: [ 0.333734] ACPI Warning for klog _SB_.PCI0._OSC: Parameter count mismatch - ASL declared 5, klog ACPI requires 4 (20090903/nspredef-336) klog klog ADVICE: The ACPI Method was executing with a different klog number of parameters than the Method expected. This should klog be fixed. klog klog FAILED [HIGH] KlogAcpiNamespaceLookupFailure: Test 1, HIGH klog Kernel message: [ 0.333765] ACPI Error (psargs-0359): klog [FZHD] Namespace lookup failure, AE_NOT_FOUND klog klog ADVICE: The kernel has detected an error trying to execute klog an Method and it cannot find an object. This is indicates klog a bug in the DSDT or SSDT AML code. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 0.333771] ACPI Error (psparse-0537): Method klog parse/execution failed [_SB_.PCI0.SATA.CHN0._GTM] (Node klog f7014300), AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 0.333853] ACPI Error (psparse-0537): Method klog parse/execution failed [_SB_.PCI0.SATA.CHN1._GTM] (Node klog f70143f0), AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 0.334143] ACPI Error (psparse-0537): Method klog parse/execution failed [_SB_.PCI0.SAT1.CHN0._GTM] (Node klog f7014a38), AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 0.334206] ACPI Error (psparse-0537): Method klog parse/execution failed [_SB_.PCI0.SAT1.CHN1._GTM] (Node klog f7014b28), AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiNoHandlerForRegion: Test 1, HIGH klog Kernel message: [ 0.335658] ACPI Error: No handler for klog Region [ECOR] (ffff88007af355e8) [EmbeddedControl] klog (20110413/evregion-373) klog klog ADVICE: ACPI attempted to read or write to a region klog however the ACPI driver does not have a handler klog implemented for this particular region space. The read klog /write will fail and undefined behaviour will occur. klog klog FAILED [HIGH] KlogAcpiObjectDoesNotExist: Test 1, HIGH klog Kernel message: [ 0.335698] ACPI Error: Method parse klog /execution failed [_SB_.PCI0.SBRG.EC0_._REG] (Node klog ffff88007af36730), AE_NOT_EXIST (20110413/psparse-536) klog klog ADVICE: The ACPI interpreter failed to execute or parse klog some AML because a object or control did not exist. This klog normally occurs because of buggy firmware and may lead to klog unexpected behaviour or loss of functionality. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.335745] ACPI Warning: Incorrect klog checksum in table [OEMB] - 80, should be 78 (20090903 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.337368] ACPI Warning: Incorrect klog checksum in table [OEMB] - 8B, should be 86 (20090903 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [HIGH] KlogAcpiObjectAlreadyExists: Test 1, HIGH klog Kernel message: [ 0.337513] ACPI Error: Method parse klog /execution failed [_SB_.PCI0._OSC] (Node f54243f0), klog AE_ALREADY_EXISTS (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiNamespaceLookupFailure: Test 1, HIGH klog Kernel message: [ 0.337662] ACPI Error (psargs-0359): klog [URES] Namespace lookup failure, AE_NOT_FOUND klog klog ADVICE: The kernel has detected an error trying to execute klog an Method and it cannot find an object. This is indicates klog a bug in the DSDT or SSDT AML code. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 0.337662] ACPI Error (psparse-0537): Method klog parse/execution failed [_PSW] (Node f701f0a8), klog AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectAlreadyExists: Test 1, HIGH klog Kernel message: [ 0.338155] ACPI Error (psparse-0537): klog Method parse/execution failed [_SB_.PCI0._OSC] (Node klog ffff88021302db60), AE_ALREADY_EXISTS klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiNoHandlerForRegion: Test 1, HIGH klog Kernel message: [ 0.338440] ACPI Error: No handler for klog Region [SACS] (ffff88012bb0f1f8) [PCI_Config] (20090903 klog /evregion-319) klog klog ADVICE: ACPI attempted to read or write to a region klog however the ACPI driver does not have a handler klog implemented for this particular region space. The read klog /write will fail and undefined behaviour will occur. klog klog FAILED [HIGH] KlogAcpiObjectDoesNotExist: Test 1, HIGH klog Kernel message: [ 0.338717] ACPI Error (psparse-0537): klog Method parse/execution failed [PRID.P_D0._STA] (Node klog ffff88012bb111a0), AE_NOT_EXIST klog klog ADVICE: The ACPI interpreter failed to execute or parse klog some AML because a object or control did not exist. This klog normally occurs because of buggy firmware and may lead to klog unexpected behaviour or loss of functionality. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.338801] ACPI Warning: Incorrect klog checksum in table [OEMB] - 8B, should be 7E (20090903 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [HIGH] KlogAcpiObjectDoesNotExist: Test 1, HIGH klog Kernel message: [ 0.338905] ACPI Error (uteval-0250): klog Method execution failed [PRID.P_D0._STA] (Node klog ffff88012bb111a0), AE_NOT_EXIST klog klog ADVICE: The ACPI interpreter failed to execute or parse klog some AML because a object or control did not exist. This klog normally occurs because of buggy firmware and may lead to klog unexpected behaviour or loss of functionality. klog klog FAILED [HIGH] KlogAcpiObjectDoesNotExist: Test 1, HIGH klog Kernel message: [ 0.339363] ACPI Error (psparse-0537): klog Method parse/execution failed [PRID.P_D1._STA] (Node klog ffff88012bb11280), AE_NOT_EXIST klog klog ADVICE: The ACPI interpreter failed to execute or parse klog some AML because a object or control did not exist. This klog normally occurs because of buggy firmware and may lead to klog unexpected behaviour or loss of functionality. klog klog FAILED [HIGH] KlogAcpiObjectDoesNotExist: Test 1, HIGH klog Kernel message: [ 0.339551] ACPI Error (uteval-0250): klog Method execution failed [PRID.P_D1._STA] (Node klog ffff88012bb11280), AE_NOT_EXIST klog klog ADVICE: The ACPI interpreter failed to execute or parse klog some AML because a object or control did not exist. This klog normally occurs because of buggy firmware and may lead to klog unexpected behaviour or loss of functionality. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.339584] ACPI Warning: Incorrect klog checksum in table [OEMB] - 0xE2, should be 0xD5 (20100428 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.339628] ACPI Warning: Incorrect klog checksum in table [OEMB] - 91, should be 88 (20090903 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.339857] ACPI Warning: Incorrect klog checksum in table [OEMB] - 6D, should be 60 (20090903 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [HIGH] KlogAcpiObjectDoesNotExist: Test 1, HIGH klog Kernel message: [ 0.340003] ACPI Error (psparse-0537): klog Method parse/execution failed [SECD.S_D0._STA] (Node klog ffff88012bb11460), AE_NOT_EXIST klog klog ADVICE: The ACPI interpreter failed to execute or parse klog some AML because a object or control did not exist. This klog normally occurs because of buggy firmware and may lead to klog unexpected behaviour or loss of functionality. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.340121] ACPI Warning: Incorrect klog checksum in table [ATKG] - 0x1B, should be 0xE5 (20110112 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [HIGH] KlogAcpiObjectDoesNotExist: Test 1, HIGH klog Kernel message: [ 0.340193] ACPI Error (uteval-0250): klog Method execution failed [SECD.S_D0._STA] (Node klog ffff88012bb11460), AE_NOT_EXIST klog klog ADVICE: The ACPI interpreter failed to execute or parse klog some AML because a object or control did not exist. This klog normally occurs because of buggy firmware and may lead to klog unexpected behaviour or loss of functionality. klog klog FAILED [HIGH] KlogAcpiObjectDoesNotExist: Test 1, HIGH klog Kernel message: [ 0.340651] ACPI Error (psparse-0537): klog Method parse/execution failed [SECD.S_D1._STA] (Node klog ffff88012bb11540), AE_NOT_EXIST klog klog ADVICE: The ACPI interpreter failed to execute or parse klog some AML because a object or control did not exist. This klog normally occurs because of buggy firmware and may lead to klog unexpected behaviour or loss of functionality. klog klog FAILED [HIGH] KlogAcpiObjectDoesNotExist: Test 1, HIGH klog Kernel message: [ 0.340838] ACPI Error (uteval-0250): klog Method execution failed [SECD.S_D1._STA] (Node klog ffff88012bb11540), AE_NOT_EXIST klog klog ADVICE: The ACPI interpreter failed to execute or parse klog some AML because a object or control did not exist. This klog normally occurs because of buggy firmware and may lead to klog unexpected behaviour or loss of functionality. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.341276] ACPI Warning: Incorrect klog checksum in table [ASF!] - F2, should be 8D (20090903 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [HIGH] KlogAcpiNoHandlerForRegion: Test 1, HIGH klog Kernel message: [ 0.341759] ACPI Error: No handler for klog Region [RAM_] (f74212f8) [EmbeddedControl] (20100428 klog /evregion-369) klog klog ADVICE: ACPI attempted to read or write to a region klog however the ACPI driver does not have a handler klog implemented for this particular region space. The read klog /write will fail and undefined behaviour will occur. klog klog FAILED [HIGH] KlogAcpiObjectAlreadyExists: Test 1, HIGH klog Kernel message: [ 0.341812] ACPI Error (psparse-0537): klog Method parse/execution failed [_PR_.CPU1._OSC] (Node klog ffff88017bc14660), AE_ALREADY_EXISTS klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectAlreadyExists: Test 1, HIGH klog Kernel message: [ 0.341843] ACPI Error (psparse-0537): klog Method parse/execution failed [_PR_.CPU1._PDC] (Node klog ffff88017bc14640), AE_ALREADY_EXISTS klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectDoesNotExist: Test 1, HIGH klog Kernel message: [ 0.342116] ACPI Error (psparse-0537): klog Method parse/execution failed [_SB_.PCI0.LPCB.SNC_.SBRT] klog (Node f742f228), AE_NOT_EXIST klog klog ADVICE: The ACPI interpreter failed to execute or parse klog some AML because a object or control did not exist. This klog normally occurs because of buggy firmware and may lead to klog unexpected behaviour or loss of functionality. klog klog FAILED [HIGH] KlogAcpiObjectAlreadyExists: Test 1, HIGH klog Kernel message: [ 0.342130] ACPI Error (psparse-0537): klog Method parse/execution failed [_PR_.CPU2._OSC] (Node klog ffff88017bc14780), AE_ALREADY_EXISTS klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectAlreadyExists: Test 1, HIGH klog Kernel message: [ 0.342160] ACPI Error (psparse-0537): klog Method parse/execution failed [_PR_.CPU2._PDC] (Node klog ffff88017bc14760), AE_ALREADY_EXISTS klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectDoesNotExist: Test 1, HIGH klog Kernel message: [ 0.342409] ACPI Error (psparse-0537): klog Method parse/execution failed [_SB_.PCI0.LPCB.EC0_._REG] klog (Node f7422d98), AE_NOT_EXIST klog klog ADVICE: The ACPI interpreter failed to execute or parse klog some AML because a object or control did not exist. This klog normally occurs because of buggy firmware and may lead to klog unexpected behaviour or loss of functionality. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.342985] ACPI Warning: Incorrect klog checksum in table [OEMB] - 18, should be 13 (20090903 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.343577] ACPI Warning: Incorrect klog checksum in table [OEMB] - 0xD1, should be 0xCA (20100428 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.344373] ACPI Warning: Incorrect klog checksum in table [OEMB] - C5, should be B8 (20090903 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.345244] ACPI Warning: Incorrect klog checksum in table [OEMB] - 0xA5, should be 0x9C (20100428 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.346079] ACPI Warning: Incorrect klog checksum in table [OEMB] - 7A, should be 71 (20090903 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [HIGH] KlogAcpiReturnPackageTypeMismatch: Test 1, klog HIGH Kernel message: [ 0.347557] ACPI Warning for klog _TZ_.THRM._PSL: Return Package type mismatch at index 0 - klog found [NULL Object Descriptor], expected Reference klog (20100428/nspredef-1059) klog klog ADVICE: ACPI AML interpreter executed a Method that klog returned a package with incorrectly typed data. The klog offending method needs to be fixed. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.347883] ACPI Warning: Incorrect klog checksum in table [OEMB] - 5C, should be 53 (20090903 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.348936] ACPI Warning: Incorrect klog checksum in table [OEMB] - 0x56, should be 0x49 (20100428 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.349163] ACPI Warning: Incorrect klog checksum in table [OEMB] - E7, should be DA (20090903 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.350013] ACPI Warning: Incorrect klog checksum in table [OEMB] - D3, should be C6 (20090903 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.350096] ACPI Warning: Incorrect klog checksum in table [ATKG] - 13, should be 53 (20090903 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.350158] ACPI Warning: Incorrect klog checksum in table [ATKG] - 0x13, should be 0xC8 (20110112 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.350335] ACPI Warning: Incorrect klog checksum in table [SSDT] - 0x83, should be 0x37 (20110112 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.350784] ACPI Warning: Incorrect klog checksum in table [iEIT] - 0x5C, should be 0x51 (20100428 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.351065] ACPI Warning: Incorrect klog checksum in table [SSDT] - 0x04, should be 0xCA (20110112 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [HIGH] KlogAcpiNoHandlerForRegion: Test 1, HIGH klog Kernel message: [ 0.353198] ACPI Error: No handler for klog Region [ERAM] (ffff88013be53e10) [EmbeddedControl] klog (20090903/evregion-319) klog klog ADVICE: ACPI attempted to read or write to a region klog however the ACPI driver does not have a handler klog implemented for this particular region space. The read klog /write will fail and undefined behaviour will occur. klog klog FAILED [HIGH] KlogAcpiObjectDoesNotExist: Test 1, HIGH klog Kernel message: [ 0.353215] ACPI Error (psparse-0537): klog Method parse/execution failed [_SB_.PCI0.SBRG.EC0_._REG] klog (Node ffff88013be520e0), AE_NOT_EXIST klog klog ADVICE: The ACPI interpreter failed to execute or parse klog some AML because a object or control did not exist. This klog normally occurs because of buggy firmware and may lead to klog unexpected behaviour or loss of functionality. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.353356] ACPI Warning: Incorrect klog checksum in table [ATKG] - 0x05, should be 0x36 (20100428 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [HIGH] KlogAcpiReturnTypeMismatch: Test 1, HIGH klog Kernel message: [ 0.353401] ACPI Warning for klog _SB_.LATA._CRS: Return type mismatch - found Integer, klog expected Buffer (20090903/nspredef-1006) klog klog ADVICE: The ACPI Method returned an incorrect type, this klog should be fixed. klog klog FAILED [HIGH] KlogAcpiExecFailure: Test 1, HIGH Kernel klog message: [ 0.353406] ACPI Error (uteval-0307): Return klog object type is incorrect [_SB_.LATA._CRS] (Node klog ffff88006df2eb00), AE_TYPE klog klog ADVICE: The kernel has most probably detected an error klog while executing ACPI AML. The error lists the ACPI driver klog module and the line number where the bug has been caught klog and the method that caused the error. klog klog FAILED [HIGH] KlogAcpiCheckObjectTypeFailed: Test 1, HIGH klog Kernel message: [ 0.353652] ACPI Error: Needed type klog [Reference], found [Device] ffff8800379a6800 (20090903 klog /exresop-104) klog klog ADVICE: An ACPI object type did not match the expected klog type. klog klog FAILED [HIGH] KlogAcpiOperandType: Test 1, HIGH Kernel klog message: [ 0.353652] ACPI Error (psparse-0537): Method klog parse/execution failed [_SB_.PCI0._OSC] (Node klog ffff8800379bba80), AE_AML_OPERAND_TYPE klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectAlreadyExists: Test 1, HIGH klog Kernel message: [ 0.355135] ACPI Error: Method parse klog /execution failed [_PR_.CPU0._PDC] (Node ffff88007a738ca8) klog , AE_ALREADY_EXISTS (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiPathTooManyParentPrefixes: Test 1, klog HIGH Kernel message: [ 0.355798] ACPI Error: ACPI path has klog too many parent prefixes (^) - reached beyond root node klog (20090903/nsaccess-429) klog klog ADVICE: An ACPI path has too many parent prefixes and has klog fallen outside the root node. This is a bug in the klog firmware. The Name Space lookup on the ACPI path cannot be klog found. klog klog FAILED [HIGH] KlogBiosTimerNotConnectedtoIoApic: Test 1, klog HIGH Kernel message: [ 0.356001] ..MP-BIOS bug: 8254 timer klog not connected to IO-APIC klog klog ADVICE: The BIOS is reporting the ExtINTA I/O APIC input klog from the cascaded 8259A as the timer interrupt input. The klog kernel has detected just one pin, so it has to check the klog timer directly and through the 8259A because of the broken klog BIOS reporting. klog klog FAILED [HIGH] KlogAcpiNoHandlerForRegion: Test 1, HIGH klog Kernel message: [ 0.356108] ACPI Error: No handler for klog Region [ECF2] (ffff88013ba313a8) [EmbeddedControl] klog (20090903/evregion-319) klog klog ADVICE: ACPI attempted to read or write to a region klog however the ACPI driver does not have a handler klog implemented for this particular region space. The read klog /write will fail and undefined behaviour will occur. klog klog FAILED [HIGH] KlogAcpiRegionHasNoHandler: Test 1, HIGH klog Kernel message: [ 0.356113] ACPI Error: Region klog EmbeddedControl(3) has no handler (20090903/exfldio-295) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectDoesNotExist: Test 1, HIGH klog Kernel message: [ 0.356119] ACPI Error (psparse-0537): klog Method parse/execution failed [P8XH] (Node klog ffff88013ba28020), AE_NOT_EXIST klog klog ADVICE: The ACPI interpreter failed to execute or parse klog some AML because a object or control did not exist. This klog normally occurs because of buggy firmware and may lead to klog unexpected behaviour or loss of functionality. klog klog FAILED [HIGH] KlogAcpiObjectDoesNotExist: Test 1, HIGH klog Kernel message: [ 0.356143] ACPI Error (psparse-0537): klog Method parse/execution failed [_GPE._L02] (Node klog ffff88013ba32120), AE_NOT_EXIST klog klog ADVICE: The ACPI interpreter failed to execute or parse klog some AML because a object or control did not exist. This klog normally occurs because of buggy firmware and may lead to klog unexpected behaviour or loss of functionality. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.356280] ACPI Warning: Incorrect klog checksum in table [TCPA] - 0x33, should be 0xD7 (20100428 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.356754] ACPI Warning: Incorrect klog checksum in table [ASF!] - ED, should be 83 (20090903 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.357018] ACPI Warning: Incorrect klog checksum in table [OEMB] - 0xA6, should be 0xA1 (20100428 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.357902] ACPI Warning: Incorrect klog checksum in table [ATKG] - 0xE9, should be 0xFE (20110112 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.358086] ACPI Warning: Incorrect klog checksum in table [OEMB] - 0x11, should be 0x10 (20100428 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [HIGH] KlogAcpiObjectAlreadyExists: Test 1, HIGH klog Kernel message: [ 0.359183] ACPI Error (psparse-0537): klog Method parse/execution failed [_SB_.PCI0._OSC] (Node klog f7021a68), AE_ALREADY_EXISTS klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.359915] ACPI Warning: Incorrect klog checksum in table [ATKG] - 0x7D, should be 0x59 (20110112 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.360335] ACPI Warning: Incorrect klog checksum in table [GSCI] - 0x28, should be 0xD4 (20110112 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [HIGH] KlogAcpiPathTooManyParentPrefixes: Test 1, klog HIGH Kernel message: [ 0.361596] ACPI Error: ACPI path has klog too many parent prefixes (^) - reached beyond root node klog (20100428/nsaccess-429) klog klog ADVICE: An ACPI path has too many parent prefixes and has klog fallen outside the root node. This is a bug in the klog firmware. The Name Space lookup on the ACPI path cannot be klog found. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 0.362481] ACPI Error (psparse-0537): Method klog parse/execution failed [] (Node c091bffc), AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectAlreadyExists: Test 1, HIGH klog Kernel message: [ 0.362557] ACPI Error (psparse-0537): klog Method parse/execution failed [] (Node c091bffc), klog AE_ALREADY_EXISTS klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiNamespaceLookupFailure: Test 1, HIGH klog Kernel message: [ 0.362606] ACPI Error (dsfield-0487): klog [SMIC] Namespace lookup failure, AE_ALREADY_EXISTS klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectAlreadyExists: Test 1, HIGH klog Kernel message: [ 0.362751] ACPI Error: Method parse klog /execution failed [_SB_.PCI0._OSC] (Node f40255d0), klog AE_ALREADY_EXISTS (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiFirmwareError: Test 1, HIGH Kernel klog message: [ 0.362859] [Firmware Bug]: ACPI: BIOS klog _OSI(Linux) query honored via cmdline klog klog ADVICE: ACPI driver has detected an ACPI bug. This klog generally points to a bug in an ACPI table. Examine the klog kernel log for more details. klog klog FAILED [HIGH] KlogAcpiNamespaceLookupFailure: Test 1, HIGH klog Kernel message: [ 0.362870] ACPI Error (dsfield-0140): klog [CAPB] Namespace lookup failure, AE_ALREADY_EXISTS klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectAlreadyExists: Test 1, HIGH klog Kernel message: [ 0.362886] ACPI Error (psparse-0537): klog Method parse/execution failed [_SB_.PCI0._OSC] (Node klog f7014a80), AE_ALREADY_EXISTS klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectAlreadyExists: Test 1, HIGH klog Kernel message: [ 0.363488] ACPI Error (psparse-0537): klog Method parse/execution failed [_PR_.CPU1._PDC] (Node klog ffff880227048f60), AE_ALREADY_EXISTS klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.363621] ACPI Warning: Incorrect klog checksum in table [OEMB] - 3C, should be 3B 20090521 klog tbutils-246 klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.363728] ACPI Warning: Incorrect klog checksum in table [OEMB] - 75, should be 74 (20090903 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.363981] ACPI Warning: Incorrect klog checksum in table [OEMB] - BB, should be AE (20090903 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [HIGH] KlogAcpiReturnPackageZeroElements: Test 1, klog HIGH Kernel message: [ 0.364356] ACPI Warning: For klog _SB_.PCI0.P2P_._PRT: Return Package has no elements klog (empty) (20110112/nspredef-456) klog klog ADVICE: ACPI AML interpreter executed a Method that klog returned a package with no elements inside it. This is klog most probably a bug in the Method and needs to be fixed. klog klog FAILED [HIGH] KlogAcpiObjectAlreadyExists: Test 1, HIGH klog Kernel message: [ 0.364521] ACPI Error: Method parse klog /execution failed [_SB_.PCI0._OSC] (Node f44285b8), klog AE_ALREADY_EXISTS (20110413/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.366917] ACPI Warning: Incorrect klog checksum in table [OEMB] - BD, should be B6 (20090903 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.367185] ACPI Warning: Incorrect klog checksum in table [OEMB] - B2, should be A5 (20090903 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.367524] ACPI Warning: Incorrect klog checksum in table [ATKG] - 0xAA, should be 0x59 (20100428 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.368838] ACPI Warning: Incorrect klog checksum in table [OEMB] - 23, should be 1E (20090903 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.369986] ACPI Warning: Incorrect klog checksum in table [OEMB] - 0x61, should be 0x58 (20100428 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.370263] ACPI Warning: Incorrect klog checksum in table [ATKG] - 0x73, should be 0xE5 (20110112 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.371572] ACPI Warning: Incorrect klog checksum in table [ATKG] - 0xFB, should be 0xE5 (20100428 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [HIGH] KlogAcpiObjectAlreadyExists: Test 1, HIGH klog Kernel message: [ 0.372475] ACPI Error: Method parse klog /execution failed [_SB_.PCI0._OSC] (Node f5426ca8), klog AE_ALREADY_EXISTS (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectAlreadyExists: Test 1, HIGH klog Kernel message: [ 0.372684] ACPI Error: Method parse klog /execution failed [_SB_.PCI0._OSC] (Node dd825ca8), klog AE_ALREADY_EXISTS (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.375383] ACPI Warning: Incorrect klog checksum in table [OEMB] - 0x90, should be 0x83 (20100428 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [HIGH] KlogAcpiNamespaceLookupFailure: Test 1, HIGH klog Kernel message: [ 0.375585] ACPI Error (dswload-0677): klog [USB0] Namespace lookup failure, AE_NOT_FOUND klog klog ADVICE: The kernel has detected an error trying to execute klog an Method and it cannot find an object. This is indicates klog a bug in the DSDT or SSDT AML code. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 0.375609] ACPI Error (psparse-0537): Method klog parse/execution failed [] (Node c09fb6c8), AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 0.375966] ACPI Error (psparse-0537): Method klog parse/execution failed [] (Node c0992f7c), AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectAlreadyExists: Test 1, HIGH klog Kernel message: [ 0.376047] ACPI Error: Method parse klog /execution failed [_SB_.PCI0._OSC] (Node dd825ca8), klog AE_ALREADY_EXISTS (20110413/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiNoHandlerForRegion: Test 1, HIGH klog Kernel message: [ 0.376092] ACPI Error: No handler for klog Region [ECXP] (ffff88007cf31ab0) [EmbeddedControl] klog (20100428/evregion-369) klog klog ADVICE: ACPI attempted to read or write to a region klog however the ACPI driver does not have a handler klog implemented for this particular region space. The read klog /write will fail and undefined behaviour will occur. klog klog FAILED [HIGH] KlogAcpiObjectDoesNotExist: Test 1, HIGH klog Kernel message: [ 0.376106] ACPI Error (psparse-0537): klog Method parse/execution failed [_PR_.CPU0._OSC] (Node klog ffff88007cf3f440), AE_NOT_EXIST klog klog ADVICE: The ACPI interpreter failed to execute or parse klog some AML because a object or control did not exist. This klog normally occurs because of buggy firmware and may lead to klog unexpected behaviour or loss of functionality. klog klog FAILED [HIGH] KlogAcpiObjectDoesNotExist: Test 1, HIGH klog Kernel message: [ 0.376141] ACPI Error (psparse-0537): klog Method parse/execution failed [_PR_.CPU0._PDC] (Node klog ffff88007cf3f420), AE_NOT_EXIST klog klog ADVICE: The ACPI interpreter failed to execute or parse klog some AML because a object or control did not exist. This klog normally occurs because of buggy firmware and may lead to klog unexpected behaviour or loss of functionality. klog klog FAILED [HIGH] KlogAcpiObjectAlreadyExists: Test 1, HIGH klog Kernel message: [ 0.376733] ACPI Error: Method parse klog /execution failed [_SB_.PCI0._OSC] (Node f5026ca8), klog AE_ALREADY_EXISTS (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.378931] ACPI Warning: Incorrect klog checksum in table [OEMB] - 33, should be 2C (20090903 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.379815] ACPI Warning: Incorrect klog checksum in table [SSDT] - D5, should be 3E (20090903 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.380609] ACPI Warning: Incorrect klog checksum in table [SSDT] - 8C, should be DC (20090903 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [HIGH] KlogAcpiObjectAlreadyExists: Test 1, HIGH klog Kernel message: [ 0.381039] ACPI Error (psparse-0537): klog Method parse/execution failed [_SB_.PCI0._OSC] (Node klog f7016a38), AE_ALREADY_EXISTS klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.381211] ACPI Warning: Incorrect klog checksum in table [OEMB] - 8E, should be 89 (20090903 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiMmconfigNotReserved: Test 1, klog MEDIUM Kernel message: [ 0.381478] [Firmware Bug]: PCI: klog MMCONFIG at [mem 0xe0000000-0xe06fffff] not reserved in klog ACPI motherboard resources klog klog ADVICE: It appears that PCI config space has been klog configured for a specific device but does not appear to be klog reserved by the ACPI motherboard resources. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 0.382740] ACPI Error (psparse-0537): Method klog parse/execution failed [_SB_._OSC] (Node ffff88003f013ca0) klog , AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.383518] ACPI Warning: Incorrect klog checksum in table [ATKG] - 0x0F, should be 0xE7 (20100428 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.384684] ACPI Warning: Incorrect klog checksum in table [OEMB] - 0x4E, should be 0x3F (20100428 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 0.384722] ACPI Error (psparse-0537): Method klog parse/execution failed [_SB_.PCI0.HPET._CRS] (Node klog ffff88007db32220), AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 0.384811] ACPI Error (psparse-0537): Method klog parse/execution failed [_SB_.PCI0.RTC_._CRS] (Node klog ffff88007db322c0), AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.385777] ACPI Warning: Incorrect klog checksum in table [TCPA] - 00, should be 89 (20090903 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.388556] ACPI Warning: Incorrect klog checksum in table [ATKG] - 6A, should be E5 (20090903 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.388736] ACPI Warning: Incorrect klog checksum in table [OEMB] - 8C, should be 83 (20090903 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [HIGH] KlogAcpiNamespaceLookupFailure: Test 1, HIGH klog Kernel message: [ 0.390341] ACPI Error: [GUR_._BAS] klog Namespace lookup failure, AE_NOT_FOUND (20110112 klog /psargs-359) klog klog ADVICE: The kernel has detected an error trying to execute klog an Method and it cannot find an object. This is indicates klog a bug in the DSDT or SSDT AML code. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 0.390354] ACPI Error: Method parse/execution klog failed [_SB_.PCI0.MBIO._CRS] (Node ffff880078f30aa0), klog AE_NOT_FOUND (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [MEDIUM] KlogAcpiMmconfigNotReserved: Test 1, klog MEDIUM Kernel message: [ 0.390975] [Firmware Bug]: PCI: klog MMCONFIG at [mem 0xe0000000-0xe08fffff] not reserved in klog ACPI motherboard resources klog klog ADVICE: It appears that PCI config space has been klog configured for a specific device but does not appear to be klog reserved by the ACPI motherboard resources. klog klog FAILED [HIGH] KlogAcpiReturnPackageZeroElements: Test 1, klog HIGH Kernel message: [ 0.393086] ACPI Warning: For klog _TZ_.THRM._PSL: Return Package has no elements (empty) klog (20110413/nspredef-456) klog klog ADVICE: ACPI AML interpreter executed a Method that klog returned a package with no elements inside it. This is klog most probably a bug in the Method and needs to be fixed. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 0.395834] ACPI Error (psparse-0537): Method klog parse/execution failed [_SB_.PCI0._OSC] (Node klog ffff88013ba393a0), AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [MEDIUM] KlogAcpiInvalidPssFrequency: Test 1, klog MEDIUM Kernel message: [ 0.396197] [Firmware Bug]: ACPI: klog Invalid BIOS _PSS frequency: 0x0 MHz klog klog ADVICE: _PSS (Performance Supported States) package has an klog incorrectly define core frequency (first DWORD entry in klog the _PSS package). klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.396945] ACPI Warning: Incorrect klog checksum in table [TCPA] - 00, should be 96 (20090903 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.397644] ACPI Warning: Incorrect klog checksum in table [ATKG] - F9, should be E5 (20090903 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.398231] ACPI Warning: Incorrect klog checksum in table [ATKG] - 12, should be 07 (20090903 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.398290] ACPI Warning: Incorrect klog checksum in table [ATKG] - 01, should be 23 (20090903 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [HIGH] KlogAcpiFieldExceedsBuffer: Test 1, HIGH klog Kernel message: [ 0.399990] ACPI Error: Field [ASSM] at klog 524320 exceeds Buffer [BUF0] size 688 (bits) (20110112 klog /dsopcode-597) klog klog ADVICE: Failed to initialise an ACPI buffer field, the klog field exceeded the buffer size provided. This is a klog firmware bug. klog klog FAILED [HIGH] KlogAcpiBufferLimit: Test 1, HIGH Kernel klog message: [ 0.399996] ACPI Error: Method parse/execution klog failed [_SB_.MEM_._CRS] (Node ffff8800b8e38000), klog AE_AML_BUFFER_LIMIT (20110112/psparse-536) klog klog ADVICE: Generally this error occurs because of access klog outside of a buffer. This occurs for several reasons: a) A klog field does not fit within the current length of a buffer, klog b) an ACPI table load did not fit into a buffer, c) An klog attempt to convert a buffer into an integer failed because klog the buffer was zero sized, d) a SMBus/IPMI klog /GenericSerialBus write failed because the buffer was too klog small, e) An index into a buffer was too long and fell klog outside the buffer. klog klog FAILED [HIGH] KlogAcpiBufferLimit: Test 1, HIGH Kernel klog message: [ 0.400012] ACPI Error: Method execution failed klog [_SB_.MEM_._CRS] (Node ffff8800b8e38000), klog AE_AML_BUFFER_LIMIT (20110112/uteval-103) klog klog ADVICE: Generally this error occurs because of access klog outside of a buffer. This occurs for several reasons: a) A klog field does not fit within the current length of a buffer, klog b) an ACPI table load did not fit into a buffer, c) An klog attempt to convert a buffer into an integer failed because klog the buffer was zero sized, d) a SMBus/IPMI klog /GenericSerialBus write failed because the buffer was too klog small, e) An index into a buffer was too long and fell klog outside the buffer. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.400212] ACPI Warning: Incorrect klog checksum in table [TCPA] - 0x00, should be 0x88 (20110112 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.401117] ACPI Warning: Incorrect klog checksum in table [ATKG] - 0F, should be E7 (20090903 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.404616] ACPI Warning: Incorrect klog checksum in table [OEMB] - A5, should be A0 (20090903 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 0.406016] ACPI Error (psparse-0537): Method klog parse/execution failed [_SB_.ADP0.ADJP] (Node klog ffff88013ba3c5a0), AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 0.406038] ACPI Error (psparse-0537): Method klog parse/execution failed [_SB_.ADP0._PSR] (Node klog ffff88013ba3c560), AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.407719] ACPI Warning: Incorrect klog checksum in table [OEMB] - 72, should be 69 (20090903 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [HIGH] KlogAcpiObjectAlreadyExists: Test 1, HIGH klog Kernel message: [ 0.408529] ACPI Error: Method parse klog /execution failed [_SB_.PCI0._OSC] (Node f4c285b8), klog AE_ALREADY_EXISTS (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.414781] ACPI Warning: Incorrect klog checksum in table [OEMB] - CD, should be C8 (20090903 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [HIGH] KlogAcpiReturnPackageTypeMismatch: Test 1, klog HIGH Kernel message: [ 0.415975] ACPI Warning for klog _TZ_.THRM._PSL: Return Package type mismatch at index 0 - klog found [NULL Object Descriptor], expected Reference klog (20090903/nspredef-1012) klog klog ADVICE: ACPI AML interpreter executed a Method that klog returned a package with incorrectly typed data. The klog offending method needs to be fixed. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.418105] ACPI Warning: Incorrect klog checksum in table [ATKG] - 76, should be FE (20090903 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [HIGH] KlogAcpiNamespaceLookupFailure: Test 1, HIGH klog Kernel message: [ 0.420210] ACPI Error: [CAPD] Namespace klog lookup failure, AE_ALREADY_EXISTS (20110413/dsfield-143) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectAlreadyExists: Test 1, HIGH klog Kernel message: [ 0.420218] ACPI Error: Method parse klog /execution failed [_SB_.PCI0._OSC] (Node ffff88022b749b18) klog , AE_ALREADY_EXISTS (20110413/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiFieldExceedsBuffer: Test 1, HIGH klog Kernel message: [ 0.420241] ACPI Error: Field [I9MN] at klog 544 exceeds Buffer [IORT] size 464 (bits) (20100428 klog /dsopcode-597) klog klog ADVICE: Failed to initialise an ACPI buffer field, the klog field exceeded the buffer size provided. This is a klog firmware bug. klog klog FAILED [HIGH] KlogAcpiBufferLimit: Test 1, HIGH Kernel klog message: [ 0.420248] ACPI Error (psparse-0537): Method klog parse/execution failed [_SB_.PCI0.LPC0.PMIO._CRS] (Node klog ffff88013142fac0), AE_AML_BUFFER_LIMIT klog klog ADVICE: Generally this error occurs because of access klog outside of a buffer. This occurs for several reasons: a) A klog field does not fit within the current length of a buffer, klog b) an ACPI table load did not fit into a buffer, c) An klog attempt to convert a buffer into an integer failed because klog the buffer was zero sized, d) a SMBus/IPMI klog /GenericSerialBus write failed because the buffer was too klog small, e) An index into a buffer was too long and fell klog outside the buffer. klog klog FAILED [HIGH] KlogAcpiBufferLimit: Test 1, HIGH Kernel klog message: [ 0.420284] ACPI Error (uteval-0250): Method klog execution failed [_SB_.PCI0.LPC0.PMIO._CRS] (Node klog ffff88013142fac0), AE_AML_BUFFER_LIMIT klog klog ADVICE: Generally this error occurs because of access klog outside of a buffer. This occurs for several reasons: a) A klog field does not fit within the current length of a buffer, klog b) an ACPI table load did not fit into a buffer, c) An klog attempt to convert a buffer into an integer failed because klog the buffer was zero sized, d) a SMBus/IPMI klog /GenericSerialBus write failed because the buffer was too klog small, e) An index into a buffer was too long and fell klog outside the buffer. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.420323] ACPI Warning: Incorrect klog checksum in table [ATKG] - 0xC3, should be 0x59 (20110112 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [HIGH] KlogAcpiPackageListLargerThanExpected: Test klog 1, HIGH Kernel message: [ 0.422032] ACPI Warning klog (dsobject-0501): Package List length (6) larger than klog NumElements count (3), truncated klog klog ADVICE: A Method has returned a Package List that was klog larger than expected. klog klog FAILED [HIGH] KlogAcpiReturnPackageZeroElements: Test 1, klog HIGH Kernel message: [ 0.424909] ACPI Warning for klog _SB_.PCI0.P2P_._PRT: Return Package has no elements klog (empty) (20100428/nspredef-456) klog klog ADVICE: ACPI AML interpreter executed a Method that klog returned a package with no elements inside it. This is klog most probably a bug in the Method and needs to be fixed. klog klog FAILED [HIGH] KlogAcpiNamespaceLookupFailure: Test 1, HIGH klog Kernel message: [ 0.426823] ACPI Error (psargs-0359): klog [_PR_.CPU0._PSS] Namespace lookup failure, AE_NOT_FOUND klog klog ADVICE: The kernel has detected an error trying to execute klog an Method and it cannot find an object. This is indicates klog a bug in the DSDT or SSDT AML code. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 0.426833] ACPI Error (psparse-0537): Method klog parse/execution failed [_SB_.AC__.ADJP] (Node klog ffff88007b32ee00), AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 0.426872] ACPI Error (psparse-0537): Method klog parse/execution failed [_SB_.AC__._PSR] (Node klog ffff88007b32edc0), AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiBadAmlCode: Test 1, HIGH Kernel klog message: [ 0.429245] ACPI Warning for _PR_.CPU0._TSD: klog Incorrectly formed Package, attempting repair (20090903 klog /nsrepair-200) klog klog ADVICE: ACPI AML intepreter has found some non-conforming klog AML code. This should be investigated and fixed. klog klog FAILED [HIGH] KlogAcpiBadAmlCode: Test 1, HIGH Kernel klog message: [ 0.430887] ACPI Warning for _PR_.CPU1._TSD: klog Incorrectly formed Package, attempting repair (20090903 klog /nsrepair-200) klog klog ADVICE: ACPI AML intepreter has found some non-conforming klog AML code. This should be investigated and fixed. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.434593] ACPI Warning: Incorrect klog checksum in table [GSCI] - D2, should be A5 (20090903 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 0.436921] ACPI Error (psparse-0537): Method klog parse/execution failed [_SB_.PCI0._OSC] (Node klog ffff88013b62ccc0), AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.438019] ACPI Warning: Incorrect klog checksum in table [ATKG] - C8, should be E5 (20090903 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [HIGH] KlogAcpiParameterCountMistmatch: Test 1, klog HIGH Kernel message: [ 0.440405] ACPI Warning for klog _SB_.PCI0._OSC: Parameter count mismatch - ASL declared 5, klog ACPI requires 4 (20100428/nspredef-352) klog klog ADVICE: The ACPI Method was executing with a different klog number of parameters than the Method expected. This should klog be fixed. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.441805] ACPI Warning: Incorrect klog checksum in table [OEMB] - B2, should be B1 (20090903 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [HIGH] KlogAcpiObjectAlreadyExists: Test 1, HIGH klog Kernel message: [ 0.444897] ACPI Error: Method parse klog /execution failed [_SB_.PCI0._OSC] (Node f4c252a0), klog AE_ALREADY_EXISTS (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 0.450562] ACPI Error: Method parse/execution klog failed [_SB_.PCI0._OSC] (Node ffff8800b8e33ca8), klog AE_NOT_FOUND (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiNamespaceLookupFailure: Test 1, HIGH klog Kernel message: [ 0.451517] ACPI Error (psargs-0359): klog [GUR_._BAS] Namespace lookup failure, AE_NOT_FOUND klog klog ADVICE: The kernel has detected an error trying to execute klog an Method and it cannot find an object. This is indicates klog a bug in the DSDT or SSDT AML code. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 0.451682] ACPI Error (psparse-0537): Method klog parse/execution failed [_SB_.PCI0.MBIO._CRS] (Node klog ffff88007bb2a880), AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiReturnPackageTypeMismatch: Test 1, klog HIGH Kernel message: [ 0.453111] ACPI Warning for klog _SB_.BAT1._BIF: Return Package type mismatch at index 12 - klog found Integer, expected String/Buffer (20090903 klog /nspredef-1012) klog klog ADVICE: ACPI AML interpreter executed a Method that klog returned a package with incorrectly typed data. The klog offending method needs to be fixed. klog klog FAILED [HIGH] KlogAcpiReturnPackageTypeMismatch: Test 1, klog HIGH Kernel message: [ 0.454555] ACPI Warning for klog _PR_.CPU0._PSS: Return Package type mismatch at index 3 - klog found Integer, expected Package (20100428/nspredef-1059) klog klog ADVICE: ACPI AML interpreter executed a Method that klog returned a package with incorrectly typed data. The klog offending method needs to be fixed. klog klog FAILED [HIGH] KlogAcpiReturnPackageTypeMismatch: Test 1, klog HIGH Kernel message: [ 0.454838] ACPI Warning for klog _PR_.CPU1._PSS: Return Package type mismatch at index 3 - klog found Integer, expected Package (20100428/nspredef-1059) klog klog ADVICE: ACPI AML interpreter executed a Method that klog returned a package with incorrectly typed data. The klog offending method needs to be fixed. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.455674] ACPI Warning: Incorrect klog checksum in table [SSDT] - 83, should be 7F (20090903 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.459126] ACPI Warning: Incorrect klog checksum in table [SSDT] - 4C, should be 12 (20090903 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [HIGH] KlogAcpiReturnPackageZeroElements: Test 1, klog HIGH Kernel message: [ 0.460622] ACPI Warning: For klog _SB_.PCI0.P32_._PRT: Return Package has no elements klog (empty) (20110112/nspredef-456) klog klog ADVICE: ACPI AML interpreter executed a Method that klog returned a package with no elements inside it. This is klog most probably a bug in the Method and needs to be fixed. klog klog FAILED [HIGH] KlogAcpiNamespaceLookupFailure: Test 1, HIGH klog Kernel message: [ 0.461767] ACPI Error: [CAPB] Namespace klog lookup failure, AE_ALREADY_EXISTS (20110413/dsfield-143) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectAlreadyExists: Test 1, HIGH klog Kernel message: [ 0.461793] ACPI Error: Method parse klog /execution failed [_SB_.PCI0._OSC] (Node ffff88003cdb0f00) klog , AE_ALREADY_EXISTS (20110413/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.462573] ACPI Warning: Incorrect klog checksum in table [OEMB] - 95, should be 5E 20090521 klog tbutils-246 klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 0.468216] ACPI Error (psparse-0537): Method klog parse/execution failed [_PR_.CPU1._CST] (Node klog ffff88007c5cc380), AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectAlreadyExists: Test 1, HIGH klog Kernel message: [ 0.468859] ACPI Error (psparse-0537): klog Method parse/execution failed [_SB_.PCI0._OSC] (Node klog ffff88003f1afdc0), AE_ALREADY_EXISTS klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 0.475076] ACPI Error (psparse-0537): Method klog parse/execution failed [_SB_.PCI0.SATA.CHN0._GTM] (Node klog f701eb28), AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 0.475159] ACPI Error (psparse-0537): Method klog parse/execution failed [_SB_.PCI0.SATA.CHN1._GTM] (Node klog f701ec18), AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 0.475441] ACPI Error (psparse-0537): Method klog parse/execution failed [_SB_.PCI0.SAT1.CHN0._GTM] (Node klog f70202a0), AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 0.475506] ACPI Error (psparse-0537): Method klog parse/execution failed [_SB_.PCI0.SAT1.CHN1._GTM] (Node klog f7020390), AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.479385] ACPI Warning: Incorrect klog checksum in table [TCPA] - 0x00, should be 0x88 (20100428 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [HIGH] KlogAcpiObjectAlreadyExists: Test 1, HIGH klog Kernel message: [ 0.479821] ACPI Error: Method parse klog /execution failed [_SB_.PCI0._OSC] (Node f3c28a68), klog AE_ALREADY_EXISTS (20110413/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectAlreadyExists: Test 1, HIGH klog Kernel message: [ 0.481067] ACPI Error: Method parse klog /execution failed [_SB_.PCI0._OSC] (Node f4028a68), klog AE_ALREADY_EXISTS (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectAlreadyExists: Test 1, HIGH klog Kernel message: [ 0.482955] ACPI Error: Method parse klog /execution failed [_SB_.PCI0._OSC] (Node ffff88003d9b0f00) klog , AE_ALREADY_EXISTS (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectAlreadyExists: Test 1, HIGH klog Kernel message: [ 0.484974] ACPI Error: Method parse klog /execution failed [_SB_.PCI0._OSC] (Node f3c28a68), klog AE_ALREADY_EXISTS (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiReturnPackageTypeMismatch: Test 1, klog HIGH Kernel message: [ 0.485955] ACPI Warning: For klog _TZ_.THRM._PSL: Return Package type mismatch at index 0 - klog found [NULL Object Descriptor], expected Reference klog (20110112/nspredef-1059) klog klog ADVICE: ACPI AML interpreter executed a Method that klog returned a package with incorrectly typed data. The klog offending method needs to be fixed. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.487180] ACPI Warning: Incorrect klog checksum in table [TAMG] - 0x33, should be 0x32 (20110112 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.487365] ACPI Warning: Incorrect klog checksum in table [TAMG] - 0x99, should be 0x98 (20110112 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.490256] ACPI Warning: Incorrect klog checksum in table [ATKG] - 0x22, should be 0x53 (20110112 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [HIGH] KlogAcpiParameterCountMistmatch: Test 1, klog HIGH Kernel message: [ 0.490491] ACPI Warning: For klog _SB_.PCI0._OSC: Parameter count mismatch - ASL declared 5, klog ACPI requires 4 (20110413/nspredef-352) klog klog ADVICE: The ACPI Method was executing with a different klog number of parameters than the Method expected. This should klog be fixed. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.491491] ACPI Warning: Incorrect klog checksum in table [SSDT] - 0x4A, should be 0xD9 (20110112 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 0.492569] ACPI Error (psparse-0537): Method klog parse/execution failed [] (Node ffffffff81a08440), klog AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiNamespaceLookupFailure: Test 1, HIGH klog Kernel message: [ 0.492648] ACPI Error (dswload-0781): klog [PRID] Namespace lookup failure, AE_ALREADY_EXISTS klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectAlreadyExists: Test 1, HIGH klog Kernel message: [ 0.492655] ACPI Error (psparse-0537): klog Method parse/execution failed [] (Node ffffffff81a08440), klog AE_ALREADY_EXISTS klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectAlreadyExists: Test 1, HIGH klog Kernel message: [ 0.492811] ACPI Error: Method parse klog /execution failed [_SB_.PCI0._OSC] (Node f5428a68), klog AE_ALREADY_EXISTS (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.494198] ACPI Warning: Incorrect klog checksum in table [SSDT] - 0x37, should be 0xC7 (20110112 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.496094] ACPI Warning: Incorrect klog checksum in table [TCPA] - F8, should be 9C (20090903 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [HIGH] KlogAcpiReturnPackageZeroElements: Test 1, klog HIGH Kernel message: [ 0.497662] ACPI Warning klog (nspredef-0357): _SB_.PCI0.P2P_._PRT: Return Package has klog no elements (empty) [20080926] klog klog ADVICE: ACPI AML interpreter executed a Method that klog returned a package with no elements inside it. This is klog most probably a bug in the Method and needs to be fixed. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.497913] ACPI Warning: Incorrect klog checksum in table [TAMG] - 0xFA, should be 0xF9 (20100428 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.498775] ACPI Warning: Incorrect klog checksum in table [TAMG] - 0xB2, should be 0xB1 (20100428 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.498976] ACPI Warning: Incorrect klog checksum in table [GSCI] - 7B, should be 04 (20090903 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 0.500043] ACPI Error (psparse-0537): Method klog parse/execution failed [_SB_.PCI0.LPC0.EC0_._REG] (Node klog ffff8800ac22d040), AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectAlreadyExists: Test 1, HIGH klog Kernel message: [ 0.501138] ACPI Error: Method parse klog /execution failed [_SB_.PCI0._OSC] (Node f3c28a38), klog AE_ALREADY_EXISTS (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectAlreadyExists: Test 1, HIGH klog Kernel message: [ 0.505041] ACPI Error: Method parse klog /execution failed [_SB_.PCI0._OSC] (Node f4028a38), klog AE_ALREADY_EXISTS (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectAlreadyExists: Test 1, HIGH klog Kernel message: [ 0.513609] ACPI Error: Method parse klog /execution failed [_SB_.PCI0._OSC] (Node f5428a38), klog AE_ALREADY_EXISTS (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectAlreadyExists: Test 1, HIGH klog Kernel message: [ 0.516158] ACPI Error: Method parse klog /execution failed [_SB_.PCI0._OSC] (Node f74296c0), klog AE_ALREADY_EXISTS (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.526190] ACPI Warning klog (tbutils-0217): Incorrect checksum in table [OEMB] - F3, klog should be EE [20080926] klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [HIGH] KlogAcpiObjectAlreadyExists: Test 1, HIGH klog Kernel message: [ 0.527455] ACPI Error: Method parse klog /execution failed [_SB_.PCI0._OSC] (Node f5422df8), klog AE_ALREADY_EXISTS (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectAlreadyExists: Test 1, HIGH klog Kernel message: [ 0.533028] ACPI Error: Method parse klog /execution failed [_SB_.PCI0._OSC] (Node ffff88003d9b0bb8) klog , AE_ALREADY_EXISTS (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.534826] ACPI Warning: Incorrect klog checksum in table [TCPA] - 0x00, should be 0x7F (20110112 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.538081] ACPI Warning: Incorrect klog checksum in table [OEMB] - C1, should be BC (20090903 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [HIGH] KlogAcpiNoHandlerForRegion: Test 1, HIGH klog Kernel message: [ 0.539131] ACPI Error: No handler for klog Region [RAM_] (ffff88012fa36a20) [EmbeddedControl] klog (20110112/evregion-369) klog klog ADVICE: ACPI attempted to read or write to a region klog however the ACPI driver does not have a handler klog implemented for this particular region space. The read klog /write will fail and undefined behaviour will occur. klog klog FAILED [HIGH] KlogAcpiObjectDoesNotExist: Test 1, HIGH klog Kernel message: [ 0.539149] ACPI Error: Method parse klog /execution failed [_SB_.PCI0.LPCB.SNC_.SBRT] (Node klog ffff88012fa4f398), AE_NOT_EXIST (20110112/psparse-536) klog klog ADVICE: The ACPI interpreter failed to execute or parse klog some AML because a object or control did not exist. This klog normally occurs because of buggy firmware and may lead to klog unexpected behaviour or loss of functionality. klog klog FAILED [HIGH] KlogAcpiObjectDoesNotExist: Test 1, HIGH klog Kernel message: [ 0.539161] ACPI Error: Method parse klog /execution failed [_SB_.PCI0.LPCB.EC0_._REG] (Node klog ffff88012fa396b8), AE_NOT_EXIST (20110112/psparse-536) klog klog ADVICE: The ACPI interpreter failed to execute or parse klog some AML because a object or control did not exist. This klog normally occurs because of buggy firmware and may lead to klog unexpected behaviour or loss of functionality. klog klog FAILED [HIGH] KlogAcpiNamespaceLookupFailure: Test 1, HIGH klog Kernel message: [ 0.540036] ACPI Error: [_PR_.C002._PPC] klog Namespace lookup failure, AE_NOT_FOUND (20110112 klog /psargs-359) klog klog ADVICE: The kernel has detected an error trying to execute klog an Method and it cannot find an object. This is indicates klog a bug in the DSDT or SSDT AML code. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 0.540046] ACPI Error: Method parse/execution klog failed [_SB_.PCI0.LPC0.EC0_._REG] (Node ffff880107e623c0), klog AE_NOT_FOUND (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiPackageLimit: Test 1, HIGH Kernel klog message: [ 0.541238] ACPI Error: Method parse/execution klog failed [_TZ_.C2E8] (Node f482d108), AE_AML_PACKAGE_LIMIT klog (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiPackageLimit: Test 1, HIGH Kernel klog message: [ 0.541258] ACPI Error: Method parse/execution klog failed [_TZ_.C2E7] (Node f482d0f0), AE_AML_PACKAGE_LIMIT klog (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiPackageLimit: Test 1, HIGH Kernel klog message: [ 0.541277] ACPI Error: Method parse/execution klog failed [_TZ_.TZ2_._TMP] (Node f482d7c8), klog AE_AML_PACKAGE_LIMIT (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.548650] ACPI Warning: Incorrect klog checksum in table [TCPA] - 00, should be 87 (20090903 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.550271] ACPI Warning: Incorrect klog checksum in table [ATKG] - 0xDC, should be 0x0E (20110112 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [HIGH] KlogAcpiObjectAlreadyExists: Test 1, HIGH klog Kernel message: [ 0.563415] ACPI Error: Method parse klog /execution failed [_SB_.PCI0._OSC] (Node ffff88003d9af848) klog , AE_ALREADY_EXISTS (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiReturnPackageZeroElements: Test 1, klog HIGH Kernel message: [ 0.566332] ACPI Warning: For klog _TZ_.THRM._AL0: Return Package has no elements (empty) klog (20110413/nspredef-456) klog klog ADVICE: ACPI AML interpreter executed a Method that klog returned a package with no elements inside it. This is klog most probably a bug in the Method and needs to be fixed. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.568235] ACPI Warning: Incorrect klog checksum in table [TCPA] - 00, should be 7F 20090521 klog tbutils-246 klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.581397] ACPI Warning: Incorrect klog checksum in table [ATKG] - 0x24, should be 0x16 (20110112 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [HIGH] KlogAcpiReturnPackageZeroElements: Test 1, klog HIGH Kernel message: [ 0.583718] ACPI Warning: klog _SB_.PCI0.PCI2._PRT: Return Package has no elements klog (empty) 20090521 nspredef-434 klog klog ADVICE: ACPI AML interpreter executed a Method that klog returned a package with no elements inside it. This is klog most probably a bug in the Method and needs to be fixed. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.591409] ACPI Warning: Incorrect klog checksum in table [ATKG] - 0x1E, should be 0x16 (20110112 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [HIGH] KlogAcpiFieldExceedsBuffer: Test 1, HIGH klog Kernel message: [ 0.591722] ACPI Error: Field [ASSM] at klog 524320 exceeds Buffer [BUF0] size 880 (bits) (20100428 klog /dsopcode-597) klog klog ADVICE: Failed to initialise an ACPI buffer field, the klog field exceeded the buffer size provided. This is a klog firmware bug. klog klog FAILED [HIGH] KlogAcpiBufferLimit: Test 1, HIGH Kernel klog message: [ 0.591729] ACPI Error (psparse-0537): Method klog parse/execution failed [_SB_.MEM_._CRS] (Node klog ffff8800b4040f60), AE_AML_BUFFER_LIMIT klog klog ADVICE: Generally this error occurs because of access klog outside of a buffer. This occurs for several reasons: a) A klog field does not fit within the current length of a buffer, klog b) an ACPI table load did not fit into a buffer, c) An klog attempt to convert a buffer into an integer failed because klog the buffer was zero sized, d) a SMBus/IPMI klog /GenericSerialBus write failed because the buffer was too klog small, e) An index into a buffer was too long and fell klog outside the buffer. klog klog FAILED [HIGH] KlogAcpiBufferLimit: Test 1, HIGH Kernel klog message: [ 0.591760] ACPI Error (uteval-0250): Method klog execution failed [_SB_.MEM_._CRS] (Node ffff8800b4040f60), klog AE_AML_BUFFER_LIMIT klog klog ADVICE: Generally this error occurs because of access klog outside of a buffer. This occurs for several reasons: a) A klog field does not fit within the current length of a buffer, klog b) an ACPI table load did not fit into a buffer, c) An klog attempt to convert a buffer into an integer failed because klog the buffer was zero sized, d) a SMBus/IPMI klog /GenericSerialBus write failed because the buffer was too klog small, e) An index into a buffer was too long and fell klog outside the buffer. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 0.593045] ACPI Error (psparse-0537): Method klog parse/execution failed [_PR_.PPCE] (Node f702c7b0), klog AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 0.593072] ACPI Error (psparse-0537): Method klog parse/execution failed [EV4_] (Node f7019648), klog AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 0.593095] ACPI Error (psparse-0537): Method klog parse/execution failed [SMIE] (Node f702ea08), klog AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 0.593119] ACPI Error (psparse-0537): Method klog parse/execution failed [NEVT] (Node f702e9c0), klog AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 0.593142] ACPI Error (psparse-0537): Method klog parse/execution failed [_SB_.PCI0.LPCB.ECDV._Q66] (Node klog f702e678), AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiConvertedBufferToString: Test 1, klog HIGH Kernel message: [ 0.597675] ACPI Warning for klog _SB_.PCI0.LPC_.EC__.BAT0._BIF: Converted Buffer to klog expected String at index 9 (20090903/nsrepair-132) klog klog ADVICE: Method returned a Buffer type instead of a String klog type and ACPI driver automatically converted it to a klog String. It is worth fixing this in the DSDT or SSDT even klog if the kernel fixes it at run time. klog klog FAILED [HIGH] KlogAcpiConvertedBufferToString: Test 1, klog HIGH Kernel message: [ 0.597680] ACPI Warning for klog _SB_.PCI0.LPC_.EC__.BAT0._BIF: Converted Buffer to klog expected String at index 10 (20090903/nsrepair-132) klog klog ADVICE: Method returned a Buffer type instead of a String klog type and ACPI driver automatically converted it to a klog String. It is worth fixing this in the DSDT or SSDT even klog if the kernel fixes it at run time. klog klog FAILED [HIGH] KlogAcpiConvertedBufferToString: Test 1, klog HIGH Kernel message: [ 0.597685] ACPI Warning for klog _SB_.PCI0.LPC_.EC__.BAT0._BIF: Converted Buffer to klog expected String at index 11 (20090903/nsrepair-132) klog klog ADVICE: Method returned a Buffer type instead of a String klog type and ACPI driver automatically converted it to a klog String. It is worth fixing this in the DSDT or SSDT even klog if the kernel fixes it at run time. klog klog FAILED [HIGH] KlogAcpiConvertedBufferToString: Test 1, klog HIGH Kernel message: [ 0.597689] ACPI Warning for klog _SB_.PCI0.LPC_.EC__.BAT0._BIF: Converted Buffer to klog expected String at index 12 (20090903/nsrepair-132) klog klog ADVICE: Method returned a Buffer type instead of a String klog type and ACPI driver automatically converted it to a klog String. It is worth fixing this in the DSDT or SSDT even klog if the kernel fixes it at run time. klog klog FAILED [HIGH] KlogAcpiNamespaceLookupFailure: Test 1, HIGH klog Kernel message: [ 0.600451] ACPI Error (psargs-0359): klog [_SB_.PCI0.EGBA] Namespace lookup failure, AE_NOT_FOUND klog klog ADVICE: The kernel has detected an error trying to execute klog an Method and it cannot find an object. This is indicates klog a bug in the DSDT or SSDT AML code. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 0.600456] ACPI Error (psparse-0537): Method klog parse/execution failed [_SB_.PCI0.LPC_.MBRD._CRS] (Node klog f7416318), AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.612305] ACPI Warning: Incorrect klog checksum in table [SSDT] - 6C, should be FB (20090903 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [HIGH] KlogAcpiNamespaceLookupFailure: Test 1, HIGH klog Kernel message: [ 0.612793] ACPI Error: [CAPB] Namespace klog lookup failure, AE_ALREADY_EXISTS (20110112/dsfield-143) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectAlreadyExists: Test 1, HIGH klog Kernel message: [ 0.612820] ACPI Error: Method parse klog /execution failed [_SB_.PCI0._OSC] (Node ffff88003d9ae190) klog , AE_ALREADY_EXISTS (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.614155] ACPI Warning: Incorrect klog checksum in table [SSDT] - 37, should be C7 (20090903 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [HIGH] KlogAcpiReturnPackageTypeMismatch: Test 1, klog HIGH Kernel message: [ 0.620955] ACPI Warning for klog _TZ_.THRM._PSL: Return Package type mismatch at index 0 - klog found Processor, expected Reference (20090903 klog /nspredef-1012) klog klog ADVICE: ACPI AML interpreter executed a Method that klog returned a package with incorrectly typed data. The klog offending method needs to be fixed. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 0.621415] ACPI Error (psparse-0537): Method klog parse/execution failed [_PR_.PPCE] (Node f702c828), klog AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 0.621443] ACPI Error (psparse-0537): Method klog parse/execution failed [EV4_] (Node f7019ed0), klog AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 0.621468] ACPI Error (psparse-0537): Method klog parse/execution failed [SMIE] (Node f702ea98), klog AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 0.621493] ACPI Error (psparse-0537): Method klog parse/execution failed [NEVT] (Node f702ea50), klog AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 0.621518] ACPI Error (psparse-0537): Method klog parse/execution failed [_SB_.PCI0.LPCB.ECDV._Q66] (Node klog f702e708), AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [MEDIUM] KlogAcpiMmconfigNotReserved: Test 1, klog MEDIUM Kernel message: [ 0.625680] [Firmware Bug]: PCI: klog MMCONFIG at [mem 0xe0000000-0xefffffff] not reserved in klog ACPI motherboard resources klog klog ADVICE: It appears that PCI config space has been klog configured for a specific device but does not appear to be klog reserved by the ACPI motherboard resources. klog klog FAILED [HIGH] KlogAcpiNamespaceLookupFailure: Test 1, HIGH klog Kernel message: [ 0.627242] ACPI Error (psargs-0359): klog [_SB_.PCI0.EC__.HOTT] Namespace lookup failure, klog AE_NOT_FOUND klog klog ADVICE: The kernel has detected an error trying to execute klog an Method and it cannot find an object. This is indicates klog a bug in the DSDT or SSDT AML code. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 0.627255] ACPI Error (psparse-0537): Method klog parse/execution failed [_TZ_.TZ01._HOT] (Node klog ffff88013ba3ae60), AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.628646] ACPI Warning: Incorrect klog checksum in table [OEMB] - 0xFA, should be 0x1E (20100428 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [HIGH] KlogAcpiErstInvalid: Test 1, HIGH Kernel klog message: [ 0.628687] [Firmware Bug]: ERST: ERST table is klog invalid klog klog ADVICE: The Error Record Serialization Table (ERST) seems klog to be invalid. This normally indicates that the ERST table klog header size is too small, or the table size (excluding klog header) is not a multiple of the ERST entries. klog klog FAILED [HIGH] KlogAcpiObjectAlreadyExists: Test 1, HIGH klog Kernel message: [ 0.630258] ACPI Error: Method parse klog /execution failed [_SB_.PCI0._OSC] (Node ffff88007af370a0) klog , AE_ALREADY_EXISTS (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.641157] ACPI Warning: Incorrect klog checksum in table [OEMB] - C4, should be C1 (20090903 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiMmconfigNotReserved: Test 1, klog MEDIUM Kernel message: [ 0.644838] [Firmware Bug]: PCI: klog MMCONFIG at [mem 0xe0000000-0xe09fffff] not reserved in klog ACPI motherboard resources klog klog ADVICE: It appears that PCI config space has been klog configured for a specific device but does not appear to be klog reserved by the ACPI motherboard resources. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.646493] ACPI Warning: Incorrect klog checksum in table [OEMB] - 0x5F, should be 0x5A (20100428 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 0.651383] ACPI Error (psparse-0537): Method klog parse/execution failed [_SB_._OSC] (Node ffff88007f416680) klog , AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 0.652133] ACPI Error (psparse-0537): Method klog parse/execution failed [] (Node ffffffff81a2e040), klog AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 0.652695] ACPI Error (psparse-0537): Method klog parse/execution failed [] (Node ffffffff81a0f040), klog AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectAlreadyExists: Test 1, HIGH klog Kernel message: [ 0.653163] ACPI Error: Method parse klog /execution failed [_SB_.PCI0._OSC] (Node ffff88007ab2f460) klog , AE_ALREADY_EXISTS (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.653985] ACPI Warning: Incorrect klog checksum in table [TAMG] - 0x4A, should be 0x49 (20110112 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [HIGH] KlogAcpiObjectAlreadyExists: Test 1, HIGH klog Kernel message: [ 0.654642] ACPI Error: Method parse klog /execution failed [_PR_.CPU1._PDC] (Node ffff88020f44deb0) klog , AE_ALREADY_EXISTS (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectAlreadyExists: Test 1, HIGH klog Kernel message: [ 0.654994] ACPI Error: Method parse klog /execution failed [_PR_.CPU2._PDC] (Node ffff88020f44df50) klog , AE_ALREADY_EXISTS (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectAlreadyExists: Test 1, HIGH klog Kernel message: [ 0.655350] ACPI Error: Method parse klog /execution failed [_PR_.CPU3._PDC] (Node ffff88020f454000) klog , AE_ALREADY_EXISTS (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiNamespaceLookupFailure: Test 1, HIGH klog Kernel message: [ 0.655369] ACPI Error (psargs-0359): klog [_SB_.PCI0.PSKB] Namespace lookup failure, AE_NOT_FOUND klog klog ADVICE: The kernel has detected an error trying to execute klog an Method and it cannot find an object. This is indicates klog a bug in the DSDT or SSDT AML code. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 0.655376] ACPI Error (psparse-0537): Method klog parse/execution failed [_SB_.PCI0.LPC0.SIO_.KBC0._STA] klog (Node ffff880236c47260), AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiNamespaceLookupFailure: Test 1, HIGH klog Kernel message: [ 0.655576] ACPI Error (psargs-0359): klog [_SB_.PCI0.PSMS] Namespace lookup failure, AE_NOT_FOUND klog klog ADVICE: The kernel has detected an error trying to execute klog an Method and it cannot find an object. This is indicates klog a bug in the DSDT or SSDT AML code. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 0.655581] ACPI Error (psparse-0537): Method klog parse/execution failed [_SB_.PCI0.LPC0.SIO_.MSE0._STA] klog (Node ffff880236c47340), AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.656750] ACPI Warning: Incorrect klog checksum in table [OEMB] - 06, should be 05 20090521 klog tbutils-246 klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [HIGH] KlogAcpiReturnTypeMismatch: Test 1, HIGH klog Kernel message: [ 0.658002] ACPI Warning for klog _SB_.PCI0.SATA.PRT0._GTF: Return type mismatch - found klog Integer, expected Buffer (20090903/nspredef-1006) klog klog ADVICE: The ACPI Method returned an incorrect type, this klog should be fixed. klog klog FAILED [HIGH] KlogAcpiObjectAlreadyExists: Test 1, HIGH klog Kernel message: [ 0.658697] ACPI Error (psparse-0537): klog Method parse/execution failed [_SB_.PCI0._OSC] (Node klog ffff88023fc14aa0), AE_ALREADY_EXISTS klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 0.662008] ACPI Error (psparse-0537): Method klog parse/execution failed [] (Node ffffffff81a0c440), klog AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [MEDIUM] KlogAcpiCrsSecondaryBusRangeMissing: Test klog 1, MEDIUM Kernel message: [ 0.663194] [Firmware Bug]: ACPI klog : no secondary bus range in _CRS klog klog ADVICE: _CRS Method should return a secondary bus address klog for the status/command port. The kernel is having to guess klog this based on the _BBN or assume it's 0x00-0xff. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.664875] ACPI Warning: Incorrect klog checksum in table [TAMG] - 0x45, should be 0x44 (20110112 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.666686] ACPI Warning: Incorrect klog checksum in table [TAMG] - 0x9E, should be 0x9D (20100428 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.670109] ACPI Warning: Incorrect klog checksum in table [OEMB] - 5B, should be 4E (20090903 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.670182] ACPI Warning: Incorrect klog checksum in table [TAMG] - C3, should be C2 (20090903 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.670980] ACPI Warning: Incorrect klog checksum in table [TCPA] - 0x00, should be 0x7F (20100428 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.673104] ACPI Warning: Incorrect klog checksum in table [OEMB] - 8C, should be 7D (20090903 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.674282] ACPI Warning: Incorrect klog checksum in table [TAMG] - 0x15, should be 0x14 (20110112 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [HIGH] KlogAcpiNamespaceLookupFailure: Test 1, HIGH klog Kernel message: [ 0.674920] ACPI Error: [SERN] Namespace klog lookup failure, AE_ALREADY_EXISTS (20110413/dswload2-316) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectAlreadyExists: Test 1, HIGH klog Kernel message: [ 0.674938] ACPI Error: Method parse klog /execution failed [_SB_.PCI0.LPC_.EC__.GBIF] (Node klog f3829120), AE_ALREADY_EXISTS (20110413/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectAlreadyExists: Test 1, HIGH klog Kernel message: [ 0.674963] ACPI Error: Method parse klog /execution failed [_SB_.PCI0.LPC_.EC__.BAT1._BIF] (Node klog f3829330), AE_ALREADY_EXISTS (20110413/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.675162] ACPI Warning: Incorrect klog checksum in table [TAMG] - 0x05, should be 0x04 (20110413 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [HIGH] KlogAcpiConvertedBufferToString: Test 1, klog HIGH Kernel message: [ 0.677370] ACPI Warning for klog _SB_.PCI0.BAT0._BIF: Converted Buffer to expected String klog at index 9 (20090903/nsrepair-132) klog klog ADVICE: Method returned a Buffer type instead of a String klog type and ACPI driver automatically converted it to a klog String. It is worth fixing this in the DSDT or SSDT even klog if the kernel fixes it at run time. klog klog FAILED [HIGH] KlogAcpiConvertedBufferToString: Test 1, klog HIGH Kernel message: [ 0.677375] ACPI Warning for klog _SB_.PCI0.BAT0._BIF: Converted Buffer to expected String klog at index 12 (20090903/nsrepair-132) klog klog ADVICE: Method returned a Buffer type instead of a String klog type and ACPI driver automatically converted it to a klog String. It is worth fixing this in the DSDT or SSDT even klog if the kernel fixes it at run time. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.677386] ACPI Warning: Incorrect klog checksum in table [OEMB] - 94, should be 93 (20090903 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.678233] ACPI Warning: Incorrect klog checksum in table [OEMB] - 0x55, should be 0x50 (20100428 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.678877] ACPI Warning: Incorrect klog checksum in table [OEMB] - 88, should be 7F (20090903 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.681297] ACPI Warning: Incorrect klog checksum in table [OEMB] - DA, should be D9 (20090903 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.688066] ACPI Warning: Incorrect klog checksum in table [OEMB] - 60, should be 5F (20090903 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 0.695029] ACPI Error (psparse-0537): Method klog parse/execution failed [] (Node ffffffff81a0e440), klog AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.695887] ACPI Warning: Incorrect klog checksum in table [OEMB] - C1, should be C0 (20090903 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.696587] ACPI Warning: Incorrect klog checksum in table [OEMB] - 0xEE, should be 0xE6 (20100428 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.697769] ACPI Warning: Incorrect klog checksum in table [OEMB] - 0xFC, should be 0xF7 (20100428 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiAmdK8ExpectedPssObjects: Test 1, klog MEDIUM Kernel message: [ 0.700202] [Firmware Bug]: klog powernow-k8: No PSB or ACPI _PSS objects klog klog ADVICE: The _PSS object (Performance Supported States) is klog an optional object that indicates the number of supported klog processor performance states. The powernow-k8 driver klog source states: If you see this message, complain to BIOS klog manufacturer. If he tells you "we do not support Linux" or klog some similar nonsense, remember that Windows 2000 uses the klog same legacy mechanism that the old Linux PSB driver uses. klog Tell them it is broken with Windows 2000. The reference to klog the AMD documentation is chapter 9 in the BIOS and Kernel klog Developer's Guide, which is available on www.amd.com. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.702121] ACPI Warning: Incorrect klog checksum in table [OEMB] - 0x84, should be 0x7B (20100428 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.705041] ACPI Warning: Incorrect klog checksum in table [OEMB] - 0xF3, should be 0xF2 (20100428 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [HIGH] KlogAcpiPackageLimit: Test 1, HIGH Kernel klog message: [ 0.710267] ACPI Error: Method parse/execution klog failed [_TZ_.PSWT] (Node f7424bb8), AE_AML_PACKAGE_LIMIT klog (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiPackageLimit: Test 1, HIGH Kernel klog message: [ 0.710275] ACPI Error: Method parse/execution klog failed [_TZ_.GTTP] (Node f7424b88), AE_AML_PACKAGE_LIMIT klog (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiPackageLimit: Test 1, HIGH Kernel klog message: [ 0.710281] ACPI Error: Method parse/execution klog failed [_TZ_.GFXZ._TMP] (Node f74249a8), klog AE_AML_PACKAGE_LIMIT (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.710890] ACPI Warning: Incorrect klog checksum in table [OEMB] - DF, should be D2 (20090903 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [HIGH] KlogAcpiPackageLimit: Test 1, HIGH Kernel klog message: [ 0.712727] ACPI Error: Method parse/execution klog failed [_TZ_.DTSZ._TMP] (Node f7424ca8), klog AE_AML_PACKAGE_LIMIT (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.715065] ACPI Warning: Incorrect klog checksum in table [OEMB] - 67, should be 64 (20090903 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.715951] ACPI Warning: Incorrect klog checksum in table [OEMB] - 0x9B, should be 0x93 (20100428 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.717350] ACPI Warning: Incorrect klog checksum in table [OEMB] - 0x5C, should be 0x55 (20100428 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.719490] ACPI Warning: Incorrect klog checksum in table [OEMB] - 0x3A, should be 0x39 (20100428 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [HIGH] KlogAcpiNamespaceLookupFailure: Test 1, HIGH klog Kernel message: [ 0.721822] ACPI Error (dswload-0659): klog [USB0] Namespace lookup failure, AE_NOT_FOUND klog klog ADVICE: The kernel has detected an error trying to execute klog an Method and it cannot find an object. This is indicates klog a bug in the DSDT or SSDT AML code. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 0.722199] ACPI Error (psparse-0537): Method klog parse/execution failed [] (Node ffffffff81a4d180), klog AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiReturnTypeMismatch: Test 1, HIGH klog Kernel message: [ 0.725417] ACPI Warning for klog _SB_.PCI0.LPC_.SYSR._CRS: Return type mismatch - found klog Integer, expected Buffer (20090903/nspredef-1006) klog klog ADVICE: The ACPI Method returned an incorrect type, this klog should be fixed. klog klog FAILED [HIGH] KlogAcpiExecFailure: Test 1, HIGH Kernel klog message: [ 0.725429] ACPI Error (uteval-0307): Return klog object type is incorrect [_SB_.PCI0.LPC_.SYSR._CRS] (Node klog ffff88013ba46cc0), AE_TYPE klog klog ADVICE: The kernel has most probably detected an error klog while executing ACPI AML. The error lists the ACPI driver klog module and the line number where the bug has been caught klog and the method that caused the error. klog klog FAILED [HIGH] KlogAcpiExecFailure: Test 1, HIGH Kernel klog message: [ 0.725450] ACPI Error: Type returned from _CRS klog was incorrect: Integer, expected Btypes: 4 (20090903 klog /uteval-313) klog klog ADVICE: The kernel has most probably detected an error klog while executing ACPI AML. The error lists the ACPI driver klog module and the line number where the bug has been caught klog and the method that caused the error. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.725974] ACPI Warning: Incorrect klog checksum in table [OEMB] - 0x7E, should be 0x75 (20100428 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [HIGH] KlogAcpiReturnPackageZeroElements: Test 1, klog HIGH Kernel message: [ 0.736425] ACPI Warning: For klog _SB_.PCI0.PT02._PRT: Return Package has no elements klog (empty) (20110413/nspredef-456) klog klog ADVICE: ACPI AML interpreter executed a Method that klog returned a package with no elements inside it. This is klog most probably a bug in the Method and needs to be fixed. klog klog FAILED [HIGH] KlogAcpiObjectAlreadyExists: Test 1, HIGH klog Kernel message: [ 0.743273] ACPI Error (psparse-0537): klog Method parse/execution failed [_SB_.PCI0._OSC] (Node klog f701f0d8), AE_ALREADY_EXISTS klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiNamespaceLookupFailure: Test 1, HIGH klog Kernel message: [ 0.743525] ACPI Error: [CAPD] Namespace klog lookup failure, AE_ALREADY_EXISTS (20110112/dsfield-143) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectAlreadyExists: Test 1, HIGH klog Kernel message: [ 0.743530] ACPI Error: Method parse klog /execution failed [_SB_.PCI0._OSC] (Node f50273d8), klog AE_ALREADY_EXISTS (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiParameterCountMistmatch: Test 1, klog HIGH Kernel message: [ 0.743538] ACPI Warning: For klog _SB_.PCI0._OSC: Parameter count mismatch - ASL declared 5, klog ACPI requires 4 (20110112/nspredef-352) klog klog ADVICE: The ACPI Method was executing with a different klog number of parameters than the Method expected. This should klog be fixed. klog klog FAILED [HIGH] KlogAcpiFieldExceedsBuffer: Test 1, HIGH klog Kernel message: [ 0.744106] ACPI Error: Field [ASSM] at klog 524320 exceeds Buffer [BUF0] size 880 (bits) (20090903 klog /dsopcode-596) klog klog ADVICE: Failed to initialise an ACPI buffer field, the klog field exceeded the buffer size provided. This is a klog firmware bug. klog klog FAILED [HIGH] KlogAcpiBufferLimit: Test 1, HIGH Kernel klog message: [ 0.744114] ACPI Error (psparse-0537): Method klog parse/execution failed [_SB_.MEM_._CRS] (Node klog ffff88013ba44cc0), AE_AML_BUFFER_LIMIT klog klog ADVICE: Generally this error occurs because of access klog outside of a buffer. This occurs for several reasons: a) A klog field does not fit within the current length of a buffer, klog b) an ACPI table load did not fit into a buffer, c) An klog attempt to convert a buffer into an integer failed because klog the buffer was zero sized, d) a SMBus/IPMI klog /GenericSerialBus write failed because the buffer was too klog small, e) An index into a buffer was too long and fell klog outside the buffer. klog klog FAILED [HIGH] KlogAcpiBufferLimit: Test 1, HIGH Kernel klog message: [ 0.744142] ACPI Error (uteval-0250): Method klog execution failed [_SB_.MEM_._CRS] (Node ffff88013ba44cc0), klog AE_AML_BUFFER_LIMIT klog klog ADVICE: Generally this error occurs because of access klog outside of a buffer. This occurs for several reasons: a) A klog field does not fit within the current length of a buffer, klog b) an ACPI table load did not fit into a buffer, c) An klog attempt to convert a buffer into an integer failed because klog the buffer was zero sized, d) a SMBus/IPMI klog /GenericSerialBus write failed because the buffer was too klog small, e) An index into a buffer was too long and fell klog outside the buffer. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.755111] ACPI Warning: Incorrect klog checksum in table [OEMB] - 2F, should be 2A (20090903 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [HIGH] KlogAcpiObjectAlreadyExists: Test 1, HIGH klog Kernel message: [ 0.772223] ACPI Error: Method parse klog /execution failed [_SB_.PCI0._OSC] (Node f4c250d8), klog AE_ALREADY_EXISTS (20101013/psparse-537) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.775831] ACPI Warning: Incorrect klog checksum in table [TCPA] - 0x00, should be 0x87 (20110112 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.777581] ACPI Warning: Incorrect klog checksum in table [TAMG] - 0xF9, should be 0xF8 (20110112 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.779737] ACPI Warning: Incorrect klog checksum in table [TAMG] - 0x83, should be 0x82 (20110112 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.780967] ACPI Warning: Incorrect klog checksum in table [TAMG] - FA, should be F9 (20090903 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.781225] ACPI Warning: Incorrect klog checksum in table [TAMG] - 0x10, should be 0x0F (20110112 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.781345] ACPI Warning: Incorrect klog checksum in table [TAMG] - 0xB2, should be 0xB1 (20110112 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [HIGH] KlogAcpiNamespaceLookupFailure: Test 1, HIGH klog Kernel message: [ 0.782613] ACPI Error (psargs-0359): klog [RAMB] Namespace lookup failure, AE_NOT_FOUND klog klog ADVICE: The kernel has detected an error trying to execute klog an Method and it cannot find an object. This is indicates klog a bug in the DSDT or SSDT AML code. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.783246] ACPI Warning: Incorrect klog checksum in table [TAMG] - 0x7D, should be 0x7C (20100428 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.786539] ACPI Warning: Incorrect klog checksum in table [TAMG] - 0x2D, should be 0x2C (20110112 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.787253] ACPI Warning: Incorrect klog checksum in table [TAMG] - 0x10, should be 0x0F (20100428 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.788032] ACPI Warning: Incorrect klog checksum in table [TAMG] - 0x04, should be 0x03 (20110413 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [CRITICAL] KlogAcpiSbOscAeAmlBufferLimit: Test 1, klog CRITICAL Kernel message: [ 0.788418] ACPI Error klog (psparse-0537): Method parse/execution failed [_SB_._OSC] klog (Node ffff88030a048b40), AE_AML_BUFFER_LIMIT klog klog ADVICE: Section 6.2.10.2 of V4.0a of the ACPI klog specification states that the _OSC Method should be passed klog an 8 byte buffer of 2 x 32 DWORDs, however it appears that klog the method is possibly trying to access data outside this klog buffer. This is a bug in the _OSC method. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.788607] ACPI Warning: Incorrect klog checksum in table [TAMG] - 0xA2, should be 0xA1 (20110112 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [HIGH] KlogAcpiObjectAlreadyExists: Test 1, HIGH klog Kernel message: [ 0.790513] ACPI Error: Method parse klog /execution failed [_SB_.PCI0.LPC_.EC__.GBIF] (Node klog ffff880079f39f78), AE_ALREADY_EXISTS (20110112 klog /psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectAlreadyExists: Test 1, HIGH klog Kernel message: [ 0.790526] ACPI Error: Method parse klog /execution failed [_SB_.PCI0.LPC_.EC__.BAT0._BIF] (Node klog ffff880079f37118), AE_ALREADY_EXISTS (20110112 klog /psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.791560] ACPI Warning: Incorrect klog checksum in table [SSDT] - 0x3F, should be 0x1F (20110112 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [HIGH] KlogAcpiReturnTypeMismatch: Test 1, HIGH klog Kernel message: [ 0.794367] ACPI Warning for klog _PR_.P002._PSD: Return type mismatch - found Integer, klog expected Package (20090903/nspredef-1006) klog klog ADVICE: The ACPI Method returned an incorrect type, this klog should be fixed. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.795423] ACPI Warning: Incorrect klog checksum in table [SSDT] - 0x3F, should be 0x1F (20100428 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.805111] ACPI Warning: Incorrect klog checksum in table [TCPA] - 00, should be 7E (20090903 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [LOW] KlogAcpiDodWithNoDos: Test 1, LOW Kernel klog message: [ 0.810246] [Firmware Bug]: ACPI(Z01I) defines klog _DOD but not _DOS klog klog ADVICE: ACPI Method _DOD (Enumerate all devices attached klog to display adapter) is defined but we should also have klog _DOS (Enable/Disable output switching) defined but it's klog been omitted. klog klog FAILED [HIGH] KlogAcpiNamespaceLookupFailure: Test 1, HIGH klog Kernel message: [ 0.810687] ACPI Error (dswload-0659): klog [DD02] Namespace lookup failure, AE_NOT_FOUND klog klog ADVICE: The kernel has detected an error trying to execute klog an Method and it cannot find an object. This is indicates klog a bug in the DSDT or SSDT AML code. klog klog FAILED [HIGH] KlogAcpiNamespaceLookupFailure: Test 1, HIGH klog Kernel message: [ 0.810756] ACPI Error (dswload-0659): klog [EHC1] Namespace lookup failure, AE_NOT_FOUND klog klog ADVICE: The kernel has detected an error trying to execute klog an Method and it cannot find an object. This is indicates klog a bug in the DSDT or SSDT AML code. klog klog FAILED [HIGH] KlogAcpiNamespaceLookupFailure: Test 1, HIGH klog Kernel message: [ 0.820565] ACPI Error: [FZHD] Namespace klog lookup failure, AE_NOT_FOUND (20110112/psargs-359) klog klog ADVICE: The kernel has detected an error trying to execute klog an Method and it cannot find an object. This is indicates klog a bug in the DSDT or SSDT AML code. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 0.820571] ACPI Error: Method parse/execution klog failed [_SB_.PCI0.SATA.CHN0._GTM] (Node ffff880127632b40), klog AE_NOT_FOUND (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 0.820632] ACPI Error: Method parse/execution klog failed [_SB_.PCI0.SATA.CHN1._GTM] (Node ffff880127632cd0), klog AE_NOT_FOUND (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 0.821065] ACPI Error: Method parse/execution klog failed [_SB_.PCI0.SAT1.CHN0._GTM] (Node ffff880127634758), klog AE_NOT_FOUND (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 0.821112] ACPI Error: Method parse/execution klog failed [_SB_.PCI0.SAT1.CHN1._GTM] (Node ffff8801276348e8), klog AE_NOT_FOUND (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiReturnPackageZeroElements: Test 1, klog HIGH Kernel message: [ 0.822836] ACPI Warning: For klog _SB_.PCI0.PCI2._PRT: Return Package has no elements klog (empty) (20110112/nspredef-456) klog klog ADVICE: ACPI AML interpreter executed a Method that klog returned a package with no elements inside it. This is klog most probably a bug in the Method and needs to be fixed. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.831199] ACPI Warning: Incorrect klog checksum in table [OEMB] - B7, should be B6 (20090903 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 0.860349] ACPI Error (psparse-0537): Method klog parse/execution failed [_PR_.PPCE] (Node ffff88023704ea40) klog , AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 0.860380] ACPI Error (psparse-0537): Method klog parse/execution failed [EV4_] (Node ffff8802370590e0), klog AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 0.860410] ACPI Error (psparse-0537): Method klog parse/execution failed [SMIE] (Node ffff8802370522a0), klog AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 0.860439] ACPI Error (psparse-0537): Method klog parse/execution failed [NEVT] (Node ffff880237052240), klog AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 0.860468] ACPI Error (psparse-0537): Method klog parse/execution failed [_SB_.PCI0.LPCB.ECDV._Q66] (Node klog ffff880237050de0), AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 0.870147] ACPI Error (psparse-0537): Method klog parse/execution failed [_SB_.PCI0._OSC] (Node klog ffff88013ba29e80), AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.872036] ACPI Warning: Incorrect klog checksum in table [OEMB] - EC, should be E3 (20090903 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [HIGH] KlogAcpiReturnPackageZeroElements: Test 1, klog HIGH Kernel message: [ 0.873454] ACPI Warning for klog _SB_.PCI0.PCIB._PRT: Return Package has no elements klog (empty) (20090903/nspredef-433) klog klog ADVICE: ACPI AML interpreter executed a Method that klog returned a package with no elements inside it. This is klog most probably a bug in the Method and needs to be fixed. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.875591] ACPI Warning: Incorrect klog checksum in table [OEMB] - 14, should be 13 (20090903 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.877093] ACPI Warning: Incorrect klog checksum in table [OEMB] - 0x89, should be 0x80 (20100428 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [HIGH] KlogAcpiNamespaceLookupFailure: Test 1, HIGH klog Kernel message: [ 0.879606] ACPI Error (psargs-0359): klog [MPEN] Namespace lookup failure, AE_NOT_FOUND klog klog ADVICE: The kernel has detected an error trying to execute klog an Method and it cannot find an object. This is indicates klog a bug in the DSDT or SSDT AML code. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 0.879794] ACPI Error (psparse-0537): Method klog parse/execution failed [_TZ_.TZ00._PSL] (Node klog ffff88015ba4de00), AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiReturnPackageTypeMismatch: Test 1, klog HIGH Kernel message: [ 0.888177] ACPI Warning for klog _SB_.BAT1._BST: Return Package type mismatch at index 2 - klog found [NULL Object Descriptor], expected Integer (20090903 klog /nspredef-1012) klog klog ADVICE: ACPI AML interpreter executed a Method that klog returned a package with incorrectly typed data. The klog offending method needs to be fixed. klog klog FAILED [HIGH] KlogAcpiNoHandlerForRegion: Test 1, HIGH klog Kernel message: [ 0.890080] ACPI Error: No handler for klog Region [RAM_] (ffff880133a35a20) [EmbeddedControl] klog (20100428/evregion-369) klog klog ADVICE: ACPI attempted to read or write to a region klog however the ACPI driver does not have a handler klog implemented for this particular region space. The read klog /write will fail and undefined behaviour will occur. klog klog FAILED [HIGH] KlogAcpiRegionHasNoHandler: Test 1, HIGH klog Kernel message: [ 0.890253] ACPI Error: Region klog EmbeddedControl(0x3) has no handler (20100428/exfldio-293) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectDoesNotExist: Test 1, HIGH klog Kernel message: [ 0.890421] ACPI Error (psparse-0537): klog Method parse/execution failed [_SB_.PCI0.LPCB.SNC_.SBRT] klog (Node ffff880133a49620), AE_NOT_EXIST klog klog ADVICE: The ACPI interpreter failed to execute or parse klog some AML because a object or control did not exist. This klog normally occurs because of buggy firmware and may lead to klog unexpected behaviour or loss of functionality. klog klog FAILED [HIGH] KlogAcpiObjectDoesNotExist: Test 1, HIGH klog Kernel message: [ 0.890696] ACPI Error (psparse-0537): klog Method parse/execution failed [_SB_.PCI0.LPCB.EC0_._REG] klog (Node ffff880133a385e0), AE_NOT_EXIST klog klog ADVICE: The ACPI interpreter failed to execute or parse klog some AML because a object or control did not exist. This klog normally occurs because of buggy firmware and may lead to klog unexpected behaviour or loss of functionality. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 0.892097] ACPI Error (psparse-0537): Method klog parse/execution failed [_PR_.PPCE] (Node ffff88021704e920) klog , AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 0.892124] ACPI Error (psparse-0537): Method klog parse/execution failed [EV4_] (Node ffff880217056700), klog AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 0.892147] ACPI Error (psparse-0537): Method klog parse/execution failed [SMIE] (Node ffff880217052180), klog AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 0.892171] ACPI Error (psparse-0537): Method klog parse/execution failed [NEVT] (Node ffff880217052120), klog AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 0.892195] ACPI Error (psparse-0537): Method klog parse/execution failed [_SB_.PCI0.LPCB.ECDV._Q66] (Node klog ffff880217050cc0), AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.892915] ACPI Warning: Incorrect klog checksum in table [OEMB] - 0xCE, should be 0xCD (20100428 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.899338] ACPI Warning: Incorrect klog checksum in table [OEMB] - 0xDD, should be 0xD4 (20100428 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 0.900692] ACPI Error (psparse-0537): Method klog parse/execution failed [_PR_.PPCE] (Node ffff88021704e960) klog , AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 0.900729] ACPI Error (psparse-0537): Method klog parse/execution failed [EV4_] (Node ffff880217059000), klog AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 0.900753] ACPI Error (psparse-0537): Method klog parse/execution failed [SMIE] (Node ffff8802170521c0), klog AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 0.900776] ACPI Error (psparse-0537): Method klog parse/execution failed [NEVT] (Node ffff880217052160), klog AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 0.900801] ACPI Error (psparse-0537): Method klog parse/execution failed [_SB_.PCI0.LPCB.ECDV._Q66] (Node klog ffff880217050d00), AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 0.905032] ACPI Error (psparse-0537): Method klog parse/execution failed [_PR_.PPCE] (Node ffff88021304e940) klog , AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 0.905061] ACPI Error (psparse-0537): Method klog parse/execution failed [EV4_] (Node ffff8802130576a0), klog AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 0.905085] ACPI Error (psparse-0537): Method klog parse/execution failed [SMIE] (Node ffff8802130521a0), klog AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 0.905110] ACPI Error (psparse-0537): Method klog parse/execution failed [NEVT] (Node ffff880213052140), klog AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 0.905135] ACPI Error (psparse-0537): Method klog parse/execution failed [_SB_.PCI0.LPCB.ECDV._Q66] (Node klog ffff880213050ce0), AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiPackageLimit: Test 1, HIGH Kernel klog message: [ 0.905920] ACPI Error (psparse-0537): Method klog parse/execution failed [_PR_.C000.C264] (Node f7024e58), klog AE_AML_PACKAGE_LIMIT klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiPackageLimit: Test 1, HIGH Kernel klog message: [ 0.905985] ACPI Error (psparse-0537): Method klog parse/execution failed [_PR_.C000._PSS] (Node f7024f30), klog AE_AML_PACKAGE_LIMIT klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiMissingPssPct: Test 1, HIGH Kernel klog message: [ 0.906063] [Firmware Bug]: BIOS needs update for klog CPU frequency support klog klog ADVICE: Having _PPC but missing frequencies (_PSS, _PCT) klog is a good hint that the BIOS is older than the CPU and klog does not know the CPU frequencies. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.940265] ACPI Warning: Incorrect klog checksum in table [TAMG] - 0x14, should be 0x13 (20110112 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [HIGH] KlogAcpiObjectAlreadyExists: Test 1, HIGH klog Kernel message: [ 0.940948] ACPI Error (psparse-0537): klog Method parse/execution failed [_SB_.PCI0._OSC] (Node klog f7421fc0), AE_ALREADY_EXISTS klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.941821] ACPI Warning: Incorrect klog checksum in table [SSDT] - 0x3F, should be 0x91 (20110413 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.943511] ACPI Warning: Incorrect klog checksum in table [TCPA] - 0x00, should be 0x7E (20110413 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 0.944156] ACPI Error (psparse-0537): Method klog parse/execution failed [_SB_.PCI0.ACAD._PSR] (Node klog ffff88013384d720), AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiReturnPackageZeroElements: Test 1, klog HIGH Kernel message: [ 0.967528] ACPI Warning for klog _TZ_.THRM._AL0: Return Package has no elements (empty) klog (20100428/nspredef-456) klog klog ADVICE: ACPI AML interpreter executed a Method that klog returned a package with no elements inside it. This is klog most probably a bug in the Method and needs to be fixed. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 0.972652] ACPI Warning: Incorrect klog checksum in table [OEMB] - FA, should be F7 (20090903 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [HIGH] KlogAcpiReturnTypeMismatch: Test 1, HIGH klog Kernel message: [ 0.990917] ACPI Warning for klog _SB_.PCI0.FNC2.PRT0._GTF: Return type mismatch - found klog Integer, expected Buffer (20090903/nspredef-1006) klog klog ADVICE: The ACPI Method returned an incorrect type, this klog should be fixed. klog klog FAILED [HIGH] KlogAcpiReturnTypeMismatch: Test 1, HIGH klog Kernel message: [ 0.991675] ACPI Warning for klog _SB_.PCI0.FNC2.PRT1._GTF: Return type mismatch - found klog Integer, expected Buffer (20090903/nspredef-1006) klog klog ADVICE: The ACPI Method returned an incorrect type, this klog should be fixed. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 0.992685] ACPI Error (psparse-0537): Method klog parse/execution failed [] (Node ffffffff81cf6eb0), klog AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 1.004972] ACPI Error (psparse-0537): Method klog parse/execution failed [CPUT] (Node f701c150), klog AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 1.005015] ACPI Error (psparse-0537): Method klog parse/execution failed [PSSC] (Node f701c168), klog AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 1.005055] ACPI Error (psparse-0537): Method klog parse/execution failed [_SB_.PCI0.LPCB.EC0_._REG] (Node klog f702f3c0), AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 1.005834] ACPI Warning: Incorrect klog checksum in table [OEMB] - 0x1D, should be 0x1C (20100428 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 1.009421] ACPI Error (psparse-0537): Method klog parse/execution failed [_SB_.PCI0.ACAD._PSR] (Node klog f701aa98), AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 1.020525] ACPI Warning: Incorrect klog checksum in table [TAMG] - 0xE8, should be 0xE7 (20100428 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [HIGH] KlogAcpiBadAmlCode: Test 1, HIGH Kernel klog message: [ 1.020868] ACPI Warning for _PR_.CPU0._PSD: klog Incorrectly formed Package, attempting repair (20090903 klog /nsrepair-200) klog klog ADVICE: ACPI AML intepreter has found some non-conforming klog AML code. This should be investigated and fixed. klog klog FAILED [HIGH] KlogAcpiBadAmlCode: Test 1, HIGH Kernel klog message: [ 1.021557] ACPI Warning for _PR_.CPU1._PSD: klog Incorrectly formed Package, attempting repair (20090903 klog /nsrepair-200) klog klog ADVICE: ACPI AML intepreter has found some non-conforming klog AML code. This should be investigated and fixed. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 1.023813] ACPI Warning: Incorrect klog checksum in table [OEMB] - 0x82, should be 0x81 (20100428 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [HIGH] KlogAcpiInvalidThrottlingState: Test 1, HIGH klog Kernel message: [ 1.026272] ACPI Warning klog (processor_throttling-0843): Invalid throttling state, klog reset klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiNoHandlerForRegion: Test 1, HIGH klog Kernel message: [ 1.027573] ACPI Error: No handler for klog Region [ERAM] (ffff880133e3e798) [EmbeddedControl] klog (20090903/evregion-319) klog klog ADVICE: ACPI attempted to read or write to a region klog however the ACPI driver does not have a handler klog implemented for this particular region space. The read klog /write will fail and undefined behaviour will occur. klog klog FAILED [HIGH] KlogAcpiObjectDoesNotExist: Test 1, HIGH klog Kernel message: [ 1.027587] ACPI Error (psparse-0537): klog Method parse/execution failed [_SB_.PCI0.DOCK._STA] (Node klog ffff880133e48620), AE_NOT_EXIST klog klog ADVICE: The ACPI interpreter failed to execute or parse klog some AML because a object or control did not exist. This klog normally occurs because of buggy firmware and may lead to klog unexpected behaviour or loss of functionality. klog klog FAILED [HIGH] KlogAcpiObjectDoesNotExist: Test 1, HIGH klog Kernel message: [ 1.027653] ACPI Error (uteval-0250): klog Method execution failed [_SB_.PCI0.DOCK._STA] (Node klog ffff880133e48620), AE_NOT_EXIST klog klog ADVICE: The ACPI interpreter failed to execute or parse klog some AML because a object or control did not exist. This klog normally occurs because of buggy firmware and may lead to klog unexpected behaviour or loss of functionality. klog klog FAILED [CRITICAL] KlogAcpiNoValidCrt: Test 1, CRITICAL klog Kernel message: [ 1.125427] [Firmware Bug]: No valid trip klog found klog klog ADVICE: No valid ACPI _CRT (Critical Trip Point) was klog found. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 1.158298] ACPI Error (psparse-0537): Method klog parse/execution failed [_SB_._OSC] (Node f701b648), klog AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiNamespaceLookupFailure: Test 1, HIGH klog Kernel message: [ 1.167050] ACPI Error: [CDW1] Namespace klog lookup failure, AE_NOT_FOUND (20110316/psargs-359) klog klog ADVICE: The kernel has detected an error trying to execute klog an Method and it cannot find an object. This is indicates klog a bug in the DSDT or SSDT AML code. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 1.167226] ACPI Error: Method parse/execution klog failed [_SB_._OSC] (Node f4422648), AE_NOT_FOUND (20110316 klog /psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 1.168945] ACPI Warning: Incorrect klog checksum in table [OEMB] - 0x04, should be 0xFD (20100428 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 1.174038] ACPI Warning: Incorrect klog checksum in table [TCPA] - 0x00, should be 0x9B (20100428 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiAmdK8ExpectedPssObjects: Test 1, klog MEDIUM Kernel message: [ 1.176461] [Firmware Bug]: klog powernow-k8: No compatible ACPI _PSS objects found. klog klog ADVICE: The _PSS object (Performance Supported States) is klog an optional object that indicates the number of supported klog processor performance states. The powernow-k8 driver klog source states: If you see this message, complain to BIOS klog manufacturer. If he tells you "we do not support Linux" or klog some similar nonsense, remember that Windows 2000 uses the klog same legacy mechanism that the old Linux PSB driver uses. klog Tell them it is broken with Windows 2000. The reference to klog the AMD documentation is chapter 9 in the BIOS and Kernel klog Developer's Guide, which is available on www.amd.com. klog klog FAILED [MEDIUM] KlogAcpiTryNewAmdFirmware: Test 1, MEDIUM klog Kernel message: [ 1.176462] [Firmware Bug]: powernow-k8: klog Try again with latest BIOS. klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 1.179893] ACPI Warning: Incorrect klog checksum in table [ATKG] - 0x81, should be 0x59 (20100428 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [LOW] KlogAcpiDodWithNoDos: Test 1, LOW Kernel klog message: [ 1.183989] [Firmware Bug]: ACPI(PEGD) defines klog _DOD but not _DOS klog klog ADVICE: ACPI Method _DOD (Enumerate all devices attached klog to display adapter) is defined but we should also have klog _DOS (Enable/Disable output switching) defined but it's klog been omitted. klog klog FAILED [HIGH] KlogAcpiReturnPackageZeroElements: Test 1, klog HIGH Kernel message: [ 1.184923] ACPI Warning: For klog _SB_.PCI0.P0P1._PRT: Return Package has no elements klog (empty) (20110413/nspredef-456) klog klog ADVICE: ACPI AML interpreter executed a Method that klog returned a package with no elements inside it. This is klog most probably a bug in the Method and needs to be fixed. klog klog FAILED [HIGH] KlogAcpiNamespaceLookupFailure: Test 1, HIGH klog Kernel message: [ 1.186079] ACPI Error: [BRTW] Namespace klog lookup failure, AE_NOT_FOUND (20110112/psargs-359) klog klog ADVICE: The kernel has detected an error trying to execute klog an Method and it cannot find an object. This is indicates klog a bug in the DSDT or SSDT AML code. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 1.186087] ACPI Error: Method parse/execution klog failed [_SB_.PCI0.GFX0.DD03._BCM] (Node f4c2a588), klog AE_NOT_FOUND (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 1.187842] ACPI Error (psparse-0537): Method klog parse/execution failed [_PR_.CPU0.PPC_] (Node f7450168), klog AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 1.187891] ACPI Error (psparse-0537): Method klog parse/execution failed [_PR_.CPU0._PPC] (Node f74500c0), klog AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 1.188370] ACPI Error (psparse-0537): Method klog parse/execution failed [_PR_.CPU1._PPC] (Node f7450150), klog AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 1.188776] ACPI Error (psparse-0537): Method klog parse/execution failed [_PR_.CPU2._PPC] (Node f74502b8), klog AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 1.189190] ACPI Error (psparse-0537): Method klog parse/execution failed [_PR_.CPU3._PPC] (Node f7450258), klog AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 1.196055] ACPI Error: Method parse/execution klog failed [_SB_.PCI0._OSC] (Node f3824270), AE_NOT_FOUND klog (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiReturnPackageZeroElements: Test 1, klog HIGH Kernel message: [ 1.210593] ACPI Warning: For klog _SB_.PCI0.PCIB._PRT: Return Package has no elements klog (empty) (20101013/nspredef-456) klog klog ADVICE: ACPI AML interpreter executed a Method that klog returned a package with no elements inside it. This is klog most probably a bug in the Method and needs to be fixed. klog klog FAILED [HIGH] KlogAcpiReturnPackageZeroElements: Test 1, klog HIGH Kernel message: [ 1.212692] ACPI Warning: For klog _TZ_.THRM._AL0: Return Package has no elements (empty) klog (20110112/nspredef-456) klog klog ADVICE: ACPI AML interpreter executed a Method that klog returned a package with no elements inside it. This is klog most probably a bug in the Method and needs to be fixed. klog klog FAILED [HIGH] KlogAcpiNamespaceLookupFailure: Test 1, HIGH klog Kernel message: [ 1.214748] ACPI Error: [_T_1] Namespace klog lookup failure, AE_ALREADY_EXISTS (20110112/dswload-802) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectAlreadyExists: Test 1, HIGH klog Kernel message: [ 1.214761] ACPI Error: Method parse klog /execution failed [_SB_.PCI0.PEGP.VGA_.LCD_.GBQC] (Node klog f3023438), AE_ALREADY_EXISTS (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectAlreadyExists: Test 1, HIGH klog Kernel message: [ 1.214775] ACPI Error: Method parse klog /execution failed [_SB_.PCI0.PEGP.VGA_.LCD_._BQC] (Node klog f3023420), AE_ALREADY_EXISTS (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectAlreadyExists: Test 1, HIGH klog Kernel message: [ 1.222641] ACPI Error: Method parse klog /execution failed [_SB_.PCI0.PEGP.VGA_.LCD1.GBQC] (Node klog f30235b8), AE_ALREADY_EXISTS (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectAlreadyExists: Test 1, HIGH klog Kernel message: [ 1.222655] ACPI Error: Method parse klog /execution failed [_SB_.PCI0.PEGP.VGA_.LCD1._BQC] (Node klog f30235a0), AE_ALREADY_EXISTS (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiTimeout: Test 1, HIGH Kernel message klog : [ 1.224060] ACPI Error (psparse-0537): Method parse klog /execution failed [_SB_.BAT1._STA] (Node f7023b10), klog AE_TIME klog klog ADVICE: The ACPI driver encountered an error executing klog some ACPI AML code which originated from a device timing klog out. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 1.228128] ACPI Error (psparse-0537): Method klog parse/execution failed [_SB_.PCI0.LPC0.EC0_._REG] (Node klog f702a570), AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectAlreadyExists: Test 1, HIGH klog Kernel message: [ 1.229185] ACPI Error (psparse-0537): klog Method parse/execution failed [_SB_.PCI0._OSC] (Node klog f70140d8), AE_ALREADY_EXISTS klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiBadAmlCode: Test 1, HIGH Kernel klog message: [ 1.230869] ACPI Warning for _PR_.CPU0._PSS: klog SubPackage[15,16] - suspicious power dissipation values klog (20100428/nsrepair2-403) klog klog ADVICE: ACPI AML intepreter has found some non-conforming klog AML code. This should be investigated and fixed. klog klog FAILED [HIGH] KlogAcpiBadAmlCode: Test 1, HIGH Kernel klog message: [ 1.231049] ACPI Warning for _PR_.CPU1._PSS: klog SubPackage[15,16] - suspicious power dissipation values klog (20100428/nsrepair2-403) klog klog ADVICE: ACPI AML intepreter has found some non-conforming klog AML code. This should be investigated and fixed. klog klog FAILED [HIGH] KlogAcpiBadAmlCode: Test 1, HIGH Kernel klog message: [ 1.231224] ACPI Warning for _PR_.CPU2._PSS: klog SubPackage[15,16] - suspicious power dissipation values klog (20100428/nsrepair2-403) klog klog ADVICE: ACPI AML intepreter has found some non-conforming klog AML code. This should be investigated and fixed. klog klog FAILED [HIGH] KlogAcpiBadAmlCode: Test 1, HIGH Kernel klog message: [ 1.231399] ACPI Warning for _PR_.CPU3._PSS: klog SubPackage[15,16] - suspicious power dissipation values klog (20100428/nsrepair2-403) klog klog ADVICE: ACPI AML intepreter has found some non-conforming klog AML code. This should be investigated and fixed. klog klog FAILED [HIGH] KlogAcpiNoHandlerForRegion: Test 1, HIGH klog Kernel message: [ 1.246159] ACPI Error: No handler for klog Region [ECRM] (f6cedba0) [EmbeddedControl] (20110413 klog /evregion-373) klog klog ADVICE: ACPI attempted to read or write to a region klog however the ACPI driver does not have a handler klog implemented for this particular region space. The read klog /write will fail and undefined behaviour will occur. klog klog FAILED [HIGH] KlogAcpiKlogRegionNoHandler: Test 1, HIGH klog Kernel message: [ 1.246164] ACPI Error: Region klog EmbeddedControl (ID=3) has no handler (20110413 klog /exfldio-292) klog klog ADVICE: An access (read or write) to an operation region klog has been attempted and a region handler for this has not klog been implemented, this may need to be implemented to klog provide the expected behaviour. See klog acpi_ex_access_region(). klog klog FAILED [HIGH] KlogAcpiObjectDoesNotExist: Test 1, HIGH klog Kernel message: [ 1.246169] ACPI Error: Method parse klog /execution failed [_TZ_.RDEC] (Node f442fc60), klog AE_NOT_EXIST (20110413/psparse-536) klog klog ADVICE: The ACPI interpreter failed to execute or parse klog some AML because a object or control did not exist. This klog normally occurs because of buggy firmware and may lead to klog unexpected behaviour or loss of functionality. klog klog FAILED [HIGH] KlogAcpiObjectDoesNotExist: Test 1, HIGH klog Kernel message: [ 1.246176] ACPI Error: Method parse klog /execution failed [_TZ_.TZS0._TMP] (Node f442fca8), klog AE_NOT_EXIST (20110413/psparse-536) klog klog ADVICE: The ACPI interpreter failed to execute or parse klog some AML because a object or control did not exist. This klog normally occurs because of buggy firmware and may lead to klog unexpected behaviour or loss of functionality. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 1.270260] ACPI Error (psparse-0537): Method klog parse/execution failed [CPUT] (Node ffff880137a4e840), klog AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 1.270297] ACPI Error (psparse-0537): Method klog parse/execution failed [PSSC] (Node ffff880137a4e860), klog AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 1.270332] ACPI Error (psparse-0537): Method klog parse/execution failed [_SB_.PCI0.LPCB.EC0_._REG] (Node klog ffff880137a3fd00), AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiNoHandlerForRegion: Test 1, HIGH klog Kernel message: [ 1.272398] ACPI Error: No handler for klog Region [ECRM] (f76d0c60) [EmbeddedControl] (20110112 klog /evregion-369) klog klog ADVICE: ACPI attempted to read or write to a region klog however the ACPI driver does not have a handler klog implemented for this particular region space. The read klog /write will fail and undefined behaviour will occur. klog klog FAILED [HIGH] KlogAcpiObjectDoesNotExist: Test 1, HIGH klog Kernel message: [ 1.272407] ACPI Error: Method parse klog /execution failed [_TZ_.RDEC] (Node f742fc60), klog AE_NOT_EXIST (20110112/psparse-536) klog klog ADVICE: The ACPI interpreter failed to execute or parse klog some AML because a object or control did not exist. This klog normally occurs because of buggy firmware and may lead to klog unexpected behaviour or loss of functionality. klog klog FAILED [HIGH] KlogAcpiObjectDoesNotExist: Test 1, HIGH klog Kernel message: [ 1.272415] ACPI Error: Method parse klog /execution failed [_TZ_.TZS0._TMP] (Node f742fca8), klog AE_NOT_EXIST (20110112/psparse-536) klog klog ADVICE: The ACPI interpreter failed to execute or parse klog some AML because a object or control did not exist. This klog normally occurs because of buggy firmware and may lead to klog unexpected behaviour or loss of functionality. klog klog FAILED [HIGH] KlogAcpiNoHandlerForRegion: Test 1, HIGH klog Kernel message: [ 1.280955] ACPI Error: No handler for klog Region [PCFG] (ffff880137a733f0) [PCI_Config] (20090903 klog /evregion-319) klog klog ADVICE: ACPI attempted to read or write to a region klog however the ACPI driver does not have a handler klog implemented for this particular region space. The read klog /write will fail and undefined behaviour will occur. klog klog FAILED [HIGH] KlogAcpiObjectDoesNotExist: Test 1, HIGH klog Kernel message: [ 1.280965] ACPI Error (psparse-0537): klog Method parse/execution failed [J380._STA] (Node klog ffff88013712b380), AE_NOT_EXIST klog klog ADVICE: The ACPI interpreter failed to execute or parse klog some AML because a object or control did not exist. This klog normally occurs because of buggy firmware and may lead to klog unexpected behaviour or loss of functionality. klog klog FAILED [HIGH] KlogAcpiNamespaceLookupFailure: Test 1, HIGH klog Kernel message: [ 1.314561] ACPI Error: [ECPU] Namespace klog lookup failure, AE_NOT_FOUND (20110112/psargs-359) klog klog ADVICE: The kernel has detected an error trying to execute klog an Method and it cannot find an object. This is indicates klog a bug in the DSDT or SSDT AML code. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 1.314567] ACPI Error: Method parse/execution klog failed [_TZ_.TZ00._TMP] (Node ffff88011763ca28), klog AE_NOT_FOUND (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 1.320114] ACPI Warning: Incorrect klog checksum in table [ATKG] - 0x9D, should be 0xE5 (20110112 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [CRITICAL] KlogAcpiSbOscAeAmlBufferLimit: Test 1, klog CRITICAL Kernel message: [ 1.336148] ACPI Error klog (psparse-0537): Method parse/execution failed [_SB_._OSC] klog (Node ffff88012b647200), AE_AML_BUFFER_LIMIT klog klog ADVICE: Section 6.2.10.2 of V4.0a of the ACPI klog specification states that the _OSC Method should be passed klog an 8 byte buffer of 2 x 32 DWORDs, however it appears that klog the method is possibly trying to access data outside this klog buffer. This is a bug in the _OSC method. klog klog FAILED [HIGH] KlogAcpiObjectDoesNotExist: Test 1, HIGH klog Kernel message: [ 1.337975] ACPI Error (uteval-0250): klog Method execution failed [J380._STA] (Node klog ffff88013712b380), AE_NOT_EXIST klog klog ADVICE: The ACPI interpreter failed to execute or parse klog some AML because a object or control did not exist. This klog normally occurs because of buggy firmware and may lead to klog unexpected behaviour or loss of functionality. klog klog FAILED [HIGH] KlogAcpiFieldExceedsBuffer: Test 1, HIGH klog Kernel message: [ 1.371174] ACPI Error: Field [CDW3] at 96 klog exceeds Buffer [NULL] size 64 (bits) (20090903 klog /dsopcode-596) klog klog ADVICE: Failed to initialise an ACPI buffer field, the klog field exceeded the buffer size provided. This is a klog firmware bug. klog klog FAILED [CRITICAL] KlogAcpiSbOscAeAmlBufferLimit: Test 1, klog CRITICAL Kernel message: [ 1.371180] ACPI Error klog (psparse-0537): Method parse/execution failed [_SB_._OSC] klog (Node ffff88044b85e4a0), AE_AML_BUFFER_LIMIT klog klog ADVICE: Section 6.2.10.2 of V4.0a of the ACPI klog specification states that the _OSC Method should be passed klog an 8 byte buffer of 2 x 32 DWORDs, however it appears that klog the method is possibly trying to access data outside this klog buffer. This is a bug in the _OSC method. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 1.381411] ACPI Error (psparse-0537): Method klog parse/execution failed [] (Node ffffffff81a2b040), klog AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiNamespaceLookupFailure: Test 1, HIGH klog Kernel message: [ 1.381481] ACPI Error (dswload-0659): klog [PCI0] Namespace lookup failure, AE_NOT_FOUND klog klog ADVICE: The kernel has detected an error trying to execute klog an Method and it cannot find an object. This is indicates klog a bug in the DSDT or SSDT AML code. klog klog FAILED [HIGH] KlogAcpiResolveOpBadType: Test 1, HIGH klog Kernel message: [ 1.384655] ACPI Error: Needed [Buffer klog /String/Package], found [Integer] ffff8801393f91f8 klog (20090903/exresop-590) klog klog ADVICE: An error occurred in resolving operands, required klog a Buffer, String or Package type, got a different type klog instead. klog klog FAILED [HIGH] KlogAcpiOperandType: Test 1, HIGH Kernel klog message: [ 1.384672] ACPI Error (psparse-0537): Method klog parse/execution failed [_SB_.PCI0.VGA_._DSM] (Node klog ffff88013ba4c020), AE_AML_OPERAND_TYPE klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiOperandType: Test 1, HIGH Kernel klog message: [ 1.384743] ACPI Error (psparse-0537): Method klog parse/execution failed [_SB_.PCI0.P0P1.VGA_._DSM] (Node klog ffff88013ba4d9c0), AE_AML_OPERAND_TYPE klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [LOW] KlogAcpiDodWithNoDos: Test 1, LOW Kernel klog message: [ 1.398000] [Firmware Bug]: ACPI(Z00P) defines klog _DOD but not _DOS klog klog ADVICE: ACPI Method _DOD (Enumerate all devices attached klog to display adapter) is defined but we should also have klog _DOS (Enable/Disable output switching) defined but it's klog been omitted. klog klog FAILED [HIGH] KlogAcpiReturnPackageTypeMismatch: Test 1, klog HIGH Kernel message: [ 1.398053] ACPI: acpi_idle yielding klog to intel_idleACPI Warning for _TZ_.TZ01._PSL: Return klog Package type mismatch at index 0 - found Processor, klog expected Reference (20100428/nspredef-1059) klog klog ADVICE: ACPI AML interpreter executed a Method that klog returned a package with incorrectly typed data. The klog offending method needs to be fixed. klog klog FAILED [HIGH] KlogAcpiReturnPackageZeroElements: Test 1, klog HIGH Kernel message: [ 1.399160] ACPI Warning for klog _SB_.PCI0.PT02._PRT: Return Package has no elements klog (empty) (20090903/nspredef-433) klog klog ADVICE: ACPI AML interpreter executed a Method that klog returned a package with no elements inside it. This is klog most probably a bug in the Method and needs to be fixed. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 1.400736] ACPI Error (psparse-0537): Method klog parse/execution failed [_SB_.PCI0.SATA.PRT0._SDD] (Node klog f7018e58), AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 1.436671] ACPI Error (psparse-0537): Method klog parse/execution failed [_SB_.PCI0.SATA.PRT0._SDD] (Node klog f7024e58), AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiReturnPackageZeroElements: Test 1, klog HIGH Kernel message: [ 1.462866] ACPI Warning: klog _SB_.PCI0.VID2._DOD: Return Package has no elements klog (empty) 20090521 nspredef-434 klog klog ADVICE: ACPI AML interpreter executed a Method that klog returned a package with no elements inside it. This is klog most probably a bug in the Method and needs to be fixed. klog klog FAILED [HIGH] KlogAcpiReturnTypeMismatch: Test 1, HIGH klog Kernel message: [ 1.480960] ACPI Warning: klog _SB_.PCI0.FNC2.PRT0._GTF: Return type mismatch - found klog Integer, expected Buffer 20090521 nspredef-940 klog klog ADVICE: The ACPI Method returned an incorrect type, this klog should be fixed. klog klog FAILED [HIGH] KlogAcpiNamespaceLookupFailure: Test 1, HIGH klog Kernel message: [ 1.488986] ACPI Error (psargs-0359): klog [GTF0] Namespace lookup failure, AE_NOT_FOUND klog klog ADVICE: The kernel has detected an error trying to execute klog an Method and it cannot find an object. This is indicates klog a bug in the DSDT or SSDT AML code. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 1.488991] ACPI Error (psparse-0537): Method klog parse/execution failed [_SB_.PCI0.SAT0.PRT0._SDD] (Node klog f702b708), AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 1.489034] ACPI Error (psparse-0537): Method klog parse/execution failed [_SB_.PCI0.SAT0.PRT0._GTF] (Node klog f702b720), AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 1.505441] ACPI Warning: Incorrect klog checksum in table [TAMG] - 7C, should be 7B (20090903 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 1.507734] ACPI Warning: Incorrect klog checksum in table [TAMG] - 2D, should be 2C (20090903 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 1.509153] ACPI Warning: Incorrect klog checksum in table [TAMG] - C0, should be BF (20090903 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 1.512057] ACPI Warning: Incorrect klog checksum in table [OEMB] - CA, should be C9 (20090903 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 1.515657] ACPI Warning: Incorrect klog checksum in table [TAMG] - 0xC5, should be 0xC4 (20110112 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [HIGH] KlogAcpiReturnTypeMismatch: Test 1, HIGH klog Kernel message: [ 1.518091] ACPI Warning for klog _SB_.PCI0.IDE1.PRT0._GTF: Return type mismatch - found klog Integer, expected Buffer (20090903/nspredef-1006) klog klog ADVICE: The ACPI Method returned an incorrect type, this klog should be fixed. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 1.528248] ACPI Warning: Incorrect klog checksum in table [TAMG] - 0x98, should be 0x97 (20100428 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 1.529653] ACPI Warning: Incorrect klog checksum in table [TAMG] - 0x7C, should be 0x7B (20100428 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 1.535278] ACPI Warning: Incorrect klog checksum in table [TCPA] - 00, should be 88 (20090903 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 1.545790] ACPI Warning: Incorrect klog checksum in table [OEMB] - D0, should be CF (20090903 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 1.555599] ACPI Error (psparse-0537): Method klog parse/execution failed [CPUT] (Node ffff8801b90590c0), klog AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 1.555652] ACPI Error (psparse-0537): Method klog parse/execution failed [PSSC] (Node ffff8801b90590e0), klog AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 1.555703] ACPI Error (psparse-0537): Method klog parse/execution failed [_SB_.PCI0.LPCB.EC0_._REG] (Node klog ffff8801b903b6e0), AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 1.559068] ACPI Warning: Incorrect klog checksum in table [OEMB] - C5, should be C4 (20090903 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [HIGH] KlogAcpiNoHandlerForRegion: Test 1, HIGH klog Kernel message: [ 1.570612] ACPI Error: No handler for klog Region [PCFG] (ffff8801b9074240) [PCI_Config] (20090903 klog /evregion-319) klog klog ADVICE: ACPI attempted to read or write to a region klog however the ACPI driver does not have a handler klog implemented for this particular region space. The read klog /write will fail and undefined behaviour will occur. klog klog FAILED [HIGH] KlogAcpiObjectDoesNotExist: Test 1, HIGH klog Kernel message: [ 1.570624] ACPI Error (psparse-0537): klog Method parse/execution failed [J380._STA] (Node klog ffff8801b916ea40), AE_NOT_EXIST klog klog ADVICE: The ACPI interpreter failed to execute or parse klog some AML because a object or control did not exist. This klog normally occurs because of buggy firmware and may lead to klog unexpected behaviour or loss of functionality. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 1.586563] ACPI Warning: Incorrect klog checksum in table [OEMB] - D7, should be D3 (20090903 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [HIGH] KlogAcpiReturnPackageZeroElements: Test 1, klog HIGH Kernel message: [ 1.590337] ACPI Warning: For klog _TZ_.THRM._PSL: Return Package has no elements (empty) klog (20110112/nspredef-456) klog klog ADVICE: ACPI AML interpreter executed a Method that klog returned a package with no elements inside it. This is klog most probably a bug in the Method and needs to be fixed. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 1.601784] ACPI Warning: Incorrect klog checksum in table [OEMB] - 5D, should be 55 (20090903 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [HIGH] KlogAcpiInvalidBrightness: Test 1, HIGH klog Kernel message: [ 1.605121] ACPI Error: Current brightness klog invalid (20110112/video-377) klog klog ADVICE: The ACPI video driver set the brightness level klog using the ACPI control _BCM, however the level used was klog not a known level (as returned by _BCL). klog klog FAILED [HIGH] KlogAcpiNamespaceLookupFailure: Test 1, HIGH klog Kernel message: [ 1.605465] ACPI Error: [RAMB] Namespace klog lookup failure, AE_NOT_FOUND (20110112/psargs-359) klog klog ADVICE: The kernel has detected an error trying to execute klog an Method and it cannot find an object. This is indicates klog a bug in the DSDT or SSDT AML code. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 1.616034] ACPI Error (psparse-0537): Method klog parse/execution failed [_PR_.CPU0.PPC_] (Node klog ffff88015334da00), AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 1.616243] ACPI Error (psparse-0537): Method klog parse/execution failed [_PR_.CPU0._PPC] (Node klog ffff88015334d920), AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 1.618281] ACPI Error (psparse-0537): Method klog parse/execution failed [_PR_.CPU1._PPC] (Node klog ffff88015334d9e0), AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 1.620164] ACPI Error (psparse-0537): Method klog parse/execution failed [_PR_.CPU2._PPC] (Node klog ffff88015334dbc0), AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 1.621081] ACPI Error (psparse-0537): Method klog parse/execution failed [_PR_.CPU3._PPC] (Node klog ffff88015334db40), AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiNamespaceLookupFailure: Test 1, HIGH klog Kernel message: [ 1.648580] ACPI Error: [SMS_] Namespace klog lookup failure, AE_NOT_FOUND (20110112/psargs-359) klog klog ADVICE: The kernel has detected an error trying to execute klog an Method and it cannot find an object. This is indicates klog a bug in the DSDT or SSDT AML code. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 1.648589] ACPI Error: Method parse/execution klog failed [_SB_.PCI0.SATA.PRT0._SDD] (Node f3429e58), klog AE_NOT_FOUND (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectDoesNotExist: Test 1, HIGH klog Kernel message: [ 1.662849] ACPI Error (uteval-0250): klog Method execution failed [J380._STA] (Node klog ffff8801b916ea40), AE_NOT_EXIST klog klog ADVICE: The ACPI interpreter failed to execute or parse klog some AML because a object or control did not exist. This klog normally occurs because of buggy firmware and may lead to klog unexpected behaviour or loss of functionality. klog klog FAILED [HIGH] KlogAcpiResolveOpBadType: Test 1, HIGH klog Kernel message: [ 1.678325] ACPI Error: Needed [Buffer klog /String/Package], found [Integer] ffff88022f7bb5e8 klog (20110112/exresop-590) klog klog ADVICE: An error occurred in resolving operands, required klog a Buffer, String or Package type, got a different type klog instead. klog klog FAILED [HIGH] KlogAcpiOperandType: Test 1, HIGH Kernel klog message: [ 1.678342] ACPI Error: Method parse/execution klog failed [_SB_.PCI0.VGA_._DSM] (Node ffff88022f460190), klog AE_AML_OPERAND_TYPE (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiResolveOpBadType: Test 1, HIGH klog Kernel message: [ 1.678390] ACPI Error: Needed [Buffer klog /String/Package], found [Integer] ffff88022f7bb8b8 klog (20110112/exresop-590) klog klog ADVICE: An error occurred in resolving operands, required klog a Buffer, String or Package type, got a different type klog instead. klog klog FAILED [HIGH] KlogAcpiOperandType: Test 1, HIGH Kernel klog message: [ 1.678412] ACPI Error: Method parse/execution klog failed [_SB_.PCI0.P0P1.VGA_._DSM] (Node ffff88022f464230), klog AE_AML_OPERAND_TYPE (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 1.701482] ACPI Error (psparse-0537): Method klog parse/execution failed [_PR_.PPCE] (Node ffff88022704e960) klog , AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 1.701521] ACPI Error (psparse-0537): Method klog parse/execution failed [EV4_] (Node ffff880227059000), klog AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 1.701557] ACPI Error (psparse-0537): Method klog parse/execution failed [SMIE] (Node ffff8802270521c0), klog AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 1.701592] ACPI Error (psparse-0537): Method klog parse/execution failed [NEVT] (Node ffff880227052160), klog AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 1.701628] ACPI Error (psparse-0537): Method klog parse/execution failed [_SB_.PCI0.LPCB.ECDV._Q66] (Node klog ffff880227050d00), AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 1.739479] ACPI Warning: Incorrect klog checksum in table [SSDT] - 0x3F, should be 0x91 (20110112 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 1.761428] ACPI Error (psparse-0537): Method klog parse/execution failed [_SB_.PCI0.SATA.PRT0._SDD] (Node klog ffff8800bc234d60), AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 1.782803] ACPI Error (psparse-0537): Method klog parse/execution failed [_PR_.CPU0.PPC_] (Node klog ffff8801d4d0ac60), AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 1.783001] ACPI Error (psparse-0537): Method klog parse/execution failed [_PR_.CPU0._PPC] (Node klog ffff8801d4d0ab80), AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 1.784831] ACPI Error (psparse-0537): Method klog parse/execution failed [_PR_.CPU1._PPC] (Node klog ffff8801d4d0ac40), AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 1.786497] ACPI Error (psparse-0537): Method klog parse/execution failed [_PR_.CPU2._PPC] (Node klog ffff8801d4d0ae20), AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 1.787299] ACPI Error (psparse-0537): Method klog parse/execution failed [_PR_.CPU3._PPC] (Node klog ffff8801d4d0ada0), AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiReturnPackageTypeMismatch: Test 1, klog HIGH Kernel message: [ 1.849787] ACPI Warning for klog _PR_.CPU3._PSD: Return Package type mismatch at index 4 - klog found [NULL Object Descriptor], expected Integer klog [] tick_dev_program_event+0x68/0xd0 klog klog ADVICE: ACPI AML interpreter executed a Method that klog returned a package with incorrectly typed data. The klog offending method needs to be fixed. klog klog FAILED [HIGH] KlogAcpiNamespaceLookupFailure: Test 1, HIGH klog Kernel message: [ 1.861558] ACPI Error: [SERN] Namespace klog lookup failure, AE_ALREADY_EXISTS (20110112/dswload-802) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectAlreadyExists: Test 1, HIGH klog Kernel message: [ 1.861576] ACPI Error: Method parse klog /execution failed [_SB_.PCI0.LPC_.EC__.GBIF] (Node klog ffff880232c509b0), AE_ALREADY_EXISTS (20110112 klog /psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectAlreadyExists: Test 1, HIGH klog Kernel message: [ 1.861601] ACPI Error: Method parse klog /execution failed [_SB_.PCI0.LPC_.EC__.BAT1._BIF] (Node klog ffff880232c50d20), AE_ALREADY_EXISTS (20110112 klog /psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiPackageLimit: Test 1, HIGH Kernel klog message: [ 1.864413] ACPI Error: Method parse/execution klog failed [_SB_.PCI0.GFX0._DOD] (Node f3025828), klog AE_AML_PACKAGE_LIMIT (20110413/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 1.893953] ACPI Error (psparse-0537): Method klog parse/execution failed [CPUT] (Node ffff8800b3c50000), klog AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 1.894002] ACPI Error (psparse-0537): Method klog parse/execution failed [PSSC] (Node ffff8800b3c50020), klog AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 1.894047] ACPI Error (psparse-0537): Method klog parse/execution failed [_SB_.PCI0.LPCB.EC0_._REG] (Node klog ffff8800b3c49380), AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiNamespaceLookupFailure: Test 1, HIGH klog Kernel message: [ 1.900224] ACPI Error: [NPSS] Namespace klog lookup failure, AE_NOT_FOUND (20110112/psargs-359) klog klog ADVICE: The kernel has detected an error trying to execute klog an Method and it cannot find an object. This is indicates klog a bug in the DSDT or SSDT AML code. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 1.900238] ACPI Error: Method parse/execution klog failed [_PR_.CPU0.PPC_] (Node ffff88014f9a5140), klog AE_NOT_FOUND (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 1.900254] ACPI Error: Method parse/execution klog failed [_PR_.CPU0._PPC] (Node ffff88014f9a5028), klog AE_NOT_FOUND (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 1.900769] ACPI Error: Method parse/execution klog failed [_PR_.CPU1._PPC] (Node ffff88014f9a5118), klog AE_NOT_FOUND (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 1.901001] ACPI Error: Method parse/execution klog failed [_PR_.CPU2._PPC] (Node ffff88014f9a5370), klog AE_NOT_FOUND (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 1.901211] ACPI Error: Method parse/execution klog failed [_PR_.CPU3._PPC] (Node ffff88014f9a52d0), klog AE_NOT_FOUND (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiReturnPackageZeroElements: Test 1, klog HIGH Kernel message: [ 1.905440] ACPI Warning: For klog _SB_.PCI0.PCIB._PRT: Return Package has no elements klog (empty) (20110112/nspredef-456) klog klog ADVICE: ACPI AML interpreter executed a Method that klog returned a package with no elements inside it. This is klog most probably a bug in the Method and needs to be fixed. klog klog FAILED [HIGH] KlogAcpiNamespaceLookupFailure: Test 1, HIGH klog Kernel message: [ 1.907422] ACPI Error: [GTF0] Namespace klog lookup failure, AE_NOT_FOUND (20110112/psargs-359) klog klog ADVICE: The kernel has detected an error trying to execute klog an Method and it cannot find an object. This is indicates klog a bug in the DSDT or SSDT AML code. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 1.907427] ACPI Error: Method parse/execution klog failed [_SB_.PCI0.SAT0.PRT0._SDD] (Node f3431a50), klog AE_NOT_FOUND (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 1.907445] ACPI Error: Method parse/execution klog failed [_SB_.PCI0.SAT0.PRT0._GTF] (Node f3431a68), klog AE_NOT_FOUND (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiReturnPackageZeroElements: Test 1, klog HIGH Kernel message: [ 1.911273] ACPI Warning for klog _SB_.PCI0.P0P1._PRT: Return Package has no elements klog (empty) (20090903/nspredef-433) klog klog ADVICE: ACPI AML interpreter executed a Method that klog returned a package with no elements inside it. This is klog most probably a bug in the Method and needs to be fixed. klog klog FAILED [HIGH] KlogAcpiPackageLimit: Test 1, HIGH Kernel klog message: [ 1.929855] ACPI Error (psparse-0537): Method klog parse/execution failed [_SB_.PCI0.IDE1.GTM_] (Node klog f7414858), AE_AML_PACKAGE_LIMIT klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiPackageLimit: Test 1, HIGH Kernel klog message: [ 1.929872] ACPI Error (psparse-0537): Method klog parse/execution failed [_SB_.PCI0.IDE1.CHN1._GTM] (Node klog f7414798), AE_AML_PACKAGE_LIMIT klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiBadAmlCode: Test 1, HIGH Kernel klog message: [ 1.958776] ACPI Warning for _PR_.CPU0._PSD: klog klog ADVICE: ACPI AML intepreter has found some non-conforming klog AML code. This should be investigated and fixed. klog klog FAILED [HIGH] KlogAcpiReturnPackageTypeMismatch: Test 1, klog HIGH Kernel message: [ 1.958968] ACPI Warning for klog _PR_.CPU1._PSD: Return Package type mismatch at index 4 - klog found [NULL Object Descriptor], expected Integer (20090903 klog /nspredef-1012) klog klog ADVICE: ACPI AML interpreter executed a Method that klog returned a package with incorrectly typed data. The klog offending method needs to be fixed. klog klog FAILED [HIGH] KlogAcpiReturnPackageTypeMismatch: Test 1, klog HIGH Kernel message: [ 1.959113] ACPI Warning for klog _PR_.CPU2._PSD: Return Package type mismatch at index 4 - klog found [NULL Object Descriptor], expected Integer (20090903 klog /nspredef-1012) klog klog ADVICE: ACPI AML interpreter executed a Method that klog returned a package with incorrectly typed data. The klog offending method needs to be fixed. klog klog FAILED [HIGH] KlogAcpiReturnPackageTypeMismatch: Test 1, klog HIGH Kernel message: [ 1.959252] ACPI Warning for klog _PR_.CPU3._PSD: Return Package type mismatch at index 4 - klog found [NULL Object Descriptor], expected Integer (20090903 klog /nspredef-1012) klog klog ADVICE: ACPI AML interpreter executed a Method that klog returned a package with incorrectly typed data. The klog offending method needs to be fixed. klog klog FAILED [HIGH] KlogAcpiReturnPackageTypeMismatch: Test 1, klog HIGH Kernel message: [ 1.959427] ACPI Warning for klog _PR_.CPU4._PSD: Return Package type mismatch at index 4 - klog found [NULL Object Descriptor], expected Integer (20090903 klog /nspredef-1012) klog klog ADVICE: ACPI AML interpreter executed a Method that klog returned a package with incorrectly typed data. The klog offending method needs to be fixed. klog klog FAILED [HIGH] KlogAcpiReturnPackageTypeMismatch: Test 1, klog HIGH Kernel message: [ 1.959602] ACPI Warning for klog _PR_.CPU5._PSD: Return Package type mismatch at index 4 - klog found [NULL Object Descriptor], expected Integer (20090903 klog /nspredef-1012) klog klog ADVICE: ACPI AML interpreter executed a Method that klog returned a package with incorrectly typed data. The klog offending method needs to be fixed. klog klog FAILED [HIGH] KlogAcpiReturnPackageTypeMismatch: Test 1, klog HIGH Kernel message: [ 1.959776] ACPI Warning for klog _PR_.CPU6._PSD: Return Package type mismatch at index 4 - klog found [NULL Object Descriptor], expected Integer (20090903 klog /nspredef-1012) klog klog ADVICE: ACPI AML interpreter executed a Method that klog returned a package with incorrectly typed data. The klog offending method needs to be fixed. klog klog FAILED [HIGH] KlogAcpiReturnPackageTypeMismatch: Test 1, klog HIGH Kernel message: [ 1.959951] ACPI Warning for klog _PR_.CPU7._PSD: Return Package type mismatch at index 4 - klog found [NULL Object Descriptor], expected Integer (20090903 klog /nspredef-1012) klog klog ADVICE: ACPI AML interpreter executed a Method that klog returned a package with incorrectly typed data. The klog offending method needs to be fixed. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 1.962612] ACPI Error (psparse-0537): Method klog parse/execution failed [_PR_.CPU0.PPC_] (Node klog ffff8801534e5dc0), AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 1.962811] ACPI Error (psparse-0537): Method klog parse/execution failed [_PR_.CPU0._PPC] (Node klog ffff8801534e5ce0), AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 1.964620] ACPI Error (psparse-0537): Method klog parse/execution failed [_PR_.CPU1._PPC] (Node klog ffff8801534e5da0), AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 1.966282] ACPI Error (psparse-0537): Method klog parse/execution failed [_PR_.CPU2._PPC] (Node klog ffff8801534e5f80), AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 1.967081] ACPI Error (psparse-0537): Method klog parse/execution failed [_PR_.CPU3._PPC] (Node klog ffff8801534e5f00), AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 1.974827] ACPI Error: Method parse/execution klog failed [_SB_.PCI0.SAT0.PRT0._SDD] (Node f3831a50), klog AE_NOT_FOUND (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 1.974846] ACPI Error: Method parse/execution klog failed [_SB_.PCI0.SAT0.PRT0._GTF] (Node f3831a68), klog AE_NOT_FOUND (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiPackageLimit: Test 1, HIGH Kernel klog message: [ 2.001829] ACPI Error: Method parse/execution klog failed [_SB_.PCI0.PATA.GTM_] (Node f5423ba0), klog AE_AML_PACKAGE_LIMIT (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiPackageLimit: Test 1, HIGH Kernel klog message: [ 2.001850] ACPI Error: Method parse/execution klog failed [_SB_.PCI0.PATA.CHN0._GTM] (Node f54239c0), klog AE_AML_PACKAGE_LIMIT (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiPackageLimit: Test 1, HIGH Kernel klog message: [ 2.002809] ACPI Error: Method parse/execution klog failed [_SB_.PCI0.PATA.CHN1._GTM] (Node f5423ac8), klog AE_AML_PACKAGE_LIMIT (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 2.006621] ACPI Error (psparse-0537): Method klog parse/execution failed [CPUT] (Node ffff8801b90570c0), klog AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 2.006671] ACPI Error (psparse-0537): Method klog parse/execution failed [PSSC] (Node ffff8801b90570e0), klog AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 2.006718] ACPI Error (psparse-0537): Method klog parse/execution failed [_SB_.PCI0.LPCB.EC0_._REG] (Node klog ffff8801b903fa80), AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiEventEnableFailed: Test 1, HIGH klog Kernel message: [ 2.022076] ACPI Error: Could not enable klog SleepButton event (20110112/evxfevnt-198) klog klog ADVICE: An ACPI fixed event could not be enabled. This can klog affect fixed events such as the power management timer, klog power button, sleep button, RTC alarm, wake status, system klog bus master request or the global release lock status. klog klog FAILED [HIGH] KlogAcpiEventEnableFailed: Test 1, HIGH klog Kernel message: [ 2.022090] ACPI Warning: Could not enable klog fixed event 0x3 (20110112/evxface-197) klog klog ADVICE: An ACPI fixed event could not be enabled. This can klog affect fixed events such as the power management timer, klog power button, sleep button, RTC alarm, wake status, system klog bus master request or the global release lock status. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 2.033653] ACPI Error: Method parse/execution klog failed [_SB_.PCI0.SAT0.PRT0._SDD] (Node f6031468), klog AE_NOT_FOUND (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 2.033670] ACPI Error: Method parse/execution klog failed [_SB_.PCI0.SAT0.PRT0._GTF] (Node f6031480), klog AE_NOT_FOUND (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [MEDIUM] KlogAcpiInvalidPssFrequency: Test 1, klog MEDIUM Kernel message: [ 2.039517] [Firmware Bug]: ACPI: klog Invalid BIOS _PSS frequency: 0x80000000 MHz klog klog ADVICE: _PSS (Performance Supported States) package has an klog incorrectly define core frequency (first DWORD entry in klog the _PSS package). klog klog FAILED [HIGH] KlogAcpiReturnPackageZeroElements: Test 1, klog HIGH Kernel message: [ 2.045931] ACPI Warning for klog _SB_.PCI0.P0P1._PRT: Return Package has no elements klog (empty) (20100428/nspredef-456) klog klog ADVICE: ACPI AML interpreter executed a Method that klog returned a package with no elements inside it. This is klog most probably a bug in the Method and needs to be fixed. klog klog FAILED [HIGH] KlogAcpiReturnPackageTypeMismatch: Test 1, klog HIGH Kernel message: [ 2.049441] ACPI Warning for klog _PR_.CPU0._PSD: Return Package type mismatch at index 4 - klog found [NULL Object Descriptor], expected Integer (20090903 klog /nspredef-1012) klog klog ADVICE: ACPI AML interpreter executed a Method that klog returned a package with incorrectly typed data. The klog offending method needs to be fixed. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 2.068617] ACPI Error: Method parse/execution klog failed [_SB_.PCI0.SATA.PRT0._SDD] (Node f3c29e58), klog AE_NOT_FOUND (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiNamespaceLookupFailure: Test 1, HIGH klog Kernel message: [ 2.081502] ACPI Error (psargs-0359): klog [NPSS] Namespace lookup failure, AE_NOT_FOUND klog klog ADVICE: The kernel has detected an error trying to execute klog an Method and it cannot find an object. This is indicates klog a bug in the DSDT or SSDT AML code. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 2.081508] ACPI Error (psparse-0537): Method klog parse/execution failed [_PR_.CPU0.PPC_] (Node klog ffff8801534e5c20), AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 2.081585] ACPI Error (psparse-0537): Method klog parse/execution failed [_PR_.CPU0._PPC] (Node klog ffff8801534e5b40), AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 2.083171] ACPI Error (psparse-0537): Method klog parse/execution failed [_PR_.CPU1._PPC] (Node klog ffff8801534e5c00), AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 2.084838] ACPI Error (psparse-0537): Method klog parse/execution failed [_PR_.CPU2._PPC] (Node klog ffff8801534e5de0), AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 2.085644] ACPI Error (psparse-0537): Method klog parse/execution failed [_PR_.CPU3._PPC] (Node klog ffff8801534e5d60), AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 2.106307] ACPI Error: Method parse/execution klog failed [_SB_.PCI0.SAT0.PRT0._SDD] (Node ffff88023f45dca8), klog AE_NOT_FOUND (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 2.106326] ACPI Error: Method parse/execution klog failed [_SB_.PCI0.SAT0.PRT0._GTF] (Node ffff88023f45dcd0), klog AE_NOT_FOUND (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 2.113330] ACPI Error: Method parse/execution klog failed [_SB_.PCI0.SAT0.PRT0._SDD] (Node f74317b0), klog AE_NOT_FOUND (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 2.113367] ACPI Error: Method parse/execution klog failed [_SB_.PCI0.SAT0.PRT0._GTF] (Node f74317c8), klog AE_NOT_FOUND (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiEventEnableFailed: Test 1, HIGH klog Kernel message: [ 2.132386] ACPI Error: Could not enable klog SleepButton event (20090903/evxfevnt-193) klog klog ADVICE: An ACPI fixed event could not be enabled. This can klog affect fixed events such as the power management timer, klog power button, sleep button, RTC alarm, wake status, system klog bus master request or the global release lock status. klog klog FAILED [HIGH] KlogAcpiEventEnableFailed: Test 1, HIGH klog Kernel message: [ 2.132392] ACPI Warning: Could not enable klog fixed event 3 (20090903/evxface-146) klog klog ADVICE: An ACPI fixed event could not be enabled. This can klog affect fixed events such as the power management timer, klog power button, sleep button, RTC alarm, wake status, system klog bus master request or the global release lock status. klog klog FAILED [HIGH] KlogAcpiPackageLimit: Test 1, HIGH Kernel klog message: [ 2.149905] ACPI Error: Method parse/execution klog failed [_SB_.C003.C099._DOD] (Node f30275a0), klog AE_AML_PACKAGE_LIMIT (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiReturnTypeMismatch: Test 1, HIGH klog Kernel message: [ 2.173036] ACPI Warning for _SB_._OSC: klog Return type mismatch - found Integer, expected Buffer klog (20090903/nspredef-1006) klog klog ADVICE: The ACPI Method returned an incorrect type, this klog should be fixed. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 2.173935] ACPI Warning: Incorrect klog checksum in table [OEMB] - C3, should be C2 (20090903 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [HIGH] KlogAcpiObjectAlreadyExists: Test 1, HIGH klog Kernel message: [ 2.200371] ACPI Error: Method parse klog /execution failed [_SB_.EEAC] (Node f602bf30), klog AE_ALREADY_EXISTS (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectAlreadyExists: Test 1, HIGH klog Kernel message: [ 2.200380] ACPI Error: Method parse klog /execution failed [_SB_.BAT2._STA] (Node f602d2d0), klog AE_ALREADY_EXISTS (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectAlreadyExists: Test 1, HIGH klog Kernel message: [ 2.206433] ACPI Error: Method parse klog /execution failed [_SB_.EEAC] (Node f742d018), klog AE_ALREADY_EXISTS (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectAlreadyExists: Test 1, HIGH klog Kernel message: [ 2.206443] ACPI Error: Method parse klog /execution failed [_SB_.BAT2._STA] (Node f742d3a8), klog AE_ALREADY_EXISTS (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiNamespaceLookupFailure: Test 1, HIGH klog Kernel message: [ 2.222353] ACPI Error: [EABF] Namespace klog lookup failure, AE_ALREADY_EXISTS (20110112/dswload-802) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectAlreadyExists: Test 1, HIGH klog Kernel message: [ 2.222362] ACPI Error: Method parse klog /execution failed [_SB_.EEAC] (Node f602d018), klog AE_ALREADY_EXISTS (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectAlreadyExists: Test 1, HIGH klog Kernel message: [ 2.222372] ACPI Error: Method parse klog /execution failed [_SB_.BAT2._STA] (Node f602d3a8), klog AE_ALREADY_EXISTS (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiNamespaceLookupFailure: Test 1, HIGH klog Kernel message: [ 2.227407] ACPI Error (psargs-0359): klog [GTF1] Namespace lookup failure, AE_NOT_FOUND klog klog ADVICE: The kernel has detected an error trying to execute klog an Method and it cannot find an object. This is indicates klog a bug in the DSDT or SSDT AML code. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 2.227411] ACPI Error (psparse-0537): Method klog parse/execution failed [_SB_.PCI0.SAT0.PRT1._SDD] (Node klog f702b7b0), AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 2.227454] ACPI Error (psparse-0537): Method klog parse/execution failed [_SB_.PCI0.SAT0.PRT1._GTF] (Node klog f702b7c8), AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 2.229498] ACPI Warning: Incorrect klog checksum in table [TAMG] - 0xC6, should be 0xC5 (20100428 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [HIGH] KlogAcpiObjectAlreadyExists: Test 1, HIGH klog Kernel message: [ 2.231431] ACPI Error: Method parse klog /execution failed [_SB_.EEAC] (Node f602bf60), klog AE_ALREADY_EXISTS (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectAlreadyExists: Test 1, HIGH klog Kernel message: [ 2.231442] ACPI Error: Method parse klog /execution failed [_SB_.BAT2._STA] (Node f602d300), klog AE_ALREADY_EXISTS (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectAlreadyExists: Test 1, HIGH klog Kernel message: [ 2.250291] ACPI Error: Method parse klog /execution failed [_SB_.BAT1.UBIF] (Node ffff88013762f550) klog , AE_ALREADY_EXISTS (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectAlreadyExists: Test 1, HIGH klog Kernel message: [ 2.250306] ACPI Error: Method parse klog /execution failed [_SB_.BAT1._BIF] (Node ffff88013762f500) klog , AE_ALREADY_EXISTS (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectAlreadyExists: Test 1, HIGH klog Kernel message: [ 2.270835] ACPI Error: Method parse klog /execution failed [_SB_.PCI0._OSC] (Node ffff880125e2c708) klog , AE_ALREADY_EXISTS (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiNamespaceLookupFailure: Test 1, HIGH klog Kernel message: [ 2.280398] ACPI Error (dswload-0781): klog [_T_0] Namespace lookup failure, AE_ALREADY_EXISTS klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectAlreadyExists: Test 1, HIGH klog Kernel message: [ 2.280410] ACPI Error (psparse-0537): klog Method parse/execution failed [_SB_.BAT1.UBIF] (Node klog ffff8800b3c2e100), AE_ALREADY_EXISTS klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectAlreadyExists: Test 1, HIGH klog Kernel message: [ 2.280443] ACPI Error (psparse-0537): klog Method parse/execution failed [_SB_.BAT1._BIF] (Node klog ffff8800b3c2e0c0), AE_ALREADY_EXISTS klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiNamespaceLookupFailure: Test 1, HIGH klog Kernel message: [ 2.283579] ACPI Error (psargs-0359): klog [_T_0] Namespace lookup failure, AE_NOT_FOUND klog klog ADVICE: The kernel has detected an error trying to execute klog an Method and it cannot find an object. This is indicates klog a bug in the DSDT or SSDT AML code. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 2.283585] ACPI Error (psparse-0537): Method klog parse/execution failed [_SB_.BAT1.UBIF] (Node klog ffff8800b3c2e100), AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 2.283615] ACPI Error (psparse-0537): Method klog parse/execution failed [_SB_.PCI0.LPCB.EC0_._Q09] (Node klog ffff8800b3c410e0), AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 2.288649] ACPI Error: Method parse/execution klog failed [_SB_.PCI0.SAT0.PRT0._SDD] (Node ffff88023f45dcd0), klog AE_NOT_FOUND (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 2.288685] ACPI Error: Method parse/execution klog failed [_SB_.PCI0.SAT0.PRT0._GTF] (Node ffff88023f45dcf8), klog AE_NOT_FOUND (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectAlreadyExists: Test 1, HIGH klog Kernel message: [ 2.294251] ACPI Error: Method parse klog /execution failed [_SB_.EEAC] (Node f742bf30), klog AE_ALREADY_EXISTS (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectAlreadyExists: Test 1, HIGH klog Kernel message: [ 2.294262] ACPI Error: Method parse klog /execution failed [_SB_.BAT2._STA] (Node f742d2d0), klog AE_ALREADY_EXISTS (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiNamespaceLookupFailure: Test 1, HIGH klog Kernel message: [ 2.324547] ACPI Error: [EABF] Namespace klog lookup failure, AE_ALREADY_EXISTS (20110413/dswload2-316) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectAlreadyExists: Test 1, HIGH klog Kernel message: [ 2.324556] ACPI Error: Method parse klog /execution failed [_SB_.EEAC] (Node f742d018), klog AE_ALREADY_EXISTS (20110413/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectAlreadyExists: Test 1, HIGH klog Kernel message: [ 2.324566] ACPI Error: Method parse klog /execution failed [_SB_.BAT2._STA] (Node f742d3a8), klog AE_ALREADY_EXISTS (20110413/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiZeroLengthCreateField: Test 1, HIGH klog Kernel message: [ 2.334361] ACPI Error: Attempt to klog CreateField of length zero (20110112/dsopcode-529) klog klog ADVICE: Failed to initialise an ACPI buffer field, klog CreateField used with a zero field length which is klog illegal. This is a firmware bug. klog klog FAILED [HIGH] KlogAcpiParseExecAmlFailed: Test 1, HIGH klog Kernel message: [ 2.334370] ACPI Error: Method parse klog /execution failed [_SB_.PCI0.IDE0.RATA] (Node klog ffff8801376322a8), AE_AML_OPERAND_VALUE (20110112 klog /psparse-536) klog klog ADVICE: The ACPI driver encountered a parse or execution klog error on some ACPI AML code. This is unexepcted and klog normally indicates that there is a bug in the compiled AML klog code. It could be a programming fault or an AML compiler klog issue. See acpi_ps_parse_aml(). klog klog FAILED [HIGH] KlogAcpiParseExecAmlFailed: Test 1, HIGH klog Kernel message: [ 2.334384] ACPI Error: Method parse klog /execution failed [_SB_.PCI0.IDE0.PRT1._GTF] (Node klog ffff880137632438), AE_AML_OPERAND_VALUE (20110112 klog /psparse-536) klog klog ADVICE: The ACPI driver encountered a parse or execution klog error on some ACPI AML code. This is unexepcted and klog normally indicates that there is a bug in the compiled AML klog code. It could be a programming fault or an AML compiler klog issue. See acpi_ps_parse_aml(). klog klog FAILED [HIGH] KlogAcpiPackageLimit: Test 1, HIGH Kernel klog message: [ 2.336604] ACPI Error (psparse-0537): Method klog parse/execution failed [_SB_.PCI0.GFX0._DOD] (Node klog ffff88013b63c460), AE_AML_PACKAGE_LIMIT klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 2.384172] ACPI Error: Method parse/execution klog failed [_SB_.PCI0.SAT0.PRT0._SDD] (Node ffff8801c305dcd0), klog AE_NOT_FOUND (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 2.384189] ACPI Error: Method parse/execution klog failed [_SB_.PCI0.SAT0.PRT0._GTF] (Node ffff8801c305dcf8), klog AE_NOT_FOUND (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiNamespaceLookupFailure: Test 1, HIGH klog Kernel message: [ 2.440684] ACPI Error (psargs-0359): klog [SMS_] Namespace lookup failure, AE_NOT_FOUND klog klog ADVICE: The kernel has detected an error trying to execute klog an Method and it cannot find an object. This is indicates klog a bug in the DSDT or SSDT AML code. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 2.440692] ACPI Error (psparse-0537): Method klog parse/execution failed [_SB_.PCI0.SATA.PRT0._SDD] (Node klog ffff88007db30c60), AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 2.462687] ACPI Error: Method parse/execution klog failed [_SB_.PCI0.SAT0.PRT0._SDD] (Node ffff880147646cd0), klog AE_NOT_FOUND (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 2.462711] ACPI Error: Method parse/execution klog failed [_SB_.PCI0.SAT0.PRT0._GTF] (Node ffff880147646cf8), klog AE_NOT_FOUND (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiInvalidTableLength: Test 1, HIGH klog Kernel message: [ 2.468708] ACPI Error (psparse-0537): klog Method parse/execution failed [_PR_.CPU1._PDC] (Node klog f700f180), AE_INVALID_TABLE_LENGTH klog klog ADVICE: The ACPI Method returned a table of the incorrect klog length. This can lead to unexepected results. klog klog FAILED [HIGH] KlogAcpiInvalidTableLength: Test 1, HIGH klog Kernel message: [ 2.468963] ACPI Error (psparse-0537): klog Method parse/execution failed [_PR_.CPU2._PDC] (Node klog f700f240), AE_INVALID_TABLE_LENGTH klog klog ADVICE: The ACPI Method returned a table of the incorrect klog length. This can lead to unexepected results. klog klog FAILED [LOW] KlogAcpiDodWithNoDos: Test 1, LOW Kernel klog message: [ 2.478380] [Firmware Bug]: ACPI(NGFX) defines klog _DOD but not _DOS klog klog ADVICE: ACPI Method _DOD (Enumerate all devices attached klog to display adapter) is defined but we should also have klog _DOS (Enable/Disable output switching) defined but it's klog been omitted. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 2.592359] ACPI Error: Method parse/execution klog failed [_PR_.CPU0.PPC_] (Node ffff88014f9a4140), klog AE_NOT_FOUND (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 2.592381] ACPI Error: Method parse/execution klog failed [_PR_.CPU0._PPC] (Node ffff88014f9a4028), klog AE_NOT_FOUND (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 2.593071] ACPI Error: Method parse/execution klog failed [_PR_.CPU1._PPC] (Node ffff88014f9a4118), klog AE_NOT_FOUND (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 2.593648] ACPI Error: Method parse/execution klog failed [_PR_.CPU2._PPC] (Node ffff88014f9a4370), klog AE_NOT_FOUND (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 2.593935] ACPI Error: Method parse/execution klog failed [_PR_.CPU3._PPC] (Node ffff88014f9a42d0), klog AE_NOT_FOUND (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiNamespaceLookupFailure: Test 1, HIGH klog Kernel message: [ 2.634350] ACPI Error: [GTF1] Namespace klog lookup failure, AE_NOT_FOUND (20110112/psargs-359) klog klog ADVICE: The kernel has detected an error trying to execute klog an Method and it cannot find an object. This is indicates klog a bug in the DSDT or SSDT AML code. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 2.634355] ACPI Error: Method parse/execution klog failed [_SB_.PCI0.SAT0.PRT1._SDD] (Node f3431af8), klog AE_NOT_FOUND (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 2.634373] ACPI Error: Method parse/execution klog failed [_SB_.PCI0.SAT0.PRT1._GTF] (Node f3431b10), klog AE_NOT_FOUND (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectAlreadyExists: Test 1, HIGH klog Kernel message: [ 2.671117] ACPI Error: Method parse klog /execution failed [_SB_.EEAC] (Node f2c2d018), klog AE_ALREADY_EXISTS (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectAlreadyExists: Test 1, HIGH klog Kernel message: [ 2.671128] ACPI Error: Method parse klog /execution failed [_SB_.BAT2._STA] (Node f2c2d3a8), klog AE_ALREADY_EXISTS (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 2.701908] ACPI Error: Method parse/execution klog failed [_SB_.PCI0.SAT0.PRT1._SDD] (Node f3831af8), klog AE_NOT_FOUND (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 2.701933] ACPI Error: Method parse/execution klog failed [_SB_.PCI0.SAT0.PRT1._GTF] (Node f3831b10), klog AE_NOT_FOUND (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectAlreadyExists: Test 1, HIGH klog Kernel message: [ 2.771747] ACPI Error: Method parse klog /execution failed [_SB_.EEAC] (Node f402bf60), klog AE_ALREADY_EXISTS (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectAlreadyExists: Test 1, HIGH klog Kernel message: [ 2.771758] ACPI Error: Method parse klog /execution failed [_SB_.BAT2._STA] (Node f402d300), klog AE_ALREADY_EXISTS (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiReturnPackageZeroElements: Test 1, klog HIGH Kernel message: [ 2.787172] ACPI Warning: For klog _SB_.PCI0.P0P1._PRT: Return Package has no elements klog (empty) (20110112/nspredef-456) klog klog ADVICE: ACPI AML interpreter executed a Method that klog returned a package with no elements inside it. This is klog most probably a bug in the Method and needs to be fixed. klog klog FAILED [HIGH] KlogAcpiBqcReturnedInvalidLevel: Test 1, klog HIGH Kernel message: [ 2.823916] ACPI Warning: _BQC klog returned an invalid level 20090521 video-629 klog klog ADVICE: Method _BQC (Brightness Query Current) returned an klog invalid display brightness level. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 2.837958] ACPI Error: Method parse/execution klog failed [_SB_.PCI0.SAT0.PRT1._SDD] (Node f7431858), klog AE_NOT_FOUND (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 2.837994] ACPI Error: Method parse/execution klog failed [_SB_.PCI0.SAT0.PRT1._GTF] (Node f7431870), klog AE_NOT_FOUND (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiReturnPackageTypeMismatch: Test 1, klog HIGH Kernel message: [ 2.838171] ACPI Warning for klog _SB_.BAT0._BIF: Return Package type mismatch at index 9 - klog found [NULL Object Descriptor], expected String/Buffer klog (20090903/nspredef-1012) klog klog ADVICE: ACPI AML interpreter executed a Method that klog returned a package with incorrectly typed data. The klog offending method needs to be fixed. klog klog FAILED [HIGH] KlogAcpiBqcReturnedInvalidLevel: Test 1, klog HIGH Kernel message: [ 2.851027] ACPI Warning: _BQC klog returned an invalid level (20110316/video-473) klog klog ADVICE: Method _BQC (Brightness Query Current) returned an klog invalid display brightness level. klog klog FAILED [HIGH] KlogAcpiPackageLimit: Test 1, HIGH Kernel klog message: [ 2.860339] ACPI Error: Method parse/execution klog failed [_SB_.C003.C098._DOD] (Node f4427588), klog AE_AML_PACKAGE_LIMIT (20110413/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiNamespaceLookupFailure: Test 1, HIGH klog Kernel message: [ 2.861808] ACPI Error: klog [_SB_.PCI0.GFX0.DD02._BCL] Namespace lookup failure, klog AE_NOT_FOUND (20110112/psargs-359) klog klog ADVICE: The kernel has detected an error trying to execute klog an Method and it cannot find an object. This is indicates klog a bug in the DSDT or SSDT AML code. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 2.861812] ACPI Error: Method parse/execution klog failed [_SB_.PCI0.PEG0.PEGP.DD02._BCL] (Node klog ffff88015746e168), AE_NOT_FOUND (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiPackageLimit: Test 1, HIGH Kernel klog message: [ 2.870589] ACPI Error: Method parse/execution klog failed [_SB_.PCI0.GFX0._DOD] (Node ffff880137632c80), klog AE_AML_PACKAGE_LIMIT (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiReturnTypeMismatch: Test 1, HIGH klog Kernel message: [ 2.906610] ACPI Warning: For klog _SB_.PCI0.P0P2.PEGP._DOD: Return type mismatch - found klog Integer, expected Package (20110413/nspredef-1053) klog klog ADVICE: The ACPI Method returned an incorrect type, this klog should be fixed. klog klog FAILED [HIGH] KlogAcpiFieldExceedsBuffer: Test 1, HIGH klog Kernel message: [ 2.949708] ACPI Error: Field [CDW3] at 96 klog exceeds Buffer [NULL] size 64 (bits) (20110112 klog /dsopcode-597) klog klog ADVICE: Failed to initialise an ACPI buffer field, the klog field exceeded the buffer size provided. This is a klog firmware bug. klog klog FAILED [CRITICAL] KlogAcpiSbOscAeAmlBufferLimit: Test 1, klog CRITICAL Kernel message: [ 2.949716] ACPI Error: Method klog parse/execution failed [_SB_._OSC] (Node ffff880297016ca8) klog , AE_AML_BUFFER_LIMIT (20110112/psparse-536) klog klog ADVICE: Section 6.2.10.2 of V4.0a of the ACPI klog specification states that the _OSC Method should be passed klog an 8 byte buffer of 2 x 32 DWORDs, however it appears that klog the method is possibly trying to access data outside this klog buffer. This is a bug in the _OSC method. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 3.005123] ACPI Error (psparse-0537): Method klog parse/execution failed [_SB_._OSC] (Node ffff88122fc1ea00) klog , AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 3.033154] ACPI Warning: Incorrect klog checksum in table [OEMB] - 0x87, should be 0x84 (20100428 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 3.112435] ACPI Error (psparse-0537): Method klog parse/execution failed [_PR_.PPCE] (Node f74257c8), klog AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 3.112465] ACPI Error (psparse-0537): Method klog parse/execution failed [EV4_] (Node f742c210), klog AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 3.112494] ACPI Error (psparse-0537): Method klog parse/execution failed [SMIE] (Node f7427a20), klog AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 3.112522] ACPI Error (psparse-0537): Method klog parse/execution failed [NEVT] (Node f74279d8), klog AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 3.112549] ACPI Error (psparse-0537): Method klog parse/execution failed [_SB_.PCI0.LPCB.ECDV._Q66] (Node klog f7427690), AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [LOW] KlogAcpiDodWithNoDos: Test 1, LOW Kernel klog message: [ 3.139648] [Firmware Bug]: ACPI(XVS0) defines klog _DOD but not _DOS klog klog ADVICE: ACPI Method _DOD (Enumerate all devices attached klog to display adapter) is defined but we should also have klog _DOS (Enable/Disable output switching) defined but it's klog been omitted. klog klog FAILED [HIGH] KlogAcpiPackageLimit: Test 1, HIGH Kernel klog message: [ 3.208822] ACPI Error (psparse-0537): Method klog parse/execution failed [_SB_.C003.C098._DOD] (Node klog ffff88007cf30b60), AE_AML_PACKAGE_LIMIT klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiPackageLimit: Test 1, HIGH Kernel klog message: [ 3.223518] ACPI Error (psparse-0537): Method klog parse/execution failed [_SB_.PCI0.GFX0._DOD] (Node klog ffff880236c469a0), AE_AML_PACKAGE_LIMIT klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 3.382436] ACPI Warning: Incorrect klog checksum in table [TCPA] - 00, should be 7F (20090903 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 3.382442] ACPI Warning: Incorrect klog checksum in table [_RAT] - 00, should be 63 (20090903 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [HIGH] KlogAcpiReturnPackageTypeMismatch: Test 1, klog HIGH Kernel message: [ 3.420672] ACPI Warning for klog _TZ_.THRM._PSL: Return Package type mismatch at index 0 - klog found Processor, expected Reference (20100428 klog /nspredef-1059) klog klog ADVICE: ACPI AML interpreter executed a Method that klog returned a package with incorrectly typed data. The klog offending method needs to be fixed. klog klog FAILED [HIGH] KlogAcpiReturnTypeMismatch: Test 1, HIGH klog Kernel message: [ 3.480092] ACPI Warning for klog _SB_.PCI0.SAT0.PRT0._GTF: Return type mismatch - found klog Integer, expected Buffer (20090903/nspredef-1006) klog klog ADVICE: The ACPI Method returned an incorrect type, this klog should be fixed. klog klog FAILED [HIGH] KlogAcpiReturnTypeMismatch: Test 1, HIGH klog Kernel message: [ 3.490098] ACPI Warning for klog _SB_.PCI0.SAT0.PRT1._GTF: Return type mismatch - found klog Integer, expected Buffer (20090903/nspredef-1006) klog klog ADVICE: The ACPI Method returned an incorrect type, this klog should be fixed. klog klog FAILED [HIGH] KlogAcpiBufferLimit: Test 1, HIGH Kernel klog message: [ 3.490832] ACPI Error (psparse-0537): Method klog parse/execution failed [_SB_.PMI0._GHL] (Node klog ffff88013bc2bdc0), AE_AML_BUFFER_LIMIT klog klog ADVICE: Generally this error occurs because of access klog outside of a buffer. This occurs for several reasons: a) A klog field does not fit within the current length of a buffer, klog b) an ACPI table load did not fit into a buffer, c) An klog attempt to convert a buffer into an integer failed because klog the buffer was zero sized, d) a SMBus/IPMI klog /GenericSerialBus write failed because the buffer was too klog small, e) An index into a buffer was too long and fell klog outside the buffer. klog klog FAILED [HIGH] KlogAcpiBufferLimit: Test 1, HIGH Kernel klog message: [ 3.490852] ACPI Error (psparse-0537): Method klog parse/execution failed [_SB_.PMI0._PMC] (Node klog ffff88013bc2bd40), AE_AML_BUFFER_LIMIT klog klog ADVICE: Generally this error occurs because of access klog outside of a buffer. This occurs for several reasons: a) A klog field does not fit within the current length of a buffer, klog b) an ACPI table load did not fit into a buffer, c) An klog attempt to convert a buffer into an integer failed because klog the buffer was zero sized, d) a SMBus/IPMI klog /GenericSerialBus write failed because the buffer was too klog small, e) An index into a buffer was too long and fell klog outside the buffer. klog klog FAILED [HIGH] KlogAcpiEventEnableFailed: Test 1, HIGH klog Kernel message: [ 3.502273] ACPI Error: Could not enable klog SleepButton event (20100428/evxfevnt-205) klog klog ADVICE: An ACPI fixed event could not be enabled. This can klog affect fixed events such as the power management timer, klog power button, sleep button, RTC alarm, wake status, system klog bus master request or the global release lock status. klog klog FAILED [HIGH] KlogAcpiPackageLimit: Test 1, HIGH Kernel klog message: [ 3.601126] ACPI Error (psparse-0537): Method klog parse/execution failed [_SB_.PCI0.GFX0._DOD] (Node klog f7420690), AE_AML_PACKAGE_LIMIT klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 3.644168] ACPI Warning: Incorrect klog checksum in table [TCPA] - 0xF8, should be 0x9C (20110413 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [LOW] KlogAcpiDodWithNoDos: Test 1, LOW Kernel klog message: [ 3.663829] [Firmware Bug]: ACPI(GFX0) defines klog _DOD but not _DOS klog klog ADVICE: ACPI Method _DOD (Enumerate all devices attached klog to display adapter) is defined but we should also have klog _DOS (Enable/Disable output switching) defined but it's klog been omitted. klog klog FAILED [HIGH] KlogAcpiBcmFailed: Test 1, HIGH Kernel klog message: [ 3.675814] ACPI Error: Evaluating _BCM failed klog (20100428/video-532) klog klog ADVICE: Could not set the brightness level, the ACPI klog control _BCM failed to execute correctly. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 3.868794] ACPI Error: Method parse/execution klog failed [_SB_.PCI0.SAT0.PRT0._SDD] (Node f3831b58), klog AE_NOT_FOUND (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 3.868812] ACPI Error: Method parse/execution klog failed [_SB_.PCI0.SAT0.PRT0._GTF] (Node f3831b70), klog AE_NOT_FOUND (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectAlreadyExists: Test 1, HIGH klog Kernel message: [ 3.983031] ACPI Error: Method parse klog /execution failed [_SB_.EEAC] (Node ffff88021d459028), klog AE_ALREADY_EXISTS (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectAlreadyExists: Test 1, HIGH klog Kernel message: [ 3.983040] ACPI Error: Method parse klog /execution failed [_SB_.BAT2._STA] (Node ffff88021d459618) klog , AE_ALREADY_EXISTS (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [LOW] KlogAcpiDodWithNoDos: Test 1, LOW Kernel klog message: [ 4.002664] [Firmware Bug]: ACPI(EVGA) defines klog _DOD but not _DOS klog klog ADVICE: ACPI Method _DOD (Enumerate all devices attached klog to display adapter) is defined but we should also have klog _DOS (Enable/Disable output switching) defined but it's klog been omitted. klog klog FAILED [MEDIUM] KlogAcpiIncorrectTableChecksum: Test 1, klog MEDIUM Kernel message: [ 4.046031] ACPI Warning: Incorrect klog checksum in table [OEMB] - 4A, should be 47 (20090903 klog /tbutils-314) klog klog ADVICE: The ACPI table listed above has an incorrect klog checksum, this could be a BIOS bug or due to table klog corruption. klog klog FAILED [HIGH] KlogAcpiObjectAlreadyExists: Test 1, HIGH klog Kernel message: [ 4.115197] ACPI Error: Method parse klog /execution failed [_SB_.EEAC] (Node ffff88021d458eb0), klog AE_ALREADY_EXISTS (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectAlreadyExists: Test 1, HIGH klog Kernel message: [ 4.115206] ACPI Error: Method parse klog /execution failed [_SB_.BAT2._STA] (Node ffff88021d4594b0) klog , AE_ALREADY_EXISTS (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiPackageLimit: Test 1, HIGH Kernel klog message: [ 4.190434] ACPI Error: Method parse/execution klog failed [_SB_.PCI0.GFX0._DOD] (Node ffff8801376342f8), klog AE_AML_PACKAGE_LIMIT (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 4.198699] ACPI Error: Method parse/execution klog failed [_SB_.PCI0.SAT0.PRT1._SDD] (Node f3831c00), klog AE_NOT_FOUND (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 4.198716] ACPI Error: Method parse/execution klog failed [_SB_.PCI0.SAT0.PRT1._GTF] (Node f3831c18), klog AE_NOT_FOUND (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiTimeOutReturnedByHandler: Test 1, klog HIGH Kernel message: [ 4.230508] ACPI Exception: AE_TIME, klog Returned by Handler for [EmbeddedControl] (20090903 klog /evregion-424) klog klog ADVICE: This is most probably caused by when a read or klog write operation to the EC memory has failed because of a klog timeout waiting for the Embedded Controller to complete klog the transaction. Normally, the kernel waits for 500ms for klog the Embedded Controller status port to indicate that a klog transaction is complete, but in this case it has not and a klog AE_TIME error has been returned. klog klog FAILED [HIGH] KlogAcpiEcTimeout: Test 1, HIGH Kernel klog message: [ 4.230527] ACPI Error (psparse-0537): Method klog parse/execution failed [_SB_.PCI0.ISAB.ECDV.ECR1] (Node klog f7018ed0), AE_TIME klog klog ADVICE: The ACPI driver encountered an error executing klog some ACPI AML code which originated from the Embedded klog Controller (EC) timing out while waiting for a transaction klog to complete. This could indicate that either EC interrupts klog are being disabled or that the EC has temporarily gone klog offline or locked up, so this could be a kernel error or klog more probably a bug in the EC firmware. See the kernel klog driver drivers/acpi/ec.c. One can increase EC timeouts klog using the kernel parameter ec_delay to specify the timeout klog in milliseconds, the default is 500. klog klog FAILED [HIGH] KlogAcpiEcTimeout: Test 1, HIGH Kernel klog message: [ 4.230612] ACPI Error (psparse-0537): Method klog parse/execution failed [_SB_.PCI0.ISAB.ECDV.ECR2] (Node klog f7018ee8), AE_TIME klog klog ADVICE: The ACPI driver encountered an error executing klog some ACPI AML code which originated from the Embedded klog Controller (EC) timing out while waiting for a transaction klog to complete. This could indicate that either EC interrupts klog are being disabled or that the EC has temporarily gone klog offline or locked up, so this could be a kernel error or klog more probably a bug in the EC firmware. See the kernel klog driver drivers/acpi/ec.c. One can increase EC timeouts klog using the kernel parameter ec_delay to specify the timeout klog in milliseconds, the default is 500. klog klog FAILED [HIGH] KlogAcpiEcTimeout: Test 1, HIGH Kernel klog message: [ 4.230643] ACPI Error (psparse-0537): Method klog parse/execution failed [ECRW] (Node f7018fa8), AE_TIME klog klog ADVICE: The ACPI driver encountered an error executing klog some ACPI AML code which originated from the Embedded klog Controller (EC) timing out while waiting for a transaction klog to complete. This could indicate that either EC interrupts klog are being disabled or that the EC has temporarily gone klog offline or locked up, so this could be a kernel error or klog more probably a bug in the EC firmware. See the kernel klog driver drivers/acpi/ec.c. One can increase EC timeouts klog using the kernel parameter ec_delay to specify the timeout klog in milliseconds, the default is 500. klog klog FAILED [HIGH] KlogAcpiEcTimeout: Test 1, HIGH Kernel klog message: [ 4.230672] ACPI Error (psparse-0537): Method klog parse/execution failed [ECG1] (Node f7018fd8), AE_TIME klog klog ADVICE: The ACPI driver encountered an error executing klog some ACPI AML code which originated from the Embedded klog Controller (EC) timing out while waiting for a transaction klog to complete. This could indicate that either EC interrupts klog are being disabled or that the EC has temporarily gone klog offline or locked up, so this could be a kernel error or klog more probably a bug in the EC firmware. See the kernel klog driver drivers/acpi/ec.c. One can increase EC timeouts klog using the kernel parameter ec_delay to specify the timeout klog in milliseconds, the default is 500. klog klog FAILED [HIGH] KlogAcpiTimeout: Test 1, HIGH Kernel message klog : [ 4.230701] ACPI Error (psparse-0537): Method parse klog /execution failed [NEVT] (Node f70186f0), AE_TIME klog klog ADVICE: The ACPI driver encountered an error executing klog some ACPI AML code which originated from a device timing klog out. klog klog FAILED [HIGH] KlogAcpiEcTimeout: Test 1, HIGH Kernel klog message: [ 4.230730] ACPI Error (psparse-0537): Method klog parse/execution failed [_SB_.PCI0.ISAB.ECDV._Q66] (Node klog f7018eb8), AE_TIME klog klog ADVICE: The ACPI driver encountered an error executing klog some ACPI AML code which originated from the Embedded klog Controller (EC) timing out while waiting for a transaction klog to complete. This could indicate that either EC interrupts klog are being disabled or that the EC has temporarily gone klog offline or locked up, so this could be a kernel error or klog more probably a bug in the EC firmware. See the kernel klog driver drivers/acpi/ec.c. One can increase EC timeouts klog using the kernel parameter ec_delay to specify the timeout klog in milliseconds, the default is 500. klog klog FAILED [HIGH] KlogAcpiNoHandlerForRegion: Test 1, HIGH klog Kernel message: [ 4.576415] ACPI Error: No handler for klog Region [ERAM] (f4830d50) [EmbeddedControl] (20110112 klog /evregion-369) klog klog ADVICE: ACPI attempted to read or write to a region klog however the ACPI driver does not have a handler klog implemented for this particular region space. The read klog /write will fail and undefined behaviour will occur. klog klog FAILED [HIGH] KlogAcpiObjectDoesNotExist: Test 1, HIGH klog Kernel message: [ 4.576437] ACPI Error: Method parse klog /execution failed [_SB_.PCI0.SBRG.EC0_._REG] (Node klog f48326d8), AE_NOT_EXIST (20110112/psparse-536) klog klog ADVICE: The ACPI interpreter failed to execute or parse klog some AML because a object or control did not exist. This klog normally occurs because of buggy firmware and may lead to klog unexpected behaviour or loss of functionality. klog klog FAILED [HIGH] KlogAcpiObjectAlreadyExists: Test 1, HIGH klog Kernel message: [ 4.638115] ACPI Error: Method parse klog /execution failed [_SB_.EEAC] (Node ffff880220c5b028), klog AE_ALREADY_EXISTS (20110413/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectAlreadyExists: Test 1, HIGH klog Kernel message: [ 4.638127] ACPI Error: Method parse klog /execution failed [_SB_.BAT2._STA] (Node ffff880220c5b618) klog , AE_ALREADY_EXISTS (20110413/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiPackageLimit: Test 1, HIGH Kernel klog message: [ 4.838935] ACPI Error (psparse-0537): Method klog parse/execution failed [_TZ_.C2E8] (Node f701b108), klog AE_AML_PACKAGE_LIMIT klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiPackageLimit: Test 1, HIGH Kernel klog message: [ 4.838984] ACPI Error (psparse-0537): Method klog parse/execution failed [_TZ_.C2E7] (Node f701b0f0), klog AE_AML_PACKAGE_LIMIT klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiPackageLimit: Test 1, HIGH Kernel klog message: [ 4.839033] ACPI Error (psparse-0537): Method klog parse/execution failed [_TZ_.TZ2_._TMP] (Node f701b7c8), klog AE_AML_PACKAGE_LIMIT klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectAlreadyExists: Test 1, HIGH klog Kernel message: [ 4.890970] ACPI Error: Method parse klog /execution failed [_SB_.EEAC] (Node ffff880126e43f50), klog AE_ALREADY_EXISTS (20110413/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectAlreadyExists: Test 1, HIGH klog Kernel message: [ 4.890980] ACPI Error: Method parse klog /execution failed [_SB_.BAT2._STA] (Node ffff880126e44550) klog , AE_ALREADY_EXISTS (20110413/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [LOW] KlogAcpiDodWithNoDos: Test 1, LOW Kernel klog message: [ 4.983204] [Firmware Bug]: ACPI(MXM3) defines klog _DOD but not _DOS klog klog ADVICE: ACPI Method _DOD (Enumerate all devices attached klog to display adapter) is defined but we should also have klog _DOS (Enable/Disable output switching) defined but it's klog been omitted. klog klog FAILED [HIGH] KlogAcpiReturnPackageTypeMismatch: Test 1, klog HIGH Kernel message: [ 5.150560] ACPI Warning for klog _SB_.BAT0._BIF: Return Package type mismatch at index 12 - klog found Integer, expected String/Buffer (20090903 klog /nspredef-1012) klog klog ADVICE: ACPI AML interpreter executed a Method that klog returned a package with incorrectly typed data. The klog offending method needs to be fixed. klog klog FAILED [HIGH] KlogAcpiPackageLimit: Test 1, HIGH Kernel klog message: [ 5.332663] ACPI Error: Method parse/execution klog failed [_SB_.PCI0.GFX0._DOD] (Node f4425450), klog AE_AML_PACKAGE_LIMIT (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectAlreadyExists: Test 1, HIGH klog Kernel message: [ 6.224974] ACPI Error: Method parse klog /execution failed [_SB_.PCI0.PEGP.VGA_.LCD_.GBQC] (Node klog f3423438), AE_ALREADY_EXISTS (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectAlreadyExists: Test 1, HIGH klog Kernel message: [ 6.224987] ACPI Error: Method parse klog /execution failed [_SB_.PCI0.PEGP.VGA_.LCD_._BQC] (Node klog f3423420), AE_ALREADY_EXISTS (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectAlreadyExists: Test 1, HIGH klog Kernel message: [ 6.227917] ACPI Error: Method parse klog /execution failed [_SB_.PCI0.PEGP.VGA_.LCD1.GBQC] (Node klog f34235b8), AE_ALREADY_EXISTS (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectAlreadyExists: Test 1, HIGH klog Kernel message: [ 6.227930] ACPI Error: Method parse klog /execution failed [_SB_.PCI0.PEGP.VGA_.LCD1._BQC] (Node klog f34235a0), AE_ALREADY_EXISTS (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiNamespaceLookupFailure: Test 1, HIGH klog Kernel message: [ 6.732287] ACPI Error: [_T_0] Namespace klog lookup failure, AE_ALREADY_EXISTS (20110112/dswload-802) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectAlreadyExists: Test 1, HIGH klog Kernel message: [ 6.732310] ACPI Error: Method parse klog /execution failed [_SB_.BAT1.UBIF] (Node dd028fc0), klog AE_ALREADY_EXISTS (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectAlreadyExists: Test 1, HIGH klog Kernel message: [ 6.732334] ACPI Error: Method parse klog /execution failed [_SB_.BAT1._BIF] (Node dd028f90), klog AE_ALREADY_EXISTS (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiNamespaceLookupFailure: Test 1, HIGH klog Kernel message: [ 6.773266] ACPI Error: [CAPB] Namespace klog lookup failure, AE_ALREADY_EXISTS (20101013/dsfield-143) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectAlreadyExists: Test 1, HIGH klog Kernel message: [ 6.773285] ACPI Error: Method parse klog /execution failed [_SB_.PCI0._OSC] (Node ddc25ca8), klog AE_ALREADY_EXISTS (20101013/psparse-537) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiNoHandlerForRegion: Test 1, HIGH klog Kernel message: [ 7.365139] ACPI Error: No handler for klog Region [IPMI] (ffff8805ffa37240) [IPMI] (20110112 klog /evregion-369) klog klog ADVICE: ACPI attempted to read or write to a region klog however the ACPI driver does not have a handler klog implemented for this particular region space. The read klog /write will fail and undefined behaviour will occur. klog klog FAILED [HIGH] KlogAcpiRegionHasNoHandler: Test 1, HIGH klog Kernel message: [ 7.365150] ACPI Error: Region IPMI(0x7) klog has no handler (20110112/exfldio-292) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectDoesNotExist: Test 1, HIGH klog Kernel message: [ 7.365161] ACPI Error: Method parse klog /execution failed [_SB_.PMI0._GHL] (Node ffff8805ffa36b18) klog , AE_NOT_EXIST (20110112/psparse-536) klog klog ADVICE: The ACPI interpreter failed to execute or parse klog some AML because a object or control did not exist. This klog normally occurs because of buggy firmware and may lead to klog unexpected behaviour or loss of functionality. klog klog FAILED [HIGH] KlogAcpiObjectDoesNotExist: Test 1, HIGH klog Kernel message: [ 7.365181] ACPI Error: Method parse klog /execution failed [_SB_.PMI0._PMC] (Node ffff8805ffa36a78) klog , AE_NOT_EXIST (20110112/psparse-536) klog klog ADVICE: The ACPI interpreter failed to execute or parse klog some AML because a object or control did not exist. This klog normally occurs because of buggy firmware and may lead to klog unexpected behaviour or loss of functionality. klog klog FAILED [HIGH] KlogAcpiEcTimeout: Test 1, HIGH Kernel klog message: [ 8.137284] ACPI Error (psparse-0537): Method klog parse/execution failed [_SB_.PCI0.LPCB.ECDV.ECR1] (Node klog f702e720), AE_TIME klog klog ADVICE: The ACPI driver encountered an error executing klog some ACPI AML code which originated from the Embedded klog Controller (EC) timing out while waiting for a transaction klog to complete. This could indicate that either EC interrupts klog are being disabled or that the EC has temporarily gone klog offline or locked up, so this could be a kernel error or klog more probably a bug in the EC firmware. See the kernel klog driver drivers/acpi/ec.c. One can increase EC timeouts klog using the kernel parameter ec_delay to specify the timeout klog in milliseconds, the default is 500. klog klog FAILED [HIGH] KlogAcpiEcTimeout: Test 1, HIGH Kernel klog message: [ 8.137317] ACPI Error (psparse-0537): Method klog parse/execution failed [ECRB] (Node f702e7f8), AE_TIME klog klog ADVICE: The ACPI driver encountered an error executing klog some ACPI AML code which originated from the Embedded klog Controller (EC) timing out while waiting for a transaction klog to complete. This could indicate that either EC interrupts klog are being disabled or that the EC has temporarily gone klog offline or locked up, so this could be a kernel error or klog more probably a bug in the EC firmware. See the kernel klog driver drivers/acpi/ec.c. One can increase EC timeouts klog using the kernel parameter ec_delay to specify the timeout klog in milliseconds, the default is 500. klog klog FAILED [HIGH] KlogAcpiEcTimeout: Test 1, HIGH Kernel klog message: [ 8.137344] ACPI Error (psparse-0537): Method klog parse/execution failed [EC0A] (Node f702ea08), AE_TIME klog klog ADVICE: The ACPI driver encountered an error executing klog some ACPI AML code which originated from the Embedded klog Controller (EC) timing out while waiting for a transaction klog to complete. This could indicate that either EC interrupts klog are being disabled or that the EC has temporarily gone klog offline or locked up, so this could be a kernel error or klog more probably a bug in the EC firmware. See the kernel klog driver drivers/acpi/ec.c. One can increase EC timeouts klog using the kernel parameter ec_delay to specify the timeout klog in milliseconds, the default is 500. klog klog FAILED [HIGH] KlogAcpiTimeout: Test 1, HIGH Kernel message klog : [ 8.137370] ACPI Error (psparse-0537): Method parse klog /execution failed [_SB_.AMW0._WED] (Node f7019ca8), klog AE_TIME klog klog ADVICE: The ACPI driver encountered an error executing klog some ACPI AML code which originated from a device timing klog out. klog klog FAILED [HIGH] KlogAcpiPackageLimit: Test 1, HIGH Kernel klog message: [ 8.227953] ACPI Error (psparse-0537): Method klog parse/execution failed [_SB_.C003.C098._DOD] (Node klog f7021588), AE_AML_PACKAGE_LIMIT klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [LOW] KlogAcpiDodWithNoDos: Test 1, LOW Kernel klog message: [ 8.316300] [Firmware Bug]: ACPI(VGA0) defines klog _DOD but not _DOS klog klog ADVICE: ACPI Method _DOD (Enumerate all devices attached klog to display adapter) is defined but we should also have klog _DOS (Enable/Disable output switching) defined but it's klog been omitted. klog klog FAILED [HIGH] KlogAcpiObjectAlreadyExists: Test 1, HIGH klog Kernel message: [ 8.794633] ACPI Error: Method parse klog /execution failed [_SB_.PCI0._OSC] (Node f5824ab0), klog AE_ALREADY_EXISTS (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiEcTimeout: Test 1, HIGH Kernel klog message: [ 9.141980] ACPI Error (psparse-0537): Method klog parse/execution failed [_SB_.PCI0.LPCB.ECDV.ECR1] (Node klog f702e690), AE_TIME klog klog ADVICE: The ACPI driver encountered an error executing klog some ACPI AML code which originated from the Embedded klog Controller (EC) timing out while waiting for a transaction klog to complete. This could indicate that either EC interrupts klog are being disabled or that the EC has temporarily gone klog offline or locked up, so this could be a kernel error or klog more probably a bug in the EC firmware. See the kernel klog driver drivers/acpi/ec.c. One can increase EC timeouts klog using the kernel parameter ec_delay to specify the timeout klog in milliseconds, the default is 500. klog klog FAILED [HIGH] KlogAcpiEcTimeout: Test 1, HIGH Kernel klog message: [ 9.142017] ACPI Error (psparse-0537): Method klog parse/execution failed [ECRB] (Node f702e768), AE_TIME klog klog ADVICE: The ACPI driver encountered an error executing klog some ACPI AML code which originated from the Embedded klog Controller (EC) timing out while waiting for a transaction klog to complete. This could indicate that either EC interrupts klog are being disabled or that the EC has temporarily gone klog offline or locked up, so this could be a kernel error or klog more probably a bug in the EC firmware. See the kernel klog driver drivers/acpi/ec.c. One can increase EC timeouts klog using the kernel parameter ec_delay to specify the timeout klog in milliseconds, the default is 500. klog klog FAILED [HIGH] KlogAcpiEcTimeout: Test 1, HIGH Kernel klog message: [ 9.142046] ACPI Error (psparse-0537): Method klog parse/execution failed [EC0A] (Node f702e978), AE_TIME klog klog ADVICE: The ACPI driver encountered an error executing klog some ACPI AML code which originated from the Embedded klog Controller (EC) timing out while waiting for a transaction klog to complete. This could indicate that either EC interrupts klog are being disabled or that the EC has temporarily gone klog offline or locked up, so this could be a kernel error or klog more probably a bug in the EC firmware. See the kernel klog driver drivers/acpi/ec.c. One can increase EC timeouts klog using the kernel parameter ec_delay to specify the timeout klog in milliseconds, the default is 500. klog klog FAILED [HIGH] KlogAcpiTimeout: Test 1, HIGH Kernel message klog : [ 9.142076] ACPI Error (psparse-0537): Method parse klog /execution failed [_SB_.AMW0._WED] (Node f7019420), klog AE_TIME klog klog ADVICE: The ACPI driver encountered an error executing klog some ACPI AML code which originated from a device timing klog out. klog klog FAILED [HIGH] KlogAcpiReturnPackageTypeMismatch: Test 1, klog HIGH Kernel message: [ 9.267040] ACPI Warning for klog _SB_.SPM_._PMD: Return Package type mismatch at index 0 - klog found String, expected Reference (20090903/nspredef-1012) klog klog ADVICE: ACPI AML interpreter executed a Method that klog returned a package with incorrectly typed data. The klog offending method needs to be fixed. klog klog FAILED [HIGH] KlogAcpiBufferLimit: Test 1, HIGH Kernel klog message: [ 9.391036] ACPI Error: Method parse/execution klog failed [_SB_.PCI0.IBCM] (Node f3828738), klog AE_AML_BUFFER_LIMIT (20110112/psparse-536) klog klog ADVICE: Generally this error occurs because of access klog outside of a buffer. This occurs for several reasons: a) A klog field does not fit within the current length of a buffer, klog b) an ACPI table load did not fit into a buffer, c) An klog attempt to convert a buffer into an integer failed because klog the buffer was zero sized, d) a SMBus/IPMI klog /GenericSerialBus write failed because the buffer was too klog small, e) An index into a buffer was too long and fell klog outside the buffer. klog klog FAILED [HIGH] KlogAcpiBufferLimit: Test 1, HIGH Kernel klog message: [ 9.391049] ACPI Error: Method parse/execution klog failed [_SB_.PCI0.GFX0.DD03._BCM] (Node f3824b28), klog AE_AML_BUFFER_LIMIT (20110112/psparse-536) klog klog ADVICE: Generally this error occurs because of access klog outside of a buffer. This occurs for several reasons: a) A klog field does not fit within the current length of a buffer, klog b) an ACPI table load did not fit into a buffer, c) An klog attempt to convert a buffer into an integer failed because klog the buffer was zero sized, d) a SMBus/IPMI klog /GenericSerialBus write failed because the buffer was too klog small, e) An index into a buffer was too long and fell klog outside the buffer. klog klog FAILED [HIGH] KlogAcpiBcmFailed: Test 1, HIGH Kernel klog message: [ 9.391061] ACPI Error: Evaluating _BCM failed klog (20110112/video-365) klog klog ADVICE: Could not set the brightness level, the ACPI klog control _BCM failed to execute correctly. klog klog FAILED [HIGH] KlogAcpiResolveOpBadType: Test 1, HIGH klog Kernel message: [ 9.393479] ACPI Error: Needed [Buffer klog /String/Package], found [Integer] ffff88012d8cfee8 klog (20110112/exresop-590) klog klog ADVICE: An error occurred in resolving operands, required klog a Buffer, String or Package type, got a different type klog instead. klog klog FAILED [HIGH] KlogAcpiOperandType: Test 1, HIGH Kernel klog message: [ 9.393498] ACPI Error: Method parse/execution klog failed [_SB_.PCI0.GFX0.DD02.GBQC] (Node ffff88012f83e6b8), klog AE_AML_OPERAND_TYPE (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiOperandType: Test 1, HIGH Kernel klog message: [ 9.393510] ACPI Error: Method parse/execution klog failed [_SB_.PCI0.GFX0.DD02._BQC] (Node ffff88012f83e690), klog AE_AML_OPERAND_TYPE (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiResolveOpBadType: Test 1, HIGH klog Kernel message: [ 9.394098] ACPI Error: Needed [Buffer klog /String/Package], found [Integer] ffff88012d8cfd38 klog (20110112/exresop-590) klog klog ADVICE: An error occurred in resolving operands, required klog a Buffer, String or Package type, got a different type klog instead. klog klog FAILED [HIGH] KlogAcpiOperandType: Test 1, HIGH Kernel klog message: [ 9.394109] ACPI Error: Method parse/execution klog failed [_SB_.PCI0.GFX0.DD02.SBCM] (Node ffff88012f83e6e0), klog AE_AML_OPERAND_TYPE (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiOperandType: Test 1, HIGH Kernel klog message: [ 9.394118] ACPI Error: Method parse/execution klog failed [_SB_.PCI0.GFX0.DD02._BCM] (Node ffff88012f83e668), klog AE_AML_OPERAND_TYPE (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 9.957372] ACPI Error: Method parse/execution klog failed [_SB_.PCI0.SAT1.CHN0._GTM] (Node ffff88007af33780), klog AE_NOT_FOUND (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 9.957372] ACPI Error: Method parse/execution klog failed [_SB_.PCI0.SAT1.CHN1._GTM] (Node ffff88007af33910), klog AE_NOT_FOUND (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 9.957372] ACPI Error: Method parse/execution klog failed [_SB_.PCI0.SATA.CHN0._GTM] (Node ffff88007af32b68), klog AE_NOT_FOUND (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 9.957372] ACPI Error: Method parse/execution klog failed [_SB_.PCI0.SATA.CHN1._GTM] (Node ffff88007af32cf8), klog AE_NOT_FOUND (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [LOW] KlogAcpiDodWithNoDos: Test 1, LOW Kernel klog message: [ 10.080352] [Firmware Bug]: ACPI(VGA) defines klog _DOD but not _DOS klog klog ADVICE: ACPI Method _DOD (Enumerate all devices attached klog to display adapter) is defined but we should also have klog _DOS (Enable/Disable output switching) defined but it's klog been omitted. klog klog FAILED [HIGH] KlogAcpiResolveOpBadType: Test 1, HIGH klog Kernel message: [ 10.120967] ACPI Error: Needed [Buffer klog /String/Package], found [Integer] ffff88023bcba438 klog (20110112/exresop-590) klog klog ADVICE: An error occurred in resolving operands, required klog a Buffer, String or Package type, got a different type klog instead. klog klog FAILED [HIGH] KlogAcpiOperandType: Test 1, HIGH Kernel klog message: [ 10.120977] ACPI Error: Method parse/execution klog failed [_SB_.PCI0.GFX0._DSM] (Node ffff88023f45edc0), klog AE_AML_OPERAND_TYPE (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiResolveOpBadType: Test 1, HIGH klog Kernel message: [ 10.121007] ACPI Error: Needed [Buffer klog /String/Package], found [Integer] ffff88023bcba1b0 klog (20110112/exresop-590) klog klog ADVICE: An error occurred in resolving operands, required klog a Buffer, String or Package type, got a different type klog instead. klog klog FAILED [HIGH] KlogAcpiOperandType: Test 1, HIGH Kernel klog message: [ 10.121018] ACPI Error: Method parse/execution klog failed [_SB_.PCI0.PEG0.GFX0._DSM] (Node ffff88023f474370), klog AE_AML_OPERAND_TYPE (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiReturnPackageZeroElements: Test 1, klog HIGH Kernel message: [ 10.194089] ACPI Warning for klog _SB_.PCI0.PCIB._PRT: Return Package has no elements klog (empty) (20100428/nspredef-456) klog klog ADVICE: ACPI AML interpreter executed a Method that klog returned a package with no elements inside it. This is klog most probably a bug in the Method and needs to be fixed. klog klog FAILED [HIGH] KlogAcpiNamespaceLookupFailure: Test 1, HIGH klog Kernel message: [ 10.289821] ACPI Error (psargs-0359): klog [_PR_.CPU0._CST] Namespace lookup failure, AE_NOT_FOUND klog klog ADVICE: The kernel has detected an error trying to execute klog an Method and it cannot find an object. This is indicates klog a bug in the DSDT or SSDT AML code. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 10.289828] ACPI Error (psparse-0537): Method klog parse/execution failed [_PR_.CPU1._CST] (Node f70c3288), klog AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiIncorrectWriteBufferSize: Test 1, klog HIGH Kernel message: [ 10.344782] ACPI Error: SMBus or klog IPMI write requires Buffer of length 42, found length 20 klog (20090903/exfield-286) klog klog ADVICE: An incorrect SMBus or IPMI write buffer size was klog used. klog klog FAILED [HIGH] KlogAcpiBufferLimit: Test 1, HIGH Kernel klog message: [ 10.344788] ACPI Error (psparse-0537): Method klog parse/execution failed [_SB_.PMI0._GHL] (Node klog ffff88122fc1ece0), AE_AML_BUFFER_LIMIT klog klog ADVICE: Generally this error occurs because of access klog outside of a buffer. This occurs for several reasons: a) A klog field does not fit within the current length of a buffer, klog b) an ACPI table load did not fit into a buffer, c) An klog attempt to convert a buffer into an integer failed because klog the buffer was zero sized, d) a SMBus/IPMI klog /GenericSerialBus write failed because the buffer was too klog small, e) An index into a buffer was too long and fell klog outside the buffer. klog klog FAILED [HIGH] KlogAcpiBufferLimit: Test 1, HIGH Kernel klog message: [ 10.344812] ACPI Error (psparse-0537): Method klog parse/execution failed [_SB_.PMI0._PMC] (Node klog ffff88122fc1ec60), AE_AML_BUFFER_LIMIT klog klog ADVICE: Generally this error occurs because of access klog outside of a buffer. This occurs for several reasons: a) A klog field does not fit within the current length of a buffer, klog b) an ACPI table load did not fit into a buffer, c) An klog attempt to convert a buffer into an integer failed because klog the buffer was zero sized, d) a SMBus/IPMI klog /GenericSerialBus write failed because the buffer was too klog small, e) An index into a buffer was too long and fell klog outside the buffer. klog klog FAILED [HIGH] KlogAcpiReturnPackageZeroElements: Test 1, klog HIGH Kernel message: [ 10.380244] ACPI Warning klog (nspredef-0357): _SB_.PCI0.VID2._DOD: Return Package has klog no elements (empty) [20080926] klog klog ADVICE: ACPI AML interpreter executed a Method that klog returned a package with no elements inside it. This is klog most probably a bug in the Method and needs to be fixed. klog klog FAILED [HIGH] KlogAcpiParseExecAmlFailed: Test 1, HIGH klog Kernel message: [ 10.680422] ACPI Error: Method parse klog /execution failed [_SB_.PCI0.GFX0.DD02._BCM] (Node klog ffff880117642ed8), AE_AML_INFINITE_LOOP (20110112 klog /psparse-536) klog klog ADVICE: The ACPI driver encountered a parse or execution klog error on some ACPI AML code. This is unexepcted and klog normally indicates that there is a bug in the compiled AML klog code. It could be a programming fault or an AML compiler klog issue. See acpi_ps_parse_aml(). klog klog FAILED [HIGH] KlogAcpiEcTimeout: Test 1, HIGH Kernel klog message: [ 10.692650] ACPI Error (psparse-0537): Method klog parse/execution failed [_SB_.PCI0.LPCB.ECDV.ECR2] (Node klog f702e738), AE_TIME klog klog ADVICE: The ACPI driver encountered an error executing klog some ACPI AML code which originated from the Embedded klog Controller (EC) timing out while waiting for a transaction klog to complete. This could indicate that either EC interrupts klog are being disabled or that the EC has temporarily gone klog offline or locked up, so this could be a kernel error or klog more probably a bug in the EC firmware. See the kernel klog driver drivers/acpi/ec.c. One can increase EC timeouts klog using the kernel parameter ec_delay to specify the timeout klog in milliseconds, the default is 500. klog klog FAILED [HIGH] KlogAcpiEcTimeout: Test 1, HIGH Kernel klog message: [ 10.692684] ACPI Error (psparse-0537): Method klog parse/execution failed [ECRW] (Node f702e810), AE_TIME klog klog ADVICE: The ACPI driver encountered an error executing klog some ACPI AML code which originated from the Embedded klog Controller (EC) timing out while waiting for a transaction klog to complete. This could indicate that either EC interrupts klog are being disabled or that the EC has temporarily gone klog offline or locked up, so this could be a kernel error or klog more probably a bug in the EC firmware. See the kernel klog driver drivers/acpi/ec.c. One can increase EC timeouts klog using the kernel parameter ec_delay to specify the timeout klog in milliseconds, the default is 500. klog klog FAILED [HIGH] KlogAcpiEcTimeout: Test 1, HIGH Kernel klog message: [ 10.692710] ACPI Error (psparse-0537): Method klog parse/execution failed [ECG1] (Node f702e840), AE_TIME klog klog ADVICE: The ACPI driver encountered an error executing klog some ACPI AML code which originated from the Embedded klog Controller (EC) timing out while waiting for a transaction klog to complete. This could indicate that either EC interrupts klog are being disabled or that the EC has temporarily gone klog offline or locked up, so this could be a kernel error or klog more probably a bug in the EC firmware. See the kernel klog driver drivers/acpi/ec.c. One can increase EC timeouts klog using the kernel parameter ec_delay to specify the timeout klog in milliseconds, the default is 500. klog klog FAILED [HIGH] KlogAcpiTimeout: Test 1, HIGH Kernel message klog : [ 10.692735] ACPI Error (psparse-0537): Method parse klog /execution failed [NEVT] (Node f702ea50), AE_TIME klog klog ADVICE: The ACPI driver encountered an error executing klog some ACPI AML code which originated from a device timing klog out. klog klog FAILED [HIGH] KlogAcpiEcTimeout: Test 1, HIGH Kernel klog message: [ 10.692761] ACPI Error (psparse-0537): Method klog parse/execution failed [_SB_.PCI0.LPCB.ECDV._Q66] (Node klog f702e708), AE_TIME klog klog ADVICE: The ACPI driver encountered an error executing klog some ACPI AML code which originated from the Embedded klog Controller (EC) timing out while waiting for a transaction klog to complete. This could indicate that either EC interrupts klog are being disabled or that the EC has temporarily gone klog offline or locked up, so this could be a kernel error or klog more probably a bug in the EC firmware. See the kernel klog driver drivers/acpi/ec.c. One can increase EC timeouts klog using the kernel parameter ec_delay to specify the timeout klog in milliseconds, the default is 500. klog klog FAILED [HIGH] KlogAcpiEcTimeout: Test 1, HIGH Kernel klog message: [ 10.708822] ACPI Error (psparse-0537): Method klog parse/execution failed [_SB_.PCI0.LPCB.ECDV.ECR1] (Node klog f7427738), AE_TIME klog klog ADVICE: The ACPI driver encountered an error executing klog some ACPI AML code which originated from the Embedded klog Controller (EC) timing out while waiting for a transaction klog to complete. This could indicate that either EC interrupts klog are being disabled or that the EC has temporarily gone klog offline or locked up, so this could be a kernel error or klog more probably a bug in the EC firmware. See the kernel klog driver drivers/acpi/ec.c. One can increase EC timeouts klog using the kernel parameter ec_delay to specify the timeout klog in milliseconds, the default is 500. klog klog FAILED [HIGH] KlogAcpiEcTimeout: Test 1, HIGH Kernel klog message: [ 10.708876] ACPI Error (psparse-0537): Method klog parse/execution failed [ECRB] (Node f7427810), AE_TIME klog klog ADVICE: The ACPI driver encountered an error executing klog some ACPI AML code which originated from the Embedded klog Controller (EC) timing out while waiting for a transaction klog to complete. This could indicate that either EC interrupts klog are being disabled or that the EC has temporarily gone klog offline or locked up, so this could be a kernel error or klog more probably a bug in the EC firmware. See the kernel klog driver drivers/acpi/ec.c. One can increase EC timeouts klog using the kernel parameter ec_delay to specify the timeout klog in milliseconds, the default is 500. klog klog FAILED [HIGH] KlogAcpiEcTimeout: Test 1, HIGH Kernel klog message: [ 10.708908] ACPI Error (psparse-0537): Method klog parse/execution failed [EC0A] (Node f7427a20), AE_TIME klog klog ADVICE: The ACPI driver encountered an error executing klog some ACPI AML code which originated from the Embedded klog Controller (EC) timing out while waiting for a transaction klog to complete. This could indicate that either EC interrupts klog are being disabled or that the EC has temporarily gone klog offline or locked up, so this could be a kernel error or klog more probably a bug in the EC firmware. See the kernel klog driver drivers/acpi/ec.c. One can increase EC timeouts klog using the kernel parameter ec_delay to specify the timeout klog in milliseconds, the default is 500. klog klog FAILED [HIGH] KlogAcpiTimeout: Test 1, HIGH Kernel message klog : [ 10.708939] ACPI Error (psparse-0537): Method parse klog /execution failed [_SB_.AMW0._WED] (Node f742c078), klog AE_TIME klog klog ADVICE: The ACPI driver encountered an error executing klog some ACPI AML code which originated from a device timing klog out. klog klog FAILED [HIGH] KlogAcpiEcTimeout: Test 1, HIGH Kernel klog message: [ 10.724353] ACPI Error (psparse-0537): Method klog parse/execution failed [_SB_.PCI0.LPCB.ECDV.ECR1] (Node klog ffff880213050d00), AE_TIME klog klog ADVICE: The ACPI driver encountered an error executing klog some ACPI AML code which originated from the Embedded klog Controller (EC) timing out while waiting for a transaction klog to complete. This could indicate that either EC interrupts klog are being disabled or that the EC has temporarily gone klog offline or locked up, so this could be a kernel error or klog more probably a bug in the EC firmware. See the kernel klog driver drivers/acpi/ec.c. One can increase EC timeouts klog using the kernel parameter ec_delay to specify the timeout klog in milliseconds, the default is 500. klog klog FAILED [HIGH] KlogAcpiEcTimeout: Test 1, HIGH Kernel klog message: [ 10.724416] ACPI Error (psparse-0537): Method klog parse/execution failed [ECRB] (Node ffff880213050e20), klog AE_TIME klog klog ADVICE: The ACPI driver encountered an error executing klog some ACPI AML code which originated from the Embedded klog Controller (EC) timing out while waiting for a transaction klog to complete. This could indicate that either EC interrupts klog are being disabled or that the EC has temporarily gone klog offline or locked up, so this could be a kernel error or klog more probably a bug in the EC firmware. See the kernel klog driver drivers/acpi/ec.c. One can increase EC timeouts klog using the kernel parameter ec_delay to specify the timeout klog in milliseconds, the default is 500. klog klog FAILED [HIGH] KlogAcpiEcTimeout: Test 1, HIGH Kernel klog message: [ 10.724449] ACPI Error (psparse-0537): Method klog parse/execution failed [EC0A] (Node ffff8802130520e0), klog AE_TIME klog klog ADVICE: The ACPI driver encountered an error executing klog some ACPI AML code which originated from the Embedded klog Controller (EC) timing out while waiting for a transaction klog to complete. This could indicate that either EC interrupts klog are being disabled or that the EC has temporarily gone klog offline or locked up, so this could be a kernel error or klog more probably a bug in the EC firmware. See the kernel klog driver drivers/acpi/ec.c. One can increase EC timeouts klog using the kernel parameter ec_delay to specify the timeout klog in milliseconds, the default is 500. klog klog FAILED [HIGH] KlogAcpiTimeout: Test 1, HIGH Kernel message klog : [ 10.724482] ACPI Error (psparse-0537): Method parse klog /execution failed [_SB_.AMW0._WED] (Node ffff8802130573c0) klog , AE_TIME klog klog ADVICE: The ACPI driver encountered an error executing klog some ACPI AML code which originated from a device timing klog out. klog klog FAILED [HIGH] KlogAcpiEcTimeout: Test 1, HIGH Kernel klog message: [ 11.195653] ACPI Error (psparse-0537): Method klog parse/execution failed [ECG5] (Node f702e8a0), AE_TIME klog klog ADVICE: The ACPI driver encountered an error executing klog some ACPI AML code which originated from the Embedded klog Controller (EC) timing out while waiting for a transaction klog to complete. This could indicate that either EC interrupts klog are being disabled or that the EC has temporarily gone klog offline or locked up, so this could be a kernel error or klog more probably a bug in the EC firmware. See the kernel klog driver drivers/acpi/ec.c. One can increase EC timeouts klog using the kernel parameter ec_delay to specify the timeout klog in milliseconds, the default is 500. klog klog FAILED [HIGH] KlogAcpiTimeout: Test 1, HIGH Kernel message klog : [ 11.195680] ACPI Error (psparse-0537): Method parse klog /execution failed [_SB_.AC__._PSR] (Node f702ec90), klog AE_TIME klog klog ADVICE: The ACPI driver encountered an error executing klog some ACPI AML code which originated from a device timing klog out. klog klog FAILED [HIGH] KlogAcpiPackageLimit: Test 1, HIGH Kernel klog message: [ 11.383565] ACPI Error: Method parse/execution klog failed [_SB_.C003.C098._DOD] (Node ffff880137636938), klog AE_AML_PACKAGE_LIMIT (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiEcTimeout: Test 1, HIGH Kernel klog message: [ 11.660551] ACPI Error (psparse-0537): Method klog parse/execution failed [_SB_.PCI0.LPCB.ECDV.ECR2] (Node klog f702e6a8), AE_TIME klog klog ADVICE: The ACPI driver encountered an error executing klog some ACPI AML code which originated from the Embedded klog Controller (EC) timing out while waiting for a transaction klog to complete. This could indicate that either EC interrupts klog are being disabled or that the EC has temporarily gone klog offline or locked up, so this could be a kernel error or klog more probably a bug in the EC firmware. See the kernel klog driver drivers/acpi/ec.c. One can increase EC timeouts klog using the kernel parameter ec_delay to specify the timeout klog in milliseconds, the default is 500. klog klog FAILED [HIGH] KlogAcpiEcTimeout: Test 1, HIGH Kernel klog message: [ 11.660591] ACPI Error (psparse-0537): Method klog parse/execution failed [ECRW] (Node f702e780), AE_TIME klog klog ADVICE: The ACPI driver encountered an error executing klog some ACPI AML code which originated from the Embedded klog Controller (EC) timing out while waiting for a transaction klog to complete. This could indicate that either EC interrupts klog are being disabled or that the EC has temporarily gone klog offline or locked up, so this could be a kernel error or klog more probably a bug in the EC firmware. See the kernel klog driver drivers/acpi/ec.c. One can increase EC timeouts klog using the kernel parameter ec_delay to specify the timeout klog in milliseconds, the default is 500. klog klog FAILED [HIGH] KlogAcpiEcTimeout: Test 1, HIGH Kernel klog message: [ 11.660615] ACPI Error (psparse-0537): Method klog parse/execution failed [ECG1] (Node f702e7b0), AE_TIME klog klog ADVICE: The ACPI driver encountered an error executing klog some ACPI AML code which originated from the Embedded klog Controller (EC) timing out while waiting for a transaction klog to complete. This could indicate that either EC interrupts klog are being disabled or that the EC has temporarily gone klog offline or locked up, so this could be a kernel error or klog more probably a bug in the EC firmware. See the kernel klog driver drivers/acpi/ec.c. One can increase EC timeouts klog using the kernel parameter ec_delay to specify the timeout klog in milliseconds, the default is 500. klog klog FAILED [HIGH] KlogAcpiTimeout: Test 1, HIGH Kernel message klog : [ 11.660638] ACPI Error (psparse-0537): Method parse klog /execution failed [NEVT] (Node f702e9c0), AE_TIME klog klog ADVICE: The ACPI driver encountered an error executing klog some ACPI AML code which originated from a device timing klog out. klog klog FAILED [HIGH] KlogAcpiEcTimeout: Test 1, HIGH Kernel klog message: [ 11.660661] ACPI Error (psparse-0537): Method klog parse/execution failed [_SB_.PCI0.LPCB.ECDV._Q66] (Node klog f702e678), AE_TIME klog klog ADVICE: The ACPI driver encountered an error executing klog some ACPI AML code which originated from the Embedded klog Controller (EC) timing out while waiting for a transaction klog to complete. This could indicate that either EC interrupts klog are being disabled or that the EC has temporarily gone klog offline or locked up, so this could be a kernel error or klog more probably a bug in the EC firmware. See the kernel klog driver drivers/acpi/ec.c. One can increase EC timeouts klog using the kernel parameter ec_delay to specify the timeout klog in milliseconds, the default is 500. klog klog FAILED [HIGH] KlogAcpiPackageLimit: Test 1, HIGH Kernel klog message: [ 11.800514] ACPI Error: Method parse/execution klog failed [_SB_.PCI0.GFX0._DOD] (Node ffff8801376342a8), klog AE_AML_PACKAGE_LIMIT (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiResolveOpBadType: Test 1, HIGH klog Kernel message: [ 11.880473] ACPI Error: Needed [Buffer klog /String/Package], found [Integer] ffff88012125f558 klog (20110413/exresop-590) klog klog ADVICE: An error occurred in resolving operands, required klog a Buffer, String or Package type, got a different type klog instead. klog klog FAILED [HIGH] KlogAcpiResolveOpBadType: Test 1, HIGH klog Kernel message: [ 11.880998] ACPI Error: Needed [Buffer klog /String/Package], found [Integer] ffff88012125f3a8 klog (20110413/exresop-590) klog klog ADVICE: An error occurred in resolving operands, required klog a Buffer, String or Package type, got a different type klog instead. klog klog FAILED [HIGH] KlogAcpiParseExecAmlFailed: Test 1, HIGH klog Kernel message: [ 11.915871] ACPI Error (psparse-0537): klog Method parse/execution failed [_SB_.PCI0.SWFS] (Node klog ffff880226c49320), AE_AML_INFINITE_LOOP klog klog ADVICE: The ACPI driver encountered a parse or execution klog error on some ACPI AML code. This is unexepcted and klog normally indicates that there is a bug in the compiled AML klog code. It could be a programming fault or an AML compiler klog issue. See acpi_ps_parse_aml(). klog klog FAILED [HIGH] KlogAcpiParseExecAmlFailed: Test 1, HIGH klog Kernel message: [ 11.915905] ACPI Error (psparse-0537): klog Method parse/execution failed [_SB_.PCI0.RBYT] (Node klog ffff880226c493c0), AE_AML_INFINITE_LOOP klog klog ADVICE: The ACPI driver encountered a parse or execution klog error on some ACPI AML code. This is unexepcted and klog normally indicates that there is a bug in the compiled AML klog code. It could be a programming fault or an AML compiler klog issue. See acpi_ps_parse_aml(). klog klog FAILED [HIGH] KlogAcpiParseExecAmlFailed: Test 1, HIGH klog Kernel message: [ 11.915932] ACPI Error (psparse-0537): klog Method parse/execution failed [_SB_.PCI0.ASOC.SECV] (Node klog ffff880226c4a0e0), AE_AML_INFINITE_LOOP klog klog ADVICE: The ACPI driver encountered a parse or execution klog error on some ACPI AML code. This is unexepcted and klog normally indicates that there is a bug in the compiled AML klog code. It could be a programming fault or an AML compiler klog issue. See acpi_ps_parse_aml(). klog klog FAILED [HIGH] KlogAcpiParseExecAmlFailed: Test 1, HIGH klog Kernel message: [ 11.915960] ACPI Error (psparse-0537): klog Method parse/execution failed [_SB_.PCI0.ASOC.RVLT] (Node klog ffff880226c49b00), AE_AML_INFINITE_LOOP klog klog ADVICE: The ACPI driver encountered a parse or execution klog error on some ACPI AML code. This is unexepcted and klog normally indicates that there is a bug in the compiled AML klog code. It could be a programming fault or an AML compiler klog issue. See acpi_ps_parse_aml(). klog klog FAILED [HIGH] KlogAcpiEcTimeout: Test 1, HIGH Kernel klog message: [ 12.160904] ACPI Error (psparse-0537): Method klog parse/execution failed [ECG5] (Node f702e810), AE_TIME klog klog ADVICE: The ACPI driver encountered an error executing klog some ACPI AML code which originated from the Embedded klog Controller (EC) timing out while waiting for a transaction klog to complete. This could indicate that either EC interrupts klog are being disabled or that the EC has temporarily gone klog offline or locked up, so this could be a kernel error or klog more probably a bug in the EC firmware. See the kernel klog driver drivers/acpi/ec.c. One can increase EC timeouts klog using the kernel parameter ec_delay to specify the timeout klog in milliseconds, the default is 500. klog klog FAILED [HIGH] KlogAcpiTimeout: Test 1, HIGH Kernel message klog : [ 12.160929] ACPI Error (psparse-0537): Method parse klog /execution failed [_SB_.AC__._PSR] (Node f702ec00), klog AE_TIME klog klog ADVICE: The ACPI driver encountered an error executing klog some ACPI AML code which originated from a device timing klog out. klog klog FAILED [HIGH] KlogAcpiResolveOpBadType: Test 1, HIGH klog Kernel message: [ 12.167076] ACPI Error: Needed [Buffer klog /String/Package], found [Integer] ffff8800b1753048 klog (20090903/exresop-590) klog klog ADVICE: An error occurred in resolving operands, required klog a Buffer, String or Package type, got a different type klog instead. klog klog FAILED [HIGH] KlogAcpiOperandType: Test 1, HIGH Kernel klog message: [ 12.167089] ACPI Error (psparse-0537): Method klog parse/execution failed [_SB_.PCI0.GFX0.DD02.GBQC] (Node klog ffff8800b3c44ca0), AE_AML_OPERAND_TYPE klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiOperandType: Test 1, HIGH Kernel klog message: [ 12.167143] ACPI Error (psparse-0537): Method klog parse/execution failed [_SB_.PCI0.GFX0.DD02._BQC] (Node klog ffff8800b3c44c80), AE_AML_OPERAND_TYPE klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiEvaluationFailed: Test 1, HIGH klog Kernel message: [ 12.167205] ACPI Warning: Evaluating _BQC klog failed (20090903/video-641) klog klog ADVICE: Executing the ACPI Method leaded in an execution klog failure. This needs investigating. klog klog FAILED [HIGH] KlogAcpiResolveOpBadType: Test 1, HIGH klog Kernel message: [ 12.242368] ACPI Error: Needed [Buffer klog /String/Package], found [Integer] ffff88012ea6e6c0 klog (20110413/exresop-590) klog klog ADVICE: An error occurred in resolving operands, required klog a Buffer, String or Package type, got a different type klog instead. klog klog FAILED [HIGH] KlogAcpiOperandType: Test 1, HIGH Kernel klog message: [ 12.242387] ACPI Error: Method parse/execution klog failed [_SB_.PCI0.GFX0.DD02.GBQC] (Node ffff88013113f6b8), klog AE_AML_OPERAND_TYPE (20110413/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiOperandType: Test 1, HIGH Kernel klog message: [ 12.242397] ACPI Error: Method parse/execution klog failed [_SB_.PCI0.GFX0.DD02._BQC] (Node ffff88013113f690), klog AE_AML_OPERAND_TYPE (20110413/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiEvaluationFailed: Test 1, HIGH klog Kernel message: [ 12.242409] ACPI Warning: Evaluating _BQC klog failed (20110413/video-484) klog klog ADVICE: Executing the ACPI Method leaded in an execution klog failure. This needs investigating. klog klog FAILED [HIGH] KlogAcpiResolveOpBadType: Test 1, HIGH klog Kernel message: [ 12.242974] ACPI Error: Needed [Buffer klog /String/Package], found [Integer] ffff88012ea6e5e8 klog (20110413/exresop-590) klog klog ADVICE: An error occurred in resolving operands, required klog a Buffer, String or Package type, got a different type klog instead. klog klog FAILED [HIGH] KlogAcpiOperandType: Test 1, HIGH Kernel klog message: [ 12.242986] ACPI Error: Method parse/execution klog failed [_SB_.PCI0.GFX0.DD02.SBCM] (Node ffff88013113f6e0), klog AE_AML_OPERAND_TYPE (20110413/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiOperandType: Test 1, HIGH Kernel klog message: [ 12.242994] ACPI Error: Method parse/execution klog failed [_SB_.PCI0.GFX0.DD02._BCM] (Node ffff88013113f668), klog AE_AML_OPERAND_TYPE (20110413/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiBcmFailed: Test 1, HIGH Kernel klog message: [ 12.243002] ACPI Error: Evaluating _BCM failed klog (20110413/video-365) klog klog ADVICE: Could not set the brightness level, the ACPI klog control _BCM failed to execute correctly. klog klog FAILED [HIGH] KlogAcpiPackageLimit: Test 1, HIGH Kernel klog message: [ 12.361137] ACPI Error (psparse-0537): Method klog parse/execution failed [_SB_.C003.C09D._DOD] (Node klog ffff88013b630c00), AE_AML_PACKAGE_LIMIT klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiEcTimeout: Test 1, HIGH Kernel klog message: [ 12.390421] ACPI Error (psparse-0537): Method klog parse/execution failed [ECG5] (Node ffff880213050f00), klog AE_TIME klog klog ADVICE: The ACPI driver encountered an error executing klog some ACPI AML code which originated from the Embedded klog Controller (EC) timing out while waiting for a transaction klog to complete. This could indicate that either EC interrupts klog are being disabled or that the EC has temporarily gone klog offline or locked up, so this could be a kernel error or klog more probably a bug in the EC firmware. See the kernel klog driver drivers/acpi/ec.c. One can increase EC timeouts klog using the kernel parameter ec_delay to specify the timeout klog in milliseconds, the default is 500. klog klog FAILED [HIGH] KlogAcpiTimeout: Test 1, HIGH Kernel message klog : [ 12.390446] ACPI Error (psparse-0537): Method parse klog /execution failed [_SB_.AC__._PSR] (Node ffff880213052440) klog , AE_TIME klog klog ADVICE: The ACPI driver encountered an error executing klog some ACPI AML code which originated from a device timing klog out. klog klog FAILED [HIGH] KlogAcpiReturnTypeMismatch: Test 1, HIGH klog Kernel message: [ 12.553637] ACPI Warning: For klog _SB_.PCI0.P0P2.PEGP._DOD: Return type mismatch - found klog Integer, expected Package (20110112/nspredef-1053) klog klog ADVICE: The ACPI Method returned an incorrect type, this klog should be fixed. klog klog FAILED [HIGH] KlogAcpiTimeOutReturnedByHandler: Test 1, klog HIGH Kernel message: [ 12.838979] cfg80211: Ignoring klog regulatory request Set by core since the driver uses its klog own custom regulatory domain ACPI Exception: AE_TIME, klog Returned by Handler for [EmbeddedControl] (20110112 klog /evregion-474) klog klog ADVICE: This is most probably caused by when a read or klog write operation to the EC memory has failed because of a klog timeout waiting for the Embedded Controller to complete klog the transaction. Normally, the kernel waits for 500ms for klog the Embedded Controller status port to indicate that a klog transaction is complete, but in this case it has not and a klog AE_TIME error has been returned. klog klog FAILED [HIGH] KlogAcpiBqcReturnedInvalidLevel: Test 1, klog HIGH Kernel message: [ 12.841008] cfg80211: Ignoring klog regulatory request Set by core since the driver uses its klog own custom regulatory domain ACPI Warning: _BQC returned klog an invalid level (20110112/video-473) klog klog ADVICE: Method _BQC (Brightness Query Current) returned an klog invalid display brightness level. klog klog FAILED [HIGH] KlogAcpiPackageLimit: Test 1, HIGH Kernel klog message: [ 13.024512] ACPI Error: Method parse/execution klog failed [_SB_.PCI0.GFX0._DOD] (Node f7425450), klog AE_AML_PACKAGE_LIMIT (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiTimeout: Test 1, HIGH Kernel message klog : [ 13.396787] ACPI Error: Method parse/execution failed klog [_SB_.ADP1._PSR] (Node ffff88011763ba00), AE_TIME klog (20110112/psparse-536) klog klog ADVICE: The ACPI driver encountered an error executing klog some ACPI AML code which originated from a device timing klog out. klog klog FAILED [HIGH] KlogAcpiFieldExceedsBuffer: Test 1, HIGH klog Kernel message: [ 13.445954] ACPI Error: Field [D128] at klog 1040 exceeds Buffer [NULL] size 160 (bits) (20110112 klog /dsopcode-597) klog klog ADVICE: Failed to initialise an ACPI buffer field, the klog field exceeded the buffer size provided. This is a klog firmware bug. klog klog FAILED [HIGH] KlogAcpiBufferLimit: Test 1, HIGH Kernel klog message: [ 13.445980] ACPI Error: Method parse/execution klog failed [_SB_.WMID.HWMC] (Node f742a8b8), klog AE_AML_BUFFER_LIMIT (20110112/psparse-536) klog klog ADVICE: Generally this error occurs because of access klog outside of a buffer. This occurs for several reasons: a) A klog field does not fit within the current length of a buffer, klog b) an ACPI table load did not fit into a buffer, c) An klog attempt to convert a buffer into an integer failed because klog the buffer was zero sized, d) a SMBus/IPMI klog /GenericSerialBus write failed because the buffer was too klog small, e) An index into a buffer was too long and fell klog outside the buffer. klog klog FAILED [HIGH] KlogAcpiBufferLimit: Test 1, HIGH Kernel klog message: [ 13.446019] ACPI Error: Method parse/execution klog failed [_SB_.WMID.WMAD] (Node f742aac8), klog AE_AML_BUFFER_LIMIT (20110112/psparse-536) klog klog ADVICE: Generally this error occurs because of access klog outside of a buffer. This occurs for several reasons: a) A klog field does not fit within the current length of a buffer, klog b) an ACPI table load did not fit into a buffer, c) An klog attempt to convert a buffer into an integer failed because klog the buffer was zero sized, d) a SMBus/IPMI klog /GenericSerialBus write failed because the buffer was too klog small, e) An index into a buffer was too long and fell klog outside the buffer. klog klog FAILED [HIGH] KlogAcpiNamespaceLookupFailure: Test 1, HIGH klog Kernel message: [ 13.452167] ACPI Error (psargs-0359): klog [_PR_.C001] Namespace lookup failure, AE_NOT_FOUND klog klog ADVICE: The kernel has detected an error trying to execute klog an Method and it cannot find an object. This is indicates klog a bug in the DSDT or SSDT AML code. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 13.452177] ACPI Error (psparse-0537): Method klog parse/execution failed [_SB_.PCI0.LPC0.EC0_.TPAF] (Node klog f702bde0), AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 13.452213] ACPI Error (psparse-0537): Method klog parse/execution failed [_SB_.PCI0.LPC0.EC0_.TBOM] (Node klog f702bdf8), AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 13.452247] ACPI Error (psparse-0537): Method klog parse/execution failed [_SB_.PCI0.LPC0.EC0_._Q1D] (Node klog f702ba98), AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiBqcReturnedInvalidLevel: Test 1, klog HIGH Kernel message: [ 14.013275] ACPI Warning: _BQC klog returned an invalid level (20110112/video-473) klog klog ADVICE: Method _BQC (Brightness Query Current) returned an klog invalid display brightness level. klog klog FAILED [HIGH] KlogAcpiObjectAlreadyExists: Test 1, HIGH klog Kernel message: [ 14.175645] ACPI Error: Method parse klog /execution failed [_SB_.PCI0.OVGA.DD03.GBQC] (Node klog f44247e0), AE_ALREADY_EXISTS (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectAlreadyExists: Test 1, HIGH klog Kernel message: [ 14.175656] ACPI Error: Method parse klog /execution failed [_SB_.PCI0.OVGA.DD03._BQC] (Node klog f44247c8), AE_ALREADY_EXISTS (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiEvaluationFailed: Test 1, HIGH klog Kernel message: [ 14.175667] ACPI Warning: Evaluating _BQC klog failed (20110112/video-484) klog klog ADVICE: Executing the ACPI Method leaded in an execution klog failure. This needs investigating. klog klog FAILED [HIGH] KlogAcpiResolveOpBadType: Test 1, HIGH klog Kernel message: [ 14.885219] ACPI Error: Needed [Buffer klog /String/Package], found [Integer] ffff88013c6b58b8 klog (20110112/exresop-590) klog klog ADVICE: An error occurred in resolving operands, required klog a Buffer, String or Package type, got a different type klog instead. klog klog FAILED [HIGH] KlogAcpiOperandType: Test 1, HIGH Kernel klog message: [ 14.885234] ACPI Error: Method parse/execution klog failed [_SB_.PCI0.GFX0._DSM] (Node ffff88013f849eb0), klog AE_AML_OPERAND_TYPE (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiResolveOpBadType: Test 1, HIGH klog Kernel message: [ 14.885277] ACPI Error: Needed [Buffer klog /String/Package], found [Integer] ffff88013c6b5828 klog (20110112/exresop-590) klog klog ADVICE: An error occurred in resolving operands, required klog a Buffer, String or Package type, got a different type klog instead. klog klog FAILED [HIGH] KlogAcpiOperandType: Test 1, HIGH Kernel klog message: [ 14.885289] ACPI Error: Method parse/execution klog failed [_SB_.PCI0.PEG1.GFX0._DSM] (Node ffff88013f86f668), klog AE_AML_OPERAND_TYPE (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 15.027464] ACPI Error (psparse-0537): Method klog parse/execution failed [_PR_.PPCE] (Node ffff880075137920) klog , AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 15.027505] ACPI Error (psparse-0537): Method klog parse/execution failed [EV4_] (Node ffff880075140660), klog AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 15.027542] ACPI Error (psparse-0537): Method klog parse/execution failed [SMIE] (Node ffff88007513b180), klog AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 15.027579] ACPI Error (psparse-0537): Method klog parse/execution failed [NEVT] (Node ffff88007513b120), klog AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 15.027616] ACPI Error (psparse-0537): Method klog parse/execution failed [_SB_.PCI0.LPCB.ECDV._Q66] (Node klog ffff880075139cc0), AE_NOT_FOUND klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiBqcReturnedInvalidLevel: Test 1, klog HIGH Kernel message: [ 15.287082] ACPI Warning: _BQC klog returned an invalid level (20100428/video-640) klog klog ADVICE: Method _BQC (Brightness Query Current) returned an klog invalid display brightness level. klog klog FAILED [LOW] KlogAcpiDodWithNoDos: Test 1, LOW Kernel klog message: [ 15.395484] [Firmware Bug]: ACPI(PEGP) defines klog _DOD but not _DOS klog klog ADVICE: ACPI Method _DOD (Enumerate all devices attached klog to display adapter) is defined but we should also have klog _DOS (Enable/Disable output switching) defined but it's klog been omitted. klog klog FAILED [HIGH] KlogAcpiPackageLimit: Test 1, HIGH Kernel klog message: [ 15.846531] ACPI Error (psparse-0537): Method klog parse/execution failed [_SB_.PCI0.GFX0._DOD] (Node klog ffff8800b3840360), AE_AML_PACKAGE_LIMIT klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiEcTimeout: Test 1, HIGH Kernel klog message: [ 16.336080] ACPI Error (psparse-0537): Method klog parse/execution failed [_SB_.PCI0.LPCB.EC0_._Q33] (Node klog f70244b0), AE_TIME klog klog ADVICE: The ACPI driver encountered an error executing klog some ACPI AML code which originated from the Embedded klog Controller (EC) timing out while waiting for a transaction klog to complete. This could indicate that either EC interrupts klog are being disabled or that the EC has temporarily gone klog offline or locked up, so this could be a kernel error or klog more probably a bug in the EC firmware. See the kernel klog driver drivers/acpi/ec.c. One can increase EC timeouts klog using the kernel parameter ec_delay to specify the timeout klog in milliseconds, the default is 500. klog klog FAILED [HIGH] KlogAcpiParseExecAmlFailed: Test 1, HIGH klog Kernel message: [ 16.592600] ACPI Error (psparse-0537): klog Method parse/execution failed [_SB_.PCI0.ASOC.SEFA] (Node klog ffff880226c4a120), AE_AML_INFINITE_LOOP klog klog ADVICE: The ACPI driver encountered a parse or execution klog error on some ACPI AML code. This is unexepcted and klog normally indicates that there is a bug in the compiled AML klog code. It could be a programming fault or an AML compiler klog issue. See acpi_ps_parse_aml(). klog klog FAILED [HIGH] KlogAcpiParseExecAmlFailed: Test 1, HIGH klog Kernel message: [ 16.592628] ACPI Error (psparse-0537): klog Method parse/execution failed [_SB_.PCI0.ASOC.RFAN] (Node klog ffff880226c49bc0), AE_AML_INFINITE_LOOP klog klog ADVICE: The ACPI driver encountered a parse or execution klog error on some ACPI AML code. This is unexepcted and klog normally indicates that there is a bug in the compiled AML klog code. It could be a programming fault or an AML compiler klog issue. See acpi_ps_parse_aml(). klog klog FAILED [HIGH] KlogAcpiReturnPackageZeroElements: Test 1, klog HIGH Kernel message: [ 16.719798] ACPI Warning for klog _SB_.PCI0.VID2._DOD: Return Package has no elements klog (empty) (20090903/nspredef-433) klog klog ADVICE: ACPI AML interpreter executed a Method that klog returned a package with no elements inside it. This is klog most probably a bug in the Method and needs to be fixed. klog klog FAILED [HIGH] KlogAcpiNamespaceLookupFailure: Test 1, HIGH klog Kernel message: [ 16.942589] ACPI Error (dswload-0802): klog [_T_0] Namespace lookup failure, AE_ALREADY_EXISTS klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectAlreadyExists: Test 1, HIGH klog Kernel message: [ 16.942606] ACPI Error (psparse-0537): klog Method parse/execution failed [_SB_.PCI0.OVGA.DD03.GBQC] klog (Node ffff8800b7e3c6e0), AE_ALREADY_EXISTS klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectAlreadyExists: Test 1, HIGH klog Kernel message: [ 16.942654] ACPI Error (psparse-0537): klog Method parse/execution failed [_SB_.PCI0.OVGA.DD03._BQC] klog (Node ffff8800b7e3c6c0), AE_ALREADY_EXISTS klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiResolveOpBadType: Test 1, HIGH klog Kernel message: [ 17.125601] ACPI Error: Needed [Buffer klog /String/Package], found [Integer] eee27810 (20110112 klog /exresop-590) klog klog ADVICE: An error occurred in resolving operands, required klog a Buffer, String or Package type, got a different type klog instead. klog klog FAILED [HIGH] KlogAcpiOperandType: Test 1, HIGH Kernel klog message: [ 17.125618] ACPI Error: Method parse/execution klog failed [_SB_.PCI0.GFX0._DSM] (Node f7431fa8), klog AE_AML_OPERAND_TYPE (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiResolveOpBadType: Test 1, HIGH klog Kernel message: [ 17.125669] ACPI Error: Needed [Buffer klog /String/Package], found [Integer] eee27780 (20110112 klog /exresop-590) klog klog ADVICE: An error occurred in resolving operands, required klog a Buffer, String or Package type, got a different type klog instead. klog klog FAILED [HIGH] KlogAcpiOperandType: Test 1, HIGH Kernel klog message: [ 17.125690] ACPI Error: Method parse/execution klog failed [_SB_.PCI0.PEG1.GFX0._DSM] (Node f7445c78), klog AE_AML_OPERAND_TYPE (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiBufferLimit: Test 1, HIGH Kernel klog message: [ 17.802564] ACPI Error: Method parse/execution klog failed [_SB_.WMID.HWMC] (Node ffff8801ffc5c078), klog AE_AML_BUFFER_LIMIT (20110112/psparse-536) klog klog ADVICE: Generally this error occurs because of access klog outside of a buffer. This occurs for several reasons: a) A klog field does not fit within the current length of a buffer, klog b) an ACPI table load did not fit into a buffer, c) An klog attempt to convert a buffer into an integer failed because klog the buffer was zero sized, d) a SMBus/IPMI klog /GenericSerialBus write failed because the buffer was too klog small, e) An index into a buffer was too long and fell klog outside the buffer. klog klog FAILED [HIGH] KlogAcpiBufferLimit: Test 1, HIGH Kernel klog message: [ 17.802574] ACPI Error: Method parse/execution klog failed [_SB_.WMID.WMAD] (Node ffff8801ffc5c258), klog AE_AML_BUFFER_LIMIT (20110112/psparse-536) klog klog ADVICE: Generally this error occurs because of access klog outside of a buffer. This occurs for several reasons: a) A klog field does not fit within the current length of a buffer, klog b) an ACPI table load did not fit into a buffer, c) An klog attempt to convert a buffer into an integer failed because klog the buffer was zero sized, d) a SMBus/IPMI klog /GenericSerialBus write failed because the buffer was too klog small, e) An index into a buffer was too long and fell klog outside the buffer. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 17.847665] ACPI Error: Method parse/execution klog failed [_SB_.PCI0.PEG0.PEGP.DD02._BCL] (Node f444ebe8), klog AE_NOT_FOUND (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiBufferLimit: Test 1, HIGH Kernel klog message: [ 17.985672] ACPI Error (psparse-0537): Method klog parse/execution failed [_SB_.PCI0.IBCM] (Node klog ffff8800b3832600), AE_AML_BUFFER_LIMIT klog klog ADVICE: Generally this error occurs because of access klog outside of a buffer. This occurs for several reasons: a) A klog field does not fit within the current length of a buffer, klog b) an ACPI table load did not fit into a buffer, c) An klog attempt to convert a buffer into an integer failed because klog the buffer was zero sized, d) a SMBus/IPMI klog /GenericSerialBus write failed because the buffer was too klog small, e) An index into a buffer was too long and fell klog outside the buffer. klog klog FAILED [HIGH] KlogAcpiBufferLimit: Test 1, HIGH Kernel klog message: [ 17.985723] ACPI Error (psparse-0537): Method klog parse/execution failed [_SB_.PCI0.GFX0.DD03._BCM] (Node klog ffff8800b382b840), AE_AML_BUFFER_LIMIT klog klog ADVICE: Generally this error occurs because of access klog outside of a buffer. This occurs for several reasons: a) A klog field does not fit within the current length of a buffer, klog b) an ACPI table load did not fit into a buffer, c) An klog attempt to convert a buffer into an integer failed because klog the buffer was zero sized, d) a SMBus/IPMI klog /GenericSerialBus write failed because the buffer was too klog small, e) An index into a buffer was too long and fell klog outside the buffer. klog klog FAILED [HIGH] KlogAcpiResolveOpBadType: Test 1, HIGH klog Kernel message: [ 18.054842] ACPI Error: Needed [Buffer klog /String/Package], found [Integer] ffff880133a777e0 klog (20110112/exresop-590) klog klog ADVICE: An error occurred in resolving operands, required klog a Buffer, String or Package type, got a different type klog instead. klog klog FAILED [HIGH] KlogAcpiOperandType: Test 1, HIGH Kernel klog message: [ 18.054860] ACPI Error: Method parse/execution klog failed [_SB_.PCI0.VGA_._DSM] (Node ffff880137659190), klog AE_AML_OPERAND_TYPE (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiResolveOpBadType: Test 1, HIGH klog Kernel message: [ 18.054909] ACPI Error: Needed [Buffer klog /String/Package], found [Integer] ffff880133a776c0 klog (20110112/exresop-590) klog klog ADVICE: An error occurred in resolving operands, required klog a Buffer, String or Package type, got a different type klog instead. klog klog FAILED [HIGH] KlogAcpiOperandType: Test 1, HIGH Kernel klog message: [ 18.054932] ACPI Error: Method parse/execution klog failed [_SB_.PCI0.P0P1.VGA_._DSM] (Node ffff88013765d230), klog AE_AML_OPERAND_TYPE (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectAlreadyExists: Test 1, HIGH klog Kernel message: [ 18.353938] ACPI Error: Method parse klog /execution failed [_SB_.PCI0.PEGP.VGA_.LCD_.GBQC] (Node klog ffff88013762f708), AE_ALREADY_EXISTS (20110112 klog /psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectAlreadyExists: Test 1, HIGH klog Kernel message: [ 18.353954] ACPI Error: Method parse klog /execution failed [_SB_.PCI0.PEGP.VGA_.LCD_._BQC] (Node klog ffff88013762f6e0), AE_ALREADY_EXISTS (20110112 klog /psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectAlreadyExists: Test 1, HIGH klog Kernel message: [ 18.367485] ACPI Error: Method parse klog /execution failed [_SB_.PCI0.PEGP.VGA_.LCD1.GBQC] (Node klog ffff88013762f988), AE_ALREADY_EXISTS (20110112 klog /psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiObjectAlreadyExists: Test 1, HIGH klog Kernel message: [ 18.367501] ACPI Error: Method parse klog /execution failed [_SB_.PCI0.PEGP.VGA_.LCD1._BQC] (Node klog ffff88013762f960), AE_ALREADY_EXISTS (20110112 klog /psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiPackageLimit: Test 1, HIGH Kernel klog message: [ 18.720899] ACPI Error (psparse-0537): Method klog parse/execution failed [_SB_.PCI0.GFX0._DOD] (Node klog f70206d8), AE_AML_PACKAGE_LIMIT klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiEcTimeout: Test 1, HIGH Kernel klog message: [ 19.086127] ACPI Error (psparse-0537): Method klog parse/execution failed [_SB_.PCI0.LPCB.ECDV.ECR1] (Node klog f702e6a8), AE_TIME klog klog ADVICE: The ACPI driver encountered an error executing klog some ACPI AML code which originated from the Embedded klog Controller (EC) timing out while waiting for a transaction klog to complete. This could indicate that either EC interrupts klog are being disabled or that the EC has temporarily gone klog offline or locked up, so this could be a kernel error or klog more probably a bug in the EC firmware. See the kernel klog driver drivers/acpi/ec.c. One can increase EC timeouts klog using the kernel parameter ec_delay to specify the timeout klog in milliseconds, the default is 500. klog klog FAILED [HIGH] KlogAcpiEcTimeout: Test 1, HIGH Kernel klog message: [ 19.086176] ACPI Error (psparse-0537): Method klog parse/execution failed [ECRB] (Node f702e780), AE_TIME klog klog ADVICE: The ACPI driver encountered an error executing klog some ACPI AML code which originated from the Embedded klog Controller (EC) timing out while waiting for a transaction klog to complete. This could indicate that either EC interrupts klog are being disabled or that the EC has temporarily gone klog offline or locked up, so this could be a kernel error or klog more probably a bug in the EC firmware. See the kernel klog driver drivers/acpi/ec.c. One can increase EC timeouts klog using the kernel parameter ec_delay to specify the timeout klog in milliseconds, the default is 500. klog klog FAILED [HIGH] KlogAcpiEcTimeout: Test 1, HIGH Kernel klog message: [ 19.086202] ACPI Error (psparse-0537): Method klog parse/execution failed [EC0A] (Node f702e990), AE_TIME klog klog ADVICE: The ACPI driver encountered an error executing klog some ACPI AML code which originated from the Embedded klog Controller (EC) timing out while waiting for a transaction klog to complete. This could indicate that either EC interrupts klog are being disabled or that the EC has temporarily gone klog offline or locked up, so this could be a kernel error or klog more probably a bug in the EC firmware. See the kernel klog driver drivers/acpi/ec.c. One can increase EC timeouts klog using the kernel parameter ec_delay to specify the timeout klog in milliseconds, the default is 500. klog klog FAILED [HIGH] KlogAcpiTimeout: Test 1, HIGH Kernel message klog : [ 19.086228] ACPI Error (psparse-0537): Method parse klog /execution failed [_SB_.AMW0._WED] (Node f7019fd8), klog AE_TIME klog klog ADVICE: The ACPI driver encountered an error executing klog some ACPI AML code which originated from a device timing klog out. klog klog FAILED [HIGH] KlogAcpiPackageLimit: Test 1, HIGH Kernel klog message: [ 19.408610] ACPI Error: Method parse/execution klog failed [_SB_.PCI0.GFX0._DOD] (Node f74256a8), klog AE_AML_PACKAGE_LIMIT (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiResolveOpBadType: Test 1, HIGH klog Kernel message: [ 20.135790] ACPI Error: Needed [Buffer klog /String/Package], found [Integer] ffff88023b491318 klog (20110316/exresop-590) klog klog ADVICE: An error occurred in resolving operands, required klog a Buffer, String or Package type, got a different type klog instead. klog klog FAILED [HIGH] KlogAcpiOperandType: Test 1, HIGH Kernel klog message: [ 20.135804] ACPI Error: Method parse/execution klog failed [_SB_.PCI0.GFX0._DSM] (Node ffff88023ec61eb0), klog AE_AML_OPERAND_TYPE (20110316/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiResolveOpBadType: Test 1, HIGH klog Kernel message: [ 20.135849] ACPI Error: Needed [Buffer klog /String/Package], found [Integer] ffff88023b491708 klog (20110316/exresop-590) klog klog ADVICE: An error occurred in resolving operands, required klog a Buffer, String or Package type, got a different type klog instead. klog klog FAILED [HIGH] KlogAcpiOperandType: Test 1, HIGH Kernel klog message: [ 20.135864] ACPI Error: Method parse/execution klog failed [_SB_.PCI0.PEG1.GFX0._DSM] (Node ffff88023ec77668), klog AE_AML_OPERAND_TYPE (20110316/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiResolveOpBadType: Test 1, HIGH klog Kernel message: [ 20.149010] ACPI Error: Needed [Integer klog /String/Buffer], found [Package] f741ed48 (20100428 klog /exresop-422) klog klog ADVICE: An error occurred in resolving operands, required klog an Integer, String or Buffer type, got a different type klog instead. klog klog FAILED [HIGH] KlogAcpiOperandType: Test 1, HIGH Kernel klog message: [ 20.149032] ACPI Error (psparse-0537): Method klog parse/execution failed [_SB_.PCI0.P0P2.PEGP.LCD_._BQC] klog (Node f741f978), AE_AML_OPERAND_TYPE klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiEvaluationFailed: Test 1, HIGH klog Kernel message: [ 20.149063] ACPI Warning: Evaluating _BQC klog failed (20100428/video-651) klog klog ADVICE: Executing the ACPI Method leaded in an execution klog failure. This needs investigating. klog klog FAILED [HIGH] KlogAcpiBcqInsteadOfBqc: Test 1, HIGH Kernel klog message: [ 20.298134] [Firmware Bug]: _BCQ is used instead klog of _BQC klog klog ADVICE: ACPI Method _BCQ was defined (typo) instead of klog _BQC - this should be fixed.however the kernel has klog detected this and is working around this typo. klog klog FAILED [HIGH] KlogAcpiBqcReturnedInvalidLevel: Test 1, klog HIGH Kernel message: [ 20.342464] ACPI Warning: _BQC klog returned an invalid level (20110413/video-473) klog klog ADVICE: Method _BQC (Brightness Query Current) returned an klog invalid display brightness level. klog klog FAILED [LOW] KlogDuplicateACPIVideoBus: Test 1, LOW Kernel klog message: [ 20.435766] [Firmware Bug]: Duplicate ACPI video klog bus devices for the same VGA controller, please try module klog parameter "video.allow_duplicates=1"if the current driver klog doesn't work. klog klog ADVICE: The ACPI video driver has found a duplicate ACPI klog video bus device for the same VGA controller. If the klog current driver does not work, one can try to work around klog this using the video.allow_duplicates=1 kernel parameter. klog klog FAILED [HIGH] KlogAcpiReturnTypeMismatch: Test 1, HIGH klog Kernel message: [ 20.634744] ACPI Warning for klog _SB_.PCI0.GFX0.DD02._BQC: Return type mismatch - found klog Reference, expected Integer (20100428/nspredef-1053) klog klog ADVICE: The ACPI Method returned an incorrect type, this klog should be fixed. klog klog FAILED [HIGH] KlogAcpiPackageLimit: Test 1, HIGH Kernel klog message: [ 21.460488] ACPI Error: Method parse/execution klog failed [_SB_.PCI0.GFX0._DOD] (Node ffff880133632c80), klog AE_AML_PACKAGE_LIMIT (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiResolveOpBadType: Test 1, HIGH klog Kernel message: [ 21.562484] ACPI Error: Needed [Buffer klog /String/Package], found [Integer] f7260370 (20090903 klog /exresop-590) klog klog ADVICE: An error occurred in resolving operands, required klog a Buffer, String or Package type, got a different type klog instead. klog klog FAILED [HIGH] KlogAcpiOperandType: Test 1, HIGH Kernel klog message: [ 21.562496] ACPI Error (psparse-0537): Method klog parse/execution failed [_SB_.PCI0.GFX0.DD02.GBQC] (Node klog f7017a68), AE_AML_OPERAND_TYPE klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiOperandType: Test 1, HIGH Kernel klog message: [ 21.562544] ACPI Error (psparse-0537): Method klog parse/execution failed [_SB_.PCI0.GFX0.DD02._BQC] (Node klog f7017a50), AE_AML_OPERAND_TYPE klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiEcTimeout: Test 1, HIGH Kernel klog message: [ 22.154348] ACPI Error (psparse-0537): Method klog parse/execution failed [_SB_.PCI0.LPCB.ECDV.ECR1] (Node klog f74276a8), AE_TIME klog klog ADVICE: The ACPI driver encountered an error executing klog some ACPI AML code which originated from the Embedded klog Controller (EC) timing out while waiting for a transaction klog to complete. This could indicate that either EC interrupts klog are being disabled or that the EC has temporarily gone klog offline or locked up, so this could be a kernel error or klog more probably a bug in the EC firmware. See the kernel klog driver drivers/acpi/ec.c. One can increase EC timeouts klog using the kernel parameter ec_delay to specify the timeout klog in milliseconds, the default is 500. klog klog FAILED [HIGH] KlogAcpiEcTimeout: Test 1, HIGH Kernel klog message: [ 22.154443] ACPI Error (psparse-0537): Method klog parse/execution failed [ECRB] (Node f7427780), AE_TIME klog klog ADVICE: The ACPI driver encountered an error executing klog some ACPI AML code which originated from the Embedded klog Controller (EC) timing out while waiting for a transaction klog to complete. This could indicate that either EC interrupts klog are being disabled or that the EC has temporarily gone klog offline or locked up, so this could be a kernel error or klog more probably a bug in the EC firmware. See the kernel klog driver drivers/acpi/ec.c. One can increase EC timeouts klog using the kernel parameter ec_delay to specify the timeout klog in milliseconds, the default is 500. klog klog FAILED [HIGH] KlogAcpiEcTimeout: Test 1, HIGH Kernel klog message: [ 22.154516] ACPI Error (psparse-0537): Method klog parse/execution failed [ECG5] (Node f7427828), AE_TIME klog klog ADVICE: The ACPI driver encountered an error executing klog some ACPI AML code which originated from the Embedded klog Controller (EC) timing out while waiting for a transaction klog to complete. This could indicate that either EC interrupts klog are being disabled or that the EC has temporarily gone klog offline or locked up, so this could be a kernel error or klog more probably a bug in the EC firmware. See the kernel klog driver drivers/acpi/ec.c. One can increase EC timeouts klog using the kernel parameter ec_delay to specify the timeout klog in milliseconds, the default is 500. klog klog FAILED [HIGH] KlogAcpiTimeout: Test 1, HIGH Kernel message klog : [ 22.154587] ACPI Error (psparse-0537): Method parse klog /execution failed [_SB_.AC__._PSR] (Node f7427c18), klog AE_TIME klog klog ADVICE: The ACPI driver encountered an error executing klog some ACPI AML code which originated from a device timing klog out. klog klog FAILED [LOW] KlogAcpiDodWithNoDos: Test 1, LOW Kernel klog message: [ 24.824888] [Firmware Bug]: ACPI(IGPU) defines klog _DOD but not _DOS klog klog ADVICE: ACPI Method _DOD (Enumerate all devices attached klog to display adapter) is defined but we should also have klog _DOS (Enable/Disable output switching) defined but it's klog been omitted. klog klog FAILED [HIGH] KlogAcpiResolveOpBadType: Test 1, HIGH klog Kernel message: [ 25.859931] ACPI Error: Needed [Buffer klog /String/Package], found [Integer] ffff880139af5240 klog (20090903/exresop-590) klog klog ADVICE: An error occurred in resolving operands, required klog a Buffer, String or Package type, got a different type klog instead. klog klog FAILED [HIGH] KlogAcpiOperandType: Test 1, HIGH Kernel klog message: [ 25.859949] ACPI Error (psparse-0537): Method klog parse/execution failed [_SB_.PCI0.VGA_._DSM] (Node klog ffff88013ba4c0e0), AE_AML_OPERAND_TYPE klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiOperandType: Test 1, HIGH Kernel klog message: [ 25.860025] ACPI Error (psparse-0537): Method klog parse/execution failed [_SB_.PCI0.P0P1.VGA_._DSM] (Node klog ffff88013ba4da80), AE_AML_OPERAND_TYPE klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiTimeOutReturnedByHandler: Test 1, klog HIGH Kernel message: [ 26.653079] ACPI Exception: AE_TIME, klog Returned by Handler for [EmbeddedControl] (20100428 klog /evregion-474) klog klog ADVICE: This is most probably caused by when a read or klog write operation to the EC memory has failed because of a klog timeout waiting for the Embedded Controller to complete klog the transaction. Normally, the kernel waits for 500ms for klog the Embedded Controller status port to indicate that a klog transaction is complete, but in this case it has not and a klog AE_TIME error has been returned. klog klog FAILED [HIGH] KlogAcpiEcTimeout: Test 1, HIGH Kernel klog message: [ 26.653190] ACPI Error (psparse-0537): Method klog parse/execution failed [_SB_.PCI0.LPCB.ECDV.ECR1] (Node klog ffff880226c54ce0), AE_TIME klog klog ADVICE: The ACPI driver encountered an error executing klog some ACPI AML code which originated from the Embedded klog Controller (EC) timing out while waiting for a transaction klog to complete. This could indicate that either EC interrupts klog are being disabled or that the EC has temporarily gone klog offline or locked up, so this could be a kernel error or klog more probably a bug in the EC firmware. See the kernel klog driver drivers/acpi/ec.c. One can increase EC timeouts klog using the kernel parameter ec_delay to specify the timeout klog in milliseconds, the default is 500. klog klog FAILED [HIGH] KlogAcpiEcTimeout: Test 1, HIGH Kernel klog message: [ 26.653252] ACPI Error (psparse-0537): Method klog parse/execution failed [ECRB] (Node ffff880226c54e00), klog AE_TIME klog klog ADVICE: The ACPI driver encountered an error executing klog some ACPI AML code which originated from the Embedded klog Controller (EC) timing out while waiting for a transaction klog to complete. This could indicate that either EC interrupts klog are being disabled or that the EC has temporarily gone klog offline or locked up, so this could be a kernel error or klog more probably a bug in the EC firmware. See the kernel klog driver drivers/acpi/ec.c. One can increase EC timeouts klog using the kernel parameter ec_delay to specify the timeout klog in milliseconds, the default is 500. klog klog FAILED [HIGH] KlogAcpiEcTimeout: Test 1, HIGH Kernel klog message: [ 26.653283] ACPI Error (psparse-0537): Method klog parse/execution failed [ECG5] (Node ffff880226c54ee0), klog AE_TIME klog klog ADVICE: The ACPI driver encountered an error executing klog some ACPI AML code which originated from the Embedded klog Controller (EC) timing out while waiting for a transaction klog to complete. This could indicate that either EC interrupts klog are being disabled or that the EC has temporarily gone klog offline or locked up, so this could be a kernel error or klog more probably a bug in the EC firmware. See the kernel klog driver drivers/acpi/ec.c. One can increase EC timeouts klog using the kernel parameter ec_delay to specify the timeout klog in milliseconds, the default is 500. klog klog FAILED [HIGH] KlogAcpiTimeout: Test 1, HIGH Kernel message klog : [ 26.653307] ACPI Error (psparse-0537): Method parse klog /execution failed [_SB_.AC__._PSR] (Node ffff880226c56420) klog , AE_TIME klog klog ADVICE: The ACPI driver encountered an error executing klog some ACPI AML code which originated from a device timing klog out. klog klog FAILED [HIGH] KlogAcpiBqcReturnedInvalidLevel: Test 1, klog HIGH Kernel message: [ 26.874386] ACPI Warning: _BQC klog returned an invalid level (20090903/video-631) klog klog ADVICE: Method _BQC (Brightness Query Current) returned an klog invalid display brightness level. klog klog FAILED [HIGH] KlogAcpiReturnTypeMismatch: Test 1, HIGH klog Kernel message: [ 29.470614] ACPI Warning for klog _SB_.PCI0.GFX0.DD03._BQC: Return type mismatch - found klog Reference, expected Integer (20100428/nspredef-1053) klog klog ADVICE: The ACPI Method returned an incorrect type, this klog should be fixed. klog klog FAILED [HIGH] KlogAcpiEcTimeout: Test 1, HIGH Kernel klog message: [ 30.140339] ACPI Error (psparse-0537): Method klog parse/execution failed [_SB_.PCI0.LPCB.ECDV.ECR1] (Node klog ffff880217050ce0), AE_TIME klog klog ADVICE: The ACPI driver encountered an error executing klog some ACPI AML code which originated from the Embedded klog Controller (EC) timing out while waiting for a transaction klog to complete. This could indicate that either EC interrupts klog are being disabled or that the EC has temporarily gone klog offline or locked up, so this could be a kernel error or klog more probably a bug in the EC firmware. See the kernel klog driver drivers/acpi/ec.c. One can increase EC timeouts klog using the kernel parameter ec_delay to specify the timeout klog in milliseconds, the default is 500. klog klog FAILED [HIGH] KlogAcpiEcTimeout: Test 1, HIGH Kernel klog message: [ 30.140421] ACPI Error (psparse-0537): Method klog parse/execution failed [ECRB] (Node ffff880217050e00), klog AE_TIME klog klog ADVICE: The ACPI driver encountered an error executing klog some ACPI AML code which originated from the Embedded klog Controller (EC) timing out while waiting for a transaction klog to complete. This could indicate that either EC interrupts klog are being disabled or that the EC has temporarily gone klog offline or locked up, so this could be a kernel error or klog more probably a bug in the EC firmware. See the kernel klog driver drivers/acpi/ec.c. One can increase EC timeouts klog using the kernel parameter ec_delay to specify the timeout klog in milliseconds, the default is 500. klog klog FAILED [HIGH] KlogAcpiEcTimeout: Test 1, HIGH Kernel klog message: [ 30.140448] ACPI Error (psparse-0537): Method klog parse/execution failed [ECG5] (Node ffff880217050ee0), klog AE_TIME klog klog ADVICE: The ACPI driver encountered an error executing klog some ACPI AML code which originated from the Embedded klog Controller (EC) timing out while waiting for a transaction klog to complete. This could indicate that either EC interrupts klog are being disabled or that the EC has temporarily gone klog offline or locked up, so this could be a kernel error or klog more probably a bug in the EC firmware. See the kernel klog driver drivers/acpi/ec.c. One can increase EC timeouts klog using the kernel parameter ec_delay to specify the timeout klog in milliseconds, the default is 500. klog klog FAILED [HIGH] KlogAcpiTimeout: Test 1, HIGH Kernel message klog : [ 30.140475] ACPI Error (psparse-0537): Method parse klog /execution failed [_SB_.AC__._PSR] (Node ffff880217052420) klog , AE_TIME klog klog ADVICE: The ACPI driver encountered an error executing klog some ACPI AML code which originated from a device timing klog out. klog klog FAILED [HIGH] KlogAcpiNamespaceLookupFailure: Test 1, HIGH klog Kernel message: [ 42.490181] ACPI Error: [_SB_.VDRV] klog Namespace lookup failure, AE_NOT_FOUND (20110112 klog /psargs-359) klog klog ADVICE: The kernel has detected an error trying to execute klog an Method and it cannot find an object. This is indicates klog a bug in the DSDT or SSDT AML code. klog klog FAILED [HIGH] KlogAcpiObjectNotFound: Test 1, HIGH Kernel klog message: [ 42.490202] ACPI Error: Method parse/execution klog failed [_SB_.PCI0.LPC0.H_EC._Q51] (Node ffff88003d9b1e60), klog AE_NOT_FOUND (20110112/psparse-536) klog klog ADVICE: This is a bug picked up by the kernel, but as yet, klog the firmware test suite has no diagnostic advice for this klog particular problem. klog klog FAILED [HIGH] KlogAcpiReturnTypeMismatch: Test 1, HIGH klog Kernel message: [ 44.661543] ACPI Warning for klog _SB_.PCI0.GFX0.DD01._BCL: Return type mismatch - found klog Integer, expected Package (20090903/nspredef-1006) klog klog ADVICE: The ACPI Method returned an incorrect type, this klog should be fixed. klog klog FAILED [HIGH] KlogAcpiBadAmlCode: Test 1, HIGH Kernel klog message: [ 50.737630] ACPI Warning for klog _SB_.PCI0.AGP_.VID_.MXMI: Excess arguments - needs 1, klog found 2 (20090903/nspredef-303) klog klog ADVICE: ACPI AML intepreter has found some non-conforming klog AML code. This should be investigated and fixed. klog klog FAILED [HIGH] KlogAcpiBadAmlCode: Test 1, HIGH Kernel klog message: [ 50.737686] ACPI Warning for klog _SB_.PCI0.AGP_.VID_.MXMS: Excess arguments - needs 1, klog found 2 (20090903/nspredef-303) klog klog ADVICE: ACPI AML intepreter has found some non-conforming klog AML code. This should be investigated and fixed. klog klog Found 1589 unique errors in kernel log. klog klog ========================================================== klog 0 passed, 1589 failed, 0 warning, 0 aborted, 0 skipped, 0 klog info only. klog ========================================================== fwts-test/klog-0001/klog-0002.log000066400000000000000000007647701231470457100163770ustar00rootroot00000000000000summary summary 0 passed, 1589 failed, 0 warning, 0 aborted, 0 skipped, 0 summary info only. summary summary Test Failure Summary summary ========================================================== summary summary Critical failures: 23 summary klog: CRITICAL Kernel message: [ 0.000000] ACPI Error: A valid RSDP was not found (20090903/tbxfroot-219) summary klog: CRITICAL Kernel message: [ 0.000000] ACPI Error: A valid RSDP was not found (20100428/tbxfroot-219) summary klog: CRITICAL Kernel message: [ 0.000000] ACPI Error: A valid RSDP was not found (20110112/tbxfroot-219) summary klog: CRITICAL Kernel message: [ 0.000000] WARNING: BIOS bug: CPU MTRRs don't cover all of memory, losing 1408MB of RAM. summary klog: CRITICAL Kernel message: [ 0.000000] WARNING: BIOS bug: CPU MTRRs don't cover all of memory, losing 4MB of RAM. summary klog: CRITICAL Kernel message: [ 0.025446] ACPI Warning: Detected an unsupported executable opcode at module-level: [0x007B] at table offset 0x00BE (20110112/psloop-526) summary klog: CRITICAL Kernel message: [ 0.025463] ACPI Warning: Detected an unsupported executable opcode at module-level: [0x007B] at table offset 0x00C3 (20110112/psloop-526) summary klog: CRITICAL Kernel message: [ 0.042222] ACPI Warning: Detected an unsupported executable opcode at module-level: [0x0070] at table offset 0x2366 (20100121/psloop-526) summary klog: CRITICAL Kernel message: [ 0.042240] ACPI Warning: Detected an unsupported executable opcode at module-level: [0x0070] at table offset 0x006C (20090903/psloop-522) summary klog: CRITICAL Kernel message: [ 0.042253] ACPI Warning: Detected an unsupported executable opcode at module-level: [0x0070] at table offset 0x006F (20090903/psloop-522) summary klog: CRITICAL Kernel message: [ 0.042265] ACPI Warning: Detected an unsupported executable opcode at module-level: [0x0070] at table offset 0x0070 (20090903/psloop-522) summary klog: CRITICAL Kernel message: [ 0.042279] ACPI Warning: Detected an unsupported executable opcode at module-level: [0x0070] at table offset 0x0077 (20090903/psloop-522) summary klog: CRITICAL Kernel message: [ 0.042291] ACPI Warning: Detected an unsupported executable opcode at module-level: [0x0070] at table offset 0x007C (20090903/psloop-522) summary klog: CRITICAL Kernel message: [ 0.042302] ACPI Warning: Detected an unsupported executable opcode at module-level: [0x007B] at table offset 0x007D (20090903/psloop-522) summary klog: CRITICAL Kernel message: [ 0.042311] ACPI Warning: Detected an unsupported executable opcode at module-level: [0x007B] at table offset 0x007F (20090903/psloop-522) summary klog: CRITICAL Kernel message: [ 0.042322] ACPI Warning: Detected an unsupported executable opcode at module-level: [0x007B] at table offset 0x0080 (20090903/psloop-522) summary klog: CRITICAL Kernel message: [ 0.044066] ACPI Warning: Detected an unsupported executable opcode at module-level: [0x0070] at table offset 0x678F (20100428/psloop-526) summary klog: CRITICAL Kernel message: [ 0.296054] [Firmware Bug]: Invalid critical threshold (0) summary klog: CRITICAL Kernel message: [ 0.788418] ACPI Error (psparse-0537): Method parse/execution failed [_SB_._OSC] (Node ffff88030a048b40), AE_AML_BUFFER_LIMIT summary klog: CRITICAL Kernel message: [ 1.125427] [Firmware Bug]: No valid trip found summary klog: CRITICAL Kernel message: [ 1.336148] ACPI Error (psparse-0537): Method parse/execution failed [_SB_._OSC] (Node ffff88012b647200), AE_AML_BUFFER_LIMIT summary klog: CRITICAL Kernel message: [ 1.371180] ACPI Error (psparse-0537): Method parse/execution failed [_SB_._OSC] (Node ffff88044b85e4a0), AE_AML_BUFFER_LIMIT summary klog: CRITICAL Kernel message: [ 2.949716] ACPI Error: Method parse/execution failed [_SB_._OSC] (Node ffff880297016ca8), AE_AML_BUFFER_LIMIT (20110112/psparse-536) summary summary High failures: 1221 summary klog: HIGH Kernel message: [ 0.000000] ACPI: BIOS bug: multiple APIC/MADT found, using 0 summary klog: HIGH Kernel message: [ 0.000000] ACPI Error: 32/64X address mismatch in Gpe0Block: 00008018/0000000000008028, using 32 (20090903/tbfadt-427) summary klog: HIGH Kernel message: [ 0.000000] ACPI Error: 32/64X address mismatch in Gpe0Block: 00008020/0000000000008028, using 32 (20090903/tbfadt-427) summary klog: HIGH Kernel message: [ 0.000000] ACPI Error: 32/64X address mismatch in Gpe0Block: 0x00008020/0x0000000000008028, using 32 (20110112/tbfadt-427) summary klog: HIGH Kernel message: [ 0.000000] ACPI Error: 32/64X address mismatch in Pm2ControlBlock: 00008030/0000000000008020, using 32 (20090903/tbfadt-427) summary klog: HIGH Kernel message: [ 0.000000] ACPI Error: 32/64X address mismatch in Pm2ControlBlock: 00008800/0000000000008100, using 32 (20090903/tbfadt-427) summary klog: HIGH Kernel message: [ 0.000000] ACPI Error: 32/64X address mismatch in Pm2ControlBlock: 0x00000900/0x0000000000000800, using 32 (20110112/tbfadt-427) summary klog: HIGH Kernel message: [ 0.000000] ACPI Error: 32/64X address mismatch in Pm2ControlBlock: 0x00001218/0x0000000000001214, using 32 (20100428/tbfadt-427) summary klog: HIGH Kernel message: [ 0.000000] ACPI Error: 32/64X address mismatch in Pm2ControlBlock: 0x00001218/0x0000000000001214, using 32 (20110413/tbfadt-430) summary klog: HIGH Kernel message: [ 0.000000] ACPI Error: 32/64X address mismatch in Pm2ControlBlock: 0x00008800/0x0000000000008100, using 32 (20110112/tbfadt-427) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64 FACS address mismatch in FADT - two FACS tables! 20090521 tbfadt-370 summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64 FACS address mismatch in FADT - two FACS tables! (20090903/tbfadt-369) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64 FACS address mismatch in FADT - two FACS tables! (20100121/tbfadt-369) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64 FACS address mismatch in FADT - two FACS tables! (20100428/tbfadt-369) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64 FACS address mismatch in FADT - two FACS tables! (20100702/tbfadt-369) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64 FACS address mismatch in FADT - two FACS tables! (20101013/tbfadt-369) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64 FACS address mismatch in FADT - two FACS tables! (20110112/tbfadt-369) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64 FACS address mismatch in FADT - two FACS tables! (20110316/tbfadt-369) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64 FACS address mismatch in FADT - two FACS tables! (20110413/tbfadt-369) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0x3776BF40/0x000000003776ED40, using 32 (20100428/tbfadt-486) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0x38FE4E40/0x0000000038FE4D40, using 32 (20110112/tbfadt-486) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0x38FE4E40/0x0000000038FE4D40, using 32 (20110413/tbfadt-489) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0x3F465F40/0x000000003F465F80, using 32 (20110112/tbfadt-486) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0x3F473F40/0x000000003F473F80, using 32 (20100428/tbfadt-486) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0x3F509F40/0x000000003F509F80, using 32 (20100428/tbfadt-486) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0x3F509F40/0x000000003F509F80, using 32 (20110112/tbfadt-486) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0x3F611E40/0x000000003F611D40, using 32 (20100428/tbfadt-486) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0x3F611E40/0x000000003F611D40, using 32 (20110112/tbfadt-486) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0x3F611E40/0x000000003F611D40, using 32 (20110413/tbfadt-489) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0x6FB75F40/0x000000006FB75F80, using 32 (20110112/tbfadt-486) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0x77603F40/0x0000000077603F80, using 32 (20110112/tbfadt-486) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0x77603F40/0x0000000077603F80, using 32 (20110413/tbfadt-489) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0x7762DF40/0x000000007762DF80, using 32 (20110112/tbfadt-486) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0x77630F40/0x0000000077630F80, using 32 (20110112/tbfadt-486) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0x7776BF40/0x000000007776ED40, using 32 (20100428/tbfadt-486) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0x7776BF40/0x000000007776ED40, using 32 (20110112/tbfadt-486) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0x78FE4E40/0x0000000078FE4D40, using 32 (20110413/tbfadt-489) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0x7A7E4E40/0x000000007A7E4D40, using 32 (20110112/tbfadt-486) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0x7BE20F40/0x000000007BE20F80, using 32 (20110413/tbfadt-489) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0x7D7E4E40/0x000000007D7E4D40, using 32 (20110112/tbfadt-486) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0x7D8C4F40/0x000000007D8C5E40, using 32 (20110413/tbfadt-489) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0x7F611E40/0x000000007F611D40, using 32 (20110112/tbfadt-486) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0x7FCEBF40/0x000000007FCE7F40, using 32 (20110112/tbfadt-486) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0x7FD5AF40/0x000000007FD5FF40, using 32 (20110112/tbfadt-486) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xAAD87F40/0x00000000AADA1D40, using 32 (20110112/tbfadt-486) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xAAD87F40/0x00000000AADA1D40, using 32 (20110316/tbfadt-489) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xAAD87F40/0x00000000AADA1D40, using 32 (20110413/tbfadt-489) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xAADB7F40/0x00000000AADD1D40, using 32 (20100428/tbfadt-486) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xAADB7F40/0x00000000AADD1D40, using 32 (20110112/tbfadt-486) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xAADB9F40/0x00000000AADD3D40, using 32 (20110112/tbfadt-486) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xAAF2AF40/0x00000000AAF2DD40, using 32 (20110112/tbfadt-486) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xAAFE4E40/0x00000000AAFE4D40, using 32 (20110112/tbfadt-486) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xAB62DF40/0x00000000AB62DF80, using 32 (20100428/tbfadt-486) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xAB62DF40/0x00000000AB62DF80, using 32 (20110112/tbfadt-486) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xAFB77F40/0x00000000AFB77F80, using 32 (20110112/tbfadt-486) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xB5F17E40/0x00000000B5F17D40, using 32 (20100428/tbfadt-486) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xB5F1BE40/0x00000000B5F1BD40, using 32 (20100428/tbfadt-486) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xB6D5AF40/0x00000000B6D61D40, using 32 (20100428/tbfadt-486) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xB6DB9F40/0x00000000B6DD3D40, using 32 (20110112/tbfadt-486) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xB762CF40/0x00000000B762CF80, using 32 (20110112/tbfadt-486) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xB7B1CE40/0x00000000B7B1CD40, using 32 (20110112/tbfadt-486) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xB7B1CE40/0x00000000B7B1CD40, using 32 (20110316/tbfadt-489) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xB7B1CE40/0x00000000B7B1CD40, using 32 (20110413/tbfadt-489) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xB8FE4E40/0x00000000B8FE4D40, using 32 (20110112/tbfadt-486) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xBAD17F40/0x00000000BAD31D40, using 32 (20110112/tbfadt-486) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xBAD87F40/0x00000000BADA1D40, using 32 (20110112/tbfadt-486) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xBADABF40/0x00000000BADAED40, using 32 (20100428/tbfadt-486) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xBADABF40/0x00000000BADAED40, using 32 (20110112/tbfadt-486) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xBAF1CF40/0x00000000BAF1FD40, using 32 (20110112/tbfadt-486) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xBAFE4E40/0x00000000BAFE4D40, using 32 (20110112/tbfadt-486) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xBAFE5E40/0x00000000BAFE5D40, using 32 (20110112/tbfadt-486) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xBB4D1F40/0x00000000BB4DFD40, using 32 (20110112/tbfadt-486) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xBB583F40/0x00000000BB59DD40, using 32 (20100428/tbfadt-486) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xBB583F40/0x00000000BB59DD40, using 32 (20110112/tbfadt-486) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xBB5B3F40/0x00000000BB5CDD40, using 32 (20100428/tbfadt-486) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xBB5B3F40/0x00000000BB5CDD40, using 32 (20110112/tbfadt-486) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xBB5B3F40/0x00000000BB5CDD40, using 32 (20110413/tbfadt-489) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xBB62CF40/0x00000000BB62CF80, using 32 (20100428/tbfadt-486) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xBB62DF40/0x00000000BB62DF80, using 32 (20100428/tbfadt-486) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xBB648F40/0x00000000BB64BD40, using 32 (20110112/tbfadt-486) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xBB649F40/0x00000000BB64CD40, using 32 (20110112/tbfadt-486) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xBB76BF40/0x00000000BB76ED40, using 32 (20100428/tbfadt-486) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xBBE27F40/0x00000000BBE27F80, using 32 (20110112/tbfadt-486) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xBBE27F40/0x00000000BBE27F80, using 32 (20110413/tbfadt-489) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xBBE29F40/0x00000000BBE29F80, using 32 (20110112/tbfadt-486) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xBDB65F40/0x00000000BDB6BE40, using 32 (20100428/tbfadt-486) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xBDF17E40/0x00000000BDF17D40, using 32 (20110112/tbfadt-486) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xBDF18E40/0x00000000BDF18D40, using 32 (20100428/tbfadt-486) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xBDF19E40/0x00000000BDF19D40, using 32 (20100428/tbfadt-486) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xBDF19E40/0x00000000BDF19D40, using 32 (20101013/tbfadt-486) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xBDF19E40/0x00000000BDF19D40, using 32 (20110112/tbfadt-486) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xBDF1AE40/0x00000000BDF1AD40, using 32 (20100428/tbfadt-486) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xBE97CF40/0x00000000BE996D40, using 32 (20110112/tbfadt-486) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xBEDB7F40/0x00000000BEDD1D40, using 32 (20110112/tbfadt-486) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xBEDB8F40/0x00000000BEDD1D40, using 32 (20100428/tbfadt-486) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xBEDB8F40/0x00000000BEDD1D40, using 32 (20110112/tbfadt-486) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xBEDB9F40/0x00000000BEDD3D40, using 32 (20110112/tbfadt-486) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xBF4D1F40/0x00000000BF4DFD40, using 32 (20110112/tbfadt-486) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xBF62CF40/0x00000000BF62CF80, using 32 (20110112/tbfadt-486) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xBF62DF40/0x00000000BF62DF80, using 32 (20100428/tbfadt-486) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xBF654F40/0x00000000BF662D40, using 32 (20110112/tbfadt-486) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xBF7E4E40/0x00000000BF7E4D40, using 32 (20110112/tbfadt-486) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xBFA4CF40/0x00000000BFA51F40, using 32 (20110112/tbfadt-486) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xBFA4CF40/0x00000000BFA51F40, using 32 (20110413/tbfadt-489) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xBFE17E40/0x00000000BFE17D40, using 32 (20110112/tbfadt-486) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xBFE21F40/0x00000000BFE21E40, using 32 (20110112/tbfadt-486) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xC9E58F40/0x00000000C9E6ED40, using 32 (20110112/tbfadt-486) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xCAB39F40/0x00000000CAB3CD40, using 32 (20100428/tbfadt-486) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xCAFE4E40/0x00000000CAFE4D40, using 32 (20110112/tbfadt-486) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xCAFE4E40/0x00000000CAFE4D40, using 32 (20110413/tbfadt-489) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xCAFE5E40/0x00000000CAFE5D40, using 32 (20110112/tbfadt-486) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xCB61DF40/0x00000000CB61DE40, using 32 (20100428/tbfadt-486) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xCB61DF40/0x00000000CB61DE40, using 32 (20110112/tbfadt-486) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xCBE4CF40/0x00000000CBE51F40, using 32 (20100428/tbfadt-486) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xCBE4CF40/0x00000000CBE51F40, using 32 (20110112/tbfadt-486) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xCBF6BF40/0x00000000CBF6ED40, using 32 (20110112/tbfadt-486) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xCEF27F40/0x00000000CEF2AD40, using 32 (20100428/tbfadt-486) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xCEF27F40/0x00000000CEF2AD40, using 32 (20110112/tbfadt-486) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xCEF27F40/0x00000000CEF2AD40, using 32 (20110413/tbfadt-489) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xCEF28F40/0x00000000CEF2BD40, using 32 (20100428/tbfadt-486) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xCEF28F40/0x00000000CEF2BD40, using 32 (20110112/tbfadt-486) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xCEF2BF40/0x00000000CEF2ED40, using 32 (20100428/tbfadt-486) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xCEF2BF40/0x00000000CEF2ED40, using 32 (20110413/tbfadt-489) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xCF36BF40/0x00000000CF36ED40, using 32 (20100702/tbfadt-486) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xCF36BF40/0x00000000CF36ED40, using 32 (20101013/tbfadt-486) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xCF76BF40/0x00000000CF76ED40, using 32 (20100428/tbfadt-486) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xCF76BF40/0x00000000CF76ED40, using 32 (20110112/tbfadt-486) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xCF7E4E40/0x00000000CF7E4D40, using 32 (20100428/tbfadt-486) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xCF7E4E40/0x00000000CF7E4D40, using 32 (20110112/tbfadt-486) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xCF7E4E40/0x00000000CF7E4D40, using 32 (20110413/tbfadt-489) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xCFBFAF40/0x00000000CFBF6F40, using 32 (20100428/tbfadt-486) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xCFD56F40/0x00000000CFD52F40, using 32 (20110112/tbfadt-486) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xCFD5FF40/0x00000000CFD65E40, using 32 (20110413/tbfadt-489) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xD2F2DF40/0x00000000D2F30D40, using 32 (20110112/tbfadt-486) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xDB36BF40/0x00000000DB36ED40, using 32 (20100428/tbfadt-486) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xDB36BF40/0x00000000DB36ED40, using 32 (20110112/tbfadt-486) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xDB76BF40/0x00000000DB76ED40, using 32 (20100428/tbfadt-486) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xDB76BF40/0x00000000DB76ED40, using 32 (20110112/tbfadt-486) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xDB76BF40/0x00000000DB76ED40, using 32 (20110413/tbfadt-489) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xDEB39F40/0x00000000DEB3CD40, using 32 (20110112/tbfadt-486) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xDEB3AF40/0x00000000DEB3DD40, using 32 (20110112/tbfadt-486) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xDEEBAF40/0x00000000DEEBDD40, using 32 (20110413/tbfadt-489) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xDEF2DF40/0x00000000DEF30D40, using 32 (20110112/tbfadt-486) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xDF64BF40/0x00000000DF64ED40, using 32 (20110112/tbfadt-486) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 3762DF40/000000003762DF80, using 32 (20090903/tbfadt-486) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 3F611E40/000000003F611D40, using 32 (20090903/tbfadt-486) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 7776BF40/000000007776ED40, using 32 (20090903/tbfadt-486) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 7DB61F40/000000007DB66F40, using 32 (20090903/tbfadt-486) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 7F3ECF40/000000007F3E8F40, using 32 (20090903/tbfadt-486) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 7F611E40/000000007F611D40, using 32 (20090903/tbfadt-486) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 9DCC4F40/000000009DCC5E40, using 32 (20090903/tbfadt-486) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - AFB75F40/00000000AFB75F80, using 32 (20090903/tbfadt-486) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - B7B1CE40/00000000B7B1CD40, using 32 (20090903/tbfadt-486) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - B7B1CE40/00000000B7B1CD40, using 32 (20100121/tbfadt-486) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - BADABF40/00000000BADAED40, using 32 (20090903/tbfadt-486) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - BAF2DF40/00000000BAF30D40, using 32 (20090903/tbfadt-486) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - BB62DF40/00000000BB62DF80, using 32 (20090903/tbfadt-486) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - BB76BF40/00000000BB76ED40, using 32 (20090903/tbfadt-486) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - BBE28E40/00000000BBE28D40, using 32 (20090903/tbfadt-486) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - BDB5BF40/00000000BDB60F40, using 32 (20090903/tbfadt-486) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - BDB5FF40/00000000BDB64F40, using 32 20090521 tbfadt-487 summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - BDF17E40/00000000BDF17D40, using 32 (20090903/tbfadt-486) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - BEDB7F40/00000000BEDD1D40, using 32 (20090903/tbfadt-486) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - BF62CF40/00000000BF62CF80, using 32 (20090903/tbfadt-486) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - BF76BF40/00000000BF76ED40, using 32 (20090903/tbfadt-486) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - CBE4AF40/00000000CBE4FF40, using 32 (20090903/tbfadt-486) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - CBF6BF40/00000000CBF6ED40, using 32 (20090903/tbfadt-486) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - CEF28F40/00000000CEF2BD40, using 32 (20090903/tbfadt-486) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - CEF2CF40/00000000CEF2FD40, using 32 (20090903/tbfadt-486) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - D2F2DF40/00000000D2F30D40, using 32 (20090903/tbfadt-486) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - DADC1F40/00000000DADD5D40, using 32 (20090903/tbfadt-486) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - DB36BF40/00000000DB36ED40, using 32 (20090903/tbfadt-486) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - DB76BF40/00000000DB76ED40, using 32 (20090903/tbfadt-486) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - DEEBAF40/00000000DEEBDD40, using 32 (20090903/tbfadt-486) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - DEF2DF40/00000000DEF30D40, using 32 (20090903/tbfadt-486) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X length mismatch in Gpe1Block: 0/32 20090521 tbfadt-527 summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X length mismatch in Gpe1Block: 0/32 (20090903/tbfadt-526) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X length mismatch in Gpe1Block: 0/32 (20100428/tbfadt-526) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X length mismatch in Gpe1Block: 0/32 (20101013/tbfadt-526) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X length mismatch in Gpe1Block: 0/32 (20110112/tbfadt-526) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: 32/64X length mismatch in Gpe1Block: 0/32 (20110413/tbfadt-529) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: BIOS XSDT has NULL entry, using RSDT (20110112/tbutils-663) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: Invalid length for Pm1aControlBlock: 32, using default 16 (20090903/tbfadt-607) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: Invalid length for Pm1aControlBlock: 32, using default 16 (20100428/tbfadt-607) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: Invalid length for Pm1aControlBlock: 32, using default 16 (20110112/tbfadt-607) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: Invalid length for Pm1aControlBlock: 32, using default 16 (20110413/tbfadt-610) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: Invalid length for Pm1bControlBlock: 32, using default 16 (20090903/tbfadt-607) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: Invalid length for Pm2ControlBlock: 0, using default 8 (20090903/tbfadt-607) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: Invalid length for Pm2ControlBlock: 0, using default 8 (20100428/tbfadt-607) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: Invalid length for Pm2ControlBlock: 0, using default 8 (20110112/tbfadt-607) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: Invalid length for Pm2ControlBlock: 16, using default 8 (20100428/tbfadt-607) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: Invalid length for Pm2ControlBlock: 16, using default 8 (20110112/tbfadt-607) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: Invalid length for Pm2ControlBlock: 16, using default 8 (20110413/tbfadt-610) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: Invalid length for Pm2ControlBlock: 32, using default 8 (20090903/tbfadt-607) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: Invalid length for Pm2ControlBlock: 32, using default 8 (20110112/tbfadt-607) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: Invalid length for PmTimerBlock: 24, using default 32 (20100428/tbfadt-607) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: Optional field Gpe1Block has zero address or length: 000000000000102C/0 20090521 tbfadt-558 summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: Optional field Gpe1Block has zero address or length: 000000000000102C/0 (20090903/tbfadt-557) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: Optional field Gpe1Block has zero address or length: 000000000000802C/0 (20090903/tbfadt-557) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: Optional field Gpe1Block has zero address or length: 0x0000000000000000/0x4 (20110413/tbfadt-560) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: Optional field Gpe1Block has zero address or length: 0x000000000000102C/0x0 (20100428/tbfadt-557) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: Optional field Gpe1Block has zero address or length: 0x000000000000102C/0x0 (20101013/tbfadt-557) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: Optional field Gpe1Block has zero address or length: 0x000000000000102C/0x0 (20110112/tbfadt-557) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: Optional field Gpe1Block has zero address or length: 0x000000000000102C/0x0 (20110413/tbfadt-560) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: Optional field Gpe1Block has zero address or length: 0x00000000000044A0/0x0 (20100428/tbfadt-557) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: Optional field Pm2ControlBlock has zero address or length: 0000000000000000/1 20090521 tbfadt-558 summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: Optional field Pm2ControlBlock has zero address or length: 0000000000000000/1 (20090903/tbfadt-557) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: Optional field Pm2ControlBlock has zero address or length: 0000000000000050/0 (20090903/tbfadt-557) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: Optional field Pm2ControlBlock has zero address or length: 0x0000000000000000/0x1 (20100428/tbfadt-557) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: Optional field Pm2ControlBlock has zero address or length: 0x0000000000000000/0x1 (20101013/tbfadt-557) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: Optional field Pm2ControlBlock has zero address or length: 0x0000000000000000/0x1 (20110112/tbfadt-557) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: Optional field Pm2ControlBlock has zero address or length: 0x0000000000000000/0x1 (20110413/tbfadt-560) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: Optional field Pm2ControlBlock has zero address or length: 0x0000000000000450/0x0 (20100428/tbfadt-557) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: Optional field Pm2ControlBlock has zero address or length: 0x0000000000000450/0x0 (20110112/tbfadt-557) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: Optional field Pm2ControlBlock has zero address or length: 0x0000000000000814/0x0 (20100428/tbfadt-557) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: Optional field Pm2ControlBlock has zero address or length: 0x0000000000000820/0x0 (20100428/tbfadt-557) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning: Optional field Pm2ControlBlock has zero address or length: 0x0000000000000820/0x0 (20110112/tbfadt-557) summary klog: HIGH Kernel message: [ 0.000000] ACPI Warning (tbfadt-0460): Optional field "Gpe1Block" has zero address or length: 000000000000102C/0 [20080926] summary klog: HIGH Kernel message: [ 0.022719] ACPI Error: Found unknown opcode 0xFD at AML address f7ffe14c offset 0xE8, ignoring (20110112/psloop-141) summary klog: HIGH Kernel message: [ 0.034090] ACPI Error: Method parse/execution failed [_SB_.PCI0._OSC] (Node ee025630), AE_ALREADY_EXISTS (20110112/psparse-536) summary klog: HIGH Kernel message: [ 0.040119] [Firmware Bug]: the BIOS has corrupted hw-PMU resources (MSR 186 is 400000) summary klog: HIGH Kernel message: [ 0.045570] ACPI Warning: For _SB_.PCI0.LPCB.H_EC._GLK: Parameter count mismatch - ASL declared 1, ACPI requires 0 (20110112/nspredef-352) summary klog: HIGH Kernel message: [ 0.050847] ACPI Warning: Package List length (0x10) larger than NumElements count (0x8), truncated summary klog: HIGH Kernel message: [ 0.053909] ACPI Warning: Package List length (0x10) larger than NumElements count (0x6), truncated summary klog: HIGH Kernel message: [ 0.074070] ACPI Error: The DSDT has been corrupted or replaced - old, new headers below (20110413/tbutils-372) summary klog: HIGH Kernel message: [ 0.074090] ACPI Error: Please send DMI info to linux-acpi@vger.kernel.org summary klog: HIGH Kernel message: [ 0.077854] ACPI Error: Method parse/execution failed [_SB_.PCI0._OSC] (Node f4c250d8), AE_NOT_FOUND (20110112/psparse-536) summary klog: HIGH Kernel message: [ 0.078226] ACPI Error (psparse-0537): Method parse/execution failed [_PR_.CPU1.APCT] (Node f7033090), AE_NO_MEMORY summary klog: HIGH Kernel message: [ 0.078254] ACPI Error (psparse-0537): Method parse/execution failed [_PR_.CPU1.GCAP] (Node f7033078), AE_NO_MEMORY summary klog: HIGH Kernel message: [ 0.078278] ACPI Error (psparse-0537): Method parse/execution failed [_PR_.CPU1._PDC] (Node f7033048), AE_NO_MEMORY summary klog: HIGH Kernel message: [ 0.085590] ACPI Error: Could not map memory at 0x000000007F5E3520, size 463 (20110112/exregion-178) summary klog: HIGH Kernel message: [ 0.085606] ACPI Error: Method parse/execution failed [_PR_.CPU1.APPT] (Node f403d228), AE_NO_MEMORY (20110112/psparse-536) summary klog: HIGH Kernel message: [ 0.085618] ACPI Error: Method parse/execution failed [_PR_.CPU1.GCAP] (Node f403d1f8), AE_NO_MEMORY (20110112/psparse-536) summary klog: HIGH Kernel message: [ 0.085627] ACPI Error: Could not map memory at 0x000000007D3E1520, size 463 (20110112/exregion-178) summary klog: HIGH Kernel message: [ 0.085628] ACPI Error: Method parse/execution failed [_PR_.CPU1._PDC] (Node f403d1c8), AE_NO_MEMORY (20110112/psparse-536) summary klog: HIGH Kernel message: [ 0.086081] ACPI Error: Could not map memory at 0x000000007F395420, size 141 (20110112/exregion-178) summary klog: HIGH Kernel message: [ 0.086097] ACPI Error: Method parse/execution failed [_PR_.CPU1.APCT] (Node f403d210), AE_NO_MEMORY (20110112/psparse-536) summary klog: HIGH Kernel message: [ 0.086108] ACPI Error: Method parse/execution failed [_PR_.CPU2.GCAP] (Node f403d270), AE_NO_MEMORY (20110112/psparse-536) summary klog: HIGH Kernel message: [ 0.086118] ACPI Error: Method parse/execution failed [_PR_.CPU2._PDC] (Node f403d240), AE_NO_MEMORY (20110112/psparse-536) summary klog: HIGH Kernel message: [ 0.086119] ACPI Error: Could not map memory at 0x000000007D198120, size 141 (20110112/exregion-178) summary klog: HIGH Kernel message: [ 0.091402] ACPI Warning: Package List length (0x7) larger than NumElements count (0x3), truncated summary klog: HIGH Kernel message: [ 0.091463] ACPI Error (psparse-0537): Method parse/execution failed [_PR_.CPU1.APPT] (Node f701e228), AE_INVALID_TABLE_LENGTH summary klog: HIGH Kernel message: [ 0.091510] ACPI Error (psparse-0537): Method parse/execution failed [_PR_.CPU1.GCAP] (Node f701e1f8), AE_INVALID_TABLE_LENGTH summary klog: HIGH Kernel message: [ 0.091552] ACPI Error (psparse-0537): Method parse/execution failed [_PR_.CPU1._PDC] (Node f701e1c8), AE_INVALID_TABLE_LENGTH summary klog: HIGH Kernel message: [ 0.092524] ACPI Error (psparse-0537): Method parse/execution failed [_PR_.CPU1.APCT] (Node f701e210), AE_NO_MEMORY summary klog: HIGH Kernel message: [ 0.092570] ACPI Error (psparse-0537): Method parse/execution failed [_PR_.CPU2.GCAP] (Node f701e270), AE_NO_MEMORY summary klog: HIGH Kernel message: [ 0.092612] ACPI Error (psparse-0537): Method parse/execution failed [_PR_.CPU2._PDC] (Node f701e240), AE_NO_MEMORY summary klog: HIGH Kernel message: [ 0.093544] ACPI Error: Needed type [Reference], found [Device] f7019f90 (20100428/exresop-104) summary klog: HIGH Kernel message: [ 0.095719] ACPI Error: Could not map memory at 0x0000000087127520, size 463 (20110112/exregion-178) summary klog: HIGH Kernel message: [ 0.095737] ACPI Error: Method parse/execution failed [_PR_.CPU1.APPT] (Node f383e498), AE_NO_MEMORY (20110112/psparse-536) summary klog: HIGH Kernel message: [ 0.095749] ACPI Error: Method parse/execution failed [_PR_.CPU1.GCAP] (Node f383e468), AE_NO_MEMORY (20110112/psparse-536) summary klog: HIGH Kernel message: [ 0.095760] ACPI Error: Method parse/execution failed [_PR_.CPU1._PDC] (Node f383e438), AE_NO_MEMORY (20110112/psparse-536) summary klog: HIGH Kernel message: [ 0.095817] [Firmware Bug]: ACPI: ACPI brightness control misses _BQC function summary klog: HIGH Kernel message: [ 0.096257] ACPI Error: Could not map memory at 0x0000000086DB1C20, size 141 (20110112/exregion-178) summary klog: HIGH Kernel message: [ 0.096273] ACPI Error: Method parse/execution failed [_PR_.CPU1.APCT] (Node f383e480), AE_NO_MEMORY (20110112/psparse-536) summary klog: HIGH Kernel message: [ 0.096285] ACPI Error: Method parse/execution failed [_PR_.CPU2.GCAP] (Node f383e4e0), AE_NO_MEMORY (20110112/psparse-536) summary klog: HIGH Kernel message: [ 0.096295] ACPI Error: Method parse/execution failed [_PR_.CPU2._PDC] (Node f383e4b0), AE_NO_MEMORY (20110112/psparse-536) summary klog: HIGH Kernel message: [ 0.101941] ACPI Error: Field [ASSM] at 524320 exceeds Buffer [BUF0] size 880 (bits) (20110112/dsopcode-597) summary klog: HIGH Kernel message: [ 0.101946] ACPI Error: Method parse/execution failed [_SB_.MEM_._CRS] (Node f442af60), AE_AML_BUFFER_LIMIT (20110112/psparse-536) summary klog: HIGH Kernel message: [ 0.101953] ACPI Error: Method execution failed [_SB_.MEM_._CRS] (Node f442af60), AE_AML_BUFFER_LIMIT (20110112/uteval-103) summary klog: HIGH Kernel message: [ 0.104297] ACPI Error (psargs-0359): [OSYS] Namespace lookup failure, AE_NOT_FOUND summary klog: HIGH Kernel message: [ 0.104304] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.ACEL._STA] (Node f701c4e0), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 0.105061] ACPI Warning: Package List length (0xCA) larger than NumElements count (0x4), truncated summary klog: HIGH Kernel message: [ 0.106912] ACPI Warning: Package List length (0x5) larger than NumElements count (0x2), truncated summary klog: HIGH Kernel message: [ 0.109618] ACPI Error: Needed type [Reference], found [Device] f7012f90 (20090903/exresop-104) summary klog: HIGH Kernel message: [ 0.109635] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0._OSC] (Node f701adc8), AE_AML_OPERAND_TYPE summary klog: HIGH Kernel message: [ 0.113709] ACPI Error: Method parse/execution failed [_PR_.CPU1._PDC] (Node f5822150), AE_INVALID_TABLE_LENGTH (20110112/psparse-536) summary klog: HIGH Kernel message: [ 0.113864] ACPI Error: Method parse/execution failed [_PR_.CPU2._PDC] (Node f58221e0), AE_INVALID_TABLE_LENGTH (20110112/psparse-536) summary klog: HIGH Kernel message: [ 0.114544] ACPI Error: Method parse/execution failed [_PR_.CPU0._PDC] (Node f54211c8), AE_INVALID_TABLE_LENGTH (20110112/psparse-536) summary klog: HIGH Kernel message: [ 0.118277] ACPI Error (psargs-0359): [SUPP] Namespace lookup failure, AE_NOT_FOUND summary klog: HIGH Kernel message: [ 0.118284] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0._OSC] (Node f7012780), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 0.120765] ACPI Warning for _SB_.PCI0.P2P_._PRT: Return Package has no elements (empty) (20090903/nspredef-433) summary klog: HIGH Kernel message: [ 0.122347] ACPI Error: Could not map memory at 0x00000000000FFA32, size 0 (20100428/exregion-178) summary klog: HIGH Kernel message: [ 0.122369] ACPI Error (psparse-0537): Method parse/execution failed [_PR_.CPU0._PDC] (Node f70191c8), AE_NO_MEMORY summary klog: HIGH Kernel message: [ 0.128150] ACPI Warning for _SB_.PCI0.P32_._PRT: Return Package has no elements (empty) (20090903/nspredef-433) summary klog: HIGH Kernel message: [ 0.136585] ACPI Error: Field [ALB2] at 120 exceeds Buffer [CRSA] size 104 (bits) (20090903/dsopcode-596) summary klog: HIGH Kernel message: [ 0.136600] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.PIB_.SIO0.LPT_._CRS] (Node dd8159d8), AE_AML_BUFFER_LIMIT summary klog: HIGH Kernel message: [ 0.136637] ACPI Error (uteval-0250): Method execution failed [_SB_.PCI0.PIB_.SIO0.LPT_._CRS] (Node dd8159d8), AE_AML_BUFFER_LIMIT summary klog: HIGH Kernel message: [ 0.140000] [Firmware Bug]: the BIOS has corrupted hw-PMU resources (MSR 186 is 43003c) summary klog: HIGH Kernel message: [ 0.150000] ACPI Error: Method parse/execution failed [_SB_.PCI0.SBRG.EC0_._REG] (Node ffff880137e47618), AE_NOT_EXIST (20110112/psparse-536) summary klog: HIGH Kernel message: [ 0.150000] ACPI Error: No handler for Region [ERAM] (ffff880137e58e10) [EmbeddedControl] (20110112/evregion-369) summary klog: HIGH Kernel message: [ 0.159797] ACPI Error: Method parse/execution failed [_SB_._OSC] (Node f4421648), AE_NOT_FOUND (20110413/psparse-536) summary klog: HIGH Kernel message: [ 0.160246] ACPI Error: Method parse/execution failed [_SB_.PCI0.LPC0.EC0_._REG] (Node ffff880147830960), AE_NOT_FOUND (20110112/psparse-536) summary klog: HIGH Kernel message: [ 0.160246] ACPI Error: [_SB_.PHSR] Namespace lookup failure, AE_NOT_FOUND (20110112/psargs-359) summary klog: HIGH Kernel message: [ 0.163431] ACPI Warning: Package List length (0x6) larger than NumElements count (0x3), truncated summary klog: HIGH Kernel message: [ 0.165683] ACPI Error: [CDW1] Namespace lookup failure, AE_NOT_FOUND (20110112/psargs-359) summary klog: HIGH Kernel message: [ 0.165689] ACPI Error: Method parse/execution failed [_SB_._OSC] (Node f3821648), AE_NOT_FOUND (20110112/psparse-536) summary klog: HIGH Kernel message: [ 0.166264] ACPI Error (psparse-0537): Method parse/execution failed [_SB_._OSC] (Node f701a648), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 0.166294] ACPI Error: Method parse/execution failed [_SB_._OSC] (Node f4021648), AE_NOT_FOUND (20110112/psparse-536) summary klog: HIGH Kernel message: [ 0.166323] ACPI Error: No handler for Region [ERAM] (f7022168) [EmbeddedControl] (20100428/evregion-369) summary klog: HIGH Kernel message: [ 0.166336] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.LPCB.EC0_._REG] (Node f7021bb8), AE_NOT_EXIST summary klog: HIGH Kernel message: [ 0.166808] ACPI Error: No handler for Region [ERAM] (f7023938) [EmbeddedControl] (20100428/evregion-369) summary klog: HIGH Kernel message: [ 0.166808] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.HTEV] (Node f701be10), AE_NOT_EXIST summary klog: HIGH Kernel message: [ 0.166808] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.LPC0.EC0_._REG] (Node f7024d08), AE_NOT_EXIST summary klog: HIGH Kernel message: [ 0.169111] ACPI Error: [HPTF] Namespace lookup failure, AE_NOT_FOUND (20110112/psargs-359) summary klog: HIGH Kernel message: [ 0.169117] ACPI Error: Method parse/execution failed [_SB_.PCI0.HPET._STA] (Node f402ae58), AE_NOT_FOUND (20110112/psparse-536) summary klog: HIGH Kernel message: [ 0.170000] ACPI Error (psparse-0537): Method parse/execution failed [] (Node ffffffff81a06440), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 0.170000] ACPI Warning: Package List length (0x6) larger than NumElements count (0x2), truncated summary klog: HIGH Kernel message: [ 0.171916] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0._OSC] (Node f700e3d8), AE_ALREADY_EXISTS summary klog: HIGH Kernel message: [ 0.172776] ACPI Warning: Package List length (1) larger than NumElements count (0), truncated summary klog: HIGH Kernel message: [ 0.172868] ACPI Error: No handler for Region [RAM_] (f7014618) [EmbeddedControl] 20090521 evregion-319 summary klog: HIGH Kernel message: [ 0.172873] ACPI Error: Region EmbeddedControl(3) has no handler 20090521 exfldio-294 summary klog: HIGH Kernel message: [ 0.172880] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.LPCB.EC0_._REG] (Node f70159f0), AE_NOT_EXIST summary klog: HIGH Kernel message: [ 0.173605] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0._OSC] (Node f70215e8), AE_ALREADY_EXISTS summary klog: HIGH Kernel message: [ 0.173917] ACPI Error (psparse-0537): Method parse/execution failed [] (Node c08d6804), AE_ALREADY_EXISTS summary klog: HIGH Kernel message: [ 0.173917] ACPI Error (psparse-0537): Method parse/execution failed [] (Node c08d6804), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 0.175379] ACPI Error: No handler for Region [ECXP] (f70218e8) [EmbeddedControl] (20100428/evregion-369) summary klog: HIGH Kernel message: [ 0.175394] ACPI Error (psparse-0537): Method parse/execution failed [_PR_.CPU0._OSC] (Node f7025558), AE_NOT_EXIST summary klog: HIGH Kernel message: [ 0.175428] ACPI Error (psparse-0537): Method parse/execution failed [_PR_.CPU0._PDC] (Node f7025540), AE_NOT_EXIST summary klog: HIGH Kernel message: [ 0.175892] ACPI Warning: Package List length (0x1) larger than NumElements count (0x0), truncated summary klog: HIGH Kernel message: [ 0.176410] ACPI Error: [RAMB] Namespace lookup failure, AE_NOT_FOUND (20110413/psargs-359) summary klog: HIGH Kernel message: [ 0.177377] ACPI Error: Needed type [Reference], found [Device] f701af90 (20100428/exresop-104) summary klog: HIGH Kernel message: [ 0.177377] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0._OSC] (Node f7022dc8), AE_AML_OPERAND_TYPE summary klog: HIGH Kernel message: [ 0.178420] ACPI Error: No handler for Region [SACS] (f701b500) [PCI_Config] (20090903/evregion-319) summary klog: HIGH Kernel message: [ 0.178434] ACPI Error (psparse-0537): Method parse/execution failed [PRID.P_D0._STA] (Node f7072000), AE_NOT_EXIST summary klog: HIGH Kernel message: [ 0.178458] ACPI Error (uteval-0250): Method execution failed [PRID.P_D0._STA] (Node f7072000), AE_NOT_EXIST summary klog: HIGH Kernel message: [ 0.178486] ACPI Error (psparse-0537): Method parse/execution failed [PRID.P_D1._STA] (Node f70720a8), AE_NOT_EXIST summary klog: HIGH Kernel message: [ 0.178510] ACPI Error (uteval-0250): Method execution failed [PRID.P_D1._STA] (Node f70720a8), AE_NOT_EXIST summary klog: HIGH Kernel message: [ 0.178539] ACPI Error (psparse-0537): Method parse/execution failed [SECD.S_D0._STA] (Node f7072210), AE_NOT_EXIST summary klog: HIGH Kernel message: [ 0.178563] ACPI Error (uteval-0250): Method execution failed [SECD.S_D0._STA] (Node f7072210), AE_NOT_EXIST summary klog: HIGH Kernel message: [ 0.178590] ACPI Error (psparse-0537): Method parse/execution failed [SECD.S_D1._STA] (Node f70722b8), AE_NOT_EXIST summary klog: HIGH Kernel message: [ 0.178614] ACPI Error (uteval-0250): Method execution failed [SECD.S_D1._STA] (Node f70722b8), AE_NOT_EXIST summary klog: HIGH Kernel message: [ 0.179688] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0._OSC] (Node f74174c8), AE_ALREADY_EXISTS summary klog: HIGH Kernel message: [ 0.181591] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0._OSC] (Node f7022db0), AE_AML_OPERAND_TYPE summary klog: HIGH Kernel message: [ 0.181679] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0._OSC] (Node f740f438), AE_ALREADY_EXISTS summary klog: HIGH Kernel message: [ 0.182199] ACPI Error: Method parse/execution failed [_SB_.PCI0._OSC] (Node f4c25228), AE_NOT_FOUND (20110112/psparse-536) summary klog: HIGH Kernel message: [ 0.182199] ACPI Error: [Z012] Namespace lookup failure, AE_NOT_FOUND (20110112/psargs-359) summary klog: HIGH Kernel message: [ 0.182639] ACPI Error (psargs-0359): [ECEN] Namespace lookup failure, AE_NOT_FOUND summary klog: HIGH Kernel message: [ 0.182645] ACPI Error (psparse-0537): Method parse/execution failed [] (Node c090665c), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 0.183306] ACPI Error: Method parse/execution failed [_PR_.CPU0._PDC] (Node f403a228), AE_ALREADY_EXISTS (20110112/psparse-536) summary klog: HIGH Kernel message: [ 0.183725] ACPI Error: No handler for Region [SACS] (f70c20f0) [PCI_Config] (20090903/evregion-319) summary klog: HIGH Kernel message: [ 0.183734] ACPI Error (psparse-0537): Method parse/execution failed [PRID.P_D0._STA] (Node f70c4180), AE_NOT_EXIST summary klog: HIGH Kernel message: [ 0.183755] ACPI Error (uteval-0250): Method execution failed [PRID.P_D0._STA] (Node f70c4180), AE_NOT_EXIST summary klog: HIGH Kernel message: [ 0.183773] ACPI Error (psparse-0537): Method parse/execution failed [PRID.P_D1._STA] (Node f70c4240), AE_NOT_EXIST summary klog: HIGH Kernel message: [ 0.183793] ACPI Error (uteval-0250): Method execution failed [PRID.P_D1._STA] (Node f70c4240), AE_NOT_EXIST summary klog: HIGH Kernel message: [ 0.183812] ACPI Error (psparse-0537): Method parse/execution failed [SECD.S_D0._STA] (Node f70c43c0), AE_NOT_EXIST summary klog: HIGH Kernel message: [ 0.183832] ACPI Error (uteval-0250): Method execution failed [SECD.S_D0._STA] (Node f70c43c0), AE_NOT_EXIST summary klog: HIGH Kernel message: [ 0.183850] ACPI Error (psparse-0537): Method parse/execution failed [SECD.S_D1._STA] (Node f70c4480), AE_NOT_EXIST summary klog: HIGH Kernel message: [ 0.183870] ACPI Error (uteval-0250): Method execution failed [SECD.S_D1._STA] (Node f70c4480), AE_NOT_EXIST summary klog: HIGH Kernel message: [ 0.184314] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0._OSC] (Node f7015eb8), AE_ALREADY_EXISTS summary klog: HIGH Kernel message: [ 0.185673] ACPI Error (dswload-0659): [___P] Namespace lookup failure, AE_NOT_FOUND summary klog: HIGH Kernel message: [ 0.185686] ACPI Error (psparse-0537): Method parse/execution failed [_PR_.CPU1._PDC] (Node f701a150), AE_INVALID_TABLE_LENGTH summary klog: HIGH Kernel message: [ 0.185688] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0._INI] (Node f700f6c0), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 0.185862] ACPI Error (psparse-0537): Method parse/execution failed [_PR_.CPU2._PDC] (Node f701a1e0), AE_INVALID_TABLE_LENGTH summary klog: HIGH Kernel message: [ 0.186281] ACPI Warning: Package List length (C) larger than NumElements count (4), truncated summary klog: HIGH Kernel message: [ 0.187800] ACPI Error (psparse-0537): Method parse/execution failed [] (Node c0994f7c), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 0.188487] ACPI Error (psargs-0359): q z Namespace lookup failure, AE_NOT_FOUND summary klog: HIGH Kernel message: [ 0.189086] ACPI Error: Needed type [Reference], found [Device] f700ff90 (20090903/exresop-104) summary klog: HIGH Kernel message: [ 0.189100] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0._OSC] (Node f7017dc8), AE_AML_OPERAND_TYPE summary klog: HIGH Kernel message: [ 0.189451] ACPI Error: Needed type [Reference], found [Device] f700ef90 20090521 exresop-104 summary klog: HIGH Kernel message: [ 0.189466] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0._OSC] (Node f7016dc8), AE_AML_OPERAND_TYPE summary klog: HIGH Kernel message: [ 0.189515] ACPI Error (psargs-0359): [CVCL] Namespace lookup failure, AE_NOT_FOUND summary klog: HIGH Kernel message: [ 0.189522] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.LPCB.DIGI._STA] (Node f702a390), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 0.191906] ACPI Error (psparse-0537): Method parse/execution failed [] (Node c098ff6c), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 0.192146] ACPI Error (dswload-0781): [_PSW] Namespace lookup failure, AE_ALREADY_EXISTS summary klog: HIGH Kernel message: [ 0.192182] ACPI Error (psparse-0537): Method parse/execution failed [] (Node c08ce7dc), AE_ALREADY_EXISTS summary klog: HIGH Kernel message: [ 0.193750] ACPI Error (psparse-0537): Method parse/execution failed [] (Node c08ce7dc), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 0.194554] ACPI Error: Method parse/execution failed [_PR_.CPU1._PDC] (Node f5821150), AE_INVALID_TABLE_LENGTH (20110112/psparse-536) summary klog: HIGH Kernel message: [ 0.194701] ACPI Error: Method parse/execution failed [_PR_.CPU2._PDC] (Node f58211e0), AE_INVALID_TABLE_LENGTH (20110112/psparse-536) summary klog: HIGH Kernel message: [ 0.197413] ACPI Error: No handler for Region [EC__] (f701c5c8) [EmbeddedControl] (20100428/evregion-369) summary klog: HIGH Kernel message: [ 0.197451] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.SBRG.EC__._REG] (Node f701e2a0), AE_NOT_EXIST summary klog: HIGH Kernel message: [ 0.199465] ACPI Error: [CDW1] Namespace lookup failure, AE_NOT_FOUND (20110413/psargs-359) summary klog: HIGH Kernel message: [ 0.199471] ACPI Error: Method parse/execution failed [_SB_._OSC] (Node ffff880138e2ea78), AE_NOT_FOUND (20110413/psparse-536) summary klog: HIGH Kernel message: [ 0.201466] ACPI Error (psparse-0537): Method parse/execution failed [_PR_.CPU1._PDC] (Node f700e180), AE_INVALID_TABLE_LENGTH summary klog: HIGH Kernel message: [ 0.205365] ACPI Error: Method parse/execution failed [_SB_.PCI0._OSC] (Node f5422e88), AE_ALREADY_EXISTS (20110413/psparse-536) summary klog: HIGH Kernel message: [ 0.209105] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0._OSC] (Node f701f270), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 0.211904] ACPI Error: No handler for Region [ERAM] (ee422ed8) [EmbeddedControl] (20100428/evregion-369) summary klog: HIGH Kernel message: [ 0.211928] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0._OSC] (Node f701fd08), AE_ALREADY_EXISTS summary klog: HIGH Kernel message: [ 0.211938] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.SBRG.EC0_._REG] (Node ee423708), AE_NOT_EXIST summary klog: HIGH Kernel message: [ 0.212815] ACPI Error: Method parse/execution failed [_SB_.PCI0._OSC] (Node f7424eb8), AE_NOT_FOUND (20110112/psparse-536) summary klog: HIGH Kernel message: [ 0.213084] ACPI Error (dsfield-0143): [CAPB] Namespace lookup failure, AE_ALREADY_EXISTS summary klog: HIGH Kernel message: [ 0.213100] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0._OSC] (Node f7014ca8), AE_ALREADY_EXISTS summary klog: HIGH Kernel message: [ 0.213827] ACPI Warning: Package List length (0xC) larger than NumElements count (0x3), truncated summary klog: HIGH Kernel message: [ 0.217060] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0._OSC] (Node dec13ca8), AE_ALREADY_EXISTS summary klog: HIGH Kernel message: [ 0.217763] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0._OSC] (Node f7013030), AE_ALREADY_EXISTS summary klog: HIGH Kernel message: [ 0.218957] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0._OSC] (Node f701be88), AE_ALREADY_EXISTS summary klog: HIGH Kernel message: [ 0.219691] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0._OSC] (Node f7013270), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 0.219959] ACPI Error: No handler for Region [SACS] (f70c52a8) [PCI_Config] (20090903/evregion-319) summary klog: HIGH Kernel message: [ 0.219968] ACPI Error: Region PCI_Config(2) has no handler (20090903/exfldio-295) summary klog: HIGH Kernel message: [ 0.219977] ACPI Error (psparse-0537): Method parse/execution failed [PRID.P_D0._STA] (Node f701ba38), AE_NOT_EXIST summary klog: HIGH Kernel message: [ 0.220034] ACPI Error (uteval-0250): Method execution failed [PRID.P_D0._STA] (Node f701ba38), AE_NOT_EXIST summary klog: HIGH Kernel message: [ 0.220068] ACPI Error (psparse-0537): Method parse/execution failed [PRID.P_D1._STA] (Node f701baf8), AE_NOT_EXIST summary klog: HIGH Kernel message: [ 0.220107] ACPI Error (uteval-0250): Method execution failed [PRID.P_D1._STA] (Node f701baf8), AE_NOT_EXIST summary klog: HIGH Kernel message: [ 0.220142] ACPI Error (psparse-0537): Method parse/execution failed [SECD.S_D0._STA] (Node f701bc78), AE_NOT_EXIST summary klog: HIGH Kernel message: [ 0.220180] ACPI Error (uteval-0250): Method execution failed [SECD.S_D0._STA] (Node f701bc78), AE_NOT_EXIST summary klog: HIGH Kernel message: [ 0.220213] ACPI Error (psparse-0537): Method parse/execution failed [SECD.S_D1._STA] (Node f701bd38), AE_NOT_EXIST summary klog: HIGH Kernel message: [ 0.220252] ACPI Error (uteval-0250): Method execution failed [SECD.S_D1._STA] (Node f701bd38), AE_NOT_EXIST summary klog: HIGH Kernel message: [ 0.221153] ACPI Error: Method parse/execution failed [_SB_.PCI0.HPET._CRS] (Node f402ae70), AE_NOT_FOUND (20110112/psparse-536) summary klog: HIGH Kernel message: [ 0.221220] ACPI Error: Method parse/execution failed [_SB_.PCI0.RTC_._CRS] (Node f402aee8), AE_NOT_FOUND (20110112/psparse-536) summary klog: HIGH Kernel message: [ 0.222211] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0._OSC] (Node f701beb8), AE_ALREADY_EXISTS summary klog: HIGH Kernel message: [ 0.222980] ACPI Error: Field [I9MN] at 544 exceeds Buffer [IORT] size 464 (bits) (20090903/dsopcode-596) summary klog: HIGH Kernel message: [ 0.222987] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.LPC0.PMIO._CRS] (Node f7015900), AE_AML_BUFFER_LIMIT summary klog: HIGH Kernel message: [ 0.223020] ACPI Error (uteval-0250): Method execution failed [_SB_.PCI0.LPC0.PMIO._CRS] (Node f7015900), AE_AML_BUFFER_LIMIT summary klog: HIGH Kernel message: [ 0.224289] ACPI Warning for _SB_.PCI0.P32_._PRT: Return Package has no elements (empty) (20100428/nspredef-456) summary klog: HIGH Kernel message: [ 0.224569] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0._OSC] (Node f701fca8), AE_ALREADY_EXISTS summary klog: HIGH Kernel message: [ 0.224987] ACPI Error: Field [ASSM] at 524320 exceeds Buffer [BUF0] size 688 (bits) (20100428/dsopcode-597) summary klog: HIGH Kernel message: [ 0.224994] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.MEM_._CRS] (Node f7021990), AE_AML_BUFFER_LIMIT summary klog: HIGH Kernel message: [ 0.225018] ACPI Error (uteval-0250): Method execution failed [_SB_.MEM_._CRS] (Node f7021990), AE_AML_BUFFER_LIMIT summary klog: HIGH Kernel message: [ 0.228032] ACPI Error (psargs-0359): [_PR_.C002._PPC] Namespace lookup failure, AE_NOT_FOUND summary klog: HIGH Kernel message: [ 0.228041] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.LPC0.EC0_._REG] (Node f742a558), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 0.228469] [Firmware Bug]: the BIOS has corrupted hw-PMU resources (MSR 38d is 30) summary klog: HIGH Kernel message: [ 0.228773] ACPI Error: Method parse/execution failed [_SB_.PCI0._OSC] (Node f4025450), AE_NOT_FOUND (20110112/psparse-536) summary klog: HIGH Kernel message: [ 0.229334] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0._OSC] (Node f7020750), AE_ALREADY_EXISTS summary klog: HIGH Kernel message: [ 0.229639] ACPI Error (psargs-0359): [CDW1] Namespace lookup failure, AE_NOT_FOUND summary klog: HIGH Kernel message: [ 0.229644] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0._OSC] (Node f7413270), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 0.230075] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0._OSC] (Node f7014630), AE_ALREADY_EXISTS summary klog: HIGH Kernel message: [ 0.231134] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0._OSC] (Node f7012f00), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 0.232733] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0._OSC] (Node f701ebd0), AE_ALREADY_EXISTS summary klog: HIGH Kernel message: [ 0.236739] ACPI Error: Method parse/execution failed [_SB_.PCI0._OSC] (Node f3c24f00), AE_NOT_FOUND (20110112/psparse-536) summary klog: HIGH Kernel message: [ 0.245794] ACPI Warning for _SB_.PCI0.PCIB._PRT: Return type mismatch - found Integer, expected Package (20100428/nspredef-1053) summary klog: HIGH Kernel message: [ 0.245810] ACPI Error (uteval-0307): Return object type is incorrect [_SB_.PCI0.PCIB._PRT] (Node f7022c48), AE_TYPE summary klog: HIGH Kernel message: [ 0.245830] ACPI Error: Type returned from _PRT was incorrect: Integer, expected Btypes: 0x8 (20100428/uteval-313) summary klog: HIGH Kernel message: [ 0.249570] ACPI Error (psparse-0537): Method parse/execution failed [_PR_.CPU1._OSC] (Node f7010198), AE_ALREADY_EXISTS summary klog: HIGH Kernel message: [ 0.249594] ACPI Error (psparse-0537): Method parse/execution failed [_PR_.CPU1._PDC] (Node f7010180), AE_ALREADY_EXISTS summary klog: HIGH Kernel message: [ 0.249860] ACPI Error (psparse-0537): Method parse/execution failed [_PR_.CPU2._OSC] (Node f7010270), AE_ALREADY_EXISTS summary klog: HIGH Kernel message: [ 0.249882] ACPI Error (psparse-0537): Method parse/execution failed [_PR_.CPU2._PDC] (Node f7010258), AE_ALREADY_EXISTS summary klog: HIGH Kernel message: [ 0.250005] ACPI Error: No handler for Region [EC__] (f4424bd0) [EmbeddedControl] (20110112/evregion-369) summary klog: HIGH Kernel message: [ 0.250012] ACPI Error: Region EmbeddedControl(0x3) has no handler (20110112/exfldio-292) summary klog: HIGH Kernel message: [ 0.250019] ACPI Error: Method parse/execution failed [_SB_.PCI0.SBRG.EC__._REG] (Node f4425bb8), AE_NOT_EXIST (20110112/psparse-536) summary klog: HIGH Kernel message: [ 0.250572] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0._OSC] (Node f7010e88), AE_ALREADY_EXISTS summary klog: HIGH Kernel message: [ 0.250864] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0._OSC] (Node f7013e58), AE_ALREADY_EXISTS summary klog: HIGH Kernel message: [ 0.250941] ACPI Error: Method parse/execution failed [_SB_.PCI0._OSC] (Node f4022e88), AE_ALREADY_EXISTS (20110112/psparse-536) summary klog: HIGH Kernel message: [ 0.250986] [Firmware Bug]: ACPI: BIOS _OSI(Linux) query honored via DMI summary klog: HIGH Kernel message: [ 0.254947] ACPI Error: Method parse/execution failed [_SB_.PCI0._OSC] (Node f3c22e88), AE_ALREADY_EXISTS (20110112/psparse-536) summary klog: HIGH Kernel message: [ 0.255884] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0._OSC] (Node f70142b8), AE_ALREADY_EXISTS summary klog: HIGH Kernel message: [ 0.262586] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0._OSC] (Node f701f390), AE_ALREADY_EXISTS summary klog: HIGH Kernel message: [ 0.262663] pci 0000:00:1f.0: [Firmware Bug]: TigerPoint LPC.BM_STS cleared summary klog: HIGH Kernel message: [ 0.264838] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0._OSC] (Node f701f2a0), AE_ALREADY_EXISTS summary klog: HIGH Kernel message: [ 0.265119] ACPI Error (psparse-0537): Method parse/execution failed [] (Node c08d5804), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 0.267893] ACPI Warning for _TZ_.TZ01._PSL: Return Package type mismatch at index 0 - found Processor, expected Reference (20090903/nspredef-1012) summary klog: HIGH Kernel message: [ 0.268093] ACPI Error (psparse-0537): Method parse/execution failed [] (Node c0927024), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 0.268171] ACPI Error (psparse-0537): Method parse/execution failed [] (Node c0927024), AE_ALREADY_EXISTS summary klog: HIGH Kernel message: [ 0.268458] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0._OSC] (Node f70142a0), AE_ALREADY_EXISTS summary klog: HIGH Kernel message: [ 0.269488] ACPI Error (psparse-0537): Method parse/execution failed [_PR_.CPU1.APCT] (Node ffff88007af30560), AE_NO_MEMORY summary klog: HIGH Kernel message: [ 0.269534] ACPI Error (psparse-0537): Method parse/execution failed [_PR_.CPU1.GCAP] (Node ffff88007af30540), AE_NO_MEMORY summary klog: HIGH Kernel message: [ 0.269576] ACPI Error (psparse-0537): Method parse/execution failed [_PR_.CPU1._PDC] (Node ffff88007af30500), AE_NO_MEMORY summary klog: HIGH Kernel message: [ 0.272427] ACPI Error: No handler for Region [SACS] (f71004d8) [PCI_Config] (20090903/evregion-319) summary klog: HIGH Kernel message: [ 0.272435] ACPI Error (psparse-0537): Method parse/execution failed [PRID.P_D0._STA] (Node f7102150), AE_NOT_EXIST summary klog: HIGH Kernel message: [ 0.272452] ACPI Error (uteval-0250): Method execution failed [PRID.P_D0._STA] (Node f7102150), AE_NOT_EXIST summary klog: HIGH Kernel message: [ 0.272469] ACPI Error (psparse-0537): Method parse/execution failed [PRID.P_D1._STA] (Node f71021f8), AE_NOT_EXIST summary klog: HIGH Kernel message: [ 0.272486] ACPI Error (uteval-0250): Method execution failed [PRID.P_D1._STA] (Node f71021f8), AE_NOT_EXIST summary klog: HIGH Kernel message: [ 0.272503] ACPI Error (psparse-0537): Method parse/execution failed [SECD.S_D0._STA] (Node f7102360), AE_NOT_EXIST summary klog: HIGH Kernel message: [ 0.272519] ACPI Error (uteval-0250): Method execution failed [SECD.S_D0._STA] (Node f7102360), AE_NOT_EXIST summary klog: HIGH Kernel message: [ 0.272536] ACPI Error (psparse-0537): Method parse/execution failed [SECD.S_D1._STA] (Node f7102408), AE_NOT_EXIST summary klog: HIGH Kernel message: [ 0.272552] ACPI Error (uteval-0250): Method execution failed [SECD.S_D1._STA] (Node f7102408), AE_NOT_EXIST summary klog: HIGH Kernel message: [ 0.284552] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.IDE1.GTM_] (Node f7014858), AE_AML_PACKAGE_LIMIT summary klog: HIGH Kernel message: [ 0.284566] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.IDE1.CHN1._GTM] (Node f7014798), AE_AML_PACKAGE_LIMIT summary klog: HIGH Kernel message: [ 0.285468] ACPI Error (psargs-0359): [_PR_.CPU0._PPC] Namespace lookup failure, AE_NOT_FOUND summary klog: HIGH Kernel message: [ 0.285476] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.ADP0.ADJP] (Node f7015b10), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 0.285546] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.ADP0._PSR] (Node f7015ae0), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 0.288591] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0._OSC] (Node f701fd50), AE_ALREADY_EXISTS summary klog: HIGH Kernel message: [ 0.288966] ACPI Error: Method parse/execution failed [_SB_.PCI0._OSC] (Node f34245b8), AE_NOT_FOUND (20110112/psparse-536) summary klog: HIGH Kernel message: [ 0.296149] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0._OSC] (Node f701eca8), AE_ALREADY_EXISTS summary klog: HIGH Kernel message: [ 0.296644] ACPI Error (psparse-0537): Method parse/execution failed [_SB_._OSC] (Node ffff88012fc16660), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 0.302946] ACPI Error (psargs-0359): [HPTF] Namespace lookup failure, AE_NOT_FOUND summary klog: HIGH Kernel message: [ 0.302952] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.HPET._STA] (Node ffff88007db32200), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 0.307009] ACPI Error: Method parse/execution failed [_SB_.PCI0._OSC] (Node f4c22e88), AE_ALREADY_EXISTS (20110112/psparse-536) summary klog: HIGH Kernel message: [ 0.307757] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.SATA.CHN0._GTM] (Node f74145a0), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 0.307837] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.SATA.CHN1._GTM] (Node f7414690), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 0.308151] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.SAT1.CHN0._GTM] (Node f7414cd8), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 0.308213] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.SAT1.CHN1._GTM] (Node f7414dc8), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 0.310609] ACPI Warning for _PR_.CPU1._PSS: SubPackage[8,9] - suspicious power dissipation values (20100428/nsrepair2-403) summary klog: HIGH Kernel message: [ 0.311025] ACPI Error: Method parse/execution failed [_SB_.PCI0._OSC] (Node f4c250d8), AE_ALREADY_EXISTS (20110112/psparse-536) summary klog: HIGH Kernel message: [ 0.311041] ACPI Error: Method parse/execution failed [_SB_.PCI0._OSC] (Node f54250d8), AE_ALREADY_EXISTS (20110112/psparse-536) summary klog: HIGH Kernel message: [ 0.311335] ACPI Warning for _PR_.CPU2._PSS: SubPackage[8,9] - suspicious power dissipation values (20100428/nsrepair2-403) summary klog: HIGH Kernel message: [ 0.311729] ACPI Error: Could not enable PowerButton event (20090903/evxfevnt-193) summary klog: HIGH Kernel message: [ 0.311932] ACPI Warning: Could not enable fixed event 2 (20090903/evxface-146) summary klog: HIGH Kernel message: [ 0.314451] ACPI Error (psparse-0537): Method parse/execution failed [] (Node ffffffff81a2b040), AE_ALREADY_EXISTS summary klog: HIGH Kernel message: [ 0.316816] ACPI Error: No handler for Region [ERAM] (ffff88007a733d80) [EmbeddedControl] (20110112/evregion-369) summary klog: HIGH Kernel message: [ 0.316829] ACPI Error: Method parse/execution failed [_SB_.HTEV] (Node ffff88007a730780), AE_NOT_EXIST (20110112/psparse-536) summary klog: HIGH Kernel message: [ 0.316839] ACPI Error: Method parse/execution failed [_SB_.PCI0.LPC0.EC0_._REG] (Node ffff88007a73a078), AE_NOT_EXIST (20110112/psparse-536) summary klog: HIGH Kernel message: [ 0.317427] ACPI Error (psparse-0537): Method parse/execution failed [_PR_.CPU1._PDC] (Node ffff88007d735160), AE_ALREADY_EXISTS summary klog: HIGH Kernel message: [ 0.321587] ACPI Error (psparse-0537): Method parse/execution failed [] (Node ffffffff81a12040), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 0.321722] ACPI Error: Needed type [Reference], found [Device] ffff88007552b900 (20100428/exresop-104) summary klog: HIGH Kernel message: [ 0.321740] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0._OSC] (Node ffff880075532ba0), AE_AML_OPERAND_TYPE summary klog: HIGH Kernel message: [ 0.322869] ACPI Error: No handler for Region [RAM_] (f7425690) [EmbeddedControl] (20110112/evregion-369) summary klog: HIGH Kernel message: [ 0.322886] ACPI Error: Method parse/execution failed [_SB_.PCI0.LPCB.SNC_.SBRT] (Node f7435228), AE_NOT_EXIST (20110112/psparse-536) summary klog: HIGH Kernel message: [ 0.322899] ACPI Error: Method parse/execution failed [_SB_.PCI0.LPCB.EC0_._REG] (Node f7428d98), AE_NOT_EXIST (20110112/psparse-536) summary klog: HIGH Kernel message: [ 0.323777] ACPI Warning: Package List length (0xC) larger than NumElements count (0x4), truncated summary klog: HIGH Kernel message: [ 0.325321] ACPI Error: No handler for Region [ERAM] (ffff88007d32bf78) [EmbeddedControl] (20090903/evregion-319) summary klog: HIGH Kernel message: [ 0.325334] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.LPCB.KBC0.SMWR] (Node ffff88007d32c8c0), AE_NOT_EXIST summary klog: HIGH Kernel message: [ 0.325357] ACPI Error (psparse-0537): Method parse/execution failed [_TZ_.THRM.SFAN] (Node ffff88007d328ec0), AE_NOT_EXIST summary klog: HIGH Kernel message: [ 0.325376] ACPI Error (psparse-0537): Method parse/execution failed [_TZ_.THRM.THCK] (Node ffff88007d328f40), AE_NOT_EXIST summary klog: HIGH Kernel message: [ 0.325396] ACPI Error (psparse-0537): Method parse/execution failed [_GPE._L02] (Node ffff88007d3289c0), AE_NOT_EXIST summary klog: HIGH Kernel message: [ 0.325630] ACPI Error: Could not enable SleepButton event (20100428/evxfevnt-202) summary klog: HIGH Kernel message: [ 0.325636] ACPI Warning: Could not enable fixed event 0x3 (20100428/evxface-146) summary klog: HIGH Kernel message: [ 0.329218] ACPI Warning for _SB_.PCI0._OSC: Return type mismatch - found Integer, expected Buffer (20090903/nspredef-1006) summary klog: HIGH Kernel message: [ 0.329373] ACPI Error (dsfield-0143): [CAPD] Namespace lookup failure, AE_ALREADY_EXISTS summary klog: HIGH Kernel message: [ 0.329378] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0._OSC] (Node ffff88012b63d760), AE_ALREADY_EXISTS summary klog: HIGH Kernel message: [ 0.330488] ACPI Error: No handler for Region [SACS] (ffff88011bf101f8) [PCI_Config] (20090903/evregion-319) summary klog: HIGH Kernel message: [ 0.330496] ACPI Error (psparse-0537): Method parse/execution failed [PRID.P_D0._STA] (Node ffff88011bf0d360), AE_NOT_EXIST summary klog: HIGH Kernel message: [ 0.330513] ACPI Error (uteval-0250): Method execution failed [PRID.P_D0._STA] (Node ffff88011bf0d360), AE_NOT_EXIST summary klog: HIGH Kernel message: [ 0.330528] ACPI Error (psparse-0537): Method parse/execution failed [PRID.P_D1._STA] (Node ffff88011bf0d460), AE_NOT_EXIST summary klog: HIGH Kernel message: [ 0.330545] ACPI Error (uteval-0250): Method execution failed [PRID.P_D1._STA] (Node ffff88011bf0d460), AE_NOT_EXIST summary klog: HIGH Kernel message: [ 0.330560] ACPI Error (psparse-0537): Method parse/execution failed [SECD.S_D0._STA] (Node ffff88011bf0d660), AE_NOT_EXIST summary klog: HIGH Kernel message: [ 0.330576] ACPI Error (uteval-0250): Method execution failed [SECD.S_D0._STA] (Node ffff88011bf0d660), AE_NOT_EXIST summary klog: HIGH Kernel message: [ 0.330590] ACPI Error (psparse-0537): Method parse/execution failed [SECD.S_D1._STA] (Node ffff88011bf0d760), AE_NOT_EXIST summary klog: HIGH Kernel message: [ 0.330606] ACPI Error (uteval-0250): Method execution failed [SECD.S_D1._STA] (Node ffff88011bf0d760), AE_NOT_EXIST summary klog: HIGH Kernel message: [ 0.330759] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0._OSC] (Node ffff88011763c000), AE_ALREADY_EXISTS summary klog: HIGH Kernel message: [ 0.331637] ACPI Error: Needed type [Reference], found [Device] ffff88014b82d820 (20090903/exresop-104) summary klog: HIGH Kernel message: [ 0.331653] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0._OSC] (Node ffff88014b83cac0), AE_AML_OPERAND_TYPE summary klog: HIGH Kernel message: [ 0.331820] ACPI Error: Needed type [Reference], found [Device] ffff8800379aa900 (20100428/exresop-104) summary klog: HIGH Kernel message: [ 0.331838] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0._OSC] (Node ffff8800379bbba0), AE_AML_OPERAND_TYPE summary klog: HIGH Kernel message: [ 0.332160] ACPI Error (dswload-0677): [PCI0] Namespace lookup failure, AE_NOT_FOUND summary klog: HIGH Kernel message: [ 0.332167] ACPI Error (psparse-0537): Method parse/execution failed [] (Node ffffffff81cf5eb0), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 0.333287] ACPI Error: No handler for Region [ERAM] (ffff8800bc638d80) [EmbeddedControl] (20090903/evregion-319) summary klog: HIGH Kernel message: [ 0.333300] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.HTEV] (Node ffff8800bc62e600), AE_NOT_EXIST summary klog: HIGH Kernel message: [ 0.333326] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.LPC0.EC0_._REG] (Node ffff8800bc63e9a0), AE_NOT_EXIST summary klog: HIGH Kernel message: [ 0.333559] ACPI Error: No handler for Region [ERAM] (ffff88007db2ad80) [EmbeddedControl] (20090903/evregion-319) summary klog: HIGH Kernel message: [ 0.333573] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.HTEV] (Node ffff88007db28600), AE_NOT_EXIST summary klog: HIGH Kernel message: [ 0.333601] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.LPC0.EC0_._REG] (Node ffff88007db309a0), AE_NOT_EXIST summary klog: HIGH Kernel message: [ 0.333734] ACPI Warning for _SB_.PCI0._OSC: Parameter count mismatch - ASL declared 5, ACPI requires 4 (20090903/nspredef-336) summary klog: HIGH Kernel message: [ 0.333765] ACPI Error (psargs-0359): [FZHD] Namespace lookup failure, AE_NOT_FOUND summary klog: HIGH Kernel message: [ 0.333771] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.SATA.CHN0._GTM] (Node f7014300), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 0.333853] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.SATA.CHN1._GTM] (Node f70143f0), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 0.334143] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.SAT1.CHN0._GTM] (Node f7014a38), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 0.334206] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.SAT1.CHN1._GTM] (Node f7014b28), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 0.335658] ACPI Error: No handler for Region [ECOR] (ffff88007af355e8) [EmbeddedControl] (20110413/evregion-373) summary klog: HIGH Kernel message: [ 0.335698] ACPI Error: Method parse/execution failed [_SB_.PCI0.SBRG.EC0_._REG] (Node ffff88007af36730), AE_NOT_EXIST (20110413/psparse-536) summary klog: HIGH Kernel message: [ 0.337513] ACPI Error: Method parse/execution failed [_SB_.PCI0._OSC] (Node f54243f0), AE_ALREADY_EXISTS (20110112/psparse-536) summary klog: HIGH Kernel message: [ 0.337662] ACPI Error (psargs-0359): [URES] Namespace lookup failure, AE_NOT_FOUND summary klog: HIGH Kernel message: [ 0.337662] ACPI Error (psparse-0537): Method parse/execution failed [_PSW] (Node f701f0a8), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 0.338155] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0._OSC] (Node ffff88021302db60), AE_ALREADY_EXISTS summary klog: HIGH Kernel message: [ 0.338440] ACPI Error: No handler for Region [SACS] (ffff88012bb0f1f8) [PCI_Config] (20090903/evregion-319) summary klog: HIGH Kernel message: [ 0.338717] ACPI Error (psparse-0537): Method parse/execution failed [PRID.P_D0._STA] (Node ffff88012bb111a0), AE_NOT_EXIST summary klog: HIGH Kernel message: [ 0.338905] ACPI Error (uteval-0250): Method execution failed [PRID.P_D0._STA] (Node ffff88012bb111a0), AE_NOT_EXIST summary klog: HIGH Kernel message: [ 0.339363] ACPI Error (psparse-0537): Method parse/execution failed [PRID.P_D1._STA] (Node ffff88012bb11280), AE_NOT_EXIST summary klog: HIGH Kernel message: [ 0.339551] ACPI Error (uteval-0250): Method execution failed [PRID.P_D1._STA] (Node ffff88012bb11280), AE_NOT_EXIST summary klog: HIGH Kernel message: [ 0.340003] ACPI Error (psparse-0537): Method parse/execution failed [SECD.S_D0._STA] (Node ffff88012bb11460), AE_NOT_EXIST summary klog: HIGH Kernel message: [ 0.340193] ACPI Error (uteval-0250): Method execution failed [SECD.S_D0._STA] (Node ffff88012bb11460), AE_NOT_EXIST summary klog: HIGH Kernel message: [ 0.340651] ACPI Error (psparse-0537): Method parse/execution failed [SECD.S_D1._STA] (Node ffff88012bb11540), AE_NOT_EXIST summary klog: HIGH Kernel message: [ 0.340838] ACPI Error (uteval-0250): Method execution failed [SECD.S_D1._STA] (Node ffff88012bb11540), AE_NOT_EXIST summary klog: HIGH Kernel message: [ 0.341759] ACPI Error: No handler for Region [RAM_] (f74212f8) [EmbeddedControl] (20100428/evregion-369) summary klog: HIGH Kernel message: [ 0.341812] ACPI Error (psparse-0537): Method parse/execution failed [_PR_.CPU1._OSC] (Node ffff88017bc14660), AE_ALREADY_EXISTS summary klog: HIGH Kernel message: [ 0.341843] ACPI Error (psparse-0537): Method parse/execution failed [_PR_.CPU1._PDC] (Node ffff88017bc14640), AE_ALREADY_EXISTS summary klog: HIGH Kernel message: [ 0.342116] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.LPCB.SNC_.SBRT] (Node f742f228), AE_NOT_EXIST summary klog: HIGH Kernel message: [ 0.342130] ACPI Error (psparse-0537): Method parse/execution failed [_PR_.CPU2._OSC] (Node ffff88017bc14780), AE_ALREADY_EXISTS summary klog: HIGH Kernel message: [ 0.342160] ACPI Error (psparse-0537): Method parse/execution failed [_PR_.CPU2._PDC] (Node ffff88017bc14760), AE_ALREADY_EXISTS summary klog: HIGH Kernel message: [ 0.342409] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.LPCB.EC0_._REG] (Node f7422d98), AE_NOT_EXIST summary klog: HIGH Kernel message: [ 0.347557] ACPI Warning for _TZ_.THRM._PSL: Return Package type mismatch at index 0 - found [NULL Object Descriptor], expected Reference (20100428/nspredef-1059) summary klog: HIGH Kernel message: [ 0.353198] ACPI Error: No handler for Region [ERAM] (ffff88013be53e10) [EmbeddedControl] (20090903/evregion-319) summary klog: HIGH Kernel message: [ 0.353215] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.SBRG.EC0_._REG] (Node ffff88013be520e0), AE_NOT_EXIST summary klog: HIGH Kernel message: [ 0.353401] ACPI Warning for _SB_.LATA._CRS: Return type mismatch - found Integer, expected Buffer (20090903/nspredef-1006) summary klog: HIGH Kernel message: [ 0.353406] ACPI Error (uteval-0307): Return object type is incorrect [_SB_.LATA._CRS] (Node ffff88006df2eb00), AE_TYPE summary klog: HIGH Kernel message: [ 0.353652] ACPI Error: Needed type [Reference], found [Device] ffff8800379a6800 (20090903/exresop-104) summary klog: HIGH Kernel message: [ 0.353652] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0._OSC] (Node ffff8800379bba80), AE_AML_OPERAND_TYPE summary klog: HIGH Kernel message: [ 0.355135] ACPI Error: Method parse/execution failed [_PR_.CPU0._PDC] (Node ffff88007a738ca8), AE_ALREADY_EXISTS (20110112/psparse-536) summary klog: HIGH Kernel message: [ 0.355798] ACPI Error: ACPI path has too many parent prefixes (^) - reached beyond root node (20090903/nsaccess-429) summary klog: HIGH Kernel message: [ 0.356001] ..MP-BIOS bug: 8254 timer not connected to IO-APIC summary klog: HIGH Kernel message: [ 0.356108] ACPI Error: No handler for Region [ECF2] (ffff88013ba313a8) [EmbeddedControl] (20090903/evregion-319) summary klog: HIGH Kernel message: [ 0.356113] ACPI Error: Region EmbeddedControl(3) has no handler (20090903/exfldio-295) summary klog: HIGH Kernel message: [ 0.356119] ACPI Error (psparse-0537): Method parse/execution failed [P8XH] (Node ffff88013ba28020), AE_NOT_EXIST summary klog: HIGH Kernel message: [ 0.356143] ACPI Error (psparse-0537): Method parse/execution failed [_GPE._L02] (Node ffff88013ba32120), AE_NOT_EXIST summary klog: HIGH Kernel message: [ 0.359183] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0._OSC] (Node f7021a68), AE_ALREADY_EXISTS summary klog: HIGH Kernel message: [ 0.361596] ACPI Error: ACPI path has too many parent prefixes (^) - reached beyond root node (20100428/nsaccess-429) summary klog: HIGH Kernel message: [ 0.362481] ACPI Error (psparse-0537): Method parse/execution failed [] (Node c091bffc), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 0.362557] ACPI Error (psparse-0537): Method parse/execution failed [] (Node c091bffc), AE_ALREADY_EXISTS summary klog: HIGH Kernel message: [ 0.362606] ACPI Error (dsfield-0487): [SMIC] Namespace lookup failure, AE_ALREADY_EXISTS summary klog: HIGH Kernel message: [ 0.362751] ACPI Error: Method parse/execution failed [_SB_.PCI0._OSC] (Node f40255d0), AE_ALREADY_EXISTS (20110112/psparse-536) summary klog: HIGH Kernel message: [ 0.362859] [Firmware Bug]: ACPI: BIOS _OSI(Linux) query honored via cmdline summary klog: HIGH Kernel message: [ 0.362870] ACPI Error (dsfield-0140): [CAPB] Namespace lookup failure, AE_ALREADY_EXISTS summary klog: HIGH Kernel message: [ 0.362886] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0._OSC] (Node f7014a80), AE_ALREADY_EXISTS summary klog: HIGH Kernel message: [ 0.363488] ACPI Error (psparse-0537): Method parse/execution failed [_PR_.CPU1._PDC] (Node ffff880227048f60), AE_ALREADY_EXISTS summary klog: HIGH Kernel message: [ 0.364356] ACPI Warning: For _SB_.PCI0.P2P_._PRT: Return Package has no elements (empty) (20110112/nspredef-456) summary klog: HIGH Kernel message: [ 0.364521] ACPI Error: Method parse/execution failed [_SB_.PCI0._OSC] (Node f44285b8), AE_ALREADY_EXISTS (20110413/psparse-536) summary klog: HIGH Kernel message: [ 0.372475] ACPI Error: Method parse/execution failed [_SB_.PCI0._OSC] (Node f5426ca8), AE_ALREADY_EXISTS (20110112/psparse-536) summary klog: HIGH Kernel message: [ 0.372684] ACPI Error: Method parse/execution failed [_SB_.PCI0._OSC] (Node dd825ca8), AE_ALREADY_EXISTS (20110112/psparse-536) summary klog: HIGH Kernel message: [ 0.375585] ACPI Error (dswload-0677): [USB0] Namespace lookup failure, AE_NOT_FOUND summary klog: HIGH Kernel message: [ 0.375609] ACPI Error (psparse-0537): Method parse/execution failed [] (Node c09fb6c8), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 0.375966] ACPI Error (psparse-0537): Method parse/execution failed [] (Node c0992f7c), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 0.376047] ACPI Error: Method parse/execution failed [_SB_.PCI0._OSC] (Node dd825ca8), AE_ALREADY_EXISTS (20110413/psparse-536) summary klog: HIGH Kernel message: [ 0.376092] ACPI Error: No handler for Region [ECXP] (ffff88007cf31ab0) [EmbeddedControl] (20100428/evregion-369) summary klog: HIGH Kernel message: [ 0.376106] ACPI Error (psparse-0537): Method parse/execution failed [_PR_.CPU0._OSC] (Node ffff88007cf3f440), AE_NOT_EXIST summary klog: HIGH Kernel message: [ 0.376141] ACPI Error (psparse-0537): Method parse/execution failed [_PR_.CPU0._PDC] (Node ffff88007cf3f420), AE_NOT_EXIST summary klog: HIGH Kernel message: [ 0.376733] ACPI Error: Method parse/execution failed [_SB_.PCI0._OSC] (Node f5026ca8), AE_ALREADY_EXISTS (20110112/psparse-536) summary klog: HIGH Kernel message: [ 0.381039] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0._OSC] (Node f7016a38), AE_ALREADY_EXISTS summary klog: HIGH Kernel message: [ 0.382740] ACPI Error (psparse-0537): Method parse/execution failed [_SB_._OSC] (Node ffff88003f013ca0), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 0.384722] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.HPET._CRS] (Node ffff88007db32220), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 0.384811] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.RTC_._CRS] (Node ffff88007db322c0), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 0.390341] ACPI Error: [GUR_._BAS] Namespace lookup failure, AE_NOT_FOUND (20110112/psargs-359) summary klog: HIGH Kernel message: [ 0.390354] ACPI Error: Method parse/execution failed [_SB_.PCI0.MBIO._CRS] (Node ffff880078f30aa0), AE_NOT_FOUND (20110112/psparse-536) summary klog: HIGH Kernel message: [ 0.393086] ACPI Warning: For _TZ_.THRM._PSL: Return Package has no elements (empty) (20110413/nspredef-456) summary klog: HIGH Kernel message: [ 0.395834] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0._OSC] (Node ffff88013ba393a0), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 0.399990] ACPI Error: Field [ASSM] at 524320 exceeds Buffer [BUF0] size 688 (bits) (20110112/dsopcode-597) summary klog: HIGH Kernel message: [ 0.399996] ACPI Error: Method parse/execution failed [_SB_.MEM_._CRS] (Node ffff8800b8e38000), AE_AML_BUFFER_LIMIT (20110112/psparse-536) summary klog: HIGH Kernel message: [ 0.400012] ACPI Error: Method execution failed [_SB_.MEM_._CRS] (Node ffff8800b8e38000), AE_AML_BUFFER_LIMIT (20110112/uteval-103) summary klog: HIGH Kernel message: [ 0.406016] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.ADP0.ADJP] (Node ffff88013ba3c5a0), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 0.406038] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.ADP0._PSR] (Node ffff88013ba3c560), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 0.408529] ACPI Error: Method parse/execution failed [_SB_.PCI0._OSC] (Node f4c285b8), AE_ALREADY_EXISTS (20110112/psparse-536) summary klog: HIGH Kernel message: [ 0.415975] ACPI Warning for _TZ_.THRM._PSL: Return Package type mismatch at index 0 - found [NULL Object Descriptor], expected Reference (20090903/nspredef-1012) summary klog: HIGH Kernel message: [ 0.420210] ACPI Error: [CAPD] Namespace lookup failure, AE_ALREADY_EXISTS (20110413/dsfield-143) summary klog: HIGH Kernel message: [ 0.420218] ACPI Error: Method parse/execution failed [_SB_.PCI0._OSC] (Node ffff88022b749b18), AE_ALREADY_EXISTS (20110413/psparse-536) summary klog: HIGH Kernel message: [ 0.420241] ACPI Error: Field [I9MN] at 544 exceeds Buffer [IORT] size 464 (bits) (20100428/dsopcode-597) summary klog: HIGH Kernel message: [ 0.420248] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.LPC0.PMIO._CRS] (Node ffff88013142fac0), AE_AML_BUFFER_LIMIT summary klog: HIGH Kernel message: [ 0.420284] ACPI Error (uteval-0250): Method execution failed [_SB_.PCI0.LPC0.PMIO._CRS] (Node ffff88013142fac0), AE_AML_BUFFER_LIMIT summary klog: HIGH Kernel message: [ 0.422032] ACPI Warning (dsobject-0501): Package List length (6) larger than NumElements count (3), truncated summary klog: HIGH Kernel message: [ 0.424909] ACPI Warning for _SB_.PCI0.P2P_._PRT: Return Package has no elements (empty) (20100428/nspredef-456) summary klog: HIGH Kernel message: [ 0.426823] ACPI Error (psargs-0359): [_PR_.CPU0._PSS] Namespace lookup failure, AE_NOT_FOUND summary klog: HIGH Kernel message: [ 0.426833] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.AC__.ADJP] (Node ffff88007b32ee00), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 0.426872] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.AC__._PSR] (Node ffff88007b32edc0), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 0.429245] ACPI Warning for _PR_.CPU0._TSD: Incorrectly formed Package, attempting repair (20090903/nsrepair-200) summary klog: HIGH Kernel message: [ 0.430887] ACPI Warning for _PR_.CPU1._TSD: Incorrectly formed Package, attempting repair (20090903/nsrepair-200) summary klog: HIGH Kernel message: [ 0.436921] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0._OSC] (Node ffff88013b62ccc0), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 0.440405] ACPI Warning for _SB_.PCI0._OSC: Parameter count mismatch - ASL declared 5, ACPI requires 4 (20100428/nspredef-352) summary klog: HIGH Kernel message: [ 0.444897] ACPI Error: Method parse/execution failed [_SB_.PCI0._OSC] (Node f4c252a0), AE_ALREADY_EXISTS (20110112/psparse-536) summary klog: HIGH Kernel message: [ 0.450562] ACPI Error: Method parse/execution failed [_SB_.PCI0._OSC] (Node ffff8800b8e33ca8), AE_NOT_FOUND (20110112/psparse-536) summary klog: HIGH Kernel message: [ 0.451517] ACPI Error (psargs-0359): [GUR_._BAS] Namespace lookup failure, AE_NOT_FOUND summary klog: HIGH Kernel message: [ 0.451682] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.MBIO._CRS] (Node ffff88007bb2a880), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 0.453111] ACPI Warning for _SB_.BAT1._BIF: Return Package type mismatch at index 12 - found Integer, expected String/Buffer (20090903/nspredef-1012) summary klog: HIGH Kernel message: [ 0.454555] ACPI Warning for _PR_.CPU0._PSS: Return Package type mismatch at index 3 - found Integer, expected Package (20100428/nspredef-1059) summary klog: HIGH Kernel message: [ 0.454838] ACPI Warning for _PR_.CPU1._PSS: Return Package type mismatch at index 3 - found Integer, expected Package (20100428/nspredef-1059) summary klog: HIGH Kernel message: [ 0.460622] ACPI Warning: For _SB_.PCI0.P32_._PRT: Return Package has no elements (empty) (20110112/nspredef-456) summary klog: HIGH Kernel message: [ 0.461767] ACPI Error: [CAPB] Namespace lookup failure, AE_ALREADY_EXISTS (20110413/dsfield-143) summary klog: HIGH Kernel message: [ 0.461793] ACPI Error: Method parse/execution failed [_SB_.PCI0._OSC] (Node ffff88003cdb0f00), AE_ALREADY_EXISTS (20110413/psparse-536) summary klog: HIGH Kernel message: [ 0.468216] ACPI Error (psparse-0537): Method parse/execution failed [_PR_.CPU1._CST] (Node ffff88007c5cc380), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 0.468859] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0._OSC] (Node ffff88003f1afdc0), AE_ALREADY_EXISTS summary klog: HIGH Kernel message: [ 0.475076] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.SATA.CHN0._GTM] (Node f701eb28), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 0.475159] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.SATA.CHN1._GTM] (Node f701ec18), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 0.475441] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.SAT1.CHN0._GTM] (Node f70202a0), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 0.475506] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.SAT1.CHN1._GTM] (Node f7020390), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 0.479821] ACPI Error: Method parse/execution failed [_SB_.PCI0._OSC] (Node f3c28a68), AE_ALREADY_EXISTS (20110413/psparse-536) summary klog: HIGH Kernel message: [ 0.481067] ACPI Error: Method parse/execution failed [_SB_.PCI0._OSC] (Node f4028a68), AE_ALREADY_EXISTS (20110112/psparse-536) summary klog: HIGH Kernel message: [ 0.482955] ACPI Error: Method parse/execution failed [_SB_.PCI0._OSC] (Node ffff88003d9b0f00), AE_ALREADY_EXISTS (20110112/psparse-536) summary klog: HIGH Kernel message: [ 0.484974] ACPI Error: Method parse/execution failed [_SB_.PCI0._OSC] (Node f3c28a68), AE_ALREADY_EXISTS (20110112/psparse-536) summary klog: HIGH Kernel message: [ 0.485955] ACPI Warning: For _TZ_.THRM._PSL: Return Package type mismatch at index 0 - found [NULL Object Descriptor], expected Reference (20110112/nspredef-1059) summary klog: HIGH Kernel message: [ 0.490491] ACPI Warning: For _SB_.PCI0._OSC: Parameter count mismatch - ASL declared 5, ACPI requires 4 (20110413/nspredef-352) summary klog: HIGH Kernel message: [ 0.492569] ACPI Error (psparse-0537): Method parse/execution failed [] (Node ffffffff81a08440), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 0.492648] ACPI Error (dswload-0781): [PRID] Namespace lookup failure, AE_ALREADY_EXISTS summary klog: HIGH Kernel message: [ 0.492655] ACPI Error (psparse-0537): Method parse/execution failed [] (Node ffffffff81a08440), AE_ALREADY_EXISTS summary klog: HIGH Kernel message: [ 0.492811] ACPI Error: Method parse/execution failed [_SB_.PCI0._OSC] (Node f5428a68), AE_ALREADY_EXISTS (20110112/psparse-536) summary klog: HIGH Kernel message: [ 0.497662] ACPI Warning (nspredef-0357): _SB_.PCI0.P2P_._PRT: Return Package has no elements (empty) [20080926] summary klog: HIGH Kernel message: [ 0.500043] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.LPC0.EC0_._REG] (Node ffff8800ac22d040), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 0.501138] ACPI Error: Method parse/execution failed [_SB_.PCI0._OSC] (Node f3c28a38), AE_ALREADY_EXISTS (20110112/psparse-536) summary klog: HIGH Kernel message: [ 0.505041] ACPI Error: Method parse/execution failed [_SB_.PCI0._OSC] (Node f4028a38), AE_ALREADY_EXISTS (20110112/psparse-536) summary klog: HIGH Kernel message: [ 0.513609] ACPI Error: Method parse/execution failed [_SB_.PCI0._OSC] (Node f5428a38), AE_ALREADY_EXISTS (20110112/psparse-536) summary klog: HIGH Kernel message: [ 0.516158] ACPI Error: Method parse/execution failed [_SB_.PCI0._OSC] (Node f74296c0), AE_ALREADY_EXISTS (20110112/psparse-536) summary klog: HIGH Kernel message: [ 0.527455] ACPI Error: Method parse/execution failed [_SB_.PCI0._OSC] (Node f5422df8), AE_ALREADY_EXISTS (20110112/psparse-536) summary klog: HIGH Kernel message: [ 0.533028] ACPI Error: Method parse/execution failed [_SB_.PCI0._OSC] (Node ffff88003d9b0bb8), AE_ALREADY_EXISTS (20110112/psparse-536) summary klog: HIGH Kernel message: [ 0.539131] ACPI Error: No handler for Region [RAM_] (ffff88012fa36a20) [EmbeddedControl] (20110112/evregion-369) summary klog: HIGH Kernel message: [ 0.539149] ACPI Error: Method parse/execution failed [_SB_.PCI0.LPCB.SNC_.SBRT] (Node ffff88012fa4f398), AE_NOT_EXIST (20110112/psparse-536) summary klog: HIGH Kernel message: [ 0.539161] ACPI Error: Method parse/execution failed [_SB_.PCI0.LPCB.EC0_._REG] (Node ffff88012fa396b8), AE_NOT_EXIST (20110112/psparse-536) summary klog: HIGH Kernel message: [ 0.540036] ACPI Error: [_PR_.C002._PPC] Namespace lookup failure, AE_NOT_FOUND (20110112/psargs-359) summary klog: HIGH Kernel message: [ 0.540046] ACPI Error: Method parse/execution failed [_SB_.PCI0.LPC0.EC0_._REG] (Node ffff880107e623c0), AE_NOT_FOUND (20110112/psparse-536) summary klog: HIGH Kernel message: [ 0.541238] ACPI Error: Method parse/execution failed [_TZ_.C2E8] (Node f482d108), AE_AML_PACKAGE_LIMIT (20110112/psparse-536) summary klog: HIGH Kernel message: [ 0.541258] ACPI Error: Method parse/execution failed [_TZ_.C2E7] (Node f482d0f0), AE_AML_PACKAGE_LIMIT (20110112/psparse-536) summary klog: HIGH Kernel message: [ 0.541277] ACPI Error: Method parse/execution failed [_TZ_.TZ2_._TMP] (Node f482d7c8), AE_AML_PACKAGE_LIMIT (20110112/psparse-536) summary klog: HIGH Kernel message: [ 0.563415] ACPI Error: Method parse/execution failed [_SB_.PCI0._OSC] (Node ffff88003d9af848), AE_ALREADY_EXISTS (20110112/psparse-536) summary klog: HIGH Kernel message: [ 0.566332] ACPI Warning: For _TZ_.THRM._AL0: Return Package has no elements (empty) (20110413/nspredef-456) summary klog: HIGH Kernel message: [ 0.583718] ACPI Warning: _SB_.PCI0.PCI2._PRT: Return Package has no elements (empty) 20090521 nspredef-434 summary klog: HIGH Kernel message: [ 0.591722] ACPI Error: Field [ASSM] at 524320 exceeds Buffer [BUF0] size 880 (bits) (20100428/dsopcode-597) summary klog: HIGH Kernel message: [ 0.591729] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.MEM_._CRS] (Node ffff8800b4040f60), AE_AML_BUFFER_LIMIT summary klog: HIGH Kernel message: [ 0.591760] ACPI Error (uteval-0250): Method execution failed [_SB_.MEM_._CRS] (Node ffff8800b4040f60), AE_AML_BUFFER_LIMIT summary klog: HIGH Kernel message: [ 0.593045] ACPI Error (psparse-0537): Method parse/execution failed [_PR_.PPCE] (Node f702c7b0), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 0.593072] ACPI Error (psparse-0537): Method parse/execution failed [EV4_] (Node f7019648), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 0.593095] ACPI Error (psparse-0537): Method parse/execution failed [SMIE] (Node f702ea08), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 0.593119] ACPI Error (psparse-0537): Method parse/execution failed [NEVT] (Node f702e9c0), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 0.593142] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.LPCB.ECDV._Q66] (Node f702e678), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 0.597675] ACPI Warning for _SB_.PCI0.LPC_.EC__.BAT0._BIF: Converted Buffer to expected String at index 9 (20090903/nsrepair-132) summary klog: HIGH Kernel message: [ 0.597680] ACPI Warning for _SB_.PCI0.LPC_.EC__.BAT0._BIF: Converted Buffer to expected String at index 10 (20090903/nsrepair-132) summary klog: HIGH Kernel message: [ 0.597685] ACPI Warning for _SB_.PCI0.LPC_.EC__.BAT0._BIF: Converted Buffer to expected String at index 11 (20090903/nsrepair-132) summary klog: HIGH Kernel message: [ 0.597689] ACPI Warning for _SB_.PCI0.LPC_.EC__.BAT0._BIF: Converted Buffer to expected String at index 12 (20090903/nsrepair-132) summary klog: HIGH Kernel message: [ 0.600451] ACPI Error (psargs-0359): [_SB_.PCI0.EGBA] Namespace lookup failure, AE_NOT_FOUND summary klog: HIGH Kernel message: [ 0.600456] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.LPC_.MBRD._CRS] (Node f7416318), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 0.612793] ACPI Error: [CAPB] Namespace lookup failure, AE_ALREADY_EXISTS (20110112/dsfield-143) summary klog: HIGH Kernel message: [ 0.612820] ACPI Error: Method parse/execution failed [_SB_.PCI0._OSC] (Node ffff88003d9ae190), AE_ALREADY_EXISTS (20110112/psparse-536) summary klog: HIGH Kernel message: [ 0.620955] ACPI Warning for _TZ_.THRM._PSL: Return Package type mismatch at index 0 - found Processor, expected Reference (20090903/nspredef-1012) summary klog: HIGH Kernel message: [ 0.621415] ACPI Error (psparse-0537): Method parse/execution failed [_PR_.PPCE] (Node f702c828), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 0.621443] ACPI Error (psparse-0537): Method parse/execution failed [EV4_] (Node f7019ed0), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 0.621468] ACPI Error (psparse-0537): Method parse/execution failed [SMIE] (Node f702ea98), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 0.621493] ACPI Error (psparse-0537): Method parse/execution failed [NEVT] (Node f702ea50), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 0.621518] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.LPCB.ECDV._Q66] (Node f702e708), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 0.627242] ACPI Error (psargs-0359): [_SB_.PCI0.EC__.HOTT] Namespace lookup failure, AE_NOT_FOUND summary klog: HIGH Kernel message: [ 0.627255] ACPI Error (psparse-0537): Method parse/execution failed [_TZ_.TZ01._HOT] (Node ffff88013ba3ae60), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 0.628687] [Firmware Bug]: ERST: ERST table is invalid summary klog: HIGH Kernel message: [ 0.630258] ACPI Error: Method parse/execution failed [_SB_.PCI0._OSC] (Node ffff88007af370a0), AE_ALREADY_EXISTS (20110112/psparse-536) summary klog: HIGH Kernel message: [ 0.651383] ACPI Error (psparse-0537): Method parse/execution failed [_SB_._OSC] (Node ffff88007f416680), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 0.652133] ACPI Error (psparse-0537): Method parse/execution failed [] (Node ffffffff81a2e040), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 0.652695] ACPI Error (psparse-0537): Method parse/execution failed [] (Node ffffffff81a0f040), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 0.653163] ACPI Error: Method parse/execution failed [_SB_.PCI0._OSC] (Node ffff88007ab2f460), AE_ALREADY_EXISTS (20110112/psparse-536) summary klog: HIGH Kernel message: [ 0.654642] ACPI Error: Method parse/execution failed [_PR_.CPU1._PDC] (Node ffff88020f44deb0), AE_ALREADY_EXISTS (20110112/psparse-536) summary klog: HIGH Kernel message: [ 0.654994] ACPI Error: Method parse/execution failed [_PR_.CPU2._PDC] (Node ffff88020f44df50), AE_ALREADY_EXISTS (20110112/psparse-536) summary klog: HIGH Kernel message: [ 0.655350] ACPI Error: Method parse/execution failed [_PR_.CPU3._PDC] (Node ffff88020f454000), AE_ALREADY_EXISTS (20110112/psparse-536) summary klog: HIGH Kernel message: [ 0.655369] ACPI Error (psargs-0359): [_SB_.PCI0.PSKB] Namespace lookup failure, AE_NOT_FOUND summary klog: HIGH Kernel message: [ 0.655376] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.LPC0.SIO_.KBC0._STA] (Node ffff880236c47260), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 0.655576] ACPI Error (psargs-0359): [_SB_.PCI0.PSMS] Namespace lookup failure, AE_NOT_FOUND summary klog: HIGH Kernel message: [ 0.655581] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.LPC0.SIO_.MSE0._STA] (Node ffff880236c47340), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 0.658002] ACPI Warning for _SB_.PCI0.SATA.PRT0._GTF: Return type mismatch - found Integer, expected Buffer (20090903/nspredef-1006) summary klog: HIGH Kernel message: [ 0.658697] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0._OSC] (Node ffff88023fc14aa0), AE_ALREADY_EXISTS summary klog: HIGH Kernel message: [ 0.662008] ACPI Error (psparse-0537): Method parse/execution failed [] (Node ffffffff81a0c440), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 0.674920] ACPI Error: [SERN] Namespace lookup failure, AE_ALREADY_EXISTS (20110413/dswload2-316) summary klog: HIGH Kernel message: [ 0.674938] ACPI Error: Method parse/execution failed [_SB_.PCI0.LPC_.EC__.GBIF] (Node f3829120), AE_ALREADY_EXISTS (20110413/psparse-536) summary klog: HIGH Kernel message: [ 0.674963] ACPI Error: Method parse/execution failed [_SB_.PCI0.LPC_.EC__.BAT1._BIF] (Node f3829330), AE_ALREADY_EXISTS (20110413/psparse-536) summary klog: HIGH Kernel message: [ 0.677370] ACPI Warning for _SB_.PCI0.BAT0._BIF: Converted Buffer to expected String at index 9 (20090903/nsrepair-132) summary klog: HIGH Kernel message: [ 0.677375] ACPI Warning for _SB_.PCI0.BAT0._BIF: Converted Buffer to expected String at index 12 (20090903/nsrepair-132) summary klog: HIGH Kernel message: [ 0.695029] ACPI Error (psparse-0537): Method parse/execution failed [] (Node ffffffff81a0e440), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 0.710267] ACPI Error: Method parse/execution failed [_TZ_.PSWT] (Node f7424bb8), AE_AML_PACKAGE_LIMIT (20110112/psparse-536) summary klog: HIGH Kernel message: [ 0.710275] ACPI Error: Method parse/execution failed [_TZ_.GTTP] (Node f7424b88), AE_AML_PACKAGE_LIMIT (20110112/psparse-536) summary klog: HIGH Kernel message: [ 0.710281] ACPI Error: Method parse/execution failed [_TZ_.GFXZ._TMP] (Node f74249a8), AE_AML_PACKAGE_LIMIT (20110112/psparse-536) summary klog: HIGH Kernel message: [ 0.712727] ACPI Error: Method parse/execution failed [_TZ_.DTSZ._TMP] (Node f7424ca8), AE_AML_PACKAGE_LIMIT (20110112/psparse-536) summary klog: HIGH Kernel message: [ 0.721822] ACPI Error (dswload-0659): [USB0] Namespace lookup failure, AE_NOT_FOUND summary klog: HIGH Kernel message: [ 0.722199] ACPI Error (psparse-0537): Method parse/execution failed [] (Node ffffffff81a4d180), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 0.725417] ACPI Warning for _SB_.PCI0.LPC_.SYSR._CRS: Return type mismatch - found Integer, expected Buffer (20090903/nspredef-1006) summary klog: HIGH Kernel message: [ 0.725429] ACPI Error (uteval-0307): Return object type is incorrect [_SB_.PCI0.LPC_.SYSR._CRS] (Node ffff88013ba46cc0), AE_TYPE summary klog: HIGH Kernel message: [ 0.725450] ACPI Error: Type returned from _CRS was incorrect: Integer, expected Btypes: 4 (20090903/uteval-313) summary klog: HIGH Kernel message: [ 0.736425] ACPI Warning: For _SB_.PCI0.PT02._PRT: Return Package has no elements (empty) (20110413/nspredef-456) summary klog: HIGH Kernel message: [ 0.743273] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0._OSC] (Node f701f0d8), AE_ALREADY_EXISTS summary klog: HIGH Kernel message: [ 0.743525] ACPI Error: [CAPD] Namespace lookup failure, AE_ALREADY_EXISTS (20110112/dsfield-143) summary klog: HIGH Kernel message: [ 0.743530] ACPI Error: Method parse/execution failed [_SB_.PCI0._OSC] (Node f50273d8), AE_ALREADY_EXISTS (20110112/psparse-536) summary klog: HIGH Kernel message: [ 0.743538] ACPI Warning: For _SB_.PCI0._OSC: Parameter count mismatch - ASL declared 5, ACPI requires 4 (20110112/nspredef-352) summary klog: HIGH Kernel message: [ 0.744106] ACPI Error: Field [ASSM] at 524320 exceeds Buffer [BUF0] size 880 (bits) (20090903/dsopcode-596) summary klog: HIGH Kernel message: [ 0.744114] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.MEM_._CRS] (Node ffff88013ba44cc0), AE_AML_BUFFER_LIMIT summary klog: HIGH Kernel message: [ 0.744142] ACPI Error (uteval-0250): Method execution failed [_SB_.MEM_._CRS] (Node ffff88013ba44cc0), AE_AML_BUFFER_LIMIT summary klog: HIGH Kernel message: [ 0.772223] ACPI Error: Method parse/execution failed [_SB_.PCI0._OSC] (Node f4c250d8), AE_ALREADY_EXISTS (20101013/psparse-537) summary klog: HIGH Kernel message: [ 0.782613] ACPI Error (psargs-0359): [RAMB] Namespace lookup failure, AE_NOT_FOUND summary klog: HIGH Kernel message: [ 0.790513] ACPI Error: Method parse/execution failed [_SB_.PCI0.LPC_.EC__.GBIF] (Node ffff880079f39f78), AE_ALREADY_EXISTS (20110112/psparse-536) summary klog: HIGH Kernel message: [ 0.790526] ACPI Error: Method parse/execution failed [_SB_.PCI0.LPC_.EC__.BAT0._BIF] (Node ffff880079f37118), AE_ALREADY_EXISTS (20110112/psparse-536) summary klog: HIGH Kernel message: [ 0.794367] ACPI Warning for _PR_.P002._PSD: Return type mismatch - found Integer, expected Package (20090903/nspredef-1006) summary klog: HIGH Kernel message: [ 0.810687] ACPI Error (dswload-0659): [DD02] Namespace lookup failure, AE_NOT_FOUND summary klog: HIGH Kernel message: [ 0.810756] ACPI Error (dswload-0659): [EHC1] Namespace lookup failure, AE_NOT_FOUND summary klog: HIGH Kernel message: [ 0.820565] ACPI Error: [FZHD] Namespace lookup failure, AE_NOT_FOUND (20110112/psargs-359) summary klog: HIGH Kernel message: [ 0.820571] ACPI Error: Method parse/execution failed [_SB_.PCI0.SATA.CHN0._GTM] (Node ffff880127632b40), AE_NOT_FOUND (20110112/psparse-536) summary klog: HIGH Kernel message: [ 0.820632] ACPI Error: Method parse/execution failed [_SB_.PCI0.SATA.CHN1._GTM] (Node ffff880127632cd0), AE_NOT_FOUND (20110112/psparse-536) summary klog: HIGH Kernel message: [ 0.821065] ACPI Error: Method parse/execution failed [_SB_.PCI0.SAT1.CHN0._GTM] (Node ffff880127634758), AE_NOT_FOUND (20110112/psparse-536) summary klog: HIGH Kernel message: [ 0.821112] ACPI Error: Method parse/execution failed [_SB_.PCI0.SAT1.CHN1._GTM] (Node ffff8801276348e8), AE_NOT_FOUND (20110112/psparse-536) summary klog: HIGH Kernel message: [ 0.822836] ACPI Warning: For _SB_.PCI0.PCI2._PRT: Return Package has no elements (empty) (20110112/nspredef-456) summary klog: HIGH Kernel message: [ 0.860349] ACPI Error (psparse-0537): Method parse/execution failed [_PR_.PPCE] (Node ffff88023704ea40), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 0.860380] ACPI Error (psparse-0537): Method parse/execution failed [EV4_] (Node ffff8802370590e0), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 0.860410] ACPI Error (psparse-0537): Method parse/execution failed [SMIE] (Node ffff8802370522a0), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 0.860439] ACPI Error (psparse-0537): Method parse/execution failed [NEVT] (Node ffff880237052240), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 0.860468] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.LPCB.ECDV._Q66] (Node ffff880237050de0), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 0.870147] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0._OSC] (Node ffff88013ba29e80), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 0.873454] ACPI Warning for _SB_.PCI0.PCIB._PRT: Return Package has no elements (empty) (20090903/nspredef-433) summary klog: HIGH Kernel message: [ 0.879606] ACPI Error (psargs-0359): [MPEN] Namespace lookup failure, AE_NOT_FOUND summary klog: HIGH Kernel message: [ 0.879794] ACPI Error (psparse-0537): Method parse/execution failed [_TZ_.TZ00._PSL] (Node ffff88015ba4de00), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 0.888177] ACPI Warning for _SB_.BAT1._BST: Return Package type mismatch at index 2 - found [NULL Object Descriptor], expected Integer (20090903/nspredef-1012) summary klog: HIGH Kernel message: [ 0.890080] ACPI Error: No handler for Region [RAM_] (ffff880133a35a20) [EmbeddedControl] (20100428/evregion-369) summary klog: HIGH Kernel message: [ 0.890253] ACPI Error: Region EmbeddedControl(0x3) has no handler (20100428/exfldio-293) summary klog: HIGH Kernel message: [ 0.890421] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.LPCB.SNC_.SBRT] (Node ffff880133a49620), AE_NOT_EXIST summary klog: HIGH Kernel message: [ 0.890696] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.LPCB.EC0_._REG] (Node ffff880133a385e0), AE_NOT_EXIST summary klog: HIGH Kernel message: [ 0.892097] ACPI Error (psparse-0537): Method parse/execution failed [_PR_.PPCE] (Node ffff88021704e920), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 0.892124] ACPI Error (psparse-0537): Method parse/execution failed [EV4_] (Node ffff880217056700), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 0.892147] ACPI Error (psparse-0537): Method parse/execution failed [SMIE] (Node ffff880217052180), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 0.892171] ACPI Error (psparse-0537): Method parse/execution failed [NEVT] (Node ffff880217052120), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 0.892195] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.LPCB.ECDV._Q66] (Node ffff880217050cc0), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 0.900692] ACPI Error (psparse-0537): Method parse/execution failed [_PR_.PPCE] (Node ffff88021704e960), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 0.900729] ACPI Error (psparse-0537): Method parse/execution failed [EV4_] (Node ffff880217059000), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 0.900753] ACPI Error (psparse-0537): Method parse/execution failed [SMIE] (Node ffff8802170521c0), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 0.900776] ACPI Error (psparse-0537): Method parse/execution failed [NEVT] (Node ffff880217052160), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 0.900801] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.LPCB.ECDV._Q66] (Node ffff880217050d00), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 0.905032] ACPI Error (psparse-0537): Method parse/execution failed [_PR_.PPCE] (Node ffff88021304e940), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 0.905061] ACPI Error (psparse-0537): Method parse/execution failed [EV4_] (Node ffff8802130576a0), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 0.905085] ACPI Error (psparse-0537): Method parse/execution failed [SMIE] (Node ffff8802130521a0), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 0.905110] ACPI Error (psparse-0537): Method parse/execution failed [NEVT] (Node ffff880213052140), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 0.905135] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.LPCB.ECDV._Q66] (Node ffff880213050ce0), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 0.905920] ACPI Error (psparse-0537): Method parse/execution failed [_PR_.C000.C264] (Node f7024e58), AE_AML_PACKAGE_LIMIT summary klog: HIGH Kernel message: [ 0.905985] ACPI Error (psparse-0537): Method parse/execution failed [_PR_.C000._PSS] (Node f7024f30), AE_AML_PACKAGE_LIMIT summary klog: HIGH Kernel message: [ 0.906063] [Firmware Bug]: BIOS needs update for CPU frequency support summary klog: HIGH Kernel message: [ 0.940948] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0._OSC] (Node f7421fc0), AE_ALREADY_EXISTS summary klog: HIGH Kernel message: [ 0.944156] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.ACAD._PSR] (Node ffff88013384d720), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 0.967528] ACPI Warning for _TZ_.THRM._AL0: Return Package has no elements (empty) (20100428/nspredef-456) summary klog: HIGH Kernel message: [ 0.990917] ACPI Warning for _SB_.PCI0.FNC2.PRT0._GTF: Return type mismatch - found Integer, expected Buffer (20090903/nspredef-1006) summary klog: HIGH Kernel message: [ 0.991675] ACPI Warning for _SB_.PCI0.FNC2.PRT1._GTF: Return type mismatch - found Integer, expected Buffer (20090903/nspredef-1006) summary klog: HIGH Kernel message: [ 0.992685] ACPI Error (psparse-0537): Method parse/execution failed [] (Node ffffffff81cf6eb0), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 1.004972] ACPI Error (psparse-0537): Method parse/execution failed [CPUT] (Node f701c150), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 1.005015] ACPI Error (psparse-0537): Method parse/execution failed [PSSC] (Node f701c168), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 1.005055] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.LPCB.EC0_._REG] (Node f702f3c0), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 1.009421] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.ACAD._PSR] (Node f701aa98), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 1.020868] ACPI Warning for _PR_.CPU0._PSD: Incorrectly formed Package, attempting repair (20090903/nsrepair-200) summary klog: HIGH Kernel message: [ 1.021557] ACPI Warning for _PR_.CPU1._PSD: Incorrectly formed Package, attempting repair (20090903/nsrepair-200) summary klog: HIGH Kernel message: [ 1.026272] ACPI Warning (processor_throttling-0843): Invalid throttling state, reset summary klog: HIGH Kernel message: [ 1.027573] ACPI Error: No handler for Region [ERAM] (ffff880133e3e798) [EmbeddedControl] (20090903/evregion-319) summary klog: HIGH Kernel message: [ 1.027587] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.DOCK._STA] (Node ffff880133e48620), AE_NOT_EXIST summary klog: HIGH Kernel message: [ 1.027653] ACPI Error (uteval-0250): Method execution failed [_SB_.PCI0.DOCK._STA] (Node ffff880133e48620), AE_NOT_EXIST summary klog: HIGH Kernel message: [ 1.158298] ACPI Error (psparse-0537): Method parse/execution failed [_SB_._OSC] (Node f701b648), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 1.167050] ACPI Error: [CDW1] Namespace lookup failure, AE_NOT_FOUND (20110316/psargs-359) summary klog: HIGH Kernel message: [ 1.167226] ACPI Error: Method parse/execution failed [_SB_._OSC] (Node f4422648), AE_NOT_FOUND (20110316/psparse-536) summary klog: HIGH Kernel message: [ 1.184923] ACPI Warning: For _SB_.PCI0.P0P1._PRT: Return Package has no elements (empty) (20110413/nspredef-456) summary klog: HIGH Kernel message: [ 1.186079] ACPI Error: [BRTW] Namespace lookup failure, AE_NOT_FOUND (20110112/psargs-359) summary klog: HIGH Kernel message: [ 1.186087] ACPI Error: Method parse/execution failed [_SB_.PCI0.GFX0.DD03._BCM] (Node f4c2a588), AE_NOT_FOUND (20110112/psparse-536) summary klog: HIGH Kernel message: [ 1.187842] ACPI Error (psparse-0537): Method parse/execution failed [_PR_.CPU0.PPC_] (Node f7450168), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 1.187891] ACPI Error (psparse-0537): Method parse/execution failed [_PR_.CPU0._PPC] (Node f74500c0), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 1.188370] ACPI Error (psparse-0537): Method parse/execution failed [_PR_.CPU1._PPC] (Node f7450150), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 1.188776] ACPI Error (psparse-0537): Method parse/execution failed [_PR_.CPU2._PPC] (Node f74502b8), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 1.189190] ACPI Error (psparse-0537): Method parse/execution failed [_PR_.CPU3._PPC] (Node f7450258), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 1.196055] ACPI Error: Method parse/execution failed [_SB_.PCI0._OSC] (Node f3824270), AE_NOT_FOUND (20110112/psparse-536) summary klog: HIGH Kernel message: [ 1.210593] ACPI Warning: For _SB_.PCI0.PCIB._PRT: Return Package has no elements (empty) (20101013/nspredef-456) summary klog: HIGH Kernel message: [ 1.212692] ACPI Warning: For _TZ_.THRM._AL0: Return Package has no elements (empty) (20110112/nspredef-456) summary klog: HIGH Kernel message: [ 1.214748] ACPI Error: [_T_1] Namespace lookup failure, AE_ALREADY_EXISTS (20110112/dswload-802) summary klog: HIGH Kernel message: [ 1.214761] ACPI Error: Method parse/execution failed [_SB_.PCI0.PEGP.VGA_.LCD_.GBQC] (Node f3023438), AE_ALREADY_EXISTS (20110112/psparse-536) summary klog: HIGH Kernel message: [ 1.214775] ACPI Error: Method parse/execution failed [_SB_.PCI0.PEGP.VGA_.LCD_._BQC] (Node f3023420), AE_ALREADY_EXISTS (20110112/psparse-536) summary klog: HIGH Kernel message: [ 1.222641] ACPI Error: Method parse/execution failed [_SB_.PCI0.PEGP.VGA_.LCD1.GBQC] (Node f30235b8), AE_ALREADY_EXISTS (20110112/psparse-536) summary klog: HIGH Kernel message: [ 1.222655] ACPI Error: Method parse/execution failed [_SB_.PCI0.PEGP.VGA_.LCD1._BQC] (Node f30235a0), AE_ALREADY_EXISTS (20110112/psparse-536) summary klog: HIGH Kernel message: [ 1.224060] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.BAT1._STA] (Node f7023b10), AE_TIME summary klog: HIGH Kernel message: [ 1.228128] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.LPC0.EC0_._REG] (Node f702a570), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 1.229185] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0._OSC] (Node f70140d8), AE_ALREADY_EXISTS summary klog: HIGH Kernel message: [ 1.230869] ACPI Warning for _PR_.CPU0._PSS: SubPackage[15,16] - suspicious power dissipation values (20100428/nsrepair2-403) summary klog: HIGH Kernel message: [ 1.231049] ACPI Warning for _PR_.CPU1._PSS: SubPackage[15,16] - suspicious power dissipation values (20100428/nsrepair2-403) summary klog: HIGH Kernel message: [ 1.231224] ACPI Warning for _PR_.CPU2._PSS: SubPackage[15,16] - suspicious power dissipation values (20100428/nsrepair2-403) summary klog: HIGH Kernel message: [ 1.231399] ACPI Warning for _PR_.CPU3._PSS: SubPackage[15,16] - suspicious power dissipation values (20100428/nsrepair2-403) summary klog: HIGH Kernel message: [ 1.246159] ACPI Error: No handler for Region [ECRM] (f6cedba0) [EmbeddedControl] (20110413/evregion-373) summary klog: HIGH Kernel message: [ 1.246164] ACPI Error: Region EmbeddedControl (ID=3) has no handler (20110413/exfldio-292) summary klog: HIGH Kernel message: [ 1.246169] ACPI Error: Method parse/execution failed [_TZ_.RDEC] (Node f442fc60), AE_NOT_EXIST (20110413/psparse-536) summary klog: HIGH Kernel message: [ 1.246176] ACPI Error: Method parse/execution failed [_TZ_.TZS0._TMP] (Node f442fca8), AE_NOT_EXIST (20110413/psparse-536) summary klog: HIGH Kernel message: [ 1.270260] ACPI Error (psparse-0537): Method parse/execution failed [CPUT] (Node ffff880137a4e840), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 1.270297] ACPI Error (psparse-0537): Method parse/execution failed [PSSC] (Node ffff880137a4e860), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 1.270332] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.LPCB.EC0_._REG] (Node ffff880137a3fd00), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 1.272398] ACPI Error: No handler for Region [ECRM] (f76d0c60) [EmbeddedControl] (20110112/evregion-369) summary klog: HIGH Kernel message: [ 1.272407] ACPI Error: Method parse/execution failed [_TZ_.RDEC] (Node f742fc60), AE_NOT_EXIST (20110112/psparse-536) summary klog: HIGH Kernel message: [ 1.272415] ACPI Error: Method parse/execution failed [_TZ_.TZS0._TMP] (Node f742fca8), AE_NOT_EXIST (20110112/psparse-536) summary klog: HIGH Kernel message: [ 1.280955] ACPI Error: No handler for Region [PCFG] (ffff880137a733f0) [PCI_Config] (20090903/evregion-319) summary klog: HIGH Kernel message: [ 1.280965] ACPI Error (psparse-0537): Method parse/execution failed [J380._STA] (Node ffff88013712b380), AE_NOT_EXIST summary klog: HIGH Kernel message: [ 1.314561] ACPI Error: [ECPU] Namespace lookup failure, AE_NOT_FOUND (20110112/psargs-359) summary klog: HIGH Kernel message: [ 1.314567] ACPI Error: Method parse/execution failed [_TZ_.TZ00._TMP] (Node ffff88011763ca28), AE_NOT_FOUND (20110112/psparse-536) summary klog: HIGH Kernel message: [ 1.337975] ACPI Error (uteval-0250): Method execution failed [J380._STA] (Node ffff88013712b380), AE_NOT_EXIST summary klog: HIGH Kernel message: [ 1.371174] ACPI Error: Field [CDW3] at 96 exceeds Buffer [NULL] size 64 (bits) (20090903/dsopcode-596) summary klog: HIGH Kernel message: [ 1.381411] ACPI Error (psparse-0537): Method parse/execution failed [] (Node ffffffff81a2b040), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 1.381481] ACPI Error (dswload-0659): [PCI0] Namespace lookup failure, AE_NOT_FOUND summary klog: HIGH Kernel message: [ 1.384655] ACPI Error: Needed [Buffer/String/Package], found [Integer] ffff8801393f91f8 (20090903/exresop-590) summary klog: HIGH Kernel message: [ 1.384672] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.VGA_._DSM] (Node ffff88013ba4c020), AE_AML_OPERAND_TYPE summary klog: HIGH Kernel message: [ 1.384743] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.P0P1.VGA_._DSM] (Node ffff88013ba4d9c0), AE_AML_OPERAND_TYPE summary klog: HIGH Kernel message: [ 1.398053] ACPI: acpi_idle yielding to intel_idleACPI Warning for _TZ_.TZ01._PSL: Return Package type mismatch at index 0 - found Processor, expected Reference (20100428/nspredef-1059) summary klog: HIGH Kernel message: [ 1.399160] ACPI Warning for _SB_.PCI0.PT02._PRT: Return Package has no elements (empty) (20090903/nspredef-433) summary klog: HIGH Kernel message: [ 1.400736] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.SATA.PRT0._SDD] (Node f7018e58), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 1.436671] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.SATA.PRT0._SDD] (Node f7024e58), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 1.462866] ACPI Warning: _SB_.PCI0.VID2._DOD: Return Package has no elements (empty) 20090521 nspredef-434 summary klog: HIGH Kernel message: [ 1.480960] ACPI Warning: _SB_.PCI0.FNC2.PRT0._GTF: Return type mismatch - found Integer, expected Buffer 20090521 nspredef-940 summary klog: HIGH Kernel message: [ 1.488986] ACPI Error (psargs-0359): [GTF0] Namespace lookup failure, AE_NOT_FOUND summary klog: HIGH Kernel message: [ 1.488991] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.SAT0.PRT0._SDD] (Node f702b708), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 1.489034] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.SAT0.PRT0._GTF] (Node f702b720), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 1.518091] ACPI Warning for _SB_.PCI0.IDE1.PRT0._GTF: Return type mismatch - found Integer, expected Buffer (20090903/nspredef-1006) summary klog: HIGH Kernel message: [ 1.555599] ACPI Error (psparse-0537): Method parse/execution failed [CPUT] (Node ffff8801b90590c0), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 1.555652] ACPI Error (psparse-0537): Method parse/execution failed [PSSC] (Node ffff8801b90590e0), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 1.555703] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.LPCB.EC0_._REG] (Node ffff8801b903b6e0), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 1.570612] ACPI Error: No handler for Region [PCFG] (ffff8801b9074240) [PCI_Config] (20090903/evregion-319) summary klog: HIGH Kernel message: [ 1.570624] ACPI Error (psparse-0537): Method parse/execution failed [J380._STA] (Node ffff8801b916ea40), AE_NOT_EXIST summary klog: HIGH Kernel message: [ 1.590337] ACPI Warning: For _TZ_.THRM._PSL: Return Package has no elements (empty) (20110112/nspredef-456) summary klog: HIGH Kernel message: [ 1.605121] ACPI Error: Current brightness invalid (20110112/video-377) summary klog: HIGH Kernel message: [ 1.605465] ACPI Error: [RAMB] Namespace lookup failure, AE_NOT_FOUND (20110112/psargs-359) summary klog: HIGH Kernel message: [ 1.616034] ACPI Error (psparse-0537): Method parse/execution failed [_PR_.CPU0.PPC_] (Node ffff88015334da00), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 1.616243] ACPI Error (psparse-0537): Method parse/execution failed [_PR_.CPU0._PPC] (Node ffff88015334d920), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 1.618281] ACPI Error (psparse-0537): Method parse/execution failed [_PR_.CPU1._PPC] (Node ffff88015334d9e0), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 1.620164] ACPI Error (psparse-0537): Method parse/execution failed [_PR_.CPU2._PPC] (Node ffff88015334dbc0), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 1.621081] ACPI Error (psparse-0537): Method parse/execution failed [_PR_.CPU3._PPC] (Node ffff88015334db40), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 1.648580] ACPI Error: [SMS_] Namespace lookup failure, AE_NOT_FOUND (20110112/psargs-359) summary klog: HIGH Kernel message: [ 1.648589] ACPI Error: Method parse/execution failed [_SB_.PCI0.SATA.PRT0._SDD] (Node f3429e58), AE_NOT_FOUND (20110112/psparse-536) summary klog: HIGH Kernel message: [ 1.662849] ACPI Error (uteval-0250): Method execution failed [J380._STA] (Node ffff8801b916ea40), AE_NOT_EXIST summary klog: HIGH Kernel message: [ 1.678325] ACPI Error: Needed [Buffer/String/Package], found [Integer] ffff88022f7bb5e8 (20110112/exresop-590) summary klog: HIGH Kernel message: [ 1.678342] ACPI Error: Method parse/execution failed [_SB_.PCI0.VGA_._DSM] (Node ffff88022f460190), AE_AML_OPERAND_TYPE (20110112/psparse-536) summary klog: HIGH Kernel message: [ 1.678390] ACPI Error: Needed [Buffer/String/Package], found [Integer] ffff88022f7bb8b8 (20110112/exresop-590) summary klog: HIGH Kernel message: [ 1.678412] ACPI Error: Method parse/execution failed [_SB_.PCI0.P0P1.VGA_._DSM] (Node ffff88022f464230), AE_AML_OPERAND_TYPE (20110112/psparse-536) summary klog: HIGH Kernel message: [ 1.701482] ACPI Error (psparse-0537): Method parse/execution failed [_PR_.PPCE] (Node ffff88022704e960), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 1.701521] ACPI Error (psparse-0537): Method parse/execution failed [EV4_] (Node ffff880227059000), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 1.701557] ACPI Error (psparse-0537): Method parse/execution failed [SMIE] (Node ffff8802270521c0), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 1.701592] ACPI Error (psparse-0537): Method parse/execution failed [NEVT] (Node ffff880227052160), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 1.701628] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.LPCB.ECDV._Q66] (Node ffff880227050d00), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 1.761428] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.SATA.PRT0._SDD] (Node ffff8800bc234d60), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 1.782803] ACPI Error (psparse-0537): Method parse/execution failed [_PR_.CPU0.PPC_] (Node ffff8801d4d0ac60), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 1.783001] ACPI Error (psparse-0537): Method parse/execution failed [_PR_.CPU0._PPC] (Node ffff8801d4d0ab80), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 1.784831] ACPI Error (psparse-0537): Method parse/execution failed [_PR_.CPU1._PPC] (Node ffff8801d4d0ac40), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 1.786497] ACPI Error (psparse-0537): Method parse/execution failed [_PR_.CPU2._PPC] (Node ffff8801d4d0ae20), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 1.787299] ACPI Error (psparse-0537): Method parse/execution failed [_PR_.CPU3._PPC] (Node ffff8801d4d0ada0), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 1.849787] ACPI Warning for _PR_.CPU3._PSD: Return Package type mismatch at index 4 - found [NULL Object Descriptor], expected Integer [] tick_dev_program_event+0x68/0xd0 summary klog: HIGH Kernel message: [ 1.861558] ACPI Error: [SERN] Namespace lookup failure, AE_ALREADY_EXISTS (20110112/dswload-802) summary klog: HIGH Kernel message: [ 1.861576] ACPI Error: Method parse/execution failed [_SB_.PCI0.LPC_.EC__.GBIF] (Node ffff880232c509b0), AE_ALREADY_EXISTS (20110112/psparse-536) summary klog: HIGH Kernel message: [ 1.861601] ACPI Error: Method parse/execution failed [_SB_.PCI0.LPC_.EC__.BAT1._BIF] (Node ffff880232c50d20), AE_ALREADY_EXISTS (20110112/psparse-536) summary klog: HIGH Kernel message: [ 1.864413] ACPI Error: Method parse/execution failed [_SB_.PCI0.GFX0._DOD] (Node f3025828), AE_AML_PACKAGE_LIMIT (20110413/psparse-536) summary klog: HIGH Kernel message: [ 1.893953] ACPI Error (psparse-0537): Method parse/execution failed [CPUT] (Node ffff8800b3c50000), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 1.894002] ACPI Error (psparse-0537): Method parse/execution failed [PSSC] (Node ffff8800b3c50020), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 1.894047] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.LPCB.EC0_._REG] (Node ffff8800b3c49380), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 1.900224] ACPI Error: [NPSS] Namespace lookup failure, AE_NOT_FOUND (20110112/psargs-359) summary klog: HIGH Kernel message: [ 1.900238] ACPI Error: Method parse/execution failed [_PR_.CPU0.PPC_] (Node ffff88014f9a5140), AE_NOT_FOUND (20110112/psparse-536) summary klog: HIGH Kernel message: [ 1.900254] ACPI Error: Method parse/execution failed [_PR_.CPU0._PPC] (Node ffff88014f9a5028), AE_NOT_FOUND (20110112/psparse-536) summary klog: HIGH Kernel message: [ 1.900769] ACPI Error: Method parse/execution failed [_PR_.CPU1._PPC] (Node ffff88014f9a5118), AE_NOT_FOUND (20110112/psparse-536) summary klog: HIGH Kernel message: [ 1.901001] ACPI Error: Method parse/execution failed [_PR_.CPU2._PPC] (Node ffff88014f9a5370), AE_NOT_FOUND (20110112/psparse-536) summary klog: HIGH Kernel message: [ 1.901211] ACPI Error: Method parse/execution failed [_PR_.CPU3._PPC] (Node ffff88014f9a52d0), AE_NOT_FOUND (20110112/psparse-536) summary klog: HIGH Kernel message: [ 1.905440] ACPI Warning: For _SB_.PCI0.PCIB._PRT: Return Package has no elements (empty) (20110112/nspredef-456) summary klog: HIGH Kernel message: [ 1.907422] ACPI Error: [GTF0] Namespace lookup failure, AE_NOT_FOUND (20110112/psargs-359) summary klog: HIGH Kernel message: [ 1.907427] ACPI Error: Method parse/execution failed [_SB_.PCI0.SAT0.PRT0._SDD] (Node f3431a50), AE_NOT_FOUND (20110112/psparse-536) summary klog: HIGH Kernel message: [ 1.907445] ACPI Error: Method parse/execution failed [_SB_.PCI0.SAT0.PRT0._GTF] (Node f3431a68), AE_NOT_FOUND (20110112/psparse-536) summary klog: HIGH Kernel message: [ 1.911273] ACPI Warning for _SB_.PCI0.P0P1._PRT: Return Package has no elements (empty) (20090903/nspredef-433) summary klog: HIGH Kernel message: [ 1.929855] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.IDE1.GTM_] (Node f7414858), AE_AML_PACKAGE_LIMIT summary klog: HIGH Kernel message: [ 1.929872] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.IDE1.CHN1._GTM] (Node f7414798), AE_AML_PACKAGE_LIMIT summary klog: HIGH Kernel message: [ 1.958776] ACPI Warning for _PR_.CPU0._PSD: summary klog: HIGH Kernel message: [ 1.958968] ACPI Warning for _PR_.CPU1._PSD: Return Package type mismatch at index 4 - found [NULL Object Descriptor], expected Integer (20090903/nspredef-1012) summary klog: HIGH Kernel message: [ 1.959113] ACPI Warning for _PR_.CPU2._PSD: Return Package type mismatch at index 4 - found [NULL Object Descriptor], expected Integer (20090903/nspredef-1012) summary klog: HIGH Kernel message: [ 1.959252] ACPI Warning for _PR_.CPU3._PSD: Return Package type mismatch at index 4 - found [NULL Object Descriptor], expected Integer (20090903/nspredef-1012) summary klog: HIGH Kernel message: [ 1.959427] ACPI Warning for _PR_.CPU4._PSD: Return Package type mismatch at index 4 - found [NULL Object Descriptor], expected Integer (20090903/nspredef-1012) summary klog: HIGH Kernel message: [ 1.959602] ACPI Warning for _PR_.CPU5._PSD: Return Package type mismatch at index 4 - found [NULL Object Descriptor], expected Integer (20090903/nspredef-1012) summary klog: HIGH Kernel message: [ 1.959776] ACPI Warning for _PR_.CPU6._PSD: Return Package type mismatch at index 4 - found [NULL Object Descriptor], expected Integer (20090903/nspredef-1012) summary klog: HIGH Kernel message: [ 1.959951] ACPI Warning for _PR_.CPU7._PSD: Return Package type mismatch at index 4 - found [NULL Object Descriptor], expected Integer (20090903/nspredef-1012) summary klog: HIGH Kernel message: [ 1.962612] ACPI Error (psparse-0537): Method parse/execution failed [_PR_.CPU0.PPC_] (Node ffff8801534e5dc0), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 1.962811] ACPI Error (psparse-0537): Method parse/execution failed [_PR_.CPU0._PPC] (Node ffff8801534e5ce0), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 1.964620] ACPI Error (psparse-0537): Method parse/execution failed [_PR_.CPU1._PPC] (Node ffff8801534e5da0), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 1.966282] ACPI Error (psparse-0537): Method parse/execution failed [_PR_.CPU2._PPC] (Node ffff8801534e5f80), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 1.967081] ACPI Error (psparse-0537): Method parse/execution failed [_PR_.CPU3._PPC] (Node ffff8801534e5f00), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 1.974827] ACPI Error: Method parse/execution failed [_SB_.PCI0.SAT0.PRT0._SDD] (Node f3831a50), AE_NOT_FOUND (20110112/psparse-536) summary klog: HIGH Kernel message: [ 1.974846] ACPI Error: Method parse/execution failed [_SB_.PCI0.SAT0.PRT0._GTF] (Node f3831a68), AE_NOT_FOUND (20110112/psparse-536) summary klog: HIGH Kernel message: [ 2.001829] ACPI Error: Method parse/execution failed [_SB_.PCI0.PATA.GTM_] (Node f5423ba0), AE_AML_PACKAGE_LIMIT (20110112/psparse-536) summary klog: HIGH Kernel message: [ 2.001850] ACPI Error: Method parse/execution failed [_SB_.PCI0.PATA.CHN0._GTM] (Node f54239c0), AE_AML_PACKAGE_LIMIT (20110112/psparse-536) summary klog: HIGH Kernel message: [ 2.002809] ACPI Error: Method parse/execution failed [_SB_.PCI0.PATA.CHN1._GTM] (Node f5423ac8), AE_AML_PACKAGE_LIMIT (20110112/psparse-536) summary klog: HIGH Kernel message: [ 2.006621] ACPI Error (psparse-0537): Method parse/execution failed [CPUT] (Node ffff8801b90570c0), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 2.006671] ACPI Error (psparse-0537): Method parse/execution failed [PSSC] (Node ffff8801b90570e0), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 2.006718] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.LPCB.EC0_._REG] (Node ffff8801b903fa80), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 2.022076] ACPI Error: Could not enable SleepButton event (20110112/evxfevnt-198) summary klog: HIGH Kernel message: [ 2.022090] ACPI Warning: Could not enable fixed event 0x3 (20110112/evxface-197) summary klog: HIGH Kernel message: [ 2.033653] ACPI Error: Method parse/execution failed [_SB_.PCI0.SAT0.PRT0._SDD] (Node f6031468), AE_NOT_FOUND (20110112/psparse-536) summary klog: HIGH Kernel message: [ 2.033670] ACPI Error: Method parse/execution failed [_SB_.PCI0.SAT0.PRT0._GTF] (Node f6031480), AE_NOT_FOUND (20110112/psparse-536) summary klog: HIGH Kernel message: [ 2.045931] ACPI Warning for _SB_.PCI0.P0P1._PRT: Return Package has no elements (empty) (20100428/nspredef-456) summary klog: HIGH Kernel message: [ 2.049441] ACPI Warning for _PR_.CPU0._PSD: Return Package type mismatch at index 4 - found [NULL Object Descriptor], expected Integer (20090903/nspredef-1012) summary klog: HIGH Kernel message: [ 2.068617] ACPI Error: Method parse/execution failed [_SB_.PCI0.SATA.PRT0._SDD] (Node f3c29e58), AE_NOT_FOUND (20110112/psparse-536) summary klog: HIGH Kernel message: [ 2.081502] ACPI Error (psargs-0359): [NPSS] Namespace lookup failure, AE_NOT_FOUND summary klog: HIGH Kernel message: [ 2.081508] ACPI Error (psparse-0537): Method parse/execution failed [_PR_.CPU0.PPC_] (Node ffff8801534e5c20), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 2.081585] ACPI Error (psparse-0537): Method parse/execution failed [_PR_.CPU0._PPC] (Node ffff8801534e5b40), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 2.083171] ACPI Error (psparse-0537): Method parse/execution failed [_PR_.CPU1._PPC] (Node ffff8801534e5c00), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 2.084838] ACPI Error (psparse-0537): Method parse/execution failed [_PR_.CPU2._PPC] (Node ffff8801534e5de0), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 2.085644] ACPI Error (psparse-0537): Method parse/execution failed [_PR_.CPU3._PPC] (Node ffff8801534e5d60), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 2.106307] ACPI Error: Method parse/execution failed [_SB_.PCI0.SAT0.PRT0._SDD] (Node ffff88023f45dca8), AE_NOT_FOUND (20110112/psparse-536) summary klog: HIGH Kernel message: [ 2.106326] ACPI Error: Method parse/execution failed [_SB_.PCI0.SAT0.PRT0._GTF] (Node ffff88023f45dcd0), AE_NOT_FOUND (20110112/psparse-536) summary klog: HIGH Kernel message: [ 2.113330] ACPI Error: Method parse/execution failed [_SB_.PCI0.SAT0.PRT0._SDD] (Node f74317b0), AE_NOT_FOUND (20110112/psparse-536) summary klog: HIGH Kernel message: [ 2.113367] ACPI Error: Method parse/execution failed [_SB_.PCI0.SAT0.PRT0._GTF] (Node f74317c8), AE_NOT_FOUND (20110112/psparse-536) summary klog: HIGH Kernel message: [ 2.132386] ACPI Error: Could not enable SleepButton event (20090903/evxfevnt-193) summary klog: HIGH Kernel message: [ 2.132392] ACPI Warning: Could not enable fixed event 3 (20090903/evxface-146) summary klog: HIGH Kernel message: [ 2.149905] ACPI Error: Method parse/execution failed [_SB_.C003.C099._DOD] (Node f30275a0), AE_AML_PACKAGE_LIMIT (20110112/psparse-536) summary klog: HIGH Kernel message: [ 2.173036] ACPI Warning for _SB_._OSC: Return type mismatch - found Integer, expected Buffer (20090903/nspredef-1006) summary klog: HIGH Kernel message: [ 2.200371] ACPI Error: Method parse/execution failed [_SB_.EEAC] (Node f602bf30), AE_ALREADY_EXISTS (20110112/psparse-536) summary klog: HIGH Kernel message: [ 2.200380] ACPI Error: Method parse/execution failed [_SB_.BAT2._STA] (Node f602d2d0), AE_ALREADY_EXISTS (20110112/psparse-536) summary klog: HIGH Kernel message: [ 2.206433] ACPI Error: Method parse/execution failed [_SB_.EEAC] (Node f742d018), AE_ALREADY_EXISTS (20110112/psparse-536) summary klog: HIGH Kernel message: [ 2.206443] ACPI Error: Method parse/execution failed [_SB_.BAT2._STA] (Node f742d3a8), AE_ALREADY_EXISTS (20110112/psparse-536) summary klog: HIGH Kernel message: [ 2.222353] ACPI Error: [EABF] Namespace lookup failure, AE_ALREADY_EXISTS (20110112/dswload-802) summary klog: HIGH Kernel message: [ 2.222362] ACPI Error: Method parse/execution failed [_SB_.EEAC] (Node f602d018), AE_ALREADY_EXISTS (20110112/psparse-536) summary klog: HIGH Kernel message: [ 2.222372] ACPI Error: Method parse/execution failed [_SB_.BAT2._STA] (Node f602d3a8), AE_ALREADY_EXISTS (20110112/psparse-536) summary klog: HIGH Kernel message: [ 2.227407] ACPI Error (psargs-0359): [GTF1] Namespace lookup failure, AE_NOT_FOUND summary klog: HIGH Kernel message: [ 2.227411] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.SAT0.PRT1._SDD] (Node f702b7b0), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 2.227454] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.SAT0.PRT1._GTF] (Node f702b7c8), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 2.231431] ACPI Error: Method parse/execution failed [_SB_.EEAC] (Node f602bf60), AE_ALREADY_EXISTS (20110112/psparse-536) summary klog: HIGH Kernel message: [ 2.231442] ACPI Error: Method parse/execution failed [_SB_.BAT2._STA] (Node f602d300), AE_ALREADY_EXISTS (20110112/psparse-536) summary klog: HIGH Kernel message: [ 2.250291] ACPI Error: Method parse/execution failed [_SB_.BAT1.UBIF] (Node ffff88013762f550), AE_ALREADY_EXISTS (20110112/psparse-536) summary klog: HIGH Kernel message: [ 2.250306] ACPI Error: Method parse/execution failed [_SB_.BAT1._BIF] (Node ffff88013762f500), AE_ALREADY_EXISTS (20110112/psparse-536) summary klog: HIGH Kernel message: [ 2.270835] ACPI Error: Method parse/execution failed [_SB_.PCI0._OSC] (Node ffff880125e2c708), AE_ALREADY_EXISTS (20110112/psparse-536) summary klog: HIGH Kernel message: [ 2.280398] ACPI Error (dswload-0781): [_T_0] Namespace lookup failure, AE_ALREADY_EXISTS summary klog: HIGH Kernel message: [ 2.280410] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.BAT1.UBIF] (Node ffff8800b3c2e100), AE_ALREADY_EXISTS summary klog: HIGH Kernel message: [ 2.280443] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.BAT1._BIF] (Node ffff8800b3c2e0c0), AE_ALREADY_EXISTS summary klog: HIGH Kernel message: [ 2.283579] ACPI Error (psargs-0359): [_T_0] Namespace lookup failure, AE_NOT_FOUND summary klog: HIGH Kernel message: [ 2.283585] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.BAT1.UBIF] (Node ffff8800b3c2e100), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 2.283615] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.LPCB.EC0_._Q09] (Node ffff8800b3c410e0), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 2.288649] ACPI Error: Method parse/execution failed [_SB_.PCI0.SAT0.PRT0._SDD] (Node ffff88023f45dcd0), AE_NOT_FOUND (20110112/psparse-536) summary klog: HIGH Kernel message: [ 2.288685] ACPI Error: Method parse/execution failed [_SB_.PCI0.SAT0.PRT0._GTF] (Node ffff88023f45dcf8), AE_NOT_FOUND (20110112/psparse-536) summary klog: HIGH Kernel message: [ 2.294251] ACPI Error: Method parse/execution failed [_SB_.EEAC] (Node f742bf30), AE_ALREADY_EXISTS (20110112/psparse-536) summary klog: HIGH Kernel message: [ 2.294262] ACPI Error: Method parse/execution failed [_SB_.BAT2._STA] (Node f742d2d0), AE_ALREADY_EXISTS (20110112/psparse-536) summary klog: HIGH Kernel message: [ 2.324547] ACPI Error: [EABF] Namespace lookup failure, AE_ALREADY_EXISTS (20110413/dswload2-316) summary klog: HIGH Kernel message: [ 2.324556] ACPI Error: Method parse/execution failed [_SB_.EEAC] (Node f742d018), AE_ALREADY_EXISTS (20110413/psparse-536) summary klog: HIGH Kernel message: [ 2.324566] ACPI Error: Method parse/execution failed [_SB_.BAT2._STA] (Node f742d3a8), AE_ALREADY_EXISTS (20110413/psparse-536) summary klog: HIGH Kernel message: [ 2.334361] ACPI Error: Attempt to CreateField of length zero (20110112/dsopcode-529) summary klog: HIGH Kernel message: [ 2.334370] ACPI Error: Method parse/execution failed [_SB_.PCI0.IDE0.RATA] (Node ffff8801376322a8), AE_AML_OPERAND_VALUE (20110112/psparse-536) summary klog: HIGH Kernel message: [ 2.334384] ACPI Error: Method parse/execution failed [_SB_.PCI0.IDE0.PRT1._GTF] (Node ffff880137632438), AE_AML_OPERAND_VALUE (20110112/psparse-536) summary klog: HIGH Kernel message: [ 2.336604] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.GFX0._DOD] (Node ffff88013b63c460), AE_AML_PACKAGE_LIMIT summary klog: HIGH Kernel message: [ 2.384172] ACPI Error: Method parse/execution failed [_SB_.PCI0.SAT0.PRT0._SDD] (Node ffff8801c305dcd0), AE_NOT_FOUND (20110112/psparse-536) summary klog: HIGH Kernel message: [ 2.384189] ACPI Error: Method parse/execution failed [_SB_.PCI0.SAT0.PRT0._GTF] (Node ffff8801c305dcf8), AE_NOT_FOUND (20110112/psparse-536) summary klog: HIGH Kernel message: [ 2.440684] ACPI Error (psargs-0359): [SMS_] Namespace lookup failure, AE_NOT_FOUND summary klog: HIGH Kernel message: [ 2.440692] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.SATA.PRT0._SDD] (Node ffff88007db30c60), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 2.462687] ACPI Error: Method parse/execution failed [_SB_.PCI0.SAT0.PRT0._SDD] (Node ffff880147646cd0), AE_NOT_FOUND (20110112/psparse-536) summary klog: HIGH Kernel message: [ 2.462711] ACPI Error: Method parse/execution failed [_SB_.PCI0.SAT0.PRT0._GTF] (Node ffff880147646cf8), AE_NOT_FOUND (20110112/psparse-536) summary klog: HIGH Kernel message: [ 2.468708] ACPI Error (psparse-0537): Method parse/execution failed [_PR_.CPU1._PDC] (Node f700f180), AE_INVALID_TABLE_LENGTH summary klog: HIGH Kernel message: [ 2.468963] ACPI Error (psparse-0537): Method parse/execution failed [_PR_.CPU2._PDC] (Node f700f240), AE_INVALID_TABLE_LENGTH summary klog: HIGH Kernel message: [ 2.592359] ACPI Error: Method parse/execution failed [_PR_.CPU0.PPC_] (Node ffff88014f9a4140), AE_NOT_FOUND (20110112/psparse-536) summary klog: HIGH Kernel message: [ 2.592381] ACPI Error: Method parse/execution failed [_PR_.CPU0._PPC] (Node ffff88014f9a4028), AE_NOT_FOUND (20110112/psparse-536) summary klog: HIGH Kernel message: [ 2.593071] ACPI Error: Method parse/execution failed [_PR_.CPU1._PPC] (Node ffff88014f9a4118), AE_NOT_FOUND (20110112/psparse-536) summary klog: HIGH Kernel message: [ 2.593648] ACPI Error: Method parse/execution failed [_PR_.CPU2._PPC] (Node ffff88014f9a4370), AE_NOT_FOUND (20110112/psparse-536) summary klog: HIGH Kernel message: [ 2.593935] ACPI Error: Method parse/execution failed [_PR_.CPU3._PPC] (Node ffff88014f9a42d0), AE_NOT_FOUND (20110112/psparse-536) summary klog: HIGH Kernel message: [ 2.634350] ACPI Error: [GTF1] Namespace lookup failure, AE_NOT_FOUND (20110112/psargs-359) summary klog: HIGH Kernel message: [ 2.634355] ACPI Error: Method parse/execution failed [_SB_.PCI0.SAT0.PRT1._SDD] (Node f3431af8), AE_NOT_FOUND (20110112/psparse-536) summary klog: HIGH Kernel message: [ 2.634373] ACPI Error: Method parse/execution failed [_SB_.PCI0.SAT0.PRT1._GTF] (Node f3431b10), AE_NOT_FOUND (20110112/psparse-536) summary klog: HIGH Kernel message: [ 2.671117] ACPI Error: Method parse/execution failed [_SB_.EEAC] (Node f2c2d018), AE_ALREADY_EXISTS (20110112/psparse-536) summary klog: HIGH Kernel message: [ 2.671128] ACPI Error: Method parse/execution failed [_SB_.BAT2._STA] (Node f2c2d3a8), AE_ALREADY_EXISTS (20110112/psparse-536) summary klog: HIGH Kernel message: [ 2.701908] ACPI Error: Method parse/execution failed [_SB_.PCI0.SAT0.PRT1._SDD] (Node f3831af8), AE_NOT_FOUND (20110112/psparse-536) summary klog: HIGH Kernel message: [ 2.701933] ACPI Error: Method parse/execution failed [_SB_.PCI0.SAT0.PRT1._GTF] (Node f3831b10), AE_NOT_FOUND (20110112/psparse-536) summary klog: HIGH Kernel message: [ 2.771747] ACPI Error: Method parse/execution failed [_SB_.EEAC] (Node f402bf60), AE_ALREADY_EXISTS (20110112/psparse-536) summary klog: HIGH Kernel message: [ 2.771758] ACPI Error: Method parse/execution failed [_SB_.BAT2._STA] (Node f402d300), AE_ALREADY_EXISTS (20110112/psparse-536) summary klog: HIGH Kernel message: [ 2.787172] ACPI Warning: For _SB_.PCI0.P0P1._PRT: Return Package has no elements (empty) (20110112/nspredef-456) summary klog: HIGH Kernel message: [ 2.823916] ACPI Warning: _BQC returned an invalid level 20090521 video-629 summary klog: HIGH Kernel message: [ 2.837958] ACPI Error: Method parse/execution failed [_SB_.PCI0.SAT0.PRT1._SDD] (Node f7431858), AE_NOT_FOUND (20110112/psparse-536) summary klog: HIGH Kernel message: [ 2.837994] ACPI Error: Method parse/execution failed [_SB_.PCI0.SAT0.PRT1._GTF] (Node f7431870), AE_NOT_FOUND (20110112/psparse-536) summary klog: HIGH Kernel message: [ 2.838171] ACPI Warning for _SB_.BAT0._BIF: Return Package type mismatch at index 9 - found [NULL Object Descriptor], expected String/Buffer (20090903/nspredef-1012) summary klog: HIGH Kernel message: [ 2.851027] ACPI Warning: _BQC returned an invalid level (20110316/video-473) summary klog: HIGH Kernel message: [ 2.860339] ACPI Error: Method parse/execution failed [_SB_.C003.C098._DOD] (Node f4427588), AE_AML_PACKAGE_LIMIT (20110413/psparse-536) summary klog: HIGH Kernel message: [ 2.861808] ACPI Error: [_SB_.PCI0.GFX0.DD02._BCL] Namespace lookup failure, AE_NOT_FOUND (20110112/psargs-359) summary klog: HIGH Kernel message: [ 2.861812] ACPI Error: Method parse/execution failed [_SB_.PCI0.PEG0.PEGP.DD02._BCL] (Node ffff88015746e168), AE_NOT_FOUND (20110112/psparse-536) summary klog: HIGH Kernel message: [ 2.870589] ACPI Error: Method parse/execution failed [_SB_.PCI0.GFX0._DOD] (Node ffff880137632c80), AE_AML_PACKAGE_LIMIT (20110112/psparse-536) summary klog: HIGH Kernel message: [ 2.906610] ACPI Warning: For _SB_.PCI0.P0P2.PEGP._DOD: Return type mismatch - found Integer, expected Package (20110413/nspredef-1053) summary klog: HIGH Kernel message: [ 2.949708] ACPI Error: Field [CDW3] at 96 exceeds Buffer [NULL] size 64 (bits) (20110112/dsopcode-597) summary klog: HIGH Kernel message: [ 3.005123] ACPI Error (psparse-0537): Method parse/execution failed [_SB_._OSC] (Node ffff88122fc1ea00), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 3.112435] ACPI Error (psparse-0537): Method parse/execution failed [_PR_.PPCE] (Node f74257c8), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 3.112465] ACPI Error (psparse-0537): Method parse/execution failed [EV4_] (Node f742c210), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 3.112494] ACPI Error (psparse-0537): Method parse/execution failed [SMIE] (Node f7427a20), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 3.112522] ACPI Error (psparse-0537): Method parse/execution failed [NEVT] (Node f74279d8), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 3.112549] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.LPCB.ECDV._Q66] (Node f7427690), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 3.208822] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.C003.C098._DOD] (Node ffff88007cf30b60), AE_AML_PACKAGE_LIMIT summary klog: HIGH Kernel message: [ 3.223518] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.GFX0._DOD] (Node ffff880236c469a0), AE_AML_PACKAGE_LIMIT summary klog: HIGH Kernel message: [ 3.420672] ACPI Warning for _TZ_.THRM._PSL: Return Package type mismatch at index 0 - found Processor, expected Reference (20100428/nspredef-1059) summary klog: HIGH Kernel message: [ 3.480092] ACPI Warning for _SB_.PCI0.SAT0.PRT0._GTF: Return type mismatch - found Integer, expected Buffer (20090903/nspredef-1006) summary klog: HIGH Kernel message: [ 3.490098] ACPI Warning for _SB_.PCI0.SAT0.PRT1._GTF: Return type mismatch - found Integer, expected Buffer (20090903/nspredef-1006) summary klog: HIGH Kernel message: [ 3.490832] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PMI0._GHL] (Node ffff88013bc2bdc0), AE_AML_BUFFER_LIMIT summary klog: HIGH Kernel message: [ 3.490852] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PMI0._PMC] (Node ffff88013bc2bd40), AE_AML_BUFFER_LIMIT summary klog: HIGH Kernel message: [ 3.502273] ACPI Error: Could not enable SleepButton event (20100428/evxfevnt-205) summary klog: HIGH Kernel message: [ 3.601126] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.GFX0._DOD] (Node f7420690), AE_AML_PACKAGE_LIMIT summary klog: HIGH Kernel message: [ 3.675814] ACPI Error: Evaluating _BCM failed (20100428/video-532) summary klog: HIGH Kernel message: [ 3.868794] ACPI Error: Method parse/execution failed [_SB_.PCI0.SAT0.PRT0._SDD] (Node f3831b58), AE_NOT_FOUND (20110112/psparse-536) summary klog: HIGH Kernel message: [ 3.868812] ACPI Error: Method parse/execution failed [_SB_.PCI0.SAT0.PRT0._GTF] (Node f3831b70), AE_NOT_FOUND (20110112/psparse-536) summary klog: HIGH Kernel message: [ 3.983031] ACPI Error: Method parse/execution failed [_SB_.EEAC] (Node ffff88021d459028), AE_ALREADY_EXISTS (20110112/psparse-536) summary klog: HIGH Kernel message: [ 3.983040] ACPI Error: Method parse/execution failed [_SB_.BAT2._STA] (Node ffff88021d459618), AE_ALREADY_EXISTS (20110112/psparse-536) summary klog: HIGH Kernel message: [ 4.115197] ACPI Error: Method parse/execution failed [_SB_.EEAC] (Node ffff88021d458eb0), AE_ALREADY_EXISTS (20110112/psparse-536) summary klog: HIGH Kernel message: [ 4.115206] ACPI Error: Method parse/execution failed [_SB_.BAT2._STA] (Node ffff88021d4594b0), AE_ALREADY_EXISTS (20110112/psparse-536) summary klog: HIGH Kernel message: [ 4.190434] ACPI Error: Method parse/execution failed [_SB_.PCI0.GFX0._DOD] (Node ffff8801376342f8), AE_AML_PACKAGE_LIMIT (20110112/psparse-536) summary klog: HIGH Kernel message: [ 4.198699] ACPI Error: Method parse/execution failed [_SB_.PCI0.SAT0.PRT1._SDD] (Node f3831c00), AE_NOT_FOUND (20110112/psparse-536) summary klog: HIGH Kernel message: [ 4.198716] ACPI Error: Method parse/execution failed [_SB_.PCI0.SAT0.PRT1._GTF] (Node f3831c18), AE_NOT_FOUND (20110112/psparse-536) summary klog: HIGH Kernel message: [ 4.230508] ACPI Exception: AE_TIME, Returned by Handler for [EmbeddedControl] (20090903/evregion-424) summary klog: HIGH Kernel message: [ 4.230527] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.ISAB.ECDV.ECR1] (Node f7018ed0), AE_TIME summary klog: HIGH Kernel message: [ 4.230612] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.ISAB.ECDV.ECR2] (Node f7018ee8), AE_TIME summary klog: HIGH Kernel message: [ 4.230643] ACPI Error (psparse-0537): Method parse/execution failed [ECRW] (Node f7018fa8), AE_TIME summary klog: HIGH Kernel message: [ 4.230672] ACPI Error (psparse-0537): Method parse/execution failed [ECG1] (Node f7018fd8), AE_TIME summary klog: HIGH Kernel message: [ 4.230701] ACPI Error (psparse-0537): Method parse/execution failed [NEVT] (Node f70186f0), AE_TIME summary klog: HIGH Kernel message: [ 4.230730] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.ISAB.ECDV._Q66] (Node f7018eb8), AE_TIME summary klog: HIGH Kernel message: [ 4.576415] ACPI Error: No handler for Region [ERAM] (f4830d50) [EmbeddedControl] (20110112/evregion-369) summary klog: HIGH Kernel message: [ 4.576437] ACPI Error: Method parse/execution failed [_SB_.PCI0.SBRG.EC0_._REG] (Node f48326d8), AE_NOT_EXIST (20110112/psparse-536) summary klog: HIGH Kernel message: [ 4.638115] ACPI Error: Method parse/execution failed [_SB_.EEAC] (Node ffff880220c5b028), AE_ALREADY_EXISTS (20110413/psparse-536) summary klog: HIGH Kernel message: [ 4.638127] ACPI Error: Method parse/execution failed [_SB_.BAT2._STA] (Node ffff880220c5b618), AE_ALREADY_EXISTS (20110413/psparse-536) summary klog: HIGH Kernel message: [ 4.838935] ACPI Error (psparse-0537): Method parse/execution failed [_TZ_.C2E8] (Node f701b108), AE_AML_PACKAGE_LIMIT summary klog: HIGH Kernel message: [ 4.838984] ACPI Error (psparse-0537): Method parse/execution failed [_TZ_.C2E7] (Node f701b0f0), AE_AML_PACKAGE_LIMIT summary klog: HIGH Kernel message: [ 4.839033] ACPI Error (psparse-0537): Method parse/execution failed [_TZ_.TZ2_._TMP] (Node f701b7c8), AE_AML_PACKAGE_LIMIT summary klog: HIGH Kernel message: [ 4.890970] ACPI Error: Method parse/execution failed [_SB_.EEAC] (Node ffff880126e43f50), AE_ALREADY_EXISTS (20110413/psparse-536) summary klog: HIGH Kernel message: [ 4.890980] ACPI Error: Method parse/execution failed [_SB_.BAT2._STA] (Node ffff880126e44550), AE_ALREADY_EXISTS (20110413/psparse-536) summary klog: HIGH Kernel message: [ 5.150560] ACPI Warning for _SB_.BAT0._BIF: Return Package type mismatch at index 12 - found Integer, expected String/Buffer (20090903/nspredef-1012) summary klog: HIGH Kernel message: [ 5.332663] ACPI Error: Method parse/execution failed [_SB_.PCI0.GFX0._DOD] (Node f4425450), AE_AML_PACKAGE_LIMIT (20110112/psparse-536) summary klog: HIGH Kernel message: [ 6.224974] ACPI Error: Method parse/execution failed [_SB_.PCI0.PEGP.VGA_.LCD_.GBQC] (Node f3423438), AE_ALREADY_EXISTS (20110112/psparse-536) summary klog: HIGH Kernel message: [ 6.224987] ACPI Error: Method parse/execution failed [_SB_.PCI0.PEGP.VGA_.LCD_._BQC] (Node f3423420), AE_ALREADY_EXISTS (20110112/psparse-536) summary klog: HIGH Kernel message: [ 6.227917] ACPI Error: Method parse/execution failed [_SB_.PCI0.PEGP.VGA_.LCD1.GBQC] (Node f34235b8), AE_ALREADY_EXISTS (20110112/psparse-536) summary klog: HIGH Kernel message: [ 6.227930] ACPI Error: Method parse/execution failed [_SB_.PCI0.PEGP.VGA_.LCD1._BQC] (Node f34235a0), AE_ALREADY_EXISTS (20110112/psparse-536) summary klog: HIGH Kernel message: [ 6.732287] ACPI Error: [_T_0] Namespace lookup failure, AE_ALREADY_EXISTS (20110112/dswload-802) summary klog: HIGH Kernel message: [ 6.732310] ACPI Error: Method parse/execution failed [_SB_.BAT1.UBIF] (Node dd028fc0), AE_ALREADY_EXISTS (20110112/psparse-536) summary klog: HIGH Kernel message: [ 6.732334] ACPI Error: Method parse/execution failed [_SB_.BAT1._BIF] (Node dd028f90), AE_ALREADY_EXISTS (20110112/psparse-536) summary klog: HIGH Kernel message: [ 6.773266] ACPI Error: [CAPB] Namespace lookup failure, AE_ALREADY_EXISTS (20101013/dsfield-143) summary klog: HIGH Kernel message: [ 6.773285] ACPI Error: Method parse/execution failed [_SB_.PCI0._OSC] (Node ddc25ca8), AE_ALREADY_EXISTS (20101013/psparse-537) summary klog: HIGH Kernel message: [ 7.365139] ACPI Error: No handler for Region [IPMI] (ffff8805ffa37240) [IPMI] (20110112/evregion-369) summary klog: HIGH Kernel message: [ 7.365150] ACPI Error: Region IPMI(0x7) has no handler (20110112/exfldio-292) summary klog: HIGH Kernel message: [ 7.365161] ACPI Error: Method parse/execution failed [_SB_.PMI0._GHL] (Node ffff8805ffa36b18), AE_NOT_EXIST (20110112/psparse-536) summary klog: HIGH Kernel message: [ 7.365181] ACPI Error: Method parse/execution failed [_SB_.PMI0._PMC] (Node ffff8805ffa36a78), AE_NOT_EXIST (20110112/psparse-536) summary klog: HIGH Kernel message: [ 8.137284] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.LPCB.ECDV.ECR1] (Node f702e720), AE_TIME summary klog: HIGH Kernel message: [ 8.137317] ACPI Error (psparse-0537): Method parse/execution failed [ECRB] (Node f702e7f8), AE_TIME summary klog: HIGH Kernel message: [ 8.137344] ACPI Error (psparse-0537): Method parse/execution failed [EC0A] (Node f702ea08), AE_TIME summary klog: HIGH Kernel message: [ 8.137370] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.AMW0._WED] (Node f7019ca8), AE_TIME summary klog: HIGH Kernel message: [ 8.227953] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.C003.C098._DOD] (Node f7021588), AE_AML_PACKAGE_LIMIT summary klog: HIGH Kernel message: [ 8.794633] ACPI Error: Method parse/execution failed [_SB_.PCI0._OSC] (Node f5824ab0), AE_ALREADY_EXISTS (20110112/psparse-536) summary klog: HIGH Kernel message: [ 9.141980] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.LPCB.ECDV.ECR1] (Node f702e690), AE_TIME summary klog: HIGH Kernel message: [ 9.142017] ACPI Error (psparse-0537): Method parse/execution failed [ECRB] (Node f702e768), AE_TIME summary klog: HIGH Kernel message: [ 9.142046] ACPI Error (psparse-0537): Method parse/execution failed [EC0A] (Node f702e978), AE_TIME summary klog: HIGH Kernel message: [ 9.142076] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.AMW0._WED] (Node f7019420), AE_TIME summary klog: HIGH Kernel message: [ 9.267040] ACPI Warning for _SB_.SPM_._PMD: Return Package type mismatch at index 0 - found String, expected Reference (20090903/nspredef-1012) summary klog: HIGH Kernel message: [ 9.391036] ACPI Error: Method parse/execution failed [_SB_.PCI0.IBCM] (Node f3828738), AE_AML_BUFFER_LIMIT (20110112/psparse-536) summary klog: HIGH Kernel message: [ 9.391049] ACPI Error: Method parse/execution failed [_SB_.PCI0.GFX0.DD03._BCM] (Node f3824b28), AE_AML_BUFFER_LIMIT (20110112/psparse-536) summary klog: HIGH Kernel message: [ 9.391061] ACPI Error: Evaluating _BCM failed (20110112/video-365) summary klog: HIGH Kernel message: [ 9.393479] ACPI Error: Needed [Buffer/String/Package], found [Integer] ffff88012d8cfee8 (20110112/exresop-590) summary klog: HIGH Kernel message: [ 9.393498] ACPI Error: Method parse/execution failed [_SB_.PCI0.GFX0.DD02.GBQC] (Node ffff88012f83e6b8), AE_AML_OPERAND_TYPE (20110112/psparse-536) summary klog: HIGH Kernel message: [ 9.393510] ACPI Error: Method parse/execution failed [_SB_.PCI0.GFX0.DD02._BQC] (Node ffff88012f83e690), AE_AML_OPERAND_TYPE (20110112/psparse-536) summary klog: HIGH Kernel message: [ 9.394098] ACPI Error: Needed [Buffer/String/Package], found [Integer] ffff88012d8cfd38 (20110112/exresop-590) summary klog: HIGH Kernel message: [ 9.394109] ACPI Error: Method parse/execution failed [_SB_.PCI0.GFX0.DD02.SBCM] (Node ffff88012f83e6e0), AE_AML_OPERAND_TYPE (20110112/psparse-536) summary klog: HIGH Kernel message: [ 9.394118] ACPI Error: Method parse/execution failed [_SB_.PCI0.GFX0.DD02._BCM] (Node ffff88012f83e668), AE_AML_OPERAND_TYPE (20110112/psparse-536) summary klog: HIGH Kernel message: [ 9.957372] ACPI Error: Method parse/execution failed [_SB_.PCI0.SAT1.CHN0._GTM] (Node ffff88007af33780), AE_NOT_FOUND (20110112/psparse-536) summary klog: HIGH Kernel message: [ 9.957372] ACPI Error: Method parse/execution failed [_SB_.PCI0.SAT1.CHN1._GTM] (Node ffff88007af33910), AE_NOT_FOUND (20110112/psparse-536) summary klog: HIGH Kernel message: [ 9.957372] ACPI Error: Method parse/execution failed [_SB_.PCI0.SATA.CHN0._GTM] (Node ffff88007af32b68), AE_NOT_FOUND (20110112/psparse-536) summary klog: HIGH Kernel message: [ 9.957372] ACPI Error: Method parse/execution failed [_SB_.PCI0.SATA.CHN1._GTM] (Node ffff88007af32cf8), AE_NOT_FOUND (20110112/psparse-536) summary klog: HIGH Kernel message: [ 10.120967] ACPI Error: Needed [Buffer/String/Package], found [Integer] ffff88023bcba438 (20110112/exresop-590) summary klog: HIGH Kernel message: [ 10.120977] ACPI Error: Method parse/execution failed [_SB_.PCI0.GFX0._DSM] (Node ffff88023f45edc0), AE_AML_OPERAND_TYPE (20110112/psparse-536) summary klog: HIGH Kernel message: [ 10.121007] ACPI Error: Needed [Buffer/String/Package], found [Integer] ffff88023bcba1b0 (20110112/exresop-590) summary klog: HIGH Kernel message: [ 10.121018] ACPI Error: Method parse/execution failed [_SB_.PCI0.PEG0.GFX0._DSM] (Node ffff88023f474370), AE_AML_OPERAND_TYPE (20110112/psparse-536) summary klog: HIGH Kernel message: [ 10.194089] ACPI Warning for _SB_.PCI0.PCIB._PRT: Return Package has no elements (empty) (20100428/nspredef-456) summary klog: HIGH Kernel message: [ 10.289821] ACPI Error (psargs-0359): [_PR_.CPU0._CST] Namespace lookup failure, AE_NOT_FOUND summary klog: HIGH Kernel message: [ 10.289828] ACPI Error (psparse-0537): Method parse/execution failed [_PR_.CPU1._CST] (Node f70c3288), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 10.344782] ACPI Error: SMBus or IPMI write requires Buffer of length 42, found length 20 (20090903/exfield-286) summary klog: HIGH Kernel message: [ 10.344788] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PMI0._GHL] (Node ffff88122fc1ece0), AE_AML_BUFFER_LIMIT summary klog: HIGH Kernel message: [ 10.344812] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PMI0._PMC] (Node ffff88122fc1ec60), AE_AML_BUFFER_LIMIT summary klog: HIGH Kernel message: [ 10.380244] ACPI Warning (nspredef-0357): _SB_.PCI0.VID2._DOD: Return Package has no elements (empty) [20080926] summary klog: HIGH Kernel message: [ 10.680422] ACPI Error: Method parse/execution failed [_SB_.PCI0.GFX0.DD02._BCM] (Node ffff880117642ed8), AE_AML_INFINITE_LOOP (20110112/psparse-536) summary klog: HIGH Kernel message: [ 10.692650] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.LPCB.ECDV.ECR2] (Node f702e738), AE_TIME summary klog: HIGH Kernel message: [ 10.692684] ACPI Error (psparse-0537): Method parse/execution failed [ECRW] (Node f702e810), AE_TIME summary klog: HIGH Kernel message: [ 10.692710] ACPI Error (psparse-0537): Method parse/execution failed [ECG1] (Node f702e840), AE_TIME summary klog: HIGH Kernel message: [ 10.692735] ACPI Error (psparse-0537): Method parse/execution failed [NEVT] (Node f702ea50), AE_TIME summary klog: HIGH Kernel message: [ 10.692761] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.LPCB.ECDV._Q66] (Node f702e708), AE_TIME summary klog: HIGH Kernel message: [ 10.708822] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.LPCB.ECDV.ECR1] (Node f7427738), AE_TIME summary klog: HIGH Kernel message: [ 10.708876] ACPI Error (psparse-0537): Method parse/execution failed [ECRB] (Node f7427810), AE_TIME summary klog: HIGH Kernel message: [ 10.708908] ACPI Error (psparse-0537): Method parse/execution failed [EC0A] (Node f7427a20), AE_TIME summary klog: HIGH Kernel message: [ 10.708939] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.AMW0._WED] (Node f742c078), AE_TIME summary klog: HIGH Kernel message: [ 10.724353] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.LPCB.ECDV.ECR1] (Node ffff880213050d00), AE_TIME summary klog: HIGH Kernel message: [ 10.724416] ACPI Error (psparse-0537): Method parse/execution failed [ECRB] (Node ffff880213050e20), AE_TIME summary klog: HIGH Kernel message: [ 10.724449] ACPI Error (psparse-0537): Method parse/execution failed [EC0A] (Node ffff8802130520e0), AE_TIME summary klog: HIGH Kernel message: [ 10.724482] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.AMW0._WED] (Node ffff8802130573c0), AE_TIME summary klog: HIGH Kernel message: [ 11.195653] ACPI Error (psparse-0537): Method parse/execution failed [ECG5] (Node f702e8a0), AE_TIME summary klog: HIGH Kernel message: [ 11.195680] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.AC__._PSR] (Node f702ec90), AE_TIME summary klog: HIGH Kernel message: [ 11.383565] ACPI Error: Method parse/execution failed [_SB_.C003.C098._DOD] (Node ffff880137636938), AE_AML_PACKAGE_LIMIT (20110112/psparse-536) summary klog: HIGH Kernel message: [ 11.660551] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.LPCB.ECDV.ECR2] (Node f702e6a8), AE_TIME summary klog: HIGH Kernel message: [ 11.660591] ACPI Error (psparse-0537): Method parse/execution failed [ECRW] (Node f702e780), AE_TIME summary klog: HIGH Kernel message: [ 11.660615] ACPI Error (psparse-0537): Method parse/execution failed [ECG1] (Node f702e7b0), AE_TIME summary klog: HIGH Kernel message: [ 11.660638] ACPI Error (psparse-0537): Method parse/execution failed [NEVT] (Node f702e9c0), AE_TIME summary klog: HIGH Kernel message: [ 11.660661] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.LPCB.ECDV._Q66] (Node f702e678), AE_TIME summary klog: HIGH Kernel message: [ 11.800514] ACPI Error: Method parse/execution failed [_SB_.PCI0.GFX0._DOD] (Node ffff8801376342a8), AE_AML_PACKAGE_LIMIT (20110112/psparse-536) summary klog: HIGH Kernel message: [ 11.880473] ACPI Error: Needed [Buffer/String/Package], found [Integer] ffff88012125f558 (20110413/exresop-590) summary klog: HIGH Kernel message: [ 11.880998] ACPI Error: Needed [Buffer/String/Package], found [Integer] ffff88012125f3a8 (20110413/exresop-590) summary klog: HIGH Kernel message: [ 11.915871] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.SWFS] (Node ffff880226c49320), AE_AML_INFINITE_LOOP summary klog: HIGH Kernel message: [ 11.915905] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.RBYT] (Node ffff880226c493c0), AE_AML_INFINITE_LOOP summary klog: HIGH Kernel message: [ 11.915932] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.ASOC.SECV] (Node ffff880226c4a0e0), AE_AML_INFINITE_LOOP summary klog: HIGH Kernel message: [ 11.915960] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.ASOC.RVLT] (Node ffff880226c49b00), AE_AML_INFINITE_LOOP summary klog: HIGH Kernel message: [ 12.160904] ACPI Error (psparse-0537): Method parse/execution failed [ECG5] (Node f702e810), AE_TIME summary klog: HIGH Kernel message: [ 12.160929] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.AC__._PSR] (Node f702ec00), AE_TIME summary klog: HIGH Kernel message: [ 12.167076] ACPI Error: Needed [Buffer/String/Package], found [Integer] ffff8800b1753048 (20090903/exresop-590) summary klog: HIGH Kernel message: [ 12.167089] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.GFX0.DD02.GBQC] (Node ffff8800b3c44ca0), AE_AML_OPERAND_TYPE summary klog: HIGH Kernel message: [ 12.167143] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.GFX0.DD02._BQC] (Node ffff8800b3c44c80), AE_AML_OPERAND_TYPE summary klog: HIGH Kernel message: [ 12.167205] ACPI Warning: Evaluating _BQC failed (20090903/video-641) summary klog: HIGH Kernel message: [ 12.242368] ACPI Error: Needed [Buffer/String/Package], found [Integer] ffff88012ea6e6c0 (20110413/exresop-590) summary klog: HIGH Kernel message: [ 12.242387] ACPI Error: Method parse/execution failed [_SB_.PCI0.GFX0.DD02.GBQC] (Node ffff88013113f6b8), AE_AML_OPERAND_TYPE (20110413/psparse-536) summary klog: HIGH Kernel message: [ 12.242397] ACPI Error: Method parse/execution failed [_SB_.PCI0.GFX0.DD02._BQC] (Node ffff88013113f690), AE_AML_OPERAND_TYPE (20110413/psparse-536) summary klog: HIGH Kernel message: [ 12.242409] ACPI Warning: Evaluating _BQC failed (20110413/video-484) summary klog: HIGH Kernel message: [ 12.242974] ACPI Error: Needed [Buffer/String/Package], found [Integer] ffff88012ea6e5e8 (20110413/exresop-590) summary klog: HIGH Kernel message: [ 12.242986] ACPI Error: Method parse/execution failed [_SB_.PCI0.GFX0.DD02.SBCM] (Node ffff88013113f6e0), AE_AML_OPERAND_TYPE (20110413/psparse-536) summary klog: HIGH Kernel message: [ 12.242994] ACPI Error: Method parse/execution failed [_SB_.PCI0.GFX0.DD02._BCM] (Node ffff88013113f668), AE_AML_OPERAND_TYPE (20110413/psparse-536) summary klog: HIGH Kernel message: [ 12.243002] ACPI Error: Evaluating _BCM failed (20110413/video-365) summary klog: HIGH Kernel message: [ 12.361137] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.C003.C09D._DOD] (Node ffff88013b630c00), AE_AML_PACKAGE_LIMIT summary klog: HIGH Kernel message: [ 12.390421] ACPI Error (psparse-0537): Method parse/execution failed [ECG5] (Node ffff880213050f00), AE_TIME summary klog: HIGH Kernel message: [ 12.390446] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.AC__._PSR] (Node ffff880213052440), AE_TIME summary klog: HIGH Kernel message: [ 12.553637] ACPI Warning: For _SB_.PCI0.P0P2.PEGP._DOD: Return type mismatch - found Integer, expected Package (20110112/nspredef-1053) summary klog: HIGH Kernel message: [ 12.838979] cfg80211: Ignoring regulatory request Set by core since the driver uses its own custom regulatory domain ACPI Exception: AE_TIME, Returned by Handler for [EmbeddedControl] (20110112/evregion-474) summary klog: HIGH Kernel message: [ 12.841008] cfg80211: Ignoring regulatory request Set by core since the driver uses its own custom regulatory domain ACPI Warning: _BQC returned an invalid level (20110112/video-473) summary klog: HIGH Kernel message: [ 13.024512] ACPI Error: Method parse/execution failed [_SB_.PCI0.GFX0._DOD] (Node f7425450), AE_AML_PACKAGE_LIMIT (20110112/psparse-536) summary klog: HIGH Kernel message: [ 13.396787] ACPI Error: Method parse/execution failed [_SB_.ADP1._PSR] (Node ffff88011763ba00), AE_TIME (20110112/psparse-536) summary klog: HIGH Kernel message: [ 13.445954] ACPI Error: Field [D128] at 1040 exceeds Buffer [NULL] size 160 (bits) (20110112/dsopcode-597) summary klog: HIGH Kernel message: [ 13.445980] ACPI Error: Method parse/execution failed [_SB_.WMID.HWMC] (Node f742a8b8), AE_AML_BUFFER_LIMIT (20110112/psparse-536) summary klog: HIGH Kernel message: [ 13.446019] ACPI Error: Method parse/execution failed [_SB_.WMID.WMAD] (Node f742aac8), AE_AML_BUFFER_LIMIT (20110112/psparse-536) summary klog: HIGH Kernel message: [ 13.452167] ACPI Error (psargs-0359): [_PR_.C001] Namespace lookup failure, AE_NOT_FOUND summary klog: HIGH Kernel message: [ 13.452177] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.LPC0.EC0_.TPAF] (Node f702bde0), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 13.452213] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.LPC0.EC0_.TBOM] (Node f702bdf8), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 13.452247] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.LPC0.EC0_._Q1D] (Node f702ba98), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 14.013275] ACPI Warning: _BQC returned an invalid level (20110112/video-473) summary klog: HIGH Kernel message: [ 14.175645] ACPI Error: Method parse/execution failed [_SB_.PCI0.OVGA.DD03.GBQC] (Node f44247e0), AE_ALREADY_EXISTS (20110112/psparse-536) summary klog: HIGH Kernel message: [ 14.175656] ACPI Error: Method parse/execution failed [_SB_.PCI0.OVGA.DD03._BQC] (Node f44247c8), AE_ALREADY_EXISTS (20110112/psparse-536) summary klog: HIGH Kernel message: [ 14.175667] ACPI Warning: Evaluating _BQC failed (20110112/video-484) summary klog: HIGH Kernel message: [ 14.885219] ACPI Error: Needed [Buffer/String/Package], found [Integer] ffff88013c6b58b8 (20110112/exresop-590) summary klog: HIGH Kernel message: [ 14.885234] ACPI Error: Method parse/execution failed [_SB_.PCI0.GFX0._DSM] (Node ffff88013f849eb0), AE_AML_OPERAND_TYPE (20110112/psparse-536) summary klog: HIGH Kernel message: [ 14.885277] ACPI Error: Needed [Buffer/String/Package], found [Integer] ffff88013c6b5828 (20110112/exresop-590) summary klog: HIGH Kernel message: [ 14.885289] ACPI Error: Method parse/execution failed [_SB_.PCI0.PEG1.GFX0._DSM] (Node ffff88013f86f668), AE_AML_OPERAND_TYPE (20110112/psparse-536) summary klog: HIGH Kernel message: [ 15.027464] ACPI Error (psparse-0537): Method parse/execution failed [_PR_.PPCE] (Node ffff880075137920), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 15.027505] ACPI Error (psparse-0537): Method parse/execution failed [EV4_] (Node ffff880075140660), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 15.027542] ACPI Error (psparse-0537): Method parse/execution failed [SMIE] (Node ffff88007513b180), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 15.027579] ACPI Error (psparse-0537): Method parse/execution failed [NEVT] (Node ffff88007513b120), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 15.027616] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.LPCB.ECDV._Q66] (Node ffff880075139cc0), AE_NOT_FOUND summary klog: HIGH Kernel message: [ 15.287082] ACPI Warning: _BQC returned an invalid level (20100428/video-640) summary klog: HIGH Kernel message: [ 15.846531] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.GFX0._DOD] (Node ffff8800b3840360), AE_AML_PACKAGE_LIMIT summary klog: HIGH Kernel message: [ 16.336080] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.LPCB.EC0_._Q33] (Node f70244b0), AE_TIME summary klog: HIGH Kernel message: [ 16.592600] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.ASOC.SEFA] (Node ffff880226c4a120), AE_AML_INFINITE_LOOP summary klog: HIGH Kernel message: [ 16.592628] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.ASOC.RFAN] (Node ffff880226c49bc0), AE_AML_INFINITE_LOOP summary klog: HIGH Kernel message: [ 16.719798] ACPI Warning for _SB_.PCI0.VID2._DOD: Return Package has no elements (empty) (20090903/nspredef-433) summary klog: HIGH Kernel message: [ 16.942589] ACPI Error (dswload-0802): [_T_0] Namespace lookup failure, AE_ALREADY_EXISTS summary klog: HIGH Kernel message: [ 16.942606] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.OVGA.DD03.GBQC] (Node ffff8800b7e3c6e0), AE_ALREADY_EXISTS summary klog: HIGH Kernel message: [ 16.942654] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.OVGA.DD03._BQC] (Node ffff8800b7e3c6c0), AE_ALREADY_EXISTS summary klog: HIGH Kernel message: [ 17.125601] ACPI Error: Needed [Buffer/String/Package], found [Integer] eee27810 (20110112/exresop-590) summary klog: HIGH Kernel message: [ 17.125618] ACPI Error: Method parse/execution failed [_SB_.PCI0.GFX0._DSM] (Node f7431fa8), AE_AML_OPERAND_TYPE (20110112/psparse-536) summary klog: HIGH Kernel message: [ 17.125669] ACPI Error: Needed [Buffer/String/Package], found [Integer] eee27780 (20110112/exresop-590) summary klog: HIGH Kernel message: [ 17.125690] ACPI Error: Method parse/execution failed [_SB_.PCI0.PEG1.GFX0._DSM] (Node f7445c78), AE_AML_OPERAND_TYPE (20110112/psparse-536) summary klog: HIGH Kernel message: [ 17.802564] ACPI Error: Method parse/execution failed [_SB_.WMID.HWMC] (Node ffff8801ffc5c078), AE_AML_BUFFER_LIMIT (20110112/psparse-536) summary klog: HIGH Kernel message: [ 17.802574] ACPI Error: Method parse/execution failed [_SB_.WMID.WMAD] (Node ffff8801ffc5c258), AE_AML_BUFFER_LIMIT (20110112/psparse-536) summary klog: HIGH Kernel message: [ 17.847665] ACPI Error: Method parse/execution failed [_SB_.PCI0.PEG0.PEGP.DD02._BCL] (Node f444ebe8), AE_NOT_FOUND (20110112/psparse-536) summary klog: HIGH Kernel message: [ 17.985672] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.IBCM] (Node ffff8800b3832600), AE_AML_BUFFER_LIMIT summary klog: HIGH Kernel message: [ 17.985723] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.GFX0.DD03._BCM] (Node ffff8800b382b840), AE_AML_BUFFER_LIMIT summary klog: HIGH Kernel message: [ 18.054842] ACPI Error: Needed [Buffer/String/Package], found [Integer] ffff880133a777e0 (20110112/exresop-590) summary klog: HIGH Kernel message: [ 18.054860] ACPI Error: Method parse/execution failed [_SB_.PCI0.VGA_._DSM] (Node ffff880137659190), AE_AML_OPERAND_TYPE (20110112/psparse-536) summary klog: HIGH Kernel message: [ 18.054909] ACPI Error: Needed [Buffer/String/Package], found [Integer] ffff880133a776c0 (20110112/exresop-590) summary klog: HIGH Kernel message: [ 18.054932] ACPI Error: Method parse/execution failed [_SB_.PCI0.P0P1.VGA_._DSM] (Node ffff88013765d230), AE_AML_OPERAND_TYPE (20110112/psparse-536) summary klog: HIGH Kernel message: [ 18.353938] ACPI Error: Method parse/execution failed [_SB_.PCI0.PEGP.VGA_.LCD_.GBQC] (Node ffff88013762f708), AE_ALREADY_EXISTS (20110112/psparse-536) summary klog: HIGH Kernel message: [ 18.353954] ACPI Error: Method parse/execution failed [_SB_.PCI0.PEGP.VGA_.LCD_._BQC] (Node ffff88013762f6e0), AE_ALREADY_EXISTS (20110112/psparse-536) summary klog: HIGH Kernel message: [ 18.367485] ACPI Error: Method parse/execution failed [_SB_.PCI0.PEGP.VGA_.LCD1.GBQC] (Node ffff88013762f988), AE_ALREADY_EXISTS (20110112/psparse-536) summary klog: HIGH Kernel message: [ 18.367501] ACPI Error: Method parse/execution failed [_SB_.PCI0.PEGP.VGA_.LCD1._BQC] (Node ffff88013762f960), AE_ALREADY_EXISTS (20110112/psparse-536) summary klog: HIGH Kernel message: [ 18.720899] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.GFX0._DOD] (Node f70206d8), AE_AML_PACKAGE_LIMIT summary klog: HIGH Kernel message: [ 19.086127] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.LPCB.ECDV.ECR1] (Node f702e6a8), AE_TIME summary klog: HIGH Kernel message: [ 19.086176] ACPI Error (psparse-0537): Method parse/execution failed [ECRB] (Node f702e780), AE_TIME summary klog: HIGH Kernel message: [ 19.086202] ACPI Error (psparse-0537): Method parse/execution failed [EC0A] (Node f702e990), AE_TIME summary klog: HIGH Kernel message: [ 19.086228] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.AMW0._WED] (Node f7019fd8), AE_TIME summary klog: HIGH Kernel message: [ 19.408610] ACPI Error: Method parse/execution failed [_SB_.PCI0.GFX0._DOD] (Node f74256a8), AE_AML_PACKAGE_LIMIT (20110112/psparse-536) summary klog: HIGH Kernel message: [ 20.135790] ACPI Error: Needed [Buffer/String/Package], found [Integer] ffff88023b491318 (20110316/exresop-590) summary klog: HIGH Kernel message: [ 20.135804] ACPI Error: Method parse/execution failed [_SB_.PCI0.GFX0._DSM] (Node ffff88023ec61eb0), AE_AML_OPERAND_TYPE (20110316/psparse-536) summary klog: HIGH Kernel message: [ 20.135849] ACPI Error: Needed [Buffer/String/Package], found [Integer] ffff88023b491708 (20110316/exresop-590) summary klog: HIGH Kernel message: [ 20.135864] ACPI Error: Method parse/execution failed [_SB_.PCI0.PEG1.GFX0._DSM] (Node ffff88023ec77668), AE_AML_OPERAND_TYPE (20110316/psparse-536) summary klog: HIGH Kernel message: [ 20.149010] ACPI Error: Needed [Integer/String/Buffer], found [Package] f741ed48 (20100428/exresop-422) summary klog: HIGH Kernel message: [ 20.149032] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.P0P2.PEGP.LCD_._BQC] (Node f741f978), AE_AML_OPERAND_TYPE summary klog: HIGH Kernel message: [ 20.149063] ACPI Warning: Evaluating _BQC failed (20100428/video-651) summary klog: HIGH Kernel message: [ 20.298134] [Firmware Bug]: _BCQ is used instead of _BQC summary klog: HIGH Kernel message: [ 20.342464] ACPI Warning: _BQC returned an invalid level (20110413/video-473) summary klog: HIGH Kernel message: [ 20.634744] ACPI Warning for _SB_.PCI0.GFX0.DD02._BQC: Return type mismatch - found Reference, expected Integer (20100428/nspredef-1053) summary klog: HIGH Kernel message: [ 21.460488] ACPI Error: Method parse/execution failed [_SB_.PCI0.GFX0._DOD] (Node ffff880133632c80), AE_AML_PACKAGE_LIMIT (20110112/psparse-536) summary klog: HIGH Kernel message: [ 21.562484] ACPI Error: Needed [Buffer/String/Package], found [Integer] f7260370 (20090903/exresop-590) summary klog: HIGH Kernel message: [ 21.562496] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.GFX0.DD02.GBQC] (Node f7017a68), AE_AML_OPERAND_TYPE summary klog: HIGH Kernel message: [ 21.562544] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.GFX0.DD02._BQC] (Node f7017a50), AE_AML_OPERAND_TYPE summary klog: HIGH Kernel message: [ 22.154348] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.LPCB.ECDV.ECR1] (Node f74276a8), AE_TIME summary klog: HIGH Kernel message: [ 22.154443] ACPI Error (psparse-0537): Method parse/execution failed [ECRB] (Node f7427780), AE_TIME summary klog: HIGH Kernel message: [ 22.154516] ACPI Error (psparse-0537): Method parse/execution failed [ECG5] (Node f7427828), AE_TIME summary klog: HIGH Kernel message: [ 22.154587] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.AC__._PSR] (Node f7427c18), AE_TIME summary klog: HIGH Kernel message: [ 25.859931] ACPI Error: Needed [Buffer/String/Package], found [Integer] ffff880139af5240 (20090903/exresop-590) summary klog: HIGH Kernel message: [ 25.859949] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.VGA_._DSM] (Node ffff88013ba4c0e0), AE_AML_OPERAND_TYPE summary klog: HIGH Kernel message: [ 25.860025] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.P0P1.VGA_._DSM] (Node ffff88013ba4da80), AE_AML_OPERAND_TYPE summary klog: HIGH Kernel message: [ 26.653079] ACPI Exception: AE_TIME, Returned by Handler for [EmbeddedControl] (20100428/evregion-474) summary klog: HIGH Kernel message: [ 26.653190] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.LPCB.ECDV.ECR1] (Node ffff880226c54ce0), AE_TIME summary klog: HIGH Kernel message: [ 26.653252] ACPI Error (psparse-0537): Method parse/execution failed [ECRB] (Node ffff880226c54e00), AE_TIME summary klog: HIGH Kernel message: [ 26.653283] ACPI Error (psparse-0537): Method parse/execution failed [ECG5] (Node ffff880226c54ee0), AE_TIME summary klog: HIGH Kernel message: [ 26.653307] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.AC__._PSR] (Node ffff880226c56420), AE_TIME summary klog: HIGH Kernel message: [ 26.874386] ACPI Warning: _BQC returned an invalid level (20090903/video-631) summary klog: HIGH Kernel message: [ 29.470614] ACPI Warning for _SB_.PCI0.GFX0.DD03._BQC: Return type mismatch - found Reference, expected Integer (20100428/nspredef-1053) summary klog: HIGH Kernel message: [ 30.140339] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.LPCB.ECDV.ECR1] (Node ffff880217050ce0), AE_TIME summary klog: HIGH Kernel message: [ 30.140421] ACPI Error (psparse-0537): Method parse/execution failed [ECRB] (Node ffff880217050e00), AE_TIME summary klog: HIGH Kernel message: [ 30.140448] ACPI Error (psparse-0537): Method parse/execution failed [ECG5] (Node ffff880217050ee0), AE_TIME summary klog: HIGH Kernel message: [ 30.140475] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.AC__._PSR] (Node ffff880217052420), AE_TIME summary klog: HIGH Kernel message: [ 42.490181] ACPI Error: [_SB_.VDRV] Namespace lookup failure, AE_NOT_FOUND (20110112/psargs-359) summary klog: HIGH Kernel message: [ 42.490202] ACPI Error: Method parse/execution failed [_SB_.PCI0.LPC0.H_EC._Q51] (Node ffff88003d9b1e60), AE_NOT_FOUND (20110112/psparse-536) summary klog: HIGH Kernel message: [ 44.661543] ACPI Warning for _SB_.PCI0.GFX0.DD01._BCL: Return type mismatch - found Integer, expected Package (20090903/nspredef-1006) summary klog: HIGH Kernel message: [ 50.737630] ACPI Warning for _SB_.PCI0.AGP_.VID_.MXMI: Excess arguments - needs 1, found 2 (20090903/nspredef-303) summary klog: HIGH Kernel message: [ 50.737686] ACPI Warning for _SB_.PCI0.AGP_.VID_.MXMS: Excess arguments - needs 1, found 2 (20090903/nspredef-303) summary summary Medium failures: 331 summary klog: MEDIUM Kernel message: [ 0.000000] ACPI Warning: Incorrect checksum in table [APIC] - 0x3E, should be 0x41 (20110112/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.000000] ACPI Warning: Incorrect checksum in table [APIC] - 0x65, should be 0x68 (20110112/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.000000] ACPI Warning: Incorrect checksum in table [APIC] - 0x69, should be 0x6C (20110112/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.000000] ACPI Warning: Incorrect checksum in table [APIC] - 0x69, should be 0x6C (20110413/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.000000] ACPI Warning: Incorrect checksum in table [APIC] - 0x9E, should be 0xA1 (20110112/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.000000] ACPI Warning: Incorrect checksum in table [APIC] - 0xDF, should be 0xE2 (20110112/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.000000] ACPI Warning: Incorrect checksum in table [APIC] - 0xE4, should be 0xE7 (20110112/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.000000] ACPI Warning: Incorrect checksum in table [XSDT] - 0x89, should be 0x7D (20110413/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.000000] mtrr: your BIOS has configured an incorrect mask, fixing it. summary klog: MEDIUM Kernel message: [ 0.076767] ACPI Warning: Incorrect checksum in table [OEMB] - 0xA6, should be 0x97 (20100428/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.077157] ACPI Warning: Incorrect checksum in table [OEMB] - 0x4C, should be 0x21 (20100428/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.078268] ACPI Warning: Incorrect checksum in table [OEMB] - 07, should be 06 (20090903/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.078686] ACPI Warning: Incorrect checksum in table [OEMB] - 0x38, should be 0x81 (20110413/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.083817] ACPI Warning: Incorrect checksum in table [OEMB] - 0xF9, should be 0xF3 (20100428/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.085974] ACPI Warning: Incorrect checksum in table [OEMB] - 0x6B, should be 0x39 (20110112/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.086054] ACPI Warning: Incorrect checksum in table [TCPA] - 0x00, should be 0x96 (20110112/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.088999] ACPI Warning: Incorrect checksum in table [OEMB] - 0xE8, should be 0xDB (20100428/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.089613] ACPI Warning: Incorrect checksum in table [OEMB] - 0xB3, should be 0xAE (20100428/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.089701] ACPI Warning: Incorrect checksum in table [OEMB] - 0x77, should be 0x6C (20100428/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.091541] ACPI Warning: Incorrect checksum in table [OEMB] - F6, should be E7 (20090903/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.091778] ACPI Warning: Incorrect checksum in table [OEMB] - 8E, should be 7F (20090903/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.091911] ACPI Warning: Incorrect checksum in table [APIC] - 0x8E, should be 0x91 (20110112/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.094477] ACPI Warning: Incorrect checksum in table [OEMB] - 0x97, should be 0x90 (20100428/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.096447] ACPI Warning: Incorrect checksum in table [OEMB] - 66, should be 62 (20090903/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.098113] ACPI Warning: Incorrect checksum in table [OEMB] - 0x2C, should be 0x28 (20100428/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.099413] ACPI Warning: Incorrect checksum in table [OEMB] - E2, should be D9 (20090903/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.102803] ACPI Warning: Incorrect checksum in table [OEMB] - 6E, should be 40 (20090903/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.108470] ACPI Warning: Incorrect checksum in table [OEMB] - 3F, should be 3B (20090903/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.109343] ACPI Warning: Incorrect checksum in table [OEMB] - 0x29, should be 0x1C (20100428/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.110905] ACPI Warning: Incorrect checksum in table [OEMB] - 32, should be 25 (20090903/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.115838] ACPI Warning: Incorrect checksum in table [OEMB] - 79, should be 6C (20090903/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.118568] ACPI Warning: Incorrect checksum in table [OEMB] - 2F, should be 22 (20090903/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.132540] ACPI Warning: Incorrect checksum in table [OEMB] - CB, should be C6 (20090903/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.137394] ACPI Warning: Incorrect checksum in table [OEMB] - 29, should be 1A (20090903/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.141112] ACPI Warning: Incorrect checksum in table [OEMB] - ED, should be E8 20090521 tbutils-246 summary klog: MEDIUM Kernel message: [ 0.154764] ACPI Warning: Incorrect checksum in table [OEMB] - 7D, should be 6E (20090903/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.160449] mtrr: your CPUs had inconsistent fixed MTRR settings summary klog: MEDIUM Kernel message: [ 0.163687] ACPI Warning: Incorrect checksum in table [TAMG] - 0xFC, should be 0xFB (20110112/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.164073] ACPI Warning: Incorrect checksum in table [TAMG] - 0xEE, should be 0xED (20110112/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.169362] ACPI Warning: Incorrect checksum in table [OEMB] - 0x18, should be 0x13 (20100428/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.169398] ACPI Warning: Incorrect checksum in table [OEMB] - 0x15, should be 0xAC (20100428/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.170352] ACPI Warning: Incorrect checksum in table [SSDT] - 0xEA, should be 0x42 (20100428/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.171073] ACPI Warning: Incorrect checksum in table [OEMB] - 0x67, should be 0x92 (20100428/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.171715] ACPI Warning: Incorrect checksum in table [TCPA] - 0x00, should be 0xAB (20110112/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.172406] ACPI Warning: Incorrect checksum in table [OEMB] - 0x22, should be 0x15 (20100428/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.172679] ACPI Warning: Incorrect checksum in table [TCPA] - 0x00, should be 0xA5 (20100428/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.173062] ACPI Warning: Incorrect checksum in table [SSDT] - 0xAA, should be 0xED (20110112/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.173745] ACPI Warning: Incorrect checksum in table [TCPA] - 0x83, should be 0x27 (20110413/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.175144] ACPI Warning: Incorrect checksum in table [OEMB] - 95, should be 8C (20090903/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.175987] ACPI Warning: Incorrect checksum in table [OEMB] - D7, should be C8 20090521 tbutils-246 summary klog: MEDIUM Kernel message: [ 0.176309] ACPI Warning: Incorrect checksum in table [OEMB] - 0xCF, should be 0xCE (20100428/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.176680] ACPI Warning: Incorrect checksum in table [OEMB] - D6, should be C7 20090521 tbutils-246 summary klog: MEDIUM Kernel message: [ 0.176840] ACPI Warning: Incorrect checksum in table [SSDT] - 0xAC, should be 0x4D (20100428/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.177033] ACPI Warning: Incorrect checksum in table [OEMB] - ED, should be EC 20090521 tbutils-246 summary klog: MEDIUM Kernel message: [ 0.177048] [Firmware Bug]: PCI: MMCONFIG at [mem 0xe0000000-0xe03fffff] not reserved in ACPI motherboard resources summary klog: MEDIUM Kernel message: [ 0.177506] ACPI Warning: Incorrect checksum in table [SSDT] - 0xA1, should be 0x30 (20100428/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.177670] ACPI Warning: Incorrect checksum in table [OEMB] - 1C, should be 17 (20090903/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.178040] ACPI Warning: Incorrect checksum in table [OEMB] - 0xF7, should be 0xE8 (20100428/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.179475] ACPI Warning: Incorrect checksum in table [TCPA] - 0x00, should be 0xAB (20100428/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.181959] ACPI Warning: Incorrect checksum in table [OEMB] - 0x0A, should be 0x09 (20100428/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.182122] ACPI Warning: Incorrect checksum in table [OEMB] - 7D, should be 70 (20090903/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.183518] ACPI Warning: Incorrect checksum in table [OEMB] - 10, should be 03 (20090903/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.183948] ACPI Warning: Incorrect checksum in table [TCPA] - 0x00, should be 0x8E (20110112/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.184086] ACPI Warning: Incorrect checksum in table [OEMB] - 0x69, should be 0x68 (20110112/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.186529] ACPI Warning: Incorrect checksum in table [OEMB] - B9, should be AC (20090903/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.187574] ACPI Warning: Incorrect checksum in table [OEMB] - 77, should be 76 (20090903/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.187872] ACPI Warning: Incorrect checksum in table [OEMB] - B6, should be B3 (20090903/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.187981] ACPI Warning: Incorrect checksum in table [OEMB] - 8D, should be 8C (20090903/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.187992] ACPI Warning: Incorrect checksum in table [OEMB] - 40, should be 3F (20090903/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.188197] ACPI Warning: Incorrect checksum in table [OEMB] - 6A, should be 61 (20090903/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.188232] ACPI Warning: Incorrect checksum in table [ATKG] - 0x07, should be 0x59 (20100428/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.188669] ACPI Warning: Incorrect checksum in table [ATKG] - 0x05, should be 0xE5 (20100428/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.191013] ACPI Warning: Incorrect checksum in table [ATKG] - 0x81, should be 0xE5 (20100428/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.191774] ACPI Warning: Incorrect checksum in table [OEMB] - 37, should be 28 (20090903/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.192037] ACPI Warning: Incorrect checksum in table [OEMB] - 0xD9, should be 0xCC (20100428/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.192983] ACPI Warning: Incorrect checksum in table [OEMB] - C0, should be B3 (20090903/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.194184] ACPI Warning: Incorrect checksum in table [OEMB] - C8, should be BF (20090903/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.194314] ACPI Warning: Incorrect checksum in table [OEMB] - AA, should be 9D (20090903/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.194897] ACPI Warning: Incorrect checksum in table [OEMB] - 0xDD, should be 0xD6 (20100428/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.195685] ACPI Warning: Incorrect checksum in table [OEMB] - 2A, should be 29 (20090903/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.195754] ACPI Warning: Incorrect checksum in table [OEMB] - 88, should be 83 (20090903/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.196934] ACPI Warning: Incorrect checksum in table [OEMB] - 0B, should be 02 (20090903/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.197082] ACPI Warning: Incorrect checksum in table [ATKG] - 0xC8, should be 0xE5 (20100428/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.198490] ACPI Warning: Incorrect checksum in table [OEMB] - 0xB2, should be 0x47 (20100428/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.198823] ACPI Warning: Incorrect checksum in table [OEMB] - 01, should be F4 (20090903/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.199360] ACPI Warning: Incorrect checksum in table [TCPA] - 00, should be AB 20090521 tbutils-246 summary klog: MEDIUM Kernel message: [ 0.200426] ACPI Warning: Incorrect checksum in table [OEMB] - A3, should be 9E (20090903/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.200744] ACPI Warning: Incorrect checksum in table [ASF!] - 59, should be 08 20090521 tbutils-246 summary klog: MEDIUM Kernel message: [ 0.201013] ACPI Warning: Incorrect checksum in table [OEMB] - 8A, should be 7D (20090903/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.203079] ACPI Warning: Incorrect checksum in table [OEMB] - 0xE1, should be 0xDC (20100428/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.204335] ACPI Warning: Incorrect checksum in table [OEMB] - 0xC1, should be 0x11 (20110413/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.204344] ACPI Warning: Incorrect checksum in table [ATKG] - 07, should be 59 (20090903/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.206075] ACPI Warning: Incorrect checksum in table [ATKG] - BB, should be E5 (20090903/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.207023] ACPI Warning: Incorrect checksum in table [TCPA] - 00, should be AB (20090903/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.208479] ACPI Warning: Incorrect checksum in table [OEMB] - 0x77, should be 0x72 (20100428/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.210543] ACPI Warning: Incorrect checksum in table [OEMB] - CD, should be CC (20090903/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.210667] ACPI Warning: Incorrect checksum in table [OEMB] - D3, should be C4 (20090903/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.211069] ACPI Warning: Incorrect checksum in table [OEMB] - 0x99, should be 0x92 (20100428/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.211113] ACPI Warning: Incorrect checksum in table [OEMB] - 7B, should be 76 (20090903/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.212633] ACPI Warning: Incorrect checksum in table [OEMB] - E1, should be D3 (20090903/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.213771] ACPI Warning: Incorrect checksum in table [OEMB] - EC, should be E7 (20090903/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.214423] ACPI Warning: Incorrect checksum in table [OEMB] - FD, should be EF (20090903/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.215632] ACPI Warning: Incorrect checksum in table [OEMB] - 0x0B, should be 0x5B (20100428/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.216249] ACPI Warning: Incorrect checksum in table [ATKG] - 0x27, should be 0xE5 (20110112/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.217957] ACPI Warning: Incorrect checksum in table [OEMB] - 69, should be 5F (20090903/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.221945] mtrr: your CPUs had inconsistent MTRRdefType settings summary klog: MEDIUM Kernel message: [ 0.222869] ACPI Warning: Incorrect checksum in table [ATKG] - B0, should be 4A (20090903/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.223245] ACPI Warning: Incorrect checksum in table [OEMB] - DB, should be DA (20090903/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.223485] [Firmware Bug]: PCI: MMCONFIG at [mem 0xf0000000-0xf3ffffff] not reserved in ACPI motherboard resources summary klog: MEDIUM Kernel message: [ 0.226224] ACPI Warning: Incorrect checksum in table [ATKG] - 53, should be 84 (20090903/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.227129] ACPI Warning: Incorrect checksum in table [ATKG] - 0x11, should be 0xE5 (20100428/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.228535] ACPI Warning: Incorrect checksum in table [OEMB] - 77, should be 6F (20100121/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.232350] ACPI Warning: Incorrect checksum in table [ATKG] - 15, should be 73 (20090903/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.232460] ACPI Warning: Incorrect checksum in table [OEMB] - 8C, should be 87 (20090903/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.232830] ACPI Warning: Incorrect checksum in table [OEMB] - 0xC2, should be 0x84 (20100428/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.233493] ACPI Warning: Incorrect checksum in table [GSCI] - 58, should be AA (20090903/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.233542] ACPI Warning: Incorrect checksum in table [GSCI] - 0x70, should be 0xD2 (20100428/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.233946] ACPI Warning: Incorrect checksum in table [ATKG] - 1E, should be E5 (20090903/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.235518] ACPI Warning: Incorrect checksum in table [ASF!] - D8, should be 6E (20090903/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.236465] ACPI Warning: Incorrect checksum in table [OEMB] - 1D, should be 10 (20090903/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.241360] ACPI Warning: Incorrect checksum in table [OEMB] - 0xBD, should be 0x89 (20100428/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.242473] ACPI Warning: Incorrect checksum in table [GSCI] - 0x28, should be 0x8A (20100428/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.244995] ACPI Warning: Incorrect checksum in table [OEMB] - 17, should be 67 (20090903/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.246137] ACPI Warning: Incorrect checksum in table [ATKG] - F1, should be E5 (20090903/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.249246] ACPI Warning: Incorrect checksum in table [OEMB] - 70, should be 6D (20090903/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.251711] ACPI Warning: Incorrect checksum in table [ATKG] - B0, should be E5 (20090903/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.256141] ACPI Warning: Incorrect checksum in table [ATKG] - 0xAF, should be 0x59 (20110413/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.257910] ACPI Warning: Incorrect checksum in table [OEMB] - 04, should be 54 (20090903/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.261013] ACPI Warning: Incorrect checksum in table [OEMB] - DF, should be 2F (20090903/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.265541] ACPI Warning: Incorrect checksum in table [OEMB] - E0, should be 30 (20090903/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.266577] ACPI Warning: Incorrect checksum in table [GSCI] - 3B, should be BF (20090903/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.279154] ACPI Warning: Incorrect checksum in table [OEMB] - B9, should be AE (20090903/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.288180] ACPI Warning: Incorrect checksum in table [ATKG] - 0x81, should be 0x59 (20110112/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.308095] ACPI Warning: Incorrect checksum in table [SSDT] - 1F, should be 7F (20090903/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.310767] ACPI Warning: Incorrect checksum in table [OEMB] - 0x72, should be 0x6A (20100428/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.314160] ACPI Warning: Incorrect checksum in table [OEMB] - 91, should be 90 (20090903/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.314603] ACPI Warning: Incorrect checksum in table [OEMB] - 8B, should be 8A (20090903/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.314675] mtrr: your CPUs had inconsistent variable MTRR settings summary klog: MEDIUM Kernel message: [ 0.316718] ACPI Warning: Incorrect checksum in table [OEMB] - 27, should be 22 (20090903/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.316734] ACPI Warning: Incorrect checksum in table [TAMG] - 0xF3, should be 0xF2 (20100428/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.317152] ACPI Warning: Incorrect checksum in table [OEMB] - C1, should be B4 (20090903/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.317685] ACPI Warning: Incorrect checksum in table [ASF!] - 0xFC, should be 0x98 (20100428/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.319223] ACPI Warning: Incorrect checksum in table [OEMB] - E7, should be E2 (20090903/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.323465] ACPI Warning: Incorrect checksum in table [OEMB] - 0x8D, should be 0x8C (20100428/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.328929] ACPI Warning: Incorrect checksum in table [OEMB] - 0x45, should be 0x40 (20100428/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.328954] ACPI Warning: Incorrect checksum in table [ASF!] - D9, should be 6D (20090903/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.330000] ACPI Warning: Incorrect checksum in table [TCPA] - 0xD1, should be 0x75 (20100428/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.330140] ACPI Warning: Incorrect checksum in table [ATKG] - 0xE3, should be 0xDC (20110112/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.330280] ACPI Warning: Incorrect checksum in table [OEMB] - DE, should be D9 (20090903/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.330793] ACPI Warning: Incorrect checksum in table [TCPA] - 0x00, should be 0x9A (20110112/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.331948] ACPI Warning: Incorrect checksum in table [OEMB] - 0C, should be 0B (20090903/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.333155] ACPI Warning: Incorrect checksum in table [SSDT] - 4A, should be D9 (20090903/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.333591] ACPI Warning: Incorrect checksum in table [TAMG] - 0xF4, should be 0xF3 (20110112/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.335745] ACPI Warning: Incorrect checksum in table [OEMB] - 80, should be 78 (20090903/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.337368] ACPI Warning: Incorrect checksum in table [OEMB] - 8B, should be 86 (20090903/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.338801] ACPI Warning: Incorrect checksum in table [OEMB] - 8B, should be 7E (20090903/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.339584] ACPI Warning: Incorrect checksum in table [OEMB] - 0xE2, should be 0xD5 (20100428/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.339628] ACPI Warning: Incorrect checksum in table [OEMB] - 91, should be 88 (20090903/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.339857] ACPI Warning: Incorrect checksum in table [OEMB] - 6D, should be 60 (20090903/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.340121] ACPI Warning: Incorrect checksum in table [ATKG] - 0x1B, should be 0xE5 (20110112/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.341276] ACPI Warning: Incorrect checksum in table [ASF!] - F2, should be 8D (20090903/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.342985] ACPI Warning: Incorrect checksum in table [OEMB] - 18, should be 13 (20090903/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.343577] ACPI Warning: Incorrect checksum in table [OEMB] - 0xD1, should be 0xCA (20100428/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.344373] ACPI Warning: Incorrect checksum in table [OEMB] - C5, should be B8 (20090903/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.345244] ACPI Warning: Incorrect checksum in table [OEMB] - 0xA5, should be 0x9C (20100428/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.346079] ACPI Warning: Incorrect checksum in table [OEMB] - 7A, should be 71 (20090903/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.347883] ACPI Warning: Incorrect checksum in table [OEMB] - 5C, should be 53 (20090903/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.348936] ACPI Warning: Incorrect checksum in table [OEMB] - 0x56, should be 0x49 (20100428/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.349163] ACPI Warning: Incorrect checksum in table [OEMB] - E7, should be DA (20090903/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.350013] ACPI Warning: Incorrect checksum in table [OEMB] - D3, should be C6 (20090903/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.350096] ACPI Warning: Incorrect checksum in table [ATKG] - 13, should be 53 (20090903/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.350158] ACPI Warning: Incorrect checksum in table [ATKG] - 0x13, should be 0xC8 (20110112/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.350335] ACPI Warning: Incorrect checksum in table [SSDT] - 0x83, should be 0x37 (20110112/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.350784] ACPI Warning: Incorrect checksum in table [iEIT] - 0x5C, should be 0x51 (20100428/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.351065] ACPI Warning: Incorrect checksum in table [SSDT] - 0x04, should be 0xCA (20110112/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.353356] ACPI Warning: Incorrect checksum in table [ATKG] - 0x05, should be 0x36 (20100428/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.356280] ACPI Warning: Incorrect checksum in table [TCPA] - 0x33, should be 0xD7 (20100428/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.356754] ACPI Warning: Incorrect checksum in table [ASF!] - ED, should be 83 (20090903/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.357018] ACPI Warning: Incorrect checksum in table [OEMB] - 0xA6, should be 0xA1 (20100428/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.357902] ACPI Warning: Incorrect checksum in table [ATKG] - 0xE9, should be 0xFE (20110112/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.358086] ACPI Warning: Incorrect checksum in table [OEMB] - 0x11, should be 0x10 (20100428/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.359915] ACPI Warning: Incorrect checksum in table [ATKG] - 0x7D, should be 0x59 (20110112/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.360335] ACPI Warning: Incorrect checksum in table [GSCI] - 0x28, should be 0xD4 (20110112/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.363621] ACPI Warning: Incorrect checksum in table [OEMB] - 3C, should be 3B 20090521 tbutils-246 summary klog: MEDIUM Kernel message: [ 0.363728] ACPI Warning: Incorrect checksum in table [OEMB] - 75, should be 74 (20090903/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.363981] ACPI Warning: Incorrect checksum in table [OEMB] - BB, should be AE (20090903/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.366917] ACPI Warning: Incorrect checksum in table [OEMB] - BD, should be B6 (20090903/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.367185] ACPI Warning: Incorrect checksum in table [OEMB] - B2, should be A5 (20090903/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.367524] ACPI Warning: Incorrect checksum in table [ATKG] - 0xAA, should be 0x59 (20100428/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.368838] ACPI Warning: Incorrect checksum in table [OEMB] - 23, should be 1E (20090903/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.369986] ACPI Warning: Incorrect checksum in table [OEMB] - 0x61, should be 0x58 (20100428/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.370263] ACPI Warning: Incorrect checksum in table [ATKG] - 0x73, should be 0xE5 (20110112/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.371572] ACPI Warning: Incorrect checksum in table [ATKG] - 0xFB, should be 0xE5 (20100428/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.375383] ACPI Warning: Incorrect checksum in table [OEMB] - 0x90, should be 0x83 (20100428/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.378931] ACPI Warning: Incorrect checksum in table [OEMB] - 33, should be 2C (20090903/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.379815] ACPI Warning: Incorrect checksum in table [SSDT] - D5, should be 3E (20090903/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.380609] ACPI Warning: Incorrect checksum in table [SSDT] - 8C, should be DC (20090903/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.381211] ACPI Warning: Incorrect checksum in table [OEMB] - 8E, should be 89 (20090903/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.381478] [Firmware Bug]: PCI: MMCONFIG at [mem 0xe0000000-0xe06fffff] not reserved in ACPI motherboard resources summary klog: MEDIUM Kernel message: [ 0.383518] ACPI Warning: Incorrect checksum in table [ATKG] - 0x0F, should be 0xE7 (20100428/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.384684] ACPI Warning: Incorrect checksum in table [OEMB] - 0x4E, should be 0x3F (20100428/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.385777] ACPI Warning: Incorrect checksum in table [TCPA] - 00, should be 89 (20090903/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.388556] ACPI Warning: Incorrect checksum in table [ATKG] - 6A, should be E5 (20090903/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.388736] ACPI Warning: Incorrect checksum in table [OEMB] - 8C, should be 83 (20090903/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.390975] [Firmware Bug]: PCI: MMCONFIG at [mem 0xe0000000-0xe08fffff] not reserved in ACPI motherboard resources summary klog: MEDIUM Kernel message: [ 0.396197] [Firmware Bug]: ACPI: Invalid BIOS _PSS frequency: 0x0 MHz summary klog: MEDIUM Kernel message: [ 0.396945] ACPI Warning: Incorrect checksum in table [TCPA] - 00, should be 96 (20090903/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.397644] ACPI Warning: Incorrect checksum in table [ATKG] - F9, should be E5 (20090903/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.398231] ACPI Warning: Incorrect checksum in table [ATKG] - 12, should be 07 (20090903/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.398290] ACPI Warning: Incorrect checksum in table [ATKG] - 01, should be 23 (20090903/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.400212] ACPI Warning: Incorrect checksum in table [TCPA] - 0x00, should be 0x88 (20110112/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.401117] ACPI Warning: Incorrect checksum in table [ATKG] - 0F, should be E7 (20090903/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.404616] ACPI Warning: Incorrect checksum in table [OEMB] - A5, should be A0 (20090903/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.407719] ACPI Warning: Incorrect checksum in table [OEMB] - 72, should be 69 (20090903/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.414781] ACPI Warning: Incorrect checksum in table [OEMB] - CD, should be C8 (20090903/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.418105] ACPI Warning: Incorrect checksum in table [ATKG] - 76, should be FE (20090903/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.420323] ACPI Warning: Incorrect checksum in table [ATKG] - 0xC3, should be 0x59 (20110112/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.434593] ACPI Warning: Incorrect checksum in table [GSCI] - D2, should be A5 (20090903/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.438019] ACPI Warning: Incorrect checksum in table [ATKG] - C8, should be E5 (20090903/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.441805] ACPI Warning: Incorrect checksum in table [OEMB] - B2, should be B1 (20090903/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.455674] ACPI Warning: Incorrect checksum in table [SSDT] - 83, should be 7F (20090903/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.459126] ACPI Warning: Incorrect checksum in table [SSDT] - 4C, should be 12 (20090903/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.462573] ACPI Warning: Incorrect checksum in table [OEMB] - 95, should be 5E 20090521 tbutils-246 summary klog: MEDIUM Kernel message: [ 0.479385] ACPI Warning: Incorrect checksum in table [TCPA] - 0x00, should be 0x88 (20100428/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.487180] ACPI Warning: Incorrect checksum in table [TAMG] - 0x33, should be 0x32 (20110112/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.487365] ACPI Warning: Incorrect checksum in table [TAMG] - 0x99, should be 0x98 (20110112/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.490256] ACPI Warning: Incorrect checksum in table [ATKG] - 0x22, should be 0x53 (20110112/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.491491] ACPI Warning: Incorrect checksum in table [SSDT] - 0x4A, should be 0xD9 (20110112/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.494198] ACPI Warning: Incorrect checksum in table [SSDT] - 0x37, should be 0xC7 (20110112/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.496094] ACPI Warning: Incorrect checksum in table [TCPA] - F8, should be 9C (20090903/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.497913] ACPI Warning: Incorrect checksum in table [TAMG] - 0xFA, should be 0xF9 (20100428/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.498775] ACPI Warning: Incorrect checksum in table [TAMG] - 0xB2, should be 0xB1 (20100428/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.498976] ACPI Warning: Incorrect checksum in table [GSCI] - 7B, should be 04 (20090903/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.526190] ACPI Warning (tbutils-0217): Incorrect checksum in table [OEMB] - F3, should be EE [20080926] summary klog: MEDIUM Kernel message: [ 0.534826] ACPI Warning: Incorrect checksum in table [TCPA] - 0x00, should be 0x7F (20110112/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.538081] ACPI Warning: Incorrect checksum in table [OEMB] - C1, should be BC (20090903/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.548650] ACPI Warning: Incorrect checksum in table [TCPA] - 00, should be 87 (20090903/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.550271] ACPI Warning: Incorrect checksum in table [ATKG] - 0xDC, should be 0x0E (20110112/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.568235] ACPI Warning: Incorrect checksum in table [TCPA] - 00, should be 7F 20090521 tbutils-246 summary klog: MEDIUM Kernel message: [ 0.581397] ACPI Warning: Incorrect checksum in table [ATKG] - 0x24, should be 0x16 (20110112/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.591409] ACPI Warning: Incorrect checksum in table [ATKG] - 0x1E, should be 0x16 (20110112/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.612305] ACPI Warning: Incorrect checksum in table [SSDT] - 6C, should be FB (20090903/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.614155] ACPI Warning: Incorrect checksum in table [SSDT] - 37, should be C7 (20090903/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.625680] [Firmware Bug]: PCI: MMCONFIG at [mem 0xe0000000-0xefffffff] not reserved in ACPI motherboard resources summary klog: MEDIUM Kernel message: [ 0.628646] ACPI Warning: Incorrect checksum in table [OEMB] - 0xFA, should be 0x1E (20100428/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.641157] ACPI Warning: Incorrect checksum in table [OEMB] - C4, should be C1 (20090903/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.644838] [Firmware Bug]: PCI: MMCONFIG at [mem 0xe0000000-0xe09fffff] not reserved in ACPI motherboard resources summary klog: MEDIUM Kernel message: [ 0.646493] ACPI Warning: Incorrect checksum in table [OEMB] - 0x5F, should be 0x5A (20100428/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.653985] ACPI Warning: Incorrect checksum in table [TAMG] - 0x4A, should be 0x49 (20110112/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.656750] ACPI Warning: Incorrect checksum in table [OEMB] - 06, should be 05 20090521 tbutils-246 summary klog: MEDIUM Kernel message: [ 0.663194] [Firmware Bug]: ACPI: no secondary bus range in _CRS summary klog: MEDIUM Kernel message: [ 0.664875] ACPI Warning: Incorrect checksum in table [TAMG] - 0x45, should be 0x44 (20110112/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.666686] ACPI Warning: Incorrect checksum in table [TAMG] - 0x9E, should be 0x9D (20100428/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.670109] ACPI Warning: Incorrect checksum in table [OEMB] - 5B, should be 4E (20090903/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.670182] ACPI Warning: Incorrect checksum in table [TAMG] - C3, should be C2 (20090903/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.670980] ACPI Warning: Incorrect checksum in table [TCPA] - 0x00, should be 0x7F (20100428/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.673104] ACPI Warning: Incorrect checksum in table [OEMB] - 8C, should be 7D (20090903/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.674282] ACPI Warning: Incorrect checksum in table [TAMG] - 0x15, should be 0x14 (20110112/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.675162] ACPI Warning: Incorrect checksum in table [TAMG] - 0x05, should be 0x04 (20110413/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.677386] ACPI Warning: Incorrect checksum in table [OEMB] - 94, should be 93 (20090903/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.678233] ACPI Warning: Incorrect checksum in table [OEMB] - 0x55, should be 0x50 (20100428/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.678877] ACPI Warning: Incorrect checksum in table [OEMB] - 88, should be 7F (20090903/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.681297] ACPI Warning: Incorrect checksum in table [OEMB] - DA, should be D9 (20090903/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.688066] ACPI Warning: Incorrect checksum in table [OEMB] - 60, should be 5F (20090903/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.695887] ACPI Warning: Incorrect checksum in table [OEMB] - C1, should be C0 (20090903/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.696587] ACPI Warning: Incorrect checksum in table [OEMB] - 0xEE, should be 0xE6 (20100428/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.697769] ACPI Warning: Incorrect checksum in table [OEMB] - 0xFC, should be 0xF7 (20100428/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.700202] [Firmware Bug]: powernow-k8: No PSB or ACPI _PSS objects summary klog: MEDIUM Kernel message: [ 0.702121] ACPI Warning: Incorrect checksum in table [OEMB] - 0x84, should be 0x7B (20100428/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.705041] ACPI Warning: Incorrect checksum in table [OEMB] - 0xF3, should be 0xF2 (20100428/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.710890] ACPI Warning: Incorrect checksum in table [OEMB] - DF, should be D2 (20090903/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.715065] ACPI Warning: Incorrect checksum in table [OEMB] - 67, should be 64 (20090903/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.715951] ACPI Warning: Incorrect checksum in table [OEMB] - 0x9B, should be 0x93 (20100428/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.717350] ACPI Warning: Incorrect checksum in table [OEMB] - 0x5C, should be 0x55 (20100428/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.719490] ACPI Warning: Incorrect checksum in table [OEMB] - 0x3A, should be 0x39 (20100428/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.725974] ACPI Warning: Incorrect checksum in table [OEMB] - 0x7E, should be 0x75 (20100428/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.755111] ACPI Warning: Incorrect checksum in table [OEMB] - 2F, should be 2A (20090903/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.775831] ACPI Warning: Incorrect checksum in table [TCPA] - 0x00, should be 0x87 (20110112/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.777581] ACPI Warning: Incorrect checksum in table [TAMG] - 0xF9, should be 0xF8 (20110112/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.779737] ACPI Warning: Incorrect checksum in table [TAMG] - 0x83, should be 0x82 (20110112/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.780967] ACPI Warning: Incorrect checksum in table [TAMG] - FA, should be F9 (20090903/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.781225] ACPI Warning: Incorrect checksum in table [TAMG] - 0x10, should be 0x0F (20110112/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.781345] ACPI Warning: Incorrect checksum in table [TAMG] - 0xB2, should be 0xB1 (20110112/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.783246] ACPI Warning: Incorrect checksum in table [TAMG] - 0x7D, should be 0x7C (20100428/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.786539] ACPI Warning: Incorrect checksum in table [TAMG] - 0x2D, should be 0x2C (20110112/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.787253] ACPI Warning: Incorrect checksum in table [TAMG] - 0x10, should be 0x0F (20100428/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.788032] ACPI Warning: Incorrect checksum in table [TAMG] - 0x04, should be 0x03 (20110413/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.788607] ACPI Warning: Incorrect checksum in table [TAMG] - 0xA2, should be 0xA1 (20110112/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.791560] ACPI Warning: Incorrect checksum in table [SSDT] - 0x3F, should be 0x1F (20110112/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.795423] ACPI Warning: Incorrect checksum in table [SSDT] - 0x3F, should be 0x1F (20100428/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.805111] ACPI Warning: Incorrect checksum in table [TCPA] - 00, should be 7E (20090903/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.831199] ACPI Warning: Incorrect checksum in table [OEMB] - B7, should be B6 (20090903/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.872036] ACPI Warning: Incorrect checksum in table [OEMB] - EC, should be E3 (20090903/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.875591] ACPI Warning: Incorrect checksum in table [OEMB] - 14, should be 13 (20090903/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.877093] ACPI Warning: Incorrect checksum in table [OEMB] - 0x89, should be 0x80 (20100428/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.892915] ACPI Warning: Incorrect checksum in table [OEMB] - 0xCE, should be 0xCD (20100428/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.899338] ACPI Warning: Incorrect checksum in table [OEMB] - 0xDD, should be 0xD4 (20100428/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.940265] ACPI Warning: Incorrect checksum in table [TAMG] - 0x14, should be 0x13 (20110112/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.941821] ACPI Warning: Incorrect checksum in table [SSDT] - 0x3F, should be 0x91 (20110413/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.943511] ACPI Warning: Incorrect checksum in table [TCPA] - 0x00, should be 0x7E (20110413/tbutils-314) summary klog: MEDIUM Kernel message: [ 0.972652] ACPI Warning: Incorrect checksum in table [OEMB] - FA, should be F7 (20090903/tbutils-314) summary klog: MEDIUM Kernel message: [ 1.005834] ACPI Warning: Incorrect checksum in table [OEMB] - 0x1D, should be 0x1C (20100428/tbutils-314) summary klog: MEDIUM Kernel message: [ 1.020525] ACPI Warning: Incorrect checksum in table [TAMG] - 0xE8, should be 0xE7 (20100428/tbutils-314) summary klog: MEDIUM Kernel message: [ 1.023813] ACPI Warning: Incorrect checksum in table [OEMB] - 0x82, should be 0x81 (20100428/tbutils-314) summary klog: MEDIUM Kernel message: [ 1.168945] ACPI Warning: Incorrect checksum in table [OEMB] - 0x04, should be 0xFD (20100428/tbutils-314) summary klog: MEDIUM Kernel message: [ 1.174038] ACPI Warning: Incorrect checksum in table [TCPA] - 0x00, should be 0x9B (20100428/tbutils-314) summary klog: MEDIUM Kernel message: [ 1.176461] [Firmware Bug]: powernow-k8: No compatible ACPI _PSS objects found. summary klog: MEDIUM Kernel message: [ 1.176462] [Firmware Bug]: powernow-k8: Try again with latest BIOS. summary klog: MEDIUM Kernel message: [ 1.179893] ACPI Warning: Incorrect checksum in table [ATKG] - 0x81, should be 0x59 (20100428/tbutils-314) summary klog: MEDIUM Kernel message: [ 1.320114] ACPI Warning: Incorrect checksum in table [ATKG] - 0x9D, should be 0xE5 (20110112/tbutils-314) summary klog: MEDIUM Kernel message: [ 1.505441] ACPI Warning: Incorrect checksum in table [TAMG] - 7C, should be 7B (20090903/tbutils-314) summary klog: MEDIUM Kernel message: [ 1.507734] ACPI Warning: Incorrect checksum in table [TAMG] - 2D, should be 2C (20090903/tbutils-314) summary klog: MEDIUM Kernel message: [ 1.509153] ACPI Warning: Incorrect checksum in table [TAMG] - C0, should be BF (20090903/tbutils-314) summary klog: MEDIUM Kernel message: [ 1.512057] ACPI Warning: Incorrect checksum in table [OEMB] - CA, should be C9 (20090903/tbutils-314) summary klog: MEDIUM Kernel message: [ 1.515657] ACPI Warning: Incorrect checksum in table [TAMG] - 0xC5, should be 0xC4 (20110112/tbutils-314) summary klog: MEDIUM Kernel message: [ 1.528248] ACPI Warning: Incorrect checksum in table [TAMG] - 0x98, should be 0x97 (20100428/tbutils-314) summary klog: MEDIUM Kernel message: [ 1.529653] ACPI Warning: Incorrect checksum in table [TAMG] - 0x7C, should be 0x7B (20100428/tbutils-314) summary klog: MEDIUM Kernel message: [ 1.535278] ACPI Warning: Incorrect checksum in table [TCPA] - 00, should be 88 (20090903/tbutils-314) summary klog: MEDIUM Kernel message: [ 1.545790] ACPI Warning: Incorrect checksum in table [OEMB] - D0, should be CF (20090903/tbutils-314) summary klog: MEDIUM Kernel message: [ 1.559068] ACPI Warning: Incorrect checksum in table [OEMB] - C5, should be C4 (20090903/tbutils-314) summary klog: MEDIUM Kernel message: [ 1.586563] ACPI Warning: Incorrect checksum in table [OEMB] - D7, should be D3 (20090903/tbutils-314) summary klog: MEDIUM Kernel message: [ 1.601784] ACPI Warning: Incorrect checksum in table [OEMB] - 5D, should be 55 (20090903/tbutils-314) summary klog: MEDIUM Kernel message: [ 1.739479] ACPI Warning: Incorrect checksum in table [SSDT] - 0x3F, should be 0x91 (20110112/tbutils-314) summary klog: MEDIUM Kernel message: [ 2.039517] [Firmware Bug]: ACPI: Invalid BIOS _PSS frequency: 0x80000000 MHz summary klog: MEDIUM Kernel message: [ 2.173935] ACPI Warning: Incorrect checksum in table [OEMB] - C3, should be C2 (20090903/tbutils-314) summary klog: MEDIUM Kernel message: [ 2.229498] ACPI Warning: Incorrect checksum in table [TAMG] - 0xC6, should be 0xC5 (20100428/tbutils-314) summary klog: MEDIUM Kernel message: [ 3.033154] ACPI Warning: Incorrect checksum in table [OEMB] - 0x87, should be 0x84 (20100428/tbutils-314) summary klog: MEDIUM Kernel message: [ 3.382436] ACPI Warning: Incorrect checksum in table [TCPA] - 00, should be 7F (20090903/tbutils-314) summary klog: MEDIUM Kernel message: [ 3.382442] ACPI Warning: Incorrect checksum in table [_RAT] - 00, should be 63 (20090903/tbutils-314) summary klog: MEDIUM Kernel message: [ 3.644168] ACPI Warning: Incorrect checksum in table [TCPA] - 0xF8, should be 0x9C (20110413/tbutils-314) summary klog: MEDIUM Kernel message: [ 4.046031] ACPI Warning: Incorrect checksum in table [OEMB] - 4A, should be 47 (20090903/tbutils-314) summary summary Low failures: 14 summary klog: LOW Kernel message: [ 0.094856] [Firmware Bug]: ACPI: No _BQC method, cannot determine initial brightness summary klog: LOW Kernel message: [ 0.810246] [Firmware Bug]: ACPI(Z01I) defines _DOD but not _DOS summary klog: LOW Kernel message: [ 1.183989] [Firmware Bug]: ACPI(PEGD) defines _DOD but not _DOS summary klog: LOW Kernel message: [ 1.398000] [Firmware Bug]: ACPI(Z00P) defines _DOD but not _DOS summary klog: LOW Kernel message: [ 2.478380] [Firmware Bug]: ACPI(NGFX) defines _DOD but not _DOS summary klog: LOW Kernel message: [ 3.139648] [Firmware Bug]: ACPI(XVS0) defines _DOD but not _DOS summary klog: LOW Kernel message: [ 3.663829] [Firmware Bug]: ACPI(GFX0) defines _DOD but not _DOS summary klog: LOW Kernel message: [ 4.002664] [Firmware Bug]: ACPI(EVGA) defines _DOD but not _DOS summary klog: LOW Kernel message: [ 4.983204] [Firmware Bug]: ACPI(MXM3) defines _DOD but not _DOS summary klog: LOW Kernel message: [ 8.316300] [Firmware Bug]: ACPI(VGA0) defines _DOD but not _DOS summary klog: LOW Kernel message: [ 10.080352] [Firmware Bug]: ACPI(VGA) defines _DOD but not _DOS summary klog: LOW Kernel message: [ 15.395484] [Firmware Bug]: ACPI(PEGP) defines _DOD but not _DOS summary klog: LOW Kernel message: [ 20.435766] [Firmware Bug]: Duplicate ACPI video bus devices for the same VGA controller, please try module parameter "video.allow_duplicates=1"if the current driver doesn't work. summary klog: LOW Kernel message: [ 24.824888] [Firmware Bug]: ACPI(IGPU) defines _DOD but not _DOS summary summary Other failures: NONE summary summary Test |Pass |Fail |Abort|Warn |Skip |Info | summary ---------------+-----+-----+-----+-----+-----+-----+ summary klog | | 1589| | | | | summary ---------------+-----+-----+-----+-----+-----+-----+ summary Total: | 0| 1589| 0| 0| 0| 0| summary ---------------+-----+-----+-----+-----+-----+-----+ fwts-test/klog-0001/klog-0003.log000066400000000000000000000000701231470457100163500ustar00rootroot00000000000000klog Found 1589 unique errors in kernel log. fwts-test/klog-0001/klog.txt000066400000000000000000005511101231470457100160340ustar00rootroot00000000000000[ 0.000000] ACPI: BIOS bug: multiple APIC/MADT found, using 0 [ 0.000000] ACPI Error: 32/64X address mismatch in Gpe0Block: 00008018/0000000000008028, using 32 (20090903/tbfadt-427) [ 0.000000] ACPI Error: 32/64X address mismatch in Gpe0Block: 00008020/0000000000008028, using 32 (20090903/tbfadt-427) [ 0.000000] ACPI Error: 32/64X address mismatch in Gpe0Block: 0x00008020/0x0000000000008028, using 32 (20110112/tbfadt-427) [ 0.000000] ACPI Error: 32/64X address mismatch in Pm2ControlBlock: 00008030/0000000000008020, using 32 (20090903/tbfadt-427) [ 0.000000] ACPI Error: 32/64X address mismatch in Pm2ControlBlock: 00008800/0000000000008100, using 32 (20090903/tbfadt-427) [ 0.000000] ACPI Error: 32/64X address mismatch in Pm2ControlBlock: 0x00000900/0x0000000000000800, using 32 (20110112/tbfadt-427) [ 0.000000] ACPI Error: 32/64X address mismatch in Pm2ControlBlock: 0x00001218/0x0000000000001214, using 32 (20100428/tbfadt-427) [ 0.000000] ACPI Error: 32/64X address mismatch in Pm2ControlBlock: 0x00001218/0x0000000000001214, using 32 (20110413/tbfadt-430) [ 0.000000] ACPI Error: 32/64X address mismatch in Pm2ControlBlock: 0x00008800/0x0000000000008100, using 32 (20110112/tbfadt-427) [ 0.000000] ACPI Error: A valid RSDP was not found (20090903/tbxfroot-219) [ 0.000000] ACPI Error: A valid RSDP was not found (20100428/tbxfroot-219) [ 0.000000] ACPI Error: A valid RSDP was not found (20110112/tbxfroot-219) [ 0.000000] ACPI Warning: 32/64 FACS address mismatch in FADT - two FACS tables! 20090521 tbfadt-370 [ 0.000000] ACPI Warning: 32/64 FACS address mismatch in FADT - two FACS tables! (20090903/tbfadt-369) [ 0.000000] ACPI Warning: 32/64 FACS address mismatch in FADT - two FACS tables! (20100121/tbfadt-369) [ 0.000000] ACPI Warning: 32/64 FACS address mismatch in FADT - two FACS tables! (20100428/tbfadt-369) [ 0.000000] ACPI Warning: 32/64 FACS address mismatch in FADT - two FACS tables! (20100702/tbfadt-369) [ 0.000000] ACPI Warning: 32/64 FACS address mismatch in FADT - two FACS tables! (20101013/tbfadt-369) [ 0.000000] ACPI Warning: 32/64 FACS address mismatch in FADT - two FACS tables! (20110112/tbfadt-369) [ 0.000000] ACPI Warning: 32/64 FACS address mismatch in FADT - two FACS tables! (20110316/tbfadt-369) [ 0.000000] ACPI Warning: 32/64 FACS address mismatch in FADT - two FACS tables! (20110413/tbfadt-369) [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0x3776BF40/0x000000003776ED40, using 32 (20100428/tbfadt-486) [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0x38FE4E40/0x0000000038FE4D40, using 32 (20110112/tbfadt-486) [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0x38FE4E40/0x0000000038FE4D40, using 32 (20110413/tbfadt-489) [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0x3F465F40/0x000000003F465F80, using 32 (20110112/tbfadt-486) [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0x3F473F40/0x000000003F473F80, using 32 (20100428/tbfadt-486) [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0x3F509F40/0x000000003F509F80, using 32 (20100428/tbfadt-486) [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0x3F509F40/0x000000003F509F80, using 32 (20110112/tbfadt-486) [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0x3F611E40/0x000000003F611D40, using 32 (20100428/tbfadt-486) [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0x3F611E40/0x000000003F611D40, using 32 (20110112/tbfadt-486) [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0x3F611E40/0x000000003F611D40, using 32 (20110413/tbfadt-489) [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0x6FB75F40/0x000000006FB75F80, using 32 (20110112/tbfadt-486) [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0x77603F40/0x0000000077603F80, using 32 (20110112/tbfadt-486) [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0x77603F40/0x0000000077603F80, using 32 (20110413/tbfadt-489) [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0x7762DF40/0x000000007762DF80, using 32 (20110112/tbfadt-486) [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0x77630F40/0x0000000077630F80, using 32 (20110112/tbfadt-486) [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0x7776BF40/0x000000007776ED40, using 32 (20100428/tbfadt-486) [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0x7776BF40/0x000000007776ED40, using 32 (20110112/tbfadt-486) [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0x78FE4E40/0x0000000078FE4D40, using 32 (20110413/tbfadt-489) [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0x7A7E4E40/0x000000007A7E4D40, using 32 (20110112/tbfadt-486) [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0x7BE20F40/0x000000007BE20F80, using 32 (20110413/tbfadt-489) [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0x7D7E4E40/0x000000007D7E4D40, using 32 (20110112/tbfadt-486) [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0x7D8C4F40/0x000000007D8C5E40, using 32 (20110413/tbfadt-489) [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0x7F611E40/0x000000007F611D40, using 32 (20110112/tbfadt-486) [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0x7FCEBF40/0x000000007FCE7F40, using 32 (20110112/tbfadt-486) [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0x7FD5AF40/0x000000007FD5FF40, using 32 (20110112/tbfadt-486) [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xAAD87F40/0x00000000AADA1D40, using 32 (20110112/tbfadt-486) [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xAAD87F40/0x00000000AADA1D40, using 32 (20110316/tbfadt-489) [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xAAD87F40/0x00000000AADA1D40, using 32 (20110413/tbfadt-489) [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xAADB7F40/0x00000000AADD1D40, using 32 (20100428/tbfadt-486) [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xAADB7F40/0x00000000AADD1D40, using 32 (20110112/tbfadt-486) [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xAADB9F40/0x00000000AADD3D40, using 32 (20110112/tbfadt-486) [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xAAF2AF40/0x00000000AAF2DD40, using 32 (20110112/tbfadt-486) [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xAAFE4E40/0x00000000AAFE4D40, using 32 (20110112/tbfadt-486) [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xAB62DF40/0x00000000AB62DF80, using 32 (20100428/tbfadt-486) [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xAB62DF40/0x00000000AB62DF80, using 32 (20110112/tbfadt-486) [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xAFB77F40/0x00000000AFB77F80, using 32 (20110112/tbfadt-486) [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xB5F17E40/0x00000000B5F17D40, using 32 (20100428/tbfadt-486) [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xB5F1BE40/0x00000000B5F1BD40, using 32 (20100428/tbfadt-486) [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xB6D5AF40/0x00000000B6D61D40, using 32 (20100428/tbfadt-486) [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xB6DB9F40/0x00000000B6DD3D40, using 32 (20110112/tbfadt-486) [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xB762CF40/0x00000000B762CF80, using 32 (20110112/tbfadt-486) [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xB7B1CE40/0x00000000B7B1CD40, using 32 (20110112/tbfadt-486) [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xB7B1CE40/0x00000000B7B1CD40, using 32 (20110316/tbfadt-489) [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xB7B1CE40/0x00000000B7B1CD40, using 32 (20110413/tbfadt-489) [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xB8FE4E40/0x00000000B8FE4D40, using 32 (20110112/tbfadt-486) [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xBAD17F40/0x00000000BAD31D40, using 32 (20110112/tbfadt-486) [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xBAD87F40/0x00000000BADA1D40, using 32 (20110112/tbfadt-486) [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xBADABF40/0x00000000BADAED40, using 32 (20100428/tbfadt-486) [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xBADABF40/0x00000000BADAED40, using 32 (20110112/tbfadt-486) [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xBAF1CF40/0x00000000BAF1FD40, using 32 (20110112/tbfadt-486) [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xBAFE4E40/0x00000000BAFE4D40, using 32 (20110112/tbfadt-486) [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xBAFE5E40/0x00000000BAFE5D40, using 32 (20110112/tbfadt-486) [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xBB4D1F40/0x00000000BB4DFD40, using 32 (20110112/tbfadt-486) [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xBB583F40/0x00000000BB59DD40, using 32 (20100428/tbfadt-486) [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xBB583F40/0x00000000BB59DD40, using 32 (20110112/tbfadt-486) [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xBB5B3F40/0x00000000BB5CDD40, using 32 (20100428/tbfadt-486) [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xBB5B3F40/0x00000000BB5CDD40, using 32 (20110112/tbfadt-486) [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xBB5B3F40/0x00000000BB5CDD40, using 32 (20110413/tbfadt-489) [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xBB62CF40/0x00000000BB62CF80, using 32 (20100428/tbfadt-486) [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xBB62DF40/0x00000000BB62DF80, using 32 (20100428/tbfadt-486) [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xBB648F40/0x00000000BB64BD40, using 32 (20110112/tbfadt-486) [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xBB649F40/0x00000000BB64CD40, using 32 (20110112/tbfadt-486) [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xBB76BF40/0x00000000BB76ED40, using 32 (20100428/tbfadt-486) [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xBBE27F40/0x00000000BBE27F80, using 32 (20110112/tbfadt-486) [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xBBE27F40/0x00000000BBE27F80, using 32 (20110413/tbfadt-489) [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xBBE29F40/0x00000000BBE29F80, using 32 (20110112/tbfadt-486) [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xBDB65F40/0x00000000BDB6BE40, using 32 (20100428/tbfadt-486) [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xBDF17E40/0x00000000BDF17D40, using 32 (20110112/tbfadt-486) [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xBDF18E40/0x00000000BDF18D40, using 32 (20100428/tbfadt-486) [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xBDF19E40/0x00000000BDF19D40, using 32 (20100428/tbfadt-486) [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xBDF19E40/0x00000000BDF19D40, using 32 (20101013/tbfadt-486) [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xBDF19E40/0x00000000BDF19D40, using 32 (20110112/tbfadt-486) [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xBDF1AE40/0x00000000BDF1AD40, using 32 (20100428/tbfadt-486) [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xBE97CF40/0x00000000BE996D40, using 32 (20110112/tbfadt-486) [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xBEDB7F40/0x00000000BEDD1D40, using 32 (20110112/tbfadt-486) [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xBEDB8F40/0x00000000BEDD1D40, using 32 (20100428/tbfadt-486) [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xBEDB8F40/0x00000000BEDD1D40, using 32 (20110112/tbfadt-486) [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xBEDB9F40/0x00000000BEDD3D40, using 32 (20110112/tbfadt-486) [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xBF4D1F40/0x00000000BF4DFD40, using 32 (20110112/tbfadt-486) [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xBF62CF40/0x00000000BF62CF80, using 32 (20110112/tbfadt-486) [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xBF62DF40/0x00000000BF62DF80, using 32 (20100428/tbfadt-486) [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xBF654F40/0x00000000BF662D40, using 32 (20110112/tbfadt-486) [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xBF7E4E40/0x00000000BF7E4D40, using 32 (20110112/tbfadt-486) [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xBFA4CF40/0x00000000BFA51F40, using 32 (20110112/tbfadt-486) [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xBFA4CF40/0x00000000BFA51F40, using 32 (20110413/tbfadt-489) [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xBFE17E40/0x00000000BFE17D40, using 32 (20110112/tbfadt-486) [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xBFE21F40/0x00000000BFE21E40, using 32 (20110112/tbfadt-486) [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xC9E58F40/0x00000000C9E6ED40, using 32 (20110112/tbfadt-486) [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xCAB39F40/0x00000000CAB3CD40, using 32 (20100428/tbfadt-486) [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xCAFE4E40/0x00000000CAFE4D40, using 32 (20110112/tbfadt-486) [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xCAFE4E40/0x00000000CAFE4D40, using 32 (20110413/tbfadt-489) [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xCAFE5E40/0x00000000CAFE5D40, using 32 (20110112/tbfadt-486) [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xCB61DF40/0x00000000CB61DE40, using 32 (20100428/tbfadt-486) [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xCB61DF40/0x00000000CB61DE40, using 32 (20110112/tbfadt-486) [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xCBE4CF40/0x00000000CBE51F40, using 32 (20100428/tbfadt-486) [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xCBE4CF40/0x00000000CBE51F40, using 32 (20110112/tbfadt-486) [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xCBF6BF40/0x00000000CBF6ED40, using 32 (20110112/tbfadt-486) [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xCEF27F40/0x00000000CEF2AD40, using 32 (20100428/tbfadt-486) [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xCEF27F40/0x00000000CEF2AD40, using 32 (20110112/tbfadt-486) [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xCEF27F40/0x00000000CEF2AD40, using 32 (20110413/tbfadt-489) [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xCEF28F40/0x00000000CEF2BD40, using 32 (20100428/tbfadt-486) [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xCEF28F40/0x00000000CEF2BD40, using 32 (20110112/tbfadt-486) [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xCEF2BF40/0x00000000CEF2ED40, using 32 (20100428/tbfadt-486) [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xCEF2BF40/0x00000000CEF2ED40, using 32 (20110413/tbfadt-489) [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xCF36BF40/0x00000000CF36ED40, using 32 (20100702/tbfadt-486) [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xCF36BF40/0x00000000CF36ED40, using 32 (20101013/tbfadt-486) [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xCF76BF40/0x00000000CF76ED40, using 32 (20100428/tbfadt-486) [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xCF76BF40/0x00000000CF76ED40, using 32 (20110112/tbfadt-486) [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xCF7E4E40/0x00000000CF7E4D40, using 32 (20100428/tbfadt-486) [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xCF7E4E40/0x00000000CF7E4D40, using 32 (20110112/tbfadt-486) [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xCF7E4E40/0x00000000CF7E4D40, using 32 (20110413/tbfadt-489) [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xCFBFAF40/0x00000000CFBF6F40, using 32 (20100428/tbfadt-486) [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xCFD56F40/0x00000000CFD52F40, using 32 (20110112/tbfadt-486) [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xCFD5FF40/0x00000000CFD65E40, using 32 (20110413/tbfadt-489) [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xD2F2DF40/0x00000000D2F30D40, using 32 (20110112/tbfadt-486) [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xDB36BF40/0x00000000DB36ED40, using 32 (20100428/tbfadt-486) [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xDB36BF40/0x00000000DB36ED40, using 32 (20110112/tbfadt-486) [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xDB76BF40/0x00000000DB76ED40, using 32 (20100428/tbfadt-486) [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xDB76BF40/0x00000000DB76ED40, using 32 (20110112/tbfadt-486) [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xDB76BF40/0x00000000DB76ED40, using 32 (20110413/tbfadt-489) [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xDEB39F40/0x00000000DEB3CD40, using 32 (20110112/tbfadt-486) [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xDEB3AF40/0x00000000DEB3DD40, using 32 (20110112/tbfadt-486) [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xDEEBAF40/0x00000000DEEBDD40, using 32 (20110413/tbfadt-489) [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xDEF2DF40/0x00000000DEF30D40, using 32 (20110112/tbfadt-486) [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 0xDF64BF40/0x00000000DF64ED40, using 32 (20110112/tbfadt-486) [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 3762DF40/000000003762DF80, using 32 (20090903/tbfadt-486) [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 3F611E40/000000003F611D40, using 32 (20090903/tbfadt-486) [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 7776BF40/000000007776ED40, using 32 (20090903/tbfadt-486) [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 7DB61F40/000000007DB66F40, using 32 (20090903/tbfadt-486) [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 7F3ECF40/000000007F3E8F40, using 32 (20090903/tbfadt-486) [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 7F611E40/000000007F611D40, using 32 (20090903/tbfadt-486) [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - 9DCC4F40/000000009DCC5E40, using 32 (20090903/tbfadt-486) [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - AFB75F40/00000000AFB75F80, using 32 (20090903/tbfadt-486) [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - B7B1CE40/00000000B7B1CD40, using 32 (20090903/tbfadt-486) [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - B7B1CE40/00000000B7B1CD40, using 32 (20100121/tbfadt-486) [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - BADABF40/00000000BADAED40, using 32 (20090903/tbfadt-486) [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - BAF2DF40/00000000BAF30D40, using 32 (20090903/tbfadt-486) [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - BB62DF40/00000000BB62DF80, using 32 (20090903/tbfadt-486) [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - BB76BF40/00000000BB76ED40, using 32 (20090903/tbfadt-486) [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - BBE28E40/00000000BBE28D40, using 32 (20090903/tbfadt-486) [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - BDB5BF40/00000000BDB60F40, using 32 (20090903/tbfadt-486) [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - BDB5FF40/00000000BDB64F40, using 32 20090521 tbfadt-487 [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - BDF17E40/00000000BDF17D40, using 32 (20090903/tbfadt-486) [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - BEDB7F40/00000000BEDD1D40, using 32 (20090903/tbfadt-486) [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - BF62CF40/00000000BF62CF80, using 32 (20090903/tbfadt-486) [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - BF76BF40/00000000BF76ED40, using 32 (20090903/tbfadt-486) [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - CBE4AF40/00000000CBE4FF40, using 32 (20090903/tbfadt-486) [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - CBF6BF40/00000000CBF6ED40, using 32 (20090903/tbfadt-486) [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - CEF28F40/00000000CEF2BD40, using 32 (20090903/tbfadt-486) [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - CEF2CF40/00000000CEF2FD40, using 32 (20090903/tbfadt-486) [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - D2F2DF40/00000000D2F30D40, using 32 (20090903/tbfadt-486) [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - DADC1F40/00000000DADD5D40, using 32 (20090903/tbfadt-486) [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - DB36BF40/00000000DB36ED40, using 32 (20090903/tbfadt-486) [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - DB76BF40/00000000DB76ED40, using 32 (20090903/tbfadt-486) [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - DEEBAF40/00000000DEEBDD40, using 32 (20090903/tbfadt-486) [ 0.000000] ACPI Warning: 32/64X FACS address mismatch in FADT - DEF2DF40/00000000DEF30D40, using 32 (20090903/tbfadt-486) [ 0.000000] ACPI Warning: 32/64X length mismatch in Gpe1Block: 0/32 20090521 tbfadt-527 [ 0.000000] ACPI Warning: 32/64X length mismatch in Gpe1Block: 0/32 (20090903/tbfadt-526) [ 0.000000] ACPI Warning: 32/64X length mismatch in Gpe1Block: 0/32 (20100428/tbfadt-526) [ 0.000000] ACPI Warning: 32/64X length mismatch in Gpe1Block: 0/32 (20101013/tbfadt-526) [ 0.000000] ACPI Warning: 32/64X length mismatch in Gpe1Block: 0/32 (20110112/tbfadt-526) [ 0.000000] ACPI Warning: 32/64X length mismatch in Gpe1Block: 0/32 (20110413/tbfadt-529) [ 0.000000] ACPI Warning: BIOS XSDT has NULL entry, using RSDT (20110112/tbutils-663) [ 0.000000] ACPI Warning: Incorrect checksum in table [APIC] - 0x3E, should be 0x41 (20110112/tbutils-314) [ 0.000000] ACPI Warning: Incorrect checksum in table [APIC] - 0x65, should be 0x68 (20110112/tbutils-314) [ 0.000000] ACPI Warning: Incorrect checksum in table [APIC] - 0x69, should be 0x6C (20110112/tbutils-314) [ 0.000000] ACPI Warning: Incorrect checksum in table [APIC] - 0x69, should be 0x6C (20110413/tbutils-314) [ 0.000000] ACPI Warning: Incorrect checksum in table [APIC] - 0x9E, should be 0xA1 (20110112/tbutils-314) [ 0.000000] ACPI Warning: Incorrect checksum in table [APIC] - 0xDF, should be 0xE2 (20110112/tbutils-314) [ 0.000000] ACPI Warning: Incorrect checksum in table [APIC] - 0xE4, should be 0xE7 (20110112/tbutils-314) [ 0.000000] ACPI Warning: Incorrect checksum in table [XSDT] - 0x89, should be 0x7D (20110413/tbutils-314) [ 0.000000] ACPI Warning: Invalid length for Pm1aControlBlock: 32, using default 16 (20090903/tbfadt-607) [ 0.000000] ACPI Warning: Invalid length for Pm1aControlBlock: 32, using default 16 (20100428/tbfadt-607) [ 0.000000] ACPI Warning: Invalid length for Pm1aControlBlock: 32, using default 16 (20110112/tbfadt-607) [ 0.000000] ACPI Warning: Invalid length for Pm1aControlBlock: 32, using default 16 (20110413/tbfadt-610) [ 0.000000] ACPI Warning: Invalid length for Pm1bControlBlock: 32, using default 16 (20090903/tbfadt-607) [ 0.000000] ACPI Warning: Invalid length for Pm2ControlBlock: 0, using default 8 (20090903/tbfadt-607) [ 0.000000] ACPI Warning: Invalid length for Pm2ControlBlock: 0, using default 8 (20100428/tbfadt-607) [ 0.000000] ACPI Warning: Invalid length for Pm2ControlBlock: 0, using default 8 (20110112/tbfadt-607) [ 0.000000] ACPI Warning: Invalid length for Pm2ControlBlock: 16, using default 8 (20100428/tbfadt-607) [ 0.000000] ACPI Warning: Invalid length for Pm2ControlBlock: 16, using default 8 (20110112/tbfadt-607) [ 0.000000] ACPI Warning: Invalid length for Pm2ControlBlock: 16, using default 8 (20110413/tbfadt-610) [ 0.000000] ACPI Warning: Invalid length for Pm2ControlBlock: 32, using default 8 (20090903/tbfadt-607) [ 0.000000] ACPI Warning: Invalid length for Pm2ControlBlock: 32, using default 8 (20110112/tbfadt-607) [ 0.000000] ACPI Warning: Invalid length for PmTimerBlock: 24, using default 32 (20100428/tbfadt-607) [ 0.000000] ACPI Warning: Optional field Gpe1Block has zero address or length: 000000000000102C/0 20090521 tbfadt-558 [ 0.000000] ACPI Warning: Optional field Gpe1Block has zero address or length: 000000000000102C/0 (20090903/tbfadt-557) [ 0.000000] ACPI Warning: Optional field Gpe1Block has zero address or length: 000000000000802C/0 (20090903/tbfadt-557) [ 0.000000] ACPI Warning: Optional field Gpe1Block has zero address or length: 0x0000000000000000/0x4 (20110413/tbfadt-560) [ 0.000000] ACPI Warning: Optional field Gpe1Block has zero address or length: 0x000000000000102C/0x0 (20100428/tbfadt-557) [ 0.000000] ACPI Warning: Optional field Gpe1Block has zero address or length: 0x000000000000102C/0x0 (20101013/tbfadt-557) [ 0.000000] ACPI Warning: Optional field Gpe1Block has zero address or length: 0x000000000000102C/0x0 (20110112/tbfadt-557) [ 0.000000] ACPI Warning: Optional field Gpe1Block has zero address or length: 0x000000000000102C/0x0 (20110413/tbfadt-560) [ 0.000000] ACPI Warning: Optional field Gpe1Block has zero address or length: 0x00000000000044A0/0x0 (20100428/tbfadt-557) [ 0.000000] ACPI Warning: Optional field Pm2ControlBlock has zero address or length: 0000000000000000/1 20090521 tbfadt-558 [ 0.000000] ACPI Warning: Optional field Pm2ControlBlock has zero address or length: 0000000000000000/1 (20090903/tbfadt-557) [ 0.000000] ACPI Warning: Optional field Pm2ControlBlock has zero address or length: 0000000000000050/0 (20090903/tbfadt-557) [ 0.000000] ACPI Warning: Optional field Pm2ControlBlock has zero address or length: 0x0000000000000000/0x1 (20100428/tbfadt-557) [ 0.000000] ACPI Warning: Optional field Pm2ControlBlock has zero address or length: 0x0000000000000000/0x1 (20101013/tbfadt-557) [ 0.000000] ACPI Warning: Optional field Pm2ControlBlock has zero address or length: 0x0000000000000000/0x1 (20110112/tbfadt-557) [ 0.000000] ACPI Warning: Optional field Pm2ControlBlock has zero address or length: 0x0000000000000000/0x1 (20110413/tbfadt-560) [ 0.000000] ACPI Warning: Optional field Pm2ControlBlock has zero address or length: 0x0000000000000450/0x0 (20100428/tbfadt-557) [ 0.000000] ACPI Warning: Optional field Pm2ControlBlock has zero address or length: 0x0000000000000450/0x0 (20110112/tbfadt-557) [ 0.000000] ACPI Warning: Optional field Pm2ControlBlock has zero address or length: 0x0000000000000814/0x0 (20100428/tbfadt-557) [ 0.000000] ACPI Warning: Optional field Pm2ControlBlock has zero address or length: 0x0000000000000820/0x0 (20100428/tbfadt-557) [ 0.000000] ACPI Warning: Optional field Pm2ControlBlock has zero address or length: 0x0000000000000820/0x0 (20110112/tbfadt-557) [ 0.000000] ACPI Warning (tbfadt-0460): Optional field "Gpe1Block" has zero address or length: 000000000000102C/0 [20080926] [ 0.000000] mtrr: your BIOS has configured an incorrect mask, fixing it. [ 0.000000] WARNING: BIOS bug: CPU MTRRs don't cover all of memory, losing 1408MB of RAM. [ 0.000000] WARNING: BIOS bug: CPU MTRRs don't cover all of memory, losing 4MB of RAM. [ 0.022719] ACPI Error: Found unknown opcode 0xFD at AML address f7ffe14c offset 0xE8, ignoring (20110112/psloop-141) [ 0.025446] ACPI Warning: Detected an unsupported executable opcode at module-level: [0x007B] at table offset 0x00BE (20110112/psloop-526) [ 0.025463] ACPI Warning: Detected an unsupported executable opcode at module-level: [0x007B] at table offset 0x00C3 (20110112/psloop-526) [ 0.034090] ACPI Error: Method parse/execution failed [_SB_.PCI0._OSC] (Node ee025630), AE_ALREADY_EXISTS (20110112/psparse-536) [ 0.040119] [Firmware Bug]: the BIOS has corrupted hw-PMU resources (MSR 186 is 400000) [ 0.042222] ACPI Warning: Detected an unsupported executable opcode at module-level: [0x0070] at table offset 0x2366 (20100121/psloop-526) [ 0.042240] ACPI Warning: Detected an unsupported executable opcode at module-level: [0x0070] at table offset 0x006C (20090903/psloop-522) [ 0.042253] ACPI Warning: Detected an unsupported executable opcode at module-level: [0x0070] at table offset 0x006F (20090903/psloop-522) [ 0.042265] ACPI Warning: Detected an unsupported executable opcode at module-level: [0x0070] at table offset 0x0070 (20090903/psloop-522) [ 0.042279] ACPI Warning: Detected an unsupported executable opcode at module-level: [0x0070] at table offset 0x0077 (20090903/psloop-522) [ 0.042291] ACPI Warning: Detected an unsupported executable opcode at module-level: [0x0070] at table offset 0x007C (20090903/psloop-522) [ 0.042302] ACPI Warning: Detected an unsupported executable opcode at module-level: [0x007B] at table offset 0x007D (20090903/psloop-522) [ 0.042311] ACPI Warning: Detected an unsupported executable opcode at module-level: [0x007B] at table offset 0x007F (20090903/psloop-522) [ 0.042322] ACPI Warning: Detected an unsupported executable opcode at module-level: [0x007B] at table offset 0x0080 (20090903/psloop-522) [ 0.044066] ACPI Warning: Detected an unsupported executable opcode at module-level: [0x0070] at table offset 0x678F (20100428/psloop-526) [ 0.045570] ACPI Warning: For _SB_.PCI0.LPCB.H_EC._GLK: Parameter count mismatch - ASL declared 1, ACPI requires 0 (20110112/nspredef-352) [ 0.050847] ACPI Warning: Package List length (0x10) larger than NumElements count (0x8), truncated [ 0.053909] ACPI Warning: Package List length (0x10) larger than NumElements count (0x6), truncated [ 0.074070] ACPI Error: The DSDT has been corrupted or replaced - old, new headers below (20110413/tbutils-372) [ 0.074090] ACPI Error: Please send DMI info to linux-acpi@vger.kernel.org [ 0.076767] ACPI Warning: Incorrect checksum in table [OEMB] - 0xA6, should be 0x97 (20100428/tbutils-314) [ 0.077157] ACPI Warning: Incorrect checksum in table [OEMB] - 0x4C, should be 0x21 (20100428/tbutils-314) [ 0.077854] ACPI Error: Method parse/execution failed [_SB_.PCI0._OSC] (Node f4c250d8), AE_NOT_FOUND (20110112/psparse-536) [ 0.078226] ACPI Error (psparse-0537): Method parse/execution failed [_PR_.CPU1.APCT] (Node f7033090), AE_NO_MEMORY [ 0.078254] ACPI Error (psparse-0537): Method parse/execution failed [_PR_.CPU1.GCAP] (Node f7033078), AE_NO_MEMORY [ 0.078268] ACPI Warning: Incorrect checksum in table [OEMB] - 07, should be 06 (20090903/tbutils-314) [ 0.078278] ACPI Error (psparse-0537): Method parse/execution failed [_PR_.CPU1._PDC] (Node f7033048), AE_NO_MEMORY [ 0.078686] ACPI Warning: Incorrect checksum in table [OEMB] - 0x38, should be 0x81 (20110413/tbutils-314) [ 0.083817] ACPI Warning: Incorrect checksum in table [OEMB] - 0xF9, should be 0xF3 (20100428/tbutils-314) [ 0.085590] ACPI Error: Could not map memory at 0x000000007F5E3520, size 463 (20110112/exregion-178) [ 0.085606] ACPI Error: Method parse/execution failed [_PR_.CPU1.APPT] (Node f403d228), AE_NO_MEMORY (20110112/psparse-536) [ 0.085618] ACPI Error: Method parse/execution failed [_PR_.CPU1.GCAP] (Node f403d1f8), AE_NO_MEMORY (20110112/psparse-536) [ 0.085627] ACPI Error: Could not map memory at 0x000000007D3E1520, size 463 (20110112/exregion-178) [ 0.085628] ACPI Error: Method parse/execution failed [_PR_.CPU1._PDC] (Node f403d1c8), AE_NO_MEMORY (20110112/psparse-536) [ 0.085974] ACPI Warning: Incorrect checksum in table [OEMB] - 0x6B, should be 0x39 (20110112/tbutils-314) [ 0.086054] ACPI Warning: Incorrect checksum in table [TCPA] - 0x00, should be 0x96 (20110112/tbutils-314) [ 0.086081] ACPI Error: Could not map memory at 0x000000007F395420, size 141 (20110112/exregion-178) [ 0.086097] ACPI Error: Method parse/execution failed [_PR_.CPU1.APCT] (Node f403d210), AE_NO_MEMORY (20110112/psparse-536) [ 0.086108] ACPI Error: Method parse/execution failed [_PR_.CPU2.GCAP] (Node f403d270), AE_NO_MEMORY (20110112/psparse-536) [ 0.086118] ACPI Error: Method parse/execution failed [_PR_.CPU2._PDC] (Node f403d240), AE_NO_MEMORY (20110112/psparse-536) [ 0.086119] ACPI Error: Could not map memory at 0x000000007D198120, size 141 (20110112/exregion-178) [ 0.088999] ACPI Warning: Incorrect checksum in table [OEMB] - 0xE8, should be 0xDB (20100428/tbutils-314) [ 0.089613] ACPI Warning: Incorrect checksum in table [OEMB] - 0xB3, should be 0xAE (20100428/tbutils-314) [ 0.089701] ACPI Warning: Incorrect checksum in table [OEMB] - 0x77, should be 0x6C (20100428/tbutils-314) [ 0.091402] ACPI Warning: Package List length (0x7) larger than NumElements count (0x3), truncated [ 0.091463] ACPI Error (psparse-0537): Method parse/execution failed [_PR_.CPU1.APPT] (Node f701e228), AE_INVALID_TABLE_LENGTH [ 0.091510] ACPI Error (psparse-0537): Method parse/execution failed [_PR_.CPU1.GCAP] (Node f701e1f8), AE_INVALID_TABLE_LENGTH [ 0.091541] ACPI Warning: Incorrect checksum in table [OEMB] - F6, should be E7 (20090903/tbutils-314) [ 0.091552] ACPI Error (psparse-0537): Method parse/execution failed [_PR_.CPU1._PDC] (Node f701e1c8), AE_INVALID_TABLE_LENGTH [ 0.091778] ACPI Warning: Incorrect checksum in table [OEMB] - 8E, should be 7F (20090903/tbutils-314) [ 0.091911] ACPI Warning: Incorrect checksum in table [APIC] - 0x8E, should be 0x91 (20110112/tbutils-314) [ 0.092524] ACPI Error (psparse-0537): Method parse/execution failed [_PR_.CPU1.APCT] (Node f701e210), AE_NO_MEMORY [ 0.092570] ACPI Error (psparse-0537): Method parse/execution failed [_PR_.CPU2.GCAP] (Node f701e270), AE_NO_MEMORY [ 0.092612] ACPI Error (psparse-0537): Method parse/execution failed [_PR_.CPU2._PDC] (Node f701e240), AE_NO_MEMORY [ 0.093544] ACPI Error: Needed type [Reference], found [Device] f7019f90 (20100428/exresop-104) [ 0.094477] ACPI Warning: Incorrect checksum in table [OEMB] - 0x97, should be 0x90 (20100428/tbutils-314) [ 0.094856] [Firmware Bug]: ACPI: No _BQC method, cannot determine initial brightness [ 0.095719] ACPI Error: Could not map memory at 0x0000000087127520, size 463 (20110112/exregion-178) [ 0.095737] ACPI Error: Method parse/execution failed [_PR_.CPU1.APPT] (Node f383e498), AE_NO_MEMORY (20110112/psparse-536) [ 0.095749] ACPI Error: Method parse/execution failed [_PR_.CPU1.GCAP] (Node f383e468), AE_NO_MEMORY (20110112/psparse-536) [ 0.095760] ACPI Error: Method parse/execution failed [_PR_.CPU1._PDC] (Node f383e438), AE_NO_MEMORY (20110112/psparse-536) [ 0.095817] [Firmware Bug]: ACPI: ACPI brightness control misses _BQC function [ 0.096257] ACPI Error: Could not map memory at 0x0000000086DB1C20, size 141 (20110112/exregion-178) [ 0.096273] ACPI Error: Method parse/execution failed [_PR_.CPU1.APCT] (Node f383e480), AE_NO_MEMORY (20110112/psparse-536) [ 0.096285] ACPI Error: Method parse/execution failed [_PR_.CPU2.GCAP] (Node f383e4e0), AE_NO_MEMORY (20110112/psparse-536) [ 0.096295] ACPI Error: Method parse/execution failed [_PR_.CPU2._PDC] (Node f383e4b0), AE_NO_MEMORY (20110112/psparse-536) [ 0.096447] ACPI Warning: Incorrect checksum in table [OEMB] - 66, should be 62 (20090903/tbutils-314) [ 0.098113] ACPI Warning: Incorrect checksum in table [OEMB] - 0x2C, should be 0x28 (20100428/tbutils-314) [ 0.099413] ACPI Warning: Incorrect checksum in table [OEMB] - E2, should be D9 (20090903/tbutils-314) [ 0.101941] ACPI Error: Field [ASSM] at 524320 exceeds Buffer [BUF0] size 880 (bits) (20110112/dsopcode-597) [ 0.101946] ACPI Error: Method parse/execution failed [_SB_.MEM_._CRS] (Node f442af60), AE_AML_BUFFER_LIMIT (20110112/psparse-536) [ 0.101953] ACPI Error: Method execution failed [_SB_.MEM_._CRS] (Node f442af60), AE_AML_BUFFER_LIMIT (20110112/uteval-103) [ 0.102803] ACPI Warning: Incorrect checksum in table [OEMB] - 6E, should be 40 (20090903/tbutils-314) [ 0.104297] ACPI Error (psargs-0359): [OSYS] Namespace lookup failure, AE_NOT_FOUND [ 0.104304] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.ACEL._STA] (Node f701c4e0), AE_NOT_FOUND [ 0.105061] ACPI Warning: Package List length (0xCA) larger than NumElements count (0x4), truncated [ 0.106912] ACPI Warning: Package List length (0x5) larger than NumElements count (0x2), truncated [ 0.108470] ACPI Warning: Incorrect checksum in table [OEMB] - 3F, should be 3B (20090903/tbutils-314) [ 0.109343] ACPI Warning: Incorrect checksum in table [OEMB] - 0x29, should be 0x1C (20100428/tbutils-314) [ 0.109618] ACPI Error: Needed type [Reference], found [Device] f7012f90 (20090903/exresop-104) [ 0.109635] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0._OSC] (Node f701adc8), AE_AML_OPERAND_TYPE [ 0.110905] ACPI Warning: Incorrect checksum in table [OEMB] - 32, should be 25 (20090903/tbutils-314) [ 0.113709] ACPI Error: Method parse/execution failed [_PR_.CPU1._PDC] (Node f5822150), AE_INVALID_TABLE_LENGTH (20110112/psparse-536) [ 0.113864] ACPI Error: Method parse/execution failed [_PR_.CPU2._PDC] (Node f58221e0), AE_INVALID_TABLE_LENGTH (20110112/psparse-536) [ 0.114544] ACPI Error: Method parse/execution failed [_PR_.CPU0._PDC] (Node f54211c8), AE_INVALID_TABLE_LENGTH (20110112/psparse-536) [ 0.115838] ACPI Warning: Incorrect checksum in table [OEMB] - 79, should be 6C (20090903/tbutils-314) [ 0.118277] ACPI Error (psargs-0359): [SUPP] Namespace lookup failure, AE_NOT_FOUND [ 0.118284] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0._OSC] (Node f7012780), AE_NOT_FOUND [ 0.118568] ACPI Warning: Incorrect checksum in table [OEMB] - 2F, should be 22 (20090903/tbutils-314) [ 0.120765] ACPI Warning for _SB_.PCI0.P2P_._PRT: Return Package has no elements (empty) (20090903/nspredef-433) [ 0.122347] ACPI Error: Could not map memory at 0x00000000000FFA32, size 0 (20100428/exregion-178) [ 0.122369] ACPI Error (psparse-0537): Method parse/execution failed [_PR_.CPU0._PDC] (Node f70191c8), AE_NO_MEMORY [ 0.128150] ACPI Warning for _SB_.PCI0.P32_._PRT: Return Package has no elements (empty) (20090903/nspredef-433) [ 0.132540] ACPI Warning: Incorrect checksum in table [OEMB] - CB, should be C6 (20090903/tbutils-314) [ 0.136585] ACPI Error: Field [ALB2] at 120 exceeds Buffer [CRSA] size 104 (bits) (20090903/dsopcode-596) [ 0.136600] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.PIB_.SIO0.LPT_._CRS] (Node dd8159d8), AE_AML_BUFFER_LIMIT [ 0.136637] ACPI Error (uteval-0250): Method execution failed [_SB_.PCI0.PIB_.SIO0.LPT_._CRS] (Node dd8159d8), AE_AML_BUFFER_LIMIT [ 0.137394] ACPI Warning: Incorrect checksum in table [OEMB] - 29, should be 1A (20090903/tbutils-314) [ 0.140000] [Firmware Bug]: the BIOS has corrupted hw-PMU resources (MSR 186 is 43003c) [ 0.141112] ACPI Warning: Incorrect checksum in table [OEMB] - ED, should be E8 20090521 tbutils-246 [ 0.150000] ACPI Error: Method parse/execution failed [_SB_.PCI0.SBRG.EC0_._REG] (Node ffff880137e47618), AE_NOT_EXIST (20110112/psparse-536) [ 0.150000] ACPI Error: No handler for Region [ERAM] (ffff880137e58e10) [EmbeddedControl] (20110112/evregion-369) [ 0.154764] ACPI Warning: Incorrect checksum in table [OEMB] - 7D, should be 6E (20090903/tbutils-314) [ 0.159797] ACPI Error: Method parse/execution failed [_SB_._OSC] (Node f4421648), AE_NOT_FOUND (20110413/psparse-536) [ 0.160246] ACPI Error: Method parse/execution failed [_SB_.PCI0.LPC0.EC0_._REG] (Node ffff880147830960), AE_NOT_FOUND (20110112/psparse-536) [ 0.160246] ACPI Error: [_SB_.PHSR] Namespace lookup failure, AE_NOT_FOUND (20110112/psargs-359) [ 0.160449] mtrr: your CPUs had inconsistent fixed MTRR settings [ 0.163431] ACPI Warning: Package List length (0x6) larger than NumElements count (0x3), truncated [ 0.163687] ACPI Warning: Incorrect checksum in table [TAMG] - 0xFC, should be 0xFB (20110112/tbutils-314) [ 0.164073] ACPI Warning: Incorrect checksum in table [TAMG] - 0xEE, should be 0xED (20110112/tbutils-314) [ 0.165683] ACPI Error: [CDW1] Namespace lookup failure, AE_NOT_FOUND (20110112/psargs-359) [ 0.165689] ACPI Error: Method parse/execution failed [_SB_._OSC] (Node f3821648), AE_NOT_FOUND (20110112/psparse-536) [ 0.166264] ACPI Error (psparse-0537): Method parse/execution failed [_SB_._OSC] (Node f701a648), AE_NOT_FOUND [ 0.166294] ACPI Error: Method parse/execution failed [_SB_._OSC] (Node f4021648), AE_NOT_FOUND (20110112/psparse-536) [ 0.166323] ACPI Error: No handler for Region [ERAM] (f7022168) [EmbeddedControl] (20100428/evregion-369) [ 0.166336] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.LPCB.EC0_._REG] (Node f7021bb8), AE_NOT_EXIST [ 0.166808] ACPI Error: No handler for Region [ERAM] (f7023938) [EmbeddedControl] (20100428/evregion-369) [ 0.166808] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.HTEV] (Node f701be10), AE_NOT_EXIST [ 0.166808] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.LPC0.EC0_._REG] (Node f7024d08), AE_NOT_EXIST [ 0.169111] ACPI Error: [HPTF] Namespace lookup failure, AE_NOT_FOUND (20110112/psargs-359) [ 0.169117] ACPI Error: Method parse/execution failed [_SB_.PCI0.HPET._STA] (Node f402ae58), AE_NOT_FOUND (20110112/psparse-536) [ 0.169362] ACPI Warning: Incorrect checksum in table [OEMB] - 0x18, should be 0x13 (20100428/tbutils-314) [ 0.169398] ACPI Warning: Incorrect checksum in table [OEMB] - 0x15, should be 0xAC (20100428/tbutils-314) [ 0.170000] ACPI Error (psparse-0537): Method parse/execution failed [] (Node ffffffff81a06440), AE_NOT_FOUND [ 0.170000] ACPI Warning: Package List length (0x6) larger than NumElements count (0x2), truncated [ 0.170352] ACPI Warning: Incorrect checksum in table [SSDT] - 0xEA, should be 0x42 (20100428/tbutils-314) [ 0.171073] ACPI Warning: Incorrect checksum in table [OEMB] - 0x67, should be 0x92 (20100428/tbutils-314) [ 0.171715] ACPI Warning: Incorrect checksum in table [TCPA] - 0x00, should be 0xAB (20110112/tbutils-314) [ 0.171916] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0._OSC] (Node f700e3d8), AE_ALREADY_EXISTS [ 0.172406] ACPI Warning: Incorrect checksum in table [OEMB] - 0x22, should be 0x15 (20100428/tbutils-314) [ 0.172679] ACPI Warning: Incorrect checksum in table [TCPA] - 0x00, should be 0xA5 (20100428/tbutils-314) [ 0.172776] ACPI Warning: Package List length (1) larger than NumElements count (0), truncated [ 0.172868] ACPI Error: No handler for Region [RAM_] (f7014618) [EmbeddedControl] 20090521 evregion-319 [ 0.172873] ACPI Error: Region EmbeddedControl(3) has no handler 20090521 exfldio-294 [ 0.172880] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.LPCB.EC0_._REG] (Node f70159f0), AE_NOT_EXIST [ 0.173062] ACPI Warning: Incorrect checksum in table [SSDT] - 0xAA, should be 0xED (20110112/tbutils-314) [ 0.173605] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0._OSC] (Node f70215e8), AE_ALREADY_EXISTS [ 0.173745] ACPI Warning: Incorrect checksum in table [TCPA] - 0x83, should be 0x27 (20110413/tbutils-314) [ 0.173917] ACPI Error (psparse-0537): Method parse/execution failed [] (Node c08d6804), AE_ALREADY_EXISTS [ 0.173917] ACPI Error (psparse-0537): Method parse/execution failed [] (Node c08d6804), AE_NOT_FOUND [ 0.175144] ACPI Warning: Incorrect checksum in table [OEMB] - 95, should be 8C (20090903/tbutils-314) [ 0.175379] ACPI Error: No handler for Region [ECXP] (f70218e8) [EmbeddedControl] (20100428/evregion-369) [ 0.175394] ACPI Error (psparse-0537): Method parse/execution failed [_PR_.CPU0._OSC] (Node f7025558), AE_NOT_EXIST [ 0.175428] ACPI Error (psparse-0537): Method parse/execution failed [_PR_.CPU0._PDC] (Node f7025540), AE_NOT_EXIST [ 0.175892] ACPI Warning: Package List length (0x1) larger than NumElements count (0x0), truncated [ 0.175987] ACPI Warning: Incorrect checksum in table [OEMB] - D7, should be C8 20090521 tbutils-246 [ 0.176309] ACPI Warning: Incorrect checksum in table [OEMB] - 0xCF, should be 0xCE (20100428/tbutils-314) [ 0.176410] ACPI Error: [RAMB] Namespace lookup failure, AE_NOT_FOUND (20110413/psargs-359) [ 0.176680] ACPI Warning: Incorrect checksum in table [OEMB] - D6, should be C7 20090521 tbutils-246 [ 0.176840] ACPI Warning: Incorrect checksum in table [SSDT] - 0xAC, should be 0x4D (20100428/tbutils-314) [ 0.177033] ACPI Warning: Incorrect checksum in table [OEMB] - ED, should be EC 20090521 tbutils-246 [ 0.177048] [Firmware Bug]: PCI: MMCONFIG at [mem 0xe0000000-0xe03fffff] not reserved in ACPI motherboard resources [ 0.177377] ACPI Error: Needed type [Reference], found [Device] f701af90 (20100428/exresop-104) [ 0.177377] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0._OSC] (Node f7022dc8), AE_AML_OPERAND_TYPE [ 0.177506] ACPI Warning: Incorrect checksum in table [SSDT] - 0xA1, should be 0x30 (20100428/tbutils-314) [ 0.177670] ACPI Warning: Incorrect checksum in table [OEMB] - 1C, should be 17 (20090903/tbutils-314) [ 0.178040] ACPI Warning: Incorrect checksum in table [OEMB] - 0xF7, should be 0xE8 (20100428/tbutils-314) [ 0.178420] ACPI Error: No handler for Region [SACS] (f701b500) [PCI_Config] (20090903/evregion-319) [ 0.178434] ACPI Error (psparse-0537): Method parse/execution failed [PRID.P_D0._STA] (Node f7072000), AE_NOT_EXIST [ 0.178458] ACPI Error (uteval-0250): Method execution failed [PRID.P_D0._STA] (Node f7072000), AE_NOT_EXIST [ 0.178486] ACPI Error (psparse-0537): Method parse/execution failed [PRID.P_D1._STA] (Node f70720a8), AE_NOT_EXIST [ 0.178510] ACPI Error (uteval-0250): Method execution failed [PRID.P_D1._STA] (Node f70720a8), AE_NOT_EXIST [ 0.178539] ACPI Error (psparse-0537): Method parse/execution failed [SECD.S_D0._STA] (Node f7072210), AE_NOT_EXIST [ 0.178563] ACPI Error (uteval-0250): Method execution failed [SECD.S_D0._STA] (Node f7072210), AE_NOT_EXIST [ 0.178590] ACPI Error (psparse-0537): Method parse/execution failed [SECD.S_D1._STA] (Node f70722b8), AE_NOT_EXIST [ 0.178614] ACPI Error (uteval-0250): Method execution failed [SECD.S_D1._STA] (Node f70722b8), AE_NOT_EXIST [ 0.179475] ACPI Warning: Incorrect checksum in table [TCPA] - 0x00, should be 0xAB (20100428/tbutils-314) [ 0.179688] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0._OSC] (Node f74174c8), AE_ALREADY_EXISTS [ 0.181591] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0._OSC] (Node f7022db0), AE_AML_OPERAND_TYPE [ 0.181679] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0._OSC] (Node f740f438), AE_ALREADY_EXISTS [ 0.181959] ACPI Warning: Incorrect checksum in table [OEMB] - 0x0A, should be 0x09 (20100428/tbutils-314) [ 0.182122] ACPI Warning: Incorrect checksum in table [OEMB] - 7D, should be 70 (20090903/tbutils-314) [ 0.182199] ACPI Error: Method parse/execution failed [_SB_.PCI0._OSC] (Node f4c25228), AE_NOT_FOUND (20110112/psparse-536) [ 0.182199] ACPI Error: [Z012] Namespace lookup failure, AE_NOT_FOUND (20110112/psargs-359) [ 0.182639] ACPI Error (psargs-0359): [ECEN] Namespace lookup failure, AE_NOT_FOUND [ 0.182645] ACPI Error (psparse-0537): Method parse/execution failed [] (Node c090665c), AE_NOT_FOUND [ 0.183306] ACPI Error: Method parse/execution failed [_PR_.CPU0._PDC] (Node f403a228), AE_ALREADY_EXISTS (20110112/psparse-536) [ 0.183518] ACPI Warning: Incorrect checksum in table [OEMB] - 10, should be 03 (20090903/tbutils-314) [ 0.183725] ACPI Error: No handler for Region [SACS] (f70c20f0) [PCI_Config] (20090903/evregion-319) [ 0.183734] ACPI Error (psparse-0537): Method parse/execution failed [PRID.P_D0._STA] (Node f70c4180), AE_NOT_EXIST [ 0.183755] ACPI Error (uteval-0250): Method execution failed [PRID.P_D0._STA] (Node f70c4180), AE_NOT_EXIST [ 0.183773] ACPI Error (psparse-0537): Method parse/execution failed [PRID.P_D1._STA] (Node f70c4240), AE_NOT_EXIST [ 0.183793] ACPI Error (uteval-0250): Method execution failed [PRID.P_D1._STA] (Node f70c4240), AE_NOT_EXIST [ 0.183812] ACPI Error (psparse-0537): Method parse/execution failed [SECD.S_D0._STA] (Node f70c43c0), AE_NOT_EXIST [ 0.183832] ACPI Error (uteval-0250): Method execution failed [SECD.S_D0._STA] (Node f70c43c0), AE_NOT_EXIST [ 0.183850] ACPI Error (psparse-0537): Method parse/execution failed [SECD.S_D1._STA] (Node f70c4480), AE_NOT_EXIST [ 0.183870] ACPI Error (uteval-0250): Method execution failed [SECD.S_D1._STA] (Node f70c4480), AE_NOT_EXIST [ 0.183948] ACPI Warning: Incorrect checksum in table [TCPA] - 0x00, should be 0x8E (20110112/tbutils-314) [ 0.184086] ACPI Warning: Incorrect checksum in table [OEMB] - 0x69, should be 0x68 (20110112/tbutils-314) [ 0.184314] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0._OSC] (Node f7015eb8), AE_ALREADY_EXISTS [ 0.185673] ACPI Error (dswload-0659): [___P] Namespace lookup failure, AE_NOT_FOUND [ 0.185686] ACPI Error (psparse-0537): Method parse/execution failed [_PR_.CPU1._PDC] (Node f701a150), AE_INVALID_TABLE_LENGTH [ 0.185688] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0._INI] (Node f700f6c0), AE_NOT_FOUND [ 0.185862] ACPI Error (psparse-0537): Method parse/execution failed [_PR_.CPU2._PDC] (Node f701a1e0), AE_INVALID_TABLE_LENGTH [ 0.186281] ACPI Warning: Package List length (C) larger than NumElements count (4), truncated [ 0.186529] ACPI Warning: Incorrect checksum in table [OEMB] - B9, should be AC (20090903/tbutils-314) [ 0.187574] ACPI Warning: Incorrect checksum in table [OEMB] - 77, should be 76 (20090903/tbutils-314) [ 0.187800] ACPI Error (psparse-0537): Method parse/execution failed [] (Node c0994f7c), AE_NOT_FOUND [ 0.187872] ACPI Warning: Incorrect checksum in table [OEMB] - B6, should be B3 (20090903/tbutils-314) [ 0.187981] ACPI Warning: Incorrect checksum in table [OEMB] - 8D, should be 8C (20090903/tbutils-314) [ 0.187992] ACPI Warning: Incorrect checksum in table [OEMB] - 40, should be 3F (20090903/tbutils-314) [ 0.188197] ACPI Warning: Incorrect checksum in table [OEMB] - 6A, should be 61 (20090903/tbutils-314) [ 0.188232] ACPI Warning: Incorrect checksum in table [ATKG] - 0x07, should be 0x59 (20100428/tbutils-314) [ 0.188487] ACPI Error (psargs-0359): q z Namespace lookup failure, AE_NOT_FOUND [ 0.188669] ACPI Warning: Incorrect checksum in table [ATKG] - 0x05, should be 0xE5 (20100428/tbutils-314) [ 0.189086] ACPI Error: Needed type [Reference], found [Device] f700ff90 (20090903/exresop-104) [ 0.189100] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0._OSC] (Node f7017dc8), AE_AML_OPERAND_TYPE [ 0.189451] ACPI Error: Needed type [Reference], found [Device] f700ef90 20090521 exresop-104 [ 0.189466] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0._OSC] (Node f7016dc8), AE_AML_OPERAND_TYPE [ 0.189515] ACPI Error (psargs-0359): [CVCL] Namespace lookup failure, AE_NOT_FOUND [ 0.189522] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.LPCB.DIGI._STA] (Node f702a390), AE_NOT_FOUND [ 0.191013] ACPI Warning: Incorrect checksum in table [ATKG] - 0x81, should be 0xE5 (20100428/tbutils-314) [ 0.191774] ACPI Warning: Incorrect checksum in table [OEMB] - 37, should be 28 (20090903/tbutils-314) [ 0.191906] ACPI Error (psparse-0537): Method parse/execution failed [] (Node c098ff6c), AE_NOT_FOUND [ 0.192037] ACPI Warning: Incorrect checksum in table [OEMB] - 0xD9, should be 0xCC (20100428/tbutils-314) [ 0.192146] ACPI Error (dswload-0781): [_PSW] Namespace lookup failure, AE_ALREADY_EXISTS [ 0.192182] ACPI Error (psparse-0537): Method parse/execution failed [] (Node c08ce7dc), AE_ALREADY_EXISTS [ 0.192983] ACPI Warning: Incorrect checksum in table [OEMB] - C0, should be B3 (20090903/tbutils-314) [ 0.193750] ACPI Error (psparse-0537): Method parse/execution failed [] (Node c08ce7dc), AE_NOT_FOUND [ 0.194184] ACPI Warning: Incorrect checksum in table [OEMB] - C8, should be BF (20090903/tbutils-314) [ 0.194314] ACPI Warning: Incorrect checksum in table [OEMB] - AA, should be 9D (20090903/tbutils-314) [ 0.194554] ACPI Error: Method parse/execution failed [_PR_.CPU1._PDC] (Node f5821150), AE_INVALID_TABLE_LENGTH (20110112/psparse-536) [ 0.194701] ACPI Error: Method parse/execution failed [_PR_.CPU2._PDC] (Node f58211e0), AE_INVALID_TABLE_LENGTH (20110112/psparse-536) [ 0.194897] ACPI Warning: Incorrect checksum in table [OEMB] - 0xDD, should be 0xD6 (20100428/tbutils-314) [ 0.195685] ACPI Warning: Incorrect checksum in table [OEMB] - 2A, should be 29 (20090903/tbutils-314) [ 0.195754] ACPI Warning: Incorrect checksum in table [OEMB] - 88, should be 83 (20090903/tbutils-314) [ 0.196934] ACPI Warning: Incorrect checksum in table [OEMB] - 0B, should be 02 (20090903/tbutils-314) [ 0.197082] ACPI Warning: Incorrect checksum in table [ATKG] - 0xC8, should be 0xE5 (20100428/tbutils-314) [ 0.197413] ACPI Error: No handler for Region [EC__] (f701c5c8) [EmbeddedControl] (20100428/evregion-369) [ 0.197451] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.SBRG.EC__._REG] (Node f701e2a0), AE_NOT_EXIST [ 0.198490] ACPI Warning: Incorrect checksum in table [OEMB] - 0xB2, should be 0x47 (20100428/tbutils-314) [ 0.198823] ACPI Warning: Incorrect checksum in table [OEMB] - 01, should be F4 (20090903/tbutils-314) [ 0.199360] ACPI Warning: Incorrect checksum in table [TCPA] - 00, should be AB 20090521 tbutils-246 [ 0.199465] ACPI Error: [CDW1] Namespace lookup failure, AE_NOT_FOUND (20110413/psargs-359) [ 0.199471] ACPI Error: Method parse/execution failed [_SB_._OSC] (Node ffff880138e2ea78), AE_NOT_FOUND (20110413/psparse-536) [ 0.200426] ACPI Warning: Incorrect checksum in table [OEMB] - A3, should be 9E (20090903/tbutils-314) [ 0.200744] ACPI Warning: Incorrect checksum in table [ASF!] - 59, should be 08 20090521 tbutils-246 [ 0.201013] ACPI Warning: Incorrect checksum in table [OEMB] - 8A, should be 7D (20090903/tbutils-314) [ 0.201466] ACPI Error (psparse-0537): Method parse/execution failed [_PR_.CPU1._PDC] (Node f700e180), AE_INVALID_TABLE_LENGTH [ 0.203079] ACPI Warning: Incorrect checksum in table [OEMB] - 0xE1, should be 0xDC (20100428/tbutils-314) [ 0.204335] ACPI Warning: Incorrect checksum in table [OEMB] - 0xC1, should be 0x11 (20110413/tbutils-314) [ 0.204344] ACPI Warning: Incorrect checksum in table [ATKG] - 07, should be 59 (20090903/tbutils-314) [ 0.205365] ACPI Error: Method parse/execution failed [_SB_.PCI0._OSC] (Node f5422e88), AE_ALREADY_EXISTS (20110413/psparse-536) [ 0.206075] ACPI Warning: Incorrect checksum in table [ATKG] - BB, should be E5 (20090903/tbutils-314) [ 0.207023] ACPI Warning: Incorrect checksum in table [TCPA] - 00, should be AB (20090903/tbutils-314) [ 0.208479] ACPI Warning: Incorrect checksum in table [OEMB] - 0x77, should be 0x72 (20100428/tbutils-314) [ 0.209105] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0._OSC] (Node f701f270), AE_NOT_FOUND [ 0.210543] ACPI Warning: Incorrect checksum in table [OEMB] - CD, should be CC (20090903/tbutils-314) [ 0.210667] ACPI Warning: Incorrect checksum in table [OEMB] - D3, should be C4 (20090903/tbutils-314) [ 0.211069] ACPI Warning: Incorrect checksum in table [OEMB] - 0x99, should be 0x92 (20100428/tbutils-314) [ 0.211113] ACPI Warning: Incorrect checksum in table [OEMB] - 7B, should be 76 (20090903/tbutils-314) [ 0.211904] ACPI Error: No handler for Region [ERAM] (ee422ed8) [EmbeddedControl] (20100428/evregion-369) [ 0.211928] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0._OSC] (Node f701fd08), AE_ALREADY_EXISTS [ 0.211938] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.SBRG.EC0_._REG] (Node ee423708), AE_NOT_EXIST [ 0.212633] ACPI Warning: Incorrect checksum in table [OEMB] - E1, should be D3 (20090903/tbutils-314) [ 0.212815] ACPI Error: Method parse/execution failed [_SB_.PCI0._OSC] (Node f7424eb8), AE_NOT_FOUND (20110112/psparse-536) [ 0.213084] ACPI Error (dsfield-0143): [CAPB] Namespace lookup failure, AE_ALREADY_EXISTS [ 0.213100] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0._OSC] (Node f7014ca8), AE_ALREADY_EXISTS [ 0.213771] ACPI Warning: Incorrect checksum in table [OEMB] - EC, should be E7 (20090903/tbutils-314) [ 0.213827] ACPI Warning: Package List length (0xC) larger than NumElements count (0x3), truncated [ 0.214423] ACPI Warning: Incorrect checksum in table [OEMB] - FD, should be EF (20090903/tbutils-314) [ 0.215632] ACPI Warning: Incorrect checksum in table [OEMB] - 0x0B, should be 0x5B (20100428/tbutils-314) [ 0.216249] ACPI Warning: Incorrect checksum in table [ATKG] - 0x27, should be 0xE5 (20110112/tbutils-314) [ 0.217060] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0._OSC] (Node dec13ca8), AE_ALREADY_EXISTS [ 0.217763] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0._OSC] (Node f7013030), AE_ALREADY_EXISTS [ 0.217957] ACPI Warning: Incorrect checksum in table [OEMB] - 69, should be 5F (20090903/tbutils-314) [ 0.218957] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0._OSC] (Node f701be88), AE_ALREADY_EXISTS [ 0.219691] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0._OSC] (Node f7013270), AE_NOT_FOUND [ 0.219959] ACPI Error: No handler for Region [SACS] (f70c52a8) [PCI_Config] (20090903/evregion-319) [ 0.219968] ACPI Error: Region PCI_Config(2) has no handler (20090903/exfldio-295) [ 0.219977] ACPI Error (psparse-0537): Method parse/execution failed [PRID.P_D0._STA] (Node f701ba38), AE_NOT_EXIST [ 0.220034] ACPI Error (uteval-0250): Method execution failed [PRID.P_D0._STA] (Node f701ba38), AE_NOT_EXIST [ 0.220068] ACPI Error (psparse-0537): Method parse/execution failed [PRID.P_D1._STA] (Node f701baf8), AE_NOT_EXIST [ 0.220107] ACPI Error (uteval-0250): Method execution failed [PRID.P_D1._STA] (Node f701baf8), AE_NOT_EXIST [ 0.220142] ACPI Error (psparse-0537): Method parse/execution failed [SECD.S_D0._STA] (Node f701bc78), AE_NOT_EXIST [ 0.220180] ACPI Error (uteval-0250): Method execution failed [SECD.S_D0._STA] (Node f701bc78), AE_NOT_EXIST [ 0.220213] ACPI Error (psparse-0537): Method parse/execution failed [SECD.S_D1._STA] (Node f701bd38), AE_NOT_EXIST [ 0.220252] ACPI Error (uteval-0250): Method execution failed [SECD.S_D1._STA] (Node f701bd38), AE_NOT_EXIST [ 0.221153] ACPI Error: Method parse/execution failed [_SB_.PCI0.HPET._CRS] (Node f402ae70), AE_NOT_FOUND (20110112/psparse-536) [ 0.221220] ACPI Error: Method parse/execution failed [_SB_.PCI0.RTC_._CRS] (Node f402aee8), AE_NOT_FOUND (20110112/psparse-536) [ 0.221945] mtrr: your CPUs had inconsistent MTRRdefType settings [ 0.222211] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0._OSC] (Node f701beb8), AE_ALREADY_EXISTS [ 0.222869] ACPI Warning: Incorrect checksum in table [ATKG] - B0, should be 4A (20090903/tbutils-314) [ 0.222980] ACPI Error: Field [I9MN] at 544 exceeds Buffer [IORT] size 464 (bits) (20090903/dsopcode-596) [ 0.222987] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.LPC0.PMIO._CRS] (Node f7015900), AE_AML_BUFFER_LIMIT [ 0.223020] ACPI Error (uteval-0250): Method execution failed [_SB_.PCI0.LPC0.PMIO._CRS] (Node f7015900), AE_AML_BUFFER_LIMIT [ 0.223245] ACPI Warning: Incorrect checksum in table [OEMB] - DB, should be DA (20090903/tbutils-314) [ 0.223485] [Firmware Bug]: PCI: MMCONFIG at [mem 0xf0000000-0xf3ffffff] not reserved in ACPI motherboard resources [ 0.224289] ACPI Warning for _SB_.PCI0.P32_._PRT: Return Package has no elements (empty) (20100428/nspredef-456) [ 0.224569] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0._OSC] (Node f701fca8), AE_ALREADY_EXISTS [ 0.224987] ACPI Error: Field [ASSM] at 524320 exceeds Buffer [BUF0] size 688 (bits) (20100428/dsopcode-597) [ 0.224994] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.MEM_._CRS] (Node f7021990), AE_AML_BUFFER_LIMIT [ 0.225018] ACPI Error (uteval-0250): Method execution failed [_SB_.MEM_._CRS] (Node f7021990), AE_AML_BUFFER_LIMIT [ 0.226224] ACPI Warning: Incorrect checksum in table [ATKG] - 53, should be 84 (20090903/tbutils-314) [ 0.227129] ACPI Warning: Incorrect checksum in table [ATKG] - 0x11, should be 0xE5 (20100428/tbutils-314) [ 0.228032] ACPI Error (psargs-0359): [_PR_.C002._PPC] Namespace lookup failure, AE_NOT_FOUND [ 0.228041] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.LPC0.EC0_._REG] (Node f742a558), AE_NOT_FOUND [ 0.228469] [Firmware Bug]: the BIOS has corrupted hw-PMU resources (MSR 38d is 30) [ 0.228535] ACPI Warning: Incorrect checksum in table [OEMB] - 77, should be 6F (20100121/tbutils-314) [ 0.228773] ACPI Error: Method parse/execution failed [_SB_.PCI0._OSC] (Node f4025450), AE_NOT_FOUND (20110112/psparse-536) [ 0.229334] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0._OSC] (Node f7020750), AE_ALREADY_EXISTS [ 0.229639] ACPI Error (psargs-0359): [CDW1] Namespace lookup failure, AE_NOT_FOUND [ 0.229644] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0._OSC] (Node f7413270), AE_NOT_FOUND [ 0.230075] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0._OSC] (Node f7014630), AE_ALREADY_EXISTS [ 0.231134] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0._OSC] (Node f7012f00), AE_NOT_FOUND [ 0.232350] ACPI Warning: Incorrect checksum in table [ATKG] - 15, should be 73 (20090903/tbutils-314) [ 0.232460] ACPI Warning: Incorrect checksum in table [OEMB] - 8C, should be 87 (20090903/tbutils-314) [ 0.232733] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0._OSC] (Node f701ebd0), AE_ALREADY_EXISTS [ 0.232830] ACPI Warning: Incorrect checksum in table [OEMB] - 0xC2, should be 0x84 (20100428/tbutils-314) [ 0.233493] ACPI Warning: Incorrect checksum in table [GSCI] - 58, should be AA (20090903/tbutils-314) [ 0.233542] ACPI Warning: Incorrect checksum in table [GSCI] - 0x70, should be 0xD2 (20100428/tbutils-314) [ 0.233946] ACPI Warning: Incorrect checksum in table [ATKG] - 1E, should be E5 (20090903/tbutils-314) [ 0.235518] ACPI Warning: Incorrect checksum in table [ASF!] - D8, should be 6E (20090903/tbutils-314) [ 0.236465] ACPI Warning: Incorrect checksum in table [OEMB] - 1D, should be 10 (20090903/tbutils-314) [ 0.236739] ACPI Error: Method parse/execution failed [_SB_.PCI0._OSC] (Node f3c24f00), AE_NOT_FOUND (20110112/psparse-536) [ 0.241360] ACPI Warning: Incorrect checksum in table [OEMB] - 0xBD, should be 0x89 (20100428/tbutils-314) [ 0.242473] ACPI Warning: Incorrect checksum in table [GSCI] - 0x28, should be 0x8A (20100428/tbutils-314) [ 0.244995] ACPI Warning: Incorrect checksum in table [OEMB] - 17, should be 67 (20090903/tbutils-314) [ 0.245794] ACPI Warning for _SB_.PCI0.PCIB._PRT: Return type mismatch - found Integer, expected Package (20100428/nspredef-1053) [ 0.245810] ACPI Error (uteval-0307): Return object type is incorrect [_SB_.PCI0.PCIB._PRT] (Node f7022c48), AE_TYPE [ 0.245830] ACPI Error: Type returned from _PRT was incorrect: Integer, expected Btypes: 0x8 (20100428/uteval-313) [ 0.246137] ACPI Warning: Incorrect checksum in table [ATKG] - F1, should be E5 (20090903/tbutils-314) [ 0.249246] ACPI Warning: Incorrect checksum in table [OEMB] - 70, should be 6D (20090903/tbutils-314) [ 0.249570] ACPI Error (psparse-0537): Method parse/execution failed [_PR_.CPU1._OSC] (Node f7010198), AE_ALREADY_EXISTS [ 0.249594] ACPI Error (psparse-0537): Method parse/execution failed [_PR_.CPU1._PDC] (Node f7010180), AE_ALREADY_EXISTS [ 0.249860] ACPI Error (psparse-0537): Method parse/execution failed [_PR_.CPU2._OSC] (Node f7010270), AE_ALREADY_EXISTS [ 0.249882] ACPI Error (psparse-0537): Method parse/execution failed [_PR_.CPU2._PDC] (Node f7010258), AE_ALREADY_EXISTS [ 0.250005] ACPI Error: No handler for Region [EC__] (f4424bd0) [EmbeddedControl] (20110112/evregion-369) [ 0.250012] ACPI Error: Region EmbeddedControl(0x3) has no handler (20110112/exfldio-292) [ 0.250019] ACPI Error: Method parse/execution failed [_SB_.PCI0.SBRG.EC__._REG] (Node f4425bb8), AE_NOT_EXIST (20110112/psparse-536) [ 0.250572] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0._OSC] (Node f7010e88), AE_ALREADY_EXISTS [ 0.250864] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0._OSC] (Node f7013e58), AE_ALREADY_EXISTS [ 0.250941] ACPI Error: Method parse/execution failed [_SB_.PCI0._OSC] (Node f4022e88), AE_ALREADY_EXISTS (20110112/psparse-536) [ 0.250986] [Firmware Bug]: ACPI: BIOS _OSI(Linux) query honored via DMI [ 0.251711] ACPI Warning: Incorrect checksum in table [ATKG] - B0, should be E5 (20090903/tbutils-314) [ 0.254947] ACPI Error: Method parse/execution failed [_SB_.PCI0._OSC] (Node f3c22e88), AE_ALREADY_EXISTS (20110112/psparse-536) [ 0.255884] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0._OSC] (Node f70142b8), AE_ALREADY_EXISTS [ 0.256141] ACPI Warning: Incorrect checksum in table [ATKG] - 0xAF, should be 0x59 (20110413/tbutils-314) [ 0.257910] ACPI Warning: Incorrect checksum in table [OEMB] - 04, should be 54 (20090903/tbutils-314) [ 0.261013] ACPI Warning: Incorrect checksum in table [OEMB] - DF, should be 2F (20090903/tbutils-314) [ 0.262586] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0._OSC] (Node f701f390), AE_ALREADY_EXISTS [ 0.262663] pci 0000:00:1f.0: [Firmware Bug]: TigerPoint LPC.BM_STS cleared [ 0.264838] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0._OSC] (Node f701f2a0), AE_ALREADY_EXISTS [ 0.265119] ACPI Error (psparse-0537): Method parse/execution failed [] (Node c08d5804), AE_NOT_FOUND [ 0.265541] ACPI Warning: Incorrect checksum in table [OEMB] - E0, should be 30 (20090903/tbutils-314) [ 0.266577] ACPI Warning: Incorrect checksum in table [GSCI] - 3B, should be BF (20090903/tbutils-314) [ 0.267893] ACPI Warning for _TZ_.TZ01._PSL: Return Package type mismatch at index 0 - found Processor, expected Reference (20090903/nspredef-1012) [ 0.268093] ACPI Error (psparse-0537): Method parse/execution failed [] (Node c0927024), AE_NOT_FOUND [ 0.268171] ACPI Error (psparse-0537): Method parse/execution failed [] (Node c0927024), AE_ALREADY_EXISTS [ 0.268458] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0._OSC] (Node f70142a0), AE_ALREADY_EXISTS [ 0.269488] ACPI Error (psparse-0537): Method parse/execution failed [_PR_.CPU1.APCT] (Node ffff88007af30560), AE_NO_MEMORY [ 0.269534] ACPI Error (psparse-0537): Method parse/execution failed [_PR_.CPU1.GCAP] (Node ffff88007af30540), AE_NO_MEMORY [ 0.269576] ACPI Error (psparse-0537): Method parse/execution failed [_PR_.CPU1._PDC] (Node ffff88007af30500), AE_NO_MEMORY [ 0.272427] ACPI Error: No handler for Region [SACS] (f71004d8) [PCI_Config] (20090903/evregion-319) [ 0.272435] ACPI Error (psparse-0537): Method parse/execution failed [PRID.P_D0._STA] (Node f7102150), AE_NOT_EXIST [ 0.272452] ACPI Error (uteval-0250): Method execution failed [PRID.P_D0._STA] (Node f7102150), AE_NOT_EXIST [ 0.272469] ACPI Error (psparse-0537): Method parse/execution failed [PRID.P_D1._STA] (Node f71021f8), AE_NOT_EXIST [ 0.272486] ACPI Error (uteval-0250): Method execution failed [PRID.P_D1._STA] (Node f71021f8), AE_NOT_EXIST [ 0.272503] ACPI Error (psparse-0537): Method parse/execution failed [SECD.S_D0._STA] (Node f7102360), AE_NOT_EXIST [ 0.272519] ACPI Error (uteval-0250): Method execution failed [SECD.S_D0._STA] (Node f7102360), AE_NOT_EXIST [ 0.272536] ACPI Error (psparse-0537): Method parse/execution failed [SECD.S_D1._STA] (Node f7102408), AE_NOT_EXIST [ 0.272552] ACPI Error (uteval-0250): Method execution failed [SECD.S_D1._STA] (Node f7102408), AE_NOT_EXIST [ 0.279154] ACPI Warning: Incorrect checksum in table [OEMB] - B9, should be AE (20090903/tbutils-314) [ 0.284552] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.IDE1.GTM_] (Node f7014858), AE_AML_PACKAGE_LIMIT [ 0.284566] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.IDE1.CHN1._GTM] (Node f7014798), AE_AML_PACKAGE_LIMIT [ 0.285468] ACPI Error (psargs-0359): [_PR_.CPU0._PPC] Namespace lookup failure, AE_NOT_FOUND [ 0.285476] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.ADP0.ADJP] (Node f7015b10), AE_NOT_FOUND [ 0.285546] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.ADP0._PSR] (Node f7015ae0), AE_NOT_FOUND [ 0.288180] ACPI Warning: Incorrect checksum in table [ATKG] - 0x81, should be 0x59 (20110112/tbutils-314) [ 0.288591] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0._OSC] (Node f701fd50), AE_ALREADY_EXISTS [ 0.288966] ACPI Error: Method parse/execution failed [_SB_.PCI0._OSC] (Node f34245b8), AE_NOT_FOUND (20110112/psparse-536) [ 0.296054] [Firmware Bug]: Invalid critical threshold (0) [ 0.296149] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0._OSC] (Node f701eca8), AE_ALREADY_EXISTS [ 0.296644] ACPI Error (psparse-0537): Method parse/execution failed [_SB_._OSC] (Node ffff88012fc16660), AE_NOT_FOUND [ 0.302946] ACPI Error (psargs-0359): [HPTF] Namespace lookup failure, AE_NOT_FOUND [ 0.302952] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.HPET._STA] (Node ffff88007db32200), AE_NOT_FOUND [ 0.307009] ACPI Error: Method parse/execution failed [_SB_.PCI0._OSC] (Node f4c22e88), AE_ALREADY_EXISTS (20110112/psparse-536) [ 0.307757] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.SATA.CHN0._GTM] (Node f74145a0), AE_NOT_FOUND [ 0.307837] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.SATA.CHN1._GTM] (Node f7414690), AE_NOT_FOUND [ 0.308095] ACPI Warning: Incorrect checksum in table [SSDT] - 1F, should be 7F (20090903/tbutils-314) [ 0.308151] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.SAT1.CHN0._GTM] (Node f7414cd8), AE_NOT_FOUND [ 0.308213] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.SAT1.CHN1._GTM] (Node f7414dc8), AE_NOT_FOUND [ 0.310609] ACPI Warning for _PR_.CPU1._PSS: SubPackage[8,9] - suspicious power dissipation values (20100428/nsrepair2-403) [ 0.310767] ACPI Warning: Incorrect checksum in table [OEMB] - 0x72, should be 0x6A (20100428/tbutils-314) [ 0.311025] ACPI Error: Method parse/execution failed [_SB_.PCI0._OSC] (Node f4c250d8), AE_ALREADY_EXISTS (20110112/psparse-536) [ 0.311041] ACPI Error: Method parse/execution failed [_SB_.PCI0._OSC] (Node f54250d8), AE_ALREADY_EXISTS (20110112/psparse-536) [ 0.311335] ACPI Warning for _PR_.CPU2._PSS: SubPackage[8,9] - suspicious power dissipation values (20100428/nsrepair2-403) [ 0.311729] ACPI Error: Could not enable PowerButton event (20090903/evxfevnt-193) [ 0.311932] ACPI Warning: Could not enable fixed event 2 (20090903/evxface-146) [ 0.314160] ACPI Warning: Incorrect checksum in table [OEMB] - 91, should be 90 (20090903/tbutils-314) [ 0.314451] ACPI Error (psparse-0537): Method parse/execution failed [] (Node ffffffff81a2b040), AE_ALREADY_EXISTS [ 0.314603] ACPI Warning: Incorrect checksum in table [OEMB] - 8B, should be 8A (20090903/tbutils-314) [ 0.314675] mtrr: your CPUs had inconsistent variable MTRR settings [ 0.316718] ACPI Warning: Incorrect checksum in table [OEMB] - 27, should be 22 (20090903/tbutils-314) [ 0.316734] ACPI Warning: Incorrect checksum in table [TAMG] - 0xF3, should be 0xF2 (20100428/tbutils-314) [ 0.316816] ACPI Error: No handler for Region [ERAM] (ffff88007a733d80) [EmbeddedControl] (20110112/evregion-369) [ 0.316829] ACPI Error: Method parse/execution failed [_SB_.HTEV] (Node ffff88007a730780), AE_NOT_EXIST (20110112/psparse-536) [ 0.316839] ACPI Error: Method parse/execution failed [_SB_.PCI0.LPC0.EC0_._REG] (Node ffff88007a73a078), AE_NOT_EXIST (20110112/psparse-536) [ 0.317152] ACPI Warning: Incorrect checksum in table [OEMB] - C1, should be B4 (20090903/tbutils-314) [ 0.317427] ACPI Error (psparse-0537): Method parse/execution failed [_PR_.CPU1._PDC] (Node ffff88007d735160), AE_ALREADY_EXISTS [ 0.317685] ACPI Warning: Incorrect checksum in table [ASF!] - 0xFC, should be 0x98 (20100428/tbutils-314) [ 0.319223] ACPI Warning: Incorrect checksum in table [OEMB] - E7, should be E2 (20090903/tbutils-314) [ 0.321587] ACPI Error (psparse-0537): Method parse/execution failed [] (Node ffffffff81a12040), AE_NOT_FOUND [ 0.321722] ACPI Error: Needed type [Reference], found [Device] ffff88007552b900 (20100428/exresop-104) [ 0.321740] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0._OSC] (Node ffff880075532ba0), AE_AML_OPERAND_TYPE [ 0.322869] ACPI Error: No handler for Region [RAM_] (f7425690) [EmbeddedControl] (20110112/evregion-369) [ 0.322886] ACPI Error: Method parse/execution failed [_SB_.PCI0.LPCB.SNC_.SBRT] (Node f7435228), AE_NOT_EXIST (20110112/psparse-536) [ 0.322899] ACPI Error: Method parse/execution failed [_SB_.PCI0.LPCB.EC0_._REG] (Node f7428d98), AE_NOT_EXIST (20110112/psparse-536) [ 0.323465] ACPI Warning: Incorrect checksum in table [OEMB] - 0x8D, should be 0x8C (20100428/tbutils-314) [ 0.323777] ACPI Warning: Package List length (0xC) larger than NumElements count (0x4), truncated [ 0.325321] ACPI Error: No handler for Region [ERAM] (ffff88007d32bf78) [EmbeddedControl] (20090903/evregion-319) [ 0.325334] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.LPCB.KBC0.SMWR] (Node ffff88007d32c8c0), AE_NOT_EXIST [ 0.325357] ACPI Error (psparse-0537): Method parse/execution failed [_TZ_.THRM.SFAN] (Node ffff88007d328ec0), AE_NOT_EXIST [ 0.325376] ACPI Error (psparse-0537): Method parse/execution failed [_TZ_.THRM.THCK] (Node ffff88007d328f40), AE_NOT_EXIST [ 0.325396] ACPI Error (psparse-0537): Method parse/execution failed [_GPE._L02] (Node ffff88007d3289c0), AE_NOT_EXIST [ 0.325630] ACPI Error: Could not enable SleepButton event (20100428/evxfevnt-202) [ 0.325636] ACPI Warning: Could not enable fixed event 0x3 (20100428/evxface-146) [ 0.328929] ACPI Warning: Incorrect checksum in table [OEMB] - 0x45, should be 0x40 (20100428/tbutils-314) [ 0.328954] ACPI Warning: Incorrect checksum in table [ASF!] - D9, should be 6D (20090903/tbutils-314) [ 0.329218] ACPI Warning for _SB_.PCI0._OSC: Return type mismatch - found Integer, expected Buffer (20090903/nspredef-1006) [ 0.329373] ACPI Error (dsfield-0143): [CAPD] Namespace lookup failure, AE_ALREADY_EXISTS [ 0.329378] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0._OSC] (Node ffff88012b63d760), AE_ALREADY_EXISTS [ 0.330000] ACPI Warning: Incorrect checksum in table [TCPA] - 0xD1, should be 0x75 (20100428/tbutils-314) [ 0.330140] ACPI Warning: Incorrect checksum in table [ATKG] - 0xE3, should be 0xDC (20110112/tbutils-314) [ 0.330280] ACPI Warning: Incorrect checksum in table [OEMB] - DE, should be D9 (20090903/tbutils-314) [ 0.330488] ACPI Error: No handler for Region [SACS] (ffff88011bf101f8) [PCI_Config] (20090903/evregion-319) [ 0.330496] ACPI Error (psparse-0537): Method parse/execution failed [PRID.P_D0._STA] (Node ffff88011bf0d360), AE_NOT_EXIST [ 0.330513] ACPI Error (uteval-0250): Method execution failed [PRID.P_D0._STA] (Node ffff88011bf0d360), AE_NOT_EXIST [ 0.330528] ACPI Error (psparse-0537): Method parse/execution failed [PRID.P_D1._STA] (Node ffff88011bf0d460), AE_NOT_EXIST [ 0.330545] ACPI Error (uteval-0250): Method execution failed [PRID.P_D1._STA] (Node ffff88011bf0d460), AE_NOT_EXIST [ 0.330560] ACPI Error (psparse-0537): Method parse/execution failed [SECD.S_D0._STA] (Node ffff88011bf0d660), AE_NOT_EXIST [ 0.330576] ACPI Error (uteval-0250): Method execution failed [SECD.S_D0._STA] (Node ffff88011bf0d660), AE_NOT_EXIST [ 0.330590] ACPI Error (psparse-0537): Method parse/execution failed [SECD.S_D1._STA] (Node ffff88011bf0d760), AE_NOT_EXIST [ 0.330606] ACPI Error (uteval-0250): Method execution failed [SECD.S_D1._STA] (Node ffff88011bf0d760), AE_NOT_EXIST [ 0.330759] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0._OSC] (Node ffff88011763c000), AE_ALREADY_EXISTS [ 0.330793] ACPI Warning: Incorrect checksum in table [TCPA] - 0x00, should be 0x9A (20110112/tbutils-314) [ 0.331637] ACPI Error: Needed type [Reference], found [Device] ffff88014b82d820 (20090903/exresop-104) [ 0.331653] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0._OSC] (Node ffff88014b83cac0), AE_AML_OPERAND_TYPE [ 0.331820] ACPI Error: Needed type [Reference], found [Device] ffff8800379aa900 (20100428/exresop-104) [ 0.331838] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0._OSC] (Node ffff8800379bbba0), AE_AML_OPERAND_TYPE [ 0.331948] ACPI Warning: Incorrect checksum in table [OEMB] - 0C, should be 0B (20090903/tbutils-314) [ 0.332160] ACPI Error (dswload-0677): [PCI0] Namespace lookup failure, AE_NOT_FOUND [ 0.332167] ACPI Error (psparse-0537): Method parse/execution failed [] (Node ffffffff81cf5eb0), AE_NOT_FOUND [ 0.333155] ACPI Warning: Incorrect checksum in table [SSDT] - 4A, should be D9 (20090903/tbutils-314) [ 0.333287] ACPI Error: No handler for Region [ERAM] (ffff8800bc638d80) [EmbeddedControl] (20090903/evregion-319) [ 0.333300] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.HTEV] (Node ffff8800bc62e600), AE_NOT_EXIST [ 0.333326] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.LPC0.EC0_._REG] (Node ffff8800bc63e9a0), AE_NOT_EXIST [ 0.333559] ACPI Error: No handler for Region [ERAM] (ffff88007db2ad80) [EmbeddedControl] (20090903/evregion-319) [ 0.333573] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.HTEV] (Node ffff88007db28600), AE_NOT_EXIST [ 0.333591] ACPI Warning: Incorrect checksum in table [TAMG] - 0xF4, should be 0xF3 (20110112/tbutils-314) [ 0.333601] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.LPC0.EC0_._REG] (Node ffff88007db309a0), AE_NOT_EXIST [ 0.333734] ACPI Warning for _SB_.PCI0._OSC: Parameter count mismatch - ASL declared 5, ACPI requires 4 (20090903/nspredef-336) [ 0.333765] ACPI Error (psargs-0359): [FZHD] Namespace lookup failure, AE_NOT_FOUND [ 0.333771] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.SATA.CHN0._GTM] (Node f7014300), AE_NOT_FOUND [ 0.333853] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.SATA.CHN1._GTM] (Node f70143f0), AE_NOT_FOUND [ 0.334143] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.SAT1.CHN0._GTM] (Node f7014a38), AE_NOT_FOUND [ 0.334206] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.SAT1.CHN1._GTM] (Node f7014b28), AE_NOT_FOUND [ 0.335658] ACPI Error: No handler for Region [ECOR] (ffff88007af355e8) [EmbeddedControl] (20110413/evregion-373) [ 0.335698] ACPI Error: Method parse/execution failed [_SB_.PCI0.SBRG.EC0_._REG] (Node ffff88007af36730), AE_NOT_EXIST (20110413/psparse-536) [ 0.335745] ACPI Warning: Incorrect checksum in table [OEMB] - 80, should be 78 (20090903/tbutils-314) [ 0.337368] ACPI Warning: Incorrect checksum in table [OEMB] - 8B, should be 86 (20090903/tbutils-314) [ 0.337513] ACPI Error: Method parse/execution failed [_SB_.PCI0._OSC] (Node f54243f0), AE_ALREADY_EXISTS (20110112/psparse-536) [ 0.337662] ACPI Error (psargs-0359): [URES] Namespace lookup failure, AE_NOT_FOUND [ 0.337662] ACPI Error (psparse-0537): Method parse/execution failed [_PSW] (Node f701f0a8), AE_NOT_FOUND [ 0.338155] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0._OSC] (Node ffff88021302db60), AE_ALREADY_EXISTS [ 0.338440] ACPI Error: No handler for Region [SACS] (ffff88012bb0f1f8) [PCI_Config] (20090903/evregion-319) [ 0.338717] ACPI Error (psparse-0537): Method parse/execution failed [PRID.P_D0._STA] (Node ffff88012bb111a0), AE_NOT_EXIST [ 0.338801] ACPI Warning: Incorrect checksum in table [OEMB] - 8B, should be 7E (20090903/tbutils-314) [ 0.338905] ACPI Error (uteval-0250): Method execution failed [PRID.P_D0._STA] (Node ffff88012bb111a0), AE_NOT_EXIST [ 0.339363] ACPI Error (psparse-0537): Method parse/execution failed [PRID.P_D1._STA] (Node ffff88012bb11280), AE_NOT_EXIST [ 0.339551] ACPI Error (uteval-0250): Method execution failed [PRID.P_D1._STA] (Node ffff88012bb11280), AE_NOT_EXIST [ 0.339584] ACPI Warning: Incorrect checksum in table [OEMB] - 0xE2, should be 0xD5 (20100428/tbutils-314) [ 0.339628] ACPI Warning: Incorrect checksum in table [OEMB] - 91, should be 88 (20090903/tbutils-314) [ 0.339857] ACPI Warning: Incorrect checksum in table [OEMB] - 6D, should be 60 (20090903/tbutils-314) [ 0.340003] ACPI Error (psparse-0537): Method parse/execution failed [SECD.S_D0._STA] (Node ffff88012bb11460), AE_NOT_EXIST [ 0.340121] ACPI Warning: Incorrect checksum in table [ATKG] - 0x1B, should be 0xE5 (20110112/tbutils-314) [ 0.340193] ACPI Error (uteval-0250): Method execution failed [SECD.S_D0._STA] (Node ffff88012bb11460), AE_NOT_EXIST [ 0.340651] ACPI Error (psparse-0537): Method parse/execution failed [SECD.S_D1._STA] (Node ffff88012bb11540), AE_NOT_EXIST [ 0.340838] ACPI Error (uteval-0250): Method execution failed [SECD.S_D1._STA] (Node ffff88012bb11540), AE_NOT_EXIST [ 0.341276] ACPI Warning: Incorrect checksum in table [ASF!] - F2, should be 8D (20090903/tbutils-314) [ 0.341759] ACPI Error: No handler for Region [RAM_] (f74212f8) [EmbeddedControl] (20100428/evregion-369) [ 0.341812] ACPI Error (psparse-0537): Method parse/execution failed [_PR_.CPU1._OSC] (Node ffff88017bc14660), AE_ALREADY_EXISTS [ 0.341843] ACPI Error (psparse-0537): Method parse/execution failed [_PR_.CPU1._PDC] (Node ffff88017bc14640), AE_ALREADY_EXISTS [ 0.342116] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.LPCB.SNC_.SBRT] (Node f742f228), AE_NOT_EXIST [ 0.342130] ACPI Error (psparse-0537): Method parse/execution failed [_PR_.CPU2._OSC] (Node ffff88017bc14780), AE_ALREADY_EXISTS [ 0.342160] ACPI Error (psparse-0537): Method parse/execution failed [_PR_.CPU2._PDC] (Node ffff88017bc14760), AE_ALREADY_EXISTS [ 0.342409] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.LPCB.EC0_._REG] (Node f7422d98), AE_NOT_EXIST [ 0.342985] ACPI Warning: Incorrect checksum in table [OEMB] - 18, should be 13 (20090903/tbutils-314) [ 0.343577] ACPI Warning: Incorrect checksum in table [OEMB] - 0xD1, should be 0xCA (20100428/tbutils-314) [ 0.344373] ACPI Warning: Incorrect checksum in table [OEMB] - C5, should be B8 (20090903/tbutils-314) [ 0.345244] ACPI Warning: Incorrect checksum in table [OEMB] - 0xA5, should be 0x9C (20100428/tbutils-314) [ 0.346079] ACPI Warning: Incorrect checksum in table [OEMB] - 7A, should be 71 (20090903/tbutils-314) [ 0.347557] ACPI Warning for _TZ_.THRM._PSL: Return Package type mismatch at index 0 - found [NULL Object Descriptor], expected Reference (20100428/nspredef-1059) [ 0.347883] ACPI Warning: Incorrect checksum in table [OEMB] - 5C, should be 53 (20090903/tbutils-314) [ 0.348936] ACPI Warning: Incorrect checksum in table [OEMB] - 0x56, should be 0x49 (20100428/tbutils-314) [ 0.349163] ACPI Warning: Incorrect checksum in table [OEMB] - E7, should be DA (20090903/tbutils-314) [ 0.350013] ACPI Warning: Incorrect checksum in table [OEMB] - D3, should be C6 (20090903/tbutils-314) [ 0.350096] ACPI Warning: Incorrect checksum in table [ATKG] - 13, should be 53 (20090903/tbutils-314) [ 0.350158] ACPI Warning: Incorrect checksum in table [ATKG] - 0x13, should be 0xC8 (20110112/tbutils-314) [ 0.350335] ACPI Warning: Incorrect checksum in table [SSDT] - 0x83, should be 0x37 (20110112/tbutils-314) [ 0.350784] ACPI Warning: Incorrect checksum in table [iEIT] - 0x5C, should be 0x51 (20100428/tbutils-314) [ 0.351065] ACPI Warning: Incorrect checksum in table [SSDT] - 0x04, should be 0xCA (20110112/tbutils-314) [ 0.353198] ACPI Error: No handler for Region [ERAM] (ffff88013be53e10) [EmbeddedControl] (20090903/evregion-319) [ 0.353215] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.SBRG.EC0_._REG] (Node ffff88013be520e0), AE_NOT_EXIST [ 0.353356] ACPI Warning: Incorrect checksum in table [ATKG] - 0x05, should be 0x36 (20100428/tbutils-314) [ 0.353401] ACPI Warning for _SB_.LATA._CRS: Return type mismatch - found Integer, expected Buffer (20090903/nspredef-1006) [ 0.353406] ACPI Error (uteval-0307): Return object type is incorrect [_SB_.LATA._CRS] (Node ffff88006df2eb00), AE_TYPE [ 0.353652] ACPI Error: Needed type [Reference], found [Device] ffff8800379a6800 (20090903/exresop-104) [ 0.353652] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0._OSC] (Node ffff8800379bba80), AE_AML_OPERAND_TYPE [ 0.355135] ACPI Error: Method parse/execution failed [_PR_.CPU0._PDC] (Node ffff88007a738ca8), AE_ALREADY_EXISTS (20110112/psparse-536) [ 0.355798] ACPI Error: ACPI path has too many parent prefixes (^) - reached beyond root node (20090903/nsaccess-429) [ 0.356001] ..MP-BIOS bug: 8254 timer not connected to IO-APIC [ 0.356108] ACPI Error: No handler for Region [ECF2] (ffff88013ba313a8) [EmbeddedControl] (20090903/evregion-319) [ 0.356113] ACPI Error: Region EmbeddedControl(3) has no handler (20090903/exfldio-295) [ 0.356119] ACPI Error (psparse-0537): Method parse/execution failed [P8XH] (Node ffff88013ba28020), AE_NOT_EXIST [ 0.356143] ACPI Error (psparse-0537): Method parse/execution failed [_GPE._L02] (Node ffff88013ba32120), AE_NOT_EXIST [ 0.356280] ACPI Warning: Incorrect checksum in table [TCPA] - 0x33, should be 0xD7 (20100428/tbutils-314) [ 0.356754] ACPI Warning: Incorrect checksum in table [ASF!] - ED, should be 83 (20090903/tbutils-314) [ 0.357018] ACPI Warning: Incorrect checksum in table [OEMB] - 0xA6, should be 0xA1 (20100428/tbutils-314) [ 0.357902] ACPI Warning: Incorrect checksum in table [ATKG] - 0xE9, should be 0xFE (20110112/tbutils-314) [ 0.358086] ACPI Warning: Incorrect checksum in table [OEMB] - 0x11, should be 0x10 (20100428/tbutils-314) [ 0.359183] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0._OSC] (Node f7021a68), AE_ALREADY_EXISTS [ 0.359915] ACPI Warning: Incorrect checksum in table [ATKG] - 0x7D, should be 0x59 (20110112/tbutils-314) [ 0.360335] ACPI Warning: Incorrect checksum in table [GSCI] - 0x28, should be 0xD4 (20110112/tbutils-314) [ 0.361596] ACPI Error: ACPI path has too many parent prefixes (^) - reached beyond root node (20100428/nsaccess-429) [ 0.362481] ACPI Error (psparse-0537): Method parse/execution failed [] (Node c091bffc), AE_NOT_FOUND [ 0.362557] ACPI Error (psparse-0537): Method parse/execution failed [] (Node c091bffc), AE_ALREADY_EXISTS [ 0.362606] ACPI Error (dsfield-0487): [SMIC] Namespace lookup failure, AE_ALREADY_EXISTS [ 0.362751] ACPI Error: Method parse/execution failed [_SB_.PCI0._OSC] (Node f40255d0), AE_ALREADY_EXISTS (20110112/psparse-536) [ 0.362859] [Firmware Bug]: ACPI: BIOS _OSI(Linux) query honored via cmdline [ 0.362870] ACPI Error (dsfield-0140): [CAPB] Namespace lookup failure, AE_ALREADY_EXISTS [ 0.362886] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0._OSC] (Node f7014a80), AE_ALREADY_EXISTS [ 0.363488] ACPI Error (psparse-0537): Method parse/execution failed [_PR_.CPU1._PDC] (Node ffff880227048f60), AE_ALREADY_EXISTS [ 0.363621] ACPI Warning: Incorrect checksum in table [OEMB] - 3C, should be 3B 20090521 tbutils-246 [ 0.363728] ACPI Warning: Incorrect checksum in table [OEMB] - 75, should be 74 (20090903/tbutils-314) [ 0.363981] ACPI Warning: Incorrect checksum in table [OEMB] - BB, should be AE (20090903/tbutils-314) [ 0.364356] ACPI Warning: For _SB_.PCI0.P2P_._PRT: Return Package has no elements (empty) (20110112/nspredef-456) [ 0.364521] ACPI Error: Method parse/execution failed [_SB_.PCI0._OSC] (Node f44285b8), AE_ALREADY_EXISTS (20110413/psparse-536) [ 0.366917] ACPI Warning: Incorrect checksum in table [OEMB] - BD, should be B6 (20090903/tbutils-314) [ 0.367185] ACPI Warning: Incorrect checksum in table [OEMB] - B2, should be A5 (20090903/tbutils-314) [ 0.367524] ACPI Warning: Incorrect checksum in table [ATKG] - 0xAA, should be 0x59 (20100428/tbutils-314) [ 0.368838] ACPI Warning: Incorrect checksum in table [OEMB] - 23, should be 1E (20090903/tbutils-314) [ 0.369986] ACPI Warning: Incorrect checksum in table [OEMB] - 0x61, should be 0x58 (20100428/tbutils-314) [ 0.370263] ACPI Warning: Incorrect checksum in table [ATKG] - 0x73, should be 0xE5 (20110112/tbutils-314) [ 0.371572] ACPI Warning: Incorrect checksum in table [ATKG] - 0xFB, should be 0xE5 (20100428/tbutils-314) [ 0.372475] ACPI Error: Method parse/execution failed [_SB_.PCI0._OSC] (Node f5426ca8), AE_ALREADY_EXISTS (20110112/psparse-536) [ 0.372684] ACPI Error: Method parse/execution failed [_SB_.PCI0._OSC] (Node dd825ca8), AE_ALREADY_EXISTS (20110112/psparse-536) [ 0.375383] ACPI Warning: Incorrect checksum in table [OEMB] - 0x90, should be 0x83 (20100428/tbutils-314) [ 0.375585] ACPI Error (dswload-0677): [USB0] Namespace lookup failure, AE_NOT_FOUND [ 0.375609] ACPI Error (psparse-0537): Method parse/execution failed [] (Node c09fb6c8), AE_NOT_FOUND [ 0.375966] ACPI Error (psparse-0537): Method parse/execution failed [] (Node c0992f7c), AE_NOT_FOUND [ 0.376047] ACPI Error: Method parse/execution failed [_SB_.PCI0._OSC] (Node dd825ca8), AE_ALREADY_EXISTS (20110413/psparse-536) [ 0.376092] ACPI Error: No handler for Region [ECXP] (ffff88007cf31ab0) [EmbeddedControl] (20100428/evregion-369) [ 0.376106] ACPI Error (psparse-0537): Method parse/execution failed [_PR_.CPU0._OSC] (Node ffff88007cf3f440), AE_NOT_EXIST [ 0.376141] ACPI Error (psparse-0537): Method parse/execution failed [_PR_.CPU0._PDC] (Node ffff88007cf3f420), AE_NOT_EXIST [ 0.376733] ACPI Error: Method parse/execution failed [_SB_.PCI0._OSC] (Node f5026ca8), AE_ALREADY_EXISTS (20110112/psparse-536) [ 0.378931] ACPI Warning: Incorrect checksum in table [OEMB] - 33, should be 2C (20090903/tbutils-314) [ 0.379815] ACPI Warning: Incorrect checksum in table [SSDT] - D5, should be 3E (20090903/tbutils-314) [ 0.380609] ACPI Warning: Incorrect checksum in table [SSDT] - 8C, should be DC (20090903/tbutils-314) [ 0.381039] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0._OSC] (Node f7016a38), AE_ALREADY_EXISTS [ 0.381211] ACPI Warning: Incorrect checksum in table [OEMB] - 8E, should be 89 (20090903/tbutils-314) [ 0.381478] [Firmware Bug]: PCI: MMCONFIG at [mem 0xe0000000-0xe06fffff] not reserved in ACPI motherboard resources [ 0.382740] ACPI Error (psparse-0537): Method parse/execution failed [_SB_._OSC] (Node ffff88003f013ca0), AE_NOT_FOUND [ 0.383518] ACPI Warning: Incorrect checksum in table [ATKG] - 0x0F, should be 0xE7 (20100428/tbutils-314) [ 0.384684] ACPI Warning: Incorrect checksum in table [OEMB] - 0x4E, should be 0x3F (20100428/tbutils-314) [ 0.384722] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.HPET._CRS] (Node ffff88007db32220), AE_NOT_FOUND [ 0.384811] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.RTC_._CRS] (Node ffff88007db322c0), AE_NOT_FOUND [ 0.385777] ACPI Warning: Incorrect checksum in table [TCPA] - 00, should be 89 (20090903/tbutils-314) [ 0.388556] ACPI Warning: Incorrect checksum in table [ATKG] - 6A, should be E5 (20090903/tbutils-314) [ 0.388736] ACPI Warning: Incorrect checksum in table [OEMB] - 8C, should be 83 (20090903/tbutils-314) [ 0.390341] ACPI Error: [GUR_._BAS] Namespace lookup failure, AE_NOT_FOUND (20110112/psargs-359) [ 0.390354] ACPI Error: Method parse/execution failed [_SB_.PCI0.MBIO._CRS] (Node ffff880078f30aa0), AE_NOT_FOUND (20110112/psparse-536) [ 0.390975] [Firmware Bug]: PCI: MMCONFIG at [mem 0xe0000000-0xe08fffff] not reserved in ACPI motherboard resources [ 0.393086] ACPI Warning: For _TZ_.THRM._PSL: Return Package has no elements (empty) (20110413/nspredef-456) [ 0.395834] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0._OSC] (Node ffff88013ba393a0), AE_NOT_FOUND [ 0.396197] [Firmware Bug]: ACPI: Invalid BIOS _PSS frequency: 0x0 MHz [ 0.396945] ACPI Warning: Incorrect checksum in table [TCPA] - 00, should be 96 (20090903/tbutils-314) [ 0.397644] ACPI Warning: Incorrect checksum in table [ATKG] - F9, should be E5 (20090903/tbutils-314) [ 0.398231] ACPI Warning: Incorrect checksum in table [ATKG] - 12, should be 07 (20090903/tbutils-314) [ 0.398290] ACPI Warning: Incorrect checksum in table [ATKG] - 01, should be 23 (20090903/tbutils-314) [ 0.399990] ACPI Error: Field [ASSM] at 524320 exceeds Buffer [BUF0] size 688 (bits) (20110112/dsopcode-597) [ 0.399996] ACPI Error: Method parse/execution failed [_SB_.MEM_._CRS] (Node ffff8800b8e38000), AE_AML_BUFFER_LIMIT (20110112/psparse-536) [ 0.400012] ACPI Error: Method execution failed [_SB_.MEM_._CRS] (Node ffff8800b8e38000), AE_AML_BUFFER_LIMIT (20110112/uteval-103) [ 0.400212] ACPI Warning: Incorrect checksum in table [TCPA] - 0x00, should be 0x88 (20110112/tbutils-314) [ 0.401117] ACPI Warning: Incorrect checksum in table [ATKG] - 0F, should be E7 (20090903/tbutils-314) [ 0.404616] ACPI Warning: Incorrect checksum in table [OEMB] - A5, should be A0 (20090903/tbutils-314) [ 0.406016] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.ADP0.ADJP] (Node ffff88013ba3c5a0), AE_NOT_FOUND [ 0.406038] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.ADP0._PSR] (Node ffff88013ba3c560), AE_NOT_FOUND [ 0.407719] ACPI Warning: Incorrect checksum in table [OEMB] - 72, should be 69 (20090903/tbutils-314) [ 0.408529] ACPI Error: Method parse/execution failed [_SB_.PCI0._OSC] (Node f4c285b8), AE_ALREADY_EXISTS (20110112/psparse-536) [ 0.414781] ACPI Warning: Incorrect checksum in table [OEMB] - CD, should be C8 (20090903/tbutils-314) [ 0.415975] ACPI Warning for _TZ_.THRM._PSL: Return Package type mismatch at index 0 - found [NULL Object Descriptor], expected Reference (20090903/nspredef-1012) [ 0.418105] ACPI Warning: Incorrect checksum in table [ATKG] - 76, should be FE (20090903/tbutils-314) [ 0.420210] ACPI Error: [CAPD] Namespace lookup failure, AE_ALREADY_EXISTS (20110413/dsfield-143) [ 0.420218] ACPI Error: Method parse/execution failed [_SB_.PCI0._OSC] (Node ffff88022b749b18), AE_ALREADY_EXISTS (20110413/psparse-536) [ 0.420241] ACPI Error: Field [I9MN] at 544 exceeds Buffer [IORT] size 464 (bits) (20100428/dsopcode-597) [ 0.420248] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.LPC0.PMIO._CRS] (Node ffff88013142fac0), AE_AML_BUFFER_LIMIT [ 0.420284] ACPI Error (uteval-0250): Method execution failed [_SB_.PCI0.LPC0.PMIO._CRS] (Node ffff88013142fac0), AE_AML_BUFFER_LIMIT [ 0.420323] ACPI Warning: Incorrect checksum in table [ATKG] - 0xC3, should be 0x59 (20110112/tbutils-314) [ 0.422032] ACPI Warning (dsobject-0501): Package List length (6) larger than NumElements count (3), truncated [ 0.424909] ACPI Warning for _SB_.PCI0.P2P_._PRT: Return Package has no elements (empty) (20100428/nspredef-456) [ 0.426823] ACPI Error (psargs-0359): [_PR_.CPU0._PSS] Namespace lookup failure, AE_NOT_FOUND [ 0.426833] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.AC__.ADJP] (Node ffff88007b32ee00), AE_NOT_FOUND [ 0.426872] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.AC__._PSR] (Node ffff88007b32edc0), AE_NOT_FOUND [ 0.429245] ACPI Warning for _PR_.CPU0._TSD: Incorrectly formed Package, attempting repair (20090903/nsrepair-200) [ 0.430887] ACPI Warning for _PR_.CPU1._TSD: Incorrectly formed Package, attempting repair (20090903/nsrepair-200) [ 0.434593] ACPI Warning: Incorrect checksum in table [GSCI] - D2, should be A5 (20090903/tbutils-314) [ 0.436921] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0._OSC] (Node ffff88013b62ccc0), AE_NOT_FOUND [ 0.438019] ACPI Warning: Incorrect checksum in table [ATKG] - C8, should be E5 (20090903/tbutils-314) [ 0.440405] ACPI Warning for _SB_.PCI0._OSC: Parameter count mismatch - ASL declared 5, ACPI requires 4 (20100428/nspredef-352) [ 0.441805] ACPI Warning: Incorrect checksum in table [OEMB] - B2, should be B1 (20090903/tbutils-314) [ 0.444897] ACPI Error: Method parse/execution failed [_SB_.PCI0._OSC] (Node f4c252a0), AE_ALREADY_EXISTS (20110112/psparse-536) [ 0.450562] ACPI Error: Method parse/execution failed [_SB_.PCI0._OSC] (Node ffff8800b8e33ca8), AE_NOT_FOUND (20110112/psparse-536) [ 0.451517] ACPI Error (psargs-0359): [GUR_._BAS] Namespace lookup failure, AE_NOT_FOUND [ 0.451682] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.MBIO._CRS] (Node ffff88007bb2a880), AE_NOT_FOUND [ 0.453111] ACPI Warning for _SB_.BAT1._BIF: Return Package type mismatch at index 12 - found Integer, expected String/Buffer (20090903/nspredef-1012) [ 0.454555] ACPI Warning for _PR_.CPU0._PSS: Return Package type mismatch at index 3 - found Integer, expected Package (20100428/nspredef-1059) [ 0.454838] ACPI Warning for _PR_.CPU1._PSS: Return Package type mismatch at index 3 - found Integer, expected Package (20100428/nspredef-1059) [ 0.455674] ACPI Warning: Incorrect checksum in table [SSDT] - 83, should be 7F (20090903/tbutils-314) [ 0.459126] ACPI Warning: Incorrect checksum in table [SSDT] - 4C, should be 12 (20090903/tbutils-314) [ 0.460622] ACPI Warning: For _SB_.PCI0.P32_._PRT: Return Package has no elements (empty) (20110112/nspredef-456) [ 0.461767] ACPI Error: [CAPB] Namespace lookup failure, AE_ALREADY_EXISTS (20110413/dsfield-143) [ 0.461793] ACPI Error: Method parse/execution failed [_SB_.PCI0._OSC] (Node ffff88003cdb0f00), AE_ALREADY_EXISTS (20110413/psparse-536) [ 0.462573] ACPI Warning: Incorrect checksum in table [OEMB] - 95, should be 5E 20090521 tbutils-246 [ 0.468216] ACPI Error (psparse-0537): Method parse/execution failed [_PR_.CPU1._CST] (Node ffff88007c5cc380), AE_NOT_FOUND [ 0.468859] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0._OSC] (Node ffff88003f1afdc0), AE_ALREADY_EXISTS [ 0.475076] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.SATA.CHN0._GTM] (Node f701eb28), AE_NOT_FOUND [ 0.475159] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.SATA.CHN1._GTM] (Node f701ec18), AE_NOT_FOUND [ 0.475441] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.SAT1.CHN0._GTM] (Node f70202a0), AE_NOT_FOUND [ 0.475506] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.SAT1.CHN1._GTM] (Node f7020390), AE_NOT_FOUND [ 0.479385] ACPI Warning: Incorrect checksum in table [TCPA] - 0x00, should be 0x88 (20100428/tbutils-314) [ 0.479821] ACPI Error: Method parse/execution failed [_SB_.PCI0._OSC] (Node f3c28a68), AE_ALREADY_EXISTS (20110413/psparse-536) [ 0.481067] ACPI Error: Method parse/execution failed [_SB_.PCI0._OSC] (Node f4028a68), AE_ALREADY_EXISTS (20110112/psparse-536) [ 0.482955] ACPI Error: Method parse/execution failed [_SB_.PCI0._OSC] (Node ffff88003d9b0f00), AE_ALREADY_EXISTS (20110112/psparse-536) [ 0.484974] ACPI Error: Method parse/execution failed [_SB_.PCI0._OSC] (Node f3c28a68), AE_ALREADY_EXISTS (20110112/psparse-536) [ 0.485955] ACPI Warning: For _TZ_.THRM._PSL: Return Package type mismatch at index 0 - found [NULL Object Descriptor], expected Reference (20110112/nspredef-1059) [ 0.487180] ACPI Warning: Incorrect checksum in table [TAMG] - 0x33, should be 0x32 (20110112/tbutils-314) [ 0.487365] ACPI Warning: Incorrect checksum in table [TAMG] - 0x99, should be 0x98 (20110112/tbutils-314) [ 0.490256] ACPI Warning: Incorrect checksum in table [ATKG] - 0x22, should be 0x53 (20110112/tbutils-314) [ 0.490491] ACPI Warning: For _SB_.PCI0._OSC: Parameter count mismatch - ASL declared 5, ACPI requires 4 (20110413/nspredef-352) [ 0.491491] ACPI Warning: Incorrect checksum in table [SSDT] - 0x4A, should be 0xD9 (20110112/tbutils-314) [ 0.492569] ACPI Error (psparse-0537): Method parse/execution failed [] (Node ffffffff81a08440), AE_NOT_FOUND [ 0.492648] ACPI Error (dswload-0781): [PRID] Namespace lookup failure, AE_ALREADY_EXISTS [ 0.492655] ACPI Error (psparse-0537): Method parse/execution failed [] (Node ffffffff81a08440), AE_ALREADY_EXISTS [ 0.492811] ACPI Error: Method parse/execution failed [_SB_.PCI0._OSC] (Node f5428a68), AE_ALREADY_EXISTS (20110112/psparse-536) [ 0.494198] ACPI Warning: Incorrect checksum in table [SSDT] - 0x37, should be 0xC7 (20110112/tbutils-314) [ 0.496094] ACPI Warning: Incorrect checksum in table [TCPA] - F8, should be 9C (20090903/tbutils-314) [ 0.497662] ACPI Warning (nspredef-0357): _SB_.PCI0.P2P_._PRT: Return Package has no elements (empty) [20080926] [ 0.497913] ACPI Warning: Incorrect checksum in table [TAMG] - 0xFA, should be 0xF9 (20100428/tbutils-314) [ 0.498775] ACPI Warning: Incorrect checksum in table [TAMG] - 0xB2, should be 0xB1 (20100428/tbutils-314) [ 0.498976] ACPI Warning: Incorrect checksum in table [GSCI] - 7B, should be 04 (20090903/tbutils-314) [ 0.500043] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.LPC0.EC0_._REG] (Node ffff8800ac22d040), AE_NOT_FOUND [ 0.501138] ACPI Error: Method parse/execution failed [_SB_.PCI0._OSC] (Node f3c28a38), AE_ALREADY_EXISTS (20110112/psparse-536) [ 0.505041] ACPI Error: Method parse/execution failed [_SB_.PCI0._OSC] (Node f4028a38), AE_ALREADY_EXISTS (20110112/psparse-536) [ 0.513609] ACPI Error: Method parse/execution failed [_SB_.PCI0._OSC] (Node f5428a38), AE_ALREADY_EXISTS (20110112/psparse-536) [ 0.516158] ACPI Error: Method parse/execution failed [_SB_.PCI0._OSC] (Node f74296c0), AE_ALREADY_EXISTS (20110112/psparse-536) [ 0.526190] ACPI Warning (tbutils-0217): Incorrect checksum in table [OEMB] - F3, should be EE [20080926] [ 0.527455] ACPI Error: Method parse/execution failed [_SB_.PCI0._OSC] (Node f5422df8), AE_ALREADY_EXISTS (20110112/psparse-536) [ 0.533028] ACPI Error: Method parse/execution failed [_SB_.PCI0._OSC] (Node ffff88003d9b0bb8), AE_ALREADY_EXISTS (20110112/psparse-536) [ 0.534826] ACPI Warning: Incorrect checksum in table [TCPA] - 0x00, should be 0x7F (20110112/tbutils-314) [ 0.538081] ACPI Warning: Incorrect checksum in table [OEMB] - C1, should be BC (20090903/tbutils-314) [ 0.539131] ACPI Error: No handler for Region [RAM_] (ffff88012fa36a20) [EmbeddedControl] (20110112/evregion-369) [ 0.539149] ACPI Error: Method parse/execution failed [_SB_.PCI0.LPCB.SNC_.SBRT] (Node ffff88012fa4f398), AE_NOT_EXIST (20110112/psparse-536) [ 0.539161] ACPI Error: Method parse/execution failed [_SB_.PCI0.LPCB.EC0_._REG] (Node ffff88012fa396b8), AE_NOT_EXIST (20110112/psparse-536) [ 0.540036] ACPI Error: [_PR_.C002._PPC] Namespace lookup failure, AE_NOT_FOUND (20110112/psargs-359) [ 0.540046] ACPI Error: Method parse/execution failed [_SB_.PCI0.LPC0.EC0_._REG] (Node ffff880107e623c0), AE_NOT_FOUND (20110112/psparse-536) [ 0.541238] ACPI Error: Method parse/execution failed [_TZ_.C2E8] (Node f482d108), AE_AML_PACKAGE_LIMIT (20110112/psparse-536) [ 0.541258] ACPI Error: Method parse/execution failed [_TZ_.C2E7] (Node f482d0f0), AE_AML_PACKAGE_LIMIT (20110112/psparse-536) [ 0.541277] ACPI Error: Method parse/execution failed [_TZ_.TZ2_._TMP] (Node f482d7c8), AE_AML_PACKAGE_LIMIT (20110112/psparse-536) [ 0.548650] ACPI Warning: Incorrect checksum in table [TCPA] - 00, should be 87 (20090903/tbutils-314) [ 0.550271] ACPI Warning: Incorrect checksum in table [ATKG] - 0xDC, should be 0x0E (20110112/tbutils-314) [ 0.563415] ACPI Error: Method parse/execution failed [_SB_.PCI0._OSC] (Node ffff88003d9af848), AE_ALREADY_EXISTS (20110112/psparse-536) [ 0.566332] ACPI Warning: For _TZ_.THRM._AL0: Return Package has no elements (empty) (20110413/nspredef-456) [ 0.568235] ACPI Warning: Incorrect checksum in table [TCPA] - 00, should be 7F 20090521 tbutils-246 [ 0.581397] ACPI Warning: Incorrect checksum in table [ATKG] - 0x24, should be 0x16 (20110112/tbutils-314) [ 0.583718] ACPI Warning: _SB_.PCI0.PCI2._PRT: Return Package has no elements (empty) 20090521 nspredef-434 [ 0.591409] ACPI Warning: Incorrect checksum in table [ATKG] - 0x1E, should be 0x16 (20110112/tbutils-314) [ 0.591722] ACPI Error: Field [ASSM] at 524320 exceeds Buffer [BUF0] size 880 (bits) (20100428/dsopcode-597) [ 0.591729] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.MEM_._CRS] (Node ffff8800b4040f60), AE_AML_BUFFER_LIMIT [ 0.591760] ACPI Error (uteval-0250): Method execution failed [_SB_.MEM_._CRS] (Node ffff8800b4040f60), AE_AML_BUFFER_LIMIT [ 0.593045] ACPI Error (psparse-0537): Method parse/execution failed [_PR_.PPCE] (Node f702c7b0), AE_NOT_FOUND [ 0.593072] ACPI Error (psparse-0537): Method parse/execution failed [EV4_] (Node f7019648), AE_NOT_FOUND [ 0.593095] ACPI Error (psparse-0537): Method parse/execution failed [SMIE] (Node f702ea08), AE_NOT_FOUND [ 0.593119] ACPI Error (psparse-0537): Method parse/execution failed [NEVT] (Node f702e9c0), AE_NOT_FOUND [ 0.593142] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.LPCB.ECDV._Q66] (Node f702e678), AE_NOT_FOUND [ 0.597675] ACPI Warning for _SB_.PCI0.LPC_.EC__.BAT0._BIF: Converted Buffer to expected String at index 9 (20090903/nsrepair-132) [ 0.597680] ACPI Warning for _SB_.PCI0.LPC_.EC__.BAT0._BIF: Converted Buffer to expected String at index 10 (20090903/nsrepair-132) [ 0.597685] ACPI Warning for _SB_.PCI0.LPC_.EC__.BAT0._BIF: Converted Buffer to expected String at index 11 (20090903/nsrepair-132) [ 0.597689] ACPI Warning for _SB_.PCI0.LPC_.EC__.BAT0._BIF: Converted Buffer to expected String at index 12 (20090903/nsrepair-132) [ 0.600451] ACPI Error (psargs-0359): [_SB_.PCI0.EGBA] Namespace lookup failure, AE_NOT_FOUND [ 0.600456] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.LPC_.MBRD._CRS] (Node f7416318), AE_NOT_FOUND [ 0.612305] ACPI Warning: Incorrect checksum in table [SSDT] - 6C, should be FB (20090903/tbutils-314) [ 0.612793] ACPI Error: [CAPB] Namespace lookup failure, AE_ALREADY_EXISTS (20110112/dsfield-143) [ 0.612820] ACPI Error: Method parse/execution failed [_SB_.PCI0._OSC] (Node ffff88003d9ae190), AE_ALREADY_EXISTS (20110112/psparse-536) [ 0.614155] ACPI Warning: Incorrect checksum in table [SSDT] - 37, should be C7 (20090903/tbutils-314) [ 0.620955] ACPI Warning for _TZ_.THRM._PSL: Return Package type mismatch at index 0 - found Processor, expected Reference (20090903/nspredef-1012) [ 0.621415] ACPI Error (psparse-0537): Method parse/execution failed [_PR_.PPCE] (Node f702c828), AE_NOT_FOUND [ 0.621443] ACPI Error (psparse-0537): Method parse/execution failed [EV4_] (Node f7019ed0), AE_NOT_FOUND [ 0.621468] ACPI Error (psparse-0537): Method parse/execution failed [SMIE] (Node f702ea98), AE_NOT_FOUND [ 0.621493] ACPI Error (psparse-0537): Method parse/execution failed [NEVT] (Node f702ea50), AE_NOT_FOUND [ 0.621518] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.LPCB.ECDV._Q66] (Node f702e708), AE_NOT_FOUND [ 0.625680] [Firmware Bug]: PCI: MMCONFIG at [mem 0xe0000000-0xefffffff] not reserved in ACPI motherboard resources [ 0.627242] ACPI Error (psargs-0359): [_SB_.PCI0.EC__.HOTT] Namespace lookup failure, AE_NOT_FOUND [ 0.627255] ACPI Error (psparse-0537): Method parse/execution failed [_TZ_.TZ01._HOT] (Node ffff88013ba3ae60), AE_NOT_FOUND [ 0.628646] ACPI Warning: Incorrect checksum in table [OEMB] - 0xFA, should be 0x1E (20100428/tbutils-314) [ 0.628687] [Firmware Bug]: ERST: ERST table is invalid [ 0.630258] ACPI Error: Method parse/execution failed [_SB_.PCI0._OSC] (Node ffff88007af370a0), AE_ALREADY_EXISTS (20110112/psparse-536) [ 0.641157] ACPI Warning: Incorrect checksum in table [OEMB] - C4, should be C1 (20090903/tbutils-314) [ 0.644838] [Firmware Bug]: PCI: MMCONFIG at [mem 0xe0000000-0xe09fffff] not reserved in ACPI motherboard resources [ 0.646493] ACPI Warning: Incorrect checksum in table [OEMB] - 0x5F, should be 0x5A (20100428/tbutils-314) [ 0.651383] ACPI Error (psparse-0537): Method parse/execution failed [_SB_._OSC] (Node ffff88007f416680), AE_NOT_FOUND [ 0.652133] ACPI Error (psparse-0537): Method parse/execution failed [] (Node ffffffff81a2e040), AE_NOT_FOUND [ 0.652695] ACPI Error (psparse-0537): Method parse/execution failed [] (Node ffffffff81a0f040), AE_NOT_FOUND [ 0.653163] ACPI Error: Method parse/execution failed [_SB_.PCI0._OSC] (Node ffff88007ab2f460), AE_ALREADY_EXISTS (20110112/psparse-536) [ 0.653985] ACPI Warning: Incorrect checksum in table [TAMG] - 0x4A, should be 0x49 (20110112/tbutils-314) [ 0.654642] ACPI Error: Method parse/execution failed [_PR_.CPU1._PDC] (Node ffff88020f44deb0), AE_ALREADY_EXISTS (20110112/psparse-536) [ 0.654994] ACPI Error: Method parse/execution failed [_PR_.CPU2._PDC] (Node ffff88020f44df50), AE_ALREADY_EXISTS (20110112/psparse-536) [ 0.655350] ACPI Error: Method parse/execution failed [_PR_.CPU3._PDC] (Node ffff88020f454000), AE_ALREADY_EXISTS (20110112/psparse-536) [ 0.655369] ACPI Error (psargs-0359): [_SB_.PCI0.PSKB] Namespace lookup failure, AE_NOT_FOUND [ 0.655376] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.LPC0.SIO_.KBC0._STA] (Node ffff880236c47260), AE_NOT_FOUND [ 0.655576] ACPI Error (psargs-0359): [_SB_.PCI0.PSMS] Namespace lookup failure, AE_NOT_FOUND [ 0.655581] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.LPC0.SIO_.MSE0._STA] (Node ffff880236c47340), AE_NOT_FOUND [ 0.656750] ACPI Warning: Incorrect checksum in table [OEMB] - 06, should be 05 20090521 tbutils-246 [ 0.658002] ACPI Warning for _SB_.PCI0.SATA.PRT0._GTF: Return type mismatch - found Integer, expected Buffer (20090903/nspredef-1006) [ 0.658697] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0._OSC] (Node ffff88023fc14aa0), AE_ALREADY_EXISTS [ 0.662008] ACPI Error (psparse-0537): Method parse/execution failed [] (Node ffffffff81a0c440), AE_NOT_FOUND [ 0.663194] [Firmware Bug]: ACPI: no secondary bus range in _CRS [ 0.664875] ACPI Warning: Incorrect checksum in table [TAMG] - 0x45, should be 0x44 (20110112/tbutils-314) [ 0.666686] ACPI Warning: Incorrect checksum in table [TAMG] - 0x9E, should be 0x9D (20100428/tbutils-314) [ 0.670109] ACPI Warning: Incorrect checksum in table [OEMB] - 5B, should be 4E (20090903/tbutils-314) [ 0.670182] ACPI Warning: Incorrect checksum in table [TAMG] - C3, should be C2 (20090903/tbutils-314) [ 0.670980] ACPI Warning: Incorrect checksum in table [TCPA] - 0x00, should be 0x7F (20100428/tbutils-314) [ 0.673104] ACPI Warning: Incorrect checksum in table [OEMB] - 8C, should be 7D (20090903/tbutils-314) [ 0.674282] ACPI Warning: Incorrect checksum in table [TAMG] - 0x15, should be 0x14 (20110112/tbutils-314) [ 0.674920] ACPI Error: [SERN] Namespace lookup failure, AE_ALREADY_EXISTS (20110413/dswload2-316) [ 0.674938] ACPI Error: Method parse/execution failed [_SB_.PCI0.LPC_.EC__.GBIF] (Node f3829120), AE_ALREADY_EXISTS (20110413/psparse-536) [ 0.674963] ACPI Error: Method parse/execution failed [_SB_.PCI0.LPC_.EC__.BAT1._BIF] (Node f3829330), AE_ALREADY_EXISTS (20110413/psparse-536) [ 0.675162] ACPI Warning: Incorrect checksum in table [TAMG] - 0x05, should be 0x04 (20110413/tbutils-314) [ 0.677370] ACPI Warning for _SB_.PCI0.BAT0._BIF: Converted Buffer to expected String at index 9 (20090903/nsrepair-132) [ 0.677375] ACPI Warning for _SB_.PCI0.BAT0._BIF: Converted Buffer to expected String at index 12 (20090903/nsrepair-132) [ 0.677386] ACPI Warning: Incorrect checksum in table [OEMB] - 94, should be 93 (20090903/tbutils-314) [ 0.678233] ACPI Warning: Incorrect checksum in table [OEMB] - 0x55, should be 0x50 (20100428/tbutils-314) [ 0.678877] ACPI Warning: Incorrect checksum in table [OEMB] - 88, should be 7F (20090903/tbutils-314) [ 0.681297] ACPI Warning: Incorrect checksum in table [OEMB] - DA, should be D9 (20090903/tbutils-314) [ 0.688066] ACPI Warning: Incorrect checksum in table [OEMB] - 60, should be 5F (20090903/tbutils-314) [ 0.695029] ACPI Error (psparse-0537): Method parse/execution failed [] (Node ffffffff81a0e440), AE_NOT_FOUND [ 0.695887] ACPI Warning: Incorrect checksum in table [OEMB] - C1, should be C0 (20090903/tbutils-314) [ 0.696587] ACPI Warning: Incorrect checksum in table [OEMB] - 0xEE, should be 0xE6 (20100428/tbutils-314) [ 0.697769] ACPI Warning: Incorrect checksum in table [OEMB] - 0xFC, should be 0xF7 (20100428/tbutils-314) [ 0.700202] [Firmware Bug]: powernow-k8: No PSB or ACPI _PSS objects [ 0.702121] ACPI Warning: Incorrect checksum in table [OEMB] - 0x84, should be 0x7B (20100428/tbutils-314) [ 0.705041] ACPI Warning: Incorrect checksum in table [OEMB] - 0xF3, should be 0xF2 (20100428/tbutils-314) [ 0.710267] ACPI Error: Method parse/execution failed [_TZ_.PSWT] (Node f7424bb8), AE_AML_PACKAGE_LIMIT (20110112/psparse-536) [ 0.710275] ACPI Error: Method parse/execution failed [_TZ_.GTTP] (Node f7424b88), AE_AML_PACKAGE_LIMIT (20110112/psparse-536) [ 0.710281] ACPI Error: Method parse/execution failed [_TZ_.GFXZ._TMP] (Node f74249a8), AE_AML_PACKAGE_LIMIT (20110112/psparse-536) [ 0.710890] ACPI Warning: Incorrect checksum in table [OEMB] - DF, should be D2 (20090903/tbutils-314) [ 0.712727] ACPI Error: Method parse/execution failed [_TZ_.DTSZ._TMP] (Node f7424ca8), AE_AML_PACKAGE_LIMIT (20110112/psparse-536) [ 0.715065] ACPI Warning: Incorrect checksum in table [OEMB] - 67, should be 64 (20090903/tbutils-314) [ 0.715951] ACPI Warning: Incorrect checksum in table [OEMB] - 0x9B, should be 0x93 (20100428/tbutils-314) [ 0.717350] ACPI Warning: Incorrect checksum in table [OEMB] - 0x5C, should be 0x55 (20100428/tbutils-314) [ 0.719490] ACPI Warning: Incorrect checksum in table [OEMB] - 0x3A, should be 0x39 (20100428/tbutils-314) [ 0.721822] ACPI Error (dswload-0659): [USB0] Namespace lookup failure, AE_NOT_FOUND [ 0.722199] ACPI Error (psparse-0537): Method parse/execution failed [] (Node ffffffff81a4d180), AE_NOT_FOUND [ 0.725417] ACPI Warning for _SB_.PCI0.LPC_.SYSR._CRS: Return type mismatch - found Integer, expected Buffer (20090903/nspredef-1006) [ 0.725429] ACPI Error (uteval-0307): Return object type is incorrect [_SB_.PCI0.LPC_.SYSR._CRS] (Node ffff88013ba46cc0), AE_TYPE [ 0.725450] ACPI Error: Type returned from _CRS was incorrect: Integer, expected Btypes: 4 (20090903/uteval-313) [ 0.725974] ACPI Warning: Incorrect checksum in table [OEMB] - 0x7E, should be 0x75 (20100428/tbutils-314) [ 0.736425] ACPI Warning: For _SB_.PCI0.PT02._PRT: Return Package has no elements (empty) (20110413/nspredef-456) [ 0.743273] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0._OSC] (Node f701f0d8), AE_ALREADY_EXISTS [ 0.743525] ACPI Error: [CAPD] Namespace lookup failure, AE_ALREADY_EXISTS (20110112/dsfield-143) [ 0.743530] ACPI Error: Method parse/execution failed [_SB_.PCI0._OSC] (Node f50273d8), AE_ALREADY_EXISTS (20110112/psparse-536) [ 0.743538] ACPI Warning: For _SB_.PCI0._OSC: Parameter count mismatch - ASL declared 5, ACPI requires 4 (20110112/nspredef-352) [ 0.744106] ACPI Error: Field [ASSM] at 524320 exceeds Buffer [BUF0] size 880 (bits) (20090903/dsopcode-596) [ 0.744114] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.MEM_._CRS] (Node ffff88013ba44cc0), AE_AML_BUFFER_LIMIT [ 0.744142] ACPI Error (uteval-0250): Method execution failed [_SB_.MEM_._CRS] (Node ffff88013ba44cc0), AE_AML_BUFFER_LIMIT [ 0.755111] ACPI Warning: Incorrect checksum in table [OEMB] - 2F, should be 2A (20090903/tbutils-314) [ 0.772223] ACPI Error: Method parse/execution failed [_SB_.PCI0._OSC] (Node f4c250d8), AE_ALREADY_EXISTS (20101013/psparse-537) [ 0.775831] ACPI Warning: Incorrect checksum in table [TCPA] - 0x00, should be 0x87 (20110112/tbutils-314) [ 0.777581] ACPI Warning: Incorrect checksum in table [TAMG] - 0xF9, should be 0xF8 (20110112/tbutils-314) [ 0.779737] ACPI Warning: Incorrect checksum in table [TAMG] - 0x83, should be 0x82 (20110112/tbutils-314) [ 0.780967] ACPI Warning: Incorrect checksum in table [TAMG] - FA, should be F9 (20090903/tbutils-314) [ 0.781225] ACPI Warning: Incorrect checksum in table [TAMG] - 0x10, should be 0x0F (20110112/tbutils-314) [ 0.781345] ACPI Warning: Incorrect checksum in table [TAMG] - 0xB2, should be 0xB1 (20110112/tbutils-314) [ 0.782613] ACPI Error (psargs-0359): [RAMB] Namespace lookup failure, AE_NOT_FOUND [ 0.783246] ACPI Warning: Incorrect checksum in table [TAMG] - 0x7D, should be 0x7C (20100428/tbutils-314) [ 0.786539] ACPI Warning: Incorrect checksum in table [TAMG] - 0x2D, should be 0x2C (20110112/tbutils-314) [ 0.787253] ACPI Warning: Incorrect checksum in table [TAMG] - 0x10, should be 0x0F (20100428/tbutils-314) [ 0.788032] ACPI Warning: Incorrect checksum in table [TAMG] - 0x04, should be 0x03 (20110413/tbutils-314) [ 0.788418] ACPI Error (psparse-0537): Method parse/execution failed [_SB_._OSC] (Node ffff88030a048b40), AE_AML_BUFFER_LIMIT [ 0.788607] ACPI Warning: Incorrect checksum in table [TAMG] - 0xA2, should be 0xA1 (20110112/tbutils-314) [ 0.790513] ACPI Error: Method parse/execution failed [_SB_.PCI0.LPC_.EC__.GBIF] (Node ffff880079f39f78), AE_ALREADY_EXISTS (20110112/psparse-536) [ 0.790526] ACPI Error: Method parse/execution failed [_SB_.PCI0.LPC_.EC__.BAT0._BIF] (Node ffff880079f37118), AE_ALREADY_EXISTS (20110112/psparse-536) [ 0.791560] ACPI Warning: Incorrect checksum in table [SSDT] - 0x3F, should be 0x1F (20110112/tbutils-314) [ 0.794367] ACPI Warning for _PR_.P002._PSD: Return type mismatch - found Integer, expected Package (20090903/nspredef-1006) [ 0.795423] ACPI Warning: Incorrect checksum in table [SSDT] - 0x3F, should be 0x1F (20100428/tbutils-314) [ 0.805111] ACPI Warning: Incorrect checksum in table [TCPA] - 00, should be 7E (20090903/tbutils-314) [ 0.810246] [Firmware Bug]: ACPI(Z01I) defines _DOD but not _DOS [ 0.810687] ACPI Error (dswload-0659): [DD02] Namespace lookup failure, AE_NOT_FOUND [ 0.810756] ACPI Error (dswload-0659): [EHC1] Namespace lookup failure, AE_NOT_FOUND [ 0.820565] ACPI Error: [FZHD] Namespace lookup failure, AE_NOT_FOUND (20110112/psargs-359) [ 0.820571] ACPI Error: Method parse/execution failed [_SB_.PCI0.SATA.CHN0._GTM] (Node ffff880127632b40), AE_NOT_FOUND (20110112/psparse-536) [ 0.820632] ACPI Error: Method parse/execution failed [_SB_.PCI0.SATA.CHN1._GTM] (Node ffff880127632cd0), AE_NOT_FOUND (20110112/psparse-536) [ 0.821065] ACPI Error: Method parse/execution failed [_SB_.PCI0.SAT1.CHN0._GTM] (Node ffff880127634758), AE_NOT_FOUND (20110112/psparse-536) [ 0.821112] ACPI Error: Method parse/execution failed [_SB_.PCI0.SAT1.CHN1._GTM] (Node ffff8801276348e8), AE_NOT_FOUND (20110112/psparse-536) [ 0.822836] ACPI Warning: For _SB_.PCI0.PCI2._PRT: Return Package has no elements (empty) (20110112/nspredef-456) [ 0.831199] ACPI Warning: Incorrect checksum in table [OEMB] - B7, should be B6 (20090903/tbutils-314) [ 0.860349] ACPI Error (psparse-0537): Method parse/execution failed [_PR_.PPCE] (Node ffff88023704ea40), AE_NOT_FOUND [ 0.860380] ACPI Error (psparse-0537): Method parse/execution failed [EV4_] (Node ffff8802370590e0), AE_NOT_FOUND [ 0.860410] ACPI Error (psparse-0537): Method parse/execution failed [SMIE] (Node ffff8802370522a0), AE_NOT_FOUND [ 0.860439] ACPI Error (psparse-0537): Method parse/execution failed [NEVT] (Node ffff880237052240), AE_NOT_FOUND [ 0.860468] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.LPCB.ECDV._Q66] (Node ffff880237050de0), AE_NOT_FOUND [ 0.870147] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0._OSC] (Node ffff88013ba29e80), AE_NOT_FOUND [ 0.872036] ACPI Warning: Incorrect checksum in table [OEMB] - EC, should be E3 (20090903/tbutils-314) [ 0.873454] ACPI Warning for _SB_.PCI0.PCIB._PRT: Return Package has no elements (empty) (20090903/nspredef-433) [ 0.875591] ACPI Warning: Incorrect checksum in table [OEMB] - 14, should be 13 (20090903/tbutils-314) [ 0.877093] ACPI Warning: Incorrect checksum in table [OEMB] - 0x89, should be 0x80 (20100428/tbutils-314) [ 0.879606] ACPI Error (psargs-0359): [MPEN] Namespace lookup failure, AE_NOT_FOUND [ 0.879794] ACPI Error (psparse-0537): Method parse/execution failed [_TZ_.TZ00._PSL] (Node ffff88015ba4de00), AE_NOT_FOUND [ 0.888177] ACPI Warning for _SB_.BAT1._BST: Return Package type mismatch at index 2 - found [NULL Object Descriptor], expected Integer (20090903/nspredef-1012) [ 0.890080] ACPI Error: No handler for Region [RAM_] (ffff880133a35a20) [EmbeddedControl] (20100428/evregion-369) [ 0.890253] ACPI Error: Region EmbeddedControl(0x3) has no handler (20100428/exfldio-293) [ 0.890421] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.LPCB.SNC_.SBRT] (Node ffff880133a49620), AE_NOT_EXIST [ 0.890696] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.LPCB.EC0_._REG] (Node ffff880133a385e0), AE_NOT_EXIST [ 0.892097] ACPI Error (psparse-0537): Method parse/execution failed [_PR_.PPCE] (Node ffff88021704e920), AE_NOT_FOUND [ 0.892124] ACPI Error (psparse-0537): Method parse/execution failed [EV4_] (Node ffff880217056700), AE_NOT_FOUND [ 0.892147] ACPI Error (psparse-0537): Method parse/execution failed [SMIE] (Node ffff880217052180), AE_NOT_FOUND [ 0.892171] ACPI Error (psparse-0537): Method parse/execution failed [NEVT] (Node ffff880217052120), AE_NOT_FOUND [ 0.892195] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.LPCB.ECDV._Q66] (Node ffff880217050cc0), AE_NOT_FOUND [ 0.892915] ACPI Warning: Incorrect checksum in table [OEMB] - 0xCE, should be 0xCD (20100428/tbutils-314) [ 0.899338] ACPI Warning: Incorrect checksum in table [OEMB] - 0xDD, should be 0xD4 (20100428/tbutils-314) [ 0.900692] ACPI Error (psparse-0537): Method parse/execution failed [_PR_.PPCE] (Node ffff88021704e960), AE_NOT_FOUND [ 0.900729] ACPI Error (psparse-0537): Method parse/execution failed [EV4_] (Node ffff880217059000), AE_NOT_FOUND [ 0.900753] ACPI Error (psparse-0537): Method parse/execution failed [SMIE] (Node ffff8802170521c0), AE_NOT_FOUND [ 0.900776] ACPI Error (psparse-0537): Method parse/execution failed [NEVT] (Node ffff880217052160), AE_NOT_FOUND [ 0.900801] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.LPCB.ECDV._Q66] (Node ffff880217050d00), AE_NOT_FOUND [ 0.905032] ACPI Error (psparse-0537): Method parse/execution failed [_PR_.PPCE] (Node ffff88021304e940), AE_NOT_FOUND [ 0.905061] ACPI Error (psparse-0537): Method parse/execution failed [EV4_] (Node ffff8802130576a0), AE_NOT_FOUND [ 0.905085] ACPI Error (psparse-0537): Method parse/execution failed [SMIE] (Node ffff8802130521a0), AE_NOT_FOUND [ 0.905110] ACPI Error (psparse-0537): Method parse/execution failed [NEVT] (Node ffff880213052140), AE_NOT_FOUND [ 0.905135] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.LPCB.ECDV._Q66] (Node ffff880213050ce0), AE_NOT_FOUND [ 0.905920] ACPI Error (psparse-0537): Method parse/execution failed [_PR_.C000.C264] (Node f7024e58), AE_AML_PACKAGE_LIMIT [ 0.905985] ACPI Error (psparse-0537): Method parse/execution failed [_PR_.C000._PSS] (Node f7024f30), AE_AML_PACKAGE_LIMIT [ 0.906063] [Firmware Bug]: BIOS needs update for CPU frequency support [ 0.940265] ACPI Warning: Incorrect checksum in table [TAMG] - 0x14, should be 0x13 (20110112/tbutils-314) [ 0.940948] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0._OSC] (Node f7421fc0), AE_ALREADY_EXISTS [ 0.941821] ACPI Warning: Incorrect checksum in table [SSDT] - 0x3F, should be 0x91 (20110413/tbutils-314) [ 0.943511] ACPI Warning: Incorrect checksum in table [TCPA] - 0x00, should be 0x7E (20110413/tbutils-314) [ 0.944156] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.ACAD._PSR] (Node ffff88013384d720), AE_NOT_FOUND [ 0.967528] ACPI Warning for _TZ_.THRM._AL0: Return Package has no elements (empty) (20100428/nspredef-456) [ 0.972652] ACPI Warning: Incorrect checksum in table [OEMB] - FA, should be F7 (20090903/tbutils-314) [ 0.990917] ACPI Warning for _SB_.PCI0.FNC2.PRT0._GTF: Return type mismatch - found Integer, expected Buffer (20090903/nspredef-1006) [ 0.991675] ACPI Warning for _SB_.PCI0.FNC2.PRT1._GTF: Return type mismatch - found Integer, expected Buffer (20090903/nspredef-1006) [ 0.992685] ACPI Error (psparse-0537): Method parse/execution failed [] (Node ffffffff81cf6eb0), AE_NOT_FOUND [ 1.004972] ACPI Error (psparse-0537): Method parse/execution failed [CPUT] (Node f701c150), AE_NOT_FOUND [ 1.005015] ACPI Error (psparse-0537): Method parse/execution failed [PSSC] (Node f701c168), AE_NOT_FOUND [ 1.005055] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.LPCB.EC0_._REG] (Node f702f3c0), AE_NOT_FOUND [ 1.005834] ACPI Warning: Incorrect checksum in table [OEMB] - 0x1D, should be 0x1C (20100428/tbutils-314) [ 1.009421] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.ACAD._PSR] (Node f701aa98), AE_NOT_FOUND [ 1.020525] ACPI Warning: Incorrect checksum in table [TAMG] - 0xE8, should be 0xE7 (20100428/tbutils-314) [ 1.020868] ACPI Warning for _PR_.CPU0._PSD: Incorrectly formed Package, attempting repair (20090903/nsrepair-200) [ 1.021557] ACPI Warning for _PR_.CPU1._PSD: Incorrectly formed Package, attempting repair (20090903/nsrepair-200) [ 1.023813] ACPI Warning: Incorrect checksum in table [OEMB] - 0x82, should be 0x81 (20100428/tbutils-314) [ 1.026272] ACPI Warning (processor_throttling-0843): Invalid throttling state, reset [ 1.027573] ACPI Error: No handler for Region [ERAM] (ffff880133e3e798) [EmbeddedControl] (20090903/evregion-319) [ 1.027587] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.DOCK._STA] (Node ffff880133e48620), AE_NOT_EXIST [ 1.027653] ACPI Error (uteval-0250): Method execution failed [_SB_.PCI0.DOCK._STA] (Node ffff880133e48620), AE_NOT_EXIST [ 1.125427] [Firmware Bug]: No valid trip found [ 1.158298] ACPI Error (psparse-0537): Method parse/execution failed [_SB_._OSC] (Node f701b648), AE_NOT_FOUND [ 1.167050] ACPI Error: [CDW1] Namespace lookup failure, AE_NOT_FOUND (20110316/psargs-359) [ 1.167226] ACPI Error: Method parse/execution failed [_SB_._OSC] (Node f4422648), AE_NOT_FOUND (20110316/psparse-536) [ 1.168945] ACPI Warning: Incorrect checksum in table [OEMB] - 0x04, should be 0xFD (20100428/tbutils-314) [ 1.174038] ACPI Warning: Incorrect checksum in table [TCPA] - 0x00, should be 0x9B (20100428/tbutils-314) [ 1.176461] [Firmware Bug]: powernow-k8: No compatible ACPI _PSS objects found. [ 1.176462] [Firmware Bug]: powernow-k8: Try again with latest BIOS. [ 1.179893] ACPI Warning: Incorrect checksum in table [ATKG] - 0x81, should be 0x59 (20100428/tbutils-314) [ 1.183989] [Firmware Bug]: ACPI(PEGD) defines _DOD but not _DOS [ 1.184923] ACPI Warning: For _SB_.PCI0.P0P1._PRT: Return Package has no elements (empty) (20110413/nspredef-456) [ 1.186079] ACPI Error: [BRTW] Namespace lookup failure, AE_NOT_FOUND (20110112/psargs-359) [ 1.186087] ACPI Error: Method parse/execution failed [_SB_.PCI0.GFX0.DD03._BCM] (Node f4c2a588), AE_NOT_FOUND (20110112/psparse-536) [ 1.187842] ACPI Error (psparse-0537): Method parse/execution failed [_PR_.CPU0.PPC_] (Node f7450168), AE_NOT_FOUND [ 1.187891] ACPI Error (psparse-0537): Method parse/execution failed [_PR_.CPU0._PPC] (Node f74500c0), AE_NOT_FOUND [ 1.188370] ACPI Error (psparse-0537): Method parse/execution failed [_PR_.CPU1._PPC] (Node f7450150), AE_NOT_FOUND [ 1.188776] ACPI Error (psparse-0537): Method parse/execution failed [_PR_.CPU2._PPC] (Node f74502b8), AE_NOT_FOUND [ 1.189190] ACPI Error (psparse-0537): Method parse/execution failed [_PR_.CPU3._PPC] (Node f7450258), AE_NOT_FOUND [ 1.196055] ACPI Error: Method parse/execution failed [_SB_.PCI0._OSC] (Node f3824270), AE_NOT_FOUND (20110112/psparse-536) [ 1.210593] ACPI Warning: For _SB_.PCI0.PCIB._PRT: Return Package has no elements (empty) (20101013/nspredef-456) [ 1.212692] ACPI Warning: For _TZ_.THRM._AL0: Return Package has no elements (empty) (20110112/nspredef-456) [ 1.214748] ACPI Error: [_T_1] Namespace lookup failure, AE_ALREADY_EXISTS (20110112/dswload-802) [ 1.214761] ACPI Error: Method parse/execution failed [_SB_.PCI0.PEGP.VGA_.LCD_.GBQC] (Node f3023438), AE_ALREADY_EXISTS (20110112/psparse-536) [ 1.214775] ACPI Error: Method parse/execution failed [_SB_.PCI0.PEGP.VGA_.LCD_._BQC] (Node f3023420), AE_ALREADY_EXISTS (20110112/psparse-536) [ 1.222641] ACPI Error: Method parse/execution failed [_SB_.PCI0.PEGP.VGA_.LCD1.GBQC] (Node f30235b8), AE_ALREADY_EXISTS (20110112/psparse-536) [ 1.222655] ACPI Error: Method parse/execution failed [_SB_.PCI0.PEGP.VGA_.LCD1._BQC] (Node f30235a0), AE_ALREADY_EXISTS (20110112/psparse-536) [ 1.224060] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.BAT1._STA] (Node f7023b10), AE_TIME [ 1.228128] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.LPC0.EC0_._REG] (Node f702a570), AE_NOT_FOUND [ 1.229185] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0._OSC] (Node f70140d8), AE_ALREADY_EXISTS [ 1.230869] ACPI Warning for _PR_.CPU0._PSS: SubPackage[15,16] - suspicious power dissipation values (20100428/nsrepair2-403) [ 1.231049] ACPI Warning for _PR_.CPU1._PSS: SubPackage[15,16] - suspicious power dissipation values (20100428/nsrepair2-403) [ 1.231224] ACPI Warning for _PR_.CPU2._PSS: SubPackage[15,16] - suspicious power dissipation values (20100428/nsrepair2-403) [ 1.231399] ACPI Warning for _PR_.CPU3._PSS: SubPackage[15,16] - suspicious power dissipation values (20100428/nsrepair2-403) [ 1.246159] ACPI Error: No handler for Region [ECRM] (f6cedba0) [EmbeddedControl] (20110413/evregion-373) [ 1.246164] ACPI Error: Region EmbeddedControl (ID=3) has no handler (20110413/exfldio-292) [ 1.246169] ACPI Error: Method parse/execution failed [_TZ_.RDEC] (Node f442fc60), AE_NOT_EXIST (20110413/psparse-536) [ 1.246176] ACPI Error: Method parse/execution failed [_TZ_.TZS0._TMP] (Node f442fca8), AE_NOT_EXIST (20110413/psparse-536) [ 1.270260] ACPI Error (psparse-0537): Method parse/execution failed [CPUT] (Node ffff880137a4e840), AE_NOT_FOUND [ 1.270297] ACPI Error (psparse-0537): Method parse/execution failed [PSSC] (Node ffff880137a4e860), AE_NOT_FOUND [ 1.270332] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.LPCB.EC0_._REG] (Node ffff880137a3fd00), AE_NOT_FOUND [ 1.272398] ACPI Error: No handler for Region [ECRM] (f76d0c60) [EmbeddedControl] (20110112/evregion-369) [ 1.272407] ACPI Error: Method parse/execution failed [_TZ_.RDEC] (Node f742fc60), AE_NOT_EXIST (20110112/psparse-536) [ 1.272415] ACPI Error: Method parse/execution failed [_TZ_.TZS0._TMP] (Node f742fca8), AE_NOT_EXIST (20110112/psparse-536) [ 1.280955] ACPI Error: No handler for Region [PCFG] (ffff880137a733f0) [PCI_Config] (20090903/evregion-319) [ 1.280965] ACPI Error (psparse-0537): Method parse/execution failed [J380._STA] (Node ffff88013712b380), AE_NOT_EXIST [ 1.314561] ACPI Error: [ECPU] Namespace lookup failure, AE_NOT_FOUND (20110112/psargs-359) [ 1.314567] ACPI Error: Method parse/execution failed [_TZ_.TZ00._TMP] (Node ffff88011763ca28), AE_NOT_FOUND (20110112/psparse-536) [ 1.320114] ACPI Warning: Incorrect checksum in table [ATKG] - 0x9D, should be 0xE5 (20110112/tbutils-314) [ 1.336148] ACPI Error (psparse-0537): Method parse/execution failed [_SB_._OSC] (Node ffff88012b647200), AE_AML_BUFFER_LIMIT [ 1.337975] ACPI Error (uteval-0250): Method execution failed [J380._STA] (Node ffff88013712b380), AE_NOT_EXIST [ 1.371174] ACPI Error: Field [CDW3] at 96 exceeds Buffer [NULL] size 64 (bits) (20090903/dsopcode-596) [ 1.371180] ACPI Error (psparse-0537): Method parse/execution failed [_SB_._OSC] (Node ffff88044b85e4a0), AE_AML_BUFFER_LIMIT [ 1.381411] ACPI Error (psparse-0537): Method parse/execution failed [] (Node ffffffff81a2b040), AE_NOT_FOUND [ 1.381481] ACPI Error (dswload-0659): [PCI0] Namespace lookup failure, AE_NOT_FOUND [ 1.384655] ACPI Error: Needed [Buffer/String/Package], found [Integer] ffff8801393f91f8 (20090903/exresop-590) [ 1.384672] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.VGA_._DSM] (Node ffff88013ba4c020), AE_AML_OPERAND_TYPE [ 1.384743] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.P0P1.VGA_._DSM] (Node ffff88013ba4d9c0), AE_AML_OPERAND_TYPE [ 1.398000] [Firmware Bug]: ACPI(Z00P) defines _DOD but not _DOS [ 1.398053] ACPI: acpi_idle yielding to intel_idleACPI Warning for _TZ_.TZ01._PSL: Return Package type mismatch at index 0 - found Processor, expected Reference (20100428/nspredef-1059) [ 1.399160] ACPI Warning for _SB_.PCI0.PT02._PRT: Return Package has no elements (empty) (20090903/nspredef-433) [ 1.400736] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.SATA.PRT0._SDD] (Node f7018e58), AE_NOT_FOUND [ 1.436671] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.SATA.PRT0._SDD] (Node f7024e58), AE_NOT_FOUND [ 1.462866] ACPI Warning: _SB_.PCI0.VID2._DOD: Return Package has no elements (empty) 20090521 nspredef-434 [ 1.480960] ACPI Warning: _SB_.PCI0.FNC2.PRT0._GTF: Return type mismatch - found Integer, expected Buffer 20090521 nspredef-940 [ 1.488986] ACPI Error (psargs-0359): [GTF0] Namespace lookup failure, AE_NOT_FOUND [ 1.488991] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.SAT0.PRT0._SDD] (Node f702b708), AE_NOT_FOUND [ 1.489034] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.SAT0.PRT0._GTF] (Node f702b720), AE_NOT_FOUND [ 1.505441] ACPI Warning: Incorrect checksum in table [TAMG] - 7C, should be 7B (20090903/tbutils-314) [ 1.507734] ACPI Warning: Incorrect checksum in table [TAMG] - 2D, should be 2C (20090903/tbutils-314) [ 1.509153] ACPI Warning: Incorrect checksum in table [TAMG] - C0, should be BF (20090903/tbutils-314) [ 1.512057] ACPI Warning: Incorrect checksum in table [OEMB] - CA, should be C9 (20090903/tbutils-314) [ 1.515657] ACPI Warning: Incorrect checksum in table [TAMG] - 0xC5, should be 0xC4 (20110112/tbutils-314) [ 1.518091] ACPI Warning for _SB_.PCI0.IDE1.PRT0._GTF: Return type mismatch - found Integer, expected Buffer (20090903/nspredef-1006) [ 1.528248] ACPI Warning: Incorrect checksum in table [TAMG] - 0x98, should be 0x97 (20100428/tbutils-314) [ 1.529653] ACPI Warning: Incorrect checksum in table [TAMG] - 0x7C, should be 0x7B (20100428/tbutils-314) [ 1.535278] ACPI Warning: Incorrect checksum in table [TCPA] - 00, should be 88 (20090903/tbutils-314) [ 1.545790] ACPI Warning: Incorrect checksum in table [OEMB] - D0, should be CF (20090903/tbutils-314) [ 1.555599] ACPI Error (psparse-0537): Method parse/execution failed [CPUT] (Node ffff8801b90590c0), AE_NOT_FOUND [ 1.555652] ACPI Error (psparse-0537): Method parse/execution failed [PSSC] (Node ffff8801b90590e0), AE_NOT_FOUND [ 1.555703] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.LPCB.EC0_._REG] (Node ffff8801b903b6e0), AE_NOT_FOUND [ 1.559068] ACPI Warning: Incorrect checksum in table [OEMB] - C5, should be C4 (20090903/tbutils-314) [ 1.570612] ACPI Error: No handler for Region [PCFG] (ffff8801b9074240) [PCI_Config] (20090903/evregion-319) [ 1.570624] ACPI Error (psparse-0537): Method parse/execution failed [J380._STA] (Node ffff8801b916ea40), AE_NOT_EXIST [ 1.586563] ACPI Warning: Incorrect checksum in table [OEMB] - D7, should be D3 (20090903/tbutils-314) [ 1.590337] ACPI Warning: For _TZ_.THRM._PSL: Return Package has no elements (empty) (20110112/nspredef-456) [ 1.601784] ACPI Warning: Incorrect checksum in table [OEMB] - 5D, should be 55 (20090903/tbutils-314) [ 1.605121] ACPI Error: Current brightness invalid (20110112/video-377) [ 1.605465] ACPI Error: [RAMB] Namespace lookup failure, AE_NOT_FOUND (20110112/psargs-359) [ 1.616034] ACPI Error (psparse-0537): Method parse/execution failed [_PR_.CPU0.PPC_] (Node ffff88015334da00), AE_NOT_FOUND [ 1.616243] ACPI Error (psparse-0537): Method parse/execution failed [_PR_.CPU0._PPC] (Node ffff88015334d920), AE_NOT_FOUND [ 1.618281] ACPI Error (psparse-0537): Method parse/execution failed [_PR_.CPU1._PPC] (Node ffff88015334d9e0), AE_NOT_FOUND [ 1.620164] ACPI Error (psparse-0537): Method parse/execution failed [_PR_.CPU2._PPC] (Node ffff88015334dbc0), AE_NOT_FOUND [ 1.621081] ACPI Error (psparse-0537): Method parse/execution failed [_PR_.CPU3._PPC] (Node ffff88015334db40), AE_NOT_FOUND [ 1.648580] ACPI Error: [SMS_] Namespace lookup failure, AE_NOT_FOUND (20110112/psargs-359) [ 1.648589] ACPI Error: Method parse/execution failed [_SB_.PCI0.SATA.PRT0._SDD] (Node f3429e58), AE_NOT_FOUND (20110112/psparse-536) [ 1.662849] ACPI Error (uteval-0250): Method execution failed [J380._STA] (Node ffff8801b916ea40), AE_NOT_EXIST [ 1.678325] ACPI Error: Needed [Buffer/String/Package], found [Integer] ffff88022f7bb5e8 (20110112/exresop-590) [ 1.678342] ACPI Error: Method parse/execution failed [_SB_.PCI0.VGA_._DSM] (Node ffff88022f460190), AE_AML_OPERAND_TYPE (20110112/psparse-536) [ 1.678390] ACPI Error: Needed [Buffer/String/Package], found [Integer] ffff88022f7bb8b8 (20110112/exresop-590) [ 1.678412] ACPI Error: Method parse/execution failed [_SB_.PCI0.P0P1.VGA_._DSM] (Node ffff88022f464230), AE_AML_OPERAND_TYPE (20110112/psparse-536) [ 1.701482] ACPI Error (psparse-0537): Method parse/execution failed [_PR_.PPCE] (Node ffff88022704e960), AE_NOT_FOUND [ 1.701521] ACPI Error (psparse-0537): Method parse/execution failed [EV4_] (Node ffff880227059000), AE_NOT_FOUND [ 1.701557] ACPI Error (psparse-0537): Method parse/execution failed [SMIE] (Node ffff8802270521c0), AE_NOT_FOUND [ 1.701592] ACPI Error (psparse-0537): Method parse/execution failed [NEVT] (Node ffff880227052160), AE_NOT_FOUND [ 1.701628] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.LPCB.ECDV._Q66] (Node ffff880227050d00), AE_NOT_FOUND [ 1.739479] ACPI Warning: Incorrect checksum in table [SSDT] - 0x3F, should be 0x91 (20110112/tbutils-314) [ 1.761428] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.SATA.PRT0._SDD] (Node ffff8800bc234d60), AE_NOT_FOUND [ 1.782803] ACPI Error (psparse-0537): Method parse/execution failed [_PR_.CPU0.PPC_] (Node ffff8801d4d0ac60), AE_NOT_FOUND [ 1.783001] ACPI Error (psparse-0537): Method parse/execution failed [_PR_.CPU0._PPC] (Node ffff8801d4d0ab80), AE_NOT_FOUND [ 1.784831] ACPI Error (psparse-0537): Method parse/execution failed [_PR_.CPU1._PPC] (Node ffff8801d4d0ac40), AE_NOT_FOUND [ 1.786497] ACPI Error (psparse-0537): Method parse/execution failed [_PR_.CPU2._PPC] (Node ffff8801d4d0ae20), AE_NOT_FOUND [ 1.787299] ACPI Error (psparse-0537): Method parse/execution failed [_PR_.CPU3._PPC] (Node ffff8801d4d0ada0), AE_NOT_FOUND [ 1.849787] ACPI Warning for _PR_.CPU3._PSD: Return Package type mismatch at index 4 - found [NULL Object Descriptor], expected Integer [] tick_dev_program_event+0x68/0xd0 [ 1.861558] ACPI Error: [SERN] Namespace lookup failure, AE_ALREADY_EXISTS (20110112/dswload-802) [ 1.861576] ACPI Error: Method parse/execution failed [_SB_.PCI0.LPC_.EC__.GBIF] (Node ffff880232c509b0), AE_ALREADY_EXISTS (20110112/psparse-536) [ 1.861601] ACPI Error: Method parse/execution failed [_SB_.PCI0.LPC_.EC__.BAT1._BIF] (Node ffff880232c50d20), AE_ALREADY_EXISTS (20110112/psparse-536) [ 1.864413] ACPI Error: Method parse/execution failed [_SB_.PCI0.GFX0._DOD] (Node f3025828), AE_AML_PACKAGE_LIMIT (20110413/psparse-536) [ 1.893953] ACPI Error (psparse-0537): Method parse/execution failed [CPUT] (Node ffff8800b3c50000), AE_NOT_FOUND [ 1.894002] ACPI Error (psparse-0537): Method parse/execution failed [PSSC] (Node ffff8800b3c50020), AE_NOT_FOUND [ 1.894047] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.LPCB.EC0_._REG] (Node ffff8800b3c49380), AE_NOT_FOUND [ 1.900224] ACPI Error: [NPSS] Namespace lookup failure, AE_NOT_FOUND (20110112/psargs-359) [ 1.900238] ACPI Error: Method parse/execution failed [_PR_.CPU0.PPC_] (Node ffff88014f9a5140), AE_NOT_FOUND (20110112/psparse-536) [ 1.900254] ACPI Error: Method parse/execution failed [_PR_.CPU0._PPC] (Node ffff88014f9a5028), AE_NOT_FOUND (20110112/psparse-536) [ 1.900769] ACPI Error: Method parse/execution failed [_PR_.CPU1._PPC] (Node ffff88014f9a5118), AE_NOT_FOUND (20110112/psparse-536) [ 1.901001] ACPI Error: Method parse/execution failed [_PR_.CPU2._PPC] (Node ffff88014f9a5370), AE_NOT_FOUND (20110112/psparse-536) [ 1.901211] ACPI Error: Method parse/execution failed [_PR_.CPU3._PPC] (Node ffff88014f9a52d0), AE_NOT_FOUND (20110112/psparse-536) [ 1.905440] ACPI Warning: For _SB_.PCI0.PCIB._PRT: Return Package has no elements (empty) (20110112/nspredef-456) [ 1.907422] ACPI Error: [GTF0] Namespace lookup failure, AE_NOT_FOUND (20110112/psargs-359) [ 1.907427] ACPI Error: Method parse/execution failed [_SB_.PCI0.SAT0.PRT0._SDD] (Node f3431a50), AE_NOT_FOUND (20110112/psparse-536) [ 1.907445] ACPI Error: Method parse/execution failed [_SB_.PCI0.SAT0.PRT0._GTF] (Node f3431a68), AE_NOT_FOUND (20110112/psparse-536) [ 1.911273] ACPI Warning for _SB_.PCI0.P0P1._PRT: Return Package has no elements (empty) (20090903/nspredef-433) [ 1.929855] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.IDE1.GTM_] (Node f7414858), AE_AML_PACKAGE_LIMIT [ 1.929872] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.IDE1.CHN1._GTM] (Node f7414798), AE_AML_PACKAGE_LIMIT [ 1.958776] ACPI Warning for _PR_.CPU0._PSD: [ 1.958968] ACPI Warning for _PR_.CPU1._PSD: Return Package type mismatch at index 4 - found [NULL Object Descriptor], expected Integer (20090903/nspredef-1012) [ 1.959113] ACPI Warning for _PR_.CPU2._PSD: Return Package type mismatch at index 4 - found [NULL Object Descriptor], expected Integer (20090903/nspredef-1012) [ 1.959252] ACPI Warning for _PR_.CPU3._PSD: Return Package type mismatch at index 4 - found [NULL Object Descriptor], expected Integer (20090903/nspredef-1012) [ 1.959427] ACPI Warning for _PR_.CPU4._PSD: Return Package type mismatch at index 4 - found [NULL Object Descriptor], expected Integer (20090903/nspredef-1012) [ 1.959602] ACPI Warning for _PR_.CPU5._PSD: Return Package type mismatch at index 4 - found [NULL Object Descriptor], expected Integer (20090903/nspredef-1012) [ 1.959776] ACPI Warning for _PR_.CPU6._PSD: Return Package type mismatch at index 4 - found [NULL Object Descriptor], expected Integer (20090903/nspredef-1012) [ 1.959951] ACPI Warning for _PR_.CPU7._PSD: Return Package type mismatch at index 4 - found [NULL Object Descriptor], expected Integer (20090903/nspredef-1012) [ 1.962612] ACPI Error (psparse-0537): Method parse/execution failed [_PR_.CPU0.PPC_] (Node ffff8801534e5dc0), AE_NOT_FOUND [ 1.962811] ACPI Error (psparse-0537): Method parse/execution failed [_PR_.CPU0._PPC] (Node ffff8801534e5ce0), AE_NOT_FOUND [ 1.964620] ACPI Error (psparse-0537): Method parse/execution failed [_PR_.CPU1._PPC] (Node ffff8801534e5da0), AE_NOT_FOUND [ 1.966282] ACPI Error (psparse-0537): Method parse/execution failed [_PR_.CPU2._PPC] (Node ffff8801534e5f80), AE_NOT_FOUND [ 1.967081] ACPI Error (psparse-0537): Method parse/execution failed [_PR_.CPU3._PPC] (Node ffff8801534e5f00), AE_NOT_FOUND [ 1.974827] ACPI Error: Method parse/execution failed [_SB_.PCI0.SAT0.PRT0._SDD] (Node f3831a50), AE_NOT_FOUND (20110112/psparse-536) [ 1.974846] ACPI Error: Method parse/execution failed [_SB_.PCI0.SAT0.PRT0._GTF] (Node f3831a68), AE_NOT_FOUND (20110112/psparse-536) [ 2.001829] ACPI Error: Method parse/execution failed [_SB_.PCI0.PATA.GTM_] (Node f5423ba0), AE_AML_PACKAGE_LIMIT (20110112/psparse-536) [ 2.001850] ACPI Error: Method parse/execution failed [_SB_.PCI0.PATA.CHN0._GTM] (Node f54239c0), AE_AML_PACKAGE_LIMIT (20110112/psparse-536) [ 2.002809] ACPI Error: Method parse/execution failed [_SB_.PCI0.PATA.CHN1._GTM] (Node f5423ac8), AE_AML_PACKAGE_LIMIT (20110112/psparse-536) [ 2.006621] ACPI Error (psparse-0537): Method parse/execution failed [CPUT] (Node ffff8801b90570c0), AE_NOT_FOUND [ 2.006671] ACPI Error (psparse-0537): Method parse/execution failed [PSSC] (Node ffff8801b90570e0), AE_NOT_FOUND [ 2.006718] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.LPCB.EC0_._REG] (Node ffff8801b903fa80), AE_NOT_FOUND [ 2.022076] ACPI Error: Could not enable SleepButton event (20110112/evxfevnt-198) [ 2.022090] ACPI Warning: Could not enable fixed event 0x3 (20110112/evxface-197) [ 2.033653] ACPI Error: Method parse/execution failed [_SB_.PCI0.SAT0.PRT0._SDD] (Node f6031468), AE_NOT_FOUND (20110112/psparse-536) [ 2.033670] ACPI Error: Method parse/execution failed [_SB_.PCI0.SAT0.PRT0._GTF] (Node f6031480), AE_NOT_FOUND (20110112/psparse-536) [ 2.039517] [Firmware Bug]: ACPI: Invalid BIOS _PSS frequency: 0x80000000 MHz [ 2.045931] ACPI Warning for _SB_.PCI0.P0P1._PRT: Return Package has no elements (empty) (20100428/nspredef-456) [ 2.049441] ACPI Warning for _PR_.CPU0._PSD: Return Package type mismatch at index 4 - found [NULL Object Descriptor], expected Integer (20090903/nspredef-1012) [ 2.068617] ACPI Error: Method parse/execution failed [_SB_.PCI0.SATA.PRT0._SDD] (Node f3c29e58), AE_NOT_FOUND (20110112/psparse-536) [ 2.081502] ACPI Error (psargs-0359): [NPSS] Namespace lookup failure, AE_NOT_FOUND [ 2.081508] ACPI Error (psparse-0537): Method parse/execution failed [_PR_.CPU0.PPC_] (Node ffff8801534e5c20), AE_NOT_FOUND [ 2.081585] ACPI Error (psparse-0537): Method parse/execution failed [_PR_.CPU0._PPC] (Node ffff8801534e5b40), AE_NOT_FOUND [ 2.083171] ACPI Error (psparse-0537): Method parse/execution failed [_PR_.CPU1._PPC] (Node ffff8801534e5c00), AE_NOT_FOUND [ 2.084838] ACPI Error (psparse-0537): Method parse/execution failed [_PR_.CPU2._PPC] (Node ffff8801534e5de0), AE_NOT_FOUND [ 2.085644] ACPI Error (psparse-0537): Method parse/execution failed [_PR_.CPU3._PPC] (Node ffff8801534e5d60), AE_NOT_FOUND [ 2.106307] ACPI Error: Method parse/execution failed [_SB_.PCI0.SAT0.PRT0._SDD] (Node ffff88023f45dca8), AE_NOT_FOUND (20110112/psparse-536) [ 2.106326] ACPI Error: Method parse/execution failed [_SB_.PCI0.SAT0.PRT0._GTF] (Node ffff88023f45dcd0), AE_NOT_FOUND (20110112/psparse-536) [ 2.113330] ACPI Error: Method parse/execution failed [_SB_.PCI0.SAT0.PRT0._SDD] (Node f74317b0), AE_NOT_FOUND (20110112/psparse-536) [ 2.113367] ACPI Error: Method parse/execution failed [_SB_.PCI0.SAT0.PRT0._GTF] (Node f74317c8), AE_NOT_FOUND (20110112/psparse-536) [ 2.132386] ACPI Error: Could not enable SleepButton event (20090903/evxfevnt-193) [ 2.132392] ACPI Warning: Could not enable fixed event 3 (20090903/evxface-146) [ 2.149905] ACPI Error: Method parse/execution failed [_SB_.C003.C099._DOD] (Node f30275a0), AE_AML_PACKAGE_LIMIT (20110112/psparse-536) [ 2.173036] ACPI Warning for _SB_._OSC: Return type mismatch - found Integer, expected Buffer (20090903/nspredef-1006) [ 2.173935] ACPI Warning: Incorrect checksum in table [OEMB] - C3, should be C2 (20090903/tbutils-314) [ 2.200371] ACPI Error: Method parse/execution failed [_SB_.EEAC] (Node f602bf30), AE_ALREADY_EXISTS (20110112/psparse-536) [ 2.200380] ACPI Error: Method parse/execution failed [_SB_.BAT2._STA] (Node f602d2d0), AE_ALREADY_EXISTS (20110112/psparse-536) [ 2.206433] ACPI Error: Method parse/execution failed [_SB_.EEAC] (Node f742d018), AE_ALREADY_EXISTS (20110112/psparse-536) [ 2.206443] ACPI Error: Method parse/execution failed [_SB_.BAT2._STA] (Node f742d3a8), AE_ALREADY_EXISTS (20110112/psparse-536) [ 2.222353] ACPI Error: [EABF] Namespace lookup failure, AE_ALREADY_EXISTS (20110112/dswload-802) [ 2.222362] ACPI Error: Method parse/execution failed [_SB_.EEAC] (Node f602d018), AE_ALREADY_EXISTS (20110112/psparse-536) [ 2.222372] ACPI Error: Method parse/execution failed [_SB_.BAT2._STA] (Node f602d3a8), AE_ALREADY_EXISTS (20110112/psparse-536) [ 2.227407] ACPI Error (psargs-0359): [GTF1] Namespace lookup failure, AE_NOT_FOUND [ 2.227411] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.SAT0.PRT1._SDD] (Node f702b7b0), AE_NOT_FOUND [ 2.227454] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.SAT0.PRT1._GTF] (Node f702b7c8), AE_NOT_FOUND [ 2.229498] ACPI Warning: Incorrect checksum in table [TAMG] - 0xC6, should be 0xC5 (20100428/tbutils-314) [ 2.231431] ACPI Error: Method parse/execution failed [_SB_.EEAC] (Node f602bf60), AE_ALREADY_EXISTS (20110112/psparse-536) [ 2.231442] ACPI Error: Method parse/execution failed [_SB_.BAT2._STA] (Node f602d300), AE_ALREADY_EXISTS (20110112/psparse-536) [ 2.250291] ACPI Error: Method parse/execution failed [_SB_.BAT1.UBIF] (Node ffff88013762f550), AE_ALREADY_EXISTS (20110112/psparse-536) [ 2.250306] ACPI Error: Method parse/execution failed [_SB_.BAT1._BIF] (Node ffff88013762f500), AE_ALREADY_EXISTS (20110112/psparse-536) [ 2.270835] ACPI Error: Method parse/execution failed [_SB_.PCI0._OSC] (Node ffff880125e2c708), AE_ALREADY_EXISTS (20110112/psparse-536) [ 2.280398] ACPI Error (dswload-0781): [_T_0] Namespace lookup failure, AE_ALREADY_EXISTS [ 2.280410] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.BAT1.UBIF] (Node ffff8800b3c2e100), AE_ALREADY_EXISTS [ 2.280443] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.BAT1._BIF] (Node ffff8800b3c2e0c0), AE_ALREADY_EXISTS [ 2.283579] ACPI Error (psargs-0359): [_T_0] Namespace lookup failure, AE_NOT_FOUND [ 2.283585] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.BAT1.UBIF] (Node ffff8800b3c2e100), AE_NOT_FOUND [ 2.283615] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.LPCB.EC0_._Q09] (Node ffff8800b3c410e0), AE_NOT_FOUND [ 2.288649] ACPI Error: Method parse/execution failed [_SB_.PCI0.SAT0.PRT0._SDD] (Node ffff88023f45dcd0), AE_NOT_FOUND (20110112/psparse-536) [ 2.288685] ACPI Error: Method parse/execution failed [_SB_.PCI0.SAT0.PRT0._GTF] (Node ffff88023f45dcf8), AE_NOT_FOUND (20110112/psparse-536) [ 2.294251] ACPI Error: Method parse/execution failed [_SB_.EEAC] (Node f742bf30), AE_ALREADY_EXISTS (20110112/psparse-536) [ 2.294262] ACPI Error: Method parse/execution failed [_SB_.BAT2._STA] (Node f742d2d0), AE_ALREADY_EXISTS (20110112/psparse-536) [ 2.324547] ACPI Error: [EABF] Namespace lookup failure, AE_ALREADY_EXISTS (20110413/dswload2-316) [ 2.324556] ACPI Error: Method parse/execution failed [_SB_.EEAC] (Node f742d018), AE_ALREADY_EXISTS (20110413/psparse-536) [ 2.324566] ACPI Error: Method parse/execution failed [_SB_.BAT2._STA] (Node f742d3a8), AE_ALREADY_EXISTS (20110413/psparse-536) [ 2.334361] ACPI Error: Attempt to CreateField of length zero (20110112/dsopcode-529) [ 2.334370] ACPI Error: Method parse/execution failed [_SB_.PCI0.IDE0.RATA] (Node ffff8801376322a8), AE_AML_OPERAND_VALUE (20110112/psparse-536) [ 2.334384] ACPI Error: Method parse/execution failed [_SB_.PCI0.IDE0.PRT1._GTF] (Node ffff880137632438), AE_AML_OPERAND_VALUE (20110112/psparse-536) [ 2.336604] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.GFX0._DOD] (Node ffff88013b63c460), AE_AML_PACKAGE_LIMIT [ 2.384172] ACPI Error: Method parse/execution failed [_SB_.PCI0.SAT0.PRT0._SDD] (Node ffff8801c305dcd0), AE_NOT_FOUND (20110112/psparse-536) [ 2.384189] ACPI Error: Method parse/execution failed [_SB_.PCI0.SAT0.PRT0._GTF] (Node ffff8801c305dcf8), AE_NOT_FOUND (20110112/psparse-536) [ 2.440684] ACPI Error (psargs-0359): [SMS_] Namespace lookup failure, AE_NOT_FOUND [ 2.440692] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.SATA.PRT0._SDD] (Node ffff88007db30c60), AE_NOT_FOUND [ 2.462687] ACPI Error: Method parse/execution failed [_SB_.PCI0.SAT0.PRT0._SDD] (Node ffff880147646cd0), AE_NOT_FOUND (20110112/psparse-536) [ 2.462711] ACPI Error: Method parse/execution failed [_SB_.PCI0.SAT0.PRT0._GTF] (Node ffff880147646cf8), AE_NOT_FOUND (20110112/psparse-536) [ 2.468708] ACPI Error (psparse-0537): Method parse/execution failed [_PR_.CPU1._PDC] (Node f700f180), AE_INVALID_TABLE_LENGTH [ 2.468963] ACPI Error (psparse-0537): Method parse/execution failed [_PR_.CPU2._PDC] (Node f700f240), AE_INVALID_TABLE_LENGTH [ 2.478380] [Firmware Bug]: ACPI(NGFX) defines _DOD but not _DOS [ 2.592359] ACPI Error: Method parse/execution failed [_PR_.CPU0.PPC_] (Node ffff88014f9a4140), AE_NOT_FOUND (20110112/psparse-536) [ 2.592381] ACPI Error: Method parse/execution failed [_PR_.CPU0._PPC] (Node ffff88014f9a4028), AE_NOT_FOUND (20110112/psparse-536) [ 2.593071] ACPI Error: Method parse/execution failed [_PR_.CPU1._PPC] (Node ffff88014f9a4118), AE_NOT_FOUND (20110112/psparse-536) [ 2.593648] ACPI Error: Method parse/execution failed [_PR_.CPU2._PPC] (Node ffff88014f9a4370), AE_NOT_FOUND (20110112/psparse-536) [ 2.593935] ACPI Error: Method parse/execution failed [_PR_.CPU3._PPC] (Node ffff88014f9a42d0), AE_NOT_FOUND (20110112/psparse-536) [ 2.634350] ACPI Error: [GTF1] Namespace lookup failure, AE_NOT_FOUND (20110112/psargs-359) [ 2.634355] ACPI Error: Method parse/execution failed [_SB_.PCI0.SAT0.PRT1._SDD] (Node f3431af8), AE_NOT_FOUND (20110112/psparse-536) [ 2.634373] ACPI Error: Method parse/execution failed [_SB_.PCI0.SAT0.PRT1._GTF] (Node f3431b10), AE_NOT_FOUND (20110112/psparse-536) [ 2.671117] ACPI Error: Method parse/execution failed [_SB_.EEAC] (Node f2c2d018), AE_ALREADY_EXISTS (20110112/psparse-536) [ 2.671128] ACPI Error: Method parse/execution failed [_SB_.BAT2._STA] (Node f2c2d3a8), AE_ALREADY_EXISTS (20110112/psparse-536) [ 2.701908] ACPI Error: Method parse/execution failed [_SB_.PCI0.SAT0.PRT1._SDD] (Node f3831af8), AE_NOT_FOUND (20110112/psparse-536) [ 2.701933] ACPI Error: Method parse/execution failed [_SB_.PCI0.SAT0.PRT1._GTF] (Node f3831b10), AE_NOT_FOUND (20110112/psparse-536) [ 2.771747] ACPI Error: Method parse/execution failed [_SB_.EEAC] (Node f402bf60), AE_ALREADY_EXISTS (20110112/psparse-536) [ 2.771758] ACPI Error: Method parse/execution failed [_SB_.BAT2._STA] (Node f402d300), AE_ALREADY_EXISTS (20110112/psparse-536) [ 2.787172] ACPI Warning: For _SB_.PCI0.P0P1._PRT: Return Package has no elements (empty) (20110112/nspredef-456) [ 2.823916] ACPI Warning: _BQC returned an invalid level 20090521 video-629 [ 2.837958] ACPI Error: Method parse/execution failed [_SB_.PCI0.SAT0.PRT1._SDD] (Node f7431858), AE_NOT_FOUND (20110112/psparse-536) [ 2.837994] ACPI Error: Method parse/execution failed [_SB_.PCI0.SAT0.PRT1._GTF] (Node f7431870), AE_NOT_FOUND (20110112/psparse-536) [ 2.838171] ACPI Warning for _SB_.BAT0._BIF: Return Package type mismatch at index 9 - found [NULL Object Descriptor], expected String/Buffer (20090903/nspredef-1012) [ 2.851027] ACPI Warning: _BQC returned an invalid level (20110316/video-473) [ 2.860339] ACPI Error: Method parse/execution failed [_SB_.C003.C098._DOD] (Node f4427588), AE_AML_PACKAGE_LIMIT (20110413/psparse-536) [ 2.861808] ACPI Error: [_SB_.PCI0.GFX0.DD02._BCL] Namespace lookup failure, AE_NOT_FOUND (20110112/psargs-359) [ 2.861812] ACPI Error: Method parse/execution failed [_SB_.PCI0.PEG0.PEGP.DD02._BCL] (Node ffff88015746e168), AE_NOT_FOUND (20110112/psparse-536) [ 2.870589] ACPI Error: Method parse/execution failed [_SB_.PCI0.GFX0._DOD] (Node ffff880137632c80), AE_AML_PACKAGE_LIMIT (20110112/psparse-536) [ 2.906610] ACPI Warning: For _SB_.PCI0.P0P2.PEGP._DOD: Return type mismatch - found Integer, expected Package (20110413/nspredef-1053) [ 2.949708] ACPI Error: Field [CDW3] at 96 exceeds Buffer [NULL] size 64 (bits) (20110112/dsopcode-597) [ 2.949716] ACPI Error: Method parse/execution failed [_SB_._OSC] (Node ffff880297016ca8), AE_AML_BUFFER_LIMIT (20110112/psparse-536) [ 3.005123] ACPI Error (psparse-0537): Method parse/execution failed [_SB_._OSC] (Node ffff88122fc1ea00), AE_NOT_FOUND [ 3.033154] ACPI Warning: Incorrect checksum in table [OEMB] - 0x87, should be 0x84 (20100428/tbutils-314) [ 3.112435] ACPI Error (psparse-0537): Method parse/execution failed [_PR_.PPCE] (Node f74257c8), AE_NOT_FOUND [ 3.112465] ACPI Error (psparse-0537): Method parse/execution failed [EV4_] (Node f742c210), AE_NOT_FOUND [ 3.112494] ACPI Error (psparse-0537): Method parse/execution failed [SMIE] (Node f7427a20), AE_NOT_FOUND [ 3.112522] ACPI Error (psparse-0537): Method parse/execution failed [NEVT] (Node f74279d8), AE_NOT_FOUND [ 3.112549] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.LPCB.ECDV._Q66] (Node f7427690), AE_NOT_FOUND [ 3.139648] [Firmware Bug]: ACPI(XVS0) defines _DOD but not _DOS [ 3.208822] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.C003.C098._DOD] (Node ffff88007cf30b60), AE_AML_PACKAGE_LIMIT [ 3.223518] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.GFX0._DOD] (Node ffff880236c469a0), AE_AML_PACKAGE_LIMIT [ 3.382436] ACPI Warning: Incorrect checksum in table [TCPA] - 00, should be 7F (20090903/tbutils-314) [ 3.382442] ACPI Warning: Incorrect checksum in table [_RAT] - 00, should be 63 (20090903/tbutils-314) [ 3.420672] ACPI Warning for _TZ_.THRM._PSL: Return Package type mismatch at index 0 - found Processor, expected Reference (20100428/nspredef-1059) [ 3.480092] ACPI Warning for _SB_.PCI0.SAT0.PRT0._GTF: Return type mismatch - found Integer, expected Buffer (20090903/nspredef-1006) [ 3.490098] ACPI Warning for _SB_.PCI0.SAT0.PRT1._GTF: Return type mismatch - found Integer, expected Buffer (20090903/nspredef-1006) [ 3.490832] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PMI0._GHL] (Node ffff88013bc2bdc0), AE_AML_BUFFER_LIMIT [ 3.490852] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PMI0._PMC] (Node ffff88013bc2bd40), AE_AML_BUFFER_LIMIT [ 3.502273] ACPI Error: Could not enable SleepButton event (20100428/evxfevnt-205) [ 3.601126] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.GFX0._DOD] (Node f7420690), AE_AML_PACKAGE_LIMIT [ 3.644168] ACPI Warning: Incorrect checksum in table [TCPA] - 0xF8, should be 0x9C (20110413/tbutils-314) [ 3.663829] [Firmware Bug]: ACPI(GFX0) defines _DOD but not _DOS [ 3.675814] ACPI Error: Evaluating _BCM failed (20100428/video-532) [ 3.868794] ACPI Error: Method parse/execution failed [_SB_.PCI0.SAT0.PRT0._SDD] (Node f3831b58), AE_NOT_FOUND (20110112/psparse-536) [ 3.868812] ACPI Error: Method parse/execution failed [_SB_.PCI0.SAT0.PRT0._GTF] (Node f3831b70), AE_NOT_FOUND (20110112/psparse-536) [ 3.983031] ACPI Error: Method parse/execution failed [_SB_.EEAC] (Node ffff88021d459028), AE_ALREADY_EXISTS (20110112/psparse-536) [ 3.983040] ACPI Error: Method parse/execution failed [_SB_.BAT2._STA] (Node ffff88021d459618), AE_ALREADY_EXISTS (20110112/psparse-536) [ 4.002664] [Firmware Bug]: ACPI(EVGA) defines _DOD but not _DOS [ 4.046031] ACPI Warning: Incorrect checksum in table [OEMB] - 4A, should be 47 (20090903/tbutils-314) [ 4.115197] ACPI Error: Method parse/execution failed [_SB_.EEAC] (Node ffff88021d458eb0), AE_ALREADY_EXISTS (20110112/psparse-536) [ 4.115206] ACPI Error: Method parse/execution failed [_SB_.BAT2._STA] (Node ffff88021d4594b0), AE_ALREADY_EXISTS (20110112/psparse-536) [ 4.190434] ACPI Error: Method parse/execution failed [_SB_.PCI0.GFX0._DOD] (Node ffff8801376342f8), AE_AML_PACKAGE_LIMIT (20110112/psparse-536) [ 4.198699] ACPI Error: Method parse/execution failed [_SB_.PCI0.SAT0.PRT1._SDD] (Node f3831c00), AE_NOT_FOUND (20110112/psparse-536) [ 4.198716] ACPI Error: Method parse/execution failed [_SB_.PCI0.SAT0.PRT1._GTF] (Node f3831c18), AE_NOT_FOUND (20110112/psparse-536) [ 4.230508] ACPI Exception: AE_TIME, Returned by Handler for [EmbeddedControl] (20090903/evregion-424) [ 4.230527] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.ISAB.ECDV.ECR1] (Node f7018ed0), AE_TIME [ 4.230612] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.ISAB.ECDV.ECR2] (Node f7018ee8), AE_TIME [ 4.230643] ACPI Error (psparse-0537): Method parse/execution failed [ECRW] (Node f7018fa8), AE_TIME [ 4.230672] ACPI Error (psparse-0537): Method parse/execution failed [ECG1] (Node f7018fd8), AE_TIME [ 4.230701] ACPI Error (psparse-0537): Method parse/execution failed [NEVT] (Node f70186f0), AE_TIME [ 4.230730] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.ISAB.ECDV._Q66] (Node f7018eb8), AE_TIME [ 4.576415] ACPI Error: No handler for Region [ERAM] (f4830d50) [EmbeddedControl] (20110112/evregion-369) [ 4.576437] ACPI Error: Method parse/execution failed [_SB_.PCI0.SBRG.EC0_._REG] (Node f48326d8), AE_NOT_EXIST (20110112/psparse-536) [ 4.638115] ACPI Error: Method parse/execution failed [_SB_.EEAC] (Node ffff880220c5b028), AE_ALREADY_EXISTS (20110413/psparse-536) [ 4.638127] ACPI Error: Method parse/execution failed [_SB_.BAT2._STA] (Node ffff880220c5b618), AE_ALREADY_EXISTS (20110413/psparse-536) [ 4.838935] ACPI Error (psparse-0537): Method parse/execution failed [_TZ_.C2E8] (Node f701b108), AE_AML_PACKAGE_LIMIT [ 4.838984] ACPI Error (psparse-0537): Method parse/execution failed [_TZ_.C2E7] (Node f701b0f0), AE_AML_PACKAGE_LIMIT [ 4.839033] ACPI Error (psparse-0537): Method parse/execution failed [_TZ_.TZ2_._TMP] (Node f701b7c8), AE_AML_PACKAGE_LIMIT [ 4.890970] ACPI Error: Method parse/execution failed [_SB_.EEAC] (Node ffff880126e43f50), AE_ALREADY_EXISTS (20110413/psparse-536) [ 4.890980] ACPI Error: Method parse/execution failed [_SB_.BAT2._STA] (Node ffff880126e44550), AE_ALREADY_EXISTS (20110413/psparse-536) [ 4.983204] [Firmware Bug]: ACPI(MXM3) defines _DOD but not _DOS [ 5.150560] ACPI Warning for _SB_.BAT0._BIF: Return Package type mismatch at index 12 - found Integer, expected String/Buffer (20090903/nspredef-1012) [ 5.332663] ACPI Error: Method parse/execution failed [_SB_.PCI0.GFX0._DOD] (Node f4425450), AE_AML_PACKAGE_LIMIT (20110112/psparse-536) [ 6.224974] ACPI Error: Method parse/execution failed [_SB_.PCI0.PEGP.VGA_.LCD_.GBQC] (Node f3423438), AE_ALREADY_EXISTS (20110112/psparse-536) [ 6.224987] ACPI Error: Method parse/execution failed [_SB_.PCI0.PEGP.VGA_.LCD_._BQC] (Node f3423420), AE_ALREADY_EXISTS (20110112/psparse-536) [ 6.227917] ACPI Error: Method parse/execution failed [_SB_.PCI0.PEGP.VGA_.LCD1.GBQC] (Node f34235b8), AE_ALREADY_EXISTS (20110112/psparse-536) [ 6.227930] ACPI Error: Method parse/execution failed [_SB_.PCI0.PEGP.VGA_.LCD1._BQC] (Node f34235a0), AE_ALREADY_EXISTS (20110112/psparse-536) [ 6.732287] ACPI Error: [_T_0] Namespace lookup failure, AE_ALREADY_EXISTS (20110112/dswload-802) [ 6.732310] ACPI Error: Method parse/execution failed [_SB_.BAT1.UBIF] (Node dd028fc0), AE_ALREADY_EXISTS (20110112/psparse-536) [ 6.732334] ACPI Error: Method parse/execution failed [_SB_.BAT1._BIF] (Node dd028f90), AE_ALREADY_EXISTS (20110112/psparse-536) [ 6.773266] ACPI Error: [CAPB] Namespace lookup failure, AE_ALREADY_EXISTS (20101013/dsfield-143) [ 6.773285] ACPI Error: Method parse/execution failed [_SB_.PCI0._OSC] (Node ddc25ca8), AE_ALREADY_EXISTS (20101013/psparse-537) [ 7.365139] ACPI Error: No handler for Region [IPMI] (ffff8805ffa37240) [IPMI] (20110112/evregion-369) [ 7.365150] ACPI Error: Region IPMI(0x7) has no handler (20110112/exfldio-292) [ 7.365161] ACPI Error: Method parse/execution failed [_SB_.PMI0._GHL] (Node ffff8805ffa36b18), AE_NOT_EXIST (20110112/psparse-536) [ 7.365181] ACPI Error: Method parse/execution failed [_SB_.PMI0._PMC] (Node ffff8805ffa36a78), AE_NOT_EXIST (20110112/psparse-536) [ 8.137284] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.LPCB.ECDV.ECR1] (Node f702e720), AE_TIME [ 8.137317] ACPI Error (psparse-0537): Method parse/execution failed [ECRB] (Node f702e7f8), AE_TIME [ 8.137344] ACPI Error (psparse-0537): Method parse/execution failed [EC0A] (Node f702ea08), AE_TIME [ 8.137370] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.AMW0._WED] (Node f7019ca8), AE_TIME [ 8.227953] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.C003.C098._DOD] (Node f7021588), AE_AML_PACKAGE_LIMIT [ 8.316300] [Firmware Bug]: ACPI(VGA0) defines _DOD but not _DOS [ 8.794633] ACPI Error: Method parse/execution failed [_SB_.PCI0._OSC] (Node f5824ab0), AE_ALREADY_EXISTS (20110112/psparse-536) [ 9.141980] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.LPCB.ECDV.ECR1] (Node f702e690), AE_TIME [ 9.142017] ACPI Error (psparse-0537): Method parse/execution failed [ECRB] (Node f702e768), AE_TIME [ 9.142046] ACPI Error (psparse-0537): Method parse/execution failed [EC0A] (Node f702e978), AE_TIME [ 9.142076] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.AMW0._WED] (Node f7019420), AE_TIME [ 9.267040] ACPI Warning for _SB_.SPM_._PMD: Return Package type mismatch at index 0 - found String, expected Reference (20090903/nspredef-1012) [ 9.391036] ACPI Error: Method parse/execution failed [_SB_.PCI0.IBCM] (Node f3828738), AE_AML_BUFFER_LIMIT (20110112/psparse-536) [ 9.391049] ACPI Error: Method parse/execution failed [_SB_.PCI0.GFX0.DD03._BCM] (Node f3824b28), AE_AML_BUFFER_LIMIT (20110112/psparse-536) [ 9.391061] ACPI Error: Evaluating _BCM failed (20110112/video-365) [ 9.393479] ACPI Error: Needed [Buffer/String/Package], found [Integer] ffff88012d8cfee8 (20110112/exresop-590) [ 9.393498] ACPI Error: Method parse/execution failed [_SB_.PCI0.GFX0.DD02.GBQC] (Node ffff88012f83e6b8), AE_AML_OPERAND_TYPE (20110112/psparse-536) [ 9.393510] ACPI Error: Method parse/execution failed [_SB_.PCI0.GFX0.DD02._BQC] (Node ffff88012f83e690), AE_AML_OPERAND_TYPE (20110112/psparse-536) [ 9.394098] ACPI Error: Needed [Buffer/String/Package], found [Integer] ffff88012d8cfd38 (20110112/exresop-590) [ 9.394109] ACPI Error: Method parse/execution failed [_SB_.PCI0.GFX0.DD02.SBCM] (Node ffff88012f83e6e0), AE_AML_OPERAND_TYPE (20110112/psparse-536) [ 9.394118] ACPI Error: Method parse/execution failed [_SB_.PCI0.GFX0.DD02._BCM] (Node ffff88012f83e668), AE_AML_OPERAND_TYPE (20110112/psparse-536) [ 9.957372] ACPI Error: Method parse/execution failed [_SB_.PCI0.SAT1.CHN0._GTM] (Node ffff88007af33780), AE_NOT_FOUND (20110112/psparse-536) [ 9.957372] ACPI Error: Method parse/execution failed [_SB_.PCI0.SAT1.CHN1._GTM] (Node ffff88007af33910), AE_NOT_FOUND (20110112/psparse-536) [ 9.957372] ACPI Error: Method parse/execution failed [_SB_.PCI0.SATA.CHN0._GTM] (Node ffff88007af32b68), AE_NOT_FOUND (20110112/psparse-536) [ 9.957372] ACPI Error: Method parse/execution failed [_SB_.PCI0.SATA.CHN1._GTM] (Node ffff88007af32cf8), AE_NOT_FOUND (20110112/psparse-536) [ 10.080352] [Firmware Bug]: ACPI(VGA) defines _DOD but not _DOS [ 10.120967] ACPI Error: Needed [Buffer/String/Package], found [Integer] ffff88023bcba438 (20110112/exresop-590) [ 10.120977] ACPI Error: Method parse/execution failed [_SB_.PCI0.GFX0._DSM] (Node ffff88023f45edc0), AE_AML_OPERAND_TYPE (20110112/psparse-536) [ 10.121007] ACPI Error: Needed [Buffer/String/Package], found [Integer] ffff88023bcba1b0 (20110112/exresop-590) [ 10.121018] ACPI Error: Method parse/execution failed [_SB_.PCI0.PEG0.GFX0._DSM] (Node ffff88023f474370), AE_AML_OPERAND_TYPE (20110112/psparse-536) [ 10.194089] ACPI Warning for _SB_.PCI0.PCIB._PRT: Return Package has no elements (empty) (20100428/nspredef-456) [ 10.289821] ACPI Error (psargs-0359): [_PR_.CPU0._CST] Namespace lookup failure, AE_NOT_FOUND [ 10.289828] ACPI Error (psparse-0537): Method parse/execution failed [_PR_.CPU1._CST] (Node f70c3288), AE_NOT_FOUND [ 10.344782] ACPI Error: SMBus or IPMI write requires Buffer of length 42, found length 20 (20090903/exfield-286) [ 10.344788] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PMI0._GHL] (Node ffff88122fc1ece0), AE_AML_BUFFER_LIMIT [ 10.344812] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PMI0._PMC] (Node ffff88122fc1ec60), AE_AML_BUFFER_LIMIT [ 10.380244] ACPI Warning (nspredef-0357): _SB_.PCI0.VID2._DOD: Return Package has no elements (empty) [20080926] [ 10.680422] ACPI Error: Method parse/execution failed [_SB_.PCI0.GFX0.DD02._BCM] (Node ffff880117642ed8), AE_AML_INFINITE_LOOP (20110112/psparse-536) [ 10.692650] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.LPCB.ECDV.ECR2] (Node f702e738), AE_TIME [ 10.692684] ACPI Error (psparse-0537): Method parse/execution failed [ECRW] (Node f702e810), AE_TIME [ 10.692710] ACPI Error (psparse-0537): Method parse/execution failed [ECG1] (Node f702e840), AE_TIME [ 10.692735] ACPI Error (psparse-0537): Method parse/execution failed [NEVT] (Node f702ea50), AE_TIME [ 10.692761] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.LPCB.ECDV._Q66] (Node f702e708), AE_TIME [ 10.708822] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.LPCB.ECDV.ECR1] (Node f7427738), AE_TIME [ 10.708876] ACPI Error (psparse-0537): Method parse/execution failed [ECRB] (Node f7427810), AE_TIME [ 10.708908] ACPI Error (psparse-0537): Method parse/execution failed [EC0A] (Node f7427a20), AE_TIME [ 10.708939] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.AMW0._WED] (Node f742c078), AE_TIME [ 10.724353] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.LPCB.ECDV.ECR1] (Node ffff880213050d00), AE_TIME [ 10.724416] ACPI Error (psparse-0537): Method parse/execution failed [ECRB] (Node ffff880213050e20), AE_TIME [ 10.724449] ACPI Error (psparse-0537): Method parse/execution failed [EC0A] (Node ffff8802130520e0), AE_TIME [ 10.724482] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.AMW0._WED] (Node ffff8802130573c0), AE_TIME [ 11.195653] ACPI Error (psparse-0537): Method parse/execution failed [ECG5] (Node f702e8a0), AE_TIME [ 11.195680] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.AC__._PSR] (Node f702ec90), AE_TIME [ 11.383565] ACPI Error: Method parse/execution failed [_SB_.C003.C098._DOD] (Node ffff880137636938), AE_AML_PACKAGE_LIMIT (20110112/psparse-536) [ 11.660551] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.LPCB.ECDV.ECR2] (Node f702e6a8), AE_TIME [ 11.660591] ACPI Error (psparse-0537): Method parse/execution failed [ECRW] (Node f702e780), AE_TIME [ 11.660615] ACPI Error (psparse-0537): Method parse/execution failed [ECG1] (Node f702e7b0), AE_TIME [ 11.660638] ACPI Error (psparse-0537): Method parse/execution failed [NEVT] (Node f702e9c0), AE_TIME [ 11.660661] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.LPCB.ECDV._Q66] (Node f702e678), AE_TIME [ 11.800514] ACPI Error: Method parse/execution failed [_SB_.PCI0.GFX0._DOD] (Node ffff8801376342a8), AE_AML_PACKAGE_LIMIT (20110112/psparse-536) [ 11.880473] ACPI Error: Needed [Buffer/String/Package], found [Integer] ffff88012125f558 (20110413/exresop-590) [ 11.880998] ACPI Error: Needed [Buffer/String/Package], found [Integer] ffff88012125f3a8 (20110413/exresop-590) [ 11.915871] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.SWFS] (Node ffff880226c49320), AE_AML_INFINITE_LOOP [ 11.915905] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.RBYT] (Node ffff880226c493c0), AE_AML_INFINITE_LOOP [ 11.915932] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.ASOC.SECV] (Node ffff880226c4a0e0), AE_AML_INFINITE_LOOP [ 11.915960] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.ASOC.RVLT] (Node ffff880226c49b00), AE_AML_INFINITE_LOOP [ 12.160904] ACPI Error (psparse-0537): Method parse/execution failed [ECG5] (Node f702e810), AE_TIME [ 12.160929] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.AC__._PSR] (Node f702ec00), AE_TIME [ 12.167076] ACPI Error: Needed [Buffer/String/Package], found [Integer] ffff8800b1753048 (20090903/exresop-590) [ 12.167089] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.GFX0.DD02.GBQC] (Node ffff8800b3c44ca0), AE_AML_OPERAND_TYPE [ 12.167143] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.GFX0.DD02._BQC] (Node ffff8800b3c44c80), AE_AML_OPERAND_TYPE [ 12.167205] ACPI Warning: Evaluating _BQC failed (20090903/video-641) [ 12.242368] ACPI Error: Needed [Buffer/String/Package], found [Integer] ffff88012ea6e6c0 (20110413/exresop-590) [ 12.242387] ACPI Error: Method parse/execution failed [_SB_.PCI0.GFX0.DD02.GBQC] (Node ffff88013113f6b8), AE_AML_OPERAND_TYPE (20110413/psparse-536) [ 12.242397] ACPI Error: Method parse/execution failed [_SB_.PCI0.GFX0.DD02._BQC] (Node ffff88013113f690), AE_AML_OPERAND_TYPE (20110413/psparse-536) [ 12.242409] ACPI Warning: Evaluating _BQC failed (20110413/video-484) [ 12.242974] ACPI Error: Needed [Buffer/String/Package], found [Integer] ffff88012ea6e5e8 (20110413/exresop-590) [ 12.242986] ACPI Error: Method parse/execution failed [_SB_.PCI0.GFX0.DD02.SBCM] (Node ffff88013113f6e0), AE_AML_OPERAND_TYPE (20110413/psparse-536) [ 12.242994] ACPI Error: Method parse/execution failed [_SB_.PCI0.GFX0.DD02._BCM] (Node ffff88013113f668), AE_AML_OPERAND_TYPE (20110413/psparse-536) [ 12.243002] ACPI Error: Evaluating _BCM failed (20110413/video-365) [ 12.361137] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.C003.C09D._DOD] (Node ffff88013b630c00), AE_AML_PACKAGE_LIMIT [ 12.390421] ACPI Error (psparse-0537): Method parse/execution failed [ECG5] (Node ffff880213050f00), AE_TIME [ 12.390446] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.AC__._PSR] (Node ffff880213052440), AE_TIME [ 12.553637] ACPI Warning: For _SB_.PCI0.P0P2.PEGP._DOD: Return type mismatch - found Integer, expected Package (20110112/nspredef-1053) [ 12.838979] cfg80211: Ignoring regulatory request Set by core since the driver uses its own custom regulatory domain ACPI Exception: AE_TIME, Returned by Handler for [EmbeddedControl] (20110112/evregion-474) [ 12.841008] cfg80211: Ignoring regulatory request Set by core since the driver uses its own custom regulatory domain ACPI Warning: _BQC returned an invalid level (20110112/video-473) [ 13.024512] ACPI Error: Method parse/execution failed [_SB_.PCI0.GFX0._DOD] (Node f7425450), AE_AML_PACKAGE_LIMIT (20110112/psparse-536) [ 13.396787] ACPI Error: Method parse/execution failed [_SB_.ADP1._PSR] (Node ffff88011763ba00), AE_TIME (20110112/psparse-536) [ 13.445954] ACPI Error: Field [D128] at 1040 exceeds Buffer [NULL] size 160 (bits) (20110112/dsopcode-597) [ 13.445980] ACPI Error: Method parse/execution failed [_SB_.WMID.HWMC] (Node f742a8b8), AE_AML_BUFFER_LIMIT (20110112/psparse-536) [ 13.446019] ACPI Error: Method parse/execution failed [_SB_.WMID.WMAD] (Node f742aac8), AE_AML_BUFFER_LIMIT (20110112/psparse-536) [ 13.452167] ACPI Error (psargs-0359): [_PR_.C001] Namespace lookup failure, AE_NOT_FOUND [ 13.452177] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.LPC0.EC0_.TPAF] (Node f702bde0), AE_NOT_FOUND [ 13.452213] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.LPC0.EC0_.TBOM] (Node f702bdf8), AE_NOT_FOUND [ 13.452247] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.LPC0.EC0_._Q1D] (Node f702ba98), AE_NOT_FOUND [ 14.013275] ACPI Warning: _BQC returned an invalid level (20110112/video-473) [ 14.175645] ACPI Error: Method parse/execution failed [_SB_.PCI0.OVGA.DD03.GBQC] (Node f44247e0), AE_ALREADY_EXISTS (20110112/psparse-536) [ 14.175656] ACPI Error: Method parse/execution failed [_SB_.PCI0.OVGA.DD03._BQC] (Node f44247c8), AE_ALREADY_EXISTS (20110112/psparse-536) [ 14.175667] ACPI Warning: Evaluating _BQC failed (20110112/video-484) [ 14.885219] ACPI Error: Needed [Buffer/String/Package], found [Integer] ffff88013c6b58b8 (20110112/exresop-590) [ 14.885234] ACPI Error: Method parse/execution failed [_SB_.PCI0.GFX0._DSM] (Node ffff88013f849eb0), AE_AML_OPERAND_TYPE (20110112/psparse-536) [ 14.885277] ACPI Error: Needed [Buffer/String/Package], found [Integer] ffff88013c6b5828 (20110112/exresop-590) [ 14.885289] ACPI Error: Method parse/execution failed [_SB_.PCI0.PEG1.GFX0._DSM] (Node ffff88013f86f668), AE_AML_OPERAND_TYPE (20110112/psparse-536) [ 15.027464] ACPI Error (psparse-0537): Method parse/execution failed [_PR_.PPCE] (Node ffff880075137920), AE_NOT_FOUND [ 15.027505] ACPI Error (psparse-0537): Method parse/execution failed [EV4_] (Node ffff880075140660), AE_NOT_FOUND [ 15.027542] ACPI Error (psparse-0537): Method parse/execution failed [SMIE] (Node ffff88007513b180), AE_NOT_FOUND [ 15.027579] ACPI Error (psparse-0537): Method parse/execution failed [NEVT] (Node ffff88007513b120), AE_NOT_FOUND [ 15.027616] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.LPCB.ECDV._Q66] (Node ffff880075139cc0), AE_NOT_FOUND [ 15.287082] ACPI Warning: _BQC returned an invalid level (20100428/video-640) [ 15.395484] [Firmware Bug]: ACPI(PEGP) defines _DOD but not _DOS [ 15.846531] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.GFX0._DOD] (Node ffff8800b3840360), AE_AML_PACKAGE_LIMIT [ 16.336080] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.LPCB.EC0_._Q33] (Node f70244b0), AE_TIME [ 16.592600] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.ASOC.SEFA] (Node ffff880226c4a120), AE_AML_INFINITE_LOOP [ 16.592628] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.ASOC.RFAN] (Node ffff880226c49bc0), AE_AML_INFINITE_LOOP [ 16.719798] ACPI Warning for _SB_.PCI0.VID2._DOD: Return Package has no elements (empty) (20090903/nspredef-433) [ 16.942589] ACPI Error (dswload-0802): [_T_0] Namespace lookup failure, AE_ALREADY_EXISTS [ 16.942606] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.OVGA.DD03.GBQC] (Node ffff8800b7e3c6e0), AE_ALREADY_EXISTS [ 16.942654] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.OVGA.DD03._BQC] (Node ffff8800b7e3c6c0), AE_ALREADY_EXISTS [ 17.125601] ACPI Error: Needed [Buffer/String/Package], found [Integer] eee27810 (20110112/exresop-590) [ 17.125618] ACPI Error: Method parse/execution failed [_SB_.PCI0.GFX0._DSM] (Node f7431fa8), AE_AML_OPERAND_TYPE (20110112/psparse-536) [ 17.125669] ACPI Error: Needed [Buffer/String/Package], found [Integer] eee27780 (20110112/exresop-590) [ 17.125690] ACPI Error: Method parse/execution failed [_SB_.PCI0.PEG1.GFX0._DSM] (Node f7445c78), AE_AML_OPERAND_TYPE (20110112/psparse-536) [ 17.802564] ACPI Error: Method parse/execution failed [_SB_.WMID.HWMC] (Node ffff8801ffc5c078), AE_AML_BUFFER_LIMIT (20110112/psparse-536) [ 17.802574] ACPI Error: Method parse/execution failed [_SB_.WMID.WMAD] (Node ffff8801ffc5c258), AE_AML_BUFFER_LIMIT (20110112/psparse-536) [ 17.847665] ACPI Error: Method parse/execution failed [_SB_.PCI0.PEG0.PEGP.DD02._BCL] (Node f444ebe8), AE_NOT_FOUND (20110112/psparse-536) [ 17.985672] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.IBCM] (Node ffff8800b3832600), AE_AML_BUFFER_LIMIT [ 17.985723] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.GFX0.DD03._BCM] (Node ffff8800b382b840), AE_AML_BUFFER_LIMIT [ 18.054842] ACPI Error: Needed [Buffer/String/Package], found [Integer] ffff880133a777e0 (20110112/exresop-590) [ 18.054860] ACPI Error: Method parse/execution failed [_SB_.PCI0.VGA_._DSM] (Node ffff880137659190), AE_AML_OPERAND_TYPE (20110112/psparse-536) [ 18.054909] ACPI Error: Needed [Buffer/String/Package], found [Integer] ffff880133a776c0 (20110112/exresop-590) [ 18.054932] ACPI Error: Method parse/execution failed [_SB_.PCI0.P0P1.VGA_._DSM] (Node ffff88013765d230), AE_AML_OPERAND_TYPE (20110112/psparse-536) [ 18.353938] ACPI Error: Method parse/execution failed [_SB_.PCI0.PEGP.VGA_.LCD_.GBQC] (Node ffff88013762f708), AE_ALREADY_EXISTS (20110112/psparse-536) [ 18.353954] ACPI Error: Method parse/execution failed [_SB_.PCI0.PEGP.VGA_.LCD_._BQC] (Node ffff88013762f6e0), AE_ALREADY_EXISTS (20110112/psparse-536) [ 18.367485] ACPI Error: Method parse/execution failed [_SB_.PCI0.PEGP.VGA_.LCD1.GBQC] (Node ffff88013762f988), AE_ALREADY_EXISTS (20110112/psparse-536) [ 18.367501] ACPI Error: Method parse/execution failed [_SB_.PCI0.PEGP.VGA_.LCD1._BQC] (Node ffff88013762f960), AE_ALREADY_EXISTS (20110112/psparse-536) [ 18.720899] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.GFX0._DOD] (Node f70206d8), AE_AML_PACKAGE_LIMIT [ 19.086127] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.LPCB.ECDV.ECR1] (Node f702e6a8), AE_TIME [ 19.086176] ACPI Error (psparse-0537): Method parse/execution failed [ECRB] (Node f702e780), AE_TIME [ 19.086202] ACPI Error (psparse-0537): Method parse/execution failed [EC0A] (Node f702e990), AE_TIME [ 19.086228] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.AMW0._WED] (Node f7019fd8), AE_TIME [ 19.408610] ACPI Error: Method parse/execution failed [_SB_.PCI0.GFX0._DOD] (Node f74256a8), AE_AML_PACKAGE_LIMIT (20110112/psparse-536) [ 20.135790] ACPI Error: Needed [Buffer/String/Package], found [Integer] ffff88023b491318 (20110316/exresop-590) [ 20.135804] ACPI Error: Method parse/execution failed [_SB_.PCI0.GFX0._DSM] (Node ffff88023ec61eb0), AE_AML_OPERAND_TYPE (20110316/psparse-536) [ 20.135849] ACPI Error: Needed [Buffer/String/Package], found [Integer] ffff88023b491708 (20110316/exresop-590) [ 20.135864] ACPI Error: Method parse/execution failed [_SB_.PCI0.PEG1.GFX0._DSM] (Node ffff88023ec77668), AE_AML_OPERAND_TYPE (20110316/psparse-536) [ 20.149010] ACPI Error: Needed [Integer/String/Buffer], found [Package] f741ed48 (20100428/exresop-422) [ 20.149032] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.P0P2.PEGP.LCD_._BQC] (Node f741f978), AE_AML_OPERAND_TYPE [ 20.149063] ACPI Warning: Evaluating _BQC failed (20100428/video-651) [ 20.298134] [Firmware Bug]: _BCQ is used instead of _BQC [ 20.342464] ACPI Warning: _BQC returned an invalid level (20110413/video-473) [ 20.435766] [Firmware Bug]: Duplicate ACPI video bus devices for the same VGA controller, please try module parameter "video.allow_duplicates=1"if the current driver doesn't work. [ 20.634744] ACPI Warning for _SB_.PCI0.GFX0.DD02._BQC: Return type mismatch - found Reference, expected Integer (20100428/nspredef-1053) [ 21.460488] ACPI Error: Method parse/execution failed [_SB_.PCI0.GFX0._DOD] (Node ffff880133632c80), AE_AML_PACKAGE_LIMIT (20110112/psparse-536) [ 21.562484] ACPI Error: Needed [Buffer/String/Package], found [Integer] f7260370 (20090903/exresop-590) [ 21.562496] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.GFX0.DD02.GBQC] (Node f7017a68), AE_AML_OPERAND_TYPE [ 21.562544] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.GFX0.DD02._BQC] (Node f7017a50), AE_AML_OPERAND_TYPE [ 22.154348] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.LPCB.ECDV.ECR1] (Node f74276a8), AE_TIME [ 22.154443] ACPI Error (psparse-0537): Method parse/execution failed [ECRB] (Node f7427780), AE_TIME [ 22.154516] ACPI Error (psparse-0537): Method parse/execution failed [ECG5] (Node f7427828), AE_TIME [ 22.154587] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.AC__._PSR] (Node f7427c18), AE_TIME [ 24.824888] [Firmware Bug]: ACPI(IGPU) defines _DOD but not _DOS [ 25.859931] ACPI Error: Needed [Buffer/String/Package], found [Integer] ffff880139af5240 (20090903/exresop-590) [ 25.859949] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.VGA_._DSM] (Node ffff88013ba4c0e0), AE_AML_OPERAND_TYPE [ 25.860025] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.P0P1.VGA_._DSM] (Node ffff88013ba4da80), AE_AML_OPERAND_TYPE [ 26.653079] ACPI Exception: AE_TIME, Returned by Handler for [EmbeddedControl] (20100428/evregion-474) [ 26.653190] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.LPCB.ECDV.ECR1] (Node ffff880226c54ce0), AE_TIME [ 26.653252] ACPI Error (psparse-0537): Method parse/execution failed [ECRB] (Node ffff880226c54e00), AE_TIME [ 26.653283] ACPI Error (psparse-0537): Method parse/execution failed [ECG5] (Node ffff880226c54ee0), AE_TIME [ 26.653307] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.AC__._PSR] (Node ffff880226c56420), AE_TIME [ 26.874386] ACPI Warning: _BQC returned an invalid level (20090903/video-631) [ 29.470614] ACPI Warning for _SB_.PCI0.GFX0.DD03._BQC: Return type mismatch - found Reference, expected Integer (20100428/nspredef-1053) [ 30.140339] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.PCI0.LPCB.ECDV.ECR1] (Node ffff880217050ce0), AE_TIME [ 30.140421] ACPI Error (psparse-0537): Method parse/execution failed [ECRB] (Node ffff880217050e00), AE_TIME [ 30.140448] ACPI Error (psparse-0537): Method parse/execution failed [ECG5] (Node ffff880217050ee0), AE_TIME [ 30.140475] ACPI Error (psparse-0537): Method parse/execution failed [_SB_.AC__._PSR] (Node ffff880217052420), AE_TIME [ 42.490181] ACPI Error: [_SB_.VDRV] Namespace lookup failure, AE_NOT_FOUND (20110112/psargs-359) [ 42.490202] ACPI Error: Method parse/execution failed [_SB_.PCI0.LPC0.H_EC._Q51] (Node ffff88003d9b1e60), AE_NOT_FOUND (20110112/psparse-536) [ 44.661543] ACPI Warning for _SB_.PCI0.GFX0.DD01._BCL: Return type mismatch - found Integer, expected Package (20090903/nspredef-1006) [ 50.737630] ACPI Warning for _SB_.PCI0.AGP_.VID_.MXMI: Excess arguments - needs 1, found 2 (20090903/nspredef-303) [ 50.737686] ACPI Warning for _SB_.PCI0.AGP_.VID_.MXMS: Excess arguments - needs 1, found 2 (20090903/nspredef-303) fwts-test/klog-0001/test-0001.sh000077500000000000000000000006741231470457100162370ustar00rootroot00000000000000#!/bin/bash # TEST="Test klog against known failure patterns" NAME=test-0001.sh TMPLOG=$TMP/klog.log.$$ $FWTS --log-format="%line %owner " -w 80 -j $FWTSTESTDIR/../data --klog=$FWTSTESTDIR/klog-0001/klog.txt klog - | grep "^[0-9]*[ ]*klog" | cut -c7- > $TMPLOG diff $TMPLOG $FWTSTESTDIR/klog-0001/klog-0001.log >> $FAILURE_LOG ret=$? if [ $ret -eq 0 ]; then echo PASSED: $TEST, $NAME else echo FAILED: $TEST, $NAME fi rm $TMPLOG exit $ret fwts-test/klog-0001/test-0002.sh000077500000000000000000000007611231470457100162350ustar00rootroot00000000000000#!/bin/bash # TEST="Test klog summary table against known failure patterns" NAME=test-0002.sh TMPLOG=$TMP/klog.log.$$ $FWTS --log-format="%line %owner " -w 80 -j $FWTSTESTDIR/../data --klog=$FWTSTESTDIR/klog-0001/klog.txt klog - | grep summary | sed 's/line: [0-9]*//' | cut -c7- > $TMPLOG grep -v "log line:" $FWTSTESTDIR/klog-0001/klog-0002.log | diff $TMPLOG - >> $FAILURE_LOG ret=$? if [ $ret -eq 0 ]; then echo PASSED: $TEST, $NAME else echo FAILED: $TEST, $NAME fi rm $TMPLOG exit $ret fwts-test/klog-0001/test-0003.sh000077500000000000000000000007041231470457100162330ustar00rootroot00000000000000#!/bin/bash # TEST="Test klog against known failure rate" NAME=test-0003.sh TMPLOG=$TMP/klog.log.$$ $FWTS --log-format="%line %owner " -w 80 -j $FWTSTESTDIR/../data --klog=$FWTSTESTDIR/klog-0001/klog.txt klog - | grep "unique errors in kernel log" | cut -c7- > $TMPLOG diff $TMPLOG $FWTSTESTDIR/klog-0001/klog-0003.log >> $FAILURE_LOG ret=$? if [ $ret -eq 0 ]; then echo PASSED: $TEST, $NAME else echo FAILED: $TEST, $NAME fi rm $TMPLOG exit $ret fwts-test/klog-0001/testcase.txt000066400000000000000000000000651231470457100167110ustar00rootroot00000000000000Test fwts klog test against real kernel log messages fwts-test/klog-0002/000077500000000000000000000000001231470457100143355ustar00rootroot00000000000000fwts-test/klog-0002/klog-0001.log000066400000000000000000000131561231470457100163600ustar00rootroot00000000000000klog klog: Scan kernel log for errors and warnings. klog ---------------------------------------------------------- klog Test 1 of 1: Kernel log error check. klog FAILED [CRITICAL] KlogThermalOverrun: Test 1, CRITICAL klog Kernel message: [ 0.408874] CPU1: Temperature above klog threshold, cpu clock throttled (total events = 1) klog klog ADVICE: Test caused CPU temperature above critical klog threshold. The CPU has been throttled to run slower klog because of over-heating above the critical threshold. CPU klog throttling will be turned off once the CPU has cooled klog sufficiently. Frequent throttling may indicate poor klog thermal design on the machine. klog klog FAILED [CRITICAL] KlogBiosIrqRoutingBug: Test 1, CRITICAL klog Kernel message: [ 0.728985] Disabling IRQ #15 klog klog ADVICE: The kernel detected an irq storm. This is most klog probably an IRQ routing bug. klog klog FAILED [CRITICAL] KlogBiosIrqRoutingBug: Test 1, CRITICAL klog Kernel message: [ 0.734767] Disabling IRQ #11 klog klog ADVICE: The kernel detected an irq storm. This is most klog probably an IRQ routing bug. klog klog FAILED [CRITICAL] KlogThermalOverrun: Test 1, CRITICAL klog Kernel message: [ 0.768555] CPU3: Temperature above klog threshold, cpu clock throttled (total events = 1) klog klog ADVICE: Test caused CPU temperature above critical klog threshold. The CPU has been throttled to run slower klog because of over-heating above the critical threshold. CPU klog throttling will be turned off once the CPU has cooled klog sufficiently. Frequent throttling may indicate poor klog thermal design on the machine. klog klog FAILED [CRITICAL] KlogThermalOverrun: Test 1, CRITICAL klog Kernel message: [ 1.128275] CPU5: Temperature above klog threshold, cpu clock throttled (total events = 1) klog klog ADVICE: Test caused CPU temperature above critical klog threshold. The CPU has been throttled to run slower klog because of over-heating above the critical threshold. CPU klog throttling will be turned off once the CPU has cooled klog sufficiently. Frequent throttling may indicate poor klog thermal design on the machine. klog klog FAILED [CRITICAL] KlogThermalOverrun: Test 1, CRITICAL klog Kernel message: [ 1.487778] CPU7: Temperature above klog threshold, cpu clock throttled (total events = 1) klog klog ADVICE: Test caused CPU temperature above critical klog threshold. The CPU has been throttled to run slower klog because of over-heating above the critical threshold. CPU klog throttling will be turned off once the CPU has cooled klog sufficiently. Frequent throttling may indicate poor klog thermal design on the machine. klog klog FAILED [CRITICAL] KlogBiosIrqRoutingBug: Test 1, CRITICAL klog Kernel message: [ 2.131632] Disabling IRQ #16 klog klog ADVICE: The kernel detected an irq storm. This is most klog probably an IRQ routing bug. klog klog FAILED [CRITICAL] KlogBiosIrqRoutingBug: Test 1, CRITICAL klog Kernel message: [ 3.220411] Disabling IRQ #18 klog klog ADVICE: The kernel detected an irq storm. This is most klog probably an IRQ routing bug. klog klog FAILED [CRITICAL] KlogThermalOverrun: Test 1, CRITICAL klog Kernel message: [ 10.027255] CPU0: Temperature above klog threshold, cpu clock throttled (total events = 1) klog klog ADVICE: Test caused CPU temperature above critical klog threshold. The CPU has been throttled to run slower klog because of over-heating above the critical threshold. CPU klog throttling will be turned off once the CPU has cooled klog sufficiently. Frequent throttling may indicate poor klog thermal design on the machine. klog klog FAILED [CRITICAL] KlogThermalOverrun: Test 1, CRITICAL klog Kernel message: [ 11.592319] CPU1: Temperature above klog threshold, cpu clock throttled (total events = 2) klog klog ADVICE: Test caused CPU temperature above critical klog threshold. The CPU has been throttled to run slower klog because of over-heating above the critical threshold. CPU klog throttling will be turned off once the CPU has cooled klog sufficiently. Frequent throttling may indicate poor klog thermal design on the machine. klog klog FAILED [CRITICAL] KlogBiosIrqRoutingBug: Test 1, CRITICAL klog Kernel message: [ 17.353310] Disabling IRQ #10 klog klog ADVICE: The kernel detected an irq storm. This is most klog probably an IRQ routing bug. klog klog Found 11 unique errors in kernel log. klog klog ========================================================== klog 0 passed, 11 failed, 0 warning, 0 aborted, 0 skipped, 0 klog info only. klog ========================================================== fwts-test/klog-0002/klog-0002.log000066400000000000000000000041361231470457100163570ustar00rootroot00000000000000summary summary 0 passed, 11 failed, 0 warning, 0 aborted, 0 skipped, 0 summary info only. summary summary Test Failure Summary summary ========================================================== summary summary Critical failures: 11 summary klog: CRITICAL Kernel message: [ 0.408874] CPU1: Temperature above threshold, cpu clock throttled (total events = 1) summary klog: CRITICAL Kernel message: [ 0.728985] Disabling IRQ #15 summary klog: CRITICAL Kernel message: [ 0.734767] Disabling IRQ #11 summary klog: CRITICAL Kernel message: [ 0.768555] CPU3: Temperature above threshold, cpu clock throttled (total events = 1) summary klog: CRITICAL Kernel message: [ 1.128275] CPU5: Temperature above threshold, cpu clock throttled (total events = 1) summary klog: CRITICAL Kernel message: [ 1.487778] CPU7: Temperature above threshold, cpu clock throttled (total events = 1) summary klog: CRITICAL Kernel message: [ 2.131632] Disabling IRQ #16 summary klog: CRITICAL Kernel message: [ 3.220411] Disabling IRQ #18 summary klog: CRITICAL Kernel message: [ 10.027255] CPU0: Temperature above threshold, cpu clock throttled (total events = 1) summary klog: CRITICAL Kernel message: [ 11.592319] CPU1: Temperature above threshold, cpu clock throttled (total events = 2) summary klog: CRITICAL Kernel message: [ 17.353310] Disabling IRQ #10 summary summary High failures: NONE summary summary Medium failures: NONE summary summary Low failures: NONE summary summary Other failures: NONE summary summary Test |Pass |Fail |Abort|Warn |Skip |Info | summary ---------------+-----+-----+-----+-----+-----+-----+ summary klog | | 11| | | | | summary ---------------+-----+-----+-----+-----+-----+-----+ summary Total: | 0| 11| 0| 0| 0| 0| summary ---------------+-----+-----+-----+-----+-----+-----+ fwts-test/klog-0002/klog-0003.log000066400000000000000000000000661231470457100163560ustar00rootroot00000000000000klog Found 11 unique errors in kernel log. fwts-test/klog-0002/klog.txt000066400000000000000000000012351231470457100160330ustar00rootroot00000000000000[ 0.408874] CPU1: Temperature above threshold, cpu clock throttled (total events = 1) [ 0.728985] Disabling IRQ #15 [ 0.734767] Disabling IRQ #11 [ 0.768555] CPU3: Temperature above threshold, cpu clock throttled (total events = 1) [ 1.128275] CPU5: Temperature above threshold, cpu clock throttled (total events = 1) [ 1.487778] CPU7: Temperature above threshold, cpu clock throttled (total events = 1) [ 2.131632] Disabling IRQ #16 [ 3.220411] Disabling IRQ #18 [ 10.027255] CPU0: Temperature above threshold, cpu clock throttled (total events = 1) [ 11.592319] CPU1: Temperature above threshold, cpu clock throttled (total events = 2) [ 17.353310] Disabling IRQ #10 fwts-test/klog-0002/test-0001.sh000077500000000000000000000007371231470457100162400ustar00rootroot00000000000000#!/bin/bash # TEST="Test klog against known common failure patterns (was the dmesg_common test)" NAME=test-0001.sh TMPLOG=$TMP/klog.log.$$ $FWTS --log-format="%line %owner " -w 80 -j $FWTSTESTDIR/../data --klog=$FWTSTESTDIR/klog-0002/klog.txt klog - | grep "^[0-9]*[ ]*klog" | cut -c7- > $TMPLOG diff $TMPLOG $FWTSTESTDIR/klog-0002/klog-0001.log >> $FAILURE_LOG ret=$? if [ $ret -eq 0 ]; then echo PASSED: $TEST, $NAME else echo FAILED: $TEST, $NAME fi rm $TMPLOG exit $ret fwts-test/klog-0002/test-0002.sh000077500000000000000000000010071231470457100162300ustar00rootroot00000000000000#!/bin/bash # TEST="Test klog against known common failure patterns (was the dmesg_common test)" NAME=test-0002.sh TMPLOG=$TMP/klog.log.$$ $FWTS --log-format="%line %owner " -w 80 -j $FWTSTESTDIR/../data --klog=$FWTSTESTDIR/klog-0002/klog.txt klog - | grep summary | sed 's/line: [0-9]*//' | cut -c7- > $TMPLOG grep -v "log line:" $FWTSTESTDIR/klog-0002/klog-0002.log | diff $TMPLOG - >> $FAILURE_LOG ret=$? if [ $ret -eq 0 ]; then echo PASSED: $TEST, $NAME else echo FAILED: $TEST, $NAME fi rm $TMPLOG exit $ret fwts-test/klog-0002/test-0003.sh000077500000000000000000000007631231470457100162410ustar00rootroot00000000000000#!/bin/bash # TEST="Test klog against known common failure patterns (was the dmesg_common test)" NAME=test-0003.sh TMPLOG=$TMP/klog.log.$$ $FWTS --log-format="%line %owner " -w 80 -j $FWTSTESTDIR/../data --klog=$FWTSTESTDIR/klog-0002/klog.txt klog - | grep "errors in kernel log" | grep "Found" | cut -c7- > $TMPLOG diff $TMPLOG $FWTSTESTDIR/klog-0002/klog-0003.log >> $FAILURE_LOG ret=$? if [ $ret -eq 0 ]; then echo PASSED: $TEST, $NAME else echo FAILED: $TEST, $NAME fi rm $TMPLOG exit $ret fwts-test/klog-0002/testcase.txt000066400000000000000000000001141231470457100167050ustar00rootroot00000000000000Test klog against known common failure patterns (was the dmesg_common test) fwts-test/method-0001/000077500000000000000000000000001231470457100146605ustar00rootroot00000000000000fwts-test/method-0001/acpidump-0001.log000066400000000000000000003736441231470457100175640ustar00rootroot00000000000000DSDT @ 0xbf6d9b6a 0000: 44 53 44 54 f4 5f 00 00 02 11 54 4f 53 43 50 4c DSDT._....TOSCPL 0010: 43 52 45 53 54 4c 4e 45 00 00 04 06 49 4e 54 4c CRESTLNE....INTL 0020: 08 06 06 20 08 5a 30 30 30 01 08 5a 30 30 31 0a ... .Z000..Z001. 0030: 02 08 5a 30 30 32 0a 04 08 5a 30 30 33 0a 08 08 ..Z002...Z003... 0040: 5a 30 30 34 00 08 5a 30 30 35 0a 0f 08 5a 30 30 Z004..Z005...Z00 0050: 36 0a 0d 08 5a 30 30 37 0a 0b 08 5a 30 30 38 0a 6...Z007...Z008. 0060: 09 08 45 43 44 59 0a 07 5b 01 4d 55 54 58 00 5b ..ECDY..[.MUTX.[ 0070: 80 50 52 54 30 01 0a 80 0a 04 5b 81 0b 50 52 54 .PRT0.....[..PRT 0080: 30 13 50 38 30 48 20 14 4e 07 50 38 58 48 0a a0 0.P80H .N.P8XH.. 0090: 17 93 68 00 70 7d 7b 50 38 30 44 0c 00 ff ff ff ..h.p}{P80D..... 00a0: 00 69 00 50 38 30 44 a0 1b 93 68 01 70 7d 7b 50 .i.P80D...h.p}{P 00b0: 38 30 44 0c ff 00 ff ff 00 79 69 0a 08 00 00 50 80D......yi....P 00c0: 38 30 44 a0 1c 93 68 0a 02 70 7d 7b 50 38 30 44 80D...h..p}{P80D 00d0: 0c ff ff 00 ff 00 79 69 0a 10 00 00 50 38 30 44 ......yi....P80D 00e0: a0 1c 93 68 0a 03 70 7d 7b 50 38 30 44 0c ff ff ...h..p}{P80D... 00f0: ff 00 00 79 69 0a 18 00 00 50 38 30 44 70 50 38 ...yi....P80DpP8 0100: 30 44 50 38 30 48 14 0c 5f 50 49 43 01 70 68 47 0DP80H.._PIC.phG 0110: 50 49 43 14 46 06 5f 50 54 53 01 70 00 50 38 30 PIC.F._PTS.p.P80 0120: 44 50 38 58 48 00 68 a0 1e 93 68 0a 03 70 01 5c DP8XH.h...h..p.\ 0130: 2f 05 5f 53 42 5f 50 43 49 30 4c 50 43 42 45 43 /._SB_PCI0LPCBEC 0140: 30 5f 53 33 4c 44 a0 33 93 68 0a 04 70 01 5c 2f 0_S3LD.3.h..p.\/ 0150: 05 5f 53 42 5f 50 43 49 30 4c 50 43 42 45 43 30 ._SB_PCI0LPCBEC0 0160: 5f 53 33 4c 44 5c 2f 04 5f 53 42 5f 50 43 49 30 _S3LD\/._SB_PCI0 0170: 4c 50 43 42 50 48 53 53 0a 0e 14 4c 1c 5f 57 41 LPCBPHSS...L._WA 0180: 4b 01 50 38 58 48 01 0a ab a0 30 91 93 68 0a 03 K.P8XH....0..h.. 0190: 93 68 0a 04 a0 25 7b 43 46 47 44 0c 00 00 00 01 .h...%{CFGD..... 01a0: 00 a0 18 90 7b 43 46 47 44 0a f0 00 93 4f 53 59 ....{CFGD....OSY 01b0: 53 0b d1 07 54 52 41 50 0a 3d a0 18 93 52 50 31 S...TRAP.=...RP1 01c0: 44 00 86 5c 2f 03 5f 53 42 5f 50 43 49 30 52 50 D..\/._SB_PCI0RP 01d0: 30 31 00 a0 18 93 52 50 32 44 00 86 5c 2f 03 5f 01....RP2D..\/._ 01e0: 53 42 5f 50 43 49 30 52 50 30 32 00 a0 18 93 52 SB_PCI0RP02....R 01f0: 50 33 44 00 86 5c 2f 03 5f 53 42 5f 50 43 49 30 P3D..\/._SB_PCI0 0200: 52 50 30 33 00 a0 18 93 52 50 34 44 00 86 5c 2f RP03....RP4D..\/ 0210: 03 5f 53 42 5f 50 43 49 30 52 50 30 34 00 a0 18 ._SB_PCI0RP04... 0220: 93 52 50 35 44 00 86 5c 2f 03 5f 53 42 5f 50 43 .RP5D..\/._SB_PC 0230: 49 30 52 50 30 35 00 a0 18 93 52 50 36 44 00 86 I0RP05....RP6D.. 0240: 5c 2f 03 5f 53 42 5f 50 43 49 30 52 50 30 36 00 \/._SB_PCI0RP06. 0250: a0 12 93 68 0a 03 50 38 58 48 00 0a 30 54 52 41 ...h..P8XH..0TRA 0260: 50 0a 46 a0 43 0d 93 68 0a 04 50 38 58 48 00 0a P.F.C..h..P8XH.. 0270: 40 5c 2f 04 5f 53 42 5f 50 43 49 30 4c 50 43 42 @\/._SB_PCI0LPCB 0280: 50 48 53 53 0a 0f 70 57 41 4b 46 60 70 00 57 41 PHSS..pWAKF`p.WA 0290: 4b 46 7b 60 0a 05 60 a0 18 93 60 01 50 38 58 48 KF{`..`...`.P8XH 02a0: 00 0a 41 86 5c 2e 5f 53 42 5f 50 57 52 42 0a 02 ..A.\._SB_PWRB.. 02b0: a0 46 08 44 54 53 45 54 52 41 50 0a 47 a0 42 06 .F.DTSETRAP.G.B. 02c0: 90 5c 2f 04 5f 53 42 5f 50 43 49 30 4c 50 43 42 .\/._SB_PCI0LPCB 02d0: 45 43 4f 4b 93 45 43 44 59 00 a0 27 92 95 44 54 ECOK.ECDY..'..DT 02e0: 53 31 44 54 53 32 70 44 54 53 31 5c 2f 05 5f 53 S1DTS2pDTS1\/._S 02f0: 42 5f 50 43 49 30 4c 50 43 42 45 43 30 5f 53 4b B_PCI0LPCBEC0_SK 0300: 54 41 a1 1d 70 44 54 53 32 5c 2f 05 5f 53 42 5f TA..pDTS2\/._SB_ 0310: 50 43 49 30 4c 50 43 42 45 43 30 5f 53 4b 54 41 PCI0LPCBEC0_SKTA 0320: a1 16 5c 2f 04 5f 53 42 5f 50 43 49 30 4c 50 43 ..\/._SB_PCI0LPC 0330: 42 50 48 53 53 0a 10 5c 2e 5f 50 52 5f 52 50 50 BPHSS..\._PR_RPP 0340: 43 a4 12 04 02 00 00 14 1e 47 45 54 42 0b 77 68 C........GETB.wh 0350: 0a 08 60 77 69 0a 08 61 5b 13 6a 60 61 54 42 46 ..`wi..a[.j`aTBF 0360: 33 a4 54 42 46 33 14 42 09 50 4e 4f 54 08 a0 4a 3.TBF3.B.PNOT..J 0370: 06 4d 50 45 4e a0 31 7b 50 44 43 30 0a 08 00 86 .MPEN.1{PDC0.... 0380: 5c 2e 5f 50 52 5f 43 50 55 30 0a 80 a0 1a 7b 50 \._PR_CPU0....{P 0390: 44 43 30 0a 10 00 5b 22 0a 64 86 5c 2e 5f 50 52 DC0...[".d.\._PR 03a0: 5f 43 50 55 30 0a 81 a0 31 7b 50 44 43 31 0a 08 _CPU0...1{PDC1.. 03b0: 00 86 5c 2e 5f 50 52 5f 43 50 55 31 0a 80 a0 1a ..\._PR_CPU1.... 03c0: 7b 50 44 43 31 0a 10 00 5b 22 0a 64 86 5c 2e 5f {PDC1...[".d.\._ 03d0: 50 52 5f 43 50 55 31 0a 81 a1 1f 86 5c 2e 5f 50 PR_CPU1.....\._P 03e0: 52 5f 43 50 55 30 0a 80 5b 22 0a 64 86 5c 2e 5f R_CPU0..[".d.\._ 03f0: 50 52 5f 43 50 55 30 0a 81 14 17 54 52 41 50 09 PR_CPU0....TRAP. 0400: 70 68 53 4d 49 46 70 00 54 52 50 30 a4 53 4d 49 phSMIFp.TRP0.SMI 0410: 46 10 41 0f 5f 53 42 5f 14 4a 0e 5f 49 4e 49 00 F.A._SB_.J._INI. 0420: 70 0b 99 99 4d 41 52 4b a0 1c 44 54 53 45 54 52 p...MARK..DTSETR 0430: 41 50 0a 47 5e 2f 03 50 43 49 30 4c 50 43 42 50 AP.G^/.PCI0LPCBP 0440: 48 53 53 0a 10 70 0b d0 07 4f 53 59 53 a0 4a 09 HSS..p...OSYS.J. 0450: 5b 12 5f 4f 53 49 60 a0 18 5f 4f 53 49 0d 4c 69 [._OSI`.._OSI.Li 0460: 6e 75 78 00 70 01 4c 49 4e 58 70 00 45 43 44 59 nux.p.LINXp.ECDY 0470: a0 1b 5f 4f 53 49 0d 57 69 6e 64 6f 77 73 20 32 .._OSI.Windows 2 0480: 30 30 31 00 70 0b d1 07 4f 53 59 53 a0 1f 5f 4f 001.p...OSYS.._O 0490: 53 49 0d 57 69 6e 64 6f 77 73 20 32 30 30 31 20 SI.Windows 2001 04a0: 53 50 31 00 70 0b d1 07 4f 53 59 53 a0 1f 5f 4f SP1.p...OSYS.._O 04b0: 53 49 0d 57 69 6e 64 6f 77 73 20 32 30 30 31 20 SI.Windows 2001 04c0: 53 50 32 00 70 0b d2 07 4f 53 59 53 a0 1b 5f 4f SP2.p...OSYS.._O 04d0: 53 49 0d 57 69 6e 64 6f 77 73 20 32 30 30 36 00 SI.Windows 2006. 04e0: 70 0b d6 07 4f 53 59 53 a0 14 90 4d 50 45 4e 93 p...OSYS...MPEN. 04f0: 4f 53 59 53 0b d1 07 54 52 41 50 0a 3d 54 52 41 OSYS...TRAP.=TRA 0500: 50 0a 2b 5b 80 47 4e 56 53 00 0c bc 2d 6e bf 0b P.+[.GNVS...-n.. 0510: 00 01 5b 81 45 24 47 4e 56 53 10 4f 53 59 53 10 ..[.E$GNVS.OSYS. 0520: 53 4d 49 46 08 50 52 4d 30 08 50 52 4d 31 08 53 SMIF.PRM0.PRM1.S 0530: 43 49 46 08 50 52 4d 32 08 50 52 4d 33 08 4c 43 CIF.PRM2.PRM3.LC 0540: 4b 46 08 50 52 4d 34 08 50 52 4d 35 08 50 38 30 KF.PRM4.PRM5.P80 0550: 44 20 4c 49 44 53 08 50 57 52 53 08 44 42 47 53 D LIDS.PWRS.DBGS 0560: 08 4c 49 4e 58 08 00 08 41 43 54 31 08 41 43 54 .LINX...ACT1.ACT 0570: 54 08 50 53 56 54 08 54 43 31 56 08 54 43 32 56 T.PSVT.TC1V.TC2V 0580: 08 54 53 50 56 08 43 52 54 54 08 44 54 53 45 08 .TSPV.CRTT.DTSE. 0590: 44 54 53 31 08 44 54 53 32 08 00 40 05 41 50 49 DTS1.DTS2..@.API 05a0: 43 08 4d 50 45 4e 08 50 43 50 30 08 50 43 50 31 C.MPEN.PCP0.PCP1 05b0: 08 50 50 43 4d 08 00 28 43 4d 41 50 08 43 4d 42 .PPCM..(CMAP.CMB 05c0: 50 08 4c 50 54 50 08 46 44 43 50 08 00 30 49 47 P.LPTP.FDCP..0IG 05d0: 44 53 08 54 4c 53 54 08 43 41 44 4c 08 50 41 44 DS.TLST.CADL.PAD 05e0: 4c 08 43 53 54 45 10 4e 53 54 45 10 53 53 54 45 L.CSTE.NSTE.SSTE 05f0: 10 4e 44 49 44 08 44 49 44 31 20 44 49 44 32 20 .NDID.DID1 DID2 0600: 44 49 44 33 20 44 49 44 34 20 44 49 44 35 20 00 DID3 DID4 DID5 . 0610: 40 06 42 4c 43 53 08 42 52 54 4c 08 41 4c 53 45 @.BLCS.BRTL.ALSE 0620: 08 41 4c 41 46 08 4c 4c 4f 57 08 4c 48 49 48 08 .ALAF.LLOW.LHIH. 0630: 00 08 45 4d 41 45 08 45 4d 41 50 10 45 4d 41 4c ..EMAE.EMAP.EMAL 0640: 10 00 08 4d 45 46 45 08 00 18 54 50 4d 50 08 54 ...MEFE...TPMP.T 0650: 50 4d 45 08 00 40 04 47 54 46 30 38 47 54 46 32 PME..@.GTF08GTF2 0660: 38 49 44 45 4d 08 47 54 46 31 38 00 40 09 41 53 8IDEM.GTF18.@.AS 0670: 4c 42 20 49 42 54 54 08 49 50 41 54 08 49 54 56 LB IBTT.IPAT.ITV 0680: 46 08 49 54 56 4d 08 49 50 53 43 08 49 42 4c 43 F.ITVM.IPSC.IBLC 0690: 08 49 42 49 41 08 49 53 53 43 08 49 34 30 39 08 .IBIA.ISSC.I409. 06a0: 49 35 30 39 08 49 36 30 39 08 49 37 30 39 08 49 I509.I609.I709.I 06b0: 44 4d 4d 08 49 44 4d 53 08 49 46 31 45 08 48 56 DMM.IDMS.IF1E.HV 06c0: 43 4f 08 4e 58 44 31 20 4e 58 44 32 20 4d 41 52 CO.NXD1 NXD2 MAR 06d0: 4b 10 42 52 41 44 08 42 54 45 4e 08 56 56 45 4e K.BRAD.BTEN.VVEN 06e0: 08 42 47 54 4c 08 54 4d 45 45 01 00 07 53 43 55 .BGTL.TMEE...SCU 06f0: 30 01 53 43 55 31 01 53 43 55 32 01 53 43 55 33 0.SCU1.SCU2.SCU3 0700: 01 00 04 58 4b 53 50 01 58 4b 49 4e 01 58 4b 49 ...XKSP.XKIN.XKI 0710: 44 01 58 4b 4f 4b 01 00 04 42 47 55 31 08 42 53 D.XKOK...BGU1.BS 0720: 54 31 08 42 46 43 31 10 57 4b 4c 4e 08 57 41 4b T1.BFC1.WKLN.WAK 0730: 46 08 44 53 4d 44 08 42 41 59 53 08 48 41 50 45 F.DSMD.BAYS.HAPE 0740: 01 00 07 44 54 53 4d 01 00 07 4f 44 54 31 08 4f ...DTSM...ODT1.O 0750: 44 54 32 08 44 54 53 57 08 08 44 53 45 4e 01 08 DT2.DTSW..DSEN.. 0760: 45 43 4f 4e 00 08 47 50 49 43 00 08 43 54 59 50 ECON..GPIC..CTYP 0770: 00 08 4c 30 31 43 00 08 56 46 4e 30 00 08 56 46 ..L01C..VFN0..VF 0780: 4e 31 00 10 4a 7c 5f 47 50 45 14 46 35 5f 4c 30 N1..J|_GPE.F5_L0 0790: 31 00 72 4c 30 31 43 01 4c 30 31 43 50 38 58 48 1.rL01C.L01CP8XH 07a0: 00 01 50 38 58 48 01 4c 30 31 43 a0 48 08 90 93 ..P8XH.L01C.H... 07b0: 52 50 31 44 00 5c 2f 04 5f 53 42 5f 50 43 49 30 RP1D.\/._SB_PCI0 07c0: 52 50 30 31 48 50 53 58 5b 22 0a 64 a0 40 05 5c RP01HPSX[".d.@.\ 07d0: 2f 04 5f 53 42 5f 50 43 49 30 52 50 30 31 50 44 /._SB_PCI0RP01PD 07e0: 43 58 70 01 5c 2f 04 5f 53 42 5f 50 43 49 30 52 CXp.\/._SB_PCI0R 07f0: 50 30 31 50 44 43 58 70 01 5c 2f 04 5f 53 42 5f P01PDCXp.\/._SB_ 0800: 50 43 49 30 52 50 30 31 48 50 53 58 86 5c 2f 03 PCI0RP01HPSX.\/. 0810: 5f 53 42 5f 50 43 49 30 52 50 30 31 00 a1 16 70 _SB_PCI0RP01...p 0820: 01 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 30 31 .\/._SB_PCI0RP01 0830: 48 50 53 58 a0 48 08 90 93 52 50 32 44 00 5c 2f HPSX.H...RP2D.\/ 0840: 04 5f 53 42 5f 50 43 49 30 52 50 30 32 48 50 53 ._SB_PCI0RP02HPS 0850: 58 5b 22 0a 64 a0 40 05 5c 2f 04 5f 53 42 5f 50 X[".d.@.\/._SB_P 0860: 43 49 30 52 50 30 32 50 44 43 58 70 01 5c 2f 04 CI0RP02PDCXp.\/. 0870: 5f 53 42 5f 50 43 49 30 52 50 30 32 50 44 43 58 _SB_PCI0RP02PDCX 0880: 70 01 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 30 p.\/._SB_PCI0RP0 0890: 32 48 50 53 58 86 5c 2f 03 5f 53 42 5f 50 43 49 2HPSX.\/._SB_PCI 08a0: 30 52 50 30 32 00 a1 16 70 01 5c 2f 04 5f 53 42 0RP02...p.\/._SB 08b0: 5f 50 43 49 30 52 50 30 32 48 50 53 58 a0 48 08 _PCI0RP02HPSX.H. 08c0: 90 93 52 50 33 44 00 5c 2f 04 5f 53 42 5f 50 43 ..RP3D.\/._SB_PC 08d0: 49 30 52 50 30 33 48 50 53 58 5b 22 0a 64 a0 40 I0RP03HPSX[".d.@ 08e0: 05 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 30 33 .\/._SB_PCI0RP03 08f0: 50 44 43 58 70 01 5c 2f 04 5f 53 42 5f 50 43 49 PDCXp.\/._SB_PCI 0900: 30 52 50 30 33 50 44 43 58 70 01 5c 2f 04 5f 53 0RP03PDCXp.\/._S 0910: 42 5f 50 43 49 30 52 50 30 33 48 50 53 58 86 5c B_PCI0RP03HPSX.\ 0920: 2f 03 5f 53 42 5f 50 43 49 30 52 50 30 33 00 a1 /._SB_PCI0RP03.. 0930: 16 70 01 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 .p.\/._SB_PCI0RP 0940: 30 33 48 50 53 58 a0 48 08 90 93 52 50 34 44 00 03HPSX.H...RP4D. 0950: 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 30 34 48 \/._SB_PCI0RP04H 0960: 50 53 58 5b 22 0a 64 a0 40 05 5c 2f 04 5f 53 42 PSX[".d.@.\/._SB 0970: 5f 50 43 49 30 52 50 30 34 50 44 43 58 70 01 5c _PCI0RP04PDCXp.\ 0980: 2f 04 5f 53 42 5f 50 43 49 30 52 50 30 34 50 44 /._SB_PCI0RP04PD 0990: 43 58 70 01 5c 2f 04 5f 53 42 5f 50 43 49 30 52 CXp.\/._SB_PCI0R 09a0: 50 30 34 48 50 53 58 86 5c 2f 03 5f 53 42 5f 50 P04HPSX.\/._SB_P 09b0: 43 49 30 52 50 30 34 00 a1 16 70 01 5c 2f 04 5f CI0RP04...p.\/._ 09c0: 53 42 5f 50 43 49 30 52 50 30 34 48 50 53 58 a0 SB_PCI0RP04HPSX. 09d0: 48 08 90 93 52 50 35 44 00 5c 2f 04 5f 53 42 5f H...RP5D.\/._SB_ 09e0: 50 43 49 30 52 50 30 35 48 50 53 58 5b 22 0a 64 PCI0RP05HPSX[".d 09f0: a0 40 05 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 .@.\/._SB_PCI0RP 0a00: 30 35 50 44 43 58 70 01 5c 2f 04 5f 53 42 5f 50 05PDCXp.\/._SB_P 0a10: 43 49 30 52 50 30 35 50 44 43 58 70 01 5c 2f 04 CI0RP05PDCXp.\/. 0a20: 5f 53 42 5f 50 43 49 30 52 50 30 35 48 50 53 58 _SB_PCI0RP05HPSX 0a30: 86 5c 2f 03 5f 53 42 5f 50 43 49 30 52 50 30 35 .\/._SB_PCI0RP05 0a40: 00 a1 16 70 01 5c 2f 04 5f 53 42 5f 50 43 49 30 ...p.\/._SB_PCI0 0a50: 52 50 30 35 48 50 53 58 a0 48 08 90 93 52 50 36 RP05HPSX.H...RP6 0a60: 44 00 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 30 D.\/._SB_PCI0RP0 0a70: 36 48 50 53 58 5b 22 0a 64 a0 40 05 5c 2f 04 5f 6HPSX[".d.@.\/._ 0a80: 53 42 5f 50 43 49 30 52 50 30 36 50 44 43 58 70 SB_PCI0RP06PDCXp 0a90: 01 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 30 36 .\/._SB_PCI0RP06 0aa0: 50 44 43 58 70 01 5c 2f 04 5f 53 42 5f 50 43 49 PDCXp.\/._SB_PCI 0ab0: 30 52 50 30 36 48 50 53 58 86 5c 2f 03 5f 53 42 0RP06HPSX.\/._SB 0ac0: 5f 50 43 49 30 52 50 30 36 00 a1 16 70 01 5c 2f _PCI0RP06...p.\/ 0ad0: 04 5f 53 42 5f 50 43 49 30 52 50 30 36 48 50 53 ._SB_PCI0RP06HPS 0ae0: 58 14 42 0d 5f 4c 30 32 00 70 00 47 50 45 43 a0 X.B._L02.p.GPEC. 0af0: 4d 0a 5c 2f 04 5f 53 42 5f 50 43 49 30 4c 50 43 M.\/._SB_PCI0LPC 0b00: 42 45 43 4f 4b a0 4e 04 93 44 54 53 57 01 a0 27 BECOK.N..DTSW..' 0b10: 92 95 44 54 53 31 44 54 53 32 70 44 54 53 31 5c ..DTS1DTS2pDTS1\ 0b20: 2f 05 5f 53 42 5f 50 43 49 30 4c 50 43 42 45 43 /._SB_PCI0LPCBEC 0b30: 30 5f 53 4b 54 41 a1 1d 70 44 54 53 32 5c 2f 05 0_SKTA..pDTS2\/. 0b40: 5f 53 42 5f 50 43 49 30 4c 50 43 42 45 43 30 5f _SB_PCI0LPCBEC0_ 0b50: 53 4b 54 41 a1 48 04 a0 27 92 95 4f 44 54 31 4f SKTA.H..'..ODT1O 0b60: 44 54 32 70 4f 44 54 31 5c 2f 05 5f 53 42 5f 50 DT2pODT1\/._SB_P 0b70: 43 49 30 4c 50 43 42 45 43 30 5f 53 4b 54 41 a1 CI0LPCBEC0_SKTA. 0b80: 1d 70 4f 44 54 32 5c 2f 05 5f 53 42 5f 50 43 49 .pODT2\/._SB_PCI 0b90: 30 4c 50 43 42 45 43 30 5f 53 4b 54 41 a1 16 5c 0LPCBEC0_SKTA..\ 0ba0: 2f 04 5f 53 42 5f 50 43 49 30 4c 50 43 42 50 48 /._SB_PCI0LPCBPH 0bb0: 53 53 0a 10 14 18 5f 4c 30 33 00 86 5c 2f 03 5f SS...._L03..\/._ 0bc0: 53 42 5f 50 43 49 30 55 53 42 31 0a 02 14 18 5f SB_PCI0USB1...._ 0bd0: 4c 30 34 00 86 5c 2f 03 5f 53 42 5f 50 43 49 30 L04..\/._SB_PCI0 0be0: 55 53 42 32 0a 02 14 18 5f 4c 30 35 00 86 5c 2f USB2...._L05..\/ 0bf0: 03 5f 53 42 5f 50 43 49 30 55 53 42 35 0a 02 14 ._SB_PCI0USB5... 0c00: 36 5f 4c 30 36 00 a0 27 5c 2f 04 5f 53 42 5f 50 6_L06..'\/._SB_P 0c10: 43 49 30 47 46 58 30 47 53 53 45 5c 2f 04 5f 53 CI0GFX0GSSE\/._S 0c20: 42 5f 50 43 49 30 47 46 58 30 47 53 43 49 a1 07 B_PCI0GFX0GSCI.. 0c30: 70 01 53 43 49 53 14 43 1f 5f 4c 30 39 00 a0 41 p.SCIS.C._L09..A 0c40: 05 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 30 31 .\/._SB_PCI0RP01 0c50: 50 53 50 58 70 01 5c 2f 04 5f 53 42 5f 50 43 49 PSPXp.\/._SB_PCI 0c60: 30 52 50 30 31 50 53 50 58 70 01 5c 2f 04 5f 53 0RP01PSPXp.\/._S 0c70: 42 5f 50 43 49 30 52 50 30 31 50 4d 53 58 86 5c B_PCI0RP01PMSX.\ 0c80: 2f 03 5f 53 42 5f 50 43 49 30 52 50 30 31 0a 02 /._SB_PCI0RP01.. 0c90: a0 41 05 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 .A.\/._SB_PCI0RP 0ca0: 30 32 50 53 50 58 70 01 5c 2f 04 5f 53 42 5f 50 02PSPXp.\/._SB_P 0cb0: 43 49 30 52 50 30 32 50 53 50 58 70 01 5c 2f 04 CI0RP02PSPXp.\/. 0cc0: 5f 53 42 5f 50 43 49 30 52 50 30 32 50 4d 53 58 _SB_PCI0RP02PMSX 0cd0: 86 5c 2f 03 5f 53 42 5f 50 43 49 30 52 50 30 32 .\/._SB_PCI0RP02 0ce0: 0a 02 a0 41 05 5c 2f 04 5f 53 42 5f 50 43 49 30 ...A.\/._SB_PCI0 0cf0: 52 50 30 33 50 53 50 58 70 01 5c 2f 04 5f 53 42 RP03PSPXp.\/._SB 0d00: 5f 50 43 49 30 52 50 30 33 50 53 50 58 70 01 5c _PCI0RP03PSPXp.\ 0d10: 2f 04 5f 53 42 5f 50 43 49 30 52 50 30 33 50 4d /._SB_PCI0RP03PM 0d20: 53 58 86 5c 2f 03 5f 53 42 5f 50 43 49 30 52 50 SX.\/._SB_PCI0RP 0d30: 30 33 0a 02 a0 41 05 5c 2f 04 5f 53 42 5f 50 43 03...A.\/._SB_PC 0d40: 49 30 52 50 30 34 50 53 50 58 70 01 5c 2f 04 5f I0RP04PSPXp.\/._ 0d50: 53 42 5f 50 43 49 30 52 50 30 34 50 53 50 58 70 SB_PCI0RP04PSPXp 0d60: 01 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 30 34 .\/._SB_PCI0RP04 0d70: 50 4d 53 58 86 5c 2f 03 5f 53 42 5f 50 43 49 30 PMSX.\/._SB_PCI0 0d80: 52 50 30 34 0a 02 a0 41 05 5c 2f 04 5f 53 42 5f RP04...A.\/._SB_ 0d90: 50 43 49 30 52 50 30 35 50 53 50 58 70 01 5c 2f PCI0RP05PSPXp.\/ 0da0: 04 5f 53 42 5f 50 43 49 30 52 50 30 35 50 53 50 ._SB_PCI0RP05PSP 0db0: 58 70 01 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 Xp.\/._SB_PCI0RP 0dc0: 30 35 50 4d 53 58 86 5c 2f 03 5f 53 42 5f 50 43 05PMSX.\/._SB_PC 0dd0: 49 30 52 50 30 35 0a 02 a0 41 05 5c 2f 04 5f 53 I0RP05...A.\/._S 0de0: 42 5f 50 43 49 30 52 50 30 36 50 53 50 58 70 01 B_PCI0RP06PSPXp. 0df0: 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 30 36 50 \/._SB_PCI0RP06P 0e00: 53 50 58 70 01 5c 2f 04 5f 53 42 5f 50 43 49 30 SPXp.\/._SB_PCI0 0e10: 52 50 30 36 50 4d 53 58 86 5c 2f 03 5f 53 42 5f RP06PMSX.\/._SB_ 0e20: 50 43 49 30 52 50 30 36 0a 02 14 18 5f 4c 30 42 PCI0RP06...._L0B 0e30: 00 86 5c 2f 03 5f 53 42 5f 50 43 49 30 50 43 49 ..\/._SB_PCI0PCI 0e40: 42 0a 02 14 18 5f 4c 30 43 00 86 5c 2f 03 5f 53 B...._L0C..\/._S 0e50: 42 5f 50 43 49 30 55 53 42 33 0a 02 14 4b 0b 5f B_PCI0USB3...K._ 0e60: 4c 30 44 00 a0 3b 5c 2f 04 5f 53 42 5f 50 43 49 L0D..;\/._SB_PCI 0e70: 30 45 48 43 31 50 4d 45 53 70 01 5c 2f 04 5f 53 0EHC1PMESp.\/._S 0e80: 42 5f 50 43 49 30 45 48 43 31 50 4d 45 53 86 5c B_PCI0EHC1PMES.\ 0e90: 2f 03 5f 53 42 5f 50 43 49 30 45 48 43 31 0a 02 /._SB_PCI0EHC1.. 0ea0: a0 3b 5c 2f 04 5f 53 42 5f 50 43 49 30 45 48 43 .;\/._SB_PCI0EHC 0eb0: 32 50 4d 45 53 70 01 5c 2f 04 5f 53 42 5f 50 43 2PMESp.\/._SB_PC 0ec0: 49 30 45 48 43 32 50 4d 45 53 86 5c 2f 03 5f 53 I0EHC2PMES.\/._S 0ed0: 42 5f 50 43 49 30 45 48 43 32 0a 02 a0 3b 5c 2f B_PCI0EHC2...;\/ 0ee0: 04 5f 53 42 5f 50 43 49 30 48 44 45 46 50 4d 45 ._SB_PCI0HDEFPME 0ef0: 53 70 01 5c 2f 04 5f 53 42 5f 50 43 49 30 48 44 Sp.\/._SB_PCI0HD 0f00: 45 46 50 4d 45 53 86 5c 2f 03 5f 53 42 5f 50 43 EFPMES.\/._SB_PC 0f10: 49 30 48 44 45 46 0a 02 14 18 5f 4c 30 45 00 86 I0HDEF...._L0E.. 0f20: 5c 2f 03 5f 53 42 5f 50 43 49 30 55 53 42 34 0a \/._SB_PCI0USB4. 0f30: 02 14 1c 5f 4c 31 42 00 80 4c 50 4f 4c 4c 50 4f ..._L1B..LPOLLPO 0f40: 4c 86 5c 2e 5f 53 42 5f 4c 49 44 30 0a 80 10 46 L.\._SB_LID0...F 0f50: 0b 5f 50 52 5f 5b 83 0b 43 50 55 30 00 10 10 00 ._PR_[..CPU0.... 0f60: 00 06 5b 83 0b 43 50 55 31 01 10 10 00 00 06 14 ..[..CPU1....... 0f70: 45 09 52 50 50 43 00 a0 4d 08 93 4f 53 59 53 0b E.RPPC..M..OSYS. 0f80: d2 07 a0 42 08 7b 43 46 47 44 01 00 a0 42 04 94 ...B.{CFGD...B.. 0f90: 5e 2e 43 50 55 30 5f 50 50 43 00 74 5e 2e 43 50 ^.CPU0_PPC.t^.CP 0fa0: 55 30 5f 50 50 43 01 5e 2e 43 50 55 30 5f 50 50 U0_PPC.^.CPU0_PP 0fb0: 43 50 4e 4f 54 72 5e 2e 43 50 55 30 5f 50 50 43 CPNOTr^.CPU0_PPC 0fc0: 01 5e 2e 43 50 55 30 5f 50 50 43 50 4e 4f 54 a1 .^.CPU0_PPCPNOT. 0fd0: 35 72 5e 2e 43 50 55 30 5f 50 50 43 01 5e 2e 43 5r^.CPU0_PPC.^.C 0fe0: 50 55 30 5f 50 50 43 50 4e 4f 54 74 5e 2e 43 50 PU0_PPCPNOTt^.CP 0ff0: 55 30 5f 50 50 43 01 5e 2e 43 50 55 30 5f 50 50 U0_PPC.^.CPU0_PP 1000: 43 50 4e 4f 54 08 46 57 53 4f 0d 46 57 53 4f 00 CPNOT.FWSO.FWSO. 1010: 08 5f 50 53 43 00 14 12 5f 50 53 30 00 70 5f 50 ._PSC..._PS0.p_P 1020: 53 43 60 70 00 5f 50 53 43 14 0d 5f 50 53 33 00 SC`p._PSC.._PS3. 1030: 70 0a 03 5f 50 53 43 10 8c fb 04 5f 53 42 5f 5b p.._PSC...._SB_[ 1040: 82 4f 3e 41 4d 57 30 08 5f 48 49 44 0d 70 6e 70 .O>AMW0._HID.pnp 1050: 30 63 31 34 00 08 5f 55 49 44 00 08 5f 57 44 47 0c14.._UID.._WDG 1060: 11 3f 0a 3c a7 1d 85 2e 53 d0 5f 49 9d fa 1a 4a .?.<....S._I...J 1070: d6 2e 6a 86 41 43 01 00 3b 6d 43 71 dd fb 72 4c ..j.AC..;mCq..rL 1080: bc b8 43 5b fe 0d 64 f9 42 43 01 00 21 12 90 05 ..C[..d.BC..!... 1090: 66 d5 d1 11 b2 f0 00 a0 c9 06 29 10 42 41 01 00 f.........).BA.. 10a0: 08 53 54 41 43 11 07 0a 04 01 14 03 00 14 1f 57 .STAC..........W 10b0: 51 41 43 01 70 0d 4d 58 4d 54 43 43 6f 6e 66 69 QAC.p.MXMTCConfi 10c0: 67 44 61 74 61 00 5b 31 a4 53 54 41 43 08 53 54 gData.[1.STAC.ST 10d0: 42 43 11 07 0a 04 01 00 00 00 14 34 57 51 42 43 BC.........4WQBC 10e0: 01 70 0d 47 65 74 20 4d 58 4d 54 43 43 6f 6e 74 .p.Get MXMTCCont 10f0: 72 6f 6c 44 61 74 61 3a 20 53 54 42 43 20 3d 20 rolData: STBC = 1100: 00 5b 31 70 53 54 42 43 5b 31 a4 53 54 42 43 14 .[1pSTBC[1.STBC. 1110: 47 06 57 53 42 43 02 70 69 53 54 42 43 70 0d 53 G.WSBC.piSTBCp.S 1120: 65 74 20 4d 58 4d 54 43 43 6f 6e 74 72 6f 6c 44 et MXMTCControlD 1130: 61 74 61 3a 20 53 54 42 43 20 3d 20 00 5b 31 70 ata: STBC = .[1p 1140: 53 54 42 43 5b 31 a0 30 93 5e 5e 2f 03 50 43 49 STBC[1.0.^^/.PCI 1150: 30 4c 50 43 42 45 43 4f 4b 01 70 83 88 53 54 42 0LPCBECOK.p..STB 1160: 43 01 00 5e 5e 2f 04 50 43 49 30 4c 50 43 42 45 C..^^/.PCI0LPCBE 1170: 43 30 5f 53 4b 54 43 08 57 51 42 41 11 43 2b 0b C0_SKTC.WQBA.C+. 1180: ae 02 46 4f 4d 42 01 00 00 00 9e 02 00 00 c0 0b ..FOMB.......... 1190: 00 00 44 53 00 01 1a 7d da 54 28 d9 85 00 01 06 ..DS...}.T(..... 11a0: 18 42 10 07 10 0a 4b 61 02 c9 21 52 3c 18 94 05 .B....Ka..!R<... 11b0: 10 43 88 57 04 44 04 84 bc 0a b0 29 c0 24 88 fa .C.W.D.....).$.. 11c0: f7 87 28 09 0e 25 04 42 12 05 98 17 a0 5b 80 61 ..(..%.B.....[.a 11d0: 01 b6 05 98 16 e0 18 92 4a 03 a7 04 96 02 21 a1 ........J.....!. 11e0: 02 94 0b f0 2d 40 3b a2 24 0b b0 0c 23 02 8f 82 ....-@;.$...#... 11f0: a1 71 68 ec 30 2c 13 4c 83 38 8c b2 91 45 60 dc .qh.0,.L.8...E`. 1200: 4e 05 c8 15 20 4c 80 78 54 61 34 07 45 e0 42 63 N... L.xTa4.E.Bc 1210: 64 40 c8 a3 00 ab a3 d0 a4 12 d8 bd 00 65 02 2c d@...........e., 1220: 0a 10 27 c0 9a 00 63 48 32 28 40 9b 00 5b 20 42 ..'...cH2(@..[ B 1230: 0f d4 19 8a 46 70 02 51 6a 46 11 48 ac 1a 01 85 ....Fp.QjF.H.... 1240: 12 34 46 b0 10 81 c2 86 37 46 98 03 88 d1 fe 20 .4F.....7F..... 1250: 48 20 05 e3 66 91 46 83 1a 6b 82 63 f7 68 4e b8 H ..f.F..k.c.hN. 1260: 73 01 d2 e7 26 90 a3 3b b8 3a 07 4d 86 c7 b0 1e s...&..;.:.M.... 1270: 06 d8 29 00 ef 1a 50 d3 3f 78 26 08 0e 35 44 8f ..)...P.?x&..5D. 1280: 3a dc 09 1c fb 91 30 88 b3 3b 6e ac c3 c9 68 d0 :.....0..;n...h. 1290: a5 0a 30 7b 00 d0 d0 12 9c f6 99 84 7e 0f 38 9f ..0{........~.8. 12a0: 9e 21 89 fc 41 a0 46 e6 ff 3f b4 c7 78 5a 31 43 .!..A.F..?..xZ1C 12b0: 3e 0b 1c 16 13 0b a1 4d 6a 3c 40 40 e1 d1 40 08 >......Mj<@@..@. 12c0: 6f 06 9e af 09 46 86 90 93 f1 a0 06 e0 41 d7 3a o....F.......A.: 12d0: 32 8d 27 a6 21 cf e8 00 22 bf 32 78 0c 41 02 f9 2.'.!...".2x.A.. 12e0: c4 60 b8 c7 81 13 78 02 f0 59 40 10 92 00 21 51 .`....x..Y@...!Q 12f0: e3 a7 47 08 7e 7a 78 93 30 28 1f d2 99 f9 90 e1 ..G.~zx.0(...... 1300: 11 c2 07 c4 7b 9f 3b 19 c1 29 7b a4 e0 b0 7e 0e ....{.;..){...~. 1310: 20 c0 af 0f 8f 0d 09 7c ae 08 8c 1d aa fd 0a 40 ......|.......@ 1320: 08 1e ed 51 e0 54 23 1c 2d 78 08 8a 1c 03 4a cc ...Q.T#.-x....J. 1330: 18 50 03 38 85 d0 e7 73 04 47 14 25 f6 21 19 da .P.8...s.G.%.!.. 1340: 08 e1 1f 39 4e c1 f7 8b 23 3d ad 23 78 91 f0 08 ...9N...#=.#x... 1350: 30 e1 ce 28 a8 38 30 f4 ff 7f 4c 01 dc 7a 3b a6 0..(.80...L..z;. 1360: 80 3e c0 31 05 50 fc ff 3f a6 00 87 a8 c7 14 f4 .>.1.P..?....... 1370: 40 0c 7c 2e a1 0d ff 96 c1 8e 03 87 74 6a 8f 28 @.|.........tj.( 1380: 80 29 79 47 14 50 8c 14 d6 f1 04 18 05 3c 9b a0 .)yG.P.......<.. 1390: 22 1d 4f 80 ce ff ff 78 02 58 b8 9a bc 92 84 7d ".O....x.X.....} 13a0: 1e 78 1d 89 14 e3 41 e2 b5 e4 c1 24 46 98 08 8f .x....A....$F... 13b0: 27 1e 47 c0 b7 82 28 91 8e 3e c4 83 49 28 63 3e '.G...(..>..I(c> 13c0: a3 84 89 f9 04 70 22 ef 27 46 0a 73 2a 8f 27 2c .....p".'F.s*.', 13d0: c4 f1 04 a0 85 e2 e3 09 3a 2c 84 fe ff c7 13 dc ........:,...... 13e0: e1 c1 a7 0c fc 85 0c c6 f9 04 30 24 f0 7c 02 ca ..........0$.|.. 13f0: db 18 e6 80 02 8c 14 da f4 a9 d1 a8 55 83 32 35 ............U.25 1400: ca 34 a8 d5 a7 52 63 c6 4c 9c 52 bc 6c 8d df f2 .4...Rc.L.R.l... 1410: 9e 09 02 b1 20 0a 81 38 cc f3 42 20 96 a2 01 84 .... ..8..B .... 1420: 85 06 a1 42 a9 05 e2 98 20 34 92 0a 10 f6 ff 07 ...B.... 4...... 1430: 5b 82 1b 4c 49 44 30 08 5f 48 49 44 0c 41 d0 0c [..LID0._HID.A.. 1440: 0d 14 0b 5f 4c 49 44 00 a4 4c 50 4f 4c 5b 82 0f ..._LID..LPOL[.. 1450: 50 57 52 42 08 5f 48 49 44 0c 41 d0 0c 0c 5b 82 PWRB._HID.A...[. 1460: 84 b9 04 50 43 49 30 14 09 5f 53 33 44 00 a4 0a ...PCI0.._S3D... 1470: 02 14 09 5f 53 34 44 00 a4 0a 02 08 5f 48 49 44 ..._S4D....._HID 1480: 0c 41 d0 0a 08 08 5f 43 49 44 0c 41 d0 0a 03 5b .A...._CID.A...[ 1490: 82 43 0e 4d 43 48 43 08 5f 41 44 52 00 5b 80 48 .C.MCHC._ADR.[.H 14a0: 42 55 53 02 0a 40 0a c0 5b 81 4a 0c 48 42 55 53 BUS..@..[.J.HBUS 14b0: 03 45 50 45 4e 01 00 0b 45 50 42 52 14 00 20 4d .EPEN...EPBR.. M 14c0: 48 45 4e 01 00 0d 4d 48 42 52 12 00 40 0a 50 58 HEN...MHBR..@.PX 14d0: 45 4e 01 50 58 53 5a 02 00 17 50 58 42 52 06 00 EN.PXSZ...PXBR.. 14e0: 20 44 49 45 4e 01 00 0b 44 49 42 52 14 00 20 49 DIEN...DIBR.. I 14f0: 50 45 4e 01 00 0b 49 50 42 52 14 00 40 0e 00 04 PEN...IPBR..@... 1500: 50 4d 30 48 02 00 02 50 4d 31 4c 02 00 02 50 4d PM0H...PM1L...PM 1510: 31 48 02 00 02 50 4d 32 4c 02 00 02 50 4d 32 48 1H...PM2L...PM2H 1520: 02 00 02 50 4d 33 4c 02 00 02 50 4d 33 48 02 00 ...PM3L...PM3H.. 1530: 02 50 4d 34 4c 02 00 02 50 4d 34 48 02 00 02 50 .PM4L...PM4H...P 1540: 4d 35 4c 02 00 02 50 4d 35 48 02 00 02 50 4d 36 M5L...PM5H...PM6 1550: 4c 02 00 02 50 4d 36 48 02 00 02 00 07 48 45 4e L...PM6H.....HEN 1560: 41 01 00 40 05 54 55 55 44 10 00 40 06 00 04 54 A..@.TUUD..@...T 1570: 4c 55 44 0c 08 42 55 46 30 11 4d 20 0b 08 02 88 LUD..BUF0.M .... 1580: 0d 00 02 0c 00 00 00 00 00 ff 00 00 00 00 01 87 ................ 1590: 17 00 01 0c 03 00 00 00 00 00 00 00 00 f7 0c 00 ................ 15a0: 00 00 00 00 00 f8 0c 00 00 47 01 f8 0c f8 0c 01 .........G...... 15b0: 08 87 17 00 01 0c 03 00 00 00 00 00 0d 00 00 ff ................ 15c0: ff 00 00 00 00 00 00 00 f3 00 00 87 17 00 00 0c ................ 15d0: 03 00 00 00 00 00 00 0a 00 ff ff 0b 00 00 00 00 ................ 15e0: 00 00 00 02 00 87 17 00 00 0c 03 00 00 00 00 00 ................ 15f0: 00 0c 00 ff 3f 0c 00 00 00 00 00 00 40 00 00 87 ....?.......@... 1600: 17 00 00 0c 03 00 00 00 00 00 40 0c 00 ff 7f 0c ..........@..... 1610: 00 00 00 00 00 00 40 00 00 87 17 00 00 0c 03 00 ......@......... 1620: 00 00 00 00 80 0c 00 ff bf 0c 00 00 00 00 00 00 ................ 1630: 40 00 00 87 17 00 00 0c 03 00 00 00 00 00 c0 0c @............... 1640: 00 ff ff 0c 00 00 00 00 00 00 40 00 00 87 17 00 ..........@..... 1650: 00 0c 03 00 00 00 00 00 00 0d 00 ff 3f 0d 00 00 ............?... 1660: 00 00 00 00 40 00 00 87 17 00 00 0c 03 00 00 00 ....@........... 1670: 00 00 40 0d 00 ff 7f 0d 00 00 00 00 00 00 40 00 ..@...........@. 1680: 00 87 17 00 00 0c 03 00 00 00 00 00 80 0d 00 ff ................ 1690: bf 0d 00 00 00 00 00 00 40 00 00 87 17 00 00 0c ........@....... 16a0: 03 00 00 00 00 00 c0 0d 00 ff ff 0d 00 00 00 00 ................ 16b0: 00 00 40 00 00 87 17 00 00 0c 03 00 00 00 00 00 ..@............. 16c0: 00 0e 00 ff 3f 0e 00 00 00 00 00 00 40 00 00 87 ....?.......@... 16d0: 17 00 00 0c 03 00 00 00 00 00 40 0e 00 ff 7f 0e ..........@..... 16e0: 00 00 00 00 00 00 40 00 00 87 17 00 00 0c 03 00 ......@......... 16f0: 00 00 00 00 80 0e 00 ff bf 0e 00 00 00 00 00 00 ................ 1700: 40 00 00 87 17 00 00 0c 03 00 00 00 00 00 c0 0e @............... 1710: 00 ff ff 0e 00 00 00 00 00 00 40 00 00 87 17 00 ..........@..... 1720: 00 0c 03 00 00 00 00 00 00 0f 00 ff ff 0f 00 00 ................ 1730: 00 00 00 00 00 01 00 87 17 00 00 0c 03 00 00 00 ................ 1740: 00 00 00 00 00 ff ff ff df 00 00 00 00 00 00 00 ................ 1750: 00 87 17 00 00 0c 03 00 00 00 00 00 00 00 f0 ff ................ 1760: ff bf fe 00 00 00 00 00 00 c0 0e 87 17 00 00 0c ................ 1770: 03 00 00 00 00 00 00 d4 fe ff 4f d4 fe 00 00 00 ..........O..... 1780: 00 00 00 00 00 79 00 14 4b 3d 5f 43 52 53 08 a0 .....y..K=_CRS.. 1790: 1c 5e 2e 4d 43 48 43 50 4d 31 4c 8a 42 55 46 30 .^.MCHCPM1L.BUF0 17a0: 0a 7c 43 30 4c 4e 70 00 43 30 4c 4e a0 1f 93 5e .|C0LNp.C0LN...^ 17b0: 2e 4d 43 48 43 50 4d 31 4c 01 8d 42 55 46 30 0b .MCHCPM1L..BUF0. 17c0: 58 03 43 30 52 57 70 00 43 30 52 57 a0 1c 5e 2e X.C0RWp.C0RW..^. 17d0: 4d 43 48 43 50 4d 31 48 8a 42 55 46 30 0a 96 43 MCHCPM1H.BUF0..C 17e0: 34 4c 4e 70 00 43 34 4c 4e a0 1f 93 5e 2e 4d 43 4LNp.C4LN...^.MC 17f0: 48 43 50 4d 31 48 01 8d 42 55 46 30 0b 28 04 43 HCPM1H..BUF0.(.C 1800: 34 52 57 70 00 43 34 52 57 a0 1c 5e 2e 4d 43 48 4RWp.C4RW..^.MCH 1810: 43 50 4d 32 4c 8a 42 55 46 30 0a b0 43 38 4c 4e CPM2L.BUF0..C8LN 1820: 70 00 43 38 4c 4e a0 1f 93 5e 2e 4d 43 48 43 50 p.C8LN...^.MCHCP 1830: 4d 32 4c 01 8d 42 55 46 30 0b f8 04 43 38 52 57 M2L..BUF0...C8RW 1840: 70 00 43 38 52 57 a0 1c 5e 2e 4d 43 48 43 50 4d p.C8RW..^.MCHCPM 1850: 32 48 8a 42 55 46 30 0a ca 43 43 4c 4e 70 00 43 2H.BUF0..CCLNp.C 1860: 43 4c 4e a0 1f 93 5e 2e 4d 43 48 43 50 4d 32 48 CLN...^.MCHCPM2H 1870: 01 8d 42 55 46 30 0b c8 05 43 43 52 57 70 00 43 ..BUF0...CCRWp.C 1880: 43 52 57 a0 1c 5e 2e 4d 43 48 43 50 4d 33 4c 8a CRW..^.MCHCPM3L. 1890: 42 55 46 30 0a e4 44 30 4c 4e 70 00 44 30 4c 4e BUF0..D0LNp.D0LN 18a0: a0 1f 93 5e 2e 4d 43 48 43 50 4d 33 4c 01 8d 42 ...^.MCHCPM3L..B 18b0: 55 46 30 0b 98 06 44 30 52 57 70 00 44 30 52 57 UF0...D0RWp.D0RW 18c0: a0 1c 5e 2e 4d 43 48 43 50 4d 33 48 8a 42 55 46 ..^.MCHCPM3H.BUF 18d0: 30 0a fe 44 34 4c 4e 70 00 44 34 4c 4e a0 1f 93 0..D4LNp.D4LN... 18e0: 5e 2e 4d 43 48 43 50 4d 33 48 01 8d 42 55 46 30 ^.MCHCPM3H..BUF0 18f0: 0b 68 07 44 34 52 57 70 00 44 34 52 57 a0 1d 5e .h.D4RWp.D4RW..^ 1900: 2e 4d 43 48 43 50 4d 34 4c 8a 42 55 46 30 0b 18 .MCHCPM4L.BUF0.. 1910: 01 44 38 4c 4e 70 00 44 38 4c 4e a0 1f 93 5e 2e .D8LNp.D8LN...^. 1920: 4d 43 48 43 50 4d 34 4c 01 8d 42 55 46 30 0b 38 MCHCPM4L..BUF0.8 1930: 08 44 38 52 57 70 00 44 38 52 57 a0 1d 5e 2e 4d .D8RWp.D8RW..^.M 1940: 43 48 43 50 4d 34 48 8a 42 55 46 30 0b 32 01 44 CHCPM4H.BUF0.2.D 1950: 43 4c 4e 70 00 44 43 4c 4e a0 1f 93 5e 2e 4d 43 CLNp.DCLN...^.MC 1960: 48 43 50 4d 34 48 01 8d 42 55 46 30 0b 08 09 44 HCPM4H..BUF0...D 1970: 43 52 57 70 00 44 43 52 57 a0 1d 5e 2e 4d 43 48 CRWp.DCRW..^.MCH 1980: 43 50 4d 35 4c 8a 42 55 46 30 0b 4c 01 45 30 4c CPM5L.BUF0.L.E0L 1990: 4e 70 00 45 30 4c 4e a0 1f 93 5e 2e 4d 43 48 43 Np.E0LN...^.MCHC 19a0: 50 4d 35 4c 01 8d 42 55 46 30 0b d8 09 45 30 52 PM5L..BUF0...E0R 19b0: 57 70 00 45 30 52 57 a0 1d 5e 2e 4d 43 48 43 50 Wp.E0RW..^.MCHCP 19c0: 4d 35 48 8a 42 55 46 30 0b 66 01 45 34 4c 4e 70 M5H.BUF0.f.E4LNp 19d0: 00 45 34 4c 4e a0 1f 93 5e 2e 4d 43 48 43 50 4d .E4LN...^.MCHCPM 19e0: 35 48 01 8d 42 55 46 30 0b a8 0a 45 34 52 57 70 5H..BUF0...E4RWp 19f0: 00 45 34 52 57 a0 1d 5e 2e 4d 43 48 43 50 4d 36 .E4RW..^.MCHCPM6 1a00: 4c 8a 42 55 46 30 0b 80 01 45 38 4c 4e 70 00 45 L.BUF0...E8LNp.E 1a10: 38 4c 4e a0 1f 93 5e 2e 4d 43 48 43 50 4d 36 4c 8LN...^.MCHCPM6L 1a20: 01 8d 42 55 46 30 0b 78 0b 45 38 52 57 70 00 45 ..BUF0.x.E8RWp.E 1a30: 38 52 57 a0 1d 5e 2e 4d 43 48 43 50 4d 36 48 8a 8RW..^.MCHCPM6H. 1a40: 42 55 46 30 0b 9a 01 45 43 4c 4e 70 00 45 43 4c BUF0...ECLNp.ECL 1a50: 4e a0 1f 93 5e 2e 4d 43 48 43 50 4d 36 48 01 8d N...^.MCHCPM6H.. 1a60: 42 55 46 30 0b 48 0c 45 43 52 57 70 00 45 43 52 BUF0.H.ECRWp.ECR 1a70: 57 a0 1d 5e 2e 4d 43 48 43 50 4d 30 48 8a 42 55 W..^.MCHCPM0H.BU 1a80: 46 30 0b b4 01 46 30 4c 4e 70 00 46 30 4c 4e a0 F0...F0LNp.F0LN. 1a90: 1f 93 5e 2e 4d 43 48 43 50 4d 30 48 01 8d 42 55 ..^.MCHCPM0H..BU 1aa0: 46 30 0b 18 0d 46 30 52 57 70 00 46 30 52 57 8a F0...F0RWp.F0RW. 1ab0: 42 55 46 30 0b c2 01 4d 31 4d 4e 8a 42 55 46 30 BUF0...M1MN.BUF0 1ac0: 0b c6 01 4d 31 4d 58 8a 42 55 46 30 0b ce 01 4d ...M1MX.BUF0...M 1ad0: 31 4c 4e 8a 42 55 46 30 0b dc 01 4d 32 4d 4e 8a 1LN.BUF0...M2MN. 1ae0: 42 55 46 30 0b e0 01 4d 32 4d 58 8a 42 55 46 30 BUF0...M2MX.BUF0 1af0: 0b e8 01 4d 32 4c 4e 79 5e 2e 4d 43 48 43 50 58 ...M2LNy^.MCHCPX 1b00: 42 52 0a 1a 4d 31 4d 58 7a 0c 00 00 00 10 5e 2e BR..M1MXz.....^. 1b10: 4d 43 48 43 50 58 53 5a 60 72 4d 31 4d 58 60 4d MCHCPXSZ`rM1MX`M 1b20: 32 4d 4e 72 74 4d 32 4d 58 4d 32 4d 4e 00 01 4d 2MNrtM2MXM2MN..M 1b30: 32 4c 4e 74 4d 31 4d 58 01 4d 31 4d 58 79 5e 2e 2LNtM1MX.M1MXy^. 1b40: 4d 43 48 43 54 4c 55 44 0a 14 4d 31 4d 4e 72 74 MCHCTLUD..M1MNrt 1b50: 4d 31 4d 58 4d 31 4d 4e 00 01 4d 31 4c 4e a4 42 M1MXM1MN..M1LN.B 1b60: 55 46 30 14 47 28 5f 50 52 54 00 a0 45 0f 47 50 UF0.G(_PRT..E.GP 1b70: 49 43 a4 12 4d 0e 13 12 0b 04 0c ff ff 01 00 00 IC..M........... 1b80: 00 0a 10 12 0b 04 0c ff ff 02 00 00 00 0a 10 12 ................ 1b90: 0b 04 0c ff ff 07 00 00 00 0a 10 12 0b 04 0c ff ................ 1ba0: ff 19 00 00 00 0a 14 12 0b 04 0c ff ff 1a 00 00 ................ 1bb0: 00 0a 10 12 0b 04 0c ff ff 1a 00 01 00 0a 15 12 ................ 1bc0: 0c 04 0c ff ff 1a 00 0a 02 00 0a 12 12 0b 04 0c ................ 1bd0: ff ff 1b 00 00 00 0a 16 12 0b 04 0c ff ff 1c 00 ................ 1be0: 00 00 0a 11 12 0b 04 0c ff ff 1c 00 01 00 0a 10 ................ 1bf0: 12 0c 04 0c ff ff 1c 00 0a 02 00 0a 12 12 0c 04 ................ 1c00: 0c ff ff 1c 00 0a 03 00 0a 13 12 0b 04 0c ff ff ................ 1c10: 1d 00 00 00 0a 17 12 0b 04 0c ff ff 1d 00 01 00 ................ 1c20: 0a 13 12 0c 04 0c ff ff 1d 00 0a 02 00 0a 12 12 ................ 1c30: 0b 04 0c ff ff 1f 00 00 00 0a 13 12 0b 04 0c ff ................ 1c40: ff 1f 00 01 00 0a 13 12 0c 04 0c ff ff 1f 00 0a ................ 1c50: 02 00 0a 13 12 0c 04 0c ff ff 1f 00 0a 03 00 0a ................ 1c60: 10 a1 49 18 a4 12 45 18 13 12 13 04 0c ff ff 01 ..I...E......... 1c70: 00 00 5e 2e 4c 50 43 42 4c 4e 4b 41 00 12 13 04 ..^.LPCBLNKA.... 1c80: 0c ff ff 02 00 00 5e 2e 4c 50 43 42 4c 4e 4b 41 ......^.LPCBLNKA 1c90: 00 12 13 04 0c ff ff 07 00 00 5e 2e 4c 50 43 42 ..........^.LPCB 1ca0: 4c 4e 4b 41 00 12 13 04 0c ff ff 19 00 00 5e 2e LNKA..........^. 1cb0: 4c 50 43 42 4c 4e 4b 45 00 12 13 04 0c ff ff 1a LPCBLNKE........ 1cc0: 00 00 5e 2e 4c 50 43 42 4c 4e 4b 41 00 12 13 04 ..^.LPCBLNKA.... 1cd0: 0c ff ff 1a 00 01 5e 2e 4c 50 43 42 4c 4e 4b 46 ......^.LPCBLNKF 1ce0: 00 12 14 04 0c ff ff 1a 00 0a 02 5e 2e 4c 50 43 ...........^.LPC 1cf0: 42 4c 4e 4b 43 00 12 13 04 0c ff ff 1b 00 00 5e BLNKC..........^ 1d00: 2e 4c 50 43 42 4c 4e 4b 47 00 12 13 04 0c ff ff .LPCBLNKG....... 1d10: 1c 00 00 5e 2e 4c 50 43 42 4c 4e 4b 42 00 12 13 ...^.LPCBLNKB... 1d20: 04 0c ff ff 1c 00 01 5e 2e 4c 50 43 42 4c 4e 4b .......^.LPCBLNK 1d30: 41 00 12 14 04 0c ff ff 1c 00 0a 02 5e 2e 4c 50 A...........^.LP 1d40: 43 42 4c 4e 4b 43 00 12 14 04 0c ff ff 1c 00 0a CBLNKC.......... 1d50: 03 5e 2e 4c 50 43 42 4c 4e 4b 44 00 12 13 04 0c .^.LPCBLNKD..... 1d60: ff ff 1d 00 00 5e 2e 4c 50 43 42 4c 4e 4b 48 00 .....^.LPCBLNKH. 1d70: 12 13 04 0c ff ff 1d 00 01 5e 2e 4c 50 43 42 4c .........^.LPCBL 1d80: 4e 4b 44 00 12 14 04 0c ff ff 1d 00 0a 02 5e 2e NKD...........^. 1d90: 4c 50 43 42 4c 4e 4b 43 00 12 13 04 0c ff ff 1f LPCBLNKC........ 1da0: 00 00 5e 2e 4c 50 43 42 4c 4e 4b 44 00 12 13 04 ..^.LPCBLNKD.... 1db0: 0c ff ff 1f 00 01 5e 2e 4c 50 43 42 4c 4e 4b 44 ......^.LPCBLNKD 1dc0: 00 12 14 04 0c ff ff 1f 00 0a 02 5e 2e 4c 50 43 ...........^.LPC 1dd0: 42 4c 4e 4b 44 00 12 14 04 0c ff ff 1f 00 0a 03 BLNKD........... 1de0: 5e 2e 4c 50 43 42 4c 4e 4b 41 00 5b 82 40 14 50 ^.LPCBLNKA.[.@.P 1df0: 44 52 43 08 5f 48 49 44 0c 41 d0 0c 02 08 5f 55 DRC._HID.A...._U 1e00: 49 44 01 08 42 55 46 30 11 46 06 0a 62 86 09 00 ID..BUF0.F..b... 1e10: 01 00 00 00 00 00 40 00 00 86 09 00 01 00 00 00 ......@......... 1e20: 00 00 40 00 00 86 09 00 01 00 00 00 00 00 10 00 ..@............. 1e30: 00 86 09 00 01 00 00 00 00 00 10 00 00 86 09 00 ................ 1e40: 01 00 00 00 00 00 00 00 00 86 09 00 01 00 00 d2 ................ 1e50: fe 00 00 02 00 86 09 00 01 00 00 d4 fe 00 50 00 ..............P. 1e60: 00 86 09 00 01 00 50 d4 fe 00 b0 04 00 79 00 14 ......P......y.. 1e70: 4d 0b 5f 43 52 53 08 8a 42 55 46 30 0a 04 52 42 M._CRS..BUF0..RB 1e80: 52 30 79 5e 5e 2e 4c 50 43 42 52 43 42 41 0a 0e R0y^^.LPCBRCBA.. 1e90: 52 42 52 30 8a 42 55 46 30 0a 10 4d 42 52 30 79 RBR0.BUF0..MBR0y 1ea0: 5e 5e 2e 4d 43 48 43 4d 48 42 52 0a 0e 4d 42 52 ^^.MCHCMHBR..MBR 1eb0: 30 8a 42 55 46 30 0a 1c 44 42 52 30 79 5e 5e 2e 0.BUF0..DBR0y^^. 1ec0: 4d 43 48 43 44 49 42 52 0a 0c 44 42 52 30 8a 42 MCHCDIBR..DBR0.B 1ed0: 55 46 30 0a 28 45 42 52 30 79 5e 5e 2e 4d 43 48 UF0.(EBR0y^^.MCH 1ee0: 43 45 50 42 52 0a 0c 45 42 52 30 8a 42 55 46 30 CEPBR..EBR0.BUF0 1ef0: 0a 34 58 42 52 30 79 5e 5e 2e 4d 43 48 43 50 58 .4XBR0y^^.MCHCPX 1f00: 42 52 0a 1a 58 42 52 30 8a 42 55 46 30 0a 38 58 BR..XBR0.BUF0.8X 1f10: 53 5a 30 7a 0c 00 00 00 10 5e 5e 2e 4d 43 48 43 SZ0z.....^^.MCHC 1f20: 50 58 53 5a 58 53 5a 30 a4 42 55 46 30 5b 82 4d PXSZXSZ0.BUF0[.M 1f30: 50 50 45 47 50 08 5f 41 44 52 0c 00 00 01 00 14 PPEGP._ADR...... 1f40: 41 09 5f 50 52 54 00 a0 33 47 50 49 43 a4 12 2c A._PRT..3GPIC.., 1f50: 04 12 09 04 0b ff ff 00 00 0a 10 12 09 04 0b ff ................ 1f60: ff 01 00 0a 11 12 0a 04 0b ff ff 0a 02 00 0a 12 ................ 1f70: 12 0a 04 0b ff ff 0a 03 00 0a 13 a1 45 05 a4 12 ............E... 1f80: 41 05 04 12 12 04 0b ff ff 00 5e 5e 2e 4c 50 43 A.........^^.LPC 1f90: 42 4c 4e 4b 41 00 12 12 04 0b ff ff 01 5e 5e 2e BLNKA........^^. 1fa0: 4c 50 43 42 4c 4e 4b 42 00 12 13 04 0b ff ff 0a LPCBLNKB........ 1fb0: 02 5e 5e 2e 4c 50 43 42 4c 4e 4b 43 00 12 13 04 .^^.LPCBLNKC.... 1fc0: 0b ff ff 0a 03 5e 5e 2e 4c 50 43 42 4c 4e 4b 44 .....^^.LPCBLNKD 1fd0: 00 5b 82 49 46 56 47 41 5f 08 5f 41 44 52 00 08 .[.IFVGA_._ADR.. 1fe0: 53 57 49 54 01 08 43 52 54 41 01 08 4c 43 44 41 SWIT..CRTA..LCDA 1ff0: 01 08 54 56 41 41 01 08 56 4c 44 46 01 5b 80 56 ..TVAA..VLDF.[.V 2000: 49 44 53 02 00 0a c8 5b 81 0b 56 49 44 53 03 56 IDS....[..VIDS.V 2010: 44 49 44 20 14 09 5f 53 54 41 00 a4 0a 0f 08 5f DID .._STA....._ 2020: 50 53 43 00 14 0c 5f 50 53 30 00 70 00 5f 50 53 PSC..._PS0.p._PS 2030: 43 14 0c 5f 50 53 31 00 70 01 5f 50 53 43 14 0d C.._PS1.p._PSC.. 2040: 5f 50 53 33 00 70 0a 03 5f 50 53 43 14 10 5f 44 _PS3.p.._PSC.._D 2050: 4f 53 01 70 7b 68 0a 03 00 53 57 49 54 14 17 5f OS.p{h...SWIT.._ 2060: 44 4f 44 00 a4 12 0f 03 0c 00 01 01 00 0c 10 01 DOD............. 2070: 01 00 0b 00 02 5b 82 4d 08 43 52 54 5f 14 0a 5f .....[.M.CRT_.._ 2080: 41 44 52 00 a4 0b 00 01 14 41 06 5f 44 43 53 00 ADR......A._DCS. 2090: 5e 5e 5e 5e 2e 4c 50 43 42 50 48 53 53 0a 0c 70 ^^^^.LPCBPHSS..p 20a0: 43 41 44 4c 60 70 43 53 54 45 61 7b 60 0a 02 60 CADL`pCSTEa{`..` 20b0: 7b 61 0a 02 61 a0 08 60 70 01 43 52 54 41 a1 07 {a..a..`p.CRTA.. 20c0: 70 00 43 52 54 41 a0 13 43 52 54 41 a0 08 93 61 p.CRTA..CRTA...a 20d0: 0a 02 a4 0a 1f a1 04 a4 0a 1d a1 0f a0 08 93 61 ...............a 20e0: 0a 02 a4 0a 0f a1 04 a4 0a 0d 14 12 5f 44 47 53 ............_DGS 20f0: 00 a0 07 43 52 54 41 a4 01 a1 03 a4 00 14 06 5f ...CRTA........_ 2100: 44 53 53 01 5b 82 47 0e 4c 43 44 5f 14 0a 5f 41 DSS.[.G.LCD_.._A 2110: 44 52 00 a4 0b 10 01 14 4d 05 5f 44 43 53 00 5e DR......M._DCS.^ 2120: 5e 5e 5e 2e 4c 50 43 42 50 48 53 53 0a 0c 70 43 ^^^.LPCBPHSS..pC 2130: 41 44 4c 60 70 43 53 54 45 61 7b 60 01 60 7b 61 ADL`pCSTEa{`.`{a 2140: 01 61 a0 08 60 70 01 4c 43 44 41 a1 07 70 00 4c .a..`p.LCDA..p.L 2150: 43 44 41 a0 12 4c 43 44 41 a0 07 93 61 01 a4 0a CDA..LCDA...a... 2160: 1f a1 04 a4 0a 1d a1 0e a0 07 93 61 01 a4 0a 0f ...........a.... 2170: a1 04 a4 0a 0d 14 12 5f 44 47 53 00 a0 07 4c 43 ......._DGS...LC 2180: 44 41 a4 01 a1 03 a4 00 14 06 5f 44 53 53 01 14 DA........_DSS.. 2190: 1d 5f 42 43 4c 00 a4 12 15 0a 0a 46 0a 28 00 0a ._BCL......F.(.. 21a0: 0a 0a 14 0a 1e 0a 28 0a 32 0a 3c 0a 46 14 20 5f ......(.2.<.F. _ 21b0: 42 43 4d 01 78 68 0a 0a 60 61 70 61 5e 5e 5e 5e BCM.xh..`apa^^^^ 21c0: 2f 03 4c 50 43 42 45 43 30 5f 42 52 54 53 14 1e /.LPCBEC0_BRTS.. 21d0: 5f 42 51 43 00 77 5e 5e 5e 5e 2f 03 4c 50 43 42 _BQC.w^^^^/.LPCB 21e0: 45 43 30 5f 42 52 54 53 0a 0a 60 a4 60 5b 82 4d EC0_BRTS..`.`[.M 21f0: 08 54 56 5f 5f 14 0a 5f 41 44 52 00 a4 0b 00 02 .TV__.._ADR..... 2200: 14 41 06 5f 44 43 53 00 5e 5e 5e 5e 2e 4c 50 43 .A._DCS.^^^^.LPC 2210: 42 50 48 53 53 0a 0c 70 43 41 44 4c 60 70 43 53 BPHSS..pCADL`pCS 2220: 54 45 61 7b 60 0a 04 60 7b 61 0a 04 61 a0 08 60 TEa{`..`{a..a..` 2230: 70 01 54 56 41 41 a1 07 70 00 54 56 41 41 a0 13 p.TVAA..p.TVAA.. 2240: 54 56 41 41 a0 08 93 61 0a 04 a4 0a 1f a1 04 a4 TVAA...a........ 2250: 0a 1d a1 0f a0 08 93 61 0a 04 a4 0a 0f a1 04 a4 .......a........ 2260: 0a 0d 14 12 5f 44 47 53 00 a0 07 54 56 41 41 a4 ...._DGS...TVAA. 2270: 01 a1 03 a4 00 14 06 5f 44 53 53 01 14 49 10 44 ......._DSS..I.D 2280: 53 53 57 00 a0 4a 0e 93 53 57 49 54 00 5e 5e 5e SSW..J..SWIT.^^^ 2290: 2e 4c 50 43 42 50 48 53 53 0a 0c 70 43 41 44 4c .LPCBPHSS..pCADL 22a0: 60 70 43 53 54 45 61 a0 16 94 61 01 7b 60 61 56 `pCSTEa...a.{`aV 22b0: 4c 44 46 7b 56 4c 44 46 0a fe 56 4c 44 46 a0 43 LDF{VLDF..VLDF.C 22c0: 0a 56 4c 44 46 a0 27 93 60 0a 09 a0 0b 93 61 0a .VLDF.'.`.....a. 22d0: 08 53 54 42 4c 0a 02 a0 0a 93 61 01 53 54 42 4c .STBL.....a.STBL 22e0: 0a 03 a0 0a 93 61 0a 09 53 54 42 4c 01 a0 28 93 .....a..STBL..(. 22f0: 60 0a 0a a0 0b 93 61 0a 08 53 54 42 4c 0a 05 a0 `.....a..STBL... 2300: 0a 93 61 0a 02 53 54 42 4c 01 a0 0b 93 61 0a 0a ..a..STBL....a.. 2310: 53 54 42 4c 0a 04 a0 4b 04 93 60 0a 0b a0 0b 93 STBL...K..`..... 2320: 61 0a 08 53 54 42 4c 0a 02 a0 0b 93 61 0a 09 53 a..STBL.....a..S 2330: 54 42 4c 0a 05 a0 0a 93 61 01 53 54 42 4c 0a 03 TBL.....a.STBL.. 2340: a0 0b 93 61 0a 0a 53 54 42 4c 0a 04 a0 0a 93 61 ...a..STBL.....a 2350: 0a 02 53 54 42 4c 01 a0 0a 93 61 0a 0b 53 54 42 ..STBL....a..STB 2360: 4c 01 a1 0c 70 01 56 4c 44 46 53 54 42 4c 01 a1 L...p.VLDFSTBL.. 2370: 16 a0 14 93 53 57 49 54 01 5e 5e 5e 2e 4c 50 43 ....SWIT.^^^.LPC 2380: 42 50 48 53 53 01 14 45 0b 53 54 42 4c 01 a0 16 BPHSS..E.STBL... 2390: 93 68 01 70 00 43 52 54 41 70 01 4c 43 44 41 70 .h.p.CRTAp.LCDAp 23a0: 00 54 56 41 41 a0 17 93 68 0a 02 70 01 43 52 54 .TVAA...h..p.CRT 23b0: 41 70 00 4c 43 44 41 70 00 54 56 41 41 a0 17 93 Ap.LCDAp.TVAA... 23c0: 68 0a 03 70 01 43 52 54 41 70 01 4c 43 44 41 70 h..p.CRTAp.LCDAp 23d0: 00 54 56 41 41 a0 17 93 68 0a 04 70 00 43 52 54 .TVAA...h..p.CRT 23e0: 41 70 00 4c 43 44 41 70 01 54 56 41 41 a0 17 93 Ap.LCDAp.TVAA... 23f0: 68 0a 05 70 00 43 52 54 41 70 01 4c 43 44 41 70 h..p.CRTAp.LCDAp 2400: 01 54 56 41 41 a0 17 93 68 0a 06 70 01 43 52 54 .TVAA...h..p.CRT 2410: 41 70 00 4c 43 44 41 70 01 54 56 41 41 a0 17 93 Ap.LCDAp.TVAA... 2420: 68 0a 07 70 01 43 52 54 41 70 01 4c 43 44 41 70 h..p.CRTAp.LCDAp 2430: 01 54 56 41 41 86 56 47 41 5f 0a 80 5b 82 42 f8 .TVAA.VGA_..[.B. 2440: 47 46 58 30 08 5f 41 44 52 0c 00 00 02 00 14 10 GFX0._ADR....... 2450: 5f 44 4f 53 01 70 7b 68 0a 07 00 44 53 45 4e 14 _DOS.p{h...DSEN. 2460: 41 26 5f 44 4f 44 00 70 00 4e 44 49 44 a0 15 92 A&_DOD.p.NDID... 2470: 93 44 49 44 4c 00 70 53 44 44 4c 44 49 44 31 44 .DIDL.pSDDLDID1D 2480: 49 44 31 a0 15 92 93 44 44 4c 32 00 70 53 44 44 ID1....DDL2.pSDD 2490: 4c 44 49 44 32 44 49 44 32 a0 15 92 93 44 44 4c LDID2DID2....DDL 24a0: 33 00 70 53 44 44 4c 44 49 44 33 44 49 44 33 a0 3.pSDDLDID3DID3. 24b0: 15 92 93 44 44 4c 34 00 70 53 44 44 4c 44 49 44 ...DDL4.pSDDLDID 24c0: 34 44 49 44 34 a0 15 92 93 44 44 4c 35 00 70 53 4DID4....DDL5.pS 24d0: 44 44 4c 44 49 44 35 44 49 44 35 a0 2c 93 4e 44 DDLDID5DID5.,.ND 24e0: 49 44 01 08 54 4d 50 31 12 07 01 0c ff ff ff ff ID..TMP1........ 24f0: 70 7d 0c 00 00 01 00 44 49 44 31 00 88 54 4d 50 p}.....DID1..TMP 2500: 31 00 00 a4 54 4d 50 31 a0 46 04 93 4e 44 49 44 1...TMP1.F..NDID 2510: 0a 02 08 54 4d 50 32 12 0c 02 0c ff ff ff ff 0c ...TMP2......... 2520: ff ff ff ff 70 7d 0c 00 00 01 00 44 49 44 31 00 ....p}.....DID1. 2530: 88 54 4d 50 32 00 00 70 7d 0c 00 00 01 00 44 49 .TMP2..p}.....DI 2540: 44 32 00 88 54 4d 50 32 01 00 a4 54 4d 50 32 a0 D2..TMP2...TMP2. 2550: 4f 05 93 4e 44 49 44 0a 03 08 54 4d 50 33 12 11 O..NDID...TMP3.. 2560: 03 0c ff ff ff ff 0c ff ff ff ff 0c ff ff ff ff ................ 2570: 70 7d 0c 00 00 01 00 44 49 44 31 00 88 54 4d 50 p}.....DID1..TMP 2580: 33 00 00 70 7d 0c 00 00 01 00 44 49 44 32 00 88 3..p}.....DID2.. 2590: 54 4d 50 33 01 00 70 7d 0c 00 00 01 00 44 49 44 TMP3..p}.....DID 25a0: 33 00 88 54 4d 50 33 0a 02 00 a4 54 4d 50 33 a0 3..TMP3....TMP3. 25b0: 48 07 93 4e 44 49 44 0a 04 08 54 4d 50 34 12 16 H..NDID...TMP4.. 25c0: 04 0c ff ff ff ff 0c ff ff ff ff 0c ff ff ff ff ................ 25d0: 0c ff ff ff ff 70 7d 0c 00 00 01 00 44 49 44 31 .....p}.....DID1 25e0: 00 88 54 4d 50 34 00 00 70 7d 0c 00 00 01 00 44 ..TMP4..p}.....D 25f0: 49 44 32 00 88 54 4d 50 34 01 00 70 7d 0c 00 00 ID2..TMP4..p}... 2600: 01 00 44 49 44 33 00 88 54 4d 50 34 0a 02 00 70 ..DID3..TMP4...p 2610: 7d 0c 00 00 01 00 44 49 44 34 00 88 54 4d 50 34 }.....DID4..TMP4 2620: 0a 03 00 a4 54 4d 50 34 a0 41 09 94 4e 44 49 44 ....TMP4.A..NDID 2630: 0a 04 08 54 4d 50 35 12 1b 05 0c ff ff ff ff 0c ...TMP5......... 2640: ff ff ff ff 0c ff ff ff ff 0c ff ff ff ff 0c ff ................ 2650: ff ff ff 70 7d 0c 00 00 01 00 44 49 44 31 00 88 ...p}.....DID1.. 2660: 54 4d 50 35 00 00 70 7d 0c 00 00 01 00 44 49 44 TMP5..p}.....DID 2670: 32 00 88 54 4d 50 35 01 00 70 7d 0c 00 00 01 00 2..TMP5..p}..... 2680: 44 49 44 33 00 88 54 4d 50 35 0a 02 00 70 7d 0c DID3..TMP5...p}. 2690: 00 00 01 00 44 49 44 34 00 88 54 4d 50 35 0a 03 ....DID4..TMP5.. 26a0: 00 70 7d 0c 00 00 01 00 44 49 44 34 00 88 54 4d .p}.....DID4..TM 26b0: 50 35 0a 04 00 a4 54 4d 50 35 a4 12 05 01 0b 00 P5....TMP5...... 26c0: 04 5b 82 43 06 44 44 30 31 14 1c 5f 41 44 52 08 .[.C.DD01.._ADR. 26d0: a0 09 93 44 49 44 31 00 a4 01 a1 0b a4 7b 0b ff ...DID1......{.. 26e0: ff 44 49 44 31 00 14 0f 5f 44 43 53 00 a4 43 44 .DID1..._DCS..CD 26f0: 44 53 44 49 44 31 14 0f 5f 44 47 53 00 a4 4e 44 DSDID1.._DGS..ND 2700: 44 53 44 49 44 31 14 1f 5f 44 53 53 01 a0 18 93 DSDID1.._DSS.... 2710: 7b 68 0c 00 00 00 c0 00 0c 00 00 00 c0 70 4e 53 {h...........pNS 2720: 54 45 43 53 54 45 5b 82 44 06 44 44 30 32 14 1d TECSTE[.D.DD02.. 2730: 5f 41 44 52 08 a0 0a 93 44 49 44 32 00 a4 0a 02 _ADR....DID2.... 2740: a1 0b a4 7b 0b ff ff 44 49 44 32 00 14 0f 5f 44 ...{...DID2..._D 2750: 43 53 00 a4 43 44 44 53 44 49 44 32 14 0f 5f 44 CS..CDDSDID2.._D 2760: 47 53 00 a4 4e 44 44 53 44 49 44 32 14 1f 5f 44 GS..NDDSDID2.._D 2770: 53 53 01 a0 18 93 7b 68 0c 00 00 00 c0 00 0c 00 SS....{h........ 2780: 00 00 c0 70 4e 53 54 45 43 53 54 45 5b 82 41 07 ...pNSTECSTE[.A. 2790: 44 44 30 33 14 1d 5f 41 44 52 08 a0 0a 93 44 49 DD03.._ADR....DI 27a0: 44 33 00 a4 0a 03 a1 0b a4 7b 0b ff ff 44 49 44 D3.......{...DID 27b0: 33 00 14 1c 5f 44 43 53 00 a0 0a 93 44 49 44 33 3..._DCS....DID3 27c0: 00 a4 0a 0b a1 0a a4 43 44 44 53 44 49 44 33 14 .......CDDSDID3. 27d0: 0f 5f 44 47 53 00 a4 4e 44 44 53 44 49 44 33 14 ._DGS..NDDSDID3. 27e0: 1f 5f 44 53 53 01 a0 18 93 7b 68 0c 00 00 00 c0 ._DSS....{h..... 27f0: 00 0c 00 00 00 c0 70 4e 53 54 45 43 53 54 45 5b ......pNSTECSTE[ 2800: 82 41 07 44 44 30 34 14 1d 5f 41 44 52 08 a0 0a .A.DD04.._ADR... 2810: 93 44 49 44 34 00 a4 0a 04 a1 0b a4 7b 0b ff ff .DID4.......{... 2820: 44 49 44 34 00 14 1c 5f 44 43 53 00 a0 0a 93 44 DID4..._DCS....D 2830: 49 44 34 00 a4 0a 0b a1 0a a4 43 44 44 53 44 49 ID4.......CDDSDI 2840: 44 34 14 0f 5f 44 47 53 00 a4 4e 44 44 53 44 49 D4.._DGS..NDDSDI 2850: 44 34 14 1f 5f 44 53 53 01 a0 18 93 7b 68 0c 00 D4.._DSS....{h.. 2860: 00 00 c0 00 0c 00 00 00 c0 70 4e 53 54 45 43 53 .........pNSTECS 2870: 54 45 5b 82 41 07 44 44 30 35 14 1d 5f 41 44 52 TE[.A.DD05.._ADR 2880: 08 a0 0a 93 44 49 44 35 00 a4 0a 05 a1 0b a4 7b ....DID5.......{ 2890: 0b ff ff 44 49 44 35 00 14 1c 5f 44 43 53 00 a0 ...DID5..._DCS.. 28a0: 0a 93 44 49 44 35 00 a4 0a 0b a1 0a a4 43 44 44 ..DID5.......CDD 28b0: 53 44 49 44 35 14 0f 5f 44 47 53 00 a4 4e 44 44 SDID5.._DGS..NDD 28c0: 53 44 49 44 35 14 1f 5f 44 53 53 01 a0 18 93 7b SDID5.._DSS....{ 28d0: 68 0c 00 00 00 c0 00 0c 00 00 00 c0 70 4e 53 54 h...........pNST 28e0: 45 43 53 54 45 14 4e 06 53 44 44 4c 01 75 4e 44 ECSTE.N.SDDL.uND 28f0: 49 44 70 7b 68 0b 0f 0f 00 60 7d 0c 00 00 00 80 IDp{h....`}..... 2900: 60 61 a0 09 93 44 49 44 4c 60 a4 61 a0 09 93 44 `a...DIDL`.a...D 2910: 44 4c 32 60 a4 61 a0 09 93 44 44 4c 33 60 a4 61 DL2`.a...DDL3`.a 2920: a0 09 93 44 44 4c 34 60 a4 61 a0 09 93 44 44 4c ...DDL4`.a...DDL 2930: 35 60 a4 61 a0 09 93 44 44 4c 36 60 a4 61 a0 09 5`.a...DDL6`.a.. 2940: 93 44 44 4c 37 60 a4 61 a0 09 93 44 44 4c 38 60 .DDL7`.a...DDL8` 2950: a4 61 a4 00 14 4a 08 43 44 44 53 01 a0 0f 93 43 .a...J.CDDS....C 2960: 41 44 4c 7b 68 0b 0f 0f 00 a4 0a 1f a0 0f 93 43 ADL{h..........C 2970: 41 4c 32 7b 68 0b 0f 0f 00 a4 0a 1f a0 0f 93 43 AL2{h..........C 2980: 41 4c 33 7b 68 0b 0f 0f 00 a4 0a 1f a0 0f 93 43 AL3{h..........C 2990: 41 4c 34 7b 68 0b 0f 0f 00 a4 0a 1f a0 0f 93 43 AL4{h..........C 29a0: 41 4c 35 7b 68 0b 0f 0f 00 a4 0a 1f a0 0f 93 43 AL5{h..........C 29b0: 41 4c 36 7b 68 0b 0f 0f 00 a4 0a 1f a0 0f 93 43 AL6{h..........C 29c0: 41 4c 37 7b 68 0b 0f 0f 00 a4 0a 1f a0 0f 93 43 AL7{h..........C 29d0: 41 4c 38 7b 68 0b 0f 0f 00 a4 0a 1f a4 0a 1d 14 AL8{h........... 29e0: 41 08 4e 44 44 53 01 a0 0e 93 4e 41 44 4c 7b 68 A.NDDS....NADL{h 29f0: 0b 0f 0f 00 a4 01 a0 0e 93 4e 44 4c 32 7b 68 0b .........NDL2{h. 2a00: 0f 0f 00 a4 01 a0 0e 93 4e 44 4c 33 7b 68 0b 0f ........NDL3{h.. 2a10: 0f 00 a4 01 a0 0e 93 4e 44 4c 34 7b 68 0b 0f 0f .......NDL4{h... 2a20: 00 a4 01 a0 0e 93 4e 44 4c 35 7b 68 0b 0f 0f 00 ......NDL5{h.... 2a30: a4 01 a0 0e 93 4e 44 4c 36 7b 68 0b 0f 0f 00 a4 .....NDL6{h..... 2a40: 01 a0 0e 93 4e 44 4c 37 7b 68 0b 0f 0f 00 a4 01 ....NDL7{h...... 2a50: a0 0e 93 4e 44 4c 38 7b 68 0b 0f 0f 00 a4 01 a4 ...NDL8{h....... 2a60: 00 14 40 07 42 52 54 4e 09 a0 14 93 7b 44 49 44 ..@.BRTN....{DID 2a70: 31 0b 00 0f 00 0b 00 04 86 44 44 30 31 68 a0 14 1........DD01h.. 2a80: 93 7b 44 49 44 32 0b 00 0f 00 0b 00 04 86 44 44 .{DID2........DD 2a90: 30 32 68 a0 14 93 7b 44 49 44 33 0b 00 0f 00 0b 02h...{DID3..... 2aa0: 00 04 86 44 44 30 33 68 a0 14 93 7b 44 49 44 34 ...DD03h...{DID4 2ab0: 0b 00 0f 00 0b 00 04 86 44 44 30 34 68 a0 14 93 ........DD04h... 2ac0: 7b 44 49 44 35 0b 00 0f 00 0b 00 04 86 44 44 30 {DID5........DD0 2ad0: 35 68 10 24 5e 5e 50 43 49 30 5b 80 4d 43 48 50 5h.$^^PCI0[.MCHP 2ae0: 02 0a 40 0a c0 5b 81 10 4d 43 48 50 00 00 40 30 ..@..[..MCHP..@0 2af0: 54 41 53 4d 0a 00 06 5b 80 49 47 44 50 02 0a 40 TASM...[.IGDP..@ 2b00: 0a c0 5b 81 45 05 49 47 44 50 00 00 40 09 00 01 ..[.E.IGDP..@... 2b10: 47 49 56 44 01 00 02 47 55 4d 41 03 00 09 00 04 GIVD...GUMA..... 2b20: 47 4d 46 4e 01 00 1b 00 40 46 41 53 4c 45 08 00 GMFN....@FASLE.. 2b30: 18 47 53 53 45 01 47 53 53 42 0e 47 53 45 53 01 .GSSE.GSSB.GSES. 2b40: 00 30 00 08 43 44 56 4c 05 00 03 00 18 4c 42 50 .0..CDVL.....LBP 2b50: 43 08 00 30 41 53 4c 53 20 5b 80 49 47 44 4d 00 C..0ASLS [.IGDM. 2b60: 41 53 4c 42 0b 00 20 5b 81 4e 16 49 47 44 4d 00 ASLB.. [.N.IGDM. 2b70: 53 49 47 4e 40 08 53 49 5a 45 20 4f 56 45 52 20 SIGN@.SIZE OVER 2b80: 53 56 45 52 40 10 56 56 45 52 40 08 47 56 45 52 SVER@.VVER@.GVER 2b90: 40 08 4d 42 4f 58 20 00 40 52 44 52 44 59 20 43 @.MBOX .@RDRDY C 2ba0: 53 54 53 20 43 45 56 54 20 00 40 0a 44 49 44 4c STS CEVT .@.DIDL 2bb0: 20 44 44 4c 32 20 44 44 4c 33 20 44 44 4c 34 20 DDL2 DDL3 DDL4 2bc0: 44 44 4c 35 20 44 44 4c 36 20 44 44 4c 37 20 44 DDL5 DDL6 DDL7 D 2bd0: 44 4c 38 20 43 50 44 4c 20 43 50 4c 32 20 43 50 DL8 CPDL CPL2 CP 2be0: 4c 33 20 43 50 4c 34 20 43 50 4c 35 20 43 50 4c L3 CPL4 CPL5 CPL 2bf0: 36 20 43 50 4c 37 20 43 50 4c 38 20 43 41 44 4c 6 CPL7 CPL8 CADL 2c00: 20 43 41 4c 32 20 43 41 4c 33 20 43 41 4c 34 20 CAL2 CAL3 CAL4 2c10: 43 41 4c 35 20 43 41 4c 36 20 43 41 4c 37 20 43 CAL5 CAL6 CAL7 C 2c20: 41 4c 38 20 4e 41 44 4c 20 4e 44 4c 32 20 4e 44 AL8 NADL NDL2 ND 2c30: 4c 33 20 4e 44 4c 34 20 4e 44 4c 35 20 4e 44 4c L3 NDL4 NDL5 NDL 2c40: 36 20 4e 44 4c 37 20 4e 44 4c 38 20 41 53 4c 50 6 NDL7 NDL8 ASLP 2c50: 20 54 49 44 58 20 43 48 50 44 20 43 4c 49 44 20 TIDX CHPD CLID 2c60: 43 44 43 4b 20 53 58 53 57 20 45 56 54 53 20 43 CDCK SXSW EVTS C 2c70: 4e 4f 54 20 4e 52 44 59 20 00 40 1e 53 43 49 45 NOT NRDY .@.SCIE 2c80: 01 47 45 46 43 04 47 58 46 43 03 47 45 53 46 08 .GEFC.GXFC.GESF. 2c90: 00 10 50 41 52 4d 20 44 53 4c 50 20 00 40 7a 41 ..PARM DSLP .@zA 2ca0: 52 44 59 20 41 53 4c 43 20 54 43 48 45 20 41 4c RDY ASLC TCHE AL 2cb0: 53 49 20 42 43 4c 50 20 50 46 49 54 20 43 42 4c SI BCLP PFIT CBL 2cc0: 56 20 42 43 4c 4d 40 14 43 50 46 4d 20 00 40 5c V BCLM@.CPFM .@\ 2cd0: 47 56 44 31 80 00 0e 08 44 42 54 42 12 32 15 00 GVD1....DBTB.2.. 2ce0: 0a 07 0a 38 0b c0 01 0b 00 0e 0a 3f 0b c7 01 0b ...8.......?.... 2cf0: 07 0e 0b f8 01 0b 38 0e 0b c0 0f 00 00 00 00 00 ......8......... 2d00: 0b 00 70 0b 07 70 0b 38 70 0b c0 71 0b 00 7e 08 ..p..p.8p..q..~. 2d10: 43 44 43 54 12 23 03 12 0a 03 0a c8 0b 40 01 0b CDCT.#.......@.. 2d20: 90 01 12 0a 03 0a c8 0b 4d 01 0b 90 01 12 0a 03 ........M....... 2d30: 0a de 0b 4d 01 0b 7d 01 08 53 55 43 43 01 08 4e ...M..}..SUCC..N 2d40: 56 4c 44 0a 02 08 43 52 49 54 0a 04 08 4e 43 52 VLD...CRIT...NCR 2d50: 54 0a 06 14 4c 4a 47 53 43 49 08 14 44 1e 47 42 T...LJGSCI..D.GB 2d60: 44 41 08 a0 1a 93 47 45 53 46 00 70 0b 79 02 50 DA....GESF.p.y.P 2d70: 41 52 4d 70 00 47 45 53 46 a4 53 55 43 43 a0 1a ARMp.GESF.SUCC.. 2d80: 93 47 45 53 46 01 70 0b 40 02 50 41 52 4d 70 00 .GESF.p.@.PARMp. 2d90: 47 45 53 46 a4 53 55 43 43 a0 47 04 93 47 45 53 GESF.SUCC.G..GES 2da0: 46 0a 04 7b 50 41 52 4d 0c 00 00 ff ef 50 41 52 F..{PARM.....PAR 2db0: 4d 7b 50 41 52 4d 79 83 88 44 42 54 42 49 42 54 M{PARMy..DBTBIBT 2dc0: 54 00 0a 10 00 50 41 52 4d 7d 49 42 54 54 50 41 T....PARM}IBTTPA 2dd0: 52 4d 50 41 52 4d 70 00 47 45 53 46 a4 53 55 43 RMPARMp.GESF.SUC 2de0: 43 a0 4a 06 93 47 45 53 46 0a 05 70 49 50 53 43 C.J..GESF..pIPSC 2df0: 50 41 52 4d 7d 50 41 52 4d 79 49 50 41 54 0a 08 PARM}PARMyIPAT.. 2e00: 00 50 41 52 4d 72 50 41 52 4d 0b 00 01 50 41 52 .PARMrPARM...PAR 2e10: 4d 7d 50 41 52 4d 79 4c 49 44 53 0a 10 00 50 41 M}PARMyLIDS...PA 2e20: 52 4d 72 50 41 52 4d 0c 00 00 01 00 50 41 52 4d RMrPARM.....PARM 2e30: 7d 50 41 52 4d 79 49 42 49 41 0a 14 00 50 41 52 }PARMyIBIA...PAR 2e40: 4d 70 00 47 45 53 46 a4 53 55 43 43 a0 2d 93 47 Mp.GESF.SUCC.-.G 2e50: 45 53 46 0a 06 70 49 54 56 46 50 41 52 4d 7d 50 ESF..pITVFPARM}P 2e60: 41 52 4d 79 49 54 56 4d 0a 04 00 50 41 52 4d 70 ARMyITVM...PARMp 2e70: 00 47 45 53 46 a4 53 55 43 43 a0 4f 08 93 47 45 .GESF.SUCC.O..GE 2e80: 53 46 0a 07 70 47 49 56 44 50 41 52 4d 7f 50 41 SF..pGIVDPARM.PA 2e90: 52 4d 01 50 41 52 4d 7d 50 41 52 4d 79 47 4d 46 RM.PARM}PARMyGMF 2ea0: 4e 01 00 50 41 52 4d 7d 50 41 52 4d 0b 00 10 50 N..PARM}PARM...P 2eb0: 41 52 4d a0 16 49 44 4d 4d 7d 50 41 52 4d 79 49 ARM..IDMM}PARMyI 2ec0: 44 4d 53 0a 11 00 50 41 52 4d a1 12 7d 50 41 52 DMS...PARM..}PAR 2ed0: 4d 79 49 44 4d 53 0a 0d 00 50 41 52 4d 7d 79 83 MyIDMS...PARM}y. 2ee0: 88 83 88 43 44 43 54 48 56 43 4f 00 74 43 44 56 ...CDCTHVCO.tCDV 2ef0: 4c 01 00 00 0a 15 00 50 41 52 4d 50 41 52 4d 70 L......PARMPARMp 2f00: 01 47 45 53 46 a4 53 55 43 43 a0 2a 93 47 45 53 .GESF.SUCC.*.GES 2f10: 46 0a 0a 70 00 50 41 52 4d a0 10 49 53 53 43 7d F..p.PARM..ISSC} 2f20: 50 41 52 4d 0a 03 50 41 52 4d 70 00 47 45 53 46 PARM..PARMp.GESF 2f30: a4 53 55 43 43 70 00 47 45 53 46 a4 43 52 49 54 .SUCCp.GESF.CRIT 2f40: 14 41 28 53 42 43 42 08 a0 20 93 47 45 53 46 00 .A(SBCB.. .GESF. 2f50: 70 00 50 41 52 4d 70 0b 7d f7 50 41 52 4d 70 00 p.PARMp.}.PARMp. 2f60: 47 45 53 46 a4 53 55 43 43 a0 18 93 47 45 53 46 GESF.SUCC...GESF 2f70: 01 70 00 47 45 53 46 70 00 50 41 52 4d a4 53 55 .p.GESFp.PARM.SU 2f80: 43 43 a0 19 93 47 45 53 46 0a 03 70 00 47 45 53 CC...GESF..p.GES 2f90: 46 70 00 50 41 52 4d a4 53 55 43 43 a0 19 93 47 Fp.PARM.SUCC...G 2fa0: 45 53 46 0a 04 70 00 47 45 53 46 70 00 50 41 52 ESF..p.GESFp.PAR 2fb0: 4d a4 53 55 43 43 a0 19 93 47 45 53 46 0a 05 70 M.SUCC...GESF..p 2fc0: 00 47 45 53 46 70 00 50 41 52 4d a4 53 55 43 43 .GESFp.PARM.SUCC 2fd0: a0 37 93 47 45 53 46 0a 06 70 7b 50 41 52 4d 0a .7.GESF..p{PARM. 2fe0: 0f 00 49 54 56 46 70 7a 7b 50 41 52 4d 0a f0 00 ..ITVFpz{PARM... 2ff0: 0a 04 00 49 54 56 4d 70 00 47 45 53 46 70 00 50 ...ITVMp.GESFp.P 3000: 41 52 4d a4 53 55 43 43 a0 19 93 47 45 53 46 0a ARM.SUCC...GESF. 3010: 07 70 00 47 45 53 46 70 00 50 41 52 4d a4 53 55 .p.GESFp.PARM.SU 3020: 43 43 a0 19 93 47 45 53 46 0a 08 70 00 47 45 53 CC...GESF..p.GES 3030: 46 70 00 50 41 52 4d a4 53 55 43 43 a0 24 93 47 Fp.PARM.SUCC.$.G 3040: 45 53 46 0a 09 7b 50 41 52 4d 0a ff 49 42 54 54 ESF..{PARM..IBTT 3050: 70 00 47 45 53 46 70 00 50 41 52 4d a4 53 55 43 p.GESFp.PARM.SUC 3060: 43 a0 46 05 93 47 45 53 46 0a 0a 7b 50 41 52 4d C.F..GESF..{PARM 3070: 0a ff 49 50 53 43 a0 21 7b 7a 50 41 52 4d 0a 08 ..IPSC.!{zPARM.. 3080: 00 0a ff 00 7b 7a 50 41 52 4d 0a 08 00 0a ff 49 ....{zPARM.....I 3090: 50 41 54 76 49 50 41 54 7b 7a 50 41 52 4d 0a 14 PATvIPAT{zPARM.. 30a0: 00 0a 07 49 42 49 41 70 00 47 45 53 46 70 00 50 ...IBIAp.GESFp.P 30b0: 41 52 4d a4 53 55 43 43 a0 40 06 93 47 45 53 46 ARM.SUCC.@..GESF 30c0: 0a 0b 7b 7a 50 41 52 4d 01 00 01 49 46 31 45 a0 ..{zPARM...IF1E. 30d0: 21 7b 50 41 52 4d 0c 00 e0 01 00 00 7b 7a 50 41 !{PARM......{zPA 30e0: 52 4d 0a 0d 00 0a 0f 49 44 4d 53 70 00 49 44 4d RM.....IDMSp.IDM 30f0: 4d a1 16 7b 7a 50 41 52 4d 0a 11 00 0a 0f 49 44 M..{zPARM.....ID 3100: 4d 53 70 01 49 44 4d 4d 70 00 47 45 53 46 70 00 MSp.IDMMp.GESFp. 3110: 50 41 52 4d a4 53 55 43 43 a0 19 93 47 45 53 46 PARM.SUCC...GESF 3120: 0a 10 70 00 47 45 53 46 70 00 50 41 52 4d a4 53 ..p.GESFp.PARM.S 3130: 55 43 43 a0 1f 93 47 45 53 46 0a 11 7d 50 41 52 UCC...GESF..}PAR 3140: 4d 0b 00 01 50 41 52 4d 70 00 47 45 53 46 a4 53 M...PARMp.GESF.S 3150: 55 43 43 a0 49 04 93 47 45 53 46 0a 12 a0 26 7b UCC.I..GESF...&{ 3160: 50 41 52 4d 01 00 a0 10 93 7a 50 41 52 4d 01 00 PARM.....zPARM.. 3170: 01 70 01 49 53 53 43 a1 0c 70 00 47 45 53 46 a4 .p.ISSC..p.GESF. 3180: 43 52 49 54 a1 07 70 00 49 53 53 43 70 00 47 45 CRIT..p.ISSCp.GE 3190: 53 46 70 00 50 41 52 4d a4 53 55 43 43 a0 19 93 SFp.PARM.SUCC... 31a0: 47 45 53 46 0a 13 70 00 47 45 53 46 70 00 50 41 GESF..p.GESFp.PA 31b0: 52 4d a4 53 55 43 43 70 00 47 45 53 46 a4 53 55 RM.SUCCp.GESF.SU 31c0: 43 43 a0 11 93 47 45 46 43 0a 04 70 47 42 44 41 CC...GEFC..pGBDA 31d0: 47 58 46 43 a0 11 93 47 45 46 43 0a 06 70 53 42 GXFC...GEFC..pSB 31e0: 43 42 47 58 46 43 70 00 47 45 46 43 70 01 53 43 CBGXFCp.GEFCp.SC 31f0: 49 53 70 00 47 53 53 45 70 00 53 43 49 45 a4 00 ISp.GSSEp.SCIE.. 3200: 14 19 50 44 52 44 00 a0 0c 92 44 52 44 59 5b 22 ..PDRD....DRDY[" 3210: 41 53 4c 50 a4 92 44 52 44 59 14 1d 50 53 54 53 ASLP..DRDY..PSTS 3220: 00 a0 0e 94 43 53 54 53 0a 02 5b 22 41 53 4c 50 ....CSTS..["ASLP 3230: a4 93 43 53 54 53 0a 03 14 47 06 47 4e 4f 54 02 ..CSTS...G.GNOT. 3240: a0 07 50 44 52 44 a4 01 a0 07 50 53 54 53 a4 01 ..PDRD....PSTS.. 3250: 70 68 43 45 56 54 70 0a 03 43 53 54 53 a0 2c 90 phCEVTp..CSTS.,. 3260: 93 43 48 50 44 00 93 69 00 a0 18 91 94 4f 53 59 .CHPD..i.....OSY 3270: 53 0b d0 07 95 4f 53 59 53 0b d6 07 86 50 43 49 S....OSYS....PCI 3280: 30 69 a1 07 86 47 46 58 30 69 86 47 46 58 30 0a 0i...GFX0i.GFX0. 3290: 80 a0 0c 92 50 53 54 53 70 00 43 45 56 54 a4 00 ....PSTSp.CEVT.. 32a0: 14 13 47 48 44 53 01 70 68 54 49 44 58 a4 47 4e ..GHDS.phTIDX.GN 32b0: 4f 54 01 00 14 14 47 4c 49 44 01 70 68 43 4c 49 OT....GLID.phCLI 32c0: 44 a4 47 4e 4f 54 0a 02 00 14 15 47 44 43 4b 01 D.GNOT.....GDCK. 32d0: 70 68 43 44 43 4b a4 47 4e 4f 54 0a 04 0a 80 14 phCDCK.GNOT..... 32e0: 19 50 41 52 44 00 a0 0c 92 41 52 44 59 5b 22 41 .PARD....ARDY["A 32f0: 53 4c 50 a4 92 41 52 44 59 14 46 0c 41 49 4e 54 SLP..ARDY.F.AINT 3300: 02 a0 0e 92 7b 54 43 48 45 79 01 68 00 00 a4 01 ....{TCHEy.h.... 3310: a0 07 50 41 52 44 a4 01 a0 4c 05 93 68 0a 02 a0 ..PARD...L..h... 3320: 33 43 50 46 4d a0 0e 93 43 50 46 4d 01 70 0a 06 3CPFM...CPFM.p.. 3330: 50 46 49 54 a0 0f 93 43 50 46 4d 0a 06 70 0a 08 PFIT...CPFM..p.. 3340: 50 46 49 54 a0 0e 93 43 50 46 4d 0a 08 70 01 50 PFIT...CPFM..p.P 3350: 46 49 54 a1 0c 7f 50 46 49 54 0a 07 50 46 49 54 FIT...PFIT..PFIT 3360: 7d 50 46 49 54 0c 00 00 00 80 50 46 49 54 70 0a }PFIT.....PFITp. 3370: 04 41 53 4c 43 a1 42 04 a0 28 93 68 01 70 78 77 .ASLC.B..(.h.pxw 3380: 69 0a ff 00 0a 64 00 00 42 43 4c 50 7d 42 43 4c i....d..BCLP}BCL 3390: 50 0c 00 00 00 80 42 43 4c 50 70 0a 02 41 53 4c P.....BCLPp..ASL 33a0: 43 a1 16 a0 10 93 68 00 70 69 41 4c 53 49 70 01 C.....h.piALSIp. 33b0: 41 53 4c 43 a1 03 a4 01 70 00 4c 42 50 43 a4 00 ASLC....p.LBPC.. 33c0: 10 41 36 5c 00 5b 80 49 4f 5f 54 01 0b 00 08 0a .A6\.[.IO_T..... 33d0: 10 5b 81 0e 49 4f 5f 54 01 00 40 04 54 52 50 30 .[..IO_T..@.TRP0 33e0: 08 5b 80 50 4d 49 4f 01 0b 00 10 0a 80 5b 81 28 .[.PMIO......[.( 33f0: 50 4d 49 4f 01 00 40 15 00 08 00 02 41 43 50 57 PMIO..@.....ACPW 3400: 01 00 45 0b 00 01 47 50 45 43 01 00 4e 10 00 09 ..E...GPEC..N... 3410: 53 43 49 53 01 00 06 5b 80 47 50 49 4f 01 0b 80 SCIS...[.GPIO... 3420: 11 0a 3c 5b 81 40 0c 47 50 49 4f 01 47 55 30 30 ..<[.@.GPIO.GU00 3430: 08 47 55 30 31 08 47 55 30 32 08 47 55 30 33 08 .GU01.GU02.GU03. 3440: 47 49 4f 30 08 47 49 4f 31 08 47 49 4f 32 08 47 GIO0.GIO1.GIO2.G 3450: 49 4f 33 08 00 20 47 4c 30 30 08 47 4c 30 31 08 IO3.. GL00.GL01. 3460: 47 4c 30 32 08 00 03 47 50 32 37 01 47 50 32 38 GL02...GP27.GP28 3470: 01 00 03 00 40 04 47 42 30 30 08 47 42 30 31 08 ....@.GB00.GB01. 3480: 47 42 30 32 08 47 42 30 33 08 00 40 08 47 49 56 GB02.GB03..@.GIV 3490: 30 08 00 03 4c 50 4f 4c 01 00 04 47 49 56 32 08 0...LPOL...GIV2. 34a0: 47 49 56 33 08 47 55 30 34 08 47 55 30 35 08 47 GIV3.GU04.GU05.G 34b0: 55 30 36 08 47 55 30 37 08 47 49 4f 34 08 47 49 U06.GU07.GIO4.GI 34c0: 4f 35 08 47 49 4f 36 08 47 49 4f 37 08 00 05 47 O5.GIO6.GIO7...G 34d0: 50 33 37 01 00 02 47 4c 30 35 08 47 4c 30 36 08 P37...GL05.GL06. 34e0: 47 4c 30 37 08 5b 80 52 43 52 42 00 0c 00 c0 d1 GL07.[.RCRB..... 34f0: fe 0b 00 40 5b 81 48 05 52 43 52 42 13 00 80 00 ...@[.H.RCRB.... 3500: 08 00 80 00 10 00 80 02 02 48 50 41 53 02 00 05 .........HPAS... 3510: 48 50 41 45 01 00 48 09 00 01 50 41 54 44 01 53 HPAE..H...PATD.S 3520: 41 54 44 01 53 4d 42 44 01 48 44 41 44 01 00 0b ATD.SMBD.HDAD... 3530: 52 50 31 44 01 52 50 32 44 01 52 50 33 44 01 52 RP1D.RP2D.RP3D.R 3540: 50 34 44 01 52 50 35 44 01 52 50 36 44 01 08 5f P4D.RP5D.RP6D.._ 3550: 53 30 5f 12 05 03 00 00 00 08 5f 53 33 5f 12 07 S0_......._S3_.. 3560: 03 0a 05 0a 05 00 08 5f 53 34 5f 12 07 03 0a 06 ......._S4_..... 3570: 0a 06 00 08 5f 53 35 5f 12 07 03 0a 07 0a 07 00 ...._S5_........ 3580: 14 45 04 47 45 54 50 09 a0 0e 93 7b 68 0a 09 00 .E.GETP....{h... 3590: 00 a4 0c ff ff ff ff a0 0d 93 7b 68 0a 09 00 0a ..........{h.... 35a0: 08 a4 0b 84 03 7a 7b 68 0b 00 03 00 0a 08 60 7a .....z{h......`z 35b0: 7b 68 0b 00 30 00 0a 0c 61 a4 77 0a 1e 74 0a 09 {h..0...a.w..t.. 35c0: 72 60 61 00 00 00 14 30 47 44 4d 41 0d a0 23 68 r`a....0GDMA..#h 35d0: a0 07 90 69 6c a4 0a 14 a0 0e 90 6a 6c a4 77 74 ...il......jl.wt 35e0: 0a 04 6b 00 0a 0f 00 a4 77 74 0a 04 6b 00 0a 1e ..k.....wt..k... 35f0: 00 a4 0c ff ff ff ff 14 1f 47 45 54 54 09 a4 77 .........GETT..w 3600: 0a 1e 74 0a 09 72 7b 7a 68 0a 02 00 0a 03 00 7b ..t..r{zh......{ 3610: 68 0a 03 00 00 00 00 14 44 06 47 45 54 46 0b 08 h.......D.GETF.. 3620: 54 4d 50 46 00 a0 0c 68 7d 54 4d 50 46 01 54 4d TMPF...h}TMPF.TM 3630: 50 46 a0 11 7b 6a 0a 02 00 7d 54 4d 50 46 0a 02 PF..{j...}TMPF.. 3640: 54 4d 50 46 a0 0d 69 7d 54 4d 50 46 0a 04 54 4d TMPF..i}TMPF..TM 3650: 50 46 a0 11 7b 6a 0a 20 00 7d 54 4d 50 46 0a 08 PF..{j. .}TMPF.. 3660: 54 4d 50 46 a0 12 7b 6a 0b 00 40 00 7d 54 4d 50 TMPF..{j..@.}TMP 3670: 46 0a 10 54 4d 50 46 a4 54 4d 50 46 14 3d 53 45 F..TMPF.TMPF.=SE 3680: 54 50 0b a0 08 94 68 0a f0 a4 0a 08 a1 2d a0 27 TP....h......-.' 3690: 7b 69 0a 02 00 a0 10 90 92 94 68 0a 78 7b 6a 0a {i........h.x{j. 36a0: 02 00 a4 0b 01 23 a0 0f 90 92 94 68 0a b4 7b 6a .....#.....h..{j 36b0: 01 00 a4 0b 01 21 a4 0b 01 10 14 37 53 44 4d 41 .....!.....7SDMA 36c0: 09 a0 08 92 94 68 0a 14 a4 01 a0 09 92 94 68 0a .....h........h. 36d0: 1e a4 0a 02 a0 08 92 94 68 0a 2d a4 01 a0 09 92 ........h.-..... 36e0: 94 68 0a 3c a4 0a 02 a0 08 92 94 68 0a 5a a4 01 .h.<.......h.Z.. 36f0: a4 00 14 2f 53 45 54 54 0b a0 25 7b 69 0a 02 00 .../SETT..%{i... 3700: a0 0f 90 92 94 68 0a 78 7b 6a 0a 02 00 a4 0a 0b .....h.x{j...... 3710: a0 0e 90 92 94 68 0a b4 7b 6a 01 00 a4 0a 09 a4 .....h..{j...... 3720: 0a 04 5b 82 4b 04 48 44 45 46 08 5f 41 44 52 0c ..[.K.HDEF._ADR. 3730: 00 00 1b 00 5b 80 48 44 41 52 02 0a 4c 0a 10 5b ....[.HDAR..L..[ 3740: 81 22 48 44 41 52 02 44 43 4b 41 01 00 07 44 43 ."HDAR.DCKA...DC 3750: 4b 4d 01 00 06 44 43 4b 53 01 00 30 00 0f 50 4d KM...DCKS..0..PM 3760: 45 53 01 08 5f 50 52 57 12 06 02 0a 0d 0a 03 5b ES.._PRW.......[ 3770: 82 41 10 52 50 30 31 08 5f 41 44 52 0c 00 00 1c .A.RP01._ADR.... 3780: 00 5b 80 50 58 43 53 02 0a 40 0a c0 5b 81 45 04 .[.PXCS..@..[.E. 3790: 50 58 43 53 40 00 40 09 00 0d 4c 41 53 58 01 00 PXCS@.@...LASX.. 37a0: 32 41 42 50 58 01 00 02 50 44 43 58 01 00 02 50 2ABPX...PDCX...P 37b0: 44 53 58 01 00 01 4c 53 43 58 01 00 27 00 10 50 DSX...LSCX..'..P 37c0: 53 50 58 01 00 4f 3c 00 1e 48 50 53 58 01 50 4d SPX..O<..HPSX.PM 37d0: 53 58 01 5b 82 0b 50 58 53 58 08 5f 41 44 52 00 SX.[..PXSX._ADR. 37e0: 14 41 09 5f 50 52 54 00 a0 33 47 50 49 43 a4 12 .A._PRT..3GPIC.. 37f0: 2c 04 12 09 04 0b ff ff 00 00 0a 10 12 09 04 0b ,............... 3800: ff ff 01 00 0a 11 12 0a 04 0b ff ff 0a 02 00 0a ................ 3810: 12 12 0a 04 0b ff ff 0a 03 00 0a 13 a1 45 05 a4 .............E.. 3820: 12 41 05 04 12 12 04 0b ff ff 00 5e 5e 2e 4c 50 .A.........^^.LP 3830: 43 42 4c 4e 4b 41 00 12 12 04 0b ff ff 01 5e 5e CBLNKA........^^ 3840: 2e 4c 50 43 42 4c 4e 4b 42 00 12 13 04 0b ff ff .LPCBLNKB....... 3850: 0a 02 5e 5e 2e 4c 50 43 42 4c 4e 4b 43 00 12 13 ..^^.LPCBLNKC... 3860: 04 0b ff ff 0a 03 5e 5e 2e 4c 50 43 42 4c 4e 4b ......^^.LPCBLNK 3870: 44 00 5b 82 41 10 52 50 30 32 08 5f 41 44 52 0c D.[.A.RP02._ADR. 3880: 01 00 1c 00 5b 80 50 58 43 53 02 0a 40 0a c0 5b ....[.PXCS..@..[ 3890: 81 45 04 50 58 43 53 40 00 40 09 00 0d 4c 41 53 .E.PXCS@.@...LAS 38a0: 58 01 00 32 41 42 50 58 01 00 02 50 44 43 58 01 X..2ABPX...PDCX. 38b0: 00 02 50 44 53 58 01 00 01 4c 53 43 58 01 00 27 ..PDSX...LSCX..' 38c0: 00 10 50 53 50 58 01 00 4f 3c 00 1e 48 50 53 58 ..PSPX..O<..HPSX 38d0: 01 50 4d 53 58 01 5b 82 0b 50 58 53 58 08 5f 41 .PMSX.[..PXSX._A 38e0: 44 52 00 14 41 09 5f 50 52 54 00 a0 33 47 50 49 DR..A._PRT..3GPI 38f0: 43 a4 12 2c 04 12 09 04 0b ff ff 00 00 0a 11 12 C..,............ 3900: 09 04 0b ff ff 01 00 0a 12 12 0a 04 0b ff ff 0a ................ 3910: 02 00 0a 13 12 0a 04 0b ff ff 0a 03 00 0a 10 a1 ................ 3920: 45 05 a4 12 41 05 04 12 12 04 0b ff ff 00 5e 5e E...A.........^^ 3930: 2e 4c 50 43 42 4c 4e 4b 42 00 12 12 04 0b ff ff .LPCBLNKB....... 3940: 01 5e 5e 2e 4c 50 43 42 4c 4e 4b 43 00 12 13 04 .^^.LPCBLNKC.... 3950: 0b ff ff 0a 02 5e 5e 2e 4c 50 43 42 4c 4e 4b 44 .....^^.LPCBLNKD 3960: 00 12 13 04 0b ff ff 0a 03 5e 5e 2e 4c 50 43 42 .........^^.LPCB 3970: 4c 4e 4b 41 00 5b 82 4d 11 52 50 30 33 08 5f 41 LNKA.[.M.RP03._A 3980: 44 52 0c 02 00 1c 00 5b 80 50 58 43 53 02 0a 40 DR.....[.PXCS..@ 3990: 0a c0 5b 81 45 04 50 58 43 53 40 00 40 09 00 0d ..[.E.PXCS@.@... 39a0: 4c 41 53 58 01 00 32 41 42 50 58 01 00 02 50 44 LASX..2ABPX...PD 39b0: 43 58 01 00 02 50 44 53 58 01 00 01 4c 53 43 58 CX...PDSX...LSCX 39c0: 01 00 27 00 10 50 53 50 58 01 00 4f 3c 00 1e 48 ..'..PSPX..O<..H 39d0: 50 53 58 01 50 4d 53 58 01 5b 82 0b 50 58 53 58 PSX.PMSX.[..PXSX 39e0: 08 5f 41 44 52 00 08 2e 50 58 53 58 5f 52 4d 56 ._ADR...PXSX_RMV 39f0: 01 08 2e 50 58 53 58 5f 50 52 57 12 06 02 0a 09 ...PXSX_PRW..... 3a00: 0a 03 14 41 09 5f 50 52 54 00 a0 33 47 50 49 43 ...A._PRT..3GPIC 3a10: a4 12 2c 04 12 09 04 0b ff ff 00 00 0a 12 12 09 ..,............. 3a20: 04 0b ff ff 01 00 0a 13 12 0a 04 0b ff ff 0a 02 ................ 3a30: 00 0a 10 12 0a 04 0b ff ff 0a 03 00 0a 11 a1 45 ...............E 3a40: 05 a4 12 41 05 04 12 12 04 0b ff ff 00 5e 5e 2e ...A.........^^. 3a50: 4c 50 43 42 4c 4e 4b 43 00 12 12 04 0b ff ff 01 LPCBLNKC........ 3a60: 5e 5e 2e 4c 50 43 42 4c 4e 4b 44 00 12 13 04 0b ^^.LPCBLNKD..... 3a70: ff ff 0a 02 5e 5e 2e 4c 50 43 42 4c 4e 4b 41 00 ....^^.LPCBLNKA. 3a80: 12 13 04 0b ff ff 0a 03 5e 5e 2e 4c 50 43 42 4c ........^^.LPCBL 3a90: 4e 4b 42 00 5b 82 4f 11 52 50 30 34 08 5f 41 44 NKB.[.O.RP04._AD 3aa0: 52 0c 03 00 1c 00 5b 80 50 58 43 53 02 0a 40 0a R.....[.PXCS..@. 3ab0: c0 5b 81 45 04 50 58 43 53 40 00 40 09 00 0d 4c .[.E.PXCS@.@...L 3ac0: 41 53 58 01 00 32 41 42 50 58 01 00 02 50 44 43 ASX..2ABPX...PDC 3ad0: 58 01 00 02 50 44 53 58 01 00 01 4c 53 43 58 01 X...PDSX...LSCX. 3ae0: 00 27 00 10 50 53 50 58 01 00 4f 3c 00 1e 48 50 .'..PSPX..O<..HP 3af0: 53 58 01 50 4d 53 58 01 5b 82 29 50 58 53 58 08 SX.PMSX.[.)PXSX. 3b00: 5f 41 44 52 00 14 1d 5f 50 52 57 00 a0 0d 57 4b _ADR..._PRW...WK 3b10: 4c 4e a4 12 06 02 0a 09 0a 03 a1 08 a4 12 05 02 LN.............. 3b20: 0a 09 00 14 41 09 5f 50 52 54 00 a0 33 47 50 49 ....A._PRT..3GPI 3b30: 43 a4 12 2c 04 12 09 04 0b ff ff 00 00 0a 13 12 C..,............ 3b40: 09 04 0b ff ff 01 00 0a 10 12 0a 04 0b ff ff 0a ................ 3b50: 02 00 0a 11 12 0a 04 0b ff ff 0a 03 00 0a 12 a1 ................ 3b60: 45 05 a4 12 41 05 04 12 12 04 0b ff ff 00 5e 5e E...A.........^^ 3b70: 2e 4c 50 43 42 4c 4e 4b 44 00 12 12 04 0b ff ff .LPCBLNKD....... 3b80: 01 5e 5e 2e 4c 50 43 42 4c 4e 4b 41 00 12 13 04 .^^.LPCBLNKA.... 3b90: 0b ff ff 0a 02 5e 5e 2e 4c 50 43 42 4c 4e 4b 42 .....^^.LPCBLNKB 3ba0: 00 12 13 04 0b ff ff 0a 03 5e 5e 2e 4c 50 43 42 .........^^.LPCB 3bb0: 4c 4e 4b 43 00 5b 82 41 10 52 50 30 35 08 5f 41 LNKC.[.A.RP05._A 3bc0: 44 52 0c 04 00 1c 00 5b 80 50 58 43 53 02 0a 40 DR.....[.PXCS..@ 3bd0: 0a c0 5b 81 45 04 50 58 43 53 40 00 40 09 00 0d ..[.E.PXCS@.@... 3be0: 4c 41 53 58 01 00 32 41 42 50 58 01 00 02 50 44 LASX..2ABPX...PD 3bf0: 43 58 01 00 02 50 44 53 58 01 00 01 4c 53 43 58 CX...PDSX...LSCX 3c00: 01 00 27 00 10 50 53 50 58 01 00 4f 3c 00 1e 48 ..'..PSPX..O<..H 3c10: 50 53 58 01 50 4d 53 58 01 5b 82 0b 50 58 53 58 PSX.PMSX.[..PXSX 3c20: 08 5f 41 44 52 00 14 41 09 5f 50 52 54 00 a0 33 ._ADR..A._PRT..3 3c30: 47 50 49 43 a4 12 2c 04 12 09 04 0b ff ff 00 00 GPIC..,......... 3c40: 0a 10 12 09 04 0b ff ff 01 00 0a 11 12 0a 04 0b ................ 3c50: ff ff 0a 02 00 0a 12 12 0a 04 0b ff ff 0a 03 00 ................ 3c60: 0a 13 a1 45 05 a4 12 41 05 04 12 12 04 0b ff ff ...E...A........ 3c70: 00 5e 5e 2e 4c 50 43 42 4c 4e 4b 41 00 12 12 04 .^^.LPCBLNKA.... 3c80: 0b ff ff 01 5e 5e 2e 4c 50 43 42 4c 4e 4b 42 00 ....^^.LPCBLNKB. 3c90: 12 13 04 0b ff ff 0a 02 5e 5e 2e 4c 50 43 42 4c ........^^.LPCBL 3ca0: 4e 4b 43 00 12 13 04 0b ff ff 0a 03 5e 5e 2e 4c NKC.........^^.L 3cb0: 50 43 42 4c 4e 4b 44 00 5b 82 41 10 52 50 30 36 PCBLNKD.[.A.RP06 3cc0: 08 5f 41 44 52 0c 05 00 1c 00 5b 80 50 58 43 53 ._ADR.....[.PXCS 3cd0: 02 0a 40 0a c0 5b 81 45 04 50 58 43 53 40 00 40 ..@..[.E.PXCS@.@ 3ce0: 09 00 0d 4c 41 53 58 01 00 32 41 42 50 58 01 00 ...LASX..2ABPX.. 3cf0: 02 50 44 43 58 01 00 02 50 44 53 58 01 00 01 4c .PDCX...PDSX...L 3d00: 53 43 58 01 00 27 00 10 50 53 50 58 01 00 4f 3c SCX..'..PSPX..O< 3d10: 00 1e 48 50 53 58 01 50 4d 53 58 01 5b 82 0b 50 ..HPSX.PMSX.[..P 3d20: 58 53 58 08 5f 41 44 52 00 14 41 09 5f 50 52 54 XSX._ADR..A._PRT 3d30: 00 a0 33 47 50 49 43 a4 12 2c 04 12 09 04 0b ff ..3GPIC..,...... 3d40: ff 00 00 0a 11 12 09 04 0b ff ff 01 00 0a 12 12 ................ 3d50: 0a 04 0b ff ff 0a 02 00 0a 13 12 0a 04 0b ff ff ................ 3d60: 0a 03 00 0a 10 a1 45 05 a4 12 41 05 04 12 12 04 ......E...A..... 3d70: 0b ff ff 00 5e 5e 2e 4c 50 43 42 4c 4e 4b 42 00 ....^^.LPCBLNKB. 3d80: 12 12 04 0b ff ff 01 5e 5e 2e 4c 50 43 42 4c 4e .......^^.LPCBLN 3d90: 4b 43 00 12 13 04 0b ff ff 0a 02 5e 5e 2e 4c 50 KC.........^^.LP 3da0: 43 42 4c 4e 4b 44 00 12 13 04 0b ff ff 0a 03 5e CBLNKD.........^ 3db0: 5e 2e 4c 50 43 42 4c 4e 4b 41 00 5b 82 4d 06 55 ^.LPCBLNKA.[.M.U 3dc0: 53 42 31 08 5f 41 44 52 0c 00 00 1d 00 5b 80 55 SB1._ADR.....[.U 3dd0: 31 43 53 02 0a c4 0a 04 5b 81 0b 55 31 43 53 03 1CS.....[..U1CS. 3de0: 55 31 45 4e 02 08 5f 50 52 57 12 06 02 0a 03 0a U1EN.._PRW...... 3df0: 03 14 24 5f 50 53 57 01 a0 15 68 70 01 41 43 50 ..$_PSW...hp.ACP 3e00: 57 a0 0c 41 43 50 57 70 0a 03 55 31 45 4e a1 07 W..ACPWp..U1EN.. 3e10: 70 00 55 31 45 4e 14 09 5f 53 33 44 00 a4 0a 02 p.U1EN.._S3D.... 3e20: 14 09 5f 53 34 44 00 a4 0a 02 5b 82 4c 06 55 53 .._S4D....[.L.US 3e30: 42 32 08 5f 41 44 52 0c 01 00 1d 00 5b 80 55 32 B2._ADR.....[.U2 3e40: 43 53 02 0a c4 0a 04 5b 81 0b 55 32 43 53 03 55 CS.....[..U2CS.U 3e50: 32 45 4e 02 08 5f 50 52 57 12 06 02 0a 04 0a 03 2EN.._PRW....... 3e60: 14 23 5f 50 53 57 01 a0 14 68 70 01 41 43 50 57 .#_PSW...hp.ACPW 3e70: a0 0b 41 43 50 57 70 01 55 32 45 4e a1 07 70 00 ..ACPWp.U2EN..p. 3e80: 55 32 45 4e 14 09 5f 53 33 44 00 a4 0a 02 14 09 U2EN.._S3D...... 3e90: 5f 53 34 44 00 a4 0a 02 5b 82 4d 06 55 53 42 33 _S4D....[.M.USB3 3ea0: 08 5f 41 44 52 0c 02 00 1d 00 5b 80 55 32 43 53 ._ADR.....[.U2CS 3eb0: 02 0a c4 0a 04 5b 81 0b 55 32 43 53 03 55 33 45 .....[..U2CS.U3E 3ec0: 4e 02 08 5f 50 52 57 12 06 02 0a 0c 0a 03 14 24 N.._PRW........$ 3ed0: 5f 50 53 57 01 a0 15 68 70 01 41 43 50 57 a0 0c _PSW...hp.ACPW.. 3ee0: 41 43 50 57 70 0a 03 55 33 45 4e a1 07 70 00 55 ACPWp..U3EN..p.U 3ef0: 33 45 4e 14 09 5f 53 33 44 00 a4 0a 02 14 09 5f 3EN.._S3D......_ 3f00: 53 34 44 00 a4 0a 02 5b 82 4d 06 55 53 42 34 08 S4D....[.M.USB4. 3f10: 5f 41 44 52 0c 00 00 1a 00 5b 80 55 34 43 53 02 _ADR.....[.U4CS. 3f20: 0a c4 0a 04 5b 81 0b 55 34 43 53 03 55 34 45 4e ....[..U4CS.U4EN 3f30: 02 08 5f 50 52 57 12 06 02 0a 0e 0a 03 14 24 5f .._PRW........$_ 3f40: 50 53 57 01 a0 15 68 70 01 41 43 50 57 a0 0c 41 PSW...hp.ACPW..A 3f50: 43 50 57 70 0a 03 55 34 45 4e a1 07 70 00 55 34 CPWp..U4EN..p.U4 3f60: 45 4e 14 09 5f 53 33 44 00 a4 0a 02 14 09 5f 53 EN.._S3D......_S 3f70: 34 44 00 a4 0a 02 5b 82 41 06 55 53 42 35 08 5f 4D....[.A.USB5._ 3f80: 41 44 52 0c 01 00 1a 00 5b 80 55 35 43 53 02 0a ADR.....[.U5CS.. 3f90: c4 0a 04 5b 81 0b 55 35 43 53 03 55 35 45 4e 02 ...[..U5CS.U5EN. 3fa0: 14 24 5f 50 53 57 01 a0 15 68 70 01 41 43 50 57 .$_PSW...hp.ACPW 3fb0: a0 0c 41 43 50 57 70 0a 03 55 35 45 4e a1 07 70 ..ACPWp..U5EN..p 3fc0: 00 55 35 45 4e 14 09 5f 53 33 44 00 a4 0a 02 14 .U5EN.._S3D..... 3fd0: 09 5f 53 34 44 00 a4 0a 02 5b 82 4b 0a 45 48 43 ._S4D....[.K.EHC 3fe0: 31 08 5f 41 44 52 0c 07 00 1d 00 5b 80 55 37 43 1._ADR.....[.U7C 3ff0: 53 02 0a 54 0a 04 5b 81 0d 55 37 43 53 03 00 0f S..T..[..U7CS... 4000: 50 4d 45 53 01 5b 82 4f 05 48 55 42 37 08 5f 41 PMES.[.O.HUB7._A 4010: 44 52 00 5b 82 0b 50 52 54 31 08 5f 41 44 52 01 DR.[..PRT1._ADR. 4020: 5b 82 0c 50 52 54 32 08 5f 41 44 52 0a 02 5b 82 [..PRT2._ADR..[. 4030: 0c 50 52 54 33 08 5f 41 44 52 0a 03 5b 82 0c 50 .PRT3._ADR..[..P 4040: 52 54 34 08 5f 41 44 52 0a 04 5b 82 0c 50 52 54 RT4._ADR..[..PRT 4050: 35 08 5f 41 44 52 0a 05 5b 82 0c 50 52 54 36 08 5._ADR..[..PRT6. 4060: 5f 41 44 52 0a 06 08 5f 50 52 57 12 06 02 0a 0d _ADR..._PRW..... 4070: 0a 03 14 09 5f 53 33 44 00 a4 0a 02 14 09 5f 53 ...._S3D......_S 4080: 34 44 00 a4 0a 02 5b 82 4f 08 45 48 43 32 08 5f 4D....[.O.EHC2._ 4090: 41 44 52 0c 07 00 1a 00 5b 80 55 46 43 53 02 0a ADR.....[.UFCS.. 40a0: 54 0a 04 5b 81 0d 55 46 43 53 03 00 0f 50 4d 45 T..[..UFCS...PME 40b0: 53 01 5b 82 43 04 48 55 42 37 08 5f 41 44 52 00 S.[.C.HUB7._ADR. 40c0: 5b 82 0b 50 52 54 31 08 5f 41 44 52 01 5b 82 0c [..PRT1._ADR.[.. 40d0: 50 52 54 32 08 5f 41 44 52 0a 02 5b 82 0c 50 52 PRT2._ADR..[..PR 40e0: 54 33 08 5f 41 44 52 0a 03 5b 82 0c 50 52 54 34 T3._ADR..[..PRT4 40f0: 08 5f 41 44 52 0a 04 08 5f 50 52 57 12 06 02 0a ._ADR..._PRW.... 4100: 0d 0a 03 14 09 5f 53 33 44 00 a4 0a 02 14 09 5f ....._S3D......_ 4110: 53 34 44 00 a4 0a 02 5b 82 4a 06 50 43 49 42 08 S4D....[.J.PCIB. 4120: 5f 41 44 52 0c 00 00 1e 00 14 49 05 5f 50 52 54 _ADR......I._PRT 4130: 00 a0 21 47 50 49 43 a4 12 1a 02 12 0b 04 0c ff ..!GPIC......... 4140: ff 06 00 00 00 0a 16 12 0b 04 0c ff ff 06 00 01 ................ 4150: 00 0a 17 a1 2f a4 12 2c 02 12 14 04 0c ff ff 06 ..../..,........ 4160: 00 00 5e 5e 2e 4c 50 43 42 4c 4e 4b 47 00 12 14 ..^^.LPCBLNKG... 4170: 04 0c ff ff 06 00 01 5e 5e 2e 4c 50 43 42 4c 4e .......^^.LPCBLN 4180: 4b 48 00 5b 82 8d 2e 01 4c 50 43 42 08 5f 41 44 KH.[....LPCB._AD 4190: 52 0c 00 00 1f 00 5b 80 4c 50 43 30 02 0a 40 0a R.....[.LPC0..@. 41a0: c0 5b 81 4d 07 4c 50 43 30 00 00 40 10 50 41 52 .[.M.LPC0..@.PAR 41b0: 43 08 50 42 52 43 08 50 43 52 43 08 50 44 52 43 C.PBRC.PCRC.PDRC 41c0: 08 00 20 50 45 52 43 08 50 46 52 43 08 50 47 52 .. PERC.PFRC.PGR 41d0: 43 08 50 48 52 43 08 00 40 0a 43 4d 41 52 03 00 C.PHRC..@.CMAR.. 41e0: 01 43 4d 42 52 03 00 01 4c 50 54 52 02 00 06 43 .CMBR...LPTR...C 41f0: 4d 41 44 01 43 4d 42 44 01 4c 50 54 44 01 46 44 MAD.CMBD.LPTD.FD 4200: 44 44 01 00 2c 49 4f 52 32 10 00 02 4c 47 52 4d DD..,IOR2...LGRM 4210: 06 00 48 32 52 41 45 4e 01 00 0d 52 43 42 41 12 ..H2RAEN...RCBA. 4220: 5b 80 53 4d 49 30 01 0c 00 fe 00 00 0c 02 00 00 [.SMI0.......... 4230: 00 5b 81 0b 53 4d 49 30 00 53 4d 49 43 08 5b 80 .[..SMI0.SMIC.[. 4240: 53 4d 49 31 00 0c bd 2e 6e bf 0c 90 00 00 00 5b SMI1....n......[ 4250: 81 16 53 4d 49 31 00 42 43 4d 44 08 44 49 44 5f ..SMI1.BCMD.DID_ 4260: 20 49 4e 46 4f 40 40 5b 81 15 53 4d 49 31 00 01 INFO@@[..SMI1.. 4270: 01 00 00 28 49 4e 46 5f 08 49 4e 46 31 20 5b 01 ...(INF_.INF1 [. 4280: 50 53 4d 58 00 14 27 50 48 53 53 01 5b 23 50 53 PSMX..'PHSS.[#PS 4290: 4d 58 ff ff 70 0a 80 42 43 4d 44 70 68 44 49 44 MX..p..BCMDphDID 42a0: 5f 70 00 53 4d 49 43 5b 27 50 53 4d 58 5b 82 41 _p.SMIC['PSMX[.A 42b0: 0a 4c 4e 4b 41 08 5f 48 49 44 0c 41 d0 0c 0f 08 .LNKA._HID.A.... 42c0: 5f 55 49 44 01 14 0d 5f 44 49 53 08 70 0a 80 50 _UID..._DIS.p..P 42d0: 41 52 43 08 5f 50 52 53 11 09 0a 06 23 fa d4 18 ARC._PRS....#... 42e0: 79 00 14 38 5f 43 52 53 08 08 52 54 4c 41 11 09 y..8_CRS..RTLA.. 42f0: 0a 06 23 00 00 18 79 00 8b 52 54 4c 41 01 49 52 ..#...y..RTLA.IR 4300: 51 30 70 00 49 52 51 30 79 01 7b 50 41 52 43 0a Q0p.IRQ0y.{PARC. 4310: 0f 00 49 52 51 30 a4 52 54 4c 41 14 1b 5f 53 52 ..IRQ0.RTLA.._SR 4320: 53 09 8b 68 01 49 52 51 30 82 49 52 51 30 60 76 S..h.IRQ0.IRQ0`v 4330: 60 70 60 50 41 52 43 14 18 5f 53 54 41 08 a0 0c `p`PARC.._STA... 4340: 7b 50 41 52 43 0a 80 00 a4 0a 09 a1 04 a4 0a 0b {PARC........... 4350: 5b 82 42 0a 4c 4e 4b 42 08 5f 48 49 44 0c 41 d0 [.B.LNKB._HID.A. 4360: 0c 0f 08 5f 55 49 44 0a 02 14 0d 5f 44 49 53 08 ..._UID...._DIS. 4370: 70 0a 80 50 42 52 43 08 5f 50 52 53 11 09 0a 06 p..PBRC._PRS.... 4380: 23 fa d8 18 79 00 14 38 5f 43 52 53 08 08 52 54 #...y..8_CRS..RT 4390: 4c 42 11 09 0a 06 23 00 00 18 79 00 8b 52 54 4c LB....#...y..RTL 43a0: 42 01 49 52 51 30 70 00 49 52 51 30 79 01 7b 50 B.IRQ0p.IRQ0y.{P 43b0: 42 52 43 0a 0f 00 49 52 51 30 a4 52 54 4c 42 14 BRC...IRQ0.RTLB. 43c0: 1b 5f 53 52 53 09 8b 68 01 49 52 51 30 82 49 52 ._SRS..h.IRQ0.IR 43d0: 51 30 60 76 60 70 60 50 42 52 43 14 18 5f 53 54 Q0`v`p`PBRC.._ST 43e0: 41 08 a0 0c 7b 50 42 52 43 0a 80 00 a4 0a 09 a1 A...{PBRC....... 43f0: 04 a4 0a 0b 5b 82 42 0a 4c 4e 4b 43 08 5f 48 49 ....[.B.LNKC._HI 4400: 44 0c 41 d0 0c 0f 08 5f 55 49 44 0a 03 14 0d 5f D.A...._UID...._ 4410: 44 49 53 08 70 0a 80 50 43 52 43 08 5f 50 52 53 DIS.p..PCRC._PRS 4420: 11 09 0a 06 23 fa d4 18 79 00 14 38 5f 43 52 53 ....#...y..8_CRS 4430: 08 08 52 54 4c 43 11 09 0a 06 23 00 00 18 79 00 ..RTLC....#...y. 4440: 8b 52 54 4c 43 01 49 52 51 30 70 00 49 52 51 30 .RTLC.IRQ0p.IRQ0 4450: 79 01 7b 50 43 52 43 0a 0f 00 49 52 51 30 a4 52 y.{PCRC...IRQ0.R 4460: 54 4c 43 14 1b 5f 53 52 53 09 8b 68 01 49 52 51 TLC.._SRS..h.IRQ 4470: 30 82 49 52 51 30 60 76 60 70 60 50 43 52 43 14 0.IRQ0`v`p`PCRC. 4480: 18 5f 53 54 41 08 a0 0c 7b 50 43 52 43 0a 80 00 ._STA...{PCRC... 4490: a4 0a 09 a1 04 a4 0a 0b 5b 82 42 0a 4c 4e 4b 44 ........[.B.LNKD 44a0: 08 5f 48 49 44 0c 41 d0 0c 0f 08 5f 55 49 44 0a ._HID.A...._UID. 44b0: 04 14 0d 5f 44 49 53 08 70 0a 80 50 44 52 43 08 ..._DIS.p..PDRC. 44c0: 5f 50 52 53 11 09 0a 06 23 fa d8 18 79 00 14 38 _PRS....#...y..8 44d0: 5f 43 52 53 08 08 52 54 4c 44 11 09 0a 06 23 00 _CRS..RTLD....#. 44e0: 00 18 79 00 8b 52 54 4c 44 01 49 52 51 30 70 00 ..y..RTLD.IRQ0p. 44f0: 49 52 51 30 79 01 7b 50 44 52 43 0a 0f 00 49 52 IRQ0y.{PDRC...IR 4500: 51 30 a4 52 54 4c 44 14 1b 5f 53 52 53 09 8b 68 Q0.RTLD.._SRS..h 4510: 01 49 52 51 30 82 49 52 51 30 60 76 60 70 60 50 .IRQ0.IRQ0`v`p`P 4520: 44 52 43 14 18 5f 53 54 41 08 a0 0c 7b 50 44 52 DRC.._STA...{PDR 4530: 43 0a 80 00 a4 0a 09 a1 04 a4 0a 0b 5b 82 42 0a C...........[.B. 4540: 4c 4e 4b 45 08 5f 48 49 44 0c 41 d0 0c 0f 08 5f LNKE._HID.A...._ 4550: 55 49 44 0a 05 14 0d 5f 44 49 53 08 70 0a 80 50 UID...._DIS.p..P 4560: 45 52 43 08 5f 50 52 53 11 09 0a 06 23 fa d4 18 ERC._PRS....#... 4570: 79 00 14 38 5f 43 52 53 08 08 52 54 4c 45 11 09 y..8_CRS..RTLE.. 4580: 0a 06 23 00 00 18 79 00 8b 52 54 4c 45 01 49 52 ..#...y..RTLE.IR 4590: 51 30 70 00 49 52 51 30 79 01 7b 50 45 52 43 0a Q0p.IRQ0y.{PERC. 45a0: 0f 00 49 52 51 30 a4 52 54 4c 45 14 1b 5f 53 52 ..IRQ0.RTLE.._SR 45b0: 53 09 8b 68 01 49 52 51 30 82 49 52 51 30 60 76 S..h.IRQ0.IRQ0`v 45c0: 60 70 60 50 45 52 43 14 18 5f 53 54 41 08 a0 0c `p`PERC.._STA... 45d0: 7b 50 45 52 43 0a 80 00 a4 0a 09 a1 04 a4 0a 0b {PERC........... 45e0: 5b 82 42 0a 4c 4e 4b 46 08 5f 48 49 44 0c 41 d0 [.B.LNKF._HID.A. 45f0: 0c 0f 08 5f 55 49 44 0a 06 14 0d 5f 44 49 53 08 ..._UID...._DIS. 4600: 70 0a 80 50 46 52 43 08 5f 50 52 53 11 09 0a 06 p..PFRC._PRS.... 4610: 23 fa d8 18 79 00 14 38 5f 43 52 53 08 08 52 54 #...y..8_CRS..RT 4620: 4c 46 11 09 0a 06 23 00 00 18 79 00 8b 52 54 4c LF....#...y..RTL 4630: 46 01 49 52 51 30 70 00 49 52 51 30 79 01 7b 50 F.IRQ0p.IRQ0y.{P 4640: 46 52 43 0a 0f 00 49 52 51 30 a4 52 54 4c 46 14 FRC...IRQ0.RTLF. 4650: 1b 5f 53 52 53 09 8b 68 01 49 52 51 30 82 49 52 ._SRS..h.IRQ0.IR 4660: 51 30 60 76 60 70 60 50 46 52 43 14 18 5f 53 54 Q0`v`p`PFRC.._ST 4670: 41 08 a0 0c 7b 50 46 52 43 0a 80 00 a4 0a 09 a1 A...{PFRC....... 4680: 04 a4 0a 0b 5b 82 42 0a 4c 4e 4b 47 08 5f 48 49 ....[.B.LNKG._HI 4690: 44 0c 41 d0 0c 0f 08 5f 55 49 44 0a 07 14 0d 5f D.A...._UID...._ 46a0: 44 49 53 08 70 0a 80 50 47 52 43 08 5f 50 52 53 DIS.p..PGRC._PRS 46b0: 11 09 0a 06 23 fa d4 18 79 00 14 38 5f 43 52 53 ....#...y..8_CRS 46c0: 08 08 52 54 4c 47 11 09 0a 06 23 00 00 18 79 00 ..RTLG....#...y. 46d0: 8b 52 54 4c 47 01 49 52 51 30 70 00 49 52 51 30 .RTLG.IRQ0p.IRQ0 46e0: 79 01 7b 50 47 52 43 0a 0f 00 49 52 51 30 a4 52 y.{PGRC...IRQ0.R 46f0: 54 4c 47 14 1b 5f 53 52 53 09 8b 68 01 49 52 51 TLG.._SRS..h.IRQ 4700: 30 82 49 52 51 30 60 76 60 70 60 50 47 52 43 14 0.IRQ0`v`p`PGRC. 4710: 18 5f 53 54 41 08 a0 0c 7b 50 47 52 43 0a 80 00 ._STA...{PGRC... 4720: a4 0a 09 a1 04 a4 0a 0b 5b 82 42 0a 4c 4e 4b 48 ........[.B.LNKH 4730: 08 5f 48 49 44 0c 41 d0 0c 0f 08 5f 55 49 44 0a ._HID.A...._UID. 4740: 08 14 0d 5f 44 49 53 08 70 0a 80 50 48 52 43 08 ..._DIS.p..PHRC. 4750: 5f 50 52 53 11 09 0a 06 23 fa d8 18 79 00 14 38 _PRS....#...y..8 4760: 5f 43 52 53 08 08 52 54 4c 48 11 09 0a 06 23 00 _CRS..RTLH....#. 4770: 00 18 79 00 8b 52 54 4c 48 01 49 52 51 30 70 00 ..y..RTLH.IRQ0p. 4780: 49 52 51 30 79 01 7b 50 48 52 43 0a 0f 00 49 52 IRQ0y.{PHRC...IR 4790: 51 30 a4 52 54 4c 48 14 1b 5f 53 52 53 09 8b 68 Q0.RTLH.._SRS..h 47a0: 01 49 52 51 30 82 49 52 51 30 60 76 60 70 60 50 .IRQ0.IRQ0`v`p`P 47b0: 48 52 43 14 18 5f 53 54 41 08 a0 0c 7b 50 48 52 HRC.._STA...{PHR 47c0: 43 0a 80 00 a4 0a 09 a1 04 a4 0a 0b 5b 82 3d 44 C...........[.=D 47d0: 4d 41 43 08 5f 48 49 44 0c 41 d0 02 00 08 5f 43 MAC._HID.A...._C 47e0: 52 53 11 28 0a 25 47 01 00 00 00 00 01 20 47 01 RS.(.%G...... G. 47f0: 81 00 81 00 01 11 47 01 93 00 93 00 01 0d 47 01 ......G.......G. 4800: c0 00 c0 00 01 20 2a 10 01 79 00 5b 82 26 46 57 ..... *..y.[.&FW 4810: 48 44 08 5f 48 49 44 0c 25 d4 08 00 08 5f 43 52 HD._HID.%...._CR 4820: 53 11 11 0a 0e 86 09 00 00 00 00 00 ff 00 00 00 S............... 4830: 01 79 00 5b 82 40 0b 48 50 45 54 08 5f 48 49 44 .y.[.@.HPET._HID 4840: 0c 41 d0 01 03 08 5f 43 49 44 0c 41 d0 0c 01 08 .A...._CID.A.... 4850: 42 55 46 30 11 11 0a 0e 86 09 00 00 00 00 d0 fe BUF0............ 4860: 00 04 00 00 79 00 14 27 5f 53 54 41 00 a0 13 92 ....y..'_STA.... 4870: 95 4f 53 59 53 0b d1 07 a0 08 48 50 41 45 a4 0a .OSYS.....HPAE.. 4880: 0f a1 0a a0 08 48 50 41 45 a4 0a 0b a4 00 14 46 .....HPAE......F 4890: 05 5f 43 52 53 08 a0 49 04 48 50 41 45 8a 42 55 ._CRS..I.HPAE.BU 48a0: 46 30 0a 04 48 50 54 30 a0 11 93 48 50 41 53 01 F0..HPT0...HPAS. 48b0: 70 0c 00 10 d0 fe 48 50 54 30 a0 12 93 48 50 41 p.....HPT0...HPA 48c0: 53 0a 02 70 0c 00 20 d0 fe 48 50 54 30 a0 12 93 S..p.. ..HPT0... 48d0: 48 50 41 53 0a 03 70 0c 00 30 d0 fe 48 50 54 30 HPAS..p..0..HPT0 48e0: a4 42 55 46 30 5b 82 45 0a 49 50 49 43 08 5f 48 .BUF0[.E.IPIC._H 48f0: 49 44 0b 41 d0 08 5f 43 52 53 11 41 09 0a 8d 47 ID.A.._CRS.A...G 4900: 01 20 00 20 00 01 02 47 01 24 00 24 00 01 02 47 . . ...G.$.$...G 4910: 01 28 00 28 00 01 02 47 01 2c 00 2c 00 01 02 47 .(.(...G.,.,...G 4920: 01 30 00 30 00 01 02 47 01 34 00 34 00 01 02 47 .0.0...G.4.4...G 4930: 01 38 00 38 00 01 02 47 01 3c 00 3c 00 01 02 47 .8.8...G.<.<...G 4940: 01 a0 00 a0 00 01 02 47 01 a4 00 a4 00 01 02 47 .......G.......G 4950: 01 a8 00 a8 00 01 02 47 01 ac 00 ac 00 01 02 47 .......G.......G 4960: 01 b0 00 b0 00 01 02 47 01 b4 00 b4 00 01 02 47 .......G.......G 4970: 01 b8 00 b8 00 01 02 47 01 bc 00 bc 00 01 02 47 .......G.......G 4980: 01 d0 04 d0 04 01 02 22 04 00 79 00 5b 82 25 4d ......."..y.[.%M 4990: 41 54 48 08 5f 48 49 44 0c 41 d0 0c 04 08 5f 43 ATH._HID.A...._C 49a0: 52 53 11 10 0a 0d 47 01 f0 00 f0 00 01 01 22 00 RS....G.......". 49b0: 20 79 00 5b 82 4b 09 4c 44 52 43 08 5f 48 49 44 y.[.K.LDRC._HID 49c0: 0c 41 d0 0c 02 08 5f 55 49 44 0a 02 08 5f 43 52 .A...._UID..._CR 49d0: 53 11 4e 07 0a 7a 47 01 2e 00 2e 00 01 02 47 01 S.N..zG.......G. 49e0: 4e 00 4e 00 01 02 47 01 61 00 61 00 01 01 47 01 N.N...G.a.a...G. 49f0: 63 00 63 00 01 01 47 01 65 00 65 00 01 01 47 01 c.c...G.e.e...G. 4a00: 67 00 67 00 01 01 47 01 80 00 80 00 01 01 47 01 g.g...G.......G. 4a10: 92 00 92 00 01 01 47 01 b2 00 b2 00 01 02 47 01 ......G.......G. 4a20: 80 06 80 06 01 20 47 01 00 08 00 08 01 10 47 01 ..... G.......G. 4a30: 00 10 00 10 01 80 47 01 80 11 80 11 01 40 47 01 ......G......@G. 4a40: 00 fe 00 fe 01 01 47 01 00 ff 00 ff 01 80 79 00 ......G.......y. 4a50: 5b 82 25 52 54 43 5f 08 5f 48 49 44 0c 41 d0 0b [.%RTC_._HID.A.. 4a60: 00 08 5f 43 52 53 11 10 0a 0d 47 01 70 00 70 00 .._CRS....G.p.p. 4a70: 01 08 22 00 01 79 00 5b 82 2d 54 49 4d 52 08 5f .."..y.[.-TIMR._ 4a80: 48 49 44 0c 41 d0 01 00 08 5f 43 52 53 11 18 0a HID.A...._CRS... 4a90: 15 47 01 40 00 40 00 01 04 47 01 50 00 50 00 10 .G.@.@...G.P.P.. 4aa0: 04 22 01 00 79 00 5b 82 32 41 43 41 44 08 5f 48 ."..y.[.2ACAD._H 4ab0: 49 44 0d 41 43 50 49 30 30 30 33 00 08 5f 50 43 ID.ACPI0003.._PC 4ac0: 4c 12 06 01 5f 53 42 5f 14 11 5f 50 53 52 00 70 L..._SB_.._PSR.p 4ad0: 01 41 43 50 57 a4 41 43 50 57 14 1a 45 43 4f 4b .ACPW.ACPW..ECOK 4ae0: 00 a0 0f 93 5e 2e 45 43 30 5f 5a 30 30 39 01 a4 ....^.EC0_Z009.. 4af0: 01 a1 03 a4 00 5b 82 4e 6f 45 43 30 5f 08 5f 48 .....[.NoEC0_._H 4b00: 49 44 0c 41 d0 0c 09 08 5f 47 50 45 0a 1c 08 5a ID.A...._GPE...Z 4b10: 30 30 39 00 08 5f 43 52 53 11 15 0a 12 47 01 62 009.._CRS....G.b 4b20: 00 62 00 01 01 47 01 66 00 66 00 01 01 79 00 14 .b...G.f.f...y.. 4b30: 3b 5f 52 45 47 02 a0 34 93 68 0a 03 70 69 5a 30 ;_REG..4.h..piZ0 4b40: 30 39 a0 28 5b 12 5f 4f 53 49 60 70 00 42 54 44 09.([._OSI`p.BTD 4b50: 53 a0 19 5f 4f 53 49 0d 57 69 6e 64 6f 77 73 20 S.._OSI.Windows 4b60: 32 30 30 36 00 70 01 42 54 44 53 5b 80 45 52 41 2006.p.BTDS[.ERA 4b70: 4d 03 00 0a ff 5b 81 4e 2e 45 52 41 4d 11 00 40 M....[.N.ERAM..@ 4b80: 30 53 4d 50 52 08 53 4d 53 54 08 53 4d 41 44 08 0SMPR.SMST.SMAD. 4b90: 53 4d 43 4d 08 53 4d 44 30 40 10 42 43 4e 54 08 SMCM.SMD0@.BCNT. 4ba0: 53 4d 41 41 18 00 40 04 43 48 47 4d 10 43 48 47 SMAA..@.CHGM.CHG 4bb0: 53 10 45 4e 49 44 08 45 4e 49 42 08 45 4e 44 44 S.ENID.ENIB.ENDD 4bc0: 08 43 48 47 56 08 43 48 47 41 10 42 41 4c 30 01 .CHGV.CHGA.BAL0. 4bd0: 42 41 4c 31 01 42 41 4c 32 01 42 41 4c 33 01 42 BAL1.BAL2.BAL3.B 4be0: 42 43 30 01 42 42 43 31 01 42 42 43 32 01 42 42 BC0.BBC1.BBC2.BB 4bf0: 43 33 01 00 08 50 48 44 44 01 49 46 44 44 01 49 C3...PHDD.IFDD.I 4c00: 4f 44 44 01 53 48 44 44 01 53 31 32 30 01 45 46 ODD.SHDD.S120.EF 4c10: 44 44 01 43 52 54 44 01 53 50 57 52 01 53 42 54 DD.CRTD.SPWR.SBT 4c20: 4e 01 56 49 44 4f 01 56 4f 4c 44 01 56 4f 4c 55 N.VIDO.VOLD.VOLU 4c30: 01 4d 55 54 45 01 43 4f 4e 54 01 42 52 47 54 01 .MUTE.CONT.BRGT. 4c40: 48 42 54 4e 01 53 34 53 54 01 53 4b 45 59 01 42 HBTN.S4ST.SKEY.B 4c50: 4b 45 59 01 54 4f 55 50 01 46 4e 42 4e 01 4c 49 KEY.TOUP.FNBN.LI 4c60: 44 46 01 44 49 47 4d 01 55 57 41 4b 01 00 08 44 DF.DIGM.UWAK...D 4c70: 4b 53 50 01 44 4b 49 4e 01 44 4b 49 44 01 44 4b KSP.DKIN.DKID.DK 4c80: 4f 4b 01 00 04 44 4b 50 57 01 00 07 42 54 4e 53 OK...DKPW...BTNS 4c90: 08 53 31 4c 44 01 53 33 4c 44 01 56 47 41 51 01 .S1LD.S3LD.VGAQ. 4ca0: 50 43 4d 51 01 50 43 4d 52 01 41 44 50 54 01 53 PCMQ.PCMR.ADPT.S 4cb0: 4c 4c 53 01 53 59 53 37 01 50 57 41 4b 01 4d 57 LLS.SYS7.PWAK.MW 4cc0: 41 4b 01 4c 57 41 4b 01 00 05 00 28 54 43 4e 4c AK.LWAK....(TCNL 4cd0: 08 54 4d 50 49 08 54 4d 53 44 08 46 41 53 4e 04 .TMPI.TMSD.FASN. 4ce0: 46 41 53 55 04 50 43 56 4c 04 00 02 53 57 54 4f FASU.PCVL...SWTO 4cf0: 01 48 57 54 4f 01 4d 4f 44 45 01 46 41 4e 53 02 .HWTO.MODE.FANS. 4d00: 49 4e 49 54 01 46 41 4e 31 01 46 41 4e 32 01 46 INIT.FAN1.FAN2.F 4d10: 41 4e 54 01 53 4b 4e 4d 01 43 54 4d 50 08 4c 49 ANT.SKNM.CTMP.LI 4d20: 44 45 01 50 4d 45 45 01 50 57 42 45 01 52 4e 47 DE.PMEE.PWBE.RNG 4d30: 45 01 42 54 57 45 01 44 43 4b 45 01 00 02 53 4b E.BTWE.DCKE...SK 4d40: 54 58 08 53 4b 54 42 08 53 4b 54 43 08 53 4b 54 TX.SKTB.SKTC.SKT 4d50: 41 08 00 08 48 41 50 4c 02 48 41 50 52 01 00 05 A...HAPL.HAPR... 4d60: 42 54 44 54 01 42 54 50 57 01 42 54 44 53 01 42 BTDT.BTPW.BTDS.B 4d70: 54 50 53 01 42 54 53 57 01 42 54 57 4b 01 42 54 TPS.BTSW.BTWK.BT 4d80: 4c 44 01 00 01 42 52 54 53 08 43 4e 54 53 08 57 LD...BRTS.CNTS.W 4d90: 4c 41 54 01 42 54 41 54 01 57 4c 45 58 01 42 54 LAT.BTAT.WLEX.BT 4da0: 45 58 01 4b 4c 53 57 01 57 4c 4f 4b 01 00 02 50 EX.KLSW.WLOK...P 4db0: 54 49 44 08 43 50 55 54 08 45 50 4b 54 08 47 48 TID.CPUT.EPKT.GH 4dc0: 49 44 08 00 04 42 4d 46 30 03 42 54 59 30 01 42 ID...BMF0.BTY0.B 4dd0: 53 54 30 08 42 52 43 30 10 42 53 4e 30 10 42 50 ST0.BRC0.BSN0.BP 4de0: 56 30 10 42 44 56 30 10 42 44 43 30 10 42 46 43 V0.BDV0.BDC0.BFC 4df0: 30 10 47 41 55 30 08 43 59 43 30 08 42 50 43 30 0.GAU0.CYC0.BPC0 4e00: 10 42 41 43 30 10 42 41 54 30 08 42 54 57 30 10 .BAC0.BAT0.BTW0. 4e10: 42 44 4e 30 08 00 40 04 00 04 42 4d 46 31 03 42 BDN0..@...BMF1.B 4e20: 54 59 31 01 42 53 54 31 08 42 52 43 31 10 42 53 TY1.BST1.BRC1.BS 4e30: 4e 31 10 42 50 56 31 10 42 44 56 31 10 42 44 43 N1.BPV1.BDV1.BDC 4e40: 31 10 42 46 43 31 10 47 41 55 31 08 43 59 43 31 1.BFC1.GAU1.CYC1 4e50: 08 42 50 43 31 10 42 41 43 31 10 42 41 54 31 08 .BPC1.BAC1.BAT1. 4e60: 42 54 57 31 10 14 37 5f 51 31 31 00 70 0a 87 50 BTW1..7_Q11.p..P 4e70: 38 30 48 a0 13 49 47 44 53 5e 5e 5e 2e 47 46 58 80H..IGDS^^^.GFX 4e80: 30 42 52 54 4e 0a 87 a1 15 86 5e 5e 5e 2f 03 50 0BRTN.....^^^/.P 4e90: 45 47 50 56 47 41 5f 4c 43 44 5f 0a 87 14 37 5f EGPVGA_LCD_...7_ 4ea0: 51 31 32 00 70 0a 86 50 38 30 48 a0 13 49 47 44 Q12.p..P80H..IGD 4eb0: 53 5e 5e 5e 2e 47 46 58 30 42 52 54 4e 0a 86 a1 S^^^.GFX0BRTN... 4ec0: 15 86 5e 5e 5e 2f 03 50 45 47 50 56 47 41 5f 4c ..^^^/.PEGPVGA_L 4ed0: 43 44 5f 0a 86 14 40 05 5f 51 31 43 00 70 0d 3d CD_...@._Q1C.p.= 4ee0: 3d 3d 3d 3d 51 55 45 52 59 5f 31 43 3d 3d 3d 3d ====QUERY_1C==== 4ef0: 3d 00 5b 31 a0 31 56 49 44 4f a0 12 49 47 44 53 =.[1.1VIDO..IGDS 4f00: 5e 5e 5e 2e 47 46 58 30 47 48 44 53 00 a1 12 5e ^^^.GFX0GHDS...^ 4f10: 5e 5e 2f 03 50 45 47 50 56 47 41 5f 44 53 53 57 ^^/.PEGPVGA_DSSW 4f20: 70 00 56 49 44 4f 14 21 5f 51 31 44 00 70 0d 3d p.VIDO.!_Q1D.p.= 4f30: 3d 3d 3d 3d 51 55 45 52 59 5f 31 44 3d 3d 3d 3d ====QUERY_1D==== 4f40: 3d 00 5b 31 50 43 4c 4b 14 21 5f 51 31 45 00 70 =.[1PCLK.!_Q1E.p 4f50: 0d 3d 3d 3d 3d 3d 51 55 45 52 59 5f 31 45 3d 3d .=====QUERY_1E== 4f60: 3d 3d 3d 00 5b 31 50 43 4c 4b 14 39 5f 51 32 35 ===.[1PCLK.9_Q25 4f70: 00 70 0d 3d 3d 3d 3d 3d 51 55 45 52 59 5f 32 35 .p.=====QUERY_25 4f80: 3d 3d 3d 3d 3d 00 5b 31 5b 22 0b e8 03 86 5e 5e =====.[1["....^^ 4f90: 42 41 54 31 0a 81 5b 22 0b e8 03 86 5e 5e 42 41 BAT1..["....^^BA 4fa0: 54 31 0a 80 14 2f 5f 51 33 34 00 70 0d 3d 3d 3d T1.../_Q34.p.=== 4fb0: 3d 3d 51 55 45 52 59 5f 33 34 3d 3d 3d 3d 3d 00 ==QUERY_34=====. 4fc0: 5b 31 a0 11 42 4b 45 59 50 48 53 53 0a 71 70 00 [1..BKEYPHSS.qp. 4fd0: 42 4b 45 59 14 32 5f 51 33 37 00 70 0d 3d 3d 3d BKEY.2_Q37.p.=== 4fe0: 3d 3d 51 55 45 52 59 5f 33 37 3d 3d 3d 3d 3d 00 ==QUERY_37=====. 4ff0: 5b 31 86 41 43 41 44 0a 80 5b 22 0b e8 03 86 5e [1.ACAD..["....^ 5000: 5e 42 41 54 31 0a 80 14 32 5f 51 33 38 00 70 0d ^BAT1...2_Q38.p. 5010: 3d 3d 3d 3d 3d 51 55 45 52 59 5f 33 38 3d 3d 3d =====QUERY_38=== 5020: 3d 3d 00 5b 31 86 41 43 41 44 0a 80 5b 22 0b e8 ==.[1.ACAD..[".. 5030: 03 86 5e 5e 42 41 54 31 0a 80 14 29 5f 51 32 44 ..^^BAT1...)_Q2D 5040: 00 70 0d 3d 3d 3d 3d 3d 51 55 45 52 59 5f 32 44 .p.=====QUERY_2D 5050: 3d 3d 3d 3d 3d 00 5b 31 70 00 44 54 53 4d 54 52 =====.[1p.DTSMTR 5060: 41 50 0a 46 14 29 5f 51 32 45 00 70 0d 3d 3d 3d AP.F.)_Q2E.p.=== 5070: 3d 3d 51 55 45 52 59 5f 32 45 3d 3d 3d 3d 3d 00 ==QUERY_2E=====. 5080: 5b 31 70 01 44 54 53 4d 54 52 41 50 0a 46 5b 80 [1p.DTSMTRAP.F[. 5090: 43 43 4c 4b 01 0b 10 10 0a 04 5b 81 20 43 43 4c CCLK......[. CCL 50a0: 4b 03 00 01 44 55 54 59 03 54 48 45 4e 01 00 03 K...DUTY.THEN... 50b0: 46 54 54 5f 01 00 08 54 53 54 53 01 5b 80 45 43 FTT_...TSTS.[.EC 50c0: 52 4d 03 00 0a ff 5b 81 44 04 45 43 52 4d 11 00 RM....[.D.ECRM.. 50d0: 40 4a 45 52 49 42 10 45 52 42 44 08 00 48 0a 53 @JERIB.ERBD..H.S 50e0: 44 54 4d 08 46 53 53 4e 04 46 41 4e 55 04 50 54 DTM.FSSN.FANU.PT 50f0: 56 4c 03 00 04 54 54 48 52 01 00 48 06 50 4a 49 VL...TTHR..H.PJI 5100: 44 08 00 08 00 48 1d 52 46 52 44 10 5b 01 46 41 D....H.RFRD.[.FA 5110: 4d 58 00 14 22 46 41 4e 47 01 5b 23 46 41 4d 58 MX.."FANG.[#FAMX 5120: ff ff 70 68 45 52 49 42 70 45 52 42 44 60 5b 27 ..phERIBpERBD`[' 5130: 46 41 4d 58 a4 60 14 22 46 41 4e 57 02 5b 23 46 FAMX.`."FANW.[#F 5140: 41 4d 58 ff ff 70 68 45 52 49 42 70 69 45 52 42 AMX..phERIBpiERB 5150: 44 5b 27 46 41 4d 58 a4 69 14 09 54 55 56 52 01 D['FAMX.i..TUVR. 5160: a4 0a 03 14 2e 54 48 52 4f 01 a0 09 93 68 00 a4 .....THRO....h.. 5170: 54 48 45 4e a1 1d a0 09 93 68 01 a4 44 55 54 59 THEN.....h..DUTY 5180: a1 11 a0 0a 93 68 0a 02 a4 54 54 48 52 a1 04 a4 .....h...TTHR... 5190: 0a ff 14 2a 43 4c 43 4b 01 a0 10 93 68 00 70 00 ...*CLCK....h.p. 51a0: 54 48 45 4e 70 00 46 54 54 5f a1 0d 70 68 44 55 THENp.FTT_..phDU 51b0: 54 59 70 01 54 48 45 4e a4 54 48 45 4e 14 37 50 TYp.THEN.THEN.7P 51c0: 43 4c 4b 00 70 50 54 56 4c 60 a0 10 93 60 00 70 CLK.pPTVL`...`.p 51d0: 00 54 48 45 4e 70 00 46 54 54 5f a1 19 76 60 70 .THENp.FTT_..v`p 51e0: 80 60 00 61 7b 61 0a 07 61 70 61 44 55 54 59 70 .`.a{a..apaDUTYp 51f0: 01 54 48 45 4e 5b 82 4b 22 42 41 54 31 08 5f 48 .THEN[.K"BAT1._H 5200: 49 44 0c 41 d0 0c 0a 08 5f 55 49 44 01 08 5f 50 ID.A...._UID.._P 5210: 43 4c 12 06 01 5f 53 42 5f 14 39 5f 53 54 41 00 CL..._SB_.9_STA. 5220: a0 29 90 45 43 4f 4b 93 45 43 44 59 00 a0 13 5e .).ECOK.ECDY...^ 5230: 5e 2e 45 43 30 5f 42 41 4c 30 5b 22 0a 14 a4 0a ^.EC0_BAL0[".... 5240: 1f a1 08 5b 22 0a 14 a4 0a 0f a1 08 5b 22 0a 14 ...[".......[".. 5250: a4 0a 1f 14 48 10 5f 42 49 46 00 08 53 54 41 54 ....H._BIF..STAT 5260: 12 3a 0d 01 0b a0 0f 0b a0 0f 01 0b 5c 2b 0b a4 .:..........\+.. 5270: 01 0a 9c 0b 08 01 0b c4 0e 0d 50 41 33 34 36 35 ..........PA3465 5280: 55 20 00 0d 33 36 35 38 51 00 0d 4c 69 2d 49 6f U ..3658Q..Li-Io 5290: 6e 00 0d 43 4f 4d 50 41 4c 20 00 a0 4b 07 90 45 n..COMPAL ..K..E 52a0: 43 4f 4b 93 45 43 44 59 00 70 5e 5e 2e 45 43 30 COK.ECDY.p^^.EC0 52b0: 5f 42 44 4e 30 60 a0 23 93 60 0a 08 70 0a b4 88 _BDN0`.#.`..p... 52c0: 53 54 41 54 0a 06 00 70 0d 50 41 33 34 35 37 55 STAT...p.PA3457U 52d0: 20 00 88 53 54 41 54 0a 09 00 a0 24 93 60 0a 20 ..STAT....$.`. 52e0: 70 0b 02 01 88 53 54 41 54 0a 06 00 70 0d 50 41 p....STAT...p.PA 52f0: 33 34 35 37 55 20 00 88 53 54 41 54 0a 09 00 5b 3457U ..STAT...[ 5300: 22 0a 14 70 5e 5e 2e 45 43 30 5f 42 44 43 30 42 "..p^^.EC0_BDC0B 5310: 46 43 31 5b 22 0a 14 a1 12 70 0d 4c 69 2d 49 6f FC1["....p.Li-Io 5320: 6e 00 88 53 54 41 54 0a 0b 00 a0 2c 42 46 43 31 n..STAT....,BFC1 5330: 78 42 46 43 31 0a 64 60 61 77 61 0a 64 61 70 61 xBFC1.d`awa.dapa 5340: 42 46 43 31 70 61 88 53 54 41 54 01 00 70 61 88 BFC1pa.STAT..pa. 5350: 53 54 41 54 0a 02 00 a4 53 54 41 54 14 45 0c 5f STAT....STAT.E._ 5360: 42 53 54 00 08 50 42 53 54 12 10 04 00 0c ff ff BST..PBST....... 5370: ff ff 0c ff ff ff ff 0b 5c 2b 70 0b 5c 2b 63 a0 ........\+p.\+c. 5380: 38 90 45 43 4f 4b 93 45 43 44 59 00 5b 22 0a 14 8.ECOK.ECDY.[".. 5390: 70 5e 5e 2e 45 43 30 5f 42 53 54 30 42 53 54 31 p^^.EC0_BST0BST1 53a0: 5b 22 0a 14 70 5e 5e 2e 45 43 30 5f 47 41 55 30 ["..p^^.EC0_GAU0 53b0: 42 47 55 31 5b 22 0a 14 a0 15 42 46 43 31 77 42 BGU1["....BFC1wB 53c0: 47 55 31 42 46 43 31 62 78 62 0a 64 64 62 a1 09 GU1BFC1bxb.ddb.. 53d0: 77 42 47 55 31 0a 28 62 70 42 53 54 31 88 50 42 wBGU1.(bpBST1.PB 53e0: 53 54 00 00 70 00 88 50 42 53 54 01 00 70 62 88 ST..p..PBST..pb. 53f0: 50 42 53 54 0a 02 00 70 63 88 50 42 53 54 0a 03 PBST...pc.PBST.. 5400: 00 a0 1b 94 45 43 44 59 00 76 45 43 44 59 a0 0e ....ECDY.vECDY.. 5410: 93 45 43 44 59 00 86 42 41 54 31 0a 80 a4 50 42 .ECDY..BAT1...PB 5420: 53 54 5b 82 2e 50 53 32 4b 08 5f 48 49 44 0c 41 ST[..PS2K._HID.A 5430: d0 03 03 08 5f 43 52 53 11 19 0a 16 47 01 60 00 ...._CRS....G.`. 5440: 60 00 01 01 47 01 64 00 64 00 01 01 23 02 00 01 `...G.d.d...#... 5450: 79 00 5b 82 1e 50 53 32 4d 08 5f 48 49 44 0c 41 y.[..PS2M._HID.A 5460: d0 0f 13 08 5f 43 52 53 11 09 0a 06 23 00 10 01 ...._CRS....#... 5470: 79 00 5b 82 43 6a 50 41 54 41 08 5f 41 44 52 0c y.[.CjPATA._ADR. 5480: 01 00 1f 00 5b 80 50 41 43 53 02 0a 40 0a c0 5b ....[.PACS..@..[ 5490: 81 49 04 50 41 43 53 03 50 52 49 54 10 00 10 50 .I.PACS.PRIT...P 54a0: 53 49 54 04 00 1c 53 59 4e 43 04 00 0c 53 44 54 SIT...SYNC...SDT 54b0: 30 02 00 02 53 44 54 31 02 00 4a 04 49 43 52 30 0...SDT1..J.ICR0 54c0: 04 49 43 52 31 04 49 43 52 32 04 49 43 52 33 04 .ICR1.ICR2.ICR3. 54d0: 49 43 52 34 04 49 43 52 35 04 5b 82 4b 63 50 52 ICR4.ICR5.[.KcPR 54e0: 49 44 08 5f 41 44 52 00 14 40 17 5f 47 54 4d 00 ID._ADR..@._GTM. 54f0: 08 50 42 55 46 11 17 0a 14 00 00 00 00 00 00 00 .PBUF........... 5500: 00 00 00 00 00 00 00 00 00 00 00 00 00 8a 50 42 ..............PB 5510: 55 46 00 50 49 4f 30 8a 50 42 55 46 0a 04 44 4d UF.PIO0.PBUF..DM 5520: 41 30 8a 50 42 55 46 0a 08 50 49 4f 31 8a 50 42 A0.PBUF..PIO1.PB 5530: 55 46 0a 0c 44 4d 41 31 8a 50 42 55 46 0a 10 46 UF..DMA1.PBUF..F 5540: 4c 41 47 70 47 45 54 50 50 52 49 54 50 49 4f 30 LAGpGETPPRITPIO0 5550: 70 47 44 4d 41 7b 53 59 4e 43 01 00 7b 49 43 52 pGDMA{SYNC..{ICR 5560: 33 01 00 7b 49 43 52 30 01 00 53 44 54 30 7b 49 3..{ICR0..SDT0{I 5570: 43 52 31 01 00 44 4d 41 30 a0 14 93 44 4d 41 30 CR1..DMA0...DMA0 5580: 0c ff ff ff ff 70 50 49 4f 30 44 4d 41 30 a0 2e .....pPIO0DMA0.. 5590: 7b 50 52 49 54 0b 00 40 00 a0 14 93 7b 50 52 49 {PRIT..@....{PRI 55a0: 54 0a 90 00 0a 80 70 0b 84 03 50 49 4f 31 a1 0e T.....p...PIO1.. 55b0: 70 47 45 54 54 50 53 49 54 50 49 4f 31 a1 0b 70 pGETTPSITPIO1..p 55c0: 0c ff ff ff ff 50 49 4f 31 70 47 44 4d 41 7b 53 .....PIO1pGDMA{S 55d0: 59 4e 43 0a 02 00 7b 49 43 52 33 0a 02 00 7b 49 YNC...{ICR3...{I 55e0: 43 52 30 0a 02 00 53 44 54 31 7b 49 43 52 31 0a CR0...SDT1{ICR1. 55f0: 02 00 44 4d 41 31 a0 14 93 44 4d 41 31 0c ff ff ..DMA1...DMA1... 5600: ff ff 70 50 49 4f 31 44 4d 41 31 70 47 45 54 46 ..pPIO1DMA1pGETF 5610: 7b 53 59 4e 43 01 00 7b 53 59 4e 43 0a 02 00 50 {SYNC..{SYNC...P 5620: 52 49 54 46 4c 41 47 a0 2c 7b 93 50 49 4f 30 0c RITFLAG.,{.PIO0. 5630: ff ff ff ff 93 44 4d 41 30 0c ff ff ff ff 00 70 .....DMA0......p 5640: 0a 78 50 49 4f 30 70 0a 14 44 4d 41 30 70 0a 03 .xPIO0p..DMA0p.. 5650: 46 4c 41 47 a4 50 42 55 46 14 4c 2a 5f 53 54 4d FLAG.PBUF.L*_STM 5660: 03 8a 68 00 50 49 4f 30 8a 68 0a 04 44 4d 41 30 ..h.PIO0.h..DMA0 5670: 8a 68 0a 08 50 49 4f 31 8a 68 0a 0c 44 4d 41 31 .h..PIO1.h..DMA1 5680: 8a 68 0a 10 46 4c 41 47 a0 41 12 93 87 69 0b 00 .h..FLAG.A...i.. 5690: 02 7b 50 52 49 54 0b f0 c0 50 52 49 54 7b 53 59 .{PRIT...PRIT{SY 56a0: 4e 43 0a 02 53 59 4e 43 70 00 53 44 54 30 7b 49 NC..SYNCp.SDT0{I 56b0: 43 52 30 0a 02 49 43 52 30 7b 49 43 52 31 0a 02 CR0..ICR0{ICR1.. 56c0: 49 43 52 31 7b 49 43 52 33 0a 02 49 43 52 33 7b ICR1{ICR3..ICR3{ 56d0: 49 43 52 35 0a 02 49 43 52 35 8b 69 0a 62 57 34 ICR5..ICR5.i.bW4 56e0: 39 30 8b 69 0a 6a 57 35 33 30 8b 69 0a 7e 57 36 90.i.jW530.i.~W6 56f0: 33 30 8b 69 0a 80 57 36 34 30 8b 69 0a b0 57 38 30.i..W640.i..W8 5700: 38 30 8b 69 0a ba 57 39 33 30 7d 50 52 49 54 0b 80.i..W930}PRIT. 5710: 04 80 50 52 49 54 a0 1e 90 7b 46 4c 41 47 0a 02 ..PRIT...{FLAG.. 5720: 00 7b 57 34 39 30 0b 00 08 00 7d 50 52 49 54 0a .{W490....}PRIT. 5730: 02 50 52 49 54 7d 50 52 49 54 53 45 54 50 50 49 .PRIT}PRITSETPPI 5740: 4f 30 57 35 33 30 57 36 34 30 50 52 49 54 a0 4b O0W530W640PRIT.K 5750: 05 7b 46 4c 41 47 01 00 7d 53 59 4e 43 01 53 59 .{FLAG..}SYNC.SY 5760: 4e 43 70 53 44 4d 41 44 4d 41 30 53 44 54 30 a0 NCpSDMADMA0SDT0. 5770: 12 95 44 4d 41 30 0a 1e 7d 49 43 52 33 01 49 43 ..DMA0..}ICR3.IC 5780: 52 33 a0 12 95 44 4d 41 30 0a 3c 7d 49 43 52 30 R3...DMA0.<}ICR0 5790: 01 49 43 52 30 a0 14 7b 57 39 33 30 0b 00 20 00 .ICR0..{W930.. . 57a0: 7d 49 43 52 31 01 49 43 52 31 a0 4b 15 93 87 6a }ICR1.ICR1.K...j 57b0: 0b 00 02 7b 50 52 49 54 0b 0f bf 50 52 49 54 70 ...{PRIT...PRITp 57c0: 00 50 53 49 54 7b 53 59 4e 43 01 53 59 4e 43 70 .PSIT{SYNC.SYNCp 57d0: 00 53 44 54 31 7b 49 43 52 30 01 49 43 52 30 7b .SDT1{ICR0.ICR0{ 57e0: 49 43 52 31 01 49 43 52 31 7b 49 43 52 33 01 49 ICR1.ICR1{ICR3.I 57f0: 43 52 33 7b 49 43 52 35 01 49 43 52 35 8b 6a 0a CR3{ICR5.ICR5.j. 5800: 62 57 34 39 31 8b 6a 0a 6a 57 35 33 31 8b 6a 0a bW491.j.jW531.j. 5810: 7e 57 36 33 31 8b 6a 0a 80 57 36 34 31 8b 6a 0a ~W631.j..W641.j. 5820: b0 57 38 38 31 8b 6a 0a ba 57 39 33 31 7d 50 52 .W881.j..W931}PR 5830: 49 54 0b 40 80 50 52 49 54 a0 1e 90 7b 46 4c 41 IT.@.PRIT...{FLA 5840: 47 0a 08 00 7b 57 34 39 31 0b 00 08 00 7d 50 52 G...{W491....}PR 5850: 49 54 0a 20 50 52 49 54 a0 4c 04 7b 46 4c 41 47 IT. PRIT.L.{FLAG 5860: 0a 10 00 7d 50 52 49 54 0b 00 40 50 52 49 54 a0 ...}PRIT..@PRIT. 5870: 13 94 50 49 4f 31 0a f0 7d 50 52 49 54 0a 80 50 ..PIO1..}PRIT..P 5880: 52 49 54 a1 21 7d 50 52 49 54 0a 10 50 52 49 54 RIT.!}PRIT..PRIT 5890: 70 53 45 54 54 50 49 4f 31 57 35 33 31 57 36 34 pSETTPIO1W531W64 58a0: 31 50 53 49 54 a0 40 06 7b 46 4c 41 47 0a 04 00 1PSIT.@.{FLAG... 58b0: 7d 53 59 4e 43 0a 02 53 59 4e 43 70 53 44 4d 41 }SYNC..SYNCpSDMA 58c0: 44 4d 41 31 53 44 54 31 a0 13 95 44 4d 41 31 0a DMA1SDT1...DMA1. 58d0: 1e 7d 49 43 52 33 0a 02 49 43 52 33 a0 13 95 44 .}ICR3..ICR3...D 58e0: 4d 41 31 0a 3c 7d 49 43 52 30 0a 02 49 43 52 30 MA1.<}ICR0..ICR0 58f0: a0 15 7b 57 39 33 31 0b 00 20 00 7d 49 43 52 31 ..{W931.. .}ICR1 5900: 0a 02 49 43 52 31 5b 82 47 10 50 5f 44 30 08 5f ..ICR1[.G.P_D0._ 5910: 41 44 52 00 14 4a 0f 5f 47 54 46 00 08 50 49 42 ADR..J._GTF..PIB 5920: 30 11 11 0a 0e 03 00 00 00 00 a0 ef 03 00 00 00 0............... 5930: 00 a0 ef 8c 50 49 42 30 01 50 4d 44 30 8c 50 49 ....PIB0.PMD0.PI 5940: 42 30 0a 08 44 4d 44 30 a0 40 06 7b 50 52 49 54 B0..DMD0.@.{PRIT 5950: 0a 02 00 a0 13 93 7b 50 52 49 54 0a 09 00 0a 08 ......{PRIT..... 5960: 70 0a 08 50 4d 44 30 a1 41 04 70 0a 0a 50 4d 44 p..PMD0.A.p..PMD 5970: 30 7a 7b 50 52 49 54 0b 00 03 00 0a 08 60 7a 7b 0z{PRIT......`z{ 5980: 50 52 49 54 0b 00 30 00 0a 0c 61 72 60 61 62 a0 PRIT..0...ar`ab. 5990: 0c 93 0a 03 62 70 0a 0b 50 4d 44 30 a0 0c 93 0a ....bp..PMD0.... 59a0: 05 62 70 0a 0c 50 4d 44 30 a1 07 70 01 50 4d 44 .bp..PMD0..p.PMD 59b0: 30 a0 43 04 7b 53 59 4e 43 01 00 70 7d 53 44 54 0.C.{SYNC..p}SDT 59c0: 30 0a 40 00 44 4d 44 30 a0 2c 7b 49 43 52 31 01 0.@.DMD0.,{ICR1. 59d0: 00 a0 13 7b 49 43 52 30 01 00 72 44 4d 44 30 0a ...{ICR0..rDMD0. 59e0: 02 44 4d 44 30 a0 0f 7b 49 43 52 33 01 00 70 0a .DMD0..{ICR3..p. 59f0: 45 44 4d 44 30 a1 14 7d 74 7b 50 4d 44 30 0a 07 EDMD0..}t{PMD0.. 5a00: 00 0a 02 00 0a 20 44 4d 44 30 a4 50 49 42 30 5b ..... DMD0.PIB0[ 5a10: 82 46 10 50 5f 44 31 08 5f 41 44 52 01 14 49 0f .F.P_D1._ADR..I. 5a20: 5f 47 54 46 00 08 50 49 42 31 11 11 0a 0e 03 00 _GTF..PIB1...... 5a30: 00 00 00 b0 ef 03 00 00 00 00 b0 ef 8c 50 49 42 .............PIB 5a40: 31 01 50 4d 44 31 8c 50 49 42 31 0a 08 44 4d 44 1.PMD1.PIB1..DMD 5a50: 31 a0 4b 05 7b 50 52 49 54 0a 20 00 a0 13 93 7b 1.K.{PRIT. ....{ 5a60: 50 52 49 54 0a 90 00 0a 80 70 0a 08 50 4d 44 31 PRIT.....p..PMD1 5a70: a1 3c 72 7b 50 53 49 54 0a 03 00 7a 7b 50 53 49 . $TMPLOG diff $TMPLOG $FWTSTESTDIR/method-0001/method-0001.log >> $FAILURE_LOG ret=$? if [ $ret -eq 0 ]; then echo PASSED: $TEST, $NAME else echo FAILED: $TEST, $NAME fi rm $TMPLOG exit $ret fwts-test/oops-0001/000077500000000000000000000000001231470457100143605ustar00rootroot00000000000000fwts-test/oops-0001/oops-0001.log000066400000000000000000003502641231470457100164330ustar00rootroot00000000000000oops oops: Scan kernel log for Oopses. oops ---------------------------------------------------------- oops Test 1 of 1: Kernel log oops check. oops Found OOPS (1): oops BUG: unable to handle kernel NULL pointer dereference at (null) oops IP: [] __mutex_lock_slowpath+0x8a/0x130 oops *pde = af517067 oops Oops: 0002 [#1] SMP oops last sysfs file: /sys/devices/pci0000:00/0000:00:14.1/host9/target9:0:1/9:0:1:0/block/sdh/dev oops Modules linked in: snd_seq snd_timer snd_seq_device radeon(+) ttm drm_kms_helper fbcon tileblit font bitblit softcursor snd soundcore drm agpgart i2c_algo_bit shpchp joydev snd_page_alloc r8169 vga16fb usb_storage vgastate mii i2c_piix4 usbhid k8temp lp parport oops oops Pid: 410, comm: plymouthd Not tainted (2.6.32-13-generic #18-Ubuntu) A780GM-A oops EIP: 0060:[] EFLAGS: 00010246 CPU: 0 oops EIP is at __mutex_lock_slowpath+0x8a/0x130 oops EAX: 00000000 EBX: f63f727c ECX: f63f7284 EDX: f6945ec4 oops ESI: f63f7280 EDI: f63f728c EBP: f6945edc ESP: f6945eb8 oops DS: 007b ES: 007b FS: 00d8 GS: 00e0 SS: 0068 oops Process plymouthd (pid: 410, ti=f6944000 task=f649a670 task.ti=f6944000) oops Stack: oops 00000000 f63f7284 f649a670 f63f7284 00000000 f63f7000 f63f727c f62b96c0 oops <0> f63f727c f6945eec c05a4f35 f62b96c0 f62b96c0 f6945f00 f81eb123 f62b96c0 oops <0> f64dd000 f63f7000 f6945f44 f81e2ecf 00000001 f81f2365 f81f1980 f81f3890 oops Call Trace: oops [] ? mutex_lock+0x25/0x40 oops [] ? drm_fb_release+0x23/0x70 [drm] oops [] ? drm_release+0x2ff/0x390 [drm] oops [] ? __fput+0xdf/0x1f0 oops [] ? fput+0x1d/0x30 oops [] ? filp_close+0x4c/0x80 oops [] ? sys_close+0x78/0xc0 oops [] ? syscall_call+0x7/0xb oops Code: 18 63 7f bd 90 8d 74 26 00 8d 73 04 89 f0 e8 ce 11 00 00 8d 55 e8 8d 43 08 89 45 e0 8b 43 0c 89 53 0c 8b 4d e0 89 45 ec 89 4d e8 <89> 10 8b 45 e4 ba ff ff ff ff 89 45 f0 89 d0 87 03 83 f8 01 74 oops EIP: [] __mutex_lock_slowpath+0x8a/0x130 SS:ESP 0068:f6945eb8 oops CR2: 0000000000000000 oops oops Found OOPS (2): oops BUG: unable to handle kernel NULL pointer dereference at 00000000000003a7 oops IP: [] con_insert_unipair+0x4b/0x250 oops PGD 60954067 PUD 60220067 PMD 0 oops Oops: 0000 [#1] SMP oops last sysfs file: /sys/module/soundcore/initstate oops CPU 0 oops Modules linked in: amd64_edac_mod(+) uvcvideo(+) videodev v4l1_compat v4l2_compat_ioctl32 soundcore psmouse serio_raw jmb38x_ms k8temp snd_page_alloc i2c_piix4 edac_core edac_mce_amd sdhci_pci jme memstick sdhci mii led_class shpchp lp parport fbcon tileblit font bitblit softcursor vga16fb vgastate radeon ttm usbhid drm_kms_helper hid drm i2c_algo_bit ahci pata_atiixp video output oops Pid: 638, comm: setfont Not tainted 2.6.32-21-generic #32-Ubuntu M77xK oops RIP: 0010:[] [] con_insert_unipair+0x4b/0x250 oops RSP: 0018:ffff880060a99cd8 EFLAGS: 00010206 oops RAX: 000000000000037f RBX: 0000000000000153 RCX: ffffffff8133aee6 oops RDX: 0000000000000005 RSI: 0000000000000153 RDI: ffff880060230a00 oops RBP: ffff880060a99d18 R08: 0000000000000000 R09: 0000000000000080 oops R10: 0000000000000001 R11: 0000000000000000 R12: ffff880060230a00 oops R13: 00000000000000e1 R14: 00000000000003a7 R15: 0000000000000000 oops FS: 00007f58fd4a5700(0000) GS:ffff880001c00000(0000) knlGS:0000000000000000 oops CS: 0010 DS: 0000 ES: 0000 CR0: 000000008005003b oops CR2: 00000000000003a7 CR3: 0000000060bf1000 CR4: 00000000000006f0 oops DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 oops DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400 oops Process setfont (pid: 638, threadinfo ffff880060a98000, task ffff880060cf44d0) oops Stack: oops 0000004001c0ea78 ffff880000014100 ffff880000012a90 000000000000001f oops <0> 0000000000000000 0000000000bb4280 ffff880060230a00 0000000000000000 oops <0> ffff880060a99d98 ffffffff8133b365 0000000000000002 ffff88006d2e0800 oops Call Trace: oops [] con_set_unimap+0x185/0x220 oops [] vt_ioctl+0x159e/0x1820 oops [] ? unlock_page+0x27/0x30 oops [] ? __do_fault+0x439/0x500 oops [] tty_ioctl+0xa2/0x6e0 oops [] vfs_ioctl+0x22/0xa0 oops [] ? __up_read+0x9a/0xc0 oops [] do_vfs_ioctl+0x81/0x380 oops [] ? up_read+0xe/0x10 oops [] ? do_page_fault+0x158/0x3b0 oops [] sys_ioctl+0x81/0xa0 oops [] system_call_fastpath+0x16/0x1b oops Code: 00 41 89 f6 49 89 fc 89 f3 66 41 c1 ee 0b 41 89 d5 41 83 e6 1f 4a 8b 04 f7 48 85 c0 74 53 89 da 66 c1 ea 06 83 e2 1f 4c 8d 34 d0 <49> 8b 06 48 85 c0 0f 84 8e 00 00 00 48 89 da 0f b7 db 83 e2 3f oops RIP [] con_insert_unipair+0x4b/0x250 oops RSP oops CR2: 00000000000003a7 oops oops Found OOPS (3): oops BUG: unable to handle kernel NULL pointer dereference at 00000040 oops IP: [] radeon_agp_init+0x19/0x3d0 [radeon] oops *pde = 00000000 oops Oops: 0000 [#1] SMP oops last sysfs file: /sys/module/usbhid/initstate oops Modules linked in: radeon(+) ttm drm_kms_helper drm hid_sunplus usbhid hid nvidia_agp(+) i2c_algo_bit forcedeth(+) pata_amd(+) agpgart floppy oops oops Pid: 228, comm: modprobe Not tainted (2.6.32-22-generic #36-Ubuntu) oops EIP: 0060:[] EFLAGS: 00010282 CPU: 0 oops EIP is at radeon_agp_init+0x19/0x3d0 [radeon] oops EAX: f69a2c00 EBX: f68f5000 ECX: d8000000 EDX: 00000000 oops ESI: f69a2c00 EDI: 00000001 EBP: f69e1d48 ESP: f69e1cf4 oops DS: 007b ES: 007b FS: 00d8 GS: 00e0 SS: 0068 oops Process modprobe (pid: 228, ti=f69e0000 task=f6998cd0 task.ti=f69e0000) oops Stack: oops f69e1d00 00000292 00000000 f69e1d28 c035d2b0 00000001 f69e1d18 0000000e oops <0> 00000292 00000000 f68f5000 04000000 00000001 f69e1d40 f8333f85 f69e1d37 oops <0> 009a2c00 f68f5000 f68f5000 f69a2c00 00000001 f69e1d54 f833186f f68f5000 oops Call Trace: oops [] ? pci_bus_read_config_byte+0x60/0x70 oops [] ? r100_get_accessible_vram+0x55/0x150 [radeon] oops [] ? r100_mc_init+0x9f/0xe0 [radeon] oops [] ? r100_init+0xd2/0x270 [radeon] oops [] ? _spin_lock_irqsave+0x2f/0x50 oops [] ? vga_client_register+0x6b/0x80 oops [] ? radeon_device_init+0x22f/0x2f0 [radeon] oops [] ? radeon_vga_set_decode+0x0/0x30 [radeon] oops [] ? radeon_driver_load_kms+0x7a/0x190 [radeon] oops [] ? drm_get_dev+0x125/0x230 [drm] oops [] ? sysfs_addrm_start+0x60/0xa0 oops [] ? radeon_pci_probe+0x12/0x17f [radeon] oops [] ? local_pci_probe+0x13/0x20 oops [] ? pci_device_probe+0x68/0x90 oops [] ? really_probe+0x4d/0x140 oops [] ? pm_runtime_barrier+0x4e/0xc0 oops [] ? driver_probe_device+0x3c/0x60 oops [] ? __driver_attach+0x81/0x90 oops [] ? bus_for_each_dev+0x53/0x80 oops [] ? driver_attach+0x1e/0x20 oops [] ? __driver_attach+0x0/0x90 oops [] ? bus_add_driver+0xd5/0x280 oops [] ? pci_device_remove+0x0/0x40 oops [] ? driver_register+0x6a/0x130 oops [] ? __pci_register_driver+0x45/0xb0 oops [] ? drm_init+0xf3/0x100 [drm] oops [] ? radeon_init+0xdf/0xe1 [radeon] oops [] ? do_one_initcall+0x31/0x190 oops [] ? radeon_init+0x0/0xe1 [radeon] oops [] ? sys_init_module+0xb0/0x210 oops [] ? syscall_call+0x7/0xb oops Code: 66 90 e8 eb db e9 ff 5d 66 90 c3 8d b4 26 00 00 00 00 55 89 e5 57 56 53 83 ec 48 0f 1f 44 00 00 89 c3 8b 40 04 8b 90 28 02 00 00 <8b> 4a 40 85 c9 75 12 e8 2b db e9 ff 85 c0 89 c7 0f 85 51 03 00 oops EIP: [] radeon_agp_init+0x19/0x3d0 [radeon] SS:ESP 0068:f69e1cf4 oops CR2: 0000000000000040 oops oops Found OOPS (4): oops BUG: unable to handle kernel NULL pointer dereference at (null) oops IP: [] __mutex_lock_slowpath+0x8a/0x130 oops *pde = 5dfad067 oops Oops: 0002 [#2] SMP oops last sysfs file: /sys/kernel/uevent_seqnum oops Modules linked in: radeon(+) ttm drm_kms_helper drm hid_sunplus usbhid hid nvidia_agp i2c_algo_bit forcedeth pata_amd agpgart floppy oops oops Pid: 271, comm: plymouthd Tainted: G D (2.6.32-22-generic #36-Ubuntu) oops EIP: 0060:[] EFLAGS: 00010246 CPU: 0 oops EIP is at __mutex_lock_slowpath+0x8a/0x130 oops EAX: 00000000 EBX: f69a2e88 ECX: f69a2e90 EDX: f6b0fec0 oops ESI: f69a2e8c EDI: f69a2e98 EBP: f6b0fed8 ESP: f6b0feb4 oops DS: 007b ES: 007b FS: 00d8 GS: 00e0 SS: 0068 oops Process plymouthd (pid: 271, ti=f6b0e000 task=f6a4a670 task.ti=f6b0e000) oops Stack: oops 00000000 f69a2e90 f6a4a670 f69a2e90 00000000 f69a2c00 f69a2e88 f6819680 oops <0> f69a2e88 f6b0fee8 c058a485 f6819680 f6819680 f6b0fefc f81afa53 f6819680 oops <0> f68196e0 f69a2c00 f6b0ff44 f81a707f 00000001 f81b7265 f81b67c0 f81b87c4 oops Call Trace: oops [] ? mutex_lock+0x25/0x40 oops [] ? drm_fb_release+0x23/0x70 [drm] oops [] ? drm_release+0x3cf/0x490 [drm] oops [] ? __fput+0xdf/0x1f0 oops [] ? fput+0x1d/0x30 oops [] ? filp_close+0x4c/0x80 oops [] ? sys_close+0x75/0xc0 oops [] ? syscall_call+0x7/0xb oops Code: 18 63 7f bd 90 8d 74 26 00 8d 73 04 89 f0 e8 de 11 00 00 8d 55 e8 8d 43 08 89 45 e0 8b 43 0c 89 53 0c 8b 4d e0 89 45 ec 89 4d e8 <89> 10 8b 45 e4 ba ff ff ff ff 89 45 f0 89 d0 87 03 83 f8 01 74 oops EIP: [] __mutex_lock_slowpath+0x8a/0x130 SS:ESP 0068:f6b0feb4 oops CR2: 0000000000000000 oops oops Found OOPS (5): oops BUG: unable to handle kernel NULL pointer dereference at (null) oops IP: [] kfifo_alloc+0x2e/0xb0 oops PGD 9a43b067 PUD 9aba3067 PMD 0 oops Oops: 0002 [#1] SMP oops last sysfs file: /sys/devices/LNXSYSTM:00/LNXPWRBN:00/input/input3/name oops CPU 1 oops Modules linked in: lirc_ene0100(+) lirc_dev lp parport ahci sdhci_pci firewire_ohci firewire_core sdhci led_class libahci crc_itu_t pata_amd forcedeth oops oops Pid: 511, comm: modprobe Not tainted 2.6.35-6-generic #9-Ubuntu Fuquene/Aspire 5520 oops RIP: 0010:[] [] kfifo_alloc+0x2e/0xb0 oops RSP: 0018:ffff88009a579d08 EFLAGS: 00010286 oops RAX: ffff8800b9477000 RBX: 0000000000000000 RCX: ffffffff8107f229 oops RDX: 0000000000000000 RSI: 00000000000000d0 RDI: 0000000000000246 oops RBP: ffff88009a579d18 R08: 0000000000000000 R09: 0000000000000246 oops R10: 0000000000000030 R11: 0000000000000000 R12: 0000000000001000 oops R13: ffff88003787d800 R14: ffff8800bbc44c00 R15: 00000000fffffff4 oops FS: 00007f3022b1c700(0000) GS:ffff880001f00000(0000) knlGS:0000000000000000 oops CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 oops CR2: 0000000000000000 CR3: 000000009a43d000 CR4: 00000000000006e0 oops DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 oops DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400 oops Process modprobe (pid: 511, threadinfo ffff88009a578000, task ffff88009b2edb80) oops Stack: oops ffff88009abc7b40 ffff8800bbc58660 ffff88009a579d58 ffffffffa009ee4f oops <0> ffff88009a579d38 ffffffffa009f060 ffff88003787d800 ffffffffa009f580 oops <0> ffffffffa009f540 00000000fffffff4 ffff88009a579d98 ffffffff8132a475 oops Call Trace: oops [] ene_probe+0x17f/0x350 [lirc_ene0100] oops [] pnp_device_probe+0x95/0x100 oops [] ? driver_sysfs_add+0x62/0x90 oops [] really_probe+0x68/0x190 oops [] driver_probe_device+0x45/0x70 oops [] __driver_attach+0x9b/0xa0 oops [] ? __driver_attach+0x0/0xa0 oops [] bus_for_each_dev+0x68/0x90 oops [] driver_attach+0x1e/0x20 oops [] bus_add_driver+0xde/0x280 oops [] driver_register+0x80/0x150 oops [] ? ene_init+0x0/0x3e [lirc_ene0100] oops [] pnp_register_driver+0x21/0x30 oops [] ene_init+0x3c/0x3e [lirc_ene0100] oops [] do_one_initcall+0x3c/0x1a0 oops [] sys_init_module+0xbb/0x200 oops [] system_call_fastpath+0x16/0x1b oops Code: e5 41 54 53 0f 1f 44 00 00 48 89 fb 89 f7 41 89 f4 48 85 ff 48 8d 47 ff 74 33 48 85 f8 75 2e 89 d6 e8 b7 33 0c 00 48 85 c0 74 52 <48> 89 03 44 89 63 08 31 c0 c7 43 10 00 00 00 00 c7 43 0c 00 00 oops RIP [] kfifo_alloc+0x2e/0xb0 oops RSP oops CR2: 0000000000000000 oops oops Found OOPS (6): oops BUG: unable to handle kernel paging request at f815b540 oops IP: [] driver_register+0xfe/0x130 oops *pde = 3701b067 *pte = 00000000 oops Oops: 0000 [#1] SMP oops last sysfs file: /sys/devices/virtual/tty/tty40/uevent oops Modules linked in: amd64_agp(+) squashfs aufs isofs nls_iso8859_1 nls_cp437 vfat fat dm_raid45 xor hid_microsoft vga16fb vgastate usbhid hid nouveau ttm drm_kms_helper usb_storage drm floppy forcedeth sata_nv pata_amd i2c_algo_bit agpgart oops oops Pid: 818, comm: modprobe Not tainted 2.6.35-6-generic #8-Ubuntu 'K8N-E-Deluxe'/K8N-E-Deluxe oops EIP: 0060:[] EFLAGS: 00010282 CPU: 0 oops EIP is at driver_register+0xfe/0x130 oops EAX: f815b510 EBX: 00000000 ECX: f801f419 EDX: f685eae0 oops ESI: f801f510 EDI: c03716d0 EBP: f5471f34 ESP: f5471f18 oops DS: 007b ES: 007b FS: 00d8 GS: 00e0 SS: 0068 oops Process modprobe (pid: 818, ti=f5470000 task=f689cc20 task.ti=f5470000) oops Stack: oops 00000001 f801f780 00000000 c07e0ce0 f801f4e0 f801f780 f801f510 f5471f48 oops <0> c03719d5 b7779000 f801f780 00000000 f5471f54 f802202c 00000000 f5471f5c oops <0> f80220a8 f5471f88 c0101131 f801f780 c07df060 b7779000 f801f780 08bdd1c0 oops Call Trace: oops [] ? __pci_register_driver+0x45/0xb0 oops [] ? agp_amd64_init+0x2c/0xa0 [amd64_agp] oops [] ? agp_amd64_mod_init+0x8/0xa [amd64_agp] oops [] ? do_one_initcall+0x31/0x190 oops [] ? agp_amd64_mod_init+0x0/0xa [amd64_agp] oops [] ? sys_init_module+0x9b/0x1e0 oops [] ? sys_close+0x75/0xc0 oops [] ? syscall_call+0x7/0xb oops Code: 89 f0 e8 86 ea ff ff 83 c4 10 89 f8 5b 5e 5f 5d c3 8b 06 c7 04 24 08 61 77 c0 89 44 24 04 e8 78 5b 1c 00 8b 56 04 e9 56 ff ff ff <8b> 40 30 bf f0 ff ff ff e8 f5 14 f5 ff 8b 06 c7 04 24 48 61 77 oops EIP: [] driver_register+0xfe/0x130 SS:ESP 0068:f5471f18 oops CR2: 00000000f815b540 oops oops Found OOPS (7): oops BUG: unable to handle kernel NULL pointer dereference at (null) oops IP: [] kfifo_alloc+0x26/0x90 oops *pde = 7dae9067 oops Oops: 0002 [#1] SMP oops last sysfs file: /sys/devices/LNXSYSTM:00/LNXPWRBN:00/input/input3/name oops Modules linked in: lirc_ene0100(+) lirc_dev usbhid hid sdhci_pci firewire_ohci ahci sdhci led_class libahci firewire_core crc_itu_t tg3 oops oops Pid: 445, comm: modprobe Not tainted 2.6.35-6-generic #9-Ubuntu Nettiling/Aspire 5720Z oops EIP: 0060:[] EFLAGS: 00010286 CPU: 1 oops EIP is at kfifo_alloc+0x26/0x90 oops EAX: e10ef000 EBX: 00001000 ECX: c01674d2 EDX: c01674d2 oops ESI: 00000000 EDI: f69e9100 EBP: d1631e40 ESP: d1631e38 oops DS: 007b ES: 007b FS: 00d8 GS: 00e0 SS: 0068 oops Process modprobe (pid: 445, ti=d1630000 task=f6990cb0 task.ti=d1630000) oops Stack: oops f6b3f4e0 f6bf7840 d1631e68 f8273dc7 00000020 000080d0 d1631e68 f724ce00 oops <0> fffffff4 f8273fa0 f724ce00 f8274400 d1631e7c c03b7e9e f724ce00 f8274420 oops <0> f8274420 d1631ea0 c0404ead f724ced0 d1631ea0 c040c0f7 00000000 f724ce00 oops Call Trace: oops [] ? ene_probe+0x157/0x30b [lirc_ene0100] oops [] ? pnp_device_probe+0x6e/0xd0 oops [] ? really_probe+0x4d/0x150 oops [] ? pm_runtime_barrier+0x57/0xb0 oops [] ? driver_probe_device+0x3c/0x60 oops [] ? __driver_attach+0x81/0x90 oops [] ? bus_for_each_dev+0x53/0x80 oops [] ? driver_attach+0x1e/0x20 oops [] ? __driver_attach+0x0/0x90 oops [] ? bus_add_driver+0xd5/0x280 oops [] ? pnp_device_remove+0x0/0x40 oops [] ? driver_register+0x6a/0x130 oops [] ? tracepoint_module_notify+0x27/0x30 oops [] ? pnp_register_driver+0x1c/0x20 oops [] ? ene_init+0x38/0x3a [lirc_ene0100] oops [] ? __blocking_notifier_call_chain+0x54/0x70 oops [] ? do_one_initcall+0x31/0x190 oops [] ? ene_init+0x0/0x3a [lirc_ene0100] oops [] ? sys_init_module+0x9b/0x1e0 oops [] ? sys_close+0x75/0xc0 oops [] ? syscall_call+0x7/0xb oops Code: 89 3a eb d3 90 55 89 e5 56 53 0f 1f 44 00 00 89 d3 89 c6 85 db 89 ca 8d 4b ff 74 31 85 d9 75 25 89 d8 e8 de 64 0a 00 85 c0 74 38 <89> 06 31 c0 89 5e 04 c7 46 0c 00 00 00 00 c7 46 08 00 00 00 00 oops EIP: [] kfifo_alloc+0x26/0x90 SS:ESP 0068:d1631e38 oops CR2: 0000000000000000 oops oops Found OOPS (8): oops BUG: unable to handle kernel NULL pointer dereference at (null) oops IP: [] __mutex_lock_slowpath+0x9a/0x140 oops *pde = 3d9e2067 oops Oops: 0002 [#1] SMP oops last sysfs file: /sys/devices/platform/i8042/serio0/input/input3/event3/uevent oops Modules linked in: snd_hwdep snd_pcm i915(+) snd_seq_midi snd_rawmidi snd_seq_midi_event drm_kms_helper snd_seq lib80211_crypt_tkip snd_timer drm snd_seq_device uvcvideo dell_laptop wl(P) compal_laptop videodev dcdbas intel_agp snd psmouse v4l1_compat led_class soundcore serio_raw agpgart i2c_algo_bit snd_page_alloc lib80211 video coretemp output lp parport btrfs zlib_deflate r8169 mii crc32c libcrc32c oops oops Pid: 315, comm: plymouthd Tainted: P 2.6.35-7-generic #12-Ubuntu CN0Y53/Inspiron 1011 oops EIP: 0060:[] EFLAGS: 00010246 CPU: 0 oops EIP is at __mutex_lock_slowpath+0x9a/0x140 oops EAX: 00000000 EBX: ef5a9a90 ECX: ef5a9a98 EDX: f6ab7ec0 oops ESI: ef5a9a94 EDI: ef5a9a90 EBP: f6ab7ed8 ESP: f6ab7eb4 oops DS: 007b ES: 007b FS: 00d8 GS: 00e0 SS: 0068 oops Process plymouthd (pid: 315, ti=f6ab6000 task=f6ae3f70 task.ti=f6ab6000) oops Stack: oops f6ab7ec4 f6ae3f70 ef5a9a98 ef5a9a98 00000000 f6ab7ed8 ef5a9a90 f7109100 oops <0> ef5a9a90 f6ab7ee8 c05cb095 f7109100 f7109100 f6ab7efc f890fdc3 f7109100 oops <0> f7109160 ef5a9800 f6ab7f44 f8907337 00000001 f8917e25 f8917220 f8919590 oops Call Trace: oops [] ? mutex_lock+0x25/0x40 oops [] ? drm_fb_release+0x23/0x70 [drm] oops [] ? drm_release+0x3e7/0x4c0 [drm] oops [] ? __fput+0xdf/0x1f0 oops [] ? fput+0x1d/0x30 oops [] ? filp_close+0x4c/0x80 oops [] ? sys_close+0x75/0xc0 oops [] ? syscall_call+0x7/0xb oops Code: 83 79 18 63 7f b3 8d 76 00 8d 73 04 89 f0 e8 5e 11 00 00 8d 53 08 89 55 e4 8d 55 e8 8b 43 0c 89 53 0c 8b 4d e4 89 45 ec 89 4d e8 <89> 10 8b 45 e0 ba ff ff ff ff 89 45 f0 89 d0 87 03 83 f8 01 74 oops EIP: [] __mutex_lock_slowpath+0x9a/0x140 SS:ESP 0068:f6ab7eb4 oops CR2: 0000000000000000 oops oops Found OOPS (9): oops BUG: unable to handle kernel NULL pointer dereference at (null) oops IP: [] __mutex_lock_slowpath+0xd2/0x190 oops PGD 1b4837067 PUD 1b4836067 PMD 0 oops Oops: 0002 [#1] SMP oops last sysfs file: /sys/module/snd_hda_codec/initstate oops CPU 0 oops Modules linked in: snd_hda_codec_realtek snd_hda_intel(+) snd_hda_codec snd_hwdep snd_pcm snd_seq_midi nouveau(+) snd_rawmidi snd_seq_midi_event snd_seq ttm snd_timer snd_seq_device drm_kms_helper ppdev parport_pc snd psmouse serio_raw drm i2c_algo_bit soundcore intel_agp snd_page_alloc lp parport hid floppy pata_jmicron ahci libahci r8169 mii oops oops Pid: 342, comm: plymouthd Not tainted 2.6.35-8-generic #13-Ubuntu P45 Neo3 (MS-7514)/MS-7514 oops RIP: 0010:[] [] __mutex_lock_slowpath+0xd2/0x190 oops RSP: 0018:ffff8801b87d9d98 EFLAGS: 00010246 oops RAX: 0000000000000000 RBX: ffff8801b4ab4418 RCX: 0000000000000006 oops RDX: ffff8801b87d9da8 RSI: 0000000000000000 RDI: ffff8801b4ab441c oops RBP: ffff8801b87d9df8 R08: 0000000000000156 R09: 000000000000e200 oops R10: fffffffffffffff0 R11: 0000000000000246 R12: ffff8801b49644a0 oops R13: ffff8801b4ab441c R14: 00000000ffffffff R15: ffff8801b4ab4420 oops FS: 00007f92f737b700(0000) GS:ffff880001e00000(0000) knlGS:0000000000000000 oops CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 oops CR2: 0000000000000000 CR3: 00000001b58a8000 CR4: 00000000000406f0 oops DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 oops DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400 oops Process plymouthd (pid: 342, threadinfo ffff8801b87d8000, task ffff8801b49644a0) oops Stack: oops ffff880100000000 000000000000e200 ffff8801b4ab4420 0000000000000000 oops <0> 0000000000000000 ffffffffa00a7240 ffffffffa00a4f60 ffff8801b4ab4418 oops <0> ffff8801aab95840 ffff8801b4ab4418 ffff8801b4ab4320 ffff8801aab958e8 oops Call Trace: oops [] ? drm_gem_object_release_handle+0x0/0x40 [drm] oops [] ? drm_version+0x0/0xb0 [drm] oops [] mutex_lock+0x2b/0x50 oops [] drm_fb_release+0x2f/0xb0 [drm] oops [] drm_release+0x468/0x550 [drm] oops [] __fput+0xf5/0x210 oops [] fput+0x25/0x30 oops [] filp_close+0x5d/0x90 oops [] sys_close+0xb7/0x120 oops [] system_call_fastpath+0x16/0x1b oops Code: 00 4c 8d 6b 04 4c 8d 7b 08 41 be ff ff ff ff 4c 89 ef e8 22 14 00 00 48 8b 43 10 48 8d 55 b0 48 89 53 10 4c 89 7d b0 48 89 45 b8 <48> 89 10 44 89 f0 4c 89 65 c0 87 03 83 f8 01 75 24 eb 2c 0f 1f oops RIP [] __mutex_lock_slowpath+0xd2/0x190 oops RSP oops CR2: 0000000000000000 oops oops Found OOPS (10): oops BUG: unable to handle kernel NULL pointer dereference at 0000000000000010 oops IP: [] fb_release+0x30/0x70 oops PGD 1b8a7b067 PUD 1b8a77067 PMD 0 oops Oops: 0000 [#1] SMP oops last sysfs file: /sys/devices/virtual/block/dm-3/uevent oops CPU 1 oops Modules linked in: deflate zlib_deflate ctr twofish twofish_common camellia serpent blowfish cast5 des_generic cryptd aes_x86_64 aes_generic xcbc rmd160 sha512_generic sha256_generic sha1_generic crypto_null af_key snd_hda_codec_atihdmi snd_hda_codec_analog tpm_infineon snd_hda_intel snd_usb_audio snd_hda_codec snd_pcm snd_seq_midi snd_hwdep snd_seq_midi_event radeon snd_seq snd_timer snd_usbmidi_lib snd_rawmidi tpm_tis i7core_edac btusb asus_atk0110 bluetooth ttm drm_kms_helper uvcvideo snd_seq_device videodev v4l1_compat v4l2_compat_ioctl32 joydev snd edac_core psmouse tpm tpm_bios drm serio_raw soundcore i2c_algo_bit snd_page_alloc lp parport hid_logitech ff_memless usbhid hid firewire_ohci firewire_core ahci libahci crc_itu_t sky2 oops oops Pid: 451, comm: plymouthd Not tainted 2.6.35-11-generic #16-Ubuntu P6T DELUXE V2/System Product Name oops RIP: 0010:[] [] fb_release+0x30/0x70 oops RSP: 0018:ffff8801b6a4bea8 EFLAGS: 00010286 oops RAX: ffff8801b6a4a000 RBX: ffff8801b7124000 RCX: 0000000000000003 oops RDX: 0000000000000000 RSI: ffff8801a56206c0 RDI: ffff8801b7124008 oops RBP: ffff8801b6a4beb8 R08: 0000000000000000 R09: 0000000000000000 oops R10: 00007fff8969bed0 R11: 0000000000000246 R12: ffff8801b7124008 oops R13: ffff8801b88235f0 R14: ffff8801b640bc80 R15: ffff8801b55e8300 oops FS: 00007f890030c700(0000) GS:ffff880001e20000(0000) knlGS:0000000000000000 oops CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 oops CR2: 0000000000000010 CR3: 00000001b53b7000 CR4: 00000000000006e0 oops DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 oops DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400 oops Process plymouthd (pid: 451, threadinfo ffff8801b6a4a000, task ffff8801b3c596e0) oops Stack: oops ffff8801a56206c0 0000000000000008 ffff8801b6a4bf08 ffffffff81152df5 oops <0> ffff8801b88235f0 ffff8801b640bc80 00007f89001de000 ffff8801a56206c0 oops <0> ffff8801b8cd9e40 0000000000000000 000000000000000b 0000000002082db0 oops Call Trace: oops [] __fput+0xf5/0x210 oops [] fput+0x25/0x30 oops [] filp_close+0x5d/0x90 oops [] sys_close+0xb7/0x120 oops [] system_call_fastpath+0x16/0x1b oops Code: 83 ec 10 48 89 1c 24 4c 89 64 24 08 0f 1f 44 00 00 48 8b 9e a0 00 00 00 4c 8d 63 08 4c 89 e7 e8 67 1b 29 00 48 8b 93 c0 03 00 00 <48> 8b 42 10 48 85 c0 74 11 be 01 00 00 00 48 89 df ff d0 48 8b oops RIP [] fb_release+0x30/0x70 oops RSP oops CR2: 0000000000000010 oops oops Found OOPS (11): oops BUG: unable to handle kernel NULL pointer dereference at 0000030c oops IP: [] fb_mmap+0x34/0x170 oops *pde = 3f809067 oops Oops: 0000 [#1] SMP oops last sysfs file: /sys/devices/pci0000:00/0000:00:0a.0/device oops Modules linked in: snd_emu10k1(+) arc4 snd_ac97_codec ac97_bus snd_pcm snd_page_alloc snd_util_mem snd_hwdep nouveau(+) snd_seq_midi rt2500pci rt2x00pci snd_rawmidi rt2x00lib led_class snd_seq_midi_event mac80211 snd_seq ttm snd_timer drm_kms_helper snd_seq_device drm i2c_viapro via_ircc usblp cfg80211 i2c_algo_bit irda psmouse serio_raw emu10k1_gp snd lp via_agp joydev gameport eeprom_93cx6 parport agpgart shpchp crc_ccitt soundcore usbhid hid pata_via floppy oops oops Pid: 278, comm: plymouthd Not tainted 2.6.35-11-generic #16-Ubuntu VT8367-8235/VT8367-8235 oops EIP: 0060:[] EFLAGS: 00010293 CPU: 0 oops EIP is at fb_mmap+0x34/0x170 oops EAX: 00000000 EBX: f397f898 ECX: c05fdd60 EDX: 00000000 oops ESI: 00000000 EDI: b745f000 EBP: f6a73efc ESP: f6a73ed8 oops DS: 007b ES: 007b FS: 00d8 GS: 00e0 SS: 0068 oops Process plymouthd (pid: 278, ti=f6a72000 task=f68b9960 task.ti=f6a72000) oops Stack: oops 00000202 c01f8068 f6980960 0000012c 000080d0 00000058 f6892648 f689264c oops <0> b745f000 f6a73f50 c01f810c b758b000 000000fa 00000000 f48fc580 00000000 oops <0> 00000000 00000000 f6892630 00000000 f73fc060 f48fc580 ffffffea 0000012c oops Call Trace: oops [] ? mmap_region+0x298/0x490 oops [] ? mmap_region+0x33c/0x490 oops [] ? do_mmap_pgoff+0x25c/0x300 oops [] ? sys_mmap_pgoff+0x193/0x1c0 oops [] ? syscall_call+0x7/0xb oops Code: 89 75 f8 89 7d fc 0f 1f 44 00 00 8b 40 0c 89 d3 8b 52 44 8b 40 10 8b 40 34 25 ff ff 0f 00 81 fa ff ff 0f 00 8b 34 85 40 67 82 c0 <8b> 8e 0c 03 00 00 76 14 bf ea ff ff ff 89 f8 8b 5d f4 8b 75 f8 oops EIP: [] fb_mmap+0x34/0x170 SS:ESP 0068:f6a73ed8 oops CR2: 000000000000030c oops oops Found OOPS (12): oops BUG: unable to handle kernel NULL pointer dereference at (null) oops IP: [] __mutex_lock_slowpath+0x9a/0x140 oops *pde = 3df7b067 oops Oops: 0002 [#1] SMP oops last sysfs file: /sys/module/snd_rawmidi/initstate oops Modules linked in: i915(+) drm_kms_helper snd_seq_midi_event snd_seq snd_rawmidi snd_timer drm snd_seq_device gspca_sonixj gspca_main snd videodev v4l1_compat dcdbas intel_agp lp soundcore snd_page_alloc i2c_algo_bit video output psmouse serio_raw parport agpgart usbhid hid e100 mii oops oops Pid: 219, comm: plymouthd Not tainted 2.6.35-11-generic #16-Ubuntu 0JC474/Dell DV051 oops EIP: 0060:[] EFLAGS: 00010246 CPU: 0 oops EIP is at __mutex_lock_slowpath+0x9a/0x140 oops EAX: 00000000 EBX: f5288e90 ECX: f5288e98 EDX: f5b13ec0 oops ESI: f5288e94 EDI: f5288e90 EBP: f5b13ed8 ESP: f5b13eb4 oops DS: 007b ES: 007b FS: 00d8 GS: 00e0 SS: 0068 oops Process plymouthd (pid: 219, ti=f5b12000 task=f69bcc20 task.ti=f5b12000) oops Stack: oops f849c400 f69bcc20 f5288e98 f5288e98 00000000 f5b13ed8 f5288e90 f5381f80 oops <0> f5288e90 f5b13ee8 c05c8295 f5381f80 f5381f80 f5b13efc f848fd53 f5381f80 oops <0> f5381fe0 f5288c00 f5b13f44 f8487327 00000001 f8497d85 f8497180 f84994f0 oops Call Trace: oops [] ? mutex_lock+0x25/0x40 oops [] ? drm_fb_release+0x23/0x70 [drm] oops [] ? drm_release+0x3e7/0x4c0 [drm] oops [] ? __fput+0xe4/0x1e0 oops [] ? fput+0x1d/0x30 oops [] ? filp_close+0x4c/0x80 oops [] ? sys_close+0x75/0xc0 oops [] ? syscall_call+0x7/0xb oops Code: 83 79 18 63 7f b3 8d 76 00 8d 73 04 89 f0 e8 3e 11 00 00 8d 53 08 89 55 e4 8d 55 e8 8b 43 0c 89 53 0c 8b 4d e4 89 45 ec 89 4d e8 <89> 10 8b 45 e0 ba ff ff ff ff 89 45 f0 89 d0 87 03 83 f8 01 74 oops EIP: [] __mutex_lock_slowpath+0x9a/0x140 SS:ESP 0068:f5b13eb4 oops CR2: 0000000000000000 oops oops Found OOPS (13): oops BUG: unable to handle kernel NULL pointer dereference at (null) oops IP: [] kfifo_alloc+0x2e/0xb0 oops PGD 13a27b067 PUD 1375c6067 PMD 0 oops Oops: 0002 [#1] SMP oops last sysfs file: /sys/module/snd/initstate oops CPU 1 oops Modules linked in: lirc_ene0100(+) lirc_dev v4l1_compat v4l2_compat_ioctl32 lp(+) led_class serio_raw intel_agp video output parport snd soundcore snd_page_alloc usb_storage ahci ssb r8169 mii libahci oops oops Pid: 687, comm: modprobe Not tainted 2.6.35-12-generic #17-Ubuntu 3602/HP Pavilion dv5 Notebook PC oops RIP: 0010:[] [] kfifo_alloc+0x2e/0xb0 oops RSP: 0018:ffff88013825fd08 EFLAGS: 00010286 oops RAX: ffff88013fc0f000 RBX: 0000000000000000 RCX: ffffffff8107f129 oops RDX: 0000000000000000 RSI: 00000000000000d0 RDI: 0000000000000246 oops RBP: ffff88013825fd18 R08: 0000000000000000 R09: 0000000000000246 oops R10: 0000000000000030 R11: 0000000000000000 R12: 0000000000001000 oops R13: ffff880139be1400 R14: ffff880136d58640 R15: 00000000fffffff4 oops FS: 00007f450591a700(0000) GS:ffff880001e80000(0000) knlGS:0000000000000000 oops CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 oops CR2: 0000000000000000 CR3: 000000013a270000 CR4: 00000000000406e0 oops DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 oops DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400 oops Process modprobe (pid: 687, threadinfo ffff88013825e000, task ffff8801383ddb80) oops Stack: oops ffff8801379ee840 ffff8801379f14e0 ffff88013825fd58 ffffffffa009ee4f oops <0> ffff88013825fd38 ffffffffa009f060 ffff880139be1400 ffffffffa009f580 oops <0> ffffffffa009f540 00000000fffffff4 ffff88013825fd98 ffffffff81341325 oops Call Trace: oops [] ene_probe+0x17f/0x350 [lirc_ene0100] oops [] pnp_device_probe+0x95/0x100 oops [] ? driver_sysfs_add+0x62/0x90 oops [] really_probe+0x68/0x190 oops [] driver_probe_device+0x45/0x70 oops [] __driver_attach+0x9b/0xa0 oops [] ? __driver_attach+0x0/0xa0 oops [] bus_for_each_dev+0x68/0x90 oops [] driver_attach+0x1e/0x20 oops [] bus_add_driver+0xde/0x280 oops [] driver_register+0x80/0x150 oops [] ? ene_init+0x0/0x3e [lirc_ene0100] oops [] pnp_register_driver+0x21/0x30 oops [] ene_init+0x3c/0x3e [lirc_ene0100] oops [] do_one_initcall+0x3c/0x1a0 oops [] sys_init_module+0xbb/0x200 oops [] system_call_fastpath+0x16/0x1b oops Code: e5 41 54 53 0f 1f 44 00 00 48 89 fb 89 f7 41 89 f4 48 85 ff 48 8d 47 ff 74 33 48 85 f8 75 2e 89 d6 e8 67 33 0c 00 48 85 c0 74 52 <48> 89 03 44 89 63 08 31 c0 c7 43 10 00 00 00 00 c7 43 0c 00 00 oops RIP [] kfifo_alloc+0x2e/0xb0 oops RSP oops CR2: 0000000000000000 oops oops Found OOPS (14): oops BUG: unable to handle kernel NULL pointer dereference at (null) oops IP: [] __mutex_lock_slowpath+0xbb/0x170 oops PGD 609c90067 PUD 6097fd067 PMD 0 oops Oops: 0002 [#1] SMP oops last sysfs file: /sys/module/fbcon/initstate oops CPU 1 oops Modules linked in: fbcon(+) tileblit font bitblit softcursor vga16fb vgastate nouveau(+) ttm drm_kms_helper mce_xeon75xx(-) drm i2c_algo_bit snd_hda_intel(+) snd_hda_codec snd_hwdep snd_pcm_oss snd_mixer_oss snd_pcm snd_seq_dummy snd_seq_oss snd_seq_midi snd_rawmidi snd_seq_midi_event snd_seq ppdev snd_timer snd_seq_device parport_pc snd dell_wmi dcdbas soundcore snd_page_alloc shpchp lp parport usbhid hid ohci1394 ieee1394 ahci tg3 oops Pid: 405, comm: plymouthd Not tainted 2.6.32-24-generic #38-Ubuntu Precision WorkStation T7500 oops RIP: 0010:[] [] __mutex_lock_slowpath+0xbb/0x170 oops RSP: 0018:ffff8806082ddd98 EFLAGS: 00010246 oops RAX: 0000000000000000 RBX: ffff880609d23c08 RCX: 0000000000000006 oops RDX: ffff8806082ddda8 RSI: ffffffffa01b3d10 RDI: ffff880609d23c0c oops RBP: ffff8806082dddf8 R08: 0000000000000195 R09: 000000000000e200 oops R10: fffffffffffffff0 R11: 0000000000000246 R12: ffff8806089e44d0 oops R13: ffff880609d23c0c R14: ffffffffffffffff R15: ffff880609d23c10 oops FS: 00007f4dd6e70700(0000) GS:ffff88003e220000(0000) knlGS:0000000000000000 oops CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 oops CR2: 0000000000000000 CR3: 00000006097d6000 CR4: 00000000000006e0 oops DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 oops DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400 oops Process plymouthd (pid: 405, threadinfo ffff8806082dc000, task ffff8806089e44d0) oops Stack: oops ffff880600000001 ffff8806082ddfd8 ffff880609d23c10 0000000000000000 oops <0> 0000000000000000 ffffffffa01b3d10 ffff8806082dddd8 ffff880609d23c08 oops <0> ffff8806018bbe00 ffff880609d23c08 ffff880609d23b10 ffff8806018bbea8 oops Call Trace: oops [] ? drm_gem_object_release_handle+0x0/0x40 [drm] oops [] mutex_lock+0x2b/0x50 oops [] drm_fb_release+0x2f/0xd0 [drm] oops [] drm_release+0x448/0x510 [drm] oops [] __fput+0xf5/0x210 oops [] fput+0x25/0x30 oops [] filp_close+0x5d/0x90 oops [] sys_close+0xb7/0x120 oops [] system_call_fastpath+0x16/0x1b oops Code: 4c 8d 6b 04 4c 8d 7b 08 49 c7 c6 ff ff ff ff 4c 89 ef e8 29 15 00 00 48 8b 43 10 48 8d 55 b0 48 89 53 10 4c 89 7d b0 48 89 45 b8 <48> 89 10 4c 89 f0 4c 89 65 c0 87 03 83 f8 01 75 23 eb 2b 66 90 oops RIP [] __mutex_lock_slowpath+0xbb/0x170 oops RSP oops CR2: 0000000000000000 oops oops Found OOPS (15): oops BUG: unable to handle kernel NULL pointer dereference at (null) oops IP: [] kfifo_alloc+0x26/0x90 oops *pde = 00000000 oops Oops: 0002 [#1] SMP oops last sysfs file: /sys/devices/pci0000:00/0000:00:14.5/usb7/7-2/7-2:1.1/uevent oops Modules linked in: k10temp lirc_ene0100(+) btusb agpgart i2c_piix4 joydev i2c_algo_bit videodev v4l1_compat wacom video psmouse bluetooth lirc_dev shpchp serio_raw output led_class lp(+) parport hp_wmi usbhid hid usb_storage ahci pata_atiixp ssb libahci r8169 mii oops oops Pid: 637, comm: modprobe Not tainted 2.6.35-15-generic #21-Ubuntu 30F1/HP Pavilion tx2500 Notebook PC oops EIP: 0060:[] EFLAGS: 00010286 CPU: 1 oops EIP is at kfifo_alloc+0x26/0x90 oops EAX: d2079000 EBX: 00001000 ECX: c0166452 EDX: c0166452 oops ESI: 00000000 EDI: d27add60 EBP: d209de40 ESP: d209de38 oops DS: 007b ES: 007b FS: 00d8 GS: 00e0 SS: 0068 oops Process modprobe (pid: 637, ti=d209c000 task=d21d7230 task.ti=d209c000) oops Stack: oops f6ad12a0 d26a1a00 d209de68 f803bdb7 00000020 000080d0 d209de68 f724de00 oops <0> fffffff4 f803bf90 f724de00 f803c3e0 d209de7c c03ca5fe f724de00 f803c400 oops <0> f803c400 d209dea0 c0402cc0 f724ded0 d209dea0 c0409f07 00000000 f724de00 oops Call Trace: oops [] ? ene_probe+0x157/0x30b [lirc_ene0100] oops cfg80211: Calling CRDA to update world regulatory domain oops b43-phy0: Broadcom 4312 WLAN found (core revision 15) oops [] ? pnp_device_probe+0x6e/0xd0 oops [] ? really_probe+0x50/0x150 oops [] ? pm_runtime_barrier+0x57/0xb0 oops [] ? driver_probe_device+0x3c/0x60 oops [] ? __driver_attach+0x81/0x90 oops [] ? bus_for_each_dev+0x53/0x80 oops Synaptics Touchpad, model: 1, fw: 6.3, id: 0x180b1, caps: 0xa04711/0xa00000/0x0 oops input: SynPS/2 Synaptics TouchPad as /devices/platform/i8042/serio1/input/input9 oops [] ? driver_attach+0x1e/0x20 oops [] ? __driver_attach+0x0/0x90 oops [] ? bus_add_driver+0xd5/0x280 oops [] ? pnp_device_remove+0x0/0x40 oops [] ? driver_register+0x6a/0x130 oops [] ? tracepoint_module_notify+0x27/0x30 oops [] ? pnp_register_driver+0x1c/0x20 oops [] ? ene_init+0x38/0x3a [lirc_ene0100] oops [] ? __blocking_notifier_call_chain+0x54/0x70 oops [] ? do_one_initcall+0x32/0x1a0 oops [] ? ene_init+0x0/0x3a [lirc_ene0100] oops [] ? sys_init_module+0x9b/0x1e0 oops [] ? sys_close+0x75/0xc0 oops [] ? syscall_call+0x7/0xb oops Code: 90 8d 74 26 00 55 89 e5 56 53 0f 1f 44 00 00 89 d3 89 c6 85 db 89 ca 8d 43 ff 74 31 85 d8 75 25 89 d8 e8 4e 60 0a 00 85 c0 74 39 <89> 06 31 c0 89 5e 04 c7 46 0c 00 00 00 00 c7 46 08 00 00 00 00 oops EIP: [] kfifo_alloc+0x26/0x90 SS:ESP 0068:d209de38 oops CR2: 0000000000000000 oops oops Found OOPS (16): oops BUG: unable to handle kernel NULL pointer dereference at (null) oops IP: oops agpgart-intel 0000:00:00.0: AGP aperture is 256M @ 0xc0000000 oops [] kfifo_alloc+0x26/0x90 oops *pde = 00000000 oops Oops: 0002 [#1] SMP oops last sysfs file: /sys/module/intel_agp/initstate oops Modules linked in: lirc_ene0100(+) i2c_algo_bit intel_agp lirc_dev video snd soundcore snd_page_alloc psmouse serio_raw lib80211 agpgart output lp parport usbhid hid usb_storage firewire_ohci ahci firewire_core sdhci_pci tg3 sdhci led_class crc_itu_t libahci oops oops Pid: 453, comm: modprobe Not tainted 2.6.35-17-generic #23-Ubuntu Nettiling/Aspire 5720Z oops EIP: 0060:[] EFLAGS: 00010286 CPU: 0 oops EIP is at kfifo_alloc+0x26/0x90 oops EAX: f5faa000 EBX: 00001000 ECX: c01665b2 EDX: c01665b2 oops ESI: 00000000 EDI: f5d09e40 EBP: f5cf1e40 ESP: f5cf1e38 oops DS: 007b ES: 007b FS: 00d8 GS: 00e0 SS: 0068 oops Process modprobe (pid: 453, ti=f5cf0000 task=f68a3f70 task.ti=f5cf0000) oops Stack: oops f695ce40 f6a1d540 f5cf1e68 f806bdb7 00000020 000080d0 f5cf1e68 f7232200 oops <0> fffffff4 f806bf90 f7232200 f806c3e0 f5cf1e7c c03c737e f7232200 f806c400 oops <0> f806c400 f5cf1ea0 c03ffa30 f72322d0 f5cf1ea0 c0406c87 00000000 f7232200 oops Call Trace: oops [] ? ene_probe+0x157/0x30b [lirc_ene0100] oops [] ? pnp_device_probe+0x6e/0xd0 oops [] ? really_probe+0x50/0x150 oops [] ? pm_runtime_barrier+0x57/0xb0 oops [] ? driver_probe_device+0x3c/0x60 oops [] ? __driver_attach+0x81/0x90 oops [] ? bus_for_each_dev+0x53/0x80 oops [] ? driver_attach+0x1e/0x20 oops [] ? __driver_attach+0x0/0x90 oops [] ? bus_add_driver+0xd5/0x280 oops [] ? pnp_device_remove+0x0/0x40 oops [] ? driver_register+0x6a/0x130 oops [] ? tracepoint_module_notify+0x27/0x30 oops [] ? pnp_register_driver+0x1c/0x20 oops [] ? ene_init+0x38/0x3a [lirc_ene0100] oops [] ? __blocking_notifier_call_chain+0x54/0x70 oops [] ? do_one_initcall+0x32/0x1a0 oops [] ? ene_init+0x0/0x3a [lirc_ene0100] oops [] ? sys_init_module+0x9b/0x1e0 oops [] ? sys_close+0x75/0xc0 oops [] ? syscall_call+0x7/0xb oops Code: 90 8d 74 26 00 55 89 e5 56 53 0f 1f 44 00 00 89 d3 89 c6 85 db 89 ca 8d 43 ff 74 31 85 d8 75 25 89 d8 e8 7e 61 0a 00 85 c0 74 39 <89> 06 31 c0 89 5e 04 c7 46 0c 00 00 00 00 c7 46 08 00 00 00 00 oops EIP: [] kfifo_alloc+0x26/0x90 SS:ESP 0068:f5cf1e38 oops CR2: 0000000000000000 oops oops Found OOPS (17): oops BUG: unable to handle kernel NULL pointer dereference at (null) oops IP: [] kfifo_alloc+0x2e/0xb0 oops PGD 13ad1b067 PUD 13ad1a067 PMD 0 oops Oops: 0002 [#1] SMP oops last sysfs file: /sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:26/PNP0303:00/uevent oops CPU 1 oops Modules linked in: lirc_ene0100(+) input_polldev(+) lirc_dev parport(+) ahci r8169 mii sdhci_pci sdhci led_class pata_atiixp libahci oops oops Pid: 407, comm: modprobe Not tainted 2.6.35-17-generic #23-Ubuntu 30FC/HP Pavilion dv7 Notebook PC oops RIP: 0010:[] [] kfifo_alloc+0x2e/0xb0 oops RSP: 0018:ffff88013b475d08 EFLAGS: 00010286 oops RAX: ffff8801384be000 RBX: 0000000000000000 RCX: ffffffff8107f199 oops RDX: ffff8801384ba000 RSI: 00000000000000d0 RDI: 0000000000000246 oops RBP: ffff88013b475d18 R08: 0000000000000000 R09: 0000000000000246 oops R10: 0000000000000030 R11: 0000000000000000 R12: 0000000000001000 oops R13: ffff8801394bc800 R14: ffff88013b64c280 R15: 00000000fffffff4 oops FS: 00007f5fb9cd0700(0000) GS:ffff880001e80000(0000) knlGS:0000000000000000 oops CS: 0010 DS: 0000 ES: 0000 CR0: 000000008005003b oops CR2: 0000000000000000 CR3: 000000013ad17000 CR4: 00000000000006e0 oops DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 oops DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400 oops Process modprobe (pid: 407, threadinfo ffff88013b474000, task ffff88013b478000) oops Stack: oops ffff88013a65cb40 ffff88013b61b7e0 ffff88013b475d58 ffffffffa005ee4f oops [Firmware Bug]: ACPI: ACPI brightness control misses _BQC function oops acpi device:03: registered as cooling_device2 oops input: Video Bus as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:01/LNXVIDEO:00/input/input4 oops ACPI: Video Device [VGA] (multi-head: yes rom: no post: no) oops lis3lv02d: hardware type DV7 found. oops lis3lv02d: 8 bits sensor found oops shpchp: Standard Hot Plug PCI Controller Driver version: 0.4 oops oops <0> ffff88013b475d38 ffffffffa005f060 ffff8801394bc800 ffffffffa005f580 oops <0> ffffffffa005f540 00000000fffffff4 ffff88013b475d98 ffffffff8133d7d5 oops Call Trace: oops [] ene_probe+0x17f/0x350 [lirc_ene0100] oops [] pnp_device_probe+0x95/0x100 oops [] ? driver_sysfs_add+0x62/0x90 oops [] really_probe+0x68/0x190 oops [] driver_probe_device+0x45/0x70 oops [] __driver_attach+0x9b/0xa0 oops [] ? __driver_attach+0x0/0xa0 oops [] bus_for_each_dev+0x68/0x90 oops [] driver_attach+0x1e/0x20 oops [] bus_add_driver+0xde/0x280 oops [] driver_register+0x80/0x150 oops [] ? ene_init+0x0/0x3e [lirc_ene0100] oops [] pnp_register_driver+0x21/0x30 oops [] ene_init+0x3c/0x3e [lirc_ene0100] oops [] do_one_initcall+0x3c/0x1a0 oops [] sys_init_module+0xbb/0x200 oops [] system_call_fastpath+0x16/0x1b oops Code: e5 41 54 53 0f 1f 44 00 00 48 89 fb 89 f7 41 89 f4 48 85 ff 48 8d 47 ff 74 33 48 85 f8 75 2e 89 d6 e8 07 35 0c 00 48 85 c0 74 52 <48> 89 03 44 89 63 08 31 c0 c7 43 10 00 00 00 00 c7 43 0c 00 00 oops RIP [] kfifo_alloc+0x2e/0xb0 oops RSP oops CR2: 0000000000000000 oops oops Found OOPS (18): oops BUG: unable to handle kernel NULL pointer dereference at (null) oops IP: [] kfifo_alloc+0x2e/0xb0 oops PGD 1375cb067 PUD 1375ce067 PMD 0 oops Oops: 0002 [#1] SMP oops last sysfs file: /sys/devices/virtual/vc/vcs6/uevent oops CPU 1 oops Modules linked in: lirc_ene0100(+) v4l2_compat_ioctl32(+) hp_wmi(+) snd(+) lirc_dev wl(P+) bluetooth(+) drm(+) video(+) psmouse output serio_raw k10temp edac_core soundcore i2c_algo_bit lib80211 i2c_piix4 snd_page_alloc edac_mce_amd shpchp lp parport usb_storage r8169 mii ahci libahci pata_atiixp oops oops Pid: 529, comm: modprobe Tainted: P 2.6.35-17-generic #23-Ubuntu 3045/HP TouchSmart tx2 Notebook PC oops RIP: 0010:[] [] kfifo_alloc+0x2e/0xb0 oops RSP: 0018:ffff880138739d08 EFLAGS: 00010286 oops RAX: ffff880137500000 RBX: 0000000000000000 RCX: ffffffff8107f199 oops RDX: ffff880137504000 RSI: 00000000000000d0 RDI: 0000000000000246 oops RBP: ffff880138739d18 R08: 0000000000000000 R09: 0000000000000246 oops R10: 0000000000000030 R11: 0000000000000000 R12: 0000000000001000 oops R13: ffff88013b33c400 R14: ffff8801386a7280 R15: 00000000fffffff4 oops FS: 00007f3989a31700(0000) GS:ffff880001e80000(0000) knlGS:0000000000000000 oops CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 oops CR2: 0000000000000000 CR3: 0000000139428000 CR4: 00000000000006e0 oops DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 oops DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400 oops Process modprobe (pid: 529, threadinfo ffff880138738000, task ffff88013b6cc4a0) oops Stack: oops ffff880137c3fb40 ffff88013b49dba0 ffff880138739d58 ffffffffa010ee4f oops <0> ffff880138739d38 ffffffffa010f060 ffff88013b33c400 ffffffffa010f580 oops <0> ffffffffa010f540 00000000fffffff4 ffff880138739d98 ffffffff8133d7d5 oops Call Trace: oops [] ene_probe+0x17f/0x350 [lirc_ene0100] oops [] pnp_device_probe+0x95/0x100 oops [] ? driver_sysfs_add+0x62/0x90 oops [] really_probe+0x68/0x190 oops [] driver_probe_device+0x45/0x70 oops [] __driver_attach+0x9b/0xa0 oops [] ? __driver_attach+0x0/0xa0 oops [] bus_for_each_dev+0x68/0x90 oops [] driver_attach+0x1e/0x20 oops [] bus_add_driver+0xde/0x280 oops [] driver_register+0x80/0x150 oops [] ? ene_init+0x0/0x3e [lirc_ene0100] oops [] pnp_register_driver+0x21/0x30 oops [] ene_init+0x3c/0x3e [lirc_ene0100] oops [] do_one_initcall+0x3c/0x1a0 oops [] sys_init_module+0xbb/0x200 oops [] system_call_fastpath+0x16/0x1b oops Code: e5 41 54 53 0f 1f 44 00 00 48 89 fb 89 f7 41 89 f4 48 85 ff 48 8d 47 ff 74 33 48 85 f8 75 2e 89 d6 e8 07 35 0c 00 48 85 c0 74 52 <48> 89 03 44 89 63 08 31 c0 c7 43 10 00 00 00 00 c7 43 0c 00 00 oops RIP [] kfifo_alloc+0x2e/0xb0 oops RSP oops CR2: 0000000000000000 oops oops Found WARNING (1): oops WARNING: at /build/buildd/linux-2.6.35/lib/kobject.c:595 kobject_put+0x50/0x60() oops Hardware name: To Be Filled By O.E.M. oops kobject: '(null)' (ffff8802374c5998): is not initialized, yet kobject_put() is being called. oops Modules linked in: ip6table_filter ip6_tables nf_nat_irc nf_conntrack_irc snd_hda_intel(+) nf_nat_ftp nf_nat snd_hda_codec snd_ctxfi nf_conntrack_ipv4 nf_defrag_ipv4 nf_conntrack_ftp nf_conntrack snd_hwdep snd_pcm snd_seq_midi snd_rawmidi iptable_filter snd_seq_midi_event ip_tables snd_seq snd_timer nouveau snd_seq_device ttm drm_kms_helper snd drm x_tables soundcore i2c_algo_bit snd_page_alloc joydev shpchp lp xhci_hcd psmouse i7core_edac serio_raw edac_core parport dm_raid45 xor usbhid hid sky2 pata_jmicron ahci libahci oops Pid: 1302, comm: dmraid Tainted: G M D 2.6.35-19-generic #28-Ubuntu oops Call Trace: oops [] warn_slowpath_common+0x7f/0xc0 oops [] warn_slowpath_fmt+0x46/0x50 oops [] kobject_put+0x50/0x60 oops [] dm_sysfs_exit+0x16/0x20 oops [] dm_put+0x9f/0x120 oops [] table_status+0x54/0xa0 oops [] ? table_status+0x0/0xa0 oops [] ctl_ioctl+0x1a5/0x250 oops [] ? do_anonymous_page+0x11b/0x330 oops [] dm_ctl_ioctl+0x13/0x20 oops [] vfs_ioctl+0x3d/0xd0 oops [] do_vfs_ioctl+0x81/0x340 oops [] ? do_page_fault+0x15e/0x350 oops [] sys_ioctl+0x81/0xa0 oops [] system_call_fastpath+0x16/0x1b oops oops Found OOPS (19): oops BUG: unable to handle kernel NULL pointer dereference at 0000000000000008 oops IP: [] bdput+0x9/0x20 oops PGD 2220c7067 PUD 2220c6067 PMD 0 oops Oops: 0000 [#2] SMP oops last sysfs file: /sys/devices/pci0000:00/0000:00:1f.2/host4/target4:0:0/4:0:0:0/block/sda/sda3/alignment_offset oops CPU 4 oops Modules linked in: ip6table_filter ip6_tables nf_nat_irc nf_conntrack_irc snd_hda_intel(+) nf_nat_ftp nf_nat snd_hda_codec snd_ctxfi nf_conntrack_ipv4 nf_defrag_ipv4 nf_conntrack_ftp nf_conntrack snd_hwdep snd_pcm snd_seq_midi snd_rawmidi iptable_filter snd_seq_midi_event ip_tables snd_seq snd_timer nouveau snd_seq_device ttm drm_kms_helper snd drm x_tables soundcore i2c_algo_bit snd_page_alloc joydev shpchp lp xhci_hcd psmouse i7core_edac serio_raw edac_core parport dm_raid45 xor usbhid hid sky2 pata_jmicron ahci libahci oops oops Pid: 1302, comm: dmraid Tainted: G M D W 2.6.35-19-generic #28-Ubuntu EVGA Classified SR-2/To Be Filled By O.E.M. oops RIP: 0010:[] [] bdput+0x9/0x20 oops RSP: 0018:ffff8803b5031d98 EFLAGS: 00010296 oops RAX: ffff8802374c5860 RBX: ffff8802374c5800 RCX: 000000000003ffff oops RDX: 0000000000000000 RSI: ffffffff812b8280 RDI: 0000000000000000 oops RBP: ffff8803b5031d98 R08: 0000000000015629 R09: 0000000000000000 oops R10: 0000000000000000 R11: 0000000000000002 R12: 00000000ffffffff oops R13: ffffc90013bd4000 R14: 0000000000004000 R15: 0000000000000000 oops FS: 00007f686410e7a0(0000) GS:ffff880245600000(0000) knlGS:0000000000000000 oops CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 oops CR2: 0000000000000008 CR3: 0000000236c87000 CR4: 00000000000006e0 oops DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 oops DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400 oops Process dmraid (pid: 1302, threadinfo ffff8803b5030000, task ffff8803b44744a0) oops Stack: oops ffff8803b5031db8 ffffffff81453ddb ffff8802374c5800 0000000000000000 oops <0> ffff8803b5031de8 ffffffff81455a81 0000000000000000 ffff8802374c5800 oops <0> 0000000000000000 ffffc90013bd4000 ffff8803b5031e28 ffffffff8145a864 oops Call Trace: oops [] free_dev+0x2b/0xe0 oops [] dm_put+0xf1/0x120 oops [] table_status+0x54/0xa0 oops [] ? table_status+0x0/0xa0 oops [] ctl_ioctl+0x1a5/0x250 oops [] ? do_anonymous_page+0x11b/0x330 oops [] dm_ctl_ioctl+0x13/0x20 oops [] vfs_ioctl+0x3d/0xd0 oops [] do_vfs_ioctl+0x81/0x340 oops [] ? do_page_fault+0x15e/0x350 oops [] sys_ioctl+0x81/0xa0 oops [] system_call_fastpath+0x16/0x1b oops Code: c0 8f a2 81 e8 19 3c eb ff 66 90 48 85 db 74 09 48 8b 7b 08 e8 c9 66 fe ff 5b 41 5c c9 c3 eb 02 90 90 55 48 89 e5 0f 1f 44 00 00 <48> 8b 7f 08 e8 ae 66 fe ff c9 c3 eb 0a 90 90 90 90 90 90 90 90 oops RIP [] bdput+0x9/0x20 oops RSP oops CR2: 0000000000000008 oops oops Found OOPS (20): oops BUG: unable to handle kernel paging request at f8147540 oops IP: [] driver_register+0xfe/0x130 oops *pde = 3716d067 *pte = 00000000 oops Oops: 0000 [#1] SMP oops last sysfs file: /sys/devices/pci0000:00/0000:00:18.3/uevent oops Modules linked in: amd64_agp(+) squashfs aufs nls_iso8859_1 nls_cp437 vfat fat dm_raid45 xor btrfs zlib_deflate crc32c libcrc32c radeon ttm drm_kms_helper drm usb_storage forcedeth pata_amd sata_nv i2c_algo_bit agpgart oops oops Pid: 1879, comm: modprobe Not tainted 2.6.35-22-generic #33-Ubuntu 'K8N'/K8N oops EIP: 0060:[] EFLAGS: 00010282 CPU: 0 oops EIP is at driver_register+0xfe/0x130 oops EAX: f8147510 EBX: 00000000 ECX: f8006419 EDX: f681f780 oops ESI: f8006510 EDI: c036c8a0 EBP: f6899f34 ESP: f6899f18 oops DS: 007b ES: 007b FS: 00d8 GS: 00e0 SS: 0068 oops Process modprobe (pid: 1879, ti=f6898000 task=f642bf70 task.ti=f6898000) oops Stack: oops 00000001 f8006780 00000000 c07d2ae0 f80064e0 f8006780 f8006510 f6899f48 oops <0> c036cba5 b78ba000 f8006780 00000000 f6899f54 f800902c 00000000 f6899f5c oops <0> f80090a8 f6899f88 c0101132 f8006780 c07d0f60 b78ba000 f8006780 08b41228 oops Call Trace: oops [] ? __pci_register_driver+0x45/0xb0 oops [] ? agp_amd64_init+0x2c/0xa0 [amd64_agp] oops [] ? agp_amd64_mod_init+0x8/0xa [amd64_agp] oops [] ? do_one_initcall+0x32/0x1a0 oops [] ? agp_amd64_mod_init+0x0/0xa [amd64_agp] oops [] ? sys_init_module+0x9b/0x1e0 oops [] ? sys_write+0x42/0x70 oops [] ? syscall_call+0x7/0xb oops Code: 89 f0 e8 86 ea ff ff 83 c4 10 89 f8 5b 5e 5f 5d c3 8b 06 c7 04 24 2c 6a 76 c0 89 44 24 04 e8 85 59 1c 00 8b 56 04 e9 56 ff ff ff <8b> 40 30 bf f0 ff ff ff e8 d5 11 f5 ff 8b 06 c7 04 24 6c 6a 76 oops EIP: [] driver_register+0xfe/0x130 SS:ESP 0068:f6899f18 oops CR2: 00000000f8147540 oops oops Found OOPS (21): oops BUG: unable to handle kernel paging request at ffffc900102b8000 oops IP: [] azx_create+0x36b/0x73d [snd_hda_intel] oops PGD 1d897067 PUD 1d898067 PMD 1693c067 PTE 800000fd00000173 oops Oops: 0009 [#1] SMP oops last sysfs file: /sys/devices/platform/i8042/serio1/input/input3/event3/uevent oops CPU 0 oops Modules linked in: snd_hda_intel(+) snd_hda_codec snd_hwdep snd_pcm snd_seq_midi snd_rawmidi snd_seq_midi_event snd_seq snd_timer snd_seq_device snd soundcore ppdev psmouse serio_raw parport_pc i2c_viapro edac_core lp snd_page_alloc parport k8temp edac_mce_amd shpchp 8139too 8139cp mii floppy pata_via sata_via oops oops Pid: 735, comm: work_for_cpu Not tainted 2.6.35-22-generic #34-Ubuntu 0A88h/HP dx2255 MT(RL028AV) oops RIP: 0010:[] [] azx_create+0x36b/0x73d [snd_hda_intel] oops RSP: 0018:ffff88001a7d7e20 EFLAGS: 00010282 oops RAX: ffffc900102b8000 RBX: ffff88001a7d7e80 RCX: 0000000000000000 oops RDX: 0000000000000000 RSI: 0000000000000286 RDI: 0000000000000286 oops RBP: ffff88001a7d7e70 R08: 0000000000000001 R09: 0000000000000040 oops R10: 0000000000000008 R11: 0000000000000003 R12: ffff88001cf02000 oops R13: ffff880016b0b000 R14: 0000000000000000 R15: ffff880016b0b400 oops FS: 00007fe9f4940700(0000) GS:ffff880001e00000(0000) knlGS:0000000000000000 oops CS: 0010 DS: 0000 ES: 0000 CR0: 000000008005003b oops CR2: ffffc900102b8000 CR3: 000000001c49c000 CR4: 00000000000006f0 oops DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 oops DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400 oops Process work_for_cpu (pid: 735, threadinfo ffff88001a7d6000, task ffff88001694c4a0) oops Stack: oops ffffffffa00b71e0 ffffffffa014cd78 ffffffff00000000 000000001a7d7e88 oops <0> 0000000000000000 ffff88001cf02000 ffffffffa014c520 ffff88001cf02090 oops <0> 0000000000000000 0000000000000000 ffff88001a7d7eb0 ffffffffa014b100 oops Call Trace: oops [] azx_probe+0xb8/0x284 [snd_hda_intel] oops [] ? do_work_for_cpu+0x0/0x30 oops [] local_pci_probe+0x17/0x20 oops [] do_work_for_cpu+0x18/0x30 oops [] kthread+0x96/0xa0 oops [] kernel_thread_helper+0x4/0x10 oops [] ? kthread+0x0/0xa0 oops [] ? kernel_thread_helper+0x0/0x10 oops Code: ef 31 f6 4c 89 ef 89 4d c0 e8 17 d5 ff ff 85 c0 0f 88 c3 03 00 00 4c 89 e7 e8 87 9d 18 e1 41 8b 7d 40 e8 1e 01 f8 e0 49 8b 45 38 <66> 44 8b 30 41 8b 45 14 8b 4d c0 8d 50 fd 83 fa 01 77 3f 31 d2 oops RIP [] azx_create+0x36b/0x73d [snd_hda_intel] oops RSP oops CR2: ffffc900102b8000 oops oops Found OOPS (22): oops BUG: unable to handle kernel NULL pointer dereference at (null) oops IP: [] __mutex_lock_slowpath+0x9a/0x140 oops *pde = df469067 oops Oops: 0002 [#1] SMP oops last sysfs file: /sys/devices/platform/radeon_cp.0/firmware/radeon_cp.0/loading oops Modules linked in: snd_seq_midi_event radeon(+) snd_seq sbp2 uvcvideo i82875p_edac snd_timer snd_seq_device ieee1394 sunrpc edac_core videodev ttm v4l1_compat drm_kms_helper snd drm i2c_algo_bit snd_page_alloc btusb soundcore intel_agp lp bluetooth agpgart parport shpchp serio_raw hid_logitech ff_memless usbhid hid usb_storage firewire_ohci e1000 firewire_core crc_itu_t oops oops Pid: 353, comm: plymouthd Not tainted 2.6.35-7-generic #11-Ubuntu Canterwood/ oops EIP: 0060:[] EFLAGS: 00010246 CPU: 0 oops EIP is at __mutex_lock_slowpath+0x9a/0x140 oops EAX: 00000000 EBX: f2796e90 ECX: f2796e98 EDX: f6a71ec0 oops ESI: f2796e94 EDI: f2796e90 EBP: f6a71ed8 ESP: f6a71eb4 oops DS: 007b ES: 007b FS: 00d8 GS: 00e0 SS: 0068 oops Process plymouthd (pid: 353, ti=f6a70000 task=c106cc20 task.ti=f6a70000) oops Stack: oops f6a71ec4 c106cc20 f2796e98 f2796e98 00000000 f2796c00 f2796e90 f6b1fb00 oops <0> f2796e90 f6a71ee8 c05cb095 f6b1fb00 f6b1fb00 f6a71efc f87e7dc3 f6b1fb00 oops <0> f6b1fb60 f2796c00 f6a71f44 f87df337 00000001 f87efe25 f87ef220 f87f1590 oops Call Trace: oops [] ? mutex_lock+0x25/0x40 oops [] ? drm_fb_release+0x23/0x70 [drm] oops [] ? drm_release+0x3e7/0x4c0 [drm] oops [] ? __fput+0xdf/0x1f0 oops [] ? fput+0x1d/0x30 oops [] ? filp_close+0x4c/0x80 oops [] ? sys_close+0x75/0xc0 oops [] ? syscall_call+0x7/0xb oops Code: 83 79 18 63 7f b3 8d 76 00 8d 73 04 89 f0 e8 5e 11 00 00 8d 53 08 89 55 e4 8d 55 e8 8b 43 0c 89 53 0c 8b 4d e4 89 45 ec 89 4d e8 <89> 10 8b 45 e0 ba ff ff ff ff 89 45 f0 89 d0 87 03 83 f8 01 74 oops EIP: [] __mutex_lock_slowpath+0x9a/0x140 SS:ESP 0068:f6a71eb4 oops CR2: 0000000000000000 oops oops Found OOPS (23): oops BUG: unable to handle kernel NULL pointer dereference at 0000000000000008 oops IP: [] ips_detect_cpu+0x76/0x1d0 [intel_ips] oops PGD 130ef4067 PUD 130ef3067 PMD 0 oops Oops: 0000 [#1] SMP oops last sysfs file: /sys/devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.2/1-1.2:1.0/input/input4/name oops CPU 1 oops Modules linked in: intel_ips(+) serio_raw snd_page_alloc squashfs aufs nls_cp437 isofs dm_raid45 xor btrfs zlib_deflate crc32c libcrc32c usb_storage usbhid hid i915 drm_kms_helper drm atl1c ahci intel_agp i2c_algo_bit video output libahci oops oops Pid: 1463, comm: modprobe Not tainted 2.6.35-22-generic #33-Ubuntu Base Board Product Name/Satellite L655 oops RIP: 0010:[] [] ips_detect_cpu+0x76/0x1d0 [intel_ips] oops RSP: 0018:ffff88012d92bc48 EFLAGS: 00010202 oops RAX: 0000000000c800c8 RBX: 0000000000000000 RCX: 0000000000c800c8 oops RDX: 0000000000000000 RSI: ffff88012d92bc64 RDI: 0000000000c800c8 oops RBP: ffff88012d92bc88 R08: 0000000000000000 R09: 0000000000000000 oops R10: 0000000000000000 R11: 0000000000000002 R12: 0000000000c800c8 oops R13: ffff8801303a90c0 R14: ffff880131703090 R15: 00000000fffffff4 oops FS: 00007ff77fdc8700(0000) GS:ffff880001e40000(0000) knlGS:0000000000000000 oops CS: 0010 DS: 0000 ES: 0000 CR0: 000000008005003b oops CR2: 0000000000000008 CR3: 000000012e690000 CR4: 00000000000006e0 oops DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 oops DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400 oops Process modprobe (pid: 1463, threadinfo ffff88012d92a000, task ffff880130ee16e0) oops Stack: oops ffff88012d92bc88 ffffffff81142fa4 ffff88012d92bc78 0000000031703000 oops <0> ffff880131703000 ffff8801303a90c0 ffff880131703000 00000000fffffff4 oops <0> ffff88012d92bcd8 ffffffffa012dfb1 ffff88012d92bcb8 ffff8801321edb90 oops Call Trace: oops [] ? kmem_cache_alloc_notrace+0xb4/0xd0 oops [] ips_probe+0x71/0x710 [intel_ips] oops [] local_pci_probe+0x17/0x20 oops [] __pci_device_probe+0xe9/0xf0 oops [] ? kobject_get+0x1a/0x30 oops [] ? get_device+0x19/0x20 oops [] pci_device_probe+0x3a/0x60 oops [] really_probe+0x68/0x190 oops [] driver_probe_device+0x45/0x70 oops [] __driver_attach+0x9b/0xa0 oops [] ? __driver_attach+0x0/0xa0 oops [] bus_for_each_dev+0x68/0x90 oops [] driver_attach+0x1e/0x20 oops [] bus_add_driver+0xde/0x280 oops [] driver_register+0x80/0x150 oops [] ? notifier_call_chain+0x56/0x80 oops [] __pci_register_driver+0x56/0xd0 oops [] ? __blocking_notifier_call_chain+0x65/0x80 oops [] ? ips_init+0x0/0x20 [intel_ips] oops [] ips_init+0x1e/0x20 [intel_ips] oops [] do_one_initcall+0x3c/0x1a0 oops [] sys_init_module+0xbb/0x200 oops [] system_call_fastpath+0x16/0x1b oops Code: a0 48 c7 c7 88 ec ac 81 48 c7 c3 80 fa 12 a0 e8 c1 0c 19 e1 48 85 c0 74 44 bf ac 01 00 00 4c 89 e6 e8 3f 8e f0 e0 66 90 41 89 c4 <8b> 53 08 41 c1 e4 12 41 c1 ec 15 41 69 c4 e8 03 00 00 39 c2 0f oops RIP [] ips_detect_cpu+0x76/0x1d0 [intel_ips] oops RSP oops CR2: 0000000000000008 oops oops Found OOPS (24): oops BUG: unable to handle kernel NULL pointer dereference at 00000008 oops IP: [] ips_detect_cpu+0x62/0x180 [intel_ips] oops *pdpt = 0000000035926001 *pde = 0000000000000000 oops Oops: 0000 [#1] SMP oops last sysfs file: /sys/devices/platform/pcspkr/uevent oops Modules linked in: intel_ips(+) sony_laptop(+) video output lp parport usbhid hid firewire_ohci ahci sdhci_pci atl1c libahci firewire_core sdhci led_class crc_itu_t oops oops Pid: 569, comm: modprobe Not tainted 2.6.35-22-generic-pae #35-Ubuntu VAIO/VPCY21S1E oops EIP: 0060:[] EFLAGS: 00010286 CPU: 0 oops EIP is at ips_detect_cpu+0x62/0x180 [intel_ips] oops EAX: 00580058 EBX: 00000000 ECX: 00580058 EDX: 00000000 oops ESI: f5965e04 EDI: f60eac00 EBP: f5965e14 ESP: f5965de4 oops DS: 007b ES: 007b FS: 00d8 GS: 00e0 SS: 0068 oops Process modprobe (pid: 569, ti=f5964000 task=f593b2c0 task.ti=f5964000) oops Stack: oops f88f6efc f88f6e9e f759db40 f5965e14 c02162f1 f5965e08 c05ee9c9 f88f5eef oops <0> 00000000 f60eac00 f75e9000 fffffff4 f5965e4c f88f5f2b c027b6cd f5965e4c oops <0> c027ac77 f5965e4c c027b07a f5965e38 f75e9000 f75e9060 c037614e f75e9000 oops Call Trace: oops [] ? kmem_cache_alloc_notrace+0x91/0xb0 oops [] ? mutex_lock+0x19/0x40 oops [] ? ips_probe+0x1f/0x6a0 [intel_ips] oops [] ? ips_probe+0x5b/0x6a0 [intel_ips] oops [] ? sysfs_add_one+0x1d/0x110 oops [] ? sysfs_new_dirent+0x67/0x100 oops [] ? sysfs_addrm_finish+0x1a/0xb0 oops [] ? pci_match_device+0xbe/0xd0 oops [] ? local_pci_probe+0x13/0x20 oops [] ? pci_device_probe+0x68/0x90 oops [] ? really_probe+0x50/0x150 oops [] ? pm_runtime_barrier+0x57/0xb0 oops [] ? driver_probe_device+0x3c/0x60 oops [] ? __driver_attach+0x81/0x90 oops [] ? bus_for_each_dev+0x53/0x80 oops [] ? driver_attach+0x1e/0x20 oops [] ? __driver_attach+0x0/0x90 oops [] ? bus_add_driver+0xd5/0x280 oops [] ? pci_device_remove+0x0/0x40 oops [] ? driver_register+0x6a/0x130 oops [] ? __pci_register_driver+0x45/0xb0 oops [] ? ips_init+0x17/0x19 [intel_ips] oops [] ? do_one_initcall+0x32/0x1a0 oops [] ? ips_init+0x0/0x19 [intel_ips] oops [] ? sys_init_module+0x9b/0x1e0 oops [] ? sys_write+0x42/0x70 oops [] ? sysenter_do_call+0x12/0x28 oops Code: d5 83 c7 90 ba f5 6d 8f f8 b8 8c 42 85 c0 e8 56 ea a6 c7 bb 80 74 8f f8 85 c0 74 35 b8 ac 01 00 00 89 f2 e8 21 d5 83 c7 90 89 c1 <8b> 53 08 c1 e1 12 c1 e9 15 69 c1 e8 03 00 00 39 c2 75 75 89 d8 oops EIP: [] ips_detect_cpu+0x62/0x180 [intel_ips] SS:ESP 0068:f5965de4 oops CR2: 0000000000000008 oops oops Found OOPS (25): oops BUG: unable to handle kernel paging request at ffffc90000360000 oops IP: [] azx_create+0x36b/0x73d [snd_hda_intel] oops PGD 75417067 PUD 75418067 PMD 75522067 PTE 800000fd00000173 oops Oops: 0009 [#1] SMP oops last sysfs file: /sys/devices/pci0000:00/0000:00:0f.0/host0/target0:0:0/0:0:0:0/block/sda/sda17/alignment_offset oops CPU 0 oops Modules linked in: snd_hda_intel(+) snd_hda_codec snd_hwdep snd_pcm snd_seq_midi snd_rawmidi snd_seq_midi_event snd_seq snd_timer snd_seq_device snd soundcore snd_page_alloc ppdev lp parport_pc k8temp edac_core edac_mce_amd i2c_viapro parport shpchp psmouse joydev serio_raw usbhid hid floppy via_rhine pata_via mii sata_via oops oops Pid: 856, comm: work_for_cpu Not tainted 2.6.35-22-generic #35-Ubuntu MS-7253/MS-7253 oops RIP: 0010:[] [] azx_create+0x36b/0x73d [snd_hda_intel] oops RSP: 0018:ffff880073aa5e20 EFLAGS: 00010282 oops RAX: ffffc90000360000 RBX: ffff880073aa5e80 RCX: 0000000000000000 oops RDX: 0000000000000000 RSI: 0000000000000286 RDI: 0000000000000286 oops RBP: ffff880073aa5e70 R08: 0000000000000001 R09: 0000000000000040 oops R10: 0000000000000008 R11: 0000000000000003 R12: ffff8800752af000 oops R13: ffff88007575e400 R14: 0000000000000000 R15: ffff88007575d400 oops FS: 00007f7f480467a0(0000) GS:ffff880001e00000(0000) knlGS:0000000000000000 oops CS: 0010 DS: 0000 ES: 0000 CR0: 000000008005003b oops CR2: ffffc90000360000 CR3: 000000007536b000 CR4: 00000000000006f0 oops DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 oops DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400 oops Process work_for_cpu (pid: 856, threadinfo ffff880073aa4000, task ffff88007417adc0) oops Stack: oops ffffffffa00bf1e0 ffffffffa009ad78 ffffffff00000000 0000000073aa5e88 oops <0> 0000000000000000 ffff8800752af000 ffffffffa009a520 ffff8800752af090 oops <0> 0000000000000000 0000000000000000 ffff880073aa5eb0 ffffffffa0099100 oops Call Trace: oops [] azx_probe+0xb8/0x284 [snd_hda_intel] oops [] ? do_work_for_cpu+0x0/0x30 oops [] local_pci_probe+0x17/0x20 oops [] do_work_for_cpu+0x18/0x30 oops [] kthread+0x96/0xa0 oops [] kernel_thread_helper+0x4/0x10 oops [] ? kthread+0x0/0xa0 oops [] ? kernel_thread_helper+0x0/0x10 oops Code: ef 31 f6 4c 89 ef 89 4d c0 e8 17 d5 ff ff 85 c0 0f 88 c3 03 00 00 4c 89 e7 e8 87 bd 23 e1 41 8b 7d 40 e8 1e 21 03 e1 49 8b 45 38 <66> 44 8b 30 41 8b 45 14 8b 4d c0 8d 50 fd 83 fa 01 77 3f 31 d2 oops RIP [] azx_create+0x36b/0x73d [snd_hda_intel] oops RSP oops CR2: ffffc90000360000 oops oops Found OOPS (26): oops BUG: unable to handle kernel paging request at ffffc90422101ffc oops IP: [] evergreen_cp_start+0x4c/0x570 [radeon] oops PGD 157c0c067 PUD 0 oops Oops: 0002 [#1] SMP oops last sysfs file: /sys/module/snd_rawmidi/initstate oops CPU 0 oops Modules linked in: snd_rawmidi snd_seq_midi_event snd_seq arc4 snd_timer radeon(+) snd_seq_device snd ttm iwlagn i915 iwlcore soundcore drm_kms_helper uvcvideo drm joydev usbhid mac80211 hid snd_page_alloc videodev v4l1_compat v4l2_compat_ioctl32 intel_ips hp_wmi hp_accel lis3lv02d input_polldev video intel_agp btusb wacom cfg80211 bluetooth i2c_algo_bit led_class psmouse output serio_raw lp parport ahci libahci r8169 mii oops oops Pid: 564, comm: modprobe Not tainted 2.6.35-24-generic #42-Ubuntu 1486/HP TouchSmart tm2 Notebook PC oops RIP: 0010:[] [] evergreen_cp_start+0x4c/0x570 [radeon] oops RSP: 0018:ffff880145bcbb48 EFLAGS: 00010286 oops RAX: 0000000000000000 RBX: 0000000000000000 RCX: ffff880145bcbfd8 oops RDX: ffffc90422101ffc RSI: 0000000000000007 RDI: 0000000000000010 oops RBP: ffff880145bcbb58 R08: ffff880145bca000 R09: 00000000ffffffff oops R10: 00000000ffffffff R11: 0000000000000001 R12: ffff880153604000 oops R13: 0000000000c10027 R14: 00000000fffffff4 R15: ffffffffa0408c80 oops FS: 00007f3dabda0700(0000) GS:ffff880001e00000(0000) knlGS:0000000000000000 oops CS: 0010 DS: 0000 ES: 0000 CR0: 000000008005003b oops CR2: ffffc90422101ffc CR3: 000000014eb1c000 CR4: 00000000000006f0 oops DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 oops DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400 oops Process modprobe (pid: 564, threadinfo ffff880145bca000, task ffff880145b80000) oops Stack: oops ffff880153604000 0000000008000911 ffff880145bcbb78 ffffffffa03e174d oops <0> ffff880153604000 0000000000000000 ffff880145bcbb98 ffffffffa03e1a6f oops <0> ffff880153604000 0000000000000000 ffff880145bcbbc8 ffffffffa03e1d63 oops Call Trace: oops [] evergreen_cp_resume+0x2ad/0x520 [radeon] oops [] evergreen_startup+0xaf/0x140 [radeon] oops [] evergreen_init+0x263/0x4d0 [radeon] oops [] radeon_device_init+0x344/0x4a0 [radeon] oops [] radeon_driver_load_kms+0xa3/0x250 [radeon] oops [] drm_get_dev+0x15f/0x2c0 [drm] oops [] ? sysfs_add_one+0x2c/0x130 oops [] radeon_pci_probe+0x15/0x269 [radeon] oops [] local_pci_probe+0x17/0x20 oops [] __pci_device_probe+0xe9/0xf0 oops [] ? kobject_get+0x1a/0x30 oops [] ? get_device+0x19/0x20 oops [] pci_device_probe+0x3a/0x60 oops [] really_probe+0x68/0x190 oops [] driver_probe_device+0x45/0x70 oops [] __driver_attach+0x9b/0xa0 oops [] ? __driver_attach+0x0/0xa0 oops [] bus_for_each_dev+0x68/0x90 oops [] driver_attach+0x1e/0x20 oops [] bus_add_driver+0xde/0x280 oops [] driver_register+0x80/0x150 oops [] __pci_register_driver+0x56/0xd0 oops [] drm_init+0x111/0x120 [drm] oops [] ? vga_switcheroo_register_handler+0x3a/0x60 oops [] ? radeon_init+0x0/0xc6 [radeon] oops [] radeon_init+0xc4/0xc6 [radeon] oops [] do_one_initcall+0x3c/0x1a0 oops [] sys_init_module+0xbb/0x200 oops [] system_call_fastpath+0x16/0x1b oops Code: 00 00 41 8b bc 24 e4 09 00 00 85 ff 0f 8e ce 03 00 00 41 8b 84 24 d4 09 00 00 89 c2 83 c0 01 48 c1 e2 02 49 03 94 24 c8 09 00 00 02 00 44 05 c0 41 8b 94 24 e4 09 00 00 41 23 84 24 f4 09 00 oops RIP [] evergreen_cp_start+0x4c/0x570 [radeon] oops RSP oops CR2: ffffc90422101ffc oops oops Found OOPS (27): oops BUG: unable to handle kernel NULL pointer dereference at (null) oops IP: [<(null)>] (null) oops *pde = 00000000 oops Oops: 0000 [#1] SMP oops last sysfs file: /sys/kernel/uevent_seqnum oops Modules linked in: joydev snd_hda_codec_intelhdmi snd_hda_codec_realtek btusb bluetooth tpm_infineon arc4 snd_hda_intel snd_hda_codec snd_hwdep snd_pcm snd_seq_midi snd_rawmidi i915 iwlagn snd_seq_midi_event drm_kms_helper snd_seq drm snd_timer uvcvideo iwlcore snd_seq_device videodev v4l1_compat mac80211 tpm_tis tpm psmouse tpm_bios serio_raw snd toshiba_bluetooth toshiba_acpi intel_agp agpgart cfg80211 i2c_algo_bit soundcore intel_ips snd_page_alloc video output lp parport ahci sdhci_pci sdhci led_class libahci e1000e oops oops Pid: 624, comm: ips-adjust Not tainted 2.6.35-25-generic #44-Ubuntu Portable PC/TECRA R700 oops EIP: 0060:[<00000000>] EFLAGS: 00010202 CPU: 2 oops EIP is at 0x0 oops EAX: 00000292 EBX: f5ae5b00 ECX: 00002328 EDX: 00000292 oops ESI: f5ae5b2c EDI: 00000000 EBP: f5a61fbc ESP: f5a61f78 oops DS: 007b ES: 007b FS: 00d8 GS: 00e0 SS: 0068 oops Process ips-adjust (pid: 624, ti=f5a60000 task=f51d8000 task.ti=f5a60000) oops Stack: oops f84eab93 c08c4700 c08c4700 f70a9960 00000001 c08c4700 c08c4700 f5a61fac oops <0> 0000005a f6a3e200 008c4700 0000058f f51d005a 00000000 f5ae7dec f5ae5b00 oops <0> f84ea900 f5a61fe4 c0165ad4 00000000 00000000 00000000 f5a61fd0 f5a61fd0 oops Call Trace: oops [] ? ips_adjust+0x293/0x400 [intel_ips] oops [] ? ips_adjust+0x0/0x400 [intel_ips] oops [] ? kthread+0x74/0x80 oops [] ? kthread+0x0/0x80 oops [] ? kernel_thread_helper+0x6/0x10 oops Code: Bad EIP value. oops EIP: [<00000000>] 0x0 SS:ESP 0068:f5a61f78 oops CR2: 0000000000000000 oops oops Found OOPS (28): oops BUG: unable to handle kernel NULL pointer dereference at 0000018e oops IP: [] fb_release+0x25/0x60 oops *pde = 00000000 oops Oops: 0000 [#1] SMP oops last sysfs file: /sys/devices/virtual/vtconsole/vtcon1/uevent oops Modules linked in: parport_pc ppdev snd_hda_codec_realtek snd_hda_intel snd_hda_codec snd_hwdep arc4 snd_pcm ath5k snd_seq_midi snd_rawmidi ath i915 snd_seq_midi_event mac80211 snd_seq joydev snd_timer snd_seq_device drm_kms_helper uvcvideo cfg80211 drm snd psmouse videodev serio_raw soundcore snd_page_alloc i2c_algo_bit eeepc_laptop video sparse_keymap lp parport usbhid hid usb_storage uas atl2 oops oops Pid: 246, comm: plymouthd Not tainted 2.6.38-999-generic #201103011141 ASUSTeK Computer INC. 701/701 oops EIP: 0060:[] EFLAGS: 00210286 CPU: 0 oops EIP is at fb_release+0x25/0x60 oops EAX: 00000186 EBX: f41f1800 ECX: c12aaf90 EDX: f6df6000 oops ESI: f41f1808 EDI: f0a64e40 EBP: f6df7f40 ESP: f6df7f38 oops DS: 007b ES: 007b FS: 00d8 GS: 00e0 SS: 0068 oops Process plymouthd (pid: 246, ti=f6df6000 task=f6e325e0 task.ti=f6df6000) oops Stack: oops f3e9e880 00000008 f6df7f74 c1127c39 00000001 00000000 00000000 f3e9e880 oops f41966c0 f43e83f0 f0a64e48 f43e83f0 f0a64e40 f6e03100 00000000 f6df7f7c oops c1127d7e f6df7f94 c112467c 0012d000 f6e03140 f6e03100 0000000c f6df7fac oops Call Trace: oops [] __fput+0x99/0x1c0 oops [] fput+0x1e/0x30 oops [] filp_close+0x4c/0x80 oops [] sys_close+0x6e/0xc0 oops [] sysenter_do_call+0x12/0x28 oops [] ? squash_the_stupid_serial_number+0xc0/0xe0 oops Code: b4 26 00 00 00 00 55 89 e5 83 ec 08 89 1c 24 89 74 24 04 3e 8d 74 26 00 8b 5a 74 8d 73 08 89 f0 e8 11 f9 25 00 8b 83 0c 03 00 00 <8b> 48 08 85 c9 74 0f ba 01 00 00 00 89 d8 ff d1 8b 83 0c 03 00 oops EIP: [] fb_release+0x25/0x60 SS:ESP 0068:f6df7f38 oops CR2: 000000000000018e oops oops Found OOPS (29): oops BUG: unable to handle kernel paging request at ffffffffa0c8d860 oops IP: [] module_bug_finalize+0x7e/0xd0 oops PGD 1a2c067 PUD 1a30063 PMD 1187c3067 PTE 0 oops Oops: 0002 [#1] SMP oops last sysfs file: /sys/module/pcmcia/initstate oops CPU 1 oops Modules linked in: btusb tpm_infineon bluetooth snd_hda_codec_idt arc4 pcmcia iwlagn snd_hda_intel(+) snd_hda_codec snd_hwdep snd_pcm iwlcore snd_seq_midi snd_rawmidi snd_seq_midi_event snd_seq nvidia(P+) ppdev joydev mac80211 hp_wmi r852 sm_common snd_timer cfg80211 nand nand_ids nand_ecc video snd_seq_device tpm_tis yenta_socket tpm mtd output parport_pc tpm_bios pcmcia_rsrc pcmcia_core hp_accel lis3lv02d input_polldev snd intel_ips psmouse serio_raw xhci_hcd intel_agp soundcore snd_page_alloc lp parport usbhid hid firewire_ohci sdhci_pci e1000e firewire_core sdhci led_class crc_itu_t ahci libahci oops oops Pid: 1089, comm: modprobe Tainted: P 2.6.35-28-generic #50-Ubuntu 1521/HP EliteBook 8540w oops RIP: 0010:[] [] module_bug_finalize+0x7e/0xd0 oops RSP: 0018:ffff8801194a3d80 EFLAGS: 00010246 oops RAX: ffffffffa0067698 RBX: ffffffff817d6acc RCX: 000000000000000b oops RDX: ffffffffa0c8d858 RSI: ffffc900110f526a RDI: ffffffff817d6acd oops RBP: ffff8801194a3d88 R08: ffffffffa0067520 R09: ffffc900110f5948 oops R10: ffffc900110f5260 R11: 000000000000000c R12: ffffc900110f53c8 oops R13: 0000000000000000 R14: ffffffff817a67b7 R15: 0000000000000006 oops FS: 00007f72c73de700(0000) GS:ffff880001e40000(0000) knlGS:0000000000000000 oops CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 oops CR2: ffffffffa0c8d860 CR3: 00000001187f3000 CR4: 00000000000006e0 oops DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 oops DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400 oops Process modprobe (pid: 1089, threadinfo ffff8801194a2000, task ffff880118cfc4a0) oops Stack: oops 0000000000000000 ffff8801194a3df8 ffffffff8103273f ffffffff812c3970 oops <0> ffffffffa0067520 ffffc900110f1000 ffffc900110f5348 ffffc900110f5260 oops <0> ffffc900110f5948 ffff8801194a3df8 ffffffffa0067520 ffffc900110f1000 oops Call Trace: oops [] module_finalize+0x11f/0x160 oops [] ? generic_swap+0x0/0x30 oops [] load_module+0xc65/0x1140 oops [] ? vfs_write+0x132/0x1a0 oops [] sys_init_module+0x62/0x200 oops [] system_call_fastpath+0x16/0x1b oops Code: 89 d9 49 8d 34 32 f3 a6 74 43 83 c0 01 49 83 c1 40 39 d0 72 e4 eb 06 90 90 90 90 90 90 48 8b 15 09 2d 7a 00 49 8d 80 78 01 00 00 <48> 89 42 08 49 89 90 78 01 00 00 49 c7 80 80 01 00 00 f0 ab a5 oops RIP [] module_bug_finalize+0x7e/0xd0 oops RSP oops CR2: ffffffffa0c8d860 oops oops Found OOPS (30): oops BUG: unable to handle kernel paging request at ffffffffa0c8d860 oops IP: [] module_bug_finalize+0x7e/0xd0 oops PGD 1a2c067 PUD 1a30063 PMD 1187c3067 PTE 0 oops Oops: 0002 [#2] SMP oops last sysfs file: /sys/module/snd_hda_codec/initstate oops CPU 3 oops Modules linked in: btusb tpm_infineon bluetooth snd_hda_codec_idt arc4 pcmcia iwlagn snd_hda_intel(+) snd_hda_codec snd_hwdep snd_pcm iwlcore snd_seq_midi snd_rawmidi snd_seq_midi_event snd_seq nvidia(P+) ppdev joydev mac80211 hp_wmi r852 sm_common snd_timer cfg80211 nand nand_ids nand_ecc video snd_seq_device tpm_tis yenta_socket tpm mtd output parport_pc tpm_bios pcmcia_rsrc pcmcia_core hp_accel lis3lv02d input_polldev snd intel_ips psmouse serio_raw xhci_hcd intel_agp soundcore snd_page_alloc lp parport usbhid hid firewire_ohci sdhci_pci e1000e firewire_core sdhci led_class crc_itu_t ahci libahci oops oops Pid: 1125, comm: modprobe Tainted: P D 2.6.35-28-generic #50-Ubuntu 1521/HP EliteBook 8540w oops RIP: 0010:[] [] module_bug_finalize+0x7e/0xd0 oops RSP: 0018:ffff88011bb7dd80 EFLAGS: 00010246 oops RAX: ffffffffa015d3b8 RBX: ffffffff817d6acc RCX: 000000000000000b oops RDX: ffffffffa0c8d858 RSI: ffffc9001113804a RDI: ffffffff817d6acd oops RBP: ffff88011bb7dd88 R08: ffffffffa015d240 R09: ffffc900111387b8 oops R10: ffffc90011138040 R11: 000000000000000c R12: ffffc900111381b8 oops R13: 0000000000000000 R14: ffffffff817a67b7 R15: 0000000000000006 oops FS: 00007fa52f1e1700(0000) GS:ffff880001ec0000(0000) knlGS:0000000000000000 oops CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 oops CR2: ffffffffa0c8d860 CR3: 0000000119c91000 CR4: 00000000000006e0 oops DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 oops DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400 oops Process modprobe (pid: 1125, threadinfo ffff88011bb7c000, task ffff880117c496e0) oops Stack: oops 0000000000000000 ffff88011bb7ddf8 ffffffff8103273f ffffffff812c3970 oops <0> ffffffffa015d240 ffffc90011134000 ffffc90011138138 ffffc90011138040 oops <0> ffffc900111387b8 ffff88011bb7ddf8 ffffffffa015d240 ffffc90011134000 oops Call Trace: oops [] module_finalize+0x11f/0x160 oops [] ? generic_swap+0x0/0x30 oops [] load_module+0xc65/0x1140 oops [] sys_init_module+0x62/0x200 oops [] system_call_fastpath+0x16/0x1b oops Code: 89 d9 49 8d 34 32 f3 a6 74 43 83 c0 01 49 83 c1 40 39 d0 72 e4 eb 06 90 90 90 90 90 90 48 8b 15 09 2d 7a 00 49 8d 80 78 01 00 00 <48> 89 42 08 49 89 90 78 01 00 00 49 c7 80 80 01 00 00 f0 ab a5 oops RIP [] module_bug_finalize+0x7e/0xd0 oops RSP oops CR2: ffffffffa0c8d860 oops oops Found OOPS (31): oops BUG: unable to handle kernel paging request at ffffffffa0c8d860 oops IP: [] module_bug_finalize+0x7e/0xd0 oops PGD 1a2c067 PUD 1a30063 PMD 1187c3067 PTE 0 oops Oops: 0002 [#3] SMP oops last sysfs file: /sys/module/snd_hda_intel/initstate oops CPU 3 oops Modules linked in: btusb tpm_infineon bluetooth snd_hda_codec_idt arc4 pcmcia iwlagn snd_hda_intel(+) snd_hda_codec snd_hwdep snd_pcm iwlcore snd_seq_midi snd_rawmidi snd_seq_midi_event snd_seq nvidia(P+) ppdev joydev mac80211 hp_wmi r852 sm_common snd_timer cfg80211 nand nand_ids nand_ecc video snd_seq_device tpm_tis yenta_socket tpm mtd output parport_pc tpm_bios pcmcia_rsrc pcmcia_core hp_accel lis3lv02d input_polldev snd intel_ips psmouse serio_raw xhci_hcd intel_agp soundcore snd_page_alloc lp parport usbhid hid firewire_ohci sdhci_pci e1000e firewire_core sdhci led_class crc_itu_t ahci libahci oops oops Pid: 1129, comm: modprobe Tainted: P D 2.6.35-28-generic #50-Ubuntu 1521/HP EliteBook 8540w oops RIP: 0010:[] [] module_bug_finalize+0x7e/0xd0 oops RSP: 0018:ffff88011ac0dd80 EFLAGS: 00010246 oops RAX: ffffffffa0c623b8 RBX: ffffffff817d6acc RCX: 000000000000000b oops RDX: ffffffffa0c8d858 RSI: ffffc9001114204a RDI: ffffffff817d6acd oops RBP: ffff88011ac0dd88 R08: ffffffffa0c62240 R09: ffffc900111427b8 oops R10: ffffc90011142040 R11: 000000000000000c R12: ffffc900111421b8 oops R13: 0000000000000000 R14: ffffffff817a67b7 R15: 0000000000000006 oops FS: 00007f532b66d700(0000) GS:ffff880001ec0000(0000) knlGS:0000000000000000 oops CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 oops CR2: ffffffffa0c8d860 CR3: 000000011b29c000 CR4: 00000000000006e0 oops DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 oops DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400 oops Process modprobe (pid: 1129, threadinfo ffff88011ac0c000, task ffff880117c4c4a0) oops Stack: oops 0000000000000000 ffff88011ac0ddf8 ffffffff8103273f ffffffff812c3970 oops <0> ffffffffa0c62240 ffffc9001113e000 ffffc90011142138 ffffc90011142040 oops <0> ffffc900111427b8 ffff88011ac0ddf8 ffffffffa0c62240 ffffc9001113e000 oops Call Trace: oops [] module_finalize+0x11f/0x160 oops [] ? generic_swap+0x0/0x30 oops [] load_module+0xc65/0x1140 oops [] sys_init_module+0x62/0x200 oops [] system_call_fastpath+0x16/0x1b oops Code: 89 d9 49 8d 34 32 f3 a6 74 43 83 c0 01 49 83 c1 40 39 d0 72 e4 eb 06 90 90 90 90 90 90 48 8b 15 09 2d 7a 00 49 8d 80 78 01 00 00 <48> 89 42 08 49 89 90 78 01 00 00 49 c7 80 80 01 00 00 f0 ab a5 oops RIP [] module_bug_finalize+0x7e/0xd0 oops RSP oops CR2: ffffffffa0c8d860 oops oops Found OOPS (32): oops BUG: unable to handle kernel paging request at ffffffffa0c8d860 oops IP: [] module_bug_finalize+0x7e/0xd0 oops PGD 1a2c067 PUD 1a30063 PMD 1187c3067 PTE 0 oops Oops: 0002 [#4] SMP oops last sysfs file: /sys/module/snd_hda_codec/initstate oops CPU 3 oops Modules linked in: btusb tpm_infineon bluetooth snd_hda_codec_idt arc4 pcmcia iwlagn snd_hda_intel(+) snd_hda_codec snd_hwdep snd_pcm iwlcore snd_seq_midi snd_rawmidi snd_seq_midi_event snd_seq nvidia(P+) ppdev joydev mac80211 hp_wmi r852 sm_common snd_timer cfg80211 nand nand_ids nand_ecc video snd_seq_device tpm_tis yenta_socket tpm mtd output parport_pc tpm_bios pcmcia_rsrc pcmcia_core hp_accel lis3lv02d input_polldev snd intel_ips psmouse serio_raw xhci_hcd intel_agp soundcore snd_page_alloc lp parport usbhid hid firewire_ohci sdhci_pci e1000e firewire_core sdhci led_class crc_itu_t ahci libahci oops oops Pid: 1140, comm: modprobe Tainted: P D 2.6.35-28-generic #50-Ubuntu 1521/HP EliteBook 8540w oops RIP: 0010:[] [] module_bug_finalize+0x7e/0xd0 oops RSP: 0018:ffff880127ea7d80 EFLAGS: 00010246 oops RAX: ffffffffa0c813b8 RBX: ffffffff817d6acc RCX: 000000000000000b oops RDX: ffffffffa0c8d858 RSI: ffffc9001114f04a RDI: ffffffff817d6acd oops RBP: ffff880127ea7d88 R08: ffffffffa0c81240 R09: ffffc9001114f7b8 oops R10: ffffc9001114f040 R11: 000000000000000c R12: ffffc9001114f1b8 oops R13: 0000000000000000 R14: ffffffff817a67b7 R15: 0000000000000006 oops FS: 00007f2de6864700(0000) GS:ffff880001ec0000(0000) knlGS:0000000000000000 oops CS: 0010 DS: 0000 ES: 0000 CR0: 000000008005003b oops CR2: ffffffffa0c8d860 CR3: 000000011ba76000 CR4: 00000000000006e0 oops DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 oops DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400 oops Process modprobe (pid: 1140, threadinfo ffff880127ea6000, task ffff880117c4db80) oops Stack: oops 0000000000000000 ffff880127ea7df8 ffffffff8103273f ffffffff812c3970 oops <0> ffffffffa0c81240 ffffc9001114b000 ffffc9001114f138 ffffc9001114f040 oops <0> ffffc9001114f7b8 ffff880127ea7df8 ffffffffa0c81240 ffffc9001114b000 oops Call Trace: oops [] module_finalize+0x11f/0x160 oops [] ? generic_swap+0x0/0x30 oops [] load_module+0xc65/0x1140 oops [] sys_init_module+0x62/0x200 oops [] system_call_fastpath+0x16/0x1b oops Code: 89 d9 49 8d 34 32 f3 a6 74 43 83 c0 01 49 83 c1 40 39 d0 72 e4 eb 06 90 90 90 90 90 90 48 8b 15 09 2d 7a 00 49 8d 80 78 01 00 00 <48> 89 42 08 49 89 90 78 01 00 00 49 c7 80 80 01 00 00 f0 ab a5 oops RIP [] module_bug_finalize+0x7e/0xd0 oops RSP oops CR2: ffffffffa0c8d860 oops oops Found OOPS (33): oops BUG: unable to handle kernel paging request at ffffffffa0c8d860 oops IP: [] module_bug_finalize+0x7e/0xd0 oops PGD 1a2c067 PUD 1a30063 PMD 1187c3067 PTE 0 oops Oops: 0002 [#5] SMP oops last sysfs file: /sys/module/snd_hda_codec/initstate oops CPU 3 oops Modules linked in: btusb tpm_infineon bluetooth snd_hda_codec_idt arc4 pcmcia iwlagn snd_hda_intel(+) snd_hda_codec snd_hwdep snd_pcm iwlcore snd_seq_midi snd_rawmidi snd_seq_midi_event snd_seq nvidia(P+) ppdev joydev mac80211 hp_wmi r852 sm_common snd_timer cfg80211 nand nand_ids nand_ecc video snd_seq_device tpm_tis yenta_socket tpm mtd output parport_pc tpm_bios pcmcia_rsrc pcmcia_core hp_accel lis3lv02d input_polldev snd intel_ips psmouse serio_raw xhci_hcd intel_agp soundcore snd_page_alloc lp parport usbhid hid firewire_ohci sdhci_pci e1000e firewire_core sdhci led_class crc_itu_t ahci libahci oops oops Pid: 1144, comm: modprobe Tainted: P D 2.6.35-28-generic #50-Ubuntu 1521/HP EliteBook 8540w oops RIP: 0010:[] [] module_bug_finalize+0x7e/0xd0 oops RSP: 0018:ffff88011976dd80 EFLAGS: 00010246 oops RAX: ffffffffa0cee3b8 RBX: ffffffff817d6acc RCX: 000000000000000b oops RDX: ffffffffa0c8d858 RSI: ffffc9001115904a RDI: ffffffff817d6acd oops RBP: ffff88011976dd88 R08: ffffffffa0cee240 R09: ffffc900111597b8 oops R10: ffffc90011159040 R11: 000000000000000c R12: ffffc900111591b8 oops R13: 0000000000000000 R14: ffffffff817a67b7 R15: 0000000000000006 oops FS: 00007f0d3b909700(0000) GS:ffff880001ec0000(0000) knlGS:0000000000000000 oops CS: 0010 DS: 0000 ES: 0000 CR0: 000000008005003b oops CR2: ffffffffa0c8d860 CR3: 000000011acb9000 CR4: 00000000000006e0 oops DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 oops DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400 oops Process modprobe (pid: 1144, threadinfo ffff88011976c000, task ffff880117c48000) oops Stack: oops 0000000000000000 ffff88011976ddf8 ffffffff8103273f ffffffff812c3970 oops <0> ffffffffa0cee240 ffffc90011155000 ffffc90011159138 ffffc90011159040 oops <0> ffffc900111597b8 ffff88011976ddf8 ffffffffa0cee240 ffffc90011155000 oops Call Trace: oops [] module_finalize+0x11f/0x160 oops [] ? generic_swap+0x0/0x30 oops [] load_module+0xc65/0x1140 oops [] sys_init_module+0x62/0x200 oops [] system_call_fastpath+0x16/0x1b oops Code: 89 d9 49 8d 34 32 f3 a6 74 43 83 c0 01 49 83 c1 40 39 d0 72 e4 eb 06 90 90 90 90 90 90 48 8b 15 09 2d 7a 00 49 8d 80 78 01 00 00 <48> 89 42 08 49 89 90 78 01 00 00 49 c7 80 80 01 00 00 f0 ab a5 oops RIP [] module_bug_finalize+0x7e/0xd0 oops RSP oops CR2: ffffffffa0c8d860 oops oops Found OOPS (34): oops BUG: unable to handle kernel paging request at ffffffffa0c8d860 oops IP: [] module_bug_finalize+0x7e/0xd0 oops PGD 1a2c067 PUD 1a30063 PMD 1187c3067 PTE 0 oops Oops: 0002 [#6] SMP oops last sysfs file: /sys/bus/acpi/drivers/NVIDIA ACPI Video Driver/uevent oops CPU 0 oops Modules linked in: btusb tpm_infineon bluetooth snd_hda_codec_idt arc4 pcmcia iwlagn snd_hda_intel snd_hda_codec snd_hwdep snd_pcm iwlcore snd_seq_midi snd_rawmidi snd_seq_midi_event snd_seq nvidia(P) ppdev joydev mac80211 hp_wmi r852 sm_common snd_timer cfg80211 nand nand_ids nand_ecc video snd_seq_device tpm_tis yenta_socket tpm mtd output parport_pc tpm_bios pcmcia_rsrc pcmcia_core hp_accel lis3lv02d input_polldev snd intel_ips psmouse serio_raw xhci_hcd intel_agp soundcore snd_page_alloc lp parport usbhid hid firewire_ohci sdhci_pci e1000e firewire_core sdhci led_class crc_itu_t ahci libahci oops oops Pid: 1601, comm: modprobe Tainted: P D 2.6.35-28-generic #50-Ubuntu 1521/HP EliteBook 8540w oops RIP: 0010:[] [] module_bug_finalize+0x7e/0xd0 oops RSP: 0018:ffff880116f57d80 EFLAGS: 00010a02 oops RAX: ffffffffa0b7d298 RBX: ffffffff817d6acc RCX: 0000000000000000 oops RDX: ffffffffa0c8d858 RSI: ffffc900121358f0 RDI: ffffffff817d6ad8 oops RBP: ffff880116f57d88 R08: ffffffffa0b7d120 R09: ffffc90012135e88 oops R10: ffffc90012135828 R11: 000000000000000c R12: ffffc90012135ac8 oops R13: ffffc90012135d48 R14: ffffffff817a67b7 R15: 0000000000000006 oops FS: 00007f53be4b8700(0000) GS:ffff880001e00000(0000) knlGS:0000000000000000 oops CS: 0010 DS: 0000 ES: 0000 CR0: 000000008005003b oops CR2: ffffffffa0c8d860 CR3: 000000011794d000 CR4: 00000000000006f0 oops DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 oops DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400 oops Process modprobe (pid: 1601, threadinfo ffff880116f56000, task ffff880116f3db80) oops Stack: oops ffffc90012135e08 ffff880116f57df8 ffffffff8103273f ffffffff812c3970 oops <0> ffffffffa0b7d120 ffffc900120f9000 ffffc90012135a48 ffffc90012135828 oops <0> ffffc900121367c8 ffff880116f57df8 ffffffffa0b7d120 ffffc900120f9000 oops Call Trace: oops [] module_finalize+0x11f/0x160 oops [] ? generic_swap+0x0/0x30 oops [] load_module+0xc65/0x1140 oops [] sys_init_module+0x62/0x200 oops [] system_call_fastpath+0x16/0x1b oops Code: 89 d9 49 8d 34 32 f3 a6 74 43 83 c0 01 49 83 c1 40 39 d0 72 e4 eb 06 90 90 90 90 90 90 48 8b 15 09 2d 7a 00 49 8d 80 78 01 00 00 <48> 89 42 08 49 89 90 78 01 00 00 49 c7 80 80 01 00 00 f0 ab a5 oops RIP [] module_bug_finalize+0x7e/0xd0 oops RSP oops CR2: ffffffffa0c8d860 oops oops Found OOPS (35): oops BUG: unable to handle kernel NULL pointer dereference at 0000000000000065 oops IP: [] ReadVBIOSTablData+0x29/0x410 [xgifb] oops PGD 20b5aa067 PUD 20b5a9067 PMD 0 oops Oops: 0000 [#1] SMP oops last sysfs file: /sys/devices/virtual/block/loop4/removable oops CPU 0 oops Modules linked in: xgifb(C+) intel_rng(-) hed i3200_edac edac_core lp parport usb_storage tg3 btrfs zlib_deflate libcrc32c oops oops Pid: 414, comm: modprobe Tainted: G C 2.6.38-8-server #42-Ubuntu ASUS RS100-E5/PI2/P5BV-M/RS100-E5 oops RIP: 0010:[] [] ReadVBIOSTablData+0x29/0x410 [xgifb] oops RSP: 0018:ffff88020c81f8c8 EFLAGS: 00010246 oops RAX: 0000000000000000 RBX: ffffffffa012eb80 RCX: 000000000003ffff oops RDX: 0000000000000000 RSI: ffff88020c81f8d8 RDI: 0000000000000031 oops RBP: ffff88020c81f8c8 R08: 0000000000000000 R09: 000000000000c0c3 oops R10: 0000000000000000 R11: 0000000000000003 R12: 00000000fffffffb oops R13: ffff88020e9b6090 R14: ffff88020e9b6200 R15: 000000000040506a oops FS: 00007fddc20b9720(0000) GS:ffff8800dfc00000(0000) knlGS:0000000000000000 oops CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 oops CR2: 0000000000000065 CR3: 000000020b5a0000 CR4: 00000000000406f0 oops DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 oops DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400 oops Process modprobe (pid: 414, threadinfo ffff88020c81e000, task ffff88020cde96e0) oops Stack: oops ffff88020c81fca8 ffffffffa01132da ffff88021fffcc00 000000000000ec44 oops 000000000000ec54 000000000000ec40 000000000000ec4e 000000000000ec42 oops ffff880200000041 000000000000ec4a 000000000000ec46 000000000000ec47 oops Call Trace: oops [] XGIInitNew+0x1ea/0xaa0 [xgifb] oops [] ? build_zonelists+0x1f0/0x290 oops [] ? put_dec+0x59/0x60 oops [] ? vsnprintf+0x35e/0x620 oops [] xgifb_probe+0x716/0x1051 [xgifb] oops [] local_pci_probe+0x5f/0xd0 oops [] pci_device_probe+0x129/0x130 oops [] ? driver_sysfs_add+0x7a/0xb0 oops [] really_probe+0x68/0x190 oops [] driver_probe_device+0x45/0x70 oops [] __driver_attach+0xab/0xb0 oops [] ? __driver_attach+0x0/0xb0 oops [] bus_for_each_dev+0x5e/0x90 oops [] driver_attach+0x1e/0x20 oops [] bus_add_driver+0xc5/0x280 oops [] ? xgifb_init_module+0x0/0xb55 [xgifb] oops [] driver_register+0x76/0x140 oops [] ? xgifb_init_module+0x0/0xb55 [xgifb] oops [] __pci_register_driver+0x56/0xd0 oops [] ? xgifb_init_module+0x0/0xb55 [xgifb] oops [] xgifb_init_module+0x7f/0xb55 [xgifb] oops [] do_one_initcall+0x45/0x190 oops [] sys_init_module+0xfb/0x250 oops [] system_call_fastpath+0x16/0x1b oops Code: 00 00 55 48 89 e5 0f 1f 44 00 00 48 8b 96 f0 00 00 00 40 80 ff 31 74 0a c9 c3 0f 1f 84 00 00 00 00 00 66 c7 86 b8 00 00 00 00 00 <0f> b6 42 65 a8 01 74 e5 66 c7 86 b8 00 00 00 01 00 0f b6 8a 16 oops RIP [] ReadVBIOSTablData+0x29/0x410 [xgifb] oops RSP oops CR2: 0000000000000065 oops oops Found OOPS (36): oops BUG: unable to handle kernel NULL pointer dereference at 0000000000000008 oops IP: [] ses_enclosure_data_process+0x1a0/0x3a0 [ses] oops PGD 13361f067 PUD 133627067 PMD 0 oops Oops: 0002 [#1] SMP oops last sysfs file: /sys/module/snd_pcm/initstate oops CPU 4 oops Modules linked in: snd_usbmidi_lib snd_hda_codec snd_seq_midi snd_rawmidi iwlcore ir_lirc_codec rc_rc6_mce mac80211 lirc_dev psmouse ir_sony_decoder hp_accel(+) snd_seq_midi_event hp_wmi ir_jvc_decoder snd_seq ir_rc6_decoder snd_hwdep jmb38x_ms snd_seq_device snd_pcm sparse_keymap lis3lv02d ene_ir ir_rc5_decoder ir_nec_decoder btusb rc_core serio_raw memstick ses(+) snd_timer oops input: ST LIS3LV02DL Accelerometer as /devices/platform/lis3lv02d/input/input10 oops input_polldev cfg80211 oops Registered led device: hp::hddprotect oops hp_accel: driver loaded oops bluetooth uvcvideo videodev video enclosure i7core_edac snd edac_core v4l2_compat_ioctl32 soundcore lp snd_page_alloc parport usb_storage uas hid_a4tech usbhid hid ahci firewire_ohci libahci r8169 sdhci_pci firewire_core sdhci crc_itu_t oops oops Pid: 548, comm: modprobe Not tainted 2.6.38-8-generic #42-Ubuntu Hewlett-Packard HP Pavilion dv6 Notebook PC/3659 oops RIP: 0010:[] [] ses_enclosure_data_process+0x1a0/0x3a0 [ses] oops RSP: 0018:ffff8801035e9d88 EFLAGS: 00010286 oops RAX: ffff880101b3aeb8 RBX: 0000000000000000 RCX: 0000000000000000 oops RDX: 0000000000000000 RSI: 0000000000000000 RDI: 0000000000000000 oops RBP: ffff8801035e9df8 R08: 00000000000007f9 R09: ffff880137022ddc oops R10: 0000000000000000 R11: ffff880101a00000 R12: ffff880134e5f442 oops R13: 0000000000000000 R14: ffff880134e04ea4 R15: 0000000000000237 oops FS: 00007fe283dec720(0000) GS:ffff8800bf500000(0000) knlGS:0000000000000000 oops CS: 0010 DS: 0000 ES: 0000 CR0: 000000008005003b oops CR2: 0000000000000008 CR3: 0000000106387000 CR4: 00000000000006e0 oops DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 oops DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400 oops Process modprobe (pid: 548, threadinfo ffff8801035e8000, task ffff8801059b8000) oops Stack: oops 0000000000000000 ffff880133249148 ffff002000830112 ffffffff00000000 oops ffff880101a00000 ffff8801050dfae0 ffff880137022dd8 000000d3000000e0 oops ffff8801035e9df8 ffff880102913540 ffff880133249000 ffff880101a00000 oops Call Trace: oops [] ses_match_to_enclosure+0xa5/0x1f0 [ses] oops [] ses_intf_add+0x4b8/0x578 [ses] oops [] ? ses_init+0x0/0x1000 [ses] oops [] class_interface_register+0xa9/0xe0 oops [] scsi_register_interface+0x16/0x20 oops [] ses_init+0x14/0x1000 [ses] oops [] do_one_initcall+0x45/0x190 oops [] sys_init_module+0xfb/0x250 oops [] system_call_fastpath+0x16/0x1b oops Code: 49 63 c0 41 83 c0 01 48 69 c0 78 02 00 00 49 8d 84 03 78 02 00 00 48 3d 00 f0 ff ff 77 29 4d 85 e4 74 24 41 0f b6 14 24 48 8b 30 <4c> 89 66 08 f6 c2 80 75 13 89 d0 83 e0 0f 83 f8 06 0f 84 89 00 oops RIP [] ses_enclosure_data_process+0x1a0/0x3a0 [ses] oops RSP oops CR2: 0000000000000008 oops oops FAILED [CRITICAL] KernelOops: Test 1, Found 36 oopses in oops kernel log. oops FAILED [HIGH] KernelWarnOns: Test 1, Found 1 WARN_ON oops warnings in kernel log. oops oops ========================================================== oops 0 passed, 2 failed, 0 warning, 0 aborted, 0 skipped, 0 oops info only. oops ========================================================== fwts-test/oops-0001/oops-0002.log000066400000000000000000000025211231470457100164220ustar00rootroot00000000000000summary summary 0 passed, 2 failed, 0 warning, 0 aborted, 0 skipped, 0 info only. summary summary Test Failure Summary summary ========================================================================================================================================================================================================================================================================================================================================================================================== summary summary Critical failures: 1 summary oops: Found 36 oopses in kernel log. summary summary High failures: 1 summary oops: Found 1 WARN_ON warnings in kernel log. summary summary Medium failures: NONE summary summary Low failures: NONE summary summary Other failures: NONE summary summary Test |Pass |Fail |Abort|Warn |Skip |Info | summary ---------------+-----+-----+-----+-----+-----+-----+ summary oops | | 2| | | | | summary ---------------+-----+-----+-----+-----+-----+-----+ summary Total: | 0| 2| 0| 0| 0| 0| summary ---------------+-----+-----+-----+-----+-----+-----+ fwts-test/oops-0001/oops-0003.log000066400000000000000000000001111231470457100164140ustar00rootroot00000000000000oops FAILED [CRITICAL] KernelOops: Test 1, Found 36 oopses in fwts-test/oops-0001/oops.txt000066400000000000000000067456411231470457100161300ustar00rootroot00000000000000Bug: 521260 [ 0.000000] Initializing cgroup subsys cpuset [ 0.000000] Initializing cgroup subsys cpu [ 0.000000] Linux version 2.6.32-13-generic (buildd@vernadsky) (gcc version 4.4.3 (Ubuntu 4.4.3-2ubuntu1) ) #18-Ubuntu SMP Wed Feb 10 21:24:20 UTC 2010 (Ubuntu 2.6.32-13.18-generic) [ 0.000000] KERNEL supported cpus: [ 0.000000] Intel GenuineIntel [ 0.000000] AMD AuthenticAMD [ 0.000000] NSC Geode by NSC [ 0.000000] Cyrix CyrixInstead [ 0.000000] Centaur CentaurHauls [ 0.000000] Transmeta GenuineTMx86 [ 0.000000] Transmeta TransmetaCPU [ 0.000000] UMC UMC UMC UMC [ 0.000000] BIOS-provided physical RAM map: [ 0.000000] BIOS-e820: 0000000000000000 - 000000000009d800 (usable) [ 0.000000] BIOS-e820: 000000000009d800 - 00000000000a0000 (reserved) [ 0.000000] BIOS-e820: 00000000000e6000 - 0000000000100000 (reserved) [ 0.000000] BIOS-e820: 0000000000100000 - 00000000afeb0000 (usable) [ 0.000000] BIOS-e820: 00000000afeb0000 - 00000000afebe000 (ACPI data) [ 0.000000] BIOS-e820: 00000000afebe000 - 00000000afee0000 (ACPI NVS) [ 0.000000] BIOS-e820: 00000000afee0000 - 00000000afeee000 (reserved) [ 0.000000] BIOS-e820: 00000000afef0000 - 00000000aff00000 (reserved) [ 0.000000] BIOS-e820: 00000000ff700000 - 0000000100000000 (reserved) [ 0.000000] BIOS-e820: 0000000100000000 - 0000000140000000 (usable) [ 0.000000] DMI present. [ 0.000000] AMI BIOS detected: BIOS may corrupt low RAM, working around it. [ 0.000000] e820 update range: 0000000000000000 - 0000000000010000 (usable) ==> (reserved) [ 0.000000] last_pfn = 0xafeb0 max_arch_pfn = 0x100000 [ 0.000000] MTRR default type: uncachable [ 0.000000] MTRR fixed ranges enabled: [ 0.000000] 00000-9FFFF write-back [ 0.000000] A0000-EFFFF uncachable [ 0.000000] F0000-FFFFF write-protect [ 0.000000] MTRR variable ranges enabled: [ 0.000000] 0 base 0000000000 mask FF80000000 write-back [ 0.000000] 1 base 0080000000 mask FFE0000000 write-back [ 0.000000] 2 base 00A0000000 mask FFF0000000 write-back [ 0.000000] 3 disabled [ 0.000000] 4 disabled [ 0.000000] 5 disabled [ 0.000000] 6 disabled [ 0.000000] 7 disabled [ 0.000000] TOM2: 0000000150000000 aka 5376M [ 0.000000] x86 PAT enabled: cpu 0, old 0x7040600070406, new 0x7010600070106 [ 0.000000] e820 update range: 00000000b0000000 - 0000000100000000 (usable) ==> (reserved) [ 0.000000] Scanning 0 areas for low memory corruption [ 0.000000] modified physical RAM map: [ 0.000000] modified: 0000000000000000 - 0000000000010000 (reserved) [ 0.000000] modified: 0000000000010000 - 000000000009d800 (usable) [ 0.000000] modified: 000000000009d800 - 00000000000a0000 (reserved) [ 0.000000] modified: 00000000000e6000 - 0000000000100000 (reserved) [ 0.000000] modified: 0000000000100000 - 00000000afeb0000 (usable) [ 0.000000] modified: 00000000afeb0000 - 00000000afebe000 (ACPI data) [ 0.000000] modified: 00000000afebe000 - 00000000afee0000 (ACPI NVS) [ 0.000000] modified: 00000000afee0000 - 00000000afeee000 (reserved) [ 0.000000] modified: 00000000afef0000 - 00000000aff00000 (reserved) [ 0.000000] modified: 00000000ff700000 - 0000000100000000 (reserved) [ 0.000000] modified: 0000000100000000 - 0000000140000000 (usable) [ 0.000000] initial memory mapped : 0 - 00c00000 [ 0.000000] init_memory_mapping: 0000000000000000-00000000377fe000 [ 0.000000] Using x86 segment limits to approximate NX protection [ 0.000000] 0000000000 - 0000400000 page 4k [ 0.000000] 0000400000 - 0037400000 page 2M [ 0.000000] 0037400000 - 00377fe000 page 4k [ 0.000000] kernel direct mapping tables up to 377fe000 @ 10000-15000 [ 0.000000] RAMDISK: 37d73000 - 37fefcb1 [ 0.000000] Allocated new RAMDISK: 00916000 - 00b92cb1 [ 0.000000] Move RAMDISK from 0000000037d73000 - 0000000037fefcb0 to 00916000 - 00b92cb0 [ 0.000000] ACPI: RSDP 000f9d10 00014 (v00 ACPIAM) [ 0.000000] ACPI: RSDT afeb0000 0003C (v01 052008 RSDT1711 20080520 MSFT 00000097) [ 0.000000] ACPI: FACP afeb0200 00084 (v02 052008 FACP1711 20080520 MSFT 00000097) [ 0.000000] ACPI: DSDT afeb0440 04D1B (v01 1AAAA 1AAAA000 00000000 INTL 20051117) [ 0.000000] ACPI: FACS afebe000 00040 [ 0.000000] ACPI: APIC afeb0390 0006C (v01 052008 APIC1711 20080520 MSFT 00000097) [ 0.000000] ACPI: MCFG afeb0400 0003C (v01 052008 OEMMCFG 20080520 MSFT 00000097) [ 0.000000] ACPI: OEMB afebe040 00071 (v01 052008 OEMB1711 20080520 MSFT 00000097) [ 0.000000] ACPI: HPET afeb5160 00038 (v01 052008 OEMHPET 20080520 MSFT 00000097) [ 0.000000] ACPI: SSDT afeb51a0 002CC (v01 A M I POWERNOW 00000001 AMD 00000001) [ 0.000000] ACPI: Local APIC address 0xfee00000 [ 0.000000] 1926MB HIGHMEM available. [ 0.000000] 887MB LOWMEM available. [ 0.000000] mapped low ram: 0 - 377fe000 [ 0.000000] low ram: 0 - 377fe000 [ 0.000000] node 0 low ram: 00000000 - 377fe000 [ 0.000000] node 0 bootmap 00011000 - 00017f00 [ 0.000000] (9 early reservations) ==> bootmem [0000000000 - 00377fe000] [ 0.000000] #0 [0000000000 - 0000001000] BIOS data page ==> [0000000000 - 0000001000] [ 0.000000] #1 [0000001000 - 0000002000] EX TRAMPOLINE ==> [0000001000 - 0000002000] [ 0.000000] #2 [0000006000 - 0000007000] TRAMPOLINE ==> [0000006000 - 0000007000] [ 0.000000] #3 [0000100000 - 0000911f98] TEXT DATA BSS ==> [0000100000 - 0000911f98] [ 0.000000] #4 [000009d800 - 0000100000] BIOS reserved ==> [000009d800 - 0000100000] [ 0.000000] #5 [0000912000 - 00009150dd] BRK ==> [0000912000 - 00009150dd] [ 0.000000] #6 [0000010000 - 0000011000] PGTABLE ==> [0000010000 - 0000011000] [ 0.000000] #7 [0000916000 - 0000b92cb1] NEW RAMDISK ==> [0000916000 - 0000b92cb1] [ 0.000000] #8 [0000011000 - 0000018000] BOOTMAP ==> [0000011000 - 0000018000] [ 0.000000] found SMP MP-table at [c00ff780] ff780 [ 0.000000] Zone PFN ranges: [ 0.000000] DMA 0x00000010 -> 0x00001000 [ 0.000000] Normal 0x00001000 -> 0x000377fe [ 0.000000] HighMem 0x000377fe -> 0x000afeb0 [ 0.000000] Movable zone start PFN for each node [ 0.000000] early_node_map[2] active PFN ranges [ 0.000000] 0: 0x00000010 -> 0x0000009d [ 0.000000] 0: 0x00000100 -> 0x000afeb0 [ 0.000000] On node 0 totalpages: 720445 [ 0.000000] free_area_init_node: node 0, pgdat c07cf100, node_mem_map c1001200 [ 0.000000] DMA zone: 32 pages used for memmap [ 0.000000] DMA zone: 0 pages reserved [ 0.000000] DMA zone: 3949 pages, LIFO batch:0 [ 0.000000] Normal zone: 1744 pages used for memmap [ 0.000000] Normal zone: 221486 pages, LIFO batch:31 [ 0.000000] HighMem zone: 3854 pages used for memmap [ 0.000000] HighMem zone: 489380 pages, LIFO batch:31 [ 0.000000] Using APIC driver default [ 0.000000] Detected use of extended apic ids on hypertransport bus [ 0.000000] ACPI: PM-Timer IO Port: 0x808 [ 0.000000] ACPI: Local APIC address 0xfee00000 [ 0.000000] ACPI: LAPIC (acpi_id[0x01] lapic_id[0x00] enabled) [ 0.000000] ACPI: LAPIC (acpi_id[0x02] lapic_id[0x01] enabled) [ 0.000000] ACPI: LAPIC (acpi_id[0x03] lapic_id[0x82] disabled) [ 0.000000] ACPI: LAPIC (acpi_id[0x04] lapic_id[0x83] disabled) [ 0.000000] ACPI: IOAPIC (id[0x02] address[0xfec00000] gsi_base[0]) [ 0.000000] IOAPIC[0]: apic_id 2, version 33, address 0xfec00000, GSI 0-23 [ 0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 0 global_irq 2 dfl dfl) [ 0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 9 global_irq 9 low level) [ 0.000000] ACPI: IRQ0 used by override. [ 0.000000] ACPI: IRQ2 used by override. [ 0.000000] ACPI: IRQ9 used by override. [ 0.000000] Enabling APIC mode: Flat. Using 1 I/O APICs [ 0.000000] Using ACPI (MADT) for SMP configuration information [ 0.000000] ACPI: HPET id: 0x8300 base: 0xfed00000 [ 0.000000] SMP: Allowing 4 CPUs, 2 hotplug CPUs [ 0.000000] nr_irqs_gsi: 24 [ 0.000000] PM: Registered nosave memory: 000000000009d000 - 000000000009e000 [ 0.000000] PM: Registered nosave memory: 000000000009e000 - 00000000000a0000 [ 0.000000] PM: Registered nosave memory: 00000000000a0000 - 00000000000e6000 [ 0.000000] PM: Registered nosave memory: 00000000000e6000 - 0000000000100000 [ 0.000000] Allocating PCI resources starting at aff00000 (gap: aff00000:4f800000) [ 0.000000] Booting paravirtualized kernel on bare hardware [ 0.000000] NR_CPUS:8 nr_cpumask_bits:8 nr_cpu_ids:4 nr_node_ids:1 [ 0.000000] PERCPU: Embedded 14 pages/cpu @c2800000 s35896 r0 d21448 u1048576 [ 0.000000] pcpu-alloc: s35896 r0 d21448 u1048576 alloc=1*4194304 [ 0.000000] pcpu-alloc: [0] 0 1 2 3 [ 0.000000] Built 1 zonelists in Zone order, mobility grouping on. Total pages: 714815 [ 0.000000] Kernel command line: BOOT_IMAGE=/vmlinuz-2.6.32-13-generic root=/dev/mapper/new--lvm-root ro quiet splash [ 0.000000] PID hash table entries: 4096 (order: 2, 16384 bytes) [ 0.000000] Dentry cache hash table entries: 131072 (order: 7, 524288 bytes) [ 0.000000] Inode-cache hash table entries: 65536 (order: 6, 262144 bytes) [ 0.000000] Enabling fast FPU save and restore... done. [ 0.000000] Enabling unmasked SIMD FPU exception support... done. [ 0.000000] Initializing CPU#0 [ 0.000000] allocated 14410880 bytes of page_cgroup [ 0.000000] please try 'cgroup_disable=memory' option if you don't want memory cgroups [ 0.000000] Initializing HighMem for node 0 (000377fe:000afeb0) [ 0.000000] Memory: 2832080k/2882240k available (4780k kernel code, 48516k reserved, 2233k data, 660k init, 1972936k highmem) [ 0.000000] virtual kernel memory layout: [ 0.000000] fixmap : 0xfff1d000 - 0xfffff000 ( 904 kB) [ 0.000000] pkmap : 0xff800000 - 0xffc00000 (4096 kB) [ 0.000000] vmalloc : 0xf7ffe000 - 0xff7fe000 ( 120 MB) [ 0.000000] lowmem : 0xc0000000 - 0xf77fe000 ( 887 MB) [ 0.000000] .init : 0xc07da000 - 0xc087f000 ( 660 kB) [ 0.000000] .data : 0xc05ab0ff - 0xc07d9528 (2233 kB) [ 0.000000] .text : 0xc0100000 - 0xc05ab0ff (4780 kB) [ 0.000000] Checking if this processor honours the WP bit even in supervisor mode...Ok. [ 0.000000] SLUB: Genslabs=13, HWalign=64, Order=0-3, MinObjects=0, CPUs=4, Nodes=1 [ 0.000000] Hierarchical RCU implementation. [ 0.000000] NR_IRQS:2304 nr_irqs:440 [ 0.000000] spurious 8259A interrupt: IRQ7. [ 0.000000] Console: colour VGA+ 80x25 [ 0.000000] console [tty0] enabled [ 0.000000] hpet clockevent registered [ 0.000000] alloc irq_desc for 24 on node 0 [ 0.000000] alloc kstat_irqs on node 0 [ 0.000000] HPET: 4 timers in total, 1 timers will be used for per-cpu timer [ 0.000000] Fast TSC calibration using PIT [ 0.000000] Detected 2700.337 MHz processor. [ 0.004004] Calibrating delay loop (skipped), value calculated using timer frequency.. 5400.67 BogoMIPS (lpj=10801348) [ 0.004018] Security Framework initialized [ 0.004034] AppArmor: AppArmor initialized [ 0.004040] Mount-cache hash table entries: 512 [ 0.004135] Initializing cgroup subsys ns [ 0.004139] Initializing cgroup subsys cpuacct [ 0.004142] Initializing cgroup subsys memory [ 0.004147] Initializing cgroup subsys devices [ 0.004150] Initializing cgroup subsys freezer [ 0.008003] Initializing cgroup subsys net_cls [ 0.008017] CPU: L1 I Cache: 64K (64 bytes/line), D cache 64K (64 bytes/line) [ 0.008019] CPU: L2 Cache: 512K (64 bytes/line) [ 0.008021] CPU: Physical Processor ID: 0 [ 0.008022] CPU: Processor Core ID: 0 [ 0.008025] mce: CPU supports 5 MCE banks [ 0.008032] using C1E aware idle routine [ 0.008038] Performance Events: AMD PMU driver. [ 0.008042] ... version: 0 [ 0.008044] ... bit width: 48 [ 0.008045] ... generic registers: 4 [ 0.008047] ... value mask: 0000ffffffffffff [ 0.008049] ... max period: 00007fffffffffff [ 0.008050] ... fixed-purpose events: 0 [ 0.008052] ... event mask: 000000000000000f [ 0.008055] Checking 'hlt' instruction... OK. [ 0.025658] ACPI: Core revision 20090903 [ 0.031792] ftrace: converting mcount calls to 0f 1f 44 00 00 [ 0.031797] ftrace: allocating 22783 entries in 45 pages [ 0.036389] ..TIMER: vector=0x30 apic1=0 pin1=2 apic2=-1 pin2=-1 [ 0.077247] CPU0: AMD Athlon(tm) 64 X2 Dual Core Processor 5200+ stepping 02 [ 0.080001] Booting processor 1 APIC 0x1 ip 0x6000 [ 0.008000] Initializing CPU#1 [ 0.008000] CPU: L1 I Cache: 64K (64 bytes/line), D cache 64K (64 bytes/line) [ 0.008000] CPU: L2 Cache: 512K (64 bytes/line) [ 0.008000] CPU: Physical Processor ID: 0 [ 0.008000] CPU: Processor Core ID: 1 [ 0.164027] CPU1: AMD Athlon(tm) 64 X2 Dual Core Processor 5200+ stepping 02 [ 0.164049] Brought up 2 CPUs [ 0.164051] Total of 2 processors activated (10800.86 BogoMIPS). [ 0.164197] CPU0 attaching sched-domain: [ 0.164200] domain 0: span 0-1 level MC [ 0.164202] groups: 0 1 [ 0.164206] CPU1 attaching sched-domain: [ 0.164208] domain 0: span 0-1 level MC [ 0.164210] groups: 1 0 [ 0.164337] devtmpfs: initialized [ 0.164608] regulator: core version 0.5 [ 0.164634] Time: 19:42:38 Date: 02/12/10 [ 0.164670] NET: Registered protocol family 16 [ 0.164764] EISA bus registered [ 0.164770] ACPI: bus type pci registered [ 0.164822] PCI: MCFG configuration 0: base e0000000 segment 0 buses 0 - 255 [ 0.164824] PCI: Not using MMCONFIG. [ 0.165383] PCI: PCI BIOS revision 3.00 entry at 0xf0031, last bus=3 [ 0.165385] PCI: Using configuration type 1 for base access [ 0.166162] Trying to unpack rootfs image as initramfs... [ 0.180233] bio: create slab at 0 [ 0.180771] ACPI: EC: Look up EC in DSDT [ 0.182639] ACPI Error (psargs-0359): [ECEN] Namespace lookup failure, AE_NOT_FOUND [ 0.182645] ACPI Error (psparse-0537): Method parse/execution failed [\] (Node c090665c), AE_NOT_FOUND [ 0.182708] ACPI: Executed 3 blocks of module-level executable AML code [ 0.186623] ACPI: Interpreter enabled [ 0.186627] ACPI: (supports S0 S3 S4 S5) [ 0.186648] ACPI: Using IOAPIC for interrupt routing [ 0.186685] PCI: MCFG configuration 0: base e0000000 segment 0 buses 0 - 255 [ 0.189988] PCI: MCFG area at e0000000 reserved in ACPI motherboard resources [ 0.189990] PCI: Using MMCONFIG for extended config space [ 0.195685] ACPI Warning: Incorrect checksum in table [OEMB] - 2A, should be 29 (20090903/tbutils-314) [ 0.195772] ACPI: No dock devices found. [ 0.195892] ACPI: PCI Root Bridge [PCI0] (0000:00) [ 0.196034] pci 0000:00:06.0: PME# supported from D0 D3hot D3cold [ 0.196037] pci 0000:00:06.0: PME# disabled [ 0.196102] pci 0000:00:11.0: reg 10 io port: [0xa000-0xa007] [ 0.196109] pci 0000:00:11.0: reg 14 io port: [0x9000-0x9003] [ 0.196116] pci 0000:00:11.0: reg 18 io port: [0x8000-0x8007] [ 0.196123] pci 0000:00:11.0: reg 1c io port: [0x7000-0x7003] [ 0.196130] pci 0000:00:11.0: reg 20 io port: [0x6000-0x600f] [ 0.196137] pci 0000:00:11.0: reg 24 32bit mmio: [0xfccff800-0xfccffbff] [ 0.196198] pci 0000:00:12.0: reg 10 32bit mmio: [0xfccfe000-0xfccfefff] [ 0.196255] pci 0000:00:12.1: reg 10 32bit mmio: [0xfccfd000-0xfccfdfff] [ 0.196329] pci 0000:00:12.2: reg 10 32bit mmio: [0xfccff000-0xfccff0ff] [ 0.196383] pci 0000:00:12.2: supports D1 D2 [ 0.196385] pci 0000:00:12.2: PME# supported from D0 D1 D2 D3hot [ 0.196389] pci 0000:00:12.2: PME# disabled [ 0.196422] pci 0000:00:13.0: reg 10 32bit mmio: [0xfccfc000-0xfccfcfff] [ 0.196479] pci 0000:00:13.1: reg 10 32bit mmio: [0xfccf7000-0xfccf7fff] [ 0.196554] pci 0000:00:13.2: reg 10 32bit mmio: [0xfccf6800-0xfccf68ff] [ 0.196608] pci 0000:00:13.2: supports D1 D2 [ 0.196610] pci 0000:00:13.2: PME# supported from D0 D1 D2 D3hot [ 0.196614] pci 0000:00:13.2: PME# disabled [ 0.196734] pci 0000:00:14.1: reg 10 io port: [0x00-0x07] [ 0.196741] pci 0000:00:14.1: reg 14 io port: [0x00-0x03] [ 0.196748] pci 0000:00:14.1: reg 18 io port: [0x00-0x07] [ 0.196755] pci 0000:00:14.1: reg 1c io port: [0x00-0x03] [ 0.196761] pci 0000:00:14.1: reg 20 io port: [0xff00-0xff0f] [ 0.196829] pci 0000:00:14.2: reg 10 64bit mmio: [0xfccf0000-0xfccf3fff] [ 0.196874] pci 0000:00:14.2: PME# supported from D0 D3hot D3cold [ 0.196878] pci 0000:00:14.2: PME# disabled [ 0.196990] pci 0000:00:14.5: reg 10 32bit mmio: [0xfccf5000-0xfccf5fff] [ 0.197125] pci 0000:01:05.0: reg 10 32bit mmio pref: [0xb0000000-0xbfffffff] [ 0.197129] pci 0000:01:05.0: reg 14 io port: [0xb000-0xb0ff] [ 0.197133] pci 0000:01:05.0: reg 18 32bit mmio: [0xfcef0000-0xfcefffff] [ 0.197141] pci 0000:01:05.0: reg 24 32bit mmio: [0xfcd00000-0xfcdfffff] [ 0.197153] pci 0000:01:05.0: supports D1 D2 [ 0.197173] pci 0000:01:05.1: reg 10 32bit mmio: [0xfcee8000-0xfceebfff] [ 0.197194] pci 0000:01:05.1: supports D1 D2 [ 0.197237] pci 0000:00:01.0: bridge io port: [0xb000-0xbfff] [ 0.197240] pci 0000:00:01.0: bridge 32bit mmio: [0xfcd00000-0xfcefffff] [ 0.197244] pci 0000:00:01.0: bridge 64bit mmio pref: [0xb0000000-0xbfffffff] [ 0.197280] pci 0000:02:00.0: reg 10 io port: [0xc800-0xc8ff] [ 0.197296] pci 0000:02:00.0: reg 18 64bit mmio: [0xfcfff000-0xfcffffff] [ 0.197307] pci 0000:02:00.0: reg 20 64bit mmio pref: [0xcfff0000-0xcfffffff] [ 0.197314] pci 0000:02:00.0: reg 30 32bit mmio pref: [0xfcfc0000-0xfcfdffff] [ 0.197345] pci 0000:02:00.0: supports D1 D2 [ 0.197347] pci 0000:02:00.0: PME# supported from D0 D1 D2 D3hot D3cold [ 0.197351] pci 0000:02:00.0: PME# disabled [ 0.197413] pci 0000:00:06.0: bridge io port: [0xc000-0xcfff] [ 0.197415] pci 0000:00:06.0: bridge 32bit mmio: [0xfcf00000-0xfcffffff] [ 0.197419] pci 0000:00:06.0: bridge 64bit mmio pref: [0xcff00000-0xcfffffff] [ 0.197471] pci 0000:03:06.0: reg 10 io port: [0xe800-0xe807] [ 0.197480] pci 0000:03:06.0: reg 14 io port: [0xe400-0xe403] [ 0.197488] pci 0000:03:06.0: reg 18 io port: [0xe000-0xe007] [ 0.197496] pci 0000:03:06.0: reg 1c io port: [0xd800-0xd803] [ 0.197504] pci 0000:03:06.0: reg 20 io port: [0xd400-0xd40f] [ 0.197513] pci 0000:03:06.0: reg 24 32bit mmio: [0xfebffc00-0xfebffdff] [ 0.197521] pci 0000:03:06.0: reg 30 32bit mmio pref: [0xfeb00000-0xfeb7ffff] [ 0.197545] pci 0000:03:06.0: supports D1 D2 [ 0.197588] pci 0000:03:07.0: reg 10 32bit mmio: [0xfd000000-0xfdffffff] [ 0.197597] pci 0000:03:07.0: reg 14 32bit mmio pref: [0xd0000000-0xdfffffff] [ 0.197630] pci 0000:03:07.0: reg 30 32bit mmio pref: [0xfebc0000-0xfebdffff] [ 0.197700] pci 0000:00:14.4: transparent bridge [ 0.197704] pci 0000:00:14.4: bridge io port: [0xd000-0xefff] [ 0.197708] pci 0000:00:14.4: bridge 32bit mmio: [0xfd000000-0xfebfffff] [ 0.197713] pci 0000:00:14.4: bridge 32bit mmio pref: [0xd0000000-0xdfffffff] [ 0.197725] pci_bus 0000:00: on NUMA node 0 [ 0.197729] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0._PRT] [ 0.197915] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.P0P1._PRT] [ 0.197989] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.P0PC._PRT] [ 0.201814] ACPI: PCI Interrupt Link [LNKA] (IRQs 4 *7 10 11 12 14 15) [ 0.201891] ACPI: PCI Interrupt Link [LNKB] (IRQs 4 7 *10 11 12 14 15) [ 0.201967] ACPI: PCI Interrupt Link [LNKC] (IRQs 4 7 *10 11 12 14 15) [ 0.202043] ACPI: PCI Interrupt Link [LNKD] (IRQs 4 7 10 *11 12 14 15) [ 0.202119] ACPI: PCI Interrupt Link [LNKE] (IRQs 4 7 10 11 12 14 15) *0, disabled. [ 0.202196] ACPI: PCI Interrupt Link [LNKF] (IRQs 4 7 *10 11 12 14 15) [ 0.202272] ACPI: PCI Interrupt Link [LNKG] (IRQs 4 7 10 *11 12 14 15) [ 0.202347] ACPI: PCI Interrupt Link [LNKH] (IRQs 4 7 10 11 12 14 15) *0, disabled. [ 0.202445] vgaarb: device added: PCI:0000:01:05.0,decodes=io+mem,owns=io+mem,locks=none [ 0.202452] vgaarb: device added: PCI:0000:03:07.0,decodes=io+mem,owns=none,locks=none [ 0.202454] vgaarb: loaded [ 0.202545] SCSI subsystem initialized [ 0.202613] libata version 3.00 loaded. [ 0.202667] usbcore: registered new interface driver usbfs [ 0.202677] usbcore: registered new interface driver hub [ 0.202698] usbcore: registered new device driver usb [ 0.202797] ACPI: WMI: Mapper loaded [ 0.202798] PCI: Using ACPI for IRQ routing [ 0.202945] NetLabel: Initializing [ 0.202946] NetLabel: domain hash size = 128 [ 0.202948] NetLabel: protocols = UNLABELED CIPSOv4 [ 0.202962] NetLabel: unlabeled traffic allowed by default [ 0.202993] hpet0: at MMIO 0xfed00000, IRQs 2, 8, 24, 0 [ 0.202998] hpet0: 4 comparators, 32-bit 14.318180 MHz counter [ 0.205008] Switching to clocksource hpet [ 0.205438] AppArmor: AppArmor Filesystem Enabled [ 0.205452] pnp: PnP ACPI init [ 0.205466] ACPI: bus type pnp registered [ 0.208319] pnp: PnP ACPI: found 14 devices [ 0.208321] ACPI: ACPI bus type pnp unregistered [ 0.208324] PnPBIOS: Disabled by ACPI PNP [ 0.208338] system 00:08: iomem range 0xfec00000-0xfec00fff could not be reserved [ 0.208341] system 00:08: iomem range 0xfee00000-0xfee00fff has been reserved [ 0.208346] system 00:09: ioport range 0x4d0-0x4d1 has been reserved [ 0.208348] system 00:09: ioport range 0x40b-0x40b has been reserved [ 0.208351] system 00:09: ioport range 0x4d6-0x4d6 has been reserved [ 0.208353] system 00:09: ioport range 0xc00-0xc01 has been reserved [ 0.208356] system 00:09: ioport range 0xc14-0xc14 has been reserved [ 0.208358] system 00:09: ioport range 0xc50-0xc51 has been reserved [ 0.208360] system 00:09: ioport range 0xc52-0xc52 has been reserved [ 0.208363] system 00:09: ioport range 0xc6c-0xc6c has been reserved [ 0.208365] system 00:09: ioport range 0xc6f-0xc6f has been reserved [ 0.208368] system 00:09: ioport range 0xcd0-0xcd1 has been reserved [ 0.208370] system 00:09: ioport range 0xcd2-0xcd3 has been reserved [ 0.208373] system 00:09: ioport range 0xcd4-0xcd5 has been reserved [ 0.208375] system 00:09: ioport range 0xcd6-0xcd7 has been reserved [ 0.208378] system 00:09: ioport range 0xcd8-0xcdf has been reserved [ 0.208380] system 00:09: ioport range 0xa7a-0xb1f has been reserved [ 0.208382] system 00:09: ioport range 0xb30-0xbff has been reserved [ 0.208385] system 00:09: ioport range 0x800-0x89f has been reserved [ 0.208387] system 00:09: ioport range 0xb20-0xb3f could not be reserved [ 0.208390] system 00:09: ioport range 0x900-0x90f has been reserved [ 0.208393] system 00:09: ioport range 0x910-0x91f has been reserved [ 0.208395] system 00:09: ioport range 0xfe00-0xfefe has been reserved [ 0.208398] system 00:09: iomem range 0xffb80000-0xffbfffff has been reserved [ 0.208401] system 00:09: iomem range 0xfec10000-0xfec1001f has been reserved [ 0.208406] system 00:0b: ioport range 0xe00-0xe0f has been reserved [ 0.208408] system 00:0b: ioport range 0xe80-0xe8f has been reserved [ 0.208411] system 00:0b: ioport range 0xf40-0xf4f has been reserved [ 0.208413] system 00:0b: ioport range 0xa30-0xa3f has been reserved [ 0.208417] system 00:0c: iomem range 0xe0000000-0xefffffff has been reserved [ 0.208422] system 00:0d: iomem range 0x0-0x9ffff could not be reserved [ 0.208425] system 00:0d: iomem range 0xc0000-0xcffff could not be reserved [ 0.208427] system 00:0d: iomem range 0xe0000-0xfffff could not be reserved [ 0.208430] system 00:0d: iomem range 0x100000-0xafefffff could not be reserved [ 0.208432] system 00:0d: iomem range 0xfec00000-0xffffffff could not be reserved [ 0.214452] Freeing initrd memory: 2547k freed [ 0.243084] pci 0000:03:06.0: BAR 6: address space collision on of device [0xfeb00000-0xfeb7ffff] [ 0.243087] pci 0000:03:07.0: BAR 6: address space collision on of device [0xfebc0000-0xfebdffff] [ 0.243103] pci 0000:00:01.0: PCI bridge, secondary bus 0000:01 [ 0.243106] pci 0000:00:01.0: IO window: 0xb000-0xbfff [ 0.243109] pci 0000:00:01.0: MEM window: 0xfcd00000-0xfcefffff [ 0.243112] pci 0000:00:01.0: PREFETCH window: 0x000000b0000000-0x000000bfffffff [ 0.243117] pci 0000:00:06.0: PCI bridge, secondary bus 0000:02 [ 0.243119] pci 0000:00:06.0: IO window: 0xc000-0xcfff [ 0.243122] pci 0000:00:06.0: MEM window: 0xfcf00000-0xfcffffff [ 0.243125] pci 0000:00:06.0: PREFETCH window: 0x000000cff00000-0x000000cfffffff [ 0.243132] pci 0000:00:14.4: PCI bridge, secondary bus 0000:03 [ 0.243135] pci 0000:00:14.4: IO window: 0xd000-0xefff [ 0.243141] pci 0000:00:14.4: MEM window: 0xfd000000-0xfebfffff [ 0.243145] pci 0000:00:14.4: PREFETCH window: 0xd0000000-0xdfffffff [ 0.243161] alloc irq_desc for 18 on node -1 [ 0.243163] alloc kstat_irqs on node -1 [ 0.243168] pci 0000:00:06.0: PCI INT A -> GSI 18 (level, low) -> IRQ 18 [ 0.243171] pci 0000:00:06.0: setting latency timer to 64 [ 0.243179] pci_bus 0000:00: resource 0 io: [0x00-0xffff] [ 0.243181] pci_bus 0000:00: resource 1 mem: [0x000000-0xffffffff] [ 0.243183] pci_bus 0000:01: resource 0 io: [0xb000-0xbfff] [ 0.243186] pci_bus 0000:01: resource 1 mem: [0xfcd00000-0xfcefffff] [ 0.243188] pci_bus 0000:01: resource 2 pref mem [0xb0000000-0xbfffffff] [ 0.243190] pci_bus 0000:02: resource 0 io: [0xc000-0xcfff] [ 0.243193] pci_bus 0000:02: resource 1 mem: [0xfcf00000-0xfcffffff] [ 0.243195] pci_bus 0000:02: resource 2 pref mem [0xcff00000-0xcfffffff] [ 0.243197] pci_bus 0000:03: resource 0 io: [0xd000-0xefff] [ 0.243200] pci_bus 0000:03: resource 1 mem: [0xfd000000-0xfebfffff] [ 0.243202] pci_bus 0000:03: resource 2 pref mem [0xd0000000-0xdfffffff] [ 0.243204] pci_bus 0000:03: resource 3 io: [0x00-0xffff] [ 0.243207] pci_bus 0000:03: resource 4 mem: [0x000000-0xffffffff] [ 0.243238] NET: Registered protocol family 2 [ 0.243318] IP route cache hash table entries: 32768 (order: 5, 131072 bytes) [ 0.243584] TCP established hash table entries: 131072 (order: 8, 1048576 bytes) [ 0.244155] TCP bind hash table entries: 65536 (order: 7, 524288 bytes) [ 0.244449] TCP: Hash tables configured (established 131072 bind 65536) [ 0.244451] TCP reno registered [ 0.244535] NET: Registered protocol family 1 [ 0.340019] pci 0000:01:05.0: Boot video device [ 0.340195] cpufreq-nforce2: No nForce2 chipset. [ 0.340215] Scanning for low memory corruption every 60 seconds [ 0.340295] audit: initializing netlink socket (disabled) [ 0.340303] type=2000 audit(1266003757.340:1): initialized [ 0.348147] highmem bounce pool size: 64 pages [ 0.348152] HugeTLB registered 4 MB page size, pre-allocated 0 pages [ 0.349311] VFS: Disk quotas dquot_6.5.2 [ 0.349359] Dquot-cache hash table entries: 1024 (order 0, 4096 bytes) [ 0.349801] fuse init (API version 7.13) [ 0.349866] msgmni has been set to 1685 [ 0.350035] alg: No test for stdrng (krng) [ 0.350042] io scheduler noop registered [ 0.350044] io scheduler anticipatory registered [ 0.350046] io scheduler deadline registered [ 0.350078] io scheduler cfq registered (default) [ 0.350201] alloc irq_desc for 25 on node -1 [ 0.350203] alloc kstat_irqs on node -1 [ 0.350210] pcieport 0000:00:06.0: irq 25 for MSI/MSI-X [ 0.350216] pcieport 0000:00:06.0: setting latency timer to 64 [ 0.350270] pci_hotplug: PCI Hot Plug PCI Core version: 0.5 [ 0.350288] pciehp: PCI Express Hot Plug Controller Driver version: 0.4 [ 0.350373] input: Power Button as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0C:00/input/input0 [ 0.350381] ACPI: Power Button [PWRB] [ 0.350418] input: Power Button as /devices/LNXSYSTM:00/LNXPWRBN:00/input/input1 [ 0.350421] ACPI: Power Button [PWRF] [ 0.350677] processor LNXCPU:00: registered as cooling_device0 [ 0.350703] processor LNXCPU:01: registered as cooling_device1 [ 0.352717] thermal LNXTHERM:01: registered as thermal_zone0 [ 0.352723] ACPI: Thermal Zone [THRM] (30 C) [ 0.352801] isapnp: Scanning for PnP cards... [ 0.353849] Serial: 8250/16550 driver, 4 ports, IRQ sharing enabled [ 0.353965] serial8250: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A [ 0.354244] 00:06: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A [ 0.355106] brd: module loaded [ 0.355476] loop: module loaded [ 0.355548] input: Macintosh mouse button emulation as /devices/virtual/input/input2 [ 0.355621] ahci 0000:00:11.0: version 3.0 [ 0.355640] alloc irq_desc for 22 on node -1 [ 0.355642] alloc kstat_irqs on node -1 [ 0.355648] ahci 0000:00:11.0: PCI INT A -> GSI 22 (level, low) -> IRQ 22 [ 0.355689] alloc irq_desc for 26 on node -1 [ 0.355690] alloc kstat_irqs on node -1 [ 0.355701] ahci 0000:00:11.0: irq 26 for MSI/MSI-X [ 0.355820] ahci 0000:00:11.0: AHCI 0001.0100 32 slots 6 ports 3 Gbps 0x3f impl SATA mode [ 0.355823] ahci 0000:00:11.0: flags: 64bit ncq sntf ilck pm led clo pmp pio slum part ccc [ 0.356403] scsi0 : ahci [ 0.356498] scsi1 : ahci [ 0.356544] scsi2 : ahci [ 0.356588] scsi3 : ahci [ 0.356633] scsi4 : ahci [ 0.356677] scsi5 : ahci [ 0.356814] ata1: SATA max UDMA/133 abar m1024@0xfccff800 port 0xfccff900 irq 26 [ 0.356817] ata2: SATA max UDMA/133 abar m1024@0xfccff800 port 0xfccff980 irq 26 [ 0.356821] ata3: SATA max UDMA/133 abar m1024@0xfccff800 port 0xfccffa00 irq 26 [ 0.356825] ata4: SATA max UDMA/133 abar m1024@0xfccff800 port 0xfccffa80 irq 26 [ 0.356828] ata5: SATA max UDMA/133 abar m1024@0xfccff800 port 0xfccffb00 irq 26 [ 0.356832] ata6: SATA max UDMA/133 abar m1024@0xfccff800 port 0xfccffb80 irq 26 [ 0.356923] sata_sil 0000:03:06.0: version 2.4 [ 0.356955] alloc irq_desc for 21 on node -1 [ 0.356957] alloc kstat_irqs on node -1 [ 0.356962] sata_sil 0000:03:06.0: PCI INT A -> GSI 21 (level, low) -> IRQ 21 [ 0.357082] scsi6 : sata_sil [ 0.357149] scsi7 : sata_sil [ 0.357178] ata7: SATA max UDMA/100 mmio m512@0xfebffc00 tf 0xfebffc80 irq 21 [ 0.357182] ata8: SATA max UDMA/100 mmio m512@0xfebffc00 tf 0xfebffcc0 irq 21 [ 0.357322] alloc irq_desc for 16 on node -1 [ 0.357324] alloc kstat_irqs on node -1 [ 0.357328] pata_atiixp 0000:00:14.1: PCI INT A -> GSI 16 (level, low) -> IRQ 16 [ 0.357358] pata_atiixp 0000:00:14.1: setting latency timer to 64 [ 0.357445] scsi8 : pata_atiixp [ 0.357512] scsi9 : pata_atiixp [ 0.358506] ata9: PATA max UDMA/100 cmd 0x1f0 ctl 0x3f6 bmdma 0xff00 irq 14 [ 0.358508] ata10: PATA max UDMA/100 cmd 0x170 ctl 0x376 bmdma 0xff08 irq 15 [ 0.359051] Fixed MDIO Bus: probed [ 0.359079] PPP generic driver version 2.4.2 [ 0.359129] tun: Universal TUN/TAP device driver, 1.6 [ 0.359130] tun: (C) 1999-2004 Max Krasnyansky [ 0.359207] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver [ 0.359226] alloc irq_desc for 17 on node -1 [ 0.359228] alloc kstat_irqs on node -1 [ 0.359233] ehci_hcd 0000:00:12.2: PCI INT B -> GSI 17 (level, low) -> IRQ 17 [ 0.359247] ehci_hcd 0000:00:12.2: EHCI Host Controller [ 0.359272] ehci_hcd 0000:00:12.2: new USB bus registered, assigned bus number 1 [ 0.359293] ehci_hcd 0000:00:12.2: applying AMD SB600/SB700 USB freeze workaround [ 0.359308] ehci_hcd 0000:00:12.2: debug port 1 [ 0.359328] ehci_hcd 0000:00:12.2: irq 17, io mem 0xfccff000 [ 0.368014] ehci_hcd 0000:00:12.2: USB 2.0 started, EHCI 1.00 [ 0.368084] usb usb1: configuration #1 chosen from 1 choice [ 0.368108] hub 1-0:1.0: USB hub found [ 0.368115] hub 1-0:1.0: 6 ports detected [ 0.368170] alloc irq_desc for 19 on node -1 [ 0.368172] alloc kstat_irqs on node -1 [ 0.368177] ehci_hcd 0000:00:13.2: PCI INT B -> GSI 19 (level, low) -> IRQ 19 [ 0.368185] ehci_hcd 0000:00:13.2: EHCI Host Controller [ 0.368211] ehci_hcd 0000:00:13.2: new USB bus registered, assigned bus number 2 [ 0.368231] ehci_hcd 0000:00:13.2: applying AMD SB600/SB700 USB freeze workaround [ 0.368245] ehci_hcd 0000:00:13.2: debug port 1 [ 0.368261] ehci_hcd 0000:00:13.2: irq 19, io mem 0xfccf6800 [ 0.380014] ehci_hcd 0000:00:13.2: USB 2.0 started, EHCI 1.00 [ 0.380070] usb usb2: configuration #1 chosen from 1 choice [ 0.380090] hub 2-0:1.0: USB hub found [ 0.380096] hub 2-0:1.0: 6 ports detected [ 0.380150] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver [ 0.380164] ohci_hcd 0000:00:12.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16 [ 0.380172] ohci_hcd 0000:00:12.0: OHCI Host Controller [ 0.380197] ohci_hcd 0000:00:12.0: new USB bus registered, assigned bus number 3 [ 0.380219] ohci_hcd 0000:00:12.0: irq 16, io mem 0xfccfe000 [ 0.440057] usb usb3: configuration #1 chosen from 1 choice [ 0.440077] hub 3-0:1.0: USB hub found [ 0.440086] hub 3-0:1.0: 3 ports detected [ 0.440127] ohci_hcd 0000:00:12.1: PCI INT A -> GSI 16 (level, low) -> IRQ 16 [ 0.440135] ohci_hcd 0000:00:12.1: OHCI Host Controller [ 0.440172] ohci_hcd 0000:00:12.1: new USB bus registered, assigned bus number 4 [ 0.440186] ohci_hcd 0000:00:12.1: irq 16, io mem 0xfccfd000 [ 0.500060] usb usb4: configuration #1 chosen from 1 choice [ 0.500080] hub 4-0:1.0: USB hub found [ 0.500090] hub 4-0:1.0: 3 ports detected [ 0.500132] ohci_hcd 0000:00:13.0: PCI INT A -> GSI 18 (level, low) -> IRQ 18 [ 0.500140] ohci_hcd 0000:00:13.0: OHCI Host Controller [ 0.500166] ohci_hcd 0000:00:13.0: new USB bus registered, assigned bus number 5 [ 0.500186] ohci_hcd 0000:00:13.0: irq 18, io mem 0xfccfc000 [ 0.560055] usb usb5: configuration #1 chosen from 1 choice [ 0.560075] hub 5-0:1.0: USB hub found [ 0.560084] hub 5-0:1.0: 3 ports detected [ 0.560124] ohci_hcd 0000:00:13.1: PCI INT A -> GSI 18 (level, low) -> IRQ 18 [ 0.560132] ohci_hcd 0000:00:13.1: OHCI Host Controller [ 0.560158] ohci_hcd 0000:00:13.1: new USB bus registered, assigned bus number 6 [ 0.560171] ohci_hcd 0000:00:13.1: irq 18, io mem 0xfccf7000 [ 0.620067] usb usb6: configuration #1 chosen from 1 choice [ 0.620087] hub 6-0:1.0: USB hub found [ 0.620095] hub 6-0:1.0: 3 ports detected [ 0.620141] ohci_hcd 0000:00:14.5: PCI INT C -> GSI 18 (level, low) -> IRQ 18 [ 0.620150] ohci_hcd 0000:00:14.5: OHCI Host Controller [ 0.620174] ohci_hcd 0000:00:14.5: new USB bus registered, assigned bus number 7 [ 0.620188] ohci_hcd 0000:00:14.5: irq 18, io mem 0xfccf5000 [ 0.676034] ata6: SATA link down (SStatus 0 SControl 300) [ 0.676187] ata7: SATA link up 1.5 Gbps (SStatus 113 SControl 310) [ 0.680390] usb usb7: configuration #1 chosen from 1 choice [ 0.680410] hub 7-0:1.0: USB hub found [ 0.680419] hub 7-0:1.0: 2 ports detected [ 0.680460] uhci_hcd: USB Universal Host Controller Interface driver [ 0.680532] PNP: PS/2 Controller [PNP0303:PS2K] at 0x60,0x64 irq 1 [ 0.680534] PNP: PS/2 appears to have AUX port disabled, if this is incorrect please boot with i8042.nopnp [ 0.680653] serio: i8042 KBD port at 0x60,0x64 irq 1 [ 0.680732] mice: PS/2 mouse device common for all mice [ 0.680823] rtc_cmos 00:03: RTC can wake from S4 [ 0.680858] rtc_cmos 00:03: rtc core: registered rtc_cmos as rtc0 [ 0.680884] rtc0: alarms up to one month, y3k, 114 bytes nvram, hpet irqs [ 0.680964] device-mapper: uevent: version 1.0.3 [ 0.681050] device-mapper: ioctl: 4.15.0-ioctl (2009-04-01) initialised: dm-devel@redhat.com [ 0.681104] device-mapper: multipath: version 1.1.0 loaded [ 0.681107] device-mapper: multipath round-robin: version 1.0.0 loaded [ 0.681201] EISA: Probing bus 0 at eisa.0 [ 0.681226] Cannot allocate resource for EISA slot 6 [ 0.681228] Cannot allocate resource for EISA slot 7 [ 0.681230] Cannot allocate resource for EISA slot 8 [ 0.681232] EISA: Detected 0 cards. [ 0.681293] cpuidle: using governor ladder [ 0.681295] cpuidle: using governor menu [ 0.681652] TCP cubic registered [ 0.681769] NET: Registered protocol family 10 [ 0.682173] lo: Disabled Privacy Extensions [ 0.682420] NET: Registered protocol family 17 [ 0.682442] powernow-k8: Found 1 AMD Athlon(tm) 64 X2 Dual Core Processor 5200+ processors (2 cpu cores) (version 2.20.00) [ 0.682483] powernow-k8: 0 : fid 0x13 (2700 MHz), vid 0x8 [ 0.682485] powernow-k8: 1 : fid 0x12 (2600 MHz), vid 0x9 [ 0.682487] powernow-k8: 2 : fid 0x10 (2400 MHz), vid 0xb [ 0.682489] powernow-k8: 3 : fid 0xe (2200 MHz), vid 0xd [ 0.682491] powernow-k8: 4 : fid 0xc (2000 MHz), vid 0xf [ 0.682493] powernow-k8: 5 : fid 0xa (1800 MHz), vid 0x11 [ 0.682495] powernow-k8: 6 : fid 0x2 (1000 MHz), vid 0x12 [ 0.682527] Using IPI No-Shortcut mode [ 0.682588] PM: Resume from disk failed. [ 0.682598] registered taskstats version 1 [ 0.682923] Magic number: 14:575:748 [ 0.683005] rtc_cmos 00:03: setting system clock to 2010-02-12 19:42:38 UTC (1266003758) [ 0.683008] BIOS EDD facility v0.16 2004-Jun-25, 0 devices found [ 0.683009] EDD information not available. [ 0.700543] ata7.00: ATA-7: HDT722516DLA380, V43OA91A, max UDMA/133 [ 0.700545] ata7.00: 321672960 sectors, multi 0: LBA48 NCQ (depth 0/32) [ 0.700734] input: AT Translated Set 2 keyboard as /devices/platform/i8042/serio0/input/input3 [ 0.706554] isapnp: No Plug & Play device found [ 0.716539] ata7.00: configured for UDMA/100 [ 0.840021] ata5: softreset failed (device not ready) [ 0.840024] ata5: applying SB600 PMP SRST workaround and retrying [ 0.840040] ata4: softreset failed (device not ready) [ 0.840043] ata4: applying SB600 PMP SRST workaround and retrying [ 0.840059] ata2: softreset failed (device not ready) [ 0.840062] ata2: applying SB600 PMP SRST workaround and retrying [ 0.840078] ata1: softreset failed (device not ready) [ 0.840081] ata1: applying SB600 PMP SRST workaround and retrying [ 0.840097] ata3: softreset failed (device not ready) [ 0.840100] ata3: applying SB600 PMP SRST workaround and retrying [ 0.904020] usb 2-5: new high speed USB device using ehci_hcd and address 2 [ 1.004040] ata2: SATA link up 3.0 Gbps (SStatus 123 SControl 300) [ 1.004061] ata4: SATA link up 3.0 Gbps (SStatus 123 SControl 300) [ 1.004080] ata3: SATA link up 3.0 Gbps (SStatus 123 SControl 300) [ 1.004099] ata1: SATA link up 3.0 Gbps (SStatus 123 SControl 300) [ 1.004118] ata5: SATA link up 3.0 Gbps (SStatus 123 SControl 300) [ 1.004578] ata2.00: ATA-7: WDC WD2500KS-00MJB0, 02.01C03, max UDMA/133 [ 1.004581] ata2.00: 488397168 sectors, multi 0: LBA48 [ 1.005213] ata2.00: configured for UDMA/133 [ 1.010504] ata4.00: ATA-7: SAMSUNG HD103UI, 1AA01113, max UDMA7 [ 1.010507] ata4.00: 1953525168 sectors, multi 0: LBA48 NCQ (depth 31/32), AA [ 1.016772] ata1.00: ATA-8: WDC WD4000AAJS-00YFA0, 12.01C02, max UDMA/133 [ 1.016774] ata1.00: 781422768 sectors, multi 0: LBA48 NCQ (depth 31/32), AA [ 1.017040] ata4.00: configured for UDMA/133 [ 1.017729] ata1.00: configured for UDMA/133 [ 1.024515] ata5.00: ATA-7: WDC WD4000AAKS-00TMA0, 12.01C01, max UDMA/133 [ 1.024517] ata5.00: 781422768 sectors, multi 0: LBA48 NCQ (depth 31/32), AA [ 1.024704] ata3.00: ATA-8: WDC WD10EACS-00C7B0, 01.01B01, max UDMA/133 [ 1.024707] ata3.00: 1953525168 sectors, multi 0: LBA48 NCQ (depth 31/32), AA [ 1.025440] ata5.00: configured for UDMA/133 [ 1.025615] ata3.00: configured for UDMA/133 [ 1.032106] scsi 0:0:0:0: Direct-Access ATA WDC WD4000AAJS-0 12.0 PQ: 0 ANSI: 5 [ 1.032224] sd 0:0:0:0: Attached scsi generic sg0 type 0 [ 1.032313] scsi 1:0:0:0: Direct-Access ATA WDC WD2500KS-00M 02.0 PQ: 0 ANSI: 5 [ 1.032448] sd 1:0:0:0: [sdb] 488397168 512-byte logical blocks: (250 GB/232 GiB) [ 1.032471] sd 1:0:0:0: Attached scsi generic sg1 type 0 [ 1.032501] sd 1:0:0:0: [sdb] Write Protect is off [ 1.032503] sd 1:0:0:0: [sdb] Mode Sense: 00 3a 00 00 [ 1.032510] sd 0:0:0:0: [sda] 781422768 512-byte logical blocks: (400 GB/372 GiB) [ 1.032529] sd 1:0:0:0: [sdb] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA [ 1.032550] sd 0:0:0:0: [sda] Write Protect is off [ 1.032553] sd 0:0:0:0: [sda] Mode Sense: 00 3a 00 00 [ 1.032570] sd 0:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA [ 1.032663] sdb: [ 1.032719] sda: sda1 [ 1.037898] sd 0:0:0:0: [sda] Attached SCSI disk [ 1.038643] usb 2-5: configuration #1 chosen from 1 choice [ 1.040081] scsi 2:0:0:0: Direct-Access ATA WDC WD10EACS-00C 01.0 PQ: 0 ANSI: 5 [ 1.040171] sd 2:0:0:0: [sdc] 1953525168 512-byte logical blocks: (1.00 TB/931 GiB) [ 1.040182] sd 2:0:0:0: Attached scsi generic sg2 type 0 [ 1.040213] sd 2:0:0:0: [sdc] Write Protect is off [ 1.040215] sd 2:0:0:0: [sdc] Mode Sense: 00 3a 00 00 [ 1.040236] sd 2:0:0:0: [sdc] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA [ 1.040250] scsi 3:0:0:0: Direct-Access ATA SAMSUNG HD103UI 1AA0 PQ: 0 ANSI: 5 [ 1.040346] sdc: [ 1.040348] sd 3:0:0:0: Attached scsi generic sg3 type 0 [ 1.040414] scsi 4:0:0:0: Direct-Access ATA WDC WD4000AAKS-0 12.0 PQ: 0 ANSI: 5 [ 1.040513] sd 4:0:0:0: [sde] 781422768 512-byte logical blocks: (400 GB/372 GiB) [ 1.040515] sd 4:0:0:0: Attached scsi generic sg4 type 0 [ 1.040561] sd 3:0:0:0: [sdd] 1953525168 512-byte logical blocks: (1.00 TB/931 GiB) [ 1.040596] scsi 6:0:0:0: Direct-Access ATA HDT722516DLA380 V43O PQ: 0 ANSI: 5 [ 1.040599] sd 3:0:0:0: [sdd] Write Protect is off [ 1.040602] sd 3:0:0:0: [sdd] Mode Sense: 00 3a 00 00 [ 1.040619] sd 3:0:0:0: [sdd] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA [ 1.040705] sd 6:0:0:0: [sdf] 321672960 512-byte logical blocks: (164 GB/153 GiB) [ 1.040720] sd 6:0:0:0: Attached scsi generic sg5 type 0 [ 1.040763] sd 4:0:0:0: [sde] Write Protect is off [ 1.040765] sd 4:0:0:0: [sde] Mode Sense: 00 3a 00 00 [ 1.040782] sd 6:0:0:0: [sdf] Write Protect is off [ 1.040785] sd 4:0:0:0: [sde] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA [ 1.040789] sd 6:0:0:0: [sdf] Mode Sense: 00 3a 00 00 [ 1.040809] sd 6:0:0:0: [sdf] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA [ 1.040896] sde: [ 1.040935] sdf: [ 1.041071] sdd: sde1 [ 1.044577] sd 4:0:0:0: [sde] Attached SCSI disk [ 1.048983] sdb1 [ 1.049125] sd 1:0:0:0: [sdb] Attached SCSI disk [ 1.051674] sdc1 [ 1.051820] sd 2:0:0:0: [sdc] Attached SCSI disk [ 1.052601] sdd1 [ 1.052739] sd 3:0:0:0: [sdd] Attached SCSI disk [ 1.055182] sdf1 [ 1.055334] sd 6:0:0:0: [sdf] Attached SCSI disk [ 1.300020] usb 3-1: new full speed USB device using ohci_hcd and address 2 [ 1.360060] ata8: SATA link up 1.5 Gbps (SStatus 113 SControl 310) [ 1.383064] ata8.00: ATA-8: WDC WD4000AAJS-00YFA0, 12.01C02, max UDMA/133 [ 1.383067] ata8.00: 781422768 sectors, multi 0: LBA48 NCQ (depth 0/32) [ 1.396946] ata8.00: configured for UDMA/100 [ 1.397015] scsi 7:0:0:0: Direct-Access ATA WDC WD4000AAJS-0 12.0 PQ: 0 ANSI: 5 [ 1.397108] sd 7:0:0:0: [sdg] 781422768 512-byte logical blocks: (400 GB/372 GiB) [ 1.397135] sd 7:0:0:0: Attached scsi generic sg6 type 0 [ 1.397149] sd 7:0:0:0: [sdg] Write Protect is off [ 1.397151] sd 7:0:0:0: [sdg] Mode Sense: 00 3a 00 00 [ 1.397181] sd 7:0:0:0: [sdg] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA [ 1.397275] sdg: sdg1 [ 1.404266] sd 7:0:0:0: [sdg] Attached SCSI disk [ 1.461124] usb 3-1: configuration #1 chosen from 1 choice [ 1.463102] hub 3-1:1.0: USB hub found [ 1.465081] hub 3-1:1.0: 4 ports detected [ 1.568482] ata10.00: ATAPI: TSSTcorpCD/DVDW SH-S182M, SB03, max UDMA/33 [ 1.583771] ata10.01: ATA-7: WDC WD2500JB-00REA0, 20.00K20, max UDMA/100 [ 1.583774] ata10.01: 488397168 sectors, multi 16: LBA48 [ 1.596438] ata10.00: configured for UDMA/33 [ 1.604623] ata10.01: configured for UDMA/100 [ 1.606035] scsi 9:0:0:0: CD-ROM TSSTcorp CD/DVDW SH-S182M SB03 PQ: 0 ANSI: 5 [ 1.613283] sr0: scsi3-mmc drive: 48x/48x writer dvd-ram cd/rw xa/form2 cdda tray [ 1.613286] Uniform CD-ROM driver Revision: 3.20 [ 1.613354] sr 9:0:0:0: Attached scsi CD-ROM sr0 [ 1.613391] sr 9:0:0:0: Attached scsi generic sg7 type 5 [ 1.613452] scsi 9:0:1:0: Direct-Access ATA WDC WD2500JB-00R 20.0 PQ: 0 ANSI: 5 [ 1.613545] sd 9:0:1:0: Attached scsi generic sg8 type 0 [ 1.613549] sd 9:0:1:0: [sdh] 488397168 512-byte logical blocks: (250 GB/232 GiB) [ 1.613585] sd 9:0:1:0: [sdh] Write Protect is off [ 1.613587] sd 9:0:1:0: [sdh] Mode Sense: 00 3a 00 00 [ 1.613606] sd 9:0:1:0: [sdh] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA [ 1.613703] sdh: sdh1 sdh2 < sdh5 > [ 1.626032] sd 9:0:1:0: [sdh] Attached SCSI disk [ 1.626054] Freeing unused kernel memory: 660k freed [ 1.626426] Write protecting the kernel text: 4784k [ 1.626454] Write protecting the kernel read-only data: 1916k [ 1.637922] udev: starting version 151 [ 1.740062] usb 3-2: new full speed USB device using ohci_hcd and address 3 [ 1.913182] usb 3-2: configuration #1 chosen from 1 choice [ 2.102739] kjournald starting. Commit interval 5 seconds [ 2.102749] EXT3-fs: mounted filesystem with ordered data mode. [ 3.803875] Adding 8499192k swap on /dev/mapper/new--lvm-swap. Priority:-1 extents:1 across:8499192k [ 4.052457] udev: starting version 151 [ 4.461515] EXT3 FS on dm-2, internal journal [ 5.308700] type=1505 audit(1266003763.125:2): operation="profile_load" pid=888 name="/sbin/dhclient3" [ 5.308929] type=1505 audit(1266003763.125:3): operation="profile_load" pid=888 name="/usr/lib/NetworkManager/nm-dhcp-client.action" [ 5.309057] type=1505 audit(1266003763.125:4): operation="profile_load" pid=888 name="/usr/lib/connman/scripts/dhclient-script" [ 5.644426] kjournald starting. Commit interval 5 seconds [ 5.644624] EXT3 FS on sdh1, internal journal [ 5.644629] EXT3-fs: mounted filesystem with ordered data mode. [ 5.672973] k8temp 0000:00:18.3: Temperature readouts might be wrong - check erratum #141 [ 5.930280] usbcore: registered new interface driver hiddev [ 5.930943] piix4_smbus 0000:00:14.0: SMBus Host Controller at 0xb00, revision 0 [ 5.933478] input: Logitech USB Receiver as /devices/pci0000:00/0000:00:12.0/usb3/3-2/3-2:1.0/input/input4 [ 5.933570] generic-usb 0003:046D:C525.0001: input,hidraw0: USB HID v1.11 Mouse [Logitech USB Receiver] on usb-0000:00:12.0-2/input0 [ 5.936120] Initializing USB Mass Storage driver... [ 5.936239] scsi10 : SCSI emulation for USB Mass Storage devices [ 5.936369] usbcore: registered new interface driver usb-storage [ 5.936371] USB Mass Storage support registered. [ 5.936540] usb-storage: device found at 2 [ 5.936541] usb-storage: waiting for device to settle before scanning [ 5.941332] input: Logitech USB Receiver as /devices/pci0000:00/0000:00:12.0/usb3/3-2/3-2:1.1/input/input5 [ 5.941457] generic-usb 0003:046D:C525.0002: input,hiddev96,hidraw1: USB HID v1.11 Device [Logitech USB Receiver] on usb-0000:00:12.0-2/input1 [ 5.941481] usbcore: registered new interface driver usbhid [ 5.941483] usbhid: v2.6:USB HID core driver [ 5.944704] vga16fb: initializing [ 5.944709] vga16fb: mapped to 0xc00a0000 [ 5.944762] fb0: VGA16 VGA frame buffer device [ 6.236552] shpchp 0000:00:01.0: HPC vendor_id 1022 device_id 9602 ss_vid 0 ss_did 0 [ 6.236557] shpchp 0000:00:01.0: Cannot reserve MMIO region [ 6.236907] shpchp: Standard Hot Plug PCI Controller Driver version: 0.4 [ 6.238038] r8169 Gigabit Ethernet driver 2.3LK-NAPI loaded [ 6.238062] r8169 0000:02:00.0: PCI INT A -> GSI 18 (level, low) -> IRQ 18 [ 6.238103] r8169 0000:02:00.0: setting latency timer to 64 [ 6.238139] alloc irq_desc for 27 on node -1 [ 6.238141] alloc kstat_irqs on node -1 [ 6.238154] r8169 0000:02:00.0: irq 27 for MSI/MSI-X [ 6.238685] eth0: RTL8168c/8111c at 0xf8162000, 00:21:97:02:08:07, XID 1c4000c0 IRQ 27 [ 6.273533] Linux agpgart interface v0.103 [ 6.333427] [drm] Initialized drm 1.1.0 20060810 [ 6.578699] lp: driver loaded but no devices found [ 6.937634] [drm] radeon defaulting to kernel modesetting. [ 6.937637] [drm] radeon kernel modesetting enabled. [ 6.937701] radeon 0000:01:05.0: PCI INT A -> GSI 18 (level, low) -> IRQ 18 [ 6.937705] radeon 0000:01:05.0: setting latency timer to 64 [ 6.939135] [drm] radeon: Initializing kernel modesetting. [ 6.939159] [drm] register mmio base: 0xFCEF0000 [ 6.939160] [drm] register mmio size: 65536 [ 6.940197] ATOM BIOS: 113 [ 6.940202] [drm] Clocks initialized ! [ 6.940362] [drm] Detected VRAM RAM=256M, BAR=256M [ 6.940366] [drm] RAM width 32bits DDR [ 6.953408] [TTM] Zone kernel: Available graphics memory: 431768 kiB. [ 6.953410] [TTM] Zone highmem: Available graphics memory: 1418236 kiB. [ 6.953425] [drm] radeon: 256M of VRAM memory ready [ 6.953426] [drm] radeon: 512M of GTT memory ready. [ 6.953518] [drm] Loading RS780 CP Microcode [ 6.953777] platform radeon_cp.0: firmware: requesting radeon/RS780_pfp.bin [ 6.961107] Console: switching to colour frame buffer device 80x30 [ 7.251602] platform radeon_cp.0: firmware: requesting radeon/RS780_me.bin [ 7.432087] BUG: unable to handle kernel NULL pointer dereference at (null) [ 7.432631] IP: [] __mutex_lock_slowpath+0x8a/0x130 [ 7.433022] *pde = af517067 [ 7.433284] Oops: 0002 [#1] SMP [ 7.435404] last sysfs file: /sys/devices/pci0000:00/0000:00:14.1/host9/target9:0:1/9:0:1:0/block/sdh/dev [ 7.436006] Modules linked in: snd_seq snd_timer snd_seq_device radeon(+) ttm drm_kms_helper fbcon tileblit font bitblit softcursor snd soundcore drm agpgart i2c_algo_bit shpchp joydev snd_page_alloc r8169 vga16fb usb_storage vgastate mii i2c_piix4 usbhid k8temp lp parport [ 7.457480] [ 7.457480] Pid: 410, comm: plymouthd Not tainted (2.6.32-13-generic #18-Ubuntu) A780GM-A [ 7.457480] EIP: 0060:[] EFLAGS: 00010246 CPU: 0 [ 7.457480] EIP is at __mutex_lock_slowpath+0x8a/0x130 [ 7.457480] EAX: 00000000 EBX: f63f727c ECX: f63f7284 EDX: f6945ec4 [ 7.457480] ESI: f63f7280 EDI: f63f728c EBP: f6945edc ESP: f6945eb8 [ 7.457480] DS: 007b ES: 007b FS: 00d8 GS: 00e0 SS: 0068 [ 7.457480] Process plymouthd (pid: 410, ti=f6944000 task=f649a670 task.ti=f6944000) [ 7.457480] Stack: [ 7.457480] 00000000 f63f7284 f649a670 f63f7284 00000000 f63f7000 f63f727c f62b96c0 [ 7.457480] <0> f63f727c f6945eec c05a4f35 f62b96c0 f62b96c0 f6945f00 f81eb123 f62b96c0 [ 7.457480] <0> f64dd000 f63f7000 f6945f44 f81e2ecf 00000001 f81f2365 f81f1980 f81f3890 [ 7.457480] Call Trace: [ 7.457480] [] ? mutex_lock+0x25/0x40 [ 7.604514] [] ? drm_fb_release+0x23/0x70 [drm] [ 7.604514] [] ? drm_release+0x2ff/0x390 [drm] [ 7.604514] [] ? __fput+0xdf/0x1f0 [ 7.604514] [] ? fput+0x1d/0x30 [ 7.604514] [] ? filp_close+0x4c/0x80 [ 7.604514] [] ? sys_close+0x78/0xc0 [ 7.604514] [] ? syscall_call+0x7/0xb [ 7.604514] Code: 18 63 7f bd 90 8d 74 26 00 8d 73 04 89 f0 e8 ce 11 00 00 8d 55 e8 8d 43 08 89 45 e0 8b 43 0c 89 53 0c 8b 4d e0 89 45 ec 89 4d e8 <89> 10 8b 45 e4 ba ff ff ff ff 89 45 f0 89 d0 87 03 83 f8 01 74 [ 7.604514] EIP: [] __mutex_lock_slowpath+0x8a/0x130 SS:ESP 0068:f6945eb8 [ 7.604514] CR2: 0000000000000000 [ 7.607248] ---[ end trace bdc69ac9537b9c32 ]--- [ 7.825238] [drm] GART: num cpu pages 131072, num gpu pages 131072 [ 7.869756] [drm] ring test succeeded in 0 usecs [ 7.881065] [drm] radeon: ib pool ready. [ 7.891970] [drm] ib test succeeded in 0 usecs [ 7.902989] [drm] Radeon Display Connectors [ 7.913446] [drm] Connector 0: [ 7.923464] [drm] VGA [ 7.933096] [drm] DDC: 0x7e40 0x7e40 0x7e44 0x7e44 0x7e48 0x7e48 0x7e4c 0x7e4c [ 7.952371] [drm] Encoders: [ 7.963869] [drm] CRT1: INTERNAL_KLDSCP_DAC1 [ 7.973582] [drm] Connector 1: [ 7.983207] [drm] HDMI-A [ 7.992711] [drm] DDC: 0x7e50 0x7e50 0x7e54 0x7e54 0x7e58 0x7e58 0x7e5c 0x7e5c [ 8.012360] [drm] Encoders: [ 8.023952] [drm] DFP3: INTERNAL_KLDSCP_LVTMA [ 8.070911] [drm] fb mappable at 0xB0141000 [ 8.081737] [drm] vram apper at 0xB0000000 [ 8.092159] [drm] size 1996800 [ 8.102184] [drm] fb depth is 24 [ 8.112111] [drm] pitch is 3328 [ 8.121433] kjournald starting. Commit interval 5 seconds [ 8.122878] fb1: radeondrmfb frame buffer device [ 8.122881] registered panic notifier [ 8.122886] [drm] Initialized radeon 2.0.0 20080528 for 0000:01:05.0 on minor 0 [ 8.166610] EXT3 FS on dm-5, internal journal [ 8.176254] EXT3-fs: mounted filesystem with ordered data mode. [ 8.376043] HDA Intel 0000:00:14.2: PCI INT A -> GSI 16 (level, low) -> IRQ 16 [ 8.563319] input: HDA Digital PCBeep as /devices/pci0000:00/0000:00:14.2/input/input6 [ 8.706824] kjournald starting. Commit interval 5 seconds [ 8.717339] EXT3 FS on dm-3, internal journal [ 8.727742] EXT3-fs: mounted filesystem with ordered data mode. [ 8.844151] input: HDA ATI SB Line In at Ext Rear Jack as /devices/pci0000:00/0000:00:14.2/sound/card0/input7 [ 8.865919] input: HDA ATI SB Mic at Ext Front Jack as /devices/pci0000:00/0000:00:14.2/sound/card0/input8 [ 8.887927] input: HDA ATI SB Mic at Ext Rear Jack as /devices/pci0000:00/0000:00:14.2/sound/card0/input9 [ 8.911538] input: HDA ATI SB Speaker at Ext Rear Jack as /devices/pci0000:00/0000:00:14.2/sound/card0/input10 [ 8.935871] input: HDA ATI SB Speaker at Ext Rear Jack as /devices/pci0000:00/0000:00:14.2/sound/card0/input11 [ 8.960861] input: HDA ATI SB Speaker at Ext Rear Jack as /devices/pci0000:00/0000:00:14.2/sound/card0/input12 [ 8.986944] input: HDA ATI SB Speaker at Ext Rear Jack as /devices/pci0000:00/0000:00:14.2/sound/card0/input13 [ 9.013446] kjournald starting. Commit interval 5 seconds [ 9.013825] input: HDA ATI SB HP Out at Ext Front Jack as /devices/pci0000:00/0000:00:14.2/sound/card0/input14 [ 9.036654] HDA Intel 0000:01:05.1: PCI INT B -> GSI 19 (level, low) -> IRQ 19 [ 9.036678] HDA Intel 0000:01:05.1: setting latency timer to 64 [ 9.051109] EXT3 FS on dm-4, internal journal [ 9.051114] EXT3-fs: mounted filesystem with ordered data mode. [ 9.487430] kjournald starting. Commit interval 5 seconds [ 9.500607] EXT3 FS on dm-1, internal journal [ 9.513888] EXT3-fs: mounted filesystem with ordered data mode. [ 10.936149] usb-storage: device scan complete [ 10.944531] scsi 10:0:0:0: Direct-Access Generic USB SD Reader 1.00 PQ: 0 ANSI: 0 [ 10.945128] scsi 10:0:0:1: Direct-Access Generic USB CF Reader 1.01 PQ: 0 ANSI: 0 [ 10.945751] scsi 10:0:0:2: Direct-Access Generic USB SM Reader 1.02 PQ: 0 ANSI: 0 [ 10.946374] scsi 10:0:0:3: Direct-Access Generic USB MS Reader 1.03 PQ: 0 ANSI: 0 [ 10.946706] sd 10:0:0:0: Attached scsi generic sg9 type 0 [ 10.946788] sd 10:0:0:1: Attached scsi generic sg10 type 0 [ 10.946871] sd 10:0:0:2: Attached scsi generic sg11 type 0 [ 10.946953] sd 10:0:0:3: Attached scsi generic sg12 type 0 [ 11.107874] sd 10:0:0:0: [sdi] Attached SCSI removable disk [ 11.117236] sd 10:0:0:1: [sdj] Attached SCSI removable disk [ 11.117982] sd 10:0:0:2: [sdk] Attached SCSI removable disk [ 11.119716] sd 10:0:0:3: [sdl] Attached SCSI removable disk [ 13.135849] r8169: eth0: link up [ 13.139850] r8169: eth0: link up [ 13.729173] type=1505 audit(1266003771.545:5): operation="profile_load" pid=1577 name="/usr/share/gdm/guest-session/Xsession" [ 13.751110] type=1505 audit(1266003771.566:6): operation="profile_replace" pid=1578 name="/sbin/dhclient3" [ 13.772494] type=1505 audit(1266003771.588:7): operation="profile_replace" pid=1578 name="/usr/lib/NetworkManager/nm-dhcp-client.action" [ 13.793108] type=1505 audit(1266003771.609:8): operation="profile_replace" pid=1578 name="/usr/lib/connman/scripts/dhclient-script" [ 13.854519] type=1505 audit(1266003771.669:9): operation="profile_load" pid=1579 name="/usr/bin/evince" [ 13.878232] type=1505 audit(1266003771.693:10): operation="profile_load" pid=1579 name="/usr/bin/evince-previewer" [ 13.900476] type=1505 audit(1266003771.717:11): operation="profile_load" pid=1579 name="/usr/bin/evince-thumbnailer" [ 14.102009] type=1505 audit(1266003771.917:12): operation="profile_load" pid=1582 name="/usr/lib/cups/backend/cups-pdf" [ 14.102306] type=1505 audit(1266003771.917:13): operation="profile_load" pid=1582 name="/usr/sbin/cupsd" [ 14.117695] type=1505 audit(1266003771.933:14): operation="profile_load" pid=1583 name="/usr/sbin/tcpdump" [ 14.401871] vgaarb: device changed decodes: PCI:0000:01:05.0,olddecodes=io+mem,decodes=none:owns=io+mem [ 14.401876] vgaarb: transferring owner from PCI:0000:01:05.0 to PCI:0000:03:07.0 Bug: 560249 [ 0.000000] Initializing cgroup subsys cpuset [ 0.000000] Initializing cgroup subsys cpu [ 0.000000] Linux version 2.6.32-21-generic (buildd@yellow) (gcc version 4.4.3 (Ubuntu 4.4.3-4ubuntu5) ) #32-Ubuntu SMP Fri Apr 16 08:09:38 UTC 2010 (Ubuntu 2.6.32-21.32-generic 2.6.32.11+drm33.2) [ 0.000000] Command line: BOOT_IMAGE=/boot/vmlinuz-2.6.32-21-generic root=UUID=50cc7340-4a5d-4a26-8d8e-1bc88476d3de ro quiet splash [ 0.000000] KERNEL supported cpus: [ 0.000000] Intel GenuineIntel [ 0.000000] AMD AuthenticAMD [ 0.000000] Centaur CentaurHauls [ 0.000000] BIOS-provided physical RAM map: [ 0.000000] BIOS-e820: 0000000000000000 - 000000000009dc00 (usable) [ 0.000000] BIOS-e820: 000000000009dc00 - 00000000000a0000 (reserved) [ 0.000000] BIOS-e820: 00000000000d0000 - 0000000000100000 (reserved) [ 0.000000] BIOS-e820: 0000000000100000 - 000000006fe80000 (usable) [ 0.000000] BIOS-e820: 000000006fe80000 - 000000006fe8d000 (ACPI data) [ 0.000000] BIOS-e820: 000000006fe8d000 - 000000006fe8f000 (ACPI NVS) [ 0.000000] BIOS-e820: 000000006fe8f000 - 0000000080000000 (reserved) [ 0.000000] BIOS-e820: 00000000e0000000 - 00000000f0000000 (reserved) [ 0.000000] BIOS-e820: 00000000fec00000 - 00000000fec10000 (reserved) [ 0.000000] BIOS-e820: 00000000fee00000 - 00000000fee01000 (reserved) [ 0.000000] BIOS-e820: 00000000fff00000 - 0000000100000000 (reserved) [ 0.000000] DMI present. [ 0.000000] Phoenix BIOS detected: BIOS may corrupt low RAM, working around it. [ 0.000000] e820 update range: 0000000000000000 - 0000000000010000 (usable) ==> (reserved) [ 0.000000] last_pfn = 0x6fe80 max_arch_pfn = 0x400000000 [ 0.000000] MTRR default type: uncachable [ 0.000000] MTRR fixed ranges enabled: [ 0.000000] 00000-9FFFF write-back [ 0.000000] A0000-BFFFF uncachable [ 0.000000] C0000-CFFFF write-protect [ 0.000000] D0000-DFFFF uncachable [ 0.000000] E0000-FFFFF write-protect [ 0.000000] MTRR variable ranges enabled: [ 0.000000] 0 base 0000000000 mask FF80000000 write-back [ 0.000000] 1 disabled [ 0.000000] 2 disabled [ 0.000000] 3 disabled [ 0.000000] 4 disabled [ 0.000000] 5 disabled [ 0.000000] 6 disabled [ 0.000000] 7 disabled [ 0.000000] x86 PAT enabled: cpu 0, old 0x7040600070406, new 0x7010600070106 [ 0.000000] Scanning 0 areas for low memory corruption [ 0.000000] modified physical RAM map: [ 0.000000] modified: 0000000000000000 - 0000000000010000 (reserved) [ 0.000000] modified: 0000000000010000 - 000000000009dc00 (usable) [ 0.000000] modified: 000000000009dc00 - 00000000000a0000 (reserved) [ 0.000000] modified: 00000000000d0000 - 0000000000100000 (reserved) [ 0.000000] modified: 0000000000100000 - 000000006fe80000 (usable) [ 0.000000] modified: 000000006fe80000 - 000000006fe8d000 (ACPI data) [ 0.000000] modified: 000000006fe8d000 - 000000006fe8f000 (ACPI NVS) [ 0.000000] modified: 000000006fe8f000 - 0000000080000000 (reserved) [ 0.000000] modified: 00000000e0000000 - 00000000f0000000 (reserved) [ 0.000000] modified: 00000000fec00000 - 00000000fec10000 (reserved) [ 0.000000] modified: 00000000fee00000 - 00000000fee01000 (reserved) [ 0.000000] modified: 00000000fff00000 - 0000000100000000 (reserved) [ 0.000000] initial memory mapped : 0 - 20000000 [ 0.000000] init_memory_mapping: 0000000000000000-000000006fe80000 [ 0.000000] NX (Execute Disable) protection: active [ 0.000000] 0000000000 - 006fe00000 page 2M [ 0.000000] 006fe00000 - 006fe80000 page 4k [ 0.000000] kernel direct mapping tables up to 6fe80000 @ 10000-14000 [ 0.000000] RAMDISK: 3728b000 - 37fef421 [ 0.000000] ACPI: RSDP 00000000000f8130 00024 (v02 PTLTD ) [ 0.000000] ACPI: XSDT 000000006fe84e00 0005C (v01 PTLTD ? XSDT 06040000 LTP 00000000) [ 0.000000] ACPI: FACP 000000006fe8cbae 000F4 (v03 ATI Herring 06040000 ATI 000F4240) [ 0.000000] ACPI: DSDT 000000006fe84e5c 07D52 (v01 ATI SB600 06040000 MSFT 03000001) [ 0.000000] ACPI: FACS 000000006fe8efc0 00040 [ 0.000000] ACPI: TCPA 000000006fe8cd16 00032 (v02 AMD 06040000 PTEC 00000000) [ 0.000000] ACPI: SSDT 000000006fe8cd48 000D3 (v01 PTLTD POWERNOW 06040000 LTP 00000001) [ 0.000000] ACPI: ASF! 000000006fe8ce1b 0012B (v32 DMA AMDTBL 06040000 PTL 00000001) [ 0.000000] ACPI: APIC 000000006fe8cf46 00046 (v01 PTLTD ? APIC 06040000 LTP 00000000) [ 0.000000] ACPI: MCFG 000000006fe8cf8c 0003C (v01 PTLTD MCFG 06040000 LTP 00000000) [ 0.000000] ACPI: HPET 000000006fe8cfc8 00038 (v01 PTLTD HPETTBL 06040000 LTP 00000001) [ 0.000000] ACPI: Local APIC address 0xfee00000 [ 0.000000] Scanning NUMA topology in Northbridge 24 [ 0.000000] No NUMA configuration found [ 0.000000] Faking a node at 0000000000000000-000000006fe80000 [ 0.000000] Bootmem setup node 0 0000000000000000-000000006fe80000 [ 0.000000] NODE_DATA [0000000000012000 - 0000000000016fff] [ 0.000000] bootmap [0000000000017000 - 0000000000024fcf] pages e [ 0.000000] (7 early reservations) ==> bootmem [0000000000 - 006fe80000] [ 0.000000] #0 [0000000000 - 0000001000] BIOS data page ==> [0000000000 - 0000001000] [ 0.000000] #1 [0000006000 - 0000008000] TRAMPOLINE ==> [0000006000 - 0000008000] [ 0.000000] #2 [0001000000 - 0001a29e64] TEXT DATA BSS ==> [0001000000 - 0001a29e64] [ 0.000000] #3 [003728b000 - 0037fef421] RAMDISK ==> [003728b000 - 0037fef421] [ 0.000000] #4 [000009dc00 - 0000100000] BIOS reserved ==> [000009dc00 - 0000100000] [ 0.000000] #5 [0001a2a000 - 0001a2a2ac] BRK ==> [0001a2a000 - 0001a2a2ac] [ 0.000000] #6 [0000010000 - 0000012000] PGTABLE ==> [0000010000 - 0000012000] [ 0.000000] found SMP MP-table at [ffff8800000f8160] f8160 [ 0.000000] [ffffea0000000000-ffffea00019fffff] PMD -> [ffff880002000000-ffff8800039fffff] on node 0 [ 0.000000] Zone PFN ranges: [ 0.000000] DMA 0x00000010 -> 0x00001000 [ 0.000000] DMA32 0x00001000 -> 0x00100000 [ 0.000000] Normal 0x00100000 -> 0x00100000 [ 0.000000] Movable zone start PFN for each node [ 0.000000] early_node_map[2] active PFN ranges [ 0.000000] 0: 0x00000010 -> 0x0000009d [ 0.000000] 0: 0x00000100 -> 0x0006fe80 [ 0.000000] On node 0 totalpages: 458253 [ 0.000000] DMA zone: 56 pages used for memmap [ 0.000000] DMA zone: 103 pages reserved [ 0.000000] DMA zone: 3822 pages, LIFO batch:0 [ 0.000000] DMA32 zone: 6211 pages used for memmap [ 0.000000] DMA32 zone: 448061 pages, LIFO batch:31 [ 0.000000] Detected use of extended apic ids on hypertransport bus [ 0.000000] ACPI: PM-Timer IO Port: 0x8008 [ 0.000000] ACPI: Local APIC address 0xfee00000 [ 0.000000] ACPI: LAPIC (acpi_id[0x00] lapic_id[0x00] enabled) [ 0.000000] ACPI: LAPIC_NMI (acpi_id[0x00] high edge lint[0x1]) [ 0.000000] ACPI: IOAPIC (id[0x01] address[0xfec00000] gsi_base[0]) [ 0.000000] IOAPIC[0]: apic_id 1, version 33, address 0xfec00000, GSI 0-23 [ 0.000000] ACPI: IRQ9 used by override. [ 0.000000] Using ACPI (MADT) for SMP configuration information [ 0.000000] ACPI: HPET id: 0x43538301 base: 0xfed00000 [ 0.000000] SMP: Allowing 1 CPUs, 0 hotplug CPUs [ 0.000000] nr_irqs_gsi: 24 [ 0.000000] PM: Registered nosave memory: 000000000009d000 - 000000000009e000 [ 0.000000] PM: Registered nosave memory: 000000000009e000 - 00000000000a0000 [ 0.000000] PM: Registered nosave memory: 00000000000a0000 - 00000000000d0000 [ 0.000000] PM: Registered nosave memory: 00000000000d0000 - 0000000000100000 [ 0.000000] Allocating PCI resources starting at 80000000 (gap: 80000000:60000000) [ 0.000000] Booting paravirtualized kernel on bare hardware [ 0.000000] NR_CPUS:64 nr_cpumask_bits:64 nr_cpu_ids:1 nr_node_ids:1 [ 0.000000] PERCPU: Embedded 30 pages/cpu @ffff880001c00000 s91544 r8192 d23144 u2097152 [ 0.000000] pcpu-alloc: s91544 r8192 d23144 u2097152 alloc=1*2097152 [ 0.000000] pcpu-alloc: [0] 0 [ 0.000000] Built 1 zonelists in Node order, mobility grouping on. Total pages: 451883 [ 0.000000] Policy zone: DMA32 [ 0.000000] Kernel command line: BOOT_IMAGE=/boot/vmlinuz-2.6.32-21-generic root=UUID=50cc7340-4a5d-4a26-8d8e-1bc88476d3de ro quiet splash [ 0.000000] PID hash table entries: 4096 (order: 3, 32768 bytes) [ 0.000000] Initializing CPU#0 [ 0.000000] Checking aperture... [ 0.000000] No AGP bridge found [ 0.000000] Node 0: aperture @ 2038000000 size 32 MB [ 0.000000] Aperture beyond 4GB. Ignoring. [ 0.000000] Memory: 1781976k/1833472k available (5409k kernel code, 460k absent, 51036k reserved, 2976k data, 876k init) [ 0.000000] SLUB: Genslabs=14, HWalign=64, Order=0-3, MinObjects=0, CPUs=1, Nodes=1 [ 0.000000] Hierarchical RCU implementation. [ 0.000000] NR_IRQS:4352 nr_irqs:256 [ 0.000000] spurious 8259A interrupt: IRQ7. [ 0.000000] Console: colour VGA+ 80x25 [ 0.000000] console [tty0] enabled [ 0.000000] allocated 18350080 bytes of page_cgroup [ 0.000000] please try 'cgroup_disable=memory' option if you don't want memory cgroups [ 0.000000] hpet clockevent registered [ 0.000000] HPET: 4 timers in total, 0 timers will be used for per-cpu timer [ 0.000000] Fast TSC calibration using PIT [ 0.000000] Detected 1596.195 MHz processor. [ 0.020007] Calibrating delay loop (skipped), value calculated using timer frequency.. 3192.39 BogoMIPS (lpj=15961950) [ 0.020044] Security Framework initialized [ 0.020072] AppArmor: AppArmor initialized [ 0.020320] Dentry cache hash table entries: 262144 (order: 9, 2097152 bytes) [ 0.021737] Inode-cache hash table entries: 131072 (order: 8, 1048576 bytes) [ 0.022435] Mount-cache hash table entries: 256 [ 0.022628] Initializing cgroup subsys ns [ 0.022634] Initializing cgroup subsys cpuacct [ 0.022639] Initializing cgroup subsys memory [ 0.022653] Initializing cgroup subsys devices [ 0.022657] Initializing cgroup subsys freezer [ 0.022659] Initializing cgroup subsys net_cls [ 0.022688] CPU: L1 I Cache: 64K (64 bytes/line), D cache 64K (64 bytes/line) [ 0.022691] CPU: L2 Cache: 512K (64 bytes/line) [ 0.022695] CPU 0/0x0 -> Node 0 [ 0.022698] tseg: 006ff00000 [ 0.022702] mce: CPU supports 5 MCE banks [ 0.022717] using C1E aware idle routine [ 0.022720] Performance Events: AMD PMU driver. [ 0.022727] ... version: 0 [ 0.022730] ... bit width: 48 [ 0.022732] ... generic registers: 4 [ 0.022734] ... value mask: 0000ffffffffffff [ 0.022737] ... max period: 00007fffffffffff [ 0.022739] ... fixed-purpose events: 0 [ 0.022742] ... event mask: 000000000000000f [ 0.022758] SMP alternatives: switching to UP code [ 0.036771] Freeing SMP alternatives: 40k freed [ 0.036823] ACPI: Core revision 20090903 [ 0.050009] ftrace: converting mcount calls to 0f 1f 44 00 00 [ 0.050017] ftrace: allocating 22518 entries in 89 pages [ 0.060115] Setting APIC routing to flat [ 0.060441] ..TIMER: vector=0x30 apic1=0 pin1=0 apic2=-1 pin2=-1 [ 0.070000] ..MP-BIOS bug: 8254 timer not connected to IO-APIC [ 0.070000] ...trying to set up timer (IRQ0) through the 8259A ... [ 0.070000] ..... (found apic 0 pin 0) ... [ 0.176237] ....... works. [ 0.176239] CPU0: AMD Athlon(tm) Processor TF-20 stepping 02 [ 0.180000] Brought up 1 CPUs [ 0.180000] Total of 1 processors activated (3192.39 BogoMIPS). [ 0.180000] CPU0 attaching NULL sched-domain. [ 0.180000] devtmpfs: initialized [ 0.180000] regulator: core version 0.5 [ 0.180000] Time: 20:43:58 Date: 05/04/10 [ 0.180000] NET: Registered protocol family 16 [ 0.180000] node 0 link 0: io port [1000, fffff] [ 0.180000] TOM: 0000000080000000 aka 2048M [ 0.180000] node 0 link 0: mmio [f0100000, ffffffff] [ 0.180000] node 0 link 0: mmio [e0000000, dfffffff] [ 0.180000] node 0 link 0: mmio [d0000000, dfffffff] [ 0.180000] node 0 link 0: mmio [a0000, bffff] [ 0.180000] node 0 link 0: mmio [f0000000, f00fffff] [ 0.180000] node 0 link 0: mmio [e0000000, efffffff] [ 0.180000] node 0 link 0: mmio [80000000, cfffffff] [ 0.180000] bus: [00,ff] on node 0 link 0 [ 0.180000] bus: 00 index 0 io port: [0, ffff] [ 0.180000] bus: 00 index 1 mmio: [e0000000, fcffffffff] [ 0.180000] bus: 00 index 2 mmio: [80000000, dfffffff] [ 0.180000] bus: 00 index 3 mmio: [a0000, bffff] [ 0.180000] ACPI: bus type pci registered [ 0.180000] PCI: MCFG configuration 0: base e0000000 segment 0 buses 0 - 31 [ 0.180000] PCI: MCFG area at e0000000 reserved in E820 [ 0.180000] PCI: Using MMCONFIG at e0000000 - e1ffffff [ 0.180000] PCI: Using configuration type 1 for base access [ 0.180000] bio: create slab at 0 [ 0.180000] ACPI: EC: Look up EC in DSDT [ 0.180000] ACPI: BIOS _OSI(Linux) query ignored [ 0.180673] ACPI: Interpreter enabled [ 0.180673] ACPI: (supports S0 S3 S4 S5) [ 0.180673] ACPI: Using IOAPIC for interrupt routing [ 0.194026] ACPI: EC: GPE = 0x3, I/O: command/status = 0x66, data = 0x62 [ 0.194341] ACPI: No dock devices found. [ 0.196335] ACPI: PCI Root Bridge [PCI0] (0000:00) [ 0.196476] pci 0000:00:02.0: PME# supported from D0 D3hot D3cold [ 0.196480] pci 0000:00:02.0: PME# disabled [ 0.196527] pci 0000:00:04.0: PME# supported from D0 D3hot D3cold [ 0.196531] pci 0000:00:04.0: PME# disabled [ 0.196572] pci 0000:00:05.0: PME# supported from D0 D3hot D3cold [ 0.196575] pci 0000:00:05.0: PME# disabled [ 0.196617] pci 0000:00:06.0: PME# supported from D0 D3hot D3cold [ 0.196621] pci 0000:00:06.0: PME# disabled [ 0.196661] pci 0000:00:07.0: PME# supported from D0 D3hot D3cold [ 0.196665] pci 0000:00:07.0: PME# disabled [ 0.196726] pci 0000:00:12.0: reg 10 io port: [0x8440-0x8447] [ 0.196734] pci 0000:00:12.0: reg 14 io port: [0x8434-0x8437] [ 0.196742] pci 0000:00:12.0: reg 18 io port: [0x8438-0x843f] [ 0.196751] pci 0000:00:12.0: reg 1c io port: [0x8430-0x8433] [ 0.196759] pci 0000:00:12.0: reg 20 io port: [0x8400-0x840f] [ 0.196768] pci 0000:00:12.0: reg 24 32bit mmio: [0xf0609000-0xf06093ff] [ 0.196825] pci 0000:00:13.0: reg 10 32bit mmio: [0xf0404000-0xf0404fff] [ 0.196891] pci 0000:00:13.1: reg 10 32bit mmio: [0xf0405000-0xf0405fff] [ 0.196959] pci 0000:00:13.2: reg 10 32bit mmio: [0xf0406000-0xf0406fff] [ 0.197024] pci 0000:00:13.3: reg 10 32bit mmio: [0xf0407000-0xf0407fff] [ 0.197089] pci 0000:00:13.4: reg 10 32bit mmio: [0xf0408000-0xf0408fff] [ 0.197175] pci 0000:00:13.5: reg 10 32bit mmio: [0xf0609400-0xf06094ff] [ 0.197235] pci 0000:00:13.5: supports D1 D2 [ 0.197238] pci 0000:00:13.5: PME# supported from D0 D1 D2 D3hot [ 0.197243] pci 0000:00:13.5: PME# disabled [ 0.197295] pci 0000:00:14.0: reg 10 io port: [0x8410-0x841f] [ 0.197374] pci 0000:00:14.1: reg 10 io port: [0x1f0-0x1f7] [ 0.197382] pci 0000:00:14.1: reg 14 io port: [0x3f4-0x3f7] [ 0.197390] pci 0000:00:14.1: reg 18 io port: [0x00-0x07] [ 0.197399] pci 0000:00:14.1: reg 1c io port: [0x00-0x03] [ 0.197407] pci 0000:00:14.1: reg 20 io port: [0x8420-0x842f] [ 0.197469] pci 0000:00:14.2: reg 10 64bit mmio: [0xf0400000-0xf0403fff] [ 0.197519] pci 0000:00:14.2: PME# supported from D0 D3hot D3cold [ 0.197524] pci 0000:00:14.2: PME# disabled [ 0.197768] pci 0000:01:05.0: reg 10 64bit mmio pref: [0xd0000000-0xdfffffff] [ 0.197776] pci 0000:01:05.0: reg 18 64bit mmio: [0xf0100000-0xf010ffff] [ 0.197781] pci 0000:01:05.0: reg 20 io port: [0x9000-0x90ff] [ 0.197786] pci 0000:01:05.0: reg 24 32bit mmio: [0xf0000000-0xf00fffff] [ 0.197800] pci 0000:01:05.0: supports D1 D2 [ 0.197826] pci 0000:01:05.2: reg 10 64bit mmio: [0xf0110000-0xf0113fff] [ 0.197872] pci 0000:00:01.0: bridge io port: [0x9000-0x9fff] [ 0.197876] pci 0000:00:01.0: bridge 32bit mmio: [0xf0000000-0xf01fffff] [ 0.197881] pci 0000:00:01.0: bridge 64bit mmio pref: [0xd0000000-0xdfffffff] [ 0.200112] pci 0000:00:04.0: bridge io port: [0x00-0xfff] [ 0.200116] pci 0000:00:04.0: bridge 32bit mmio: [0x000000-0x0fffff] [ 0.200176] pci 0000:00:05.0: bridge io port: [0x00-0xfff] [ 0.200179] pci 0000:00:05.0: bridge 32bit mmio: [0x000000-0x0fffff] [ 0.200222] pci 0000:0f:00.0: reg 10 io port: [0xa000-0xa0ff] [ 0.200230] pci 0000:0f:00.0: reg 14 32bit mmio: [0xf0200000-0xf0203fff] [ 0.200283] pci 0000:0f:00.0: supports D1 D2 [ 0.200286] pci 0000:0f:00.0: PME# supported from D0 D1 D2 D3hot [ 0.200291] pci 0000:0f:00.0: PME# disabled [ 0.200358] pci 0000:00:06.0: bridge io port: [0xa000-0xafff] [ 0.200362] pci 0000:00:06.0: bridge 32bit mmio: [0xf0200000-0xf02fffff] [ 0.200407] pci 0000:15:00.0: reg 10 32bit mmio: [0xf0300000-0xf03000ff] [ 0.200522] pci 0000:15:00.2: reg 10 32bit mmio: [0xf0300400-0xf03004ff] [ 0.200634] pci 0000:15:00.3: reg 10 32bit mmio: [0xf0300800-0xf03008ff] [ 0.200748] pci 0000:15:00.5: reg 10 32bit mmio: [0xf0304000-0xf0307fff] [ 0.200763] pci 0000:15:00.5: reg 18 io port: [0xb400-0xb47f] [ 0.200772] pci 0000:15:00.5: reg 1c io port: [0xb000-0xb0ff] [ 0.200823] pci 0000:15:00.5: PME# supported from D0 D3hot D3cold [ 0.200828] pci 0000:15:00.5: PME# disabled [ 0.200898] pci 0000:00:07.0: bridge io port: [0xb000-0xbfff] [ 0.200902] pci 0000:00:07.0: bridge 32bit mmio: [0xf0300000-0xf03fffff] [ 0.200972] pci 0000:00:14.4: transparent bridge [ 0.201003] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0._PRT] [ 0.201171] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PB2_._PRT] [ 0.201277] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PB6_._PRT] [ 0.201376] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PB5_._PRT] [ 0.201475] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PB4_._PRT] [ 0.201582] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PB7_._PRT] [ 0.201727] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.BB4_._PRT] [ 0.201833] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.BB5_._PRT] [ 0.201982] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.P2P_._PRT] [ 0.202204] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.AGP_._PRT] [ 0.214741] ACPI: PCI Interrupt Link [LNKA] (IRQs 10 11) *0, disabled. [ 0.214918] ACPI: PCI Interrupt Link [LNKB] (IRQs 10 11) *0, disabled. [ 0.215093] ACPI: PCI Interrupt Link [LNKC] (IRQs 10 11) *0, disabled. [ 0.215267] ACPI: PCI Interrupt Link [LNKD] (IRQs 10 11) *0, disabled. [ 0.215441] ACPI: PCI Interrupt Link [LNKE] (IRQs 10 11) *0, disabled. [ 0.215615] ACPI: PCI Interrupt Link [LNKF] (IRQs 10 11) *0, disabled. [ 0.215789] ACPI: PCI Interrupt Link [LNKG] (IRQs 10 11) *0, disabled. [ 0.215963] ACPI: PCI Interrupt Link [LNKH] (IRQs 10 11) *0, disabled. [ 0.216135] vgaarb: device added: PCI:0000:01:05.0,decodes=io+mem,owns=io+mem,locks=none [ 0.216141] vgaarb: loaded [ 0.216294] SCSI subsystem initialized [ 0.216389] libata version 3.00 loaded. [ 0.216478] usbcore: registered new interface driver usbfs [ 0.216495] usbcore: registered new interface driver hub [ 0.216526] usbcore: registered new device driver usb [ 0.216705] ACPI: WMI: Mapper loaded [ 0.216708] PCI: Using ACPI for IRQ routing [ 0.216716] pci 0000:00:04.0: BAR 13: can't allocate resource [ 0.216719] pci 0000:00:04.0: BAR 14: can't allocate resource [ 0.216722] pci 0000:00:05.0: BAR 13: can't allocate resource [ 0.216724] pci 0000:00:05.0: BAR 14: can't allocate resource [ 0.216944] NetLabel: Initializing [ 0.216947] NetLabel: domain hash size = 128 [ 0.216949] NetLabel: protocols = UNLABELED CIPSOv4 [ 0.216966] NetLabel: unlabeled traffic allowed by default [ 0.217016] hpet0: at MMIO 0xfed00000, IRQs 2, 8, 0, 0 [ 0.217022] hpet0: 4 comparators, 32-bit 14.318180 MHz counter [ 0.219042] Switching to clocksource tsc [ 0.219996] AppArmor: AppArmor Filesystem Enabled [ 0.219996] pnp: PnP ACPI init [ 0.219996] ACPI: bus type pnp registered [ 0.219996] pnp: PnP ACPI: found 11 devices [ 0.219996] ACPI: ACPI bus type pnp unregistered [ 0.219996] system 00:01: iomem range 0xfec00000-0xfec00fff could not be reserved [ 0.219996] system 00:01: iomem range 0xfee00000-0xfee00fff has been reserved [ 0.219996] system 00:08: ioport range 0x1080-0x1080 has been reserved [ 0.219996] system 00:08: ioport range 0x220-0x22f has been reserved [ 0.219996] system 00:08: ioport range 0x40b-0x40b has been reserved [ 0.219996] system 00:08: ioport range 0x4d0-0x4d1 has been reserved [ 0.219996] system 00:08: ioport range 0x4d6-0x4d6 has been reserved [ 0.219996] system 00:08: ioport range 0x530-0x537 has been reserved [ 0.219996] system 00:08: ioport range 0xc00-0xc01 has been reserved [ 0.219996] system 00:08: ioport range 0xc14-0xc14 has been reserved [ 0.219996] system 00:08: ioport range 0xc50-0xc52 has been reserved [ 0.219996] system 00:08: ioport range 0xc6c-0xc6c has been reserved [ 0.219996] system 00:08: ioport range 0xc6f-0xc6f has been reserved [ 0.219996] system 00:08: ioport range 0xcd0-0xcd1 has been reserved [ 0.219996] system 00:08: ioport range 0xcd2-0xcd3 has been reserved [ 0.219996] system 00:08: ioport range 0xcd4-0xcd5 has been reserved [ 0.219996] system 00:08: ioport range 0xcd6-0xcd7 has been reserved [ 0.219996] system 00:08: ioport range 0xcd8-0xcdf has been reserved [ 0.219996] system 00:08: ioport range 0x8000-0x805f has been reserved [ 0.219996] system 00:08: ioport range 0xf40-0xf47 has been reserved [ 0.219996] system 00:08: ioport range 0x87f-0x87f has been reserved [ 0.219996] system 00:09: iomem range 0xe0000-0xfffff could not be reserved [ 0.219996] system 00:09: iomem range 0xfff00000-0xffffffff has been reserved [ 0.222378] pci 0000:00:01.0: PCI bridge, secondary bus 0000:01 [ 0.222382] pci 0000:00:01.0: IO window: 0x9000-0x9fff [ 0.222386] pci 0000:00:01.0: MEM window: 0xf0000000-0xf01fffff [ 0.222391] pci 0000:00:01.0: PREFETCH window: 0x000000d0000000-0x000000dfffffff [ 0.222396] pci 0000:00:02.0: PCI bridge, secondary bus 0000:02 [ 0.222398] pci 0000:00:02.0: IO window: disabled [ 0.222402] pci 0000:00:02.0: MEM window: disabled [ 0.222405] pci 0000:00:02.0: PREFETCH window: disabled [ 0.222410] pci 0000:00:04.0: PCI bridge, secondary bus 0000:03 [ 0.222412] pci 0000:00:04.0: IO window: disabled [ 0.222415] pci 0000:00:04.0: MEM window: disabled [ 0.222418] pci 0000:00:04.0: PREFETCH window: disabled [ 0.222423] pci 0000:00:05.0: PCI bridge, secondary bus 0000:09 [ 0.222425] pci 0000:00:05.0: IO window: disabled [ 0.222428] pci 0000:00:05.0: MEM window: disabled [ 0.222431] pci 0000:00:05.0: PREFETCH window: disabled [ 0.222436] pci 0000:00:06.0: PCI bridge, secondary bus 0000:0f [ 0.222439] pci 0000:00:06.0: IO window: 0xa000-0xafff [ 0.222443] pci 0000:00:06.0: MEM window: 0xf0200000-0xf02fffff [ 0.222446] pci 0000:00:06.0: PREFETCH window: disabled [ 0.222452] pci 0000:00:07.0: PCI bridge, secondary bus 0000:15 [ 0.222455] pci 0000:00:07.0: IO window: 0xb000-0xbfff [ 0.222459] pci 0000:00:07.0: MEM window: 0xf0300000-0xf03fffff [ 0.222462] pci 0000:00:07.0: PREFETCH window: disabled [ 0.222467] pci 0000:00:14.4: PCI bridge, secondary bus 0000:1b [ 0.222469] pci 0000:00:14.4: IO window: disabled [ 0.222478] pci 0000:00:14.4: MEM window: disabled [ 0.222483] pci 0000:00:14.4: PREFETCH window: disabled [ 0.222500] pci 0000:00:02.0: setting latency timer to 64 [ 0.222507] pci 0000:00:04.0: setting latency timer to 64 [ 0.222514] pci 0000:00:05.0: setting latency timer to 64 [ 0.222520] pci 0000:00:06.0: setting latency timer to 64 [ 0.222527] pci 0000:00:07.0: setting latency timer to 64 [ 0.222541] pci_bus 0000:00: resource 0 io: [0x00-0xffff] [ 0.222545] pci_bus 0000:00: resource 1 mem: [0x000000-0xffffffffffffffff] [ 0.222549] pci_bus 0000:01: resource 0 io: [0x9000-0x9fff] [ 0.222552] pci_bus 0000:01: resource 1 mem: [0xf0000000-0xf01fffff] [ 0.222555] pci_bus 0000:01: resource 2 pref mem [0xd0000000-0xdfffffff] [ 0.222559] pci_bus 0000:03: resource 0 mem: [0x0-0xfff] [ 0.222562] pci_bus 0000:03: resource 1 mem: [0x0-0xfffff] [ 0.222566] pci_bus 0000:09: resource 0 mem: [0x0-0xfff] [ 0.222569] pci_bus 0000:09: resource 1 mem: [0x0-0xfffff] [ 0.222572] pci_bus 0000:0f: resource 0 io: [0xa000-0xafff] [ 0.222576] pci_bus 0000:0f: resource 1 mem: [0xf0200000-0xf02fffff] [ 0.222579] pci_bus 0000:15: resource 0 io: [0xb000-0xbfff] [ 0.222583] pci_bus 0000:15: resource 1 mem: [0xf0300000-0xf03fffff] [ 0.222586] pci_bus 0000:1b: resource 3 io: [0x00-0xffff] [ 0.222590] pci_bus 0000:1b: resource 4 mem: [0x000000-0xffffffffffffffff] [ 0.222641] NET: Registered protocol family 2 [ 0.222811] IP route cache hash table entries: 65536 (order: 7, 524288 bytes) [ 0.223983] TCP established hash table entries: 262144 (order: 10, 4194304 bytes) [ 0.226551] TCP bind hash table entries: 65536 (order: 8, 1048576 bytes) [ 0.227231] TCP: Hash tables configured (established 262144 bind 65536) [ 0.227235] TCP reno registered [ 0.227359] NET: Registered protocol family 1 [ 0.227490] pci 0000:01:05.0: Boot video device [ 0.227995] Scanning for low memory corruption every 60 seconds [ 0.228157] audit: initializing netlink socket (disabled) [ 0.228173] type=2000 audit(1273005836.220:1): initialized [ 0.239916] Trying to unpack rootfs image as initramfs... [ 0.261064] HugeTLB registered 2 MB page size, pre-allocated 0 pages [ 0.262891] VFS: Disk quotas dquot_6.5.2 [ 0.262967] Dquot-cache hash table entries: 512 (order 0, 4096 bytes) [ 0.263820] fuse init (API version 7.13) [ 0.263929] msgmni has been set to 3480 [ 0.264209] alg: No test for stdrng (krng) [ 0.264283] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 253) [ 0.264286] io scheduler noop registered [ 0.264289] io scheduler anticipatory registered [ 0.264291] io scheduler deadline registered [ 0.264335] io scheduler cfq registered (default) [ 0.271081] alloc irq_desc for 24 on node 0 [ 0.271086] alloc kstat_irqs on node 0 [ 0.271099] pcieport 0000:00:02.0: irq 24 for MSI/MSI-X [ 0.271106] pcieport 0000:00:02.0: setting latency timer to 64 [ 0.271296] alloc irq_desc for 25 on node 0 [ 0.271299] alloc kstat_irqs on node 0 [ 0.271305] pcieport 0000:00:04.0: irq 25 for MSI/MSI-X [ 0.271311] pcieport 0000:00:04.0: setting latency timer to 64 [ 0.271429] alloc irq_desc for 26 on node 0 [ 0.271431] alloc kstat_irqs on node 0 [ 0.271437] pcieport 0000:00:05.0: irq 26 for MSI/MSI-X [ 0.271443] pcieport 0000:00:05.0: setting latency timer to 64 [ 0.271568] alloc irq_desc for 27 on node 0 [ 0.271571] alloc kstat_irqs on node 0 [ 0.271577] pcieport 0000:00:06.0: irq 27 for MSI/MSI-X [ 0.271582] pcieport 0000:00:06.0: setting latency timer to 64 [ 0.271698] alloc irq_desc for 28 on node 0 [ 0.271701] alloc kstat_irqs on node 0 [ 0.271707] pcieport 0000:00:07.0: irq 28 for MSI/MSI-X [ 0.271713] pcieport 0000:00:07.0: setting latency timer to 64 [ 0.271802] pci_hotplug: PCI Hot Plug PCI Core version: 0.5 [ 0.271833] pciehp: PCI Express Hot Plug Controller Driver version: 0.4 [ 0.321638] ACPI: AC Adapter [AC] (on-line) [ 0.321755] input: Sleep Button as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0E:00/input/input0 [ 0.321767] ACPI: Sleep Button [SLPB] [ 0.321826] input: Lid Switch as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0D:00/input/input1 [ 0.322514] ACPI: Lid Switch [LID] [ 0.322572] input: Power Button as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0C:00/input/input2 [ 0.322576] ACPI: Power Button [PWRB] [ 0.322647] input: Power Button as /devices/LNXSYSTM:00/LNXPWRBN:00/input/input3 [ 0.322650] ACPI: Power Button [PWRF] [ 0.323008] Marking TSC unstable due to TSC halts in idle [ 0.323069] processor LNXCPU:00: registered as cooling_device0 [ 0.333399] Switching to clocksource hpet [ 0.669498] Freeing initrd memory: 13713k freed [ 1.333518] thermal LNXTHERM:01: registered as thermal_zone0 [ 1.333531] ACPI: Thermal Zone [THRM] (53 C) [ 1.335563] Linux agpgart interface v0.103 [ 1.335612] Serial: 8250/16550 driver, 4 ports, IRQ sharing enabled [ 1.337141] brd: module loaded [ 1.337734] loop: module loaded [ 1.337857] input: Macintosh mouse button emulation as /devices/virtual/input/input4 [ 1.338220] alloc irq_desc for 16 on node 0 [ 1.338223] alloc kstat_irqs on node 0 [ 1.338233] pata_acpi 0000:00:14.1: PCI INT A -> GSI 16 (level, low) -> IRQ 16 [ 1.338288] pata_acpi 0000:00:14.1: setting latency timer to 64 [ 1.338794] Fixed MDIO Bus: probed [ 1.338840] PPP generic driver version 2.4.2 [ 1.338900] tun: Universal TUN/TAP device driver, 1.6 [ 1.338902] tun: (C) 1999-2004 Max Krasnyansky [ 1.339012] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver [ 1.339097] ACPI: Battery Slot [BAT0] (battery absent) [ 1.339151] alloc irq_desc for 19 on node 0 [ 1.339154] alloc kstat_irqs on node 0 [ 1.339161] ehci_hcd 0000:00:13.5: PCI INT D -> GSI 19 (level, low) -> IRQ 19 [ 1.339184] ehci_hcd 0000:00:13.5: EHCI Host Controller [ 1.339238] ehci_hcd 0000:00:13.5: new USB bus registered, assigned bus number 1 [ 1.339282] ehci_hcd 0000:00:13.5: applying AMD SB600/SB700 USB freeze workaround [ 1.339298] ehci_hcd 0000:00:13.5: debug port 1 [ 1.339330] ehci_hcd 0000:00:13.5: irq 19, io mem 0xf0609400 [ 1.350029] ehci_hcd 0000:00:13.5: USB 2.0 started, EHCI 1.00 [ 1.350156] usb usb1: configuration #1 chosen from 1 choice [ 1.350192] hub 1-0:1.0: USB hub found [ 1.350203] hub 1-0:1.0: 10 ports detected [ 1.350304] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver [ 1.350358] ohci_hcd 0000:00:13.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16 [ 1.350374] ohci_hcd 0000:00:13.0: OHCI Host Controller [ 1.350419] ohci_hcd 0000:00:13.0: new USB bus registered, assigned bus number 2 [ 1.350449] ohci_hcd 0000:00:13.0: irq 16, io mem 0xf0404000 [ 1.410130] usb usb2: configuration #1 chosen from 1 choice [ 1.410160] hub 2-0:1.0: USB hub found [ 1.410175] hub 2-0:1.0: 2 ports detected [ 1.410265] alloc irq_desc for 17 on node 0 [ 1.410267] alloc kstat_irqs on node 0 [ 1.410273] ohci_hcd 0000:00:13.1: PCI INT B -> GSI 17 (level, low) -> IRQ 17 [ 1.410286] ohci_hcd 0000:00:13.1: OHCI Host Controller [ 1.410328] ohci_hcd 0000:00:13.1: new USB bus registered, assigned bus number 3 [ 1.410356] ohci_hcd 0000:00:13.1: irq 17, io mem 0xf0405000 [ 1.470125] usb usb3: configuration #1 chosen from 1 choice [ 1.470155] hub 3-0:1.0: USB hub found [ 1.470169] hub 3-0:1.0: 2 ports detected [ 1.470258] alloc irq_desc for 18 on node 0 [ 1.470260] alloc kstat_irqs on node 0 [ 1.470266] ohci_hcd 0000:00:13.2: PCI INT C -> GSI 18 (level, low) -> IRQ 18 [ 1.470279] ohci_hcd 0000:00:13.2: OHCI Host Controller [ 1.470322] ohci_hcd 0000:00:13.2: new USB bus registered, assigned bus number 4 [ 1.470356] ohci_hcd 0000:00:13.2: irq 18, io mem 0xf0406000 [ 1.530130] usb usb4: configuration #1 chosen from 1 choice [ 1.530159] hub 4-0:1.0: USB hub found [ 1.530173] hub 4-0:1.0: 2 ports detected [ 1.530257] ohci_hcd 0000:00:13.3: PCI INT B -> GSI 17 (level, low) -> IRQ 17 [ 1.530271] ohci_hcd 0000:00:13.3: OHCI Host Controller [ 1.530323] ohci_hcd 0000:00:13.3: new USB bus registered, assigned bus number 5 [ 1.530344] ohci_hcd 0000:00:13.3: irq 17, io mem 0xf0407000 [ 1.590129] usb usb5: configuration #1 chosen from 1 choice [ 1.590163] hub 5-0:1.0: USB hub found [ 1.590177] hub 5-0:1.0: 2 ports detected [ 1.590264] ohci_hcd 0000:00:13.4: PCI INT C -> GSI 18 (level, low) -> IRQ 18 [ 1.590280] ohci_hcd 0000:00:13.4: OHCI Host Controller [ 1.590330] ohci_hcd 0000:00:13.4: new USB bus registered, assigned bus number 6 [ 1.590351] ohci_hcd 0000:00:13.4: irq 18, io mem 0xf0408000 [ 1.650134] usb usb6: configuration #1 chosen from 1 choice [ 1.650167] hub 6-0:1.0: USB hub found [ 1.650181] hub 6-0:1.0: 2 ports detected [ 1.650247] uhci_hcd: USB Universal Host Controller Interface driver [ 1.650351] PNP: PS/2 Controller [PNP0303:KBC0,PNP0f13:MSE0] at 0x60,0x64 irq 1,12 [ 1.654442] i8042.c: Detected active multiplexing controller, rev 1.1. [ 1.657058] serio: i8042 KBD port at 0x60,0x64 irq 1 [ 1.657065] serio: i8042 AUX0 port at 0x60,0x64 irq 12 [ 1.657098] serio: i8042 AUX1 port at 0x60,0x64 irq 12 [ 1.657126] serio: i8042 AUX2 port at 0x60,0x64 irq 12 [ 1.657157] serio: i8042 AUX3 port at 0x60,0x64 irq 12 [ 1.657304] mice: PS/2 mouse device common for all mice [ 1.657563] rtc_cmos 00:04: rtc core: registered rtc_cmos as rtc0 [ 1.657594] rtc0: alarms up to one month, 114 bytes nvram, hpet irqs [ 1.657761] device-mapper: uevent: version 1.0.3 [ 1.657898] device-mapper: ioctl: 4.15.0-ioctl (2009-04-01) initialised: dm-devel@redhat.com [ 1.657965] device-mapper: multipath: version 1.1.0 loaded [ 1.657969] device-mapper: multipath round-robin: version 1.0.0 loaded [ 1.658177] cpuidle: using governor ladder [ 1.658242] cpuidle: using governor menu [ 1.658718] TCP cubic registered [ 1.658870] NET: Registered protocol family 10 [ 1.659447] lo: Disabled Privacy Extensions [ 1.659853] NET: Registered protocol family 17 [ 1.659894] powernow-k8: Found 1 AMD Athlon(tm) Processor TF-20 processors (1 cpu cores) (version 2.20.00) [ 1.659940] powernow-k8: 0 : fid 0x8 (1600 MHz), vid 0x16 [ 1.659943] powernow-k8: 1 : fid 0x0 (800 MHz), vid 0x16 [ 1.660134] PM: Resume from disk failed. [ 1.660150] registered taskstats version 1 [ 1.660646] Magic number: 10:100:750 [ 1.660673] tty ttyS1: hash matches [ 1.660757] rtc_cmos 00:04: setting system clock to 2010-05-04 20:43:59 UTC (1273005839) [ 1.660761] BIOS EDD facility v0.16 2004-Jun-25, 0 devices found [ 1.660763] EDD information not available. [ 1.660843] Freeing unused kernel memory: 876k freed [ 1.661406] Write protecting the kernel read-only data: 7680k [ 1.689967] udev: starting version 151 [ 1.692967] input: AT Translated Set 2 keyboard as /devices/platform/i8042/serio0/input/input5 [ 1.730059] usb 1-10: new high speed USB device using ehci_hcd and address 3 [ 2.022475] scsi0 : pata_atiixp [ 2.022901] scsi1 : pata_atiixp [ 2.024178] ata1: PATA max UDMA/100 cmd 0x1f0 ctl 0x3f6 bmdma 0x8420 irq 14 [ 2.024201] ata2: PATA max UDMA/100 cmd 0x170 ctl 0x376 bmdma 0x8428 irq 15 [ 2.024694] ahci 0000:00:12.0: version 3.0 [ 2.024712] alloc irq_desc for 22 on node 0 [ 2.024715] alloc kstat_irqs on node 0 [ 2.024724] ahci 0000:00:12.0: PCI INT A -> GSI 22 (level, low) -> IRQ 22 [ 2.024766] ahci 0000:00:12.0: controller can't do 64bit DMA, forcing 32bit [ 2.024888] ahci 0000:00:12.0: AHCI 0001.0100 32 slots 4 ports 3 Gbps 0xf impl SATA mode [ 2.024912] ahci 0000:00:12.0: flags: ncq sntf ilck led clo pmp pio ccc [ 2.025235] acpi device:28: registered as cooling_device1 [ 2.025375] input: Video Bus as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:25/LNXVIDEO:00/input/input6 [ 2.025444] ACPI: Video Device [VGA] (multi-head: yes rom: no post: no) [ 2.026467] scsi2 : ahci [ 2.026947] scsi3 : ahci [ 2.027086] scsi4 : ahci [ 2.027221] scsi5 : ahci [ 2.027388] ata3: SATA max UDMA/133 abar m1024@0xf0609000 port 0xf0609100 irq 22 [ 2.027393] ata4: SATA max UDMA/133 abar m1024@0xf0609000 port 0xf0609180 irq 22 [ 2.027398] ata5: SATA max UDMA/133 abar m1024@0xf0609000 port 0xf0609200 irq 22 [ 2.027402] ata6: SATA max UDMA/133 abar m1024@0xf0609000 port 0xf0609280 irq 22 [ 2.028442] [drm] Initialized drm 1.1.0 20060810 [ 2.063075] usb 1-10: configuration #1 chosen from 1 choice [ 2.370060] ata4: SATA link down (SStatus 0 SControl 300) [ 2.370139] ata6: SATA link down (SStatus 0 SControl 300) [ 2.410038] usb 2-1: new low speed USB device using ohci_hcd and address 2 [ 2.550036] ata5: softreset failed (device not ready) [ 2.550040] ata5: applying SB600 PMP SRST workaround and retrying [ 2.550057] ata3: softreset failed (device not ready) [ 2.550061] ata3: applying SB600 PMP SRST workaround and retrying [ 2.601596] usb 2-1: configuration #1 chosen from 1 choice [ 2.730047] ata3: SATA link up 3.0 Gbps (SStatus 123 SControl 300) [ 2.730080] ata5: SATA link up 1.5 Gbps (SStatus 113 SControl 300) [ 2.732744] ata5.00: ATAPI: MATSHITADVD-RAM UJ890AS, 1.00, max UDMA/100, ATAPI AN [ 2.732770] ata5.00: SB600 AHCI: limiting to 255 sectors per cmd [ 2.735736] ata5.00: SB600 AHCI: limiting to 255 sectors per cmd [ 2.735739] ata5.00: configured for UDMA/100 [ 2.784494] ata3.00: ATA-8: WDC WD2500BEVT-00ZCT0, 11.01A11, max UDMA/133 [ 2.784498] ata3.00: 488397168 sectors, multi 16: LBA48 NCQ (depth 31/32), AA [ 2.784524] ata3.00: SB600 AHCI: limiting to 255 sectors per cmd [ 2.786471] ata3.00: SB600 AHCI: limiting to 255 sectors per cmd [ 2.786474] ata3.00: configured for UDMA/133 [ 2.786606] scsi 2:0:0:0: Direct-Access ATA WDC WD2500BEVT-0 11.0 PQ: 0 ANSI: 5 [ 2.786811] sd 2:0:0:0: Attached scsi generic sg0 type 0 [ 2.787163] sd 2:0:0:0: [sda] 488397168 512-byte logical blocks: (250 GB/232 GiB) [ 2.787222] sd 2:0:0:0: [sda] Write Protect is off [ 2.787226] sd 2:0:0:0: [sda] Mode Sense: 00 3a 00 00 [ 2.787255] sd 2:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA [ 2.787422] sda: [ 2.789723] scsi 4:0:0:0: CD-ROM MATSHITA DVD-RAM UJ890AS 1.00 PQ: 0 ANSI: 5 [ 2.791428] sda1 sda2 [ 2.792010] sd 2:0:0:0: [sda] Attached SCSI disk [ 2.795609] sr0: scsi3-mmc drive: 24x/24x writer dvd-ram cd/rw xa/form2 cdda tray [ 2.795613] Uniform CD-ROM driver Revision: 3.20 [ 2.795736] sr 4:0:0:0: Attached scsi CD-ROM sr0 [ 2.795823] sr 4:0:0:0: Attached scsi generic sg1 type 5 [ 2.837887] usbcore: registered new interface driver hiddev [ 2.842505] input: Logitech Optical USB Mouse as /devices/pci0000:00/0000:00:13.0/usb2/2-1/2-1:1.0/input/input7 [ 2.842652] generic-usb 0003:046D:C016.0001: input,hidraw0: USB HID v1.10 Mouse [Logitech Optical USB Mouse] on usb-0000:00:13.0-1/input0 [ 2.842701] usbcore: registered new interface driver usbhid [ 2.842705] usbhid: v2.6:USB HID core driver [ 2.870726] [drm] radeon defaulting to kernel modesetting. [ 2.870732] [drm] radeon kernel modesetting enabled. [ 2.873112] radeon 0000:01:05.0: PCI INT A -> GSI 18 (level, low) -> IRQ 18 [ 2.876842] [drm] radeon: Initializing kernel modesetting. [ 2.876937] [drm] register mmio base: 0xF0100000 [ 2.876940] [drm] register mmio size: 65536 [ 2.877050] ATOM BIOS: ATI [ 2.877267] [drm] GPU reset succeed (RBBM_STATUS=0x10000140) [ 2.877290] [drm] radeon: VRAM 256M [ 2.877292] [drm] radeon: VRAM from 0x70000000 to 0x7FFFFFFF [ 2.877295] [drm] radeon: GTT 512M [ 2.877297] [drm] radeon: GTT from 0x80000000 to 0x9FFFFFFF [ 2.877332] alloc irq_desc for 29 on node 0 [ 2.877334] alloc kstat_irqs on node 0 [ 2.877346] radeon 0000:01:05.0: irq 29 for MSI/MSI-X [ 2.877350] [drm] radeon: using MSI. [ 2.877377] [drm] radeon: irq initialized. [ 2.877520] [drm] Detected VRAM RAM=256M, BAR=256M [ 2.877526] [drm] RAM width 128bits DDR [ 2.877639] [TTM] Zone kernel: Available graphics memory: 898306 kiB. [ 2.877662] [drm] radeon: 256M of VRAM memory ready [ 2.877664] [drm] radeon: 512M of GTT memory ready. [ 2.877694] [drm] GART: num cpu pages 131072, num gpu pages 131072 [ 2.881803] [drm] radeon: 1 quad pipes, 1 z pipes initialized. [ 2.881916] [drm] radeon: cp idle (0x10000C03) [ 2.881968] [drm] Loading RS690/RS740 Microcode [ 2.882381] platform radeon_cp.0: firmware: requesting radeon/RS690_cp.bin [ 2.886755] [drm] radeon: ring at 0x0000000080000000 [ 2.886778] [drm] ring test succeeded in 1 usecs [ 2.886979] [drm] radeon: ib pool ready. [ 2.887065] [drm] ib test succeeded in 0 usecs [ 2.887297] [drm] Radeon Display Connectors [ 2.887300] [drm] Connector 0: [ 2.887301] [drm] VGA [ 2.887305] [drm] DDC: 0x7e50 0x7e40 0x7e54 0x7e44 0x7e58 0x7e48 0x7e5c 0x7e4c [ 2.887307] [drm] Encoders: [ 2.887309] [drm] CRT1: INTERNAL_KLDSCP_DAC1 [ 2.887312] [drm] Connector 1: [ 2.887313] [drm] LVDS [ 2.887316] [drm] DDC: 0x7e40 0x7e50 0x7e44 0x7e54 0x7e48 0x7e58 0x7e4c 0x7e5c [ 2.887319] [drm] Encoders: [ 2.887321] [drm] LCD1: INTERNAL_LVTM1 [ 2.887323] [drm] Connector 2: [ 2.887324] [drm] HDMI-A [ 2.887326] [drm] HPD2 [ 2.887329] [drm] DDC: 0x7e40 0x7e60 0x7e44 0x7e64 0x7e48 0x7e68 0x7e4c 0x7e6c [ 2.887331] [drm] Encoders: [ 2.887333] [drm] DFP2: INTERNAL_DDI [ 3.404100] [drm] fb mappable at 0xD0040000 [ 3.404104] [drm] vram apper at 0xD0000000 [ 3.404106] [drm] size 5299200 [ 3.404108] [drm] fb depth is 24 [ 3.404110] [drm] pitch is 5888 [ 3.404293] fb0: radeondrmfb frame buffer device [ 3.404295] registered panic notifier [ 3.404302] [drm] Initialized radeon 2.0.0 20080528 for 0000:01:05.0 on minor 0 [ 3.406751] vga16fb: initializing [ 3.406759] vga16fb: mapped to 0xffff8800000a0000 [ 3.406766] vga16fb: not registering due to another framebuffer present [ 3.463104] Console: switching to colour frame buffer device 180x56 [ 4.191086] kjournald starting. Commit interval 5 seconds [ 4.191104] EXT3-fs: mounted filesystem with ordered data mode. [ 17.254428] udev: starting version 151 [ 17.327549] EXT3 FS on sda1, internal journal [ 17.509645] lp: driver loaded but no devices found [ 17.538852] jme: JMicron JMC2XX ethernet driver version 1.0.5 [ 17.538952] sdhci: Secure Digital Host Controller Interface driver [ 17.538955] sdhci: Copyright(c) Pierre Ossman [ 17.575662] jme 0000:15:00.5: PCI INT A -> GSI 19 (level, low) -> IRQ 19 [ 17.575681] jme 0000:15:00.5: setting latency timer to 64 [ 17.576962] eth0: JMC260 Fast Ethernet ver:22 rev:2 macaddr:00:90:f5:9b:3f:c4 [ 17.577039] shpchp: Standard Hot Plug PCI Controller Driver version: 0.4 [ 17.605505] sdhci-pci 0000:15:00.0: SDHCI controller found [197b:2382] (rev 80) [ 17.605530] sdhci-pci 0000:15:00.0: PCI INT B -> GSI 16 (level, low) -> IRQ 16 [ 17.605589] sdhci-pci 0000:15:00.0: setting latency timer to 64 [ 17.605666] Registered led device: mmc0:: [ 17.605712] mmc0: SDHCI controller on PCI [0000:15:00.0] using ADMA [ 17.664938] sdhci-pci 0000:15:00.2: SDHCI controller found [197b:2381] (rev 80) [ 17.664965] sdhci-pci 0000:15:00.2: PCI INT B -> GSI 16 (level, low) -> IRQ 16 [ 17.664980] sdhci-pci 0000:15:00.2: Refusing to bind to secondary interface. [ 17.664987] sdhci-pci 0000:15:00.2: PCI INT B disabled [ 17.908647] EDAC MC: Ver: 2.1.0 Apr 16 2010 [ 17.955420] Linux video capture interface: v2.00 [ 17.959946] uvcvideo: Found UVC 1.00 device BisonCam, NB Pro (5986:0241) [ 17.962197] piix4_smbus 0000:00:14.0: SMBus Host Controller at 0x8410, revision 0 [ 17.962537] jmb38x_ms 0000:15:00.3: PCI INT B -> GSI 16 (level, low) -> IRQ 16 [ 17.962546] jmb38x_ms 0000:15:00.3: setting latency timer to 64 [ 17.967851] EDAC amd64_edac: Ver: 3.2.0 Apr 16 2010 [ 18.024861] k8temp 0000:00:18.3: Temperature readouts might be wrong - check erratum #141 [ 18.027377] BUG: unable to handle kernel NULL pointer dereference at 00000000000003a7 [ 18.027387] IP: [] con_insert_unipair+0x4b/0x250 [ 18.027399] PGD 60954067 PUD 60220067 PMD 0 [ 18.027404] Oops: 0000 [#1] SMP [ 18.027408] last sysfs file: /sys/module/soundcore/initstate [ 18.027412] CPU 0 [ 18.027415] Modules linked in: amd64_edac_mod(+) uvcvideo(+) videodev v4l1_compat v4l2_compat_ioctl32 soundcore psmouse serio_raw jmb38x_ms k8temp snd_page_alloc i2c_piix4 edac_core edac_mce_amd sdhci_pci jme memstick sdhci mii led_class shpchp lp parport fbcon tileblit font bitblit softcursor vga16fb vgastate radeon ttm usbhid drm_kms_helper hid drm i2c_algo_bit ahci pata_atiixp video output [ 18.027453] Pid: 638, comm: setfont Not tainted 2.6.32-21-generic #32-Ubuntu M77xK [ 18.027457] RIP: 0010:[] [] con_insert_unipair+0x4b/0x250 [ 18.027464] RSP: 0018:ffff880060a99cd8 EFLAGS: 00010206 [ 18.027467] RAX: 000000000000037f RBX: 0000000000000153 RCX: ffffffff8133aee6 [ 18.027469] RDX: 0000000000000005 RSI: 0000000000000153 RDI: ffff880060230a00 [ 18.027472] RBP: ffff880060a99d18 R08: 0000000000000000 R09: 0000000000000080 [ 18.027475] R10: 0000000000000001 R11: 0000000000000000 R12: ffff880060230a00 [ 18.027478] R13: 00000000000000e1 R14: 00000000000003a7 R15: 0000000000000000 [ 18.027482] FS: 00007f58fd4a5700(0000) GS:ffff880001c00000(0000) knlGS:0000000000000000 [ 18.027486] CS: 0010 DS: 0000 ES: 0000 CR0: 000000008005003b [ 18.027488] CR2: 00000000000003a7 CR3: 0000000060bf1000 CR4: 00000000000006f0 [ 18.027491] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 [ 18.027495] DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400 [ 18.027498] Process setfont (pid: 638, threadinfo ffff880060a98000, task ffff880060cf44d0) [ 18.027500] Stack: [ 18.027502] 0000004001c0ea78 ffff880000014100 ffff880000012a90 000000000000001f [ 18.027507] <0> 0000000000000000 0000000000bb4280 ffff880060230a00 0000000000000000 [ 18.027512] <0> ffff880060a99d98 ffffffff8133b365 0000000000000002 ffff88006d2e0800 [ 18.027517] Call Trace: [ 18.027524] [] con_set_unimap+0x185/0x220 [ 18.027529] [] vt_ioctl+0x159e/0x1820 [ 18.027535] [] ? unlock_page+0x27/0x30 [ 18.027540] [] ? __do_fault+0x439/0x500 [ 18.027546] [] tty_ioctl+0xa2/0x6e0 [ 18.027552] [] vfs_ioctl+0x22/0xa0 [ 18.027558] [] ? __up_read+0x9a/0xc0 [ 18.027562] [] do_vfs_ioctl+0x81/0x380 [ 18.027569] [] ? up_read+0xe/0x10 [ 18.027576] [] ? do_page_fault+0x158/0x3b0 [ 18.027580] [] sys_ioctl+0x81/0xa0 [ 18.027586] [] system_call_fastpath+0x16/0x1b [ 18.027589] Code: 00 41 89 f6 49 89 fc 89 f3 66 41 c1 ee 0b 41 89 d5 41 83 e6 1f 4a 8b 04 f7 48 85 c0 74 53 89 da 66 c1 ea 06 83 e2 1f 4c 8d 34 d0 <49> 8b 06 48 85 c0 0f 84 8e 00 00 00 48 89 da 0f b7 db 83 e2 3f [ 18.027624] RIP [] con_insert_unipair+0x4b/0x250 [ 18.027629] RSP [ 18.027631] CR2: 00000000000003a7 [ 18.027635] ---[ end trace 8b4d5f7507c30e48 ]--- [ 18.062178] EDAC amd64: This node reports that Memory ECC is currently disabled, set F3x44[22] (0000:00:18.3). [ 18.062187] EDAC amd64: ECC disabled in the BIOS or no ECC capability, module will not load. [ 18.062189] Either enable ECC checking or force module loading by setting 'ecc_enable_override'. [ 18.062192] (Note that use of the override may cause unknown side effects.) [ 18.062221] amd64_edac: probe of 0000:00:18.2 failed with error -22 [ 18.110662] input: BisonCam, NB Pro as /devices/pci0000:00/0000:00:13.5/usb1/1-10/1-10:1.0/input/input8 [ 18.110871] usbcore: registered new interface driver uvcvideo [ 18.111180] USB Video Class driver (v0.1.0) [ 18.288677] type=1505 audit(1273005856.119:2): operation="profile_load" pid=709 name="/sbin/dhclient3" [ 18.289038] type=1505 audit(1273005856.119:3): operation="profile_load" pid=709 name="/usr/lib/NetworkManager/nm-dhcp-client.action" [ 18.289238] type=1505 audit(1273005856.119:4): operation="profile_load" pid=709 name="/usr/lib/connman/scripts/dhclient-script" [ 18.536839] HDA Intel 0000:00:14.2: PCI INT A -> GSI 16 (level, low) -> IRQ 16 [ 18.683393] Synaptics Touchpad, model: 1, fw: 7.2, id: 0x1c0b1, caps: 0xd04731/0xa42000 [ 18.684924] hda_codec: ALC272: BIOS auto-probing. [ 18.686755] input: HDA Digital PCBeep as /devices/pci0000:00/0000:00:14.2/input/input9 [ 18.702753] HDA Intel 0000:01:05.2: PCI INT B -> GSI 19 (level, low) -> IRQ 19 [ 18.720704] input: SynPS/2 Synaptics TouchPad as /devices/platform/i8042/serio4/input/input10 [ 19.750399] hda-intel: azx_get_response timeout, switching to polling mode: last cmd=0x000f0000 [ 20.760015] hda-intel: Codec #0 probe error; disabling it... [ 21.810017] hda_intel: azx_get_response timeout, switching to single_cmd mode: last cmd=0x000f0000 [ 37.563537] padlock: VIA PadLock Hash Engine not detected. [ 38.862787] kjournald starting. Commit interval 5 seconds [ 38.870310] EXT3 FS on dm-0, internal journal [ 38.870318] EXT3-fs: mounted filesystem with ordered data mode. [ 40.617556] type=1505 audit(1273005878.449:5): operation="profile_load" pid=993 name="/usr/share/gdm/guest-session/Xsession" [ 40.622524] type=1505 audit(1273005878.459:6): operation="profile_replace" pid=995 name="/sbin/dhclient3" [ 40.622902] type=1505 audit(1273005878.459:7): operation="profile_replace" pid=995 name="/usr/lib/NetworkManager/nm-dhcp-client.action" [ 40.623110] type=1505 audit(1273005878.459:8): operation="profile_replace" pid=995 name="/usr/lib/connman/scripts/dhclient-script" [ 40.634678] type=1505 audit(1273005878.469:9): operation="profile_load" pid=997 name="/usr/bin/evince" [ 40.639284] type=1505 audit(1273005878.469:10): operation="profile_load" pid=997 name="/usr/bin/evince-previewer" [ 40.652112] type=1505 audit(1273005878.489:11): operation="profile_load" pid=997 name="/usr/bin/evince-thumbnailer" [ 40.658767] type=1505 audit(1273005878.489:12): operation="profile_load" pid=1061 name="/usr/lib/cups/backend/cups-pdf" [ 40.659226] type=1505 audit(1273005878.489:13): operation="profile_load" pid=1061 name="/usr/sbin/cupsd" [ 40.661907] type=1505 audit(1273005878.499:14): operation="profile_load" pid=1062 name="/usr/sbin/tcpdump" [ 40.746355] alloc irq_desc for 30 on node 0 [ 40.746362] alloc kstat_irqs on node 0 [ 40.746378] jme 0000:15:00.5: irq 30 for MSI/MSI-X [ 40.746443] eth0: Link is down. [ 40.746721] eth0: Link is down. [ 40.747165] ADDRCONF(NETDEV_UP): eth0: link is not ready Bug: 594965 [ 0.000000] Initializing cgroup subsys cpuset [ 0.000000] Initializing cgroup subsys cpu [ 0.000000] Linux version 2.6.32-22-generic (buildd@palmer) (gcc version 4.4.3 (Ubuntu 4.4.3-4ubuntu5) ) #36-Ubuntu SMP Thu Jun 3 22:02:19 UTC 2010 (Ubuntu 2.6.32-22.36-generic 2.6.32.11+drm33.2) [ 0.000000] KERNEL supported cpus: [ 0.000000] Intel GenuineIntel [ 0.000000] AMD AuthenticAMD [ 0.000000] NSC Geode by NSC [ 0.000000] Cyrix CyrixInstead [ 0.000000] Centaur CentaurHauls [ 0.000000] Transmeta GenuineTMx86 [ 0.000000] Transmeta TransmetaCPU [ 0.000000] UMC UMC UMC UMC [ 0.000000] BIOS-provided physical RAM map: [ 0.000000] BIOS-e820: 0000000000000000 - 00000000000a0000 (usable) [ 0.000000] BIOS-e820: 00000000000f0000 - 0000000000100000 (reserved) [ 0.000000] BIOS-e820: 0000000000100000 - 000000005fff0000 (usable) [ 0.000000] BIOS-e820: 000000005fff0000 - 000000005fff3000 (ACPI NVS) [ 0.000000] BIOS-e820: 000000005fff3000 - 0000000060000000 (ACPI data) [ 0.000000] BIOS-e820: 00000000fec00000 - 00000000fec01000 (reserved) [ 0.000000] BIOS-e820: 00000000fee00000 - 00000000fee01000 (reserved) [ 0.000000] BIOS-e820: 00000000ffff0000 - 0000000100000000 (reserved) [ 0.000000] DMI 2.2 present. [ 0.000000] Phoenix BIOS detected: BIOS may corrupt low RAM, working around it. [ 0.000000] e820 update range: 0000000000000000 - 0000000000010000 (usable) ==> (reserved) [ 0.000000] last_pfn = 0x5fff0 max_arch_pfn = 0x100000 [ 0.000000] MTRR default type: uncachable [ 0.000000] MTRR fixed ranges enabled: [ 0.000000] 00000-9FFFF write-back [ 0.000000] A0000-AFFFF uncachable [ 0.000000] B0000-BFFFF write-combining [ 0.000000] C0000-C7FFF write-protect [ 0.000000] C8000-FFFFF uncachable [ 0.000000] MTRR variable ranges enabled: [ 0.000000] 0 base 000000000 mask FC0000000 write-back [ 0.000000] 1 base 040000000 mask FE0000000 write-back [ 0.000000] 2 base 0D0000000 mask FF8000000 write-combining [ 0.000000] 3 disabled [ 0.000000] 4 disabled [ 0.000000] 5 disabled [ 0.000000] 6 disabled [ 0.000000] 7 disabled [ 0.000000] x86 PAT enabled: cpu 0, old 0x7040600070406, new 0x7010600070106 [ 0.000000] Scanning 0 areas for low memory corruption [ 0.000000] modified physical RAM map: [ 0.000000] modified: 0000000000000000 - 0000000000010000 (reserved) [ 0.000000] modified: 0000000000010000 - 00000000000a0000 (usable) [ 0.000000] modified: 00000000000f0000 - 0000000000100000 (reserved) [ 0.000000] modified: 0000000000100000 - 000000005fff0000 (usable) [ 0.000000] modified: 000000005fff0000 - 000000005fff3000 (ACPI NVS) [ 0.000000] modified: 000000005fff3000 - 0000000060000000 (ACPI data) [ 0.000000] modified: 00000000fec00000 - 00000000fec01000 (reserved) [ 0.000000] modified: 00000000fee00000 - 00000000fee01000 (reserved) [ 0.000000] modified: 00000000ffff0000 - 0000000100000000 (reserved) [ 0.000000] initial memory mapped : 0 - 00c00000 [ 0.000000] init_memory_mapping: 0000000000000000-00000000377fe000 [ 0.000000] Using x86 segment limits to approximate NX protection [ 0.000000] 0000000000 - 0000400000 page 4k [ 0.000000] 0000400000 - 0037400000 page 2M [ 0.000000] 0037400000 - 00377fe000 page 4k [ 0.000000] kernel direct mapping tables up to 377fe000 @ 10000-15000 [ 0.000000] RAMDISK: 37329000 - 37fef514 [ 0.000000] Allocated new RAMDISK: 008de000 - 015a4514 [ 0.000000] Move RAMDISK from 0000000037329000 - 0000000037fef513 to 008de000 - 015a4513 [ 0.000000] ACPI: RSDP 000f6fc0 00014 (v00 Nvidia) [ 0.000000] ACPI: RSDT 5fff3000 0002C (v01 Nvidia AWRDACPI 42302E31 AWRD 00000000) [ 0.000000] ACPI: FACP 5fff3040 00074 (v01 Nvidia AWRDACPI 42302E31 AWRD 00000000) [ 0.000000] ACPI: DSDT 5fff30c0 04C22 (v01 NVIDIA AWRDACPI 00001000 MSFT 0100000E) [ 0.000000] ACPI: FACS 5fff0000 00040 [ 0.000000] ACPI: APIC 5fff7d00 0006E (v01 Nvidia AWRDACPI 42302E31 AWRD 00000000) [ 0.000000] ACPI: Local APIC address 0xfee00000 [ 0.000000] 647MB HIGHMEM available. [ 0.000000] 887MB LOWMEM available. [ 0.000000] mapped low ram: 0 - 377fe000 [ 0.000000] low ram: 0 - 377fe000 [ 0.000000] node 0 low ram: 00000000 - 377fe000 [ 0.000000] node 0 bootmap 00011000 - 00017f00 [ 0.000000] (9 early reservations) ==> bootmem [0000000000 - 00377fe000] [ 0.000000] #0 [0000000000 - 0000001000] BIOS data page ==> [0000000000 - 0000001000] [ 0.000000] #1 [0000001000 - 0000002000] EX TRAMPOLINE ==> [0000001000 - 0000002000] [ 0.000000] #2 [0000006000 - 0000007000] TRAMPOLINE ==> [0000006000 - 0000007000] [ 0.000000] #3 [0000100000 - 00008d9e98] TEXT DATA BSS ==> [0000100000 - 00008d9e98] [ 0.000000] #4 [000009f000 - 0000100000] BIOS reserved ==> [000009f000 - 0000100000] [ 0.000000] #5 [00008da000 - 00008dd08c] BRK ==> [00008da000 - 00008dd08c] [ 0.000000] #6 [0000010000 - 0000011000] PGTABLE ==> [0000010000 - 0000011000] [ 0.000000] #7 [00008de000 - 00015a4514] NEW RAMDISK ==> [00008de000 - 00015a4514] [ 0.000000] #8 [0000011000 - 0000018000] BOOTMAP ==> [0000011000 - 0000018000] [ 0.000000] Zone PFN ranges: [ 0.000000] DMA 0x00000010 -> 0x00001000 [ 0.000000] Normal 0x00001000 -> 0x000377fe [ 0.000000] HighMem 0x000377fe -> 0x0005fff0 [ 0.000000] Movable zone start PFN for each node [ 0.000000] early_node_map[2] active PFN ranges [ 0.000000] 0: 0x00000010 -> 0x000000a0 [ 0.000000] 0: 0x00000100 -> 0x0005fff0 [ 0.000000] On node 0 totalpages: 393088 [ 0.000000] free_area_init_node: node 0, pgdat c0798720, node_mem_map c15a6200 [ 0.000000] DMA zone: 32 pages used for memmap [ 0.000000] DMA zone: 0 pages reserved [ 0.000000] DMA zone: 3952 pages, LIFO batch:0 [ 0.000000] Normal zone: 1744 pages used for memmap [ 0.000000] Normal zone: 221486 pages, LIFO batch:31 [ 0.000000] HighMem zone: 1296 pages used for memmap [ 0.000000] HighMem zone: 164578 pages, LIFO batch:31 [ 0.000000] Using APIC driver default [ 0.000000] Nvidia board detected. Ignoring ACPI timer override. [ 0.000000] If you got timer trouble try acpi_use_timer_override [ 0.000000] ACPI: PM-Timer IO Port: 0x4008 [ 0.000000] ACPI: Local APIC address 0xfee00000 [ 0.000000] ACPI: LAPIC (acpi_id[0x00] lapic_id[0x00] enabled) [ 0.000000] ACPI: LAPIC_NMI (acpi_id[0x00] high edge lint[0x1]) [ 0.000000] ACPI: IOAPIC (id[0x02] address[0xfec00000] gsi_base[0]) [ 0.000000] IOAPIC[0]: apic_id 2, version 17, address 0xfec00000, GSI 0-23 [ 0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 0 global_irq 2 dfl dfl) [ 0.000000] ACPI: BIOS IRQ0 pin2 override ignored. [ 0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 9 global_irq 9 high level) [ 0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 14 global_irq 14 high edge) [ 0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 15 global_irq 15 high edge) [ 0.000000] ACPI: IRQ9 used by override. [ 0.000000] ACPI: IRQ14 used by override. [ 0.000000] ACPI: IRQ15 used by override. [ 0.000000] Using ACPI (MADT) for SMP configuration information [ 0.000000] SMP: Allowing 1 CPUs, 0 hotplug CPUs [ 0.000000] nr_irqs_gsi: 24 [ 0.000000] PM: Registered nosave memory: 00000000000a0000 - 00000000000f0000 [ 0.000000] PM: Registered nosave memory: 00000000000f0000 - 0000000000100000 [ 0.000000] Allocating PCI resources starting at 60000000 (gap: 60000000:9ec00000) [ 0.000000] Booting paravirtualized kernel on bare hardware [ 0.000000] NR_CPUS:8 nr_cpumask_bits:8 nr_cpu_ids:1 nr_node_ids:1 [ 0.000000] PERCPU: Embedded 14 pages/cpu @c2400000 s36024 r0 d21320 u4194304 [ 0.000000] pcpu-alloc: s36024 r0 d21320 u4194304 alloc=1*4194304 [ 0.000000] pcpu-alloc: [0] 0 [ 0.000000] Built 1 zonelists in Zone order, mobility grouping on. Total pages: 390016 [ 0.000000] Kernel command line: root=UUID=ad296f33-5e9a-4109-8265-6631f750be25 ro quiet splash [ 0.000000] PID hash table entries: 4096 (order: 2, 16384 bytes) [ 0.000000] Dentry cache hash table entries: 131072 (order: 7, 524288 bytes) [ 0.000000] Inode-cache hash table entries: 65536 (order: 6, 262144 bytes) [ 0.000000] Enabling fast FPU save and restore... done. [ 0.000000] Enabling unmasked SIMD FPU exception support... done. [ 0.000000] Initializing CPU#0 [ 0.000000] allocated 7863680 bytes of page_cgroup [ 0.000000] please try 'cgroup_disable=memory' option if you don't want memory cgroups [ 0.000000] Initializing HighMem for node 0 (000377fe:0005fff0) [ 0.000000] Memory: 1529380k/1572800k available (4673k kernel code, 42016k reserved, 2121k data, 656k init, 663496k highmem) [ 0.000000] virtual kernel memory layout: [ 0.000000] fixmap : 0xfff1d000 - 0xfffff000 ( 904 kB) [ 0.000000] pkmap : 0xff800000 - 0xffc00000 (4096 kB) [ 0.000000] vmalloc : 0xf7ffe000 - 0xff7fe000 ( 120 MB) [ 0.000000] lowmem : 0xc0000000 - 0xf77fe000 ( 887 MB) [ 0.000000] .init : 0xc07a3000 - 0xc0847000 ( 656 kB) [ 0.000000] .data : 0xc0590663 - 0xc07a2e48 (2121 kB) [ 0.000000] .text : 0xc0100000 - 0xc0590663 (4673 kB) [ 0.000000] Checking if this processor honours the WP bit even in supervisor mode...Ok. [ 0.000000] SLUB: Genslabs=13, HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1 [ 0.000000] Hierarchical RCU implementation. [ 0.000000] NR_IRQS:2304 nr_irqs:256 [ 0.000000] Console: colour VGA+ 80x25 [ 0.000000] console [tty0] enabled [ 0.000000] Fast TSC calibration using PIT [ 0.000000] Detected 1920.694 MHz processor. [ 0.008006] Calibrating delay loop (skipped), value calculated using timer frequency.. 3841.38 BogoMIPS (lpj=7682776) [ 0.008032] Security Framework initialized [ 0.008066] AppArmor: AppArmor initialized [ 0.008077] Mount-cache hash table entries: 512 [ 0.008244] Initializing cgroup subsys ns [ 0.008249] Initializing cgroup subsys cpuacct [ 0.008254] Initializing cgroup subsys memory [ 0.008266] Initializing cgroup subsys devices [ 0.008270] Initializing cgroup subsys freezer [ 0.008272] Initializing cgroup subsys net_cls [ 0.008296] CPU: L1 I Cache: 64K (64 bytes/line), D cache 64K (64 bytes/line) [ 0.008300] CPU: L2 Cache: 512K (64 bytes/line) [ 0.008305] mce: CPU supports 4 MCE banks [ 0.008326] Performance Events: AMD PMU driver. [ 0.008334] ... version: 0 [ 0.008336] ... bit width: 48 [ 0.008338] ... generic registers: 4 [ 0.008341] ... value mask: 0000ffffffffffff [ 0.008343] ... max period: 00007fffffffffff [ 0.008346] ... fixed-purpose events: 0 [ 0.008348] ... event mask: 000000000000000f [ 0.008353] Checking 'hlt' instruction... OK. [ 0.024560] SMP alternatives: switching to UP code [ 0.030543] Freeing SMP alternatives: 19k freed [ 0.030569] ACPI: Core revision 20090903 [ 0.039392] ftrace: converting mcount calls to 0f 1f 44 00 00 [ 0.039401] ftrace: allocating 21771 entries in 43 pages [ 0.040135] Enabling APIC mode: Flat. Using 1 I/O APICs [ 0.040523] ..TIMER: vector=0x30 apic1=0 pin1=0 apic2=-1 pin2=-1 [ 0.081544] CPU0: AMD Athlon(tm) XP 2600+ stepping 00 [ 0.084001] Brought up 1 CPUs [ 0.084001] Total of 1 processors activated (3841.38 BogoMIPS). [ 0.084001] CPU0 attaching NULL sched-domain. [ 0.084001] devtmpfs: initialized [ 0.084001] regulator: core version 0.5 [ 0.084001] Time: 3:20:39 Date: 06/16/10 [ 0.084001] NET: Registered protocol family 16 [ 0.084001] EISA bus registered [ 0.084001] ACPI: bus type pci registered [ 0.116103] PCI: PCI BIOS revision 2.10 entry at 0xfb450, last bus=2 [ 0.116106] PCI: Using configuration type 1 for base access [ 0.117189] bio: create slab at 0 [ 0.118180] ACPI: EC: Look up EC in DSDT [ 0.125890] ACPI: Interpreter enabled [ 0.125896] ACPI: (supports S0 S1 S4 S5) [ 0.125924] ACPI: Using IOAPIC for interrupt routing [ 0.134917] ACPI: No dock devices found. [ 0.135041] ACPI: PCI Root Bridge [PCI0] (0000:00) [ 0.135091] pci 0000:00:00.0: reg 10 32bit mmio pref: [0xd0000000-0xd7ffffff] [ 0.135109] pci 0000:00:00.0: nForce2 C1 Halt Disconnect fixup [ 0.135325] pci 0000:00:01.1: reg 10 io port: [0xe400-0xe41f] [ 0.135362] pci 0000:00:01.1: PME# supported from D3hot D3cold [ 0.135366] pci 0000:00:01.1: PME# disabled [ 0.135399] pci 0000:00:02.0: reg 10 32bit mmio: [0xe2004000-0xe2004fff] [ 0.135435] pci 0000:00:02.0: supports D1 D2 [ 0.135438] pci 0000:00:02.0: PME# supported from D0 D1 D2 D3hot D3cold [ 0.135442] pci 0000:00:02.0: PME# disabled [ 0.135470] pci 0000:00:02.1: reg 10 32bit mmio: [0xe2005000-0xe2005fff] [ 0.135505] pci 0000:00:02.1: supports D1 D2 [ 0.135508] pci 0000:00:02.1: PME# supported from D0 D1 D2 D3hot D3cold [ 0.135512] pci 0000:00:02.1: PME# disabled [ 0.135546] pci 0000:00:02.2: reg 10 32bit mmio: [0xe2000000-0xe20000ff] [ 0.135588] pci 0000:00:02.2: supports D1 D2 [ 0.135591] pci 0000:00:02.2: PME# supported from D0 D1 D2 D3hot D3cold [ 0.135595] pci 0000:00:02.2: PME# disabled [ 0.135631] pci 0000:00:04.0: reg 10 32bit mmio: [0xe2001000-0xe2001fff] [ 0.135637] pci 0000:00:04.0: reg 14 io port: [0xd000-0xd007] [ 0.135669] pci 0000:00:04.0: supports D1 D2 [ 0.135672] pci 0000:00:04.0: PME# supported from D0 D1 D2 D3hot D3cold [ 0.135676] pci 0000:00:04.0: PME# disabled [ 0.135705] pci 0000:00:06.0: reg 10 io port: [0xd400-0xd4ff] [ 0.135711] pci 0000:00:06.0: reg 14 io port: [0xd800-0xd87f] [ 0.135718] pci 0000:00:06.0: reg 18 32bit mmio: [0xe2002000-0xe2002fff] [ 0.135747] pci 0000:00:06.0: supports D1 D2 [ 0.135814] pci 0000:00:09.0: reg 20 io port: [0xf000-0xf00f] [ 0.135968] pci 0000:02:00.0: reg 10 32bit mmio pref: [0xd8000000-0xdfffffff] [ 0.135976] pci 0000:02:00.0: reg 14 io port: [0xc000-0xc0ff] [ 0.135982] pci 0000:02:00.0: reg 18 32bit mmio: [0xe1000000-0xe100ffff] [ 0.136006] pci 0000:02:00.0: reg 30 32bit mmio pref: [0x000000-0x01ffff] [ 0.136027] pci 0000:02:00.0: supports D1 D2 [ 0.136066] pci 0000:00:1e.0: bridge io port: [0xc000-0xcfff] [ 0.136070] pci 0000:00:1e.0: bridge 32bit mmio: [0xe0000000-0xe1ffffff] [ 0.136075] pci 0000:00:1e.0: bridge 32bit mmio pref: [0xd8000000-0xdfffffff] [ 0.136085] pci_bus 0000:00: on NUMA node 0 [ 0.136091] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0._PRT] [ 0.136251] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.HUB0._PRT] [ 0.136521] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.AGPB._PRT] [ 0.194017] ACPI: PCI Interrupt Link [LNK1] (IRQs 3 4 5 6 7 10 11 *12 14 15) [ 0.194183] ACPI: PCI Interrupt Link [LNK2] (IRQs 3 4 5 6 7 10 11 12 14 15) *0, disabled. [ 0.194349] ACPI: PCI Interrupt Link [LNK3] (IRQs 3 4 5 6 7 10 11 12 14 15) *0, disabled. [ 0.194517] ACPI: PCI Interrupt Link [LNK4] (IRQs 3 4 5 6 7 *10 11 12 14 15) [ 0.194683] ACPI: PCI Interrupt Link [LNK5] (IRQs 3 4 5 6 7 10 11 12 14 15) *0, disabled. [ 0.194852] ACPI: PCI Interrupt Link [LUBA] (IRQs 3 4 5 6 7 *10 11 12 14 15) [ 0.195031] ACPI: PCI Interrupt Link [LUBB] (IRQs 3 4 5 6 7 10 *11 12 14 15) [ 0.195198] ACPI: PCI Interrupt Link [LMAC] (IRQs 3 4 5 6 7 10 *11 12 14 15) [ 0.195367] ACPI: PCI Interrupt Link [LAPU] (IRQs 3 4 5 6 7 10 11 12 14 15) *0, disabled. [ 0.195534] ACPI: PCI Interrupt Link [LACI] (IRQs 3 4 5 6 7 10 11 *12 14 15) [ 0.195703] ACPI: PCI Interrupt Link [LMCI] (IRQs 3 4 5 6 7 10 11 12 14 15) *0, disabled. [ 0.195868] ACPI: PCI Interrupt Link [LSMB] (IRQs 3 4 5 6 7 10 11 12 14 15) *0, disabled. [ 0.196040] ACPI: PCI Interrupt Link [LUB2] (IRQs 3 4 *5 6 7 10 11 12 14 15) [ 0.196212] ACPI: PCI Interrupt Link [LFIR] (IRQs 3 4 5 6 7 10 11 12 14 15) *0, disabled. [ 0.196377] ACPI: PCI Interrupt Link [L3CM] (IRQs 3 4 5 6 7 10 11 12 14 15) *0, disabled. [ 0.196541] ACPI: PCI Interrupt Link [LIDE] (IRQs 3 4 5 6 7 10 11 12 14 15) *0, disabled. [ 0.196691] ACPI: PCI Interrupt Link [APC1] (IRQs *16) [ 0.196824] ACPI: PCI Interrupt Link [APC2] (IRQs *17), disabled. [ 0.196956] ACPI: PCI Interrupt Link [APC3] (IRQs *18), disabled. [ 0.197088] ACPI: PCI Interrupt Link [APC4] (IRQs *19) [ 0.197220] ACPI: PCI Interrupt Link [APC5] (IRQs *16), disabled. [ 0.197415] ACPI: PCI Interrupt Link [APCF] (IRQs 20 21 22) *0 [ 0.197611] ACPI: PCI Interrupt Link [APCG] (IRQs 20 21 22) *0 [ 0.197805] ACPI: PCI Interrupt Link [APCH] (IRQs 20 21 22) *0 [ 0.197999] ACPI: PCI Interrupt Link [APCI] (IRQs 20 21 22) *0, disabled. [ 0.198194] ACPI: PCI Interrupt Link [APCJ] (IRQs 20 21 22) *0 [ 0.198388] ACPI: PCI Interrupt Link [APCK] (IRQs 20 21 22) *0, disabled. [ 0.198522] ACPI: PCI Interrupt Link [APCS] (IRQs *23), disabled. [ 0.198715] ACPI: PCI Interrupt Link [APCL] (IRQs 20 21 22) *0 [ 0.198909] ACPI: PCI Interrupt Link [APCM] (IRQs 20 21 22) *0, disabled. [ 0.199114] ACPI: PCI Interrupt Link [AP3C] (IRQs 20 21 22) *0, disabled. [ 0.199309] ACPI: PCI Interrupt Link [APCZ] (IRQs 20 21 22) *0, disabled. [ 0.199464] vgaarb: device added: PCI:0000:02:00.0,decodes=io+mem,owns=io+mem,locks=none [ 0.199468] vgaarb: loaded [ 0.199619] SCSI subsystem initialized [ 0.199724] libata version 3.00 loaded. [ 0.199830] usbcore: registered new interface driver usbfs [ 0.199845] usbcore: registered new interface driver hub [ 0.199881] usbcore: registered new device driver usb [ 0.200058] ACPI: WMI: Mapper loaded [ 0.200060] PCI: Using ACPI for IRQ routing [ 0.200220] NetLabel: Initializing [ 0.200223] NetLabel: domain hash size = 128 [ 0.200225] NetLabel: protocols = UNLABELED CIPSOv4 [ 0.200242] NetLabel: unlabeled traffic allowed by default [ 0.200278] Switching to clocksource tsc [ 0.202734] AppArmor: AppArmor Filesystem Enabled [ 0.202767] pnp: PnP ACPI init [ 0.202793] ACPI: bus type pnp registered [ 0.208236] pnp: PnP ACPI: found 14 devices [ 0.208240] ACPI: ACPI bus type pnp unregistered [ 0.208244] PnPBIOS: Disabled by ACPI PNP [ 0.208260] system 00:00: ioport range 0x4000-0x407f has been reserved [ 0.208264] system 00:00: ioport range 0x4080-0x40ff has been reserved [ 0.208268] system 00:00: ioport range 0x4400-0x447f has been reserved [ 0.208271] system 00:00: ioport range 0x4480-0x44ff has been reserved [ 0.208275] system 00:00: ioport range 0x4200-0x427f has been reserved [ 0.208278] system 00:00: ioport range 0x4280-0x42ff has been reserved [ 0.208286] system 00:01: ioport range 0x5000-0x503f has been reserved [ 0.208289] system 00:01: ioport range 0x5100-0x513f has been reserved [ 0.208297] system 00:02: iomem range 0xf0000-0xf3fff could not be reserved [ 0.208301] system 00:02: iomem range 0xf4000-0xf7fff could not be reserved [ 0.208306] system 00:02: iomem range 0xf8000-0xfbfff could not be reserved [ 0.208309] system 00:02: iomem range 0xfc000-0xfffff could not be reserved [ 0.208313] system 00:02: iomem range 0x5fff0000-0x5fffffff could not be reserved [ 0.208318] system 00:02: iomem range 0xffff0000-0xffffffff has been reserved [ 0.208322] system 00:02: iomem range 0x0-0x9ffff could not be reserved [ 0.208326] system 00:02: iomem range 0x100000-0x5ffeffff could not be reserved [ 0.208330] system 00:02: iomem range 0xfec00000-0xfec00fff could not be reserved [ 0.208334] system 00:02: iomem range 0xfee00000-0xfee00fff has been reserved [ 0.208346] system 00:04: ioport range 0xb78-0xb7b has been reserved [ 0.208350] system 00:04: ioport range 0xf78-0xf7b has been reserved [ 0.208353] system 00:04: ioport range 0xa78-0xa7b has been reserved [ 0.208357] system 00:04: ioport range 0xe78-0xe7b has been reserved [ 0.208360] system 00:04: ioport range 0xbbc-0xbbf has been reserved [ 0.208370] system 00:04: ioport range 0xfbc-0xfbf has been reserved [ 0.208374] system 00:04: ioport range 0x4d0-0x4d1 has been reserved [ 0.208377] system 00:04: ioport range 0x294-0x297 has been reserved [ 0.243130] pci 0000:00:08.0: PCI bridge, secondary bus 0000:01 [ 0.243133] pci 0000:00:08.0: IO window: disabled [ 0.243139] pci 0000:00:08.0: MEM window: disabled [ 0.243144] pci 0000:00:08.0: PREFETCH window: disabled [ 0.243154] pci 0000:00:1e.0: PCI bridge, secondary bus 0000:02 [ 0.243157] pci 0000:00:1e.0: IO window: 0xc000-0xcfff [ 0.243163] pci 0000:00:1e.0: MEM window: 0xe0000000-0xe1ffffff [ 0.243167] pci 0000:00:1e.0: PREFETCH window: 0xd8000000-0xdfffffff [ 0.243181] pci 0000:00:08.0: setting latency timer to 64 [ 0.243190] pci_bus 0000:00: resource 0 io: [0x00-0xffff] [ 0.243194] pci_bus 0000:00: resource 1 mem: [0x000000-0xffffffff] [ 0.243197] pci_bus 0000:02: resource 0 io: [0xc000-0xcfff] [ 0.243201] pci_bus 0000:02: resource 1 mem: [0xe0000000-0xe1ffffff] [ 0.243204] pci_bus 0000:02: resource 2 pref mem [0xd8000000-0xdfffffff] [ 0.243247] NET: Registered protocol family 2 [ 0.243355] IP route cache hash table entries: 32768 (order: 5, 131072 bytes) [ 0.243817] TCP established hash table entries: 131072 (order: 8, 1048576 bytes) [ 0.245105] TCP bind hash table entries: 65536 (order: 7, 524288 bytes) [ 0.245750] TCP: Hash tables configured (established 131072 bind 65536) [ 0.245753] TCP reno registered [ 0.245876] NET: Registered protocol family 1 [ 0.279738] pci 0000:02:00.0: Boot video device [ 0.279976] cpufreq-nforce2: Detected nForce2 chipset revision C1 [ 0.279979] cpufreq-nforce2: FSB changing is maybe unstable and can lead to crashes and data loss. [ 0.279988] cpufreq-nforce2: FSB currently at 167 MHz, FID 11.5 [ 0.280055] Scanning for low memory corruption every 60 seconds [ 0.280186] audit: initializing netlink socket (disabled) [ 0.280203] type=2000 audit(1276658438.279:1): initialized [ 0.290365] Trying to unpack rootfs image as initramfs... [ 0.304123] highmem bounce pool size: 64 pages [ 0.304131] HugeTLB registered 4 MB page size, pre-allocated 0 pages [ 0.306067] VFS: Disk quotas dquot_6.5.2 [ 0.306149] Dquot-cache hash table entries: 1024 (order 0, 4096 bytes) [ 0.306832] fuse init (API version 7.13) [ 0.306934] msgmni has been set to 1693 [ 0.312083] alg: No test for stdrng (krng) [ 0.312163] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 253) [ 0.312167] io scheduler noop registered [ 0.312170] io scheduler anticipatory registered [ 0.312172] io scheduler deadline registered [ 0.312228] io scheduler cfq registered (default) [ 0.312370] pci_hotplug: PCI Hot Plug PCI Core version: 0.5 [ 0.312398] pciehp: PCI Express Hot Plug Controller Driver version: 0.4 [ 0.312535] input: Power Button as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0C:00/input/input0 [ 0.312541] ACPI: Power Button [PWRB] [ 0.312614] input: Power Button as /devices/LNXSYSTM:00/LNXPWRBN:00/input/input1 [ 0.312617] ACPI: Power Button [PWRF] [ 0.312676] fan PNP0C0B:00: registered as cooling_device0 [ 0.312682] ACPI: Fan [FAN] (on) [ 0.313122] processor LNXCPU:00: registered as cooling_device1 [ 0.318096] thermal LNXTHERM:01: registered as thermal_zone0 [ 0.318106] ACPI: Thermal Zone [THRM] (43 C) [ 0.323841] isapnp: Scanning for PnP cards... [ 0.331111] Serial: 8250/16550 driver, 4 ports, IRQ sharing enabled [ 0.331229] serial8250: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A [ 0.331340] serial8250: ttyS1 at I/O 0x2f8 (irq = 3) is a 16550A [ 0.331681] 00:0a: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A [ 0.331845] 00:0b: ttyS1 at I/O 0x2f8 (irq = 3) is a 16550A [ 0.333121] brd: module loaded [ 0.333688] loop: module loaded [ 0.333798] input: Macintosh mouse button emulation as /devices/virtual/input/input2 [ 0.334027] pata_acpi 0000:00:09.0: setting latency timer to 64 [ 0.334406] Fixed MDIO Bus: probed [ 0.334448] PPP generic driver version 2.4.2 [ 0.334496] tun: Universal TUN/TAP device driver, 1.6 [ 0.334499] tun: (C) 1999-2004 Max Krasnyansky [ 0.334593] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver [ 0.334973] ACPI: PCI Interrupt Link [APCL] enabled at IRQ 22 [ 0.334980] alloc irq_desc for 22 on node -1 [ 0.334983] alloc kstat_irqs on node -1 [ 0.334993] ehci_hcd 0000:00:02.2: PCI INT C -> Link[APCL] -> GSI 22 (level, high) -> IRQ 22 [ 0.335018] ehci_hcd 0000:00:02.2: setting latency timer to 64 [ 0.335022] ehci_hcd 0000:00:02.2: EHCI Host Controller [ 0.335066] ehci_hcd 0000:00:02.2: new USB bus registered, assigned bus number 1 [ 0.335102] ehci_hcd 0000:00:02.2: debug port 1 [ 0.335112] ehci_hcd 0000:00:02.2: cache line size of 64 is not supported [ 0.335132] ehci_hcd 0000:00:02.2: irq 22, io mem 0xe2000000 [ 0.383599] ehci_hcd 0000:00:02.2: USB 2.0 started, EHCI 1.00 [ 0.383790] usb usb1: configuration #1 chosen from 1 choice [ 0.383835] hub 1-0:1.0: USB hub found [ 0.383851] hub 1-0:1.0: 6 ports detected [ 0.383930] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver [ 0.384314] ACPI: PCI Interrupt Link [APCF] enabled at IRQ 21 [ 0.384321] alloc irq_desc for 21 on node -1 [ 0.384324] alloc kstat_irqs on node -1 [ 0.384333] ohci_hcd 0000:00:02.0: PCI INT A -> Link[APCF] -> GSI 21 (level, high) -> IRQ 21 [ 0.384353] ohci_hcd 0000:00:02.0: setting latency timer to 64 [ 0.384357] ohci_hcd 0000:00:02.0: OHCI Host Controller [ 0.384417] ohci_hcd 0000:00:02.0: new USB bus registered, assigned bus number 2 [ 0.384452] ohci_hcd 0000:00:02.0: irq 21, io mem 0xe2004000 [ 0.473520] usb usb2: configuration #1 chosen from 1 choice [ 0.473560] hub 2-0:1.0: USB hub found [ 0.473577] hub 2-0:1.0: 3 ports detected [ 0.474043] ACPI: PCI Interrupt Link [APCG] enabled at IRQ 20 [ 0.474050] alloc irq_desc for 20 on node -1 [ 0.474053] alloc kstat_irqs on node -1 [ 0.474063] ohci_hcd 0000:00:02.1: PCI INT B -> Link[APCG] -> GSI 20 (level, high) -> IRQ 20 [ 0.474085] ohci_hcd 0000:00:02.1: setting latency timer to 64 [ 0.474088] ohci_hcd 0000:00:02.1: OHCI Host Controller [ 0.474141] ohci_hcd 0000:00:02.1: new USB bus registered, assigned bus number 3 [ 0.474177] ohci_hcd 0000:00:02.1: irq 20, io mem 0xe2005000 [ 0.561824] usb usb3: configuration #1 chosen from 1 choice [ 0.561864] hub 3-0:1.0: USB hub found [ 0.561881] hub 3-0:1.0: 3 ports detected [ 0.561952] uhci_hcd: USB Universal Host Controller Interface driver [ 0.562083] PNP: No PS/2 controller found. Probing ports directly. [ 0.827977] serio: i8042 KBD port at 0x60,0x64 irq 1 [ 0.828156] mice: PS/2 mouse device common for all mice [ 0.828296] rtc_cmos 00:06: RTC can wake from S4 [ 0.828347] rtc_cmos 00:06: rtc core: registered rtc_cmos as rtc0 [ 0.828376] rtc0: alarms up to one year, y3k, 242 bytes nvram [ 0.828498] device-mapper: uevent: version 1.0.3 [ 0.832024] device-mapper: ioctl: 4.15.0-ioctl (2009-04-01) initialised: dm-devel@redhat.com [ 0.835867] device-mapper: multipath: version 1.1.0 loaded [ 0.835872] device-mapper: multipath round-robin: version 1.0.0 loaded [ 0.836110] EISA: Probing bus 0 at eisa.0 [ 0.836133] Cannot allocate resource for EISA slot 4 [ 0.836136] Cannot allocate resource for EISA slot 5 [ 0.836153] EISA: Detected 0 cards. [ 0.836239] cpuidle: using governor ladder [ 0.836241] cpuidle: using governor menu [ 0.836734] TCP cubic registered [ 0.836916] NET: Registered protocol family 10 [ 0.837419] lo: Disabled Privacy Extensions [ 0.837766] NET: Registered protocol family 17 [ 0.837806] powernow-k8: Processor cpuid 6a0 not supported [ 0.837828] Using IPI No-Shortcut mode [ 0.837953] PM: Resume from disk failed. [ 0.837976] registered taskstats version 1 [ 0.838198] Magic number: 14:786:310 [ 0.838234] tty tty39: hash matches [ 0.838315] rtc_cmos 00:06: setting system clock to 2010-06-16 03:20:39 UTC (1276658439) [ 0.838319] BIOS EDD facility v0.16 2004-Jun-25, 0 devices found [ 0.838321] EDD information not available. [ 1.003736] isapnp: No Plug & Play device found [ 1.056021] usb 2-2: new low speed USB device using ohci_hcd and address 2 [ 1.073679] Freeing initrd memory: 13081k freed [ 1.088946] Freeing unused kernel memory: 656k freed [ 1.089822] Write protecting the kernel text: 4676k [ 1.089858] Write protecting the kernel read-only data: 1840k [ 1.115203] udev: starting version 151 [ 1.271716] usb 2-2: configuration #1 chosen from 1 choice [ 1.331636] Floppy drive(s): fd0 is 1.44M [ 1.355802] FDC 0 is a post-1991 82077 [ 1.378370] forcedeth: Reverse Engineered nForce ethernet driver. Version 0.64. [ 1.378744] ACPI: PCI Interrupt Link [APCH] enabled at IRQ 22 [ 1.378752] forcedeth 0000:00:04.0: PCI INT A -> Link[APCH] -> GSI 22 (level, high) -> IRQ 22 [ 1.378759] forcedeth 0000:00:04.0: setting latency timer to 64 [ 1.378816] nv_probe: set workaround bit for reversed mac addr [ 1.378820] forcedeth 0000:00:04.0: Invalid Mac address detected: 19:21:23:45:67:89 [ 1.378823] forcedeth 0000:00:04.0: Please complain to your hardware vendor. Switching to a random MAC. [ 1.380162] Linux agpgart interface v0.103 [ 1.400825] usbcore: registered new interface driver hiddev [ 1.401294] usbcore: registered new interface driver usbhid [ 1.401398] usbhid: v2.6:USB HID core driver [ 1.410286] input: MLK 2.4Ghz wireless combo sets as /devices/pci0000:00/0000:00:02.0/usb2/2-2/2-2:1.0/input/input3 [ 1.410500] sunplus 0003:04FC:05D8.0001: input,hidraw0: USB HID v1.00 Keyboard [MLK 2.4Ghz wireless combo sets] on usb-0000:00:02.0-2/input0 [ 1.418609] sunplus 0003:04FC:05D8.0002: fixing up Sunplus Wireless Desktop report descriptor [ 1.420077] input: MLK 2.4Ghz wireless combo sets as /devices/pci0000:00/0000:00:02.0/usb2/2-2/2-2:1.1/input/input4 [ 1.420601] sunplus 0003:04FC:05D8.0002: input,hiddev96,hidraw1: USB HID v1.00 Mouse [MLK 2.4Ghz wireless combo sets] on usb-0000:00:02.0-2/input1 [ 1.511797] [drm] Initialized drm 1.1.0 20060810 [ 1.562319] [drm] radeon defaulting to kernel modesetting. [ 1.562323] [drm] radeon kernel modesetting enabled. [ 1.562611] ACPI: PCI Interrupt Link [APC4] enabled at IRQ 19 [ 1.562618] alloc irq_desc for 19 on node -1 [ 1.562621] alloc kstat_irqs on node -1 [ 1.562631] radeon 0000:02:00.0: PCI INT A -> Link[APC4] -> GSI 19 (level, high) -> IRQ 19 [ 1.566225] [drm] radeon: Initializing kernel modesetting. [ 1.566319] [drm] register mmio base: 0xE1000000 [ 1.566322] [drm] register mmio size: 65536 [ 1.566932] [drm] GPU reset succeed (RBBM_STATUS=0x00000140) [ 1.566962] BUG: unable to handle kernel NULL pointer dereference at 00000040 [ 1.567107] IP: [] radeon_agp_init+0x19/0x3d0 [radeon] [ 1.567268] *pde = 00000000 [ 1.567359] Oops: 0000 [#1] SMP [ 1.567493] last sysfs file: /sys/module/usbhid/initstate [ 1.567546] Modules linked in: radeon(+) ttm drm_kms_helper drm hid_sunplus usbhid hid nvidia_agp(+) i2c_algo_bit forcedeth(+) pata_amd(+) agpgart floppy [ 1.568017] [ 1.568017] Pid: 228, comm: modprobe Not tainted (2.6.32-22-generic #36-Ubuntu) [ 1.568017] EIP: 0060:[] EFLAGS: 00010282 CPU: 0 [ 1.568017] EIP is at radeon_agp_init+0x19/0x3d0 [radeon] [ 1.568017] EAX: f69a2c00 EBX: f68f5000 ECX: d8000000 EDX: 00000000 [ 1.568017] ESI: f69a2c00 EDI: 00000001 EBP: f69e1d48 ESP: f69e1cf4 [ 1.568017] DS: 007b ES: 007b FS: 00d8 GS: 00e0 SS: 0068 [ 1.568017] Process modprobe (pid: 228, ti=f69e0000 task=f6998cd0 task.ti=f69e0000) [ 1.568017] Stack: [ 1.568017] f69e1d00 00000292 00000000 f69e1d28 c035d2b0 00000001 f69e1d18 0000000e [ 1.568017] <0> 00000292 00000000 f68f5000 04000000 00000001 f69e1d40 f8333f85 f69e1d37 [ 1.568017] <0> 009a2c00 f68f5000 f68f5000 f69a2c00 00000001 f69e1d54 f833186f f68f5000 [ 1.568017] Call Trace: [ 1.568017] [] ? pci_bus_read_config_byte+0x60/0x70 [ 1.568017] [] ? r100_get_accessible_vram+0x55/0x150 [radeon] [ 1.568017] [] ? r100_mc_init+0x9f/0xe0 [radeon] [ 1.568017] [] ? r100_init+0xd2/0x270 [radeon] [ 1.568017] [] ? _spin_lock_irqsave+0x2f/0x50 [ 1.568017] [] ? vga_client_register+0x6b/0x80 [ 1.568017] [] ? radeon_device_init+0x22f/0x2f0 [radeon] [ 1.568017] [] ? radeon_vga_set_decode+0x0/0x30 [radeon] [ 1.568017] [] ? radeon_driver_load_kms+0x7a/0x190 [radeon] [ 1.568017] [] ? drm_get_dev+0x125/0x230 [drm] [ 1.568017] [] ? sysfs_addrm_start+0x60/0xa0 [ 1.568017] [] ? radeon_pci_probe+0x12/0x17f [radeon] [ 1.568017] [] ? local_pci_probe+0x13/0x20 [ 1.568017] [] ? pci_device_probe+0x68/0x90 [ 1.568017] [] ? really_probe+0x4d/0x140 [ 1.568017] [] ? pm_runtime_barrier+0x4e/0xc0 [ 1.568017] [] ? driver_probe_device+0x3c/0x60 [ 1.568017] [] ? __driver_attach+0x81/0x90 [ 1.568017] [] ? bus_for_each_dev+0x53/0x80 [ 1.568017] [] ? driver_attach+0x1e/0x20 [ 1.568017] [] ? __driver_attach+0x0/0x90 [ 1.568017] [] ? bus_add_driver+0xd5/0x280 [ 1.568017] [] ? pci_device_remove+0x0/0x40 [ 1.568017] [] ? driver_register+0x6a/0x130 [ 1.568017] [] ? __pci_register_driver+0x45/0xb0 [ 1.568017] [] ? drm_init+0xf3/0x100 [drm] [ 1.568017] [] ? radeon_init+0xdf/0xe1 [radeon] [ 1.568017] [] ? do_one_initcall+0x31/0x190 [ 1.568017] [] ? radeon_init+0x0/0xe1 [radeon] [ 1.568017] [] ? sys_init_module+0xb0/0x210 [ 1.568017] [] ? syscall_call+0x7/0xb [ 1.568017] Code: 66 90 e8 eb db e9 ff 5d 66 90 c3 8d b4 26 00 00 00 00 55 89 e5 57 56 53 83 ec 48 0f 1f 44 00 00 89 c3 8b 40 04 8b 90 28 02 00 00 <8b> 4a 40 85 c9 75 12 e8 2b db e9 ff 85 c0 89 c7 0f 85 51 03 00 [ 1.568017] EIP: [] radeon_agp_init+0x19/0x3d0 [radeon] SS:ESP 0068:f69e1cf4 [ 1.568017] CR2: 0000000000000040 [ 1.575252] ---[ end trace 85249e87c11fe23d ]--- [ 1.896879] forcedeth 0000:00:04.0: ifname eth0, PHY OUI 0x57d @ 1, addr 76:36:76:a0:57:7e [ 1.896953] forcedeth 0000:00:04.0: timirq lnktim desc-v1 [ 1.897036] pata_amd 0000:00:09.0: version 0.4.1 [ 1.897157] pata_amd 0000:00:09.0: setting latency timer to 64 [ 1.897825] scsi0 : pata_amd [ 1.898067] scsi1 : pata_amd [ 1.899122] ata1: PATA max UDMA/133 cmd 0x1f0 ctl 0x3f6 bmdma 0xf000 irq 14 [ 1.899184] ata2: PATA max UDMA/133 cmd 0x170 ctl 0x376 bmdma 0xf008 irq 15 [ 1.899378] agpgart: Detected NVIDIA nForce2 chipset [ 1.907747] agpgart-nvidia 0000:00:00.0: AGP aperture is 128M @ 0xd0000000 [ 2.124542] ata1.00: ATA-6: ST340014A, 3.16, max UDMA/100 [ 2.124603] ata1.00: 78125000 sectors, multi 16: LBA48 [ 2.124687] ata1: nv_mode_filter: 0x3f39f&0x3f39f->0x3f39f, BIOS=0x3f000 (0xc600c000) ACPI=0x3f01f (20:600:0x13) [ 2.156450] ata1.00: configured for UDMA/100 [ 2.156641] scsi 0:0:0:0: Direct-Access ATA ST340014A 3.16 PQ: 0 ANSI: 5 [ 2.156893] sd 0:0:0:0: Attached scsi generic sg0 type 0 [ 2.157331] sd 0:0:0:0: [sda] 78125000 512-byte logical blocks: (40.0 GB/37.2 GiB) [ 2.157463] sd 0:0:0:0: [sda] Write Protect is off [ 2.157522] sd 0:0:0:0: [sda] Mode Sense: 00 3a 00 00 [ 2.157612] sd 0:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA [ 2.157865] sda: sda1 sda2 < sda5 > [ 2.198320] sd 0:0:0:0: [sda] Attached SCSI disk [ 2.320344] ata2.00: ATAPI: COMPAQ DVD-ROM GD-8000, 0009, max UDMA/66 [ 2.320432] ata2: nv_mode_filter: 0x1f39f&0x739f->0x739f, BIOS=0x7000 (0xc600c000) ACPI=0x701f (60:600:0x13) [ 2.336277] ata2.00: configured for UDMA/33 [ 2.343260] scsi 1:0:0:0: CD-ROM COMPAQ DVD-ROM GD-8000 0009 PQ: 0 ANSI: 5 [ 2.356156] sr0: scsi3-mmc drive: 17x/40x cd/rw xa/form2 cdda tray [ 2.356217] Uniform CD-ROM driver Revision: 3.20 [ 2.356542] sr 1:0:0:0: Attached scsi CD-ROM sr0 [ 2.356749] sr 1:0:0:0: Attached scsi generic sg1 type 5 [ 2.900050] BUG: unable to handle kernel NULL pointer dereference at (null) [ 2.900204] IP: [] __mutex_lock_slowpath+0x8a/0x130 [ 2.900314] *pde = 5dfad067 [ 2.900412] Oops: 0002 [#2] SMP [ 2.900553] last sysfs file: /sys/kernel/uevent_seqnum [ 2.900613] Modules linked in: radeon(+) ttm drm_kms_helper drm hid_sunplus usbhid hid nvidia_agp i2c_algo_bit forcedeth pata_amd agpgart floppy [ 2.901289] [ 2.901345] Pid: 271, comm: plymouthd Tainted: G D (2.6.32-22-generic #36-Ubuntu) [ 2.901415] EIP: 0060:[] EFLAGS: 00010246 CPU: 0 [ 2.901474] EIP is at __mutex_lock_slowpath+0x8a/0x130 [ 2.901532] EAX: 00000000 EBX: f69a2e88 ECX: f69a2e90 EDX: f6b0fec0 [ 2.901592] ESI: f69a2e8c EDI: f69a2e98 EBP: f6b0fed8 ESP: f6b0feb4 [ 2.901651] DS: 007b ES: 007b FS: 00d8 GS: 00e0 SS: 0068 [ 2.901710] Process plymouthd (pid: 271, ti=f6b0e000 task=f6a4a670 task.ti=f6b0e000) [ 2.901777] Stack: [ 2.901830] 00000000 f69a2e90 f6a4a670 f69a2e90 00000000 f69a2c00 f69a2e88 f6819680 [ 2.902191] <0> f69a2e88 f6b0fee8 c058a485 f6819680 f6819680 f6b0fefc f81afa53 f6819680 [ 2.902644] <0> f68196e0 f69a2c00 f6b0ff44 f81a707f 00000001 f81b7265 f81b67c0 f81b87c4 [ 2.903148] Call Trace: [ 2.903206] [] ? mutex_lock+0x25/0x40 [ 2.903291] [] ? drm_fb_release+0x23/0x70 [drm] [ 2.903357] [] ? drm_release+0x3cf/0x490 [drm] [ 2.903419] [] ? __fput+0xdf/0x1f0 [ 2.903478] [] ? fput+0x1d/0x30 [ 2.903539] [] ? filp_close+0x4c/0x80 [ 2.903598] [] ? sys_close+0x75/0xc0 [ 2.903658] [] ? syscall_call+0x7/0xb [ 2.903715] Code: 18 63 7f bd 90 8d 74 26 00 8d 73 04 89 f0 e8 de 11 00 00 8d 55 e8 8d 43 08 89 45 e0 8b 43 0c 89 53 0c 8b 4d e0 89 45 ec 89 4d e8 <89> 10 8b 45 e4 ba ff ff ff ff 89 45 f0 89 d0 87 03 83 f8 01 74 [ 2.904007] EIP: [] __mutex_lock_slowpath+0x8a/0x130 SS:ESP 0068:f6b0feb4 [ 2.904007] CR2: 0000000000000000 [ 2.906806] ---[ end trace 85249e87c11fe23e ]--- [ 2.916790] xor: automatically using best checksumming function: pIII_sse [ 2.936007] pIII_sse : 1602.000 MB/sec [ 2.936064] xor: using function: pIII_sse (1602.000 MB/sec) [ 2.940053] device-mapper: dm-raid45: initialized v0.2594b [ 3.032322] EXT3-fs: INFO: recovery required on readonly filesystem. [ 3.032389] EXT3-fs: write access will be enabled during recovery. [ 7.132886] kjournald starting. Commit interval 5 seconds [ 7.132972] EXT3-fs: sda1: orphan cleanup on readonly fs [ 7.133037] ext3_orphan_cleanup: deleting unreferenced inode 2122721 [ 7.154789] ext3_orphan_cleanup: deleting unreferenced inode 2122720 [ 7.159625] ext3_orphan_cleanup: deleting unreferenced inode 2122719 [ 7.165046] ext3_orphan_cleanup: deleting unreferenced inode 2122716 [ 7.165121] ext3_orphan_cleanup: deleting unreferenced inode 2122714 [ 7.165196] ext3_orphan_cleanup: deleting unreferenced inode 2122704 [ 7.165266] ext3_orphan_cleanup: deleting unreferenced inode 2122703 [ 7.171569] ext3_orphan_cleanup: deleting unreferenced inode 2122701 [ 7.179147] ext3_orphan_cleanup: deleting unreferenced inode 2122700 [ 7.179218] ext3_orphan_cleanup: deleting unreferenced inode 2122696 [ 7.199331] ext3_orphan_cleanup: deleting unreferenced inode 1860272 [ 7.215190] ext3_orphan_cleanup: deleting unreferenced inode 942395 [ 7.244051] EXT3-fs: sda1: 12 orphan inodes deleted [ 7.244110] EXT3-fs: recovery complete. [ 7.325286] EXT3-fs: mounted filesystem with ordered data mode. [ 30.927883] Adding 1485972k swap on /dev/sda5. Priority:-1 extents:1 across:1485972k [ 30.967991] udev: starting version 151 [ 31.572068] parport_pc 00:0c: reported by Plug and Play ACPI [ 31.572129] parport0: PC-style at 0x378, irq 7 [PCSPP,TRISTATE] [ 31.602440] lp: driver loaded but no devices found [ 31.650714] ppdev: user-space parallel port driver [ 31.664882] lp0: using parport0 (interrupt-driven). [ 31.689067] type=1505 audit(1276658470.349:2): operation="profile_load" pid=606 name="/sbin/dhclient3" [ 31.689411] type=1505 audit(1276658470.349:3): operation="profile_load" pid=606 name="/usr/lib/NetworkManager/nm-dhcp-client.action" [ 31.689605] type=1505 audit(1276658470.349:4): operation="profile_load" pid=606 name="/usr/lib/connman/scripts/dhclient-script" [ 31.770418] gameport: NS558 PnP Gameport is pnp00:0d/gameport0, io 0x201, speed 59659kHz [ 32.056527] EXT3 FS on sda1, internal journal [ 32.626600] type=1505 audit(1276658471.285:5): operation="profile_load" pid=747 name="/usr/share/gdm/guest-session/Xsession" [ 32.631303] type=1505 audit(1276658471.289:6): operation="profile_replace" pid=748 name="/sbin/dhclient3" [ 32.631653] type=1505 audit(1276658471.289:7): operation="profile_replace" pid=748 name="/usr/lib/NetworkManager/nm-dhcp-client.action" [ 32.631858] type=1505 audit(1276658471.289:8): operation="profile_replace" pid=748 name="/usr/lib/connman/scripts/dhclient-script" [ 32.660832] type=1505 audit(1276658471.321:9): operation="profile_load" pid=749 name="/usr/bin/evince" [ 32.670326] type=1505 audit(1276658471.329:10): operation="profile_load" pid=749 name="/usr/bin/evince-previewer" [ 32.688760] type=1505 audit(1276658471.349:11): operation="profile_load" pid=749 name="/usr/bin/evince-thumbnailer" [ 32.966738] apm: BIOS version 1.2 Flags 0x07 (Driver version 1.16ac) [ 32.966743] apm: overridden by ACPI. Bug: 601229 [ 0.000000] Initializing cgroup subsys cpuset [ 0.000000] Initializing cgroup subsys cpu [ 0.000000] Linux version 2.6.35-6-generic (buildd@yellow) (gcc version 4.4.4 (Ubuntu 4.4.4-6ubuntu2) ) #9-Ubuntu SMP Thu Jul 1 03:01:23 UTC 2010 (Ubuntu 2.6.35-6.9-generic 2.6.35-rc3) [ 0.000000] Command line: BOOT_IMAGE=/vmlinuz-2.6.35-6-generic root=UUID=799e9cf3-ccb9-48e0-ba0e-22b50bb09faf ro quiet splash [ 0.000000] BIOS-provided physical RAM map: [ 0.000000] BIOS-e820: 0000000000000000 - 000000000009e000 (usable) [ 0.000000] BIOS-e820: 000000000009e000 - 00000000000a0000 (reserved) [ 0.000000] BIOS-e820: 00000000000ce000 - 0000000000100000 (reserved) [ 0.000000] BIOS-e820: 0000000000100000 - 00000000bff50000 (usable) [ 0.000000] BIOS-e820: 00000000bff50000 - 00000000bff65000 (ACPI data) [ 0.000000] BIOS-e820: 00000000bff65000 - 00000000bff66000 (ACPI NVS) [ 0.000000] BIOS-e820: 00000000bff66000 - 00000000c0000000 (reserved) [ 0.000000] BIOS-e820: 00000000e0000000 - 00000000f0000000 (reserved) [ 0.000000] BIOS-e820: 00000000fec00000 - 00000000fec10000 (reserved) [ 0.000000] BIOS-e820: 00000000fee00000 - 00000000fee01000 (reserved) [ 0.000000] BIOS-e820: 00000000fff80000 - 0000000100000000 (reserved) [ 0.000000] NX (Execute Disable) protection: active [ 0.000000] DMI present. [ 0.000000] e820 update range: 0000000000000000 - 0000000000001000 (usable) ==> (reserved) [ 0.000000] e820 remove range: 00000000000a0000 - 0000000000100000 (usable) [ 0.000000] No AGP bridge found [ 0.000000] last_pfn = 0xbff50 max_arch_pfn = 0x400000000 [ 0.000000] MTRR default type: uncachable [ 0.000000] MTRR fixed ranges enabled: [ 0.000000] 00000-9FFFF write-back [ 0.000000] A0000-BFFFF uncachable [ 0.000000] C0000-CEFFF write-protect [ 0.000000] CF000-E3FFF uncachable [ 0.000000] E4000-FFFFF write-protect [ 0.000000] MTRR variable ranges enabled: [ 0.000000] 0 base 0000000000 mask FF80000000 write-back [ 0.000000] 1 base 0080000000 mask FFC0000000 write-back [ 0.000000] 2 disabled [ 0.000000] 3 disabled [ 0.000000] 4 disabled [ 0.000000] 5 disabled [ 0.000000] 6 disabled [ 0.000000] 7 disabled [ 0.000000] x86 PAT enabled: cpu 0, old 0x7040600070406, new 0x7010600070106 [ 0.000000] e820 update range: 0000000000001000 - 0000000000010000 (usable) ==> (reserved) [ 0.000000] Scanning 1 areas for low memory corruption [ 0.000000] modified physical RAM map: [ 0.000000] modified: 0000000000000000 - 0000000000010000 (reserved) [ 0.000000] modified: 0000000000010000 - 000000000009e000 (usable) [ 0.000000] modified: 000000000009e000 - 00000000000a0000 (reserved) [ 0.000000] modified: 00000000000ce000 - 0000000000100000 (reserved) [ 0.000000] modified: 0000000000100000 - 00000000bff50000 (usable) [ 0.000000] modified: 00000000bff50000 - 00000000bff65000 (ACPI data) [ 0.000000] modified: 00000000bff65000 - 00000000bff66000 (ACPI NVS) [ 0.000000] modified: 00000000bff66000 - 00000000c0000000 (reserved) [ 0.000000] modified: 00000000e0000000 - 00000000f0000000 (reserved) [ 0.000000] modified: 00000000fec00000 - 00000000fec10000 (reserved) [ 0.000000] modified: 00000000fee00000 - 00000000fee01000 (reserved) [ 0.000000] modified: 00000000fff80000 - 0000000100000000 (reserved) [ 0.000000] initial memory mapped : 0 - 20000000 [ 0.000000] found SMP MP-table at [ffff8800000f7c90] f7c90 [ 0.000000] init_memory_mapping: 0000000000000000-00000000bff50000 [ 0.000000] 0000000000 - 00bfe00000 page 2M [ 0.000000] 00bfe00000 - 00bff50000 page 4k [ 0.000000] kernel direct mapping tables up to bff50000 @ 16000-1b000 [ 0.000000] RAMDISK: 3759c000 - 37ff0000 [ 0.000000] ACPI: RSDP 00000000000f7ca0 00024 (v02 ACRSYS) [ 0.000000] ACPI: XSDT 00000000bff5e48d 00054 (v01 ACRSYS ACRPRDCT 06040000 LTP 00000000) [ 0.000000] ACPI: FACP 00000000bff64c02 000F4 (v03 NVIDIA MCP67-M 06040000 PTL_ 000F4240) [ 0.000000] ACPI: DSDT 00000000bff5e4e1 066AD (v01 NVIDIA MCP67 06040000 MSFT 03000000) [ 0.000000] ACPI: FACS 00000000bff65fc0 00040 [ 0.000000] ACPI: SSDT 00000000bff64cf6 00206 (v01 PTLTD POWERNOW 06040000 LTP 00000001) [ 0.000000] ACPI: MCFG 00000000bff64efc 0003C (v01 Nvidia NVDAACPI 06040000 NVDA 00000000) [ 0.000000] ACPI: HPET 00000000bff64f38 00038 (v01 PTLTD HPETTBL 06040000 LTP 00000001) [ 0.000000] ACPI: APIC 00000000bff64f70 00068 (v01 PTLTD ? APIC 06040000 LTP 00000000) [ 0.000000] ACPI: BOOT 00000000bff64fd8 00028 (v01 PTLTD $SBFTBL$ 06040000 LTP 00000001) [ 0.000000] ACPI: Local APIC address 0xfee00000 [ 0.000000] Scanning NUMA topology in Northbridge 24 [ 0.000000] No NUMA configuration found [ 0.000000] Faking a node at 0000000000000000-00000000bff50000 [ 0.000000] Initmem setup node 0 0000000000000000-00000000bff50000 [ 0.000000] NODE_DATA [0000000001d1f100 - 0000000001d240ff] [ 0.000000] [ffffea0000000000-ffffea00029fffff] PMD -> [ffff880002600000-ffff880004ffffff] on node 0 [ 0.000000] Zone PFN ranges: [ 0.000000] DMA 0x00000010 -> 0x00001000 [ 0.000000] DMA32 0x00001000 -> 0x00100000 [ 0.000000] Normal empty [ 0.000000] Movable zone start PFN for each node [ 0.000000] early_node_map[2] active PFN ranges [ 0.000000] 0: 0x00000010 -> 0x0000009e [ 0.000000] 0: 0x00000100 -> 0x000bff50 [ 0.000000] On node 0 totalpages: 786142 [ 0.000000] DMA zone: 56 pages used for memmap [ 0.000000] DMA zone: 0 pages reserved [ 0.000000] DMA zone: 3926 pages, LIFO batch:0 [ 0.000000] DMA32 zone: 10694 pages used for memmap [ 0.000000] DMA32 zone: 771466 pages, LIFO batch:31 [ 0.000000] Detected use of extended apic ids on hypertransport bus [ 0.000000] ACPI: PM-Timer IO Port: 0x1008 [ 0.000000] ACPI: Local APIC address 0xfee00000 [ 0.000000] ACPI: LAPIC (acpi_id[0x00] lapic_id[0x00] enabled) [ 0.000000] ACPI: LAPIC (acpi_id[0x01] lapic_id[0x01] enabled) [ 0.000000] ACPI: LAPIC_NMI (acpi_id[0x00] high edge lint[0x1]) [ 0.000000] ACPI: LAPIC_NMI (acpi_id[0x01] high edge lint[0x1]) [ 0.000000] ACPI: IOAPIC (id[0x02] address[0xfec00000] gsi_base[0]) [ 0.000000] IOAPIC[0]: apic_id 2, version 17, address 0xfec00000, GSI 0-23 [ 0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 9 global_irq 9 low level) [ 0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 0 global_irq 2 dfl dfl) [ 0.000000] ACPI: IRQ0 used by override. [ 0.000000] ACPI: IRQ2 used by override. [ 0.000000] ACPI: IRQ9 used by override. [ 0.000000] Using ACPI (MADT) for SMP configuration information [ 0.000000] ACPI: HPET id: 0x10de8201 base: 0xfed00000 [ 0.000000] SMP: Allowing 2 CPUs, 0 hotplug CPUs [ 0.000000] nr_irqs_gsi: 40 [ 0.000000] early_res array is doubled to 64 at [19000 - 197ff] [ 0.000000] PM: Registered nosave memory: 000000000009e000 - 00000000000a0000 [ 0.000000] PM: Registered nosave memory: 00000000000a0000 - 00000000000ce000 [ 0.000000] PM: Registered nosave memory: 00000000000ce000 - 0000000000100000 [ 0.000000] Allocating PCI resources starting at c0000000 (gap: c0000000:20000000) [ 0.000000] Booting paravirtualized kernel on bare hardware [ 0.000000] setup_percpu: NR_CPUS:64 nr_cpumask_bits:64 nr_cpu_ids:2 nr_node_ids:1 [ 0.000000] PERCPU: Embedded 30 pages/cpu @ffff880001e00000 s91456 r8192 d23232 u1048576 [ 0.000000] pcpu-alloc: s91456 r8192 d23232 u1048576 alloc=1*2097152 [ 0.000000] pcpu-alloc: [0] 0 1 [ 0.000000] Built 1 zonelists in Node order, mobility grouping on. Total pages: 775392 [ 0.000000] Policy zone: DMA32 [ 0.000000] Kernel command line: BOOT_IMAGE=/vmlinuz-2.6.35-6-generic root=UUID=799e9cf3-ccb9-48e0-ba0e-22b50bb09faf ro quiet splash [ 0.000000] PID hash table entries: 4096 (order: 3, 32768 bytes) [ 0.000000] Checking aperture... [ 0.000000] No AGP bridge found [ 0.000000] Node 0: aperture @ ffa6000000 size 32 MB [ 0.000000] Aperture beyond 4GB. Ignoring. [ 0.000000] Subtract (48 early reservations) [ 0.000000] #1 [0001000000 - 0001d1e314] TEXT DATA BSS [ 0.000000] #2 [003759c000 - 0037ff0000] RAMDISK [ 0.000000] #3 [0001d1f000 - 0001d1f0ed] BRK [ 0.000000] #4 [00000f7ca0 - 0000100000] BIOS reserved [ 0.000000] #5 [00000f7c90 - 00000f7ca0] MP-table mpf [ 0.000000] #6 [000009e000 - 000009e571] BIOS reserved [ 0.000000] #7 [000009e6c5 - 00000f7c90] BIOS reserved [ 0.000000] #8 [000009e571 - 000009e6c5] MP-table mpc [ 0.000000] #9 [0000010000 - 0000012000] TRAMPOLINE [ 0.000000] #10 [0000012000 - 0000016000] ACPI WAKEUP [ 0.000000] #11 [0000016000 - 0000019000] PGTABLE [ 0.000000] #12 [0001d1f100 - 0001d24100] NODE_DATA [ 0.000000] #13 [0001d24100 - 0001d25100] BOOTMEM [ 0.000000] #14 [0001d1e340 - 0001d1e580] BOOTMEM [ 0.000000] #15 [0002526000 - 0002527000] BOOTMEM [ 0.000000] #16 [0002527000 - 0002528000] BOOTMEM [ 0.000000] #17 [0002600000 - 0005000000] MEMMAP 0 [ 0.000000] #18 [0001d1e580 - 0001d1e700] BOOTMEM [ 0.000000] #19 [0001d25100 - 0001d3d100] BOOTMEM [ 0.000000] #20 [0001d3e000 - 0001d3f000] BOOTMEM [ 0.000000] #21 [0001d1e700 - 0001d1e741] BOOTMEM [ 0.000000] #22 [0001d1e780 - 0001d1e7c3] BOOTMEM [ 0.000000] #23 [0001d1e800 - 0001d1eaa0] BOOTMEM [ 0.000000] #24 [0001d1eac0 - 0001d1eb28] BOOTMEM [ 0.000000] #25 [0001d1eb40 - 0001d1eba8] BOOTMEM [ 0.000000] #26 [0001d1ebc0 - 0001d1ec28] BOOTMEM [ 0.000000] #27 [0001d1ec40 - 0001d1eca8] BOOTMEM [ 0.000000] #28 [0001d1ecc0 - 0001d1ed28] BOOTMEM [ 0.000000] #29 [0001d1ed40 - 0001d1eda8] BOOTMEM [ 0.000000] #30 [0001d1edc0 - 0001d1ee28] BOOTMEM [ 0.000000] #31 [0001d1ee40 - 0001d1eea8] BOOTMEM [ 0.000000] #32 [0001d1eec0 - 0001d1ef28] BOOTMEM [ 0.000000] #33 [0001d1ef40 - 0001d1efa8] BOOTMEM [ 0.000000] #34 [0001d3d100 - 0001d3d168] BOOTMEM [ 0.000000] #35 [0001d1efc0 - 0001d1efe0] BOOTMEM [ 0.000000] #36 [0001d3d180 - 0001d3d1e4] BOOTMEM [ 0.000000] #37 [0001d3d200 - 0001d3d264] BOOTMEM [ 0.000000] #38 [0001e00000 - 0001e1e000] BOOTMEM [ 0.000000] #39 [0001f00000 - 0001f1e000] BOOTMEM [ 0.000000] #40 [0001d3d280 - 0001d3d288] BOOTMEM [ 0.000000] #41 [0001d3d2c0 - 0001d3d2c8] BOOTMEM [ 0.000000] #42 [0001d3d300 - 0001d3d308] BOOTMEM [ 0.000000] #43 [0001d3d340 - 0001d3d350] BOOTMEM [ 0.000000] #44 [0001d3d380 - 0001d3d4c0] BOOTMEM [ 0.000000] #45 [0001d3d4c0 - 0001d3d520] BOOTMEM [ 0.000000] #46 [0001d3d540 - 0001d3d5a0] BOOTMEM [ 0.000000] #47 [0001d3f000 - 0001d47000] BOOTMEM [ 0.000000] Memory: 3077104k/3145024k available (5705k kernel code, 456k absent, 67464k reserved, 5422k data, 904k init) [ 0.000000] SLUB: Genslabs=14, HWalign=64, Order=0-3, MinObjects=0, CPUs=2, Nodes=1 [ 0.000000] Hierarchical RCU implementation. [ 0.000000] RCU dyntick-idle grace-period acceleration is enabled. [ 0.000000] RCU-based detection of stalled CPUs is disabled. [ 0.000000] Verbose stalled-CPUs detection is disabled. [ 0.000000] NR_IRQS:4352 nr_irqs:512 [ 0.000000] Extended CMOS year: 2000 [ 0.000000] spurious 8259A interrupt: IRQ7. [ 0.000000] Console: colour VGA+ 80x25 [ 0.000000] console [tty0] enabled [ 0.000000] allocated 31457280 bytes of page_cgroup [ 0.000000] please try 'cgroup_disable=memory' option if you don't want memory cgroups [ 0.000000] hpet clockevent registered [ 0.000000] Fast TSC calibration using PIT [ 0.000000] Detected 1900.274 MHz processor. [ 0.010009] Calibrating delay loop (skipped), value calculated using timer frequency.. 3800.54 BogoMIPS (lpj=19002740) [ 0.010015] pid_max: default: 32768 minimum: 301 [ 0.010044] Security Framework initialized [ 0.010066] AppArmor: AppArmor initialized [ 0.010670] Dentry cache hash table entries: 524288 (order: 10, 4194304 bytes) [ 0.014343] Inode-cache hash table entries: 262144 (order: 9, 2097152 bytes) [ 0.016051] Mount-cache hash table entries: 256 [ 0.016222] Initializing cgroup subsys ns [ 0.016227] Initializing cgroup subsys cpuacct [ 0.016232] Initializing cgroup subsys memory [ 0.016244] Initializing cgroup subsys devices [ 0.016247] Initializing cgroup subsys freezer [ 0.016249] Initializing cgroup subsys net_cls [ 0.016279] tseg: 00bff80000 [ 0.016282] CPU: Physical Processor ID: 0 [ 0.016284] CPU: Processor Core ID: 0 [ 0.016287] mce: CPU supports 5 MCE banks [ 0.016298] using C1E aware idle routine [ 0.016301] Performance Events: AMD PMU driver. [ 0.016306] ... version: 0 [ 0.016309] ... bit width: 48 [ 0.016310] ... generic registers: 4 [ 0.016312] ... value mask: 0000ffffffffffff [ 0.016315] ... max period: 00007fffffffffff [ 0.016317] ... fixed-purpose events: 0 [ 0.016319] ... event mask: 000000000000000f [ 0.021719] ACPI: Core revision 20100428 [ 0.030014] ftrace: converting mcount calls to 0f 1f 44 00 00 [ 0.030021] ftrace: allocating 22639 entries in 89 pages [ 0.040100] Setting APIC routing to flat [ 0.040578] ..TIMER: vector=0x30 apic1=0 pin1=2 apic2=-1 pin2=-1 [ 0.146622] CPU0: AMD Athlon(tm) 64 X2 Dual-Core Processor TK-57 stepping 02 [ 0.150000] Booting Node 0, Processors #1 Ok. [ 0.020000] System has AMD C1E enabled [ 0.020000] Switch to broadcast mode on CPU1 [ 0.300097] Brought up 2 CPUs [ 0.300100] Total of 2 processors activated (7601.09 BogoMIPS). [ 0.300364] Switch to broadcast mode on CPU0 [ 0.300364] devtmpfs: initialized [ 0.300940] regulator: core version 0.5 [ 0.300983] Time: 23:20:07 Date: 07/02/10 [ 0.301039] NET: Registered protocol family 16 [ 0.301192] node 0 link 0: io port [1000, fffff] [ 0.301196] TOM: 00000000c0000000 aka 3072M [ 0.301200] node 0 link 0: mmio [a0000, bffff] [ 0.301203] node 0 link 0: mmio [c0000000, dfffffff] [ 0.301207] node 0 link 0: mmio [e0000000, efffffff] [ 0.301211] node 0 link 0: mmio [f0000000, fe0bffff] [ 0.301215] bus: [00, ff] on node 0 link 0 [ 0.301219] bus: 00 index 0 [io 0x0000-0xffff] [ 0.301222] bus: 00 index 1 [mem 0x000a0000-0x000bffff] [ 0.301225] bus: 00 index 2 [mem 0xc0000000-0xfcffffffff] [ 0.301233] ACPI: bus type pci registered [ 0.301314] PCI: MMCONFIG for domain 0000 [bus 00-ff] at [mem 0xe0000000-0xefffffff] (base 0xe0000000) [ 0.301318] PCI: MMCONFIG at [mem 0xe0000000-0xefffffff] reserved in E820 [ 0.320072] Trying to unpack rootfs image as initramfs... [ 0.320000] PCI: Using configuration type 1 for base access [ 0.330169] bio: create slab at 0 [ 0.331522] ACPI: EC: Look up EC in DSDT [ 0.336492] ACPI: Interpreter enabled [ 0.336496] ACPI: (supports S0 S3 S4 S5) [ 0.336520] ACPI: Using IOAPIC for interrupt routing [ 0.626538] Freeing initrd memory: 10576k freed [ 0.673855] ACPI: EC: GPE = 0x10, I/O: command/status = 0x66, data = 0x62 [ 0.674173] ACPI: No dock devices found. [ 0.674178] PCI: Using host bridge windows from ACPI; if necessary, use "pci=nocrs" and report a bug [ 0.674473] ACPI: PCI Root Bridge [PCI0] (domain 0000 [bus 00-ff]) [ 0.674771] pci_root PNP0A08:00: host bridge window [io 0x0000-0x0cf7] [ 0.674774] pci_root PNP0A08:00: host bridge window [io 0x0d00-0xffff] [ 0.674777] pci_root PNP0A08:00: host bridge window [mem 0x000a0000-0x000bffff] [ 0.674781] pci_root PNP0A08:00: host bridge window [mem 0x000c0000-0x000c3fff] [ 0.674784] pci_root PNP0A08:00: host bridge window [mem 0x000c4000-0x000c7fff] [ 0.674787] pci_root PNP0A08:00: host bridge window [mem 0x000c8000-0x000cbfff] [ 0.674791] pci_root PNP0A08:00: address space collision: host bridge window [mem 0x000cc000-0x000cffff] conflicts with reserved [mem 0x000ce000-0x000fffff] [ 0.674795] pci_root PNP0A08:00: host bridge window [mem 0x000d0000-0x000d3fff] [ 0.674798] pci_root PNP0A08:00: host bridge window [mem 0x000d4000-0x000d7fff] [ 0.674801] pci_root PNP0A08:00: host bridge window [mem 0x000d8000-0x000dbfff] [ 0.674804] pci_root PNP0A08:00: host bridge window [mem 0x000dc000-0x000dffff] [ 0.674807] pci_root PNP0A08:00: host bridge window [mem 0x000e0000-0x000e3fff] [ 0.674810] pci_root PNP0A08:00: host bridge window [mem 0x000e4000-0x000e7fff] [ 0.674813] pci_root PNP0A08:00: host bridge window [mem 0x000e8000-0x000ebfff] [ 0.674816] pci_root PNP0A08:00: host bridge window [mem 0x000ec000-0x000effff] [ 0.674819] pci_root PNP0A08:00: host bridge window [mem 0x000f0000-0x000fffff] [ 0.674822] pci_root PNP0A08:00: host bridge window [mem 0xfed40000-0xfed44fff] [ 0.674826] pci_root PNP0A08:00: host bridge window [mem 0xc0000000-0xfebfffff] [ 0.674975] pci 0000:00:01.0: reg 10: [io 0x1d00-0x1dff] [ 0.675013] pci 0000:00:01.1: reg 10: [io 0x3080-0x30bf] [ 0.675024] pci 0000:00:01.1: reg 20: [io 0x3040-0x307f] [ 0.675028] pci 0000:00:01.1: reg 24: [io 0x3000-0x303f] [ 0.675049] pci 0000:00:01.1: PME# supported from D3hot D3cold [ 0.675055] pci 0000:00:01.1: PME# disabled [ 0.675116] pci 0000:00:01.3: reg 10: [mem 0xd0600000-0xd067ffff] [ 0.675195] pci 0000:00:02.0: reg 10: [mem 0xd0886000-0xd0886fff] [ 0.675218] pci 0000:00:02.0: supports D1 D2 [ 0.675221] pci 0000:00:02.0: PME# supported from D0 D1 D2 D3hot D3cold [ 0.675225] pci 0000:00:02.0: PME# disabled [ 0.675246] pci 0000:00:02.1: reg 10: [mem 0xd0889000-0xd08890ff] [ 0.675275] pci 0000:00:02.1: supports D1 D2 [ 0.675278] pci 0000:00:02.1: PME# supported from D0 D1 D2 D3hot D3cold [ 0.675282] pci 0000:00:02.1: PME# disabled [ 0.675308] pci 0000:00:04.0: reg 10: [mem 0xd0887000-0xd0887fff] [ 0.675332] pci 0000:00:04.0: supports D1 D2 [ 0.675334] pci 0000:00:04.0: PME# supported from D0 D1 D2 D3hot D3cold [ 0.675338] pci 0000:00:04.0: PME# disabled [ 0.675359] pci 0000:00:04.1: reg 10: [mem 0xd0889400-0xd08894ff] [ 0.675387] pci 0000:00:04.1: supports D1 D2 [ 0.675390] pci 0000:00:04.1: PME# supported from D0 D1 D2 D3hot D3cold [ 0.675394] pci 0000:00:04.1: PME# disabled [ 0.675428] pci 0000:00:06.0: reg 20: [io 0x30c0-0x30cf] [ 0.675465] pci 0000:00:07.0: reg 10: [mem 0xd0880000-0xd0883fff] [ 0.675493] pci 0000:00:07.0: PME# supported from D3hot D3cold [ 0.675497] pci 0000:00:07.0: PME# disabled [ 0.675560] pci 0000:00:09.0: reg 10: [io 0x30f0-0x30f7] [ 0.675564] pci 0000:00:09.0: reg 14: [io 0x30e4-0x30e7] [ 0.675569] pci 0000:00:09.0: reg 18: [io 0x30e8-0x30ef] [ 0.675573] pci 0000:00:09.0: reg 1c: [io 0x30e0-0x30e3] [ 0.675578] pci 0000:00:09.0: reg 20: [io 0x30d0-0x30df] [ 0.675583] pci 0000:00:09.0: reg 24: [mem 0xd0884000-0xd0885fff] [ 0.675628] pci 0000:00:0a.0: reg 10: [mem 0xd0888000-0xd0888fff] [ 0.675632] pci 0000:00:0a.0: reg 14: [io 0x30f8-0x30ff] [ 0.675637] pci 0000:00:0a.0: reg 18: [mem 0xd0889c00-0xd0889cff] [ 0.675642] pci 0000:00:0a.0: reg 1c: [mem 0xd0889800-0xd088980f] [ 0.675665] pci 0000:00:0a.0: supports D1 D2 [ 0.675667] pci 0000:00:0a.0: PME# supported from D0 D1 D2 D3hot D3cold [ 0.675672] pci 0000:00:0a.0: PME# disabled [ 0.675708] pci 0000:00:0b.0: PME# supported from D0 D1 D2 D3hot D3cold [ 0.675711] pci 0000:00:0b.0: PME# disabled [ 0.675746] pci 0000:00:0c.0: PME# supported from D0 D1 D2 D3hot D3cold [ 0.675750] pci 0000:00:0c.0: PME# disabled [ 0.675783] pci 0000:00:0d.0: PME# supported from D0 D1 D2 D3hot D3cold [ 0.675787] pci 0000:00:0d.0: PME# disabled [ 0.675918] pci 0000:01:04.0: proprietary Ricoh MMC controller disabled (via firewire function) [ 0.675921] pci 0000:01:04.0: MMC cards are now supported by standard SDHCI controller [ 0.675929] pci 0000:01:04.0: reg 10: [mem 0xd0500000-0xd05007ff] [ 0.675963] pci 0000:01:04.0: PME# supported from D0 D3hot D3cold [ 0.675967] pci 0000:01:04.0: PME# disabled [ 0.675991] pci 0000:01:04.1: reg 10: [mem 0xd0500800-0xd05008ff] [ 0.676025] pci 0000:01:04.1: supports D1 D2 [ 0.676028] pci 0000:01:04.1: PME# supported from D0 D1 D2 D3hot D3cold [ 0.676032] pci 0000:01:04.1: PME# disabled [ 0.676055] pci 0000:01:04.2: reg 10: [mem 0xd0501000-0xd05010ff] [ 0.676088] pci 0000:01:04.2: supports D1 D2 [ 0.676091] pci 0000:01:04.2: PME# supported from D0 D1 D2 D3hot D3cold [ 0.676095] pci 0000:01:04.2: PME# disabled [ 0.676118] pci 0000:01:04.3: reg 10: [mem 0xd0501400-0xd05014ff] [ 0.676152] pci 0000:01:04.3: supports D1 D2 [ 0.676154] pci 0000:01:04.3: PME# supported from D0 D1 D2 D3hot D3cold [ 0.676158] pci 0000:01:04.3: PME# disabled [ 0.676194] pci 0000:00:08.0: PCI bridge to [bus 01-01] (subtractive decode) [ 0.676198] pci 0000:00:08.0: bridge window [io 0xf000-0x0000] (disabled) [ 0.676202] pci 0000:00:08.0: bridge window [mem 0xd0500000-0xd05fffff] [ 0.676207] pci 0000:00:08.0: bridge window [mem 0xfff00000-0x000fffff pref] (disabled) [ 0.676210] pci 0000:00:08.0: bridge window [io 0x0000-0x0cf7] (subtractive decode) [ 0.676213] pci 0000:00:08.0: bridge window [io 0x0d00-0xffff] (subtractive decode) [ 0.676217] pci 0000:00:08.0: bridge window [mem 0x000a0000-0x000bffff] (subtractive decode) [ 0.676220] pci 0000:00:08.0: bridge window [mem 0x000c0000-0x000c3fff] (subtractive decode) [ 0.676224] pci 0000:00:08.0: bridge window [mem 0x000c4000-0x000c7fff] (subtractive decode) [ 0.676227] pci 0000:00:08.0: bridge window [mem 0x000c8000-0x000cbfff] (subtractive decode) [ 0.676230] pci 0000:00:08.0: bridge window [mem 0x000d0000-0x000d3fff] (subtractive decode) [ 0.676233] pci 0000:00:08.0: bridge window [mem 0x000d4000-0x000d7fff] (subtractive decode) [ 0.676236] pci 0000:00:08.0: bridge window [mem 0x000d8000-0x000dbfff] (subtractive decode) [ 0.676239] pci 0000:00:08.0: bridge window [mem 0x000dc000-0x000dffff] (subtractive decode) [ 0.676243] pci 0000:00:08.0: bridge window [mem 0x000e0000-0x000e3fff] (subtractive decode) [ 0.676246] pci 0000:00:08.0: bridge window [mem 0x000e4000-0x000e7fff] (subtractive decode) [ 0.676249] pci 0000:00:08.0: bridge window [mem 0x000e8000-0x000ebfff] (subtractive decode) [ 0.676252] pci 0000:00:08.0: bridge window [mem 0x000ec000-0x000effff] (subtractive decode) [ 0.676256] pci 0000:00:08.0: bridge window [mem 0x000f0000-0x000fffff] (subtractive decode) [ 0.676259] pci 0000:00:08.0: bridge window [mem 0xfed40000-0xfed44fff] (subtractive decode) [ 0.676262] pci 0000:00:08.0: bridge window [mem 0xc0000000-0xfebfffff] (subtractive decode) [ 0.676305] pci 0000:02:00.0: reg 10: [mem 0xd1000000-0xd1ffffff] [ 0.676313] pci 0000:02:00.0: reg 14: [mem 0xc0000000-0xcfffffff 64bit pref] [ 0.676322] pci 0000:02:00.0: reg 1c: [mem 0xd2000000-0xd3ffffff 64bit] [ 0.676327] pci 0000:02:00.0: reg 24: [io 0x4000-0x407f] [ 0.676333] pci 0000:02:00.0: reg 30: [mem 0x00000000-0x0001ffff pref] [ 0.700016] pci 0000:00:0b.0: PCI bridge to [bus 02-02] [ 0.700020] pci 0000:00:0b.0: bridge window [io 0x4000-0x4fff] [ 0.700024] pci 0000:00:0b.0: bridge window [mem 0xd1000000-0xd3ffffff] [ 0.700029] pci 0000:00:0b.0: bridge window [mem 0xc0000000-0xcfffffff 64bit pref] [ 0.700054] pci 0000:00:0c.0: PCI bridge to [bus 03-04] [ 0.700058] pci 0000:00:0c.0: bridge window [io 0x5000-0x5fff] [ 0.700062] pci 0000:00:0c.0: bridge window [mem 0xd0200000-0xd03fffff] [ 0.700066] pci 0000:00:0c.0: bridge window [mem 0xd0000000-0xd01fffff 64bit pref] [ 0.700115] pci 0000:05:00.0: reg 10: [mem 0xd0400000-0xd040ffff 64bit] [ 0.700173] pci 0000:05:00.0: disabling ASPM on pre-1.1 PCIe device. You can enable it with 'pcie_aspm=force' [ 0.700185] pci 0000:00:0d.0: PCI bridge to [bus 05-05] [ 0.700189] pci 0000:00:0d.0: bridge window [io 0xf000-0x0000] (disabled) [ 0.700193] pci 0000:00:0d.0: bridge window [mem 0xd0400000-0xd04fffff] [ 0.700198] pci 0000:00:0d.0: bridge window [mem 0xfff00000-0x000fffff pref] (disabled) [ 0.700213] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0._PRT] [ 0.700342] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.P2P0._PRT] [ 0.700366] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.XVR0._PRT] [ 0.700413] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.XVR1._PRT] [ 0.700453] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.XVR2._PRT] [ 0.735816] ACPI: PCI Interrupt Link [LNK1] (IRQs 5 7 11) *10 [ 0.736049] ACPI: PCI Interrupt Link [LNK2] (IRQs 5 7 *11) [ 0.736274] ACPI: PCI Interrupt Link [LNK3] (IRQs 5 7 11) *0, disabled. [ 0.736500] ACPI: PCI Interrupt Link [LNK4] (IRQs 5 7 11) *0, disabled. [ 0.736732] ACPI: PCI Interrupt Link [LK1E] (IRQs 16) *0, disabled. [ 0.736964] ACPI: PCI Interrupt Link [LK2E] (IRQs 17) *10 [ 0.737187] ACPI: PCI Interrupt Link [LK3E] (IRQs 18) *0, disabled. [ 0.737413] ACPI: PCI Interrupt Link [LK4E] (IRQs 19) *10 [ 0.737637] ACPI: PCI Interrupt Link [LSMB] (IRQs 20 21 22 23) *10 [ 0.737864] ACPI: PCI Interrupt Link [LUS0] (IRQs 20 21 22 23) *11 [ 0.738094] ACPI: PCI Interrupt Link [LUS2] (IRQs 20 21 22 23) *7 [ 0.738328] ACPI: PCI Interrupt Link [LMAC] (IRQs 20 21 22 23) *11 [ 0.738555] ACPI: PCI Interrupt Link [LAZA] (IRQs 20 21 22 23) *10 [ 0.738786] ACPI: PCI Interrupt Link [LGPU] (IRQs 17) *0, disabled. [ 0.739013] ACPI: PCI Interrupt Link [LPID] (IRQs 20 21 22 23) *0, disabled. [ 0.739239] ACPI: PCI Interrupt Link [LSI0] (IRQs 20 21 22 23) *5 [ 0.739475] ACPI: PCI Interrupt Link [Z00N] (IRQs 20 21 22 23) *10 [ 0.739712] ACPI: PCI Interrupt Link [Z00O] (IRQs 20 21 22 23) *11 [ 0.739939] ACPI: PCI Interrupt Link [LPMU] (IRQs 18) *11 [ 0.740018] HEST: Table is not found! [ 0.740152] vgaarb: device added: PCI:0000:02:00.0,decodes=io+mem,owns=io+mem,locks=none [ 0.740156] vgaarb: loaded [ 0.740360] SCSI subsystem initialized [ 0.750052] libata version 3.00 loaded. [ 0.750073] usbcore: registered new interface driver usbfs [ 0.750087] usbcore: registered new interface driver hub [ 0.750096] usbcore: registered new device driver usb [ 0.750182] ACPI: WMI: Skipping duplicate GUID 05901221-D566-11D1-B2F0-00A0C9062910 [ 0.750507] ACPI: WMI: Mapper loaded [ 0.750510] PCI: Using ACPI for IRQ routing [ 0.750514] PCI: pci_cache_line_size set to 64 bytes [ 0.750642] reserve RAM buffer: 000000000009e000 - 000000000009ffff [ 0.750645] reserve RAM buffer: 00000000bff50000 - 00000000bfffffff [ 0.750768] NetLabel: Initializing [ 0.750771] NetLabel: domain hash size = 128 [ 0.750772] NetLabel: protocols = UNLABELED CIPSOv4 [ 0.750788] NetLabel: unlabeled traffic allowed by default [ 0.750838] HPET: 3 timers in total, 0 timers will be used for per-cpu timer [ 0.750845] hpet0: at MMIO 0xfed00000, IRQs 2, 8, 31 [ 0.750851] hpet0: 3 comparators, 32-bit 25.000000 MHz counter [ 0.770058] Switching to clocksource hpet [ 0.782445] AppArmor: AppArmor Filesystem Enabled [ 0.782468] pnp: PnP ACPI init [ 0.782491] ACPI: bus type pnp registered [ 0.872275] pnp: PnP ACPI: found 13 devices [ 0.872279] ACPI: ACPI bus type pnp unregistered [ 0.872296] system 00:01: [io 0x0360-0x0361] has been reserved [ 0.872301] system 00:01: [io 0x04d0-0x04d1] has been reserved [ 0.872311] system 00:07: [mem 0xe0000000-0xefffffff] has been reserved [ 0.872318] system 00:0a: [io 0x1000-0x107f] has been reserved [ 0.872321] system 00:0a: [io 0x1080-0x10ff] has been reserved [ 0.872325] system 00:0a: [io 0x1400-0x147f] has been reserved [ 0.872329] system 00:0a: [io 0x1480-0x14ff] has been reserved [ 0.872332] system 00:0a: [io 0x1800-0x187f] has been reserved [ 0.872336] system 00:0a: [io 0x1880-0x18ff] has been reserved [ 0.872343] system 00:0c: [mem 0xffc00000-0xffffffff] could not be reserved [ 0.872347] system 00:0c: [mem 0xfec00000-0xfec00fff] could not be reserved [ 0.872351] system 00:0c: [mem 0xfee00000-0xfeefffff] could not be reserved [ 0.872355] system 00:0c: [mem 0xfed00000-0xfed00fff] has been reserved [ 0.872358] system 00:0c: [mem 0xfef00000-0xfef00fff] has been reserved [ 0.877147] pci 0000:00:08.0: PCI bridge to [bus 01-01] [ 0.877150] pci 0000:00:08.0: bridge window [io disabled] [ 0.877154] pci 0000:00:08.0: bridge window [mem 0xd0500000-0xd05fffff] [ 0.877158] pci 0000:00:08.0: bridge window [mem pref disabled] [ 0.877167] pci 0000:02:00.0: BAR 6: can't assign mem pref (size 0x20000) [ 0.877170] pci 0000:00:0b.0: PCI bridge to [bus 02-02] [ 0.877173] pci 0000:00:0b.0: bridge window [io 0x4000-0x4fff] [ 0.877177] pci 0000:00:0b.0: bridge window [mem 0xd1000000-0xd3ffffff] [ 0.877181] pci 0000:00:0b.0: bridge window [mem 0xc0000000-0xcfffffff 64bit pref] [ 0.877186] pci 0000:00:0c.0: PCI bridge to [bus 03-04] [ 0.877189] pci 0000:00:0c.0: bridge window [io 0x5000-0x5fff] [ 0.877193] pci 0000:00:0c.0: bridge window [mem 0xd0200000-0xd03fffff] [ 0.877197] pci 0000:00:0c.0: bridge window [mem 0xd0000000-0xd01fffff 64bit pref] [ 0.877201] pci 0000:00:0d.0: PCI bridge to [bus 05-05] [ 0.877204] pci 0000:00:0d.0: bridge window [io disabled] [ 0.877209] pci 0000:00:0d.0: bridge window [mem 0xd0400000-0xd04fffff] [ 0.877212] pci 0000:00:0d.0: bridge window [mem pref disabled] [ 0.877223] pci 0000:00:08.0: setting latency timer to 64 [ 0.877230] pci 0000:00:0b.0: setting latency timer to 64 [ 0.877236] pci 0000:00:0c.0: setting latency timer to 64 [ 0.877242] pci 0000:00:0d.0: setting latency timer to 64 [ 0.877246] pci_bus 0000:00: resource 4 [io 0x0000-0x0cf7] [ 0.877249] pci_bus 0000:00: resource 5 [io 0x0d00-0xffff] [ 0.877252] pci_bus 0000:00: resource 6 [mem 0x000a0000-0x000bffff] [ 0.877255] pci_bus 0000:00: resource 7 [mem 0x000c0000-0x000c3fff] [ 0.877258] pci_bus 0000:00: resource 8 [mem 0x000c4000-0x000c7fff] [ 0.877261] pci_bus 0000:00: resource 9 [mem 0x000c8000-0x000cbfff] [ 0.877264] pci_bus 0000:00: resource 10 [mem 0x000d0000-0x000d3fff] [ 0.877268] pci_bus 0000:00: resource 11 [mem 0x000d4000-0x000d7fff] [ 0.877271] pci_bus 0000:00: resource 12 [mem 0x000d8000-0x000dbfff] [ 0.877274] pci_bus 0000:00: resource 13 [mem 0x000dc000-0x000dffff] [ 0.877277] pci_bus 0000:00: resource 14 [mem 0x000e0000-0x000e3fff] [ 0.877280] pci_bus 0000:00: resource 15 [mem 0x000e4000-0x000e7fff] [ 0.877283] pci_bus 0000:00: resource 16 [mem 0x000e8000-0x000ebfff] [ 0.877286] pci_bus 0000:00: resource 17 [mem 0x000ec000-0x000effff] [ 0.877289] pci_bus 0000:00: resource 18 [mem 0x000f0000-0x000fffff] [ 0.877292] pci_bus 0000:00: resource 19 [mem 0xfed40000-0xfed44fff] [ 0.877295] pci_bus 0000:00: resource 20 [mem 0xc0000000-0xfebfffff] [ 0.877298] pci_bus 0000:01: resource 1 [mem 0xd0500000-0xd05fffff] [ 0.877301] pci_bus 0000:01: resource 4 [io 0x0000-0x0cf7] [ 0.877304] pci_bus 0000:01: resource 5 [io 0x0d00-0xffff] [ 0.877308] pci_bus 0000:01: resource 6 [mem 0x000a0000-0x000bffff] [ 0.877311] pci_bus 0000:01: resource 7 [mem 0x000c0000-0x000c3fff] [ 0.877314] pci_bus 0000:01: resource 8 [mem 0x000c4000-0x000c7fff] [ 0.877316] pci_bus 0000:01: resource 9 [mem 0x000c8000-0x000cbfff] [ 0.877319] pci_bus 0000:01: resource 10 [mem 0x000d0000-0x000d3fff] [ 0.877323] pci_bus 0000:01: resource 11 [mem 0x000d4000-0x000d7fff] [ 0.877326] pci_bus 0000:01: resource 12 [mem 0x000d8000-0x000dbfff] [ 0.877329] pci_bus 0000:01: resource 13 [mem 0x000dc000-0x000dffff] [ 0.877332] pci_bus 0000:01: resource 14 [mem 0x000e0000-0x000e3fff] [ 0.877335] pci_bus 0000:01: resource 15 [mem 0x000e4000-0x000e7fff] [ 0.877338] pci_bus 0000:01: resource 16 [mem 0x000e8000-0x000ebfff] [ 0.877341] pci_bus 0000:01: resource 17 [mem 0x000ec000-0x000effff] [ 0.877344] pci_bus 0000:01: resource 18 [mem 0x000f0000-0x000fffff] [ 0.877348] pci_bus 0000:01: resource 19 [mem 0xfed40000-0xfed44fff] [ 0.877351] pci_bus 0000:01: resource 20 [mem 0xc0000000-0xfebfffff] [ 0.877354] pci_bus 0000:02: resource 0 [io 0x4000-0x4fff] [ 0.877357] pci_bus 0000:02: resource 1 [mem 0xd1000000-0xd3ffffff] [ 0.877360] pci_bus 0000:02: resource 2 [mem 0xc0000000-0xcfffffff 64bit pref] [ 0.877363] pci_bus 0000:03: resource 0 [io 0x5000-0x5fff] [ 0.877367] pci_bus 0000:03: resource 1 [mem 0xd0200000-0xd03fffff] [ 0.877370] pci_bus 0000:03: resource 2 [mem 0xd0000000-0xd01fffff 64bit pref] [ 0.877373] pci_bus 0000:05: resource 1 [mem 0xd0400000-0xd04fffff] [ 0.877415] NET: Registered protocol family 2 [ 0.877627] IP route cache hash table entries: 131072 (order: 8, 1048576 bytes) [ 0.879890] TCP established hash table entries: 524288 (order: 11, 8388608 bytes) [ 0.886395] TCP bind hash table entries: 65536 (order: 8, 1048576 bytes) [ 0.887171] TCP: Hash tables configured (established 524288 bind 65536) [ 0.887175] TCP reno registered [ 0.887194] UDP hash table entries: 2048 (order: 4, 65536 bytes) [ 0.887259] UDP-Lite hash table entries: 2048 (order: 4, 65536 bytes) [ 0.887408] NET: Registered protocol family 1 [ 0.887587] pci 0000:00:00.0: Found enabled HT MSI Mapping [ 0.887642] pci 0000:00:00.0: Found enabled HT MSI Mapping [ 0.887702] pci 0000:00:00.0: Found enabled HT MSI Mapping [ 0.887769] pci 0000:00:00.0: Found enabled HT MSI Mapping [ 0.887838] pci 0000:00:00.0: Found enabled HT MSI Mapping [ 0.887913] pci 0000:00:00.0: Found enabled HT MSI Mapping [ 0.887992] pci 0000:00:00.0: Found enabled HT MSI Mapping [ 0.888024] pci 0000:02:00.0: Boot video device [ 0.888031] PCI: CLS 64 bytes, default 64 [ 0.889755] Simple Boot Flag at 0x36 set to 0x1 [ 0.890010] Scanning for low memory corruption every 60 seconds [ 0.890209] audit: initializing netlink socket (disabled) [ 0.890223] type=2000 audit(1278112806.890:1): initialized [ 0.905996] HugeTLB registered 2 MB page size, pre-allocated 0 pages [ 0.907893] VFS: Disk quotas dquot_6.5.2 [ 0.907975] Dquot-cache hash table entries: 512 (order 0, 4096 bytes) [ 0.908764] fuse init (API version 7.14) [ 0.908904] msgmni has been set to 6030 [ 0.909274] alg: No test for stdrng (krng) [ 0.909354] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 253) [ 0.909358] io scheduler noop registered [ 0.909361] io scheduler deadline registered [ 0.909414] io scheduler cfq registered (default) [ 0.909615] pcieport 0000:00:0b.0: setting latency timer to 64 [ 0.909636] alloc irq_desc for 40 on node 0 [ 0.909639] alloc kstat_irqs on node 0 [ 0.909649] pcieport 0000:00:0b.0: irq 40 for MSI/MSI-X [ 0.909765] pcieport 0000:00:0c.0: setting latency timer to 64 [ 0.909782] alloc irq_desc for 41 on node 0 [ 0.909784] alloc kstat_irqs on node 0 [ 0.909789] pcieport 0000:00:0c.0: irq 41 for MSI/MSI-X [ 0.909911] pcieport 0000:00:0d.0: setting latency timer to 64 [ 0.909927] alloc irq_desc for 42 on node 0 [ 0.909929] alloc kstat_irqs on node 0 [ 0.909935] pcieport 0000:00:0d.0: irq 42 for MSI/MSI-X [ 0.910036] pcieport 0000:00:0b.0: Requesting control of PCIe PME from ACPI BIOS [ 0.910044] Firmware did not grant requested _OSC control [ 0.910047] pcieport 0000:00:0b.0: Failed to receive control of PCIe PME service: no _OSC support [ 0.910053] pcie_pme: probe of 0000:00:0b.0:pcie01 failed with error -13 [ 0.910059] pcieport 0000:00:0c.0: Requesting control of PCIe PME from ACPI BIOS [ 0.910062] Firmware did not grant requested _OSC control [ 0.910064] pcieport 0000:00:0c.0: Failed to receive control of PCIe PME service: no _OSC support [ 0.910068] pcie_pme: probe of 0000:00:0c.0:pcie01 failed with error -13 [ 0.910074] pcieport 0000:00:0d.0: Requesting control of PCIe PME from ACPI BIOS [ 0.910077] Firmware did not grant requested _OSC control [ 0.910080] pcieport 0000:00:0d.0: Failed to receive control of PCIe PME service: no _OSC support [ 0.910084] pcie_pme: probe of 0000:00:0d.0:pcie01 failed with error -13 [ 0.910114] pci_hotplug: PCI Hot Plug PCI Core version: 0.5 [ 0.910142] pciehp: PCI Express Hot Plug Controller Driver version: 0.4 [ 0.982602] ACPI: AC Adapter [ACAD] (on-line) [ 0.982699] input: Lid Switch as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0D:00/input/input0 [ 1.052560] ACPI: Lid Switch [LID] [ 1.052642] input: Sleep Button as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0E:00/input/input1 [ 1.052646] ACPI: Sleep Button [SLPB] [ 1.052724] input: Power Button as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0C:00/input/input2 [ 1.052728] ACPI: Power Button [PWRB] [ 1.052776] input: Power Button as /devices/LNXSYSTM:00/LNXPWRBN:00/input/input3 [ 1.052779] ACPI: Power Button [PWRF] [ 1.053131] ACPI: acpi_idle registered with cpuidle [ 1.053194] ACPI: processor limited to max C-state 1 [ 1.114366] ACPI: Invalid active0 threshold [ 1.130887] thermal LNXTHERM:01: registered as thermal_zone0 [ 1.130898] ACPI: Thermal Zone [THRM] (58 C) [ 1.131004] ERST: Table is not found! [ 1.132992] Linux agpgart interface v0.103 [ 1.133107] Serial: 8250/16550 driver, 4 ports, IRQ sharing enabled [ 1.134845] brd: module loaded [ 1.135635] loop: module loaded [ 1.136208] pata_acpi 0000:00:06.0: setting latency timer to 64 [ 1.136685] ACPI: PCI Interrupt Link [LSI0] enabled at IRQ 23 [ 1.136692] alloc irq_desc for 23 on node 0 [ 1.136694] alloc kstat_irqs on node 0 [ 1.136707] pata_acpi 0000:00:09.0: PCI INT A -> Link[LSI0] -> GSI 23 (level, low) -> IRQ 23 [ 1.136738] pata_acpi 0000:00:09.0: setting latency timer to 64 [ 1.136747] pata_acpi 0000:00:09.0: PCI INT A disabled [ 1.137238] Fixed MDIO Bus: probed [ 1.137279] PPP generic driver version 2.4.2 [ 1.137336] tun: Universal TUN/TAP device driver, 1.6 [ 1.137338] tun: (C) 1999-2004 Max Krasnyansky [ 1.137433] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver [ 1.137874] ACPI: PCI Interrupt Link [LUS2] enabled at IRQ 22 [ 1.137878] alloc irq_desc for 22 on node 0 [ 1.137880] alloc kstat_irqs on node 0 [ 1.137889] ehci_hcd 0000:00:02.1: PCI INT B -> Link[LUS2] -> GSI 22 (level, low) -> IRQ 22 [ 1.137912] ehci_hcd 0000:00:02.1: setting latency timer to 64 [ 1.137916] ehci_hcd 0000:00:02.1: EHCI Host Controller [ 1.138012] ehci_hcd 0000:00:02.1: new USB bus registered, assigned bus number 1 [ 1.138043] ehci_hcd 0000:00:02.1: debug port 1 [ 1.138052] ehci_hcd 0000:00:02.1: cache line size of 64 is not supported [ 1.138081] ehci_hcd 0000:00:02.1: irq 22, io mem 0xd0889000 [ 1.138852] ACPI: EC: GPE storm detected, transactions will use polling mode [ 1.160042] ehci_hcd 0000:00:02.1: USB 2.0 started, EHCI 1.00 [ 1.160184] hub 1-0:1.0: USB hub found [ 1.160191] hub 1-0:1.0: 5 ports detected [ 1.160769] ACPI: PCI Interrupt Link [Z00O] enabled at IRQ 21 [ 1.160776] alloc irq_desc for 21 on node 0 [ 1.160778] alloc kstat_irqs on node 0 [ 1.160791] ehci_hcd 0000:00:04.1: PCI INT B -> Link[Z00O] -> GSI 21 (level, low) -> IRQ 21 [ 1.160815] ehci_hcd 0000:00:04.1: setting latency timer to 64 [ 1.160818] ehci_hcd 0000:00:04.1: EHCI Host Controller [ 1.160901] ehci_hcd 0000:00:04.1: new USB bus registered, assigned bus number 2 [ 1.160932] ehci_hcd 0000:00:04.1: debug port 1 [ 1.160940] ehci_hcd 0000:00:04.1: cache line size of 64 is not supported [ 1.160966] ehci_hcd 0000:00:04.1: irq 21, io mem 0xd0889400 [ 1.180034] ehci_hcd 0000:00:04.1: USB 2.0 started, EHCI 1.00 [ 1.180173] hub 2-0:1.0: USB hub found [ 1.180179] hub 2-0:1.0: 5 ports detected [ 1.180296] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver [ 1.180799] ACPI: PCI Interrupt Link [LUS0] enabled at IRQ 20 [ 1.180806] alloc irq_desc for 20 on node 0 [ 1.180808] alloc kstat_irqs on node 0 [ 1.180820] ohci_hcd 0000:00:02.0: PCI INT A -> Link[LUS0] -> GSI 20 (level, low) -> IRQ 20 [ 1.180846] ohci_hcd 0000:00:02.0: setting latency timer to 64 [ 1.180850] ohci_hcd 0000:00:02.0: OHCI Host Controller [ 1.180939] ohci_hcd 0000:00:02.0: new USB bus registered, assigned bus number 3 [ 1.180975] ohci_hcd 0000:00:02.0: irq 20, io mem 0xd0886000 [ 1.242179] hub 3-0:1.0: USB hub found [ 1.242186] hub 3-0:1.0: 5 ports detected [ 1.242778] ACPI: PCI Interrupt Link [Z00N] enabled at IRQ 23 [ 1.242784] ohci_hcd 0000:00:04.0: PCI INT A -> Link[Z00N] -> GSI 23 (level, low) -> IRQ 23 [ 1.242809] ohci_hcd 0000:00:04.0: setting latency timer to 64 [ 1.242812] ohci_hcd 0000:00:04.0: OHCI Host Controller [ 1.242884] ohci_hcd 0000:00:04.0: new USB bus registered, assigned bus number 4 [ 1.242921] ohci_hcd 0000:00:04.0: irq 23, io mem 0xd0887000 [ 1.302164] hub 4-0:1.0: USB hub found [ 1.302171] hub 4-0:1.0: 5 ports detected [ 1.302283] uhci_hcd: USB Universal Host Controller Interface driver [ 1.302436] PNP: PS/2 Controller [PNP0303:KBC0,PNP0f13:MSE0] at 0x60,0x64 irq 1,12 [ 1.332239] serio: i8042 KBD port at 0x60,0x64 irq 1 [ 1.332259] serio: i8042 AUX port at 0x60,0x64 irq 12 [ 1.332359] mice: PS/2 mouse device common for all mice [ 1.332549] rtc_cmos 00:04: RTC can wake from S4 [ 1.332605] rtc_cmos 00:04: rtc core: registered rtc_cmos as rtc0 [ 1.332648] rtc0: alarms up to one year, y3k, 114 bytes nvram, hpet irqs [ 1.332782] device-mapper: uevent: version 1.0.3 [ 1.332922] device-mapper: ioctl: 4.17.0-ioctl (2010-03-05) initialised: dm-devel@redhat.com [ 1.333013] device-mapper: multipath: version 1.1.1 loaded [ 1.333016] device-mapper: multipath round-robin: version 1.0.0 loaded [ 1.333205] cpuidle: using governor ladder [ 1.333208] cpuidle: using governor menu [ 1.333510] TCP cubic registered [ 1.333670] NET: Registered protocol family 10 [ 1.334125] lo: Disabled Privacy Extensions [ 1.334370] NET: Registered protocol family 17 [ 1.334422] powernow-k8: Found 1 AMD Athlon(tm) 64 X2 Dual-Core Processor TK-57 (2 cpu cores) (version 2.20.00) [ 1.334486] powernow-k8: 0 : fid 0xb (1900 MHz), vid 0x13 [ 1.334488] powernow-k8: 1 : fid 0xa (1800 MHz), vid 0x14 [ 1.334491] powernow-k8: 2 : fid 0x8 (1600 MHz), vid 0x15 [ 1.334493] powernow-k8: 3 : fid 0x0 (800 MHz), vid 0x1a [ 1.334699] PM: Resume from disk failed. [ 1.334714] registered taskstats version 1 [ 1.335034] Magic number: 2:866:351 [ 1.335162] rtc_cmos 00:04: setting system clock to 2010-07-02 23:20:08 UTC (1278112808) [ 1.335166] BIOS EDD facility v0.16 2004-Jun-25, 0 devices found [ 1.335168] EDD information not available. [ 1.335293] Freeing unused kernel memory: 904k freed [ 1.335890] Write protecting the kernel read-only data: 10240k [ 1.336087] Freeing unused kernel memory: 420k freed [ 1.336519] Freeing unused kernel memory: 1604k freed [ 1.362710] input: AT Translated Set 2 keyboard as /devices/platform/i8042/serio0/input/input4 [ 1.363683] udev: starting version 151 [ 1.491483] forcedeth: Reverse Engineered nForce ethernet driver. Version 0.64. [ 1.491959] ACPI: PCI Interrupt Link [LMAC] enabled at IRQ 22 [ 1.491967] forcedeth 0000:00:0a.0: PCI INT A -> Link[LMAC] -> GSI 22 (level, low) -> IRQ 22 [ 1.491972] forcedeth 0000:00:0a.0: setting latency timer to 64 [ 1.506009] sdhci: Secure Digital Host Controller Interface driver [ 1.506014] sdhci: Copyright(c) Pierre Ossman [ 1.527489] ACPI: PCI Interrupt Link [LNK1] enabled at IRQ 11 [ 1.527508] firewire_ohci 0000:01:04.0: PCI INT A -> Link[LNK1] -> GSI 11 (level, low) -> IRQ 11 [ 1.780038] firewire_ohci: Added fw-ohci device 0000:01:04.0, OHCI v1.0, 4 IR + 4 IT contexts, quirks 0x0 [ 1.780146] sdhci-pci 0000:01:04.1: SDHCI controller found [1180:0822] (rev 22) [ 1.780670] ACPI: PCI Interrupt Link [LNK2] enabled at IRQ 11 [ 1.780677] sdhci-pci 0000:01:04.1: PCI INT B -> Link[LNK2] -> GSI 11 (level, low) -> IRQ 11 [ 1.781723] sdhci-pci 0000:01:04.1: Will use DMA mode even though HW doesn't fully claim to support it. [ 1.782783] Registered led device: mmc0:: [ 1.783825] mmc0: SDHCI controller on PCI [0000:01:04.1] using DMA [ 1.841680] usb 4-3: new full speed USB device using ohci_hcd and address 2 [ 2.031184] forcedeth 0000:00:0a.0: ifname eth0, PHY OUI 0x732 @ 1, addr 00:1b:38:cd:e1:bd [ 2.031190] forcedeth 0000:00:0a.0: highdma pwrctl mgmt gbit lnktim msi desc-v3 [ 2.031287] pata_amd 0000:00:06.0: version 0.4.1 [ 2.031342] pata_amd 0000:00:06.0: setting latency timer to 64 [ 2.031431] scsi0 : pata_amd [ 2.031783] scsi1 : pata_amd [ 2.032343] ata1: PATA max UDMA/133 cmd 0x1f0 ctl 0x3f6 bmdma 0x30c0 irq 14 [ 2.032346] ata2: PATA max UDMA/133 cmd 0x170 ctl 0x376 bmdma 0x30c8 irq 15 [ 2.032630] ahci 0000:00:09.0: version 3.0 [ 2.032645] ahci 0000:00:09.0: PCI INT A -> Link[LSI0] -> GSI 23 (level, low) -> IRQ 23 [ 2.032682] ahci 0000:00:09.0: controller can do NCQ, turning on CAP_NCQ [ 2.032684] ahci 0000:00:09.0: controller can't do PMP, turning off CAP_PMP [ 2.032745] ahci 0000:00:09.0: AHCI 0001.0100 32 slots 4 ports 3 Gbps 0xf impl IDE mode [ 2.032750] ahci 0000:00:09.0: flags: 64bit ncq sntf led clo pio slum part [ 2.032755] ahci 0000:00:09.0: setting latency timer to 64 [ 2.033233] scsi2 : ahci [ 2.033384] scsi3 : ahci [ 2.033492] scsi4 : ahci [ 2.033584] scsi5 : ahci [ 2.033757] ata3: SATA max UDMA/133 irq 23, connection status changed [ 2.033761] ata4: SATA max UDMA/133 abar m8192@0xd0884000 port 0xd0884180 irq 23 [ 2.033765] ata5: SATA max UDMA/133 abar m8192@0xd0884000 port 0xd0884200 irq 23 [ 2.033769] ata6: SATA max UDMA/133 abar m8192@0xd0884000 port 0xd0884280 irq 23 [ 2.210324] ata1.00: ATAPI: Optiarc DVD RW AD-7530B, NX09, max UDMA/33 [ 2.210354] ata1: nv_mode_filter: 0x739f&0x739f->0x739f, BIOS=0x7000 (0xc000c700) ACPI=0x701f (60:600:0x13) [ 2.250266] ata1.00: configured for UDMA/33 [ 2.252126] scsi 0:0:0:0: CD-ROM Optiarc DVD RW AD-7530B NX09 PQ: 0 ANSI: 5 [ 2.261599] sr0: scsi3-mmc drive: 24x/24x writer dvd-ram cd/rw xa/form2 cdda tray [ 2.261603] Uniform CD-ROM driver Revision: 3.20 [ 2.261759] sr 0:0:0:0: Attached scsi CD-ROM sr0 [ 2.261847] sr 0:0:0:0: Attached scsi generic sg0 type 5 [ 2.261956] ata2: port disabled. ignoring. [ 2.262640] firewire_core: created device fw0: GUID 00023f81ba404d76, S400 [ 2.370029] ata6: SATA link down (SStatus 0 SControl 300) [ 2.370051] ata5: SATA link down (SStatus 0 SControl 300) [ 2.382536] ata4: SATA link down (SStatus 0 SControl 300) [ 2.592735] ACPI: Battery Slot [BAT1] (battery present) [ 2.780032] ata3: SATA link up 1.5 Gbps (SStatus 113 SControl 300) [ 2.826474] ata3.00: ATA-8: WDC WD2500BEVS-22UST0, 01.01A01, max UDMA/133 [ 2.826478] ata3.00: 488397168 sectors, multi 16: LBA48 NCQ (depth 31/32) [ 2.827348] ata3.00: configured for UDMA/133 [ 2.827525] scsi 2:0:0:0: Direct-Access ATA WDC WD2500BEVS-2 01.0 PQ: 0 ANSI: 5 [ 2.827754] sd 2:0:0:0: Attached scsi generic sg1 type 0 [ 2.827758] sd 2:0:0:0: [sda] 488397168 512-byte logical blocks: (250 GB/232 GiB) [ 2.827940] sd 2:0:0:0: [sda] Write Protect is off [ 2.827944] sd 2:0:0:0: [sda] Mode Sense: 00 3a 00 00 [ 2.827996] sd 2:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA [ 2.828274] sda: sda1 sda2 < sda5 sda6 sda7 > [ 2.871454] sd 2:0:0:0: [sda] Attached SCSI disk [ 3.299857] EXT4-fs (sda6): mounted filesystem with ordered data mode. Opts: (null) [ 5.038697] Adding 4881404k swap on /dev/sda5. Priority:-1 extents:1 across:4881404k [ 5.624488] udev: starting version 151 [ 6.133074] lirc_dev: IR Remote Control driver registered, major 61 [ 6.161908] lp: driver loaded but no devices found [ 6.171026] BUG: unable to handle kernel NULL pointer dereference at (null) [ 6.171197] IP: [] kfifo_alloc+0x2e/0xb0 [ 6.171314] PGD 9a43b067 PUD 9aba3067 PMD 0 [ 6.171529] Oops: 0002 [#1] SMP [ 6.171689] last sysfs file: /sys/devices/LNXSYSTM:00/LNXPWRBN:00/input/input3/name [ 6.171753] CPU 1 [ 6.171808] Modules linked in: lirc_ene0100(+) lirc_dev lp parport ahci sdhci_pci firewire_ohci firewire_core sdhci led_class libahci crc_itu_t pata_amd forcedeth [ 6.172709] [ 6.172766] Pid: 511, comm: modprobe Not tainted 2.6.35-6-generic #9-Ubuntu Fuquene/Aspire 5520 [ 6.172830] RIP: 0010:[] [] kfifo_alloc+0x2e/0xb0 [ 6.172946] RSP: 0018:ffff88009a579d08 EFLAGS: 00010286 [ 6.173005] RAX: ffff8800b9477000 RBX: 0000000000000000 RCX: ffffffff8107f229 [ 6.173067] RDX: 0000000000000000 RSI: 00000000000000d0 RDI: 0000000000000246 [ 6.173128] RBP: ffff88009a579d18 R08: 0000000000000000 R09: 0000000000000246 [ 6.173189] R10: 0000000000000030 R11: 0000000000000000 R12: 0000000000001000 [ 6.173251] R13: ffff88003787d800 R14: ffff8800bbc44c00 R15: 00000000fffffff4 [ 6.173313] FS: 00007f3022b1c700(0000) GS:ffff880001f00000(0000) knlGS:0000000000000000 [ 6.173376] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 [ 6.173435] CR2: 0000000000000000 CR3: 000000009a43d000 CR4: 00000000000006e0 [ 6.173506] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 [ 6.173578] DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400 [ 6.173649] Process modprobe (pid: 511, threadinfo ffff88009a578000, task ffff88009b2edb80) [ 6.173730] Stack: [ 6.173795] ffff88009abc7b40 ffff8800bbc58660 ffff88009a579d58 ffffffffa009ee4f [ 6.174020] <0> ffff88009a579d38 ffffffffa009f060 ffff88003787d800 ffffffffa009f580 [ 6.174357] <0> ffffffffa009f540 00000000fffffff4 ffff88009a579d98 ffffffff8132a475 [ 6.174755] Call Trace: [ 6.174825] [] ene_probe+0x17f/0x350 [lirc_ene0100] [ 6.174899] [] pnp_device_probe+0x95/0x100 [ 6.174971] [] ? driver_sysfs_add+0x62/0x90 [ 6.175041] [] really_probe+0x68/0x190 [ 6.175111] [] driver_probe_device+0x45/0x70 [ 6.175182] [] __driver_attach+0x9b/0xa0 [ 6.175252] [] ? __driver_attach+0x0/0xa0 [ 6.175322] [] bus_for_each_dev+0x68/0x90 [ 6.175392] [] driver_attach+0x1e/0x20 [ 6.175461] [] bus_add_driver+0xde/0x280 [ 6.175531] [] driver_register+0x80/0x150 [ 6.175603] [] ? ene_init+0x0/0x3e [lirc_ene0100] [ 6.175675] [] pnp_register_driver+0x21/0x30 [ 6.175746] [] ene_init+0x3c/0x3e [lirc_ene0100] [ 6.175819] [] do_one_initcall+0x3c/0x1a0 [ 6.175890] [] sys_init_module+0xbb/0x200 [ 6.175962] [] system_call_fastpath+0x16/0x1b [ 6.176032] Code: e5 41 54 53 0f 1f 44 00 00 48 89 fb 89 f7 41 89 f4 48 85 ff 48 8d 47 ff 74 33 48 85 f8 75 2e 89 d6 e8 b7 33 0c 00 48 85 c0 74 52 <48> 89 03 44 89 63 08 31 c0 c7 43 10 00 00 00 00 c7 43 0c 00 00 [ 6.179475] RIP [] kfifo_alloc+0x2e/0xb0 [ 6.179596] RSP [ 6.179662] CR2: 0000000000000000 [ 6.179763] ---[ end trace 0f811dc89fd018c0 ]--- [ 6.219306] [Firmware Bug]: ACPI(Z00P) defines _DOD but not _DOS [ 6.532782] ACPI Warning: _BQC returned an invalid level (20100428/video-640) [ 6.582743] acpi device:0f: registered as cooling_device2 [ 6.582964] input: Video Bus as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:0d/LNXVIDEO:01/input/input5 [ 6.583127] ACPI: Video Device [Z00P] (multi-head: yes rom: no post: no) [ 6.887775] vga16fb: initializing [ 6.887850] vga16fb: mapped to 0xffff8800000a0000 [ 7.034514] k8temp 0000:00:18.3: Temperature readouts might be wrong - check erratum #141 [ 7.089491] i2c i2c-0: nForce2 SMBus adapter at 0x3040 [ 7.089681] i2c i2c-1: nForce2 SMBus adapter at 0x3000 [ 7.095383] Console: switching to colour frame buffer device 80x30 [ 7.152038] fb0: VGA16 VGA frame buffer device [ 7.216274] Bluetooth: Core ver 2.15 [ 7.216596] NET: Registered protocol family 31 [ 7.219141] Bluetooth: HCI device and connection manager initialized [ 7.222029] Bluetooth: HCI socket layer initialized [ 7.309732] cfg80211: Calling CRDA to update world regulatory domain [ 7.315131] r852 0000:01:04.3: PCI INT B -> Link[LNK2] -> GSI 11 (level, low) -> IRQ 11 [ 7.323846] r852: driver loaded succesfully [ 7.470757] EDAC MC: Ver: 2.1.0 Jul 1 2010 [ 7.527328] Bluetooth: Generic Bluetooth USB driver ver 0.6 [ 7.533683] usbcore: registered new interface driver btusb [ 7.690196] EDAC amd64_edac: Ver: 3.3.0 Jul 1 2010 [ 7.696807] EDAC amd64: This node reports that Memory ECC is currently disabled, set F3x44[22] (0000:00:18.3). [ 7.711079] EDAC amd64: ECC disabled in the BIOS or no ECC capability, module will not load. [ 7.711081] Either enable ECC checking or force module loading by setting 'ecc_enable_override'. [ 7.711083] (Note that use of the override may cause unknown side effects.) [ 7.754003] input: PS/2 Mouse as /devices/platform/i8042/serio1/input/input6 [ 7.770481] amd64_edac: probe of 0000:00:18.2 failed with error -22 [ 7.788376] input: AlpsPS/2 ALPS GlidePoint as /devices/platform/i8042/serio1/input/input7 [ 8.171356] cfg80211: World regulatory domain updated: [ 8.184550] (start_freq - end_freq @ bandwidth), (max_antenna_gain, max_eirp) [ 8.211848] (2402000 KHz - 2472000 KHz @ 40000 KHz), (300 mBi, 2000 mBm) [ 8.226306] (2457000 KHz - 2482000 KHz @ 20000 KHz), (300 mBi, 2000 mBm) [ 8.240635] (2474000 KHz - 2494000 KHz @ 20000 KHz), (300 mBi, 2000 mBm) [ 8.254774] (5170000 KHz - 5250000 KHz @ 40000 KHz), (300 mBi, 2000 mBm) [ 8.254777] (5735000 KHz - 5835000 KHz @ 40000 KHz), (300 mBi, 2000 mBm) [ 8.440509] ACPI: PCI Interrupt Link [LK4E] enabled at IRQ 19 [ 8.454641] alloc irq_desc for 19 on node 0 [ 8.466196] alloc kstat_irqs on node 0 [ 8.483087] ath5k 0000:05:00.0: PCI INT A -> Link[LK4E] -> GSI 19 (level, low) -> IRQ 19 [ 8.511673] ath5k 0000:05:00.0: setting latency timer to 64 [ 8.526427] ath5k 0000:05:00.0: registered as 'phy0' [ 9.035029] ath: EEPROM regdomain: 0x65 [ 9.049661] ath: EEPROM indicates we should expect a direct regpair map [ 9.064542] ath: Country alpha2 being used: 00 [ 9.070149] type=1400 audit(1278112816.223:2): operation="profile_load" pid=664 name="/sbin/dhclient3" pid=664 comm="apparmor_parser" [ 9.070450] type=1400 audit(1278112816.223:3): operation="profile_load" pid=664 name="/usr/lib/NetworkManager/nm-dhcp-client.action" pid=664 comm="apparmor_parser" [ 9.070663] type=1400 audit(1278112816.223:4): operation="profile_load" pid=664 name="/usr/lib/connman/scripts/dhclient-script" pid=664 comm="apparmor_parser" [ 9.189455] ath: Regpair used: 0x65 [ 9.249492] phy0: Selected rate control algorithm 'minstrel' [ 9.262973] Registered led device: ath5k-phy0::rx [ 9.275509] Registered led device: ath5k-phy0::tx [ 9.287559] ath5k phy0: Atheros AR2425 chip found (MAC: 0xe2, PHY: 0x70) [ 9.301046] ACPI: PCI Interrupt Link [LAZA] enabled at IRQ 21 [ 9.313023] HDA Intel 0000:00:07.0: PCI INT A -> Link[LAZA] -> GSI 21 (level, low) -> IRQ 21 [ 9.336581] hda_intel: Disable MSI for Nvidia chipset [ 9.348949] HDA Intel 0000:00:07.0: setting latency timer to 64 [ 9.439164] nvidia: module license 'NVIDIA' taints kernel. [ 10.299777] ACPI: PCI Interrupt Link [LK2E] enabled at IRQ 17 [ 10.312575] alloc irq_desc for 17 on node 0 [ 10.322553] alloc kstat_irqs on node 0 [ 10.338112] nvidia 0000:02:00.0: PCI INT A -> Link[LK2E] -> GSI 17 (level, low) -> IRQ 17 [ 10.363826] nvidia 0000:02:00.0: setting latency timer to 64 [ 10.376644] vgaarb: device changed decodes: PCI:0000:02:00.0,olddecodes=io+mem,decodes=none:owns=io+mem [ 10.402152] NVRM: loading NVIDIA UNIX x86_64 Kernel Module 256.35 Wed Jun 16 18:42:44 PDT 2010 [ 12.571513] EXT4-fs (sda6): re-mounted. Opts: errors=remount-ro [ 13.076321] EXT4-fs (sda1): mounted filesystem with ordered data mode. Opts: (null) [ 13.273874] EXT4-fs (sda7): mounted filesystem with ordered data mode. Opts: (null) [ 14.442177] type=1400 audit(1278112821.593:5): operation="profile_load" pid=946 name="/usr/share/gdm/guest-session/Xsession" pid=946 comm="apparmor_parser" [ 14.444737] type=1400 audit(1278112821.603:6): operation="profile_replace" pid=949 name="/sbin/dhclient3" pid=949 comm="apparmor_parser" [ 14.445059] type=1400 audit(1278112821.603:7): operation="profile_replace" pid=949 name="/usr/lib/NetworkManager/nm-dhcp-client.action" pid=949 comm="apparmor_parser" [ 14.445238] type=1400 audit(1278112821.603:8): operation="profile_replace" pid=949 name="/usr/lib/connman/scripts/dhclient-script" pid=949 comm="apparmor_parser" [ 14.495999] type=1400 audit(1278112821.653:9): operation="profile_load" pid=950 name="/usr/bin/evince" pid=950 comm="apparmor_parser" [ 14.499897] type=1400 audit(1278112821.653:10): operation="profile_load" pid=950 name="/usr/bin/evince-previewer" pid=950 comm="apparmor_parser" [ 14.502386] type=1400 audit(1278112821.653:11): operation="profile_load" pid=950 name="/usr/bin/evince-thumbnailer" pid=950 comm="apparmor_parser" [ 14.572322] type=1400 audit(1278112821.723:12): operation="profile_load" pid=958 name="/usr/lib/libvirt/virt-aa-helper" pid=958 comm="apparmor_parser" [ 14.702129] type=1400 audit(1278112821.853:13): operation="profile_load" pid=959 name="/usr/lib/cups/backend/cups-pdf" pid=959 comm="apparmor_parser" [ 14.702552] type=1400 audit(1278112821.863:14): operation="profile_load" pid=959 name="/usr/sbin/cupsd" pid=959 comm="apparmor_parser" [ 15.593760] alloc irq_desc for 43 on node 0 [ 15.593767] alloc kstat_irqs on node 0 [ 15.593779] forcedeth 0000:00:0a.0: irq 43 for MSI/MSI-X [ 15.593990] eth0: no link during initialization. [ 15.595214] ADDRCONF(NETDEV_UP): eth0: link is not ready [ 15.656227] ADDRCONF(NETDEV_UP): wlan0: link is not ready [ 16.658936] kvm: Nested Virtualization enabled [ 17.309430] teredo: Disabled Privacy Extensions Bug: 601311 [ 0.000000] Initializing cgroup subsys cpuset [ 0.000000] Initializing cgroup subsys cpu [ 0.000000] Linux version 2.6.35-6-generic (buildd@vernadsky) (gcc version 4.4.4 (Ubuntu 4.4.4-6ubuntu1) ) #8-Ubuntu SMP Mon Jun 28 03:15:21 UTC 2010 (Ubuntu 2.6.35-6.8-generic 2.6.35-rc3) [ 0.000000] BIOS-provided physical RAM map: [ 0.000000] BIOS-e820: 0000000000000000 - 000000000009fc00 (usable) [ 0.000000] BIOS-e820: 000000000009fc00 - 00000000000a0000 (reserved) [ 0.000000] BIOS-e820: 00000000000e4000 - 0000000000100000 (reserved) [ 0.000000] BIOS-e820: 0000000000100000 - 000000005ffc0000 (usable) [ 0.000000] BIOS-e820: 000000005ffc0000 - 000000005ffd0000 (ACPI data) [ 0.000000] BIOS-e820: 000000005ffd0000 - 0000000060000000 (ACPI NVS) [ 0.000000] BIOS-e820: 00000000fec00000 - 00000000fec01000 (reserved) [ 0.000000] BIOS-e820: 00000000fee00000 - 00000000fee01000 (reserved) [ 0.000000] BIOS-e820: 00000000ff7c0000 - 0000000100000000 (reserved) [ 0.000000] Notice: NX (Execute Disable) protection cannot be enabled: non-PAE kernel! [ 0.000000] DMI 2.3 present. [ 0.000000] AMI BIOS detected: BIOS may corrupt low RAM, working around it. [ 0.000000] e820 update range: 0000000000000000 - 0000000000010000 (usable) ==> (reserved) [ 0.000000] e820 update range: 0000000000000000 - 0000000000001000 (usable) ==> (reserved) [ 0.000000] e820 remove range: 00000000000a0000 - 0000000000100000 (usable) [ 0.000000] last_pfn = 0x5ffc0 max_arch_pfn = 0x100000 [ 0.000000] MTRR default type: uncachable [ 0.000000] MTRR fixed ranges enabled: [ 0.000000] 00000-9FFFF write-back [ 0.000000] A0000-EFFFF uncachable [ 0.000000] F0000-FFFFF write-protect [ 0.000000] MTRR variable ranges enabled: [ 0.000000] 0 base 0000000000 mask FFC0000000 write-back [ 0.000000] 1 base 0040000000 mask FFE0000000 write-back [ 0.000000] 2 disabled [ 0.000000] 3 disabled [ 0.000000] 4 disabled [ 0.000000] 5 disabled [ 0.000000] 6 disabled [ 0.000000] 7 disabled [ 0.000000] x86 PAT enabled: cpu 0, old 0x7040600070406, new 0x7010600070106 [ 0.000000] Scanning 0 areas for low memory corruption [ 0.000000] modified physical RAM map: [ 0.000000] modified: 0000000000000000 - 0000000000010000 (reserved) [ 0.000000] modified: 0000000000010000 - 000000000009fc00 (usable) [ 0.000000] modified: 000000000009fc00 - 00000000000a0000 (reserved) [ 0.000000] modified: 00000000000e4000 - 0000000000100000 (reserved) [ 0.000000] modified: 0000000000100000 - 000000005ffc0000 (usable) [ 0.000000] modified: 000000005ffc0000 - 000000005ffd0000 (ACPI data) [ 0.000000] modified: 000000005ffd0000 - 0000000060000000 (ACPI NVS) [ 0.000000] modified: 00000000fec00000 - 00000000fec01000 (reserved) [ 0.000000] modified: 00000000fee00000 - 00000000fee01000 (reserved) [ 0.000000] modified: 00000000ff7c0000 - 0000000100000000 (reserved) [ 0.000000] initial memory mapped : 0 - 00c00000 [ 0.000000] found SMP MP-table at [c00ff780] ff780 [ 0.000000] init_memory_mapping: 0000000000000000-00000000377fe000 [ 0.000000] 0000000000 - 0000400000 page 4k [ 0.000000] 0000400000 - 0037400000 page 2M [ 0.000000] 0037400000 - 00377fe000 page 4k [ 0.000000] kernel direct mapping tables up to 377fe000 @ 15000-1a000 [ 0.000000] RAMDISK: 5f4e9000 - 5ff90000 [ 0.000000] Allocated new RAMDISK: 009ba000 - 01460ceb [ 0.000000] Move RAMDISK from 000000005f4e9000 - 000000005ff8fcea to 009ba000 - 01460cea [ 0.000000] ACPI: RSDP 000f9cb0 00021 (v02 ACPIAM) [ 0.000000] ACPI: XSDT 5ffc0100 0003C (v01 A M I OEMXSDT 06000529 MSFT 00000097) [ 0.000000] ACPI: FACP 5ffc0290 000F4 (v03 A M I OEMFACP 06000529 MSFT 00000097) [ 0.000000] ACPI Warning: 32/64X length mismatch in Gpe1Block: 0/32 (20100428/tbfadt-526) [ 0.000000] ACPI Warning: Optional field Gpe1Block has zero address or length: 0x00000000000044A0/0x0 (20100428/tbfadt-557) [ 0.000000] ACPI: DSDT 5ffc0400 04524 (v01 A0055 A0055003 00000003 INTL 02002026) [ 0.000000] ACPI: FACS 5ffd0000 00040 [ 0.000000] ACPI: APIC 5ffc0390 00068 (v01 A M I OEMAPIC 06000529 MSFT 00000097) [ 0.000000] ACPI: OEMB 5ffd0040 00041 (v01 A M I OEMBIOS 06000529 MSFT 00000097) [ 0.000000] ACPI: Local APIC address 0xfee00000 [ 0.000000] 647MB HIGHMEM available. [ 0.000000] 887MB LOWMEM available. [ 0.000000] mapped low ram: 0 - 377fe000 [ 0.000000] low ram: 0 - 377fe000 [ 0.000000] Zone PFN ranges: [ 0.000000] DMA 0x00000010 -> 0x00001000 [ 0.000000] Normal 0x00001000 -> 0x000377fe [ 0.000000] HighMem 0x000377fe -> 0x0005ffc0 [ 0.000000] Movable zone start PFN for each node [ 0.000000] early_node_map[2] active PFN ranges [ 0.000000] 0: 0x00000010 -> 0x0000009f [ 0.000000] 0: 0x00000100 -> 0x0005ffc0 [ 0.000000] On node 0 totalpages: 393039 [ 0.000000] free_area_init_node: node 0, pgdat c08156c0, node_mem_map c1462200 [ 0.000000] DMA zone: 32 pages used for memmap [ 0.000000] DMA zone: 0 pages reserved [ 0.000000] DMA zone: 3951 pages, LIFO batch:0 [ 0.000000] Normal zone: 1744 pages used for memmap [ 0.000000] Normal zone: 221486 pages, LIFO batch:31 [ 0.000000] HighMem zone: 1296 pages used for memmap [ 0.000000] HighMem zone: 164530 pages, LIFO batch:31 [ 0.000000] Using APIC driver default [ 0.000000] Nvidia board detected. Ignoring ACPI timer override. [ 0.000000] If you got timer trouble try acpi_use_timer_override [ 0.000000] ACPI: PM-Timer IO Port: 0x4008 [ 0.000000] ACPI: Local APIC address 0xfee00000 [ 0.000000] ACPI: LAPIC (acpi_id[0x01] lapic_id[0x00] enabled) [ 0.000000] ACPI: IOAPIC (id[0x01] address[0xfec00000] gsi_base[0]) [ 0.000000] IOAPIC[0]: apic_id 1, version 17, address 0xfec00000, GSI 0-23 [ 0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 0 global_irq 2 dfl dfl) [ 0.000000] ACPI: BIOS IRQ0 pin2 override ignored. [ 0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 9 global_irq 9 high level) [ 0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 14 global_irq 14 high edge) [ 0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 15 global_irq 15 high edge) [ 0.000000] ACPI: IRQ9 used by override. [ 0.000000] ACPI: IRQ14 used by override. [ 0.000000] ACPI: IRQ15 used by override. [ 0.000000] Using ACPI (MADT) for SMP configuration information [ 0.000000] SMP: Allowing 1 CPUs, 0 hotplug CPUs [ 0.000000] nr_irqs_gsi: 40 [ 0.000000] early_res array is doubled to 64 at [16000 - 167ff] [ 0.000000] PM: Registered nosave memory: 000000000009f000 - 00000000000a0000 [ 0.000000] PM: Registered nosave memory: 00000000000a0000 - 00000000000e4000 [ 0.000000] PM: Registered nosave memory: 00000000000e4000 - 0000000000100000 [ 0.000000] Allocating PCI resources starting at 60000000 (gap: 60000000:9ec00000) [ 0.000000] Booting paravirtualized kernel on bare hardware [ 0.000000] setup_percpu: NR_CPUS:8 nr_cpumask_bits:8 nr_cpu_ids:1 nr_node_ids:1 [ 0.000000] PERCPU: Embedded 14 pages/cpu @c2400000 s36480 r0 d20864 u4194304 [ 0.000000] pcpu-alloc: s36480 r0 d20864 u4194304 alloc=1*4194304 [ 0.000000] pcpu-alloc: [0] 0 [ 0.000000] Built 1 zonelists in Zone order, mobility grouping on. Total pages: 389967 [ 0.000000] Kernel command line: BOOT_IMAGE=/casper/vmlinuz file=/cdrom/preseed/ubuntu.seed boot=casper initrd=/casper/initrd.lz quiet splash -- maybe-ubiquity [ 0.000000] PID hash table entries: 4096 (order: 2, 16384 bytes) [ 0.000000] Dentry cache hash table entries: 131072 (order: 7, 524288 bytes) [ 0.000000] Inode-cache hash table entries: 65536 (order: 6, 262144 bytes) [ 0.000000] Enabling fast FPU save and restore... done. [ 0.000000] Enabling unmasked SIMD FPU exception support... done. [ 0.000000] Initializing CPU#0 [ 0.000000] allocated 7862720 bytes of page_cgroup [ 0.000000] please try 'cgroup_disable=memory' option if you don't want memory cgroups [ 0.000000] Subtract (46 early reservations) [ 0.000000] #1 [0000001000 - 0000002000] EX TRAMPOLINE [ 0.000000] #2 [0000100000 - 00009b591c] TEXT DATA BSS [ 0.000000] #3 [00009b6000 - 00009b918c] BRK [ 0.000000] #4 [00000ff790 - 0000100000] BIOS reserved [ 0.000000] #5 [00000ff780 - 00000ff790] MP-table mpf [ 0.000000] #6 [000009fc00 - 00000f0ed0] BIOS reserved [ 0.000000] #7 [00000f0fc8 - 00000ff780] BIOS reserved [ 0.000000] #8 [00000f0ed0 - 00000f0fc8] MP-table mpc [ 0.000000] #9 [0000010000 - 0000011000] TRAMPOLINE [ 0.000000] #10 [0000011000 - 0000015000] ACPI WAKEUP [ 0.000000] #11 [0000015000 - 0000016000] PGTABLE [ 0.000000] #12 [00009ba000 - 0001461000] NEW RAMDISK [ 0.000000] #13 [0001461000 - 0001462000] BOOTMEM [ 0.000000] #14 [0001462000 - 0002062000] BOOTMEM [ 0.000000] #15 [0002062000 - 0002062004] BOOTMEM [ 0.000000] #16 [0002062040 - 0002062100] BOOTMEM [ 0.000000] #17 [0002062100 - 0002062154] BOOTMEM [ 0.000000] #18 [0002062180 - 0002065180] BOOTMEM [ 0.000000] #19 [0002065180 - 00020651c0] BOOTMEM [ 0.000000] #20 [00020651c0 - 00020681c0] BOOTMEM [ 0.000000] #21 [00020681c0 - 00020681e7] BOOTMEM [ 0.000000] #22 [0002068200 - 0002068318] BOOTMEM [ 0.000000] #23 [0002068340 - 0002068380] BOOTMEM [ 0.000000] #24 [0002068380 - 00020683c0] BOOTMEM [ 0.000000] #25 [00020683c0 - 0002068400] BOOTMEM [ 0.000000] #26 [0002068400 - 0002068440] BOOTMEM [ 0.000000] #27 [0002068440 - 0002068480] BOOTMEM [ 0.000000] #28 [0002068480 - 00020684c0] BOOTMEM [ 0.000000] #29 [00020684c0 - 0002068500] BOOTMEM [ 0.000000] #30 [0002068500 - 0002068540] BOOTMEM [ 0.000000] #31 [0002068540 - 0002068580] BOOTMEM [ 0.000000] #32 [0002068580 - 0002068590] BOOTMEM [ 0.000000] #33 [00020685c0 - 000206863f] BOOTMEM [ 0.000000] #34 [0002068640 - 00020686bf] BOOTMEM [ 0.000000] #35 [0002400000 - 000240e000] BOOTMEM [ 0.000000] #36 [000206a6c0 - 000206a6c4] BOOTMEM [ 0.000000] #37 [000206a700 - 000206a704] BOOTMEM [ 0.000000] #38 [000206a740 - 000206a744] BOOTMEM [ 0.000000] #39 [000206a780 - 000206a784] BOOTMEM [ 0.000000] #40 [000206a7c0 - 000206a870] BOOTMEM [ 0.000000] #41 [000206a880 - 000206a928] BOOTMEM [ 0.000000] #42 [000206a940 - 000206e940] BOOTMEM [ 0.000000] #43 [000206e940 - 00020ee940] BOOTMEM [ 0.000000] #44 [00020ee940 - 000212e940] BOOTMEM [ 0.000000] #45 [000240e000 - 0002b8d9c0] BOOTMEM [ 0.000000] Initializing HighMem for node 0 (000377fe:0005ffc0) [ 0.000000] Memory: 1531444k/1572608k available (4947k kernel code, 40712k reserved, 2404k data, 684k init, 663304k highmem) [ 0.000000] virtual kernel memory layout: [ 0.000000] fixmap : 0xfff15000 - 0xfffff000 ( 936 kB) [ 0.000000] pkmap : 0xff800000 - 0xffc00000 (4096 kB) [ 0.000000] vmalloc : 0xf7ffe000 - 0xff7fe000 ( 120 MB) [ 0.000000] lowmem : 0xc0000000 - 0xf77fe000 ( 887 MB) [ 0.000000] .init : 0xc082e000 - 0xc08d9000 ( 684 kB) [ 0.000000] .data : 0xc05d4f72 - 0xc082dfe8 (2404 kB) [ 0.000000] .text : 0xc0100000 - 0xc05d4f72 (4947 kB) [ 0.000000] Checking if this processor honours the WP bit even in supervisor mode...Ok. [ 0.000000] SLUB: Genslabs=13, HWalign=64, Order=0-3, MinObjects=0, CPUs=1, Nodes=1 [ 0.000000] Hierarchical RCU implementation. [ 0.000000] RCU dyntick-idle grace-period acceleration is enabled. [ 0.000000] RCU-based detection of stalled CPUs is disabled. [ 0.000000] Verbose stalled-CPUs detection is disabled. [ 0.000000] NR_IRQS:2304 nr_irqs:256 [ 0.000000] Extended CMOS year: 2000 [ 0.000000] spurious 8259A interrupt: IRQ7. [ 0.000000] Console: colour VGA+ 80x25 [ 0.000000] console [tty0] enabled [ 0.000000] Fast TSC calibration using PIT [ 0.000000] Detected 2114.886 MHz processor. [ 0.004005] Calibrating delay loop (skipped), value calculated using timer frequency.. 4229.77 BogoMIPS (lpj=8459544) [ 0.004011] pid_max: default: 32768 minimum: 301 [ 0.004038] Security Framework initialized [ 0.004064] AppArmor: AppArmor initialized [ 0.004115] Mount-cache hash table entries: 512 [ 0.004254] Initializing cgroup subsys ns [ 0.004259] Initializing cgroup subsys cpuacct [ 0.004263] Initializing cgroup subsys memory [ 0.004272] Initializing cgroup subsys devices [ 0.004274] Initializing cgroup subsys freezer [ 0.004277] Initializing cgroup subsys net_cls [ 0.004305] mce: CPU supports 5 MCE banks [ 0.004326] Performance Events: AMD PMU driver. [ 0.004333] ... version: 0 [ 0.004335] ... bit width: 48 [ 0.004337] ... generic registers: 4 [ 0.004339] ... value mask: 0000ffffffffffff [ 0.004342] ... max period: 00007fffffffffff [ 0.004344] ... fixed-purpose events: 0 [ 0.004346] ... event mask: 000000000000000f [ 0.005188] SMP alternatives: switching to UP code [ 0.012513] Freeing SMP alternatives: 24k freed [ 0.012538] ACPI: Core revision 20100428 [ 0.017139] ftrace: converting mcount calls to 0f 1f 44 00 00 [ 0.017147] ftrace: allocating 21765 entries in 43 pages [ 0.020099] Enabling APIC mode: Flat. Using 1 I/O APICs [ 0.020426] ..TIMER: vector=0x30 apic1=0 pin1=0 apic2=-1 pin2=-1 [ 0.063238] CPU0: AMD Athlon(tm) 64 Processor 2800+ stepping 08 [ 0.064000] Brought up 1 CPUs [ 0.064000] Total of 1 processors activated (4229.77 BogoMIPS). [ 0.064000] devtmpfs: initialized [ 0.064000] regulator: core version 0.5 [ 0.064000] Time: 11:42:15 Date: 07/03/10 [ 0.064000] NET: Registered protocol family 16 [ 0.064000] EISA bus registered [ 0.064000] node 0 link 0: io port [1000, ffffff] [ 0.064000] TOM: 0000000060000000 aka 1536M [ 0.064000] node 0 link 0: mmio [a0000, bffff] [ 0.064000] node 0 link 0: mmio [60000000, fe0bffff] [ 0.064000] bus: [00, ff] on node 0 link 0 [ 0.064000] bus: 00 index 0 [io 0x0000-0xffff] [ 0.064000] bus: 00 index 1 [mem 0x000a0000-0x000bffff] [ 0.064000] bus: 00 index 2 [mem 0x60000000-0xffffffff] [ 0.064000] ACPI: bus type pci registered [ 0.064000] PCI: PCI BIOS revision 2.10 entry at 0xf0031, last bus=2 [ 0.064000] PCI: Using configuration type 1 for base access [ 0.064000] bio: create slab at 0 [ 0.064629] ACPI: EC: Look up EC in DSDT [ 0.066060] ACPI: Executed 1 blocks of module-level executable AML code [ 0.066389] ACPI: Actual Package length (266) is larger than NumElements field (2), truncated [ 0.066393] [ 0.069018] ACPI: Interpreter enabled [ 0.069022] ACPI: (supports S0 S1 S3 S4 S5) [ 0.069045] ACPI: Using IOAPIC for interrupt routing [ 0.077106] ACPI: Power Resource [ISAV] (on) [ 0.077157] ACPI Warning: Incorrect checksum in table [OEMB] - 0x4C, should be 0x21 (20100428/tbutils-314) [ 0.077282] ACPI: No dock devices found. [ 0.077286] PCI: Ignoring host bridge windows from ACPI; if necessary, use "pci=use_crs" and report a bug [ 0.077385] ACPI: PCI Root Bridge [PCI0] (domain 0000 [bus 00-ff]) [ 0.077575] pci_root PNP0A03:00: host bridge window [io 0x0000-0x0cf7] (ignored) [ 0.077578] pci_root PNP0A03:00: host bridge window [io 0x0d00-0xffff] (ignored) [ 0.077581] pci_root PNP0A03:00: host bridge window [mem 0x000a0000-0x000bffff] (ignored) [ 0.077584] pci_root PNP0A03:00: host bridge window [mem 0x60000000-0xff7bffff] (ignored) [ 0.077605] pci 0000:00:00.0: reg 10: [mem 0xf0000000-0xf7ffffff pref] [ 0.077671] pci 0000:00:01.1: reg 10: [io 0x5080-0x509f] [ 0.077679] pci 0000:00:01.1: reg 20: [io 0x5000-0x503f] [ 0.077683] pci 0000:00:01.1: reg 24: [io 0x5040-0x507f] [ 0.077693] pci 0000:00:01.1: PME# supported from D3hot D3cold [ 0.077696] pci 0000:00:01.1: PME# disabled [ 0.077713] pci 0000:00:02.0: reg 10: [mem 0xfebfd000-0xfebfdfff] [ 0.077728] pci 0000:00:02.0: supports D1 D2 [ 0.077731] pci 0000:00:02.0: PME# supported from D0 D1 D2 D3hot D3cold [ 0.077734] pci 0000:00:02.0: PME# disabled [ 0.077747] pci 0000:00:02.1: reg 10: [mem 0xfebfe000-0xfebfefff] [ 0.077762] pci 0000:00:02.1: supports D1 D2 [ 0.077764] pci 0000:00:02.1: PME# supported from D0 D1 D2 D3hot D3cold [ 0.077767] pci 0000:00:02.1: PME# disabled [ 0.077784] pci 0000:00:02.2: reg 10: [mem 0xfebffc00-0xfebffcff] [ 0.077803] pci 0000:00:02.2: supports D1 D2 [ 0.077805] pci 0000:00:02.2: PME# supported from D0 D1 D2 D3hot D3cold [ 0.077808] pci 0000:00:02.2: PME# disabled [ 0.077827] pci 0000:00:05.0: reg 10: [mem 0xfebfc000-0xfebfcfff] [ 0.077831] pci 0000:00:05.0: reg 14: [io 0xec00-0xec07] [ 0.077845] pci 0000:00:05.0: supports D1 D2 [ 0.077847] pci 0000:00:05.0: PME# supported from D0 D1 D2 D3hot D3cold [ 0.077850] pci 0000:00:05.0: PME# disabled [ 0.077863] pci 0000:00:06.0: reg 10: [io 0xe800-0xe8ff] [ 0.077867] pci 0000:00:06.0: reg 14: [io 0xe400-0xe47f] [ 0.077871] pci 0000:00:06.0: reg 18: [mem 0xfebfb000-0xfebfbfff] [ 0.077884] pci 0000:00:06.0: supports D1 D2 [ 0.077902] pci 0000:00:08.0: reg 20: [io 0xffa0-0xffaf] [ 0.077924] pci 0000:00:0a.0: reg 10: [io 0x09f0-0x09f7] [ 0.077928] pci 0000:00:0a.0: reg 14: [io 0x0bf0-0x0bf3] [ 0.077932] pci 0000:00:0a.0: reg 18: [io 0x0970-0x0977] [ 0.077936] pci 0000:00:0a.0: reg 1c: [io 0x0b70-0x0b73] [ 0.077940] pci 0000:00:0a.0: reg 20: [io 0xc800-0xc80f] [ 0.077944] pci 0000:00:0a.0: reg 24: [io 0xc400-0xc47f] [ 0.078044] PCI: peer root bus 00 res updated from pci conf [ 0.078073] pci 0000:01:00.0: reg 10: [mem 0xfd000000-0xfdffffff] [ 0.078079] pci 0000:01:00.0: reg 14: [mem 0xe0000000-0xe7ffffff pref] [ 0.078085] pci 0000:01:00.0: reg 18: [mem 0xfc000000-0xfcffffff] [ 0.078099] pci 0000:01:00.0: reg 30: [mem 0xfeae0000-0xfeafffff pref] [ 0.078145] pci 0000:00:0b.0: PCI bridge to [bus 01-01] [ 0.078149] pci 0000:00:0b.0: bridge window [io 0xf000-0x0000] (disabled) [ 0.078153] pci 0000:00:0b.0: bridge window [mem 0xfaa00000-0xfeafffff] [ 0.078157] pci 0000:00:0b.0: bridge window [mem 0xda900000-0xea8fffff pref] [ 0.078186] pci 0000:00:0e.0: PCI bridge to [bus 02-02] [ 0.078189] pci 0000:00:0e.0: bridge window [io 0xf000-0x0000] (disabled) [ 0.078193] pci 0000:00:0e.0: bridge window [mem 0xfff00000-0x000fffff] (disabled) [ 0.078196] pci 0000:00:0e.0: bridge window [mem 0xfff00000-0x000fffff pref] (disabled) [ 0.078203] pci_bus 0000:00: on NUMA node 0 [ 0.078207] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0._PRT] [ 0.078343] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.P0P1._PRT] [ 0.083723] ACPI: PCI Interrupt Link [LNKA] (IRQs 16 17 18 19) *0, disabled. [ 0.083875] ACPI: PCI Interrupt Link [LNKB] (IRQs 16 17 18 19) *0, disabled. [ 0.084029] ACPI: PCI Interrupt Link [LNKC] (IRQs 16 17 18 19) *0, disabled. [ 0.084179] ACPI: PCI Interrupt Link [LNKD] (IRQs 16 17 18 19) *0, disabled. [ 0.084329] ACPI: PCI Interrupt Link [LNKE] (IRQs 16 17 18 19) *11 [ 0.084474] ACPI: PCI Interrupt Link [LUS0] (IRQs 20 21 22) *7 [ 0.084620] ACPI: PCI Interrupt Link [LUS1] (IRQs 20 21 22) *9 [ 0.084768] ACPI: PCI Interrupt Link [LUS2] (IRQs 20 21 22) *10 [ 0.084914] ACPI: PCI Interrupt Link [LKLN] (IRQs 20 21 22) *11 [ 0.085060] ACPI: PCI Interrupt Link [LAUI] (IRQs 20 21 22) *11 [ 0.085210] ACPI: PCI Interrupt Link [LKMO] (IRQs 20 21 22) *0, disabled. [ 0.085356] ACPI: PCI Interrupt Link [LKSM] (IRQs 20 21 22) *0, disabled. [ 0.085502] ACPI: PCI Interrupt Link [LTID] (IRQs 20 21 22) *0 [ 0.085657] ACPI: PCI Interrupt Link [LTIE] (IRQs 20 21 22) *0, disabled. [ 0.085837] ACPI: PCI Interrupt Link [LATA] (IRQs 20 21 22) *14 [ 0.085877] HEST: Table is not found! [ 0.085960] vgaarb: device added: PCI:0000:01:00.0,decodes=io+mem,owns=io+mem,locks=none [ 0.085963] vgaarb: loaded [ 0.086150] SCSI subsystem initialized [ 0.086215] libata version 3.00 loaded. [ 0.086269] usbcore: registered new interface driver usbfs [ 0.086282] usbcore: registered new interface driver hub [ 0.086308] usbcore: registered new device driver usb [ 0.086440] ACPI: WMI: Mapper loaded [ 0.086443] PCI: Using ACPI for IRQ routing [ 0.086446] PCI: pci_cache_line_size set to 64 bytes [ 0.086488] reserve RAM buffer: 000000000009fc00 - 000000000009ffff [ 0.086491] reserve RAM buffer: 000000005ffc0000 - 000000005fffffff [ 0.086593] NetLabel: Initializing [ 0.086595] NetLabel: domain hash size = 128 [ 0.086596] NetLabel: protocols = UNLABELED CIPSOv4 [ 0.086610] NetLabel: unlabeled traffic allowed by default [ 0.086657] Switching to clocksource tsc [ 0.094570] AppArmor: AppArmor Filesystem Enabled [ 0.094590] pnp: PnP ACPI init [ 0.094608] ACPI: bus type pnp registered [ 0.099031] pnp: PnP ACPI: found 14 devices [ 0.099033] ACPI: ACPI bus type pnp unregistered [ 0.099037] PnPBIOS: Disabled by ACPI PNP [ 0.099051] system 00:07: [io 0x0190-0x0193] has been reserved [ 0.099055] system 00:07: [io 0x04d0-0x04d1] has been reserved [ 0.099058] system 00:07: [io 0x4000-0x40ff window] has been reserved [ 0.099061] system 00:07: [io 0x4400-0x44ff window] has been reserved [ 0.099064] system 00:07: [io 0x4800-0x48ff window] has been reserved [ 0.099070] system 00:08: [mem 0xfec00000-0xfec00fff] could not be reserved [ 0.099074] system 00:08: [mem 0xfee00000-0xfeefffff] could not be reserved [ 0.099077] system 00:08: [mem 0xff780000-0xff7bffff] has been reserved [ 0.099082] system 00:0a: [io 0x0480-0x0487] has been reserved [ 0.099085] system 00:0a: [io 0x0d00-0x0d07] has been reserved [ 0.099091] system 00:0d: [mem 0x00000000-0x0009ffff] could not be reserved [ 0.099094] system 00:0d: [mem 0x000c0000-0x000dffff] could not be reserved [ 0.099097] system 00:0d: [mem 0x000e0000-0x000fffff] could not be reserved [ 0.099101] system 00:0d: [mem 0x00100000-0x5fffffff] could not be reserved [ 0.099104] system 00:0d: [mem 0xff7c0000-0xffffffff] has been reserved [ 0.133819] pci 0000:00:0b.0: PCI bridge to [bus 01-01] [ 0.133822] pci 0000:00:0b.0: bridge window [io disabled] [ 0.133827] pci 0000:00:0b.0: bridge window [mem 0xfaa00000-0xfeafffff] [ 0.133831] pci 0000:00:0b.0: bridge window [mem 0xda900000-0xea8fffff pref] [ 0.133836] pci 0000:00:0e.0: PCI bridge to [bus 02-02] [ 0.133838] pci 0000:00:0e.0: bridge window [io disabled] [ 0.133841] pci 0000:00:0e.0: bridge window [mem disabled] [ 0.133844] pci 0000:00:0e.0: bridge window [mem pref disabled] [ 0.133856] pci 0000:00:0e.0: setting latency timer to 64 [ 0.133860] pci_bus 0000:00: resource 4 [io 0x0000-0xffff] [ 0.133862] pci_bus 0000:00: resource 5 [mem 0x000a0000-0x000bffff] [ 0.133865] pci_bus 0000:00: resource 6 [mem 0x60000000-0xffffffff] [ 0.133868] pci_bus 0000:01: resource 1 [mem 0xfaa00000-0xfeafffff] [ 0.133871] pci_bus 0000:01: resource 2 [mem 0xda900000-0xea8fffff pref] [ 0.133915] NET: Registered protocol family 2 [ 0.133975] IP route cache hash table entries: 32768 (order: 5, 131072 bytes) [ 0.134296] TCP established hash table entries: 131072 (order: 8, 1048576 bytes) [ 0.135419] TCP bind hash table entries: 65536 (order: 7, 524288 bytes) [ 0.135976] TCP: Hash tables configured (established 131072 bind 65536) [ 0.135978] TCP reno registered [ 0.135982] UDP hash table entries: 512 (order: 2, 16384 bytes) [ 0.136001] UDP-Lite hash table entries: 512 (order: 2, 16384 bytes) [ 0.136104] NET: Registered protocol family 1 [ 0.609438] pci 0000:01:00.0: Boot video device [ 0.609442] PCI: CLS 0 bytes, default 64 [ 0.609638] cpufreq-nforce2: No nForce2 chipset. [ 0.609668] Scanning for low memory corruption every 60 seconds [ 0.609781] audit: initializing netlink socket (disabled) [ 0.609791] type=2000 audit(1278157335.608:1): initialized [ 0.620505] Trying to unpack rootfs image as initramfs... [ 2.890228] highmem bounce pool size: 64 pages [ 2.890234] HugeTLB registered 4 MB page size, pre-allocated 0 pages [ 2.891567] VFS: Disk quotas dquot_6.5.2 [ 2.891620] Dquot-cache hash table entries: 1024 (order 0, 4096 bytes) [ 2.892168] fuse init (API version 7.14) [ 2.892247] msgmni has been set to 1695 [ 2.892432] alg: No test for stdrng (krng) [ 2.892489] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 253) [ 2.892492] io scheduler noop registered [ 2.892494] io scheduler deadline registered [ 2.892506] io scheduler cfq registered (default) [ 2.892640] pci_hotplug: PCI Hot Plug PCI Core version: 0.5 [ 2.892663] pciehp: PCI Express Hot Plug Controller Driver version: 0.4 [ 2.892772] input: Power Button as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0C:00/input/input0 [ 2.892777] ACPI: Power Button [PWRB] [ 2.892824] input: Power Button as /devices/LNXSYSTM:00/LNXPWRBN:00/input/input1 [ 2.892827] ACPI: Power Button [PWRF] [ 2.893019] ACPI: acpi_idle registered with cpuidle [ 2.893044] ACPI: processor limited to max C-state 1 [ 2.896515] ERST: Table is not found! [ 2.897949] Serial: 8250/16550 driver, 4 ports, IRQ sharing enabled [ 2.898035] serial8250: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A [ 2.898116] serial8250: ttyS1 at I/O 0x2f8 (irq = 3) is a 16550A [ 2.898391] 00:0b: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A [ 2.898506] 00:0c: ttyS1 at I/O 0x2f8 (irq = 3) is a 16550A [ 2.899593] brd: module loaded [ 2.900045] isapnp: Scanning for PnP cards... [ 2.905642] loop: module loaded [ 2.905938] pata_acpi 0000:00:08.0: power state changed by ACPI to D0 [ 2.905965] pata_acpi 0000:00:08.0: power state changed by ACPI to D0 [ 2.906016] pata_acpi 0000:00:08.0: setting latency timer to 64 [ 2.906307] ACPI: PCI Interrupt Link [LTID] BIOS reported IRQ 0, using IRQ 22 [ 2.906310] ACPI: PCI Interrupt Link [LTID] enabled at IRQ 22 [ 2.906315] alloc irq_desc for 22 on node -1 [ 2.906318] alloc kstat_irqs on node -1 [ 2.906328] pata_acpi 0000:00:0a.0: PCI INT A -> Link[LTID] -> GSI 22 (level, low) -> IRQ 22 [ 2.906344] pata_acpi 0000:00:0a.0: setting latency timer to 64 [ 2.906351] pata_acpi 0000:00:0a.0: PCI INT A disabled [ 2.906686] Fixed MDIO Bus: probed [ 2.906730] PPP generic driver version 2.4.2 [ 2.906773] tun: Universal TUN/TAP device driver, 1.6 [ 2.906775] tun: (C) 1999-2004 Max Krasnyansky [ 2.906843] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver [ 2.907046] ACPI: PCI Interrupt Link [LUS2] enabled at IRQ 21 [ 2.907050] alloc irq_desc for 21 on node -1 [ 2.907051] alloc kstat_irqs on node -1 [ 2.907058] ehci_hcd 0000:00:02.2: PCI INT C -> Link[LUS2] -> GSI 21 (level, low) -> IRQ 21 [ 2.907075] ehci_hcd 0000:00:02.2: setting latency timer to 64 [ 2.907078] ehci_hcd 0000:00:02.2: EHCI Host Controller [ 2.907113] ehci_hcd 0000:00:02.2: new USB bus registered, assigned bus number 1 [ 2.907144] ehci_hcd 0000:00:02.2: debug port 1 [ 2.907149] ehci_hcd 0000:00:02.2: cache line size of 64 is not supported [ 2.907170] ehci_hcd 0000:00:02.2: irq 21, io mem 0xfebffc00 [ 2.950699] ehci_hcd 0000:00:02.2: USB 2.0 started, EHCI 1.00 [ 2.950819] hub 1-0:1.0: USB hub found [ 2.950825] hub 1-0:1.0: 8 ports detected [ 2.950887] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver [ 2.951088] ACPI: PCI Interrupt Link [LUS0] enabled at IRQ 20 [ 2.951091] alloc irq_desc for 20 on node -1 [ 2.951093] alloc kstat_irqs on node -1 [ 2.951099] ohci_hcd 0000:00:02.0: PCI INT A -> Link[LUS0] -> GSI 20 (level, low) -> IRQ 20 [ 2.951107] ohci_hcd 0000:00:02.0: setting latency timer to 64 [ 2.951110] ohci_hcd 0000:00:02.0: OHCI Host Controller [ 2.951140] ohci_hcd 0000:00:02.0: new USB bus registered, assigned bus number 2 [ 2.951163] ohci_hcd 0000:00:02.0: irq 20, io mem 0xfebfd000 [ 3.040278] hub 2-0:1.0: USB hub found [ 3.040283] hub 2-0:1.0: 4 ports detected [ 3.040516] ACPI: PCI Interrupt Link [LUS1] enabled at IRQ 22 [ 3.040520] ohci_hcd 0000:00:02.1: PCI INT B -> Link[LUS1] -> GSI 22 (level, low) -> IRQ 22 [ 3.040528] ohci_hcd 0000:00:02.1: setting latency timer to 64 [ 3.040530] ohci_hcd 0000:00:02.1: OHCI Host Controller [ 3.040564] ohci_hcd 0000:00:02.1: new USB bus registered, assigned bus number 3 [ 3.040588] ohci_hcd 0000:00:02.1: irq 22, io mem 0xfebfe000 [ 3.129721] hub 3-0:1.0: USB hub found [ 3.129726] hub 3-0:1.0: 4 ports detected [ 3.129774] uhci_hcd: USB Universal Host Controller Interface driver [ 3.129861] PNP: PS/2 Controller [PNP0f03:PS2M] at 0x60,0x64 irq 12 [ 3.129864] PNP: PS/2 controller doesn't have KBD irq; using default 1 [ 3.175300] serio: i8042 KBD port at 0x60,0x64 irq 1 [ 3.175306] serio: i8042 AUX port at 0x60,0x64 irq 12 [ 3.175368] mice: PS/2 mouse device common for all mice [ 3.175452] rtc_cmos 00:02: RTC can wake from S4 [ 3.175492] rtc_cmos 00:02: rtc core: registered rtc_cmos as rtc0 [ 3.175515] rtc0: alarms up to one year, y3k, 114 bytes nvram [ 3.175618] device-mapper: uevent: version 1.0.3 [ 3.175788] device-mapper: ioctl: 4.17.0-ioctl (2010-03-05) initialised: dm-devel@redhat.com [ 3.175838] device-mapper: multipath: version 1.1.1 loaded [ 3.175840] device-mapper: multipath round-robin: version 1.0.0 loaded [ 3.175961] EISA: Probing bus 0 at eisa.0 [ 3.175965] EISA: Cannot allocate resource for mainboard [ 3.175967] Cannot allocate resource for EISA slot 1 [ 3.175969] Cannot allocate resource for EISA slot 2 [ 3.175971] Cannot allocate resource for EISA slot 3 [ 3.175974] Cannot allocate resource for EISA slot 4 [ 3.175976] Cannot allocate resource for EISA slot 5 [ 3.175978] Cannot allocate resource for EISA slot 6 [ 3.175980] Cannot allocate resource for EISA slot 7 [ 3.175982] Cannot allocate resource for EISA slot 8 [ 3.175984] EISA: Detected 0 cards. [ 3.176037] cpuidle: using governor ladder [ 3.176040] cpuidle: using governor menu [ 3.176316] TCP cubic registered [ 3.176440] NET: Registered protocol family 10 [ 3.176764] lo: Disabled Privacy Extensions [ 3.176959] NET: Registered protocol family 17 [ 3.176986] powernow-k8: Found 1 AMD Athlon(tm) 64 Processor 2800+ (1 cpu cores) (version 2.20.00) [ 3.177071] powernow-k8: 0 : fid 0xa (1800 MHz), vid 0x2 [ 3.177074] powernow-k8: 1 : fid 0x0 (800 MHz), vid 0xa [ 3.177307] Using IPI No-Shortcut mode [ 3.177387] PM: Resume from disk failed. [ 3.177399] registered taskstats version 1 [ 3.177538] Magic number: 2:81:731 [ 3.177634] rtc_cmos 00:02: setting system clock to 2010-07-03 11:42:18 UTC (1278157338) [ 3.177637] BIOS EDD facility v0.16 2004-Jun-25, 0 devices found [ 3.177639] EDD information not available. [ 3.264715] isapnp: No Plug & Play device found [ 3.568590] usb 1-3: new high speed USB device using ehci_hcd and address 3 [ 3.580535] Freeing initrd memory: 10908k freed [ 3.591803] Freeing unused kernel memory: 684k freed [ 3.592677] Write protecting the kernel text: 4948k [ 3.592707] Write protecting the kernel read-only data: 2020k [ 3.640136] udev: starting version 151 [ 3.812037] usb 1-5: new high speed USB device using ehci_hcd and address 4 [ 3.819246] pata_amd 0000:00:08.0: version 0.4.1 [ 3.819318] pata_amd 0000:00:08.0: power state changed by ACPI to D0 [ 3.819346] pata_amd 0000:00:08.0: power state changed by ACPI to D0 [ 3.819391] pata_amd 0000:00:08.0: setting latency timer to 64 [ 3.856931] scsi0 : pata_amd [ 3.857285] Linux agpgart interface v0.103 [ 3.885799] scsi1 : pata_amd [ 3.886547] ata1: PATA max UDMA/133 cmd 0x1f0 ctl 0x3f6 bmdma 0xffa0 irq 14 [ 3.886550] ata2: PATA max UDMA/133 cmd 0x170 ctl 0x376 bmdma 0xffa8 irq 15 [ 3.886713] forcedeth: Reverse Engineered nForce ethernet driver. Version 0.64. [ 3.886933] ACPI: PCI Interrupt Link [LKLN] enabled at IRQ 21 [ 3.886938] forcedeth 0000:00:05.0: PCI INT A -> Link[LKLN] -> GSI 21 (level, low) -> IRQ 21 [ 3.886943] forcedeth 0000:00:05.0: setting latency timer to 64 [ 3.886990] nv_probe: set workaround bit for reversed mac addr [ 3.909350] [drm] Initialized drm 1.1.0 20060810 [ 3.912707] FDC 0 is a post-1991 82077 [ 3.973511] Initializing USB Mass Storage driver... [ 3.973631] scsi2 : usb-storage 1-5:1.0 [ 3.973766] usbcore: registered new interface driver usb-storage [ 3.973768] USB Mass Storage support registered. [ 4.048260] ata1.00: ATAPI: LITE-ON DVDRW SOHW-1213S, TS0J, max UDMA/66 [ 4.048288] ata1: nv_mode_filter: 0x1f39f&0x1f39f->0x1f39f, BIOS=0x1f000 (0xc5000000) ACPI=0x1f01f (30:600:0x13) [ 4.064189] ata1.00: configured for UDMA/66 [ 4.065299] scsi 0:0:0:0: CD-ROM LITE-ON DVDRW SOHW-1213S TS0J PQ: 0 ANSI: 5 [ 4.067955] sr0: scsi3-mmc drive: 32x/32x writer cd/rw xa/form2 cdda tray [ 4.067959] Uniform CD-ROM driver Revision: 3.20 [ 4.068073] sr 0:0:0:0: Attached scsi CD-ROM sr0 [ 4.068133] sr 0:0:0:0: Attached scsi generic sg0 type 5 [ 4.277562] ACPI: PCI Interrupt Link [LNKE] enabled at IRQ 19 [ 4.277569] alloc irq_desc for 19 on node -1 [ 4.277571] alloc kstat_irqs on node -1 [ 4.277582] nouveau 0000:01:00.0: PCI INT A -> Link[LNKE] -> GSI 19 (level, low) -> IRQ 19 [ 4.281207] [drm] nouveau 0000:01:00.0: Detected an NV40 generation card (0x440100a1) [ 4.282587] [drm] nouveau 0000:01:00.0: Attempting to load BIOS image from PROM [ 4.391723] [drm] nouveau 0000:01:00.0: ... appears to be valid [ 4.391727] [drm] nouveau 0000:01:00.0: BIT BIOS found [ 4.391731] [drm] nouveau 0000:01:00.0: Bios version 05.40.02.15 [ 4.391735] [drm] nouveau 0000:01:00.0: BIT table 'd' not found [ 4.391738] [drm] nouveau 0000:01:00.0: Found Display Configuration Block version 3.0 [ 4.391742] [drm] nouveau 0000:01:00.0: Raw DCB entry 0: 01000310 00000028 [ 4.391746] [drm] nouveau 0000:01:00.0: Raw DCB entry 1: 02011300 00000028 [ 4.391748] [drm] nouveau 0000:01:00.0: Raw DCB entry 2: 01011302 00000000 [ 4.391751] [drm] nouveau 0000:01:00.0: Raw DCB entry 3: 020223f1 0000c033 [ 4.391755] [drm] nouveau 0000:01:00.0: DCB connector table: VHER 0x30 5 3 2 [ 4.391759] [drm] nouveau 0000:01:00.0: 0: 0x00001000: type 0x00 idx 0 tag 0x07 [ 4.391762] [drm] nouveau 0000:01:00.0: 1: 0x00001130: type 0x30 idx 1 tag 0x07 [ 4.391765] [drm] nouveau 0000:01:00.0: 2: 0x00000212: type 0x12 idx 2 tag 0xff [ 4.391767] [drm] nouveau 0000:01:00.0: unknown type, using 0xff [ 4.391781] [drm] nouveau 0000:01:00.0: Parsing VBIOS init table 0 at offset 0xE76E [ 4.392284] [drm] nouveau 0000:01:00.0: Parsing VBIOS init table 1 at offset 0xEC16 [ 4.392921] [drm] nouveau 0000:01:00.0: Parsing VBIOS init table 2 at offset 0xF284 [ 4.392942] [drm] nouveau 0000:01:00.0: Parsing VBIOS init table 3 at offset 0xF3E1 [ 4.408647] forcedeth 0000:00:05.0: ifname eth0, PHY OUI 0x5043 @ 1, addr 00:11:d8:3d:70:91 [ 4.408653] forcedeth 0000:00:05.0: csum timirq gbit lnktim desc-v2 [ 4.408926] sata_nv 0000:00:0a.0: version 3.5 [ 4.408942] sata_nv 0000:00:0a.0: PCI INT A -> Link[LTID] -> GSI 22 (level, low) -> IRQ 22 [ 4.408985] sata_nv 0000:00:0a.0: setting latency timer to 64 [ 4.409311] scsi3 : sata_nv [ 4.409412] scsi4 : sata_nv [ 4.410125] ata3: SATA max UDMA/133 cmd 0x9f0 ctl 0xbf0 bmdma 0xc800 irq 22 [ 4.410129] ata4: SATA max UDMA/133 cmd 0x970 ctl 0xb70 bmdma 0xc808 irq 22 [ 4.410239] agpgart-amd64 0000:00:00.0: AGP bridge [10de/00e1] [ 4.410245] agpgart-amd64 0000:00:00.0: aperture size 4096 MB is not right, using settings from NB [ 4.410250] agpgart-amd64 0000:00:00.0: setting up Nforce3 AGP [ 4.410255] agpgart-amd64 0000:00:00.0: aperture base > 4G [ 4.410284] agpgart-amd64 0000:00:00.0: AGP bridge [10de/00e1] [ 4.410289] agpgart-amd64 0000:00:00.0: aperture size 4096 MB is not right, using settings from NB [ 4.410291] agpgart-amd64 0000:00:00.0: setting up Nforce3 AGP [ 4.410294] agpgart-amd64 0000:00:00.0: aperture base > 4G [ 4.416012] [drm] nouveau 0000:01:00.0: Parsing VBIOS init table 4 at offset 0xF483 [ 4.416020] [drm] nouveau 0000:01:00.0: Detected 128MiB VRAM [ 4.441708] [TTM] Zone kernel: Available graphics memory: 439878 kiB. [ 4.441711] [TTM] Zone highmem: Available graphics memory: 771530 kiB. [ 4.441713] [TTM] Initializing pool allocator. [ 4.443353] [drm] nouveau 0000:01:00.0: 64 MiB GART (aperture) [ 4.443965] [drm] nouveau 0000:01:00.0: Allocating FIFO number 0 [ 4.446304] [drm] nouveau 0000:01:00.0: nouveau_channel_alloc: initialised FIFO 0 [ 4.446312] [drm] nouveau 0000:01:00.0: Initial CRTC_OWNER is 0 [ 4.446320] [drm] nouveau 0000:01:00.0: Saving VGA fonts [ 4.518649] usb 2-1: new low speed USB device using ohci_hcd and address 2 [ 4.520639] [drm] nouveau 0000:01:00.0: Detected a VGA connector [ 4.520779] [drm] nouveau 0000:01:00.0: Detected a DVI-I connector [ 4.520866] [drm] nouveau 0000:01:00.0: Detected a TV connector [ 4.522857] [drm] nouveau 0000:01:00.0: Setting dpms mode 3 on vga encoder (output 0) [ 4.522862] [drm] nouveau 0000:01:00.0: Setting dpms mode 3 on vga encoder (output 1) [ 4.522865] [drm] nouveau 0000:01:00.0: Setting dpms mode 3 on tmds encoder (output 2) [ 4.522869] [drm] nouveau 0000:01:00.0: Setting dpms mode 3 on TV encoder (output 3) [ 4.716507] [drm] nouveau 0000:01:00.0: allocated 1280x1024 fb: 0x49000, bo f6a28800 [ 4.728386] [drm] nouveau 0000:01:00.0: Output DVI-I-1 is running on CRTC 0 using output A [ 4.728391] [drm] nouveau 0000:01:00.0: 0xCD06: Parsing digital output script table [ 4.784047] [drm] nouveau 0000:01:00.0: Setting dpms mode 0 on tmds encoder (output 2) [ 4.784053] [drm] nouveau 0000:01:00.0: Output DVI-I-1 is running on CRTC 0 using output A [ 4.785242] Console: switching to colour frame buffer device 160x64 [ 4.786960] fb0: nouveaufb frame buffer device [ 4.786962] drm: registered panic notifier [ 4.786965] Slow work thread pool: Starting up [ 4.789197] usbcore: registered new interface driver hiddev [ 4.789616] usbcore: registered new interface driver usbhid [ 4.789619] usbhid: USB HID core driver [ 4.789629] Slow work thread pool: Ready [ 4.789639] [drm] Initialized nouveau 0.0.16 20090420 for 0000:01:00.0 on minor 0 [ 4.884023] ata3: SATA link up 1.5 Gbps (SStatus 113 SControl 300) [ 4.892195] ata3.00: ATA-7: SAMSUNG SP1614C, SW100-30, max UDMA7 [ 4.892199] ata3.00: 312581808 sectors, multi 16: LBA48 [ 4.900224] ata3.00: configured for UDMA/133 [ 4.900327] scsi 3:0:0:0: Direct-Access ATA SAMSUNG SP1614C SW10 PQ: 0 ANSI: 5 [ 4.900498] sd 3:0:0:0: Attached scsi generic sg1 type 0 [ 4.901782] sd 3:0:0:0: [sda] 312581808 512-byte logical blocks: (160 GB/149 GiB) [ 4.901835] sd 3:0:0:0: [sda] Write Protect is off [ 4.901839] sd 3:0:0:0: [sda] Mode Sense: 00 3a 00 00 [ 4.901861] sd 3:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA [ 4.902013] sda: sda1 sda2 < sda5 sda6 > [ 4.945657] sd 3:0:0:0: [sda] Attached SCSI disk [ 4.984865] scsi 2:0:0:0: Direct-Access SAMSUNG HM500JI PQ: 0 ANSI: 2 [ 4.985261] sd 2:0:0:0: Attached scsi generic sg2 type 0 [ 4.986973] sd 2:0:0:0: [sdb] 976773168 512-byte logical blocks: (500 GB/465 GiB) [ 4.989216] sd 2:0:0:0: [sdb] Write Protect is off [ 4.989219] sd 2:0:0:0: [sdb] Mode Sense: 38 00 00 00 [ 4.989222] sd 2:0:0:0: [sdb] Assuming drive cache: write through [ 4.992339] sd 2:0:0:0: [sdb] Assuming drive cache: write through [ 4.992349] sdb: [ 5.068021] usb 3-3: new full speed USB device using ohci_hcd and address 2 [ 5.302520] input: Microsoft Microsoft® Nano Transceiver v1.0 as /devices/pci0000:00/0000:00:02.1/usb3/3-3/3-3:1.0/input/input2 [ 5.302863] generic-usb 0003:045E:0745.0003: input,hidraw0: USB HID v1.11 Keyboard [Microsoft Microsoft® Nano Transceiver v1.0] on usb-0000:00:02.1-3/input0 [ 5.313777] input: Microsoft Microsoft® Nano Transceiver v1.0 as /devices/pci0000:00/0000:00:02.1/usb3/3-3/3-3:1.1/input/input3 [ 5.314180] generic-usb 0003:045E:0745.0004: input,hidraw1: USB HID v1.11 Mouse [Microsoft Microsoft® Nano Transceiver v1.0] on usb-0000:00:02.1-3/input1 [ 5.342329] input: Microsoft Microsoft® Nano Transceiver v1.0 as /devices/pci0000:00/0000:00:02.1/usb3/3-3/3-3:1.2/input/input4 [ 5.342967] generic-usb 0003:045E:0745.0005: input,hiddev96,hidraw2: USB HID v1.11 Device [Microsoft Microsoft® Nano Transceiver v1.0] on usb-0000:00:02.1-3/input2 [ 5.368023] ata4: SATA link up 1.5 Gbps (SStatus 113 SControl 300) [ 5.408850] ata4.00: ATA-7: ST3200827AS, 3.AAH, max UDMA/133 [ 5.408854] ata4.00: 390721968 sectors, multi 16: LBA48 NCQ (depth 0/32) [ 5.475505] ata4.00: configured for UDMA/133 [ 5.475634] scsi 4:0:0:0: Direct-Access ATA ST3200827AS 3.AA PQ: 0 ANSI: 5 [ 5.475796] sd 4:0:0:0: Attached scsi generic sg3 type 0 [ 5.476047] sd 4:0:0:0: [sdc] 390721968 512-byte logical blocks: (200 GB/186 GiB) [ 5.476097] sd 4:0:0:0: [sdc] Write Protect is off [ 5.476100] sd 4:0:0:0: [sdc] Mode Sense: 00 3a 00 00 [ 5.476122] sd 4:0:0:0: [sdc] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA [ 5.476266] sdc: sdc1 [ 5.516042] sd 4:0:0:0: [sdc] Attached SCSI disk [ 8.255289] sdb1 [ 8.259147] sd 2:0:0:0: [sdb] Assuming drive cache: write through [ 8.259153] sd 2:0:0:0: [sdb] Attached SCSI disk [ 8.261079] vga16fb: initializing [ 8.261085] vga16fb: mapped to 0xc00a0000 [ 8.261154] fb1: VGA16 VGA frame buffer device [ 8.288000] input: Microsoft Natural® Ergonomic Keyboard 4000 as /devices/pci0000:00/0000:00:02.0/usb2/2-1/2-1:1.0/input/input5 [ 8.288111] microsoft 0003:045E:00DB.0001: input,hidraw3: USB HID v1.11 Keyboard [Microsoft Natural® Ergonomic Keyboard 4000] on usb-0000:00:02.0-1/input0 [ 8.305829] input: Microsoft Natural® Ergonomic Keyboard 4000 as /devices/pci0000:00/0000:00:02.0/usb2/2-1/2-1:1.1/input/input6 [ 8.306012] microsoft 0003:045E:00DB.0002: input,hidraw4: USB HID v1.11 Device [Microsoft Natural® Ergonomic Keyboard 4000] on usb-0000:00:02.0-1/input1 [ 8.970296] xor: automatically using best checksumming function: pIII_sse [ 8.988005] pIII_sse : 6401.000 MB/sec [ 8.988008] xor: using function: pIII_sse (6401.000 MB/sec) [ 8.992671] device-mapper: dm-raid45: initialized v0.2594b [ 10.449079] EXT3-fs: barriers not enabled [ 10.454195] kjournald starting. Commit interval 5 seconds [ 10.454305] EXT3-fs (sdc1): mounted filesystem with ordered data mode [ 11.478089] sr 0:0:0:0: [sr0] Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE [ 11.478095] sr 0:0:0:0: [sr0] Sense Key : Illegal Request [current] [ 11.478100] sr 0:0:0:0: [sr0] Add. Sense: Illegal mode for this track [ 11.478107] sr 0:0:0:0: [sr0] CDB: Read(10): 28 00 00 05 5e 56 00 00 02 00 [ 11.478115] end_request: I/O error, dev sr0, sector 1407320 [ 11.478120] Buffer I/O error on device sr0, logical block 175915 [ 11.543593] sr 0:0:0:0: [sr0] Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE [ 11.543599] sr 0:0:0:0: [sr0] Sense Key : Illegal Request [current] [ 11.543603] sr 0:0:0:0: [sr0] Add. Sense: Illegal mode for this track [ 11.543610] sr 0:0:0:0: [sr0] CDB: Read(10): 28 00 00 05 5e 56 00 00 02 00 [ 11.543618] end_request: I/O error, dev sr0, sector 1407320 [ 11.543622] Buffer I/O error on device sr0, logical block 175915 [ 11.609105] sr 0:0:0:0: [sr0] Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE [ 11.609110] sr 0:0:0:0: [sr0] Sense Key : Illegal Request [current] [ 11.609115] sr 0:0:0:0: [sr0] Add. Sense: Illegal mode for this track [ 11.609121] sr 0:0:0:0: [sr0] CDB: Read(10): 28 00 00 05 5e 56 00 00 02 00 [ 11.609129] end_request: I/O error, dev sr0, sector 1407320 [ 11.609133] Buffer I/O error on device sr0, logical block 175915 [ 11.674627] sr 0:0:0:0: [sr0] Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE [ 11.674632] sr 0:0:0:0: [sr0] Sense Key : Illegal Request [current] [ 11.674637] sr 0:0:0:0: [sr0] Add. Sense: Illegal mode for this track [ 11.674644] sr 0:0:0:0: [sr0] CDB: Read(10): 28 00 00 05 5e 56 00 00 02 00 [ 11.674651] end_request: I/O error, dev sr0, sector 1407320 [ 11.674656] Buffer I/O error on device sr0, logical block 175915 [ 11.740111] sr 0:0:0:0: [sr0] Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE [ 11.740116] sr 0:0:0:0: [sr0] Sense Key : Illegal Request [current] [ 11.740121] sr 0:0:0:0: [sr0] Add. Sense: Illegal mode for this track [ 11.740127] sr 0:0:0:0: [sr0] CDB: Read(10): 28 00 00 05 5e 56 00 00 02 00 [ 11.740135] end_request: I/O error, dev sr0, sector 1407320 [ 11.740139] Buffer I/O error on device sr0, logical block 175915 [ 11.805668] sr 0:0:0:0: [sr0] Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE [ 11.805673] sr 0:0:0:0: [sr0] Sense Key : Illegal Request [current] [ 11.805678] sr 0:0:0:0: [sr0] Add. Sense: Illegal mode for this track [ 11.805684] sr 0:0:0:0: [sr0] CDB: Read(10): 28 00 00 05 5e 56 00 00 02 00 [ 11.805692] end_request: I/O error, dev sr0, sector 1407320 [ 11.805696] Buffer I/O error on device sr0, logical block 175915 [ 11.871154] sr 0:0:0:0: [sr0] Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE [ 11.871160] sr 0:0:0:0: [sr0] Sense Key : Illegal Request [current] [ 11.871164] sr 0:0:0:0: [sr0] Add. Sense: Illegal mode for this track [ 11.871171] sr 0:0:0:0: [sr0] CDB: Read(10): 28 00 00 05 5e 56 00 00 02 00 [ 11.871179] end_request: I/O error, dev sr0, sector 1407320 [ 11.871183] Buffer I/O error on device sr0, logical block 175915 [ 11.974095] sr 0:0:0:0: [sr0] Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE [ 11.974101] sr 0:0:0:0: [sr0] Sense Key : Illegal Request [current] [ 11.974105] sr 0:0:0:0: [sr0] Add. Sense: Illegal mode for this track [ 11.974112] sr 0:0:0:0: [sr0] CDB: Read(10): 28 00 00 05 5e 56 00 00 02 00 [ 11.974120] end_request: I/O error, dev sr0, sector 1407320 [ 11.974125] Buffer I/O error on device sr0, logical block 175915 [ 12.042973] sr 0:0:0:0: [sr0] Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE [ 12.042979] sr 0:0:0:0: [sr0] Sense Key : Illegal Request [current] [ 12.042983] sr 0:0:0:0: [sr0] Add. Sense: Illegal mode for this track [ 12.042990] sr 0:0:0:0: [sr0] CDB: Read(10): 28 00 00 05 5e 56 00 00 02 00 [ 12.042998] end_request: I/O error, dev sr0, sector 1407320 [ 12.043002] Buffer I/O error on device sr0, logical block 175915 [ 12.105100] sr 0:0:0:0: [sr0] Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE [ 12.105105] sr 0:0:0:0: [sr0] Sense Key : Illegal Request [current] [ 12.105110] sr 0:0:0:0: [sr0] Add. Sense: Illegal mode for this track [ 12.105116] sr 0:0:0:0: [sr0] CDB: Read(10): 28 00 00 05 5e 56 00 00 02 00 [ 12.105124] end_request: I/O error, dev sr0, sector 1407320 [ 12.105128] Buffer I/O error on device sr0, logical block 175915 [ 12.605817] ISO 9660 Extensions: Microsoft Joliet Level 3 [ 12.634480] ISO 9660 Extensions: RRIP_1991A [ 12.730259] aufs 2-standalone.tree-35-rcN-20100531 [ 12.800385] squashfs: version 4.0 (2009/01/31) Phillip Lougher [ 51.794179] BUG: unable to handle kernel paging request at f815b540 [ 51.794186] IP: [] driver_register+0xfe/0x130 [ 51.794196] *pde = 3701b067 *pte = 00000000 [ 51.794200] Oops: 0000 [#1] SMP [ 51.794203] last sysfs file: /sys/devices/virtual/tty/tty40/uevent [ 51.794207] Modules linked in: amd64_agp(+) squashfs aufs isofs nls_iso8859_1 nls_cp437 vfat fat dm_raid45 xor hid_microsoft vga16fb vgastate usbhid hid nouveau ttm drm_kms_helper usb_storage drm floppy forcedeth sata_nv pata_amd i2c_algo_bit agpgart [ 51.794224] [ 51.794228] Pid: 818, comm: modprobe Not tainted 2.6.35-6-generic #8-Ubuntu 'K8N-E-Deluxe'/K8N-E-Deluxe [ 51.794232] EIP: 0060:[] EFLAGS: 00010282 CPU: 0 [ 51.794235] EIP is at driver_register+0xfe/0x130 [ 51.794238] EAX: f815b510 EBX: 00000000 ECX: f801f419 EDX: f685eae0 [ 51.794240] ESI: f801f510 EDI: c03716d0 EBP: f5471f34 ESP: f5471f18 [ 51.794243] DS: 007b ES: 007b FS: 00d8 GS: 00e0 SS: 0068 [ 51.794246] Process modprobe (pid: 818, ti=f5470000 task=f689cc20 task.ti=f5470000) [ 51.794248] Stack: [ 51.794249] 00000001 f801f780 00000000 c07e0ce0 f801f4e0 f801f780 f801f510 f5471f48 [ 51.794255] <0> c03719d5 b7779000 f801f780 00000000 f5471f54 f802202c 00000000 f5471f5c [ 51.794261] <0> f80220a8 f5471f88 c0101131 f801f780 c07df060 b7779000 f801f780 08bdd1c0 [ 51.794267] Call Trace: [ 51.794273] [] ? __pci_register_driver+0x45/0xb0 [ 51.794279] [] ? agp_amd64_init+0x2c/0xa0 [amd64_agp] [ 51.794283] [] ? agp_amd64_mod_init+0x8/0xa [amd64_agp] [ 51.794287] [] ? do_one_initcall+0x31/0x190 [ 51.794292] [] ? agp_amd64_mod_init+0x0/0xa [amd64_agp] [ 51.794298] [] ? sys_init_module+0x9b/0x1e0 [ 51.794303] [] ? sys_close+0x75/0xc0 [ 51.794307] [] ? syscall_call+0x7/0xb [ 51.794310] Code: 89 f0 e8 86 ea ff ff 83 c4 10 89 f8 5b 5e 5f 5d c3 8b 06 c7 04 24 08 61 77 c0 89 44 24 04 e8 78 5b 1c 00 8b 56 04 e9 56 ff ff ff <8b> 40 30 bf f0 ff ff ff e8 f5 14 f5 ff 8b 06 c7 04 24 48 61 77 [ 51.794339] EIP: [] driver_register+0xfe/0x130 SS:ESP 0068:f5471f18 [ 51.794343] CR2: 00000000f815b540 [ 51.794347] ---[ end trace b0e79d93b419a19b ]--- [ 62.906860] udev: starting version 151 [ 64.072496] WARNING! power/level is deprecated; use power/control instead [ 65.457986] ACPI: resource nForce2_smbus [io 0x5000-0x503f] conflicts with ACPI region SMRG [??? 0x00005000-0x00005004 flags 0x47] [ 65.457992] ACPI: If an ACPI driver is available for this device, you should use it instead of the native driver [ 65.458069] i2c i2c-2: nForce2 SMBus adapter at 0x5040 [ 65.681422] shpchp: Standard Hot Plug PCI Controller Driver version: 0.4 [ 66.417809] psmouse serio1: ID: 10 00 64 [ 67.022338] input: ImPS/2 Generic Wheel Mouse as /devices/platform/i8042/serio1/input/input7 [ 69.484126] usblp0: USB Bidirectional printer dev 3 if 1 alt 0 proto 2 vid 0x04E8 pid 0x341B [ 69.484573] usbcore: registered new interface driver usblp [ 70.022782] ACPI: PCI Interrupt Link [LAUI] enabled at IRQ 20 [ 70.022790] Intel ICH 0000:00:06.0: PCI INT A -> Link[LAUI] -> GSI 20 (level, low) -> IRQ 20 [ 70.022825] Intel ICH 0000:00:06.0: setting latency timer to 64 [ 70.344013] intel8x0_measure_ac97_clock: measured 52639 usecs (2584 samples) [ 70.344017] intel8x0: clocking to 46935 Bug: 602373 [ 0.000000] Initializing cgroup subsys cpuset [ 0.000000] Initializing cgroup subsys cpu [ 0.000000] Linux version 2.6.35-6-generic (buildd@vernadsky) (gcc version 4.4.4 (Ubuntu 4.4.4-6ubuntu1) ) #9-Ubuntu SMP Wed Jun 30 23:09:46 UTC 2010 (Ubuntu 2.6.35-6.9-generic 2.6.35-rc3) [ 0.000000] BIOS-provided physical RAM map: [ 0.000000] BIOS-e820: 0000000000000000 - 000000000009fc00 (usable) [ 0.000000] BIOS-e820: 000000000009fc00 - 00000000000a0000 (reserved) [ 0.000000] BIOS-e820: 00000000000e0000 - 0000000000100000 (reserved) [ 0.000000] BIOS-e820: 0000000000100000 - 000000007f4fd000 (usable) [ 0.000000] BIOS-e820: 000000007f4fd000 - 000000007f508000 (reserved) [ 0.000000] BIOS-e820: 000000007f508000 - 000000007f552000 (usable) [ 0.000000] BIOS-e820: 000000007f552000 - 000000007f555000 (reserved) [ 0.000000] BIOS-e820: 000000007f555000 - 000000007f5bb000 (usable) [ 0.000000] BIOS-e820: 000000007f5bb000 - 000000007f5bf000 (reserved) [ 0.000000] BIOS-e820: 000000007f5bf000 - 000000007f670000 (usable) [ 0.000000] BIOS-e820: 000000007f670000 - 000000007f6bf000 (ACPI NVS) [ 0.000000] BIOS-e820: 000000007f6bf000 - 000000007f700000 (ACPI data) [ 0.000000] BIOS-e820: 000000007f700000 - 0000000080000000 (reserved) [ 0.000000] BIOS-e820: 00000000e0000000 - 00000000f0000000 (reserved) [ 0.000000] BIOS-e820: 00000000fec00000 - 00000000fec01000 (reserved) [ 0.000000] BIOS-e820: 00000000fed14000 - 00000000fed1a000 (reserved) [ 0.000000] BIOS-e820: 00000000fed1c000 - 00000000fed20000 (reserved) [ 0.000000] BIOS-e820: 00000000fee00000 - 00000000fee01000 (reserved) [ 0.000000] BIOS-e820: 00000000fff00000 - 0000000100000000 (reserved) [ 0.000000] Notice: NX (Execute Disable) protection cannot be enabled: non-PAE kernel! [ 0.000000] DMI 2.4 present. [ 0.000000] e820 update range: 0000000000000000 - 0000000000001000 (usable) ==> (reserved) [ 0.000000] e820 remove range: 00000000000a0000 - 0000000000100000 (usable) [ 0.000000] last_pfn = 0x7f670 max_arch_pfn = 0x100000 [ 0.000000] MTRR default type: uncachable [ 0.000000] MTRR fixed ranges enabled: [ 0.000000] 00000-9FFFF write-back [ 0.000000] A0000-BFFFF uncachable [ 0.000000] C0000-FFFFF write-protect [ 0.000000] MTRR variable ranges enabled: [ 0.000000] 0 base 0FFFE0000 mask FFFFE0000 write-protect [ 0.000000] 1 base 000000000 mask FC0000000 write-back [ 0.000000] 2 base 040000000 mask FC0000000 write-back [ 0.000000] 3 base 07F800000 mask FFF800000 uncachable [ 0.000000] 4 base 07F700000 mask FFFF00000 uncachable [ 0.000000] 5 disabled [ 0.000000] 6 disabled [ 0.000000] 7 disabled [ 0.000000] x86 PAT enabled: cpu 0, old 0x7040600070406, new 0x7010600070106 [ 0.000000] e820 update range: 0000000000002000 - 0000000000010000 (usable) ==> (reserved) [ 0.000000] Scanning 1 areas for low memory corruption [ 0.000000] modified physical RAM map: [ 0.000000] modified: 0000000000000000 - 0000000000001000 (reserved) [ 0.000000] modified: 0000000000001000 - 0000000000002000 (usable) [ 0.000000] modified: 0000000000002000 - 0000000000010000 (reserved) [ 0.000000] modified: 0000000000010000 - 000000000009fc00 (usable) [ 0.000000] modified: 000000000009fc00 - 00000000000a0000 (reserved) [ 0.000000] modified: 00000000000e0000 - 0000000000100000 (reserved) [ 0.000000] modified: 0000000000100000 - 000000007f4fd000 (usable) [ 0.000000] modified: 000000007f4fd000 - 000000007f508000 (reserved) [ 0.000000] modified: 000000007f508000 - 000000007f552000 (usable) [ 0.000000] modified: 000000007f552000 - 000000007f555000 (reserved) [ 0.000000] modified: 000000007f555000 - 000000007f5bb000 (usable) [ 0.000000] modified: 000000007f5bb000 - 000000007f5bf000 (reserved) [ 0.000000] modified: 000000007f5bf000 - 000000007f670000 (usable) [ 0.000000] modified: 000000007f670000 - 000000007f6bf000 (ACPI NVS) [ 0.000000] modified: 000000007f6bf000 - 000000007f700000 (ACPI data) [ 0.000000] modified: 000000007f700000 - 0000000080000000 (reserved) [ 0.000000] modified: 00000000e0000000 - 00000000f0000000 (reserved) [ 0.000000] modified: 00000000fec00000 - 00000000fec01000 (reserved) [ 0.000000] modified: 00000000fed14000 - 00000000fed1a000 (reserved) [ 0.000000] modified: 00000000fed1c000 - 00000000fed20000 (reserved) [ 0.000000] modified: 00000000fee00000 - 00000000fee01000 (reserved) [ 0.000000] modified: 00000000fff00000 - 0000000100000000 (reserved) [ 0.000000] initial memory mapped : 0 - 00c00000 [ 0.000000] found SMP MP-table at [c00fe1b0] fe1b0 [ 0.000000] init_memory_mapping: 0000000000000000-00000000377fe000 [ 0.000000] 0000000000 - 0000400000 page 4k [ 0.000000] 0000400000 - 0037400000 page 2M [ 0.000000] 0037400000 - 00377fe000 page 4k [ 0.000000] kernel direct mapping tables up to 377fe000 @ 15000-1a000 [ 0.000000] RAMDISK: 375d0000 - 37ff0000 [ 0.000000] Allocated new RAMDISK: 009ba000 - 013d90b3 [ 0.000000] Move RAMDISK from 00000000375d0000 - 0000000037fef0b2 to 009ba000 - 013d90b2 [ 0.000000] ACPI: RSDP 000fe020 00024 (v02 ACRSYS) [ 0.000000] ACPI: XSDT 7f6fe120 00064 (v01 ACRSYS ACRPRDCT 00000001 01000013) [ 0.000000] ACPI: FACP 7f6fd000 000F4 (v04 ACRSYS ACRPRDCT 00000001 MSFT 01000013) [ 0.000000] ACPI: DSDT 7f6f4000 08968 (v01 ACRSYS ACRPRDCT 00000001 MSFT 01000013) [ 0.000000] ACPI: FACS 7f675000 00040 [ 0.000000] ACPI: APIC 7f6f3000 00068 (v02 ACRSYS ACRPRDCT 00000001 MSFT 01000013) [ 0.000000] ACPI: MCFG 7f6f2000 0003C (v01 ACRSYS ACRPRDCT 00000001 MSFT 01000013) [ 0.000000] ACPI: SLIC 7f6f1000 00176 (v01 ACRSYS ACRPRDCT 00000001 MSFT 01000013) [ 0.000000] ACPI: HPET 7f6f0000 00038 (v01 ACRSYS ACRPRDCT 00000001 MSFT 01000013) [ 0.000000] ACPI: SSDT 7f6ef000 004C4 (v01 PmRef CpuPm 00003000 INTL 20051117) [ 0.000000] ACPI: SSDT 7f6ee000 00232 (v01 PmRef Cpu0Tst 00003000 INTL 20051117) [ 0.000000] ACPI: SSDT 7f6ed000 000A0 (v01 PmRef Cpu1Tst 00003000 INTL 20051117) [ 0.000000] ACPI: Local APIC address 0xfee00000 [ 0.000000] 1150MB HIGHMEM available. [ 0.000000] 887MB LOWMEM available. [ 0.000000] mapped low ram: 0 - 377fe000 [ 0.000000] low ram: 0 - 377fe000 [ 0.000000] Zone PFN ranges: [ 0.000000] DMA 0x00000001 -> 0x00001000 [ 0.000000] Normal 0x00001000 -> 0x000377fe [ 0.000000] HighMem 0x000377fe -> 0x0007f670 [ 0.000000] Movable zone start PFN for each node [ 0.000000] early_node_map[6] active PFN ranges [ 0.000000] 0: 0x00000001 -> 0x00000002 [ 0.000000] 0: 0x00000010 -> 0x0000009f [ 0.000000] 0: 0x00000100 -> 0x0007f4fd [ 0.000000] 0: 0x0007f508 -> 0x0007f552 [ 0.000000] 0: 0x0007f555 -> 0x0007f5bb [ 0.000000] 0: 0x0007f5bf -> 0x0007f670 [ 0.000000] On node 0 totalpages: 521710 [ 0.000000] free_area_init_node: node 0, pgdat c08156c0, node_mem_map c13db020 [ 0.000000] DMA zone: 32 pages used for memmap [ 0.000000] DMA zone: 0 pages reserved [ 0.000000] DMA zone: 3952 pages, LIFO batch:0 [ 0.000000] Normal zone: 1744 pages used for memmap [ 0.000000] Normal zone: 221486 pages, LIFO batch:31 [ 0.000000] HighMem zone: 2301 pages used for memmap [ 0.000000] HighMem zone: 292195 pages, LIFO batch:31 [ 0.000000] Using APIC driver default [ 0.000000] ACPI: PM-Timer IO Port: 0x408 [ 0.000000] ACPI: Local APIC address 0xfee00000 [ 0.000000] ACPI: LAPIC (acpi_id[0x01] lapic_id[0x00] enabled) [ 0.000000] ACPI: LAPIC (acpi_id[0x02] lapic_id[0x01] enabled) [ 0.000000] ACPI: LAPIC_NMI (acpi_id[0x01] high edge lint[0x1]) [ 0.000000] ACPI: LAPIC_NMI (acpi_id[0x02] high edge lint[0x1]) [ 0.000000] ACPI: IOAPIC (id[0x04] address[0xfec00000] gsi_base[0]) [ 0.000000] IOAPIC[0]: apic_id 4, version 32, address 0xfec00000, GSI 0-23 [ 0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 0 global_irq 2 dfl dfl) [ 0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 9 global_irq 9 high level) [ 0.000000] ACPI: IRQ0 used by override. [ 0.000000] ACPI: IRQ2 used by override. [ 0.000000] ACPI: IRQ9 used by override. [ 0.000000] Using ACPI (MADT) for SMP configuration information [ 0.000000] ACPI: HPET id: 0x8086a201 base: 0xfed00000 [ 0.000000] SMP: Allowing 2 CPUs, 0 hotplug CPUs [ 0.000000] nr_irqs_gsi: 40 [ 0.000000] early_res array is doubled to 64 at [16000 - 167ff] [ 0.000000] PM: Registered nosave memory: 0000000000002000 - 0000000000010000 [ 0.000000] PM: Registered nosave memory: 000000000009f000 - 00000000000a0000 [ 0.000000] PM: Registered nosave memory: 00000000000a0000 - 00000000000e0000 [ 0.000000] PM: Registered nosave memory: 00000000000e0000 - 0000000000100000 [ 0.000000] Allocating PCI resources starting at 80000000 (gap: 80000000:60000000) [ 0.000000] Booting paravirtualized kernel on bare hardware [ 0.000000] setup_percpu: NR_CPUS:8 nr_cpumask_bits:8 nr_cpu_ids:2 nr_node_ids:1 [ 0.000000] PERCPU: Embedded 14 pages/cpu @c2400000 s36480 r0 d20864 u2097152 [ 0.000000] pcpu-alloc: s36480 r0 d20864 u2097152 alloc=1*4194304 [ 0.000000] pcpu-alloc: [0] 0 1 [ 0.000000] early_res array is doubled to 128 at [16800 - 177ff] [ 0.000000] Built 1 zonelists in Zone order, mobility grouping on. Total pages: 517633 [ 0.000000] Kernel command line: BOOT_IMAGE=/boot/vmlinuz-2.6.35-6-generic root=UUID=a0909540-5401-4b7b-ab97-d5ba7e129d27 ro quiet splash [ 0.000000] PID hash table entries: 4096 (order: 2, 16384 bytes) [ 0.000000] Dentry cache hash table entries: 131072 (order: 7, 524288 bytes) [ 0.000000] Inode-cache hash table entries: 65536 (order: 6, 262144 bytes) [ 0.000000] Enabling fast FPU save and restore... done. [ 0.000000] Enabling unmasked SIMD FPU exception support... done. [ 0.000000] Initializing CPU#0 [ 0.000000] allocated 10436780 bytes of page_cgroup [ 0.000000] please try 'cgroup_disable=memory' option if you don't want memory cgroups [ 0.000000] Subtract (59 early reservations) [ 0.000000] #1 [0000001000 - 0000002000] EX TRAMPOLINE [ 0.000000] #2 [0000100000 - 00009b591c] TEXT DATA BSS [ 0.000000] #3 [00009b6000 - 00009b91a8] BRK [ 0.000000] #4 [000009fc00 - 00000fe1b0] BIOS reserved [ 0.000000] #5 [00000fe1b0 - 00000fe1c0] MP-table mpf [ 0.000000] #6 [00000fe1c0 - 00000feab0] BIOS reserved [ 0.000000] #7 [00000febf8 - 0000100000] BIOS reserved [ 0.000000] #8 [00000feab0 - 00000febf8] MP-table mpc [ 0.000000] #9 [0000010000 - 0000011000] TRAMPOLINE [ 0.000000] #10 [0000011000 - 0000015000] ACPI WAKEUP [ 0.000000] #11 [0000015000 - 0000016000] PGTABLE [ 0.000000] #12 [00009ba000 - 00013da000] NEW RAMDISK [ 0.000000] #13 [00013da000 - 00013db000] BOOTMEM [ 0.000000] #14 [00013db000 - 00023cb000] BOOTMEM [ 0.000000] #15 [00023cb000 - 00023cb004] BOOTMEM [ 0.000000] #16 [00023cb040 - 00023cb100] BOOTMEM [ 0.000000] #17 [00023cb100 - 00023cb154] BOOTMEM [ 0.000000] #18 [00023cb180 - 00023ce180] BOOTMEM [ 0.000000] #19 [00023ce180 - 00023ce1ec] BOOTMEM [ 0.000000] #20 [00023ce200 - 00023d4200] BOOTMEM [ 0.000000] #21 [00023d4200 - 00023d4225] BOOTMEM [ 0.000000] #22 [00023d4240 - 00023d4267] BOOTMEM [ 0.000000] #23 [00023d4280 - 00023d44e8] BOOTMEM [ 0.000000] #24 [00023d4500 - 00023d4540] BOOTMEM [ 0.000000] #25 [00023d4540 - 00023d4580] BOOTMEM [ 0.000000] #26 [00023d4580 - 00023d45c0] BOOTMEM [ 0.000000] #27 [00023d45c0 - 00023d4600] BOOTMEM [ 0.000000] #28 [00023d4600 - 00023d4640] BOOTMEM [ 0.000000] #29 [00023d4640 - 00023d4680] BOOTMEM [ 0.000000] #30 [00023d4680 - 00023d46c0] BOOTMEM [ 0.000000] #31 [00023d46c0 - 00023d4700] BOOTMEM [ 0.000000] #32 [00023d4700 - 00023d4740] BOOTMEM [ 0.000000] #33 [00023d4740 - 00023d4780] BOOTMEM [ 0.000000] #34 [00023d4780 - 00023d47c0] BOOTMEM [ 0.000000] #35 [00023d47c0 - 00023d4800] BOOTMEM [ 0.000000] #36 [00023d4800 - 00023d4840] BOOTMEM [ 0.000000] #37 [00023d4840 - 00023d4880] BOOTMEM [ 0.000000] #38 [00023d4880 - 00023d48c0] BOOTMEM [ 0.000000] #39 [00023d48c0 - 00023d4900] BOOTMEM [ 0.000000] #40 [00023d4900 - 00023d4940] BOOTMEM [ 0.000000] #41 [00023d4940 - 00023d4980] BOOTMEM [ 0.000000] #42 [00023d4980 - 00023d49c0] BOOTMEM [ 0.000000] #43 [00023d49c0 - 00023d49d0] BOOTMEM [ 0.000000] #44 [00023d4a00 - 00023d4a10] BOOTMEM [ 0.000000] #45 [00023d4a40 - 00023d4aa9] BOOTMEM [ 0.000000] #46 [00023d4ac0 - 00023d4b29] BOOTMEM [ 0.000000] #47 [0002400000 - 000240e000] BOOTMEM [ 0.000000] #48 [0002600000 - 000260e000] BOOTMEM [ 0.000000] #49 [00023d6b40 - 00023d6b44] BOOTMEM [ 0.000000] #50 [00023d6b80 - 00023d6b84] BOOTMEM [ 0.000000] #51 [00023d6bc0 - 00023d6bc8] BOOTMEM [ 0.000000] #52 [00023d6c00 - 00023d6c08] BOOTMEM [ 0.000000] #53 [00023d6c40 - 00023d6ce8] BOOTMEM [ 0.000000] #54 [00023d6d00 - 00023d6d68] BOOTMEM [ 0.000000] #55 [00023d6d80 - 00023dad80] BOOTMEM [ 0.000000] #56 [000240e000 - 000248e000] BOOTMEM [ 0.000000] #57 [000248e000 - 00024ce000] BOOTMEM [ 0.000000] #58 [000260e000 - 00030020ac] BOOTMEM [ 0.000000] Initializing HighMem for node 0 (000377fe:0007f670) [ 0.000000] Memory: 2040048k/2087360k available (4947k kernel code, 46792k reserved, 2404k data, 684k init, 1177984k highmem) [ 0.000000] virtual kernel memory layout: [ 0.000000] fixmap : 0xfff15000 - 0xfffff000 ( 936 kB) [ 0.000000] pkmap : 0xff800000 - 0xffc00000 (4096 kB) [ 0.000000] vmalloc : 0xf7ffe000 - 0xff7fe000 ( 120 MB) [ 0.000000] lowmem : 0xc0000000 - 0xf77fe000 ( 887 MB) [ 0.000000] .init : 0xc082e000 - 0xc08d9000 ( 684 kB) [ 0.000000] .data : 0xc05d4f72 - 0xc082dfe8 (2404 kB) [ 0.000000] .text : 0xc0100000 - 0xc05d4f72 (4947 kB) [ 0.000000] Checking if this processor honours the WP bit even in supervisor mode...Ok. [ 0.000000] SLUB: Genslabs=13, HWalign=64, Order=0-3, MinObjects=0, CPUs=2, Nodes=1 [ 0.000000] Hierarchical RCU implementation. [ 0.000000] RCU dyntick-idle grace-period acceleration is enabled. [ 0.000000] RCU-based detection of stalled CPUs is disabled. [ 0.000000] Verbose stalled-CPUs detection is disabled. [ 0.000000] NR_IRQS:2304 nr_irqs:512 [ 0.000000] Console: colour VGA+ 80x25 [ 0.000000] console [tty0] enabled [ 0.000000] hpet clockevent registered [ 0.000000] Fast TSC calibration using PIT [ 0.000000] Detected 1595.742 MHz processor. [ 0.004007] Calibrating delay loop (skipped), value calculated using timer frequency.. 3191.48 BogoMIPS (lpj=6382968) [ 0.004014] pid_max: default: 32768 minimum: 301 [ 0.004038] Security Framework initialized [ 0.004061] AppArmor: AppArmor initialized [ 0.004122] Mount-cache hash table entries: 512 [ 0.004294] Initializing cgroup subsys ns [ 0.004300] Initializing cgroup subsys cpuacct [ 0.004306] Initializing cgroup subsys memory [ 0.004317] Initializing cgroup subsys devices [ 0.004320] Initializing cgroup subsys freezer [ 0.004323] Initializing cgroup subsys net_cls [ 0.004358] CPU: Physical Processor ID: 0 [ 0.004361] CPU: Processor Core ID: 0 [ 0.004364] mce: CPU supports 6 MCE banks [ 0.004375] CPU0: Thermal monitoring enabled (TM1) [ 0.004380] using mwait in idle threads. [ 0.004389] Performance Events: PEBS fmt0+, Core2 events, Intel PMU driver. [ 0.004397] PEBS disabled due to CPU errata. [ 0.004406] ... version: 2 [ 0.004408] ... bit width: 40 [ 0.004411] ... generic registers: 2 [ 0.004413] ... value mask: 000000ffffffffff [ 0.004416] ... max period: 000000007fffffff [ 0.004419] ... fixed-purpose events: 3 [ 0.004421] ... event mask: 0000000700000003 [ 0.008154] ACPI: Core revision 20100428 [ 0.024012] ftrace: converting mcount calls to 0f 1f 44 00 00 [ 0.024018] ftrace: allocating 21765 entries in 43 pages [ 0.028069] Enabling APIC mode: Flat. Using 1 I/O APICs [ 0.028460] ..TIMER: vector=0x30 apic1=0 pin1=2 apic2=-1 pin2=-1 [ 0.068697] CPU0: Intel(R) Pentium(R) Dual CPU T2330 @ 1.60GHz stepping 0d [ 0.072000] Booting Node 0, Processors #1 Ok. [ 0.008000] Initializing CPU#1 [ 0.160020] Brought up 2 CPUs [ 0.160024] Total of 2 processors activated (6383.44 BogoMIPS). [ 0.160520] devtmpfs: initialized [ 0.161283] regulator: core version 0.5 [ 0.161321] Time: 13:37:31 Date: 07/06/10 [ 0.161374] NET: Registered protocol family 16 [ 0.161406] Trying to unpack rootfs image as initramfs... [ 0.161548] EISA bus registered [ 0.161559] ACPI: bus type pci registered [ 0.161657] PCI: MMCONFIG for domain 0000 [bus 00-ff] at [mem 0xe0000000-0xefffffff] (base 0xe0000000) [ 0.161662] PCI: MMCONFIG at [mem 0xe0000000-0xefffffff] reserved in E820 [ 0.161664] PCI: Using MMCONFIG for extended config space [ 0.161667] PCI: Using configuration type 1 for base access [ 0.168179] bio: create slab at 0 [ 0.171124] ACPI: EC: Look up EC in DSDT [ 0.177690] ACPI: BIOS _OSI(Linux) query ignored [ 0.188602] ACPI: SSDT 7f674c90 0022C (v01 PmRef Cpu0Ist 00003000 INTL 20051117) [ 0.189735] ACPI: Dynamic OEM Table Load: [ 0.189740] ACPI: SSDT (null) 0022C (v01 PmRef Cpu0Ist 00003000 INTL 20051117) [ 0.190161] ACPI: SSDT 7f673610 005D7 (v01 PmRef Cpu0Cst 00003001 INTL 20051117) [ 0.190927] ACPI: Dynamic OEM Table Load: [ 0.190932] ACPI: SSDT (null) 005D7 (v01 PmRef Cpu0Cst 00003001 INTL 20051117) [ 0.191514] ACPI: SSDT 7f674f10 000C4 (v01 PmRef Cpu1Ist 00003000 INTL 20051117) [ 0.192306] ACPI: Dynamic OEM Table Load: [ 0.192311] ACPI: SSDT (null) 000C4 (v01 PmRef Cpu1Ist 00003000 INTL 20051117) [ 0.192520] ACPI: SSDT 7f676d10 00083 (v01 PmRef Cpu1Cst 00003000 INTL 20051117) [ 0.193288] ACPI: Dynamic OEM Table Load: [ 0.193293] ACPI: SSDT (null) 00083 (v01 PmRef Cpu1Cst 00003000 INTL 20051117) [ 0.212260] ACPI: Interpreter enabled [ 0.212268] ACPI: (supports S0 S3 S4 S5) [ 0.212307] ACPI: Using IOAPIC for interrupt routing [ 0.438992] ACPI: EC: GPE = 0x1c, I/O: command/status = 0x66, data = 0x62 [ 0.439490] ACPI: No dock devices found. [ 0.439495] PCI: Using host bridge windows from ACPI; if necessary, use "pci=nocrs" and report a bug [ 0.440405] ACPI Warning for \_SB_.PCI0._OSC: Parameter count mismatch - ASL declared 5, ACPI requires 4 (20100428/nspredef-352) [ 0.440418] \_SB_.PCI0:_OSC evaluation returned wrong type [ 0.440420] _OSC request data:1 8 1f [ 0.440428] ACPI: PCI Root Bridge [PCI0] (domain 0000 [bus 00-ff]) [ 0.441903] pci_root PNP0A08:00: host bridge window [io 0x0000-0x0cf7] [ 0.441908] pci_root PNP0A08:00: host bridge window [io 0x0d00-0xffff] [ 0.441913] pci_root PNP0A08:00: host bridge window [mem 0x000a0000-0x000bffff] [ 0.441919] pci_root PNP0A08:00: host bridge window [mem 0x80000000-0xfebfffff] [ 0.442016] pci 0000:00:02.0: reg 10: [mem 0x94000000-0x940fffff 64bit] [ 0.442027] pci 0000:00:02.0: reg 18: [mem 0x80000000-0x8fffffff 64bit pref] [ 0.442034] pci 0000:00:02.0: reg 20: [io 0x5110-0x5117] [ 0.442091] pci 0000:00:02.1: reg 10: [mem 0x00000000-0x000fffff 64bit] [ 0.442240] pci 0000:00:1a.0: reg 20: [io 0x50c0-0x50df] [ 0.442320] pci 0000:00:1a.1: reg 20: [io 0x50a0-0x50bf] [ 0.442400] pci 0000:00:1a.7: reg 10: [mem 0x98404c00-0x98404fff] [ 0.442480] pci 0000:00:1a.7: PME# supported from D0 D3hot D3cold [ 0.442488] pci 0000:00:1a.7: PME# disabled [ 0.442544] pci 0000:00:1b.0: reg 10: [mem 0x98400000-0x98403fff 64bit] [ 0.442624] pci 0000:00:1b.0: PME# supported from D0 D3hot D3cold [ 0.442631] pci 0000:00:1b.0: PME# disabled [ 0.442760] pci 0000:00:1c.0: PME# supported from D0 D3hot D3cold [ 0.442766] pci 0000:00:1c.0: PME# disabled [ 0.442897] pci 0000:00:1c.1: PME# supported from D0 D3hot D3cold [ 0.442903] pci 0000:00:1c.1: PME# disabled [ 0.443034] pci 0000:00:1c.2: PME# supported from D0 D3hot D3cold [ 0.443040] pci 0000:00:1c.2: PME# disabled [ 0.443176] pci 0000:00:1c.3: PME# supported from D0 D3hot D3cold [ 0.443183] pci 0000:00:1c.3: PME# disabled [ 0.443265] pci 0000:00:1d.0: reg 20: [io 0x5080-0x509f] [ 0.443345] pci 0000:00:1d.1: reg 20: [io 0x5060-0x507f] [ 0.443427] pci 0000:00:1d.2: reg 20: [io 0x5040-0x505f] [ 0.443504] pci 0000:00:1d.7: reg 10: [mem 0x98404800-0x98404bff] [ 0.443585] pci 0000:00:1d.7: PME# supported from D0 D3hot D3cold [ 0.443592] pci 0000:00:1d.7: PME# disabled [ 0.443796] pci 0000:00:1f.0: quirk: [io 0x0400-0x047f] claimed by ICH6 ACPI/GPIO/TCO [ 0.443802] pci 0000:00:1f.0: quirk: [io 0x0500-0x053f] claimed by ICH6 GPIO [ 0.443810] pci 0000:00:1f.0: ICH7 LPC Generic IO decode 2 PIO at ff2c (mask 0003) [ 0.443816] pci 0000:00:1f.0: ICH7 LPC Generic IO decode 3 PIO at 0068 (mask 0007) [ 0.443881] pci 0000:00:1f.1: reg 10: [io 0x5108-0x510f] [ 0.443892] pci 0000:00:1f.1: reg 14: [io 0x5124-0x5127] [ 0.443902] pci 0000:00:1f.1: reg 18: [io 0x5100-0x5107] [ 0.443912] pci 0000:00:1f.1: reg 1c: [io 0x5120-0x5123] [ 0.443922] pci 0000:00:1f.1: reg 20: [io 0x50e0-0x50ef] [ 0.444011] pci 0000:00:1f.2: reg 10: [io 0x50f8-0x50ff] [ 0.444022] pci 0000:00:1f.2: reg 14: [io 0x511c-0x511f] [ 0.444032] pci 0000:00:1f.2: reg 18: [io 0x50f0-0x50f7] [ 0.444042] pci 0000:00:1f.2: reg 1c: [io 0x5118-0x511b] [ 0.444052] pci 0000:00:1f.2: reg 20: [io 0x5020-0x503f] [ 0.444062] pci 0000:00:1f.2: reg 24: [mem 0x98404000-0x984047ff] [ 0.444116] pci 0000:00:1f.2: PME# supported from D3hot [ 0.444122] pci 0000:00:1f.2: PME# disabled [ 0.444165] pci 0000:00:1f.3: reg 10: [mem 0x98405000-0x984050ff] [ 0.444197] pci 0000:00:1f.3: reg 20: [io 0x5000-0x501f] [ 0.444308] pci 0000:00:1c.0: PCI bridge to [bus 02-02] [ 0.444315] pci 0000:00:1c.0: bridge window [io 0x4000-0x4fff] [ 0.444323] pci 0000:00:1c.0: bridge window [mem 0x97400000-0x983fffff] [ 0.444333] pci 0000:00:1c.0: bridge window [mem 0x90000000-0x90ffffff 64bit pref] [ 0.444410] pci 0000:00:1c.1: PCI bridge to [bus 04-04] [ 0.444417] pci 0000:00:1c.1: bridge window [io 0x3000-0x3fff] [ 0.444424] pci 0000:00:1c.1: bridge window [mem 0x96400000-0x973fffff] [ 0.444435] pci 0000:00:1c.1: bridge window [mem 0x91000000-0x91ffffff 64bit pref] [ 0.444579] pci 0000:05:00.0: reg 10: [mem 0x95300000-0x9530ffff 64bit] [ 0.444704] pci 0000:05:00.0: PME# supported from D3hot D3cold [ 0.444711] pci 0000:05:00.0: PME# disabled [ 0.452037] pci 0000:00:1c.2: PCI bridge to [bus 05-05] [ 0.452046] pci 0000:00:1c.2: bridge window [io 0x2000-0x2fff] [ 0.452053] pci 0000:00:1c.2: bridge window [mem 0x95300000-0x963fffff] [ 0.452064] pci 0000:00:1c.2: bridge window [mem 0x92000000-0x92ffffff 64bit pref] [ 0.452201] pci 0000:06:00.0: reg 10: [mem 0x94200000-0x9420ffff 64bit] [ 0.452350] pci 0000:06:00.0: disabling ASPM on pre-1.1 PCIe device. You can enable it with 'pcie_aspm=force' [ 0.452366] pci 0000:00:1c.3: PCI bridge to [bus 06-06] [ 0.452373] pci 0000:00:1c.3: bridge window [io 0x1000-0x1fff] [ 0.452380] pci 0000:00:1c.3: bridge window [mem 0x94200000-0x952fffff] [ 0.452390] pci 0000:00:1c.3: bridge window [mem 0x93000000-0x93ffffff 64bit pref] [ 0.452469] pci 0000:07:00.0: reg 10: [mem 0x94100000-0x941007ff] [ 0.452545] pci 0000:07:00.0: supports D1 D2 [ 0.452548] pci 0000:07:00.0: PME# supported from D0 D1 D2 D3hot D3cold [ 0.452555] pci 0000:07:00.0: PME# disabled [ 0.452601] pci 0000:07:00.1: reg 10: [mem 0x94100a00-0x94100aff] [ 0.452677] pci 0000:07:00.1: supports D1 D2 [ 0.452680] pci 0000:07:00.1: PME# supported from D0 D1 D2 D3hot D3cold [ 0.452686] pci 0000:07:00.1: PME# disabled [ 0.452733] pci 0000:07:00.2: reg 10: [mem 0x94100900-0x941009ff] [ 0.452811] pci 0000:07:00.2: supports D1 D2 [ 0.452814] pci 0000:07:00.2: PME# supported from D0 D1 D2 D3hot D3cold [ 0.452820] pci 0000:07:00.2: PME# disabled [ 0.452867] pci 0000:07:00.3: reg 10: [mem 0x94100800-0x941008ff] [ 0.452942] pci 0000:07:00.3: supports D1 D2 [ 0.452945] pci 0000:07:00.3: PME# supported from D0 D1 D2 D3hot D3cold [ 0.452952] pci 0000:07:00.3: PME# disabled [ 0.453043] pci 0000:00:1e.0: PCI bridge to [bus 07-07] (subtractive decode) [ 0.453051] pci 0000:00:1e.0: bridge window [io 0xf000-0x0000] (disabled) [ 0.453058] pci 0000:00:1e.0: bridge window [mem 0x94100000-0x941fffff] [ 0.453068] pci 0000:00:1e.0: bridge window [mem 0xfff00000-0x000fffff pref] (disabled) [ 0.453072] pci 0000:00:1e.0: bridge window [io 0x0000-0x0cf7] (subtractive decode) [ 0.453076] pci 0000:00:1e.0: bridge window [io 0x0d00-0xffff] (subtractive decode) [ 0.453080] pci 0000:00:1e.0: bridge window [mem 0x000a0000-0x000bffff] (subtractive decode) [ 0.453083] pci 0000:00:1e.0: bridge window [mem 0x80000000-0xfebfffff] (subtractive decode) [ 0.453127] pci_bus 0000:00: on NUMA node 0 [ 0.453143] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0._PRT] [ 0.453489] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.P32_._PRT] [ 0.453679] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.EXP2._PRT] [ 0.453809] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.EXP3._PRT] [ 0.453939] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.EXP4._PRT] [ 0.454268] ACPI Warning for \_SB_.PCI0._OSC: Parameter count mismatch - ASL declared 5, ACPI requires 4 (20100428/nspredef-352) [ 0.454280] \_SB_.PCI0:_OSC evaluation returned wrong type [ 0.454282] _OSC request data:1 1f 1f [ 0.468538] ACPI: PCI Interrupt Link [LNKA] (IRQs 3 4 5 7 9 10 *11 12) [ 0.468715] ACPI: PCI Interrupt Link [LNKB] (IRQs 3 4 5 7 9 10 *11 12) [ 0.468888] ACPI: PCI Interrupt Link [LNKC] (IRQs 3 4 5 7 9 10 *11 12) [ 0.469069] ACPI: PCI Interrupt Link [LNKD] (IRQs 3 4 5 7 9 10 *11 12) [ 0.469242] ACPI: PCI Interrupt Link [LNKE] (IRQs 3 4 5 7 9 10 11 12) *0, disabled. [ 0.469416] ACPI: PCI Interrupt Link [LNKF] (IRQs 3 4 5 7 9 *10 11 12) [ 0.469588] ACPI: PCI Interrupt Link [LNKG] (IRQs 3 4 5 7 9 10 *11 12) [ 0.469759] ACPI: PCI Interrupt Link [LNKH] (IRQs 3 4 5 7 9 10 *11 12) [ 0.469857] HEST: Table is not found! [ 0.469960] vgaarb: device added: PCI:0000:00:02.0,decodes=io+mem,owns=io+mem,locks=none [ 0.469988] vgaarb: loaded [ 0.470219] SCSI subsystem initialized [ 0.470336] libata version 3.00 loaded. [ 0.470411] usbcore: registered new interface driver usbfs [ 0.470428] usbcore: registered new interface driver hub [ 0.470462] usbcore: registered new device driver usb [ 0.471102] ACPI: WMI: Mapper loaded [ 0.471106] PCI: Using ACPI for IRQ routing [ 0.471110] PCI: pci_cache_line_size set to 64 bytes [ 0.471283] reserve RAM buffer: 0000000000002000 - 000000000000ffff [ 0.471287] reserve RAM buffer: 000000000009fc00 - 000000000009ffff [ 0.471290] reserve RAM buffer: 000000007f4fd000 - 000000007fffffff [ 0.471295] reserve RAM buffer: 000000007f552000 - 000000007fffffff [ 0.471300] reserve RAM buffer: 000000007f5bb000 - 000000007fffffff [ 0.471304] reserve RAM buffer: 000000007f670000 - 000000007fffffff [ 0.471432] NetLabel: Initializing [ 0.471434] NetLabel: domain hash size = 128 [ 0.471437] NetLabel: protocols = UNLABELED CIPSOv4 [ 0.471453] NetLabel: unlabeled traffic allowed by default [ 0.471503] HPET: 3 timers in total, 0 timers will be used for per-cpu timer [ 0.471512] hpet0: at MMIO 0xfed00000, IRQs 2, 8, 0 [ 0.471518] hpet0: 3 comparators, 64-bit 14.318180 MHz counter [ 0.480052] Switching to clocksource tsc [ 0.495213] AppArmor: AppArmor Filesystem Enabled [ 0.495238] pnp: PnP ACPI init [ 0.495264] ACPI: bus type pnp registered [ 0.496803] pnp 00:01: disabling [io 0x164e-0x164f] because it overlaps 0000:00:1c.3 BAR 13 [io 0x1000-0x1fff] [ 0.507980] Freeing initrd memory: 10368k freed [ 0.604477] pnp: PnP ACPI: found 10 devices [ 0.604482] ACPI: ACPI bus type pnp unregistered [ 0.604488] PnPBIOS: Disabled by ACPI PNP [ 0.604509] system 00:01: [io 0x0600-0x060f] has been reserved [ 0.604514] system 00:01: [io 0x0610] has been reserved [ 0.604517] system 00:01: [io 0x0800-0x080f] has been reserved [ 0.604521] system 00:01: [io 0x0810-0x0817] has been reserved [ 0.604525] system 00:01: [io 0x0400-0x047f] has been reserved [ 0.604529] system 00:01: [io 0x0500-0x053f] has been reserved [ 0.604536] system 00:01: [mem 0xe0000000-0xefffffff] has been reserved [ 0.604540] system 00:01: [mem 0xfed1c000-0xfed1ffff] has been reserved [ 0.604544] system 00:01: [mem 0xfed14000-0xfed17fff] has been reserved [ 0.604548] system 00:01: [mem 0xfed18000-0xfed18fff] has been reserved [ 0.604552] system 00:01: [mem 0xfed19000-0xfed19fff] has been reserved [ 0.604557] system 00:01: [mem 0xfec00000-0xfec00fff] could not be reserved [ 0.604561] system 00:01: [mem 0xfee00000-0xfee00fff] has been reserved [ 0.604565] system 00:01: [mem 0x32000000-0x320000ff] could not be reserved [ 0.639468] pci 0000:00:02.1: BAR 0: assigned [mem 0x98500000-0x985fffff 64bit] [ 0.639477] pci 0000:00:02.1: BAR 0: set to [mem 0x98500000-0x985fffff 64bit] (PCI address [0x98500000-0x985fffff] [ 0.639481] pci 0000:00:1c.0: PCI bridge to [bus 02-02] [ 0.639486] pci 0000:00:1c.0: bridge window [io 0x4000-0x4fff] [ 0.639495] pci 0000:00:1c.0: bridge window [mem 0x97400000-0x983fffff] [ 0.639501] pci 0000:00:1c.0: bridge window [mem 0x90000000-0x90ffffff 64bit pref] [ 0.639511] pci 0000:00:1c.1: PCI bridge to [bus 04-04] [ 0.639516] pci 0000:00:1c.1: bridge window [io 0x3000-0x3fff] [ 0.639524] pci 0000:00:1c.1: bridge window [mem 0x96400000-0x973fffff] [ 0.639531] pci 0000:00:1c.1: bridge window [mem 0x91000000-0x91ffffff 64bit pref] [ 0.639541] pci 0000:00:1c.2: PCI bridge to [bus 05-05] [ 0.639547] pci 0000:00:1c.2: bridge window [io 0x2000-0x2fff] [ 0.639555] pci 0000:00:1c.2: bridge window [mem 0x95300000-0x963fffff] [ 0.639562] pci 0000:00:1c.2: bridge window [mem 0x92000000-0x92ffffff 64bit pref] [ 0.639572] pci 0000:00:1c.3: PCI bridge to [bus 06-06] [ 0.639577] pci 0000:00:1c.3: bridge window [io 0x1000-0x1fff] [ 0.639585] pci 0000:00:1c.3: bridge window [mem 0x94200000-0x952fffff] [ 0.639592] pci 0000:00:1c.3: bridge window [mem 0x93000000-0x93ffffff 64bit pref] [ 0.639603] pci 0000:00:1e.0: PCI bridge to [bus 07-07] [ 0.639605] pci 0000:00:1e.0: bridge window [io disabled] [ 0.639614] pci 0000:00:1e.0: bridge window [mem 0x94100000-0x941fffff] [ 0.639620] pci 0000:00:1e.0: bridge window [mem pref disabled] [ 0.639645] alloc irq_desc for 16 on node -1 [ 0.639647] alloc kstat_irqs on node -1 [ 0.639656] pci 0000:00:1c.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16 [ 0.639664] pci 0000:00:1c.0: setting latency timer to 64 [ 0.639677] alloc irq_desc for 17 on node -1 [ 0.639680] alloc kstat_irqs on node -1 [ 0.639685] pci 0000:00:1c.1: PCI INT B -> GSI 17 (level, low) -> IRQ 17 [ 0.639692] pci 0000:00:1c.1: setting latency timer to 64 [ 0.639705] alloc irq_desc for 18 on node -1 [ 0.639708] alloc kstat_irqs on node -1 [ 0.639713] pci 0000:00:1c.2: PCI INT C -> GSI 18 (level, low) -> IRQ 18 [ 0.639719] pci 0000:00:1c.2: setting latency timer to 64 [ 0.639732] alloc irq_desc for 19 on node -1 [ 0.639735] alloc kstat_irqs on node -1 [ 0.639740] pci 0000:00:1c.3: PCI INT D -> GSI 19 (level, low) -> IRQ 19 [ 0.639746] pci 0000:00:1c.3: setting latency timer to 64 [ 0.639758] pci 0000:00:1e.0: setting latency timer to 64 [ 0.639771] pci_bus 0000:00: resource 4 [io 0x0000-0x0cf7] [ 0.639775] pci_bus 0000:00: resource 5 [io 0x0d00-0xffff] [ 0.639778] pci_bus 0000:00: resource 6 [mem 0x000a0000-0x000bffff] [ 0.639781] pci_bus 0000:00: resource 7 [mem 0x80000000-0xfebfffff] [ 0.639785] pci_bus 0000:02: resource 0 [io 0x4000-0x4fff] [ 0.639788] pci_bus 0000:02: resource 1 [mem 0x97400000-0x983fffff] [ 0.639791] pci_bus 0000:02: resource 2 [mem 0x90000000-0x90ffffff 64bit pref] [ 0.639795] pci_bus 0000:04: resource 0 [io 0x3000-0x3fff] [ 0.639798] pci_bus 0000:04: resource 1 [mem 0x96400000-0x973fffff] [ 0.639801] pci_bus 0000:04: resource 2 [mem 0x91000000-0x91ffffff 64bit pref] [ 0.639805] pci_bus 0000:05: resource 0 [io 0x2000-0x2fff] [ 0.639808] pci_bus 0000:05: resource 1 [mem 0x95300000-0x963fffff] [ 0.639811] pci_bus 0000:05: resource 2 [mem 0x92000000-0x92ffffff 64bit pref] [ 0.639815] pci_bus 0000:06: resource 0 [io 0x1000-0x1fff] [ 0.639818] pci_bus 0000:06: resource 1 [mem 0x94200000-0x952fffff] [ 0.639821] pci_bus 0000:06: resource 2 [mem 0x93000000-0x93ffffff 64bit pref] [ 0.639825] pci_bus 0000:07: resource 1 [mem 0x94100000-0x941fffff] [ 0.639828] pci_bus 0000:07: resource 4 [io 0x0000-0x0cf7] [ 0.639831] pci_bus 0000:07: resource 5 [io 0x0d00-0xffff] [ 0.639835] pci_bus 0000:07: resource 6 [mem 0x000a0000-0x000bffff] [ 0.639838] pci_bus 0000:07: resource 7 [mem 0x80000000-0xfebfffff] [ 0.639893] NET: Registered protocol family 2 [ 0.639984] IP route cache hash table entries: 32768 (order: 5, 131072 bytes) [ 0.640320] TCP established hash table entries: 131072 (order: 8, 1048576 bytes) [ 0.640869] TCP bind hash table entries: 65536 (order: 7, 524288 bytes) [ 0.641251] TCP: Hash tables configured (established 131072 bind 65536) [ 0.641255] TCP reno registered [ 0.641260] UDP hash table entries: 512 (order: 2, 16384 bytes) [ 0.641276] UDP-Lite hash table entries: 512 (order: 2, 16384 bytes) [ 0.641423] NET: Registered protocol family 1 [ 0.641452] pci 0000:00:02.0: Boot video device [ 0.641879] PCI: CLS 0 bytes, default 64 [ 0.642152] cpufreq-nforce2: No nForce2 chipset. [ 0.642196] Scanning for low memory corruption every 60 seconds [ 0.642391] audit: initializing netlink socket (disabled) [ 0.642410] type=2000 audit(1278423451.636:1): initialized [ 0.656383] highmem bounce pool size: 64 pages [ 0.656390] HugeTLB registered 4 MB page size, pre-allocated 0 pages [ 0.658382] VFS: Disk quotas dquot_6.5.2 [ 0.658470] Dquot-cache hash table entries: 1024 (order 0, 4096 bytes) [ 0.659277] fuse init (API version 7.14) [ 0.659398] msgmni has been set to 1703 [ 0.659670] alg: No test for stdrng (krng) [ 0.659745] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 253) [ 0.659749] io scheduler noop registered [ 0.659752] io scheduler deadline registered [ 0.659774] io scheduler cfq registered (default) [ 0.659952] pcieport 0000:00:1c.0: setting latency timer to 64 [ 0.660013] alloc irq_desc for 40 on node -1 [ 0.660016] alloc kstat_irqs on node -1 [ 0.660031] pcieport 0000:00:1c.0: irq 40 for MSI/MSI-X [ 0.660160] pcieport 0000:00:1c.1: setting latency timer to 64 [ 0.660217] alloc irq_desc for 41 on node -1 [ 0.660220] alloc kstat_irqs on node -1 [ 0.660231] pcieport 0000:00:1c.1: irq 41 for MSI/MSI-X [ 0.660358] pcieport 0000:00:1c.2: setting latency timer to 64 [ 0.660416] alloc irq_desc for 42 on node -1 [ 0.660418] alloc kstat_irqs on node -1 [ 0.660429] pcieport 0000:00:1c.2: irq 42 for MSI/MSI-X [ 0.660552] pcieport 0000:00:1c.3: setting latency timer to 64 [ 0.660609] alloc irq_desc for 43 on node -1 [ 0.660611] alloc kstat_irqs on node -1 [ 0.660622] pcieport 0000:00:1c.3: irq 43 for MSI/MSI-X [ 0.660758] pcieport 0000:00:1c.0: Requesting control of PCIe PME from ACPI BIOS [ 0.660934] ACPI Warning for \_SB_.PCI0._OSC: Parameter count mismatch - ASL declared 5, ACPI requires 4 (20100428/nspredef-352) [ 0.660948] \_SB_.PCI0:_OSC evaluation returned wrong type [ 0.660950] _OSC request data:1 0 1f [ 0.660956] pcieport 0000:00:1c.0: Failed to receive control of PCIe PME service: ACPI _OSC failed [ 0.660962] pcie_pme: probe of 0000:00:1c.0:pcie01 failed with error -13 [ 0.660969] pcieport 0000:00:1c.1: Requesting control of PCIe PME from ACPI BIOS [ 0.661105] ACPI Warning for \_SB_.PCI0._OSC: Parameter count mismatch - ASL declared 5, ACPI requires 4 (20100428/nspredef-352) [ 0.661116] \_SB_.PCI0:_OSC evaluation returned wrong type [ 0.661118] _OSC request data:1 0 1f [ 0.661125] pcieport 0000:00:1c.1: Failed to receive control of PCIe PME service: ACPI _OSC failed [ 0.661130] pcie_pme: probe of 0000:00:1c.1:pcie01 failed with error -13 [ 0.661136] pcieport 0000:00:1c.2: Requesting control of PCIe PME from ACPI BIOS [ 0.661269] ACPI Warning for \_SB_.PCI0._OSC: Parameter count mismatch - ASL declared 5, ACPI requires 4 (20100428/nspredef-352) [ 0.661281] \_SB_.PCI0:_OSC evaluation returned wrong type [ 0.661283] _OSC request data:1 0 1f [ 0.661289] pcieport 0000:00:1c.2: Failed to receive control of PCIe PME service: ACPI _OSC failed [ 0.661294] pcie_pme: probe of 0000:00:1c.2:pcie01 failed with error -13 [ 0.661300] pcieport 0000:00:1c.3: Requesting control of PCIe PME from ACPI BIOS [ 0.661432] ACPI Warning for \_SB_.PCI0._OSC: Parameter count mismatch - ASL declared 5, ACPI requires 4 (20100428/nspredef-352) [ 0.661443] \_SB_.PCI0:_OSC evaluation returned wrong type [ 0.661446] _OSC request data:1 0 1f [ 0.661452] pcieport 0000:00:1c.3: Failed to receive control of PCIe PME service: ACPI _OSC failed [ 0.661457] pcie_pme: probe of 0000:00:1c.3:pcie01 failed with error -13 [ 0.661487] pci_hotplug: PCI Hot Plug PCI Core version: 0.5 [ 0.661629] ACPI Warning for \_SB_.PCI0._OSC: Parameter count mismatch - ASL declared 5, ACPI requires 4 (20100428/nspredef-352) [ 0.661641] \_SB_.PCI0:_OSC evaluation returned wrong type [ 0.661643] _OSC request data:1 0 1f [ 0.661796] ACPI Warning for \_SB_.PCI0._OSC: Parameter count mismatch - ASL declared 5, ACPI requires 4 (20100428/nspredef-352) [ 0.661807] \_SB_.PCI0:_OSC evaluation returned wrong type [ 0.661809] _OSC request data:1 0 1f [ 0.661960] ACPI Warning for \_SB_.PCI0._OSC: Parameter count mismatch - ASL declared 5, ACPI requires 4 (20100428/nspredef-352) [ 0.661971] \_SB_.PCI0:_OSC evaluation returned wrong type [ 0.661974] _OSC request data:1 0 1f [ 0.662124] ACPI Warning for \_SB_.PCI0._OSC: Parameter count mismatch - ASL declared 5, ACPI requires 4 (20100428/nspredef-352) [ 0.662135] \_SB_.PCI0:_OSC evaluation returned wrong type [ 0.662138] _OSC request data:1 0 1f [ 0.662310] ACPI Warning for \_SB_.PCI0._OSC: Parameter count mismatch - ASL declared 5, ACPI requires 4 (20100428/nspredef-352) [ 0.662322] \_SB_.PCI0:_OSC evaluation returned wrong type [ 0.662324] _OSC request data:1 0 1f [ 0.662477] ACPI Warning for \_SB_.PCI0._OSC: Parameter count mismatch - ASL declared 5, ACPI requires 4 (20100428/nspredef-352) [ 0.662489] \_SB_.PCI0:_OSC evaluation returned wrong type [ 0.662491] _OSC request data:1 0 1f [ 0.662642] ACPI Warning for \_SB_.PCI0._OSC: Parameter count mismatch - ASL declared 5, ACPI requires 4 (20100428/nspredef-352) [ 0.662654] \_SB_.PCI0:_OSC evaluation returned wrong type [ 0.662656] _OSC request data:1 0 1f [ 0.662808] ACPI Warning for \_SB_.PCI0._OSC: Parameter count mismatch - ASL declared 5, ACPI requires 4 (20100428/nspredef-352) [ 0.662819] \_SB_.PCI0:_OSC evaluation returned wrong type [ 0.662822] _OSC request data:1 0 1f [ 0.662847] pciehp: PCI Express Hot Plug Controller Driver version: 0.4 [ 0.671895] ACPI: AC Adapter [AC] (on-line) [ 0.672016] input: Power Button as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:02/PNP0C0C:00/input/input0 [ 0.672021] ACPI: Power Button [PWRB] [ 0.672077] input: Lid Switch as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:02/PNP0C0D:00/input/input1 [ 0.672136] ACPI: Lid Switch [LID0] [ 0.672196] input: Sleep Button as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:02/PNP0C0E:00/input/input2 [ 0.672200] ACPI: Sleep Button [SLPB] [ 0.672272] input: Power Button as /devices/LNXSYSTM:00/LNXPWRBN:00/input/input3 [ 0.672275] ACPI: Power Button [PWRF] [ 0.672691] ACPI: acpi_idle registered with cpuidle [ 0.675984] Monitor-Mwait will be used to enter C-1 state [ 0.676013] Monitor-Mwait will be used to enter C-2 state [ 0.676038] Monitor-Mwait will be used to enter C-3 state [ 0.676045] Marking TSC unstable due to TSC halts in idle [ 0.676105] Switching to clocksource hpet [ 0.812074] thermal LNXTHERM:01: registered as thermal_zone0 [ 0.812086] ACPI: Thermal Zone [TZ01] (40 C) [ 0.812214] ERST: Table is not found! [ 0.812269] isapnp: Scanning for PnP cards... [ 0.814264] Serial: 8250/16550 driver, 4 ports, IRQ sharing enabled [ 0.816216] brd: module loaded [ 0.816935] loop: module loaded [ 0.817189] ata_piix 0000:00:1f.1: version 2.13 [ 0.817207] ata_piix 0000:00:1f.1: PCI INT A -> GSI 18 (level, low) -> IRQ 18 [ 0.817260] ata_piix 0000:00:1f.1: setting latency timer to 64 [ 0.817364] scsi0 : ata_piix [ 0.817477] scsi1 : ata_piix [ 0.818274] ata1: PATA max UDMA/100 cmd 0x1f0 ctl 0x3f6 bmdma 0x50e0 irq 14 [ 0.818278] ata2: PATA max UDMA/100 cmd 0x170 ctl 0x376 bmdma 0x50e8 irq 15 [ 0.818737] Fixed MDIO Bus: probed [ 0.818787] PPP generic driver version 2.4.2 [ 0.818840] tun: Universal TUN/TAP device driver, 1.6 [ 0.818843] tun: (C) 1999-2004 Max Krasnyansky [ 0.818942] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver [ 0.818970] ehci_hcd 0000:00:1a.7: PCI INT C -> GSI 18 (level, low) -> IRQ 18 [ 0.818994] ehci_hcd 0000:00:1a.7: setting latency timer to 64 [ 0.818999] ehci_hcd 0000:00:1a.7: EHCI Host Controller [ 0.819039] ehci_hcd 0000:00:1a.7: new USB bus registered, assigned bus number 1 [ 0.819079] ehci_hcd 0000:00:1a.7: debug port 1 [ 0.822963] ehci_hcd 0000:00:1a.7: cache line size of 64 is not supported [ 0.822986] ehci_hcd 0000:00:1a.7: irq 18, io mem 0x98404c00 [ 0.836019] ehci_hcd 0000:00:1a.7: USB 2.0 started, EHCI 1.00 [ 0.836176] hub 1-0:1.0: USB hub found [ 0.836183] hub 1-0:1.0: 4 ports detected [ 0.836289] alloc irq_desc for 23 on node -1 [ 0.836292] alloc kstat_irqs on node -1 [ 0.836301] ehci_hcd 0000:00:1d.7: PCI INT A -> GSI 23 (level, low) -> IRQ 23 [ 0.836317] ehci_hcd 0000:00:1d.7: setting latency timer to 64 [ 0.836322] ehci_hcd 0000:00:1d.7: EHCI Host Controller [ 0.836370] ehci_hcd 0000:00:1d.7: new USB bus registered, assigned bus number 2 [ 0.836404] ehci_hcd 0000:00:1d.7: debug port 1 [ 0.840299] ehci_hcd 0000:00:1d.7: cache line size of 64 is not supported [ 0.840319] ehci_hcd 0000:00:1d.7: irq 23, io mem 0x98404800 [ 0.856018] ehci_hcd 0000:00:1d.7: USB 2.0 started, EHCI 1.00 [ 0.856151] hub 2-0:1.0: USB hub found [ 0.856157] hub 2-0:1.0: 6 ports detected [ 0.856264] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver [ 0.856286] uhci_hcd: USB Universal Host Controller Interface driver [ 0.856325] uhci_hcd 0000:00:1a.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16 [ 0.856334] uhci_hcd 0000:00:1a.0: setting latency timer to 64 [ 0.856339] uhci_hcd 0000:00:1a.0: UHCI Host Controller [ 0.856383] uhci_hcd 0000:00:1a.0: new USB bus registered, assigned bus number 3 [ 0.856427] uhci_hcd 0000:00:1a.0: irq 16, io base 0x000050c0 [ 0.856585] hub 3-0:1.0: USB hub found [ 0.856591] hub 3-0:1.0: 2 ports detected [ 0.856677] alloc irq_desc for 21 on node -1 [ 0.856680] alloc kstat_irqs on node -1 [ 0.856687] uhci_hcd 0000:00:1a.1: PCI INT B -> GSI 21 (level, low) -> IRQ 21 [ 0.856696] uhci_hcd 0000:00:1a.1: setting latency timer to 64 [ 0.856700] uhci_hcd 0000:00:1a.1: UHCI Host Controller [ 0.856749] uhci_hcd 0000:00:1a.1: new USB bus registered, assigned bus number 4 [ 0.856793] uhci_hcd 0000:00:1a.1: irq 21, io base 0x000050a0 [ 0.856948] hub 4-0:1.0: USB hub found [ 0.856954] hub 4-0:1.0: 2 ports detected [ 0.857042] uhci_hcd 0000:00:1d.0: PCI INT A -> GSI 23 (level, low) -> IRQ 23 [ 0.857051] uhci_hcd 0000:00:1d.0: setting latency timer to 64 [ 0.857055] uhci_hcd 0000:00:1d.0: UHCI Host Controller [ 0.857096] uhci_hcd 0000:00:1d.0: new USB bus registered, assigned bus number 5 [ 0.857129] uhci_hcd 0000:00:1d.0: irq 23, io base 0x00005080 [ 0.857283] hub 5-0:1.0: USB hub found [ 0.857288] hub 5-0:1.0: 2 ports detected [ 0.857371] uhci_hcd 0000:00:1d.1: PCI INT B -> GSI 19 (level, low) -> IRQ 19 [ 0.857379] uhci_hcd 0000:00:1d.1: setting latency timer to 64 [ 0.857385] uhci_hcd 0000:00:1d.1: UHCI Host Controller [ 0.857428] uhci_hcd 0000:00:1d.1: new USB bus registered, assigned bus number 6 [ 0.857472] uhci_hcd 0000:00:1d.1: irq 19, io base 0x00005060 [ 0.857627] hub 6-0:1.0: USB hub found [ 0.857633] hub 6-0:1.0: 2 ports detected [ 0.857717] uhci_hcd 0000:00:1d.2: PCI INT C -> GSI 18 (level, low) -> IRQ 18 [ 0.857725] uhci_hcd 0000:00:1d.2: setting latency timer to 64 [ 0.857730] uhci_hcd 0000:00:1d.2: UHCI Host Controller [ 0.857775] uhci_hcd 0000:00:1d.2: new USB bus registered, assigned bus number 7 [ 0.857808] uhci_hcd 0000:00:1d.2: irq 18, io base 0x00005040 [ 0.857954] hub 7-0:1.0: USB hub found [ 0.857960] hub 7-0:1.0: 2 ports detected [ 0.858134] PNP: PS/2 Controller [PNP0303:KBC0,PNP0f13:MSE0] at 0x60,0x64 irq 1,12 [ 0.899751] serio: i8042 KBD port at 0x60,0x64 irq 1 [ 0.899760] serio: i8042 AUX port at 0x60,0x64 irq 12 [ 0.899841] mice: PS/2 mouse device common for all mice [ 0.900026] rtc_cmos 00:03: RTC can wake from S4 [ 0.900077] rtc_cmos 00:03: rtc core: registered rtc_cmos as rtc0 [ 0.900114] rtc0: alarms up to one month, 242 bytes nvram, hpet irqs [ 0.900274] device-mapper: uevent: version 1.0.3 [ 0.900415] device-mapper: ioctl: 4.17.0-ioctl (2010-03-05) initialised: dm-devel@redhat.com [ 0.901859] device-mapper: multipath: version 1.1.1 loaded [ 0.901863] device-mapper: multipath round-robin: version 1.0.0 loaded [ 0.902017] EISA: Probing bus 0 at eisa.0 [ 0.902020] EISA: Cannot allocate resource for mainboard [ 0.902023] Cannot allocate resource for EISA slot 1 [ 0.902026] Cannot allocate resource for EISA slot 2 [ 0.902029] Cannot allocate resource for EISA slot 3 [ 0.902031] Cannot allocate resource for EISA slot 4 [ 0.902034] Cannot allocate resource for EISA slot 5 [ 0.902036] Cannot allocate resource for EISA slot 6 [ 0.902039] Cannot allocate resource for EISA slot 7 [ 0.902041] Cannot allocate resource for EISA slot 8 [ 0.902044] EISA: Detected 0 cards. [ 0.902226] cpuidle: using governor ladder [ 0.902370] cpuidle: using governor menu [ 0.902818] TCP cubic registered [ 0.902990] NET: Registered protocol family 10 [ 0.903477] lo: Disabled Privacy Extensions [ 0.903805] NET: Registered protocol family 17 [ 0.904414] Using IPI No-Shortcut mode [ 0.904521] PM: Resume from disk failed. [ 0.904537] registered taskstats version 1 [ 0.905043] Magic number: 2:415:634 [ 0.905157] rtc_cmos 00:03: setting system clock to 2010-07-06 13:37:32 UTC (1278423452) [ 0.905161] BIOS EDD facility v0.16 2004-Jun-25, 0 devices found [ 0.905163] EDD information not available. [ 0.923476] input: AT Translated Set 2 keyboard as /devices/platform/i8042/serio0/input/input4 [ 0.995858] ata1.00: ATAPI: HL-DT-ST DVDRAM GSA-T20N, WP03, max UDMA/33 [ 1.012323] ata1.00: configured for UDMA/33 [ 1.166632] isapnp: No Plug & Play device found [ 1.170231] scsi 0:0:0:0: CD-ROM HL-DT-ST DVDRAM GSA-T20N WP03 PQ: 0 ANSI: 5 [ 1.181243] sr0: scsi3-mmc drive: 24x/24x writer dvd-ram cd/rw xa/form2 cdda tray [ 1.181247] Uniform CD-ROM driver Revision: 3.20 [ 1.181385] sr 0:0:0:0: Attached scsi CD-ROM sr0 [ 1.181459] sr 0:0:0:0: Attached scsi generic sg0 type 5 [ 1.181558] Freeing unused kernel memory: 684k freed [ 1.182033] Write protecting the kernel text: 4948k [ 1.182105] Write protecting the kernel read-only data: 2020k [ 1.223979] udev: starting version 151 [ 1.224092] usb 2-4: new high speed USB device using ehci_hcd and address 3 [ 1.354048] tg3.c:v3.110 (April 9, 2010) [ 1.354078] tg3 0000:05:00.0: PCI INT A -> GSI 18 (level, low) -> IRQ 18 [ 1.354092] tg3 0000:05:00.0: setting latency timer to 64 [ 1.419677] sdhci: Secure Digital Host Controller Interface driver [ 1.419681] sdhci: Copyright(c) Pierre Ossman [ 1.436407] ahci 0000:00:1f.2: version 3.0 [ 1.436434] ahci 0000:00:1f.2: PCI INT B -> GSI 19 (level, low) -> IRQ 19 [ 1.436500] alloc irq_desc for 44 on node -1 [ 1.436503] alloc kstat_irqs on node -1 [ 1.436519] ahci 0000:00:1f.2: irq 44 for MSI/MSI-X [ 1.436622] ahci 0000:00:1f.2: AHCI 0001.0100 32 slots 3 ports 3 Gbps 0x7 impl SATA mode [ 1.436627] ahci 0000:00:1f.2: flags: 64bit ncq sntf pm led clo pio slum part ccc ems [ 1.436635] ahci 0000:00:1f.2: setting latency timer to 64 [ 1.449509] alloc irq_desc for 20 on node -1 [ 1.449513] alloc kstat_irqs on node -1 [ 1.449523] firewire_ohci 0000:07:00.0: PCI INT A -> GSI 20 (level, low) -> IRQ 20 [ 1.449532] firewire_ohci 0000:07:00.0: setting latency timer to 64 [ 1.495613] scsi2 : ahci [ 1.497436] scsi3 : ahci [ 1.497970] scsi4 : ahci [ 1.498239] ata3: SATA max UDMA/133 abar m2048@0x98404000 port 0x98404100 irq 44 [ 1.498245] ata4: SATA max UDMA/133 abar m2048@0x98404000 port 0x98404180 irq 44 [ 1.498250] ata5: SATA max UDMA/133 abar m2048@0x98404000 port 0x98404200 irq 44 [ 1.498358] tg3 0000:05:00.0: eth0: Tigon3 [partno(BCM95787m) rev b002] (PCI Express) MAC address 00:1b:38:6c:9d:57 [ 1.498364] tg3 0000:05:00.0: eth0: attached PHY is 5787 (10/100/1000Base-T Ethernet) (WireSpeed[1]) [ 1.498368] tg3 0000:05:00.0: eth0: RXcsums[1] LinkChgREG[0] MIirq[0] ASF[0] TSOcap[1] [ 1.498372] tg3 0000:05:00.0: eth0: dma_rwctrl[76180000] dma_mask[64-bit] [ 1.581035] firewire_ohci: Added fw-ohci device 0000:07:00.0, OHCI v1.10, 4 IR + 4 IT contexts, quirks 0x0 [ 1.581069] sdhci-pci 0000:07:00.1: SDHCI controller found [1180:0822] (rev 22) [ 1.581094] alloc irq_desc for 22 on node -1 [ 1.581097] alloc kstat_irqs on node -1 [ 1.581106] sdhci-pci 0000:07:00.1: PCI INT B -> GSI 22 (level, low) -> IRQ 22 [ 1.582148] sdhci-pci 0000:07:00.1: Will use DMA mode even though HW doesn't fully claim to support it. [ 1.582157] sdhci-pci 0000:07:00.1: setting latency timer to 64 [ 1.583210] Registered led device: mmc0:: [ 1.584270] mmc0: SDHCI controller on PCI [0000:07:00.1] using DMA [ 1.604040] usb 5-1: new low speed USB device using uhci_hcd and address 2 [ 1.817048] ata5: SATA link down (SStatus 0 SControl 300) [ 1.817079] ata4: SATA link down (SStatus 0 SControl 300) [ 1.817108] ata3: SATA link up 1.5 Gbps (SStatus 113 SControl 300) [ 1.840224] ata3.00: ACPI cmd ef/10:03:00:00:00:a0 (SET FEATURES) filtered out [ 1.883198] ata3.00: ATA-7: WDC WD1600BEVS-22RST0, 04.01G04, max UDMA/133 [ 1.883203] ata3.00: 312581808 sectors, multi 16: LBA48 NCQ (depth 31/32), AA [ 1.884333] ata3.00: ACPI cmd 00/00:00:00:00:00:a0 (NOP) rejected by device (Stat=0x51 Err=0x04) [ 1.884575] ata3.00: configured for UDMA/133 [ 1.900254] scsi 2:0:0:0: Direct-Access ATA WDC WD1600BEVS-2 04.0 PQ: 0 ANSI: 5 [ 1.900482] sd 2:0:0:0: Attached scsi generic sg1 type 0 [ 1.900653] sd 2:0:0:0: [sda] 312581808 512-byte logical blocks: (160 GB/149 GiB) [ 1.900811] sd 2:0:0:0: [sda] Write Protect is off [ 1.900815] sd 2:0:0:0: [sda] Mode Sense: 00 3a 00 00 [ 1.900878] sd 2:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA [ 1.901189] sda: sda1 sda2 sda3 sda4 [ 1.938495] sd 2:0:0:0: [sda] Attached SCSI disk [ 1.945772] usbcore: registered new interface driver hiddev [ 1.964106] input: Logitech USB RECEIVER as /devices/pci0000:00/0000:00:1d.0/usb5/5-1/5-1:1.0/input/input5 [ 1.964249] generic-usb 0003:046D:C50E.0001: input,hidraw0: USB HID v1.11 Mouse [Logitech USB RECEIVER] on usb-0000:00:1d.0-1/input0 [ 1.964277] usbcore: registered new interface driver usbhid [ 1.964280] usbhid: USB HID core driver [ 2.081156] firewire_core: created device fw0: GUID b640134100023f7b, S400 [ 2.156237] ACPI: Battery Slot [BAT0] (battery present) [ 2.393847] EXT4-fs (sda2): INFO: recovery required on readonly filesystem [ 2.393854] EXT4-fs (sda2): write access will be enabled during recovery [ 7.352640] EXT4-fs (sda2): orphan cleanup on readonly fs [ 7.352658] EXT4-fs (sda2): ext4_orphan_cleanup: deleting unreferenced inode 1055677 [ 7.364514] EXT4-fs (sda2): ext4_orphan_cleanup: deleting unreferenced inode 1048689 [ 7.364565] EXT4-fs (sda2): ext4_orphan_cleanup: deleting unreferenced inode 1048687 [ 7.364591] EXT4-fs (sda2): ext4_orphan_cleanup: deleting unreferenced inode 1048599 [ 7.389016] EXT4-fs (sda2): ext4_orphan_cleanup: deleting unreferenced inode 1052993 [ 7.389062] EXT4-fs (sda2): ext4_orphan_cleanup: deleting unreferenced inode 1052994 [ 7.389087] EXT4-fs (sda2): ext4_orphan_cleanup: deleting unreferenced inode 1053920 [ 7.389154] EXT4-fs (sda2): ext4_orphan_cleanup: deleting unreferenced inode 1054713 [ 7.389180] EXT4-fs (sda2): ext4_orphan_cleanup: deleting unreferenced inode 1055692 [ 7.389221] EXT4-fs (sda2): ext4_orphan_cleanup: deleting unreferenced inode 1055694 [ 7.389244] EXT4-fs (sda2): ext4_orphan_cleanup: deleting unreferenced inode 1055696 [ 7.389266] EXT4-fs (sda2): ext4_orphan_cleanup: deleting unreferenced inode 1055699 [ 7.389292] EXT4-fs (sda2): ext4_orphan_cleanup: deleting unreferenced inode 1055701 [ 7.389312] EXT4-fs (sda2): 13 orphan inodes deleted [ 7.389317] EXT4-fs (sda2): recovery complete [ 7.856259] EXT4-fs (sda2): mounted filesystem with ordered data mode. Opts: (null) [ 9.732704] Adding 2580476k swap on /dev/sda3. Priority:-1 extents:1 across:2580476k [ 10.263325] udev: starting version 151 [ 10.592636] lirc_dev: IR Remote Control driver registered, major 61 [ 10.594259] BUG: unable to handle kernel NULL pointer dereference at (null) [ 10.594394] IP: [] kfifo_alloc+0x26/0x90 [ 10.594486] *pde = 7dae9067 [ 10.594567] Oops: 0002 [#1] SMP [ 10.594685] last sysfs file: /sys/devices/LNXSYSTM:00/LNXPWRBN:00/input/input3/name [ 10.594739] Modules linked in: lirc_ene0100(+) lirc_dev usbhid hid sdhci_pci firewire_ohci ahci sdhci led_class libahci firewire_core crc_itu_t tg3 [ 10.595307] [ 10.595348] Pid: 445, comm: modprobe Not tainted 2.6.35-6-generic #9-Ubuntu Nettiling/Aspire 5720Z [ 10.595401] EIP: 0060:[] EFLAGS: 00010286 CPU: 1 [ 10.595447] EIP is at kfifo_alloc+0x26/0x90 [ 10.595490] EAX: e10ef000 EBX: 00001000 ECX: c01674d2 EDX: c01674d2 [ 10.595537] ESI: 00000000 EDI: f69e9100 EBP: d1631e40 ESP: d1631e38 [ 10.595585] DS: 007b ES: 007b FS: 00d8 GS: 00e0 SS: 0068 [ 10.595631] Process modprobe (pid: 445, ti=d1630000 task=f6990cb0 task.ti=d1630000) [ 10.595679] Stack: [ 10.595718] f6b3f4e0 f6bf7840 d1631e68 f8273dc7 00000020 000080d0 d1631e68 f724ce00 [ 10.596011] <0> fffffff4 f8273fa0 f724ce00 f8274400 d1631e7c c03b7e9e f724ce00 f8274420 [ 10.596371] <0> f8274420 d1631ea0 c0404ead f724ced0 d1631ea0 c040c0f7 00000000 f724ce00 [ 10.596780] Call Trace: [ 10.596837] [] ? ene_probe+0x157/0x30b [lirc_ene0100] [ 10.596899] [] ? pnp_device_probe+0x6e/0xd0 [ 10.596958] [] ? really_probe+0x4d/0x150 [ 10.597017] [] ? pm_runtime_barrier+0x57/0xb0 [ 10.597075] [] ? driver_probe_device+0x3c/0x60 [ 10.597133] [] ? __driver_attach+0x81/0x90 [ 10.597191] [] ? bus_for_each_dev+0x53/0x80 [ 10.597249] [] ? driver_attach+0x1e/0x20 [ 10.597306] [] ? __driver_attach+0x0/0x90 [ 10.597364] [] ? bus_add_driver+0xd5/0x280 [ 10.597386] [] ? pnp_device_remove+0x0/0x40 [ 10.597386] [] ? driver_register+0x6a/0x130 [ 10.597386] [] ? tracepoint_module_notify+0x27/0x30 [ 10.597386] [] ? pnp_register_driver+0x1c/0x20 [ 10.597386] [] ? ene_init+0x38/0x3a [lirc_ene0100] [ 10.597386] [] ? __blocking_notifier_call_chain+0x54/0x70 [ 10.597386] [] ? do_one_initcall+0x31/0x190 [ 10.597386] [] ? ene_init+0x0/0x3a [lirc_ene0100] [ 10.597386] [] ? sys_init_module+0x9b/0x1e0 [ 10.597386] [] ? sys_close+0x75/0xc0 [ 10.597386] [] ? syscall_call+0x7/0xb [ 10.597386] Code: 89 3a eb d3 90 55 89 e5 56 53 0f 1f 44 00 00 89 d3 89 c6 85 db 89 ca 8d 4b ff 74 31 85 d9 75 25 89 d8 e8 de 64 0a 00 85 c0 74 38 <89> 06 31 c0 89 5e 04 c7 46 0c 00 00 00 00 c7 46 08 00 00 00 00 [ 10.597386] EIP: [] kfifo_alloc+0x26/0x90 SS:ESP 0068:d1631e38 [ 10.597386] CR2: 0000000000000000 [ 10.600659] ---[ end trace c562579174d65605 ]--- [ 10.966533] lp: driver loaded but no devices found [ 11.115059] coretemp coretemp.0: TjMax is assumed as 100 C! [ 11.115179] coretemp coretemp.1: TjMax is assumed as 100 C! [ 11.250926] Linux agpgart interface v0.103 [ 11.306040] cfg80211: Calling CRDA to update world regulatory domain [ 11.562782] agpgart-intel 0000:00:00.0: Intel 965GM Chipset [ 11.563754] agpgart-intel 0000:00:00.0: detected 7676K stolen memory [ 11.570309] agpgart-intel 0000:00:00.0: AGP aperture is 256M @ 0x80000000 [ 11.858973] ath5k 0000:06:00.0: PCI INT A -> GSI 19 (level, low) -> IRQ 19 [ 11.859059] ath5k 0000:06:00.0: setting latency timer to 64 [ 11.859387] ath5k 0000:06:00.0: registered as 'phy0' [ 12.364803] ath: EEPROM regdomain: 0x65 [ 12.364864] ath: EEPROM indicates we should expect a direct regpair map [ 12.364926] ath: Country alpha2 being used: 00 [ 12.364983] ath: Regpair used: 0x65 [ 12.610148] cfg80211: World regulatory domain updated: [ 12.610211] (start_freq - end_freq @ bandwidth), (max_antenna_gain, max_eirp) [ 12.610284] (2402000 KHz - 2472000 KHz @ 40000 KHz), (300 mBi, 2000 mBm) [ 12.610345] (2457000 KHz - 2482000 KHz @ 20000 KHz), (300 mBi, 2000 mBm) [ 12.610406] (2474000 KHz - 2494000 KHz @ 20000 KHz), (300 mBi, 2000 mBm) [ 12.610465] (5170000 KHz - 5250000 KHz @ 40000 KHz), (300 mBi, 2000 mBm) [ 12.610526] (5735000 KHz - 5835000 KHz @ 40000 KHz), (300 mBi, 2000 mBm) [ 12.790617] [drm] Initialized drm 1.1.0 20060810 [ 13.002999] Linux video capture interface: v2.00 [ 13.021080] uvcvideo: Found UVC 1.00 device Acer CrystalEye webcam (064e:a101) [ 13.023855] input: Acer CrystalEye webcam as /devices/pci0000:00/0000:00:1d.7/usb2/2-4/2-4:1.0/input/input6 [ 13.024040] usbcore: registered new interface driver uvcvideo [ 13.024102] USB Video Class driver (v0.1.0) [ 13.034101] phy0: Selected rate control algorithm 'minstrel' [ 13.035054] Registered led device: ath5k-phy0::rx [ 13.035143] Registered led device: ath5k-phy0::tx [ 13.035202] ath5k phy0: Atheros AR2425 chip found (MAC: 0xe2, PHY: 0x70) [ 13.104611] type=1400 audit(1278437864.694:2): operation="profile_load" pid=736 name="/sbin/dhclient3" pid=736 comm="apparmor_parser" [ 13.105560] type=1400 audit(1278437864.698:3): operation="profile_load" pid=736 name="/usr/lib/NetworkManager/nm-dhcp-client.action" pid=736 comm="apparmor_parser" [ 13.106123] type=1400 audit(1278437864.698:4): operation="profile_load" pid=736 name="/usr/lib/connman/scripts/dhclient-script" pid=736 comm="apparmor_parser" [ 13.272337] input: PS/2 Mouse as /devices/platform/i8042/serio1/input/input7 [ 13.306737] input: AlpsPS/2 ALPS GlidePoint as /devices/platform/i8042/serio1/input/input8 [ 13.332348] r852 0000:07:00.3: PCI INT B -> GSI 22 (level, low) -> IRQ 22 [ 13.332425] r852 0000:07:00.3: setting latency timer to 64 [ 13.332592] r852: driver loaded succesfully [ 13.475386] i915 0000:00:02.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16 [ 13.475458] i915 0000:00:02.0: setting latency timer to 64 [ 13.516576] alloc irq_desc for 45 on node -1 [ 13.516638] alloc kstat_irqs on node -1 [ 13.516705] i915 0000:00:02.0: irq 45 for MSI/MSI-X [ 13.516776] [drm] set up 7M of stolen space [ 13.623190] [drm] initialized overlay support [ 13.932053] Skipping EDID probe due to cached edid [ 14.350216] Console: switching to colour frame buffer device 160x50 [ 14.355203] fb0: inteldrmfb frame buffer device [ 14.355206] drm: registered panic notifier [ 14.355295] Slow work thread pool: Starting up [ 14.355452] Slow work thread pool: Ready [ 14.705151] acpi device:3a: registered as cooling_device2 [ 14.705588] input: Video Bus as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/LNXVIDEO:01/input/input9 [ 14.705754] ACPI: Video Device [OVGA] (multi-head: yes rom: no post: no) [ 14.705854] [drm] Initialized i915 1.6.0 20080730 for 0000:00:02.0 on minor 0 [ 14.706507] HDA Intel 0000:00:1b.0: PCI INT A -> GSI 22 (level, low) -> IRQ 22 [ 14.706661] alloc irq_desc for 46 on node -1 [ 14.706704] alloc kstat_irqs on node -1 [ 14.706756] HDA Intel 0000:00:1b.0: irq 46 for MSI/MSI-X [ 14.706853] HDA Intel 0000:00:1b.0: setting latency timer to 64 [ 14.751183] vga16fb: initializing [ 14.751228] vga16fb: mapped to 0xc00a0000 [ 14.751580] fb1: VGA16 VGA frame buffer device [ 16.312096] Skipping EDID probe due to cached edid [ 16.351381] EXT4-fs (sda2): re-mounted. Opts: errors=remount-ro [ 17.520331] EXT4-fs (sda4): mounted filesystem with ordered data mode. Opts: (null) [ 18.855408] type=1400 audit(1278437870.446:5): operation="profile_load" pid=951 name="/usr/share/gdm/guest-session/Xsession" pid=951 comm="apparmor_parser" [ 18.858107] type=1400 audit(1278437870.446:6): operation="profile_replace" pid=954 name="/sbin/dhclient3" pid=954 comm="apparmor_parser" [ 18.858988] type=1400 audit(1278437870.446:7): operation="profile_replace" pid=954 name="/usr/lib/NetworkManager/nm-dhcp-client.action" pid=954 comm="apparmor_parser" [ 18.859468] type=1400 audit(1278437870.446:8): operation="profile_replace" pid=954 name="/usr/lib/connman/scripts/dhclient-script" pid=954 comm="apparmor_parser" [ 18.910088] type=1400 audit(1278437870.502:9): operation="profile_load" pid=955 name="/usr/bin/evince" pid=955 comm="apparmor_parser" [ 18.921432] type=1400 audit(1278437870.514:10): operation="profile_load" pid=955 name="/usr/bin/evince-previewer" pid=955 comm="apparmor_parser" [ 18.928500] type=1400 audit(1278437870.518:11): operation="profile_load" pid=955 name="/usr/bin/evince-thumbnailer" pid=955 comm="apparmor_parser" [ 19.002918] type=1400 audit(1278437870.594:12): operation="profile_load" pid=963 name="/usr/lib/cups/backend/cups-pdf" pid=963 comm="apparmor_parser" [ 19.003951] type=1400 audit(1278437870.594:13): operation="profile_load" pid=963 name="/usr/sbin/cupsd" pid=963 comm="apparmor_parser" [ 19.148234] type=1400 audit(1278437870.738:14): operation="profile_load" pid=964 name="/usr/sbin/tcpdump" pid=964 comm="apparmor_parser" [ 20.468824] alloc irq_desc for 47 on node -1 [ 20.468829] alloc kstat_irqs on node -1 [ 20.468851] tg3 0000:05:00.0: irq 47 for MSI/MSI-X [ 20.636748] ADDRCONF(NETDEV_UP): eth0: link is not ready [ 20.667390] ADDRCONF(NETDEV_UP): wlan0: link is not ready Bug: 604929 [ 0.000000] Initializing cgroup subsys cpuset [ 0.000000] Initializing cgroup subsys cpu [ 0.000000] Linux version 2.6.35-7-generic (buildd@rothera) (gcc version 4.4.4 (Ubuntu 4.4.4-6ubuntu1) ) #12-Ubuntu SMP Fri Jul 9 21:09:19 UTC 2010 (Ubuntu 2.6.35-7.12-generic 2.6.35-rc4) [ 0.000000] BIOS-provided physical RAM map: [ 0.000000] BIOS-e820: 0000000000000000 - 000000000009f800 (usable) [ 0.000000] BIOS-e820: 000000000009f800 - 00000000000a0000 (reserved) [ 0.000000] BIOS-e820: 00000000000e0000 - 0000000000100000 (reserved) [ 0.000000] BIOS-e820: 0000000000100000 - 000000003f6d0000 (usable) [ 0.000000] BIOS-e820: 000000003f6d0000 - 000000003f6e2000 (ACPI data) [ 0.000000] BIOS-e820: 000000003f6e2000 - 000000003f6e3000 (ACPI NVS) [ 0.000000] BIOS-e820: 000000003f6e3000 - 0000000040000000 (reserved) [ 0.000000] BIOS-e820: 00000000e0000000 - 00000000f0000000 (reserved) [ 0.000000] BIOS-e820: 00000000fec00000 - 00000000fec10000 (reserved) [ 0.000000] BIOS-e820: 00000000fed00000 - 00000000fed00400 (reserved) [ 0.000000] BIOS-e820: 00000000fed14000 - 00000000fed1a000 (reserved) [ 0.000000] BIOS-e820: 00000000fed1c000 - 00000000fed90000 (reserved) [ 0.000000] BIOS-e820: 00000000fee00000 - 00000000fee01000 (reserved) [ 0.000000] BIOS-e820: 00000000ff000000 - 0000000100000000 (reserved) [ 0.000000] Notice: NX (Execute Disable) protection cannot be enabled: non-PAE kernel! [ 0.000000] DMI present. [ 0.000000] e820 update range: 0000000000000000 - 0000000000001000 (usable) ==> (reserved) [ 0.000000] e820 remove range: 00000000000a0000 - 0000000000100000 (usable) [ 0.000000] last_pfn = 0x3f6d0 max_arch_pfn = 0x100000 [ 0.000000] MTRR default type: uncachable [ 0.000000] MTRR fixed ranges enabled: [ 0.000000] 00000-9FFFF write-back [ 0.000000] A0000-BFFFF uncachable [ 0.000000] C0000-CFFFF write-protect [ 0.000000] D0000-DFFFF uncachable [ 0.000000] E0000-FFFFF write-protect [ 0.000000] MTRR variable ranges enabled: [ 0.000000] 0 base 000000000 mask 0C0000000 write-back [ 0.000000] 1 base 03F700000 mask 0FFF00000 uncachable [ 0.000000] 2 base 03F800000 mask 0FF800000 uncachable [ 0.000000] 3 disabled [ 0.000000] 4 disabled [ 0.000000] 5 disabled [ 0.000000] 6 disabled [ 0.000000] 7 disabled [ 0.000000] x86 PAT enabled: cpu 0, old 0x7040600070406, new 0x7010600070106 [ 0.000000] e820 update range: 0000000000002000 - 0000000000010000 (usable) ==> (reserved) [ 0.000000] Scanning 1 areas for low memory corruption [ 0.000000] modified physical RAM map: [ 0.000000] modified: 0000000000000000 - 0000000000001000 (reserved) [ 0.000000] modified: 0000000000001000 - 0000000000002000 (usable) [ 0.000000] modified: 0000000000002000 - 0000000000010000 (reserved) [ 0.000000] modified: 0000000000010000 - 000000000009f800 (usable) [ 0.000000] modified: 000000000009f800 - 00000000000a0000 (reserved) [ 0.000000] modified: 00000000000e0000 - 0000000000100000 (reserved) [ 0.000000] modified: 0000000000100000 - 000000003f6d0000 (usable) [ 0.000000] modified: 000000003f6d0000 - 000000003f6e2000 (ACPI data) [ 0.000000] modified: 000000003f6e2000 - 000000003f6e3000 (ACPI NVS) [ 0.000000] modified: 000000003f6e3000 - 0000000040000000 (reserved) [ 0.000000] modified: 00000000e0000000 - 00000000f0000000 (reserved) [ 0.000000] modified: 00000000fec00000 - 00000000fec10000 (reserved) [ 0.000000] modified: 00000000fed00000 - 00000000fed00400 (reserved) [ 0.000000] modified: 00000000fed14000 - 00000000fed1a000 (reserved) [ 0.000000] modified: 00000000fed1c000 - 00000000fed90000 (reserved) [ 0.000000] modified: 00000000fee00000 - 00000000fee01000 (reserved) [ 0.000000] modified: 00000000ff000000 - 0000000100000000 (reserved) [ 0.000000] initial memory mapped : 0 - 00c00000 [ 0.000000] found SMP MP-table at [c00f7d60] f7d60 [ 0.000000] init_memory_mapping: 0000000000000000-00000000377fe000 [ 0.000000] 0000000000 - 0000400000 page 4k [ 0.000000] 0000400000 - 0037400000 page 2M [ 0.000000] 0037400000 - 00377fe000 page 4k [ 0.000000] kernel direct mapping tables up to 377fe000 @ 15000-1a000 [ 0.000000] RAMDISK: 2ef2f000 - 2f95c000 [ 0.000000] ACPI: RSDP 000f7d30 00024 (v02 PTLTD ) [ 0.000000] ACPI: XSDT 3f6db28f 00084 (v01 DELL CL09 06040000 LTP 00000000) [ 0.000000] ACPI: FACP 3f6e1bd2 000F4 (v03 INTEL CALISTGA 06040000 ALAN 00000001) [ 0.000000] ACPI: DSDT 3f6dce77 04CE7 (v01 INTEL CALISTGA 06040000 INTL 20050624) [ 0.000000] ACPI: FACS 3f6e2fc0 00040 [ 0.000000] ACPI: APIC 3f6e1cc6 00068 (v01 INTEL CALISTGA 06040000 LOHR 0000005A) [ 0.000000] ACPI: HPET 3f6e1d2e 00038 (v01 INTEL CALISTGA 06040000 LOHR 0000005A) [ 0.000000] ACPI: MCFG 3f6e1d66 0003C (v01 INTEL CALISTGA 06040000 LOHR 0000005A) [ 0.000000] ACPI: TCPA 3f6e1da2 00032 (v01 PTLTD CALISTGA 06040000 PTL 00000001) [ 0.000000] ACPI: TMOR 3f6e1dd4 00026 (v01 PTLTD 06040000 PTL 00000003) [ 0.000000] ACPI: APIC 3f6e1dfa 00068 (v01 PTLTD ? APIC 06040000 LTP 00000000) [ 0.000000] ACPI: BOOT 3f6e1e62 00028 (v01 PTLTD $SBFTBL$ 06040000 LTP 00000001) [ 0.000000] ACPI: SLIC 3f6e1e8a 00176 (v01 DELL CL09 06040000 LTP 00000000) [ 0.000000] ACPI: SSDT 3f6dc828 0064F (v01 SataRe SataPri 00001000 INTL 20050624) [ 0.000000] ACPI: SSDT 3f6dc18c 0069C (v01 SataRe SataSec 00001000 INTL 20050624) [ 0.000000] ACPI: SSDT 3f6db313 004F6 (v02 PmRef CpuPm 00003000 INTL 20050624) [ 0.000000] ACPI: BIOS bug: multiple APIC/MADT found, using 0 [ 0.000000] ACPI: If "acpi_apic_instance=2" works better, notify linux-acpi@vger.kernel.org [ 0.000000] ACPI: Local APIC address 0xfee00000 [ 0.000000] 126MB HIGHMEM available. [ 0.000000] 887MB LOWMEM available. [ 0.000000] mapped low ram: 0 - 377fe000 [ 0.000000] low ram: 0 - 377fe000 [ 0.000000] Zone PFN ranges: [ 0.000000] DMA 0x00000001 -> 0x00001000 [ 0.000000] Normal 0x00001000 -> 0x000377fe [ 0.000000] HighMem 0x000377fe -> 0x0003f6d0 [ 0.000000] Movable zone start PFN for each node [ 0.000000] early_node_map[3] active PFN ranges [ 0.000000] 0: 0x00000001 -> 0x00000002 [ 0.000000] 0: 0x00000010 -> 0x0000009f [ 0.000000] 0: 0x00000100 -> 0x0003f6d0 [ 0.000000] On node 0 totalpages: 259680 [ 0.000000] free_area_init_node: node 0, pgdat c0813880, node_mem_map c1001020 [ 0.000000] DMA zone: 32 pages used for memmap [ 0.000000] DMA zone: 0 pages reserved [ 0.000000] DMA zone: 3952 pages, LIFO batch:0 [ 0.000000] Normal zone: 1744 pages used for memmap [ 0.000000] Normal zone: 221486 pages, LIFO batch:31 [ 0.000000] HighMem zone: 254 pages used for memmap [ 0.000000] HighMem zone: 32212 pages, LIFO batch:7 [ 0.000000] Using APIC driver default [ 0.000000] ACPI: PM-Timer IO Port: 0x1008 [ 0.000000] ACPI: Local APIC address 0xfee00000 [ 0.000000] ACPI: LAPIC (acpi_id[0x00] lapic_id[0x00] enabled) [ 0.000000] ACPI: LAPIC (acpi_id[0x01] lapic_id[0x01] enabled) [ 0.000000] ACPI: LAPIC_NMI (acpi_id[0x00] high edge lint[0x1]) [ 0.000000] ACPI: LAPIC_NMI (acpi_id[0x01] high edge lint[0x1]) [ 0.000000] ACPI: IOAPIC (id[0x01] address[0xfec00000] gsi_base[0]) [ 0.000000] IOAPIC[0]: apic_id 1, version 32, address 0xfec00000, GSI 0-23 [ 0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 0 global_irq 2 dfl dfl) [ 0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 9 global_irq 9 high level) [ 0.000000] ACPI: IRQ0 used by override. [ 0.000000] ACPI: IRQ2 used by override. [ 0.000000] ACPI: IRQ9 used by override. [ 0.000000] Using ACPI (MADT) for SMP configuration information [ 0.000000] ACPI: HPET id: 0x8086a201 base: 0xfed00000 [ 0.000000] SMP: Allowing 2 CPUs, 0 hotplug CPUs [ 0.000000] nr_irqs_gsi: 40 [ 0.000000] early_res array is doubled to 64 at [16000 - 167ff] [ 0.000000] PM: Registered nosave memory: 0000000000002000 - 0000000000010000 [ 0.000000] PM: Registered nosave memory: 000000000009f000 - 00000000000a0000 [ 0.000000] PM: Registered nosave memory: 00000000000a0000 - 00000000000e0000 [ 0.000000] PM: Registered nosave memory: 00000000000e0000 - 0000000000100000 [ 0.000000] Allocating PCI resources starting at 40000000 (gap: 40000000:a0000000) [ 0.000000] Booting paravirtualized kernel on bare hardware [ 0.000000] setup_percpu: NR_CPUS:8 nr_cpumask_bits:8 nr_cpu_ids:2 nr_node_ids:1 [ 0.000000] PERCPU: Embedded 14 pages/cpu @c1800000 s36352 r0 d20992 u2097152 [ 0.000000] pcpu-alloc: s36352 r0 d20992 u2097152 alloc=1*4194304 [ 0.000000] pcpu-alloc: [0] 0 1 [ 0.000000] Built 1 zonelists in Zone order, mobility grouping on. Total pages: 257650 [ 0.000000] Kernel command line: BOOT_IMAGE=/boot/vmlinuz-2.6.35-7-generic root=UUID=10dbafb4-5a21-4665-88d4-2924132ca353 ro quiet splash [ 0.000000] PID hash table entries: 4096 (order: 2, 16384 bytes) [ 0.000000] Dentry cache hash table entries: 131072 (order: 7, 524288 bytes) [ 0.000000] Inode-cache hash table entries: 65536 (order: 6, 262144 bytes) [ 0.000000] Enabling fast FPU save and restore... done. [ 0.000000] Enabling unmasked SIMD FPU exception support... done. [ 0.000000] Initializing CPU#0 [ 0.000000] allocated 5195820 bytes of page_cgroup [ 0.000000] please try 'cgroup_disable=memory' option if you don't want memory cgroups [ 0.000000] Subtract (54 early reservations) [ 0.000000] #1 [0000001000 - 0000002000] EX TRAMPOLINE [ 0.000000] #2 [0000100000 - 00009b491c] TEXT DATA BSS [ 0.000000] #3 [002ef2f000 - 002f95c000] RAMDISK [ 0.000000] #4 [00009b5000 - 00009b8124] BRK [ 0.000000] #5 [00000f7d70 - 0000100000] BIOS reserved [ 0.000000] #6 [00000f7d60 - 00000f7d70] MP-table mpf [ 0.000000] #7 [000009f800 - 000009fc71] BIOS reserved [ 0.000000] #8 [000009fdb1 - 00000f7d60] BIOS reserved [ 0.000000] #9 [000009fc71 - 000009fdb1] MP-table mpc [ 0.000000] #10 [0000010000 - 0000011000] TRAMPOLINE [ 0.000000] #11 [0000011000 - 0000015000] ACPI WAKEUP [ 0.000000] #12 [0000015000 - 0000016000] PGTABLE [ 0.000000] #13 [0001000000 - 0001001000] BOOTMEM [ 0.000000] #14 [0001001000 - 00017f1000] BOOTMEM [ 0.000000] #15 [00017f1000 - 00017f1004] BOOTMEM [ 0.000000] #16 [00017f1040 - 00017f1100] BOOTMEM [ 0.000000] #17 [00017f1100 - 00017f1154] BOOTMEM [ 0.000000] #18 [00017f1180 - 00017f4180] BOOTMEM [ 0.000000] #19 [00017f4180 - 00017f418c] BOOTMEM [ 0.000000] #20 [00017f41c0 - 00017f47c0] BOOTMEM [ 0.000000] #21 [00017f47c0 - 00017f47e5] BOOTMEM [ 0.000000] #22 [00017f4800 - 00017f4827] BOOTMEM [ 0.000000] #23 [00017f4840 - 00017f4a1c] BOOTMEM [ 0.000000] #24 [00017f4a40 - 00017f4a80] BOOTMEM [ 0.000000] #25 [00017f4a80 - 00017f4ac0] BOOTMEM [ 0.000000] #26 [00017f4ac0 - 00017f4b00] BOOTMEM [ 0.000000] #27 [00017f4b00 - 00017f4b40] BOOTMEM [ 0.000000] #28 [00017f4b40 - 00017f4b80] BOOTMEM [ 0.000000] #29 [00017f4b80 - 00017f4bc0] BOOTMEM [ 0.000000] #30 [00017f4bc0 - 00017f4c00] BOOTMEM [ 0.000000] #31 [00017f4c00 - 00017f4c40] BOOTMEM [ 0.000000] #32 [00017f4c40 - 00017f4c80] BOOTMEM [ 0.000000] #33 [00017f4c80 - 00017f4cc0] BOOTMEM [ 0.000000] #34 [00017f4cc0 - 00017f4d00] BOOTMEM [ 0.000000] #35 [00017f4d00 - 00017f4d40] BOOTMEM [ 0.000000] #36 [00017f4d40 - 00017f4d80] BOOTMEM [ 0.000000] #37 [00017f4d80 - 00017f4dc0] BOOTMEM [ 0.000000] #38 [00017f4dc0 - 00017f4dd0] BOOTMEM [ 0.000000] #39 [00017f4e00 - 00017f4e10] BOOTMEM [ 0.000000] #40 [00017f4e40 - 00017f4ea9] BOOTMEM [ 0.000000] #41 [00017f4ec0 - 00017f4f29] BOOTMEM [ 0.000000] #42 [0001800000 - 000180e000] BOOTMEM [ 0.000000] #43 [0001a00000 - 0001a0e000] BOOTMEM [ 0.000000] #44 [00017f6f40 - 00017f6f44] BOOTMEM [ 0.000000] #45 [00017f6f80 - 00017f6f84] BOOTMEM [ 0.000000] #46 [00017f6fc0 - 00017f6fc8] BOOTMEM [ 0.000000] #47 [00017f7000 - 00017f7008] BOOTMEM [ 0.000000] #48 [00017f7040 - 00017f70e8] BOOTMEM [ 0.000000] #49 [00017f7100 - 00017f7168] BOOTMEM [ 0.000000] #50 [00017f7180 - 00017fb180] BOOTMEM [ 0.000000] #51 [000180e000 - 000188e000] BOOTMEM [ 0.000000] #52 [000188e000 - 00018ce000] BOOTMEM [ 0.000000] #53 [0001a0e000 - 0001f0282c] BOOTMEM [ 0.000000] Initializing HighMem for node 0 (000377fe:0003f6d0) [ 0.000000] Memory: 1005212k/1039168k available (4942k kernel code, 33508k reserved, 2401k data, 684k init, 129864k highmem) [ 0.000000] virtual kernel memory layout: [ 0.000000] fixmap : 0xfff15000 - 0xfffff000 ( 936 kB) [ 0.000000] pkmap : 0xff800000 - 0xffc00000 (4096 kB) [ 0.000000] vmalloc : 0xf7ffe000 - 0xff7fe000 ( 120 MB) [ 0.000000] lowmem : 0xc0000000 - 0xf77fe000 ( 887 MB) [ 0.000000] .init : 0xc082d000 - 0xc08d8000 ( 684 kB) [ 0.000000] .data : 0xc05d3b52 - 0xc082c168 (2401 kB) [ 0.000000] .text : 0xc0100000 - 0xc05d3b52 (4942 kB) [ 0.000000] Checking if this processor honours the WP bit even in supervisor mode...Ok. [ 0.000000] SLUB: Genslabs=13, HWalign=64, Order=0-3, MinObjects=0, CPUs=2, Nodes=1 [ 0.000000] Hierarchical RCU implementation. [ 0.000000] RCU dyntick-idle grace-period acceleration is enabled. [ 0.000000] RCU-based detection of stalled CPUs is disabled. [ 0.000000] Verbose stalled-CPUs detection is disabled. [ 0.000000] NR_IRQS:2304 nr_irqs:512 [ 0.000000] Extended CMOS year: 2000 [ 0.000000] Console: colour dummy device 80x25 [ 0.000000] console [tty0] enabled [ 0.000000] hpet clockevent registered [ 0.000000] Fast TSC calibration using PIT [ 0.000000] Detected 1595.998 MHz processor. [ 0.004009] Calibrating delay loop (skipped), value calculated using timer frequency.. 3191.99 BogoMIPS (lpj=6383992) [ 0.004021] pid_max: default: 32768 minimum: 301 [ 0.004064] Security Framework initialized [ 0.004102] AppArmor: AppArmor initialized [ 0.004107] Yama: becoming mindful. [ 0.004229] Mount-cache hash table entries: 512 [ 0.008228] Initializing cgroup subsys ns [ 0.008238] Initializing cgroup subsys cpuacct [ 0.008249] Initializing cgroup subsys memory [ 0.008268] Initializing cgroup subsys devices [ 0.008274] Initializing cgroup subsys freezer [ 0.008280] Initializing cgroup subsys net_cls [ 0.008331] CPU: Physical Processor ID: 0 [ 0.008336] CPU: Processor Core ID: 0 [ 0.008342] mce: CPU supports 5 MCE banks [ 0.008356] CPU0: Thermal monitoring enabled (TM1) [ 0.008364] using mwait in idle threads. [ 0.008377] Performance Events: PEBS fmt0+, Atom events, Intel PMU driver. [ 0.008397] ... version: 3 [ 0.008401] ... bit width: 40 [ 0.008406] ... generic registers: 2 [ 0.008411] ... value mask: 000000ffffffffff [ 0.008417] ... max period: 000000007fffffff [ 0.008422] ... fixed-purpose events: 3 [ 0.008426] ... event mask: 0000000700000003 [ 0.013127] ACPI: Core revision 20100428 [ 0.028019] ftrace: converting mcount calls to 0f 1f 44 00 00 [ 0.028031] ftrace: allocating 21734 entries in 43 pages [ 0.032105] Enabling APIC mode: Flat. Using 1 I/O APICs [ 0.032522] ..TIMER: vector=0x30 apic1=0 pin1=2 apic2=-1 pin2=-1 [ 0.074525] CPU0: Intel(R) Atom(TM) CPU N270 @ 1.60GHz stepping 02 [ 0.076000] Booting Node 0, Processors #1 Ok. [ 0.008000] Initializing CPU#1 [ 0.164030] Brought up 2 CPUs [ 0.164040] Total of 2 processors activated (6383.91 BogoMIPS). [ 0.164408] devtmpfs: initialized [ 0.166506] regulator: core version 0.5 [ 0.166555] Time: 8:33:30 Date: 07/13/10 [ 0.166650] NET: Registered protocol family 16 [ 0.168147] Trying to unpack rootfs image as initramfs... [ 0.168405] EISA bus registered [ 0.168431] ACPI: bus type pci registered [ 0.168641] PCI: MMCONFIG for domain 0000 [bus 00-ff] at [mem 0xe0000000-0xefffffff] (base 0xe0000000) [ 0.168653] PCI: MMCONFIG at [mem 0xe0000000-0xefffffff] reserved in E820 [ 0.168660] PCI: Using MMCONFIG for extended config space [ 0.168666] PCI: Using configuration type 1 for base access [ 0.172798] bio: create slab at 0 [ 0.176903] ACPI: EC: Look up EC in DSDT [ 0.184239] ACPI: BIOS _OSI(Linux) query ignored [ 0.187377] ACPI: SSDT 3f6dbe73 00245 (v02 PmRef Cpu0Ist 00003000 INTL 20050624) [ 0.188548] ACPI: Dynamic OEM Table Load: [ 0.188561] ACPI: SSDT (null) 00245 (v02 PmRef Cpu0Ist 00003000 INTL 20050624) [ 0.189315] ACPI: SSDT 3f6db809 005E5 (v02 PmRef Cpu0Cst 00003001 INTL 20050624) [ 0.190399] ACPI: Dynamic OEM Table Load: [ 0.190411] ACPI: SSDT (null) 005E5 (v02 PmRef Cpu0Cst 00003001 INTL 20050624) [ 0.191587] ACPI: SSDT 3f6dc0b8 000D4 (v02 PmRef Cpu1Ist 00003000 INTL 20050624) [ 0.192717] ACPI: Dynamic OEM Table Load: [ 0.192729] ACPI: SSDT (null) 000D4 (v02 PmRef Cpu1Ist 00003000 INTL 20050624) [ 0.193150] ACPI: SSDT 3f6dbdee 00085 (v02 PmRef Cpu1Cst 00003000 INTL 20050624) [ 0.194241] ACPI: Dynamic OEM Table Load: [ 0.194252] ACPI: SSDT (null) 00085 (v02 PmRef Cpu1Cst 00003000 INTL 20050624) [ 0.198598] ACPI: Interpreter enabled [ 0.198598] ACPI: (supports S0 S3 S4 S5) [ 0.198598] ACPI: Using IOAPIC for interrupt routing [ 0.255028] ACPI: EC: GPE = 0x19, I/O: command/status = 0x66, data = 0x62 [ 0.255961] ACPI: No dock devices found. [ 0.255974] PCI: Using host bridge windows from ACPI; if necessary, use "pci=nocrs" and report a bug [ 0.257437] ACPI: PCI Root Bridge [PCI0] (domain 0000 [bus 00-ff]) [ 0.260199] pci_root PNP0A08:00: host bridge window [io 0x0000-0x0cf7] [ 0.260212] pci_root PNP0A08:00: host bridge window [io 0x0d00-0xffff] [ 0.260222] pci_root PNP0A08:00: host bridge window [mem 0x000a0000-0x000bffff] [ 0.260233] pci_root PNP0A08:00: host bridge window [mem 0x000d0000-0x000d3fff] [ 0.260242] pci_root PNP0A08:00: host bridge window [mem 0x000d4000-0x000d7fff] [ 0.260252] pci_root PNP0A08:00: host bridge window [mem 0x000d8000-0x000dbfff] [ 0.260261] pci_root PNP0A08:00: host bridge window [mem 0x000dc000-0x000dffff] [ 0.260272] pci_root PNP0A08:00: host bridge window [mem 0x40000000-0xfebfffff] [ 0.260391] pci 0000:00:02.0: reg 10: [mem 0xf0000000-0xf007ffff] [ 0.260404] pci 0000:00:02.0: reg 14: [io 0x1800-0x1807] [ 0.260416] pci 0000:00:02.0: reg 18: [mem 0xd0000000-0xdfffffff pref] [ 0.260429] pci 0000:00:02.0: reg 1c: [mem 0xf0200000-0xf023ffff] [ 0.260498] pci 0000:00:02.1: reg 10: [mem 0xf0080000-0xf00fffff] [ 0.260664] pci 0000:00:1b.0: reg 10: [mem 0xf0440000-0xf0443fff 64bit] [ 0.260761] pci 0000:00:1b.0: PME# supported from D0 D3hot D3cold [ 0.260775] pci 0000:00:1b.0: PME# disabled [ 0.260926] pci 0000:00:1c.0: PME# supported from D0 D3hot D3cold [ 0.260938] pci 0000:00:1c.0: PME# disabled [ 0.261085] pci 0000:00:1c.1: PME# supported from D0 D3hot D3cold [ 0.261097] pci 0000:00:1c.1: PME# disabled [ 0.261243] pci 0000:00:1c.2: PME# supported from D0 D3hot D3cold [ 0.261254] pci 0000:00:1c.2: PME# disabled [ 0.261356] pci 0000:00:1d.0: reg 20: [io 0x1820-0x183f] [ 0.261456] pci 0000:00:1d.1: reg 20: [io 0x1840-0x185f] [ 0.261555] pci 0000:00:1d.2: reg 20: [io 0x1860-0x187f] [ 0.261660] pci 0000:00:1d.3: reg 20: [io 0x1880-0x189f] [ 0.261759] pci 0000:00:1d.7: reg 10: [mem 0xf0444000-0xf04443ff] [ 0.261850] pci 0000:00:1d.7: PME# supported from D0 D3hot D3cold [ 0.261861] pci 0000:00:1d.7: PME# disabled [ 0.262089] pci 0000:00:1f.0: quirk: [io 0x1000-0x107f] claimed by ICH6 ACPI/GPIO/TCO [ 0.262102] pci 0000:00:1f.0: quirk: [io 0x1180-0x11bf] claimed by ICH6 GPIO [ 0.262113] pci 0000:00:1f.0: ICH7 LPC Generic IO decode 1 PIO at 0680 (mask 007f) [ 0.262124] pci 0000:00:1f.0: ICH7 LPC Generic IO decode 2 PIO at ff2c (mask 007f) [ 0.262138] pci 0000:00:1f.0: ICH7 LPC Generic IO decode 4 PIO at 0068 (mask 0007) [ 0.262227] pci 0000:00:1f.2: reg 10: [io 0x0000-0x0007] [ 0.262242] pci 0000:00:1f.2: reg 14: [io 0x0000-0x0003] [ 0.262257] pci 0000:00:1f.2: reg 18: [io 0x0000-0x0007] [ 0.262273] pci 0000:00:1f.2: reg 1c: [io 0x0000-0x0003] [ 0.262288] pci 0000:00:1f.2: reg 20: [io 0x1810-0x181f] [ 0.262303] pci 0000:00:1f.2: reg 24: [mem 0x00000000-0x000003ff] [ 0.262349] pci 0000:00:1f.2: PME# supported from D3hot [ 0.262360] pci 0000:00:1f.2: PME# disabled [ 0.262440] pci 0000:00:1f.3: reg 20: [io 0x18c0-0x18df] [ 0.262581] pci 0000:00:1c.0: PCI bridge to [bus 02-02] [ 0.262594] pci 0000:00:1c.0: bridge window [io 0xf000-0x0000] (disabled) [ 0.262607] pci 0000:00:1c.0: bridge window [mem 0xfff00000-0x000fffff] (disabled) [ 0.262623] pci 0000:00:1c.0: bridge window [mem 0xfff00000-0x000fffff pref] (disabled) [ 0.263034] pci 0000:03:00.0: reg 10: [mem 0xf0100000-0xf0103fff 64bit] [ 0.263278] pci 0000:03:00.0: supports D1 D2 [ 0.263287] pci 0000:03:00.0: PME# supported from D0 D3hot D3cold [ 0.263306] pci 0000:03:00.0: PME# disabled [ 0.263514] pci 0000:00:1c.1: PCI bridge to [bus 03-03] [ 0.263526] pci 0000:00:1c.1: bridge window [io 0xf000-0x0000] (disabled) [ 0.263540] pci 0000:00:1c.1: bridge window [mem 0xf0100000-0xf01fffff] [ 0.263556] pci 0000:00:1c.1: bridge window [mem 0xfff00000-0x000fffff pref] (disabled) [ 0.263774] pci 0000:04:00.0: reg 10: [io 0x2000-0x20ff] [ 0.263871] pci 0000:04:00.0: reg 18: [mem 0xf0510000-0xf0510fff 64bit pref] [ 0.263946] pci 0000:04:00.0: reg 20: [mem 0xf0500000-0xf050ffff 64bit pref] [ 0.264010] pci 0000:04:00.0: reg 30: [mem 0x00000000-0x0001ffff pref] [ 0.264193] pci 0000:04:00.0: supports D1 D2 [ 0.264201] pci 0000:04:00.0: PME# supported from D0 D1 D2 D3hot D3cold [ 0.264234] pci 0000:04:00.0: PME# disabled [ 0.264439] pci 0000:00:1c.2: PCI bridge to [bus 04-04] [ 0.264452] pci 0000:00:1c.2: bridge window [io 0x2000-0x2fff] [ 0.264464] pci 0000:00:1c.2: bridge window [mem 0xfff00000-0x000fffff] (disabled) [ 0.264481] pci 0000:00:1c.2: bridge window [mem 0xf0500000-0xf05fffff 64bit pref] [ 0.264601] pci 0000:00:1e.0: PCI bridge to [bus 05-05] (subtractive decode) [ 0.264613] pci 0000:00:1e.0: bridge window [io 0xf000-0x0000] (disabled) [ 0.264626] pci 0000:00:1e.0: bridge window [mem 0xfff00000-0x000fffff] (disabled) [ 0.264642] pci 0000:00:1e.0: bridge window [mem 0xfff00000-0x000fffff pref] (disabled) [ 0.264652] pci 0000:00:1e.0: bridge window [io 0x0000-0x0cf7] (subtractive decode) [ 0.264661] pci 0000:00:1e.0: bridge window [io 0x0d00-0xffff] (subtractive decode) [ 0.264671] pci 0000:00:1e.0: bridge window [mem 0x000a0000-0x000bffff] (subtractive decode) [ 0.264681] pci 0000:00:1e.0: bridge window [mem 0x000d0000-0x000d3fff] (subtractive decode) [ 0.264690] pci 0000:00:1e.0: bridge window [mem 0x000d4000-0x000d7fff] (subtractive decode) [ 0.264700] pci 0000:00:1e.0: bridge window [mem 0x000d8000-0x000dbfff] (subtractive decode) [ 0.264711] pci 0000:00:1e.0: bridge window [mem 0x000dc000-0x000dffff] (subtractive decode) [ 0.264722] pci 0000:00:1e.0: bridge window [mem 0x40000000-0xfebfffff] (subtractive decode) [ 0.264769] pci_bus 0000:00: on NUMA node 0 [ 0.264793] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0._PRT] [ 0.265413] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.RP01._PRT] [ 0.265743] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.RP02._PRT] [ 0.265989] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.RP03._PRT] [ 0.266339] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PCIB._PRT] [ 0.289255] ACPI: PCI Interrupt Link [LNKA] (IRQs 1 3 4 5 6 *7 10 12 14 15) [ 0.289577] ACPI: PCI Interrupt Link [LNKB] (IRQs 1 3 4 5 6 7 *11 12 14 15) [ 0.289865] ACPI: PCI Interrupt Link [LNKC] (IRQs 1 3 4 5 6 7 10 12 14 15) *11 [ 0.290147] ACPI: PCI Interrupt Link [LNKD] (IRQs 1 3 4 5 6 7 11 12 14 15) *10 [ 0.290443] ACPI: PCI Interrupt Link [LNKE] (IRQs 1 3 4 5 6 7 10 12 14 15) *0, disabled. [ 0.290739] ACPI: PCI Interrupt Link [LNKF] (IRQs 1 3 4 5 6 7 11 12 14 15) *0, disabled. [ 0.291024] ACPI: PCI Interrupt Link [LNKG] (IRQs 1 3 4 5 6 7 *10 12 14 15) [ 0.291332] ACPI: PCI Interrupt Link [LNKH] (IRQs 1 3 4 *5 6 7 11 12 14 15) [ 0.291486] HEST: Table is not found! [ 0.291734] vgaarb: device added: PCI:0000:00:02.0,decodes=io+mem,owns=io+mem,locks=none [ 0.291767] vgaarb: loaded [ 0.292417] SCSI subsystem initialized [ 0.292644] libata version 3.00 loaded. [ 0.292859] usbcore: registered new interface driver usbfs [ 0.292922] usbcore: registered new interface driver hub [ 0.293017] usbcore: registered new device driver usb [ 0.293545] ACPI: WMI: Mapper loaded [ 0.293552] PCI: Using ACPI for IRQ routing [ 0.293562] PCI: pci_cache_line_size set to 64 bytes [ 0.294112] reserve RAM buffer: 0000000000002000 - 000000000000ffff [ 0.294122] reserve RAM buffer: 000000000009f800 - 000000000009ffff [ 0.294131] reserve RAM buffer: 000000003f6d0000 - 000000003fffffff [ 0.294453] NetLabel: Initializing [ 0.294461] NetLabel: domain hash size = 128 [ 0.294466] NetLabel: protocols = UNLABELED CIPSOv4 [ 0.294504] NetLabel: unlabeled traffic allowed by default [ 0.294621] HPET: 3 timers in total, 0 timers will be used for per-cpu timer [ 0.294637] hpet0: at MMIO 0xfed00000, IRQs 2, 8, 0 [ 0.294652] hpet0: 3 comparators, 64-bit 14.318180 MHz counter [ 0.304101] Switching to clocksource tsc [ 0.333775] AppArmor: AppArmor Filesystem Enabled [ 0.333822] pnp: PnP ACPI init [ 0.333870] ACPI: bus type pnp registered [ 0.355784] pnp: PnP ACPI: found 11 devices [ 0.355793] ACPI: ACPI bus type pnp unregistered [ 0.355804] PnPBIOS: Disabled by ACPI PNP [ 0.355843] system 00:01: [mem 0xe0000000-0xefffffff] has been reserved [ 0.355854] system 00:01: [mem 0xfed14000-0xfed17fff] has been reserved [ 0.355864] system 00:01: [mem 0xfed18000-0xfed18fff] has been reserved [ 0.355873] system 00:01: [mem 0xfed19000-0xfed19fff] has been reserved [ 0.355884] system 00:01: [mem 0xfed1c000-0xfed1ffff] has been reserved [ 0.355894] system 00:01: [mem 0xfed20000-0xfed3ffff] has been reserved [ 0.355904] system 00:01: [mem 0xfed40000-0xfed44fff] has been reserved [ 0.355914] system 00:01: [mem 0xfed45000-0xfed8ffff] has been reserved [ 0.355939] system 00:04: [mem 0xfed00000-0xfed003ff] has been reserved [ 0.355965] system 00:06: [io 0x0680-0x069f] has been reserved [ 0.355978] system 00:06: [io 0x0800-0x080f] has been reserved [ 0.355989] system 00:06: [io 0x1000-0x107f] has been reserved [ 0.356000] system 00:06: [io 0x1180-0x11bf] has been reserved [ 0.356009] system 00:06: [io 0x1640-0x164f] has been reserved [ 0.356020] system 00:06: [io 0xfe00-0xfe7f] has been reserved [ 0.356037] system 00:06: [io 0xff00-0xff7f] has been reserved [ 0.356058] system 00:07: [io 0x06a0-0x06af] has been reserved [ 0.356068] system 00:07: [io 0x06b0-0x06ff] has been reserved [ 0.391359] pci 0000:00:1c.0: BAR 14: assigned [mem 0x40000000-0x401fffff] [ 0.391377] pci 0000:00:1c.0: BAR 15: assigned [mem 0x40200000-0x403fffff 64bit pref] [ 0.391393] pci 0000:00:1c.1: BAR 15: assigned [mem 0x40400000-0x405fffff 64bit pref] [ 0.391405] pci 0000:00:1c.2: BAR 14: assigned [mem 0x40600000-0x409fffff] [ 0.391419] pci 0000:00:1c.0: BAR 13: assigned [io 0x3000-0x3fff] [ 0.391431] pci 0000:00:1c.1: BAR 13: assigned [io 0x4000-0x4fff] [ 0.391442] pci 0000:00:1f.2: BAR 5: assigned [mem 0x40a00000-0x40a003ff] [ 0.391458] pci 0000:00:1f.2: BAR 5: set to [mem 0x40a00000-0x40a003ff] (PCI address [0x40a00000-0x40a003ff] [ 0.391469] pci 0000:00:1c.0: PCI bridge to [bus 02-02] [ 0.391479] pci 0000:00:1c.0: bridge window [io 0x3000-0x3fff] [ 0.391493] pci 0000:00:1c.0: bridge window [mem 0x40000000-0x401fffff] [ 0.391506] pci 0000:00:1c.0: bridge window [mem 0x40200000-0x403fffff 64bit pref] [ 0.391522] pci 0000:00:1c.1: PCI bridge to [bus 03-03] [ 0.391532] pci 0000:00:1c.1: bridge window [io 0x4000-0x4fff] [ 0.391545] pci 0000:00:1c.1: bridge window [mem 0xf0100000-0xf01fffff] [ 0.391558] pci 0000:00:1c.1: bridge window [mem 0x40400000-0x405fffff 64bit pref] [ 0.391577] pci 0000:04:00.0: BAR 6: assigned [mem 0xf0520000-0xf053ffff pref] [ 0.391586] pci 0000:00:1c.2: PCI bridge to [bus 04-04] [ 0.391596] pci 0000:00:1c.2: bridge window [io 0x2000-0x2fff] [ 0.391609] pci 0000:00:1c.2: bridge window [mem 0x40600000-0x409fffff] [ 0.391622] pci 0000:00:1c.2: bridge window [mem 0xf0500000-0xf05fffff 64bit pref] [ 0.391638] pci 0000:00:1e.0: PCI bridge to [bus 05-05] [ 0.391644] pci 0000:00:1e.0: bridge window [io disabled] [ 0.391656] pci 0000:00:1e.0: bridge window [mem disabled] [ 0.391666] pci 0000:00:1e.0: bridge window [mem pref disabled] [ 0.391707] alloc irq_desc for 17 on node -1 [ 0.391714] alloc kstat_irqs on node -1 [ 0.391732] pci 0000:00:1c.0: PCI INT A -> GSI 17 (level, low) -> IRQ 17 [ 0.391745] pci 0000:00:1c.0: setting latency timer to 64 [ 0.391767] alloc irq_desc for 16 on node -1 [ 0.391774] alloc kstat_irqs on node -1 [ 0.391786] pci 0000:00:1c.1: PCI INT B -> GSI 16 (level, low) -> IRQ 16 [ 0.391798] pci 0000:00:1c.1: setting latency timer to 64 [ 0.391819] alloc irq_desc for 18 on node -1 [ 0.391826] alloc kstat_irqs on node -1 [ 0.391837] pci 0000:00:1c.2: PCI INT C -> GSI 18 (level, low) -> IRQ 18 [ 0.391849] pci 0000:00:1c.2: setting latency timer to 64 [ 0.391867] pci 0000:00:1e.0: setting latency timer to 64 [ 0.391879] pci_bus 0000:00: resource 4 [io 0x0000-0x0cf7] [ 0.391887] pci_bus 0000:00: resource 5 [io 0x0d00-0xffff] [ 0.391896] pci_bus 0000:00: resource 6 [mem 0x000a0000-0x000bffff] [ 0.391905] pci_bus 0000:00: resource 7 [mem 0x000d0000-0x000d3fff] [ 0.391913] pci_bus 0000:00: resource 8 [mem 0x000d4000-0x000d7fff] [ 0.391922] pci_bus 0000:00: resource 9 [mem 0x000d8000-0x000dbfff] [ 0.391931] pci_bus 0000:00: resource 10 [mem 0x000dc000-0x000dffff] [ 0.391940] pci_bus 0000:00: resource 11 [mem 0x40000000-0xfebfffff] [ 0.391949] pci_bus 0000:02: resource 0 [io 0x3000-0x3fff] [ 0.391957] pci_bus 0000:02: resource 1 [mem 0x40000000-0x401fffff] [ 0.391966] pci_bus 0000:02: resource 2 [mem 0x40200000-0x403fffff 64bit pref] [ 0.391975] pci_bus 0000:03: resource 0 [io 0x4000-0x4fff] [ 0.391983] pci_bus 0000:03: resource 1 [mem 0xf0100000-0xf01fffff] [ 0.391992] pci_bus 0000:03: resource 2 [mem 0x40400000-0x405fffff 64bit pref] [ 0.392001] pci_bus 0000:04: resource 0 [io 0x2000-0x2fff] [ 0.392010] pci_bus 0000:04: resource 1 [mem 0x40600000-0x409fffff] [ 0.392019] pci_bus 0000:04: resource 2 [mem 0xf0500000-0xf05fffff 64bit pref] [ 0.392028] pci_bus 0000:05: resource 4 [io 0x0000-0x0cf7] [ 0.392037] pci_bus 0000:05: resource 5 [io 0x0d00-0xffff] [ 0.392045] pci_bus 0000:05: resource 6 [mem 0x000a0000-0x000bffff] [ 0.392054] pci_bus 0000:05: resource 7 [mem 0x000d0000-0x000d3fff] [ 0.392062] pci_bus 0000:05: resource 8 [mem 0x000d4000-0x000d7fff] [ 0.392071] pci_bus 0000:05: resource 9 [mem 0x000d8000-0x000dbfff] [ 0.392079] pci_bus 0000:05: resource 10 [mem 0x000dc000-0x000dffff] [ 0.392088] pci_bus 0000:05: resource 11 [mem 0x40000000-0xfebfffff] [ 0.392219] NET: Registered protocol family 2 [ 0.392410] IP route cache hash table entries: 32768 (order: 5, 131072 bytes) [ 0.393264] TCP established hash table entries: 131072 (order: 8, 1048576 bytes) [ 0.394386] TCP bind hash table entries: 65536 (order: 7, 524288 bytes) [ 0.394995] TCP: Hash tables configured (established 131072 bind 65536) [ 0.395007] TCP reno registered [ 0.395022] UDP hash table entries: 512 (order: 2, 16384 bytes) [ 0.395046] UDP-Lite hash table entries: 512 (order: 2, 16384 bytes) [ 0.395355] NET: Registered protocol family 1 [ 0.395404] pci 0000:00:02.0: Boot video device [ 0.395807] PCI: CLS 64 bytes, default 64 [ 0.395892] Simple Boot Flag at 0x36 set to 0x1 [ 0.396459] cpufreq-nforce2: No nForce2 chipset. [ 0.396559] Scanning for low memory corruption every 60 seconds [ 0.397005] audit: initializing netlink socket (disabled) [ 0.397033] type=2000 audit(1279010009.392:1): initialized [ 0.421070] highmem bounce pool size: 64 pages [ 0.421088] HugeTLB registered 4 MB page size, pre-allocated 0 pages [ 0.426575] VFS: Disk quotas dquot_6.5.2 [ 0.426785] Dquot-cache hash table entries: 1024 (order 0, 4096 bytes) [ 0.428956] fuse init (API version 7.14) [ 0.429284] msgmni has been set to 1709 [ 0.429929] alg: No test for stdrng (krng) [ 0.430142] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 253) [ 0.430152] io scheduler noop registered [ 0.430159] io scheduler deadline registered [ 0.430212] io scheduler cfq registered (default) [ 0.430544] pcieport 0000:00:1c.0: setting latency timer to 64 [ 0.430623] alloc irq_desc for 40 on node -1 [ 0.430630] alloc kstat_irqs on node -1 [ 0.430654] pcieport 0000:00:1c.0: irq 40 for MSI/MSI-X [ 0.430888] pcieport 0000:00:1c.1: setting latency timer to 64 [ 0.430954] alloc irq_desc for 41 on node -1 [ 0.430961] alloc kstat_irqs on node -1 [ 0.430979] pcieport 0000:00:1c.1: irq 41 for MSI/MSI-X [ 0.431221] pcieport 0000:00:1c.2: setting latency timer to 64 [ 0.431288] alloc irq_desc for 42 on node -1 [ 0.431294] alloc kstat_irqs on node -1 [ 0.431313] pcieport 0000:00:1c.2: irq 42 for MSI/MSI-X [ 0.431654] pci_hotplug: PCI Hot Plug PCI Core version: 0.5 [ 0.431953] pciehp: PCI Express Hot Plug Controller Driver version: 0.4 [ 0.432580] ACPI: AC Adapter [ACAD] (off-line) [ 0.432862] input: Lid Switch as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0D:00/input/input0 [ 0.432983] ACPI: Lid Switch [LID0] [ 0.433134] input: Power Button as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0C:00/input/input1 [ 0.433144] ACPI: Power Button [PWRB] [ 0.433335] input: Power Button as /devices/LNXSYSTM:00/LNXPWRBN:00/input/input2 [ 0.433344] ACPI: Power Button [PWRF] [ 0.434246] ACPI: acpi_idle registered with cpuidle [ 0.439689] Monitor-Mwait will be used to enter C-1 state [ 0.439806] Monitor-Mwait will be used to enter C-2 state [ 0.439887] Monitor-Mwait will be used to enter C-3 state [ 0.439910] Marking TSC unstable due to TSC halts in idle [ 0.441481] Switching to clocksource hpet [ 0.471458] thermal LNXTHERM:01: registered as thermal_zone0 [ 0.471484] ACPI: Thermal Zone [TZ01] (45 C) [ 0.471843] ERST: Table is not found! [ 0.478299] vesafb: framebuffer at 0xd012c000, mapped to 0xf8080000, using 1216k, total 1216k [ 0.478312] vesafb: mode is 640x480x32, linelength=2560, pages=0 [ 0.478319] vesafb: scrolling: redraw [ 0.478330] vesafb: Truecolor: size=8:8:8:8, shift=24:16:8:0 [ 0.490942] Console: switching to colour frame buffer device 80x30 [ 0.503406] fb0: VESA VGA frame buffer device [ 0.503592] isapnp: Scanning for PnP cards... [ 0.552955] Serial: 8250/16550 driver, 4 ports, IRQ sharing enabled [ 0.557792] brd: module loaded [ 0.559722] loop: module loaded [ 0.560391] ata_piix 0000:00:1f.2: version 2.13 [ 0.560433] alloc irq_desc for 19 on node -1 [ 0.560440] alloc kstat_irqs on node -1 [ 0.560459] ata_piix 0000:00:1f.2: PCI INT B -> GSI 19 (level, low) -> IRQ 19 [ 0.560472] ata_piix 0000:00:1f.2: MAP [ P0 P2 -- -- ] [ 0.735244] ata_piix 0000:00:1f.2: setting latency timer to 64 [ 0.753725] ACPI: Battery Slot [BAT1] (battery present) [ 0.779094] scsi0 : ata_piix [ 0.779419] scsi1 : ata_piix [ 0.782198] ata1: SATA max UDMA/133 cmd 0x1f0 ctl 0x3f6 bmdma 0x1810 irq 14 [ 0.782209] ata2: SATA max UDMA/133 cmd 0x170 ctl 0x376 bmdma 0x1818 irq 15 [ 0.783685] Fixed MDIO Bus: probed [ 0.783827] PPP generic driver version 2.4.2 [ 0.783984] tun: Universal TUN/TAP device driver, 1.6 [ 0.783991] tun: (C) 1999-2004 Max Krasnyansky [ 0.784284] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver [ 0.784346] alloc irq_desc for 23 on node -1 [ 0.784354] alloc kstat_irqs on node -1 [ 0.784372] ehci_hcd 0000:00:1d.7: PCI INT A -> GSI 23 (level, low) -> IRQ 23 [ 0.784417] ehci_hcd 0000:00:1d.7: setting latency timer to 64 [ 0.784427] ehci_hcd 0000:00:1d.7: EHCI Host Controller [ 0.784546] ehci_hcd 0000:00:1d.7: new USB bus registered, assigned bus number 1 [ 0.784599] ehci_hcd 0000:00:1d.7: using broken periodic workaround [ 0.784621] ehci_hcd 0000:00:1d.7: debug port 1 [ 0.788524] ehci_hcd 0000:00:1d.7: cache line size of 64 is not supported [ 0.788577] ehci_hcd 0000:00:1d.7: irq 23, io mem 0xf0444000 [ 0.823877] Freeing initrd memory: 10420k freed [ 0.834094] ehci_hcd 0000:00:1d.7: USB 2.0 started, EHCI 1.00 [ 0.834563] hub 1-0:1.0: USB hub found [ 0.834584] hub 1-0:1.0: 8 ports detected [ 0.834786] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver [ 0.834838] uhci_hcd: USB Universal Host Controller Interface driver [ 0.834995] uhci_hcd 0000:00:1d.0: power state changed by ACPI to D0 [ 0.835057] uhci_hcd 0000:00:1d.0: power state changed by ACPI to D0 [ 0.835078] uhci_hcd 0000:00:1d.0: PCI INT A -> GSI 23 (level, low) -> IRQ 23 [ 0.835096] uhci_hcd 0000:00:1d.0: setting latency timer to 64 [ 0.835106] uhci_hcd 0000:00:1d.0: UHCI Host Controller [ 0.835248] uhci_hcd 0000:00:1d.0: new USB bus registered, assigned bus number 2 [ 0.835301] uhci_hcd 0000:00:1d.0: irq 23, io base 0x00001820 [ 0.835666] hub 2-0:1.0: USB hub found [ 0.835681] hub 2-0:1.0: 2 ports detected [ 0.835837] uhci_hcd 0000:00:1d.1: power state changed by ACPI to D0 [ 0.835858] uhci_hcd 0000:00:1d.1: power state changed by ACPI to D0 [ 0.835873] uhci_hcd 0000:00:1d.1: PCI INT B -> GSI 19 (level, low) -> IRQ 19 [ 0.835890] uhci_hcd 0000:00:1d.1: setting latency timer to 64 [ 0.835899] uhci_hcd 0000:00:1d.1: UHCI Host Controller [ 0.836049] uhci_hcd 0000:00:1d.1: new USB bus registered, assigned bus number 3 [ 0.836120] uhci_hcd 0000:00:1d.1: irq 19, io base 0x00001840 [ 0.836255] isapnp: No Plug & Play device found [ 0.836448] hub 3-0:1.0: USB hub found [ 0.836461] hub 3-0:1.0: 2 ports detected [ 0.836597] uhci_hcd 0000:00:1d.2: power state changed by ACPI to D0 [ 0.836614] uhci_hcd 0000:00:1d.2: power state changed by ACPI to D0 [ 0.836627] uhci_hcd 0000:00:1d.2: PCI INT C -> GSI 18 (level, low) -> IRQ 18 [ 0.836641] uhci_hcd 0000:00:1d.2: setting latency timer to 64 [ 0.836648] uhci_hcd 0000:00:1d.2: UHCI Host Controller [ 0.836740] uhci_hcd 0000:00:1d.2: new USB bus registered, assigned bus number 4 [ 0.836803] uhci_hcd 0000:00:1d.2: irq 18, io base 0x00001860 [ 0.837095] hub 4-0:1.0: USB hub found [ 0.837107] hub 4-0:1.0: 2 ports detected [ 0.837289] uhci_hcd 0000:00:1d.3: power state changed by ACPI to D0 [ 0.837335] uhci_hcd 0000:00:1d.3: power state changed by ACPI to D0 [ 0.837348] uhci_hcd 0000:00:1d.3: PCI INT D -> GSI 16 (level, low) -> IRQ 16 [ 0.837361] uhci_hcd 0000:00:1d.3: setting latency timer to 64 [ 0.837369] uhci_hcd 0000:00:1d.3: UHCI Host Controller [ 0.837461] uhci_hcd 0000:00:1d.3: new USB bus registered, assigned bus number 5 [ 0.837520] uhci_hcd 0000:00:1d.3: irq 16, io base 0x00001880 [ 0.837805] hub 5-0:1.0: USB hub found [ 0.837817] hub 5-0:1.0: 2 ports detected [ 0.838056] PNP: PS/2 Controller [PNP0303:PS2K,PNP0f13:PS2M] at 0x60,0x64 irq 1,12 [ 0.862457] serio: i8042 KBD port at 0x60,0x64 irq 1 [ 0.862476] serio: i8042 AUX port at 0x60,0x64 irq 12 [ 0.862681] mice: PS/2 mouse device common for all mice [ 0.862937] rtc_cmos 00:08: RTC can wake from S4 [ 0.863058] rtc_cmos 00:08: rtc core: registered rtc_cmos as rtc0 [ 0.863110] rtc0: alarms up to one month, y3k, 242 bytes nvram, hpet irqs [ 0.863413] device-mapper: uevent: version 1.0.3 [ 0.863713] device-mapper: ioctl: 4.17.0-ioctl (2010-03-05) initialised: dm-devel@redhat.com [ 0.863913] device-mapper: multipath: version 1.1.1 loaded [ 0.863921] device-mapper: multipath round-robin: version 1.0.0 loaded [ 0.864259] EISA: Probing bus 0 at eisa.0 [ 0.864265] EISA: Cannot allocate resource for mainboard [ 0.864271] Cannot allocate resource for EISA slot 1 [ 0.864276] Cannot allocate resource for EISA slot 2 [ 0.864281] Cannot allocate resource for EISA slot 3 [ 0.864286] Cannot allocate resource for EISA slot 4 [ 0.864291] Cannot allocate resource for EISA slot 5 [ 0.864296] Cannot allocate resource for EISA slot 6 [ 0.864301] Cannot allocate resource for EISA slot 7 [ 0.864306] Cannot allocate resource for EISA slot 8 [ 0.864311] EISA: Detected 0 cards. [ 0.864709] cpuidle: using governor ladder [ 0.864993] cpuidle: using governor menu [ 0.865662] TCP cubic registered [ 0.865996] NET: Registered protocol family 10 [ 0.866769] lo: Disabled Privacy Extensions [ 0.867258] NET: Registered protocol family 17 [ 0.868504] Using IPI No-Shortcut mode [ 0.868735] PM: Resume from disk failed. [ 0.868761] registered taskstats version 1 [ 0.869560] Magic number: 2:857:573 [ 0.869708] rtc_cmos 00:08: setting system clock to 2010-07-13 08:33:30 UTC (1279010010) [ 0.869717] BIOS EDD facility v0.16 2004-Jun-25, 0 devices found [ 0.869721] EDD information not available. [ 0.889055] input: AT Translated Set 2 keyboard as /devices/platform/i8042/serio0/input/input3 [ 0.944595] ata1.00: ATA-7: INTEL SSDSA2M080G2GC, 2CV102HA, max UDMA/133 [ 0.944605] ata1.00: 156301488 sectors, multi 16: LBA48 NCQ (depth 0/32) [ 0.953650] ata1.00: configured for UDMA/133 [ 0.953945] scsi 0:0:0:0: Direct-Access ATA INTEL SSDSA2M080 2CV1 PQ: 0 ANSI: 5 [ 0.954277] sd 0:0:0:0: [sda] 156301488 512-byte logical blocks: (80.0 GB/74.5 GiB) [ 0.954348] sd 0:0:0:0: Attached scsi generic sg0 type 0 [ 0.954513] sd 0:0:0:0: [sda] Write Protect is off [ 0.954523] sd 0:0:0:0: [sda] Mode Sense: 00 3a 00 00 [ 0.954626] sd 0:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA [ 0.955141] sda: sda1 sda2 < sda5 > [ 0.956832] sd 0:0:0:0: [sda] Attached SCSI disk [ 0.999580] Freeing unused kernel memory: 684k freed [ 1.000244] Write protecting the kernel text: 4944k [ 1.000327] Write protecting the kernel read-only data: 2012k [ 1.039193] udev: starting version 151 [ 1.145128] usb 1-2: new high speed USB device using ehci_hcd and address 2 [ 1.419274] r8169 Gigabit Ethernet driver 2.3LK-NAPI loaded [ 1.419351] r8169 0000:04:00.0: PCI INT A -> GSI 18 (level, low) -> IRQ 18 [ 1.419497] r8169 0000:04:00.0: setting latency timer to 64 [ 1.419699] alloc irq_desc for 43 on node -1 [ 1.419707] alloc kstat_irqs on node -1 [ 1.419759] r8169 0000:04:00.0: irq 43 for MSI/MSI-X [ 1.436438] usb 1-3: new high speed USB device using ehci_hcd and address 3 [ 1.452088] r8169 0000:04:00.0: eth0: RTL8102e at 0xf8060000, 00:24:e8:bf:82:d8, XID 04c00000 IRQ 43 [ 1.499421] Btrfs loaded [ 1.542107] EXT4-fs (sda1): INFO: recovery required on readonly filesystem [ 1.542118] EXT4-fs (sda1): write access will be enabled during recovery [ 1.570722] EXT4-fs (sda1): recovery complete [ 1.571170] EXT4-fs (sda1): mounted filesystem with ordered data mode. Opts: (null) [ 2.100049] udev: starting version 151 [ 2.117290] Adding 2978812k swap on /dev/sda5. Priority:-1 extents:1 across:2978812k SSD [ 2.173180] EXT4-fs (sda1): re-mounted. Opts: errors=remount-ro [ 2.243694] lp: driver loaded but no devices found [ 2.421054] coretemp coretemp.0: Unable to read TjMax from CPU. [ 2.421345] coretemp coretemp.1: Unable to read TjMax from CPU. [ 2.642793] acpi device:00: registered as cooling_device2 [ 2.643248] input: Video Bus as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/LNXVIDEO:00/input/input4 [ 2.643406] ACPI: Video Device [GFX0] (multi-head: yes rom: no post: no) [ 2.691277] lib80211: common routines for IEEE802.11 drivers [ 2.691288] lib80211_crypt: registered algorithm 'NULL' [ 2.775161] intel_rng: FWH not detected [ 2.782469] udev: renamed network interface eth0 to eth1 [ 2.884896] wl: module license 'MIXED/Proprietary' taints kernel. [ 2.884908] Disabling lock debugging due to kernel taint [ 2.910110] leds_ss4200: no LED devices found [ 2.970537] Linux agpgart interface v0.103 [ 3.065377] dcdbas dcdbas: Dell Systems Management Base Driver (version 5.6.0-3.2) [ 3.113162] agpgart-intel 0000:00:00.0: Intel 945GME Chipset [ 3.113764] agpgart-intel 0000:00:00.0: detected 7932K stolen memory [ 3.116747] agpgart-intel 0000:00:00.0: AGP aperture is 256M @ 0xd0000000 [ 3.162015] compal-laptop: Identified laptop model 'Dell Mini 10v'. [ 3.172519] compal-laptop: driver 0.2.6 successfully loaded. [ 3.173731] wl 0000:03:00.0: PCI INT A -> GSI 17 (level, low) -> IRQ 17 [ 3.173755] wl 0000:03:00.0: setting latency timer to 64 [ 3.180159] dell-laptop: Blacklisted hardware detected - not enabling rfkill [ 3.204986] Linux video capture interface: v2.00 [ 3.244269] uvcvideo: Found UVC 1.00 device Integrated Webcam (064e:a129) [ 3.273182] input: Integrated Webcam as /devices/pci0000:00/0000:00:1d.7/usb1/1-2/1-2:1.0/input/input5 [ 3.273408] usbcore: registered new interface driver uvcvideo [ 3.273417] USB Video Class driver (v0.1.0) [ 3.370573] lib80211_crypt: registered algorithm 'TKIP' [ 3.371084] eth0: Broadcom BCM4315 802.11 Hybrid Wireless Controller 5.60.48.36 [ 3.450838] [drm] Initialized drm 1.1.0 20060810 [ 3.490577] udev: renamed network interface eth0 to eth2 [ 3.664003] type=1400 audit(1279010013.290:2): operation="profile_load" pid=682 name="/sbin/dhclient3" pid=682 comm="apparmor_parser" [ 3.664809] type=1400 audit(1279010013.290:3): operation="profile_load" pid=682 name="/usr/lib/NetworkManager/nm-dhcp-client.action" pid=682 comm="apparmor_parser" [ 3.665311] type=1400 audit(1279010013.294:4): operation="profile_load" pid=682 name="/usr/lib/connman/scripts/dhclient-script" pid=682 comm="apparmor_parser" [ 3.740149] i915 0000:00:02.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16 [ 3.740165] i915 0000:00:02.0: setting latency timer to 64 [ 3.838641] BUG: unable to handle kernel NULL pointer dereference at (null) [ 3.839119] IP: [] __mutex_lock_slowpath+0x9a/0x140 [ 3.839511] *pde = 3d9e2067 [ 3.839710] Oops: 0002 [#1] SMP [ 3.839944] last sysfs file: /sys/devices/platform/i8042/serio0/input/input3/event3/uevent [ 3.840014] Modules linked in: snd_hwdep snd_pcm i915(+) snd_seq_midi snd_rawmidi snd_seq_midi_event drm_kms_helper snd_seq lib80211_crypt_tkip snd_timer drm snd_seq_device uvcvideo dell_laptop wl(P) compal_laptop videodev dcdbas intel_agp snd psmouse v4l1_compat led_class soundcore serio_raw agpgart i2c_algo_bit snd_page_alloc lib80211 video coretemp output lp parport btrfs zlib_deflate r8169 mii crc32c libcrc32c [ 3.840014] [ 3.840014] Pid: 315, comm: plymouthd Tainted: P 2.6.35-7-generic #12-Ubuntu CN0Y53/Inspiron 1011 [ 3.840014] EIP: 0060:[] EFLAGS: 00010246 CPU: 0 [ 3.840014] EIP is at __mutex_lock_slowpath+0x9a/0x140 [ 3.840014] EAX: 00000000 EBX: ef5a9a90 ECX: ef5a9a98 EDX: f6ab7ec0 [ 3.840014] ESI: ef5a9a94 EDI: ef5a9a90 EBP: f6ab7ed8 ESP: f6ab7eb4 [ 3.840014] DS: 007b ES: 007b FS: 00d8 GS: 00e0 SS: 0068 [ 3.840014] Process plymouthd (pid: 315, ti=f6ab6000 task=f6ae3f70 task.ti=f6ab6000) [ 3.840014] Stack: [ 3.840014] f6ab7ec4 f6ae3f70 ef5a9a98 ef5a9a98 00000000 f6ab7ed8 ef5a9a90 f7109100 [ 3.840014] <0> ef5a9a90 f6ab7ee8 c05cb095 f7109100 f7109100 f6ab7efc f890fdc3 f7109100 [ 3.848126] <0> f7109160 ef5a9800 f6ab7f44 f8907337 00000001 f8917e25 f8917220 f8919590 [ 3.848126] Call Trace: [ 3.848126] [] ? mutex_lock+0x25/0x40 [ 3.848126] [] ? drm_fb_release+0x23/0x70 [drm] [ 3.878710] [] ? drm_release+0x3e7/0x4c0 [drm] [ 3.878710] [] ? __fput+0xdf/0x1f0 [ 3.878710] [] ? fput+0x1d/0x30 [ 3.878710] [] ? filp_close+0x4c/0x80 [ 3.878710] [] ? sys_close+0x75/0xc0 [ 3.878710] [] ? syscall_call+0x7/0xb [ 3.878710] Code: 83 79 18 63 7f b3 8d 76 00 8d 73 04 89 f0 e8 5e 11 00 00 8d 53 08 89 55 e4 8d 55 e8 8b 43 0c 89 53 0c 8b 4d e4 89 45 ec 89 4d e8 <89> 10 8b 45 e0 ba ff ff ff ff 89 45 f0 89 d0 87 03 83 f8 01 74 [ 3.878710] EIP: [] __mutex_lock_slowpath+0x9a/0x140 SS:ESP 0068:f6ab7eb4 [ 3.878710] CR2: 0000000000000000 [ 3.879199] ---[ end trace d19a98cda7849580 ]--- [ 4.017902] [drm] set up 7M of stolen space [ 4.474366] [drm] initialized overlay support [ 4.599182] r8169 0000:04:00.0: eth1: link down [ 4.603936] ADDRCONF(NETDEV_UP): eth1: link is not ready [ 4.640584] type=1400 audit(1279010014.266:5): operation="profile_load" pid=820 name="/usr/share/gdm/guest-session/Xsession" pid=820 comm="apparmor_parser" [ 4.653746] type=1400 audit(1279010014.282:6): operation="profile_replace" pid=821 name="/sbin/dhclient3" pid=821 comm="apparmor_parser" [ 4.661042] type=1400 audit(1279010014.290:7): operation="profile_replace" pid=821 name="/usr/lib/NetworkManager/nm-dhcp-client.action" pid=821 comm="apparmor_parser" [ 4.671312] type=1400 audit(1279010014.298:8): operation="profile_replace" pid=821 name="/usr/lib/connman/scripts/dhclient-script" pid=821 comm="apparmor_parser" [ 4.692486] type=1400 audit(1279010014.318:9): operation="profile_load" pid=822 name="/usr/bin/evince" pid=822 comm="apparmor_parser" [ 4.710491] type=1400 audit(1279010014.338:10): operation="profile_load" pid=822 name="/usr/bin/evince-previewer" pid=822 comm="apparmor_parser" [ 4.741325] Synaptics Touchpad, model: 1, fw: 7.4, id: 0x1e0b1, caps: 0xd04711/0xa40000/0x2a0000 [ 4.769092] Skipping EDID probe due to cached edid [ 4.780738] checking generic (d012c000 130000) vs hw (d0000000 10000000) [ 4.784977] fb: conflicting fb hw usage inteldrmfb vs VESA VGA - removing generic driver [ 4.800600] Console: switching to colour dummy device 80x25 [ 4.860971] input: SynPS/2 Synaptics TouchPad as /devices/platform/i8042/serio1/input/input6 [ 5.229435] Console: switching to colour frame buffer device 128x37 [ 5.237193] fb0: inteldrmfb frame buffer device [ 5.237200] drm: registered panic notifier [ 5.237208] Slow work thread pool: Starting up [ 5.237369] Slow work thread pool: Ready [ 5.237391] [drm] Initialized i915 1.6.0 20080730 for 0000:00:02.0 on minor 0 [ 5.237884] alloc irq_desc for 22 on node -1 [ 5.237891] alloc kstat_irqs on node -1 [ 5.237912] HDA Intel 0000:00:1b.0: PCI INT A -> GSI 22 (level, low) -> IRQ 22 [ 5.238011] alloc irq_desc for 44 on node -1 [ 5.238017] alloc kstat_irqs on node -1 [ 5.238043] HDA Intel 0000:00:1b.0: irq 44 for MSI/MSI-X [ 5.238118] HDA Intel 0000:00:1b.0: setting latency timer to 64 [ 5.248909] vga16fb: initializing [ 5.248925] vga16fb: mapped to 0xc00a0000 [ 5.249233] fb1: VGA16 VGA frame buffer device Bug: 606511 [ 0.000000] Initializing cgroup subsys cpuset [ 0.000000] Initializing cgroup subsys cpu [ 0.000000] Linux version 2.6.35-8-generic (buildd@yellow) (gcc version 4.4.4 (Ubuntu 4.4.4-6ubuntu2) ) #13-Ubuntu SMP Wed Jul 14 13:11:35 UTC 2010 (Ubuntu 2.6.35-8.13-generic 2.6.35-rc5) [ 0.000000] Command line: BOOT_IMAGE=/boot/vmlinuz-2.6.35-8-generic root=UUID=bf143224-6b45-4f50-9834-ca97a00600e0 ro quiet splash [ 0.000000] BIOS-provided physical RAM map: [ 0.000000] BIOS-e820: 0000000000000000 - 000000000009fc00 (usable) [ 0.000000] BIOS-e820: 000000000009fc00 - 00000000000a0000 (reserved) [ 0.000000] BIOS-e820: 00000000000e0000 - 0000000000100000 (reserved) [ 0.000000] BIOS-e820: 0000000000100000 - 00000000bff90000 (usable) [ 0.000000] BIOS-e820: 00000000bff90000 - 00000000bff9e000 (ACPI data) [ 0.000000] BIOS-e820: 00000000bff9e000 - 00000000bffe0000 (ACPI NVS) [ 0.000000] BIOS-e820: 00000000bffe0000 - 00000000c0000000 (reserved) [ 0.000000] BIOS-e820: 00000000fee00000 - 00000000fee01000 (reserved) [ 0.000000] BIOS-e820: 00000000ffb00000 - 0000000100000000 (reserved) [ 0.000000] BIOS-e820: 0000000100000000 - 00000001c0000000 (usable) [ 0.000000] NX (Execute Disable) protection: active [ 0.000000] DMI present. [ 0.000000] AMI BIOS detected: BIOS may corrupt low RAM, working around it. [ 0.000000] e820 update range: 0000000000000000 - 0000000000010000 (usable) ==> (reserved) [ 0.000000] e820 update range: 0000000000000000 - 0000000000001000 (usable) ==> (reserved) [ 0.000000] e820 remove range: 00000000000a0000 - 0000000000100000 (usable) [ 0.000000] No AGP bridge found [ 0.000000] last_pfn = 0x1c0000 max_arch_pfn = 0x400000000 [ 0.000000] MTRR default type: uncachable [ 0.000000] MTRR fixed ranges enabled: [ 0.000000] 00000-9FFFF write-back [ 0.000000] A0000-BFFFF uncachable [ 0.000000] C0000-CFFFF write-protect [ 0.000000] D0000-DFFFF uncachable [ 0.000000] E0000-EFFFF write-through [ 0.000000] F0000-FFFFF write-protect [ 0.000000] MTRR variable ranges enabled: [ 0.000000] 0 base 1C0000000 mask FC0000000 uncachable [ 0.000000] 1 base 000000000 mask E00000000 write-back [ 0.000000] 2 base 0C0000000 mask FC0000000 uncachable [ 0.000000] 3 disabled [ 0.000000] 4 disabled [ 0.000000] 5 disabled [ 0.000000] 6 disabled [ 0.000000] 7 disabled [ 0.000000] x86 PAT enabled: cpu 0, old 0x7040600070406, new 0x7010600070106 [ 0.000000] e820 update range: 00000000c0000000 - 0000000100000000 (usable) ==> (reserved) [ 0.000000] last_pfn = 0xbff90 max_arch_pfn = 0x400000000 [ 0.000000] Scanning 0 areas for low memory corruption [ 0.000000] modified physical RAM map: [ 0.000000] modified: 0000000000000000 - 0000000000010000 (reserved) [ 0.000000] modified: 0000000000010000 - 000000000009fc00 (usable) [ 0.000000] modified: 000000000009fc00 - 00000000000a0000 (reserved) [ 0.000000] modified: 00000000000e0000 - 0000000000100000 (reserved) [ 0.000000] modified: 0000000000100000 - 00000000bff90000 (usable) [ 0.000000] modified: 00000000bff90000 - 00000000bff9e000 (ACPI data) [ 0.000000] modified: 00000000bff9e000 - 00000000bffe0000 (ACPI NVS) [ 0.000000] modified: 00000000bffe0000 - 00000000c0000000 (reserved) [ 0.000000] modified: 00000000fee00000 - 00000000fee01000 (reserved) [ 0.000000] modified: 00000000ffb00000 - 0000000100000000 (reserved) [ 0.000000] modified: 0000000100000000 - 00000001c0000000 (usable) [ 0.000000] initial memory mapped : 0 - 20000000 [ 0.000000] found SMP MP-table at [ffff8800000ff780] ff780 [ 0.000000] init_memory_mapping: 0000000000000000-00000000bff90000 [ 0.000000] 0000000000 - 00bfe00000 page 2M [ 0.000000] 00bfe00000 - 00bff90000 page 4k [ 0.000000] kernel direct mapping tables up to bff90000 @ 16000-1b000 [ 0.000000] init_memory_mapping: 0000000100000000-00000001c0000000 [ 0.000000] 0100000000 - 01c0000000 page 2M [ 0.000000] kernel direct mapping tables up to 1c0000000 @ 19000-21000 [ 0.000000] RAMDISK: 3759c000 - 37ff0000 [ 0.000000] ACPI: RSDP 00000000000f99e0 00014 (v00 ACPIAM) [ 0.000000] ACPI: RSDT 00000000bff90000 0003C (v01 7514MS A7514200 20090526 MSFT 00000097) [ 0.000000] ACPI: FACP 00000000bff90200 00084 (v01 7514MS A7514200 20090526 MSFT 00000097) [ 0.000000] ACPI: DSDT 00000000bff90440 063EE (v01 A7514 A7514200 00000200 INTL 20051117) [ 0.000000] ACPI: FACS 00000000bff9e000 00040 [ 0.000000] ACPI: APIC 00000000bff90390 0006C (v01 7514MS A7514200 20090526 MSFT 00000097) [ 0.000000] ACPI: MCFG 00000000bff90400 0003C (v01 7514MS OEMMCFG 20090526 MSFT 00000097) [ 0.000000] ACPI: OEMB 00000000bff9e040 00072 (v01 7514MS A7514200 20090526 MSFT 00000097) [ 0.000000] ACPI: HPET 00000000bff98440 00038 (v01 7514MS OEMHPET 20090526 MSFT 00000097) [ 0.000000] ACPI: SSDT 00000000bff9e5c0 00A7C (v01 DpgPmm CpuPm 00000012 INTL 20051117) [ 0.000000] ACPI: Local APIC address 0xfee00000 [ 0.000000] No NUMA configuration found [ 0.000000] Faking a node at 0000000000000000-00000001c0000000 [ 0.000000] Initmem setup node 0 0000000000000000-00000001c0000000 [ 0.000000] NODE_DATA [0000000100000000 - 0000000100004fff] [ 0.000000] [ffffea0000000000-ffffea00061fffff] PMD -> [ffff880100200000-ffff8801055fffff] on node 0 [ 0.000000] Zone PFN ranges: [ 0.000000] DMA 0x00000010 -> 0x00001000 [ 0.000000] DMA32 0x00001000 -> 0x00100000 [ 0.000000] Normal 0x00100000 -> 0x001c0000 [ 0.000000] Movable zone start PFN for each node [ 0.000000] early_node_map[3] active PFN ranges [ 0.000000] 0: 0x00000010 -> 0x0000009f [ 0.000000] 0: 0x00000100 -> 0x000bff90 [ 0.000000] 0: 0x00100000 -> 0x001c0000 [ 0.000000] On node 0 totalpages: 1572639 [ 0.000000] DMA zone: 56 pages used for memmap [ 0.000000] DMA zone: 0 pages reserved [ 0.000000] DMA zone: 3927 pages, LIFO batch:0 [ 0.000000] DMA32 zone: 14280 pages used for memmap [ 0.000000] DMA32 zone: 767944 pages, LIFO batch:31 [ 0.000000] Normal zone: 10752 pages used for memmap [ 0.000000] Normal zone: 775680 pages, LIFO batch:31 [ 0.000000] ACPI: PM-Timer IO Port: 0x808 [ 0.000000] ACPI: Local APIC address 0xfee00000 [ 0.000000] ACPI: LAPIC (acpi_id[0x01] lapic_id[0x00] enabled) [ 0.000000] ACPI: LAPIC (acpi_id[0x02] lapic_id[0x01] enabled) [ 0.000000] ACPI: LAPIC (acpi_id[0x03] lapic_id[0x82] disabled) [ 0.000000] ACPI: LAPIC (acpi_id[0x04] lapic_id[0x83] disabled) [ 0.000000] ACPI: IOAPIC (id[0x02] address[0xfec00000] gsi_base[0]) [ 0.000000] IOAPIC[0]: apic_id 2, version 32, address 0xfec00000, GSI 0-23 [ 0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 0 global_irq 2 dfl dfl) [ 0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 9 global_irq 9 high level) [ 0.000000] ACPI: IRQ0 used by override. [ 0.000000] ACPI: IRQ2 used by override. [ 0.000000] ACPI: IRQ9 used by override. [ 0.000000] Using ACPI (MADT) for SMP configuration information [ 0.000000] ACPI: HPET id: 0xffffffff base: 0xfed00000 [ 0.000000] SMP: Allowing 4 CPUs, 2 hotplug CPUs [ 0.000000] nr_irqs_gsi: 40 [ 0.000000] early_res array is doubled to 64 at [1c000 - 1c7ff] [ 0.000000] PM: Registered nosave memory: 000000000009f000 - 00000000000a0000 [ 0.000000] PM: Registered nosave memory: 00000000000a0000 - 00000000000e0000 [ 0.000000] PM: Registered nosave memory: 00000000000e0000 - 0000000000100000 [ 0.000000] PM: Registered nosave memory: 00000000bff90000 - 00000000bff9e000 [ 0.000000] PM: Registered nosave memory: 00000000bff9e000 - 00000000bffe0000 [ 0.000000] PM: Registered nosave memory: 00000000bffe0000 - 00000000c0000000 [ 0.000000] PM: Registered nosave memory: 00000000c0000000 - 00000000fee00000 [ 0.000000] PM: Registered nosave memory: 00000000fee00000 - 00000000fee01000 [ 0.000000] PM: Registered nosave memory: 00000000fee01000 - 00000000ffb00000 [ 0.000000] PM: Registered nosave memory: 00000000ffb00000 - 0000000100000000 [ 0.000000] Allocating PCI resources starting at c0000000 (gap: c0000000:3ee00000) [ 0.000000] Booting paravirtualized kernel on bare hardware [ 0.000000] setup_percpu: NR_CPUS:64 nr_cpumask_bits:64 nr_cpu_ids:4 nr_node_ids:1 [ 0.000000] PERCPU: Embedded 30 pages/cpu @ffff880001e00000 s91392 r8192 d23296 u524288 [ 0.000000] pcpu-alloc: s91392 r8192 d23296 u524288 alloc=1*2097152 [ 0.000000] pcpu-alloc: [0] 0 1 2 3 [ 0.000000] Built 1 zonelists in Zone order, mobility grouping on. Total pages: 1547551 [ 0.000000] Policy zone: Normal [ 0.000000] Kernel command line: BOOT_IMAGE=/boot/vmlinuz-2.6.35-8-generic root=UUID=bf143224-6b45-4f50-9834-ca97a00600e0 ro quiet splash [ 0.000000] PID hash table entries: 4096 (order: 3, 32768 bytes) [ 0.000000] xsave/xrstor: enabled xstate_bv 0x3, cntxt size 0x240 [ 0.000000] Checking aperture... [ 0.000000] No AGP bridge found [ 0.000000] Calgary: detecting Calgary via BIOS EBDA area [ 0.000000] Calgary: Unable to locate Rio Grande table in EBDA - bailing! [ 0.000000] early_res array is doubled to 128 at [24800 - 257ff] [ 0.000000] Subtract (57 early reservations) [ 0.000000] #1 [0001000000 - 0001d1fed4] TEXT DATA BSS [ 0.000000] #2 [003759c000 - 0037ff0000] RAMDISK [ 0.000000] #3 [0001d20000 - 0001d201a9] BRK [ 0.000000] #4 [00000ff790 - 0000100000] BIOS reserved [ 0.000000] #5 [00000ff780 - 00000ff790] MP-table mpf [ 0.000000] #6 [000009fc00 - 00000fd720] BIOS reserved [ 0.000000] #7 [00000fd894 - 00000ff780] BIOS reserved [ 0.000000] #8 [00000fd720 - 00000fd894] MP-table mpc [ 0.000000] #9 [0000010000 - 0000012000] TRAMPOLINE [ 0.000000] #10 [0000012000 - 0000016000] ACPI WAKEUP [ 0.000000] #11 [0000016000 - 0000019000] PGTABLE [ 0.000000] #12 [0000019000 - 000001c000] PGTABLE [ 0.000000] #13 [0100000000 - 0100005000] NODE_DATA [ 0.000000] #14 [0001d201c0 - 0001d211c0] BOOTMEM [ 0.000000] #15 [00021211c0 - 0002121640] BOOTMEM [ 0.000000] #16 [0100005000 - 0100006000] BOOTMEM [ 0.000000] #17 [0100006000 - 0100007000] BOOTMEM [ 0.000000] #18 [0100200000 - 0105600000] MEMMAP 0 [ 0.000000] #19 [0001d211c0 - 0001d21340] BOOTMEM [ 0.000000] #20 [0001d21340 - 0001d39340] BOOTMEM [ 0.000000] #21 [0001d39340 - 0001d51340] BOOTMEM [ 0.000000] #22 [0001d52000 - 0001d53000] BOOTMEM [ 0.000000] #23 [0001d1ff00 - 0001d1ff41] BOOTMEM [ 0.000000] #24 [0001d1ff80 - 0001d1ffc3] BOOTMEM [ 0.000000] #25 [0001d51340 - 0001d515a8] BOOTMEM [ 0.000000] #26 [0001d515c0 - 0001d51628] BOOTMEM [ 0.000000] #27 [0001d51640 - 0001d516a8] BOOTMEM [ 0.000000] #28 [0001d516c0 - 0001d51728] BOOTMEM [ 0.000000] #29 [0001d51740 - 0001d517a8] BOOTMEM [ 0.000000] #30 [0001d517c0 - 0001d51828] BOOTMEM [ 0.000000] #31 [0001d51840 - 0001d518a8] BOOTMEM [ 0.000000] #32 [0001d518c0 - 0001d51928] BOOTMEM [ 0.000000] #33 [0001d51940 - 0001d519a8] BOOTMEM [ 0.000000] #34 [0001d519c0 - 0001d51a28] BOOTMEM [ 0.000000] #35 [0001d51a40 - 0001d51aa8] BOOTMEM [ 0.000000] #36 [0001d51ac0 - 0001d51ae0] BOOTMEM [ 0.000000] #37 [0001d51b00 - 0001d51b20] BOOTMEM [ 0.000000] #38 [0001d51b40 - 0001d51ba9] BOOTMEM [ 0.000000] #39 [0001d51bc0 - 0001d51c29] BOOTMEM [ 0.000000] #40 [0001e00000 - 0001e1e000] BOOTMEM [ 0.000000] #41 [0001e80000 - 0001e9e000] BOOTMEM [ 0.000000] #42 [0001f00000 - 0001f1e000] BOOTMEM [ 0.000000] #43 [0001f80000 - 0001f9e000] BOOTMEM [ 0.000000] #44 [0001d51c40 - 0001d51c48] BOOTMEM [ 0.000000] #45 [0001d51c80 - 0001d51c88] BOOTMEM [ 0.000000] #46 [0001d51cc0 - 0001d51cd0] BOOTMEM [ 0.000000] #47 [0001d51d00 - 0001d51d20] BOOTMEM [ 0.000000] #48 [0001d51d40 - 0001d51e70] BOOTMEM [ 0.000000] #49 [0001d51e80 - 0001d51ed0] BOOTMEM [ 0.000000] #50 [0001d51f00 - 0001d51f50] BOOTMEM [ 0.000000] #51 [0001d53000 - 0001d5b000] BOOTMEM [ 0.000000] #52 [0001d5b000 - 0001d5b240] BOOTMEM [ 0.000000] #53 [0002122000 - 0006122000] BOOTMEM [ 0.000000] #54 [0001d5b240 - 0001d7b240] BOOTMEM [ 0.000000] #55 [0001d7b240 - 0001dbb240] BOOTMEM [ 0.000000] #56 [000001c800 - 0000024800] BOOTMEM [ 0.000000] Memory: 6113768k/7340032k available (5707k kernel code, 1049476k absent, 176788k reserved, 5421k data, 904k init) [ 0.000000] SLUB: Genslabs=14, HWalign=64, Order=0-3, MinObjects=0, CPUs=4, Nodes=1 [ 0.000000] Hierarchical RCU implementation. [ 0.000000] RCU dyntick-idle grace-period acceleration is enabled. [ 0.000000] RCU-based detection of stalled CPUs is disabled. [ 0.000000] Verbose stalled-CPUs detection is disabled. [ 0.000000] NR_IRQS:4352 nr_irqs:712 [ 0.000000] Console: colour dummy device 80x25 [ 0.000000] console [tty0] enabled [ 0.000000] allocated 62914560 bytes of page_cgroup [ 0.000000] please try 'cgroup_disable=memory' option if you don't want memory cgroups [ 0.000000] hpet clockevent registered [ 0.000000] Fast TSC calibration using PIT [ 0.000000] Detected 2506.005 MHz processor. [ 0.000006] Calibrating delay loop (skipped), value calculated using timer frequency.. 5012.01 BogoMIPS (lpj=25060050) [ 0.000009] pid_max: default: 32768 minimum: 301 [ 0.000033] Security Framework initialized [ 0.000052] AppArmor: AppArmor initialized [ 0.000054] Yama: becoming mindful. [ 0.010661] Dentry cache hash table entries: 1048576 (order: 11, 8388608 bytes) [ 0.015468] Inode-cache hash table entries: 524288 (order: 10, 4194304 bytes) [ 0.017730] Mount-cache hash table entries: 256 [ 0.017884] Initializing cgroup subsys ns [ 0.017889] Initializing cgroup subsys cpuacct [ 0.017892] Initializing cgroup subsys memory [ 0.017900] Initializing cgroup subsys devices [ 0.017903] Initializing cgroup subsys freezer [ 0.017904] Initializing cgroup subsys net_cls [ 0.017934] CPU: Physical Processor ID: 0 [ 0.017935] CPU: Processor Core ID: 0 [ 0.017937] mce: CPU supports 6 MCE banks [ 0.017945] CPU0: Thermal monitoring enabled (TM2) [ 0.017949] using mwait in idle threads. [ 0.017951] Performance Events: PEBS fmt0+, Core2 events, Intel PMU driver. [ 0.017958] ... version: 2 [ 0.017960] ... bit width: 40 [ 0.017961] ... generic registers: 2 [ 0.017963] ... value mask: 000000ffffffffff [ 0.017964] ... max period: 000000007fffffff [ 0.017965] ... fixed-purpose events: 3 [ 0.017967] ... event mask: 0000000700000003 [ 0.020339] ACPI: Core revision 20100428 [ 0.027233] ftrace: converting mcount calls to 0f 1f 44 00 00 [ 0.027238] ftrace: allocating 22647 entries in 89 pages [ 0.030056] Setting APIC routing to flat [ 0.030366] ..TIMER: vector=0x30 apic1=0 pin1=2 apic2=-1 pin2=-1 [ 0.136366] CPU0: Intel Pentium(R) Dual-Core CPU E5200 @ 2.50GHz stepping 0a [ 0.140000] Booting Node 0, Processors #1 [ 0.300018] Brought up 2 CPUs [ 0.300021] Total of 2 processors activated (10024.44 BogoMIPS). [ 0.300522] devtmpfs: initialized [ 0.300597] regulator: core version 0.5 [ 0.300621] Time: 16:36:42 Date: 07/16/10 [ 0.300655] NET: Registered protocol family 16 [ 0.300674] Trying to unpack rootfs image as initramfs... [ 0.300770] ACPI: bus type pci registered [ 0.300832] PCI: MMCONFIG for domain 0000 [bus 00-ff] at [mem 0xe0000000-0xefffffff] (base 0xe0000000) [ 0.300834] PCI: not using MMCONFIG [ 0.300836] PCI: Using configuration type 1 for base access [ 0.310098] bio: create slab at 0 [ 0.311253] ACPI: EC: Look up EC in DSDT [ 0.312633] ACPI: Executed 1 blocks of module-level executable AML code [ 0.318311] ACPI: SSDT 00000000bff9e0c0 00277 (v01 DpgPmm P001Ist 00000011 INTL 20051117) [ 0.318608] ACPI: Dynamic OEM Table Load: [ 0.318611] ACPI: SSDT (null) 00277 (v01 DpgPmm P001Ist 00000011 INTL 20051117) [ 0.319025] ACPI: SSDT 00000000bff9e340 00277 (v01 DpgPmm P002Ist 00000012 INTL 20051117) [ 0.319320] ACPI: Dynamic OEM Table Load: [ 0.319322] ACPI: SSDT (null) 00277 (v01 DpgPmm P002Ist 00000012 INTL 20051117) [ 0.319417] ACPI: Interpreter enabled [ 0.319420] ACPI: (supports S0 S1 S4 S5) [ 0.319438] ACPI: Using IOAPIC for interrupt routing [ 0.319490] PCI: MMCONFIG for domain 0000 [bus 00-ff] at [mem 0xe0000000-0xefffffff] (base 0xe0000000) [ 0.321344] PCI: MMCONFIG at [mem 0xe0000000-0xefffffff] reserved in ACPI motherboard resources [ 0.365897] ACPI: No dock devices found. [ 0.365902] PCI: Using host bridge windows from ACPI; if necessary, use "pci=nocrs" and report a bug [ 0.366041] ACPI: PCI Root Bridge [PCI0] (domain 0000 [bus 00-ff]) [ 0.366312] pci_root PNP0A08:00: host bridge window [io 0x0000-0x0cf7] [ 0.366314] pci_root PNP0A08:00: host bridge window [io 0x0d00-0xffff] [ 0.366317] pci_root PNP0A08:00: host bridge window [mem 0x000a0000-0x000bffff] [ 0.366319] pci_root PNP0A08:00: host bridge window [mem 0x000d0000-0x000dffff] [ 0.366321] pci_root PNP0A08:00: host bridge window [mem 0xc0000000-0xdfffffff] [ 0.366323] pci_root PNP0A08:00: host bridge window [mem 0xf0000000-0xfed8ffff] [ 0.366393] pci 0000:00:01.0: PME# supported from D0 D3hot D3cold [ 0.366396] pci 0000:00:01.0: PME# disabled [ 0.366461] pci 0000:00:1a.0: reg 20: [io 0xbc00-0xbc1f] [ 0.366524] pci 0000:00:1a.1: reg 20: [io 0xb880-0xb89f] [ 0.366585] pci 0000:00:1a.2: reg 20: [io 0xb800-0xb81f] [ 0.366647] pci 0000:00:1a.7: reg 10: [mem 0xf9fffc00-0xf9ffffff] [ 0.366699] pci 0000:00:1a.7: PME# supported from D0 D3hot D3cold [ 0.366702] pci 0000:00:1a.7: PME# disabled [ 0.366734] pci 0000:00:1b.0: reg 10: [mem 0xf9ff8000-0xf9ffbfff 64bit] [ 0.366772] pci 0000:00:1b.0: PME# supported from D0 D3hot D3cold [ 0.366775] pci 0000:00:1b.0: PME# disabled [ 0.366838] pci 0000:00:1c.0: PME# supported from D0 D3hot D3cold [ 0.366842] pci 0000:00:1c.0: PME# disabled [ 0.366908] pci 0000:00:1c.1: PME# supported from D0 D3hot D3cold [ 0.366911] pci 0000:00:1c.1: PME# disabled [ 0.366975] pci 0000:00:1c.5: PME# supported from D0 D3hot D3cold [ 0.366979] pci 0000:00:1c.5: PME# disabled [ 0.367025] pci 0000:00:1d.0: reg 20: [io 0xb480-0xb49f] [ 0.367091] pci 0000:00:1d.1: reg 20: [io 0xb400-0xb41f] [ 0.367152] pci 0000:00:1d.2: reg 20: [io 0xb080-0xb09f] [ 0.367211] pci 0000:00:1d.7: reg 10: [mem 0xf9fff800-0xf9fffbff] [ 0.367261] pci 0000:00:1d.7: PME# supported from D0 D3hot D3cold [ 0.367265] pci 0000:00:1d.7: PME# disabled [ 0.367377] pci 0000:00:1f.0: quirk: [io 0x0800-0x087f] claimed by ICH6 ACPI/GPIO/TCO [ 0.367381] pci 0000:00:1f.0: quirk: [io 0x0480-0x04bf] claimed by ICH6 GPIO [ 0.367384] pci 0000:00:1f.0: ICH7 LPC Generic IO decode 1 PIO at 0a00 (mask 00ff) [ 0.367387] pci 0000:00:1f.0: ICH7 LPC Generic IO decode 2 PIO at 0a00 (mask 0017) [ 0.367391] pci 0000:00:1f.0: ICH7 LPC Generic IO decode 3 PIO at 4700 (mask 00ff) [ 0.367434] pci 0000:00:1f.2: reg 10: [io 0xb000-0xb007] [ 0.367439] pci 0000:00:1f.2: reg 14: [io 0xac00-0xac03] [ 0.367444] pci 0000:00:1f.2: reg 18: [io 0xa880-0xa887] [ 0.367449] pci 0000:00:1f.2: reg 1c: [io 0xa800-0xa803] [ 0.367454] pci 0000:00:1f.2: reg 20: [io 0xa480-0xa48f] [ 0.367459] pci 0000:00:1f.2: reg 24: [io 0xa400-0xa40f] [ 0.367501] pci 0000:00:1f.3: reg 10: [mem 0xf9fff400-0xf9fff4ff 64bit] [ 0.367513] pci 0000:00:1f.3: reg 20: [io 0x0400-0x041f] [ 0.367549] pci 0000:00:1f.5: reg 10: [io 0xa000-0xa007] [ 0.367554] pci 0000:00:1f.5: reg 14: [io 0x9c00-0x9c03] [ 0.367559] pci 0000:00:1f.5: reg 18: [io 0x9880-0x9887] [ 0.367565] pci 0000:00:1f.5: reg 1c: [io 0x9800-0x9803] [ 0.367571] pci 0000:00:1f.5: reg 20: [io 0x9480-0x948f] [ 0.367575] pci 0000:00:1f.5: reg 24: [io 0x9400-0x940f] [ 0.367643] pci 0000:01:00.0: reg 10: [mem 0xfd000000-0xfdffffff] [ 0.367651] pci 0000:01:00.0: reg 14: [mem 0xc0000000-0xdfffffff 64bit pref] [ 0.367659] pci 0000:01:00.0: reg 1c: [mem 0xfa000000-0xfbffffff 64bit] [ 0.367663] pci 0000:01:00.0: reg 24: [io 0xcc00-0xcc7f] [ 0.367668] pci 0000:01:00.0: reg 30: [mem 0x00000000-0x0007ffff pref] [ 0.367712] pci 0000:00:01.0: PCI bridge to [bus 01-01] [ 0.367715] pci 0000:00:01.0: bridge window [io 0xc000-0xcfff] [ 0.367719] pci 0000:00:01.0: bridge window [mem 0xfa000000-0xfe9fffff] [ 0.367723] pci 0000:00:01.0: bridge window [mem 0xc0000000-0xdfffffff 64bit pref] [ 0.367832] pci 0000:02:00.0: reg 24: [mem 0xfeafe000-0xfeafffff] [ 0.367869] pci 0000:02:00.0: PME# supported from D3hot [ 0.367874] pci 0000:02:00.0: PME# disabled [ 0.367919] pci 0000:02:00.1: reg 10: [io 0xdc00-0xdc07] [ 0.367927] pci 0000:02:00.1: reg 14: [io 0xd880-0xd883] [ 0.367935] pci 0000:02:00.1: reg 18: [io 0xd800-0xd807] [ 0.367944] pci 0000:02:00.1: reg 1c: [io 0xd480-0xd483] [ 0.367952] pci 0000:02:00.1: reg 20: [io 0xd400-0xd40f] [ 0.368013] pci 0000:02:00.0: disabling ASPM on pre-1.1 PCIe device. You can enable it with 'pcie_aspm=force' [ 0.368025] pci 0000:00:1c.0: PCI bridge to [bus 02-02] [ 0.368029] pci 0000:00:1c.0: bridge window [io 0xd000-0xdfff] [ 0.368032] pci 0000:00:1c.0: bridge window [mem 0xfea00000-0xfeafffff] [ 0.368038] pci 0000:00:1c.0: bridge window [mem 0xfff00000-0x000fffff pref] (disabled) [ 0.368075] pci 0000:00:1c.1: PCI bridge to [bus 03-03] [ 0.368078] pci 0000:00:1c.1: bridge window [io 0xf000-0x0000] (disabled) [ 0.368082] pci 0000:00:1c.1: bridge window [mem 0xfff00000-0x000fffff] (disabled) [ 0.368087] pci 0000:00:1c.1: bridge window [mem 0xfff00000-0x000fffff pref] (disabled) [ 0.368151] pci 0000:04:00.0: reg 10: [io 0xe800-0xe8ff] [ 0.368171] pci 0000:04:00.0: reg 18: [mem 0xf8fff000-0xf8ffffff 64bit pref] [ 0.368185] pci 0000:04:00.0: reg 20: [mem 0xf8fe0000-0xf8feffff 64bit pref] [ 0.368193] pci 0000:04:00.0: reg 30: [mem 0xfebf0000-0xfebfffff pref] [ 0.368230] pci 0000:04:00.0: supports D1 D2 [ 0.368232] pci 0000:04:00.0: PME# supported from D0 D1 D2 D3hot D3cold [ 0.368236] pci 0000:04:00.0: PME# disabled [ 0.380021] pci 0000:00:1c.5: PCI bridge to [bus 04-04] [ 0.380026] pci 0000:00:1c.5: bridge window [io 0xe000-0xefff] [ 0.380030] pci 0000:00:1c.5: bridge window [mem 0xfeb00000-0xfebfffff] [ 0.380035] pci 0000:00:1c.5: bridge window [mem 0xf8f00000-0xf8ffffff 64bit pref] [ 0.380098] pci 0000:00:1e.0: PCI bridge to [bus 05-05] (subtractive decode) [ 0.380101] pci 0000:00:1e.0: bridge window [io 0xf000-0x0000] (disabled) [ 0.380105] pci 0000:00:1e.0: bridge window [mem 0xfff00000-0x000fffff] (disabled) [ 0.380110] pci 0000:00:1e.0: bridge window [mem 0xfff00000-0x000fffff pref] (disabled) [ 0.380113] pci 0000:00:1e.0: bridge window [io 0x0000-0x0cf7] (subtractive decode) [ 0.380115] pci 0000:00:1e.0: bridge window [io 0x0d00-0xffff] (subtractive decode) [ 0.380117] pci 0000:00:1e.0: bridge window [mem 0x000a0000-0x000bffff] (subtractive decode) [ 0.380119] pci 0000:00:1e.0: bridge window [mem 0x000d0000-0x000dffff] (subtractive decode) [ 0.380121] pci 0000:00:1e.0: bridge window [mem 0xc0000000-0xdfffffff] (subtractive decode) [ 0.380123] pci 0000:00:1e.0: bridge window [mem 0xf0000000-0xfed8ffff] (subtractive decode) [ 0.380154] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0._PRT] [ 0.380308] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.P0P1._PRT] [ 0.380443] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.P0P4._PRT] [ 0.380504] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.P0P5._PRT] [ 0.380560] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.P0P9._PRT] [ 0.385296] ACPI: PCI Interrupt Link [LNKA] (IRQs 3 4 6 7 *10 11 12 14 15) [ 0.385398] ACPI: PCI Interrupt Link [LNKB] (IRQs *5) [ 0.385494] ACPI: PCI Interrupt Link [LNKC] (IRQs 3 4 6 7 10 11 12 *14 15) [ 0.385598] ACPI: PCI Interrupt Link [LNKD] (IRQs 3 4 6 7 10 11 12 14 *15) [ 0.385696] ACPI: PCI Interrupt Link [LNKE] (IRQs 3 4 6 7 10 11 12 14 15) *0, disabled. [ 0.385796] ACPI: PCI Interrupt Link [LNKF] (IRQs 3 4 6 7 10 *11 12 14 15) [ 0.385899] ACPI: PCI Interrupt Link [LNKG] (IRQs *3 4 6 7 10 11 12 14 15) [ 0.385998] ACPI: PCI Interrupt Link [LNKH] (IRQs 3 4 6 7 *10 11 12 14 15) [ 0.386041] HEST: Table is not found! [ 0.386125] vgaarb: device added: PCI:0000:01:00.0,decodes=io+mem,owns=io+mem,locks=none [ 0.386128] vgaarb: loaded [ 0.386259] SCSI subsystem initialized [ 0.386359] libata version 3.00 loaded. [ 0.386403] usbcore: registered new interface driver usbfs [ 0.386412] usbcore: registered new interface driver hub [ 0.386432] usbcore: registered new device driver usb [ 0.386546] ACPI: WMI: Mapper loaded [ 0.386548] PCI: Using ACPI for IRQ routing [ 0.386551] PCI: pci_cache_line_size set to 64 bytes [ 0.386644] reserve RAM buffer: 000000000009fc00 - 000000000009ffff [ 0.386646] reserve RAM buffer: 00000000bff90000 - 00000000bfffffff [ 0.386726] NetLabel: Initializing [ 0.386727] NetLabel: domain hash size = 128 [ 0.386729] NetLabel: protocols = UNLABELED CIPSOv4 [ 0.386740] NetLabel: unlabeled traffic allowed by default [ 0.386767] HPET: 4 timers in total, 0 timers will be used for per-cpu timer [ 0.386772] hpet0: at MMIO 0xfed00000, IRQs 2, 8, 0, 0 [ 0.386777] hpet0: 4 comparators, 64-bit 14.318180 MHz counter [ 0.390023] Switching to clocksource tsc [ 0.398867] AppArmor: AppArmor Filesystem Enabled [ 0.398885] pnp: PnP ACPI init [ 0.398902] ACPI: bus type pnp registered [ 0.402902] pnp: PnP ACPI: found 19 devices [ 0.402904] ACPI: ACPI bus type pnp unregistered [ 0.402917] system 00:01: [mem 0xfed14000-0xfed19fff] has been reserved [ 0.402919] system 00:01: [mem 0xfed90000-0xfed93fff] has been reserved [ 0.402927] system 00:09: [io 0x04c0-0x04ff] has been reserved [ 0.402930] system 00:09: [io 0x04d0-0x04d1] has been reserved [ 0.402932] system 00:09: [io 0x0800-0x087f] has been reserved [ 0.402934] system 00:09: [io 0x0480-0x04bf] has been reserved [ 0.402937] system 00:09: [mem 0xfed1c000-0xfed1ffff] has been reserved [ 0.402939] system 00:09: [mem 0xfed20000-0xfed3ffff] has been reserved [ 0.402941] system 00:09: [mem 0xfed40000-0xfed8ffff] has been reserved [ 0.402946] system 00:0c: [mem 0xffc00000-0xffefffff] has been reserved [ 0.402951] system 00:0d: [mem 0xfec00000-0xfec00fff] could not be reserved [ 0.402953] system 00:0d: [mem 0xfee00000-0xfee00fff] has been reserved [ 0.402958] system 00:10: [io 0x0a00-0x0adf] has been reserved [ 0.402960] system 00:10: [io 0x0ae0-0x0aef] has been reserved [ 0.402967] system 00:11: [mem 0xe0000000-0xefffffff] has been reserved [ 0.402972] system 00:12: [mem 0x00000000-0x0009ffff] could not be reserved [ 0.402974] system 00:12: [mem 0x000c0000-0x000cffff] has been reserved [ 0.402977] system 00:12: [mem 0x000e0000-0x000fffff] could not be reserved [ 0.402979] system 00:12: [mem 0x00100000-0xbfffffff] could not be reserved [ 0.402981] system 00:12: [mem 0xfed90000-0xffffffff] could not be reserved [ 0.407701] pci 0000:00:1c.0: BAR 15: assigned [mem 0xf0000000-0xf01fffff 64bit pref] [ 0.407705] pci 0000:00:1c.1: BAR 14: assigned [mem 0xf0200000-0xf03fffff] [ 0.407708] pci 0000:00:1c.1: BAR 15: assigned [mem 0xf0400000-0xf05fffff 64bit pref] [ 0.407710] pci 0000:00:1c.1: BAR 13: assigned [io 0x1000-0x1fff] [ 0.407714] pci 0000:01:00.0: BAR 6: assigned [mem 0xfc000000-0xfc07ffff pref] [ 0.407718] pci 0000:00:01.0: PCI bridge to [bus 01-01] [ 0.407721] pci 0000:00:01.0: bridge window [io 0xc000-0xcfff] [ 0.407724] pci 0000:00:01.0: bridge window [mem 0xfa000000-0xfe9fffff] [ 0.407727] pci 0000:00:01.0: bridge window [mem 0xc0000000-0xdfffffff 64bit pref] [ 0.407731] pci 0000:00:1c.0: PCI bridge to [bus 02-02] [ 0.407734] pci 0000:00:1c.0: bridge window [io 0xd000-0xdfff] [ 0.407738] pci 0000:00:1c.0: bridge window [mem 0xfea00000-0xfeafffff] [ 0.407742] pci 0000:00:1c.0: bridge window [mem 0xf0000000-0xf01fffff 64bit pref] [ 0.407747] pci 0000:00:1c.1: PCI bridge to [bus 03-03] [ 0.407750] pci 0000:00:1c.1: bridge window [io 0x1000-0x1fff] [ 0.407755] pci 0000:00:1c.1: bridge window [mem 0xf0200000-0xf03fffff] [ 0.407758] pci 0000:00:1c.1: bridge window [mem 0xf0400000-0xf05fffff 64bit pref] [ 0.407765] pci 0000:00:1c.5: PCI bridge to [bus 04-04] [ 0.407767] pci 0000:00:1c.5: bridge window [io 0xe000-0xefff] [ 0.407772] pci 0000:00:1c.5: bridge window [mem 0xfeb00000-0xfebfffff] [ 0.407775] pci 0000:00:1c.5: bridge window [mem 0xf8f00000-0xf8ffffff 64bit pref] [ 0.407781] pci 0000:00:1e.0: PCI bridge to [bus 05-05] [ 0.407782] pci 0000:00:1e.0: bridge window [io disabled] [ 0.407786] pci 0000:00:1e.0: bridge window [mem disabled] [ 0.407789] pci 0000:00:1e.0: bridge window [mem pref disabled] [ 0.407803] alloc irq_desc for 16 on node -1 [ 0.407805] alloc kstat_irqs on node -1 [ 0.407811] pci 0000:00:01.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16 [ 0.407815] pci 0000:00:01.0: setting latency timer to 64 [ 0.407822] alloc irq_desc for 17 on node -1 [ 0.407823] alloc kstat_irqs on node -1 [ 0.407826] pci 0000:00:1c.0: PCI INT A -> GSI 17 (level, low) -> IRQ 17 [ 0.407830] pci 0000:00:1c.0: setting latency timer to 64 [ 0.407837] pci 0000:00:1c.1: enabling device (0104 -> 0107) [ 0.407840] pci 0000:00:1c.1: PCI INT B -> GSI 16 (level, low) -> IRQ 16 [ 0.407843] pci 0000:00:1c.1: setting latency timer to 64 [ 0.407850] pci 0000:00:1c.5: PCI INT B -> GSI 16 (level, low) -> IRQ 16 [ 0.407854] pci 0000:00:1c.5: setting latency timer to 64 [ 0.407859] pci 0000:00:1e.0: setting latency timer to 64 [ 0.407863] pci_bus 0000:00: resource 4 [io 0x0000-0x0cf7] [ 0.407865] pci_bus 0000:00: resource 5 [io 0x0d00-0xffff] [ 0.407867] pci_bus 0000:00: resource 6 [mem 0x000a0000-0x000bffff] [ 0.407869] pci_bus 0000:00: resource 7 [mem 0x000d0000-0x000dffff] [ 0.407871] pci_bus 0000:00: resource 8 [mem 0xc0000000-0xdfffffff] [ 0.407872] pci_bus 0000:00: resource 9 [mem 0xf0000000-0xfed8ffff] [ 0.407874] pci_bus 0000:01: resource 0 [io 0xc000-0xcfff] [ 0.407876] pci_bus 0000:01: resource 1 [mem 0xfa000000-0xfe9fffff] [ 0.407878] pci_bus 0000:01: resource 2 [mem 0xc0000000-0xdfffffff 64bit pref] [ 0.407880] pci_bus 0000:02: resource 0 [io 0xd000-0xdfff] [ 0.407882] pci_bus 0000:02: resource 1 [mem 0xfea00000-0xfeafffff] [ 0.407884] pci_bus 0000:02: resource 2 [mem 0xf0000000-0xf01fffff 64bit pref] [ 0.407886] pci_bus 0000:03: resource 0 [io 0x1000-0x1fff] [ 0.407888] pci_bus 0000:03: resource 1 [mem 0xf0200000-0xf03fffff] [ 0.407890] pci_bus 0000:03: resource 2 [mem 0xf0400000-0xf05fffff 64bit pref] [ 0.407892] pci_bus 0000:04: resource 0 [io 0xe000-0xefff] [ 0.407894] pci_bus 0000:04: resource 1 [mem 0xfeb00000-0xfebfffff] [ 0.407896] pci_bus 0000:04: resource 2 [mem 0xf8f00000-0xf8ffffff 64bit pref] [ 0.407898] pci_bus 0000:05: resource 4 [io 0x0000-0x0cf7] [ 0.407899] pci_bus 0000:05: resource 5 [io 0x0d00-0xffff] [ 0.407901] pci_bus 0000:05: resource 6 [mem 0x000a0000-0x000bffff] [ 0.407903] pci_bus 0000:05: resource 7 [mem 0x000d0000-0x000dffff] [ 0.407905] pci_bus 0000:05: resource 8 [mem 0xc0000000-0xdfffffff] [ 0.407907] pci_bus 0000:05: resource 9 [mem 0xf0000000-0xfed8ffff] [ 0.407944] NET: Registered protocol family 2 [ 0.408154] IP route cache hash table entries: 262144 (order: 9, 2097152 bytes) [ 0.409712] TCP established hash table entries: 524288 (order: 11, 8388608 bytes) [ 0.414801] TCP bind hash table entries: 65536 (order: 8, 1048576 bytes) [ 0.415428] TCP: Hash tables configured (established 524288 bind 65536) [ 0.415431] TCP reno registered [ 0.415446] UDP hash table entries: 4096 (order: 5, 131072 bytes) [ 0.415556] UDP-Lite hash table entries: 4096 (order: 5, 131072 bytes) [ 0.415744] NET: Registered protocol family 1 [ 0.415932] pci 0000:01:00.0: Boot video device [ 0.415944] PCI: CLS 32 bytes, default 64 [ 0.415946] PCI-DMA: Using software bounce buffering for IO (SWIOTLB) [ 0.415948] Placing 64MB software IO TLB between ffff880002122000 - ffff880006122000 [ 0.415950] software IO TLB at phys 0x2122000 - 0x6122000 [ 0.416127] Scanning for low memory corruption every 60 seconds [ 0.416255] audit: initializing netlink socket (disabled) [ 0.416265] type=2000 audit(1279298202.400:1): initialized [ 0.428539] HugeTLB registered 2 MB page size, pre-allocated 0 pages [ 0.429716] VFS: Disk quotas dquot_6.5.2 [ 0.429765] Dquot-cache hash table entries: 512 (order 0, 4096 bytes) [ 0.430246] fuse init (API version 7.14) [ 0.430314] msgmni has been set to 11940 [ 0.430490] alg: No test for stdrng (krng) [ 0.430530] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 253) [ 0.430533] io scheduler noop registered [ 0.430535] io scheduler deadline registered [ 0.430565] io scheduler cfq registered (default) [ 0.430661] pcieport 0000:00:01.0: setting latency timer to 64 [ 0.430683] alloc irq_desc for 40 on node -1 [ 0.430685] alloc kstat_irqs on node -1 [ 0.430693] pcieport 0000:00:01.0: irq 40 for MSI/MSI-X [ 0.430747] pcieport 0000:00:1c.0: setting latency timer to 64 [ 0.430775] alloc irq_desc for 41 on node -1 [ 0.430776] alloc kstat_irqs on node -1 [ 0.430782] pcieport 0000:00:1c.0: irq 41 for MSI/MSI-X [ 0.430844] pcieport 0000:00:1c.1: setting latency timer to 64 [ 0.430871] alloc irq_desc for 42 on node -1 [ 0.430873] alloc kstat_irqs on node -1 [ 0.430878] pcieport 0000:00:1c.1: irq 42 for MSI/MSI-X [ 0.430947] pcieport 0000:00:1c.5: setting latency timer to 64 [ 0.430978] alloc irq_desc for 43 on node -1 [ 0.430979] alloc kstat_irqs on node -1 [ 0.430985] pcieport 0000:00:1c.5: irq 43 for MSI/MSI-X [ 0.431063] pci_hotplug: PCI Hot Plug PCI Core version: 0.5 [ 0.431143] pciehp: PCI Express Hot Plug Controller Driver version: 0.4 [ 0.431245] input: Power Button as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0C:00/input/input0 [ 0.431249] ACPI: Power Button [PWRB] [ 0.431285] input: Power Button as /devices/LNXSYSTM:00/LNXPWRBN:00/input/input1 [ 0.431287] ACPI: Power Button [PWRF] [ 0.431523] ACPI: acpi_idle registered with cpuidle [ 0.433573] ERST: Table is not found! [ 0.434761] Linux agpgart interface v0.103 [ 0.435028] vesafb: framebuffer at 0xfb000000, mapped to 0xffffc90011800000, using 1216k, total 1216k [ 0.435031] vesafb: mode is 640x480x32, linelength=2560, pages=0 [ 0.435032] vesafb: scrolling: redraw [ 0.435034] vesafb: Truecolor: size=8:8:8:8, shift=24:16:8:0 [ 0.447641] Console: switching to colour frame buffer device 80x30 [ 0.460234] fb0: VESA VGA frame buffer device [ 0.460291] Serial: 8250/16550 driver, 4 ports, IRQ sharing enabled [ 0.460406] serial8250: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A [ 0.460705] 00:06: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A [ 0.461708] brd: module loaded [ 0.462098] loop: module loaded [ 0.462276] ata_piix 0000:00:1f.2: version 2.13 [ 0.462296] alloc irq_desc for 19 on node -1 [ 0.462298] alloc kstat_irqs on node -1 [ 0.462308] ata_piix 0000:00:1f.2: PCI INT B -> GSI 19 (level, low) -> IRQ 19 [ 0.462313] ata_piix 0000:00:1f.2: MAP [ P0 P2 P1 P3 ] [ 0.462356] ata_piix 0000:00:1f.2: setting latency timer to 64 [ 0.462441] scsi0 : ata_piix [ 0.462498] scsi1 : ata_piix [ 0.463949] ata1: SATA max UDMA/133 cmd 0xb000 ctl 0xac00 bmdma 0xa480 irq 19 [ 0.463954] ata2: SATA max UDMA/133 cmd 0xa880 ctl 0xa800 bmdma 0xa488 irq 19 [ 0.463974] ata_piix 0000:00:1f.5: PCI INT B -> GSI 19 (level, low) -> IRQ 19 [ 0.463978] ata_piix 0000:00:1f.5: MAP [ P0 -- P1 -- ] [ 0.464032] ata_piix 0000:00:1f.5: setting latency timer to 64 [ 0.464072] scsi2 : ata_piix [ 0.464116] scsi3 : ata_piix [ 0.465130] ata3: SATA max UDMA/133 cmd 0xa000 ctl 0x9c00 bmdma 0x9480 irq 19 [ 0.465134] ata4: SATA max UDMA/133 cmd 0x9880 ctl 0x9800 bmdma 0x9488 irq 19 [ 0.465181] pata_acpi 0000:02:00.1: enabling device (0000 -> 0001) [ 0.465187] pata_acpi 0000:02:00.1: PCI INT B -> GSI 17 (level, low) -> IRQ 17 [ 0.465217] pata_acpi 0000:02:00.1: setting latency timer to 64 [ 0.465230] pata_acpi 0000:02:00.1: PCI INT B disabled [ 0.465462] Fixed MDIO Bus: probed [ 0.465489] PPP generic driver version 2.4.2 [ 0.465528] tun: Universal TUN/TAP device driver, 1.6 [ 0.465530] tun: (C) 1999-2004 Max Krasnyansky [ 0.465610] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver [ 0.465627] alloc irq_desc for 18 on node -1 [ 0.465629] alloc kstat_irqs on node -1 [ 0.465635] ehci_hcd 0000:00:1a.7: PCI INT C -> GSI 18 (level, low) -> IRQ 18 [ 0.465662] ehci_hcd 0000:00:1a.7: setting latency timer to 64 [ 0.465665] ehci_hcd 0000:00:1a.7: EHCI Host Controller [ 0.465690] ehci_hcd 0000:00:1a.7: new USB bus registered, assigned bus number 1 [ 0.465718] ehci_hcd 0000:00:1a.7: debug port 1 [ 0.469598] ehci_hcd 0000:00:1a.7: cache line size of 32 is not supported [ 0.469617] ehci_hcd 0000:00:1a.7: irq 18, io mem 0xf9fffc00 [ 0.489966] ehci_hcd 0000:00:1a.7: USB 2.0 started, EHCI 1.00 [ 0.490133] hub 1-0:1.0: USB hub found [ 0.490138] hub 1-0:1.0: 6 ports detected [ 0.490213] alloc irq_desc for 23 on node -1 [ 0.490215] alloc kstat_irqs on node -1 [ 0.490223] ehci_hcd 0000:00:1d.7: PCI INT A -> GSI 23 (level, low) -> IRQ 23 [ 0.490249] ehci_hcd 0000:00:1d.7: setting latency timer to 64 [ 0.490252] ehci_hcd 0000:00:1d.7: EHCI Host Controller [ 0.490302] ehci_hcd 0000:00:1d.7: new USB bus registered, assigned bus number 2 [ 0.490329] ehci_hcd 0000:00:1d.7: debug port 1 [ 0.494208] ehci_hcd 0000:00:1d.7: cache line size of 32 is not supported [ 0.494227] ehci_hcd 0000:00:1d.7: irq 23, io mem 0xf9fff800 [ 0.509941] ehci_hcd 0000:00:1d.7: USB 2.0 started, EHCI 1.00 [ 0.510071] hub 2-0:1.0: USB hub found [ 0.510076] hub 2-0:1.0: 6 ports detected [ 0.510154] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver [ 0.510169] uhci_hcd: USB Universal Host Controller Interface driver [ 0.510240] uhci_hcd 0000:00:1a.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16 [ 0.510248] uhci_hcd 0000:00:1a.0: setting latency timer to 64 [ 0.510251] uhci_hcd 0000:00:1a.0: UHCI Host Controller [ 0.510283] uhci_hcd 0000:00:1a.0: new USB bus registered, assigned bus number 3 [ 0.510322] uhci_hcd 0000:00:1a.0: irq 16, io base 0x0000bc00 [ 0.510415] hub 3-0:1.0: USB hub found [ 0.510419] hub 3-0:1.0: 2 ports detected [ 0.510466] alloc irq_desc for 21 on node -1 [ 0.510468] alloc kstat_irqs on node -1 [ 0.510474] uhci_hcd 0000:00:1a.1: PCI INT B -> GSI 21 (level, low) -> IRQ 21 [ 0.510479] uhci_hcd 0000:00:1a.1: setting latency timer to 64 [ 0.510482] uhci_hcd 0000:00:1a.1: UHCI Host Controller [ 0.510506] uhci_hcd 0000:00:1a.1: new USB bus registered, assigned bus number 4 [ 0.510535] uhci_hcd 0000:00:1a.1: irq 21, io base 0x0000b880 [ 0.510627] hub 4-0:1.0: USB hub found [ 0.510630] hub 4-0:1.0: 2 ports detected [ 0.510676] uhci_hcd 0000:00:1a.2: PCI INT D -> GSI 19 (level, low) -> IRQ 19 [ 0.510681] uhci_hcd 0000:00:1a.2: setting latency timer to 64 [ 0.510683] uhci_hcd 0000:00:1a.2: UHCI Host Controller [ 0.510707] uhci_hcd 0000:00:1a.2: new USB bus registered, assigned bus number 5 [ 0.510728] uhci_hcd 0000:00:1a.2: irq 19, io base 0x0000b800 [ 0.510818] hub 5-0:1.0: USB hub found [ 0.510821] hub 5-0:1.0: 2 ports detected [ 0.510866] uhci_hcd 0000:00:1d.0: PCI INT A -> GSI 23 (level, low) -> IRQ 23 [ 0.510871] uhci_hcd 0000:00:1d.0: setting latency timer to 64 [ 0.510874] uhci_hcd 0000:00:1d.0: UHCI Host Controller [ 0.510906] uhci_hcd 0000:00:1d.0: new USB bus registered, assigned bus number 6 [ 0.510927] uhci_hcd 0000:00:1d.0: irq 23, io base 0x0000b480 [ 0.511023] hub 6-0:1.0: USB hub found [ 0.511026] hub 6-0:1.0: 2 ports detected [ 0.511069] uhci_hcd 0000:00:1d.1: PCI INT B -> GSI 19 (level, low) -> IRQ 19 [ 0.511074] uhci_hcd 0000:00:1d.1: setting latency timer to 64 [ 0.511077] uhci_hcd 0000:00:1d.1: UHCI Host Controller [ 0.511107] uhci_hcd 0000:00:1d.1: new USB bus registered, assigned bus number 7 [ 0.511127] uhci_hcd 0000:00:1d.1: irq 19, io base 0x0000b400 [ 0.511213] hub 7-0:1.0: USB hub found [ 0.511216] hub 7-0:1.0: 2 ports detected [ 0.511259] uhci_hcd 0000:00:1d.2: PCI INT C -> GSI 18 (level, low) -> IRQ 18 [ 0.511263] uhci_hcd 0000:00:1d.2: setting latency timer to 64 [ 0.511266] uhci_hcd 0000:00:1d.2: UHCI Host Controller [ 0.511299] uhci_hcd 0000:00:1d.2: new USB bus registered, assigned bus number 8 [ 0.511320] uhci_hcd 0000:00:1d.2: irq 18, io base 0x0000b080 [ 0.511409] hub 8-0:1.0: USB hub found [ 0.511412] hub 8-0:1.0: 2 ports detected [ 0.511523] PNP: PS/2 Controller [PNP0303:PS2K,PNP0f03:PS2M] at 0x60,0x64 irq 1,12 [ 0.513000] Freeing initrd memory: 10576k freed [ 0.513733] serio: i8042 KBD port at 0x60,0x64 irq 1 [ 0.513763] serio: i8042 AUX port at 0x60,0x64 irq 12 [ 0.514072] mice: PS/2 mouse device common for all mice [ 0.514224] rtc_cmos 00:03: RTC can wake from S4 [ 0.514304] rtc_cmos 00:03: rtc core: registered rtc_cmos as rtc0 [ 0.514340] rtc0: alarms up to one month, y3k, 114 bytes nvram, hpet irqs [ 0.514506] device-mapper: uevent: version 1.0.3 [ 0.514661] device-mapper: ioctl: 4.17.0-ioctl (2010-03-05) initialised: dm-devel@redhat.com [ 0.514742] device-mapper: multipath: version 1.1.1 loaded [ 0.514747] device-mapper: multipath round-robin: version 1.0.0 loaded [ 0.514928] cpuidle: using governor ladder [ 0.514930] cpuidle: using governor menu [ 0.515243] TCP cubic registered [ 0.515366] NET: Registered protocol family 10 [ 0.515790] lo: Disabled Privacy Extensions [ 0.515981] NET: Registered protocol family 17 [ 0.516895] PM: Resume from disk failed. [ 0.516921] registered taskstats version 1 [ 0.517358] Magic number: 2:486:641 [ 0.517570] rtc_cmos 00:03: setting system clock to 2010-07-16 16:36:42 UTC (1279298202) [ 0.517574] BIOS EDD facility v0.16 2004-Jun-25, 0 devices found [ 0.517576] EDD information not available. [ 0.532103] input: AT Translated Set 2 keyboard as /devices/platform/i8042/serio0/input/input2 [ 0.809848] usb 1-3: new high speed USB device using ehci_hcd and address 2 [ 0.830688] ata4: SATA link down (SStatus 0 SControl 300) [ 0.841386] ata3: SATA link down (SStatus 0 SControl 300) [ 0.960640] hub 1-3:1.0: USB hub found [ 0.960723] hub 1-3:1.0: 7 ports detected [ 1.250128] usb 1-3.3: new low speed USB device using ehci_hcd and address 3 [ 1.330067] ata2.00: SATA link up 3.0 Gbps (SStatus 123 SControl 300) [ 1.330083] ata2.01: SATA link up 3.0 Gbps (SStatus 123 SControl 300) [ 1.330246] ata1.00: SATA link up 3.0 Gbps (SStatus 123 SControl 300) [ 1.330257] ata1.01: SATA link up 1.5 Gbps (SStatus 113 SControl 300) [ 1.372123] ata1.00: ATA-8: WDC WD5000AAKS-00A7B2, 01.03B01, max UDMA/133 [ 1.372128] ata1.00: 976773168 sectors, multi 16: LBA48 NCQ (depth 0/32) [ 1.372165] ata1.01: ATAPI: TSSTcorp CDDVDW SH-S223L, SB01, max UDMA/100 [ 1.385996] ata2.00: ATA-7: WDC WD5000KS-00MNB0, 07.02E07, max UDMA/133 [ 1.386002] ata2.00: 976773168 sectors, multi 16: LBA48 NCQ (depth 0/32) [ 1.386175] ata2.01: ATA-8: WDC WD1002FAEX-00Z3A0, 05.01D05, max UDMA/133 [ 1.386178] ata2.01: 1953525168 sectors, multi 16: LBA48 NCQ (depth 0/32) [ 1.411113] ata2.00: configured for UDMA/133 [ 1.412157] ata1.00: configured for UDMA/133 [ 1.431908] ata2.01: configured for UDMA/133 [ 1.451410] ata1.01: configured for UDMA/100 [ 1.451908] scsi 0:0:0:0: Direct-Access ATA WDC WD5000AAKS-0 01.0 PQ: 0 ANSI: 5 [ 1.452021] sd 0:0:0:0: [sda] 976773168 512-byte logical blocks: (500 GB/465 GiB) [ 1.452026] sd 0:0:0:0: Attached scsi generic sg0 type 0 [ 1.452065] sd 0:0:0:0: [sda] Write Protect is off [ 1.452068] sd 0:0:0:0: [sda] Mode Sense: 00 3a 00 00 [ 1.452461] sd 0:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA [ 1.452680] scsi 0:0:1:0: CD-ROM TSSTcorp CDDVDW SH-S223L SB01 PQ: 0 ANSI: 5 [ 1.454109] sda: sda1 [ 1.468001] sr0: scsi3-mmc drive: 48x/48x writer dvd-ram cd/rw xa/form2 cdda tray [ 1.468006] Uniform CD-ROM driver Revision: 3.20 [ 1.468131] sr 0:0:1:0: Attached scsi CD-ROM sr0 [ 1.468136] sd 0:0:0:0: [sda] Attached SCSI disk [ 1.468181] sr 0:0:1:0: Attached scsi generic sg1 type 5 [ 1.468263] scsi 1:0:0:0: Direct-Access ATA WDC WD5000KS-00M 07.0 PQ: 0 ANSI: 5 [ 1.468340] sd 1:0:0:0: Attached scsi generic sg2 type 0 [ 1.468407] scsi 1:0:1:0: Direct-Access ATA WDC WD1002FAEX-0 05.0 PQ: 0 ANSI: 5 [ 1.468410] sd 1:0:0:0: [sdb] 976773168 512-byte logical blocks: (500 GB/465 GiB) [ 1.468453] sd 1:0:0:0: [sdb] Write Protect is off [ 1.468455] sd 1:0:0:0: [sdb] Mode Sense: 00 3a 00 00 [ 1.468476] sd 1:0:0:0: [sdb] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA [ 1.468487] sd 1:0:1:0: Attached scsi generic sg3 type 0 [ 1.468557] sd 1:0:1:0: [sdc] 1953525168 512-byte logical blocks: (1.00 TB/931 GiB) [ 1.468593] sdb: [ 1.468602] sd 1:0:1:0: [sdc] Write Protect is off [ 1.468605] sd 1:0:1:0: [sdc] Mode Sense: 00 3a 00 00 [ 1.476720] sd 1:0:1:0: [sdc] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA [ 1.476726] sdb1 < sdb5 sdb6 > [ 1.502882] sdc: sdc1 [ 1.518143] sd 1:0:0:0: [sdb] Attached SCSI disk [ 1.518247] sd 1:0:1:0: [sdc] Attached SCSI disk [ 1.518266] Freeing unused kernel memory: 904k freed [ 1.518593] Write protecting the kernel read-only data: 10240k [ 1.518742] Freeing unused kernel memory: 416k freed [ 1.518984] Freeing unused kernel memory: 1604k freed [ 1.531553] udev: starting version 151 [ 1.576076] r8169 Gigabit Ethernet driver 2.3LK-NAPI loaded [ 1.576098] r8169 0000:04:00.0: PCI INT A -> GSI 17 (level, low) -> IRQ 17 [ 1.576145] r8169 0000:04:00.0: setting latency timer to 64 [ 1.576186] alloc irq_desc for 44 on node -1 [ 1.576188] alloc kstat_irqs on node -1 [ 1.576202] r8169 0000:04:00.0: irq 44 for MSI/MSI-X [ 1.576604] r8169 0000:04:00.0: eth0: RTL8168c/8111c at 0xffffc90000c74000, 00:21:85:1d:72:73, XID 1c4000c0 IRQ 44 [ 1.592399] ahci 0000:02:00.0: version 3.0 [ 1.592421] ahci 0000:02:00.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16 [ 1.613163] ahci 0000:02:00.0: AHCI 0001.0000 32 slots 2 ports 3 Gbps 0x3 impl SATA mode [ 1.613167] ahci 0000:02:00.0: flags: 64bit ncq pm led clo pmp pio slum part [ 1.613173] ahci 0000:02:00.0: setting latency timer to 64 [ 1.628368] scsi4 : ahci [ 1.638474] Floppy drive(s): fd0 is 1.44M [ 1.642623] scsi5 : ahci [ 1.642785] ata5: SATA max UDMA/133 abar m8192@0xfeafe000 port 0xfeafe100 irq 16 [ 1.642789] ata6: SATA max UDMA/133 abar m8192@0xfeafe000 port 0xfeafe180 irq 16 [ 1.642945] pata_jmicron 0000:02:00.1: PCI INT B -> GSI 17 (level, low) -> IRQ 17 [ 1.642978] pata_jmicron 0000:02:00.1: setting latency timer to 64 [ 1.652512] scsi6 : pata_jmicron [ 1.655028] FDC 0 is a post-1991 82077 [ 1.657657] scsi7 : pata_jmicron [ 1.658207] ata7: PATA max UDMA/100 cmd 0xdc00 ctl 0xd880 bmdma 0xd400 irq 17 [ 1.658210] ata8: PATA max UDMA/100 cmd 0xd800 ctl 0xd480 bmdma 0xd408 irq 17 [ 1.857504] ata7.00: ATA-7: ST3500630A, 3.AAE, max UDMA/100 [ 1.857510] ata7.00: 976773168 sectors, multi 16: LBA48 [ 1.917216] EXT4-fs (sdb5): mounted filesystem with ordered data mode. Opts: (null) [ 1.940744] ata7.00: configured for UDMA/100 [ 1.990047] ata6: SATA link down (SStatus 0 SControl 300) [ 1.990083] ata5: SATA link down (SStatus 0 SControl 300) [ 2.010159] scsi 6:0:0:0: Direct-Access ATA ST3500630A 3.AA PQ: 0 ANSI: 5 [ 2.010276] sd 6:0:0:0: [sdd] 976773168 512-byte logical blocks: (500 GB/465 GiB) [ 2.010306] sd 6:0:0:0: Attached scsi generic sg4 type 0 [ 2.010322] sd 6:0:0:0: [sdd] Write Protect is off [ 2.010325] sd 6:0:0:0: [sdd] Mode Sense: 00 3a 00 00 [ 2.010353] sd 6:0:0:0: [sdd] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA [ 2.010490] sdd: sdd1 [ 2.030447] sd 6:0:0:0: [sdd] Attached SCSI disk [ 14.020566] udev: starting version 151 [ 14.041577] Adding 9765884k swap on /dev/sdb6. Priority:-1 extents:1 across:9765884k [ 14.097692] lp: driver loaded but no devices found [ 14.282553] parport_pc 00:08: reported by Plug and Play ACPI [ 14.282598] parport0: PC-style at 0x378, irq 7 [PCSPP,TRISTATE] [ 14.298141] [drm] Initialized drm 1.1.0 20060810 [ 14.313313] ppdev: user-space parallel port driver [ 14.333836] type=1400 audit(1279312616.306:2): operation="profile_load" pid=684 name="/sbin/dhclient3" pid=684 comm="apparmor_parser" [ 14.334427] type=1400 audit(1279312616.306:3): operation="profile_load" pid=684 name="/usr/lib/NetworkManager/nm-dhcp-client.action" pid=684 comm="apparmor_parser" [ 14.334735] type=1400 audit(1279312616.306:4): operation="profile_load" pid=684 name="/usr/lib/connman/scripts/dhclient-script" pid=684 comm="apparmor_parser" [ 14.361485] lp0: using parport0 (interrupt-driven). [ 14.382469] nouveau 0000:01:00.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16 [ 14.382475] nouveau 0000:01:00.0: setting latency timer to 64 [ 14.399071] [drm] nouveau 0000:01:00.0: Detected an NV50 generation card (0x096d80c1) [ 14.399076] checking generic (fb000000 130000) vs hw (c0000000 20000000) [ 14.399078] checking generic (fb000000 130000) vs hw (fa000000 2000000) [ 14.399080] fb: conflicting fb hw usage nouveaufb vs VESA VGA - removing generic driver [ 14.399591] Console: switching to colour dummy device 80x25 [ 14.407145] [drm] nouveau 0000:01:00.0: Attempting to load BIOS image from ACPI [ 14.407149] [drm] nouveau 0000:01:00.0: ... BIOS signature not found [ 14.407150] [drm] nouveau 0000:01:00.0: Attempting to load BIOS image from PRAMIN [ 14.415927] alloc irq_desc for 22 on node -1 [ 14.415930] alloc kstat_irqs on node -1 [ 14.415940] HDA Intel 0000:00:1b.0: PCI INT A -> GSI 22 (level, low) -> IRQ 22 [ 14.416009] alloc irq_desc for 45 on node -1 [ 14.416011] alloc kstat_irqs on node -1 [ 14.416025] HDA Intel 0000:00:1b.0: irq 45 for MSI/MSI-X [ 14.416066] HDA Intel 0000:00:1b.0: setting latency timer to 64 [ 14.456456] [drm] nouveau 0000:01:00.0: ... appears to be valid [ 14.456461] [drm] nouveau 0000:01:00.0: BIT BIOS found [ 14.456463] [drm] nouveau 0000:01:00.0: Bios version 62.94.71.00 [ 14.456467] [drm] nouveau 0000:01:00.0: TMDS table revision 2.0 not currently supported [ 14.456469] [drm] nouveau 0000:01:00.0: Found Display Configuration Block version 4.0 [ 14.456472] [drm] nouveau 0000:01:00.0: Raw DCB entry 0: 02000300 00000028 [ 14.456474] [drm] nouveau 0000:01:00.0: Raw DCB entry 1: 01000302 00020030 [ 14.456476] [drm] nouveau 0000:01:00.0: Raw DCB entry 2: 02011312 00020010 [ 14.456478] [drm] nouveau 0000:01:00.0: Raw DCB entry 3: 04022320 00000028 [ 14.456481] [drm] nouveau 0000:01:00.0: DCB connector table: VHER 0x40 5 16 4 [ 14.456483] [drm] nouveau 0000:01:00.0: 0: 0x00001030: type 0x30 idx 0 tag 0x07 [ 14.456486] [drm] nouveau 0000:01:00.0: 1: 0x00002161: type 0x61 idx 1 tag 0x08 [ 14.456488] [drm] nouveau 0000:01:00.0: 2: 0x00000200: type 0x00 idx 2 tag 0xff [ 14.456497] [drm] nouveau 0000:01:00.0: Parsing VBIOS init table 0 at offset 0xD451 [ 14.500824] hda_codec: ALC888: BIOS auto-probing. [ 14.510810] BUG: unable to handle kernel NULL pointer dereference at (null) [ 14.510820] IP: [] __mutex_lock_slowpath+0xd2/0x190 [ 14.510829] PGD 1b4837067 PUD 1b4836067 PMD 0 [ 14.510834] Oops: 0002 [#1] SMP [ 14.510837] last sysfs file: /sys/module/snd_hda_codec/initstate [ 14.510842] CPU 0 [ 14.510843] Modules linked in: snd_hda_codec_realtek snd_hda_intel(+) snd_hda_codec snd_hwdep snd_pcm snd_seq_midi nouveau(+) snd_rawmidi snd_seq_midi_event snd_seq ttm snd_timer snd_seq_device drm_kms_helper ppdev parport_pc snd psmouse serio_raw drm i2c_algo_bit soundcore intel_agp snd_page_alloc lp parport hid floppy pata_jmicron ahci libahci r8169 mii [ 14.510873] [ 14.510876] Pid: 342, comm: plymouthd Not tainted 2.6.35-8-generic #13-Ubuntu P45 Neo3 (MS-7514)/MS-7514 [ 14.510880] RIP: 0010:[] [] __mutex_lock_slowpath+0xd2/0x190 [ 14.510886] RSP: 0018:ffff8801b87d9d98 EFLAGS: 00010246 [ 14.510889] RAX: 0000000000000000 RBX: ffff8801b4ab4418 RCX: 0000000000000006 [ 14.510892] RDX: ffff8801b87d9da8 RSI: 0000000000000000 RDI: ffff8801b4ab441c [ 14.510896] RBP: ffff8801b87d9df8 R08: 0000000000000156 R09: 000000000000e200 [ 14.510899] R10: fffffffffffffff0 R11: 0000000000000246 R12: ffff8801b49644a0 [ 14.510903] R13: ffff8801b4ab441c R14: 00000000ffffffff R15: ffff8801b4ab4420 [ 14.510907] FS: 00007f92f737b700(0000) GS:ffff880001e00000(0000) knlGS:0000000000000000 [ 14.510912] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 [ 14.510915] CR2: 0000000000000000 CR3: 00000001b58a8000 CR4: 00000000000406f0 [ 14.510919] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 [ 14.510922] DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400 [ 14.510926] Process plymouthd (pid: 342, threadinfo ffff8801b87d8000, task ffff8801b49644a0) [ 14.510931] Stack: [ 14.510932] ffff880100000000 000000000000e200 ffff8801b4ab4420 0000000000000000 [ 14.510938] <0> 0000000000000000 ffffffffa00a7240 ffffffffa00a4f60 ffff8801b4ab4418 [ 14.510944] <0> ffff8801aab95840 ffff8801b4ab4418 ffff8801b4ab4320 ffff8801aab958e8 [ 14.510950] Call Trace: [ 14.510970] [] ? drm_gem_object_release_handle+0x0/0x40 [drm] [ 14.510980] [] ? drm_version+0x0/0xb0 [drm] [ 14.510984] [] mutex_lock+0x2b/0x50 [ 14.510996] [] drm_fb_release+0x2f/0xb0 [drm] [ 14.511005] [] drm_release+0x468/0x550 [drm] [ 14.511010] [] __fput+0xf5/0x210 [ 14.511014] [] fput+0x25/0x30 [ 14.511018] [] filp_close+0x5d/0x90 [ 14.511022] [] sys_close+0xb7/0x120 [ 14.511028] [] system_call_fastpath+0x16/0x1b [ 14.511031] Code: 00 4c 8d 6b 04 4c 8d 7b 08 41 be ff ff ff ff 4c 89 ef e8 22 14 00 00 48 8b 43 10 48 8d 55 b0 48 89 53 10 4c 89 7d b0 48 89 45 b8 <48> 89 10 44 89 f0 4c 89 65 c0 87 03 83 f8 01 75 24 eb 2c 0f 1f [ 14.511066] RIP [] __mutex_lock_slowpath+0xd2/0x190 [ 14.511071] RSP [ 14.511073] CR2: 0000000000000000 [ 14.511115] ---[ end trace e18bfc47b3114fe7 ]--- [ 14.550162] [drm] nouveau 0000:01:00.0: Parsing VBIOS init table 1 at offset 0xD8B7 [ 14.590079] [drm] nouveau 0000:01:00.0: Parsing VBIOS init table 2 at offset 0xE907 [ 14.590095] [drm] nouveau 0000:01:00.0: Parsing VBIOS init table 3 at offset 0xEA28 [ 14.592112] usbcore: registered new interface driver hiddev [ 14.610096] [drm] nouveau 0000:01:00.0: Parsing VBIOS init table 4 at offset 0xED4F [ 14.610104] [drm] nouveau 0000:01:00.0: Parsing VBIOS init table at offset 0xEDB4 [ 14.641334] [drm] nouveau 0000:01:00.0: 0xEDB4: Condition still not met after 20ms, skipping following opcodes [ 14.641357] [drm] nouveau 0000:01:00.0: 0xC314: parsing output script 0 [ 14.641370] [drm] nouveau 0000:01:00.0: 0xC314: parsing output script 0 [ 14.641388] [drm] nouveau 0000:01:00.0: Detected 512MiB VRAM [ 14.712087] [TTM] Zone kernel: Available graphics memory: 3063634 kiB. [ 14.712092] [TTM] Zone dma32: Available graphics memory: 2097152 kiB. [ 14.712096] [TTM] Initializing pool allocator. [ 14.735678] [drm] nouveau 0000:01:00.0: 512 MiB GART (aperture) [ 14.736473] mtrr: type mismatch for c0000000,20000000 old: write-back new: write-combining [ 14.736736] [drm] nouveau 0000:01:00.0: Allocating FIFO number 1 [ 14.742250] [drm] nouveau 0000:01:00.0: nouveau_channel_alloc: initialised FIFO 1 [ 14.743059] [drm] nouveau 0000:01:00.0: Detected a DAC output [ 14.743066] [drm] nouveau 0000:01:00.0: Detected a TMDS output [ 14.743069] [drm] nouveau 0000:01:00.0: Detected a TMDS output [ 14.743072] [drm] nouveau 0000:01:00.0: Detected a DAC output [ 14.743076] [drm] nouveau 0000:01:00.0: Detected a DVI-I connector [ 14.743153] [drm] nouveau 0000:01:00.0: Detected a HDMI connector [ 14.743228] [drm] nouveau 0000:01:00.0: Detected a VGA connector [ 14.746583] EXT4-fs (sdb5): re-mounted. Opts: errors=remount-ro [ 14.926470] [drm] nouveau 0000:01:00.0: allocated 1280x1024 fb: 0x40250000, bo ffff8801aa34f400 [ 14.926950] Console: switching to colour frame buffer device 160x64 [ 14.929239] fb0: nouveaufb frame buffer device [ 14.929251] drm: registered panic notifier [ 14.929460] Slow work thread pool: Starting up [ 14.929491] [drm] nouveau 0000:01:00.0: 0x11B5: parsing clock script 0 [ 14.929552] Slow work thread pool: Ready [ 14.929562] [drm] Initialized nouveau 0.0.16 20090420 for 0000:01:00.0 on minor 0 [ 14.931805] vga16fb: initializing [ 14.931820] vga16fb: mapped to 0xffff8800000a0000 [ 14.931927] fb1: VGA16 VGA frame buffer device [ 14.998001] EXT4-fs (sdc1): mounted filesystem with ordered data mode. Opts: (null) [ 15.004225] input: ImExPS/2 Generic Explorer Mouse as /devices/platform/i8042/serio1/input/input3 [ 15.058243] EXT4-fs (sdd1): mounted filesystem with ordered data mode. Opts: (null) [ 15.128765] generic-usb 0003:051D:0002.0001: hiddev96,hidraw0: USB HID v1.10 Device [American Power Conversion Back-UPS XS 1200 FW:8.g1 .D USB FW:g1 ] on usb-0000:00:1a.7-3.3/input0 [ 15.128811] usbcore: registered new interface driver usbhid [ 15.128819] usbhid: USB HID core driver [ 15.484298] type=1400 audit(1279312617.456:5): operation="profile_load" pid=945 name="/usr/share/gdm/guest-session/Xsession" pid=945 comm="apparmor_parser" [ 15.485772] type=1400 audit(1279312617.456:6): operation="profile_replace" pid=946 name="/sbin/dhclient3" pid=946 comm="apparmor_parser" [ 15.486327] type=1400 audit(1279312617.456:7): operation="profile_replace" pid=946 name="/usr/lib/NetworkManager/nm-dhcp-client.action" pid=946 comm="apparmor_parser" [ 15.486630] type=1400 audit(1279312617.456:8): operation="profile_replace" pid=946 name="/usr/lib/connman/scripts/dhclient-script" pid=946 comm="apparmor_parser" [ 15.489342] type=1400 audit(1279312617.456:9): operation="profile_load" pid=947 name="/usr/bin/evince" pid=947 comm="apparmor_parser" [ 15.496635] type=1400 audit(1279312617.466:10): operation="profile_load" pid=947 name="/usr/bin/evince-previewer" pid=947 comm="apparmor_parser" [ 15.501121] type=1400 audit(1279312617.476:11): operation="profile_load" pid=947 name="/usr/bin/evince-thumbnailer" pid=947 comm="apparmor_parser" [ 15.507766] r8169 0000:04:00.0: eth0: link up [ 15.507786] r8169 0000:04:00.0: eth0: link up Bug: 611056 [ 0.000000] Initializing cgroup subsys cpuset [ 0.000000] Initializing cgroup subsys cpu [ 0.000000] Linux version 2.6.35-11-generic (buildd@yellow) (gcc version 4.4.5 20100723 (prerelease) (Ubuntu/Linaro 4.4.4-7ubuntu3) ) #16-Ubuntu SMP Sat Jul 24 21:37:44 UTC 2010 (Ubuntu 2.6.35-11.16-generic 2.6.35-rc5) [ 0.000000] Command line: BOOT_IMAGE=/vmlinuz-2.6.35-11-generic root=/dev/mapper/fornost-root ro quiet [ 0.000000] BIOS-provided physical RAM map: [ 0.000000] BIOS-e820: 0000000000000000 - 000000000009ec00 (usable) [ 0.000000] BIOS-e820: 000000000009ec00 - 00000000000a0000 (reserved) [ 0.000000] BIOS-e820: 00000000000e4c00 - 0000000000100000 (reserved) [ 0.000000] BIOS-e820: 0000000000100000 - 00000000bf780000 (usable) [ 0.000000] BIOS-e820: 00000000bf780000 - 00000000bf798000 (ACPI data) [ 0.000000] BIOS-e820: 00000000bf798000 - 00000000bf7dc000 (ACPI NVS) [ 0.000000] BIOS-e820: 00000000bf7dc000 - 00000000c0000000 (reserved) [ 0.000000] BIOS-e820: 00000000fee00000 - 00000000fee01000 (reserved) [ 0.000000] BIOS-e820: 00000000ffe00000 - 0000000100000000 (reserved) [ 0.000000] BIOS-e820: 0000000100000000 - 00000001c0000000 (usable) [ 0.000000] NX (Execute Disable) protection: active [ 0.000000] DMI 2.5 present. [ 0.000000] AMI BIOS detected: BIOS may corrupt low RAM, working around it. [ 0.000000] e820 update range: 0000000000000000 - 0000000000010000 (usable) ==> (reserved) [ 0.000000] e820 update range: 0000000000000000 - 0000000000001000 (usable) ==> (reserved) [ 0.000000] e820 remove range: 00000000000a0000 - 0000000000100000 (usable) [ 0.000000] No AGP bridge found [ 0.000000] last_pfn = 0x1c0000 max_arch_pfn = 0x400000000 [ 0.000000] MTRR default type: uncachable [ 0.000000] MTRR fixed ranges enabled: [ 0.000000] 00000-9FFFF write-back [ 0.000000] A0000-BFFFF uncachable [ 0.000000] C0000-E3FFF write-protect [ 0.000000] E4000-EBFFF write-through [ 0.000000] EC000-FFFFF write-protect [ 0.000000] MTRR variable ranges enabled: [ 0.000000] 0 base 1C0000000 mask FC0000000 uncachable [ 0.000000] 1 base 000000000 mask E00000000 write-back [ 0.000000] 2 base 0C0000000 mask FC0000000 uncachable [ 0.000000] 3 base 0BF800000 mask FFF800000 uncachable [ 0.000000] 4 disabled [ 0.000000] 5 disabled [ 0.000000] 6 disabled [ 0.000000] 7 disabled [ 0.000000] x86 PAT enabled: cpu 0, old 0x7040600070406, new 0x7010600070106 [ 0.000000] e820 update range: 00000000bf800000 - 0000000100000000 (usable) ==> (reserved) [ 0.000000] last_pfn = 0xbf780 max_arch_pfn = 0x400000000 [ 0.000000] Scanning 0 areas for low memory corruption [ 0.000000] modified physical RAM map: [ 0.000000] modified: 0000000000000000 - 0000000000010000 (reserved) [ 0.000000] modified: 0000000000010000 - 000000000009ec00 (usable) [ 0.000000] modified: 000000000009ec00 - 00000000000a0000 (reserved) [ 0.000000] modified: 00000000000e4c00 - 0000000000100000 (reserved) [ 0.000000] modified: 0000000000100000 - 00000000bf780000 (usable) [ 0.000000] modified: 00000000bf780000 - 00000000bf798000 (ACPI data) [ 0.000000] modified: 00000000bf798000 - 00000000bf7dc000 (ACPI NVS) [ 0.000000] modified: 00000000bf7dc000 - 00000000c0000000 (reserved) [ 0.000000] modified: 00000000fee00000 - 00000000fee01000 (reserved) [ 0.000000] modified: 00000000ffe00000 - 0000000100000000 (reserved) [ 0.000000] modified: 0000000100000000 - 00000001c0000000 (usable) [ 0.000000] initial memory mapped : 0 - 20000000 [ 0.000000] found SMP MP-table at [ffff8800000ff780] ff780 [ 0.000000] init_memory_mapping: 0000000000000000-00000000bf780000 [ 0.000000] 0000000000 - 00bf600000 page 2M [ 0.000000] 00bf600000 - 00bf780000 page 4k [ 0.000000] kernel direct mapping tables up to bf780000 @ 16000-1b000 [ 0.000000] init_memory_mapping: 0000000100000000-00000001c0000000 [ 0.000000] 0100000000 - 01c0000000 page 2M [ 0.000000] kernel direct mapping tables up to 1c0000000 @ 19000-21000 [ 0.000000] RAMDISK: 374a9000 - 37ff0000 [ 0.000000] ACPI: RSDP 00000000000fb250 00024 (v02 ACPIAM) [ 0.000000] ACPI: XSDT 00000000bf780100 00064 (v01 042409 XSDT1739 20090424 MSFT 00000097) [ 0.000000] ACPI: FACP 00000000bf780290 000F4 (v03 042409 FACP1739 20090424 MSFT 00000097) [ 0.000000] ACPI: DSDT 00000000bf7804b0 0B5EC (v01 A1265 A1265001 00000001 INTL 20060113) [ 0.000000] ACPI: FACS 00000000bf798000 00040 [ 0.000000] ACPI: APIC 00000000bf780390 000D8 (v01 042409 APIC1739 20090424 MSFT 00000097) [ 0.000000] ACPI: MCFG 00000000bf780470 0003C (v01 042409 OEMMCFG 20090424 MSFT 00000097) [ 0.000000] ACPI: OEMB 00000000bf798040 00072 (v01 042409 OEMB1739 20090424 MSFT 00000097) [ 0.000000] ACPI: HPET 00000000bf78f4b0 00038 (v01 042409 OEMHPET 20090424 MSFT 00000097) [ 0.000000] ACPI: DMAR 00000000bf7980c0 00138 (v01 AMI OEMDMAR 00000001 MSFT 00000097) [ 0.000000] ACPI: OSFR 00000000bf78f4f0 000B0 (v01 042409 OEMOSFR 20090424 MSFT 00000097) [ 0.000000] ACPI: TCPA 00000000bf78f5a0 00032 (v01 042409 TBLOEMID 00000001 MSFT 00000097) [ 0.000000] ACPI: Local APIC address 0xfee00000 [ 0.000000] No NUMA configuration found [ 0.000000] Faking a node at 0000000000000000-00000001c0000000 [ 0.000000] Initmem setup node 0 0000000000000000-00000001c0000000 [ 0.000000] NODE_DATA [0000000100000000 - 0000000100004fff] [ 0.000000] [ffffea0000000000-ffffea00061fffff] PMD -> [ffff880100200000-ffff8801055fffff] on node 0 [ 0.000000] Zone PFN ranges: [ 0.000000] DMA 0x00000010 -> 0x00001000 [ 0.000000] DMA32 0x00001000 -> 0x00100000 [ 0.000000] Normal 0x00100000 -> 0x001c0000 [ 0.000000] Movable zone start PFN for each node [ 0.000000] early_node_map[3] active PFN ranges [ 0.000000] 0: 0x00000010 -> 0x0000009e [ 0.000000] 0: 0x00000100 -> 0x000bf780 [ 0.000000] 0: 0x00100000 -> 0x001c0000 [ 0.000000] On node 0 totalpages: 1570574 [ 0.000000] DMA zone: 56 pages used for memmap [ 0.000000] DMA zone: 0 pages reserved [ 0.000000] DMA zone: 3926 pages, LIFO batch:0 [ 0.000000] DMA32 zone: 14280 pages used for memmap [ 0.000000] DMA32 zone: 765880 pages, LIFO batch:31 [ 0.000000] Normal zone: 10752 pages used for memmap [ 0.000000] Normal zone: 775680 pages, LIFO batch:31 [ 0.000000] ACPI: PM-Timer IO Port: 0x808 [ 0.000000] ACPI: Local APIC address 0xfee00000 [ 0.000000] ACPI: LAPIC (acpi_id[0x01] lapic_id[0x00] enabled) [ 0.000000] ACPI: LAPIC (acpi_id[0x02] lapic_id[0x02] enabled) [ 0.000000] ACPI: LAPIC (acpi_id[0x03] lapic_id[0x04] enabled) [ 0.000000] ACPI: LAPIC (acpi_id[0x04] lapic_id[0x06] enabled) [ 0.000000] ACPI: LAPIC (acpi_id[0x05] lapic_id[0x01] enabled) [ 0.000000] ACPI: LAPIC (acpi_id[0x06] lapic_id[0x03] enabled) [ 0.000000] ACPI: LAPIC (acpi_id[0x07] lapic_id[0x05] enabled) [ 0.000000] ACPI: LAPIC (acpi_id[0x08] lapic_id[0x07] enabled) [ 0.000000] ACPI: LAPIC (acpi_id[0x09] lapic_id[0x88] disabled) [ 0.000000] ACPI: LAPIC (acpi_id[0x0a] lapic_id[0x89] disabled) [ 0.000000] ACPI: LAPIC (acpi_id[0x0b] lapic_id[0x8a] disabled) [ 0.000000] ACPI: LAPIC (acpi_id[0x0c] lapic_id[0x8b] disabled) [ 0.000000] ACPI: LAPIC (acpi_id[0x0d] lapic_id[0x8c] disabled) [ 0.000000] ACPI: LAPIC (acpi_id[0x0e] lapic_id[0x8d] disabled) [ 0.000000] ACPI: LAPIC (acpi_id[0x0f] lapic_id[0x8e] disabled) [ 0.000000] ACPI: LAPIC (acpi_id[0x10] lapic_id[0x8f] disabled) [ 0.000000] ACPI: IOAPIC (id[0x08] address[0xfec00000] gsi_base[0]) [ 0.000000] IOAPIC[0]: apic_id 8, version 32, address 0xfec00000, GSI 0-23 [ 0.000000] ACPI: IOAPIC (id[0x09] address[0xfec8a000] gsi_base[24]) [ 0.000000] IOAPIC[1]: apic_id 9, version 32, address 0xfec8a000, GSI 24-47 [ 0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 0 global_irq 2 dfl dfl) [ 0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 9 global_irq 9 high level) [ 0.000000] ACPI: IRQ0 used by override. [ 0.000000] ACPI: IRQ2 used by override. [ 0.000000] ACPI: IRQ9 used by override. [ 0.000000] Using ACPI (MADT) for SMP configuration information [ 0.000000] ACPI: HPET id: 0x8086a301 base: 0xfed00000 [ 0.000000] SMP: Allowing 16 CPUs, 8 hotplug CPUs [ 0.000000] nr_irqs_gsi: 64 [ 0.000000] early_res array is doubled to 64 at [1c000 - 1c7ff] [ 0.000000] PM: Registered nosave memory: 000000000009e000 - 000000000009f000 [ 0.000000] PM: Registered nosave memory: 000000000009f000 - 00000000000a0000 [ 0.000000] PM: Registered nosave memory: 00000000000a0000 - 00000000000e5000 [ 0.000000] PM: Registered nosave memory: 00000000000e5000 - 0000000000100000 [ 0.000000] PM: Registered nosave memory: 00000000bf780000 - 00000000bf798000 [ 0.000000] PM: Registered nosave memory: 00000000bf798000 - 00000000bf7dc000 [ 0.000000] PM: Registered nosave memory: 00000000bf7dc000 - 00000000c0000000 [ 0.000000] PM: Registered nosave memory: 00000000c0000000 - 00000000fee00000 [ 0.000000] PM: Registered nosave memory: 00000000fee00000 - 00000000fee01000 [ 0.000000] PM: Registered nosave memory: 00000000fee01000 - 00000000ffe00000 [ 0.000000] PM: Registered nosave memory: 00000000ffe00000 - 0000000100000000 [ 0.000000] Allocating PCI resources starting at c0000000 (gap: c0000000:3ee00000) [ 0.000000] Booting paravirtualized kernel on bare hardware [ 0.000000] setup_percpu: NR_CPUS:64 nr_cpumask_bits:64 nr_cpu_ids:16 nr_node_ids:1 [ 0.000000] early_res array is doubled to 128 at [1c800 - 1d7ff] [ 0.000000] PERCPU: Embedded 30 pages/cpu @ffff880001e00000 s91392 r8192 d23296 u131072 [ 0.000000] pcpu-alloc: s91392 r8192 d23296 u131072 alloc=1*2097152 [ 0.000000] pcpu-alloc: [0] 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 [ 0.000000] Built 1 zonelists in Zone order, mobility grouping on. Total pages: 1545486 [ 0.000000] Policy zone: Normal [ 0.000000] Kernel command line: BOOT_IMAGE=/vmlinuz-2.6.35-11-generic root=/dev/mapper/fornost-root ro quiet [ 0.000000] PID hash table entries: 4096 (order: 3, 32768 bytes) [ 0.000000] Checking aperture... [ 0.000000] No AGP bridge found [ 0.000000] Calgary: detecting Calgary via BIOS EBDA area [ 0.000000] Calgary: Unable to locate Rio Grande table in EBDA - bailing! [ 0.000000] Subtract (68 early reservations) [ 0.000000] #1 [0001000000 - 0001d20114] TEXT DATA BSS [ 0.000000] #2 [00374a9000 - 0037ff0000] RAMDISK [ 0.000000] #3 [0001d21000 - 0001d21294] BRK [ 0.000000] #4 [00000ff790 - 0000100000] BIOS reserved [ 0.000000] #5 [00000ff780 - 00000ff790] MP-table mpf [ 0.000000] #6 [000009ec00 - 00000f1310] BIOS reserved [ 0.000000] #7 [00000f14c4 - 00000ff780] BIOS reserved [ 0.000000] #8 [00000f1310 - 00000f14c4] MP-table mpc [ 0.000000] #9 [0000010000 - 0000012000] TRAMPOLINE [ 0.000000] #10 [0000012000 - 0000016000] ACPI WAKEUP [ 0.000000] #11 [0000016000 - 0000019000] PGTABLE [ 0.000000] #12 [0000019000 - 000001c000] PGTABLE [ 0.000000] #13 [0100000000 - 0100005000] NODE_DATA [ 0.000000] #14 [0001d212c0 - 0001d222c0] BOOTMEM [ 0.000000] #15 [0001d20140 - 0001d205c0] BOOTMEM [ 0.000000] #16 [0100005000 - 0100006000] BOOTMEM [ 0.000000] #17 [0100006000 - 0100007000] BOOTMEM [ 0.000000] #18 [0100200000 - 0105600000] MEMMAP 0 [ 0.000000] #19 [0001d205c0 - 0001d20740] BOOTMEM [ 0.000000] #20 [0001d222c0 - 0001d3a2c0] BOOTMEM [ 0.000000] #21 [0001d3a2c0 - 0001d522c0] BOOTMEM [ 0.000000] #22 [0001d53000 - 0001d54000] BOOTMEM [ 0.000000] #23 [0001d20740 - 0001d20781] BOOTMEM [ 0.000000] #24 [0001d207c0 - 0001d20846] BOOTMEM [ 0.000000] #25 [0001d20880 - 0001d20ae8] BOOTMEM [ 0.000000] #26 [0001d20b00 - 0001d20b68] BOOTMEM [ 0.000000] #27 [0001d20b80 - 0001d20be8] BOOTMEM [ 0.000000] #28 [0001d20c00 - 0001d20c68] BOOTMEM [ 0.000000] #29 [0001d20c80 - 0001d20ce8] BOOTMEM [ 0.000000] #30 [0001d20d00 - 0001d20d68] BOOTMEM [ 0.000000] #31 [0001d20d80 - 0001d20de8] BOOTMEM [ 0.000000] #32 [0001d20e00 - 0001d20e68] BOOTMEM [ 0.000000] #33 [0001d20e80 - 0001d20ee8] BOOTMEM [ 0.000000] #34 [0001d20f00 - 0001d20f68] BOOTMEM [ 0.000000] #35 [0001d20f80 - 0001d20fe8] BOOTMEM [ 0.000000] #36 [0001d522c0 - 0001d522e0] BOOTMEM [ 0.000000] #37 [0001d52300 - 0001d52320] BOOTMEM [ 0.000000] #38 [0001d52340 - 0001d5238d] BOOTMEM [ 0.000000] #39 [0001d523c0 - 0001d5240d] BOOTMEM [ 0.000000] #40 [0001e00000 - 0001e1e000] BOOTMEM [ 0.000000] #41 [0001e20000 - 0001e3e000] BOOTMEM [ 0.000000] #42 [0001e40000 - 0001e5e000] BOOTMEM [ 0.000000] #43 [0001e60000 - 0001e7e000] BOOTMEM [ 0.000000] #44 [0001e80000 - 0001e9e000] BOOTMEM [ 0.000000] #45 [0001ea0000 - 0001ebe000] BOOTMEM [ 0.000000] #46 [0001ec0000 - 0001ede000] BOOTMEM [ 0.000000] #47 [0001ee0000 - 0001efe000] BOOTMEM [ 0.000000] #48 [0001f00000 - 0001f1e000] BOOTMEM [ 0.000000] #49 [0001f20000 - 0001f3e000] BOOTMEM [ 0.000000] #50 [0001f40000 - 0001f5e000] BOOTMEM [ 0.000000] #51 [0001f60000 - 0001f7e000] BOOTMEM [ 0.000000] #52 [0001f80000 - 0001f9e000] BOOTMEM [ 0.000000] #53 [0001fa0000 - 0001fbe000] BOOTMEM [ 0.000000] #54 [0001fc0000 - 0001fde000] BOOTMEM [ 0.000000] #55 [0001fe0000 - 0001ffe000] BOOTMEM [ 0.000000] #56 [0001d52440 - 0001d52448] BOOTMEM [ 0.000000] #57 [0001d52480 - 0001d52488] BOOTMEM [ 0.000000] #58 [0001d524c0 - 0001d52500] BOOTMEM [ 0.000000] #59 [0001d52500 - 0001d52580] BOOTMEM [ 0.000000] #60 [0001d52580 - 0001d52690] BOOTMEM [ 0.000000] #61 [0001d526c0 - 0001d52708] BOOTMEM [ 0.000000] #62 [0001d52740 - 0001d52788] BOOTMEM [ 0.000000] #63 [0001d54000 - 0001d5c000] BOOTMEM [ 0.000000] #64 [0001ffe000 - 0005ffe000] BOOTMEM [ 0.000000] #65 [0001d5c000 - 0001d7c000] BOOTMEM [ 0.000000] #66 [0001d7c000 - 0001dbc000] BOOTMEM [ 0.000000] #67 [000001d800 - 0000025800] BOOTMEM [ 0.000000] Memory: 6103100k/7340032k available (5706k kernel code, 1057736k absent, 179196k reserved, 5421k data, 904k init) [ 0.000000] SLUB: Genslabs=14, HWalign=64, Order=0-3, MinObjects=0, CPUs=16, Nodes=1 [ 0.000000] Hierarchical RCU implementation. [ 0.000000] RCU dyntick-idle grace-period acceleration is enabled. [ 0.000000] RCU-based detection of stalled CPUs is disabled. [ 0.000000] Verbose stalled-CPUs detection is disabled. [ 0.000000] NR_IRQS:4352 nr_irqs:1216 [ 0.000000] Extended CMOS year: 2000 [ 0.000000] Console: colour dummy device 80x25 [ 0.000000] console [tty0] enabled [ 0.000000] allocated 62914560 bytes of page_cgroup [ 0.000000] please try 'cgroup_disable=memory' option if you don't want memory cgroups [ 0.000000] hpet clockevent registered [ 0.000000] Fast TSC calibration failed [ 0.020000] TSC: PIT calibration matches HPET. 1 loops [ 0.020000] Detected 2672.823 MHz processor. [ 0.000007] Calibrating delay loop (skipped), value calculated using timer frequency.. 5345.64 BogoMIPS (lpj=26728230) [ 0.000010] pid_max: default: 32768 minimum: 301 [ 0.000034] Security Framework initialized [ 0.000044] AppArmor: AppArmor initialized [ 0.000045] Yama: becoming mindful. [ 0.000676] Dentry cache hash table entries: 1048576 (order: 11, 8388608 bytes) [ 0.002215] Inode-cache hash table entries: 524288 (order: 10, 4194304 bytes) [ 0.002856] Mount-cache hash table entries: 256 [ 0.002941] Initializing cgroup subsys ns [ 0.002944] Initializing cgroup subsys cpuacct [ 0.002948] Initializing cgroup subsys memory [ 0.002954] Initializing cgroup subsys devices [ 0.002955] Initializing cgroup subsys freezer [ 0.002957] Initializing cgroup subsys net_cls [ 0.002974] CPU: Physical Processor ID: 0 [ 0.002975] CPU: Processor Core ID: 0 [ 0.002980] mce: CPU supports 9 MCE banks [ 0.002988] CPU0: Thermal monitoring enabled (TM1) [ 0.002994] using mwait in idle threads. [ 0.002996] Performance Events: PEBS fmt1+, Nehalem events, Intel PMU driver. [ 0.003001] ... version: 3 [ 0.003002] ... bit width: 48 [ 0.003003] ... generic registers: 4 [ 0.003004] ... value mask: 0000ffffffffffff [ 0.003005] ... max period: 000000007fffffff [ 0.003006] ... fixed-purpose events: 3 [ 0.003007] ... event mask: 000000070000000f [ 0.004713] ACPI: Core revision 20100428 [ 0.038167] ftrace: converting mcount calls to 0f 1f 44 00 00 [ 0.038173] ftrace: allocating 22647 entries in 89 pages [ 0.044294] DMAR: Host address width 39 [ 0.044296] DMAR: DRHD base: 0x000000fbfff000 flags: 0x0 [ 0.044303] IOMMU 0: reg_base_addr fbfff000 ver 1:0 cap c9008010e60262 ecap f0207a [ 0.044305] DMAR: DRHD base: 0x000000fbffe000 flags: 0x1 [ 0.044311] IOMMU 1: reg_base_addr fbffe000 ver 1:0 cap c90780106f0462 ecap f020fe [ 0.044313] DMAR: RMRR base: 0x000000000ec000 end: 0x000000000effff [ 0.044315] DMAR: RMRR base: 0x000000bf7dc000 end: 0x000000bf7dbfff [ 0.044316] DMAR: ATSR flags: 0x0 [ 0.044423] IOAPIC id 8 under DRHD base 0xfbffe000 IOMMU 1 [ 0.044425] IOAPIC id 9 under DRHD base 0xfbffe000 IOMMU 1 [ 0.044656] Enabled Interrupt-remapping [ 0.044660] Setting APIC routing to physical flat [ 0.044662] alloc irq_desc for 64 on node 0 [ 0.044663] alloc kstat_irqs on node 0 [ 0.044673] alloc irq_desc for 65 on node 0 [ 0.044674] alloc kstat_irqs on node 0 [ 0.044954] alloc irq_2_iommu on node 0 [ 0.044959] alloc irq_2_iommu on node 0 [ 0.044963] alloc irq_2_iommu on node 0 [ 0.044968] alloc irq_2_iommu on node 0 [ 0.044972] alloc irq_2_iommu on node 0 [ 0.044977] alloc irq_2_iommu on node 0 [ 0.044981] alloc irq_2_iommu on node 0 [ 0.044986] alloc irq_2_iommu on node 0 [ 0.044990] alloc irq_2_iommu on node 0 [ 0.044995] alloc irq_2_iommu on node 0 [ 0.044999] alloc irq_2_iommu on node 0 [ 0.045003] alloc irq_2_iommu on node 0 [ 0.045008] alloc irq_2_iommu on node 0 [ 0.045012] alloc irq_2_iommu on node 0 [ 0.045017] alloc irq_2_iommu on node 0 [ 0.045168] ..TIMER: vector=0x30 apic1=0 pin1=2 apic2=-1 pin2=-1 [ 0.145146] CPU0: Intel(R) Core(TM) i7 CPU 920 @ 2.67GHz stepping 05 [ 0.286880] APIC calibration not consistent with PM-Timer: 129ms instead of 100ms [ 0.286883] APIC delta adjusted to PM-Timer: 835226 (1085789) [ 0.287005] Booting Node 0, Processors #1 #2 #3 #4 #5 #6 #7 [ 1.546546] Brought up 8 CPUs [ 1.546549] Total of 8 processors activated (42763.58 BogoMIPS). [ 1.550214] devtmpfs: initialized [ 1.551017] regulator: core version 0.5 [ 1.551039] Time: 23:02:09 Date: 07/28/10 [ 1.551065] NET: Registered protocol family 16 [ 1.551135] Trying to unpack rootfs image as initramfs... [ 1.551146] ACPI: bus type pci registered [ 1.551198] PCI: MMCONFIG for domain 0000 [bus 00-ff] at [mem 0xe0000000-0xefffffff] (base 0xe0000000) [ 1.551201] PCI: not using MMCONFIG [ 1.551202] PCI: Using configuration type 1 for base access [ 1.551772] bio: create slab at 0 [ 1.553024] ACPI: EC: Look up EC in DSDT [ 1.554241] ACPI: Executed 1 blocks of module-level executable AML code [ 1.586704] ACPI: Interpreter enabled [ 1.586708] ACPI: (supports S0 S1 S3 S4 S5) [ 1.586727] ACPI: Using IOAPIC for interrupt routing [ 1.586774] PCI: MMCONFIG for domain 0000 [bus 00-ff] at [mem 0xe0000000-0xefffffff] (base 0xe0000000) [ 1.588497] PCI: MMCONFIG at [mem 0xe0000000-0xefffffff] reserved in ACPI motherboard resources [ 1.623461] ACPI: No dock devices found. [ 1.623464] PCI: Using host bridge windows from ACPI; if necessary, use "pci=nocrs" and report a bug [ 1.623591] ACPI: PCI Root Bridge [PCI0] (domain 0000 [bus 00-ff]) [ 1.623837] pci_root PNP0A08:00: host bridge window [io 0x0000-0x0cf7] [ 1.623840] pci_root PNP0A08:00: host bridge window [io 0x0d00-0xffff] [ 1.623841] pci_root PNP0A08:00: host bridge window [mem 0x000a0000-0x000bffff] [ 1.623843] pci_root PNP0A08:00: host bridge window [mem 0x000d0000-0x000dffff] [ 1.623845] pci_root PNP0A08:00: host bridge window [mem 0xc0000000-0xdfffffff] [ 1.623847] pci_root PNP0A08:00: host bridge window [mem 0xf0000000-0xfed8ffff] [ 1.623897] pci 0000:00:00.0: PME# supported from D0 D3hot D3cold [ 1.623900] pci 0000:00:00.0: PME# disabled [ 1.623954] pci 0000:00:01.0: PME# supported from D0 D3hot D3cold [ 1.623957] pci 0000:00:01.0: PME# disabled [ 1.624008] pci 0000:00:03.0: PME# supported from D0 D3hot D3cold [ 1.624011] pci 0000:00:03.0: PME# disabled [ 1.624064] pci 0000:00:07.0: PME# supported from D0 D3hot D3cold [ 1.624067] pci 0000:00:07.0: PME# disabled [ 1.624340] pci 0000:00:1a.0: reg 20: [io 0xa800-0xa81f] [ 1.624398] pci 0000:00:1a.1: reg 20: [io 0xa880-0xa89f] [ 1.624456] pci 0000:00:1a.2: reg 20: [io 0xac00-0xac1f] [ 1.624512] pci 0000:00:1a.7: reg 10: [mem 0xfbaff000-0xfbaff3ff] [ 1.624561] pci 0000:00:1a.7: PME# supported from D0 D3hot D3cold [ 1.624565] pci 0000:00:1a.7: PME# disabled [ 1.624594] pci 0000:00:1b.0: reg 10: [mem 0xfbaf8000-0xfbafbfff 64bit] [ 1.624631] pci 0000:00:1b.0: PME# supported from D0 D3hot D3cold [ 1.624634] pci 0000:00:1b.0: PME# disabled [ 1.624691] pci 0000:00:1c.0: PME# supported from D0 D3hot D3cold [ 1.624694] pci 0000:00:1c.0: PME# disabled [ 1.624754] pci 0000:00:1c.2: PME# supported from D0 D3hot D3cold [ 1.624757] pci 0000:00:1c.2: PME# disabled [ 1.624819] pci 0000:00:1c.5: PME# supported from D0 D3hot D3cold [ 1.624822] pci 0000:00:1c.5: PME# disabled [ 1.624866] pci 0000:00:1d.0: reg 20: [io 0xa080-0xa09f] [ 1.624924] pci 0000:00:1d.1: reg 20: [io 0xa400-0xa41f] [ 1.624982] pci 0000:00:1d.2: reg 20: [io 0xa480-0xa49f] [ 1.625039] pci 0000:00:1d.7: reg 10: [mem 0xfbafe000-0xfbafe3ff] [ 1.625088] pci 0000:00:1d.7: PME# supported from D0 D3hot D3cold [ 1.625091] pci 0000:00:1d.7: PME# disabled [ 1.625194] pci 0000:00:1f.0: quirk: [io 0x0800-0x087f] claimed by ICH6 ACPI/GPIO/TCO [ 1.625197] pci 0000:00:1f.0: quirk: [io 0x0500-0x053f] claimed by ICH6 GPIO [ 1.625200] pci 0000:00:1f.0: ICH7 LPC Generic IO decode 1 PIO at 0294 (mask 0003) [ 1.625204] pci 0000:00:1f.0: ICH7 LPC Generic IO decode 3 PIO at 4700 (mask 001f) [ 1.625252] pci 0000:00:1f.2: reg 10: [io 0x9c00-0x9c07] [ 1.625257] pci 0000:00:1f.2: reg 14: [io 0x9880-0x9883] [ 1.625261] pci 0000:00:1f.2: reg 18: [io 0x9800-0x9807] [ 1.625266] pci 0000:00:1f.2: reg 1c: [io 0x9480-0x9483] [ 1.625270] pci 0000:00:1f.2: reg 20: [io 0x9400-0x941f] [ 1.625275] pci 0000:00:1f.2: reg 24: [mem 0xfbafc000-0xfbafc7ff] [ 1.625303] pci 0000:00:1f.2: PME# supported from D3hot [ 1.625305] pci 0000:00:1f.2: PME# disabled [ 1.625330] pci 0000:00:1f.3: reg 10: [mem 0xfbafd000-0xfbafd0ff 64bit] [ 1.625342] pci 0000:00:1f.3: reg 20: [io 0x0400-0x041f] [ 1.625390] pci 0000:00:01.0: PCI bridge to [bus 01-01] [ 1.625393] pci 0000:00:01.0: bridge window [io 0xf000-0x0000] (disabled) [ 1.625397] pci 0000:00:01.0: bridge window [mem 0xfff00000-0x000fffff] (disabled) [ 1.625401] pci 0000:00:01.0: bridge window [mem 0xfff00000-0x000fffff pref] (disabled) [ 1.625449] pci 0000:02:00.0: reg 10: [mem 0xd0000000-0xdfffffff 64bit pref] [ 1.625457] pci 0000:02:00.0: reg 18: [mem 0xfbbe0000-0xfbbeffff 64bit] [ 1.625461] pci 0000:02:00.0: reg 20: [io 0xb000-0xb0ff] [ 1.625468] pci 0000:02:00.0: reg 30: [mem 0xfbbc0000-0xfbbdffff pref] [ 1.625485] pci 0000:02:00.0: supports D1 D2 [ 1.625510] pci 0000:02:00.1: reg 10: [mem 0xfbbfc000-0xfbbfffff 64bit] [ 1.625541] pci 0000:02:00.1: supports D1 D2 [ 1.636418] pci 0000:00:03.0: PCI bridge to [bus 02-02] [ 1.636421] pci 0000:00:03.0: bridge window [io 0xb000-0xbfff] [ 1.636423] pci 0000:00:03.0: bridge window [mem 0xfbb00000-0xfbbfffff] [ 1.636428] pci 0000:00:03.0: bridge window [mem 0xd0000000-0xdfffffff 64bit pref] [ 1.636460] pci 0000:00:07.0: PCI bridge to [bus 03-03] [ 1.636463] pci 0000:00:07.0: bridge window [io 0xf000-0x0000] (disabled) [ 1.636466] pci 0000:00:07.0: bridge window [mem 0xfff00000-0x000fffff] (disabled) [ 1.636470] pci 0000:00:07.0: bridge window [mem 0xfff00000-0x000fffff pref] (disabled) [ 1.636507] pci 0000:00:1c.0: PCI bridge to [bus 06-06] [ 1.636510] pci 0000:00:1c.0: bridge window [io 0xf000-0x0000] (disabled) [ 1.636513] pci 0000:00:1c.0: bridge window [mem 0xfff00000-0x000fffff] (disabled) [ 1.636518] pci 0000:00:1c.0: bridge window [mem 0xfaf00000-0xfaffffff 64bit pref] [ 1.636588] pci 0000:05:00.0: reg 10: [mem 0xfbdfc000-0xfbdfffff 64bit] [ 1.636595] pci 0000:05:00.0: reg 18: [io 0xd800-0xd8ff] [ 1.636619] pci 0000:05:00.0: reg 30: [mem 0xfbdc0000-0xfbddffff pref] [ 1.636657] pci 0000:05:00.0: supports D1 D2 [ 1.636658] pci 0000:05:00.0: PME# supported from D0 D1 D2 D3hot D3cold [ 1.636662] pci 0000:05:00.0: PME# disabled [ 1.656415] pci 0000:00:1c.2: PCI bridge to [bus 05-05] [ 1.656419] pci 0000:00:1c.2: bridge window [io 0xd000-0xdfff] [ 1.656422] pci 0000:00:1c.2: bridge window [mem 0xfbd00000-0xfbdfffff] [ 1.656427] pci 0000:00:1c.2: bridge window [mem 0xfff00000-0x000fffff pref] (disabled) [ 1.656501] pci 0000:04:00.0: reg 10: [mem 0xfbcfc000-0xfbcfffff 64bit] [ 1.656508] pci 0000:04:00.0: reg 18: [io 0xc800-0xc8ff] [ 1.656532] pci 0000:04:00.0: reg 30: [mem 0xfbcc0000-0xfbcdffff pref] [ 1.656571] pci 0000:04:00.0: supports D1 D2 [ 1.656573] pci 0000:04:00.0: PME# supported from D0 D1 D2 D3hot D3cold [ 1.656577] pci 0000:04:00.0: PME# disabled [ 1.676408] pci 0000:00:1c.5: PCI bridge to [bus 04-04] [ 1.676411] pci 0000:00:1c.5: bridge window [io 0xc000-0xcfff] [ 1.676414] pci 0000:00:1c.5: bridge window [mem 0xfbc00000-0xfbcfffff] [ 1.676419] pci 0000:00:1c.5: bridge window [mem 0xfff00000-0x000fffff pref] (disabled) [ 1.676463] pci 0000:07:02.0: reg 10: [mem 0xfbeff000-0xfbeff7ff] [ 1.676469] pci 0000:07:02.0: reg 14: [io 0xec00-0xec7f] [ 1.676509] pci 0000:07:02.0: supports D2 [ 1.676511] pci 0000:07:02.0: PME# supported from D2 D3hot D3cold [ 1.676514] pci 0000:07:02.0: PME# disabled [ 1.676553] pci 0000:00:1e.0: PCI bridge to [bus 07-07] (subtractive decode) [ 1.676556] pci 0000:00:1e.0: bridge window [io 0xe000-0xefff] [ 1.676559] pci 0000:00:1e.0: bridge window [mem 0xfbe00000-0xfbefffff] [ 1.676564] pci 0000:00:1e.0: bridge window [mem 0xfff00000-0x000fffff pref] (disabled) [ 1.676566] pci 0000:00:1e.0: bridge window [io 0x0000-0x0cf7] (subtractive decode) [ 1.676568] pci 0000:00:1e.0: bridge window [io 0x0d00-0xffff] (subtractive decode) [ 1.676570] pci 0000:00:1e.0: bridge window [mem 0x000a0000-0x000bffff] (subtractive decode) [ 1.676572] pci 0000:00:1e.0: bridge window [mem 0x000d0000-0x000dffff] (subtractive decode) [ 1.676574] pci 0000:00:1e.0: bridge window [mem 0xc0000000-0xdfffffff] (subtractive decode) [ 1.676576] pci 0000:00:1e.0: bridge window [mem 0xf0000000-0xfed8ffff] (subtractive decode) [ 1.676608] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0._PRT] [ 1.676860] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.P0P1._PRT] [ 1.676959] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.P0P4._PRT] [ 1.677009] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.P0P6._PRT] [ 1.677059] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.P0P9._PRT] [ 1.677104] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.NPE1._PRT] [ 1.677150] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.NPE3._PRT] [ 1.677195] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.NPE7._PRT] [ 1.699792] ACPI: PCI Interrupt Link [LNKA] (IRQs 3 4 6 7 *10 11 12 14 15) [ 1.699890] ACPI: PCI Interrupt Link [LNKB] (IRQs *5) [ 1.699983] ACPI: PCI Interrupt Link [LNKC] (IRQs 3 4 6 7 10 *11 12 14 15) [ 1.700080] ACPI: PCI Interrupt Link [LNKD] (IRQs 3 4 6 7 10 11 12 *14 15) [ 1.700175] ACPI: PCI Interrupt Link [LNKE] (IRQs 3 4 6 7 10 11 12 14 *15) [ 1.700271] ACPI: PCI Interrupt Link [LNKF] (IRQs *3 4 6 7 10 11 12 14 15) [ 1.700366] ACPI: PCI Interrupt Link [LNKG] (IRQs 3 4 6 *7 10 11 12 14 15) [ 1.700462] ACPI: PCI Interrupt Link [LNKH] (IRQs 3 *4 6 7 10 11 12 14 15) [ 1.700502] HEST: Table is not found! [ 1.700553] vgaarb: device added: PCI:0000:02:00.0,decodes=io+mem,owns=io+mem,locks=none [ 1.700556] vgaarb: loaded [ 1.700656] SCSI subsystem initialized [ 1.700779] libata version 3.00 loaded. [ 1.700815] usbcore: registered new interface driver usbfs [ 1.700822] usbcore: registered new interface driver hub [ 1.700839] usbcore: registered new device driver usb [ 1.700950] ACPI: WMI: Mapper loaded [ 1.700951] PCI: Using ACPI for IRQ routing [ 1.700953] PCI: pci_cache_line_size set to 64 bytes [ 1.701039] reserve RAM buffer: 000000000009ec00 - 000000000009ffff [ 1.701041] reserve RAM buffer: 00000000bf780000 - 00000000bfffffff [ 1.701104] NetLabel: Initializing [ 1.701105] NetLabel: domain hash size = 128 [ 1.701106] NetLabel: protocols = UNLABELED CIPSOv4 [ 1.701114] NetLabel: unlabeled traffic allowed by default [ 1.701136] HPET: 4 timers in total, 0 timers will be used for per-cpu timer [ 1.701140] hpet0: at MMIO 0xfed00000, IRQs 2, 8, 0, 0 [ 1.701143] hpet0: 4 comparators, 64-bit 14.318180 MHz counter [ 1.746497] Switching to clocksource tsc [ 1.752662] AppArmor: AppArmor Filesystem Enabled [ 1.752673] pnp: PnP ACPI init [ 1.752684] ACPI: bus type pnp registered [ 1.754876] pnp: PnP ACPI: found 15 devices [ 1.754878] ACPI: ACPI bus type pnp unregistered [ 1.754887] system 00:01: [mem 0xfbf00000-0xfbffffff] has been reserved [ 1.754889] system 00:01: [mem 0xfc000000-0xfcffffff] has been reserved [ 1.754891] system 00:01: [mem 0xfd000000-0xfdffffff] has been reserved [ 1.754896] system 00:01: [mem 0xfe000000-0xfebfffff] has been reserved [ 1.754898] system 00:01: [mem 0xfec8a000-0xfec8afff] could not be reserved [ 1.754900] system 00:01: [mem 0xfed10000-0xfed10fff] has been reserved [ 1.754905] system 00:06: [io 0x0290-0x029f] has been reserved [ 1.754908] system 00:07: [io 0x04d0-0x04d1] has been reserved [ 1.754910] system 00:07: [io 0x0800-0x087f] has been reserved [ 1.754912] system 00:07: [io 0x0500-0x057f] could not be reserved [ 1.754914] system 00:07: [mem 0xfed1c000-0xfed1ffff] has been reserved [ 1.754916] system 00:07: [mem 0xfed20000-0xfed3ffff] has been reserved [ 1.754918] system 00:07: [mem 0xfed45000-0xfed8ffff] has been reserved [ 1.754921] system 00:0a: [mem 0xffc00000-0xffdfffff] has been reserved [ 1.754926] system 00:0b: [mem 0xfec00000-0xfec00fff] could not be reserved [ 1.754928] system 00:0b: [mem 0xfee00000-0xfee00fff] has been reserved [ 1.754931] system 00:0d: [mem 0xe0000000-0xefffffff] has been reserved [ 1.754935] system 00:0e: [mem 0x00000000-0x0009ffff] could not be reserved [ 1.754936] system 00:0e: [mem 0x000c0000-0x000cffff] has been reserved [ 1.754938] system 00:0e: [mem 0x000e0000-0x000fffff] could not be reserved [ 1.754940] system 00:0e: [mem 0x00100000-0xbfffffff] could not be reserved [ 1.754942] system 00:0e: [mem 0xfed90000-0xffffffff] could not be reserved [ 1.759630] pci 0000:00:1c.0: BAR 14: assigned [mem 0xc0000000-0xc03fffff] [ 1.759633] pci 0000:00:1c.2: BAR 15: assigned [mem 0xc0400000-0xc05fffff 64bit pref] [ 1.759635] pci 0000:00:1c.5: BAR 15: assigned [mem 0xc0600000-0xc07fffff 64bit pref] [ 1.759637] pci 0000:00:1c.0: BAR 13: assigned [io 0x1000-0x1fff] [ 1.759639] pci 0000:00:01.0: PCI bridge to [bus 01-01] [ 1.759641] pci 0000:00:01.0: bridge window [io disabled] [ 1.759644] pci 0000:00:01.0: bridge window [mem disabled] [ 1.759646] pci 0000:00:01.0: bridge window [mem pref disabled] [ 1.759651] pci 0000:00:03.0: PCI bridge to [bus 02-02] [ 1.759653] pci 0000:00:03.0: bridge window [io 0xb000-0xbfff] [ 1.759656] pci 0000:00:03.0: bridge window [mem 0xfbb00000-0xfbbfffff] [ 1.759659] pci 0000:00:03.0: bridge window [mem 0xd0000000-0xdfffffff 64bit pref] [ 1.759664] pci 0000:00:07.0: PCI bridge to [bus 03-03] [ 1.759665] pci 0000:00:07.0: bridge window [io disabled] [ 1.759668] pci 0000:00:07.0: bridge window [mem disabled] [ 1.759670] pci 0000:00:07.0: bridge window [mem pref disabled] [ 1.759675] pci 0000:00:1c.0: PCI bridge to [bus 06-06] [ 1.759677] pci 0000:00:1c.0: bridge window [io 0x1000-0x1fff] [ 1.759681] pci 0000:00:1c.0: bridge window [mem 0xc0000000-0xc03fffff] [ 1.759684] pci 0000:00:1c.0: bridge window [mem 0xfaf00000-0xfaffffff 64bit pref] [ 1.759689] pci 0000:00:1c.2: PCI bridge to [bus 05-05] [ 1.759691] pci 0000:00:1c.2: bridge window [io 0xd000-0xdfff] [ 1.759695] pci 0000:00:1c.2: bridge window [mem 0xfbd00000-0xfbdfffff] [ 1.759698] pci 0000:00:1c.2: bridge window [mem 0xc0400000-0xc05fffff 64bit pref] [ 1.759703] pci 0000:00:1c.5: PCI bridge to [bus 04-04] [ 1.759705] pci 0000:00:1c.5: bridge window [io 0xc000-0xcfff] [ 1.759709] pci 0000:00:1c.5: bridge window [mem 0xfbc00000-0xfbcfffff] [ 1.759712] pci 0000:00:1c.5: bridge window [mem 0xc0600000-0xc07fffff 64bit pref] [ 1.759717] pci 0000:00:1e.0: PCI bridge to [bus 07-07] [ 1.759719] pci 0000:00:1e.0: bridge window [io 0xe000-0xefff] [ 1.759723] pci 0000:00:1e.0: bridge window [mem 0xfbe00000-0xfbefffff] [ 1.759726] pci 0000:00:1e.0: bridge window [mem pref disabled] [ 1.759737] pci 0000:00:01.0: setting latency timer to 64 [ 1.759744] pci 0000:00:03.0: setting latency timer to 64 [ 1.759750] pci 0000:00:07.0: setting latency timer to 64 [ 1.759756] pci 0000:00:1c.0: enabling device (0106 -> 0107) [ 1.759760] alloc irq_desc for 17 on node -1 [ 1.759762] alloc kstat_irqs on node -1 [ 1.759765] alloc irq_2_iommu on node -1 [ 1.759769] pci 0000:00:1c.0: PCI INT A -> GSI 17 (level, low) -> IRQ 17 [ 1.759772] pci 0000:00:1c.0: setting latency timer to 64 [ 1.759779] alloc irq_desc for 18 on node -1 [ 1.759780] alloc kstat_irqs on node -1 [ 1.759781] alloc irq_2_iommu on node -1 [ 1.759785] pci 0000:00:1c.2: PCI INT C -> GSI 18 (level, low) -> IRQ 18 [ 1.759788] pci 0000:00:1c.2: setting latency timer to 64 [ 1.759794] alloc irq_desc for 16 on node -1 [ 1.759795] alloc kstat_irqs on node -1 [ 1.759797] alloc irq_2_iommu on node -1 [ 1.759801] pci 0000:00:1c.5: PCI INT B -> GSI 16 (level, low) -> IRQ 16 [ 1.759804] pci 0000:00:1c.5: setting latency timer to 64 [ 1.759809] pci 0000:00:1e.0: setting latency timer to 64 [ 1.759812] pci_bus 0000:00: resource 4 [io 0x0000-0x0cf7] [ 1.759813] pci_bus 0000:00: resource 5 [io 0x0d00-0xffff] [ 1.759815] pci_bus 0000:00: resource 6 [mem 0x000a0000-0x000bffff] [ 1.759816] pci_bus 0000:00: resource 7 [mem 0x000d0000-0x000dffff] [ 1.759818] pci_bus 0000:00: resource 8 [mem 0xc0000000-0xdfffffff] [ 1.759820] pci_bus 0000:00: resource 9 [mem 0xf0000000-0xfed8ffff] [ 1.759821] pci_bus 0000:02: resource 0 [io 0xb000-0xbfff] [ 1.759823] pci_bus 0000:02: resource 1 [mem 0xfbb00000-0xfbbfffff] [ 1.759824] pci_bus 0000:02: resource 2 [mem 0xd0000000-0xdfffffff 64bit pref] [ 1.759826] pci_bus 0000:06: resource 0 [io 0x1000-0x1fff] [ 1.759828] pci_bus 0000:06: resource 1 [mem 0xc0000000-0xc03fffff] [ 1.759829] pci_bus 0000:06: resource 2 [mem 0xfaf00000-0xfaffffff 64bit pref] [ 1.759831] pci_bus 0000:05: resource 0 [io 0xd000-0xdfff] [ 1.759832] pci_bus 0000:05: resource 1 [mem 0xfbd00000-0xfbdfffff] [ 1.759834] pci_bus 0000:05: resource 2 [mem 0xc0400000-0xc05fffff 64bit pref] [ 1.759836] pci_bus 0000:04: resource 0 [io 0xc000-0xcfff] [ 1.759837] pci_bus 0000:04: resource 1 [mem 0xfbc00000-0xfbcfffff] [ 1.759839] pci_bus 0000:04: resource 2 [mem 0xc0600000-0xc07fffff 64bit pref] [ 1.759840] pci_bus 0000:07: resource 0 [io 0xe000-0xefff] [ 1.759842] pci_bus 0000:07: resource 1 [mem 0xfbe00000-0xfbefffff] [ 1.759843] pci_bus 0000:07: resource 4 [io 0x0000-0x0cf7] [ 1.759845] pci_bus 0000:07: resource 5 [io 0x0d00-0xffff] [ 1.759846] pci_bus 0000:07: resource 6 [mem 0x000a0000-0x000bffff] [ 1.759848] pci_bus 0000:07: resource 7 [mem 0x000d0000-0x000dffff] [ 1.759849] pci_bus 0000:07: resource 8 [mem 0xc0000000-0xdfffffff] [ 1.759851] pci_bus 0000:07: resource 9 [mem 0xf0000000-0xfed8ffff] [ 1.759874] NET: Registered protocol family 2 [ 1.760060] IP route cache hash table entries: 262144 (order: 9, 2097152 bytes) [ 1.760938] TCP established hash table entries: 524288 (order: 11, 8388608 bytes) [ 1.762155] TCP bind hash table entries: 65536 (order: 8, 1048576 bytes) [ 1.762287] TCP: Hash tables configured (established 524288 bind 65536) [ 1.762289] TCP reno registered [ 1.762301] UDP hash table entries: 4096 (order: 5, 131072 bytes) [ 1.762333] UDP-Lite hash table entries: 4096 (order: 5, 131072 bytes) [ 1.762435] NET: Registered protocol family 1 [ 1.762599] pci 0000:02:00.0: Boot video device [ 1.762610] PCI: CLS 64 bytes, default 64 [ 1.762611] PCI-DMA: Using software bounce buffering for IO (SWIOTLB) [ 1.762614] Placing 64MB software IO TLB between ffff880001ffe000 - ffff880005ffe000 [ 1.762615] software IO TLB at phys 0x1ffe000 - 0x5ffe000 [ 1.762974] Scanning for low memory corruption every 60 seconds [ 1.763057] audit: initializing netlink socket (disabled) [ 1.763064] type=2000 audit(1280358128.530:1): initialized [ 1.773653] Freeing initrd memory: 11548k freed [ 1.774943] HugeTLB registered 2 MB page size, pre-allocated 0 pages [ 1.776048] VFS: Disk quotas dquot_6.5.2 [ 1.776094] Dquot-cache hash table entries: 512 (order 0, 4096 bytes) [ 1.776521] fuse init (API version 7.14) [ 1.776578] msgmni has been set to 11942 [ 1.776791] alg: No test for stdrng (krng) [ 1.776831] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 253) [ 1.776833] io scheduler noop registered [ 1.776835] io scheduler deadline registered [ 1.776862] io scheduler cfq registered (default) [ 1.776946] pcieport 0000:00:01.0: setting latency timer to 64 [ 1.776972] alloc irq_desc for 66 on node -1 [ 1.776973] alloc kstat_irqs on node -1 [ 1.776978] alloc irq_2_iommu on node -1 [ 1.776985] pcieport 0000:00:01.0: irq 66 for MSI/MSI-X [ 1.777036] pcieport 0000:00:03.0: setting latency timer to 64 [ 1.777060] alloc irq_desc for 67 on node -1 [ 1.777061] alloc kstat_irqs on node -1 [ 1.777062] alloc irq_2_iommu on node -1 [ 1.777068] pcieport 0000:00:03.0: irq 67 for MSI/MSI-X [ 1.777115] pcieport 0000:00:07.0: setting latency timer to 64 [ 1.777138] alloc irq_desc for 68 on node -1 [ 1.777139] alloc kstat_irqs on node -1 [ 1.777141] alloc irq_2_iommu on node -1 [ 1.777147] pcieport 0000:00:07.0: irq 68 for MSI/MSI-X [ 1.777195] pcieport 0000:00:1c.0: setting latency timer to 64 [ 1.777221] alloc irq_desc for 69 on node -1 [ 1.777222] alloc kstat_irqs on node -1 [ 1.777224] alloc irq_2_iommu on node -1 [ 1.777230] pcieport 0000:00:1c.0: irq 69 for MSI/MSI-X [ 1.777288] pcieport 0000:00:1c.2: setting latency timer to 64 [ 1.777315] alloc irq_desc for 70 on node -1 [ 1.777316] alloc kstat_irqs on node -1 [ 1.777318] alloc irq_2_iommu on node -1 [ 1.777324] pcieport 0000:00:1c.2: irq 70 for MSI/MSI-X [ 1.777383] pcieport 0000:00:1c.5: setting latency timer to 64 [ 1.777410] alloc irq_desc for 71 on node -1 [ 1.777411] alloc kstat_irqs on node -1 [ 1.777413] alloc irq_2_iommu on node -1 [ 1.777419] pcieport 0000:00:1c.5: irq 71 for MSI/MSI-X [ 1.777485] aer 0000:00:01.0:pcie02: AER service couldn't init device: no _OSC support [ 1.777490] aer 0000:00:03.0:pcie02: AER service couldn't init device: no _OSC support [ 1.777493] aer 0000:00:07.0:pcie02: AER service couldn't init device: no _OSC support [ 1.777506] pci_hotplug: PCI Hot Plug PCI Core version: 0.5 [ 1.777573] pciehp: PCI Express Hot Plug Controller Driver version: 0.4 [ 1.777762] vesafb: framebuffer at 0xd012c000, mapped to 0xffffc90011800000, using 1216k, total 1216k [ 1.777764] vesafb: mode is 640x480x32, linelength=2560, pages=0 [ 1.777765] vesafb: scrolling: redraw [ 1.777768] vesafb: Truecolor: size=0:8:8:8, shift=0:16:8:0 [ 1.820782] Console: switching to colour frame buffer device 80x30 [ 1.863762] fb0: VESA VGA frame buffer device [ 1.863833] input: Power Button as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0C:00/input/input0 [ 1.863836] ACPI: Power Button [PWRB] [ 1.863864] input: Power Button as /devices/LNXSYSTM:00/LNXPWRBN:00/input/input1 [ 1.863865] ACPI: Power Button [PWRF] [ 1.864135] ACPI: acpi_idle registered with cpuidle [ 1.885857] ERST: Table is not found! [ 1.886710] Linux agpgart interface v0.103 [ 1.886735] Serial: 8250/16550 driver, 4 ports, IRQ sharing enabled [ 1.887637] brd: module loaded [ 1.887963] loop: module loaded [ 1.888247] Fixed MDIO Bus: probed [ 1.888268] PPP generic driver version 2.4.2 [ 1.888295] tun: Universal TUN/TAP device driver, 1.6 [ 1.888297] tun: (C) 1999-2004 Max Krasnyansky [ 1.888339] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver [ 1.888357] ehci_hcd 0000:00:1a.7: PCI INT C -> GSI 18 (level, low) -> IRQ 18 [ 1.888372] ehci_hcd 0000:00:1a.7: setting latency timer to 64 [ 1.888375] ehci_hcd 0000:00:1a.7: EHCI Host Controller [ 1.888399] ehci_hcd 0000:00:1a.7: new USB bus registered, assigned bus number 1 [ 1.888422] ehci_hcd 0000:00:1a.7: debug port 1 [ 1.892312] ehci_hcd 0000:00:1a.7: cache line size of 64 is not supported [ 1.892327] ehci_hcd 0000:00:1a.7: irq 18, io mem 0xfbaff000 [ 1.906718] ehci_hcd 0000:00:1a.7: USB 2.0 started, EHCI 1.00 [ 1.906824] hub 1-0:1.0: USB hub found [ 1.906828] hub 1-0:1.0: 6 ports detected [ 1.906881] alloc irq_desc for 23 on node -1 [ 1.906883] alloc kstat_irqs on node -1 [ 1.906886] alloc irq_2_iommu on node -1 [ 1.906891] ehci_hcd 0000:00:1d.7: PCI INT A -> GSI 23 (level, low) -> IRQ 23 [ 1.906901] ehci_hcd 0000:00:1d.7: setting latency timer to 64 [ 1.906903] ehci_hcd 0000:00:1d.7: EHCI Host Controller [ 1.906926] ehci_hcd 0000:00:1d.7: new USB bus registered, assigned bus number 2 [ 1.906944] ehci_hcd 0000:00:1d.7: debug port 1 [ 1.910830] ehci_hcd 0000:00:1d.7: cache line size of 64 is not supported [ 1.910840] ehci_hcd 0000:00:1d.7: irq 23, io mem 0xfbafe000 [ 1.926709] ehci_hcd 0000:00:1d.7: USB 2.0 started, EHCI 1.00 [ 1.926815] hub 2-0:1.0: USB hub found [ 1.926818] hub 2-0:1.0: 6 ports detected [ 1.926865] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver [ 1.926874] uhci_hcd: USB Universal Host Controller Interface driver [ 1.926907] uhci_hcd 0000:00:1a.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16 [ 1.926912] uhci_hcd 0000:00:1a.0: setting latency timer to 64 [ 1.926914] uhci_hcd 0000:00:1a.0: UHCI Host Controller [ 1.926937] uhci_hcd 0000:00:1a.0: new USB bus registered, assigned bus number 3 [ 1.926964] uhci_hcd 0000:00:1a.0: irq 16, io base 0x0000a800 [ 1.927036] hub 3-0:1.0: USB hub found [ 1.927038] hub 3-0:1.0: 2 ports detected [ 1.927077] alloc irq_desc for 21 on node -1 [ 1.927078] alloc kstat_irqs on node -1 [ 1.927080] alloc irq_2_iommu on node -1 [ 1.927085] uhci_hcd 0000:00:1a.1: PCI INT B -> GSI 21 (level, low) -> IRQ 21 [ 1.927089] uhci_hcd 0000:00:1a.1: setting latency timer to 64 [ 1.927091] uhci_hcd 0000:00:1a.1: UHCI Host Controller [ 1.927113] uhci_hcd 0000:00:1a.1: new USB bus registered, assigned bus number 4 [ 1.927142] uhci_hcd 0000:00:1a.1: irq 21, io base 0x0000a880 [ 1.927211] hub 4-0:1.0: USB hub found [ 1.927213] hub 4-0:1.0: 2 ports detected [ 1.927251] alloc irq_desc for 19 on node -1 [ 1.927253] alloc kstat_irqs on node -1 [ 1.927255] alloc irq_2_iommu on node -1 [ 1.927259] uhci_hcd 0000:00:1a.2: PCI INT D -> GSI 19 (level, low) -> IRQ 19 [ 1.927263] uhci_hcd 0000:00:1a.2: setting latency timer to 64 [ 1.927265] uhci_hcd 0000:00:1a.2: UHCI Host Controller [ 1.927290] uhci_hcd 0000:00:1a.2: new USB bus registered, assigned bus number 5 [ 1.927316] uhci_hcd 0000:00:1a.2: irq 19, io base 0x0000ac00 [ 1.927386] hub 5-0:1.0: USB hub found [ 1.927389] hub 5-0:1.0: 2 ports detected [ 1.927427] uhci_hcd 0000:00:1d.0: PCI INT A -> GSI 23 (level, low) -> IRQ 23 [ 1.927431] uhci_hcd 0000:00:1d.0: setting latency timer to 64 [ 1.927433] uhci_hcd 0000:00:1d.0: UHCI Host Controller [ 1.927453] uhci_hcd 0000:00:1d.0: new USB bus registered, assigned bus number 6 [ 1.927473] uhci_hcd 0000:00:1d.0: irq 23, io base 0x0000a080 [ 1.927545] hub 6-0:1.0: USB hub found [ 1.927548] hub 6-0:1.0: 2 ports detected [ 1.927585] uhci_hcd 0000:00:1d.1: PCI INT B -> GSI 19 (level, low) -> IRQ 19 [ 1.927589] uhci_hcd 0000:00:1d.1: setting latency timer to 64 [ 1.927591] uhci_hcd 0000:00:1d.1: UHCI Host Controller [ 1.927611] uhci_hcd 0000:00:1d.1: new USB bus registered, assigned bus number 7 [ 1.927631] uhci_hcd 0000:00:1d.1: irq 19, io base 0x0000a400 [ 1.927704] hub 7-0:1.0: USB hub found [ 1.927707] hub 7-0:1.0: 2 ports detected [ 1.927744] uhci_hcd 0000:00:1d.2: PCI INT C -> GSI 18 (level, low) -> IRQ 18 [ 1.927751] uhci_hcd 0000:00:1d.2: setting latency timer to 64 [ 1.927753] uhci_hcd 0000:00:1d.2: UHCI Host Controller [ 1.927774] uhci_hcd 0000:00:1d.2: new USB bus registered, assigned bus number 8 [ 1.927794] uhci_hcd 0000:00:1d.2: irq 18, io base 0x0000a480 [ 1.927865] hub 8-0:1.0: USB hub found [ 1.927867] hub 8-0:1.0: 2 ports detected [ 1.927944] PNP: No PS/2 controller found. Probing ports directly. [ 1.930480] serio: i8042 KBD port at 0x60,0x64 irq 1 [ 1.930484] serio: i8042 AUX port at 0x60,0x64 irq 12 [ 1.930520] mice: PS/2 mouse device common for all mice [ 1.930571] rtc_cmos 00:03: RTC can wake from S4 [ 1.930595] rtc_cmos 00:03: rtc core: registered rtc_cmos as rtc0 [ 1.930617] rtc0: alarms up to one month, y3k, 114 bytes nvram, hpet irqs [ 1.930684] device-mapper: uevent: version 1.0.3 [ 1.930743] device-mapper: ioctl: 4.17.0-ioctl (2010-03-05) initialised: dm-devel@redhat.com [ 1.930853] device-mapper: multipath: version 1.1.1 loaded [ 1.930855] device-mapper: multipath round-robin: version 1.0.0 loaded [ 1.931083] cpuidle: using governor ladder [ 1.931084] cpuidle: using governor menu [ 1.931278] TCP cubic registered [ 1.931364] NET: Registered protocol family 10 [ 1.931647] lo: Disabled Privacy Extensions [ 1.931790] NET: Registered protocol family 17 [ 1.931883] PM: Resume from disk failed. [ 1.931890] registered taskstats version 1 [ 1.932206] Magic number: 2:513:50 [ 1.932258] rtc_cmos 00:03: setting system clock to 2010-07-28 23:02:09 UTC (1280358129) [ 1.932260] BIOS EDD facility v0.16 2004-Jun-25, 0 devices found [ 1.932261] EDD information not available. [ 1.932307] Freeing unused kernel memory: 904k freed [ 1.932416] Write protecting the kernel read-only data: 10240k [ 1.932560] Freeing unused kernel memory: 416k freed [ 1.932702] Freeing unused kernel memory: 1604k freed [ 1.942570] udev: starting version 151 [ 1.964543] sky2: driver version 1.28 [ 1.964580] sky2 0000:05:00.0: PCI INT A -> GSI 18 (level, low) -> IRQ 18 [ 1.964592] sky2 0000:05:00.0: setting latency timer to 64 [ 1.964625] sky2 0000:05:00.0: Yukon-2 EC Ultra chip revision 3 [ 1.964709] alloc irq_desc for 72 on node -1 [ 1.964711] alloc kstat_irqs on node -1 [ 1.964716] alloc irq_2_iommu on node -1 [ 1.964730] sky2 0000:05:00.0: irq 72 for MSI/MSI-X [ 1.965256] sky2 0000:05:00.0: eth0: addr 00:26:18:08:60:73 [ 1.965276] sky2 0000:04:00.0: PCI INT A -> GSI 17 (level, low) -> IRQ 17 [ 1.965285] sky2 0000:04:00.0: setting latency timer to 64 [ 1.965311] sky2 0000:04:00.0: Yukon-2 EC Ultra chip revision 3 [ 1.965397] alloc irq_desc for 73 on node -1 [ 1.965399] alloc kstat_irqs on node -1 [ 1.965403] alloc irq_2_iommu on node -1 [ 1.965415] sky2 0000:04:00.0: irq 73 for MSI/MSI-X [ 1.965946] sky2 0000:04:00.0: eth1: addr 00:26:18:08:60:72 [ 1.974986] ahci 0000:00:1f.2: version 3.0 [ 1.975000] alloc irq_desc for 20 on node -1 [ 1.975002] alloc kstat_irqs on node -1 [ 1.975006] alloc irq_2_iommu on node -1 [ 1.975011] ahci 0000:00:1f.2: PCI INT B -> GSI 20 (level, low) -> IRQ 20 [ 1.975045] alloc irq_desc for 74 on node -1 [ 1.975046] alloc kstat_irqs on node -1 [ 1.975048] alloc irq_2_iommu on node -1 [ 1.975055] ahci 0000:00:1f.2: irq 74 for MSI/MSI-X [ 1.975078] ahci: SSS flag set, parallel bus scan disabled [ 1.975114] ahci 0000:00:1f.2: AHCI 0001.0200 32 slots 6 ports 3 Gbps 0x3f impl SATA mode [ 1.975116] ahci 0000:00:1f.2: flags: 64bit ncq sntf stag pm led clo pmp pio slum part ccc ems sxs [ 1.975120] ahci 0000:00:1f.2: setting latency timer to 64 [ 1.978238] firewire_ohci 0000:07:02.0: PCI INT A -> GSI 18 (level, low) -> IRQ 18 [ 2.068590] scsi0 : ahci [ 2.068674] scsi1 : ahci [ 2.068712] scsi2 : ahci [ 2.068747] scsi3 : ahci [ 2.068783] scsi4 : ahci [ 2.068820] scsi5 : ahci [ 2.068937] ata1: SATA max UDMA/133 abar m2048@0xfbafc000 port 0xfbafc100 irq 74 [ 2.068940] ata2: SATA max UDMA/133 abar m2048@0xfbafc000 port 0xfbafc180 irq 74 [ 2.068942] ata3: SATA max UDMA/133 abar m2048@0xfbafc000 port 0xfbafc200 irq 74 [ 2.068944] ata4: SATA max UDMA/133 abar m2048@0xfbafc000 port 0xfbafc280 irq 74 [ 2.068946] ata5: SATA max UDMA/133 abar m2048@0xfbafc000 port 0xfbafc300 irq 74 [ 2.068948] ata6: SATA max UDMA/133 abar m2048@0xfbafc000 port 0xfbafc380 irq 74 [ 2.136675] firewire_ohci: Added fw-ohci device 0000:07:02.0, OHCI v1.10, 4 IR + 8 IT contexts, quirks 0x1 [ 2.346585] usb 1-5: new high speed USB device using ehci_hcd and address 3 [ 2.497081] hub 1-5:1.0: USB hub found [ 2.497174] hub 1-5:1.0: 4 ports detected [ 2.596521] ata1: SATA link up 3.0 Gbps (SStatus 123 SControl 300) [ 2.602933] ata1.00: ATA-7: SAMSUNG HD103UJ, 1AA01118, max UDMA7 [ 2.602937] ata1.00: 1953525168 sectors, multi 0: LBA48 NCQ (depth 31/32), AA [ 2.609413] ata1.00: configured for UDMA/133 [ 2.618446] firewire_core: created device fw0: GUID 001e8c0001e6ba27, S400 [ 2.636601] scsi 0:0:0:0: Direct-Access ATA SAMSUNG HD103UJ 1AA0 PQ: 0 ANSI: 5 [ 2.636692] sd 0:0:0:0: Attached scsi generic sg0 type 0 [ 2.636703] sd 0:0:0:0: [sda] 1953525168 512-byte logical blocks: (1.00 TB/931 GiB) [ 2.636742] sd 0:0:0:0: [sda] Write Protect is off [ 2.636744] sd 0:0:0:0: [sda] Mode Sense: 00 3a 00 00 [ 2.636758] sd 0:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA [ 2.636849] sda: sda1 sda2 sda3 sda4 [ 2.648407] sd 0:0:0:0: [sda] Attached SCSI disk [ 2.746464] usb 2-2: new high speed USB device using ehci_hcd and address 3 [ 3.416263] usb 3-1: new full speed USB device using uhci_hcd and address 2 [ 3.566220] ata2: SATA link up 1.5 Gbps (SStatus 113 SControl 300) [ 3.587633] ata2.00: ATAPI: HL-DT-ST BD-RE GGW-H20L, YL05, max UDMA/133 [ 3.613658] ata2.00: configured for UDMA/133 [ 3.751479] scsi 1:0:0:0: CD-ROM HL-DT-ST BD-RE GGW-H20L YL05 PQ: 0 ANSI: 5 [ 3.876124] usb 6-1: new full speed USB device using uhci_hcd and address 2 [ 4.079231] sr0: scsi3-mmc drive: 40x/40x writer dvd-ram cd/rw xa/form2 cdda tray [ 4.079235] Uniform CD-ROM driver Revision: 3.20 [ 4.079329] sr 1:0:0:0: Attached scsi CD-ROM sr0 [ 4.079377] sr 1:0:0:0: Attached scsi generic sg1 type 5 [ 4.150509] usbcore: registered new interface driver hiddev [ 4.150596] usbcore: registered new interface driver usbhid [ 4.150599] usbhid: USB HID core driver [ 4.345981] usb 7-1: new full speed USB device using uhci_hcd and address 2 [ 4.427524] ata3: SATA link down (SStatus 0 SControl 300) [ 4.795850] ata4: SATA link down (SStatus 0 SControl 300) [ 5.165740] ata5: SATA link down (SStatus 0 SControl 300) [ 5.537190] ata6: SATA link down (SStatus 0 SControl 300) [ 5.562411] input: Logitech USB Receiver as /devices/pci0000:00/0000:00:1d.0/usb6/6-1/6-1:1.0/input/input2 [ 5.562472] logitech 0003:046D:C513.0001: input,hidraw0: USB HID v1.11 Keyboard [Logitech USB Receiver] on usb-0000:00:1d.0-1/input0 [ 5.565271] logitech 0003:046D:C513.0002: fixing up Logitech keyboard report descriptor [ 5.565642] input: Logitech USB Receiver as /devices/pci0000:00/0000:00:1d.0/usb6/6-1/6-1:1.1/input/input3 [ 5.565917] logitech 0003:046D:C513.0002: input,hiddev96,hidraw1: USB HID v1.11 Mouse [Logitech USB Receiver] on usb-0000:00:1d.0-1/input1 [ 6.136061] EXT4-fs (dm-0): mounted filesystem with ordered data mode. Opts: (null) [ 22.465470] udev: starting version 151 [ 22.473881] lp: driver loaded but no devices found [ 22.476861] Adding 8785916k swap on /dev/mapper/fornost-swap_1. Priority:-1 extents:1 across:8785916k [ 22.552262] Linux video capture interface: v2.00 [ 22.557906] [drm] Initialized drm 1.1.0 20060810 [ 22.557995] uvcvideo: Found UVC 1.00 device (046d:0990) [ 22.627081] input: UVC Camera (046d:0990) as /devices/pci0000:00/0000:00:1d.7/usb2/2-2/2-2:1.0/input/input4 [ 22.627145] usbcore: registered new interface driver uvcvideo [ 22.627148] USB Video Class driver (v0.1.0) [ 22.627674] EDAC MC: Ver: 2.1.0 Jul 24 2010 [ 22.628410] Bluetooth: Core ver 2.15 [ 22.628464] NET: Registered protocol family 31 [ 22.628466] Bluetooth: HCI device and connection manager initialized [ 22.628469] Bluetooth: HCI socket layer initialized [ 22.632460] Bluetooth: Generic Bluetooth USB driver ver 0.6 [ 22.633295] usbcore: registered new interface driver btusb [ 22.635376] PCI: Discovered peer bus ff [ 22.636560] EDAC MC0: Giving out device to 'i7core_edac.c' 'i7 core #0': DEV 0000:ff:03.0 [ 22.636585] EDAC PCI0: Giving out device to module 'i7core_edac' controller 'EDAC PCI controller': DEV '0000:ff:03.0' (POLLED) [ 22.636588] EDAC i7core: Driver loaded. [ 22.647554] tpm_tis 00:0c: 1.2 TPM (device-id 0x6871, rev-id 1) [ 22.667545] type=1400 audit(1280350950.233:2): operation="profile_load" pid=860 name="/sbin/dhclient3" pid=860 comm="apparmor_parser" [ 22.668012] type=1400 audit(1280350950.233:3): operation="profile_load" pid=860 name="/usr/lib/NetworkManager/nm-dhcp-client.action" pid=860 comm="apparmor_parser" [ 22.668270] type=1400 audit(1280350950.233:4): operation="profile_load" pid=860 name="/usr/lib/connman/scripts/dhclient-script" pid=860 comm="apparmor_parser" [ 22.679088] [drm] radeon defaulting to kernel modesetting. [ 22.679092] [drm] radeon kernel modesetting enabled. [ 22.679159] alloc irq_desc for 24 on node -1 [ 22.679162] alloc kstat_irqs on node -1 [ 22.679167] alloc irq_2_iommu on node -1 [ 22.679175] radeon 0000:02:00.0: PCI INT A -> GSI 24 (level, low) -> IRQ 24 [ 22.679179] radeon 0000:02:00.0: setting latency timer to 64 [ 22.680460] [drm] initializing kernel modesetting (RV770 0x1002:0x9460). [ 22.680604] [drm] register mmio base: 0xFBBE0000 [ 22.680606] [drm] register mmio size: 65536 [ 22.680687] ATOM BIOS: WEKIVA [ 22.680696] [drm] Clocks initialized ! [ 22.680705] radeon 0000:02:00.0: VRAM: 1024M 0x00000000 - 0x3FFFFFFF (1024M used) [ 22.680707] radeon 0000:02:00.0: GTT: 512M 0x40000000 - 0x5FFFFFFF [ 22.680721] mtrr: type mismatch for d0000000,10000000 old: write-back new: write-combining [ 22.680723] [drm] Detected VRAM RAM=1024M, BAR=256M [ 22.680724] [drm] RAM width 256bits DDR [ 22.680754] [TTM] Zone kernel: Available graphics memory: 3058786 kiB. [ 22.680756] [TTM] Zone dma32: Available graphics memory: 2097152 kiB. [ 22.680757] [TTM] Initializing pool allocator. [ 22.680770] [drm] radeon: 1024M of VRAM memory ready [ 22.680771] [drm] radeon: 512M of GTT memory ready. [ 22.680806] alloc irq_desc for 75 on node -1 [ 22.680807] alloc kstat_irqs on node -1 [ 22.680810] alloc irq_2_iommu on node -1 [ 22.680819] radeon 0000:02:00.0: irq 75 for MSI/MSI-X [ 22.680823] [drm] radeon: using MSI. [ 22.680846] [drm] radeon: irq initialized. [ 22.680847] [drm] GART: num cpu pages 131072, num gpu pages 131072 [ 22.681359] [drm] Loading RV770 Microcode [ 22.719408] alloc irq_desc for 22 on node -1 [ 22.719411] alloc kstat_irqs on node -1 [ 22.719414] alloc irq_2_iommu on node -1 [ 22.719420] HDA Intel 0000:00:1b.0: PCI INT A -> GSI 22 (level, low) -> IRQ 22 [ 22.719466] alloc irq_desc for 76 on node -1 [ 22.719467] alloc kstat_irqs on node -1 [ 22.719469] alloc irq_2_iommu on node -1 [ 22.719478] HDA Intel 0000:00:1b.0: irq 76 for MSI/MSI-X [ 22.719495] HDA Intel 0000:00:1b.0: setting latency timer to 64 [ 22.738612] usbcore: registered new interface driver snd-usb-audio [ 22.751012] [drm] ring test succeeded in 0 usecs [ 22.751140] [drm] radeon: ib pool ready. [ 22.751194] [drm] ib test succeeded in 0 usecs [ 22.751196] [drm] Enabling audio support [ 22.751203] failed to evaluate ATIF got AE_BAD_PARAMETER [ 22.751204] radeon 0000:02:00.0: Error during ACPI methods call [ 22.752449] [drm] Default TV standard: PAL [ 22.752500] [drm] Default TV standard: PAL [ 22.752775] [drm] Radeon Display Connectors [ 22.752778] [drm] Connector 0: [ 22.752779] [drm] DVI-I [ 22.752781] [drm] HPD1 [ 22.752783] [drm] DDC: 0x7e20 0x7e20 0x7e24 0x7e24 0x7e28 0x7e28 0x7e2c 0x7e2c [ 22.752785] [drm] Encoders: [ 22.752787] [drm] CRT1: INTERNAL_KLDSCP_DAC1 [ 22.752789] [drm] DFP3: INTERNAL_KLDSCP_LVTMA [ 22.752790] [drm] Connector 1: [ 22.752792] [drm] VGA [ 22.752794] [drm] DDC: 0x7e40 0x7e40 0x7e44 0x7e44 0x7e48 0x7e48 0x7e4c 0x7e4c [ 22.752795] [drm] Encoders: [ 22.752797] [drm] CRT2: INTERNAL_KLDSCP_DAC2 [ 22.752799] [drm] Connector 2: [ 22.752800] [drm] HDMI-A [ 22.752801] [drm] HPD2 [ 22.752804] [drm] DDC: 0x7e50 0x7e50 0x7e54 0x7e54 0x7e58 0x7e58 0x7e5c 0x7e5c [ 22.752805] [drm] Encoders: [ 22.752807] [drm] DFP2: INTERNAL_UNIPHY [ 22.752808] [drm] Connector 3: [ 22.752809] [drm] DisplayPort [ 22.752810] [drm] HPD3 [ 22.752813] [drm] DDC: 0x7e60 0x7e60 0x7e64 0x7e64 0x7e68 0x7e68 0x7e6c 0x7e6c [ 22.752814] [drm] Encoders: [ 22.752816] [drm] DFP1: INTERNAL_UNIPHY [ 22.791750] DRHD: handling fault status reg 2 [ 22.792654] INTR-REMAP: Request device [[00:1b.0] fault index 24 [ 22.792655] INTR-REMAP:[fault reason 34] Present field in the IRTE entry is clear [ 23.041622] [drm] Internal thermal controller with fan control [ 23.041635] [drm] radeon: power management initialized [ 23.385241] EXT4-fs (dm-0): re-mounted. Opts: errors=remount-ro [ 23.640793] EXT4-fs (dm-3): warning: maximal mount count reached, running e2fsck is recommended [ 23.640956] EXT4-fs (dm-3): mounted filesystem with ordered data mode. Opts: (null) [ 23.683862] [drm] fb mappable at 0xD0141000 [ 23.683864] [drm] vram apper at 0xD0000000 [ 23.683865] [drm] size 9216000 [ 23.683867] [drm] fb depth is 24 [ 23.683868] [drm] pitch is 7680 [ 23.683870] checking generic (d012c000 130000) vs hw (d0000000 40000000) [ 23.683872] fb: conflicting fb hw usage radeondrmfb vs VESA VGA - removing generic driver [ 23.685585] Console: switching to colour dummy device 80x25 [ 23.751377] EXT4-fs (dm-2): mounted filesystem with ordered data mode. Opts: user_xattr [ 24.909794] Console: switching to colour frame buffer device 240x75 [ 25.231699] fb0: radeondrmfb frame buffer device [ 25.231700] drm: registered panic notifier [ 25.231742] Slow work thread pool: Starting up [ 25.231777] Slow work thread pool: Ready [ 25.231782] [drm] Initialized radeon 2.5.0 20080528 for 0000:02:00.0 on minor 0 [ 25.819501] hda-intel: azx_get_response timeout, switching to polling mode: last cmd=0x000f0001 [ 25.828938] hda_codec: AD1989B: BIOS auto-probing. [ 25.833808] alloc irq_desc for 34 on node -1 [ 25.833811] alloc kstat_irqs on node -1 [ 25.833815] alloc irq_2_iommu on node -1 [ 25.833822] HDA Intel 0000:02:00.1: PCI INT B -> GSI 34 (level, low) -> IRQ 34 [ 25.833877] alloc irq_desc for 77 on node -1 [ 25.833878] alloc kstat_irqs on node -1 [ 25.833881] alloc irq_2_iommu on node -1 [ 25.833889] HDA Intel 0000:02:00.1: irq 77 for MSI/MSI-X [ 25.833905] HDA Intel 0000:02:00.1: setting latency timer to 64 [ 26.579367] type=1400 audit(1280350954.153:5): operation="profile_load" pid=1174 name="/usr/share/gdm/guest-session/Xsession" pid=1174 comm="apparmor_parser" [ 26.580461] type=1400 audit(1280350954.153:6): operation="profile_replace" pid=1177 name="/sbin/dhclient3" pid=1177 comm="apparmor_parser" [ 26.580860] type=1400 audit(1280350954.153:7): operation="profile_replace" pid=1177 name="/usr/lib/NetworkManager/nm-dhcp-client.action" pid=1177 comm="apparmor_parser" [ 26.581107] type=1400 audit(1280350954.153:8): operation="profile_replace" pid=1177 name="/usr/lib/connman/scripts/dhclient-script" pid=1177 comm="apparmor_parser" [ 26.582905] type=1400 audit(1280350954.153:9): operation="profile_load" pid=1183 name="/usr/bin/evince" pid=1183 comm="apparmor_parser" [ 26.588016] type=1400 audit(1280350954.153:10): operation="profile_load" pid=1183 name="/usr/bin/evince-previewer" pid=1183 comm="apparmor_parser" [ 26.591164] type=1400 audit(1280350954.163:11): operation="profile_load" pid=1183 name="/usr/bin/evince-thumbnailer" pid=1183 comm="apparmor_parser" [ 26.594343] sky2 0000:05:00.0: eth0: enabling interface [ 26.594897] ADDRCONF(NETDEV_UP): eth0: link is not ready [ 26.598409] sky2 0000:04:00.0: eth1: enabling interface [ 26.598923] ADDRCONF(NETDEV_UP): eth1: link is not ready [ 26.611734] NET: Registered protocol family 15 [ 26.612870] alg: No test for cipher_null (cipher_null-generic) [ 26.612888] alg: No test for ecb(cipher_null) (ecb-cipher_null) [ 26.612905] alg: No test for digest_null (digest_null-generic) [ 26.612920] alg: No test for compress_null (compress_null-generic) [ 26.618180] padlock: VIA PadLock Hash Engine not detected. [ 26.664704] padlock: VIA PadLock Hash Engine not detected. [ 26.716457] Intel AES-NI instructions are not detected. [ 26.750794] padlock: VIA PadLock not detected. [ 27.369507] BUG: unable to handle kernel NULL pointer dereference at 0000000000000010 [ 27.369512] IP: [] fb_release+0x30/0x70 [ 27.369518] PGD 1b8a7b067 PUD 1b8a77067 PMD 0 [ 27.369521] Oops: 0000 [#1] SMP [ 27.369523] last sysfs file: /sys/devices/virtual/block/dm-3/uevent [ 27.369525] CPU 1 [ 27.369526] Modules linked in: deflate zlib_deflate ctr twofish twofish_common camellia serpent blowfish cast5 des_generic cryptd aes_x86_64 aes_generic xcbc rmd160 sha512_generic sha256_generic sha1_generic crypto_null af_key snd_hda_codec_atihdmi snd_hda_codec_analog tpm_infineon snd_hda_intel snd_usb_audio snd_hda_codec snd_pcm snd_seq_midi snd_hwdep snd_seq_midi_event radeon snd_seq snd_timer snd_usbmidi_lib snd_rawmidi tpm_tis i7core_edac btusb asus_atk0110 bluetooth ttm drm_kms_helper uvcvideo snd_seq_device videodev v4l1_compat v4l2_compat_ioctl32 joydev snd edac_core psmouse tpm tpm_bios drm serio_raw soundcore i2c_algo_bit snd_page_alloc lp parport hid_logitech ff_memless usbhid hid firewire_ohci firewire_core ahci libahci crc_itu_t sky2 [ 27.369561] [ 27.369564] Pid: 451, comm: plymouthd Not tainted 2.6.35-11-generic #16-Ubuntu P6T DELUXE V2/System Product Name [ 27.369565] RIP: 0010:[] [] fb_release+0x30/0x70 [ 27.369569] RSP: 0018:ffff8801b6a4bea8 EFLAGS: 00010286 [ 27.369570] RAX: ffff8801b6a4a000 RBX: ffff8801b7124000 RCX: 0000000000000003 [ 27.369572] RDX: 0000000000000000 RSI: ffff8801a56206c0 RDI: ffff8801b7124008 [ 27.369573] RBP: ffff8801b6a4beb8 R08: 0000000000000000 R09: 0000000000000000 [ 27.369575] R10: 00007fff8969bed0 R11: 0000000000000246 R12: ffff8801b7124008 [ 27.369577] R13: ffff8801b88235f0 R14: ffff8801b640bc80 R15: ffff8801b55e8300 [ 27.369578] FS: 00007f890030c700(0000) GS:ffff880001e20000(0000) knlGS:0000000000000000 [ 27.369580] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 [ 27.369582] CR2: 0000000000000010 CR3: 00000001b53b7000 CR4: 00000000000006e0 [ 27.369583] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 [ 27.369585] DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400 [ 27.369587] Process plymouthd (pid: 451, threadinfo ffff8801b6a4a000, task ffff8801b3c596e0) [ 27.369588] Stack: [ 27.369589] ffff8801a56206c0 0000000000000008 ffff8801b6a4bf08 ffffffff81152df5 [ 27.369592] <0> ffff8801b88235f0 ffff8801b640bc80 00007f89001de000 ffff8801a56206c0 [ 27.369594] <0> ffff8801b8cd9e40 0000000000000000 000000000000000b 0000000002082db0 [ 27.369598] Call Trace: [ 27.369601] [] __fput+0xf5/0x210 [ 27.369604] [] fput+0x25/0x30 [ 27.369607] [] filp_close+0x5d/0x90 [ 27.369609] [] sys_close+0xb7/0x120 [ 27.369613] [] system_call_fastpath+0x16/0x1b [ 27.369614] Code: 83 ec 10 48 89 1c 24 4c 89 64 24 08 0f 1f 44 00 00 48 8b 9e a0 00 00 00 4c 8d 63 08 4c 89 e7 e8 67 1b 29 00 48 8b 93 c0 03 00 00 <48> 8b 42 10 48 85 c0 74 11 be 01 00 00 00 48 89 df ff d0 48 8b [ 27.369636] RIP [] fb_release+0x30/0x70 [ 27.369638] RSP [ 27.369639] CR2: 0000000000000010 [ 27.369641] ---[ end trace a385d6678a12f076 ]--- [ 28.002195] Bridge firewalling registered [ 28.014584] ip_tables: (C) 2000-2006 Netfilter Core Team [ 28.038606] nf_conntrack version 0.5.0 (16384 buckets, 65536 max) [ 28.038783] CONFIG_NF_CT_ACCT is deprecated and will be removed soon. Please use [ 28.038786] nf_conntrack.acct=1 kernel parameter, acct=1 nf_conntrack module option or [ 28.038788] sysctl net.netfilter.nf_conntrack_acct=1 to enable it. Bug: 611107 [ 0.000000] Initializing cgroup subsys cpuset [ 0.000000] Initializing cgroup subsys cpu [ 0.000000] Linux version 2.6.35-11-generic (buildd@rothera) (gcc version 4.4.5 20100723 (prerelease) (Ubuntu/Linaro 4.4.4-7ubuntu3) ) #16-Ubuntu SMP Sat Jul 24 21:38:26 UTC 2010 (Ubuntu 2.6.35-11.16-generic 2.6.35-rc5) [ 0.000000] BIOS-provided physical RAM map: [ 0.000000] BIOS-e820: 0000000000000000 - 000000000009fc00 (usable) [ 0.000000] BIOS-e820: 000000000009fc00 - 00000000000a0000 (reserved) [ 0.000000] BIOS-e820: 00000000000f0000 - 0000000000100000 (reserved) [ 0.000000] BIOS-e820: 0000000000100000 - 000000003fff0000 (usable) [ 0.000000] BIOS-e820: 000000003fff0000 - 000000003fff3000 (ACPI NVS) [ 0.000000] BIOS-e820: 000000003fff3000 - 0000000040000000 (ACPI data) [ 0.000000] BIOS-e820: 00000000ffff0000 - 0000000100000000 (reserved) [ 0.000000] NX (Execute Disable) protection: approximated by x86 segment limits [ 0.000000] DMI 2.2 present. [ 0.000000] Phoenix BIOS detected: BIOS may corrupt low RAM, working around it. [ 0.000000] e820 update range: 0000000000000000 - 0000000000010000 (usable) ==> (reserved) [ 0.000000] e820 update range: 0000000000000000 - 0000000000001000 (usable) ==> (reserved) [ 0.000000] e820 remove range: 00000000000a0000 - 0000000000100000 (usable) [ 0.000000] last_pfn = 0x3fff0 max_arch_pfn = 0x100000 [ 0.000000] MTRR default type: uncachable [ 0.000000] MTRR fixed ranges enabled: [ 0.000000] 00000-9FFFF write-back [ 0.000000] A0000-AFFFF uncachable [ 0.000000] B0000-BFFFF write-combining [ 0.000000] C0000-C7FFF write-protect [ 0.000000] C8000-FFFFF uncachable [ 0.000000] MTRR variable ranges enabled: [ 0.000000] 0 base 000000000 mask FC0000000 write-back [ 0.000000] 1 base 0D0000000 mask FF8000000 write-combining [ 0.000000] 2 base 0D0000000 mask FF8000000 write-combining [ 0.000000] 3 disabled [ 0.000000] 4 disabled [ 0.000000] 5 disabled [ 0.000000] 6 disabled [ 0.000000] 7 disabled [ 0.000000] x86 PAT enabled: cpu 0, old 0x7040600070406, new 0x7010600070106 [ 0.000000] Scanning 0 areas for low memory corruption [ 0.000000] modified physical RAM map: [ 0.000000] modified: 0000000000000000 - 0000000000010000 (reserved) [ 0.000000] modified: 0000000000010000 - 000000000009fc00 (usable) [ 0.000000] modified: 000000000009fc00 - 00000000000a0000 (reserved) [ 0.000000] modified: 00000000000f0000 - 0000000000100000 (reserved) [ 0.000000] modified: 0000000000100000 - 000000003fff0000 (usable) [ 0.000000] modified: 000000003fff0000 - 000000003fff3000 (ACPI NVS) [ 0.000000] modified: 000000003fff3000 - 0000000040000000 (ACPI data) [ 0.000000] modified: 00000000ffff0000 - 0000000100000000 (reserved) [ 0.000000] initial memory mapped : 0 - 00c00000 [ 0.000000] init_memory_mapping: 0000000000000000-00000000377fe000 [ 0.000000] 0000000000 - 0000400000 page 4k [ 0.000000] 0000400000 - 0037400000 page 2M [ 0.000000] 0037400000 - 00377fe000 page 4k [ 0.000000] kernel direct mapping tables up to 377fe000 @ 15000-1a000 [ 0.000000] RAMDISK: 2f5f2000 - 30034000 [ 0.000000] ACPI: RSDP 000f6a20 00014 (v00 VIA694) [ 0.000000] ACPI: RSDT 3fff3000 00028 (v01 VIA694 AWRDACPI 42302E31 AWRD 00000000) [ 0.000000] ACPI: FACP 3fff3040 00074 (v01 VIA694 AWRDACPI 42302E31 AWRD 00000000) [ 0.000000] ACPI: DSDT 3fff30c0 03147 (v01 VIA694 AWRDACPI 00001000 MSFT 0100000E) [ 0.000000] ACPI: FACS 3fff0000 00040 [ 0.000000] 135MB HIGHMEM available. [ 0.000000] 887MB LOWMEM available. [ 0.000000] mapped low ram: 0 - 377fe000 [ 0.000000] low ram: 0 - 377fe000 [ 0.000000] Zone PFN ranges: [ 0.000000] DMA 0x00000010 -> 0x00001000 [ 0.000000] Normal 0x00001000 -> 0x000377fe [ 0.000000] HighMem 0x000377fe -> 0x0003fff0 [ 0.000000] Movable zone start PFN for each node [ 0.000000] early_node_map[2] active PFN ranges [ 0.000000] 0: 0x00000010 -> 0x0000009f [ 0.000000] 0: 0x00000100 -> 0x0003fff0 [ 0.000000] On node 0 totalpages: 262015 [ 0.000000] free_area_init_node: node 0, pgdat c080f680, node_mem_map c1001200 [ 0.000000] DMA zone: 32 pages used for memmap [ 0.000000] DMA zone: 0 pages reserved [ 0.000000] DMA zone: 3951 pages, LIFO batch:0 [ 0.000000] Normal zone: 1744 pages used for memmap [ 0.000000] Normal zone: 221486 pages, LIFO batch:31 [ 0.000000] HighMem zone: 272 pages used for memmap [ 0.000000] HighMem zone: 34530 pages, LIFO batch:7 [ 0.000000] Using APIC driver default [ 0.000000] ACPI: PM-Timer IO Port: 0x4008 [ 0.000000] SMP: Allowing 1 CPUs, 0 hotplug CPUs [ 0.000000] Local APIC disabled by BIOS -- you can enable it with "lapic" [ 0.000000] APIC: disable apic facility [ 0.000000] APIC: switched to apic NOOP [ 0.000000] nr_irqs_gsi: 16 [ 0.000000] PM: Registered nosave memory: 000000000009f000 - 00000000000a0000 [ 0.000000] PM: Registered nosave memory: 00000000000a0000 - 00000000000f0000 [ 0.000000] PM: Registered nosave memory: 00000000000f0000 - 0000000000100000 [ 0.000000] Allocating PCI resources starting at 40000000 (gap: 40000000:bfff0000) [ 0.000000] Booting paravirtualized kernel on bare hardware [ 0.000000] setup_percpu: NR_CPUS:8 nr_cpumask_bits:8 nr_cpu_ids:1 nr_node_ids:1 [ 0.000000] early_res array is doubled to 64 at [16000 - 167ff] [ 0.000000] PERCPU: Embedded 14 pages/cpu @c1c00000 s36352 r0 d20992 u4194304 [ 0.000000] pcpu-alloc: s36352 r0 d20992 u4194304 alloc=1*4194304 [ 0.000000] pcpu-alloc: [0] 0 [ 0.000000] Built 1 zonelists in Zone order, mobility grouping on. Total pages: 259967 [ 0.000000] Kernel command line: BOOT_IMAGE=/boot/vmlinuz-2.6.35-11-generic root=UUID=0b3657d6-390b-4e64-8870-09e5938786c5 ro quiet splash [ 0.000000] PID hash table entries: 4096 (order: 2, 16384 bytes) [ 0.000000] Dentry cache hash table entries: 131072 (order: 7, 524288 bytes) [ 0.000000] Inode-cache hash table entries: 65536 (order: 6, 262144 bytes) [ 0.000000] Enabling fast FPU save and restore... done. [ 0.000000] Enabling unmasked SIMD FPU exception support... done. [ 0.000000] Initializing CPU#0 [ 0.000000] allocated 5242240 bytes of page_cgroup [ 0.000000] please try 'cgroup_disable=memory' option if you don't want memory cgroups [ 0.000000] Subtract (39 early reservations) [ 0.000000] #1 [0000001000 - 0000002000] EX TRAMPOLINE [ 0.000000] #2 [0000100000 - 00009afb5c] TEXT DATA BSS [ 0.000000] #3 [002f5f2000 - 0030034000] RAMDISK [ 0.000000] #4 [000009fc00 - 0000100000] BIOS reserved [ 0.000000] #5 [00009b0000 - 00009b308a] BRK [ 0.000000] #6 [0000010000 - 0000011000] TRAMPOLINE [ 0.000000] #7 [0000011000 - 0000015000] ACPI WAKEUP [ 0.000000] #8 [0000015000 - 0000016000] PGTABLE [ 0.000000] #9 [0001000000 - 0001001000] BOOTMEM [ 0.000000] #10 [0001001000 - 0001801000] BOOTMEM [ 0.000000] #11 [0001801000 - 0001801004] BOOTMEM [ 0.000000] #12 [0001801040 - 0001801100] BOOTMEM [ 0.000000] #13 [0001801100 - 0001801154] BOOTMEM [ 0.000000] #14 [0001801180 - 0001804180] BOOTMEM [ 0.000000] #15 [0001804180 - 0001804190] BOOTMEM [ 0.000000] #16 [00018041c0 - 0001804dc0] BOOTMEM [ 0.000000] #17 [0001804dc0 - 0001804ea0] BOOTMEM [ 0.000000] #18 [0001804ec0 - 0001804f00] BOOTMEM [ 0.000000] #19 [0001804f00 - 0001804f40] BOOTMEM [ 0.000000] #20 [0001804f40 - 0001804f80] BOOTMEM [ 0.000000] #21 [0001804f80 - 0001804fc0] BOOTMEM [ 0.000000] #22 [0001804fc0 - 0001805000] BOOTMEM [ 0.000000] #23 [0001805000 - 0001805040] BOOTMEM [ 0.000000] #24 [0001805040 - 0001805080] BOOTMEM [ 0.000000] #25 [0001805080 - 0001805090] BOOTMEM [ 0.000000] #26 [00018050c0 - 000180512a] BOOTMEM [ 0.000000] #27 [0001805140 - 00018051aa] BOOTMEM [ 0.000000] #28 [0001c00000 - 0001c0e000] BOOTMEM [ 0.000000] #29 [00018071c0 - 00018071c4] BOOTMEM [ 0.000000] #30 [0001807200 - 0001807204] BOOTMEM [ 0.000000] #31 [0001807240 - 0001807244] BOOTMEM [ 0.000000] #32 [0001807280 - 0001807284] BOOTMEM [ 0.000000] #33 [00018072c0 - 0001807370] BOOTMEM [ 0.000000] #34 [0001807380 - 0001807428] BOOTMEM [ 0.000000] #35 [0001807440 - 000180b440] BOOTMEM [ 0.000000] #36 [000180b440 - 000188b440] BOOTMEM [ 0.000000] #37 [000188b440 - 00018cb440] BOOTMEM [ 0.000000] #38 [0001c0e000 - 000210dd80] BOOTMEM [ 0.000000] Initializing HighMem for node 0 (000377fe:0003fff0) [ 0.000000] Memory: 1014440k/1048512k available (4930k kernel code, 33620k reserved, 2396k data, 684k init, 139208k highmem) [ 0.000000] virtual kernel memory layout: [ 0.000000] fixmap : 0xfff16000 - 0xfffff000 ( 932 kB) [ 0.000000] pkmap : 0xff800000 - 0xffc00000 (4096 kB) [ 0.000000] vmalloc : 0xf7ffe000 - 0xff7fe000 ( 120 MB) [ 0.000000] lowmem : 0xc0000000 - 0xf77fe000 ( 887 MB) [ 0.000000] .init : 0xc0828000 - 0xc08d3000 ( 684 kB) [ 0.000000] .data : 0xc05d0b9a - 0xc0827f68 (2396 kB) [ 0.000000] .text : 0xc0100000 - 0xc05d0b9a (4930 kB) [ 0.000000] Checking if this processor honours the WP bit even in supervisor mode...Ok. [ 0.000000] SLUB: Genslabs=13, HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1 [ 0.000000] Hierarchical RCU implementation. [ 0.000000] RCU dyntick-idle grace-period acceleration is enabled. [ 0.000000] RCU-based detection of stalled CPUs is disabled. [ 0.000000] Verbose stalled-CPUs detection is disabled. [ 0.000000] NR_IRQS:2304 nr_irqs:256 [ 0.000000] Console: colour dummy device 80x25 [ 0.000000] console [tty0] enabled [ 0.000000] Fast TSC calibration using PIT [ 0.000000] Detected 1539.999 MHz processor. [ 0.008008] Calibrating delay loop (skipped), value calculated using timer frequency.. 3079.99 BogoMIPS (lpj=6159996) [ 0.008018] pid_max: default: 32768 minimum: 301 [ 0.008072] Security Framework initialized [ 0.008122] AppArmor: AppArmor initialized [ 0.008127] Yama: becoming mindful. [ 0.008246] Mount-cache hash table entries: 512 [ 0.008514] Initializing cgroup subsys ns [ 0.008522] Initializing cgroup subsys cpuacct [ 0.008531] Initializing cgroup subsys memory [ 0.008548] Initializing cgroup subsys devices [ 0.008554] Initializing cgroup subsys freezer [ 0.008559] Initializing cgroup subsys net_cls [ 0.008610] mce: CPU supports 4 MCE banks [ 0.008646] Performance Events: [ 0.008651] no APIC, boot with the "lapic" boot parameter to force-enable it. [ 0.008656] no hardware sampling interrupt available. [ 0.008660] AMD PMU driver. [ 0.008670] ... version: 0 [ 0.008674] ... bit width: 48 [ 0.008678] ... generic registers: 4 [ 0.008682] ... value mask: 0000ffffffffffff [ 0.008686] ... max period: 00007fffffffffff [ 0.008690] ... fixed-purpose events: 0 [ 0.008694] ... event mask: 000000000000000f [ 0.012917] SMP alternatives: switching to UP code [ 0.023740] Freeing SMP alternatives: 24k freed [ 0.023799] ACPI: Core revision 20100428 [ 0.030345] ACPI: setting ELCR to 0200 (from 0ea0) [ 0.032217] ftrace: converting mcount calls to 0f 1f 44 00 00 [ 0.032233] ftrace: allocating 21734 entries in 43 pages [ 0.036184] weird, boot CPU (#0) not listed by the BIOS. [ 0.036191] SMP motherboard not detected. [ 0.036195] Local APIC not detected. Using dummy APIC emulation. [ 0.036199] SMP disabled [ 0.036671] Brought up 1 CPUs [ 0.036676] Total of 1 processors activated (3079.99 BogoMIPS). [ 0.040314] devtmpfs: initialized [ 0.042216] regulator: core version 0.5 [ 0.042254] Time: 19:19:24 Date: 07/28/10 [ 0.042318] NET: Registered protocol family 16 [ 0.042539] EISA bus registered [ 0.042559] ACPI: bus type pci registered [ 0.044783] PCI: PCI BIOS revision 2.10 entry at 0xfb3e0, last bus=1 [ 0.044787] PCI: Using configuration type 1 for base access [ 0.046443] bio: create slab at 0 [ 0.047395] ACPI: EC: Look up EC in DSDT [ 0.052304] ACPI: Interpreter enabled [ 0.052309] ACPI: (supports S0 S1 S4 S5) [ 0.052346] ACPI: Using PIC for interrupt routing [ 0.057207] ACPI: No dock devices found. [ 0.057215] PCI: Ignoring host bridge windows from ACPI; if necessary, use "pci=use_crs" and report a bug [ 0.057377] ACPI: PCI Root Bridge [PCI0] (domain 0000 [bus 00-ff]) [ 0.057660] pci_root PNP0A03:00: host bridge window [io 0x0000-0x0cf7] (ignored) [ 0.057666] pci_root PNP0A03:00: host bridge window [io 0x0d00-0xffff] (ignored) [ 0.057671] pci_root PNP0A03:00: host bridge window [mem 0x000a0000-0x000bffff] (ignored) [ 0.057675] pci_root PNP0A03:00: host bridge window [mem 0x000c0000-0x000dffff] (ignored) [ 0.057680] pci_root PNP0A03:00: host bridge window [mem 0x40000000-0xffefffff] (ignored) [ 0.057714] pci 0000:00:00.0: reg 10: [mem 0xd0000000-0xd7ffffff pref] [ 0.057814] pci 0000:00:01.0: supports D1 [ 0.057853] pci 0000:00:09.0: reg 10: [mem 0xe2004000-0xe2004fff] [ 0.057894] pci 0000:00:09.0: supports D1 D2 [ 0.057898] pci 0000:00:09.0: PME# supported from D0 D1 D2 D3hot [ 0.057904] pci 0000:00:09.0: PME# disabled [ 0.057936] pci 0000:00:09.1: reg 10: [mem 0xe2002000-0xe2002fff] [ 0.057976] pci 0000:00:09.1: supports D1 D2 [ 0.057980] pci 0000:00:09.1: PME# supported from D0 D1 D2 D3hot [ 0.057985] pci 0000:00:09.1: PME# disabled [ 0.058016] pci 0000:00:09.2: reg 10: [mem 0xe2003000-0xe20030ff] [ 0.058057] pci 0000:00:09.2: supports D1 D2 [ 0.058060] pci 0000:00:09.2: PME# supported from D0 D1 D2 D3hot [ 0.058066] pci 0000:00:09.2: PME# disabled [ 0.058105] pci 0000:00:0a.0: reg 10: [mem 0xe2000000-0xe2001fff] [ 0.058176] pci 0000:00:0b.0: reg 10: [io 0xd000-0xd01f] [ 0.058217] pci 0000:00:0b.0: supports D1 D2 [ 0.058247] pci 0000:00:0b.1: reg 10: [io 0xd400-0xd407] [ 0.058288] pci 0000:00:0b.1: supports D1 D2 [ 0.058345] pci 0000:00:10.0: reg 20: [io 0xd800-0xd81f] [ 0.058371] pci 0000:00:10.0: supports D1 D2 [ 0.058375] pci 0000:00:10.0: PME# supported from D0 D1 D2 D3hot D3cold [ 0.058380] pci 0000:00:10.0: PME# disabled [ 0.058426] pci 0000:00:10.1: reg 20: [io 0xdc00-0xdc1f] [ 0.058452] pci 0000:00:10.1: supports D1 D2 [ 0.058456] pci 0000:00:10.1: PME# supported from D0 D1 D2 D3hot D3cold [ 0.058461] pci 0000:00:10.1: PME# disabled [ 0.058507] pci 0000:00:10.2: reg 20: [io 0xe000-0xe01f] [ 0.058533] pci 0000:00:10.2: supports D1 D2 [ 0.058536] pci 0000:00:10.2: PME# supported from D0 D1 D2 D3hot D3cold [ 0.058542] pci 0000:00:10.2: PME# disabled [ 0.058573] pci 0000:00:10.3: reg 10: [mem 0xe2005000-0xe20050ff] [ 0.058614] pci 0000:00:10.3: supports D1 D2 [ 0.058617] pci 0000:00:10.3: PME# supported from D0 D1 D2 D3hot D3cold [ 0.058623] pci 0000:00:10.3: PME# disabled [ 0.058684] HPET not enabled in BIOS. You might try hpet=force boot option [ 0.058694] pci 0000:00:11.0: quirk: [io 0x4000-0x407f] claimed by vt8235 PM [ 0.058700] pci 0000:00:11.0: quirk: [io 0x5000-0x500f] claimed by vt8235 SMB [ 0.058764] pci 0000:00:11.1: reg 20: [io 0xe400-0xe40f] [ 0.058864] pci 0000:01:00.0: reg 10: [mem 0xe0000000-0xe0ffffff] [ 0.058872] pci 0000:01:00.0: reg 14: [mem 0xd8000000-0xdfffffff pref] [ 0.058892] pci 0000:01:00.0: reg 30: [mem 0x00000000-0x0001ffff pref] [ 0.058943] pci 0000:00:01.0: PCI bridge to [bus 01-01] [ 0.058949] pci 0000:00:01.0: bridge window [io 0xf000-0x0000] (disabled) [ 0.058956] pci 0000:00:01.0: bridge window [mem 0xe0000000-0xe1ffffff] [ 0.058962] pci 0000:00:01.0: bridge window [mem 0xd8000000-0xdfffffff pref] [ 0.058972] pci_bus 0000:00: on NUMA node 0 [ 0.058978] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0._PRT] [ 0.085615] ACPI: PCI Interrupt Link [LNKA] (IRQs 1 3 4 5 6 7 *10 11 12 14 15) [ 0.085847] ACPI: PCI Interrupt Link [LNKB] (IRQs 1 3 4 5 6 *7 10 11 12 14 15) [ 0.086080] ACPI: PCI Interrupt Link [LNKC] (IRQs 1 3 4 5 6 7 10 *11 12 14 15) [ 0.086311] ACPI: PCI Interrupt Link [LNKD] (IRQs 1 3 4 *5 6 7 10 11 12 14 15) [ 0.086381] HEST: Table is not found! [ 0.086545] vgaarb: device added: PCI:0000:01:00.0,decodes=io+mem,owns=io+mem,locks=none [ 0.086549] vgaarb: loaded [ 0.086847] SCSI subsystem initialized [ 0.086989] libata version 3.00 loaded. [ 0.087098] usbcore: registered new interface driver usbfs [ 0.087120] usbcore: registered new interface driver hub [ 0.087172] usbcore: registered new device driver usb [ 0.087403] ACPI: WMI: Mapper loaded [ 0.087406] PCI: Using ACPI for IRQ routing [ 0.087413] PCI: pci_cache_line_size set to 32 bytes [ 0.087481] reserve RAM buffer: 000000000009fc00 - 000000000009ffff [ 0.087486] reserve RAM buffer: 000000003fff0000 - 000000003fffffff [ 0.087671] NetLabel: Initializing [ 0.087675] NetLabel: domain hash size = 128 [ 0.087677] NetLabel: protocols = UNLABELED CIPSOv4 [ 0.087703] NetLabel: unlabeled traffic allowed by default [ 0.087778] Switching to clocksource tsc [ 0.102453] AppArmor: AppArmor Filesystem Enabled [ 0.102491] pnp: PnP ACPI init [ 0.102527] ACPI: bus type pnp registered [ 0.103824] ERROR: Unable to locate IOAPIC for GSI 8 [ 0.103923] ERROR: Unable to locate IOAPIC for GSI 13 [ 0.104390] ERROR: Unable to locate IOAPIC for GSI 6 [ 0.105457] pnp: PnP ACPI: found 10 devices [ 0.105461] ACPI: ACPI bus type pnp unregistered [ 0.105467] PnPBIOS: Disabled by ACPI PNP [ 0.105490] system 00:00: [mem 0x000d0000-0x000d3fff] has been reserved [ 0.105496] system 00:00: [mem 0x000f0000-0x000f7fff] could not be reserved [ 0.105502] system 00:00: [mem 0x000f8000-0x000fbfff] could not be reserved [ 0.105507] system 00:00: [mem 0x000fc000-0x000fffff] could not be reserved [ 0.105512] system 00:00: [mem 0x3fff0000-0x3fffffff] could not be reserved [ 0.105518] system 00:00: [mem 0xffff0000-0xffffffff] has been reserved [ 0.105523] system 00:00: [mem 0x00000000-0x0009ffff] could not be reserved [ 0.105528] system 00:00: [mem 0x00100000-0x3ffeffff] could not be reserved [ 0.105534] system 00:00: [mem 0xfee00000-0xfee00fff] has been reserved [ 0.105539] system 00:00: [mem 0xfff80000-0xfffeffff] has been reserved [ 0.105549] system 00:02: [io 0x4000-0x407f] has been reserved [ 0.105554] system 00:02: [io 0x5000-0x500f] has been reserved [ 0.105563] system 00:03: [io 0x04d0-0x04d1] has been reserved [ 0.105568] system 00:03: [io 0x0800-0x0805] has been reserved [ 0.105572] system 00:03: [io 0x0290-0x0297] has been reserved [ 0.140426] pci 0000:01:00.0: BAR 6: assigned [mem 0xe1000000-0xe101ffff pref] [ 0.140434] pci 0000:00:01.0: PCI bridge to [bus 01-01] [ 0.140438] pci 0000:00:01.0: bridge window [io disabled] [ 0.140446] pci 0000:00:01.0: bridge window [mem 0xe0000000-0xe1ffffff] [ 0.140452] pci 0000:00:01.0: bridge window [mem 0xd8000000-0xdfffffff pref] [ 0.140472] pci 0000:00:01.0: setting latency timer to 64 [ 0.140479] pci_bus 0000:00: resource 0 [io 0x0000-0xffff] [ 0.140483] pci_bus 0000:00: resource 1 [mem 0x00000000-0xffffffff] [ 0.140488] pci_bus 0000:01: resource 1 [mem 0xe0000000-0xe1ffffff] [ 0.140492] pci_bus 0000:01: resource 2 [mem 0xd8000000-0xdfffffff pref] [ 0.140566] NET: Registered protocol family 2 [ 0.140672] IP route cache hash table entries: 32768 (order: 5, 131072 bytes) [ 0.141230] TCP established hash table entries: 131072 (order: 8, 1048576 bytes) [ 0.143944] TCP bind hash table entries: 65536 (order: 7, 524288 bytes) [ 0.145309] TCP: Hash tables configured (established 131072 bind 65536) [ 0.145315] TCP reno registered [ 0.145324] UDP hash table entries: 512 (order: 2, 16384 bytes) [ 0.145365] UDP-Lite hash table entries: 512 (order: 2, 16384 bytes) [ 0.145561] NET: Registered protocol family 1 [ 0.145590] pci 0000:00:01.0: disabling DAC on VIA PCI bridge [ 0.145736] pci 0000:01:00.0: Boot video device [ 0.145742] PCI: CLS 32 bytes, default 32 [ 0.146117] cpufreq-nforce2: No nForce2 chipset. [ 0.146161] Scanning for low memory corruption every 60 seconds [ 0.146342] audit: initializing netlink socket (disabled) [ 0.146363] type=2000 audit(1280344764.144:1): initialized [ 0.160574] Trying to unpack rootfs image as initramfs... [ 0.176620] highmem bounce pool size: 64 pages [ 0.176633] HugeTLB registered 4 MB page size, pre-allocated 0 pages [ 0.182748] VFS: Disk quotas dquot_6.5.2 [ 0.182864] Dquot-cache hash table entries: 1024 (order 0, 4096 bytes) [ 0.188393] fuse init (API version 7.14) [ 0.188626] msgmni has been set to 1709 [ 0.192437] alg: No test for stdrng (krng) [ 0.192621] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 253) [ 0.192626] io scheduler noop registered [ 0.192630] io scheduler deadline registered [ 0.192648] io scheduler cfq registered (default) [ 0.192859] pci_hotplug: PCI Hot Plug PCI Core version: 0.5 [ 0.192898] pciehp: PCI Express Hot Plug Controller Driver version: 0.4 [ 0.193201] vesafb: framebuffer at 0xd812c000, mapped to 0xf8080000, using 1216k, total 1216k [ 0.193206] vesafb: mode is 640x480x32, linelength=2560, pages=0 [ 0.193210] vesafb: scrolling: redraw [ 0.193215] vesafb: Truecolor: size=8:8:8:8, shift=24:16:8:0 [ 0.226653] Console: switching to colour frame buffer device 80x30 [ 0.259834] fb0: VESA VGA frame buffer device [ 0.324771] input: Power Button as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0C:00/input/input0 [ 0.324781] ACPI: Power Button [PWRB] [ 0.324863] input: Sleep Button as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0E:00/input/input1 [ 0.324875] ACPI: Sleep Button [SLPB] [ 0.324962] input: Power Button as /devices/LNXSYSTM:00/LNXPWRBN:00/input/input2 [ 0.324966] ACPI: Power Button [PWRF] [ 0.325042] ACPI: Fan [FAN] (on) [ 0.325335] ACPI: acpi_idle registered with cpuidle [ 0.325386] Marking TSC unstable due to TSC halts in idle [ 0.332576] Switching to clocksource acpi_pm [ 0.332890] thermal LNXTHERM:01: registered as thermal_zone0 [ 0.332909] ACPI: Thermal Zone [THRM] (40 C) [ 0.333040] ERST: Table is not found! [ 0.340471] Serial: 8250/16550 driver, 4 ports, IRQ sharing enabled [ 0.342744] brd: module loaded [ 0.343629] loop: module loaded [ 0.344142] isapnp: Scanning for PnP cards... [ 0.352840] ACPI: PCI Interrupt Link [LNKA] enabled at IRQ 10 [ 0.352849] PCI: setting IRQ 10 as level-triggered [ 0.352858] pata_acpi 0000:00:11.1: PCI INT A -> Link[LNKA] -> GSI 10 (level, low) -> IRQ 10 [ 0.352865] pata_acpi 0000:00:11.1: VIA VLink IRQ fixup, from 255 to 10 [ 0.352993] pata_acpi 0000:00:11.1: PCI INT A disabled [ 0.353570] Fixed MDIO Bus: probed [ 0.353637] PPP generic driver version 2.4.2 [ 0.353757] tun: Universal TUN/TAP device driver, 1.6 [ 0.353761] tun: (C) 1999-2004 Max Krasnyansky [ 0.353926] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver [ 0.354384] ACPI: PCI Interrupt Link [LNKD] enabled at IRQ 5 [ 0.354388] PCI: setting IRQ 5 as level-triggered [ 0.354396] ehci_hcd 0000:00:09.2: PCI INT C -> Link[LNKD] -> GSI 5 (level, low) -> IRQ 5 [ 0.354429] ehci_hcd 0000:00:09.2: EHCI Host Controller [ 0.354493] ehci_hcd 0000:00:09.2: new USB bus registered, assigned bus number 1 [ 0.404446] ehci_hcd 0000:00:09.2: irq 5, io mem 0xe2003000 [ 0.416273] ehci_hcd 0000:00:09.2: USB 2.0 started, EHCI 1.00 [ 0.416583] hub 1-0:1.0: USB hub found [ 0.416594] hub 1-0:1.0: 3 ports detected [ 0.416722] ehci_hcd 0000:00:10.3: PCI INT D -> Link[LNKD] -> GSI 5 (level, low) -> IRQ 5 [ 0.416758] ehci_hcd 0000:00:10.3: EHCI Host Controller [ 0.416841] ehci_hcd 0000:00:10.3: new USB bus registered, assigned bus number 2 [ 0.416911] ehci_hcd 0000:00:10.3: irq 5, io mem 0xe2005000 [ 0.428471] ehci_hcd 0000:00:10.3: USB 2.0 started, EHCI 1.00 [ 0.428798] hub 2-0:1.0: USB hub found [ 0.428812] hub 2-0:1.0: 6 ports detected [ 0.428930] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver [ 0.429501] ACPI: PCI Interrupt Link [LNKB] enabled at IRQ 7 [ 0.429506] PCI: setting IRQ 7 as level-triggered [ 0.429515] ohci_hcd 0000:00:09.0: PCI INT A -> Link[LNKB] -> GSI 7 (level, low) -> IRQ 7 [ 0.429549] ohci_hcd 0000:00:09.0: OHCI Host Controller [ 0.429623] ohci_hcd 0000:00:09.0: new USB bus registered, assigned bus number 3 [ 0.429663] ohci_hcd 0000:00:09.0: irq 7, io mem 0xe2004000 [ 0.548891] hub 3-0:1.0: USB hub found [ 0.548905] hub 3-0:1.0: 2 ports detected [ 0.549628] ACPI: PCI Interrupt Link [LNKC] enabled at IRQ 11 [ 0.549633] PCI: setting IRQ 11 as level-triggered [ 0.549642] ohci_hcd 0000:00:09.1: PCI INT B -> Link[LNKC] -> GSI 11 (level, low) -> IRQ 11 [ 0.549676] ohci_hcd 0000:00:09.1: OHCI Host Controller [ 0.549753] ohci_hcd 0000:00:09.1: new USB bus registered, assigned bus number 4 [ 0.549793] ohci_hcd 0000:00:09.1: irq 11, io mem 0xe2002000 [ 0.664791] hub 4-0:1.0: USB hub found [ 0.664806] hub 4-0:1.0: 1 port detected [ 0.664922] uhci_hcd: USB Universal Host Controller Interface driver [ 0.665027] uhci_hcd 0000:00:10.0: PCI INT A -> Link[LNKA] -> GSI 10 (level, low) -> IRQ 10 [ 0.665046] uhci_hcd 0000:00:10.0: UHCI Host Controller [ 0.665124] uhci_hcd 0000:00:10.0: new USB bus registered, assigned bus number 5 [ 0.665164] uhci_hcd 0000:00:10.0: irq 10, io base 0x0000d800 [ 0.665367] hub 5-0:1.0: USB hub found [ 0.665375] hub 5-0:1.0: 2 ports detected [ 0.665459] uhci_hcd 0000:00:10.1: PCI INT B -> Link[LNKB] -> GSI 7 (level, low) -> IRQ 7 [ 0.665470] uhci_hcd 0000:00:10.1: UHCI Host Controller [ 0.665535] uhci_hcd 0000:00:10.1: new USB bus registered, assigned bus number 6 [ 0.665562] uhci_hcd 0000:00:10.1: irq 7, io base 0x0000dc00 [ 0.665774] hub 6-0:1.0: USB hub found [ 0.665784] hub 6-0:1.0: 2 ports detected [ 0.665857] uhci_hcd 0000:00:10.2: PCI INT C -> Link[LNKC] -> GSI 11 (level, low) -> IRQ 11 [ 0.665868] uhci_hcd 0000:00:10.2: UHCI Host Controller [ 0.665922] uhci_hcd 0000:00:10.2: new USB bus registered, assigned bus number 7 [ 0.665952] uhci_hcd 0000:00:10.2: irq 11, io base 0x0000e000 [ 0.666154] hub 7-0:1.0: USB hub found [ 0.666161] hub 7-0:1.0: 2 ports detected [ 0.666321] PNP: No PS/2 controller found. Probing ports directly. [ 0.672468] serio: i8042 KBD port at 0x60,0x64 irq 1 [ 0.672492] serio: i8042 AUX port at 0x60,0x64 irq 12 [ 0.672795] mice: PS/2 mouse device common for all mice [ 0.673017] rtc_cmos 00:05: RTC can wake from S4 [ 0.673132] rtc_cmos 00:05: rtc core: registered rtc_cmos as rtc0 [ 0.673161] rtc0: alarms up to one year, y3k, 242 bytes nvram [ 0.673363] device-mapper: uevent: version 1.0.3 [ 0.673585] device-mapper: ioctl: 4.17.0-ioctl (2010-03-05) initialised: dm-devel@redhat.com [ 0.680138] device-mapper: multipath: version 1.1.1 loaded [ 0.680148] device-mapper: multipath round-robin: version 1.0.0 loaded [ 0.680512] EISA: Probing bus 0 at eisa.0 [ 0.680536] Cannot allocate resource for EISA slot 4 [ 0.680540] Cannot allocate resource for EISA slot 5 [ 0.680555] EISA: Detected 0 cards. [ 0.728337] cpuidle: using governor ladder [ 0.728419] cpuidle: using governor menu [ 0.728908] TCP cubic registered [ 0.729175] NET: Registered protocol family 10 [ 0.729700] lo: Disabled Privacy Extensions [ 0.730007] NET: Registered protocol family 17 [ 0.730075] powernow-k8: Processor cpuid 662 not supported [ 0.730110] Using IPI No-Shortcut mode [ 0.730317] PM: Resume from disk failed. [ 0.730339] registered taskstats version 1 [ 0.730598] Magic number: 2:398:345 [ 0.730653] tty tty62: hash matches [ 0.730774] rtc_cmos 00:05: setting system clock to 2010-07-28 19:19:24 UTC (1280344764) [ 0.730780] BIOS EDD facility v0.16 2004-Jun-25, 0 devices found [ 0.730782] EDD information not available. [ 0.992052] isapnp: No Plug & Play device found [ 1.078671] Freeing initrd memory: 10504k freed [ 1.101993] Freeing unused kernel memory: 684k freed [ 1.103554] Write protecting the kernel text: 4932k [ 1.103604] Write protecting the kernel read-only data: 2012k [ 1.142512] udev: starting version 151 [ 1.408139] usb 3-2: new full speed USB device using ohci_hcd and address 2 [ 1.450068] Floppy drive(s): fd0 is 1.44M [ 1.463386] pata_via 0000:00:11.1: version 0.3.4 [ 1.463419] pata_via 0000:00:11.1: PCI INT A -> Link[LNKA] -> GSI 10 (level, low) -> IRQ 10 [ 1.463427] pata_via 0000:00:11.1: VIA VLink IRQ fixup, from 255 to 10 [ 1.493393] scsi0 : pata_via [ 1.497181] FDC 0 is a post-1991 82077 [ 1.506607] scsi1 : pata_via [ 1.510935] ata1: PATA max UDMA/133 cmd 0x1f0 ctl 0x3f6 bmdma 0xe400 irq 14 [ 1.510941] ata2: PATA max UDMA/133 cmd 0x170 ctl 0x376 bmdma 0xe408 irq 15 [ 1.681348] ata1.00: ATA-6: WDC WD800JB-00ETA0, 77.07W77, max UDMA/100 [ 1.681356] ata1.00: 156301488 sectors, multi 16: LBA48 [ 1.682318] ata1.01: ATA-5: WDC WD400BB-53AUA1, 18.20D18, max UDMA/100 [ 1.682323] ata1.01: 78165360 sectors, multi 16: LBA [ 1.682355] ata1.00: limited to UDMA/33 due to 40-wire cable [ 1.682359] ata1.01: limited to UDMA/33 due to 40-wire cable [ 1.697235] ata1.00: configured for UDMA/33 [ 1.713177] ata1.01: configured for UDMA/33 [ 1.713386] scsi 0:0:0:0: Direct-Access ATA WDC WD800JB-00ET 77.0 PQ: 0 ANSI: 5 [ 1.713689] sd 0:0:0:0: Attached scsi generic sg0 type 0 [ 1.714232] scsi 0:0:1:0: Direct-Access ATA WDC WD400BB-53AU 18.2 PQ: 0 ANSI: 5 [ 1.714593] sd 0:0:1:0: Attached scsi generic sg1 type 0 [ 1.714973] sd 0:0:0:0: [sda] 156301488 512-byte logical blocks: (80.0 GB/74.5 GiB) [ 1.715069] sd 0:0:0:0: [sda] Write Protect is off [ 1.715074] sd 0:0:0:0: [sda] Mode Sense: 00 3a 00 00 [ 1.715113] sd 0:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA [ 1.715388] sda: sda1 sda2 < sda5 > [ 1.755210] sd 0:0:0:0: [sda] Attached SCSI disk [ 1.755233] sd 0:0:1:0: [sdb] 78165360 512-byte logical blocks: (40.0 GB/37.2 GiB) [ 1.755315] sd 0:0:1:0: [sdb] Write Protect is off [ 1.755320] sd 0:0:1:0: [sdb] Mode Sense: 00 3a 00 00 [ 1.755357] sd 0:0:1:0: [sdb] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA [ 1.755624] sdb: sdb1 [ 1.777658] sd 0:0:1:0: [sdb] Attached SCSI disk [ 1.836053] usb 4-1: new full speed USB device using ohci_hcd and address 2 [ 2.052807] ata2.00: ATAPI: MATSHITA CD-RW CW-7585, 1.04, max MWDMA2 [ 2.052853] ata2.01: ATAPI: Memorex 48MAXX 1248AJ, VWS4, max UDMA/33 [ 2.060329] ata2.00: configured for MWDMA2 [ 2.076283] ata2.01: configured for UDMA/33 [ 2.084797] scsi 1:0:0:0: CD-ROM MATSHITA CD-RW CW-7585 1.04 PQ: 0 ANSI: 5 [ 2.086887] sr0: scsi3-mmc drive: 8x/32x writer cd/rw xa/form2 cdda tray [ 2.086894] Uniform CD-ROM driver Revision: 3.20 [ 2.087378] sr 1:0:0:0: Attached scsi CD-ROM sr0 [ 2.087591] sr 1:0:0:0: Attached scsi generic sg2 type 5 [ 2.093505] scsi 1:0:1:0: CD-ROM Memorex 48MAXX 1248AJ VWS4 PQ: 0 ANSI: 5 [ 2.142615] sr1: scsi3-mmc drive: 48x/48x writer cd/rw xa/form2 cdda tray [ 2.143157] sr 1:0:1:0: Attached scsi CD-ROM sr1 [ 2.143376] sr 1:0:1:0: Attached scsi generic sg3 type 5 [ 2.288061] usb 5-2: new low speed USB device using uhci_hcd and address 2 [ 2.524862] usbcore: registered new interface driver hiddev [ 2.540592] input: Microsoft Microsoft® Digital Media Pro Keyboard as /devices/pci0000:00/0000:00:10.0/usb5/5-2/5-2:1.0/input/input3 [ 2.541433] generic-usb 0003:045E:00B0.0001: input,hidraw0: USB HID v1.11 Keyboard [Microsoft Microsoft® Digital Media Pro Keyboard] on usb-0000:00:10.0-2/input0 [ 2.572413] input: Microsoft Microsoft® Digital Media Pro Keyboard as /devices/pci0000:00/0000:00:10.0/usb5/5-2/5-2:1.1/input/input4 [ 2.572704] generic-usb 0003:045E:00B0.0002: input,hidraw1: USB HID v1.11 Device [Microsoft Microsoft® Digital Media Pro Keyboard] on usb-0000:00:10.0-2/input1 [ 2.572963] usbcore: registered new interface driver usbhid [ 2.572967] usbhid: USB HID core driver [ 2.712051] usb 6-2: new low speed USB device using uhci_hcd and address 2 [ 2.905661] input: Logitech USB-PS/2 Optical Mouse as /devices/pci0000:00/0000:00:10.1/usb6/6-2/6-2:1.0/input/input5 [ 2.906528] generic-usb 0003:046D:C00E.0003: input,hidraw2: USB HID v1.10 Mouse [Logitech USB-PS/2 Optical Mouse] on usb-0000:00:10.1-2/input0 [ 7.541130] EXT4-fs (sda5): INFO: recovery required on readonly filesystem [ 7.541141] EXT4-fs (sda5): write access will be enabled during recovery [ 7.624199] EXT4-fs (sda5): recovery complete [ 7.624657] EXT4-fs (sda5): mounted filesystem with ordered data mode. Opts: (null) [ 23.748573] Adding 14370104k swap on /dev/sdb1. Priority:-1 extents:1 across:14370104k [ 23.796155] EXT4-fs (sda5): re-mounted. Opts: errors=remount-ro [ 23.814352] udev: starting version 151 [ 24.081029] WARNING! power/level is deprecated; use power/control instead [ 24.202626] shpchp: Standard Hot Plug PCI Controller Driver version: 0.4 [ 24.372958] Linux agpgart interface v0.103 [ 24.395801] agpgart: Detected VIA KT266/KY266x/KT333 chipset [ 24.661496] lp: driver loaded but no devices found [ 24.745581] usblp0: USB Bidirectional printer dev 2 if 0 alt 0 proto 2 vid 0x03F0 pid 0x6004 [ 24.745633] usbcore: registered new interface driver usblp [ 24.895600] agpgart-via 0000:00:00.0: AGP aperture is 128M @ 0xd0000000 [ 24.958569] irda_init() [ 24.958607] NET: Registered protocol family 23 [ 25.050395] cfg80211: Calling CRDA to update world regulatory domain [ 25.142991] gameport gameport0: EMU10K1 is pci0000:00:0b.1/gameport0, io 0xd400, speed 1217kHz [ 25.149999] cfg80211: World regulatory domain updated: [ 25.150008] (start_freq - end_freq @ bandwidth), (max_antenna_gain, max_eirp) [ 25.150014] (2402000 KHz - 2472000 KHz @ 40000 KHz), (300 mBi, 2000 mBm) [ 25.150018] (2457000 KHz - 2482000 KHz @ 20000 KHz), (300 mBi, 2000 mBm) [ 25.150023] (2474000 KHz - 2494000 KHz @ 20000 KHz), (300 mBi, 2000 mBm) [ 25.150027] (5170000 KHz - 5250000 KHz @ 40000 KHz), (300 mBi, 2000 mBm) [ 25.150032] (5735000 KHz - 5835000 KHz @ 40000 KHz), (300 mBi, 2000 mBm) [ 25.186217] [drm] Initialized drm 1.1.0 20060810 [ 25.527290] type=1400 audit(1280359189.292:2): operation="profile_load" pid=610 name="/sbin/dhclient3" pid=610 comm="apparmor_parser" [ 25.527742] type=1400 audit(1280359189.292:3): operation="profile_load" pid=610 name="/usr/lib/NetworkManager/nm-dhcp-client.action" pid=610 comm="apparmor_parser" [ 25.527998] type=1400 audit(1280359189.292:4): operation="profile_load" pid=610 name="/usr/lib/connman/scripts/dhclient-script" pid=610 comm="apparmor_parser" [ 25.884967] rt2500pci 0000:00:0a.0: PCI INT A -> Link[LNKC] -> GSI 11 (level, low) -> IRQ 11 [ 25.929675] nouveau 0000:01:00.0: PCI INT A -> Link[LNKA] -> GSI 10 (level, low) -> IRQ 10 [ 26.015747] [drm] nouveau 0000:01:00.0: Detected an NV30 generation card (0x034200b1) [ 26.015758] checking generic (d812c000 130000) vs hw (d8000000 8000000) [ 26.015763] fb: conflicting fb hw usage nouveaufb vs VESA VGA - removing generic driver [ 26.017362] Console: switching to colour dummy device 80x25 [ 26.019986] [drm] nouveau 0000:01:00.0: Attempting to load BIOS image from PROM [ 26.140334] [drm] nouveau 0000:01:00.0: ... appears to be valid [ 26.140579] [drm] nouveau 0000:01:00.0: BMP BIOS found [ 26.140584] [drm] nouveau 0000:01:00.0: BMP version 5.41 [ 26.140589] [drm] nouveau 0000:01:00.0: Bios version 04.34.20.87 [ 26.140595] [drm] nouveau 0000:01:00.0: Found Display Configuration Block version 2.2 [ 26.140601] [drm] nouveau 0000:01:00.0: Raw DCB entry 0: 01000300 000088b8 [ 26.140608] [drm] nouveau 0000:01:00.0: Raw DCB entry 1: 02020321 00000303 [ 26.140612] [drm] nouveau 0000:01:00.0: Raw DCB entry 2: 01010312 00000300 [ 26.140874] [drm] nouveau 0000:01:00.0: Loading NV17 power sequencing microcode [ 26.140881] [drm] nouveau 0000:01:00.0: Parsing VBIOS init table 0 at offset 0xED03 [ 26.505329] type=1400 audit(1280359190.272:5): operation="profile_load" pid=803 name="/usr/share/gdm/guest-session/Xsession" pid=803 comm="apparmor_parser" [ 26.508994] type=1400 audit(1280359190.276:6): operation="profile_replace" pid=804 name="/sbin/dhclient3" pid=804 comm="apparmor_parser" [ 26.509462] type=1400 audit(1280359190.276:7): operation="profile_replace" pid=804 name="/usr/lib/NetworkManager/nm-dhcp-client.action" pid=804 comm="apparmor_parser" [ 26.509746] type=1400 audit(1280359190.276:8): operation="profile_replace" pid=804 name="/usr/lib/connman/scripts/dhclient-script" pid=804 comm="apparmor_parser" [ 26.520102] type=1400 audit(1280359190.288:9): operation="profile_load" pid=805 name="/usr/bin/evince" pid=805 comm="apparmor_parser" [ 26.534493] [drm] nouveau 0000:01:00.0: Parsing VBIOS init table 1 at offset 0xEF9E [ 26.534533] [drm] nouveau 0000:01:00.0: Parsing VBIOS init table 2 at offset 0xF0E4 [ 26.534573] [drm] nouveau 0000:01:00.0: Parsing VBIOS init table 3 at offset 0xF26D [ 26.534580] [drm] nouveau 0000:01:00.0: Parsing VBIOS init table 4 at offset 0xF28A [ 26.534587] [drm] nouveau 0000:01:00.0: Parsing VBIOS init table 5 at offset 0xF2A7 [ 26.537591] type=1400 audit(1280359190.304:10): operation="profile_load" pid=805 name="/usr/bin/evince-previewer" pid=805 comm="apparmor_parser" [ 26.540212] [drm] nouveau 0000:01:00.0: Parsing VBIOS init table 6 at offset 0xF440 [ 26.540223] [drm] nouveau 0000:01:00.0: Detected 128MiB VRAM [ 26.556475] type=1400 audit(1280359190.324:11): operation="profile_load" pid=805 name="/usr/bin/evince-thumbnailer" pid=805 comm="apparmor_parser" [ 26.569326] [TTM] Zone kernel: Available graphics memory: 443222 kiB. [ 26.569333] [TTM] Zone highmem: Available graphics memory: 512826 kiB. [ 26.569336] [TTM] Initializing pool allocator. [ 26.569490] agpgart-via 0000:00:00.0: AGP 2.0 bridge [ 26.569515] agpgart-via 0000:00:00.0: putting AGP V2 device into 4x mode [ 26.569586] nouveau 0000:01:00.0: putting AGP V2 device into 4x mode [ 26.569591] [drm] nouveau 0000:01:00.0: 128 MiB GART (aperture) [ 26.569965] [drm] nouveau 0000:01:00.0: Allocating FIFO number 0 [ 26.577717] [drm] nouveau 0000:01:00.0: nouveau_channel_alloc: initialised FIFO 0 [ 26.577733] [drm] nouveau 0000:01:00.0: Initial CRTC_OWNER is 0 [ 26.577869] [drm] nouveau 0000:01:00.0: Detected a VGA connector [ 26.578301] [drm] nouveau 0000:01:00.0: Detected a TV connector [ 26.578602] [drm] nouveau 0000:01:00.0: Detected a DVI-D connector [ 26.579888] [drm] nouveau 0000:01:00.0: Setting dpms mode 3 on vga encoder (output 0) [ 26.579895] [drm] nouveau 0000:01:00.0: Setting dpms mode 3 on TV encoder (output 1) [ 26.579904] [drm] nouveau 0000:01:00.0: Setting dpms mode 3 on tmds encoder (output 2) [ 26.637380] phy0: Selected rate control algorithm 'minstrel' [ 26.638311] Registered led device: rt2500pci-phy0::radio [ 26.638340] Registered led device: rt2500pci-phy0::quality [ 26.697823] EMU10K1_Audigy 0000:00:0b.0: PCI INT A -> Link[LNKD] -> GSI 5 (level, low) -> IRQ 5 [ 26.804932] BUG: unable to handle kernel NULL pointer dereference at 0000030c [ 26.804957] IP: [] fb_mmap+0x34/0x170 [ 26.804984] *pde = 3f809067 [ 26.804991] Oops: 0000 [#1] SMP [ 26.804999] last sysfs file: /sys/devices/pci0000:00/0000:00:0a.0/device [ 26.805011] Modules linked in: snd_emu10k1(+) arc4 snd_ac97_codec ac97_bus snd_pcm snd_page_alloc snd_util_mem snd_hwdep nouveau(+) snd_seq_midi rt2500pci rt2x00pci snd_rawmidi rt2x00lib led_class snd_seq_midi_event mac80211 snd_seq ttm snd_timer drm_kms_helper snd_seq_device drm i2c_viapro via_ircc usblp cfg80211 i2c_algo_bit irda psmouse serio_raw emu10k1_gp snd lp via_agp joydev gameport eeprom_93cx6 parport agpgart shpchp crc_ccitt soundcore usbhid hid pata_via floppy [ 26.805103] [ 26.805112] Pid: 278, comm: plymouthd Not tainted 2.6.35-11-generic #16-Ubuntu VT8367-8235/VT8367-8235 [ 26.805125] EIP: 0060:[] EFLAGS: 00010293 CPU: 0 [ 26.805135] EIP is at fb_mmap+0x34/0x170 [ 26.805142] EAX: 00000000 EBX: f397f898 ECX: c05fdd60 EDX: 00000000 [ 26.805151] ESI: 00000000 EDI: b745f000 EBP: f6a73efc ESP: f6a73ed8 [ 26.805160] DS: 007b ES: 007b FS: 00d8 GS: 00e0 SS: 0068 [ 26.805169] Process plymouthd (pid: 278, ti=f6a72000 task=f68b9960 task.ti=f6a72000) [ 26.805179] Stack: [ 26.805184] 00000202 c01f8068 f6980960 0000012c 000080d0 00000058 f6892648 f689264c [ 26.805202] <0> b745f000 f6a73f50 c01f810c b758b000 000000fa 00000000 f48fc580 00000000 [ 26.805221] <0> 00000000 00000000 f6892630 00000000 f73fc060 f48fc580 ffffffea 0000012c [ 26.805241] Call Trace: [ 26.805257] [] ? mmap_region+0x298/0x490 [ 26.805267] [] ? mmap_region+0x33c/0x490 [ 26.805279] [] ? do_mmap_pgoff+0x25c/0x300 [ 26.805290] [] ? sys_mmap_pgoff+0x193/0x1c0 [ 26.805303] [] ? syscall_call+0x7/0xb [ 26.805311] Code: 89 75 f8 89 7d fc 0f 1f 44 00 00 8b 40 0c 89 d3 8b 52 44 8b 40 10 8b 40 34 25 ff ff 0f 00 81 fa ff ff 0f 00 8b 34 85 40 67 82 c0 <8b> 8e 0c 03 00 00 76 14 bf ea ff ff ff 89 f8 8b 5d f4 8b 75 f8 [ 26.805383] EIP: [] fb_mmap+0x34/0x170 SS:ESP 0068:f6a73ed8 [ 26.805396] CR2: 000000000000030c [ 26.805405] ---[ end trace bf8374d0cf10d7a1 ]--- [ 26.845259] ADDRCONF(NETDEV_UP): wlan0: link is not ready [ 26.921075] [drm] nouveau 0000:01:00.0: allocated 800x600 fb: 0x49000, bo f22ffa00 [ 26.935789] [drm] nouveau 0000:01:00.0: Setting dpms mode 0 on vga encoder (output 0) [ 26.935798] [drm] nouveau 0000:01:00.0: Output VGA-1 is running on CRTC 0 using output A [ 26.943051] Console: switching to colour frame buffer device 100x37 [ 26.943724] fb0: nouveaufb frame buffer device [ 26.943738] drm: registered panic notifier [ 26.943754] Slow work thread pool: Starting up [ 26.947992] Slow work thread pool: Ready [ 26.948133] [drm] Initialized nouveau 0.0.16 20090420 for 0000:01:00.0 on minor 0 Bug: 611135 [ 0.000000] Initializing cgroup subsys cpuset [ 0.000000] Initializing cgroup subsys cpu [ 0.000000] Linux version 2.6.35-11-generic (buildd@rothera) (gcc version 4.4.5 20100723 (prerelease) (Ubuntu/Linaro 4.4.4-7ubuntu3) ) #16-Ubuntu SMP Sat Jul 24 21:38:26 UTC 2010 (Ubuntu 2.6.35-11.16-generic 2.6.35-rc5) [ 0.000000] BIOS-provided physical RAM map: [ 0.000000] BIOS-e820: 0000000000000000 - 00000000000a0000 (usable) [ 0.000000] BIOS-e820: 00000000000f0000 - 0000000000100000 (reserved) [ 0.000000] BIOS-e820: 0000000000100000 - 000000003f688c00 (usable) [ 0.000000] BIOS-e820: 000000003f688c00 - 000000003f68ac00 (ACPI NVS) [ 0.000000] BIOS-e820: 000000003f68ac00 - 000000003f68cc00 (ACPI data) [ 0.000000] BIOS-e820: 000000003f68cc00 - 0000000040000000 (reserved) [ 0.000000] BIOS-e820: 00000000e0000000 - 00000000f0000000 (reserved) [ 0.000000] BIOS-e820: 00000000fec00000 - 00000000fed00400 (reserved) [ 0.000000] BIOS-e820: 00000000fed20000 - 00000000feda0000 (reserved) [ 0.000000] BIOS-e820: 00000000fee00000 - 00000000fef00000 (reserved) [ 0.000000] BIOS-e820: 00000000ffb00000 - 0000000100000000 (reserved) [ 0.000000] Notice: NX (Execute Disable) protection cannot be enabled: non-PAE kernel! [ 0.000000] DMI 2.3 present. [ 0.000000] e820 update range: 0000000000000000 - 0000000000001000 (usable) ==> (reserved) [ 0.000000] e820 remove range: 00000000000a0000 - 0000000000100000 (usable) [ 0.000000] last_pfn = 0x3f688 max_arch_pfn = 0x100000 [ 0.000000] MTRR default type: uncachable [ 0.000000] MTRR fixed ranges enabled: [ 0.000000] 00000-9FFFF write-back [ 0.000000] A0000-BFFFF uncachable [ 0.000000] C0000-FFFFF write-protect [ 0.000000] MTRR variable ranges enabled: [ 0.000000] 0 base 000000000 mask FC0000000 write-back [ 0.000000] 1 base 03F800000 mask FFF800000 uncachable [ 0.000000] 2 base 03F700000 mask FFFF00000 uncachable [ 0.000000] 3 disabled [ 0.000000] 4 disabled [ 0.000000] 5 disabled [ 0.000000] 6 disabled [ 0.000000] 7 disabled [ 0.000000] x86 PAT enabled: cpu 0, old 0x7040600070406, new 0x7010600070106 [ 0.000000] e820 update range: 0000000000002000 - 0000000000010000 (usable) ==> (reserved) [ 0.000000] Scanning 1 areas for low memory corruption [ 0.000000] modified physical RAM map: [ 0.000000] modified: 0000000000000000 - 0000000000001000 (reserved) [ 0.000000] modified: 0000000000001000 - 0000000000002000 (usable) [ 0.000000] modified: 0000000000002000 - 0000000000010000 (reserved) [ 0.000000] modified: 0000000000010000 - 00000000000a0000 (usable) [ 0.000000] modified: 00000000000f0000 - 0000000000100000 (reserved) [ 0.000000] modified: 0000000000100000 - 000000003f688c00 (usable) [ 0.000000] modified: 000000003f688c00 - 000000003f68ac00 (ACPI NVS) [ 0.000000] modified: 000000003f68ac00 - 000000003f68cc00 (ACPI data) [ 0.000000] modified: 000000003f68cc00 - 0000000040000000 (reserved) [ 0.000000] modified: 00000000e0000000 - 00000000f0000000 (reserved) [ 0.000000] modified: 00000000fec00000 - 00000000fed00400 (reserved) [ 0.000000] modified: 00000000fed20000 - 00000000feda0000 (reserved) [ 0.000000] modified: 00000000fee00000 - 00000000fef00000 (reserved) [ 0.000000] modified: 00000000ffb00000 - 0000000100000000 (reserved) [ 0.000000] initial memory mapped : 0 - 00c00000 [ 0.000000] found SMP MP-table at [c00fe710] fe710 [ 0.000000] init_memory_mapping: 0000000000000000-00000000377fe000 [ 0.000000] 0000000000 - 0000400000 page 4k [ 0.000000] 0000400000 - 0037400000 page 2M [ 0.000000] 0037400000 - 00377fe000 page 4k [ 0.000000] kernel direct mapping tables up to 377fe000 @ 15000-1a000 [ 0.000000] RAMDISK: 2eee4000 - 2f927000 [ 0.000000] ACPI: RSDP 000fec00 00014 (v00 DELL ) [ 0.000000] ACPI: RSDT 000fcc50 0003C (v01 DELL DV051 00000007 ASL 00000061) [ 0.000000] ACPI: FACP 000fcc8c 00074 (v01 DELL DV051 00000007 ASL 00000061) [ 0.000000] ACPI: DSDT fffc56f3 02D5F (v01 DELL dt_ex 00001000 MSFT 0100000D) [ 0.000000] ACPI: FACS 3f688c00 00040 [ 0.000000] ACPI: SSDT fffc858f 000BA (v01 DELL st_ex 00001000 MSFT 0100000D) [ 0.000000] ACPI: APIC 000fcd00 00092 (v01 DELL DV051 00000007 ASL 00000061) [ 0.000000] ACPI: BOOT 000fcd92 00028 (v01 DELL DV051 00000007 ASL 00000061) [ 0.000000] ACPI: MCFG 000fcdba 0003E (v01 DELL DV051 00000007 ASL 00000061) [ 0.000000] ACPI: HPET 000fcdf8 00038 (v01 DELL DV051 00000007 ASL 00000061) [ 0.000000] ACPI: Local APIC address 0xfee00000 [ 0.000000] 126MB HIGHMEM available. [ 0.000000] 887MB LOWMEM available. [ 0.000000] mapped low ram: 0 - 377fe000 [ 0.000000] low ram: 0 - 377fe000 [ 0.000000] Zone PFN ranges: [ 0.000000] DMA 0x00000001 -> 0x00001000 [ 0.000000] Normal 0x00001000 -> 0x000377fe [ 0.000000] HighMem 0x000377fe -> 0x0003f688 [ 0.000000] Movable zone start PFN for each node [ 0.000000] early_node_map[3] active PFN ranges [ 0.000000] 0: 0x00000001 -> 0x00000002 [ 0.000000] 0: 0x00000010 -> 0x000000a0 [ 0.000000] 0: 0x00000100 -> 0x0003f688 [ 0.000000] On node 0 totalpages: 259609 [ 0.000000] free_area_init_node: node 0, pgdat c080f680, node_mem_map c1001020 [ 0.000000] DMA zone: 32 pages used for memmap [ 0.000000] DMA zone: 0 pages reserved [ 0.000000] DMA zone: 3953 pages, LIFO batch:0 [ 0.000000] Normal zone: 1744 pages used for memmap [ 0.000000] Normal zone: 221486 pages, LIFO batch:31 [ 0.000000] HighMem zone: 254 pages used for memmap [ 0.000000] HighMem zone: 32140 pages, LIFO batch:7 [ 0.000000] Using APIC driver default [ 0.000000] ACPI: PM-Timer IO Port: 0x808 [ 0.000000] ACPI: Local APIC address 0xfee00000 [ 0.000000] ACPI: LAPIC (acpi_id[0x01] lapic_id[0x00] enabled) [ 0.000000] ACPI: LAPIC (acpi_id[0x02] lapic_id[0x01] disabled) [ 0.000000] ACPI: LAPIC (acpi_id[0x03] lapic_id[0x06] disabled) [ 0.000000] ACPI: LAPIC (acpi_id[0x04] lapic_id[0x02] disabled) [ 0.000000] ACPI: LAPIC (acpi_id[0x05] lapic_id[0x04] disabled) [ 0.000000] ACPI: LAPIC (acpi_id[0x06] lapic_id[0x07] disabled) [ 0.000000] ACPI: LAPIC (acpi_id[0x07] lapic_id[0x03] disabled) [ 0.000000] ACPI: LAPIC (acpi_id[0x08] lapic_id[0x05] disabled) [ 0.000000] ACPI: LAPIC_NMI (acpi_id[0xff] high level lint[0x1]) [ 0.000000] ACPI: IOAPIC (id[0x08] address[0xfec00000] gsi_base[0]) [ 0.000000] IOAPIC[0]: apic_id 8, version 32, address 0xfec00000, GSI 0-23 [ 0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 0 global_irq 2 dfl dfl) [ 0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 9 global_irq 9 high level) [ 0.000000] ACPI: IRQ0 used by override. [ 0.000000] ACPI: IRQ2 used by override. [ 0.000000] ACPI: IRQ9 used by override. [ 0.000000] Using ACPI (MADT) for SMP configuration information [ 0.000000] ACPI: HPET id: 0x8086a201 base: 0xfed00000 [ 0.000000] SMP: Allowing 8 CPUs, 7 hotplug CPUs [ 0.000000] nr_irqs_gsi: 40 [ 0.000000] early_res array is doubled to 64 at [16000 - 167ff] [ 0.000000] PM: Registered nosave memory: 0000000000002000 - 0000000000010000 [ 0.000000] PM: Registered nosave memory: 00000000000a0000 - 00000000000f0000 [ 0.000000] PM: Registered nosave memory: 00000000000f0000 - 0000000000100000 [ 0.000000] Allocating PCI resources starting at 40000000 (gap: 40000000:a0000000) [ 0.000000] Booting paravirtualized kernel on bare hardware [ 0.000000] setup_percpu: NR_CPUS:8 nr_cpumask_bits:8 nr_cpu_ids:8 nr_node_ids:1 [ 0.000000] PERCPU: Embedded 14 pages/cpu @c1800000 s36352 r0 d20992 u524288 [ 0.000000] pcpu-alloc: s36352 r0 d20992 u524288 alloc=1*4194304 [ 0.000000] pcpu-alloc: [0] 0 1 2 3 4 5 6 7 [ 0.000000] Built 1 zonelists in Zone order, mobility grouping on. Total pages: 257579 [ 0.000000] Kernel command line: BOOT_IMAGE=/boot/vmlinuz-2.6.35-11-generic root=UUID=8a2f805b-82be-4ee0-9f2a-29fc21915cb4 ro quiet splash [ 0.000000] PID hash table entries: 4096 (order: 2, 16384 bytes) [ 0.000000] Dentry cache hash table entries: 131072 (order: 7, 524288 bytes) [ 0.000000] Inode-cache hash table entries: 65536 (order: 6, 262144 bytes) [ 0.000000] Enabling fast FPU save and restore... done. [ 0.000000] Enabling unmasked SIMD FPU exception support... done. [ 0.000000] Initializing CPU#0 [ 0.000000] early_res array is doubled to 128 at [16800 - 177ff] [ 0.000000] allocated 5194380 bytes of page_cgroup [ 0.000000] please try 'cgroup_disable=memory' option if you don't want memory cgroups [ 0.000000] Subtract (57 early reservations) [ 0.000000] #1 [0000001000 - 0000002000] EX TRAMPOLINE [ 0.000000] #2 [0000100000 - 00009afb5c] TEXT DATA BSS [ 0.000000] #3 [002eee4000 - 002f927000] RAMDISK [ 0.000000] #4 [00009b0000 - 00009b31d0] BRK [ 0.000000] #5 [00000fe720 - 0000100000] BIOS reserved [ 0.000000] #6 [00000fe710 - 00000fe720] MP-table mpf [ 0.000000] #7 [000009fc00 - 00000f0000] BIOS reserved [ 0.000000] #8 [00000f01d0 - 00000fe710] BIOS reserved [ 0.000000] #9 [00000f0000 - 00000f01d0] MP-table mpc [ 0.000000] #10 [0000010000 - 0000011000] TRAMPOLINE [ 0.000000] #11 [0000011000 - 0000015000] ACPI WAKEUP [ 0.000000] #12 [0000015000 - 0000016000] PGTABLE [ 0.000000] #13 [0001000000 - 0001001000] BOOTMEM [ 0.000000] #14 [0001001000 - 00017f1000] BOOTMEM [ 0.000000] #15 [00017f1000 - 00017f1004] BOOTMEM [ 0.000000] #16 [00017f1040 - 00017f1100] BOOTMEM [ 0.000000] #17 [00017f1100 - 00017f1154] BOOTMEM [ 0.000000] #18 [00017f1180 - 00017f4180] BOOTMEM [ 0.000000] #19 [00017f4180 - 00017f418c] BOOTMEM [ 0.000000] #20 [00017f41c0 - 00017f47c0] BOOTMEM [ 0.000000] #21 [00017f47c0 - 00017f47e5] BOOTMEM [ 0.000000] #22 [00017f4800 - 00017f4827] BOOTMEM [ 0.000000] #23 [00017f4840 - 00017f49c8] BOOTMEM [ 0.000000] #24 [00017f4a00 - 00017f4a40] BOOTMEM [ 0.000000] #25 [00017f4a40 - 00017f4a80] BOOTMEM [ 0.000000] #26 [00017f4a80 - 00017f4ac0] BOOTMEM [ 0.000000] #27 [00017f4ac0 - 00017f4b00] BOOTMEM [ 0.000000] #28 [00017f4b00 - 00017f4b40] BOOTMEM [ 0.000000] #29 [00017f4b40 - 00017f4b80] BOOTMEM [ 0.000000] #30 [00017f4b80 - 00017f4bc0] BOOTMEM [ 0.000000] #31 [00017f4bc0 - 00017f4c00] BOOTMEM [ 0.000000] #32 [00017f4c00 - 00017f4c40] BOOTMEM [ 0.000000] #33 [00017f4c40 - 00017f4c80] BOOTMEM [ 0.000000] #34 [00017f4c80 - 00017f4cc0] BOOTMEM [ 0.000000] #35 [00017f4cc0 - 00017f4cd0] BOOTMEM [ 0.000000] #36 [00017f4d00 - 00017f4d10] BOOTMEM [ 0.000000] #37 [00017f4d40 - 00017f4daa] BOOTMEM [ 0.000000] #38 [00017f4dc0 - 00017f4e2a] BOOTMEM [ 0.000000] #39 [0001800000 - 000180e000] BOOTMEM [ 0.000000] #40 [0001880000 - 000188e000] BOOTMEM [ 0.000000] #41 [0001900000 - 000190e000] BOOTMEM [ 0.000000] #42 [0001980000 - 000198e000] BOOTMEM [ 0.000000] #43 [0001a00000 - 0001a0e000] BOOTMEM [ 0.000000] #44 [0001a80000 - 0001a8e000] BOOTMEM [ 0.000000] #45 [0001b00000 - 0001b0e000] BOOTMEM [ 0.000000] #46 [0001b80000 - 0001b8e000] BOOTMEM [ 0.000000] #47 [00017f6e40 - 00017f6e44] BOOTMEM [ 0.000000] #48 [00017f6e80 - 00017f6e84] BOOTMEM [ 0.000000] #49 [00017f6ec0 - 00017f6ee0] BOOTMEM [ 0.000000] #50 [00017f6f00 - 00017f6f20] BOOTMEM [ 0.000000] #51 [00017f6f40 - 00017f6fd8] BOOTMEM [ 0.000000] #52 [00017f7000 - 00017f7038] BOOTMEM [ 0.000000] #53 [00017f7040 - 00017fb040] BOOTMEM [ 0.000000] #54 [0001b8e000 - 0001c0e000] BOOTMEM [ 0.000000] #55 [000180e000 - 000184e000] BOOTMEM [ 0.000000] #56 [0001c0e000 - 000210228c] BOOTMEM [ 0.000000] Initializing HighMem for node 0 (000377fe:0003f688) [ 0.000000] Memory: 1004520k/1038880k available (4930k kernel code, 33916k reserved, 2396k data, 684k init, 129576k highmem) [ 0.000000] virtual kernel memory layout: [ 0.000000] fixmap : 0xfff16000 - 0xfffff000 ( 932 kB) [ 0.000000] pkmap : 0xff800000 - 0xffc00000 (4096 kB) [ 0.000000] vmalloc : 0xf7ffe000 - 0xff7fe000 ( 120 MB) [ 0.000000] lowmem : 0xc0000000 - 0xf77fe000 ( 887 MB) [ 0.000000] .init : 0xc0828000 - 0xc08d3000 ( 684 kB) [ 0.000000] .data : 0xc05d0b9a - 0xc0827f68 (2396 kB) [ 0.000000] .text : 0xc0100000 - 0xc05d0b9a (4930 kB) [ 0.000000] Checking if this processor honours the WP bit even in supervisor mode...Ok. [ 0.000000] SLUB: Genslabs=13, HWalign=128, Order=0-3, MinObjects=0, CPUs=8, Nodes=1 [ 0.000000] Hierarchical RCU implementation. [ 0.000000] RCU dyntick-idle grace-period acceleration is enabled. [ 0.000000] RCU-based detection of stalled CPUs is disabled. [ 0.000000] Verbose stalled-CPUs detection is disabled. [ 0.000000] NR_IRQS:2304 nr_irqs:744 [ 0.000000] Console: colour dummy device 80x25 [ 0.000000] console [tty0] enabled [ 0.000000] hpet clockevent registered [ 0.000000] Fast TSC calibration using PIT [ 0.000000] Detected 2992.681 MHz processor. [ 0.004006] Calibrating delay loop (skipped), value calculated using timer frequency.. 5985.36 BogoMIPS (lpj=11970724) [ 0.004013] pid_max: default: 32768 minimum: 301 [ 0.004043] Security Framework initialized [ 0.004062] AppArmor: AppArmor initialized [ 0.004065] Yama: becoming mindful. [ 0.004139] Mount-cache hash table entries: 512 [ 0.004320] Initializing cgroup subsys ns [ 0.004325] Initializing cgroup subsys cpuacct [ 0.004333] Initializing cgroup subsys memory [ 0.004347] Initializing cgroup subsys devices [ 0.004350] Initializing cgroup subsys freezer [ 0.004354] Initializing cgroup subsys net_cls [ 0.004393] CPU: Physical Processor ID: 0 [ 0.004397] CPU: Processor Core ID: 0 [ 0.004400] mce: CPU supports 4 MCE banks [ 0.004414] CPU0: Thermal monitoring enabled (TM1) [ 0.004419] using mwait in idle threads. [ 0.004426] Performance Events: Netburst events, Netburst P4/Xeon PMU driver. [ 0.004438] ... version: 0 [ 0.004440] ... bit width: 40 [ 0.004443] ... generic registers: 18 [ 0.004446] ... value mask: 000000ffffffffff [ 0.004448] ... max period: 0000007fffffffff [ 0.004451] ... fixed-purpose events: 0 [ 0.004453] ... event mask: 000000000003ffff [ 0.009143] SMP alternatives: switching to UP code [ 0.021545] ACPI: Core revision 20100428 [ 0.052927] ftrace: converting mcount calls to 0f 1f 44 00 00 [ 0.052935] ftrace: allocating 21734 entries in 43 pages [ 0.056068] Enabling APIC mode: Flat. Using 1 I/O APICs [ 0.056391] ..TIMER: vector=0x30 apic1=0 pin1=2 apic2=-1 pin2=-1 [ 0.098557] CPU0: Intel(R) Pentium(R) 4 CPU 3.00GHz stepping 03 [ 0.100000] Brought up 1 CPUs [ 0.100000] Total of 1 processors activated (5985.36 BogoMIPS). [ 0.100000] devtmpfs: initialized [ 0.100000] regulator: core version 0.5 [ 0.100000] Time: 3:01:17 Date: 07/29/10 [ 0.100000] NET: Registered protocol family 16 [ 0.100000] EISA bus registered [ 0.100000] ACPI: bus type pci registered [ 0.100000] PCI: MMCONFIG for domain 0000 [bus 00-ff] at [mem 0xe0000000-0xefffffff] (base 0xe0000000) [ 0.100000] PCI: MMCONFIG at [mem 0xe0000000-0xefffffff] reserved in E820 [ 0.100000] PCI: Using MMCONFIG for extended config space [ 0.100000] PCI: Using configuration type 1 for base access [ 0.100000] bio: create slab at 0 [ 0.100672] ACPI: EC: Look up EC in DSDT [ 0.111001] ACPI: BIOS _OSI(Linux) query ignored [ 0.121934] ACPI: Interpreter enabled [ 0.121940] ACPI: (supports S0 S1 S3 S4 S5) [ 0.121977] ACPI: Using IOAPIC for interrupt routing [ 0.164669] ACPI: No dock devices found. [ 0.164675] PCI: Ignoring host bridge windows from ACPI; if necessary, use "pci=use_crs" and report a bug [ 0.168423] ACPI: PCI Root Bridge [PCI0] (domain 0000 [bus 00-ff]) [ 0.176173] pci_root PNP0A03:00: host bridge window [io 0x0000-0x0cf7] (ignored) [ 0.176178] pci_root PNP0A03:00: host bridge window [io 0x0d00-0xffff] (ignored) [ 0.176182] pci_root PNP0A03:00: host bridge window [mem 0x000a0000-0x000bffff] (ignored) [ 0.176186] pci_root PNP0A03:00: host bridge window [mem 0x80000000-0xdfffffff] (ignored) [ 0.176191] pci_root PNP0A03:00: host bridge window [mem 0xf0000000-0xfebfffff] (ignored) [ 0.176261] pci 0000:00:02.0: reg 10: [mem 0xdff80000-0xdfffffff] [ 0.176267] pci 0000:00:02.0: reg 14: [io 0xecd8-0xecdf] [ 0.176275] pci 0000:00:02.0: reg 18: [mem 0xc0000000-0xcfffffff pref] [ 0.176281] pci 0000:00:02.0: reg 1c: [mem 0xdff40000-0xdff7ffff] [ 0.176357] pci 0000:00:1b.0: reg 10: [mem 0xdff3c000-0xdff3ffff 64bit] [ 0.176404] pci 0000:00:1b.0: PME# supported from D0 D3hot D3cold [ 0.176410] pci 0000:00:1b.0: PME# disabled [ 0.176485] pci 0000:00:1c.0: PME# supported from D0 D3hot D3cold [ 0.176491] pci 0000:00:1c.0: PME# disabled [ 0.176566] pci 0000:00:1c.1: PME# supported from D0 D3hot D3cold [ 0.176571] pci 0000:00:1c.1: PME# disabled [ 0.176627] pci 0000:00:1d.0: reg 20: [io 0xff80-0xff9f] [ 0.176680] pci 0000:00:1d.1: reg 20: [io 0xff60-0xff7f] [ 0.176734] pci 0000:00:1d.2: reg 20: [io 0xff40-0xff5f] [ 0.176786] pci 0000:00:1d.3: reg 20: [io 0xff20-0xff3f] [ 0.176839] pci 0000:00:1d.7: reg 10: [mem 0xffa80800-0xffa80bff] [ 0.176894] pci 0000:00:1d.7: PME# supported from D0 D3hot D3cold [ 0.176900] pci 0000:00:1d.7: PME# disabled [ 0.177017] pci 0000:00:1f.0: quirk: [io 0x0800-0x087f] claimed by ICH6 ACPI/GPIO/TCO [ 0.177024] pci 0000:00:1f.0: quirk: [io 0x0880-0x08bf] claimed by ICH6 GPIO [ 0.177029] pci 0000:00:1f.0: LPC Generic IO decode 1 PIO at 0c00-0c7f [ 0.177035] pci 0000:00:1f.0: LPC Generic IO decode 2 PIO at 00e0-00ef [ 0.177062] pci 0000:00:1f.1: reg 10: [io 0x01f0-0x01f7] [ 0.177070] pci 0000:00:1f.1: reg 14: [io 0x03f4-0x03f7] [ 0.177078] pci 0000:00:1f.1: reg 18: [io 0x0170-0x0177] [ 0.177087] pci 0000:00:1f.1: reg 1c: [io 0x0374-0x0377] [ 0.177095] pci 0000:00:1f.1: reg 20: [io 0xffa0-0xffaf] [ 0.177141] pci 0000:00:1f.2: reg 10: [io 0xfe00-0xfe07] [ 0.177150] pci 0000:00:1f.2: reg 14: [io 0xfe10-0xfe13] [ 0.177159] pci 0000:00:1f.2: reg 18: [io 0xfe20-0xfe27] [ 0.177166] pci 0000:00:1f.2: reg 1c: [io 0xfe30-0xfe33] [ 0.177174] pci 0000:00:1f.2: reg 20: [io 0xfea0-0xfeaf] [ 0.177181] pci 0000:00:1f.2: reg 24: [mem 0xdff3bc00-0xdff3bfff] [ 0.177205] pci 0000:00:1f.2: PME# supported from D3hot [ 0.177210] pci 0000:00:1f.2: PME# disabled [ 0.177259] pci 0000:00:1f.3: reg 20: [io 0xece0-0xecff] [ 0.177333] pci 0000:00:1c.0: PCI bridge to [bus 01-01] [ 0.177340] pci 0000:00:1c.0: bridge window [io 0xf000-0x0000] (disabled) [ 0.177346] pci 0000:00:1c.0: bridge window [mem 0xdfe00000-0xdfefffff] [ 0.177354] pci 0000:00:1c.0: bridge window [mem 0xfff00000-0x000fffff pref] (disabled) [ 0.177402] pci 0000:00:1c.1: PCI bridge to [bus 02-02] [ 0.177408] pci 0000:00:1c.1: bridge window [io 0xf000-0x0000] (disabled) [ 0.177414] pci 0000:00:1c.1: bridge window [mem 0xdfd00000-0xdfdfffff] [ 0.177422] pci 0000:00:1c.1: bridge window [mem 0xfff00000-0x000fffff pref] (disabled) [ 0.177476] pci 0000:03:02.0: reg 10: [mem 0xdfcf0000-0xdfcfffff] [ 0.177486] pci 0000:03:02.0: reg 14: [io 0xdcb8-0xdcbf] [ 0.177532] pci 0000:03:02.0: PME# supported from D3hot D3cold [ 0.177537] pci 0000:03:02.0: PME# disabled [ 0.177578] pci 0000:03:08.0: reg 10: [mem 0xdfcef000-0xdfceffff] [ 0.177587] pci 0000:03:08.0: reg 14: [io 0xdcc0-0xdcff] [ 0.177633] pci 0000:03:08.0: supports D1 D2 [ 0.177637] pci 0000:03:08.0: PME# supported from D0 D1 D2 D3hot D3cold [ 0.177643] pci 0000:03:08.0: PME# disabled [ 0.177683] pci 0000:00:1e.0: PCI bridge to [bus 03-03] (subtractive decode) [ 0.177689] pci 0000:00:1e.0: bridge window [io 0xd000-0xdfff] [ 0.177695] pci 0000:00:1e.0: bridge window [mem 0xdfc00000-0xdfcfffff] [ 0.177703] pci 0000:00:1e.0: bridge window [mem 0xfff00000-0x000fffff pref] (disabled) [ 0.177707] pci 0000:00:1e.0: bridge window [io 0x0000-0xffff] (subtractive decode) [ 0.177711] pci 0000:00:1e.0: bridge window [mem 0x00000000-0xffffffff] (subtractive decode) [ 0.177729] pci_bus 0000:00: on NUMA node 0 [ 0.177737] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0._PRT] [ 0.178132] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PCI1._PRT] [ 0.178522] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PCI2._PRT] [ 0.178748] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PCI3._PRT] [ 0.574771] ACPI: PCI Interrupt Link [LNKA] (IRQs 3 4 5 6 7 9 10 *11 12 15) [ 0.575138] ACPI: PCI Interrupt Link [LNKB] (IRQs 3 4 5 6 7 9 *10 11 12 15) [ 0.575506] ACPI: PCI Interrupt Link [LNKC] (IRQs 3 *4 5 6 7 9 10 11 12 15) [ 0.576128] ACPI: PCI Interrupt Link [LNKD] (IRQs 3 4 5 6 7 9 10 11 12 15) *0, disabled. [ 0.576495] ACPI: PCI Interrupt Link [LNKE] (IRQs 3 4 5 6 7 9 *10 11 12 15) [ 0.576858] ACPI: PCI Interrupt Link [LNKF] (IRQs 3 4 5 6 7 *9 10 11 12 15) [ 0.577219] ACPI: PCI Interrupt Link [LNKG] (IRQs 3 4 *5 6 7 9 10 11 12 15) [ 0.577582] ACPI: PCI Interrupt Link [LNKH] (IRQs *3 4 5 6 7 9 10 11 12 15) [ 0.577694] HEST: Table is not found! [ 0.577776] vgaarb: device added: PCI:0000:00:02.0,decodes=io+mem,owns=io+mem,locks=none [ 0.577787] vgaarb: loaded [ 0.578002] SCSI subsystem initialized [ 0.578061] libata version 3.00 loaded. [ 0.578136] usbcore: registered new interface driver usbfs [ 0.578153] usbcore: registered new interface driver hub [ 0.578190] usbcore: registered new device driver usb [ 0.578354] ACPI: WMI: Mapper loaded [ 0.578357] PCI: Using ACPI for IRQ routing [ 0.578361] PCI: pci_cache_line_size set to 64 bytes [ 0.578429] reserve RAM buffer: 0000000000002000 - 000000000000ffff [ 0.578433] reserve RAM buffer: 000000003f688c00 - 000000003fffffff [ 0.578557] NetLabel: Initializing [ 0.578561] NetLabel: domain hash size = 128 [ 0.578564] NetLabel: protocols = UNLABELED CIPSOv4 [ 0.578579] NetLabel: unlabeled traffic allowed by default [ 0.578619] HPET: 3 timers in total, 0 timers will be used for per-cpu timer [ 0.578626] hpet0: at MMIO 0xfed00000, IRQs 2, 8, 0 [ 0.578633] hpet0: 3 comparators, 64-bit 14.318180 MHz counter [ 0.584023] Switching to clocksource tsc [ 0.596218] AppArmor: AppArmor Filesystem Enabled [ 0.596239] pnp: PnP ACPI init [ 0.596260] ACPI: bus type pnp registered [ 0.602322] pnp 00:01: disabling [io 0x0800-0x085f] because it overlaps 0000:00:1f.0 BAR 13 [io 0x0800-0x087f] [ 0.602328] pnp 00:01: disabling [io 0x0860-0x08ff] because it overlaps 0000:00:1f.0 BAR 13 [io 0x0800-0x087f] [ 0.622205] pnp: PnP ACPI: found 8 devices [ 0.622208] ACPI: ACPI bus type pnp unregistered [ 0.622214] PnPBIOS: Disabled by ACPI PNP [ 0.622230] system 00:01: [io 0x0c00-0x0c7f] has been reserved [ 0.622243] system 00:06: [mem 0x00000000-0x0009ffff] could not be reserved [ 0.622248] system 00:06: [mem 0x00100000-0x00ffffff] could not be reserved [ 0.622253] system 00:06: [mem 0x01000000-0x3f688bff] could not be reserved [ 0.622259] system 00:06: [mem 0x000c0000-0x000fffff] could not be reserved [ 0.622263] system 00:06: [mem 0xfec00000-0xfecfffff] could not be reserved [ 0.622268] system 00:06: [mem 0xfee00000-0xfeefffff] has been reserved [ 0.622273] system 00:06: [mem 0xfed20000-0xfed9ffff] has been reserved [ 0.622277] system 00:06: [mem 0xffb00000-0xffbfffff] has been reserved [ 0.622282] system 00:06: [mem 0xffc00000-0xffffffff] has been reserved [ 0.622291] system 00:07: [io 0x0100-0x01fe] could not be reserved [ 0.622295] system 00:07: [io 0x0200-0x0277] has been reserved [ 0.622299] system 00:07: [io 0x0280-0x02e7] has been reserved [ 0.622303] system 00:07: [io 0x02e8-0x02ef] has been reserved [ 0.622308] system 00:07: [io 0x02f0-0x02f7] has been reserved [ 0.622312] system 00:07: [io 0x02f8-0x02ff] has been reserved [ 0.622317] system 00:07: [io 0x0300-0x0377] could not be reserved [ 0.622321] system 00:07: [io 0x0380-0x03bb] has been reserved [ 0.622326] system 00:07: [io 0x03c0-0x03e7] has been reserved [ 0.622330] system 00:07: [io 0x03f6-0x03f7] could not be reserved [ 0.622335] system 00:07: [io 0x0400-0x04cf] has been reserved [ 0.622339] system 00:07: [io 0x04d2-0x057f] has been reserved [ 0.622343] system 00:07: [io 0x0580-0x0677] has been reserved [ 0.622347] system 00:07: [io 0x0680-0x0777] has been reserved [ 0.622352] system 00:07: [io 0x0780-0x07bb] has been reserved [ 0.622356] system 00:07: [io 0x07c0-0x07ff] has been reserved [ 0.622361] system 00:07: [io 0x08e0-0x08ff] has been reserved [ 0.622365] system 00:07: [io 0x0900-0x09fe] has been reserved [ 0.622370] system 00:07: [io 0x0a00-0x0afe] has been reserved [ 0.622374] system 00:07: [io 0x0b00-0x0bfe] has been reserved [ 0.622378] system 00:07: [io 0x0c80-0x0caf] has been reserved [ 0.622382] system 00:07: [io 0x0cb0-0x0cbf] has been reserved [ 0.622387] system 00:07: [io 0x0cc0-0x0cf7] has been reserved [ 0.622391] system 00:07: [io 0x0d00-0x0dfe] has been reserved [ 0.622396] system 00:07: [io 0x0e00-0x0efe] has been reserved [ 0.622400] system 00:07: [io 0x0f00-0x0ffe] has been reserved [ 0.622405] system 00:07: [io 0x2000-0x20fe] has been reserved [ 0.622409] system 00:07: [io 0x2100-0x21fe] has been reserved [ 0.622414] system 00:07: [io 0x2200-0x22fe] has been reserved [ 0.622418] system 00:07: [io 0x2300-0x23fe] has been reserved [ 0.622423] system 00:07: [io 0x2400-0x24fe] has been reserved [ 0.622427] system 00:07: [io 0x2500-0x25fe] has been reserved [ 0.622431] system 00:07: [io 0x2600-0x26fe] has been reserved [ 0.622435] system 00:07: [io 0x2700-0x27fe] has been reserved [ 0.622440] system 00:07: [io 0x2800-0x28fe] has been reserved [ 0.622444] system 00:07: [io 0x2900-0x29fe] has been reserved [ 0.622449] system 00:07: [io 0x2a00-0x2afe] has been reserved [ 0.622453] system 00:07: [io 0x2b00-0x2bfe] has been reserved [ 0.622458] system 00:07: [io 0x2c00-0x2cfe] has been reserved [ 0.622462] system 00:07: [io 0x2d00-0x2dfe] has been reserved [ 0.622467] system 00:07: [io 0x2e00-0x2efe] has been reserved [ 0.622471] system 00:07: [io 0x2f00-0x2ffe] has been reserved [ 0.622476] system 00:07: [io 0x5000-0x50fe] has been reserved [ 0.622480] system 00:07: [io 0x5100-0x51fe] has been reserved [ 0.622485] system 00:07: [io 0x5200-0x52fe] has been reserved [ 0.622489] system 00:07: [io 0x5300-0x53fe] has been reserved [ 0.622494] system 00:07: [io 0x5400-0x54fe] has been reserved [ 0.622498] system 00:07: [io 0x5500-0x55fe] has been reserved [ 0.622503] system 00:07: [io 0x5600-0x56fe] has been reserved [ 0.622507] system 00:07: [io 0x5700-0x57fe] has been reserved [ 0.622512] system 00:07: [io 0x5800-0x58fe] has been reserved [ 0.622517] system 00:07: [io 0x5900-0x59fe] has been reserved [ 0.622521] system 00:07: [io 0x5a00-0x5afe] has been reserved [ 0.622526] system 00:07: [io 0x5b00-0x5bfe] has been reserved [ 0.622531] system 00:07: [io 0x5c00-0x5cfe] has been reserved [ 0.622535] system 00:07: [io 0x5d00-0x5dfe] has been reserved [ 0.622540] system 00:07: [io 0x5e00-0x5efe] has been reserved [ 0.622544] system 00:07: [io 0x5f00-0x5ffe] has been reserved [ 0.622549] system 00:07: [io 0x6000-0x60fe] has been reserved [ 0.622553] system 00:07: [io 0x6100-0x61fe] has been reserved [ 0.622558] system 00:07: [io 0x6200-0x62fe] has been reserved [ 0.622562] system 00:07: [io 0x6300-0x63fe] has been reserved [ 0.622567] system 00:07: [io 0x6400-0x64fe] has been reserved [ 0.622572] system 00:07: [io 0x6500-0x65fe] has been reserved [ 0.622577] system 00:07: [io 0x6600-0x66fe] has been reserved [ 0.622584] system 00:07: [io 0x6700-0x67fe] has been reserved [ 0.622589] system 00:07: [io 0x6800-0x68fe] has been reserved [ 0.622594] system 00:07: [io 0x6900-0x69fe] has been reserved [ 0.622599] system 00:07: [io 0x6a00-0x6afe] has been reserved [ 0.622604] system 00:07: [io 0x6b00-0x6bfe] has been reserved [ 0.622609] system 00:07: [io 0x6c00-0x6cfe] has been reserved [ 0.622613] system 00:07: [io 0x6d00-0x6dfe] has been reserved [ 0.622619] system 00:07: [io 0x6e00-0x6efe] has been reserved [ 0.622623] system 00:07: [io 0x6f00-0x6ffe] has been reserved [ 0.622629] system 00:07: [io 0xa000-0xa0fe] has been reserved [ 0.622633] system 00:07: [io 0xa100-0xa1fe] has been reserved [ 0.622638] system 00:07: [io 0xa200-0xa2fe] has been reserved [ 0.622643] system 00:07: [io 0xa300-0xa3fe] has been reserved [ 0.622648] system 00:07: [io 0xa400-0xa4fe] has been reserved [ 0.622653] system 00:07: [io 0xa500-0xa5fe] has been reserved [ 0.622658] system 00:07: [io 0xa600-0xa6fe] has been reserved [ 0.622663] system 00:07: [io 0xa700-0xa7fe] has been reserved [ 0.622668] system 00:07: [io 0xa800-0xa8fe] has been reserved [ 0.622673] system 00:07: [io 0xa900-0xa9fe] has been reserved [ 0.622678] system 00:07: [io 0xaa00-0xaafe] has been reserved [ 0.622683] system 00:07: [io 0xab00-0xabfe] has been reserved [ 0.622688] system 00:07: [io 0xac00-0xacfe] has been reserved [ 0.622693] system 00:07: [io 0xad00-0xadfe] has been reserved [ 0.622698] system 00:07: [io 0xae00-0xaefe] has been reserved [ 0.622703] system 00:07: [io 0xaf00-0xaffe] has been reserved [ 0.622708] system 00:07: [mem 0xe0000000-0xefffffff] has been reserved [ 0.622712] system 00:07: [mem 0xfeda0000-0xfedacfff] has been reserved [ 0.657511] pci 0000:00:1c.0: BAR 15: assigned [mem 0x40000000-0x401fffff 64bit pref] [ 0.657518] pci 0000:00:1c.0: BAR 13: assigned [io 0x1000-0x1fff] [ 0.657523] pci 0000:00:1c.0: PCI bridge to [bus 01-01] [ 0.657528] pci 0000:00:1c.0: bridge window [io 0x1000-0x1fff] [ 0.657535] pci 0000:00:1c.0: bridge window [mem 0xdfe00000-0xdfefffff] [ 0.657541] pci 0000:00:1c.0: bridge window [mem 0x40000000-0x401fffff 64bit pref] [ 0.657549] pci 0000:00:1c.1: PCI bridge to [bus 02-02] [ 0.657552] pci 0000:00:1c.1: bridge window [io disabled] [ 0.657559] pci 0000:00:1c.1: bridge window [mem 0xdfd00000-0xdfdfffff] [ 0.657564] pci 0000:00:1c.1: bridge window [mem pref disabled] [ 0.657572] pci 0000:00:1e.0: PCI bridge to [bus 03-03] [ 0.657577] pci 0000:00:1e.0: bridge window [io 0xd000-0xdfff] [ 0.657584] pci 0000:00:1e.0: bridge window [mem 0xdfc00000-0xdfcfffff] [ 0.657590] pci 0000:00:1e.0: bridge window [mem pref disabled] [ 0.657607] alloc irq_desc for 16 on node -1 [ 0.657611] alloc kstat_irqs on node -1 [ 0.657619] pci 0000:00:1c.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16 [ 0.657625] pci 0000:00:1c.0: setting latency timer to 64 [ 0.657636] alloc irq_desc for 17 on node -1 [ 0.657639] alloc kstat_irqs on node -1 [ 0.657646] pci 0000:00:1c.1: PCI INT B -> GSI 17 (level, low) -> IRQ 17 [ 0.657652] pci 0000:00:1c.1: setting latency timer to 64 [ 0.657661] pci 0000:00:1e.0: setting latency timer to 64 [ 0.657667] pci_bus 0000:00: resource 0 [io 0x0000-0xffff] [ 0.657672] pci_bus 0000:00: resource 1 [mem 0x00000000-0xffffffff] [ 0.657676] pci_bus 0000:01: resource 0 [io 0x1000-0x1fff] [ 0.657680] pci_bus 0000:01: resource 1 [mem 0xdfe00000-0xdfefffff] [ 0.657684] pci_bus 0000:01: resource 2 [mem 0x40000000-0x401fffff 64bit pref] [ 0.657688] pci_bus 0000:02: resource 1 [mem 0xdfd00000-0xdfdfffff] [ 0.657692] pci_bus 0000:03: resource 0 [io 0xd000-0xdfff] [ 0.657696] pci_bus 0000:03: resource 1 [mem 0xdfc00000-0xdfcfffff] [ 0.657700] pci_bus 0000:03: resource 4 [io 0x0000-0xffff] [ 0.657705] pci_bus 0000:03: resource 5 [mem 0x00000000-0xffffffff] [ 0.657748] NET: Registered protocol family 2 [ 0.657842] IP route cache hash table entries: 32768 (order: 5, 131072 bytes) [ 0.658127] TCP established hash table entries: 131072 (order: 8, 1048576 bytes) [ 0.658647] TCP bind hash table entries: 65536 (order: 7, 524288 bytes) [ 0.658894] TCP: Hash tables configured (established 131072 bind 65536) [ 0.658898] TCP reno registered [ 0.658903] UDP hash table entries: 512 (order: 2, 16384 bytes) [ 0.658914] UDP-Lite hash table entries: 512 (order: 2, 16384 bytes) [ 0.659043] NET: Registered protocol family 1 [ 0.659063] pci 0000:00:02.0: Boot video device [ 0.659189] pci 0000:03:08.0: Firmware left e100 interrupts enabled; disabling [ 0.659197] PCI: CLS 64 bytes, default 64 [ 0.659277] Simple Boot Flag at 0x7a set to 0x1 [ 0.659413] cpufreq-nforce2: No nForce2 chipset. [ 0.659452] Scanning for low memory corruption every 60 seconds [ 0.659611] audit: initializing netlink socket (disabled) [ 0.659623] type=2000 audit(1280372477.652:1): initialized [ 0.669690] Trying to unpack rootfs image as initramfs... [ 0.680328] highmem bounce pool size: 64 pages [ 0.680336] HugeTLB registered 4 MB page size, pre-allocated 0 pages [ 0.692144] VFS: Disk quotas dquot_6.5.2 [ 0.692226] Dquot-cache hash table entries: 1024 (order 0, 4096 bytes) [ 0.693001] fuse init (API version 7.14) [ 0.693121] msgmni has been set to 1708 [ 0.700293] alg: No test for stdrng (krng) [ 0.700380] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 253) [ 0.700384] io scheduler noop registered [ 0.700387] io scheduler deadline registered [ 0.700407] io scheduler cfq registered (default) [ 0.700540] pcieport 0000:00:1c.0: setting latency timer to 64 [ 0.700579] alloc irq_desc for 40 on node -1 [ 0.700582] alloc kstat_irqs on node -1 [ 0.700596] pcieport 0000:00:1c.0: irq 40 for MSI/MSI-X [ 0.700700] pcieport 0000:00:1c.1: setting latency timer to 64 [ 0.700735] alloc irq_desc for 41 on node -1 [ 0.700738] alloc kstat_irqs on node -1 [ 0.700748] pcieport 0000:00:1c.1: irq 41 for MSI/MSI-X [ 0.700855] pci_hotplug: PCI Hot Plug PCI Core version: 0.5 [ 0.700929] pciehp: PCI Express Hot Plug Controller Driver version: 0.4 [ 0.701312] vesafb: framebuffer at 0xc012c000, mapped to 0xf8080000, using 1216k, total 1216k [ 0.701316] vesafb: mode is 640x480x32, linelength=2560, pages=0 [ 0.701320] vesafb: scrolling: redraw [ 0.701324] vesafb: Truecolor: size=8:8:8:8, shift=24:16:8:0 [ 0.714049] Console: switching to colour frame buffer device 80x30 [ 0.726647] fb0: VESA VGA frame buffer device [ 0.748189] input: Power Button as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0C:00/input/input0 [ 0.748196] ACPI: Power Button [VBTN] [ 0.748264] input: Power Button as /devices/LNXSYSTM:00/LNXPWRBN:00/input/input1 [ 0.748268] ACPI: Power Button [PWRF] [ 0.748725] ACPI: acpi_idle registered with cpuidle [ 0.821465] ERST: Table is not found! [ 0.823497] Serial: 8250/16550 driver, 4 ports, IRQ sharing enabled [ 0.825354] brd: module loaded [ 0.826064] loop: module loaded [ 0.826290] ata_piix 0000:00:1f.1: version 2.13 [ 0.826306] ata_piix 0000:00:1f.1: PCI INT A -> GSI 16 (level, low) -> IRQ 16 [ 0.826357] ata_piix 0000:00:1f.1: setting latency timer to 64 [ 0.832282] isapnp: Scanning for PnP cards... [ 0.837768] scsi0 : ata_piix [ 0.837872] scsi1 : ata_piix [ 0.837920] ata1: PATA max UDMA/100 cmd 0x1f0 ctl 0x3f6 bmdma 0xffa0 irq 14 [ 0.837924] ata2: PATA max UDMA/100 cmd 0x170 ctl 0x376 bmdma 0xffa8 irq 15 [ 0.837964] alloc irq_desc for 20 on node -1 [ 0.837967] alloc kstat_irqs on node -1 [ 0.837976] ata_piix 0000:00:1f.2: PCI INT C -> GSI 20 (level, low) -> IRQ 20 [ 0.837997] ata_piix 0000:00:1f.2: MAP [ P0 P2 P1 P3 ] [ 0.887636] ata2: port disabled. ignoring. [ 0.992163] ata_piix 0000:00:1f.2: setting latency timer to 64 [ 0.996083] scsi2 : ata_piix [ 0.996172] scsi3 : ata_piix [ 0.996219] ata3: SATA max UDMA/133 cmd 0xfe00 ctl 0xfe10 bmdma 0xfea0 irq 20 [ 0.996223] ata4: SATA max UDMA/133 cmd 0xfe20 ctl 0xfe30 bmdma 0xfea8 irq 20 [ 0.996685] Fixed MDIO Bus: probed [ 0.996736] PPP generic driver version 2.4.2 [ 0.996808] tun: Universal TUN/TAP device driver, 1.6 [ 0.996812] tun: (C) 1999-2004 Max Krasnyansky [ 0.996920] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver [ 0.996944] alloc irq_desc for 21 on node -1 [ 0.996947] alloc kstat_irqs on node -1 [ 0.996957] ehci_hcd 0000:00:1d.7: PCI INT A -> GSI 21 (level, low) -> IRQ 21 [ 0.996977] ehci_hcd 0000:00:1d.7: setting latency timer to 64 [ 0.996982] ehci_hcd 0000:00:1d.7: EHCI Host Controller [ 0.997026] ehci_hcd 0000:00:1d.7: new USB bus registered, assigned bus number 1 [ 0.997059] ehci_hcd 0000:00:1d.7: debug port 1 [ 1.000936] ehci_hcd 0000:00:1d.7: cache line size of 64 is not supported [ 1.004133] ehci_hcd 0000:00:1d.7: irq 21, io mem 0xffa80800 [ 1.024022] ehci_hcd 0000:00:1d.7: USB 2.0 started, EHCI 1.00 [ 1.024207] hub 1-0:1.0: USB hub found [ 1.024214] hub 1-0:1.0: 8 ports detected [ 1.024306] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver [ 1.024326] uhci_hcd: USB Universal Host Controller Interface driver [ 1.024374] uhci_hcd 0000:00:1d.0: PCI INT A -> GSI 21 (level, low) -> IRQ 21 [ 1.024387] uhci_hcd 0000:00:1d.0: setting latency timer to 64 [ 1.024392] uhci_hcd 0000:00:1d.0: UHCI Host Controller [ 1.024443] uhci_hcd 0000:00:1d.0: new USB bus registered, assigned bus number 2 [ 1.024472] uhci_hcd 0000:00:1d.0: irq 21, io base 0x0000ff80 [ 1.024619] hub 2-0:1.0: USB hub found [ 1.024626] hub 2-0:1.0: 2 ports detected [ 1.024694] alloc irq_desc for 22 on node -1 [ 1.024698] alloc kstat_irqs on node -1 [ 1.024707] uhci_hcd 0000:00:1d.1: PCI INT B -> GSI 22 (level, low) -> IRQ 22 [ 1.024715] uhci_hcd 0000:00:1d.1: setting latency timer to 64 [ 1.024719] uhci_hcd 0000:00:1d.1: UHCI Host Controller [ 1.024768] uhci_hcd 0000:00:1d.1: new USB bus registered, assigned bus number 3 [ 1.024806] uhci_hcd 0000:00:1d.1: irq 22, io base 0x0000ff60 [ 1.024959] hub 3-0:1.0: USB hub found [ 1.024965] hub 3-0:1.0: 2 ports detected [ 1.025027] alloc irq_desc for 18 on node -1 [ 1.025030] alloc kstat_irqs on node -1 [ 1.025036] uhci_hcd 0000:00:1d.2: PCI INT C -> GSI 18 (level, low) -> IRQ 18 [ 1.025044] uhci_hcd 0000:00:1d.2: setting latency timer to 64 [ 1.025049] uhci_hcd 0000:00:1d.2: UHCI Host Controller [ 1.025094] uhci_hcd 0000:00:1d.2: new USB bus registered, assigned bus number 4 [ 1.025130] uhci_hcd 0000:00:1d.2: irq 18, io base 0x0000ff40 [ 1.025272] hub 4-0:1.0: USB hub found [ 1.025278] hub 4-0:1.0: 2 ports detected [ 1.025340] alloc irq_desc for 23 on node -1 [ 1.025343] alloc kstat_irqs on node -1 [ 1.025349] uhci_hcd 0000:00:1d.3: PCI INT D -> GSI 23 (level, low) -> IRQ 23 [ 1.025357] uhci_hcd 0000:00:1d.3: setting latency timer to 64 [ 1.025362] uhci_hcd 0000:00:1d.3: UHCI Host Controller [ 1.025404] uhci_hcd 0000:00:1d.3: new USB bus registered, assigned bus number 5 [ 1.025442] uhci_hcd 0000:00:1d.3: irq 23, io base 0x0000ff20 [ 1.025595] hub 5-0:1.0: USB hub found [ 1.025601] hub 5-0:1.0: 2 ports detected [ 1.025737] PNP: No PS/2 controller found. Probing ports directly. [ 1.072009] serio: i8042 KBD port at 0x60,0x64 irq 1 [ 1.072017] serio: i8042 AUX port at 0x60,0x64 irq 12 [ 1.072158] mice: PS/2 mouse device common for all mice [ 1.072301] rtc_cmos 00:05: RTC can wake from S4 [ 1.072357] rtc_cmos 00:05: rtc core: registered rtc_cmos as rtc0 [ 1.072383] rtc0: alarms up to one day, 242 bytes nvram, hpet irqs [ 1.072518] device-mapper: uevent: version 1.0.3 [ 1.076512] device-mapper: ioctl: 4.17.0-ioctl (2010-03-05) initialised: dm-devel@redhat.com [ 1.080026] device-mapper: multipath: version 1.1.1 loaded [ 1.080030] device-mapper: multipath round-robin: version 1.0.0 loaded [ 1.083020] EISA: Probing bus 0 at eisa.0 [ 1.083025] EISA: Cannot allocate resource for mainboard [ 1.083029] Cannot allocate resource for EISA slot 1 [ 1.083032] Cannot allocate resource for EISA slot 2 [ 1.083043] Cannot allocate resource for EISA slot 5 [ 1.083046] Cannot allocate resource for EISA slot 6 [ 1.083057] EISA: Detected 0 cards. [ 1.084829] ata1.00: ATA-6: ST380013A, 8.01, max UDMA/100 [ 1.084833] ata1.00: 156301488 sectors, multi 8: LBA48 [ 1.084879] ata1.01: ATAPI: TSSTcorpCD/DVDW SH-S182M, SB04, max UDMA/33 [ 1.088024] cpuidle: using governor ladder [ 1.088028] cpuidle: using governor menu [ 1.088390] TCP cubic registered [ 1.088571] NET: Registered protocol family 10 [ 1.089044] lo: Disabled Privacy Extensions [ 1.089301] NET: Registered protocol family 17 [ 1.089362] Using IPI No-Shortcut mode [ 1.089475] PM: Resume from disk failed. [ 1.089495] registered taskstats version 1 [ 1.089735] Magic number: 2:462:8 [ 1.089810] rtc_cmos 00:05: setting system clock to 2010-07-29 03:01:18 UTC (1280372478) [ 1.089814] BIOS EDD facility v0.16 2004-Jun-25, 0 devices found [ 1.089816] EDD information not available. [ 1.101148] ata1.00: configured for UDMA/100 [ 1.116274] ata1.01: configured for UDMA/33 [ 1.179323] ata3.00: ATA-7: ST3160828AS, 8.04, max UDMA/133 [ 1.179328] ata3.00: 312500000 sectors, multi 8: LBA48 NCQ (depth 0/32) [ 1.192796] ata3.00: configured for UDMA/133 [ 1.376390] Freeing initrd memory: 10508k freed [ 1.425179] isapnp: No Plug & Play device found [ 1.425384] scsi 0:0:0:0: Direct-Access ATA ST380013A 8.01 PQ: 0 ANSI: 5 [ 1.425608] sd 0:0:0:0: Attached scsi generic sg0 type 0 [ 1.426520] sd 0:0:0:0: [sda] 156301488 512-byte logical blocks: (80.0 GB/74.5 GiB) [ 1.426633] scsi 0:0:1:0: CD-ROM TSSTcorp CD/DVDW SH-S182M SB04 PQ: 0 ANSI: 5 [ 1.426848] sd 0:0:0:0: [sda] Write Protect is off [ 1.426852] sd 0:0:0:0: [sda] Mode Sense: 00 3a 00 00 [ 1.427624] sd 0:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA [ 1.429425] sda: sda1 [ 1.456765] sr0: scsi3-mmc drive: 48x/48x writer dvd-ram cd/rw xa/form2 cdda tray [ 1.456770] Uniform CD-ROM driver Revision: 3.20 [ 1.456876] sr 0:0:1:0: Attached scsi CD-ROM sr0 [ 1.456937] sr 0:0:1:0: Attached scsi generic sg1 type 5 [ 1.457085] scsi 2:0:0:0: Direct-Access ATA ST3160828AS 8.04 PQ: 0 ANSI: 5 [ 1.457223] sd 2:0:0:0: Attached scsi generic sg2 type 0 [ 1.457311] sd 2:0:0:0: [sdb] 312500000 512-byte logical blocks: (160 GB/149 GiB) [ 1.457394] sd 2:0:0:0: [sdb] Write Protect is off [ 1.457398] sd 2:0:0:0: [sdb] Mode Sense: 00 3a 00 00 [ 1.457434] sd 2:0:0:0: [sdb] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA [ 1.457617] sdb: [ 1.457805] sd 0:0:0:0: [sda] Attached SCSI disk [ 1.473216] sdb1 sdb2 < sdb5 > [ 1.493854] sd 2:0:0:0: [sdb] Attached SCSI disk [ 1.493871] Freeing unused kernel memory: 684k freed [ 1.494308] Write protecting the kernel text: 4932k [ 1.494340] Write protecting the kernel read-only data: 2012k [ 1.516102] udev: starting version 151 [ 1.737455] e100: Intel(R) PRO/100 Network Driver, 3.5.24-k2-NAPI [ 1.737460] e100: Copyright(c) 1999-2006 Intel Corporation [ 1.737609] e100 0000:03:08.0: PCI INT A -> GSI 20 (level, low) -> IRQ 20 [ 1.761325] e100 0000:03:08.0: PME# disabled [ 1.763187] e100 0000:03:08.0: eth0: addr 0xdfcef000, irq 20, MAC addr 00:16:76:2d:ce:6f [ 1.776021] usb 2-1: new low speed USB device using uhci_hcd and address 2 [ 1.948209] EXT4-fs (sdb1): INFO: recovery required on readonly filesystem [ 1.948216] EXT4-fs (sdb1): write access will be enabled during recovery [ 1.976279] usbcore: registered new interface driver hiddev [ 1.992160] input: Microsoft Microsoft 3-Button Mouse with IntelliEye(TM) as /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1:1.0/input/input2 [ 1.992296] generic-usb 0003:045E:0040.0001: input,hidraw0: USB HID v1.10 Mouse [Microsoft Microsoft 3-Button Mouse with IntelliEye(TM)] on usb-0000:00:1d.0-1/input0 [ 1.992322] usbcore: registered new interface driver usbhid [ 1.992325] usbhid: USB HID core driver [ 2.012490] EXT4-fs (sdb1): recovery complete [ 2.012657] EXT4-fs (sdb1): mounted filesystem with ordered data mode. Opts: (null) [ 2.200020] usb 3-1: new low speed USB device using uhci_hcd and address 2 [ 2.393424] input: Dell Dell USB Keyboard as /devices/pci0000:00/0000:00:1d.1/usb3/3-1/3-1:1.0/input/input3 [ 2.393516] generic-usb 0003:413C:2003.0002: input,hidraw1: USB HID v1.10 Keyboard [Dell Dell USB Keyboard] on usb-0000:00:1d.1-1/input0 [ 2.632038] usb 3-2: new full speed USB device using uhci_hcd and address 3 [ 14.198743] Adding 2975740k swap on /dev/sdb5. Priority:-1 extents:1 across:2975740k [ 14.253719] udev: starting version 151 [ 14.496985] intel_rng: Firmware space is locked read-only. If you can't or [ 14.496988] intel_rng: don't want to disable this in firmware setup, and if [ 14.496990] intel_rng: you are certain that your system has a functional [ 14.496991] intel_rng: RNG, try using the 'no_fwh_detect' option. [ 14.573100] Linux agpgart interface v0.103 [ 14.707459] dcdbas dcdbas: Dell Systems Management Base Driver (version 5.6.0-3.2) [ 14.748101] agpgart-intel 0000:00:00.0: Intel 915G Chipset [ 14.748699] agpgart-intel 0000:00:00.0: detected 7932K stolen memory [ 14.751719] agpgart-intel 0000:00:00.0: AGP aperture is 256M @ 0xc0000000 [ 14.828366] Linux video capture interface: v2.00 [ 14.833726] gspca: main v2.9.0 registered [ 14.853290] lp: driver loaded but no devices found [ 14.853587] EXT4-fs (sdb1): re-mounted. Opts: errors=remount-ro [ 14.854147] gspca: probing 045e:00f7 [ 14.859018] sonixj: Sonix chip id: 11 [ 14.861102] input: sonixj as /devices/pci0000:00/0000:00:1d.1/usb3/3-2/input/input4 [ 14.861218] gspca: video0 created [ 14.861223] gspca: found int in endpoint: 0x83, buffer_len=1, interval=100 [ 14.861265] gspca: probing 045e:00f7 [ 14.861276] gspca: probing 045e:00f7 [ 14.861301] usbcore: registered new interface driver sonixj [ 14.861304] sonixj: registered [ 15.047140] [drm] Initialized drm 1.1.0 20060810 [ 15.125797] type=1400 audit(1280372492.533:2): operation="profile_load" pid=532 name="/sbin/dhclient3" pid=532 comm="apparmor_parser" [ 15.126496] type=1400 audit(1280372492.533:3): operation="profile_load" pid=532 name="/usr/lib/NetworkManager/nm-dhcp-client.action" pid=532 comm="apparmor_parser" [ 15.126870] type=1400 audit(1280372492.533:4): operation="profile_load" pid=532 name="/usr/lib/connman/scripts/dhclient-script" pid=532 comm="apparmor_parser" [ 15.216824] i915 0000:00:02.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16 [ 15.216832] i915 0000:00:02.0: setting latency timer to 64 [ 15.249754] BUG: unable to handle kernel NULL pointer dereference at (null) [ 15.250217] IP: [] __mutex_lock_slowpath+0x9a/0x140 [ 15.250588] *pde = 3df7b067 [ 15.250779] Oops: 0002 [#1] SMP [ 15.251002] last sysfs file: /sys/module/snd_rawmidi/initstate [ 15.251360] Modules linked in: i915(+) drm_kms_helper snd_seq_midi_event snd_seq snd_rawmidi snd_timer drm snd_seq_device gspca_sonixj gspca_main snd videodev v4l1_compat dcdbas intel_agp lp soundcore snd_page_alloc i2c_algo_bit video output psmouse serio_raw parport agpgart usbhid hid e100 mii [ 15.252001] [ 15.252001] Pid: 219, comm: plymouthd Not tainted 2.6.35-11-generic #16-Ubuntu 0JC474/Dell DV051 [ 15.252001] EIP: 0060:[] EFLAGS: 00010246 CPU: 0 [ 15.252001] EIP is at __mutex_lock_slowpath+0x9a/0x140 [ 15.252001] EAX: 00000000 EBX: f5288e90 ECX: f5288e98 EDX: f5b13ec0 [ 15.252001] ESI: f5288e94 EDI: f5288e90 EBP: f5b13ed8 ESP: f5b13eb4 [ 15.252001] DS: 007b ES: 007b FS: 00d8 GS: 00e0 SS: 0068 [ 15.252001] Process plymouthd (pid: 219, ti=f5b12000 task=f69bcc20 task.ti=f5b12000) [ 15.252001] Stack: [ 15.252001] f849c400 f69bcc20 f5288e98 f5288e98 00000000 f5b13ed8 f5288e90 f5381f80 [ 15.252001] <0> f5288e90 f5b13ee8 c05c8295 f5381f80 f5381f80 f5b13efc f848fd53 f5381f80 [ 15.252001] <0> f5381fe0 f5288c00 f5b13f44 f8487327 00000001 f8497d85 f8497180 f84994f0 [ 15.252001] Call Trace: [ 15.252001] [] ? mutex_lock+0x25/0x40 [ 15.252001] [] ? drm_fb_release+0x23/0x70 [drm] [ 15.252001] [] ? drm_release+0x3e7/0x4c0 [drm] [ 15.252001] [] ? __fput+0xe4/0x1e0 [ 15.252001] [] ? fput+0x1d/0x30 [ 15.252001] [] ? filp_close+0x4c/0x80 [ 15.252001] [] ? sys_close+0x75/0xc0 [ 15.252001] [] ? syscall_call+0x7/0xb [ 15.252001] Code: 83 79 18 63 7f b3 8d 76 00 8d 73 04 89 f0 e8 3e 11 00 00 8d 53 08 89 55 e4 8d 55 e8 8b 43 0c 89 53 0c 8b 4d e4 89 45 ec 89 4d e8 <89> 10 8b 45 e0 ba ff ff ff ff 89 45 f0 89 d0 87 03 83 f8 01 74 [ 15.252001] EIP: [] __mutex_lock_slowpath+0x9a/0x140 SS:ESP 0068:f5b13eb4 [ 15.252001] CR2: 0000000000000000 [ 15.360760] ---[ end trace 42c28ebb0ba13839 ]--- [ 15.388553] [drm] set up 7M of stolen space [ 15.390350] [drm] initialized overlay support [ 15.685421] checking generic (c012c000 130000) vs hw (c0000000 10000000) [ 15.686223] fb: conflicting fb hw usage inteldrmfb vs VESA VGA - removing generic driver [ 15.687845] Console: switching to colour dummy device 80x25 [ 15.693144] usbcore: registered new interface driver snd-usb-audio [ 15.808232] Console: switching to colour frame buffer device 160x64 [ 15.813372] fb0: inteldrmfb frame buffer device [ 15.813402] drm: registered panic notifier [ 15.813600] Slow work thread pool: Starting up [ 15.813688] Slow work thread pool: Ready [ 15.813724] [drm] Initialized i915 1.6.0 20080730 for 0000:00:02.0 on minor 0 [ 15.865210] type=1400 audit(1280372493.273:5): operation="profile_load" pid=659 name="/usr/share/gdm/guest-session/Xsession" pid=659 comm="apparmor_parser" [ 15.867326] type=1400 audit(1280372493.273:6): operation="profile_replace" pid=660 name="/sbin/dhclient3" pid=660 comm="apparmor_parser" [ 15.878649] type=1400 audit(1280372493.285:7): operation="profile_replace" pid=660 name="/usr/lib/NetworkManager/nm-dhcp-client.action" pid=660 comm="apparmor_parser" [ 15.879134] type=1400 audit(1280372493.285:8): operation="profile_replace" pid=660 name="/usr/lib/connman/scripts/dhclient-script" pid=660 comm="apparmor_parser" [ 15.880637] HDA Intel 0000:00:1b.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16 [ 15.880738] alloc irq_desc for 42 on node -1 [ 15.880769] alloc kstat_irqs on node -1 [ 15.880809] HDA Intel 0000:00:1b.0: irq 42 for MSI/MSI-X [ 15.880876] HDA Intel 0000:00:1b.0: setting latency timer to 64 [ 15.888185] type=1400 audit(1280372493.297:9): operation="profile_load" pid=664 name="/usr/bin/evince" pid=664 comm="apparmor_parser" [ 15.931244] type=1400 audit(1280372493.337:10): operation="profile_load" pid=664 name="/usr/bin/evince-previewer" pid=664 comm="apparmor_parser" [ 15.943463] type=1400 audit(1280372493.349:11): operation="profile_load" pid=664 name="/usr/bin/evince-thumbnailer" pid=664 comm="apparmor_parser" [ 16.016539] input: HDA Intel Line In at Ext Rear Jack as /devices/pci0000:00/0000:00:1b.0/sound/card0/input5 [ 16.016723] input: HDA Intel Mic at Ext Rear Jack as /devices/pci0000:00/0000:00:1b.0/sound/card0/input6 [ 16.016862] input: HDA Intel Line Out at Ext Rear Jack as /devices/pci0000:00/0000:00:1b.0/sound/card0/input7 [ 16.017004] input: HDA Intel HP Out at Ext Front Jack as /devices/pci0000:00/0000:00:1b.0/sound/card0/input8 [ 16.177781] ADDRCONF(NETDEV_UP): eth0: link is not ready [ 16.180148] e100 0000:03:08.0: eth0: NIC Link is Up 100 Mbps Full Duplex [ 16.180449] ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready Bug: 611167 [ 0.000000] Initializing cgroup subsys cpuset [ 0.000000] Initializing cgroup subsys cpu [ 0.000000] Linux version 2.6.35-12-generic (buildd@yellow) (gcc version 4.4.5 20100723 (prerelease) (Ubuntu/Linaro 4.4.4-7ubuntu3) ) #17-Ubuntu SMP Mon Jul 26 18:48:06 UTC 2010 (Ubuntu 2.6.35-12.17-generic 2.6.35-rc6) [ 0.000000] Command line: BOOT_IMAGE=/boot/vmlinuz-2.6.35-12-generic root=UUID=4d067662-922d-426f-8fe7-1ea24d7fc5f9 ro quiet splash [ 0.000000] BIOS-provided physical RAM map: [ 0.000000] BIOS-e820: 0000000000000000 - 000000000009e000 (usable) [ 0.000000] BIOS-e820: 000000000009e000 - 00000000000a0000 (reserved) [ 0.000000] BIOS-e820: 00000000000e0000 - 0000000000100000 (reserved) [ 0.000000] BIOS-e820: 0000000000100000 - 00000000b8a99000 (usable) [ 0.000000] BIOS-e820: 00000000b8a99000 - 00000000b8a9c000 (ACPI NVS) [ 0.000000] BIOS-e820: 00000000b8a9c000 - 00000000b9ea8000 (usable) [ 0.000000] BIOS-e820: 00000000b9ea8000 - 00000000b9ebf000 (reserved) [ 0.000000] BIOS-e820: 00000000b9ebf000 - 00000000b9f86000 (usable) [ 0.000000] BIOS-e820: 00000000b9f86000 - 00000000b9fbf000 (ACPI NVS) [ 0.000000] BIOS-e820: 00000000b9fbf000 - 00000000b9fe1000 (usable) [ 0.000000] BIOS-e820: 00000000b9fe1000 - 00000000b9ff6000 (ACPI data) [ 0.000000] BIOS-e820: 00000000b9ff6000 - 00000000ba000000 (usable) [ 0.000000] BIOS-e820: 00000000ba000000 - 00000000c0000000 (reserved) [ 0.000000] BIOS-e820: 00000000f8000000 - 00000000fc000000 (reserved) [ 0.000000] BIOS-e820: 00000000fec00000 - 00000000fec01000 (reserved) [ 0.000000] BIOS-e820: 00000000fed10000 - 00000000fed14000 (reserved) [ 0.000000] BIOS-e820: 00000000fed18000 - 00000000fed1a000 (reserved) [ 0.000000] BIOS-e820: 00000000fed1c000 - 00000000fed20000 (reserved) [ 0.000000] BIOS-e820: 00000000fee00000 - 00000000fee01000 (reserved) [ 0.000000] BIOS-e820: 00000000fff00000 - 0000000100000000 (reserved) [ 0.000000] BIOS-e820: 0000000100000000 - 0000000140000000 (usable) [ 0.000000] NX (Execute Disable) protection: active [ 0.000000] DMI 2.4 present. [ 0.000000] e820 update range: 0000000000000000 - 0000000000001000 (usable) ==> (reserved) [ 0.000000] e820 remove range: 00000000000a0000 - 0000000000100000 (usable) [ 0.000000] No AGP bridge found [ 0.000000] last_pfn = 0x140000 max_arch_pfn = 0x400000000 [ 0.000000] MTRR default type: uncachable [ 0.000000] MTRR fixed ranges enabled: [ 0.000000] 00000-9FFFF write-back [ 0.000000] A0000-BFFFF uncachable [ 0.000000] C0000-FFFFF write-protect [ 0.000000] MTRR variable ranges enabled: [ 0.000000] 0 base 000000000 mask F80000000 write-back [ 0.000000] 1 base 0FFFE0000 mask FFFFE0000 write-protect [ 0.000000] 2 base 0FFFD8000 mask FFFFF8000 write-protect [ 0.000000] 3 base 080000000 mask FC0000000 write-back [ 0.000000] 4 base 0BC000000 mask FFC000000 uncachable [ 0.000000] 5 base 0BA000000 mask FFE000000 uncachable [ 0.000000] 6 base 100000000 mask FC0000000 write-back [ 0.000000] 7 disabled [ 0.000000] x86 PAT enabled: cpu 0, old 0x7040600070406, new 0x7010600070106 [ 0.000000] last_pfn = 0xba000 max_arch_pfn = 0x400000000 [ 0.000000] e820 update range: 0000000000001000 - 0000000000010000 (usable) ==> (reserved) [ 0.000000] Scanning 1 areas for low memory corruption [ 0.000000] modified physical RAM map: [ 0.000000] modified: 0000000000000000 - 0000000000010000 (reserved) [ 0.000000] modified: 0000000000010000 - 000000000009e000 (usable) [ 0.000000] modified: 000000000009e000 - 00000000000a0000 (reserved) [ 0.000000] modified: 00000000000e0000 - 0000000000100000 (reserved) [ 0.000000] modified: 0000000000100000 - 00000000b8a99000 (usable) [ 0.000000] modified: 00000000b8a99000 - 00000000b8a9c000 (ACPI NVS) [ 0.000000] modified: 00000000b8a9c000 - 00000000b9ea8000 (usable) [ 0.000000] modified: 00000000b9ea8000 - 00000000b9ebf000 (reserved) [ 0.000000] modified: 00000000b9ebf000 - 00000000b9f86000 (usable) [ 0.000000] modified: 00000000b9f86000 - 00000000b9fbf000 (ACPI NVS) [ 0.000000] modified: 00000000b9fbf000 - 00000000b9fe1000 (usable) [ 0.000000] modified: 00000000b9fe1000 - 00000000b9ff6000 (ACPI data) [ 0.000000] modified: 00000000b9ff6000 - 00000000ba000000 (usable) [ 0.000000] modified: 00000000ba000000 - 00000000c0000000 (reserved) [ 0.000000] modified: 00000000f8000000 - 00000000fc000000 (reserved) [ 0.000000] modified: 00000000fec00000 - 00000000fec01000 (reserved) [ 0.000000] modified: 00000000fed10000 - 00000000fed14000 (reserved) [ 0.000000] modified: 00000000fed18000 - 00000000fed1a000 (reserved) [ 0.000000] modified: 00000000fed1c000 - 00000000fed20000 (reserved) [ 0.000000] modified: 00000000fee00000 - 00000000fee01000 (reserved) [ 0.000000] modified: 00000000fff00000 - 0000000100000000 (reserved) [ 0.000000] modified: 0000000100000000 - 0000000140000000 (usable) [ 0.000000] initial memory mapped : 0 - 20000000 [ 0.000000] init_memory_mapping: 0000000000000000-00000000ba000000 [ 0.000000] 0000000000 - 00ba000000 page 2M [ 0.000000] kernel direct mapping tables up to ba000000 @ 16000-1a000 [ 0.000000] init_memory_mapping: 0000000100000000-0000000140000000 [ 0.000000] 0100000000 - 0140000000 page 2M [ 0.000000] kernel direct mapping tables up to 140000000 @ 18000-1e000 [ 0.000000] RAMDISK: 37576000 - 37ff0000 [ 0.000000] ACPI: RSDP 00000000000fe020 00024 (v02 HPQOEM) [ 0.000000] ACPI: XSDT 00000000b9ff5120 00064 (v01 HPQOEM SLIC-MPC 00000001 01000013) [ 0.000000] ACPI: FACP 00000000b9ff4000 000F4 (v04 HPQOEM SLIC-MPC 00000001 MSFT 01000013) [ 0.000000] ACPI: DSDT 00000000b9fe4000 0BBE9 (v01 HPQOEM SLIC-MPC 00000001 MSFT 01000013) [ 0.000000] ACPI: FACS 00000000b9f92000 00040 [ 0.000000] ACPI: HPET 00000000b9ff3000 00038 (v01 HPQOEM SLIC-MPC 00000001 MSFT 01000013) [ 0.000000] ACPI: APIC 00000000b9ff2000 0006C (v02 HPQOEM SLIC-MPC 00000001 MSFT 01000013) [ 0.000000] ACPI: MCFG 00000000b9ff1000 0003C (v01 HPQOEM SLIC-MPC 00000001 MSFT 01000013) [ 0.000000] ACPI: ASF! 00000000b9ff0000 000A5 (v32 HPQOEM SLIC-MPC 00000001 MSFT 01000013) [ 0.000000] ACPI: SLIC 00000000b9fe3000 00176 (v01 HPQOEM SLIC-MPC 06040000 LTP 00000001) [ 0.000000] ACPI: BOOT 00000000b9fe2000 00028 (v01 HPQOEM SLIC-MPC 00000001 MSFT 01000013) [ 0.000000] ACPI: SSDT 00000000b9fe1000 00655 (v01 PmRef CpuPm 00003000 INTL 20051117) [ 0.000000] ACPI: Local APIC address 0xfee00000 [ 0.000000] No NUMA configuration found [ 0.000000] Faking a node at 0000000000000000-0000000140000000 [ 0.000000] Initmem setup node 0 0000000000000000-0000000140000000 [ 0.000000] NODE_DATA [0000000100000000 - 0000000100004fff] [ 0.000000] [ffffea0000000000-ffffea00045fffff] PMD -> [ffff880100200000-ffff8801039fffff] on node 0 [ 0.000000] Zone PFN ranges: [ 0.000000] DMA 0x00000010 -> 0x00001000 [ 0.000000] DMA32 0x00001000 -> 0x00100000 [ 0.000000] Normal 0x00100000 -> 0x00140000 [ 0.000000] Movable zone start PFN for each node [ 0.000000] early_node_map[7] active PFN ranges [ 0.000000] 0: 0x00000010 -> 0x0000009e [ 0.000000] 0: 0x00000100 -> 0x000b8a99 [ 0.000000] 0: 0x000b8a9c -> 0x000b9ea8 [ 0.000000] 0: 0x000b9ebf -> 0x000b9f86 [ 0.000000] 0: 0x000b9fbf -> 0x000b9fe1 [ 0.000000] 0: 0x000b9ff6 -> 0x000ba000 [ 0.000000] 0: 0x00100000 -> 0x00140000 [ 0.000000] On node 0 totalpages: 1023782 [ 0.000000] DMA zone: 56 pages used for memmap [ 0.000000] DMA zone: 0 pages reserved [ 0.000000] DMA zone: 3926 pages, LIFO batch:0 [ 0.000000] DMA32 zone: 14280 pages used for memmap [ 0.000000] DMA32 zone: 743376 pages, LIFO batch:31 [ 0.000000] Normal zone: 3584 pages used for memmap [ 0.000000] Normal zone: 258560 pages, LIFO batch:31 [ 0.000000] ACPI: PM-Timer IO Port: 0x408 [ 0.000000] ACPI: Local APIC address 0xfee00000 [ 0.000000] ACPI: LAPIC (acpi_id[0x01] lapic_id[0x00] enabled) [ 0.000000] ACPI: LAPIC (acpi_id[0x02] lapic_id[0x01] enabled) [ 0.000000] ACPI: LAPIC (acpi_id[0x03] lapic_id[0x00] disabled) [ 0.000000] ACPI: LAPIC (acpi_id[0x04] lapic_id[0x00] disabled) [ 0.000000] ACPI: IOAPIC (id[0x04] address[0xfec00000] gsi_base[0]) [ 0.000000] IOAPIC[0]: apic_id 4, version 32, address 0xfec00000, GSI 0-23 [ 0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 0 global_irq 2 dfl dfl) [ 0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 9 global_irq 9 high level) [ 0.000000] ACPI: IRQ0 used by override. [ 0.000000] ACPI: IRQ2 used by override. [ 0.000000] ACPI: IRQ9 used by override. [ 0.000000] Using ACPI (MADT) for SMP configuration information [ 0.000000] ACPI: HPET id: 0x8086a201 base: 0xfed00000 [ 0.000000] SMP: Allowing 4 CPUs, 2 hotplug CPUs [ 0.000000] nr_irqs_gsi: 40 [ 0.000000] early_res array is doubled to 64 at [19000 - 197ff] [ 0.000000] PM: Registered nosave memory: 000000000009e000 - 00000000000a0000 [ 0.000000] PM: Registered nosave memory: 00000000000a0000 - 00000000000e0000 [ 0.000000] PM: Registered nosave memory: 00000000000e0000 - 0000000000100000 [ 0.000000] PM: Registered nosave memory: 00000000b8a99000 - 00000000b8a9c000 [ 0.000000] PM: Registered nosave memory: 00000000b9ea8000 - 00000000b9ebf000 [ 0.000000] PM: Registered nosave memory: 00000000b9f86000 - 00000000b9fbf000 [ 0.000000] PM: Registered nosave memory: 00000000b9fe1000 - 00000000b9ff6000 [ 0.000000] PM: Registered nosave memory: 00000000ba000000 - 00000000c0000000 [ 0.000000] PM: Registered nosave memory: 00000000c0000000 - 00000000f8000000 [ 0.000000] PM: Registered nosave memory: 00000000f8000000 - 00000000fc000000 [ 0.000000] PM: Registered nosave memory: 00000000fc000000 - 00000000fec00000 [ 0.000000] PM: Registered nosave memory: 00000000fec00000 - 00000000fec01000 [ 0.000000] PM: Registered nosave memory: 00000000fec01000 - 00000000fed10000 [ 0.000000] PM: Registered nosave memory: 00000000fed10000 - 00000000fed14000 [ 0.000000] PM: Registered nosave memory: 00000000fed14000 - 00000000fed18000 [ 0.000000] PM: Registered nosave memory: 00000000fed18000 - 00000000fed1a000 [ 0.000000] PM: Registered nosave memory: 00000000fed1a000 - 00000000fed1c000 [ 0.000000] PM: Registered nosave memory: 00000000fed1c000 - 00000000fed20000 [ 0.000000] PM: Registered nosave memory: 00000000fed20000 - 00000000fee00000 [ 0.000000] PM: Registered nosave memory: 00000000fee00000 - 00000000fee01000 [ 0.000000] PM: Registered nosave memory: 00000000fee01000 - 00000000fff00000 [ 0.000000] PM: Registered nosave memory: 00000000fff00000 - 0000000100000000 [ 0.000000] Allocating PCI resources starting at c0000000 (gap: c0000000:38000000) [ 0.000000] Booting paravirtualized kernel on bare hardware [ 0.000000] setup_percpu: NR_CPUS:64 nr_cpumask_bits:64 nr_cpu_ids:4 nr_node_ids:1 [ 0.000000] early_res array is doubled to 128 at [19800 - 1a7ff] [ 0.000000] PERCPU: Embedded 30 pages/cpu @ffff880001e00000 s91392 r8192 d23296 u524288 [ 0.000000] pcpu-alloc: s91392 r8192 d23296 u524288 alloc=1*2097152 [ 0.000000] pcpu-alloc: [0] 0 1 2 3 [ 0.000000] Built 1 zonelists in Node order, mobility grouping on. Total pages: 1005862 [ 0.000000] Policy zone: Normal [ 0.000000] Kernel command line: BOOT_IMAGE=/boot/vmlinuz-2.6.35-12-generic root=UUID=4d067662-922d-426f-8fe7-1ea24d7fc5f9 ro quiet splash [ 0.000000] PID hash table entries: 4096 (order: 3, 32768 bytes) [ 0.000000] xsave/xrstor: enabled xstate_bv 0x3, cntxt size 0x240 [ 0.000000] Checking aperture... [ 0.000000] No AGP bridge found [ 0.000000] Calgary: detecting Calgary via BIOS EBDA area [ 0.000000] Calgary: Unable to locate Rio Grande table in EBDA - bailing! [ 0.000000] Subtract (68 early reservations) [ 0.000000] #1 [0001000000 - 0001d20114] TEXT DATA BSS [ 0.000000] #2 [0037576000 - 0037ff0000] RAMDISK [ 0.000000] #3 [000009e000 - 0000100000] BIOS reserved [ 0.000000] #4 [0001d21000 - 0001d211f0] BRK [ 0.000000] #5 [0000010000 - 0000012000] TRAMPOLINE [ 0.000000] #6 [0000012000 - 0000016000] ACPI WAKEUP [ 0.000000] #7 [0000016000 - 0000018000] PGTABLE [ 0.000000] #8 [0000018000 - 0000019000] PGTABLE [ 0.000000] #9 [0100000000 - 0100005000] NODE_DATA [ 0.000000] #10 [0001d21200 - 0001d22200] BOOTMEM [ 0.000000] #11 [0001d20140 - 0001d20440] BOOTMEM [ 0.000000] #12 [0100005000 - 0100006000] BOOTMEM [ 0.000000] #13 [0100006000 - 0100007000] BOOTMEM [ 0.000000] #14 [0100200000 - 0103a00000] MEMMAP 0 [ 0.000000] #15 [0001d20440 - 0001d205c0] BOOTMEM [ 0.000000] #16 [0001d22200 - 0001d3a200] BOOTMEM [ 0.000000] #17 [0001d3a200 - 0001d40200] BOOTMEM [ 0.000000] #18 [0001d41000 - 0001d42000] BOOTMEM [ 0.000000] #19 [0001d205c0 - 0001d20601] BOOTMEM [ 0.000000] #20 [0001d20640 - 0001d20683] BOOTMEM [ 0.000000] #21 [0001d206c0 - 0001d20b90] BOOTMEM [ 0.000000] #22 [0001d20bc0 - 0001d20c28] BOOTMEM [ 0.000000] #23 [0001d20c40 - 0001d20ca8] BOOTMEM [ 0.000000] #24 [0001d20cc0 - 0001d20d28] BOOTMEM [ 0.000000] #25 [0001d20d40 - 0001d20da8] BOOTMEM [ 0.000000] #26 [0001d20dc0 - 0001d20e28] BOOTMEM [ 0.000000] #27 [0001d20e40 - 0001d20ea8] BOOTMEM [ 0.000000] #28 [0001d20ec0 - 0001d20f28] BOOTMEM [ 0.000000] #29 [0001d20f40 - 0001d20fa8] BOOTMEM [ 0.000000] #30 [0001d40200 - 0001d40268] BOOTMEM [ 0.000000] #31 [0001d40280 - 0001d402e8] BOOTMEM [ 0.000000] #32 [0001d40300 - 0001d40368] BOOTMEM [ 0.000000] #33 [0001d40380 - 0001d403e8] BOOTMEM [ 0.000000] #34 [0001d40400 - 0001d40468] BOOTMEM [ 0.000000] #35 [0001d40480 - 0001d404e8] BOOTMEM [ 0.000000] #36 [0001d40500 - 0001d40568] BOOTMEM [ 0.000000] #37 [0001d40580 - 0001d405e8] BOOTMEM [ 0.000000] #38 [0001d40600 - 0001d40668] BOOTMEM [ 0.000000] #39 [0001d40680 - 0001d406e8] BOOTMEM [ 0.000000] #40 [0001d40700 - 0001d40768] BOOTMEM [ 0.000000] #41 [0001d40780 - 0001d407e8] BOOTMEM [ 0.000000] #42 [0001d40800 - 0001d40868] BOOTMEM [ 0.000000] #43 [0001d20fc0 - 0001d20fe0] BOOTMEM [ 0.000000] #44 [0001d40880 - 0001d408a0] BOOTMEM [ 0.000000] #45 [0001d408c0 - 0001d408e0] BOOTMEM [ 0.000000] #46 [0001d40900 - 0001d40920] BOOTMEM [ 0.000000] #47 [0001d40940 - 0001d40960] BOOTMEM [ 0.000000] #48 [0001d40980 - 0001d409a0] BOOTMEM [ 0.000000] #49 [0001d409c0 - 0001d40a2a] BOOTMEM [ 0.000000] #50 [0001d40a40 - 0001d40aaa] BOOTMEM [ 0.000000] #51 [0001e00000 - 0001e1e000] BOOTMEM [ 0.000000] #52 [0001e80000 - 0001e9e000] BOOTMEM [ 0.000000] #53 [0001f00000 - 0001f1e000] BOOTMEM [ 0.000000] #54 [0001f80000 - 0001f9e000] BOOTMEM [ 0.000000] #55 [0001d40ac0 - 0001d40ac8] BOOTMEM [ 0.000000] #56 [0001d40b00 - 0001d40b08] BOOTMEM [ 0.000000] #57 [0001d40b40 - 0001d40b50] BOOTMEM [ 0.000000] #58 [0001d40b80 - 0001d40ba0] BOOTMEM [ 0.000000] #59 [0001d40bc0 - 0001d40cf0] BOOTMEM [ 0.000000] #60 [0001d40d00 - 0001d40d50] BOOTMEM [ 0.000000] #61 [0001d40d80 - 0001d40dd0] BOOTMEM [ 0.000000] #62 [0001d42000 - 0001d4a000] BOOTMEM [ 0.000000] #63 [0001d4a000 - 0001d4a240] BOOTMEM [ 0.000000] #64 [0001f9e000 - 0005f9e000] BOOTMEM [ 0.000000] #65 [0001d4a240 - 0001d6a240] BOOTMEM [ 0.000000] #66 [0001d6a240 - 0001daa240] BOOTMEM [ 0.000000] #67 [000001a800 - 0000022800] BOOTMEM [ 0.000000] Memory: 3946944k/5242880k available (5707k kernel code, 1147752k absent, 148184k reserved, 5420k data, 904k init) [ 0.000000] SLUB: Genslabs=14, HWalign=64, Order=0-3, MinObjects=0, CPUs=4, Nodes=1 [ 0.000000] Hierarchical RCU implementation. [ 0.000000] RCU dyntick-idle grace-period acceleration is enabled. [ 0.000000] RCU-based detection of stalled CPUs is disabled. [ 0.000000] Verbose stalled-CPUs detection is disabled. [ 0.000000] NR_IRQS:4352 nr_irqs:712 [ 0.000000] Console: colour dummy device 80x25 [ 0.000000] console [tty0] enabled [ 0.000000] allocated 41943040 bytes of page_cgroup [ 0.000000] please try 'cgroup_disable=memory' option if you don't want memory cgroups [ 0.000000] hpet clockevent registered [ 0.000000] Fast TSC calibration using PIT [ 0.000000] Detected 1995.125 MHz processor. [ 0.010010] Calibrating delay loop (skipped), value calculated using timer frequency.. 3990.25 BogoMIPS (lpj=19951250) [ 0.010014] pid_max: default: 32768 minimum: 301 [ 0.010041] Security Framework initialized [ 0.010061] AppArmor: AppArmor initialized [ 0.010063] Yama: becoming mindful. [ 0.010525] Dentry cache hash table entries: 524288 (order: 10, 4194304 bytes) [ 0.012705] Inode-cache hash table entries: 262144 (order: 9, 2097152 bytes) [ 0.013712] Mount-cache hash table entries: 256 [ 0.013876] Initializing cgroup subsys ns [ 0.013882] Initializing cgroup subsys cpuacct [ 0.013886] Initializing cgroup subsys memory [ 0.013895] Initializing cgroup subsys devices [ 0.013898] Initializing cgroup subsys freezer [ 0.013900] Initializing cgroup subsys net_cls [ 0.013932] CPU: Physical Processor ID: 0 [ 0.013933] CPU: Processor Core ID: 0 [ 0.013936] mce: CPU supports 6 MCE banks [ 0.013945] CPU0: Thermal monitoring enabled (TM1) [ 0.013949] using mwait in idle threads. [ 0.013951] Performance Events: PEBS fmt0+, Core2 events, Intel PMU driver. [ 0.013960] ... version: 2 [ 0.013962] ... bit width: 40 [ 0.013963] ... generic registers: 2 [ 0.013965] ... value mask: 000000ffffffffff [ 0.013967] ... max period: 000000007fffffff [ 0.013969] ... fixed-purpose events: 3 [ 0.013970] ... event mask: 0000000700000003 [ 0.016822] ACPI: Core revision 20100428 [ 0.040011] ftrace: converting mcount calls to 0f 1f 44 00 00 [ 0.040017] ftrace: allocating 22648 entries in 89 pages [ 0.050059] Setting APIC routing to flat [ 0.050382] ..TIMER: vector=0x30 apic1=0 pin1=2 apic2=-1 pin2=-1 [ 0.152601] CPU0: Intel(R) Core(TM)2 Duo CPU T6400 @ 2.00GHz stepping 0a [ 0.160000] Booting Node 0, Processors #1 [ 0.320017] Brought up 2 CPUs [ 0.320021] Total of 2 processors activated (7980.24 BogoMIPS). [ 0.320581] devtmpfs: initialized [ 0.320732] regulator: core version 0.5 [ 0.320763] Time: 11:47:46 Date: 07/29/10 [ 0.320803] NET: Registered protocol family 16 [ 0.320827] Trying to unpack rootfs image as initramfs... [ 0.320940] ACPI: bus type pci registered [ 0.321017] PCI: MMCONFIG for domain 0000 [bus 00-3f] at [mem 0xf8000000-0xfbffffff] (base 0xf8000000) [ 0.321021] PCI: MMCONFIG at [mem 0xf8000000-0xfbffffff] reserved in E820 [ 0.338593] PCI: Using configuration type 1 for base access [ 0.350352] bio: create slab at 0 [ 0.352586] ACPI: EC: Look up EC in DSDT [ 0.355032] ACPI: Executed 1 blocks of module-level executable AML code [ 0.357487] ACPI: BIOS _OSI(Linux) query ignored [ 0.461432] ACPI: SSDT 00000000b9eb4c98 00223 (v01 PmRef Cpu0Ist 00003000 INTL 20051117) [ 0.462057] ACPI: Dynamic OEM Table Load: [ 0.462060] ACPI: SSDT (null) 00223 (v01 PmRef Cpu0Ist 00003000 INTL 20051117) [ 0.462374] ACPI: SSDT 00000000b9eb2598 00537 (v01 PmRef Cpu0Cst 00003001 INTL 20051117) [ 0.462978] ACPI: Dynamic OEM Table Load: [ 0.462981] ACPI: SSDT (null) 00537 (v01 PmRef Cpu0Cst 00003001 INTL 20051117) [ 0.463587] ACPI: SSDT 00000000b9eb3e18 001CF (v01 PmRef ApIst 00003000 INTL 20051117) [ 0.464225] ACPI: Dynamic OEM Table Load: [ 0.464229] ACPI: SSDT (null) 001CF (v01 PmRef ApIst 00003000 INTL 20051117) [ 0.464438] ACPI: SSDT 00000000b9eb4f18 0008D (v01 PmRef ApCst 00003000 INTL 20051117) [ 0.465054] ACPI: Dynamic OEM Table Load: [ 0.465057] ACPI: SSDT (null) 0008D (v01 PmRef ApCst 00003000 INTL 20051117) [ 0.466147] ACPI: Interpreter enabled [ 0.466147] ACPI: (supports S0 S3 S4 S5) [ 0.466147] ACPI: Using IOAPIC for interrupt routing [ 0.478035] ACPI: EC: GPE = 0x17, I/O: command/status = 0x66, data = 0x62 [ 0.478328] ACPI: No dock devices found. [ 0.478332] PCI: Using host bridge windows from ACPI; if necessary, use "pci=nocrs" and report a bug [ 0.479024] ACPI: PCI Root Bridge [PCI0] (domain 0000 [bus 00-ff]) [ 0.480643] pci_root PNP0A08:00: host bridge window [io 0x0000-0x0cf7] [ 0.480646] pci_root PNP0A08:00: host bridge window [io 0x0d00-0xffff] [ 0.480650] pci_root PNP0A08:00: host bridge window [mem 0x000a0000-0x000bffff] [ 0.480654] pci_root PNP0A08:00: host bridge window [mem 0xc0000000-0xfebfffff] [ 0.480724] pci 0000:00:02.0: reg 10: [mem 0xd0000000-0xd03fffff 64bit] [ 0.480731] pci 0000:00:02.0: reg 18: [mem 0xc0000000-0xcfffffff 64bit pref] [ 0.480736] pci 0000:00:02.0: reg 20: [io 0x9110-0x9117] [ 0.480778] pci 0000:00:02.1: reg 10: [mem 0xd6500000-0xd65fffff 64bit] [ 0.480890] pci 0000:00:1a.0: reg 20: [io 0x90e0-0x90ff] [ 0.480977] pci 0000:00:1a.1: reg 20: [io 0x90c0-0x90df] [ 0.481062] pci 0000:00:1a.7: reg 10: [mem 0xdc705c00-0xdc705fff] [ 0.481132] pci 0000:00:1a.7: PME# supported from D0 D3hot D3cold [ 0.481137] pci 0000:00:1a.7: PME# disabled [ 0.481182] pci 0000:00:1b.0: reg 10: [mem 0xdc700000-0xdc703fff 64bit] [ 0.481237] pci 0000:00:1b.0: PME# supported from D0 D3hot D3cold [ 0.481242] pci 0000:00:1b.0: PME# disabled [ 0.481332] pci 0000:00:1c.0: PME# supported from D0 D3hot D3cold [ 0.481336] pci 0000:00:1c.0: PME# disabled [ 0.481426] pci 0000:00:1c.1: PME# supported from D0 D3hot D3cold [ 0.481431] pci 0000:00:1c.1: PME# disabled [ 0.481520] pci 0000:00:1c.2: PME# supported from D0 D3hot D3cold [ 0.481525] pci 0000:00:1c.2: PME# disabled [ 0.481618] pci 0000:00:1c.3: PME# supported from D0 D3hot D3cold [ 0.481623] pci 0000:00:1c.3: PME# disabled [ 0.481711] pci 0000:00:1c.4: PME# supported from D0 D3hot D3cold [ 0.481716] pci 0000:00:1c.4: PME# disabled [ 0.481807] pci 0000:00:1c.5: PME# supported from D0 D3hot D3cold [ 0.481811] pci 0000:00:1c.5: PME# disabled [ 0.481878] pci 0000:00:1d.0: reg 20: [io 0x90a0-0x90bf] [ 0.481963] pci 0000:00:1d.1: reg 20: [io 0x9080-0x909f] [ 0.482048] pci 0000:00:1d.2: reg 20: [io 0x9060-0x907f] [ 0.482135] pci 0000:00:1d.3: reg 20: [io 0x9040-0x905f] [ 0.482217] pci 0000:00:1d.7: reg 10: [mem 0xdc705800-0xdc705bff] [ 0.482286] pci 0000:00:1d.7: PME# supported from D0 D3hot D3cold [ 0.482291] pci 0000:00:1d.7: PME# disabled [ 0.482505] pci 0000:00:1f.2: reg 10: [io 0x9108-0x910f] [ 0.482512] pci 0000:00:1f.2: reg 14: [io 0x911c-0x911f] [ 0.482519] pci 0000:00:1f.2: reg 18: [io 0x9100-0x9107] [ 0.482526] pci 0000:00:1f.2: reg 1c: [io 0x9118-0x911b] [ 0.482534] pci 0000:00:1f.2: reg 20: [io 0x9020-0x903f] [ 0.482541] pci 0000:00:1f.2: reg 24: [mem 0xdc705000-0xdc7057ff] [ 0.482583] pci 0000:00:1f.2: PME# supported from D3hot [ 0.482588] pci 0000:00:1f.2: PME# disabled [ 0.482626] pci 0000:00:1f.3: reg 10: [mem 0xdc706000-0xdc7060ff 64bit] [ 0.482643] pci 0000:00:1f.3: reg 20: [io 0x9000-0x901f] [ 0.482703] pci 0000:00:1f.6: reg 10: [mem 0xdc704000-0xdc704fff 64bit] [ 0.482967] pci 0000:02:00.0: reg 10: [mem 0xdb600000-0xdb603fff 64bit] [ 0.483175] pci 0000:02:00.0: supports D1 D2 [ 0.483337] pci 0000:00:1c.0: PCI bridge to [bus 02-02] [ 0.483342] pci 0000:00:1c.0: bridge window [io 0x8000-0x8fff] [ 0.483346] pci 0000:00:1c.0: bridge window [mem 0xdb600000-0xdc6fffff] [ 0.483354] pci 0000:00:1c.0: bridge window [mem 0xd0400000-0xd13fffff 64bit pref] [ 0.483442] pci 0000:03:00.0: reg 10: [io 0x6000-0x60ff] [ 0.483466] pci 0000:03:00.0: reg 18: [mem 0xd1410000-0xd1410fff 64bit pref] [ 0.483483] pci 0000:03:00.0: reg 20: [mem 0xd1400000-0xd140ffff 64bit pref] [ 0.483493] pci 0000:03:00.0: reg 30: [mem 0xffff0000-0xffffffff pref] [ 0.483541] pci 0000:03:00.0: supports D1 D2 [ 0.483543] pci 0000:03:00.0: PME# supported from D0 D1 D2 D3hot D3cold [ 0.483549] pci 0000:03:00.0: PME# disabled [ 0.500026] pci 0000:00:1c.1: PCI bridge to [bus 03-03] [ 0.500032] pci 0000:00:1c.1: bridge window [io 0x6000-0x7fff] [ 0.500038] pci 0000:00:1c.1: bridge window [mem 0xda600000-0xdb5fffff] [ 0.500045] pci 0000:00:1c.1: bridge window [mem 0xd1400000-0xd24fffff 64bit pref] [ 0.500104] pci 0000:00:1c.2: PCI bridge to [bus 04-04] [ 0.500109] pci 0000:00:1c.2: bridge window [io 0x5000-0x5fff] [ 0.500114] pci 0000:00:1c.2: bridge window [mem 0xd9600000-0xda5fffff] [ 0.500121] pci 0000:00:1c.2: bridge window [mem 0xd2500000-0xd34fffff 64bit pref] [ 0.500177] pci 0000:00:1c.3: PCI bridge to [bus 05-05] [ 0.500182] pci 0000:00:1c.3: bridge window [io 0x4000-0x4fff] [ 0.500187] pci 0000:00:1c.3: bridge window [mem 0xd8600000-0xd95fffff] [ 0.500195] pci 0000:00:1c.3: bridge window [mem 0xd3500000-0xd44fffff 64bit pref] [ 0.500249] pci 0000:00:1c.4: PCI bridge to [bus 06-06] [ 0.500254] pci 0000:00:1c.4: bridge window [io 0x3000-0x3fff] [ 0.500259] pci 0000:00:1c.4: bridge window [mem 0xd7600000-0xd85fffff] [ 0.500266] pci 0000:00:1c.4: bridge window [mem 0xd4500000-0xd54fffff 64bit pref] [ 0.500321] pci 0000:00:1c.5: PCI bridge to [bus 07-09] [ 0.500325] pci 0000:00:1c.5: bridge window [io 0x2000-0x2fff] [ 0.500330] pci 0000:00:1c.5: bridge window [mem 0xd6600000-0xd75fffff] [ 0.500338] pci 0000:00:1c.5: bridge window [mem 0xd5500000-0xd64fffff 64bit pref] [ 0.500419] pci 0000:00:1e.0: PCI bridge to [bus 0a-0a] (subtractive decode) [ 0.500424] pci 0000:00:1e.0: bridge window [io 0xf000-0x0000] (disabled) [ 0.500429] pci 0000:00:1e.0: bridge window [mem 0xfff00000-0x000fffff] (disabled) [ 0.500437] pci 0000:00:1e.0: bridge window [mem 0xfff00000-0x000fffff pref] (disabled) [ 0.500440] pci 0000:00:1e.0: bridge window [io 0x0000-0x0cf7] (subtractive decode) [ 0.500443] pci 0000:00:1e.0: bridge window [io 0x0d00-0xffff] (subtractive decode) [ 0.500446] pci 0000:00:1e.0: bridge window [mem 0x000a0000-0x000bffff] (subtractive decode) [ 0.500449] pci 0000:00:1e.0: bridge window [mem 0xc0000000-0xfebfffff] (subtractive decode) [ 0.500511] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0._PRT] [ 0.500847] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.P32_._PRT] [ 0.501034] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.EXP1._PRT] [ 0.501140] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.EXP2._PRT] [ 0.501257] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.EXP3._PRT] [ 0.501358] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.EXP4._PRT] [ 0.501461] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.EXP5._PRT] [ 0.501610] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.EXP6._PRT] [ 0.508939] ACPI: PCI Interrupt Link [LNKA] (IRQs 3 4 5 7 9 10 *11 12) [ 0.509094] ACPI: PCI Interrupt Link [LNKB] (IRQs 3 4 5 7 9 10 *11 12) [ 0.509249] ACPI: PCI Interrupt Link [LNKC] (IRQs 3 4 5 7 9 10 *11 12) [ 0.509407] ACPI: PCI Interrupt Link [LNKD] (IRQs 3 4 5 7 9 10 *11 12) [ 0.509558] ACPI: PCI Interrupt Link [LNKE] (IRQs 3 4 5 7 9 10 *11 12) [ 0.509709] ACPI: PCI Interrupt Link [LNKF] (IRQs 3 4 5 7 9 *10 11 12) [ 0.509861] ACPI: PCI Interrupt Link [LNKG] (IRQs 3 4 5 7 9 10 *11 12) [ 0.510024] ACPI: PCI Interrupt Link [LNKH] (IRQs 3 4 5 7 9 10 11 12) *0, disabled. [ 0.510100] HEST: Table is not found! [ 0.510182] vgaarb: device added: PCI:0000:00:02.0,decodes=io+mem,owns=io+mem,locks=none [ 0.510201] vgaarb: loaded [ 0.510354] SCSI subsystem initialized [ 0.510451] libata version 3.00 loaded. [ 0.510511] usbcore: registered new interface driver usbfs [ 0.510522] usbcore: registered new interface driver hub [ 0.510546] usbcore: registered new device driver usb [ 0.510779] ACPI: WMI: Mapper loaded [ 0.510781] PCI: Using ACPI for IRQ routing [ 0.510785] PCI: pci_cache_line_size set to 64 bytes [ 0.510982] reserve RAM buffer: 000000000009e000 - 000000000009ffff [ 0.510985] reserve RAM buffer: 00000000b8a99000 - 00000000bbffffff [ 0.510988] reserve RAM buffer: 00000000b9ea8000 - 00000000bbffffff [ 0.510991] reserve RAM buffer: 00000000b9f86000 - 00000000bbffffff [ 0.510994] reserve RAM buffer: 00000000b9fe1000 - 00000000bbffffff [ 0.510997] reserve RAM buffer: 00000000ba000000 - 00000000bbffffff [ 0.511088] NetLabel: Initializing [ 0.511090] NetLabel: domain hash size = 128 [ 0.511092] NetLabel: protocols = UNLABELED CIPSOv4 [ 0.511106] NetLabel: unlabeled traffic allowed by default [ 0.511136] HPET: 4 timers in total, 0 timers will be used for per-cpu timer [ 0.511143] hpet0: at MMIO 0xfed00000, IRQs 2, 8, 0, 0 [ 0.511148] hpet0: 4 comparators, 64-bit 14.318180 MHz counter [ 0.530042] Switching to clocksource tsc [ 0.540302] AppArmor: AppArmor Filesystem Enabled [ 0.540322] pnp: PnP ACPI init [ 0.540341] ACPI: bus type pnp registered [ 0.543272] alloc irq_desc for 23 on node 0 [ 0.543275] alloc kstat_irqs on node 0 [ 0.543684] pnp: PnP ACPI: found 12 devices [ 0.543686] ACPI: ACPI bus type pnp unregistered [ 0.543699] system 00:00: [mem 0xf8000000-0xfbffffff] has been reserved [ 0.543705] system 00:02: [io 0x164e-0x164f] has been reserved [ 0.543709] system 00:02: [io 0x0600-0x060f] has been reserved [ 0.543712] system 00:02: [io 0x0610] has been reserved [ 0.543714] system 00:02: [io 0x0800-0x080f] has been reserved [ 0.543717] system 00:02: [io 0x0810-0x0817] has been reserved [ 0.543720] system 00:02: [io 0x0820-0x0823] has been reserved [ 0.543723] system 00:02: [io 0x0400-0x047f] has been reserved [ 0.543726] system 00:02: [io 0x0500-0x053f] has been reserved [ 0.543728] system 00:02: [io 0x0380-0x0387] has been reserved [ 0.543732] system 00:02: [mem 0xf8000000-0xfbffffff] has been reserved [ 0.543735] system 00:02: [mem 0xfed1c000-0xfed1ffff] has been reserved [ 0.543738] system 00:02: [mem 0xfed10000-0xfed13fff] has been reserved [ 0.543741] system 00:02: [mem 0xfed18000-0xfed18fff] has been reserved [ 0.543744] system 00:02: [mem 0xfed19000-0xfed19fff] has been reserved [ 0.543747] system 00:02: [mem 0xfec00000-0xfec00fff] could not be reserved [ 0.543750] system 00:02: [mem 0xfed20000-0xfed3ffff] has been reserved [ 0.543753] system 00:02: [mem 0xfed40000-0xfed44fff] has been reserved [ 0.543756] system 00:02: [mem 0xfed45000-0xfed8ffff] has been reserved [ 0.543763] system 00:02: [mem 0xfee00000-0xfee00fff] has been reserved [ 0.548495] pci 0000:03:00.0: no compatible bridge window for [mem 0xffff0000-0xffffffff pref] [ 0.548567] pci 0000:00:1c.0: PCI bridge to [bus 02-02] [ 0.548571] pci 0000:00:1c.0: bridge window [io 0x8000-0x8fff] [ 0.548577] pci 0000:00:1c.0: bridge window [mem 0xdb600000-0xdc6fffff] [ 0.548582] pci 0000:00:1c.0: bridge window [mem 0xd0400000-0xd13fffff 64bit pref] [ 0.548592] pci 0000:03:00.0: BAR 6: assigned [mem 0xd1420000-0xd142ffff pref] [ 0.548594] pci 0000:00:1c.1: PCI bridge to [bus 03-03] [ 0.548598] pci 0000:00:1c.1: bridge window [io 0x6000-0x7fff] [ 0.548604] pci 0000:00:1c.1: bridge window [mem 0xda600000-0xdb5fffff] [ 0.548608] pci 0000:00:1c.1: bridge window [mem 0xd1400000-0xd24fffff 64bit pref] [ 0.548615] pci 0000:00:1c.2: PCI bridge to [bus 04-04] [ 0.548619] pci 0000:00:1c.2: bridge window [io 0x5000-0x5fff] [ 0.548625] pci 0000:00:1c.2: bridge window [mem 0xd9600000-0xda5fffff] [ 0.548629] pci 0000:00:1c.2: bridge window [mem 0xd2500000-0xd34fffff 64bit pref] [ 0.548636] pci 0000:00:1c.3: PCI bridge to [bus 05-05] [ 0.548640] pci 0000:00:1c.3: bridge window [io 0x4000-0x4fff] [ 0.548646] pci 0000:00:1c.3: bridge window [mem 0xd8600000-0xd95fffff] [ 0.548651] pci 0000:00:1c.3: bridge window [mem 0xd3500000-0xd44fffff 64bit pref] [ 0.548658] pci 0000:00:1c.4: PCI bridge to [bus 06-06] [ 0.548661] pci 0000:00:1c.4: bridge window [io 0x3000-0x3fff] [ 0.548667] pci 0000:00:1c.4: bridge window [mem 0xd7600000-0xd85fffff] [ 0.548672] pci 0000:00:1c.4: bridge window [mem 0xd4500000-0xd54fffff 64bit pref] [ 0.548679] pci 0000:00:1c.5: PCI bridge to [bus 07-09] [ 0.548683] pci 0000:00:1c.5: bridge window [io 0x2000-0x2fff] [ 0.548689] pci 0000:00:1c.5: bridge window [mem 0xd6600000-0xd75fffff] [ 0.548694] pci 0000:00:1c.5: bridge window [mem 0xd5500000-0xd64fffff 64bit pref] [ 0.548702] pci 0000:00:1e.0: PCI bridge to [bus 0a-0a] [ 0.548704] pci 0000:00:1e.0: bridge window [io disabled] [ 0.548709] pci 0000:00:1e.0: bridge window [mem disabled] [ 0.548714] pci 0000:00:1e.0: bridge window [mem pref disabled] [ 0.548732] alloc irq_desc for 17 on node -1 [ 0.548735] alloc kstat_irqs on node -1 [ 0.548741] pci 0000:00:1c.0: PCI INT A -> GSI 17 (level, low) -> IRQ 17 [ 0.548747] pci 0000:00:1c.0: setting latency timer to 64 [ 0.548757] alloc irq_desc for 16 on node -1 [ 0.548758] alloc kstat_irqs on node -1 [ 0.548762] pci 0000:00:1c.1: PCI INT B -> GSI 16 (level, low) -> IRQ 16 [ 0.548767] pci 0000:00:1c.1: setting latency timer to 64 [ 0.548776] pci 0000:00:1c.2: enabling device (0000 -> 0003) [ 0.548779] alloc irq_desc for 18 on node -1 [ 0.548781] alloc kstat_irqs on node -1 [ 0.548785] pci 0000:00:1c.2: PCI INT C -> GSI 18 (level, low) -> IRQ 18 [ 0.548791] pci 0000:00:1c.2: setting latency timer to 64 [ 0.548800] pci 0000:00:1c.3: enabling device (0000 -> 0003) [ 0.548803] alloc irq_desc for 19 on node -1 [ 0.548805] alloc kstat_irqs on node -1 [ 0.548808] pci 0000:00:1c.3: PCI INT D -> GSI 19 (level, low) -> IRQ 19 [ 0.548814] pci 0000:00:1c.3: setting latency timer to 64 [ 0.548824] pci 0000:00:1c.4: PCI INT A -> GSI 17 (level, low) -> IRQ 17 [ 0.548828] pci 0000:00:1c.4: setting latency timer to 64 [ 0.548838] pci 0000:00:1c.5: PCI INT B -> GSI 16 (level, low) -> IRQ 16 [ 0.548843] pci 0000:00:1c.5: setting latency timer to 64 [ 0.548851] pci 0000:00:1e.0: setting latency timer to 64 [ 0.548856] pci_bus 0000:00: resource 4 [io 0x0000-0x0cf7] [ 0.548858] pci_bus 0000:00: resource 5 [io 0x0d00-0xffff] [ 0.548861] pci_bus 0000:00: resource 6 [mem 0x000a0000-0x000bffff] [ 0.548864] pci_bus 0000:00: resource 7 [mem 0xc0000000-0xfebfffff] [ 0.548866] pci_bus 0000:02: resource 0 [io 0x8000-0x8fff] [ 0.548869] pci_bus 0000:02: resource 1 [mem 0xdb600000-0xdc6fffff] [ 0.548871] pci_bus 0000:02: resource 2 [mem 0xd0400000-0xd13fffff 64bit pref] [ 0.548874] pci_bus 0000:03: resource 0 [io 0x6000-0x7fff] [ 0.548876] pci_bus 0000:03: resource 1 [mem 0xda600000-0xdb5fffff] [ 0.548879] pci_bus 0000:03: resource 2 [mem 0xd1400000-0xd24fffff 64bit pref] [ 0.548882] pci_bus 0000:04: resource 0 [io 0x5000-0x5fff] [ 0.548884] pci_bus 0000:04: resource 1 [mem 0xd9600000-0xda5fffff] [ 0.548887] pci_bus 0000:04: resource 2 [mem 0xd2500000-0xd34fffff 64bit pref] [ 0.548889] pci_bus 0000:05: resource 0 [io 0x4000-0x4fff] [ 0.548892] pci_bus 0000:05: resource 1 [mem 0xd8600000-0xd95fffff] [ 0.548894] pci_bus 0000:05: resource 2 [mem 0xd3500000-0xd44fffff 64bit pref] [ 0.548897] pci_bus 0000:06: resource 0 [io 0x3000-0x3fff] [ 0.548899] pci_bus 0000:06: resource 1 [mem 0xd7600000-0xd85fffff] [ 0.548902] pci_bus 0000:06: resource 2 [mem 0xd4500000-0xd54fffff 64bit pref] [ 0.548904] pci_bus 0000:07: resource 0 [io 0x2000-0x2fff] [ 0.548906] pci_bus 0000:07: resource 1 [mem 0xd6600000-0xd75fffff] [ 0.548909] pci_bus 0000:07: resource 2 [mem 0xd5500000-0xd64fffff 64bit pref] [ 0.548912] pci_bus 0000:0a: resource 4 [io 0x0000-0x0cf7] [ 0.548914] pci_bus 0000:0a: resource 5 [io 0x0d00-0xffff] [ 0.548916] pci_bus 0000:0a: resource 6 [mem 0x000a0000-0x000bffff] [ 0.548918] pci_bus 0000:0a: resource 7 [mem 0xc0000000-0xfebfffff] [ 0.548960] NET: Registered protocol family 2 [ 0.549122] IP route cache hash table entries: 131072 (order: 8, 1048576 bytes) [ 0.550480] TCP established hash table entries: 524288 (order: 11, 8388608 bytes) [ 0.554938] TCP bind hash table entries: 65536 (order: 8, 1048576 bytes) [ 0.555474] TCP: Hash tables configured (established 524288 bind 65536) [ 0.555477] TCP reno registered [ 0.555487] UDP hash table entries: 2048 (order: 4, 65536 bytes) [ 0.555531] UDP-Lite hash table entries: 2048 (order: 4, 65536 bytes) [ 0.555698] NET: Registered protocol family 1 [ 0.555719] pci 0000:00:02.0: Boot video device [ 0.556164] PCI: CLS 64 bytes, default 64 [ 0.556166] PCI-DMA: Using software bounce buffering for IO (SWIOTLB) [ 0.556169] Placing 64MB software IO TLB between ffff880001f9e000 - ffff880005f9e000 [ 0.556172] software IO TLB at phys 0x1f9e000 - 0x5f9e000 [ 0.556209] Simple Boot Flag value 0x5 read from CMOS RAM was invalid [ 0.556211] Simple Boot Flag at 0x44 set to 0x1 [ 0.556393] Scanning for low memory corruption every 60 seconds [ 0.556571] audit: initializing netlink socket (disabled) [ 0.556583] type=2000 audit(1280404065.540:1): initialized [ 0.571767] HugeTLB registered 2 MB page size, pre-allocated 0 pages [ 0.573199] VFS: Disk quotas dquot_6.5.2 [ 0.573256] Dquot-cache hash table entries: 512 (order 0, 4096 bytes) [ 0.573808] fuse init (API version 7.14) [ 0.573889] msgmni has been set to 7708 [ 0.574084] alg: No test for stdrng (krng) [ 0.574136] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 253) [ 0.574139] io scheduler noop registered [ 0.574141] io scheduler deadline registered [ 0.574181] io scheduler cfq registered (default) [ 0.574300] pcieport 0000:00:1c.0: setting latency timer to 64 [ 0.574343] alloc irq_desc for 40 on node -1 [ 0.574346] alloc kstat_irqs on node -1 [ 0.574359] pcieport 0000:00:1c.0: irq 40 for MSI/MSI-X [ 0.574447] pcieport 0000:00:1c.1: setting latency timer to 64 [ 0.574487] alloc irq_desc for 41 on node -1 [ 0.574489] alloc kstat_irqs on node -1 [ 0.574497] pcieport 0000:00:1c.1: irq 41 for MSI/MSI-X [ 0.574586] pcieport 0000:00:1c.2: setting latency timer to 64 [ 0.574626] alloc irq_desc for 42 on node -1 [ 0.574628] alloc kstat_irqs on node -1 [ 0.574636] pcieport 0000:00:1c.2: irq 42 for MSI/MSI-X [ 0.574721] pcieport 0000:00:1c.3: setting latency timer to 64 [ 0.574762] alloc irq_desc for 43 on node -1 [ 0.574763] alloc kstat_irqs on node -1 [ 0.574771] pcieport 0000:00:1c.3: irq 43 for MSI/MSI-X [ 0.574862] pcieport 0000:00:1c.4: setting latency timer to 64 [ 0.574901] alloc irq_desc for 44 on node -1 [ 0.574903] alloc kstat_irqs on node -1 [ 0.574911] pcieport 0000:00:1c.4: irq 44 for MSI/MSI-X [ 0.574999] pcieport 0000:00:1c.5: setting latency timer to 64 [ 0.575040] alloc irq_desc for 45 on node -1 [ 0.575041] alloc kstat_irqs on node -1 [ 0.575049] pcieport 0000:00:1c.5: irq 45 for MSI/MSI-X [ 0.575156] pci_hotplug: PCI Hot Plug PCI Core version: 0.5 [ 0.575183] Firmware did not grant requested _OSC control [ 0.575194] Firmware did not grant requested _OSC control [ 0.575204] Firmware did not grant requested _OSC control [ 0.575213] Firmware did not grant requested _OSC control [ 0.575222] Firmware did not grant requested _OSC control [ 0.575231] Firmware did not grant requested _OSC control [ 0.575254] Firmware did not grant requested _OSC control [ 0.575263] Firmware did not grant requested _OSC control [ 0.575273] Firmware did not grant requested _OSC control [ 0.575282] Firmware did not grant requested _OSC control [ 0.575291] Firmware did not grant requested _OSC control [ 0.575300] Firmware did not grant requested _OSC control [ 0.575308] pciehp: PCI Express Hot Plug Controller Driver version: 0.4 [ 0.575746] vesafb: framebuffer at 0xc0000000, mapped to 0xffffc90005100000, using 1216k, total 1216k [ 0.575749] vesafb: mode is 640x480x32, linelength=2560, pages=0 [ 0.575751] vesafb: scrolling: redraw [ 0.575754] vesafb: Truecolor: size=8:8:8:8, shift=24:16:8:0 [ 0.585340] Console: switching to colour frame buffer device 80x30 [ 0.588098] Freeing initrd memory: 10728k freed [ 0.596114] fb0: VESA VGA frame buffer device [ 0.597625] ACPI: AC Adapter [ACAD] (on-line) [ 0.597737] input: Power Button as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0C:00/input/input0 [ 0.597741] ACPI: Power Button [PWRB] [ 0.597790] input: Lid Switch as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0D:00/input/input1 [ 0.598128] ACPI: Lid Switch [LID0] [ 0.598176] input: Sleep Button as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0E:00/input/input2 [ 0.598178] ACPI: Sleep Button [SLPB] [ 0.598233] input: Power Button as /devices/LNXSYSTM:00/LNXPWRBN:00/input/input3 [ 0.598236] ACPI: Power Button [PWRF] [ 0.598746] ACPI: acpi_idle registered with cpuidle [ 0.598995] Monitor-Mwait will be used to enter C-1 state [ 0.599024] Monitor-Mwait will be used to enter C-2 state [ 0.599030] Marking TSC unstable due to TSC halts in idle [ 0.599083] Switching to clocksource hpet [ 0.605869] [Firmware Bug]: Invalid critical threshold (0) [ 0.606748] thermal LNXTHERM:01: registered as thermal_zone0 [ 0.606756] ACPI: Thermal Zone [TZ01] (52 C) [ 0.606842] ERST: Table is not found! [ 0.608494] Linux agpgart interface v0.103 [ 0.608522] Serial: 8250/16550 driver, 4 ports, IRQ sharing enabled [ 0.609972] brd: module loaded [ 0.610533] loop: module loaded [ 0.610991] Fixed MDIO Bus: probed [ 0.611021] PPP generic driver version 2.4.2 [ 0.611050] tun: Universal TUN/TAP device driver, 1.6 [ 0.611052] tun: (C) 1999-2004 Max Krasnyansky [ 0.611124] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver [ 0.611148] ehci_hcd 0000:00:1a.7: PCI INT D -> GSI 19 (level, low) -> IRQ 19 [ 0.611170] ehci_hcd 0000:00:1a.7: setting latency timer to 64 [ 0.611174] ehci_hcd 0000:00:1a.7: EHCI Host Controller [ 0.611205] ehci_hcd 0000:00:1a.7: new USB bus registered, assigned bus number 1 [ 0.611241] ehci_hcd 0000:00:1a.7: debug port 1 [ 0.615141] ehci_hcd 0000:00:1a.7: cache line size of 64 is not supported [ 0.615161] ehci_hcd 0000:00:1a.7: irq 19, io mem 0xdc705c00 [ 0.630046] ehci_hcd 0000:00:1a.7: USB 2.0 started, EHCI 1.00 [ 0.630153] hub 1-0:1.0: USB hub found [ 0.630158] hub 1-0:1.0: 4 ports detected [ 0.630229] alloc irq_desc for 20 on node -1 [ 0.630231] alloc kstat_irqs on node -1 [ 0.630238] ehci_hcd 0000:00:1d.7: PCI INT A -> GSI 20 (level, low) -> IRQ 20 [ 0.630251] ehci_hcd 0000:00:1d.7: setting latency timer to 64 [ 0.630255] ehci_hcd 0000:00:1d.7: EHCI Host Controller [ 0.630286] ehci_hcd 0000:00:1d.7: new USB bus registered, assigned bus number 2 [ 0.630318] ehci_hcd 0000:00:1d.7: debug port 1 [ 0.634215] ehci_hcd 0000:00:1d.7: cache line size of 64 is not supported [ 0.634229] ehci_hcd 0000:00:1d.7: irq 20, io mem 0xdc705800 [ 0.650013] ehci_hcd 0000:00:1d.7: USB 2.0 started, EHCI 1.00 [ 0.650113] hub 2-0:1.0: USB hub found [ 0.650117] hub 2-0:1.0: 8 ports detected [ 0.650197] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver [ 0.650210] uhci_hcd: USB Universal Host Controller Interface driver [ 0.650261] uhci_hcd 0000:00:1a.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16 [ 0.650268] uhci_hcd 0000:00:1a.0: setting latency timer to 64 [ 0.650272] uhci_hcd 0000:00:1a.0: UHCI Host Controller [ 0.650301] uhci_hcd 0000:00:1a.0: new USB bus registered, assigned bus number 3 [ 0.650336] uhci_hcd 0000:00:1a.0: irq 16, io base 0x000090e0 [ 0.650444] hub 3-0:1.0: USB hub found [ 0.650449] hub 3-0:1.0: 2 ports detected [ 0.650507] alloc irq_desc for 21 on node -1 [ 0.650510] alloc kstat_irqs on node -1 [ 0.650514] uhci_hcd 0000:00:1a.1: PCI INT B -> GSI 21 (level, low) -> IRQ 21 [ 0.650520] uhci_hcd 0000:00:1a.1: setting latency timer to 64 [ 0.650524] uhci_hcd 0000:00:1a.1: UHCI Host Controller [ 0.650553] uhci_hcd 0000:00:1a.1: new USB bus registered, assigned bus number 4 [ 0.650586] uhci_hcd 0000:00:1a.1: irq 21, io base 0x000090c0 [ 0.650702] hub 4-0:1.0: USB hub found [ 0.650706] hub 4-0:1.0: 2 ports detected [ 0.650767] uhci_hcd 0000:00:1d.0: PCI INT A -> GSI 20 (level, low) -> IRQ 20 [ 0.650774] uhci_hcd 0000:00:1d.0: setting latency timer to 64 [ 0.650777] uhci_hcd 0000:00:1d.0: UHCI Host Controller [ 0.650814] uhci_hcd 0000:00:1d.0: new USB bus registered, assigned bus number 5 [ 0.650840] uhci_hcd 0000:00:1d.0: irq 20, io base 0x000090a0 [ 0.650956] hub 5-0:1.0: USB hub found [ 0.650960] hub 5-0:1.0: 2 ports detected [ 0.651018] uhci_hcd 0000:00:1d.1: PCI INT B -> GSI 19 (level, low) -> IRQ 19 [ 0.651025] uhci_hcd 0000:00:1d.1: setting latency timer to 64 [ 0.651028] uhci_hcd 0000:00:1d.1: UHCI Host Controller [ 0.651057] uhci_hcd 0000:00:1d.1: new USB bus registered, assigned bus number 6 [ 0.651082] uhci_hcd 0000:00:1d.1: irq 19, io base 0x00009080 [ 0.651187] hub 6-0:1.0: USB hub found [ 0.651191] hub 6-0:1.0: 2 ports detected [ 0.651251] uhci_hcd 0000:00:1d.2: PCI INT D -> GSI 16 (level, low) -> IRQ 16 [ 0.651258] uhci_hcd 0000:00:1d.2: setting latency timer to 64 [ 0.651262] uhci_hcd 0000:00:1d.2: UHCI Host Controller [ 0.651295] uhci_hcd 0000:00:1d.2: new USB bus registered, assigned bus number 7 [ 0.651321] uhci_hcd 0000:00:1d.2: irq 16, io base 0x00009060 [ 0.651426] hub 7-0:1.0: USB hub found [ 0.651430] hub 7-0:1.0: 2 ports detected [ 0.651488] uhci_hcd 0000:00:1d.3: PCI INT C -> GSI 18 (level, low) -> IRQ 18 [ 0.651494] uhci_hcd 0000:00:1d.3: setting latency timer to 64 [ 0.651498] uhci_hcd 0000:00:1d.3: UHCI Host Controller [ 0.651526] uhci_hcd 0000:00:1d.3: new USB bus registered, assigned bus number 8 [ 0.651562] uhci_hcd 0000:00:1d.3: irq 18, io base 0x00009040 [ 0.651670] hub 8-0:1.0: USB hub found [ 0.651674] hub 8-0:1.0: 2 ports detected [ 0.651789] PNP: PS/2 Controller [PNP0303:KBC,PNP0f13:MOUE] at 0x60,0x64 irq 1,12 [ 0.673828] serio: i8042 KBD port at 0x60,0x64 irq 1 [ 0.673834] serio: i8042 AUX port at 0x60,0x64 irq 12 [ 0.673894] mice: PS/2 mouse device common for all mice [ 0.674058] rtc_cmos 00:04: RTC can wake from S4 [ 0.674094] rtc_cmos 00:04: rtc core: registered rtc_cmos as rtc0 [ 0.674123] rtc0: alarms up to one month, 242 bytes nvram, hpet irqs [ 0.674216] device-mapper: uevent: version 1.0.3 [ 0.674295] device-mapper: ioctl: 4.17.0-ioctl (2010-03-05) initialised: dm-devel@redhat.com [ 0.674357] device-mapper: multipath: version 1.1.1 loaded [ 0.674360] device-mapper: multipath round-robin: version 1.0.0 loaded [ 0.674548] cpuidle: using governor ladder [ 0.675597] cpuidle: using governor menu [ 0.675898] TCP cubic registered [ 0.676021] NET: Registered protocol family 10 [ 0.676419] lo: Disabled Privacy Extensions [ 0.676645] NET: Registered protocol family 17 [ 0.677309] PM: Resume from disk failed. [ 0.677322] registered taskstats version 1 [ 0.677780] Magic number: 2:587:783 [ 0.677904] rtc_cmos 00:04: setting system clock to 2010-07-29 11:47:46 UTC (1280404066) [ 0.677907] BIOS EDD facility v0.16 2004-Jun-25, 0 devices found [ 0.677909] EDD information not available. [ 0.678005] Freeing unused kernel memory: 904k freed [ 0.678328] Write protecting the kernel read-only data: 10240k [ 0.678550] Freeing unused kernel memory: 416k freed [ 0.678830] Freeing unused kernel memory: 1604k freed [ 0.679598] ACPI: Battery Slot [BAT0] (battery present) [ 0.694543] udev: starting version 151 [ 0.697530] input: AT Translated Set 2 keyboard as /devices/platform/i8042/serio0/input/input4 [ 0.836342] r8169 Gigabit Ethernet driver 2.3LK-NAPI loaded [ 0.836372] r8169 0000:03:00.0: PCI INT A -> GSI 17 (level, low) -> IRQ 17 [ 0.836427] r8169 0000:03:00.0: setting latency timer to 64 [ 0.836478] alloc irq_desc for 46 on node -1 [ 0.836481] alloc kstat_irqs on node -1 [ 0.836498] r8169 0000:03:00.0: irq 46 for MSI/MSI-X [ 0.836982] r8169 0000:03:00.0: eth0: RTL8102e at 0xffffc9000067e000, 00:23:8b:77:bd:61, XID 14a00000 IRQ 46 [ 0.844569] ahci 0000:00:1f.2: version 3.0 [ 0.844590] ahci 0000:00:1f.2: PCI INT B -> GSI 19 (level, low) -> IRQ 19 [ 0.844646] alloc irq_desc for 47 on node -1 [ 0.844648] alloc kstat_irqs on node -1 [ 0.844660] ahci 0000:00:1f.2: irq 47 for MSI/MSI-X [ 0.844716] ahci: SSS flag set, parallel bus scan disabled [ 0.844749] ahci 0000:00:1f.2: AHCI 0001.0200 32 slots 4 ports 3 Gbps 0x33 impl SATA mode [ 0.844753] ahci 0000:00:1f.2: flags: 64bit ncq sntf stag pm led clo pmp pio slum part ccc ems sxs [ 0.844759] ahci 0000:00:1f.2: setting latency timer to 64 [ 0.847716] b43-pci-bridge 0000:02:00.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16 [ 0.847733] b43-pci-bridge 0000:02:00.0: setting latency timer to 64 [ 0.880284] ssb: Core 0 found: ChipCommon (cc 0x800, rev 0x16, vendor 0x4243) [ 0.880302] ssb: Core 1 found: IEEE 802.11 (cc 0x812, rev 0x0F, vendor 0x4243) [ 0.880318] ssb: Core 2 found: PCMCIA (cc 0x80D, rev 0x0A, vendor 0x4243) [ 0.880335] ssb: Core 3 found: PCI-E (cc 0x820, rev 0x09, vendor 0x4243) [ 0.900236] scsi0 : ahci [ 0.900346] scsi1 : ahci [ 0.900409] scsi2 : ahci [ 0.900474] scsi3 : ahci [ 0.900551] scsi4 : ahci [ 0.900619] scsi5 : ahci [ 0.900823] ata1: SATA max UDMA/133 abar m2048@0xdc705000 port 0xdc705100 irq 47 [ 0.900827] ata2: SATA max UDMA/133 abar m2048@0xdc705000 port 0xdc705180 irq 47 [ 0.900830] ata3: DUMMY [ 0.900831] ata4: DUMMY [ 0.900834] ata5: SATA max UDMA/133 abar m2048@0xdc705000 port 0xdc705300 irq 47 [ 0.900837] ata6: SATA max UDMA/133 abar m2048@0xdc705000 port 0xdc705380 irq 47 [ 0.950096] usb 1-1: new high speed USB device using ehci_hcd and address 2 [ 0.960165] ssb: Sonics Silicon Backplane found on PCI device 0000:02:00.0 [ 1.121653] Initializing USB Mass Storage driver... [ 1.121797] scsi6 : usb-storage 1-1:1.0 [ 1.121877] usbcore: registered new interface driver usb-storage [ 1.121879] USB Mass Storage support registered. [ 1.230127] usb 2-4: new high speed USB device using ehci_hcd and address 2 [ 1.431343] ata1: SATA link up 3.0 Gbps (SStatus 123 SControl 300) [ 1.431847] ata1.00: ATA-8: FUJITSU MHZ2320BH G2, 8909, max UDMA/100 [ 1.431858] ata1.00: 625142448 sectors, multi 16: LBA48 NCQ (depth 31/32), AA [ 1.432484] ata1.00: configured for UDMA/100 [ 1.450205] scsi 0:0:0:0: Direct-Access ATA FUJITSU MHZ2320B 8909 PQ: 0 ANSI: 5 [ 1.450365] sd 0:0:0:0: Attached scsi generic sg0 type 0 [ 1.450408] sd 0:0:0:0: [sda] 625142448 512-byte logical blocks: (320 GB/298 GiB) [ 1.450489] sd 0:0:0:0: [sda] Write Protect is off [ 1.450492] sd 0:0:0:0: [sda] Mode Sense: 00 3a 00 00 [ 1.450515] sd 0:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA [ 1.450652] sda: sda1 sda2 sda3 sda4 [ 1.491168] sd 0:0:0:0: [sda] Attached SCSI disk [ 2.122404] scsi 6:0:0:0: Direct-Access Generic- Multi-Card 1.00 PQ: 0 ANSI: 0 CCS [ 2.122972] sd 6:0:0:0: Attached scsi generic sg1 type 0 [ 2.126745] sd 6:0:0:0: [sdb] Attached SCSI removable disk [ 2.381344] ata2: SATA link up 1.5 Gbps (SStatus 113 SControl 300) [ 2.385149] ata2.00: ATAPI: HL-DT-ST DVDRAM GSA-T50L, SC04, max UDMA/100 [ 2.390275] ata2.00: configured for UDMA/100 [ 2.513271] scsi 1:0:0:0: CD-ROM HL-DT-ST DVDRAM GSA-T50L SC04 PQ: 0 ANSI: 5 [ 2.839468] sr0: scsi3-mmc drive: 24x/24x writer dvd-ram cd/rw xa/form2 cdda tray [ 2.839472] Uniform CD-ROM driver Revision: 3.20 [ 2.839603] sr 1:0:0:0: Attached scsi CD-ROM sr0 [ 2.839678] sr 1:0:0:0: Attached scsi generic sg2 type 5 [ 3.180099] ata5: SATA link down (SStatus 0 SControl 300) [ 3.550126] ata6: SATA link down (SStatus 0 SControl 300) [ 4.018549] EXT4-fs (sda3): INFO: recovery required on readonly filesystem [ 4.018554] EXT4-fs (sda3): write access will be enabled during recovery [ 4.198977] EXT4-fs (sda3): orphan cleanup on readonly fs [ 4.198984] EXT4-fs (sda3): ext4_orphan_cleanup: deleting unreferenced inode 555659 [ 4.199013] EXT4-fs (sda3): ext4_orphan_cleanup: deleting unreferenced inode 552476 [ 4.199023] EXT4-fs (sda3): ext4_orphan_cleanup: deleting unreferenced inode 552475 [ 4.199031] EXT4-fs (sda3): ext4_orphan_cleanup: deleting unreferenced inode 552473 [ 4.199039] EXT4-fs (sda3): ext4_orphan_cleanup: deleting unreferenced inode 552472 [ 4.199048] EXT4-fs (sda3): ext4_orphan_cleanup: deleting unreferenced inode 526918 [ 4.199058] EXT4-fs (sda3): ext4_orphan_cleanup: deleting unreferenced inode 552294 [ 4.199067] EXT4-fs (sda3): ext4_orphan_cleanup: deleting unreferenced inode 526911 [ 4.199076] EXT4-fs (sda3): ext4_orphan_cleanup: deleting unreferenced inode 526903 [ 4.199085] EXT4-fs (sda3): ext4_orphan_cleanup: deleting unreferenced inode 526913 [ 4.199095] EXT4-fs (sda3): ext4_orphan_cleanup: deleting unreferenced inode 1178239 [ 4.199109] EXT4-fs (sda3): ext4_orphan_cleanup: deleting unreferenced inode 1181030 [ 4.199119] EXT4-fs (sda3): ext4_orphan_cleanup: deleting unreferenced inode 1177743 [ 4.199128] EXT4-fs (sda3): ext4_orphan_cleanup: deleting unreferenced inode 1177736 [ 4.199137] EXT4-fs (sda3): ext4_orphan_cleanup: deleting unreferenced inode 1177665 [ 4.199145] EXT4-fs (sda3): 15 orphan inodes deleted [ 4.199148] EXT4-fs (sda3): recovery complete [ 4.606830] EXT4-fs (sda3): mounted filesystem with ordered data mode. Opts: (null) [ 7.148151] udev: starting version 151 [ 7.452978] type=1400 audit(1280384273.272:2): operation="profile_load" pid=682 name="/sbin/dhclient3" pid=682 comm="apparmor_parser" [ 7.453708] type=1400 audit(1280384273.272:3): operation="profile_load" pid=682 name="/usr/lib/NetworkManager/nm-dhcp-client.action" pid=682 comm="apparmor_parser" [ 7.454070] type=1400 audit(1280384273.272:4): operation="profile_load" pid=682 name="/usr/lib/connman/scripts/dhclient-script" pid=682 comm="apparmor_parser" [ 7.562352] agpgart-intel 0000:00:00.0: Intel GM45 Chipset [ 7.564565] agpgart-intel 0000:00:00.0: detected 65532K stolen memory [ 7.592097] agpgart-intel 0000:00:00.0: AGP aperture is 256M @ 0xc0000000 [ 7.755115] lirc_dev: IR Remote Control driver registered, major 61 [ 7.767511] BUG: unable to handle kernel NULL pointer dereference at (null) [ 7.767869] IP: [] kfifo_alloc+0x2e/0xb0 [ 7.768132] PGD 13a27b067 PUD 1375c6067 PMD 0 [ 7.768360] Oops: 0002 [#1] SMP [ 7.768524] last sysfs file: /sys/module/snd/initstate [ 7.768757] CPU 1 [ 7.768849] Modules linked in: lirc_ene0100(+) lirc_dev v4l1_compat v4l2_compat_ioctl32 lp(+) led_class serio_raw intel_agp video output parport snd soundcore snd_page_alloc usb_storage ahci ssb r8169 mii libahci [ 7.769892] [ 7.769962] Pid: 687, comm: modprobe Not tainted 2.6.35-12-generic #17-Ubuntu 3602/HP Pavilion dv5 Notebook PC [ 7.770415] RIP: 0010:[] [] kfifo_alloc+0x2e/0xb0 [ 7.770783] RSP: 0018:ffff88013825fd08 EFLAGS: 00010286 [ 7.771023] RAX: ffff88013fc0f000 RBX: 0000000000000000 RCX: ffffffff8107f129 [ 7.771345] RDX: 0000000000000000 RSI: 00000000000000d0 RDI: 0000000000000246 [ 7.771667] RBP: ffff88013825fd18 R08: 0000000000000000 R09: 0000000000000246 [ 7.771989] R10: 0000000000000030 R11: 0000000000000000 R12: 0000000000001000 [ 7.772311] R13: ffff880139be1400 R14: ffff880136d58640 R15: 00000000fffffff4 [ 7.772634] FS: 00007f450591a700(0000) GS:ffff880001e80000(0000) knlGS:0000000000000000 [ 7.772999] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 [ 7.773258] CR2: 0000000000000000 CR3: 000000013a270000 CR4: 00000000000406e0 [ 7.773580] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 [ 7.773902] DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400 [ 7.774225] Process modprobe (pid: 687, threadinfo ffff88013825e000, task ffff8801383ddb80) [ 7.774601] Stack: [ 7.774692] ffff8801379ee840 ffff8801379f14e0 ffff88013825fd58 ffffffffa009ee4f [ 7.776922] <0> ffff88013825fd38 ffffffffa009f060 ffff880139be1400 ffffffffa009f580 [ 7.776922] <0> ffffffffa009f540 00000000fffffff4 ffff88013825fd98 ffffffff81341325 [ 7.776922] Call Trace: [ 7.776922] [] ene_probe+0x17f/0x350 [lirc_ene0100] [ 7.776922] [] pnp_device_probe+0x95/0x100 [ 7.776922] [] ? driver_sysfs_add+0x62/0x90 [ 7.776922] [] really_probe+0x68/0x190 [ 7.776922] [] driver_probe_device+0x45/0x70 [ 7.776922] [] __driver_attach+0x9b/0xa0 [ 7.776922] [] ? __driver_attach+0x0/0xa0 [ 7.776922] [] bus_for_each_dev+0x68/0x90 [ 7.776922] [] driver_attach+0x1e/0x20 [ 7.776922] [] bus_add_driver+0xde/0x280 [ 7.776922] [] driver_register+0x80/0x150 [ 7.776922] [] ? ene_init+0x0/0x3e [lirc_ene0100] [ 7.776922] [] pnp_register_driver+0x21/0x30 [ 7.776922] [] ene_init+0x3c/0x3e [lirc_ene0100] [ 7.776922] [] do_one_initcall+0x3c/0x1a0 [ 7.776922] [] sys_init_module+0xbb/0x200 [ 7.776922] [] system_call_fastpath+0x16/0x1b [ 7.776922] Code: e5 41 54 53 0f 1f 44 00 00 48 89 fb 89 f7 41 89 f4 48 85 ff 48 8d 47 ff 74 33 48 85 f8 75 2e 89 d6 e8 67 33 0c 00 48 85 c0 74 52 <48> 89 03 44 89 63 08 31 c0 c7 43 10 00 00 00 00 c7 43 0c 00 00 [ 7.776922] RIP [] kfifo_alloc+0x2e/0xb0 [ 7.776922] RSP [ 7.776922] CR2: 0000000000000000 [ 7.952097] ---[ end trace 232690367d78defc ]--- [ 7.972185] input: HP WMI hotkeys as /devices/virtual/input/input5 [ 8.055562] lis3lv02d: laptop model unknown, using default axes configuration [ 8.071436] lis3lv02d: 8 bits sensor found [ 8.073913] cfg80211: Calling CRDA to update world regulatory domain [ 8.090220] lp: driver loaded but no devices found [ 8.195960] Linux video capture interface: v2.00 [ 8.230772] input: ST LIS3LV02DL Accelerometer as /devices/platform/lis3lv02d/input/input6 [ 8.242012] Registered led device: hp::hddprotect [ 8.247381] lis3lv02d driver loaded. [ 8.269537] uvcvideo: Found UVC 1.00 device HP Webcam (0408:03ba) [ 8.278749] input: HP Webcam as /devices/pci0000:00/0000:00:1d.7/usb2/2-4/2-4:1.0/input/input7 [ 8.290596] usbcore: registered new interface driver uvcvideo [ 8.296599] USB Video Class driver (v0.1.0) [ 8.496508] [drm] Initialized drm 1.1.0 20060810 [ 8.890214] b43-phy0: Broadcom 4312 WLAN found (core revision 15) [ 9.161220] Synaptics Touchpad, model: 1, fw: 6.5, id: 0x1c0b1, caps: 0xa04751/0xa00000/0x0 [ 9.251385] i915 0000:00:02.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16 [ 9.257918] i915 0000:00:02.0: setting latency timer to 64 [ 9.262903] input: SynPS/2 Synaptics TouchPad as /devices/platform/i8042/serio1/input/input8 [ 9.363672] alloc irq_desc for 48 on node -1 [ 9.364589] alloc kstat_irqs on node -1 [ 9.365479] i915 0000:00:02.0: irq 48 for MSI/MSI-X [ 9.366381] [drm] set up 63M of stolen space [ 9.969436] cfg80211: World regulatory domain updated: [ 9.970355] (start_freq - end_freq @ bandwidth), (max_antenna_gain, max_eirp) [ 9.972158] (2402000 KHz - 2472000 KHz @ 40000 KHz), (300 mBi, 2000 mBm) [ 9.972161] (2457000 KHz - 2482000 KHz @ 20000 KHz), (300 mBi, 2000 mBm) [ 9.972163] (2474000 KHz - 2494000 KHz @ 20000 KHz), (300 mBi, 2000 mBm) [ 9.972166] (5170000 KHz - 5250000 KHz @ 40000 KHz), (300 mBi, 2000 mBm) [ 9.972168] (5735000 KHz - 5835000 KHz @ 40000 KHz), (300 mBi, 2000 mBm) [ 10.030523] Skipping EDID probe due to cached edid [ 10.044137] checking generic (c0000000 130000) vs hw (c0000000 10000000) [ 10.044980] fb: conflicting fb hw usage inteldrmfb vs VESA VGA - removing generic driver [ 10.046743] Console: switching to colour dummy device 80x25 [ 10.660215] Console: switching to colour frame buffer device 160x50 [ 10.663135] fb0: inteldrmfb frame buffer device [ 10.663137] drm: registered panic notifier [ 10.663765] Slow work thread pool: Starting up [ 10.663851] Slow work thread pool: Ready [ 10.666425] phy0: Selected rate control algorithm 'minstrel' [ 10.667053] Registered led device: b43-phy0::tx [ 10.667094] Registered led device: b43-phy0::rx [ 10.667133] Registered led device: b43-phy0::radio [ 10.667231] Broadcom 43xx driver loaded [ Features: PL, Firmware-ID: FW13 ] [ 10.678515] acpi device:02: registered as cooling_device2 [ 10.679653] input: Video Bus as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/LNXVIDEO:00/input/input9 [ 10.679832] ACPI: Video Device [OVGA] (multi-head: yes rom: no post: no) [ 10.680051] [drm] Initialized i915 1.6.0 20080730 for 0000:00:02.0 on minor 0 [ 10.680131] alloc irq_desc for 22 on node -1 [ 10.680162] alloc kstat_irqs on node -1 [ 10.680190] HDA Intel 0000:00:1b.0: PCI INT A -> GSI 22 (level, low) -> IRQ 22 [ 10.680302] alloc irq_desc for 49 on node -1 [ 10.680330] alloc kstat_irqs on node -1 [ 10.680360] HDA Intel 0000:00:1b.0: irq 49 for MSI/MSI-X [ 10.680423] HDA Intel 0000:00:1b.0: setting latency timer to 64 [ 11.450456] input: HDA Intel Mic at Ext Front Jack as /devices/pci0000:00/0000:00:1b.0/sound/card0/input10 [ 11.450656] input: HDA Intel Mic at Sep UNKNOWN Jack as /devices/pci0000:00/0000:00:1b.0/sound/card0/input11 [ 11.450798] input: HDA Intel HP Out at Ext Front Jack as /devices/pci0000:00/0000:00:1b.0/sound/card0/input12 [ 12.120102] Skipping EDID probe due to cached edid [ 13.512334] EXT4-fs (sda3): re-mounted. Opts: errors=remount-ro [ 14.152221] EXT4-fs (sda2): mounted filesystem with ordered data mode. Opts: (null) [ 15.476672] type=1400 audit(1280384281.292:5): operation="profile_load" pid=1006 name="/usr/share/gdm/guest-session/Xsession" pid=1006 comm="apparmor_parser" [ 15.478743] type=1400 audit(1280384281.292:6): operation="profile_replace" pid=1007 name="/sbin/dhclient3" pid=1007 comm="apparmor_parser" [ 15.479429] type=1400 audit(1280384281.292:7): operation="profile_replace" pid=1007 name="/usr/lib/NetworkManager/nm-dhcp-client.action" pid=1007 comm="apparmor_parser" [ 15.479797] type=1400 audit(1280384281.292:8): operation="profile_replace" pid=1007 name="/usr/lib/connman/scripts/dhclient-script" pid=1007 comm="apparmor_parser" [ 15.543893] type=1400 audit(1280384281.362:9): operation="profile_load" pid=1010 name="/usr/bin/evince" pid=1010 comm="apparmor_parser" [ 15.552479] type=1400 audit(1280384281.372:10): operation="profile_load" pid=1010 name="/usr/bin/evince-previewer" pid=1010 comm="apparmor_parser" [ 15.557725] type=1400 audit(1280384281.372:11): operation="profile_load" pid=1010 name="/usr/bin/evince-thumbnailer" pid=1010 comm="apparmor_parser" [ 15.688011] type=1400 audit(1280384281.492:12): operation="profile_load" pid=1021 name="/usr/lib/cups/backend/cups-pdf" pid=1021 comm="apparmor_parser" [ 15.688832] type=1400 audit(1280384281.492:13): operation="profile_load" pid=1021 name="/usr/sbin/cupsd" pid=1021 comm="apparmor_parser" [ 15.900349] type=1400 audit(1280384281.712:14): operation="profile_load" pid=1022 name="/usr/sbin/mysqld-akonadi" pid=1022 comm="apparmor_parser" [ 17.380137] Skipping EDID probe due to cached edid [ 17.431415] Skipping EDID probe due to cached edid Bug: 611470 [ 0.000000] Initializing cgroup subsys cpuset [ 0.000000] Initializing cgroup subsys cpu [ 0.000000] Linux version 2.6.32-24-generic (buildd@yellow) (gcc version 4.4.3 (Ubuntu 4.4.3-4ubuntu5) ) #38-Ubuntu SMP Mon Jul 5 09:20:59 UTC 2010 (Ubuntu 2.6.32-24.38-generic 2.6.32.15+drm33.5) [ 0.000000] Command line: BOOT_IMAGE=/boot/vmlinuz-2.6.32-24-generic root=UUID=80f6800d-8051-47ae-929d-a405428d9194 ro quiet splash [ 0.000000] KERNEL supported cpus: [ 0.000000] Intel GenuineIntel [ 0.000000] AMD AuthenticAMD [ 0.000000] Centaur CentaurHauls [ 0.000000] BIOS-provided physical RAM map: [ 0.000000] BIOS-e820: 0000000000000000 - 000000000009e400 (usable) [ 0.000000] BIOS-e820: 00000000000f0000 - 0000000000100000 (reserved) [ 0.000000] BIOS-e820: 0000000000100000 - 00000000d7df9c00 (usable) [ 0.000000] BIOS-e820: 00000000d7df9c00 - 00000000d7e4bc00 (ACPI NVS) [ 0.000000] BIOS-e820: 00000000d7e4bc00 - 00000000d7e4dc00 (ACPI data) [ 0.000000] BIOS-e820: 00000000d7e4dc00 - 00000000d8000000 (reserved) [ 0.000000] BIOS-e820: 00000000f8000000 - 00000000fd000000 (reserved) [ 0.000000] BIOS-e820: 00000000fe000000 - 00000000fed00400 (reserved) [ 0.000000] BIOS-e820: 00000000fee00000 - 00000000fef00000 (reserved) [ 0.000000] BIOS-e820: 00000000ffb00000 - 0000000100000000 (reserved) [ 0.000000] BIOS-e820: 0000000100000000 - 0000000628000000 (usable) [ 0.000000] DMI 2.5 present. [ 0.000000] last_pfn = 0x628000 max_arch_pfn = 0x400000000 [ 0.000000] MTRR default type: write-back [ 0.000000] MTRR fixed ranges enabled: [ 0.000000] 00000-9FFFF write-back [ 0.000000] A0000-BFFFF uncachable [ 0.000000] C0000-D3FFF write-protect [ 0.000000] D4000-EFFFF uncachable [ 0.000000] F0000-FFFFF write-protect [ 0.000000] MTRR variable ranges enabled: [ 0.000000] 0 base 00E3F00000 mask FFFFF00000 uncachable [ 0.000000] 1 base 00E4000000 mask FFFC000000 uncachable [ 0.000000] 2 base 00E8000000 mask FFF8000000 uncachable [ 0.000000] 3 base 00F0000000 mask FFF0000000 uncachable [ 0.000000] 4 disabled [ 0.000000] 5 disabled [ 0.000000] 6 disabled [ 0.000000] 7 disabled [ 0.000000] 8 disabled [ 0.000000] 9 disabled [ 0.000000] x86 PAT enabled: cpu 0, old 0x7040600070406, new 0x7010600070106 [ 0.000000] last_pfn = 0xd7df9 max_arch_pfn = 0x400000000 [ 0.000000] e820 update range: 0000000000001000 - 0000000000006000 (usable) ==> (reserved) [ 0.000000] Scanning 1 areas for low memory corruption [ 0.000000] modified physical RAM map: [ 0.000000] modified: 0000000000000000 - 0000000000001000 (usable) [ 0.000000] modified: 0000000000001000 - 0000000000006000 (reserved) [ 0.000000] modified: 0000000000006000 - 000000000009e400 (usable) [ 0.000000] modified: 00000000000f0000 - 0000000000100000 (reserved) [ 0.000000] modified: 0000000000100000 - 00000000d7df9c00 (usable) [ 0.000000] modified: 00000000d7df9c00 - 00000000d7e4bc00 (ACPI NVS) [ 0.000000] modified: 00000000d7e4bc00 - 00000000d7e4dc00 (ACPI data) [ 0.000000] modified: 00000000d7e4dc00 - 00000000d8000000 (reserved) [ 0.000000] modified: 00000000f8000000 - 00000000fd000000 (reserved) [ 0.000000] modified: 00000000fe000000 - 00000000fed00400 (reserved) [ 0.000000] modified: 00000000fee00000 - 00000000fef00000 (reserved) [ 0.000000] modified: 00000000ffb00000 - 0000000100000000 (reserved) [ 0.000000] modified: 0000000100000000 - 0000000628000000 (usable) [ 0.000000] initial memory mapped : 0 - 20000000 [ 0.000000] Using GB pages for direct mapping [ 0.000000] init_memory_mapping: 0000000000000000-00000000d7df9000 [ 0.000000] NX (Execute Disable) protection: active [ 0.000000] 0000000000 - 00c0000000 page 1G [ 0.000000] 00c0000000 - 00d7c00000 page 2M [ 0.000000] 00d7c00000 - 00d7df9000 page 4k [ 0.000000] kernel direct mapping tables up to d7df9000 @ 8000-b000 [ 0.000000] init_memory_mapping: 0000000100000000-0000000628000000 [ 0.000000] NX (Execute Disable) protection: active [ 0.000000] 0100000000 - 0600000000 page 1G [ 0.000000] 0600000000 - 0628000000 page 2M [ 0.000000] kernel direct mapping tables up to 628000000 @ a000-c000 [ 0.000000] RAMDISK: 377fc000 - 37fefeb4 [ 0.000000] ACPI: RSDP 00000000000fec30 00024 (v02 DELL ) [ 0.000000] ACPI: XSDT 00000000000fcc42 0007C (v01 DELL B10K 00000015 ASL 00000061) [ 0.000000] ACPI: FACP 00000000000fcd3a 000F4 (v03 DELL B10K 00000015 ASL 00000061) [ 0.000000] ACPI: DSDT 00000000ffe9e449 05732 (v01 DELL dt_ex 00001000 INTL 20050624) [ 0.000000] ACPI: FACS 00000000d7df9c00 00040 [ 0.000000] ACPI: SSDT 00000000ffea3b7b 00089 (v01 DELL st_ex 00001000 INTL 20050624) [ 0.000000] ACPI: APIC 00000000000fce2e 0016A (v01 DELL B10K 00000015 ASL 00000061) [ 0.000000] ACPI: BOOT 00000000000fcf98 00028 (v01 DELL B10K 00000015 ASL 00000061) [ 0.000000] ACPI: ASF! 00000000000fcfc0 00096 (v32 DELL B10K 00000015 ASL 00000061) [ 0.000000] ACPI: MCFG 00000000000fd056 0003E (v01 DELL B10K 00000015 ASL 00000061) [ 0.000000] ACPI: HPET 00000000000fd094 00038 (v01 DELL B10K 00000015 ASL 00000061) [ 0.000000] ACPI: TCPA 00000000000fd2f0 00032 (v01 DELL B10K 00000015 ASL 00000061) [ 0.000000] ACPI: ____ 00000000000fd322 00030 (v01 DELL B10K 00000015 ASL 00000061) [ 0.000000] ACPI: _RAT 00000000000fded4 00030 (v01 DELL B10K 00000015 ASL 00000061) [ 0.000000] ACPI: SSDT 00000000d7e4dc00 02454 (v01 INTEL PPM RCM 80000001 INTL 20061109) [ 0.000000] ACPI: Local APIC address 0xfee00000 [ 0.000000] No NUMA configuration found [ 0.000000] Faking a node at 0000000000000000-0000000628000000 [ 0.000000] Bootmem setup node 0 0000000000000000-0000000628000000 [ 0.000000] NODE_DATA [000000000000b000 - 000000000000ffff] [ 0.000000] bootmap [0000000000100000 - 00000000001c4fff] pages c5 [ 0.000000] (8 early reservations) ==> bootmem [0000000000 - 0628000000] [ 0.000000] #0 [0000000000 - 0000001000] BIOS data page ==> [0000000000 - 0000001000] [ 0.000000] #1 [0000006000 - 0000008000] TRAMPOLINE ==> [0000006000 - 0000008000] [ 0.000000] #2 [0001000000 - 0001a2fe64] TEXT DATA BSS ==> [0001000000 - 0001a2fe64] [ 0.000000] #3 [00377fc000 - 0037fefeb4] RAMDISK ==> [00377fc000 - 0037fefeb4] [ 0.000000] #4 [000009e400 - 0000100000] BIOS reserved ==> [000009e400 - 0000100000] [ 0.000000] #5 [0001a30000 - 0001a301d8] BRK ==> [0001a30000 - 0001a301d8] [ 0.000000] #6 [0000008000 - 000000a000] PGTABLE ==> [0000008000 - 000000a000] [ 0.000000] #7 [000000a000 - 000000b000] PGTABLE ==> [000000a000 - 000000b000] [ 0.000000] [ffffea0000000000-ffffea000f7fffff] PMD -> [ffff880028600000-ffff8800375fffff] on node 0 [ 0.000000] [ffffea000f800000-ffffea00159fffff] PMD -> [ffff880038000000-ffff88003e1fffff] on node 0 [ 0.000000] Zone PFN ranges: [ 0.000000] DMA 0x00000000 -> 0x00001000 [ 0.000000] DMA32 0x00001000 -> 0x00100000 [ 0.000000] Normal 0x00100000 -> 0x00628000 [ 0.000000] Movable zone start PFN for each node [ 0.000000] early_node_map[4] active PFN ranges [ 0.000000] 0: 0x00000000 -> 0x00000001 [ 0.000000] 0: 0x00000006 -> 0x0000009e [ 0.000000] 0: 0x00000100 -> 0x000d7df9 [ 0.000000] 0: 0x00100000 -> 0x00628000 [ 0.000000] On node 0 totalpages: 6290834 [ 0.000000] DMA zone: 56 pages used for memmap [ 0.000000] DMA zone: 103 pages reserved [ 0.000000] DMA zone: 3834 pages, LIFO batch:0 [ 0.000000] DMA32 zone: 14280 pages used for memmap [ 0.000000] DMA32 zone: 865841 pages, LIFO batch:31 [ 0.000000] Normal zone: 73920 pages used for memmap [ 0.000000] Normal zone: 5332800 pages, LIFO batch:31 [ 0.000000] ACPI: PM-Timer IO Port: 0x808 [ 0.000000] ACPI: Local APIC address 0xfee00000 [ 0.000000] ACPI: LAPIC (acpi_id[0x01] lapic_id[0x20] enabled) [ 0.000000] ACPI: LAPIC (acpi_id[0x02] lapic_id[0x22] enabled) [ 0.000000] ACPI: LAPIC (acpi_id[0x03] lapic_id[0x32] enabled) [ 0.000000] ACPI: LAPIC (acpi_id[0x04] lapic_id[0x34] enabled) [ 0.000000] ACPI: LAPIC (acpi_id[0x05] lapic_id[0x00] enabled) [ 0.000000] ACPI: LAPIC (acpi_id[0x06] lapic_id[0x02] enabled) [ 0.000000] ACPI: LAPIC (acpi_id[0x07] lapic_id[0x12] enabled) [ 0.000000] ACPI: LAPIC (acpi_id[0x08] lapic_id[0x14] enabled) [ 0.000000] ACPI: LAPIC (acpi_id[0x09] lapic_id[0x00] disabled) [ 0.000000] ACPI: LAPIC (acpi_id[0x0a] lapic_id[0x00] disabled) [ 0.000000] ACPI: LAPIC (acpi_id[0x0b] lapic_id[0x00] disabled) [ 0.000000] ACPI: LAPIC (acpi_id[0x0c] lapic_id[0x00] disabled) [ 0.000000] ACPI: LAPIC (acpi_id[0x0d] lapic_id[0x00] disabled) [ 0.000000] ACPI: LAPIC (acpi_id[0x0e] lapic_id[0x00] disabled) [ 0.000000] ACPI: LAPIC (acpi_id[0x0f] lapic_id[0x00] disabled) [ 0.000000] ACPI: LAPIC (acpi_id[0x10] lapic_id[0x00] disabled) [ 0.000000] ACPI: LAPIC (acpi_id[0x11] lapic_id[0x00] disabled) [ 0.000000] ACPI: LAPIC (acpi_id[0x12] lapic_id[0x00] disabled) [ 0.000000] ACPI: LAPIC (acpi_id[0x13] lapic_id[0x00] disabled) [ 0.000000] ACPI: LAPIC (acpi_id[0x14] lapic_id[0x00] disabled) [ 0.000000] ACPI: LAPIC (acpi_id[0x15] lapic_id[0x00] disabled) [ 0.000000] ACPI: LAPIC (acpi_id[0x16] lapic_id[0x00] disabled) [ 0.000000] ACPI: LAPIC (acpi_id[0x17] lapic_id[0x00] disabled) [ 0.000000] ACPI: LAPIC (acpi_id[0x18] lapic_id[0x00] disabled) [ 0.000000] ACPI: LAPIC (acpi_id[0x19] lapic_id[0x00] disabled) [ 0.000000] ACPI: LAPIC (acpi_id[0x1a] lapic_id[0x00] disabled) [ 0.000000] ACPI: LAPIC (acpi_id[0x1b] lapic_id[0x00] disabled) [ 0.000000] ACPI: LAPIC (acpi_id[0x1c] lapic_id[0x00] disabled) [ 0.000000] ACPI: LAPIC (acpi_id[0x1d] lapic_id[0x00] disabled) [ 0.000000] ACPI: LAPIC (acpi_id[0x1e] lapic_id[0x00] disabled) [ 0.000000] ACPI: LAPIC (acpi_id[0x1f] lapic_id[0x00] disabled) [ 0.000000] ACPI: LAPIC (acpi_id[0x20] lapic_id[0x00] disabled) [ 0.000000] ACPI: LAPIC_NMI (acpi_id[0xff] high level lint[0x1]) [ 0.000000] ACPI: IOAPIC (id[0x08] address[0xfec00000] gsi_base[0]) [ 0.000000] IOAPIC[0]: apic_id 8, version 32, address 0xfec00000, GSI 0-23 [ 0.000000] ACPI: IOAPIC (id[0x09] address[0xfec80000] gsi_base[24]) [ 0.000000] IOAPIC[1]: apic_id 9, version 32, address 0xfec80000, GSI 24-47 [ 0.000000] ACPI: IOAPIC (id[0x0a] address[0xfec88000] gsi_base[48]) [ 0.000000] IOAPIC[2]: apic_id 10, version 32, address 0xfec88000, GSI 48-71 [ 0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 0 global_irq 2 dfl dfl) [ 0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 9 global_irq 9 high level) [ 0.000000] ACPI: IRQ0 used by override. [ 0.000000] ACPI: IRQ2 used by override. [ 0.000000] ACPI: IRQ9 used by override. [ 0.000000] Using ACPI (MADT) for SMP configuration information [ 0.000000] ACPI: HPET id: 0x8086a301 base: 0xfed00000 [ 0.000000] SMP: Allowing 32 CPUs, 24 hotplug CPUs [ 0.000000] nr_irqs_gsi: 72 [ 0.000000] PM: Registered nosave memory: 0000000000001000 - 0000000000006000 [ 0.000000] PM: Registered nosave memory: 000000000009e000 - 00000000000f0000 [ 0.000000] PM: Registered nosave memory: 00000000000f0000 - 0000000000100000 [ 0.000000] PM: Registered nosave memory: 00000000d7df9000 - 00000000d7dfa000 [ 0.000000] PM: Registered nosave memory: 00000000d7dfa000 - 00000000d7e4b000 [ 0.000000] PM: Registered nosave memory: 00000000d7e4b000 - 00000000d7e4c000 [ 0.000000] PM: Registered nosave memory: 00000000d7e4c000 - 00000000d7e4d000 [ 0.000000] PM: Registered nosave memory: 00000000d7e4d000 - 00000000d7e4e000 [ 0.000000] PM: Registered nosave memory: 00000000d7e4e000 - 00000000d8000000 [ 0.000000] PM: Registered nosave memory: 00000000d8000000 - 00000000f8000000 [ 0.000000] PM: Registered nosave memory: 00000000f8000000 - 00000000fd000000 [ 0.000000] PM: Registered nosave memory: 00000000fd000000 - 00000000fe000000 [ 0.000000] PM: Registered nosave memory: 00000000fe000000 - 00000000fed00000 [ 0.000000] PM: Registered nosave memory: 00000000fed00000 - 00000000fee00000 [ 0.000000] PM: Registered nosave memory: 00000000fee00000 - 00000000fef00000 [ 0.000000] PM: Registered nosave memory: 00000000fef00000 - 00000000ffb00000 [ 0.000000] PM: Registered nosave memory: 00000000ffb00000 - 0000000100000000 [ 0.000000] Allocating PCI resources starting at d8000000 (gap: d8000000:20000000) [ 0.000000] Booting paravirtualized kernel on bare hardware [ 0.000000] NR_CPUS:64 nr_cpumask_bits:64 nr_cpu_ids:32 nr_node_ids:1 [ 0.000000] PERCPU: Embedded 30 pages/cpu @ffff88003e200000 s91544 r8192 d23144 u131072 [ 0.000000] pcpu-alloc: s91544 r8192 d23144 u131072 alloc=1*2097152 [ 0.000000] pcpu-alloc: [0] 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 [ 0.000000] pcpu-alloc: [0] 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 [ 0.000000] Built 1 zonelists in Zone order, mobility grouping on. Total pages: 6202475 [ 0.000000] Policy zone: Normal [ 0.000000] Kernel command line: BOOT_IMAGE=/boot/vmlinuz-2.6.32-24-generic root=UUID=80f6800d-8051-47ae-929d-a405428d9194 ro quiet splash [ 0.000000] PID hash table entries: 4096 (order: 3, 32768 bytes) [ 0.000000] Initializing CPU#0 [ 0.000000] Checking aperture... [ 0.000000] No AGP bridge found [ 0.000000] Calgary: detecting Calgary via BIOS EBDA area [ 0.000000] Calgary: Unable to locate Rio Grande table in EBDA - bailing! [ 0.000000] PCI-DMA: Using software bounce buffering for IO (SWIOTLB) [ 0.000000] Placing 64MB software IO TLB between ffff880020000000 - ffff880024000000 [ 0.000000] software IO TLB at phys 0x20000000 - 0x24000000 [ 0.000000] Memory: 24728516k/25821184k available (5422k kernel code, 657848k absent, 434820k reserved, 2979k data, 880k init) [ 0.000000] SLUB: Genslabs=14, HWalign=64, Order=0-3, MinObjects=0, CPUs=32, Nodes=1 [ 0.000000] Hierarchical RCU implementation. [ 0.000000] NR_IRQS:4352 nr_irqs:1480 [ 0.000000] Console: colour VGA+ 80x25 [ 0.000000] console [tty0] enabled [ 0.000000] allocated 251658240 bytes of page_cgroup [ 0.000000] please try 'cgroup_disable=memory' option if you don't want memory cgroups [ 0.000000] hpet clockevent registered [ 0.000000] HPET: 4 timers in total, 0 timers will be used for per-cpu timer [ 0.000000] Fast TSC calibration using PIT [ 0.010000] Detected 2660.018 MHz processor. [ 0.000013] Calibrating delay loop (skipped), value calculated using timer frequency.. 5320.03 BogoMIPS (lpj=26600180) [ 0.000035] Security Framework initialized [ 0.000051] AppArmor: AppArmor initialized [ 0.001977] Dentry cache hash table entries: 4194304 (order: 13, 33554432 bytes) [ 0.008489] Inode-cache hash table entries: 2097152 (order: 12, 16777216 bytes) [ 0.011296] Mount-cache hash table entries: 256 [ 0.011436] Initializing cgroup subsys ns [ 0.011439] Initializing cgroup subsys cpuacct [ 0.011444] Initializing cgroup subsys memory [ 0.011450] Initializing cgroup subsys devices [ 0.011452] Initializing cgroup subsys freezer [ 0.011453] Initializing cgroup subsys net_cls [ 0.011475] CPU: Physical Processor ID: 1 [ 0.011476] CPU: Processor Core ID: 0 [ 0.011479] CPU: L1 I cache: 32K, L1 D cache: 32K [ 0.011480] CPU: L2 cache: 256K [ 0.011481] CPU: L3 cache: 12288K [ 0.011484] CPU 0/0x20 -> Node 0 [ 0.011487] mce: CPU supports 9 MCE banks [ 0.011496] CPU0: Thermal monitoring enabled (TM1) [ 0.011499] CPU 0 MCA banks CMCI:2 CMCI:3 CMCI:5 CMCI:6 CMCI:8 [ 0.011507] using mwait in idle threads. [ 0.011508] Performance Events: Westmere events, Intel PMU driver. [ 0.011512] ... version: 3 [ 0.011513] ... bit width: 48 [ 0.011514] ... generic registers: 4 [ 0.011515] ... value mask: 0000ffffffffffff [ 0.011517] ... max period: 000000007fffffff [ 0.011518] ... fixed-purpose events: 3 [ 0.011519] ... event mask: 000000070000000f [ 0.013197] ACPI: Core revision 20090903 [ 0.275317] ftrace: converting mcount calls to 0f 1f 44 00 00 [ 0.275321] ftrace: allocating 22527 entries in 89 pages [ 0.280993] Setting APIC routing to physical flat [ 0.281613] ..TIMER: vector=0x30 apic1=0 pin1=2 apic2=-1 pin2=-1 [ 0.381370] CPU0: Intel(R) Xeon(R) CPU E5640 @ 2.67GHz stepping 02 [ 0.496822] Booting processor 1 APIC 0x22 ip 0x6000 [ 0.507483] Initializing CPU#1 [ 0.656305] CPU: Physical Processor ID: 1 [ 0.656306] CPU: Processor Core ID: 1 [ 0.656308] CPU: L1 I cache: 32K, L1 D cache: 32K [ 0.656309] CPU: L2 cache: 256K [ 0.656310] CPU: L3 cache: 12288K [ 0.656312] CPU 1/0x22 -> Node 0 [ 0.656323] CPU1: Thermal monitoring enabled (TM1) [ 0.656326] CPU 1 MCA banks CMCI:2 CMCI:3 CMCI:5 SHD:6 SHD:8 [ 0.656402] CPU1: Intel(R) Xeon(R) CPU E5640 @ 2.67GHz stepping 02 [ 0.656409] checking TSC synchronization [CPU#0 -> CPU#1]: passed. [ 0.676469] Booting processor 2 APIC 0x32 ip 0x6000 [ 0.686941] Initializing CPU#2 [ 0.835853] CPU: Physical Processor ID: 1 [ 0.835854] CPU: Processor Core ID: 9 [ 0.835856] CPU: L1 I cache: 32K, L1 D cache: 32K [ 0.835857] CPU: L2 cache: 256K [ 0.835858] CPU: L3 cache: 12288K [ 0.835860] CPU 2/0x32 -> Node 0 [ 0.835871] CPU2: Thermal monitoring enabled (TM1) [ 0.835874] CPU 2 MCA banks CMCI:2 CMCI:3 CMCI:5 SHD:6 SHD:8 [ 0.835950] CPU2: Intel(R) Xeon(R) CPU E5640 @ 2.67GHz stepping 02 [ 0.835956] checking TSC synchronization [CPU#0 -> CPU#2]: passed. [ 0.856018] Booting processor 3 APIC 0x34 ip 0x6000 [ 0.866491] Initializing CPU#3 [ 1.015401] CPU: Physical Processor ID: 1 [ 1.015402] CPU: Processor Core ID: 10 [ 1.015404] CPU: L1 I cache: 32K, L1 D cache: 32K [ 1.015405] CPU: L2 cache: 256K [ 1.015406] CPU: L3 cache: 12288K [ 1.015408] CPU 3/0x34 -> Node 0 [ 1.015419] CPU3: Thermal monitoring enabled (TM1) [ 1.015422] CPU 3 MCA banks CMCI:2 CMCI:3 CMCI:5 SHD:6 SHD:8 [ 1.015498] CPU3: Intel(R) Xeon(R) CPU E5640 @ 2.67GHz stepping 02 [ 1.015505] checking TSC synchronization [CPU#0 -> CPU#3]: passed. [ 1.035563] Booting processor 4 APIC 0x0 ip 0x6000 [ 1.046031] Initializing CPU#4 [ 1.194948] CPU: Physical Processor ID: 0 [ 1.194949] CPU: Processor Core ID: 0 [ 1.194951] CPU: L1 I cache: 32K, L1 D cache: 32K [ 1.194952] CPU: L2 cache: 256K [ 1.194953] CPU: L3 cache: 12288K [ 1.194955] CPU 4/0x0 -> Node 0 [ 1.194965] CPU4: Thermal monitoring enabled (TM1) [ 1.194968] CPU 4 MCA banks CMCI:2 CMCI:3 CMCI:5 CMCI:6 CMCI:8 [ 1.195027] CPU4: Intel(R) Xeon(R) CPU E5640 @ 2.67GHz stepping 02 [ 1.195033] checking TSC synchronization [CPU#0 -> CPU#4]: passed. [ 1.215052] Booting processor 5 APIC 0x2 ip 0x6000 [ 1.225522] Initializing CPU#5 [ 1.374496] CPU: Physical Processor ID: 0 [ 1.374497] CPU: Processor Core ID: 1 [ 1.374500] CPU: L1 I cache: 32K, L1 D cache: 32K [ 1.374501] CPU: L2 cache: 256K [ 1.374502] CPU: L3 cache: 12288K [ 1.374504] CPU 5/0x2 -> Node 0 [ 1.374515] CPU5: Thermal monitoring enabled (TM1) [ 1.374518] CPU 5 MCA banks CMCI:2 CMCI:3 CMCI:5 SHD:6 SHD:8 [ 1.374566] CPU5: Intel(R) Xeon(R) CPU E5640 @ 2.67GHz stepping 02 [ 1.374572] checking TSC synchronization [CPU#0 -> CPU#5]: passed. [ 1.394591] Booting processor 6 APIC 0x12 ip 0x6000 [ 1.405061] Initializing CPU#6 [ 1.554044] CPU: Physical Processor ID: 0 [ 1.554045] CPU: Processor Core ID: 9 [ 1.554048] CPU: L1 I cache: 32K, L1 D cache: 32K [ 1.554049] CPU: L2 cache: 256K [ 1.554050] CPU: L3 cache: 12288K [ 1.554052] CPU 6/0x12 -> Node 0 [ 1.554062] CPU6: Thermal monitoring enabled (TM1) [ 1.554065] CPU 6 MCA banks CMCI:2 CMCI:3 CMCI:5 SHD:6 SHD:8 [ 1.554170] CPU6: Intel(R) Xeon(R) CPU E5640 @ 2.67GHz stepping 02 [ 1.554176] checking TSC synchronization [CPU#0 -> CPU#6]: passed. [ 1.574192] Booting processor 7 APIC 0x14 ip 0x6000 [ 1.584662] Initializing CPU#7 [ 1.733592] CPU: Physical Processor ID: 0 [ 1.733593] CPU: Processor Core ID: 10 [ 1.733596] CPU: L1 I cache: 32K, L1 D cache: 32K [ 1.733597] CPU: L2 cache: 256K [ 1.733598] CPU: L3 cache: 12288K [ 1.733600] CPU 7/0x14 -> Node 0 [ 1.733610] CPU7: Thermal monitoring enabled (TM1) [ 1.733613] CPU 7 MCA banks CMCI:2 CMCI:3 CMCI:5 SHD:6 SHD:8 [ 1.733670] CPU7: Intel(R) Xeon(R) CPU E5640 @ 2.67GHz stepping 02 [ 1.733676] checking TSC synchronization [CPU#0 -> CPU#7]: passed. [ 1.753646] Brought up 8 CPUs [ 1.753649] Total of 8 processors activated (42560.01 BogoMIPS). [ 1.758179] CPU0 attaching sched-domain: [ 1.758183] domain 0: span 0-3 level MC [ 1.758184] groups: 0 1 2 3 [ 1.758188] domain 1: span 0-7 level CPU [ 1.758189] groups: 0-3 (cpu_power = 4096) 4-7 (cpu_power = 4096) [ 1.758196] CPU1 attaching sched-domain: [ 1.758197] domain 0: span 0-3 level MC [ 1.758198] groups: 1 2 3 0 [ 1.758201] domain 1: span 0-7 level CPU [ 1.758202] groups: 0-3 (cpu_power = 4096) 4-7 (cpu_power = 4096) [ 1.758206] CPU2 attaching sched-domain: [ 1.758207] domain 0: span 0-3 level MC [ 1.758208] groups: 2 3 0 1 [ 1.758211] domain 1: span 0-7 level CPU [ 1.758212] groups: 0-3 (cpu_power = 4096) 4-7 (cpu_power = 4096) [ 1.758216] CPU3 attaching sched-domain: [ 1.758217] domain 0: span 0-3 level MC [ 1.758219] groups: 3 0 1 2 [ 1.758221] domain 1: span 0-7 level CPU [ 1.758223] groups: 0-3 (cpu_power = 4096) 4-7 (cpu_power = 4096) [ 1.758226] CPU4 attaching sched-domain: [ 1.758228] domain 0: span 4-7 level MC [ 1.758229] groups: 4 5 6 7 [ 1.758232] domain 1: span 0-7 level CPU [ 1.758233] groups: 4-7 (cpu_power = 4096) 0-3 (cpu_power = 4096) [ 1.758237] CPU5 attaching sched-domain: [ 1.758238] domain 0: span 4-7 level MC [ 1.758239] groups: 5 6 7 4 [ 1.758242] domain 1: span 0-7 level CPU [ 1.758243] groups: 4-7 (cpu_power = 4096) 0-3 (cpu_power = 4096) [ 1.758247] CPU6 attaching sched-domain: [ 1.758248] domain 0: span 4-7 level MC [ 1.758249] groups: 6 7 4 5 [ 1.758252] domain 1: span 0-7 level CPU [ 1.758253] groups: 4-7 (cpu_power = 4096) 0-3 (cpu_power = 4096) [ 1.758257] CPU7 attaching sched-domain: [ 1.758258] domain 0: span 4-7 level MC [ 1.758260] groups: 7 4 5 6 [ 1.758262] domain 1: span 0-7 level CPU [ 1.758264] groups: 4-7 (cpu_power = 4096) 0-3 (cpu_power = 4096) [ 1.758726] devtmpfs: initialized [ 1.759025] regulator: core version 0.5 [ 1.759049] Time: 19:05:59 Date: 07/29/10 [ 1.759101] NET: Registered protocol family 16 [ 1.759214] ACPI FADT declares the system doesn't support PCIe ASPM, so disable it [ 1.759216] ACPI: bus type pci registered [ 1.759234] Trying to unpack rootfs image as initramfs... [ 1.759267] PCI: MCFG configuration 0: base f8000000 segment 0 buses 0 - 63 [ 1.759269] PCI: MCFG area at f8000000 reserved in E820 [ 1.760600] PCI: Using MMCONFIG at f8000000 - fbffffff [ 1.760601] PCI: Using configuration type 1 for base access [ 1.761299] bio: create slab at 0 [ 1.761913] ACPI: EC: Look up EC in DSDT [ 1.841005] ACPI: BIOS _OSI(Linux) query ignored [ 1.857772] ACPI: Interpreter enabled [ 1.857776] ACPI: (supports S0 S3 S4 S5) [ 1.857790] ACPI: Using IOAPIC for interrupt routing [ 1.911104] Freeing initrd memory: 8143k freed [ 1.956536] ACPI: No dock devices found. [ 1.971038] ACPI: PCI Root Bridge [PCI0] (0000:00) [ 1.971114] pci 0000:00:00.0: PME# supported from D0 D3hot D3cold [ 1.971117] pci 0000:00:00.0: PME# disabled [ 1.971183] pci 0000:00:01.0: PME# supported from D0 D3hot D3cold [ 1.971186] pci 0000:00:01.0: PME# disabled [ 1.971252] pci 0000:00:03.0: PME# supported from D0 D3hot D3cold [ 1.971255] pci 0000:00:03.0: PME# disabled [ 1.971323] pci 0000:00:07.0: PME# supported from D0 D3hot D3cold [ 1.971325] pci 0000:00:07.0: PME# disabled [ 1.971530] pci 0000:00:1a.0: reg 20 io port: [0x1f20-0x1f3f] [ 1.971601] pci 0000:00:1a.1: reg 20 io port: [0x1f00-0x1f1f] [ 1.971669] pci 0000:00:1a.2: reg 20 io port: [0x1c00-0x1c1f] [ 1.971741] pci 0000:00:1a.7: reg 10 32bit mmio: [0xf7ffa000-0xf7ffa3ff] [ 1.971795] pci 0000:00:1a.7: PME# supported from D0 D3hot D3cold [ 1.971799] pci 0000:00:1a.7: PME# disabled [ 1.971838] pci 0000:00:1b.0: reg 10 64bit mmio: [0xf7ffc000-0xf7ffffff] [ 1.971879] pci 0000:00:1b.0: PME# supported from D0 D3hot D3cold [ 1.971882] pci 0000:00:1b.0: PME# disabled [ 1.971943] pci 0000:00:1c.0: PME# supported from D0 D3hot D3cold [ 1.971947] pci 0000:00:1c.0: PME# disabled [ 1.972013] pci 0000:00:1c.5: PME# supported from D0 D3hot D3cold [ 1.972016] pci 0000:00:1c.5: PME# disabled [ 1.972070] pci 0000:00:1d.0: reg 20 io port: [0x1f80-0x1f9f] [ 1.972138] pci 0000:00:1d.1: reg 20 io port: [0x1f60-0x1f7f] [ 1.972208] pci 0000:00:1d.2: reg 20 io port: [0x1f40-0x1f5f] [ 1.972279] pci 0000:00:1d.7: reg 10 32bit mmio: [0xff980000-0xff9803ff] [ 1.972333] pci 0000:00:1d.7: PME# supported from D0 D3hot D3cold [ 1.972337] pci 0000:00:1d.7: PME# disabled [ 1.972459] pci 0000:00:1f.0: quirk: region 0800-087f claimed by ICH6 ACPI/GPIO/TCO [ 1.972462] pci 0000:00:1f.0: quirk: region 0880-08bf claimed by ICH6 GPIO [ 1.972465] pci 0000:00:1f.0: ICH7 LPC Generic IO decode 1 PIO at 0c00 (mask 007f) [ 1.972468] pci 0000:00:1f.0: ICH7 LPC Generic IO decode 2 PIO at 00e0 (mask 0007) [ 1.972470] pci 0000:00:1f.0: ICH7 LPC Generic IO decode 3 PIO at 0900 (mask 003f) [ 1.972533] pci 0000:00:1f.2: reg 10 io port: [0x1e00-0x1e07] [ 1.972538] pci 0000:00:1f.2: reg 14 io port: [0x1e10-0x1e13] [ 1.972543] pci 0000:00:1f.2: reg 18 io port: [0x1e20-0x1e27] [ 1.972548] pci 0000:00:1f.2: reg 1c io port: [0x1e30-0x1e33] [ 1.972553] pci 0000:00:1f.2: reg 20 io port: [0x1ec0-0x1edf] [ 1.972558] pci 0000:00:1f.2: reg 24 32bit mmio: [0xff970000-0xff9707ff] [ 1.972589] pci 0000:00:1f.2: PME# supported from D3hot [ 1.972592] pci 0000:00:1f.2: PME# disabled [ 1.972619] pci 0000:00:1f.3: reg 10 64bit mmio: [0xf7ffb000-0xf7ffb0ff] [ 1.972632] pci 0000:00:1f.3: reg 20 io port: [0xece0-0xecff] [ 1.972722] pci 0000:01:00.0: PME# supported from D0 D3hot D3cold [ 1.972725] pci 0000:01:00.0: PME# disabled [ 1.972762] pci 0000:00:01.0: bridge 32bit mmio: [0xf0d00000-0xf0dfffff] [ 1.972872] pci 0000:03:00.0: PME# supported from D0 D3hot D3cold [ 1.972875] pci 0000:03:00.0: PME# disabled [ 1.972903] pci 0000:00:03.0: bridge io port: [0xc000-0xdfff] [ 1.972905] pci 0000:00:03.0: bridge 32bit mmio: [0xf0f00000-0xf7efffff] [ 1.972910] pci 0000:00:03.0: bridge 64bit mmio pref: [0xe8000000-0xefffffff] [ 1.972958] pci 0000:04:00.0: PME# supported from D0 D3hot D3cold [ 1.972961] pci 0000:04:00.0: PME# disabled [ 1.973014] pci 0000:04:02.0: PME# supported from D0 D3hot D3cold [ 1.973017] pci 0000:04:02.0: PME# disabled [ 1.973049] pci 0000:03:00.0: bridge io port: [0xc000-0xdfff] [ 1.973052] pci 0000:03:00.0: bridge 32bit mmio: [0xf0f00000-0xf7efffff] [ 1.973056] pci 0000:03:00.0: bridge 64bit mmio pref: [0xe8000000-0xefffffff] [ 1.973091] pci 0000:05:00.0: reg 10 32bit mmio: [0xf6000000-0xf6ffffff] [ 1.973101] pci 0000:05:00.0: reg 14 64bit mmio pref: [0xe8000000-0xebffffff] [ 1.973112] pci 0000:05:00.0: reg 1c 64bit mmio: [0xf4000000-0xf5ffffff] [ 1.973118] pci 0000:05:00.0: reg 24 io port: [0xdc80-0xdcff] [ 1.973124] pci 0000:05:00.0: reg 30 32bit mmio pref: [0xf7e00000-0xf7e1ffff] [ 1.973192] pci 0000:04:00.0: bridge io port: [0xd000-0xdfff] [ 1.973194] pci 0000:04:00.0: bridge 32bit mmio: [0xf4000000-0xf7efffff] [ 1.973199] pci 0000:04:00.0: bridge 64bit mmio pref: [0xe8000000-0xebffffff] [ 1.973234] pci 0000:06:00.0: reg 10 32bit mmio: [0xf1000000-0xf1ffffff] [ 1.973244] pci 0000:06:00.0: reg 14 64bit mmio pref: [0xec000000-0xefffffff] [ 1.973254] pci 0000:06:00.0: reg 1c 64bit mmio: [0xf2000000-0xf3ffffff] [ 1.973260] pci 0000:06:00.0: reg 24 io port: [0xcc80-0xccff] [ 1.973266] pci 0000:06:00.0: reg 30 32bit mmio pref: [0xf0f00000-0xf0f1ffff] [ 1.973332] pci 0000:04:02.0: bridge io port: [0xc000-0xcfff] [ 1.973335] pci 0000:04:02.0: bridge 32bit mmio: [0xf0f00000-0xf3ffffff] [ 1.973340] pci 0000:04:02.0: bridge 64bit mmio pref: [0xec000000-0xefffffff] [ 1.973377] pci 0000:00:07.0: bridge 32bit mmio: [0xf0e00000-0xf0efffff] [ 1.973507] pci 0000:09:00.0: reg 10 64bit mmio: [0xf0ce0000-0xf0ceffff] [ 1.973524] pci 0000:09:00.0: reg 18 64bit mmio: [0xf0cf0000-0xf0cfffff] [ 1.973602] pci 0000:09:00.0: PME# supported from D3hot D3cold [ 1.973608] pci 0000:09:00.0: PME# disabled [ 1.973666] pci 0000:00:1c.5: bridge 32bit mmio: [0xf0c00000-0xf0cfffff] [ 1.973716] pci 0000:0a:0a.0: reg 10 32bit mmio: [0xf0bfb000-0xf0bfb7ff] [ 1.973722] pci 0000:0a:0a.0: reg 14 32bit mmio: [0xf0bfc000-0xf0bfffff] [ 1.973765] pci 0000:0a:0a.0: supports D1 D2 [ 1.973766] pci 0000:0a:0a.0: PME# supported from D0 D1 D2 D3hot D3cold [ 1.973770] pci 0000:0a:0a.0: PME# disabled [ 1.973802] pci 0000:00:1e.0: transparent bridge [ 1.973807] pci 0000:00:1e.0: bridge 32bit mmio: [0xf0b00000-0xf0bfffff] [ 1.973836] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0._PRT] [ 1.974511] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PCI1._PRT] [ 1.974809] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PCI2._PRT] [ 1.975104] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PCI3._PRT] [ 1.975396] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PCI4._PRT] [ 1.975675] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PCI5._PRT] [ 1.975953] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PCI6._PRT] [ 2.973729] ACPI: PCI Root Bridge [PCI7] (0000:20) [ 2.973797] pci 0000:20:03.0: PME# supported from D0 D3hot D3cold [ 2.973799] pci 0000:20:03.0: PME# disabled [ 2.973856] pci 0000:20:07.0: PME# supported from D0 D3hot D3cold [ 2.973858] pci 0000:20:07.0: PME# disabled [ 2.973916] pci 0000:20:09.0: PME# supported from D0 D3hot D3cold [ 2.973918] pci 0000:20:09.0: PME# disabled [ 2.974072] pci 0000:20:03.0: bridge 32bit mmio: [0xe7f00000-0xe7ffffff] [ 2.974095] pci 0000:20:07.0: bridge 32bit mmio: [0xe7e00000-0xe7efffff] [ 2.974118] pci 0000:20:09.0: bridge 32bit mmio: [0xe7d00000-0xe7dfffff] [ 2.974132] ACPI: PCI Interrupt Routing Table [\_SB_.PCI7._PRT] [ 2.974744] ACPI: PCI Interrupt Routing Table [\_SB_.PCI7.PCI9._PRT] [ 2.975038] ACPI: PCI Interrupt Routing Table [\_SB_.PCI7.PCIA._PRT] [ 2.975333] ACPI: PCI Interrupt Routing Table [\_SB_.PCI7.PCIB._PRT] [ 3.079856] ACPI: PCI Interrupt Link [LNKA] (IRQs 3 4 5 6 7 9 10 *11 12 15) [ 3.080665] ACPI: PCI Interrupt Link [LNKB] (IRQs 3 4 5 6 7 9 *10 11 12 15) [ 3.081471] ACPI: PCI Interrupt Link [LNKC] (IRQs *3 4 5 6 7 9 10 11 12 15) [ 3.082264] ACPI: PCI Interrupt Link [LNKD] (IRQs 3 4 5 6 7 9 10 11 12 15) *0, disabled. [ 3.083062] ACPI: PCI Interrupt Link [LNKE] (IRQs *3 4 5 6 7 9 10 11 12 15) [ 3.083858] ACPI: PCI Interrupt Link [LNKF] (IRQs 3 4 5 6 7 9 10 11 12 15) *0, disabled. [ 3.084660] ACPI: PCI Interrupt Link [LNKG] (IRQs 3 4 5 6 7 *9 10 11 12 15) [ 3.085454] ACPI: PCI Interrupt Link [LNKH] (IRQs 3 4 *5 6 7 9 10 11 12 15) [ 3.085703] vgaarb: device added: PCI:0000:05:00.0,decodes=io+mem,owns=io+mem,locks=none [ 3.085708] vgaarb: loaded [ 3.085783] SCSI subsystem initialized [ 3.085964] libata version 3.00 loaded. [ 3.086031] usbcore: registered new interface driver usbfs [ 3.086042] usbcore: registered new interface driver hub [ 3.086068] usbcore: registered new device driver usb [ 3.086224] ACPI: WMI: Mapper loaded [ 3.086225] PCI: Using ACPI for IRQ routing [ 3.086394] NetLabel: Initializing [ 3.086396] NetLabel: domain hash size = 128 [ 3.086397] NetLabel: protocols = UNLABELED CIPSOv4 [ 3.086407] NetLabel: unlabeled traffic allowed by default [ 3.086445] hpet0: at MMIO 0xfed00000, IRQs 2, 8, 0, 0 [ 3.086448] hpet0: 4 comparators, 64-bit 14.318180 MHz counter [ 3.140191] Switching to clocksource tsc [ 3.141777] AppArmor: AppArmor Filesystem Enabled [ 3.141795] pnp: PnP ACPI init [ 3.141810] ACPI: bus type pnp registered [ 3.158887] pnp 00:01: io resource (0x800-0x85f) overlaps 0000:00:1f.0 BAR 13 (0x800-0x87f), disabling [ 3.158890] pnp 00:01: io resource (0x860-0x8ff) overlaps 0000:00:1f.0 BAR 13 (0x800-0x87f), disabling [ 3.200448] pnp: PnP ACPI: found 11 devices [ 3.200449] ACPI: ACPI bus type pnp unregistered [ 3.200457] system 00:01: ioport range 0xc00-0xc7f has been reserved [ 3.205173] pci 0000:01:00.0: PCI bridge, secondary bus 0000:02 [ 3.205174] pci 0000:01:00.0: IO window: disabled [ 3.205178] pci 0000:01:00.0: MEM window: disabled [ 3.205180] pci 0000:01:00.0: PREFETCH window: disabled [ 3.205185] pci 0000:00:01.0: PCI bridge, secondary bus 0000:01 [ 3.205186] pci 0000:00:01.0: IO window: disabled [ 3.205190] pci 0000:00:01.0: MEM window: 0xf0d00000-0xf0dfffff [ 3.205192] pci 0000:00:01.0: PREFETCH window: disabled [ 3.205196] pci 0000:04:00.0: PCI bridge, secondary bus 0000:05 [ 3.205198] pci 0000:04:00.0: IO window: 0xd000-0xdfff [ 3.205202] pci 0000:04:00.0: MEM window: 0xf4000000-0xf7efffff [ 3.205205] pci 0000:04:00.0: PREFETCH window: 0x000000e8000000-0x000000ebffffff [ 3.205209] pci 0000:04:02.0: PCI bridge, secondary bus 0000:06 [ 3.205211] pci 0000:04:02.0: IO window: 0xc000-0xcfff [ 3.205214] pci 0000:04:02.0: MEM window: 0xf0f00000-0xf3ffffff [ 3.205217] pci 0000:04:02.0: PREFETCH window: 0x000000ec000000-0x000000efffffff [ 3.205221] pci 0000:03:00.0: PCI bridge, secondary bus 0000:04 [ 3.205223] pci 0000:03:00.0: IO window: 0xc000-0xdfff [ 3.205226] pci 0000:03:00.0: MEM window: 0xf0f00000-0xf7efffff [ 3.205229] pci 0000:03:00.0: PREFETCH window: 0x000000e8000000-0x000000efffffff [ 3.205233] pci 0000:00:03.0: PCI bridge, secondary bus 0000:03 [ 3.205235] pci 0000:00:03.0: IO window: 0xc000-0xdfff [ 3.205238] pci 0000:00:03.0: MEM window: 0xf0f00000-0xf7efffff [ 3.205241] pci 0000:00:03.0: PREFETCH window: 0x000000e8000000-0x000000efffffff [ 3.205245] pci 0000:00:07.0: PCI bridge, secondary bus 0000:07 [ 3.205246] pci 0000:00:07.0: IO window: disabled [ 3.205249] pci 0000:00:07.0: MEM window: 0xf0e00000-0xf0efffff [ 3.205251] pci 0000:00:07.0: PREFETCH window: disabled [ 3.205255] pci 0000:00:1c.0: PCI bridge, secondary bus 0000:08 [ 3.205257] pci 0000:00:1c.0: IO window: disabled [ 3.205260] pci 0000:00:1c.0: MEM window: disabled [ 3.205262] pci 0000:00:1c.0: PREFETCH window: disabled [ 3.205267] pci 0000:00:1c.5: PCI bridge, secondary bus 0000:09 [ 3.205268] pci 0000:00:1c.5: IO window: disabled [ 3.205272] pci 0000:00:1c.5: MEM window: 0xf0c00000-0xf0cfffff [ 3.205274] pci 0000:00:1c.5: PREFETCH window: disabled [ 3.205279] pci 0000:00:1e.0: PCI bridge, secondary bus 0000:0a [ 3.205280] pci 0000:00:1e.0: IO window: disabled [ 3.205283] pci 0000:00:1e.0: MEM window: 0xf0b00000-0xf0bfffff [ 3.205286] pci 0000:00:1e.0: PREFETCH window: disabled [ 3.205297] alloc irq_desc for 16 on node -1 [ 3.205299] alloc kstat_irqs on node -1 [ 3.205302] pci 0000:00:01.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16 [ 3.205305] pci 0000:00:01.0: setting latency timer to 64 [ 3.205313] alloc irq_desc for 28 on node -1 [ 3.205314] alloc kstat_irqs on node -1 [ 3.205318] pci 0000:01:00.0: PCI INT A -> GSI 28 (level, low) -> IRQ 28 [ 3.205321] pci 0000:01:00.0: setting latency timer to 64 [ 3.205326] pci 0000:00:03.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16 [ 3.205329] pci 0000:00:03.0: setting latency timer to 64 [ 3.205335] pci 0000:03:00.0: setting latency timer to 64 [ 3.205341] pci 0000:04:00.0: setting latency timer to 64 [ 3.205347] pci 0000:04:02.0: setting latency timer to 64 [ 3.205353] pci 0000:00:07.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16 [ 3.205355] pci 0000:00:07.0: setting latency timer to 64 [ 3.205361] pci 0000:00:1c.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16 [ 3.205364] pci 0000:00:1c.0: setting latency timer to 64 [ 3.205370] alloc irq_desc for 17 on node -1 [ 3.205371] alloc kstat_irqs on node -1 [ 3.205374] pci 0000:00:1c.5: PCI INT B -> GSI 17 (level, low) -> IRQ 17 [ 3.205377] pci 0000:00:1c.5: setting latency timer to 64 [ 3.205382] pci 0000:00:1e.0: setting latency timer to 64 [ 3.205387] pci 0000:20:03.0: PCI bridge, secondary bus 0000:22 [ 3.205388] pci 0000:20:03.0: IO window: disabled [ 3.205391] pci 0000:20:03.0: MEM window: 0xe7f00000-0xe7ffffff [ 3.205394] pci 0000:20:03.0: PREFETCH window: disabled [ 3.205398] pci 0000:20:07.0: PCI bridge, secondary bus 0000:23 [ 3.205399] pci 0000:20:07.0: IO window: disabled [ 3.205403] pci 0000:20:07.0: MEM window: 0xe7e00000-0xe7efffff [ 3.205405] pci 0000:20:07.0: PREFETCH window: disabled [ 3.205410] pci 0000:20:09.0: PCI bridge, secondary bus 0000:24 [ 3.205411] pci 0000:20:09.0: IO window: disabled [ 3.205414] pci 0000:20:09.0: MEM window: 0xe7d00000-0xe7dfffff [ 3.205417] pci 0000:20:09.0: PREFETCH window: disabled [ 3.205427] pci 0000:20:03.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16 [ 3.205429] pci 0000:20:03.0: setting latency timer to 64 [ 3.205436] pci 0000:20:07.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16 [ 3.205439] pci 0000:20:07.0: setting latency timer to 64 [ 3.205445] pci 0000:20:09.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16 [ 3.205448] pci 0000:20:09.0: setting latency timer to 64 [ 3.205451] pci_bus 0000:00: resource 0 io: [0x00-0xffff] [ 3.205452] pci_bus 0000:00: resource 1 mem: [0x000000-0xffffffffffffffff] [ 3.205454] pci_bus 0000:01: resource 1 mem: [0xf0d00000-0xf0dfffff] [ 3.205456] pci_bus 0000:03: resource 0 io: [0xc000-0xdfff] [ 3.205458] pci_bus 0000:03: resource 1 mem: [0xf0f00000-0xf7efffff] [ 3.205459] pci_bus 0000:03: resource 2 pref mem [0xe8000000-0xefffffff] [ 3.205461] pci_bus 0000:04: resource 0 io: [0xc000-0xdfff] [ 3.205462] pci_bus 0000:04: resource 1 mem: [0xf0f00000-0xf7efffff] [ 3.205464] pci_bus 0000:04: resource 2 pref mem [0xe8000000-0xefffffff] [ 3.205465] pci_bus 0000:05: resource 0 io: [0xd000-0xdfff] [ 3.205467] pci_bus 0000:05: resource 1 mem: [0xf4000000-0xf7efffff] [ 3.205468] pci_bus 0000:05: resource 2 pref mem [0xe8000000-0xebffffff] [ 3.205470] pci_bus 0000:06: resource 0 io: [0xc000-0xcfff] [ 3.205471] pci_bus 0000:06: resource 1 mem: [0xf0f00000-0xf3ffffff] [ 3.205473] pci_bus 0000:06: resource 2 pref mem [0xec000000-0xefffffff] [ 3.205474] pci_bus 0000:07: resource 1 mem: [0xf0e00000-0xf0efffff] [ 3.205476] pci_bus 0000:09: resource 1 mem: [0xf0c00000-0xf0cfffff] [ 3.205478] pci_bus 0000:0a: resource 1 mem: [0xf0b00000-0xf0bfffff] [ 3.205479] pci_bus 0000:0a: resource 3 io: [0x00-0xffff] [ 3.205481] pci_bus 0000:0a: resource 4 mem: [0x000000-0xffffffffffffffff] [ 3.205483] pci_bus 0000:20: resource 0 io: [0x00-0xffff] [ 3.205484] pci_bus 0000:20: resource 1 mem: [0x000000-0xffffffffffffffff] [ 3.205486] pci_bus 0000:22: resource 1 mem: [0xe7f00000-0xe7ffffff] [ 3.205487] pci_bus 0000:23: resource 1 mem: [0xe7e00000-0xe7efffff] [ 3.205489] pci_bus 0000:24: resource 1 mem: [0xe7d00000-0xe7dfffff] [ 3.205514] NET: Registered protocol family 2 [ 3.205836] IP route cache hash table entries: 524288 (order: 10, 4194304 bytes) [ 3.207013] TCP established hash table entries: 524288 (order: 11, 8388608 bytes) [ 3.208409] TCP bind hash table entries: 65536 (order: 8, 1048576 bytes) [ 3.208583] TCP: Hash tables configured (established 524288 bind 65536) [ 3.208585] TCP reno registered [ 3.208768] NET: Registered protocol family 1 [ 3.208947] pci 0000:05:00.0: Boot video device [ 3.208999] Simple Boot Flag at 0x7a set to 0x1 [ 3.209384] Scanning for low memory corruption every 60 seconds [ 3.209491] audit: initializing netlink socket (disabled) [ 3.209498] type=2000 audit(1280430360.030:1): initialized [ 3.218009] HugeTLB registered 2 MB page size, pre-allocated 0 pages [ 3.219154] VFS: Disk quotas dquot_6.5.2 [ 3.219197] Dquot-cache hash table entries: 512 (order 0, 4096 bytes) [ 3.219680] fuse init (API version 7.13) [ 3.219739] msgmni has been set to 32768 [ 3.220065] alg: No test for stdrng (krng) [ 3.220106] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 253) [ 3.220108] io scheduler noop registered [ 3.220110] io scheduler anticipatory registered [ 3.220111] io scheduler deadline registered [ 3.220140] io scheduler cfq registered (default) [ 3.220264] alloc irq_desc for 72 on node -1 [ 3.220265] alloc kstat_irqs on node -1 [ 3.220273] pcieport 0000:00:01.0: irq 72 for MSI/MSI-X [ 3.220278] pcieport 0000:00:01.0: setting latency timer to 64 [ 3.220366] alloc irq_desc for 73 on node -1 [ 3.220367] alloc kstat_irqs on node -1 [ 3.220372] pcieport 0000:00:03.0: irq 73 for MSI/MSI-X [ 3.220377] pcieport 0000:00:03.0: setting latency timer to 64 [ 3.220459] alloc irq_desc for 74 on node -1 [ 3.220460] alloc kstat_irqs on node -1 [ 3.220464] pcieport 0000:00:07.0: irq 74 for MSI/MSI-X [ 3.220469] pcieport 0000:00:07.0: setting latency timer to 64 [ 3.220550] alloc irq_desc for 75 on node -1 [ 3.220551] alloc kstat_irqs on node -1 [ 3.220556] pcieport 0000:00:1c.0: irq 75 for MSI/MSI-X [ 3.220562] pcieport 0000:00:1c.0: setting latency timer to 64 [ 3.220643] alloc irq_desc for 76 on node -1 [ 3.220644] alloc kstat_irqs on node -1 [ 3.220649] pcieport 0000:00:1c.5: irq 76 for MSI/MSI-X [ 3.220655] pcieport 0000:00:1c.5: setting latency timer to 64 [ 3.220854] alloc irq_desc for 77 on node -1 [ 3.220855] alloc kstat_irqs on node -1 [ 3.220860] pcieport 0000:20:03.0: irq 77 for MSI/MSI-X [ 3.220866] pcieport 0000:20:03.0: setting latency timer to 64 [ 3.220963] alloc irq_desc for 78 on node -1 [ 3.220964] alloc kstat_irqs on node -1 [ 3.220969] pcieport 0000:20:07.0: irq 78 for MSI/MSI-X [ 3.220975] pcieport 0000:20:07.0: setting latency timer to 64 [ 3.221070] alloc irq_desc for 79 on node -1 [ 3.221071] alloc kstat_irqs on node -1 [ 3.221076] pcieport 0000:20:09.0: irq 79 for MSI/MSI-X [ 3.221082] pcieport 0000:20:09.0: setting latency timer to 64 [ 3.221145] aer 0000:00:01.0:pcie02: AER service couldn't init device: no _OSC support [ 3.221150] aer 0000:00:03.0:pcie02: AER service couldn't init device: no _OSC support [ 3.221153] aer 0000:00:07.0:pcie02: AER service couldn't init device: no _OSC support [ 3.221158] aer 0000:20:03.0:pcie02: AER service couldn't init device: no _OSC support [ 3.221161] aer 0000:20:07.0:pcie02: AER service couldn't init device: no _OSC support [ 3.221165] aer 0000:20:09.0:pcie02: AER service couldn't init device: no _OSC support [ 3.221170] pci_hotplug: PCI Hot Plug PCI Core version: 0.5 [ 3.221185] pciehp: PCI Express Hot Plug Controller Driver version: 0.4 [ 3.221252] input: Power Button as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0C:00/input/input0 [ 3.221258] ACPI: Power Button [VBTN] [ 3.221290] input: Power Button as /devices/LNXSYSTM:00/LNXPWRBN:00/input/input1 [ 3.221291] ACPI: Power Button [PWRF] [ 3.222647] Monitor-Mwait will be used to enter C-1 state [ 3.222680] Monitor-Mwait will be used to enter C-2 state [ 3.222720] Monitor-Mwait will be used to enter C-3 state [ 3.222759] processor LNXCPU:00: registered as cooling_device0 [ 3.223150] processor LNXCPU:01: registered as cooling_device1 [ 3.223550] processor LNXCPU:02: registered as cooling_device2 [ 3.223952] processor LNXCPU:03: registered as cooling_device3 [ 3.224332] processor LNXCPU:04: registered as cooling_device4 [ 3.224694] processor LNXCPU:05: registered as cooling_device5 [ 3.225075] processor LNXCPU:06: registered as cooling_device6 [ 3.225460] processor LNXCPU:07: registered as cooling_device7 [ 3.309871] Linux agpgart interface v0.103 [ 3.309892] Serial: 8250/16550 driver, 4 ports, IRQ sharing enabled [ 3.309984] serial8250: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A [ 3.310223] 00:08: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A [ 3.311044] brd: module loaded [ 3.311411] loop: module loaded [ 3.311465] input: Macintosh mouse button emulation as /devices/virtual/input/input2 [ 3.311717] Fixed MDIO Bus: probed [ 3.311737] PPP generic driver version 2.4.2 [ 3.311757] tun: Universal TUN/TAP device driver, 1.6 [ 3.311758] tun: (C) 1999-2004 Max Krasnyansky [ 3.311804] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver [ 3.311824] alloc irq_desc for 22 on node -1 [ 3.311825] alloc kstat_irqs on node -1 [ 3.311829] ehci_hcd 0000:00:1a.7: PCI INT C -> GSI 22 (level, low) -> IRQ 22 [ 3.311843] ehci_hcd 0000:00:1a.7: setting latency timer to 64 [ 3.311845] ehci_hcd 0000:00:1a.7: EHCI Host Controller [ 3.311869] ehci_hcd 0000:00:1a.7: new USB bus registered, assigned bus number 1 [ 3.311892] ehci_hcd 0000:00:1a.7: debug port 1 [ 3.315774] ehci_hcd 0000:00:1a.7: cache line size of 32 is not supported [ 3.315786] ehci_hcd 0000:00:1a.7: irq 22, io mem 0xf7ffa000 [ 3.330559] ehci_hcd 0000:00:1a.7: USB 2.0 started, EHCI 1.00 [ 3.330648] usb usb1: configuration #1 chosen from 1 choice [ 3.330667] hub 1-0:1.0: USB hub found [ 3.330672] hub 1-0:1.0: 6 ports detected [ 3.330713] alloc irq_desc for 23 on node -1 [ 3.330715] alloc kstat_irqs on node -1 [ 3.330718] ehci_hcd 0000:00:1d.7: PCI INT A -> GSI 23 (level, low) -> IRQ 23 [ 3.330727] ehci_hcd 0000:00:1d.7: setting latency timer to 64 [ 3.330730] ehci_hcd 0000:00:1d.7: EHCI Host Controller [ 3.330753] ehci_hcd 0000:00:1d.7: new USB bus registered, assigned bus number 2 [ 3.330773] ehci_hcd 0000:00:1d.7: debug port 1 [ 3.334647] ehci_hcd 0000:00:1d.7: cache line size of 32 is not supported [ 3.334656] ehci_hcd 0000:00:1d.7: irq 23, io mem 0xff980000 [ 3.350501] ehci_hcd 0000:00:1d.7: USB 2.0 started, EHCI 1.00 [ 3.350571] usb usb2: configuration #1 chosen from 1 choice [ 3.350596] hub 2-0:1.0: USB hub found [ 3.350600] hub 2-0:1.0: 6 ports detected [ 3.350641] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver [ 3.350650] uhci_hcd: USB Universal Host Controller Interface driver [ 3.350668] uhci_hcd 0000:00:1a.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16 [ 3.350672] uhci_hcd 0000:00:1a.0: setting latency timer to 64 [ 3.350675] uhci_hcd 0000:00:1a.0: UHCI Host Controller [ 3.350694] uhci_hcd 0000:00:1a.0: new USB bus registered, assigned bus number 3 [ 3.350726] uhci_hcd 0000:00:1a.0: irq 16, io base 0x00001f20 [ 3.350788] usb usb3: configuration #1 chosen from 1 choice [ 3.350804] hub 3-0:1.0: USB hub found [ 3.350808] hub 3-0:1.0: 2 ports detected [ 3.350837] uhci_hcd 0000:00:1a.1: PCI INT B -> GSI 17 (level, low) -> IRQ 17 [ 3.350842] uhci_hcd 0000:00:1a.1: setting latency timer to 64 [ 3.350844] uhci_hcd 0000:00:1a.1: UHCI Host Controller [ 3.350866] uhci_hcd 0000:00:1a.1: new USB bus registered, assigned bus number 4 [ 3.350892] uhci_hcd 0000:00:1a.1: irq 17, io base 0x00001f00 [ 3.350950] usb usb4: configuration #1 chosen from 1 choice [ 3.350968] hub 4-0:1.0: USB hub found [ 3.350972] hub 4-0:1.0: 2 ports detected [ 3.351001] uhci_hcd 0000:00:1a.2: PCI INT C -> GSI 22 (level, low) -> IRQ 22 [ 3.351005] uhci_hcd 0000:00:1a.2: setting latency timer to 64 [ 3.351007] uhci_hcd 0000:00:1a.2: UHCI Host Controller [ 3.351026] uhci_hcd 0000:00:1a.2: new USB bus registered, assigned bus number 5 [ 3.351046] uhci_hcd 0000:00:1a.2: irq 22, io base 0x00001c00 [ 3.351102] usb usb5: configuration #1 chosen from 1 choice [ 3.351117] hub 5-0:1.0: USB hub found [ 3.351121] hub 5-0:1.0: 2 ports detected [ 3.351152] uhci_hcd 0000:00:1d.0: PCI INT A -> GSI 23 (level, low) -> IRQ 23 [ 3.351156] uhci_hcd 0000:00:1d.0: setting latency timer to 64 [ 3.351159] uhci_hcd 0000:00:1d.0: UHCI Host Controller [ 3.351187] uhci_hcd 0000:00:1d.0: new USB bus registered, assigned bus number 6 [ 3.351207] uhci_hcd 0000:00:1d.0: irq 23, io base 0x00001f80 [ 3.351266] usb usb6: configuration #1 chosen from 1 choice [ 3.351282] hub 6-0:1.0: USB hub found [ 3.351286] hub 6-0:1.0: 2 ports detected [ 3.351317] uhci_hcd 0000:00:1d.1: PCI INT B -> GSI 17 (level, low) -> IRQ 17 [ 3.351321] uhci_hcd 0000:00:1d.1: setting latency timer to 64 [ 3.351324] uhci_hcd 0000:00:1d.1: UHCI Host Controller [ 3.351344] uhci_hcd 0000:00:1d.1: new USB bus registered, assigned bus number 7 [ 3.351364] uhci_hcd 0000:00:1d.1: irq 17, io base 0x00001f60 [ 3.351420] usb usb7: configuration #1 chosen from 1 choice [ 3.351435] hub 7-0:1.0: USB hub found [ 3.351439] hub 7-0:1.0: 2 ports detected [ 3.351472] alloc irq_desc for 18 on node -1 [ 3.351474] alloc kstat_irqs on node -1 [ 3.351477] uhci_hcd 0000:00:1d.2: PCI INT C -> GSI 18 (level, low) -> IRQ 18 [ 3.351481] uhci_hcd 0000:00:1d.2: setting latency timer to 64 [ 3.351483] uhci_hcd 0000:00:1d.2: UHCI Host Controller [ 3.351502] uhci_hcd 0000:00:1d.2: new USB bus registered, assigned bus number 8 [ 3.351533] uhci_hcd 0000:00:1d.2: irq 18, io base 0x00001f40 [ 3.351589] usb usb8: configuration #1 chosen from 1 choice [ 3.351604] hub 8-0:1.0: USB hub found [ 3.351609] hub 8-0:1.0: 2 ports detected [ 3.351667] PNP: PS/2 Controller [PNP0303:KBD] at 0x60,0x64 irq 1 [ 3.351669] PNP: PS/2 appears to have AUX port disabled, if this is incorrect please boot with i8042.nopnp [ 3.352344] serio: i8042 KBD port at 0x60,0x64 irq 1 [ 3.352397] mice: PS/2 mouse device common for all mice [ 3.352460] rtc_cmos 00:05: RTC can wake from S4 [ 3.352485] rtc_cmos 00:05: rtc core: registered rtc_cmos as rtc0 [ 3.352508] rtc0: alarms up to one day, 242 bytes nvram, hpet irqs [ 3.352588] device-mapper: uevent: version 1.0.3 [ 3.352673] device-mapper: ioctl: 4.15.0-ioctl (2009-04-01) initialised: dm-devel@redhat.com [ 3.352883] device-mapper: multipath: version 1.1.0 loaded [ 3.352886] device-mapper: multipath round-robin: version 1.0.0 loaded [ 3.353476] cpuidle: using governor ladder [ 3.353719] cpuidle: using governor menu [ 3.354010] TCP cubic registered [ 3.354100] NET: Registered protocol family 10 [ 3.354609] lo: Disabled Privacy Extensions [ 3.354805] NET: Registered protocol family 17 [ 3.356807] PM: Resume from disk failed. [ 3.356814] registered taskstats version 1 [ 3.357394] Magic number: 2:714:92 [ 3.357692] rtc_cmos 00:05: setting system clock to 2010-07-29 19:06:00 UTC (1280430360) [ 3.357695] BIOS EDD facility v0.16 2004-Jun-25, 0 devices found [ 3.357697] EDD information not available. [ 3.357744] Freeing unused kernel memory: 880k freed [ 3.357933] Write protecting the kernel read-only data: 7696k [ 3.372587] udev: starting version 151 [ 3.386323] tg3.c:v3.102 (September 1, 2009) [ 3.386344] tg3 0000:09:00.0: PCI INT A -> GSI 17 (level, low) -> IRQ 17 [ 3.386352] tg3 0000:09:00.0: setting latency timer to 64 [ 3.388959] input: AT Translated Set 2 keyboard as /devices/platform/i8042/serio0/input/input3 [ 3.389061] ahci 0000:00:1f.2: version 3.0 [ 3.389074] alloc irq_desc for 20 on node -1 [ 3.389076] alloc kstat_irqs on node -1 [ 3.389081] ahci 0000:00:1f.2: PCI INT C -> GSI 20 (level, low) -> IRQ 20 [ 3.389123] alloc irq_desc for 80 on node -1 [ 3.389124] alloc kstat_irqs on node -1 [ 3.389131] ahci 0000:00:1f.2: irq 80 for MSI/MSI-X [ 3.389199] ahci 0000:00:1f.2: AHCI 0001.0200 32 slots 6 ports 3 Gbps 0x27 impl SATA mode [ 3.389201] ahci 0000:00:1f.2: flags: 64bit ncq sntf led clo pio ccc ems sxs [ 3.389205] ahci 0000:00:1f.2: setting latency timer to 64 [ 3.397531] ohci1394 0000:0a:0a.0: PCI INT A -> GSI 18 (level, low) -> IRQ 18 [ 3.424709] eth0: Tigon3 [partno(BCM95761) rev 5761100] (PCI Express) MAC address b8:ac:6f:3c:10:a2 [ 3.424711] eth0: attached PHY is 5761 (10/100/1000Base-T Ethernet) (WireSpeed[1]) [ 3.424713] eth0: RXcsums[1] LinkChgREG[0] MIirq[0] ASF[0] TSOcap[1] [ 3.424714] eth0: dma_rwctrl[76180000] dma_mask[64-bit] [ 3.439919] scsi0 : ahci [ 3.440186] scsi1 : ahci [ 3.440284] scsi2 : ahci [ 3.440358] scsi3 : ahci [ 3.440405] scsi4 : ahci [ 3.440475] scsi5 : ahci [ 3.440530] ata1: SATA max UDMA/133 abar m2048@0xff970000 port 0xff970100 irq 80 [ 3.440533] ata2: SATA max UDMA/133 abar m2048@0xff970000 port 0xff970180 irq 80 [ 3.440535] ata3: SATA max UDMA/133 abar m2048@0xff970000 port 0xff970200 irq 80 [ 3.440536] ata4: DUMMY [ 3.440537] ata5: DUMMY [ 3.440539] ata6: SATA max UDMA/133 abar m2048@0xff970000 port 0xff970380 irq 80 [ 3.450858] ohci1394: fw-host0: OHCI-1394 1.1 (PCI): IRQ=[18] MMIO=[f0bfb000-f0bfb7ff] Max Packet=[2048] IR/IT contexts=[4/8] [ 3.788869] ata2: SATA link down (SStatus 4 SControl 300) [ 3.788892] ata6: SATA link down (SStatus 0 SControl 300) [ 3.788912] ata3: SATA link up 1.5 Gbps (SStatus 113 SControl 300) [ 3.788932] ata1: SATA link up 1.5 Gbps (SStatus 113 SControl 300) [ 3.791841] ata3.00: ATA-6: ST3120026AS, 8.05, max UDMA/133 [ 3.791845] ata3.00: 234375000 sectors, multi 0: LBA48 [ 3.793012] ata1.00: ATAPI: HL-DT-ST DVD+/-RW GH50N, B103, max UDMA/100, ATAPI AN [ 3.795031] ata3.00: configured for UDMA/133 [ 3.797316] ata1.00: configured for UDMA/100 [ 3.806012] scsi 0:0:0:0: CD-ROM HL-DT-ST DVD+-RW GH50N B103 PQ: 0 ANSI: 5 [ 3.827018] sr0: scsi3-mmc drive: 48x/48x writer dvd-ram cd/rw xa/form2 cdda tray [ 3.827022] Uniform CD-ROM driver Revision: 3.20 [ 3.827131] sr 0:0:0:0: Attached scsi CD-ROM sr0 [ 3.827187] sr 0:0:0:0: Attached scsi generic sg0 type 5 [ 3.827431] scsi 2:0:0:0: Direct-Access ATA ST3120026AS 8.05 PQ: 0 ANSI: 5 [ 3.827523] sd 2:0:0:0: Attached scsi generic sg1 type 0 [ 3.827613] sd 2:0:0:0: [sda] 234375000 512-byte logical blocks: (120 GB/111 GiB) [ 3.827660] sd 2:0:0:0: [sda] Write Protect is off [ 3.827663] sd 2:0:0:0: [sda] Mode Sense: 00 3a 00 00 [ 3.827686] sd 2:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA [ 3.827786] sda: sda1 sda2 < sda5 > [ 3.867986] sd 2:0:0:0: [sda] Attached SCSI disk [ 3.889194] usb 8-2: new low speed USB device using uhci_hcd and address 2 [ 4.072874] usb 8-2: configuration #1 chosen from 1 choice [ 4.092391] usbcore: registered new interface driver hiddev [ 4.105877] input: Kingsis Peripherals Evoluent VerticalMouse 3 as /devices/pci0000:00/0000:00:1d.2/usb8/8-2/8-2:1.0/input/input4 [ 4.105928] generic-usb 0003:1A7C:0068.0001: input,hidraw0: USB HID v1.10 Mouse [Kingsis Peripherals Evoluent VerticalMouse 3 ] on usb-0000:00:1d.2-2/input0 [ 4.105946] usbcore: registered new interface driver usbhid [ 4.105948] usbhid: v2.6:USB HID core driver [ 4.137922] EXT4-fs (sda1): INFO: recovery required on readonly filesystem [ 4.137924] EXT4-fs (sda1): write access will be enabled during recovery [ 4.226915] EXT4-fs (sda1): recovery complete [ 4.227563] EXT4-fs (sda1): mounted filesystem with ordered data mode [ 4.770418] ieee1394: Host added: ID:BUS[0-00:1023] GUID[806facb8a2103c00] [ 10.731418] udev: starting version 151 [ 10.739720] lp: driver loaded but no devices found [ 10.751290] shpchp: Standard Hot Plug PCI Controller Driver version: 0.4 [ 10.758991] dcdbas dcdbas: Dell Systems Management Base Driver (version 5.6.0-3.2) [ 10.759465] input: Dell WMI hotkeys as /devices/virtual/input/input5 [ 10.770836] parport_pc 00:07: reported by Plug and Play ACPI [ 10.770896] parport0: PC-style at 0x378 (0x778), irq 7, using FIFO [PCSPP,TRISTATE,COMPAT,ECP] [ 10.775455] ppdev: user-space parallel port driver [ 10.784136] Adding 4804600k swap on /dev/sda5. Priority:-1 extents:1 across:4804600k [ 10.814640] HDA Intel 0000:00:1b.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16 [ 10.814897] HDA Intel 0000:00:1b.0: setting latency timer to 64 [ 10.838403] type=1505 audit(1280430367.992:2): operation="profile_load" pid=641 name="/sbin/dhclient3" [ 10.838768] type=1505 audit(1280430367.992:3): operation="profile_load" pid=641 name="/usr/lib/NetworkManager/nm-dhcp-client.action" [ 10.838961] type=1505 audit(1280430367.992:4): operation="profile_load" pid=641 name="/usr/lib/connman/scripts/dhclient-script" [ 10.851288] lp0: using parport0 (interrupt-driven). [ 10.865631] [drm] Initialized drm 1.1.0 20060810 [ 10.883820] alloc irq_desc for 24 on node -1 [ 10.883823] alloc kstat_irqs on node -1 [ 10.883829] nouveau 0000:05:00.0: PCI INT A -> GSI 24 (level, low) -> IRQ 24 [ 10.883834] nouveau 0000:05:00.0: setting latency timer to 64 [ 10.885018] vga16fb: initializing [ 10.885020] vga16fb: mapped to 0xffff8800000a0000 [ 10.885054] fb0: VGA16 VGA frame buffer device [ 10.886131] [drm] nouveau 0000:05:00.0: Detected an NV50 generation card (0x298c00a2) [ 10.886781] [drm] nouveau 0000:05:00.0: Attempting to load BIOS image from PRAMIN [ 10.951073] BUG: unable to handle kernel NULL pointer dereference at (null) [ 10.951076] IP: [] __mutex_lock_slowpath+0xbb/0x170 [ 10.951083] PGD 609c90067 PUD 6097fd067 PMD 0 [ 10.951085] Oops: 0002 [#1] SMP [ 10.951086] last sysfs file: /sys/module/fbcon/initstate [ 10.951088] CPU 1 [ 10.951089] Modules linked in: fbcon(+) tileblit font bitblit softcursor vga16fb vgastate nouveau(+) ttm drm_kms_helper mce_xeon75xx(-) drm i2c_algo_bit snd_hda_intel(+) snd_hda_codec snd_hwdep snd_pcm_oss snd_mixer_oss snd_pcm snd_seq_dummy snd_seq_oss snd_seq_midi snd_rawmidi snd_seq_midi_event snd_seq ppdev snd_timer snd_seq_device parport_pc snd dell_wmi dcdbas soundcore snd_page_alloc shpchp lp parport usbhid hid ohci1394 ieee1394 ahci tg3 [ 10.951104] Pid: 405, comm: plymouthd Not tainted 2.6.32-24-generic #38-Ubuntu Precision WorkStation T7500 [ 10.951105] RIP: 0010:[] [] __mutex_lock_slowpath+0xbb/0x170 [ 10.951108] RSP: 0018:ffff8806082ddd98 EFLAGS: 00010246 [ 10.951109] RAX: 0000000000000000 RBX: ffff880609d23c08 RCX: 0000000000000006 [ 10.951110] RDX: ffff8806082ddda8 RSI: ffffffffa01b3d10 RDI: ffff880609d23c0c [ 10.951111] RBP: ffff8806082dddf8 R08: 0000000000000195 R09: 000000000000e200 [ 10.951113] R10: fffffffffffffff0 R11: 0000000000000246 R12: ffff8806089e44d0 [ 10.951114] R13: ffff880609d23c0c R14: ffffffffffffffff R15: ffff880609d23c10 [ 10.951116] FS: 00007f4dd6e70700(0000) GS:ffff88003e220000(0000) knlGS:0000000000000000 [ 10.951117] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 [ 10.951118] CR2: 0000000000000000 CR3: 00000006097d6000 CR4: 00000000000006e0 [ 10.951119] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 [ 10.951120] DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400 [ 10.951122] Process plymouthd (pid: 405, threadinfo ffff8806082dc000, task ffff8806089e44d0) [ 10.951123] Stack: [ 10.951124] ffff880600000001 ffff8806082ddfd8 ffff880609d23c10 0000000000000000 [ 10.951125] <0> 0000000000000000 ffffffffa01b3d10 ffff8806082dddd8 ffff880609d23c08 [ 10.951127] <0> ffff8806018bbe00 ffff880609d23c08 ffff880609d23b10 ffff8806018bbea8 [ 10.951129] Call Trace: [ 10.951140] [] ? drm_gem_object_release_handle+0x0/0x40 [drm] [ 10.951142] [] mutex_lock+0x2b/0x50 [ 10.951150] [] drm_fb_release+0x2f/0xd0 [drm] [ 10.951155] [] drm_release+0x448/0x510 [drm] [ 10.951159] [] __fput+0xf5/0x210 [ 10.951161] [] fput+0x25/0x30 [ 10.951163] [] filp_close+0x5d/0x90 [ 10.951165] [] sys_close+0xb7/0x120 [ 10.951168] [] system_call_fastpath+0x16/0x1b [ 10.951169] Code: 4c 8d 6b 04 4c 8d 7b 08 49 c7 c6 ff ff ff ff 4c 89 ef e8 29 15 00 00 48 8b 43 10 48 8d 55 b0 48 89 53 10 4c 89 7d b0 48 89 45 b8 <48> 89 10 4c 89 f0 4c 89 65 c0 87 03 83 f8 01 75 23 eb 2b 66 90 [ 10.951182] RIP [] __mutex_lock_slowpath+0xbb/0x170 [ 10.951184] RSP [ 10.951184] CR2: 0000000000000000 [ 10.951186] ---[ end trace 7fe1c65a8e5c3a7c ]--- [ 10.967483] [drm] nouveau 0000:05:00.0: ... appears to be valid [ 10.967485] [drm] nouveau 0000:05:00.0: BIT BIOS found [ 10.967486] [drm] nouveau 0000:05:00.0: Bios version 62.98.6f.00 [ 10.967488] [drm] nouveau 0000:05:00.0: TMDS table revision 2.0 not currently supported [ 10.967489] [drm] nouveau 0000:05:00.0: Found Display Configuration Block version 4.0 [ 10.967491] [drm] nouveau 0000:05:00.0: DCB connector table: VHER 0x40 5 16 4 [ 10.967493] [drm] nouveau 0000:05:00.0: 0: 0x00005046: type 0x46 idx 0 tag 0x07 [ 10.967494] [drm] nouveau 0000:05:00.0: 1: 0x00006146: type 0x46 idx 1 tag 0x08 [ 10.967496] [drm] nouveau 0000:05:00.0: Raw DCB entry 0: 02000386 0f220010 [ 10.967497] [drm] nouveau 0000:05:00.0: Raw DCB entry 1: 02000302 00020010 [ 10.967498] [drm] nouveau 0000:05:00.0: Raw DCB entry 2: 040113a6 0f220010 [ 10.967499] [drm] nouveau 0000:05:00.0: Raw DCB entry 3: 04011312 00020010 [ 10.967506] [drm] nouveau 0000:05:00.0: Parsing VBIOS init table 0 at offset 0xDAF1 [ 11.061382] [drm] nouveau 0000:05:00.0: Parsing VBIOS init table 1 at offset 0xDEF6 [ 11.101387] Console: switching to colour frame buffer device 80x30 [ 11.121115] [drm] nouveau 0000:05:00.0: Parsing VBIOS init table 2 at offset 0xE6C8 [ 11.128326] [drm] nouveau 0000:05:00.0: Parsing VBIOS init table 3 at offset 0xE796 [ 11.151129] [drm] nouveau 0000:05:00.0: Parsing VBIOS init table 4 at offset 0xEA4C [ 11.162669] [drm] nouveau 0000:05:00.0: Parsing VBIOS init table at offset 0xEAB1 [ 11.200939] [drm] nouveau 0000:05:00.0: 0xEAB1: Condition still not met after 20ms, skipping following opcodes [ 11.200947] [drm] nouveau 0000:05:00.0: 0xCBF2: parsing output script 0 [ 11.200948] [drm] nouveau 0000:05:00.0: 0xC926: parsing output script 0 [ 11.200952] [drm] nouveau 0000:05:00.0: 0xCBF2: parsing output script 0 [ 11.200953] [drm] nouveau 0000:05:00.0: 0xC926: parsing output script 0 [ 11.274982] input: HDA Digital PCBeep as /devices/pci0000:00/0000:00:1b.0/input/input6 [ 11.310048] [TTM] Zone kernel: Available graphics memory: 12368770 kiB. [ 11.310050] [TTM] Zone dma32: Available graphics memory: 2097152 kiB. [ 11.310060] [drm] nouveau 0000:05:00.0: 256 MiB VRAM [ 11.384860] [drm] nouveau 0000:05:00.0: 512 MiB GART (aperture) [ 11.401737] [drm] nouveau 0000:05:00.0: Allocating FIFO number 1 [ 11.431574] [drm] nouveau 0000:05:00.0: nouveau_channel_alloc: initialised FIFO 1 [ 11.460080] [drm] nouveau 0000:05:00.0: Detected a DP output [ 11.473291] [drm] nouveau 0000:05:00.0: Detected a TMDS output [ 11.486095] [drm] nouveau 0000:05:00.0: Detected a DP output [ 11.486097] [drm] nouveau 0000:05:00.0: Detected a TMDS output [ 11.486099] [drm] nouveau 0000:05:00.0: Detected a DisplayPort connector [ 11.486149] [drm] nouveau 0000:05:00.0: Detected a DisplayPort connector [ 11.583969] type=1505 audit(1280430368.742:5): operation="profile_load" pid=910 name="/usr/share/gdm/guest-session/Xsession" [ 11.616522] [drm] nouveau 0000:05:00.0: allocated 1920x1200 fb: 0x40250000, bo ffff880608a9ce00 [ 11.617730] type=1505 audit(1280430368.772:6): operation="profile_replace" pid=916 name="/sbin/dhclient3" [ 11.618606] type=1505 audit(1280430368.772:7): operation="profile_replace" pid=916 name="/usr/lib/NetworkManager/nm-dhcp-client.action" [ 11.618813] type=1505 audit(1280430368.772:8): operation="profile_replace" pid=916 name="/usr/lib/connman/scripts/dhclient-script" [ 11.620646] type=1505 audit(1280430368.782:9): operation="profile_load" pid=922 name="/usr/bin/evince" [ 11.625305] type=1505 audit(1280430368.782:10): operation="profile_load" pid=922 name="/usr/bin/evince-previewer" [ 11.628226] type=1505 audit(1280430368.782:11): operation="profile_load" pid=922 name="/usr/bin/evince-thumbnailer" [ 11.759930] fb1: nouveaufb frame buffer device [ 11.759931] registered panic notifier [ 11.759937] [drm] Initialized nouveau 0.0.15 20090420 for 0000:05:00.0 on minor 0 [ 11.759975] alloc irq_desc for 35 on node -1 [ 11.759976] alloc kstat_irqs on node -1 [ 11.759982] nouveau 0000:06:00.0: PCI INT A -> GSI 35 (level, low) -> IRQ 35 [ 11.759986] nouveau 0000:06:00.0: setting latency timer to 64 [ 11.761072] alloc irq_desc for 81 on node -1 [ 11.761073] alloc kstat_irqs on node -1 [ 11.761088] tg3 0000:09:00.0: irq 81 for MSI/MSI-X [ 11.789340] [drm] nouveau 0000:06:00.0: Detected an NV50 generation card (0x298c00a2) [ 11.789981] [drm] nouveau 0000:06:00.0: Attempting to load BIOS image from PRAMIN [ 11.789988] [drm] nouveau 0000:06:00.0: ... BIOS signature not found [ 11.789989] [drm] nouveau 0000:06:00.0: Attempting to load BIOS image from PROM [ 11.840851] ADDRCONF(NETDEV_UP): eth0: link is not ready [ 11.977256] [drm] nouveau 0000:06:00.0: ... appears to be valid [ 11.977259] [drm] nouveau 0000:06:00.0: BIT BIOS found [ 11.977260] [drm] nouveau 0000:06:00.0: Bios version 62.98.6f.00 [ 11.977263] [drm] nouveau 0000:06:00.0: TMDS table revision 2.0 not currently supported [ 11.977264] [drm] nouveau 0000:06:00.0: Found Display Configuration Block version 4.0 [ 11.977266] [drm] nouveau 0000:06:00.0: DCB connector table: VHER 0x40 5 16 4 [ 11.977268] [drm] nouveau 0000:06:00.0: 0: 0x00005046: type 0x46 idx 0 tag 0x07 [ 11.977270] [drm] nouveau 0000:06:00.0: 1: 0x00006146: type 0x46 idx 1 tag 0x08 [ 11.977271] [drm] nouveau 0000:06:00.0: Raw DCB entry 0: 02000386 0f220010 [ 11.977273] [drm] nouveau 0000:06:00.0: Raw DCB entry 1: 02000302 00020010 [ 11.977274] [drm] nouveau 0000:06:00.0: Raw DCB entry 2: 040113a6 0f220010 [ 11.977275] [drm] nouveau 0000:06:00.0: Raw DCB entry 3: 04011312 00020010 [ 11.977284] [drm] nouveau 0000:06:00.0: Adaptor not initialised [ 11.977285] [drm] nouveau 0000:06:00.0: Running VBIOS init tables [ 11.977291] [drm] nouveau 0000:06:00.0: Parsing VBIOS init table 0 at offset 0xDAF1 [ 12.068899] [drm] nouveau 0000:06:00.0: Parsing VBIOS init table 1 at offset 0xDEF6 [ 12.128622] [drm] nouveau 0000:06:00.0: Parsing VBIOS init table 2 at offset 0xE6C8 [ 12.128658] [drm] nouveau 0000:06:00.0: Parsing VBIOS init table 3 at offset 0xE796 [ 12.148673] [drm] nouveau 0000:06:00.0: Parsing VBIOS init table 4 at offset 0xEA4C [ 12.148677] [drm] nouveau 0000:06:00.0: Parsing VBIOS init table at offset 0xEAB1 [ 12.178498] [drm] nouveau 0000:06:00.0: 0xCBF2: parsing output script 0 [ 12.178501] [drm] nouveau 0000:06:00.0: 0xC926: parsing output script 0 [ 12.178525] [drm] nouveau 0000:06:00.0: 0xCBF2: parsing output script 0 [ 12.178527] [drm] nouveau 0000:06:00.0: 0xC926: parsing output script 0 [ 12.286040] [drm] nouveau 0000:06:00.0: 256 MiB VRAM [ 12.477142] [drm] nouveau 0000:06:00.0: 512 MiB GART (aperture) [ 12.705271] [drm] nouveau 0000:06:00.0: Allocating FIFO number 1 [ 12.756181] [drm] nouveau 0000:06:00.0: nouveau_channel_alloc: initialised FIFO 1 [ 12.792472] [drm] nouveau 0000:06:00.0: Detected a DP output [ 12.792474] [drm] nouveau 0000:06:00.0: Detected a TMDS output [ 12.792476] [drm] nouveau 0000:06:00.0: Detected a DP output [ 12.792478] [drm] nouveau 0000:06:00.0: Detected a TMDS output [ 12.792485] [drm] nouveau 0000:06:00.0: Detected a DisplayPort connector [ 12.792539] [drm] nouveau 0000:06:00.0: Detected a DisplayPort connector [ 12.804668] No connectors reported connected with modes [ 12.804673] [drm] Initialized nouveau 0.0.15 20090420 for 0000:06:00.0 on minor 1 [ 13.131417] CPU0 attaching NULL sched-domain. [ 13.131422] CPU1 attaching NULL sched-domain. [ 13.131424] CPU2 attaching NULL sched-domain. [ 13.131425] CPU3 attaching NULL sched-domain. [ 13.131427] CPU4 attaching NULL sched-domain. [ 13.131428] CPU5 attaching NULL sched-domain. [ 13.131430] CPU6 attaching NULL sched-domain. [ 13.131431] CPU7 attaching NULL sched-domain. [ 13.275480] CPU0 attaching sched-domain: [ 13.275483] domain 0: span 0-3 level MC [ 13.275484] groups: 0 1 2 3 [ 13.275487] domain 1: span 0-7 level CPU [ 13.275489] groups: 0-3 (cpu_power = 4096) 4-7 (cpu_power = 4096) [ 13.275494] CPU1 attaching sched-domain: [ 13.275495] domain 0: span 0-3 level MC [ 13.275496] groups: 1 2 3 0 [ 13.275499] domain 1: span 0-7 level CPU [ 13.275500] groups: 0-3 (cpu_power = 4096) 4-7 (cpu_power = 4096) [ 13.275504] CPU2 attaching sched-domain: [ 13.275505] domain 0: span 0-3 level MC [ 13.275506] groups: 2 3 0 1 [ 13.275509] domain 1: span 0-7 level CPU [ 13.275510] groups: 0-3 (cpu_power = 4096) 4-7 (cpu_power = 4096) [ 13.275514] CPU3 attaching sched-domain: [ 13.275515] domain 0: span 0-3 level MC [ 13.275516] groups: 3 0 1 2 [ 13.275519] domain 1: span 0-7 level CPU [ 13.275521] groups: 0-3 (cpu_power = 4096) 4-7 (cpu_power = 4096) [ 13.275524] CPU4 attaching sched-domain: [ 13.275525] domain 0: span 4-7 level MC [ 13.275527] groups: 4 5 6 7 [ 13.275529] domain 1: span 0-7 level CPU [ 13.275531] groups: 4-7 (cpu_power = 4096) 0-3 (cpu_power = 4096) [ 13.275535] CPU5 attaching sched-domain: [ 13.275536] domain 0: span 4-7 level MC [ 13.275537] groups: 5 6 7 4 [ 13.275540] domain 1: span 0-7 level CPU [ 13.275541] groups: 4-7 (cpu_power = 4096) 0-3 (cpu_power = 4096) [ 13.275545] CPU6 attaching sched-domain: [ 13.275546] domain 0: span 4-7 level MC [ 13.275548] groups: 6 7 4 5 [ 13.275551] domain 1: span 0-7 level CPU [ 13.275552] groups: 4-7 (cpu_power = 4096) 0-3 (cpu_power = 4096) [ 13.275556] CPU7 attaching sched-domain: [ 13.275557] domain 0: span 4-7 level MC [ 13.275558] groups: 7 4 5 6 [ 13.275561] domain 1: span 0-7 level CPU [ 13.275562] groups: 4-7 (cpu_power = 4096) 0-3 (cpu_power = 4096) [ 13.276115] CPU0 attaching NULL sched-domain. [ 13.276117] CPU1 attaching NULL sched-domain. [ 13.276119] CPU2 attaching NULL sched-domain. [ 13.276120] CPU3 attaching NULL sched-domain. [ 13.276121] CPU4 attaching NULL sched-domain. [ 13.276123] CPU5 attaching NULL sched-domain. [ 13.276124] CPU6 attaching NULL sched-domain. [ 13.276126] CPU7 attaching NULL sched-domain. [ 13.421174] tg3: eth0: Link is up at 100 Mbps, full duplex. [ 13.421175] tg3: eth0: Flow control is on for TX and on for RX. [ 13.422210] ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready [ 13.454991] CPU0 attaching sched-domain: [ 13.471733] domain 0: span 0-3 level MC [ 13.471735] groups: 0 1 2 3 [ 13.471737] domain 1: span 0-7 level CPU [ 13.471738] groups: 0-3 (cpu_power = 4096) 4-7 (cpu_power = 4096) [ 13.471742] CPU1 attaching sched-domain: [ 13.471743] domain 0: span 0-3 level MC [ 13.471744] groups: 1 2 3 0 [ 13.471746] domain 1: span 0-7 level CPU [ 13.471747] groups: 0-3 (cpu_power = 4096) 4-7 (cpu_power = 4096) [ 13.471750] CPU2 attaching sched-domain: [ 13.471751] domain 0: span 0-3 level MC [ 13.471752] groups: 2 3 0 1 [ 13.471754] domain 1: span 0-7 level CPU [ 13.471755] groups: 0-3 (cpu_power = 4096) 4-7 (cpu_power = 4096) [ 13.471758] CPU3 attaching sched-domain: [ 13.471759] domain 0: span 0-3 level MC [ 13.471760] groups: 3 0 1 2 [ 13.471762] domain 1: span 0-7 level CPU [ 13.471763] groups: 0-3 (cpu_power = 4096) 4-7 (cpu_power = 4096) [ 13.471766] CPU4 attaching sched-domain: [ 13.471767] domain 0: span 4-7 level MC [ 13.471768] groups: 4 5 6 7 [ 13.471770] domain 1: span 0-7 level CPU [ 13.471771] groups: 4-7 (cpu_power = 4096) 0-3 (cpu_power = 4096) [ 13.471780] CPU5 attaching sched-domain: [ 13.471783] domain 0: span 4-7 level MC [ 13.471787] groups: 5 6 7 4 [ 13.471794] domain 1: span 0-7 level CPU [ 13.471798] groups: 4-7 (cpu_power = 4096) 0-3 (cpu_power = 4096) [ 13.471807] CPU6 attaching sched-domain: [ 13.471810] domain 0: span 4-7 level MC [ 13.471814] groups: 6 7 4 5 [ 13.471821] domain 1: span 0-7 level CPU [ 13.471824] groups: 4-7 (cpu_power = 4096) 0-3 (cpu_power = 4096) [ 13.471834] CPU7 attaching sched-domain: [ 13.471837] domain 0: span 4-7 level MC [ 13.471840] groups: 7 4 5 6 [ 13.471847] domain 1: span 0-7 level CPU [ 13.471852] groups: 4-7 (cpu_power = 4096) 0-3 (cpu_power = 4096) [ 23.506771] eth0: no IPv6 routers present Bug: 617639 [ 0.000000] Initializing cgroup subsys cpuset [ 0.000000] Initializing cgroup subsys cpu [ 0.000000] Linux version 2.6.35-15-generic (buildd@vernadsky) (gcc version 4.4.5 20100728 (prerelease) (Ubuntu/Linaro 4.4.4-8ubuntu1) ) #21-Ubuntu SMP Wed Aug 11 16:41:40 UTC 2010 (Ubuntu 2.6.35-15.21-generic 2.6.35.1) [ 0.000000] BIOS-provided physical RAM map: [ 0.000000] BIOS-e820: 0000000000000000 - 000000000009fc00 (usable) [ 0.000000] BIOS-e820: 000000000009fc00 - 00000000000a0000 (reserved) [ 0.000000] BIOS-e820: 00000000000e0000 - 0000000000100000 (reserved) [ 0.000000] BIOS-e820: 0000000000100000 - 000000006fb8f000 (usable) [ 0.000000] BIOS-e820: 000000006fb8f000 - 000000006fc3c000 (ACPI NVS) [ 0.000000] BIOS-e820: 000000006fc3c000 - 000000006fd70000 (usable) [ 0.000000] BIOS-e820: 000000006fd70000 - 000000006fdbf000 (reserved) [ 0.000000] BIOS-e820: 000000006fdbf000 - 000000006fe58000 (usable) [ 0.000000] BIOS-e820: 000000006fe58000 - 000000006febf000 (ACPI NVS) [ 0.000000] BIOS-e820: 000000006febf000 - 000000006feed000 (usable) [ 0.000000] BIOS-e820: 000000006feed000 - 000000006feff000 (ACPI data) [ 0.000000] BIOS-e820: 000000006feff000 - 000000006ff00000 (usable) [ 0.000000] BIOS-e820: 00000000e0000000 - 00000000e4000000 (reserved) [ 0.000000] BIOS-e820: 00000000fec00000 - 00000000fec01000 (reserved) [ 0.000000] BIOS-e820: 00000000fee00000 - 00000000fee01000 (reserved) [ 0.000000] BIOS-e820: 00000000fff00000 - 0000000100000000 (reserved) [ 0.000000] Notice: NX (Execute Disable) protection cannot be enabled: non-PAE kernel! [ 0.000000] DMI 2.4 present. [ 0.000000] e820 update range: 0000000000000000 - 0000000000001000 (usable) ==> (reserved) [ 0.000000] e820 remove range: 00000000000a0000 - 0000000000100000 (usable) [ 0.000000] last_pfn = 0x6ff00 max_arch_pfn = 0x100000 [ 0.000000] MTRR default type: uncachable [ 0.000000] MTRR fixed ranges enabled: [ 0.000000] 00000-9FFFF write-back [ 0.000000] A0000-BFFFF uncachable [ 0.000000] C0000-FFFFF write-through [ 0.000000] MTRR variable ranges enabled: [ 0.000000] 0 base 00FFF00000 mask FFFFF00000 write-protect [ 0.000000] 1 base 0000000000 mask FFC0000000 write-back [ 0.000000] 2 base 0040000000 mask FFE0000000 write-back [ 0.000000] 3 base 0060000000 mask FFF0000000 write-back [ 0.000000] 4 disabled [ 0.000000] 5 disabled [ 0.000000] 6 disabled [ 0.000000] 7 disabled [ 0.000000] x86 PAT enabled: cpu 0, old 0x7040600070406, new 0x7010600070106 [ 0.000000] e820 update range: 0000000000002000 - 0000000000010000 (usable) ==> (reserved) [ 0.000000] Scanning 1 areas for low memory corruption [ 0.000000] modified physical RAM map: [ 0.000000] modified: 0000000000000000 - 0000000000001000 (reserved) [ 0.000000] modified: 0000000000001000 - 0000000000002000 (usable) [ 0.000000] modified: 0000000000002000 - 0000000000010000 (reserved) [ 0.000000] modified: 0000000000010000 - 000000000009fc00 (usable) [ 0.000000] modified: 000000000009fc00 - 00000000000a0000 (reserved) [ 0.000000] modified: 00000000000e0000 - 0000000000100000 (reserved) [ 0.000000] modified: 0000000000100000 - 000000006fb8f000 (usable) [ 0.000000] modified: 000000006fb8f000 - 000000006fc3c000 (ACPI NVS) [ 0.000000] modified: 000000006fc3c000 - 000000006fd70000 (usable) [ 0.000000] modified: 000000006fd70000 - 000000006fdbf000 (reserved) [ 0.000000] modified: 000000006fdbf000 - 000000006fe58000 (usable) [ 0.000000] modified: 000000006fe58000 - 000000006febf000 (ACPI NVS) [ 0.000000] modified: 000000006febf000 - 000000006feed000 (usable) [ 0.000000] modified: 000000006feed000 - 000000006feff000 (ACPI data) [ 0.000000] modified: 000000006feff000 - 000000006ff00000 (usable) [ 0.000000] modified: 00000000e0000000 - 00000000e4000000 (reserved) [ 0.000000] modified: 00000000fec00000 - 00000000fec01000 (reserved) [ 0.000000] modified: 00000000fee00000 - 00000000fee01000 (reserved) [ 0.000000] modified: 00000000fff00000 - 0000000100000000 (reserved) [ 0.000000] initial memory mapped : 0 - 00c00000 [ 0.000000] init_memory_mapping: 0000000000000000-00000000377fe000 [ 0.000000] 0000000000 - 0000400000 page 4k [ 0.000000] 0000400000 - 0037400000 page 2M [ 0.000000] 0037400000 - 00377fe000 page 4k [ 0.000000] kernel direct mapping tables up to 377fe000 @ 15000-1a000 [ 0.000000] RAMDISK: 375ae000 - 37ff0000 [ 0.000000] Allocated new RAMDISK: 009b4000 - 013f56a1 [ 0.000000] Move RAMDISK from 00000000375ae000 - 0000000037fef6a0 to 009b4000 - 013f56a0 [ 0.000000] ACPI: RSDP 000fe020 00024 (v02 HP ) [ 0.000000] ACPI: XSDT 6fefe120 0005C (v01 HPQOEM SLIC-MPC 00000003 01000013) [ 0.000000] ACPI: FACP 6fefd000 000F4 (v04 HP 30F1 00000003 MSFT 0100000D) [ 0.000000] ACPI: DSDT 6fef0000 092A1 (v01 HP 30F1 F0000000 INTL 20051117) [ 0.000000] ACPI: FACS 6fe61000 00040 [ 0.000000] ACPI: HPET 6fefc000 00038 (v01 HP 30F1 00000001 MSFT 000F4240) [ 0.000000] ACPI: APIC 6fefb000 00084 (v02 HP 30F1 00000001 TFSM 000F4240) [ 0.000000] ACPI: MCFG 6fefa000 0003C (v01 HP 30F1 00000001 TFSM 000F4240) [ 0.000000] ACPI: BOOT 6feef000 00028 (v01 HP 30F1 00000001 ? 00000001) [ 0.000000] ACPI: SLIC 6feee000 00176 (v01 HPQOEM SLIC-MPC 06040000 LTP 00000001) [ 0.000000] ACPI: SSDT 6feed000 00386 (v01 AMD PowerNow 00000001 AMD 00000001) [ 0.000000] ACPI: Local APIC address 0xfee00000 [ 0.000000] 903MB HIGHMEM available. [ 0.000000] 887MB LOWMEM available. [ 0.000000] mapped low ram: 0 - 377fe000 [ 0.000000] low ram: 0 - 377fe000 [ 0.000000] Zone PFN ranges: [ 0.000000] DMA 0x00000001 -> 0x00001000 [ 0.000000] Normal 0x00001000 -> 0x000377fe [ 0.000000] HighMem 0x000377fe -> 0x0006ff00 [ 0.000000] Movable zone start PFN for each node [ 0.000000] early_node_map[7] active PFN ranges [ 0.000000] 0: 0x00000001 -> 0x00000002 [ 0.000000] 0: 0x00000010 -> 0x0000009f [ 0.000000] 0: 0x00000100 -> 0x0006fb8f [ 0.000000] 0: 0x0006fc3c -> 0x0006fd70 [ 0.000000] 0: 0x0006fdbf -> 0x0006fe58 [ 0.000000] 0: 0x0006febf -> 0x0006feed [ 0.000000] 0: 0x0006feff -> 0x0006ff00 [ 0.000000] On node 0 totalpages: 458011 [ 0.000000] free_area_init_node: node 0, pgdat c080f680, node_mem_map c13f7020 [ 0.000000] DMA zone: 32 pages used for memmap [ 0.000000] DMA zone: 0 pages reserved [ 0.000000] DMA zone: 3952 pages, LIFO batch:0 [ 0.000000] Normal zone: 1744 pages used for memmap [ 0.000000] Normal zone: 221486 pages, LIFO batch:31 [ 0.000000] HighMem zone: 1807 pages used for memmap [ 0.000000] HighMem zone: 228990 pages, LIFO batch:31 [ 0.000000] Using APIC driver default [ 0.000000] ACPI: PM-Timer IO Port: 0x408 [ 0.000000] ACPI: Local APIC address 0xfee00000 [ 0.000000] ACPI: LAPIC (acpi_id[0x00] lapic_id[0x00] enabled) [ 0.000000] ACPI: LAPIC (acpi_id[0x01] lapic_id[0x01] enabled) [ 0.000000] ACPI: LAPIC (acpi_id[0x02] lapic_id[0x00] disabled) [ 0.000000] ACPI: LAPIC (acpi_id[0x03] lapic_id[0x00] disabled) [ 0.000000] ACPI: LAPIC_NMI (acpi_id[0x00] high edge lint[0x1]) [ 0.000000] ACPI: LAPIC_NMI (acpi_id[0x01] high edge lint[0x1]) [ 0.000000] ACPI: LAPIC_NMI (acpi_id[0x02] high edge lint[0x1]) [ 0.000000] ACPI: LAPIC_NMI (acpi_id[0x03] high edge lint[0x1]) [ 0.000000] ACPI: IOAPIC (id[0x04] address[0xfec00000] gsi_base[0]) [ 0.000000] IOAPIC[0]: apic_id 4, version 33, address 0xfec00000, GSI 0-23 [ 0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 0 global_irq 2 dfl dfl) [ 0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 9 global_irq 9 low level) [ 0.000000] ACPI: IRQ0 used by override. [ 0.000000] ACPI: IRQ2 used by override. [ 0.000000] ACPI: IRQ9 used by override. [ 0.000000] Using ACPI (MADT) for SMP configuration information [ 0.000000] ACPI: HPET id: 0x1002a201 base: 0xfed00000 [ 0.000000] SMP: Allowing 4 CPUs, 2 hotplug CPUs [ 0.000000] nr_irqs_gsi: 40 [ 0.000000] early_res array is doubled to 64 at [16000 - 167ff] [ 0.000000] PM: Registered nosave memory: 0000000000002000 - 0000000000010000 [ 0.000000] PM: Registered nosave memory: 000000000009f000 - 00000000000a0000 [ 0.000000] PM: Registered nosave memory: 00000000000a0000 - 00000000000e0000 [ 0.000000] PM: Registered nosave memory: 00000000000e0000 - 0000000000100000 [ 0.000000] Allocating PCI resources starting at 6ff00000 (gap: 6ff00000:70100000) [ 0.000000] Booting paravirtualized kernel on bare hardware [ 0.000000] setup_percpu: NR_CPUS:8 nr_cpumask_bits:8 nr_cpu_ids:4 nr_node_ids:1 [ 0.000000] PERCPU: Embedded 14 pages/cpu @c2400000 s36352 r0 d20992 u1048576 [ 0.000000] pcpu-alloc: s36352 r0 d20992 u1048576 alloc=1*4194304 [ 0.000000] pcpu-alloc: [0] 0 1 2 3 [ 0.000000] Built 1 zonelists in Zone order, mobility grouping on. Total pages: 454428 [ 0.000000] Kernel command line: BOOT_IMAGE=/boot/vmlinuz-2.6.35-15-generic root=UUID=f2bd5e8c-6ddb-4763-978e-dba3a5df88cd ro quiet splash nomodeset [ 0.000000] PID hash table entries: 4096 (order: 2, 16384 bytes) [ 0.000000] Dentry cache hash table entries: 131072 (order: 7, 524288 bytes) [ 0.000000] Inode-cache hash table entries: 65536 (order: 6, 262144 bytes) [ 0.000000] Enabling fast FPU save and restore... done. [ 0.000000] Enabling unmasked SIMD FPU exception support... done. [ 0.000000] Initializing CPU#0 [ 0.000000] allocated 9169900 bytes of page_cgroup [ 0.000000] please try 'cgroup_disable=memory' option if you don't want memory cgroups [ 0.000000] Subtract (54 early reservations) [ 0.000000] #1 [0000001000 - 0000002000] EX TRAMPOLINE [ 0.000000] #2 [0000100000 - 00009afb1c] TEXT DATA BSS [ 0.000000] #3 [000009fc00 - 0000100000] BIOS reserved [ 0.000000] #4 [00009b0000 - 00009b318c] BRK [ 0.000000] #5 [0000010000 - 0000011000] TRAMPOLINE [ 0.000000] #6 [0000011000 - 0000015000] ACPI WAKEUP [ 0.000000] #7 [0000015000 - 0000016000] PGTABLE [ 0.000000] #8 [00009b4000 - 00013f6000] NEW RAMDISK [ 0.000000] #9 [00013f6000 - 00013f7000] BOOTMEM [ 0.000000] #10 [00013f7000 - 00021f7000] BOOTMEM [ 0.000000] #11 [00021f7000 - 00021f7004] BOOTMEM [ 0.000000] #12 [00021f7040 - 00021f7100] BOOTMEM [ 0.000000] #13 [00021f7100 - 00021f7154] BOOTMEM [ 0.000000] #14 [00021f7180 - 00021fa180] BOOTMEM [ 0.000000] #15 [00021fa180 - 00021fa1d8] BOOTMEM [ 0.000000] #16 [00021fa200 - 00021fd200] BOOTMEM [ 0.000000] #17 [00021fd200 - 00021fd225] BOOTMEM [ 0.000000] #18 [00021fd240 - 00021fd267] BOOTMEM [ 0.000000] #19 [00021fd280 - 00021fd494] BOOTMEM [ 0.000000] #20 [00021fd4c0 - 00021fd500] BOOTMEM [ 0.000000] #21 [00021fd500 - 00021fd540] BOOTMEM [ 0.000000] #22 [00021fd540 - 00021fd580] BOOTMEM [ 0.000000] #23 [00021fd580 - 00021fd5c0] BOOTMEM [ 0.000000] #24 [00021fd5c0 - 00021fd600] BOOTMEM [ 0.000000] #25 [00021fd600 - 00021fd640] BOOTMEM [ 0.000000] #26 [00021fd640 - 00021fd680] BOOTMEM [ 0.000000] #27 [00021fd680 - 00021fd6c0] BOOTMEM [ 0.000000] #28 [00021fd6c0 - 00021fd700] BOOTMEM [ 0.000000] #29 [00021fd700 - 00021fd740] BOOTMEM [ 0.000000] #30 [00021fd740 - 00021fd780] BOOTMEM [ 0.000000] #31 [00021fd780 - 00021fd7c0] BOOTMEM [ 0.000000] #32 [00021fd7c0 - 00021fd800] BOOTMEM [ 0.000000] #33 [00021fd800 - 00021fd840] BOOTMEM [ 0.000000] #34 [00021fd840 - 00021fd880] BOOTMEM [ 0.000000] #35 [00021fd880 - 00021fd8c0] BOOTMEM [ 0.000000] #36 [00021fd8c0 - 00021fd8d0] BOOTMEM [ 0.000000] #37 [00021fd900 - 00021fd910] BOOTMEM [ 0.000000] #38 [00021fd940 - 00021fd9b4] BOOTMEM [ 0.000000] #39 [00021fd9c0 - 00021fda34] BOOTMEM [ 0.000000] #40 [0002400000 - 000240e000] BOOTMEM [ 0.000000] #41 [0002500000 - 000250e000] BOOTMEM [ 0.000000] #42 [0002600000 - 000260e000] BOOTMEM [ 0.000000] #43 [0002700000 - 000270e000] BOOTMEM [ 0.000000] #44 [00021ffa40 - 00021ffa44] BOOTMEM [ 0.000000] #45 [00021ffa80 - 00021ffa84] BOOTMEM [ 0.000000] #46 [00021ffac0 - 00021ffad0] BOOTMEM [ 0.000000] #47 [00021ffb00 - 00021ffb10] BOOTMEM [ 0.000000] #48 [00021ffb40 - 00021ffbe0] BOOTMEM [ 0.000000] #49 [00021ffc00 - 00021ffc48] BOOTMEM [ 0.000000] #50 [00021ffc80 - 0002203c80] BOOTMEM [ 0.000000] #51 [0002203c80 - 0002283c80] BOOTMEM [ 0.000000] #52 [0002283c80 - 00022c3c80] BOOTMEM [ 0.000000] #53 [000270e000 - 0002fccbec] BOOTMEM [ 0.000000] Initializing HighMem for node 0 (000377fe:0006ff00) [ 0.000000] Memory: 1788264k/1833984k available (4930k kernel code, 43780k reserved, 2397k data, 684k init, 923188k highmem) [ 0.000000] virtual kernel memory layout: [ 0.000000] fixmap : 0xfff16000 - 0xfffff000 ( 932 kB) [ 0.000000] pkmap : 0xff800000 - 0xffc00000 (4096 kB) [ 0.000000] vmalloc : 0xf7ffe000 - 0xff7fe000 ( 120 MB) [ 0.000000] lowmem : 0xc0000000 - 0xf77fe000 ( 887 MB) [ 0.000000] .init : 0xc0828000 - 0xc08d3000 ( 684 kB) [ 0.000000] .data : 0xc05d0aea - 0xc0827fa8 (2397 kB) [ 0.000000] .text : 0xc0100000 - 0xc05d0aea (4930 kB) [ 0.000000] Checking if this processor honours the WP bit even in supervisor mode...Ok. [ 0.000000] SLUB: Genslabs=13, HWalign=64, Order=0-3, MinObjects=0, CPUs=4, Nodes=1 [ 0.000000] Hierarchical RCU implementation. [ 0.000000] RCU dyntick-idle grace-period acceleration is enabled. [ 0.000000] RCU-based detection of stalled CPUs is disabled. [ 0.000000] Verbose stalled-CPUs detection is disabled. [ 0.000000] NR_IRQS:2304 nr_irqs:712 [ 0.000000] spurious 8259A interrupt: IRQ7. [ 0.000000] Console: colour dummy device 80x25 [ 0.000000] console [tty0] enabled [ 0.000000] hpet clockevent registered [ 0.000000] Fast TSC calibration using PIT [ 0.000000] Detected 2099.713 MHz processor. [ 0.008012] Calibrating delay loop (skipped), value calculated using timer frequency.. 4199.42 BogoMIPS (lpj=8398852) [ 0.008026] pid_max: default: 32768 minimum: 301 [ 0.008096] Security Framework initialized [ 0.008139] AppArmor: AppArmor initialized [ 0.008144] Yama: becoming mindful. [ 0.008276] Mount-cache hash table entries: 512 [ 0.008563] Initializing cgroup subsys ns [ 0.008572] Initializing cgroup subsys cpuacct [ 0.008584] Initializing cgroup subsys memory [ 0.008605] Initializing cgroup subsys devices [ 0.008612] Initializing cgroup subsys freezer [ 0.008619] Initializing cgroup subsys net_cls [ 0.008672] CPU: Physical Processor ID: 0 [ 0.008677] CPU: Processor Core ID: 0 [ 0.008685] mce: CPU supports 5 MCE banks [ 0.008713] Performance Events: AMD PMU driver. [ 0.008731] ... version: 0 [ 0.008736] ... bit width: 48 [ 0.008742] ... generic registers: 4 [ 0.008748] ... value mask: 0000ffffffffffff [ 0.008754] ... max period: 00007fffffffffff [ 0.008760] ... fixed-purpose events: 0 [ 0.008766] ... event mask: 000000000000000f [ 0.015371] ACPI: Core revision 20100428 [ 0.036049] ftrace: converting mcount calls to 0f 1f 44 00 00 [ 0.036069] ftrace: allocating 21729 entries in 43 pages [ 0.040142] Enabling APIC mode: Flat. Using 1 I/O APICs [ 0.040565] ..TIMER: vector=0x30 apic1=0 pin1=2 apic2=-1 pin2=-1 [ 0.084295] CPU0: AMD Turion(tm) X2 Dual-Core Mobile RM-72 stepping 01 [ 0.088000] Booting Node 0, Processors #1 [ 0.012000] Initializing CPU#1 [ 0.176000] TSC synchronization [CPU#0 -> CPU#1]: [ 0.176000] Measured 206988779 cycles TSC warp between CPUs, turning off TSC clock. [ 0.176000] Marking TSC unstable due to check_tsc_sync_source failed [ 0.176018] Brought up 2 CPUs [ 0.176024] Total of 2 processors activated (8389.37 BogoMIPS). [ 0.176359] devtmpfs: initialized [ 0.176992] regulator: core version 0.5 [ 0.177041] Time: 22:10:41 Date: 08/13/10 [ 0.177095] NET: Registered protocol family 16 [ 0.177134] Trying to unpack rootfs image as initramfs... [ 0.177261] EISA bus registered [ 0.177306] TOM: 0000000080000000 aka 2048M [ 0.177310] Fam 10h mmconf [e0000000, e0ffffff] [ 0.177328] ACPI: bus type pci registered [ 0.177445] PCI: MMCONFIG for domain 0000 [bus 00-3f] at [mem 0xe0000000-0xe3ffffff] (base 0xe0000000) [ 0.177449] PCI: MMCONFIG at [mem 0xe0000000-0xe3ffffff] reserved in E820 [ 0.177451] PCI: Using MMCONFIG for extended config space [ 0.177453] PCI: Using configuration type 1 for base access [ 0.177478] mtrr: your CPUs had inconsistent fixed MTRR settings [ 0.177481] mtrr: probably your BIOS does not setup all CPUs. [ 0.177482] mtrr: corrected configuration. [ 0.184752] bio: create slab at 0 [ 0.185656] ACPI: EC: Look up EC in DSDT [ 0.187178] ACPI: Executed 1 blocks of module-level executable AML code [ 0.191479] ACPI: BIOS _OSI(Linux) query ignored [ 0.192085] ACPI: Interpreter enabled [ 0.192088] ACPI: (supports S0 S3 S4 S5) [ 0.192117] ACPI: Using IOAPIC for interrupt routing [ 0.201427] ACPI: EC: GPE = 0x3, I/O: command/status = 0x66, data = 0x62 [ 0.201712] ACPI: No dock devices found. [ 0.201716] PCI: Using host bridge windows from ACPI; if necessary, use "pci=nocrs" and report a bug [ 0.202863] \_SB_.PCI0:_OSC request failed [ 0.202865] _OSC request data:1 8 1f [ 0.202871] ACPI: PCI Root Bridge [PCI0] (domain 0000 [bus 00-ff]) [ 0.205384] pci_root PNP0A08:00: host bridge window [io 0x0000-0x0cf7] [ 0.205387] pci_root PNP0A08:00: host bridge window [io 0x0d00-0xffff] [ 0.205391] pci_root PNP0A08:00: host bridge window [mem 0x000a0000-0x000bffff] [ 0.205394] pci_root PNP0A08:00: host bridge window [mem 0x000c0000-0x000c3fff] [ 0.205397] pci_root PNP0A08:00: host bridge window [mem 0x000c4000-0x000c7fff] [ 0.205401] pci_root PNP0A08:00: host bridge window [mem 0x000c8000-0x000cbfff] [ 0.205405] pci_root PNP0A08:00: address space collision: host bridge window [mem 0x000cc000-0x000cffff] conflicts with Video ROM [mem 0x000c0000-0x000ce9ff] [ 0.205409] pci_root PNP0A08:00: host bridge window [mem 0x000d0000-0x000d3fff] [ 0.205412] pci_root PNP0A08:00: host bridge window [mem 0x000d4000-0x000d7fff] [ 0.205415] pci_root PNP0A08:00: host bridge window [mem 0x000d8000-0x000dbfff] [ 0.205418] pci_root PNP0A08:00: host bridge window [mem 0x000dc000-0x000dffff] [ 0.205421] pci_root PNP0A08:00: host bridge window [mem 0x000e0000-0x000e3fff] [ 0.205424] pci_root PNP0A08:00: host bridge window [mem 0x000e4000-0x000e7fff] [ 0.205428] pci_root PNP0A08:00: host bridge window [mem 0x000e8000-0x000ebfff] [ 0.205431] pci_root PNP0A08:00: host bridge window [mem 0x000ec000-0x000effff] [ 0.205434] pci_root PNP0A08:00: host bridge window [mem 0x80000000-0xdfffffff] [ 0.205437] pci_root PNP0A08:00: host bridge window [mem 0xe4000000-0xffffffff] [ 0.205601] pci 0000:00:04.0: PME# supported from D0 D3hot D3cold [ 0.205606] pci 0000:00:04.0: PME# disabled [ 0.205659] pci 0000:00:05.0: PME# supported from D0 D3hot D3cold [ 0.205663] pci 0000:00:05.0: PME# disabled [ 0.205716] pci 0000:00:06.0: PME# supported from D0 D3hot D3cold [ 0.205720] pci 0000:00:06.0: PME# disabled [ 0.205807] pci 0000:00:11.0: reg 10: [io 0x6038-0x603f] [ 0.205816] pci 0000:00:11.0: reg 14: [io 0x604c-0x604f] [ 0.205824] pci 0000:00:11.0: reg 18: [io 0x6030-0x6037] [ 0.205832] pci 0000:00:11.0: reg 1c: [io 0x6048-0x604b] [ 0.205840] pci 0000:00:11.0: reg 20: [io 0x6010-0x601f] [ 0.205849] pci 0000:00:11.0: reg 24: [mem 0x92409000-0x924093ff] [ 0.205911] pci 0000:00:12.0: reg 10: [mem 0x92408000-0x92408fff] [ 0.205975] pci 0000:00:12.1: reg 10: [mem 0x92407000-0x92407fff] [ 0.206053] pci 0000:00:12.2: reg 10: [mem 0x92409500-0x924095ff] [ 0.206115] pci 0000:00:12.2: supports D1 D2 [ 0.206118] pci 0000:00:12.2: PME# supported from D0 D1 D2 D3hot [ 0.206123] pci 0000:00:12.2: PME# disabled [ 0.206160] pci 0000:00:13.0: reg 10: [mem 0x92406000-0x92406fff] [ 0.206224] pci 0000:00:13.1: reg 10: [mem 0x92405000-0x92405fff] [ 0.206302] pci 0000:00:13.2: reg 10: [mem 0x92409400-0x924094ff] [ 0.206364] pci 0000:00:13.2: supports D1 D2 [ 0.206367] pci 0000:00:13.2: PME# supported from D0 D1 D2 D3hot [ 0.206372] pci 0000:00:13.2: PME# disabled [ 0.206501] pci 0000:00:14.1: reg 10: [io 0x0000-0x0007] [ 0.206509] pci 0000:00:14.1: reg 14: [io 0x0000-0x0003] [ 0.206517] pci 0000:00:14.1: reg 18: [io 0x0000-0x0007] [ 0.206525] pci 0000:00:14.1: reg 1c: [io 0x0000-0x0003] [ 0.206534] pci 0000:00:14.1: reg 20: [io 0x6000-0x600f] [ 0.206610] pci 0000:00:14.2: reg 10: [mem 0x92400000-0x92403fff 64bit] [ 0.206661] pci 0000:00:14.2: PME# supported from D0 D3hot D3cold [ 0.206666] pci 0000:00:14.2: PME# disabled [ 0.206789] pci 0000:00:14.5: reg 10: [mem 0x92404000-0x92404fff] [ 0.207067] pci 0000:01:05.0: reg 10: [mem 0x80000000-0x8fffffff pref] [ 0.207072] pci 0000:01:05.0: reg 14: [io 0x5000-0x50ff] [ 0.207078] pci 0000:01:05.0: reg 18: [mem 0x92300000-0x9230ffff] [ 0.207089] pci 0000:01:05.0: reg 24: [mem 0x92200000-0x922fffff] [ 0.207106] pci 0000:01:05.0: supports D1 D2 [ 0.207172] pci 0000:00:01.0: PCI bridge to [bus 01-01] [ 0.207178] pci 0000:00:01.0: bridge window [io 0x5000-0x5fff] [ 0.207182] pci 0000:00:01.0: bridge window [mem 0x92200000-0x923fffff] [ 0.207188] pci 0000:00:01.0: bridge window [mem 0x80000000-0x8fffffff 64bit pref] [ 0.207225] pci 0000:00:04.0: PCI bridge to [bus 02-07] [ 0.207231] pci 0000:00:04.0: bridge window [io 0x3000-0x4fff] [ 0.207235] pci 0000:00:04.0: bridge window [mem 0x91200000-0x921fffff] [ 0.207240] pci 0000:00:04.0: bridge window [mem 0x90000000-0x90ffffff 64bit pref] [ 0.207349] pci 0000:08:00.0: reg 10: [mem 0x91100000-0x91103fff 64bit] [ 0.207413] pci 0000:08:00.0: supports D1 D2 [ 0.212052] pci 0000:00:05.0: PCI bridge to [bus 08-08] [ 0.212058] pci 0000:00:05.0: bridge window [io 0xfffff000-0x0000] (disabled) [ 0.212062] pci 0000:00:05.0: bridge window [mem 0x91100000-0x911fffff] [ 0.212068] pci 0000:00:05.0: bridge window [mem 0xfff00000-0x000fffff pref] (disabled) [ 0.212130] pci 0000:09:00.0: reg 10: [io 0x2000-0x20ff] [ 0.212149] pci 0000:09:00.0: reg 18: [mem 0x91010000-0x91010fff 64bit pref] [ 0.212163] pci 0000:09:00.0: reg 20: [mem 0x91000000-0x9100ffff 64bit pref] [ 0.212171] pci 0000:09:00.0: reg 30: [mem 0xffff0000-0xffffffff pref] [ 0.212207] pci 0000:09:00.0: supports D1 D2 [ 0.212209] pci 0000:09:00.0: PME# supported from D0 D1 D2 D3hot D3cold [ 0.212214] pci 0000:09:00.0: PME# disabled [ 0.220013] pci 0000:00:06.0: PCI bridge to [bus 09-09] [ 0.220018] pci 0000:00:06.0: bridge window [io 0x2000-0x2fff] [ 0.220023] pci 0000:00:06.0: bridge window [mem 0xfff00000-0x000fffff] (disabled) [ 0.220028] pci 0000:00:06.0: bridge window [mem 0x91000000-0x910fffff 64bit pref] [ 0.220102] pci 0000:00:14.4: PCI bridge to [bus 80-8f] (subtractive decode) [ 0.220108] pci 0000:00:14.4: bridge window [io 0x1000-0x1fff] [ 0.220113] pci 0000:00:14.4: bridge window [mem 0xfff00000-0x000fffff] (disabled) [ 0.220119] pci 0000:00:14.4: bridge window [mem 0xfff00000-0x000fffff pref] (disabled) [ 0.220122] pci 0000:00:14.4: bridge window [io 0x0000-0x0cf7] (subtractive decode) [ 0.220125] pci 0000:00:14.4: bridge window [io 0x0d00-0xffff] (subtractive decode) [ 0.220128] pci 0000:00:14.4: bridge window [mem 0x000a0000-0x000bffff] (subtractive decode) [ 0.220132] pci 0000:00:14.4: bridge window [mem 0x000c0000-0x000c3fff] (subtractive decode) [ 0.220135] pci 0000:00:14.4: bridge window [mem 0x000c4000-0x000c7fff] (subtractive decode) [ 0.220138] pci 0000:00:14.4: bridge window [mem 0x000c8000-0x000cbfff] (subtractive decode) [ 0.220141] pci 0000:00:14.4: bridge window [mem 0x000d0000-0x000d3fff] (subtractive decode) [ 0.220144] pci 0000:00:14.4: bridge window [mem 0x000d4000-0x000d7fff] (subtractive decode) [ 0.220147] pci 0000:00:14.4: bridge window [mem 0x000d8000-0x000dbfff] (subtractive decode) [ 0.220150] pci 0000:00:14.4: bridge window [mem 0x000dc000-0x000dffff] (subtractive decode) [ 0.220153] pci 0000:00:14.4: bridge window [mem 0x000e0000-0x000e3fff] (subtractive decode) [ 0.220156] pci 0000:00:14.4: bridge window [mem 0x000e4000-0x000e7fff] (subtractive decode) [ 0.220159] pci 0000:00:14.4: bridge window [mem 0x000e8000-0x000ebfff] (subtractive decode) [ 0.220162] pci 0000:00:14.4: bridge window [mem 0x000ec000-0x000effff] (subtractive decode) [ 0.220165] pci 0000:00:14.4: bridge window [mem 0x80000000-0xdfffffff] (subtractive decode) [ 0.220168] pci 0000:00:14.4: bridge window [mem 0xe4000000-0xffffffff] (subtractive decode) [ 0.220189] pci_bus 0000:00: on NUMA node 0 [ 0.220196] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0._PRT] [ 0.220464] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.AGP_._PRT] [ 0.220556] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PB4_._PRT] [ 0.220655] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PB5_._PRT] [ 0.220745] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PB6_._PRT] [ 0.220876] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.P2P_._PRT] [ 0.221085] \_SB_.PCI0:_OSC request failed [ 0.221087] _OSC request data:1 1f 1f [ 0.236582] ACPI: PCI Interrupt Link [LNKA] (IRQs 3 4 5 7 10 11 12 14 15) *0, disabled. [ 0.236756] ACPI: PCI Interrupt Link [LNKB] (IRQs 3 4 5 7 10 11 12 14 15) *0, disabled. [ 0.236968] ACPI: PCI Interrupt Link [LNKC] (IRQs 3 4 5 7 10 11 12 14 15) *0, disabled. [ 0.237174] ACPI: PCI Interrupt Link [LNKD] (IRQs 3 4 5 7 10 11 12 14 15) *0, disabled. [ 0.237316] ACPI: PCI Interrupt Link [LNKE] (IRQs 3 4 5 7 10 11 12 14 15) *0, disabled. [ 0.237481] ACPI: PCI Interrupt Link [LNKF] (IRQs 3 4 5 7 10 11 12 14 15) *0, disabled. [ 0.237687] ACPI: PCI Interrupt Link [LNKG] (IRQs 3 4 5 7 10 11 12 14 15) *0, disabled. [ 0.237890] ACPI: PCI Interrupt Link [LNKH] (IRQs 3 4 5 7 10 11 12 14 15) *0, disabled. [ 0.237953] HEST: Table is not found! [ 0.238063] vgaarb: device added: PCI:0000:01:05.0,decodes=io+mem,owns=io+mem,locks=none [ 0.238066] vgaarb: loaded [ 0.238242] SCSI subsystem initialized [ 0.238332] libata version 3.00 loaded. [ 0.238389] usbcore: registered new interface driver usbfs [ 0.238406] usbcore: registered new interface driver hub [ 0.238431] usbcore: registered new device driver usb [ 0.238685] ACPI: WMI: Mapper loaded [ 0.238688] PCI: Using ACPI for IRQ routing [ 0.238691] PCI: pci_cache_line_size set to 64 bytes [ 0.238914] reserve RAM buffer: 0000000000002000 - 000000000000ffff [ 0.238918] reserve RAM buffer: 000000000009fc00 - 000000000009ffff [ 0.238921] reserve RAM buffer: 000000006fb8f000 - 000000006fffffff [ 0.238924] reserve RAM buffer: 000000006fd70000 - 000000006fffffff [ 0.238928] reserve RAM buffer: 000000006fe58000 - 000000006fffffff [ 0.238931] reserve RAM buffer: 000000006feed000 - 000000006fffffff [ 0.238934] reserve RAM buffer: 000000006ff00000 - 000000006fffffff [ 0.239032] NetLabel: Initializing [ 0.239034] NetLabel: domain hash size = 128 [ 0.239036] NetLabel: protocols = UNLABELED CIPSOv4 [ 0.239050] NetLabel: unlabeled traffic allowed by default [ 0.239130] hpet0: at MMIO 0xfed00000, IRQs 2, 8, 0, 0 [ 0.239136] hpet0: 4 comparators, 32-bit 14.318180 MHz counter [ 0.241029] Switching to clocksource hpet [ 0.250600] AppArmor: AppArmor Filesystem Enabled [ 0.250618] pnp: PnP ACPI init [ 0.250640] ACPI: bus type pnp registered [ 0.254104] pnp: PnP ACPI: found 12 devices [ 0.254107] ACPI: ACPI bus type pnp unregistered [ 0.254110] PnPBIOS: Disabled by ACPI PNP [ 0.254126] system 00:01: [mem 0xfec00000-0xfec00fff] could not be reserved [ 0.254130] system 00:01: [mem 0xfee00000-0xfee00fff] has been reserved [ 0.254138] system 00:09: [io 0x0400-0x04cf] has been reserved [ 0.254141] system 00:09: [io 0x04d0-0x04d1] has been reserved [ 0.254144] system 00:09: [io 0x04d6] has been reserved [ 0.254148] system 00:09: [io 0x0680-0x06ff] has been reserved [ 0.254151] system 00:09: [io 0x077a] has been reserved [ 0.254153] system 00:09: [io 0x0c00-0x0c01] has been reserved [ 0.254156] system 00:09: [io 0x0c14] has been reserved [ 0.254159] system 00:09: [io 0x0c50-0x0c52] has been reserved [ 0.254162] system 00:09: [io 0x0c6c] has been reserved [ 0.254165] system 00:09: [io 0x0c6f] has been reserved [ 0.254168] system 00:09: [io 0x0cd0-0x0cdb] has been reserved [ 0.254175] system 00:0a: [mem 0x000e0000-0x000fffff] could not be reserved [ 0.254178] system 00:0a: [mem 0xfff00000-0xffffffff] has been reserved [ 0.289129] pci 0000:09:00.0: no compatible bridge window for [mem 0xffff0000-0xffffffff pref] [ 0.289165] pci 0000:00:06.0: BAR 14: assigned [mem 0x92500000-0x925fffff] [ 0.289168] pci 0000:00:01.0: PCI bridge to [bus 01-01] [ 0.289172] pci 0000:00:01.0: bridge window [io 0x5000-0x5fff] [ 0.289177] pci 0000:00:01.0: bridge window [mem 0x92200000-0x923fffff] [ 0.289181] pci 0000:00:01.0: bridge window [mem 0x80000000-0x8fffffff 64bit pref] [ 0.289187] pci 0000:00:04.0: PCI bridge to [bus 02-07] [ 0.289190] pci 0000:00:04.0: bridge window [io 0x3000-0x4fff] [ 0.289195] pci 0000:00:04.0: bridge window [mem 0x91200000-0x921fffff] [ 0.289199] pci 0000:00:04.0: bridge window [mem 0x90000000-0x90ffffff 64bit pref] [ 0.289204] pci 0000:00:05.0: PCI bridge to [bus 08-08] [ 0.289207] pci 0000:00:05.0: bridge window [io disabled] [ 0.289211] pci 0000:00:05.0: bridge window [mem 0x91100000-0x911fffff] [ 0.289215] pci 0000:00:05.0: bridge window [mem pref disabled] [ 0.289221] pci 0000:09:00.0: BAR 6: assigned [mem 0x91020000-0x9102ffff pref] [ 0.289224] pci 0000:00:06.0: PCI bridge to [bus 09-09] [ 0.289227] pci 0000:00:06.0: bridge window [io 0x2000-0x2fff] [ 0.289232] pci 0000:00:06.0: bridge window [mem 0x92500000-0x925fffff] [ 0.289236] pci 0000:00:06.0: bridge window [mem 0x91000000-0x910fffff 64bit pref] [ 0.289242] pci 0000:00:14.4: PCI bridge to [bus 80-8f] [ 0.289257] pci 0000:00:14.4: bridge window [io 0x1000-0x1fff] [ 0.289264] pci 0000:00:14.4: bridge window [mem disabled] [ 0.289269] pci 0000:00:14.4: bridge window [mem pref disabled] [ 0.289283] pci 0000:00:01.0: setting latency timer to 64 [ 0.289293] alloc irq_desc for 16 on node -1 [ 0.289296] alloc kstat_irqs on node -1 [ 0.289302] pci 0000:00:04.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16 [ 0.289306] pci 0000:00:04.0: setting latency timer to 64 [ 0.289315] alloc irq_desc for 17 on node -1 [ 0.289317] alloc kstat_irqs on node -1 [ 0.289322] pci 0000:00:05.0: PCI INT A -> GSI 17 (level, low) -> IRQ 17 [ 0.289326] pci 0000:00:05.0: setting latency timer to 64 [ 0.289333] alloc irq_desc for 18 on node -1 [ 0.289335] alloc kstat_irqs on node -1 [ 0.289339] pci 0000:00:06.0: PCI INT A -> GSI 18 (level, low) -> IRQ 18 [ 0.289343] pci 0000:00:06.0: setting latency timer to 64 [ 0.289352] pci_bus 0000:00: resource 4 [io 0x0000-0x0cf7] [ 0.289355] pci_bus 0000:00: resource 5 [io 0x0d00-0xffff] [ 0.289358] pci_bus 0000:00: resource 6 [mem 0x000a0000-0x000bffff] [ 0.289361] pci_bus 0000:00: resource 7 [mem 0x000c0000-0x000c3fff] [ 0.289363] pci_bus 0000:00: resource 8 [mem 0x000c4000-0x000c7fff] [ 0.289366] pci_bus 0000:00: resource 9 [mem 0x000c8000-0x000cbfff] [ 0.289369] pci_bus 0000:00: resource 10 [mem 0x000d0000-0x000d3fff] [ 0.289371] pci_bus 0000:00: resource 11 [mem 0x000d4000-0x000d7fff] [ 0.289374] pci_bus 0000:00: resource 12 [mem 0x000d8000-0x000dbfff] [ 0.289377] pci_bus 0000:00: resource 13 [mem 0x000dc000-0x000dffff] [ 0.289380] pci_bus 0000:00: resource 14 [mem 0x000e0000-0x000e3fff] [ 0.289382] pci_bus 0000:00: resource 15 [mem 0x000e4000-0x000e7fff] [ 0.289385] pci_bus 0000:00: resource 16 [mem 0x000e8000-0x000ebfff] [ 0.289388] pci_bus 0000:00: resource 17 [mem 0x000ec000-0x000effff] [ 0.289391] pci_bus 0000:00: resource 18 [mem 0x80000000-0xdfffffff] [ 0.289394] pci_bus 0000:00: resource 19 [mem 0xe4000000-0xffffffff] [ 0.289397] pci_bus 0000:01: resource 0 [io 0x5000-0x5fff] [ 0.289399] pci_bus 0000:01: resource 1 [mem 0x92200000-0x923fffff] [ 0.289402] pci_bus 0000:01: resource 2 [mem 0x80000000-0x8fffffff 64bit pref] [ 0.289405] pci_bus 0000:02: resource 0 [io 0x3000-0x4fff] [ 0.289408] pci_bus 0000:02: resource 1 [mem 0x91200000-0x921fffff] [ 0.289411] pci_bus 0000:02: resource 2 [mem 0x90000000-0x90ffffff 64bit pref] [ 0.289414] pci_bus 0000:08: resource 1 [mem 0x91100000-0x911fffff] [ 0.289417] pci_bus 0000:09: resource 0 [io 0x2000-0x2fff] [ 0.289419] pci_bus 0000:09: resource 1 [mem 0x92500000-0x925fffff] [ 0.289422] pci_bus 0000:09: resource 2 [mem 0x91000000-0x910fffff 64bit pref] [ 0.289425] pci_bus 0000:80: resource 0 [io 0x1000-0x1fff] [ 0.289428] pci_bus 0000:80: resource 4 [io 0x0000-0x0cf7] [ 0.289431] pci_bus 0000:80: resource 5 [io 0x0d00-0xffff] [ 0.289433] pci_bus 0000:80: resource 6 [mem 0x000a0000-0x000bffff] [ 0.289436] pci_bus 0000:80: resource 7 [mem 0x000c0000-0x000c3fff] [ 0.289439] pci_bus 0000:80: resource 8 [mem 0x000c4000-0x000c7fff] [ 0.289441] pci_bus 0000:80: resource 9 [mem 0x000c8000-0x000cbfff] [ 0.289444] pci_bus 0000:80: resource 10 [mem 0x000d0000-0x000d3fff] [ 0.289447] pci_bus 0000:80: resource 11 [mem 0x000d4000-0x000d7fff] [ 0.289450] pci_bus 0000:80: resource 12 [mem 0x000d8000-0x000dbfff] [ 0.289453] pci_bus 0000:80: resource 13 [mem 0x000dc000-0x000dffff] [ 0.289455] pci_bus 0000:80: resource 14 [mem 0x000e0000-0x000e3fff] [ 0.289458] pci_bus 0000:80: resource 15 [mem 0x000e4000-0x000e7fff] [ 0.289461] pci_bus 0000:80: resource 16 [mem 0x000e8000-0x000ebfff] [ 0.289463] pci_bus 0000:80: resource 17 [mem 0x000ec000-0x000effff] [ 0.289466] pci_bus 0000:80: resource 18 [mem 0x80000000-0xdfffffff] [ 0.289469] pci_bus 0000:80: resource 19 [mem 0xe4000000-0xffffffff] [ 0.289511] NET: Registered protocol family 2 [ 0.289582] IP route cache hash table entries: 32768 (order: 5, 131072 bytes) [ 0.289866] TCP established hash table entries: 131072 (order: 8, 1048576 bytes) [ 0.290514] TCP bind hash table entries: 65536 (order: 7, 524288 bytes) [ 0.290814] TCP: Hash tables configured (established 131072 bind 65536) [ 0.290817] TCP reno registered [ 0.290821] UDP hash table entries: 512 (order: 2, 16384 bytes) [ 0.290832] UDP-Lite hash table entries: 512 (order: 2, 16384 bytes) [ 0.290941] NET: Registered protocol family 1 [ 0.290958] pci 0000:00:01.0: MSI quirk detected; subordinate MSI disabled [ 0.444591] pci 0000:01:05.0: Boot video device [ 0.444641] PCI: CLS 64 bytes, default 64 [ 0.444707] Simple Boot Flag at 0x44 set to 0x1 [ 0.444898] cpufreq-nforce2: No nForce2 chipset. [ 0.444929] Scanning for low memory corruption every 60 seconds [ 0.445079] audit: initializing netlink socket (disabled) [ 0.445095] type=2000 audit(1281737440.444:1): initialized [ 0.456105] highmem bounce pool size: 64 pages [ 0.456112] HugeTLB registered 4 MB page size, pre-allocated 0 pages [ 0.457768] VFS: Disk quotas dquot_6.5.2 [ 0.457833] Dquot-cache hash table entries: 1024 (order 0, 4096 bytes) [ 0.458460] fuse init (API version 7.14) [ 0.458554] msgmni has been set to 1689 [ 0.458848] alg: No test for stdrng (krng) [ 0.458908] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 253) [ 0.458912] io scheduler noop registered [ 0.458914] io scheduler deadline registered [ 0.458928] io scheduler cfq registered (default) [ 0.459071] pcieport 0000:00:04.0: setting latency timer to 64 [ 0.459104] alloc irq_desc for 40 on node -1 [ 0.459106] alloc kstat_irqs on node -1 [ 0.459117] pcieport 0000:00:04.0: irq 40 for MSI/MSI-X [ 0.459194] pcieport 0000:00:05.0: setting latency timer to 64 [ 0.459222] alloc irq_desc for 41 on node -1 [ 0.459224] alloc kstat_irqs on node -1 [ 0.459231] pcieport 0000:00:05.0: irq 41 for MSI/MSI-X [ 0.459294] pcieport 0000:00:06.0: setting latency timer to 64 [ 0.459322] alloc irq_desc for 42 on node -1 [ 0.459324] alloc kstat_irqs on node -1 [ 0.459329] pcieport 0000:00:06.0: irq 42 for MSI/MSI-X [ 0.459418] pci_hotplug: PCI Hot Plug PCI Core version: 0.5 [ 0.459555] \_SB_.PCI0:_OSC request failed [ 0.459557] _OSC request data:1 0 1f [ 0.459668] \_SB_.PCI0:_OSC request failed [ 0.459670] _OSC request data:1 0 1f [ 0.459692] pciehp: PCI Express Hot Plug Controller Driver version: 0.4 [ 0.460055] vesafb: framebuffer at 0x80000000, mapped to 0xf8080000, using 1216k, total 1216k [ 0.460059] vesafb: mode is 640x480x32, linelength=2560, pages=0 [ 0.460061] vesafb: scrolling: redraw [ 0.460064] vesafb: Truecolor: size=0:8:8:8, shift=0:16:8:0 [ 0.532673] Console: switching to colour frame buffer device 80x30 [ 0.605161] fb0: VESA VGA frame buffer device [ 0.605645] ACPI: AC Adapter [ACAD] (on-line) [ 0.605724] input: Power Button as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0C:00/input/input0 [ 0.605728] ACPI: Power Button [PWRB] [ 0.605774] input: Sleep Button as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0E:00/input/input1 [ 0.605777] ACPI: Sleep Button [SLPB] [ 0.605834] input: Lid Switch as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0D:00/input/input2 [ 0.606209] ACPI: Lid Switch [LID] [ 0.606258] input: Power Button as /devices/LNXSYSTM:00/LNXPWRBN:00/input/input3 [ 0.606261] ACPI: Power Button [PWRF] [ 0.606524] ACPI: acpi_idle registered with cpuidle [ 0.612093] [Firmware Bug]: Invalid critical threshold (0) [ 0.612741] thermal LNXTHERM:01: registered as thermal_zone0 [ 0.612750] ACPI: Thermal Zone [THRM] (78 C) [ 0.612831] ERST: Table is not found! [ 0.614582] Serial: 8250/16550 driver, 4 ports, IRQ sharing enabled [ 0.616217] brd: module loaded [ 0.616903] loop: module loaded [ 0.617210] pata_acpi 0000:00:14.1: PCI INT A -> GSI 16 (level, low) -> IRQ 16 [ 0.617293] pata_acpi 0000:00:14.1: setting latency timer to 64 [ 0.617686] Fixed MDIO Bus: probed [ 0.617727] PPP generic driver version 2.4.2 [ 0.617770] tun: Universal TUN/TAP device driver, 1.6 [ 0.617772] tun: (C) 1999-2004 Max Krasnyansky [ 0.617858] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver [ 0.617913] ehci_hcd 0000:00:12.2: PCI INT B -> GSI 17 (level, low) -> IRQ 17 [ 0.617933] ehci_hcd 0000:00:12.2: setting latency timer to 64 [ 0.617938] ehci_hcd 0000:00:12.2: EHCI Host Controller [ 0.617976] ehci_hcd 0000:00:12.2: new USB bus registered, assigned bus number 1 [ 0.618043] ehci_hcd 0000:00:12.2: applying AMD SB600/SB700 USB freeze workaround [ 0.618059] ehci_hcd 0000:00:12.2: debug port 1 [ 0.618095] ehci_hcd 0000:00:12.2: irq 17, io mem 0x92409500 [ 0.618314] isapnp: Scanning for PnP cards... [ 0.672689] ehci_hcd 0000:00:12.2: USB 2.0 started, EHCI 1.00 [ 0.672850] hub 1-0:1.0: USB hub found [ 0.672856] hub 1-0:1.0: 6 ports detected [ 0.673001] alloc irq_desc for 19 on node -1 [ 0.673003] alloc kstat_irqs on node -1 [ 0.673011] ehci_hcd 0000:00:13.2: PCI INT B -> GSI 19 (level, low) -> IRQ 19 [ 0.673024] ehci_hcd 0000:00:13.2: setting latency timer to 64 [ 0.673028] ehci_hcd 0000:00:13.2: EHCI Host Controller [ 0.673070] ehci_hcd 0000:00:13.2: new USB bus registered, assigned bus number 2 [ 0.673131] ehci_hcd 0000:00:13.2: applying AMD SB600/SB700 USB freeze workaround [ 0.673146] ehci_hcd 0000:00:13.2: debug port 1 [ 0.673172] ehci_hcd 0000:00:13.2: irq 19, io mem 0x92409400 [ 0.696087] ehci_hcd 0000:00:13.2: USB 2.0 started, EHCI 1.00 [ 0.696385] hub 2-0:1.0: USB hub found [ 0.696397] hub 2-0:1.0: 6 ports detected [ 0.696564] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver [ 0.696639] ohci_hcd 0000:00:12.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16 [ 0.696680] ohci_hcd 0000:00:12.0: setting latency timer to 64 [ 0.696687] ohci_hcd 0000:00:12.0: OHCI Host Controller [ 0.696785] ohci_hcd 0000:00:12.0: new USB bus registered, assigned bus number 3 [ 0.696881] ohci_hcd 0000:00:12.0: irq 16, io mem 0x92408000 [ 0.756952] hub 3-0:1.0: USB hub found [ 0.757001] hub 3-0:1.0: 3 ports detected [ 0.757176] ohci_hcd 0000:00:12.1: PCI INT A -> GSI 16 (level, low) -> IRQ 16 [ 0.757255] ohci_hcd 0000:00:12.1: setting latency timer to 64 [ 0.757262] ohci_hcd 0000:00:12.1: OHCI Host Controller [ 0.757342] ohci_hcd 0000:00:12.1: new USB bus registered, assigned bus number 4 [ 0.757414] ohci_hcd 0000:00:12.1: irq 16, io mem 0x92407000 [ 0.816561] hub 4-0:1.0: USB hub found [ 0.816576] hub 4-0:1.0: 3 ports detected [ 0.816757] ohci_hcd 0000:00:13.0: PCI INT A -> GSI 18 (level, low) -> IRQ 18 [ 0.816835] ohci_hcd 0000:00:13.0: setting latency timer to 64 [ 0.816843] ohci_hcd 0000:00:13.0: OHCI Host Controller [ 0.816940] ohci_hcd 0000:00:13.0: new USB bus registered, assigned bus number 5 [ 0.817029] ohci_hcd 0000:00:13.0: irq 18, io mem 0x92406000 [ 0.876383] hub 5-0:1.0: USB hub found [ 0.876435] hub 5-0:1.0: 3 ports detected [ 0.876651] ohci_hcd 0000:00:13.1: PCI INT A -> GSI 18 (level, low) -> IRQ 18 [ 0.876690] ohci_hcd 0000:00:13.1: setting latency timer to 64 [ 0.876698] ohci_hcd 0000:00:13.1: OHCI Host Controller [ 0.876779] ohci_hcd 0000:00:13.1: new USB bus registered, assigned bus number 6 [ 0.876849] ohci_hcd 0000:00:13.1: irq 18, io mem 0x92405000 [ 0.899348] Freeing initrd memory: 10504k freed [ 0.925693] ACPI: Battery Slot [BAT0] (battery present) [ 0.936323] hub 6-0:1.0: USB hub found [ 0.936336] hub 6-0:1.0: 3 ports detected [ 0.936544] ohci_hcd 0000:00:14.5: PCI INT C -> GSI 18 (level, low) -> IRQ 18 [ 0.936582] ohci_hcd 0000:00:14.5: setting latency timer to 64 [ 0.936589] ohci_hcd 0000:00:14.5: OHCI Host Controller [ 0.936672] ohci_hcd 0000:00:14.5: new USB bus registered, assigned bus number 7 [ 0.936715] ohci_hcd 0000:00:14.5: irq 18, io mem 0x92404000 [ 0.957874] isapnp: No Plug & Play device found [ 0.996256] hub 7-0:1.0: USB hub found [ 0.996294] hub 7-0:1.0: 2 ports detected [ 0.996465] uhci_hcd: USB Universal Host Controller Interface driver [ 0.996653] PNP: PS/2 Controller [PNP0303:PS2K,PNP0f13:PS2M] at 0x60,0x64 irq 1,12 [ 1.013883] serio: i8042 KBD port at 0x60,0x64 irq 1 [ 1.013898] serio: i8042 AUX port at 0x60,0x64 irq 12 [ 1.014041] mice: PS/2 mouse device common for all mice [ 1.014303] rtc_cmos 00:05: RTC can wake from S4 [ 1.014387] rtc_cmos 00:05: rtc core: registered rtc_cmos as rtc0 [ 1.014423] rtc0: alarms up to one day, 114 bytes nvram, hpet irqs [ 1.014633] device-mapper: uevent: version 1.0.3 [ 1.014875] device-mapper: ioctl: 4.17.0-ioctl (2010-03-05) initialised: dm-devel@redhat.com [ 1.015023] device-mapper: multipath: version 1.1.1 loaded [ 1.015028] device-mapper: multipath round-robin: version 1.0.0 loaded [ 1.015248] EISA: Probing bus 0 at eisa.0 [ 1.015254] EISA: Cannot allocate resource for mainboard [ 1.015259] Cannot allocate resource for EISA slot 1 [ 1.015264] Cannot allocate resource for EISA slot 2 [ 1.015268] Cannot allocate resource for EISA slot 3 [ 1.015273] Cannot allocate resource for EISA slot 4 [ 1.015278] Cannot allocate resource for EISA slot 5 [ 1.015282] Cannot allocate resource for EISA slot 6 [ 1.015287] Cannot allocate resource for EISA slot 7 [ 1.015291] Cannot allocate resource for EISA slot 8 [ 1.015296] EISA: Detected 0 cards. [ 1.015575] cpuidle: using governor ladder [ 1.015578] cpuidle: using governor menu [ 1.015903] TCP cubic registered [ 1.016046] NET: Registered protocol family 10 [ 1.016465] lo: Disabled Privacy Extensions [ 1.016775] NET: Registered protocol family 17 [ 1.016854] powernow-k8: Found 1 AMD Turion(tm) X2 Dual-Core Mobile RM-72 (2 cpu cores) (version 2.20.00) [ 1.016912] powernow-k8: 0 : pstate 0 (2100 MHz) [ 1.016914] powernow-k8: 1 : pstate 1 (1050 MHz) [ 1.016916] powernow-k8: 2 : pstate 2 (525 MHz) [ 1.018096] Using IPI No-Shortcut mode [ 1.018201] PM: Resume from disk failed. [ 1.018214] registered taskstats version 1 [ 1.018569] Magic number: 6:938:198 [ 1.018717] rtc_cmos 00:05: setting system clock to 2010-08-13 22:10:41 UTC (1281737441) [ 1.018720] BIOS EDD facility v0.16 2004-Jun-25, 0 devices found [ 1.018722] EDD information not available. [ 1.018830] Freeing unused kernel memory: 684k freed [ 1.019356] Write protecting the kernel text: 4932k [ 1.019400] Write protecting the kernel read-only data: 2012k [ 1.020579] usb 2-2: new high speed USB device using ehci_hcd and address 2 [ 1.031162] input: AT Translated Set 2 keyboard as /devices/platform/i8042/serio0/input/input4 [ 1.044475] udev: starting version 151 [ 1.098986] r8169 Gigabit Ethernet driver 2.3LK-NAPI loaded [ 1.099015] r8169 0000:09:00.0: PCI INT A -> GSI 18 (level, low) -> IRQ 18 [ 1.099062] r8169 0000:09:00.0: setting latency timer to 64 [ 1.099116] alloc irq_desc for 43 on node -1 [ 1.099118] alloc kstat_irqs on node -1 [ 1.099133] r8169 0000:09:00.0: irq 43 for MSI/MSI-X [ 1.099690] r8169 0000:09:00.0: eth0: RTL8168c/8111c at 0xf81d6000, 00:23:8b:10:df:e4, XID 1c4000c0 IRQ 43 [ 1.151131] b43-pci-bridge 0000:08:00.0: PCI INT A -> GSI 17 (level, low) -> IRQ 17 [ 1.151147] b43-pci-bridge 0000:08:00.0: setting latency timer to 64 [ 1.168658] ssb: Core 0 found: ChipCommon (cc 0x800, rev 0x16, vendor 0x4243) [ 1.168671] ssb: Core 1 found: IEEE 802.11 (cc 0x812, rev 0x0F, vendor 0x4243) [ 1.168682] ssb: Core 2 found: PCMCIA (cc 0x80D, rev 0x0A, vendor 0x4243) [ 1.168690] ssb: Core 3 found: PCI-E (cc 0x820, rev 0x09, vendor 0x4243) [ 1.178207] scsi0 : pata_atiixp [ 1.206642] scsi1 : pata_atiixp [ 1.207432] ata1: DUMMY [ 1.207435] ata2: PATA max UDMA/100 cmd 0x170 ctl 0x376 bmdma 0x6008 irq 15 [ 1.207517] ahci 0000:00:11.0: version 3.0 [ 1.207578] alloc irq_desc for 22 on node -1 [ 1.207581] alloc kstat_irqs on node -1 [ 1.207591] ahci 0000:00:11.0: PCI INT A -> GSI 22 (level, low) -> IRQ 22 [ 1.207708] ahci 0000:00:11.0: AHCI 0001.0100 32 slots 1 ports 3 Gbps 0x1 impl SATA mode [ 1.207712] ahci 0000:00:11.0: flags: 64bit ncq sntf ilck led clo pmp pio ccc [ 1.217301] ssb: Sonics Silicon Backplane found on PCI device 0000:08:00.0 [ 1.227449] scsi2 : ahci [ 1.227599] ata3: SATA max UDMA/133 abar m1024@0x92409000 port 0x92409100 irq 22 [ 1.420056] usb 1-4: new high speed USB device using ehci_hcd and address 2 [ 1.574664] Initializing USB Mass Storage driver... [ 1.574860] scsi3 : usb-storage 1-4:1.0 [ 1.575018] usbcore: registered new interface driver usb-storage [ 1.575022] USB Mass Storage support registered. [ 1.708059] ata3: softreset failed (device not ready) [ 1.708064] ata3: applying SB600 PMP SRST workaround and retrying [ 1.828056] usb 6-1: new full speed USB device using ohci_hcd and address 2 [ 1.876067] ata3: SATA link up 3.0 Gbps (SStatus 123 SControl 300) [ 1.876770] ata3.00: ATA-8: ST9250827AS, 3.AHC, max UDMA/100 [ 1.876773] ata3.00: 488397168 sectors, multi 16: LBA48 NCQ (depth 31/32) [ 1.877681] ata3.00: configured for UDMA/100 [ 1.877979] scsi 2:0:0:0: Direct-Access ATA ST9250827AS 3.AH PQ: 0 ANSI: 5 [ 1.878169] sd 2:0:0:0: Attached scsi generic sg0 type 0 [ 1.878182] sd 2:0:0:0: [sda] 488397168 512-byte logical blocks: (250 GB/232 GiB) [ 1.878256] sd 2:0:0:0: [sda] Write Protect is off [ 1.878260] sd 2:0:0:0: [sda] Mode Sense: 00 3a 00 00 [ 1.878294] sd 2:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA [ 1.878549] sda: sda1 sda2 < sda5 sda6 > sda3 [ 1.915949] sd 2:0:0:0: [sda] Attached SCSI disk [ 2.148057] usb 7-1: new full speed USB device using ohci_hcd and address 2 [ 2.351307] EXT4-fs (sda1): INFO: recovery required on readonly filesystem [ 2.351314] EXT4-fs (sda1): write access will be enabled during recovery [ 2.448024] usb 7-2: new full speed USB device using ohci_hcd and address 3 [ 2.574283] scsi 3:0:0:0: Direct-Access Generic- Multi-Card 1.00 PQ: 0 ANSI: 0 CCS [ 2.575004] sd 3:0:0:0: Attached scsi generic sg1 type 0 [ 2.579134] sd 3:0:0:0: [sdb] Attached SCSI removable disk [ 2.631207] usbcore: registered new interface driver hiddev [ 2.631271] usbcore: registered new interface driver usbhid [ 2.631274] usbhid: USB HID core driver [ 6.454351] EXT4-fs (sda1): orphan cleanup on readonly fs [ 6.454374] EXT4-fs (sda1): ext4_orphan_cleanup: deleting unreferenced inode 1569848 [ 6.454562] EXT4-fs (sda1): 1 orphan inode deleted [ 6.454569] EXT4-fs (sda1): recovery complete [ 6.752457] EXT4-fs (sda1): mounted filesystem with ordered data mode. Opts: (null) [ 8.240367] Adding 4088536k swap on /dev/sda5. Priority:-1 extents:1 across:4088536k [ 8.679290] udev: starting version 151 [ 9.119605] input: HP WMI hotkeys as /devices/virtual/input/input5 [ 9.857565] shpchp 0000:00:01.0: HPC vendor_id 1022 device_id 9602 ss_vid 1022 ss_did 9602 [ 9.857576] shpchp 0000:00:01.0: Cannot reserve MMIO region [ 9.859846] shpchp: Standard Hot Plug PCI Controller Driver version: 0.4 [ 9.924998] lirc_dev: IR Remote Control driver registered, major 61 [ 9.980294] Bluetooth: Core ver 2.15 [ 9.980458] NET: Registered protocol family 31 [ 9.980462] Bluetooth: HCI device and connection manager initialized [ 9.980470] Bluetooth: HCI socket layer initialized [ 10.254658] acpi device:03: registered as cooling_device2 [ 10.256115] input: Video Bus as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:00/LNXVIDEO:00/input/input6 [ 10.256407] ACPI: Video Device [VGA] (multi-head: yes rom: no post: no) [ 10.294822] input: Wacom ISDv4 93 Pen as /devices/pci0000:00/0000:00:14.5/usb7/7-2/7-2:1.0/input/input7 [ 10.298807] input: Wacom ISDv4 93 Finger as /devices/pci0000:00/0000:00:14.5/usb7/7-2/7-2:1.1/input/input8 [ 10.299226] usbcore: registered new interface driver wacom [ 10.299231] wacom: v1.52:USB Wacom tablet driver [ 10.318454] Linux video capture interface: v2.00 [ 10.366536] piix4_smbus 0000:00:14.0: SMBus Host Controller at 0xb00, revision 0 [ 10.448268] Linux agpgart interface v0.103 [ 10.460249] Bluetooth: Generic Bluetooth USB driver ver 0.6 [ 10.462958] usbcore: registered new interface driver btusb [ 10.564776] BUG: unable to handle kernel NULL pointer dereference at (null) [ 10.567664] IP: [] kfifo_alloc+0x26/0x90 [ 10.568531] *pde = 00000000 [ 10.568531] Oops: 0002 [#1] SMP [ 10.568531] last sysfs file: /sys/devices/pci0000:00/0000:00:14.5/usb7/7-2/7-2:1.1/uevent [ 10.574411] Modules linked in: k10temp lirc_ene0100(+) btusb agpgart i2c_piix4 joydev i2c_algo_bit videodev v4l1_compat wacom video psmouse bluetooth lirc_dev shpchp serio_raw output led_class lp(+) parport hp_wmi usbhid hid usb_storage ahci pata_atiixp ssb libahci r8169 mii [ 10.575676] [ 10.575676] Pid: 637, comm: modprobe Not tainted 2.6.35-15-generic #21-Ubuntu 30F1/HP Pavilion tx2500 Notebook PC [ 10.575676] EIP: 0060:[] EFLAGS: 00010286 CPU: 1 [ 10.575676] EIP is at kfifo_alloc+0x26/0x90 [ 10.575676] EAX: d2079000 EBX: 00001000 ECX: c0166452 EDX: c0166452 [ 10.575676] ESI: 00000000 EDI: d27add60 EBP: d209de40 ESP: d209de38 [ 10.575676] DS: 007b ES: 007b FS: 00d8 GS: 00e0 SS: 0068 [ 10.575676] Process modprobe (pid: 637, ti=d209c000 task=d21d7230 task.ti=d209c000) [ 10.575676] Stack: [ 10.575676] f6ad12a0 d26a1a00 d209de68 f803bdb7 00000020 000080d0 d209de68 f724de00 [ 10.575676] <0> fffffff4 f803bf90 f724de00 f803c3e0 d209de7c c03ca5fe f724de00 f803c400 [ 10.575676] <0> f803c400 d209dea0 c0402cc0 f724ded0 d209dea0 c0409f07 00000000 f724de00 [ 10.575676] Call Trace: [ 10.575676] [] ? ene_probe+0x157/0x30b [lirc_ene0100] [ 10.618452] cfg80211: Calling CRDA to update world regulatory domain [ 10.721481] b43-phy0: Broadcom 4312 WLAN found (core revision 15) [ 10.623751] [] ? pnp_device_probe+0x6e/0xd0 [ 10.623751] [] ? really_probe+0x50/0x150 [ 10.623751] [] ? pm_runtime_barrier+0x57/0xb0 [ 10.623751] [] ? driver_probe_device+0x3c/0x60 [ 10.623751] [] ? __driver_attach+0x81/0x90 [ 10.623751] [] ? bus_for_each_dev+0x53/0x80 [ 11.101780] Synaptics Touchpad, model: 1, fw: 6.3, id: 0x180b1, caps: 0xa04711/0xa00000/0x0 [ 11.170991] input: SynPS/2 Synaptics TouchPad as /devices/platform/i8042/serio1/input/input9 [ 11.183369] [] ? driver_attach+0x1e/0x20 [ 11.183369] [] ? __driver_attach+0x0/0x90 [ 11.183369] [] ? bus_add_driver+0xd5/0x280 [ 11.183369] [] ? pnp_device_remove+0x0/0x40 [ 11.183369] [] ? driver_register+0x6a/0x130 [ 11.183369] [] ? tracepoint_module_notify+0x27/0x30 [ 11.183369] [] ? pnp_register_driver+0x1c/0x20 [ 11.183369] [] ? ene_init+0x38/0x3a [lirc_ene0100] [ 11.183369] [] ? __blocking_notifier_call_chain+0x54/0x70 [ 11.183369] [] ? do_one_initcall+0x32/0x1a0 [ 11.183369] [] ? ene_init+0x0/0x3a [lirc_ene0100] [ 11.183369] [] ? sys_init_module+0x9b/0x1e0 [ 11.183369] [] ? sys_close+0x75/0xc0 [ 11.183369] [] ? syscall_call+0x7/0xb [ 11.183369] Code: 90 8d 74 26 00 55 89 e5 56 53 0f 1f 44 00 00 89 d3 89 c6 85 db 89 ca 8d 43 ff 74 31 85 d8 75 25 89 d8 e8 4e 60 0a 00 85 c0 74 39 <89> 06 31 c0 89 5e 04 c7 46 0c 00 00 00 00 c7 46 08 00 00 00 00 [ 11.183369] EIP: [] kfifo_alloc+0x26/0x90 SS:ESP 0068:d209de38 [ 11.183369] CR2: 0000000000000000 [ 12.260251] ---[ end trace 66b1d70e874836eb ]--- [ 12.383989] lp: driver loaded but no devices found [ 12.406257] phy0: Selected rate control algorithm 'minstrel' [ 12.407569] Registered led device: b43-phy0::tx [ 12.407603] Registered led device: b43-phy0::rx [ 12.407638] Registered led device: b43-phy0::radio [ 12.407773] Broadcom 43xx driver loaded [ Features: PL, Firmware-ID: FW13 ] [ 12.425246] uvcvideo: Found UVC 1.00 device HP Webcam (064e:a104) [ 12.444409] input: HP Webcam as /devices/pci0000:00/0000:00:13.2/usb2/2-2/2-2:1.0/input/input10 [ 12.444540] usbcore: registered new interface driver uvcvideo [ 12.444545] USB Video Class driver (v0.1.0) [ 12.792107] [drm] Initialized drm 1.1.0 20060810 [ 13.196742] type=1400 audit(1281737453.677:2): apparmor="STATUS" operation="profile_load" name="/sbin/dhclient3" pid=655 comm="apparmor_parser" [ 13.286550] cfg80211: World regulatory domain updated: [ 13.286557] (start_freq - end_freq @ bandwidth), (max_antenna_gain, max_eirp) [ 13.286564] (2402000 KHz - 2472000 KHz @ 40000 KHz), (300 mBi, 2000 mBm) [ 13.286570] (2457000 KHz - 2482000 KHz @ 20000 KHz), (300 mBi, 2000 mBm) [ 13.286576] (2474000 KHz - 2494000 KHz @ 20000 KHz), (300 mBi, 2000 mBm) [ 13.286581] (5170000 KHz - 5250000 KHz @ 40000 KHz), (300 mBi, 2000 mBm) [ 13.286586] (5735000 KHz - 5835000 KHz @ 40000 KHz), (300 mBi, 2000 mBm) [ 13.685927] type=1400 audit(1281737454.165:3): apparmor="STATUS" operation="profile_load" name="/usr/lib/NetworkManager/nm-dhcp-client.action" pid=655 comm="apparmor_parser" [ 13.834819] type=1400 audit(1281737454.313:4): apparmor="STATUS" operation="profile_load" name="/usr/lib/connman/scripts/dhclient-script" pid=655 comm="apparmor_parser" [ 14.431806] [drm] VGACON disable radeon kernel modesetting. [ 14.485443] pci 0000:01:05.0: power state changed by ACPI to D0 [ 14.538308] pci 0000:01:05.0: power state changed by ACPI to D0 [ 14.589526] pci 0000:01:05.0: PCI INT A -> GSI 18 (level, low) -> IRQ 18 [ 14.640486] pci 0000:01:05.0: setting latency timer to 64 [ 14.692770] [drm] Initialized radeon 1.33.0 20080528 for 0000:01:05.0 on minor 0 [ 15.042241] HDA Intel 0000:00:14.2: PCI INT A -> GSI 16 (level, low) -> IRQ 16 [ 15.149837] HDA Intel 0000:00:14.2: setting latency timer to 64 [ 17.291931] EXT4-fs (sda1): re-mounted. Opts: errors=remount-ro [ 17.834196] EXT4-fs (sda6): mounted filesystem with ordered data mode. Opts: (null) [ 19.011213] type=1400 audit(1281737459.489:5): apparmor="STATUS" operation="profile_replace" name="/sbin/dhclient3" pid=938 comm="apparmor_parser" [ 19.011821] type=1400 audit(1281737459.489:6): apparmor="STATUS" operation="profile_replace" name="/usr/lib/NetworkManager/nm-dhcp-client.action" pid=938 comm="apparmor_parser" [ 19.012170] type=1400 audit(1281737459.493:7): apparmor="STATUS" operation="profile_replace" name="/usr/lib/connman/scripts/dhclient-script" pid=938 comm="apparmor_parser" [ 19.120967] type=1400 audit(1281737459.601:8): apparmor="STATUS" operation="profile_load" name="/usr/share/gdm/guest-session/Xsession" pid=937 comm="apparmor_parser" [ 19.147981] type=1400 audit(1281737459.625:9): apparmor="STATUS" operation="profile_load" name="/usr/bin/evince" pid=939 comm="apparmor_parser" [ 19.155832] type=1400 audit(1281737459.633:10): apparmor="STATUS" operation="profile_load" name="/usr/bin/evince-previewer" pid=939 comm="apparmor_parser" [ 19.160979] type=1400 audit(1281737459.641:11): apparmor="STATUS" operation="profile_load" name="/usr/bin/evince-thumbnailer" pid=939 comm="apparmor_parser" [ 19.192170] type=1400 audit(1281737459.673:12): apparmor="STATUS" operation="profile_load" name="/usr/lib/cups/backend/cups-pdf" pid=944 comm="apparmor_parser" [ 19.193022] type=1400 audit(1281737459.673:13): apparmor="STATUS" operation="profile_load" name="/usr/sbin/cupsd" pid=944 comm="apparmor_parser" [ 19.209101] type=1400 audit(1281737459.689:14): apparmor="STATUS" operation="profile_load" name="/usr/sbin/tcpdump" pid=945 comm="apparmor_parser" [ 20.596277] b43-phy0: Loading firmware version 410.2160 (2007-05-26 15:32:10) Bug: 621651 [ 0.000000] Initializing cgroup subsys cpuset [ 0.000000] Initializing cgroup subsys cpu [ 0.000000] Linux version 2.6.35-17-generic (buildd@rothera) (gcc version 4.4.5 20100816 (prerelease) (Ubuntu/Linaro 4.4.4-9ubuntu1) ) #23-Ubuntu SMP Fri Aug 20 01:22:20 UTC 2010 (Ubuntu 2.6.35-17.23-generic 2.6.35.2) [ 0.000000] BIOS-provided physical RAM map: [ 0.000000] BIOS-e820: 0000000000000000 - 000000000009fc00 (usable) [ 0.000000] BIOS-e820: 000000000009fc00 - 00000000000a0000 (reserved) [ 0.000000] BIOS-e820: 00000000000e0000 - 0000000000100000 (reserved) [ 0.000000] BIOS-e820: 0000000000100000 - 00000000bf4fe000 (usable) [ 0.000000] BIOS-e820: 00000000bf4fe000 - 00000000bf509000 (reserved) [ 0.000000] BIOS-e820: 00000000bf509000 - 00000000bf552000 (usable) [ 0.000000] BIOS-e820: 00000000bf552000 - 00000000bf555000 (reserved) [ 0.000000] BIOS-e820: 00000000bf555000 - 00000000bf5bb000 (usable) [ 0.000000] BIOS-e820: 00000000bf5bb000 - 00000000bf5bf000 (reserved) [ 0.000000] BIOS-e820: 00000000bf5bf000 - 00000000bf670000 (usable) [ 0.000000] BIOS-e820: 00000000bf670000 - 00000000bf6bf000 (ACPI NVS) [ 0.000000] BIOS-e820: 00000000bf6bf000 - 00000000bf700000 (ACPI data) [ 0.000000] BIOS-e820: 00000000bf700000 - 00000000c0000000 (reserved) [ 0.000000] BIOS-e820: 00000000e0000000 - 00000000f0000000 (reserved) [ 0.000000] BIOS-e820: 00000000fec00000 - 00000000fec01000 (reserved) [ 0.000000] BIOS-e820: 00000000fed14000 - 00000000fed1a000 (reserved) [ 0.000000] BIOS-e820: 00000000fed1c000 - 00000000fed20000 (reserved) [ 0.000000] BIOS-e820: 00000000fee00000 - 00000000fee01000 (reserved) [ 0.000000] BIOS-e820: 00000000fff00000 - 0000000100000000 (reserved) [ 0.000000] Notice: NX (Execute Disable) protection cannot be enabled: non-PAE kernel! [ 0.000000] DMI 2.4 present. [ 0.000000] e820 update range: 0000000000000000 - 0000000000001000 (usable) ==> (reserved) [ 0.000000] e820 remove range: 00000000000a0000 - 0000000000100000 (usable) [ 0.000000] last_pfn = 0xbf670 max_arch_pfn = 0x100000 [ 0.000000] MTRR default type: uncachable [ 0.000000] MTRR fixed ranges enabled: [ 0.000000] 00000-9FFFF write-back [ 0.000000] A0000-BFFFF uncachable [ 0.000000] C0000-FFFFF write-protect [ 0.000000] MTRR variable ranges enabled: [ 0.000000] 0 base 0FFFE0000 mask FFFFE0000 write-protect [ 0.000000] 1 base 000000000 mask F80000000 write-back [ 0.000000] 2 base 080000000 mask FC0000000 write-back [ 0.000000] 3 base 0BF800000 mask FFF800000 uncachable [ 0.000000] 4 base 0BF700000 mask FFFF00000 uncachable [ 0.000000] 5 disabled [ 0.000000] 6 disabled [ 0.000000] 7 disabled [ 0.000000] x86 PAT enabled: cpu 0, old 0x7040600070406, new 0x7010600070106 [ 0.000000] e820 update range: 0000000000002000 - 0000000000010000 (usable) ==> (reserved) [ 0.000000] Scanning 1 areas for low memory corruption [ 0.000000] modified physical RAM map: [ 0.000000] modified: 0000000000000000 - 0000000000001000 (reserved) [ 0.000000] modified: 0000000000001000 - 0000000000002000 (usable) [ 0.000000] modified: 0000000000002000 - 0000000000010000 (reserved) [ 0.000000] modified: 0000000000010000 - 000000000009fc00 (usable) [ 0.000000] modified: 000000000009fc00 - 00000000000a0000 (reserved) [ 0.000000] modified: 00000000000e0000 - 0000000000100000 (reserved) [ 0.000000] modified: 0000000000100000 - 00000000bf4fe000 (usable) [ 0.000000] modified: 00000000bf4fe000 - 00000000bf509000 (reserved) [ 0.000000] modified: 00000000bf509000 - 00000000bf552000 (usable) [ 0.000000] modified: 00000000bf552000 - 00000000bf555000 (reserved) [ 0.000000] modified: 00000000bf555000 - 00000000bf5bb000 (usable) [ 0.000000] modified: 00000000bf5bb000 - 00000000bf5bf000 (reserved) [ 0.000000] modified: 00000000bf5bf000 - 00000000bf670000 (usable) [ 0.000000] modified: 00000000bf670000 - 00000000bf6bf000 (ACPI NVS) [ 0.000000] modified: 00000000bf6bf000 - 00000000bf700000 (ACPI data) [ 0.000000] modified: 00000000bf700000 - 00000000c0000000 (reserved) [ 0.000000] modified: 00000000e0000000 - 00000000f0000000 (reserved) [ 0.000000] modified: 00000000fec00000 - 00000000fec01000 (reserved) [ 0.000000] modified: 00000000fed14000 - 00000000fed1a000 (reserved) [ 0.000000] modified: 00000000fed1c000 - 00000000fed20000 (reserved) [ 0.000000] modified: 00000000fee00000 - 00000000fee01000 (reserved) [ 0.000000] modified: 00000000fff00000 - 0000000100000000 (reserved) [ 0.000000] initial memory mapped : 0 - 00c00000 [ 0.000000] found SMP MP-table at [c00fe1b0] fe1b0 [ 0.000000] init_memory_mapping: 0000000000000000-00000000377fe000 [ 0.000000] 0000000000 - 0000400000 page 4k [ 0.000000] 0000400000 - 0037400000 page 2M [ 0.000000] 0037400000 - 00377fe000 page 4k [ 0.000000] kernel direct mapping tables up to 377fe000 @ 15000-1a000 [ 0.000000] RAMDISK: 375ad000 - 37ff0000 [ 0.000000] Allocated new RAMDISK: 009a0000 - 013e213c [ 0.000000] Move RAMDISK from 00000000375ad000 - 0000000037fef13b to 009a0000 - 013e213b [ 0.000000] ACPI: RSDP 000fe020 00024 (v02 ACRSYS) [ 0.000000] ACPI: XSDT bf6fe120 00064 (v01 ACRSYS ACRPRDCT 00000001 01000013) [ 0.000000] ACPI: FACP bf6fd000 000F4 (v04 ACRSYS ACRPRDCT 00000001 MSFT 01000013) [ 0.000000] ACPI: DSDT bf6f4000 08941 (v01 ACRSYS ACRPRDCT 00000001 MSFT 01000013) [ 0.000000] ACPI: FACS bf675000 00040 [ 0.000000] ACPI: APIC bf6f3000 00068 (v02 ACRSYS ACRPRDCT 00000001 MSFT 01000013) [ 0.000000] ACPI: MCFG bf6f2000 0003C (v01 ACRSYS ACRPRDCT 00000001 MSFT 01000013) [ 0.000000] ACPI: SLIC bf6f1000 00176 (v01 ACRSYS ACRPRDCT 00000001 MSFT 01000013) [ 0.000000] ACPI: HPET bf6f0000 00038 (v01 ACRSYS ACRPRDCT 00000001 MSFT 01000013) [ 0.000000] ACPI: SSDT bf6ef000 004C4 (v01 PmRef CpuPm 00003000 INTL 20051117) [ 0.000000] ACPI: SSDT bf6ee000 00232 (v01 PmRef Cpu0Tst 00003000 INTL 20051117) [ 0.000000] ACPI: SSDT bf6ed000 000A0 (v01 PmRef Cpu1Tst 00003000 INTL 20051117) [ 0.000000] ACPI: Local APIC address 0xfee00000 [ 0.000000] 2174MB HIGHMEM available. [ 0.000000] 887MB LOWMEM available. [ 0.000000] mapped low ram: 0 - 377fe000 [ 0.000000] low ram: 0 - 377fe000 [ 0.000000] Zone PFN ranges: [ 0.000000] DMA 0x00000001 -> 0x00001000 [ 0.000000] Normal 0x00001000 -> 0x000377fe [ 0.000000] HighMem 0x000377fe -> 0x000bf670 [ 0.000000] Movable zone start PFN for each node [ 0.000000] early_node_map[6] active PFN ranges [ 0.000000] 0: 0x00000001 -> 0x00000002 [ 0.000000] 0: 0x00000010 -> 0x0000009f [ 0.000000] 0: 0x00000100 -> 0x000bf4fe [ 0.000000] 0: 0x000bf509 -> 0x000bf552 [ 0.000000] 0: 0x000bf555 -> 0x000bf5bb [ 0.000000] 0: 0x000bf5bf -> 0x000bf670 [ 0.000000] On node 0 totalpages: 783854 [ 0.000000] free_area_init_node: node 0, pgdat c07fb680, node_mem_map c13e4020 [ 0.000000] DMA zone: 32 pages used for memmap [ 0.000000] DMA zone: 0 pages reserved [ 0.000000] DMA zone: 3952 pages, LIFO batch:0 [ 0.000000] Normal zone: 1744 pages used for memmap [ 0.000000] Normal zone: 221486 pages, LIFO batch:31 [ 0.000000] HighMem zone: 4349 pages used for memmap [ 0.000000] HighMem zone: 552291 pages, LIFO batch:31 [ 0.000000] Using APIC driver default [ 0.000000] ACPI: PM-Timer IO Port: 0x408 [ 0.000000] ACPI: Local APIC address 0xfee00000 [ 0.000000] ACPI: LAPIC (acpi_id[0x01] lapic_id[0x00] enabled) [ 0.000000] ACPI: LAPIC (acpi_id[0x02] lapic_id[0x01] enabled) [ 0.000000] ACPI: LAPIC_NMI (acpi_id[0x01] high edge lint[0x1]) [ 0.000000] ACPI: LAPIC_NMI (acpi_id[0x02] high edge lint[0x1]) [ 0.000000] ACPI: IOAPIC (id[0x04] address[0xfec00000] gsi_base[0]) [ 0.000000] IOAPIC[0]: apic_id 4, version 32, address 0xfec00000, GSI 0-23 [ 0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 0 global_irq 2 dfl dfl) [ 0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 9 global_irq 9 high level) [ 0.000000] ACPI: IRQ0 used by override. [ 0.000000] ACPI: IRQ2 used by override. [ 0.000000] ACPI: IRQ9 used by override. [ 0.000000] Using ACPI (MADT) for SMP configuration information [ 0.000000] ACPI: HPET id: 0x8086a201 base: 0xfed00000 [ 0.000000] SMP: Allowing 2 CPUs, 0 hotplug CPUs [ 0.000000] nr_irqs_gsi: 40 [ 0.000000] early_res array is doubled to 64 at [16000 - 167ff] [ 0.000000] PM: Registered nosave memory: 0000000000002000 - 0000000000010000 [ 0.000000] PM: Registered nosave memory: 000000000009f000 - 00000000000a0000 [ 0.000000] PM: Registered nosave memory: 00000000000a0000 - 00000000000e0000 [ 0.000000] PM: Registered nosave memory: 00000000000e0000 - 0000000000100000 [ 0.000000] Allocating PCI resources starting at c0000000 (gap: c0000000:20000000) [ 0.000000] Booting paravirtualized kernel on bare hardware [ 0.000000] setup_percpu: NR_CPUS:8 nr_cpumask_bits:8 nr_cpu_ids:2 nr_node_ids:1 [ 0.000000] PERCPU: Embedded 14 pages/cpu @c2c00000 s36352 r0 d20992 u2097152 [ 0.000000] pcpu-alloc: s36352 r0 d20992 u2097152 alloc=1*4194304 [ 0.000000] pcpu-alloc: [0] 0 1 [ 0.000000] early_res array is doubled to 128 at [16800 - 177ff] [ 0.000000] Built 1 zonelists in Zone order, mobility grouping on. Total pages: 777729 [ 0.000000] Kernel command line: root=UUID=5630b9ad-fd98-4d9b-b2a4-ef311212cbe5 ro quiet splash [ 0.000000] PID hash table entries: 4096 (order: 2, 16384 bytes) [ 0.000000] Dentry cache hash table entries: 131072 (order: 7, 524288 bytes) [ 0.000000] Inode-cache hash table entries: 65536 (order: 6, 262144 bytes) [ 0.000000] Enabling fast FPU save and restore... done. [ 0.000000] Enabling unmasked SIMD FPU exception support... done. [ 0.000000] Initializing CPU#0 [ 0.000000] allocated 15679660 bytes of page_cgroup [ 0.000000] please try 'cgroup_disable=memory' option if you don't want memory cgroups [ 0.000000] Subtract (59 early reservations) [ 0.000000] #1 [0000001000 - 0000002000] EX TRAMPOLINE [ 0.000000] #2 [0000100000 - 000099badc] TEXT DATA BSS [ 0.000000] #3 [000099c000 - 000099f19c] BRK [ 0.000000] #4 [000009fc00 - 00000fe1b0] BIOS reserved [ 0.000000] #5 [00000fe1b0 - 00000fe1c0] MP-table mpf [ 0.000000] #6 [00000fe1c0 - 00000feab0] BIOS reserved [ 0.000000] #7 [00000febf8 - 0000100000] BIOS reserved [ 0.000000] #8 [00000feab0 - 00000febf8] MP-table mpc [ 0.000000] #9 [0000010000 - 0000011000] TRAMPOLINE [ 0.000000] #10 [0000011000 - 0000015000] ACPI WAKEUP [ 0.000000] #11 [0000015000 - 0000016000] PGTABLE [ 0.000000] #12 [00009a0000 - 00013e3000] NEW RAMDISK [ 0.000000] #13 [00013e3000 - 00013e4000] BOOTMEM [ 0.000000] #14 [00013e4000 - 0002bd4000] BOOTMEM [ 0.000000] #15 [0002bd4000 - 0002bd4004] BOOTMEM [ 0.000000] #16 [0002bd4040 - 0002bd4100] BOOTMEM [ 0.000000] #17 [0002bd4100 - 0002bd4154] BOOTMEM [ 0.000000] #18 [0002bd4180 - 0002bd7180] BOOTMEM [ 0.000000] #19 [0002bd7180 - 0002bd724c] BOOTMEM [ 0.000000] #20 [0002bd7280 - 0002be3280] BOOTMEM [ 0.000000] #21 [0002be3280 - 0002be32a5] BOOTMEM [ 0.000000] #22 [0002be32c0 - 0002be32e7] BOOTMEM [ 0.000000] #23 [0002be3300 - 0002be3568] BOOTMEM [ 0.000000] #24 [0002be3580 - 0002be35c0] BOOTMEM [ 0.000000] #25 [0002be35c0 - 0002be3600] BOOTMEM [ 0.000000] #26 [0002be3600 - 0002be3640] BOOTMEM [ 0.000000] #27 [0002be3640 - 0002be3680] BOOTMEM [ 0.000000] #28 [0002be3680 - 0002be36c0] BOOTMEM [ 0.000000] #29 [0002be36c0 - 0002be3700] BOOTMEM [ 0.000000] #30 [0002be3700 - 0002be3740] BOOTMEM [ 0.000000] #31 [0002be3740 - 0002be3780] BOOTMEM [ 0.000000] #32 [0002be3780 - 0002be37c0] BOOTMEM [ 0.000000] #33 [0002be37c0 - 0002be3800] BOOTMEM [ 0.000000] #34 [0002be3800 - 0002be3840] BOOTMEM [ 0.000000] #35 [0002be3840 - 0002be3880] BOOTMEM [ 0.000000] #36 [0002be3880 - 0002be38c0] BOOTMEM [ 0.000000] #37 [0002be38c0 - 0002be3900] BOOTMEM [ 0.000000] #38 [0002be3900 - 0002be3940] BOOTMEM [ 0.000000] #39 [0002be3940 - 0002be3980] BOOTMEM [ 0.000000] #40 [0002be3980 - 0002be39c0] BOOTMEM [ 0.000000] #41 [0002be39c0 - 0002be3a00] BOOTMEM [ 0.000000] #42 [0002be3a00 - 0002be3a40] BOOTMEM [ 0.000000] #43 [0002be3a40 - 0002be3a50] BOOTMEM [ 0.000000] #44 [0002be3a80 - 0002be3a90] BOOTMEM [ 0.000000] #45 [0002be3ac0 - 0002be3b00] BOOTMEM [ 0.000000] #46 [0002be3b00 - 0002be3b40] BOOTMEM [ 0.000000] #47 [0002c00000 - 0002c0e000] BOOTMEM [ 0.000000] #48 [0002e00000 - 0002e0e000] BOOTMEM [ 0.000000] #49 [0002be5b40 - 0002be5b44] BOOTMEM [ 0.000000] #50 [0002be5b80 - 0002be5b84] BOOTMEM [ 0.000000] #51 [0002be5bc0 - 0002be5bc8] BOOTMEM [ 0.000000] #52 [0002be5c00 - 0002be5c08] BOOTMEM [ 0.000000] #53 [0002be5c40 - 0002be5ce8] BOOTMEM [ 0.000000] #54 [0002be5d00 - 0002be5d68] BOOTMEM [ 0.000000] #55 [0002be5d80 - 0002be9d80] BOOTMEM [ 0.000000] #56 [0002c0e000 - 0002c8e000] BOOTMEM [ 0.000000] #57 [0002c8e000 - 0002cce000] BOOTMEM [ 0.000000] #58 [0002e0e000 - 0003d020ac] BOOTMEM [ 0.000000] Initializing HighMem for node 0 (000377fe:000bf670) [ 0.000000] Memory: 3075252k/3135936k available (4922k kernel code, 60164k reserved, 2325k data, 684k init, 2226560k highmem) [ 0.000000] virtual kernel memory layout: [ 0.000000] fixmap : 0xfff16000 - 0xfffff000 ( 932 kB) [ 0.000000] pkmap : 0xff800000 - 0xffc00000 (4096 kB) [ 0.000000] vmalloc : 0xf7ffe000 - 0xff7fe000 ( 120 MB) [ 0.000000] lowmem : 0xc0000000 - 0xf77fe000 ( 887 MB) [ 0.000000] .init : 0xc0814000 - 0xc08bf000 ( 684 kB) [ 0.000000] .data : 0xc05ceabe - 0xc0813fa8 (2325 kB) [ 0.000000] .text : 0xc0100000 - 0xc05ceabe (4922 kB) [ 0.000000] Checking if this processor honours the WP bit even in supervisor mode...Ok. [ 0.000000] SLUB: Genslabs=13, HWalign=64, Order=0-3, MinObjects=0, CPUs=2, Nodes=1 [ 0.000000] Hierarchical RCU implementation. [ 0.000000] RCU dyntick-idle grace-period acceleration is enabled. [ 0.000000] RCU-based detection of stalled CPUs is disabled. [ 0.000000] Verbose stalled-CPUs detection is disabled. [ 0.000000] NR_IRQS:2304 nr_irqs:512 [ 0.000000] Console: colour VGA+ 80x25 [ 0.000000] console [tty0] enabled [ 0.000000] hpet clockevent registered [ 0.000000] Fast TSC calibration using PIT [ 0.000000] Detected 1729.041 MHz processor. [ 0.004008] Calibrating delay loop (skipped), value calculated using timer frequency.. 3458.08 BogoMIPS (lpj=6916164) [ 0.004014] pid_max: default: 32768 minimum: 301 [ 0.004037] Security Framework initialized [ 0.008009] AppArmor: AppArmor initialized [ 0.008011] Yama: becoming mindful. [ 0.008078] Mount-cache hash table entries: 512 [ 0.008239] Initializing cgroup subsys ns [ 0.008244] Initializing cgroup subsys cpuacct [ 0.008250] Initializing cgroup subsys memory [ 0.008260] Initializing cgroup subsys devices [ 0.008263] Initializing cgroup subsys freezer [ 0.008266] Initializing cgroup subsys net_cls [ 0.008299] CPU: Physical Processor ID: 0 [ 0.008301] CPU: Processor Core ID: 0 [ 0.008304] mce: CPU supports 6 MCE banks [ 0.008315] CPU0: Thermal monitoring enabled (TM1) [ 0.008319] using mwait in idle threads. [ 0.008329] Performance Events: PEBS fmt0+, Core2 events, Intel PMU driver. [ 0.008336] PEBS disabled due to CPU errata. [ 0.008344] ... version: 2 [ 0.008347] ... bit width: 40 [ 0.008349] ... generic registers: 2 [ 0.008351] ... value mask: 000000ffffffffff [ 0.008353] ... max period: 000000007fffffff [ 0.008356] ... fixed-purpose events: 3 [ 0.008358] ... event mask: 0000000700000003 [ 0.011679] ACPI: Core revision 20100428 [ 0.028016] ftrace: converting mcount calls to 0f 1f 44 00 00 [ 0.028022] ftrace: allocating 21727 entries in 43 pages [ 0.032068] Enabling APIC mode: Flat. Using 1 I/O APICs [ 0.032481] ..TIMER: vector=0x30 apic1=0 pin1=2 apic2=-1 pin2=-1 [ 0.072757] CPU0: Intel(R) Pentium(R) Dual CPU T2370 @ 1.73GHz stepping 0d [ 0.076000] Booting Node 0, Processors #1 Ok. [ 0.008000] Initializing CPU#1 [ 0.164018] Brought up 2 CPUs [ 0.164022] Total of 2 processors activated (6916.03 BogoMIPS). [ 0.164501] devtmpfs: initialized [ 0.165196] regulator: core version 0.5 [ 0.165235] Time: 8:21:31 Date: 08/21/10 [ 0.165283] NET: Registered protocol family 16 [ 0.165312] Trying to unpack rootfs image as initramfs... [ 0.165442] EISA bus registered [ 0.165452] ACPI: bus type pci registered [ 0.165552] PCI: MMCONFIG for domain 0000 [bus 00-ff] at [mem 0xe0000000-0xefffffff] (base 0xe0000000) [ 0.165557] PCI: MMCONFIG at [mem 0xe0000000-0xefffffff] reserved in E820 [ 0.165559] PCI: Using MMCONFIG for extended config space [ 0.165562] PCI: Using configuration type 1 for base access [ 0.172105] bio: create slab at 0 [ 0.174856] ACPI: EC: Look up EC in DSDT [ 0.180948] ACPI: BIOS _OSI(Linux) query ignored [ 0.192764] ACPI: SSDT bf674c90 0022C (v01 PmRef Cpu0Ist 00003000 INTL 20051117) [ 0.193031] ACPI: Dynamic OEM Table Load: [ 0.193036] ACPI: SSDT (null) 0022C (v01 PmRef Cpu0Ist 00003000 INTL 20051117) [ 0.193438] ACPI: SSDT bf673610 005D7 (v01 PmRef Cpu0Cst 00003001 INTL 20051117) [ 0.194166] ACPI: Dynamic OEM Table Load: [ 0.194171] ACPI: SSDT (null) 005D7 (v01 PmRef Cpu0Cst 00003001 INTL 20051117) [ 0.194726] ACPI: SSDT bf674f10 000C4 (v01 PmRef Cpu1Ist 00003000 INTL 20051117) [ 0.196363] ACPI: Dynamic OEM Table Load: [ 0.196368] ACPI: SSDT (null) 000C4 (v01 PmRef Cpu1Ist 00003000 INTL 20051117) [ 0.196571] ACPI: SSDT bf676d10 00083 (v01 PmRef Cpu1Cst 00003000 INTL 20051117) [ 0.197300] ACPI: Dynamic OEM Table Load: [ 0.197304] ACPI: SSDT (null) 00083 (v01 PmRef Cpu1Cst 00003000 INTL 20051117) [ 0.204235] ACPI: Interpreter enabled [ 0.204241] ACPI: (supports S0 S3 S4 S5) [ 0.204280] ACPI: Using IOAPIC for interrupt routing [ 0.254465] ACPI: EC: GPE = 0x1c, I/O: command/status = 0x66, data = 0x62 [ 0.254927] ACPI: No dock devices found. [ 0.254933] PCI: Using host bridge windows from ACPI; if necessary, use "pci=nocrs" and report a bug [ 0.255760] ACPI Warning for \_SB_.PCI0._OSC: Parameter count mismatch - ASL declared 5, ACPI requires 4 (20100428/nspredef-352) [ 0.255772] \_SB_.PCI0:_OSC evaluation returned wrong type [ 0.255774] _OSC request data:1 8 1f [ 0.255782] ACPI: PCI Root Bridge [PCI0] (domain 0000 [bus 00-ff]) [ 0.257169] pci_root PNP0A08:00: host bridge window [io 0x0000-0x0cf7] [ 0.257174] pci_root PNP0A08:00: host bridge window [io 0x0d00-0xffff] [ 0.257178] pci_root PNP0A08:00: host bridge window [mem 0x000a0000-0x000bffff] [ 0.257183] pci_root PNP0A08:00: host bridge window [mem 0xc0000000-0xfebfffff] [ 0.257279] pci 0000:00:02.0: reg 10: [mem 0xd4000000-0xd40fffff 64bit] [ 0.257289] pci 0000:00:02.0: reg 18: [mem 0xc0000000-0xcfffffff 64bit pref] [ 0.257296] pci 0000:00:02.0: reg 20: [io 0x5110-0x5117] [ 0.257349] pci 0000:00:02.1: reg 10: [mem 0x00000000-0x000fffff 64bit] [ 0.257612] pci 0000:00:1a.0: reg 20: [io 0x50c0-0x50df] [ 0.257781] pci 0000:00:1a.1: reg 20: [io 0x50a0-0x50bf] [ 0.257946] pci 0000:00:1a.7: reg 10: [mem 0xd8404c00-0xd8404fff] [ 0.258118] pci 0000:00:1a.7: PME# supported from D0 D3hot D3cold [ 0.258131] pci 0000:00:1a.7: PME# disabled [ 0.258247] pci 0000:00:1b.0: reg 10: [mem 0xd8400000-0xd8403fff 64bit] [ 0.258414] pci 0000:00:1b.0: PME# supported from D0 D3hot D3cold [ 0.258426] pci 0000:00:1b.0: PME# disabled [ 0.258691] pci 0000:00:1c.0: PME# supported from D0 D3hot D3cold [ 0.258702] pci 0000:00:1c.0: PME# disabled [ 0.258975] pci 0000:00:1c.1: PME# supported from D0 D3hot D3cold [ 0.258986] pci 0000:00:1c.1: PME# disabled [ 0.259259] pci 0000:00:1c.2: PME# supported from D0 D3hot D3cold [ 0.259270] pci 0000:00:1c.2: PME# disabled [ 0.259546] pci 0000:00:1c.3: PME# supported from D0 D3hot D3cold [ 0.259557] pci 0000:00:1c.3: PME# disabled [ 0.259733] pci 0000:00:1d.0: reg 20: [io 0x5080-0x509f] [ 0.259902] pci 0000:00:1d.1: reg 20: [io 0x5060-0x507f] [ 0.260080] pci 0000:00:1d.2: reg 20: [io 0x5040-0x505f] [ 0.260247] pci 0000:00:1d.7: reg 10: [mem 0xd8404800-0xd8404bff] [ 0.260418] pci 0000:00:1d.7: PME# supported from D0 D3hot D3cold [ 0.260429] pci 0000:00:1d.7: PME# disabled [ 0.260822] pci 0000:00:1f.0: quirk: [io 0x0400-0x047f] claimed by ICH6 ACPI/GPIO/TCO [ 0.260830] pci 0000:00:1f.0: quirk: [io 0x0500-0x053f] claimed by ICH6 GPIO [ 0.260843] pci 0000:00:1f.0: ICH7 LPC Generic IO decode 2 PIO at ff2c (mask 0003) [ 0.260850] pci 0000:00:1f.0: ICH7 LPC Generic IO decode 3 PIO at 0068 (mask 0007) [ 0.260971] pci 0000:00:1f.1: reg 10: [io 0x5108-0x510f] [ 0.260989] pci 0000:00:1f.1: reg 14: [io 0x5124-0x5127] [ 0.261007] pci 0000:00:1f.1: reg 18: [io 0x5100-0x5107] [ 0.261026] pci 0000:00:1f.1: reg 1c: [io 0x5120-0x5123] [ 0.261044] pci 0000:00:1f.1: reg 20: [io 0x50e0-0x50ef] [ 0.261209] pci 0000:00:1f.2: reg 10: [io 0x50f8-0x50ff] [ 0.261228] pci 0000:00:1f.2: reg 14: [io 0x511c-0x511f] [ 0.261247] pci 0000:00:1f.2: reg 18: [io 0x50f0-0x50f7] [ 0.261265] pci 0000:00:1f.2: reg 1c: [io 0x5118-0x511b] [ 0.261284] pci 0000:00:1f.2: reg 20: [io 0x5020-0x503f] [ 0.261302] pci 0000:00:1f.2: reg 24: [mem 0xd8404000-0xd84047ff] [ 0.261417] pci 0000:00:1f.2: PME# supported from D3hot [ 0.261427] pci 0000:00:1f.2: PME# disabled [ 0.261508] pci 0000:00:1f.3: reg 10: [mem 0xd8405000-0xd84050ff] [ 0.261574] pci 0000:00:1f.3: reg 20: [io 0x5000-0x501f] [ 0.261814] pci 0000:00:1c.0: PCI bridge to [bus 02-02] [ 0.261825] pci 0000:00:1c.0: bridge window [io 0x4000-0x4fff] [ 0.261836] pci 0000:00:1c.0: bridge window [mem 0xd7400000-0xd83fffff] [ 0.261854] pci 0000:00:1c.0: bridge window [mem 0xd0000000-0xd0ffffff 64bit pref] [ 0.262016] pci 0000:00:1c.1: PCI bridge to [bus 04-04] [ 0.262026] pci 0000:00:1c.1: bridge window [io 0x3000-0x3fff] [ 0.262037] pci 0000:00:1c.1: bridge window [mem 0xd6400000-0xd73fffff] [ 0.262056] pci 0000:00:1c.1: bridge window [mem 0xd1000000-0xd1ffffff 64bit pref] [ 0.262380] pci 0000:05:00.0: reg 10: [mem 0xd5300000-0xd530ffff 64bit] [ 0.262614] pci 0000:05:00.0: PME# supported from D3hot D3cold [ 0.262628] pci 0000:05:00.0: PME# disabled [ 0.268095] pci 0000:00:1c.2: PCI bridge to [bus 05-05] [ 0.268108] pci 0000:00:1c.2: bridge window [io 0x2000-0x2fff] [ 0.268118] pci 0000:00:1c.2: bridge window [mem 0xd5300000-0xd63fffff] [ 0.268136] pci 0000:00:1c.2: bridge window [mem 0xd2000000-0xd2ffffff 64bit pref] [ 0.268451] pci 0000:06:00.0: reg 10: [mem 0xd4200000-0xd4203fff 64bit] [ 0.268674] pci 0000:06:00.0: supports D1 D2 [ 0.268676] pci 0000:06:00.0: PME# supported from D0 D3hot D3cold [ 0.268688] pci 0000:06:00.0: PME# disabled [ 0.268868] pci 0000:00:1c.3: PCI bridge to [bus 06-06] [ 0.268879] pci 0000:00:1c.3: bridge window [io 0x1000-0x1fff] [ 0.268889] pci 0000:00:1c.3: bridge window [mem 0xd4200000-0xd52fffff] [ 0.268908] pci 0000:00:1c.3: bridge window [mem 0xd3000000-0xd3ffffff 64bit pref] [ 0.269071] pci 0000:07:00.0: reg 10: [mem 0xd4100000-0xd41007ff] [ 0.269224] pci 0000:07:00.0: supports D1 D2 [ 0.269227] pci 0000:07:00.0: PME# supported from D0 D1 D2 D3hot D3cold [ 0.269237] pci 0000:07:00.0: PME# disabled [ 0.269324] pci 0000:07:00.1: reg 10: [mem 0xd4100a00-0xd4100aff] [ 0.269481] pci 0000:07:00.1: supports D1 D2 [ 0.269484] pci 0000:07:00.1: PME# supported from D0 D1 D2 D3hot D3cold [ 0.269494] pci 0000:07:00.1: PME# disabled [ 0.269584] pci 0000:07:00.2: reg 10: [mem 0xd4100900-0xd41009ff] [ 0.269738] pci 0000:07:00.2: supports D1 D2 [ 0.269740] pci 0000:07:00.2: PME# supported from D0 D1 D2 D3hot D3cold [ 0.269750] pci 0000:07:00.2: PME# disabled [ 0.269840] pci 0000:07:00.3: reg 10: [mem 0xd4100800-0xd41008ff] [ 0.269991] pci 0000:07:00.3: supports D1 D2 [ 0.269994] pci 0000:07:00.3: PME# supported from D0 D1 D2 D3hot D3cold [ 0.270004] pci 0000:07:00.3: PME# disabled [ 0.270173] pci 0000:00:1e.0: PCI bridge to [bus 07-07] (subtractive decode) [ 0.270184] pci 0000:00:1e.0: bridge window [io 0xf000-0x0000] (disabled) [ 0.270195] pci 0000:00:1e.0: bridge window [mem 0xd4100000-0xd41fffff] [ 0.270214] pci 0000:00:1e.0: bridge window [mem 0xfff00000-0x000fffff pref] (disabled) [ 0.270218] pci 0000:00:1e.0: bridge window [io 0x0000-0x0cf7] (subtractive decode) [ 0.270222] pci 0000:00:1e.0: bridge window [io 0x0d00-0xffff] (subtractive decode) [ 0.270225] pci 0000:00:1e.0: bridge window [mem 0x000a0000-0x000bffff] (subtractive decode) [ 0.270228] pci 0000:00:1e.0: bridge window [mem 0xc0000000-0xfebfffff] (subtractive decode) [ 0.270317] pci_bus 0000:00: on NUMA node 0 [ 0.270334] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0._PRT] [ 0.270668] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.P32_._PRT] [ 0.270844] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.EXP2._PRT] [ 0.270964] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.EXP3._PRT] [ 0.271082] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.EXP4._PRT] [ 0.271383] ACPI Warning for \_SB_.PCI0._OSC: Parameter count mismatch - ASL declared 5, ACPI requires 4 (20100428/nspredef-352) [ 0.271394] \_SB_.PCI0:_OSC evaluation returned wrong type [ 0.271397] _OSC request data:1 1f 1f [ 0.284453] ACPI: PCI Interrupt Link [LNKA] (IRQs 3 4 5 7 9 10 *11 12) [ 0.284631] ACPI: PCI Interrupt Link [LNKB] (IRQs 3 4 5 7 9 10 *11 12) [ 0.284803] ACPI: PCI Interrupt Link [LNKC] (IRQs 3 4 5 7 9 10 *11 12) [ 0.284971] ACPI: PCI Interrupt Link [LNKD] (IRQs 3 4 5 7 9 10 *11 12) [ 0.285140] ACPI: PCI Interrupt Link [LNKE] (IRQs 3 4 5 7 9 10 11 12) *0, disabled. [ 0.285309] ACPI: PCI Interrupt Link [LNKF] (IRQs 3 4 5 7 9 *10 11 12) [ 0.285478] ACPI: PCI Interrupt Link [LNKG] (IRQs 3 4 5 7 9 10 *11 12) [ 0.285645] ACPI: PCI Interrupt Link [LNKH] (IRQs 3 4 5 7 9 10 *11 12) [ 0.285739] HEST: Table is not found! [ 0.285839] vgaarb: device added: PCI:0000:00:02.0,decodes=io+mem,owns=io+mem,locks=none [ 0.285867] vgaarb: loaded [ 0.286087] SCSI subsystem initialized [ 0.286196] libata version 3.00 loaded. [ 0.286270] usbcore: registered new interface driver usbfs [ 0.286287] usbcore: registered new interface driver hub [ 0.286320] usbcore: registered new device driver usb [ 0.286930] ACPI: WMI: Mapper loaded [ 0.286933] PCI: Using ACPI for IRQ routing [ 0.286937] PCI: pci_cache_line_size set to 64 bytes [ 0.287345] reserve RAM buffer: 0000000000002000 - 000000000000ffff [ 0.287348] reserve RAM buffer: 000000000009fc00 - 000000000009ffff [ 0.287352] reserve RAM buffer: 00000000bf4fe000 - 00000000bfffffff [ 0.287356] reserve RAM buffer: 00000000bf552000 - 00000000bfffffff [ 0.287361] reserve RAM buffer: 00000000bf5bb000 - 00000000bfffffff [ 0.287364] reserve RAM buffer: 00000000bf670000 - 00000000bfffffff [ 0.287545] NetLabel: Initializing [ 0.287548] NetLabel: domain hash size = 128 [ 0.287550] NetLabel: protocols = UNLABELED CIPSOv4 [ 0.287569] NetLabel: unlabeled traffic allowed by default [ 0.287615] HPET: 3 timers in total, 0 timers will be used for per-cpu timer [ 0.287631] hpet0: at MMIO 0xfed00000, IRQs 2, 8, 0 [ 0.287638] hpet0: 3 comparators, 64-bit 14.318180 MHz counter [ 0.292044] Switching to clocksource tsc [ 0.306206] AppArmor: AppArmor Filesystem Enabled [ 0.306229] pnp: PnP ACPI init [ 0.306256] ACPI: bus type pnp registered [ 0.307694] pnp 00:01: disabling [io 0x164e-0x164f] because it overlaps 0000:00:1c.3 BAR 13 [io 0x1000-0x1fff] [ 0.332421] pnp: PnP ACPI: found 10 devices [ 0.332425] ACPI: ACPI bus type pnp unregistered [ 0.332430] PnPBIOS: Disabled by ACPI PNP [ 0.332448] system 00:01: [io 0x0600-0x060f] has been reserved [ 0.332452] system 00:01: [io 0x0610] has been reserved [ 0.332456] system 00:01: [io 0x0800-0x080f] has been reserved [ 0.332460] system 00:01: [io 0x0810-0x0817] has been reserved [ 0.332463] system 00:01: [io 0x0400-0x047f] has been reserved [ 0.332467] system 00:01: [io 0x0500-0x053f] has been reserved [ 0.332474] system 00:01: [mem 0xe0000000-0xefffffff] has been reserved [ 0.332477] system 00:01: [mem 0xfed1c000-0xfed1ffff] has been reserved [ 0.332481] system 00:01: [mem 0xfed14000-0xfed17fff] has been reserved [ 0.332485] system 00:01: [mem 0xfed18000-0xfed18fff] has been reserved [ 0.332488] system 00:01: [mem 0xfed19000-0xfed19fff] has been reserved [ 0.332493] system 00:01: [mem 0xfec00000-0xfec00fff] could not be reserved [ 0.332496] system 00:01: [mem 0xfee00000-0xfee00fff] has been reserved [ 0.332500] system 00:01: [mem 0x32000000-0x320000ff] could not be reserved [ 0.367463] pci 0000:00:02.1: BAR 0: assigned [mem 0xd8500000-0xd85fffff 64bit] [ 0.367473] pci 0000:00:02.1: BAR 0: set to [mem 0xd8500000-0xd85fffff 64bit] (PCI address [0xd8500000-0xd85fffff] [ 0.367477] pci 0000:00:1c.0: PCI bridge to [bus 02-02] [ 0.367484] pci 0000:00:1c.0: bridge window [io 0x4000-0x4fff] [ 0.367499] pci 0000:00:1c.0: bridge window [mem 0xd7400000-0xd83fffff] [ 0.367510] pci 0000:00:1c.0: bridge window [mem 0xd0000000-0xd0ffffff 64bit pref] [ 0.367528] pci 0000:00:1c.1: PCI bridge to [bus 04-04] [ 0.367535] pci 0000:00:1c.1: bridge window [io 0x3000-0x3fff] [ 0.367549] pci 0000:00:1c.1: bridge window [mem 0xd6400000-0xd73fffff] [ 0.367560] pci 0000:00:1c.1: bridge window [mem 0xd1000000-0xd1ffffff 64bit pref] [ 0.367578] pci 0000:00:1c.2: PCI bridge to [bus 05-05] [ 0.367585] pci 0000:00:1c.2: bridge window [io 0x2000-0x2fff] [ 0.367599] pci 0000:00:1c.2: bridge window [mem 0xd5300000-0xd63fffff] [ 0.367610] pci 0000:00:1c.2: bridge window [mem 0xd2000000-0xd2ffffff 64bit pref] [ 0.367629] pci 0000:00:1c.3: PCI bridge to [bus 06-06] [ 0.367636] pci 0000:00:1c.3: bridge window [io 0x1000-0x1fff] [ 0.367650] pci 0000:00:1c.3: bridge window [mem 0xd4200000-0xd52fffff] [ 0.367661] pci 0000:00:1c.3: bridge window [mem 0xd3000000-0xd3ffffff 64bit pref] [ 0.367680] pci 0000:00:1e.0: PCI bridge to [bus 07-07] [ 0.367683] pci 0000:00:1e.0: bridge window [io disabled] [ 0.367697] pci 0000:00:1e.0: bridge window [mem 0xd4100000-0xd41fffff] [ 0.367707] pci 0000:00:1e.0: bridge window [mem pref disabled] [ 0.367757] alloc irq_desc for 16 on node -1 [ 0.367760] alloc kstat_irqs on node -1 [ 0.367770] pci 0000:00:1c.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16 [ 0.367795] pci 0000:00:1c.0: setting latency timer to 64 [ 0.367824] alloc irq_desc for 17 on node -1 [ 0.367826] alloc kstat_irqs on node -1 [ 0.367832] pci 0000:00:1c.1: PCI INT B -> GSI 17 (level, low) -> IRQ 17 [ 0.367843] pci 0000:00:1c.1: setting latency timer to 64 [ 0.367867] alloc irq_desc for 18 on node -1 [ 0.367869] alloc kstat_irqs on node -1 [ 0.367873] pci 0000:00:1c.2: PCI INT C -> GSI 18 (level, low) -> IRQ 18 [ 0.367884] pci 0000:00:1c.2: setting latency timer to 64 [ 0.367907] alloc irq_desc for 19 on node -1 [ 0.367909] alloc kstat_irqs on node -1 [ 0.367913] pci 0000:00:1c.3: PCI INT D -> GSI 19 (level, low) -> IRQ 19 [ 0.367924] pci 0000:00:1c.3: setting latency timer to 64 [ 0.367944] pci 0000:00:1e.0: setting latency timer to 64 [ 0.367953] pci_bus 0000:00: resource 4 [io 0x0000-0x0cf7] [ 0.367956] pci_bus 0000:00: resource 5 [io 0x0d00-0xffff] [ 0.367959] pci_bus 0000:00: resource 6 [mem 0x000a0000-0x000bffff] [ 0.367963] pci_bus 0000:00: resource 7 [mem 0xc0000000-0xfebfffff] [ 0.367966] pci_bus 0000:02: resource 0 [io 0x4000-0x4fff] [ 0.367969] pci_bus 0000:02: resource 1 [mem 0xd7400000-0xd83fffff] [ 0.367972] pci_bus 0000:02: resource 2 [mem 0xd0000000-0xd0ffffff 64bit pref] [ 0.367976] pci_bus 0000:04: resource 0 [io 0x3000-0x3fff] [ 0.367979] pci_bus 0000:04: resource 1 [mem 0xd6400000-0xd73fffff] [ 0.367982] pci_bus 0000:04: resource 2 [mem 0xd1000000-0xd1ffffff 64bit pref] [ 0.367985] pci_bus 0000:05: resource 0 [io 0x2000-0x2fff] [ 0.367988] pci_bus 0000:05: resource 1 [mem 0xd5300000-0xd63fffff] [ 0.367992] pci_bus 0000:05: resource 2 [mem 0xd2000000-0xd2ffffff 64bit pref] [ 0.367995] pci_bus 0000:06: resource 0 [io 0x1000-0x1fff] [ 0.367998] pci_bus 0000:06: resource 1 [mem 0xd4200000-0xd52fffff] [ 0.368001] pci_bus 0000:06: resource 2 [mem 0xd3000000-0xd3ffffff 64bit pref] [ 0.368004] pci_bus 0000:07: resource 1 [mem 0xd4100000-0xd41fffff] [ 0.368007] pci_bus 0000:07: resource 4 [io 0x0000-0x0cf7] [ 0.368010] pci_bus 0000:07: resource 5 [io 0x0d00-0xffff] [ 0.368013] pci_bus 0000:07: resource 6 [mem 0x000a0000-0x000bffff] [ 0.368016] pci_bus 0000:07: resource 7 [mem 0xc0000000-0xfebfffff] [ 0.368070] NET: Registered protocol family 2 [ 0.368161] IP route cache hash table entries: 32768 (order: 5, 131072 bytes) [ 0.368524] TCP established hash table entries: 131072 (order: 8, 1048576 bytes) [ 0.369142] TCP bind hash table entries: 65536 (order: 7, 524288 bytes) [ 0.369507] TCP: Hash tables configured (established 131072 bind 65536) [ 0.369510] TCP reno registered [ 0.369514] UDP hash table entries: 512 (order: 2, 16384 bytes) [ 0.369535] UDP-Lite hash table entries: 512 (order: 2, 16384 bytes) [ 0.369698] NET: Registered protocol family 1 [ 0.369727] pci 0000:00:02.0: Boot video device [ 0.370331] PCI: CLS 0 bytes, default 64 [ 0.370586] cpufreq-nforce2: No nForce2 chipset. [ 0.370628] Scanning for low memory corruption every 60 seconds [ 0.370815] audit: initializing netlink socket (disabled) [ 0.370837] type=2000 audit(1282378891.364:1): initialized [ 0.383748] highmem bounce pool size: 64 pages [ 0.383755] HugeTLB registered 4 MB page size, pre-allocated 0 pages [ 0.385683] VFS: Disk quotas dquot_6.5.2 [ 0.385775] Dquot-cache hash table entries: 1024 (order 0, 4096 bytes) [ 0.386550] fuse init (API version 7.14) [ 0.386667] msgmni has been set to 1657 [ 0.387048] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 253) [ 0.387052] io scheduler noop registered [ 0.387055] io scheduler deadline registered [ 0.387072] io scheduler cfq registered (default) [ 0.387255] pcieport 0000:00:1c.0: setting latency timer to 64 [ 0.387383] alloc irq_desc for 40 on node -1 [ 0.387386] alloc kstat_irqs on node -1 [ 0.387411] pcieport 0000:00:1c.0: irq 40 for MSI/MSI-X [ 0.387624] pcieport 0000:00:1c.1: setting latency timer to 64 [ 0.387748] alloc irq_desc for 41 on node -1 [ 0.387750] alloc kstat_irqs on node -1 [ 0.387769] pcieport 0000:00:1c.1: irq 41 for MSI/MSI-X [ 0.387994] pcieport 0000:00:1c.2: setting latency timer to 64 [ 0.388118] alloc irq_desc for 42 on node -1 [ 0.388120] alloc kstat_irqs on node -1 [ 0.388140] pcieport 0000:00:1c.2: irq 42 for MSI/MSI-X [ 0.388344] pcieport 0000:00:1c.3: setting latency timer to 64 [ 0.388468] alloc irq_desc for 43 on node -1 [ 0.388470] alloc kstat_irqs on node -1 [ 0.388489] pcieport 0000:00:1c.3: irq 43 for MSI/MSI-X [ 0.388714] pci_hotplug: PCI Hot Plug PCI Core version: 0.5 [ 0.388897] ACPI Warning for \_SB_.PCI0._OSC: Parameter count mismatch - ASL declared 5, ACPI requires 4 (20100428/nspredef-352) [ 0.388910] \_SB_.PCI0:_OSC evaluation returned wrong type [ 0.388912] _OSC request data:1 0 1f [ 0.389059] ACPI Warning for \_SB_.PCI0._OSC: Parameter count mismatch - ASL declared 5, ACPI requires 4 (20100428/nspredef-352) [ 0.389070] \_SB_.PCI0:_OSC evaluation returned wrong type [ 0.389072] _OSC request data:1 0 1f [ 0.389212] ACPI Warning for \_SB_.PCI0._OSC: Parameter count mismatch - ASL declared 5, ACPI requires 4 (20100428/nspredef-352) [ 0.389222] \_SB_.PCI0:_OSC evaluation returned wrong type [ 0.389225] _OSC request data:1 0 1f [ 0.389365] ACPI Warning for \_SB_.PCI0._OSC: Parameter count mismatch - ASL declared 5, ACPI requires 4 (20100428/nspredef-352) [ 0.389375] \_SB_.PCI0:_OSC evaluation returned wrong type [ 0.389377] _OSC request data:1 0 1f [ 0.389539] ACPI Warning for \_SB_.PCI0._OSC: Parameter count mismatch - ASL declared 5, ACPI requires 4 (20100428/nspredef-352) [ 0.389549] \_SB_.PCI0:_OSC evaluation returned wrong type [ 0.389551] _OSC request data:1 0 1f [ 0.389695] ACPI Warning for \_SB_.PCI0._OSC: Parameter count mismatch - ASL declared 5, ACPI requires 4 (20100428/nspredef-352) [ 0.389705] \_SB_.PCI0:_OSC evaluation returned wrong type [ 0.389707] _OSC request data:1 0 1f [ 0.389848] ACPI Warning for \_SB_.PCI0._OSC: Parameter count mismatch - ASL declared 5, ACPI requires 4 (20100428/nspredef-352) [ 0.389858] \_SB_.PCI0:_OSC evaluation returned wrong type [ 0.389860] _OSC request data:1 0 1f [ 0.389998] ACPI Warning for \_SB_.PCI0._OSC: Parameter count mismatch - ASL declared 5, ACPI requires 4 (20100428/nspredef-352) [ 0.390007] \_SB_.PCI0:_OSC evaluation returned wrong type [ 0.390010] _OSC request data:1 0 1f [ 0.390034] pciehp: PCI Express Hot Plug Controller Driver version: 0.4 [ 0.392630] ACPI: AC Adapter [AC] (on-line) [ 0.392754] input: Power Button as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:02/PNP0C0C:00/input/input0 [ 0.392759] ACPI: Power Button [PWRB] [ 0.392815] input: Lid Switch as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:02/PNP0C0D:00/input/input1 [ 0.392872] ACPI: Lid Switch [LID0] [ 0.392926] input: Sleep Button as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:02/PNP0C0E:00/input/input2 [ 0.392929] ACPI: Sleep Button [SLPB] [ 0.393005] input: Power Button as /devices/LNXSYSTM:00/LNXPWRBN:00/input/input3 [ 0.393008] ACPI: Power Button [PWRF] [ 0.393426] ACPI: acpi_idle registered with cpuidle [ 0.396530] Monitor-Mwait will be used to enter C-1 state [ 0.396577] Monitor-Mwait will be used to enter C-2 state [ 0.396607] Monitor-Mwait will be used to enter C-3 state [ 0.396616] Marking TSC unstable due to TSC halts in idle [ 0.397176] Switching to clocksource hpet [ 0.439822] thermal LNXTHERM:01: registered as thermal_zone0 [ 0.439836] ACPI: Thermal Zone [TZ01] (40 C) [ 0.439987] ERST: Table is not found! [ 0.441958] Serial: 8250/16550 driver, 4 ports, IRQ sharing enabled [ 0.443809] brd: module loaded [ 0.444482] loop: module loaded [ 0.444750] ata_piix 0000:00:1f.1: version 2.13 [ 0.444771] ata_piix 0000:00:1f.1: PCI INT A -> GSI 18 (level, low) -> IRQ 18 [ 0.444837] ata_piix 0000:00:1f.1: setting latency timer to 64 [ 0.445073] scsi0 : ata_piix [ 0.445184] isapnp: Scanning for PnP cards... [ 0.494261] Freeing initrd memory: 10508k freed [ 0.495022] scsi1 : ata_piix [ 0.496274] ata1: PATA max UDMA/100 cmd 0x1f0 ctl 0x3f6 bmdma 0x50e0 irq 14 [ 0.496283] ata2: PATA max UDMA/100 cmd 0x170 ctl 0x376 bmdma 0x50e8 irq 15 [ 0.496884] Fixed MDIO Bus: probed [ 0.496942] PPP generic driver version 2.4.2 [ 0.497266] tun: Universal TUN/TAP device driver, 1.6 [ 0.497270] tun: (C) 1999-2004 Max Krasnyansky [ 0.497444] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver [ 0.497522] ehci_hcd 0000:00:1a.7: PCI INT C -> GSI 18 (level, low) -> IRQ 18 [ 0.497577] ehci_hcd 0000:00:1a.7: setting latency timer to 64 [ 0.497584] ehci_hcd 0000:00:1a.7: EHCI Host Controller [ 0.497662] ehci_hcd 0000:00:1a.7: new USB bus registered, assigned bus number 1 [ 0.497731] ehci_hcd 0000:00:1a.7: debug port 1 [ 0.501639] ehci_hcd 0000:00:1a.7: cache line size of 64 is not supported [ 0.501704] ehci_hcd 0000:00:1a.7: irq 18, io mem 0xd8404c00 [ 0.517031] ehci_hcd 0000:00:1a.7: USB 2.0 started, EHCI 1.00 [ 0.517248] hub 1-0:1.0: USB hub found [ 0.517256] hub 1-0:1.0: 4 ports detected [ 0.517380] alloc irq_desc for 23 on node -1 [ 0.517383] alloc kstat_irqs on node -1 [ 0.517392] ehci_hcd 0000:00:1d.7: PCI INT A -> GSI 23 (level, low) -> IRQ 23 [ 0.517422] ehci_hcd 0000:00:1d.7: setting latency timer to 64 [ 0.517429] ehci_hcd 0000:00:1d.7: EHCI Host Controller [ 0.517486] ehci_hcd 0000:00:1d.7: new USB bus registered, assigned bus number 2 [ 0.517540] ehci_hcd 0000:00:1d.7: debug port 1 [ 0.521436] ehci_hcd 0000:00:1d.7: cache line size of 64 is not supported [ 0.521464] ehci_hcd 0000:00:1d.7: irq 23, io mem 0xd8404800 [ 0.537031] ehci_hcd 0000:00:1d.7: USB 2.0 started, EHCI 1.00 [ 0.537178] hub 2-0:1.0: USB hub found [ 0.537184] hub 2-0:1.0: 6 ports detected [ 0.537300] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver [ 0.537323] uhci_hcd: USB Universal Host Controller Interface driver [ 0.537373] uhci_hcd 0000:00:1a.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16 [ 0.537386] uhci_hcd 0000:00:1a.0: setting latency timer to 64 [ 0.537392] uhci_hcd 0000:00:1a.0: UHCI Host Controller [ 0.537438] uhci_hcd 0000:00:1a.0: new USB bus registered, assigned bus number 3 [ 0.537496] uhci_hcd 0000:00:1a.0: irq 16, io base 0x000050c0 [ 0.537648] hub 3-0:1.0: USB hub found [ 0.537653] hub 3-0:1.0: 2 ports detected [ 0.537744] alloc irq_desc for 21 on node -1 [ 0.537747] alloc kstat_irqs on node -1 [ 0.537753] uhci_hcd 0000:00:1a.1: PCI INT B -> GSI 21 (level, low) -> IRQ 21 [ 0.537767] uhci_hcd 0000:00:1a.1: setting latency timer to 64 [ 0.537773] uhci_hcd 0000:00:1a.1: UHCI Host Controller [ 0.537814] uhci_hcd 0000:00:1a.1: new USB bus registered, assigned bus number 4 [ 0.537868] uhci_hcd 0000:00:1a.1: irq 21, io base 0x000050a0 [ 0.538019] hub 4-0:1.0: USB hub found [ 0.538025] hub 4-0:1.0: 2 ports detected [ 0.538112] uhci_hcd 0000:00:1d.0: PCI INT A -> GSI 23 (level, low) -> IRQ 23 [ 0.538125] uhci_hcd 0000:00:1d.0: setting latency timer to 64 [ 0.538131] uhci_hcd 0000:00:1d.0: UHCI Host Controller [ 0.538170] uhci_hcd 0000:00:1d.0: new USB bus registered, assigned bus number 5 [ 0.538210] uhci_hcd 0000:00:1d.0: irq 23, io base 0x00005080 [ 0.538359] hub 5-0:1.0: USB hub found [ 0.538364] hub 5-0:1.0: 2 ports detected [ 0.538449] uhci_hcd 0000:00:1d.1: PCI INT B -> GSI 19 (level, low) -> IRQ 19 [ 0.538461] uhci_hcd 0000:00:1d.1: setting latency timer to 64 [ 0.538467] uhci_hcd 0000:00:1d.1: UHCI Host Controller [ 0.538506] uhci_hcd 0000:00:1d.1: new USB bus registered, assigned bus number 6 [ 0.538561] uhci_hcd 0000:00:1d.1: irq 19, io base 0x00005060 [ 0.538708] hub 6-0:1.0: USB hub found [ 0.538715] hub 6-0:1.0: 2 ports detected [ 0.538804] uhci_hcd 0000:00:1d.2: PCI INT C -> GSI 18 (level, low) -> IRQ 18 [ 0.538816] uhci_hcd 0000:00:1d.2: setting latency timer to 64 [ 0.538822] uhci_hcd 0000:00:1d.2: UHCI Host Controller [ 0.538867] uhci_hcd 0000:00:1d.2: new USB bus registered, assigned bus number 7 [ 0.538909] uhci_hcd 0000:00:1d.2: irq 18, io base 0x00005040 [ 0.539059] hub 7-0:1.0: USB hub found [ 0.539064] hub 7-0:1.0: 2 ports detected [ 0.539226] PNP: PS/2 Controller [PNP0303:KBC0,PNP0f13:MSE0] at 0x60,0x64 irq 1,12 [ 0.580440] serio: i8042 KBD port at 0x60,0x64 irq 1 [ 0.580460] serio: i8042 AUX port at 0x60,0x64 irq 12 [ 0.580595] mice: PS/2 mouse device common for all mice [ 0.582586] rtc_cmos 00:03: RTC can wake from S4 [ 0.582644] rtc_cmos 00:03: rtc core: registered rtc_cmos as rtc0 [ 0.582687] rtc0: alarms up to one month, 242 bytes nvram, hpet irqs [ 0.582831] device-mapper: uevent: version 1.0.3 [ 0.583014] device-mapper: ioctl: 4.17.0-ioctl (2010-03-05) initialised: dm-devel@redhat.com [ 0.583104] device-mapper: multipath: version 1.1.1 loaded [ 0.583107] device-mapper: multipath round-robin: version 1.0.0 loaded [ 0.583255] EISA: Probing bus 0 at eisa.0 [ 0.583257] EISA: Cannot allocate resource for mainboard [ 0.583260] Cannot allocate resource for EISA slot 1 [ 0.583263] Cannot allocate resource for EISA slot 2 [ 0.583265] Cannot allocate resource for EISA slot 3 [ 0.583268] Cannot allocate resource for EISA slot 4 [ 0.583270] Cannot allocate resource for EISA slot 5 [ 0.583273] Cannot allocate resource for EISA slot 6 [ 0.583275] Cannot allocate resource for EISA slot 7 [ 0.583278] Cannot allocate resource for EISA slot 8 [ 0.583280] EISA: Detected 0 cards. [ 0.583461] cpuidle: using governor ladder [ 0.583594] cpuidle: using governor menu [ 0.584001] TCP cubic registered [ 0.584162] NET: Registered protocol family 10 [ 0.584631] lo: Disabled Privacy Extensions [ 0.585036] NET: Registered protocol family 17 [ 0.585581] Using IPI No-Shortcut mode [ 0.585686] PM: Resume from disk failed. [ 0.585700] registered taskstats version 1 [ 0.586569] Magic number: 6:260:372 [ 0.586691] rtc_cmos 00:03: setting system clock to 2010-08-21 08:21:31 UTC (1282378891) [ 0.586695] BIOS EDD facility v0.16 2004-Jun-25, 0 devices found [ 0.586697] EDD information not available. [ 0.608706] input: AT Translated Set 2 keyboard as /devices/platform/i8042/serio0/input/input4 [ 0.670027] ata1.00: ATAPI: HL-DT-ST DVDRAM GSA-T40N, JP01, max UDMA/33 [ 0.685345] ata1.00: configured for UDMA/33 [ 0.792177] ACPI: Battery Slot [BAT0] (battery present) [ 0.810759] isapnp: No Plug & Play device found [ 0.814471] scsi 0:0:0:0: CD-ROM HL-DT-ST DVDRAM GSA-T40N JP01 PQ: 0 ANSI: 5 [ 0.825861] sr0: scsi3-mmc drive: 24x/24x writer dvd-ram cd/rw xa/form2 cdda tray [ 0.825865] Uniform CD-ROM driver Revision: 3.20 [ 0.826005] sr 0:0:0:0: Attached scsi CD-ROM sr0 [ 0.826075] sr 0:0:0:0: Attached scsi generic sg0 type 5 [ 0.826157] Freeing unused kernel memory: 684k freed [ 0.826635] Write protecting the kernel text: 4924k [ 0.826707] Write protecting the kernel read-only data: 1972k [ 0.849772] udev: starting version 151 [ 0.944095] usb 2-3: new high speed USB device using ehci_hcd and address 2 [ 0.972966] sdhci: Secure Digital Host Controller Interface driver [ 0.972970] sdhci: Copyright(c) Pierre Ossman [ 0.977640] tg3.c:v3.110 (April 9, 2010) [ 0.977720] tg3 0000:05:00.0: PCI INT A -> GSI 18 (level, low) -> IRQ 18 [ 0.977742] tg3 0000:05:00.0: setting latency timer to 64 [ 0.995655] ahci 0000:00:1f.2: version 3.0 [ 0.995685] ahci 0000:00:1f.2: PCI INT B -> GSI 19 (level, low) -> IRQ 19 [ 0.995768] alloc irq_desc for 44 on node -1 [ 0.995771] alloc kstat_irqs on node -1 [ 0.995793] ahci 0000:00:1f.2: irq 44 for MSI/MSI-X [ 0.995923] ahci 0000:00:1f.2: AHCI 0001.0100 32 slots 3 ports 3 Gbps 0x7 impl SATA mode [ 0.995927] ahci 0000:00:1f.2: flags: 64bit ncq sntf pm led clo pio slum part ccc ems [ 0.995939] ahci 0000:00:1f.2: setting latency timer to 64 [ 1.024801] alloc irq_desc for 20 on node -1 [ 1.024805] alloc kstat_irqs on node -1 [ 1.024815] firewire_ohci 0000:07:00.0: PCI INT A -> GSI 20 (level, low) -> IRQ 20 [ 1.024828] firewire_ohci 0000:07:00.0: setting latency timer to 64 [ 1.056254] scsi2 : ahci [ 1.087519] scsi3 : ahci [ 1.100926] scsi4 : ahci [ 1.101212] ata3: SATA max UDMA/133 abar m2048@0xd8404000 port 0xd8404100 irq 44 [ 1.101218] ata4: SATA max UDMA/133 abar m2048@0xd8404000 port 0xd8404180 irq 44 [ 1.101225] ata5: SATA max UDMA/133 abar m2048@0xd8404000 port 0xd8404200 irq 44 [ 1.103967] tg3 0000:05:00.0: eth0: Tigon3 [partno(BCM95787m) rev b002] (PCI Express) MAC address 00:1e:ec:42:92:91 [ 1.103972] tg3 0000:05:00.0: eth0: attached PHY is 5787 (10/100/1000Base-T Ethernet) (WireSpeed[1]) [ 1.103977] tg3 0000:05:00.0: eth0: RXcsums[1] LinkChgREG[0] MIirq[0] ASF[0] TSOcap[1] [ 1.103980] tg3 0000:05:00.0: eth0: dma_rwctrl[76180000] dma_mask[64-bit] [ 1.111693] Initializing USB Mass Storage driver... [ 1.111840] scsi5 : usb-storage 2-3:1.0 [ 1.111945] usbcore: registered new interface driver usb-storage [ 1.111948] USB Mass Storage support registered. [ 1.120046] firewire_ohci: Added fw-ohci device 0000:07:00.0, OHCI v1.10, 4 IR + 4 IT contexts, quirks 0x0 [ 1.120091] sdhci-pci 0000:07:00.1: SDHCI controller found [1180:0822] (rev 22) [ 1.120122] alloc irq_desc for 22 on node -1 [ 1.120125] alloc kstat_irqs on node -1 [ 1.120134] sdhci-pci 0000:07:00.1: PCI INT B -> GSI 22 (level, low) -> IRQ 22 [ 1.121172] sdhci-pci 0000:07:00.1: Will use DMA mode even though HW doesn't fully claim to support it. [ 1.121186] sdhci-pci 0000:07:00.1: setting latency timer to 64 [ 1.122249] Registered led device: mmc0:: [ 1.123287] mmc0: SDHCI controller on PCI [0000:07:00.1] using DMA [ 1.317099] usb 3-1: new full speed USB device using uhci_hcd and address 2 [ 1.420108] ata4: SATA link down (SStatus 0 SControl 300) [ 1.420145] ata3: SATA link up 3.0 Gbps (SStatus 123 SControl 300) [ 1.420172] ata5: SATA link down (SStatus 0 SControl 300) [ 1.421122] ata3.00: ACPI cmd ef/10:03:00:00:00:a0 (SET FEATURES) filtered out [ 1.421131] ata3.00: ATA-8: ST9160827AS, 3.AAA, max UDMA/133 [ 1.421134] ata3.00: 312581808 sectors, multi 16: LBA48 NCQ (depth 31/32) [ 1.422254] ata3.00: ACPI cmd ef/10:03:00:00:00:a0 (SET FEATURES) filtered out [ 1.422282] ata3.00: configured for UDMA/133 [ 1.436260] scsi 2:0:0:0: Direct-Access ATA ST9160827AS 3.AA PQ: 0 ANSI: 5 [ 1.436458] sd 2:0:0:0: Attached scsi generic sg1 type 0 [ 1.436599] sd 2:0:0:0: [sda] 312581808 512-byte logical blocks: (160 GB/149 GiB) [ 1.436786] sd 2:0:0:0: [sda] Write Protect is off [ 1.436790] sd 2:0:0:0: [sda] Mode Sense: 00 3a 00 00 [ 1.436877] sd 2:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA [ 1.437298] sda: sda1 sda2 sda3 sda4 < sda5 sda6 > [ 1.479446] sd 2:0:0:0: [sda] Attached SCSI disk [ 1.522666] usbcore: registered new interface driver hiddev [ 1.530373] input: Logitech USB Gaming Mouse as /devices/pci0000:00/0000:00:1a.0/usb3/3-1/3-1:1.0/input/input5 [ 1.530498] generic-usb 0003:046D:C041.0001: input,hidraw0: USB HID v1.11 Mouse [Logitech USB Gaming Mouse] on usb-0000:00:1a.0-1/input0 [ 1.539682] generic-usb 0003:046D:C041.0002: hiddev96,hidraw1: USB HID v1.11 Device [Logitech USB Gaming Mouse] on usb-0000:00:1a.0-1/input1 [ 1.539706] usbcore: registered new interface driver usbhid [ 1.539709] usbhid: USB HID core driver [ 1.609179] firewire_core: created device fw0: GUID b6401e2000023f84, S400 [ 2.108832] scsi 5:0:0:0: Direct-Access WD 5000AAJ External 1.06 PQ: 0 ANSI: 0 [ 2.109639] sd 5:0:0:0: Attached scsi generic sg2 type 0 [ 2.110165] sd 5:0:0:0: [sdb] 976773168 512-byte logical blocks: (500 GB/465 GiB) [ 2.110931] sd 5:0:0:0: [sdb] Write Protect is off [ 2.110936] sd 5:0:0:0: [sdb] Mode Sense: 00 00 00 00 [ 2.110939] sd 5:0:0:0: [sdb] Assuming drive cache: write through [ 2.112425] sd 5:0:0:0: [sdb] Assuming drive cache: write through [ 2.112435] sdb: sdb1 [ 2.114908] sd 5:0:0:0: [sdb] Assuming drive cache: write through [ 2.114914] sd 5:0:0:0: [sdb] Attached SCSI disk [ 6.853175] EXT3-fs: barriers not enabled [ 6.864401] kjournald starting. Commit interval 5 seconds [ 6.864447] EXT3-fs (sda2): mounted filesystem with ordered data mode [ 9.527294] udev: starting version 151 [ 9.531442] Swap area shorter than signature indicates [ 10.034268] Linux agpgart interface v0.103 [ 10.042456] lib80211: common routines for IEEE802.11 drivers [ 10.042460] lib80211_crypt: registered algorithm 'NULL' [ 10.188763] lp: driver loaded but no devices found [ 10.355128] lirc_dev: IR Remote Control driver registered, major 61 [ 10.356629] agpgart-intel 0000:00:00.0: Intel 965GM Chipset [ 10.357805] agpgart-intel 0000:00:00.0: detected 7676K stolen memory [ 10.365414] BUG: unable to handle kernel NULL pointer dereference at (null) [ 10.365633] IP: [ 10.365702] agpgart-intel 0000:00:00.0: AGP aperture is 256M @ 0xc0000000 [ 10.365852] [] kfifo_alloc+0x26/0x90 [ 10.365927] *pde = 00000000 [ 10.366069] Oops: 0002 [#1] SMP [ 10.366275] last sysfs file: /sys/module/intel_agp/initstate [ 10.366361] Modules linked in: lirc_ene0100(+) i2c_algo_bit intel_agp lirc_dev video snd soundcore snd_page_alloc psmouse serio_raw lib80211 agpgart output lp parport usbhid hid usb_storage firewire_ohci ahci firewire_core sdhci_pci tg3 sdhci led_class crc_itu_t libahci [ 10.368016] [ 10.368016] Pid: 453, comm: modprobe Not tainted 2.6.35-17-generic #23-Ubuntu Nettiling/Aspire 5720Z [ 10.368016] EIP: 0060:[] EFLAGS: 00010286 CPU: 0 [ 10.368016] EIP is at kfifo_alloc+0x26/0x90 [ 10.368016] EAX: f5faa000 EBX: 00001000 ECX: c01665b2 EDX: c01665b2 [ 10.368016] ESI: 00000000 EDI: f5d09e40 EBP: f5cf1e40 ESP: f5cf1e38 [ 10.368016] DS: 007b ES: 007b FS: 00d8 GS: 00e0 SS: 0068 [ 10.368016] Process modprobe (pid: 453, ti=f5cf0000 task=f68a3f70 task.ti=f5cf0000) [ 10.368016] Stack: [ 10.368016] f695ce40 f6a1d540 f5cf1e68 f806bdb7 00000020 000080d0 f5cf1e68 f7232200 [ 10.368016] <0> fffffff4 f806bf90 f7232200 f806c3e0 f5cf1e7c c03c737e f7232200 f806c400 [ 10.368016] <0> f806c400 f5cf1ea0 c03ffa30 f72322d0 f5cf1ea0 c0406c87 00000000 f7232200 [ 10.368016] Call Trace: [ 10.368016] [] ? ene_probe+0x157/0x30b [lirc_ene0100] [ 10.368016] [] ? pnp_device_probe+0x6e/0xd0 [ 10.368016] [] ? really_probe+0x50/0x150 [ 10.368016] [] ? pm_runtime_barrier+0x57/0xb0 [ 10.368016] [] ? driver_probe_device+0x3c/0x60 [ 10.368016] [] ? __driver_attach+0x81/0x90 [ 10.368016] [] ? bus_for_each_dev+0x53/0x80 [ 10.368016] [] ? driver_attach+0x1e/0x20 [ 10.368016] [] ? __driver_attach+0x0/0x90 [ 10.368016] [] ? bus_add_driver+0xd5/0x280 [ 10.368016] [] ? pnp_device_remove+0x0/0x40 [ 10.368016] [] ? driver_register+0x6a/0x130 [ 10.368016] [] ? tracepoint_module_notify+0x27/0x30 [ 10.368016] [] ? pnp_register_driver+0x1c/0x20 [ 10.368016] [] ? ene_init+0x38/0x3a [lirc_ene0100] [ 10.368016] [] ? __blocking_notifier_call_chain+0x54/0x70 [ 10.368016] [] ? do_one_initcall+0x32/0x1a0 [ 10.368016] [] ? ene_init+0x0/0x3a [lirc_ene0100] [ 10.368016] [] ? sys_init_module+0x9b/0x1e0 [ 10.368016] [] ? sys_close+0x75/0xc0 [ 10.368016] [] ? syscall_call+0x7/0xb [ 10.368016] Code: 90 8d 74 26 00 55 89 e5 56 53 0f 1f 44 00 00 89 d3 89 c6 85 db 89 ca 8d 43 ff 74 31 85 d8 75 25 89 d8 e8 7e 61 0a 00 85 c0 74 39 <89> 06 31 c0 89 5e 04 c7 46 0c 00 00 00 00 c7 46 08 00 00 00 00 [ 10.368016] EIP: [] kfifo_alloc+0x26/0x90 SS:ESP 0068:f5cf1e38 [ 10.368016] CR2: 0000000000000000 [ 10.377304] ---[ end trace 4928562ce252ec85 ]--- [ 10.502505] type=1400 audit(1282378901.411:2): apparmor="STATUS" operation="profile_load" name="/sbin/dhclient3" pid=674 comm="apparmor_parser" [ 10.503466] type=1400 audit(1282378901.411:3): apparmor="STATUS" operation="profile_load" name="/usr/lib/NetworkManager/nm-dhcp-client.action" pid=674 comm="apparmor_parser" [ 10.504077] type=1400 audit(1282378901.415:4): apparmor="STATUS" operation="profile_load" name="/usr/lib/connman/scripts/dhclient-script" pid=674 comm="apparmor_parser" [ 10.687978] [drm] Initialized drm 1.1.0 20060810 [ 10.688741] r852 0000:07:00.3: PCI INT B -> GSI 22 (level, low) -> IRQ 22 [ 10.688856] r852 0000:07:00.3: setting latency timer to 64 [ 10.689093] r852: driver loaded succesfully [ 10.777118] wl: module license 'MIXED/Proprietary' taints kernel. [ 10.784479] wl 0000:06:00.0: PCI INT A -> GSI 19 (level, low) -> IRQ 19 [ 10.784624] wl 0000:06:00.0: setting latency timer to 64 [ 10.854238] input: PS/2 Mouse as /devices/platform/i8042/serio1/input/input6 [ 10.890037] input: AlpsPS/2 ALPS GlidePoint as /devices/platform/i8042/serio1/input/input7 [ 10.896370] lib80211_crypt: registered algorithm 'TKIP' [ 10.896711] eth1: Broadcom BCM4315 802.11 Hybrid Wireless Controller 5.60.48.36 [ 11.135544] i915 0000:00:02.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16 [ 11.135637] i915 0000:00:02.0: setting latency timer to 64 [ 11.172233] alloc irq_desc for 45 on node -1 [ 11.172301] alloc kstat_irqs on node -1 [ 11.172378] i915 0000:00:02.0: irq 45 for MSI/MSI-X [ 11.172466] [drm] set up 7M of stolen space [ 11.278709] [drm] initialized overlay support [ 11.584063] Skipping EDID probe due to cached edid [ 12.073887] Console: switching to colour frame buffer device 160x50 [ 12.078531] fb0: inteldrmfb frame buffer device [ 12.078533] drm: registered panic notifier [ 12.078537] Slow work thread pool: Starting up [ 12.078620] Slow work thread pool: Ready [ 12.392160] acpi device:3a: registered as cooling_device2 [ 12.392550] input: Video Bus as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/LNXVIDEO:01/input/input8 [ 12.392702] ACPI: Video Device [OVGA] (multi-head: yes rom: no post: no) [ 12.392796] [drm] Initialized i915 1.6.0 20080730 for 0000:00:02.0 on minor 0 [ 12.393125] HDA Intel 0000:00:1b.0: PCI INT A -> GSI 22 (level, low) -> IRQ 22 [ 12.393321] alloc irq_desc for 46 on node -1 [ 12.393364] alloc kstat_irqs on node -1 [ 12.393424] HDA Intel 0000:00:1b.0: irq 46 for MSI/MSI-X [ 12.393547] HDA Intel 0000:00:1b.0: setting latency timer to 64 [ 12.724086] Skipping EDID probe due to cached edid [ 12.895312] EXT3-fs (sda2): using internal journal [ 13.299916] EXT3-fs: barriers not enabled [ 13.311097] kjournald starting. Commit interval 5 seconds [ 13.311329] EXT3-fs (sda1): using internal journal [ 13.311335] EXT3-fs (sda1): mounted filesystem with ordered data mode [ 14.180926] EXT4-fs (sda6): warning: maximal mount count reached, running e2fsck is recommended [ 14.183731] EXT4-fs (sda6): mounted filesystem with ordered data mode. Opts: (null) [ 19.302046] alloc irq_desc for 47 on node -1 [ 19.302052] alloc kstat_irqs on node -1 [ 19.302092] tg3 0000:05:00.0: irq 47 for MSI/MSI-X [ 19.471528] ADDRCONF(NETDEV_UP): eth0: link is not ready [ 19.694795] type=1400 audit(1282378910.603:5): apparmor="STATUS" operation="profile_replace" name="/sbin/dhclient3" pid=1040 comm="apparmor_parser" [ 19.695670] type=1400 audit(1282378910.603:6): apparmor="STATUS" operation="profile_replace" name="/usr/lib/NetworkManager/nm-dhcp-client.action" pid=1040 comm="apparmor_parser" [ 19.696154] type=1400 audit(1282378910.603:7): apparmor="STATUS" operation="profile_replace" name="/usr/lib/connman/scripts/dhclient-script" pid=1040 comm="apparmor_parser" [ 19.739891] type=1400 audit(1282378910.647:8): apparmor="STATUS" operation="profile_load" name="/usr/share/gdm/guest-session/Xsession" pid=1039 comm="apparmor_parser" [ 19.948473] type=1400 audit(1282378910.859:9): apparmor="STATUS" operation="profile_load" name="/usr/bin/evince" pid=1042 comm="apparmor_parser" [ 19.959537] type=1400 audit(1282378910.867:10): apparmor="STATUS" operation="profile_load" name="/usr/bin/evince-previewer" pid=1042 comm="apparmor_parser" [ 19.962053] type=1400 audit(1282378910.871:11): apparmor="STATUS" operation="profile_load" name="/usr/lib/cups/backend/cups-pdf" pid=1046 comm="apparmor_parser" [ 19.963085] type=1400 audit(1282378910.871:12): apparmor="STATUS" operation="profile_load" name="/usr/sbin/cupsd" pid=1046 comm="apparmor_parser" [ 19.966500] type=1400 audit(1282378910.875:13): apparmor="STATUS" operation="profile_load" name="/usr/bin/evince-thumbnailer" pid=1042 comm="apparmor_parser" [ 20.000288] type=1400 audit(1282378910.907:14): apparmor="STATUS" operation="profile_load" name="/usr/sbin/mysqld-akonadi" pid=1048 comm="apparmor_parser" [ 21.087780] tg3 0000:05:00.0: eth0: Link is up at 100 Mbps, full duplex [ 21.087786] tg3 0000:05:00.0: eth0: Flow control is off for TX and off for RX [ 21.088025] ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready [ 22.035459] apm: BIOS not found. Bug: 622034 [ 0.000000] Initializing cgroup subsys cpuset [ 0.000000] Initializing cgroup subsys cpu [ 0.000000] Linux version 2.6.35-17-generic (buildd@yellow) (gcc version 4.4.5 20100816 (prerelease) (Ubuntu/Linaro 4.4.4-9ubuntu1) ) #23-Ubuntu SMP Fri Aug 20 01:22:04 UTC 2010 (Ubuntu 2.6.35-17.23-generic 2.6.35.2) [ 0.000000] Command line: BOOT_IMAGE=/boot/vmlinuz-2.6.35-17-generic root=UUID=dc17aa56-caa0-4d4a-a916-96d0086fcc11 ro quiet splash [ 0.000000] BIOS-provided physical RAM map: [ 0.000000] BIOS-e820: 0000000000000000 - 000000000009fc00 (usable) [ 0.000000] BIOS-e820: 000000000009fc00 - 00000000000a0000 (reserved) [ 0.000000] BIOS-e820: 00000000000e0000 - 0000000000100000 (reserved) [ 0.000000] BIOS-e820: 0000000000100000 - 00000000afd70000 (usable) [ 0.000000] BIOS-e820: 00000000afd70000 - 00000000afdbf000 (reserved) [ 0.000000] BIOS-e820: 00000000afdbf000 - 00000000afe58000 (usable) [ 0.000000] BIOS-e820: 00000000afe58000 - 00000000afebf000 (ACPI NVS) [ 0.000000] BIOS-e820: 00000000afebf000 - 00000000afeec000 (usable) [ 0.000000] BIOS-e820: 00000000afeec000 - 00000000afeff000 (ACPI data) [ 0.000000] BIOS-e820: 00000000afeff000 - 00000000aff00000 (usable) [ 0.000000] BIOS-e820: 00000000e0000000 - 00000000e1000000 (reserved) [ 0.000000] BIOS-e820: 00000000fec00000 - 00000000fec01000 (reserved) [ 0.000000] BIOS-e820: 00000000fee00000 - 00000000fee01000 (reserved) [ 0.000000] BIOS-e820: 00000000fff00000 - 0000000100000000 (reserved) [ 0.000000] BIOS-e820: 0000000100000000 - 0000000140000000 (usable) [ 0.000000] NX (Execute Disable) protection: active [ 0.000000] DMI 2.4 present. [ 0.000000] e820 update range: 0000000000000000 - 0000000000001000 (usable) ==> (reserved) [ 0.000000] e820 remove range: 00000000000a0000 - 0000000000100000 (usable) [ 0.000000] No AGP bridge found [ 0.000000] last_pfn = 0x140000 max_arch_pfn = 0x400000000 [ 0.000000] MTRR default type: uncachable [ 0.000000] MTRR fixed ranges enabled: [ 0.000000] 00000-9FFFF write-back [ 0.000000] A0000-BFFFF uncachable [ 0.000000] C0000-FFFFF write-through [ 0.000000] MTRR variable ranges enabled: [ 0.000000] 0 base 00FFF00000 mask FFFFF00000 write-protect [ 0.000000] 1 base 0000000000 mask FF80000000 write-back [ 0.000000] 2 base 0080000000 mask FFE0000000 write-back [ 0.000000] 3 base 00A0000000 mask FFF0000000 write-back [ 0.000000] 4 base 0100000000 mask FFC0000000 write-back [ 0.000000] 5 disabled [ 0.000000] 6 disabled [ 0.000000] 7 disabled [ 0.000000] TOM2: 0000000140000000 aka 5120M [ 0.000000] x86 PAT enabled: cpu 0, old 0x7040600070406, new 0x7010600070106 [ 0.000000] last_pfn = 0xaff00 max_arch_pfn = 0x400000000 [ 0.000000] e820 update range: 0000000000001000 - 0000000000010000 (usable) ==> (reserved) [ 0.000000] Scanning 1 areas for low memory corruption [ 0.000000] modified physical RAM map: [ 0.000000] modified: 0000000000000000 - 0000000000010000 (reserved) [ 0.000000] modified: 0000000000010000 - 000000000009fc00 (usable) [ 0.000000] modified: 000000000009fc00 - 00000000000a0000 (reserved) [ 0.000000] modified: 00000000000e0000 - 0000000000100000 (reserved) [ 0.000000] modified: 0000000000100000 - 00000000afd70000 (usable) [ 0.000000] modified: 00000000afd70000 - 00000000afdbf000 (reserved) [ 0.000000] modified: 00000000afdbf000 - 00000000afe58000 (usable) [ 0.000000] modified: 00000000afe58000 - 00000000afebf000 (ACPI NVS) [ 0.000000] modified: 00000000afebf000 - 00000000afeec000 (usable) [ 0.000000] modified: 00000000afeec000 - 00000000afeff000 (ACPI data) [ 0.000000] modified: 00000000afeff000 - 00000000aff00000 (usable) [ 0.000000] modified: 00000000e0000000 - 00000000e1000000 (reserved) [ 0.000000] modified: 00000000fec00000 - 00000000fec01000 (reserved) [ 0.000000] modified: 00000000fee00000 - 00000000fee01000 (reserved) [ 0.000000] modified: 00000000fff00000 - 0000000100000000 (reserved) [ 0.000000] modified: 0000000100000000 - 0000000140000000 (usable) [ 0.000000] initial memory mapped : 0 - 20000000 [ 0.000000] init_memory_mapping: 0000000000000000-00000000aff00000 [ 0.000000] 0000000000 - 00afe00000 page 2M [ 0.000000] 00afe00000 - 00aff00000 page 4k [ 0.000000] kernel direct mapping tables up to aff00000 @ 16000-1b000 [ 0.000000] init_memory_mapping: 0000000100000000-0000000140000000 [ 0.000000] 0100000000 - 0140000000 page 2M [ 0.000000] kernel direct mapping tables up to 140000000 @ 19000-1f000 [ 0.000000] RAMDISK: 37574000 - 37ff0000 [ 0.000000] ACPI: RSDP 00000000000fe020 00024 (v02 HP ) [ 0.000000] ACPI: XSDT 00000000afefe120 0005C (v01 HPQOEM SLIC-MPC 00000001 01000013) [ 0.000000] ACPI: FACP 00000000afefd000 000F4 (v04 HP TRINITY 00000003 LOHR 01000013) [ 0.000000] ACPI: DSDT 00000000afeef000 0A2F0 (v01 HP TRINITY F0000000 LOHR 01000013) [ 0.000000] ACPI: FACS 00000000afe61000 00040 [ 0.000000] ACPI: HPET 00000000afefc000 00038 (v01 HPQOEM SLIC-MPC 00000001 LOHR 01000013) [ 0.000000] ACPI: APIC 00000000afefb000 00084 (v02 HPQOEM SLIC-MPC 00000001 LOHR 01000013) [ 0.000000] ACPI: MCFG 00000000afefa000 0003C (v01 HPQOEM SLIC-MPC 00000001 LOHR 01000013) [ 0.000000] ACPI: BOOT 00000000afeee000 00028 (v01 HPQOEM SLIC-MPC 00000001 LOHR 01000013) [ 0.000000] ACPI: SLIC 00000000afeed000 00176 (v01 HPQOEM SLIC-MPC 00000001 LOHR 01000013) [ 0.000000] ACPI: SSDT 00000000afeec000 00386 (v01 AMD PowerNow 00000001 AMD 00000001) [ 0.000000] ACPI: Local APIC address 0xfee00000 [ 0.000000] Scanning NUMA topology in Northbridge 24 [ 0.000000] No NUMA configuration found [ 0.000000] Faking a node at 0000000000000000-0000000140000000 [ 0.000000] Initmem setup node 0 0000000000000000-0000000140000000 [ 0.000000] NODE_DATA [0000000100000000 - 0000000100004fff] [ 0.000000] [ffffea0000000000-ffffea00045fffff] PMD -> [ffff880100200000-ffff8801037fffff] on node 0 [ 0.000000] Zone PFN ranges: [ 0.000000] DMA 0x00000010 -> 0x00001000 [ 0.000000] DMA32 0x00001000 -> 0x00100000 [ 0.000000] Normal 0x00100000 -> 0x00140000 [ 0.000000] Movable zone start PFN for each node [ 0.000000] early_node_map[6] active PFN ranges [ 0.000000] 0: 0x00000010 -> 0x0000009f [ 0.000000] 0: 0x00000100 -> 0x000afd70 [ 0.000000] 0: 0x000afdbf -> 0x000afe58 [ 0.000000] 0: 0x000afebf -> 0x000afeec [ 0.000000] 0: 0x000afeff -> 0x000aff00 [ 0.000000] 0: 0x00100000 -> 0x00140000 [ 0.000000] On node 0 totalpages: 982470 [ 0.000000] DMA zone: 56 pages used for memmap [ 0.000000] DMA zone: 0 pages reserved [ 0.000000] DMA zone: 3927 pages, LIFO batch:0 [ 0.000000] DMA32 zone: 14280 pages used for memmap [ 0.000000] DMA32 zone: 702063 pages, LIFO batch:31 [ 0.000000] Normal zone: 3584 pages used for memmap [ 0.000000] Normal zone: 258560 pages, LIFO batch:31 [ 0.000000] ACPI: PM-Timer IO Port: 0x408 [ 0.000000] ACPI: Local APIC address 0xfee00000 [ 0.000000] ACPI: LAPIC (acpi_id[0x00] lapic_id[0x00] enabled) [ 0.000000] ACPI: LAPIC (acpi_id[0x01] lapic_id[0x01] enabled) [ 0.000000] ACPI: LAPIC (acpi_id[0x02] lapic_id[0x00] disabled) [ 0.000000] ACPI: LAPIC (acpi_id[0x03] lapic_id[0x00] disabled) [ 0.000000] ACPI: LAPIC_NMI (acpi_id[0x00] high edge lint[0x1]) [ 0.000000] ACPI: LAPIC_NMI (acpi_id[0x01] high edge lint[0x1]) [ 0.000000] ACPI: LAPIC_NMI (acpi_id[0x02] high edge lint[0x1]) [ 0.000000] ACPI: LAPIC_NMI (acpi_id[0x03] high edge lint[0x1]) [ 0.000000] ACPI: IOAPIC (id[0x04] address[0xfec00000] gsi_base[0]) [ 0.000000] IOAPIC[0]: apic_id 4, version 33, address 0xfec00000, GSI 0-23 [ 0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 0 global_irq 2 dfl dfl) [ 0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 9 global_irq 9 low level) [ 0.000000] ACPI: IRQ0 used by override. [ 0.000000] ACPI: IRQ2 used by override. [ 0.000000] ACPI: IRQ9 used by override. [ 0.000000] Using ACPI (MADT) for SMP configuration information [ 0.000000] ACPI: HPET id: 0x1002a201 base: 0xfed00000 [ 0.000000] SMP: Allowing 4 CPUs, 2 hotplug CPUs [ 0.000000] nr_irqs_gsi: 40 [ 0.000000] early_res array is doubled to 64 at [1a000 - 1a7ff] [ 0.000000] PM: Registered nosave memory: 000000000009f000 - 00000000000a0000 [ 0.000000] PM: Registered nosave memory: 00000000000a0000 - 00000000000e0000 [ 0.000000] PM: Registered nosave memory: 00000000000e0000 - 0000000000100000 [ 0.000000] PM: Registered nosave memory: 00000000afd70000 - 00000000afdbf000 [ 0.000000] PM: Registered nosave memory: 00000000afe58000 - 00000000afebf000 [ 0.000000] PM: Registered nosave memory: 00000000afeec000 - 00000000afeff000 [ 0.000000] PM: Registered nosave memory: 00000000aff00000 - 00000000e0000000 [ 0.000000] PM: Registered nosave memory: 00000000e0000000 - 00000000e1000000 [ 0.000000] PM: Registered nosave memory: 00000000e1000000 - 00000000fec00000 [ 0.000000] PM: Registered nosave memory: 00000000fec00000 - 00000000fec01000 [ 0.000000] PM: Registered nosave memory: 00000000fec01000 - 00000000fee00000 [ 0.000000] PM: Registered nosave memory: 00000000fee00000 - 00000000fee01000 [ 0.000000] PM: Registered nosave memory: 00000000fee01000 - 00000000fff00000 [ 0.000000] PM: Registered nosave memory: 00000000fff00000 - 0000000100000000 [ 0.000000] Allocating PCI resources starting at aff00000 (gap: aff00000:30100000) [ 0.000000] Booting paravirtualized kernel on bare hardware [ 0.000000] setup_percpu: NR_CPUS:64 nr_cpumask_bits:64 nr_cpu_ids:4 nr_node_ids:1 [ 0.000000] PERCPU: Embedded 30 pages/cpu @ffff880001e00000 s91456 r8192 d23232 u524288 [ 0.000000] pcpu-alloc: s91456 r8192 d23232 u524288 alloc=1*2097152 [ 0.000000] pcpu-alloc: [0] 0 1 2 3 [ 0.000000] early_res array is doubled to 128 at [1a800 - 1b7ff] [ 0.000000] Built 1 zonelists in Node order, mobility grouping on. Total pages: 964550 [ 0.000000] Policy zone: Normal [ 0.000000] Kernel command line: BOOT_IMAGE=/boot/vmlinuz-2.6.35-17-generic root=UUID=dc17aa56-caa0-4d4a-a916-96d0086fcc11 ro quiet splash [ 0.000000] PID hash table entries: 4096 (order: 3, 32768 bytes) [ 0.000000] Checking aperture... [ 0.000000] No AGP bridge found [ 0.000000] Calgary: detecting Calgary via BIOS EBDA area [ 0.000000] Calgary: Unable to locate Rio Grande table in EBDA - bailing! [ 0.000000] Subtract (60 early reservations) [ 0.000000] #1 [0001000000 - 0001d170d4] TEXT DATA BSS [ 0.000000] #2 [0037574000 - 0037ff0000] RAMDISK [ 0.000000] #3 [000009fc00 - 0000100000] BIOS reserved [ 0.000000] #4 [0001d18000 - 0001d18254] BRK [ 0.000000] #5 [0000010000 - 0000012000] TRAMPOLINE [ 0.000000] #6 [0000012000 - 0000016000] ACPI WAKEUP [ 0.000000] #7 [0000016000 - 0000019000] PGTABLE [ 0.000000] #8 [0000019000 - 000001a000] PGTABLE [ 0.000000] #9 [0100000000 - 0100005000] NODE_DATA [ 0.000000] #10 [0001d18280 - 0001d19280] BOOTMEM [ 0.000000] #11 [0001d17100 - 0001d173d0] BOOTMEM [ 0.000000] #12 [0100005000 - 0100006000] BOOTMEM [ 0.000000] #13 [0100006000 - 0100007000] BOOTMEM [ 0.000000] #14 [0100200000 - 0103800000] MEMMAP 0 [ 0.000000] #15 [0001d17400 - 0001d17580] BOOTMEM [ 0.000000] #16 [0001d19280 - 0001d31280] BOOTMEM [ 0.000000] #17 [0001d31280 - 0001d37280] BOOTMEM [ 0.000000] #18 [0001d38000 - 0001d39000] BOOTMEM [ 0.000000] #19 [0001d17580 - 0001d175c1] BOOTMEM [ 0.000000] #20 [0001d17600 - 0001d17643] BOOTMEM [ 0.000000] #21 [0001d17680 - 0001d17a00] BOOTMEM [ 0.000000] #22 [0001d17a00 - 0001d17a68] BOOTMEM [ 0.000000] #23 [0001d17a80 - 0001d17ae8] BOOTMEM [ 0.000000] #24 [0001d17b00 - 0001d17b68] BOOTMEM [ 0.000000] #25 [0001d17b80 - 0001d17be8] BOOTMEM [ 0.000000] #26 [0001d17c00 - 0001d17c68] BOOTMEM [ 0.000000] #27 [0001d17c80 - 0001d17ce8] BOOTMEM [ 0.000000] #28 [0001d17d00 - 0001d17d68] BOOTMEM [ 0.000000] #29 [0001d17d80 - 0001d17de8] BOOTMEM [ 0.000000] #30 [0001d17e00 - 0001d17e68] BOOTMEM [ 0.000000] #31 [0001d17e80 - 0001d17ee8] BOOTMEM [ 0.000000] #32 [0001d17f00 - 0001d17f68] BOOTMEM [ 0.000000] #33 [0001d17f80 - 0001d17fe8] BOOTMEM [ 0.000000] #34 [0001d37280 - 0001d372e8] BOOTMEM [ 0.000000] #35 [0001d37300 - 0001d37368] BOOTMEM [ 0.000000] #36 [0001d37380 - 0001d373e8] BOOTMEM [ 0.000000] #37 [0001d37400 - 0001d37420] BOOTMEM [ 0.000000] #38 [0001d37440 - 0001d37460] BOOTMEM [ 0.000000] #39 [0001d37480 - 0001d374a0] BOOTMEM [ 0.000000] #40 [0001d374c0 - 0001d374e0] BOOTMEM [ 0.000000] #41 [0001d37500 - 0001d37520] BOOTMEM [ 0.000000] #42 [0001d37540 - 0001d375aa] BOOTMEM [ 0.000000] #43 [0001d375c0 - 0001d3762a] BOOTMEM [ 0.000000] #44 [0001e00000 - 0001e1e000] BOOTMEM [ 0.000000] #45 [0001e80000 - 0001e9e000] BOOTMEM [ 0.000000] #46 [0001f00000 - 0001f1e000] BOOTMEM [ 0.000000] #47 [0001f80000 - 0001f9e000] BOOTMEM [ 0.000000] #48 [0001d37640 - 0001d37648] BOOTMEM [ 0.000000] #49 [0001d37680 - 0001d37688] BOOTMEM [ 0.000000] #50 [0001d376c0 - 0001d376d0] BOOTMEM [ 0.000000] #51 [0001d37700 - 0001d37720] BOOTMEM [ 0.000000] #52 [0001d37740 - 0001d37870] BOOTMEM [ 0.000000] #53 [0001d37880 - 0001d378d0] BOOTMEM [ 0.000000] #54 [0001d37900 - 0001d37950] BOOTMEM [ 0.000000] #55 [0001d39000 - 0001d41000] BOOTMEM [ 0.000000] #56 [0001f9e000 - 0005f9e000] BOOTMEM [ 0.000000] #57 [0001d41000 - 0001d61000] BOOTMEM [ 0.000000] #58 [0001d61000 - 0001da1000] BOOTMEM [ 0.000000] #59 [000001b800 - 0000023800] BOOTMEM [ 0.000000] Memory: 3783772k/5242880k available (5698k kernel code, 1313000k absent, 146108k reserved, 5389k data, 908k init) [ 0.000000] SLUB: Genslabs=14, HWalign=64, Order=0-3, MinObjects=0, CPUs=4, Nodes=1 [ 0.000000] Hierarchical RCU implementation. [ 0.000000] RCU dyntick-idle grace-period acceleration is enabled. [ 0.000000] RCU-based detection of stalled CPUs is disabled. [ 0.000000] Verbose stalled-CPUs detection is disabled. [ 0.000000] NR_IRQS:4352 nr_irqs:712 [ 0.000000] spurious 8259A interrupt: IRQ7. [ 0.000000] Console: colour dummy device 80x25 [ 0.000000] console [tty0] enabled [ 0.000000] allocated 39321600 bytes of page_cgroup [ 0.000000] please try 'cgroup_disable=memory' option if you don't want memory cgroups [ 0.000000] hpet clockevent registered [ 0.000000] Fast TSC calibration using PIT [ 0.000000] Detected 2099.851 MHz processor. [ 0.030010] Calibrating delay loop (skipped), value calculated using timer frequency.. 4199.69 BogoMIPS (lpj=20998470) [ 0.030016] pid_max: default: 32768 minimum: 301 [ 0.030045] Security Framework initialized [ 0.030066] AppArmor: AppArmor initialized [ 0.030068] Yama: becoming mindful. [ 0.040094] Dentry cache hash table entries: 524288 (order: 10, 4194304 bytes) [ 0.042863] Inode-cache hash table entries: 262144 (order: 9, 2097152 bytes) [ 0.044126] Mount-cache hash table entries: 256 [ 0.044290] Initializing cgroup subsys ns [ 0.044295] Initializing cgroup subsys cpuacct [ 0.044300] Initializing cgroup subsys memory [ 0.044311] Initializing cgroup subsys devices [ 0.044314] Initializing cgroup subsys freezer [ 0.044316] Initializing cgroup subsys net_cls [ 0.044348] tseg: 00aff00000 [ 0.044351] CPU: Physical Processor ID: 0 [ 0.044352] CPU: Processor Core ID: 0 [ 0.044355] mce: CPU supports 5 MCE banks [ 0.044367] Performance Events: AMD PMU driver. [ 0.044373] ... version: 0 [ 0.044375] ... bit width: 48 [ 0.044377] ... generic registers: 4 [ 0.044379] ... value mask: 0000ffffffffffff [ 0.044381] ... max period: 00007fffffffffff [ 0.044383] ... fixed-purpose events: 0 [ 0.044385] ... event mask: 000000000000000f [ 0.046800] ACPI: Core revision 20100428 [ 0.060012] ftrace: converting mcount calls to 0f 1f 44 00 00 [ 0.060018] ftrace: allocating 22644 entries in 89 pages [ 0.070105] Setting APIC routing to flat [ 0.070500] ..TIMER: vector=0x30 apic1=0 pin1=2 apic2=-1 pin2=-1 [ 0.174398] CPU0: AMD Turion(tm) X2 Dual-Core Mobile RM-72 stepping 01 [ 0.180000] Booting Node 0, Processors #1 [ 0.340000] TSC synchronization [CPU#0 -> CPU#1]: [ 0.340000] Measured 227621142 cycles TSC warp between CPUs, turning off TSC clock. [ 0.340000] Marking TSC unstable due to check_tsc_sync_source failed [ 0.340010] Brought up 2 CPUs [ 0.340013] Total of 2 processors activated (8389.43 BogoMIPS). [ 0.340290] devtmpfs: initialized [ 0.340952] regulator: core version 0.5 [ 0.341019] Time: 19:49:59 Date: 08/21/10 [ 0.341076] NET: Registered protocol family 16 [ 0.341242] TOM: 00000000c0000000 aka 3072M [ 0.341245] Fam 10h mmconf [e0000000, e0ffffff] [ 0.341253] TOM2: 0000000140000000 aka 5120M [ 0.341264] ACPI: bus type pci registered [ 0.341389] PCI: MMCONFIG for domain 0000 [bus 00-0f] at [mem 0xe0000000-0xe0ffffff] (base 0xe0000000) [ 0.341393] PCI: MMCONFIG at [mem 0xe0000000-0xe0ffffff] reserved in E820 [ 0.343570] PCI: Using configuration type 1 for base access [ 0.343597] mtrr: your CPUs had inconsistent fixed MTRR settings [ 0.343599] mtrr: probably your BIOS does not setup all CPUs. [ 0.343601] mtrr: corrected configuration. [ 0.344272] Trying to unpack rootfs image as initramfs... [ 0.344272] bio: create slab at 0 [ 0.344272] ACPI: EC: Look up EC in DSDT [ 0.344272] ACPI: Executed 1 blocks of module-level executable AML code [ 0.351778] ACPI: BIOS _OSI(Linux) query ignored [ 0.380138] ACPI: Interpreter enabled [ 0.380142] ACPI: (supports S0 S3 S4 S5) [ 0.380171] ACPI: Using IOAPIC for interrupt routing [ 0.380867] [Firmware Bug]: ACPI: ACPI brightness control misses _BQC function [ 0.381289] [Firmware Bug]: ACPI: ACPI brightness control misses _BQC function [ 0.553405] ACPI: EC: GPE = 0x3, I/O: command/status = 0x66, data = 0x62 [ 0.553738] ACPI: No dock devices found. [ 0.553743] PCI: Using host bridge windows from ACPI; if necessary, use "pci=nocrs" and report a bug [ 0.555096] \_SB_.PCI0:_OSC request failed [ 0.555098] _OSC request data:1 8 1f [ 0.555103] ACPI: PCI Root Bridge [PCI0] (domain 0000 [bus 00-ff]) [ 0.557481] pci_root PNP0A08:00: host bridge window [io 0x0000-0x0cf7] [ 0.557485] pci_root PNP0A08:00: host bridge window [io 0x0d00-0xffff] [ 0.557488] pci_root PNP0A08:00: host bridge window [mem 0x000a0000-0x000bffff] [ 0.557491] pci_root PNP0A08:00: host bridge window [mem 0x000c0000-0x000c3fff] [ 0.557493] pci_root PNP0A08:00: host bridge window [mem 0x000c4000-0x000c7fff] [ 0.557496] pci_root PNP0A08:00: host bridge window [mem 0x000c8000-0x000cbfff] [ 0.557499] pci_root PNP0A08:00: host bridge window [mem 0x000cc000-0x000cffff] [ 0.557502] pci_root PNP0A08:00: host bridge window [mem 0x000d0000-0x000d3fff] [ 0.557505] pci_root PNP0A08:00: host bridge window [mem 0x000d4000-0x000d7fff] [ 0.557508] pci_root PNP0A08:00: host bridge window [mem 0x000d8000-0x000dbfff] [ 0.557511] pci_root PNP0A08:00: host bridge window [mem 0x000dc000-0x000dffff] [ 0.557513] pci_root PNP0A08:00: host bridge window [mem 0x000e0000-0x000e3fff] [ 0.557516] pci_root PNP0A08:00: host bridge window [mem 0x000e4000-0x000e7fff] [ 0.557519] pci_root PNP0A08:00: host bridge window [mem 0x000e8000-0x000ebfff] [ 0.557522] pci_root PNP0A08:00: host bridge window [mem 0x000ec000-0x000effff] [ 0.557525] pci_root PNP0A08:00: host bridge window [mem 0xc0000000-0xdfffffff] [ 0.557528] pci_root PNP0A08:00: host bridge window [mem 0xe1000000-0xffffffff] [ 0.557736] pci 0000:00:04.0: PME# supported from D0 D3hot D3cold [ 0.557740] pci 0000:00:04.0: PME# disabled [ 0.557796] pci 0000:00:05.0: PME# supported from D0 D3hot D3cold [ 0.557799] pci 0000:00:05.0: PME# disabled [ 0.557855] pci 0000:00:06.0: PME# supported from D0 D3hot D3cold [ 0.557859] pci 0000:00:06.0: PME# disabled [ 0.557914] pci 0000:00:07.0: PME# supported from D0 D3hot D3cold [ 0.557917] pci 0000:00:07.0: PME# disabled [ 0.558009] pci 0000:00:11.0: reg 10: [io 0x8038-0x803f] [ 0.558018] pci 0000:00:11.0: reg 14: [io 0x804c-0x804f] [ 0.558026] pci 0000:00:11.0: reg 18: [io 0x8030-0x8037] [ 0.558034] pci 0000:00:11.0: reg 1c: [io 0x8048-0x804b] [ 0.558042] pci 0000:00:11.0: reg 20: [io 0x8010-0x801f] [ 0.558051] pci 0000:00:11.0: reg 24: [mem 0xd2508000-0xd25083ff] [ 0.558114] pci 0000:00:12.0: reg 10: [mem 0xd2507000-0xd2507fff] [ 0.558180] pci 0000:00:12.1: reg 10: [mem 0xd2506000-0xd2506fff] [ 0.558260] pci 0000:00:12.2: reg 10: [mem 0xd2508500-0xd25085ff] [ 0.558323] pci 0000:00:12.2: supports D1 D2 [ 0.558325] pci 0000:00:12.2: PME# supported from D0 D1 D2 D3hot [ 0.558331] pci 0000:00:12.2: PME# disabled [ 0.558371] pci 0000:00:13.0: reg 10: [mem 0xd2505000-0xd2505fff] [ 0.558437] pci 0000:00:13.1: reg 10: [mem 0xd2504000-0xd2504fff] [ 0.558516] pci 0000:00:13.2: reg 10: [mem 0xd2508400-0xd25084ff] [ 0.558579] pci 0000:00:13.2: supports D1 D2 [ 0.558582] pci 0000:00:13.2: PME# supported from D0 D1 D2 D3hot [ 0.558587] pci 0000:00:13.2: PME# disabled [ 0.558719] pci 0000:00:14.1: reg 10: [io 0x0000-0x0007] [ 0.558727] pci 0000:00:14.1: reg 14: [io 0x0000-0x0003] [ 0.558735] pci 0000:00:14.1: reg 18: [io 0x0000-0x0007] [ 0.558743] pci 0000:00:14.1: reg 1c: [io 0x0000-0x0003] [ 0.558752] pci 0000:00:14.1: reg 20: [io 0x8000-0x800f] [ 0.558827] pci 0000:00:14.2: reg 10: [mem 0xd2500000-0xd2503fff 64bit] [ 0.558879] pci 0000:00:14.2: PME# supported from D0 D3hot D3cold [ 0.558884] pci 0000:00:14.2: PME# disabled [ 0.559241] pci 0000:01:05.0: reg 10: [mem 0xc0000000-0xcfffffff pref] [ 0.559246] pci 0000:01:05.0: reg 14: [io 0x7000-0x70ff] [ 0.559252] pci 0000:01:05.0: reg 18: [mem 0xd2400000-0xd240ffff] [ 0.559262] pci 0000:01:05.0: reg 24: [mem 0xd2300000-0xd23fffff] [ 0.559281] pci 0000:01:05.0: supports D1 D2 [ 0.559305] pci 0000:01:05.1: reg 10: [mem 0xd2410000-0xd2413fff] [ 0.559337] pci 0000:01:05.1: supports D1 D2 [ 0.559421] pci 0000:00:01.0: PCI bridge to [bus 01-01] [ 0.559426] pci 0000:00:01.0: bridge window [io 0x7000-0x7fff] [ 0.559430] pci 0000:00:01.0: bridge window [mem 0xd2300000-0xd24fffff] [ 0.559436] pci 0000:00:01.0: bridge window [mem 0xc0000000-0xcfffffff 64bit pref] [ 0.559475] pci 0000:00:04.0: PCI bridge to [bus 02-07] [ 0.559480] pci 0000:00:04.0: bridge window [io 0x3000-0x6fff] [ 0.559484] pci 0000:00:04.0: bridge window [mem 0xd1300000-0xd22fffff] [ 0.559490] pci 0000:00:04.0: bridge window [mem 0xd0000000-0xd0ffffff 64bit pref] [ 0.559555] pci 0000:08:00.0: reg 10: [mem 0xd1200300-0xd12003ff] [ 0.559596] pci 0000:08:00.0: reg 30: [mem 0xffff0000-0xffffffff pref] [ 0.559678] pci 0000:08:00.2: reg 10: [mem 0xd1200200-0xd12002ff] [ 0.559793] pci 0000:08:00.3: reg 10: [mem 0xd1200100-0xd12001ff] [ 0.559907] pci 0000:08:00.4: reg 10: [mem 0xd1200000-0xd12000ff] [ 0.580024] pci 0000:00:05.0: PCI bridge to [bus 08-08] [ 0.580029] pci 0000:00:05.0: bridge window [io 0xfffffffffffff000-0x0000] (disabled) [ 0.580033] pci 0000:00:05.0: bridge window [mem 0xd1200000-0xd12fffff] [ 0.580039] pci 0000:00:05.0: bridge window [mem 0xfff00000-0x000fffff pref] (disabled) [ 0.580109] pci 0000:09:00.0: reg 10: [mem 0xd1100000-0xd110ffff 64bit] [ 0.580189] pci 0000:09:00.0: disabling ASPM on pre-1.1 PCIe device. You can enable it with 'pcie_aspm=force' [ 0.580199] pci 0000:00:06.0: PCI bridge to [bus 09-09] [ 0.580204] pci 0000:00:06.0: bridge window [io 0xfffffffffffff000-0x0000] (disabled) [ 0.580208] pci 0000:00:06.0: bridge window [mem 0xd1100000-0xd11fffff] [ 0.580214] pci 0000:00:06.0: bridge window [mem 0xfff00000-0x000fffff pref] (disabled) [ 0.580278] pci 0000:0a:00.0: reg 10: [io 0x2000-0x20ff] [ 0.580296] pci 0000:0a:00.0: reg 18: [mem 0xd1010000-0xd1010fff 64bit pref] [ 0.580310] pci 0000:0a:00.0: reg 20: [mem 0xd1000000-0xd100ffff 64bit pref] [ 0.580318] pci 0000:0a:00.0: reg 30: [mem 0xfffe0000-0xffffffff pref] [ 0.580355] pci 0000:0a:00.0: supports D1 D2 [ 0.580357] pci 0000:0a:00.0: PME# supported from D0 D1 D2 D3hot D3cold [ 0.580362] pci 0000:0a:00.0: PME# disabled [ 0.600014] pci 0000:00:07.0: PCI bridge to [bus 0a-0a] [ 0.600019] pci 0000:00:07.0: bridge window [io 0x2000-0x2fff] [ 0.600023] pci 0000:00:07.0: bridge window [mem 0xfff00000-0x000fffff] (disabled) [ 0.600029] pci 0000:00:07.0: bridge window [mem 0xd1000000-0xd10fffff 64bit pref] [ 0.600103] pci 0000:00:14.4: PCI bridge to [bus 80-8f] (subtractive decode) [ 0.600108] pci 0000:00:14.4: bridge window [io 0x1000-0x1fff] [ 0.600114] pci 0000:00:14.4: bridge window [mem 0xfff00000-0x000fffff] (disabled) [ 0.600119] pci 0000:00:14.4: bridge window [mem 0xfff00000-0x000fffff pref] (disabled) [ 0.600123] pci 0000:00:14.4: bridge window [io 0x0000-0x0cf7] (subtractive decode) [ 0.600125] pci 0000:00:14.4: bridge window [io 0x0d00-0xffff] (subtractive decode) [ 0.600128] pci 0000:00:14.4: bridge window [mem 0x000a0000-0x000bffff] (subtractive decode) [ 0.600131] pci 0000:00:14.4: bridge window [mem 0x000c0000-0x000c3fff] (subtractive decode) [ 0.600134] pci 0000:00:14.4: bridge window [mem 0x000c4000-0x000c7fff] (subtractive decode) [ 0.600137] pci 0000:00:14.4: bridge window [mem 0x000c8000-0x000cbfff] (subtractive decode) [ 0.600140] pci 0000:00:14.4: bridge window [mem 0x000cc000-0x000cffff] (subtractive decode) [ 0.600143] pci 0000:00:14.4: bridge window [mem 0x000d0000-0x000d3fff] (subtractive decode) [ 0.600146] pci 0000:00:14.4: bridge window [mem 0x000d4000-0x000d7fff] (subtractive decode) [ 0.600149] pci 0000:00:14.4: bridge window [mem 0x000d8000-0x000dbfff] (subtractive decode) [ 0.600152] pci 0000:00:14.4: bridge window [mem 0x000dc000-0x000dffff] (subtractive decode) [ 0.600155] pci 0000:00:14.4: bridge window [mem 0x000e0000-0x000e3fff] (subtractive decode) [ 0.600158] pci 0000:00:14.4: bridge window [mem 0x000e4000-0x000e7fff] (subtractive decode) [ 0.600161] pci 0000:00:14.4: bridge window [mem 0x000e8000-0x000ebfff] (subtractive decode) [ 0.600164] pci 0000:00:14.4: bridge window [mem 0x000ec000-0x000effff] (subtractive decode) [ 0.600167] pci 0000:00:14.4: bridge window [mem 0xc0000000-0xdfffffff] (subtractive decode) [ 0.600170] pci 0000:00:14.4: bridge window [mem 0xe1000000-0xffffffff] (subtractive decode) [ 0.600234] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0._PRT] [ 0.600428] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.AGP_._PRT] [ 0.600537] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PB4_._PRT] [ 0.600655] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PB5_._PRT] [ 0.600810] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.EXP6._PRT] [ 0.600936] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PB7_._PRT] [ 0.601121] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.P2P_._PRT] [ 0.601364] \_SB_.PCI0:_OSC request failed [ 0.601366] _OSC request data:1 1f 1f [ 0.623529] Freeing initrd memory: 10736k freed [ 0.623461] ACPI: PCI Interrupt Link [LNKA] (IRQs 3 4 5 7 10 11 12 14 15) *0, disabled. [ 0.623713] ACPI: PCI Interrupt Link [LNKB] (IRQs 3 4 5 7 10 11 12 14 15) *0, disabled. [ 0.623962] ACPI: PCI Interrupt Link [LNKC] (IRQs 3 4 5 7 10 11 12 14 15) *0, disabled. [ 0.624211] ACPI: PCI Interrupt Link [LNKD] (IRQs 3 4 5 7 10 11 12 14 15) *0, disabled. [ 0.624460] ACPI: PCI Interrupt Link [LNKE] (IRQs 3 4 5 7 10 11 12 14 15) *0, disabled. [ 0.624708] ACPI: PCI Interrupt Link [LNKF] (IRQs 3 4 5 7 10 11 12 14 15) *0, disabled. [ 0.624957] ACPI: PCI Interrupt Link [LNKG] (IRQs 3 4 5 7 10 11 12 14 15) *0, disabled. [ 0.625207] ACPI: PCI Interrupt Link [LNKH] (IRQs 3 4 5 7 10 11 12 14 15) *0, disabled. [ 0.625310] HEST: Table is not found! [ 0.625441] vgaarb: device added: PCI:0000:01:05.0,decodes=io+mem,owns=io+mem,locks=none [ 0.625448] vgaarb: loaded [ 0.625631] SCSI subsystem initialized [ 0.625768] libata version 3.00 loaded. [ 0.625827] usbcore: registered new interface driver usbfs [ 0.625841] usbcore: registered new interface driver hub [ 0.625871] usbcore: registered new device driver usb [ 0.626154] ACPI: WMI: Mapper loaded [ 0.626156] PCI: Using ACPI for IRQ routing [ 0.626160] PCI: pci_cache_line_size set to 64 bytes [ 0.626345] reserve RAM buffer: 000000000009fc00 - 000000000009ffff [ 0.626348] reserve RAM buffer: 00000000afd70000 - 00000000afffffff [ 0.626352] reserve RAM buffer: 00000000afe58000 - 00000000afffffff [ 0.626355] reserve RAM buffer: 00000000afeec000 - 00000000afffffff [ 0.626358] reserve RAM buffer: 00000000aff00000 - 00000000afffffff [ 0.626476] NetLabel: Initializing [ 0.626478] NetLabel: domain hash size = 128 [ 0.626480] NetLabel: protocols = UNLABELED CIPSOv4 [ 0.626501] NetLabel: unlabeled traffic allowed by default [ 0.626582] hpet0: at MMIO 0xfed00000, IRQs 2, 8, 0, 0 [ 0.626587] hpet0: 4 comparators, 32-bit 14.318180 MHz counter [ 0.628618] Switching to clocksource hpet [ 0.630352] AppArmor: AppArmor Filesystem Enabled [ 0.630373] pnp: PnP ACPI init [ 0.630394] ACPI: bus type pnp registered [ 0.690322] alloc irq_desc for 23 on node 0 [ 0.690325] alloc kstat_irqs on node 0 [ 0.691039] pnp: PnP ACPI: found 12 devices [ 0.691041] ACPI: ACPI bus type pnp unregistered [ 0.691058] system 00:01: [mem 0xfec00000-0xfec00fff] could not be reserved [ 0.691061] system 00:01: [mem 0xfee00000-0xfee00fff] has been reserved [ 0.691070] system 00:08: [io 0x0400-0x04cf] has been reserved [ 0.691073] system 00:08: [io 0x04d0-0x04d1] has been reserved [ 0.691076] system 00:08: [io 0x04d6] has been reserved [ 0.691079] system 00:08: [io 0x0680-0x06ff] has been reserved [ 0.691081] system 00:08: [io 0x077a] has been reserved [ 0.691084] system 00:08: [io 0x0c00-0x0c01] has been reserved [ 0.691087] system 00:08: [io 0x0c14] has been reserved [ 0.691090] system 00:08: [io 0x0c50-0x0c52] has been reserved [ 0.691093] system 00:08: [io 0x0c6c] has been reserved [ 0.691095] system 00:08: [io 0x0c6f] has been reserved [ 0.691098] system 00:08: [io 0x0cd0-0x0cdb] has been reserved [ 0.691104] system 00:09: [mem 0x000e0000-0x000fffff] could not be reserved [ 0.691107] system 00:09: [mem 0xfff00000-0xffffffff] has been reserved [ 0.696222] pci 0000:08:00.0: no compatible bridge window for [mem 0xffff0000-0xffffffff pref] [ 0.696229] pci 0000:0a:00.0: no compatible bridge window for [mem 0xfffe0000-0xffffffff pref] [ 0.696310] pci 0000:00:05.0: BAR 15: assigned [mem 0xd2600000-0xd26fffff pref] [ 0.696315] pci 0000:00:07.0: BAR 14: assigned [mem 0xd2700000-0xd27fffff] [ 0.696319] pci 0000:00:01.0: PCI bridge to [bus 01-01] [ 0.696323] pci 0000:00:01.0: bridge window [io 0x7000-0x7fff] [ 0.696328] pci 0000:00:01.0: bridge window [mem 0xd2300000-0xd24fffff] [ 0.696332] pci 0000:00:01.0: bridge window [mem 0xc0000000-0xcfffffff 64bit pref] [ 0.696337] pci 0000:00:04.0: PCI bridge to [bus 02-07] [ 0.696340] pci 0000:00:04.0: bridge window [io 0x3000-0x6fff] [ 0.696345] pci 0000:00:04.0: bridge window [mem 0xd1300000-0xd22fffff] [ 0.696349] pci 0000:00:04.0: bridge window [mem 0xd0000000-0xd0ffffff 64bit pref] [ 0.696355] pci 0000:08:00.0: BAR 6: assigned [mem 0xd2600000-0xd260ffff pref] [ 0.696359] pci 0000:00:05.0: PCI bridge to [bus 08-08] [ 0.696361] pci 0000:00:05.0: bridge window [io disabled] [ 0.696365] pci 0000:00:05.0: bridge window [mem 0xd1200000-0xd12fffff] [ 0.696369] pci 0000:00:05.0: bridge window [mem 0xd2600000-0xd26fffff pref] [ 0.696374] pci 0000:00:06.0: PCI bridge to [bus 09-09] [ 0.696376] pci 0000:00:06.0: bridge window [io disabled] [ 0.696381] pci 0000:00:06.0: bridge window [mem 0xd1100000-0xd11fffff] [ 0.696384] pci 0000:00:06.0: bridge window [mem pref disabled] [ 0.696390] pci 0000:0a:00.0: BAR 6: assigned [mem 0xd1020000-0xd103ffff pref] [ 0.696393] pci 0000:00:07.0: PCI bridge to [bus 0a-0a] [ 0.696396] pci 0000:00:07.0: bridge window [io 0x2000-0x2fff] [ 0.696400] pci 0000:00:07.0: bridge window [mem 0xd2700000-0xd27fffff] [ 0.696404] pci 0000:00:07.0: bridge window [mem 0xd1000000-0xd10fffff 64bit pref] [ 0.696410] pci 0000:00:14.4: PCI bridge to [bus 80-8f] [ 0.696447] pci 0000:00:14.4: bridge window [io 0x1000-0x1fff] [ 0.696453] pci 0000:00:14.4: bridge window [mem disabled] [ 0.696458] pci 0000:00:14.4: bridge window [mem pref disabled] [ 0.696472] pci 0000:00:01.0: setting latency timer to 64 [ 0.696481] alloc irq_desc for 16 on node -1 [ 0.696483] alloc kstat_irqs on node -1 [ 0.696489] pci 0000:00:04.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16 [ 0.696493] pci 0000:00:04.0: setting latency timer to 64 [ 0.696501] alloc irq_desc for 17 on node -1 [ 0.696502] alloc kstat_irqs on node -1 [ 0.696506] pci 0000:00:05.0: PCI INT A -> GSI 17 (level, low) -> IRQ 17 [ 0.696510] pci 0000:00:05.0: setting latency timer to 64 [ 0.696518] alloc irq_desc for 18 on node -1 [ 0.696519] alloc kstat_irqs on node -1 [ 0.696523] pci 0000:00:06.0: PCI INT A -> GSI 18 (level, low) -> IRQ 18 [ 0.696527] pci 0000:00:06.0: setting latency timer to 64 [ 0.696534] alloc irq_desc for 19 on node -1 [ 0.696536] alloc kstat_irqs on node -1 [ 0.696540] pci 0000:00:07.0: PCI INT A -> GSI 19 (level, low) -> IRQ 19 [ 0.696544] pci 0000:00:07.0: setting latency timer to 64 [ 0.696554] pci_bus 0000:00: resource 4 [io 0x0000-0x0cf7] [ 0.696556] pci_bus 0000:00: resource 5 [io 0x0d00-0xffff] [ 0.696559] pci_bus 0000:00: resource 6 [mem 0x000a0000-0x000bffff] [ 0.696562] pci_bus 0000:00: resource 7 [mem 0x000c0000-0x000c3fff] [ 0.696564] pci_bus 0000:00: resource 8 [mem 0x000c4000-0x000c7fff] [ 0.696567] pci_bus 0000:00: resource 9 [mem 0x000c8000-0x000cbfff] [ 0.696570] pci_bus 0000:00: resource 10 [mem 0x000cc000-0x000cffff] [ 0.696572] pci_bus 0000:00: resource 11 [mem 0x000d0000-0x000d3fff] [ 0.696575] pci_bus 0000:00: resource 12 [mem 0x000d4000-0x000d7fff] [ 0.696578] pci_bus 0000:00: resource 13 [mem 0x000d8000-0x000dbfff] [ 0.696580] pci_bus 0000:00: resource 14 [mem 0x000dc000-0x000dffff] [ 0.696583] pci_bus 0000:00: resource 15 [mem 0x000e0000-0x000e3fff] [ 0.696585] pci_bus 0000:00: resource 16 [mem 0x000e4000-0x000e7fff] [ 0.696588] pci_bus 0000:00: resource 17 [mem 0x000e8000-0x000ebfff] [ 0.696591] pci_bus 0000:00: resource 18 [mem 0x000ec000-0x000effff] [ 0.696593] pci_bus 0000:00: resource 19 [mem 0xc0000000-0xdfffffff] [ 0.696596] pci_bus 0000:00: resource 20 [mem 0xe1000000-0xffffffff] [ 0.696599] pci_bus 0000:01: resource 0 [io 0x7000-0x7fff] [ 0.696601] pci_bus 0000:01: resource 1 [mem 0xd2300000-0xd24fffff] [ 0.696604] pci_bus 0000:01: resource 2 [mem 0xc0000000-0xcfffffff 64bit pref] [ 0.696607] pci_bus 0000:02: resource 0 [io 0x3000-0x6fff] [ 0.696610] pci_bus 0000:02: resource 1 [mem 0xd1300000-0xd22fffff] [ 0.696613] pci_bus 0000:02: resource 2 [mem 0xd0000000-0xd0ffffff 64bit pref] [ 0.696616] pci_bus 0000:08: resource 1 [mem 0xd1200000-0xd12fffff] [ 0.696618] pci_bus 0000:08: resource 2 [mem 0xd2600000-0xd26fffff pref] [ 0.696621] pci_bus 0000:09: resource 1 [mem 0xd1100000-0xd11fffff] [ 0.696624] pci_bus 0000:0a: resource 0 [io 0x2000-0x2fff] [ 0.696626] pci_bus 0000:0a: resource 1 [mem 0xd2700000-0xd27fffff] [ 0.696629] pci_bus 0000:0a: resource 2 [mem 0xd1000000-0xd10fffff 64bit pref] [ 0.696632] pci_bus 0000:80: resource 0 [io 0x1000-0x1fff] [ 0.696635] pci_bus 0000:80: resource 4 [io 0x0000-0x0cf7] [ 0.696637] pci_bus 0000:80: resource 5 [io 0x0d00-0xffff] [ 0.696640] pci_bus 0000:80: resource 6 [mem 0x000a0000-0x000bffff] [ 0.696642] pci_bus 0000:80: resource 7 [mem 0x000c0000-0x000c3fff] [ 0.696645] pci_bus 0000:80: resource 8 [mem 0x000c4000-0x000c7fff] [ 0.696648] pci_bus 0000:80: resource 9 [mem 0x000c8000-0x000cbfff] [ 0.696650] pci_bus 0000:80: resource 10 [mem 0x000cc000-0x000cffff] [ 0.696653] pci_bus 0000:80: resource 11 [mem 0x000d0000-0x000d3fff] [ 0.696655] pci_bus 0000:80: resource 12 [mem 0x000d4000-0x000d7fff] [ 0.696658] pci_bus 0000:80: resource 13 [mem 0x000d8000-0x000dbfff] [ 0.696661] pci_bus 0000:80: resource 14 [mem 0x000dc000-0x000dffff] [ 0.696663] pci_bus 0000:80: resource 15 [mem 0x000e0000-0x000e3fff] [ 0.696666] pci_bus 0000:80: resource 16 [mem 0x000e4000-0x000e7fff] [ 0.696668] pci_bus 0000:80: resource 17 [mem 0x000e8000-0x000ebfff] [ 0.696671] pci_bus 0000:80: resource 18 [mem 0x000ec000-0x000effff] [ 0.696674] pci_bus 0000:80: resource 19 [mem 0xc0000000-0xdfffffff] [ 0.696676] pci_bus 0000:80: resource 20 [mem 0xe1000000-0xffffffff] [ 0.696720] NET: Registered protocol family 2 [ 0.696921] IP route cache hash table entries: 131072 (order: 8, 1048576 bytes) [ 0.698840] TCP established hash table entries: 524288 (order: 11, 8388608 bytes) [ 0.703724] TCP bind hash table entries: 65536 (order: 8, 1048576 bytes) [ 0.704300] TCP: Hash tables configured (established 524288 bind 65536) [ 0.704304] TCP reno registered [ 0.704322] UDP hash table entries: 2048 (order: 4, 65536 bytes) [ 0.704378] UDP-Lite hash table entries: 2048 (order: 4, 65536 bytes) [ 0.704533] NET: Registered protocol family 1 [ 0.704758] pci 0000:01:05.0: Boot video device [ 0.704782] PCI: CLS 64 bytes, default 64 [ 0.704785] PCI-DMA: Using software bounce buffering for IO (SWIOTLB) [ 0.704789] Placing 64MB software IO TLB between ffff880001f9e000 - ffff880005f9e000 [ 0.704791] software IO TLB at phys 0x1f9e000 - 0x5f9e000 [ 0.704867] Simple Boot Flag at 0x44 set to 0x1 [ 0.705066] Scanning for low memory corruption every 60 seconds [ 0.705261] audit: initializing netlink socket (disabled) [ 0.705272] type=2000 audit(1282420198.699:1): initialized [ 0.719826] HugeTLB registered 2 MB page size, pre-allocated 0 pages [ 0.721721] VFS: Disk quotas dquot_6.5.2 [ 0.721786] Dquot-cache hash table entries: 512 (order 0, 4096 bytes) [ 0.722557] fuse init (API version 7.14) [ 0.722678] msgmni has been set to 7411 [ 0.725876] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 253) [ 0.725881] io scheduler noop registered [ 0.725883] io scheduler deadline registered [ 0.725929] io scheduler cfq registered (default) [ 0.726088] pcieport 0000:00:04.0: setting latency timer to 64 [ 0.726122] alloc irq_desc for 40 on node -1 [ 0.726124] alloc kstat_irqs on node -1 [ 0.726136] pcieport 0000:00:04.0: irq 40 for MSI/MSI-X [ 0.726221] pcieport 0000:00:05.0: setting latency timer to 64 [ 0.726250] alloc irq_desc for 41 on node -1 [ 0.726252] alloc kstat_irqs on node -1 [ 0.726258] pcieport 0000:00:05.0: irq 41 for MSI/MSI-X [ 0.726318] pcieport 0000:00:06.0: setting latency timer to 64 [ 0.726346] alloc irq_desc for 42 on node -1 [ 0.726348] alloc kstat_irqs on node -1 [ 0.726354] pcieport 0000:00:06.0: irq 42 for MSI/MSI-X [ 0.726417] pcieport 0000:00:07.0: setting latency timer to 64 [ 0.726445] alloc irq_desc for 43 on node -1 [ 0.726447] alloc kstat_irqs on node -1 [ 0.726453] pcieport 0000:00:07.0: irq 43 for MSI/MSI-X [ 0.726535] pci_hotplug: PCI Hot Plug PCI Core version: 0.5 [ 0.726699] \_SB_.PCI0:_OSC request failed [ 0.726701] _OSC request data:1 0 1f [ 0.726824] \_SB_.PCI0:_OSC request failed [ 0.726826] _OSC request data:1 0 1f [ 0.726848] pciehp: PCI Express Hot Plug Controller Driver version: 0.4 [ 0.727165] vesafb: framebuffer at 0xc012c000, mapped to 0xffffc90002100000, using 1216k, total 1216k [ 0.727168] vesafb: mode is 640x480x32, linelength=2560, pages=0 [ 0.727171] vesafb: scrolling: redraw [ 0.727174] vesafb: Truecolor: size=0:8:8:8, shift=0:16:8:0 [ 0.800835] Console: switching to colour frame buffer device 80x30 [ 0.874465] fb0: VESA VGA frame buffer device [ 0.878941] ACPI: AC Adapter [ACAD] (on-line) [ 0.879025] input: Power Button as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0C:00/input/input0 [ 0.879030] ACPI: Power Button [PWRB] [ 0.879090] input: Lid Switch as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0D:00/input/input1 [ 0.879257] ACPI: Lid Switch [LID] [ 0.879303] input: Power Button as /devices/LNXSYSTM:00/LNXPWRBN:00/input/input2 [ 0.879306] ACPI: Power Button [PWRF] [ 0.879732] ACPI: acpi_idle registered with cpuidle [ 1.013045] thermal LNXTHERM:01: registered as thermal_zone0 [ 1.013055] ACPI: Thermal Zone [TZ01] (54 C) [ 1.013135] ERST: Table is not found! [ 1.014564] Linux agpgart interface v0.103 [ 1.014601] Serial: 8250/16550 driver, 4 ports, IRQ sharing enabled [ 1.016097] brd: module loaded [ 1.016666] loop: module loaded [ 1.016999] pata_acpi 0000:00:14.1: PCI INT A -> GSI 16 (level, low) -> IRQ 16 [ 1.017083] pata_acpi 0000:00:14.1: setting latency timer to 64 [ 1.017408] Fixed MDIO Bus: probed [ 1.017447] PPP generic driver version 2.4.2 [ 1.017487] tun: Universal TUN/TAP device driver, 1.6 [ 1.017489] tun: (C) 1999-2004 Max Krasnyansky [ 1.017572] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver [ 1.017625] ehci_hcd 0000:00:12.2: PCI INT B -> GSI 17 (level, low) -> IRQ 17 [ 1.017657] ehci_hcd 0000:00:12.2: setting latency timer to 64 [ 1.017661] ehci_hcd 0000:00:12.2: EHCI Host Controller [ 1.017696] ehci_hcd 0000:00:12.2: new USB bus registered, assigned bus number 1 [ 1.017776] ehci_hcd 0000:00:12.2: applying AMD SB600/SB700 USB freeze workaround [ 1.017792] ehci_hcd 0000:00:12.2: debug port 1 [ 1.017825] ehci_hcd 0000:00:12.2: irq 17, io mem 0xd2508500 [ 1.031309] ehci_hcd 0000:00:12.2: USB 2.0 started, EHCI 1.00 [ 1.031450] hub 1-0:1.0: USB hub found [ 1.031456] hub 1-0:1.0: 6 ports detected [ 1.031610] ehci_hcd 0000:00:13.2: PCI INT B -> GSI 19 (level, low) -> IRQ 19 [ 1.031624] ehci_hcd 0000:00:13.2: setting latency timer to 64 [ 1.031628] ehci_hcd 0000:00:13.2: EHCI Host Controller [ 1.031666] ehci_hcd 0000:00:13.2: new USB bus registered, assigned bus number 2 [ 1.031733] ehci_hcd 0000:00:13.2: applying AMD SB600/SB700 USB freeze workaround [ 1.031749] ehci_hcd 0000:00:13.2: debug port 1 [ 1.031774] ehci_hcd 0000:00:13.2: irq 19, io mem 0xd2508400 [ 1.051282] ehci_hcd 0000:00:13.2: USB 2.0 started, EHCI 1.00 [ 1.051389] hub 2-0:1.0: USB hub found [ 1.051393] hub 2-0:1.0: 6 ports detected [ 1.051503] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver [ 1.051552] ohci_hcd 0000:00:12.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16 [ 1.051565] ohci_hcd 0000:00:12.0: setting latency timer to 64 [ 1.051569] ohci_hcd 0000:00:12.0: OHCI Host Controller [ 1.051609] ohci_hcd 0000:00:12.0: new USB bus registered, assigned bus number 3 [ 1.051672] ohci_hcd 0000:00:12.0: irq 16, io mem 0xd2507000 [ 1.114182] hub 3-0:1.0: USB hub found [ 1.114225] hub 3-0:1.0: 3 ports detected [ 1.114301] ohci_hcd 0000:00:12.1: PCI INT A -> GSI 16 (level, low) -> IRQ 16 [ 1.114316] ohci_hcd 0000:00:12.1: setting latency timer to 64 [ 1.114320] ohci_hcd 0000:00:12.1: OHCI Host Controller [ 1.114369] ohci_hcd 0000:00:12.1: new USB bus registered, assigned bus number 4 [ 1.114421] ohci_hcd 0000:00:12.1: irq 16, io mem 0xd2506000 [ 1.174156] hub 4-0:1.0: USB hub found [ 1.174197] hub 4-0:1.0: 3 ports detected [ 1.174268] ohci_hcd 0000:00:13.0: PCI INT A -> GSI 18 (level, low) -> IRQ 18 [ 1.174283] ohci_hcd 0000:00:13.0: setting latency timer to 64 [ 1.174287] ohci_hcd 0000:00:13.0: OHCI Host Controller [ 1.174321] ohci_hcd 0000:00:13.0: new USB bus registered, assigned bus number 5 [ 1.174350] ohci_hcd 0000:00:13.0: irq 18, io mem 0xd2505000 [ 1.234167] hub 5-0:1.0: USB hub found [ 1.234208] hub 5-0:1.0: 3 ports detected [ 1.234283] ohci_hcd 0000:00:13.1: PCI INT A -> GSI 18 (level, low) -> IRQ 18 [ 1.234297] ohci_hcd 0000:00:13.1: setting latency timer to 64 [ 1.234300] ohci_hcd 0000:00:13.1: OHCI Host Controller [ 1.234335] ohci_hcd 0000:00:13.1: new USB bus registered, assigned bus number 6 [ 1.234352] ohci_hcd 0000:00:13.1: irq 18, io mem 0xd2504000 [ 1.294241] hub 6-0:1.0: USB hub found [ 1.294267] hub 6-0:1.0: 3 ports detected [ 1.294347] uhci_hcd: USB Universal Host Controller Interface driver [ 1.294491] PNP: PS/2 Controller [PNP0303:KBC0,PNP0f13:PS2M] at 0x60,0x64 irq 1,12 [ 1.333590] serio: i8042 KBD port at 0x60,0x64 irq 1 [ 1.333609] serio: i8042 AUX port at 0x60,0x64 irq 12 [ 1.333689] mice: PS/2 mouse device common for all mice [ 1.333826] rtc_cmos 00:04: RTC can wake from S4 [ 1.333874] rtc_cmos 00:04: rtc core: registered rtc_cmos as rtc0 [ 1.333940] rtc0: alarms up to one day, 114 bytes nvram, hpet irqs [ 1.334044] device-mapper: uevent: version 1.0.3 [ 1.334146] device-mapper: ioctl: 4.17.0-ioctl (2010-03-05) initialised: dm-devel@redhat.com [ 1.334256] device-mapper: multipath: version 1.1.1 loaded [ 1.334259] device-mapper: multipath round-robin: version 1.0.0 loaded [ 1.334503] cpuidle: using governor ladder [ 1.334506] cpuidle: using governor menu [ 1.334814] TCP cubic registered [ 1.334943] NET: Registered protocol family 10 [ 1.335368] lo: Disabled Privacy Extensions [ 1.335589] NET: Registered protocol family 17 [ 1.336402] powernow-k8: Found 1 AMD Turion(tm) X2 Dual-Core Mobile RM-72 (2 cpu cores) (version 2.20.00) [ 1.336465] powernow-k8: 0 : pstate 0 (2100 MHz) [ 1.336467] powernow-k8: 1 : pstate 1 (1050 MHz) [ 1.336469] powernow-k8: 2 : pstate 2 (525 MHz) [ 1.337857] PM: Resume from disk failed. [ 1.337871] registered taskstats version 1 [ 1.338328] Magic number: 6:394:850 [ 1.338482] rtc_cmos 00:04: setting system clock to 2010-08-21 19:50:00 UTC (1282420200) [ 1.338485] BIOS EDD facility v0.16 2004-Jun-25, 0 devices found [ 1.338488] EDD information not available. [ 1.338591] Freeing unused kernel memory: 908k freed [ 1.339037] Write protecting the kernel read-only data: 10240k [ 1.339221] Freeing unused kernel memory: 424k freed [ 1.339599] Freeing unused kernel memory: 1644k freed [ 1.360119] usb 1-6: new high speed USB device using ehci_hcd and address 2 [ 1.365611] udev[73]: starting version 162 [ 1.369463] input: AT Translated Set 2 keyboard as /devices/platform/i8042/serio0/input/input3 [ 1.491894] ACPI: Battery Slot [BAT0] (battery present) [ 1.703341] sdhci: Secure Digital Host Controller Interface driver [ 1.703346] sdhci: Copyright(c) Pierre Ossman [ 1.704889] sdhci-pci 0000:08:00.0: SDHCI controller found [197b:2382] (rev 0) [ 1.704916] sdhci-pci 0000:08:00.0: PCI INT A -> GSI 17 (level, low) -> IRQ 17 [ 1.704981] sdhci-pci 0000:08:00.0: setting latency timer to 64 [ 1.705028] Registered led device: mmc0:: [ 1.705083] mmc0: SDHCI controller on PCI [0000:08:00.0] using ADMA [ 1.725695] scsi0 : pata_atiixp [ 1.737284] r8169 Gigabit Ethernet driver 2.3LK-NAPI loaded [ 1.737316] r8169 0000:0a:00.0: PCI INT A -> GSI 19 (level, low) -> IRQ 19 [ 1.737388] r8169 0000:0a:00.0: setting latency timer to 64 [ 1.737428] alloc irq_desc for 44 on node -1 [ 1.737431] alloc kstat_irqs on node -1 [ 1.737447] r8169 0000:0a:00.0: irq 44 for MSI/MSI-X [ 1.738106] r8169 0000:0a:00.0: eth0: RTL8102e at 0xffffc900020b2000, 00:23:5a:9d:f6:ea, XID 04c00000 IRQ 44 [ 1.743794] sdhci-pci 0000:08:00.2: SDHCI controller found [197b:2381] (rev 0) [ 1.743823] sdhci-pci 0000:08:00.2: PCI INT A -> GSI 17 (level, low) -> IRQ 17 [ 1.743836] sdhci-pci 0000:08:00.2: Refusing to bind to secondary interface. [ 1.743843] sdhci-pci 0000:08:00.2: PCI INT A disabled [ 1.758174] scsi1 : pata_atiixp [ 1.759479] ata1: PATA max UDMA/100 cmd 0x1f0 ctl 0x3f6 bmdma 0x8000 irq 14 [ 1.759482] ata2: PATA max UDMA/100 cmd 0x170 ctl 0x376 bmdma 0x8008 irq 15 [ 1.759929] ahci 0000:00:11.0: version 3.0 [ 1.760090] alloc irq_desc for 22 on node -1 [ 1.760092] alloc kstat_irqs on node -1 [ 1.760102] ahci 0000:00:11.0: PCI INT A -> GSI 22 (level, low) -> IRQ 22 [ 1.760362] ahci 0000:00:11.0: AHCI 0001.0100 32 slots 6 ports 3 Gbps 0x3f impl SATA mode [ 1.760367] ahci 0000:00:11.0: flags: 64bit ncq sntf ilck pm led clo pmp pio slum part ccc [ 1.761898] scsi2 : ahci [ 1.762056] scsi3 : ahci [ 1.762120] scsi4 : ahci [ 1.762215] scsi5 : ahci [ 1.762312] scsi6 : ahci [ 1.762411] scsi7 : ahci [ 1.762497] ata3: SATA max UDMA/133 abar m1024@0xd2508000 port 0xd2508100 irq 22 [ 1.762502] ata4: SATA max UDMA/133 abar m1024@0xd2508000 port 0xd2508180 irq 22 [ 1.762506] ata5: SATA max UDMA/133 abar m1024@0xd2508000 port 0xd2508200 irq 22 [ 1.762510] ata6: SATA max UDMA/133 abar m1024@0xd2508000 port 0xd2508280 irq 22 [ 1.762514] ata7: SATA max UDMA/133 abar m1024@0xd2508000 port 0xd2508300 irq 22 [ 1.762518] ata8: SATA max UDMA/133 abar m1024@0xd2508000 port 0xd2508380 irq 22 [ 2.100074] ata4: SATA link down (SStatus 0 SControl 300) [ 2.100108] ata8: SATA link down (SStatus 0 SControl 300) [ 2.110074] ata5: SATA link down (SStatus 0 SControl 300) [ 2.110103] ata7: SATA link down (SStatus 0 SControl 300) [ 2.280055] ata6: softreset failed (device not ready) [ 2.280058] ata6: applying SB600 PMP SRST workaround and retrying [ 2.290107] ata3: softreset failed (device not ready) [ 2.290110] ata3: applying SB600 PMP SRST workaround and retrying [ 2.460066] ata6: SATA link up 1.5 Gbps (SStatus 113 SControl 300) [ 2.464182] ata6.00: ATAPI: HL-DT-ST DVDRAM GT20L, DC03, max UDMA/100 [ 2.469045] ata6.00: configured for UDMA/100 [ 2.471313] ata3: SATA link up 3.0 Gbps (SStatus 123 SControl 300) [ 2.471848] ata3.00: ATA-8: FUJITSU MHZ2320BH G2, 8909, max UDMA/100 [ 2.471850] ata3.00: 625142448 sectors, multi 16: LBA48 NCQ (depth 31/32), AA [ 2.472566] ata3.00: configured for UDMA/100 [ 2.490279] scsi 2:0:0:0: Direct-Access ATA FUJITSU MHZ2320B 8909 PQ: 0 ANSI: 5 [ 2.490477] sd 2:0:0:0: Attached scsi generic sg0 type 0 [ 2.490584] sd 2:0:0:0: [sda] 625142448 512-byte logical blocks: (320 GB/298 GiB) [ 2.490732] sd 2:0:0:0: [sda] Write Protect is off [ 2.490735] sd 2:0:0:0: [sda] Mode Sense: 00 3a 00 00 [ 2.490787] sd 2:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA [ 2.491085] sda: [ 2.493606] scsi 5:0:0:0: CD-ROM HL-DT-ST DVDRAM GT20L DC03 PQ: 0 ANSI: 5 [ 2.504908] sr0: scsi3-mmc drive: 24x/24x writer dvd-ram cd/rw xa/form2 cdda tray [ 2.504913] Uniform CD-ROM driver Revision: 3.20 [ 2.505045] sr 5:0:0:0: Attached scsi CD-ROM sr0 [ 2.505122] sr 5:0:0:0: Attached scsi generic sg1 type 5 [ 2.527237] sda1 sda2 sda3 < sda5 sda6 > [ 2.546333] sd 2:0:0:0: [sda] Attached SCSI disk [ 3.129127] EXT4-fs (sda6): mounted filesystem with ordered data mode. Opts: (null) [ 5.956755] Adding 8787516k swap on /dev/sda5. Priority:-1 extents:1 across:8787516k [ 5.976184] udev[386]: starting version 162 [ 6.054853] lirc_dev: IR Remote Control driver registered, major 61 [ 6.057101] BUG: unable to handle kernel NULL pointer dereference at (null) [ 6.059918] IP: [] kfifo_alloc+0x2e/0xb0 [ 6.061590] PGD 13ad1b067 PUD 13ad1a067 PMD 0 [ 6.061590] Oops: 0002 [#1] SMP [ 6.061590] last sysfs file: /sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:26/PNP0303:00/uevent [ 6.061590] CPU 1 [ 6.061590] Modules linked in: lirc_ene0100(+) input_polldev(+) lirc_dev parport(+) ahci r8169 mii sdhci_pci sdhci led_class pata_atiixp libahci [ 6.061590] [ 6.061590] Pid: 407, comm: modprobe Not tainted 2.6.35-17-generic #23-Ubuntu 30FC/HP Pavilion dv7 Notebook PC [ 6.061590] RIP: 0010:[] [] kfifo_alloc+0x2e/0xb0 [ 6.061590] RSP: 0018:ffff88013b475d08 EFLAGS: 00010286 [ 6.061590] RAX: ffff8801384be000 RBX: 0000000000000000 RCX: ffffffff8107f199 [ 6.061590] RDX: ffff8801384ba000 RSI: 00000000000000d0 RDI: 0000000000000246 [ 6.061590] RBP: ffff88013b475d18 R08: 0000000000000000 R09: 0000000000000246 [ 6.061590] R10: 0000000000000030 R11: 0000000000000000 R12: 0000000000001000 [ 6.061590] R13: ffff8801394bc800 R14: ffff88013b64c280 R15: 00000000fffffff4 [ 6.061590] FS: 00007f5fb9cd0700(0000) GS:ffff880001e80000(0000) knlGS:0000000000000000 [ 6.061590] CS: 0010 DS: 0000 ES: 0000 CR0: 000000008005003b [ 6.061590] CR2: 0000000000000000 CR3: 000000013ad17000 CR4: 00000000000006e0 [ 6.061590] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 [ 6.061590] DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400 [ 6.061590] Process modprobe (pid: 407, threadinfo ffff88013b474000, task ffff88013b478000) [ 6.061590] Stack: [ 6.061590] ffff88013a65cb40 ffff88013b61b7e0 ffff88013b475d58 ffffffffa005ee4f [ 6.156739] [Firmware Bug]: ACPI: ACPI brightness control misses _BQC function [ 6.162452] acpi device:03: registered as cooling_device2 [ 6.162685] input: Video Bus as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:01/LNXVIDEO:00/input/input4 [ 6.162752] ACPI: Video Device [VGA] (multi-head: yes rom: no post: no) [ 6.248502] lis3lv02d: hardware type DV7 found. [ 6.249343] lis3lv02d: 8 bits sensor found [ 6.497484] shpchp: Standard Hot Plug PCI Controller Driver version: 0.4 [ 6.489816] [ 6.489816] <0> ffff88013b475d38 ffffffffa005f060 ffff8801394bc800 ffffffffa005f580 [ 6.489816] <0> ffffffffa005f540 00000000fffffff4 ffff88013b475d98 ffffffff8133d7d5 [ 6.489816] Call Trace: [ 6.489816] [] ene_probe+0x17f/0x350 [lirc_ene0100] [ 6.489816] [] pnp_device_probe+0x95/0x100 [ 6.489816] [] ? driver_sysfs_add+0x62/0x90 [ 6.489816] [] really_probe+0x68/0x190 [ 6.489816] [] driver_probe_device+0x45/0x70 [ 6.489816] [] __driver_attach+0x9b/0xa0 [ 6.489816] [] ? __driver_attach+0x0/0xa0 [ 6.489816] [] bus_for_each_dev+0x68/0x90 [ 6.489816] [] driver_attach+0x1e/0x20 [ 6.489816] [] bus_add_driver+0xde/0x280 [ 6.489816] [] driver_register+0x80/0x150 [ 6.489816] [] ? ene_init+0x0/0x3e [lirc_ene0100] [ 6.489816] [] pnp_register_driver+0x21/0x30 [ 6.489816] [] ene_init+0x3c/0x3e [lirc_ene0100] [ 6.489816] [] do_one_initcall+0x3c/0x1a0 [ 6.489816] [] sys_init_module+0xbb/0x200 [ 6.489816] [] system_call_fastpath+0x16/0x1b [ 6.489816] Code: e5 41 54 53 0f 1f 44 00 00 48 89 fb 89 f7 41 89 f4 48 85 ff 48 8d 47 ff 74 33 48 85 f8 75 2e 89 d6 e8 07 35 0c 00 48 85 c0 74 52 <48> 89 03 44 89 63 08 31 c0 c7 43 10 00 00 00 00 c7 43 0c 00 00 [ 6.489816] RIP [] kfifo_alloc+0x2e/0xb0 [ 6.489816] RSP [ 6.489816] CR2: 0000000000000000 [ 6.692457] ---[ end trace ca37078d1bb9c7fe ]--- [ 8.104496] EXT4-fs (sda6): re-mounted. Opts: errors=remount-ro [ 8.151532] input: ST LIS3LV02DL Accelerometer as /devices/platform/lis3lv02d/input/input5 [ 8.253633] EDAC MC: Ver: 2.1.0 Aug 20 2010 [ 8.298888] lp: driver loaded but no devices found [ 8.341356] jmb38x_ms 0000:08:00.3: PCI INT A -> GSI 17 (level, low) -> IRQ 17 [ 8.420946] jmb38x_ms 0000:08:00.3: setting latency timer to 64 [ 8.423190] piix4_smbus 0000:00:14.0: SMBus Host Controller at 0xb00, revision 0 [ 8.622087] cfg80211: Calling CRDA to update world regulatory domain [ 8.675153] input: HP WMI hotkeys as /devices/virtual/input/input6 [ 8.685723] Linux video capture interface: v2.00 [ 8.689657] uvcvideo: Found UVC 1.00 device HP Webcam (090c:c371) [ 8.694701] input: HP Webcam as /devices/pci0000:00/0000:00:12.2/usb1/1-6/1-6:1.0/input/input7 [ 8.694770] usbcore: registered new interface driver uvcvideo [ 8.694772] USB Video Class driver (v0.1.0) [ 8.699808] [drm] Initialized drm 1.1.0 20060810 [ 9.070264] Registered led device: hp::hddprotect [ 9.129834] lis3lv02d driver loaded. [ 9.362550] EDAC amd64_edac: Ver: 3.3.0 Aug 20 2010 [ 9.414648] EDAC amd64: This node reports that Memory ECC is currently disabled, set F3x44[22] (0000:00:18.3). [ 9.524470] EDAC amd64: ECC disabled in the BIOS or no ECC capability, module will not load. [ 9.524471] Either enable ECC checking or force module loading by setting 'ecc_enable_override'. [ 9.524473] (Note that use of the override may cause unknown side effects.) [ 9.550099] type=1400 audit(1282434608.680:2): apparmor="STATUS" operation="profile_load" name="/sbin/dhclient3" pid=666 comm="apparmor_parser" [ 9.550393] type=1400 audit(1282434608.680:3): apparmor="STATUS" operation="profile_load" name="/usr/lib/NetworkManager/nm-dhcp-client.action" pid=666 comm="apparmor_parser" [ 9.550561] type=1400 audit(1282434608.680:4): apparmor="STATUS" operation="profile_load" name="/usr/lib/connman/scripts/dhclient-script" pid=666 comm="apparmor_parser" [ 10.260593] amd64_edac: probe of 0000:00:18.2 failed with error -22 [ 10.326545] ath5k 0000:09:00.0: PCI INT A -> GSI 18 (level, low) -> IRQ 18 [ 10.391727] ath5k 0000:09:00.0: setting latency timer to 64 [ 10.455952] ath5k 0000:09:00.0: registered as 'phy0' [ 11.023613] ath: EEPROM regdomain: 0x64 [ 11.088109] ath: EEPROM indicates we should expect a direct regpair map [ 11.151074] ath: Country alpha2 being used: 00 [ 11.211001] ath: Regpair used: 0x64 [ 11.273339] Synaptics Touchpad, model: 1, fw: 7.2, id: 0x1a0b1, caps: 0xd04751/0xa00000/0x20000 [ 11.468134] phy0: Selected rate control algorithm 'minstrel' [ 11.488470] [drm] radeon defaulting to kernel modesetting. [ 11.488474] [drm] radeon kernel modesetting enabled. [ 11.488597] radeon 0000:01:05.0: power state changed by ACPI to D0 [ 11.488608] radeon 0000:01:05.0: power state changed by ACPI to D0 [ 11.488617] radeon 0000:01:05.0: PCI INT A -> GSI 18 (level, low) -> IRQ 18 [ 11.488623] radeon 0000:01:05.0: setting latency timer to 64 [ 11.491951] [drm] initializing kernel modesetting (RS780 0x1002:0x9612). [ 11.917265] [drm] register mmio base: 0xD2400000 [ 11.919122] Registered led device: ath5k-phy0::rx [ 11.919236] Registered led device: ath5k-phy0::tx [ 11.919240] ath5k phy0: Atheros AR2425 chip found (MAC: 0xe2, PHY: 0x70) [ 11.924275] input: SynPS/2 Synaptics TouchPad as /devices/platform/i8042/serio1/input/input8 [ 12.184424] cfg80211: World regulatory domain updated: [ 12.184428] (start_freq - end_freq @ bandwidth), (max_antenna_gain, max_eirp) [ 12.184431] (2402000 KHz - 2472000 KHz @ 40000 KHz), (300 mBi, 2000 mBm) [ 12.184434] (2457000 KHz - 2482000 KHz @ 20000 KHz), (300 mBi, 2000 mBm) [ 12.184436] (2474000 KHz - 2494000 KHz @ 20000 KHz), (300 mBi, 2000 mBm) [ 12.184439] (5170000 KHz - 5250000 KHz @ 40000 KHz), (300 mBi, 2000 mBm) [ 12.184441] (5735000 KHz - 5835000 KHz @ 40000 KHz), (300 mBi, 2000 mBm) [ 12.516511] HDA Intel 0000:00:14.2: PCI INT A -> GSI 16 (level, low) -> IRQ 16 [ 12.673900] [drm] register mmio size: 65536 [ 12.678078] HDA Intel 0000:00:14.2: setting latency timer to 64 [ 12.701513] ATOM BIOS: HP_TrinityUMA [ 12.701541] [drm] Clocks initialized ! [ 12.701557] radeon 0000:01:05.0: VRAM: 256M 0xC0000000 - 0xCFFFFFFF (256M used) [ 12.701560] radeon 0000:01:05.0: GTT: 512M 0xA0000000 - 0xBFFFFFFF [ 12.969054] [drm] Detected VRAM RAM=256M, BAR=256M [ 12.972790] [drm] RAM width 32bits DDR [ 12.976492] [TTM] Zone kernel: Available graphics memory: 1898742 kiB. [ 12.980209] [TTM] Initializing pool allocator. [ 12.983781] [drm] radeon: 256M of VRAM memory ready [ 12.987185] [drm] radeon: 512M of GTT memory ready. [ 12.991010] [drm] radeon: irq initialized. [ 12.994491] [drm] GART: num cpu pages 131072, num gpu pages 131072 [ 12.999769] [drm] Loading RS780 Microcode [ 13.551590] input: HDA ATI SB Mic at Ext Front Jack as /devices/pci0000:00/0000:00:14.2/sound/card0/input9 [ 13.558778] input: HDA ATI SB HP Out at Ext Front Jack as /devices/pci0000:00/0000:00:14.2/sound/card0/input10 [ 14.226389] [drm] ring test succeeded in 0 usecs [ 14.230153] [drm] radeon: ib pool ready. [ 14.233927] [drm] ib test succeeded in 0 usecs [ 14.237253] [drm] Enabling audio support [ 14.237586] [drm] Unknown TV standard; defaulting to NTSC [ 14.244563] [drm] Radeon Display Connectors [ 14.248544] [drm] Connector 0: [ 14.252124] [drm] VGA [ 14.255470] [drm] DDC: 0x7e40 0x7e40 0x7e44 0x7e44 0x7e48 0x7e48 0x7e4c 0x7e4c [ 14.262416] [drm] Encoders: [ 14.265857] [drm] CRT1: INTERNAL_KLDSCP_DAC1 [ 14.269191] [drm] Connector 1: [ 14.272617] [drm] HDMI-A [ 14.275890] [drm] HPD1 [ 14.278962] [drm] DDC: 0x7e60 0x7e60 0x7e64 0x7e64 0x7e68 0x7e68 0x7e6c 0x7e6c [ 14.285322] [drm] Encoders: [ 14.288389] [drm] DFP1: INTERNAL_UNIPHY [ 14.291524] [drm] Connector 2: [ 14.294515] [drm] LVDS [ 14.297402] [drm] DDC: 0x7e50 0x7e50 0x7e54 0x7e54 0x7e58 0x7e58 0x7e5c 0x7e5c [ 14.303635] [drm] Encoders: [ 14.306714] [drm] LCD1: INTERNAL_KLDSCP_LVTMA [ 14.367081] [drm] radeon: power management initialized [ 14.887213] [drm] fb mappable at 0xC0141000 [ 14.890174] [drm] vram apper at 0xC0000000 [ 14.893021] [drm] size 5300224 [ 14.895660] [drm] fb depth is 24 [ 14.898315] [drm] pitch is 5888 [ 14.900959] checking generic (c012c000 130000) vs hw (c0000000 10000000) [ 14.903748] fb: conflicting fb hw usage radeondrmfb vs VESA VGA - removing generic driver [ 14.909279] Console: switching to colour dummy device 80x25 [ 15.372946] type=1400 audit(1282434614.530:5): apparmor="STATUS" operation="profile_replace" name="/sbin/dhclient3" pid=931 comm="apparmor_parser" [ 15.373244] type=1400 audit(1282434614.530:6): apparmor="STATUS" operation="profile_replace" name="/usr/lib/NetworkManager/nm-dhcp-client.action" pid=931 comm="apparmor_parser" [ 15.373413] type=1400 audit(1282434614.530:7): apparmor="STATUS" operation="profile_replace" name="/usr/lib/connman/scripts/dhclient-script" pid=931 comm="apparmor_parser" [ 15.397592] type=1400 audit(1282434614.550:8): apparmor="STATUS" operation="profile_load" name="/usr/share/gdm/guest-session/Xsession" pid=930 comm="apparmor_parser" [ 15.426585] type=1400 audit(1282434614.580:9): apparmor="STATUS" operation="profile_load" name="/usr/bin/evince" pid=932 comm="apparmor_parser" [ 15.430372] type=1400 audit(1282434614.580:10): apparmor="STATUS" operation="profile_load" name="/usr/bin/evince-previewer" pid=932 comm="apparmor_parser" [ 15.432923] type=1400 audit(1282434614.590:11): apparmor="STATUS" operation="profile_load" name="/usr/bin/evince-thumbnailer" pid=932 comm="apparmor_parser" [ 15.447046] type=1400 audit(1282434614.600:12): apparmor="STATUS" operation="profile_load" name="/usr/sbin/tcpdump" pid=935 comm="apparmor_parser" [ 15.455709] type=1400 audit(1282434614.610:13): apparmor="STATUS" operation="profile_load" name="/usr/lib/cups/backend/cups-pdf" pid=934 comm="apparmor_parser" [ 15.456105] type=1400 audit(1282434614.610:14): apparmor="STATUS" operation="profile_load" name="/usr/sbin/cupsd" pid=934 comm="apparmor_parser" [ 16.880192] Console: switching to colour frame buffer device 180x56 [ 16.905389] fb0: radeondrmfb frame buffer device [ 16.905391] drm: registered panic notifier [ 16.905640] Slow work thread pool: Starting up [ 16.905725] Slow work thread pool: Ready [ 16.905733] [drm] Initialized radeon 2.5.0 20080528 for 0000:01:05.0 on minor 0 [ 16.906231] HDA Intel 0000:01:05.1: PCI INT B -> GSI 19 (level, low) -> IRQ 19 [ 16.906315] alloc irq_desc for 45 on node -1 [ 16.906317] alloc kstat_irqs on node -1 [ 16.906330] HDA Intel 0000:01:05.1: irq 45 for MSI/MSI-X [ 16.906360] HDA Intel 0000:01:05.1: setting latency timer to 64 [ 17.925025] ADDRCONF(NETDEV_UP): wlan0: link is not ready [ 17.954736] r8169 0000:0a:00.0: eth0: link down [ 17.955868] ADDRCONF(NETDEV_UP): eth0: link is not ready Bug: 622200 [ 0.000000] Initializing cgroup subsys cpuset [ 0.000000] Initializing cgroup subsys cpu [ 0.000000] Linux version 2.6.35-17-generic (buildd@yellow) (gcc version 4.4.5 20100816 (prerelease) (Ubuntu/Linaro 4.4.4-9ubuntu1) ) #23-Ubuntu SMP Fri Aug 20 01:22:04 UTC 2010 (Ubuntu 2.6.35-17.23-generic 2.6.35.2) [ 0.000000] Command line: BOOT_IMAGE=/boot/vmlinuz-2.6.35-17-generic root=UUID=3a2f5553-3f7d-4405-b092-10591e22095f ro quiet splash [ 0.000000] BIOS-provided physical RAM map: [ 0.000000] BIOS-e820: 0000000000000000 - 000000000009fc00 (usable) [ 0.000000] BIOS-e820: 000000000009fc00 - 00000000000a0000 (reserved) [ 0.000000] BIOS-e820: 00000000000e0000 - 0000000000100000 (reserved) [ 0.000000] BIOS-e820: 0000000000100000 - 00000000afb8f000 (usable) [ 0.000000] BIOS-e820: 00000000afb8f000 - 00000000afc3c000 (ACPI NVS) [ 0.000000] BIOS-e820: 00000000afc3c000 - 00000000afd70000 (usable) [ 0.000000] BIOS-e820: 00000000afd70000 - 00000000afdbf000 (reserved) [ 0.000000] BIOS-e820: 00000000afdbf000 - 00000000afe57000 (usable) [ 0.000000] BIOS-e820: 00000000afe57000 - 00000000afebf000 (ACPI NVS) [ 0.000000] BIOS-e820: 00000000afebf000 - 00000000afee9000 (usable) [ 0.000000] BIOS-e820: 00000000afee9000 - 00000000afeff000 (ACPI data) [ 0.000000] BIOS-e820: 00000000afeff000 - 00000000aff00000 (usable) [ 0.000000] BIOS-e820: 00000000e0000000 - 00000000e4000000 (reserved) [ 0.000000] BIOS-e820: 00000000fec00000 - 00000000fec01000 (reserved) [ 0.000000] BIOS-e820: 00000000fee00000 - 00000000fee01000 (reserved) [ 0.000000] BIOS-e820: 00000000fff00000 - 0000000100000000 (reserved) [ 0.000000] BIOS-e820: 0000000100000000 - 0000000140000000 (usable) [ 0.000000] NX (Execute Disable) protection: active [ 0.000000] DMI 2.4 present. [ 0.000000] e820 update range: 0000000000000000 - 0000000000001000 (usable) ==> (reserved) [ 0.000000] e820 remove range: 00000000000a0000 - 0000000000100000 (usable) [ 0.000000] No AGP bridge found [ 0.000000] last_pfn = 0x140000 max_arch_pfn = 0x400000000 [ 0.000000] MTRR default type: uncachable [ 0.000000] MTRR fixed ranges enabled: [ 0.000000] 00000-9FFFF write-back [ 0.000000] A0000-BFFFF uncachable [ 0.000000] C0000-FFFFF write-through [ 0.000000] MTRR variable ranges enabled: [ 0.000000] 0 base 00FFF00000 mask FFFFF00000 write-protect [ 0.000000] 1 base 0000000000 mask FF80000000 write-back [ 0.000000] 2 base 0080000000 mask FFE0000000 write-back [ 0.000000] 3 base 00A0000000 mask FFF0000000 write-back [ 0.000000] 4 base 0100000000 mask FFC0000000 write-back [ 0.000000] 5 disabled [ 0.000000] 6 disabled [ 0.000000] 7 disabled [ 0.000000] TOM2: 0000000140000000 aka 5120M [ 0.000000] x86 PAT enabled: cpu 0, old 0x7040600070406, new 0x7010600070106 [ 0.000000] last_pfn = 0xaff00 max_arch_pfn = 0x400000000 [ 0.000000] e820 update range: 0000000000001000 - 0000000000010000 (usable) ==> (reserved) [ 0.000000] Scanning 1 areas for low memory corruption [ 0.000000] modified physical RAM map: [ 0.000000] modified: 0000000000000000 - 0000000000010000 (reserved) [ 0.000000] modified: 0000000000010000 - 000000000009fc00 (usable) [ 0.000000] modified: 000000000009fc00 - 00000000000a0000 (reserved) [ 0.000000] modified: 00000000000e0000 - 0000000000100000 (reserved) [ 0.000000] modified: 0000000000100000 - 00000000afb8f000 (usable) [ 0.000000] modified: 00000000afb8f000 - 00000000afc3c000 (ACPI NVS) [ 0.000000] modified: 00000000afc3c000 - 00000000afd70000 (usable) [ 0.000000] modified: 00000000afd70000 - 00000000afdbf000 (reserved) [ 0.000000] modified: 00000000afdbf000 - 00000000afe57000 (usable) [ 0.000000] modified: 00000000afe57000 - 00000000afebf000 (ACPI NVS) [ 0.000000] modified: 00000000afebf000 - 00000000afee9000 (usable) [ 0.000000] modified: 00000000afee9000 - 00000000afeff000 (ACPI data) [ 0.000000] modified: 00000000afeff000 - 00000000aff00000 (usable) [ 0.000000] modified: 00000000e0000000 - 00000000e4000000 (reserved) [ 0.000000] modified: 00000000fec00000 - 00000000fec01000 (reserved) [ 0.000000] modified: 00000000fee00000 - 00000000fee01000 (reserved) [ 0.000000] modified: 00000000fff00000 - 0000000100000000 (reserved) [ 0.000000] modified: 0000000100000000 - 0000000140000000 (usable) [ 0.000000] initial memory mapped : 0 - 20000000 [ 0.000000] init_memory_mapping: 0000000000000000-00000000aff00000 [ 0.000000] 0000000000 - 00afe00000 page 2M [ 0.000000] 00afe00000 - 00aff00000 page 4k [ 0.000000] kernel direct mapping tables up to aff00000 @ 16000-1b000 [ 0.000000] init_memory_mapping: 0000000100000000-0000000140000000 [ 0.000000] 0100000000 - 0140000000 page 2M [ 0.000000] kernel direct mapping tables up to 140000000 @ 19000-1f000 [ 0.000000] RAMDISK: 37572000 - 37ff0000 [ 0.000000] ACPI: RSDP 00000000000fe020 00024 (v02 HP ) [ 0.000000] ACPI: XSDT 00000000afefe120 00064 (v01 HPQOEM SLIC-MPC 00000003 01000013) [ 0.000000] ACPI: FACP 00000000afefd000 000F4 (v04 HP 3045 00000003 MSFT 0100000D) [ 0.000000] ACPI: DSDT 00000000afef1000 08BC6 (v01 HP 3045 F0000000 INTL 20051117) [ 0.000000] ACPI: FACS 00000000afe60000 00040 [ 0.000000] ACPI: HPET 00000000afefc000 00038 (v01 HP 3045 00000001 MSFT 000F4240) [ 0.000000] ACPI: APIC 00000000afefb000 00084 (v02 HP 3045 00000001 TFSM 000F4240) [ 0.000000] ACPI: MCFG 00000000afefa000 0003C (v01 HP 3045 00000001 TFSM 000F4240) [ 0.000000] ACPI: BOOT 00000000afef0000 00028 (v01 HP 3045 00000001 ? 00000001) [ 0.000000] ACPI: SLIC 00000000afeef000 00176 (v01 HPQOEM SLIC-MPC 06040000 LTP 00000001) [ 0.000000] ACPI: SSDT 00000000afeee000 00386 (v01 AMD PowerNow 00000001 AMD 00000001) [ 0.000000] ACPI: SRAT 00000000afeed000 000A0 (v03 AMD AMD CRB 00000001 AMD 00000001) [ 0.000000] ACPI: Local APIC address 0xfee00000 [ 0.000000] SRAT: PXM 0 -> APIC 0x00 -> Node 0 [ 0.000000] SRAT: PXM 0 -> APIC 0x01 -> Node 0 [ 0.000000] SRAT: Node 0 PXM 0 0-c0000000 [ 0.000000] SRAT: Node 0 PXM 0 100000000-140000000 [ 0.000000] SRAT: Node 0 [0,c0000000) + [100000000,140000000) -> [0,140000000) [ 0.000000] NUMA: Using 63 for the hash shift. [ 0.000000] Initmem setup node 0 0000000000000000-0000000140000000 [ 0.000000] NODE_DATA [0000000100000000 - 0000000100004fff] [ 0.000000] [ffffea0000000000-ffffea00045fffff] PMD -> [ffff880100200000-ffff8801037fffff] on node 0 [ 0.000000] Zone PFN ranges: [ 0.000000] DMA 0x00000010 -> 0x00001000 [ 0.000000] DMA32 0x00001000 -> 0x00100000 [ 0.000000] Normal 0x00100000 -> 0x00140000 [ 0.000000] Movable zone start PFN for each node [ 0.000000] early_node_map[7] active PFN ranges [ 0.000000] 0: 0x00000010 -> 0x0000009f [ 0.000000] 0: 0x00000100 -> 0x000afb8f [ 0.000000] 0: 0x000afc3c -> 0x000afd70 [ 0.000000] 0: 0x000afdbf -> 0x000afe57 [ 0.000000] 0: 0x000afebf -> 0x000afee9 [ 0.000000] 0: 0x000afeff -> 0x000aff00 [ 0.000000] 0: 0x00100000 -> 0x00140000 [ 0.000000] On node 0 totalpages: 982293 [ 0.000000] DMA zone: 56 pages used for memmap [ 0.000000] DMA zone: 0 pages reserved [ 0.000000] DMA zone: 3927 pages, LIFO batch:0 [ 0.000000] DMA32 zone: 14280 pages used for memmap [ 0.000000] DMA32 zone: 701886 pages, LIFO batch:31 [ 0.000000] Normal zone: 3584 pages used for memmap [ 0.000000] Normal zone: 258560 pages, LIFO batch:31 [ 0.000000] ACPI: PM-Timer IO Port: 0x408 [ 0.000000] ACPI: Local APIC address 0xfee00000 [ 0.000000] ACPI: LAPIC (acpi_id[0x00] lapic_id[0x00] enabled) [ 0.000000] ACPI: LAPIC (acpi_id[0x01] lapic_id[0x01] enabled) [ 0.000000] ACPI: LAPIC (acpi_id[0x02] lapic_id[0x00] disabled) [ 0.000000] ACPI: LAPIC (acpi_id[0x03] lapic_id[0x00] disabled) [ 0.000000] ACPI: LAPIC_NMI (acpi_id[0x00] high edge lint[0x1]) [ 0.000000] ACPI: LAPIC_NMI (acpi_id[0x01] high edge lint[0x1]) [ 0.000000] ACPI: LAPIC_NMI (acpi_id[0x02] high edge lint[0x1]) [ 0.000000] ACPI: LAPIC_NMI (acpi_id[0x03] high edge lint[0x1]) [ 0.000000] ACPI: IOAPIC (id[0x04] address[0xfec00000] gsi_base[0]) [ 0.000000] IOAPIC[0]: apic_id 4, version 33, address 0xfec00000, GSI 0-23 [ 0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 0 global_irq 2 dfl dfl) [ 0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 9 global_irq 9 low level) [ 0.000000] ACPI: IRQ0 used by override. [ 0.000000] ACPI: IRQ2 used by override. [ 0.000000] ACPI: IRQ9 used by override. [ 0.000000] Using ACPI (MADT) for SMP configuration information [ 0.000000] ACPI: HPET id: 0x1002a201 base: 0xfed00000 [ 0.000000] SMP: Allowing 4 CPUs, 2 hotplug CPUs [ 0.000000] nr_irqs_gsi: 40 [ 0.000000] early_res array is doubled to 64 at [1a000 - 1a7ff] [ 0.000000] PM: Registered nosave memory: 000000000009f000 - 00000000000a0000 [ 0.000000] PM: Registered nosave memory: 00000000000a0000 - 00000000000e0000 [ 0.000000] PM: Registered nosave memory: 00000000000e0000 - 0000000000100000 [ 0.000000] PM: Registered nosave memory: 00000000afb8f000 - 00000000afc3c000 [ 0.000000] PM: Registered nosave memory: 00000000afd70000 - 00000000afdbf000 [ 0.000000] PM: Registered nosave memory: 00000000afe57000 - 00000000afebf000 [ 0.000000] PM: Registered nosave memory: 00000000afee9000 - 00000000afeff000 [ 0.000000] PM: Registered nosave memory: 00000000aff00000 - 00000000e0000000 [ 0.000000] PM: Registered nosave memory: 00000000e0000000 - 00000000e4000000 [ 0.000000] PM: Registered nosave memory: 00000000e4000000 - 00000000fec00000 [ 0.000000] PM: Registered nosave memory: 00000000fec00000 - 00000000fec01000 [ 0.000000] PM: Registered nosave memory: 00000000fec01000 - 00000000fee00000 [ 0.000000] PM: Registered nosave memory: 00000000fee00000 - 00000000fee01000 [ 0.000000] PM: Registered nosave memory: 00000000fee01000 - 00000000fff00000 [ 0.000000] PM: Registered nosave memory: 00000000fff00000 - 0000000100000000 [ 0.000000] Allocating PCI resources starting at aff00000 (gap: aff00000:30100000) [ 0.000000] Booting paravirtualized kernel on bare hardware [ 0.000000] setup_percpu: NR_CPUS:64 nr_cpumask_bits:64 nr_cpu_ids:4 nr_node_ids:1 [ 0.000000] PERCPU: Embedded 30 pages/cpu @ffff880001e00000 s91456 r8192 d23232 u524288 [ 0.000000] early_res array is doubled to 128 at [1a800 - 1b7ff] [ 0.000000] pcpu-alloc: s91456 r8192 d23232 u524288 alloc=1*2097152 [ 0.000000] pcpu-alloc: [0] 0 1 2 3 [ 0.000000] Built 1 zonelists in Node order, mobility grouping on. Total pages: 964373 [ 0.000000] Policy zone: Normal [ 0.000000] Kernel command line: BOOT_IMAGE=/boot/vmlinuz-2.6.35-17-generic root=UUID=3a2f5553-3f7d-4405-b092-10591e22095f ro quiet splash [ 0.000000] PID hash table entries: 4096 (order: 3, 32768 bytes) [ 0.000000] Checking aperture... [ 0.000000] No AGP bridge found [ 0.000000] Calgary: detecting Calgary via BIOS EBDA area [ 0.000000] Calgary: Unable to locate Rio Grande table in EBDA - bailing! [ 0.000000] Subtract (63 early reservations) [ 0.000000] #1 [0001000000 - 0001d170d4] TEXT DATA BSS [ 0.000000] #2 [0037572000 - 0037ff0000] RAMDISK [ 0.000000] #3 [000009fc00 - 0000100000] BIOS reserved [ 0.000000] #4 [0001d18000 - 0001d181f0] BRK [ 0.000000] #5 [0000010000 - 0000012000] TRAMPOLINE [ 0.000000] #6 [0000012000 - 0000016000] ACPI WAKEUP [ 0.000000] #7 [0000016000 - 0000019000] PGTABLE [ 0.000000] #8 [0000019000 - 000001a000] PGTABLE [ 0.000000] #9 [0100000000 - 0100005000] NODE_DATA [ 0.000000] #10 [0001d18200 - 0001d19200] BOOTMEM [ 0.000000] #11 [0001d17100 - 0001d173d0] BOOTMEM [ 0.000000] #12 [0100005000 - 0100006000] BOOTMEM [ 0.000000] #13 [0100006000 - 0100007000] BOOTMEM [ 0.000000] #14 [0100200000 - 0103800000] MEMMAP 0 [ 0.000000] #15 [0001d17400 - 0001d17580] BOOTMEM [ 0.000000] #16 [0001d19200 - 0001d31200] BOOTMEM [ 0.000000] #17 [0001d31200 - 0001d37200] BOOTMEM [ 0.000000] #18 [0001d38000 - 0001d39000] BOOTMEM [ 0.000000] #19 [0001d17580 - 0001d175c1] BOOTMEM [ 0.000000] #20 [0001d17600 - 0001d17643] BOOTMEM [ 0.000000] #21 [0001d17680 - 0001d17a70] BOOTMEM [ 0.000000] #22 [0001d17a80 - 0001d17ae8] BOOTMEM [ 0.000000] #23 [0001d17b00 - 0001d17b68] BOOTMEM [ 0.000000] #24 [0001d17b80 - 0001d17be8] BOOTMEM [ 0.000000] #25 [0001d17c00 - 0001d17c68] BOOTMEM [ 0.000000] #26 [0001d17c80 - 0001d17ce8] BOOTMEM [ 0.000000] #27 [0001d17d00 - 0001d17d68] BOOTMEM [ 0.000000] #28 [0001d17d80 - 0001d17de8] BOOTMEM [ 0.000000] #29 [0001d17e00 - 0001d17e68] BOOTMEM [ 0.000000] #30 [0001d17e80 - 0001d17ee8] BOOTMEM [ 0.000000] #31 [0001d17f00 - 0001d17f68] BOOTMEM [ 0.000000] #32 [0001d17f80 - 0001d17fe8] BOOTMEM [ 0.000000] #33 [0001d37200 - 0001d37268] BOOTMEM [ 0.000000] #34 [0001d37280 - 0001d372e8] BOOTMEM [ 0.000000] #35 [0001d37300 - 0001d37368] BOOTMEM [ 0.000000] #36 [0001d37380 - 0001d373e8] BOOTMEM [ 0.000000] #37 [0001d37400 - 0001d37468] BOOTMEM [ 0.000000] #38 [0001d37480 - 0001d374e8] BOOTMEM [ 0.000000] #39 [0001d37500 - 0001d37520] BOOTMEM [ 0.000000] #40 [0001d37540 - 0001d37560] BOOTMEM [ 0.000000] #41 [0001d37580 - 0001d375a0] BOOTMEM [ 0.000000] #42 [0001d375c0 - 0001d375e0] BOOTMEM [ 0.000000] #43 [0001d37600 - 0001d37620] BOOTMEM [ 0.000000] #44 [0001d37640 - 0001d37660] BOOTMEM [ 0.000000] #45 [0001d37680 - 0001d376ea] BOOTMEM [ 0.000000] #46 [0001d37700 - 0001d3776a] BOOTMEM [ 0.000000] #47 [0001e00000 - 0001e1e000] BOOTMEM [ 0.000000] #48 [0001e80000 - 0001e9e000] BOOTMEM [ 0.000000] #49 [0001f00000 - 0001f1e000] BOOTMEM [ 0.000000] #50 [0001f80000 - 0001f9e000] BOOTMEM [ 0.000000] #51 [0001d37780 - 0001d37788] BOOTMEM [ 0.000000] #52 [0001d377c0 - 0001d377c8] BOOTMEM [ 0.000000] #53 [0001d37800 - 0001d37810] BOOTMEM [ 0.000000] #54 [0001d37840 - 0001d37860] BOOTMEM [ 0.000000] #55 [0001d37880 - 0001d379b0] BOOTMEM [ 0.000000] #56 [0001d379c0 - 0001d37a10] BOOTMEM [ 0.000000] #57 [0001d37a40 - 0001d37a90] BOOTMEM [ 0.000000] #58 [0001d39000 - 0001d41000] BOOTMEM [ 0.000000] #59 [0001f9e000 - 0005f9e000] BOOTMEM [ 0.000000] #60 [0001d41000 - 0001d61000] BOOTMEM [ 0.000000] #61 [0001d61000 - 0001da1000] BOOTMEM [ 0.000000] #62 [000001b800 - 0000023800] BOOTMEM [ 0.000000] Memory: 3783056k/5242880k available (5698k kernel code, 1313708k absent, 146116k reserved, 5389k data, 908k init) [ 0.000000] SLUB: Genslabs=14, HWalign=64, Order=0-3, MinObjects=0, CPUs=4, Nodes=1 [ 0.000000] Hierarchical RCU implementation. [ 0.000000] RCU dyntick-idle grace-period acceleration is enabled. [ 0.000000] RCU-based detection of stalled CPUs is disabled. [ 0.000000] Verbose stalled-CPUs detection is disabled. [ 0.000000] NR_IRQS:4352 nr_irqs:712 [ 0.000000] spurious 8259A interrupt: IRQ7. [ 0.000000] Console: colour dummy device 80x25 [ 0.000000] console [tty0] enabled [ 0.000000] allocated 39321600 bytes of page_cgroup [ 0.000000] please try 'cgroup_disable=memory' option if you don't want memory cgroups [ 0.000000] Fast TSC calibration using PIT [ 0.000000] Detected 1100.259 MHz processor. [ 0.030031] Calibrating delay loop (skipped), value calculated using timer frequency.. 4401.02 BogoMIPS (lpj=22005110) [ 0.030049] pid_max: default: 32768 minimum: 301 [ 0.030184] Security Framework initialized [ 0.030256] AppArmor: AppArmor initialized [ 0.030262] Yama: becoming mindful. [ 0.032229] Dentry cache hash table entries: 524288 (order: 10, 4194304 bytes) [ 0.046334] Inode-cache hash table entries: 262144 (order: 9, 2097152 bytes) [ 0.050000] Mount-cache hash table entries: 256 [ 0.050000] Initializing cgroup subsys ns [ 0.050000] Initializing cgroup subsys cpuacct [ 0.050000] Initializing cgroup subsys memory [ 0.050000] Initializing cgroup subsys devices [ 0.050000] Initializing cgroup subsys freezer [ 0.050000] Initializing cgroup subsys net_cls [ 0.050000] tseg: 00aff00000 [ 0.050000] CPU: Physical Processor ID: 0 [ 0.050000] CPU: Processor Core ID: 0 [ 0.050000] mce: CPU supports 5 MCE banks [ 0.050000] Performance Events: AMD PMU driver. [ 0.050000] ... version: 0 [ 0.050000] ... bit width: 48 [ 0.050000] ... generic registers: 4 [ 0.050000] ... value mask: 0000ffffffffffff [ 0.050000] ... max period: 00007fffffffffff [ 0.050000] ... fixed-purpose events: 0 [ 0.050000] ... event mask: 000000000000000f [ 0.050000] ACPI: Core revision 20100428 [ 0.070128] ftrace: converting mcount calls to 0f 1f 44 00 00 [ 0.070169] ftrace: allocating 22644 entries in 89 pages [ 0.080321] Setting APIC routing to flat [ 0.081118] ..TIMER: vector=0x30 apic1=0 pin1=2 apic2=-1 pin2=-1 [ 0.192889] CPU0: AMD Turion(tm) X2 Ultra Dual-Core Mobile ZM-82 stepping 01 [ 0.200000] Booting Node 0, Processors #1 [ 0.360000] TSC synchronization [CPU#0 -> CPU#1]: [ 0.360000] Measured 217435192 cycles TSC warp between CPUs, turning off TSC clock. [ 0.360000] Marking TSC unstable due to check_tsc_sync_source failed [ 0.360033] Brought up 2 CPUs [ 0.360043] Total of 2 processors activated (8799.87 BogoMIPS). [ 0.360798] devtmpfs: initialized [ 0.361823] regulator: core version 0.5 [ 0.361887] Time: 9:01:00 Date: 08/22/10 [ 0.361995] NET: Registered protocol family 16 [ 0.362069] Trying to unpack rootfs image as initramfs... [ 0.362378] TOM: 00000000c0000000 aka 3072M [ 0.362384] Fam 10h mmconf [e0000000, e0ffffff] [ 0.362399] TOM2: 0000000140000000 aka 5120M [ 0.362422] ACPI: bus type pci registered [ 0.362614] PCI: MMCONFIG for domain 0000 [bus 00-3f] at [mem 0xe0000000-0xe3ffffff] (base 0xe0000000) [ 0.362622] PCI: MMCONFIG at [mem 0xe0000000-0xe3ffffff] reserved in E820 [ 0.373729] PCI: Using configuration type 1 for base access [ 0.373782] mtrr: your CPUs had inconsistent fixed MTRR settings [ 0.373785] mtrr: probably your BIOS does not setup all CPUs. [ 0.373789] mtrr: corrected configuration. [ 0.380868] bio: create slab at 0 [ 0.382911] ACPI: EC: Look up EC in DSDT [ 0.385460] ACPI: Executed 1 blocks of module-level executable AML code [ 0.390000] ACPI: BIOS _OSI(Linux) query ignored [ 0.390178] ACPI: Interpreter enabled [ 0.390185] ACPI: (supports S0 S3 S4 S5) [ 0.390236] ACPI: Using IOAPIC for interrupt routing [ 0.397215] ACPI: EC: GPE = 0x3, I/O: command/status = 0x66, data = 0x62 [ 0.397215] ACPI: No dock devices found. [ 0.397215] PCI: Using host bridge windows from ACPI; if necessary, use "pci=nocrs" and report a bug [ 0.400175] \_SB_.PCI0:_OSC request failed [ 0.400179] _OSC request data:1 8 1f [ 0.400189] ACPI: PCI Root Bridge [PCI0] (domain 0000 [bus 00-ff]) [ 0.404414] pci_root PNP0A08:00: host bridge window [io 0x0000-0x0cf7] [ 0.404420] pci_root PNP0A08:00: host bridge window [io 0x0d00-0xffff] [ 0.404426] pci_root PNP0A08:00: host bridge window [mem 0x000a0000-0x000bffff] [ 0.404432] pci_root PNP0A08:00: host bridge window [mem 0x000c0000-0x000c3fff] [ 0.404437] pci_root PNP0A08:00: host bridge window [mem 0x000c4000-0x000c7fff] [ 0.404443] pci_root PNP0A08:00: host bridge window [mem 0x000c8000-0x000cbfff] [ 0.404448] pci_root PNP0A08:00: host bridge window [mem 0x000cc000-0x000cffff] [ 0.404454] pci_root PNP0A08:00: host bridge window [mem 0x000d0000-0x000d3fff] [ 0.404459] pci_root PNP0A08:00: host bridge window [mem 0x000d4000-0x000d7fff] [ 0.404465] pci_root PNP0A08:00: host bridge window [mem 0x000d8000-0x000dbfff] [ 0.404470] pci_root PNP0A08:00: host bridge window [mem 0x000dc000-0x000dffff] [ 0.404476] pci_root PNP0A08:00: host bridge window [mem 0x000e0000-0x000e3fff] [ 0.404481] pci_root PNP0A08:00: host bridge window [mem 0x000e4000-0x000e7fff] [ 0.404487] pci_root PNP0A08:00: host bridge window [mem 0x000e8000-0x000ebfff] [ 0.404492] pci_root PNP0A08:00: host bridge window [mem 0x000ec000-0x000effff] [ 0.404498] pci_root PNP0A08:00: host bridge window [mem 0xc0000000-0xdfffffff] [ 0.404504] pci_root PNP0A08:00: host bridge window [mem 0xe4000000-0xffffffff] [ 0.404834] pci 0000:00:04.0: PME# supported from D0 D3hot D3cold [ 0.404842] pci 0000:00:04.0: PME# disabled [ 0.404960] pci 0000:00:05.0: PME# supported from D0 D3hot D3cold [ 0.404967] pci 0000:00:05.0: PME# disabled [ 0.405076] pci 0000:00:06.0: PME# supported from D0 D3hot D3cold [ 0.405083] pci 0000:00:06.0: PME# disabled [ 0.405269] pci 0000:00:11.0: reg 10: [io 0x6038-0x603f] [ 0.405286] pci 0000:00:11.0: reg 14: [io 0x604c-0x604f] [ 0.405302] pci 0000:00:11.0: reg 18: [io 0x6030-0x6037] [ 0.405318] pci 0000:00:11.0: reg 1c: [io 0x6048-0x604b] [ 0.405335] pci 0000:00:11.0: reg 20: [io 0x6010-0x601f] [ 0.405351] pci 0000:00:11.0: reg 24: [mem 0xd2409000-0xd24093ff] [ 0.405476] pci 0000:00:12.0: reg 10: [mem 0xd2408000-0xd2408fff] [ 0.405606] pci 0000:00:12.1: reg 10: [mem 0xd2407000-0xd2407fff] [ 0.405764] pci 0000:00:12.2: reg 10: [mem 0xd2409500-0xd24095ff] [ 0.405888] pci 0000:00:12.2: supports D1 D2 [ 0.405893] pci 0000:00:12.2: PME# supported from D0 D1 D2 D3hot [ 0.405903] pci 0000:00:12.2: PME# disabled [ 0.405978] pci 0000:00:13.0: reg 10: [mem 0xd2406000-0xd2406fff] [ 0.406107] pci 0000:00:13.1: reg 10: [mem 0xd2405000-0xd2405fff] [ 0.406273] pci 0000:00:13.2: reg 10: [mem 0xd2409400-0xd24094ff] [ 0.406397] pci 0000:00:13.2: supports D1 D2 [ 0.406402] pci 0000:00:13.2: PME# supported from D0 D1 D2 D3hot [ 0.406412] pci 0000:00:13.2: PME# disabled [ 0.406672] pci 0000:00:14.1: reg 10: [io 0x0000-0x0007] [ 0.406689] pci 0000:00:14.1: reg 14: [io 0x0000-0x0003] [ 0.406705] pci 0000:00:14.1: reg 18: [io 0x0000-0x0007] [ 0.406721] pci 0000:00:14.1: reg 1c: [io 0x0000-0x0003] [ 0.406737] pci 0000:00:14.1: reg 20: [io 0x6000-0x600f] [ 0.406887] pci 0000:00:14.2: reg 10: [mem 0xd2400000-0xd2403fff 64bit] [ 0.406990] pci 0000:00:14.2: PME# supported from D0 D3hot D3cold [ 0.407000] pci 0000:00:14.2: PME# disabled [ 0.407249] pci 0000:00:14.5: reg 10: [mem 0xd2404000-0xd2404fff] [ 0.407753] pci 0000:01:05.0: reg 10: [mem 0xc0000000-0xcfffffff pref] [ 0.407764] pci 0000:01:05.0: reg 14: [io 0x5000-0x50ff] [ 0.407775] pci 0000:01:05.0: reg 18: [mem 0xd2300000-0xd230ffff] [ 0.407796] pci 0000:01:05.0: reg 24: [mem 0xd2200000-0xd22fffff] [ 0.407832] pci 0000:01:05.0: supports D1 D2 [ 0.407960] pci 0000:00:01.0: PCI bridge to [bus 01-01] [ 0.407970] pci 0000:00:01.0: bridge window [io 0x5000-0x5fff] [ 0.407979] pci 0000:00:01.0: bridge window [mem 0xd2200000-0xd23fffff] [ 0.407989] pci 0000:00:01.0: bridge window [mem 0xc0000000-0xcfffffff 64bit pref] [ 0.408065] pci 0000:00:04.0: PCI bridge to [bus 02-07] [ 0.408075] pci 0000:00:04.0: bridge window [io 0x3000-0x4fff] [ 0.408082] pci 0000:00:04.0: bridge window [mem 0xd1200000-0xd21fffff] [ 0.408093] pci 0000:00:04.0: bridge window [mem 0xd0000000-0xd0ffffff 64bit pref] [ 0.408245] pci 0000:08:00.0: reg 10: [mem 0xd1100000-0xd1103fff 64bit] [ 0.408387] pci 0000:08:00.0: supports D1 D2 [ 0.420039] pci 0000:00:05.0: PCI bridge to [bus 08-08] [ 0.420049] pci 0000:00:05.0: bridge window [io 0xfffffffffffff000-0x0000] (disabled) [ 0.420058] pci 0000:00:05.0: bridge window [mem 0xd1100000-0xd11fffff] [ 0.420069] pci 0000:00:05.0: bridge window [mem 0xfff00000-0x000fffff pref] (disabled) [ 0.420202] pci 0000:09:00.0: reg 10: [io 0x2000-0x20ff] [ 0.420239] pci 0000:09:00.0: reg 18: [mem 0xd1010000-0xd1010fff 64bit pref] [ 0.420266] pci 0000:09:00.0: reg 20: [mem 0xd1000000-0xd100ffff 64bit pref] [ 0.420283] pci 0000:09:00.0: reg 30: [mem 0xffff0000-0xffffffff pref] [ 0.420355] pci 0000:09:00.0: supports D1 D2 [ 0.420359] pci 0000:09:00.0: PME# supported from D0 D1 D2 D3hot D3cold [ 0.420369] pci 0000:09:00.0: PME# disabled [ 0.440028] pci 0000:00:06.0: PCI bridge to [bus 09-09] [ 0.440039] pci 0000:00:06.0: bridge window [io 0x2000-0x2fff] [ 0.440046] pci 0000:00:06.0: bridge window [mem 0xfff00000-0x000fffff] (disabled) [ 0.440058] pci 0000:00:06.0: bridge window [mem 0xd1000000-0xd10fffff 64bit pref] [ 0.440205] pci 0000:00:14.4: PCI bridge to [bus 80-8f] (subtractive decode) [ 0.440216] pci 0000:00:14.4: bridge window [io 0x1000-0x1fff] [ 0.440226] pci 0000:00:14.4: bridge window [mem 0xfff00000-0x000fffff] (disabled) [ 0.440238] pci 0000:00:14.4: bridge window [mem 0xfff00000-0x000fffff pref] (disabled) [ 0.440244] pci 0000:00:14.4: bridge window [io 0x0000-0x0cf7] (subtractive decode) [ 0.440249] pci 0000:00:14.4: bridge window [io 0x0d00-0xffff] (subtractive decode) [ 0.440255] pci 0000:00:14.4: bridge window [mem 0x000a0000-0x000bffff] (subtractive decode) [ 0.440261] pci 0000:00:14.4: bridge window [mem 0x000c0000-0x000c3fff] (subtractive decode) [ 0.440266] pci 0000:00:14.4: bridge window [mem 0x000c4000-0x000c7fff] (subtractive decode) [ 0.440272] pci 0000:00:14.4: bridge window [mem 0x000c8000-0x000cbfff] (subtractive decode) [ 0.440278] pci 0000:00:14.4: bridge window [mem 0x000cc000-0x000cffff] (subtractive decode) [ 0.440283] pci 0000:00:14.4: bridge window [mem 0x000d0000-0x000d3fff] (subtractive decode) [ 0.440289] pci 0000:00:14.4: bridge window [mem 0x000d4000-0x000d7fff] (subtractive decode) [ 0.440294] pci 0000:00:14.4: bridge window [mem 0x000d8000-0x000dbfff] (subtractive decode) [ 0.440300] pci 0000:00:14.4: bridge window [mem 0x000dc000-0x000dffff] (subtractive decode) [ 0.440306] pci 0000:00:14.4: bridge window [mem 0x000e0000-0x000e3fff] (subtractive decode) [ 0.440312] pci 0000:00:14.4: bridge window [mem 0x000e4000-0x000e7fff] (subtractive decode) [ 0.440317] pci 0000:00:14.4: bridge window [mem 0x000e8000-0x000ebfff] (subtractive decode) [ 0.440323] pci 0000:00:14.4: bridge window [mem 0x000ec000-0x000effff] (subtractive decode) [ 0.440329] pci 0000:00:14.4: bridge window [mem 0xc0000000-0xdfffffff] (subtractive decode) [ 0.440335] pci 0000:00:14.4: bridge window [mem 0xe4000000-0xffffffff] (subtractive decode) [ 0.440454] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0._PRT] [ 0.441050] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.AGP_._PRT] [ 0.441246] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PB4_._PRT] [ 0.441462] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PB5_._PRT] [ 0.441649] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PB6_._PRT] [ 0.441929] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.P2P_._PRT] [ 0.442357] \_SB_.PCI0:_OSC request failed [ 0.442361] _OSC request data:1 1f 1f [ 0.460000] ACPI: PCI Interrupt Link [LNKA] (IRQs 3 4 5 7 10 11 12 14 15) *0, disabled. [ 0.460000] ACPI: PCI Interrupt Link [LNKB] (IRQs 3 4 5 7 10 11 12 14 15) *0, disabled. [ 0.460000] ACPI: PCI Interrupt Link [LNKC] (IRQs 3 4 5 7 10 11 12 14 15) *0, disabled. [ 0.460000] ACPI: PCI Interrupt Link [LNKD] (IRQs 3 4 5 7 10 11 12 14 15) *0, disabled. [ 0.460000] ACPI: PCI Interrupt Link [LNKE] (IRQs 3 4 5 7 10 11 12 14 15) *0, disabled. [ 0.460000] ACPI: PCI Interrupt Link [LNKF] (IRQs 3 4 5 7 10 11 12 14 15) *0, disabled. [ 0.460000] ACPI: PCI Interrupt Link [LNKG] (IRQs 3 4 5 7 10 11 12 14 15) *0, disabled. [ 0.460000] ACPI: PCI Interrupt Link [LNKH] (IRQs 3 4 5 7 10 11 12 14 15) *0, disabled. [ 0.460000] HEST: Table is not found! [ 0.460000] vgaarb: device added: PCI:0000:01:05.0,decodes=io+mem,owns=io+mem,locks=none [ 0.460000] vgaarb: loaded [ 0.460000] SCSI subsystem initialized [ 0.460000] libata version 3.00 loaded. [ 0.460000] usbcore: registered new interface driver usbfs [ 0.460000] usbcore: registered new interface driver hub [ 0.460000] usbcore: registered new device driver usb [ 0.460000] ACPI: WMI: Mapper loaded [ 0.460000] PCI: Using ACPI for IRQ routing [ 0.460000] PCI: pci_cache_line_size set to 64 bytes [ 0.460000] reserve RAM buffer: 000000000009fc00 - 000000000009ffff [ 0.460000] reserve RAM buffer: 00000000afb8f000 - 00000000afffffff [ 0.460000] reserve RAM buffer: 00000000afd70000 - 00000000afffffff [ 0.460000] reserve RAM buffer: 00000000afe57000 - 00000000afffffff [ 0.460000] reserve RAM buffer: 00000000afee9000 - 00000000afffffff [ 0.460000] reserve RAM buffer: 00000000aff00000 - 00000000afffffff [ 0.460000] NetLabel: Initializing [ 0.460000] NetLabel: domain hash size = 128 [ 0.460000] NetLabel: protocols = UNLABELED CIPSOv4 [ 0.460000] NetLabel: unlabeled traffic allowed by default [ 0.470000] AppArmor: AppArmor Filesystem Enabled [ 0.470000] pnp: PnP ACPI init [ 0.470000] ACPI: bus type pnp registered [ 0.475388] pnp: PnP ACPI: found 12 devices [ 0.475388] ACPI: ACPI bus type pnp unregistered [ 0.475388] system 00:01: [mem 0xfec00000-0xfec00fff] could not be reserved [ 0.475388] system 00:01: [mem 0xfee00000-0xfee00fff] has been reserved [ 0.475388] system 00:09: [io 0x0400-0x04cf] has been reserved [ 0.475388] system 00:09: [io 0x04d0-0x04d1] has been reserved [ 0.475388] system 00:09: [io 0x04d6] has been reserved [ 0.475388] system 00:09: [io 0x0680-0x06ff] has been reserved [ 0.475388] system 00:09: [io 0x077a] has been reserved [ 0.475388] system 00:09: [io 0x0c00-0x0c01] has been reserved [ 0.475388] system 00:09: [io 0x0c14] has been reserved [ 0.475388] system 00:09: [io 0x0c50-0x0c52] has been reserved [ 0.475388] system 00:09: [io 0x0c6c] has been reserved [ 0.475388] system 00:09: [io 0x0c6f] has been reserved [ 0.475388] system 00:09: [io 0x0cd0-0x0cdb] has been reserved [ 0.475388] system 00:0a: [mem 0x000e0000-0x000fffff] could not be reserved [ 0.475388] system 00:0a: [mem 0xfff00000-0xffffffff] has been reserved [ 0.480000] Switching to clocksource acpi_pm [ 0.480000] pci 0000:09:00.0: no compatible bridge window for [mem 0xffff0000-0xffffffff pref] [ 0.480000] pci 0000:00:06.0: BAR 14: assigned [mem 0xd2500000-0xd25fffff] [ 0.480000] pci 0000:00:01.0: PCI bridge to [bus 01-01] [ 0.480000] pci 0000:00:01.0: bridge window [io 0x5000-0x5fff] [ 0.480000] pci 0000:00:01.0: bridge window [mem 0xd2200000-0xd23fffff] [ 0.480000] pci 0000:00:01.0: bridge window [mem 0xc0000000-0xcfffffff 64bit pref] [ 0.480000] pci 0000:00:04.0: PCI bridge to [bus 02-07] [ 0.480000] pci 0000:00:04.0: bridge window [io 0x3000-0x4fff] [ 0.480000] pci 0000:00:04.0: bridge window [mem 0xd1200000-0xd21fffff] [ 0.480000] pci 0000:00:04.0: bridge window [mem 0xd0000000-0xd0ffffff 64bit pref] [ 0.480000] pci 0000:00:05.0: PCI bridge to [bus 08-08] [ 0.480000] pci 0000:00:05.0: bridge window [io disabled] [ 0.480000] pci 0000:00:05.0: bridge window [mem 0xd1100000-0xd11fffff] [ 0.480000] pci 0000:00:05.0: bridge window [mem pref disabled] [ 0.480000] pci 0000:09:00.0: BAR 6: assigned [mem 0xd1020000-0xd102ffff pref] [ 0.480000] pci 0000:00:06.0: PCI bridge to [bus 09-09] [ 0.480000] pci 0000:00:06.0: bridge window [io 0x2000-0x2fff] [ 0.480000] pci 0000:00:06.0: bridge window [mem 0xd2500000-0xd25fffff] [ 0.480000] pci 0000:00:06.0: bridge window [mem 0xd1000000-0xd10fffff 64bit pref] [ 0.480000] pci 0000:00:14.4: PCI bridge to [bus 80-8f] [ 0.480000] pci 0000:00:14.4: bridge window [io 0x1000-0x1fff] [ 0.480000] pci 0000:00:14.4: bridge window [mem disabled] [ 0.480000] pci 0000:00:14.4: bridge window [mem pref disabled] [ 0.480000] pci 0000:00:01.0: setting latency timer to 64 [ 0.480000] alloc irq_desc for 16 on node -1 [ 0.480000] alloc kstat_irqs on node -1 [ 0.480000] pci 0000:00:04.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16 [ 0.480000] pci 0000:00:04.0: setting latency timer to 64 [ 0.480000] alloc irq_desc for 17 on node -1 [ 0.480000] alloc kstat_irqs on node -1 [ 0.480000] pci 0000:00:05.0: PCI INT A -> GSI 17 (level, low) -> IRQ 17 [ 0.480000] pci 0000:00:05.0: setting latency timer to 64 [ 0.480000] alloc irq_desc for 18 on node -1 [ 0.480000] alloc kstat_irqs on node -1 [ 0.480000] pci 0000:00:06.0: PCI INT A -> GSI 18 (level, low) -> IRQ 18 [ 0.480000] pci 0000:00:06.0: setting latency timer to 64 [ 0.480000] pci_bus 0000:00: resource 4 [io 0x0000-0x0cf7] [ 0.480000] pci_bus 0000:00: resource 5 [io 0x0d00-0xffff] [ 0.480000] pci_bus 0000:00: resource 6 [mem 0x000a0000-0x000bffff] [ 0.480000] pci_bus 0000:00: resource 7 [mem 0x000c0000-0x000c3fff] [ 0.480000] pci_bus 0000:00: resource 8 [mem 0x000c4000-0x000c7fff] [ 0.480000] pci_bus 0000:00: resource 9 [mem 0x000c8000-0x000cbfff] [ 0.480000] pci_bus 0000:00: resource 10 [mem 0x000cc000-0x000cffff] [ 0.480000] pci_bus 0000:00: resource 11 [mem 0x000d0000-0x000d3fff] [ 0.480000] pci_bus 0000:00: resource 12 [mem 0x000d4000-0x000d7fff] [ 0.480000] pci_bus 0000:00: resource 13 [mem 0x000d8000-0x000dbfff] [ 0.480000] pci_bus 0000:00: resource 14 [mem 0x000dc000-0x000dffff] [ 0.480000] pci_bus 0000:00: resource 15 [mem 0x000e0000-0x000e3fff] [ 0.480000] pci_bus 0000:00: resource 16 [mem 0x000e4000-0x000e7fff] [ 0.480000] pci_bus 0000:00: resource 17 [mem 0x000e8000-0x000ebfff] [ 0.480000] pci_bus 0000:00: resource 18 [mem 0x000ec000-0x000effff] [ 0.480000] pci_bus 0000:00: resource 19 [mem 0xc0000000-0xdfffffff] [ 0.480000] pci_bus 0000:00: resource 20 [mem 0xe4000000-0xffffffff] [ 0.480000] pci_bus 0000:01: resource 0 [io 0x5000-0x5fff] [ 0.480000] pci_bus 0000:01: resource 1 [mem 0xd2200000-0xd23fffff] [ 0.480000] pci_bus 0000:01: resource 2 [mem 0xc0000000-0xcfffffff 64bit pref] [ 0.480000] pci_bus 0000:02: resource 0 [io 0x3000-0x4fff] [ 0.480000] pci_bus 0000:02: resource 1 [mem 0xd1200000-0xd21fffff] [ 0.480000] pci_bus 0000:02: resource 2 [mem 0xd0000000-0xd0ffffff 64bit pref] [ 0.480000] pci_bus 0000:08: resource 1 [mem 0xd1100000-0xd11fffff] [ 0.480000] pci_bus 0000:09: resource 0 [io 0x2000-0x2fff] [ 0.480000] pci_bus 0000:09: resource 1 [mem 0xd2500000-0xd25fffff] [ 0.480000] pci_bus 0000:09: resource 2 [mem 0xd1000000-0xd10fffff 64bit pref] [ 0.480000] pci_bus 0000:80: resource 0 [io 0x1000-0x1fff] [ 0.480000] pci_bus 0000:80: resource 4 [io 0x0000-0x0cf7] [ 0.480000] pci_bus 0000:80: resource 5 [io 0x0d00-0xffff] [ 0.480000] pci_bus 0000:80: resource 6 [mem 0x000a0000-0x000bffff] [ 0.480000] pci_bus 0000:80: resource 7 [mem 0x000c0000-0x000c3fff] [ 0.480000] pci_bus 0000:80: resource 8 [mem 0x000c4000-0x000c7fff] [ 0.480000] pci_bus 0000:80: resource 9 [mem 0x000c8000-0x000cbfff] [ 0.480000] pci_bus 0000:80: resource 10 [mem 0x000cc000-0x000cffff] [ 0.480000] pci_bus 0000:80: resource 11 [mem 0x000d0000-0x000d3fff] [ 0.480000] pci_bus 0000:80: resource 12 [mem 0x000d4000-0x000d7fff] [ 0.480000] pci_bus 0000:80: resource 13 [mem 0x000d8000-0x000dbfff] [ 0.480000] pci_bus 0000:80: resource 14 [mem 0x000dc000-0x000dffff] [ 0.480000] pci_bus 0000:80: resource 15 [mem 0x000e0000-0x000e3fff] [ 0.480000] pci_bus 0000:80: resource 16 [mem 0x000e4000-0x000e7fff] [ 0.480000] pci_bus 0000:80: resource 17 [mem 0x000e8000-0x000ebfff] [ 0.480000] pci_bus 0000:80: resource 18 [mem 0x000ec000-0x000effff] [ 0.480000] pci_bus 0000:80: resource 19 [mem 0xc0000000-0xdfffffff] [ 0.480000] pci_bus 0000:80: resource 20 [mem 0xe4000000-0xffffffff] [ 0.480000] NET: Registered protocol family 2 [ 0.480000] IP route cache hash table entries: 131072 (order: 8, 1048576 bytes) [ 0.480000] TCP established hash table entries: 524288 (order: 11, 8388608 bytes) [ 0.481259] TCP bind hash table entries: 65536 (order: 8, 1048576 bytes) [ 0.481931] TCP: Hash tables configured (established 524288 bind 65536) [ 0.481931] TCP reno registered [ 0.481931] UDP hash table entries: 2048 (order: 4, 65536 bytes) [ 0.481931] UDP-Lite hash table entries: 2048 (order: 4, 65536 bytes) [ 0.481931] NET: Registered protocol family 1 [ 0.481931] pci 0000:00:01.0: MSI quirk detected; subordinate MSI disabled [ 0.661397] pci 0000:01:05.0: Boot video device [ 0.661431] PCI: CLS 64 bytes, default 64 [ 0.661437] PCI-DMA: Using software bounce buffering for IO (SWIOTLB) [ 0.661444] Placing 64MB software IO TLB between ffff880001f9e000 - ffff880005f9e000 [ 0.661449] software IO TLB at phys 0x1f9e000 - 0x5f9e000 [ 0.661622] Simple Boot Flag at 0x44 set to 0x1 [ 0.662027] Scanning for low memory corruption every 60 seconds [ 0.662365] audit: initializing netlink socket (disabled) [ 0.662398] type=2000 audit(1282467658.659:1): initialized [ 0.679826] HugeTLB registered 2 MB page size, pre-allocated 0 pages [ 0.681288] VFS: Disk quotas dquot_6.5.2 [ 0.681288] Dquot-cache hash table entries: 512 (order 0, 4096 bytes) [ 0.681288] fuse init (API version 7.14) [ 0.681288] msgmni has been set to 7388 [ 0.681288] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 253) [ 0.681288] io scheduler noop registered [ 0.681288] io scheduler deadline registered [ 0.681288] io scheduler cfq registered (default) [ 0.681288] pcieport 0000:00:04.0: setting latency timer to 64 [ 0.681288] alloc irq_desc for 40 on node -1 [ 0.681288] alloc kstat_irqs on node -1 [ 0.681288] pcieport 0000:00:04.0: irq 40 for MSI/MSI-X [ 0.681288] pcieport 0000:00:05.0: setting latency timer to 64 [ 0.681288] alloc irq_desc for 41 on node -1 [ 0.681288] alloc kstat_irqs on node -1 [ 0.681288] pcieport 0000:00:05.0: irq 41 for MSI/MSI-X [ 0.681288] pcieport 0000:00:06.0: setting latency timer to 64 [ 0.681288] alloc irq_desc for 42 on node -1 [ 0.681288] alloc kstat_irqs on node -1 [ 0.681288] pcieport 0000:00:06.0: irq 42 for MSI/MSI-X [ 0.681288] pci_hotplug: PCI Hot Plug PCI Core version: 0.5 [ 0.681288] \_SB_.PCI0:_OSC request failed [ 0.681288] _OSC request data:1 0 1f [ 0.681288] \_SB_.PCI0:_OSC request failed [ 0.681288] _OSC request data:1 0 1f [ 0.681288] pciehp: PCI Express Hot Plug Controller Driver version: 0.4 [ 0.681288] vesafb: framebuffer at 0xc012c000, mapped to 0xffffc90005100000, using 1216k, total 1216k [ 0.681288] vesafb: mode is 640x480x32, linelength=2560, pages=0 [ 0.681288] vesafb: scrolling: redraw [ 0.681288] vesafb: Truecolor: size=0:8:8:8, shift=0:16:8:0 [ 0.751703] Console: switching to colour frame buffer device 80x30 [ 0.824205] fb0: VESA VGA frame buffer device [ 0.824502] ACPI: AC Adapter [ACAD] (on-line) [ 0.824502] input: Power Button as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0C:00/input/input0 [ 0.824502] ACPI: Power Button [PWRB] [ 0.824502] input: Sleep Button as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0E:00/input/input1 [ 0.824502] ACPI: Sleep Button [SLPB] [ 0.824502] input: Lid Switch as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0D:00/input/input2 [ 0.824502] ACPI: Lid Switch [LID] [ 0.824502] input: Power Button as /devices/LNXSYSTM:00/LNXPWRBN:00/input/input3 [ 0.824502] ACPI: Power Button [PWRF] [ 0.824544] ACPI: acpi_idle registered with cpuidle [ 0.829330] [Firmware Bug]: Invalid critical threshold (0) [ 0.830433] thermal LNXTHERM:01: registered as thermal_zone0 [ 0.830433] ACPI: Thermal Zone [THRM] (82 C) [ 0.830433] ERST: Table is not found! [ 0.832627] hpet_acpi_add: no address or irqs in _CRS [ 0.832627] Linux agpgart interface v0.103 [ 0.832627] Serial: 8250/16550 driver, 4 ports, IRQ sharing enabled [ 0.835380] brd: module loaded [ 0.836536] loop: module loaded [ 0.837104] pata_acpi 0000:00:14.1: PCI INT A -> GSI 16 (level, low) -> IRQ 16 [ 0.837183] pata_acpi 0000:00:14.1: setting latency timer to 64 [ 0.837860] Fixed MDIO Bus: probed [ 0.837945] PPP generic driver version 2.4.2 [ 0.838018] tun: Universal TUN/TAP device driver, 1.6 [ 0.838022] tun: (C) 1999-2004 Max Krasnyansky [ 0.838190] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver [ 0.838297] ehci_hcd 0000:00:12.2: PCI INT B -> GSI 17 (level, low) -> IRQ 17 [ 0.838336] ehci_hcd 0000:00:12.2: setting latency timer to 64 [ 0.838344] ehci_hcd 0000:00:12.2: EHCI Host Controller [ 0.838416] ehci_hcd 0000:00:12.2: new USB bus registered, assigned bus number 1 [ 0.838575] ehci_hcd 0000:00:12.2: applying AMD SB600/SB700 USB freeze workaround [ 0.838608] ehci_hcd 0000:00:12.2: debug port 1 [ 0.838675] ehci_hcd 0000:00:12.2: irq 17, io mem 0xd2409500 [ 0.851355] ehci_hcd 0000:00:12.2: USB 2.0 started, EHCI 1.00 [ 0.851671] hub 1-0:1.0: USB hub found [ 0.851683] hub 1-0:1.0: 6 ports detected [ 0.852208] alloc irq_desc for 19 on node -1 [ 0.852212] alloc kstat_irqs on node -1 [ 0.852228] ehci_hcd 0000:00:13.2: PCI INT B -> GSI 19 (level, low) -> IRQ 19 [ 0.852271] ehci_hcd 0000:00:13.2: setting latency timer to 64 [ 0.852278] ehci_hcd 0000:00:13.2: EHCI Host Controller [ 0.852366] ehci_hcd 0000:00:13.2: new USB bus registered, assigned bus number 2 [ 0.852522] ehci_hcd 0000:00:13.2: applying AMD SB600/SB700 USB freeze workaround [ 0.852553] ehci_hcd 0000:00:13.2: debug port 1 [ 0.852599] ehci_hcd 0000:00:13.2: irq 19, io mem 0xd2409400 [ 0.862494] ACPI: Battery Slot [BAT0] (battery present) [ 0.871311] ehci_hcd 0000:00:13.2: USB 2.0 started, EHCI 1.00 [ 0.871538] hub 2-0:1.0: USB hub found [ 0.871546] hub 2-0:1.0: 6 ports detected [ 0.871767] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver [ 0.871863] ohci_hcd 0000:00:12.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16 [ 0.871891] ohci_hcd 0000:00:12.0: setting latency timer to 64 [ 0.871899] ohci_hcd 0000:00:12.0: OHCI Host Controller [ 0.871970] ohci_hcd 0000:00:12.0: new USB bus registered, assigned bus number 3 [ 0.872112] ohci_hcd 0000:00:12.0: irq 16, io mem 0xd2408000 [ 0.939535] hub 3-0:1.0: USB hub found [ 0.939616] hub 3-0:1.0: 3 ports detected [ 0.939752] ohci_hcd 0000:00:12.1: PCI INT A -> GSI 16 (level, low) -> IRQ 16 [ 0.939779] ohci_hcd 0000:00:12.1: setting latency timer to 64 [ 0.939786] ohci_hcd 0000:00:12.1: OHCI Host Controller [ 0.939854] ohci_hcd 0000:00:12.1: new USB bus registered, assigned bus number 4 [ 0.939889] ohci_hcd 0000:00:12.1: irq 16, io mem 0xd2407000 [ 0.999524] hub 4-0:1.0: USB hub found [ 0.999604] hub 4-0:1.0: 3 ports detected [ 0.999755] ohci_hcd 0000:00:13.0: PCI INT A -> GSI 18 (level, low) -> IRQ 18 [ 0.999782] ohci_hcd 0000:00:13.0: setting latency timer to 64 [ 0.999789] ohci_hcd 0000:00:13.0: OHCI Host Controller [ 0.999859] ohci_hcd 0000:00:13.0: new USB bus registered, assigned bus number 5 [ 1.000001] ohci_hcd 0000:00:13.0: irq 18, io mem 0xd2406000 [ 1.002298] Freeing initrd memory: 10744k freed [ 1.059546] hub 5-0:1.0: USB hub found [ 1.059626] hub 5-0:1.0: 3 ports detected [ 1.059760] ohci_hcd 0000:00:13.1: PCI INT A -> GSI 18 (level, low) -> IRQ 18 [ 1.059787] ohci_hcd 0000:00:13.1: setting latency timer to 64 [ 1.059794] ohci_hcd 0000:00:13.1: OHCI Host Controller [ 1.059864] ohci_hcd 0000:00:13.1: new USB bus registered, assigned bus number 6 [ 1.059986] ohci_hcd 0000:00:13.1: irq 18, io mem 0xd2405000 [ 1.117071] hub 6-0:1.0: USB hub found [ 1.117098] hub 6-0:1.0: 3 ports detected [ 1.117243] ohci_hcd 0000:00:14.5: PCI INT C -> GSI 18 (level, low) -> IRQ 18 [ 1.117270] ohci_hcd 0000:00:14.5: setting latency timer to 64 [ 1.117277] ohci_hcd 0000:00:14.5: OHCI Host Controller [ 1.117350] ohci_hcd 0000:00:14.5: new USB bus registered, assigned bus number 7 [ 1.117471] ohci_hcd 0000:00:14.5: irq 18, io mem 0xd2404000 [ 1.170093] usb 1-4: new high speed USB device using ehci_hcd and address 2 [ 1.177085] hub 7-0:1.0: USB hub found [ 1.177165] hub 7-0:1.0: 2 ports detected [ 1.177297] uhci_hcd: USB Universal Host Controller Interface driver [ 1.177552] PNP: PS/2 Controller [PNP0303:PS2K,PNP0f13:PS2M] at 0x60,0x64 irq 1,12 [ 1.191858] serio: i8042 KBD port at 0x60,0x64 irq 1 [ 1.191872] serio: i8042 AUX port at 0x60,0x64 irq 12 [ 1.192067] mice: PS/2 mouse device common for all mice [ 1.192319] rtc_cmos 00:05: RTC can wake from S4 [ 1.192424] rtc_cmos 00:05: rtc core: registered rtc_cmos as rtc0 [ 1.192474] rtc0: alarms up to one day, 114 bytes nvram [ 1.192698] device-mapper: uevent: version 1.0.3 [ 1.192895] device-mapper: ioctl: 4.17.0-ioctl (2010-03-05) initialised: dm-devel@redhat.com [ 1.193047] device-mapper: multipath: version 1.1.1 loaded [ 1.193053] device-mapper: multipath round-robin: version 1.0.0 loaded [ 1.193543] cpuidle: using governor ladder [ 1.193548] cpuidle: using governor menu [ 1.194442] TCP cubic registered [ 1.194732] NET: Registered protocol family 10 [ 1.195563] lo: Disabled Privacy Extensions [ 1.196046] NET: Registered protocol family 17 [ 1.196125] powernow-k8: Found 1 AMD Turion(tm) X2 Ultra Dual-Core Mobile ZM-82 (2 cpu cores) (version 2.20.00) [ 1.196256] powernow-k8: 0 : pstate 0 (2200 MHz) [ 1.196261] powernow-k8: 1 : pstate 1 (1100 MHz) [ 1.196265] powernow-k8: 2 : pstate 2 (550 MHz) [ 1.196437] PM: Resume from disk failed. [ 1.196437] registered taskstats version 1 [ 1.196679] Magic number: 6:579:20 [ 1.196911] rtc_cmos 00:05: setting system clock to 2010-08-22 09:01:00 UTC (1282467660) [ 1.196918] BIOS EDD facility v0.16 2004-Jun-25, 0 devices found [ 1.196922] EDD information not available. [ 1.197142] Freeing unused kernel memory: 908k freed [ 1.198000] Write protecting the kernel read-only data: 10240k [ 1.198353] Freeing unused kernel memory: 424k freed [ 1.199096] Freeing unused kernel memory: 1644k freed [ 1.208215] input: AT Translated Set 2 keyboard as /devices/platform/i8042/serio0/input/input4 [ 1.219678] udev[74]: starting version 162 [ 1.350008] r8169 Gigabit Ethernet driver 2.3LK-NAPI loaded [ 1.350008] r8169 0000:09:00.0: PCI INT A -> GSI 18 (level, low) -> IRQ 18 [ 1.350008] r8169 0000:09:00.0: setting latency timer to 64 [ 1.350008] alloc irq_desc for 43 on node -1 [ 1.350008] alloc kstat_irqs on node -1 [ 1.350008] r8169 0000:09:00.0: irq 43 for MSI/MSI-X [ 1.350008] r8169 0000:09:00.0: eth0: RTL8168c/8111c at 0xffffc900050d8000, 00:23:8b:4f:a3:8d, XID 1c2000c0 IRQ 43 [ 1.361288] scsi0 : pata_atiixp [ 1.378499] scsi1 : pata_atiixp [ 1.379878] ata1: DUMMY [ 1.379884] ata2: PATA max UDMA/100 cmd 0x170 ctl 0x376 bmdma 0x6008 irq 15 [ 1.389839] ahci 0000:00:11.0: version 3.0 [ 1.389887] alloc irq_desc for 22 on node -1 [ 1.389892] alloc kstat_irqs on node -1 [ 1.389913] ahci 0000:00:11.0: PCI INT A -> GSI 22 (level, low) -> IRQ 22 [ 1.390150] ahci 0000:00:11.0: AHCI 0001.0100 32 slots 2 ports 3 Gbps 0x3 impl SATA mode [ 1.390158] ahci 0000:00:11.0: flags: 64bit ncq sntf ilck led clo pmp pio ccc sxs [ 1.391295] Initializing USB Mass Storage driver... [ 1.391295] scsi2 : ahci [ 1.391295] scsi4 : ahci [ 1.391295] ata3: SATA max UDMA/133 abar m1024@0xd2409000 port 0xd2409100 irq 22 [ 1.391295] ata4: SATA max UDMA/133 abar m1024@0xd2409000 port 0xd2409180 irq 22 [ 1.391295] scsi3 : usb-storage 1-4:1.0 [ 1.391295] usbcore: registered new interface driver usb-storage [ 1.391295] USB Mass Storage support registered. [ 1.461320] usb 2-2: new high speed USB device using ehci_hcd and address 2 [ 1.910059] ata4: softreset failed (device not ready) [ 1.910069] ata4: applying SB600 PMP SRST workaround and retrying [ 1.910102] ata3: softreset failed (device not ready) [ 1.910108] ata3: applying SB600 PMP SRST workaround and retrying [ 2.080120] usb 6-1: new full speed USB device using ohci_hcd and address 2 [ 2.091330] ata3: SATA link up 3.0 Gbps (SStatus 123 SControl 300) [ 2.091383] ata4: SATA link up 1.5 Gbps (SStatus 113 SControl 300) [ 2.091604] ata3.00: ATA-7: INTEL SSDSA2M080G2GC, 2CV102HA, max UDMA/133 [ 2.091610] ata3.00: 156301488 sectors, multi 16: LBA48 NCQ (depth 31/32) [ 2.091971] ata3.00: configured for UDMA/133 [ 2.092220] scsi 2:0:0:0: Direct-Access ATA INTEL SSDSA2M080 2CV1 PQ: 0 ANSI: 5 [ 2.092575] sd 2:0:0:0: Attached scsi generic sg0 type 0 [ 2.092759] sd 2:0:0:0: [sda] 156301488 512-byte logical blocks: (80.0 GB/74.5 GiB) [ 2.092771] sd 2:0:0:0: [sda] Write Protect is off [ 2.092771] sd 2:0:0:0: [sda] Mode Sense: 00 3a 00 00 [ 2.092771] sd 2:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA [ 2.092980] sda: sda1 sda2 < sda5 > [ 2.094329] sd 2:0:0:0: [sda] Attached SCSI disk [ 2.109724] ata4.00: ATAPI: TSSTcorp CDDVDW TS-L633L, 0400, max UDMA/100 [ 2.119055] ata4.00: configured for UDMA/100 [ 2.122600] scsi 4:0:0:0: CD-ROM TSSTcorp CDDVDW TS-L633L 0400 PQ: 0 ANSI: 5 [ 2.130078] sr0: scsi3-mmc drive: 24x/24x writer dvd-ram cd/rw xa/form2 cdda tray [ 2.130085] Uniform CD-ROM driver Revision: 3.20 [ 2.130263] sr 4:0:0:0: Attached scsi CD-ROM sr0 [ 2.130395] sr 4:0:0:0: Attached scsi generic sg1 type 5 [ 2.167438] EXT4-fs (sda1): mounted filesystem with ordered data mode. Opts: (null) [ 2.391266] scsi 3:0:0:0: Direct-Access Generic- Multi-Card 1.00 PQ: 0 ANSI: 0 CCS [ 2.391314] sd 3:0:0:0: Attached scsi generic sg2 type 0 [ 2.393984] sd 3:0:0:0: [sdb] Attached SCSI removable disk [ 2.404199] udev[354]: starting version 162 [ 2.405654] Adding 3227644k swap on /dev/sda5. Priority:-1 extents:1 across:3227644k SSD [ 2.491264] shpchp 0000:00:01.0: HPC vendor_id 1022 device_id 9602 ss_vid 1022 ss_did 9602 [ 2.491264] shpchp 0000:00:01.0: Cannot reserve MMIO region [ 2.492199] shpchp: Standard Hot Plug PCI Controller Driver version: 0.4 [ 2.502037] usb 7-1: new full speed USB device using ohci_hcd and address 2 [ 2.531295] lp: driver loaded but no devices found [ 2.578214] piix4_smbus 0000:00:14.0: SMBus Host Controller at 0xb00, revision 0 [ 2.581263] lib80211: common routines for IEEE802.11 drivers [ 2.581263] lib80211_crypt: registered algorithm 'NULL' [ 2.639623] EXT4-fs (sda1): re-mounted. Opts: errors=remount-ro [ 2.671295] EDAC MC: Ver: 2.1.0 Aug 20 2010 [ 2.771259] EDAC amd64_edac: Ver: 3.3.0 Aug 20 2010 [ 2.771259] EDAC amd64: This node reports that Memory ECC is currently disabled, set F3x44[22] (0000:00:18.3). [ 2.771259] EDAC amd64: ECC disabled in the BIOS or no ECC capability, module will not load. [ 2.771259] Either enable ECC checking or force module loading by setting 'ecc_enable_override'. [ 2.771259] (Note that use of the override may cause unknown side effects.) [ 2.771259] amd64_edac: probe of 0000:00:18.2 failed with error -22 [ 2.771259] wl: module license 'MIXED/Proprietary' taints kernel. [ 2.771259] Disabling lock debugging due to kernel taint [ 2.861293] wl 0000:08:00.0: PCI INT A -> GSI 17 (level, low) -> IRQ 17 [ 2.861293] wl 0000:08:00.0: setting latency timer to 64 [ 2.861293] lirc_dev: IR Remote Control driver registered, major 61 [ 2.887365] BUG: unable to handle kernel NULL pointer dereference at (null) [ 2.887373] IP: [] kfifo_alloc+0x2e/0xb0 [ 2.887389] PGD 1375cb067 PUD 1375ce067 PMD 0 [ 2.887396] Oops: 0002 [#1] SMP [ 2.887401] last sysfs file: /sys/devices/virtual/vc/vcs6/uevent [ 2.887407] CPU 1 [ 2.887410] Modules linked in: lirc_ene0100(+) v4l2_compat_ioctl32(+) hp_wmi(+) snd(+) lirc_dev wl(P+) bluetooth(+) drm(+) video(+) psmouse output serio_raw k10temp edac_core soundcore i2c_algo_bit lib80211 i2c_piix4 snd_page_alloc edac_mce_amd shpchp lp parport usb_storage r8169 mii ahci libahci pata_atiixp [ 2.887445] [ 2.887452] Pid: 529, comm: modprobe Tainted: P 2.6.35-17-generic #23-Ubuntu 3045/HP TouchSmart tx2 Notebook PC [ 2.887457] RIP: 0010:[] [] kfifo_alloc+0x2e/0xb0 [ 2.887466] RSP: 0018:ffff880138739d08 EFLAGS: 00010286 [ 2.887470] RAX: ffff880137500000 RBX: 0000000000000000 RCX: ffffffff8107f199 [ 2.887474] RDX: ffff880137504000 RSI: 00000000000000d0 RDI: 0000000000000246 [ 2.887479] RBP: ffff880138739d18 R08: 0000000000000000 R09: 0000000000000246 [ 2.887483] R10: 0000000000000030 R11: 0000000000000000 R12: 0000000000001000 [ 2.887487] R13: ffff88013b33c400 R14: ffff8801386a7280 R15: 00000000fffffff4 [ 2.887493] FS: 00007f3989a31700(0000) GS:ffff880001e80000(0000) knlGS:0000000000000000 [ 2.887498] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 [ 2.887502] CR2: 0000000000000000 CR3: 0000000139428000 CR4: 00000000000006e0 [ 2.887506] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 [ 2.887511] DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400 [ 2.887516] Process modprobe (pid: 529, threadinfo ffff880138738000, task ffff88013b6cc4a0) [ 2.887520] Stack: [ 2.887523] ffff880137c3fb40 ffff88013b49dba0 ffff880138739d58 ffffffffa010ee4f [ 2.887529] <0> ffff880138739d38 ffffffffa010f060 ffff88013b33c400 ffffffffa010f580 [ 2.887536] <0> ffffffffa010f540 00000000fffffff4 ffff880138739d98 ffffffff8133d7d5 [ 2.887543] Call Trace: [ 2.887555] [] ene_probe+0x17f/0x350 [lirc_ene0100] [ 2.887567] [] pnp_device_probe+0x95/0x100 [ 2.887575] [] ? driver_sysfs_add+0x62/0x90 [ 2.887581] [] really_probe+0x68/0x190 [ 2.887587] [] driver_probe_device+0x45/0x70 [ 2.887593] [] __driver_attach+0x9b/0xa0 [ 2.887599] [] ? __driver_attach+0x0/0xa0 [ 2.887608] [] bus_for_each_dev+0x68/0x90 [ 2.887614] [] driver_attach+0x1e/0x20 [ 2.887621] [] bus_add_driver+0xde/0x280 [ 2.887627] [] driver_register+0x80/0x150 [ 2.887635] [] ? ene_init+0x0/0x3e [lirc_ene0100] [ 2.887642] [] pnp_register_driver+0x21/0x30 [ 2.887650] [] ene_init+0x3c/0x3e [lirc_ene0100] [ 2.887660] [] do_one_initcall+0x3c/0x1a0 [ 2.887669] [] sys_init_module+0xbb/0x200 [ 2.887679] [] system_call_fastpath+0x16/0x1b [ 2.887682] Code: e5 41 54 53 0f 1f 44 00 00 48 89 fb 89 f7 41 89 f4 48 85 ff 48 8d 47 ff 74 33 48 85 f8 75 2e 89 d6 e8 07 35 0c 00 48 85 c0 74 52 <48> 89 03 44 89 63 08 31 c0 c7 43 10 00 00 00 00 c7 43 0c 00 00 [ 2.887724] RIP [] kfifo_alloc+0x2e/0xb0 [ 2.887731] RSP [ 2.887733] CR2: 0000000000000000 [ 2.887739] ---[ end trace 729f227be20567bc ]--- [ 4.473723] Bluetooth: Core ver 2.15 [ 4.473723] NET: Registered protocol family 31 [ 4.473723] Bluetooth: HCI device and connection manager initialized [ 4.473723] Bluetooth: HCI socket layer initialized [ 4.477535] Bluetooth: Generic Bluetooth USB driver ver 0.6 [ 4.481294] acpi device:03: registered as cooling_device2 [ 4.481294] input: Video Bus as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:00/LNXVIDEO:00/input/input5 [ 4.481294] ACPI: Video Device [VGA] (multi-head: yes rom: no post: no) [ 4.481294] input: HP WMI hotkeys as /devices/virtual/input/input6 [ 4.493671] Linux video capture interface: v2.00 [ 4.501294] uvcvideo: Found UVC 1.00 device CNF8038 (04f2:b132) [ 4.511295] usbcore: registered new interface driver btusb [ 4.519848] [drm] Initialized drm 1.1.0 20060810 [ 4.521260] input: CNF8038 as /devices/pci0000:00/0000:00:13.2/usb2/2-2/2-2:1.0/input/input7 [ 4.521420] usbcore: registered new interface driver uvcvideo [ 4.521425] USB Video Class driver (v0.1.0) [ 4.532139] usb 7-2: new full speed USB device using ohci_hcd and address 3 [ 4.622524] lib80211_crypt: registered algorithm 'TKIP' [ 4.622524] eth1: Broadcom BCM432b 802.11 Hybrid Wireless Controller 5.60.48.36 [ 4.665384] [drm] radeon defaulting to kernel modesetting. [ 4.665390] [drm] radeon kernel modesetting enabled. [ 4.665618] radeon 0000:01:05.0: power state changed by ACPI to D0 [ 4.665638] radeon 0000:01:05.0: power state changed by ACPI to D0 [ 4.665658] radeon 0000:01:05.0: PCI INT A -> GSI 18 (level, low) -> IRQ 18 [ 4.665668] radeon 0000:01:05.0: setting latency timer to 64 [ 4.677900] [drm] initializing kernel modesetting (RS780 0x1002:0x9612). [ 5.561288] [drm] register mmio base: 0xD2300000 [ 5.561288] [drm] register mmio size: 65536 [ 5.994612] ATOM BIOS: HP_Soyuz30 [ 5.994612] [drm] Clocks initialized ! [ 5.994612] radeon 0000:01:05.0: VRAM: 320M 0xC0000000 - 0xD3FFFFFF (320M used) [ 5.994612] radeon 0000:01:05.0: GTT: 512M 0xA0000000 - 0xBFFFFFFF [ 5.994612] [drm] Detected VRAM RAM=320M, BAR=256M [ 5.994612] [drm] RAM width 32bits DDR [ 5.994612] [TTM] Zone kernel: Available graphics memory: 1898388 kiB. [ 5.994612] [TTM] Initializing pool allocator. [ 5.994612] [drm] radeon: 320M of VRAM memory ready [ 5.994612] [drm] radeon: 512M of GTT memory ready. [ 5.994612] [drm] radeon: irq initialized. [ 5.994612] [drm] GART: num cpu pages 131072, num gpu pages 131072 [ 6.032680] HDA Intel 0000:00:14.2: PCI INT A -> GSI 16 (level, low) -> IRQ 16 [ 6.032866] HDA Intel 0000:00:14.2: setting latency timer to 64 [ 6.061297] type=1400 audit(1282467665.347:2): apparmor="STATUS" operation="profile_load" name="/sbin/dhclient3" pid=739 comm="apparmor_parser" [ 6.061297] type=1400 audit(1282467665.347:3): apparmor="STATUS" operation="profile_load" name="/usr/lib/NetworkManager/nm-dhcp-client.action" pid=739 comm="apparmor_parser" [ 6.061297] type=1400 audit(1282467665.347:4): apparmor="STATUS" operation="profile_load" name="/usr/lib/connman/scripts/dhclient-script" pid=739 comm="apparmor_parser" [ 6.063827] usbcore: registered new interface driver hiddev [ 6.066320] usbcore: registered new interface driver usbhid [ 6.066320] usbhid: USB HID core driver [ 6.076023] ntrig 0003:1B96:0001.0001: hidraw0: USB HID v1.10 Device [N-trig DuoSense] on usb-0000:00:14.5-2/input0 [ 6.080599] input: N-trig DuoSense as /devices/pci0000:00/0000:00:14.5/usb7/7-2/7-2:1.1/input/input8 [ 6.080599] input: N-trig DuoSense as /devices/pci0000:00/0000:00:14.5/usb7/7-2/7-2:1.1/input/input9 [ 6.080599] input: N-trig DuoSense as /devices/pci0000:00/0000:00:14.5/usb7/7-2/7-2:1.1/input/input10 [ 6.080599] ntrig 0003:1B96:0001.0002: input,hidraw1: USB HID v1.10 Device [N-trig DuoSense] on usb-0000:00:14.5-2/input1 [ 6.104503] [drm] Loading RS780 Microcode [ 6.336261] [drm] ring test succeeded in 0 usecs [ 6.342677] [drm] radeon: ib pool ready. [ 6.351354] [drm] ib test succeeded in 0 usecs [ 6.355173] [drm] Enabling audio support [ 6.355173] [drm] Default TV standard: NTSC [ 6.381296] [drm] Default TV standard: NTSC [ 6.386679] [drm] Radeon Display Connectors [ 6.394683] [drm] Connector 0: [ 6.399794] [drm] VGA [ 6.399800] [drm] DDC: 0x7e40 0x7e40 0x7e44 0x7e44 0x7e48 0x7e48 0x7e4c 0x7e4c [ 6.399803] [drm] Encoders: [ 6.399807] [drm] CRT1: INTERNAL_KLDSCP_DAC1 [ 6.399810] [drm] Connector 1: [ 6.399813] [drm] DIN [ 6.399815] [drm] Encoders: [ 6.399818] [drm] TV1: INTERNAL_KLDSCP_DAC1 [ 6.399821] [drm] Connector 2: [ 6.399824] [drm] LVDS [ 6.399828] [drm] DDC: 0x7e50 0x7e50 0x7e54 0x7e54 0x7e58 0x7e58 0x7e5c 0x7e5c [ 6.399831] [drm] Encoders: [ 6.399835] [drm] LCD1: INTERNAL_KLDSCP_LVTMA [ 6.520036] [drm] radeon: power management initialized [ 6.549515] Synaptics Touchpad, model: 1, fw: 6.3, id: 0x180b1, caps: 0xa04711/0xa00000/0x0 [ 6.624137] input: SynPS/2 Synaptics TouchPad as /devices/platform/i8042/serio1/input/input11 [ 6.650716] type=1400 audit(1282467665.937:5): apparmor="STATUS" operation="profile_replace" name="/sbin/dhclient3" pid=909 comm="apparmor_parser" [ 6.653974] type=1400 audit(1282467665.947:6): apparmor="STATUS" operation="profile_load" name="/usr/share/gdm/guest-session/Xsession" pid=908 comm="apparmor_parser" [ 6.666329] type=1400 audit(1282467665.957:7): apparmor="STATUS" operation="profile_replace" name="/usr/lib/NetworkManager/nm-dhcp-client.action" pid=909 comm="apparmor_parser" [ 6.699209] type=1400 audit(1282467665.987:8): apparmor="STATUS" operation="profile_replace" name="/usr/lib/connman/scripts/dhclient-script" pid=909 comm="apparmor_parser" [ 6.719842] type=1400 audit(1282467666.007:9): apparmor="STATUS" operation="profile_load" name="/usr/lib/cups/backend/cups-pdf" pid=914 comm="apparmor_parser" [ 6.732179] type=1400 audit(1282467666.027:10): apparmor="STATUS" operation="profile_load" name="/usr/bin/evince" pid=912 comm="apparmor_parser" [ 6.764994] r8169 0000:09:00.0: eth0: link down [ 6.777027] type=1400 audit(1282467666.067:11): apparmor="STATUS" operation="profile_load" name="/usr/bin/evince-previewer" pid=912 comm="apparmor_parser" [ 6.780828] ADDRCONF(NETDEV_UP): eth0: link is not ready Bug: 627495 [ 0.000000] Initializing cgroup subsys cpuset [ 0.000000] Initializing cgroup subsys cpu [ 0.000000] Linux version 2.6.35-19-generic (buildd@allspice) (gcc version 4.4.5 20100824 (prerelease) (Ubuntu/Linaro 4.4.4-9ubuntu2) ) #28-Ubuntu SMP Sun Aug 29 06:34:38 UTC 2010 (Ubuntu 2.6.35-19.28-generic 2.6.35.3) [ 0.000000] Command line: BOOT_IMAGE=/boot/vmlinuz-2.6.35-19-generic root=UUID=fc87e0d4-e7e7-4150-86e6-268ca62edd36 ro quiet splash [ 0.000000] BIOS-provided physical RAM map: [ 0.000000] BIOS-e820: 0000000000000000 - 0000000000093c00 (usable) [ 0.000000] BIOS-e820: 0000000000093c00 - 00000000000a0000 (reserved) [ 0.000000] BIOS-e820: 00000000000e0000 - 0000000000100000 (reserved) [ 0.000000] BIOS-e820: 0000000000100000 - 000000003f790000 (usable) [ 0.000000] BIOS-e820: 000000003f790000 - 000000003f79e000 (ACPI data) [ 0.000000] BIOS-e820: 000000003f79e000 - 000000003f7d0000 (ACPI NVS) [ 0.000000] BIOS-e820: 000000003f7d0000 - 000000003f7e0000 (reserved) [ 0.000000] BIOS-e820: 000000003f7ec000 - 0000000040000000 (reserved) [ 0.000000] BIOS-e820: 00000000fee00000 - 00000000fee01000 (reserved) [ 0.000000] BIOS-e820: 00000000ffc00000 - 0000000100000000 (reserved) [ 0.000000] BIOS-e820: 0000000100000000 - 00000003c0000000 (usable) [ 0.000000] NX (Execute Disable) protection: active [ 0.000000] DMI present. [ 0.000000] AMI BIOS detected: BIOS may corrupt low RAM, working around it. [ 0.000000] e820 update range: 0000000000000000 - 0000000000010000 (usable) ==> (reserved) [ 0.000000] e820 update range: 0000000000000000 - 0000000000001000 (usable) ==> (reserved) [ 0.000000] e820 remove range: 00000000000a0000 - 0000000000100000 (usable) [ 0.000000] No AGP bridge found [ 0.000000] last_pfn = 0x3c0000 max_arch_pfn = 0x400000000 [ 0.000000] MTRR default type: uncachable [ 0.000000] MTRR fixed ranges enabled: [ 0.000000] 00000-9FFFF write-back [ 0.000000] A0000-BFFFF uncachable [ 0.000000] C0000-D7FFF write-protect [ 0.000000] D8000-DFFFF uncachable [ 0.000000] E0000-E3FFF write-protect [ 0.000000] E4000-E7FFF write-through [ 0.000000] E8000-EBFFF write-protect [ 0.000000] EC000-EFFFF write-through [ 0.000000] F0000-FFFFF write-protect [ 0.000000] MTRR variable ranges enabled: [ 0.000000] 0 base 03C0000000 mask FFC0000000 uncachable [ 0.000000] 1 base 0000000000 mask FC00000000 write-back [ 0.000000] 2 base 0040000000 mask FFC0000000 uncachable [ 0.000000] 3 base 0080000000 mask FF80000000 uncachable [ 0.000000] 4 base 003F800000 mask FFFF800000 uncachable [ 0.000000] 5 disabled [ 0.000000] 6 disabled [ 0.000000] 7 disabled [ 0.000000] 8 disabled [ 0.000000] 9 disabled [ 0.000000] x86 PAT enabled: cpu 0, old 0x7040600070406, new 0x7010600070106 [ 0.000000] e820 update range: 000000003f800000 - 0000000100000000 (usable) ==> (reserved) [ 0.000000] last_pfn = 0x3f790 max_arch_pfn = 0x400000000 [ 0.000000] Scanning 0 areas for low memory corruption [ 0.000000] modified physical RAM map: [ 0.000000] modified: 0000000000000000 - 0000000000010000 (reserved) [ 0.000000] modified: 0000000000010000 - 0000000000093c00 (usable) [ 0.000000] modified: 0000000000093c00 - 00000000000a0000 (reserved) [ 0.000000] modified: 00000000000e0000 - 0000000000100000 (reserved) [ 0.000000] modified: 0000000000100000 - 000000003f790000 (usable) [ 0.000000] modified: 000000003f790000 - 000000003f79e000 (ACPI data) [ 0.000000] modified: 000000003f79e000 - 000000003f7d0000 (ACPI NVS) [ 0.000000] modified: 000000003f7d0000 - 000000003f7e0000 (reserved) [ 0.000000] modified: 000000003f7ec000 - 0000000040000000 (reserved) [ 0.000000] modified: 00000000fee00000 - 00000000fee01000 (reserved) [ 0.000000] modified: 00000000ffc00000 - 0000000100000000 (reserved) [ 0.000000] modified: 0000000100000000 - 00000003c0000000 (usable) [ 0.000000] initial memory mapped : 0 - 20000000 [ 0.000000] found SMP MP-table at [ffff8800000ff780] ff780 [ 0.000000] Using GB pages for direct mapping [ 0.000000] init_memory_mapping: 0000000000000000-000000003f790000 [ 0.000000] 0000000000 - 003f600000 page 2M [ 0.000000] 003f600000 - 003f790000 page 4k [ 0.000000] kernel direct mapping tables up to 3f790000 @ 16000-19000 [ 0.000000] init_memory_mapping: 0000000100000000-00000003c0000000 [ 0.000000] 0100000000 - 03c0000000 page 1G [ 0.000000] kernel direct mapping tables up to 3c0000000 @ 17000-18000 [ 0.000000] RAMDISK: 2e9cc000 - 2f9ec000 [ 0.000000] ACPI: RSDP 00000000000f9f30 00024 (v02 ACPIAM) [ 0.000000] ACPI: XSDT 000000003f790100 0005C (v01 062510 XSDT1536 20100625 MSFT 00000097) [ 0.000000] ACPI: FACP 000000003f790290 000F4 (v04 062510 FACP1536 20100625 MSFT 00000097) [ 0.000000] ACPI: DSDT 000000003f7904f0 05F5A (v02 1W555 1W555A47 00000A47 INTL 20051117) [ 0.000000] ACPI: FACS 000000003f79e000 00040 [ 0.000000] ACPI: APIC 000000003f790390 00118 (v02 062510 APIC1536 20100625 MSFT 00000097) [ 0.000000] ACPI: MCFG 000000003f7904b0 0003C (v01 062510 OEMMCFG 20100625 MSFT 00000097) [ 0.000000] ACPI: OEMB 000000003f79e040 00082 (v01 062510 OEMB1536 20100625 MSFT 00000097) [ 0.000000] ACPI: SRAT 000000003f79a4f0 001D0 (v02 062510 OEMSRAT 00000001 INTL 00000001) [ 0.000000] ACPI: DMAR 000000003f79e0d0 00128 (v01 AMI OEMDMAR 00000001 MSFT 00000097) [ 0.000000] ACPI: SSDT 000000003f7a15e0 00363 (v01 DpgPmm CpuPm 00000012 INTL 20051117) [ 0.000000] ACPI: Local APIC address 0xfee00000 [ 0.000000] SRAT: PXM 0 -> APIC 0x00 -> Node 0 [ 0.000000] SRAT: PXM 0 -> APIC 0x02 -> Node 0 [ 0.000000] SRAT: PXM 0 -> APIC 0x12 -> Node 0 [ 0.000000] SRAT: PXM 0 -> APIC 0x14 -> Node 0 [ 0.000000] SRAT: PXM 0 -> APIC 0x01 -> Node 0 [ 0.000000] SRAT: PXM 0 -> APIC 0x03 -> Node 0 [ 0.000000] SRAT: PXM 0 -> APIC 0x13 -> Node 0 [ 0.000000] SRAT: PXM 0 -> APIC 0x15 -> Node 0 [ 0.000000] SRAT: PXM 1 -> APIC 0x20 -> Node 1 [ 0.000000] SRAT: PXM 1 -> APIC 0x22 -> Node 1 [ 0.000000] SRAT: PXM 1 -> APIC 0x32 -> Node 1 [ 0.000000] SRAT: PXM 1 -> APIC 0x34 -> Node 1 [ 0.000000] SRAT: PXM 1 -> APIC 0x21 -> Node 1 [ 0.000000] SRAT: PXM 1 -> APIC 0x23 -> Node 1 [ 0.000000] SRAT: PXM 1 -> APIC 0x33 -> Node 1 [ 0.000000] SRAT: PXM 1 -> APIC 0x35 -> Node 1 [ 0.000000] SRAT: Node 0 PXM 0 0-a0000 [ 0.000000] SRAT: Node 0 PXM 0 100000-40000000 [ 0.000000] SRAT: Node 0 PXM 0 100000000-240000000 [ 0.000000] SRAT: Node 1 PXM 1 240000000-3c0000000 [ 0.000000] SRAT: Node 0 [0,a0000) + [100000,40000000) -> [0,40000000) [ 0.000000] SRAT: Node 0 [0,40000000) + [100000000,240000000) -> [0,240000000) [ 0.000000] NUMA: Using 30 for the hash shift. [ 0.000000] Initmem setup node 0 0000000000000000-0000000240000000 [ 0.000000] NODE_DATA [0000000100000000 - 0000000100004fff] [ 0.000000] Initmem setup node 1 0000000240000000-00000003c0000000 [ 0.000000] NODE_DATA [0000000240000000 - 0000000240004fff] [ 0.000000] [ffffea0000000000-ffffea0007dfffff] PMD -> [ffff880100200000-ffff8801055fffff] on node 0 [ 0.000000] [ffffea0007e00000-ffffea000d1fffff] PMD -> [ffff880240200000-ffff8802455fffff] on node 1 [ 0.000000] Zone PFN ranges: [ 0.000000] DMA 0x00000010 -> 0x00001000 [ 0.000000] DMA32 0x00001000 -> 0x00100000 [ 0.000000] Normal 0x00100000 -> 0x003c0000 [ 0.000000] Movable zone start PFN for each node [ 0.000000] early_node_map[4] active PFN ranges [ 0.000000] 0: 0x00000010 -> 0x00000093 [ 0.000000] 0: 0x00000100 -> 0x0003f790 [ 0.000000] 0: 0x00100000 -> 0x00240000 [ 0.000000] 1: 0x00240000 -> 0x003c0000 [ 0.000000] On node 0 totalpages: 1570579 [ 0.000000] DMA zone: 56 pages used for memmap [ 0.000000] DMA zone: 0 pages reserved [ 0.000000] DMA zone: 3915 pages, LIFO batch:0 [ 0.000000] DMA32 zone: 14280 pages used for memmap [ 0.000000] DMA32 zone: 241608 pages, LIFO batch:31 [ 0.000000] Normal zone: 17920 pages used for memmap [ 0.000000] Normal zone: 1292800 pages, LIFO batch:31 [ 0.000000] On node 1 totalpages: 1572864 [ 0.000000] Normal zone: 21504 pages used for memmap [ 0.000000] Normal zone: 1551360 pages, LIFO batch:31 [ 0.000000] ACPI: PM-Timer IO Port: 0x808 [ 0.000000] ACPI: Local APIC address 0xfee00000 [ 0.000000] ACPI: LAPIC (acpi_id[0x01] lapic_id[0x00] enabled) [ 0.000000] ACPI: LAPIC (acpi_id[0x02] lapic_id[0x02] enabled) [ 0.000000] ACPI: LAPIC (acpi_id[0x03] lapic_id[0x12] enabled) [ 0.000000] ACPI: LAPIC (acpi_id[0x04] lapic_id[0x14] enabled) [ 0.000000] ACPI: LAPIC (acpi_id[0x05] lapic_id[0x20] enabled) [ 0.000000] ACPI: LAPIC (acpi_id[0x06] lapic_id[0x22] enabled) [ 0.000000] ACPI: LAPIC (acpi_id[0x07] lapic_id[0x32] enabled) [ 0.000000] ACPI: LAPIC (acpi_id[0x08] lapic_id[0x34] enabled) [ 0.000000] ACPI: LAPIC (acpi_id[0x09] lapic_id[0x01] enabled) [ 0.000000] ACPI: LAPIC (acpi_id[0x0a] lapic_id[0x03] enabled) [ 0.000000] ACPI: LAPIC (acpi_id[0x0b] lapic_id[0x13] enabled) [ 0.000000] ACPI: LAPIC (acpi_id[0x0c] lapic_id[0x15] enabled) [ 0.000000] ACPI: LAPIC (acpi_id[0x0d] lapic_id[0x21] enabled) [ 0.000000] ACPI: LAPIC (acpi_id[0x0e] lapic_id[0x23] enabled) [ 0.000000] ACPI: LAPIC (acpi_id[0x0f] lapic_id[0x33] enabled) [ 0.000000] ACPI: LAPIC (acpi_id[0x10] lapic_id[0x35] enabled) [ 0.000000] ACPI: LAPIC (acpi_id[0x11] lapic_id[0x90] disabled) [ 0.000000] ACPI: LAPIC (acpi_id[0x12] lapic_id[0x91] disabled) [ 0.000000] ACPI: LAPIC (acpi_id[0x13] lapic_id[0x92] disabled) [ 0.000000] ACPI: LAPIC (acpi_id[0x14] lapic_id[0x93] disabled) [ 0.000000] ACPI: LAPIC (acpi_id[0x15] lapic_id[0x94] disabled) [ 0.000000] ACPI: LAPIC (acpi_id[0x16] lapic_id[0x95] disabled) [ 0.000000] ACPI: LAPIC (acpi_id[0x17] lapic_id[0x96] disabled) [ 0.000000] ACPI: LAPIC (acpi_id[0x18] lapic_id[0x97] disabled) [ 0.000000] ACPI: IOAPIC (id[0x06] address[0xfec00000] gsi_base[0]) [ 0.000000] IOAPIC[0]: apic_id 6, version 32, address 0xfec00000, GSI 0-23 [ 0.000000] ACPI: IOAPIC (id[0x07] address[0xfec8a000] gsi_base[24]) [ 0.000000] IOAPIC[1]: apic_id 7, version 32, address 0xfec8a000, GSI 24-47 [ 0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 0 global_irq 2 dfl dfl) [ 0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 9 global_irq 9 high level) [ 0.000000] ACPI: IRQ0 used by override. [ 0.000000] ACPI: IRQ2 used by override. [ 0.000000] ACPI: IRQ9 used by override. [ 0.000000] Using ACPI (MADT) for SMP configuration information [ 0.000000] SMP: Allowing 24 CPUs, 8 hotplug CPUs [ 0.000000] nr_irqs_gsi: 64 [ 0.000000] early_res array is doubled to 64 at [17000 - 177ff] [ 0.000000] PM: Registered nosave memory: 0000000000093000 - 0000000000094000 [ 0.000000] PM: Registered nosave memory: 0000000000094000 - 00000000000a0000 [ 0.000000] PM: Registered nosave memory: 00000000000a0000 - 00000000000e0000 [ 0.000000] PM: Registered nosave memory: 00000000000e0000 - 0000000000100000 [ 0.000000] PM: Registered nosave memory: 000000003f790000 - 000000003f79e000 [ 0.000000] PM: Registered nosave memory: 000000003f79e000 - 000000003f7d0000 [ 0.000000] PM: Registered nosave memory: 000000003f7d0000 - 000000003f7e0000 [ 0.000000] PM: Registered nosave memory: 000000003f7e0000 - 000000003f7ec000 [ 0.000000] PM: Registered nosave memory: 000000003f7ec000 - 0000000040000000 [ 0.000000] PM: Registered nosave memory: 0000000040000000 - 00000000fee00000 [ 0.000000] PM: Registered nosave memory: 00000000fee00000 - 00000000fee01000 [ 0.000000] PM: Registered nosave memory: 00000000fee01000 - 00000000ffc00000 [ 0.000000] PM: Registered nosave memory: 00000000ffc00000 - 0000000100000000 [ 0.000000] Allocating PCI resources starting at 40000000 (gap: 40000000:bee00000) [ 0.000000] Booting paravirtualized kernel on bare hardware [ 0.000000] setup_percpu: NR_CPUS:64 nr_cpumask_bits:64 nr_cpu_ids:24 nr_node_ids:2 [ 0.000000] early_res array is doubled to 128 at [17800 - 187ff] [ 0.000000] PERCPU: Embedded 30 pages/cpu @ffff880001e00000 s91456 r8192 d23232 u131072 [ 0.000000] pcpu-alloc: s91456 r8192 d23232 u131072 alloc=1*2097152 [ 0.000000] pcpu-alloc: [0] 00 01 02 03 08 09 10 11 16 18 20 22 -- -- -- -- [ 0.000000] pcpu-alloc: [1] 04 05 06 07 12 13 14 15 17 19 21 23 -- -- -- -- [ 0.000000] Built 2 zonelists in Zone order, mobility grouping on. Total pages: 3089683 [ 0.000000] Policy zone: Normal [ 0.000000] Kernel command line: BOOT_IMAGE=/boot/vmlinuz-2.6.35-19-generic root=UUID=fc87e0d4-e7e7-4150-86e6-268ca62edd36 ro quiet splash [ 0.000000] PID hash table entries: 4096 (order: 3, 32768 bytes) [ 0.000000] Checking aperture... [ 0.000000] No AGP bridge found [ 0.000000] Calgary: detecting Calgary via BIOS EBDA area [ 0.000000] Calgary: Unable to locate Rio Grande table in EBDA - bailing! [ 0.000000] Subtract (79 early reservations) [ 0.000000] #1 [0001000000 - 0001d17114] TEXT DATA BSS [ 0.000000] #2 [002e9cc000 - 002f9ec000] RAMDISK [ 0.000000] #3 [0001d18000 - 0001d1819d] BRK [ 0.000000] #4 [00000ff790 - 0000100000] BIOS reserved [ 0.000000] #5 [00000ff780 - 00000ff790] MP-table mpf [ 0.000000] #6 [0000093c00 - 00000fd130] BIOS reserved [ 0.000000] #7 [00000fd3ac - 00000ff780] BIOS reserved [ 0.000000] #8 [00000fd130 - 00000fd3ac] MP-table mpc [ 0.000000] #9 [0000010000 - 0000012000] TRAMPOLINE [ 0.000000] #10 [0000012000 - 0000016000] ACPI WAKEUP [ 0.000000] #11 [0000016000 - 0000017000] PGTABLE [ 0.000000] #12 [0100000000 - 0100005000] NODE_DATA [ 0.000000] #13 [0240000000 - 0240005000] NODE_DATA [ 0.000000] #14 [0001d181c0 - 0001d191c0] BOOTMEM [ 0.000000] #15 [0001d17140 - 0001d175c0] BOOTMEM [ 0.000000] #16 [0240005000 - 0240005480] BOOTMEM [ 0.000000] #17 [0100005000 - 0100006000] BOOTMEM [ 0.000000] #18 [0100006000 - 0100007000] BOOTMEM [ 0.000000] #19 [0100200000 - 0105600000] MEMMAP 0 [ 0.000000] #20 [0240200000 - 0245600000] MEMMAP 1 [ 0.000000] #21 [0001d175c0 - 0001d17740] BOOTMEM [ 0.000000] #22 [0001d191c0 - 0001d311c0] BOOTMEM [ 0.000000] #23 [0001d311c0 - 0001d491c0] BOOTMEM [ 0.000000] #24 [0240005480 - 024001d480] BOOTMEM [ 0.000000] #25 [0001d4a000 - 0001d4b000] BOOTMEM [ 0.000000] #26 [0001d17740 - 0001d177c6] BOOTMEM [ 0.000000] #27 [0001d17800 - 0001d17aa0] BOOTMEM [ 0.000000] #28 [0001d17ac0 - 0001d17b28] BOOTMEM [ 0.000000] #29 [0001d17b40 - 0001d17ba8] BOOTMEM [ 0.000000] #30 [0001d17bc0 - 0001d17c28] BOOTMEM [ 0.000000] #31 [0001d17c40 - 0001d17ca8] BOOTMEM [ 0.000000] #32 [0001d17cc0 - 0001d17d28] BOOTMEM [ 0.000000] #33 [0001d17d40 - 0001d17da8] BOOTMEM [ 0.000000] #34 [0001d17dc0 - 0001d17e28] BOOTMEM [ 0.000000] #35 [0001d17e40 - 0001d17ea8] BOOTMEM [ 0.000000] #36 [0001d17ec0 - 0001d17f28] BOOTMEM [ 0.000000] #37 [0001d17f40 - 0001d17fa8] BOOTMEM [ 0.000000] #38 [0001d491c0 - 0001d49228] BOOTMEM [ 0.000000] #39 [0001d17fc0 - 0001d17fe0] BOOTMEM [ 0.000000] #40 [0001d49240 - 0001d49260] BOOTMEM [ 0.000000] #41 [0001d49280 - 0001d492ea] BOOTMEM [ 0.000000] #42 [0001d49300 - 0001d4936a] BOOTMEM [ 0.000000] #43 [0001e00000 - 0001e1e000] BOOTMEM [ 0.000000] #44 [0001e20000 - 0001e3e000] BOOTMEM [ 0.000000] #45 [0001e40000 - 0001e5e000] BOOTMEM [ 0.000000] #46 [0001e60000 - 0001e7e000] BOOTMEM [ 0.000000] #47 [0001e80000 - 0001e9e000] BOOTMEM [ 0.000000] #48 [0001ea0000 - 0001ebe000] BOOTMEM [ 0.000000] #49 [0001ec0000 - 0001ede000] BOOTMEM [ 0.000000] #50 [0001ee0000 - 0001efe000] BOOTMEM [ 0.000000] #51 [0001f00000 - 0001f1e000] BOOTMEM [ 0.000000] #52 [0001f20000 - 0001f3e000] BOOTMEM [ 0.000000] #53 [0001f40000 - 0001f5e000] BOOTMEM [ 0.000000] #54 [0001f60000 - 0001f7e000] BOOTMEM [ 0.000000] #55 [0245600000 - 024561e000] BOOTMEM [ 0.000000] #56 [0245620000 - 024563e000] BOOTMEM [ 0.000000] #57 [0245640000 - 024565e000] BOOTMEM [ 0.000000] #58 [0245660000 - 024567e000] BOOTMEM [ 0.000000] #59 [0245680000 - 024569e000] BOOTMEM [ 0.000000] #60 [02456a0000 - 02456be000] BOOTMEM [ 0.000000] #61 [02456c0000 - 02456de000] BOOTMEM [ 0.000000] #62 [02456e0000 - 02456fe000] BOOTMEM [ 0.000000] #63 [0245700000 - 024571e000] BOOTMEM [ 0.000000] #64 [0245720000 - 024573e000] BOOTMEM [ 0.000000] #65 [0245740000 - 024575e000] BOOTMEM [ 0.000000] #66 [0245760000 - 024577e000] BOOTMEM [ 0.000000] #67 [0001d49380 - 0001d49390] BOOTMEM [ 0.000000] #68 [0001d493c0 - 0001d493d0] BOOTMEM [ 0.000000] #69 [0001d49400 - 0001d49460] BOOTMEM [ 0.000000] #70 [0001d49480 - 0001d49540] BOOTMEM [ 0.000000] #71 [0001d49540 - 0001d49650] BOOTMEM [ 0.000000] #72 [0001d49680 - 0001d496c8] BOOTMEM [ 0.000000] #73 [0001d49700 - 0001d49748] BOOTMEM [ 0.000000] #74 [0001d4b000 - 0001d53000] BOOTMEM [ 0.000000] #75 [0001f7e000 - 0005f7e000] BOOTMEM [ 0.000000] #76 [0001d53000 - 0001d73000] BOOTMEM [ 0.000000] #77 [0001d73000 - 0001db3000] BOOTMEM [ 0.000000] #78 [0000018800 - 0000020800] BOOTMEM [ 0.000000] Memory: 12302572k/15728640k available (5701k kernel code, 3154868k absent, 271200k reserved, 5388k data, 908k init) [ 0.000000] SLUB: Genslabs=14, HWalign=64, Order=0-3, MinObjects=0, CPUs=24, Nodes=2 [ 0.000000] Hierarchical RCU implementation. [ 0.000000] RCU dyntick-idle grace-period acceleration is enabled. [ 0.000000] RCU-based detection of stalled CPUs is disabled. [ 0.000000] Verbose stalled-CPUs detection is disabled. [ 0.000000] NR_IRQS:4352 nr_irqs:1280 [ 0.000000] Extended CMOS year: 2000 [ 0.000000] Console: colour VGA+ 80x25 [ 0.000000] console [tty0] enabled [ 0.000000] allocated 125829120 bytes of page_cgroup [ 0.000000] please try 'cgroup_disable=memory' option if you don't want memory cgroups [ 0.010000] Fast TSC calibration using PIT [ 0.020000] Detected 2529.905 MHz processor. [ 0.000011] Calibrating delay loop (skipped), value calculated using timer frequency.. 5059.81 BogoMIPS (lpj=25299050) [ 0.000015] pid_max: default: 32768 minimum: 301 [ 0.000056] Security Framework initialized [ 0.000071] AppArmor: AppArmor initialized [ 0.000072] Yama: becoming mindful. [ 0.001630] Dentry cache hash table entries: 2097152 (order: 12, 16777216 bytes) [ 0.005621] Inode-cache hash table entries: 1048576 (order: 11, 8388608 bytes) [ 0.007187] Mount-cache hash table entries: 256 [ 0.007331] Initializing cgroup subsys ns [ 0.007335] Initializing cgroup subsys cpuacct [ 0.007340] Initializing cgroup subsys memory [ 0.007362] Initializing cgroup subsys devices [ 0.007364] Initializing cgroup subsys freezer [ 0.007365] Initializing cgroup subsys net_cls [ 0.007397] CPU: Physical Processor ID: 0 [ 0.007398] CPU: Processor Core ID: 0 [ 0.007404] mce: CPU supports 9 MCE banks [ 0.007416] CPU0: Thermal monitoring enabled (TM1) [ 0.007425] using mwait in idle threads. [ 0.007427] Performance Events: PEBS fmt1+, Westmere events, Intel PMU driver. [ 0.007433] ... version: 3 [ 0.007434] ... bit width: 48 [ 0.007436] ... generic registers: 4 [ 0.007437] ... value mask: 0000ffffffffffff [ 0.007439] ... max period: 000000007fffffff [ 0.007440] ... fixed-purpose events: 3 [ 0.007441] ... event mask: 000000070000000f [ 0.009559] ACPI: Core revision 20100428 [ 0.058453] ftrace: converting mcount calls to 0f 1f 44 00 00 [ 0.058458] ftrace: allocating 22654 entries in 89 pages [ 0.065359] DMAR: Host address width 40 [ 0.065361] DMAR: DRHD base: 0x000000fbffe000 flags: 0x1 [ 0.065370] IOMMU 0: reg_base_addr fbffe000 ver 1:0 cap c90780106f0462 ecap f020f6 [ 0.065373] DMAR: RMRR base: 0x000000000ec000 end: 0x000000000effff [ 0.065375] DMAR: RMRR base: 0x0000003f7ec000 end: 0x0000003f7fffff [ 0.065377] DMAR: ATSR flags: 0x0 [ 0.065547] Setting APIC routing to physical flat [ 0.065995] ..TIMER: vector=0x30 apic1=0 pin1=2 apic2=-1 pin2=-1 [ 0.165816] CPU0: Intel(R) Xeon(R) CPU E5630 @ 2.53GHz stepping 02 [ 0.278672] Booting Node 0, Processors #1 #2 #3 Ok. [ 0.817764] Booting Node 1, Processors #4 [ 0.977323] Disabling lock debugging due to kernel taint [ 0.997385] #5 #6 #7 Ok. [ 1.536476] Booting Node 0, Processors #8 #9 #10 #11 Ok. [ 2.255220] Booting Node 1, Processors #12 #13 #14 #15 [ 2.973841] Brought up 16 CPUs [ 2.973844] Total of 16 processors activated (80966.58 BogoMIPS). [ 2.985910] devtmpfs: initialized [ 2.986807] regulator: core version 0.5 [ 2.986830] Time: 2:06:16 Date: 09/01/10 [ 2.986870] NET: Registered protocol family 16 [ 2.986974] ACPI: bus type pci registered [ 2.986989] Trying to unpack rootfs image as initramfs... [ 2.987037] PCI: MMCONFIG for domain 0000 [bus 00-ff] at [mem 0xe0000000-0xefffffff] (base 0xe0000000) [ 2.987039] PCI: not using MMCONFIG [ 2.987041] PCI: Using configuration type 1 for base access [ 2.987894] bio: create slab at 0 [ 2.989110] ACPI: EC: Look up EC in DSDT [ 2.990517] ACPI: Executed 1 blocks of module-level executable AML code [ 2.998197] ACPI: SSDT 000000003f79e200 033D4 (v01 DpgPmm P001Ist 00000011 INTL 20051117) [ 2.998686] ACPI: Dynamic OEM Table Load: [ 2.998688] ACPI: SSDT (null) 033D4 (v01 DpgPmm P001Ist 00000011 INTL 20051117) [ 2.999057] ACPI: Interpreter enabled [ 2.999059] ACPI: (supports S0 S1 S3 S4 S5) [ 2.999077] ACPI: Using IOAPIC for interrupt routing [ 2.999124] PCI: MMCONFIG for domain 0000 [bus 00-ff] at [mem 0xe0000000-0xefffffff] (base 0xe0000000) [ 3.001018] PCI: MMCONFIG at [mem 0xe0000000-0xefffffff] reserved in ACPI motherboard resources [ 3.039287] ACPI: No dock devices found. [ 3.039290] PCI: Using host bridge windows from ACPI; if necessary, use "pci=nocrs" and report a bug [ 3.039586] ACPI: PCI Root Bridge [PCI0] (domain 0000 [bus 00-ff]) [ 3.039854] pci_root PNP0A08:00: host bridge window [io 0x0000-0x0cf7] [ 3.039857] pci_root PNP0A08:00: host bridge window [io 0x0d00-0xffff] [ 3.039858] pci_root PNP0A08:00: host bridge window [mem 0x000a0000-0x000bffff] [ 3.039860] pci_root PNP0A08:00: host bridge window [mem 0x000d0000-0x000dffff] [ 3.039862] pci_root PNP0A08:00: host bridge window [mem 0x40000000-0xdfffffff] [ 3.039864] pci_root PNP0A08:00: host bridge window [mem 0xf0000000-0xfed8ffff] [ 3.039914] pci 0000:00:00.0: PME# supported from D0 D3hot D3cold [ 3.039917] pci 0000:00:00.0: PME# disabled [ 3.039971] pci 0000:00:01.0: PME# supported from D0 D3hot D3cold [ 3.039974] pci 0000:00:01.0: PME# disabled [ 3.040024] pci 0000:00:02.0: PME# supported from D0 D3hot D3cold [ 3.040027] pci 0000:00:02.0: PME# disabled [ 3.040077] pci 0000:00:03.0: PME# supported from D0 D3hot D3cold [ 3.040079] pci 0000:00:03.0: PME# disabled [ 3.040132] pci 0000:00:07.0: PME# supported from D0 D3hot D3cold [ 3.040135] pci 0000:00:07.0: PME# disabled [ 3.040164] pci 0000:00:13.0: reg 10: [mem 0xfec8a000-0xfec8afff] [ 3.040191] pci 0000:00:13.0: PME# supported from D0 D3hot D3cold [ 3.040194] pci 0000:00:13.0: PME# disabled [ 3.040385] pci 0000:00:1a.0: reg 20: [io 0x7980-0x799f] [ 3.040443] pci 0000:00:1a.1: reg 20: [io 0x7a00-0x7a1f] [ 3.040501] pci 0000:00:1a.2: reg 20: [io 0x7a80-0x7a9f] [ 3.040559] pci 0000:00:1a.7: reg 10: [mem 0xf3cf4000-0xf3cf43ff] [ 3.040608] pci 0000:00:1a.7: PME# supported from D0 D3hot D3cold [ 3.040612] pci 0000:00:1a.7: PME# disabled [ 3.040671] pci 0000:00:1c.0: PME# supported from D0 D3hot D3cold [ 3.040674] pci 0000:00:1c.0: PME# disabled [ 3.040734] pci 0000:00:1c.2: PME# supported from D0 D3hot D3cold [ 3.040737] pci 0000:00:1c.2: PME# disabled [ 3.040797] pci 0000:00:1c.4: PME# supported from D0 D3hot D3cold [ 3.040800] pci 0000:00:1c.4: PME# disabled [ 3.040848] pci 0000:00:1d.0: reg 20: [io 0x7b00-0x7b1f] [ 3.040906] pci 0000:00:1d.1: reg 20: [io 0x7b80-0x7b9f] [ 3.040966] pci 0000:00:1d.2: reg 20: [io 0x7c00-0x7c1f] [ 3.041023] pci 0000:00:1d.7: reg 10: [mem 0xf3cf6000-0xf3cf63ff] [ 3.041073] pci 0000:00:1d.7: PME# supported from D0 D3hot D3cold [ 3.041076] pci 0000:00:1d.7: PME# disabled [ 3.041188] pci 0000:00:1f.0: Force enabled HPET at 0xfed00000 [ 3.041192] pci 0000:00:1f.0: quirk: [io 0x0800-0x087f] claimed by ICH6 ACPI/GPIO/TCO [ 3.041195] pci 0000:00:1f.0: quirk: [io 0x0500-0x053f] claimed by ICH6 GPIO [ 3.041199] pci 0000:00:1f.0: ICH7 LPC Generic IO decode 1 PIO at 0a00 (mask 00ff) [ 3.041250] pci 0000:00:1f.2: reg 10: [io 0x7d00-0x7d07] [ 3.041255] pci 0000:00:1f.2: reg 14: [io 0x7f00-0x7f03] [ 3.041260] pci 0000:00:1f.2: reg 18: [io 0x7e80-0x7e87] [ 3.041264] pci 0000:00:1f.2: reg 1c: [io 0x7e00-0x7e03] [ 3.041269] pci 0000:00:1f.2: reg 20: [io 0x7d80-0x7d9f] [ 3.041273] pci 0000:00:1f.2: reg 24: [mem 0xf3cfc000-0xf3cfc7ff] [ 3.041301] pci 0000:00:1f.2: PME# supported from D3hot [ 3.041304] pci 0000:00:1f.2: PME# disabled [ 3.041329] pci 0000:00:1f.3: reg 10: [mem 0xf3cfe000-0xf3cfe0ff 64bit] [ 3.041341] pci 0000:00:1f.3: reg 20: [io 0x0400-0x041f] [ 3.041405] pci 0000:0e:00.0: reg 10: [io 0xeb00-0xeb07] [ 3.041410] pci 0000:0e:00.0: reg 14: [io 0xea80-0xea83] [ 3.041414] pci 0000:0e:00.0: reg 18: [io 0xed00-0xed07] [ 3.041419] pci 0000:0e:00.0: reg 1c: [io 0xec00-0xec03] [ 3.041423] pci 0000:0e:00.0: reg 20: [io 0xeb80-0xeb8f] [ 3.041428] pci 0000:0e:00.0: reg 24: [mem 0xfbeef000-0xfbeef7ff] [ 3.041433] pci 0000:0e:00.0: reg 30: [mem 0xfbed0000-0xfbedffff pref] [ 3.041451] pci 0000:0e:00.0: PME# supported from D3hot [ 3.041454] pci 0000:0e:00.0: PME# disabled [ 3.041479] pci 0000:0e:00.1: reg 10: [io 0xee00-0xee07] [ 3.041483] pci 0000:0e:00.1: reg 14: [io 0xed80-0xed83] [ 3.041488] pci 0000:0e:00.1: reg 18: [io 0xef80-0xef87] [ 3.041492] pci 0000:0e:00.1: reg 1c: [io 0xef00-0xef03] [ 3.041497] pci 0000:0e:00.1: reg 20: [io 0xee80-0xee8f] [ 3.041502] pci 0000:0e:00.1: reg 24: [mem 0xfbeefc00-0xfbeefc0f] [ 3.041506] pci 0000:0e:00.1: reg 30: [mem 0xfbef0000-0xfbefffff pref] [ 3.041526] pci 0000:0e:00.1: PME# supported from D3hot [ 3.041528] pci 0000:0e:00.1: PME# disabled [ 3.053663] pci 0000:00:01.0: PCI bridge to [bus 0e-0e] [ 3.053668] pci 0000:00:01.0: bridge window [io 0xe000-0xefff] [ 3.053672] pci 0000:00:01.0: bridge window [mem 0xfbe00000-0xfbefffff] [ 3.053678] pci 0000:00:01.0: bridge window [mem 0xfff00000-0x000fffff pref] (disabled) [ 3.053748] pci 0000:0d:00.0: reg 10: [mem 0xfbdfe000-0xfbdfffff 64bit] [ 3.053795] pci 0000:0d:00.0: PME# supported from D0 D3hot [ 3.053798] pci 0000:0d:00.0: PME# disabled [ 3.073627] pci 0000:00:02.0: PCI bridge to [bus 0d-0d] [ 3.073631] pci 0000:00:02.0: bridge window [io 0xf000-0x0000] (disabled) [ 3.073635] pci 0000:00:02.0: bridge window [mem 0xfbd00000-0xfbdfffff] [ 3.073641] pci 0000:00:02.0: bridge window [mem 0xfff00000-0x000fffff pref] (disabled) [ 3.073725] pci 0000:09:00.0: PME# supported from D0 D3hot D3cold [ 3.073727] pci 0000:09:00.0: PME# disabled [ 3.093588] pci 0000:00:03.0: PCI bridge to [bus 09-0c] [ 3.093593] pci 0000:00:03.0: bridge window [io 0xc000-0xdfff] [ 3.093597] pci 0000:00:03.0: bridge window [mem 0xf4000000-0xfbcfffff] [ 3.093603] pci 0000:00:03.0: bridge window [mem 0xb8000000-0xcfffffff 64bit pref] [ 3.093679] pci 0000:0a:00.0: PME# supported from D0 D3hot D3cold [ 3.093682] pci 0000:0a:00.0: PME# disabled [ 3.093724] pci 0000:0a:02.0: PME# supported from D0 D3hot D3cold [ 3.093727] pci 0000:0a:02.0: PME# disabled [ 3.093754] pci 0000:09:00.0: PCI bridge to [bus 0a-0c] [ 3.093758] pci 0000:09:00.0: bridge window [io 0xc000-0xdfff] [ 3.093761] pci 0000:09:00.0: bridge window [mem 0xf4000000-0xfbcfffff] [ 3.093766] pci 0000:09:00.0: bridge window [mem 0xb8000000-0xcfffffff 64bit pref] [ 3.093807] pci 0000:0c:00.0: reg 10: [mem 0xf8000000-0xf9ffffff] [ 3.093816] pci 0000:0c:00.0: reg 14: [mem 0xc8000000-0xcfffffff 64bit pref] [ 3.093826] pci 0000:0c:00.0: reg 1c: [mem 0xc4000000-0xc7ffffff 64bit pref] [ 3.093831] pci 0000:0c:00.0: reg 24: [io 0xdf80-0xdfff] [ 3.093837] pci 0000:0c:00.0: reg 30: [mem 0xfbc00000-0xfbc7ffff pref] [ 3.093895] pci 0000:0c:00.1: reg 10: [mem 0xfbcfc000-0xfbcfffff] [ 3.113559] pci 0000:0a:00.0: PCI bridge to [bus 0c-0c] [ 3.113566] pci 0000:0a:00.0: bridge window [io 0xd000-0xdfff] [ 3.113570] pci 0000:0a:00.0: bridge window [mem 0xf8000000-0xfbcfffff] [ 3.113576] pci 0000:0a:00.0: bridge window [mem 0xc4000000-0xcfffffff 64bit pref] [ 3.113634] pci 0000:0b:00.0: reg 10: [mem 0xf4000000-0xf5ffffff] [ 3.113644] pci 0000:0b:00.0: reg 14: [mem 0xb8000000-0xbfffffff 64bit pref] [ 3.113654] pci 0000:0b:00.0: reg 1c: [mem 0xc0000000-0xc3ffffff 64bit pref] [ 3.113659] pci 0000:0b:00.0: reg 24: [io 0xcf80-0xcfff] [ 3.113665] pci 0000:0b:00.0: reg 30: [mem 0xf7f00000-0xf7f7ffff pref] [ 3.113727] pci 0000:0b:00.1: reg 10: [mem 0xf7ffc000-0xf7ffffff] [ 3.133524] pci 0000:0a:02.0: PCI bridge to [bus 0b-0b] [ 3.133530] pci 0000:0a:02.0: bridge window [io 0xc000-0xcfff] [ 3.133535] pci 0000:0a:02.0: bridge window [mem 0xf4000000-0xf7ffffff] [ 3.133541] pci 0000:0a:02.0: bridge window [mem 0xb8000000-0xc3ffffff 64bit pref] [ 3.133633] pci 0000:05:00.0: PME# supported from D0 D3hot D3cold [ 3.133636] pci 0000:05:00.0: PME# disabled [ 3.153482] pci 0000:00:07.0: PCI bridge to [bus 05-08] [ 3.153486] pci 0000:00:07.0: bridge window [io 0xb000-0xbfff] [ 3.153490] pci 0000:00:07.0: bridge window [mem 0xd7d00000-0xdfffffff] [ 3.153496] pci 0000:00:07.0: bridge window [mem 0xac000000-0xb7ffffff 64bit pref] [ 3.153572] pci 0000:06:00.0: PME# supported from D0 D3hot D3cold [ 3.153575] pci 0000:06:00.0: PME# disabled [ 3.153618] pci 0000:06:02.0: PME# supported from D0 D3hot D3cold [ 3.153621] pci 0000:06:02.0: PME# disabled [ 3.153648] pci 0000:05:00.0: PCI bridge to [bus 06-08] [ 3.153652] pci 0000:05:00.0: bridge window [io 0xb000-0xbfff] [ 3.153655] pci 0000:05:00.0: bridge window [mem 0xd7d00000-0xdfffffff] [ 3.153660] pci 0000:05:00.0: bridge window [mem 0xac000000-0xb7ffffff 64bit pref] [ 3.153702] pci 0000:08:00.0: reg 10: [mem 0xdc000000-0xddffffff] [ 3.153712] pci 0000:08:00.0: reg 14: [mem 0xb0000000-0xb7ffffff 64bit pref] [ 3.153722] pci 0000:08:00.0: reg 1c: [mem 0xac000000-0xafffffff 64bit pref] [ 3.153728] pci 0000:08:00.0: reg 24: [io 0xbf80-0xbfff] [ 3.153733] pci 0000:08:00.0: reg 30: [mem 0xdff00000-0xdff7ffff pref] [ 3.153795] pci 0000:08:00.1: reg 10: [mem 0xdfffc000-0xdfffffff] [ 3.173454] pci 0000:06:00.0: PCI bridge to [bus 08-08] [ 3.173460] pci 0000:06:00.0: bridge window [io 0xb000-0xbfff] [ 3.173464] pci 0000:06:00.0: bridge window [mem 0xdc000000-0xdfffffff] [ 3.173470] pci 0000:06:00.0: bridge window [mem 0xac000000-0xb7ffffff 64bit pref] [ 3.173538] pci 0000:07:00.0: reg 10: [mem 0xd7df0000-0xd7dfffff 64bit] [ 3.173551] pci 0000:07:00.0: reg 18: [mem 0xd7e00000-0xd7ffffff 64bit] [ 3.173564] pci 0000:07:00.0: reg 20: [mem 0xd8000000-0xdbffffff 64bit] [ 3.193415] pci 0000:06:02.0: PCI bridge to [bus 07-07] [ 3.193422] pci 0000:06:02.0: bridge window [io 0xf000-0x0000] (disabled) [ 3.193426] pci 0000:06:02.0: bridge window [mem 0xd7d00000-0xdbffffff] [ 3.193432] pci 0000:06:02.0: bridge window [mem 0xfff00000-0x000fffff pref] (disabled) [ 3.193564] pci 0000:04:00.0: reg 24: [mem 0xf3fee000-0xf3feffff] [ 3.193573] pci 0000:04:00.0: reg 30: [mem 0xf3ff0000-0xf3ffffff pref] [ 3.193603] pci 0000:04:00.0: PME# supported from D3hot [ 3.193608] pci 0000:04:00.0: PME# disabled [ 3.193651] pci 0000:04:00.1: reg 10: [io 0xae00-0xae07] [ 3.193659] pci 0000:04:00.1: reg 14: [io 0xad80-0xad83] [ 3.193667] pci 0000:04:00.1: reg 18: [io 0xaf80-0xaf87] [ 3.193675] pci 0000:04:00.1: reg 1c: [io 0xaf00-0xaf03] [ 3.193683] pci 0000:04:00.1: reg 20: [io 0xae80-0xae8f] [ 3.193741] pci 0000:04:00.0: disabling ASPM on pre-1.1 PCIe device. You can enable it with 'pcie_aspm=force' [ 3.193753] pci 0000:00:1c.0: PCI bridge to [bus 04-04] [ 3.193756] pci 0000:00:1c.0: bridge window [io 0xa000-0xafff] [ 3.193760] pci 0000:00:1c.0: bridge window [mem 0xf3f00000-0xf3ffffff] [ 3.193765] pci 0000:00:1c.0: bridge window [mem 0xfff00000-0x000fffff pref] (disabled) [ 3.193833] pci 0000:03:00.0: reg 10: [mem 0xf3edc000-0xf3edffff 64bit] [ 3.193840] pci 0000:03:00.0: reg 18: [io 0x9f00-0x9fff] [ 3.193864] pci 0000:03:00.0: reg 30: [mem 0xf3ee0000-0xf3efffff pref] [ 3.193896] pci 0000:03:00.0: supports D1 D2 [ 3.193897] pci 0000:03:00.0: PME# supported from D0 D1 D2 D3hot D3cold [ 3.193902] pci 0000:03:00.0: PME# disabled [ 3.213382] pci 0000:00:1c.2: PCI bridge to [bus 03-03] [ 3.213387] pci 0000:00:1c.2: bridge window [io 0x9000-0x9fff] [ 3.213391] pci 0000:00:1c.2: bridge window [mem 0xf3e00000-0xf3efffff] [ 3.213398] pci 0000:00:1c.2: bridge window [mem 0xfff00000-0x000fffff pref] (disabled) [ 3.213478] pci 0000:02:00.0: reg 10: [mem 0xf3ddc000-0xf3ddffff 64bit] [ 3.213486] pci 0000:02:00.0: reg 18: [io 0x8f00-0x8fff] [ 3.213511] pci 0000:02:00.0: reg 30: [mem 0xf3de0000-0xf3dfffff pref] [ 3.213543] pci 0000:02:00.0: supports D1 D2 [ 3.213544] pci 0000:02:00.0: PME# supported from D0 D1 D2 D3hot D3cold [ 3.213548] pci 0000:02:00.0: PME# disabled [ 3.233346] pci 0000:00:1c.4: PCI bridge to [bus 02-02] [ 3.233351] pci 0000:00:1c.4: bridge window [io 0x8000-0x8fff] [ 3.233355] pci 0000:00:1c.4: bridge window [mem 0xf3d00000-0xf3dfffff] [ 3.233362] pci 0000:00:1c.4: bridge window [mem 0xfff00000-0x000fffff pref] (disabled) [ 3.233431] pci 0000:00:1e.0: PCI bridge to [bus 01-01] (subtractive decode) [ 3.233435] pci 0000:00:1e.0: bridge window [io 0xf000-0x0000] (disabled) [ 3.233438] pci 0000:00:1e.0: bridge window [mem 0xfff00000-0x000fffff] (disabled) [ 3.233443] pci 0000:00:1e.0: bridge window [mem 0xfff00000-0x000fffff pref] (disabled) [ 3.233445] pci 0000:00:1e.0: bridge window [io 0x0000-0x0cf7] (subtractive decode) [ 3.233447] pci 0000:00:1e.0: bridge window [io 0x0d00-0xffff] (subtractive decode) [ 3.233449] pci 0000:00:1e.0: bridge window [mem 0x000a0000-0x000bffff] (subtractive decode) [ 3.233451] pci 0000:00:1e.0: bridge window [mem 0x000d0000-0x000dffff] (subtractive decode) [ 3.233452] pci 0000:00:1e.0: bridge window [mem 0x40000000-0xdfffffff] (subtractive decode) [ 3.233454] pci 0000:00:1e.0: bridge window [mem 0xf0000000-0xfed8ffff] (subtractive decode) [ 3.233485] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0._PRT] [ 3.233717] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.NPE3._PRT] [ 3.233777] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.NPE7._PRT] [ 3.233835] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.P0P1._PRT] [ 3.233930] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.P0P4._PRT] [ 3.233990] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.P0P6._PRT] [ 3.234042] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.P0P8._PRT] [ 3.257544] ACPI: PCI Interrupt Link [LNKA] (IRQs 3 4 6 7 10 *11 12 14 15) [ 3.257653] ACPI: PCI Interrupt Link [LNKB] (IRQs *5) [ 3.257758] ACPI: PCI Interrupt Link [LNKC] (IRQs 3 4 6 7 *10 11 12 14 15) [ 3.257864] ACPI: PCI Interrupt Link [LNKD] (IRQs 3 4 6 7 10 11 12 14 *15) [ 3.257974] ACPI: PCI Interrupt Link [LNKE] (IRQs 3 4 6 7 10 11 12 14 15) *0, disabled. [ 3.258081] ACPI: PCI Interrupt Link [LNKF] (IRQs *3 4 6 7 10 11 12 14 15) [ 3.258188] ACPI: PCI Interrupt Link [LNKG] (IRQs 3 4 6 7 10 11 12 14 15) *0, disabled. [ 3.258295] ACPI: PCI Interrupt Link [LNKH] (IRQs 3 4 6 7 10 11 12 *14 15) [ 3.258340] HEST: Table is not found! [ 3.258395] vgaarb: device added: PCI:0000:0c:00.0,decodes=io+mem,owns=io+mem,locks=none [ 3.258400] vgaarb: device added: PCI:0000:0b:00.0,decodes=io+mem,owns=none,locks=none [ 3.258405] vgaarb: device added: PCI:0000:08:00.0,decodes=io+mem,owns=none,locks=none [ 3.258409] vgaarb: loaded [ 3.258508] SCSI subsystem initialized [ 3.258748] libata version 3.00 loaded. [ 3.258786] usbcore: registered new interface driver usbfs [ 3.258794] usbcore: registered new interface driver hub [ 3.258814] usbcore: registered new device driver usb [ 3.258933] ACPI: WMI: Mapper loaded [ 3.258935] PCI: Using ACPI for IRQ routing [ 3.258937] PCI: pci_cache_line_size set to 64 bytes [ 3.259066] reserve RAM buffer: 0000000000093c00 - 000000000009ffff [ 3.259068] reserve RAM buffer: 000000003f790000 - 000000003fffffff [ 3.259140] NetLabel: Initializing [ 3.259141] NetLabel: domain hash size = 128 [ 3.259142] NetLabel: protocols = UNLABELED CIPSOv4 [ 3.259152] NetLabel: unlabeled traffic allowed by default [ 3.259262] hpet clockevent registered [ 3.259267] hpet0: at MMIO 0xfed00000, IRQs 2, 8, 0, 0 [ 3.259271] hpet0: 4 comparators, 64-bit 14.318180 MHz counter [ 3.261289] Switching to clocksource tsc [ 3.268584] AppArmor: AppArmor Filesystem Enabled [ 3.268591] pnp: PnP ACPI init [ 3.268598] ACPI: bus type pnp registered [ 3.271314] pnp: PnP ACPI: found 11 devices [ 3.271316] ACPI: ACPI bus type pnp unregistered [ 3.271324] system 00:01: [mem 0xfbf00000-0xfbffffff] has been reserved [ 3.271326] system 00:01: [mem 0xfc000000-0xfcffffff] has been reserved [ 3.271328] system 00:01: [mem 0xfd000000-0xfdffffff] has been reserved [ 3.271331] system 00:01: [mem 0xfe000000-0xfebfffff] has been reserved [ 3.271333] system 00:01: [mem 0xfec8a000-0xfec8afff] could not be reserved [ 3.271335] system 00:01: [mem 0xfed10000-0xfed10fff] has been reserved [ 3.271339] system 00:06: [io 0x0a00-0x0adf] has been reserved [ 3.271341] system 00:06: [io 0x0ae0-0x0aef] has been reserved [ 3.271345] system 00:07: [io 0x04d0-0x04d1] has been reserved [ 3.271347] system 00:07: [io 0x0800-0x087f] has been reserved [ 3.271349] system 00:07: [io 0x0500-0x057f] could not be reserved [ 3.271351] system 00:07: [mem 0xfed1c000-0xfed1ffff] has been reserved [ 3.271353] system 00:07: [mem 0xfed20000-0xfed3ffff] has been reserved [ 3.271356] system 00:07: [mem 0xfed40000-0xfed8ffff] has been reserved [ 3.271359] system 00:08: [mem 0xfec00000-0xfec00fff] could not be reserved [ 3.271361] system 00:08: [mem 0xfee00000-0xfee00fff] has been reserved [ 3.271365] system 00:09: [mem 0xe0000000-0xefffffff] has been reserved [ 3.271369] system 00:0a: [mem 0x00000000-0x0009ffff] could not be reserved [ 3.271371] system 00:0a: [mem 0x000c0000-0x000cffff] has been reserved [ 3.271373] system 00:0a: [mem 0x000e0000-0x000fffff] could not be reserved [ 3.271375] system 00:0a: [mem 0x00100000-0x3fffffff] could not be reserved [ 3.271377] system 00:0a: [mem 0xfed90000-0xffffffff] could not be reserved [ 3.276102] pci 0000:00:1c.0: BAR 15: assigned [mem 0x40000000-0x401fffff 64bit pref] [ 3.276105] pci 0000:00:1c.2: BAR 15: assigned [mem 0x40200000-0x403fffff 64bit pref] [ 3.276108] pci 0000:00:1c.4: BAR 15: assigned [mem 0x40400000-0x405fffff 64bit pref] [ 3.276110] pci 0000:00:01.0: PCI bridge to [bus 0e-0e] [ 3.276112] pci 0000:00:01.0: bridge window [io 0xe000-0xefff] [ 3.276116] pci 0000:00:01.0: bridge window [mem 0xfbe00000-0xfbefffff] [ 3.276119] pci 0000:00:01.0: bridge window [mem pref disabled] [ 3.276123] pci 0000:00:02.0: PCI bridge to [bus 0d-0d] [ 3.276124] pci 0000:00:02.0: bridge window [io disabled] [ 3.276127] pci 0000:00:02.0: bridge window [mem 0xfbd00000-0xfbdfffff] [ 3.276130] pci 0000:00:02.0: bridge window [mem pref disabled] [ 3.276135] pci 0000:0a:00.0: PCI bridge to [bus 0c-0c] [ 3.276137] pci 0000:0a:00.0: bridge window [io 0xd000-0xdfff] [ 3.276141] pci 0000:0a:00.0: bridge window [mem 0xf8000000-0xfbcfffff] [ 3.276144] pci 0000:0a:00.0: bridge window [mem 0xc4000000-0xcfffffff 64bit pref] [ 3.276148] pci 0000:0a:02.0: PCI bridge to [bus 0b-0b] [ 3.276151] pci 0000:0a:02.0: bridge window [io 0xc000-0xcfff] [ 3.276154] pci 0000:0a:02.0: bridge window [mem 0xf4000000-0xf7ffffff] [ 3.276157] pci 0000:0a:02.0: bridge window [mem 0xb8000000-0xc3ffffff 64bit pref] [ 3.276162] pci 0000:09:00.0: PCI bridge to [bus 0a-0c] [ 3.276164] pci 0000:09:00.0: bridge window [io 0xc000-0xdfff] [ 3.276168] pci 0000:09:00.0: bridge window [mem 0xf4000000-0xfbcfffff] [ 3.276171] pci 0000:09:00.0: bridge window [mem 0xb8000000-0xcfffffff 64bit pref] [ 3.276175] pci 0000:00:03.0: PCI bridge to [bus 09-0c] [ 3.276177] pci 0000:00:03.0: bridge window [io 0xc000-0xdfff] [ 3.276181] pci 0000:00:03.0: bridge window [mem 0xf4000000-0xfbcfffff] [ 3.276183] pci 0000:00:03.0: bridge window [mem 0xb8000000-0xcfffffff 64bit pref] [ 3.276188] pci 0000:06:00.0: PCI bridge to [bus 08-08] [ 3.276190] pci 0000:06:00.0: bridge window [io 0xb000-0xbfff] [ 3.276194] pci 0000:06:00.0: bridge window [mem 0xdc000000-0xdfffffff] [ 3.276197] pci 0000:06:00.0: bridge window [mem 0xac000000-0xb7ffffff 64bit pref] [ 3.276202] pci 0000:06:02.0: PCI bridge to [bus 07-07] [ 3.276203] pci 0000:06:02.0: bridge window [io disabled] [ 3.276207] pci 0000:06:02.0: bridge window [mem 0xd7d00000-0xdbffffff] [ 3.276210] pci 0000:06:02.0: bridge window [mem pref disabled] [ 3.276214] pci 0000:05:00.0: PCI bridge to [bus 06-08] [ 3.276216] pci 0000:05:00.0: bridge window [io 0xb000-0xbfff] [ 3.276220] pci 0000:05:00.0: bridge window [mem 0xd7d00000-0xdfffffff] [ 3.276223] pci 0000:05:00.0: bridge window [mem 0xac000000-0xb7ffffff 64bit pref] [ 3.276227] pci 0000:00:07.0: PCI bridge to [bus 05-08] [ 3.276230] pci 0000:00:07.0: bridge window [io 0xb000-0xbfff] [ 3.276233] pci 0000:00:07.0: bridge window [mem 0xd7d00000-0xdfffffff] [ 3.276236] pci 0000:00:07.0: bridge window [mem 0xac000000-0xb7ffffff 64bit pref] [ 3.276240] pci 0000:00:1c.0: PCI bridge to [bus 04-04] [ 3.276243] pci 0000:00:1c.0: bridge window [io 0xa000-0xafff] [ 3.276247] pci 0000:00:1c.0: bridge window [mem 0xf3f00000-0xf3ffffff] [ 3.276250] pci 0000:00:1c.0: bridge window [mem 0x40000000-0x401fffff 64bit pref] [ 3.276255] pci 0000:00:1c.2: PCI bridge to [bus 03-03] [ 3.276257] pci 0000:00:1c.2: bridge window [io 0x9000-0x9fff] [ 3.276261] pci 0000:00:1c.2: bridge window [mem 0xf3e00000-0xf3efffff] [ 3.276264] pci 0000:00:1c.2: bridge window [mem 0x40200000-0x403fffff 64bit pref] [ 3.276269] pci 0000:00:1c.4: PCI bridge to [bus 02-02] [ 3.276272] pci 0000:00:1c.4: bridge window [io 0x8000-0x8fff] [ 3.276276] pci 0000:00:1c.4: bridge window [mem 0xf3d00000-0xf3dfffff] [ 3.276279] pci 0000:00:1c.4: bridge window [mem 0x40400000-0x405fffff 64bit pref] [ 3.276284] pci 0000:00:1e.0: PCI bridge to [bus 01-01] [ 3.276285] pci 0000:00:1e.0: bridge window [io disabled] [ 3.276289] pci 0000:00:1e.0: bridge window [mem disabled] [ 3.276292] pci 0000:00:1e.0: bridge window [mem pref disabled] [ 3.276303] pci 0000:00:01.0: setting latency timer to 64 [ 3.276309] pci 0000:00:02.0: setting latency timer to 64 [ 3.276315] pci 0000:00:03.0: setting latency timer to 64 [ 3.276322] pci 0000:09:00.0: setting latency timer to 64 [ 3.276329] pci 0000:0a:00.0: setting latency timer to 64 [ 3.276335] pci 0000:0a:02.0: setting latency timer to 64 [ 3.276341] pci 0000:00:07.0: setting latency timer to 64 [ 3.276348] pci 0000:05:00.0: setting latency timer to 64 [ 3.276354] pci 0000:06:00.0: setting latency timer to 64 [ 3.276361] pci 0000:06:02.0: setting latency timer to 64 [ 3.276368] alloc irq_desc for 17 on node -1 [ 3.276369] alloc kstat_irqs on node -1 [ 3.276374] pci 0000:00:1c.0: PCI INT A -> GSI 17 (level, low) -> IRQ 17 [ 3.276377] pci 0000:00:1c.0: setting latency timer to 64 [ 3.276383] alloc irq_desc for 18 on node -1 [ 3.276384] alloc kstat_irqs on node -1 [ 3.276387] pci 0000:00:1c.2: PCI INT C -> GSI 18 (level, low) -> IRQ 18 [ 3.276390] pci 0000:00:1c.2: setting latency timer to 64 [ 3.276397] pci 0000:00:1c.4: PCI INT A -> GSI 17 (level, low) -> IRQ 17 [ 3.276400] pci 0000:00:1c.4: setting latency timer to 64 [ 3.276405] pci 0000:00:1e.0: setting latency timer to 64 [ 3.276408] pci_bus 0000:00: resource 4 [io 0x0000-0x0cf7] [ 3.276410] pci_bus 0000:00: resource 5 [io 0x0d00-0xffff] [ 3.276411] pci_bus 0000:00: resource 6 [mem 0x000a0000-0x000bffff] [ 3.276413] pci_bus 0000:00: resource 7 [mem 0x000d0000-0x000dffff] [ 3.276414] pci_bus 0000:00: resource 8 [mem 0x40000000-0xdfffffff] [ 3.276416] pci_bus 0000:00: resource 9 [mem 0xf0000000-0xfed8ffff] [ 3.276418] pci_bus 0000:0e: resource 0 [io 0xe000-0xefff] [ 3.276419] pci_bus 0000:0e: resource 1 [mem 0xfbe00000-0xfbefffff] [ 3.276421] pci_bus 0000:0d: resource 1 [mem 0xfbd00000-0xfbdfffff] [ 3.276423] pci_bus 0000:09: resource 0 [io 0xc000-0xdfff] [ 3.276424] pci_bus 0000:09: resource 1 [mem 0xf4000000-0xfbcfffff] [ 3.276426] pci_bus 0000:09: resource 2 [mem 0xb8000000-0xcfffffff 64bit pref] [ 3.276428] pci_bus 0000:0a: resource 0 [io 0xc000-0xdfff] [ 3.276429] pci_bus 0000:0a: resource 1 [mem 0xf4000000-0xfbcfffff] [ 3.276431] pci_bus 0000:0a: resource 2 [mem 0xb8000000-0xcfffffff 64bit pref] [ 3.276433] pci_bus 0000:0c: resource 0 [io 0xd000-0xdfff] [ 3.276434] pci_bus 0000:0c: resource 1 [mem 0xf8000000-0xfbcfffff] [ 3.276436] pci_bus 0000:0c: resource 2 [mem 0xc4000000-0xcfffffff 64bit pref] [ 3.276438] pci_bus 0000:0b: resource 0 [io 0xc000-0xcfff] [ 3.276439] pci_bus 0000:0b: resource 1 [mem 0xf4000000-0xf7ffffff] [ 3.276441] pci_bus 0000:0b: resource 2 [mem 0xb8000000-0xc3ffffff 64bit pref] [ 3.276443] pci_bus 0000:05: resource 0 [io 0xb000-0xbfff] [ 3.276444] pci_bus 0000:05: resource 1 [mem 0xd7d00000-0xdfffffff] [ 3.276446] pci_bus 0000:05: resource 2 [mem 0xac000000-0xb7ffffff 64bit pref] [ 3.276448] pci_bus 0000:06: resource 0 [io 0xb000-0xbfff] [ 3.276449] pci_bus 0000:06: resource 1 [mem 0xd7d00000-0xdfffffff] [ 3.276451] pci_bus 0000:06: resource 2 [mem 0xac000000-0xb7ffffff 64bit pref] [ 3.276452] pci_bus 0000:08: resource 0 [io 0xb000-0xbfff] [ 3.276454] pci_bus 0000:08: resource 1 [mem 0xdc000000-0xdfffffff] [ 3.276456] pci_bus 0000:08: resource 2 [mem 0xac000000-0xb7ffffff 64bit pref] [ 3.276457] pci_bus 0000:07: resource 1 [mem 0xd7d00000-0xdbffffff] [ 3.276459] pci_bus 0000:04: resource 0 [io 0xa000-0xafff] [ 3.276461] pci_bus 0000:04: resource 1 [mem 0xf3f00000-0xf3ffffff] [ 3.276462] pci_bus 0000:04: resource 2 [mem 0x40000000-0x401fffff 64bit pref] [ 3.276464] pci_bus 0000:03: resource 0 [io 0x9000-0x9fff] [ 3.276466] pci_bus 0000:03: resource 1 [mem 0xf3e00000-0xf3efffff] [ 3.276467] pci_bus 0000:03: resource 2 [mem 0x40200000-0x403fffff 64bit pref] [ 3.276469] pci_bus 0000:02: resource 0 [io 0x8000-0x8fff] [ 3.276471] pci_bus 0000:02: resource 1 [mem 0xf3d00000-0xf3dfffff] [ 3.276472] pci_bus 0000:02: resource 2 [mem 0x40400000-0x405fffff 64bit pref] [ 3.276474] pci_bus 0000:01: resource 4 [io 0x0000-0x0cf7] [ 3.276476] pci_bus 0000:01: resource 5 [io 0x0d00-0xffff] [ 3.276477] pci_bus 0000:01: resource 6 [mem 0x000a0000-0x000bffff] [ 3.276479] pci_bus 0000:01: resource 7 [mem 0x000d0000-0x000dffff] [ 3.276480] pci_bus 0000:01: resource 8 [mem 0x40000000-0xdfffffff] [ 3.276482] pci_bus 0000:01: resource 9 [mem 0xf0000000-0xfed8ffff] [ 3.276512] NET: Registered protocol family 2 [ 3.276889] IP route cache hash table entries: 524288 (order: 10, 4194304 bytes) [ 3.278268] TCP established hash table entries: 524288 (order: 11, 8388608 bytes) [ 3.279754] TCP bind hash table entries: 65536 (order: 8, 1048576 bytes) [ 3.279928] TCP: Hash tables configured (established 524288 bind 65536) [ 3.279929] TCP reno registered [ 3.279954] UDP hash table entries: 8192 (order: 6, 262144 bytes) [ 3.280030] UDP-Lite hash table entries: 8192 (order: 6, 262144 bytes) [ 3.280231] NET: Registered protocol family 1 [ 3.280457] pci 0000:0c:00.0: Boot video device [ 3.280547] PCI: CLS 256 bytes, default 64 [ 3.280549] PCI-DMA: Using software bounce buffering for IO (SWIOTLB) [ 3.280551] Placing 64MB software IO TLB between ffff880001f7e000 - ffff880005f7e000 [ 3.280553] software IO TLB at phys 0x1f7e000 - 0x5f7e000 [ 3.281286] Scanning for low memory corruption every 60 seconds [ 3.281385] audit: initializing netlink socket (disabled) [ 3.281392] type=2000 audit(1283306775.990:1): initialized [ 3.287372] Freeing initrd memory: 16512k freed [ 3.294717] HugeTLB registered 2 MB page size, pre-allocated 0 pages [ 3.296168] VFS: Disk quotas dquot_6.5.2 [ 3.296225] Dquot-cache hash table entries: 512 (order 0, 4096 bytes) [ 3.296736] fuse init (API version 7.14) [ 3.296805] msgmni has been set to 24060 [ 3.299062] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 253) [ 3.299065] io scheduler noop registered [ 3.299066] io scheduler deadline registered [ 3.299100] io scheduler cfq registered (default) [ 3.299211] pcieport 0000:00:01.0: setting latency timer to 64 [ 3.299235] alloc irq_desc for 64 on node -1 [ 3.299237] alloc kstat_irqs on node -1 [ 3.299249] pcieport 0000:00:01.0: irq 64 for MSI/MSI-X [ 3.299300] pcieport 0000:00:02.0: setting latency timer to 64 [ 3.299323] alloc irq_desc for 65 on node -1 [ 3.299324] alloc kstat_irqs on node -1 [ 3.299329] pcieport 0000:00:02.0: irq 65 for MSI/MSI-X [ 3.299383] pcieport 0000:00:03.0: setting latency timer to 64 [ 3.299406] alloc irq_desc for 66 on node -1 [ 3.299407] alloc kstat_irqs on node -1 [ 3.299412] pcieport 0000:00:03.0: irq 66 for MSI/MSI-X [ 3.299458] pcieport 0000:00:07.0: setting latency timer to 64 [ 3.299480] alloc irq_desc for 67 on node -1 [ 3.299482] alloc kstat_irqs on node -1 [ 3.299486] pcieport 0000:00:07.0: irq 67 for MSI/MSI-X [ 3.299535] pcieport 0000:00:1c.0: setting latency timer to 64 [ 3.299562] alloc irq_desc for 68 on node -1 [ 3.299563] alloc kstat_irqs on node -1 [ 3.299569] pcieport 0000:00:1c.0: irq 68 for MSI/MSI-X [ 3.299629] pcieport 0000:00:1c.2: setting latency timer to 64 [ 3.299655] alloc irq_desc for 69 on node -1 [ 3.299657] alloc kstat_irqs on node -1 [ 3.299662] pcieport 0000:00:1c.2: irq 69 for MSI/MSI-X [ 3.299720] pcieport 0000:00:1c.4: setting latency timer to 64 [ 3.299747] alloc irq_desc for 70 on node -1 [ 3.299748] alloc kstat_irqs on node -1 [ 3.299753] pcieport 0000:00:1c.4: irq 70 for MSI/MSI-X [ 3.300058] aer 0000:00:01.0:pcie02: service driver aer loaded [ 3.300081] aer 0000:00:02.0:pcie02: service driver aer loaded [ 3.300104] aer 0000:00:03.0:pcie02: service driver aer loaded [ 3.300127] aer 0000:00:07.0:pcie02: service driver aer loaded [ 3.300142] pci_hotplug: PCI Hot Plug PCI Core version: 0.5 [ 3.300353] pciehp 0000:00:1c.0:pcie04: HPC vendor_id 8086 device_id 3a40 ss_vid 3842 ss_did 101a [ 3.300392] pciehp 0000:00:1c.0:pcie04: service driver pciehp loaded [ 3.300403] pciehp 0000:00:1c.2:pcie04: HPC vendor_id 8086 device_id 3a44 ss_vid 3842 ss_did 101a [ 3.300428] pciehp 0000:00:1c.2:pcie04: service driver pciehp loaded [ 3.300438] pciehp 0000:00:1c.4:pcie04: HPC vendor_id 8086 device_id 3a48 ss_vid 3842 ss_did 101a [ 3.300466] pciehp 0000:00:1c.4:pcie04: service driver pciehp loaded [ 3.300471] pciehp: PCI Express Hot Plug Controller Driver version: 0.4 [ 3.300523] intel_idle: MWAIT substates: 0x1120 [ 3.300525] intel_idle: v0.4 model 0x2C [ 3.300526] intel_idle: lapic_timer_reliable_states 0xffffffff [ 3.300660] input: Power Button as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0C:00/input/input0 [ 3.300663] ACPI: Power Button [PWRB] [ 3.300694] input: Power Button as /devices/LNXSYSTM:00/LNXPWRBN:00/input/input1 [ 3.300696] ACPI: Power Button [PWRF] [ 3.300977] ACPI: acpi_idle yielding to intel_idle [ 3.304707] ERST: Table is not found! [ 3.305606] Linux agpgart interface v0.103 [ 3.305623] Serial: 8250/16550 driver, 4 ports, IRQ sharing enabled [ 3.306658] brd: module loaded [ 3.307090] loop: module loaded [ 3.307242] alloc irq_desc for 40 on node -1 [ 3.307244] alloc kstat_irqs on node -1 [ 3.307250] pata_acpi 0000:0e:00.1: PCI INT B -> GSI 40 (level, low) -> IRQ 40 [ 3.307270] pata_acpi 0000:0e:00.1: setting latency timer to 64 [ 3.307280] pata_acpi 0000:0e:00.1: PCI INT B disabled [ 3.307295] pata_acpi 0000:04:00.1: enabling device (0000 -> 0001) [ 3.307299] pata_acpi 0000:04:00.1: PCI INT B -> GSI 17 (level, low) -> IRQ 17 [ 3.307315] pata_acpi 0000:04:00.1: setting latency timer to 64 [ 3.307324] pata_acpi 0000:04:00.1: PCI INT B disabled [ 3.307521] Fixed MDIO Bus: probed [ 3.307543] PPP generic driver version 2.4.2 [ 3.307566] tun: Universal TUN/TAP device driver, 1.6 [ 3.307567] tun: (C) 1999-2004 Max Krasnyansky [ 3.307614] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver [ 3.307632] ehci_hcd 0000:00:1a.7: PCI INT C -> GSI 18 (level, low) -> IRQ 18 [ 3.307645] ehci_hcd 0000:00:1a.7: setting latency timer to 64 [ 3.307648] ehci_hcd 0000:00:1a.7: EHCI Host Controller [ 3.307677] ehci_hcd 0000:00:1a.7: new USB bus registered, assigned bus number 1 [ 3.307703] ehci_hcd 0000:00:1a.7: debug port 1 [ 3.311584] ehci_hcd 0000:00:1a.7: cache line size of 256 is not supported [ 3.311595] ehci_hcd 0000:00:1a.7: irq 18, io mem 0xf3cf4000 [ 3.333281] ehci_hcd 0000:00:1a.7: USB 2.0 started, EHCI 1.00 [ 3.333393] hub 1-0:1.0: USB hub found [ 3.333396] hub 1-0:1.0: 6 ports detected [ 3.333457] alloc irq_desc for 23 on node -1 [ 3.333459] alloc kstat_irqs on node -1 [ 3.333463] ehci_hcd 0000:00:1d.7: PCI INT A -> GSI 23 (level, low) -> IRQ 23 [ 3.333474] ehci_hcd 0000:00:1d.7: setting latency timer to 64 [ 3.333477] ehci_hcd 0000:00:1d.7: EHCI Host Controller [ 3.333501] ehci_hcd 0000:00:1d.7: new USB bus registered, assigned bus number 2 [ 3.333525] ehci_hcd 0000:00:1d.7: debug port 1 [ 3.337387] ehci_hcd 0000:00:1d.7: cache line size of 256 is not supported [ 3.337398] ehci_hcd 0000:00:1d.7: irq 23, io mem 0xf3cf6000 [ 3.353260] ehci_hcd 0000:00:1d.7: USB 2.0 started, EHCI 1.00 [ 3.353356] hub 2-0:1.0: USB hub found [ 3.353359] hub 2-0:1.0: 6 ports detected [ 3.353418] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver [ 3.353428] uhci_hcd: USB Universal Host Controller Interface driver [ 3.353465] alloc irq_desc for 16 on node -1 [ 3.353467] alloc kstat_irqs on node -1 [ 3.353471] uhci_hcd 0000:00:1a.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16 [ 3.353475] uhci_hcd 0000:00:1a.0: setting latency timer to 64 [ 3.353478] uhci_hcd 0000:00:1a.0: UHCI Host Controller [ 3.353505] uhci_hcd 0000:00:1a.0: new USB bus registered, assigned bus number 3 [ 3.353533] uhci_hcd 0000:00:1a.0: irq 16, io base 0x00007980 [ 3.353614] hub 3-0:1.0: USB hub found [ 3.353618] hub 3-0:1.0: 2 ports detected [ 3.353665] alloc irq_desc for 21 on node -1 [ 3.353666] alloc kstat_irqs on node -1 [ 3.353670] uhci_hcd 0000:00:1a.1: PCI INT B -> GSI 21 (level, low) -> IRQ 21 [ 3.353674] uhci_hcd 0000:00:1a.1: setting latency timer to 64 [ 3.353677] uhci_hcd 0000:00:1a.1: UHCI Host Controller [ 3.353708] uhci_hcd 0000:00:1a.1: new USB bus registered, assigned bus number 4 [ 3.353735] uhci_hcd 0000:00:1a.1: irq 21, io base 0x00007a00 [ 3.353815] hub 4-0:1.0: USB hub found [ 3.353818] hub 4-0:1.0: 2 ports detected [ 3.353863] alloc irq_desc for 19 on node -1 [ 3.353864] alloc kstat_irqs on node -1 [ 3.353868] uhci_hcd 0000:00:1a.2: PCI INT D -> GSI 19 (level, low) -> IRQ 19 [ 3.353873] uhci_hcd 0000:00:1a.2: setting latency timer to 64 [ 3.353875] uhci_hcd 0000:00:1a.2: UHCI Host Controller [ 3.353909] uhci_hcd 0000:00:1a.2: new USB bus registered, assigned bus number 5 [ 3.353937] uhci_hcd 0000:00:1a.2: irq 19, io base 0x00007a80 [ 3.354019] hub 5-0:1.0: USB hub found [ 3.354022] hub 5-0:1.0: 2 ports detected [ 3.354067] uhci_hcd 0000:00:1d.0: PCI INT A -> GSI 23 (level, low) -> IRQ 23 [ 3.354072] uhci_hcd 0000:00:1d.0: setting latency timer to 64 [ 3.354074] uhci_hcd 0000:00:1d.0: UHCI Host Controller [ 3.354100] uhci_hcd 0000:00:1d.0: new USB bus registered, assigned bus number 6 [ 3.354128] uhci_hcd 0000:00:1d.0: irq 23, io base 0x00007b00 [ 3.354209] hub 6-0:1.0: USB hub found [ 3.354211] hub 6-0:1.0: 2 ports detected [ 3.354258] uhci_hcd 0000:00:1d.1: PCI INT B -> GSI 19 (level, low) -> IRQ 19 [ 3.354262] uhci_hcd 0000:00:1d.1: setting latency timer to 64 [ 3.354265] uhci_hcd 0000:00:1d.1: UHCI Host Controller [ 3.354296] uhci_hcd 0000:00:1d.1: new USB bus registered, assigned bus number 7 [ 3.354317] uhci_hcd 0000:00:1d.1: irq 19, io base 0x00007b80 [ 3.354397] hub 7-0:1.0: USB hub found [ 3.354400] hub 7-0:1.0: 2 ports detected [ 3.354451] uhci_hcd 0000:00:1d.2: PCI INT C -> GSI 18 (level, low) -> IRQ 18 [ 3.354456] uhci_hcd 0000:00:1d.2: setting latency timer to 64 [ 3.354458] uhci_hcd 0000:00:1d.2: UHCI Host Controller [ 3.354485] uhci_hcd 0000:00:1d.2: new USB bus registered, assigned bus number 8 [ 3.354506] uhci_hcd 0000:00:1d.2: irq 18, io base 0x00007c00 [ 3.354589] hub 8-0:1.0: USB hub found [ 3.354592] hub 8-0:1.0: 2 ports detected [ 3.354676] PNP: No PS/2 controller found. Probing ports directly. [ 3.356944] serio: i8042 KBD port at 0x60,0x64 irq 1 [ 3.356948] serio: i8042 AUX port at 0x60,0x64 irq 12 [ 3.356996] mice: PS/2 mouse device common for all mice [ 3.357070] rtc_cmos 00:03: RTC can wake from S4 [ 3.357097] rtc_cmos 00:03: rtc core: registered rtc_cmos as rtc0 [ 3.357120] rtc0: alarms up to one month, y3k, 114 bytes nvram, hpet irqs [ 3.357196] device-mapper: uevent: version 1.0.3 [ 3.357256] device-mapper: ioctl: 4.17.0-ioctl (2010-03-05) initialised: dm-devel@redhat.com [ 3.357604] device-mapper: multipath: version 1.1.1 loaded [ 3.357606] device-mapper: multipath round-robin: version 1.0.0 loaded [ 3.358631] cpuidle: using governor ladder [ 3.359099] cpuidle: using governor menu [ 3.359331] TCP cubic registered [ 3.359432] NET: Registered protocol family 10 [ 3.359825] lo: Disabled Privacy Extensions [ 3.359975] NET: Registered protocol family 17 [ 3.365235] PM: Resume from disk failed. [ 3.365245] registered taskstats version 1 [ 3.365892] Magic number: 10:365:105 [ 3.365898] usbmon usbmon1: hash matches [ 3.365962] rtc_cmos 00:03: setting system clock to 2010-09-01 02:06:17 UTC (1283306777) [ 3.365965] BIOS EDD facility v0.16 2004-Jun-25, 0 devices found [ 3.365966] EDD information not available. [ 3.366041] Freeing unused kernel memory: 908k freed [ 3.366227] Write protecting the kernel read-only data: 10240k [ 3.366457] Freeing unused kernel memory: 424k freed [ 3.366692] Freeing unused kernel memory: 1644k freed [ 3.380974] udev[245]: starting version 162 [ 3.405040] ahci 0000:00:1f.2: version 3.0 [ 3.405060] ahci 0000:00:1f.2: PCI INT B -> GSI 19 (level, low) -> IRQ 19 [ 3.405116] alloc irq_desc for 71 on node -1 [ 3.405118] alloc kstat_irqs on node -1 [ 3.405129] ahci 0000:00:1f.2: irq 71 for MSI/MSI-X [ 3.405137] ahci 0000:00:1f.2: controller can't do SNTF, turning off CAP_SNTF [ 3.405166] ahci: SSS flag set, parallel bus scan disabled [ 3.405204] ahci 0000:00:1f.2: AHCI 0001.0200 32 slots 6 ports 3 Gbps 0x3f impl RAID mode [ 3.405207] ahci 0000:00:1f.2: flags: 64bit ncq stag pm led clo pio slum part ccc ems sxs [ 3.405211] ahci 0000:00:1f.2: setting latency timer to 64 [ 3.406881] pata_jmicron 0000:04:00.1: PCI INT B -> GSI 17 (level, low) -> IRQ 17 [ 3.406907] pata_jmicron 0000:04:00.1: setting latency timer to 64 [ 3.406983] scsi0 : pata_jmicron [ 3.407103] scsi1 : pata_jmicron [ 3.407143] ata1: PATA max UDMA/100 cmd 0xae00 ctl 0xad80 bmdma 0xae80 irq 17 [ 3.407146] ata2: PATA max UDMA/100 cmd 0xaf80 ctl 0xaf00 bmdma 0xae88 irq 17 [ 3.413192] sky2: driver version 1.28 [ 3.413220] sky2 0000:03:00.0: PCI INT A -> GSI 18 (level, low) -> IRQ 18 [ 3.413229] sky2 0000:03:00.0: setting latency timer to 64 [ 3.413262] sky2 0000:03:00.0: Yukon-2 UL 2 chip revision 0 [ 3.413329] alloc irq_desc for 72 on node -1 [ 3.413331] alloc kstat_irqs on node -1 [ 3.413342] sky2 0000:03:00.0: irq 72 for MSI/MSI-X [ 3.413898] sky2 0000:03:00.0: eth0: addr 00:1f:bc:02:96:88 [ 3.413915] sky2 0000:02:00.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16 [ 3.413923] sky2 0000:02:00.0: setting latency timer to 64 [ 3.413947] sky2 0000:02:00.0: Yukon-2 UL 2 chip revision 0 [ 3.414015] alloc irq_desc for 73 on node -1 [ 3.414016] alloc kstat_irqs on node -1 [ 3.414027] sky2 0000:02:00.0: irq 73 for MSI/MSI-X [ 3.414575] sky2 0000:02:00.0: eth1: addr 00:1f:bc:02:96:89 [ 3.502969] scsi2 : ahci [ 3.503043] scsi3 : ahci [ 3.503106] scsi4 : ahci [ 3.503172] scsi5 : ahci [ 3.503243] scsi6 : ahci [ 3.503306] scsi7 : ahci [ 3.503473] ata3: SATA max UDMA/133 abar m2048@0xf3cfc000 port 0xf3cfc100 irq 71 [ 3.503477] ata4: SATA max UDMA/133 abar m2048@0xf3cfc000 port 0xf3cfc180 irq 71 [ 3.503479] ata5: SATA max UDMA/133 abar m2048@0xf3cfc000 port 0xf3cfc200 irq 71 [ 3.503482] ata6: SATA max UDMA/133 abar m2048@0xf3cfc000 port 0xf3cfc280 irq 71 [ 3.503485] ata7: SATA max UDMA/133 abar m2048@0xf3cfc000 port 0xf3cfc300 irq 71 [ 3.503488] ata8: SATA max UDMA/133 abar m2048@0xf3cfc000 port 0xf3cfc380 irq 71 [ 3.503530] alloc irq_desc for 28 on node -1 [ 3.503532] alloc kstat_irqs on node -1 [ 3.503538] ahci 0000:0e:00.0: PCI INT A -> GSI 28 (level, low) -> IRQ 28 [ 3.503581] alloc irq_desc for 74 on node -1 [ 3.503582] alloc kstat_irqs on node -1 [ 3.503589] ahci 0000:0e:00.0: irq 74 for MSI/MSI-X [ 3.522919] ahci 0000:0e:00.0: AHCI 0001.0200 32 slots 8 ports 6 Gbps 0xff impl SATA mode [ 3.522923] ahci 0000:0e:00.0: flags: 64bit ncq pio [ 3.522927] ahci 0000:0e:00.0: setting latency timer to 64 [ 3.523230] scsi8 : ahci [ 3.523291] scsi9 : ahci [ 3.523346] scsi10 : ahci [ 3.523399] scsi11 : ahci [ 3.523451] scsi12 : ahci [ 3.523504] scsi13 : ahci [ 3.523557] scsi14 : ahci [ 3.523608] scsi15 : ahci [ 3.523645] ata9: SATA max UDMA/133 abar m2048@0xfbeef000 port 0xfbeef100 irq 74 [ 3.523648] ata10: SATA max UDMA/133 abar m2048@0xfbeef000 port 0xfbeef180 irq 74 [ 3.523651] ata11: SATA max UDMA/133 abar m2048@0xfbeef000 port 0xfbeef200 irq 74 [ 3.523654] ata12: SATA max UDMA/133 abar m2048@0xfbeef000 port 0xfbeef280 irq 74 [ 3.523657] ata13: SATA max UDMA/133 abar m2048@0xfbeef000 port 0xfbeef300 irq 74 [ 3.523660] ata14: SATA max UDMA/133 abar m2048@0xfbeef000 port 0xfbeef380 irq 74 [ 3.523663] ata15: SATA max UDMA/133 abar m2048@0xfbeef000 port 0xfbeef400 irq 74 [ 3.523666] ata16: SATA max UDMA/133 abar m2048@0xfbeef000 port 0xfbeef480 irq 74 [ 3.523885] ahci 0000:04:00.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16 [ 3.542880] ahci 0000:04:00.0: AHCI 0001.0000 32 slots 2 ports 3 Gbps 0x3 impl SATA mode [ 3.542883] ahci 0000:04:00.0: flags: 64bit ncq led clo pmp pio [ 3.542889] ahci 0000:04:00.0: setting latency timer to 64 [ 3.543000] scsi16 : ahci [ 3.543059] scsi17 : ahci [ 3.543138] ata17: SATA max UDMA/133 abar m8192@0xf3fee000 port 0xf3fee100 irq 16 [ 3.543142] ata18: SATA max UDMA/133 abar m8192@0xf3fee000 port 0xf3fee180 irq 16 [ 3.852344] ata3: SATA link up 1.5 Gbps (SStatus 113 SControl 300) [ 3.855386] ata3.00: ATAPI: PIONEER BD-RW BDR-205, 1.04, max UDMA/100 [ 3.858716] ata3.00: configured for UDMA/100 [ 3.872282] ata16: SATA link up 1.5 Gbps (SStatus 113 SControl 300) [ 3.872367] ata15: SATA link down (SStatus 0 SControl 300) [ 3.872371] ata16.00: ATAPI: MARVELL VIRTUALL, 1.09, max UDMA/66 [ 3.872389] ata13: SATA link down (SStatus 0 SControl 300) [ 3.872406] ata12: SATA link down (SStatus 0 SControl 300) [ 3.872409] ata11: SATA link down (SStatus 0 SControl 300) [ 3.872428] ata10: SATA link up 3.0 Gbps (SStatus 123 SControl 300) [ 3.872431] ata14: SATA link down (SStatus 0 SControl 300) [ 3.872536] ata16.00: configured for UDMA/66 [ 3.878209] scsi 2:0:0:0: CD-ROM PIONEER BD-RW BDR-205 1.04 PQ: 0 ANSI: 5 [ 3.892317] ata9: SATA link down (SStatus 0 SControl 300) [ 3.892325] ata18: SATA link down (SStatus 0 SControl 300) [ 3.892334] ata17: SATA link down (SStatus 0 SControl 300) [ 3.918054] sr0: scsi3-mmc drive: 125x/125x writer dvd-ram cd/rw xa/form2 cdda tray [ 3.918057] Uniform CD-ROM driver Revision: 3.20 [ 3.918149] sr 2:0:0:0: Attached scsi CD-ROM sr0 [ 3.918206] sr 2:0:0:0: Attached scsi generic sg0 type 5 [ 3.931765] ata10.00: ATA-8: Corsair CSSD-F240GB2, 1.0, max UDMA/133 [ 3.931768] ata10.00: 468862128 sectors, multi 1: LBA48 NCQ (depth 31/32), AA [ 3.981659] ata10.00: configured for UDMA/133 [ 4.030311] usb 1-6: new high speed USB device using ehci_hcd and address 6 [ 4.279842] ata4: SATA link down (SStatus 0 SControl 300) [ 4.449340] usb 3-2: new full speed USB device using uhci_hcd and address 2 [ 4.624088] usbcore: registered new interface driver hiddev [ 4.626438] input: Thrustmaster Thrustmaster HOTAS Cougar as /devices/pci0000:00/0000:00:1a.0/usb3/3-2/3-2:1.0/input/input2 [ 4.626527] generic-usb 0003:044F:0400.0001: input,hidraw0: USB HID v1.10 Joystick [Thrustmaster Thrustmaster HOTAS Cougar] on usb-0000:00:1a.0-2/input0 [ 4.629452] input: Thrustmaster Thrustmaster HOTAS Cougar as /devices/pci0000:00/0000:00:1a.0/usb3/3-2/3-2:1.1/input/input3 [ 4.629529] generic-usb 0003:044F:0400.0002: input,hidraw1: USB HID v1.00 Keyboard [Thrustmaster Thrustmaster HOTAS Cougar] on usb-0000:00:1a.0-2/input1 [ 4.632447] input: Thrustmaster Thrustmaster HOTAS Cougar as /devices/pci0000:00/0000:00:1a.0/usb3/3-2/3-2:1.2/input/input4 [ 4.632553] generic-usb 0003:044F:0400.0003: input,hidraw2: USB HID v1.00 Mouse [Thrustmaster Thrustmaster HOTAS Cougar] on usb-0000:00:1a.0-2/input2 [ 4.632572] usbcore: registered new interface driver usbhid [ 4.632574] usbhid: USB HID core driver [ 4.898497] usb 4-1: new full speed USB device using uhci_hcd and address 2 [ 5.049874] ata5: SATA link up 3.0 Gbps (SStatus 123 SControl 300) [ 5.050978] ata5.00: ATA-8: ST3500418AS, CC38, max UDMA/133 [ 5.050982] ata5.00: 976773168 sectors, multi 0: LBA48 NCQ (depth 31/32) [ 5.052324] ata5.00: configured for UDMA/133 [ 5.068327] scsi 4:0:0:0: Direct-Access ATA ST3500418AS CC38 PQ: 0 ANSI: 5 [ 5.068472] sd 4:0:0:0: Attached scsi generic sg1 type 0 [ 5.068480] sd 4:0:0:0: [sda] 976773168 512-byte logical blocks: (500 GB/465 GiB) [ 5.068536] sd 4:0:0:0: [sda] Write Protect is off [ 5.068539] sd 4:0:0:0: [sda] Mode Sense: 00 3a 00 00 [ 5.068566] sd 4:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA [ 5.068741] sda: sda1 sda2 sda3 [ 5.107886] input: Logitech USB Gaming Mouse as /devices/pci0000:00/0000:00:1a.1/usb4/4-1/4-1:1.0/input/input5 [ 5.107963] generic-usb 0003:046D:C041.0004: input,hidraw3: USB HID v1.11 Mouse [Logitech USB Gaming Mouse] on usb-0000:00:1a.1-1/input0 [ 5.117026] generic-usb 0003:046D:C041.0005: hiddev96,hidraw4: USB HID v1.11 Device [Logitech USB Gaming Mouse] on usb-0000:00:1a.1-1/input1 [ 5.117132] sd 4:0:0:0: [sda] Attached SCSI disk [ 5.387546] usb 4-2: new low speed USB device using uhci_hcd and address 3 [ 5.594031] input: CH PRODUCTS CH PRO PEDALS USB as /devices/pci0000:00/0000:00:1a.1/usb4/4-2/4-2:1.0/input/input6 [ 5.594101] generic-usb 0003:068E:00F2.0006: input,hidraw5: USB HID v1.00 Joystick [CH PRODUCTS CH PRO PEDALS USB ] on usb-0000:00:1a.1-2/input0 [ 5.818660] ata6: SATA link up 3.0 Gbps (SStatus 123 SControl 300) [ 5.821582] ata6.00: ATA-8: WDC WD20EADS-00R6B0, 01.00A01, max UDMA/133 [ 5.821586] ata6.00: 3907029168 sectors, multi 0: LBA48 NCQ (depth 31/32), AA [ 5.825469] ata6.00: configured for UDMA/133 [ 5.836891] scsi 5:0:0:0: Direct-Access ATA WDC WD20EADS-00R 01.0 PQ: 0 ANSI: 5 [ 5.837044] sd 5:0:0:0: [sdb] 3907029168 512-byte logical blocks: (2.00 TB/1.81 TiB) [ 5.837078] sd 5:0:0:0: Attached scsi generic sg2 type 0 [ 5.837121] sd 5:0:0:0: [sdb] Write Protect is off [ 5.837124] sd 5:0:0:0: [sdb] Mode Sense: 00 3a 00 00 [ 5.837145] sd 5:0:0:0: [sdb] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA [ 5.837356] sdb: [ 5.876653] usb 5-1: new low speed USB device using uhci_hcd and address 2 [ 6.075442] input: CHESEN USB Keyboard as /devices/pci0000:00/0000:00:1a.2/usb5/5-1/5-1:1.0/input/input7 [ 6.075500] generic-usb 0003:0A81:0101.0007: input,hidraw6: USB HID v1.10 Keyboard [CHESEN USB Keyboard] on usb-0000:00:1a.2-1/input0 [ 6.105289] input: CHESEN USB Keyboard as /devices/pci0000:00/0000:00:1a.2/usb5/5-1/5-1:1.1/input/input8 [ 6.105361] generic-usb 0003:0A81:0101.0008: input,hidraw7: USB HID v1.10 Device [CHESEN USB Keyboard] on usb-0000:00:1a.2-1/input1 [ 6.239443] unknown partition table [ 6.240371] sd 5:0:0:0: [sdb] Attached SCSI disk [ 6.587140] ata7: SATA link up 3.0 Gbps (SStatus 123 SControl 300) [ 6.593908] ata7.00: ATA-8: WDC WD20EARS-00J2GB0, 80.00A80, max UDMA/133 [ 6.593912] ata7.00: 3907029168 sectors, multi 0: LBA48 NCQ (depth 31/32), AA [ 6.599859] ata7.00: configured for UDMA/133 [ 6.625515] scsi 6:0:0:0: Direct-Access ATA WDC WD20EARS-00J 80.0 PQ: 0 ANSI: 5 [ 6.625626] sd 6:0:0:0: [sdc] 3907029168 512-byte logical blocks: (2.00 TB/1.81 TiB) [ 6.625632] sd 6:0:0:0: Attached scsi generic sg3 type 0 [ 6.625690] sd 6:0:0:0: [sdc] Write Protect is off [ 6.625692] sd 6:0:0:0: [sdc] Mode Sense: 00 3a 00 00 [ 6.625727] sd 6:0:0:0: [sdc] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA [ 6.626225] sdc: [ 6.657869] xor: automatically using best checksumming function: generic_sse [ 6.660605] unknown partition table [ 6.661244] sd 6:0:0:0: [sdc] Attached SCSI disk [ 6.707764] generic_sse: 10585.200 MB/sec [ 6.707766] xor: using function: generic_sse (10585.200 MB/sec) [ 7.023222] device-mapper: dm-raid45: initialized v0.2594b [ 7.404001] ata8: SATA link up 3.0 Gbps (SStatus 123 SControl 300) [ 7.407553] ata8.00: ATA-8: WDC WD20EARS-00J2GB0, 80.00A80, max UDMA/133 [ 7.407557] ata8.00: 3907029168 sectors, multi 0: LBA48 NCQ (depth 31/32), AA [ 7.411080] ata8.00: configured for UDMA/133 [ 7.423789] scsi 7:0:0:0: Direct-Access ATA WDC WD20EARS-00J 80.0 PQ: 0 ANSI: 5 [ 7.423888] sd 7:0:0:0: [sdd] 3907029168 512-byte logical blocks: (2.00 TB/1.81 TiB) [ 7.423915] sd 7:0:0:0: Attached scsi generic sg4 type 0 [ 7.423945] sd 7:0:0:0: [sdd] Write Protect is off [ 7.423948] sd 7:0:0:0: [sdd] Mode Sense: 00 3a 00 00 [ 7.423969] sd 7:0:0:0: [sdd] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA [ 7.424145] sdd: [ 7.424158] scsi 9:0:0:0: Direct-Access ATA Corsair CSSD-F24 1.0 PQ: 0 ANSI: 5 [ 7.424296] sd 9:0:0:0: [sde] 468862128 512-byte logical blocks: (240 GB/223 GiB) [ 7.424301] sd 9:0:0:0: Attached scsi generic sg5 type 0 [ 7.424356] sd 9:0:0:0: [sde] Write Protect is off [ 7.424359] sd 9:0:0:0: [sde] Mode Sense: 00 3a 00 00 [ 7.424385] sd 9:0:0:0: [sde] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA [ 7.424563] sde: [ 7.424750] scsi 15:0:0:0: Processor Marvell 91xx Config 1.01 PQ: 0 ANSI: 5 [ 7.424827] scsi 15:0:0:0: Attached scsi generic sg6 type 3 [ 7.425874] sde1 sde2 [ 7.426711] sd 9:0:0:0: [sde] Attached SCSI disk [ 7.855389] unknown partition table [ 7.856323] sd 7:0:0:0: [sdd] Attached SCSI disk [ 8.432349] ------------[ cut here ]------------ [ 8.432408] kernel BUG at /build/buildd/linux-2.6.35/drivers/md/dm.c:2190! [ 8.432472] invalid opcode: 0000 [#1] SMP [ 8.432604] last sysfs file: /sys/devices/virtual/bdi/252:0/uevent [ 8.432661] CPU 2 [ 8.432705] Modules linked in: dm_raid45 xor usbhid hid sky2 pata_jmicron ahci libahci [ 8.433154] [ 8.433199] Pid: 581, comm: dmraid Tainted: G M 2.6.35-19-generic #28-Ubuntu EVGA Classified SR-2/To Be Filled By O.E.M. [ 8.433272] RIP: 0010:[] [] dm_put+0x112/0x120 [ 8.433375] RSP: 0018:ffff880236e79be8 EFLAGS: 00010202 [ 8.433429] RAX: ffff880236f08000 RBX: ffff8802374c5800 RCX: 02000000000040c1 [ 8.433489] RDX: 000000000000001a RSI: ffffea0007c18a00 RDI: ffff8802374c5800 [ 8.433549] RBP: ffff880236e79c08 R08: 0000000000000067 R09: 0000000000000000 [ 8.433609] R10: ffff8802383a3200 R11: 0000000000000000 R12: ffff880237e09000 [ 8.433668] R13: ffff8802374c5800 R14: ffffc9001280e040 R15: 0000000000000020 [ 8.433729] FS: 00007f258130c7a0(0000) GS:ffff880001e40000(0000) knlGS:0000000000000000 [ 8.433791] CS: 0010 DS: 0000 ES: 0000 CR0: 000000008005003b [ 8.433871] CR2: 00007ff6c84d3000 CR3: 0000000237e8b000 CR4: 00000000000006e0 [ 8.433955] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 [ 8.434039] DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400 [ 8.434126] Process dmraid (pid: 581, threadinfo ffff880236e78000, task ffff880236d58000) [ 8.434234] Stack: [ 8.434302] ffffc9001280e040 0000000000000003 ffff880237e09000 ffff8802374c5800 [ 8.434507] <0> ffff880236e79d38 ffffffffa008edd6 ffff880237d2c600 00000001000000d2 [ 8.434814] <0> 0000000000000000 ffff880236e79ca0 00000000ffffffff 0000000000000001 [ 8.435187] Call Trace: [ 8.435261] [] raid_ctr+0x5f6/0xa50 [dm_raid45] [ 8.435343] [] ? dm_split_args+0x75/0x140 [ 8.435425] [] dm_table_add_target+0xff/0x240 [ 8.435427] [] populate_table+0x85/0x140 [ 8.435430] [] table_load+0x8f/0x1f0 [ 8.435432] [] ? table_load+0x0/0x1f0 [ 8.435434] [] ctl_ioctl+0x1a5/0x250 [ 8.435436] [] dm_ctl_ioctl+0x13/0x20 [ 8.435439] [] vfs_ioctl+0x3d/0xd0 [ 8.435440] [] do_vfs_ioctl+0x81/0x340 [ 8.435442] [] sys_ioctl+0x81/0xa0 [ 8.435446] [] ? do_device_not_available+0xe/0x10 [ 8.435450] [] system_call_fastpath+0x16/0x1b [ 8.435451] Code: 00 00 48 89 df e8 2f e3 ff ff e9 44 ff ff ff eb 08 90 90 90 90 90 90 90 90 4c 89 e7 e8 98 15 00 00 4c 89 e7 e8 b0 15 00 00 eb 85 <0f> 0b eb fe eb 08 90 90 90 90 90 90 90 90 55 48 89 e5 0f 1f 44 [ 8.435464] RIP [] dm_put+0x112/0x120 [ 8.435466] RSP [ 8.435468] ---[ end trace 9ae611b8c863f8b1 ]--- [ 13.687167] EXT4-fs (sda1): INFO: recovery required on readonly filesystem [ 13.687170] EXT4-fs (sda1): write access will be enabled during recovery [ 16.016799] EXT4-fs (sda1): recovery complete [ 16.018359] EXT4-fs (sda1): mounted filesystem with ordered data mode. Opts: (null) [ 17.765660] udev[727]: starting version 162 [ 17.915056] EXT4-fs (sda1): re-mounted. Opts: errors=remount-ro [ 18.273993] type=1400 audit(1283270792.417:2): apparmor="STATUS" operation="profile_load" name="/sbin/dhclient3" pid=892 comm="apparmor_parser" [ 18.274388] type=1400 audit(1283270792.427:3): apparmor="STATUS" operation="profile_load" name="/usr/lib/NetworkManager/nm-dhcp-client.action" pid=892 comm="apparmor_parser" [ 18.274598] type=1400 audit(1283270792.427:4): apparmor="STATUS" operation="profile_load" name="/usr/lib/connman/scripts/dhclient-script" pid=892 comm="apparmor_parser" [ 18.394753] EDAC MC: Ver: 2.1.0 Aug 29 2010 [ 18.398285] PCI: Discovered peer bus ff [ 18.400198] PCI: Discovered peer bus fe [ 18.402396] EDAC MC0: Giving out device to 'i7core_edac.c' 'i7 core #0': DEV 0000:ff:03.0 [ 18.402415] EDAC PCI0: Giving out device to module 'i7core_edac' controller 'EDAC PCI controller': DEV '0000:ff:03.0' (POLLED) [ 18.402491] EDAC MC1: Giving out device to 'i7core_edac.c' 'i7 core #1': DEV 0000:fe:03.0 [ 18.402509] EDAC PCI1: Giving out device to module 'i7core_edac' controller 'EDAC PCI controller': DEV '0000:fe:03.0' (POLLED) [ 18.402512] EDAC i7core: Driver loaded. [ 18.443138] alloc irq_desc for 29 on node -1 [ 18.443140] alloc kstat_irqs on node -1 [ 18.443148] xhci_hcd 0000:0d:00.0: PCI INT A -> GSI 29 (level, low) -> IRQ 29 [ 18.443675] xhci_hcd 0000:0d:00.0: setting latency timer to 64 [ 18.443678] xhci_hcd 0000:0d:00.0: xHCI Host Controller [ 18.443737] xhci_hcd 0000:0d:00.0: new USB bus registered, assigned bus number 9 [ 18.443867] xhci_hcd 0000:0d:00.0: irq 29, io mem 0xfbdfe000 [ 18.447214] usb usb9: No SuperSpeed endpoint companion for config 1 interface 0 altsetting 0 ep 129: using minimum values [ 18.447282] xHCI xhci_add_endpoint called for root hub [ 18.447283] xHCI xhci_check_bandwidth called for root hub [ 18.447315] hub 9-0:1.0: USB hub found [ 18.447320] hub 9-0:1.0: 4 ports detected [ 18.474505] shpchp: Standard Hot Plug PCI Controller Driver version: 0.4 [ 18.574332] lp: driver loaded but no devices found [ 18.937735] [drm] Initialized drm 1.1.0 20060810 [ 19.129305] alloc irq_desc for 24 on node -1 [ 19.129307] alloc kstat_irqs on node -1 [ 19.129316] nouveau 0000:0c:00.0: PCI INT A -> GSI 24 (level, low) -> IRQ 24 [ 19.129320] nouveau 0000:0c:00.0: setting latency timer to 64 [ 19.132605] [drm] nouveau 0000:0c:00.0: Unsupported chipset 0x0c0000a3 [ 19.132753] nouveau 0000:0c:00.0: PCI INT A disabled [ 19.132757] nouveau: probe of 0000:0c:00.0 failed with error -22 [ 19.132770] nouveau 0000:0b:00.0: enabling device (0000 -> 0003) [ 19.132774] alloc irq_desc for 35 on node -1 [ 19.132775] alloc kstat_irqs on node -1 [ 19.132781] nouveau 0000:0b:00.0: PCI INT A -> GSI 35 (level, low) -> IRQ 35 [ 19.132786] nouveau 0000:0b:00.0: setting latency timer to 64 [ 19.136094] [drm] nouveau 0000:0b:00.0: Unsupported chipset 0x0c0000a3 [ 19.136200] nouveau 0000:0b:00.0: PCI INT A disabled [ 19.136204] nouveau: probe of 0000:0b:00.0 failed with error -22 [ 19.136221] nouveau 0000:08:00.0: enabling device (0000 -> 0003) [ 19.136226] alloc irq_desc for 30 on node -1 [ 19.136227] alloc kstat_irqs on node -1 [ 19.136232] nouveau 0000:08:00.0: PCI INT A -> GSI 30 (level, low) -> IRQ 30 [ 19.136237] nouveau 0000:08:00.0: setting latency timer to 64 [ 19.139173] [drm] nouveau 0000:08:00.0: Unsupported chipset 0x0c0000a3 [ 19.139277] nouveau 0000:08:00.0: PCI INT A disabled [ 19.139282] nouveau: probe of 0000:08:00.0 failed with error -22 [ 19.257277] ip_tables: (C) 2000-2006 Netfilter Core Team [ 19.418122] EXT4-fs (sda2): mounted filesystem with ordered data mode. Opts: (null) [ 19.487497] nf_conntrack version 0.5.0 (16384 buckets, 65536 max) [ 19.487669] CONFIG_NF_CT_ACCT is deprecated and will be removed soon. Please use [ 19.487671] nf_conntrack.acct=1 kernel parameter, acct=1 nf_conntrack module option or [ 19.487672] sysctl net.netfilter.nf_conntrack_acct=1 to enable it. [ 19.671112] alloc irq_desc for 39 on node -1 [ 19.671114] alloc kstat_irqs on node -1 [ 19.671121] SB-XFi 0000:07:00.0: PCI INT A -> GSI 39 (level, low) -> IRQ 39 [ 19.672018] SB-XFi 0000:07:00.0: setting latency timer to 64 [ 20.134537] alloc irq_desc for 34 on node -1 [ 20.134540] alloc kstat_irqs on node -1 [ 20.134547] HDA Intel 0000:0c:00.1: PCI INT B -> GSI 34 (level, low) -> IRQ 34 [ 20.134549] hda_intel: Disable MSI for Nvidia chipset [ 20.134982] HDA Intel 0000:0c:00.1: setting latency timer to 64 [ 20.347696] ip6_tables: (C) 2000-2006 Netfilter Core Team [ 20.999521] ------------[ cut here ]------------ [ 20.999532] WARNING: at /build/buildd/linux-2.6.35/lib/kobject.c:595 kobject_put+0x50/0x60() [ 20.999535] Hardware name: To Be Filled By O.E.M. [ 20.999537] kobject: '(null)' (ffff8802374c5998): is not initialized, yet kobject_put() is being called. [ 20.999539] Modules linked in: ip6table_filter ip6_tables nf_nat_irc nf_conntrack_irc snd_hda_intel(+) nf_nat_ftp nf_nat snd_hda_codec snd_ctxfi nf_conntrack_ipv4 nf_defrag_ipv4 nf_conntrack_ftp nf_conntrack snd_hwdep snd_pcm snd_seq_midi snd_rawmidi iptable_filter snd_seq_midi_event ip_tables snd_seq snd_timer nouveau snd_seq_device ttm drm_kms_helper snd drm x_tables soundcore i2c_algo_bit snd_page_alloc joydev shpchp lp xhci_hcd psmouse i7core_edac serio_raw edac_core parport dm_raid45 xor usbhid hid sky2 pata_jmicron ahci libahci [ 20.999579] Pid: 1302, comm: dmraid Tainted: G M D 2.6.35-19-generic #28-Ubuntu [ 20.999581] Call Trace: [ 20.999590] [] warn_slowpath_common+0x7f/0xc0 [ 20.999594] [] warn_slowpath_fmt+0x46/0x50 [ 20.999598] [] kobject_put+0x50/0x60 [ 20.999605] [] dm_sysfs_exit+0x16/0x20 [ 20.999608] [] dm_put+0x9f/0x120 [ 20.999612] [] table_status+0x54/0xa0 [ 20.999616] [] ? table_status+0x0/0xa0 [ 20.999620] [] ctl_ioctl+0x1a5/0x250 [ 20.999626] [] ? do_anonymous_page+0x11b/0x330 [ 20.999629] [] dm_ctl_ioctl+0x13/0x20 [ 20.999635] [] vfs_ioctl+0x3d/0xd0 [ 20.999638] [] do_vfs_ioctl+0x81/0x340 [ 20.999644] [] ? do_page_fault+0x15e/0x350 [ 20.999647] [] sys_ioctl+0x81/0xa0 [ 20.999654] [] system_call_fastpath+0x16/0x1b [ 20.999657] ---[ end trace 9ae611b8c863f8b2 ]--- [ 20.999664] BUG: unable to handle kernel NULL pointer dereference at 0000000000000008 [ 20.999706] IP: [] bdput+0x9/0x20 [ 20.999737] PGD 2220c7067 PUD 2220c6067 PMD 0 [ 20.999772] Oops: 0000 [#2] SMP [ 20.999798] last sysfs file: /sys/devices/pci0000:00/0000:00:1f.2/host4/target4:0:0/4:0:0:0/block/sda/sda3/alignment_offset [ 20.999837] CPU 4 [ 20.999848] Modules linked in: ip6table_filter ip6_tables nf_nat_irc nf_conntrack_irc snd_hda_intel(+) nf_nat_ftp nf_nat snd_hda_codec snd_ctxfi nf_conntrack_ipv4 nf_defrag_ipv4 nf_conntrack_ftp nf_conntrack snd_hwdep snd_pcm snd_seq_midi snd_rawmidi iptable_filter snd_seq_midi_event ip_tables snd_seq snd_timer nouveau snd_seq_device ttm drm_kms_helper snd drm x_tables soundcore i2c_algo_bit snd_page_alloc joydev shpchp lp xhci_hcd psmouse i7core_edac serio_raw edac_core parport dm_raid45 xor usbhid hid sky2 pata_jmicron ahci libahci [ 21.000346] [ 21.000379] Pid: 1302, comm: dmraid Tainted: G M D W 2.6.35-19-generic #28-Ubuntu EVGA Classified SR-2/To Be Filled By O.E.M. [ 21.000465] RIP: 0010:[] [] bdput+0x9/0x20 [ 21.000543] RSP: 0018:ffff8803b5031d98 EFLAGS: 00010296 [ 21.000587] RAX: ffff8802374c5860 RBX: ffff8802374c5800 RCX: 000000000003ffff [ 21.000637] RDX: 0000000000000000 RSI: ffffffff812b8280 RDI: 0000000000000000 [ 21.000686] RBP: ffff8803b5031d98 R08: 0000000000015629 R09: 0000000000000000 [ 21.000735] R10: 0000000000000000 R11: 0000000000000002 R12: 00000000ffffffff [ 21.000785] R13: ffffc90013bd4000 R14: 0000000000004000 R15: 0000000000000000 [ 21.000834] FS: 00007f686410e7a0(0000) GS:ffff880245600000(0000) knlGS:0000000000000000 [ 21.000909] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 [ 21.000954] CR2: 0000000000000008 CR3: 0000000236c87000 CR4: 00000000000006e0 [ 21.001004] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 [ 21.001053] DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400 [ 21.001103] Process dmraid (pid: 1302, threadinfo ffff8803b5030000, task ffff8803b44744a0) [ 21.001177] Stack: [ 21.001211] ffff8803b5031db8 ffffffff81453ddb ffff8802374c5800 0000000000000000 [ 21.001276] <0> ffff8803b5031de8 ffffffff81455a81 0000000000000000 ffff8802374c5800 [ 21.001374] <0> 0000000000000000 ffffc90013bd4000 ffff8803b5031e28 ffffffff8145a864 [ 21.001499] Call Trace: [ 21.001536] [] free_dev+0x2b/0xe0 [ 21.001580] [] dm_put+0xf1/0x120 [ 21.001623] [] table_status+0x54/0xa0 [ 21.001668] [] ? table_status+0x0/0xa0 [ 21.001713] [] ctl_ioctl+0x1a5/0x250 [ 21.001758] [] ? do_anonymous_page+0x11b/0x330 [ 21.001805] [] dm_ctl_ioctl+0x13/0x20 [ 21.001850] [] vfs_ioctl+0x3d/0xd0 [ 21.001894] [] do_vfs_ioctl+0x81/0x340 [ 21.001939] [] ? do_page_fault+0x15e/0x350 [ 21.001985] [] sys_ioctl+0x81/0xa0 [ 21.002029] [] system_call_fastpath+0x16/0x1b [ 21.002075] Code: c0 8f a2 81 e8 19 3c eb ff 66 90 48 85 db 74 09 48 8b 7b 08 e8 c9 66 fe ff 5b 41 5c c9 c3 eb 02 90 90 55 48 89 e5 0f 1f 44 00 00 <48> 8b 7f 08 e8 ae 66 fe ff c9 c3 eb 0a 90 90 90 90 90 90 90 90 [ 21.002533] RIP [] bdput+0x9/0x20 [ 21.002581] RSP [ 21.002619] CR2: 0000000000000008 [ 21.002658] ---[ end trace 9ae611b8c863f8b3 ]--- [ 21.002664] ------------[ cut here ]------------ [ 21.002666] kernel BUG at /build/buildd/linux-2.6.35/drivers/md/dm.c:2190! [ 21.002668] invalid opcode: 0000 [#3] SMP [ 21.002670] last sysfs file: /sys/devices/pci0000:00/0000:00:1f.2/host4/target4:0:0/4:0:0:0/block/sda/sda3/alignment_offset [ 21.002672] CPU 12 [ 21.002672] Modules linked in: ip6table_filter ip6_tables nf_nat_irc nf_conntrack_irc snd_hda_intel(+) nf_nat_ftp nf_nat snd_hda_codec snd_ctxfi nf_conntrack_ipv4 nf_defrag_ipv4 nf_conntrack_ftp nf_conntrack snd_hwdep snd_pcm snd_seq_midi snd_rawmidi iptable_filter snd_seq_midi_event ip_tables snd_seq snd_timer nouveau snd_seq_device ttm drm_kms_helper snd drm x_tables soundcore i2c_algo_bit snd_page_alloc joydev shpchp lp xhci_hcd psmouse i7core_edac serio_raw edac_core parport dm_raid45 xor usbhid hid sky2 pata_jmicron ahci libahci [ 21.002701] [ 21.002703] Pid: 1303, comm: dmraid Tainted: G M D W 2.6.35-19-generic #28-Ubuntu EVGA Classified SR-2/To Be Filled By O.E.M. [ 21.002705] RIP: 0010:[] [] dm_put+0x112/0x120 [ 21.002709] RSP: 0018:ffff8803b2217dc8 EFLAGS: 00010202 [ 21.002710] RAX: 0000000000000000 RBX: ffff8802374c5800 RCX: 00000000000000ff [ 21.002712] RDX: 0000000000000286 RSI: 0000000000000286 RDI: ffff8802374c5800 [ 21.002713] RBP: ffff8803b2217de8 R08: ffff8803b566cac0 R09: ffff8803b2217bb4 [ 21.002714] R10: 0000000000000001 R11: 0000000000000000 R12: 0000000000000000 [ 21.002716] R13: ffffc90013bda000 R14: 0000000000004000 R15: 0000000000000000 [ 21.002717] FS: 00007f583ee767a0(0000) GS:ffff880245680000(0000) knlGS:0000000000000000 [ 21.002719] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 [ 21.002720] CR2: 00007fffe736bff8 CR3: 00000003b4492000 CR4: 00000000000006e0 [ 21.002722] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 [ 21.002736] DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400 [ 21.002738] Process dmraid (pid: 1303, threadinfo ffff8803b2216000, task ffff8803b611adc0) [ 21.002739] Stack: [ 21.002739] 0000000000000000 ffff8802374c5800 0000000000000000 ffffc90013bda000 [ 21.002741] <0> ffff8803b2217e28 ffffffff8145a864 ffff8803b2217e00 ffff8803b611adc0 [ 21.002744] <0> 0000000000ed0620 ffffffff8145a810 000000000000000c 0000000000000000 [ 21.002747] Call Trace: [ 21.002750] [] table_status+0x54/0xa0 [ 21.002753] [] ? table_status+0x0/0xa0 [ 21.002755] [] ctl_ioctl+0x1a5/0x250 [ 21.002758] [] ? do_anonymous_page+0x11b/0x330 [ 21.002760] [] dm_ctl_ioctl+0x13/0x20 [ 21.002762] [] vfs_ioctl+0x3d/0xd0 [ 21.002763] [] do_vfs_ioctl+0x81/0x340 [ 21.002766] [] ? do_page_fault+0x15e/0x350 [ 21.002782] [] sys_ioctl+0x81/0xa0 [ 21.002785] [] system_call_fastpath+0x16/0x1b [ 21.002786] Code: 00 00 48 89 df e8 2f e3 ff ff e9 44 ff ff ff eb 08 90 90 90 90 90 90 90 90 4c 89 e7 e8 98 15 00 00 4c 89 e7 e8 b0 15 00 00 eb 85 <0f> 0b eb fe eb 08 90 90 90 90 90 90 90 90 55 48 89 e5 0f 1f 44 [ 21.002801] RIP [] dm_put+0x112/0x120 [ 21.002803] RSP [ 21.002826] ---[ end trace 9ae611b8c863f8b4 ]--- [ 21.003028] ------------[ cut here ]------------ [ 21.003031] kernel BUG at /build/buildd/linux-2.6.35/drivers/md/dm.c:2190! [ 21.003032] invalid opcode: 0000 [#4] SMP [ 21.003034] last sysfs file: /sys/devices/pci0000:00/0000:00:1f.2/host4/target4:0:0/4:0:0:0/block/sda/sda3/alignment_offset [ 21.003037] CPU 12 [ 21.003037] Modules linked in: ip6table_filter ip6_tables nf_nat_irc nf_conntrack_irc snd_hda_intel(+) nf_nat_ftp nf_nat snd_hda_codec snd_ctxfi nf_conntrack_ipv4 nf_defrag_ipv4 nf_conntrack_ftp nf_conntrack snd_hwdep snd_pcm snd_seq_midi snd_rawmidi iptable_filter snd_seq_midi_event ip_tables snd_seq snd_timer nouveau snd_seq_device ttm drm_kms_helper snd drm x_tables soundcore i2c_algo_bit snd_page_alloc joydev shpchp lp xhci_hcd psmouse i7core_edac serio_raw edac_core parport dm_raid45 xor usbhid hid sky2 pata_jmicron ahci libahci [ 21.003069] [ 21.003072] Pid: 1301, comm: dmraid Tainted: G M D W 2.6.35-19-generic #28-Ubuntu EVGA Classified SR-2/To Be Filled By O.E.M. [ 21.003074] RIP: 0010:[] [] dm_put+0x112/0x120 [ 21.003079] RSP: 0018:ffff880222b05dc8 EFLAGS: 00010202 [ 21.003080] RAX: 0000000000000000 RBX: ffff8802374c5800 RCX: 00000000000000ff [ 21.003082] RDX: 0000000000000286 RSI: 0000000000000286 RDI: ffff8802374c5800 [ 21.003083] RBP: ffff880222b05de8 R08: ffff8803b566cae0 R09: ffff880222b05bb4 [ 21.003085] R10: 0000000000000001 R11: 0000000000000000 R12: 0000000000000000 [ 21.003086] R13: ffffc90013be0000 R14: 0000000000004000 R15: 0000000000000000 [ 21.003088] FS: 00007fbbd52417a0(0000) GS:ffff880245680000(0000) knlGS:0000000000000000 [ 21.003090] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 [ 21.003092] CR2: 00007fffaeec7ed8 CR3: 00000003b2e62000 CR4: 00000000000006e0 [ 21.003109] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 [ 21.003111] DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400 [ 21.003114] Process dmraid (pid: 1301, threadinfo ffff880222b04000, task ffff8802382e0000) [ 21.003115] Stack: [ 21.003116] 0000000000000000 ffff8802374c5800 0000000000000000 ffffc90013be0000 [ 21.003120] <0> ffff880222b05e28 ffffffff8145a864 ffff880222b05e00 ffff8802382e0000 [ 21.003123] <0> 0000000001dfa620 ffffffff8145a810 000000000000000c 0000000000000000 [ 21.003127] Call Trace: [ 21.003130] [] table_status+0x54/0xa0 [ 21.003132] [] ? table_status+0x0/0xa0 [ 21.003150] [] ctl_ioctl+0x1a5/0x250 [ 21.003153] [] ? do_anonymous_page+0x11b/0x330 [ 21.003156] [] dm_ctl_ioctl+0x13/0x20 [ 21.003159] [] vfs_ioctl+0x3d/0xd0 [ 21.003162] [] do_vfs_ioctl+0x81/0x340 [ 21.003165] [] ? do_page_fault+0x15e/0x350 [ 21.003167] [] sys_ioctl+0x81/0xa0 [ 21.003170] [] system_call_fastpath+0x16/0x1b [ 21.003172] Code: 00 00 48 89 df e8 2f e3 ff ff e9 44 ff ff ff eb 08 90 90 90 90 90 90 90 90 4c 89 e7 e8 98 15 00 00 4c 89 e7 e8 b0 15 00 00 eb 85 <0f> 0b eb fe eb 08 90 90 90 90 90 90 90 90 55 48 89 e5 0f 1f 44 [ 21.003215] RIP [] dm_put+0x112/0x120 [ 21.003217] RSP [ 21.003221] ---[ end trace 9ae611b8c863f8b5 ]--- [ 21.906850] alloc irq_desc for 36 on node -1 [ 21.906870] alloc kstat_irqs on node -1 [ 21.906892] HDA Intel 0000:0b:00.1: PCI INT B -> GSI 36 (level, low) -> IRQ 36 [ 21.906919] hda_intel: Disable MSI for Nvidia chipset [ 21.907742] HDA Intel 0000:0b:00.1: setting latency timer to 64 [ 22.005172] nvidia: module license 'NVIDIA' taints kernel. [ 22.207363] sky2 0000:03:00.0: eth0: enabling interface [ 22.208500] ADDRCONF(NETDEV_UP): eth0: link is not ready [ 22.211893] sky2 0000:02:00.0: eth1: enabling interface [ 22.212881] ADDRCONF(NETDEV_UP): eth1: link is not ready [ 22.319224] nvidia 0000:0c:00.0: PCI INT A -> GSI 24 (level, low) -> IRQ 24 [ 22.319284] nvidia 0000:0c:00.0: setting latency timer to 64 [ 22.319332] vgaarb: device changed decodes: PCI:0000:0c:00.0,olddecodes=io+mem,decodes=none:owns=io+mem [ 22.319409] vgaarb: transferring owner from PCI:0000:0c:00.0 to PCI:0000:08:00.0 [ 22.650811] type=1400 audit(1283270796.807:5): apparmor="STATUS" operation="profile_replace" name="/sbin/dhclient3" pid=1609 comm="apparmor_parser" [ 22.651244] type=1400 audit(1283270796.807:6): apparmor="STATUS" operation="profile_replace" name="/usr/lib/NetworkManager/nm-dhcp-client.action" pid=1609 comm="apparmor_parser" [ 22.651507] type=1400 audit(1283270796.807:7): apparmor="STATUS" operation="profile_replace" name="/usr/lib/connman/scripts/dhclient-script" pid=1609 comm="apparmor_parser" [ 22.656681] type=1400 audit(1283270796.817:8): apparmor="STATUS" operation="profile_load" name="/usr/share/gdm/guest-session/Xsession" pid=1608 comm="apparmor_parser" [ 22.657228] type=1400 audit(1283270796.817:9): apparmor="STATUS" operation="profile_load" name="/usr/lib/cups/backend/cups-pdf" pid=1612 comm="apparmor_parser" [ 22.657845] type=1400 audit(1283270796.817:10): apparmor="STATUS" operation="profile_load" name="/usr/sbin/cupsd" pid=1612 comm="apparmor_parser" [ 22.663620] type=1400 audit(1283270796.817:11): apparmor="STATUS" operation="profile_load" name="/usr/sbin/tcpdump" pid=1613 comm="apparmor_parser" Bug: 653563 [ 0.000000] Initializing cgroup subsys cpuset [ 0.000000] Initializing cgroup subsys cpu [ 0.000000] Linux version 2.6.35-22-generic (buildd@rothera) (gcc version 4.4.5 (Ubuntu/Linaro 4.4.4-14ubuntu4) ) #33-Ubuntu SMP Sun Sep 19 20:34:50 UTC 2010 (Ubuntu 2.6.35-22.33-generic 2.6.35.4) [ 0.000000] BIOS-provided physical RAM map: [ 0.000000] BIOS-e820: 0000000000000000 - 000000000009fc00 (usable) [ 0.000000] BIOS-e820: 000000000009fc00 - 00000000000a0000 (reserved) [ 0.000000] BIOS-e820: 00000000000e4000 - 0000000000100000 (reserved) [ 0.000000] BIOS-e820: 0000000000100000 - 000000004ffc0000 (usable) [ 0.000000] BIOS-e820: 000000004ffc0000 - 000000004ffd0000 (ACPI data) [ 0.000000] BIOS-e820: 000000004ffd0000 - 0000000050000000 (ACPI NVS) [ 0.000000] BIOS-e820: 00000000fec00000 - 00000000fec01000 (reserved) [ 0.000000] BIOS-e820: 00000000fee00000 - 00000000fee01000 (reserved) [ 0.000000] BIOS-e820: 00000000ff780000 - 0000000100000000 (reserved) [ 0.000000] Notice: NX (Execute Disable) protection cannot be enabled: non-PAE kernel! [ 0.000000] DMI 2.3 present. [ 0.000000] AMI BIOS detected: BIOS may corrupt low RAM, working around it. [ 0.000000] e820 update range: 0000000000000000 - 0000000000010000 (usable) ==> (reserved) [ 0.000000] e820 update range: 0000000000000000 - 0000000000001000 (usable) ==> (reserved) [ 0.000000] e820 remove range: 00000000000a0000 - 0000000000100000 (usable) [ 0.000000] last_pfn = 0x4ffc0 max_arch_pfn = 0x100000 [ 0.000000] MTRR default type: uncachable [ 0.000000] MTRR fixed ranges enabled: [ 0.000000] 00000-9FFFF write-back [ 0.000000] A0000-EFFFF uncachable [ 0.000000] F0000-FFFFF write-protect [ 0.000000] MTRR variable ranges enabled: [ 0.000000] 0 base 0000000000 mask FFC0000000 write-back [ 0.000000] 1 base 0040000000 mask FFF0000000 write-back [ 0.000000] 2 disabled [ 0.000000] 3 disabled [ 0.000000] 4 disabled [ 0.000000] 5 disabled [ 0.000000] 6 disabled [ 0.000000] 7 disabled [ 0.000000] x86 PAT enabled: cpu 0, old 0x7040600070406, new 0x7010600070106 [ 0.000000] Scanning 0 areas for low memory corruption [ 0.000000] modified physical RAM map: [ 0.000000] modified: 0000000000000000 - 0000000000010000 (reserved) [ 0.000000] modified: 0000000000010000 - 000000000009fc00 (usable) [ 0.000000] modified: 000000000009fc00 - 00000000000a0000 (reserved) [ 0.000000] modified: 00000000000e4000 - 0000000000100000 (reserved) [ 0.000000] modified: 0000000000100000 - 000000004ffc0000 (usable) [ 0.000000] modified: 000000004ffc0000 - 000000004ffd0000 (ACPI data) [ 0.000000] modified: 000000004ffd0000 - 0000000050000000 (ACPI NVS) [ 0.000000] modified: 00000000fec00000 - 00000000fec01000 (reserved) [ 0.000000] modified: 00000000fee00000 - 00000000fee01000 (reserved) [ 0.000000] modified: 00000000ff780000 - 0000000100000000 (reserved) [ 0.000000] initial memory mapped : 0 - 00c00000 [ 0.000000] found SMP MP-table at [c00ff780] ff780 [ 0.000000] init_memory_mapping: 0000000000000000-00000000377fe000 [ 0.000000] 0000000000 - 0000400000 page 4k [ 0.000000] 0000400000 - 0037400000 page 2M [ 0.000000] 0037400000 - 00377fe000 page 4k [ 0.000000] kernel direct mapping tables up to 377fe000 @ 15000-1a000 [ 0.000000] RAMDISK: 4f4d0000 - 4ffb0000 [ 0.000000] Allocated new RAMDISK: 009a5000 - 01484746 [ 0.000000] Move RAMDISK from 000000004f4d0000 - 000000004ffaf745 to 009a5000 - 01484745 [ 0.000000] 391MB HIGHMEM available. [ 0.000000] 887MB LOWMEM available. [ 0.000000] mapped low ram: 0 - 377fe000 [ 0.000000] low ram: 0 - 377fe000 [ 0.000000] Zone PFN ranges: [ 0.000000] DMA 0x00000010 -> 0x00001000 [ 0.000000] Normal 0x00001000 -> 0x000377fe [ 0.000000] HighMem 0x000377fe -> 0x0004ffc0 [ 0.000000] Movable zone start PFN for each node [ 0.000000] early_node_map[2] active PFN ranges [ 0.000000] 0: 0x00000010 -> 0x0000009f [ 0.000000] 0: 0x00000100 -> 0x0004ffc0 [ 0.000000] On node 0 totalpages: 327503 [ 0.000000] free_area_init_node: node 0, pgdat c07ffd40, node_mem_map c1486200 [ 0.000000] DMA zone: 32 pages used for memmap [ 0.000000] DMA zone: 0 pages reserved [ 0.000000] DMA zone: 3951 pages, LIFO batch:0 [ 0.000000] Normal zone: 1744 pages used for memmap [ 0.000000] Normal zone: 221486 pages, LIFO batch:31 [ 0.000000] HighMem zone: 784 pages used for memmap [ 0.000000] HighMem zone: 99506 pages, LIFO batch:31 [ 0.000000] Using APIC driver default [ 0.000000] Nvidia board detected. Ignoring ACPI timer override. [ 0.000000] If you got timer trouble try acpi_use_timer_override [ 0.000000] SFI: Simple Firmware Interface v0.81 http://simplefirmware.org [ 0.000000] Intel MultiProcessor Specification v1.1 [ 0.000000] Virtual Wire compatibility mode. [ 0.000000] MPTABLE: OEM ID: TEMPLATE [ 0.000000] MPTABLE: Product ID: [ 0.000000] MPTABLE: APIC at: 0xFEE00000 [ 0.000000] Processor #0 (Bootup-CPU) [ 0.000000] I/O APIC #1 Version 17 at 0xFEC00000. [ 0.000000] IOAPIC[0]: apic_id 1, version 17, address 0xfec00000, GSI 0-23 [ 0.000000] Processors: 1 [ 0.000000] SMP: Allowing 1 CPUs, 0 hotplug CPUs [ 0.000000] nr_irqs_gsi: 40 [ 0.000000] early_res array is doubled to 64 at [16000 - 167ff] [ 0.000000] PM: Registered nosave memory: 000000000009f000 - 00000000000a0000 [ 0.000000] PM: Registered nosave memory: 00000000000a0000 - 00000000000e4000 [ 0.000000] PM: Registered nosave memory: 00000000000e4000 - 0000000000100000 [ 0.000000] Allocating PCI resources starting at 50000000 (gap: 50000000:aec00000) [ 0.000000] Booting paravirtualized kernel on bare hardware [ 0.000000] setup_percpu: NR_CPUS:8 nr_cpumask_bits:8 nr_cpu_ids:1 nr_node_ids:1 [ 0.000000] PERCPU: Embedded 14 pages/cpu @c2000000 s36416 r0 d20928 u4194304 [ 0.000000] pcpu-alloc: s36416 r0 d20928 u4194304 alloc=1*4194304 [ 0.000000] pcpu-alloc: [0] 0 [ 0.000000] Built 1 zonelists in Zone order, mobility grouping on. Total pages: 324943 [ 0.000000] Kernel command line: BOOT_IMAGE=/casper/vmlinuz noprompt cdrom-detect/try-usb=true persistent file=/cdrom/preseed/ubuntu.seed boot=casper initrd=/casper/initrd.lz quiet splash -- acpi=off debian-installer/language=hu console-setup/layoutcode?=hu [ 0.000000] PID hash table entries: 4096 (order: 2, 16384 bytes) [ 0.000000] Dentry cache hash table entries: 131072 (order: 7, 524288 bytes) [ 0.000000] Inode-cache hash table entries: 65536 (order: 6, 262144 bytes) [ 0.000000] Enabling fast FPU save and restore... done. [ 0.000000] Enabling unmasked SIMD FPU exception support... done. [ 0.000000] Initializing CPU#0 [ 0.000000] allocated 6552000 bytes of page_cgroup [ 0.000000] please try 'cgroup_disable=memory' option if you don't want memory cgroups [ 0.000000] Subtract (46 early reservations) [ 0.000000] #1 [0000001000 - 0000002000] EX TRAMPOLINE [ 0.000000] #2 [0000100000 - 00009a0adc] TEXT DATA BSS [ 0.000000] #3 [00009a1000 - 00009a4170] BRK [ 0.000000] #4 [00000ff790 - 0000100000] BIOS reserved [ 0.000000] #5 [00000ff780 - 00000ff790] MP-table mpf [ 0.000000] #6 [000009fc00 - 00000f1100] BIOS reserved [ 0.000000] #7 [00000f11f8 - 00000ff780] BIOS reserved [ 0.000000] #8 [00000f1100 - 00000f11f8] MP-table mpc [ 0.000000] #9 [0000010000 - 0000011000] TRAMPOLINE [ 0.000000] #10 [0000011000 - 0000015000] ACPI WAKEUP [ 0.000000] #11 [0000015000 - 0000016000] PGTABLE [ 0.000000] #12 [00009a5000 - 0001485000] NEW RAMDISK [ 0.000000] #13 [0001485000 - 0001486000] BOOTMEM [ 0.000000] #14 [0001486000 - 0001e86000] BOOTMEM [ 0.000000] #15 [0001e86000 - 0001e86004] BOOTMEM [ 0.000000] #16 [0001e86040 - 0001e86100] BOOTMEM [ 0.000000] #17 [0001e86100 - 0001e86154] BOOTMEM [ 0.000000] #18 [0001e86180 - 0001e89180] BOOTMEM [ 0.000000] #19 [0001e89180 - 0001e891a8] BOOTMEM [ 0.000000] #20 [0001e891c0 - 0001e8a9c0] BOOTMEM [ 0.000000] #21 [0001e8a9c0 - 0001e8a9e7] BOOTMEM [ 0.000000] #22 [0001e8aa00 - 0001e8ab18] BOOTMEM [ 0.000000] #23 [0001e8ab40 - 0001e8ab80] BOOTMEM [ 0.000000] #24 [0001e8ab80 - 0001e8abc0] BOOTMEM [ 0.000000] #25 [0001e8abc0 - 0001e8ac00] BOOTMEM [ 0.000000] #26 [0001e8ac00 - 0001e8ac40] BOOTMEM [ 0.000000] #27 [0001e8ac40 - 0001e8ac80] BOOTMEM [ 0.000000] #28 [0001e8ac80 - 0001e8acc0] BOOTMEM [ 0.000000] #29 [0001e8acc0 - 0001e8ad00] BOOTMEM [ 0.000000] #30 [0001e8ad00 - 0001e8ad40] BOOTMEM [ 0.000000] #31 [0001e8ad40 - 0001e8ad80] BOOTMEM [ 0.000000] #32 [0001e8ad80 - 0001e8ad90] BOOTMEM [ 0.000000] #33 [0001e8adc0 - 0001e8aea2] BOOTMEM [ 0.000000] #34 [0001e8aec0 - 0001e8afa2] BOOTMEM [ 0.000000] #35 [0002000000 - 000200e000] BOOTMEM [ 0.000000] #36 [0001e8cfc0 - 0001e8cfc4] BOOTMEM [ 0.000000] #37 [0001e8d000 - 0001e8d004] BOOTMEM [ 0.000000] #38 [0001e8d040 - 0001e8d044] BOOTMEM [ 0.000000] #39 [0001e8d080 - 0001e8d084] BOOTMEM [ 0.000000] #40 [0001e8d0c0 - 0001e8d170] BOOTMEM [ 0.000000] #41 [0001e8d180 - 0001e8d228] BOOTMEM [ 0.000000] #42 [0001e8d240 - 0001e91240] BOOTMEM [ 0.000000] #43 [0001e91240 - 0001f11240] BOOTMEM [ 0.000000] #44 [0001f11240 - 0001f51240] BOOTMEM [ 0.000000] #45 [000200e000 - 000264d9c0] BOOTMEM [ 0.000000] Initializing HighMem for node 0 (000377fe:0004ffc0) [ 0.000000] Memory: 1272488k/1310464k available (4928k kernel code, 37524k reserved, 2336k data, 684k init, 401160k highmem) [ 0.000000] virtual kernel memory layout: [ 0.000000] fixmap : 0xfff16000 - 0xfffff000 ( 932 kB) [ 0.000000] pkmap : 0xff800000 - 0xffc00000 (4096 kB) [ 0.000000] vmalloc : 0xf7ffe000 - 0xff7fe000 ( 120 MB) [ 0.000000] lowmem : 0xc0000000 - 0xf77fe000 ( 887 MB) [ 0.000000] .init : 0xc0819000 - 0xc08c4000 ( 684 kB) [ 0.000000] .data : 0xc05d029e - 0xc0818668 (2336 kB) [ 0.000000] .text : 0xc0100000 - 0xc05d029e (4928 kB) [ 0.000000] Checking if this processor honours the WP bit even in supervisor mode...Ok. [ 0.000000] SLUB: Genslabs=13, HWalign=64, Order=0-3, MinObjects=0, CPUs=1, Nodes=1 [ 0.000000] Hierarchical RCU implementation. [ 0.000000] RCU dyntick-idle grace-period acceleration is enabled. [ 0.000000] RCU-based detection of stalled CPUs is disabled. [ 0.000000] Verbose stalled-CPUs detection is disabled. [ 0.000000] NR_IRQS:2304 nr_irqs:256 [ 0.000000] spurious 8259A interrupt: IRQ7. [ 0.000000] Console: colour VGA+ 80x25 [ 0.000000] console [tty0] enabled [ 0.000000] Fast TSC calibration using PIT [ 0.000000] Detected 1607.849 MHz processor. [ 0.004010] Calibrating delay loop (skipped), value calculated using timer frequency.. 3215.69 BogoMIPS (lpj=6431396) [ 0.004020] pid_max: default: 32768 minimum: 301 [ 0.004064] Security Framework initialized [ 0.004114] AppArmor: AppArmor initialized [ 0.004118] Yama: becoming mindful. [ 0.004225] Mount-cache hash table entries: 512 [ 0.004462] Initializing cgroup subsys ns [ 0.004470] Initializing cgroup subsys cpuacct [ 0.004478] Initializing cgroup subsys memory [ 0.004494] Initializing cgroup subsys devices [ 0.004498] Initializing cgroup subsys freezer [ 0.004503] Initializing cgroup subsys net_cls [ 0.004550] mce: CPU supports 5 MCE banks [ 0.004583] Performance Events: AMD PMU driver. [ 0.004597] ... version: 0 [ 0.004600] ... bit width: 48 [ 0.004604] ... generic registers: 4 [ 0.004607] ... value mask: 0000ffffffffffff [ 0.004611] ... max period: 00007fffffffffff [ 0.004615] ... fixed-purpose events: 0 [ 0.004618] ... event mask: 000000000000000f [ 0.006093] SMP alternatives: switching to UP code [ 0.017742] Freeing SMP alternatives: 24k freed [ 0.017799] ftrace: converting mcount calls to 0f 1f 44 00 00 [ 0.017815] ftrace: allocating 21758 entries in 43 pages [ 0.020178] Enabling APIC mode: Flat. Using 1 I/O APICs [ 0.020243] ExtINT not setup in hardware but reported by MP table [ 0.020531] ..TIMER: vector=0x30 apic1=0 pin1=2 apic2=0 pin2=0 [ 0.024000] ..MP-BIOS bug: 8254 timer not connected to IO-APIC [ 0.024000] ...trying to set up timer (IRQ0) through the 8259A ... [ 0.024000] ..... (found apic 0 pin 0) ... [ 0.066688] ....... works. [ 0.066690] CPU0: AMD Sempron(tm) Processor 2800+ stepping 02 [ 0.172387] Brought up 1 CPUs [ 0.172391] Total of 1 processors activated (3215.69 BogoMIPS). [ 0.172628] devtmpfs: initialized [ 0.174399] regulator: core version 0.5 [ 0.174433] Time: 12:06:20 Date: 10/02/10 [ 0.174496] NET: Registered protocol family 16 [ 0.174683] EISA bus registered [ 0.174692] node 0 link 0: io port [1000, ffffff] [ 0.174699] TOM: 0000000050000000 aka 1280M [ 0.174705] node 0 link 0: mmio [a0000, bffff] [ 0.174710] node 0 link 0: mmio [50000000, fe0bffff] [ 0.174714] bus: [00, ff] on node 0 link 0 [ 0.174719] bus: 00 index 0 [io 0x0000-0xffff] [ 0.174722] bus: 00 index 1 [mem 0x000a0000-0x000bffff] [ 0.174725] bus: 00 index 2 [mem 0x50000000-0xffffffff] [ 0.175899] PCI: PCI BIOS revision 2.10 entry at 0xf0031, last bus=2 [ 0.175902] PCI: Using configuration type 1 for base access [ 0.177227] bio: create slab at 0 [ 0.177318] ACPI: Interpreter disabled. [ 0.177401] vgaarb: loaded [ 0.177621] SCSI subsystem initialized [ 0.177667] libata version 3.00 loaded. [ 0.177729] usbcore: registered new interface driver usbfs [ 0.177746] usbcore: registered new interface driver hub [ 0.177956] usbcore: registered new device driver usb [ 0.178100] PCI: Probing PCI hardware [ 0.178104] PCI: Probing PCI hardware (bus 00) [ 0.178160] pci 0000:00:00.0: reg 10: [mem 0xf0000000-0xf7ffffff pref] [ 0.178246] pci 0000:00:01.1: reg 10: [io 0x5080-0x509f] [ 0.178256] pci 0000:00:01.1: reg 20: [io 0x5000-0x503f] [ 0.178261] pci 0000:00:01.1: reg 24: [io 0x5040-0x507f] [ 0.178274] pci 0000:00:01.1: PME# supported from D3hot D3cold [ 0.178279] pci 0000:00:01.1: PME# disabled [ 0.178302] pci 0000:00:02.0: reg 10: [mem 0xff6fd000-0xff6fdfff] [ 0.178323] pci 0000:00:02.0: supports D1 D2 [ 0.178326] pci 0000:00:02.0: PME# supported from D0 D1 D2 D3hot D3cold [ 0.178330] pci 0000:00:02.0: PME# disabled [ 0.178347] pci 0000:00:02.1: reg 10: [mem 0xff6fe000-0xff6fefff] [ 0.178368] pci 0000:00:02.1: supports D1 D2 [ 0.178371] pci 0000:00:02.1: PME# supported from D0 D1 D2 D3hot D3cold [ 0.178375] pci 0000:00:02.1: PME# disabled [ 0.178398] pci 0000:00:02.2: reg 10: [mem 0xff6ffc00-0xff6ffcff] [ 0.178422] pci 0000:00:02.2: supports D1 D2 [ 0.178425] pci 0000:00:02.2: PME# supported from D0 D1 D2 D3hot D3cold [ 0.178429] pci 0000:00:02.2: PME# disabled [ 0.178453] pci 0000:00:05.0: reg 10: [mem 0xff6fc000-0xff6fcfff] [ 0.178459] pci 0000:00:05.0: reg 14: [io 0xec00-0xec07] [ 0.178478] pci 0000:00:05.0: supports D1 D2 [ 0.178481] pci 0000:00:05.0: PME# supported from D0 D1 D2 D3hot D3cold [ 0.178484] pci 0000:00:05.0: PME# disabled [ 0.178502] pci 0000:00:06.0: reg 10: [io 0xe800-0xe8ff] [ 0.178507] pci 0000:00:06.0: reg 14: [io 0xe400-0xe47f] [ 0.178513] pci 0000:00:06.0: reg 18: [mem 0xff6fb000-0xff6fbfff] [ 0.178530] pci 0000:00:06.0: supports D1 D2 [ 0.178554] pci 0000:00:08.0: reg 20: [io 0xffa0-0xffaf] [ 0.178585] pci 0000:00:0a.0: reg 10: [io 0x09f0-0x09f7] [ 0.178590] pci 0000:00:0a.0: reg 14: [io 0x0bf0-0x0bf3] [ 0.178595] pci 0000:00:0a.0: reg 18: [io 0x0970-0x0977] [ 0.178599] pci 0000:00:0a.0: reg 1c: [io 0x0b70-0x0b73] [ 0.178604] pci 0000:00:0a.0: reg 20: [io 0xc800-0xc80f] [ 0.178609] pci 0000:00:0a.0: reg 24: [io 0xc400-0xc47f] [ 0.178752] PCI: peer root bus 00 res updated from pci conf [ 0.178791] pci 0000:01:00.0: reg 10: [mem 0xd0000000-0xdfffffff pref] [ 0.178798] pci 0000:01:00.0: reg 14: [io 0xb800-0xb8ff] [ 0.178805] pci 0000:01:00.0: reg 18: [mem 0xff5f0000-0xff5fffff] [ 0.178822] pci 0000:01:00.0: reg 30: [mem 0xff5c0000-0xff5dffff pref] [ 0.178843] pci 0000:01:00.0: supports D1 D2 [ 0.178871] pci 0000:01:00.1: reg 10: [mem 0xc0000000-0xcfffffff pref] [ 0.178878] pci 0000:01:00.1: reg 14: [mem 0xff5e0000-0xff5effff] [ 0.178911] pci 0000:01:00.1: supports D1 D2 [ 0.178953] pci 0000:00:0b.0: PCI bridge to [bus 01-01] [ 0.178958] pci 0000:00:0b.0: bridge window [io 0xb000-0xbfff] [ 0.178963] pci 0000:00:0b.0: bridge window [mem 0xff500000-0xff5fffff] [ 0.178968] pci 0000:00:0b.0: bridge window [mem 0xaeb00000-0xeeafffff pref] [ 0.179005] pci 0000:00:0e.0: PCI bridge to [bus 02-02] [ 0.179009] pci 0000:00:0e.0: bridge window [io 0xf000-0x0000] (disabled) [ 0.179013] pci 0000:00:0e.0: bridge window [mem 0xfff00000-0x000fffff] (disabled) [ 0.179018] pci 0000:00:0e.0: bridge window [mem 0xfff00000-0x000fffff pref] (disabled) [ 0.179481] vgaarb: device added: PCI:0000:01:00.0,decodes=io+mem,owns=io+mem,locks=none [ 0.179595] pci 0000:00:01.0: default IRQ router [10de:00e0] [ 0.179607] PCI: pci_cache_line_size set to 64 bytes [ 0.179655] reserve RAM buffer: 000000000009fc00 - 000000000009ffff [ 0.179659] reserve RAM buffer: 000000004ffc0000 - 000000004fffffff [ 0.179813] NetLabel: Initializing [ 0.179815] NetLabel: domain hash size = 128 [ 0.179817] NetLabel: protocols = UNLABELED CIPSOv4 [ 0.179837] NetLabel: unlabeled traffic allowed by default [ 0.179928] Switching to clocksource tsc [ 0.191301] AppArmor: AppArmor Filesystem Enabled [ 0.191310] pnp: PnP ACPI: disabled [ 0.191317] PnPBIOS: Scanning system for PnP BIOS support... [ 0.191356] PnPBIOS: Found PnP BIOS installation structure at 0xc00f51b0 [ 0.191360] PnPBIOS: PnP BIOS version 1.0, entry 0xf0000:0x613a, dseg 0xf0000 [ 0.192484] PnPBIOS: 17 nodes reported by PnP BIOS; 17 recorded by driver [ 0.192511] system 00:00: [mem 0x00000000-0x0009fbff] could not be reserved [ 0.192515] system 00:00: [mem 0x0009fc00-0x0009ffff] could not be reserved [ 0.192520] system 00:00: [mem 0x000e4000-0x000fffff] could not be reserved [ 0.192524] system 00:00: [mem 0x00100000-0x4ffbffff] could not be reserved [ 0.192528] system 00:00: [mem 0x4ffc0000-0x4ffcffff] could not be reserved [ 0.192532] system 00:00: [mem 0x4ffd0000-0x4fffffff] could not be reserved [ 0.192537] system 00:00: [mem 0xfec00000-0xfec00fff] could not be reserved [ 0.192541] system 00:00: [mem 0xfee00000-0xfee00fff] has been reserved [ 0.192545] system 00:00: [mem 0xff780000-0xffffffff] has been reserved [ 0.192555] system 00:0b: [io 0x04d0-0x04d1] has been reserved [ 0.192559] system 00:0b: [io 0x0cf8-0x0cff] could not be reserved [ 0.192563] system 00:0b: [io 0x0480-0x04ff] could not be reserved [ 0.194732] pci 0000:00:0b.0: PCI bridge to [bus 01-01] [ 0.194738] pci 0000:00:0b.0: bridge window [io 0xb000-0xbfff] [ 0.194745] pci 0000:00:0b.0: bridge window [mem 0xff500000-0xff5fffff] [ 0.194751] pci 0000:00:0b.0: bridge window [mem 0xaeb00000-0xeeafffff pref] [ 0.194757] pci 0000:00:0e.0: PCI bridge to [bus 02-02] [ 0.194760] pci 0000:00:0e.0: bridge window [io disabled] [ 0.194764] pci 0000:00:0e.0: bridge window [mem disabled] [ 0.194767] pci 0000:00:0e.0: bridge window [mem pref disabled] [ 0.194782] pci 0000:00:0e.0: setting latency timer to 64 [ 0.194788] pci_bus 0000:00: resource 4 [io 0x0000-0xffff] [ 0.194791] pci_bus 0000:00: resource 5 [mem 0x000a0000-0x000bffff] [ 0.194795] pci_bus 0000:00: resource 6 [mem 0x50000000-0xffffffff] [ 0.194798] pci_bus 0000:01: resource 0 [io 0xb000-0xbfff] [ 0.194801] pci_bus 0000:01: resource 1 [mem 0xff500000-0xff5fffff] [ 0.194805] pci_bus 0000:01: resource 2 [mem 0xaeb00000-0xeeafffff pref] [ 0.194881] NET: Registered protocol family 2 [ 0.194979] IP route cache hash table entries: 32768 (order: 5, 131072 bytes) [ 0.195493] TCP established hash table entries: 131072 (order: 8, 1048576 bytes) [ 0.197605] TCP bind hash table entries: 65536 (order: 7, 524288 bytes) [ 0.198662] TCP: Hash tables configured (established 131072 bind 65536) [ 0.198668] TCP reno registered [ 0.198677] UDP hash table entries: 512 (order: 2, 16384 bytes) [ 0.198710] UDP-Lite hash table entries: 512 (order: 2, 16384 bytes) [ 0.198886] NET: Registered protocol family 1 [ 0.676103] pci 0000:01:00.0: Boot video device [ 0.676111] PCI: CLS 32 bytes, default 64 [ 0.676451] cpufreq-nforce2: No nForce2 chipset. [ 0.676493] Scanning for low memory corruption every 60 seconds [ 0.676661] audit: initializing netlink socket (disabled) [ 0.676682] type=2000 audit(1286021180.676:1): initialized [ 0.690767] Trying to unpack rootfs image as initramfs... [ 3.705769] highmem bounce pool size: 64 pages [ 3.705777] HugeTLB registered 4 MB page size, pre-allocated 0 pages [ 3.707546] VFS: Disk quotas dquot_6.5.2 [ 3.707622] Dquot-cache hash table entries: 1024 (order 0, 4096 bytes) [ 3.708480] fuse init (API version 7.14) [ 3.708597] msgmni has been set to 1701 [ 3.709034] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 253) [ 3.709039] io scheduler noop registered [ 3.709042] io scheduler deadline registered [ 3.709063] io scheduler cfq registered (default) [ 3.709260] pci_hotplug: PCI Hot Plug PCI Core version: 0.5 [ 3.709292] pciehp: PCI Express Hot Plug Controller Driver version: 0.4 [ 3.709723] Serial: 8250/16550 driver, 4 ports, IRQ sharing enabled [ 3.709833] serial8250: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A [ 3.710265] 00:10: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A [ 3.711683] brd: module loaded [ 3.712476] loop: module loaded [ 3.713002] pata_acpi 0000:00:08.0: setting latency timer to 64 [ 3.713032] pata_acpi 0000:00:0a.0: can't find IRQ for PCI INT A; probably buggy MP table [ 3.713048] pata_acpi 0000:00:0a.0: setting latency timer to 64 [ 3.713497] Fixed MDIO Bus: probed [ 3.713545] PPP generic driver version 2.4.2 [ 3.713604] tun: Universal TUN/TAP device driver, 1.6 [ 3.713607] tun: (C) 1999-2004 Max Krasnyansky [ 3.713718] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver [ 3.713735] ehci_hcd 0000:00:02.2: can't find IRQ for PCI INT C; probably buggy MP table [ 3.713763] ehci_hcd 0000:00:02.2: setting latency timer to 64 [ 3.713767] ehci_hcd 0000:00:02.2: EHCI Host Controller [ 3.713821] ehci_hcd 0000:00:02.2: new USB bus registered, assigned bus number 1 [ 3.713862] ehci_hcd 0000:00:02.2: debug port 1 [ 3.713869] ehci_hcd 0000:00:02.2: cache line size of 32 is not supported [ 3.713894] ehci_hcd 0000:00:02.2: irq 10, io mem 0xff6ffc00 [ 3.713958] isapnp: Scanning for PnP cards... [ 3.762989] ehci_hcd 0000:00:02.2: USB 2.0 started, EHCI 1.00 [ 3.763164] hub 1-0:1.0: USB hub found [ 3.763172] hub 1-0:1.0: 8 ports detected [ 3.763263] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver [ 3.763281] ohci_hcd 0000:00:02.0: can't find IRQ for PCI INT A; probably buggy MP table [ 3.763296] ohci_hcd 0000:00:02.0: setting latency timer to 64 [ 3.763300] ohci_hcd 0000:00:02.0: OHCI Host Controller [ 3.763342] ohci_hcd 0000:00:02.0: new USB bus registered, assigned bus number 2 [ 3.763373] ohci_hcd 0000:00:02.0: irq 3, io mem 0xff6fd000 [ 3.852554] hub 2-0:1.0: USB hub found [ 3.852560] hub 2-0:1.0: 4 ports detected [ 3.852625] ohci_hcd 0000:00:02.1: can't find IRQ for PCI INT B; probably buggy MP table [ 3.852635] ohci_hcd 0000:00:02.1: setting latency timer to 64 [ 3.852639] ohci_hcd 0000:00:02.1: OHCI Host Controller [ 3.852692] ohci_hcd 0000:00:02.1: new USB bus registered, assigned bus number 3 [ 3.852717] ohci_hcd 0000:00:02.1: irq 9, io mem 0xff6fe000 [ 3.941904] hub 3-0:1.0: USB hub found [ 3.941910] hub 3-0:1.0: 4 ports detected [ 3.941986] uhci_hcd: USB Universal Host Controller Interface driver [ 3.942136] PNP: PS/2 Controller [PNP0303,PNP0f13] at 0x60,0x64 irq 1,12 [ 3.987626] serio: i8042 KBD port at 0x60,0x64 irq 1 [ 3.987635] serio: i8042 AUX port at 0x60,0x64 irq 12 [ 3.987731] mice: PS/2 mouse device common for all mice [ 3.987863] rtc_cmos 00:04: rtc core: registered rtc_cmos as rtc0 [ 3.987890] rtc0: alarms up to one day, 114 bytes nvram [ 3.988048] device-mapper: uevent: version 1.0.3 [ 3.988341] device-mapper: ioctl: 4.17.0-ioctl (2010-03-05) initialised: dm-devel@redhat.com [ 3.988407] device-mapper: multipath: version 1.1.1 loaded [ 3.988411] device-mapper: multipath round-robin: version 1.0.0 loaded [ 3.988576] EISA: Probing bus 0 at eisa.0 [ 3.988580] EISA: Cannot allocate resource for mainboard [ 3.988583] Cannot allocate resource for EISA slot 1 [ 3.988586] Cannot allocate resource for EISA slot 2 [ 3.988589] Cannot allocate resource for EISA slot 3 [ 3.988592] Cannot allocate resource for EISA slot 4 [ 3.988595] Cannot allocate resource for EISA slot 5 [ 3.988598] Cannot allocate resource for EISA slot 6 [ 3.988601] Cannot allocate resource for EISA slot 7 [ 3.988604] Cannot allocate resource for EISA slot 8 [ 3.988606] EISA: Detected 0 cards. [ 3.988669] cpuidle: using governor ladder [ 3.988672] cpuidle: using governor menu [ 3.989045] TCP cubic registered [ 3.989210] NET: Registered protocol family 10 [ 3.989766] lo: Disabled Privacy Extensions [ 3.990122] NET: Registered protocol family 17 [ 3.990177] powernow-k8: Power state transitions not supported [ 3.990186] Using IPI No-Shortcut mode [ 3.990334] PM: Resume from disk failed. [ 3.990353] registered taskstats version 1 [ 3.990575] Magic number: 14:509:126 [ 3.990707] rtc_cmos 00:04: setting system clock to 2010-10-02 12:06:24 UTC (1286021184) [ 3.990711] BIOS EDD facility v0.16 2004-Jun-25, 0 devices found [ 3.990714] EDD information not available. [ 4.077872] isapnp: No Plug & Play device found [ 4.089705] input: AT Translated Set 2 keyboard as /devices/platform/i8042/serio0/input/input0 [ 4.144237] usb 1-4: new high speed USB device using ehci_hcd and address 2 [ 4.598116] Freeing initrd memory: 11136k freed [ 4.619116] Freeing unused kernel memory: 684k freed [ 4.620699] Write protecting the kernel text: 4932k [ 4.620745] Write protecting the kernel read-only data: 1976k [ 4.662450] udev[67]: starting version 163 [ 4.916378] forcedeth: Reverse Engineered nForce ethernet driver. Version 0.64. [ 4.916405] forcedeth 0000:00:05.0: can't find IRQ for PCI INT A; probably buggy MP table [ 4.916413] forcedeth 0000:00:05.0: setting latency timer to 64 [ 4.916490] nv_probe: set workaround bit for reversed mac addr [ 4.920670] Linux agpgart interface v0.103 [ 4.932942] Initializing USB Mass Storage driver... [ 4.938734] scsi0 : usb-storage 1-4:1.0 [ 4.939159] usbcore: registered new interface driver usb-storage [ 4.939162] USB Mass Storage support registered. [ 4.960782] [drm] Initialized drm 1.1.0 20060810 [ 5.025230] [drm] radeon defaulting to kernel modesetting. [ 5.025237] [drm] radeon kernel modesetting enabled. [ 5.025328] radeon 0000:01:00.0: can't find IRQ for PCI INT A; probably buggy MP table [ 5.030323] [drm] initializing kernel modesetting (RV350 0x1002:0x4153). [ 5.030451] [drm] register mmio base: 0xFF5F0000 [ 5.030454] [drm] register mmio size: 65536 [ 5.032359] [drm:radeon_agp_init] *ERROR* Unable to acquire AGP: -19 [ 5.032362] [drm] Forcing AGP to PCI mode [ 5.032368] [drm] Generation 2 PCI interface, using max accessible memory [ 5.032376] radeon 0000:01:00.0: VRAM: 256M 0xD0000000 - 0xDFFFFFFF (256M used) [ 5.032380] radeon 0000:01:00.0: GTT: 512M 0xB0000000 - 0xCFFFFFFF [ 5.032438] [drm] radeon: irq initialized. [ 5.032637] [drm] Detected VRAM RAM=256M, BAR=256M [ 5.032644] [drm] RAM width 128bits DDR [ 5.032787] [TTM] Zone kernel: Available graphics memory: 441586 kiB. [ 5.032790] [TTM] Zone highmem: Available graphics memory: 642166 kiB. [ 5.032793] [TTM] Initializing pool allocator. [ 5.032826] [drm] radeon: 256M of VRAM memory ready [ 5.032828] [drm] radeon: 512M of GTT memory ready. [ 5.032869] [drm] GART: num cpu pages 131072, num gpu pages 131072 [ 5.037724] [drm] radeon: 1 quad pipes, 1 Z pipes initialized. [ 5.040505] [drm] Loading R300 Microcode [ 5.045455] [drm] radeon: ring at 0x00000000B0000000 [ 5.045488] [drm] ring test succeeded in 0 usecs [ 5.045666] [drm] radeon: ib pool ready. [ 5.045776] [drm] ib test succeeded in 0 usecs [ 5.045933] [drm] Default TV standard: PAL [ 5.045935] [drm] 27.000000000 MHz TV ref clk [ 5.045940] [drm] DFP table revision: 3 [ 5.045997] [drm] Default TV standard: PAL [ 5.045999] [drm] 27.000000000 MHz TV ref clk [ 5.046040] [drm] Radeon Display Connectors [ 5.046042] [drm] Connector 0: [ 5.046044] [drm] VGA [ 5.046047] [drm] DDC: 0x60 0x60 0x60 0x60 0x60 0x60 0x60 0x60 [ 5.046049] [drm] Encoders: [ 5.046051] [drm] CRT1: INTERNAL_DAC1 [ 5.046054] [drm] Connector 1: [ 5.046055] [drm] DVI-I [ 5.046057] [drm] HPD1 [ 5.046060] [drm] DDC: 0x64 0x64 0x64 0x64 0x64 0x64 0x64 0x64 [ 5.046062] [drm] Encoders: [ 5.046064] [drm] CRT2: INTERNAL_DAC2 [ 5.046066] [drm] DFP1: INTERNAL_TMDS1 [ 5.046068] [drm] Connector 2: [ 5.046070] [drm] S-video [ 5.046072] [drm] Encoders: [ 5.046074] [drm] TV1: INTERNAL_DAC2 [ 5.198598] [drm] fb mappable at 0xD0040000 [ 5.198604] [drm] vram apper at 0xD0000000 [ 5.198606] [drm] size 3145728 [ 5.198608] [drm] fb depth is 24 [ 5.198610] [drm] pitch is 4096 [ 5.264522] Console: switching to colour frame buffer device 128x48 [ 5.278337] fb0: radeondrmfb frame buffer device [ 5.278339] drm: registered panic notifier [ 5.278345] Slow work thread pool: Starting up [ 5.278435] Slow work thread pool: Ready [ 5.278445] [drm] Initialized radeon 2.5.0 20080528 for 0000:01:00.0 on minor 0 [ 5.437079] forcedeth 0000:00:05.0: ifname eth0, PHY OUI 0x90c3 @ 1, addr 00:17:31:8e:11:eb [ 5.437086] forcedeth 0000:00:05.0: csum timirq lnktim desc-v2 [ 5.437290] pata_amd 0000:00:08.0: version 0.4.1 [ 5.437366] pata_amd 0000:00:08.0: setting latency timer to 64 [ 5.438587] scsi1 : pata_amd [ 5.438816] scsi2 : pata_amd [ 5.438876] ata1: PATA max UDMA/133 cmd 0x1f0 ctl 0x3f6 bmdma 0xffa0 irq 14 [ 5.438880] ata2: PATA max UDMA/133 cmd 0x170 ctl 0x376 bmdma 0xffa8 irq 15 [ 5.439089] sata_nv 0000:00:0a.0: version 3.5 [ 5.439105] sata_nv 0000:00:0a.0: can't find IRQ for PCI INT A; probably buggy MP table [ 5.439173] sata_nv 0000:00:0a.0: setting latency timer to 64 [ 5.439627] scsi3 : sata_nv [ 5.439820] scsi4 : sata_nv [ 5.439879] ata3: SATA max UDMA/133 cmd 0x9f0 ctl 0xbf0 bmdma 0xc800 irq 10 [ 5.439884] ata4: SATA max UDMA/133 cmd 0x970 ctl 0xb70 bmdma 0xc808 irq 10 [ 5.440094] agpgart-amd64 0000:00:00.0: AGP bridge [10de/00e1] [ 5.440103] agpgart-amd64 0000:00:00.0: aperture size 4096 MB is not right, using settings from NB [ 5.440112] agpgart-amd64 0000:00:00.0: setting up Nforce3 AGP [ 5.440118] agpgart-amd64 0000:00:00.0: aperture base > 4G [ 5.440160] agpgart-amd64 0000:00:00.0: AGP bridge [10de/00e1] [ 5.440166] agpgart-amd64 0000:00:00.0: aperture size 4096 MB is not right, using settings from NB [ 5.440170] agpgart-amd64 0000:00:00.0: setting up Nforce3 AGP [ 5.440174] agpgart-amd64 0000:00:00.0: aperture base > 4G [ 5.600628] ata1.00: ATA-7: Maxtor 6E040L0, NAR61590, max UDMA/133 [ 5.600634] ata1.00: 80293248 sectors, multi 16: LBA [ 5.600663] ata1: nv_mode_filter: 0x7f39f&0x7f3ff->0x7f39f, BIOS=0x7f000 (0xc700c000) ACPI=0x0 [ 5.616638] ata1.00: configured for UDMA/133 [ 5.616829] scsi 1:0:0:0: Direct-Access ATA Maxtor 6E040L0 NAR6 PQ: 0 ANSI: 5 [ 5.617084] sd 1:0:0:0: Attached scsi generic sg0 type 0 [ 5.617572] sd 1:0:0:0: [sda] 80293248 512-byte logical blocks: (41.1 GB/38.2 GiB) [ 5.617638] sd 1:0:0:0: [sda] Write Protect is off [ 5.617642] sd 1:0:0:0: [sda] Mode Sense: 00 3a 00 00 [ 5.617671] sd 1:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA [ 5.617872] sda: sda1 sda2 < sda5 sda6 > [ 5.679565] sd 1:0:0:0: [sda] Attached SCSI disk [ 5.752243] ata3: SATA link down (SStatus 0 SControl 300) [ 5.780549] ata2.00: ATAPI: HL-DT-STDVD-RAM GH22NP20, 2.00, max UDMA/66 [ 5.780581] ata2: nv_mode_filter: 0x1f39f&0x73ff->0x739f, BIOS=0x7000 (0xc700c000) ACPI=0x0 [ 5.796511] ata2.00: configured for UDMA/33 [ 5.798502] scsi 2:0:0:0: CD-ROM HL-DT-ST DVD-RAM GH22NP20 2.00 PQ: 0 ANSI: 5 [ 5.802301] sr0: scsi3-mmc drive: 48x/48x writer dvd-ram cd/rw xa/form2 cdda tray [ 5.802308] Uniform CD-ROM driver Revision: 3.20 [ 5.802524] sr 2:0:0:0: Attached scsi CD-ROM sr0 [ 5.802628] sr 2:0:0:0: Attached scsi generic sg1 type 5 [ 5.937180] scsi 0:0:0:0: Direct-Access JetFlash Transcend 2GB 8.07 PQ: 0 ANSI: 2 [ 5.938857] sd 0:0:0:0: Attached scsi generic sg2 type 0 [ 5.939917] sd 0:0:0:0: [sdb] 3944448 512-byte logical blocks: (2.01 GB/1.88 GiB) [ 5.940404] sd 0:0:0:0: [sdb] Write Protect is off [ 5.940410] sd 0:0:0:0: [sdb] Mode Sense: 03 00 00 00 [ 5.940414] sd 0:0:0:0: [sdb] Assuming drive cache: write through [ 5.944674] sd 0:0:0:0: [sdb] Assuming drive cache: write through [ 5.944693] sdb: sdb1 [ 6.051282] sd 0:0:0:0: [sdb] Assuming drive cache: write through [ 6.051290] sd 0:0:0:0: [sdb] Attached SCSI removable disk [ 6.112258] ata4: SATA link down (SStatus 0 SControl 300) [ 7.337374] Btrfs loaded [ 7.348059] xor: automatically using best checksumming function: pIII_sse [ 7.364286] pIII_sse : 4837.000 MB/sec [ 7.364290] xor: using function: pIII_sse (4837.000 MB/sec) [ 7.369366] device-mapper: dm-raid45: initialized v0.2594b [ 7.739753] EXT3-fs: barriers not enabled [ 7.754793] kjournald starting. Commit interval 5 seconds [ 7.754839] EXT3-fs (sda1): mounted filesystem with ordered data mode [ 7.880061] EXT3-fs: barriers not enabled [ 7.890915] kjournald starting. Commit interval 5 seconds [ 7.890949] EXT3-fs (sda5): mounted filesystem with ordered data mode [ 8.074087] aufs 2-standalone.tree-35-rcN-20100705 [ 8.105737] squashfs: version 4.0 (2009/01/31) Phillip Lougher [ 10.037160] EXT3-fs: barriers not enabled [ 10.037798] kjournald starting. Commit interval 5 seconds [ 10.037853] EXT3-fs (loop1): using internal journal [ 10.037860] EXT3-fs (loop1): mounted filesystem with ordered data mode [ 10.043045] aufs test_add:252:exe[590]: uid/gid/perm //filesystem.squashfs 0/0/0755, 1000/1000/0755 [ 23.643009] BUG: unable to handle kernel paging request at f8147540 [ 23.643019] IP: [] driver_register+0xfe/0x130 [ 23.643031] *pde = 3716d067 *pte = 00000000 [ 23.643037] Oops: 0000 [#1] SMP [ 23.643041] last sysfs file: /sys/devices/pci0000:00/0000:00:18.3/uevent [ 23.643046] Modules linked in: amd64_agp(+) squashfs aufs nls_iso8859_1 nls_cp437 vfat fat dm_raid45 xor btrfs zlib_deflate crc32c libcrc32c radeon ttm drm_kms_helper drm usb_storage forcedeth pata_amd sata_nv i2c_algo_bit agpgart [ 23.643067] [ 23.643073] Pid: 1879, comm: modprobe Not tainted 2.6.35-22-generic #33-Ubuntu 'K8N'/K8N [ 23.643077] EIP: 0060:[] EFLAGS: 00010282 CPU: 0 [ 23.643081] EIP is at driver_register+0xfe/0x130 [ 23.643085] EAX: f8147510 EBX: 00000000 ECX: f8006419 EDX: f681f780 [ 23.643088] ESI: f8006510 EDI: c036c8a0 EBP: f6899f34 ESP: f6899f18 [ 23.643092] DS: 007b ES: 007b FS: 00d8 GS: 00e0 SS: 0068 [ 23.643095] Process modprobe (pid: 1879, ti=f6898000 task=f642bf70 task.ti=f6898000) [ 23.643098] Stack: [ 23.643100] 00000001 f8006780 00000000 c07d2ae0 f80064e0 f8006780 f8006510 f6899f48 [ 23.643108] <0> c036cba5 b78ba000 f8006780 00000000 f6899f54 f800902c 00000000 f6899f5c [ 23.643115] <0> f80090a8 f6899f88 c0101132 f8006780 c07d0f60 b78ba000 f8006780 08b41228 [ 23.643123] Call Trace: [ 23.643132] [] ? __pci_register_driver+0x45/0xb0 [ 23.643139] [] ? agp_amd64_init+0x2c/0xa0 [amd64_agp] [ 23.643145] [] ? agp_amd64_mod_init+0x8/0xa [amd64_agp] [ 23.643151] [] ? do_one_initcall+0x32/0x1a0 [ 23.643156] [] ? agp_amd64_mod_init+0x0/0xa [amd64_agp] [ 23.643164] [] ? sys_init_module+0x9b/0x1e0 [ 23.643172] [] ? sys_write+0x42/0x70 [ 23.643179] [] ? syscall_call+0x7/0xb [ 23.643181] Code: 89 f0 e8 86 ea ff ff 83 c4 10 89 f8 5b 5e 5f 5d c3 8b 06 c7 04 24 2c 6a 76 c0 89 44 24 04 e8 85 59 1c 00 8b 56 04 e9 56 ff ff ff <8b> 40 30 bf f0 ff ff ff e8 d5 11 f5 ff 8b 06 c7 04 24 6c 6a 76 [ 23.643219] EIP: [] driver_register+0xfe/0x130 SS:ESP 0068:f6899f18 [ 23.643225] CR2: 00000000f8147540 [ 23.643230] ---[ end trace 68a73a3e549ff0a4 ]--- [ 29.700287] Adding 1277948k swap on /dev/sda6. Priority:-1 extents:1 across:1277948k [ 30.047414] udev[2268]: starting version 163 [ 30.696439] shpchp: Standard Hot Plug PCI Controller Driver version: 0.4 [ 30.710049] i2c i2c-2: nForce2 SMBus adapter at 0x5000 [ 30.710077] i2c i2c-3: nForce2 SMBus adapter at 0x5040 [ 31.173536] psmouse serio1: ID: 10 00 64 [ 31.766983] input: ImExPS/2 Generic Explorer Mouse as /devices/platform/i8042/serio1/input/input1 [ 32.279402] Intel ICH 0000:00:06.0: can't find IRQ for PCI INT A; probably buggy MP table [ 32.279457] Intel ICH 0000:00:06.0: setting latency timer to 64 [ 32.613305] intel8x0_measure_ac97_clock: measured 52558 usecs (2584 samples) [ 32.613312] intel8x0: clocking to 46863 Bug: 662299 [ 0.000000] Initializing cgroup subsys cpuset [ 0.000000] Initializing cgroup subsys cpu [ 0.000000] Linux version 2.6.35-22-generic (buildd@crested) (gcc version 4.4.5 (Ubuntu/Linaro 4.4.4-14ubuntu5) ) #34-Ubuntu SMP Sun Oct 10 09:26:05 UTC 2010 (Ubuntu 2.6.35-22.34-generic 2.6.35.4) [ 0.000000] Command line: BOOT_IMAGE=/vmlinuz-2.6.35-22-generic root=UUID=54d9340b-4244-479b-88c9-d4d8dace8318 ro quiet splash [ 0.000000] BIOS-provided physical RAM map: [ 0.000000] BIOS-e820: 0000000000000000 - 000000000009f800 (usable) [ 0.000000] BIOS-e820: 000000000009f800 - 00000000000a0000 (reserved) [ 0.000000] BIOS-e820: 00000000000f0000 - 0000000000100000 (reserved) [ 0.000000] BIOS-e820: 0000000000100000 - 000000001dff0000 (usable) [ 0.000000] BIOS-e820: 000000001dff0000 - 000000001dff3000 (ACPI NVS) [ 0.000000] BIOS-e820: 000000001dff3000 - 000000001e000000 (ACPI data) [ 0.000000] BIOS-e820: 00000000b0000000 - 00000000c0000000 (reserved) [ 0.000000] BIOS-e820: 00000000fec00000 - 0000000100000000 (reserved) [ 0.000000] NX (Execute Disable) protection: active [ 0.000000] DMI 2.4 present. [ 0.000000] e820 update range: 0000000000000000 - 0000000000001000 (usable) ==> (reserved) [ 0.000000] e820 remove range: 00000000000a0000 - 0000000000100000 (usable) [ 0.000000] AGP bridge at 00:00:00 [ 0.000000] Aperture from AGP @ d0000000 old size 32 MB [ 0.000000] Aperture from AGP @ d0000000 size 128 MB (APSIZE f20) [ 0.000000] last_pfn = 0x1dff0 max_arch_pfn = 0x400000000 [ 0.000000] MTRR default type: uncachable [ 0.000000] MTRR fixed ranges enabled: [ 0.000000] 00000-9FFFF write-back [ 0.000000] A0000-BFFFF uncachable [ 0.000000] C0000-C7FFF write-protect [ 0.000000] C8000-CBFFF uncachable [ 0.000000] CC000-D3FFF write-back [ 0.000000] D4000-FFFFF uncachable [ 0.000000] MTRR variable ranges enabled: [ 0.000000] 0 base 0000000000 mask FFE0000000 write-back [ 0.000000] 1 base 001E000000 mask FFFE000000 uncachable [ 0.000000] 2 base 00D0000000 mask FFF8000000 write-combining [ 0.000000] 3 disabled [ 0.000000] 4 disabled [ 0.000000] 5 disabled [ 0.000000] 6 disabled [ 0.000000] 7 disabled [ 0.000000] x86 PAT enabled: cpu 0, old 0x7040600070406, new 0x7010600070106 [ 0.000000] e820 update range: 0000000000001000 - 0000000000010000 (usable) ==> (reserved) [ 0.000000] Scanning 1 areas for low memory corruption [ 0.000000] modified physical RAM map: [ 0.000000] modified: 0000000000000000 - 0000000000010000 (reserved) [ 0.000000] modified: 0000000000010000 - 000000000009f800 (usable) [ 0.000000] modified: 000000000009f800 - 00000000000a0000 (reserved) [ 0.000000] modified: 00000000000f0000 - 0000000000100000 (reserved) [ 0.000000] modified: 0000000000100000 - 000000001dff0000 (usable) [ 0.000000] modified: 000000001dff0000 - 000000001dff3000 (ACPI NVS) [ 0.000000] modified: 000000001dff3000 - 000000001e000000 (ACPI data) [ 0.000000] modified: 00000000b0000000 - 00000000c0000000 (reserved) [ 0.000000] modified: 00000000fec00000 - 0000000100000000 (reserved) [ 0.000000] initial memory mapped : 0 - 20000000 [ 0.000000] found SMP MP-table at [ffff8800000f5ab0] f5ab0 [ 0.000000] init_memory_mapping: 0000000000000000-000000001dff0000 [ 0.000000] 0000000000 - 001de00000 page 2M [ 0.000000] 001de00000 - 001dff0000 page 4k [ 0.000000] kernel direct mapping tables up to 1dff0000 @ 16000-19000 [ 0.000000] RAMDISK: 15db7000 - 16834000 [ 0.000000] ACPI: RSDP 00000000000f73a0 00014 (v00 HPQOEM) [ 0.000000] ACPI: RSDT 000000001dff3000 00038 (v01 HPQOEM SLIC-BPC 42302E31 AWRD 01010101) [ 0.000000] ACPI: FACP 000000001dff3040 00074 (v01 HPQOEM SLIC-BPC 42302E31 AWRD 01010101) [ 0.000000] ACPI: DSDT 000000001dff30c0 0654E (v01 HPQOEM AWRDACPI 00001000 MSFT 0100000C) [ 0.000000] ACPI: FACS 000000001dff0000 00040 [ 0.000000] ACPI: SSDT 000000001dff96c0 00115 (v01 PTLTD POWERNOW 00000001 LTP 00000001) [ 0.000000] ACPI: SLIC 000000001dff9800 00176 (v01 HPQOEM SLIC-BPC 42302E31 AWRD 01010101) [ 0.000000] ACPI: MCFG 000000001dff9980 0003C (v01 HPQOEM SLIC-BPC 42302E31 AWRD 01010101) [ 0.000000] ACPI: APIC 000000001dff9640 00074 (v01 HPQOEM SLIC-BPC 42302E31 AWRD 01010101) [ 0.000000] ACPI: Local APIC address 0xfee00000 [ 0.000000] Scanning NUMA topology in Northbridge 24 [ 0.000000] No NUMA configuration found [ 0.000000] Faking a node at 0000000000000000-000000001dff0000 [ 0.000000] Initmem setup node 0 0000000000000000-000000001dff0000 [ 0.000000] NODE_DATA [0000000001d18140 - 0000000001d1d13f] [ 0.000000] [ffffea0000000000-ffffea00007fffff] PMD -> [ffff880002600000-ffff880002dfffff] on node 0 [ 0.000000] Zone PFN ranges: [ 0.000000] DMA 0x00000010 -> 0x00001000 [ 0.000000] DMA32 0x00001000 -> 0x00100000 [ 0.000000] Normal empty [ 0.000000] Movable zone start PFN for each node [ 0.000000] early_node_map[2] active PFN ranges [ 0.000000] 0: 0x00000010 -> 0x0000009f [ 0.000000] 0: 0x00000100 -> 0x0001dff0 [ 0.000000] On node 0 totalpages: 122751 [ 0.000000] DMA zone: 56 pages used for memmap [ 0.000000] DMA zone: 0 pages reserved [ 0.000000] DMA zone: 3927 pages, LIFO batch:0 [ 0.000000] DMA32 zone: 1624 pages used for memmap [ 0.000000] DMA32 zone: 117144 pages, LIFO batch:31 [ 0.000000] Detected use of extended apic ids on hypertransport bus [ 0.000000] ACPI: PM-Timer IO Port: 0x1008 [ 0.000000] ACPI: Local APIC address 0xfee00000 [ 0.000000] ACPI: LAPIC (acpi_id[0x00] lapic_id[0x00] enabled) [ 0.000000] ACPI: LAPIC (acpi_id[0x01] lapic_id[0x01] disabled) [ 0.000000] ACPI: LAPIC_NMI (acpi_id[0x00] dfl dfl lint[0x1]) [ 0.000000] ACPI: LAPIC_NMI (acpi_id[0x01] dfl dfl lint[0x1]) [ 0.000000] ACPI: IOAPIC (id[0x02] address[0xfec00000] gsi_base[0]) [ 0.000000] IOAPIC[0]: apic_id 2, version 3, address 0xfec00000, GSI 0-23 [ 0.000000] ACPI: IOAPIC (id[0x03] address[0xfecc0000] gsi_base[24]) [ 0.000000] IOAPIC[1]: apic_id 3, version 3, address 0xfecc0000, GSI 24-47 [ 0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 0 global_irq 2 dfl dfl) [ 0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 9 global_irq 9 low level) [ 0.000000] ACPI: IRQ0 used by override. [ 0.000000] ACPI: IRQ2 used by override. [ 0.000000] ACPI: IRQ9 used by override. [ 0.000000] Using ACPI (MADT) for SMP configuration information [ 0.000000] SMP: Allowing 2 CPUs, 1 hotplug CPUs [ 0.000000] nr_irqs_gsi: 64 [ 0.000000] early_res array is doubled to 64 at [17000 - 177ff] [ 0.000000] PM: Registered nosave memory: 000000000009f000 - 00000000000a0000 [ 0.000000] PM: Registered nosave memory: 00000000000a0000 - 00000000000f0000 [ 0.000000] PM: Registered nosave memory: 00000000000f0000 - 0000000000100000 [ 0.000000] Allocating PCI resources starting at 1e000000 (gap: 1e000000:92000000) [ 0.000000] Booting paravirtualized kernel on bare hardware [ 0.000000] setup_percpu: NR_CPUS:64 nr_cpumask_bits:64 nr_cpu_ids:2 nr_node_ids:1 [ 0.000000] PERCPU: Embedded 30 pages/cpu @ffff880001e00000 s91520 r8192 d23168 u1048576 [ 0.000000] pcpu-alloc: s91520 r8192 d23168 u1048576 alloc=1*2097152 [ 0.000000] pcpu-alloc: [0] 0 1 [ 0.000000] Built 1 zonelists in Node order, mobility grouping on. Total pages: 121071 [ 0.000000] Policy zone: DMA32 [ 0.000000] Kernel command line: BOOT_IMAGE=/vmlinuz-2.6.35-22-generic root=UUID=54d9340b-4244-479b-88c9-d4d8dace8318 ro quiet splash [ 0.000000] PID hash table entries: 2048 (order: 2, 16384 bytes) [ 0.000000] Checking aperture... [ 0.000000] AGP bridge at 00:00:00 [ 0.000000] Aperture from AGP @ d0000000 old size 32 MB [ 0.000000] Aperture from AGP @ d0000000 size 128 MB (APSIZE f20) [ 0.000000] Node 0: aperture @ d0000000 size 128 MB [ 0.000000] Subtract (44 early reservations) [ 0.000000] #1 [0001000000 - 0001d17114] TEXT DATA BSS [ 0.000000] #2 [0015db7000 - 0016834000] RAMDISK [ 0.000000] #3 [0001d18000 - 0001d1811c] BRK [ 0.000000] #4 [00000f5ac0 - 0000100000] BIOS reserved [ 0.000000] #5 [00000f5ab0 - 00000f5ac0] MP-table mpf [ 0.000000] #6 [000009f800 - 00000f0d00] BIOS reserved [ 0.000000] #7 [00000f1228 - 00000f5ab0] BIOS reserved [ 0.000000] #8 [00000f0d00 - 00000f1228] MP-table mpc [ 0.000000] #9 [0000010000 - 0000012000] TRAMPOLINE [ 0.000000] #10 [0000012000 - 0000016000] ACPI WAKEUP [ 0.000000] #11 [0000016000 - 0000017000] PGTABLE [ 0.000000] #12 [0001d18140 - 0001d1d140] NODE_DATA [ 0.000000] #13 [0001d1d140 - 0001d1e140] BOOTMEM [ 0.000000] #14 [0001d17140 - 0001d171a0] BOOTMEM [ 0.000000] #15 [000251f000 - 0002520000] BOOTMEM [ 0.000000] #16 [0002520000 - 0002521000] BOOTMEM [ 0.000000] #17 [0002600000 - 0002e00000] MEMMAP 0 [ 0.000000] #18 [0001d171c0 - 0001d17340] BOOTMEM [ 0.000000] #19 [0001d1e140 - 0001d21140] BOOTMEM [ 0.000000] #20 [0001d22000 - 0001d23000] BOOTMEM [ 0.000000] #21 [0001d17340 - 0001d173c6] BOOTMEM [ 0.000000] #22 [0001d17400 - 0001d175f8] BOOTMEM [ 0.000000] #23 [0001d17600 - 0001d17668] BOOTMEM [ 0.000000] #24 [0001d17680 - 0001d176e8] BOOTMEM [ 0.000000] #25 [0001d17700 - 0001d17768] BOOTMEM [ 0.000000] #26 [0001d17780 - 0001d177e8] BOOTMEM [ 0.000000] #27 [0001d17800 - 0001d17868] BOOTMEM [ 0.000000] #28 [0001d17880 - 0001d178e8] BOOTMEM [ 0.000000] #29 [0001d17900 - 0001d17968] BOOTMEM [ 0.000000] #30 [0001d17980 - 0001d179e8] BOOTMEM [ 0.000000] #31 [0001d17a00 - 0001d17a20] BOOTMEM [ 0.000000] #32 [0001d17a40 - 0001d17aa5] BOOTMEM [ 0.000000] #33 [0001d17ac0 - 0001d17b25] BOOTMEM [ 0.000000] #34 [0001e00000 - 0001e1e000] BOOTMEM [ 0.000000] #35 [0001f00000 - 0001f1e000] BOOTMEM [ 0.000000] #36 [0001d17b40 - 0001d17b48] BOOTMEM [ 0.000000] #37 [0001d17b80 - 0001d17b88] BOOTMEM [ 0.000000] #38 [0001d17bc0 - 0001d17bc8] BOOTMEM [ 0.000000] #39 [0001d17c00 - 0001d17c10] BOOTMEM [ 0.000000] #40 [0001d17c40 - 0001d17d80] BOOTMEM [ 0.000000] #41 [0001d17d80 - 0001d17de0] BOOTMEM [ 0.000000] #42 [0001d17e00 - 0001d17e60] BOOTMEM [ 0.000000] #43 [0001d23000 - 0001d27000] BOOTMEM [ 0.000000] Memory: 458328k/491456k available (5708k kernel code, 452k absent, 32676k reserved, 5382k data, 908k init) [ 0.000000] SLUB: Genslabs=14, HWalign=64, Order=0-3, MinObjects=0, CPUs=2, Nodes=1 [ 0.000000] Hierarchical RCU implementation. [ 0.000000] RCU dyntick-idle grace-period acceleration is enabled. [ 0.000000] RCU-based detection of stalled CPUs is disabled. [ 0.000000] Verbose stalled-CPUs detection is disabled. [ 0.000000] NR_IRQS:4352 nr_irqs:512 [ 0.000000] spurious 8259A interrupt: IRQ7. [ 0.000000] Console: colour VGA+ 80x25 [ 0.000000] console [tty0] enabled [ 0.000000] allocated 5242880 bytes of page_cgroup [ 0.000000] please try 'cgroup_disable=memory' option if you don't want memory cgroups [ 0.000000] Fast TSC calibration using PIT [ 0.000000] Detected 2210.974 MHz processor. [ 0.010009] Calibrating delay loop (skipped), value calculated using timer frequency.. 4421.94 BogoMIPS (lpj=22109740) [ 0.010014] pid_max: default: 32768 minimum: 301 [ 0.010041] Security Framework initialized [ 0.010063] AppArmor: AppArmor initialized [ 0.010065] Yama: becoming mindful. [ 0.010182] Dentry cache hash table entries: 65536 (order: 7, 524288 bytes) [ 0.010543] Inode-cache hash table entries: 32768 (order: 6, 262144 bytes) [ 0.010726] Mount-cache hash table entries: 256 [ 0.010874] Initializing cgroup subsys ns [ 0.010879] Initializing cgroup subsys cpuacct [ 0.010883] Initializing cgroup subsys memory [ 0.010894] Initializing cgroup subsys devices [ 0.010897] Initializing cgroup subsys freezer [ 0.010899] Initializing cgroup subsys net_cls [ 0.010926] tseg: 0000000000 [ 0.010943] mce: CPU supports 5 MCE banks [ 0.010957] using C1E aware idle routine [ 0.010959] Performance Events: AMD PMU driver. [ 0.010964] ... version: 0 [ 0.010966] ... bit width: 48 [ 0.010967] ... generic registers: 4 [ 0.010969] ... value mask: 0000ffffffffffff [ 0.010971] ... max period: 00007fffffffffff [ 0.010973] ... fixed-purpose events: 0 [ 0.010974] ... event mask: 000000000000000f [ 0.011007] SMP alternatives: switching to UP code [ 0.024986] ACPI: Core revision 20100428 [ 0.040025] ftrace: converting mcount calls to 0f 1f 44 00 00 [ 0.040036] ftrace: allocating 22680 entries in 89 pages [ 0.056405] Setting APIC routing to flat [ 0.056805] ..TIMER: vector=0x30 apic1=0 pin1=2 apic2=0 pin2=0 [ 0.156818] CPU0: AMD Sempron(tm) Processor 3800+ stepping 02 [ 0.160000] Brought up 1 CPUs [ 0.160000] Total of 1 processors activated (4421.94 BogoMIPS). [ 0.160000] devtmpfs: initialized [ 0.160000] regulator: core version 0.5 [ 0.160000] Time: 17:30:59 Date: 10/17/10 [ 0.160000] NET: Registered protocol family 16 [ 0.160000] node 0 link 0: io port [1000, fffff] [ 0.160000] TOM: 0000000020000000 aka 512M [ 0.160000] node 0 link 0: mmio [20000000, bfffffff] [ 0.160000] node 0 link 0: mmio [c0000000, d7ffffff] [ 0.160000] node 0 link 0: mmio [d8000000, d8ffffff] [ 0.160000] node 0 link 0: mmio [d9000000, ff70ffff] [ 0.160000] node 0 link 0: mmio [a0000, bffff] [ 0.160000] bus: [00, ff] on node 0 link 0 [ 0.160000] bus: 00 index 0 [io 0x0000-0xffff] [ 0.160000] bus: 00 index 1 [mem 0x20000000-0xfcffffffff] [ 0.160000] bus: 00 index 2 [mem 0x000a0000-0x000bffff] [ 0.160000] ACPI: bus type pci registered [ 0.160000] PCI: MMCONFIG for domain 0000 [bus 00-ff] at [mem 0xb0000000-0xbfffffff] (base 0xb0000000) [ 0.160000] PCI: MMCONFIG at [mem 0xb0000000-0xbfffffff] reserved in E820 [ 0.169182] PCI: Using configuration type 1 for base access [ 0.170008] bio: create slab at 0 [ 0.171727] ACPI: EC: Look up EC in DSDT [ 0.179519] ACPI: Interpreter enabled [ 0.179524] ACPI: (supports S0 S3 S4 S5) [ 0.179549] ACPI: Using IOAPIC for interrupt routing [ 0.188128] ACPI: No dock devices found. [ 0.188134] PCI: Ignoring host bridge windows from ACPI; if necessary, use "pci=use_crs" and report a bug [ 0.188590] ACPI: PCI Root Bridge [PCI0] (domain 0000 [bus 00-7f]) [ 0.188991] pci_root PNP0A08:00: host bridge window [io 0x0000-0x0cf7] (ignored) [ 0.188993] pci_root PNP0A08:00: host bridge window [io 0x0d00-0xffff] (ignored) [ 0.188996] pci_root PNP0A08:00: host bridge window [mem 0x000a0000-0x000bffff] (ignored) [ 0.188999] pci_root PNP0A08:00: host bridge window [mem 0x000c0000-0x000dffff] (ignored) [ 0.189001] pci_root PNP0A08:00: host bridge window [mem 0x20000000-0xda0fffff] (ignored) [ 0.189004] pci_root PNP0A08:00: host bridge window [mem 0xda200000-0xfebfffff] (ignored) [ 0.189034] pci 0000:00:00.0: reg 10: [mem 0xd0000000-0xd7ffffff pref] [ 0.189475] pci 0000:00:02.0: PME# supported from D0 D3hot D3cold [ 0.189479] pci 0000:00:02.0: PME# disabled [ 0.189552] pci 0000:00:03.0: PME# supported from D0 D3hot D3cold [ 0.189556] pci 0000:00:03.0: PME# disabled [ 0.189607] pci 0000:00:0f.0: reg 10: [io 0xc800-0xc807] [ 0.189613] pci 0000:00:0f.0: reg 14: [io 0xa000-0xa003] [ 0.189620] pci 0000:00:0f.0: reg 18: [io 0xa400-0xa407] [ 0.189626] pci 0000:00:0f.0: reg 1c: [io 0xa800-0xa803] [ 0.189632] pci 0000:00:0f.0: reg 20: [io 0xac00-0xac0f] [ 0.189638] pci 0000:00:0f.0: reg 24: [io 0xb000-0xb0ff] [ 0.189702] pci 0000:00:0f.1: reg 20: [io 0xb400-0xb40f] [ 0.189776] pci 0000:00:10.0: reg 20: [io 0xb800-0xb81f] [ 0.189800] pci 0000:00:10.0: supports D1 D2 [ 0.189802] pci 0000:00:10.0: PME# supported from D0 D1 D2 D3hot D3cold [ 0.189806] pci 0000:00:10.0: PME# disabled [ 0.189847] pci 0000:00:10.1: reg 20: [io 0xbc00-0xbc1f] [ 0.189872] pci 0000:00:10.1: supports D1 D2 [ 0.189874] pci 0000:00:10.1: PME# supported from D0 D1 D2 D3hot D3cold [ 0.189878] pci 0000:00:10.1: PME# disabled [ 0.189919] pci 0000:00:10.2: reg 20: [io 0xc000-0xc01f] [ 0.189943] pci 0000:00:10.2: supports D1 D2 [ 0.189945] pci 0000:00:10.2: PME# supported from D0 D1 D2 D3hot D3cold [ 0.189949] pci 0000:00:10.2: PME# disabled [ 0.190008] pci 0000:00:10.3: reg 20: [io 0xc400-0xc41f] [ 0.190033] pci 0000:00:10.3: supports D1 D2 [ 0.190035] pci 0000:00:10.3: PME# supported from D0 D1 D2 D3hot D3cold [ 0.190039] pci 0000:00:10.3: PME# disabled [ 0.190065] pci 0000:00:10.4: reg 10: [mem 0xda200000-0xda2000ff] [ 0.190105] pci 0000:00:10.4: supports D1 D2 [ 0.190107] pci 0000:00:10.4: PME# supported from D0 D1 D2 D3hot D3cold [ 0.190111] pci 0000:00:10.4: PME# disabled [ 0.190430] PCI: peer root bus 00 res updated from pci conf [ 0.190475] pci 0000:01:00.0: reg 10: [mem 0xc0000000-0xcfffffff pref] [ 0.190480] pci 0000:01:00.0: reg 14: [mem 0xd8000000-0xd8ffffff] [ 0.190499] pci 0000:01:00.0: reg 30: [mem 0x00000000-0x0000ffff pref] [ 0.190516] pci 0000:01:00.0: supports D1 D2 [ 0.190552] pci 0000:00:01.0: PCI bridge to [bus 01-01] [ 0.190556] pci 0000:00:01.0: bridge window [io 0xf000-0x0000] (disabled) [ 0.190560] pci 0000:00:01.0: bridge window [mem 0xd8000000-0xd9ffffff] [ 0.190564] pci 0000:00:01.0: bridge window [mem 0xc0000000-0xcfffffff pref] [ 0.190602] pci 0000:00:02.0: PCI bridge to [bus 02-02] [ 0.190606] pci 0000:00:02.0: bridge window [io 0x8000-0x8fff] [ 0.190610] pci 0000:00:02.0: bridge window [mem 0xfff00000-0x000fffff] (disabled) [ 0.190616] pci 0000:00:02.0: bridge window [mem 0xfff00000-0x000fffff pref] (disabled) [ 0.190661] pci 0000:00:03.0: PCI bridge to [bus 03-03] [ 0.190666] pci 0000:00:03.0: bridge window [io 0x7000-0x7fff] [ 0.190670] pci 0000:00:03.0: bridge window [mem 0xfff00000-0x000fffff] (disabled) [ 0.190676] pci 0000:00:03.0: bridge window [mem 0xfff00000-0x000fffff pref] (disabled) [ 0.190730] pci 0000:04:04.0: reg 10: [mem 0xda000000-0xda00ffff] [ 0.190736] pci 0000:04:04.0: reg 14: [io 0x9000-0x9007] [ 0.190771] pci 0000:04:04.0: PME# supported from D3hot D3cold [ 0.190775] pci 0000:04:04.0: PME# disabled [ 0.190803] pci 0000:04:06.0: reg 10: [io 0x9400-0x94ff] [ 0.190809] pci 0000:04:06.0: reg 14: [mem 0xda010000-0xda0100ff] [ 0.190846] pci 0000:04:06.0: supports D1 D2 [ 0.190848] pci 0000:04:06.0: PME# supported from D1 D2 D3hot D3cold [ 0.190852] pci 0000:04:06.0: PME# disabled [ 0.190886] pci 0000:00:13.1: PCI bridge to [bus 04-04] (subtractive decode) [ 0.190890] pci 0000:00:13.1: bridge window [io 0x9000-0x9fff] [ 0.190894] pci 0000:00:13.1: bridge window [mem 0xda000000-0xda0fffff] [ 0.190900] pci 0000:00:13.1: bridge window [mem 0xfff00000-0x000fffff pref] (disabled) [ 0.190902] pci 0000:00:13.1: bridge window [io 0x0000-0xffff] (subtractive decode) [ 0.190905] pci 0000:00:13.1: bridge window [mem 0x20000000-0xfcffffffff] (subtractive decode) [ 0.190907] pci 0000:00:13.1: bridge window [mem 0x000a0000-0x000bffff] (subtractive decode) [ 0.190931] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0._PRT] [ 0.191265] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PEXG._PRT] [ 0.191394] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PEX0._PRT] [ 0.191519] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.P2PB._PRT] [ 0.260538] ACPI: PCI Root Bridge [PCI1] (domain 0000 [bus 80-ff]) [ 0.260786] pci_root PNP0A08:01: host bridge window [io 0x0000-0x0cf7] (ignored) [ 0.260788] pci_root PNP0A08:01: host bridge window [io 0x0d00-0xffff] (ignored) [ 0.260791] pci_root PNP0A08:01: host bridge window [mem 0x000a0000-0x000bffff] (ignored) [ 0.260794] pci_root PNP0A08:01: host bridge window [mem 0xda100000-0xda1fffff] (ignored) [ 0.260823] pci 0000:80:01.0: reg 10: [mem 0xda100000-0xda103fff 64bit] [ 0.260863] pci 0000:80:01.0: PME# supported from D0 D3hot D3cold [ 0.260867] pci 0000:80:01.0: PME# disabled [ 0.260914] ACPI: PCI Interrupt Routing Table [\_SB_.PCI1._PRT] [ 0.261589] ACPI: PCI Interrupt Link [LNKA] (IRQs 3 4 6 7 10 11 12) *5 [ 0.261782] ACPI: PCI Interrupt Link [LNKB] (IRQs 3 4 6 7 10 *11 12) [ 0.261978] ACPI: PCI Interrupt Link [LNKC] (IRQs 3 4 6 7 10 *11 12) [ 0.262173] ACPI: PCI Interrupt Link [LNKD] (IRQs 3 4 6 7 *10 11 12) [ 0.262338] ACPI: PCI Interrupt Link [LNKE] (IRQs 3 4 6 7 10 11 12) *0, disabled. [ 0.262498] ACPI: PCI Interrupt Link [LNKF] (IRQs 3 4 6 7 10 11 12) *0, disabled. [ 0.262656] ACPI: PCI Interrupt Link [LNK0] (IRQs 3 4 6 7 10 11 12) *0, disabled. [ 0.262836] ACPI: PCI Interrupt Link [LNK1] (IRQs *3 4 6 7 10 11 12) [ 0.262888] HEST: Table is not found! [ 0.262988] vgaarb: device added: PCI:0000:01:00.0,decodes=io+mem,owns=io+mem,locks=none [ 0.262991] vgaarb: loaded [ 0.263136] SCSI subsystem initialized [ 0.263213] libata version 3.00 loaded. [ 0.263264] usbcore: registered new interface driver usbfs [ 0.263278] usbcore: registered new interface driver hub [ 0.263302] usbcore: registered new device driver usb [ 0.263429] ACPI: WMI: Mapper loaded [ 0.263432] PCI: Using ACPI for IRQ routing [ 0.263435] PCI: pci_cache_line_size set to 64 bytes [ 0.263447] pci 0000:00:00.0: address space collision: [mem 0xd0000000-0xd7ffffff pref] conflicts with GART [mem 0xd0000000-0xd7ffffff] [ 0.263502] pci 0000:80:01.0: address space collision: [mem 0xda100000-0xda103fff 64bit] conflicts with PCI Bus #00 [mem 0x20000000-0xfcffffffff] [ 0.263547] reserve RAM buffer: 000000000009f800 - 000000000009ffff [ 0.263549] reserve RAM buffer: 000000001dff0000 - 000000001fffffff [ 0.263652] NetLabel: Initializing [ 0.263654] NetLabel: domain hash size = 128 [ 0.263656] NetLabel: protocols = UNLABELED CIPSOv4 [ 0.263669] NetLabel: unlabeled traffic allowed by default [ 0.272940] AppArmor: AppArmor Filesystem Enabled [ 0.272962] pnp: PnP ACPI init [ 0.272985] ACPI: bus type pnp registered [ 0.277485] pnp 00:0f: disabling [mem 0x000cc000-0x000d3fff] because it overlaps 0000:00:00.0 BAR 0 [mem 0x00000000-0x07ffffff pref] [ 0.277490] pnp 00:0f: disabling [mem 0x000d5000-0x000d7fff] because it overlaps 0000:00:00.0 BAR 0 [mem 0x00000000-0x07ffffff pref] [ 0.277495] pnp 00:0f: disabling [mem 0x000f0000-0x000fbfff] because it overlaps 0000:00:00.0 BAR 0 [mem 0x00000000-0x07ffffff pref] [ 0.277498] pnp 00:0f: disabling [mem 0x000fc000-0x000fffff] because it overlaps 0000:00:00.0 BAR 0 [mem 0x00000000-0x07ffffff pref] [ 0.277502] pnp 00:0f: disabling [mem 0x00000000-0x0009ffff] because it overlaps 0000:00:00.0 BAR 0 [mem 0x00000000-0x07ffffff pref] [ 0.277506] pnp 00:0f: disabling [mem 0x00100000-0x1dfeffff] because it overlaps 0000:00:00.0 BAR 0 [mem 0x00000000-0x07ffffff pref] [ 0.277575] pnp: PnP ACPI: found 16 devices [ 0.277577] ACPI: ACPI bus type pnp unregistered [ 0.277589] system 00:01: [io 0x1000-0x107f] has been reserved [ 0.277592] system 00:01: [io 0x1400-0x140f] has been reserved [ 0.277598] system 00:02: [io 0x04d0-0x04d1] has been reserved [ 0.277601] system 00:02: [io 0x0800-0x087f] has been reserved [ 0.277603] system 00:02: [io 0x0294-0x0297] has been reserved [ 0.277616] system 00:0c: [mem 0xf0000000-0xf0000fff] has been reserved [ 0.277621] system 00:0d: [mem 0xb0000000-0xbfffffff] has been reserved [ 0.277626] system 00:0f: [mem 0x1dff0000-0x1dffffff] could not be reserved [ 0.277629] system 00:0f: [mem 0xffff0000-0xffffffff] has been reserved [ 0.277632] system 00:0f: [mem 0x1e000000-0x1fffffff] could not be reserved [ 0.277635] system 00:0f: [mem 0xfec00000-0xfec00fff] could not be reserved [ 0.277638] system 00:0f: [mem 0xfee00000-0xfee00fff] has been reserved [ 0.277641] system 00:0f: [mem 0xfff80000-0xfffeffff] has been reserved [ 0.283523] Switching to clocksource acpi_pm [ 0.283602] pci 0000:00:02.0: BAR 14: assigned [mem 0x20000000-0x201fffff] [ 0.283606] pci 0000:00:02.0: BAR 15: assigned [mem 0x20200000-0x203fffff 64bit pref] [ 0.283609] pci 0000:00:03.0: BAR 14: assigned [mem 0x20400000-0x205fffff] [ 0.283612] pci 0000:00:03.0: BAR 15: assigned [mem 0x20600000-0x207fffff 64bit pref] [ 0.283615] pci 0000:01:00.0: BAR 6: assigned [mem 0xd9000000-0xd900ffff pref] [ 0.283619] pci 0000:00:01.0: PCI bridge to [bus 01-01] [ 0.283621] pci 0000:00:01.0: bridge window [io disabled] [ 0.283626] pci 0000:00:01.0: bridge window [mem 0xd8000000-0xd9ffffff] [ 0.283630] pci 0000:00:01.0: bridge window [mem 0xc0000000-0xcfffffff pref] [ 0.283636] pci 0000:00:02.0: PCI bridge to [bus 02-02] [ 0.283639] pci 0000:00:02.0: bridge window [io 0x8000-0x8fff] [ 0.283644] pci 0000:00:02.0: bridge window [mem 0x20000000-0x201fffff] [ 0.283648] pci 0000:00:02.0: bridge window [mem 0x20200000-0x203fffff 64bit pref] [ 0.283654] pci 0000:00:03.0: PCI bridge to [bus 03-03] [ 0.283657] pci 0000:00:03.0: bridge window [io 0x7000-0x7fff] [ 0.283662] pci 0000:00:03.0: bridge window [mem 0x20400000-0x205fffff] [ 0.283666] pci 0000:00:03.0: bridge window [mem 0x20600000-0x207fffff 64bit pref] [ 0.283673] pci 0000:00:13.1: PCI bridge to [bus 04-04] [ 0.283676] pci 0000:00:13.1: bridge window [io 0x9000-0x9fff] [ 0.283681] pci 0000:00:13.1: bridge window [mem 0xda000000-0xda0fffff] [ 0.283685] pci 0000:00:13.1: bridge window [mem pref disabled] [ 0.283699] pci 0000:00:01.0: setting latency timer to 64 [ 0.283713] alloc irq_desc for 27 on node 0 [ 0.283715] alloc kstat_irqs on node 0 [ 0.283723] pci 0000:00:02.0: PCI INT A -> GSI 27 (level, low) -> IRQ 27 [ 0.283727] pci 0000:00:02.0: setting latency timer to 64 [ 0.283738] alloc irq_desc for 31 on node 0 [ 0.283740] alloc kstat_irqs on node 0 [ 0.283743] pci 0000:00:03.0: PCI INT A -> GSI 31 (level, low) -> IRQ 31 [ 0.283747] pci 0000:00:03.0: setting latency timer to 64 [ 0.283754] pci 0000:00:13.1: setting latency timer to 64 [ 0.283759] pci 0000:80:01.0: BAR 0: assigned [mem 0xfd00000000-0xfd00003fff 64bit] [ 0.283765] pci 0000:80:01.0: BAR 0: set to [mem 0xfd00000000-0xfd00003fff 64bit] (PCI address [0xfd00000000-0xfd00003fff] [ 0.283769] pci_bus 0000:00: resource 4 [io 0x0000-0xffff] [ 0.283771] pci_bus 0000:00: resource 5 [mem 0x20000000-0xfcffffffff] [ 0.283774] pci_bus 0000:00: resource 6 [mem 0x000a0000-0x000bffff] [ 0.283776] pci_bus 0000:01: resource 1 [mem 0xd8000000-0xd9ffffff] [ 0.283779] pci_bus 0000:01: resource 2 [mem 0xc0000000-0xcfffffff pref] [ 0.283781] pci_bus 0000:02: resource 0 [io 0x8000-0x8fff] [ 0.283783] pci_bus 0000:02: resource 1 [mem 0x20000000-0x201fffff] [ 0.283786] pci_bus 0000:02: resource 2 [mem 0x20200000-0x203fffff 64bit pref] [ 0.283788] pci_bus 0000:03: resource 0 [io 0x7000-0x7fff] [ 0.283790] pci_bus 0000:03: resource 1 [mem 0x20400000-0x205fffff] [ 0.283793] pci_bus 0000:03: resource 2 [mem 0x20600000-0x207fffff 64bit pref] [ 0.283795] pci_bus 0000:04: resource 0 [io 0x9000-0x9fff] [ 0.283797] pci_bus 0000:04: resource 1 [mem 0xda000000-0xda0fffff] [ 0.283800] pci_bus 0000:04: resource 4 [io 0x0000-0xffff] [ 0.283802] pci_bus 0000:04: resource 5 [mem 0x20000000-0xfcffffffff] [ 0.283804] pci_bus 0000:04: resource 6 [mem 0x000a0000-0x000bffff] [ 0.283807] pci_bus 0000:80: resource 0 [io 0x0000-0xffff] [ 0.283809] pci_bus 0000:80: resource 1 [mem 0x00000000-0xffffffffffffffff] [ 0.283851] NET: Registered protocol family 2 [ 0.283925] IP route cache hash table entries: 4096 (order: 3, 32768 bytes) [ 0.284148] TCP established hash table entries: 16384 (order: 6, 262144 bytes) [ 0.284312] TCP bind hash table entries: 16384 (order: 6, 262144 bytes) [ 0.284465] TCP: Hash tables configured (established 16384 bind 16384) [ 0.284468] TCP reno registered [ 0.284474] UDP hash table entries: 256 (order: 1, 8192 bytes) [ 0.284484] UDP-Lite hash table entries: 256 (order: 1, 8192 bytes) [ 0.284579] NET: Registered protocol family 1 [ 0.284592] pci 0000:00:00.0: MSI quirk detected; MSI disabled [ 0.284614] pci 0000:00:01.0: disabling DAC on VIA PCI bridge [ 0.284618] pci 0000:00:02.0: MSI quirk detected; subordinate MSI disabled [ 0.284722] pci 0000:01:00.0: Boot video device [ 0.284732] PCI: CLS 32 bytes, default 64 [ 0.284880] Trying to unpack rootfs image as initramfs... [ 0.289997] agpgart-amd64 0000:00:00.0: AGP bridge [1106/0336] [ 0.290479] agpgart-amd64 0000:00:00.0: AGP aperture is 128M @ 0xd0000000 [ 0.290663] Scanning for low memory corruption every 60 seconds [ 0.290782] audit: initializing netlink socket (disabled) [ 0.290796] type=2000 audit(1287336659.280:1): initialized [ 0.320396] HugeTLB registered 2 MB page size, pre-allocated 0 pages [ 0.321846] VFS: Disk quotas dquot_6.5.2 [ 0.321906] Dquot-cache hash table entries: 512 (order 0, 4096 bytes) [ 0.322535] fuse init (API version 7.14) [ 0.322622] msgmni has been set to 895 [ 0.330688] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 253) [ 0.330692] io scheduler noop registered [ 0.330694] io scheduler deadline registered [ 0.330730] io scheduler cfq registered (default) [ 0.340084] pcieport 0000:00:02.0: setting latency timer to 64 [ 0.340271] pcieport 0000:00:03.0: setting latency timer to 64 [ 0.340406] pci_hotplug: PCI Hot Plug PCI Core version: 0.5 [ 0.340781] pciehp 0000:00:02.0:pcie04: HPC vendor_id 1106 device_id a238 ss_vid 0 ss_did 0 [ 0.340823] pciehp 0000:00:02.0:pcie04: service driver pciehp loaded [ 0.340839] pciehp 0000:00:03.0:pcie04: HPC vendor_id 1106 device_id c238 ss_vid 0 ss_did 0 [ 0.340864] pciehp 0000:00:03.0:pcie04: service driver pciehp loaded [ 0.340871] pciehp: PCI Express Hot Plug Controller Driver version: 0.4 [ 0.341045] input: Power Button as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0C:00/input/input0 [ 0.341052] ACPI: Power Button [PWRB] [ 0.341103] input: Power Button as /devices/LNXSYSTM:00/LNXPWRBN:00/input/input1 [ 0.341106] ACPI: Power Button [PWRF] [ 0.341803] ACPI: acpi_idle registered with cpuidle [ 0.345958] ERST: Table is not found! [ 0.346105] Linux agpgart interface v0.103 [ 0.346110] Serial: 8250/16550 driver, 4 ports, IRQ sharing enabled [ 0.346226] serial8250: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A [ 0.346519] 00:08: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A [ 0.347625] brd: module loaded [ 0.348123] loop: module loaded [ 0.348453] alloc irq_desc for 21 on node 0 [ 0.348456] alloc kstat_irqs on node 0 [ 0.348465] pata_acpi 0000:00:0f.0: PCI INT B -> GSI 21 (level, low) -> IRQ 21 [ 0.348512] pata_acpi 0000:00:0f.0: PCI INT B disabled [ 0.360652] Fixed MDIO Bus: probed [ 0.360689] PPP generic driver version 2.4.2 [ 0.360761] tun: Universal TUN/TAP device driver, 1.6 [ 0.360763] tun: (C) 1999-2004 Max Krasnyansky [ 0.360856] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver [ 0.360929] ehci_hcd 0000:00:10.4: PCI INT C -> GSI 21 (level, low) -> IRQ 21 [ 0.360951] ehci_hcd 0000:00:10.4: EHCI Host Controller [ 0.360987] ehci_hcd 0000:00:10.4: new USB bus registered, assigned bus number 1 [ 0.361044] ehci_hcd 0000:00:10.4: irq 21, io mem 0xda200000 [ 0.380153] ehci_hcd 0000:00:10.4: USB 2.0 started, EHCI 1.00 [ 0.380325] hub 1-0:1.0: USB hub found [ 0.380330] hub 1-0:1.0: 8 ports detected [ 0.380443] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver [ 0.380459] uhci_hcd: USB Universal Host Controller Interface driver [ 0.390269] alloc irq_desc for 20 on node 0 [ 0.390273] alloc kstat_irqs on node 0 [ 0.390284] uhci_hcd 0000:00:10.0: PCI INT A -> GSI 20 (level, low) -> IRQ 20 [ 0.390296] uhci_hcd 0000:00:10.0: UHCI Host Controller [ 0.390388] uhci_hcd 0000:00:10.0: new USB bus registered, assigned bus number 2 [ 0.390430] uhci_hcd 0000:00:10.0: irq 20, io base 0x0000b800 [ 0.390573] hub 2-0:1.0: USB hub found [ 0.390578] hub 2-0:1.0: 2 ports detected [ 0.390719] alloc irq_desc for 22 on node 0 [ 0.390722] alloc kstat_irqs on node 0 [ 0.390728] uhci_hcd 0000:00:10.1: PCI INT B -> GSI 22 (level, low) -> IRQ 22 [ 0.390737] uhci_hcd 0000:00:10.1: UHCI Host Controller [ 0.390786] uhci_hcd 0000:00:10.1: new USB bus registered, assigned bus number 3 [ 0.390821] uhci_hcd 0000:00:10.1: irq 22, io base 0x0000bc00 [ 0.390950] hub 3-0:1.0: USB hub found [ 0.390954] hub 3-0:1.0: 2 ports detected [ 0.391065] uhci_hcd 0000:00:10.2: PCI INT C -> GSI 21 (level, low) -> IRQ 21 [ 0.391076] uhci_hcd 0000:00:10.2: UHCI Host Controller [ 0.391129] uhci_hcd 0000:00:10.2: new USB bus registered, assigned bus number 4 [ 0.391154] uhci_hcd 0000:00:10.2: irq 21, io base 0x0000c000 [ 0.391277] hub 4-0:1.0: USB hub found [ 0.391281] hub 4-0:1.0: 2 ports detected [ 0.391396] alloc irq_desc for 23 on node 0 [ 0.391398] alloc kstat_irqs on node 0 [ 0.391407] uhci_hcd 0000:00:10.3: PCI INT D -> GSI 23 (level, low) -> IRQ 23 [ 0.391415] uhci_hcd 0000:00:10.3: UHCI Host Controller [ 0.391461] uhci_hcd 0000:00:10.3: new USB bus registered, assigned bus number 5 [ 0.391497] uhci_hcd 0000:00:10.3: irq 23, io base 0x0000c400 [ 0.391634] hub 5-0:1.0: USB hub found [ 0.391639] hub 5-0:1.0: 2 ports detected [ 0.391778] PNP: PS/2 Controller [PNP0303:PS2K,PNP0f13:PS2M] at 0x60,0x64 irq 1,12 [ 0.392186] serio: i8042 KBD port at 0x60,0x64 irq 1 [ 0.392191] serio: i8042 AUX port at 0x60,0x64 irq 12 [ 0.392267] mice: PS/2 mouse device common for all mice [ 0.392360] rtc_cmos 00:04: RTC can wake from S4 [ 0.392401] rtc_cmos 00:04: rtc core: registered rtc_cmos as rtc0 [ 0.392435] rtc0: alarms up to one year, y3k, 242 bytes nvram [ 0.392554] device-mapper: uevent: version 1.0.3 [ 0.396255] device-mapper: ioctl: 4.17.0-ioctl (2010-03-05) initialised: dm-devel@redhat.com [ 0.400827] device-mapper: multipath: version 1.1.1 loaded [ 0.400833] device-mapper: multipath round-robin: version 1.0.0 loaded [ 0.409110] cpuidle: using governor ladder [ 0.409114] cpuidle: using governor menu [ 0.409424] TCP cubic registered [ 0.409564] NET: Registered protocol family 10 [ 0.409918] lo: Disabled Privacy Extensions [ 0.410168] NET: Registered protocol family 17 [ 0.410206] powernow-k8: Found 1 AMD Sempron(tm) Processor 3800+ (1 cpu cores) (version 2.20.00) [ 0.410259] powernow-k8: 0 : fid 0xe (2200 MHz), vid 0x6 [ 0.410261] powernow-k8: 1 : fid 0xc (2000 MHz), vid 0x8 [ 0.410263] powernow-k8: 2 : fid 0xa (1800 MHz), vid 0xa [ 0.410265] powernow-k8: 3 : fid 0x2 (1000 MHz), vid 0x12 [ 0.410403] PM: Resume from disk failed. [ 0.410421] registered taskstats version 1 [ 0.410703] Magic number: 14:582:542 [ 0.410812] rtc_cmos 00:04: setting system clock to 2010-10-17 17:31:00 UTC (1287336660) [ 0.410815] BIOS EDD facility v0.16 2004-Jun-25, 0 devices found [ 0.410816] EDD information not available. [ 0.417780] input: AT Translated Set 2 keyboard as /devices/platform/i8042/serio0/input/input2 [ 0.579771] Freeing initrd memory: 10740k freed [ 0.586098] Freeing unused kernel memory: 908k freed [ 0.586636] Write protecting the kernel read-only data: 10240k [ 0.586796] Freeing unused kernel memory: 416k freed [ 0.587171] Freeing unused kernel memory: 1644k freed [ 0.615298] udev[76]: starting version 163 [ 0.785192] sata_via 0000:00:0f.0: version 2.6 [ 0.785211] sata_via 0000:00:0f.0: PCI INT B -> GSI 21 (level, low) -> IRQ 21 [ 0.785256] sata_via 0000:00:0f.0: routed to hard irq line 11 [ 0.822385] scsi0 : sata_via [ 0.850391] FDC 0 is a post-1991 82077 [ 0.875229] scsi1 : sata_via [ 0.876717] ata1: SATA max UDMA/133 cmd 0xc800 ctl 0xa000 bmdma 0xac00 irq 21 [ 0.876721] ata2: SATA max UDMA/133 cmd 0xa400 ctl 0xa800 bmdma 0xac08 irq 21 [ 0.902510] pata_via 0000:00:0f.1: version 0.3.4 [ 0.919847] scsi2 : pata_via [ 0.926937] scsi3 : pata_via [ 0.928552] ata3: PATA max UDMA/133 cmd 0x1f0 ctl 0x3f6 bmdma 0xb400 irq 14 [ 0.928555] ata4: PATA max UDMA/133 cmd 0x170 ctl 0x376 bmdma 0xb408 irq 15 [ 1.080019] ata1: SATA link up 1.5 Gbps (SStatus 113 SControl 300) [ 1.140345] ata3.00: HPA unlocked: 66055244 -> 78242976, native 78242976 [ 1.140350] ata3.00: ATA-6: SAMSUNG SV4002H, QP100-09, max UDMA/100 [ 1.140353] ata3.00: 78242976 sectors, multi 16: LBA [ 1.140381] ata3.01: ATAPI: HL-DT-STDVD-RAM GH22NP20, 1.04, max UDMA/66 [ 1.180353] ata3.00: configured for UDMA/100 [ 1.220327] ata3.01: configured for UDMA/66 [ 1.260200] ata1.00: ATA-7: WDC WD800JD-60LSA5, 10.01E03, max UDMA/100 [ 1.260203] ata1.00: 156301488 sectors, multi 16: LBA48 [ 1.280215] ata1.00: configured for UDMA/100 [ 1.280317] scsi 0:0:0:0: Direct-Access ATA WDC WD800JD-60LS 10.0 PQ: 0 ANSI: 5 [ 1.280485] sd 0:0:0:0: Attached scsi generic sg0 type 0 [ 1.280761] sd 0:0:0:0: [sda] 156301488 512-byte logical blocks: (80.0 GB/74.5 GiB) [ 1.280808] sd 0:0:0:0: [sda] Write Protect is off [ 1.280811] sd 0:0:0:0: [sda] Mode Sense: 00 3a 00 00 [ 1.280831] sd 0:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA [ 1.280969] sda: sda1 sda2 < sda5 sda6 > [ 1.315484] sd 0:0:0:0: [sda] Attached SCSI disk [ 1.490021] ata2: SATA link up 1.5 Gbps (SStatus 113 SControl 300) [ 1.670382] ata2.00: ATA-8: ST3250318AS, CC38, max UDMA/133 [ 1.670385] ata2.00: 488397168 sectors, multi 16: LBA48 NCQ (depth 0/32) [ 1.710390] ata2.00: configured for UDMA/133 [ 1.710471] scsi 1:0:0:0: Direct-Access ATA ST3250318AS CC38 PQ: 0 ANSI: 5 [ 1.710628] sd 1:0:0:0: Attached scsi generic sg1 type 0 [ 1.710862] sd 1:0:0:0: [sdb] 488397168 512-byte logical blocks: (250 GB/232 GiB) [ 1.710907] sd 1:0:0:0: [sdb] Write Protect is off [ 1.710910] sd 1:0:0:0: [sdb] Mode Sense: 00 3a 00 00 [ 1.710930] sd 1:0:0:0: [sdb] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA [ 1.711068] sdb: [ 1.711201] scsi 2:0:0:0: Direct-Access ATA SAMSUNG SV4002H QP10 PQ: 0 ANSI: 5 [ 1.711512] sd 2:0:0:0: Attached scsi generic sg2 type 0 [ 1.712237] sd 2:0:0:0: [sdc] 78242976 512-byte logical blocks: (40.0 GB/37.3 GiB) [ 1.712283] sd 2:0:0:0: [sdc] Write Protect is off [ 1.712286] sd 2:0:0:0: [sdc] Mode Sense: 00 3a 00 00 [ 1.712306] sd 2:0:0:0: [sdc] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA [ 1.712446] sdc: sdc1 sdc2 sdc3 sdc4 < [ 1.723280] scsi 2:0:1:0: CD-ROM HL-DT-ST DVD-RAM GH22NP20 1.04 PQ: 0 ANSI: 5 [ 1.727803] sdb1 sdb2 [ 1.728457] sd 1:0:0:0: [sdb] Attached SCSI disk [ 1.734640] sdc5 sdc6 sdc7 > [ 1.786037] sr0: scsi3-mmc drive: 48x/48x writer dvd-ram cd/rw xa/form2 cdda tray [ 1.786041] Uniform CD-ROM driver Revision: 3.20 [ 1.786466] sr 2:0:1:0: Attached scsi CD-ROM sr0 [ 1.786618] sr 2:0:1:0: Attached scsi generic sg3 type 5 [ 1.786816] sd 2:0:0:0: [sdc] Attached SCSI disk [ 1.962697] 8139cp: 8139cp: 10/100 PCI Ethernet driver v1.3 (Mar 22, 2004) [ 1.966369] 8139cp 0000:04:06.0: This (id 10ec:8139 rev 10) is not an 8139C+ compatible chip, use 8139too [ 1.972087] 8139too: 8139too Fast Ethernet driver 0.9.28 [ 1.977755] alloc irq_desc for 19 on node 0 [ 1.977760] alloc kstat_irqs on node 0 [ 1.977771] 8139too 0000:04:06.0: PCI INT A -> GSI 19 (level, low) -> IRQ 19 [ 1.978719] 8139too 0000:04:06.0: eth0: RealTek RTL8139 at 0x9400, 00:1a:4d:1c:53:54, IRQ 19 [ 3.691696] EXT4-fs (sdc2): mounted filesystem with ordered data mode. Opts: (null) [ 5.192180] Adding 996024k swap on /dev/sdc3. Priority:-1 extents:1 across:996024k [ 5.350720] udev[378]: starting version 163 [ 6.119192] shpchp: Standard Hot Plug PCI Controller Driver version: 0.4 [ 6.510416] k8temp 0000:00:18.3: Temperature readouts might be wrong - check erratum #141 [ 6.622692] lp: driver loaded but no devices found [ 6.641739] EDAC MC: Ver: 2.1.0 Oct 10 2010 [ 6.668061] EDAC amd64_edac: Ver: 3.3.0 Oct 10 2010 [ 6.668147] EDAC amd64: This node reports that Memory ECC is currently disabled, set F3x44[22] (0000:00:18.3). [ 6.668152] EDAC amd64: ECC disabled in the BIOS or no ECC capability, module will not load. [ 6.668153] Either enable ECC checking or force module loading by setting 'ecc_enable_override'. [ 6.668154] (Note that use of the override may cause unknown side effects.) [ 6.668172] amd64_edac: probe of 0000:00:18.2 failed with error -22 [ 6.767396] parport_pc 00:09: reported by Plug and Play ACPI [ 6.767428] parport0: PC-style at 0x378, irq 7 [PCSPP,TRISTATE,EPP] [ 6.840847] lp0: using parport0 (interrupt-driven). [ 6.958072] ppdev: user-space parallel port driver [ 7.178032] type=1400 audit(1287336667.257:2): apparmor="STATUS" operation="profile_load" name="/sbin/dhclient3" pid=643 comm="apparmor_parser" [ 7.178307] type=1400 audit(1287336667.257:3): apparmor="STATUS" operation="profile_load" name="/usr/lib/NetworkManager/nm-dhcp-client.action" pid=643 comm="apparmor_parser" [ 7.178464] type=1400 audit(1287336667.257:4): apparmor="STATUS" operation="profile_load" name="/usr/lib/connman/scripts/dhclient-script" pid=643 comm="apparmor_parser" [ 7.633975] input: ImPS/2 Logitech Wheel Mouse as /devices/platform/i8042/serio1/input/input3 [ 7.673239] alloc irq_desc for 17 on node 0 [ 7.673243] alloc kstat_irqs on node 0 [ 7.673253] HDA Intel 0000:80:01.0: PCI INT A -> GSI 17 (level, low) -> IRQ 17 [ 7.673303] HDA Intel 0000:80:01.0: setting latency timer to 64 [ 7.673315] BUG: unable to handle kernel paging request at ffffc900102b8000 [ 7.673461] IP: [] azx_create+0x36b/0x73d [snd_hda_intel] [ 7.673568] PGD 1d897067 PUD 1d898067 PMD 1693c067 PTE 800000fd00000173 [ 7.673803] Oops: 0009 [#1] SMP [ 7.673943] last sysfs file: /sys/devices/platform/i8042/serio1/input/input3/event3/uevent [ 7.674000] CPU 0 [ 7.674048] Modules linked in: snd_hda_intel(+) snd_hda_codec snd_hwdep snd_pcm snd_seq_midi snd_rawmidi snd_seq_midi_event snd_seq snd_timer snd_seq_device snd soundcore ppdev psmouse serio_raw parport_pc i2c_viapro edac_core lp snd_page_alloc parport k8temp edac_mce_amd shpchp 8139too 8139cp mii floppy pata_via sata_via [ 7.675570] [ 7.675620] Pid: 735, comm: work_for_cpu Not tainted 2.6.35-22-generic #34-Ubuntu 0A88h/HP dx2255 MT(RL028AV) [ 7.675679] RIP: 0010:[] [] azx_create+0x36b/0x73d [snd_hda_intel] [ 7.675786] RSP: 0018:ffff88001a7d7e20 EFLAGS: 00010282 [ 7.675838] RAX: ffffc900102b8000 RBX: ffff88001a7d7e80 RCX: 0000000000000000 [ 7.675894] RDX: 0000000000000000 RSI: 0000000000000286 RDI: 0000000000000286 [ 7.675949] RBP: ffff88001a7d7e70 R08: 0000000000000001 R09: 0000000000000040 [ 7.676004] R10: 0000000000000008 R11: 0000000000000003 R12: ffff88001cf02000 [ 7.676059] R13: ffff880016b0b000 R14: 0000000000000000 R15: ffff880016b0b400 [ 7.676115] FS: 00007fe9f4940700(0000) GS:ffff880001e00000(0000) knlGS:0000000000000000 [ 7.676190] CS: 0010 DS: 0000 ES: 0000 CR0: 000000008005003b [ 7.676252] CR2: ffffc900102b8000 CR3: 000000001c49c000 CR4: 00000000000006f0 [ 7.676317] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 [ 7.676381] DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400 [ 7.676446] Process work_for_cpu (pid: 735, threadinfo ffff88001a7d6000, task ffff88001694c4a0) [ 7.676521] Stack: [ 7.676579] ffffffffa00b71e0 ffffffffa014cd78 ffffffff00000000 000000001a7d7e88 [ 7.676778] <0> 0000000000000000 ffff88001cf02000 ffffffffa014c520 ffff88001cf02090 [ 7.677076] <0> 0000000000000000 0000000000000000 ffff88001a7d7eb0 ffffffffa014b100 [ 7.677428] Call Trace: [ 7.677491] [] azx_probe+0xb8/0x284 [snd_hda_intel] [ 7.677559] [] ? do_work_for_cpu+0x0/0x30 [ 7.677624] [] local_pci_probe+0x17/0x20 [ 7.677688] [] do_work_for_cpu+0x18/0x30 [ 7.677752] [] kthread+0x96/0xa0 [ 7.677815] [] kernel_thread_helper+0x4/0x10 [ 7.677879] [] ? kthread+0x0/0xa0 [ 7.677941] [] ? kernel_thread_helper+0x0/0x10 [ 7.678004] Code: ef 31 f6 4c 89 ef 89 4d c0 e8 17 d5 ff ff 85 c0 0f 88 c3 03 00 00 4c 89 e7 e8 87 9d 18 e1 41 8b 7d 40 e8 1e 01 f8 e0 49 8b 45 38 <66> 44 8b 30 41 8b 45 14 8b 4d c0 8d 50 fd 83 fa 01 77 3f 31 d2 [ 7.680013] RIP [] azx_create+0x36b/0x73d [snd_hda_intel] [ 7.680013] RSP [ 7.680013] CR2: ffffc900102b8000 [ 7.680013] ---[ end trace 7a55942e8f0cb675 ]--- [ 9.514281] EXT4-fs (sdc2): re-mounted. Opts: errors=remount-ro [ 9.892514] EXT4-fs (sdc1): mounted filesystem with ordered data mode. Opts: (null) [ 10.760997] EXT4-fs (sdc6): mounted filesystem with ordered data mode. Opts: (null) [ 10.961083] EXT4-fs (sdc5): mounted filesystem with ordered data mode. Opts: (null) [ 11.241124] EXT4-fs (sdc7): mounted filesystem with ordered data mode. Opts: (null) [ 13.094713] type=1400 audit(1287336673.177:5): apparmor="STATUS" operation="profile_load" name="/usr/share/gdm/guest-session/Xsession" pid=887 comm="apparmor_parser" [ 13.096858] type=1400 audit(1287336673.177:6): apparmor="STATUS" operation="profile_replace" name="/sbin/dhclient3" pid=888 comm="apparmor_parser" [ 13.097223] type=1400 audit(1287336673.177:7): apparmor="STATUS" operation="profile_replace" name="/usr/lib/NetworkManager/nm-dhcp-client.action" pid=888 comm="apparmor_parser" [ 13.097473] type=1400 audit(1287336673.177:8): apparmor="STATUS" operation="profile_replace" name="/usr/lib/connman/scripts/dhclient-script" pid=888 comm="apparmor_parser" [ 13.248552] type=1400 audit(1287336673.327:9): apparmor="STATUS" operation="profile_load" name="/usr/bin/evince" pid=889 comm="apparmor_parser" [ 13.252562] type=1400 audit(1287336673.337:10): apparmor="STATUS" operation="profile_load" name="/usr/bin/evince-previewer" pid=889 comm="apparmor_parser" [ 13.254974] type=1400 audit(1287336673.337:11): apparmor="STATUS" operation="profile_load" name="/usr/bin/evince-thumbnailer" pid=889 comm="apparmor_parser" [ 13.386792] type=1400 audit(1287336673.467:12): apparmor="STATUS" operation="profile_load" name="/usr/lib/cups/backend/cups-pdf" pid=891 comm="apparmor_parser" [ 13.387244] type=1400 audit(1287336673.467:13): apparmor="STATUS" operation="profile_load" name="/usr/sbin/cupsd" pid=891 comm="apparmor_parser" [ 13.518653] type=1400 audit(1287336673.607:14): apparmor="STATUS" operation="profile_load" name="/usr/sbin/tcpdump" pid=892 comm="apparmor_parser" [ 14.099675] eth0: link up, 100Mbps, full-duplex, lpa 0x45E1 Bug: 662973 [ 0.000000] Initializing cgroup subsys cpuset [ 0.000000] Initializing cgroup subsys cpu [ 0.000000] Linux version 2.6.35-7-generic (buildd@rothera) (gcc version 4.4.4 (Ubuntu 4.4.4-6ubuntu1) ) #11-Ubuntu SMP Wed Jul 7 02:28:58 UTC 2010 (Ubuntu 2.6.35-7.11-generic 2.6.35-rc4) [ 0.000000] BIOS-provided physical RAM map: [ 0.000000] BIOS-e820: 0000000000000000 - 000000000009f800 (usable) [ 0.000000] BIOS-e820: 000000000009f800 - 00000000000a0000 (reserved) [ 0.000000] BIOS-e820: 00000000000f0000 - 0000000000100000 (reserved) [ 0.000000] BIOS-e820: 0000000000100000 - 00000000dfff0000 (usable) [ 0.000000] BIOS-e820: 00000000dfff0000 - 00000000dfff3000 (ACPI NVS) [ 0.000000] BIOS-e820: 00000000dfff3000 - 00000000e0000000 (ACPI data) [ 0.000000] BIOS-e820: 00000000fec00000 - 0000000100000000 (reserved) [ 0.000000] NX (Execute Disable) protection: approximated by x86 segment limits [ 0.000000] DMI 2.2 present. [ 0.000000] Phoenix BIOS detected: BIOS may corrupt low RAM, working around it. [ 0.000000] e820 update range: 0000000000000000 - 0000000000010000 (usable) ==> (reserved) [ 0.000000] e820 update range: 0000000000000000 - 0000000000001000 (usable) ==> (reserved) [ 0.000000] e820 remove range: 00000000000a0000 - 0000000000100000 (usable) [ 0.000000] last_pfn = 0xdfff0 max_arch_pfn = 0x100000 [ 0.000000] MTRR default type: uncachable [ 0.000000] MTRR fixed ranges enabled: [ 0.000000] 00000-9FFFF write-back [ 0.000000] A0000-EFFFF uncachable [ 0.000000] F0000-FFFFF write-through [ 0.000000] MTRR variable ranges enabled: [ 0.000000] 0 base 000000000 mask F80000000 write-back [ 0.000000] 1 base 080000000 mask FC0000000 write-back [ 0.000000] 2 base 0C0000000 mask FE0000000 write-back [ 0.000000] 3 disabled [ 0.000000] 4 disabled [ 0.000000] 5 disabled [ 0.000000] 6 disabled [ 0.000000] 7 disabled [ 0.000000] x86 PAT enabled: cpu 0, old 0x7040600070406, new 0x7010600070106 [ 0.000000] Scanning 0 areas for low memory corruption [ 0.000000] modified physical RAM map: [ 0.000000] modified: 0000000000000000 - 0000000000010000 (reserved) [ 0.000000] modified: 0000000000010000 - 000000000009f800 (usable) [ 0.000000] modified: 000000000009f800 - 00000000000a0000 (reserved) [ 0.000000] modified: 00000000000f0000 - 0000000000100000 (reserved) [ 0.000000] modified: 0000000000100000 - 00000000dfff0000 (usable) [ 0.000000] modified: 00000000dfff0000 - 00000000dfff3000 (ACPI NVS) [ 0.000000] modified: 00000000dfff3000 - 00000000e0000000 (ACPI data) [ 0.000000] modified: 00000000fec00000 - 0000000100000000 (reserved) [ 0.000000] initial memory mapped : 0 - 00c00000 [ 0.000000] found SMP MP-table at [c00f5df0] f5df0 [ 0.000000] init_memory_mapping: 0000000000000000-00000000377fe000 [ 0.000000] 0000000000 - 0000400000 page 4k [ 0.000000] 0000400000 - 0037400000 page 2M [ 0.000000] 0037400000 - 00377fe000 page 4k [ 0.000000] kernel direct mapping tables up to 377fe000 @ 15000-1a000 [ 0.000000] RAMDISK: 37511000 - 37ff0000 [ 0.000000] Allocated new RAMDISK: 009b9000 - 0149754c [ 0.000000] Move RAMDISK from 0000000037511000 - 0000000037fef54b to 009b9000 - 0149754b [ 0.000000] ACPI: RSDP 000f77a0 00014 (v00 IntelR) [ 0.000000] ACPI: RSDT dfff3000 0002C (v01 IntelR AWRDACPI 42302E31 AWRD 00000000) [ 0.000000] ACPI: FACP dfff3040 00074 (v01 IntelR AWRDACPI 42302E31 AWRD 00000000) [ 0.000000] ACPI: DSDT dfff30c0 0433B (v01 INTELR AWRDACPI 00001000 MSFT 0100000E) [ 0.000000] ACPI: FACS dfff0000 00040 [ 0.000000] ACPI: APIC dfff7400 00068 (v01 IntelR AWRDACPI 42302E31 AWRD 00000000) [ 0.000000] ACPI: Local APIC address 0xfee00000 [ 0.000000] 2695MB HIGHMEM available. [ 0.000000] 887MB LOWMEM available. [ 0.000000] mapped low ram: 0 - 377fe000 [ 0.000000] low ram: 0 - 377fe000 [ 0.000000] Zone PFN ranges: [ 0.000000] DMA 0x00000010 -> 0x00001000 [ 0.000000] Normal 0x00001000 -> 0x000377fe [ 0.000000] HighMem 0x000377fe -> 0x000dfff0 [ 0.000000] Movable zone start PFN for each node [ 0.000000] early_node_map[2] active PFN ranges [ 0.000000] 0: 0x00000010 -> 0x0000009f [ 0.000000] 0: 0x00000100 -> 0x000dfff0 [ 0.000000] On node 0 totalpages: 917375 [ 0.000000] free_area_init_node: node 0, pgdat c0813880, node_mem_map c1499200 [ 0.000000] DMA zone: 32 pages used for memmap [ 0.000000] DMA zone: 0 pages reserved [ 0.000000] DMA zone: 3951 pages, LIFO batch:0 [ 0.000000] Normal zone: 1744 pages used for memmap [ 0.000000] Normal zone: 221486 pages, LIFO batch:31 [ 0.000000] HighMem zone: 5392 pages used for memmap [ 0.000000] HighMem zone: 684770 pages, LIFO batch:31 [ 0.000000] Using APIC driver default [ 0.000000] ACPI: PM-Timer IO Port: 0x408 [ 0.000000] ACPI: Local APIC address 0xfee00000 [ 0.000000] ACPI: LAPIC (acpi_id[0x00] lapic_id[0x00] enabled) [ 0.000000] ACPI: LAPIC (acpi_id[0x01] lapic_id[0x01] enabled) [ 0.000000] ACPI: LAPIC_NMI (acpi_id[0x00] high edge lint[0x1]) [ 0.000000] ACPI: LAPIC_NMI (acpi_id[0x01] high edge lint[0x1]) [ 0.000000] ACPI: IOAPIC (id[0x02] address[0xfec00000] gsi_base[0]) [ 0.000000] IOAPIC[0]: apic_id 2, version 32, address 0xfec00000, GSI 0-23 [ 0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 0 global_irq 2 dfl dfl) [ 0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 9 global_irq 9 high level) [ 0.000000] ACPI: IRQ0 used by override. [ 0.000000] ACPI: IRQ2 used by override. [ 0.000000] ACPI: IRQ9 used by override. [ 0.000000] Using ACPI (MADT) for SMP configuration information [ 0.000000] SMP: Allowing 2 CPUs, 0 hotplug CPUs [ 0.000000] nr_irqs_gsi: 40 [ 0.000000] early_res array is doubled to 64 at [16000 - 167ff] [ 0.000000] PM: Registered nosave memory: 000000000009f000 - 00000000000a0000 [ 0.000000] PM: Registered nosave memory: 00000000000a0000 - 00000000000f0000 [ 0.000000] PM: Registered nosave memory: 00000000000f0000 - 0000000000100000 [ 0.000000] Allocating PCI resources starting at e0000000 (gap: e0000000:1ec00000) [ 0.000000] Booting paravirtualized kernel on bare hardware [ 0.000000] setup_percpu: NR_CPUS:8 nr_cpumask_bits:8 nr_cpu_ids:2 nr_node_ids:1 [ 0.000000] PERCPU: Embedded 14 pages/cpu @c3400000 s36352 r0 d20992 u2097152 [ 0.000000] pcpu-alloc: s36352 r0 d20992 u2097152 alloc=1*4194304 [ 0.000000] pcpu-alloc: [0] 0 1 [ 0.000000] Built 1 zonelists in Zone order, mobility grouping on. Total pages: 910207 [ 0.000000] Kernel command line: root=UUID=483d70c7-88c7-42a9-b21f-8fb1dd4e135e ro vga=794 quiet splash [ 0.000000] PID hash table entries: 4096 (order: 2, 16384 bytes) [ 0.000000] Dentry cache hash table entries: 131072 (order: 7, 524288 bytes) [ 0.000000] Inode-cache hash table entries: 65536 (order: 6, 262144 bytes) [ 0.000000] Enabling fast FPU save and restore... done. [ 0.000000] Enabling unmasked SIMD FPU exception support... done. [ 0.000000] Initializing CPU#0 [ 0.000000] allocated 18349440 bytes of page_cgroup [ 0.000000] please try 'cgroup_disable=memory' option if you don't want memory cgroups [ 0.000000] Subtract (45 early reservations) [ 0.000000] #1 [0000001000 - 0000002000] EX TRAMPOLINE [ 0.000000] #2 [0000100000 - 00009b491c] TEXT DATA BSS [ 0.000000] #3 [00009b5000 - 00009b8088] BRK [ 0.000000] #4 [00000f5e00 - 0000100000] BIOS reserved [ 0.000000] #5 [00000f5df0 - 00000f5e00] MP-table mpf [ 0.000000] #6 [000009f800 - 00000f1400] BIOS reserved [ 0.000000] #7 [00000f1568 - 00000f5df0] BIOS reserved [ 0.000000] #8 [00000f1400 - 00000f1568] MP-table mpc [ 0.000000] #9 [0000010000 - 0000011000] TRAMPOLINE [ 0.000000] #10 [0000011000 - 0000015000] ACPI WAKEUP [ 0.000000] #11 [0000015000 - 0000016000] PGTABLE [ 0.000000] #12 [00009b9000 - 0001498000] NEW RAMDISK [ 0.000000] #13 [0001498000 - 0001499000] BOOTMEM [ 0.000000] #14 [0001499000 - 0003099000] BOOTMEM [ 0.000000] #15 [0003099000 - 0003099004] BOOTMEM [ 0.000000] #16 [0003099040 - 0003099100] BOOTMEM [ 0.000000] #17 [0003099100 - 0003099154] BOOTMEM [ 0.000000] #18 [0003099180 - 000309c180] BOOTMEM [ 0.000000] #19 [000309c180 - 000309c280] BOOTMEM [ 0.000000] #20 [000309c280 - 00030a8280] BOOTMEM [ 0.000000] #21 [00030a8280 - 00030a82a7] BOOTMEM [ 0.000000] #22 [00030a82c0 - 00030a83a0] BOOTMEM [ 0.000000] #23 [00030a83c0 - 00030a8400] BOOTMEM [ 0.000000] #24 [00030a8400 - 00030a8440] BOOTMEM [ 0.000000] #25 [00030a8440 - 00030a8480] BOOTMEM [ 0.000000] #26 [00030a8480 - 00030a84c0] BOOTMEM [ 0.000000] #27 [00030a84c0 - 00030a8500] BOOTMEM [ 0.000000] #28 [00030a8500 - 00030a8540] BOOTMEM [ 0.000000] #29 [00030a8540 - 00030a8580] BOOTMEM [ 0.000000] #30 [00030a8580 - 00030a8590] BOOTMEM [ 0.000000] #31 [00030a85c0 - 00030a8608] BOOTMEM [ 0.000000] #32 [00030a8640 - 00030a8688] BOOTMEM [ 0.000000] #33 [0003400000 - 000340e000] BOOTMEM [ 0.000000] #34 [0003600000 - 000360e000] BOOTMEM [ 0.000000] #35 [00030aa6c0 - 00030aa6c4] BOOTMEM [ 0.000000] #36 [00030aa700 - 00030aa704] BOOTMEM [ 0.000000] #37 [00030aa740 - 00030aa748] BOOTMEM [ 0.000000] #38 [00030aa780 - 00030aa788] BOOTMEM [ 0.000000] #39 [00030aa7c0 - 00030aa868] BOOTMEM [ 0.000000] #40 [00030aa880 - 00030aa8e8] BOOTMEM [ 0.000000] #41 [00030aa900 - 00030ae900] BOOTMEM [ 0.000000] #42 [00030ae900 - 000312e900] BOOTMEM [ 0.000000] #43 [000312e900 - 000316e900] BOOTMEM [ 0.000000] #44 [000360e000 - 000478dd80] BOOTMEM [ 0.000000] Initializing HighMem for node 0 (000377fe:000dfff0) [ 0.000000] Memory: 3601852k/3669952k available (4942k kernel code, 67648k reserved, 2401k data, 684k init, 2760648k highmem) [ 0.000000] virtual kernel memory layout: [ 0.000000] fixmap : 0xfff15000 - 0xfffff000 ( 936 kB) [ 0.000000] pkmap : 0xff800000 - 0xffc00000 (4096 kB) [ 0.000000] vmalloc : 0xf7ffe000 - 0xff7fe000 ( 120 MB) [ 0.000000] lowmem : 0xc0000000 - 0xf77fe000 ( 887 MB) [ 0.000000] .init : 0xc082d000 - 0xc08d8000 ( 684 kB) [ 0.000000] .data : 0xc05d3b52 - 0xc082c168 (2401 kB) [ 0.000000] .text : 0xc0100000 - 0xc05d3b52 (4942 kB) [ 0.000000] Checking if this processor honours the WP bit even in supervisor mode...Ok. [ 0.000000] SLUB: Genslabs=13, HWalign=128, Order=0-3, MinObjects=0, CPUs=2, Nodes=1 [ 0.000000] Hierarchical RCU implementation. [ 0.000000] RCU dyntick-idle grace-period acceleration is enabled. [ 0.000000] RCU-based detection of stalled CPUs is disabled. [ 0.000000] Verbose stalled-CPUs detection is disabled. [ 0.000000] NR_IRQS:2304 nr_irqs:512 [ 0.000000] Console: colour dummy device 80x25 [ 0.000000] console [tty0] enabled [ 0.000000] Fast TSC calibration using PIT [ 0.000000] Detected 3313.601 MHz processor. [ 0.008004] Calibrating delay loop (skipped), value calculated using timer frequency.. 6627.20 BogoMIPS (lpj=13254404) [ 0.008010] pid_max: default: 32768 minimum: 301 [ 0.008033] Security Framework initialized [ 0.008054] AppArmor: AppArmor initialized [ 0.008058] Yama: becoming mindful. [ 0.008122] Mount-cache hash table entries: 512 [ 0.008284] Initializing cgroup subsys ns [ 0.008289] Initializing cgroup subsys cpuacct [ 0.008295] Initializing cgroup subsys memory [ 0.008307] Initializing cgroup subsys devices [ 0.008310] Initializing cgroup subsys freezer [ 0.008313] Initializing cgroup subsys net_cls [ 0.008351] CPU: Physical Processor ID: 0 [ 0.008354] CPU: Processor Core ID: 0 [ 0.008358] mce: CPU supports 4 MCE banks [ 0.008370] CPU0: Thermal monitoring enabled (TM1) [ 0.008375] using mwait in idle threads. [ 0.008383] Performance Events: Netburst events, Netburst P4/Xeon PMU driver. [ 0.008395] ... version: 0 [ 0.008397] ... bit width: 40 [ 0.008400] ... generic registers: 18 [ 0.008402] ... value mask: 000000ffffffffff [ 0.008405] ... max period: 0000007fffffffff [ 0.008408] ... fixed-purpose events: 0 [ 0.008410] ... event mask: 000000000003ffff [ 0.012099] ACPI: Core revision 20100428 [ 0.020013] ftrace: converting mcount calls to 0f 1f 44 00 00 [ 0.020019] ftrace: allocating 21734 entries in 43 pages [ 0.024059] Enabling APIC mode: Flat. Using 1 I/O APICs [ 0.024341] ..TIMER: vector=0x30 apic1=0 pin1=2 apic2=-1 pin2=-1 [ 0.066291] CPU0: Intel(R) Pentium(R) 4 CPU 3.00GHz stepping 03 [ 0.068000] Booting Node 0, Processors #1 Ok. [ 0.012000] Initializing CPU#1 [ 0.156018] Brought up 2 CPUs [ 0.156024] Total of 2 processors activated (13254.98 BogoMIPS). [ 0.156382] devtmpfs: initialized [ 0.157394] regulator: core version 0.5 [ 0.157417] Time: 17:35:43 Date: 10/18/10 [ 0.157467] NET: Registered protocol family 16 [ 0.157479] Trying to unpack rootfs image as initramfs... [ 0.157675] EISA bus registered [ 0.157689] ACPI: bus type pci registered [ 0.158871] PCI: PCI BIOS revision 2.10 entry at 0xfb9e0, last bus=4 [ 0.158876] PCI: Using configuration type 1 for base access [ 0.161652] bio: create slab at 0 [ 0.163703] ACPI: EC: Look up EC in DSDT [ 0.171117] ACPI: Interpreter enabled [ 0.171124] ACPI: (supports S0 S3 S4 S5) [ 0.171167] ACPI: Using IOAPIC for interrupt routing [ 0.179540] ACPI: No dock devices found. [ 0.179547] PCI: Ignoring host bridge windows from ACPI; if necessary, use "pci=use_crs" and report a bug [ 0.179706] ACPI: PCI Root Bridge [PCI0] (domain 0000 [bus 00-ff]) [ 0.180027] pci_root PNP0A03:00: host bridge window [io 0x0000-0x0cf7] (ignored) [ 0.180033] pci_root PNP0A03:00: host bridge window [io 0x0d00-0xffff] (ignored) [ 0.180038] pci_root PNP0A03:00: host bridge window [mem 0x000a0000-0x000bffff] (ignored) [ 0.180043] pci_root PNP0A03:00: host bridge window [mem 0x000c0000-0x000dffff] (ignored) [ 0.180049] pci_root PNP0A03:00: host bridge window [mem 0xe0000000-0xfebfffff] (ignored) [ 0.180070] pci 0000:00:00.0: Enabling MCH 'Overflow' Device [ 0.180083] pci 0000:00:00.0: reg 10: [mem 0xf0000000-0xf7ffffff pref] [ 0.180216] pci 0000:00:06.0: reg 10: [mem 0xfecf0000-0xfecf0fff] [ 0.180320] pci 0000:00:1d.0: reg 20: [io 0xbc00-0xbc1f] [ 0.180381] pci 0000:00:1d.1: reg 20: [io 0xb000-0xb01f] [ 0.180443] pci 0000:00:1d.2: reg 20: [io 0xb400-0xb41f] [ 0.180507] pci 0000:00:1d.3: reg 20: [io 0xb800-0xb81f] [ 0.180564] pci 0000:00:1d.7: reg 10: [mem 0xfa200000-0xfa2003ff] [ 0.180623] pci 0000:00:1d.7: PME# supported from D0 D3hot D3cold [ 0.180630] pci 0000:00:1d.7: PME# disabled [ 0.180726] pci 0000:00:1f.0: Force enabled HPET at 0xfed00000 [ 0.180735] pci 0000:00:1f.0: quirk: [io 0x0400-0x047f] claimed by ICH4 ACPI/GPIO/TCO [ 0.180742] pci 0000:00:1f.0: quirk: [io 0x0480-0x04bf] claimed by ICH4 GPIO [ 0.180770] pci 0000:00:1f.1: reg 10: [io 0x0000-0x0007] [ 0.180780] pci 0000:00:1f.1: reg 14: [io 0x0000-0x0003] [ 0.180789] pci 0000:00:1f.1: reg 18: [io 0x0000-0x0007] [ 0.180799] pci 0000:00:1f.1: reg 1c: [io 0x0000-0x0003] [ 0.180808] pci 0000:00:1f.1: reg 20: [io 0xf000-0xf00f] [ 0.180817] pci 0000:00:1f.1: reg 24: [mem 0x00000000-0x000003ff] [ 0.180854] pci 0000:00:1f.2: reg 10: [io 0xc000-0xc007] [ 0.180863] pci 0000:00:1f.2: reg 14: [io 0xc400-0xc403] [ 0.180872] pci 0000:00:1f.2: reg 18: [io 0xc800-0xc807] [ 0.180881] pci 0000:00:1f.2: reg 1c: [io 0xcc00-0xcc03] [ 0.180889] pci 0000:00:1f.2: reg 20: [io 0xd000-0xd00f] [ 0.180949] pci 0000:00:1f.3: reg 20: [io 0x0500-0x051f] [ 0.181004] pci 0000:00:1f.6: reg 10: [io 0xe000-0xe0ff] [ 0.181014] pci 0000:00:1f.6: reg 14: [io 0xe400-0xe47f] [ 0.181060] pci 0000:00:1f.6: PME# supported from D0 D3hot D3cold [ 0.181067] pci 0000:00:1f.6: PME# disabled [ 0.181122] pci 0000:01:00.0: reg 10: [mem 0xe0000000-0xefffffff pref] [ 0.181132] pci 0000:01:00.0: reg 14: [io 0xa000-0xa0ff] [ 0.181142] pci 0000:01:00.0: reg 18: [mem 0xf9000000-0xf900ffff] [ 0.181166] pci 0000:01:00.0: reg 30: [mem 0x00000000-0x0001ffff pref] [ 0.181197] pci 0000:01:00.0: supports D1 D2 [ 0.181238] pci 0000:01:00.1: reg 10: [mem 0xf9010000-0xf9013fff] [ 0.181292] pci 0000:01:00.1: supports D1 D2 [ 0.181345] pci 0000:00:01.0: PCI bridge to [bus 01-01] [ 0.181352] pci 0000:00:01.0: bridge window [io 0xa000-0xafff] [ 0.181358] pci 0000:00:01.0: bridge window [mem 0xf8000000-0xf9ffffff] [ 0.181365] pci 0000:00:01.0: bridge window [mem 0xe0000000-0xefffffff pref] [ 0.181404] pci 0000:02:01.0: reg 10: [mem 0xfa000000-0xfa01ffff] [ 0.181417] pci 0000:02:01.0: reg 18: [io 0x9000-0x901f] [ 0.181454] pci 0000:02:01.0: PME# supported from D0 D3hot D3cold [ 0.181460] pci 0000:02:01.0: PME# disabled [ 0.181505] pci 0000:00:03.0: PCI bridge to [bus 02-02] [ 0.181511] pci 0000:00:03.0: bridge window [io 0x9000-0x9fff] [ 0.181517] pci 0000:00:03.0: bridge window [mem 0xfa000000-0xfa0fffff] [ 0.181524] pci 0000:00:03.0: bridge window [mem 0xfff00000-0x000fffff pref] (disabled) [ 0.181625] pci 0000:03:0c.0: supports D1 D2 [ 0.181629] pci 0000:03:0c.0: PME# supported from D1 D2 D3hot D3cold [ 0.181636] pci 0000:03:0c.0: PME# disabled [ 0.181673] pci 0000:03:0e.0: reg 10: [io 0x8000-0x803f] [ 0.181723] pci 0000:03:0e.0: supports D2 [ 0.181727] pci 0000:03:0e.0: PME# supported from D0 D2 D3hot [ 0.181734] pci 0000:03:0e.0: PME# disabled [ 0.181766] pci 0000:00:1e.0: PCI bridge to [bus 03-04] (subtractive decode) [ 0.181773] pci 0000:00:1e.0: bridge window [io 0x7000-0x8fff] [ 0.181780] pci 0000:00:1e.0: bridge window [mem 0xfa100000-0xfa1fffff] [ 0.181788] pci 0000:00:1e.0: bridge window [mem 0xfff00000-0x000fffff pref] (disabled) [ 0.181793] pci 0000:00:1e.0: bridge window [io 0x0000-0xffff] (subtractive decode) [ 0.181798] pci 0000:00:1e.0: bridge window [mem 0x00000000-0xffffffff] (subtractive decode) [ 0.181867] pci 0000:04:00.0: reg 10: [mem 0xfa100000-0xfa100fff] [ 0.181927] pci 0000:04:00.0: supports D1 D2 [ 0.181931] pci 0000:04:00.0: PME# supported from D0 D1 D2 D3hot [ 0.181938] pci 0000:04:00.0: PME# disabled [ 0.181977] pci 0000:04:00.1: reg 10: [mem 0xfa101000-0xfa101fff] [ 0.182037] pci 0000:04:00.1: supports D1 D2 [ 0.182041] pci 0000:04:00.1: PME# supported from D0 D1 D2 D3hot [ 0.182048] pci 0000:04:00.1: PME# disabled [ 0.182086] pci 0000:04:00.2: reg 10: [mem 0xfa102000-0xfa1020ff] [ 0.182146] pci 0000:04:00.2: supports D1 D2 [ 0.182150] pci 0000:04:00.2: PME# supported from D0 D1 D2 D3hot [ 0.182157] pci 0000:04:00.2: PME# disabled [ 0.182208] pci 0000:04:01.0: reg 10: [mem 0xfa103000-0xfa1037ff] [ 0.182219] pci 0000:04:01.0: reg 14: [io 0x7000-0x707f] [ 0.182274] pci 0000:04:01.0: PME# supported from D0 D3hot D3cold [ 0.182281] pci 0000:04:01.0: PME# disabled [ 0.182342] pci 0000:03:0c.0: PCI bridge to [bus 04-04] [ 0.182349] pci 0000:03:0c.0: bridge window [io 0x7000-0x7fff] [ 0.182356] pci 0000:03:0c.0: bridge window [mem 0xfa100000-0xfa1fffff] [ 0.182363] pci 0000:03:0c.0: bridge window [mem 0xfff00000-0x000fffff pref] (disabled) [ 0.182389] pci_bus 0000:00: on NUMA node 0 [ 0.182397] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0._PRT] [ 0.182625] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.HUB0._PRT] [ 0.201982] ACPI: PCI Interrupt Link [LNKA] (IRQs 3 4 5 7 9 *10 11 12 14 15) [ 0.202155] ACPI: PCI Interrupt Link [LNKB] (IRQs 3 4 5 7 9 10 11 *12 14 15) [ 0.202327] ACPI: PCI Interrupt Link [LNKC] (IRQs 3 4 5 7 9 10 *11 12 14 15) [ 0.202498] ACPI: PCI Interrupt Link [LNKD] (IRQs *3 4 5 7 9 10 11 12 14 15) [ 0.202669] ACPI: PCI Interrupt Link [LNKE] (IRQs 3 4 5 7 9 10 11 12 14 15) *0, disabled. [ 0.202843] ACPI: PCI Interrupt Link [LNKF] (IRQs 3 4 5 7 9 10 11 12 14 15) *0, disabled. [ 0.203019] ACPI: PCI Interrupt Link [LNK0] (IRQs 3 4 5 7 9 10 11 12 14 15) *0, disabled. [ 0.203191] ACPI: PCI Interrupt Link [LNK1] (IRQs 3 4 5 *7 9 10 11 12 14 15) [ 0.203272] HEST: Table is not found! [ 0.203409] vgaarb: device added: PCI:0000:01:00.0,decodes=io+mem,owns=io+mem,locks=none [ 0.203428] vgaarb: loaded [ 0.203733] SCSI subsystem initialized [ 0.203857] libata version 3.00 loaded. [ 0.203956] usbcore: registered new interface driver usbfs [ 0.203983] usbcore: registered new interface driver hub [ 0.204066] usbcore: registered new device driver usb [ 0.204291] ACPI: WMI: Mapper loaded [ 0.204295] PCI: Using ACPI for IRQ routing [ 0.204302] PCI: pci_cache_line_size set to 64 bytes [ 0.204446] reserve RAM buffer: 000000000009f800 - 000000000009ffff [ 0.204451] reserve RAM buffer: 00000000dfff0000 - 00000000dfffffff [ 0.204618] NetLabel: Initializing [ 0.204622] NetLabel: domain hash size = 128 [ 0.204625] NetLabel: protocols = UNLABELED CIPSOv4 [ 0.204645] NetLabel: unlabeled traffic allowed by default [ 0.204771] hpet clockevent registered [ 0.204777] HPET: 3 timers in total, 0 timers will be used for per-cpu timer [ 0.204785] hpet0: at MMIO 0xfed00000, IRQs 2, 8, 0 [ 0.204794] hpet0: 3 comparators, 64-bit 14.318180 MHz counter [ 0.208056] Switching to clocksource tsc [ 0.227429] AppArmor: AppArmor Filesystem Enabled [ 0.227451] pnp: PnP ACPI init [ 0.227482] ACPI: bus type pnp registered [ 0.231174] pnp: PnP ACPI: found 9 devices [ 0.231179] ACPI: ACPI bus type pnp unregistered [ 0.231185] PnPBIOS: Disabled by ACPI PNP [ 0.231204] system 00:01: [io 0x0b78-0x0b7b] has been reserved [ 0.231210] system 00:01: [io 0x0f78-0x0f7b] has been reserved [ 0.231215] system 00:01: [io 0x0a78-0x0a7b] has been reserved [ 0.231221] system 00:01: [io 0x0e78-0x0e7b] has been reserved [ 0.231226] system 00:01: [io 0x0bbc-0x0bbf] has been reserved [ 0.231232] system 00:01: [io 0x0fbc-0x0fbf] has been reserved [ 0.231237] system 00:01: [io 0x04d0-0x04d1] has been reserved [ 0.231242] system 00:01: [io 0x0294-0x0297] has been reserved [ 0.231257] system 00:06: [io 0x0400-0x04bf] could not be reserved [ 0.231278] system 00:08: [mem 0x000d0000-0x000d3fff] has been reserved [ 0.231285] system 00:08: [mem 0x000f0000-0x000f7fff] could not be reserved [ 0.231290] system 00:08: [mem 0x000f8000-0x000fbfff] could not be reserved [ 0.231296] system 00:08: [mem 0x000fc000-0x000fffff] could not be reserved [ 0.231302] system 00:08: [mem 0xdfff0000-0xdfffffff] could not be reserved [ 0.231307] system 00:08: [mem 0x00000000-0x0009ffff] could not be reserved [ 0.231313] system 00:08: [mem 0x00100000-0xdffeffff] could not be reserved [ 0.231319] system 00:08: [mem 0xfec00000-0xfec00fff] could not be reserved [ 0.231325] system 00:08: [mem 0xfec01000-0xfed8ffff] could not be reserved [ 0.231330] system 00:08: [mem 0xfee00000-0xfee00fff] has been reserved [ 0.231336] system 00:08: [mem 0xffb00000-0xffb7ffff] has been reserved [ 0.231341] system 00:08: [mem 0xfff00000-0xffffffff] has been reserved [ 0.231347] system 00:08: [mem 0x000e0000-0x000effff] has been reserved [ 0.266242] pci 0000:00:1f.1: BAR 5: assigned [mem 0xfa200400-0xfa2007ff] [ 0.266253] pci 0000:00:1f.1: BAR 5: set to [mem 0xfa200400-0xfa2007ff] (PCI address [0xfa200400-0xfa2007ff] [ 0.266262] pci 0000:01:00.0: BAR 6: assigned [mem 0xf8000000-0xf801ffff pref] [ 0.266268] pci 0000:00:01.0: PCI bridge to [bus 01-01] [ 0.266274] pci 0000:00:01.0: bridge window [io 0xa000-0xafff] [ 0.266281] pci 0000:00:01.0: bridge window [mem 0xf8000000-0xf9ffffff] [ 0.266288] pci 0000:00:01.0: bridge window [mem 0xe0000000-0xefffffff pref] [ 0.266297] pci 0000:00:03.0: PCI bridge to [bus 02-02] [ 0.266302] pci 0000:00:03.0: bridge window [io 0x9000-0x9fff] [ 0.266310] pci 0000:00:03.0: bridge window [mem 0xfa000000-0xfa0fffff] [ 0.266316] pci 0000:00:03.0: bridge window [mem pref disabled] [ 0.266325] pci 0000:03:0c.0: PCI bridge to [bus 04-04] [ 0.266331] pci 0000:03:0c.0: bridge window [io 0x7000-0x7fff] [ 0.266339] pci 0000:03:0c.0: bridge window [mem 0xfa100000-0xfa1fffff] [ 0.266345] pci 0000:03:0c.0: bridge window [mem pref disabled] [ 0.266354] pci 0000:00:1e.0: PCI bridge to [bus 03-04] [ 0.266359] pci 0000:00:1e.0: bridge window [io 0x7000-0x8fff] [ 0.266367] pci 0000:00:1e.0: bridge window [mem 0xfa100000-0xfa1fffff] [ 0.266374] pci 0000:00:1e.0: bridge window [mem pref disabled] [ 0.266400] pci 0000:00:1e.0: setting latency timer to 64 [ 0.266416] pci_bus 0000:00: resource 0 [io 0x0000-0xffff] [ 0.266421] pci_bus 0000:00: resource 1 [mem 0x00000000-0xffffffff] [ 0.266426] pci_bus 0000:01: resource 0 [io 0xa000-0xafff] [ 0.266431] pci_bus 0000:01: resource 1 [mem 0xf8000000-0xf9ffffff] [ 0.266436] pci_bus 0000:01: resource 2 [mem 0xe0000000-0xefffffff pref] [ 0.266441] pci_bus 0000:02: resource 0 [io 0x9000-0x9fff] [ 0.266446] pci_bus 0000:02: resource 1 [mem 0xfa000000-0xfa0fffff] [ 0.266451] pci_bus 0000:03: resource 0 [io 0x7000-0x8fff] [ 0.266456] pci_bus 0000:03: resource 1 [mem 0xfa100000-0xfa1fffff] [ 0.266461] pci_bus 0000:03: resource 4 [io 0x0000-0xffff] [ 0.266465] pci_bus 0000:03: resource 5 [mem 0x00000000-0xffffffff] [ 0.266470] pci_bus 0000:04: resource 0 [io 0x7000-0x7fff] [ 0.266475] pci_bus 0000:04: resource 1 [mem 0xfa100000-0xfa1fffff] [ 0.266534] NET: Registered protocol family 2 [ 0.266649] IP route cache hash table entries: 32768 (order: 5, 131072 bytes) [ 0.267080] TCP established hash table entries: 131072 (order: 8, 1048576 bytes) [ 0.267675] TCP bind hash table entries: 65536 (order: 7, 524288 bytes) [ 0.267958] TCP: Hash tables configured (established 131072 bind 65536) [ 0.267963] TCP reno registered [ 0.267969] UDP hash table entries: 512 (order: 2, 16384 bytes) [ 0.267981] UDP-Lite hash table entries: 512 (order: 2, 16384 bytes) [ 0.268134] NET: Registered protocol family 1 [ 0.268281] pci 0000:01:00.0: Boot video device [ 0.268346] PCI: CLS 32 bytes, default 64 [ 0.268614] cpufreq-nforce2: No nForce2 chipset. [ 0.268663] Scanning for low memory corruption every 60 seconds [ 0.268838] audit: initializing netlink socket (disabled) [ 0.268853] type=2000 audit(1287423343.264:1): initialized [ 0.281413] highmem bounce pool size: 64 pages [ 0.281423] HugeTLB registered 4 MB page size, pre-allocated 0 pages [ 0.284242] VFS: Disk quotas dquot_6.5.2 [ 0.284368] Dquot-cache hash table entries: 1024 (order 0, 4096 bytes) [ 0.285525] fuse init (API version 7.14) [ 0.285695] msgmni has been set to 1642 [ 0.286042] alg: No test for stdrng (krng) [ 0.286147] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 253) [ 0.286153] io scheduler noop registered [ 0.286156] io scheduler deadline registered [ 0.286185] io scheduler cfq registered (default) [ 0.286461] pci_hotplug: PCI Hot Plug PCI Core version: 0.5 [ 0.286504] pciehp: PCI Express Hot Plug Controller Driver version: 0.4 [ 0.286658] input: Power Button as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0C:00/input/input0 [ 0.286664] ACPI: Power Button [PWRB] [ 0.286760] input: Power Button as /devices/LNXSYSTM:00/LNXPWRBN:00/input/input1 [ 0.286765] ACPI: Power Button [PWRF] [ 0.286850] ACPI: Fan [FAN] (on) [ 0.287164] ACPI: acpi_idle registered with cpuidle [ 0.292405] thermal LNXTHERM:01: registered as thermal_zone0 [ 0.292423] ACPI: Thermal Zone [THRM] (55 C) [ 0.292531] ERST: Table is not found! [ 0.296623] vesafb: framebuffer at 0xe0000000, mapped to 0xf8080000, using 5120k, total 16384k [ 0.296629] vesafb: mode is 1280x1024x16, linelength=2560, pages=5 [ 0.296633] vesafb: protected mode interface info at c000:a0ba [ 0.296637] vesafb: pmi: set display start = c00ca15c, set palette = c00ca21a [ 0.296641] vesafb: scrolling: redraw [ 0.296646] vesafb: Truecolor: size=0:5:6:5, shift=0:11:5:0 [ 0.300161] isapnp: Scanning for PnP cards... [ 0.321388] Console: switching to colour frame buffer device 160x64 [ 0.345954] fb0: VESA VGA frame buffer device [ 0.345995] Serial: 8250/16550 driver, 4 ports, IRQ sharing enabled [ 0.346475] alloc irq_desc for 17 on node -1 [ 0.346479] alloc kstat_irqs on node -1 [ 0.346489] serial 0000:00:1f.6: PCI INT B -> GSI 17 (level, low) -> IRQ 17 [ 0.346497] serial 0000:00:1f.6: PCI INT B disabled [ 0.396475] brd: module loaded [ 0.397368] loop: module loaded [ 0.397684] ata_piix 0000:00:1f.1: version 2.13 [ 0.397702] alloc irq_desc for 18 on node -1 [ 0.397706] alloc kstat_irqs on node -1 [ 0.397715] ata_piix 0000:00:1f.1: PCI INT A -> GSI 18 (level, low) -> IRQ 18 [ 0.397767] ata_piix 0000:00:1f.1: setting latency timer to 64 [ 0.411739] scsi0 : ata_piix [ 0.436794] scsi1 : ata_piix [ 0.438121] ata1: PATA max UDMA/100 cmd 0x1f0 ctl 0x3f6 bmdma 0xf000 irq 14 [ 0.438126] ata2: PATA max UDMA/100 cmd 0x170 ctl 0x376 bmdma 0xf008 irq 15 [ 0.438156] ata_piix 0000:00:1f.2: PCI INT A -> GSI 18 (level, low) -> IRQ 18 [ 0.438164] ata_piix 0000:00:1f.2: MAP [ P0 -- P1 -- ] [ 0.438219] ata_piix 0000:00:1f.2: setting latency timer to 64 [ 0.448128] scsi2 : ata_piix [ 0.448239] scsi3 : ata_piix [ 0.449276] ata3: SATA max UDMA/133 cmd 0xc000 ctl 0xc400 bmdma 0xd000 irq 18 [ 0.449281] ata4: SATA max UDMA/133 cmd 0xc800 ctl 0xcc00 bmdma 0xd008 irq 18 [ 0.449864] Fixed MDIO Bus: probed [ 0.449925] PPP generic driver version 2.4.2 [ 0.449999] tun: Universal TUN/TAP device driver, 1.6 [ 0.450002] tun: (C) 1999-2004 Max Krasnyansky [ 0.450142] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver [ 0.450172] alloc irq_desc for 23 on node -1 [ 0.450176] alloc kstat_irqs on node -1 [ 0.450185] ehci_hcd 0000:00:1d.7: PCI INT D -> GSI 23 (level, low) -> IRQ 23 [ 0.450205] ehci_hcd 0000:00:1d.7: setting latency timer to 64 [ 0.450211] ehci_hcd 0000:00:1d.7: EHCI Host Controller [ 0.450265] ehci_hcd 0000:00:1d.7: new USB bus registered, assigned bus number 1 [ 0.454177] ehci_hcd 0000:00:1d.7: cache line size of 32 is not supported [ 0.454201] ehci_hcd 0000:00:1d.7: irq 23, io mem 0xfa200000 [ 0.479901] ehci_hcd 0000:00:1d.7: USB 2.0 started, EHCI 1.00 [ 0.480107] hub 1-0:1.0: USB hub found [ 0.480115] hub 1-0:1.0: 8 ports detected [ 0.480252] ehci_hcd 0000:04:00.2: PCI INT C -> GSI 18 (level, low) -> IRQ 18 [ 0.480272] ehci_hcd 0000:04:00.2: EHCI Host Controller [ 0.480328] ehci_hcd 0000:04:00.2: new USB bus registered, assigned bus number 2 [ 0.503867] ehci_hcd 0000:04:00.2: irq 18, io mem 0xfa102000 [ 0.515876] ehci_hcd 0000:04:00.2: USB 2.0 started, EHCI 0.95 [ 0.516086] hub 2-0:1.0: USB hub found [ 0.516095] hub 2-0:1.0: 5 ports detected [ 0.516218] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver [ 0.516254] alloc irq_desc for 16 on node -1 [ 0.516258] alloc kstat_irqs on node -1 [ 0.516267] ohci_hcd 0000:04:00.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16 [ 0.516288] ohci_hcd 0000:04:00.0: OHCI Host Controller [ 0.516345] ohci_hcd 0000:04:00.0: new USB bus registered, assigned bus number 3 [ 0.516378] ohci_hcd 0000:04:00.0: irq 16, io mem 0xfa100000 [ 0.610552] isapnp: No Plug & Play device found [ 0.676346] Freeing initrd memory: 11132k freed [ 0.687871] ata1.00: ATA-7: SAMSUNG SP0802N, TK100-24, max UDMA/100 [ 0.687877] ata1.00: 156368016 sectors, multi 16: LBA48 [ 0.695780] ata1.00: configured for UDMA/100 [ 0.695947] scsi 0:0:0:0: Direct-Access ATA SAMSUNG SP0802N TK10 PQ: 0 ANSI: 5 [ 0.696188] sd 0:0:0:0: Attached scsi generic sg0 type 0 [ 0.696316] sd 0:0:0:0: [sda] 156368016 512-byte logical blocks: (80.0 GB/74.5 GiB) [ 0.696410] sd 0:0:0:0: [sda] Write Protect is off [ 0.696416] sd 0:0:0:0: [sda] Mode Sense: 00 3a 00 00 [ 0.696456] sd 0:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA [ 1.078256] hub 3-0:1.0: USB hub found [ 1.078266] hub 3-0:1.0: 3 ports detected [ 1.078380] ohci_hcd 0000:04:00.1: PCI INT B -> GSI 17 (level, low) -> IRQ 17 [ 1.078401] ohci_hcd 0000:04:00.1: OHCI Host Controller [ 1.078466] ohci_hcd 0000:04:00.1: new USB bus registered, assigned bus number 4 [ 1.078501] ohci_hcd 0000:04:00.1: irq 17, io mem 0xfa101000 [ 1.088917] sda: [ 1.095817] ata3.00: ATA-7: Maxtor 7Y250M0, YAR511W0, max UDMA/100 [ 1.095823] ata3.00: 488397168 sectors, multi 16: LBA48 [ 1.098764] sda1 sda2 sda3 < [ 1.103922] ata2.00: ATAPI: PIONEER DVD-RW DVR-111D, 1.23, max UDMA/66 [ 1.103967] ata2.01: ATAPI: SONY CD-RW CRX300E, KYS1, max UDMA/33 [ 1.111850] ata3.00: configured for UDMA/100 [ 1.112314] sda5 [ 1.119897] ata2.00: configured for UDMA/66 [ 1.133019] sda6 [ 1.135856] ata2.01: configured for UDMA/33 [ 1.148647] scsi 1:0:0:0: CD-ROM PIONEER DVD-RW DVR-111D 1.23 PQ: 0 ANSI: 5 [ 1.171763] sr0: scsi3-mmc drive: 40x/40x writer cd/rw xa/form2 cdda tray [ 1.171769] Uniform CD-ROM driver Revision: 3.20 [ 1.171914] sr 1:0:0:0: Attached scsi CD-ROM sr0 [ 1.171996] sr 1:0:0:0: Attached scsi generic sg1 type 5 [ 1.173075] scsi 1:0:1:0: CD-ROM SONY CD-RW CRX300E KYS1 PQ: 0 ANSI: 5 [ 1.177493] sr1: scsi3-mmc drive: 0x/48x writer cd/rw xa/form2 cdda tray [ 1.177625] sr 1:0:1:0: Attached scsi CD-ROM sr1 [ 1.177698] sr 1:0:1:0: Attached scsi generic sg2 type 5 [ 1.177855] scsi 2:0:0:0: Direct-Access ATA Maxtor 7Y250M0 YAR5 PQ: 0 ANSI: 5 [ 1.178050] sd 2:0:0:0: Attached scsi generic sg3 type 0 [ 1.178150] sd 2:0:0:0: [sdb] 488397168 512-byte logical blocks: (250 GB/232 GiB) [ 1.178243] sd 2:0:0:0: [sdb] Write Protect is off [ 1.178248] sd 2:0:0:0: [sdb] Mode Sense: 00 3a 00 00 [ 1.178288] sd 2:0:0:0: [sdb] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA [ 1.645742] sda7 > sda4 [ 1.646240] hub 4-0:1.0: USB hub found [ 1.646249] hub 4-0:1.0: 2 ports detected [ 1.646358] uhci_hcd: USB Universal Host Controller Interface driver [ 1.646401] uhci_hcd 0000:00:1d.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16 [ 1.646411] uhci_hcd 0000:00:1d.0: setting latency timer to 64 [ 1.646416] uhci_hcd 0000:00:1d.0: UHCI Host Controller [ 1.646480] uhci_hcd 0000:00:1d.0: new USB bus registered, assigned bus number 5 [ 1.646507] uhci_hcd 0000:00:1d.0: irq 16, io base 0x0000bc00 [ 1.646693] hub 5-0:1.0: USB hub found [ 1.646700] hub 5-0:1.0: 2 ports detected [ 1.646796] alloc irq_desc for 19 on node -1 [ 1.646800] alloc kstat_irqs on node -1 [ 1.646809] uhci_hcd 0000:00:1d.1: PCI INT B -> GSI 19 (level, low) -> IRQ 19 [ 1.646817] uhci_hcd 0000:00:1d.1: setting latency timer to 64 [ 1.646822] uhci_hcd 0000:00:1d.1: UHCI Host Controller [ 1.646874] uhci_hcd 0000:00:1d.1: new USB bus registered, assigned bus number 6 [ 1.646912] uhci_hcd 0000:00:1d.1: irq 19, io base 0x0000b000 [ 1.647103] hub 6-0:1.0: USB hub found [ 1.647111] hub 6-0:1.0: 2 ports detected [ 1.647207] uhci_hcd 0000:00:1d.2: PCI INT C -> GSI 18 (level, low) -> IRQ 18 [ 1.647215] uhci_hcd 0000:00:1d.2: setting latency timer to 64 [ 1.647220] uhci_hcd 0000:00:1d.2: UHCI Host Controller [ 1.647273] uhci_hcd 0000:00:1d.2: new USB bus registered, assigned bus number 7 [ 1.647297] uhci_hcd 0000:00:1d.2: irq 18, io base 0x0000b400 [ 1.647480] hub 7-0:1.0: USB hub found [ 1.647488] hub 7-0:1.0: 2 ports detected [ 1.647583] uhci_hcd 0000:00:1d.3: PCI INT A -> GSI 16 (level, low) -> IRQ 16 [ 1.647591] uhci_hcd 0000:00:1d.3: setting latency timer to 64 [ 1.647596] uhci_hcd 0000:00:1d.3: UHCI Host Controller [ 1.647650] uhci_hcd 0000:00:1d.3: new USB bus registered, assigned bus number 8 [ 1.647673] uhci_hcd 0000:00:1d.3: irq 16, io base 0x0000b800 [ 1.647854] hub 8-0:1.0: USB hub found [ 1.647862] hub 8-0:1.0: 2 ports detected [ 1.648054] PNP: No PS/2 controller found. Probing ports directly. [ 1.649485] sdb: [ 1.649635] sd 0:0:0:0: [sda] Attached SCSI disk [ 1.657054] sdb1 [ 1.657324] sd 2:0:0:0: [sdb] Attached SCSI disk [ 1.812021] usb 1-4: new high speed USB device using ehci_hcd and address 3 [ 1.901291] serio: i8042 KBD port at 0x60,0x64 irq 1 [ 1.901408] mice: PS/2 mouse device common for all mice [ 1.901517] rtc_cmos 00:03: RTC can wake from S4 [ 1.901576] rtc_cmos 00:03: rtc core: registered rtc_cmos as rtc0 [ 1.901599] rtc0: alarms up to one month, 242 bytes nvram, hpet irqs [ 1.901749] device-mapper: uevent: version 1.0.3 [ 1.901902] device-mapper: ioctl: 4.17.0-ioctl (2010-03-05) initialised: dm-devel@redhat.com [ 1.902002] device-mapper: multipath: version 1.1.1 loaded [ 1.902007] device-mapper: multipath round-robin: version 1.0.0 loaded [ 1.902158] EISA: Probing bus 0 at eisa.0 [ 1.902189] Cannot allocate resource for EISA slot 7 [ 1.902192] Cannot allocate resource for EISA slot 8 [ 1.902194] EISA: Detected 0 cards. [ 1.902304] cpuidle: using governor ladder [ 1.902308] cpuidle: using governor menu [ 1.902837] TCP cubic registered [ 1.903008] NET: Registered protocol family 10 [ 1.903561] lo: Disabled Privacy Extensions [ 1.903958] NET: Registered protocol family 17 [ 1.904033] Using IPI No-Shortcut mode [ 1.904134] PM: Resume from disk failed. [ 1.904150] registered taskstats version 1 [ 1.904402] Magic number: 14:210:593 [ 1.904471] rtc_cmos 00:03: setting system clock to 2010-10-18 17:35:45 UTC (1287423345) [ 1.904475] BIOS EDD facility v0.16 2004-Jun-25, 0 devices found [ 1.904478] EDD information not available. [ 1.904550] Freeing unused kernel memory: 684k freed [ 1.905039] Write protecting the kernel text: 4944k [ 1.905107] Write protecting the kernel read-only data: 2012k [ 1.930378] udev: starting version 151 [ 1.948702] hub 1-4:1.0: USB hub found [ 1.948793] hub 1-4:1.0: 7 ports detected [ 2.064082] usb 1-7: new high speed USB device using ehci_hcd and address 4 [ 2.173916] e1000: Intel(R) PRO/1000 Network Driver - version 7.3.21-k6-NAPI [ 2.173922] e1000: Copyright (c) 1999-2006 Intel Corporation. [ 2.173975] e1000 0000:02:01.0: PCI INT A -> GSI 18 (level, low) -> IRQ 18 [ 2.173988] e1000 0000:02:01.0: setting latency timer to 64 [ 2.188407] firewire_ohci 0000:04:01.0: PCI INT A -> GSI 17 (level, low) -> IRQ 17 [ 2.261551] Initializing USB Mass Storage driver... [ 2.261747] scsi4 : usb-storage 1-7:1.0 [ 2.261895] usbcore: registered new interface driver usb-storage [ 2.261899] USB Mass Storage support registered. [ 2.281015] firewire_ohci: Added fw-ohci device 0000:04:01.0, OHCI v1.10, 4 IR + 4 IT contexts, quirks 0x1 [ 2.360018] usb 5-1: new low speed USB device using uhci_hcd and address 2 [ 2.564779] usbcore: registered new interface driver hiddev [ 2.564953] usbcore: registered new interface driver usbhid [ 2.564958] usbhid: USB HID core driver [ 2.583025] input: Logitech USB Receiver as /devices/pci0000:00/0000:00:1d.0/usb5/5-1/5-1:1.0/input/input2 [ 2.583168] logitech 0003:046D:C512.0001: input,hidraw0: USB HID v1.10 Keyboard [Logitech USB Receiver] on usb-0000:00:1d.0-1/input0 [ 2.618794] input: Logitech USB Receiver as /devices/pci0000:00/0000:00:1d.0/usb5/5-1/5-1:1.1/input/input3 [ 2.618980] logitech 0003:046D:C512.0002: input,hidraw1: USB HID v1.10 Mouse [Logitech USB Receiver] on usb-0000:00:1d.0-1/input1 [ 2.628172] usb 1-4.1: new high speed USB device using ehci_hcd and address 5 [ 2.773128] firewire_core: created device fw0: GUID 0001080037002e25, S400 [ 2.810556] e1000 0000:02:01.0: eth0: (PCI:33MHz:32-bit) 00:01:29:24:27:6e [ 2.810566] e1000 0000:02:01.0: eth0: Intel(R) PRO/1000 Network Connection [ 2.936121] usb 1-4.7: new full speed USB device using ehci_hcd and address 6 [ 3.007246] EXT3-fs (sda6): recovery required on readonly filesystem [ 3.007253] EXT3-fs (sda6): write access will be enabled during recovery [ 3.011016] EXT3-fs: barriers not enabled [ 3.269460] scsi 4:0:0:0: Direct-Access Y-E DATA CF Card Reader 3.02 PQ: 0 ANSI: 0 [ 3.273080] scsi 4:0:0:1: Direct-Access Y-E DATA SM Card Reader 3.02 PQ: 0 ANSI: 0 [ 3.276829] scsi 4:0:0:2: Direct-Access Y-E DATA MS Card Reader 3.02 PQ: 0 ANSI: 0 [ 3.279951] scsi 4:0:0:3: Direct-Access Y-E DATA SD Card Reader 3.02 PQ: 0 ANSI: 0 [ 3.280676] sd 4:0:0:0: Attached scsi generic sg4 type 0 [ 3.280943] sd 4:0:0:1: Attached scsi generic sg5 type 0 [ 3.281296] sd 4:0:0:2: Attached scsi generic sg6 type 0 [ 3.282654] sd 4:0:0:3: Attached scsi generic sg7 type 0 [ 3.585409] sd 4:0:0:2: [sde] Attached SCSI removable disk [ 3.594522] sd 4:0:0:0: [sdc] Attached SCSI removable disk [ 3.598390] sd 4:0:0:1: [sdd] Attached SCSI removable disk [ 3.605773] sd 4:0:0:3: [sdf] Attached SCSI removable disk [ 5.453924] kjournald starting. Commit interval 5 seconds [ 5.453956] EXT3-fs (sda6): recovery complete [ 5.454289] EXT3-fs (sda6): mounted filesystem with ordered data mode [ 31.336355] udev: starting version 151 [ 31.579370] intel_rng: FWH not detected [ 31.591578] shpchp: Standard Hot Plug PCI Controller Driver version: 0.4 [ 31.672252] Linux agpgart interface v0.103 [ 31.838249] Adding 4000148k swap on /dev/sda7. Priority:-1 extents:1 across:4000148k [ 31.952229] Bluetooth: Core ver 2.15 [ 31.952313] NET: Registered protocol family 31 [ 31.952317] Bluetooth: HCI device and connection manager initialized [ 31.952322] Bluetooth: HCI socket layer initialized [ 31.964339] agpgart-intel 0000:00:00.0: Intel i875 Chipset [ 31.979112] agpgart-intel 0000:00:00.0: AGP aperture is 128M @ 0xf0000000 [ 32.017353] Bluetooth: Generic Bluetooth USB driver ver 0.6 [ 32.018654] usbcore: registered new interface driver btusb [ 32.049535] lp: driver loaded but no devices found [ 32.080276] type=1400 audit(1287437775.671:2): operation="profile_load" pid=717 name="/sbin/dhclient3" pid=717 comm="apparmor_parser" [ 32.081033] type=1400 audit(1287437775.671:3): operation="profile_load" pid=717 name="/usr/lib/NetworkManager/nm-dhcp-client.action" pid=717 comm="apparmor_parser" [ 32.081476] type=1400 audit(1287437775.671:4): operation="profile_load" pid=717 name="/usr/lib/connman/scripts/dhclient-script" pid=717 comm="apparmor_parser" [ 32.195514] Adding 1048572k swap on /dev/mapper/vg0-swap0. Priority:-2 extents:1 across:1048572k [ 32.201545] [drm] Initialized drm 1.1.0 20060810 [ 32.256893] type=1400 audit(1287437775.847:5): operation="profile_load" pid=725 name="/usr/sbin/ntpd" pid=725 comm="apparmor_parser" [ 32.482376] Linux video capture interface: v2.00 [ 32.548838] EDAC MC: Ver: 2.1.0 Jul 7 2010 [ 32.609535] RPC: Registered udp transport module. [ 32.609541] RPC: Registered tcp transport module. [ 32.609545] RPC: Registered tcp NFSv4.1 backchannel transport module. [ 32.766995] EDAC i82875p: i82875p init one [ 32.768731] EDAC MC0: Giving out device to 'i82875p_edac' 'i82875p': DEV 0000:00:00.0 [ 32.769944] EDAC PCI0: Giving out device to module 'i82875p_edac' controller 'EDAC PCI controller': DEV '0000:00:00.0' (POLLED) [ 32.798130] uvcvideo: Found UVC 1.00 device (046d:0994) [ 32.813354] input: UVC Camera (046d:0994) as /devices/pci0000:00/0000:00:1d.7/usb1/1-4/1-4.1/1-4.1:1.0/input/input4 [ 32.813462] usbcore: registered new interface driver uvcvideo [ 32.813466] USB Video Class driver (v0.1.0) [ 33.047539] [drm] radeon defaulting to kernel modesetting. [ 33.047544] [drm] radeon kernel modesetting enabled. [ 33.047611] radeon 0000:01:00.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16 [ 33.049541] [drm] initializing kernel modesetting (RV630 0x1002:0x9586). [ 33.049676] [drm] register mmio base: 0xF9000000 [ 33.049679] [drm] register mmio size: 65536 [ 33.049800] modprobe:592 freeing invalid memtype e0000000-e0040000 [ 33.051755] ATOM BIOS: 113 [ 33.051768] [drm] Clocks initialized ! [ 33.051810] agpgart-intel 0000:00:00.0: AGP 3.0 bridge [ 33.051834] agpgart-intel 0000:00:00.0: putting AGP V3 device into 4x mode [ 33.051883] radeon 0000:01:00.0: putting AGP V3 device into 4x mode [ 33.051939] radeon 0000:01:00.0: GTT: 128M 0xF0000000 - 0xF7FFFFFF [ 33.051946] radeon 0000:01:00.0: VRAM: 512M 0xD0000000 - 0xEFFFFFFF (512M used) [ 33.052316] [drm] Detected VRAM RAM=512M, BAR=256M [ 33.052322] [drm] RAM width 128bits DDR [ 33.052415] [TTM] Zone kernel: Available graphics memory: 426510 kiB. [ 33.052418] [TTM] Zone highmem: Available graphics memory: 1806834 kiB. [ 33.052421] [TTM] Initializing pool allocator. [ 33.052443] [drm] radeon: 512M of VRAM memory ready [ 33.052446] [drm] radeon: 128M of GTT memory ready. [ 33.052497] [drm] radeon: irq initialized. [ 33.052501] [drm] GART: num cpu pages 32768, num gpu pages 32768 [ 33.052687] [drm] Loading RV630 Microcode [ 33.437316] BUG: unable to handle kernel NULL pointer dereference at (null) [ 33.437466] IP: [] __mutex_lock_slowpath+0x9a/0x140 [ 33.437587] *pde = df469067 [ 33.437650] Oops: 0002 [#1] SMP [ 33.437727] last sysfs file: /sys/devices/platform/radeon_cp.0/firmware/radeon_cp.0/loading [ 33.437888] Modules linked in: snd_seq_midi_event radeon(+) snd_seq sbp2 uvcvideo i82875p_edac snd_timer snd_seq_device ieee1394 sunrpc edac_core videodev ttm v4l1_compat drm_kms_helper snd drm i2c_algo_bit snd_page_alloc btusb soundcore intel_agp lp bluetooth agpgart parport shpchp serio_raw hid_logitech ff_memless usbhid hid usb_storage firewire_ohci e1000 firewire_core crc_itu_t [ 33.438742] [ 33.438775] Pid: 353, comm: plymouthd Not tainted 2.6.35-7-generic #11-Ubuntu Canterwood/ [ 33.438934] EIP: 0060:[] EFLAGS: 00010246 CPU: 0 [ 33.439041] EIP is at __mutex_lock_slowpath+0x9a/0x140 [ 33.439141] EAX: 00000000 EBX: f2796e90 ECX: f2796e98 EDX: f6a71ec0 [ 33.439262] ESI: f2796e94 EDI: f2796e90 EBP: f6a71ed8 ESP: f6a71eb4 [ 33.439384] DS: 007b ES: 007b FS: 00d8 GS: 00e0 SS: 0068 [ 33.439488] Process plymouthd (pid: 353, ti=f6a70000 task=c106cc20 task.ti=f6a70000) [ 33.439637] Stack: [ 33.439676] f6a71ec4 c106cc20 f2796e98 f2796e98 00000000 f2796c00 f2796e90 f6b1fb00 [ 33.439862] <0> f2796e90 f6a71ee8 c05cb095 f6b1fb00 f6b1fb00 f6a71efc f87e7dc3 f6b1fb00 [ 33.440063] <0> f6b1fb60 f2796c00 f6a71f44 f87df337 00000001 f87efe25 f87ef220 f87f1590 [ 33.440076] Call Trace: [ 33.440076] [] ? mutex_lock+0x25/0x40 [ 33.440076] [] ? drm_fb_release+0x23/0x70 [drm] [ 33.440076] [] ? drm_release+0x3e7/0x4c0 [drm] [ 33.440076] [] ? __fput+0xdf/0x1f0 [ 33.440076] [] ? fput+0x1d/0x30 [ 33.440076] [] ? filp_close+0x4c/0x80 [ 33.440076] [] ? sys_close+0x75/0xc0 [ 33.440076] [] ? syscall_call+0x7/0xb [ 33.440076] Code: 83 79 18 63 7f b3 8d 76 00 8d 73 04 89 f0 e8 5e 11 00 00 8d 53 08 89 55 e4 8d 55 e8 8b 43 0c 89 53 0c 8b 4d e4 89 45 ec 89 4d e8 <89> 10 8b 45 e0 ba ff ff ff ff 89 45 f0 89 d0 87 03 83 f8 01 74 [ 33.440076] EIP: [] __mutex_lock_slowpath+0x9a/0x140 SS:ESP 0068:f6a71eb4 [ 33.440076] CR2: 0000000000000000 [ 33.442242] ---[ end trace 53be06f38f812f8c ]--- [ 33.534989] [drm] ring test succeeded in 1 usecs [ 33.535510] [drm] radeon: ib pool ready. [ 33.535694] [drm] ib test succeeded in 0 usecs [ 33.535785] [drm] Enabling audio support [ 33.535870] failed to evaluate ATIF got AE_BAD_PARAMETER [ 33.535979] radeon 0000:01:00.0: Error during ACPI methods call [ 33.536528] [drm] Default TV standard: NTSC [ 33.536623] [drm] Default TV standard: NTSC [ 33.536986] [drm] Default TV standard: NTSC [ 33.537582] [drm] Radeon Display Connectors [ 33.537672] [drm] Connector 0: [ 33.537735] [drm] DVI-I [ 33.537790] [drm] HPD1 [ 33.537845] [drm] DDC: 0x7e50 0x7e50 0x7e54 0x7e54 0x7e58 0x7e58 0x7e5c 0x7e5c [ 33.537994] [drm] Encoders: [ 33.538056] [drm] DFP1: INTERNAL_KLDSCP_TMDS1 [ 33.538151] [drm] CRT2: INTERNAL_KLDSCP_DAC2 [ 33.538247] [drm] Connector 1: [ 33.538309] [drm] DIN [ 33.538359] [drm] Encoders: [ 33.538418] [drm] TV1: INTERNAL_KLDSCP_DAC2 [ 33.538510] [drm] Connector 2: [ 33.538573] [drm] DVI-I [ 33.538627] [drm] HPD2 [ 33.538681] [drm] DDC: 0x7e40 0x7e40 0x7e44 0x7e44 0x7e48 0x7e48 0x7e4c 0x7e4c [ 33.538830] [drm] Encoders: [ 33.538890] [drm] CRT1: INTERNAL_KLDSCP_DAC1 [ 33.544571] [drm] DFP2: INTERNAL_LVTM1 [ 33.659456] [drm] Internal thermal controller with fan control [ 33.665086] [drm] radeon: power management initialized [ 34.264177] [drm] fb mappable at 0xE0081000 [ 34.269831] [drm] vram apper at 0xE0000000 [ 34.275368] [drm] size 8294400 [ 34.280589] [drm] fb depth is 24 [ 34.285599] [drm] pitch is 7680 [ 34.290454] checking generic (e0000000 1000000) vs hw (e0000000 20000000) [ 34.295384] fb: conflicting fb hw usage radeondrmfb vs VESA VGA - removing generic driver [ 34.300401] Console: switching to colour dummy device 80x25 [ 34.416407] usbcore: registered new interface driver snd-usb-audio [ 34.477816] ENS1371 0000:03:0e.0: PCI INT A -> GSI 18 (level, low) -> IRQ 18 [ 35.916168] Console: switching to colour frame buffer device 160x64 [ 35.948830] fb0: radeondrmfb frame buffer device [ 35.948836] drm: registered panic notifier [ 35.948844] Slow work thread pool: Starting up [ 35.949100] Slow work thread pool: Ready [ 35.949127] [drm] Initialized radeon 2.5.0 20080528 for 0000:01:00.0 on minor 0 [ 35.949862] HDA Intel 0000:01:00.1: PCI INT B -> GSI 17 (level, low) -> IRQ 17 [ 35.984072] vga16fb: initializing [ 35.984211] vga16fb: mapped to 0xc00a0000 [ 35.984750] fb1: VGA16 VGA frame buffer device [ 35.985397] EXT3-fs (sda6): using internal journal [ 36.292394] EXT3-fs: barriers not enabled [ 36.292729] kjournald starting. Commit interval 5 seconds [ 36.293023] EXT3-fs (sda2): using internal journal [ 36.293230] EXT3-fs (sda2): mounted filesystem with ordered data mode [ 39.807764] EXT4-fs (dm-0): mounted filesystem with ordered data mode. Opts: (null) [ 44.395518] EXT4-fs (dm-3): mounted filesystem with ordered data mode. Opts: (null) [ 46.967894] EXT3-fs: barriers not enabled [ 47.028483] kjournald starting. Commit interval 5 seconds [ 47.037283] EXT3-fs (dm-1): using internal journal [ 47.045546] EXT3-fs (dm-1): mounted filesystem with ordered data mode [ 47.223769] FS-Cache: Loaded [ 47.370597] type=1400 audit(1287437790.959:6): operation="profile_load" pid=1222 name="/usr/share/gdm/guest-session/Xsession" pid=1222 comm="apparmor_parser" [ 47.376643] type=1400 audit(1287437790.963:7): operation="profile_replace" pid=1223 name="/sbin/dhclient3" pid=1223 comm="apparmor_parser" [ 47.377566] type=1400 audit(1287437790.963:8): operation="profile_replace" pid=1223 name="/usr/lib/NetworkManager/nm-dhcp-client.action" pid=1223 comm="apparmor_parser" [ 47.378039] type=1400 audit(1287437790.963:9): operation="profile_replace" pid=1223 name="/usr/lib/connman/scripts/dhclient-script" pid=1223 comm="apparmor_parser" [ 47.391207] type=1400 audit(1287437790.963:10): operation="profile_load" pid=1224 name="/usr/bin/evince" pid=1224 comm="apparmor_parser" [ 47.402006] type=1400 audit(1287437790.983:11): operation="profile_load" pid=1224 name="/usr/bin/evince-previewer" pid=1224 comm="apparmor_parser" [ 47.408684] type=1400 audit(1287437790.983:12): operation="profile_load" pid=1224 name="/usr/bin/evince-thumbnailer" pid=1224 comm="apparmor_parser" [ 47.523213] FS-Cache: Netfs 'nfs' registered for caching [ 47.588387] type=1400 audit(1287437791.179:13): operation="profile_load" pid=1226 name="/usr/lib/libvirt/virt-aa-helper" pid=1226 comm="apparmor_parser" [ 47.602703] type=1400 audit(1287437791.191:14): operation="profile_load" pid=1242 name="/usr/lib/cups/backend/cups-pdf" pid=1242 comm="apparmor_parser" [ 47.614847] type=1400 audit(1287437791.203:15): operation="profile_load" pid=1242 name="/usr/sbin/cupsd" pid=1242 comm="apparmor_parser" [ 47.730774] Installing knfsd (copyright (C) 1996 okir@monad.swb.de). [ 47.781243] ADDRCONF(NETDEV_UP): eth0: link is not ready [ 47.814996] e1000: eth0 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: RX/TX [ 47.855271] ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready Bug: 665424 [ 0.000000] Initializing cgroup subsys cpuset [ 0.000000] Initializing cgroup subsys cpu [ 0.000000] Linux version 2.6.35-22-generic (buildd@allspice) (gcc version 4.4.5 (Ubuntu/Linaro 4.4.4-14ubuntu4) ) #33-Ubuntu SMP Sun Sep 19 20:32:27 UTC 2010 (Ubuntu 2.6.35-22.33-generic 2.6.35.4) [ 0.000000] Command line: file=/cdrom/preseed/ubuntu.seed boot=casper initrd=/casper/initrd.lz quiet splash -- maybe-ubiquity [ 0.000000] BIOS-provided physical RAM map: [ 0.000000] BIOS-e820: 0000000000000000 - 000000000009d000 (usable) [ 0.000000] BIOS-e820: 000000000009d000 - 00000000000a0000 (reserved) [ 0.000000] BIOS-e820: 00000000000e0000 - 0000000000100000 (reserved) [ 0.000000] BIOS-e820: 0000000000100000 - 00000000bb63f000 (usable) [ 0.000000] BIOS-e820: 00000000bb63f000 - 00000000bb6bf000 (reserved) [ 0.000000] BIOS-e820: 00000000bb6bf000 - 00000000bb7bf000 (ACPI NVS) [ 0.000000] BIOS-e820: 00000000bb7bf000 - 00000000bb7ff000 (ACPI data) [ 0.000000] BIOS-e820: 00000000bb7ff000 - 00000000bb800000 (usable) [ 0.000000] BIOS-e820: 00000000bb800000 - 00000000c0000000 (reserved) [ 0.000000] BIOS-e820: 00000000e0000000 - 00000000f0000000 (reserved) [ 0.000000] BIOS-e820: 00000000feb00000 - 00000000feb04000 (reserved) [ 0.000000] BIOS-e820: 00000000fec00000 - 00000000fec01000 (reserved) [ 0.000000] BIOS-e820: 00000000fed10000 - 00000000fed14000 (reserved) [ 0.000000] BIOS-e820: 00000000fed18000 - 00000000fed1a000 (reserved) [ 0.000000] BIOS-e820: 00000000fed1b000 - 00000000fed20000 (reserved) [ 0.000000] BIOS-e820: 00000000fee00000 - 00000000fee01000 (reserved) [ 0.000000] BIOS-e820: 00000000ffe80000 - 0000000100000000 (reserved) [ 0.000000] BIOS-e820: 0000000100000000 - 0000000138000000 (usable) [ 0.000000] Notice: NX (Execute Disable) protection missing in CPU or disabled in BIOS! [ 0.000000] DMI 2.6 present. [ 0.000000] e820 update range: 0000000000000000 - 0000000000001000 (usable) ==> (reserved) [ 0.000000] e820 remove range: 00000000000a0000 - 0000000000100000 (usable) [ 0.000000] No AGP bridge found [ 0.000000] last_pfn = 0x138000 max_arch_pfn = 0x400000000 [ 0.000000] MTRR default type: uncachable [ 0.000000] MTRR fixed ranges enabled: [ 0.000000] 00000-9FFFF write-back [ 0.000000] A0000-BFFFF uncachable [ 0.000000] C0000-EFFFF write-through [ 0.000000] F0000-FFFFF write-combining [ 0.000000] MTRR variable ranges enabled: [ 0.000000] 0 base 000000000 mask F80000000 write-back [ 0.000000] 1 base 0FFE80000 mask FFFF80000 write-protect [ 0.000000] 2 base 0FFF00000 mask FFFF00000 write-protect [ 0.000000] 3 base 080000000 mask FC0000000 write-back [ 0.000000] 4 base 0BC000000 mask FFC000000 uncachable [ 0.000000] 5 base 0BB800000 mask FFF800000 uncachable [ 0.000000] 6 base 100000000 mask FC0000000 write-back [ 0.000000] 7 base 138000000 mask FF8000000 uncachable [ 0.000000] x86 PAT enabled: cpu 0, old 0x7040600070406, new 0x7010600070106 [ 0.000000] last_pfn = 0xbb800 max_arch_pfn = 0x400000000 [ 0.000000] e820 update range: 0000000000001000 - 0000000000010000 (usable) ==> (reserved) [ 0.000000] Scanning 1 areas for low memory corruption [ 0.000000] modified physical RAM map: [ 0.000000] modified: 0000000000000000 - 0000000000010000 (reserved) [ 0.000000] modified: 0000000000010000 - 000000000009d000 (usable) [ 0.000000] modified: 000000000009d000 - 00000000000a0000 (reserved) [ 0.000000] modified: 00000000000e0000 - 0000000000100000 (reserved) [ 0.000000] modified: 0000000000100000 - 00000000bb63f000 (usable) [ 0.000000] modified: 00000000bb63f000 - 00000000bb6bf000 (reserved) [ 0.000000] modified: 00000000bb6bf000 - 00000000bb7bf000 (ACPI NVS) [ 0.000000] modified: 00000000bb7bf000 - 00000000bb7ff000 (ACPI data) [ 0.000000] modified: 00000000bb7ff000 - 00000000bb800000 (usable) [ 0.000000] modified: 00000000bb800000 - 00000000c0000000 (reserved) [ 0.000000] modified: 00000000e0000000 - 00000000f0000000 (reserved) [ 0.000000] modified: 00000000feb00000 - 00000000feb04000 (reserved) [ 0.000000] modified: 00000000fec00000 - 00000000fec01000 (reserved) [ 0.000000] modified: 00000000fed10000 - 00000000fed14000 (reserved) [ 0.000000] modified: 00000000fed18000 - 00000000fed1a000 (reserved) [ 0.000000] modified: 00000000fed1b000 - 00000000fed20000 (reserved) [ 0.000000] modified: 00000000fee00000 - 00000000fee01000 (reserved) [ 0.000000] modified: 00000000ffe80000 - 0000000100000000 (reserved) [ 0.000000] modified: 0000000100000000 - 0000000138000000 (usable) [ 0.000000] initial memory mapped : 0 - 20000000 [ 0.000000] init_memory_mapping: 0000000000000000-00000000bb800000 [ 0.000000] 0000000000 - 00bb800000 page 2M [ 0.000000] kernel direct mapping tables up to bb800000 @ 16000-1a000 [ 0.000000] init_memory_mapping: 0000000100000000-0000000138000000 [ 0.000000] 0100000000 - 0138000000 page 2M [ 0.000000] kernel direct mapping tables up to 138000000 @ 18000-1e000 [ 0.000000] RAMDISK: 7f4c1000 - 80000000 [ 0.000000] ACPI: RSDP 00000000000fe020 00024 (v02 TOSQCI) [ 0.000000] ACPI: XSDT 00000000bb7fe120 00074 (v01 TOSQCI TOSQCI00 00000001 01000013) [ 0.000000] ACPI: FACP 00000000bb7fc000 000F4 (v04 TOSQCI TOSQCI00 00000001 MSFT 01000013) [ 0.000000] ACPI: DSDT 00000000bb7ed000 0BFF8 (v02 TOSQCI TOSQCI00 00000001 MSFT 01000013) [ 0.000000] ACPI: FACS 00000000bb76e000 00040 [ 0.000000] ACPI: ASF! 00000000bb7fd000 000A5 (v32 TOSQCI TOSQCI00 00000001 MSFT 01000013) [ 0.000000] ACPI: HPET 00000000bb7fb000 00038 (v01 TOSQCI TOSQCI00 00000001 MSFT 01000013) [ 0.000000] ACPI: APIC 00000000bb7fa000 0008C (v02 TOSQCI TOSQCI00 00000001 MSFT 01000013) [ 0.000000] ACPI: MCFG 00000000bb7f9000 0003C (v01 TOSQCI TOSQCI00 00000001 MSFT 01000013) [ 0.000000] ACPI: SLIC 00000000bb7ec000 00176 (v01 TOSQCI TOSQCI00 00000001 MSFT 01000013) [ 0.000000] ACPI: BOOT 00000000bb7e8000 00028 (v01 TOSQCI TOSQCI00 00000001 MSFT 01000013) [ 0.000000] ACPI: ASPT 00000000bb7e5000 00034 (v04 INTEL Calpella 00000001 MSFT 01000013) [ 0.000000] ACPI: WDAT 00000000bb7e4000 00224 (v01 INTEL Calpella 00000001 MSFT 01000013) [ 0.000000] ACPI: SSDT 00000000bb7e3000 009F1 (v01 PmRef CpuPm 00003000 INTL 20051117) [ 0.000000] ACPI: Local APIC address 0xfee00000 [ 0.000000] No NUMA configuration found [ 0.000000] Faking a node at 0000000000000000-0000000138000000 [ 0.000000] Initmem setup node 0 0000000000000000-0000000138000000 [ 0.000000] NODE_DATA [0000000100000000 - 0000000100004fff] [ 0.000000] [ffffea0000000000-ffffea00045fffff] PMD -> [ffff880100200000-ffff8801039fffff] on node 0 [ 0.000000] Zone PFN ranges: [ 0.000000] DMA 0x00000010 -> 0x00001000 [ 0.000000] DMA32 0x00001000 -> 0x00100000 [ 0.000000] Normal 0x00100000 -> 0x00138000 [ 0.000000] Movable zone start PFN for each node [ 0.000000] early_node_map[4] active PFN ranges [ 0.000000] 0: 0x00000010 -> 0x0000009d [ 0.000000] 0: 0x00000100 -> 0x000bb63f [ 0.000000] 0: 0x000bb7ff -> 0x000bb800 [ 0.000000] 0: 0x00100000 -> 0x00138000 [ 0.000000] On node 0 totalpages: 996813 [ 0.000000] DMA zone: 56 pages used for memmap [ 0.000000] DMA zone: 0 pages reserved [ 0.000000] DMA zone: 3925 pages, LIFO batch:0 [ 0.000000] DMA32 zone: 14280 pages used for memmap [ 0.000000] DMA32 zone: 749176 pages, LIFO batch:31 [ 0.000000] Normal zone: 3136 pages used for memmap [ 0.000000] Normal zone: 226240 pages, LIFO batch:31 [ 0.000000] ACPI: PM-Timer IO Port: 0x408 [ 0.000000] ACPI: Local APIC address 0xfee00000 [ 0.000000] ACPI: LAPIC (acpi_id[0x01] lapic_id[0x00] enabled) [ 0.000000] ACPI: LAPIC (acpi_id[0x02] lapic_id[0x04] enabled) [ 0.000000] ACPI: LAPIC (acpi_id[0x03] lapic_id[0x00] disabled) [ 0.000000] ACPI: LAPIC (acpi_id[0x04] lapic_id[0x00] disabled) [ 0.000000] ACPI: LAPIC (acpi_id[0x05] lapic_id[0x00] disabled) [ 0.000000] ACPI: LAPIC (acpi_id[0x06] lapic_id[0x00] disabled) [ 0.000000] ACPI: LAPIC (acpi_id[0x07] lapic_id[0x00] disabled) [ 0.000000] ACPI: LAPIC (acpi_id[0x08] lapic_id[0x00] disabled) [ 0.000000] ACPI: IOAPIC (id[0x02] address[0xfec00000] gsi_base[0]) [ 0.000000] IOAPIC[0]: apic_id 2, version 32, address 0xfec00000, GSI 0-23 [ 0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 0 global_irq 2 dfl dfl) [ 0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 9 global_irq 9 high level) [ 0.000000] ACPI: IRQ0 used by override. [ 0.000000] ACPI: IRQ2 used by override. [ 0.000000] ACPI: IRQ9 used by override. [ 0.000000] Using ACPI (MADT) for SMP configuration information [ 0.000000] ACPI: HPET id: 0x8086a201 base: 0xfed00000 [ 0.000000] SMP: Allowing 8 CPUs, 6 hotplug CPUs [ 0.000000] nr_irqs_gsi: 40 [ 0.000000] early_res array is doubled to 64 at [19000 - 197ff] [ 0.000000] PM: Registered nosave memory: 000000000009d000 - 00000000000a0000 [ 0.000000] PM: Registered nosave memory: 00000000000a0000 - 00000000000e0000 [ 0.000000] PM: Registered nosave memory: 00000000000e0000 - 0000000000100000 [ 0.000000] PM: Registered nosave memory: 00000000bb63f000 - 00000000bb6bf000 [ 0.000000] PM: Registered nosave memory: 00000000bb6bf000 - 00000000bb7bf000 [ 0.000000] PM: Registered nosave memory: 00000000bb7bf000 - 00000000bb7ff000 [ 0.000000] PM: Registered nosave memory: 00000000bb800000 - 00000000c0000000 [ 0.000000] PM: Registered nosave memory: 00000000c0000000 - 00000000e0000000 [ 0.000000] PM: Registered nosave memory: 00000000e0000000 - 00000000f0000000 [ 0.000000] PM: Registered nosave memory: 00000000f0000000 - 00000000feb00000 [ 0.000000] PM: Registered nosave memory: 00000000feb00000 - 00000000feb04000 [ 0.000000] PM: Registered nosave memory: 00000000feb04000 - 00000000fec00000 [ 0.000000] PM: Registered nosave memory: 00000000fec00000 - 00000000fec01000 [ 0.000000] PM: Registered nosave memory: 00000000fec01000 - 00000000fed10000 [ 0.000000] PM: Registered nosave memory: 00000000fed10000 - 00000000fed14000 [ 0.000000] PM: Registered nosave memory: 00000000fed14000 - 00000000fed18000 [ 0.000000] PM: Registered nosave memory: 00000000fed18000 - 00000000fed1a000 [ 0.000000] PM: Registered nosave memory: 00000000fed1a000 - 00000000fed1b000 [ 0.000000] PM: Registered nosave memory: 00000000fed1b000 - 00000000fed20000 [ 0.000000] PM: Registered nosave memory: 00000000fed20000 - 00000000fee00000 [ 0.000000] PM: Registered nosave memory: 00000000fee00000 - 00000000fee01000 [ 0.000000] PM: Registered nosave memory: 00000000fee01000 - 00000000ffe80000 [ 0.000000] PM: Registered nosave memory: 00000000ffe80000 - 0000000100000000 [ 0.000000] Allocating PCI resources starting at c0000000 (gap: c0000000:20000000) [ 0.000000] Booting paravirtualized kernel on bare hardware [ 0.000000] setup_percpu: NR_CPUS:64 nr_cpumask_bits:64 nr_cpu_ids:8 nr_node_ids:1 [ 0.000000] PERCPU: Embedded 30 pages/cpu @ffff880001e00000 s91520 r8192 d23168 u262144 [ 0.000000] early_res array is doubled to 128 at [19800 - 1a7ff] [ 0.000000] pcpu-alloc: s91520 r8192 d23168 u262144 alloc=1*2097152 [ 0.000000] pcpu-alloc: [0] 0 1 2 3 4 5 6 7 [ 0.000000] Built 1 zonelists in Node order, mobility grouping on. Total pages: 979341 [ 0.000000] Policy zone: Normal [ 0.000000] Kernel command line: file=/cdrom/preseed/ubuntu.seed boot=casper initrd=/casper/initrd.lz quiet splash -- maybe-ubiquity [ 0.000000] PID hash table entries: 4096 (order: 3, 32768 bytes) [ 0.000000] Checking aperture... [ 0.000000] No AGP bridge found [ 0.000000] Calgary: detecting Calgary via BIOS EBDA area [ 0.000000] Calgary: Unable to locate Rio Grande table in EBDA - bailing! [ 0.000000] Subtract (65 early reservations) [ 0.000000] #1 [0001000000 - 0001d17114] TEXT DATA BSS [ 0.000000] #2 [007f4c1000 - 0080000000] RAMDISK [ 0.000000] #3 [000009d000 - 0000100000] BIOS reserved [ 0.000000] #4 [0001d18000 - 0001d1827a] BRK [ 0.000000] #5 [0000010000 - 0000012000] TRAMPOLINE [ 0.000000] #6 [0000012000 - 0000016000] ACPI WAKEUP [ 0.000000] #7 [0000016000 - 0000018000] PGTABLE [ 0.000000] #8 [0000018000 - 0000019000] PGTABLE [ 0.000000] #9 [0100000000 - 0100005000] NODE_DATA [ 0.000000] #10 [0001d18280 - 0001d19280] BOOTMEM [ 0.000000] #11 [0001d17140 - 0001d17428] BOOTMEM [ 0.000000] #12 [0100005000 - 0100006000] BOOTMEM [ 0.000000] #13 [0100006000 - 0100007000] BOOTMEM [ 0.000000] #14 [0100200000 - 0103a00000] MEMMAP 0 [ 0.000000] #15 [0001d17440 - 0001d175c0] BOOTMEM [ 0.000000] #16 [0001d19280 - 0001d31280] BOOTMEM [ 0.000000] #17 [0001d31280 - 0001d37280] BOOTMEM [ 0.000000] #18 [0001d38000 - 0001d39000] BOOTMEM [ 0.000000] #19 [0001d175c0 - 0001d17601] BOOTMEM [ 0.000000] #20 [0001d17640 - 0001d17683] BOOTMEM [ 0.000000] #21 [0001d176c0 - 0001d17ae8] BOOTMEM [ 0.000000] #22 [0001d17b00 - 0001d17b68] BOOTMEM [ 0.000000] #23 [0001d17b80 - 0001d17be8] BOOTMEM [ 0.000000] #24 [0001d17c00 - 0001d17c68] BOOTMEM [ 0.000000] #25 [0001d17c80 - 0001d17ce8] BOOTMEM [ 0.000000] #26 [0001d17d00 - 0001d17d68] BOOTMEM [ 0.000000] #27 [0001d17d80 - 0001d17de8] BOOTMEM [ 0.000000] #28 [0001d17e00 - 0001d17e68] BOOTMEM [ 0.000000] #29 [0001d17e80 - 0001d17ee8] BOOTMEM [ 0.000000] #30 [0001d17f00 - 0001d17f68] BOOTMEM [ 0.000000] #31 [0001d17f80 - 0001d17fe8] BOOTMEM [ 0.000000] #32 [0001d37280 - 0001d372e8] BOOTMEM [ 0.000000] #33 [0001d37300 - 0001d37368] BOOTMEM [ 0.000000] #34 [0001d37380 - 0001d373e8] BOOTMEM [ 0.000000] #35 [0001d37400 - 0001d37468] BOOTMEM [ 0.000000] #36 [0001d37480 - 0001d374e8] BOOTMEM [ 0.000000] #37 [0001d37500 - 0001d37568] BOOTMEM [ 0.000000] #38 [0001d37580 - 0001d375e8] BOOTMEM [ 0.000000] #39 [0001d37600 - 0001d37668] BOOTMEM [ 0.000000] #40 [0001d37680 - 0001d376a0] BOOTMEM [ 0.000000] #41 [0001d376c0 - 0001d376e0] BOOTMEM [ 0.000000] #42 [0001d37700 - 0001d37720] BOOTMEM [ 0.000000] #43 [0001d37740 - 0001d377a4] BOOTMEM [ 0.000000] #44 [0001d377c0 - 0001d37824] BOOTMEM [ 0.000000] #45 [0001e00000 - 0001e1e000] BOOTMEM [ 0.000000] #46 [0001e40000 - 0001e5e000] BOOTMEM [ 0.000000] #47 [0001e80000 - 0001e9e000] BOOTMEM [ 0.000000] #48 [0001ec0000 - 0001ede000] BOOTMEM [ 0.000000] #49 [0001f00000 - 0001f1e000] BOOTMEM [ 0.000000] #50 [0001f40000 - 0001f5e000] BOOTMEM [ 0.000000] #51 [0001f80000 - 0001f9e000] BOOTMEM [ 0.000000] #52 [0001fc0000 - 0001fde000] BOOTMEM [ 0.000000] #53 [0001d37840 - 0001d37848] BOOTMEM [ 0.000000] #54 [0001d37880 - 0001d37888] BOOTMEM [ 0.000000] #55 [0001d378c0 - 0001d378e0] BOOTMEM [ 0.000000] #56 [0001d37900 - 0001d37940] BOOTMEM [ 0.000000] #57 [0001d37940 - 0001d37a60] BOOTMEM [ 0.000000] #58 [0001d37a80 - 0001d37ac8] BOOTMEM [ 0.000000] #59 [0001d37b00 - 0001d37b48] BOOTMEM [ 0.000000] #60 [0001d39000 - 0001d41000] BOOTMEM [ 0.000000] #61 [0001fde000 - 0005fde000] BOOTMEM [ 0.000000] #62 [0001d41000 - 0001d61000] BOOTMEM [ 0.000000] #63 [0001d61000 - 0001da1000] BOOTMEM [ 0.000000] #64 [000001a800 - 0000022800] BOOTMEM [ 0.000000] Memory: 3837840k/5111808k available (5708k kernel code, 1124556k absent, 149412k reserved, 5382k data, 908k init) [ 0.000000] SLUB: Genslabs=14, HWalign=64, Order=0-3, MinObjects=0, CPUs=8, Nodes=1 [ 0.000000] Hierarchical RCU implementation. [ 0.000000] RCU dyntick-idle grace-period acceleration is enabled. [ 0.000000] RCU-based detection of stalled CPUs is disabled. [ 0.000000] Verbose stalled-CPUs detection is disabled. [ 0.000000] NR_IRQS:4352 nr_irqs:744 [ 0.000000] Extended CMOS year: 2000 [ 0.000000] Console: colour VGA+ 80x25 [ 0.000000] console [tty0] enabled [ 0.000000] allocated 40632320 bytes of page_cgroup [ 0.000000] please try 'cgroup_disable=memory' option if you don't want memory cgroups [ 0.000000] hpet clockevent registered [ 0.000000] Fast TSC calibration using PIT [ 0.010000] Detected 1994.914 MHz processor. [ 0.000009] Calibrating delay loop (skipped), value calculated using timer frequency.. 3989.82 BogoMIPS (lpj=19949140) [ 0.000014] pid_max: default: 32768 minimum: 301 [ 0.000037] Security Framework initialized [ 0.000055] AppArmor: AppArmor initialized [ 0.000056] Yama: becoming mindful. [ 0.000520] Dentry cache hash table entries: 524288 (order: 10, 4194304 bytes) [ 0.001616] Inode-cache hash table entries: 262144 (order: 9, 2097152 bytes) [ 0.002041] Mount-cache hash table entries: 256 [ 0.002163] Initializing cgroup subsys ns [ 0.002168] Initializing cgroup subsys cpuacct [ 0.002172] Initializing cgroup subsys memory [ 0.002180] Initializing cgroup subsys devices [ 0.002182] Initializing cgroup subsys freezer [ 0.002185] Initializing cgroup subsys net_cls [ 0.002209] CPU: Physical Processor ID: 0 [ 0.002210] CPU: Processor Core ID: 0 [ 0.002216] mce: CPU supports 9 MCE banks [ 0.002227] CPU0: Thermal monitoring handled by SMI [ 0.002235] using mwait in idle threads. [ 0.002237] Performance Events: PEBS fmt1+, Westmere events, Intel PMU driver. [ 0.002246] ... version: 3 [ 0.002247] ... bit width: 48 [ 0.002249] ... generic registers: 4 [ 0.002251] ... value mask: 0000ffffffffffff [ 0.002252] ... max period: 000000007fffffff [ 0.002254] ... fixed-purpose events: 3 [ 0.002255] ... event mask: 000000070000000f [ 0.004707] ACPI: Core revision 20100428 [ 0.047035] ftrace: converting mcount calls to 0f 1f 44 00 00 [ 0.047040] ftrace: allocating 22680 entries in 89 pages [ 0.055631] Setting APIC routing to flat [ 0.056044] ..TIMER: vector=0x30 apic1=0 pin1=2 apic2=-1 pin2=-1 [ 0.155994] CPU0: Intel(R) Pentium(R) CPU P6100 @ 2.00GHz stepping 05 [ 0.273195] Booting Node 0, Processors #1 [ 0.433002] CPU1: Thermal monitoring handled by SMI [ 0.453047] Brought up 2 CPUs [ 0.453050] Total of 2 processors activated (7979.81 BogoMIPS). [ 0.453723] devtmpfs: initialized [ 0.454849] regulator: core version 0.5 [ 0.454880] Time: 6:27:32 Date: 10/22/10 [ 0.454919] NET: Registered protocol family 16 [ 0.454995] Trying to unpack rootfs image as initramfs... [ 0.455044] ACPI FADT declares the system doesn't support PCIe ASPM, so disable it [ 0.455047] ACPI: bus type pci registered [ 0.455129] PCI: MMCONFIG for domain 0000 [bus 00-ff] at [mem 0xe0000000-0xefffffff] (base 0xe0000000) [ 0.455133] PCI: MMCONFIG at [mem 0xe0000000-0xefffffff] reserved in E820 [ 0.496811] PCI: Using configuration type 1 for base access [ 1.452641] bio: create slab at 0 [ 1.455465] ACPI: EC: Look up EC in DSDT [ 1.458442] ACPI: Executed 1 blocks of module-level executable AML code [ 1.464327] ACPI: BIOS _OSI(Linux) query ignored [ 1.467249] ACPI: SSDT 00000000bb691c18 0037E (v01 PmRef Cpu0Ist 00003000 INTL 20051117) [ 1.467956] ACPI: Dynamic OEM Table Load: [ 1.467959] ACPI: SSDT (null) 0037E (v01 PmRef Cpu0Ist 00003000 INTL 20051117) [ 1.468466] ACPI: SSDT 00000000bb68f018 00891 (v01 PmRef Cpu0Cst 00003001 INTL 20051117) [ 1.469177] ACPI: Dynamic OEM Table Load: [ 1.469180] ACPI: SSDT (null) 00891 (v01 PmRef Cpu0Cst 00003001 INTL 20051117) [ 1.469945] ACPI: SSDT 00000000bb690a98 00303 (v01 PmRef ApIst 00003000 INTL 20051117) [ 1.470739] ACPI: Dynamic OEM Table Load: [ 1.470742] ACPI: SSDT (null) 00303 (v01 PmRef ApIst 00003000 INTL 20051117) [ 1.471027] ACPI: SSDT 00000000bb68ed98 00119 (v01 PmRef ApCst 00003000 INTL 20051117) [ 1.471772] ACPI: Dynamic OEM Table Load: [ 1.471775] ACPI: SSDT (null) 00119 (v01 PmRef ApCst 00003000 INTL 20051117) [ 1.472160] ACPI: Interpreter enabled [ 1.472163] ACPI: (supports S0 S3 S4 S5) [ 1.472203] ACPI: Using IOAPIC for interrupt routing [ 1.484998] ACPI: EC: GPE = 0x1e, I/O: command/status = 0x66, data = 0x62 [ 1.485782] ACPI: ACPI Dock Station Driver: 1 docks/bays found [ 1.485786] PCI: Using host bridge windows from ACPI; if necessary, use "pci=nocrs" and report a bug [ 1.486885] \_SB_.PCI0:_OSC invalid UUID [ 1.486887] _OSC request data:1 8 1f [ 1.486891] ACPI: PCI Root Bridge [PCI0] (domain 0000 [bus 00-fe]) [ 1.488510] pci_root PNP0A08:00: host bridge window [io 0x0000-0x0cf7] [ 1.488513] pci_root PNP0A08:00: host bridge window [io 0x0d00-0xffff] [ 1.488516] pci_root PNP0A08:00: host bridge window [mem 0x000a0000-0x000bffff] [ 1.488519] pci_root PNP0A08:00: host bridge window [mem 0xc0000000-0xfeafffff] [ 1.488576] pci 0000:00:02.0: reg 10: [mem 0xd0000000-0xd03fffff 64bit] [ 1.488582] pci 0000:00:02.0: reg 18: [mem 0xc0000000-0xcfffffff 64bit pref] [ 1.488586] pci 0000:00:02.0: reg 20: [io 0x5050-0x5057] [ 1.488674] pci 0000:00:16.0: reg 10: [mem 0xd6406100-0xd640610f 64bit] [ 1.488735] pci 0000:00:16.0: PME# supported from D0 D3hot D3cold [ 1.488741] pci 0000:00:16.0: PME# disabled [ 1.488803] pci 0000:00:1a.0: reg 10: [mem 0xd6405c00-0xd6405fff] [ 1.488871] pci 0000:00:1a.0: PME# supported from D0 D3hot D3cold [ 1.488876] pci 0000:00:1a.0: PME# disabled [ 1.488922] pci 0000:00:1b.0: reg 10: [mem 0xd6400000-0xd6403fff 64bit] [ 1.488983] pci 0000:00:1b.0: PME# supported from D0 D3hot D3cold [ 1.488988] pci 0000:00:1b.0: PME# disabled [ 1.489084] pci 0000:00:1c.0: PME# supported from D0 D3hot D3cold [ 1.489089] pci 0000:00:1c.0: PME# disabled [ 1.489190] pci 0000:00:1c.4: PME# supported from D0 D3hot D3cold [ 1.489195] pci 0000:00:1c.4: PME# disabled [ 1.489291] pci 0000:00:1c.5: PME# supported from D0 D3hot D3cold [ 1.489296] pci 0000:00:1c.5: PME# disabled [ 1.489354] pci 0000:00:1d.0: reg 10: [mem 0xd6405800-0xd6405bff] [ 1.489420] pci 0000:00:1d.0: PME# supported from D0 D3hot D3cold [ 1.489425] pci 0000:00:1d.0: PME# disabled [ 1.489632] pci 0000:00:1f.2: reg 10: [io 0x5048-0x504f] [ 1.489639] pci 0000:00:1f.2: reg 14: [io 0x505c-0x505f] [ 1.489647] pci 0000:00:1f.2: reg 18: [io 0x5040-0x5047] [ 1.489654] pci 0000:00:1f.2: reg 1c: [io 0x5058-0x505b] [ 1.489662] pci 0000:00:1f.2: reg 20: [io 0x5020-0x503f] [ 1.489670] pci 0000:00:1f.2: reg 24: [mem 0xd6405000-0xd64057ff] [ 1.489715] pci 0000:00:1f.2: PME# supported from D3hot [ 1.489720] pci 0000:00:1f.2: PME# disabled [ 1.489759] pci 0000:00:1f.3: reg 10: [mem 0xd6406000-0xd64060ff 64bit] [ 1.489778] pci 0000:00:1f.3: reg 20: [io 0x5000-0x501f] [ 1.489841] pci 0000:00:1f.6: reg 10: [mem 0xd6404000-0xd6404fff 64bit] [ 1.489964] pci 0000:00:1c.0: PCI bridge to [bus 01-01] [ 1.489970] pci 0000:00:1c.0: bridge window [io 0x4000-0x4fff] [ 1.489975] pci 0000:00:1c.0: bridge window [mem 0xd5400000-0xd63fffff] [ 1.489983] pci 0000:00:1c.0: bridge window [mem 0xd0400000-0xd13fffff 64bit pref] [ 1.490088] pci 0000:02:00.0: reg 10: [io 0x3000-0x30ff] [ 1.490117] pci 0000:02:00.0: reg 18: [mem 0xd4400000-0xd4403fff 64bit] [ 1.490197] pci 0000:02:00.0: supports D1 D2 [ 1.490199] pci 0000:02:00.0: PME# supported from D0 D1 D2 D3hot D3cold [ 1.490207] pci 0000:02:00.0: PME# disabled [ 1.490242] pci 0000:00:1c.4: PCI bridge to [bus 02-02] [ 1.490247] pci 0000:00:1c.4: bridge window [io 0x3000-0x3fff] [ 1.490252] pci 0000:00:1c.4: bridge window [mem 0xd4400000-0xd53fffff] [ 1.490259] pci 0000:00:1c.4: bridge window [mem 0xd1400000-0xd23fffff 64bit pref] [ 1.490362] pci 0000:03:00.0: reg 10: [mem 0xd3400000-0xd343ffff 64bit] [ 1.490372] pci 0000:03:00.0: reg 18: [io 0x2000-0x207f] [ 1.490448] pci 0000:03:00.0: PME# supported from D0 D1 D2 D3hot D3cold [ 1.490454] pci 0000:03:00.0: PME# disabled [ 1.490484] pci 0000:03:00.0: disabling ASPM on pre-1.1 PCIe device. You can enable it with 'pcie_aspm=force' [ 1.490487] pci 0000:00:1c.5: PCI bridge to [bus 03-03] [ 1.490492] pci 0000:00:1c.5: bridge window [io 0x2000-0x2fff] [ 1.490497] pci 0000:00:1c.5: bridge window [mem 0xd3400000-0xd43fffff] [ 1.490504] pci 0000:00:1c.5: bridge window [mem 0xd2400000-0xd33fffff 64bit pref] [ 1.490581] pci 0000:00:1e.0: PCI bridge to [bus 04-04] (subtractive decode) [ 1.490586] pci 0000:00:1e.0: bridge window [io 0xf000-0x0000] (disabled) [ 1.490592] pci 0000:00:1e.0: bridge window [mem 0xfff00000-0x000fffff] (disabled) [ 1.490600] pci 0000:00:1e.0: bridge window [mem 0xfff00000-0x000fffff pref] (disabled) [ 1.490602] pci 0000:00:1e.0: bridge window [io 0x0000-0x0cf7] (subtractive decode) [ 1.490605] pci 0000:00:1e.0: bridge window [io 0x0d00-0xffff] (subtractive decode) [ 1.490607] pci 0000:00:1e.0: bridge window [mem 0x000a0000-0x000bffff] (subtractive decode) [ 1.490609] pci 0000:00:1e.0: bridge window [mem 0xc0000000-0xfeafffff] (subtractive decode) [ 1.490643] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0._PRT] [ 1.490911] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.P0P1._PRT] [ 1.491151] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.RP01._PRT] [ 1.491309] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.RP05._PRT] [ 1.491670] \_SB_.PCI0:_OSC invalid UUID [ 1.491672] _OSC request data:1 19 1f [ 1.514447] ACPI: PCI Root Bridge [CPBG] (domain 0000 [bus ff]) [ 1.515094] ACPI: PCI Interrupt Link [LNKA] (IRQs 1 3 4 5 6 7 *10 12 14 15) [ 1.515275] ACPI: PCI Interrupt Link [LNKB] (IRQs 1 3 4 5 6 7 *11 12 14 15) [ 1.515453] ACPI: PCI Interrupt Link [LNKC] (IRQs 1 3 4 5 6 7 10 12 14 15) *0, disabled. [ 1.515632] ACPI: PCI Interrupt Link [LNKD] (IRQs 1 3 4 5 6 7 11 12 14 15) *10 [ 1.515810] ACPI: PCI Interrupt Link [LNKE] (IRQs 1 3 4 5 6 7 10 12 14 15) *0, disabled. [ 1.515988] ACPI: PCI Interrupt Link [LNKF] (IRQs 1 3 4 5 6 7 *11 12 14 15) [ 1.516166] ACPI: PCI Interrupt Link [LNKG] (IRQs 1 3 4 5 6 7 *10 12 14 15) [ 1.516345] ACPI: PCI Interrupt Link [LNKH] (IRQs 1 3 4 5 6 7 *11 12 14 15) [ 1.516427] HEST: Table is not found! [ 1.516502] vgaarb: device added: PCI:0000:00:02.0,decodes=io+mem,owns=io+mem,locks=none [ 1.516513] vgaarb: loaded [ 1.516643] SCSI subsystem initialized [ 1.516717] libata version 3.00 loaded. [ 1.516766] usbcore: registered new interface driver usbfs [ 1.516776] usbcore: registered new interface driver hub [ 1.516797] usbcore: registered new device driver usb [ 1.517009] ACPI: WMI: Mapper loaded [ 1.517011] PCI: Using ACPI for IRQ routing [ 1.517013] PCI: pci_cache_line_size set to 64 bytes [ 1.517107] reserve RAM buffer: 000000000009d000 - 000000000009ffff [ 1.517110] reserve RAM buffer: 00000000bb63f000 - 00000000bbffffff [ 1.517112] reserve RAM buffer: 00000000bb800000 - 00000000bbffffff [ 1.517201] NetLabel: Initializing [ 1.517203] NetLabel: domain hash size = 128 [ 1.517204] NetLabel: protocols = UNLABELED CIPSOv4 [ 1.517221] NetLabel: unlabeled traffic allowed by default [ 1.517258] hpet0: at MMIO 0xfed00000, IRQs 2, 8, 0, 0, 0, 0, 0, 0 [ 1.517265] hpet0: 8 comparators, 64-bit 14.318180 MHz counter [ 1.519284] Switching to clocksource tsc [ 2.454034] AppArmor: AppArmor Filesystem Enabled [ 2.454053] pnp: PnP ACPI init [ 2.454076] ACPI: bus type pnp registered [ 2.458027] pnp: PnP ACPI: found 11 devices [ 2.458030] ACPI: ACPI bus type pnp unregistered [ 2.458049] system 00:05: [io 0x0680-0x069f] has been reserved [ 2.458052] system 00:05: [io 0x0800-0x080f] has been reserved [ 2.458054] system 00:05: [io 0x0810-0x0813] has been reserved [ 2.458057] system 00:05: [io 0xffff] has been reserved [ 2.458060] system 00:05: [io 0x0400-0x047f] has been reserved [ 2.458062] system 00:05: [io 0x0500-0x057f] has been reserved [ 2.458065] system 00:05: [io 0x164e-0x164f] has been reserved [ 2.458074] system 00:09: [mem 0xfed1c000-0xfed1ffff] has been reserved [ 2.458076] system 00:09: [mem 0xfed10000-0xfed13fff] has been reserved [ 2.458079] system 00:09: [mem 0xfed18000-0xfed18fff] has been reserved [ 2.458082] system 00:09: [mem 0xfed19000-0xfed19fff] has been reserved [ 2.458086] system 00:09: [mem 0xe0000000-0xefffffff] has been reserved [ 2.458089] system 00:09: [mem 0xfed20000-0xfed3ffff] has been reserved [ 2.458091] system 00:09: [mem 0xfed45000-0xfed8ffff] has been reserved [ 2.458094] system 00:09: [mem 0xff000000-0xffffffff] could not be reserved [ 2.458097] system 00:09: [mem 0xfee00000-0xfeefffff] could not be reserved [ 2.458099] system 00:09: [mem 0xd6500000-0xd6500fff] has been reserved [ 2.458102] system 00:09: [mem 0xff808000-0xff8080ff] has been reserved [ 2.463974] pci 0000:00:1c.0: PCI bridge to [bus 01-01] [ 2.463981] pci 0000:00:1c.0: bridge window [io 0x4000-0x4fff] [ 2.463987] pci 0000:00:1c.0: bridge window [mem 0xd5400000-0xd63fffff] [ 2.463993] pci 0000:00:1c.0: bridge window [mem 0xd0400000-0xd13fffff 64bit pref] [ 2.464002] pci 0000:00:1c.4: PCI bridge to [bus 02-02] [ 2.464005] pci 0000:00:1c.4: bridge window [io 0x3000-0x3fff] [ 2.464011] pci 0000:00:1c.4: bridge window [mem 0xd4400000-0xd53fffff] [ 2.464017] pci 0000:00:1c.4: bridge window [mem 0xd1400000-0xd23fffff 64bit pref] [ 2.464025] pci 0000:00:1c.5: PCI bridge to [bus 03-03] [ 2.464029] pci 0000:00:1c.5: bridge window [io 0x2000-0x2fff] [ 2.464035] pci 0000:00:1c.5: bridge window [mem 0xd3400000-0xd43fffff] [ 2.464040] pci 0000:00:1c.5: bridge window [mem 0xd2400000-0xd33fffff 64bit pref] [ 2.464049] pci 0000:00:1e.0: PCI bridge to [bus 04-04] [ 2.464050] pci 0000:00:1e.0: bridge window [io disabled] [ 2.464056] pci 0000:00:1e.0: bridge window [mem disabled] [ 2.464061] pci 0000:00:1e.0: bridge window [mem pref disabled] [ 2.464085] alloc irq_desc for 17 on node -1 [ 2.464087] alloc kstat_irqs on node -1 [ 2.464096] pci 0000:00:1c.0: PCI INT A -> GSI 17 (level, low) -> IRQ 17 [ 2.464102] pci 0000:00:1c.0: setting latency timer to 64 [ 2.464114] pci 0000:00:1c.4: PCI INT A -> GSI 17 (level, low) -> IRQ 17 [ 2.464119] pci 0000:00:1c.4: setting latency timer to 64 [ 2.464130] alloc irq_desc for 16 on node -1 [ 2.464131] alloc kstat_irqs on node -1 [ 2.464135] pci 0000:00:1c.5: PCI INT B -> GSI 16 (level, low) -> IRQ 16 [ 2.464140] pci 0000:00:1c.5: setting latency timer to 64 [ 2.464149] pci 0000:00:1e.0: setting latency timer to 64 [ 2.464154] pci_bus 0000:00: resource 4 [io 0x0000-0x0cf7] [ 2.464156] pci_bus 0000:00: resource 5 [io 0x0d00-0xffff] [ 2.464159] pci_bus 0000:00: resource 6 [mem 0x000a0000-0x000bffff] [ 2.464161] pci_bus 0000:00: resource 7 [mem 0xc0000000-0xfeafffff] [ 2.464163] pci_bus 0000:01: resource 0 [io 0x4000-0x4fff] [ 2.464165] pci_bus 0000:01: resource 1 [mem 0xd5400000-0xd63fffff] [ 2.464167] pci_bus 0000:01: resource 2 [mem 0xd0400000-0xd13fffff 64bit pref] [ 2.464169] pci_bus 0000:02: resource 0 [io 0x3000-0x3fff] [ 2.464171] pci_bus 0000:02: resource 1 [mem 0xd4400000-0xd53fffff] [ 2.464173] pci_bus 0000:02: resource 2 [mem 0xd1400000-0xd23fffff 64bit pref] [ 2.464176] pci_bus 0000:03: resource 0 [io 0x2000-0x2fff] [ 2.464178] pci_bus 0000:03: resource 1 [mem 0xd3400000-0xd43fffff] [ 2.464180] pci_bus 0000:03: resource 2 [mem 0xd2400000-0xd33fffff 64bit pref] [ 2.464182] pci_bus 0000:04: resource 4 [io 0x0000-0x0cf7] [ 2.464184] pci_bus 0000:04: resource 5 [io 0x0d00-0xffff] [ 2.464186] pci_bus 0000:04: resource 6 [mem 0x000a0000-0x000bffff] [ 2.464188] pci_bus 0000:04: resource 7 [mem 0xc0000000-0xfeafffff] [ 2.464232] NET: Registered protocol family 2 [ 2.464409] IP route cache hash table entries: 131072 (order: 8, 1048576 bytes) [ 2.465593] TCP established hash table entries: 524288 (order: 11, 8388608 bytes) [ 2.467710] TCP bind hash table entries: 65536 (order: 8, 1048576 bytes) [ 2.467963] TCP: Hash tables configured (established 524288 bind 65536) [ 2.467965] TCP reno registered [ 2.467978] UDP hash table entries: 2048 (order: 4, 65536 bytes) [ 2.468008] UDP-Lite hash table entries: 2048 (order: 4, 65536 bytes) [ 2.468136] NET: Registered protocol family 1 [ 2.468153] pci 0000:00:02.0: Boot video device [ 2.505744] PCI: CLS 64 bytes, default 64 [ 2.505749] PCI-DMA: Using software bounce buffering for IO (SWIOTLB) [ 2.505752] Placing 64MB software IO TLB between ffff880001fde000 - ffff880005fde000 [ 2.505754] software IO TLB at phys 0x1fde000 - 0x5fde000 [ 2.505794] Simple Boot Flag at 0x44 set to 0x1 [ 2.505982] Scanning for low memory corruption every 60 seconds [ 2.506122] audit: initializing netlink socket (disabled) [ 2.506135] type=2000 audit(1287728854.380:1): initialized [ 2.522312] HugeTLB registered 2 MB page size, pre-allocated 0 pages [ 2.523718] VFS: Disk quotas dquot_6.5.2 [ 2.523776] Dquot-cache hash table entries: 512 (order 0, 4096 bytes) [ 2.524355] fuse init (API version 7.14) [ 2.524439] msgmni has been set to 7495 [ 2.524793] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 253) [ 2.524796] io scheduler noop registered [ 2.524797] io scheduler deadline registered [ 2.524837] io scheduler cfq registered (default) [ 2.524941] pcieport 0000:00:1c.0: setting latency timer to 64 [ 2.524990] alloc irq_desc for 40 on node -1 [ 2.524991] alloc kstat_irqs on node -1 [ 2.525006] pcieport 0000:00:1c.0: irq 40 for MSI/MSI-X [ 2.525100] pcieport 0000:00:1c.4: setting latency timer to 64 [ 2.525144] alloc irq_desc for 41 on node -1 [ 2.525146] alloc kstat_irqs on node -1 [ 2.525155] pcieport 0000:00:1c.4: irq 41 for MSI/MSI-X [ 2.525243] pcieport 0000:00:1c.5: setting latency timer to 64 [ 2.525287] alloc irq_desc for 42 on node -1 [ 2.525289] alloc kstat_irqs on node -1 [ 2.525297] pcieport 0000:00:1c.5: irq 42 for MSI/MSI-X [ 2.525394] pci_hotplug: PCI Hot Plug PCI Core version: 0.5 [ 2.525587] \_SB_.PCI0:_OSC invalid UUID [ 2.525589] _OSC request data:1 0 1f [ 2.525766] \_SB_.PCI0:_OSC invalid UUID [ 2.525768] _OSC request data:1 0 1f [ 2.525932] \_SB_.PCI0:_OSC invalid UUID [ 2.525934] _OSC request data:1 0 1f [ 2.526112] \_SB_.PCI0:_OSC invalid UUID [ 2.526113] _OSC request data:1 0 1f [ 2.526275] \_SB_.PCI0:_OSC invalid UUID [ 2.526277] _OSC request data:1 0 1f [ 2.526439] \_SB_.PCI0:_OSC invalid UUID [ 2.526441] _OSC request data:1 0 1f [ 2.526479] pciehp: PCI Express Hot Plug Controller Driver version: 0.4 [ 2.526551] intel_idle: MWAIT substates: 0x120 [ 2.526553] intel_idle: v0.4 model 0x25 [ 2.526554] intel_idle: lapic_timer_reliable_states 0xffffffff [ 2.526737] ACPI: AC Adapter [ACAD] (on-line) [ 2.526805] input: Power Button as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0C:00/input/input0 [ 2.526811] ACPI: Power Button [PWRB] [ 2.526846] input: Lid Switch as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0D:00/input/input1 [ 2.526972] ACPI: Lid Switch [LID] [ 2.527015] input: Power Button as /devices/LNXSYSTM:00/LNXPWRBN:00/input/input2 [ 2.527018] ACPI: Power Button [PWRF] [ 2.528046] ACPI: acpi_idle yielding to intel_idle [ 3.248714] ERST: Table is not found! [ 3.249104] Linux agpgart interface v0.103 [ 3.249130] Serial: 8250/16550 driver, 4 ports, IRQ sharing enabled [ 3.250384] brd: module loaded [ 3.250859] loop: module loaded [ 3.251334] Fixed MDIO Bus: probed [ 3.251362] PPP generic driver version 2.4.2 [ 3.251398] tun: Universal TUN/TAP device driver, 1.6 [ 3.251400] tun: (C) 1999-2004 Max Krasnyansky [ 3.251473] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver [ 3.251502] ehci_hcd 0000:00:1a.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16 [ 3.251546] ehci_hcd 0000:00:1a.0: setting latency timer to 64 [ 3.251550] ehci_hcd 0000:00:1a.0: EHCI Host Controller [ 3.251586] ehci_hcd 0000:00:1a.0: new USB bus registered, assigned bus number 1 [ 3.251623] ehci_hcd 0000:00:1a.0: debug port 2 [ 3.255566] ehci_hcd 0000:00:1a.0: cache line size of 64 is not supported [ 3.255589] ehci_hcd 0000:00:1a.0: irq 16, io mem 0xd6405c00 [ 3.259602] ACPI: Battery Slot [BAT1] (battery absent) [ 3.262792] Freeing initrd memory: 11516k freed [ 3.275288] ehci_hcd 0000:00:1a.0: USB 2.0 started, EHCI 1.00 [ 3.275463] hub 1-0:1.0: USB hub found [ 3.275469] hub 1-0:1.0: 3 ports detected [ 3.275551] alloc irq_desc for 23 on node -1 [ 3.275553] alloc kstat_irqs on node -1 [ 3.275561] ehci_hcd 0000:00:1d.0: PCI INT A -> GSI 23 (level, low) -> IRQ 23 [ 3.275588] ehci_hcd 0000:00:1d.0: setting latency timer to 64 [ 3.275593] ehci_hcd 0000:00:1d.0: EHCI Host Controller [ 3.275632] ehci_hcd 0000:00:1d.0: new USB bus registered, assigned bus number 2 [ 3.275666] ehci_hcd 0000:00:1d.0: debug port 2 [ 3.279603] ehci_hcd 0000:00:1d.0: cache line size of 64 is not supported [ 3.279623] ehci_hcd 0000:00:1d.0: irq 23, io mem 0xd6405800 [ 3.295239] ehci_hcd 0000:00:1d.0: USB 2.0 started, EHCI 1.00 [ 3.295366] hub 2-0:1.0: USB hub found [ 3.295369] hub 2-0:1.0: 3 ports detected [ 3.295428] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver [ 3.295442] uhci_hcd: USB Universal Host Controller Interface driver [ 3.295561] PNP: PS/2 Controller [PNP0303:PS2K,PNP0f13:PS2M] at 0x60,0x64 irq 1,12 [ 3.297562] i8042.c: Detected active multiplexing controller, rev 1.1. [ 3.299906] serio: i8042 KBD port at 0x60,0x64 irq 1 [ 3.299912] serio: i8042 AUX0 port at 0x60,0x64 irq 12 [ 3.299915] serio: i8042 AUX1 port at 0x60,0x64 irq 12 [ 3.299917] serio: i8042 AUX2 port at 0x60,0x64 irq 12 [ 3.299920] serio: i8042 AUX3 port at 0x60,0x64 irq 12 [ 3.299989] mice: PS/2 mouse device common for all mice [ 3.300105] rtc_cmos 00:06: RTC can wake from S4 [ 3.300142] rtc_cmos 00:06: rtc core: registered rtc_cmos as rtc0 [ 3.300173] rtc0: alarms up to one year, y3k, 242 bytes nvram, hpet irqs [ 3.300265] device-mapper: uevent: version 1.0.3 [ 3.300369] device-mapper: ioctl: 4.17.0-ioctl (2010-03-05) initialised: dm-devel@redhat.com [ 3.300435] device-mapper: multipath: version 1.1.1 loaded [ 3.300438] device-mapper: multipath round-robin: version 1.0.0 loaded [ 3.300623] cpuidle: using governor ladder [ 3.300685] cpuidle: using governor menu [ 3.300961] TCP cubic registered [ 3.301079] NET: Registered protocol family 10 [ 3.301425] lo: Disabled Privacy Extensions [ 3.301619] NET: Registered protocol family 17 [ 3.302820] PM: Resume from disk failed. [ 3.302831] registered taskstats version 1 [ 3.303183] Magic number: 14:238:469 [ 3.303314] rtc_cmos 00:06: setting system clock to 2010-10-22 06:27:35 UTC (1287728855) [ 3.303317] BIOS EDD facility v0.16 2004-Jun-25, 0 devices found [ 3.303319] EDD information not available. [ 3.303404] Freeing unused kernel memory: 908k freed [ 3.303589] Write protecting the kernel read-only data: 10240k [ 3.303806] Freeing unused kernel memory: 416k freed [ 3.304068] Freeing unused kernel memory: 1644k freed [ 3.326447] udev[81]: starting version 163 [ 3.329173] input: AT Translated Set 2 keyboard as /devices/platform/i8042/serio0/input/input3 [ 3.413581] agpgart-intel 0000:00:00.0: Intel HD Graphics Chipset [ 3.414449] agpgart-intel 0000:00:00.0: detected 32764K stolen memory [ 3.486066] atl1c 0000:03:00.0: PCI INT A -> GSI 17 (level, low) -> IRQ 17 [ 3.486079] atl1c 0000:03:00.0: setting latency timer to 64 [ 3.493601] agpgart-intel 0000:00:00.0: AGP aperture is 256M @ 0xc0000000 [ 3.493630] ahci 0000:00:1f.2: version 3.0 [ 3.493646] alloc irq_desc for 19 on node -1 [ 3.493648] alloc kstat_irqs on node -1 [ 3.493657] ahci 0000:00:1f.2: PCI INT B -> GSI 19 (level, low) -> IRQ 19 [ 3.493694] alloc irq_desc for 43 on node -1 [ 3.493696] alloc kstat_irqs on node -1 [ 3.493706] ahci 0000:00:1f.2: irq 43 for MSI/MSI-X [ 3.493795] ahci 0000:00:1f.2: AHCI 0001.0300 32 slots 4 ports 3 Gbps 0x33 impl SATA mode [ 3.493799] ahci 0000:00:1f.2: flags: 64bit ncq sntf ilck pm led clo pio slum part ems sxs apst [ 3.493804] ahci 0000:00:1f.2: setting latency timer to 64 [ 3.513953] [drm] Initialized drm 1.1.0 20060810 [ 3.554958] scsi0 : ahci [ 3.555155] scsi1 : ahci [ 3.555209] scsi2 : ahci [ 3.555262] scsi3 : ahci [ 3.555314] scsi4 : ahci [ 3.555366] scsi5 : ahci [ 3.555410] ata1: SATA max UDMA/133 abar m2048@0xd6405000 port 0xd6405100 irq 43 [ 3.555414] ata2: SATA max UDMA/133 abar m2048@0xd6405000 port 0xd6405180 irq 43 [ 3.555416] ata3: DUMMY [ 3.555417] ata4: DUMMY [ 3.555421] ata5: SATA max UDMA/133 abar m2048@0xd6405000 port 0xd6405300 irq 43 [ 3.555424] ata6: SATA max UDMA/133 abar m2048@0xd6405000 port 0xd6405380 irq 43 [ 3.555483] i915 0000:00:02.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16 [ 3.555487] i915 0000:00:02.0: setting latency timer to 64 [ 3.610096] mtrr: no more MTRRs available [ 3.610099] [drm] MTRR allocation failed. Graphics performance may suffer. [ 3.610291] alloc irq_desc for 44 on node -1 [ 3.610297] alloc kstat_irqs on node -1 [ 3.610313] i915 0000:00:02.0: irq 44 for MSI/MSI-X [ 3.610328] [drm] set up 31M of stolen space [ 3.614451] usb 1-1: new high speed USB device using ehci_hcd and address 2 [ 3.666087] atl1c 0000:03:00.0: version 1.0.0.2-NAPI [ 3.721975] vgaarb: device changed decodes: PCI:0000:00:02.0,olddecodes=io+mem,decodes=io+mem:owns=io+mem [ 3.765137] hub 1-1:1.0: USB hub found [ 3.765281] hub 1-1:1.0: 6 ports detected [ 3.884922] usb 2-1: new high speed USB device using ehci_hcd and address 2 [ 3.904922] ata6: SATA link down (SStatus 0 SControl 300) [ 3.904972] ata2: SATA link up 1.5 Gbps (SStatus 113 SControl 300) [ 3.905015] ata5: SATA link down (SStatus 0 SControl 300) [ 3.905065] ata1: SATA link up 3.0 Gbps (SStatus 123 SControl 300) [ 3.906123] ata1.00: ATA-8: Hitachi HTS545032B9A300, PB3OC64G, max UDMA/133 [ 3.906126] ata1.00: 625142448 sectors, multi 0: LBA48 NCQ (depth 31/32), AA [ 3.906790] ata2.00: ATAPI: MATSHITADVD-RAM UJ890AS, 1.40, max UDMA/100 [ 3.907385] ata1.00: configured for UDMA/133 [ 3.909654] ata2.00: configured for UDMA/100 [ 3.925022] scsi 0:0:0:0: Direct-Access ATA Hitachi HTS54503 PB3O PQ: 0 ANSI: 5 [ 3.925148] sd 0:0:0:0: Attached scsi generic sg0 type 0 [ 3.925336] sd 0:0:0:0: [sda] 625142448 512-byte logical blocks: (320 GB/298 GiB) [ 3.925382] sd 0:0:0:0: [sda] Write Protect is off [ 3.925385] sd 0:0:0:0: [sda] Mode Sense: 00 3a 00 00 [ 3.925404] sd 0:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA [ 3.925530] sda: [ 3.928048] scsi 1:0:0:0: CD-ROM MATSHITA DVD-RAM UJ890AS 1.40 PQ: 0 ANSI: 5 [ 3.930621] sr0: scsi3-mmc drive: 24x/24x writer dvd-ram cd/rw xa/form2 cdda tray [ 3.930625] Uniform CD-ROM driver Revision: 3.20 [ 3.930720] sr 1:0:0:0: Attached scsi CD-ROM sr0 [ 3.930769] sr 1:0:0:0: Attached scsi generic sg1 type 5 [ 3.950760] sda1 sda2 < sda5 > [ 3.986010] sd 0:0:0:0: [sda] Attached SCSI disk [ 4.035475] hub 2-1:1.0: USB hub found [ 4.035619] hub 2-1:1.0: 8 ports detected [ 4.076394] Skipping EDID probe due to cached edid [ 4.114987] usb 1-1.2: new low speed USB device using ehci_hcd and address 3 [ 4.242086] usbcore: registered new interface driver hiddev [ 4.244706] input: PS/2+USB Mouse as /devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.2/1-1.2:1.0/input/input4 [ 4.244881] generic-usb 0003:04F3:0212.0001: input,hidraw0: USB HID v1.11 Mouse [PS/2+USB Mouse] on usb-0000:00:1a.0-1.2/input0 [ 4.245001] usbcore: registered new interface driver usbhid [ 4.245003] usbhid: USB HID core driver [ 4.455426] Console: switching to colour frame buffer device 170x48 [ 4.458763] fb0: inteldrmfb frame buffer device [ 4.458764] drm: registered panic notifier [ 4.458768] Slow work thread pool: Starting up [ 4.458838] Slow work thread pool: Ready [ 4.464112] acpi device:01: registered as cooling_device2 [ 4.465064] input: Video Bus as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/LNXVIDEO:00/input/input5 [ 4.465103] ACPI: Video Device [GFX0] (multi-head: yes rom: no post: no) [ 4.465153] [drm] Initialized i915 1.6.0 20080730 for 0000:00:02.0 on minor 0 [ 4.524156] usb 2-1.4: new high speed USB device using ehci_hcd and address 3 [ 4.910636] Initializing USB Mass Storage driver... [ 4.910734] scsi6 : usb-storage 2-1.4:1.0 [ 4.910808] usbcore: registered new interface driver usb-storage [ 4.910810] USB Mass Storage support registered. [ 5.802487] Skipping EDID probe due to cached edid [ 5.904745] Btrfs loaded [ 5.906649] scsi 6:0:0:0: Direct-Access Generic- Multi-Card 1.00 PQ: 0 ANSI: 0 CCS [ 5.907458] sd 6:0:0:0: Attached scsi generic sg2 type 0 [ 5.910717] xor: automatically using best checksumming function: generic_sse [ 5.912619] sd 6:0:0:0: [sdb] Attached SCSI removable disk [ 5.953041] generic_sse: 7571.600 MB/sec [ 5.953043] xor: using function: generic_sse (7571.600 MB/sec) [ 5.955764] device-mapper: dm-raid45: initialized v0.2594b [ 6.161510] EXT4-fs (sda1): mounted filesystem with ordered data mode. Opts: (null) [ 8.581823] ISO 9660 Extensions: Microsoft Joliet Level 3 [ 8.677985] ISO 9660 Extensions: RRIP_1991A [ 8.987512] aufs 2-standalone.tree-35-rcN-20100705 [ 9.120509] squashfs: version 4.0 (2009/01/31) Phillip Lougher [ 86.748713] Adding 11287548k swap on /dev/sda5. Priority:-1 extents:1 across:11287548k [ 89.100451] udev[1390]: starting version 163 [ 95.234188] intel ips 0000:00:1f.6: No CPUID match found. [ 95.234201] BUG: unable to handle kernel NULL pointer dereference at 0000000000000008 [ 95.234206] IP: [] ips_detect_cpu+0x76/0x1d0 [intel_ips] [ 95.234213] PGD 130ef4067 PUD 130ef3067 PMD 0 [ 95.234217] Oops: 0000 [#1] SMP [ 95.234220] last sysfs file: /sys/devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.2/1-1.2:1.0/input/input4/name [ 95.234224] CPU 1 [ 95.234225] Modules linked in: intel_ips(+) serio_raw snd_page_alloc squashfs aufs nls_cp437 isofs dm_raid45 xor btrfs zlib_deflate crc32c libcrc32c usb_storage usbhid hid i915 drm_kms_helper drm atl1c ahci intel_agp i2c_algo_bit video output libahci [ 95.234244] [ 95.234248] Pid: 1463, comm: modprobe Not tainted 2.6.35-22-generic #33-Ubuntu Base Board Product Name/Satellite L655 [ 95.234251] RIP: 0010:[] [] ips_detect_cpu+0x76/0x1d0 [intel_ips] [ 95.234256] RSP: 0018:ffff88012d92bc48 EFLAGS: 00010202 [ 95.234258] RAX: 0000000000c800c8 RBX: 0000000000000000 RCX: 0000000000c800c8 [ 95.234260] RDX: 0000000000000000 RSI: ffff88012d92bc64 RDI: 0000000000c800c8 [ 95.234262] RBP: ffff88012d92bc88 R08: 0000000000000000 R09: 0000000000000000 [ 95.234264] R10: 0000000000000000 R11: 0000000000000002 R12: 0000000000c800c8 [ 95.234266] R13: ffff8801303a90c0 R14: ffff880131703090 R15: 00000000fffffff4 [ 95.234269] FS: 00007ff77fdc8700(0000) GS:ffff880001e40000(0000) knlGS:0000000000000000 [ 95.234271] CS: 0010 DS: 0000 ES: 0000 CR0: 000000008005003b [ 95.234273] CR2: 0000000000000008 CR3: 000000012e690000 CR4: 00000000000006e0 [ 95.234276] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 [ 95.234278] DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400 [ 95.234280] Process modprobe (pid: 1463, threadinfo ffff88012d92a000, task ffff880130ee16e0) [ 95.234282] Stack: [ 95.234284] ffff88012d92bc88 ffffffff81142fa4 ffff88012d92bc78 0000000031703000 [ 95.234287] <0> ffff880131703000 ffff8801303a90c0 ffff880131703000 00000000fffffff4 [ 95.234291] <0> ffff88012d92bcd8 ffffffffa012dfb1 ffff88012d92bcb8 ffff8801321edb90 [ 95.234295] Call Trace: [ 95.234302] [] ? kmem_cache_alloc_notrace+0xb4/0xd0 [ 95.234306] [] ips_probe+0x71/0x710 [intel_ips] [ 95.234312] [] local_pci_probe+0x17/0x20 [ 95.234316] [] __pci_device_probe+0xe9/0xf0 [ 95.234322] [] ? kobject_get+0x1a/0x30 [ 95.234329] [] ? get_device+0x19/0x20 [ 95.234332] [] pci_device_probe+0x3a/0x60 [ 95.234336] [] really_probe+0x68/0x190 [ 95.234339] [] driver_probe_device+0x45/0x70 [ 95.234341] [] __driver_attach+0x9b/0xa0 [ 95.234344] [] ? __driver_attach+0x0/0xa0 [ 95.234347] [] bus_for_each_dev+0x68/0x90 [ 95.234350] [] driver_attach+0x1e/0x20 [ 95.234353] [] bus_add_driver+0xde/0x280 [ 95.234355] [] driver_register+0x80/0x150 [ 95.234361] [] ? notifier_call_chain+0x56/0x80 [ 95.234365] [] __pci_register_driver+0x56/0xd0 [ 95.234370] [] ? __blocking_notifier_call_chain+0x65/0x80 [ 95.234374] [] ? ips_init+0x0/0x20 [intel_ips] [ 95.234378] [] ips_init+0x1e/0x20 [intel_ips] [ 95.234383] [] do_one_initcall+0x3c/0x1a0 [ 95.234389] [] sys_init_module+0xbb/0x200 [ 95.234395] [] system_call_fastpath+0x16/0x1b [ 95.234397] Code: a0 48 c7 c7 88 ec ac 81 48 c7 c3 80 fa 12 a0 e8 c1 0c 19 e1 48 85 c0 74 44 bf ac 01 00 00 4c 89 e6 e8 3f 8e f0 e0 66 90 41 89 c4 <8b> 53 08 41 c1 e4 12 41 c1 ec 15 41 69 c4 e8 03 00 00 39 c2 0f [ 95.234426] RIP [] ips_detect_cpu+0x76/0x1d0 [intel_ips] [ 95.234430] RSP [ 95.234431] CR2: 0000000000000008 [ 95.234434] ---[ end trace abcb80a2a30d178c ]--- [ 96.508060] Synaptics Touchpad, model: 1, fw: 7.2, id: 0x1c0b1, caps: 0xd04731/0xa40000/0xa0000 [ 96.508069] synaptics: Toshiba Satellite L655 detected, limiting rate to 40pps. [ 96.541849] input: SynPS/2 Synaptics TouchPad as /devices/platform/i8042/serio4/input/input6 [ 100.459933] alloc irq_desc for 45 on node -1 [ 100.459938] alloc kstat_irqs on node -1 [ 100.459956] atl1c 0000:03:00.0: irq 45 for MSI/MSI-X [ 100.460112] atl1c 0000:03:00.0: atl1c: eth0 NIC Link is Up<100 Mbps Full Duplex> [ 101.820064] atl1c 0000:03:00.0: atl1c: eth0 NIC Link is Down [ 103.504869] atl1c 0000:03:00.0: atl1c: eth0 NIC Link is Up<100 Mbps Full Duplex> Bug: 668017 [ 0.000000] Initializing cgroup subsys cpuset [ 0.000000] Initializing cgroup subsys cpu [ 0.000000] Linux version 2.6.35-22-generic-pae (buildd@vernadsky) (gcc version 4.4.5 (Ubuntu/Linaro 4.4.4-14ubuntu5) ) #35-Ubuntu SMP Sat Oct 16 22:16:51 UTC 2010 (Ubuntu 2.6.35-22.35-generic-pae 2.6.35.4) [ 0.000000] BIOS-provided physical RAM map: [ 0.000000] BIOS-e820: 0000000000000000 - 000000000009d000 (usable) [ 0.000000] BIOS-e820: 000000000009d000 - 00000000000a0000 (reserved) [ 0.000000] BIOS-e820: 00000000000e0000 - 0000000000100000 (reserved) [ 0.000000] BIOS-e820: 0000000000100000 - 00000000b363f000 (usable) [ 0.000000] BIOS-e820: 00000000b363f000 - 00000000b36bf000 (reserved) [ 0.000000] BIOS-e820: 00000000b36bf000 - 00000000b37bf000 (ACPI NVS) [ 0.000000] BIOS-e820: 00000000b37bf000 - 00000000b37ff000 (ACPI data) [ 0.000000] BIOS-e820: 00000000b37ff000 - 00000000b3800000 (usable) [ 0.000000] BIOS-e820: 00000000b3800000 - 00000000c0000000 (reserved) [ 0.000000] BIOS-e820: 00000000e0000000 - 00000000f0000000 (reserved) [ 0.000000] BIOS-e820: 00000000feb00000 - 00000000feb04000 (reserved) [ 0.000000] BIOS-e820: 00000000fec00000 - 00000000fec01000 (reserved) [ 0.000000] BIOS-e820: 00000000fed10000 - 00000000fed14000 (reserved) [ 0.000000] BIOS-e820: 00000000fed18000 - 00000000fed1a000 (reserved) [ 0.000000] BIOS-e820: 00000000fed1b000 - 00000000fed20000 (reserved) [ 0.000000] BIOS-e820: 00000000fee00000 - 00000000fee01000 (reserved) [ 0.000000] BIOS-e820: 00000000ffe00000 - 0000000100000000 (reserved) [ 0.000000] BIOS-e820: 0000000100000000 - 0000000138000000 (usable) [ 0.000000] NX (Execute Disable) protection: active [ 0.000000] DMI 2.6 present. [ 0.000000] e820 update range: 0000000000000000 - 0000000000001000 (usable) ==> (reserved) [ 0.000000] e820 remove range: 00000000000a0000 - 0000000000100000 (usable) [ 0.000000] last_pfn = 0x138000 max_arch_pfn = 0x1000000 [ 0.000000] MTRR default type: uncachable [ 0.000000] MTRR fixed ranges enabled: [ 0.000000] 00000-9FFFF write-back [ 0.000000] A0000-BFFFF uncachable [ 0.000000] C0000-EFFFF write-through [ 0.000000] F0000-FFFFF write-combining [ 0.000000] MTRR variable ranges enabled: [ 0.000000] 0 base 000000000 mask F80000000 write-back [ 0.000000] 1 base 0FFE00000 mask FFFE00000 write-protect [ 0.000000] 2 base 080000000 mask FC0000000 write-back [ 0.000000] 3 base 0B8000000 mask FF8000000 uncachable [ 0.000000] 4 base 0B4000000 mask FFC000000 uncachable [ 0.000000] 5 base 0B3800000 mask FFF800000 uncachable [ 0.000000] 6 base 100000000 mask FC0000000 write-back [ 0.000000] 7 base 138000000 mask FF8000000 uncachable [ 0.000000] x86 PAT enabled: cpu 0, old 0x7040600070406, new 0x7010600070106 [ 0.000000] e820 update range: 0000000000002000 - 0000000000010000 (usable) ==> (reserved) [ 0.000000] Scanning 1 areas for low memory corruption [ 0.000000] modified physical RAM map: [ 0.000000] modified: 0000000000000000 - 0000000000001000 (reserved) [ 0.000000] modified: 0000000000001000 - 0000000000002000 (usable) [ 0.000000] modified: 0000000000002000 - 0000000000010000 (reserved) [ 0.000000] modified: 0000000000010000 - 000000000009d000 (usable) [ 0.000000] modified: 000000000009d000 - 00000000000a0000 (reserved) [ 0.000000] modified: 00000000000e0000 - 0000000000100000 (reserved) [ 0.000000] modified: 0000000000100000 - 00000000b363f000 (usable) [ 0.000000] modified: 00000000b363f000 - 00000000b36bf000 (reserved) [ 0.000000] modified: 00000000b36bf000 - 00000000b37bf000 (ACPI NVS) [ 0.000000] modified: 00000000b37bf000 - 00000000b37ff000 (ACPI data) [ 0.000000] modified: 00000000b37ff000 - 00000000b3800000 (usable) [ 0.000000] modified: 00000000b3800000 - 00000000c0000000 (reserved) [ 0.000000] modified: 00000000e0000000 - 00000000f0000000 (reserved) [ 0.000000] modified: 00000000feb00000 - 00000000feb04000 (reserved) [ 0.000000] modified: 00000000fec00000 - 00000000fec01000 (reserved) [ 0.000000] modified: 00000000fed10000 - 00000000fed14000 (reserved) [ 0.000000] modified: 00000000fed18000 - 00000000fed1a000 (reserved) [ 0.000000] modified: 00000000fed1b000 - 00000000fed20000 (reserved) [ 0.000000] modified: 00000000fee00000 - 00000000fee01000 (reserved) [ 0.000000] modified: 00000000ffe00000 - 0000000100000000 (reserved) [ 0.000000] modified: 0000000100000000 - 0000000138000000 (usable) [ 0.000000] initial memory mapped : 0 - 00e00000 [ 0.000000] init_memory_mapping: 0000000000000000-0000000037bfe000 [ 0.000000] 0000000000 - 0000200000 page 4k [ 0.000000] 0000200000 - 0037a00000 page 2M [ 0.000000] 0037a00000 - 0037bfe000 page 4k [ 0.000000] kernel direct mapping tables up to 37bfe000 @ 15000-1a000 [ 0.000000] RAMDISK: 375b3000 - 37ff0000 [ 0.000000] Allocated new RAMDISK: 00a02000 - 0143e964 [ 0.000000] Move RAMDISK from 00000000375b3000 - 0000000037fef963 to 00a02000 - 0143e963 [ 0.000000] ACPI: RSDP 000fe020 00024 (v02 Sony) [ 0.000000] ACPI: XSDT b37fe120 00064 (v01 Sony VAIO 20100614 01000013) [ 0.000000] ACPI: FACP b37fc000 000F4 (v04 Sony VAIO 20100614 MSFT 01000013) [ 0.000000] ACPI: DSDT b37ee000 0A95F (v02 Sony VAIO 20100614 MSFT 01000013) [ 0.000000] ACPI: FACS b376e000 00040 [ 0.000000] ACPI: ASF! b37fd000 000A5 (v32 Sony VAIO 20100614 MSFT 01000013) [ 0.000000] ACPI: HPET b37fb000 00038 (v01 Sony VAIO 20100614 MSFT 01000013) [ 0.000000] ACPI: APIC b37fa000 0008C (v02 Sony VAIO 20100614 MSFT 01000013) [ 0.000000] ACPI: MCFG b37f9000 0003C (v01 Sony VAIO 20100614 MSFT 01000013) [ 0.000000] ACPI: SLIC b37ed000 00176 (v01 Sony VAIO 20100614 Sony 01000000) [ 0.000000] ACPI: BOOT b37e9000 00028 (v01 Sony VAIO 20100614 MSFT 01000013) [ 0.000000] ACPI: SSDT b37e6000 009F1 (v01 Sony VAIO 20100614 INTL 20051117) [ 0.000000] ACPI: Local APIC address 0xfee00000 [ 0.000000] 4100MB HIGHMEM available. [ 0.000000] 891MB LOWMEM available. [ 0.000000] mapped low ram: 0 - 37bfe000 [ 0.000000] low ram: 0 - 37bfe000 [ 0.000000] Zone PFN ranges: [ 0.000000] DMA 0x00000001 -> 0x00001000 [ 0.000000] Normal 0x00001000 -> 0x00037bfe [ 0.000000] HighMem 0x00037bfe -> 0x00138000 [ 0.000000] Movable zone start PFN for each node [ 0.000000] early_node_map[5] active PFN ranges [ 0.000000] 0: 0x00000001 -> 0x00000002 [ 0.000000] 0: 0x00000010 -> 0x0000009d [ 0.000000] 0: 0x00000100 -> 0x000b363f [ 0.000000] 0: 0x000b37ff -> 0x000b3800 [ 0.000000] 0: 0x00100000 -> 0x00138000 [ 0.000000] On node 0 totalpages: 964046 [ 0.000000] free_area_init_node: node 0, pgdat c083ea40, node_mem_map c1440020 [ 0.000000] DMA zone: 32 pages used for memmap [ 0.000000] DMA zone: 0 pages reserved [ 0.000000] DMA zone: 3950 pages, LIFO batch:0 [ 0.000000] Normal zone: 1752 pages used for memmap [ 0.000000] Normal zone: 222502 pages, LIFO batch:31 [ 0.000000] HighMem zone: 8201 pages used for memmap [ 0.000000] HighMem zone: 727609 pages, LIFO batch:31 [ 0.000000] Using APIC driver default [ 0.000000] ACPI: PM-Timer IO Port: 0x408 [ 0.000000] ACPI: Local APIC address 0xfee00000 [ 0.000000] ACPI: LAPIC (acpi_id[0x01] lapic_id[0x00] enabled) [ 0.000000] ACPI: LAPIC (acpi_id[0x02] lapic_id[0x04] enabled) [ 0.000000] ACPI: LAPIC (acpi_id[0x03] lapic_id[0x00] disabled) [ 0.000000] ACPI: LAPIC (acpi_id[0x04] lapic_id[0x00] disabled) [ 0.000000] ACPI: LAPIC (acpi_id[0x05] lapic_id[0x00] disabled) [ 0.000000] ACPI: LAPIC (acpi_id[0x06] lapic_id[0x00] disabled) [ 0.000000] ACPI: LAPIC (acpi_id[0x07] lapic_id[0x00] disabled) [ 0.000000] ACPI: LAPIC (acpi_id[0x08] lapic_id[0x00] disabled) [ 0.000000] ACPI: IOAPIC (id[0x02] address[0xfec00000] gsi_base[0]) [ 0.000000] IOAPIC[0]: apic_id 2, version 32, address 0xfec00000, GSI 0-23 [ 0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 0 global_irq 2 dfl dfl) [ 0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 9 global_irq 9 high level) [ 0.000000] ACPI: IRQ0 used by override. [ 0.000000] ACPI: IRQ2 used by override. [ 0.000000] ACPI: IRQ9 used by override. [ 0.000000] Using ACPI (MADT) for SMP configuration information [ 0.000000] ACPI: HPET id: 0x8086a201 base: 0xfed00000 [ 0.000000] SMP: Allowing 8 CPUs, 6 hotplug CPUs [ 0.000000] nr_irqs_gsi: 40 [ 0.000000] early_res array is doubled to 64 at [16000 - 167ff] [ 0.000000] PM: Registered nosave memory: 0000000000002000 - 0000000000010000 [ 0.000000] PM: Registered nosave memory: 000000000009d000 - 00000000000a0000 [ 0.000000] PM: Registered nosave memory: 00000000000a0000 - 00000000000e0000 [ 0.000000] PM: Registered nosave memory: 00000000000e0000 - 0000000000100000 [ 0.000000] Allocating PCI resources starting at c0000000 (gap: c0000000:20000000) [ 0.000000] Booting paravirtualized kernel on bare hardware [ 0.000000] setup_percpu: NR_CPUS:8 nr_cpumask_bits:8 nr_cpu_ids:8 nr_node_ids:1 [ 0.000000] PERCPU: Embedded 15 pages/cpu @c3c00000 s39872 r0 d21568 u262144 [ 0.000000] pcpu-alloc: s39872 r0 d21568 u262144 alloc=1*2097152 [ 0.000000] pcpu-alloc: [0] 0 1 2 3 4 5 6 7 [ 0.000000] early_res array is doubled to 128 at [16800 - 177ff] [ 0.000000] Built 1 zonelists in Zone order, mobility grouping on. Total pages: 954061 [ 0.000000] Kernel command line: BOOT_IMAGE=/boot/vmlinuz-2.6.35-22-generic-pae root=UUID=d8799835-d288-4c17-85a5-23ebde743a39 ro i8042.nopnp [ 0.000000] PID hash table entries: 4096 (order: 2, 16384 bytes) [ 0.000000] Dentry cache hash table entries: 131072 (order: 7, 524288 bytes) [ 0.000000] Inode-cache hash table entries: 65536 (order: 6, 262144 bytes) [ 0.000000] Enabling fast FPU save and restore... done. [ 0.000000] Enabling unmasked SIMD FPU exception support... done. [ 0.000000] Initializing CPU#0 [ 0.000000] allocated 25559020 bytes of page_cgroup [ 0.000000] please try 'cgroup_disable=memory' option if you don't want memory cgroups [ 0.000000] Subtract (60 early reservations) [ 0.000000] #1 [0000001000 - 0000002000] EX TRAMPOLINE [ 0.000000] #2 [0000100000 - 00009f965c] TEXT DATA BSS [ 0.000000] #3 [000009d000 - 0000100000] BIOS reserved [ 0.000000] #4 [00009fa000 - 0000a011a0] BRK [ 0.000000] #5 [0000010000 - 0000011000] TRAMPOLINE [ 0.000000] #6 [0000011000 - 0000015000] ACPI WAKEUP [ 0.000000] #7 [0000015000 - 0000016000] PGTABLE [ 0.000000] #8 [0000a02000 - 000143f000] NEW RAMDISK [ 0.000000] #9 [000143f000 - 0001440000] BOOTMEM [ 0.000000] #10 [0001440000 - 0003b40000] BOOTMEM [ 0.000000] #11 [0003b40000 - 0003b40004] BOOTMEM [ 0.000000] #12 [0003b40040 - 0003b40100] BOOTMEM [ 0.000000] #13 [0003b40100 - 0003b401a8] BOOTMEM [ 0.000000] #14 [0003b401c0 - 0003b431c0] BOOTMEM [ 0.000000] #15 [0003b431c0 - 0003b434c4] BOOTMEM [ 0.000000] #16 [0003b43500 - 0003b4f500] BOOTMEM [ 0.000000] #17 [0003b4f500 - 0003b4f52d] BOOTMEM [ 0.000000] #18 [0003b4f540 - 0003b4f56f] BOOTMEM [ 0.000000] #19 [0003b4f580 - 0003b4f874] BOOTMEM [ 0.000000] #20 [0003b4f880 - 0003b4f8c0] BOOTMEM [ 0.000000] #21 [0003b4f8c0 - 0003b4f900] BOOTMEM [ 0.000000] #22 [0003b4f900 - 0003b4f940] BOOTMEM [ 0.000000] #23 [0003b4f940 - 0003b4f980] BOOTMEM [ 0.000000] #24 [0003b4f980 - 0003b4f9c0] BOOTMEM [ 0.000000] #25 [0003b4f9c0 - 0003b4fa00] BOOTMEM [ 0.000000] #26 [0003b4fa00 - 0003b4fa40] BOOTMEM [ 0.000000] #27 [0003b4fa40 - 0003b4fa80] BOOTMEM [ 0.000000] #28 [0003b4fa80 - 0003b4fac0] BOOTMEM [ 0.000000] #29 [0003b4fac0 - 0003b4fb00] BOOTMEM [ 0.000000] #30 [0003b4fb00 - 0003b4fb40] BOOTMEM [ 0.000000] #31 [0003b4fb40 - 0003b4fb80] BOOTMEM [ 0.000000] #32 [0003b4fb80 - 0003b4fbc0] BOOTMEM [ 0.000000] #33 [0003b4fbc0 - 0003b4fc00] BOOTMEM [ 0.000000] #34 [0003b4fc00 - 0003b4fc40] BOOTMEM [ 0.000000] #35 [0003b4fc40 - 0003b4fc80] BOOTMEM [ 0.000000] #36 [0003b4fc80 - 0003b4fcc0] BOOTMEM [ 0.000000] #37 [0003b4fcc0 - 0003b4fd00] BOOTMEM [ 0.000000] #38 [0003b4fd00 - 0003b4fd10] BOOTMEM [ 0.000000] #39 [0003b4fd40 - 0003b4fd50] BOOTMEM [ 0.000000] #40 [0003b4fd80 - 0003b4fded] BOOTMEM [ 0.000000] #41 [0003b4fe00 - 0003b4fe6d] BOOTMEM [ 0.000000] #42 [0003c00000 - 0003c0f000] BOOTMEM [ 0.000000] #43 [0003c40000 - 0003c4f000] BOOTMEM [ 0.000000] #44 [0003c80000 - 0003c8f000] BOOTMEM [ 0.000000] #45 [0003cc0000 - 0003ccf000] BOOTMEM [ 0.000000] #46 [0003d00000 - 0003d0f000] BOOTMEM [ 0.000000] #47 [0003d40000 - 0003d4f000] BOOTMEM [ 0.000000] #48 [0003d80000 - 0003d8f000] BOOTMEM [ 0.000000] #49 [0003dc0000 - 0003dcf000] BOOTMEM [ 0.000000] #50 [0003b51e80 - 0003b51e84] BOOTMEM [ 0.000000] #51 [0003b51ec0 - 0003b51ec4] BOOTMEM [ 0.000000] #52 [0003b51f00 - 0003b51f20] BOOTMEM [ 0.000000] #53 [0003b51f40 - 0003b51f60] BOOTMEM [ 0.000000] #54 [0003b51f80 - 0003b52010] BOOTMEM [ 0.000000] #55 [0003b52040 - 0003b52070] BOOTMEM [ 0.000000] #56 [0003b52080 - 0003b56080] BOOTMEM [ 0.000000] #57 [0003b56080 - 0003bd6080] BOOTMEM [ 0.000000] #58 [0003dcf000 - 0003e0f000] BOOTMEM [ 0.000000] #59 [0003e0f000 - 000566efec] BOOTMEM [ 0.000000] Initializing HighMem for node 0 (00037bfe:00138000) [ 0.000000] Memory: 3770212k/5111808k available (5085k kernel code, 85972k reserved, 2432k data, 704k init, 2943240k highmem) [ 0.000000] virtual kernel memory layout: [ 0.000000] fixmap : 0xfff16000 - 0xfffff000 ( 932 kB) [ 0.000000] pkmap : 0xffc00000 - 0xffe00000 (2048 kB) [ 0.000000] vmalloc : 0xf83fe000 - 0xffbfe000 ( 120 MB) [ 0.000000] lowmem : 0xc0000000 - 0xf7bfe000 ( 891 MB) [ 0.000000] .init : 0xc0858000 - 0xc0908000 ( 704 kB) [ 0.000000] .data : 0xc05f750a - 0xc0857768 (2432 kB) [ 0.000000] .text : 0xc0100000 - 0xc05f750a (5085 kB) [ 0.000000] Checking if this processor honours the WP bit even in supervisor mode...Ok. [ 0.000000] SLUB: Genslabs=13, HWalign=64, Order=0-3, MinObjects=0, CPUs=8, Nodes=1 [ 0.000000] Hierarchical RCU implementation. [ 0.000000] RCU dyntick-idle grace-period acceleration is enabled. [ 0.000000] RCU-based detection of stalled CPUs is disabled. [ 0.000000] Verbose stalled-CPUs detection is disabled. [ 0.000000] NR_IRQS:2304 nr_irqs:744 [ 0.000000] Extended CMOS year: 2000 [ 0.000000] Console: colour VGA+ 80x25 [ 0.000000] console [tty0] enabled [ 0.000000] hpet clockevent registered [ 0.000000] Fast TSC calibration using PIT [ 0.004000] Detected 1196.920 MHz processor. [ 0.000007] Calibrating delay loop (skipped), value calculated using timer frequency.. 2393.84 BogoMIPS (lpj=4787680) [ 0.000158] pid_max: default: 32768 minimum: 301 [ 0.000254] Security Framework initialized [ 0.000342] AppArmor: AppArmor initialized [ 0.000412] Yama: becoming mindful. [ 0.000557] Mount-cache hash table entries: 512 [ 0.000798] Initializing cgroup subsys ns [ 0.000871] Initializing cgroup subsys cpuacct [ 0.000947] Initializing cgroup subsys memory [ 0.001028] Initializing cgroup subsys devices [ 0.001101] Initializing cgroup subsys freezer [ 0.001173] Initializing cgroup subsys net_cls [ 0.001278] CPU: Physical Processor ID: 0 [ 0.001348] CPU: Processor Core ID: 0 [ 0.001423] mce: CPU supports 9 MCE banks [ 0.001505] CPU0: Thermal monitoring handled by SMI [ 0.001516] using mwait in idle threads. [ 0.001591] Performance Events: PEBS fmt1+, Westmere events, Intel PMU driver. [ 0.001793] ... version: 3 [ 0.001862] ... bit width: 48 [ 0.001932] ... generic registers: 4 [ 0.002001] ... value mask: 0000ffffffffffff [ 0.002075] ... max period: 000000007fffffff [ 0.002149] ... fixed-purpose events: 3 [ 0.002219] ... event mask: 000000070000000f [ 0.006894] ACPI: Core revision 20100428 [ 0.055491] ftrace: converting mcount calls to 0f 1f 44 00 00 [ 0.055571] ftrace: allocating 22394 entries in 44 pages [ 0.068596] Enabling APIC mode: Flat. Using 1 I/O APICs [ 0.069105] ..TIMER: vector=0x30 apic1=0 pin1=2 apic2=-1 pin2=-1 [ 0.108842] CPU0: Intel(R) Pentium(R) CPU U5400 @ 1.20GHz stepping 05 [ 0.215141] Booting Node 0, Processors #1 [ 0.225533] Initializing CPU#1 [ 0.302941] CPU1: Thermal monitoring handled by SMI [ 0.323077] Brought up 2 CPUs [ 0.323266] Total of 2 processors activated (4787.80 BogoMIPS). [ 0.324339] devtmpfs: initialized [ 0.326447] regulator: core version 0.5 [ 0.326548] Time: 18:12:43 Date: 10/28/10 [ 0.326679] NET: Registered protocol family 16 [ 0.326862] Trying to unpack rootfs image as initramfs... [ 0.326932] EISA bus registered [ 0.326943] ACPI FADT declares the system doesn't support PCIe ASPM, so disable it [ 0.326946] ACPI: bus type pci registered [ 0.327058] PCI: MMCONFIG for domain 0000 [bus 00-ff] at [mem 0xe0000000-0xefffffff] (base 0xe0000000) [ 0.327063] PCI: MMCONFIG at [mem 0xe0000000-0xefffffff] reserved in E820 [ 0.327066] PCI: Using MMCONFIG for extended config space [ 0.327082] PCI: Using configuration type 1 for base access [ 0.335280] bio: create slab at 0 [ 0.340048] ACPI: EC: Look up EC in DSDT [ 0.341759] ACPI Error: No handler for Region [RAM_] (f74212f8) [EmbeddedControl] (20100428/evregion-369) [ 0.341940] ACPI Error: Region EmbeddedControl(0x3) has no handler (20100428/exfldio-293) [ 0.342116] ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.PCI0.LPCB.SNC_.SBRT] (Node f742f228), AE_NOT_EXIST [ 0.342409] ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.PCI0.LPCB.EC0_._REG] (Node f7422d98), AE_NOT_EXIST [ 0.344986] ACPI: Executed 1 blocks of module-level executable AML code [ 0.353464] ACPI: BIOS _OSI(Linux) query ignored [ 0.357003] ACPI: SSDT b3691c18 00264 (v01 Sony VAIO 20100614 INTL 20051117) [ 0.358481] ACPI: Dynamic OEM Table Load: [ 0.358612] ACPI: SSDT (null) 00264 (v01 Sony VAIO 20100614 INTL 20051117) [ 0.359506] ACPI: SSDT b368f018 00842 (v01 Sony VAIO 20100614 INTL 20051117) [ 0.360900] ACPI: Dynamic OEM Table Load: [ 0.361029] ACPI: SSDT (null) 00842 (v01 Sony VAIO 20100614 INTL 20051117) [ 0.362367] ACPI: SSDT b3690a98 00303 (v01 Sony VAIO 20100614 INTL 20051117) [ 0.363955] ACPI: Dynamic OEM Table Load: [ 0.364086] ACPI: SSDT (null) 00303 (v01 Sony VAIO 20100614 INTL 20051117) [ 0.364675] ACPI: SSDT b368ed98 00119 (v01 Sony VAIO 20100614 INTL 20051117) [ 0.366133] ACPI: Dynamic OEM Table Load: [ 0.366262] ACPI: SSDT (null) 00119 (v01 Sony VAIO 20100614 INTL 20051117) [ 0.386879] ACPI: Interpreter enabled [ 0.386955] ACPI: (supports S0 S3 S4 S5) [ 0.387211] ACPI: Using IOAPIC for interrupt routing [ 0.415627] ACPI: EC: GPE = 0x17, I/O: command/status = 0x66, data = 0x62 [ 0.416248] ACPI: No dock devices found. [ 0.416322] PCI: Using host bridge windows from ACPI; if necessary, use "pci=nocrs" and report a bug [ 0.418125] \_SB_.PCI0:_OSC invalid UUID [ 0.418128] _OSC request data:1 8 1f [ 0.418137] ACPI: PCI Root Bridge [PCI0] (domain 0000 [bus 00-fe]) [ 0.420683] pci_root PNP0A08:00: host bridge window [io 0x0000-0x0cf7] [ 0.420764] pci_root PNP0A08:00: host bridge window [io 0x0d00-0xffff] [ 0.420845] pci_root PNP0A08:00: host bridge window [mem 0x000a0000-0x000bffff] [ 0.420954] pci_root PNP0A08:00: host bridge window [mem 0xc0000000-0xfeafffff] [ 0.421149] pci 0000:00:02.0: reg 10: [mem 0xd0000000-0xd03fffff 64bit] [ 0.421159] pci 0000:00:02.0: reg 18: [mem 0xc0000000-0xcfffffff 64bit pref] [ 0.421166] pci 0000:00:02.0: reg 20: [io 0x5050-0x5057] [ 0.421297] pci 0000:00:16.0: reg 10: [mem 0xd9406100-0xd940610f 64bit] [ 0.421394] pci 0000:00:16.0: PME# supported from D0 D3hot D3cold [ 0.421401] pci 0000:00:16.0: PME# disabled [ 0.421492] pci 0000:00:1a.0: reg 10: [mem 0xd9405c00-0xd9405fff] [ 0.421589] pci 0000:00:1a.0: PME# supported from D0 D3hot D3cold [ 0.421596] pci 0000:00:1a.0: PME# disabled [ 0.421664] pci 0000:00:1b.0: reg 10: [mem 0xd9400000-0xd9403fff 64bit] [ 0.421753] pci 0000:00:1b.0: PME# supported from D0 D3hot D3cold [ 0.421760] pci 0000:00:1b.0: PME# disabled [ 0.421895] pci 0000:00:1c.0: PME# supported from D0 D3hot D3cold [ 0.421902] pci 0000:00:1c.0: PME# disabled [ 0.422042] pci 0000:00:1c.1: PME# supported from D0 D3hot D3cold [ 0.422049] pci 0000:00:1c.1: PME# disabled [ 0.422190] pci 0000:00:1c.2: PME# supported from D0 D3hot D3cold [ 0.422197] pci 0000:00:1c.2: PME# disabled [ 0.422337] pci 0000:00:1c.3: PME# supported from D0 D3hot D3cold [ 0.422344] pci 0000:00:1c.3: PME# disabled [ 0.422430] pci 0000:00:1d.0: reg 10: [mem 0xd9405800-0xd9405bff] [ 0.422529] pci 0000:00:1d.0: PME# supported from D0 D3hot D3cold [ 0.422536] pci 0000:00:1d.0: PME# disabled [ 0.422838] pci 0000:00:1f.2: reg 10: [io 0x5048-0x504f] [ 0.422850] pci 0000:00:1f.2: reg 14: [io 0x505c-0x505f] [ 0.422861] pci 0000:00:1f.2: reg 18: [io 0x5040-0x5047] [ 0.422873] pci 0000:00:1f.2: reg 1c: [io 0x5058-0x505b] [ 0.422884] pci 0000:00:1f.2: reg 20: [io 0x5020-0x503f] [ 0.422895] pci 0000:00:1f.2: reg 24: [mem 0xd9405000-0xd94057ff] [ 0.422963] pci 0000:00:1f.2: PME# supported from D3hot [ 0.422970] pci 0000:00:1f.2: PME# disabled [ 0.423032] pci 0000:00:1f.3: reg 10: [mem 0xd9406000-0xd94060ff 64bit] [ 0.423060] pci 0000:00:1f.3: reg 20: [io 0x5000-0x501f] [ 0.423156] pci 0000:00:1f.6: reg 10: [mem 0xd9404000-0xd9404fff 64bit] [ 0.423381] pci 0000:02:00.0: reg 10: [mem 0xd8400000-0xd840ffff 64bit] [ 0.423475] pci 0000:02:00.0: supports D1 [ 0.423479] pci 0000:02:00.0: PME# supported from D0 D1 D3hot D3cold [ 0.423486] pci 0000:02:00.0: PME# disabled [ 0.423523] pci 0000:00:1c.0: PCI bridge to [bus 02-02] [ 0.423603] pci 0000:00:1c.0: bridge window [io 0x4000-0x4fff] [ 0.423610] pci 0000:00:1c.0: bridge window [mem 0xd8400000-0xd93fffff] [ 0.423622] pci 0000:00:1c.0: bridge window [mem 0xd0400000-0xd13fffff 64bit pref] [ 0.423785] pci 0000:03:00.0: reg 10: [mem 0xd7400a00-0xd7400aff] [ 0.423917] pci 0000:03:00.0: supports D1 D2 [ 0.423921] pci 0000:03:00.0: PME# supported from D0 D1 D2 D3hot D3cold [ 0.423960] pci 0000:03:00.0: PME# disabled [ 0.424046] pci 0000:03:00.1: reg 10: [mem 0xd7400900-0xd74009ff] [ 0.424180] pci 0000:03:00.1: supports D1 D2 [ 0.424183] pci 0000:03:00.1: PME# supported from D0 D1 D2 D3hot D3cold [ 0.424223] pci 0000:03:00.1: PME# disabled [ 0.424305] pci 0000:03:00.3: reg 10: [mem 0xd7400000-0xd74007ff] [ 0.424438] pci 0000:03:00.3: supports D1 D2 [ 0.424441] pci 0000:03:00.3: PME# supported from D0 D1 D2 D3hot D3cold [ 0.424480] pci 0000:03:00.3: PME# disabled [ 0.424559] pci 0000:03:00.4: reg 10: [mem 0xd7400800-0xd74008ff] [ 0.424692] pci 0000:03:00.4: supports D1 D2 [ 0.424695] pci 0000:03:00.4: PME# supported from D0 D1 D2 D3hot D3cold [ 0.424735] pci 0000:03:00.4: PME# disabled [ 0.424782] pci 0000:00:1c.1: PCI bridge to [bus 03-03] [ 0.424861] pci 0000:00:1c.1: bridge window [io 0x3000-0x3fff] [ 0.424869] pci 0000:00:1c.1: bridge window [mem 0xd7400000-0xd83fffff] [ 0.424881] pci 0000:00:1c.1: bridge window [mem 0xd1400000-0xd23fffff 64bit pref] [ 0.425025] pci 0000:04:00.0: reg 10: [mem 0xd6400000-0xd643ffff 64bit] [ 0.425039] pci 0000:04:00.0: reg 18: [io 0x2000-0x207f] [ 0.425145] pci 0000:04:00.0: PME# supported from D0 D1 D2 D3hot D3cold [ 0.425153] pci 0000:04:00.0: PME# disabled [ 0.425190] pci 0000:00:1c.2: PCI bridge to [bus 04-04] [ 0.425268] pci 0000:00:1c.2: bridge window [io 0x2000-0x2fff] [ 0.425275] pci 0000:00:1c.2: bridge window [mem 0xd6400000-0xd73fffff] [ 0.425287] pci 0000:00:1c.2: bridge window [mem 0xd2400000-0xd33fffff 64bit pref] [ 0.425374] pci 0000:00:1c.3: PCI bridge to [bus 05-0c] [ 0.425453] pci 0000:00:1c.3: bridge window [io 0x1000-0x1fff] [ 0.425461] pci 0000:00:1c.3: bridge window [mem 0xd4400000-0xd63fffff] [ 0.425472] pci 0000:00:1c.3: bridge window [mem 0xd3400000-0xd43fffff 64bit pref] [ 0.425588] pci 0000:00:1e.0: PCI bridge to [bus 0d-0d] (subtractive decode) [ 0.425674] pci 0000:00:1e.0: bridge window [io 0xf000-0x0000] (disabled) [ 0.425681] pci 0000:00:1e.0: bridge window [mem 0xfff00000-0x000fffff] (disabled) [ 0.425693] pci 0000:00:1e.0: bridge window [mem 0xfff00000-0x000fffff pref] (disabled) [ 0.425697] pci 0000:00:1e.0: bridge window [io 0x0000-0x0cf7] (subtractive decode) [ 0.425701] pci 0000:00:1e.0: bridge window [io 0x0d00-0xffff] (subtractive decode) [ 0.425705] pci 0000:00:1e.0: bridge window [mem 0x000a0000-0x000bffff] (subtractive decode) [ 0.425710] pci 0000:00:1e.0: bridge window [mem 0xc0000000-0xfeafffff] (subtractive decode) [ 0.425758] pci_bus 0000:00: on NUMA node 0 [ 0.425772] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0._PRT] [ 0.426318] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.P0P1._PRT] [ 0.426720] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.RP01._PRT] [ 0.426930] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.RP02._PRT] [ 0.427256] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.RP03._PRT] [ 0.427465] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.RP04._PRT] [ 0.428018] \_SB_.PCI0:_OSC invalid UUID [ 0.428020] _OSC request data:1 19 1f [ 0.464268] ACPI: PCI Root Bridge [CPBG] (domain 0000 [bus ff]) [ 0.464803] pci_bus 0000:ff: on NUMA node 0 [ 0.465382] ACPI: PCI Interrupt Link [LNKA] (IRQs 1 3 4 5 6 *7 10 12 14 15) [ 0.466093] ACPI: PCI Interrupt Link [LNKB] (IRQs 1 3 4 5 6 7 11 12 14 15) *10 [ 0.466857] ACPI: PCI Interrupt Link [LNKC] (IRQs 1 3 4 5 6 7 10 12 14 15) *11 [ 0.467623] ACPI: PCI Interrupt Link [LNKD] (IRQs 1 3 4 5 6 *7 11 12 14 15) [ 0.468327] ACPI: PCI Interrupt Link [LNKE] (IRQs 1 3 4 5 6 7 10 12 14 15) *0, disabled. [ 0.469118] ACPI: PCI Interrupt Link [LNKF] (IRQs 1 3 4 5 6 7 *11 12 14 15) [ 0.469823] ACPI: PCI Interrupt Link [LNKG] (IRQs 1 3 4 5 6 7 10 12 14 15) *11 [ 0.470583] ACPI: PCI Interrupt Link [LNKH] (IRQs 1 3 4 5 6 7 11 12 14 15) *10 [ 0.471202] HEST: Table is not found! [ 0.471379] vgaarb: device added: PCI:0000:00:02.0,decodes=io+mem,owns=io+mem,locks=none [ 0.471508] vgaarb: loaded [ 0.471797] SCSI subsystem initialized [ 0.471968] libata version 3.00 loaded. [ 0.472040] usbcore: registered new interface driver usbfs [ 0.472130] usbcore: registered new interface driver hub [ 0.472232] usbcore: registered new device driver usb [ 0.472633] ACPI: WMI: Mapper loaded [ 0.472702] PCI: Using ACPI for IRQ routing [ 0.472773] PCI: pci_cache_line_size set to 64 bytes [ 0.472999] reserve RAM buffer: 0000000000002000 - 000000000000ffff [ 0.473004] reserve RAM buffer: 000000000009d000 - 000000000009ffff [ 0.473008] reserve RAM buffer: 00000000b363f000 - 00000000b3ffffff [ 0.473013] reserve RAM buffer: 00000000b3800000 - 00000000b3ffffff [ 0.473146] NetLabel: Initializing [ 0.473214] NetLabel: domain hash size = 128 [ 0.473284] NetLabel: protocols = UNLABELED CIPSOv4 [ 0.473373] NetLabel: unlabeled traffic allowed by default [ 0.473498] hpet0: at MMIO 0xfed00000, IRQs 2, 8, 0, 0, 0, 0, 0, 0 [ 0.473847] hpet0: 8 comparators, 64-bit 14.318180 MHz counter [ 0.475961] Switching to clocksource tsc [ 0.490990] AppArmor: AppArmor Filesystem Enabled [ 0.491086] pnp: PnP ACPI init [ 0.491175] ACPI: bus type pnp registered [ 0.493732] pnp 00:05: disabling [io 0x164e-0x164f] because it overlaps 0000:00:1c.3 BAR 13 [io 0x1000-0x1fff] [ 0.496544] pnp: PnP ACPI: found 10 devices [ 0.496615] ACPI: ACPI bus type pnp unregistered [ 0.496689] PnPBIOS: Disabled by ACPI PNP [ 0.496775] system 00:05: [io 0x0680-0x069f] has been reserved [ 0.496853] system 00:05: [io 0x0800-0x080f] has been reserved [ 0.496931] system 00:05: [io 0x0810-0x0813] has been reserved [ 0.497009] system 00:05: [io 0xffff] has been reserved [ 0.497085] system 00:05: [io 0x0400-0x047f] has been reserved [ 0.497163] system 00:05: [io 0x0500-0x057f] has been reserved [ 0.497247] system 00:08: [mem 0xfed1c000-0xfed1ffff] has been reserved [ 0.497328] system 00:08: [mem 0xfed10000-0xfed13fff] has been reserved [ 0.497408] system 00:08: [mem 0xfed18000-0xfed18fff] has been reserved [ 0.497489] system 00:08: [mem 0xfed19000-0xfed19fff] has been reserved [ 0.497571] system 00:08: [mem 0xe0000000-0xefffffff] has been reserved [ 0.497652] system 00:08: [mem 0xfed20000-0xfed3ffff] has been reserved [ 0.497733] system 00:08: [mem 0xff000000-0xffffffff] could not be reserved [ 0.497815] system 00:08: [mem 0xfee00000-0xfeefffff] could not be reserved [ 0.497898] system 00:08: [mem 0xd9500000-0xd9500fff] has been reserved [ 0.534569] pci 0000:00:1c.0: PCI bridge to [bus 02-02] [ 0.534652] pci 0000:00:1c.0: bridge window [io 0x4000-0x4fff] [ 0.534736] pci 0000:00:1c.0: bridge window [mem 0xd8400000-0xd93fffff] [ 0.534821] pci 0000:00:1c.0: bridge window [mem 0xd0400000-0xd13fffff 64bit pref] [ 0.534938] pci 0000:00:1c.1: PCI bridge to [bus 03-03] [ 0.535019] pci 0000:00:1c.1: bridge window [io 0x3000-0x3fff] [ 0.535102] pci 0000:00:1c.1: bridge window [mem 0xd7400000-0xd83fffff] [ 0.535187] pci 0000:00:1c.1: bridge window [mem 0xd1400000-0xd23fffff 64bit pref] [ 0.536293] pci 0000:00:1c.2: PCI bridge to [bus 04-04] [ 0.536370] pci 0000:00:1c.2: bridge window [io 0x2000-0x2fff] [ 0.536453] pci 0000:00:1c.2: bridge window [mem 0xd6400000-0xd73fffff] [ 0.536537] pci 0000:00:1c.2: bridge window [mem 0xd2400000-0xd33fffff 64bit pref] [ 0.536653] pci 0000:00:1c.3: PCI bridge to [bus 05-0c] [ 0.536730] pci 0000:00:1c.3: bridge window [io 0x1000-0x1fff] [ 0.536813] pci 0000:00:1c.3: bridge window [mem 0xd4400000-0xd63fffff] [ 0.536898] pci 0000:00:1c.3: bridge window [mem 0xd3400000-0xd43fffff 64bit pref] [ 0.537015] pci 0000:00:1e.0: PCI bridge to [bus 0d-0d] [ 0.537089] pci 0000:00:1e.0: bridge window [io disabled] [ 0.537171] pci 0000:00:1e.0: bridge window [mem disabled] [ 0.537252] pci 0000:00:1e.0: bridge window [mem pref disabled] [ 0.537356] alloc irq_desc for 17 on node -1 [ 0.537360] alloc kstat_irqs on node -1 [ 0.537370] pci 0000:00:1c.0: PCI INT A -> GSI 17 (level, low) -> IRQ 17 [ 0.537455] pci 0000:00:1c.0: setting latency timer to 64 [ 0.537474] alloc irq_desc for 16 on node -1 [ 0.537476] alloc kstat_irqs on node -1 [ 0.537483] pci 0000:00:1c.1: PCI INT B -> GSI 16 (level, low) -> IRQ 16 [ 0.537568] pci 0000:00:1c.1: setting latency timer to 64 [ 0.537582] alloc irq_desc for 18 on node -1 [ 0.537584] alloc kstat_irqs on node -1 [ 0.537590] pci 0000:00:1c.2: PCI INT C -> GSI 18 (level, low) -> IRQ 18 [ 0.537674] pci 0000:00:1c.2: setting latency timer to 64 [ 0.537691] alloc irq_desc for 19 on node -1 [ 0.537693] alloc kstat_irqs on node -1 [ 0.537699] pci 0000:00:1c.3: PCI INT D -> GSI 19 (level, low) -> IRQ 19 [ 0.537782] pci 0000:00:1c.3: setting latency timer to 64 [ 0.537795] pci 0000:00:1e.0: setting latency timer to 64 [ 0.537803] pci_bus 0000:00: resource 4 [io 0x0000-0x0cf7] [ 0.537807] pci_bus 0000:00: resource 5 [io 0x0d00-0xffff] [ 0.537810] pci_bus 0000:00: resource 6 [mem 0x000a0000-0x000bffff] [ 0.537814] pci_bus 0000:00: resource 7 [mem 0xc0000000-0xfeafffff] [ 0.537818] pci_bus 0000:02: resource 0 [io 0x4000-0x4fff] [ 0.537822] pci_bus 0000:02: resource 1 [mem 0xd8400000-0xd93fffff] [ 0.537826] pci_bus 0000:02: resource 2 [mem 0xd0400000-0xd13fffff 64bit pref] [ 0.537830] pci_bus 0000:03: resource 0 [io 0x3000-0x3fff] [ 0.537833] pci_bus 0000:03: resource 1 [mem 0xd7400000-0xd83fffff] [ 0.537837] pci_bus 0000:03: resource 2 [mem 0xd1400000-0xd23fffff 64bit pref] [ 0.537841] pci_bus 0000:04: resource 0 [io 0x2000-0x2fff] [ 0.537844] pci_bus 0000:04: resource 1 [mem 0xd6400000-0xd73fffff] [ 0.537848] pci_bus 0000:04: resource 2 [mem 0xd2400000-0xd33fffff 64bit pref] [ 0.537852] pci_bus 0000:05: resource 0 [io 0x1000-0x1fff] [ 0.537856] pci_bus 0000:05: resource 1 [mem 0xd4400000-0xd63fffff] [ 0.537859] pci_bus 0000:05: resource 2 [mem 0xd3400000-0xd43fffff 64bit pref] [ 0.537864] pci_bus 0000:0d: resource 4 [io 0x0000-0x0cf7] [ 0.537867] pci_bus 0000:0d: resource 5 [io 0x0d00-0xffff] [ 0.537871] pci_bus 0000:0d: resource 6 [mem 0x000a0000-0x000bffff] [ 0.537874] pci_bus 0000:0d: resource 7 [mem 0xc0000000-0xfeafffff] [ 0.537932] NET: Registered protocol family 2 [ 0.538097] IP route cache hash table entries: 32768 (order: 5, 131072 bytes) [ 0.538471] TCP established hash table entries: 131072 (order: 8, 1048576 bytes) [ 0.539089] TCP bind hash table entries: 65536 (order: 7, 524288 bytes) [ 0.539408] TCP: Hash tables configured (established 131072 bind 65536) [ 0.539488] TCP reno registered [ 0.539556] UDP hash table entries: 512 (order: 2, 16384 bytes) [ 0.539639] UDP-Lite hash table entries: 512 (order: 2, 16384 bytes) [ 0.539843] NET: Registered protocol family 1 [ 0.539933] pci 0000:00:02.0: Boot video device [ 0.571050] PCI: CLS 64 bytes, default 64 [ 0.571087] Simple Boot Flag at 0x44 set to 0x1 [ 0.571422] cpufreq-nforce2: No nForce2 chipset. [ 0.571532] Scanning for low memory corruption every 60 seconds [ 0.571803] audit: initializing netlink socket (disabled) [ 0.571892] type=2000 audit(1288289562.420:1): initialized [ 0.592701] highmem bounce pool size: 64 pages [ 0.592782] HugeTLB registered 2 MB page size, pre-allocated 0 pages [ 0.594961] VFS: Disk quotas dquot_6.5.2 [ 0.595126] Dquot-cache hash table entries: 1024 (order 0, 4096 bytes) [ 0.596076] fuse init (API version 7.14) [ 0.596278] msgmni has been set to 1615 [ 0.596725] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 253) [ 0.596834] io scheduler noop registered [ 0.596904] io scheduler deadline registered [ 0.596992] io scheduler cfq registered (default) [ 0.597238] pcieport 0000:00:1c.0: setting latency timer to 64 [ 0.597308] alloc irq_desc for 40 on node -1 [ 0.597311] alloc kstat_irqs on node -1 [ 0.597329] pcieport 0000:00:1c.0: irq 40 for MSI/MSI-X [ 0.597463] pcieport 0000:00:1c.1: setting latency timer to 64 [ 0.597527] alloc irq_desc for 41 on node -1 [ 0.597529] alloc kstat_irqs on node -1 [ 0.597543] pcieport 0000:00:1c.1: irq 41 for MSI/MSI-X [ 0.597675] pcieport 0000:00:1c.2: setting latency timer to 64 [ 0.597740] alloc irq_desc for 42 on node -1 [ 0.597742] alloc kstat_irqs on node -1 [ 0.597756] pcieport 0000:00:1c.2: irq 42 for MSI/MSI-X [ 0.597884] pcieport 0000:00:1c.3: setting latency timer to 64 [ 0.597949] alloc irq_desc for 43 on node -1 [ 0.597952] alloc kstat_irqs on node -1 [ 0.597964] pcieport 0000:00:1c.3: irq 43 for MSI/MSI-X [ 0.598120] pci_hotplug: PCI Hot Plug PCI Core version: 0.5 [ 0.598463] \_SB_.PCI0:_OSC invalid UUID [ 0.598466] _OSC request data:1 0 1f [ 0.598717] \_SB_.PCI0:_OSC invalid UUID [ 0.598719] _OSC request data:1 0 1f [ 0.598972] \_SB_.PCI0:_OSC invalid UUID [ 0.598975] _OSC request data:1 0 1f [ 0.599220] \_SB_.PCI0:_OSC invalid UUID [ 0.599222] _OSC request data:1 0 1f [ 0.599491] \_SB_.PCI0:_OSC invalid UUID [ 0.599493] _OSC request data:1 0 1f [ 0.599736] \_SB_.PCI0:_OSC invalid UUID [ 0.599739] _OSC request data:1 0 1f [ 0.599980] \_SB_.PCI0:_OSC invalid UUID [ 0.599983] _OSC request data:1 0 1f [ 0.600226] \_SB_.PCI0:_OSC invalid UUID [ 0.600228] _OSC request data:1 0 1f [ 0.600282] pciehp: PCI Express Hot Plug Controller Driver version: 0.4 [ 0.600480] intel_idle: MWAIT substates: 0x1120 [ 0.600483] intel_idle: v0.4 model 0x25 [ 0.600486] intel_idle: lapic_timer_reliable_states 0xffffffff [ 0.601484] ACPI: AC Adapter [ADP1] (on-line) [ 0.601697] input: Sleep Button as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0E:00/input/input0 [ 0.601819] ACPI: Sleep Button [SLPB] [ 0.601949] input: Lid Switch as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0D:00/input/input1 [ 0.603285] ACPI: Lid Switch [LID0] [ 0.603421] input: Power Button as /devices/LNXSYSTM:00/LNXPWRBN:00/input/input2 [ 0.603531] ACPI: Power Button [PWRF] [ 0.605214] ACPI: acpi_idle yielding to intel_idle [ 0.639586] thermal LNXTHERM:01: registered as thermal_zone0 [ 0.639677] ACPI: Thermal Zone [TZS0] (43 C) [ 0.648202] thermal LNXTHERM:02: registered as thermal_zone1 [ 0.648287] ACPI: Thermal Zone [TZS1] (40 C) [ 0.648523] ERST: Table is not found! [ 0.649117] Serial: 8250/16550 driver, 4 ports, IRQ sharing enabled [ 0.651290] brd: module loaded [ 0.652139] loop: module loaded [ 0.652928] Fixed MDIO Bus: probed [ 0.653039] PPP generic driver version 2.4.2 [ 0.653155] tun: Universal TUN/TAP device driver, 1.6 [ 0.653228] tun: (C) 1999-2004 Max Krasnyansky [ 0.653409] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver [ 0.653521] ehci_hcd 0000:00:1a.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16 [ 0.653620] ehci_hcd 0000:00:1a.0: setting latency timer to 64 [ 0.653626] ehci_hcd 0000:00:1a.0: EHCI Host Controller [ 0.653747] ehci_hcd 0000:00:1a.0: new USB bus registered, assigned bus number 1 [ 0.653890] ehci_hcd 0000:00:1a.0: debug port 2 [ 0.657860] ehci_hcd 0000:00:1a.0: cache line size of 64 is not supported [ 0.657918] ehci_hcd 0000:00:1a.0: irq 16, io mem 0xd9405c00 [ 0.661901] isapnp: Scanning for PnP cards... [ 0.711252] ehci_hcd 0000:00:1a.0: USB 2.0 started, EHCI 1.00 [ 0.711544] hub 1-0:1.0: USB hub found [ 0.711627] hub 1-0:1.0: 3 ports detected [ 0.711822] alloc irq_desc for 23 on node -1 [ 0.711825] alloc kstat_irqs on node -1 [ 0.711836] ehci_hcd 0000:00:1d.0: PCI INT A -> GSI 23 (level, low) -> IRQ 23 [ 0.711948] ehci_hcd 0000:00:1d.0: setting latency timer to 64 [ 0.711954] ehci_hcd 0000:00:1d.0: EHCI Host Controller [ 0.712084] ehci_hcd 0000:00:1d.0: new USB bus registered, assigned bus number 2 [ 0.712227] ehci_hcd 0000:00:1d.0: debug port 2 [ 0.716245] ehci_hcd 0000:00:1d.0: cache line size of 64 is not supported [ 0.716280] ehci_hcd 0000:00:1d.0: irq 23, io mem 0xd9405800 [ 0.764005] ehci_hcd 0000:00:1d.0: USB 2.0 started, EHCI 1.00 [ 0.764307] hub 2-0:1.0: USB hub found [ 0.764381] hub 2-0:1.0: 3 ports detected [ 0.764559] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver [ 0.764657] uhci_hcd: USB Universal Host Controller Interface driver [ 0.764793] i8042: PNP detection disabled [ 0.799336] Freeing initrd memory: 10484k freed [ 0.812317] serio: i8042 KBD port at 0x60,0x64 irq 1 [ 0.812406] serio: i8042 AUX port at 0x60,0x64 irq 12 [ 0.812622] mice: PS/2 mouse device common for all mice [ 0.812887] rtc_cmos 00:06: RTC can wake from S4 [ 0.813017] rtc_cmos 00:06: rtc core: registered rtc_cmos as rtc0 [ 0.813130] rtc0: alarms up to one year, y3k, 242 bytes nvram, hpet irqs [ 0.813380] device-mapper: uevent: version 1.0.3 [ 0.813625] device-mapper: ioctl: 4.17.0-ioctl (2010-03-05) initialised: dm-devel@redhat.com [ 0.813815] device-mapper: multipath: version 1.1.1 loaded [ 0.813892] device-mapper: multipath round-robin: version 1.0.0 loaded [ 0.814139] EISA: Probing bus 0 at eisa.0 [ 0.814210] EISA: Cannot allocate resource for mainboard [ 0.814286] Cannot allocate resource for EISA slot 1 [ 0.814360] Cannot allocate resource for EISA slot 2 [ 0.814451] Cannot allocate resource for EISA slot 3 [ 0.814528] Cannot allocate resource for EISA slot 4 [ 0.814601] Cannot allocate resource for EISA slot 5 [ 0.814683] Cannot allocate resource for EISA slot 6 [ 0.814756] Cannot allocate resource for EISA slot 7 [ 0.814829] Cannot allocate resource for EISA slot 8 [ 0.814902] EISA: Detected 0 cards. [ 0.815156] cpuidle: using governor ladder [ 0.815410] cpuidle: using governor menu [ 0.815909] TCP cubic registered [ 0.816173] NET: Registered protocol family 10 [ 0.816782] lo: Disabled Privacy Extensions [ 0.817164] NET: Registered protocol family 17 [ 0.818624] Using IPI No-Shortcut mode [ 0.818808] PM: Resume from disk failed. [ 0.818824] registered taskstats version 1 [ 0.819584] Magic number: 14:207:242 [ 0.819764] rtc_cmos 00:06: setting system clock to 2010-10-28 18:12:43 UTC (1288289563) [ 0.819875] BIOS EDD facility v0.16 2004-Jun-25, 0 devices found [ 0.819952] EDD information not available. [ 0.849457] input: AT Translated Set 2 keyboard as /devices/platform/i8042/serio0/input/input3 [ 0.890104] ACPI: Battery Slot [BAT0] (battery present) [ 1.040988] isapnp: No Plug & Play device found [ 1.041077] Freeing unused kernel memory: 704k freed [ 1.041556] Write protecting the kernel text: 5088k [ 1.041724] Write protecting the kernel read-only data: 2012k [ 1.062496] usb 1-1: new high speed USB device using ehci_hcd and address 2 [ 1.065144] udev[76]: starting version 163 [ 1.196673] hub 1-1:1.0: USB hub found [ 1.196875] hub 1-1:1.0: 6 ports detected [ 1.245805] atl1c 0000:04:00.0: PCI INT A -> GSI 18 (level, low) -> IRQ 18 [ 1.245906] atl1c 0000:04:00.0: setting latency timer to 64 [ 1.247089] sdhci: Secure Digital Host Controller Interface driver [ 1.247167] sdhci: Copyright(c) Pierre Ossman [ 1.249680] sdhci-pci 0000:03:00.0: SDHCI controller found [1180:e822] (rev 0) [ 1.249841] sdhci-pci 0000:03:00.0: PCI INT A -> GSI 17 (level, low) -> IRQ 17 [ 1.250009] sdhci-pci 0000:03:00.0: Will use DMA mode even though HW doesn't fully claim to support it. [ 1.250158] sdhci-pci 0000:03:00.0: setting latency timer to 64 [ 1.251278] Registered led device: mmc0:: [ 1.299628] mmc0: SDHCI controller on PCI [0000:03:00.0] using DMA [ 1.299737] sdhci-pci 0000:03:00.4: SDHCI controller found [1180:e822] (rev 0) [ 1.301898] sdhci-pci 0000:03:00.4: PCI INT C -> GSI 19 (level, low) -> IRQ 19 [ 1.308179] usb 2-1: new high speed USB device using ehci_hcd and address 2 [ 1.323141] sdhci-pci 0000:03:00.4: Will use DMA mode even though HW doesn't fully claim to support it. [ 1.323267] sdhci-pci 0000:03:00.4: setting latency timer to 64 [ 1.324350] Registered led device: mmc1:: [ 1.325403] mmc1: SDHCI controller on PCI [0000:03:00.4] using DMA [ 1.339601] firewire_ohci 0000:03:00.3: PCI INT D -> GSI 16 (level, low) -> IRQ 16 [ 1.339721] firewire_ohci 0000:03:00.3: setting latency timer to 64 [ 1.344376] ahci 0000:00:1f.2: version 3.0 [ 1.344396] ahci 0000:00:1f.2: PCI INT B -> GSI 19 (level, low) -> IRQ 19 [ 1.344532] alloc irq_desc for 44 on node -1 [ 1.344535] alloc kstat_irqs on node -1 [ 1.344552] ahci 0000:00:1f.2: irq 44 for MSI/MSI-X [ 1.344639] ahci 0000:00:1f.2: AHCI 0001.0300 32 slots 4 ports 3 Gbps 0x1 impl SATA mode [ 1.344752] ahci 0000:00:1f.2: flags: 64bit ncq sntf pm led clo pio slum part apst [ 1.344862] ahci 0000:00:1f.2: setting latency timer to 64 [ 1.345247] scsi0 : ahci [ 1.345565] scsi1 : ahci [ 1.345779] scsi2 : ahci [ 1.345987] scsi3 : ahci [ 1.346131] ata1: SATA max UDMA/133 abar m2048@0xd9405000 port 0xd9405100 irq 44 [ 1.346237] ata2: DUMMY [ 1.346299] ata3: DUMMY [ 1.346361] ata4: DUMMY [ 1.357070] atl1c 0000:04:00.0: version 1.0.0.2-NAPI [ 1.440591] hub 2-1:1.0: USB hub found [ 1.440791] hub 2-1:1.0: 8 ports detected [ 1.483827] firewire_ohci: Added fw-ohci device 0000:03:00.3, OHCI v1.0, 4 IR + 4 IT contexts, quirks 0x0 [ 1.512049] usb 1-1.2: new high speed USB device using ehci_hcd and address 3 [ 1.663738] ata1: SATA link up 3.0 Gbps (SStatus 123 SControl 300) [ 1.679983] usb 1-1.5: new full speed USB device using ehci_hcd and address 4 [ 1.711800] ata1.00: ATA-8: TOSHIBA MK3265GSX, GJ002H, max UDMA/100 [ 1.711891] ata1.00: 625142448 sectors, multi 16: LBA48 NCQ (depth 31/32), AA [ 1.713054] ata1.00: configured for UDMA/100 [ 1.728018] scsi 0:0:0:0: Direct-Access ATA TOSHIBA MK3265GS GJ00 PQ: 0 ANSI: 5 [ 1.728328] sd 0:0:0:0: Attached scsi generic sg0 type 0 [ 1.728514] sd 0:0:0:0: [sda] 625142448 512-byte logical blocks: (320 GB/298 GiB) [ 1.728690] sd 0:0:0:0: [sda] Write Protect is off [ 1.728763] sd 0:0:0:0: [sda] Mode Sense: 00 3a 00 00 [ 1.728793] sd 0:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA [ 1.729092] sda: sda1 sda2 < sda5 > [ 1.799339] sd 0:0:0:0: [sda] Attached SCSI disk [ 1.847878] usb 2-1.5: new low speed USB device using ehci_hcd and address 3 [ 1.968860] usbcore: registered new interface driver hiddev [ 1.971354] input: OPM-U06 as /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.5/2-1.5:1.0/input/input4 [ 1.971588] generic-usb 0003:054C:036B.0001: input,hidraw0: USB HID v11.10 Mouse [OPM-U06] on usb-0000:00:1d.0-1.5/input0 [ 1.971740] usbcore: registered new interface driver usbhid [ 1.971814] usbhid: USB HID core driver [ 1.975650] firewire_core: created device fw0: GUID 0800460304fbdc84, S400 [ 2.204102] EXT4-fs (sda1): INFO: recovery required on readonly filesystem [ 2.204248] EXT4-fs (sda1): write access will be enabled during recovery [ 2.357750] EXT4-fs (sda1): recovery complete [ 2.359315] EXT4-fs (sda1): mounted filesystem with ordered data mode. Opts: (null) [ 5.650878] udev[447]: starting version 163 [ 5.693138] lp: driver loaded but no devices found [ 5.705010] Adding 8472572k swap on /dev/sda5. Priority:-1 extents:1 across:8472572k [ 5.824068] sony-laptop: Sony Notebook Control Driver v0.6. [ 5.847068] intel ips 0000:00:1f.6: No CPUID match found. [ 5.847081] BUG: unable to handle kernel NULL pointer dereference at 00000008 [ 5.847226] IP: [] ips_detect_cpu+0x62/0x180 [intel_ips] [ 5.847340] *pdpt = 0000000035926001 *pde = 0000000000000000 [ 5.847478] Oops: 0000 [#1] SMP [ 5.847604] last sysfs file: /sys/devices/platform/pcspkr/uevent [ 5.847682] Modules linked in: intel_ips(+) sony_laptop(+) video output lp parport usbhid hid firewire_ohci ahci sdhci_pci atl1c libahci firewire_core sdhci led_class crc_itu_t [ 5.848384] [ 5.848448] Pid: 569, comm: modprobe Not tainted 2.6.35-22-generic-pae #35-Ubuntu VAIO/VPCY21S1E [ 5.848560] EIP: 0060:[] EFLAGS: 00010286 CPU: 0 [ 5.848638] EIP is at ips_detect_cpu+0x62/0x180 [intel_ips] [ 5.848714] EAX: 00580058 EBX: 00000000 ECX: 00580058 EDX: 00000000 [ 5.848792] ESI: f5965e04 EDI: f60eac00 EBP: f5965e14 ESP: f5965de4 [ 5.848871] DS: 007b ES: 007b FS: 00d8 GS: 00e0 SS: 0068 [ 5.848948] Process modprobe (pid: 569, ti=f5964000 task=f593b2c0 task.ti=f5964000) [ 5.849054] Stack: [ 5.849116] f88f6efc f88f6e9e f759db40 f5965e14 c02162f1 f5965e08 c05ee9c9 f88f5eef [ 5.849406] <0> 00000000 f60eac00 f75e9000 fffffff4 f5965e4c f88f5f2b c027b6cd f5965e4c [ 5.849779] <0> c027ac77 f5965e4c c027b07a f5965e38 f75e9000 f75e9060 c037614e f75e9000 [ 5.850209] Call Trace: [ 5.850284] [] ? kmem_cache_alloc_notrace+0x91/0xb0 [ 5.850367] [] ? mutex_lock+0x19/0x40 [ 5.850443] [] ? ips_probe+0x1f/0x6a0 [intel_ips] [ 5.850523] [] ? ips_probe+0x5b/0x6a0 [intel_ips] [ 5.850604] [] ? sysfs_add_one+0x1d/0x110 [ 5.850680] [] ? sysfs_new_dirent+0x67/0x100 [ 5.850756] [] ? sysfs_addrm_finish+0x1a/0xb0 [ 5.850837] [] ? pci_match_device+0xbe/0xd0 [ 5.850914] [] ? local_pci_probe+0x13/0x20 [ 5.850992] [] ? pci_device_probe+0x68/0x90 [ 5.851070] [] ? really_probe+0x50/0x150 [ 5.851147] [] ? pm_runtime_barrier+0x57/0xb0 [ 5.851225] [] ? driver_probe_device+0x3c/0x60 [ 5.851302] [] ? __driver_attach+0x81/0x90 [ 5.851379] [] ? bus_for_each_dev+0x53/0x80 [ 5.851455] [] ? driver_attach+0x1e/0x20 [ 5.851530] [] ? __driver_attach+0x0/0x90 [ 5.851605] [] ? bus_add_driver+0xd5/0x280 [ 5.851682] [] ? pci_device_remove+0x0/0x40 [ 5.851758] [] ? driver_register+0x6a/0x130 [ 5.851835] [] ? __pci_register_driver+0x45/0xb0 [ 5.851914] [] ? ips_init+0x17/0x19 [intel_ips] [ 5.851992] [] ? do_one_initcall+0x32/0x1a0 [ 5.852070] [] ? ips_init+0x0/0x19 [intel_ips] [ 5.852150] [] ? sys_init_module+0x9b/0x1e0 [ 5.852229] [] ? sys_write+0x42/0x70 [ 5.852306] [] ? sysenter_do_call+0x12/0x28 [ 5.852381] Code: d5 83 c7 90 ba f5 6d 8f f8 b8 8c 42 85 c0 e8 56 ea a6 c7 bb 80 74 8f f8 85 c0 74 35 b8 ac 01 00 00 89 f2 e8 21 d5 83 c7 90 89 c1 <8b> 53 08 c1 e1 12 c1 e9 15 69 c1 e8 03 00 00 39 c2 75 75 89 d8 [ 5.854476] EIP: [] ips_detect_cpu+0x62/0x180 [intel_ips] SS:ESP 0068:f5965de4 [ 5.854650] CR2: 0000000000000008 [ 5.854729] ---[ end trace b5ba95051b73c5bf ]--- [ 6.031948] Linux agpgart interface v0.103 [ 6.217868] Linux video capture interface: v2.00 [ 6.218547] acer-wmi: Acer Laptop ACPI-WMI Extras [ 6.223562] cfg80211: Calling CRDA to update world regulatory domain [ 6.224807] uvcvideo: Found UVC 1.00 device (05ca:18b7) [ 6.229748] Bluetooth: Core ver 2.15 [ 6.229892] NET: Registered protocol family 31 [ 6.229965] Bluetooth: HCI device and connection manager initialized [ 6.230124] Bluetooth: HCI socket layer initialized [ 6.235044] Bluetooth: Generic Bluetooth USB driver ver 0.6 [ 6.254865] input: UVC Camera (05ca:18b7) as /devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.2/1-1.2:1.0/input/input5 [ 6.255689] usbcore: registered new interface driver uvcvideo [ 6.255766] USB Video Class driver (v0.1.0) [ 6.258458] usbcore: registered new interface driver btusb [ 6.329880] cfg80211: World regulatory domain updated: [ 6.329961] (start_freq - end_freq @ bandwidth), (max_antenna_gain, max_eirp) [ 6.330069] (2402000 KHz - 2472000 KHz @ 40000 KHz), (300 mBi, 2000 mBm) [ 6.330151] (2457000 KHz - 2482000 KHz @ 20000 KHz), (300 mBi, 2000 mBm) [ 6.330233] (2474000 KHz - 2494000 KHz @ 20000 KHz), (300 mBi, 2000 mBm) [ 6.330314] (5170000 KHz - 5250000 KHz @ 40000 KHz), (300 mBi, 2000 mBm) [ 6.330395] (5735000 KHz - 5835000 KHz @ 40000 KHz), (300 mBi, 2000 mBm) [ 6.337007] input: Sony Vaio Keys as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:0b/SNY5001:00/input/input6 [ 6.337248] input: Sony Vaio Jogdial as /devices/virtual/input/input7 [ 6.337396] sony-laptop: brightness ignored, must be controlled by ACPI video driver [ 6.407318] type=1400 audit(1288289569.086:2): apparmor="STATUS" operation="profile_load" name="/sbin/dhclient3" pid=775 comm="apparmor_parser" [ 6.408391] type=1400 audit(1288289569.086:3): apparmor="STATUS" operation="profile_load" name="/usr/lib/NetworkManager/nm-dhcp-client.action" pid=775 comm="apparmor_parser" [ 6.409078] type=1400 audit(1288289569.090:4): apparmor="STATUS" operation="profile_load" name="/usr/lib/connman/scripts/dhclient-script" pid=775 comm="apparmor_parser" [ 6.614691] ath9k 0000:02:00.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16 [ 6.614791] ath9k 0000:02:00.0: setting latency timer to 64 [ 6.666258] ath: EEPROM regdomain: 0x65 [ 6.666331] ath: EEPROM indicates we should expect a direct regpair map [ 6.666412] ath: Country alpha2 being used: 00 [ 6.666483] ath: Regpair used: 0x65 [ 6.713960] phy0: Selected rate control algorithm 'ath9k_rate_control' [ 6.714931] Registered led device: ath9k-phy0::radio [ 6.715034] Registered led device: ath9k-phy0::assoc [ 6.715135] Registered led device: ath9k-phy0::tx [ 6.715232] Registered led device: ath9k-phy0::rx [ 6.715311] phy0: Atheros AR9285 Rev:2 mem=0xf8b40000, irq=16 [ 7.044433] Synaptics Touchpad, model: 1, fw: 7.4, id: 0x1e0b1, caps: 0xd04771/0xa40000/0xa0400 [ 7.104079] input: SynPS/2 Synaptics TouchPad as /devices/platform/i8042/serio1/input/input8 [ 7.488115] EXT4-fs (sda1): re-mounted. Opts: errors=remount-ro [ 8.996259] type=1400 audit(1288289571.678:5): apparmor="STATUS" operation="profile_replace" name="/sbin/dhclient3" pid=997 comm="apparmor_parser" [ 8.997339] type=1400 audit(1288289571.678:6): apparmor="STATUS" operation="profile_replace" name="/usr/lib/NetworkManager/nm-dhcp-client.action" pid=997 comm="apparmor_parser" [ 8.998021] type=1400 audit(1288289571.678:7): apparmor="STATUS" operation="profile_replace" name="/usr/lib/connman/scripts/dhclient-script" pid=997 comm="apparmor_parser" [ 9.144884] type=1400 audit(1288289571.826:8): apparmor="STATUS" operation="profile_load" name="/usr/share/gdm/guest-session/Xsession" pid=996 comm="apparmor_parser" [ 9.168353] type=1400 audit(1288289571.850:9): apparmor="STATUS" operation="profile_load" name="/usr/bin/evince" pid=998 comm="apparmor_parser" [ 9.180532] type=1400 audit(1288289571.862:10): apparmor="STATUS" operation="profile_load" name="/usr/bin/evince-previewer" pid=998 comm="apparmor_parser" [ 9.188413] type=1400 audit(1288289571.870:11): apparmor="STATUS" operation="profile_load" name="/usr/bin/evince-thumbnailer" pid=998 comm="apparmor_parser" [ 10.636280] alloc irq_desc for 45 on node -1 [ 10.636359] alloc kstat_irqs on node -1 [ 10.636451] atl1c 0000:04:00.0: irq 45 for MSI/MSI-X [ 10.637126] ADDRCONF(NETDEV_UP): eth0: link is not ready Bug: 674479 [ 0.000000] Initializing cgroup subsys cpuset [ 0.000000] Initializing cgroup subsys cpu [ 0.000000] Linux version 2.6.35-22-generic (buildd@yellow) (gcc version 4.4.5 (Ubuntu/Linaro 4.4.4-14ubuntu5) ) #35-Ubuntu SMP Sat Oct 16 20:45:36 UTC 2010 (Ubuntu 2.6.35-22.35-generic 2.6.35.4) [ 0.000000] Command line: root=UUID=bde6a039-9ce1-455c-87fc-488db22ddd78 ro quiet splash [ 0.000000] BIOS-provided physical RAM map: [ 0.000000] BIOS-e820: 0000000000000000 - 000000000009f000 (usable) [ 0.000000] BIOS-e820: 000000000009f000 - 00000000000a0000 (reserved) [ 0.000000] BIOS-e820: 00000000000f0000 - 0000000000100000 (reserved) [ 0.000000] BIOS-e820: 0000000000100000 - 0000000077ef0000 (usable) [ 0.000000] BIOS-e820: 0000000077ef0000 - 0000000077ef3000 (ACPI NVS) [ 0.000000] BIOS-e820: 0000000077ef3000 - 0000000077f00000 (ACPI data) [ 0.000000] BIOS-e820: 00000000e0000000 - 00000000f0000000 (reserved) [ 0.000000] BIOS-e820: 00000000fec00000 - 0000000100000000 (reserved) [ 0.000000] NX (Execute Disable) protection: active [ 0.000000] DMI 2.4 present. [ 0.000000] Phoenix BIOS detected: BIOS may corrupt low RAM, working around it. [ 0.000000] e820 update range: 0000000000000000 - 0000000000010000 (usable) ==> (reserved) [ 0.000000] e820 update range: 0000000000000000 - 0000000000001000 (usable) ==> (reserved) [ 0.000000] e820 remove range: 00000000000a0000 - 0000000000100000 (usable) [ 0.000000] AGP bridge at 00:00:00 [ 0.000000] Aperture from AGP @ d0000000 old size 32 MB [ 0.000000] Aperture from AGP @ d0000000 size 128 MB (APSIZE f20) [ 0.000000] last_pfn = 0x77ef0 max_arch_pfn = 0x400000000 [ 0.000000] MTRR default type: uncachable [ 0.000000] MTRR fixed ranges enabled: [ 0.000000] 00000-9FFFF write-back [ 0.000000] A0000-BFFFF uncachable [ 0.000000] C0000-C7FFF write-protect [ 0.000000] C8000-CBFFF uncachable [ 0.000000] CC000-D3FFF write-back [ 0.000000] D4000-FFFFF uncachable [ 0.000000] MTRR variable ranges enabled: [ 0.000000] 0 base 0000000000 mask FFC0000000 write-back [ 0.000000] 1 base 0040000000 mask FFE0000000 write-back [ 0.000000] 2 base 0060000000 mask FFF0000000 write-back [ 0.000000] 3 base 0070000000 mask FFF8000000 write-back [ 0.000000] 4 base 0077F00000 mask FFFFF00000 uncachable [ 0.000000] 5 base 00D0000000 mask FFF8000000 write-combining [ 0.000000] 6 disabled [ 0.000000] 7 disabled [ 0.000000] x86 PAT enabled: cpu 0, old 0x7040600070406, new 0x7010600070106 [ 0.000000] Scanning 0 areas for low memory corruption [ 0.000000] modified physical RAM map: [ 0.000000] modified: 0000000000000000 - 0000000000010000 (reserved) [ 0.000000] modified: 0000000000010000 - 000000000009f000 (usable) [ 0.000000] modified: 000000000009f000 - 00000000000a0000 (reserved) [ 0.000000] modified: 00000000000f0000 - 0000000000100000 (reserved) [ 0.000000] modified: 0000000000100000 - 0000000077ef0000 (usable) [ 0.000000] modified: 0000000077ef0000 - 0000000077ef3000 (ACPI NVS) [ 0.000000] modified: 0000000077ef3000 - 0000000077f00000 (ACPI data) [ 0.000000] modified: 00000000e0000000 - 00000000f0000000 (reserved) [ 0.000000] modified: 00000000fec00000 - 0000000100000000 (reserved) [ 0.000000] initial memory mapped : 0 - 20000000 [ 0.000000] found SMP MP-table at [ffff8800000f3e90] f3e90 [ 0.000000] init_memory_mapping: 0000000000000000-0000000077ef0000 [ 0.000000] 0000000000 - 0077e00000 page 2M [ 0.000000] 0077e00000 - 0077ef0000 page 4k [ 0.000000] kernel direct mapping tables up to 77ef0000 @ 16000-1a000 [ 0.000000] RAMDISK: 3756f000 - 37ff0000 [ 0.000000] ACPI: RSDP 00000000000f7cb0 00014 (v00 K8M890) [ 0.000000] ACPI: RSDT 0000000077ef3040 00030 (v01 K8M890 AWRDACPI 42302E31 AWRD 00000000) [ 0.000000] ACPI: FACP 0000000077ef30c0 00074 (v01 K8M890 AWRDACPI 42302E31 AWRD 00000000) [ 0.000000] ACPI: DSDT 0000000077ef3180 06CD7 (v01 K8M890 AWRDACPI 00001000 MSFT 0100000E) [ 0.000000] ACPI: FACS 0000000077ef0000 00040 [ 0.000000] ACPI: MCFG 0000000077ef9f80 0003C (v01 K8M890 AWRDACPI 42302E31 AWRD 00000000) [ 0.000000] ACPI: APIC 0000000077ef9ec0 00074 (v01 K8M890 AWRDACPI 42302E31 AWRD 00000000) [ 0.000000] ACPI: Local APIC address 0xfee00000 [ 0.000000] Scanning NUMA topology in Northbridge 24 [ 0.000000] No NUMA configuration found [ 0.000000] Faking a node at 0000000000000000-0000000077ef0000 [ 0.000000] Initmem setup node 0 0000000000000000-0000000077ef0000 [ 0.000000] NODE_DATA [0000000001d18100 - 0000000001d1d0ff] [ 0.000000] [ffffea0000000000-ffffea0001bfffff] PMD -> [ffff880002600000-ffff8800041fffff] on node 0 [ 0.000000] Zone PFN ranges: [ 0.000000] DMA 0x00000010 -> 0x00001000 [ 0.000000] DMA32 0x00001000 -> 0x00100000 [ 0.000000] Normal empty [ 0.000000] Movable zone start PFN for each node [ 0.000000] early_node_map[2] active PFN ranges [ 0.000000] 0: 0x00000010 -> 0x0000009f [ 0.000000] 0: 0x00000100 -> 0x00077ef0 [ 0.000000] On node 0 totalpages: 491135 [ 0.000000] DMA zone: 56 pages used for memmap [ 0.000000] DMA zone: 0 pages reserved [ 0.000000] DMA zone: 3927 pages, LIFO batch:0 [ 0.000000] DMA32 zone: 6661 pages used for memmap [ 0.000000] DMA32 zone: 480491 pages, LIFO batch:31 [ 0.000000] Detected use of extended apic ids on hypertransport bus [ 0.000000] ACPI: PM-Timer IO Port: 0x408 [ 0.000000] ACPI: Local APIC address 0xfee00000 [ 0.000000] ACPI: LAPIC (acpi_id[0x00] lapic_id[0x00] enabled) [ 0.000000] ACPI: LAPIC (acpi_id[0x01] lapic_id[0x01] enabled) [ 0.000000] ACPI: LAPIC_NMI (acpi_id[0x00] high edge lint[0x1]) [ 0.000000] ACPI: LAPIC_NMI (acpi_id[0x01] high edge lint[0x1]) [ 0.000000] ACPI: IOAPIC (id[0x02] address[0xfec00000] gsi_base[0]) [ 0.000000] IOAPIC[0]: apic_id 2, version 3, address 0xfec00000, GSI 0-23 [ 0.000000] ACPI: IOAPIC (id[0x03] address[0xfecc0000] gsi_base[24]) [ 0.000000] IOAPIC[1]: apic_id 3, version 3, address 0xfecc0000, GSI 24-47 [ 0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 0 global_irq 2 dfl dfl) [ 0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 9 global_irq 9 low level) [ 0.000000] ACPI: IRQ0 used by override. [ 0.000000] ACPI: IRQ2 used by override. [ 0.000000] ACPI: IRQ9 used by override. [ 0.000000] Using ACPI (MADT) for SMP configuration information [ 0.000000] SMP: Allowing 2 CPUs, 0 hotplug CPUs [ 0.000000] nr_irqs_gsi: 64 [ 0.000000] early_res array is doubled to 64 at [18000 - 187ff] [ 0.000000] PM: Registered nosave memory: 000000000009f000 - 00000000000a0000 [ 0.000000] PM: Registered nosave memory: 00000000000a0000 - 00000000000f0000 [ 0.000000] PM: Registered nosave memory: 00000000000f0000 - 0000000000100000 [ 0.000000] Allocating PCI resources starting at 77f00000 (gap: 77f00000:68100000) [ 0.000000] Booting paravirtualized kernel on bare hardware [ 0.000000] setup_percpu: NR_CPUS:64 nr_cpumask_bits:64 nr_cpu_ids:2 nr_node_ids:1 [ 0.000000] PERCPU: Embedded 30 pages/cpu @ffff880001e00000 s91520 r8192 d23168 u1048576 [ 0.000000] pcpu-alloc: s91520 r8192 d23168 u1048576 alloc=1*2097152 [ 0.000000] pcpu-alloc: [0] 0 1 [ 0.000000] Built 1 zonelists in Node order, mobility grouping on. Total pages: 484418 [ 0.000000] Policy zone: DMA32 [ 0.000000] Kernel command line: root=UUID=bde6a039-9ce1-455c-87fc-488db22ddd78 ro quiet splash [ 0.000000] PID hash table entries: 4096 (order: 3, 32768 bytes) [ 0.000000] Checking aperture... [ 0.000000] AGP bridge at 00:00:00 [ 0.000000] Aperture from AGP @ d0000000 old size 32 MB [ 0.000000] Aperture from AGP @ d0000000 size 128 MB (APSIZE f20) [ 0.000000] Node 0: aperture @ d0000000 size 128 MB [ 0.000000] Subtract (44 early reservations) [ 0.000000] #1 [0001000000 - 0001d17114] TEXT DATA BSS [ 0.000000] #2 [003756f000 - 0037ff0000] RAMDISK [ 0.000000] #3 [0001d18000 - 0001d180fe] BRK [ 0.000000] #4 [00000f3ea0 - 0000100000] BIOS reserved [ 0.000000] #5 [00000f3e90 - 00000f3ea0] MP-table mpf [ 0.000000] #6 [000009f000 - 00000f2114] BIOS reserved [ 0.000000] #7 [00000f2278 - 00000f3e90] BIOS reserved [ 0.000000] #8 [00000f2114 - 00000f2278] MP-table mpc [ 0.000000] #9 [0000010000 - 0000012000] TRAMPOLINE [ 0.000000] #10 [0000012000 - 0000016000] ACPI WAKEUP [ 0.000000] #11 [0000016000 - 0000018000] PGTABLE [ 0.000000] #12 [0001d18100 - 0001d1d100] NODE_DATA [ 0.000000] #13 [0001d1d100 - 0001d1e100] BOOTMEM [ 0.000000] #14 [0001d17140 - 0001d172a8] BOOTMEM [ 0.000000] #15 [000251f000 - 0002520000] BOOTMEM [ 0.000000] #16 [0002520000 - 0002521000] BOOTMEM [ 0.000000] #17 [0002600000 - 0004200000] MEMMAP 0 [ 0.000000] #18 [0001d172c0 - 0001d17440] BOOTMEM [ 0.000000] #19 [0001d1e100 - 0001d2a100] BOOTMEM [ 0.000000] #20 [0001d2b000 - 0001d2c000] BOOTMEM [ 0.000000] #21 [0001d17440 - 0001d174c6] BOOTMEM [ 0.000000] #22 [0001d17500 - 0001d176f8] BOOTMEM [ 0.000000] #23 [0001d17700 - 0001d17768] BOOTMEM [ 0.000000] #24 [0001d17780 - 0001d177e8] BOOTMEM [ 0.000000] #25 [0001d17800 - 0001d17868] BOOTMEM [ 0.000000] #26 [0001d17880 - 0001d178e8] BOOTMEM [ 0.000000] #27 [0001d17900 - 0001d17968] BOOTMEM [ 0.000000] #28 [0001d17980 - 0001d179e8] BOOTMEM [ 0.000000] #29 [0001d17a00 - 0001d17a68] BOOTMEM [ 0.000000] #30 [0001d17a80 - 0001d17ae8] BOOTMEM [ 0.000000] #31 [0001d17b00 - 0001d17b20] BOOTMEM [ 0.000000] #32 [0001d17b40 - 0001d17b80] BOOTMEM [ 0.000000] #33 [0001d17b80 - 0001d17bc0] BOOTMEM [ 0.000000] #34 [0001e00000 - 0001e1e000] BOOTMEM [ 0.000000] #35 [0001f00000 - 0001f1e000] BOOTMEM [ 0.000000] #36 [0001d17bc0 - 0001d17bc8] BOOTMEM [ 0.000000] #37 [0001d17c00 - 0001d17c08] BOOTMEM [ 0.000000] #38 [0001d17c40 - 0001d17c48] BOOTMEM [ 0.000000] #39 [0001d17c80 - 0001d17c90] BOOTMEM [ 0.000000] #40 [0001d17cc0 - 0001d17e00] BOOTMEM [ 0.000000] #41 [0001d17e00 - 0001d17e60] BOOTMEM [ 0.000000] #42 [0001d17e80 - 0001d17ee0] BOOTMEM [ 0.000000] #43 [0001d2c000 - 0001d34000] BOOTMEM [ 0.000000] Memory: 1911312k/1964992k available (5708k kernel code, 452k absent, 53228k reserved, 5382k data, 908k init) [ 0.000000] SLUB: Genslabs=14, HWalign=64, Order=0-3, MinObjects=0, CPUs=2, Nodes=1 [ 0.000000] Hierarchical RCU implementation. [ 0.000000] RCU dyntick-idle grace-period acceleration is enabled. [ 0.000000] RCU-based detection of stalled CPUs is disabled. [ 0.000000] Verbose stalled-CPUs detection is disabled. [ 0.000000] NR_IRQS:4352 nr_irqs:512 [ 0.000000] Console: colour VGA+ 80x25 [ 0.000000] console [tty0] enabled [ 0.000000] allocated 19660800 bytes of page_cgroup [ 0.000000] please try 'cgroup_disable=memory' option if you don't want memory cgroups [ 0.000000] Fast TSC calibration using PIT [ 0.000000] Detected 2199.612 MHz processor. [ 0.010008] Calibrating delay loop (skipped), value calculated using timer frequency.. 4399.22 BogoMIPS (lpj=21996120) [ 0.010013] pid_max: default: 32768 minimum: 301 [ 0.010039] Security Framework initialized [ 0.010058] AppArmor: AppArmor initialized [ 0.010060] Yama: becoming mindful. [ 0.010342] Dentry cache hash table entries: 262144 (order: 9, 2097152 bytes) [ 0.011491] Inode-cache hash table entries: 131072 (order: 8, 1048576 bytes) [ 0.012010] Mount-cache hash table entries: 256 [ 0.012153] Initializing cgroup subsys ns [ 0.012158] Initializing cgroup subsys cpuacct [ 0.012162] Initializing cgroup subsys memory [ 0.012173] Initializing cgroup subsys devices [ 0.012175] Initializing cgroup subsys freezer [ 0.012177] Initializing cgroup subsys net_cls [ 0.012204] tseg: 0077f00000 [ 0.012206] CPU: Physical Processor ID: 0 [ 0.012208] CPU: Processor Core ID: 0 [ 0.012210] mce: CPU supports 5 MCE banks [ 0.012222] using C1E aware idle routine [ 0.012224] Performance Events: AMD PMU driver. [ 0.012229] ... version: 0 [ 0.012231] ... bit width: 48 [ 0.012233] ... generic registers: 4 [ 0.012234] ... value mask: 0000ffffffffffff [ 0.012236] ... max period: 00007fffffffffff [ 0.012238] ... fixed-purpose events: 0 [ 0.012240] ... event mask: 000000000000000f [ 0.020426] ACPI: Core revision 20100428 [ 0.028042] ftrace: converting mcount calls to 0f 1f 44 00 00 [ 0.028053] ftrace: allocating 22680 entries in 89 pages [ 0.030087] Setting APIC routing to flat [ 0.030485] ..TIMER: vector=0x30 apic1=0 pin1=2 apic2=0 pin2=0 [ 0.135385] CPU0: AMD Athlon(tm) 64 X2 Dual Core Processor 4200+ stepping 02 [ 0.140000] Booting Node 0, Processors #1 Ok. [ 0.290054] Brought up 2 CPUs [ 0.290057] Total of 2 processors activated (8799.29 BogoMIPS). [ 0.290272] devtmpfs: initialized [ 0.290859] regulator: core version 0.5 [ 0.290903] Time: 11:28:50 Date: 11/12/10 [ 0.290948] NET: Registered protocol family 16 [ 0.291075] TOM: 0000000080000000 aka 2048M [ 0.291078] node 0 link 0: mmio [a0000, bffff] [ 0.291082] node 0 link 0: mmio [80000000, bfffffff] [ 0.291084] node 0 link 0: mmio [c0000000, cfffffff] [ 0.291087] node 0 link 0: mmio [d0000000, dcffffff] [ 0.291090] node 0 link 0: mmio [dd000000, ddffffff] [ 0.291092] node 0 link 0: mmio [de000000, ffff] [ 0.291095] bus: [00, ff] on node 0 link 0 [ 0.291098] bus: 00 index 0 [io 0x0000-0xffff] [ 0.291100] bus: 00 index 1 [mem 0x000a0000-0x000bffff] [ 0.291103] bus: 00 index 2 [mem 0x80000000-0xfcffffffff] [ 0.291110] ACPI: bus type pci registered [ 0.291180] PCI: MMCONFIG for domain 0000 [bus 00-ff] at [mem 0xe0000000-0xefffffff] (base 0xe0000000) [ 0.291183] PCI: MMCONFIG at [mem 0xe0000000-0xefffffff] reserved in E820 [ 0.311086] Trying to unpack rootfs image as initramfs... [ 0.311815] PCI: Using configuration type 1 for base access [ 0.320134] bio: create slab at 0 [ 0.321990] ACPI: EC: Look up EC in DSDT [ 0.330441] ACPI: Interpreter enabled [ 0.330445] ACPI: (supports S0 S1 S4 S5) [ 0.330467] ACPI: Using IOAPIC for interrupt routing [ 0.339296] ACPI: No dock devices found. [ 0.339301] PCI: Ignoring host bridge windows from ACPI; if necessary, use "pci=use_crs" and report a bug [ 0.339787] ACPI: PCI Root Bridge [PCI0] (domain 0000 [bus 00-7f]) [ 0.340316] pci_root PNP0A08:00: host bridge window [io 0x0000-0x0cf7] (ignored) [ 0.340319] pci_root PNP0A08:00: host bridge window [io 0x0d00-0xffff] (ignored) [ 0.340322] pci_root PNP0A08:00: host bridge window [mem 0x000a0000-0x000bffff] (ignored) [ 0.340325] pci_root PNP0A08:00: host bridge window [mem 0x000c0000-0x000dffff] (ignored) [ 0.340327] pci_root PNP0A08:00: host bridge window [mem 0x80000000-0xbfefffff] (ignored) [ 0.340330] pci_root PNP0A08:00: host bridge window [mem 0xc0000000-0xfebfffff] (ignored) [ 0.340360] pci 0000:00:00.0: reg 10: [mem 0xd0000000-0xd7ffffff pref] [ 0.340803] pci 0000:00:02.0: PME# supported from D0 D3hot D3cold [ 0.340807] pci 0000:00:02.0: PME# disabled [ 0.340880] pci 0000:00:03.0: PME# supported from D0 D3hot D3cold [ 0.340884] pci 0000:00:03.0: PME# disabled [ 0.340934] pci 0000:00:0f.0: reg 10: [io 0xff00-0xff07] [ 0.340941] pci 0000:00:0f.0: reg 14: [io 0xfe00-0xfe03] [ 0.340947] pci 0000:00:0f.0: reg 18: [io 0xfd00-0xfd07] [ 0.340954] pci 0000:00:0f.0: reg 1c: [io 0xfc00-0xfc03] [ 0.340960] pci 0000:00:0f.0: reg 20: [io 0xfb00-0xfb0f] [ 0.340967] pci 0000:00:0f.0: reg 24: [io 0xf400-0xf4ff] [ 0.341031] pci 0000:00:0f.1: reg 20: [io 0xfa00-0xfa0f] [ 0.341107] pci 0000:00:10.0: reg 20: [io 0xf900-0xf91f] [ 0.341132] pci 0000:00:10.0: supports D1 D2 [ 0.341134] pci 0000:00:10.0: PME# supported from D0 D1 D2 D3hot D3cold [ 0.341138] pci 0000:00:10.0: PME# disabled [ 0.341181] pci 0000:00:10.1: reg 20: [io 0xf800-0xf81f] [ 0.341206] pci 0000:00:10.1: supports D1 D2 [ 0.341208] pci 0000:00:10.1: PME# supported from D0 D1 D2 D3hot D3cold [ 0.341212] pci 0000:00:10.1: PME# disabled [ 0.341254] pci 0000:00:10.2: reg 20: [io 0xf700-0xf71f] [ 0.341279] pci 0000:00:10.2: supports D1 D2 [ 0.341281] pci 0000:00:10.2: PME# supported from D0 D1 D2 D3hot D3cold [ 0.341285] pci 0000:00:10.2: PME# disabled [ 0.341326] pci 0000:00:10.3: reg 20: [io 0xf600-0xf61f] [ 0.341351] pci 0000:00:10.3: supports D1 D2 [ 0.341353] pci 0000:00:10.3: PME# supported from D0 D1 D2 D3hot D3cold [ 0.341357] pci 0000:00:10.3: PME# disabled [ 0.341384] pci 0000:00:10.4: reg 10: [mem 0xdffff000-0xdffff0ff] [ 0.341424] pci 0000:00:10.4: supports D1 D2 [ 0.341426] pci 0000:00:10.4: PME# supported from D0 D1 D2 D3hot D3cold [ 0.341430] pci 0000:00:10.4: PME# disabled [ 0.341583] pci 0000:00:12.0: reg 10: [io 0xf200-0xf2ff] [ 0.341589] pci 0000:00:12.0: reg 14: [mem 0xdfffe000-0xdfffe0ff] [ 0.341627] pci 0000:00:12.0: supports D1 D2 [ 0.341629] pci 0000:00:12.0: PME# supported from D0 D1 D2 D3hot D3cold [ 0.341633] pci 0000:00:12.0: PME# disabled [ 0.341832] PCI: peer root bus 00 res updated from pci conf [ 0.341876] pci 0000:01:00.0: reg 10: [mem 0xc0000000-0xcfffffff pref] [ 0.341882] pci 0000:01:00.0: reg 14: [mem 0xdd000000-0xddffffff] [ 0.341900] pci 0000:01:00.0: reg 30: [mem 0x00000000-0x0000ffff pref] [ 0.341918] pci 0000:01:00.0: supports D1 D2 [ 0.341954] pci 0000:00:01.0: PCI bridge to [bus 01-01] [ 0.341958] pci 0000:00:01.0: bridge window [io 0xe000-0xefff] [ 0.341962] pci 0000:00:01.0: bridge window [mem 0xdd000000-0xdeffffff] [ 0.341966] pci 0000:00:01.0: bridge window [mem 0xc0000000-0xcfffffff pref] [ 0.342005] pci 0000:00:02.0: PCI bridge to [bus 02-02] [ 0.342009] pci 0000:00:02.0: bridge window [io 0xd000-0xdfff] [ 0.342013] pci 0000:00:02.0: bridge window [mem 0xdfc00000-0xdfcfffff] [ 0.342019] pci 0000:00:02.0: bridge window [mem 0xdfb00000-0xdfbfffff 64bit pref] [ 0.342064] pci 0000:00:03.0: PCI bridge to [bus 03-03] [ 0.342068] pci 0000:00:03.0: bridge window [io 0xc000-0xcfff] [ 0.342073] pci 0000:00:03.0: bridge window [mem 0xdfe00000-0xdfefffff] [ 0.342080] pci 0000:00:03.0: bridge window [mem 0xdfd00000-0xdfdfffff 64bit pref] [ 0.342143] pci 0000:00:13.1: PCI bridge to [bus 04-04] (subtractive decode) [ 0.342147] pci 0000:00:13.1: bridge window [io 0xb000-0xbfff] [ 0.342152] pci 0000:00:13.1: bridge window [mem 0xdfa00000-0xdfafffff] [ 0.342157] pci 0000:00:13.1: bridge window [mem 0xdf900000-0xdf9fffff 64bit pref] [ 0.342160] pci 0000:00:13.1: bridge window [io 0x0000-0xffff] (subtractive decode) [ 0.342163] pci 0000:00:13.1: bridge window [mem 0x000a0000-0x000bffff] (subtractive decode) [ 0.342166] pci 0000:00:13.1: bridge window [mem 0x80000000-0xfcffffffff] (subtractive decode) [ 0.342188] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0._PRT] [ 0.342540] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PEXG._PRT] [ 0.342662] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PEX0._PRT] [ 0.342783] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.P2PB._PRT] [ 0.416558] ACPI: PCI Root Bridge [PCI1] (domain 0000 [bus 80-ff]) [ 0.416808] pci_root PNP0A08:01: host bridge window [io 0x0000-0x0cf7] (ignored) [ 0.416811] pci_root PNP0A08:01: host bridge window [io 0x0d00-0xffff] (ignored) [ 0.416814] pci_root PNP0A08:01: host bridge window [mem 0x000a0000-0x000bffff] (ignored) [ 0.416816] pci_root PNP0A08:01: host bridge window [mem 0xbff00000-0xbfffffff] (ignored) [ 0.416842] pci 0000:80:01.0: reg 10: [mem 0xbfffc000-0xbfffffff 64bit] [ 0.416880] pci 0000:80:01.0: PME# supported from D0 D3hot D3cold [ 0.416884] pci 0000:80:01.0: PME# disabled [ 0.416930] ACPI: PCI Interrupt Routing Table [\_SB_.PCI1._PRT] [ 0.417613] ACPI: PCI Interrupt Link [LNKA] (IRQs 3 4 6 7 *10 11 12) [ 0.417808] ACPI: PCI Interrupt Link [LNKB] (IRQs 3 4 6 7 10 *11 12) [ 0.418004] ACPI: PCI Interrupt Link [LNKC] (IRQs 3 4 6 7 10 *11 12) [ 0.418198] ACPI: PCI Interrupt Link [LNKD] (IRQs 3 4 6 7 *10 11 12) [ 0.418364] ACPI: PCI Interrupt Link [LNKE] (IRQs 3 4 6 7 10 11 12) *0, disabled. [ 0.418528] ACPI: PCI Interrupt Link [LNKF] (IRQs 3 4 6 7 10 11 12) *0, disabled. [ 0.418687] ACPI: PCI Interrupt Link [LNK0] (IRQs 3 4 6 7 10 11 12) *0, disabled. [ 0.418860] ACPI: PCI Interrupt Link [LNK1] (IRQs 3 4 6 7 10 11 12) *5 [ 0.418913] HEST: Table is not found! [ 0.419036] vgaarb: device added: PCI:0000:01:00.0,decodes=io+mem,owns=io+mem,locks=none [ 0.419039] vgaarb: loaded [ 0.419195] SCSI subsystem initialized [ 0.419309] libata version 3.00 loaded. [ 0.419365] usbcore: registered new interface driver usbfs [ 0.419377] usbcore: registered new interface driver hub [ 0.419402] usbcore: registered new device driver usb [ 0.419552] ACPI: WMI: Mapper loaded [ 0.419555] PCI: Using ACPI for IRQ routing [ 0.419557] PCI: pci_cache_line_size set to 64 bytes [ 0.419569] pci 0000:00:00.0: address space collision: [mem 0xd0000000-0xd7ffffff pref] conflicts with GART [mem 0xd0000000-0xd7ffffff] [ 0.419626] pci 0000:80:01.0: address space collision: [mem 0xbfffc000-0xbfffffff 64bit] conflicts with PCI Bus #00 [mem 0x80000000-0xfcffffffff] [ 0.419672] reserve RAM buffer: 000000000009f000 - 000000000009ffff [ 0.419675] reserve RAM buffer: 0000000077ef0000 - 0000000077ffffff [ 0.419779] NetLabel: Initializing [ 0.419781] NetLabel: domain hash size = 128 [ 0.419782] NetLabel: protocols = UNLABELED CIPSOv4 [ 0.419795] NetLabel: unlabeled traffic allowed by default [ 0.429944] AppArmor: AppArmor Filesystem Enabled [ 0.429970] pnp: PnP ACPI init [ 0.430036] ACPI: bus type pnp registered [ 0.435225] pnp 00:0e: disabling [mem 0x000cc000-0x000cffff] because it overlaps 0000:00:00.0 BAR 0 [mem 0x00000000-0x07ffffff pref] [ 0.435230] pnp 00:0e: disabling [mem 0x000f0000-0x000f7fff] because it overlaps 0000:00:00.0 BAR 0 [mem 0x00000000-0x07ffffff pref] [ 0.435234] pnp 00:0e: disabling [mem 0x000f8000-0x000fbfff] because it overlaps 0000:00:00.0 BAR 0 [mem 0x00000000-0x07ffffff pref] [ 0.435238] pnp 00:0e: disabling [mem 0x000fc000-0x000fffff] because it overlaps 0000:00:00.0 BAR 0 [mem 0x00000000-0x07ffffff pref] [ 0.435242] pnp 00:0e: disabling [mem 0x00000000-0x0009ffff] because it overlaps 0000:00:00.0 BAR 0 [mem 0x00000000-0x07ffffff pref] [ 0.435246] pnp 00:0e: disabling [mem 0x00100000-0x77eeffff] because it overlaps 0000:00:00.0 BAR 0 [mem 0x00000000-0x07ffffff pref] [ 0.435360] pnp: PnP ACPI: found 15 devices [ 0.435362] ACPI: ACPI bus type pnp unregistered [ 0.435378] system 00:01: [io 0x0400-0x047f] has been reserved [ 0.435381] system 00:01: [io 0x0500-0x050f] has been reserved [ 0.435386] system 00:02: [io 0x04d0-0x04d1] has been reserved [ 0.435389] system 00:02: [io 0x0290-0x0297] has been reserved [ 0.435397] system 00:0b: [mem 0xf0000000-0xf0000fff] has been reserved [ 0.435402] system 00:0c: [mem 0xe0000000-0xefffffff] has been reserved [ 0.435408] system 00:0e: [mem 0x77f00000-0x77ffffff] could not be reserved [ 0.435412] system 00:0e: [mem 0x77ef0000-0x77efffff] could not be reserved [ 0.435415] system 00:0e: [mem 0xffff0000-0xffffffff] has been reserved [ 0.435418] system 00:0e: [mem 0x78000000-0x7fffffff] has been reserved [ 0.435421] system 00:0e: [mem 0xfec00000-0xfec00fff] could not be reserved [ 0.435424] system 00:0e: [mem 0xfee00000-0xfee00fff] has been reserved [ 0.435427] system 00:0e: [mem 0xfff80000-0xfffeffff] has been reserved [ 0.441436] Switching to clocksource acpi_pm [ 0.441665] pci 0000:01:00.0: BAR 6: assigned [mem 0xde000000-0xde00ffff pref] [ 0.441669] pci 0000:00:01.0: PCI bridge to [bus 01-01] [ 0.441673] pci 0000:00:01.0: bridge window [io 0xe000-0xefff] [ 0.441678] pci 0000:00:01.0: bridge window [mem 0xdd000000-0xdeffffff] [ 0.441682] pci 0000:00:01.0: bridge window [mem 0xc0000000-0xcfffffff pref] [ 0.441688] pci 0000:00:02.0: PCI bridge to [bus 02-02] [ 0.441691] pci 0000:00:02.0: bridge window [io 0xd000-0xdfff] [ 0.441696] pci 0000:00:02.0: bridge window [mem 0xdfc00000-0xdfcfffff] [ 0.441700] pci 0000:00:02.0: bridge window [mem 0xdfb00000-0xdfbfffff 64bit pref] [ 0.441706] pci 0000:00:03.0: PCI bridge to [bus 03-03] [ 0.441709] pci 0000:00:03.0: bridge window [io 0xc000-0xcfff] [ 0.441715] pci 0000:00:03.0: bridge window [mem 0xdfe00000-0xdfefffff] [ 0.441720] pci 0000:00:03.0: bridge window [mem 0xdfd00000-0xdfdfffff 64bit pref] [ 0.441726] pci 0000:00:13.1: PCI bridge to [bus 04-04] [ 0.441729] pci 0000:00:13.1: bridge window [io 0xb000-0xbfff] [ 0.441734] pci 0000:00:13.1: bridge window [mem 0xdfa00000-0xdfafffff] [ 0.441738] pci 0000:00:13.1: bridge window [mem 0xdf900000-0xdf9fffff 64bit pref] [ 0.441753] pci 0000:00:01.0: setting latency timer to 64 [ 0.441764] alloc irq_desc for 27 on node 0 [ 0.441766] alloc kstat_irqs on node 0 [ 0.441775] pci 0000:00:02.0: PCI INT A -> GSI 27 (level, low) -> IRQ 27 [ 0.441779] pci 0000:00:02.0: setting latency timer to 64 [ 0.441787] alloc irq_desc for 31 on node 0 [ 0.441788] alloc kstat_irqs on node 0 [ 0.441793] pci 0000:00:03.0: PCI INT A -> GSI 31 (level, low) -> IRQ 31 [ 0.441797] pci 0000:00:03.0: setting latency timer to 64 [ 0.441803] pci 0000:00:13.1: setting latency timer to 64 [ 0.441808] pci 0000:80:01.0: BAR 0: assigned [mem 0xfd00000000-0xfd00003fff 64bit] [ 0.441815] pci 0000:80:01.0: BAR 0: set to [mem 0xfd00000000-0xfd00003fff 64bit] (PCI address [0xfd00000000-0xfd00003fff] [ 0.441819] pci_bus 0000:00: resource 4 [io 0x0000-0xffff] [ 0.441822] pci_bus 0000:00: resource 5 [mem 0x000a0000-0x000bffff] [ 0.441824] pci_bus 0000:00: resource 6 [mem 0x80000000-0xfcffffffff] [ 0.441827] pci_bus 0000:01: resource 0 [io 0xe000-0xefff] [ 0.441829] pci_bus 0000:01: resource 1 [mem 0xdd000000-0xdeffffff] [ 0.441832] pci_bus 0000:01: resource 2 [mem 0xc0000000-0xcfffffff pref] [ 0.441834] pci_bus 0000:02: resource 0 [io 0xd000-0xdfff] [ 0.441837] pci_bus 0000:02: resource 1 [mem 0xdfc00000-0xdfcfffff] [ 0.441839] pci_bus 0000:02: resource 2 [mem 0xdfb00000-0xdfbfffff 64bit pref] [ 0.441842] pci_bus 0000:03: resource 0 [io 0xc000-0xcfff] [ 0.441844] pci_bus 0000:03: resource 1 [mem 0xdfe00000-0xdfefffff] [ 0.441847] pci_bus 0000:03: resource 2 [mem 0xdfd00000-0xdfdfffff 64bit pref] [ 0.441849] pci_bus 0000:04: resource 0 [io 0xb000-0xbfff] [ 0.441852] pci_bus 0000:04: resource 1 [mem 0xdfa00000-0xdfafffff] [ 0.441854] pci_bus 0000:04: resource 2 [mem 0xdf900000-0xdf9fffff 64bit pref] [ 0.441857] pci_bus 0000:04: resource 4 [io 0x0000-0xffff] [ 0.441859] pci_bus 0000:04: resource 5 [mem 0x000a0000-0x000bffff] [ 0.441862] pci_bus 0000:04: resource 6 [mem 0x80000000-0xfcffffffff] [ 0.441864] pci_bus 0000:80: resource 0 [io 0x0000-0xffff] [ 0.441867] pci_bus 0000:80: resource 1 [mem 0x00000000-0xffffffffffffffff] [ 0.441910] NET: Registered protocol family 2 [ 0.442039] IP route cache hash table entries: 65536 (order: 7, 524288 bytes) [ 0.443081] TCP established hash table entries: 262144 (order: 10, 4194304 bytes) [ 0.445112] TCP bind hash table entries: 65536 (order: 8, 1048576 bytes) [ 0.445635] TCP: Hash tables configured (established 262144 bind 65536) [ 0.445638] TCP reno registered [ 0.445649] UDP hash table entries: 1024 (order: 3, 32768 bytes) [ 0.445677] UDP-Lite hash table entries: 1024 (order: 3, 32768 bytes) [ 0.445795] NET: Registered protocol family 1 [ 0.445808] pci 0000:00:00.0: MSI quirk detected; MSI disabled [ 0.445830] pci 0000:00:01.0: disabling DAC on VIA PCI bridge [ 0.445835] pci 0000:00:02.0: MSI quirk detected; subordinate MSI disabled [ 0.445953] pci 0000:01:00.0: Boot video device [ 0.445959] PCI: CLS 32 bytes, default 64 [ 0.449988] agpgart-amd64 0000:00:00.0: AGP bridge [1106/0336] [ 0.453090] agpgart-amd64 0000:00:00.0: AGP aperture is 128M @ 0xd0000000 [ 0.453389] Scanning for low memory corruption every 60 seconds [ 0.453529] audit: initializing netlink socket (disabled) [ 0.453540] type=2000 audit(1289561329.440:1): initialized [ 0.482937] HugeTLB registered 2 MB page size, pre-allocated 0 pages [ 0.484555] VFS: Disk quotas dquot_6.5.2 [ 0.484617] Dquot-cache hash table entries: 512 (order 0, 4096 bytes) [ 0.485268] fuse init (API version 7.14) [ 0.485361] msgmni has been set to 3733 [ 0.488235] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 253) [ 0.488241] io scheduler noop registered [ 0.488244] io scheduler deadline registered [ 0.488283] io scheduler cfq registered (default) [ 0.500205] pcieport 0000:00:02.0: setting latency timer to 64 [ 0.500699] pcieport 0000:00:03.0: setting latency timer to 64 [ 0.500862] pci_hotplug: PCI Hot Plug PCI Core version: 0.5 [ 0.501241] pciehp 0000:00:02.0:pcie04: HPC vendor_id 1106 device_id a238 ss_vid 0 ss_did 0 [ 0.501281] pciehp 0000:00:02.0:pcie04: service driver pciehp loaded [ 0.501296] pciehp 0000:00:03.0:pcie04: HPC vendor_id 1106 device_id c238 ss_vid 0 ss_did 0 [ 0.501326] pciehp 0000:00:03.0:pcie04: service driver pciehp loaded [ 0.501334] pciehp: PCI Express Hot Plug Controller Driver version: 0.4 [ 0.501523] input: Power Button as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0C:00/input/input0 [ 0.501531] ACPI: Power Button [PWRB] [ 0.501586] input: Power Button as /devices/LNXSYSTM:00/LNXPWRBN:00/input/input1 [ 0.501589] ACPI: Power Button [PWRF] [ 0.502255] ACPI: acpi_idle registered with cpuidle [ 0.506642] ERST: Table is not found! [ 0.506803] Linux agpgart interface v0.103 [ 0.506807] Serial: 8250/16550 driver, 4 ports, IRQ sharing enabled [ 0.506906] serial8250: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A [ 0.506996] serial8250: ttyS1 at I/O 0x2f8 (irq = 3) is a 16550A [ 0.507260] 00:08: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A [ 0.507379] 00:09: ttyS1 at I/O 0x2f8 (irq = 3) is a 16550A [ 0.508601] brd: module loaded [ 0.509149] loop: module loaded [ 0.509495] alloc irq_desc for 21 on node 0 [ 0.509497] alloc kstat_irqs on node 0 [ 0.509506] pata_acpi 0000:00:0f.0: PCI INT B -> GSI 21 (level, low) -> IRQ 21 [ 0.509560] pata_acpi 0000:00:0f.0: PCI INT B disabled [ 0.510054] Fixed MDIO Bus: probed [ 0.510087] PPP generic driver version 2.4.2 [ 0.510143] tun: Universal TUN/TAP device driver, 1.6 [ 0.510144] tun: (C) 1999-2004 Max Krasnyansky [ 0.510224] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver [ 0.510271] ehci_hcd 0000:00:10.4: PCI INT C -> GSI 21 (level, low) -> IRQ 21 [ 0.510294] ehci_hcd 0000:00:10.4: EHCI Host Controller [ 0.510331] ehci_hcd 0000:00:10.4: new USB bus registered, assigned bus number 1 [ 0.510384] ehci_hcd 0000:00:10.4: irq 21, io mem 0xdffff000 [ 0.530013] ehci_hcd 0000:00:10.4: USB 2.0 started, EHCI 1.00 [ 0.530152] hub 1-0:1.0: USB hub found [ 0.530158] hub 1-0:1.0: 8 ports detected [ 0.530259] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver [ 0.530275] uhci_hcd: USB Universal Host Controller Interface driver [ 0.530384] alloc irq_desc for 20 on node 0 [ 0.530386] alloc kstat_irqs on node 0 [ 0.530394] uhci_hcd 0000:00:10.0: PCI INT A -> GSI 20 (level, low) -> IRQ 20 [ 0.530402] uhci_hcd 0000:00:10.0: UHCI Host Controller [ 0.530450] uhci_hcd 0000:00:10.0: new USB bus registered, assigned bus number 2 [ 0.530483] uhci_hcd 0000:00:10.0: irq 20, io base 0x0000f900 [ 0.530611] hub 2-0:1.0: USB hub found [ 0.530615] hub 2-0:1.0: 2 ports detected [ 0.530724] alloc irq_desc for 22 on node 0 [ 0.530727] alloc kstat_irqs on node 0 [ 0.530731] uhci_hcd 0000:00:10.1: PCI INT B -> GSI 22 (level, low) -> IRQ 22 [ 0.530737] uhci_hcd 0000:00:10.1: UHCI Host Controller [ 0.530780] uhci_hcd 0000:00:10.1: new USB bus registered, assigned bus number 3 [ 0.530811] uhci_hcd 0000:00:10.1: irq 22, io base 0x0000f800 [ 0.530929] hub 3-0:1.0: USB hub found [ 0.530933] hub 3-0:1.0: 2 ports detected [ 0.531032] uhci_hcd 0000:00:10.2: PCI INT C -> GSI 21 (level, low) -> IRQ 21 [ 0.531038] uhci_hcd 0000:00:10.2: UHCI Host Controller [ 0.531074] uhci_hcd 0000:00:10.2: new USB bus registered, assigned bus number 4 [ 0.531095] uhci_hcd 0000:00:10.2: irq 21, io base 0x0000f700 [ 0.531218] hub 4-0:1.0: USB hub found [ 0.531222] hub 4-0:1.0: 2 ports detected [ 0.531314] alloc irq_desc for 23 on node 0 [ 0.531316] alloc kstat_irqs on node 0 [ 0.531321] uhci_hcd 0000:00:10.3: PCI INT D -> GSI 23 (level, low) -> IRQ 23 [ 0.531326] uhci_hcd 0000:00:10.3: UHCI Host Controller [ 0.531365] uhci_hcd 0000:00:10.3: new USB bus registered, assigned bus number 5 [ 0.531396] uhci_hcd 0000:00:10.3: irq 23, io base 0x0000f600 [ 0.531521] hub 5-0:1.0: USB hub found [ 0.531524] hub 5-0:1.0: 2 ports detected [ 0.531654] PNP: No PS/2 controller found. Probing ports directly. [ 0.532060] serio: i8042 KBD port at 0x60,0x64 irq 1 [ 0.532068] serio: i8042 AUX port at 0x60,0x64 irq 12 [ 0.532141] mice: PS/2 mouse device common for all mice [ 0.532273] rtc_cmos 00:04: RTC can wake from S4 [ 0.532320] rtc_cmos 00:04: rtc core: registered rtc_cmos as rtc0 [ 0.532354] rtc0: alarms up to one year, y3k, 242 bytes nvram [ 0.532476] device-mapper: uevent: version 1.0.3 [ 0.532562] device-mapper: ioctl: 4.17.0-ioctl (2010-03-05) initialised: dm-devel@redhat.com [ 0.532644] device-mapper: multipath: version 1.1.1 loaded [ 0.532647] device-mapper: multipath round-robin: version 1.0.0 loaded [ 0.532801] cpuidle: using governor ladder [ 0.532803] cpuidle: using governor menu [ 0.533097] TCP cubic registered [ 0.533236] NET: Registered protocol family 10 [ 0.533616] lo: Disabled Privacy Extensions [ 0.533823] NET: Registered protocol family 17 [ 0.533860] powernow-k8: Found 1 AMD Athlon(tm) 64 X2 Dual Core Processor 4200+ (2 cpu cores) (version 2.20.00) [ 0.533870] [Firmware Bug]: powernow-k8: No compatible ACPI _PSS objects found. [ 0.533871] [Firmware Bug]: powernow-k8: Try again with latest BIOS. [ 0.533997] PM: Resume from disk failed. [ 0.534015] registered taskstats version 1 [ 0.534314] Magic number: 2:25:479 [ 0.534430] rtc_cmos 00:04: setting system clock to 2010-11-12 11:28:50 UTC (1289561330) [ 0.534433] BIOS EDD facility v0.16 2004-Jun-25, 0 devices found [ 0.534435] EDD information not available. [ 0.576911] Freeing initrd memory: 10756k freed [ 0.582020] Freeing unused kernel memory: 908k freed [ 0.582406] Write protecting the kernel read-only data: 10240k [ 0.582580] Freeing unused kernel memory: 416k freed [ 0.582935] Freeing unused kernel memory: 1644k freed [ 0.604736] udev[88]: starting version 163 [ 0.686853] via-rhine.c:v1.10-LK1.4.3 2007-03-06 Written by Donald Becker [ 0.721421] sata_via 0000:00:0f.0: version 2.6 [ 0.721443] sata_via 0000:00:0f.0: PCI INT B -> GSI 21 (level, low) -> IRQ 21 [ 0.721487] sata_via 0000:00:0f.0: routed to hard irq line 11 [ 0.756240] scsi0 : sata_via [ 0.764116] FDC 0 is a post-1991 82077 [ 0.764415] scsi1 : sata_via [ 0.766598] ata1: SATA max UDMA/133 cmd 0xff00 ctl 0xfe00 bmdma 0xfb00 irq 21 [ 0.766601] ata2: SATA max UDMA/133 cmd 0xfd00 ctl 0xfc00 bmdma 0xfb08 irq 21 [ 0.766724] pata_via 0000:00:0f.1: version 0.3.4 [ 0.766876] scsi2 : pata_via [ 0.766947] scsi3 : pata_via [ 0.768888] ata3: PATA max UDMA/133 cmd 0x1f0 ctl 0x3f6 bmdma 0xfa00 irq 14 [ 0.768891] ata4: PATA max UDMA/133 cmd 0x170 ctl 0x376 bmdma 0xfa08 irq 15 [ 0.769020] via-rhine 0000:00:12.0: PCI INT A -> GSI 23 (level, low) -> IRQ 23 [ 0.769609] eth0: VIA Rhine II at 0xdfffe000, 00:19:db:b6:1f:02, IRQ 23. [ 0.770348] eth0: MII PHY found at address 1, status 0x786d advertising 01e1 Link 45e1. [ 0.970018] ata1: SATA link up 1.5 Gbps (SStatus 113 SControl 300) [ 1.010536] ata3.00: ATA-6: ST3120026A, 3.06, max UDMA/100 [ 1.010539] ata3.00: 234441648 sectors, multi 16: LBA48 [ 1.050411] ata3.00: configured for UDMA/100 [ 1.193756] ata1.00: ATA-7: MAXTOR STM3320620AS, 3.AAE, max UDMA/133 [ 1.193759] ata1.00: 625142448 sectors, multi 16: LBA48 NCQ (depth 0/32) [ 1.277070] ata1.00: configured for UDMA/133 [ 1.277220] scsi 0:0:0:0: Direct-Access ATA MAXTOR STM332062 3.AA PQ: 0 ANSI: 5 [ 1.277423] sd 0:0:0:0: Attached scsi generic sg0 type 0 [ 1.277467] sd 0:0:0:0: [sda] 625142448 512-byte logical blocks: (320 GB/298 GiB) [ 1.277552] sd 0:0:0:0: [sda] Write Protect is off [ 1.277556] sd 0:0:0:0: [sda] Mode Sense: 00 3a 00 00 [ 1.277578] sd 0:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA [ 1.277740] sda: sda1 sda2 < [ 1.320016] usb 2-1: new full speed USB device using uhci_hcd and address 2 [ 1.326011] sda5 sda6 sda7 sda8 sda9 sda10 sda11 sda12 sda13 sda14 sda15 sda16 sda17 > [ 1.455437] sd 0:0:0:0: [sda] Attached SCSI disk [ 1.490015] ata2: SATA link down 1.5 Gbps (SStatus 0 SControl 300) [ 1.500791] scsi 2:0:0:0: Direct-Access ATA ST3120026A 3.06 PQ: 0 ANSI: 5 [ 1.500935] sd 2:0:0:0: [sdb] 234441648 512-byte logical blocks: (120 GB/111 GiB) [ 1.501014] sd 2:0:0:0: [sdb] Write Protect is off [ 1.501017] sd 2:0:0:0: [sdb] Mode Sense: 00 3a 00 00 [ 1.501039] sd 2:0:0:0: [sdb] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA [ 1.501104] sd 2:0:0:0: Attached scsi generic sg1 type 0 [ 1.501212] sdb: sdb1 sdb2 < sdb5 sdb6 sdb7 > [ 1.536237] sd 2:0:0:0: [sdb] Attached SCSI disk [ 1.564564] usbcore: registered new interface driver hiddev [ 1.567876] input: Logitech Logitech Illuminated Keyboard as /devices/pci0000:00/0000:00:10.0/usb2/2-1/2-1:1.0/input/input2 [ 1.567981] generic-usb 0003:046D:C318.0001: input,hidraw0: USB HID v1.11 Keyboard [Logitech Logitech Illuminated Keyboard] on usb-0000:00:10.0-1/input0 [ 1.571633] input: Logitech Logitech Illuminated Keyboard as /devices/pci0000:00/0000:00:10.0/usb2/2-1/2-1:1.1/input/input3 [ 1.571758] generic-usb 0003:046D:C318.0002: input,hiddev96,hidraw1: USB HID v1.11 Device [Logitech Logitech Illuminated Keyboard] on usb-0000:00:10.0-1/input1 [ 1.571777] usbcore: registered new interface driver usbhid [ 1.571780] usbhid: USB HID core driver [ 1.700376] ata4.00: ATAPI: TSSTcorpCD/DVDW SH-S182D, SB04, max UDMA/33 [ 1.700407] ata4.01: ATAPI: TSSTcorp CDDVDW SH-S202J, SB02, max UDMA/66 [ 1.700429] ata4.01: limited to UDMA/33 due to 40-wire cable [ 1.740257] ata4.00: configured for UDMA/33 [ 1.780252] ata4.01: configured for UDMA/33 [ 1.781869] scsi 3:0:0:0: CD-ROM TSSTcorp CD/DVDW SH-S182D SB04 PQ: 0 ANSI: 5 [ 1.788470] sr0: scsi3-mmc drive: 48x/48x writer dvd-ram cd/rw xa/form2 cdda tray [ 1.788474] Uniform CD-ROM driver Revision: 3.20 [ 1.788599] sr 3:0:0:0: Attached scsi CD-ROM sr0 [ 1.788668] sr 3:0:0:0: Attached scsi generic sg2 type 5 [ 1.789298] scsi 3:0:1:0: CD-ROM TSSTcorp CDDVDW SH-S202J SB02 PQ: 0 ANSI: 5 [ 1.792684] sr1: scsi3-mmc drive: 48x/48x writer dvd-ram cd/rw xa/form2 cdda tray [ 1.792781] sr 3:0:1:0: Attached scsi CD-ROM sr1 [ 1.792836] sr 3:0:1:0: Attached scsi generic sg3 type 5 [ 1.802790] usb 3-1: new low speed USB device using uhci_hcd and address 2 [ 2.006221] input: Microsoft Microsoft Wheel Mouse Optical® as /devices/pci0000:00/0000:00:10.1/usb3/3-1/3-1:1.0/input/input4 [ 2.006408] generic-usb 0003:045E:0040.0003: input,hidraw2: USB HID v1.00 Mouse [Microsoft Microsoft Wheel Mouse Optical®] on usb-0000:00:10.1-1/input0 [ 2.968805] EXT3-fs: barriers not enabled [ 2.973653] kjournald starting. Commit interval 5 seconds [ 2.973688] EXT3-fs (sda11): mounted filesystem with ordered data mode [ 4.449890] Adding 995992k swap on /dev/sda12. Priority:-1 extents:1 across:995992k [ 4.761509] udev[405]: starting version 163 [ 5.790404] type=1400 audit(1289557735.750:2): apparmor="STATUS" operation="profile_load" name="/sbin/dhclient3" pid=556 comm="apparmor_parser" [ 5.790704] type=1400 audit(1289557735.750:3): apparmor="STATUS" operation="profile_load" name="/usr/lib/NetworkManager/nm-dhcp-client.action" pid=556 comm="apparmor_parser" [ 5.790864] type=1400 audit(1289557735.750:4): apparmor="STATUS" operation="profile_load" name="/usr/lib/connman/scripts/dhclient-script" pid=556 comm="apparmor_parser" [ 8.031075] shpchp: Standard Hot Plug PCI Controller Driver version: 0.4 [ 8.138711] EDAC MC: Ver: 2.1.0 Oct 16 2010 [ 8.142143] EDAC amd64_edac: Ver: 3.3.0 Oct 16 2010 [ 8.142236] EDAC amd64: This node reports that Memory ECC is currently disabled, set F3x44[22] (0000:00:18.3). [ 8.142243] EDAC amd64: ECC disabled in the BIOS or no ECC capability, module will not load. [ 8.142245] Either enable ECC checking or force module loading by setting 'ecc_enable_override'. [ 8.142246] (Note that use of the override may cause unknown side effects.) [ 8.142416] amd64_edac: probe of 0000:00:18.2 failed with error -22 [ 8.161151] k8temp 0000:00:18.3: Temperature readouts might be wrong - check erratum #141 [ 8.185993] parport_pc 00:0a: reported by Plug and Play ACPI [ 8.186045] parport0: PC-style at 0x378, irq 7 [PCSPP] [ 8.204875] lp: driver loaded but no devices found [ 8.260175] lp0: using parport0 (interrupt-driven). [ 8.260455] ppdev: user-space parallel port driver [ 8.555845] alloc irq_desc for 17 on node 0 [ 8.555849] alloc kstat_irqs on node 0 [ 8.555861] HDA Intel 0000:80:01.0: PCI INT A -> GSI 17 (level, low) -> IRQ 17 [ 8.555916] HDA Intel 0000:80:01.0: setting latency timer to 64 [ 8.555929] BUG: unable to handle kernel paging request at ffffc90000360000 [ 8.556077] IP: [] azx_create+0x36b/0x73d [snd_hda_intel] [ 8.556184] PGD 75417067 PUD 75418067 PMD 75522067 PTE 800000fd00000173 [ 8.556421] Oops: 0009 [#1] SMP [ 8.556561] last sysfs file: /sys/devices/pci0000:00/0000:00:0f.0/host0/target0:0:0/0:0:0:0/block/sda/sda17/alignment_offset [ 8.556623] CPU 0 [ 8.556672] Modules linked in: snd_hda_intel(+) snd_hda_codec snd_hwdep snd_pcm snd_seq_midi snd_rawmidi snd_seq_midi_event snd_seq snd_timer snd_seq_device snd soundcore snd_page_alloc ppdev lp parport_pc k8temp edac_core edac_mce_amd i2c_viapro parport shpchp psmouse joydev serio_raw usbhid hid floppy via_rhine pata_via mii sata_via [ 8.558292] [ 8.558342] Pid: 856, comm: work_for_cpu Not tainted 2.6.35-22-generic #35-Ubuntu MS-7253/MS-7253 [ 8.558400] RIP: 0010:[] [] azx_create+0x36b/0x73d [snd_hda_intel] [ 8.558508] RSP: 0018:ffff880073aa5e20 EFLAGS: 00010282 [ 8.558560] RAX: ffffc90000360000 RBX: ffff880073aa5e80 RCX: 0000000000000000 [ 8.558615] RDX: 0000000000000000 RSI: 0000000000000286 RDI: 0000000000000286 [ 8.558671] RBP: ffff880073aa5e70 R08: 0000000000000001 R09: 0000000000000040 [ 8.558726] R10: 0000000000000008 R11: 0000000000000003 R12: ffff8800752af000 [ 8.558790] R13: ffff88007575e400 R14: 0000000000000000 R15: ffff88007575d400 [ 8.558855] FS: 00007f7f480467a0(0000) GS:ffff880001e00000(0000) knlGS:0000000000000000 [ 8.558930] CS: 0010 DS: 0000 ES: 0000 CR0: 000000008005003b [ 8.558993] CR2: ffffc90000360000 CR3: 000000007536b000 CR4: 00000000000006f0 [ 8.559057] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 [ 8.559122] DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400 [ 8.559187] Process work_for_cpu (pid: 856, threadinfo ffff880073aa4000, task ffff88007417adc0) [ 8.559262] Stack: [ 8.559320] ffffffffa00bf1e0 ffffffffa009ad78 ffffffff00000000 0000000073aa5e88 [ 8.559519] <0> 0000000000000000 ffff8800752af000 ffffffffa009a520 ffff8800752af090 [ 8.559818] <0> 0000000000000000 0000000000000000 ffff880073aa5eb0 ffffffffa0099100 [ 8.560168] Call Trace: [ 8.560231] [] azx_probe+0xb8/0x284 [snd_hda_intel] [ 8.560298] [] ? do_work_for_cpu+0x0/0x30 [ 8.560363] [] local_pci_probe+0x17/0x20 [ 8.560426] [] do_work_for_cpu+0x18/0x30 [ 8.560489] [] kthread+0x96/0xa0 [ 8.560552] [] kernel_thread_helper+0x4/0x10 [ 8.560616] [] ? kthread+0x0/0xa0 [ 8.560678] [] ? kernel_thread_helper+0x0/0x10 [ 8.560740] Code: ef 31 f6 4c 89 ef 89 4d c0 e8 17 d5 ff ff 85 c0 0f 88 c3 03 00 00 4c 89 e7 e8 87 bd 23 e1 41 8b 7d 40 e8 1e 21 03 e1 49 8b 45 38 <66> 44 8b 30 41 8b 45 14 8b 4d c0 8d 50 fd 83 fa 01 77 3f 31 d2 [ 8.563732] RIP [] azx_create+0x36b/0x73d [snd_hda_intel] [ 8.563843] RSP [ 8.563902] CR2: ffffc90000360000 [ 8.563962] ---[ end trace ea6a32672ca8c0d1 ]--- [ 9.011387] EXT3-fs (sda11): using internal journal [ 9.201459] EXT3-fs: barriers not enabled [ 9.213179] kjournald starting. Commit interval 5 seconds [ 9.213323] EXT3-fs (sda13): using internal journal [ 9.213475] EXT3-fs (sda13): mounted filesystem with ordered data mode [ 9.659852] EXT3-fs: barriers not enabled [ 9.665279] kjournald starting. Commit interval 5 seconds [ 9.665445] EXT3-fs (sda17): using internal journal [ 9.665597] EXT3-fs (sda17): mounted filesystem with ordered data mode [ 9.982821] EXT3-fs: barriers not enabled [ 9.983072] kjournald starting. Commit interval 5 seconds [ 9.983224] EXT3-fs (sda16): using internal journal [ 9.983376] EXT3-fs (sda16): mounted filesystem with ordered data mode [ 10.243061] EXT3-fs: barriers not enabled [ 10.243329] kjournald starting. Commit interval 5 seconds [ 10.243488] EXT3-fs (sda15): using internal journal [ 10.243641] EXT3-fs (sda15): mounted filesystem with ordered data mode [ 10.769174] EXT3-fs: barriers not enabled [ 10.781022] kjournald starting. Commit interval 5 seconds [ 10.781168] EXT3-fs (sda14): using internal journal [ 10.781321] EXT3-fs (sda14): mounted filesystem with ordered data mode [ 12.678212] type=1400 audit(1289557742.630:5): apparmor="STATUS" operation="profile_replace" name="/sbin/dhclient3" pid=975 comm="apparmor_parser" [ 12.678575] type=1400 audit(1289557742.630:6): apparmor="STATUS" operation="profile_replace" name="/usr/lib/NetworkManager/nm-dhcp-client.action" pid=975 comm="apparmor_parser" [ 12.678828] type=1400 audit(1289557742.630:7): apparmor="STATUS" operation="profile_replace" name="/usr/lib/connman/scripts/dhclient-script" pid=975 comm="apparmor_parser" [ 12.706775] type=1400 audit(1289557742.660:8): apparmor="STATUS" operation="profile_load" name="/usr/share/gdm/guest-session/Xsession" pid=974 comm="apparmor_parser" [ 12.741569] type=1400 audit(1289557742.690:9): apparmor="STATUS" operation="profile_load" name="/usr/lib/cups/backend/cups-pdf" pid=978 comm="apparmor_parser" [ 12.742025] type=1400 audit(1289557742.690:10): apparmor="STATUS" operation="profile_load" name="/usr/sbin/cupsd" pid=978 comm="apparmor_parser" [ 12.760879] type=1400 audit(1289557742.710:11): apparmor="STATUS" operation="profile_load" name="/usr/bin/evince" pid=976 comm="apparmor_parser" [ 12.764672] type=1400 audit(1289557742.720:12): apparmor="STATUS" operation="profile_load" name="/usr/bin/evince-previewer" pid=976 comm="apparmor_parser" [ 12.767077] type=1400 audit(1289557742.720:13): apparmor="STATUS" operation="profile_load" name="/usr/bin/evince-thumbnailer" pid=976 comm="apparmor_parser" [ 12.770019] type=1400 audit(1289557742.720:14): apparmor="STATUS" operation="profile_load" name="/usr/sbin/tcpdump" pid=979 comm="apparmor_parser" [ 13.672933] eth0: link up, 100Mbps, full-duplex, lpa 0x45E1 Bug: 697514 [ 0.000000] Initializing cgroup subsys cpuset [ 0.000000] Initializing cgroup subsys cpu [ 0.000000] Linux version 2.6.35-24-generic (buildd@yellow) (gcc version 4.4.5 (Ubuntu/Linaro 4.4.4-14ubuntu5) ) #42-Ubuntu SMP Thu Dec 2 02:41:37 UTC 2010 (Ubuntu 2.6.35-24.42-generic 2.6.35.8) [ 0.000000] Command line: BOOT_IMAGE=/boot/vmlinuz-2.6.35-24-generic root=UUID=3a3bdef2-d2b1-42e9-b4f4-8774f733d24a ro quiet splash [ 0.000000] BIOS-provided physical RAM map: [ 0.000000] BIOS-e820: 0000000000000000 - 000000000009d000 (usable) [ 0.000000] BIOS-e820: 000000000009d000 - 00000000000a0000 (reserved) [ 0.000000] BIOS-e820: 00000000000e0000 - 0000000000100000 (reserved) [ 0.000000] BIOS-e820: 0000000000100000 - 000000009b63f000 (usable) [ 0.000000] BIOS-e820: 000000009b63f000 - 000000009b6bf000 (reserved) [ 0.000000] BIOS-e820: 000000009b6bf000 - 000000009b7bf000 (ACPI NVS) [ 0.000000] BIOS-e820: 000000009b7bf000 - 000000009b7ff000 (ACPI data) [ 0.000000] BIOS-e820: 000000009b7ff000 - 000000009b800000 (usable) [ 0.000000] BIOS-e820: 000000009b800000 - 00000000a0000000 (reserved) [ 0.000000] BIOS-e820: 00000000e0000000 - 00000000f0000000 (reserved) [ 0.000000] BIOS-e820: 00000000feb00000 - 00000000feb04000 (reserved) [ 0.000000] BIOS-e820: 00000000fec00000 - 00000000fec01000 (reserved) [ 0.000000] BIOS-e820: 00000000fed10000 - 00000000fed14000 (reserved) [ 0.000000] BIOS-e820: 00000000fed18000 - 00000000fed1a000 (reserved) [ 0.000000] BIOS-e820: 00000000fed1c000 - 00000000fed20000 (reserved) [ 0.000000] BIOS-e820: 00000000fee00000 - 00000000fee01000 (reserved) [ 0.000000] BIOS-e820: 00000000ffe00000 - 0000000100000000 (reserved) [ 0.000000] BIOS-e820: 0000000100000000 - 0000000158000000 (usable) [ 0.000000] NX (Execute Disable) protection: active [ 0.000000] DMI 2.6 present. [ 0.000000] e820 update range: 0000000000000000 - 0000000000001000 (usable) ==> (reserved) [ 0.000000] e820 remove range: 00000000000a0000 - 0000000000100000 (usable) [ 0.000000] No AGP bridge found [ 0.000000] last_pfn = 0x158000 max_arch_pfn = 0x400000000 [ 0.000000] MTRR default type: uncachable [ 0.000000] MTRR fixed ranges enabled: [ 0.000000] 00000-9FFFF write-back [ 0.000000] A0000-BFFFF uncachable [ 0.000000] C0000-EFFFF write-through [ 0.000000] F0000-FFFFF write-combining [ 0.000000] MTRR variable ranges enabled: [ 0.000000] 0 base 000000000 mask F80000000 write-back [ 0.000000] 1 base 0FFE00000 mask FFFE00000 write-protect [ 0.000000] 2 base 080000000 mask FE0000000 write-back [ 0.000000] 3 base 09C000000 mask FFC000000 uncachable [ 0.000000] 4 base 09B800000 mask FFF800000 uncachable [ 0.000000] 5 base 100000000 mask F80000000 write-back [ 0.000000] 6 base 158000000 mask FF8000000 uncachable [ 0.000000] 7 base 160000000 mask FE0000000 uncachable [ 0.000000] x86 PAT enabled: cpu 0, old 0x7040600070406, new 0x7010600070106 [ 0.000000] last_pfn = 0x9b800 max_arch_pfn = 0x400000000 [ 0.000000] e820 update range: 0000000000001000 - 0000000000010000 (usable) ==> (reserved) [ 0.000000] Scanning 1 areas for low memory corruption [ 0.000000] modified physical RAM map: [ 0.000000] modified: 0000000000000000 - 0000000000010000 (reserved) [ 0.000000] modified: 0000000000010000 - 000000000009d000 (usable) [ 0.000000] modified: 000000000009d000 - 00000000000a0000 (reserved) [ 0.000000] modified: 00000000000e0000 - 0000000000100000 (reserved) [ 0.000000] modified: 0000000000100000 - 000000009b63f000 (usable) [ 0.000000] modified: 000000009b63f000 - 000000009b6bf000 (reserved) [ 0.000000] modified: 000000009b6bf000 - 000000009b7bf000 (ACPI NVS) [ 0.000000] modified: 000000009b7bf000 - 000000009b7ff000 (ACPI data) [ 0.000000] modified: 000000009b7ff000 - 000000009b800000 (usable) [ 0.000000] modified: 000000009b800000 - 00000000a0000000 (reserved) [ 0.000000] modified: 00000000e0000000 - 00000000f0000000 (reserved) [ 0.000000] modified: 00000000feb00000 - 00000000feb04000 (reserved) [ 0.000000] modified: 00000000fec00000 - 00000000fec01000 (reserved) [ 0.000000] modified: 00000000fed10000 - 00000000fed14000 (reserved) [ 0.000000] modified: 00000000fed18000 - 00000000fed1a000 (reserved) [ 0.000000] modified: 00000000fed1c000 - 00000000fed20000 (reserved) [ 0.000000] modified: 00000000fee00000 - 00000000fee01000 (reserved) [ 0.000000] modified: 00000000ffe00000 - 0000000100000000 (reserved) [ 0.000000] modified: 0000000100000000 - 0000000158000000 (usable) [ 0.000000] initial memory mapped : 0 - 20000000 [ 0.000000] init_memory_mapping: 0000000000000000-000000009b800000 [ 0.000000] 0000000000 - 009b800000 page 2M [ 0.000000] kernel direct mapping tables up to 9b800000 @ 16000-1a000 [ 0.000000] init_memory_mapping: 0000000100000000-0000000158000000 [ 0.000000] 0100000000 - 0158000000 page 2M [ 0.000000] kernel direct mapping tables up to 158000000 @ 18000-1f000 [ 0.000000] RAMDISK: 37570000 - 37ff0000 [ 0.000000] ACPI: RSDP 00000000000fe020 00024 (v02 HP ) [ 0.000000] ACPI: XSDT 000000009b7fe120 00094 (v01 HPQOEM SLIC-MPC 00000001 01000013) [ 0.000000] ACPI: FACP 000000009b7fc000 000F4 (v04 HP SLIC-MPC 00000001 MSFT 01000013) [ 0.000000] ACPI: DSDT 000000009b7e9000 0FA19 (v02 HP SLIC-MPC 00000001 MSFT 01000013) [ 0.000000] ACPI: FACS 000000009b75f000 00040 [ 0.000000] ACPI: ASF! 000000009b7fd000 000A5 (v32 HP SLIC-MPC 00000001 MSFT 01000013) [ 0.000000] ACPI: HPET 000000009b7fb000 00038 (v01 HP SLIC-MPC 00000001 MSFT 01000013) [ 0.000000] ACPI: APIC 000000009b7fa000 0008C (v02 HP SLIC-MPC 00000001 MSFT 01000013) [ 0.000000] ACPI: MCFG 000000009b7f9000 0003C (v01 HP SLIC-MPC 00000001 MSFT 01000013) [ 0.000000] ACPI: SLIC 000000009b7e8000 00176 (v01 HPQOEM SLIC-MPC 00000001 MSFT 01000013) [ 0.000000] ACPI: SSDT 000000009b7e6000 01152 (v01 TrmRef PtidDevc 00001000 INTL 20051117) [ 0.000000] ACPI: SSDT 000000009b7e5000 00172 (v01 VaRef Va_Acpi 00003000 INTL 20051117) [ 0.000000] ACPI: BOOT 000000009b7e4000 00028 (v01 HP SLIC-MPC 00000001 MSFT 01000013) [ 0.000000] ACPI: SSDT 000000009b7e3000 00C39 (v01 INTEL SataPri 00001000 INTL 20051117) [ 0.000000] ACPI: SSDT 000000009b7e2000 006C5 (v01 INTEL SataSec 00001000 INTL 20051117) [ 0.000000] ACPI: ASPT 000000009b7e1000 00034 (v04 HP SLIC-MPC 00000001 MSFT 01000013) [ 0.000000] ACPI: SSDT 000000009b7e0000 009F1 (v01 PmRef CpuPm 00003000 INTL 20051117) [ 0.000000] ACPI: SSDT 000000009b7de000 01A8F (v01 AmdRef AmdTabl 00001000 INTL 20051117) [ 0.000000] ACPI: Local APIC address 0xfee00000 [ 0.000000] No NUMA configuration found [ 0.000000] Faking a node at 0000000000000000-0000000158000000 [ 0.000000] Initmem setup node 0 0000000000000000-0000000158000000 [ 0.000000] NODE_DATA [0000000100000000 - 0000000100004fff] [ 0.000000] [ffffea0000000000-ffffea0004bfffff] PMD -> [ffff880100200000-ffff8801039fffff] on node 0 [ 0.000000] Zone PFN ranges: [ 0.000000] DMA 0x00000010 -> 0x00001000 [ 0.000000] DMA32 0x00001000 -> 0x00100000 [ 0.000000] Normal 0x00100000 -> 0x00158000 [ 0.000000] Movable zone start PFN for each node [ 0.000000] early_node_map[4] active PFN ranges [ 0.000000] 0: 0x00000010 -> 0x0000009d [ 0.000000] 0: 0x00000100 -> 0x0009b63f [ 0.000000] 0: 0x0009b7ff -> 0x0009b800 [ 0.000000] 0: 0x00100000 -> 0x00158000 [ 0.000000] On node 0 totalpages: 996813 [ 0.000000] DMA zone: 56 pages used for memmap [ 0.000000] DMA zone: 0 pages reserved [ 0.000000] DMA zone: 3925 pages, LIFO batch:0 [ 0.000000] DMA32 zone: 14280 pages used for memmap [ 0.000000] DMA32 zone: 618104 pages, LIFO batch:31 [ 0.000000] Normal zone: 4928 pages used for memmap [ 0.000000] Normal zone: 355520 pages, LIFO batch:31 [ 0.000000] ACPI: PM-Timer IO Port: 0x408 [ 0.000000] ACPI: Local APIC address 0xfee00000 [ 0.000000] ACPI: LAPIC (acpi_id[0x01] lapic_id[0x00] enabled) [ 0.000000] ACPI: LAPIC (acpi_id[0x02] lapic_id[0x01] enabled) [ 0.000000] ACPI: LAPIC (acpi_id[0x03] lapic_id[0x04] enabled) [ 0.000000] ACPI: LAPIC (acpi_id[0x04] lapic_id[0x05] enabled) [ 0.000000] ACPI: LAPIC (acpi_id[0x05] lapic_id[0x00] disabled) [ 0.000000] ACPI: LAPIC (acpi_id[0x06] lapic_id[0x00] disabled) [ 0.000000] ACPI: LAPIC (acpi_id[0x07] lapic_id[0x00] disabled) [ 0.000000] ACPI: LAPIC (acpi_id[0x08] lapic_id[0x00] disabled) [ 0.000000] ACPI: IOAPIC (id[0x02] address[0xfec00000] gsi_base[0]) [ 0.000000] IOAPIC[0]: apic_id 2, version 32, address 0xfec00000, GSI 0-23 [ 0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 0 global_irq 2 dfl dfl) [ 0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 9 global_irq 9 high level) [ 0.000000] ACPI: IRQ0 used by override. [ 0.000000] ACPI: IRQ2 used by override. [ 0.000000] ACPI: IRQ9 used by override. [ 0.000000] Using ACPI (MADT) for SMP configuration information [ 0.000000] ACPI: HPET id: 0x8086a201 base: 0xfed00000 [ 0.000000] SMP: Allowing 8 CPUs, 4 hotplug CPUs [ 0.000000] nr_irqs_gsi: 40 [ 0.000000] early_res array is doubled to 64 at [1a000 - 1a7ff] [ 0.000000] PM: Registered nosave memory: 000000000009d000 - 00000000000a0000 [ 0.000000] PM: Registered nosave memory: 00000000000a0000 - 00000000000e0000 [ 0.000000] PM: Registered nosave memory: 00000000000e0000 - 0000000000100000 [ 0.000000] PM: Registered nosave memory: 000000009b63f000 - 000000009b6bf000 [ 0.000000] PM: Registered nosave memory: 000000009b6bf000 - 000000009b7bf000 [ 0.000000] PM: Registered nosave memory: 000000009b7bf000 - 000000009b7ff000 [ 0.000000] PM: Registered nosave memory: 000000009b800000 - 00000000a0000000 [ 0.000000] PM: Registered nosave memory: 00000000a0000000 - 00000000e0000000 [ 0.000000] PM: Registered nosave memory: 00000000e0000000 - 00000000f0000000 [ 0.000000] PM: Registered nosave memory: 00000000f0000000 - 00000000feb00000 [ 0.000000] PM: Registered nosave memory: 00000000feb00000 - 00000000feb04000 [ 0.000000] PM: Registered nosave memory: 00000000feb04000 - 00000000fec00000 [ 0.000000] PM: Registered nosave memory: 00000000fec00000 - 00000000fec01000 [ 0.000000] PM: Registered nosave memory: 00000000fec01000 - 00000000fed10000 [ 0.000000] PM: Registered nosave memory: 00000000fed10000 - 00000000fed14000 [ 0.000000] PM: Registered nosave memory: 00000000fed14000 - 00000000fed18000 [ 0.000000] PM: Registered nosave memory: 00000000fed18000 - 00000000fed1a000 [ 0.000000] PM: Registered nosave memory: 00000000fed1a000 - 00000000fed1c000 [ 0.000000] PM: Registered nosave memory: 00000000fed1c000 - 00000000fed20000 [ 0.000000] PM: Registered nosave memory: 00000000fed20000 - 00000000fee00000 [ 0.000000] PM: Registered nosave memory: 00000000fee00000 - 00000000fee01000 [ 0.000000] PM: Registered nosave memory: 00000000fee01000 - 00000000ffe00000 [ 0.000000] PM: Registered nosave memory: 00000000ffe00000 - 0000000100000000 [ 0.000000] Allocating PCI resources starting at a0000000 (gap: a0000000:40000000) [ 0.000000] Booting paravirtualized kernel on bare hardware [ 0.000000] setup_percpu: NR_CPUS:64 nr_cpumask_bits:64 nr_cpu_ids:8 nr_node_ids:1 [ 0.000000] PERCPU: Embedded 30 pages/cpu @ffff880001e00000 s91520 r8192 d23168 u262144 [ 0.000000] early_res array is doubled to 128 at [1a800 - 1b7ff] [ 0.000000] pcpu-alloc: s91520 r8192 d23168 u262144 alloc=1*2097152 [ 0.000000] pcpu-alloc: [0] 0 1 2 3 4 5 6 7 [ 0.000000] Built 1 zonelists in Node order, mobility grouping on. Total pages: 977549 [ 0.000000] Policy zone: Normal [ 0.000000] Kernel command line: BOOT_IMAGE=/boot/vmlinuz-2.6.35-24-generic root=UUID=3a3bdef2-d2b1-42e9-b4f4-8774f733d24a ro quiet splash [ 0.000000] PID hash table entries: 4096 (order: 3, 32768 bytes) [ 0.000000] Checking aperture... [ 0.000000] No AGP bridge found [ 0.000000] Calgary: detecting Calgary via BIOS EBDA area [ 0.000000] Calgary: Unable to locate Rio Grande table in EBDA - bailing! [ 0.000000] Subtract (65 early reservations) [ 0.000000] #1 [0001000000 - 0001d17114] TEXT DATA BSS [ 0.000000] #2 [0037570000 - 0037ff0000] RAMDISK [ 0.000000] #3 [000009d000 - 0000100000] BIOS reserved [ 0.000000] #4 [0001d18000 - 0001d182f6] BRK [ 0.000000] #5 [0000010000 - 0000012000] TRAMPOLINE [ 0.000000] #6 [0000012000 - 0000016000] ACPI WAKEUP [ 0.000000] #7 [0000016000 - 0000018000] PGTABLE [ 0.000000] #8 [0000018000 - 000001a000] PGTABLE [ 0.000000] #9 [0100000000 - 0100005000] NODE_DATA [ 0.000000] #10 [0001d18300 - 0001d19300] BOOTMEM [ 0.000000] #11 [0001d17140 - 0001d17428] BOOTMEM [ 0.000000] #12 [0100005000 - 0100006000] BOOTMEM [ 0.000000] #13 [0100006000 - 0100007000] BOOTMEM [ 0.000000] #14 [0100200000 - 0103a00000] MEMMAP 0 [ 0.000000] #15 [0001d17440 - 0001d175c0] BOOTMEM [ 0.000000] #16 [0001d19300 - 0001d31300] BOOTMEM [ 0.000000] #17 [0001d31300 - 0001d3d300] BOOTMEM [ 0.000000] #18 [0001d3e000 - 0001d3f000] BOOTMEM [ 0.000000] #19 [0001d175c0 - 0001d17601] BOOTMEM [ 0.000000] #20 [0001d17640 - 0001d17683] BOOTMEM [ 0.000000] #21 [0001d176c0 - 0001d17ae8] BOOTMEM [ 0.000000] #22 [0001d17b00 - 0001d17b68] BOOTMEM [ 0.000000] #23 [0001d17b80 - 0001d17be8] BOOTMEM [ 0.000000] #24 [0001d17c00 - 0001d17c68] BOOTMEM [ 0.000000] #25 [0001d17c80 - 0001d17ce8] BOOTMEM [ 0.000000] #26 [0001d17d00 - 0001d17d68] BOOTMEM [ 0.000000] #27 [0001d17d80 - 0001d17de8] BOOTMEM [ 0.000000] #28 [0001d17e00 - 0001d17e68] BOOTMEM [ 0.000000] #29 [0001d17e80 - 0001d17ee8] BOOTMEM [ 0.000000] #30 [0001d17f00 - 0001d17f68] BOOTMEM [ 0.000000] #31 [0001d17f80 - 0001d17fe8] BOOTMEM [ 0.000000] #32 [0001d3d300 - 0001d3d368] BOOTMEM [ 0.000000] #33 [0001d3d380 - 0001d3d3e8] BOOTMEM [ 0.000000] #34 [0001d3d400 - 0001d3d468] BOOTMEM [ 0.000000] #35 [0001d3d480 - 0001d3d4e8] BOOTMEM [ 0.000000] #36 [0001d3d500 - 0001d3d568] BOOTMEM [ 0.000000] #37 [0001d3d580 - 0001d3d5e8] BOOTMEM [ 0.000000] #38 [0001d3d600 - 0001d3d668] BOOTMEM [ 0.000000] #39 [0001d3d680 - 0001d3d6e8] BOOTMEM [ 0.000000] #40 [0001d3d700 - 0001d3d720] BOOTMEM [ 0.000000] #41 [0001d3d740 - 0001d3d760] BOOTMEM [ 0.000000] #42 [0001d3d780 - 0001d3d7a0] BOOTMEM [ 0.000000] #43 [0001d3d7c0 - 0001d3d82a] BOOTMEM [ 0.000000] #44 [0001d3d840 - 0001d3d8aa] BOOTMEM [ 0.000000] #45 [0001e00000 - 0001e1e000] BOOTMEM [ 0.000000] #46 [0001e40000 - 0001e5e000] BOOTMEM [ 0.000000] #47 [0001e80000 - 0001e9e000] BOOTMEM [ 0.000000] #48 [0001ec0000 - 0001ede000] BOOTMEM [ 0.000000] #49 [0001f00000 - 0001f1e000] BOOTMEM [ 0.000000] #50 [0001f40000 - 0001f5e000] BOOTMEM [ 0.000000] #51 [0001f80000 - 0001f9e000] BOOTMEM [ 0.000000] #52 [0001fc0000 - 0001fde000] BOOTMEM [ 0.000000] #53 [0001d3d8c0 - 0001d3d8c8] BOOTMEM [ 0.000000] #54 [0001d3d900 - 0001d3d908] BOOTMEM [ 0.000000] #55 [0001d3d940 - 0001d3d960] BOOTMEM [ 0.000000] #56 [0001d3d980 - 0001d3d9c0] BOOTMEM [ 0.000000] #57 [0001d3d9c0 - 0001d3dae0] BOOTMEM [ 0.000000] #58 [0001d3db00 - 0001d3db48] BOOTMEM [ 0.000000] #59 [0001d3db80 - 0001d3dbc8] BOOTMEM [ 0.000000] #60 [0001d3f000 - 0001d47000] BOOTMEM [ 0.000000] #61 [0001fde000 - 0005fde000] BOOTMEM [ 0.000000] #62 [0001d47000 - 0001d67000] BOOTMEM [ 0.000000] #63 [0001d67000 - 0001da7000] BOOTMEM [ 0.000000] #64 [000001b800 - 0000023800] BOOTMEM [ 0.000000] Memory: 3838576k/5636096k available (5711k kernel code, 1648844k absent, 148676k reserved, 5379k data, 908k init) [ 0.000000] SLUB: Genslabs=14, HWalign=64, Order=0-3, MinObjects=0, CPUs=8, Nodes=1 [ 0.000000] Hierarchical RCU implementation. [ 0.000000] RCU dyntick-idle grace-period acceleration is enabled. [ 0.000000] RCU-based detection of stalled CPUs is disabled. [ 0.000000] Verbose stalled-CPUs detection is disabled. [ 0.000000] NR_IRQS:4352 nr_irqs:744 [ 0.000000] Extended CMOS year: 2000 [ 0.000000] Console: colour VGA+ 80x25 [ 0.000000] console [tty0] enabled [ 0.000000] allocated 40632320 bytes of page_cgroup [ 0.000000] please try 'cgroup_disable=memory' option if you don't want memory cgroups [ 0.000000] hpet clockevent registered [ 0.000000] Fast TSC calibration using PIT [ 0.010000] Detected 1196.995 MHz processor. [ 0.000011] Calibrating delay loop (skipped), value calculated using timer frequency.. 2393.99 BogoMIPS (lpj=11969950) [ 0.000017] pid_max: default: 32768 minimum: 301 [ 0.000047] Security Framework initialized [ 0.000072] AppArmor: AppArmor initialized [ 0.000074] Yama: becoming mindful. [ 0.000715] Dentry cache hash table entries: 524288 (order: 10, 4194304 bytes) [ 0.002245] Inode-cache hash table entries: 262144 (order: 9, 2097152 bytes) [ 0.002847] Mount-cache hash table entries: 256 [ 0.003007] Initializing cgroup subsys ns [ 0.003013] Initializing cgroup subsys cpuacct [ 0.003018] Initializing cgroup subsys memory [ 0.003029] Initializing cgroup subsys devices [ 0.003032] Initializing cgroup subsys freezer [ 0.003035] Initializing cgroup subsys net_cls [ 0.003066] CPU: Physical Processor ID: 0 [ 0.003068] CPU: Processor Core ID: 0 [ 0.003077] mce: CPU supports 9 MCE banks [ 0.003090] CPU0: Thermal monitoring handled by SMI [ 0.003102] using mwait in idle threads. [ 0.003105] Performance Events: PEBS fmt1+, Westmere events, Intel PMU driver. [ 0.003116] ... version: 3 [ 0.003118] ... bit width: 48 [ 0.003120] ... generic registers: 4 [ 0.003122] ... value mask: 0000ffffffffffff [ 0.003125] ... max period: 000000007fffffff [ 0.003127] ... fixed-purpose events: 3 [ 0.003129] ... event mask: 000000070000000f [ 0.006423] ACPI: Core revision 20100428 [ 0.062793] ftrace: converting mcount calls to 0f 1f 44 00 00 [ 0.062800] ftrace: allocating 22678 entries in 89 pages [ 0.074447] Setting APIC routing to flat [ 0.074825] ..TIMER: vector=0x30 apic1=0 pin1=2 apic2=-1 pin2=-1 [ 0.174782] CPU0: Intel(R) Core(TM) i5 CPU U 430 @ 1.20GHz stepping 05 [ 0.286661] Booting Node 0, Processors #1 [ 0.446436] CPU1: Thermal monitoring handled by SMI [ 0.466685] #2 [ 0.626332] CPU2: Thermal monitoring handled by SMI [ 0.646509] #3 [ 0.806231] CPU3: Thermal monitoring handled by SMI [ 0.826323] Brought up 4 CPUs [ 0.826327] Total of 4 processors activated (9575.98 BogoMIPS). [ 0.828675] devtmpfs: initialized [ 0.830180] regulator: core version 0.5 [ 0.830210] Time: 21:04:34 Date: 01/04/11 [ 0.830254] NET: Registered protocol family 16 [ 0.830384] Trying to unpack rootfs image as initramfs... [ 0.830406] ACPI FADT declares the system doesn't support PCIe ASPM, so disable it [ 0.830409] ACPI: bus type pci registered [ 0.830519] PCI: MMCONFIG for domain 0000 [bus 00-ff] at [mem 0xe0000000-0xefffffff] (base 0xe0000000) [ 0.830524] PCI: MMCONFIG at [mem 0xe0000000-0xefffffff] reserved in E820 [ 0.887492] PCI: Using configuration type 1 for base access [ 0.888622] bio: create slab at 0 [ 0.893249] ACPI: EC: Look up EC in DSDT [ 0.897658] ACPI: Executed 1 blocks of module-level executable AML code [ 0.908766] ACPI: BIOS _OSI(Linux) query ignored [ 0.921439] ACPI: SSDT 000000009b691a98 0033A (v01 PmRef Cpu0Ist 00003000 INTL 20051117) [ 0.922633] ACPI: Dynamic OEM Table Load: [ 0.922637] ACPI: SSDT (null) 0033A (v01 PmRef Cpu0Ist 00003000 INTL 20051117) [ 0.923328] ACPI: SSDT 000000009b690018 00891 (v01 PmRef Cpu0Cst 00003001 INTL 20051117) [ 0.924483] ACPI: Dynamic OEM Table Load: [ 0.924487] ACPI: SSDT (null) 00891 (v01 PmRef Cpu0Cst 00003001 INTL 20051117) [ 0.925616] ACPI: SSDT 000000009b691718 00303 (v01 PmRef ApIst 00003000 INTL 20051117) [ 0.926890] ACPI: Dynamic OEM Table Load: [ 0.926894] ACPI: SSDT (null) 00303 (v01 PmRef ApIst 00003000 INTL 20051117) [ 0.927322] ACPI: SSDT 000000009b68fd98 00119 (v01 PmRef ApCst 00003000 INTL 20051117) [ 0.928566] ACPI: Dynamic OEM Table Load: [ 0.928570] ACPI: SSDT (null) 00119 (v01 PmRef ApCst 00003000 INTL 20051117) [ 1.180296] Freeing initrd memory: 10752k freed [ 1.336305] ACPI: Interpreter enabled [ 1.336313] ACPI: (supports S0 S3 S4 S5) [ 1.336381] ACPI: Using IOAPIC for interrupt routing [ 1.339421] [Firmware Bug]: ACPI: ACPI brightness control misses _BQC function [ 1.356441] [Firmware Bug]: ACPI: ACPI brightness control misses _BQC function [ 1.364758] ACPI: EC: GPE = 0x17, I/O: command/status = 0x66, data = 0x62 [ 1.364922] ACPI: Power Resource [FN00] (on) [ 1.365475] ACPI: No dock devices found. [ 1.365479] PCI: Using host bridge windows from ACPI; if necessary, use "pci=nocrs" and report a bug [ 1.367052] \_SB_.PCI0:_OSC invalid UUID [ 1.367054] _OSC request data:1 8 1f [ 1.367061] ACPI: PCI Root Bridge [PCI0] (domain 0000 [bus 00-fe]) [ 1.369268] pci_root PNP0A08:00: host bridge window [io 0x0000-0x0cf7] [ 1.369273] pci_root PNP0A08:00: host bridge window [io 0x0d00-0xffff] [ 1.369276] pci_root PNP0A08:00: host bridge window [mem 0x000a0000-0x000bffff] [ 1.369281] pci_root PNP0A08:00: host bridge window [mem 0xa0000000-0xfeafffff] [ 1.369379] pci 0000:00:01.0: PME# supported from D0 D3hot D3cold [ 1.369383] pci 0000:00:01.0: PME# disabled [ 1.369414] pci 0000:00:02.0: reg 10: [mem 0xc0000000-0xc03fffff 64bit] [ 1.369422] pci 0000:00:02.0: reg 18: [mem 0xb0000000-0xbfffffff 64bit pref] [ 1.369428] pci 0000:00:02.0: reg 20: [io 0x4050-0x4057] [ 1.369523] pci 0000:00:16.0: reg 10: [mem 0xc4506100-0xc450610f 64bit] [ 1.369579] pci 0000:00:16.0: PME# supported from D0 D3hot D3cold [ 1.369584] pci 0000:00:16.0: PME# disabled [ 1.369646] pci 0000:00:1a.0: reg 10: [mem 0xc4505c00-0xc4505fff] [ 1.369708] pci 0000:00:1a.0: PME# supported from D0 D3hot D3cold [ 1.369714] pci 0000:00:1a.0: PME# disabled [ 1.369754] pci 0000:00:1b.0: reg 10: [mem 0xc4500000-0xc4503fff 64bit] [ 1.369804] pci 0000:00:1b.0: PME# supported from D0 D3hot D3cold [ 1.369809] pci 0000:00:1b.0: PME# disabled [ 1.369890] pci 0000:00:1c.0: PME# supported from D0 D3hot D3cold [ 1.369895] pci 0000:00:1c.0: PME# disabled [ 1.369974] pci 0000:00:1c.1: PME# supported from D0 D3hot D3cold [ 1.369979] pci 0000:00:1c.1: PME# disabled [ 1.370040] pci 0000:00:1d.0: reg 10: [mem 0xc4505800-0xc4505bff] [ 1.370103] pci 0000:00:1d.0: PME# supported from D0 D3hot D3cold [ 1.370109] pci 0000:00:1d.0: PME# disabled [ 1.370319] pci 0000:00:1f.2: reg 10: [io 0x4048-0x404f] [ 1.370327] pci 0000:00:1f.2: reg 14: [io 0x405c-0x405f] [ 1.370335] pci 0000:00:1f.2: reg 18: [io 0x4040-0x4047] [ 1.370343] pci 0000:00:1f.2: reg 1c: [io 0x4058-0x405b] [ 1.370351] pci 0000:00:1f.2: reg 20: [io 0x4020-0x403f] [ 1.370359] pci 0000:00:1f.2: reg 24: [mem 0xc4505000-0xc45057ff] [ 1.370407] pci 0000:00:1f.2: PME# supported from D3hot [ 1.370412] pci 0000:00:1f.2: PME# disabled [ 1.370449] pci 0000:00:1f.3: reg 10: [mem 0xc4506000-0xc45060ff 64bit] [ 1.370465] pci 0000:00:1f.3: reg 20: [io 0x4000-0x401f] [ 1.370524] pci 0000:00:1f.6: reg 10: [mem 0xc4504000-0xc4504fff 64bit] [ 1.370648] pci 0000:01:00.0: reg 10: [mem 0xa0000000-0xafffffff 64bit pref] [ 1.370662] pci 0000:01:00.0: reg 18: [mem 0xc4400000-0xc441ffff 64bit] [ 1.370670] pci 0000:01:00.0: reg 20: [io 0x3000-0x30ff] [ 1.370684] pci 0000:01:00.0: reg 30: [mem 0xfffe0000-0xffffffff pref] [ 1.370715] pci 0000:01:00.0: supports D1 D2 [ 1.370761] pci 0000:01:00.1: reg 10: [mem 0xc4420000-0xc4423fff 64bit] [ 1.370819] pci 0000:01:00.1: supports D1 D2 [ 1.370847] pci 0000:00:01.0: PCI bridge to [bus 01-01] [ 1.370851] pci 0000:00:01.0: bridge window [io 0x3000-0x3fff] [ 1.370855] pci 0000:00:01.0: bridge window [mem 0xc4400000-0xc44fffff] [ 1.370861] pci 0000:00:01.0: bridge window [mem 0xa0000000-0xafffffff 64bit pref] [ 1.370943] pci 0000:02:00.0: reg 10: [io 0x2000-0x20ff] [ 1.370966] pci 0000:02:00.0: reg 18: [mem 0xc0404000-0xc0404fff 64bit pref] [ 1.370983] pci 0000:02:00.0: reg 20: [mem 0xc0400000-0xc0403fff 64bit pref] [ 1.371035] pci 0000:02:00.0: supports D1 D2 [ 1.371038] pci 0000:02:00.0: PME# supported from D0 D1 D2 D3hot D3cold [ 1.371044] pci 0000:02:00.0: PME# disabled [ 1.371077] pci 0000:00:1c.0: PCI bridge to [bus 02-02] [ 1.371082] pci 0000:00:1c.0: bridge window [io 0x2000-0x2fff] [ 1.371087] pci 0000:00:1c.0: bridge window [mem 0xc3400000-0xc43fffff] [ 1.371095] pci 0000:00:1c.0: bridge window [mem 0xc0400000-0xc13fffff 64bit pref] [ 1.371198] pci 0000:03:00.0: reg 10: [mem 0xc2400000-0xc2401fff 64bit] [ 1.371301] pci 0000:03:00.0: PME# supported from D0 D3hot D3cold [ 1.371308] pci 0000:03:00.0: PME# disabled [ 1.371341] pci 0000:00:1c.1: PCI bridge to [bus 03-03] [ 1.371346] pci 0000:00:1c.1: bridge window [io 0x1000-0x1fff] [ 1.371351] pci 0000:00:1c.1: bridge window [mem 0xc2400000-0xc33fffff] [ 1.371358] pci 0000:00:1c.1: bridge window [mem 0xc1400000-0xc23fffff 64bit pref] [ 1.371439] pci 0000:00:1e.0: PCI bridge to [bus 04-04] (subtractive decode) [ 1.371445] pci 0000:00:1e.0: bridge window [io 0xf000-0x0000] (disabled) [ 1.371451] pci 0000:00:1e.0: bridge window [mem 0xfff00000-0x000fffff] (disabled) [ 1.371459] pci 0000:00:1e.0: bridge window [mem 0xfff00000-0x000fffff pref] (disabled) [ 1.371462] pci 0000:00:1e.0: bridge window [io 0x0000-0x0cf7] (subtractive decode) [ 1.371466] pci 0000:00:1e.0: bridge window [io 0x0d00-0xffff] (subtractive decode) [ 1.371469] pci 0000:00:1e.0: bridge window [mem 0x000a0000-0x000bffff] (subtractive decode) [ 1.371472] pci 0000:00:1e.0: bridge window [mem 0xa0000000-0xfeafffff] (subtractive decode) [ 1.371507] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0._PRT] [ 1.371910] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.P0P2._PRT] [ 1.372122] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.P0P1._PRT] [ 1.372494] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.RP01._PRT] [ 1.372729] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.RP02._PRT] [ 1.373312] \_SB_.PCI0:_OSC invalid UUID [ 1.373314] _OSC request data:1 19 1f [ 1.435825] ACPI: PCI Root Bridge [CPBG] (domain 0000 [bus ff]) [ 1.436754] ACPI: PCI Interrupt Link [LNKA] (IRQs 1 3 4 *5 6 7 10 12 14 15) [ 1.437036] ACPI: PCI Interrupt Link [LNKB] (IRQs 1 3 4 5 6 7 11 12 14 15) *10 [ 1.437315] ACPI: PCI Interrupt Link [LNKC] (IRQs 1 3 4 5 6 7 *10 12 14 15) [ 1.437591] ACPI: PCI Interrupt Link [LNKD] (IRQs 1 3 4 *5 6 7 11 12 14 15) [ 1.437867] ACPI: PCI Interrupt Link [LNKE] (IRQs 1 3 4 5 6 7 10 12 14 15) *11 [ 1.438144] ACPI: PCI Interrupt Link [LNKF] (IRQs 1 3 4 5 6 7 11 12 14 15) *0, disabled. [ 1.438422] ACPI: PCI Interrupt Link [LNKG] (IRQs 1 3 4 5 6 7 10 12 14 15) *11 [ 1.438700] ACPI: PCI Interrupt Link [LNKH] (IRQs 1 3 4 5 6 7 11 12 14 15) *0, disabled. [ 1.438831] HEST: Table is not found! [ 1.438928] vgaarb: device added: PCI:0000:00:02.0,decodes=io+mem,owns=io+mem,locks=none [ 1.438941] vgaarb: device added: PCI:0000:01:00.0,decodes=io+mem,owns=none,locks=none [ 1.438949] vgaarb: loaded [ 1.439130] SCSI subsystem initialized [ 1.439274] libata version 3.00 loaded. [ 1.439364] usbcore: registered new interface driver usbfs [ 1.439378] usbcore: registered new interface driver hub [ 1.439410] usbcore: registered new device driver usb [ 1.439886] ACPI: WMI: Mapper loaded [ 1.439889] PCI: Using ACPI for IRQ routing [ 1.439893] PCI: pci_cache_line_size set to 64 bytes [ 1.439997] reserve RAM buffer: 000000000009d000 - 000000000009ffff [ 1.440000] reserve RAM buffer: 000000009b63f000 - 000000009bffffff [ 1.440004] reserve RAM buffer: 000000009b800000 - 000000009bffffff [ 1.440129] NetLabel: Initializing [ 1.440132] NetLabel: domain hash size = 128 [ 1.440133] NetLabel: protocols = UNLABELED CIPSOv4 [ 1.440150] NetLabel: unlabeled traffic allowed by default [ 1.440198] hpet0: at MMIO 0xfed00000, IRQs 2, 8, 0, 0, 0, 0, 0, 0 [ 1.440206] hpet0: 8 comparators, 64-bit 14.318180 MHz counter [ 1.442231] Switching to clocksource tsc [ 1.453454] AppArmor: AppArmor Filesystem Enabled [ 1.453480] pnp: PnP ACPI init [ 1.453519] ACPI: bus type pnp registered [ 1.455814] pnp 00:05: disabling [io 0x164e-0x164f] because it overlaps 0000:00:1c.1 BAR 13 [io 0x1000-0x1fff] [ 1.456345] alloc irq_desc for 23 on node 0 [ 1.456348] alloc kstat_irqs on node 0 [ 1.459097] pnp: PnP ACPI: found 12 devices [ 1.459100] ACPI: ACPI bus type pnp unregistered [ 1.459117] system 00:05: [io 0x0680-0x069f] has been reserved [ 1.459121] system 00:05: [io 0x0800-0x080f] has been reserved [ 1.459124] system 00:05: [io 0x0810-0x0813] has been reserved [ 1.459127] system 00:05: [io 0xffff] has been reserved [ 1.459135] system 00:05: [io 0x0400-0x047f] has been reserved [ 1.459139] system 00:05: [io 0x0500-0x0501] has been reserved [ 1.459142] system 00:05: [io 0x0700-0x077f] has been reserved [ 1.459150] system 00:0a: [mem 0xfed1c000-0xfed1ffff] has been reserved [ 1.459154] system 00:0a: [mem 0xfed10000-0xfed13fff] has been reserved [ 1.459157] system 00:0a: [mem 0xfed18000-0xfed18fff] has been reserved [ 1.459160] system 00:0a: [mem 0xfed19000-0xfed19fff] has been reserved [ 1.459164] system 00:0a: [mem 0xe0000000-0xefffffff] has been reserved [ 1.459168] system 00:0a: [mem 0xfed20000-0xfed3ffff] has been reserved [ 1.459171] system 00:0a: [mem 0xfed45000-0xfed8ffff] has been reserved [ 1.459175] system 00:0a: [mem 0xff000000-0xffffffff] could not be reserved [ 1.459178] system 00:0a: [mem 0xfee00000-0xfeefffff] could not be reserved [ 1.459182] system 00:0a: [mem 0xc4600000-0xc4600fff] has been reserved [ 1.465365] pci 0000:01:00.0: no compatible bridge window for [mem 0xfffe0000-0xffffffff pref] [ 1.465415] pci 0000:01:00.0: BAR 6: assigned [mem 0xc4440000-0xc445ffff pref] [ 1.465419] pci 0000:00:01.0: PCI bridge to [bus 01-01] [ 1.465423] pci 0000:00:01.0: bridge window [io 0x3000-0x3fff] [ 1.465428] pci 0000:00:01.0: bridge window [mem 0xc4400000-0xc44fffff] [ 1.465432] pci 0000:00:01.0: bridge window [mem 0xa0000000-0xafffffff 64bit pref] [ 1.465439] pci 0000:00:1c.0: PCI bridge to [bus 02-02] [ 1.465443] pci 0000:00:1c.0: bridge window [io 0x2000-0x2fff] [ 1.465449] pci 0000:00:1c.0: bridge window [mem 0xc3400000-0xc43fffff] [ 1.465454] pci 0000:00:1c.0: bridge window [mem 0xc0400000-0xc13fffff 64bit pref] [ 1.465462] pci 0000:00:1c.1: PCI bridge to [bus 03-03] [ 1.465466] pci 0000:00:1c.1: bridge window [io 0x1000-0x1fff] [ 1.465472] pci 0000:00:1c.1: bridge window [mem 0xc2400000-0xc33fffff] [ 1.465477] pci 0000:00:1c.1: bridge window [mem 0xc1400000-0xc23fffff 64bit pref] [ 1.465485] pci 0000:00:1e.0: PCI bridge to [bus 04-04] [ 1.465487] pci 0000:00:1e.0: bridge window [io disabled] [ 1.465493] pci 0000:00:1e.0: bridge window [mem disabled] [ 1.465498] pci 0000:00:1e.0: bridge window [mem pref disabled] [ 1.465514] alloc irq_desc for 16 on node -1 [ 1.465516] alloc kstat_irqs on node -1 [ 1.465523] pci 0000:00:01.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16 [ 1.465529] pci 0000:00:01.0: setting latency timer to 64 [ 1.465540] alloc irq_desc for 17 on node -1 [ 1.465542] alloc kstat_irqs on node -1 [ 1.465547] pci 0000:00:1c.0: PCI INT A -> GSI 17 (level, low) -> IRQ 17 [ 1.465552] pci 0000:00:1c.0: setting latency timer to 64 [ 1.465563] pci 0000:00:1c.1: PCI INT B -> GSI 16 (level, low) -> IRQ 16 [ 1.465568] pci 0000:00:1c.1: setting latency timer to 64 [ 1.465577] pci 0000:00:1e.0: setting latency timer to 64 [ 1.465583] pci_bus 0000:00: resource 4 [io 0x0000-0x0cf7] [ 1.465586] pci_bus 0000:00: resource 5 [io 0x0d00-0xffff] [ 1.465588] pci_bus 0000:00: resource 6 [mem 0x000a0000-0x000bffff] [ 1.465591] pci_bus 0000:00: resource 7 [mem 0xa0000000-0xfeafffff] [ 1.465595] pci_bus 0000:01: resource 0 [io 0x3000-0x3fff] [ 1.465597] pci_bus 0000:01: resource 1 [mem 0xc4400000-0xc44fffff] [ 1.465600] pci_bus 0000:01: resource 2 [mem 0xa0000000-0xafffffff 64bit pref] [ 1.465603] pci_bus 0000:02: resource 0 [io 0x2000-0x2fff] [ 1.465606] pci_bus 0000:02: resource 1 [mem 0xc3400000-0xc43fffff] [ 1.465609] pci_bus 0000:02: resource 2 [mem 0xc0400000-0xc13fffff 64bit pref] [ 1.465612] pci_bus 0000:03: resource 0 [io 0x1000-0x1fff] [ 1.465615] pci_bus 0000:03: resource 1 [mem 0xc2400000-0xc33fffff] [ 1.465618] pci_bus 0000:03: resource 2 [mem 0xc1400000-0xc23fffff 64bit pref] [ 1.465621] pci_bus 0000:04: resource 4 [io 0x0000-0x0cf7] [ 1.465624] pci_bus 0000:04: resource 5 [io 0x0d00-0xffff] [ 1.465627] pci_bus 0000:04: resource 6 [mem 0x000a0000-0x000bffff] [ 1.465629] pci_bus 0000:04: resource 7 [mem 0xa0000000-0xfeafffff] [ 1.465678] NET: Registered protocol family 2 [ 1.465891] IP route cache hash table entries: 131072 (order: 8, 1048576 bytes) [ 1.467466] TCP established hash table entries: 524288 (order: 11, 8388608 bytes) [ 1.469871] TCP bind hash table entries: 65536 (order: 8, 1048576 bytes) [ 1.470154] TCP: Hash tables configured (established 524288 bind 65536) [ 1.470157] TCP reno registered [ 1.470171] UDP hash table entries: 2048 (order: 4, 65536 bytes) [ 1.470206] UDP-Lite hash table entries: 2048 (order: 4, 65536 bytes) [ 1.470361] NET: Registered protocol family 1 [ 1.470387] pci 0000:00:02.0: Boot video device [ 1.502324] PCI: CLS 64 bytes, default 64 [ 1.502328] PCI-DMA: Using software bounce buffering for IO (SWIOTLB) [ 1.502332] Placing 64MB software IO TLB between ffff880001fde000 - ffff880005fde000 [ 1.502335] software IO TLB at phys 0x1fde000 - 0x5fde000 [ 1.502380] Simple Boot Flag at 0x44 set to 0x1 [ 1.502760] Scanning for low memory corruption every 60 seconds [ 1.502942] audit: initializing netlink socket (disabled) [ 1.502955] type=2000 audit(1294175074.360:1): initialized [ 1.524568] HugeTLB registered 2 MB page size, pre-allocated 0 pages [ 1.526540] VFS: Disk quotas dquot_6.5.2 [ 1.526620] Dquot-cache hash table entries: 512 (order 0, 4096 bytes) [ 1.527389] fuse init (API version 7.14) [ 1.527503] msgmni has been set to 7518 [ 1.530410] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 253) [ 1.530414] io scheduler noop registered [ 1.530416] io scheduler deadline registered [ 1.530468] io scheduler cfq registered (default) [ 1.530601] pcieport 0000:00:01.0: setting latency timer to 64 [ 1.530632] alloc irq_desc for 40 on node -1 [ 1.530635] alloc kstat_irqs on node -1 [ 1.530648] pcieport 0000:00:01.0: irq 40 for MSI/MSI-X [ 1.530721] pcieport 0000:00:1c.0: setting latency timer to 64 [ 1.530756] alloc irq_desc for 41 on node -1 [ 1.530758] alloc kstat_irqs on node -1 [ 1.530767] pcieport 0000:00:1c.0: irq 41 for MSI/MSI-X [ 1.530848] pcieport 0000:00:1c.1: setting latency timer to 64 [ 1.530883] alloc irq_desc for 42 on node -1 [ 1.530885] alloc kstat_irqs on node -1 [ 1.530893] pcieport 0000:00:1c.1: irq 42 for MSI/MSI-X [ 1.530992] pci_hotplug: PCI Hot Plug PCI Core version: 0.5 [ 1.531281] \_SB_.PCI0:_OSC invalid UUID [ 1.531283] _OSC request data:1 0 1f [ 1.531538] \_SB_.PCI0:_OSC invalid UUID [ 1.531540] _OSC request data:1 0 1f [ 1.531810] \_SB_.PCI0:_OSC invalid UUID [ 1.531812] _OSC request data:1 0 1f [ 1.532060] \_SB_.PCI0:_OSC invalid UUID [ 1.532063] _OSC request data:1 0 1f [ 1.532120] pciehp: PCI Express Hot Plug Controller Driver version: 0.4 [ 1.532216] intel_idle: MWAIT substates: 0x1120 [ 1.532219] intel_idle: v0.4 model 0x25 [ 1.532221] intel_idle: lapic_timer_reliable_states 0xffffffff [ 1.534434] ACPI: AC Adapter [AC] (on-line) [ 1.534551] input: Lid Switch as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0D:00/input/input0 [ 1.534709] ACPI: Lid Switch [LID0] [ 1.534760] input: Power Button as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0C:00/input/input1 [ 1.534767] ACPI: Power Button [PWRB] [ 1.534818] input: Power Button as /devices/LNXSYSTM:00/LNXPWRBN:00/input/input2 [ 1.534822] ACPI: Power Button [PWRF] [ 1.535202] ACPI: Fan [FAN0] (on) [ 1.536847] ACPI: acpi_idle yielding to intel_idle [ 1.555150] thermal LNXTHERM:01: registered as thermal_zone0 [ 1.555159] ACPI: Thermal Zone [TZ00] (45 C) [ 1.556232] thermal LNXTHERM:02: registered as thermal_zone1 [ 1.556241] ACPI: Thermal Zone [TZ01] (31 C) [ 1.557467] thermal LNXTHERM:03: registered as thermal_zone2 [ 1.557479] ACPI: Thermal Zone [TZ02] (47 C) [ 1.557625] ERST: Table is not found! [ 1.558391] Linux agpgart interface v0.103 [ 1.558427] Serial: 8250/16550 driver, 4 ports, IRQ sharing enabled [ 1.560465] brd: module loaded [ 1.561210] loop: module loaded [ 1.561900] Fixed MDIO Bus: probed [ 1.561937] PPP generic driver version 2.4.2 [ 1.561975] tun: Universal TUN/TAP device driver, 1.6 [ 1.561977] tun: (C) 1999-2004 Max Krasnyansky [ 1.562061] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver [ 1.562091] ehci_hcd 0000:00:1a.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16 [ 1.562150] ehci_hcd 0000:00:1a.0: setting latency timer to 64 [ 1.562155] ehci_hcd 0000:00:1a.0: EHCI Host Controller [ 1.562208] ehci_hcd 0000:00:1a.0: new USB bus registered, assigned bus number 1 [ 1.562246] ehci_hcd 0000:00:1a.0: debug port 2 [ 1.566177] ehci_hcd 0000:00:1a.0: cache line size of 64 is not supported [ 1.566201] ehci_hcd 0000:00:1a.0: irq 16, io mem 0xc4505c00 [ 1.581660] ACPI: Battery Slot [BAT0] (battery present) [ 1.583443] ehci_hcd 0000:00:1a.0: USB 2.0 started, EHCI 1.00 [ 1.583613] hub 1-0:1.0: USB hub found [ 1.583619] hub 1-0:1.0: 3 ports detected [ 1.583700] alloc irq_desc for 20 on node -1 [ 1.583702] alloc kstat_irqs on node -1 [ 1.583710] ehci_hcd 0000:00:1d.0: PCI INT A -> GSI 20 (level, low) -> IRQ 20 [ 1.583728] ehci_hcd 0000:00:1d.0: setting latency timer to 64 [ 1.583732] ehci_hcd 0000:00:1d.0: EHCI Host Controller [ 1.583772] ehci_hcd 0000:00:1d.0: new USB bus registered, assigned bus number 2 [ 1.583802] ehci_hcd 0000:00:1d.0: debug port 2 [ 1.587738] ehci_hcd 0000:00:1d.0: cache line size of 64 is not supported [ 1.587755] ehci_hcd 0000:00:1d.0: irq 20, io mem 0xc4505800 [ 1.603428] ehci_hcd 0000:00:1d.0: USB 2.0 started, EHCI 1.00 [ 1.603578] hub 2-0:1.0: USB hub found [ 1.603583] hub 2-0:1.0: 3 ports detected [ 1.603652] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver [ 1.603667] uhci_hcd: USB Universal Host Controller Interface driver [ 1.603798] PNP: PS/2 Controller [PNP0303:PS2K,PNP0f13:PS2M] at 0x60,0x64 irq 1,12 [ 1.607319] i8042.c: Detected active multiplexing controller, rev 1.1. [ 1.610870] serio: i8042 KBD port at 0x60,0x64 irq 1 [ 1.610879] serio: i8042 AUX0 port at 0x60,0x64 irq 12 [ 1.610884] serio: i8042 AUX1 port at 0x60,0x64 irq 12 [ 1.610889] serio: i8042 AUX2 port at 0x60,0x64 irq 12 [ 1.610894] serio: i8042 AUX3 port at 0x60,0x64 irq 12 [ 1.610995] mice: PS/2 mouse device common for all mice [ 1.611170] rtc_cmos 00:06: RTC can wake from S4 [ 1.611217] rtc_cmos 00:06: rtc core: registered rtc_cmos as rtc0 [ 1.611249] rtc0: alarms up to one year, y3k, 242 bytes nvram, hpet irqs [ 1.611371] device-mapper: uevent: version 1.0.3 [ 1.611493] device-mapper: ioctl: 4.17.0-ioctl (2010-03-05) initialised: dm-devel@redhat.com [ 1.611615] device-mapper: multipath: version 1.1.1 loaded [ 1.611620] device-mapper: multipath round-robin: version 1.0.0 loaded [ 1.612044] cpuidle: using governor ladder [ 1.612240] cpuidle: using governor menu [ 1.612591] TCP cubic registered [ 1.612749] NET: Registered protocol family 10 [ 1.613194] lo: Disabled Privacy Extensions [ 1.613464] NET: Registered protocol family 17 [ 1.616018] ACPI Error (psargs-0359): [NPSS] Namespace lookup failure, AE_NOT_FOUND [ 1.616034] ACPI Error (psparse-0537): Method parse/execution failed [\_PR_.CPU0.PPC_] (Node ffff88015334da00), AE_NOT_FOUND [ 1.616243] ACPI Error (psparse-0537): Method parse/execution failed [\_PR_.CPU0._PPC] (Node ffff88015334d920), AE_NOT_FOUND [ 1.617854] ACPI Error (psargs-0359): [NPSS] Namespace lookup failure, AE_NOT_FOUND [ 1.617868] ACPI Error (psparse-0537): Method parse/execution failed [\_PR_.CPU0.PPC_] (Node ffff88015334da00), AE_NOT_FOUND [ 1.618075] ACPI Error (psparse-0537): Method parse/execution failed [\_PR_.CPU0._PPC] (Node ffff88015334d920), AE_NOT_FOUND [ 1.618281] ACPI Error (psparse-0537): Method parse/execution failed [\_PR_.CPU1._PPC] (Node ffff88015334d9e0), AE_NOT_FOUND [ 1.619737] ACPI Error (psargs-0359): [NPSS] Namespace lookup failure, AE_NOT_FOUND [ 1.619751] ACPI Error (psparse-0537): Method parse/execution failed [\_PR_.CPU0.PPC_] (Node ffff88015334da00), AE_NOT_FOUND [ 1.619958] ACPI Error (psparse-0537): Method parse/execution failed [\_PR_.CPU0._PPC] (Node ffff88015334d920), AE_NOT_FOUND [ 1.620164] ACPI Error (psparse-0537): Method parse/execution failed [\_PR_.CPU2._PPC] (Node ffff88015334dbc0), AE_NOT_FOUND [ 1.620909] ACPI Error (psargs-0359): [NPSS] Namespace lookup failure, AE_NOT_FOUND [ 1.620916] ACPI Error (psparse-0537): Method parse/execution failed [\_PR_.CPU0.PPC_] (Node ffff88015334da00), AE_NOT_FOUND [ 1.621002] ACPI Error (psparse-0537): Method parse/execution failed [\_PR_.CPU0._PPC] (Node ffff88015334d920), AE_NOT_FOUND [ 1.621081] ACPI Error (psparse-0537): Method parse/execution failed [\_PR_.CPU3._PPC] (Node ffff88015334db40), AE_NOT_FOUND [ 1.621386] PM: Resume from disk failed. [ 1.621399] registered taskstats version 1 [ 1.621721] Magic number: 11:10:95 [ 1.621897] rtc_cmos 00:06: setting system clock to 2011-01-04 21:04:35 UTC (1294175075) [ 1.621901] BIOS EDD facility v0.16 2004-Jun-25, 0 devices found [ 1.621903] EDD information not available. [ 1.622005] Freeing unused kernel memory: 908k freed [ 1.622226] Write protecting the kernel read-only data: 10240k [ 1.622564] Freeing unused kernel memory: 412k freed [ 1.622901] Freeing unused kernel memory: 1644k freed [ 1.644406] udev[98]: starting version 163 [ 1.653848] input: AT Translated Set 2 keyboard as /devices/platform/i8042/serio0/input/input3 [ 1.771855] r8169 Gigabit Ethernet driver 2.3LK-NAPI loaded [ 1.771895] r8169 0000:02:00.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16 [ 1.773598] r8169 0000:02:00.0: setting latency timer to 64 [ 1.773663] alloc irq_desc for 43 on node -1 [ 1.773668] alloc kstat_irqs on node -1 [ 1.773693] r8169 0000:02:00.0: irq 43 for MSI/MSI-X [ 1.774739] r8169 0000:02:00.0: eth0: RTL8168d/8111d at 0xffffc900110dc000, 1c:c1:de:8f:3e:32, XID 083000c0 IRQ 43 [ 1.790588] ahci 0000:00:1f.2: version 3.0 [ 1.790618] alloc irq_desc for 19 on node -1 [ 1.790623] alloc kstat_irqs on node -1 [ 1.790637] ahci 0000:00:1f.2: PCI INT B -> GSI 19 (level, low) -> IRQ 19 [ 1.790722] alloc irq_desc for 44 on node -1 [ 1.790726] alloc kstat_irqs on node -1 [ 1.790743] ahci 0000:00:1f.2: irq 44 for MSI/MSI-X [ 1.790823] ahci 0000:00:1f.2: AHCI 0001.0300 32 slots 4 ports 3 Gbps 0x1 impl SATA mode [ 1.790830] ahci 0000:00:1f.2: flags: 64bit ncq sntf ilck pm led clo pio slum part ems apst [ 1.790839] ahci 0000:00:1f.2: setting latency timer to 64 [ 1.797321] scsi0 : ahci [ 1.797553] scsi1 : ahci [ 1.797681] scsi2 : ahci [ 1.797851] scsi3 : ahci [ 1.798183] ata1: SATA max UDMA/133 abar m2048@0xc4505000 port 0xc4505100 irq 44 [ 1.798188] ata2: DUMMY [ 1.798190] ata3: DUMMY [ 1.798193] ata4: DUMMY [ 1.903357] usb 1-1: new high speed USB device using ehci_hcd and address 2 [ 2.052918] hub 1-1:1.0: USB hub found [ 2.053100] hub 1-1:1.0: 6 ports detected [ 2.141963] ata1: SATA link up 3.0 Gbps (SStatus 123 SControl 300) [ 2.142868] ata1.00: ATA-8: Hitachi HTS725050A9A364, PC4OC72E, max UDMA/100 [ 2.142874] ata1.00: 976773168 sectors, multi 16: LBA48 NCQ (depth 31/32), AA [ 2.144086] ata1.00: configured for UDMA/100 [ 2.171947] usb 2-1: new high speed USB device using ehci_hcd and address 2 [ 2.172131] scsi 0:0:0:0: Direct-Access ATA Hitachi HTS72505 PC4O PQ: 0 ANSI: 5 [ 2.172374] sd 0:0:0:0: Attached scsi generic sg0 type 0 [ 2.172471] sd 0:0:0:0: [sda] 976773168 512-byte logical blocks: (500 GB/465 GiB) [ 2.172553] sd 0:0:0:0: [sda] Write Protect is off [ 2.172557] sd 0:0:0:0: [sda] Mode Sense: 00 3a 00 00 [ 2.172582] sd 0:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA [ 2.172733] sda: sda1 sda2 sda3 sda4 [ 2.214895] sd 0:0:0:0: [sda] Attached SCSI disk [ 2.332851] hub 2-1:1.0: USB hub found [ 2.332913] hub 2-1:1.0: 8 ports detected [ 2.411893] usb 1-1.3: new full speed USB device using ehci_hcd and address 3 [ 2.621772] usb 1-1.4: new full speed USB device using ehci_hcd and address 4 [ 2.627249] EXT4-fs (sda3): mounted filesystem with ordered data mode. Opts: (null) [ 2.832376] usb 2-1.5: new full speed USB device using ehci_hcd and address 3 [ 3.023477] usb 2-1.6: new full speed USB device using ehci_hcd and address 4 [ 3.201656] usb 2-1.6: new high speed USB device using ehci_hcd and address 5 [ 11.718445] Adding 4194300k swap on /dev/sda2. Priority:-1 extents:1 across:4194300k [ 11.735178] udev[491]: starting version 163 [ 12.078602] type=1400 audit(1294203885.955:2): apparmor="STATUS" operation="profile_load" name="/sbin/dhclient3" pid=724 comm="apparmor_parser" [ 12.079531] type=1400 audit(1294203885.955:3): apparmor="STATUS" operation="profile_load" name="/usr/lib/NetworkManager/nm-dhcp-client.action" pid=724 comm="apparmor_parser" [ 12.080014] type=1400 audit(1294203885.955:4): apparmor="STATUS" operation="profile_load" name="/usr/lib/connman/scripts/dhclient-script" pid=724 comm="apparmor_parser" [ 12.086115] lp: driver loaded but no devices found [ 12.266073] Bluetooth: Core ver 2.15 [ 12.266173] NET: Registered protocol family 31 [ 12.266176] Bluetooth: HCI device and connection manager initialized [ 12.266181] Bluetooth: HCI socket layer initialized [ 12.290899] cfg80211: Calling CRDA to update world regulatory domain [ 12.297563] Bluetooth: Generic Bluetooth USB driver ver 0.6 [ 12.297684] cfg80211: World regulatory domain updated: [ 12.297688] (start_freq - end_freq @ bandwidth), (max_antenna_gain, max_eirp) [ 12.297695] (2402000 KHz - 2472000 KHz @ 40000 KHz), (300 mBi, 2000 mBm) [ 12.297700] (2457000 KHz - 2482000 KHz @ 20000 KHz), (300 mBi, 2000 mBm) [ 12.297705] (2474000 KHz - 2494000 KHz @ 20000 KHz), (300 mBi, 2000 mBm) [ 12.297710] (5170000 KHz - 5250000 KHz @ 40000 KHz), (300 mBi, 2000 mBm) [ 12.297714] (5735000 KHz - 5835000 KHz @ 40000 KHz), (300 mBi, 2000 mBm) [ 12.298709] usbcore: registered new interface driver btusb [ 12.299531] input: Wacom ISDv4 E3 Finger as /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.5/2-1.5:1.0/input/input4 [ 12.304798] input: Wacom ISDv4 E3 Pen as /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.5/2-1.5:1.1/input/input5 [ 12.305011] usbcore: registered new interface driver wacom [ 12.305015] wacom: v1.52:USB Wacom tablet driver [ 12.320830] agpgart-intel 0000:00:00.0: Intel HD Graphics Chipset [ 12.322118] agpgart-intel 0000:00:00.0: detected 32764K stolen memory [ 12.415662] agpgart-intel 0000:00:00.0: AGP aperture is 256M @ 0xb0000000 [ 12.456807] lis3lv02d: laptop model unknown, using default axes configuration [ 12.457759] lis3lv02d: 8 bits sensor found [ 12.498205] input: ST LIS3LV02DL Accelerometer as /devices/platform/lis3lv02d/input/input6 [ 12.498391] Registered led device: hp::hddprotect [ 12.498429] lis3lv02d driver loaded. [ 12.552273] intel ips 0000:00:1f.6: Warning: CPU TDP doesn't match expected value (found 11, expected 18) [ 12.552302] alloc irq_desc for 21 on node -1 [ 12.552305] alloc kstat_irqs on node -1 [ 12.552316] intel ips 0000:00:1f.6: PCI INT A -> GSI 21 (level, low) -> IRQ 21 [ 12.552517] intel ips 0000:00:1f.6: failed to get i915 symbols, graphics turbo disabled [ 12.552706] intel ips 0000:00:1f.6: IPS driver initialized, MCP temp limit 65535 [ 12.587086] Linux video capture interface: v2.00 [ 12.714246] usbcore: registered new interface driver hiddev [ 12.714364] usbcore: registered new interface driver usbhid [ 12.714369] usbhid: USB HID core driver [ 12.746985] [drm] Initialized drm 1.1.0 20060810 [ 12.754275] uvcvideo: Found UVC 1.00 device HP Webcam (10f1:1a16) [ 12.762138] input: HP Webcam as /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.6/2-1.6:1.0/input/input7 [ 12.762226] usbcore: registered new interface driver uvcvideo [ 12.762230] USB Video Class driver (v0.1.0) [ 12.946977] input: HP WMI hotkeys as /devices/virtual/input/input8 [ 12.977629] i915 0000:00:02.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16 [ 12.977638] i915 0000:00:02.0: setting latency timer to 64 [ 13.000999] iwlagn: Intel(R) Wireless WiFi Link AGN driver for Linux, in-tree: [ 13.001005] iwlagn: Copyright(c) 2003-2010 Intel Corporation [ 13.001099] iwlagn 0000:03:00.0: PCI INT A -> GSI 17 (level, low) -> IRQ 17 [ 13.001110] iwlagn 0000:03:00.0: setting latency timer to 64 [ 13.001212] iwlagn 0000:03:00.0: Detected Intel(R) Centrino(R) Wireless-N 1000 BGN, REV=0x6C [ 13.019887] iwlagn 0000:03:00.0: Tunable channels: 13 802.11bg, 0 802.11a channels [ 13.019983] alloc irq_desc for 45 on node -1 [ 13.019987] alloc kstat_irqs on node -1 [ 13.020033] iwlagn 0000:03:00.0: irq 45 for MSI/MSI-X [ 13.062540] mtrr: no more MTRRs available [ 13.062544] [drm] MTRR allocation failed. Graphics performance may suffer. [ 13.062688] alloc irq_desc for 46 on node -1 [ 13.062694] alloc kstat_irqs on node -1 [ 13.062716] i915 0000:00:02.0: irq 46 for MSI/MSI-X [ 13.062737] [drm] set up 31M of stolen space [ 13.066726] iwlagn 0000:03:00.0: loaded firmware version 128.50.3.1 build 13488 [ 13.093167] input: PS/2 Synaptics TouchPad as /devices/platform/i8042/serio4/input/input9 [ 13.174463] [drm] radeon defaulting to kernel modesetting. [ 13.174468] [drm] radeon kernel modesetting enabled. [ 13.174513] VGA switcheroo: detected switching method \_SB_.PCI0.GFX0.ATPX handle [ 13.174573] radeon 0000:01:00.0: enabling device (0000 -> 0003) [ 13.174586] radeon 0000:01:00.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16 [ 13.174593] radeon 0000:01:00.0: setting latency timer to 64 [ 13.176167] vgaarb: device changed decodes: PCI:0000:00:02.0,olddecodes=io+mem,decodes=none:owns=io+mem [ 13.176176] vgaarb: transferring owner from PCI:0000:00:02.0 to PCI:0000:01:00.0 [ 13.176414] [drm] initializing kernel modesetting (CEDAR 0x1002:0x68E0). [ 13.176665] [drm] register mmio base: 0xC4400000 [ 13.176668] [drm] register mmio size: 131072 [ 13.176671] vga_switcheroo: enabled [ 13.176899] radeon atpx: version is 1 [ 13.219726] phy0: Selected rate control algorithm 'iwl-agn-rs' [ 13.301916] ATOM BIOS: HP [ 13.301943] [drm] Clocks initialized ! [ 13.301965] radeon 0000:01:00.0: limiting VRAM [ 13.301969] radeon 0000:01:00.0: VRAM: 3584M 0x00000000 - 0xDFFFFFFF (3584M used) [ 13.301973] radeon 0000:01:00.0: GTT: 512M 0xE0000000 - 0xFFFFFFFF [ 13.302004] mtrr: no more MTRRs available [ 13.302006] [drm] Detected VRAM RAM=3584M, BAR=256M [ 13.302009] [drm] RAM width 128bits DDR [ 13.302079] [TTM] Zone kernel: Available graphics memory: 1926146 kiB. [ 13.302082] [TTM] Initializing pool allocator. [ 13.302111] [drm] radeon: 3584M of VRAM memory ready [ 13.302113] [drm] radeon: 512M of GTT memory ready. [ 13.302185] alloc irq_desc for 47 on node -1 [ 13.302187] alloc kstat_irqs on node -1 [ 13.302206] radeon 0000:01:00.0: irq 47 for MSI/MSI-X [ 13.302215] radeon 0000:01:00.0: radeon: using MSI. [ 13.302233] radeon 0000:01:00.0: IH ring buffer overflow (0xFFFFFFFF, 0, 15) [ 13.302273] [drm] radeon: irq initialized. [ 13.302277] [drm] GART: num cpu pages 131072, num gpu pages 131072 [ 13.303071] [drm] Loading CEDAR Microcode [ 13.565501] Skipping EDID probe due to cached edid [ 14.021385] Console: switching to colour frame buffer device 160x50 [ 14.024816] fb0: inteldrmfb frame buffer device [ 14.024819] drm: registered panic notifier [ 14.024824] Slow work thread pool: Starting up [ 14.024944] Slow work thread pool: Ready [ 14.028299] [Firmware Bug]: ACPI: ACPI brightness control misses _BQC function [ 14.030443] acpi device:01: registered as cooling_device5 [ 14.032012] input: Video Bus as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/LNXVIDEO:00/input/input10 [ 14.032130] ACPI: Video Device [GFX0] (multi-head: yes rom: no post: no) [ 14.032195] [Firmware Bug]: ACPI(PEGP) defines _DOD but not _DOS [ 14.035737] acpi device:0a: registered as cooling_device6 [ 14.038003] input: Video Bus as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:08/LNXVIDEO:01/input/input11 [ 14.038091] ACPI: Video Device [PEGP] (multi-head: yes rom: no post: no) [ 14.038223] [drm] Initialized i915 1.6.0 20080730 for 0000:00:02.0 on minor 0 [ 14.072965] Skipping EDID probe due to cached edid [ 14.301663] radeon 0000:01:00.0: Wait for MC idle timedout ! [ 14.497906] radeon 0000:01:00.0: Wait for MC idle timedout ! [ 14.517338] BUG: unable to handle kernel paging request at ffffc90422101ffc [ 14.517348] IP: [] evergreen_cp_start+0x4c/0x570 [radeon] [ 14.517397] PGD 157c0c067 PUD 0 [ 14.517403] Oops: 0002 [#1] SMP [ 14.517407] last sysfs file: /sys/module/snd_rawmidi/initstate [ 14.517412] CPU 0 [ 14.517414] Modules linked in: snd_rawmidi snd_seq_midi_event snd_seq arc4 snd_timer radeon(+) snd_seq_device snd ttm iwlagn i915 iwlcore soundcore drm_kms_helper uvcvideo drm joydev usbhid mac80211 hid snd_page_alloc videodev v4l1_compat v4l2_compat_ioctl32 intel_ips hp_wmi hp_accel lis3lv02d input_polldev video intel_agp btusb wacom cfg80211 bluetooth i2c_algo_bit led_class psmouse output serio_raw lp parport ahci libahci r8169 mii [ 14.517468] [ 14.517475] Pid: 564, comm: modprobe Not tainted 2.6.35-24-generic #42-Ubuntu 1486/HP TouchSmart tm2 Notebook PC [ 14.517480] RIP: 0010:[] [] evergreen_cp_start+0x4c/0x570 [radeon] [ 14.517513] RSP: 0018:ffff880145bcbb48 EFLAGS: 00010286 [ 14.517515] RAX: 0000000000000000 RBX: 0000000000000000 RCX: ffff880145bcbfd8 [ 14.517518] RDX: ffffc90422101ffc RSI: 0000000000000007 RDI: 0000000000000010 [ 14.517521] RBP: ffff880145bcbb58 R08: ffff880145bca000 R09: 00000000ffffffff [ 14.517524] R10: 00000000ffffffff R11: 0000000000000001 R12: ffff880153604000 [ 14.517527] R13: 0000000000c10027 R14: 00000000fffffff4 R15: ffffffffa0408c80 [ 14.517531] FS: 00007f3dabda0700(0000) GS:ffff880001e00000(0000) knlGS:0000000000000000 [ 14.517534] CS: 0010 DS: 0000 ES: 0000 CR0: 000000008005003b [ 14.517537] CR2: ffffc90422101ffc CR3: 000000014eb1c000 CR4: 00000000000006f0 [ 14.517541] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 [ 14.517545] DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400 [ 14.517550] Process modprobe (pid: 564, threadinfo ffff880145bca000, task ffff880145b80000) [ 14.517553] Stack: [ 14.517556] ffff880153604000 0000000008000911 ffff880145bcbb78 ffffffffa03e174d [ 14.517562] <0> ffff880153604000 0000000000000000 ffff880145bcbb98 ffffffffa03e1a6f [ 14.517569] <0> ffff880153604000 0000000000000000 ffff880145bcbbc8 ffffffffa03e1d63 [ 14.517576] Call Trace: [ 14.517616] [] evergreen_cp_resume+0x2ad/0x520 [radeon] [ 14.517648] [] evergreen_startup+0xaf/0x140 [radeon] [ 14.517678] [] evergreen_init+0x263/0x4d0 [radeon] [ 14.517703] [] radeon_device_init+0x344/0x4a0 [radeon] [ 14.517729] [] radeon_driver_load_kms+0xa3/0x250 [radeon] [ 14.517745] [] drm_get_dev+0x15f/0x2c0 [drm] [ 14.517754] [] ? sysfs_add_one+0x2c/0x130 [ 14.517783] [] radeon_pci_probe+0x15/0x269 [radeon] [ 14.517789] [] local_pci_probe+0x17/0x20 [ 14.517794] [] __pci_device_probe+0xe9/0xf0 [ 14.517800] [] ? kobject_get+0x1a/0x30 [ 14.517806] [] ? get_device+0x19/0x20 [ 14.517811] [] pci_device_probe+0x3a/0x60 [ 14.517815] [] really_probe+0x68/0x190 [ 14.517820] [] driver_probe_device+0x45/0x70 [ 14.517824] [] __driver_attach+0x9b/0xa0 [ 14.517827] [] ? __driver_attach+0x0/0xa0 [ 14.517831] [] bus_for_each_dev+0x68/0x90 [ 14.517835] [] driver_attach+0x1e/0x20 [ 14.517839] [] bus_add_driver+0xde/0x280 [ 14.517843] [] driver_register+0x80/0x150 [ 14.517848] [] __pci_register_driver+0x56/0xd0 [ 14.517858] [] drm_init+0x111/0x120 [drm] [ 14.517865] [] ? vga_switcheroo_register_handler+0x3a/0x60 [ 14.517887] [] ? radeon_init+0x0/0xc6 [radeon] [ 14.517907] [] radeon_init+0xc4/0xc6 [radeon] [ 14.517915] [] do_one_initcall+0x3c/0x1a0 [ 14.517923] [] sys_init_module+0xbb/0x200 [ 14.517929] [] system_call_fastpath+0x16/0x1b [ 14.517931] Code: 00 00 41 8b bc 24 e4 09 00 00 85 ff 0f 8e ce 03 00 00 41 8b 84 24 d4 09 00 00 89 c2 83 c0 01 48 c1 e2 02 49 03 94 24 c8 09 00 00 02 00 44 05 c0 41 8b 94 24 e4 09 00 00 41 23 84 24 f4 09 00 [ 14.517971] RIP [] evergreen_cp_start+0x4c/0x570 [radeon] [ 14.518002] RSP [ 14.518004] CR2: ffffc90422101ffc [ 14.518007] ---[ end trace 747350649dc20cc7 ]--- [ 14.578903] EXT4-fs (sda3): re-mounted. Opts: errors=remount-ro [ 14.673607] alloc irq_desc for 22 on node -1 [ 14.673614] alloc kstat_irqs on node -1 [ 14.673628] HDA Intel 0000:00:1b.0: PCI INT A -> GSI 22 (level, low) -> IRQ 22 [ 14.673734] alloc irq_desc for 48 on node -1 [ 14.673737] alloc kstat_irqs on node -1 [ 14.673752] HDA Intel 0000:00:1b.0: irq 48 for MSI/MSI-X [ 14.673792] HDA Intel 0000:00:1b.0: setting latency timer to 64 [ 14.875280] input: HDA Intel Mic at Ext Left Jack as /devices/pci0000:00/0000:00:1b.0/sound/card0/input12 [ 14.875431] input: HDA Intel HP Out at Ext Left Jack as /devices/pci0000:00/0000:00:1b.0/sound/card0/input13 [ 15.102590] r8169 0000:02:00.0: eth0: link down [ 15.103544] ADDRCONF(NETDEV_UP): eth0: link is not ready [ 15.111473] type=1400 audit(1294203888.985:5): apparmor="STATUS" operation="profile_load" name="/usr/share/gdm/guest-session/Xsession" pid=1221 comm="apparmor_parser" [ 15.113657] type=1400 audit(1294203888.985:6): apparmor="STATUS" operation="profile_replace" name="/sbin/dhclient3" pid=1222 comm="apparmor_parser" [ 15.114537] type=1400 audit(1294203888.985:7): apparmor="STATUS" operation="profile_replace" name="/usr/lib/NetworkManager/nm-dhcp-client.action" pid=1222 comm="apparmor_parser" [ 15.115052] type=1400 audit(1294203888.995:8): apparmor="STATUS" operation="profile_replace" name="/usr/lib/connman/scripts/dhclient-script" pid=1222 comm="apparmor_parser" [ 15.115707] type=1400 audit(1294203888.995:9): apparmor="STATUS" operation="profile_load" name="/usr/sbin/tcpdump" pid=1226 comm="apparmor_parser" [ 15.118529] type=1400 audit(1294203888.995:10): apparmor="STATUS" operation="profile_load" name="/usr/lib/cups/backend/cups-pdf" pid=1225 comm="apparmor_parser" [ 15.119551] type=1400 audit(1294203888.995:11): apparmor="STATUS" operation="profile_load" name="/usr/sbin/cupsd" pid=1225 comm="apparmor_parser" [ 15.246768] ADDRCONF(NETDEV_UP): wlan0: link is not ready [ 15.349765] Skipping EDID probe due to cached edid [ 15.366737] Skipping EDID probe due to cached edid Bug: 708286 [ 0.000000] Initializing cgroup subsys cpuset [ 0.000000] Initializing cgroup subsys cpu [ 0.000000] Linux version 2.6.35-25-generic (buildd@palmer) (gcc version 4.4.5 (Ubuntu/Linaro 4.4.4-14ubuntu5) ) #44-Ubuntu SMP Fri Jan 21 17:40:48 UTC 2011 (Ubuntu 2.6.35-25.44-generic 2.6.35.10) [ 0.000000] BIOS-provided physical RAM map: [ 0.000000] BIOS-e820: 0000000000000000 - 000000000009ec00 (usable) [ 0.000000] BIOS-e820: 000000000009ec00 - 00000000000a0000 (reserved) [ 0.000000] BIOS-e820: 00000000000e0000 - 0000000000100000 (reserved) [ 0.000000] BIOS-e820: 0000000000100000 - 00000000b70d0000 (usable) [ 0.000000] BIOS-e820: 00000000b70d0000 - 00000000b70d0200 (ACPI NVS) [ 0.000000] BIOS-e820: 00000000b70d0200 - 00000000b70d2000 (reserved) [ 0.000000] BIOS-e820: 00000000b70d2000 - 00000000b71d0000 (ACPI NVS) [ 0.000000] BIOS-e820: 00000000b71d0000 - 00000000b71f0000 (ACPI data) [ 0.000000] BIOS-e820: 00000000b71f0000 - 00000000c0000000 (reserved) [ 0.000000] BIOS-e820: 00000000e0000000 - 00000000f0000000 (reserved) [ 0.000000] BIOS-e820: 00000000fec00000 - 00000000fec01000 (reserved) [ 0.000000] BIOS-e820: 00000000fed10000 - 00000000fed14000 (reserved) [ 0.000000] BIOS-e820: 00000000fed18000 - 00000000fed1a000 (reserved) [ 0.000000] BIOS-e820: 00000000fed1c000 - 00000000fed20000 (reserved) [ 0.000000] BIOS-e820: 00000000fee00000 - 00000000fee01000 (reserved) [ 0.000000] BIOS-e820: 00000000ffe00000 - 0000000100000000 (reserved) [ 0.000000] BIOS-e820: 0000000100000000 - 0000000138000000 (usable) [ 0.000000] Notice: NX (Execute Disable) protection cannot be enabled: non-PAE kernel! [ 0.000000] DMI 2.4 present. [ 0.000000] e820 update range: 0000000000000000 - 0000000000001000 (usable) ==> (reserved) [ 0.000000] e820 remove range: 00000000000a0000 - 0000000000100000 (usable) [ 0.000000] last_pfn = 0xb70d0 max_arch_pfn = 0x100000 [ 0.000000] MTRR default type: uncachable [ 0.000000] MTRR fixed ranges enabled: [ 0.000000] 00000-9FFFF write-back [ 0.000000] A0000-BFFFF uncachable [ 0.000000] C0000-D3FFF write-protect [ 0.000000] D4000-DFFFF uncachable [ 0.000000] E0000-EFFFF write-through [ 0.000000] F0000-FFFFF write-protect [ 0.000000] MTRR variable ranges enabled: [ 0.000000] 0 base 0FFE00000 mask FFFE00000 uncachable [ 0.000000] 1 base 000000000 mask F80000000 write-back [ 0.000000] 2 base 080000000 mask FC0000000 write-back [ 0.000000] 3 base 0B8000000 mask FF8000000 uncachable [ 0.000000] 4 base 100000000 mask FC0000000 write-back [ 0.000000] 5 disabled [ 0.000000] 6 disabled [ 0.000000] 7 disabled [ 0.000000] x86 PAT enabled: cpu 0, old 0x7040600070406, new 0x7010600070106 [ 0.000000] e820 update range: 00000000b8000000 - 0000000100000000 (usable) ==> (reserved) [ 0.000000] e820 update range: 0000000000002000 - 0000000000010000 (usable) ==> (reserved) [ 0.000000] Scanning 1 areas for low memory corruption [ 0.000000] modified physical RAM map: [ 0.000000] modified: 0000000000000000 - 0000000000001000 (reserved) [ 0.000000] modified: 0000000000001000 - 0000000000002000 (usable) [ 0.000000] modified: 0000000000002000 - 0000000000010000 (reserved) [ 0.000000] modified: 0000000000010000 - 000000000009ec00 (usable) [ 0.000000] modified: 000000000009ec00 - 00000000000a0000 (reserved) [ 0.000000] modified: 00000000000e0000 - 0000000000100000 (reserved) [ 0.000000] modified: 0000000000100000 - 00000000b70d0000 (usable) [ 0.000000] modified: 00000000b70d0000 - 00000000b70d0200 (ACPI NVS) [ 0.000000] modified: 00000000b70d0200 - 00000000b70d2000 (reserved) [ 0.000000] modified: 00000000b70d2000 - 00000000b71d0000 (ACPI NVS) [ 0.000000] modified: 00000000b71d0000 - 00000000b71f0000 (ACPI data) [ 0.000000] modified: 00000000b71f0000 - 00000000c0000000 (reserved) [ 0.000000] modified: 00000000e0000000 - 00000000f0000000 (reserved) [ 0.000000] modified: 00000000fec00000 - 00000000fec01000 (reserved) [ 0.000000] modified: 00000000fed10000 - 00000000fed14000 (reserved) [ 0.000000] modified: 00000000fed18000 - 00000000fed1a000 (reserved) [ 0.000000] modified: 00000000fed1c000 - 00000000fed20000 (reserved) [ 0.000000] modified: 00000000fee00000 - 00000000fee01000 (reserved) [ 0.000000] modified: 00000000ffe00000 - 0000000100000000 (reserved) [ 0.000000] modified: 0000000100000000 - 0000000138000000 (usable) [ 0.000000] initial memory mapped : 0 - 00c00000 [ 0.000000] init_memory_mapping: 0000000000000000-00000000377fe000 [ 0.000000] 0000000000 - 0000400000 page 4k [ 0.000000] 0000400000 - 0037400000 page 2M [ 0.000000] 0037400000 - 00377fe000 page 4k [ 0.000000] kernel direct mapping tables up to 377fe000 @ 15000-1a000 [ 0.000000] RAMDISK: 374ed000 - 37ff0000 [ 0.000000] Allocated new RAMDISK: 009a7000 - 014a9659 [ 0.000000] Move RAMDISK from 00000000374ed000 - 0000000037fef658 to 009a7000 - 014a9658 [ 0.000000] ACPI: RSDP 000f0030 00014 (v00 TOSHIB) [ 0.000000] ACPI: RSDT b71ef038 00050 (v01 TOSHIB A007B 00000001 01000013) [ 0.000000] ACPI: FACP b71ee000 00081 (v02 TOSHIB A007B 00000001 LOHR 0000005F) [ 0.000000] ACPI: DSDT b71dc000 09241 (v02 TOSHIB A007B 20100826 INTL 20061109) [ 0.000000] ACPI: FACS b715a000 00040 [ 0.000000] ACPI: HPET b71ed000 00038 (v01 TOSHIB A007B 00000001 LOHR 0000005F) [ 0.000000] ACPI: APIC b71ec000 000BC (v01 TOSHIB A007B 00000001 LOHR 0000005F) [ 0.000000] ACPI: MCFG b71eb000 0003C (v01 TOSHIB A007B 00000001 LOHR 0000005F) [ 0.000000] ACPI: ASF! b71ea000 000A0 (v32 TOSHIB A007B 00000001 LOHR 0000005F) [ 0.000000] ACPI: TCPA b71e9000 00032 (v02 TOSHIB A007B 00000000 LOHR 0000005F) [ 0.000000] ACPI: BOOT b71e8000 00028 (v01 TOSHIB A007B 00000000 LOHR 0000005F) [ 0.000000] ACPI: SLIC b71e7000 00176 (v01 TOSHIB A007B 00000000 LOHR 0000005F) [ 0.000000] ACPI: SSDT b71db000 002D5 (v01 TOSHIB SataAhci 00001000 INTL 20061109) [ 0.000000] ACPI: SSDT b71d8000 0072A (v01 TOSHIB PtidDevc 00001000 INTL 20061109) [ 0.000000] ACPI: SSDT b71d7000 00A10 (v01 PmRef CpuPm 00003000 INTL 20061109) [ 0.000000] ACPI: Local APIC address 0xfee00000 [ 0.000000] 2040MB HIGHMEM available. [ 0.000000] 887MB LOWMEM available. [ 0.000000] mapped low ram: 0 - 377fe000 [ 0.000000] low ram: 0 - 377fe000 [ 0.000000] Zone PFN ranges: [ 0.000000] DMA 0x00000001 -> 0x00001000 [ 0.000000] Normal 0x00001000 -> 0x000377fe [ 0.000000] HighMem 0x000377fe -> 0x000b70d0 [ 0.000000] Movable zone start PFN for each node [ 0.000000] early_node_map[3] active PFN ranges [ 0.000000] 0: 0x00000001 -> 0x00000002 [ 0.000000] 0: 0x00000010 -> 0x0000009e [ 0.000000] 0: 0x00000100 -> 0x000b70d0 [ 0.000000] On node 0 totalpages: 749663 [ 0.000000] free_area_init_node: node 0, pgdat c07fffc0, node_mem_map c14ab020 [ 0.000000] DMA zone: 32 pages used for memmap [ 0.000000] DMA zone: 0 pages reserved [ 0.000000] DMA zone: 3951 pages, LIFO batch:0 [ 0.000000] Normal zone: 1744 pages used for memmap [ 0.000000] Normal zone: 221486 pages, LIFO batch:31 [ 0.000000] HighMem zone: 4082 pages used for memmap [ 0.000000] HighMem zone: 518368 pages, LIFO batch:31 [ 0.000000] Using APIC driver default [ 0.000000] ACPI: PM-Timer IO Port: 0x408 [ 0.000000] ACPI: Local APIC address 0xfee00000 [ 0.000000] ACPI: LAPIC (acpi_id[0x00] lapic_id[0x00] enabled) [ 0.000000] ACPI: LAPIC (acpi_id[0x01] lapic_id[0x01] enabled) [ 0.000000] ACPI: LAPIC (acpi_id[0x02] lapic_id[0x04] enabled) [ 0.000000] ACPI: LAPIC (acpi_id[0x03] lapic_id[0x05] enabled) [ 0.000000] ACPI: LAPIC (acpi_id[0x04] lapic_id[0x00] disabled) [ 0.000000] ACPI: LAPIC (acpi_id[0x05] lapic_id[0x00] disabled) [ 0.000000] ACPI: LAPIC (acpi_id[0x06] lapic_id[0x00] disabled) [ 0.000000] ACPI: LAPIC (acpi_id[0x07] lapic_id[0x00] disabled) [ 0.000000] ACPI: LAPIC_NMI (acpi_id[0x00] high edge lint[0x1]) [ 0.000000] ACPI: LAPIC_NMI (acpi_id[0x01] high edge lint[0x1]) [ 0.000000] ACPI: LAPIC_NMI (acpi_id[0x02] high edge lint[0x1]) [ 0.000000] ACPI: LAPIC_NMI (acpi_id[0x03] high edge lint[0x1]) [ 0.000000] ACPI: LAPIC_NMI (acpi_id[0x04] high edge lint[0x1]) [ 0.000000] ACPI: LAPIC_NMI (acpi_id[0x05] high edge lint[0x1]) [ 0.000000] ACPI: LAPIC_NMI (acpi_id[0x06] high edge lint[0x1]) [ 0.000000] ACPI: LAPIC_NMI (acpi_id[0x07] high edge lint[0x1]) [ 0.000000] ACPI: IOAPIC (id[0x01] address[0xfec00000] gsi_base[0]) [ 0.000000] IOAPIC[0]: apic_id 1, version 32, address 0xfec00000, GSI 0-23 [ 0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 0 global_irq 2 dfl dfl) [ 0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 9 global_irq 9 high level) [ 0.000000] ACPI: IRQ0 used by override. [ 0.000000] ACPI: IRQ2 used by override. [ 0.000000] ACPI: IRQ9 used by override. [ 0.000000] Using ACPI (MADT) for SMP configuration information [ 0.000000] ACPI: HPET id: 0x8086a201 base: 0xfed00000 [ 0.000000] SMP: Allowing 8 CPUs, 4 hotplug CPUs [ 0.000000] nr_irqs_gsi: 40 [ 0.000000] early_res array is doubled to 64 at [16000 - 167ff] [ 0.000000] PM: Registered nosave memory: 0000000000002000 - 0000000000010000 [ 0.000000] PM: Registered nosave memory: 000000000009e000 - 000000000009f000 [ 0.000000] PM: Registered nosave memory: 000000000009f000 - 00000000000a0000 [ 0.000000] PM: Registered nosave memory: 00000000000a0000 - 00000000000e0000 [ 0.000000] PM: Registered nosave memory: 00000000000e0000 - 0000000000100000 [ 0.000000] Allocating PCI resources starting at c0000000 (gap: c0000000:20000000) [ 0.000000] Booting paravirtualized kernel on bare hardware [ 0.000000] setup_percpu: NR_CPUS:8 nr_cpumask_bits:8 nr_cpu_ids:8 nr_node_ids:1 [ 0.000000] PERCPU: Embedded 14 pages/cpu @c2c00000 s36416 r0 d20928 u524288 [ 0.000000] pcpu-alloc: s36416 r0 d20928 u524288 alloc=1*4194304 [ 0.000000] pcpu-alloc: [0] 0 1 2 3 4 5 6 7 [ 0.000000] early_res array is doubled to 128 at [16800 - 177ff] [ 0.000000] Built 1 zonelists in Zone order, mobility grouping on. Total pages: 743805 [ 0.000000] Kernel command line: BOOT_IMAGE=/boot/vmlinuz-2.6.35-25-generic root=UUID=e3d9760d-21e7-4373-b844-203ea4f8dd14 ro quiet splash initcall_debug no_console_suspend [ 0.000000] PID hash table entries: 4096 (order: 2, 16384 bytes) [ 0.000000] Dentry cache hash table entries: 131072 (order: 7, 524288 bytes) [ 0.000000] Inode-cache hash table entries: 65536 (order: 6, 262144 bytes) [ 0.000000] Enabling fast FPU save and restore... done. [ 0.000000] Enabling unmasked SIMD FPU exception support... done. [ 0.000000] Initializing CPU#0 [ 0.000000] allocated 14995500 bytes of page_cgroup [ 0.000000] please try 'cgroup_disable=memory' option if you don't want memory cgroups [ 0.000000] Subtract (59 early reservations) [ 0.000000] #1 [0000001000 - 0000002000] EX TRAMPOLINE [ 0.000000] #2 [0000100000 - 00009a2adc] TEXT DATA BSS [ 0.000000] #3 [000009ec00 - 0000100000] BIOS reserved [ 0.000000] #4 [00009a3000 - 00009a613c] BRK [ 0.000000] #5 [0000010000 - 0000011000] TRAMPOLINE [ 0.000000] #6 [0000011000 - 0000015000] ACPI WAKEUP [ 0.000000] #7 [0000015000 - 0000016000] PGTABLE [ 0.000000] #8 [00009a7000 - 00014aa000] NEW RAMDISK [ 0.000000] #9 [00014aa000 - 00014ab000] BOOTMEM [ 0.000000] #10 [00014ab000 - 0002b93000] BOOTMEM [ 0.000000] #11 [0002b93000 - 0002b93004] BOOTMEM [ 0.000000] #12 [0002b93040 - 0002b93100] BOOTMEM [ 0.000000] #13 [0002b93100 - 0002b93154] BOOTMEM [ 0.000000] #14 [0002b93180 - 0002b96180] BOOTMEM [ 0.000000] #15 [0002b96180 - 0002b96240] BOOTMEM [ 0.000000] #16 [0002b96240 - 0002b9c240] BOOTMEM [ 0.000000] #17 [0002b9c240 - 0002b9c265] BOOTMEM [ 0.000000] #18 [0002b9c280 - 0002b9c2a7] BOOTMEM [ 0.000000] #19 [0002b9c2c0 - 0002b9c4f0] BOOTMEM [ 0.000000] #20 [0002b9c500 - 0002b9c540] BOOTMEM [ 0.000000] #21 [0002b9c540 - 0002b9c580] BOOTMEM [ 0.000000] #22 [0002b9c580 - 0002b9c5c0] BOOTMEM [ 0.000000] #23 [0002b9c5c0 - 0002b9c600] BOOTMEM [ 0.000000] #24 [0002b9c600 - 0002b9c640] BOOTMEM [ 0.000000] #25 [0002b9c640 - 0002b9c680] BOOTMEM [ 0.000000] #26 [0002b9c680 - 0002b9c6c0] BOOTMEM [ 0.000000] #27 [0002b9c6c0 - 0002b9c700] BOOTMEM [ 0.000000] #28 [0002b9c700 - 0002b9c740] BOOTMEM [ 0.000000] #29 [0002b9c740 - 0002b9c780] BOOTMEM [ 0.000000] #30 [0002b9c780 - 0002b9c7c0] BOOTMEM [ 0.000000] #31 [0002b9c7c0 - 0002b9c800] BOOTMEM [ 0.000000] #32 [0002b9c800 - 0002b9c840] BOOTMEM [ 0.000000] #33 [0002b9c840 - 0002b9c880] BOOTMEM [ 0.000000] #34 [0002b9c880 - 0002b9c8c0] BOOTMEM [ 0.000000] #35 [0002b9c8c0 - 0002b9c900] BOOTMEM [ 0.000000] #36 [0002b9c900 - 0002b9c940] BOOTMEM [ 0.000000] #37 [0002b9c940 - 0002b9c950] BOOTMEM [ 0.000000] #38 [0002b9c980 - 0002b9c990] BOOTMEM [ 0.000000] #39 [0002b9c9c0 - 0002b9ca4c] BOOTMEM [ 0.000000] #40 [0002b9ca80 - 0002b9cb0c] BOOTMEM [ 0.000000] #41 [0002c00000 - 0002c0e000] BOOTMEM [ 0.000000] #42 [0002c80000 - 0002c8e000] BOOTMEM [ 0.000000] #43 [0002d00000 - 0002d0e000] BOOTMEM [ 0.000000] #44 [0002d80000 - 0002d8e000] BOOTMEM [ 0.000000] #45 [0002e00000 - 0002e0e000] BOOTMEM [ 0.000000] #46 [0002e80000 - 0002e8e000] BOOTMEM [ 0.000000] #47 [0002f00000 - 0002f0e000] BOOTMEM [ 0.000000] #48 [0002f80000 - 0002f8e000] BOOTMEM [ 0.000000] #49 [0002b9eb40 - 0002b9eb44] BOOTMEM [ 0.000000] #50 [0002b9eb80 - 0002b9eb84] BOOTMEM [ 0.000000] #51 [0002b9ebc0 - 0002b9ebe0] BOOTMEM [ 0.000000] #52 [0002b9ec00 - 0002b9ec20] BOOTMEM [ 0.000000] #53 [0002b9ec40 - 0002b9ecd8] BOOTMEM [ 0.000000] #54 [0002b9ed00 - 0002b9ed38] BOOTMEM [ 0.000000] #55 [0002b9ed40 - 0002ba2d40] BOOTMEM [ 0.000000] #56 [0002f8e000 - 000300e000] BOOTMEM [ 0.000000] #57 [0002ba2d40 - 0002be2d40] BOOTMEM [ 0.000000] #58 [000300e000 - 0003e5b02c] BOOTMEM [ 0.000000] Initializing HighMem for node 0 (000377fe:000b70d0) [ 0.000000] Memory: 2939104k/2999104k available (4933k kernel code, 59548k reserved, 2331k data, 688k init, 2089800k highmem) [ 0.000000] virtual kernel memory layout: [ 0.000000] fixmap : 0xfff16000 - 0xfffff000 ( 932 kB) [ 0.000000] pkmap : 0xff800000 - 0xffc00000 (4096 kB) [ 0.000000] vmalloc : 0xf7ffe000 - 0xff7fe000 ( 120 MB) [ 0.000000] lowmem : 0xc0000000 - 0xf77fe000 ( 887 MB) [ 0.000000] .init : 0xc0819000 - 0xc08c5000 ( 688 kB) [ 0.000000] .data : 0xc05d17ce - 0xc08187a8 (2331 kB) [ 0.000000] .text : 0xc0100000 - 0xc05d17ce (4933 kB) [ 0.000000] Checking if this processor honours the WP bit even in supervisor mode...Ok. [ 0.000000] SLUB: Genslabs=13, HWalign=64, Order=0-3, MinObjects=0, CPUs=8, Nodes=1 [ 0.000000] Hierarchical RCU implementation. [ 0.000000] RCU dyntick-idle grace-period acceleration is enabled. [ 0.000000] RCU-based detection of stalled CPUs is disabled. [ 0.000000] Verbose stalled-CPUs detection is disabled. [ 0.000000] NR_IRQS:2304 nr_irqs:744 [ 0.000000] Console: colour VGA+ 80x25 [ 0.000000] console [tty0] enabled [ 0.000000] hpet clockevent registered [ 0.000000] Fast TSC calibration using PIT [ 0.004000] Detected 2659.767 MHz processor. [ 0.000004] Calibrating delay loop (skipped), value calculated using timer frequency.. 5319.53 BogoMIPS (lpj=10639068) [ 0.000007] pid_max: default: 32768 minimum: 301 [ 0.000021] Security Framework initialized [ 0.000031] AppArmor: AppArmor initialized [ 0.000032] Yama: becoming mindful. [ 0.000067] Mount-cache hash table entries: 512 [ 0.000157] Initializing cgroup subsys ns [ 0.000160] Initializing cgroup subsys cpuacct [ 0.000163] Initializing cgroup subsys memory [ 0.000169] Initializing cgroup subsys devices [ 0.000170] Initializing cgroup subsys freezer [ 0.000172] Initializing cgroup subsys net_cls [ 0.000189] CPU: Physical Processor ID: 0 [ 0.000190] CPU: Processor Core ID: 0 [ 0.000194] mce: CPU supports 9 MCE banks [ 0.000203] CPU0: Thermal monitoring enabled (TM1) [ 0.000209] using mwait in idle threads. [ 0.000213] Performance Events: PEBS fmt1+, Westmere events, Intel PMU driver. [ 0.000220] ... version: 3 [ 0.000221] ... bit width: 48 [ 0.000222] ... generic registers: 4 [ 0.000223] ... value mask: 0000ffffffffffff [ 0.000224] ... max period: 000000007fffffff [ 0.000225] ... fixed-purpose events: 3 [ 0.000226] ... event mask: 000000070000000f [ 0.002294] ACPI: Core revision 20100428 [ 0.014604] ftrace: converting mcount calls to 0f 1f 44 00 00 [ 0.014607] ftrace: allocating 21756 entries in 43 pages [ 0.020528] Enabling APIC mode: Flat. Using 1 I/O APICs [ 0.020928] ..TIMER: vector=0x30 apic1=0 pin1=2 apic2=-1 pin2=-1 [ 0.060509] CPU0: Intel(R) Core(TM) i7 CPU M 620 @ 2.67GHz stepping 05 [ 0.166817] calling migration_init+0x0/0x47 @ 1 [ 0.166820] initcall migration_init+0x0/0x47 returned 0 after 0 usecs [ 0.166822] calling spawn_ksoftirqd+0x0/0x45 @ 1 [ 0.166834] initcall spawn_ksoftirqd+0x0/0x45 returned 0 after 0 usecs [ 0.166840] calling init_call_single_data+0x0/0x6b @ 1 [ 0.166842] initcall init_call_single_data+0x0/0x6b returned 0 after 0 usecs [ 0.166845] calling cpu_stop_init+0x0/0x85 @ 1 [ 0.166859] initcall cpu_stop_init+0x0/0x85 returned 0 after 0 usecs [ 0.166861] calling spawn_softlockup_task+0x0/0x5f @ 1 [ 0.166870] initcall spawn_softlockup_task+0x0/0x5f returned 0 after 0 usecs [ 0.166872] calling relay_init+0x0/0x11 @ 1 [ 0.166874] initcall relay_init+0x0/0x11 returned 0 after 0 usecs [ 0.166876] calling tracer_alloc_buffers+0x0/0x197 @ 1 [ 0.166898] initcall tracer_alloc_buffers+0x0/0x197 returned 0 after 0 usecs [ 0.166900] calling init_trace_printk+0x0/0xf @ 1 [ 0.166902] initcall init_trace_printk+0x0/0xf returned 0 after 0 usecs [ 0.166938] Booting Node 0, Processors #1 [ 0.177195] Initializing CPU#1 [ 0.274674] #2 [ 0.284809] Initializing CPU#2 [ 0.382438] #3 [ 0.392573] Initializing CPU#3 [ 0.490041] Brought up 4 CPUs [ 0.490043] Total of 4 processors activated (21279.15 BogoMIPS). [ 0.491719] devtmpfs: initialized [ 0.491807] calling init_mmap_min_addr+0x0/0x11 @ 1 [ 0.491809] initcall init_mmap_min_addr+0x0/0x11 returned 0 after 0 usecs [ 0.491812] calling init_cpufreq_transition_notifier_list+0x0/0x18 @ 1 [ 0.491815] initcall init_cpufreq_transition_notifier_list+0x0/0x18 returned 0 after 0 usecs [ 0.491818] calling net_ns_init+0x0/0xf2 @ 1 [ 0.491839] initcall net_ns_init+0x0/0xf2 returned 0 after 0 usecs [ 0.491843] calling e820_mark_nvs_memory+0x0/0x39 @ 1 [ 0.491862] initcall e820_mark_nvs_memory+0x0/0x39 returned 0 after 0 usecs [ 0.491865] calling cpufreq_tsc+0x0/0x25 @ 1 [ 0.491867] initcall cpufreq_tsc+0x0/0x25 returned 0 after 0 usecs [ 0.491869] calling pci_reboot_init+0x0/0x11 @ 1 [ 0.491872] initcall pci_reboot_init+0x0/0x11 returned 0 after 0 usecs [ 0.491874] calling reboot_init+0x0/0x11 @ 1 [ 0.491879] initcall reboot_init+0x0/0x11 returned 0 after 0 usecs [ 0.491881] calling init_lapic_sysfs+0x0/0x28 @ 1 [ 0.491888] initcall init_lapic_sysfs+0x0/0x28 returned 0 after 0 usecs [ 0.491893] calling init_smp_flush+0x0/0x23 @ 1 [ 0.491895] initcall init_smp_flush+0x0/0x23 returned 0 after 0 usecs [ 0.491898] calling alloc_frozen_cpus+0x0/0x10 @ 1 [ 0.491900] initcall alloc_frozen_cpus+0x0/0x10 returned 0 after 0 usecs [ 0.491903] calling sysctl_init+0x0/0x29 @ 1 [ 0.491945] initcall sysctl_init+0x0/0x29 returned 0 after 0 usecs [ 0.491947] calling ksysfs_init+0x0/0x74 @ 1 [ 0.491952] initcall ksysfs_init+0x0/0x74 returned 0 after 0 usecs [ 0.491954] calling async_init+0x0/0x5c @ 1 [ 0.491967] initcall async_init+0x0/0x5c returned 0 after 0 usecs [ 0.491969] calling init_jiffies_clocksource+0x0/0xf @ 1 [ 0.491972] initcall init_jiffies_clocksource+0x0/0xf returned 0 after 0 usecs [ 0.491974] calling pm_init+0x0/0x62 @ 1 [ 0.491990] initcall pm_init+0x0/0x62 returned 0 after 0 usecs [ 0.491992] calling pm_disk_init+0x0/0x14 @ 1 [ 0.491995] initcall pm_disk_init+0x0/0x14 returned 0 after 0 usecs [ 0.491998] calling swsusp_header_init+0x0/0x30 @ 1 [ 0.492000] initcall swsusp_header_init+0x0/0x30 returned 0 after 0 usecs [ 0.492003] calling init_ftrace_syscalls+0x0/0x8b @ 1 [ 0.492623] initcall init_ftrace_syscalls+0x0/0x8b returned 0 after 0 usecs [ 0.492625] calling init_hw_breakpoint+0x0/0xbd @ 1 [ 0.492630] initcall init_hw_breakpoint+0x0/0xbd returned 0 after 0 usecs [ 0.492631] calling init_zero_pfn+0x0/0x14 @ 1 [ 0.492633] initcall init_zero_pfn+0x0/0x14 returned 0 after 0 usecs [ 0.492635] calling filelock_init+0x0/0x2f @ 1 [ 0.492640] initcall filelock_init+0x0/0x2f returned 0 after 0 usecs [ 0.492641] calling init_script_binfmt+0x0/0x11 @ 1 [ 0.492644] initcall init_script_binfmt+0x0/0x11 returned 0 after 0 usecs [ 0.492645] calling init_elf_binfmt+0x0/0x11 @ 1 [ 0.492647] initcall init_elf_binfmt+0x0/0x11 returned 0 after 0 usecs [ 0.492649] calling debugfs_init+0x0/0x4a @ 1 [ 0.492652] initcall debugfs_init+0x0/0x4a returned 0 after 0 usecs [ 0.492654] calling securityfs_init+0x0/0x41 @ 1 [ 0.492657] initcall securityfs_init+0x0/0x41 returned 0 after 0 usecs [ 0.492660] calling random32_init+0x0/0xa8 @ 1 [ 0.492663] initcall random32_init+0x0/0xa8 returned 0 after 0 usecs [ 0.492665] calling sfi_sysfs_init+0x0/0xbe @ 1 [ 0.492667] initcall sfi_sysfs_init+0x0/0xbe returned 0 after 0 usecs [ 0.492669] calling regulator_init+0x0/0x2b @ 1 [ 0.492671] regulator: core version 0.5 [ 0.492675] initcall regulator_init+0x0/0x2b returned 0 after 0 usecs [ 0.492678] calling early_resume_init+0x0/0x20 @ 1 [ 0.492701] Time: 20:04:02 Date: 01/26/11 [ 0.492703] initcall early_resume_init+0x0/0x20 returned 0 after 0 usecs [ 0.492705] calling cpufreq_core_init+0x0/0x75 @ 1 [ 0.492707] initcall cpufreq_core_init+0x0/0x75 returned 0 after 0 usecs [ 0.492709] calling cpuidle_init+0x0/0x32 @ 1 [ 0.492713] initcall cpuidle_init+0x0/0x32 returned 0 after 0 usecs [ 0.492715] calling sock_init+0x0/0x59 @ 1 [ 0.492735] initcall sock_init+0x0/0x59 returned 0 after 0 usecs [ 0.492737] calling net_inuse_init+0x0/0x24 @ 1 [ 0.492742] initcall net_inuse_init+0x0/0x24 returned 0 after 0 usecs [ 0.492743] calling netpoll_init+0x0/0x2f @ 1 [ 0.492745] initcall netpoll_init+0x0/0x2f returned 0 after 0 usecs [ 0.492747] calling netlink_proto_init+0x0/0x17a @ 1 [ 0.492751] NET: Registered protocol family 16 [ 0.492760] initcall netlink_proto_init+0x0/0x17a returned 0 after 0 usecs [ 0.492763] calling populate_rootfs_early+0x0/0x36 @ 1 [ 0.492766] initcall populate_rootfs_early+0x0/0x36 returned 1 after 0 usecs [ 0.492769] initcall populate_rootfs_early+0x0/0x36 returned with error code 1 [ 0.492772] calling olpc_init+0x0/0x1a9 @ 1 [ 0.492775] initcall olpc_init+0x0/0x1a9 returned 0 after 0 usecs [ 0.492777] calling bdi_class_init+0x0/0x40 @ 1 [ 0.492785] calling 1_async_populate_rootfs+0x0/0xd0 @ 24 [ 0.492791] initcall bdi_class_init+0x0/0x40 returned 0 after 0 usecs [ 0.492793] calling kobject_uevent_init+0x0/0x1e @ 1 [ 0.492796] initcall kobject_uevent_init+0x0/0x1e returned 0 after 0 usecs [ 0.492798] calling gpiolib_sysfs_init+0x0/0x7e @ 1 [ 0.492806] initcall gpiolib_sysfs_init+0x0/0x7e returned 0 after 0 usecs [ 0.492808] calling pcibus_class_init+0x0/0x14 @ 1 [ 0.492812] initcall pcibus_class_init+0x0/0x14 returned 0 after 0 usecs [ 0.492814] calling pci_driver_init+0x0/0xf @ 1 [ 0.492821] initcall pci_driver_init+0x0/0xf returned 0 after 0 usecs [ 0.492823] calling backlight_class_init+0x0/0x53 @ 1 [ 0.492827] initcall backlight_class_init+0x0/0x53 returned 0 after 0 usecs [ 0.492829] calling tty_class_init+0x0/0x2f @ 1 [ 0.492834] initcall tty_class_init+0x0/0x2f returned 0 after 0 usecs [ 0.492835] Trying to unpack rootfs image as initramfs... [ 0.492838] calling vtconsole_class_init+0x0/0xc2 @ 1 [ 0.492852] initcall vtconsole_class_init+0x0/0xc2 returned 0 after 0 usecs [ 0.492854] calling spi_init+0x0/0x98 @ 1 [ 0.492863] initcall spi_init+0x0/0x98 returned 0 after 0 usecs [ 0.492865] calling i2c_init+0x0/0x57 @ 1 [ 0.492876] initcall i2c_init+0x0/0x57 returned 0 after 0 usecs [ 0.492878] calling eisa_init+0x0/0x29 @ 1 [ 0.492883] EISA bus registered [ 0.492885] initcall eisa_init+0x0/0x29 returned 0 after 0 usecs [ 0.492887] calling amd_postcore_init+0x0/0x66 @ 1 [ 0.492888] initcall amd_postcore_init+0x0/0x66 returned 0 after 0 usecs [ 0.492891] calling arch_kdebugfs_init+0x0/0x1e @ 1 [ 0.492894] initcall arch_kdebugfs_init+0x0/0x1e returned 0 after 0 usecs [ 0.492896] calling init_pit_clocksource+0x0/0xad @ 1 [ 0.492898] initcall init_pit_clocksource+0x0/0xad returned 0 after 0 usecs [ 0.492900] calling mtrr_if_init+0x0/0x4d @ 1 [ 0.492903] initcall mtrr_if_init+0x0/0x4d returned 0 after 0 usecs [ 0.492904] calling ffh_cstate_init+0x0/0x27 @ 1 [ 0.492907] initcall ffh_cstate_init+0x0/0x27 returned 0 after 0 usecs [ 0.492909] calling kdump_buf_page_init+0x0/0x89 @ 1 [ 0.492912] initcall kdump_buf_page_init+0x0/0x89 returned 0 after 0 usecs [ 0.492913] calling acpi_pci_init+0x0/0x5a @ 1 [ 0.492915] ACPI: bus type pci registered [ 0.492916] initcall acpi_pci_init+0x0/0x5a returned 0 after 0 usecs [ 0.492918] calling dmi_id_init+0x0/0xe9 @ 1 [ 0.492939] initcall dmi_id_init+0x0/0xe9 returned 0 after 0 usecs [ 0.492941] calling dma_bus_init+0x0/0x32 @ 1 [ 0.492945] initcall dma_bus_init+0x0/0x32 returned 0 after 0 usecs [ 0.492947] calling dma_channel_table_init+0x0/0xe8 @ 1 [ 0.492954] initcall dma_channel_table_init+0x0/0xe8 returned 0 after 0 usecs [ 0.492956] calling pci_arch_init+0x0/0x65 @ 1 [ 0.492982] PCI: MMCONFIG for domain 0000 [bus 00-ff] at [mem 0xe0000000-0xefffffff] (base 0xe0000000) [ 0.492985] PCI: MMCONFIG at [mem 0xe0000000-0xefffffff] reserved in E820 [ 0.492986] PCI: Using MMCONFIG for extended config space [ 0.492987] PCI: Using configuration type 1 for base access [ 0.492993] initcall pci_arch_init+0x0/0x65 returned 0 after 0 usecs [ 0.492995] calling topology_init+0x0/0x36 @ 1 [ 0.493009] initcall topology_init+0x0/0x36 returned 0 after 0 usecs [ 0.493011] calling mtrr_init_finialize+0x0/0x35 @ 1 [ 0.493013] initcall mtrr_init_finialize+0x0/0x35 returned 0 after 0 usecs [ 0.493014] calling mca_init+0x0/0x2ce @ 1 [ 0.493021] initcall mca_init+0x0/0x2ce returned -19 after 0 usecs [ 0.493023] calling param_sysfs_init+0x0/0xda @ 1 [ 0.493452] initcall param_sysfs_init+0x0/0xda returned 0 after 0 usecs [ 0.493454] calling pm_sysrq_init+0x0/0x20 @ 1 [ 0.493456] initcall pm_sysrq_init+0x0/0x20 returned 0 after 0 usecs [ 0.493458] calling audit_watch_init+0x0/0x27 @ 1 [ 0.493460] initcall audit_watch_init+0x0/0x27 returned 0 after 0 usecs [ 0.493462] calling init_slow_work+0x0/0x34 @ 1 [ 0.493464] initcall init_slow_work+0x0/0x34 returned 0 after 0 usecs [ 0.493465] calling default_bdi_init+0x0/0xb2 @ 1 [ 0.493524] initcall default_bdi_init+0x0/0xb2 returned 0 after 0 usecs [ 0.493526] calling init_bio+0x0/0xbe @ 1 [ 0.493586] bio: create slab at 0 [ 0.493592] initcall init_bio+0x0/0xbe returned 0 after 0 usecs [ 0.493593] calling fsnotify_init+0x0/0xf @ 1 [ 0.493596] initcall fsnotify_init+0x0/0xf returned 0 after 0 usecs [ 0.493598] calling fsnotify_notification_init+0x0/0xf0 @ 1 [ 0.493600] initcall fsnotify_notification_init+0x0/0xf0 returned 0 after 0 usecs [ 0.493602] calling cryptomgr_init+0x0/0xf @ 1 [ 0.493605] initcall cryptomgr_init+0x0/0xf returned 0 after 0 usecs [ 0.493606] calling blk_settings_init+0x0/0x21 @ 1 [ 0.493608] initcall blk_settings_init+0x0/0x21 returned 0 after 0 usecs [ 0.493610] calling blk_ioc_init+0x0/0x2f @ 1 [ 0.493612] initcall blk_ioc_init+0x0/0x2f returned 0 after 0 usecs [ 0.493614] calling blk_softirq_init+0x0/0x54 @ 1 [ 0.493616] initcall blk_softirq_init+0x0/0x54 returned 0 after 0 usecs [ 0.493618] calling blk_iopoll_setup+0x0/0x54 @ 1 [ 0.493620] initcall blk_iopoll_setup+0x0/0x54 returned 0 after 0 usecs [ 0.493622] calling genhd_device_init+0x0/0x61 @ 1 [ 0.493681] initcall genhd_device_init+0x0/0x61 returned 0 after 0 usecs [ 0.493683] calling blk_dev_integrity_init+0x0/0x2f @ 1 [ 0.493685] initcall blk_dev_integrity_init+0x0/0x2f returned 0 after 0 usecs [ 0.493687] calling gpiolib_debugfs_init+0x0/0x2a @ 1 [ 0.493697] initcall gpiolib_debugfs_init+0x0/0x2a returned 0 after 0 usecs [ 0.493699] calling tc35892_gpio_init+0x0/0xf @ 1 [ 0.493706] initcall tc35892_gpio_init+0x0/0xf returned 0 after 0 usecs [ 0.493709] calling pci_slot_init+0x0/0x50 @ 1 [ 0.493712] initcall pci_slot_init+0x0/0x50 returned 0 after 0 usecs [ 0.493714] calling fbmem_init+0x0/0x96 @ 1 [ 0.493721] initcall fbmem_init+0x0/0x96 returned 0 after 0 usecs [ 0.493723] calling acpi_init+0x0/0x10c @ 1 [ 0.495166] ACPI: EC: Look up EC in DSDT [ 0.496696] ACPI: Executed 1 blocks of module-level executable AML code [ 0.498431] ACPI: BIOS _OSI(Linux) query ignored [ 0.500393] ACPI: SSDT b77f8a18 0049D (v01 PmRef Cpu0Ist 00003000 INTL 20061109) [ 0.500778] ACPI: Dynamic OEM Table Load: [ 0.500780] ACPI: SSDT (null) 0049D (v01 PmRef Cpu0Ist 00003000 INTL 20061109) [ 0.501528] ACPI: SSDT b77f6018 008B2 (v01 PmRef Cpu0Cst 00003001 INTL 20061109) [ 0.501897] ACPI: Dynamic OEM Table Load: [ 0.501898] ACPI: SSDT (null) 008B2 (v01 PmRef Cpu0Cst 00003001 INTL 20061109) [ 0.502396] ACPI: SSDT b77f7a98 00303 (v01 PmRef ApIst 00003000 INTL 20061109) [ 0.502820] ACPI: Dynamic OEM Table Load: [ 0.502822] ACPI: SSDT (null) 00303 (v01 PmRef ApIst 00003000 INTL 20061109) [ 0.502982] ACPI: SSDT b77f5d98 00119 (v01 PmRef ApCst 00003000 INTL 20061109) [ 0.503622] ACPI: Dynamic OEM Table Load: [ 0.503624] ACPI: SSDT (null) 00119 (v01 PmRef ApCst 00003000 INTL 20061109) [ 0.504759] ACPI: Interpreter enabled [ 0.504763] ACPI: (supports S0 S3 S4 S5) [ 0.504782] ACPI: Using IOAPIC for interrupt routing [ 0.512266] initcall acpi_init+0x0/0x10c returned 0 after 19531 usecs [ 0.512269] calling dock_init+0x0/0xb3 @ 1 [ 0.513018] ACPI: ACPI Dock Station Driver: 2 docks/bays found [ 0.513021] initcall dock_init+0x0/0xb3 returned 0 after 0 usecs [ 0.513022] calling acpi_pci_root_init+0x0/0x2a @ 1 [ 0.513025] PCI: Using host bridge windows from ACPI; if necessary, use "pci=nocrs" and report a bug [ 0.513554] ACPI: PCI Root Bridge [PCI0] (domain 0000 [bus 00-fe]) [ 0.514542] pci_root PNP0A08:00: host bridge window [io 0x0000-0x0cf7] [ 0.514544] pci_root PNP0A08:00: host bridge window [io 0x0d00-0xffff] [ 0.514545] pci_root PNP0A08:00: host bridge window [mem 0x000a0000-0x000bffff] [ 0.514547] pci_root PNP0A08:00: host bridge window [mem 0x000d4000-0x000d7fff] [ 0.514549] pci_root PNP0A08:00: host bridge window [mem 0x000d8000-0x000dbfff] [ 0.514550] pci_root PNP0A08:00: host bridge window [mem 0x000dc000-0x000dffff] [ 0.514552] pci_root PNP0A08:00: host bridge window [mem 0xc0000000-0xfeafffff] [ 0.514598] pci 0000:00:02.0: reg 10: [mem 0xd0000000-0xd03fffff 64bit] [ 0.514603] pci 0000:00:02.0: reg 18: [mem 0xc0000000-0xcfffffff 64bit pref] [ 0.514606] pci 0000:00:02.0: reg 20: [io 0x3058-0x305f] [ 0.514680] pci 0000:00:16.0: reg 10: [mem 0xd4728000-0xd472800f 64bit] [ 0.514736] pci 0000:00:16.0: PME# supported from D0 D3hot D3cold [ 0.514742] pci 0000:00:16.0: PME# disabled [ 0.514796] pci 0000:00:19.0: reg 10: [mem 0xd4700000-0xd471ffff] [ 0.514803] pci 0000:00:19.0: reg 14: [mem 0xd4725000-0xd4725fff] [ 0.514810] pci 0000:00:19.0: reg 18: [io 0x3020-0x303f] [ 0.514862] pci 0000:00:19.0: PME# supported from D0 D3hot D3cold [ 0.514866] pci 0000:00:19.0: PME# disabled [ 0.514913] pci 0000:00:1a.0: reg 10: [mem 0xd4727c00-0xd4727fff] [ 0.514977] pci 0000:00:1a.0: PME# supported from D0 D3hot D3cold [ 0.514981] pci 0000:00:1a.0: PME# disabled [ 0.515024] pci 0000:00:1b.0: reg 10: [mem 0xd4720000-0xd4723fff 64bit] [ 0.515080] pci 0000:00:1b.0: PME# supported from D0 D3hot D3cold [ 0.515084] pci 0000:00:1b.0: PME# disabled [ 0.515174] pci 0000:00:1c.0: PME# supported from D0 D3hot D3cold [ 0.515178] pci 0000:00:1c.0: PME# disabled [ 0.515266] pci 0000:00:1c.1: PME# supported from D0 D3hot D3cold [ 0.515270] pci 0000:00:1c.1: PME# disabled [ 0.515357] pci 0000:00:1c.2: PME# supported from D0 D3hot D3cold [ 0.515362] pci 0000:00:1c.2: PME# disabled [ 0.515450] pci 0000:00:1c.3: PME# supported from D0 D3hot D3cold [ 0.515454] pci 0000:00:1c.3: PME# disabled [ 0.515509] pci 0000:00:1d.0: reg 10: [mem 0xd4727800-0xd4727bff] [ 0.515569] pci 0000:00:1d.0: PME# supported from D0 D3hot D3cold [ 0.515574] pci 0000:00:1d.0: PME# disabled [ 0.515764] pci 0000:00:1f.2: reg 10: [io 0x3048-0x304f] [ 0.515771] pci 0000:00:1f.2: reg 14: [io 0x3064-0x3067] [ 0.515777] pci 0000:00:1f.2: reg 18: [io 0x3040-0x3047] [ 0.515784] pci 0000:00:1f.2: reg 1c: [io 0x3060-0x3063] [ 0.515789] pci 0000:00:1f.2: reg 20: [io 0x3000-0x301f] [ 0.515796] pci 0000:00:1f.2: reg 24: [mem 0xd4727000-0xd47277ff] [ 0.515839] pci 0000:00:1f.2: PME# supported from D3hot [ 0.515843] pci 0000:00:1f.2: PME# disabled [ 0.515896] pci 0000:00:1f.6: reg 10: [mem 0xd4724000-0xd4724fff 64bit] [ 0.516076] pci 0000:01:00.0: reg 10: [mem 0xd4600000-0xd46000ff] [ 0.516173] pci 0000:01:00.0: supports D1 D2 [ 0.516174] pci 0000:01:00.0: PME# supported from D0 D1 D2 D3hot D3cold [ 0.516180] pci 0000:01:00.0: PME# disabled [ 0.521969] pci 0000:00:1c.0: PCI bridge to [bus 01-01] [ 0.521974] pci 0000:00:1c.0: bridge window [io 0xf000-0x0000] (disabled) [ 0.521979] pci 0000:00:1c.0: bridge window [mem 0xd4600000-0xd46fffff] [ 0.521987] pci 0000:00:1c.0: bridge window [mem 0xfff00000-0x000fffff pref] (disabled) [ 0.522100] pci 0000:02:00.0: reg 10: [mem 0xd4500000-0xd4501fff 64bit] [ 0.522209] pci 0000:02:00.0: PME# supported from D0 D3hot D3cold [ 0.522216] pci 0000:02:00.0: PME# disabled [ 0.529918] pci 0000:00:1c.1: PCI bridge to [bus 02-02] [ 0.529923] pci 0000:00:1c.1: bridge window [io 0xf000-0x0000] (disabled) [ 0.529928] pci 0000:00:1c.1: bridge window [mem 0xd4500000-0xd45fffff] [ 0.529935] pci 0000:00:1c.1: bridge window [mem 0xfff00000-0x000fffff pref] (disabled) [ 0.529991] pci 0000:00:1c.2: PCI bridge to [bus 03-04] [ 0.529995] pci 0000:00:1c.2: bridge window [io 0x2000-0x2fff] [ 0.529999] pci 0000:00:1c.2: bridge window [mem 0xd2500000-0xd44fffff] [ 0.530006] pci 0000:00:1c.2: bridge window [mem 0xd0400000-0xd23fffff 64bit pref] [ 0.530060] pci 0000:00:1c.3: PCI bridge to [bus 05-05] [ 0.530064] pci 0000:00:1c.3: bridge window [io 0xf000-0x0000] (disabled) [ 0.530069] pci 0000:00:1c.3: bridge window [mem 0xd2400000-0xd24fffff] [ 0.530076] pci 0000:00:1c.3: bridge window [mem 0xfff00000-0x000fffff pref] (disabled) [ 0.530146] pci 0000:00:1e.0: PCI bridge to [bus 06-06] (subtractive decode) [ 0.530151] pci 0000:00:1e.0: bridge window [io 0xf000-0x0000] (disabled) [ 0.530155] pci 0000:00:1e.0: bridge window [mem 0xfff00000-0x000fffff] (disabled) [ 0.530162] pci 0000:00:1e.0: bridge window [mem 0xfff00000-0x000fffff pref] (disabled) [ 0.530164] pci 0000:00:1e.0: bridge window [io 0x0000-0x0cf7] (subtractive decode) [ 0.530165] pci 0000:00:1e.0: bridge window [io 0x0d00-0xffff] (subtractive decode) [ 0.530167] pci 0000:00:1e.0: bridge window [mem 0x000a0000-0x000bffff] (subtractive decode) [ 0.530168] pci 0000:00:1e.0: bridge window [mem 0x000d4000-0x000d7fff] (subtractive decode) [ 0.530170] pci 0000:00:1e.0: bridge window [mem 0x000d8000-0x000dbfff] (subtractive decode) [ 0.530172] pci 0000:00:1e.0: bridge window [mem 0x000dc000-0x000dffff] (subtractive decode) [ 0.530173] pci 0000:00:1e.0: bridge window [mem 0xc0000000-0xfeafffff] (subtractive decode) [ 0.530203] pci_bus 0000:00: on NUMA node 0 [ 0.530217] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0._PRT] [ 0.530525] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.RP01._PRT] [ 0.530598] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.RP02._PRT] [ 0.530670] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.RP03._PRT] [ 0.530742] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.RP04._PRT] [ 0.530877] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PCIB._PRT] [ 0.541770] ACPI: PCI Root Bridge [CPBG] (domain 0000 [bus ff]) [ 0.541891] pci_bus 0000:ff: on NUMA node 0 [ 0.542048] initcall acpi_pci_root_init+0x0/0x2a returned 0 after 31250 usecs [ 0.542050] calling acpi_pci_link_init+0x0/0x3f @ 1 [ 0.542131] ACPI: PCI Interrupt Link [LNKA] (IRQs 1 3 4 5 6 7 10 12 14 15) *11 [ 0.542232] ACPI: PCI Interrupt Link [LNKB] (IRQs 1 *3 4 5 6 7 11 12 14 15) [ 0.542331] ACPI: PCI Interrupt Link [LNKC] (IRQs 1 3 4 5 6 7 *10 12 14 15) [ 0.542431] ACPI: PCI Interrupt Link [LNKD] (IRQs 1 3 4 5 6 7 *11 12 14 15) [ 0.542529] ACPI: PCI Interrupt Link [LNKE] (IRQs 1 3 4 5 *6 7 10 12 14 15) [ 0.542628] ACPI: PCI Interrupt Link [LNKF] (IRQs 1 3 4 5 6 7 11 12 14 15) *0, disabled. [ 0.542728] ACPI: PCI Interrupt Link [LNKG] (IRQs 1 3 4 *5 6 7 10 12 14 15) [ 0.542827] ACPI: PCI Interrupt Link [LNKH] (IRQs 1 3 4 5 6 7 *11 12 14 15) [ 0.542873] initcall acpi_pci_link_init+0x0/0x3f returned 0 after 0 usecs [ 0.542875] calling hest_init+0x0/0xa1 @ 1 [ 0.542877] HEST: Table is not found! [ 0.542879] initcall hest_init+0x0/0xa1 returned -19 after 0 usecs [ 0.542881] calling pnp_init+0x0/0xf @ 1 [ 0.542889] initcall pnp_init+0x0/0xf returned 0 after 0 usecs [ 0.542891] calling twlreg_init+0x0/0xf @ 1 [ 0.542898] initcall twlreg_init+0x0/0xf returned 0 after 0 usecs [ 0.542900] calling pm8607_regulator_init+0x0/0xf @ 1 [ 0.542906] initcall pm8607_regulator_init+0x0/0xf returned 0 after 0 usecs [ 0.542909] calling misc_init+0x0/0xad @ 1 [ 0.542922] initcall misc_init+0x0/0xad returned 0 after 0 usecs [ 0.542923] calling vga_arb_device_init+0x0/0x75 @ 1 [ 0.542948] vgaarb: device added: PCI:0000:00:02.0,decodes=io+mem,owns=io+mem,locks=none [ 0.542955] vgaarb: loaded [ 0.542957] initcall vga_arb_device_init+0x0/0x75 returned 0 after 0 usecs [ 0.542961] calling cn_init+0x0/0x9d @ 1 [ 0.542970] initcall cn_init+0x0/0x9d returned 0 after 0 usecs [ 0.542973] calling pm860x_i2c_init+0x0/0x30 @ 1 [ 0.542980] initcall pm860x_i2c_init+0x0/0x30 returned 0 after 0 usecs [ 0.542982] calling tc35892_init+0x0/0x11 @ 1 [ 0.542987] initcall tc35892_init+0x0/0x11 returned 0 after 0 usecs [ 0.542989] calling wm831x_i2c_init+0x0/0x30 @ 1 [ 0.542995] initcall wm831x_i2c_init+0x0/0x30 returned 0 after 0 usecs [ 0.542997] calling wm8350_i2c_init+0x0/0x11 @ 1 [ 0.543002] initcall wm8350_i2c_init+0x0/0x11 returned 0 after 0 usecs [ 0.543004] calling twl_init+0x0/0x11 @ 1 [ 0.543009] initcall twl_init+0x0/0x11 returned 0 after 0 usecs [ 0.543011] calling da903x_init+0x0/0x11 @ 1 [ 0.543017] initcall da903x_init+0x0/0x11 returned 0 after 0 usecs [ 0.543018] calling max8925_i2c_init+0x0/0x30 @ 1 [ 0.543024] initcall max8925_i2c_init+0x0/0x30 returned 0 after 0 usecs [ 0.543026] calling ab3100_i2c_init+0x0/0x11 @ 1 [ 0.543031] initcall ab3100_i2c_init+0x0/0x11 returned 0 after 0 usecs [ 0.543033] calling ab3550_i2c_init+0x0/0x11 @ 1 [ 0.543038] initcall ab3550_i2c_init+0x0/0x11 returned 0 after 0 usecs [ 0.543040] calling ab8500_spi_init+0x0/0xf @ 1 [ 0.543047] initcall ab8500_spi_init+0x0/0xf returned 0 after 0 usecs [ 0.543049] calling init_scsi+0x0/0x90 @ 1 [ 0.543108] SCSI subsystem initialized [ 0.543111] initcall init_scsi+0x0/0x90 returned 0 after 0 usecs [ 0.543113] calling ata_init+0x0/0x7b @ 1 [ 0.543202] libata version 3.00 loaded. [ 0.543205] initcall ata_init+0x0/0x7b returned 0 after 0 usecs [ 0.543207] calling phy_init+0x0/0x2a @ 1 [ 0.543226] initcall phy_init+0x0/0x2a returned 0 after 0 usecs [ 0.543228] calling usb_init+0x0/0x142 @ 1 [ 0.543249] usbcore: registered new interface driver usbfs [ 0.543256] usbcore: registered new interface driver hub [ 0.543276] usbcore: registered new device driver usb [ 0.543278] initcall usb_init+0x0/0x142 returned 0 after 0 usecs [ 0.543280] calling serio_init+0x0/0x8b @ 1 [ 0.543299] initcall serio_init+0x0/0x8b returned 0 after 0 usecs [ 0.543302] calling input_init+0x0/0xfd @ 1 [ 0.543311] initcall input_init+0x0/0xfd returned 0 after 0 usecs [ 0.543313] calling rtc_init+0x0/0x64 @ 1 [ 0.543317] initcall rtc_init+0x0/0x64 returned 0 after 0 usecs [ 0.543319] calling power_supply_class_init+0x0/0x39 @ 1 [ 0.543324] initcall power_supply_class_init+0x0/0x39 returned 0 after 0 usecs [ 0.543326] calling hwmon_init+0x0/0x40 @ 1 [ 0.543332] initcall hwmon_init+0x0/0x40 returned 0 after 0 usecs [ 0.543333] calling thermal_init+0x0/0x32 @ 1 [ 0.543338] initcall thermal_init+0x0/0x32 returned 0 after 0 usecs [ 0.543339] calling md_init+0x0/0xde @ 1 [ 0.543345] initcall md_init+0x0/0xde returned 0 after 0 usecs [ 0.543348] calling mmc_init+0x0/0x7a @ 1 [ 0.543379] initcall mmc_init+0x0/0x7a returned 0 after 0 usecs [ 0.543382] calling acpi_wmi_init+0x0/0x88 @ 1 [ 0.543397] ACPI: WMI: Mapper loaded [ 0.543399] initcall acpi_wmi_init+0x0/0x88 returned 0 after 0 usecs [ 0.543402] calling pci_subsys_init+0x0/0x46 @ 1 [ 0.543403] PCI: Using ACPI for IRQ routing [ 0.543405] PCI: pci_cache_line_size set to 64 bytes [ 0.543544] reserve RAM buffer: 0000000000002000 - 000000000000ffff [ 0.543545] reserve RAM buffer: 000000000009ec00 - 000000000009ffff [ 0.543547] reserve RAM buffer: 00000000b70d0000 - 00000000b7ffffff initcall pci_subsys_init+0x0/0x46 returned 0 after 0 usecs [ 0.543552] calling proto_init+0x0/0xf @ 1 [ 0.543556] initcall proto_init+0x0/0xf returned 0 after 0 usecs [ 0.543558] calling net_dev_init+0x0/0x161 @ 1 [ 0.543611] initcall net_dev_init+0x0/0x161 returned 0 after 0 usecs [ 0.543613] calling neigh_init+0x0/0x7c @ 1 [ 0.543615] initcall neigh_init+0x0/0x7c returned 0 after 0 usecs [ 0.543617] calling fib_rules_init+0x0/0xa4 @ 1 [ 0.543620] initcall fib_rules_init+0x0/0xa4 returned 0 after 0 usecs [ 0.543622] calling pktsched_init+0x0/0xe6 @ 1 [ 0.543625] initcall pktsched_init+0x0/0xe6 returned 0 after 0 usecs [ 0.543627] calling tc_filter_init+0x0/0x52 @ 1 [ 0.543629] initcall tc_filter_init+0x0/0x52 returned 0 after 0 usecs [ 0.543631] calling tc_action_init+0x0/0x52 @ 1 [ 0.543633] initcall tc_action_init+0x0/0x52 returned 0 after 0 usecs [ 0.543634] calling genl_init+0x0/0x7f @ 1 [ 0.543641] initcall genl_init+0x0/0x7f returned 0 after 0 usecs [ 0.543644] calling cipso_v4_init+0x0/0x5b @ 1 [ 0.543646] initcall cipso_v4_init+0x0/0x5b returned 0 after 0 usecs [ 0.543648] calling wireless_nlevent_init+0x0/0xf @ 1 [ 0.543650] initcall wireless_nlevent_init+0x0/0xf returned 0 after 0 usecs [ 0.543652] calling netlbl_init+0x0/0x7d @ 1 [ 0.543653] NetLabel: Initializing [ 0.543654] NetLabel: domain hash size = 128 [ 0.543654] NetLabel: protocols = UNLABELED CIPSOv4 [ 0.543664] NetLabel: unlabeled traffic allowed by default [ 0.543665] initcall netlbl_init+0x0/0x7d returned 0 after 0 usecs [ 0.543667] calling rfkill_init+0x0/0x68 @ 1 [ 0.543684] initcall rfkill_init+0x0/0x68 returned 0 after 0 usecs [ 0.543685] calling sysctl_init+0x0/0x3b @ 1 [ 0.543687] initcall sysctl_init+0x0/0x3b returned 0 after 0 usecs [ 0.543691] calling print_ICs+0x0/0x8a @ 1 [ 0.543693] initcall print_ICs+0x0/0x8a returned 0 after 0 usecs [ 0.543695] calling hpet_late_init+0x0/0xdc @ 1 [ 0.543710] hpet0: at MMIO 0xfed00000, IRQs 2, 8, 0, 0, 0, 0, 0, 0 [ 0.543714] hpet0: 8 comparators, 64-bit 14.318180 MHz counter [ 0.545719] initcall hpet_late_init+0x0/0xdc returned 0 after 0 usecs [ 0.545721] calling init_k8_nbs+0x0/0x24 @ 1 [ 0.545731] initcall init_k8_nbs+0x0/0x24 returned 0 after 0 usecs [ 0.545734] calling clocksource_done_booting+0x0/0x4f @ 1 [ 0.545736] Switching to clocksource tsc [ 0.545757] initcall clocksource_done_booting+0x0/0x4f returned 0 after 4 usecs [ 0.545760] calling ftrace_init_debugfs+0x0/0xe4 @ 1 [ 0.545784] initcall ftrace_init_debugfs+0x0/0xe4 returned 0 after 21 usecs [ 0.545786] calling rb_init_debugfs+0x0/0x2f @ 1 [ 0.545788] initcall rb_init_debugfs+0x0/0x2f returned 0 after 0 usecs [ 0.545790] calling tracer_init_debugfs+0x0/0x293 @ 1 [ 0.545858] initcall tracer_init_debugfs+0x0/0x293 returned 0 after 64 usecs [ 0.545860] calling init_trace_printk_function_export+0x0/0x33 @ 1 [ 0.545863] initcall init_trace_printk_function_export+0x0/0x33 returned 0 after 0 usecs [ 0.545866] calling event_trace_init+0x0/0x1ce @ 1 [ 0.552029] initcall event_trace_init+0x0/0x1ce returned 0 after 6027 usecs [ 0.552033] calling init_kprobe_trace+0x0/0x79 @ 1 [ 0.552036] initcall init_kprobe_trace+0x0/0x79 returned 0 after 1 usecs [ 0.552039] calling init_pipe_fs+0x0/0x3d @ 1 [ 0.552052] initcall init_pipe_fs+0x0/0x3d returned 0 after 11 usecs [ 0.552055] calling eventpoll_init+0x0/0xd1 @ 1 [ 0.552061] initcall eventpoll_init+0x0/0xd1 returned 0 after 4 usecs [ 0.552063] calling anon_inode_init+0x0/0xfa @ 1 [ 0.552067] initcall anon_inode_init+0x0/0xfa returned 0 after 2 usecs [ 0.552071] calling tomoyo_initerface_init+0x0/0x155 @ 1 [ 0.552073] initcall tomoyo_initerface_init+0x0/0x155 returned 0 after 0 usecs [ 0.552076] calling aa_create_aafs+0x0/0x14a @ 1 [ 0.552091] AppArmor: AppArmor Filesystem Enabled [ 0.552093] initcall aa_create_aafs+0x0/0x14a returned 0 after 15 usecs [ 0.552095] calling blk_scsi_ioctl_init+0x0/0x288 @ 1 [ 0.552098] initcall blk_scsi_ioctl_init+0x0/0x288 returned 0 after 0 usecs [ 0.552101] calling acpi_event_init+0x0/0x79 @ 1 [ 0.552112] initcall acpi_event_init+0x0/0x79 returned 0 after 9 usecs [ 0.552114] calling pnpacpi_init+0x0/0x88 @ 1 [ 0.552115] pnp: PnP ACPI init [ 0.552129] ACPI: bus type pnp registered [ 0.554382] pnp: PnP ACPI: found 12 devices [ 0.554384] ACPI: ACPI bus type pnp unregistered [ 0.554386] initcall pnpacpi_init+0x0/0x88 returned 0 after 2222 usecs [ 0.554388] calling pnpbios_init+0x0/0xea @ 1 [ 0.554390] PnPBIOS: Disabled by ACPI PNP [ 0.554392] initcall pnpbios_init+0x0/0xea returned -19 after 1 usecs [ 0.554394] calling pnp_system_init+0x0/0xf @ 1 [ 0.554403] system 00:01: [mem 0xfed1c000-0xfed1ffff] has been reserved [ 0.554405] system 00:01: [mem 0xfed10000-0xfed13fff] has been reserved [ 0.554407] system 00:01: [mem 0xfed18000-0xfed18fff] has been reserved [ 0.554409] system 00:01: [mem 0xfed19000-0xfed19fff] has been reserved [ 0.554411] system 00:01: [mem 0xd4800000-0xd4800fff] has been reserved [ 0.554412] system 00:01: [mem 0xfeb00000-0xfeb03fff] has been reserved [ 0.554414] system 00:01: [mem 0xfed20000-0xfed3ffff] has been reserved [ 0.554415] system 00:01: [mem 0xfed45000-0xfed8ffff] has been reserved [ 0.554417] system 00:01: [mem 0xff000000-0xffffffff] could not be reserved [ 0.554419] system 00:01: [mem 0xfee00000-0xfeefffff] could not be reserved [ 0.554423] system 00:04: [mem 0xfed00000-0xfed003ff] has been reserved [ 0.554426] system 00:06: [io 0x1000-0x100f] has been reserved [ 0.554428] system 00:06: [io 0xffff] has been reserved [ 0.554430] system 00:06: [io 0xffff] has been reserved [ 0.554432] system 00:06: [io 0x0400-0x047f] has been reserved [ 0.554433] system 00:06: [io 0x0500-0x053f] has been reserved [ 0.554436] system 00:07: [io 0x0680-0x06ff] has been reserved [ 0.554438] system 00:07: [io 0x01e0-0x01e7] has been reserved [ 0.554445] initcall pnp_system_init+0x0/0xf returned 0 after 47 usecs [ 0.554447] calling chr_dev_init+0x0/0xc9 @ 1 [ 0.555249] initcall chr_dev_init+0x0/0xc9 returned 0 after 782 usecs [ 0.555251] calling firmware_class_init+0x0/0x14 @ 1 [ 0.555257] initcall firmware_class_init+0x0/0x14 returned 0 after 3 usecs [ 0.555260] calling cpufreq_gov_performance_init+0x0/0xf @ 1 [ 0.555262] initcall cpufreq_gov_performance_init+0x0/0xf returned 0 after 0 usecs [ 0.555265] calling init_acpi_pm_clocksource+0x0/0x14e @ 1 [ 0.589698] initcall init_acpi_pm_clocksource+0x0/0x14e returned 0 after 33704 usecs [ 0.589702] calling pcibios_assign_resources+0x0/0x6b @ 1 [ 0.589780] pci 0000:00:1c.0: BAR 15: assigned [mem 0xd4900000-0xd4afffff 64bit pref] [ 0.589783] pci 0000:00:1c.1: BAR 15: assigned [mem 0xd4b00000-0xd4cfffff 64bit pref] [ 0.589785] pci 0000:00:1c.3: BAR 15: assigned [mem 0xd4d00000-0xd4efffff 64bit pref] [ 0.589788] pci 0000:00:1c.0: BAR 13: assigned [io 0x4000-0x4fff] [ 0.589790] pci 0000:00:1c.1: BAR 13: assigned [io 0x5000-0x5fff] [ 0.589791] pci 0000:00:1c.3: BAR 13: assigned [io 0x6000-0x6fff] [ 0.589793] pci 0000:00:1c.0: PCI bridge to [bus 01-01] [ 0.589797] pci 0000:00:1c.0: bridge window [io 0x4000-0x4fff] [ 0.589802] pci 0000:00:1c.0: bridge window [mem 0xd4600000-0xd46fffff] [ 0.589807] pci 0000:00:1c.0: bridge window [mem 0xd4900000-0xd4afffff 64bit pref] [ 0.589814] pci 0000:00:1c.1: PCI bridge to [bus 02-02] [ 0.589817] pci 0000:00:1c.1: bridge window [io 0x5000-0x5fff] [ 0.589823] pci 0000:00:1c.1: bridge window [mem 0xd4500000-0xd45fffff] [ 0.589827] pci 0000:00:1c.1: bridge window [mem 0xd4b00000-0xd4cfffff 64bit pref] [ 0.589834] pci 0000:00:1c.2: PCI bridge to [bus 03-04] [ 0.589837] pci 0000:00:1c.2: bridge window [io 0x2000-0x2fff] [ 0.589843] pci 0000:00:1c.2: bridge window [mem 0xd2500000-0xd44fffff] [ 0.589847] pci 0000:00:1c.2: bridge window [mem 0xd0400000-0xd23fffff 64bit pref] [ 0.589854] pci 0000:00:1c.3: PCI bridge to [bus 05-05] [ 0.589857] pci 0000:00:1c.3: bridge window [io 0x6000-0x6fff] [ 0.589862] pci 0000:00:1c.3: bridge window [mem 0xd2400000-0xd24fffff] [ 0.589867] pci 0000:00:1c.3: bridge window [mem 0xd4d00000-0xd4efffff 64bit pref] [ 0.589874] pci 0000:00:1e.0: PCI bridge to [bus 06-06] [ 0.589875] pci 0000:00:1e.0: bridge window [io disabled] [ 0.589880] pci 0000:00:1e.0: bridge window [mem disabled] [ 0.589884] pci 0000:00:1e.0: bridge window [mem pref disabled] [ 0.589906] alloc irq_desc for 16 on node -1 [ 0.589907] alloc kstat_irqs on node -1 [ 0.589912] pci 0000:00:1c.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16 [ 0.589918] pci 0000:00:1c.0: setting latency timer to 64 [ 0.589927] alloc irq_desc for 17 on node -1 [ 0.589928] alloc kstat_irqs on node -1 [ 0.589931] pci 0000:00:1c.1: PCI INT B -> GSI 17 (level, low) -> IRQ 17 [ 0.589935] pci 0000:00:1c.1: setting latency timer to 64 [ 0.589945] alloc irq_desc for 18 on node -1 [ 0.589946] alloc kstat_irqs on node -1 [ 0.589948] pci 0000:00:1c.2: PCI INT C -> GSI 18 (level, low) -> IRQ 18 [ 0.589952] pci 0000:00:1c.2: setting latency timer to 64 [ 0.589962] alloc irq_desc for 19 on node -1 [ 0.589963] alloc kstat_irqs on node -1 [ 0.589965] pci 0000:00:1c.3: PCI INT D -> GSI 19 (level, low) -> IRQ 19 [ 0.589969] pci 0000:00:1c.3: setting latency timer to 64 [ 0.589977] pci 0000:00:1e.0: setting latency timer to 64 [ 0.589981] pci_bus 0000:00: resource 4 [io 0x0000-0x0cf7] [ 0.589983] pci_bus 0000:00: resource 5 [io 0x0d00-0xffff] [ 0.589984] pci_bus 0000:00: resource 6 [mem 0x000a0000-0x000bffff] [ 0.589986] pci_bus 0000:00: resource 7 [mem 0x000d4000-0x000d7fff] [ 0.589987] pci_bus 0000:00: resource 8 [mem 0x000d8000-0x000dbfff] [ 0.589988] pci_bus 0000:00: resource 9 [mem 0x000dc000-0x000dffff] [ 0.589990] pci_bus 0000:00: resource 10 [mem 0xc0000000-0xfeafffff] [ 0.589991] pci_bus 0000:01: resource 0 [io 0x4000-0x4fff] [ 0.589993] pci_bus 0000:01: resource 1 [mem 0xd4600000-0xd46fffff] [ 0.589994] pci_bus 0000:01: resource 2 [mem 0xd4900000-0xd4afffff 64bit pref] [ 0.589996] pci_bus 0000:02: resource 0 [io 0x5000-0x5fff] [ 0.589997] pci_bus 0000:02: resource 1 [mem 0xd4500000-0xd45fffff] [ 0.589999] pci_bus 0000:02: resource 2 [mem 0xd4b00000-0xd4cfffff 64bit pref] [ 0.590000] pci_bus 0000:03: resource 0 [io 0x2000-0x2fff] [ 0.590001] pci_bus 0000:03: resource 1 [mem 0xd2500000-0xd44fffff] [ 0.590003] pci_bus 0000:03: resource 2 [mem 0xd0400000-0xd23fffff 64bit pref] [ 0.590005] pci_bus 0000:05: resource 0 [io 0x6000-0x6fff] [ 0.590006] pci_bus 0000:05: resource 1 [mem 0xd2400000-0xd24fffff] [ 0.590007] pci_bus 0000:05: resource 2 [mem 0xd4d00000-0xd4efffff 64bit pref] [ 0.590009] pci_bus 0000:06: resource 4 [io 0x0000-0x0cf7] [ 0.590010] pci_bus 0000:06: resource 5 [io 0x0d00-0xffff] [ 0.590012] pci_bus 0000:06: resource 6 [mem 0x000a0000-0x000bffff] [ 0.590013] pci_bus 0000:06: resource 7 [mem 0x000d4000-0x000d7fff] [ 0.590015] pci_bus 0000:06: resource 8 [mem 0x000d8000-0x000dbfff] [ 0.590016] pci_bus 0000:06: resource 9 [mem 0x000dc000-0x000dffff] [ 0.590017] pci_bus 0000:06: resource 10 [mem 0xc0000000-0xfeafffff] [ 0.590020] initcall pcibios_assign_resources+0x0/0x6b returned 0 after 309 usecs [ 0.590023] calling sysctl_core_init+0x0/0x2d @ 1 [ 0.590036] initcall sysctl_core_init+0x0/0x2d returned 0 after 11 usecs [ 0.590039] calling inet_init+0x0/0x21c @ 1 [ 0.590056] NET: Registered protocol family 2 [ 0.590104] IP route cache hash table entries: 32768 (order: 5, 131072 bytes) [ 0.590237] TCP established hash table entries: 131072 (order: 8, 1048576 bytes) [ 0.590437] TCP bind hash table entries: 65536 (order: 7, 524288 bytes) [ 0.590530] TCP: Hash tables configured (established 131072 bind 65536) [ 0.590532] TCP reno registered [ 0.590534] UDP hash table entries: 512 (order: 2, 16384 bytes) [ 0.590538] UDP-Lite hash table entries: 512 (order: 2, 16384 bytes) [ 0.590598] initcall inet_init+0x0/0x21c returned 0 after 542 usecs [ 0.590600] calling af_unix_init+0x0/0x4d @ 1 [ 0.590602] NET: Registered protocol family 1 [ 0.590606] initcall af_unix_init+0x0/0x4d returned 0 after 4 usecs [ 0.590611] calling pci_apply_final_quirks+0x0/0x106 @ 1 [ 0.590617] pci 0000:00:02.0: Boot video device [ 0.590724] PCI: CLS 64 bytes, default 64 [ 0.590726] initcall pci_apply_final_quirks+0x0/0x106 returned 0 after 109 usecs [ 0.590730] calling populate_rootfs+0x0/0x1f @ 1 [ 0.590732] initcall populate_rootfs+0x0/0x1f returned 433096936 after 0 usecs [ 0.590734] initcall populate_rootfs+0x0/0x1f returned with error code 433096936 [ 0.590737] calling pci_iommu_init+0x0/0xd @ 1 [ 0.590740] initcall pci_iommu_init+0x0/0xd returned 0 after 0 usecs [ 0.590742] calling i8259A_init_sysfs+0x0/0x2b @ 1 [ 0.590757] initcall i8259A_init_sysfs+0x0/0x2b returned 0 after 12 usecs [ 0.590759] calling sbf_init+0x0/0xe4 @ 1 [ 0.590763] Simple Boot Flag at 0x7c set to 0x1 [ 0.590768] initcall sbf_init+0x0/0xe4 returned 0 after 7 usecs [ 0.590770] calling i8237A_init_sysfs+0x0/0x1d @ 1 [ 0.590777] initcall i8237A_init_sysfs+0x0/0x1d returned 0 after 4 usecs [ 0.590779] calling add_rtc_cmos+0x0/0x98 @ 1 [ 0.590784] initcall add_rtc_cmos+0x0/0x98 returned 0 after 3 usecs [ 0.590789] calling cache_sysfs_init+0x0/0x62 @ 1 [ 0.590897] initcall cache_sysfs_init+0x0/0x62 returned 0 after 103 usecs [ 0.590899] calling mcheck_init_device+0x0/0xeb @ 1 [ 0.590969] initcall mcheck_init_device+0x0/0xeb returned 0 after 66 usecs [ 0.590971] calling threshold_init_device+0x0/0x71 @ 1 [ 0.590973] initcall threshold_init_device+0x0/0x71 returned 0 after 0 usecs [ 0.590975] calling thermal_throttle_init_device+0x0/0x77 @ 1 [ 0.590980] initcall thermal_throttle_init_device+0x0/0x77 returned 0 after 3 usecs [ 0.590982] calling powernow_k6_init+0x0/0x90 @ 1 [ 0.590984] initcall powernow_k6_init+0x0/0x90 returned -19 after 0 usecs [ 0.590986] calling longrun_init+0x0/0x2d @ 1 [ 0.590988] initcall longrun_init+0x0/0x2d returned -19 after 0 usecs [ 0.590989] calling cpufreq_gx_init+0x0/0x182 @ 1 [ 0.590992] initcall cpufreq_gx_init+0x0/0x182 returned -19 after 0 usecs [ 0.590993] calling speedstep_init+0x0/0xe3 @ 1 [ 0.590995] initcall speedstep_init+0x0/0xe3 returned -19 after 0 usecs [ 0.590997] calling speedstep_init+0x0/0xae @ 1 [ 0.590999] initcall speedstep_init+0x0/0xae returned -19 after 0 usecs [ 0.591000] calling nforce2_init+0x0/0x6f @ 1 [ 0.591003] cpufreq-nforce2: No nForce2 chipset. [ 0.591004] initcall nforce2_init+0x0/0x6f returned -19 after 2 usecs [ 0.591008] calling ioapic_init_sysfs+0x0/0x8b @ 1 [ 0.591016] initcall ioapic_init_sysfs+0x0/0x8b returned 0 after 5 usecs [ 0.591018] calling add_pcspkr+0x0/0x2b @ 1 [ 0.591031] initcall add_pcspkr+0x0/0x2b returned 0 after 10 usecs [ 0.591036] calling start_periodic_check_for_corruption+0x0/0x40 @ 1 [ 0.591038] Scanning for low memory corruption every 60 seconds [ 0.591046] initcall start_periodic_check_for_corruption+0x0/0x40 returned 0 after 7 usecs [ 0.591048] calling init_sched_debug_procfs+0x0/0x30 @ 1 [ 0.591078] initcall init_sched_debug_procfs+0x0/0x30 returned 0 after 26 usecs [ 0.591080] calling proc_schedstat_init+0x0/0x27 @ 1 [ 0.591082] initcall proc_schedstat_init+0x0/0x27 returned 0 after 0 usecs [ 0.591084] calling proc_execdomains_init+0x0/0x27 @ 1 [ 0.591087] initcall proc_execdomains_init+0x0/0x27 returned 0 after 1 usecs [ 0.591089] calling ioresources_init+0x0/0x44 @ 1 [ 0.591092] initcall ioresources_init+0x0/0x44 returned 0 after 1 usecs [ 0.591093] calling uid_cache_init+0x0/0x8a @ 1 [ 0.591096] initcall uid_cache_init+0x0/0x8a returned 0 after 1 usecs [ 0.591098] calling init_posix_timers+0x0/0x157 @ 1 [ 0.591103] initcall init_posix_timers+0x0/0x157 returned 0 after 2 usecs [ 0.591105] calling init_posix_cpu_timers+0x0/0xb7 @ 1 [ 0.591107] initcall init_posix_cpu_timers+0x0/0xb7 returned 0 after 0 usecs [ 0.591109] calling nsproxy_cache_init+0x0/0x32 @ 1 [ 0.591111] initcall nsproxy_cache_init+0x0/0x32 returned 0 after 0 usecs [ 0.591115] calling create_proc_profile+0x0/0x70 @ 1 [ 0.591117] initcall create_proc_profile+0x0/0x70 returned 0 after 0 usecs [ 0.591120] calling timekeeping_init_device+0x0/0x1d @ 1 [ 0.591129] initcall timekeeping_init_device+0x0/0x1d returned 0 after 7 usecs [ 0.591131] calling init_clocksource_sysfs+0x0/0x43 @ 1 [ 0.591138] initcall init_clocksource_sysfs+0x0/0x43 returned 0 after 5 usecs [ 0.591140] calling init_timer_list_procfs+0x0/0x30 @ 1 [ 0.591143] initcall init_timer_list_procfs+0x0/0x30 returned 0 after 0 usecs [ 0.591145] calling init_tstats_procfs+0x0/0x30 @ 1 [ 0.591147] initcall init_tstats_procfs+0x0/0x30 returned 0 after 0 usecs [ 0.591149] calling futex_init+0x0/0x85 @ 1 [ 0.591154] initcall futex_init+0x0/0x85 returned 0 after 3 usecs [ 0.591156] calling proc_dma_init+0x0/0x27 @ 1 [ 0.591158] initcall proc_dma_init+0x0/0x27 returned 0 after 0 usecs [ 0.591160] calling proc_modules_init+0x0/0x27 @ 1 [ 0.591162] initcall proc_modules_init+0x0/0x27 returned 0 after 0 usecs [ 0.591164] calling kallsyms_init+0x0/0x2a @ 1 [ 0.591166] initcall kallsyms_init+0x0/0x2a returned 0 after 0 usecs [ 0.591168] calling snapshot_device_init+0x0/0xf @ 1 [ 0.591183] initcall snapshot_device_init+0x0/0xf returned 0 after 12 usecs [ 0.591185] calling crash_save_vmcoreinfo_init+0x0/0x4b4 @ 1 [ 0.591200] initcall crash_save_vmcoreinfo_init+0x0/0x4b4 returned 0 after 12 usecs [ 0.591202] calling crash_notes_memory_init+0x0/0x35 @ 1 [ 0.591206] initcall crash_notes_memory_init+0x0/0x35 returned 0 after 2 usecs [ 0.591208] calling pid_namespaces_init+0x0/0x32 @ 1 [ 0.591211] initcall pid_namespaces_init+0x0/0x32 returned 0 after 0 usecs [ 0.591213] calling audit_init+0x0/0x12c @ 1 [ 0.591214] audit: initializing netlink socket (disabled) [ 0.591220] type=2000 audit(1296072242.432:1): initialized [ 0.591223] initcall audit_init+0x0/0x12c returned 0 after 8 usecs [ 0.591224] calling audit_tree_init+0x0/0x3b @ 1 [ 0.591227] initcall audit_tree_init+0x0/0x3b returned 0 after 0 usecs [ 0.591229] calling init_kprobes+0x0/0x156 @ 1 [ 0.598890] initcall init_kprobes+0x0/0x156 returned 0 after 7497 usecs [ 0.598892] calling hung_task_init+0x0/0x4e @ 1 [ 0.598929] initcall hung_task_init+0x0/0x4e returned 0 after 33 usecs [ 0.598932] calling utsname_sysctl_init+0x0/0x11 @ 1 [ 0.598946] initcall utsname_sysctl_init+0x0/0x11 returned 0 after 11 usecs [ 0.598948] calling init_tracepoints+0x0/0x20 @ 1 [ 0.598950] initcall init_tracepoints+0x0/0x20 returned 0 after 0 usecs [ 0.598952] calling init_lstats_procfs+0x0/0x2a @ 1 [ 0.598957] initcall init_lstats_procfs+0x0/0x2a returned 0 after 3 usecs [ 0.598959] calling ftrace_mod_cmd_init+0x0/0xf @ 1 [ 0.598961] initcall ftrace_mod_cmd_init+0x0/0xf returned 0 after 0 usecs [ 0.598963] calling init_events+0x0/0x5f @ 1 [ 0.598970] initcall init_events+0x0/0x5f returned 0 after 4 usecs [ 0.598972] calling init_sched_switch_trace+0x0/0xf @ 1 [ 0.598974] initcall init_sched_switch_trace+0x0/0xf returned 0 after 0 usecs [ 0.598976] calling init_function_trace+0x0/0x35 @ 1 [ 0.598979] initcall init_function_trace+0x0/0x35 returned 0 after 0 usecs [ 0.598981] calling init_wakeup_tracer+0x0/0x1d @ 1 [ 0.598983] initcall init_wakeup_tracer+0x0/0x1d returned 0 after 0 usecs [ 0.598985] calling stack_trace_init+0x0/0x68 @ 1 [ 0.598992] initcall stack_trace_init+0x0/0x68 returned 0 after 5 usecs [ 0.598994] calling init_mmio_trace+0x0/0xf @ 1 [ 0.598996] initcall init_mmio_trace+0x0/0xf returned 0 after 0 usecs [ 0.598998] calling init_graph_trace+0x0/0x6e @ 1 [ 0.599002] initcall init_graph_trace+0x0/0x6e returned 0 after 1 usecs [ 0.599004] calling init_blk_tracer+0x0/0x56 @ 1 [ 0.599007] initcall init_blk_tracer+0x0/0x56 returned 0 after 1 usecs [ 0.599009] calling perf_event_sysfs_init+0x0/0x14 @ 1 [ 0.599014] initcall perf_event_sysfs_init+0x0/0x14 returned 0 after 3 usecs [ 0.599016] calling init_per_zone_wmark_min+0x0/0x64 @ 1 [ 0.599109] initcall init_per_zone_wmark_min+0x0/0x64 returned 0 after 89 usecs [ 0.599111] calling kswapd_init+0x0/0x1d @ 1 [ 0.599134] initcall kswapd_init+0x0/0x1d returned 0 after 20 usecs [ 0.599137] calling setup_vmstat+0x0/0xcf @ 1 [ 0.599145] initcall setup_vmstat+0x0/0xcf returned 0 after 6 usecs [ 0.599147] calling mm_sysfs_init+0x0/0x22 @ 1 [ 0.599151] initcall mm_sysfs_init+0x0/0x22 returned 0 after 2 usecs [ 0.599153] calling proc_vmalloc_init+0x0/0x2a @ 1 [ 0.599155] initcall proc_vmalloc_init+0x0/0x2a returned 0 after 0 usecs [ 0.599157] calling init_emergency_pool+0x0/0x7e @ 1 [ 0.599169] highmem bounce pool size: 64 pages [ 0.599170] initcall init_emergency_pool+0x0/0x7e returned 0 after 11 usecs [ 0.599172] calling procswaps_init+0x0/0x27 @ 1 [ 0.599174] initcall procswaps_init+0x0/0x27 returned 0 after 0 usecs [ 0.599176] calling hugetlb_init+0x0/0x1dd @ 1 [ 0.599179] HugeTLB registered 4 MB page size, pre-allocated 0 pages [ 0.599184] initcall hugetlb_init+0x0/0x1dd returned 0 after 6 usecs [ 0.599185] calling ksm_init+0x0/0x1c9 @ 1 [ 0.599209] initcall ksm_init+0x0/0x1c9 returned 0 after 21 usecs [ 0.599211] calling slab_proc_init+0x0/0x2a @ 1 [ 0.599214] initcall slab_proc_init+0x0/0x2a returned 0 after 1 usecs [ 0.599215] calling slab_sysfs_init+0x0/0xc8 @ 1 [ 0.600011] initcall slab_sysfs_init+0x0/0xc8 returned 0 after 776 usecs [ 0.600012] calling fasync_init+0x0/0x2f @ 1 [ 0.600017] initcall fasync_init+0x0/0x2f returned 0 after 3 usecs [ 0.600019] calling proc_filesystems_init+0x0/0x27 @ 1 [ 0.600022] initcall proc_filesystems_init+0x0/0x27 returned 0 after 1 usecs [ 0.600024] calling dnotify_init+0x0/0x81 @ 1 [ 0.600031] initcall dnotify_init+0x0/0x81 returned 0 after 5 usecs [ 0.600033] calling inotify_setup+0x0/0x11 @ 1 [ 0.600034] initcall inotify_setup+0x0/0x11 returned 0 after 0 usecs [ 0.600036] calling inotify_user_setup+0x0/0x78 @ 1 [ 0.600043] initcall inotify_user_setup+0x0/0x78 returned 0 after 5 usecs [ 0.600045] calling aio_setup+0x0/0xac @ 1 [ 0.600108] initcall aio_setup+0x0/0xac returned 0 after 59 usecs [ 0.600110] calling proc_locks_init+0x0/0x27 @ 1 [ 0.600112] initcall proc_locks_init+0x0/0x27 returned 0 after 1 usecs [ 0.600114] calling init_mbcache+0x0/0x11 @ 1 [ 0.600116] initcall init_mbcache+0x0/0x11 returned 0 after 0 usecs [ 0.600118] calling dquot_init+0x0/0x10f @ 1 [ 0.600119] VFS: Disk quotas dquot_6.5.2 [ 0.600158] Dquot-cache hash table entries: 1024 (order 0, 4096 bytes) [ 0.600160] initcall dquot_init+0x0/0x10f returned 0 after 40 usecs [ 0.600162] calling quota_init+0x0/0x24 @ 1 [ 0.600167] initcall quota_init+0x0/0x24 returned 0 after 3 usecs [ 0.600169] calling proc_cmdline_init+0x0/0x27 @ 1 [ 0.600171] initcall proc_cmdline_init+0x0/0x27 returned 0 after 1 usecs [ 0.600173] calling proc_cpuinfo_init+0x0/0x27 @ 1 [ 0.600176] initcall proc_cpuinfo_init+0x0/0x27 returned 0 after 0 usecs [ 0.600177] calling proc_devices_init+0x0/0x27 @ 1 [ 0.600180] initcall proc_devices_init+0x0/0x27 returned 0 after 0 usecs [ 0.600181] calling proc_interrupts_init+0x0/0x27 @ 1 [ 0.600184] initcall proc_interrupts_init+0x0/0x27 returned 0 after 0 usecs [ 0.600185] calling proc_loadavg_init+0x0/0x27 @ 1 [ 0.600188] initcall proc_loadavg_init+0x0/0x27 returned 0 after 0 usecs [ 0.600190] calling proc_meminfo_init+0x0/0x27 @ 1 [ 0.600192] initcall proc_meminfo_init+0x0/0x27 returned 0 after 0 usecs [ 0.600194] calling proc_stat_init+0x0/0x27 @ 1 [ 0.600196] initcall proc_stat_init+0x0/0x27 returned 0 after 0 usecs [ 0.600198] calling proc_uptime_init+0x0/0x27 @ 1 [ 0.600200] initcall proc_uptime_init+0x0/0x27 returned 0 after 0 usecs [ 0.600202] calling proc_version_init+0x0/0x27 @ 1 [ 0.600204] initcall proc_version_init+0x0/0x27 returned 0 after 0 usecs [ 0.600206] calling proc_softirqs_init+0x0/0x27 @ 1 [ 0.600208] initcall proc_softirqs_init+0x0/0x27 returned 0 after 0 usecs [ 0.600210] calling proc_kcore_init+0x0/0xae @ 1 [ 0.600213] initcall proc_kcore_init+0x0/0xae returned 0 after 1 usecs [ 0.600215] calling vmcore_init+0x0/0x7e @ 1 [ 0.600217] initcall vmcore_init+0x0/0x7e returned 0 after 0 usecs [ 0.600218] calling proc_kmsg_init+0x0/0x2a @ 1 [ 0.600221] initcall proc_kmsg_init+0x0/0x2a returned 0 after 0 usecs [ 0.600223] calling proc_page_init+0x0/0x4a @ 1 [ 0.600226] initcall proc_page_init+0x0/0x4a returned 0 after 1 usecs [ 0.600228] calling proc_version_signature_init+0x0/0x27 @ 1 [ 0.600230] initcall proc_version_signature_init+0x0/0x27 returned 0 after 0 usecs [ 0.600232] calling init_devpts_fs+0x0/0x3d @ 1 [ 0.600244] initcall init_devpts_fs+0x0/0x3d returned 0 after 9 usecs [ 0.600246] calling init_ext3_fs+0x0/0x6a @ 1 [ 0.600282] initcall init_ext3_fs+0x0/0x6a returned 0 after 33 usecs [ 0.600284] calling init_ext2_fs+0x0/0x6a @ 1 [ 0.600305] initcall init_ext2_fs+0x0/0x6a returned 0 after 18 usecs [ 0.600306] calling init_ext4_fs+0x0/0xd4 @ 1 [ 0.600400] initcall init_ext4_fs+0x0/0xd4 returned 0 after 89 usecs [ 0.600402] calling journal_init+0x0/0xa3 @ 1 [ 0.600443] initcall journal_init+0x0/0xa3 returned 0 after 38 usecs [ 0.600445] calling journal_init+0x0/0xb4 @ 1 [ 0.600474] initcall journal_init+0x0/0xb4 returned 0 after 26 usecs [ 0.600476] calling init_ramfs_fs+0x0/0xf @ 1 [ 0.600479] initcall init_ramfs_fs+0x0/0xf returned 0 after 0 usecs [ 0.600480] calling init_hugetlbfs_fs+0x0/0x8b @ 1 [ 0.600509] initcall init_hugetlbfs_fs+0x0/0x8b returned 0 after 26 usecs [ 0.600511] calling ecryptfs_init+0x0/0x1b3 @ 1 [ 0.600615] initcall ecryptfs_init+0x0/0x1b3 returned 0 after 98 usecs [ 0.600617] calling fuse_init+0x0/0x123 @ 1 [ 0.600618] fuse init (API version 7.14) [ 0.600671] initcall fuse_init+0x0/0x123 returned 0 after 50 usecs [ 0.600672] calling ipc_init+0x0/0x20 @ 1 [ 0.600676] msgmni has been set to 1658 [ 0.600680] initcall ipc_init+0x0/0x20 returned 0 after 6 usecs [ 0.600682] calling ipc_sysctl_init+0x0/0x11 @ 1 [ 0.600696] initcall ipc_sysctl_init+0x0/0x11 returned 0 after 11 usecs [ 0.600698] calling init_mqueue_fs+0x0/0x9f @ 1 [ 0.600732] initcall init_mqueue_fs+0x0/0x9f returned 0 after 30 usecs [ 0.600733] calling key_proc_init+0x0/0x37 @ 1 [ 0.600737] initcall key_proc_init+0x0/0x37 returned 0 after 1 usecs [ 0.600739] calling selinux_nf_ip_init+0x0/0x65 @ 1 [ 0.600741] initcall selinux_nf_ip_init+0x0/0x65 returned 0 after 0 usecs [ 0.600742] calling init_sel_fs+0x0/0x5c @ 1 [ 0.600744] initcall init_sel_fs+0x0/0x5c returned 0 after 0 usecs [ 0.600746] calling selnl_init+0x0/0x59 @ 1 [ 0.600752] initcall selnl_init+0x0/0x59 returned 0 after 3 usecs [ 0.600753] calling sel_netif_init+0x0/0x6d @ 1 [ 0.600755] initcall sel_netif_init+0x0/0x6d returned 0 after 0 usecs [ 0.600757] calling sel_netnode_init+0x0/0x78 @ 1 [ 0.600759] initcall sel_netnode_init+0x0/0x78 returned 0 after 0 usecs [ 0.600760] calling sel_netport_init+0x0/0x78 @ 1 [ 0.600762] initcall sel_netport_init+0x0/0x78 returned 0 after 0 usecs [ 0.600764] calling aurule_init+0x0/0x46 @ 1 [ 0.600766] initcall aurule_init+0x0/0x46 returned 0 after 0 usecs [ 0.600768] calling init_smk_fs+0x0/0x6d @ 1 [ 0.600770] initcall init_smk_fs+0x0/0x6d returned 0 after 0 usecs [ 0.600772] calling crypto_wq_init+0x0/0x3a @ 1 [ 0.600826] initcall crypto_wq_init+0x0/0x3a returned 0 after 50 usecs [ 0.600828] calling crypto_algapi_init+0x0/0xc @ 1 [ 0.600834] initcall crypto_algapi_init+0x0/0xc returned 0 after 3 usecs [ 0.600835] calling skcipher_module_init+0x0/0x2e @ 1 [ 0.600837] initcall skcipher_module_init+0x0/0x2e returned 0 after 0 usecs [ 0.600839] calling chainiv_module_init+0x0/0xf @ 1 [ 0.600842] initcall chainiv_module_init+0x0/0xf returned 0 after 0 usecs [ 0.600844] calling eseqiv_module_init+0x0/0xf @ 1 [ 0.600846] initcall eseqiv_module_init+0x0/0xf returned 0 after 0 usecs [ 0.600847] calling hmac_module_init+0x0/0xf @ 1 [ 0.600849] initcall hmac_module_init+0x0/0xf returned 0 after 0 usecs [ 0.600851] calling md5_mod_init+0x0/0xf @ 1 [ 0.600959] initcall md5_mod_init+0x0/0xf returned 0 after 101 usecs [ 0.600961] calling crypto_ecb_module_init+0x0/0xf @ 1 [ 0.600963] initcall crypto_ecb_module_init+0x0/0xf returned 0 after 0 usecs [ 0.600965] calling crypto_cbc_module_init+0x0/0xf @ 1 [ 0.600967] initcall crypto_cbc_module_init+0x0/0xf returned 0 after 0 usecs [ 0.600969] calling krng_mod_init+0x0/0xf @ 1 [ 0.601023] initcall krng_mod_init+0x0/0xf returned 0 after 49 usecs [ 0.601026] calling proc_genhd_init+0x0/0x44 @ 1 [ 0.601030] initcall proc_genhd_init+0x0/0x44 returned 0 after 2 usecs [ 0.601032] calling bsg_init+0x0/0x119 @ 1 [ 0.601065] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 253) [ 0.601067] initcall bsg_init+0x0/0x119 returned 0 after 32 usecs [ 0.601069] calling noop_init+0x0/0x11 @ 1 [ 0.601071] io scheduler noop registered [ 0.601072] initcall noop_init+0x0/0x11 returned 0 after 1 usecs [ 0.601074] calling deadline_init+0x0/0x11 @ 1 [ 0.601075] io scheduler deadline registered [ 0.601077] initcall deadline_init+0x0/0x11 returned 0 after 1 usecs [ 0.601079] calling cfq_init+0x0/0x9e @ 1 [ 0.601087] io scheduler cfq registered (default) [ 0.601089] initcall cfq_init+0x0/0x9e returned 0 after 8 usecs [ 0.601092] calling percpu_counter_startup+0x0/0x16 @ 1 [ 0.601094] initcall percpu_counter_startup+0x0/0x16 returned 0 after 0 usecs [ 0.601096] calling audit_classes_init+0x0/0x4f @ 1 [ 0.601100] initcall audit_classes_init+0x0/0x4f returned 0 after 1 usecs [ 0.601101] calling lnw_gpio_init+0x0/0x16 @ 1 [ 0.601116] initcall lnw_gpio_init+0x0/0x16 returned 0 after 12 usecs [ 0.601118] calling timbgpio_init+0x0/0xf @ 1 [ 0.601126] initcall timbgpio_init+0x0/0xf returned 0 after 5 usecs [ 0.601128] calling ucb1400_gpio_init+0x0/0xf @ 1 [ 0.601134] initcall ucb1400_gpio_init+0x0/0xf returned 0 after 3 usecs [ 0.601136] calling pci_proc_init+0x0/0x64 @ 1 [ 0.601167] initcall pci_proc_init+0x0/0x64 returned 0 after 28 usecs [ 0.601169] calling pcie_portdrv_init+0x0/0x51 @ 1 [ 0.601196] pcieport 0000:00:1c.0: setting latency timer to 64 [ 0.601239] alloc irq_desc for 40 on node -1 [ 0.601240] alloc kstat_irqs on node -1 [ 0.601251] pcieport 0000:00:1c.0: irq 40 for MSI/MSI-X [ 0.601329] pcieport 0000:00:1c.1: setting latency timer to 64 [ 0.601369] alloc irq_desc for 41 on node -1 [ 0.601370] alloc kstat_irqs on node -1 [ 0.601377] pcieport 0000:00:1c.1: irq 41 for MSI/MSI-X [ 0.601452] pcieport 0000:00:1c.2: setting latency timer to 64 [ 0.601493] alloc irq_desc for 42 on node -1 [ 0.601494] alloc kstat_irqs on node -1 [ 0.601501] pcieport 0000:00:1c.2: irq 42 for MSI/MSI-X [ 0.601574] pcieport 0000:00:1c.3: setting latency timer to 64 [ 0.601614] alloc irq_desc for 43 on node -1 [ 0.601615] alloc kstat_irqs on node -1 [ 0.601622] pcieport 0000:00:1c.3: irq 43 for MSI/MSI-X [ 0.601693] initcall pcie_portdrv_init+0x0/0x51 returned 0 after 510 usecs [ 0.601695] calling aer_service_init+0x0/0x28 @ 1 [ 0.601701] initcall aer_service_init+0x0/0x28 returned 0 after 4 usecs [ 0.601703] calling pcie_pme_service_init+0x0/0x1d @ 1 [ 0.601705] initcall pcie_pme_service_init+0x0/0x1d returned -19 after 0 usecs [ 0.601708] calling ioapic_init+0x0/0x16 @ 1 [ 0.601718] initcall ioapic_init+0x0/0x16 returned 0 after 7 usecs [ 0.601720] calling pci_hotplug_init+0x0/0x4d @ 1 [ 0.601721] pci_hotplug: PCI Hot Plug PCI Core version: 0.5 [ 0.601723] initcall pci_hotplug_init+0x0/0x4d returned 0 after 1 usecs [ 0.601724] calling pcied_init+0x0/0x76 @ 1 [ 0.601864] pciehp: PCI Express Hot Plug Controller Driver version: 0.4 [ 0.601866] initcall pcied_init+0x0/0x76 returned 0 after 137 usecs [ 0.601868] calling fb_console_init+0x0/0x11f @ 1 [ 0.601882] initcall fb_console_init+0x0/0x11f returned 0 after 12 usecs [ 0.601884] calling imsttfb_init+0x0/0x40 @ 1 [ 0.601892] initcall imsttfb_init+0x0/0x40 returned 0 after 6 usecs [ 0.601894] calling asiliantfb_init+0x0/0x2b @ 1 [ 0.601901] initcall asiliantfb_init+0x0/0x2b returned 0 after 5 usecs [ 0.601903] calling vesafb_init+0x0/0x81 @ 1 [ 0.601926] initcall vesafb_init+0x0/0x81 returned -19 after 21 usecs [ 0.601928] calling efifb_init+0x0/0x7b @ 1 [ 0.601933] initcall efifb_init+0x0/0x7b returned -19 after 3 usecs [ 0.601935] calling intel_idle_init+0x0/0x55 @ 1 [ 0.601937] intel_idle: MWAIT substates: 0x1120 [ 0.601938] intel_idle: v0.4 model 0x25 [ 0.601939] intel_idle: lapic_timer_reliable_states 0xffffffff [ 0.601957] initcall intel_idle_init+0x0/0x55 returned 0 after 20 usecs [ 0.601959] calling acpi_reserve_resources+0x0/0xc8 @ 1 [ 0.601963] initcall acpi_reserve_resources+0x0/0xc8 returned 0 after 2 usecs [ 0.601965] calling irqrouter_init_sysfs+0x0/0x33 @ 1 [ 0.601973] initcall irqrouter_init_sysfs+0x0/0x33 returned 0 after 6 usecs [ 0.601975] calling acpi_ac_init+0x0/0x3d @ 1 [ 0.602069] ACPI: AC Adapter [ADP1] (on-line) [ 0.602077] initcall acpi_ac_init+0x0/0x3d returned 0 after 98 usecs [ 0.602079] calling acpi_button_init+0x0/0x4a @ 1 [ 0.602121] input: Power Button as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0C:00/input/input0 [ 0.602132] ACPI: Power Button [PWRB] [ 0.602200] input: Lid Switch as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0D:00/input/input1 [ 0.602468] ACPI: Lid Switch [LID] [ 0.602495] input: Power Button as /devices/LNXSYSTM:00/LNXPWRBN:00/input/input2 [ 0.602498] ACPI: Power Button [PWRF] [ 0.602510] initcall acpi_button_init+0x0/0x4a returned 0 after 419 usecs [ 0.602512] calling acpi_fan_init+0x0/0x4a @ 1 [ 0.602525] initcall acpi_fan_init+0x0/0x4a returned 0 after 11 usecs [ 0.602527] calling acpi_pci_slot_init+0x0/0x1b @ 1 [ 0.602919] initcall acpi_pci_slot_init+0x0/0x1b returned 0 after 381 usecs [ 0.602921] calling acpi_processor_init+0x0/0x102 @ 1 [ 0.602923] ACPI: acpi_idle yielding to intel_idleinitcall acpi_processor_init+0x0/0x102 returned 0 after 301 usecs [ 0.603234] calling acpi_container_init+0x0/0x4d @ 1 [ 0.605476] initcall acpi_container_init+0x0/0x4d returned 0 after 2192 usecs [ 0.605478] calling acpi_thermal_init+0x0/0x6e @ 1 [ 0.605695] thermal LNXTHERM:01: registered as thermal_zone0 [ 0.605700] ACPI: Thermal Zone [TZ01] (81 C) [ 0.605707] initcall acpi_thermal_init+0x0/0x6e returned 0 after 222 usecs [ 0.605709] calling acpi_battery_init+0x0/0x40 @ 1 [ 0.605735] initcall acpi_battery_init+0x0/0x40 returned 0 after 22 usecs [ 0.605737] calling acpi_smb_hc_init+0x0/0x15 @ 1 [ 0.605751] calling 2_acpi_battery_update_async+0x0/0x4f @ 62 [ 0.605776] initcall acpi_smb_hc_init+0x0/0x15 returned 0 after 35 usecs [ 0.605779] calling acpi_sbs_init+0x0/0x46 @ 1 [ 0.605793] ACPI: Battery Slot [BAT1] (battery absent) [ 0.605795] initcall 2_acpi_battery_update_async+0x0/0x4f returned 0 after 40 usecs [ 0.605798] initcall acpi_sbs_init+0x0/0x46 returned 0 after 14 usecs [ 0.605801] calling erst_init+0x0/0x22b @ 1 [ 0.605804] ERST: Table is not found! [ 0.605807] initcall erst_init+0x0/0x22b returned 0 after 2 usecs [ 0.605810] calling pnpbios_thread_init+0x0/0x56 @ 1 [ 0.605812] initcall pnpbios_thread_init+0x0/0x56 returned 0 after 0 usecs [ 0.605816] calling isapnp_init+0x0/0x11 @ 1 [ 0.605821] initcall isapnp_init+0x0/0x11 returned 3 after 2 usecs [ 0.605825] calling 3_async_isapnp_init+0x0/0xa @ 62 [ 0.605828] initcall isapnp_init+0x0/0x11 returned with error code 3 [ 0.605834] calling rand_initialize+0x0/0x30 @ 1 [ 0.605836] isapnp: Scanning for PnP cards... [ 0.605856] initcall rand_initialize+0x0/0x30 returned 0 after 16 usecs [ 0.605859] calling pty_init+0x0/0x11 @ 1 [ 0.605913] initcall pty_init+0x0/0x11 returned 0 after 49 usecs [ 0.605916] calling sysrq_init+0x0/0x58 @ 1 [ 0.605923] initcall sysrq_init+0x0/0x58 returned 0 after 3 usecs [ 0.605926] calling hpet_init+0x0/0x57 @ 1 [ 0.606103] initcall hpet_init+0x0/0x57 returned 0 after 169 usecs [ 0.606106] calling cn_proc_init+0x0/0x33 @ 1 [ 0.606121] initcall cn_proc_init+0x0/0x33 returned 0 after 11 usecs [ 0.606124] calling serial8250_init+0x0/0x156 @ 1 [ 0.606126] Serial: 8250/16550 driver, 4 ports, IRQ sharing enabled [ 0.606290] initcall serial8250_init+0x0/0x156 returned 0 after 158 usecs [ 0.606293] calling serial8250_pnp_init+0x0/0xf @ 1 [ 0.606454] initcall serial8250_pnp_init+0x0/0xf returned 0 after 153 usecs [ 0.606457] calling serial8250_pci_init+0x0/0x16 @ 1 [ 0.606486] initcall serial8250_pci_init+0x0/0x16 returned 0 after 24 usecs [ 0.606489] calling init_kgdboc+0x0/0x15 @ 1 [ 0.606492] initcall init_kgdboc+0x0/0x15 returned 0 after 0 usecs [ 0.606495] calling isa_bus_init+0x0/0x33 @ 1 [ 0.606512] initcall isa_bus_init+0x0/0x33 returned 0 after 13 usecs [ 0.606518] calling topology_sysfs_init+0x0/0x51 @ 1 [ 0.606535] initcall topology_sysfs_init+0x0/0x51 returned 0 after 13 usecs [ 0.606538] calling brd_init+0x0/0x162 @ 1 [ 0.607487] brd: module loaded [ 0.607491] initcall brd_init+0x0/0x162 returned 0 after 929 usecs [ 0.607494] calling loop_init+0x0/0x17f @ 1 [ 0.607996] loop: module loaded [ 0.608000] initcall loop_init+0x0/0x17f returned 0 after 491 usecs [ 0.608003] calling pkt_init+0x0/0x1ba @ 1 [ 0.608046] initcall pkt_init+0x0/0x1ba returned 0 after 38 usecs [ 0.608049] calling htcpld_core_init+0x0/0x24 @ 1 [ 0.608071] initcall htcpld_core_init+0x0/0x24 returned -19 after 17 usecs [ 0.608074] calling wm8994_i2c_init+0x0/0x30 @ 1 [ 0.608082] initcall wm8994_i2c_init+0x0/0x30 returned 0 after 5 usecs [ 0.608087] calling twl4030_codec_init+0x0/0x14 @ 1 [ 0.608096] initcall twl4030_codec_init+0x0/0x14 returned 0 after 5 usecs [ 0.608099] calling adp5520_init+0x0/0x11 @ 1 [ 0.608108] initcall adp5520_init+0x0/0x11 returned 0 after 5 usecs [ 0.608111] calling mac_hid_init+0x0/0x1c @ 1 [ 0.608121] initcall mac_hid_init+0x0/0x1c returned 0 after 6 usecs [ 0.608124] calling scsi_dh_init+0x0/0x37 @ 1 [ 0.608127] initcall scsi_dh_init+0x0/0x37 returned 0 after 0 usecs [ 0.608130] calling init_sd+0x0/0x14b @ 1 [ 0.608157] initcall init_sd+0x0/0x14b returned 0 after 23 usecs [ 0.608160] calling init_sr+0x0/0x3d @ 1 [ 0.608168] initcall init_sr+0x0/0x3d returned 0 after 5 usecs [ 0.608171] calling init_sg+0x0/0x115 @ 1 [ 0.608187] initcall init_sg+0x0/0x115 returned 0 after 12 usecs [ 0.608190] calling adma_ata_init+0x0/0x16 @ 1 [ 0.608202] initcall adma_ata_init+0x0/0x16 returned 0 after 9 usecs [ 0.608206] calling piix_init+0x0/0x24 @ 1 [ 0.608222] initcall piix_init+0x0/0x24 returned 0 after 13 usecs [ 0.608225] calling sis_init+0x0/0x16 @ 1 [ 0.608238] initcall sis_init+0x0/0x16 returned 0 after 9 usecs [ 0.608241] calling pacpi_init+0x0/0x16 @ 1 [ 0.608253] initcall pacpi_init+0x0/0x16 returned 0 after 9 usecs [ 0.608256] calling ata_generic_init+0x0/0x16 @ 1 [ 0.608269] initcall ata_generic_init+0x0/0x16 returned 0 after 9 usecs [ 0.608272] calling marvell_init+0x0/0x4d @ 1 [ 0.608316] initcall marvell_init+0x0/0x4d returned 0 after 39 usecs [ 0.608319] calling davicom_init+0x0/0x4d @ 1 [ 0.608338] initcall davicom_init+0x0/0x4d returned 0 after 15 usecs [ 0.608341] calling cicada_init+0x0/0x33 @ 1 [ 0.608354] initcall cicada_init+0x0/0x33 returned 0 after 10 usecs [ 0.608357] calling lxt_init+0x0/0x4d @ 1 [ 0.608376] initcall lxt_init+0x0/0x4d returned 0 after 14 usecs [ 0.608379] calling qs6612_init+0x0/0xf @ 1 [ 0.608387] initcall qs6612_init+0x0/0xf returned 0 after 5 usecs [ 0.608390] calling smsc_init+0x0/0x81 @ 1 [ 0.608421] initcall smsc_init+0x0/0x81 returned 0 after 27 usecs [ 0.608424] calling vsc82xx_init+0x0/0x33 @ 1 [ 0.608439] initcall vsc82xx_init+0x0/0x33 returned 0 after 12 usecs [ 0.608442] calling broadcom_init+0x0/0x117 @ 1 [ 0.608508] initcall broadcom_init+0x0/0x117 returned 0 after 60 usecs [ 0.608511] calling ip175c_init+0x0/0xf @ 1 [ 0.608520] initcall ip175c_init+0x0/0xf returned 0 after 6 usecs [ 0.608523] calling realtek_init+0x0/0xf @ 1 [ 0.608534] initcall realtek_init+0x0/0xf returned 0 after 7 usecs [ 0.608537] calling et1011c_init+0x0/0xf @ 1 [ 0.608545] initcall et1011c_init+0x0/0xf returned 0 after 5 usecs [ 0.608548] calling fixed_mdio_bus_init+0x0/0xdb @ 1 [ 0.608575] Fixed MDIO Bus: probed [ 0.608578] initcall fixed_mdio_bus_init+0x0/0xdb returned 0 after 26 usecs [ 0.608581] calling mdio_gpio_init+0x0/0xf @ 1 [ 0.608589] initcall mdio_gpio_init+0x0/0xf returned 0 after 5 usecs [ 0.608592] calling ns_init+0x0/0xf @ 1 [ 0.608602] initcall ns_init+0x0/0xf returned 0 after 7 usecs [ 0.608604] calling ste10Xp_init+0x0/0x1d @ 1 [ 0.608619] initcall ste10Xp_init+0x0/0x1d returned 0 after 11 usecs [ 0.608622] calling net_olddevs_init+0x0/0x1a @ 1 [ 0.608628] initcall net_olddevs_init+0x0/0x1a returned 0 after 3 usecs [ 0.608631] calling ppp_init+0x0/0xe5 @ 1 [ 0.608632] PPP generic driver version 2.4.2 [ 0.608663] initcall ppp_init+0x0/0xe5 returned 0 after 28 usecs [ 0.608665] calling tun_init+0x0/0x8b @ 1 [ 0.608667] tun: Universal TUN/TAP device driver, 1.6 [ 0.608669] tun: (C) 1999-2004 Max Krasnyansky [ 0.608692] initcall tun_init+0x0/0x8b returned 0 after 23 usecs [ 0.608695] calling cdrom_init+0x0/0x5b @ 1 [ 0.608709] initcall cdrom_init+0x0/0x5b returned 0 after 11 usecs [ 0.608712] calling mon_init+0x0/0xe9 @ 1 [ 0.608748] initcall mon_init+0x0/0xe9 returned 0 after 33 usecs [ 0.608751] calling ehci_hcd_init+0x0/0x6d @ 1 [ 0.608753] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver [ 0.608774] ehci_hcd 0000:00:1a.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16 [ 0.608786] ehci_hcd 0000:00:1a.0: setting latency timer to 64 [ 0.608790] ehci_hcd 0000:00:1a.0: EHCI Host Controller [ 0.608821] ehci_hcd 0000:00:1a.0: new USB bus registered, assigned bus number 1 [ 0.608849] ehci_hcd 0000:00:1a.0: debug port 2 [ 0.612724] ehci_hcd 0000:00:1a.0: cache line size of 64 is not supported [ 0.612745] ehci_hcd 0000:00:1a.0: irq 16, io mem 0xd4727c00 [ 0.625706] ehci_hcd 0000:00:1a.0: USB 2.0 started, EHCI 1.00 [ 0.625820] hub 1-0:1.0: USB hub found [ 0.625825] hub 1-0:1.0: 3 ports detected [ 0.625892] alloc irq_desc for 23 on node -1 [ 0.625894] alloc kstat_irqs on node -1 [ 0.625900] ehci_hcd 0000:00:1d.0: PCI INT A -> GSI 23 (level, low) -> IRQ 23 [ 0.625915] ehci_hcd 0000:00:1d.0: setting latency timer to 64 [ 0.625919] ehci_hcd 0000:00:1d.0: EHCI Host Controller [ 0.625951] ehci_hcd 0000:00:1d.0: new USB bus registered, assigned bus number 2 [ 0.625977] ehci_hcd 0000:00:1d.0: debug port 2 [ 0.629861] ehci_hcd 0000:00:1d.0: cache line size of 64 is not supported [ 0.629876] ehci_hcd 0000:00:1d.0: irq 23, io mem 0xd4727800 [ 0.645655] ehci_hcd 0000:00:1d.0: USB 2.0 started, EHCI 1.00 [ 0.645762] hub 2-0:1.0: USB hub found [ 0.645765] hub 2-0:1.0: 3 ports detected [ 0.645831] initcall ehci_hcd_init+0x0/0x6d returned 0 after 36298 usecs [ 0.645834] calling ohci_hcd_mod_init+0x0/0x51 @ 1 [ 0.645836] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver [ 0.645851] initcall ohci_hcd_mod_init+0x0/0x51 returned 0 after 13 usecs [ 0.645853] calling uhci_hcd_init+0x0/0xb4 @ 1 [ 0.645855] uhci_hcd: USB Universal Host Controller Interface driver [ 0.645895] initcall uhci_hcd_init+0x0/0xb4 returned 0 after 37 usecs [ 0.645898] calling i8042_init+0x0/0x73 @ 1 [ 0.645955] PNP: PS/2 Controller [PNP0303:PS2K,PNP0f13:PS2M] at 0x60,0x64 irq 1,12 [ 0.647986] serio: i8042 KBD port at 0x60,0x64 irq 1 [ 0.647994] serio: i8042 AUX port at 0x60,0x64 irq 12 [ 0.648004] initcall i8042_init+0x0/0x73 returned 0 after 2058 usecs [ 0.648007] calling mousedev_init+0x0/0x7f @ 1 [ 0.648060] mice: PS/2 mouse device common for all mice [ 0.648064] initcall mousedev_init+0x0/0x7f returned 0 after 53 usecs [ 0.648066] calling evdev_init+0x0/0xf @ 1 [ 0.648126] initcall evdev_init+0x0/0xf returned 0 after 55 usecs [ 0.648129] calling atkbd_init+0x0/0x20 @ 1 [ 0.648146] initcall atkbd_init+0x0/0x20 returned 0 after 13 usecs [ 0.648148] calling uinput_init+0x0/0xf @ 1 [ 0.648168] initcall uinput_init+0x0/0xf returned 0 after 16 usecs [ 0.648171] calling cmos_init+0x0/0x5e @ 1 [ 0.648196] rtc_cmos 00:08: RTC can wake from S4 [ 0.648236] rtc_cmos 00:08: rtc core: registered rtc_cmos as rtc0 [ 0.648267] rtc0: alarms up to one year, 242 bytes nvram, hpet irqs [ 0.648277] initcall cmos_init+0x0/0x5e returned 0 after 100 usecs [ 0.648280] calling dm_init+0x0/0x3f @ 1 [ 0.648368] device-mapper: uevent: version 1.0.3 [ 0.648472] device-mapper: ioctl: 4.17.0-ioctl (2010-03-05) initialised: dm-devel@redhat.com [ 0.648477] initcall dm_init+0x0/0x3f returned 0 after 190 usecs [ 0.648480] calling dm_multipath_init+0x0/0x13d @ 1 [ 0.648558] device-mapper: multipath: version 1.1.1 loaded [ 0.648561] initcall dm_multipath_init+0x0/0x13d returned 0 after 76 usecs [ 0.648564] calling dm_rr_init+0x0/0x3a @ 1 [ 0.648566] device-mapper: multipath round-robin: version 1.0.0 loaded [ 0.648569] initcall dm_rr_init+0x0/0x3a returned 0 after 2 usecs [ 0.648572] calling dm_snapshot_init+0x0/0x292 @ 1 [ 0.648611] initcall dm_snapshot_init+0x0/0x292 returned 0 after 35 usecs [ 0.648614] calling dm_mirror_init+0x0/0x77 @ 1 [ 0.648651] initcall dm_mirror_init+0x0/0x77 returned 0 after 32 usecs [ 0.648654] calling dm_dirty_log_init+0x0/0x4d @ 1 [ 0.648657] initcall dm_dirty_log_init+0x0/0x4d returned 0 after 0 usecs [ 0.648660] calling pci_eisa_init_module+0x0/0x16 @ 1 [ 0.648674] initcall pci_eisa_init_module+0x0/0x16 returned 0 after 10 usecs [ 0.648677] calling virtual_eisa_root_init+0x0/0x4d @ 1 [ 0.648694] EISA: Probing bus 0 at eisa.0 [ 0.648696] EISA: Cannot allocate resource for mainboard [ 0.648698] Cannot allocate resource for EISA slot 1 [ 0.648700] Cannot allocate resource for EISA slot 2 [ 0.648701] Cannot allocate resource for EISA slot 3 [ 0.648703] Cannot allocate resource for EISA slot 4 [ 0.648705] Cannot allocate resource for EISA slot 5 [ 0.648706] Cannot allocate resource for EISA slot 6 [ 0.648708] Cannot allocate resource for EISA slot 7 [ 0.648710] Cannot allocate resource for EISA slot 8 [ 0.648711] EISA: Detected 0 cards. [ 0.648714] initcall virtual_eisa_root_init+0x0/0x4d returned 0 after 33 usecs [ 0.648717] calling cpufreq_stats_init+0x0/0x84 @ 1 [ 0.648723] initcall cpufreq_stats_init+0x0/0x84 returned 0 after 3 usecs [ 0.648726] calling cpufreq_gov_powersave_init+0x0/0xf @ 1 [ 0.648730] initcall cpufreq_gov_powersave_init+0x0/0xf returned 0 after 0 usecs [ 0.648733] calling cpufreq_gov_userspace_init+0x0/0xf @ 1 [ 0.648736] initcall cpufreq_gov_userspace_init+0x0/0xf returned 0 after 0 usecs [ 0.648739] calling cpufreq_gov_dbs_init+0x0/0xb3 @ 1 [ 0.648793] initcall cpufreq_gov_dbs_init+0x0/0xb3 returned 0 after 50 usecs [ 0.648796] calling cpufreq_gov_dbs_init+0x0/0x6a @ 1 [ 0.648849] initcall cpufreq_gov_dbs_init+0x0/0x6a returned 0 after 49 usecs [ 0.648852] calling init_ladder+0x0/0xf @ 1 [ 0.648967] cpuidle: using governor ladder [ 0.648970] initcall init_ladder+0x0/0xf returned 0 after 111 usecs [ 0.648973] calling init_menu+0x0/0xf @ 1 [ 0.649146] cpuidle: using governor menu [ 0.649149] initcall init_menu+0x0/0xf returned 0 after 169 usecs [ 0.649152] calling efivars_init+0x0/0x1ec @ 1 [ 0.649155] initcall efivars_init+0x0/0x1ec returned -19 after 0 usecs [ 0.649158] calling staging_init+0x0/0x7 @ 1 [ 0.649161] initcall staging_init+0x0/0x7 returned 0 after 0 usecs [ 0.649165] calling flow_cache_init_global+0x0/0x32 @ 1 [ 0.649189] initcall flow_cache_init_global+0x0/0x32 returned 0 after 20 usecs [ 0.649192] calling llc_init+0x0/0x1b @ 1 [ 0.649196] initcall llc_init+0x0/0x1b returned 0 after 1 usecs [ 0.649200] calling snap_init+0x0/0x35 @ 1 [ 0.649203] initcall snap_init+0x0/0x35 returned 0 after 0 usecs [ 0.649206] calling rif_init+0x0/0x70 @ 1 [ 0.649225] initcall rif_init+0x0/0x70 returned 0 after 15 usecs [ 0.649228] calling blackhole_module_init+0x0/0xf @ 1 [ 0.649232] initcall blackhole_module_init+0x0/0xf returned 0 after 0 usecs [ 0.649235] calling init_cgroup_cls+0x0/0x33 @ 1 [ 0.649239] initcall init_cgroup_cls+0x0/0x33 returned 0 after 1 usecs [ 0.649242] calling sysctl_ipv4_init+0x0/0x75 @ 1 [ 0.649445] initcall sysctl_ipv4_init+0x0/0x75 returned 0 after 195 usecs [ 0.649448] calling init_syncookies+0x0/0x16 @ 1 [ 0.649484] initcall init_syncookies+0x0/0x16 returned 0 after 32 usecs [ 0.649489] calling ipv4_netfilter_init+0x0/0x20 @ 1 [ 0.649492] initcall ipv4_netfilter_init+0x0/0x20 returned 0 after 0 usecs [ 0.649495] calling inet_diag_init+0x0/0xbf @ 1 [ 0.649509] initcall inet_diag_init+0x0/0xbf returned 0 after 10 usecs [ 0.649512] calling tcp_diag_init+0x0/0xf @ 1 [ 0.649515] initcall tcp_diag_init+0x0/0xf returned 0 after 0 usecs [ 0.649518] calling cubictcp_register+0x0/0x72 @ 1 [ 0.649521] TCP cubic registered [ 0.649523] initcall cubictcp_register+0x0/0x72 returned 0 after 2 usecs [ 0.649526] calling inet6_init+0x0/0x282 @ 1 [ 0.649658] NET: Registered protocol family 10 [ 0.649993] lo: Disabled Privacy Extensions [ 0.650199] initcall inet6_init+0x0/0x282 returned 0 after 655 usecs [ 0.650203] calling packet_init+0x0/0x39 @ 1 [ 0.650205] NET: Registered protocol family 17 [ 0.650210] initcall packet_init+0x0/0x39 returned 0 after 4 usecs [ 0.650213] calling dsa_init_module+0x0/0x11 @ 1 [ 0.650216] initcall dsa_init_module+0x0/0x11 returned 0 after 0 usecs [ 0.650218] calling edsa_init_module+0x0/0x11 @ 1 [ 0.650221] initcall edsa_init_module+0x0/0x11 returned 0 after 0 usecs [ 0.650224] calling trailer_init_module+0x0/0x11 @ 1 [ 0.650227] initcall trailer_init_module+0x0/0x11 returned 0 after 0 usecs [ 0.650229] calling mv88e6060_init+0x0/0x11 @ 1 [ 0.650232] initcall mv88e6060_init+0x0/0x11 returned 0 after 0 usecs [ 0.650235] calling mv88e6123_61_65_init+0x0/0x11 @ 1 [ 0.650238] initcall mv88e6123_61_65_init+0x0/0x11 returned 0 after 0 usecs [ 0.650240] calling mv88e6131_init+0x0/0x11 @ 1 [ 0.650243] initcall mv88e6131_init+0x0/0x11 returned 0 after 0 usecs [ 0.650245] calling dsa_init_module+0x0/0xf @ 1 [ 0.650257] initcall dsa_init_module+0x0/0xf returned 0 after 8 usecs [ 0.650260] calling dcbnl_init+0x0/0x3a @ 1 [ 0.650263] initcall dcbnl_init+0x0/0x3a returned 0 after 0 usecs [ 0.650267] calling mcheck_debugfs_init+0x0/0x3e @ 1 [ 0.650279] initcall mcheck_debugfs_init+0x0/0x3e returned 0 after 9 usecs [ 0.650282] calling severities_debugfs_init+0x0/0x3e @ 1 [ 0.650286] initcall severities_debugfs_init+0x0/0x3e returned 0 after 1 usecs [ 0.650292] calling powernowk8_init+0x0/0x14d @ 1 [ 0.650299] initcall powernowk8_init+0x0/0x14d returned -19 after 4 usecs [ 0.650303] calling acpi_cpufreq_init+0x0/0xb0 @ 1 [ 0.651851] initcall acpi_cpufreq_init+0x0/0xb0 returned 0 after 1511 usecs [ 0.651854] calling powernow_init+0x0/0x1f @ 1 [ 0.651857] initcall powernow_init+0x0/0x1f returned -19 after 0 usecs [ 0.651860] calling longhaul_init+0x0/0x94 @ 1 [ 0.651863] initcall longhaul_init+0x0/0x94 returned -19 after 0 usecs [ 0.651865] calling centrino_init+0x0/0x26 @ 1 [ 0.651868] initcall centrino_init+0x0/0x26 returned -16 after 0 usecs [ 0.651871] initcall centrino_init+0x0/0x26 returned with error code -16 [ 0.651874] calling hpet_insert_resource+0x0/0x1e @ 1 [ 0.651879] initcall hpet_insert_resource+0x0/0x1e returned 0 after 1 usecs [ 0.651883] calling update_mp_table+0x0/0x1f3 @ 1 [ 0.651886] initcall update_mp_table+0x0/0x1f3 returned 0 after 0 usecs [ 0.651889] calling lapic_insert_resource+0x0/0x35 @ 1 [ 0.651893] initcall lapic_insert_resource+0x0/0x35 returned 0 after 0 usecs [ 0.651896] calling print_ipi_mode+0x0/0x2e @ 1 [ 0.651898] Using IPI No-Shortcut mode [ 0.651901] initcall print_ipi_mode+0x0/0x2e returned 0 after 1 usecs [ 0.651904] calling init_lapic_nmi_sysfs+0x0/0x33 @ 1 [ 0.651907] initcall init_lapic_nmi_sysfs+0x0/0x33 returned 0 after 0 usecs [ 0.651910] calling io_apic_bug_finalize+0x0/0x1a @ 1 [ 0.651913] initcall io_apic_bug_finalize+0x0/0x1a returned 0 after 0 usecs [ 0.651917] calling check_early_ioremap_leak+0x0/0x69 @ 1 [ 0.651920] initcall check_early_ioremap_leak+0x0/0x69 returned 0 after 0 usecs [ 0.651923] calling pat_memtype_list_init+0x0/0x37 @ 1 [ 0.651929] initcall pat_memtype_list_init+0x0/0x37 returned 0 after 2 usecs [ 0.651932] calling sched_init_debug+0x0/0x2a @ 1 [ 0.651937] initcall sched_init_debug+0x0/0x2a returned 0 after 2 usecs [ 0.651942] calling init_oops_id+0x0/0x50 @ 1 [ 0.651948] initcall init_oops_id+0x0/0x50 returned 0 after 3 usecs [ 0.651951] calling disable_boot_consoles+0x0/0x43 @ 1 [ 0.651954] initcall disable_boot_consoles+0x0/0x43 returned 0 after 0 usecs [ 0.651958] calling pm_qos_power_init+0x0/0xbf @ 1 [ 0.652014] initcall pm_qos_power_init+0x0/0xbf returned 0 after 52 usecs [ 0.652017] calling test_suspend+0x0/0x8e @ 1 [ 0.652021] initcall test_suspend+0x0/0x8e returned 0 after 1 usecs [ 0.652025] calling software_resume+0x0/0x1f0 @ 1 [ 0.652027] PM: Resume from disk failed. [ 0.652030] initcall software_resume+0x0/0x1f0 returned -2 after 2 usecs [ 0.652033] initcall software_resume+0x0/0x1f0 returned with error code -2 [ 0.652039] calling debugfs_kprobe_init+0x0/0x90 @ 1 [ 0.652045] initcall debugfs_kprobe_init+0x0/0x90 returned 0 after 3 usecs [ 0.652049] calling taskstats_init+0x0/0x85 @ 1 [ 0.652055] registered taskstats version 1 [ 0.652058] initcall taskstats_init+0x0/0x85 returned 0 after 5 usecs [ 0.652061] calling clear_boot_tracer+0x0/0x2d @ 1 [ 0.652064] initcall clear_boot_tracer+0x0/0x2d returned 0 after 0 usecs [ 0.652068] calling max_swapfiles_check+0x0/0x7 @ 1 [ 0.652071] initcall max_swapfiles_check+0x0/0x7 returned 0 after 0 usecs [ 0.652076] calling random32_reseed+0x0/0x83 @ 1 [ 0.652117] initcall random32_reseed+0x0/0x83 returned 0 after 37 usecs [ 0.652121] calling pci_resource_alignment_sysfs_init+0x0/0x14 @ 1 [ 0.652127] initcall pci_resource_alignment_sysfs_init+0x0/0x14 returned 0 after 1 usecs [ 0.652130] calling pci_sysfs_init+0x0/0x44 @ 1 [ 0.652428] initcall pci_sysfs_init+0x0/0x44 returned 0 after 287 usecs [ 0.652432] calling regulator_init_complete+0x0/0x10f @ 1 [ 0.652435] initcall regulator_init_complete+0x0/0x10f returned 0 after 0 usecs [ 0.652438] calling seqgen_init+0x0/0xe @ 1 [ 0.652453] initcall seqgen_init+0x0/0xe returned 0 after 12 usecs [ 0.652458] calling late_resume_init+0x0/0x1b0 @ 1 [ 0.652460] Magic number: 11:557:94 [ 0.652524] initcall late_resume_init+0x0/0x1b0 returned 0 after 62 usecs [ 0.652530] calling scsi_complete_async_scans+0x0/0x160 @ 1 [ 0.652533] initcall scsi_complete_async_scans+0x0/0x160 returned 0 after 0 usecs [ 0.652536] calling rtc_hctosys+0x0/0x177 @ 1 [ 0.652564] rtc_cmos 00:08: setting system clock to 2011-01-26 20:04:02 UTC (1296072242) [ 0.652568] initcall rtc_hctosys+0x0/0x177 returned 0 after 28 usecs [ 0.652571] calling edd_init+0x0/0x1b0 @ 1 [ 0.652573] BIOS EDD facility v0.16 2004-Jun-25, 0 devices found [ 0.652575] EDD information not available. [ 0.652578] initcall edd_init+0x0/0x1b0 returned -19 after 4 usecs [ 0.652580] calling memmap_init+0x0/0x30 @ 1 [ 0.652622] initcall memmap_init+0x0/0x30 returned 0 after 37 usecs [ 0.652625] calling pci_mmcfg_late_insert_resources+0x0/0x59 @ 1 [ 0.652629] initcall pci_mmcfg_late_insert_resources+0x0/0x59 returned 0 after 1 usecs [ 0.652633] calling tcp_congestion_default+0x0/0xf @ 1 [ 0.652636] initcall tcp_congestion_default+0x0/0xf returned 0 after 0 usecs [ 0.652639] calling initialize_hashrnd+0x0/0x16 @ 1 [ 0.652645] initcall initialize_hashrnd+0x0/0x16 returned 0 after 2 usecs [ 0.652669] async_waiting @ 1 [ 0.658117] input: AT Translated Set 2 keyboard as /devices/platform/i8042/serio0/input/input3 [ 0.718956] Freeing initrd memory: 11276k freed [ 0.721427] initcall 1_async_populate_rootfs+0x0/0xd0 returned 0 after 222773 usecs [ 0.721446] async_continuing @ 1 after 67337 usec [ 0.721465] async_waiting @ 1 [ 0.936866] usb 1-1: new high speed USB device using ehci_hcd and address 2 [ 0.972307] isapnp: No Plug & Play device found [ 0.972313] initcall 3_async_isapnp_init+0x0/0xa returned 0 after 358821 usecs [ 0.972317] async_continuing @ 1 after 245607 usec [ 0.972328] Freeing unused kernel memory: 688k freed [ 0.972564] Write protecting the kernel text: 4936k [ 0.972592] Write protecting the kernel read-only data: 1976k [ 0.992312] udev[113]: starting version 163 [ 1.011043] e1000e: Intel(R) PRO/1000 Network Driver - 1.0.2-k4 [ 1.011047] e1000e: Copyright (c) 1999 - 2009 Intel Corporation. [ 1.011084] alloc irq_desc for 20 on node -1 [ 1.011086] alloc kstat_irqs on node -1 [ 1.011094] e1000e 0000:00:19.0: PCI INT A -> GSI 20 (level, low) -> IRQ 20 [ 1.011106] e1000e 0000:00:19.0: setting latency timer to 64 [ 1.011213] alloc irq_desc for 44 on node -1 [ 1.011215] alloc kstat_irqs on node -1 [ 1.011228] e1000e 0000:00:19.0: irq 44 for MSI/MSI-X [ 1.029689] sdhci: Secure Digital Host Controller Interface driver [ 1.029691] sdhci: Copyright(c) Pierre Ossman [ 1.031160] sdhci-pci 0000:01:00.0: SDHCI controller found [1180:e822] (rev 1) [ 1.031188] sdhci-pci 0000:01:00.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16 [ 1.032271] sdhci-pci 0000:01:00.0: Will use DMA mode even though HW doesn't fully claim to support it. [ 1.032280] sdhci-pci 0000:01:00.0: setting latency timer to 64 [ 1.041670] Registered led device: mmc0:: [ 1.041751] mmc0: SDHCI controller on PCI [0000:01:00.0] using DMA [ 1.069331] hub 1-1:1.0: USB hub found [ 1.069392] hub 1-1:1.0: 6 ports detected [ 1.146360] e1000e 0000:00:19.0: eth0: (PCI Express:2.5GB/s:Width x1) 00:23:18:58:1b:8c [ 1.146363] e1000e 0000:00:19.0: eth0: Intel(R) PRO/1000 Network Connection [ 1.146432] e1000e 0000:00:19.0: eth0: MAC: 9, PHY: 10, PBA No: ffffff-0ff [ 1.146446] ahci 0000:00:1f.2: version 3.0 [ 1.146466] ahci 0000:00:1f.2: PCI INT B -> GSI 19 (level, low) -> IRQ 19 [ 1.146514] alloc irq_desc for 45 on node -1 [ 1.146516] alloc kstat_irqs on node -1 [ 1.146528] ahci 0000:00:1f.2: irq 45 for MSI/MSI-X [ 1.146569] ahci: SSS flag set, parallel bus scan disabled [ 1.146613] ahci 0000:00:1f.2: AHCI 0001.0300 32 slots 6 ports 3 Gbps 0x23 impl SATA mode [ 1.146617] ahci 0000:00:1f.2: flags: 64bit ncq sntf stag pm led clo pio slum part ems sxs apst [ 1.146623] ahci 0000:00:1f.2: setting latency timer to 64 [ 1.168441] scsi0 : ahci [ 1.168613] scsi1 : ahci [ 1.168676] scsi2 : ahci [ 1.168748] scsi3 : ahci [ 1.168807] scsi4 : ahci [ 1.168861] scsi5 : ahci [ 1.169166] ata1: SATA max UDMA/133 abar m2048@0xd4727000 port 0xd4727100 irq 45 [ 1.169170] ata2: SATA max UDMA/133 abar m2048@0xd4727000 port 0xd4727180 irq 45 [ 1.169171] ata3: DUMMY [ 1.169172] ata4: DUMMY [ 1.169172] ata5: DUMMY [ 1.169175] ata6: SATA max UDMA/133 abar m2048@0xd4727000 port 0xd4727380 irq 45 [ 1.184927] usb 2-1: new high speed USB device using ehci_hcd and address 2 [ 1.320476] hub 2-1:1.0: USB hub found [ 1.320519] hub 2-1:1.0: 8 ports detected [ 1.391820] usb 1-1.2: new full speed USB device using ehci_hcd and address 3 [ 1.488124] ata1: SATA link up 3.0 Gbps (SStatus 123 SControl 300) [ 1.488986] ACPI Error (psargs-0359): [GTF0] Namespace lookup failure, AE_NOT_FOUND [ 1.488991] ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.PCI0.SAT0.PRT0._SDD] (Node f702b708), AE_NOT_FOUND [ 1.489031] ACPI Error (psargs-0359): [GTF0] Namespace lookup failure, AE_NOT_FOUND [ 1.489034] ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.PCI0.SAT0.PRT0._GTF] (Node f702b720), AE_NOT_FOUND [ 1.489520] ata1.00: ATA-8: Hitachi HTS725032A9A360, PC3OC71E, max UDMA/133 [ 1.489526] ata1.00: 625142448 sectors, multi 16: LBA48 NCQ (depth 31/32), AA [ 1.490621] ACPI Error (psargs-0359): [GTF0] Namespace lookup failure, AE_NOT_FOUND [ 1.490625] ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.PCI0.SAT0.PRT0._SDD] (Node f702b708), AE_NOT_FOUND [ 1.490658] ACPI Error (psargs-0359): [GTF0] Namespace lookup failure, AE_NOT_FOUND [ 1.490661] ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.PCI0.SAT0.PRT0._GTF] (Node f702b720), AE_NOT_FOUND [ 1.491132] ata1.00: configured for UDMA/133 [ 1.503520] scsi 0:0:0:0: Direct-Access ATA Hitachi HTS72503 PC3O PQ: 0 ANSI: 5 [ 1.503657] sd 0:0:0:0: Attached scsi generic sg0 type 0 [ 1.503686] sd 0:0:0:0: [sda] 625142448 512-byte logical blocks: (320 GB/298 GiB) [ 1.503746] sd 0:0:0:0: [sda] Write Protect is off [ 1.503749] sd 0:0:0:0: [sda] Mode Sense: 00 3a 00 00 [ 1.503768] sd 0:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA [ 1.503918] sda: [ 1.555926] usb 1-1.4: new high speed USB device using ehci_hcd and address 4 [ 1.805471] sda1 sda2 < sda5 > [ 1.833647] sd 0:0:0:0: [sda] Attached SCSI disk [ 2.225487] ata2: SATA link up 1.5 Gbps (SStatus 113 SControl 300) [ 2.227407] ACPI Error (psargs-0359): [GTF1] Namespace lookup failure, AE_NOT_FOUND [ 2.227411] ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.PCI0.SAT0.PRT1._SDD] (Node f702b7b0), AE_NOT_FOUND [ 2.227451] ACPI Error (psargs-0359): [GTF1] Namespace lookup failure, AE_NOT_FOUND [ 2.227454] ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.PCI0.SAT0.PRT1._GTF] (Node f702b7c8), AE_NOT_FOUND [ 2.227480] ata2.00: ATAPI: MATSHITADVD-RAM UJ892ES, 1.20, max UDMA/100 [ 2.230042] ACPI Error (psargs-0359): [GTF1] Namespace lookup failure, AE_NOT_FOUND [ 2.230046] ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.PCI0.SAT0.PRT1._SDD] (Node f702b7b0), AE_NOT_FOUND [ 2.230080] ACPI Error (psargs-0359): [GTF1] Namespace lookup failure, AE_NOT_FOUND [ 2.230084] ACPI Error (psparse-0537): Method parse/execution failed [\_SB_.PCI0.SAT0.PRT1._GTF] (Node f702b7c8), AE_NOT_FOUND [ 2.230120] ata2.00: configured for UDMA/100 [ 2.248533] scsi 1:0:0:0: CD-ROM MATSHITA DVD-RAM UJ892ES 1.20 PQ: 0 ANSI: 5 [ 2.254776] sr0: scsi3-mmc drive: 24x/24x writer dvd-ram cd/rw xa/form2 cdda tray [ 2.254781] Uniform CD-ROM driver Revision: 3.20 [ 2.254933] sr 1:0:0:0: Attached scsi CD-ROM sr0 [ 2.254986] sr 1:0:0:0: Attached scsi generic sg1 type 5 [ 2.573361] ata6: SATA link down (SStatus 0 SControl 300) [ 2.830083] EXT4-fs (sda1): INFO: recovery required on readonly filesystem [ 2.830086] EXT4-fs (sda1): write access will be enabled during recovery [ 2.891994] EXT4-fs (sda1): recovery complete [ 2.892278] EXT4-fs (sda1): mounted filesystem with ordered data mode. Opts: (null) [ 6.837405] udev[442]: starting version 163 [ 6.847837] lp: driver loaded but no devices found [ 6.856665] Adding 12286972k swap on /dev/sda5. Priority:-1 extents:1 across:12286972k [ 6.887677] intel ips 0000:00:1f.6: Warning: CPU TDP doesn't match expected value (found 25, expected 35) [ 6.887703] intel ips 0000:00:1f.6: PCI INT C -> GSI 18 (level, low) -> IRQ 18 [ 6.887848] intel ips 0000:00:1f.6: failed to get i915 symbols, graphics turbo disabled [ 6.904925] Linux agpgart interface v0.103 [ 6.942052] intel ips 0000:00:1f.6: IPS driver initialized, MCP temp limit 90 [ 6.948887] input: Toshiba input device as /devices/virtual/input/input4 [ 6.948937] toshiba_acpi: Toshiba Laptop ACPI Extras version 0.19 [ 6.948939] toshiba_acpi: HCI method: \_SB_.VALZ.GHCI [ 6.955858] agpgart-intel 0000:00:00.0: Intel HD Graphics Chipset [ 6.956817] agpgart-intel 0000:00:00.0: detected 65532K stolen memory, trimming to 32768K [ 7.006249] Detected Toshiba ACPI Bluetooth device - installing RFKill handler [ 7.011117] toshiba_bluetooth: Re-enabling Toshiba Bluetooth [ 7.013966] cfg80211: Calling CRDA to update world regulatory domain [ 7.046741] tpm_tis 00:03: 1.2 TPM (device-id 0xB, rev-id 16) [ 7.062507] Linux video capture interface: v2.00 [ 7.076506] agpgart-intel 0000:00:00.0: AGP aperture is 256M @ 0xc0000000 [ 7.081657] cfg80211: World regulatory domain updated: [ 7.081659] (start_freq - end_freq @ bandwidth), (max_antenna_gain, max_eirp) [ 7.081662] (2402000 KHz - 2472000 KHz @ 40000 KHz), (300 mBi, 2000 mBm) [ 7.081665] (2457000 KHz - 2482000 KHz @ 20000 KHz), (300 mBi, 2000 mBm) [ 7.081668] (2474000 KHz - 2494000 KHz @ 20000 KHz), (300 mBi, 2000 mBm) [ 7.081670] (5170000 KHz - 5250000 KHz @ 40000 KHz), (300 mBi, 2000 mBm) [ 7.081673] (5735000 KHz - 5835000 KHz @ 40000 KHz), (300 mBi, 2000 mBm) [ 7.083894] uvcvideo: Found UVC 1.00 device 2SF001 (0bda:58f5) [ 7.112517] [drm] Initialized drm 1.1.0 20060810 [ 7.118120] input: 2SF001 as /devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.4/1-1.4:1.0/input/input5 [ 7.118177] usbcore: registered new interface driver uvcvideo [ 7.118180] USB Video Class driver (v0.1.0) [ 7.136609] iwlagn: Intel(R) Wireless WiFi Link AGN driver for Linux, in-tree: [ 7.136611] iwlagn: Copyright(c) 2003-2010 Intel Corporation [ 7.136672] iwlagn 0000:02:00.0: PCI INT A -> GSI 17 (level, low) -> IRQ 17 [ 7.136680] iwlagn 0000:02:00.0: setting latency timer to 64 [ 7.136719] iwlagn 0000:02:00.0: Detected Intel(R) Centrino(R) Advanced-N 6200 AGN, REV=0x74 [ 7.141068] i915 0000:00:02.0: power state changed by ACPI to D0 [ 7.141129] i915 0000:00:02.0: power state changed by ACPI to D0 [ 7.141138] i915 0000:00:02.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16 [ 7.141146] i915 0000:00:02.0: setting latency timer to 64 [ 7.147692] iwlagn 0000:02:00.0: Tunable channels: 13 802.11bg, 24 802.11a channels [ 7.147787] alloc irq_desc for 46 on node -1 [ 7.147790] alloc kstat_irqs on node -1 [ 7.147831] iwlagn 0000:02:00.0: irq 46 for MSI/MSI-X [ 7.156284] [drm] detected 63M stolen memory, trimming to 32M [ 7.156360] alloc irq_desc for 47 on node -1 [ 7.156362] alloc kstat_irqs on node -1 [ 7.156370] i915 0000:00:02.0: irq 47 for MSI/MSI-X [ 7.156379] [drm] set up 32M of stolen space [ 7.176886] iwlagn 0000:02:00.0: loaded firmware version 9.221.4.1 build 25532 [ 7.201086] phy0: Selected rate control algorithm 'iwl-agn-rs' [ 7.227806] vgaarb: device changed decodes: PCI:0000:00:02.0,olddecodes=io+mem,decodes=io+mem:owns=io+mem [ 7.464301] usb 1-1.6: new full speed USB device using ehci_hcd and address 5 [ 7.582569] Bluetooth: Core ver 2.15 [ 7.582615] NET: Registered protocol family 31 [ 7.582616] Bluetooth: HCI device and connection manager initialized [ 7.582619] Bluetooth: HCI socket layer initialized [ 7.587347] Bluetooth: Generic Bluetooth USB driver ver 0.6 [ 7.587565] usbcore: registered new interface driver btusb [ 7.597354] Console: switching to colour frame buffer device 170x48 [ 7.600002] fb0: inteldrmfb frame buffer device [ 7.600003] drm: registered panic notifier [ 7.600006] Slow work thread pool: Starting up [ 7.600071] Slow work thread pool: Ready [ 7.604440] acpi device:01: registered as cooling_device4 [ 7.604633] input: Video Bus as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/LNXVIDEO:00/input/input6 [ 7.604679] ACPI: Video Device [GFX0] (multi-head: yes rom: yes post: no) [ 7.604702] [drm] Initialized i915 1.6.0 20080730 for 0000:00:02.0 on minor 0 [ 7.604742] alloc irq_desc for 22 on node -1 [ 7.604744] alloc kstat_irqs on node -1 [ 7.604752] HDA Intel 0000:00:1b.0: PCI INT A -> GSI 22 (level, low) -> IRQ 22 [ 7.604797] alloc irq_desc for 48 on node -1 [ 7.604799] alloc kstat_irqs on node -1 [ 7.604810] HDA Intel 0000:00:1b.0: irq 48 for MSI/MSI-X [ 7.604840] HDA Intel 0000:00:1b.0: setting latency timer to 64 [ 7.610418] type=1400 audit(1296072249.469:2): apparmor="STATUS" operation="profile_load" name="/sbin/dhclient3" pid=781 comm="apparmor_parser" [ 7.610429] type=1400 audit(1296072249.469:3): apparmor="STATUS" operation="profile_replace" name="/sbin/dhclient3" pid=766 comm="apparmor_parser" [ 7.610806] type=1400 audit(1296072249.469:4): apparmor="STATUS" operation="profile_load" name="/usr/lib/NetworkManager/nm-dhcp-client.action" pid=766 comm="apparmor_parser" [ 7.610864] type=1400 audit(1296072249.469:5): apparmor="STATUS" operation="profile_replace" name="/usr/lib/NetworkManager/nm-dhcp-client.action" pid=781 comm="apparmor_parser" [ 7.611010] type=1400 audit(1296072249.469:6): apparmor="STATUS" operation="profile_load" name="/usr/lib/connman/scripts/dhclient-script" pid=766 comm="apparmor_parser" [ 7.611117] type=1400 audit(1296072249.469:7): apparmor="STATUS" operation="profile_replace" name="/usr/lib/connman/scripts/dhclient-script" pid=781 comm="apparmor_parser" [ 7.611691] type=1400 audit(1296072249.469:8): apparmor="STATUS" operation="profile_replace" name="/sbin/dhclient3" pid=829 comm="apparmor_parser" [ 7.612127] type=1400 audit(1296072249.473:9): apparmor="STATUS" operation="profile_replace" name="/usr/lib/NetworkManager/nm-dhcp-client.action" pid=829 comm="apparmor_parser" [ 7.612393] type=1400 audit(1296072249.473:10): apparmor="STATUS" operation="profile_replace" name="/usr/lib/connman/scripts/dhclient-script" pid=829 comm="apparmor_parser" [ 7.663978] hda_codec: ALC259: BIOS auto-probing. [ 7.664343] hda_codec: connection list not available for 0x24 [ 7.680054] Synaptics Touchpad, model: 1, fw: 7.4, id: 0x1e0b1, caps: 0xd04771/0xa40000/0xa0400 [ 7.710607] input: SynPS/2 Synaptics TouchPad as /devices/platform/i8042/serio1/input/input7 [ 8.301789] e1000e 0000:00:19.0: irq 44 for MSI/MSI-X [ 8.354053] e1000e 0000:00:19.0: irq 44 for MSI/MSI-X [ 8.354254] ADDRCONF(NETDEV_UP): eth0: link is not ready [ 11.627837] e1000e: eth0 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: None [ 11.630919] ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready [ 12.099840] BUG: unable to handle kernel NULL pointer dereference at (null) [ 12.099845] IP: [<(null)>] (null) [ 12.099847] *pde = 00000000 [ 12.099849] Oops: 0000 [#1] SMP [ 12.099851] last sysfs file: /sys/kernel/uevent_seqnum [ 12.099853] Modules linked in: joydev snd_hda_codec_intelhdmi snd_hda_codec_realtek btusb bluetooth tpm_infineon arc4 snd_hda_intel snd_hda_codec snd_hwdep snd_pcm snd_seq_midi snd_rawmidi i915 iwlagn snd_seq_midi_event drm_kms_helper snd_seq drm snd_timer uvcvideo iwlcore snd_seq_device videodev v4l1_compat mac80211 tpm_tis tpm psmouse tpm_bios serio_raw snd toshiba_bluetooth toshiba_acpi intel_agp agpgart cfg80211 i2c_algo_bit soundcore intel_ips snd_page_alloc video output lp parport ahci sdhci_pci sdhci led_class libahci e1000e [ 12.099878] [ 12.099881] Pid: 624, comm: ips-adjust Not tainted 2.6.35-25-generic #44-Ubuntu Portable PC/TECRA R700 [ 12.099884] EIP: 0060:[<00000000>] EFLAGS: 00010202 CPU: 2 [ 12.099886] EIP is at 0x0 [ 12.099888] EAX: 00000292 EBX: f5ae5b00 ECX: 00002328 EDX: 00000292 [ 12.099889] ESI: f5ae5b2c EDI: 00000000 EBP: f5a61fbc ESP: f5a61f78 [ 12.099890] DS: 007b ES: 007b FS: 00d8 GS: 00e0 SS: 0068 [ 12.099892] Process ips-adjust (pid: 624, ti=f5a60000 task=f51d8000 task.ti=f5a60000) [ 12.099894] Stack: [ 12.099895] f84eab93 c08c4700 c08c4700 f70a9960 00000001 c08c4700 c08c4700 f5a61fac [ 12.099898] <0> 0000005a f6a3e200 008c4700 0000058f f51d005a 00000000 f5ae7dec f5ae5b00 [ 12.099902] <0> f84ea900 f5a61fe4 c0165ad4 00000000 00000000 00000000 f5a61fd0 f5a61fd0 [ 12.099906] Call Trace: [ 12.099911] [] ? ips_adjust+0x293/0x400 [intel_ips] [ 12.099914] [] ? ips_adjust+0x0/0x400 [intel_ips] [ 12.099920] [] ? kthread+0x74/0x80 [ 12.099922] [] ? kthread+0x0/0x80 [ 12.099926] [] ? kernel_thread_helper+0x6/0x10 [ 12.099927] Code: Bad EIP value. [ 12.099929] EIP: [<00000000>] 0x0 SS:ESP 0068:f5a61f78 [ 12.099932] CR2: 0000000000000000 [ 12.099934] ---[ end trace 5d3eca833282113c ]--- [ 17.718742] EXT4-fs (sda1): re-mounted. Opts: errors=remount-ro [ 18.020617] type=1400 audit(1296072259.905:11): apparmor="STATUS" operation="profile_load" name="/usr/lib/cups/backend/cups-pdf" pid=1060 comm="apparmor_parser" [ 18.021084] type=1400 audit(1296072259.909:12): apparmor="STATUS" operation="profile_load" name="/usr/sbin/cupsd" pid=1060 comm="apparmor_parser" [ 18.583963] ppdev: user-space parallel port driver [ 18.906949] type=1400 audit(1296072260.797:13): apparmor="STATUS" operation="profile_replace" name="/sbin/dhclient3" pid=1215 comm="apparmor_parser" [ 18.907322] type=1400 audit(1296072260.797:14): apparmor="STATUS" operation="profile_replace" name="/usr/lib/NetworkManager/nm-dhcp-client.action" pid=1215 comm="apparmor_parser" [ 18.907529] type=1400 audit(1296072260.797:15): apparmor="STATUS" operation="profile_replace" name="/usr/lib/connman/scripts/dhclient-script" pid=1215 comm="apparmor_parser" [ 18.907881] type=1400 audit(1296072260.797:16): apparmor="STATUS" operation="profile_replace" name="/usr/lib/cups/backend/cups-pdf" pid=1218 comm="apparmor_parser" [ 18.908344] type=1400 audit(1296072260.797:17): apparmor="STATUS" operation="profile_replace" name="/usr/sbin/cupsd" pid=1218 comm="apparmor_parser" [ 19.166759] type=1400 audit(1296072261.057:18): apparmor="STATUS" operation="profile_load" name="/usr/share/gdm/guest-session/Xsession" pid=1214 comm="apparmor_parser" [ 19.171656] type=1400 audit(1296072261.061:19): apparmor="STATUS" operation="profile_load" name="/usr/sbin/tcpdump" pid=1219 comm="apparmor_parser" [ 19.410993] ADDRCONF(NETDEV_UP): wlan0: link is not ready [ 19.527798] type=1400 audit(1296072261.417:20): apparmor="STATUS" operation="profile_load" name="/usr/bin/evince" pid=1216 comm="apparmor_parser" Bug: 727594 [ 0.000000] Initializing cgroup subsys cpuset [ 0.000000] Initializing cgroup subsys cpu [ 0.000000] Linux version 2.6.38-999-generic (root@zinc) (gcc version 4.2.3 (Ubuntu 4.2.3-2ubuntu7)) #201103011141 SMP Tue Mar 1 13:01:18 UTC 2011 [ 0.000000] BIOS-provided physical RAM map: [ 0.000000] BIOS-e820: 0000000000000000 - 000000000009fc00 (usable) [ 0.000000] BIOS-e820: 000000000009fc00 - 00000000000a0000 (reserved) [ 0.000000] BIOS-e820: 00000000000e4000 - 0000000000100000 (reserved) [ 0.000000] BIOS-e820: 0000000000100000 - 000000007f780000 (usable) [ 0.000000] BIOS-e820: 000000007f780000 - 000000007f790000 (ACPI data) [ 0.000000] BIOS-e820: 000000007f790000 - 000000007f7d0000 (ACPI NVS) [ 0.000000] BIOS-e820: 000000007f7d0000 - 000000007f7de000 (reserved) [ 0.000000] BIOS-e820: 000000007f7e0000 - 000000007f800000 (reserved) [ 0.000000] BIOS-e820: 00000000fee00000 - 00000000fee01000 (reserved) [ 0.000000] BIOS-e820: 00000000fff80000 - 0000000100000000 (reserved) [ 0.000000] Notice: NX (Execute Disable) protection missing in CPU! [ 0.000000] DMI present. [ 0.000000] DMI: ASUSTeK Computer INC. 701/701, BIOS 1001 05/04/2008 [ 0.000000] e820 update range: 0000000000000000 - 0000000000010000 (usable) ==> (reserved) [ 0.000000] e820 remove range: 00000000000a0000 - 0000000000100000 (usable) [ 0.000000] last_pfn = 0x7f780 max_arch_pfn = 0x100000 [ 0.000000] MTRR default type: uncachable [ 0.000000] MTRR fixed ranges enabled: [ 0.000000] 00000-9FFFF write-back [ 0.000000] A0000-DFFFF uncachable [ 0.000000] E0000-EFFFF write-through [ 0.000000] F0000-FFFFF write-protect [ 0.000000] MTRR variable ranges enabled: [ 0.000000] 0 base 000000000 mask F80000000 write-back [ 0.000000] 1 base 07F800000 mask FFF800000 uncachable [ 0.000000] 2 disabled [ 0.000000] 3 disabled [ 0.000000] 4 disabled [ 0.000000] 5 disabled [ 0.000000] 6 disabled [ 0.000000] 7 disabled [ 0.000000] PAT not supported by CPU. [ 0.000000] found SMP MP-table at [c00ff780] ff780 [ 0.000000] Scanning 0 areas for low memory corruption [ 0.000000] initial memory mapped : 0 - 01c00000 [ 0.000000] init_memory_mapping: 0000000000000000-00000000377fe000 [ 0.000000] 0000000000 - 0000400000 page 4k [ 0.000000] 0000400000 - 0037400000 page 2M [ 0.000000] 0037400000 - 00377fe000 page 4k [ 0.000000] kernel direct mapping tables up to 377fe000 @ 1bfb000-1c00000 [ 0.000000] RAMDISK: 36738000 - 37394000 [ 0.000000] Reserving 64MB of memory at 448MB for crashkernel (System RAM: 2039MB) [ 0.000000] ACPI: RSDP 000fbe60 00014 (v00 ACPIAM) [ 0.000000] ACPI: RSDT 7f780000 00034 (v01 A M I OEMRSDT 05000804 MSFT 00000097) [ 0.000000] ACPI: FACP 7f780200 00081 (v01 A M I OEMFACP 05000804 MSFT 00000097) [ 0.000000] ACPI: DSDT 7f780400 05F61 (v01 A0797 A0797000 00000000 INTL 20051117) [ 0.000000] ACPI: FACS 7f790000 00040 [ 0.000000] ACPI: APIC 7f780390 00068 (v01 A M I OEMAPIC 05000804 MSFT 00000097) [ 0.000000] ACPI: OEMB 7f790040 00046 (v01 A M I AMI_OEM 05000804 MSFT 00000097) [ 0.000000] ACPI: MCFG 7f786370 0003C (v01 A M I OEMMCFG 05000804 MSFT 00000097) [ 0.000000] ACPI: Local APIC address 0xfee00000 [ 0.000000] 1151MB HIGHMEM available. [ 0.000000] 887MB LOWMEM available. [ 0.000000] mapped low ram: 0 - 377fe000 [ 0.000000] low ram: 0 - 377fe000 [ 0.000000] Zone PFN ranges: [ 0.000000] DMA 0x00000010 -> 0x00001000 [ 0.000000] Normal 0x00001000 -> 0x000377fe [ 0.000000] HighMem 0x000377fe -> 0x0007f780 [ 0.000000] Movable zone start PFN for each node [ 0.000000] early_node_map[2] active PFN ranges [ 0.000000] 0: 0x00000010 -> 0x0000009f [ 0.000000] 0: 0x00000100 -> 0x0007f780 [ 0.000000] On node 0 totalpages: 521999 [ 0.000000] free_area_init_node: node 0, pgdat c1795800, node_mem_map f5748200 [ 0.000000] DMA zone: 32 pages used for memmap [ 0.000000] DMA zone: 0 pages reserved [ 0.000000] DMA zone: 3951 pages, LIFO batch:0 [ 0.000000] Normal zone: 1744 pages used for memmap [ 0.000000] Normal zone: 221486 pages, LIFO batch:31 [ 0.000000] HighMem zone: 2304 pages used for memmap [ 0.000000] HighMem zone: 292482 pages, LIFO batch:31 [ 0.000000] Using APIC driver default [ 0.000000] ACPI: PM-Timer IO Port: 0x808 [ 0.000000] ACPI: Local APIC address 0xfee00000 [ 0.000000] ACPI: LAPIC (acpi_id[0x01] lapic_id[0x00] enabled) [ 0.000000] ACPI: IOAPIC (id[0x01] address[0xfec00000] gsi_base[0]) [ 0.000000] IOAPIC[0]: apic_id 1, version 32, address 0xfec00000, GSI 0-23 [ 0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 0 global_irq 2 dfl dfl) [ 0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 9 global_irq 9 high level) [ 0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 0 global_irq 2 dfl dfl) [ 0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 9 global_irq 9 high level) [ 0.000000] ACPI: IRQ0 used by override. [ 0.000000] ACPI: IRQ2 used by override. [ 0.000000] ACPI: IRQ9 used by override. [ 0.000000] Using ACPI (MADT) for SMP configuration information [ 0.000000] SMP: Allowing 1 CPUs, 0 hotplug CPUs [ 0.000000] nr_irqs_gsi: 40 [ 0.000000] PM: Registered nosave memory: 000000000009f000 - 00000000000a0000 [ 0.000000] PM: Registered nosave memory: 00000000000a0000 - 00000000000e4000 [ 0.000000] PM: Registered nosave memory: 00000000000e4000 - 0000000000100000 [ 0.000000] Allocating PCI resources starting at 7f800000 (gap: 7f800000:7f600000) [ 0.000000] Booting paravirtualized kernel on bare hardware [ 0.000000] setup_percpu: NR_CPUS:8 nr_cpumask_bits:8 nr_cpu_ids:1 nr_node_ids:1 [ 0.000000] PERCPU: Embedded 13 pages/cpu @f5000000 s28800 r0 d24448 u4194304 [ 0.000000] pcpu-alloc: s28800 r0 d24448 u4194304 alloc=1*4194304 [ 0.000000] pcpu-alloc: [0] 0 [ 0.000000] Built 1 zonelists in Zone order, mobility grouping on. Total pages: 517919 [ 0.000000] Kernel command line: BOOT_IMAGE=/boot/vmlinuz-2.6.38-999-generic root=UUID=3893e3fd-c2b4-40ec-9810-5a9aba86cbd4 ro crashkernel=384M-2G:64M,2G-:128M quiet splash vt.handoff=7 [ 0.000000] PID hash table entries: 4096 (order: 2, 16384 bytes) [ 0.000000] Dentry cache hash table entries: 131072 (order: 7, 524288 bytes) [ 0.000000] Inode-cache hash table entries: 65536 (order: 6, 262144 bytes) [ 0.000000] Initializing CPU#0 [ 0.000000] allocated 10441920 bytes of page_cgroup [ 0.000000] please try 'cgroup_disable=memory' option if you don't want memory cgroups [ 0.000000] Initializing HighMem for node 0 (000377fe:0007f780) [ 0.000000] Memory: 1972872k/2088448k available (5198k kernel code, 115124k reserved, 2600k data, 784k init, 1179144k highmem) [ 0.000000] virtual kernel memory layout: [ 0.000000] fixmap : 0xfff16000 - 0xfffff000 ( 932 kB) [ 0.000000] pkmap : 0xff800000 - 0xffc00000 (4096 kB) [ 0.000000] vmalloc : 0xf7ffe000 - 0xff7fe000 ( 120 MB) [ 0.000000] lowmem : 0xc0000000 - 0xf77fe000 ( 887 MB) [ 0.000000] .init : 0xc179e000 - 0xc1862000 ( 784 kB) [ 0.000000] .data : 0xc151396f - 0xc179dd00 (2600 kB) [ 0.000000] .text : 0xc1000000 - 0xc151396f (5198 kB) [ 0.000000] Checking if this processor honours the WP bit even in supervisor mode...Ok. [ 0.000000] SLUB: Genslabs=15, HWalign=64, Order=0-3, MinObjects=0, CPUs=1, Nodes=1 [ 0.000000] Hierarchical RCU implementation. [ 0.000000] RCU dyntick-idle grace-period acceleration is enabled. [ 0.000000] RCU-based detection of stalled CPUs is disabled. [ 0.000000] NR_IRQS:2304 nr_irqs:256 16 [ 0.000000] CPU 0 irqstacks, hard=f4006000 soft=f4008000 [ 0.000000] Console: colour dummy device 80x25 [ 0.000000] console [tty0] enabled [ 0.000000] Fast TSC calibration using PIT [ 0.000000] Detected 630.056 MHz processor. [ 0.004009] Calibrating delay loop (skipped), value calculated using timer frequency.. 1260.11 BogoMIPS (lpj=2520224) [ 0.004026] pid_max: default: 32768 minimum: 301 [ 0.004107] Security Framework initialized [ 0.008091] AppArmor: AppArmor initialized [ 0.008267] Mount-cache hash table entries: 512 [ 0.008695] /proc/device-tree: can't find root [ 0.008737] Initializing cgroup subsys ns [ 0.008748] ns_cgroup deprecated: consider using the 'clone_children' flag without the ns_cgroup. [ 0.008759] Initializing cgroup subsys cpuacct [ 0.008775] Initializing cgroup subsys memory [ 0.008811] Initializing cgroup subsys devices [ 0.008819] Initializing cgroup subsys freezer [ 0.008827] Initializing cgroup subsys net_cls [ 0.008835] Initializing cgroup subsys blkio [ 0.008962] mce: CPU supports 5 MCE banks [ 0.008993] CPU0: Thermal monitoring enabled (TM1) [ 0.011556] SMP alternatives: switching to UP code [ 0.039671] Freeing SMP alternatives: 20k freed [ 0.039702] ACPI: Core revision 20110112 [ 0.052047] ftrace: allocating 27296 entries in 54 pages [ 0.060179] Enabling APIC mode: Flat. Using 1 I/O APICs [ 0.060577] ..TIMER: vector=0x30 apic1=0 pin1=2 apic2=-1 pin2=-1 [ 0.101008] CPU0: Intel(R) Celeron(R) M processor 900MHz stepping 06 [ 0.104005] Performance Events: p6 PMU driver. [ 0.104005] ... version: 0 [ 0.104005] ... bit width: 32 [ 0.104005] ... generic registers: 2 [ 0.104005] ... value mask: 00000000ffffffff [ 0.104005] ... max period: 000000007fffffff [ 0.104005] ... fixed-purpose events: 0 [ 0.104005] ... event mask: 0000000000000003 [ 0.104005] Brought up 1 CPUs [ 0.104005] Total of 1 processors activated (1260.11 BogoMIPS). [ 0.104005] devtmpfs: initialized [ 0.105940] print_constraints: dummy: [ 0.105989] Time: 3:46:17 Date: 03/02/11 [ 0.106130] NET: Registered protocol family 16 [ 0.106504] EISA bus registered [ 0.106532] ACPI: bus type pci registered [ 0.106775] PCI: MMCONFIG for domain 0000 [bus 00-ff] at [mem 0xe0000000-0xefffffff] (base 0xe0000000) [ 0.106787] PCI: not using MMCONFIG [ 0.107077] PCI: PCI BIOS revision 3.00 entry at 0xf0031, last bus=5 [ 0.107085] PCI: Using configuration type 1 for base access [ 0.110809] bio: create slab at 0 [ 0.114801] ACPI: EC: Look up EC in DSDT [ 0.118642] ACPI: Executed 1 blocks of module-level executable AML code [ 0.133681] ACPI: Interpreter enabled [ 0.133710] ACPI: (supports S0 S3 S4 S5) [ 0.133785] ACPI: Using IOAPIC for interrupt routing [ 0.133876] PCI: MMCONFIG for domain 0000 [bus 00-ff] at [mem 0xe0000000-0xefffffff] (base 0xe0000000) [ 0.139350] PCI: MMCONFIG at [mem 0xe0000000-0xefffffff] reserved in ACPI motherboard resources [ 0.139360] PCI: Using MMCONFIG for extended config space [ 0.154674] ACPI: EC: GPE = 0x18, I/O: command/status = 0x66, data = 0x62 [ 0.155124] ACPI: No dock devices found. [ 0.155132] HEST: Table not found. [ 0.155144] PCI: Using host bridge windows from ACPI; if necessary, use "pci=nocrs" and report a bug [ 0.155444] ACPI: PCI Root Bridge [PCI0] (domain 0000 [bus 00-ff]) [ 0.156098] pci_root PNP0A08:00: host bridge window [io 0x0000-0x0cf7] [ 0.156109] pci_root PNP0A08:00: host bridge window [io 0x0d00-0xffff] [ 0.156119] pci_root PNP0A08:00: host bridge window [mem 0x000a0000-0x000bffff] [ 0.156129] pci_root PNP0A08:00: host bridge window [mem 0x000d0000-0x000dffff] [ 0.156139] pci_root PNP0A08:00: host bridge window [mem 0x7f810000-0xffffffff] [ 0.156182] pci 0000:00:00.0: [8086:2590] type 0 class 0x000600 [ 0.156287] pci 0000:00:02.0: [8086:2592] type 0 class 0x000300 [ 0.156314] pci 0000:00:02.0: reg 10: [mem 0xf7f00000-0xf7f7ffff] [ 0.156332] pci 0000:00:02.0: reg 14: [io 0xec00-0xec07] [ 0.156350] pci 0000:00:02.0: reg 18: [mem 0xd0000000-0xdfffffff pref] [ 0.156368] pci 0000:00:02.0: reg 1c: [mem 0xf7ec0000-0xf7efffff] [ 0.156443] pci 0000:00:02.1: [8086:2792] type 0 class 0x000380 [ 0.156467] pci 0000:00:02.1: reg 10: [mem 0xf7f80000-0xf7ffffff] [ 0.156636] pci 0000:00:1b.0: [8086:2668] type 0 class 0x000403 [ 0.156670] pci 0000:00:1b.0: reg 10: [mem 0xf7eb8000-0xf7ebbfff 64bit] [ 0.156770] pci 0000:00:1b.0: PME# supported from D0 D3hot D3cold [ 0.156782] pci 0000:00:1b.0: PME# disabled [ 0.156824] pci 0000:00:1c.0: [8086:2660] type 1 class 0x000604 [ 0.156926] pci 0000:00:1c.0: PME# supported from D0 D3hot D3cold [ 0.156938] pci 0000:00:1c.0: PME# disabled [ 0.156985] pci 0000:00:1c.1: [8086:2662] type 1 class 0x000604 [ 0.157087] pci 0000:00:1c.1: PME# supported from D0 D3hot D3cold [ 0.157098] pci 0000:00:1c.1: PME# disabled [ 0.157141] pci 0000:00:1c.2: [8086:2664] type 1 class 0x000604 [ 0.157243] pci 0000:00:1c.2: PME# supported from D0 D3hot D3cold [ 0.157254] pci 0000:00:1c.2: PME# disabled [ 0.157301] pci 0000:00:1d.0: [8086:2658] type 0 class 0x000c03 [ 0.157374] pci 0000:00:1d.0: reg 20: [io 0xe400-0xe41f] [ 0.157431] pci 0000:00:1d.1: [8086:2659] type 0 class 0x000c03 [ 0.157504] pci 0000:00:1d.1: reg 20: [io 0xe480-0xe49f] [ 0.157561] pci 0000:00:1d.2: [8086:265a] type 0 class 0x000c03 [ 0.157633] pci 0000:00:1d.2: reg 20: [io 0xe800-0xe81f] [ 0.157690] pci 0000:00:1d.3: [8086:265b] type 0 class 0x000c03 [ 0.157762] pci 0000:00:1d.3: reg 20: [io 0xe880-0xe89f] [ 0.157833] pci 0000:00:1d.7: [8086:265c] type 0 class 0x000c03 [ 0.157870] pci 0000:00:1d.7: reg 10: [mem 0xf7eb7c00-0xf7eb7fff] [ 0.157986] pci 0000:00:1d.7: PME# supported from D0 D3hot D3cold [ 0.157998] pci 0000:00:1d.7: PME# disabled [ 0.158034] pci 0000:00:1e.0: [8086:2448] type 1 class 0x000604 [ 0.158135] pci 0000:00:1f.0: [8086:2641] type 0 class 0x000601 [ 0.158268] pci 0000:00:1f.0: Force enabled HPET at 0xfed00000 [ 0.158285] pci 0000:00:1f.0: quirk: [io 0x0800-0x087f] claimed by ICH6 ACPI/GPIO/TCO [ 0.158297] pci 0000:00:1f.0: quirk: [io 0x0480-0x04bf] claimed by ICH6 GPIO [ 0.158309] pci 0000:00:1f.0: LPC Generic IO decode 1 PIO at 0380-03ff [ 0.158350] pci 0000:00:1f.2: [8086:2653] type 0 class 0x000101 [ 0.158380] pci 0000:00:1f.2: reg 10: [io 0x0000-0x0007] [ 0.158399] pci 0000:00:1f.2: reg 14: [io 0x0000-0x0003] [ 0.158418] pci 0000:00:1f.2: reg 18: [io 0x0000-0x0007] [ 0.158438] pci 0000:00:1f.2: reg 1c: [io 0x0000-0x0003] [ 0.158457] pci 0000:00:1f.2: reg 20: [io 0xffa0-0xffaf] [ 0.158512] pci 0000:00:1f.2: PME# supported from D3hot [ 0.158523] pci 0000:00:1f.2: PME# disabled [ 0.158552] pci 0000:00:1f.3: [8086:266a] type 0 class 0x000c05 [ 0.158635] pci 0000:00:1f.3: reg 20: [io 0x0400-0x041f] [ 0.158763] pci 0000:00:1c.0: PCI bridge to [bus 04-04] [ 0.158775] pci 0000:00:1c.0: bridge window [io 0xf000-0x0000] (disabled) [ 0.158788] pci 0000:00:1c.0: bridge window [mem 0xfff00000-0x000fffff] (disabled) [ 0.158805] pci 0000:00:1c.0: bridge window [mem 0xfff00000-0x000fffff pref] (disabled) [ 0.158909] pci 0000:03:00.0: [1969:2048] type 0 class 0x000200 [ 0.158951] pci 0000:03:00.0: reg 10: [mem 0xfbfc0000-0xfbffffff 64bit] [ 0.159035] pci 0000:03:00.0: reg 30: [mem 0xfbfa0000-0xfbfbffff pref] [ 0.159094] pci 0000:03:00.0: PME# supported from D3hot D3cold [ 0.159107] pci 0000:03:00.0: PME# disabled [ 0.159141] pci 0000:03:00.0: disabling ASPM on pre-1.1 PCIe device. You can enable it with 'pcie_aspm=force' [ 0.159168] pci 0000:00:1c.1: PCI bridge to [bus 03-03] [ 0.159179] pci 0000:00:1c.1: bridge window [io 0xf000-0x0000] (disabled) [ 0.159192] pci 0000:00:1c.1: bridge window [mem 0xfbf00000-0xfbffffff] [ 0.159207] pci 0000:00:1c.1: bridge window [mem 0xfff00000-0x000fffff pref] (disabled) [ 0.159312] pci 0000:01:00.0: [168c:001c] type 0 class 0x000200 [ 0.159352] pci 0000:01:00.0: reg 10: [mem 0xfbef0000-0xfbefffff 64bit] [ 0.159515] pci 0000:01:00.0: disabling ASPM on pre-1.1 PCIe device. You can enable it with 'pcie_aspm=force' [ 0.159539] pci 0000:00:1c.2: PCI bridge to [bus 01-02] [ 0.159550] pci 0000:00:1c.2: bridge window [io 0xf000-0x0000] (disabled) [ 0.159563] pci 0000:00:1c.2: bridge window [mem 0xf8000000-0xfbefffff] [ 0.159579] pci 0000:00:1c.2: bridge window [mem 0xf0000000-0xf6ffffff 64bit pref] [ 0.159686] pci 0000:00:1e.0: PCI bridge to [bus 05-05] (subtractive decode) [ 0.159698] pci 0000:00:1e.0: bridge window [io 0xf000-0x0000] (disabled) [ 0.159711] pci 0000:00:1e.0: bridge window [mem 0xfff00000-0x000fffff] (disabled) [ 0.159726] pci 0000:00:1e.0: bridge window [mem 0xfff00000-0x000fffff pref] (disabled) [ 0.159737] pci 0000:00:1e.0: bridge window [io 0x0000-0x0cf7] (subtractive decode) [ 0.159747] pci 0000:00:1e.0: bridge window [io 0x0d00-0xffff] (subtractive decode) [ 0.159757] pci 0000:00:1e.0: bridge window [mem 0x000a0000-0x000bffff] (subtractive decode) [ 0.159768] pci 0000:00:1e.0: bridge window [mem 0x000d0000-0x000dffff] (subtractive decode) [ 0.159778] pci 0000:00:1e.0: bridge window [mem 0x7f810000-0xffffffff] (subtractive decode) [ 0.159816] pci_bus 0000:00: on NUMA node 0 [ 0.159831] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0._PRT] [ 0.160338] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.P0P3._PRT] [ 0.160444] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.P0P5._PRT] [ 0.160532] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.P0P6._PRT] [ 0.160820] pci0000:00: Requesting ACPI _OSC control (0x1d) [ 0.174929] ACPI: PCI Interrupt Link [LNKA] (IRQs 3 4 *5 6 7 10 11 12 14 15) [ 0.175115] ACPI: PCI Interrupt Link [LNKB] (IRQs 3 4 5 6 7 10 *11 12 14 15) [ 0.175292] ACPI: PCI Interrupt Link [LNKC] (IRQs 3 4 5 6 7 *10 11 12 14 15) [ 0.175480] ACPI: PCI Interrupt Link [LNKD] (IRQs 3 4 5 6 *7 10 11 12 14 15) [ 0.175657] ACPI: PCI Interrupt Link [LNKE] (IRQs 3 4 5 6 7 10 11 12 14 15) *0, disabled. [ 0.175836] ACPI: PCI Interrupt Link [LNKF] (IRQs 3 4 5 6 7 10 11 12 14 15) *0, disabled. [ 0.176032] ACPI: PCI Interrupt Link [LNKG] (IRQs 3 4 5 6 7 10 11 12 14 15) *0, disabled. [ 0.176217] ACPI: PCI Interrupt Link [LNKH] (IRQs *3 4 5 6 7 10 11 12 14 15) [ 0.176574] vgaarb: device added: PCI:0000:00:02.0,decodes=io+mem,owns=io+mem,locks=none [ 0.176608] vgaarb: loaded [ 0.177407] SCSI subsystem initialized [ 0.177605] libata version 3.00 loaded. [ 0.177784] usbcore: registered new interface driver usbfs [ 0.177828] usbcore: registered new interface driver hub [ 0.177929] usbcore: registered new device driver usb [ 0.178343] wmi: Mapper loaded [ 0.178350] PCI: Using ACPI for IRQ routing [ 0.178423] PCI: pci_cache_line_size set to 64 bytes [ 0.178577] reserve RAM buffer: 000000000009fc00 - 000000000009ffff [ 0.178587] reserve RAM buffer: 000000007f780000 - 000000007fffffff [ 0.178963] NetLabel: Initializing [ 0.178971] NetLabel: domain hash size = 128 [ 0.178977] NetLabel: protocols = UNLABELED CIPSOv4 [ 0.179013] NetLabel: unlabeled traffic allowed by default [ 0.179499] hpet clockevent registered [ 0.179509] HPET: 3 timers in total, 0 timers will be used for per-cpu timer [ 0.179528] hpet0: at MMIO 0xfed00000, IRQs 2, 8, 0 [ 0.179544] hpet0: 3 comparators, 64-bit 14.318180 MHz counter [ 0.184162] Switching to clocksource hpet [ 0.187892] Switched to NOHz mode on CPU #0 [ 0.211200] AppArmor: AppArmor Filesystem Enabled [ 0.211306] pnp: PnP ACPI init [ 0.211373] ACPI: bus type pnp registered [ 0.211773] pnp 00:00: [bus 00-ff] [ 0.211785] pnp 00:00: [io 0x0cf8-0x0cff] [ 0.211794] pnp 00:00: [io 0x0000-0x0cf7 window] [ 0.211803] pnp 00:00: [io 0x0d00-0xffff window] [ 0.211813] pnp 00:00: [mem 0x000a0000-0x000bffff window] [ 0.211822] pnp 00:00: [mem 0x000d0000-0x000dffff window] [ 0.211832] pnp 00:00: [mem 0x7f810000-0xffffffff window] [ 0.212100] pnp 00:00: Plug and Play ACPI device, IDs PNP0a08 PNP0a03 (active) [ 0.212143] pnp 00:01: [mem 0xfed13000-0xfed19fff] [ 0.212326] system 00:01: [mem 0xfed13000-0xfed19fff] has been reserved [ 0.212340] system 00:01: Plug and Play ACPI device, IDs PNP0c01 (active) [ 0.212429] pnp 00:02: [dma 4] [ 0.212437] pnp 00:02: [io 0x0000-0x000f] [ 0.212445] pnp 00:02: [io 0x0081-0x0083] [ 0.212453] pnp 00:02: [io 0x0087] [ 0.212460] pnp 00:02: [io 0x0089-0x008b] [ 0.212468] pnp 00:02: [io 0x008f] [ 0.212476] pnp 00:02: [io 0x00c0-0x00df] [ 0.212599] pnp 00:02: Plug and Play ACPI device, IDs PNP0200 (active) [ 0.212641] pnp 00:03: [io 0x0070-0x0071] [ 0.212673] pnp 00:03: [irq 8] [ 0.212775] pnp 00:03: Plug and Play ACPI device, IDs PNP0b00 (active) [ 0.212903] pnp 00:04: [io 0x0060] [ 0.212911] pnp 00:04: [io 0x0064] [ 0.212928] pnp 00:04: [irq 1] [ 0.213035] pnp 00:04: Plug and Play ACPI device, IDs PNP0303 PNP030b (active) [ 0.213232] pnp 00:05: [irq 12] [ 0.213353] pnp 00:05: Plug and Play ACPI device, IDs SYN0a00 SYN0a01 SYN0a04 SYN0002 PNP0f13 (active) [ 0.213390] pnp 00:06: [io 0x0061] [ 0.213494] pnp 00:06: Plug and Play ACPI device, IDs PNP0800 (active) [ 0.213530] pnp 00:07: [io 0x00f0-0x00ff] [ 0.213547] pnp 00:07: [irq 13] [ 0.213650] pnp 00:07: Plug and Play ACPI device, IDs PNP0c04 (active) [ 0.214003] pnp 00:08: [io 0x0010-0x001f] [ 0.214012] pnp 00:08: [io 0x0022-0x003f] [ 0.214020] pnp 00:08: [io 0x0044-0x005f] [ 0.214027] pnp 00:08: [io 0x0063] [ 0.214035] pnp 00:08: [io 0x0067-0x006f] [ 0.214043] pnp 00:08: [io 0x0072-0x007f] [ 0.214051] pnp 00:08: [io 0x0080] [ 0.214058] pnp 00:08: [io 0x0084-0x0086] [ 0.214066] pnp 00:08: [io 0x0088] [ 0.214073] pnp 00:08: [io 0x008c-0x008e] [ 0.214081] pnp 00:08: [io 0x0090-0x009f] [ 0.214089] pnp 00:08: [io 0x00a2-0x00bf] [ 0.214097] pnp 00:08: [io 0x00e0-0x00ef] [ 0.214105] pnp 00:08: [io 0x0380-0x0383] [ 0.214113] pnp 00:08: [io 0x04d0-0x04d1] [ 0.214121] pnp 00:08: [io 0x0800-0x087f] [ 0.214129] pnp 00:08: [io 0x0000-0xffffffff disabled] [ 0.214138] pnp 00:08: [io 0x0480-0x04bf] [ 0.214146] pnp 00:08: [mem 0xfed1c000-0xfed1ffff] [ 0.214155] pnp 00:08: [mem 0xfed20000-0xfed8ffff] [ 0.214163] pnp 00:08: [mem 0xfff00000-0xffffffff] [ 0.214410] system 00:08: [io 0x0380-0x0383] has been reserved [ 0.214421] system 00:08: [io 0x04d0-0x04d1] has been reserved [ 0.214432] system 00:08: [io 0x0800-0x087f] has been reserved [ 0.214443] system 00:08: [io 0x0480-0x04bf] has been reserved [ 0.214455] system 00:08: [mem 0xfed1c000-0xfed1ffff] has been reserved [ 0.214466] system 00:08: [mem 0xfed20000-0xfed8ffff] has been reserved [ 0.214478] system 00:08: [mem 0xfff00000-0xffffffff] could not be reserved [ 0.214492] system 00:08: Plug and Play ACPI device, IDs PNP0c02 (active) [ 0.214844] pnp 00:09: [mem 0xfec00000-0xfec00fff] [ 0.214854] pnp 00:09: [mem 0xfee00000-0xfee00fff] [ 0.215015] system 00:09: [mem 0xfec00000-0xfec00fff] could not be reserved [ 0.215027] system 00:09: [mem 0xfee00000-0xfee00fff] has been reserved [ 0.215040] system 00:09: Plug and Play ACPI device, IDs PNP0c02 (active) [ 0.215166] pnp 00:0a: [mem 0xe0000000-0xefffffff] [ 0.215323] system 00:0a: [mem 0xe0000000-0xefffffff] has been reserved [ 0.215336] system 00:0a: Plug and Play ACPI device, IDs PNP0c02 (active) [ 0.215575] pnp 00:0b: [mem 0xe0000000-0xefffffff] [ 0.215765] system 00:0b: [mem 0xe0000000-0xefffffff] has been reserved [ 0.215778] system 00:0b: Plug and Play ACPI device, IDs PNP0c02 (active) [ 0.216234] pnp 00:0c: [mem 0x00000000-0x0009ffff] [ 0.216244] pnp 00:0c: [mem 0x000c0000-0x000cffff] [ 0.216252] pnp 00:0c: [mem 0x000e0000-0x000fffff] [ 0.216261] pnp 00:0c: [mem 0x00100000-0x7f7fffff] [ 0.216279] pnp 00:0c: [mem 0x00000000-0xffffffff disabled] [ 0.216484] system 00:0c: [mem 0x00000000-0x0009ffff] could not be reserved [ 0.216495] system 00:0c: [mem 0x000c0000-0x000cffff] could not be reserved [ 0.216507] system 00:0c: [mem 0x000e0000-0x000fffff] could not be reserved [ 0.216518] system 00:0c: [mem 0x00100000-0x7f7fffff] could not be reserved [ 0.216531] system 00:0c: Plug and Play ACPI device, IDs PNP0c01 (active) [ 0.217063] pnp: PnP ACPI: found 13 devices [ 0.217070] ACPI: ACPI bus type pnp unregistered [ 0.217083] PnPBIOS: Disabled by ACPI PNP [ 0.259745] pci 0000:00:1c.0: BAR 14: assigned [mem 0x7f900000-0x7fafffff] [ 0.259765] pci 0000:00:1c.0: BAR 15: assigned [mem 0x7fb00000-0x7fcfffff 64bit pref] [ 0.259781] pci 0000:00:1c.1: BAR 15: assigned [mem 0x7fd00000-0x7fefffff 64bit pref] [ 0.259795] pci 0000:00:1c.0: BAR 13: assigned [io 0x1000-0x1fff] [ 0.259807] pci 0000:00:1c.1: BAR 13: assigned [io 0x2000-0x2fff] [ 0.259820] pci 0000:00:1c.2: BAR 13: assigned [io 0x3000-0x3fff] [ 0.259830] pci 0000:00:1c.0: PCI bridge to [bus 04-04] [ 0.259840] pci 0000:00:1c.0: bridge window [io 0x1000-0x1fff] [ 0.259853] pci 0000:00:1c.0: bridge window [mem 0x7f900000-0x7fafffff] [ 0.259866] pci 0000:00:1c.0: bridge window [mem 0x7fb00000-0x7fcfffff 64bit pref] [ 0.259882] pci 0000:00:1c.1: PCI bridge to [bus 03-03] [ 0.259892] pci 0000:00:1c.1: bridge window [io 0x2000-0x2fff] [ 0.259906] pci 0000:00:1c.1: bridge window [mem 0xfbf00000-0xfbffffff] [ 0.259918] pci 0000:00:1c.1: bridge window [mem 0x7fd00000-0x7fefffff 64bit pref] [ 0.259934] pci 0000:00:1c.2: PCI bridge to [bus 01-02] [ 0.259944] pci 0000:00:1c.2: bridge window [io 0x3000-0x3fff] [ 0.259957] pci 0000:00:1c.2: bridge window [mem 0xf8000000-0xfbefffff] [ 0.259970] pci 0000:00:1c.2: bridge window [mem 0xf0000000-0xf6ffffff 64bit pref] [ 0.259986] pci 0000:00:1e.0: PCI bridge to [bus 05-05] [ 0.259993] pci 0000:00:1e.0: bridge window [io disabled] [ 0.260020] pci 0000:00:1e.0: bridge window [mem disabled] [ 0.260031] pci 0000:00:1e.0: bridge window [mem pref disabled] [ 0.260057] pci 0000:00:1c.0: enabling device (0104 -> 0107) [ 0.260105] pci 0000:00:1c.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16 [ 0.260120] pci 0000:00:1c.0: setting latency timer to 64 [ 0.260136] pci 0000:00:1c.1: enabling device (0106 -> 0107) [ 0.260156] pci 0000:00:1c.1: PCI INT B -> GSI 17 (level, low) -> IRQ 17 [ 0.260168] pci 0000:00:1c.1: setting latency timer to 64 [ 0.260184] pci 0000:00:1c.2: enabling device (0106 -> 0107) [ 0.260204] pci 0000:00:1c.2: PCI INT C -> GSI 18 (level, low) -> IRQ 18 [ 0.260215] pci 0000:00:1c.2: setting latency timer to 64 [ 0.260233] pci 0000:00:1e.0: setting latency timer to 64 [ 0.260245] pci_bus 0000:00: resource 4 [io 0x0000-0x0cf7] [ 0.260255] pci_bus 0000:00: resource 5 [io 0x0d00-0xffff] [ 0.260264] pci_bus 0000:00: resource 6 [mem 0x000a0000-0x000bffff] [ 0.260274] pci_bus 0000:00: resource 7 [mem 0x000d0000-0x000dffff] [ 0.260283] pci_bus 0000:00: resource 8 [mem 0x7f810000-0xffffffff] [ 0.260293] pci_bus 0000:04: resource 0 [io 0x1000-0x1fff] [ 0.260302] pci_bus 0000:04: resource 1 [mem 0x7f900000-0x7fafffff] [ 0.260312] pci_bus 0000:04: resource 2 [mem 0x7fb00000-0x7fcfffff 64bit pref] [ 0.260322] pci_bus 0000:03: resource 0 [io 0x2000-0x2fff] [ 0.260331] pci_bus 0000:03: resource 1 [mem 0xfbf00000-0xfbffffff] [ 0.260341] pci_bus 0000:03: resource 2 [mem 0x7fd00000-0x7fefffff 64bit pref] [ 0.260351] pci_bus 0000:01: resource 0 [io 0x3000-0x3fff] [ 0.260360] pci_bus 0000:01: resource 1 [mem 0xf8000000-0xfbefffff] [ 0.260370] pci_bus 0000:01: resource 2 [mem 0xf0000000-0xf6ffffff 64bit pref] [ 0.260381] pci_bus 0000:05: resource 4 [io 0x0000-0x0cf7] [ 0.260390] pci_bus 0000:05: resource 5 [io 0x0d00-0xffff] [ 0.260399] pci_bus 0000:05: resource 6 [mem 0x000a0000-0x000bffff] [ 0.260409] pci_bus 0000:05: resource 7 [mem 0x000d0000-0x000dffff] [ 0.260418] pci_bus 0000:05: resource 8 [mem 0x7f810000-0xffffffff] [ 0.260535] NET: Registered protocol family 2 [ 0.260758] IP route cache hash table entries: 32768 (order: 5, 131072 bytes) [ 0.261556] TCP established hash table entries: 131072 (order: 8, 1048576 bytes) [ 0.263622] TCP bind hash table entries: 65536 (order: 7, 524288 bytes) [ 0.264776] TCP: Hash tables configured (established 131072 bind 65536) [ 0.264788] TCP reno registered [ 0.264809] UDP hash table entries: 512 (order: 2, 16384 bytes) [ 0.264855] UDP-Lite hash table entries: 512 (order: 2, 16384 bytes) [ 0.265208] NET: Registered protocol family 1 [ 0.265269] pci 0000:00:02.0: Boot video device [ 0.265473] PCI: CLS 16 bytes, default 64 [ 0.265656] Trying to unpack rootfs image as initramfs... [ 1.470673] Freeing initrd memory: 12656k freed [ 1.494624] cpufreq-nforce2: No nForce2 chipset. [ 1.494755] Scanning for low memory corruption every 60 seconds [ 1.495237] audit: initializing netlink socket (disabled) [ 1.495311] type=2000 audit(1299037577.488:1): initialized [ 1.536743] highmem bounce pool size: 64 pages [ 1.536763] HugeTLB registered 4 MB page size, pre-allocated 0 pages [ 1.543629] VFS: Disk quotas dquot_6.5.2 [ 1.543853] Dquot-cache hash table entries: 1024 (order 0, 4096 bytes) [ 1.546485] fuse init (API version 7.16) [ 1.546886] msgmni has been set to 1575 [ 1.547769] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 253) [ 1.547782] io scheduler noop registered [ 1.547789] io scheduler deadline registered [ 1.547851] io scheduler cfq registered (default) [ 1.548275] pcieport 0000:00:1c.0: setting latency timer to 64 [ 1.548369] pcieport 0000:00:1c.0: irq 40 for MSI/MSI-X [ 1.548527] pcieport 0000:00:1c.1: setting latency timer to 64 [ 1.548600] pcieport 0000:00:1c.1: irq 41 for MSI/MSI-X [ 1.548747] pcieport 0000:00:1c.2: setting latency timer to 64 [ 1.548820] pcieport 0000:00:1c.2: irq 42 for MSI/MSI-X [ 1.549072] pci_hotplug: PCI Hot Plug PCI Core version: 0.5 [ 1.549169] pciehp: PCI Express Hot Plug Controller Driver version: 0.4 [ 1.549645] vesafb: framebuffer at 0xd0000000, mapped to 0xf8080000, using 1216k, total 1216k [ 1.549656] vesafb: mode is 640x480x32, linelength=2560, pages=0 [ 1.549662] vesafb: scrolling: redraw [ 1.549673] vesafb: Truecolor: size=8:8:8:8, shift=24:16:8:0 [ 1.576809] Console: switching to colour frame buffer device 80x30 [ 1.603610] fb0: VESA VGA frame buffer device [ 1.603961] ACPI: Deprecated procfs I/F for AC is loaded, please retry with CONFIG_ACPI_PROCFS_POWER cleared [ 1.604227] ACPI: AC Adapter [AC0] (on-line) [ 1.604641] input: Lid Switch as /devices/LNXSYSTM:00/device:00/PNP0C0D:00/input/input0 [ 1.609028] ACPI: Lid Switch [LID] [ 1.609221] input: Sleep Button as /devices/LNXSYSTM:00/device:00/PNP0C0E:00/input/input1 [ 1.609239] ACPI: Sleep Button [SLPB] [ 1.609416] input: Power Button as /devices/LNXSYSTM:00/device:00/PNP0C0C:00/input/input2 [ 1.609429] ACPI: Power Button [PWRB] [ 1.609601] input: Power Button as /devices/LNXSYSTM:00/LNXPWRBN:00/input/input3 [ 1.609614] ACPI: Power Button [PWRF] [ 1.610097] ACPI: acpi_idle registered with cpuidle [ 1.610183] Marking TSC unstable due to TSC halts in idle [ 1.621903] thermal LNXTHERM:00: registered as thermal_zone0 [ 1.621914] ACPI: Thermal Zone [TZ00] (54 C) [ 1.622168] ERST: Table is not found! [ 1.622230] isapnp: Scanning for PnP cards... [ 1.939633] isapnp: No Plug & Play device found [ 1.947158] Serial: 8250/16550 driver, 32 ports, IRQ sharing enabled [ 1.952601] Linux agpgart interface v0.103 [ 1.952920] agpgart-intel 0000:00:00.0: Intel 915GM Chipset [ 1.953063] agpgart-intel 0000:00:00.0: detected gtt size: 262144K total, 262144K mappable [ 1.953334] agpgart-intel 0000:00:00.0: detected 8192K stolen memory [ 1.953638] agpgart-intel 0000:00:00.0: AGP aperture is 256M @ 0xd0000000 [ 1.962690] brd: module loaded [ 1.969012] loop: module loaded [ 1.969384] i2c-core: driver [adp5520] using legacy suspend method [ 1.969393] i2c-core: driver [adp5520] using legacy resume method [ 1.969761] ata_piix 0000:00:1f.2: version 2.13 [ 1.969837] ata_piix 0000:00:1f.2: PCI INT B -> GSI 19 (level, low) -> IRQ 19 [ 1.969853] ata_piix 0000:00:1f.2: MAP [ P0 P2 IDE IDE ] [ 1.969966] ata_piix 0000:00:1f.2: setting latency timer to 64 [ 1.976049] scsi0 : ata_piix [ 1.976426] scsi1 : ata_piix [ 1.982598] ata1: SATA max UDMA/133 cmd 0x1f0 ctl 0x3f6 bmdma 0xffa0 irq 14 [ 1.982610] ata2: PATA max UDMA/100 cmd 0x170 ctl 0x376 bmdma 0xffa8 irq 15 [ 1.984713] Fixed MDIO Bus: probed [ 1.984878] PPP generic driver version 2.4.2 [ 1.985095] tun: Universal TUN/TAP device driver, 1.6 [ 1.985103] tun: (C) 1999-2004 Max Krasnyansky [ 1.985472] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver [ 1.985573] ehci_hcd 0000:00:1d.7: PCI INT A -> GSI 23 (level, low) -> IRQ 23 [ 1.985618] ehci_hcd 0000:00:1d.7: setting latency timer to 64 [ 1.985628] ehci_hcd 0000:00:1d.7: EHCI Host Controller [ 1.985812] ehci_hcd 0000:00:1d.7: new USB bus registered, assigned bus number 1 [ 1.985901] ehci_hcd 0000:00:1d.7: debug port 1 [ 1.989802] ehci_hcd 0000:00:1d.7: cache line size of 16 is not supported [ 1.989937] ehci_hcd 0000:00:1d.7: irq 23, io mem 0xf7eb7c00 [ 2.004039] ehci_hcd 0000:00:1d.7: USB 2.0 started, EHCI 1.00 [ 2.004526] hub 1-0:1.0: USB hub found [ 2.004544] hub 1-0:1.0: 8 ports detected [ 2.004820] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver [ 2.004873] uhci_hcd: USB Universal Host Controller Interface driver [ 2.004994] uhci_hcd 0000:00:1d.0: PCI INT A -> GSI 23 (level, low) -> IRQ 23 [ 2.005015] uhci_hcd 0000:00:1d.0: setting latency timer to 64 [ 2.005026] uhci_hcd 0000:00:1d.0: UHCI Host Controller [ 2.005192] uhci_hcd 0000:00:1d.0: new USB bus registered, assigned bus number 2 [ 2.005250] uhci_hcd 0000:00:1d.0: irq 23, io base 0x0000e400 [ 2.005691] hub 2-0:1.0: USB hub found [ 2.005707] hub 2-0:1.0: 2 ports detected [ 2.005922] uhci_hcd 0000:00:1d.1: PCI INT B -> GSI 19 (level, low) -> IRQ 19 [ 2.005941] uhci_hcd 0000:00:1d.1: setting latency timer to 64 [ 2.005951] uhci_hcd 0000:00:1d.1: UHCI Host Controller [ 2.006096] uhci_hcd 0000:00:1d.1: new USB bus registered, assigned bus number 3 [ 2.006178] uhci_hcd 0000:00:1d.1: irq 19, io base 0x0000e480 [ 2.006621] hub 3-0:1.0: USB hub found [ 2.006636] hub 3-0:1.0: 2 ports detected [ 2.006847] uhci_hcd 0000:00:1d.2: PCI INT C -> GSI 18 (level, low) -> IRQ 18 [ 2.006870] uhci_hcd 0000:00:1d.2: setting latency timer to 64 [ 2.006880] uhci_hcd 0000:00:1d.2: UHCI Host Controller [ 2.007053] uhci_hcd 0000:00:1d.2: new USB bus registered, assigned bus number 4 [ 2.007131] uhci_hcd 0000:00:1d.2: irq 18, io base 0x0000e800 [ 2.007573] hub 4-0:1.0: USB hub found [ 2.007588] hub 4-0:1.0: 2 ports detected [ 2.007803] uhci_hcd 0000:00:1d.3: PCI INT D -> GSI 16 (level, low) -> IRQ 16 [ 2.007821] uhci_hcd 0000:00:1d.3: setting latency timer to 64 [ 2.007831] uhci_hcd 0000:00:1d.3: UHCI Host Controller [ 2.007994] uhci_hcd 0000:00:1d.3: new USB bus registered, assigned bus number 5 [ 2.012106] uhci_hcd 0000:00:1d.3: irq 16, io base 0x0000e880 [ 2.012603] hub 5-0:1.0: USB hub found [ 2.012619] hub 5-0:1.0: 2 ports detected [ 2.013103] i8042: PNP: PS/2 Controller [PNP0303:PS2K,PNP0f13:PS2M] at 0x60,0x64 irq 1,12 [ 2.039734] serio: i8042 KBD port at 0x60,0x64 irq 1 [ 2.039759] serio: i8042 AUX port at 0x60,0x64 irq 12 [ 2.040316] mousedev: PS/2 mouse device common for all mice [ 2.042185] rtc_cmos 00:03: RTC can wake from S4 [ 2.042364] rtc_cmos 00:03: rtc core: registered rtc_cmos as rtc0 [ 2.042416] rtc0: alarms up to one month, 114 bytes nvram, hpet irqs [ 2.042838] device-mapper: uevent: version 1.0.3 [ 2.043159] device-mapper: ioctl: 4.19.1-ioctl (2011-01-07) initialised: dm-devel@redhat.com [ 2.043387] device-mapper: multipath: version 1.2.0 loaded [ 2.043397] device-mapper: multipath round-robin: version 1.0.0 loaded [ 2.043693] EISA: Probing bus 0 at eisa.0 [ 2.043703] EISA: Cannot allocate resource for mainboard [ 2.043711] Cannot allocate resource for EISA slot 1 [ 2.043718] Cannot allocate resource for EISA slot 2 [ 2.043725] Cannot allocate resource for EISA slot 3 [ 2.043732] Cannot allocate resource for EISA slot 4 [ 2.043739] Cannot allocate resource for EISA slot 5 [ 2.043746] Cannot allocate resource for EISA slot 6 [ 2.043753] Cannot allocate resource for EISA slot 7 [ 2.043760] Cannot allocate resource for EISA slot 8 [ 2.043767] EISA: Detected 0 cards. [ 2.044105] cpuidle: using governor ladder [ 2.044293] cpuidle: using governor menu [ 2.045305] TCP cubic registered [ 2.045872] NET: Registered protocol family 10 [ 2.047887] NET: Registered protocol family 17 [ 2.047954] Registering the dns_resolver key type [ 2.048200] Using IPI No-Shortcut mode [ 2.048585] PM: Hibernation image not present or could not be loaded. [ 2.048633] registered taskstats version 1 [ 2.049175] Magic number: 3:680:764 [ 2.049259] event_source breakpoint: hash matches [ 2.049439] rtc_cmos 00:03: setting system clock to 2011-03-02 03:46:19 UTC (1299037579) [ 2.049451] BIOS EDD facility v0.16 2004-Jun-25, 0 devices found [ 2.049457] EDD information not available. [ 2.072834] input: AT Translated Set 2 keyboard as /devices/platform/i8042/serio0/input/input4 [ 2.152396] ata2.00: CFA: SILICONMOTION SM223AC, , max UDMA/66 [ 2.152407] ata2.00: 7815024 sectors, multi 0: LBA [ 2.168239] ata2.00: configured for UDMA/66 [ 2.308960] ACPI: Deprecated procfs I/F for battery is loaded, please retry with CONFIG_ACPI_PROCFS_POWER cleared [ 2.308990] ACPI: Battery Slot [BAT0] (battery present) [ 2.309441] scsi 1:0:0:0: Direct-Access ATA SILICONMOTION SM n/a PQ: 0 ANSI: 5 [ 2.310051] sd 1:0:0:0: Attached scsi generic sg0 type 0 [ 2.310390] sd 1:0:0:0: [sda] 7815024 512-byte logical blocks: (4.00 GB/3.72 GiB) [ 2.310571] sd 1:0:0:0: [sda] Write Protect is off [ 2.310582] sd 1:0:0:0: [sda] Mode Sense: 00 3a 00 00 [ 2.310662] sd 1:0:0:0: [sda] Write cache: disabled, read cache: enabled, doesn't support DPO or FUA [ 2.312426] sda: sda1 [ 2.313134] sd 1:0:0:0: [sda] Attached SCSI disk [ 2.313236] Freeing unused kernel memory: 784k freed [ 2.314312] Write protecting the kernel text: 5200k [ 2.314444] Write protecting the kernel read-only data: 2208k [ 2.316140] usb 1-2: new high speed USB device using ehci_hcd and address 2 [ 2.395419] udev[62]: starting version 167 [ 2.732128] usb 1-3: new high speed USB device using ehci_hcd and address 3 [ 2.866656] hub 1-3:1.0: USB hub found [ 2.867022] hub 1-3:1.0: 4 ports detected [ 2.980144] usb 1-5: new high speed USB device using ehci_hcd and address 4 [ 3.072001] Atheros(R) L2 Ethernet Driver - version 2.2.3 [ 3.072110] Copyright (c) 2007 Atheros Corporation. [ 3.089809] atl2 0000:03:00.0: PCI INT A -> GSI 17 (level, low) -> IRQ 17 [ 3.089841] atl2 0000:03:00.0: setting latency timer to 64 [ 3.224118] usb 1-8: new high speed USB device using ehci_hcd and address 5 [ 3.421110] usbcore: registered new interface driver uas [ 3.428545] usb 1-3.1: new low speed USB device using ehci_hcd and address 6 [ 3.457201] Initializing USB Mass Storage driver... [ 3.457547] scsi2 : usb-storage 1-2:1.0 [ 3.458283] scsi3 : usb-storage 1-5:1.0 [ 3.461111] usbcore: registered new interface driver usb-storage [ 3.461123] USB Mass Storage support registered. [ 3.724398] usb 1-3.2: new low speed USB device using ehci_hcd and address 7 [ 3.940299] input: Logitech USB-PS/2 Optical Mouse as /devices/pci0000:00/0000:00:1d.7/usb1/1-3/1-3.1/1-3.1:1.0/input/input5 [ 3.942533] generic-usb 0003:046D:C045.0001: input,hidraw0: USB HID v1.10 Mouse [Logitech USB-PS/2 Optical Mouse] on usb-0000:00:1d.7-3.1/input0 [ 3.957047] input: Logitech Logitech USB Keyboard as /devices/pci0000:00/0000:00:1d.7/usb1/1-3/1-3.2/1-3.2:1.0/input/input6 [ 3.957838] generic-usb 0003:046D:C315.0002: input,hidraw1: USB HID v1.10 Keyboard [Logitech Logitech USB Keyboard] on usb-0000:00:1d.7-3.2/input0 [ 3.958543] usbcore: registered new interface driver usbhid [ 3.958553] usbhid: USB HID core driver [ 4.457216] scsi 2:0:0:0: Direct-Access Generic USB Disk 9.02 PQ: 0 ANSI: 2 [ 4.464922] sd 2:0:0:0: Attached scsi generic sg1 type 0 [ 4.465164] sd 2:0:0:0: [sdb] 234441648 512-byte logical blocks: (120 GB/111 GiB) [ 4.465997] scsi 3:0:0:0: Direct-Access USB2.0 CardReader SD0 0100 PQ: 0 ANSI: 0 [ 4.466050] sd 2:0:0:0: [sdb] Write Protect is off [ 4.466060] sd 2:0:0:0: [sdb] Mode Sense: 03 00 00 00 [ 4.466903] sd 2:0:0:0: [sdb] No Caching mode page present [ 4.467657] sd 2:0:0:0: [sdb] Assuming drive cache: write through [ 4.471040] sd 2:0:0:0: [sdb] No Caching mode page present [ 4.471793] sd 2:0:0:0: [sdb] Assuming drive cache: write through [ 4.475033] sd 3:0:0:0: Attached scsi generic sg2 type 0 [ 4.475315] sd 3:0:0:0: [sdc] Attached SCSI removable disk [ 4.575918] sdb: sdb1 sdb2 < sdb5 > [ 4.579038] sd 2:0:0:0: [sdb] No Caching mode page present [ 4.579793] sd 2:0:0:0: [sdb] Assuming drive cache: write through [ 4.580648] sd 2:0:0:0: [sdb] Attached SCSI disk [ 5.000633] EXT4-fs (sdb1): mounted filesystem with ordered data mode. Opts: (null) [ 27.187476] Adding 3070972k swap on /dev/sdb5. Priority:-1 extents:1 across:3070972k [ 27.389167] udev[294]: starting version 167 [ 27.583254] EXT4-fs (sdb1): re-mounted. Opts: errors=remount-ro [ 27.910704] lp: driver loaded but no devices found [ 29.093444] input: Video Bus as /devices/LNXSYSTM:00/device:00/PNP0A08:00/LNXVIDEO:00/input/input7 [ 29.104906] ACPI: Video Device [VGA] (multi-head: yes rom: no post: no) [ 29.577188] eeepc_laptop: Eee PC Hotkey Driver [ 29.577205] eeepc_laptop: model 701 does not officially support setting cpu speed [ 29.577212] eeepc_laptop: cpufv disabled to avoid instability [ 29.577234] eeepc_laptop: Hotkey init flags 0x41 [ 29.578271] eeepc_laptop: TYPE (2000000) not reported by BIOS, enabling anyway [ 29.578284] eeepc_laptop: Get control methods supported: 0x2101711 [ 30.025704] input: Asus EeePC extra buttons as /devices/platform/eeepc/input/input8 [ 30.183886] intel_rng: FWH not detected [ 31.084615] type=1400 audit(1299037608.532:2): apparmor="STATUS" operation="profile_load" name="/sbin/dhclient" pid=433 comm="apparmor_parser" [ 31.084877] type=1400 audit(1299037608.532:3): apparmor="STATUS" operation="profile_load" name="/usr/lib/NetworkManager/nm-dhcp-client.action" pid=433 comm="apparmor_parser" [ 31.085101] type=1400 audit(1299037608.532:4): apparmor="STATUS" operation="profile_load" name="/usr/lib/connman/scripts/dhclient-script" pid=433 comm="apparmor_parser" [ 31.528602] Linux video capture interface: v2.00 [ 31.926261] atl2 0000:03:00.0: irq 43 for MSI/MSI-X [ 31.929230] ADDRCONF(NETDEV_UP): eth0: link is not ready [ 32.940484] [drm] Initialized drm 1.1.0 20060810 [ 33.338694] Synaptics Touchpad, model: 1, fw: 6.3, id: 0x180b1, caps: 0xa04713/0x200000/0x0 [ 33.469778] input: SynPS/2 Synaptics TouchPad as /devices/platform/i8042/serio1/input/input9 [ 33.603855] uvcvideo: Found UVC 1.00 device (eb1a:2761) [ 33.686218] input: UVC Camera (eb1a:2761) as /devices/pci0000:00/0000:00:1d.7/usb1/1-8/1-8:1.0/input/input10 [ 33.714983] usbcore: registered new interface driver uvcvideo [ 33.714995] USB Video Class driver (v1.0.0) [ 34.035188] cfg80211: Calling CRDA to update world regulatory domain [ 34.045045] type=1400 audit(1299037611.492:5): apparmor="STATUS" operation="profile_replace" name="/sbin/dhclient" pid=499 comm="apparmor_parser" [ 34.045322] type=1400 audit(1299037611.492:6): apparmor="STATUS" operation="profile_replace" name="/usr/lib/NetworkManager/nm-dhcp-client.action" pid=499 comm="apparmor_parser" [ 34.045563] type=1400 audit(1299037611.492:7): apparmor="STATUS" operation="profile_replace" name="/usr/lib/connman/scripts/dhclient-script" pid=499 comm="apparmor_parser" [ 35.025022] type=1400 audit(1299037612.472:8): apparmor="STATUS" operation="profile_load" name="/usr/share/gdm/guest-session/Xsession" pid=649 comm="apparmor_parser" [ 35.114119] cfg80211: World regulatory domain updated: [ 35.114134] cfg80211: (start_freq - end_freq @ bandwidth), (max_antenna_gain, max_eirp) [ 35.114145] cfg80211: (2402000 KHz - 2472000 KHz @ 40000 KHz), (300 mBi, 2000 mBm) [ 35.114156] cfg80211: (2457000 KHz - 2482000 KHz @ 20000 KHz), (300 mBi, 2000 mBm) [ 35.114166] cfg80211: (2474000 KHz - 2494000 KHz @ 20000 KHz), (300 mBi, 2000 mBm) [ 35.114176] cfg80211: (5170000 KHz - 5250000 KHz @ 40000 KHz), (300 mBi, 2000 mBm) [ 35.114186] cfg80211: (5735000 KHz - 5835000 KHz @ 40000 KHz), (300 mBi, 2000 mBm) [ 35.670068] i915 0000:00:02.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16 [ 35.670087] i915 0000:00:02.0: setting latency timer to 64 [ 35.699333] [drm] Supports vblank timestamp caching Rev 1 (10.10.2010). [ 35.699346] [drm] Driver supports precise vblank timestamp query. [ 35.779173] vgaarb: device changed decodes: PCI:0000:00:02.0,olddecodes=io+mem,decodes=io+mem:owns=io+mem [ 35.780799] [drm] initialized overlay support [ 35.850745] ath5k 0000:01:00.0: PCI INT A -> GSI 18 (level, low) -> IRQ 18 [ 35.850772] ath5k 0000:01:00.0: setting latency timer to 64 [ 35.850878] ath5k 0000:01:00.0: registered as 'phy0' [ 36.475347] ath: EEPROM regdomain: 0x60 [ 36.475358] ath: EEPROM indicates we should expect a direct regpair map [ 36.475371] ath: Country alpha2 being used: 00 [ 36.475377] ath: Regpair used: 0x60 [ 36.475443] cfg80211: Updating information on frequency 2412 MHz for a 20 MHz width channel with regulatory rule: [ 36.475454] cfg80211: 2402000 KHz - 2472000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 36.475463] cfg80211: Updating information on frequency 2417 MHz for a 20 MHz width channel with regulatory rule: [ 36.475474] cfg80211: 2402000 KHz - 2472000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 36.475482] cfg80211: Updating information on frequency 2422 MHz for a 20 MHz width channel with regulatory rule: [ 36.475493] cfg80211: 2402000 KHz - 2472000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 36.475501] cfg80211: Updating information on frequency 2427 MHz for a 20 MHz width channel with regulatory rule: [ 36.475512] cfg80211: 2402000 KHz - 2472000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 36.475520] cfg80211: Updating information on frequency 2432 MHz for a 20 MHz width channel with regulatory rule: [ 36.475531] cfg80211: 2402000 KHz - 2472000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 36.475539] cfg80211: Updating information on frequency 2437 MHz for a 20 MHz width channel with regulatory rule: [ 36.475550] cfg80211: 2402000 KHz - 2472000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 36.475558] cfg80211: Updating information on frequency 2442 MHz for a 20 MHz width channel with regulatory rule: [ 36.475568] cfg80211: 2402000 KHz - 2472000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 36.475577] cfg80211: Updating information on frequency 2447 MHz for a 20 MHz width channel with regulatory rule: [ 36.475587] cfg80211: 2402000 KHz - 2472000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 36.475596] cfg80211: Updating information on frequency 2452 MHz for a 20 MHz width channel with regulatory rule: [ 36.475606] cfg80211: 2402000 KHz - 2472000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 36.475615] cfg80211: Updating information on frequency 2457 MHz for a 20 MHz width channel with regulatory rule: [ 36.475625] cfg80211: 2402000 KHz - 2472000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 36.475634] cfg80211: Updating information on frequency 2462 MHz for a 20 MHz width channel with regulatory rule: [ 36.475644] cfg80211: 2402000 KHz - 2472000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 36.475653] cfg80211: Updating information on frequency 2467 MHz for a 20 MHz width channel with regulatory rule: [ 36.475663] cfg80211: 2457000 KHz - 2482000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 36.475672] cfg80211: Updating information on frequency 2472 MHz for a 20 MHz width channel with regulatory rule: [ 36.475682] cfg80211: 2457000 KHz - 2482000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 36.475691] cfg80211: Updating information on frequency 2484 MHz for a 20 MHz width channel with regulatory rule: [ 36.475701] cfg80211: 2474000 KHz - 2494000 KHz @ KHz), (N/A mBi, 2000 mBm) [ 36.476245] cfg80211: Ignoring regulatory request Set by core since the driver uses its own custom regulatory domain [ 36.744736] ieee80211 phy0: Selected rate control algorithm 'minstrel_ht' [ 36.754021] Registered led device: ath5k-phy0::rx [ 36.754369] Registered led device: ath5k-phy0::tx [ 36.754408] ath5k phy0: Atheros AR2425 chip found (MAC: 0xe2, PHY: 0x70) [ 36.857216] checking generic (d0000000 130000) vs hw (d0000000 10000000) [ 36.857229] fb: conflicting fb hw usage inteldrmfb vs VESA VGA - removing generic driver [ 36.857305] Console: switching to colour dummy device 80x25 [ 36.900276] Console: switching to colour frame buffer device 100x30 [ 36.900308] fb0: inteldrmfb frame buffer device [ 36.900315] drm: registered panic notifier [ 36.900773] [drm] Initialized i915 1.6.0 20080730 for 0000:00:02.0 on minor 0 [ 37.150803] ADDRCONF(NETDEV_UP): wlan0: link is not ready [ 37.353818] HDA Intel 0000:00:1b.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16 [ 37.353942] HDA Intel 0000:00:1b.0: irq 44 for MSI/MSI-X [ 37.354009] HDA Intel 0000:00:1b.0: setting latency timer to 64 [ 37.556197] input: HDA Intel Mic as /devices/pci0000:00/0000:00:1b.0/sound/card0/input11 [ 37.560512] input: HDA Intel Headphone as /devices/pci0000:00/0000:00:1b.0/sound/card0/input12 [ 38.256281] type=1400 audit(1299037615.704:9): apparmor="STATUS" operation="profile_replace" name="/sbin/dhclient" pid=689 comm="apparmor_parser" [ 38.256554] type=1400 audit(1299037615.704:10): apparmor="STATUS" operation="profile_replace" name="/usr/lib/NetworkManager/nm-dhcp-client.action" pid=689 comm="apparmor_parser" [ 38.256779] type=1400 audit(1299037615.704:11): apparmor="STATUS" operation="profile_replace" name="/usr/lib/connman/scripts/dhclient-script" pid=689 comm="apparmor_parser" [ 38.322891] ppdev: user-space parallel port driver [ 40.330385] BUG: unable to handle kernel NULL pointer dereference at 0000018e [ 40.330702] IP: [] fb_release+0x25/0x60 [ 40.330899] *pde = 00000000 [ 40.331014] Oops: 0000 [#1] SMP [ 40.331148] last sysfs file: /sys/devices/virtual/vtconsole/vtcon1/uevent [ 40.331395] Modules linked in: parport_pc ppdev snd_hda_codec_realtek snd_hda_intel snd_hda_codec snd_hwdep arc4 snd_pcm ath5k snd_seq_midi snd_rawmidi ath i915 snd_seq_midi_event mac80211 snd_seq joydev snd_timer snd_seq_device drm_kms_helper uvcvideo cfg80211 drm snd psmouse videodev serio_raw soundcore snd_page_alloc i2c_algo_bit eeepc_laptop video sparse_keymap lp parport usbhid hid usb_storage uas atl2 [ 40.332019] [ 40.332019] Pid: 246, comm: plymouthd Not tainted 2.6.38-999-generic #201103011141 ASUSTeK Computer INC. 701/701 [ 40.332019] EIP: 0060:[] EFLAGS: 00210286 CPU: 0 [ 40.332019] EIP is at fb_release+0x25/0x60 [ 40.332019] EAX: 00000186 EBX: f41f1800 ECX: c12aaf90 EDX: f6df6000 [ 40.332019] ESI: f41f1808 EDI: f0a64e40 EBP: f6df7f40 ESP: f6df7f38 [ 40.332019] DS: 007b ES: 007b FS: 00d8 GS: 00e0 SS: 0068 [ 40.332019] Process plymouthd (pid: 246, ti=f6df6000 task=f6e325e0 task.ti=f6df6000) [ 40.332019] Stack: [ 40.332019] f3e9e880 00000008 f6df7f74 c1127c39 00000001 00000000 00000000 f3e9e880 [ 40.332019] f41966c0 f43e83f0 f0a64e48 f43e83f0 f0a64e40 f6e03100 00000000 f6df7f7c [ 40.332019] c1127d7e f6df7f94 c112467c 0012d000 f6e03140 f6e03100 0000000c f6df7fac [ 40.332019] Call Trace: [ 40.332019] [] __fput+0x99/0x1c0 [ 40.332019] [] fput+0x1e/0x30 [ 40.332019] [] filp_close+0x4c/0x80 [ 40.332019] [] sys_close+0x6e/0xc0 [ 40.332019] [] sysenter_do_call+0x12/0x28 [ 40.332019] [] ? squash_the_stupid_serial_number+0xc0/0xe0 [ 40.332019] Code: b4 26 00 00 00 00 55 89 e5 83 ec 08 89 1c 24 89 74 24 04 3e 8d 74 26 00 8b 5a 74 8d 73 08 89 f0 e8 11 f9 25 00 8b 83 0c 03 00 00 <8b> 48 08 85 c9 74 0f ba 01 00 00 00 89 d8 ff d1 8b 83 0c 03 00 [ 40.332019] EIP: [] fb_release+0x25/0x60 SS:ESP 0068:f6df7f38 [ 40.332019] CR2: 000000000000018e [ 40.545790] ---[ end trace f375290bb91f4213 ]--- [ 43.639331] type=1400 audit(1299037621.084:12): apparmor="STATUS" operation="profile_load" name="/usr/lib/cups/backend/cups-pdf" pid=844 comm="apparmor_parser" [ 43.648512] type=1400 audit(1299037621.096:13): apparmor="STATUS" operation="profile_load" name="/usr/sbin/cupsd" pid=844 comm="apparmor_parser" [ 55.775794] EXT4-fs (sdb1): re-mounted. Opts: errors=remount-ro,commit=0 [ 70.911738] wlan0: authenticate with 00:24:b2:97:4e:cc (try 1) [ 70.913279] wlan0: authenticated [ 70.913367] wlan0: associate with 00:24:b2:97:4e:cc (try 1) [ 70.915575] wlan0: RX AssocResp from 00:24:b2:97:4e:cc (capab=0x411 status=0 aid=1) [ 70.915588] wlan0: associated [ 70.918422] ADDRCONF(NETDEV_CHANGE): wlan0: link becomes ready [ 81.144077] wlan0: no IPv6 routers present [ 89.197190] type=1400 audit(1299037666.645:14): apparmor="STATUS" operation="profile_load" name="/usr/bin/evince" pid=835 comm="apparmor_parser" [ 89.208293] type=1400 audit(1299037666.657:15): apparmor="STATUS" operation="profile_load" name="/usr/bin/evince-previewer" pid=835 comm="apparmor_parser" [ 89.214015] type=1400 audit(1299037666.661:16): apparmor="STATUS" operation="profile_load" name="/usr/bin/evince-thumbnailer" pid=835 comm="apparmor_parser" [ 92.736230] type=1400 audit(1299037670.183:17): apparmor="STATUS" operation="profile_replace" name="/usr/lib/cups/backend/cups-pdf" pid=1257 comm="apparmor_parser" [ 92.747868] type=1400 audit(1299037670.191:18): apparmor="STATUS" operation="profile_replace" name="/usr/sbin/cupsd" pid=1257 comm="apparmor_parser" [ 93.922891] type=1400 audit(1299037671.366:19): apparmor="STATUS" operation="profile_load" name="/usr/sbin/tcpdump" pid=1259 comm="apparmor_parser" Bug: 750767 [ 0.000000] Initializing cgroup subsys cpuset [ 0.000000] Initializing cgroup subsys cpu [ 0.000000] Linux version 2.6.35-28-generic (buildd@allspice) (gcc version 4.4.5 (Ubuntu/Linaro 4.4.4-14ubuntu5) ) #50-Ubuntu SMP Fri Mar 18 18:42:20 UTC 2011 (Ubuntu 2.6.35-28.50-generic 2.6.35.11) [ 0.000000] Command line: BOOT_IMAGE=/vmlinuz-2.6.35-28-generic root=UUID=c9a74a55-36db-4c67-8cdc-097c0cced3d8 ro PROFILE=internal [ 0.000000] BIOS-provided physical RAM map: [ 0.000000] BIOS-e820: 0000000000000000 - 000000000009fc00 (usable) [ 0.000000] BIOS-e820: 000000000009fc00 - 00000000000a0000 (reserved) [ 0.000000] BIOS-e820: 00000000000ef000 - 0000000000100000 (reserved) [ 0.000000] BIOS-e820: 0000000000100000 - 00000000bf5d4000 (usable) [ 0.000000] BIOS-e820: 00000000bf5d4000 - 00000000bf6c2000 (reserved) [ 0.000000] BIOS-e820: 00000000bf6c2000 - 00000000bf7c2000 (ACPI NVS) [ 0.000000] BIOS-e820: 00000000bf7c2000 - 00000000bf7ff000 (ACPI data) [ 0.000000] BIOS-e820: 00000000bf7ff000 - 00000000bf800000 (usable) [ 0.000000] BIOS-e820: 00000000bf800000 - 00000000c0000000 (reserved) [ 0.000000] BIOS-e820: 00000000e0000000 - 00000000f0000000 (reserved) [ 0.000000] BIOS-e820: 00000000fec00000 - 00000000fec01000 (reserved) [ 0.000000] BIOS-e820: 00000000fed10000 - 00000000fed14000 (reserved) [ 0.000000] BIOS-e820: 00000000fed19000 - 00000000fed1a000 (reserved) [ 0.000000] BIOS-e820: 00000000fed1b000 - 00000000fed20000 (reserved) [ 0.000000] BIOS-e820: 00000000fee00000 - 00000000fee01000 (reserved) [ 0.000000] BIOS-e820: 00000000ffd00000 - 0000000100000000 (reserved) [ 0.000000] BIOS-e820: 0000000100000000 - 0000000138000000 (usable) [ 0.000000] NX (Execute Disable) protection: active [ 0.000000] DMI 2.6 present. [ 0.000000] e820 update range: 0000000000000000 - 0000000000001000 (usable) ==> (reserved) [ 0.000000] e820 remove range: 00000000000a0000 - 0000000000100000 (usable) [ 0.000000] No AGP bridge found [ 0.000000] last_pfn = 0x138000 max_arch_pfn = 0x400000000 [ 0.000000] MTRR default type: uncachable [ 0.000000] MTRR fixed ranges enabled: [ 0.000000] 00000-9FFFF write-back [ 0.000000] A0000-BFFFF uncachable [ 0.000000] C0000-FFFFF write-protect [ 0.000000] MTRR variable ranges enabled: [ 0.000000] 0 base 0FFC00000 mask FFFC00000 write-protect [ 0.000000] 1 base 000000000 mask F80000000 write-back [ 0.000000] 2 base 080000000 mask FC0000000 write-back [ 0.000000] 3 base 100000000 mask FC0000000 write-back [ 0.000000] 4 base 138000000 mask FF8000000 uncachable [ 0.000000] 5 disabled [ 0.000000] 6 disabled [ 0.000000] 7 disabled [ 0.000000] x86 PAT enabled: cpu 0, old 0x7040600070406, new 0x7010600070106 [ 0.000000] last_pfn = 0xbf800 max_arch_pfn = 0x400000000 [ 0.000000] e820 update range: 0000000000001000 - 0000000000010000 (usable) ==> (reserved) [ 0.000000] Scanning 1 areas for low memory corruption [ 0.000000] modified physical RAM map: [ 0.000000] modified: 0000000000000000 - 0000000000010000 (reserved) [ 0.000000] modified: 0000000000010000 - 000000000009fc00 (usable) [ 0.000000] modified: 000000000009fc00 - 00000000000a0000 (reserved) [ 0.000000] modified: 00000000000ef000 - 0000000000100000 (reserved) [ 0.000000] modified: 0000000000100000 - 00000000bf5d4000 (usable) [ 0.000000] modified: 00000000bf5d4000 - 00000000bf6c2000 (reserved) [ 0.000000] modified: 00000000bf6c2000 - 00000000bf7c2000 (ACPI NVS) [ 0.000000] modified: 00000000bf7c2000 - 00000000bf7ff000 (ACPI data) [ 0.000000] modified: 00000000bf7ff000 - 00000000bf800000 (usable) [ 0.000000] modified: 00000000bf800000 - 00000000c0000000 (reserved) [ 0.000000] modified: 00000000e0000000 - 00000000f0000000 (reserved) [ 0.000000] modified: 00000000fec00000 - 00000000fec01000 (reserved) [ 0.000000] modified: 00000000fed10000 - 00000000fed14000 (reserved) [ 0.000000] modified: 00000000fed19000 - 00000000fed1a000 (reserved) [ 0.000000] modified: 00000000fed1b000 - 00000000fed20000 (reserved) [ 0.000000] modified: 00000000fee00000 - 00000000fee01000 (reserved) [ 0.000000] modified: 00000000ffd00000 - 0000000100000000 (reserved) [ 0.000000] modified: 0000000100000000 - 0000000138000000 (usable) [ 0.000000] initial memory mapped : 0 - 20000000 [ 0.000000] init_memory_mapping: 0000000000000000-00000000bf800000 [ 0.000000] 0000000000 - 00bf800000 page 2M [ 0.000000] kernel direct mapping tables up to bf800000 @ 16000-1a000 [ 0.000000] init_memory_mapping: 0000000100000000-0000000138000000 [ 0.000000] 0100000000 - 0138000000 page 2M [ 0.000000] kernel direct mapping tables up to 138000000 @ 18000-1e000 [ 0.000000] RAMDISK: 3756f000 - 37ff0000 [ 0.000000] ACPI: RSDP 00000000000f2a80 00024 (v02 HPQOEM) [ 0.000000] ACPI: XSDT 00000000bf7fe120 00094 (v01 HPQOEM SLIC-MPC 0000000F 01000013) [ 0.000000] ACPI: FACP 00000000bf7fc000 000F4 (v03 HPQOEM 1521 0000000F HP 00000001) [ 0.000000] ACPI: DSDT 00000000bf7da000 1C453 (v02 HPQOEM 1521 00000001 INTL 20060912) [ 0.000000] ACPI: FACS 00000000bf760000 00040 [ 0.000000] ACPI: HPET 00000000bf7fb000 00038 (v01 HPQOEM 1521 00000001 HP 00000001) [ 0.000000] ACPI: APIC 00000000bf7fa000 000BC (v01 HPQOEM 1521 00000001 HP 00000001) [ 0.000000] ACPI: MCFG 00000000bf7f9000 0003C (v01 HPQOEM 1521 00000001 HP 00000001) [ 0.000000] ACPI: TCPA 00000000bf7f7000 00032 (v02 HPQOEM 1521 00000000 HP 00000001) [ 0.000000] ACPI: SSDT 00000000bf7d7000 00135 (v01 HPQOEM SataAhci 00001000 INTL 20060912) [ 0.000000] ACPI: SSDT 00000000bf7d6000 00314 (v01 HPQOEM PtidDevc 00001000 INTL 20060912) [ 0.000000] ACPI: SLIC 00000000bf7d5000 00176 (v01 HPQOEM SLIC-MPC 00000001 HP 00000001) [ 0.000000] ACPI: SSDT 00000000bf7d1000 02576 (v01 HPQOEM NVIDIAGF 00000001 INTL 20060912) [ 0.000000] ACPI: DMAR 00000000bf7d0000 00080 (v01 INTEL CP_DALE 00000001 INTL 00000001) [ 0.000000] ACPI: SSDT 00000000bf7cf000 00A10 (v01 PmRef CpuPm 00003000 INTL 20060912) [ 0.000000] ACPI: SSDT 00000000bf7ce000 00288 (v01 PmRef Cpu0Tst 00003000 INTL 20060912) [ 0.000000] ACPI: SSDT 00000000bf7cd000 00225 (v01 PmRef ApTst 00003000 INTL 20060912) [ 0.000000] ACPI: ASF! 00000000bf7f8000 000A0 (v32 HPQOEM 1521 00000001 HP 00000001) [ 0.000000] ACPI: Local APIC address 0xfee00000 [ 0.000000] No NUMA configuration found [ 0.000000] Faking a node at 0000000000000000-0000000138000000 [ 0.000000] Initmem setup node 0 0000000000000000-0000000138000000 [ 0.000000] NODE_DATA [0000000100000000 - 0000000100004fff] [ 0.000000] [ffffea0000000000-ffffea00045fffff] PMD -> [ffff880100200000-ffff8801039fffff] on node 0 [ 0.000000] Zone PFN ranges: [ 0.000000] DMA 0x00000010 -> 0x00001000 [ 0.000000] DMA32 0x00001000 -> 0x00100000 [ 0.000000] Normal 0x00100000 -> 0x00138000 [ 0.000000] Movable zone start PFN for each node [ 0.000000] early_node_map[4] active PFN ranges [ 0.000000] 0: 0x00000010 -> 0x0000009f [ 0.000000] 0: 0x00000100 -> 0x000bf5d4 [ 0.000000] 0: 0x000bf7ff -> 0x000bf800 [ 0.000000] 0: 0x00100000 -> 0x00138000 [ 0.000000] On node 0 totalpages: 1013092 [ 0.000000] DMA zone: 56 pages used for memmap [ 0.000000] DMA zone: 0 pages reserved [ 0.000000] DMA zone: 3927 pages, LIFO batch:0 [ 0.000000] DMA32 zone: 14280 pages used for memmap [ 0.000000] DMA32 zone: 765453 pages, LIFO batch:31 [ 0.000000] Normal zone: 3136 pages used for memmap [ 0.000000] Normal zone: 226240 pages, LIFO batch:31 [ 0.000000] ACPI: PM-Timer IO Port: 0x408 [ 0.000000] ACPI: Local APIC address 0xfee00000 [ 0.000000] ACPI: LAPIC (acpi_id[0x00] lapic_id[0x00] enabled) [ 0.000000] ACPI: LAPIC (acpi_id[0x01] lapic_id[0x01] enabled) [ 0.000000] ACPI: LAPIC (acpi_id[0x02] lapic_id[0x04] enabled) [ 0.000000] ACPI: LAPIC (acpi_id[0x03] lapic_id[0x05] enabled) [ 0.000000] ACPI: LAPIC (acpi_id[0x04] lapic_id[0x00] disabled) [ 0.000000] ACPI: LAPIC (acpi_id[0x05] lapic_id[0x00] disabled) [ 0.000000] ACPI: LAPIC (acpi_id[0x06] lapic_id[0x00] disabled) [ 0.000000] ACPI: LAPIC (acpi_id[0x07] lapic_id[0x00] disabled) [ 0.000000] ACPI: LAPIC_NMI (acpi_id[0x00] high edge lint[0x1]) [ 0.000000] ACPI: LAPIC_NMI (acpi_id[0x01] high edge lint[0x1]) [ 0.000000] ACPI: LAPIC_NMI (acpi_id[0x02] high edge lint[0x1]) [ 0.000000] ACPI: LAPIC_NMI (acpi_id[0x03] high edge lint[0x1]) [ 0.000000] ACPI: LAPIC_NMI (acpi_id[0x04] high edge lint[0x1]) [ 0.000000] ACPI: LAPIC_NMI (acpi_id[0x05] high edge lint[0x1]) [ 0.000000] ACPI: LAPIC_NMI (acpi_id[0x06] high edge lint[0x1]) [ 0.000000] ACPI: LAPIC_NMI (acpi_id[0x07] high edge lint[0x1]) [ 0.000000] ACPI: IOAPIC (id[0x01] address[0xfec00000] gsi_base[0]) [ 0.000000] IOAPIC[0]: apic_id 1, version 32, address 0xfec00000, GSI 0-23 [ 0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 0 global_irq 2 dfl dfl) [ 0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 9 global_irq 9 high level) [ 0.000000] ACPI: IRQ0 used by override. [ 0.000000] ACPI: IRQ2 used by override. [ 0.000000] ACPI: IRQ9 used by override. [ 0.000000] Using ACPI (MADT) for SMP configuration information [ 0.000000] ACPI: HPET id: 0x8086a201 base: 0xfed00000 [ 0.000000] SMP: Allowing 8 CPUs, 4 hotplug CPUs [ 0.000000] nr_irqs_gsi: 40 [ 0.000000] early_res array is doubled to 64 at [19000 - 197ff] [ 0.000000] PM: Registered nosave memory: 000000000009f000 - 00000000000a0000 [ 0.000000] PM: Registered nosave memory: 00000000000a0000 - 00000000000ef000 [ 0.000000] PM: Registered nosave memory: 00000000000ef000 - 0000000000100000 [ 0.000000] PM: Registered nosave memory: 00000000bf5d4000 - 00000000bf6c2000 [ 0.000000] PM: Registered nosave memory: 00000000bf6c2000 - 00000000bf7c2000 [ 0.000000] PM: Registered nosave memory: 00000000bf7c2000 - 00000000bf7ff000 [ 0.000000] PM: Registered nosave memory: 00000000bf800000 - 00000000c0000000 [ 0.000000] PM: Registered nosave memory: 00000000c0000000 - 00000000e0000000 [ 0.000000] PM: Registered nosave memory: 00000000e0000000 - 00000000f0000000 [ 0.000000] PM: Registered nosave memory: 00000000f0000000 - 00000000fec00000 [ 0.000000] PM: Registered nosave memory: 00000000fec00000 - 00000000fec01000 [ 0.000000] PM: Registered nosave memory: 00000000fec01000 - 00000000fed10000 [ 0.000000] PM: Registered nosave memory: 00000000fed10000 - 00000000fed14000 [ 0.000000] PM: Registered nosave memory: 00000000fed14000 - 00000000fed19000 [ 0.000000] PM: Registered nosave memory: 00000000fed19000 - 00000000fed1a000 [ 0.000000] PM: Registered nosave memory: 00000000fed1a000 - 00000000fed1b000 [ 0.000000] PM: Registered nosave memory: 00000000fed1b000 - 00000000fed20000 [ 0.000000] PM: Registered nosave memory: 00000000fed20000 - 00000000fee00000 [ 0.000000] PM: Registered nosave memory: 00000000fee00000 - 00000000fee01000 [ 0.000000] PM: Registered nosave memory: 00000000fee01000 - 00000000ffd00000 [ 0.000000] PM: Registered nosave memory: 00000000ffd00000 - 0000000100000000 [ 0.000000] Allocating PCI resources starting at c0000000 (gap: c0000000:20000000) [ 0.000000] Booting paravirtualized kernel on bare hardware [ 0.000000] setup_percpu: NR_CPUS:64 nr_cpumask_bits:64 nr_cpu_ids:8 nr_node_ids:1 [ 0.000000] PERCPU: Embedded 30 pages/cpu @ffff880001e00000 s91520 r8192 d23168 u262144 [ 0.000000] early_res array is doubled to 128 at [19800 - 1a7ff] [ 0.000000] pcpu-alloc: s91520 r8192 d23168 u262144 alloc=1*2097152 [ 0.000000] pcpu-alloc: [0] 0 1 2 3 4 5 6 7 [ 0.000000] Built 1 zonelists in Node order, mobility grouping on. Total pages: 995620 [ 0.000000] Policy zone: Normal [ 0.000000] Kernel command line: BOOT_IMAGE=/vmlinuz-2.6.35-28-generic root=UUID=c9a74a55-36db-4c67-8cdc-097c0cced3d8 ro PROFILE=internal [ 0.000000] PID hash table entries: 4096 (order: 3, 32768 bytes) [ 0.000000] Checking aperture... [ 0.000000] No AGP bridge found [ 0.000000] Calgary: detecting Calgary via BIOS EBDA area [ 0.000000] Calgary: Unable to locate Rio Grande table in EBDA - bailing! [ 0.000000] Subtract (64 early reservations) [ 0.000000] #1 [0001000000 - 0001d18114] TEXT DATA BSS [ 0.000000] #2 [003756f000 - 0037ff0000] RAMDISK [ 0.000000] #3 [000009fc00 - 0000100000] BIOS reserved [ 0.000000] #4 [0001d19000 - 0001d19229] BRK [ 0.000000] #5 [0000010000 - 0000012000] TRAMPOLINE [ 0.000000] #6 [0000012000 - 0000016000] ACPI WAKEUP [ 0.000000] #7 [0000016000 - 0000018000] PGTABLE [ 0.000000] #8 [0000018000 - 0000019000] PGTABLE [ 0.000000] #9 [0100000000 - 0100005000] NODE_DATA [ 0.000000] #10 [0001d19240 - 0001d1a240] BOOTMEM [ 0.000000] #11 [0001d18140 - 0001d18428] BOOTMEM [ 0.000000] #12 [0100005000 - 0100006000] BOOTMEM [ 0.000000] #13 [0100006000 - 0100007000] BOOTMEM [ 0.000000] #14 [0100200000 - 0103a00000] MEMMAP 0 [ 0.000000] #15 [0001d18440 - 0001d185c0] BOOTMEM [ 0.000000] #16 [0001d1a240 - 0001d32240] BOOTMEM [ 0.000000] #17 [0001d32240 - 0001d38240] BOOTMEM [ 0.000000] #18 [0001d39000 - 0001d3a000] BOOTMEM [ 0.000000] #19 [0001d185c0 - 0001d18601] BOOTMEM [ 0.000000] #20 [0001d18640 - 0001d18683] BOOTMEM [ 0.000000] #21 [0001d186c0 - 0001d18ab0] BOOTMEM [ 0.000000] #22 [0001d18ac0 - 0001d18b28] BOOTMEM [ 0.000000] #23 [0001d18b40 - 0001d18ba8] BOOTMEM [ 0.000000] #24 [0001d18bc0 - 0001d18c28] BOOTMEM [ 0.000000] #25 [0001d18c40 - 0001d18ca8] BOOTMEM [ 0.000000] #26 [0001d18cc0 - 0001d18d28] BOOTMEM [ 0.000000] #27 [0001d18d40 - 0001d18da8] BOOTMEM [ 0.000000] #28 [0001d18dc0 - 0001d18e28] BOOTMEM [ 0.000000] #29 [0001d18e40 - 0001d18ea8] BOOTMEM [ 0.000000] #30 [0001d18ec0 - 0001d18f28] BOOTMEM [ 0.000000] #31 [0001d18f40 - 0001d18fa8] BOOTMEM [ 0.000000] #32 [0001d38240 - 0001d382a8] BOOTMEM [ 0.000000] #33 [0001d382c0 - 0001d38328] BOOTMEM [ 0.000000] #34 [0001d38340 - 0001d383a8] BOOTMEM [ 0.000000] #35 [0001d383c0 - 0001d38428] BOOTMEM [ 0.000000] #36 [0001d38440 - 0001d384a8] BOOTMEM [ 0.000000] #37 [0001d384c0 - 0001d38528] BOOTMEM [ 0.000000] #38 [0001d38540 - 0001d385a8] BOOTMEM [ 0.000000] #39 [0001d18fc0 - 0001d18fe0] BOOTMEM [ 0.000000] #40 [0001d385c0 - 0001d385e0] BOOTMEM [ 0.000000] #41 [0001d38600 - 0001d38620] BOOTMEM [ 0.000000] #42 [0001d38640 - 0001d386a9] BOOTMEM [ 0.000000] #43 [0001d386c0 - 0001d38729] BOOTMEM [ 0.000000] #44 [0001e00000 - 0001e1e000] BOOTMEM [ 0.000000] #45 [0001e40000 - 0001e5e000] BOOTMEM [ 0.000000] #46 [0001e80000 - 0001e9e000] BOOTMEM [ 0.000000] #47 [0001ec0000 - 0001ede000] BOOTMEM [ 0.000000] #48 [0001f00000 - 0001f1e000] BOOTMEM [ 0.000000] #49 [0001f40000 - 0001f5e000] BOOTMEM [ 0.000000] #50 [0001f80000 - 0001f9e000] BOOTMEM [ 0.000000] #51 [0001fc0000 - 0001fde000] BOOTMEM [ 0.000000] #52 [0001d38740 - 0001d38748] BOOTMEM [ 0.000000] #53 [0001d38780 - 0001d38788] BOOTMEM [ 0.000000] #54 [0001d387c0 - 0001d387e0] BOOTMEM [ 0.000000] #55 [0001d38800 - 0001d38840] BOOTMEM [ 0.000000] #56 [0001d38840 - 0001d38960] BOOTMEM [ 0.000000] #57 [0001d38980 - 0001d389c8] BOOTMEM [ 0.000000] #58 [0001d38a00 - 0001d38a48] BOOTMEM [ 0.000000] #59 [0001d3a000 - 0001d42000] BOOTMEM [ 0.000000] #60 [0001fde000 - 0005fde000] BOOTMEM [ 0.000000] #61 [0001d42000 - 0001d62000] BOOTMEM [ 0.000000] #62 [0001d62000 - 0001da2000] BOOTMEM [ 0.000000] #63 [000001a800 - 0000022800] BOOTMEM [ 0.000000] Memory: 3903712k/5111808k available (5716k kernel code, 1059440k absent, 148656k reserved, 5375k data, 912k init) [ 0.000000] SLUB: Genslabs=14, HWalign=64, Order=0-3, MinObjects=0, CPUs=8, Nodes=1 [ 0.000000] Hierarchical RCU implementation. [ 0.000000] RCU dyntick-idle grace-period acceleration is enabled. [ 0.000000] RCU-based detection of stalled CPUs is disabled. [ 0.000000] Verbose stalled-CPUs detection is disabled. [ 0.000000] NR_IRQS:4352 nr_irqs:744 [ 0.000000] Extended CMOS year: 2000 [ 0.000000] Console: colour VGA+ 80x25 [ 0.000000] console [tty0] enabled [ 0.000000] allocated 40632320 bytes of page_cgroup [ 0.000000] please try 'cgroup_disable=memory' option if you don't want memory cgroups [ 0.000000] hpet clockevent registered [ 0.000000] Fast TSC calibration using PIT [ 0.010000] Detected 2660.115 MHz processor. [ 0.000008] Calibrating delay loop (skipped), value calculated using timer frequency.. 5320.23 BogoMIPS (lpj=26601150) [ 0.000154] pid_max: default: 32768 minimum: 301 [ 0.000240] Security Framework initialized [ 0.000328] AppArmor: AppArmor initialized [ 0.000400] Yama: becoming mindful. [ 0.000789] Dentry cache hash table entries: 524288 (order: 10, 4194304 bytes) [ 0.002386] Inode-cache hash table entries: 262144 (order: 9, 2097152 bytes) [ 0.002847] Mount-cache hash table entries: 256 [ 0.003016] Initializing cgroup subsys ns [ 0.003091] Initializing cgroup subsys cpuacct [ 0.003162] Initializing cgroup subsys memory [ 0.003235] Initializing cgroup subsys devices [ 0.003306] Initializing cgroup subsys freezer [ 0.003379] Initializing cgroup subsys net_cls [ 0.003465] CPU: Physical Processor ID: 0 [ 0.003538] CPU: Processor Core ID: 0 [ 0.003611] mce: CPU supports 9 MCE banks [ 0.003689] CPU0: Thermal monitoring enabled (TM1) [ 0.003770] using mwait in idle threads. [ 0.003845] Performance Events: PEBS fmt1+, Westmere events, Intel PMU driver. [ 0.004121] ... version: 3 [ 0.004189] ... bit width: 48 [ 0.004257] ... generic registers: 4 [ 0.004327] ... value mask: 0000ffffffffffff [ 0.004399] ... max period: 000000007fffffff [ 0.004468] ... fixed-purpose events: 3 [ 0.004537] ... event mask: 000000070000000f [ 0.006251] ACPI: Core revision 20100428 [ 0.050917] ftrace: converting mcount calls to 0f 1f 44 00 00 [ 0.050998] ftrace: allocating 22687 entries in 89 pages [ 0.056933] DMAR: Host address width 36 [ 0.057012] DMAR: DRHD base: 0x000000fed90000 flags: 0x0 [ 0.057088] IOMMU 0: reg_base_addr fed90000 ver 1:0 cap c9008020e30272 ecap 1000 [ 0.057176] DMAR: DRHD base: 0x000000fed93000 flags: 0x1 [ 0.057252] IOMMU 1: reg_base_addr fed93000 ver 1:0 cap c9008020630272 ecap 1000 [ 0.057339] DMAR: RMRR base: 0x00000000000000 end: 0x00000000000fff [ 0.057544] Setting APIC routing to flat [ 0.058019] ..TIMER: vector=0x30 apic1=0 pin1=2 apic2=-1 pin2=-1 [ 0.157857] CPU0: Intel(R) Core(TM) i7 CPU M 620 @ 2.67GHz stepping 05 [ 0.273355] Booting Node 0, Processors #1 #2 #3 [ 0.811950] Brought up 4 CPUs [ 0.812094] Total of 4 processors activated (21280.13 BogoMIPS). [ 0.813748] devtmpfs: initialized [ 0.814583] regulator: core version 0.5 [ 0.814684] Time: 12:41:32 Date: 04/04/11 [ 0.814783] NET: Registered protocol family 16 [ 0.814931] Trying to unpack rootfs image as initramfs... [ 0.814938] ACPI FADT declares the system doesn't support PCIe ASPM, so disable it [ 0.814940] ACPI: bus type pci registered [ 0.815182] PCI: MMCONFIG for domain 0000 [bus 00-ff] at [mem 0xe0000000-0xefffffff] (base 0xe0000000) [ 0.815273] PCI: MMCONFIG at [mem 0xe0000000-0xefffffff] reserved in E820 [ 0.842346] PCI: Using configuration type 1 for base access [ 0.843009] bio: create slab at 0 [ 0.844812] ACPI: EC: Look up EC in DSDT [ 0.867249] ACPI: BIOS _OSI(Linux) query ignored [ 0.877444] ACPI: SSDT 00000000bf6bba18 0047D (v01 PmRef Cpu0Ist 00003000 INTL 20060912) [ 0.878085] ACPI: Dynamic OEM Table Load: [ 0.878268] ACPI: SSDT (null) 0047D (v01 PmRef Cpu0Ist 00003000 INTL 20060912) [ 0.878828] ACPI: SSDT 00000000bf6b9018 008AA (v01 PmRef Cpu0Cst 00003001 INTL 20060912) [ 0.879440] ACPI: Dynamic OEM Table Load: [ 0.879627] ACPI: SSDT (null) 008AA (v01 PmRef Cpu0Cst 00003001 INTL 20060912) [ 0.880333] ACPI: SSDT 00000000bf6baa98 00303 (v01 PmRef ApIst 00003000 INTL 20060912) [ 0.881009] ACPI: Dynamic OEM Table Load: [ 0.881192] ACPI: SSDT (null) 00303 (v01 PmRef ApIst 00003000 INTL 20060912) [ 0.881557] ACPI: SSDT 00000000bf6b8d98 00119 (v01 PmRef ApCst 00003000 INTL 20060912) [ 0.882201] ACPI: Dynamic OEM Table Load: [ 0.882386] ACPI: SSDT (null) 00119 (v01 PmRef ApCst 00003000 INTL 20060912) [ 0.985429] Freeing initrd memory: 10756k freed [ 1.309253] ACPI: Interpreter enabled [ 1.309335] ACPI: (supports S0 S3 S4 S5) [ 1.309652] ACPI: Using IOAPIC for interrupt routing [ 1.319738] ACPI: EC: GPE = 0x16, I/O: command/status = 0x66, data = 0x62 [ 1.319876] ACPI: Power Resource [APPR] (off) [ 1.320121] ACPI: Power Resource [COMP] (on) [ 1.320355] ACPI: Power Resource [LPP] (on) [ 1.320723] ACPI: No dock devices found. [ 1.320800] PCI: Using host bridge windows from ACPI; if necessary, use "pci=nocrs" and report a bug [ 1.322213] ACPI: PCI Root Bridge [PCI0] (domain 0000 [bus 00-fe]) [ 1.323636] pci_root PNP0A08:00: host bridge window [io 0x0000-0x0cf7] [ 1.323717] pci_root PNP0A08:00: host bridge window [io 0x0d00-0xffff] [ 1.323793] pci_root PNP0A08:00: host bridge window [mem 0x000a0000-0x000bffff] [ 1.323881] pci_root PNP0A08:00: host bridge window [mem 0xc0000000-0xdfffffff] [ 1.323968] pci_root PNP0A08:00: host bridge window [mem 0xf0000000-0xfedfffff] [ 1.324056] pci_root PNP0A08:00: host bridge window [mem 0xfee01000-0xffffffff] [ 1.324194] pci 0000:00:01.0: PME# supported from D0 D3hot D3cold [ 1.324196] pci 0000:00:01.0: PME# disabled [ 1.324263] pci 0000:00:16.0: reg 10: [mem 0xd7524000-0xd752400f 64bit] [ 1.324317] pci 0000:00:16.0: PME# supported from D0 D3hot D3cold [ 1.324321] pci 0000:00:16.0: PME# disabled [ 1.324376] pci 0000:00:19.0: reg 10: [mem 0xd7500000-0xd751ffff] [ 1.324382] pci 0000:00:19.0: reg 14: [mem 0xd752a000-0xd752afff] [ 1.324390] pci 0000:00:19.0: reg 18: [io 0x6020-0x603f] [ 1.324440] pci 0000:00:19.0: PME# supported from D0 D3hot D3cold [ 1.324445] pci 0000:00:19.0: PME# disabled [ 1.324491] pci 0000:00:1a.0: reg 10: [mem 0xd7529000-0xd75293ff] [ 1.324552] pci 0000:00:1a.0: PME# supported from D0 D3hot D3cold [ 1.324556] pci 0000:00:1a.0: PME# disabled [ 1.324598] pci 0000:00:1b.0: reg 10: [mem 0xd7520000-0xd7523fff 64bit] [ 1.324654] pci 0000:00:1b.0: PME# supported from D0 D3hot D3cold [ 1.324658] pci 0000:00:1b.0: PME# disabled [ 1.324748] pci 0000:00:1c.0: PME# supported from D0 D3hot D3cold [ 1.324752] pci 0000:00:1c.0: PME# disabled [ 1.324841] pci 0000:00:1c.1: PME# supported from D0 D3hot D3cold [ 1.324845] pci 0000:00:1c.1: PME# disabled [ 1.324940] pci 0000:00:1c.3: PME# supported from D0 D3hot D3cold [ 1.324944] pci 0000:00:1c.3: PME# disabled [ 1.325035] pci 0000:00:1c.7: PME# supported from D0 D3hot D3cold [ 1.325039] pci 0000:00:1c.7: PME# disabled [ 1.325088] pci 0000:00:1d.0: reg 10: [mem 0xd7528000-0xd75283ff] [ 1.325151] pci 0000:00:1d.0: PME# supported from D0 D3hot D3cold [ 1.325155] pci 0000:00:1d.0: PME# disabled [ 1.325346] pci 0000:00:1f.2: reg 10: [io 0x6048-0x604f] [ 1.325353] pci 0000:00:1f.2: reg 14: [io 0x6054-0x6057] [ 1.325359] pci 0000:00:1f.2: reg 18: [io 0x6040-0x6047] [ 1.325366] pci 0000:00:1f.2: reg 1c: [io 0x6050-0x6053] [ 1.325372] pci 0000:00:1f.2: reg 20: [io 0x6000-0x601f] [ 1.325379] pci 0000:00:1f.2: reg 24: [mem 0xd7527000-0xd75277ff] [ 1.325422] pci 0000:00:1f.2: PME# supported from D3hot [ 1.325426] pci 0000:00:1f.2: PME# disabled [ 1.325478] pci 0000:00:1f.6: reg 10: [mem 0xd7526000-0xd7526fff 64bit] [ 1.325578] pci 0000:01:00.0: reg 10: [mem 0xd2000000-0xd2ffffff] [ 1.325587] pci 0000:01:00.0: reg 14: [mem 0xc0000000-0xcfffffff 64bit pref] [ 1.325597] pci 0000:01:00.0: reg 1c: [mem 0xd0000000-0xd1ffffff 64bit pref] [ 1.325602] pci 0000:01:00.0: reg 24: [io 0x5000-0x507f] [ 1.325608] pci 0000:01:00.0: reg 30: [mem 0xfff80000-0xffffffff pref] [ 1.325668] pci 0000:01:00.1: reg 10: [mem 0xd3000000-0xd3003fff] [ 1.325731] pci 0000:00:01.0: PCI bridge to [bus 01-01] [ 1.325807] pci 0000:00:01.0: bridge window [io 0x5000-0x5fff] [ 1.325810] pci 0000:00:01.0: bridge window [mem 0xd2000000-0xd30fffff] [ 1.325812] pci 0000:00:01.0: bridge window [mem 0xc0000000-0xd1ffffff 64bit pref] [ 1.325865] pci 0000:00:1c.0: PCI bridge to [bus 02-02] [ 1.325945] pci 0000:00:1c.0: bridge window [io 0xf000-0x0000] (disabled) [ 1.325949] pci 0000:00:1c.0: bridge window [mem 0xd7400000-0xd74fffff] [ 1.325956] pci 0000:00:1c.0: bridge window [mem 0xfff00000-0x000fffff pref] (disabled) [ 1.326010] pci 0000:00:1c.1: PCI bridge to [bus 03-43] [ 1.326090] pci 0000:00:1c.1: bridge window [io 0x3000-0x4fff] [ 1.326094] pci 0000:00:1c.1: bridge window [mem 0xd3400000-0xd73fffff] [ 1.326101] pci 0000:00:1c.1: bridge window [mem 0xfff00000-0x000fffff pref] (disabled) [ 1.326212] pci 0000:44:00.0: reg 10: [mem 0xd3300000-0xd3301fff 64bit] [ 1.326320] pci 0000:44:00.0: PME# supported from D0 D3hot D3cold [ 1.326327] pci 0000:44:00.0: PME# disabled [ 1.326362] pci 0000:00:1c.3: PCI bridge to [bus 44-44] [ 1.326441] pci 0000:00:1c.3: bridge window [io 0xf000-0x0000] (disabled) [ 1.326446] pci 0000:00:1c.3: bridge window [mem 0xd3300000-0xd33fffff] [ 1.326452] pci 0000:00:1c.3: bridge window [mem 0xfff00000-0x000fffff pref] (disabled) [ 1.326558] pci 0000:45:00.0: reg 10: [mem 0xd3200000-0xd3201fff 64bit] [ 1.326657] pci 0000:45:00.0: PME# supported from D0 D3hot [ 1.326663] pci 0000:45:00.0: PME# disabled [ 1.326700] pci 0000:00:1c.7: PCI bridge to [bus 45-45] [ 1.326780] pci 0000:00:1c.7: bridge window [io 0xf000-0x0000] (disabled) [ 1.326784] pci 0000:00:1c.7: bridge window [mem 0xd3200000-0xd32fffff] [ 1.326791] pci 0000:00:1c.7: bridge window [mem 0xfff00000-0x000fffff pref] (disabled) [ 1.326851] pci 0000:46:06.0: proprietary Ricoh MMC controller disabled (via firewire function) [ 1.326944] pci 0000:46:06.0: MMC cards are now supported by standard SDHCI controller [ 1.327038] pci 0000:46:06.0: reg 10: [mem 0xd3101000-0xd31017ff] [ 1.327090] pci 0000:46:06.0: supports D1 D2 [ 1.327091] pci 0000:46:06.0: PME# supported from D0 D1 D2 D3hot D3cold [ 1.327095] pci 0000:46:06.0: PME# disabled [ 1.327126] pci 0000:46:06.1: reg 10: [mem 0xd3105000-0xd31050ff] [ 1.327178] pci 0000:46:06.1: supports D1 D2 [ 1.327179] pci 0000:46:06.1: PME# supported from D0 D1 D2 D3hot D3cold [ 1.327183] pci 0000:46:06.1: PME# disabled [ 1.327215] pci 0000:46:06.2: reg 10: [mem 0xd3103000-0xd31030ff] [ 1.327266] pci 0000:46:06.2: supports D1 D2 [ 1.327267] pci 0000:46:06.2: PME# supported from D0 D1 D2 D3hot D3cold [ 1.327271] pci 0000:46:06.2: PME# disabled [ 1.327302] pci 0000:46:06.3: reg 10: [mem 0xd3102000-0xd31020ff] [ 1.327353] pci 0000:46:06.3: supports D1 D2 [ 1.327354] pci 0000:46:06.3: PME# supported from D0 D1 D2 D3hot D3cold [ 1.327358] pci 0000:46:06.3: PME# disabled [ 1.327389] pci 0000:46:06.4: reg 10: [mem 0xd3100000-0xd3100fff] [ 1.327410] pci 0000:46:06.4: supports D1 D2 [ 1.327411] pci 0000:46:06.4: PME# supported from D0 D1 D2 D3hot D3cold [ 1.327415] pci 0000:46:06.4: PME# disabled [ 1.327458] pci 0000:00:1e.0: PCI bridge to [bus 46-47] (subtractive decode) [ 1.327539] pci 0000:00:1e.0: bridge window [io 0x2000-0x2fff] [ 1.327543] pci 0000:00:1e.0: bridge window [mem 0xd3100000-0xd31fffff] [ 1.327550] pci 0000:00:1e.0: bridge window [mem 0xfff00000-0x000fffff pref] (disabled) [ 1.327552] pci 0000:00:1e.0: bridge window [io 0x0000-0x0cf7] (subtractive decode) [ 1.327553] pci 0000:00:1e.0: bridge window [io 0x0d00-0xffff] (subtractive decode) [ 1.327555] pci 0000:00:1e.0: bridge window [mem 0x000a0000-0x000bffff] (subtractive decode) [ 1.327556] pci 0000:00:1e.0: bridge window [mem 0xc0000000-0xdfffffff] (subtractive decode) [ 1.327558] pci 0000:00:1e.0: bridge window [mem 0xf0000000-0xfedfffff] (subtractive decode) [ 1.327559] pci 0000:00:1e.0: bridge window [mem 0xfee01000-0xffffffff] (subtractive decode) [ 1.327598] pci_bus 0000:47: [bus 47-4a] partially hidden behind transparent bridge 0000:46 [bus 46-47] [ 1.327726] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0._PRT] [ 1.328003] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PEGP._PRT] [ 1.328106] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PCIB._PRT] [ 1.328207] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.RP01._PRT] [ 1.328277] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.RP02._PRT] [ 1.328404] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.RP04._PRT] [ 1.328481] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.RP08._PRT] [ 1.343081] ACPI: PCI Root Bridge [CPBG] (domain 0000 [bus ff]) [ 1.343564] ACPI: PCI Interrupt Link [LNKA] (IRQs 1 3 4 5 6 7 *10 12 14 15) [ 1.344428] ACPI: PCI Interrupt Link [LNKB] (IRQs 1 3 4 *5 6 7 11 12 14 15) [ 1.345295] ACPI: PCI Interrupt Link [LNKC] (IRQs 1 3 4 5 6 7 10 12 14 15) *11 [ 1.346233] ACPI: PCI Interrupt Link [LNKD] (IRQs 1 3 4 5 6 7 11 12 14 15) *10 [ 1.347161] ACPI: PCI Interrupt Link [LNKE] (IRQs 1 3 4 5 6 7 *10 12 14 15) [ 1.348020] ACPI: PCI Interrupt Link [LNKF] (IRQs 1 3 4 5 6 7 11 12 14 15) *10 [ 1.348953] ACPI: PCI Interrupt Link [LNKG] (IRQs 1 3 4 5 6 7 10 12 14 15) *0, disabled. [ 1.349942] ACPI: PCI Interrupt Link [LNKH] (IRQs 1 3 4 5 6 7 11 12 14 15) *0, disabled. [ 1.350873] HEST: Table is not found! [ 1.351011] vgaarb: device added: PCI:0000:01:00.0,decodes=io+mem,owns=io+mem,locks=none [ 1.351104] vgaarb: loaded [ 1.351269] SCSI subsystem initialized [ 1.351426] libata version 3.00 loaded. [ 1.351474] usbcore: registered new interface driver usbfs [ 1.351558] usbcore: registered new interface driver hub [ 1.351651] usbcore: registered new device driver usb [ 1.352083] ACPI: WMI: Mapper loaded [ 1.352159] PCI: Using ACPI for IRQ routing [ 1.353787] PCI: pci_cache_line_size set to 64 bytes [ 1.353889] reserve RAM buffer: 000000000009fc00 - 000000000009ffff [ 1.353891] reserve RAM buffer: 00000000bf5d4000 - 00000000bfffffff [ 1.353892] reserve RAM buffer: 00000000bf800000 - 00000000bfffffff [ 1.353963] NetLabel: Initializing [ 1.354039] NetLabel: domain hash size = 128 [ 1.354110] NetLabel: protocols = UNLABELED CIPSOv4 [ 1.354192] NetLabel: unlabeled traffic allowed by default [ 1.354305] hpet0: at MMIO 0xfed00000, IRQs 2, 8, 0, 0, 0, 0, 0, 0 [ 1.354886] hpet0: 8 comparators, 64-bit 14.318180 MHz counter [ 1.356973] Switching to clocksource tsc [ 1.362865] AppArmor: AppArmor Filesystem Enabled [ 1.362955] pnp: PnP ACPI init [ 1.363040] ACPI: bus type pnp registered [ 1.367523] alloc irq_desc for 23 on node 0 [ 1.367525] alloc kstat_irqs on node 0 [ 1.368432] pnp: PnP ACPI: found 15 devices [ 1.368508] ACPI: ACPI bus type pnp unregistered [ 1.368590] system 00:01: [mem 0xfed1c000-0xfed1ffff] has been reserved [ 1.368670] system 00:01: [mem 0xfed10000-0xfed13fff] has been reserved [ 1.368745] system 00:01: [mem 0xfed1b000-0xfed1bfff] has been reserved [ 1.368821] system 00:01: [mem 0xfed19000-0xfed19fff] has been reserved [ 1.368895] system 00:01: [mem 0xd7600000-0xd7600fff] has been reserved [ 1.368973] system 00:01: [mem 0xe0000000-0xefffffff] has been reserved [ 1.369047] system 00:01: [mem 0xfed20000-0xfed3ffff] has been reserved [ 1.369123] system 00:01: [mem 0xfed90000-0xfed93fff] has been reserved [ 1.369198] system 00:01: [mem 0xfed45000-0xfed8ffff] has been reserved [ 1.369275] system 00:01: [mem 0xfec00000-0xfec00fff] could not be reserved [ 1.369355] system 00:07: [io 0x0200-0x027f] has been reserved [ 1.369429] system 00:07: [io 0x1000-0x100f] has been reserved [ 1.369503] system 00:07: [io 0xffff] has been reserved [ 1.369577] system 00:07: [io 0xffff] has been reserved [ 1.369652] system 00:07: [io 0x0400-0x047f] has been reserved [ 1.369725] system 00:07: [io 0x0500-0x057f] has been reserved [ 1.369799] system 00:07: [io 0xef80-0xef9f] has been reserved [ 1.375232] pci 0000:01:00.0: no compatible bridge window for [mem 0xfff80000-0xffffffff pref] [ 1.375385] pci 0000:00:1e.0: BAR 15: assigned [mem 0xd8000000-0xdbffffff pref] [ 1.375477] pci 0000:00:1c.1: BAR 15: assigned [mem 0xd7700000-0xd78fffff 64bit pref] [ 1.375566] pci 0000:01:00.0: BAR 6: assigned [mem 0xd3080000-0xd30fffff pref] [ 1.375655] pci 0000:00:01.0: PCI bridge to [bus 01-01] [ 1.375729] pci 0000:00:01.0: bridge window [io 0x5000-0x5fff] [ 1.375804] pci 0000:00:01.0: bridge window [mem 0xd2000000-0xd30fffff] [ 1.375881] pci 0000:00:01.0: bridge window [mem 0xc0000000-0xd1ffffff 64bit pref] [ 1.375970] pci 0000:00:1c.0: PCI bridge to [bus 02-02] [ 1.376043] pci 0000:00:1c.0: bridge window [io disabled] [ 1.376121] pci 0000:00:1c.0: bridge window [mem 0xd7400000-0xd74fffff] [ 1.376198] pci 0000:00:1c.0: bridge window [mem pref disabled] [ 1.376277] pci 0000:00:1c.1: PCI bridge to [bus 03-43] [ 1.376355] pci 0000:00:1c.1: bridge window [io 0x3000-0x4fff] [ 1.376433] pci 0000:00:1c.1: bridge window [mem 0xd3400000-0xd73fffff] [ 1.376514] pci 0000:00:1c.1: bridge window [mem 0xd7700000-0xd78fffff 64bit pref] [ 1.376608] pci 0000:00:1c.3: PCI bridge to [bus 44-44] [ 1.376685] pci 0000:00:1c.3: bridge window [io disabled] [ 1.376763] pci 0000:00:1c.3: bridge window [mem 0xd3300000-0xd33fffff] [ 1.376839] pci 0000:00:1c.3: bridge window [mem pref disabled] [ 1.376921] pci 0000:00:1c.7: PCI bridge to [bus 45-45] [ 1.376999] pci 0000:00:1c.7: bridge window [io disabled] [ 1.377078] pci 0000:00:1c.7: bridge window [mem 0xd3200000-0xd32fffff] [ 1.377155] pci 0000:00:1c.7: bridge window [mem pref disabled] [ 1.377236] pci 0000:46:06.4: BAR 15: assigned [mem 0xd8000000-0xdbffffff pref] [ 1.377328] pci 0000:46:06.4: BAR 16: assigned [mem 0xdc000000-0xdfffffff] [ 1.377404] pci 0000:46:06.4: BAR 13: assigned [io 0x2000-0x20ff] [ 1.377479] pci 0000:46:06.4: BAR 14: assigned [io 0x2400-0x24ff] [ 1.377554] pci 0000:46:06.4: CardBus bridge to [bus 47-4a] [ 1.377629] pci 0000:46:06.4: bridge window [io 0x2000-0x20ff] [ 1.377706] pci 0000:46:06.4: bridge window [io 0x2400-0x24ff] [ 1.377783] pci 0000:46:06.4: bridge window [mem 0xd8000000-0xdbffffff pref] [ 1.377874] pci 0000:46:06.4: bridge window [mem 0xdc000000-0xdfffffff] [ 1.377951] pci 0000:00:1e.0: PCI bridge to [bus 46-47] [ 1.378028] pci 0000:00:1e.0: bridge window [io 0x2000-0x2fff] [ 1.378106] pci 0000:00:1e.0: bridge window [mem 0xd3100000-0xd31fffff] [ 1.378184] pci 0000:00:1e.0: bridge window [mem 0xd8000000-0xdbffffff pref] [ 1.378285] alloc irq_desc for 16 on node -1 [ 1.378286] alloc kstat_irqs on node -1 [ 1.378290] pci 0000:00:01.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16 [ 1.378369] pci 0000:00:01.0: setting latency timer to 64 [ 1.378377] alloc irq_desc for 17 on node -1 [ 1.378378] alloc kstat_irqs on node -1 [ 1.378381] pci 0000:00:1c.0: PCI INT A -> GSI 17 (level, low) -> IRQ 17 [ 1.378463] pci 0000:00:1c.0: setting latency timer to 64 [ 1.378471] pci 0000:00:1c.1: PCI INT B -> GSI 16 (level, low) -> IRQ 16 [ 1.378553] pci 0000:00:1c.1: setting latency timer to 64 [ 1.378562] alloc irq_desc for 19 on node -1 [ 1.378563] alloc kstat_irqs on node -1 [ 1.378565] pci 0000:00:1c.3: PCI INT D -> GSI 19 (level, low) -> IRQ 19 [ 1.378648] pci 0000:00:1c.3: setting latency timer to 64 [ 1.378656] pci 0000:00:1c.7: PCI INT D -> GSI 19 (level, low) -> IRQ 19 [ 1.378737] pci 0000:00:1c.7: setting latency timer to 64 [ 1.378744] pci 0000:00:1e.0: setting latency timer to 64 [ 1.378754] alloc irq_desc for 22 on node -1 [ 1.378755] alloc kstat_irqs on node -1 [ 1.378757] pci 0000:46:06.4: PCI INT B -> GSI 22 (level, low) -> IRQ 22 [ 1.378838] pci 0000:46:06.4: setting latency timer to 64 [ 1.378842] pci_bus 0000:00: resource 4 [io 0x0000-0x0cf7] [ 1.378843] pci_bus 0000:00: resource 5 [io 0x0d00-0xffff] [ 1.378845] pci_bus 0000:00: resource 6 [mem 0x000a0000-0x000bffff] [ 1.378846] pci_bus 0000:00: resource 7 [mem 0xc0000000-0xdfffffff] [ 1.378847] pci_bus 0000:00: resource 8 [mem 0xf0000000-0xfedfffff] [ 1.378849] pci_bus 0000:00: resource 9 [mem 0xfee01000-0xffffffff] [ 1.378850] pci_bus 0000:01: resource 0 [io 0x5000-0x5fff] [ 1.378852] pci_bus 0000:01: resource 1 [mem 0xd2000000-0xd30fffff] [ 1.378853] pci_bus 0000:01: resource 2 [mem 0xc0000000-0xd1ffffff 64bit pref] [ 1.378855] pci_bus 0000:02: resource 1 [mem 0xd7400000-0xd74fffff] [ 1.378856] pci_bus 0000:03: resource 0 [io 0x3000-0x4fff] [ 1.378858] pci_bus 0000:03: resource 1 [mem 0xd3400000-0xd73fffff] [ 1.378859] pci_bus 0000:03: resource 2 [mem 0xd7700000-0xd78fffff 64bit pref] [ 1.378861] pci_bus 0000:44: resource 1 [mem 0xd3300000-0xd33fffff] [ 1.378862] pci_bus 0000:45: resource 1 [mem 0xd3200000-0xd32fffff] [ 1.378863] pci_bus 0000:46: resource 0 [io 0x2000-0x2fff] [ 1.378865] pci_bus 0000:46: resource 1 [mem 0xd3100000-0xd31fffff] [ 1.378866] pci_bus 0000:46: resource 2 [mem 0xd8000000-0xdbffffff pref] [ 1.378868] pci_bus 0000:46: resource 4 [io 0x0000-0x0cf7] [ 1.378869] pci_bus 0000:46: resource 5 [io 0x0d00-0xffff] [ 1.378870] pci_bus 0000:46: resource 6 [mem 0x000a0000-0x000bffff] [ 1.378871] pci_bus 0000:46: resource 7 [mem 0xc0000000-0xdfffffff] [ 1.378873] pci_bus 0000:46: resource 8 [mem 0xf0000000-0xfedfffff] [ 1.378874] pci_bus 0000:46: resource 9 [mem 0xfee01000-0xffffffff] [ 1.378876] pci_bus 0000:47: resource 0 [io 0x2000-0x20ff] [ 1.378877] pci_bus 0000:47: resource 1 [io 0x2400-0x24ff] [ 1.378878] pci_bus 0000:47: resource 2 [mem 0xd8000000-0xdbffffff pref] [ 1.378880] pci_bus 0000:47: resource 3 [mem 0xdc000000-0xdfffffff] [ 1.378906] NET: Registered protocol family 2 [ 1.379091] IP route cache hash table entries: 131072 (order: 8, 1048576 bytes) [ 1.380001] TCP established hash table entries: 524288 (order: 11, 8388608 bytes) [ 1.381727] TCP bind hash table entries: 65536 (order: 8, 1048576 bytes) [ 1.382017] TCP: Hash tables configured (established 524288 bind 65536) [ 1.382096] TCP reno registered [ 1.382174] UDP hash table entries: 2048 (order: 4, 65536 bytes) [ 1.382271] UDP-Lite hash table entries: 2048 (order: 4, 65536 bytes) [ 1.382445] NET: Registered protocol family 1 [ 1.382637] pci 0000:01:00.0: Boot video device [ 1.382703] PCI: CLS 64 bytes, default 64 [ 1.382705] PCI-DMA: Using software bounce buffering for IO (SWIOTLB) [ 1.382785] Placing 64MB software IO TLB between ffff880001fde000 - ffff880005fde000 [ 1.382874] software IO TLB at phys 0x1fde000 - 0x5fde000 [ 1.383178] Scanning for low memory corruption every 60 seconds [ 1.383369] audit: initializing netlink socket (disabled) [ 1.383453] type=2000 audit(1301920892.230:1): initialized [ 1.394175] HugeTLB registered 2 MB page size, pre-allocated 0 pages [ 1.395210] VFS: Disk quotas dquot_6.5.2 [ 1.395321] Dquot-cache hash table entries: 512 (order 0, 4096 bytes) [ 1.395776] fuse init (API version 7.14) [ 1.395908] msgmni has been set to 7645 [ 1.397547] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 253) [ 1.397639] io scheduler noop registered [ 1.397712] io scheduler deadline registered [ 1.397807] io scheduler cfq registered (default) [ 1.397963] pcieport 0000:00:01.0: setting latency timer to 64 [ 1.397979] alloc irq_desc for 40 on node -1 [ 1.397980] alloc kstat_irqs on node -1 [ 1.397988] pcieport 0000:00:01.0: irq 40 for MSI/MSI-X [ 1.398030] pcieport 0000:00:1c.0: setting latency timer to 64 [ 1.398070] alloc irq_desc for 41 on node -1 [ 1.398071] alloc kstat_irqs on node -1 [ 1.398079] pcieport 0000:00:1c.0: irq 41 for MSI/MSI-X [ 1.398146] pcieport 0000:00:1c.1: setting latency timer to 64 [ 1.398186] alloc irq_desc for 42 on node -1 [ 1.398187] alloc kstat_irqs on node -1 [ 1.398195] pcieport 0000:00:1c.1: irq 42 for MSI/MSI-X [ 1.398276] pcieport 0000:00:1c.3: setting latency timer to 64 [ 1.398316] alloc irq_desc for 43 on node -1 [ 1.398317] alloc kstat_irqs on node -1 [ 1.398324] pcieport 0000:00:1c.3: irq 43 for MSI/MSI-X [ 1.398393] pcieport 0000:00:1c.7: setting latency timer to 64 [ 1.398433] alloc irq_desc for 44 on node -1 [ 1.398434] alloc kstat_irqs on node -1 [ 1.398442] pcieport 0000:00:1c.7: irq 44 for MSI/MSI-X [ 1.398515] pci_hotplug: PCI Hot Plug PCI Core version: 0.5 [ 1.398616] Firmware did not grant requested _OSC control [ 1.398632] Firmware did not grant requested _OSC control [ 1.398636] pciehp: PCI Express Hot Plug Controller Driver version: 0.4 [ 1.398760] intel_idle: MWAIT substates: 0x1120 [ 1.398761] intel_idle: v0.4 model 0x25 [ 1.398762] intel_idle: lapic_timer_reliable_states 0xffffffff [ 1.399104] ACPI: AC Adapter [AC] (on-line) [ 1.399238] input: Sleep Button as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0E:00/input/input0 [ 1.399332] ACPI: Sleep Button [SLPB] [ 1.399427] input: Lid Switch as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0D:00/input/input1 [ 1.399574] ACPI: Lid Switch [LID] [ 1.399674] input: Power Button as /devices/LNXSYSTM:00/LNXPWRBN:00/input/input2 [ 1.399764] ACPI: Power Button [PWRF] [ 1.400290] ACPI: acpi_idle yielding to intel_idle [ 1.418509] thermal LNXTHERM:01: registered as thermal_zone0 [ 1.418591] ACPI: Thermal Zone [EXTZ] (26 C) [ 1.422265] thermal LNXTHERM:02: registered as thermal_zone1 [ 1.422347] ACPI: Thermal Zone [EX2Z] (0 C) [ 1.424097] thermal LNXTHERM:03: registered as thermal_zone2 [ 1.424177] ACPI: Thermal Zone [PWMZ] (11 C) [ 1.427752] thermal LNXTHERM:04: registered as thermal_zone3 [ 1.427834] ACPI: Thermal Zone [LOCZ] (25 C) [ 1.428725] thermal LNXTHERM:05: registered as thermal_zone4 [ 1.428808] ACPI: Thermal Zone [GFXZ] (0 C) [ 1.439559] thermal LNXTHERM:06: registered as thermal_zone5 [ 1.439641] ACPI: Thermal Zone [BATZ] (27 C) [ 1.449205] thermal LNXTHERM:07: registered as thermal_zone6 [ 1.449288] ACPI: Thermal Zone [EGXZ] (28 C) [ 1.449709] thermal LNXTHERM:08: registered as thermal_zone7 [ 1.449790] ACPI: Thermal Zone [CPUZ] (34 C) [ 1.450185] thermal LNXTHERM:09: registered as thermal_zone8 [ 1.450265] ACPI: Thermal Zone [MCHZ] (33 C) [ 1.450644] thermal LNXTHERM:0a: registered as thermal_zone9 [ 1.450725] ACPI: Thermal Zone [PCHZ] (59 C) [ 1.450862] ERST: Table is not found! [ 1.451298] Linux agpgart interface v0.103 [ 1.451386] Serial: 8250/16550 driver, 4 ports, IRQ sharing enabled [ 1.451598] serial8250: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A [ 1.451985] 00:09: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A [ 1.452750] brd: module loaded [ 1.453120] loop: module loaded [ 1.453455] Fixed MDIO Bus: probed [ 1.453549] PPP generic driver version 2.4.2 [ 1.453644] tun: Universal TUN/TAP device driver, 1.6 [ 1.453722] tun: (C) 1999-2004 Max Krasnyansky [ 1.453855] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver [ 1.453950] ehci_hcd 0000:00:1a.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16 [ 1.454044] ehci_hcd 0000:00:1a.0: setting latency timer to 64 [ 1.454047] ehci_hcd 0000:00:1a.0: EHCI Host Controller [ 1.454143] ehci_hcd 0000:00:1a.0: new USB bus registered, assigned bus number 1 [ 1.454260] ehci_hcd 0000:00:1a.0: debug port 2 [ 1.458241] ehci_hcd 0000:00:1a.0: cache line size of 64 is not supported [ 1.458255] ehci_hcd 0000:00:1a.0: irq 16, io mem 0xd7529000 [ 1.476770] ehci_hcd 0000:00:1a.0: USB 2.0 started, EHCI 1.00 [ 1.476933] hub 1-0:1.0: USB hub found [ 1.477011] hub 1-0:1.0: 3 ports detected [ 1.477133] alloc irq_desc for 20 on node -1 [ 1.477134] alloc kstat_irqs on node -1 [ 1.477138] ehci_hcd 0000:00:1d.0: PCI INT A -> GSI 20 (level, low) -> IRQ 20 [ 1.477226] ehci_hcd 0000:00:1d.0: setting latency timer to 64 [ 1.477229] ehci_hcd 0000:00:1d.0: EHCI Host Controller [ 1.477325] ehci_hcd 0000:00:1d.0: new USB bus registered, assigned bus number 2 [ 1.477436] ehci_hcd 0000:00:1d.0: debug port 2 [ 1.481432] ehci_hcd 0000:00:1d.0: cache line size of 64 is not supported [ 1.481443] ehci_hcd 0000:00:1d.0: irq 20, io mem 0xd7528000 [ 1.496730] ehci_hcd 0000:00:1d.0: USB 2.0 started, EHCI 1.00 [ 1.496893] hub 2-0:1.0: USB hub found [ 1.496970] hub 2-0:1.0: 3 ports detected [ 1.497086] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver [ 1.497171] uhci_hcd: USB Universal Host Controller Interface driver [ 1.497337] PNP: PS/2 Controller [PNP0303:PS2K,PNP0f13:PS2M] at 0x60,0x64 irq 1,12 [ 1.499113] i8042.c: Detected active multiplexing controller, rev 1.1. [ 1.499864] serio: i8042 KBD port at 0x60,0x64 irq 1 [ 1.499974] serio: i8042 AUX0 port at 0x60,0x64 irq 12 [ 1.500051] serio: i8042 AUX1 port at 0x60,0x64 irq 12 [ 1.500125] serio: i8042 AUX2 port at 0x60,0x64 irq 12 [ 1.501847] serio: i8042 AUX3 port at 0x60,0x64 irq 12 [ 1.501961] mice: PS/2 mouse device common for all mice [ 1.502115] rtc_cmos 00:08: RTC can wake from S4 [ 1.502240] rtc_cmos 00:08: rtc core: registered rtc_cmos as rtc0 [ 1.502351] rtc0: alarms up to one month, y3k, 242 bytes nvram, hpet irqs [ 1.502487] device-mapper: uevent: version 1.0.3 [ 1.502620] device-mapper: ioctl: 4.17.0-ioctl (2010-03-05) initialised: dm-devel@redhat.com [ 1.502772] device-mapper: multipath: version 1.1.1 loaded [ 1.502851] device-mapper: multipath round-robin: version 1.0.0 loaded [ 1.503133] cpuidle: using governor ladder [ 1.503306] cpuidle: using governor menu [ 1.503577] TCP cubic registered [ 1.503728] NET: Registered protocol family 10 [ 1.504034] lo: Disabled Privacy Extensions [ 1.504240] NET: Registered protocol family 17 [ 1.506205] PM: Resume from disk failed. [ 1.506215] registered taskstats version 1 [ 1.506697] Magic number: 7:690:682 [ 1.506889] rtc_cmos 00:08: setting system clock to 2011-04-04 12:41:33 UTC (1301920893) [ 1.506983] BIOS EDD facility v0.16 2004-Jun-25, 0 devices found [ 1.507059] EDD information not available. [ 1.507246] Freeing unused kernel memory: 912k freed [ 1.507465] Write protecting the kernel read-only data: 10240k [ 1.507747] Freeing unused kernel memory: 408k freed [ 1.508029] Freeing unused kernel memory: 1640k freed [ 1.523150] input: AT Translated Set 2 keyboard as /devices/platform/i8042/serio0/input/input3 [ 1.523354] udev[99]: starting version 163 [ 1.549875] ACPI: Battery Slot [BAT0] (battery present) [ 1.572805] ACPI: Battery Slot [BAT1] (battery present) [ 1.597108] ahci 0000:00:1f.2: version 3.0 [ 1.597130] alloc irq_desc for 21 on node -1 [ 1.597133] alloc kstat_irqs on node -1 [ 1.597143] ahci 0000:00:1f.2: PCI INT A -> GSI 21 (level, low) -> IRQ 21 [ 1.597295] alloc irq_desc for 45 on node -1 [ 1.597297] alloc kstat_irqs on node -1 [ 1.597309] ahci 0000:00:1f.2: irq 45 for MSI/MSI-X [ 1.597351] ahci: SSS flag set, parallel bus scan disabled [ 1.613046] e1000e: Intel(R) PRO/1000 Network Driver - 1.0.2-k4 [ 1.613135] e1000e: Copyright (c) 1999 - 2009 Intel Corporation. [ 1.613652] sdhci: Secure Digital Host Controller Interface driver [ 1.613738] sdhci: Copyright(c) Pierre Ossman [ 1.615656] sdhci-pci 0000:46:06.1: SDHCI controller found [1180:0822] (rev 25) [ 1.615770] sdhci-pci 0000:46:06.1: PCI INT B -> GSI 22 (level, low) -> IRQ 22 [ 1.616903] sdhci-pci 0000:46:06.1: Will use DMA mode even though HW doesn't fully claim to support it. [ 1.617002] sdhci-pci 0000:46:06.1: setting latency timer to 64 [ 1.617751] ahci 0000:00:1f.2: AHCI 0001.0300 32 slots 6 ports 3 Gbps 0x37 impl SATA mode [ 1.617854] ahci 0000:00:1f.2: flags: 64bit ncq sntf stag pm led clo pio slum part ems sxs apst [ 1.617954] ahci 0000:00:1f.2: setting latency timer to 64 [ 1.618128] Registered led device: mmc0:: [ 1.619161] mmc0: SDHCI controller on PCI [0000:46:06.1] using DMA [ 1.619319] firewire_ohci 0000:46:06.0: PCI INT A -> GSI 20 (level, low) -> IRQ 20 [ 1.619414] firewire_ohci 0000:46:06.0: setting latency timer to 64 [ 1.698340] scsi0 : ahci [ 1.698612] scsi1 : ahci [ 1.698861] scsi2 : ahci [ 1.699110] scsi3 : ahci [ 1.699352] scsi4 : ahci [ 1.699597] scsi5 : ahci [ 1.700001] ata1: SATA max UDMA/133 abar m2048@0xd7527000 port 0xd7527100 irq 45 [ 1.700095] ata2: SATA max UDMA/133 abar m2048@0xd7527000 port 0xd7527180 irq 45 [ 1.700185] ata3: SATA max UDMA/133 abar m2048@0xd7527000 port 0xd7527200 irq 45 [ 1.700272] ata4: DUMMY [ 1.700344] ata5: SATA max UDMA/133 abar m2048@0xd7527000 port 0xd7527300 irq 45 [ 1.700433] ata6: SATA max UDMA/133 abar m2048@0xd7527000 port 0xd7527380 irq 45 [ 1.700568] e1000e 0000:00:19.0: PCI INT A -> GSI 20 (level, low) -> IRQ 20 [ 1.700666] e1000e 0000:00:19.0: setting latency timer to 64 [ 1.700771] alloc irq_desc for 46 on node -1 [ 1.700772] alloc kstat_irqs on node -1 [ 1.700785] e1000e 0000:00:19.0: irq 46 for MSI/MSI-X [ 1.796057] usb 1-1: new high speed USB device using ehci_hcd and address 2 [ 1.837171] e1000e 0000:00:19.0: eth0: (PCI Express:2.5GB/s:Width x1) 88:ae:1d:b6:09:5a [ 1.837261] e1000e 0000:00:19.0: eth0: Intel(R) PRO/1000 Network Connection [ 1.837383] e1000e 0000:00:19.0: eth0: MAC: 9, PHY: 10, PBA No: 2052ff-0ff [ 1.855937] firewire_ohci: Added fw-ohci device 0000:46:06.0, OHCI v1.10, 4 IR + 4 IT contexts, quirks 0x0 [ 1.946390] hub 1-1:1.0: USB hub found [ 1.946567] hub 1-1:1.0: 6 ports detected [ 2.045459] ata1: SATA link up 3.0 Gbps (SStatus 123 SControl 300) [ 2.046523] ata1.00: unexpected _GTF length (8) [ 2.046833] ata1.00: ATA-8: ST9320423AS, 0006HPM1, max UDMA/100 [ 2.046965] ata1.00: 625142448 sectors, multi 16: LBA48 NCQ (depth 31/32), AA [ 2.048296] ata1.00: unexpected _GTF length (8) [ 2.048597] ata1.00: configured for UDMA/100 [ 2.065594] scsi 0:0:0:0: Direct-Access ATA ST9320423AS 0006 PQ: 0 ANSI: 5 [ 2.065810] sd 0:0:0:0: Attached scsi generic sg0 type 0 [ 2.065824] sd 0:0:0:0: [sda] 625142448 512-byte logical blocks: (320 GB/298 GiB) [ 2.065879] sd 0:0:0:0: [sda] Write Protect is off [ 2.065881] sd 0:0:0:0: [sda] Mode Sense: 00 3a 00 00 [ 2.065904] sd 0:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA [ 2.065972] usb 2-1: new high speed USB device using ehci_hcd and address 2 [ 2.066090] sda: sda1 sda2 sda3 sda4 < sda5 sda6 sda7 > [ 2.152936] sd 0:0:0:0: [sda] Attached SCSI disk [ 2.225693] hub 2-1:1.0: USB hub found [ 2.225878] hub 2-1:1.0: 8 ports detected [ 2.304981] usb 1-1.1: new full speed USB device using ehci_hcd and address 3 [ 2.355382] firewire_core: created device fw0: GUID 5566778811223344, S400 [ 2.496371] usb 1-1.3: new full speed USB device using ehci_hcd and address 4 [ 2.684016] usb 1-1.4: new high speed USB device using ehci_hcd and address 5 [ 2.795507] hub 1-1.4:1.0: USB hub found [ 2.795763] hub 1-1.4:1.0: 4 ports detected [ 2.813544] ata2: SATA link up 1.5 Gbps (SStatus 113 SControl 300) [ 2.833245] ata2.00: unexpected _GTF length (8) [ 2.833323] ata2.00: ATAPI: hp CDDVDW TS-L633N, 0300, max UDMA/100 [ 2.854549] ata2.00: unexpected _GTF length (8) [ 2.854645] ata2.00: configured for UDMA/100 [ 2.878613] scsi 1:0:0:0: CD-ROM hp CDDVDW TS-L633N 0300 PQ: 0 ANSI: 5 [ 2.892873] sr0: scsi3-mmc drive: 24x/24x writer dvd-ram cd/rw xa/form2 cdda tray [ 2.892976] Uniform CD-ROM driver Revision: 3.20 [ 2.893133] sr 1:0:0:0: Attached scsi CD-ROM sr0 [ 2.893179] sr 1:0:0:0: Attached scsi generic sg1 type 5 [ 3.083009] usb 1-1.4.2: new high speed USB device using ehci_hcd and address 6 [ 3.193410] hub 1-1.4.2:1.0: USB hub found [ 3.193600] hub 1-1.4.2:1.0: 4 ports detected [ 3.242504] ata3: SATA link down (SStatus 0 SControl 300) [ 3.472038] usb 1-1.4.2.1: new low speed USB device using ehci_hcd and address 7 [ 3.611593] ata5: SATA link down (SStatus 0 SControl 300) [ 3.683522] usb 1-1.4.2.2: new low speed USB device using ehci_hcd and address 8 [ 3.804637] usbcore: registered new interface driver hiddev [ 3.807424] input: Logitech N48 as /devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.4/1-1.4.2/1-1.4.2.1/1-1.4.2.1:1.0/input/input4 [ 3.807590] generic-usb 0003:046D:C001.0001: input,hidraw0: USB HID v1.00 Mouse [Logitech N48] on usb-0000:00:1a.0-1.4.2.1/input0 [ 3.812388] input: CHICONY HP Basic USB Keyboard as /devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.4/1-1.4.2/1-1.4.2.2/1-1.4.2.2:1.0/input/input5 [ 3.812545] generic-usb 0003:03F0:0024.0002: input,hidraw1: USB HID v1.10 Keyboard [CHICONY HP Basic USB Keyboard] on usb-0000:00:1a.0-1.4.2.2/input0 [ 3.812651] usbcore: registered new interface driver usbhid [ 3.812730] usbhid: USB HID core driver [ 3.981928] ata6: SATA link down (SStatus 0 SControl 300) [ 4.673554] EXT4-fs (sda5): INFO: recovery required on readonly filesystem [ 4.673750] EXT4-fs (sda5): write access will be enabled during recovery [ 7.750872] EXT4-fs (sda5): recovery complete [ 7.754726] EXT4-fs (sda5): mounted filesystem with ordered data mode. Opts: (null) [ 20.535624] udev[447]: starting version 163 [ 20.580885] lp: driver loaded but no devices found [ 20.586987] xhci_hcd 0000:45:00.0: PCI INT A -> GSI 19 (level, low) -> IRQ 19 [ 20.587032] xhci_hcd 0000:45:00.0: setting latency timer to 64 [ 20.587038] xhci_hcd 0000:45:00.0: xHCI Host Controller [ 20.587100] xhci_hcd 0000:45:00.0: new USB bus registered, assigned bus number 3 [ 20.587312] xhci_hcd 0000:45:00.0: irq 19, io mem 0xd3200000 [ 20.590607] usb usb3: No SuperSpeed endpoint companion for config 1 interface 0 altsetting 0 ep 129: using minimum values [ 20.590742] xHCI xhci_add_endpoint called for root hub [ 20.590744] xHCI xhci_check_bandwidth called for root hub [ 20.590775] hub 3-0:1.0: USB hub found [ 20.590780] hub 3-0:1.0: 4 ports detected [ 20.603082] intel ips 0000:00:1f.6: Warning: CPU TDP doesn't match expected value (found 25, expected 35) [ 20.603105] alloc irq_desc for 18 on node -1 [ 20.603107] alloc kstat_irqs on node -1 [ 20.603116] intel ips 0000:00:1f.6: PCI INT C -> GSI 18 (level, low) -> IRQ 18 [ 20.603244] intel ips 0000:00:1f.6: failed to get i915 symbols, graphics turbo disabled [ 20.606122] Adding 7999484k swap on /dev/sda6. Priority:-1 extents:1 across:7999484k [ 20.647383] nvidia: module license 'NVIDIA' taints kernel. [ 20.647386] Disabling lock debugging due to kernel taint [ 20.648469] lis3lv02d: laptop model unknown, using default axes configuration [ 20.649316] lis3lv02d: 8 bits sensor found [ 20.665840] intel ips 0000:00:1f.6: IPS driver initialized, MCP temp limit 65535 [ 20.715269] yenta_cardbus 0000:46:06.4: CardBus bridge found [103c:1521] [ 20.717479] tpm_tis 00:04: 1.2 TPM (device-id 0xB, rev-id 16) [ 20.735826] cfg80211: Calling CRDA to update world regulatory domain [ 20.740067] input: ST LIS3LV02DL Accelerometer as /devices/platform/lis3lv02d/input/input6 [ 20.740198] Registered led device: hp::hddprotect [ 20.740224] lis3lv02d driver loaded. [ 20.769117] cfg80211: World regulatory domain updated: [ 20.769121] (start_freq - end_freq @ bandwidth), (max_antenna_gain, max_eirp) [ 20.769125] (2402000 KHz - 2472000 KHz @ 40000 KHz), (300 mBi, 2000 mBm) [ 20.769128] (2457000 KHz - 2482000 KHz @ 20000 KHz), (300 mBi, 2000 mBm) [ 20.769131] (2474000 KHz - 2494000 KHz @ 20000 KHz), (300 mBi, 2000 mBm) [ 20.769134] (5170000 KHz - 5250000 KHz @ 40000 KHz), (300 mBi, 2000 mBm) [ 20.769137] (5735000 KHz - 5835000 KHz @ 40000 KHz), (300 mBi, 2000 mBm) [ 20.778659] ppdev: user-space parallel port driver [ 20.796995] acpi device:03: registered as cooling_device4 [ 20.797543] input: HP WMI hotkeys as /devices/virtual/input/input7 [ 20.803532] ACPI: Cant attach device [ 20.803738] input: Video Bus as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:02/LNXVIDEO:00/input/input8 [ 20.803808] ACPI: Video Device [DGFX] (multi-head: yes rom: no post: no) [ 20.860456] yenta_cardbus 0000:46:06.4: ISA IRQ mask 0x0cb8, PCI irq 22 [ 20.860460] yenta_cardbus 0000:46:06.4: Socket status: 30000810 [ 20.860464] pci_bus 0000:46: Raising subordinate bus# of parent bus (#46) from #47 to #4a [ 20.860472] yenta_cardbus 0000:46:06.4: pcmcia: parent PCI bridge window: [io 0x2000-0x2fff] [ 20.860476] yenta_cardbus 0000:46:06.4: pcmcia: parent PCI bridge window: [mem 0xd3100000-0xd31fffff] [ 20.860478] pcmcia_socket pcmcia_socket0: cs: memory probe 0xd3100000-0xd31fffff: excluding 0xd3100000-0xd310ffff [ 20.860488] yenta_cardbus 0000:46:06.4: pcmcia: parent PCI bridge window: [mem 0xd8000000-0xdbffffff pref] [ 20.860489] pcmcia_socket pcmcia_socket0: cs: memory probe 0xd8000000-0xdbffffff: excluding 0xd8000000-0xdbffffff [ 20.860759] r852 0000:46:06.3: PCI INT B -> GSI 22 (level, low) -> IRQ 22 [ 20.860765] r852 0000:46:06.3: setting latency timer to 64 [ 20.866389] iwlagn: Intel(R) Wireless WiFi Link AGN driver for Linux, in-tree: [ 20.866391] iwlagn: Copyright(c) 2003-2010 Intel Corporation [ 20.866442] iwlagn 0000:44:00.0: PCI INT A -> GSI 19 (level, low) -> IRQ 19 [ 20.866451] iwlagn 0000:44:00.0: setting latency timer to 64 [ 20.866501] iwlagn 0000:44:00.0: Detected Intel(R) Centrino(R) Ultimate-N 6300 AGN, REV=0x74 [ 20.871071] r852: driver loaded succesfully [ 20.875522] HDA Intel 0000:00:1b.0: power state changed by ACPI to D0 [ 20.875567] HDA Intel 0000:00:1b.0: power state changed by ACPI to D0 [ 20.875578] HDA Intel 0000:00:1b.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16 [ 20.875676] alloc irq_desc for 47 on node -1 [ 20.875678] alloc kstat_irqs on node -1 [ 20.875701] HDA Intel 0000:00:1b.0: irq 47 for MSI/MSI-X [ 20.875755] HDA Intel 0000:00:1b.0: setting latency timer to 64 [ 20.877078] iwlagn 0000:44:00.0: Tunable channels: 13 802.11bg, 24 802.11a channels [ 20.877155] alloc irq_desc for 48 on node -1 [ 20.877156] alloc kstat_irqs on node -1 [ 20.877196] iwlagn 0000:44:00.0: irq 48 for MSI/MSI-X [ 20.880209] type=1400 audit(1301935312.914:2): apparmor="STATUS" operation="profile_load" name="/sbin/dhclient3" pid=859 comm="apparmor_parser" [ 20.880216] type=1400 audit(1301935312.914:3): apparmor="STATUS" operation="profile_replace" name="/sbin/dhclient3" pid=767 comm="apparmor_parser" [ 20.880630] type=1400 audit(1301935312.914:4): apparmor="STATUS" operation="profile_load" name="/usr/lib/NetworkManager/nm-dhcp-client.action" pid=859 comm="apparmor_parser" [ 20.880638] type=1400 audit(1301935312.914:5): apparmor="STATUS" operation="profile_replace" name="/usr/lib/NetworkManager/nm-dhcp-client.action" pid=767 comm="apparmor_parser" [ 20.880864] type=1400 audit(1301935312.914:6): apparmor="STATUS" operation="profile_load" name="/usr/lib/connman/scripts/dhclient-script" pid=859 comm="apparmor_parser" [ 20.880874] type=1400 audit(1301935312.914:7): apparmor="STATUS" operation="profile_replace" name="/usr/lib/connman/scripts/dhclient-script" pid=767 comm="apparmor_parser" [ 20.882771] type=1400 audit(1301935312.914:8): apparmor="STATUS" operation="profile_load" name="/usr/sbin/ntpd" pid=902 comm="apparmor_parser" [ 20.882778] type=1400 audit(1301935312.914:9): apparmor="STATUS" operation="profile_replace" name="/usr/sbin/ntpd" pid=903 comm="apparmor_parser" [ 20.912342] iwlagn 0000:44:00.0: loaded firmware version 9.221.4.1 build 25532 [ 20.917181] phy0: Selected rate control algorithm 'iwl-agn-rs' [ 20.946617] pcmcia_socket pcmcia_socket0: cs: memory probe 0x0c0000-0x0fffff: excluding 0xc0000-0xfffff [ 20.946651] pcmcia_socket pcmcia_socket0: cs: memory probe 0xa0000000-0xa0ffffff: excluding 0xa0000000-0xa0ffffff [ 20.946681] pcmcia_socket pcmcia_socket0: cs: memory probe 0x60000000-0x60ffffff: excluding 0x60000000-0x60ffffff [ 21.011208] parport_pc 00:0a: reported by Plug and Play ACPI [ 21.011290] parport0: PC-style at 0x378 (0x778), irq 5, using FIFO [PCSPP,TRISTATE,COMPAT,ECP] [ 21.014188] input: HDA Intel Line In at Sep Rear Jack as /devices/pci0000:00/0000:00:1b.0/sound/card0/input9 [ 21.014269] input: HDA Intel Mic at Ext Left Jack as /devices/pci0000:00/0000:00:1b.0/sound/card0/input10 [ 21.014324] input: HDA Intel HP Out at Ext Left Jack as /devices/pci0000:00/0000:00:1b.0/sound/card0/input11 [ 21.014382] input: HDA Intel HP Out at Sep Rear Jack as /devices/pci0000:00/0000:00:1b.0/sound/card0/input12 [ 21.014585] HDA Intel 0000:01:00.1: PCI INT A -> GSI 16 (level, low) -> IRQ 16 [ 21.014589] hda_intel: Disable MSI for Nvidia chipset [ 21.014639] HDA Intel 0000:01:00.1: setting latency timer to 64 [ 21.021415] Bluetooth: Core ver 2.15 [ 21.021455] NET: Registered protocol family 31 [ 21.021457] Bluetooth: HCI device and connection manager initialized [ 21.021460] Bluetooth: HCI socket layer initialized [ 21.089787] Bluetooth: Generic Bluetooth USB driver ver 0.6 [ 21.090013] usbcore: registered new interface driver btusb [ 21.098649] lp0: using parport0 (interrupt-driven). [ 21.373707] input: PS/2 Generic Mouse as /devices/platform/i8042/serio1/input/input13 [ 21.786790] pcmcia_socket pcmcia_socket0: pccard: PCMCIA card inserted into slot 0 [ 21.786800] pcmcia_socket pcmcia_socket0: cs: memory probe 0xd3110000-0xd31fffff: excluding 0xd31fe000-0xd320bfff [ 21.793679] pcmcia 0.0: pcmcia: registering new device pcmcia0.0 (IRQ: 22) [ 21.797194] BUG: unable to handle kernel paging request at ffffffffa0c8d860 [ 21.797390] IP: [] module_bug_finalize+0x7e/0xd0 [ 21.797528] PGD 1a2c067 PUD 1a30063 PMD 1187c3067 PTE 0 [ 21.797823] Oops: 0002 [#1] SMP [ 21.798004] last sysfs file: /sys/module/pcmcia/initstate [ 21.798077] CPU 1 [ 21.798136] Modules linked in: btusb tpm_infineon bluetooth snd_hda_codec_idt arc4 pcmcia iwlagn snd_hda_intel(+) snd_hda_codec snd_hwdep snd_pcm iwlcore snd_seq_midi snd_rawmidi snd_seq_midi_event snd_seq nvidia(P+) ppdev joydev mac80211 hp_wmi r852 sm_common snd_timer cfg80211 nand nand_ids nand_ecc video snd_seq_device tpm_tis yenta_socket tpm mtd output parport_pc tpm_bios pcmcia_rsrc pcmcia_core hp_accel lis3lv02d input_polldev snd intel_ips psmouse serio_raw xhci_hcd intel_agp soundcore snd_page_alloc lp parport usbhid hid firewire_ohci sdhci_pci e1000e firewire_core sdhci led_class crc_itu_t ahci libahci [ 21.801983] [ 21.802053] Pid: 1089, comm: modprobe Tainted: P 2.6.35-28-generic #50-Ubuntu 1521/HP EliteBook 8540w [ 21.802145] RIP: 0010:[] [] module_bug_finalize+0x7e/0xd0 [ 21.802291] RSP: 0018:ffff8801194a3d80 EFLAGS: 00010246 [ 21.802366] RAX: ffffffffa0067698 RBX: ffffffff817d6acc RCX: 000000000000000b [ 21.802441] RDX: ffffffffa0c8d858 RSI: ffffc900110f526a RDI: ffffffff817d6acd [ 21.802516] RBP: ffff8801194a3d88 R08: ffffffffa0067520 R09: ffffc900110f5948 [ 21.802593] R10: ffffc900110f5260 R11: 000000000000000c R12: ffffc900110f53c8 [ 21.802670] R13: 0000000000000000 R14: ffffffff817a67b7 R15: 0000000000000006 [ 21.802748] FS: 00007f72c73de700(0000) GS:ffff880001e40000(0000) knlGS:0000000000000000 [ 21.802836] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 [ 21.802909] CR2: ffffffffa0c8d860 CR3: 00000001187f3000 CR4: 00000000000006e0 [ 21.802985] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 [ 21.804617] DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400 [ 21.804692] Process modprobe (pid: 1089, threadinfo ffff8801194a2000, task ffff880118cfc4a0) [ 21.804780] Stack: [ 21.804849] 0000000000000000 ffff8801194a3df8 ffffffff8103273f ffffffff812c3970 [ 21.805094] <0> ffffffffa0067520 ffffc900110f1000 ffffc900110f5348 ffffc900110f5260 [ 21.805458] <0> ffffc900110f5948 ffff8801194a3df8 ffffffffa0067520 ffffc900110f1000 [ 21.805892] Call Trace: [ 21.805966] [] module_finalize+0x11f/0x160 [ 21.806044] [] ? generic_swap+0x0/0x30 [ 21.806122] [] load_module+0xc65/0x1140 [ 21.806199] [] ? vfs_write+0x132/0x1a0 [ 21.806274] [] sys_init_module+0x62/0x200 [ 21.806349] [] system_call_fastpath+0x16/0x1b [ 21.806424] Code: 89 d9 49 8d 34 32 f3 a6 74 43 83 c0 01 49 83 c1 40 39 d0 72 e4 eb 06 90 90 90 90 90 90 48 8b 15 09 2d 7a 00 49 8d 80 78 01 00 00 <48> 89 42 08 49 89 90 78 01 00 00 49 c7 80 80 01 00 00 f0 ab a5 [ 21.810165] RIP [] module_bug_finalize+0x7e/0xd0 [ 21.810296] RSP [ 21.810367] CR2: ffffffffa0c8d860 [ 21.810439] ---[ end trace 59bf57d2dcb14d7d ]--- [ 21.982893] EXT4-fs (sda5): re-mounted. Opts: errors=remount-ro [ 22.141883] Synaptics Touchpad, model: 1, fw: 7.2, id: 0x1c0b1, caps: 0xd44771/0xa40000/0xa0000 [ 22.186367] input: SynPS/2 Synaptics TouchPad as /devices/platform/i8042/serio4/input/input14 [ 22.218181] BUG: unable to handle kernel paging request at ffffffffa0c8d860 [ 22.218401] IP: [] module_bug_finalize+0x7e/0xd0 [ 22.218563] PGD 1a2c067 PUD 1a30063 PMD 1187c3067 PTE 0 [ 22.218861] Oops: 0002 [#2] SMP [ 22.219043] last sysfs file: /sys/module/snd_hda_codec/initstate [ 22.219118] CPU 3 [ 22.219176] Modules linked in: btusb tpm_infineon bluetooth snd_hda_codec_idt arc4 pcmcia iwlagn snd_hda_intel(+) snd_hda_codec snd_hwdep snd_pcm iwlcore snd_seq_midi snd_rawmidi snd_seq_midi_event snd_seq nvidia(P+) ppdev joydev mac80211 hp_wmi r852 sm_common snd_timer cfg80211 nand nand_ids nand_ecc video snd_seq_device tpm_tis yenta_socket tpm mtd output parport_pc tpm_bios pcmcia_rsrc pcmcia_core hp_accel lis3lv02d input_polldev snd intel_ips psmouse serio_raw xhci_hcd intel_agp soundcore snd_page_alloc lp parport usbhid hid firewire_ohci sdhci_pci e1000e firewire_core sdhci led_class crc_itu_t ahci libahci [ 22.223041] [ 22.223111] Pid: 1125, comm: modprobe Tainted: P D 2.6.35-28-generic #50-Ubuntu 1521/HP EliteBook 8540w [ 22.223204] RIP: 0010:[] [] module_bug_finalize+0x7e/0xd0 [ 22.223348] RSP: 0018:ffff88011bb7dd80 EFLAGS: 00010246 [ 22.223423] RAX: ffffffffa015d3b8 RBX: ffffffff817d6acc RCX: 000000000000000b [ 22.223500] RDX: ffffffffa0c8d858 RSI: ffffc9001113804a RDI: ffffffff817d6acd [ 22.223576] RBP: ffff88011bb7dd88 R08: ffffffffa015d240 R09: ffffc900111387b8 [ 22.223654] R10: ffffc90011138040 R11: 000000000000000c R12: ffffc900111381b8 [ 22.223731] R13: 0000000000000000 R14: ffffffff817a67b7 R15: 0000000000000006 [ 22.223809] FS: 00007fa52f1e1700(0000) GS:ffff880001ec0000(0000) knlGS:0000000000000000 [ 22.223898] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 [ 22.223971] CR2: ffffffffa0c8d860 CR3: 0000000119c91000 CR4: 00000000000006e0 [ 22.224048] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 [ 22.224124] DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400 [ 22.224203] Process modprobe (pid: 1125, threadinfo ffff88011bb7c000, task ffff880117c496e0) [ 22.224291] Stack: [ 22.224361] 0000000000000000 ffff88011bb7ddf8 ffffffff8103273f ffffffff812c3970 [ 22.224604] <0> ffffffffa015d240 ffffc90011134000 ffffc90011138138 ffffc90011138040 [ 22.224971] <0> ffffc900111387b8 ffff88011bb7ddf8 ffffffffa015d240 ffffc90011134000 [ 22.225404] Call Trace: [ 22.225480] [] module_finalize+0x11f/0x160 [ 22.225562] [] ? generic_swap+0x0/0x30 [ 22.225641] [] load_module+0xc65/0x1140 [ 22.225721] [] sys_init_module+0x62/0x200 [ 22.225799] [] system_call_fastpath+0x16/0x1b [ 22.225874] Code: 89 d9 49 8d 34 32 f3 a6 74 43 83 c0 01 49 83 c1 40 39 d0 72 e4 eb 06 90 90 90 90 90 90 48 8b 15 09 2d 7a 00 49 8d 80 78 01 00 00 <48> 89 42 08 49 89 90 78 01 00 00 49 c7 80 80 01 00 00 f0 ab a5 [ 22.229636] RIP [] module_bug_finalize+0x7e/0xd0 [ 22.229769] RSP [ 22.229838] CR2: ffffffffa0c8d860 [ 22.229911] ---[ end trace 59bf57d2dcb14d7e ]--- [ 22.368296] BUG: unable to handle kernel paging request at ffffffffa0c8d860 [ 22.368489] IP: [] module_bug_finalize+0x7e/0xd0 [ 22.368621] PGD 1a2c067 PUD 1a30063 PMD 1187c3067 PTE 0 [ 22.368919] Oops: 0002 [#3] SMP [ 22.369101] last sysfs file: /sys/module/snd_hda_intel/initstate [ 22.369177] CPU 3 [ 22.369235] Modules linked in: btusb tpm_infineon bluetooth snd_hda_codec_idt arc4 pcmcia iwlagn snd_hda_intel(+) snd_hda_codec snd_hwdep snd_pcm iwlcore snd_seq_midi snd_rawmidi snd_seq_midi_event snd_seq nvidia(P+) ppdev joydev mac80211 hp_wmi r852 sm_common snd_timer cfg80211 nand nand_ids nand_ecc video snd_seq_device tpm_tis yenta_socket tpm mtd output parport_pc tpm_bios pcmcia_rsrc pcmcia_core hp_accel lis3lv02d input_polldev snd intel_ips psmouse serio_raw xhci_hcd intel_agp soundcore snd_page_alloc lp parport usbhid hid firewire_ohci sdhci_pci e1000e firewire_core sdhci led_class crc_itu_t ahci libahci [ 22.373127] [ 22.373196] Pid: 1129, comm: modprobe Tainted: P D 2.6.35-28-generic #50-Ubuntu 1521/HP EliteBook 8540w [ 22.373286] RIP: 0010:[] [] module_bug_finalize+0x7e/0xd0 [ 22.373430] RSP: 0018:ffff88011ac0dd80 EFLAGS: 00010246 [ 22.373502] RAX: ffffffffa0c623b8 RBX: ffffffff817d6acc RCX: 000000000000000b [ 22.373576] RDX: ffffffffa0c8d858 RSI: ffffc9001114204a RDI: ffffffff817d6acd [ 22.373656] RBP: ffff88011ac0dd88 R08: ffffffffa0c62240 R09: ffffc900111427b8 [ 22.373730] R10: ffffc90011142040 R11: 000000000000000c R12: ffffc900111421b8 [ 22.373805] R13: 0000000000000000 R14: ffffffff817a67b7 R15: 0000000000000006 [ 22.373882] FS: 00007f532b66d700(0000) GS:ffff880001ec0000(0000) knlGS:0000000000000000 [ 22.373970] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 [ 22.374045] CR2: ffffffffa0c8d860 CR3: 000000011b29c000 CR4: 00000000000006e0 [ 22.374122] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 [ 22.374201] DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400 [ 22.374277] Process modprobe (pid: 1129, threadinfo ffff88011ac0c000, task ffff880117c4c4a0) [ 22.374365] Stack: [ 22.374434] 0000000000000000 ffff88011ac0ddf8 ffffffff8103273f ffffffff812c3970 [ 22.374680] <0> ffffffffa0c62240 ffffc9001113e000 ffffc90011142138 ffffc90011142040 [ 22.375050] <0> ffffc900111427b8 ffff88011ac0ddf8 ffffffffa0c62240 ffffc9001113e000 [ 22.375477] Call Trace: [ 22.375553] [] module_finalize+0x11f/0x160 [ 22.375630] [] ? generic_swap+0x0/0x30 [ 22.375711] [] load_module+0xc65/0x1140 [ 22.375792] [] sys_init_module+0x62/0x200 [ 22.375868] [] system_call_fastpath+0x16/0x1b [ 22.375944] Code: 89 d9 49 8d 34 32 f3 a6 74 43 83 c0 01 49 83 c1 40 39 d0 72 e4 eb 06 90 90 90 90 90 90 48 8b 15 09 2d 7a 00 49 8d 80 78 01 00 00 <48> 89 42 08 49 89 90 78 01 00 00 49 c7 80 80 01 00 00 f0 ab a5 [ 22.379693] RIP [] module_bug_finalize+0x7e/0xd0 [ 22.379823] RSP [ 22.379894] CR2: ffffffffa0c8d860 [ 22.379966] ---[ end trace 59bf57d2dcb14d7f ]--- [ 22.528220] BUG: unable to handle kernel paging request at ffffffffa0c8d860 [ 22.528417] IP: [] module_bug_finalize+0x7e/0xd0 [ 22.528558] PGD 1a2c067 PUD 1a30063 PMD 1187c3067 PTE 0 [ 22.528872] Oops: 0002 [#4] SMP [ 22.529052] last sysfs file: /sys/module/snd_hda_codec/initstate [ 22.529128] CPU 3 [ 22.529187] Modules linked in: btusb tpm_infineon bluetooth snd_hda_codec_idt arc4 pcmcia iwlagn snd_hda_intel(+) snd_hda_codec snd_hwdep snd_pcm iwlcore snd_seq_midi snd_rawmidi snd_seq_midi_event snd_seq nvidia(P+) ppdev joydev mac80211 hp_wmi r852 sm_common snd_timer cfg80211 nand nand_ids nand_ecc video snd_seq_device tpm_tis yenta_socket tpm mtd output parport_pc tpm_bios pcmcia_rsrc pcmcia_core hp_accel lis3lv02d input_polldev snd intel_ips psmouse serio_raw xhci_hcd intel_agp soundcore snd_page_alloc lp parport usbhid hid firewire_ohci sdhci_pci e1000e firewire_core sdhci led_class crc_itu_t ahci libahci [ 22.533045] [ 22.533116] Pid: 1140, comm: modprobe Tainted: P D 2.6.35-28-generic #50-Ubuntu 1521/HP EliteBook 8540w [ 22.533208] RIP: 0010:[] [] module_bug_finalize+0x7e/0xd0 [ 22.533355] RSP: 0018:ffff880127ea7d80 EFLAGS: 00010246 [ 22.533428] RAX: ffffffffa0c813b8 RBX: ffffffff817d6acc RCX: 000000000000000b [ 22.533502] RDX: ffffffffa0c8d858 RSI: ffffc9001114f04a RDI: ffffffff817d6acd [ 22.533578] RBP: ffff880127ea7d88 R08: ffffffffa0c81240 R09: ffffc9001114f7b8 [ 22.533657] R10: ffffc9001114f040 R11: 000000000000000c R12: ffffc9001114f1b8 [ 22.533734] R13: 0000000000000000 R14: ffffffff817a67b7 R15: 0000000000000006 [ 22.533810] FS: 00007f2de6864700(0000) GS:ffff880001ec0000(0000) knlGS:0000000000000000 [ 22.533899] CS: 0010 DS: 0000 ES: 0000 CR0: 000000008005003b [ 22.533974] CR2: ffffffffa0c8d860 CR3: 000000011ba76000 CR4: 00000000000006e0 [ 22.534051] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 [ 22.534127] DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400 [ 22.534203] Process modprobe (pid: 1140, threadinfo ffff880127ea6000, task ffff880117c4db80) [ 22.534292] Stack: [ 22.534361] 0000000000000000 ffff880127ea7df8 ffffffff8103273f ffffffff812c3970 [ 22.534603] <0> ffffffffa0c81240 ffffc9001114b000 ffffc9001114f138 ffffc9001114f040 [ 22.534969] <0> ffffc9001114f7b8 ffff880127ea7df8 ffffffffa0c81240 ffffc9001114b000 [ 22.535404] Call Trace: [ 22.535480] [] module_finalize+0x11f/0x160 [ 22.535561] [] ? generic_swap+0x0/0x30 [ 22.535640] [] load_module+0xc65/0x1140 [ 22.535717] [] sys_init_module+0x62/0x200 [ 22.537351] [] system_call_fastpath+0x16/0x1b [ 22.537426] Code: 89 d9 49 8d 34 32 f3 a6 74 43 83 c0 01 49 83 c1 40 39 d0 72 e4 eb 06 90 90 90 90 90 90 48 8b 15 09 2d 7a 00 49 8d 80 78 01 00 00 <48> 89 42 08 49 89 90 78 01 00 00 49 c7 80 80 01 00 00 f0 ab a5 [ 22.541185] RIP [] module_bug_finalize+0x7e/0xd0 [ 22.541320] RSP [ 22.541391] CR2: ffffffffa0c8d860 [ 22.541462] ---[ end trace 59bf57d2dcb14d80 ]--- [ 22.677092] BUG: unable to handle kernel paging request at ffffffffa0c8d860 [ 22.677285] IP: [] module_bug_finalize+0x7e/0xd0 [ 22.677417] PGD 1a2c067 PUD 1a30063 PMD 1187c3067 PTE 0 [ 22.677744] Oops: 0002 [#5] SMP [ 22.677934] last sysfs file: /sys/module/snd_hda_codec/initstate [ 22.678050] CPU 3 [ 22.678108] Modules linked in: btusb tpm_infineon bluetooth snd_hda_codec_idt arc4 pcmcia iwlagn snd_hda_intel(+) snd_hda_codec snd_hwdep snd_pcm iwlcore snd_seq_midi snd_rawmidi snd_seq_midi_event snd_seq nvidia(P+) ppdev joydev mac80211 hp_wmi r852 sm_common snd_timer cfg80211 nand nand_ids nand_ecc video snd_seq_device tpm_tis yenta_socket tpm mtd output parport_pc tpm_bios pcmcia_rsrc pcmcia_core hp_accel lis3lv02d input_polldev snd intel_ips psmouse serio_raw xhci_hcd intel_agp soundcore snd_page_alloc lp parport usbhid hid firewire_ohci sdhci_pci e1000e firewire_core sdhci led_class crc_itu_t ahci libahci [ 22.681981] [ 22.682050] Pid: 1144, comm: modprobe Tainted: P D 2.6.35-28-generic #50-Ubuntu 1521/HP EliteBook 8540w [ 22.682140] RIP: 0010:[] [] module_bug_finalize+0x7e/0xd0 [ 22.682288] RSP: 0018:ffff88011976dd80 EFLAGS: 00010246 [ 22.682362] RAX: ffffffffa0cee3b8 RBX: ffffffff817d6acc RCX: 000000000000000b [ 22.682440] RDX: ffffffffa0c8d858 RSI: ffffc9001115904a RDI: ffffffff817d6acd [ 22.682518] RBP: ffff88011976dd88 R08: ffffffffa0cee240 R09: ffffc900111597b8 [ 22.682594] R10: ffffc90011159040 R11: 000000000000000c R12: ffffc900111591b8 [ 22.682672] R13: 0000000000000000 R14: ffffffff817a67b7 R15: 0000000000000006 [ 22.682752] FS: 00007f0d3b909700(0000) GS:ffff880001ec0000(0000) knlGS:0000000000000000 [ 22.682840] CS: 0010 DS: 0000 ES: 0000 CR0: 000000008005003b [ 22.682916] CR2: ffffffffa0c8d860 CR3: 000000011acb9000 CR4: 00000000000006e0 [ 22.682993] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 [ 22.683070] DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400 [ 22.683148] Process modprobe (pid: 1144, threadinfo ffff88011976c000, task ffff880117c48000) [ 22.683236] Stack: [ 22.683305] 0000000000000000 ffff88011976ddf8 ffffffff8103273f ffffffff812c3970 [ 22.683548] <0> ffffffffa0cee240 ffffc90011155000 ffffc90011159138 ffffc90011159040 [ 22.683917] <0> ffffc900111597b8 ffff88011976ddf8 ffffffffa0cee240 ffffc90011155000 [ 22.684350] Call Trace: [ 22.684423] [] module_finalize+0x11f/0x160 [ 22.684498] [] ? generic_swap+0x0/0x30 [ 22.684575] [] load_module+0xc65/0x1140 [ 22.684652] [] sys_init_module+0x62/0x200 [ 22.684727] [] system_call_fastpath+0x16/0x1b [ 22.684803] Code: 89 d9 49 8d 34 32 f3 a6 74 43 83 c0 01 49 83 c1 40 39 d0 72 e4 eb 06 90 90 90 90 90 90 48 8b 15 09 2d 7a 00 49 8d 80 78 01 00 00 <48> 89 42 08 49 89 90 78 01 00 00 49 c7 80 80 01 00 00 f0 ab a5 [ 22.688549] RIP [] module_bug_finalize+0x7e/0xd0 [ 22.688680] RSP [ 22.688750] CR2: ffffffffa0c8d860 [ 22.688823] ---[ end trace 59bf57d2dcb14d81 ]--- [ 22.816804] EXT4-fs (sda3): mounted filesystem with ordered data mode. Opts: (null) [ 22.824579] nvidia 0000:01:00.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16 [ 22.824662] nvidia 0000:01:00.0: setting latency timer to 64 [ 22.824743] vgaarb: device changed decodes: PCI:0000:01:00.0,olddecodes=io+mem,decodes=none:owns=io+mem [ 22.824973] NVRM: loading NVIDIA UNIX x86_64 Kernel Module 260.19.06 Mon Sep 13 04:29:19 PDT 2010 [ 24.873612] EXT4-fs (sda7): mounted filesystem with ordered data mode. Opts: (null) [ 27.367257] type=1400 audit(1301935319.414:10): apparmor="STATUS" operation="profile_load" name="/usr/share/gdm/guest-session/Xsession" pid=1381 comm="apparmor_parser" [ 27.367460] type=1400 audit(1301935319.414:11): apparmor="STATUS" operation="profile_replace" name="/sbin/dhclient3" pid=1382 comm="apparmor_parser" [ 27.367746] type=1400 audit(1301935319.414:12): apparmor="STATUS" operation="profile_load" name="/usr/lib/libvirt/virt-aa-helper" pid=1385 comm="apparmor_parser" [ 27.367972] type=1400 audit(1301935319.414:13): apparmor="STATUS" operation="profile_replace" name="/usr/lib/NetworkManager/nm-dhcp-client.action" pid=1382 comm="apparmor_parser" [ 27.368338] type=1400 audit(1301935319.414:14): apparmor="STATUS" operation="profile_replace" name="/usr/lib/connman/scripts/dhclient-script" pid=1382 comm="apparmor_parser" [ 27.369803] type=1400 audit(1301935319.414:15): apparmor="STATUS" operation="profile_load" name="/usr/lib/cups/backend/cups-pdf" pid=1386 comm="apparmor_parser" [ 27.370004] type=1400 audit(1301935319.414:16): apparmor="STATUS" operation="profile_load" name="/usr/sbin/dhcpd3" pid=1387 comm="apparmor_parser" [ 27.370472] type=1400 audit(1301935319.414:17): apparmor="STATUS" operation="profile_load" name="/usr/sbin/cupsd" pid=1386 comm="apparmor_parser" [ 27.370952] type=1400 audit(1301935319.414:18): apparmor="STATUS" operation="profile_load" name="/usr/sbin/libvirtd" pid=1388 comm="apparmor_parser" [ 27.372068] type=1400 audit(1301935319.414:19): apparmor="STATUS" operation="profile_replace" name="/usr/sbin/ntpd" pid=1389 comm="apparmor_parser" [ 27.682504] e1000e 0000:00:19.0: irq 46 for MSI/MSI-X [ 27.710335] BUG: unable to handle kernel paging request at ffffffffa0c8d860 [ 27.710341] IP: [] module_bug_finalize+0x7e/0xd0 [ 27.710351] PGD 1a2c067 PUD 1a30063 PMD 1187c3067 PTE 0 [ 27.710355] Oops: 0002 [#6] SMP [ 27.710358] last sysfs file: /sys/bus/acpi/drivers/NVIDIA ACPI Video Driver/uevent [ 27.710362] CPU 0 [ 27.710363] Modules linked in: btusb tpm_infineon bluetooth snd_hda_codec_idt arc4 pcmcia iwlagn snd_hda_intel snd_hda_codec snd_hwdep snd_pcm iwlcore snd_seq_midi snd_rawmidi snd_seq_midi_event snd_seq nvidia(P) ppdev joydev mac80211 hp_wmi r852 sm_common snd_timer cfg80211 nand nand_ids nand_ecc video snd_seq_device tpm_tis yenta_socket tpm mtd output parport_pc tpm_bios pcmcia_rsrc pcmcia_core hp_accel lis3lv02d input_polldev snd intel_ips psmouse serio_raw xhci_hcd intel_agp soundcore snd_page_alloc lp parport usbhid hid firewire_ohci sdhci_pci e1000e firewire_core sdhci led_class crc_itu_t ahci libahci [ 27.710407] [ 27.710411] Pid: 1601, comm: modprobe Tainted: P D 2.6.35-28-generic #50-Ubuntu 1521/HP EliteBook 8540w [ 27.710414] RIP: 0010:[] [] module_bug_finalize+0x7e/0xd0 [ 27.710419] RSP: 0018:ffff880116f57d80 EFLAGS: 00010a02 [ 27.710421] RAX: ffffffffa0b7d298 RBX: ffffffff817d6acc RCX: 0000000000000000 [ 27.710423] RDX: ffffffffa0c8d858 RSI: ffffc900121358f0 RDI: ffffffff817d6ad8 [ 27.710426] RBP: ffff880116f57d88 R08: ffffffffa0b7d120 R09: ffffc90012135e88 [ 27.710428] R10: ffffc90012135828 R11: 000000000000000c R12: ffffc90012135ac8 [ 27.710430] R13: ffffc90012135d48 R14: ffffffff817a67b7 R15: 0000000000000006 [ 27.710433] FS: 00007f53be4b8700(0000) GS:ffff880001e00000(0000) knlGS:0000000000000000 [ 27.710435] CS: 0010 DS: 0000 ES: 0000 CR0: 000000008005003b [ 27.710437] CR2: ffffffffa0c8d860 CR3: 000000011794d000 CR4: 00000000000006f0 [ 27.710440] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 [ 27.710442] DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400 [ 27.710445] Process modprobe (pid: 1601, threadinfo ffff880116f56000, task ffff880116f3db80) [ 27.710447] Stack: [ 27.710448] ffffc90012135e08 ffff880116f57df8 ffffffff8103273f ffffffff812c3970 [ 27.710452] <0> ffffffffa0b7d120 ffffc900120f9000 ffffc90012135a48 ffffc90012135828 [ 27.710456] <0> ffffc900121367c8 ffff880116f57df8 ffffffffa0b7d120 ffffc900120f9000 [ 27.710460] Call Trace: [ 27.710467] [] module_finalize+0x11f/0x160 [ 27.710472] [] ? generic_swap+0x0/0x30 [ 27.710480] [] load_module+0xc65/0x1140 [ 27.710485] [] sys_init_module+0x62/0x200 [ 27.710490] [] system_call_fastpath+0x16/0x1b [ 27.710492] Code: 89 d9 49 8d 34 32 f3 a6 74 43 83 c0 01 49 83 c1 40 39 d0 72 e4 eb 06 90 90 90 90 90 90 48 8b 15 09 2d 7a 00 49 8d 80 78 01 00 00 <48> 89 42 08 49 89 90 78 01 00 00 49 c7 80 80 01 00 00 f0 ab a5 [ 27.710521] RIP [] module_bug_finalize+0x7e/0xd0 [ 27.710525] RSP [ 27.710527] CR2: ffffffffa0c8d860 [ 27.710529] ---[ end trace 59bf57d2dcb14d82 ]--- [ 27.742164] e1000e 0000:00:19.0: irq 46 for MSI/MSI-X [ 27.742509] ADDRCONF(NETDEV_UP): eth0: link is not ready Bug: 783502 [ 0.000000] Initializing cgroup subsys cpuset [ 0.000000] Initializing cgroup subsys cpu [ 0.000000] Linux version 2.6.38-8-server (buildd@allspice) (gcc version 4.5.2 (Ubuntu/Linaro 4.5.2-8ubuntu3) ) #42-Ubuntu SMP Mon Apr 11 03:49:04 UTC 2011 (Ubuntu 2.6.38-8.42-server 2.6.38.2) [ 0.000000] Command line: BOOT_IMAGE=/vmlinuz-2.6.38-8-server root=UUID=7876b32f-113f-4202-b4bf-445574646268 ro rootflags=subvol=@ quiet [ 0.000000] BIOS-provided physical RAM map: [ 0.000000] BIOS-e820: 0000000000000000 - 000000000009fc00 (usable) [ 0.000000] BIOS-e820: 000000000009fc00 - 00000000000a0000 (reserved) [ 0.000000] BIOS-e820: 00000000000e0000 - 0000000000100000 (reserved) [ 0.000000] BIOS-e820: 0000000000100000 - 00000000dff80000 (usable) [ 0.000000] BIOS-e820: 00000000dff8e000 - 00000000dff90000 (reserved) [ 0.000000] BIOS-e820: 00000000dff90000 - 00000000dff9e000 (ACPI data) [ 0.000000] BIOS-e820: 00000000dff9e000 - 00000000dffd0000 (ACPI NVS) [ 0.000000] BIOS-e820: 00000000dffd0000 - 00000000dffde000 (reserved) [ 0.000000] BIOS-e820: 00000000dffe0000 - 00000000e0000000 (reserved) [ 0.000000] BIOS-e820: 00000000fee00000 - 00000000fee01000 (reserved) [ 0.000000] BIOS-e820: 00000000ffb00000 - 0000000100000000 (reserved) [ 0.000000] BIOS-e820: 0000000100000000 - 0000000220000000 (usable) [ 0.000000] NX (Execute Disable) protection: active [ 0.000000] DMI present. [ 0.000000] DMI: ASUS RS100-E5/PI2/P5BV-M/RS100-E5, BIOS 0211 08/14/2008 [ 0.000000] e820 update range: 0000000000000000 - 0000000000010000 (usable) ==> (reserved) [ 0.000000] e820 remove range: 00000000000a0000 - 0000000000100000 (usable) [ 0.000000] No AGP bridge found [ 0.000000] last_pfn = 0x220000 max_arch_pfn = 0x400000000 [ 0.000000] MTRR default type: uncachable [ 0.000000] MTRR fixed ranges enabled: [ 0.000000] 00000-9FFFF write-back [ 0.000000] A0000-BFFFF uncachable [ 0.000000] C0000-CBFFF write-protect [ 0.000000] CC000-DFFFF uncachable [ 0.000000] E0000-EFFFF write-through [ 0.000000] F0000-FFFFF write-protect [ 0.000000] MTRR variable ranges enabled: [ 0.000000] 0 base 0E0000000 mask FE0000000 uncachable [ 0.000000] 1 base 000000000 mask E00000000 write-back [ 0.000000] 2 base 200000000 mask FE0000000 write-back [ 0.000000] 3 disabled [ 0.000000] 4 disabled [ 0.000000] 5 disabled [ 0.000000] 6 disabled [ 0.000000] 7 disabled [ 0.000000] x86 PAT enabled: cpu 0, old 0x7040600070406, new 0x7010600070106 [ 0.000000] e820 update range: 00000000e0000000 - 0000000100000000 (usable) ==> (reserved) [ 0.000000] last_pfn = 0xdff80 max_arch_pfn = 0x400000000 [ 0.000000] found SMP MP-table at [ffff8800000ff780] ff780 [ 0.000000] initial memory mapped : 0 - 20000000 [ 0.000000] init_memory_mapping: 0000000000000000-00000000dff80000 [ 0.000000] 0000000000 - 00dfe00000 page 2M [ 0.000000] 00dfe00000 - 00dff80000 page 4k [ 0.000000] kernel direct mapping tables up to dff80000 @ 1fffa000-20000000 [ 0.000000] init_memory_mapping: 0000000100000000-0000000220000000 [ 0.000000] 0100000000 - 0220000000 page 2M [ 0.000000] kernel direct mapping tables up to 220000000 @ dff76000-dff80000 [ 0.000000] RAMDISK: 366fc000 - 37376000 [ 0.000000] ACPI: RSDP 00000000000fa480 00014 (v00 ACPIAM) [ 0.000000] ACPI: RSDT 00000000dff90000 0004C (v01 081408 RSDT2115 20080814 MSFT 00000097) [ 0.000000] ACPI: FACP 00000000dff90200 00084 (v01 081408 FACP2115 20080814 MSFT 00000097) [ 0.000000] ACPI: DSDT 00000000dff90440 05E75 (v01 S0062 S0062000 00000000 INTL 20051117) [ 0.000000] ACPI: FACS 00000000dff9e000 00040 [ 0.000000] ACPI: APIC 00000000dff90390 0006C (v01 081408 APIC2115 20080814 MSFT 00000097) [ 0.000000] ACPI: MCFG 00000000dff90400 0003C (v01 081408 OEMMCFG 20080814 MSFT 00000097) [ 0.000000] ACPI: OEMB 00000000dff9e040 00072 (v01 081408 OEMB2115 20080814 MSFT 00000097) [ 0.000000] ACPI: HPET 00000000dff962c0 00038 (v01 081408 OEMHPET 20080814 MSFT 00000097) [ 0.000000] ACPI: ASF! 00000000dff962f8 00099 (v32 LEGEND I865PASF 00000001 INTL 20051117) [ 0.000000] ACPI: EINJ 00000000dff963a0 00130 (v01 AMIER AMI_EINJ 20080814 MSFT 00000097) [ 0.000000] ACPI: BERT 00000000dff96530 00030 (v01 AMIER AMI_BERT 20080814 MSFT 00000097) [ 0.000000] ACPI: ERST 00000000dff96560 001B0 (v01 AMIER AMI_ERST 20080814 MSFT 00000097) [ 0.000000] ACPI: HEST 00000000dff96710 000A8 (v01 AMIER AMI_HEST 20080814 MSFT 00000097) [ 0.000000] ACPI: Local APIC address 0xfee00000 [ 0.000000] No NUMA configuration found [ 0.000000] Faking a node at 0000000000000000-0000000220000000 [ 0.000000] Initmem setup node 0 0000000000000000-0000000220000000 [ 0.000000] NODE_DATA [000000021fffb000 - 000000021fffffff] [ 0.000000] [ffffea0000000000-ffffea00077fffff] PMD -> [ffff880217e00000-ffff88021effffff] on node 0 [ 0.000000] Zone PFN ranges: [ 0.000000] DMA 0x00000010 -> 0x00001000 [ 0.000000] DMA32 0x00001000 -> 0x00100000 [ 0.000000] Normal 0x00100000 -> 0x00220000 [ 0.000000] Movable zone start PFN for each node [ 0.000000] early_node_map[3] active PFN ranges [ 0.000000] 0: 0x00000010 -> 0x0000009f [ 0.000000] 0: 0x00000100 -> 0x000dff80 [ 0.000000] 0: 0x00100000 -> 0x00220000 [ 0.000000] On node 0 totalpages: 2096911 [ 0.000000] DMA zone: 56 pages used for memmap [ 0.000000] DMA zone: 6 pages reserved [ 0.000000] DMA zone: 3921 pages, LIFO batch:0 [ 0.000000] DMA32 zone: 14280 pages used for memmap [ 0.000000] DMA32 zone: 899000 pages, LIFO batch:31 [ 0.000000] Normal zone: 16128 pages used for memmap [ 0.000000] Normal zone: 1163520 pages, LIFO batch:31 [ 0.000000] ACPI: PM-Timer IO Port: 0x808 [ 0.000000] ACPI: Local APIC address 0xfee00000 [ 0.000000] ACPI: LAPIC (acpi_id[0x01] lapic_id[0x00] enabled) [ 0.000000] ACPI: LAPIC (acpi_id[0x02] lapic_id[0x01] enabled) [ 0.000000] ACPI: LAPIC (acpi_id[0x03] lapic_id[0x02] enabled) [ 0.000000] ACPI: LAPIC (acpi_id[0x04] lapic_id[0x03] enabled) [ 0.000000] ACPI: IOAPIC (id[0x04] address[0xfec00000] gsi_base[0]) [ 0.000000] IOAPIC[0]: apic_id 4, version 32, address 0xfec00000, GSI 0-23 [ 0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 0 global_irq 2 dfl dfl) [ 0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 9 global_irq 9 high level) [ 0.000000] ACPI: IRQ0 used by override. [ 0.000000] ACPI: IRQ2 used by override. [ 0.000000] ACPI: IRQ9 used by override. [ 0.000000] Using ACPI (MADT) for SMP configuration information [ 0.000000] ACPI: HPET id: 0xffffffff base: 0xfed00000 [ 0.000000] SMP: Allowing 4 CPUs, 0 hotplug CPUs [ 0.000000] nr_irqs_gsi: 40 [ 0.000000] PM: Registered nosave memory: 000000000009f000 - 00000000000a0000 [ 0.000000] PM: Registered nosave memory: 00000000000a0000 - 00000000000e0000 [ 0.000000] PM: Registered nosave memory: 00000000000e0000 - 0000000000100000 [ 0.000000] PM: Registered nosave memory: 00000000dff80000 - 00000000dff8e000 [ 0.000000] PM: Registered nosave memory: 00000000dff8e000 - 00000000dff90000 [ 0.000000] PM: Registered nosave memory: 00000000dff90000 - 00000000dff9e000 [ 0.000000] PM: Registered nosave memory: 00000000dff9e000 - 00000000dffd0000 [ 0.000000] PM: Registered nosave memory: 00000000dffd0000 - 00000000dffde000 [ 0.000000] PM: Registered nosave memory: 00000000dffde000 - 00000000dffe0000 [ 0.000000] PM: Registered nosave memory: 00000000dffe0000 - 00000000e0000000 [ 0.000000] PM: Registered nosave memory: 00000000e0000000 - 00000000fee00000 [ 0.000000] PM: Registered nosave memory: 00000000fee00000 - 00000000fee01000 [ 0.000000] PM: Registered nosave memory: 00000000fee01000 - 00000000ffb00000 [ 0.000000] PM: Registered nosave memory: 00000000ffb00000 - 0000000100000000 [ 0.000000] Allocating PCI resources starting at e0000000 (gap: e0000000:1ee00000) [ 0.000000] Booting paravirtualized kernel on bare hardware [ 0.000000] setup_percpu: NR_CPUS:256 nr_cpumask_bits:256 nr_cpu_ids:4 nr_node_ids:1 [ 0.000000] PERCPU: Embedded 28 pages/cpu @ffff8800dfc00000 s84416 r8192 d22080 u524288 [ 0.000000] pcpu-alloc: s84416 r8192 d22080 u524288 alloc=1*2097152 [ 0.000000] pcpu-alloc: [0] 0 1 2 3 [ 0.000000] Built 1 zonelists in Zone order, mobility grouping on. Total pages: 2066441 [ 0.000000] Policy zone: Normal [ 0.000000] Kernel command line: BOOT_IMAGE=/vmlinuz-2.6.38-8-server root=UUID=7876b32f-113f-4202-b4bf-445574646268 ro rootflags=subvol=@ quiet [ 0.000000] PID hash table entries: 4096 (order: 3, 32768 bytes) [ 0.000000] xsave/xrstor: enabled xstate_bv 0x3, cntxt size 0x240 [ 0.000000] Checking aperture... [ 0.000000] No AGP bridge found [ 0.000000] Calgary: detecting Calgary via BIOS EBDA area [ 0.000000] Calgary: Unable to locate Rio Grande table in EBDA - bailing! [ 0.000000] Memory: 8177972k/8912896k available (6023k kernel code, 525252k absent, 209672k reserved, 5025k data, 880k init) [ 0.000000] SLUB: Genslabs=15, HWalign=64, Order=0-3, MinObjects=0, CPUs=4, Nodes=1 [ 0.000000] Hierarchical RCU implementation. [ 0.000000] RCU dyntick-idle grace-period acceleration is enabled. [ 0.000000] RCU-based detection of stalled CPUs is disabled. [ 0.000000] NR_IRQS:16640 nr_irqs:712 16 [ 0.000000] Console: colour dummy device 80x25 [ 0.000000] console [tty0] enabled [ 0.000000] allocated 83886080 bytes of page_cgroup [ 0.000000] please try 'cgroup_disable=memory' option if you don't want memory cgroups [ 0.000000] hpet clockevent registered [ 0.000000] Fast TSC calibration using PIT [ 0.000000] Detected 2832.622 MHz processor. [ 0.000003] Calibrating delay loop (skipped), value calculated using timer frequency.. 5665.24 BogoMIPS (lpj=28326220) [ 0.000006] pid_max: default: 32768 minimum: 301 [ 0.000026] Security Framework initialized [ 0.000041] AppArmor: AppArmor initialized [ 0.000043] Yama: becoming mindful. [ 0.010350] Dentry cache hash table entries: 1048576 (order: 11, 8388608 bytes) [ 0.013652] Inode-cache hash table entries: 524288 (order: 10, 4194304 bytes) [ 0.015189] Mount-cache hash table entries: 256 [ 0.015313] Initializing cgroup subsys ns [ 0.015317] ns_cgroup deprecated: consider using the 'clone_children' flag without the ns_cgroup. [ 0.015320] Initializing cgroup subsys cpuacct [ 0.015323] Initializing cgroup subsys memory [ 0.015329] Initializing cgroup subsys devices [ 0.015331] Initializing cgroup subsys freezer [ 0.015333] Initializing cgroup subsys net_cls [ 0.015334] Initializing cgroup subsys blkio [ 0.015365] CPU: Physical Processor ID: 0 [ 0.015366] CPU: Processor Core ID: 0 [ 0.015368] mce: CPU supports 6 MCE banks [ 0.015375] CPU0: Thermal monitoring enabled (TM2) [ 0.015378] using mwait in idle threads. [ 0.017533] ACPI: Core revision 20110112 [ 0.020012] ftrace: allocating 24611 entries in 97 pages [ 0.028514] Setting APIC routing to flat [ 0.028812] ..TIMER: vector=0x30 apic1=0 pin1=2 apic2=-1 pin2=-1 [ 0.129728] CPU0: Intel(R) Xeon(R) CPU X3360 @ 2.83GHz stepping 0a [ 0.130000] APIC calibration not consistent with PM-Timer: 109ms instead of 100ms [ 0.130000] APIC delta adjusted to PM-Timer: 2083093 (2291400) [ 0.130000] Performance Events: PEBS fmt0+, Core2 events, Intel PMU driver. [ 0.130000] ... version: 2 [ 0.130000] ... bit width: 40 [ 0.130000] ... generic registers: 2 [ 0.130000] ... value mask: 000000ffffffffff [ 0.130000] ... max period: 000000007fffffff [ 0.130000] ... fixed-purpose events: 3 [ 0.130000] ... event mask: 0000000700000003 [ 0.130000] Booting Node 0, Processors #1 #2 #3 Ok. [ 0.630006] Brought up 4 CPUs [ 0.630009] Total of 4 processors activated (22663.40 BogoMIPS). [ 0.632414] devtmpfs: initialized [ 0.632414] print_constraints: dummy: [ 0.632414] Time: 14:16:42 Date: 05/16/11 [ 0.632414] NET: Registered protocol family 16 [ 0.632414] Trying to unpack rootfs image as initramfs... [ 0.632414] ACPI: bus type pci registered [ 0.632414] PCI: MMCONFIG for domain 0000 [bus 00-ff] at [mem 0xe0000000-0xefffffff] (base 0xe0000000) [ 0.632414] PCI: not using MMCONFIG [ 0.632414] PCI: Using configuration type 1 for base access [ 0.650417] bio: create slab at 0 [ 0.650831] ACPI: EC: Look up EC in DSDT [ 0.650914] \_SB_:_OSC evaluation returned wrong type [ 0.650915] _OSC request data:1 7 [ 0.651634] ACPI: Executed 1 blocks of module-level executable AML code [ 0.653463] ACPI: SSDT 00000000dffb2910 001D2 (v01 AMI CPU1PM 00000001 INTL 20060113) [ 0.653655] ACPI: Dynamic OEM Table Load: [ 0.653658] ACPI: SSDT (null) 001D2 (v01 AMI CPU1PM 00000001 INTL 20060113) [ 0.653787] ACPI: SSDT 00000000dffb2af0 00143 (v01 AMI CPU2PM 00000001 INTL 20060113) [ 0.653978] ACPI: Dynamic OEM Table Load: [ 0.653980] ACPI: SSDT (null) 00143 (v01 AMI CPU2PM 00000001 INTL 20060113) [ 0.654119] ACPI: SSDT 00000000dffb2c40 00143 (v01 AMI CPU3PM 00000001 INTL 20060113) [ 0.654311] ACPI: Dynamic OEM Table Load: [ 0.654313] ACPI: SSDT (null) 00143 (v01 AMI CPU3PM 00000001 INTL 20060113) [ 0.654452] ACPI: SSDT 00000000dffb2d90 00143 (v01 AMI CPU4PM 00000001 INTL 20060113) [ 0.654646] ACPI: Dynamic OEM Table Load: [ 0.654648] ACPI: SSDT (null) 00143 (v01 AMI CPU4PM 00000001 INTL 20060113) [ 0.654768] ACPI: Interpreter enabled [ 0.654770] ACPI: (supports S0 S1 S4 S5) [ 0.654784] ACPI: Using IOAPIC for interrupt routing [ 0.654801] PCI: MMCONFIG for domain 0000 [bus 00-ff] at [mem 0xe0000000-0xefffffff] (base 0xe0000000) [ 0.655514] PCI: MMCONFIG at [mem 0xe0000000-0xefffffff] reserved in ACPI motherboard resources [ 0.693370] ACPI: No dock devices found. [ 0.693401] HEST: Table parsing has been initialized. [ 0.693404] PCI: Using host bridge windows from ACPI; if necessary, use "pci=nocrs" and report a bug [ 0.693536] ACPI: PCI Root Bridge [PCI0] (domain 0000 [bus 00-ff]) [ 0.693673] pci_root PNP0A08:00: host bridge window [io 0x0000-0x0cf7] [ 0.693676] pci_root PNP0A08:00: host bridge window [io 0x0d00-0xffff] [ 0.693678] pci_root PNP0A08:00: host bridge window [mem 0x000a0000-0x000bffff] [ 0.693679] pci_root PNP0A08:00: host bridge window [mem 0x000d0000-0x000dffff] [ 0.693681] pci_root PNP0A08:00: host bridge window [mem 0xf0000000-0xffffffff] [ 0.693692] pci 0000:00:00.0: [8086:29f0] type 0 class 0x000600 [ 0.693728] pci 0000:00:01.0: [8086:29f1] type 1 class 0x000604 [ 0.693751] pci 0000:00:01.0: PME# supported from D0 D3hot D3cold [ 0.693753] pci 0000:00:01.0: PME# disabled [ 0.693787] pci 0000:00:1c.0: [8086:27d0] type 1 class 0x000604 [ 0.693831] pci 0000:00:1c.0: PME# supported from D0 D3hot D3cold [ 0.693834] pci 0000:00:1c.0: PME# disabled [ 0.693853] pci 0000:00:1c.4: [8086:27e0] type 1 class 0x000604 [ 0.693899] pci 0000:00:1c.4: PME# supported from D0 D3hot D3cold [ 0.693902] pci 0000:00:1c.4: PME# disabled [ 0.693918] pci 0000:00:1c.5: [8086:27e2] type 1 class 0x000604 [ 0.693963] pci 0000:00:1c.5: PME# supported from D0 D3hot D3cold [ 0.693966] pci 0000:00:1c.5: PME# disabled [ 0.693982] pci 0000:00:1d.0: [8086:27c8] type 0 class 0x000c03 [ 0.694017] pci 0000:00:1d.0: reg 20: [io 0xcc00-0xcc1f] [ 0.694041] pci 0000:00:1d.1: [8086:27c9] type 0 class 0x000c03 [ 0.694074] pci 0000:00:1d.1: reg 20: [io 0xd000-0xd01f] [ 0.694098] pci 0000:00:1d.2: [8086:27ca] type 0 class 0x000c03 [ 0.694132] pci 0000:00:1d.2: reg 20: [io 0xd080-0xd09f] [ 0.694165] pci 0000:00:1d.7: [8086:27cc] type 0 class 0x000c03 [ 0.694181] pci 0000:00:1d.7: reg 10: [mem 0xfbcff800-0xfbcffbff] [ 0.694238] pci 0000:00:1d.7: PME# supported from D0 D3hot D3cold [ 0.694242] pci 0000:00:1d.7: PME# disabled [ 0.694256] pci 0000:00:1e.0: [8086:244e] type 1 class 0x000604 [ 0.694304] pci 0000:00:1f.0: [8086:27b8] type 0 class 0x000601 [ 0.694376] pci 0000:00:1f.0: ICH7 LPC Generic IO decode 1 PIO at 0280 (mask 00ff) [ 0.694379] pci 0000:00:1f.0: ICH7 LPC Generic IO decode 2 PIO at 0ca0 (mask 0013) [ 0.694406] pci 0000:00:1f.1: [8086:27df] type 0 class 0x000101 [ 0.694417] pci 0000:00:1f.1: reg 10: [io 0x0000-0x0007] [ 0.694425] pci 0000:00:1f.1: reg 14: [io 0x0000-0x0003] [ 0.694432] pci 0000:00:1f.1: reg 18: [io 0x08f0-0x08f7] [ 0.694440] pci 0000:00:1f.1: reg 1c: [io 0x08f8-0x08fb] [ 0.694447] pci 0000:00:1f.1: reg 20: [io 0xffa0-0xffaf] [ 0.694475] pci 0000:00:1f.2: [8086:27c0] type 0 class 0x000101 [ 0.694486] pci 0000:00:1f.2: reg 10: [io 0xdc00-0xdc07] [ 0.694492] pci 0000:00:1f.2: reg 14: [io 0xd880-0xd883] [ 0.694499] pci 0000:00:1f.2: reg 18: [io 0xd800-0xd807] [ 0.694505] pci 0000:00:1f.2: reg 1c: [io 0xd480-0xd483] [ 0.694512] pci 0000:00:1f.2: reg 20: [io 0xd400-0xd40f] [ 0.694518] pci 0000:00:1f.2: reg 24: [mem 0xfbcffc00-0xfbcfffff] [ 0.694536] pci 0000:00:1f.2: PME# supported from D3hot [ 0.694539] pci 0000:00:1f.2: PME# disabled [ 0.694550] pci 0000:00:1f.3: [8086:27da] type 0 class 0x000c05 [ 0.694595] pci 0000:00:1f.3: reg 20: [io 0x0400-0x041f] [ 0.694641] pci 0000:00:01.0: PCI bridge to [bus 05-05] [ 0.694643] pci 0000:00:01.0: bridge window [io 0xf000-0x0000] (disabled) [ 0.694646] pci 0000:00:01.0: bridge window [mem 0xfff00000-0x000fffff] (disabled) [ 0.694649] pci 0000:00:01.0: bridge window [mem 0xfff00000-0x000fffff pref] (disabled) [ 0.694681] pci 0000:00:1c.0: PCI bridge to [bus 04-04] [ 0.694684] pci 0000:00:1c.0: bridge window [io 0xf000-0x0000] (disabled) [ 0.694687] pci 0000:00:1c.0: bridge window [mem 0xfff00000-0x000fffff] (disabled) [ 0.694692] pci 0000:00:1c.0: bridge window [mem 0xfff00000-0x000fffff pref] (disabled) [ 0.694742] pci 0000:03:00.0: [14e4:1659] type 0 class 0x000200 [ 0.694763] pci 0000:03:00.0: reg 10: [mem 0xfbff0000-0xfbffffff 64bit] [ 0.694845] pci 0000:03:00.0: PME# supported from D3hot D3cold [ 0.694849] pci 0000:03:00.0: PME# disabled [ 0.694868] pci 0000:03:00.0: disabling ASPM on pre-1.1 PCIe device. You can enable it with 'pcie_aspm=force' [ 0.694877] pci 0000:00:1c.4: PCI bridge to [bus 03-03] [ 0.694880] pci 0000:00:1c.4: bridge window [io 0xf000-0x0000] (disabled) [ 0.694884] pci 0000:00:1c.4: bridge window [mem 0xfbf00000-0xfbffffff] [ 0.694889] pci 0000:00:1c.4: bridge window [mem 0xfff00000-0x000fffff pref] (disabled) [ 0.694940] pci 0000:02:00.0: [14e4:1659] type 0 class 0x000200 [ 0.694961] pci 0000:02:00.0: reg 10: [mem 0xfbef0000-0xfbefffff 64bit] [ 0.695044] pci 0000:02:00.0: PME# supported from D3hot D3cold [ 0.695048] pci 0000:02:00.0: PME# disabled [ 0.695067] pci 0000:02:00.0: disabling ASPM on pre-1.1 PCIe device. You can enable it with 'pcie_aspm=force' [ 0.695075] pci 0000:00:1c.5: PCI bridge to [bus 02-02] [ 0.695078] pci 0000:00:1c.5: bridge window [io 0xf000-0x0000] (disabled) [ 0.695081] pci 0000:00:1c.5: bridge window [mem 0xfbe00000-0xfbefffff] [ 0.695086] pci 0000:00:1c.5: bridge window [mem 0xfff00000-0x000fffff pref] (disabled) [ 0.695115] pci 0000:01:03.0: [18ca:0020] type 0 class 0x000300 [ 0.695129] pci 0000:01:03.0: reg 10: [mem 0xf4000000-0xf7ffffff pref] [ 0.695137] pci 0000:01:03.0: reg 14: [mem 0xfbdc0000-0xfbdfffff] [ 0.695146] pci 0000:01:03.0: reg 18: [io 0xec00-0xec7f] [ 0.695188] pci 0000:01:03.0: supports D1 D2 [ 0.695223] pci 0000:00:1e.0: PCI bridge to [bus 01-01] (subtractive decode) [ 0.695227] pci 0000:00:1e.0: bridge window [io 0xe000-0xefff] [ 0.695230] pci 0000:00:1e.0: bridge window [mem 0xfbd00000-0xfbdfffff] [ 0.695234] pci 0000:00:1e.0: bridge window [mem 0xf4000000-0xf7ffffff 64bit pref] [ 0.695236] pci 0000:00:1e.0: bridge window [io 0x0000-0x0cf7] (subtractive decode) [ 0.695238] pci 0000:00:1e.0: bridge window [io 0x0d00-0xffff] (subtractive decode) [ 0.695240] pci 0000:00:1e.0: bridge window [mem 0x000a0000-0x000bffff] (subtractive decode) [ 0.695242] pci 0000:00:1e.0: bridge window [mem 0x000d0000-0x000dffff] (subtractive decode) [ 0.695244] pci 0000:00:1e.0: bridge window [mem 0xf0000000-0xffffffff] (subtractive decode) [ 0.695261] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0._PRT] [ 0.695329] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.P0P2._PRT] [ 0.695353] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.P0P1._PRT] [ 0.695407] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.P0P4._PRT] [ 0.695434] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.P0P8._PRT] [ 0.695463] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.P0P9._PRT] [ 0.695551] pci0000:00: Requesting ACPI _OSC control (0x1d) [ 0.695716] pci0000:00: ACPI _OSC control (0x19) granted [ 0.699362] ACPI: PCI Interrupt Link [LNKA] (IRQs 3 4 5 6 7 10 *11 12 14 15) [ 0.699402] ACPI: PCI Interrupt Link [LNKB] (IRQs 3 4 5 6 7 *10 11 12 14 15) [ 0.699438] ACPI: PCI Interrupt Link [LNKC] (IRQs 3 4 5 *6 7 10 11 12 14 15) [ 0.699473] ACPI: PCI Interrupt Link [LNKD] (IRQs 3 4 *5 6 7 10 11 12 14 15) [ 0.699508] ACPI: PCI Interrupt Link [LNKE] (IRQs 3 4 5 6 7 10 11 12 14 15) *0, disabled. [ 0.699544] ACPI: PCI Interrupt Link [LNKF] (IRQs 3 4 5 6 7 10 11 12 14 15) *0, disabled. [ 0.699580] ACPI: PCI Interrupt Link [LNKG] (IRQs 3 4 5 6 7 10 11 12 14 15) *0, disabled. [ 0.699619] ACPI: PCI Interrupt Link [LNKH] (IRQs 3 4 5 6 *7 10 11 12 14 15) [ 0.699710] vgaarb: device added: PCI:0000:01:03.0,decodes=io+mem,owns=io+mem,locks=none [ 0.699712] vgaarb: loaded [ 0.699859] SCSI subsystem initialized [ 0.699918] libata version 3.00 loaded. [ 0.700022] usbcore: registered new interface driver usbfs [ 0.700031] usbcore: registered new interface driver hub [ 0.700044] usbcore: registered new device driver usb [ 0.700063] wmi: Mapper loaded [ 0.700063] PCI: Using ACPI for IRQ routing [ 0.700063] PCI: pci_cache_line_size set to 64 bytes [ 0.700116] reserve RAM buffer: 000000000009fc00 - 000000000009ffff [ 0.700118] reserve RAM buffer: 00000000dff80000 - 00000000dfffffff [ 0.700198] NetLabel: Initializing [ 0.700200] NetLabel: domain hash size = 128 [ 0.700201] NetLabel: protocols = UNLABELED CIPSOv4 [ 0.700210] NetLabel: unlabeled traffic allowed by default [ 0.700237] HPET: 3 timers in total, 0 timers will be used for per-cpu timer [ 0.700242] hpet0: at MMIO 0xfed00000, IRQs 2, 8, 0 [ 0.700245] hpet0: 3 comparators, 64-bit 14.318180 MHz counter [ 0.720036] Switching to clocksource hpet [ 0.735705] AppArmor: AppArmor Filesystem Enabled [ 0.735734] pnp: PnP ACPI init [ 0.735748] ACPI: bus type pnp registered [ 0.735849] pnp 00:00: [bus 00-ff] [ 0.735851] pnp 00:00: [io 0x0cf8-0x0cff] [ 0.735853] pnp 00:00: [io 0x0000-0x0cf7 window] [ 0.735854] pnp 00:00: [io 0x0d00-0xffff window] [ 0.735856] pnp 00:00: [mem 0x000a0000-0x000bffff window] [ 0.735858] pnp 00:00: [mem 0x000d0000-0x000dffff window] [ 0.735859] pnp 00:00: [mem 0xe0000000-0xdfffffff window disabled] [ 0.735861] pnp 00:00: [mem 0xf0000000-0xffffffff window] [ 0.735911] pnp 00:00: Plug and Play ACPI device, IDs PNP0a08 PNP0a03 (active) [ 0.735919] pnp 00:01: [mem 0xfed14000-0xfed19fff] [ 0.735964] system 00:01: [mem 0xfed14000-0xfed19fff] has been reserved [ 0.735966] system 00:01: Plug and Play ACPI device, IDs PNP0c01 (active) [ 0.735994] pnp 00:02: [dma 4] [ 0.735995] pnp 00:02: [io 0x0000-0x000f] [ 0.735997] pnp 00:02: [io 0x0081-0x0083] [ 0.735998] pnp 00:02: [io 0x0087] [ 0.735999] pnp 00:02: [io 0x0089-0x008b] [ 0.736001] pnp 00:02: [io 0x008f] [ 0.736002] pnp 00:02: [io 0x00c0-0x00df] [ 0.736022] pnp 00:02: Plug and Play ACPI device, IDs PNP0200 (active) [ 0.736030] pnp 00:03: [io 0x0070-0x0071] [ 0.736040] pnp 00:03: [irq 8] [ 0.736062] pnp 00:03: Plug and Play ACPI device, IDs PNP0b00 (active) [ 0.736068] pnp 00:04: [io 0x0061] [ 0.736088] pnp 00:04: Plug and Play ACPI device, IDs PNP0800 (active) [ 0.736095] pnp 00:05: [io 0x00f0-0x00ff] [ 0.736099] pnp 00:05: [irq 13] [ 0.736120] pnp 00:05: Plug and Play ACPI device, IDs PNP0c04 (active) [ 0.736235] pnp 00:06: [io 0x0000-0xffffffffffffffff disabled] [ 0.736237] pnp 00:06: [io 0x0000-0xffffffffffffffff disabled] [ 0.736239] pnp 00:06: [io 0x0290-0x0297] [ 0.736271] system 00:06: [io 0x0290-0x0297] has been reserved [ 0.736274] system 00:06: Plug and Play ACPI device, IDs PNP0c02 (active) [ 0.736331] pnp 00:07: [io 0x0010-0x001f] [ 0.736333] pnp 00:07: [io 0x0022-0x003f] [ 0.736334] pnp 00:07: [io 0x0044-0x005f] [ 0.736335] pnp 00:07: [io 0x0062-0x0063] [ 0.736337] pnp 00:07: [io 0x0065-0x006f] [ 0.736338] pnp 00:07: [io 0x0072-0x007f] [ 0.736339] pnp 00:07: [io 0x0080] [ 0.736341] pnp 00:07: [io 0x0084-0x0086] [ 0.736342] pnp 00:07: [io 0x0088] [ 0.736343] pnp 00:07: [io 0x008c-0x008e] [ 0.736345] pnp 00:07: [io 0x0090-0x009f] [ 0.736348] pnp 00:07: [io 0x00a2-0x00bf] [ 0.736350] pnp 00:07: [io 0x00e0-0x00ef] [ 0.736351] pnp 00:07: [io 0x04d0-0x04d1] [ 0.736352] pnp 00:07: [io 0x0800-0x087f] [ 0.736354] pnp 00:07: [io 0x0000-0xffffffffffffffff disabled] [ 0.736355] pnp 00:07: [io 0x0480-0x04bf] [ 0.736357] pnp 00:07: [mem 0xfed1c000-0xfed1ffff] [ 0.736358] pnp 00:07: [mem 0xfed20000-0xfed3ffff] [ 0.736360] pnp 00:07: [mem 0xfed45000-0xfed89fff] [ 0.736405] system 00:07: [io 0x04d0-0x04d1] has been reserved [ 0.736407] system 00:07: [io 0x0800-0x087f] has been reserved [ 0.736409] system 00:07: [io 0x0480-0x04bf] has been reserved [ 0.736411] system 00:07: [mem 0xfed1c000-0xfed1ffff] has been reserved [ 0.736413] system 00:07: [mem 0xfed20000-0xfed3ffff] has been reserved [ 0.736415] system 00:07: [mem 0xfed45000-0xfed89fff] has been reserved [ 0.736418] system 00:07: Plug and Play ACPI device, IDs PNP0c02 (active) [ 0.736460] pnp 00:08: [mem 0xfed00000-0xfed003ff] [ 0.736484] pnp 00:08: Plug and Play ACPI device, IDs PNP0103 (active) [ 0.736520] pnp 00:09: [mem 0xffb00000-0xffbfffff] [ 0.736522] pnp 00:09: [mem 0xfff00000-0xffffffff] [ 0.736544] pnp 00:09: Plug and Play ACPI device, IDs INT0800 (active) [ 0.736576] pnp 00:0a: [mem 0xffc00000-0xffefffff] [ 0.736616] system 00:0a: [mem 0xffc00000-0xffefffff] has been reserved [ 0.736618] system 00:0a: Plug and Play ACPI device, IDs PNP0c02 (active) [ 0.736640] pnp 00:0b: [io 0x0060] [ 0.736642] pnp 00:0b: [io 0x0064] [ 0.736646] pnp 00:0b: [irq 1] [ 0.736674] pnp 00:0b: Plug and Play ACPI device, IDs PNP0303 PNP030b (active) [ 0.736714] pnp 00:0c: [irq 12] [ 0.736736] pnp 00:0c: Plug and Play ACPI device, IDs PNP0f03 PNP0f13 (active) [ 0.736927] pnp 00:0d: [irq 4] [ 0.736929] pnp 00:0d: [dma 0 disabled] [ 0.736931] pnp 00:0d: [io 0x03f8-0x03ff] [ 0.736981] pnp 00:0d: Plug and Play ACPI device, IDs PNP0501 (active) [ 0.737168] pnp 00:0e: [irq 3] [ 0.737170] pnp 00:0e: [dma 0 disabled] [ 0.737171] pnp 00:0e: [io 0x02f8-0x02ff] [ 0.737220] pnp 00:0e: Plug and Play ACPI device, IDs PNP0501 (active) [ 0.737279] pnp 00:0f: [mem 0xfec00000-0xfec00fff] [ 0.737281] pnp 00:0f: [mem 0xfee00000-0xfee00fff] [ 0.737315] system 00:0f: [mem 0xfec00000-0xfec00fff] could not be reserved [ 0.737317] system 00:0f: [mem 0xfee00000-0xfee00fff] has been reserved [ 0.737319] system 00:0f: Plug and Play ACPI device, IDs PNP0c02 (active) [ 0.737353] pnp 00:10: [mem 0xe0000000-0xefffffff] [ 0.737391] system 00:10: [mem 0xe0000000-0xefffffff] has been reserved [ 0.737394] system 00:10: Plug and Play ACPI device, IDs PNP0c02 (active) [ 0.737515] pnp 00:11: [mem 0x00000000-0x0009ffff] [ 0.737517] pnp 00:11: [mem 0x000c0000-0x000cffff] [ 0.737519] pnp 00:11: [mem 0x000e0000-0x000fffff] [ 0.737520] pnp 00:11: [mem 0x00100000-0xdfffffff] [ 0.737522] pnp 00:11: [mem 0x00000000-0xffffffffffffffff disabled] [ 0.737563] system 00:11: [mem 0x00000000-0x0009ffff] could not be reserved [ 0.737565] system 00:11: [mem 0x000c0000-0x000cffff] has been reserved [ 0.737567] system 00:11: [mem 0x000e0000-0x000fffff] could not be reserved [ 0.737569] system 00:11: [mem 0x00100000-0xdfffffff] could not be reserved [ 0.737572] system 00:11: Plug and Play ACPI device, IDs PNP0c01 (active) [ 0.737667] pnp: PnP ACPI: found 18 devices [ 0.737669] ACPI: ACPI bus type pnp unregistered [ 0.739808] Switched to NOHz mode on CPU #3 [ 0.739865] Switched to NOHz mode on CPU #2 [ 0.739904] Switched to NOHz mode on CPU #0 [ 0.739972] Switched to NOHz mode on CPU #1 [ 0.743451] pci 0000:00:1c.0: BAR 14: assigned [mem 0xf0000000-0xf01fffff] [ 0.743454] pci 0000:00:1c.0: BAR 15: assigned [mem 0xf0200000-0xf03fffff 64bit pref] [ 0.743457] pci 0000:00:1c.4: BAR 15: assigned [mem 0xf0400000-0xf05fffff 64bit pref] [ 0.743460] pci 0000:00:1c.5: BAR 15: assigned [mem 0xf0600000-0xf07fffff 64bit pref] [ 0.743462] pci 0000:00:1c.0: BAR 13: assigned [io 0x1000-0x1fff] [ 0.743464] pci 0000:00:1c.4: BAR 13: assigned [io 0x2000-0x2fff] [ 0.743466] pci 0000:00:1c.5: BAR 13: assigned [io 0x3000-0x3fff] [ 0.743468] pci 0000:00:01.0: PCI bridge to [bus 05-05] [ 0.743470] pci 0000:00:01.0: bridge window [io disabled] [ 0.743472] pci 0000:00:01.0: bridge window [mem disabled] [ 0.743475] pci 0000:00:01.0: bridge window [mem pref disabled] [ 0.743478] pci 0000:00:1c.0: PCI bridge to [bus 04-04] [ 0.743480] pci 0000:00:1c.0: bridge window [io 0x1000-0x1fff] [ 0.743484] pci 0000:00:1c.0: bridge window [mem 0xf0000000-0xf01fffff] [ 0.743487] pci 0000:00:1c.0: bridge window [mem 0xf0200000-0xf03fffff 64bit pref] [ 0.743492] pci 0000:00:1c.4: PCI bridge to [bus 03-03] [ 0.743494] pci 0000:00:1c.4: bridge window [io 0x2000-0x2fff] [ 0.743498] pci 0000:00:1c.4: bridge window [mem 0xfbf00000-0xfbffffff] [ 0.743501] pci 0000:00:1c.4: bridge window [mem 0xf0400000-0xf05fffff 64bit pref] [ 0.743505] pci 0000:00:1c.5: PCI bridge to [bus 02-02] [ 0.743508] pci 0000:00:1c.5: bridge window [io 0x3000-0x3fff] [ 0.743512] pci 0000:00:1c.5: bridge window [mem 0xfbe00000-0xfbefffff] [ 0.743515] pci 0000:00:1c.5: bridge window [mem 0xf0600000-0xf07fffff 64bit pref] [ 0.743521] pci 0000:00:1e.0: PCI bridge to [bus 01-01] [ 0.743523] pci 0000:00:1e.0: bridge window [io 0xe000-0xefff] [ 0.743527] pci 0000:00:1e.0: bridge window [mem 0xfbd00000-0xfbdfffff] [ 0.743530] pci 0000:00:1e.0: bridge window [mem 0xf4000000-0xf7ffffff 64bit pref] [ 0.743543] pci 0000:00:01.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16 [ 0.743546] pci 0000:00:01.0: setting latency timer to 64 [ 0.743550] pci 0000:00:1c.0: enabling device (0104 -> 0107) [ 0.743553] pci 0000:00:1c.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16 [ 0.743557] pci 0000:00:1c.0: setting latency timer to 64 [ 0.743561] pci 0000:00:1c.4: enabling device (0106 -> 0107) [ 0.743564] pci 0000:00:1c.4: PCI INT A -> GSI 16 (level, low) -> IRQ 16 [ 0.743566] pci 0000:00:1c.4: setting latency timer to 64 [ 0.743571] pci 0000:00:1c.5: enabling device (0106 -> 0107) [ 0.743575] pci 0000:00:1c.5: PCI INT B -> GSI 17 (level, low) -> IRQ 17 [ 0.743578] pci 0000:00:1c.5: setting latency timer to 64 [ 0.743583] pci 0000:00:1e.0: setting latency timer to 64 [ 0.743587] pci_bus 0000:00: resource 4 [io 0x0000-0x0cf7] [ 0.743588] pci_bus 0000:00: resource 5 [io 0x0d00-0xffff] [ 0.743590] pci_bus 0000:00: resource 6 [mem 0x000a0000-0x000bffff] [ 0.743592] pci_bus 0000:00: resource 7 [mem 0x000d0000-0x000dffff] [ 0.743593] pci_bus 0000:00: resource 8 [mem 0xf0000000-0xffffffff] [ 0.743595] pci_bus 0000:04: resource 0 [io 0x1000-0x1fff] [ 0.743597] pci_bus 0000:04: resource 1 [mem 0xf0000000-0xf01fffff] [ 0.743599] pci_bus 0000:04: resource 2 [mem 0xf0200000-0xf03fffff 64bit pref] [ 0.743601] pci_bus 0000:03: resource 0 [io 0x2000-0x2fff] [ 0.743602] pci_bus 0000:03: resource 1 [mem 0xfbf00000-0xfbffffff] [ 0.743604] pci_bus 0000:03: resource 2 [mem 0xf0400000-0xf05fffff 64bit pref] [ 0.743606] pci_bus 0000:02: resource 0 [io 0x3000-0x3fff] [ 0.743608] pci_bus 0000:02: resource 1 [mem 0xfbe00000-0xfbefffff] [ 0.743610] pci_bus 0000:02: resource 2 [mem 0xf0600000-0xf07fffff 64bit pref] [ 0.743611] pci_bus 0000:01: resource 0 [io 0xe000-0xefff] [ 0.743613] pci_bus 0000:01: resource 1 [mem 0xfbd00000-0xfbdfffff] [ 0.743615] pci_bus 0000:01: resource 2 [mem 0xf4000000-0xf7ffffff 64bit pref] [ 0.743617] pci_bus 0000:01: resource 4 [io 0x0000-0x0cf7] [ 0.743618] pci_bus 0000:01: resource 5 [io 0x0d00-0xffff] [ 0.743620] pci_bus 0000:01: resource 6 [mem 0x000a0000-0x000bffff] [ 0.743622] pci_bus 0000:01: resource 7 [mem 0x000d0000-0x000dffff] [ 0.743623] pci_bus 0000:01: resource 8 [mem 0xf0000000-0xffffffff] [ 0.743652] NET: Registered protocol family 2 [ 0.743840] IP route cache hash table entries: 262144 (order: 9, 2097152 bytes) [ 0.744953] TCP established hash table entries: 524288 (order: 11, 8388608 bytes) [ 0.747985] TCP bind hash table entries: 65536 (order: 8, 1048576 bytes) [ 0.748404] TCP: Hash tables configured (established 524288 bind 65536) [ 0.748406] TCP reno registered [ 0.748419] UDP hash table entries: 4096 (order: 5, 131072 bytes) [ 0.748483] UDP-Lite hash table entries: 4096 (order: 5, 131072 bytes) [ 0.748650] NET: Registered protocol family 1 [ 0.748755] pci 0000:01:03.0: Boot video device [ 0.748758] PCI: CLS 32 bytes, default 64 [ 0.748761] PCI-DMA: Using software bounce buffering for IO (SWIOTLB) [ 0.748763] Placing 64MB software IO TLB between ffff8800dbc00000 - ffff8800dfc00000 [ 0.748764] software IO TLB at phys 0xdbc00000 - 0xdfc00000 [ 0.749140] audit: initializing netlink socket (disabled) [ 0.749150] type=2000 audit(1305555401.740:1): initialized [ 0.759657] HugeTLB registered 2 MB page size, pre-allocated 0 pages [ 0.761103] VFS: Disk quotas dquot_6.5.2 [ 0.761145] Dquot-cache hash table entries: 512 (order 0, 4096 bytes) [ 0.761628] fuse init (API version 7.16) [ 0.761695] msgmni has been set to 15972 [ 0.761939] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 253) [ 0.761979] io scheduler noop registered [ 0.761981] io scheduler deadline registered (default) [ 0.762011] io scheduler cfq registered [ 0.762093] pcieport 0000:00:01.0: setting latency timer to 64 [ 0.762120] pcieport 0000:00:01.0: irq 40 for MSI/MSI-X [ 0.762161] pcieport 0000:00:1c.0: setting latency timer to 64 [ 0.762191] pcieport 0000:00:1c.0: irq 41 for MSI/MSI-X [ 0.762252] pcieport 0000:00:1c.4: setting latency timer to 64 [ 0.762282] pcieport 0000:00:1c.4: irq 42 for MSI/MSI-X [ 0.762341] pcieport 0000:00:1c.5: setting latency timer to 64 [ 0.762370] pcieport 0000:00:1c.5: irq 43 for MSI/MSI-X [ 0.762442] pci_hotplug: PCI Hot Plug PCI Core version: 0.5 [ 0.762488] pciehp 0000:00:1c.0:pcie04: HPC vendor_id 8086 device_id 27d0 ss_vid 1043 ss_did 819e [ 0.762516] pciehp 0000:00:1c.0:pcie04: service driver pciehp loaded [ 0.762525] pciehp 0000:00:1c.4:pcie04: HPC vendor_id 8086 device_id 27e0 ss_vid 1043 ss_did 819e [ 0.762543] pciehp 0000:00:1c.4:pcie04: service driver pciehp loaded [ 0.762551] pciehp 0000:00:1c.5:pcie04: HPC vendor_id 8086 device_id 27e2 ss_vid 1043 ss_did 819e [ 0.762574] pciehp 0000:00:1c.5:pcie04: service driver pciehp loaded [ 0.762580] pciehp: PCI Express Hot Plug Controller Driver version: 0.4 [ 0.762618] intel_idle: MWAIT substates: 0x22220 [ 0.762619] intel_idle: does not run on family 6 model 23 [ 0.762700] input: Power Button as /devices/LNXSYSTM:00/device:00/PNP0C0C:00/input/input0 [ 0.762706] ACPI: Power Button [PWRB] [ 0.762740] input: Power Button as /devices/LNXSYSTM:00/LNXPWRBN:00/input/input1 [ 0.762742] ACPI: Power Button [PWRF] [ 0.762873] ACPI: acpi_idle registered with cpuidle [ 0.764032] APEI: Can not request iomem region <00000000dffb20ea-00000000dffb20ec> for GARs. [ 0.764089] Serial: 8250/16550 driver, 32 ports, IRQ sharing enabled [ 0.784582] serial8250: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A [ 0.830039] Freeing initrd memory: 12776k freed [ 0.960469] serial8250: ttyS1 at I/O 0x2f8 (irq = 3) is a 16550A [ 1.011879] 00:0d: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A [ 1.032401] 00:0e: ttyS1 at I/O 0x2f8 (irq = 3) is a 16550A [ 1.032590] Linux agpgart interface v0.103 [ 1.033483] brd: module loaded [ 1.033887] loop: module loaded [ 1.033950] i2c-core: driver [adp5520] using legacy suspend method [ 1.033952] i2c-core: driver [adp5520] using legacy resume method [ 1.034028] ata_piix 0000:00:1f.1: version 2.13 [ 1.034042] ata_piix 0000:00:1f.1: PCI INT A -> GSI 18 (level, low) -> IRQ 18 [ 1.034068] ata_piix 0000:00:1f.1: setting latency timer to 64 [ 1.034359] scsi0 : ata_piix [ 1.034455] scsi1 : ata_piix [ 1.035153] ata1: PATA max UDMA/100 cmd 0x1f0 ctl 0x3f6 bmdma 0xffa0 irq 14 [ 1.035155] ata2: PATA max UDMA/100 cmd 0x170 ctl 0x376 bmdma 0xffa8 irq 15 [ 1.035176] ata_piix 0000:00:1f.2: PCI INT B -> GSI 19 (level, low) -> IRQ 19 [ 1.035181] ata_piix 0000:00:1f.2: MAP [ P0 P2 P1 P3 ] [ 1.035227] ata_piix 0000:00:1f.2: setting latency timer to 64 [ 1.035477] scsi2 : ata_piix [ 1.035556] scsi3 : ata_piix [ 1.036374] ata3: SATA max UDMA/133 cmd 0xdc00 ctl 0xd880 bmdma 0xd400 irq 19 [ 1.036376] ata4: SATA max UDMA/133 cmd 0xd800 ctl 0xd480 bmdma 0xd408 irq 19 [ 1.036628] Fixed MDIO Bus: probed [ 1.036649] PPP generic driver version 2.4.2 [ 1.036680] tun: Universal TUN/TAP device driver, 1.6 [ 1.036681] tun: (C) 1999-2004 Max Krasnyansky [ 1.036751] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver [ 1.036766] ehci_hcd 0000:00:1d.7: PCI INT A -> GSI 23 (level, low) -> IRQ 23 [ 1.036792] ehci_hcd 0000:00:1d.7: setting latency timer to 64 [ 1.036795] ehci_hcd 0000:00:1d.7: EHCI Host Controller [ 1.036825] ehci_hcd 0000:00:1d.7: new USB bus registered, assigned bus number 1 [ 1.036868] ehci_hcd 0000:00:1d.7: using broken periodic workaround [ 1.036877] ehci_hcd 0000:00:1d.7: debug port 1 [ 1.040763] ehci_hcd 0000:00:1d.7: cache line size of 32 is not supported [ 1.040775] ehci_hcd 0000:00:1d.7: irq 23, io mem 0xfbcff800 [ 1.060011] ehci_hcd 0000:00:1d.7: USB 2.0 started, EHCI 1.00 [ 1.060148] hub 1-0:1.0: USB hub found [ 1.060153] hub 1-0:1.0: 6 ports detected [ 1.060216] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver [ 1.060225] uhci_hcd: USB Universal Host Controller Interface driver [ 1.060261] uhci_hcd 0000:00:1d.0: PCI INT A -> GSI 23 (level, low) -> IRQ 23 [ 1.060265] uhci_hcd 0000:00:1d.0: setting latency timer to 64 [ 1.060268] uhci_hcd 0000:00:1d.0: UHCI Host Controller [ 1.060302] uhci_hcd 0000:00:1d.0: new USB bus registered, assigned bus number 2 [ 1.070034] uhci_hcd 0000:00:1d.0: irq 23, io base 0x0000cc00 [ 1.070152] hub 2-0:1.0: USB hub found [ 1.070157] hub 2-0:1.0: 2 ports detected [ 1.070214] uhci_hcd 0000:00:1d.1: PCI INT B -> GSI 19 (level, low) -> IRQ 19 [ 1.070219] uhci_hcd 0000:00:1d.1: setting latency timer to 64 [ 1.070221] uhci_hcd 0000:00:1d.1: UHCI Host Controller [ 1.070254] uhci_hcd 0000:00:1d.1: new USB bus registered, assigned bus number 3 [ 1.070290] uhci_hcd 0000:00:1d.1: irq 19, io base 0x0000d000 [ 1.070378] hub 3-0:1.0: USB hub found [ 1.070381] hub 3-0:1.0: 2 ports detected [ 1.070429] uhci_hcd 0000:00:1d.2: PCI INT C -> GSI 18 (level, low) -> IRQ 18 [ 1.070433] uhci_hcd 0000:00:1d.2: setting latency timer to 64 [ 1.070436] uhci_hcd 0000:00:1d.2: UHCI Host Controller [ 1.070461] uhci_hcd 0000:00:1d.2: new USB bus registered, assigned bus number 4 [ 1.070503] uhci_hcd 0000:00:1d.2: irq 18, io base 0x0000d080 [ 1.070588] hub 4-0:1.0: USB hub found [ 1.070591] hub 4-0:1.0: 2 ports detected [ 1.070700] i8042: PNP: PS/2 Controller [PNP0303:PS2K,PNP0f03:PS2M] at 0x60,0x64 irq 1,12 [ 1.073181] serio: i8042 KBD port at 0x60,0x64 irq 1 [ 1.073189] serio: i8042 AUX port at 0x60,0x64 irq 12 [ 1.073307] mousedev: PS/2 mouse device common for all mice [ 1.073408] rtc_cmos 00:03: RTC can wake from S4 [ 1.073517] rtc_cmos 00:03: rtc core: registered rtc_cmos as rtc0 [ 1.073539] rtc0: alarms up to one month, y3k, 114 bytes nvram, hpet irqs [ 1.073647] device-mapper: uevent: version 1.0.3 [ 1.073707] device-mapper: ioctl: 4.19.1-ioctl (2011-01-07) initialised: dm-devel@redhat.com [ 1.073816] device-mapper: multipath: version 1.2.0 loaded [ 1.073823] device-mapper: multipath round-robin: version 1.0.0 loaded [ 1.073981] cpuidle: using governor ladder [ 1.073987] cpuidle: using governor menu [ 1.074195] TCP cubic registered [ 1.074281] NET: Registered protocol family 10 [ 1.074651] NET: Registered protocol family 17 [ 1.074668] Registering the dns_resolver key type [ 1.075187] PM: Hibernation image not present or could not be loaded. [ 1.075200] registered taskstats version 1 [ 1.075398] Magic number: 11:399:283 [ 1.075518] rtc_cmos 00:03: setting system clock to 2011-05-16 14:16:42 UTC (1305555402) [ 1.075521] BIOS EDD facility v0.16 2004-Jun-25, 0 devices found [ 1.075522] EDD information not available. [ 1.099404] input: AT Translated Set 2 keyboard as /devices/platform/i8042/serio0/input/input2 [ 1.240329] ata3.00: ATA-8: WDC WD1503FYYS-02W0B0, 01.01D01, max UDMA/133 [ 1.240332] ata3.00: 2930277168 sectors, multi 16: LBA48 NCQ (depth 0/32) [ 1.240477] ata3.01: ATA-8: WDC WD1503FYYS-02W0B0, 01.01D01, max UDMA/133 [ 1.240480] ata3.01: 2930277168 sectors, multi 16: LBA48 NCQ (depth 0/32) [ 1.260350] ata3.00: configured for UDMA/133 [ 1.280237] ata3.01: configured for UDMA/133 [ 1.280343] scsi 2:0:0:0: Direct-Access ATA WDC WD1503FYYS-0 01.0 PQ: 0 ANSI: 5 [ 1.280489] sd 2:0:0:0: Attached scsi generic sg0 type 0 [ 1.280493] sd 2:0:0:0: [sda] 2930277168 512-byte logical blocks: (1.50 TB/1.36 TiB) [ 1.280563] sd 2:0:0:0: [sda] Write Protect is off [ 1.280566] sd 2:0:0:0: [sda] Mode Sense: 00 3a 00 00 [ 1.280604] scsi 2:0:1:0: Direct-Access ATA WDC WD1503FYYS-0 01.0 PQ: 0 ANSI: 5 [ 1.280609] sd 2:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA [ 1.280720] sd 2:0:1:0: [sdb] 2930277168 512-byte logical blocks: (1.50 TB/1.36 TiB) [ 1.280724] sd 2:0:1:0: Attached scsi generic sg1 type 0 [ 1.280789] sd 2:0:1:0: [sdb] Write Protect is off [ 1.280791] sd 2:0:1:0: [sdb] Mode Sense: 00 3a 00 00 [ 1.285048] sd 2:0:1:0: [sdb] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA [ 1.306064] sda: sda1 sda2 < sda5 > sda3 [ 1.319105] sd 2:0:0:0: [sda] Attached SCSI disk [ 1.319107] sdb: sdb1 [ 1.319297] sd 2:0:1:0: [sdb] Attached SCSI disk [ 1.320580] Freeing unused kernel memory: 880k freed [ 1.320789] Write protecting the kernel read-only data: 10240k [ 1.321207] Freeing unused kernel memory: 104k freed [ 1.325137] Freeing unused kernel memory: 1416k freed [ 1.340924] <30>udev[77]: starting version 167 [ 1.357836] Btrfs loaded [ 1.371852] tg3.c:v3.116 (December 3, 2010) [ 1.371868] tg3 0000:03:00.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16 [ 1.371877] tg3 0000:03:00.0: setting latency timer to 64 [ 1.380033] usb 1-4: new high speed USB device using ehci_hcd and address 2 [ 1.536646] Initializing USB Mass Storage driver... [ 1.536785] scsi4 : usb-storage 1-4:1.0 [ 1.536892] usbcore: registered new interface driver usb-storage [ 1.536893] USB Mass Storage support registered. [ 1.565803] tg3 0000:03:00.0: eth0: Tigon3 [partno(BCM95721) rev 4201] (PCI Express) MAC address bc:ae:c5:27:b1:6f [ 1.565806] tg3 0000:03:00.0: eth0: attached PHY is 5750 (10/100/1000Base-T Ethernet) (WireSpeed[1]) [ 1.565809] tg3 0000:03:00.0: eth0: RXcsums[1] LinkChgREG[0] MIirq[0] ASF[0] TSOcap[1] [ 1.565811] tg3 0000:03:00.0: eth0: dma_rwctrl[76180000] dma_mask[64-bit] [ 1.565828] tg3 0000:02:00.0: PCI INT A -> GSI 17 (level, low) -> IRQ 17 [ 1.565836] tg3 0000:02:00.0: setting latency timer to 64 [ 1.601240] device fsid 2423f112fb37678-686264745544bfb4 devid 2 transid 5185 /dev/sdb1 [ 1.656312] device fsid 2423f112fb37678-686264745544bfb4 devid 1 transid 5185 /dev/sda3 [ 1.725936] tg3 0000:02:00.0: eth1: Tigon3 [partno(BCM95721) rev 4201] (PCI Express) MAC address bc:ae:c5:27:b2:37 [ 1.725939] tg3 0000:02:00.0: eth1: attached PHY is 5750 (10/100/1000Base-T Ethernet) (WireSpeed[1]) [ 1.725942] tg3 0000:02:00.0: eth1: RXcsums[1] LinkChgREG[0] MIirq[0] ASF[0] TSOcap[1] [ 1.725944] tg3 0000:02:00.0: eth1: dma_rwctrl[76180000] dma_mask[64-bit] [ 1.737211] device fsid 2423f112fb37678-686264745544bfb4 devid 1 transid 5185 /dev/disk/by-uuid/7876b32f-113f-4202-b4bf-445574646268 [ 1.750051] Refined TSC clocksource calibration: 2833.010 MHz. [ 1.750055] Switching to clocksource tsc [ 2.530853] scsi 4:0:0:0: CD-ROM ASUS SBC-06D1S-U A301 PQ: 0 ANSI: 0 [ 2.535586] sr0: scsi3-mmc drive: 24x/24x writer dvd-ram cd/rw xa/form2 cdda tray [ 2.535589] cdrom: Uniform CD-ROM driver Revision: 3.20 [ 2.535691] sr 4:0:0:0: Attached scsi CD-ROM sr0 [ 2.535739] sr 4:0:0:0: Attached scsi generic sg2 type 5 [ 3.143783] <30>udev[324]: starting version 167 [ 3.172131] lp: driver loaded but no devices found [ 3.186355] EDAC MC: Ver: 2.1.0 Apr 11 2011 [ 3.211004] Adding 8387580k swap on /dev/sda5. Priority:-1 extents:1 across:8387580k [ 3.213599] EDAC MC0: Giving out device to 'i3200_edac' 'i3200': DEV 0000:00:00.0 [ 3.218559] intel_rng: FWH not detected [ 3.218910] xgifb: module is from the staging directory, the quality is unknown, you have been warned. [ 3.220374] [ 3.220375] XGIfb_init_module [ 3.220376] XGIfb: Mode 'none' not supported anymore. Using default. [ 3.220382] XGIfb: Options (null) [ 3.220407] XGIfb: Relocate IO address: ec00 [00000000] [ 3.220421] XGIfb:chipid = 31 [ 3.220424] No ROM [ 3.220424] XGIfb: Video ROM not found [ 3.220430] XGIfb: SR14=51 DramSzie 2000000 ChannelNum 1 [ 3.225726] XGIfb: Framebuffer at 0xf4000000, mapped to 0xffffc90011a00000, size 32768k [ 3.225728] XGIfb: MMIO at 0xfbdc0000, mapped to 0xffffc90013a80000, size 256k [ 3.225729] XGIfb: XGIInitNew() ...12345 [ 3.225736] BUG: unable to handle kernel NULL pointer dereference at 0000000000000065 [ 3.225741] IP: [] ReadVBIOSTablData+0x29/0x410 [xgifb] [ 3.225751] PGD 20b5aa067 PUD 20b5a9067 PMD 0 [ 3.225756] Oops: 0000 [#1] SMP [ 3.225759] last sysfs file: /sys/devices/virtual/block/loop4/removable [ 3.225763] CPU 0 [ 3.225764] Modules linked in: xgifb(C+) intel_rng(-) hed i3200_edac edac_core lp parport usb_storage tg3 btrfs zlib_deflate libcrc32c [ 3.225775] [ 3.225777] Pid: 414, comm: modprobe Tainted: G C 2.6.38-8-server #42-Ubuntu ASUS RS100-E5/PI2/P5BV-M/RS100-E5 [ 3.225784] RIP: 0010:[] [] ReadVBIOSTablData+0x29/0x410 [xgifb] [ 3.225793] RSP: 0018:ffff88020c81f8c8 EFLAGS: 00010246 [ 3.225795] RAX: 0000000000000000 RBX: ffffffffa012eb80 RCX: 000000000003ffff [ 3.225798] RDX: 0000000000000000 RSI: ffff88020c81f8d8 RDI: 0000000000000031 [ 3.225802] RBP: ffff88020c81f8c8 R08: 0000000000000000 R09: 000000000000c0c3 [ 3.225805] R10: 0000000000000000 R11: 0000000000000003 R12: 00000000fffffffb [ 3.225808] R13: ffff88020e9b6090 R14: ffff88020e9b6200 R15: 000000000040506a [ 3.225811] FS: 00007fddc20b9720(0000) GS:ffff8800dfc00000(0000) knlGS:0000000000000000 [ 3.225815] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 [ 3.225819] CR2: 0000000000000065 CR3: 000000020b5a0000 CR4: 00000000000406f0 [ 3.225822] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 [ 3.225826] DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400 [ 3.225829] Process modprobe (pid: 414, threadinfo ffff88020c81e000, task ffff88020cde96e0) [ 3.225833] Stack: [ 3.225835] ffff88020c81fca8 ffffffffa01132da ffff88021fffcc00 000000000000ec44 [ 3.225840] 000000000000ec54 000000000000ec40 000000000000ec4e 000000000000ec42 [ 3.225845] ffff880200000041 000000000000ec4a 000000000000ec46 000000000000ec47 [ 3.225851] Call Trace: [ 3.225857] [] XGIInitNew+0x1ea/0xaa0 [xgifb] [ 3.225864] [] ? build_zonelists+0x1f0/0x290 [ 3.225869] [] ? put_dec+0x59/0x60 [ 3.225873] [] ? vsnprintf+0x35e/0x620 [ 3.225881] [] xgifb_probe+0x716/0x1051 [xgifb] [ 3.225885] [] local_pci_probe+0x5f/0xd0 [ 3.225889] [] pci_device_probe+0x129/0x130 [ 3.225895] [] ? driver_sysfs_add+0x7a/0xb0 [ 3.225898] [] really_probe+0x68/0x190 [ 3.225902] [] driver_probe_device+0x45/0x70 [ 3.225906] [] __driver_attach+0xab/0xb0 [ 3.225910] [] ? __driver_attach+0x0/0xb0 [ 3.225914] [] bus_for_each_dev+0x5e/0x90 [ 3.225918] [] driver_attach+0x1e/0x20 [ 3.225921] [] bus_add_driver+0xc5/0x280 [ 3.225927] [] ? xgifb_init_module+0x0/0xb55 [xgifb] [ 3.225931] [] driver_register+0x76/0x140 [ 3.225937] [] ? xgifb_init_module+0x0/0xb55 [xgifb] [ 3.225941] [] __pci_register_driver+0x56/0xd0 [ 3.225946] [] ? xgifb_init_module+0x0/0xb55 [xgifb] [ 3.225952] [] xgifb_init_module+0x7f/0xb55 [xgifb] [ 3.225958] [] do_one_initcall+0x45/0x190 [ 3.225964] [] sys_init_module+0xfb/0x250 [ 3.225968] [] system_call_fastpath+0x16/0x1b [ 3.225971] Code: 00 00 55 48 89 e5 0f 1f 44 00 00 48 8b 96 f0 00 00 00 40 80 ff 31 74 0a c9 c3 0f 1f 84 00 00 00 00 00 66 c7 86 b8 00 00 00 00 00 <0f> b6 42 65 a8 01 74 e5 66 c7 86 b8 00 00 00 01 00 0f b6 8a 16 [ 3.226002] RIP [] ReadVBIOSTablData+0x29/0x410 [xgifb] [ 3.226009] RSP [ 3.226012] CR2: 0000000000000065 [ 3.226015] ---[ end trace 6a41527bece9f972 ]--- [ 3.227554] ioremap error for 0xdffb2000-0xdffb3000, requested 0x10, got 0x0 [ 3.227561] GHES: probe of GHES.0 failed with error -5 [ 3.227571] ioremap error for 0xdffb2000-0xdffb3000, requested 0x10, got 0x0 [ 3.237165] GHES: probe of GHES.1 failed with error -5 [ 3.251498] leds_ss4200: no LED devices found [ 3.673732] type=1400 audit(1305555405.086:2): apparmor="STATUS" operation="profile_load" name="/sbin/dhclient" pid=528 comm="apparmor_parser" [ 3.673745] type=1400 audit(1305555405.086:3): apparmor="STATUS" operation="profile_replace" name="/sbin/dhclient" pid=527 comm="apparmor_parser" [ 3.674409] type=1400 audit(1305555405.086:4): apparmor="STATUS" operation="profile_load" name="/usr/lib/NetworkManager/nm-dhcp-client.action" pid=528 comm="apparmor_parser" [ 3.674418] type=1400 audit(1305555405.086:5): apparmor="STATUS" operation="profile_replace" name="/usr/lib/NetworkManager/nm-dhcp-client.action" pid=527 comm="apparmor_parser" [ 3.674836] type=1400 audit(1305555405.086:6): apparmor="STATUS" operation="profile_load" name="/usr/lib/connman/scripts/dhclient-script" pid=528 comm="apparmor_parser" [ 3.674849] type=1400 audit(1305555405.086:7): apparmor="STATUS" operation="profile_replace" name="/usr/lib/connman/scripts/dhclient-script" pid=527 comm="apparmor_parser" [ 3.675423] type=1400 audit(1305555405.086:8): apparmor="STATUS" operation="profile_replace" name="/sbin/dhclient" pid=526 comm="apparmor_parser" [ 3.676095] type=1400 audit(1305555405.086:9): apparmor="STATUS" operation="profile_replace" name="/usr/lib/NetworkManager/nm-dhcp-client.action" pid=526 comm="apparmor_parser" [ 3.676525] type=1400 audit(1305555405.086:10): apparmor="STATUS" operation="profile_replace" name="/usr/lib/connman/scripts/dhclient-script" pid=526 comm="apparmor_parser" [ 3.865656] input: ImPS/2 Generic Wheel Mouse as /devices/platform/i8042/serio1/input/input3 [ 4.004531] tg3 0000:03:00.0: irq 44 for MSI/MSI-X [ 4.175914] ADDRCONF(NETDEV_UP): eth0: link is not ready [ 4.210041] EDAC MC0: UE page 0x0, offset 0x0, grain 1073741824, row 2, labels ":": i3200 UE [ 4.210051] EDAC MC0: UE page 0x0, offset 0x0, grain 1073741824, row 4, labels ":": i3200 UE [ 4.407207] vesafb: cannot reserve video memory at 0xf4000000 [ 4.407715] vesafb: framebuffer at 0xf4000000, mapped to 0xffffc90013b00000, using 3072k, total 3072k [ 4.407720] vesafb: mode is 1024x768x32, linelength=4096, pages=0 [ 4.407723] vesafb: scrolling: redraw [ 4.407726] vesafb: Truecolor: size=8:8:8:8, shift=24:16:8:0 [ 4.407850] Console: switching to colour frame buffer device 128x48 [ 4.528749] fb0: VESA VGA frame buffer device [ 4.551117] device fsid 2423f112fb37678-686264745544bfb4 devid 2 transid 5185 /dev/sdb1 [ 4.553004] device fsid 2423f112fb37678-686264745544bfb4 devid 2 transid 5185 /dev/sdb1 [ 4.581489] device fsid 2423f112fb37678-686264745544bfb4 devid 1 transid 5185 /dev/sda3 [ 4.583319] device fsid 2423f112fb37678-686264745544bfb4 devid 1 transid 5185 /dev/sda3 [ 5.210028] EDAC MC0: UE page 0x0, offset 0x0, grain 1073741824, row 0, labels ":": i3200 UE [ 5.211919] EDAC MC0: UE page 0x0, offset 0x0, grain 1073741824, row 4, labels ":": i3200 UE [ 6.210048] EDAC MC0: UE page 0x0, offset 0x0, grain 1073741824, row 0, labels ":": i3200 UE [ 6.211923] EDAC MC0: UE page 0x0, offset 0x0, grain 1073741824, row 4, labels ":": i3200 UE [ 7.070109] tg3 0000:03:00.0: eth0: Link is up at 1000 Mbps, full duplex [ 7.071598] tg3 0000:03:00.0: eth0: Flow control is on for TX and on for RX [ 7.073806] ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready [ 7.210022] EDAC MC0: UE page 0x0, offset 0x0, grain 1073741824, row 0, labels ":": i3200 UE [ 7.210026] EDAC MC0: UE page 0x0, offset 0x0, grain 1073741824, row 4, labels ":": i3200 UE [ 7.230313] EXT4-fs (sda1): mounted filesystem with ordered data mode. Opts: (null) [ 7.236558] device fsid 2423f112fb37678-686264745544bfb4 devid 2 transid 5185 /dev/sdb1 [ 7.486411] type=1400 audit(1305555408.896:11): apparmor="STATUS" operation="profile_replace" name="/sbin/dhclient" pid=698 comm="apparmor_parser" [ 7.490021] type=1400 audit(1305555408.906:12): apparmor="STATUS" operation="profile_replace" name="/usr/lib/NetworkManager/nm-dhcp-client.action" pid=698 comm="apparmor_parser" [ 7.493981] type=1400 audit(1305555408.906:13): apparmor="STATUS" operation="profile_replace" name="/usr/lib/connman/scripts/dhclient-script" pid=698 comm="apparmor_parser" [ 7.523807] type=1400 audit(1305555408.936:14): apparmor="STATUS" operation="profile_load" name="/usr/sbin/tcpdump" pid=699 comm="apparmor_parser" Bug: 798795 [ 0.000000] Initializing cgroup subsys cpuset [ 0.000000] Initializing cgroup subsys cpu [ 0.000000] Linux version 2.6.38-8-generic (buildd@allspice) (gcc version 4.5.2 (Ubuntu/Linaro 4.5.2-8ubuntu3) ) #42-Ubuntu SMP Mon Apr 11 03:31:24 UTC 2011 (Ubuntu 2.6.38-8.42-generic 2.6.38.2) [ 0.000000] Command line: BOOT_IMAGE=/boot/vmlinuz-2.6.38-8-generic root=UUID=AC42C9A542C9749C loop=/ubuntu/disks/root.disk ro quiet splash [ 0.000000] BIOS-provided physical RAM map: [ 0.000000] BIOS-e820: 0000000000000000 - 000000000009d000 (usable) [ 0.000000] BIOS-e820: 000000000009d000 - 00000000000a0000 (reserved) [ 0.000000] BIOS-e820: 00000000000e0000 - 0000000000100000 (reserved) [ 0.000000] BIOS-e820: 0000000000100000 - 00000000bf682000 (usable) [ 0.000000] BIOS-e820: 00000000bf682000 - 00000000bf6bf000 (reserved) [ 0.000000] BIOS-e820: 00000000bf6bf000 - 00000000bf75d000 (usable) [ 0.000000] BIOS-e820: 00000000bf75d000 - 00000000bf7bf000 (ACPI NVS) [ 0.000000] BIOS-e820: 00000000bf7bf000 - 00000000bf7e1000 (usable) [ 0.000000] BIOS-e820: 00000000bf7e1000 - 00000000bf7ff000 (ACPI data) [ 0.000000] BIOS-e820: 00000000bf7ff000 - 00000000bf800000 (usable) [ 0.000000] BIOS-e820: 00000000bf800000 - 00000000c0000000 (reserved) [ 0.000000] BIOS-e820: 00000000e0000000 - 00000000f0000000 (reserved) [ 0.000000] BIOS-e820: 00000000feb00000 - 00000000feb04000 (reserved) [ 0.000000] BIOS-e820: 00000000fec00000 - 00000000fec01000 (reserved) [ 0.000000] BIOS-e820: 00000000fed10000 - 00000000fed14000 (reserved) [ 0.000000] BIOS-e820: 00000000fed18000 - 00000000fed1a000 (reserved) [ 0.000000] BIOS-e820: 00000000fed1b000 - 00000000fed20000 (reserved) [ 0.000000] BIOS-e820: 00000000fee00000 - 00000000fee01000 (reserved) [ 0.000000] BIOS-e820: 00000000ffe80000 - 0000000100000000 (reserved) [ 0.000000] BIOS-e820: 0000000100000000 - 0000000140000000 (usable) [ 0.000000] NX (Execute Disable) protection: active [ 0.000000] DMI 2.6 present. [ 0.000000] DMI: Hewlett-Packard HP Pavilion dv6 Notebook PC/3659, BIOS F.17 02/06/2010 [ 0.000000] e820 update range: 0000000000000000 - 0000000000010000 (usable) ==> (reserved) [ 0.000000] e820 remove range: 00000000000a0000 - 0000000000100000 (usable) [ 0.000000] No AGP bridge found [ 0.000000] last_pfn = 0x140000 max_arch_pfn = 0x400000000 [ 0.000000] MTRR default type: uncachable [ 0.000000] MTRR fixed ranges enabled: [ 0.000000] 00000-9FFFF write-back [ 0.000000] A0000-BFFFF uncachable [ 0.000000] C0000-EFFFF write-through [ 0.000000] F0000-FFFFF write-combining [ 0.000000] MTRR variable ranges enabled: [ 0.000000] 0 base 000000000 mask F80000000 write-back [ 0.000000] 1 base 0FFE00000 mask FFFE00000 write-protect [ 0.000000] 2 base 080000000 mask FC0000000 write-back [ 0.000000] 3 base 0BF800000 mask FFF800000 uncachable [ 0.000000] 4 base 100000000 mask FC0000000 write-back [ 0.000000] 5 disabled [ 0.000000] 6 disabled [ 0.000000] 7 disabled [ 0.000000] x86 PAT enabled: cpu 0, old 0x7040600070406, new 0x7010600070106 [ 0.000000] last_pfn = 0xbf800 max_arch_pfn = 0x400000000 [ 0.000000] initial memory mapped : 0 - 20000000 [ 0.000000] init_memory_mapping: 0000000000000000-00000000bf800000 [ 0.000000] 0000000000 - 00bf800000 page 2M [ 0.000000] kernel direct mapping tables up to bf800000 @ 1fffc000-20000000 [ 0.000000] init_memory_mapping: 0000000100000000-0000000140000000 [ 0.000000] 0100000000 - 0140000000 page 2M [ 0.000000] kernel direct mapping tables up to 140000000 @ bf7db000-bf7e1000 [ 0.000000] RAMDISK: 366e4000 - 3736a000 [ 0.000000] ACPI: RSDP 00000000000fe020 00024 (v02 HPQOEM) [ 0.000000] ACPI: XSDT 00000000bf7fe120 00074 (v01 HPQOEM SLIC-MPC 00000001 01000013) [ 0.000000] ACPI: FACP 00000000bf7fc000 000F4 (v04 HPQOEM SLIC-MPC 00000001 MSFT 01000013) [ 0.000000] ACPI: DSDT 00000000bf7eb000 0DC73 (v02 HPQOEM SLIC-MPC 00000001 MSFT 01000013) [ 0.000000] ACPI: FACS 00000000bf76f000 00040 [ 0.000000] ACPI: ASF! 00000000bf7fd000 000A5 (v32 HPQOEM SLIC-MPC 00000001 MSFT 01000013) [ 0.000000] ACPI: HPET 00000000bf7fb000 00038 (v01 HPQOEM SLIC-MPC 00000001 MSFT 01000013) [ 0.000000] ACPI: APIC 00000000bf7fa000 0008C (v02 HPQOEM SLIC-MPC 00000001 MSFT 01000013) [ 0.000000] ACPI: MCFG 00000000bf7f9000 0003C (v01 HPQOEM SLIC-MPC 00000001 MSFT 01000013) [ 0.000000] ACPI: SLIC 00000000bf7ea000 00176 (v01 HPQOEM SLIC-MPC 00000001 SLIC 000F4240) [ 0.000000] ACPI: BOOT 00000000bf7e7000 00028 (v01 HPQOEM SLIC-MPC 00000001 MSFT 01000013) [ 0.000000] ACPI: ASPT 00000000bf7e3000 00034 (v04 HPQOEM SLIC-MPC 00000001 MSFT 01000013) [ 0.000000] ACPI: WDRT 00000000bf7e2000 00047 (v01 HPQOEM SLIC-MPC 00000000 MSFT 01000013) [ 0.000000] ACPI: SSDT 00000000bf7e1000 009F1 (v01 PmRef CpuPm 00003000 INTL 20051117) [ 0.000000] ACPI: Local APIC address 0xfee00000 [ 0.000000] No NUMA configuration found [ 0.000000] Faking a node at 0000000000000000-0000000140000000 [ 0.000000] Initmem setup node 0 0000000000000000-0000000140000000 [ 0.000000] NODE_DATA [000000013fffb000 - 000000013fffffff] [ 0.000000] [ffffea0000000000-ffffea00045fffff] PMD -> [ffff88013be00000-ffff88013f5fffff] on node 0 [ 0.000000] Zone PFN ranges: [ 0.000000] DMA 0x00000010 -> 0x00001000 [ 0.000000] DMA32 0x00001000 -> 0x00100000 [ 0.000000] Normal 0x00100000 -> 0x00140000 [ 0.000000] Movable zone start PFN for each node [ 0.000000] early_node_map[6] active PFN ranges [ 0.000000] 0: 0x00000010 -> 0x0000009d [ 0.000000] 0: 0x00000100 -> 0x000bf682 [ 0.000000] 0: 0x000bf6bf -> 0x000bf75d [ 0.000000] 0: 0x000bf7bf -> 0x000bf7e1 [ 0.000000] 0: 0x000bf7ff -> 0x000bf800 [ 0.000000] 0: 0x00100000 -> 0x00140000 [ 0.000000] On node 0 totalpages: 1046224 [ 0.000000] DMA zone: 56 pages used for memmap [ 0.000000] DMA zone: 6 pages reserved [ 0.000000] DMA zone: 3919 pages, LIFO batch:0 [ 0.000000] DMA32 zone: 14280 pages used for memmap [ 0.000000] DMA32 zone: 765819 pages, LIFO batch:31 [ 0.000000] Normal zone: 3584 pages used for memmap [ 0.000000] Normal zone: 258560 pages, LIFO batch:31 [ 0.000000] ACPI: PM-Timer IO Port: 0x408 [ 0.000000] ACPI: Local APIC address 0xfee00000 [ 0.000000] ACPI: LAPIC (acpi_id[0x01] lapic_id[0x00] enabled) [ 0.000000] ACPI: LAPIC (acpi_id[0x02] lapic_id[0x02] enabled) [ 0.000000] ACPI: LAPIC (acpi_id[0x03] lapic_id[0x04] enabled) [ 0.000000] ACPI: LAPIC (acpi_id[0x04] lapic_id[0x06] enabled) [ 0.000000] ACPI: LAPIC (acpi_id[0x05] lapic_id[0x01] enabled) [ 0.000000] ACPI: LAPIC (acpi_id[0x06] lapic_id[0x03] enabled) [ 0.000000] ACPI: LAPIC (acpi_id[0x07] lapic_id[0x05] enabled) [ 0.000000] ACPI: LAPIC (acpi_id[0x08] lapic_id[0x07] enabled) [ 0.000000] ACPI: IOAPIC (id[0x02] address[0xfec00000] gsi_base[0]) [ 0.000000] IOAPIC[0]: apic_id 2, version 32, address 0xfec00000, GSI 0-23 [ 0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 0 global_irq 2 dfl dfl) [ 0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 9 global_irq 9 high level) [ 0.000000] ACPI: IRQ0 used by override. [ 0.000000] ACPI: IRQ2 used by override. [ 0.000000] ACPI: IRQ9 used by override. [ 0.000000] Using ACPI (MADT) for SMP configuration information [ 0.000000] ACPI: HPET id: 0x8086a201 base: 0xfed00000 [ 0.000000] SMP: Allowing 8 CPUs, 0 hotplug CPUs [ 0.000000] nr_irqs_gsi: 40 [ 0.000000] PM: Registered nosave memory: 000000000009d000 - 00000000000a0000 [ 0.000000] PM: Registered nosave memory: 00000000000a0000 - 00000000000e0000 [ 0.000000] PM: Registered nosave memory: 00000000000e0000 - 0000000000100000 [ 0.000000] PM: Registered nosave memory: 00000000bf682000 - 00000000bf6bf000 [ 0.000000] PM: Registered nosave memory: 00000000bf75d000 - 00000000bf7bf000 [ 0.000000] PM: Registered nosave memory: 00000000bf7e1000 - 00000000bf7ff000 [ 0.000000] PM: Registered nosave memory: 00000000bf800000 - 00000000c0000000 [ 0.000000] PM: Registered nosave memory: 00000000c0000000 - 00000000e0000000 [ 0.000000] PM: Registered nosave memory: 00000000e0000000 - 00000000f0000000 [ 0.000000] PM: Registered nosave memory: 00000000f0000000 - 00000000feb00000 [ 0.000000] PM: Registered nosave memory: 00000000feb00000 - 00000000feb04000 [ 0.000000] PM: Registered nosave memory: 00000000feb04000 - 00000000fec00000 [ 0.000000] PM: Registered nosave memory: 00000000fec00000 - 00000000fec01000 [ 0.000000] PM: Registered nosave memory: 00000000fec01000 - 00000000fed10000 [ 0.000000] PM: Registered nosave memory: 00000000fed10000 - 00000000fed14000 [ 0.000000] PM: Registered nosave memory: 00000000fed14000 - 00000000fed18000 [ 0.000000] PM: Registered nosave memory: 00000000fed18000 - 00000000fed1a000 [ 0.000000] PM: Registered nosave memory: 00000000fed1a000 - 00000000fed1b000 [ 0.000000] PM: Registered nosave memory: 00000000fed1b000 - 00000000fed20000 [ 0.000000] PM: Registered nosave memory: 00000000fed20000 - 00000000fee00000 [ 0.000000] PM: Registered nosave memory: 00000000fee00000 - 00000000fee01000 [ 0.000000] PM: Registered nosave memory: 00000000fee01000 - 00000000ffe80000 [ 0.000000] PM: Registered nosave memory: 00000000ffe80000 - 0000000100000000 [ 0.000000] Allocating PCI resources starting at c0000000 (gap: c0000000:20000000) [ 0.000000] Booting paravirtualized kernel on bare hardware [ 0.000000] setup_percpu: NR_CPUS:256 nr_cpumask_bits:256 nr_cpu_ids:8 nr_node_ids:1 [ 0.000000] PERCPU: Embedded 28 pages/cpu @ffff8800bf400000 s84416 r8192 d22080 u262144 [ 0.000000] pcpu-alloc: s84416 r8192 d22080 u262144 alloc=1*2097152 [ 0.000000] pcpu-alloc: [0] 0 1 2 3 4 5 6 7 [ 0.000000] Built 1 zonelists in Node order, mobility grouping on. Total pages: 1028298 [ 0.000000] Policy zone: Normal [ 0.000000] Kernel command line: BOOT_IMAGE=/boot/vmlinuz-2.6.38-8-generic root=UUID=AC42C9A542C9749C loop=/ubuntu/disks/root.disk ro quiet splash [ 0.000000] PID hash table entries: 4096 (order: 3, 32768 bytes) [ 0.000000] Checking aperture... [ 0.000000] No AGP bridge found [ 0.000000] Calgary: detecting Calgary via BIOS EBDA area [ 0.000000] Calgary: Unable to locate Rio Grande table in EBDA - bailing! [ 0.000000] Memory: 4034328k/5242880k available (5940k kernel code, 1057984k absent, 150568k reserved, 5017k data, 956k init) [ 0.000000] SLUB: Genslabs=15, HWalign=64, Order=0-3, MinObjects=0, CPUs=8, Nodes=1 [ 0.000000] Hierarchical RCU implementation. [ 0.000000] RCU dyntick-idle grace-period acceleration is enabled. [ 0.000000] RCU-based detection of stalled CPUs is disabled. [ 0.000000] NR_IRQS:16640 nr_irqs:744 16 [ 0.000000] Extended CMOS year: 2000 [ 0.000000] Console: colour VGA+ 80x25 [ 0.000000] console [tty0] enabled [ 0.000000] allocated 41943040 bytes of page_cgroup [ 0.000000] please try 'cgroup_disable=memory' option if you don't want memory cgroups [ 0.000000] hpet clockevent registered [ 0.000000] Fast TSC calibration using PIT [ 0.010000] Detected 1596.094 MHz processor. [ 0.000003] Calibrating delay loop (skipped), value calculated using timer frequency.. 3192.18 BogoMIPS (lpj=15960940) [ 0.000008] pid_max: default: 32768 minimum: 301 [ 0.000034] Security Framework initialized [ 0.000049] AppArmor: AppArmor initialized [ 0.000051] Yama: becoming mindful. [ 0.000540] Dentry cache hash table entries: 524288 (order: 10, 4194304 bytes) [ 0.001680] Inode-cache hash table entries: 262144 (order: 9, 2097152 bytes) [ 0.002157] Mount-cache hash table entries: 256 [ 0.002283] Initializing cgroup subsys ns [ 0.002287] ns_cgroup deprecated: consider using the 'clone_children' flag without the ns_cgroup. [ 0.002290] Initializing cgroup subsys cpuacct [ 0.002295] Initializing cgroup subsys memory [ 0.002302] Initializing cgroup subsys devices [ 0.002305] Initializing cgroup subsys freezer [ 0.002307] Initializing cgroup subsys net_cls [ 0.002309] Initializing cgroup subsys blkio [ 0.002341] CPU: Physical Processor ID: 0 [ 0.002342] CPU: Processor Core ID: 0 [ 0.002348] mce: CPU supports 9 MCE banks [ 0.002360] CPU0: Thermal monitoring enabled (TM1) [ 0.002367] using mwait in idle threads. [ 0.004927] ACPI: Core revision 20110112 [ 0.034513] ftrace: allocating 24314 entries in 96 pages [ 0.044701] Setting APIC routing to flat [ 0.045075] ..TIMER: vector=0x30 apic1=0 pin1=2 apic2=-1 pin2=-1 [ 0.144997] CPU0: Intel(R) Core(TM) i7 CPU Q 720 @ 1.60GHz stepping 05 [ 0.257726] Performance Events: PEBS fmt1+, Nehalem events, Intel PMU driver. [ 0.257734] ... version: 3 [ 0.257735] ... bit width: 48 [ 0.257737] ... generic registers: 4 [ 0.257739] ... value mask: 0000ffffffffffff [ 0.257741] ... max period: 000000007fffffff [ 0.257743] ... fixed-purpose events: 3 [ 0.257744] ... event mask: 000000070000000f [ 0.258294] Booting Node 0, Processors #1 #2 #3 #4 #5 #6 #7 Ok. [ 1.946420] Brought up 8 CPUs [ 1.946424] Total of 8 processors activated (25538.29 BogoMIPS). [ 1.950604] devtmpfs: initialized [ 1.951812] print_constraints: dummy: [ 1.951844] Time: 2:02:17 Date: 06/17/11 [ 1.951882] NET: Registered protocol family 16 [ 1.951984] Trying to unpack rootfs image as initramfs... [ 1.951998] ACPI FADT declares the system doesn't support PCIe ASPM, so disable it [ 1.952001] ACPI: bus type pci registered [ 1.952092] PCI: MMCONFIG for domain 0000 [bus 00-ff] at [mem 0xe0000000-0xefffffff] (base 0xe0000000) [ 1.952096] PCI: MMCONFIG at [mem 0xe0000000-0xefffffff] reserved in E820 [ 2.010914] PCI: Using configuration type 1 for base access [ 2.011852] bio: create slab at 0 [ 2.014784] ACPI: EC: Look up EC in DSDT [ 2.017388] ACPI: Executed 1 blocks of module-level executable AML code [ 2.086232] [Firmware Bug]: ACPI: BIOS _OSI(Linux) query ignored [ 2.092685] ACPI: SSDT 00000000bf691a98 002DA (v01 PmRef Cpu0Ist 00003000 INTL 20051117) [ 2.093366] ACPI: Dynamic OEM Table Load: [ 2.093370] ACPI: SSDT (null) 002DA (v01 PmRef Cpu0Ist 00003000 INTL 20051117) [ 2.093601] ACPI: SSDT 00000000bf690618 005CD (v01 PmRef Cpu0Cst 00003001 INTL 20051117) [ 2.094260] ACPI: Dynamic OEM Table Load: [ 2.094263] ACPI: SSDT (null) 005CD (v01 PmRef Cpu0Cst 00003001 INTL 20051117) [ 2.206491] ACPI: SSDT 00000000bf691718 00303 (v01 PmRef ApIst 00003000 INTL 20051117) [ 2.207213] ACPI: Dynamic OEM Table Load: [ 2.207216] ACPI: SSDT (null) 00303 (v01 PmRef ApIst 00003000 INTL 20051117) [ 2.246240] ACPI: SSDT 00000000bf68fd98 00119 (v01 PmRef ApCst 00003000 INTL 20051117) [ 2.246944] ACPI: Dynamic OEM Table Load: [ 2.246947] ACPI: SSDT (null) 00119 (v01 PmRef ApCst 00003000 INTL 20051117) [ 2.264585] Freeing initrd memory: 12824k freed [ 2.311935] ACPI: Interpreter enabled [ 2.311941] ACPI: (supports S0 S3 S4 S5) [ 2.311993] ACPI: Using IOAPIC for interrupt routing [ 2.342715] ACPI: EC: GPE = 0x16, I/O: command/status = 0x66, data = 0x62 [ 2.342942] ACPI: No dock devices found. [ 2.342944] HEST: Table not found. [ 2.342947] PCI: Using host bridge windows from ACPI; if necessary, use "pci=nocrs" and report a bug [ 2.343491] \_SB_.PCI0:_OSC invalid UUID [ 2.343494] _OSC request data:1 8 1f [ 2.343499] ACPI: PCI Root Bridge [PCI0] (domain 0000 [bus 00-fe]) [ 2.344391] pci_root PNP0A08:00: host bridge window [io 0x0000-0x0cf7] [ 2.344394] pci_root PNP0A08:00: host bridge window [io 0x0d00-0xffff] [ 2.344397] pci_root PNP0A08:00: host bridge window [mem 0x000a0000-0x000bffff] [ 2.344401] pci_root PNP0A08:00: host bridge window [mem 0xc0000000-0xfeafffff] [ 2.344416] pci 0000:00:00.0: [8086:d132] type 0 class 0x000600 [ 2.344473] pci 0000:00:03.0: [8086:d138] type 1 class 0x000604 [ 2.344521] pci 0000:00:03.0: PME# supported from D0 D3hot D3cold [ 2.344525] pci 0000:00:03.0: PME# disabled [ 2.344555] pci 0000:00:08.0: [8086:d155] type 0 class 0x000880 [ 2.344616] pci 0000:00:08.1: [8086:d156] type 0 class 0x000880 [ 2.344677] pci 0000:00:08.2: [8086:d157] type 0 class 0x000880 [ 2.344735] pci 0000:00:08.3: [8086:d158] type 0 class 0x000880 [ 2.344803] pci 0000:00:10.0: [8086:d150] type 0 class 0x000880 [ 2.344853] pci 0000:00:10.1: [8086:d151] type 0 class 0x000880 [ 2.344947] pci 0000:00:1a.0: [8086:3b3c] type 0 class 0x000c03 [ 2.345299] pci 0000:00:1a.0: reg 10: [mem 0xdb105c00-0xdb105fff] [ 2.347321] pci 0000:00:1a.0: PME# supported from D0 D3hot D3cold [ 2.347330] pci 0000:00:1a.0: PME# disabled [ 2.347372] pci 0000:00:1b.0: [8086:3b56] type 0 class 0x000403 [ 2.347394] pci 0000:00:1b.0: reg 10: [mem 0xdb100000-0xdb103fff 64bit] [ 2.347461] pci 0000:00:1b.0: PME# supported from D0 D3hot D3cold [ 2.347470] pci 0000:00:1b.0: PME# disabled [ 2.347500] pci 0000:00:1c.0: [8086:3b42] type 1 class 0x000604 [ 2.347564] pci 0000:00:1c.0: PME# supported from D0 D3hot D3cold [ 2.347572] pci 0000:00:1c.0: PME# disabled [ 2.347603] pci 0000:00:1c.1: [8086:3b44] type 1 class 0x000604 [ 2.347667] pci 0000:00:1c.1: PME# supported from D0 D3hot D3cold [ 2.347675] pci 0000:00:1c.1: PME# disabled [ 2.347708] pci 0000:00:1c.4: [8086:3b4a] type 1 class 0x000604 [ 2.347772] pci 0000:00:1c.4: PME# supported from D0 D3hot D3cold [ 2.347781] pci 0000:00:1c.4: PME# disabled [ 2.347813] pci 0000:00:1c.7: [8086:3b50] type 1 class 0x000604 [ 2.347877] pci 0000:00:1c.7: PME# supported from D0 D3hot D3cold [ 2.347886] pci 0000:00:1c.7: PME# disabled [ 2.347926] pci 0000:00:1d.0: [8086:3b34] type 0 class 0x000c03 [ 2.348269] pci 0000:00:1d.0: reg 10: [mem 0xdb105800-0xdb105bff] [ 2.350303] pci 0000:00:1d.0: PME# supported from D0 D3hot D3cold [ 2.350312] pci 0000:00:1d.0: PME# disabled [ 2.350342] pci 0000:00:1e.0: [8086:2448] type 1 class 0x000604 [ 2.350426] pci 0000:00:1f.0: [8086:3b03] type 0 class 0x000601 [ 2.350567] pci 0000:00:1f.2: [8086:3b2f] type 0 class 0x000106 [ 2.350592] pci 0000:00:1f.2: reg 10: [io 0x7048-0x704f] [ 2.350606] pci 0000:00:1f.2: reg 14: [io 0x7054-0x7057] [ 2.350619] pci 0000:00:1f.2: reg 18: [io 0x7040-0x7047] [ 2.350633] pci 0000:00:1f.2: reg 1c: [io 0x7050-0x7053] [ 2.350647] pci 0000:00:1f.2: reg 20: [io 0x7020-0x703f] [ 2.350660] pci 0000:00:1f.2: reg 24: [mem 0xdb105000-0xdb1057ff] [ 2.350706] pci 0000:00:1f.2: PME# supported from D3hot [ 2.350715] pci 0000:00:1f.2: PME# disabled [ 2.350750] pci 0000:00:1f.3: [8086:3b30] type 0 class 0x000c05 [ 2.350771] pci 0000:00:1f.3: reg 10: [mem 0xdb106000-0xdb1060ff 64bit] [ 2.350799] pci 0000:00:1f.3: reg 20: [io 0x7000-0x701f] [ 2.350886] pci 0000:01:00.0: [10de:0a28] type 0 class 0x000300 [ 2.350897] pci 0000:01:00.0: reg 10: [mem 0xd2000000-0xd2ffffff] [ 2.350908] pci 0000:01:00.0: reg 14: [mem 0xc0000000-0xcfffffff 64bit pref] [ 2.350919] pci 0000:01:00.0: reg 1c: [mem 0xd0000000-0xd1ffffff 64bit pref] [ 2.350927] pci 0000:01:00.0: reg 24: [io 0x6000-0x607f] [ 2.350935] pci 0000:01:00.0: reg 30: [mem 0xfff80000-0xffffffff pref] [ 2.350978] pci 0000:01:00.1: [10de:0be2] type 0 class 0x000403 [ 2.350989] pci 0000:01:00.1: reg 10: [mem 0xd3000000-0xd3003fff] [ 2.351062] pci 0000:00:03.0: PCI bridge to [bus 01-01] [ 2.351066] pci 0000:00:03.0: bridge window [io 0x6000-0x6fff] [ 2.351070] pci 0000:00:03.0: bridge window [mem 0xd2000000-0xd30fffff] [ 2.351076] pci 0000:00:03.0: bridge window [mem 0xc0000000-0xd1ffffff 64bit pref] [ 2.351339] pci 0000:02:00.0: [8086:4239] type 0 class 0x000280 [ 2.351578] pci 0000:02:00.0: reg 10: [mem 0xda100000-0xda101fff 64bit] [ 2.352594] pci 0000:02:00.0: PME# supported from D0 D3hot D3cold [ 2.352635] pci 0000:02:00.0: PME# disabled [ 2.352952] pci 0000:00:1c.0: PCI bridge to [bus 02-02] [ 2.352961] pci 0000:00:1c.0: bridge window [io 0x5000-0x5fff] [ 2.352970] pci 0000:00:1c.0: bridge window [mem 0xda100000-0xdb0fffff] [ 2.352981] pci 0000:00:1c.0: bridge window [mem 0xd3100000-0xd40fffff 64bit pref] [ 2.353070] pci 0000:03:00.0: [10ec:8168] type 0 class 0x000200 [ 2.353169] pci 0000:03:00.0: reg 10: [io 0x4000-0x40ff] [ 2.353204] pci 0000:03:00.0: reg 18: [mem 0xd4104000-0xd4104fff 64bit pref] [ 2.353229] pci 0000:03:00.0: reg 20: [mem 0xd4100000-0xd4103fff 64bit pref] [ 2.353247] pci 0000:03:00.0: reg 30: [mem 0xffff0000-0xffffffff pref] [ 2.353298] pci 0000:03:00.0: supports D1 D2 [ 2.353300] pci 0000:03:00.0: PME# supported from D0 D1 D2 D3hot D3cold [ 2.353311] pci 0000:03:00.0: PME# disabled [ 2.353351] pci 0000:00:1c.1: PCI bridge to [bus 03-03] [ 2.353360] pci 0000:00:1c.1: bridge window [io 0x4000-0x4fff] [ 2.353369] pci 0000:00:1c.1: bridge window [mem 0xd9100000-0xda0fffff] [ 2.353381] pci 0000:00:1c.1: bridge window [mem 0xd4100000-0xd50fffff 64bit pref] [ 2.353494] pci 0000:04:00.0: [197b:2380] type 0 class 0x000c00 [ 2.353569] pci 0000:04:00.0: reg 10: [mem 0xd8100000-0xd81007ff] [ 2.353621] pci 0000:04:00.0: reg 14: [mem 0xd8100d00-0xd8100d7f] [ 2.353777] pci 0000:04:00.0: reg 20: [mem 0xd8100c80-0xd8100cff] [ 2.353829] pci 0000:04:00.0: reg 24: [mem 0xd8100c00-0xd8100c7f] [ 2.354146] pci 0000:04:00.1: [197b:2382] type 0 class 0x000880 [ 2.354208] pci 0000:04:00.1: reg 10: [mem 0xd8100b00-0xd8100bff] [ 2.354665] pci 0000:04:00.2: [197b:2381] type 0 class 0x000805 [ 2.354711] pci 0000:04:00.2: reg 10: [mem 0xd8100a00-0xd8100aff] [ 2.355163] pci 0000:04:00.3: [197b:2383] type 0 class 0x000880 [ 2.355208] pci 0000:04:00.3: reg 10: [mem 0xd8100900-0xd81009ff] [ 2.355660] pci 0000:04:00.4: [197b:2384] type 0 class 0x000880 [ 2.355726] pci 0000:04:00.4: reg 10: [mem 0xd8100800-0xd81008ff] [ 2.356201] pci 0000:00:1c.4: PCI bridge to [bus 04-04] [ 2.356210] pci 0000:00:1c.4: bridge window [io 0x3000-0x3fff] [ 2.356219] pci 0000:00:1c.4: bridge window [mem 0xd8100000-0xd90fffff] [ 2.356230] pci 0000:00:1c.4: bridge window [mem 0xd5100000-0xd60fffff 64bit pref] [ 2.356283] pci 0000:00:1c.7: PCI bridge to [bus 05-08] [ 2.356292] pci 0000:00:1c.7: bridge window [io 0x2000-0x2fff] [ 2.356301] pci 0000:00:1c.7: bridge window [mem 0xd7100000-0xd80fffff] [ 2.356312] pci 0000:00:1c.7: bridge window [mem 0xd6100000-0xd70fffff 64bit pref] [ 2.356382] pci 0000:00:1e.0: PCI bridge to [bus 09-09] (subtractive decode) [ 2.356391] pci 0000:00:1e.0: bridge window [io 0xf000-0x0000] (disabled) [ 2.356400] pci 0000:00:1e.0: bridge window [mem 0xfff00000-0x000fffff] (disabled) [ 2.356412] pci 0000:00:1e.0: bridge window [mem 0xfff00000-0x000fffff pref] (disabled) [ 2.356415] pci 0000:00:1e.0: bridge window [io 0x0000-0x0cf7] (subtractive decode) [ 2.356418] pci 0000:00:1e.0: bridge window [io 0x0d00-0xffff] (subtractive decode) [ 2.356421] pci 0000:00:1e.0: bridge window [mem 0x000a0000-0x000bffff] (subtractive decode) [ 2.356424] pci 0000:00:1e.0: bridge window [mem 0xc0000000-0xfeafffff] (subtractive decode) [ 2.356458] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0._PRT] [ 2.356608] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.P0P2._PRT] [ 2.356659] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.P0P1._PRT] [ 2.356682] ACPI Warning: For \_SB_.PCI0.P0P1._PRT: Return Package has no elements (empty) (20110112/nspredef-456) [ 2.356723] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.RP01._PRT] [ 2.356767] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.RP02._PRT] [ 2.356821] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.RP05._PRT] [ 2.356893] ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.RP08._PRT] [ 2.356998] \_SB_.PCI0:_OSC invalid UUID [ 2.357000] _OSC request data:1 19 1f [ 2.365956] ACPI: PCI Root Bridge [CPBG] (domain 0000 [bus ff]) [ 2.366050] pci 0000:ff:00.0: [8086:2c52] type 0 class 0x000600 [ 2.366075] pci 0000:ff:00.1: [8086:2c81] type 0 class 0x000600 [ 2.366101] pci 0000:ff:02.0: [8086:2c90] type 0 class 0x000600 [ 2.366127] pci 0000:ff:02.1: [8086:2c91] type 0 class 0x000600 [ 2.366156] pci 0000:ff:03.0: [8086:2c98] type 0 class 0x000600 [ 2.366178] pci 0000:ff:03.1: [8086:2c99] type 0 class 0x000600 [ 2.366200] pci 0000:ff:03.4: [8086:2c9c] type 0 class 0x000600 [ 2.366223] pci 0000:ff:04.0: [8086:2ca0] type 0 class 0x000600 [ 2.366245] pci 0000:ff:04.1: [8086:2ca1] type 0 class 0x000600 [ 2.366266] pci 0000:ff:04.2: [8086:2ca2] type 0 class 0x000600 [ 2.366288] pci 0000:ff:04.3: [8086:2ca3] type 0 class 0x000600 [ 2.366312] pci 0000:ff:05.0: [8086:2ca8] type 0 class 0x000600 [ 2.366335] pci 0000:ff:05.1: [8086:2ca9] type 0 class 0x000600 [ 2.366357] pci 0000:ff:05.2: [8086:2caa] type 0 class 0x000600 [ 2.366379] pci 0000:ff:05.3: [8086:2cab] type 0 class 0x000600 [ 2.367058] ACPI: PCI Interrupt Link [LNKA] (IRQs 1 3 4 *5 6 7 10 12 14 15) [ 2.367128] ACPI: PCI Interrupt Link [LNKB] (IRQs 1 3 4 *5 6 7 11 12 14 15) [ 2.367197] ACPI: PCI Interrupt Link [LNKC] (IRQs 1 3 4 5 6 7 10 12 14 15) *11 [ 2.367266] ACPI: PCI Interrupt Link [LNKD] (IRQs 1 3 4 *5 6 7 11 12 14 15) [ 2.367330] ACPI: PCI Interrupt Link [LNKE] (IRQs 1 3 4 5 6 7 10 12 14 15) *0, disabled. [ 2.367399] ACPI: PCI Interrupt Link [LNKF] (IRQs 1 3 4 5 6 7 *11 12 14 15) [ 2.367466] ACPI: PCI Interrupt Link [LNKG] (IRQs 1 3 4 5 6 7 *10 12 14 15) [ 2.367534] ACPI: PCI Interrupt Link [LNKH] (IRQs 1 3 4 5 6 7 11 12 14 15) *0, disabled. [ 2.367662] vgaarb: device added: PCI:0000:01:00.0,decodes=io+mem,owns=io+mem,locks=none [ 2.367675] vgaarb: loaded [ 2.367862] SCSI subsystem initialized [ 2.367915] libata version 3.00 loaded. [ 2.367965] usbcore: registered new interface driver usbfs [ 2.367975] usbcore: registered new interface driver hub [ 2.367998] usbcore: registered new device driver usb [ 2.368221] wmi: Mapper loaded [ 2.368223] PCI: Using ACPI for IRQ routing [ 2.368226] PCI: pci_cache_line_size set to 64 bytes [ 2.368489] reserve RAM buffer: 000000000009d000 - 000000000009ffff [ 2.368491] reserve RAM buffer: 00000000bf682000 - 00000000bfffffff [ 2.368495] reserve RAM buffer: 00000000bf75d000 - 00000000bfffffff [ 2.368498] reserve RAM buffer: 00000000bf7e1000 - 00000000bfffffff [ 2.368500] reserve RAM buffer: 00000000bf800000 - 00000000bfffffff [ 2.368606] NetLabel: Initializing [ 2.368608] NetLabel: domain hash size = 128 [ 2.368609] NetLabel: protocols = UNLABELED CIPSOv4 [ 2.368621] NetLabel: unlabeled traffic allowed by default [ 2.368707] HPET: 8 timers in total, 5 timers will be used for per-cpu timer [ 2.368717] hpet0: at MMIO 0xfed00000, IRQs 2, 8, 40, 41, 42, 43, 44, 0 [ 2.368724] hpet0: 8 comparators, 64-bit 14.318180 MHz counter [ 2.376043] hpet: hpet2 irq 40 for MSI [ 2.376165] hpet: hpet3 irq 41 for MSI [ 2.396148] hpet: hpet4 irq 42 for MSI [ 2.406157] hpet: hpet5 irq 43 for MSI [ 2.416145] hpet: hpet6 irq 44 for MSI [ 2.436183] Switching to clocksource hpet [ 2.443007] AppArmor: AppArmor Filesystem Enabled [ 2.443030] pnp: PnP ACPI init [ 2.443047] ACPI: bus type pnp registered [ 2.443848] pnp 00:00: [bus 00-fe] [ 2.443851] pnp 00:00: [io 0x0000-0x0cf7 window] [ 2.443854] pnp 00:00: [io 0x0cf8-0x0cff] [ 2.443856] pnp 00:00: [io 0x0d00-0xffff window] [ 2.443859] pnp 00:00: [mem 0x000a0000-0x000bffff window] [ 2.443861] pnp 00:00: [mem 0x000c0000-0x000c3fff window] [ 2.443864] pnp 00:00: [mem 0x000c4000-0x000c7fff window] [ 2.443866] pnp 00:00: [mem 0x000c8000-0x000cbfff window] [ 2.443869] pnp 00:00: [mem 0x000cc000-0x000cffff window] [ 2.443871] pnp 00:00: [mem 0x000d0000-0x000d3fff window] [ 2.443874] pnp 00:00: [mem 0x000d4000-0x000d7fff window] [ 2.443876] pnp 00:00: [mem 0x000d8000-0x000dbfff window] [ 2.443879] pnp 00:00: [mem 0x000dc000-0x000dffff window] [ 2.443881] pnp 00:00: [mem 0x000e0000-0x000e3fff window] [ 2.443884] pnp 00:00: [mem 0x000e4000-0x000e7fff window] [ 2.443886] pnp 00:00: [mem 0x000e8000-0x000ebfff window] [ 2.443889] pnp 00:00: [mem 0x000ec000-0x000effff window] [ 2.443891] pnp 00:00: [mem 0x000f0000-0x000fffff window] [ 2.443894] pnp 00:00: [mem 0xc0000000-0xfeafffff window] [ 2.443896] pnp 00:00: [mem 0xfed40000-0xfed44fff window] [ 2.443963] pnp 00:00: Plug and Play ACPI device, IDs PNP0a08 PNP0a03 (active) [ 2.444051] pnp 00:01: [io 0x0380-0x038e] [ 2.444064] pnp 00:01: [irq 4] [ 2.444098] pnp 00:01: Plug and Play ACPI device, IDs ENE0100 (active) [ 2.444112] pnp 00:02: [io 0x0000-0x001f] [ 2.444115] pnp 00:02: [io 0x0081-0x0091] [ 2.444117] pnp 00:02: [io 0x0093-0x009f] [ 2.444119] pnp 00:02: [io 0x00c0-0x00df] [ 2.444121] pnp 00:02: [dma 4] [ 2.444156] pnp 00:02: Plug and Play ACPI device, IDs PNP0200 (active) [ 2.444166] pnp 00:03: [mem 0xff000000-0xffffffff] [ 2.444198] pnp 00:03: Plug and Play ACPI device, IDs INT0800 (active) [ 2.444344] pnp 00:04: [mem 0xfed00000-0xfed003ff] [ 2.444380] pnp 00:04: Plug and Play ACPI device, IDs PNP0103 (active) [ 2.444393] pnp 00:05: [io 0x00f0] [ 2.444403] pnp 00:05: [irq 13] [ 2.444437] pnp 00:05: Plug and Play ACPI device, IDs PNP0c04 (active) [ 2.444450] pnp 00:06: [io 0x002e-0x002f] [ 2.444453] pnp 00:06: [io 0x004e-0x004f] [ 2.444455] pnp 00:06: [io 0x0061] [ 2.444457] pnp 00:06: [io 0x0063] [ 2.444459] pnp 00:06: [io 0x0065] [ 2.444461] pnp 00:06: [io 0x0067] [ 2.444462] pnp 00:06: [io 0x0070] [ 2.444464] pnp 00:06: [io 0x0080] [ 2.444466] pnp 00:06: [io 0x0092] [ 2.444468] pnp 00:06: [io 0x00b2-0x00b3] [ 2.444471] pnp 00:06: [io 0x0680-0x069f] [ 2.444473] pnp 00:06: [io 0x0800-0x080f] [ 2.444475] pnp 00:06: [io 0xffff] [ 2.444477] pnp 00:06: [io 0xffff] [ 2.444479] pnp 00:06: [io 0x0400-0x047f] [ 2.444481] pnp 00:06: [io 0x0500-0x057f] [ 2.444483] pnp 00:06: [io 0x164e-0x164f] [ 2.444485] pnp 00:06: [io 0x0380-0x038e] [ 2.444576] system 00:06: [io 0x0680-0x069f] has been reserved [ 2.444579] system 00:06: [io 0x0800-0x080f] has been reserved [ 2.444582] system 00:06: [io 0xffff] has been reserved [ 2.444585] system 00:06: [io 0xffff] has been reserved [ 2.444588] system 00:06: [io 0x0400-0x047f] has been reserved [ 2.444591] system 00:06: [io 0x0500-0x057f] has been reserved [ 2.444594] system 00:06: [io 0x164e-0x164f] has been reserved [ 2.444596] system 00:06: [io 0x0380-0x038e] has been reserved [ 2.444600] system 00:06: Plug and Play ACPI device, IDs PNP0c02 (active) [ 2.444614] pnp 00:07: [io 0x0070-0x0077] [ 2.444624] pnp 00:07: [irq 8] [ 2.444659] pnp 00:07: Plug and Play ACPI device, IDs PNP0b00 (active) [ 2.444671] pnp 00:08: [io 0x0060] [ 2.444673] pnp 00:08: [io 0x0064] [ 2.444679] pnp 00:08: [irq 1] [ 2.444716] pnp 00:08: Plug and Play ACPI device, IDs PNP0303 (active) [ 2.444738] pnp 00:09: [irq 12] [ 2.444779] pnp 00:09: Plug and Play ACPI device, IDs SYN1e10 SYN1e00 SYN0002 PNP0f13 (active) [ 2.444971] pnp 00:0a: [irq 23] [ 2.445022] pnp 00:0a: Plug and Play ACPI device, IDs HPQ0004 (active) [ 2.445293] pnp 00:0b: [mem 0xfed1c000-0xfed1ffff] [ 2.445297] pnp 00:0b: [mem 0x00000000-0xffffffffffffffff disabled] [ 2.445299] pnp 00:0b: [mem 0xfed1b000-0xfed1bfff] [ 2.445302] pnp 00:0b: [mem 0x00000000-0xffffffffffffffff disabled] [ 2.445304] pnp 00:0b: [mem 0xe0000000-0xefffffff] [ 2.445306] pnp 00:0b: [mem 0xfed20000-0xfed3ffff] [ 2.445309] pnp 00:0b: [mem 0xfed90000-0xfed8ffff disabled] [ 2.445312] pnp 00:0b: [mem 0xfed45000-0xfed8ffff] [ 2.445316] pnp 00:0b: [mem 0xff000000-0xffffffff] [ 2.445319] pnp 00:0b: [mem 0xfee00000-0xfeefffff] [ 2.445321] pnp 00:0b: [mem 0xdb200000-0xdb200fff] [ 2.445414] system 00:0b: [mem 0xfed1c000-0xfed1ffff] has been reserved [ 2.445418] system 00:0b: [mem 0xfed1b000-0xfed1bfff] has been reserved [ 2.445421] system 00:0b: [mem 0xe0000000-0xefffffff] has been reserved [ 2.445424] system 00:0b: [mem 0xfed20000-0xfed3ffff] has been reserved [ 2.445427] system 00:0b: [mem 0xfed45000-0xfed8ffff] has been reserved [ 2.445431] system 00:0b: [mem 0xff000000-0xffffffff] could not be reserved [ 2.445434] system 00:0b: [mem 0xfee00000-0xfeefffff] could not be reserved [ 2.445437] system 00:0b: [mem 0xdb200000-0xdb200fff] has been reserved [ 2.445441] system 00:0b: Plug and Play ACPI device, IDs PNP0c02 (active) [ 2.445646] pnp 00:0c: [bus ff] [ 2.445697] pnp 00:0c: Plug and Play ACPI device, IDs PNP0a03 (active) [ 2.445718] pnp: PnP ACPI: found 13 devices [ 2.445720] ACPI: ACPI bus type pnp unregistered [ 2.446067] Switched to NOHz mode on CPU #6 [ 2.446089] Switched to NOHz mode on CPU #0 [ 2.446111] Switched to NOHz mode on CPU #5 [ 2.446123] Switched to NOHz mode on CPU #7 [ 2.446170] Switched to NOHz mode on CPU #3 [ 2.446172] Switched to NOHz mode on CPU #4 [ 2.446174] Switched to NOHz mode on CPU #2 [ 2.446176] Switched to NOHz mode on CPU #1 [ 2.446190] CE: hpet3 increased min_delta_ns to 7500 nsec [ 2.446193] CE: hpet5 increased min_delta_ns to 7500 nsec [ 2.446218] CE: hpet5 increased min_delta_ns to 11250 nsec [ 2.446220] CE: hpet3 increased min_delta_ns to 11250 nsec [ 2.452244] pci 0000:01:00.0: no compatible bridge window for [mem 0xfff80000-0xffffffff pref] [ 2.452249] pci 0000:03:00.0: no compatible bridge window for [mem 0xffff0000-0xffffffff pref] [ 2.452324] pci 0000:01:00.0: BAR 6: assigned [mem 0xd3080000-0xd30fffff pref] [ 2.452327] pci 0000:00:03.0: PCI bridge to [bus 01-01] [ 2.452331] pci 0000:00:03.0: bridge window [io 0x6000-0x6fff] [ 2.452336] pci 0000:00:03.0: bridge window [mem 0xd2000000-0xd30fffff] [ 2.452340] pci 0000:00:03.0: bridge window [mem 0xc0000000-0xd1ffffff 64bit pref] [ 2.452346] pci 0000:00:1c.0: PCI bridge to [bus 02-02] [ 2.452353] pci 0000:00:1c.0: bridge window [io 0x5000-0x5fff] [ 2.452363] pci 0000:00:1c.0: bridge window [mem 0xda100000-0xdb0fffff] [ 2.452373] pci 0000:00:1c.0: bridge window [mem 0xd3100000-0xd40fffff 64bit pref] [ 2.452385] pci 0000:03:00.0: BAR 6: assigned [mem 0xd4110000-0xd411ffff pref] [ 2.452388] pci 0000:00:1c.1: PCI bridge to [bus 03-03] [ 2.452395] pci 0000:00:1c.1: bridge window [io 0x4000-0x4fff] [ 2.452405] pci 0000:00:1c.1: bridge window [mem 0xd9100000-0xda0fffff] [ 2.452415] pci 0000:00:1c.1: bridge window [mem 0xd4100000-0xd50fffff 64bit pref] [ 2.452426] pci 0000:00:1c.4: PCI bridge to [bus 04-04] [ 2.452434] pci 0000:00:1c.4: bridge window [io 0x3000-0x3fff] [ 2.452444] pci 0000:00:1c.4: bridge window [mem 0xd8100000-0xd90fffff] [ 2.452454] pci 0000:00:1c.4: bridge window [mem 0xd5100000-0xd60fffff 64bit pref] [ 2.452465] pci 0000:00:1c.7: PCI bridge to [bus 05-08] [ 2.452473] pci 0000:00:1c.7: bridge window [io 0x2000-0x2fff] [ 2.452483] pci 0000:00:1c.7: bridge window [mem 0xd7100000-0xd80fffff] [ 2.452492] pci 0000:00:1c.7: bridge window [mem 0xd6100000-0xd70fffff 64bit pref] [ 2.452503] pci 0000:00:1e.0: PCI bridge to [bus 09-09] [ 2.452505] pci 0000:00:1e.0: bridge window [io disabled] [ 2.452515] pci 0000:00:1e.0: bridge window [mem disabled] [ 2.452524] pci 0000:00:1e.0: bridge window [mem pref disabled] [ 2.452546] pci 0000:00:03.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16 [ 2.452551] pci 0000:00:03.0: setting latency timer to 64 [ 2.452571] pci 0000:00:1c.0: PCI INT A -> GSI 17 (level, low) -> IRQ 17 [ 2.452576] pci 0000:00:1c.0: setting latency timer to 64 [ 2.452591] pci 0000:00:1c.1: PCI INT B -> GSI 16 (level, low) -> IRQ 16 [ 2.452600] pci 0000:00:1c.1: setting latency timer to 64 [ 2.452616] pci 0000:00:1c.4: PCI INT A -> GSI 17 (level, low) -> IRQ 17 [ 2.452623] pci 0000:00:1c.4: setting latency timer to 64 [ 2.452638] pci 0000:00:1c.7: PCI INT B -> GSI 16 (level, low) -> IRQ 16 [ 2.452647] pci 0000:00:1c.7: setting latency timer to 64 [ 2.452662] pci 0000:00:1e.0: setting latency timer to 64 [ 2.452672] pci_bus 0000:00: resource 4 [io 0x0000-0x0cf7] [ 2.452675] pci_bus 0000:00: resource 5 [io 0x0d00-0xffff] [ 2.452678] pci_bus 0000:00: resource 6 [mem 0x000a0000-0x000bffff] [ 2.452680] pci_bus 0000:00: resource 7 [mem 0xc0000000-0xfeafffff] [ 2.452683] pci_bus 0000:01: resource 0 [io 0x6000-0x6fff] [ 2.452686] pci_bus 0000:01: resource 1 [mem 0xd2000000-0xd30fffff] [ 2.452688] pci_bus 0000:01: resource 2 [mem 0xc0000000-0xd1ffffff 64bit pref] [ 2.452691] pci_bus 0000:02: resource 0 [io 0x5000-0x5fff] [ 2.452694] pci_bus 0000:02: resource 1 [mem 0xda100000-0xdb0fffff] [ 2.452697] pci_bus 0000:02: resource 2 [mem 0xd3100000-0xd40fffff 64bit pref] [ 2.452700] pci_bus 0000:03: resource 0 [io 0x4000-0x4fff] [ 2.452702] pci_bus 0000:03: resource 1 [mem 0xd9100000-0xda0fffff] [ 2.452705] pci_bus 0000:03: resource 2 [mem 0xd4100000-0xd50fffff 64bit pref] [ 2.452708] pci_bus 0000:04: resource 0 [io 0x3000-0x3fff] [ 2.452710] pci_bus 0000:04: resource 1 [mem 0xd8100000-0xd90fffff] [ 2.452713] pci_bus 0000:04: resource 2 [mem 0xd5100000-0xd60fffff 64bit pref] [ 2.452716] pci_bus 0000:05: resource 0 [io 0x2000-0x2fff] [ 2.452718] pci_bus 0000:05: resource 1 [mem 0xd7100000-0xd80fffff] [ 2.452721] pci_bus 0000:05: resource 2 [mem 0xd6100000-0xd70fffff 64bit pref] [ 2.452724] pci_bus 0000:09: resource 4 [io 0x0000-0x0cf7] [ 2.452727] pci_bus 0000:09: resource 5 [io 0x0d00-0xffff] [ 2.452729] pci_bus 0000:09: resource 6 [mem 0x000a0000-0x000bffff] [ 2.452732] pci_bus 0000:09: resource 7 [mem 0xc0000000-0xfeafffff] [ 2.452767] NET: Registered protocol family 2 [ 2.452937] IP route cache hash table entries: 131072 (order: 8, 1048576 bytes) [ 2.454061] TCP established hash table entries: 524288 (order: 11, 8388608 bytes) [ 2.457630] TCP bind hash table entries: 65536 (order: 8, 1048576 bytes) [ 2.458057] TCP: Hash tables configured (established 524288 bind 65536) [ 2.458060] TCP reno registered [ 2.458072] UDP hash table entries: 2048 (order: 4, 65536 bytes) [ 2.458120] UDP-Lite hash table entries: 2048 (order: 4, 65536 bytes) [ 2.458249] NET: Registered protocol family 1 [ 2.496247] pci 0000:01:00.0: Boot video device [ 2.496328] PCI: CLS 64 bytes, default 64 [ 2.496330] PCI-DMA: Using software bounce buffering for IO (SWIOTLB) [ 2.496333] Placing 64MB software IO TLB between ffff8800bb280000 - ffff8800bf280000 [ 2.496335] software IO TLB at phys 0xbb280000 - 0xbf280000 [ 2.496379] Simple Boot Flag at 0x44 set to 0x1 [ 2.497133] audit: initializing netlink socket (disabled) [ 2.497142] type=2000 audit(1308276136.880:1): initialized [ 2.513929] HugeTLB registered 2 MB page size, pre-allocated 0 pages [ 2.516081] VFS: Disk quotas dquot_6.5.2 [ 2.516176] Dquot-cache hash table entries: 512 (order 0, 4096 bytes) [ 2.516918] fuse init (API version 7.16) [ 2.517019] msgmni has been set to 7904 [ 2.517338] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 253) [ 2.517380] io scheduler noop registered [ 2.517382] io scheduler deadline registered [ 2.517430] io scheduler cfq registered (default) [ 2.517798] pci_hotplug: PCI Hot Plug PCI Core version: 0.5 [ 2.517821] pciehp: PCI Express Hot Plug Controller Driver version: 0.4 [ 2.517871] intel_idle: MWAIT substates: 0x1120 [ 2.517889] intel_idle: v0.4 model 0x1E [ 2.517891] intel_idle: lapic_timer_reliable_states 0x2 [ 2.518336] ACPI: Deprecated procfs I/F for AC is loaded, please retry with CONFIG_ACPI_PROCFS_POWER cleared [ 2.518690] ACPI: AC Adapter [ACAD] (on-line) [ 2.518794] input: Power Button as /devices/LNXSYSTM:00/device:00/PNP0C0C:00/input/input0 [ 2.518799] ACPI: Power Button [PWRB] [ 2.518879] input: Lid Switch as /devices/LNXSYSTM:00/device:00/PNP0C0D:00/input/input1 [ 2.519325] ACPI: Lid Switch [LID0] [ 2.519377] input: Sleep Button as /devices/LNXSYSTM:00/device:00/PNP0C0E:00/input/input2 [ 2.519409] ACPI: Sleep Button [SLPB] [ 2.519465] input: Power Button as /devices/LNXSYSTM:00/LNXPWRBN:00/input/input3 [ 2.519469] ACPI: Power Button [PWRF] [ 2.519795] ACPI: acpi_idle yielding to intel_idle [ 2.523419] [Firmware Bug]: Invalid critical threshold (0) [ 2.525166] thermal LNXTHERM:00: registered as thermal_zone0 [ 2.525169] ACPI: Thermal Zone [TZ01] (69 C) [ 2.525188] ACPI: Deprecated procfs I/F for battery is loaded, please retry with CONFIG_ACPI_PROCFS_POWER cleared [ 2.525244] ERST: Table is not found! [ 2.525301] Serial: 8250/16550 driver, 32 ports, IRQ sharing enabled [ 2.590756] ACPI: Battery Slot [BAT0] (battery present) [ 2.769201] Linux agpgart interface v0.103 [ 2.770479] brd: module loaded [ 2.771059] loop: module loaded [ 2.771142] i2c-core: driver [adp5520] using legacy suspend method [ 2.771144] i2c-core: driver [adp5520] using legacy resume method [ 2.771551] Fixed MDIO Bus: probed [ 2.771580] PPP generic driver version 2.4.2 [ 2.771622] tun: Universal TUN/TAP device driver, 1.6 [ 2.771624] tun: (C) 1999-2004 Max Krasnyansky [ 2.771710] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver [ 2.771735] ehci_hcd 0000:00:1a.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16 [ 2.771770] ehci_hcd 0000:00:1a.0: setting latency timer to 64 [ 2.771778] ehci_hcd 0000:00:1a.0: EHCI Host Controller [ 2.771818] ehci_hcd 0000:00:1a.0: new USB bus registered, assigned bus number 1 [ 2.771905] ehci_hcd 0000:00:1a.0: debug port 2 [ 2.775795] ehci_hcd 0000:00:1a.0: cache line size of 64 is not supported [ 2.775821] ehci_hcd 0000:00:1a.0: irq 16, io mem 0xdb105c00 [ 2.795933] ehci_hcd 0000:00:1a.0: USB 2.0 started, EHCI 1.00 [ 2.796082] hub 1-0:1.0: USB hub found [ 2.796087] hub 1-0:1.0: 3 ports detected [ 2.796192] ehci_hcd 0000:00:1d.0: PCI INT A -> GSI 21 (level, low) -> IRQ 21 [ 2.796211] ehci_hcd 0000:00:1d.0: setting latency timer to 64 [ 2.796219] ehci_hcd 0000:00:1d.0: EHCI Host Controller [ 2.796268] ehci_hcd 0000:00:1d.0: new USB bus registered, assigned bus number 2 [ 2.796358] ehci_hcd 0000:00:1d.0: debug port 2 [ 2.800246] ehci_hcd 0000:00:1d.0: cache line size of 64 is not supported [ 2.800266] ehci_hcd 0000:00:1d.0: irq 21, io mem 0xdb105800 [ 2.815932] ehci_hcd 0000:00:1d.0: USB 2.0 started, EHCI 1.00 [ 2.816074] hub 2-0:1.0: USB hub found [ 2.816079] hub 2-0:1.0: 3 ports detected [ 2.816166] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver [ 2.816180] uhci_hcd: USB Universal Host Controller Interface driver [ 2.816332] i8042: PNP: PS/2 Controller [PNP0303:PS2K,PNP0f13:PS2M] at 0x60,0x64 irq 1,12 [ 2.839208] serio: i8042 KBD port at 0x60,0x64 irq 1 [ 2.839215] serio: i8042 AUX port at 0x60,0x64 irq 12 [ 2.839338] mousedev: PS/2 mouse device common for all mice [ 2.840728] rtc_cmos 00:07: RTC can wake from S4 [ 2.840815] rtc_cmos 00:07: rtc core: registered rtc_cmos as rtc0 [ 2.840855] rtc0: alarms up to one year, y3k, 242 bytes nvram, hpet irqs [ 2.840966] device-mapper: uevent: version 1.0.3 [ 2.841052] device-mapper: ioctl: 4.19.1-ioctl (2011-01-07) initialised: dm-devel@redhat.com [ 2.841146] device-mapper: multipath: version 1.2.0 loaded [ 2.841148] device-mapper: multipath round-robin: version 1.0.0 loaded [ 2.841497] cpuidle: using governor ladder [ 2.841839] cpuidle: using governor menu [ 2.842109] TCP cubic registered [ 2.842244] NET: Registered protocol family 10 [ 2.842806] NET: Registered protocol family 17 [ 2.842821] Registering the dns_resolver key type [ 2.846157] PM: Hibernation image not present or could not be loaded. [ 2.846163] registered taskstats version 1 [ 2.846639] Magic number: 15:446:5 [ 2.846862] rtc_cmos 00:07: setting system clock to 2011-06-17 02:02:17 UTC (1308276137) [ 2.846865] BIOS EDD facility v0.16 2004-Jun-25, 0 devices found [ 2.846867] EDD information not available. [ 2.848649] Freeing unused kernel memory: 956k freed [ 2.848776] Write protecting the kernel read-only data: 10240k [ 2.850002] Freeing unused kernel memory: 184k freed [ 2.854592] Freeing unused kernel memory: 1444k freed [ 2.861129] input: AT Translated Set 2 keyboard as /devices/platform/i8042/serio0/input/input4 [ 2.875342] <30>udev[87]: starting version 167 [ 2.916587] sdhci: Secure Digital Host Controller Interface driver [ 2.916592] sdhci: Copyright(c) Pierre Ossman [ 2.925418] sdhci-pci 0000:04:00.1: SDHCI controller found [197b:2382] (rev 0) [ 2.925446] sdhci-pci 0000:04:00.1: PCI INT A -> GSI 16 (level, low) -> IRQ 16 [ 2.925509] sdhci-pci 0000:04:00.1: setting latency timer to 64 [ 2.925522] mmc0: no vmmc regulator found [ 2.925557] Registered led device: mmc0:: [ 2.925601] mmc0: SDHCI controller on PCI [0000:04:00.1] using DMA [ 2.925629] sdhci-pci 0000:04:00.2: SDHCI controller found [197b:2381] (rev 0) [ 2.925649] sdhci-pci 0000:04:00.2: PCI INT A -> GSI 16 (level, low) -> IRQ 16 [ 2.925655] sdhci-pci 0000:04:00.2: Refusing to bind to secondary interface. [ 2.925665] sdhci-pci 0000:04:00.2: PCI INT A disabled [ 2.930998] r8169 Gigabit Ethernet driver 2.3LK-NAPI loaded [ 2.931023] r8169 0000:03:00.0: PCI INT A -> GSI 17 (level, low) -> IRQ 17 [ 2.931072] r8169 0000:03:00.0: setting latency timer to 64 [ 2.931142] r8169 0000:03:00.0: irq 45 for MSI/MSI-X [ 2.931668] r8169 0000:03:00.0: eth0: RTL8168d/8111d at 0xffffc90011090000, c8:0a:a9:28:1b:75, XID 083000c0 IRQ 45 [ 2.941608] firewire_ohci 0000:04:00.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16 [ 2.941627] firewire_ohci 0000:04:00.0: setting latency timer to 64 [ 2.945047] ahci 0000:00:1f.2: version 3.0 [ 2.945071] ahci 0000:00:1f.2: PCI INT B -> GSI 19 (level, low) -> IRQ 19 [ 2.945123] ahci 0000:00:1f.2: irq 46 for MSI/MSI-X [ 2.945202] ahci 0000:00:1f.2: AHCI 0001.0300 32 slots 6 ports 3 Gbps 0x33 impl SATA mode [ 2.945206] ahci 0000:00:1f.2: flags: 64bit ncq sntf ilck pm led clo pio slum part ems sxs apst [ 2.945215] ahci 0000:00:1f.2: setting latency timer to 64 [ 3.016722] scsi0 : ahci [ 3.016986] scsi1 : ahci [ 3.017267] scsi2 : ahci [ 3.017416] scsi3 : ahci [ 3.017743] scsi4 : ahci [ 3.017981] scsi5 : ahci [ 3.018079] ata1: SATA max UDMA/133 abar m2048@0xdb105000 port 0xdb105100 irq 46 [ 3.018089] ata2: SATA max UDMA/133 abar m2048@0xdb105000 port 0xdb105180 irq 46 [ 3.018093] ata3: DUMMY [ 3.018094] ata4: DUMMY [ 3.018100] ata5: SATA max UDMA/133 abar m2048@0xdb105000 port 0xdb105300 irq 46 [ 3.018106] ata6: SATA max UDMA/133 abar m2048@0xdb105000 port 0xdb105380 irq 46 [ 3.026152] firewire_ohci: Added fw-ohci device 0000:04:00.0, OHCI v1.10, 4 IR + 4 IT contexts, quirks 0x10 [ 3.126003] usb 1-1: new high speed USB device using ehci_hcd and address 2 [ 3.277033] hub 1-1:1.0: USB hub found [ 3.277293] hub 1-1:1.0: 6 ports detected [ 3.365753] ata6: SATA link down (SStatus 0 SControl 300) [ 3.365806] ata5: SATA link down (SStatus 0 SControl 300) [ 3.365829] ata1: SATA link up 3.0 Gbps (SStatus 123 SControl 300) [ 3.366879] ata1.00: ATA-8: TOSHIBA MK5056GSY, LH003C, max UDMA/100 [ 3.366887] ata1.00: 976773168 sectors, multi 16: LBA48 NCQ (depth 31/32), AA [ 3.368149] ata1.00: configured for UDMA/100 [ 3.368362] scsi 0:0:0:0: Direct-Access ATA TOSHIBA MK5056GS LH00 PQ: 0 ANSI: 5 [ 3.368550] sd 0:0:0:0: Attached scsi generic sg0 type 0 [ 3.368637] sd 0:0:0:0: [sda] 976773168 512-byte logical blocks: (500 GB/465 GiB) [ 3.368686] sd 0:0:0:0: [sda] Write Protect is off [ 3.368689] sd 0:0:0:0: [sda] Mode Sense: 00 3a 00 00 [ 3.368710] sd 0:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA [ 3.375775] ata2: SATA link up 1.5 Gbps (SStatus 113 SControl 300) [ 3.395674] usb 2-1: new high speed USB device using ehci_hcd and address 2 [ 3.395684] ata2.00: ATAPI: hp CDDVDW TS-L633N, 0300, max UDMA/100 [ 3.417211] ata2.00: configured for UDMA/100 [ 3.423085] scsi 1:0:0:0: CD-ROM hp CDDVDW TS-L633N 0300 PQ: 0 ANSI: 5 [ 3.431534] sr0: scsi3-mmc drive: 24x/24x writer dvd-ram cd/rw xa/form2 cdda tray [ 3.431541] cdrom: Uniform CD-ROM driver Revision: 3.20 [ 3.431694] sr 1:0:0:0: Attached scsi CD-ROM sr0 [ 3.431756] sr 1:0:0:0: Attached scsi generic sg1 type 5 [ 3.432492] sda: sda1 sda2 sda3 sda4 [ 3.432855] sd 0:0:0:0: [sda] Attached SCSI disk [ 3.495631] Refined TSC clocksource calibration: 1596.178 MHz. [ 3.495640] Switching to clocksource tsc [ 3.525731] firewire_core: created device fw0: GUID 00241b00c3e9c701, S400 [ 3.546302] hub 2-1:1.0: USB hub found [ 3.546488] hub 2-1:1.0: 8 ports detected [ 3.625683] usb 1-1.1: new low speed USB device using ehci_hcd and address 3 [ 3.752687] usbcore: registered new interface driver usbhid [ 3.752690] usbhid: USB HID core driver [ 3.756855] input: A4Tech PS/2+USB Mouse as /devices/pci0000:00/0000:00:1a.0/usb1/1-1/1-1.1/1-1.1:1.0/input/input5 [ 3.756937] a4tech 0003:09DA:000A.0001: input,hidraw0: USB HID v1.10 Mouse [A4Tech PS/2+USB Mouse] on usb-0000:00:1a.0-1.1/input0 [ 3.825473] usb 1-1.2: new high speed USB device using ehci_hcd and address 4 [ 3.944004] usbcore: registered new interface driver uas [ 3.947925] Initializing USB Mass Storage driver... [ 3.948240] scsi6 : usb-storage 1-1.2:1.0 [ 3.948499] usbcore: registered new interface driver usb-storage [ 3.948502] USB Mass Storage support registered. [ 4.015360] usb 2-1.1: new full speed USB device using ehci_hcd and address 3 [ 4.075002] CE: hpet increased min_delta_ns to 20113 nsec [ 4.205203] usb 2-1.2: new high speed USB device using ehci_hcd and address 4 [ 4.337824] EXT4-fs (loop0): mounted filesystem with ordered data mode. Opts: (null) [ 4.946010] scsi 6:0:0:0: Direct-Access Kingston DataTraveler G3 1.00 PQ: 0 ANSI: 2 [ 4.946862] sd 6:0:0:0: Attached scsi generic sg2 type 0 [ 4.947457] scsi7 : usb-storage 2-1.2:1.0 [ 4.947661] sd 6:0:0:0: [sdb] 7818184 512-byte logical blocks: (4.00 GB/3.72 GiB) [ 4.948353] sd 6:0:0:0: [sdb] Write Protect is off [ 4.948360] sd 6:0:0:0: [sdb] Mode Sense: 03 00 00 00 [ 4.949153] sd 6:0:0:0: [sdb] No Caching mode page present [ 4.949158] sd 6:0:0:0: [sdb] Assuming drive cache: write through [ 4.952032] sd 6:0:0:0: [sdb] No Caching mode page present [ 4.952038] sd 6:0:0:0: [sdb] Assuming drive cache: write through [ 4.952769] sdb: sdb1 [ 4.955567] sd 6:0:0:0: [sdb] No Caching mode page present [ 4.955573] sd 6:0:0:0: [sdb] Assuming drive cache: write through [ 4.955578] sd 6:0:0:0: [sdb] Attached SCSI removable disk [ 5.024561] usb 2-1.5: new high speed USB device using ehci_hcd and address 5 [ 5.244335] usb 2-1.7: new full speed USB device using ehci_hcd and address 6 [ 5.945345] scsi 7:0:0:0: Direct-Access WD My Passport 0730 1014 PQ: 0 ANSI: 6 [ 5.946458] scsi 7:0:0:1: Enclosure WD SES Device 1014 PQ: 0 ANSI: 6 [ 5.947789] sd 7:0:0:0: Attached scsi generic sg3 type 0 [ 5.947912] scsi 7:0:0:1: Attached scsi generic sg4 type 13 [ 5.948910] sd 7:0:0:0: [sdc] 976707584 512-byte logical blocks: (500 GB/465 GiB) [ 5.949629] sd 7:0:0:0: [sdc] Write Protect is off [ 5.949633] sd 7:0:0:0: [sdc] Mode Sense: 47 00 10 08 [ 5.951100] sd 7:0:0:0: [sdc] No Caching mode page present [ 5.951105] sd 7:0:0:0: [sdc] Assuming drive cache: write through [ 5.954140] sd 7:0:0:0: [sdc] No Caching mode page present [ 5.954143] sd 7:0:0:0: [sdc] Assuming drive cache: write through [ 6.325054] sdc: sdc1 [ 6.328441] sd 7:0:0:0: [sdc] No Caching mode page present [ 6.328444] sd 7:0:0:0: [sdc] Assuming drive cache: write through [ 6.328447] sd 7:0:0:0: [sdc] Attached SCSI disk [ 11.629885] <30>udev[360]: starting version 167 [ 11.683233] type=1400 audit(1308290546.330:2): apparmor="STATUS" operation="profile_load" name="/sbin/dhclient" pid=430 comm="apparmor_parser" [ 11.684328] type=1400 audit(1308290546.330:3): apparmor="STATUS" operation="profile_load" name="/usr/lib/NetworkManager/nm-dhcp-client.action" pid=430 comm="apparmor_parser" [ 11.685039] type=1400 audit(1308290546.330:4): apparmor="STATUS" operation="profile_load" name="/usr/lib/connman/scripts/dhclient-script" pid=430 comm="apparmor_parser" [ 11.692577] lp: driver loaded but no devices found [ 11.708056] EDAC MC: Ver: 2.1.0 Apr 11 2011 [ 11.728765] EDAC MC0: Giving out device to 'i7core_edac.c' 'i7 core #0': DEV 0000:ff:03.0 [ 11.728800] EDAC PCI0: Giving out device to module 'i7core_edac' controller 'EDAC PCI controller': DEV '0000:ff:03.0' (POLLED) [ 11.728806] EDAC i7core: Driver loaded. [ 11.761604] Linux video capture interface: v2.00 [ 11.769465] uvcvideo: Found UVC 1.00 device CNF9013 (04f2:b179) [ 11.785166] Bluetooth: Core ver 2.15 [ 11.785193] NET: Registered protocol family 31 [ 11.785196] Bluetooth: HCI device and connection manager initialized [ 11.785200] Bluetooth: HCI socket layer initialized [ 11.791745] input: CNF9013 as /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.5/2-1.5:1.0/input/input6 [ 11.791897] usbcore: registered new interface driver uvcvideo [ 11.791901] USB Video Class driver (v1.0.0) [ 11.840875] cfg80211: Calling CRDA to update world regulatory domain [ 11.849534] Bluetooth: Generic Bluetooth USB driver ver 0.6 [ 11.852095] usbcore: registered new interface driver btusb [ 11.852214] IR NEC protocol handler initialized [ 11.852879] acpi device:0c: registered as cooling_device8 [ 11.853012] input: Video Bus as /devices/LNXSYSTM:00/device:00/PNP0A08:00/device:09/LNXVIDEO:01/input/input7 [ 11.853095] ACPI: Video Device [VGA] (multi-head: yes rom: no post: no) [ 11.858366] IR RC5(x) protocol handler initialized [ 11.859541] ene_ir: chip is 0x3926 - kbver = 0x00, rev = 0xd2 [ 11.859545] ene_ir: PLL freq = 1406 [ 11.859547] ene_ir: KB3926D or higher detected [ 11.859573] ene_ir: Firmware regs: e0 00 [ 11.859575] ene_ir: Hardware features: [ 11.859577] ene_ir: * Uses GPIO 40 for IR demodulated input [ 11.895014] jmb38x_ms 0000:04:00.3: PCI INT A -> GSI 16 (level, low) -> IRQ 16 [ 11.895024] jmb38x_ms 0000:04:00.3: setting latency timer to 64 [ 11.896109] IR RC6 protocol handler initialized [ 11.903928] IR JVC protocol handler initialized [ 11.904638] input: HP WMI hotkeys as /devices/virtual/input/input8 [ 11.909311] IR Sony protocol handler initialized [ 11.916857] lirc_dev: IR Remote Control driver registered, major 249 [ 11.936809] IR LIRC bridge handler initialized [ 11.937868] cfg80211: World regulatory domain updated: [ 11.937873] cfg80211: (start_freq - end_freq @ bandwidth), (max_antenna_gain, max_eirp) [ 11.937878] cfg80211: (2402000 KHz - 2472000 KHz @ 40000 KHz), (300 mBi, 2000 mBm) [ 11.937884] cfg80211: (2457000 KHz - 2482000 KHz @ 20000 KHz), (300 mBi, 2000 mBm) [ 11.937889] cfg80211: (2474000 KHz - 2494000 KHz @ 20000 KHz), (300 mBi, 2000 mBm) [ 11.937893] cfg80211: (5170000 KHz - 5250000 KHz @ 40000 KHz), (300 mBi, 2000 mBm) [ 11.937898] cfg80211: (5735000 KHz - 5835000 KHz @ 40000 KHz), (300 mBi, 2000 mBm) [ 11.948937] hp_accel: laptop model unknown, using default axes configuration [ 11.950558] lis3lv02d: 8 bits sensor found [ 11.958947] Registered IR keymap rc-rc6-mce [ 11.959340] input: ENE eHome Infrared Remote Receiver as /devices/virtual/rc/rc0/input9 [ 11.960028] rc0: ENE eHome Infrared Remote Receiver as /devices/virtual/rc/rc0 [ 11.964206] rc rc0: lirc_dev: driver ir-lirc-codec (ene_ir) registered at minor = 0 [ 11.964210] ene_ir: driver has been succesfully loaded [ 12.005383] BUG: unable to handle kernel NULL pointer dereference at 0000000000000008 [ 12.005605] IP: [] ses_enclosure_data_process+0x1a0/0x3a0 [ses] [ 12.005768] PGD 13361f067 PUD 133627067 PMD 0 [ 12.006051] Oops: 0002 [#1] SMP [ 12.006265] last sysfs file: /sys/module/snd_pcm/initstate [ 12.006340] CPU 4 [ 12.006399] Modules linked in: snd_usbmidi_lib snd_hda_codec snd_seq_midi snd_rawmidi iwlcore ir_lirc_codec rc_rc6_mce mac80211 lirc_dev psmouse ir_sony_decoder hp_accel(+) snd_seq_midi_event hp_wmi ir_jvc_decoder snd_seq ir_rc6_decoder snd_hwdep jmb38x_ms snd_seq_device snd_pcm sparse_keymap lis3lv02d ene_ir ir_rc5_decoder ir_nec_decoder btusb rc_core serio_raw memstick ses(+) snd_timer [ 12.008376] input: ST LIS3LV02DL Accelerometer as /devices/platform/lis3lv02d/input/input10 [ 12.008513] input_polldev cfg80211 [ 12.008589] Registered led device: hp::hddprotect [ 12.008612] hp_accel: driver loaded [ 12.008844] bluetooth uvcvideo videodev video enclosure i7core_edac snd edac_core v4l2_compat_ioctl32 soundcore lp snd_page_alloc parport usb_storage uas hid_a4tech usbhid hid ahci firewire_ohci libahci r8169 sdhci_pci firewire_core sdhci crc_itu_t [ 12.010496] [ 12.010582] Pid: 548, comm: modprobe Not tainted 2.6.38-8-generic #42-Ubuntu Hewlett-Packard HP Pavilion dv6 Notebook PC/3659 [ 12.010949] RIP: 0010:[] [] ses_enclosure_data_process+0x1a0/0x3a0 [ses] [ 12.011112] RSP: 0018:ffff8801035e9d88 EFLAGS: 00010286 [ 12.011197] RAX: ffff880101b3aeb8 RBX: 0000000000000000 RCX: 0000000000000000 [ 12.011280] RDX: 0000000000000000 RSI: 0000000000000000 RDI: 0000000000000000 [ 12.011364] RBP: ffff8801035e9df8 R08: 00000000000007f9 R09: ffff880137022ddc [ 12.011448] R10: 0000000000000000 R11: ffff880101a00000 R12: ffff880134e5f442 [ 12.011532] R13: 0000000000000000 R14: ffff880134e04ea4 R15: 0000000000000237 [ 12.011614] FS: 00007fe283dec720(0000) GS:ffff8800bf500000(0000) knlGS:0000000000000000 [ 12.011783] CS: 0010 DS: 0000 ES: 0000 CR0: 000000008005003b [ 12.011856] CR2: 0000000000000008 CR3: 0000000106387000 CR4: 00000000000006e0 [ 12.011945] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 [ 12.012034] DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400 [ 12.012119] Process modprobe (pid: 548, threadinfo ffff8801035e8000, task ffff8801059b8000) [ 12.012221] Stack: [ 12.012292] 0000000000000000 ffff880133249148 ffff002000830112 ffffffff00000000 [ 12.012609] ffff880101a00000 ffff8801050dfae0 ffff880137022dd8 000000d3000000e0 [ 12.013004] ffff8801035e9df8 ffff880102913540 ffff880133249000 ffff880101a00000 [ 12.013293] Call Trace: [ 12.013369] [] ses_match_to_enclosure+0xa5/0x1f0 [ses] [ 12.013453] [] ses_intf_add+0x4b8/0x578 [ses] [ 12.013539] [] ? ses_init+0x0/0x1000 [ses] [ 12.013621] [] class_interface_register+0xa9/0xe0 [ 12.013704] [] scsi_register_interface+0x16/0x20 [ 12.013786] [] ses_init+0x14/0x1000 [ses] [ 12.013868] [] do_one_initcall+0x45/0x190 [ 12.013952] [] sys_init_module+0xfb/0x250 [ 12.014028] [] system_call_fastpath+0x16/0x1b [ 12.014168] Code: 49 63 c0 41 83 c0 01 48 69 c0 78 02 00 00 49 8d 84 03 78 02 00 00 48 3d 00 f0 ff ff 77 29 4d 85 e4 74 24 41 0f b6 14 24 48 8b 30 <4c> 89 66 08 f6 c2 80 75 13 89 d0 83 e0 0f 83 f8 06 0f 84 89 00 [ 12.018123] RIP [] ses_enclosure_data_process+0x1a0/0x3a0 [ses] [ 12.018280] RSP [ 12.018360] CR2: 0000000000000008 [ 12.018482] ---[ end trace 817006b321490ab6 ]--- [ 12.028077] nvidia: module license 'NVIDIA' taints kernel. [ 12.028183] iwlagn: Intel(R) Wireless WiFi Link AGN driver for Linux, in-tree: [ 12.028302] iwlagn: Copyright(c) 2003-2010 Intel Corporation [ 12.028445] iwlagn 0000:02:00.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16 [ 12.028538] iwlagn 0000:02:00.0: setting latency timer to 64 [ 12.028647] iwlagn 0000:02:00.0: Detected Intel(R) Centrino(R) Advanced-N 6200 AGN, REV=0x74 [ 12.038639] HDA Intel 0000:00:1b.0: PCI INT A -> GSI 22 (level, low) -> IRQ 22 [ 12.038888] HDA Intel 0000:00:1b.0: irq 47 for MSI/MSI-X [ 12.039012] HDA Intel 0000:00:1b.0: setting latency timer to 64 [ 12.048467] iwlagn 0000:02:00.0: device EEPROM VER=0x436, CALIB=0x6 [ 12.048573] iwlagn 0000:02:00.0: Device SKU: 0Xb [ 12.048713] iwlagn 0000:02:00.0: Tunable channels: 13 802.11bg, 24 802.11a channels [ 12.048965] iwlagn 0000:02:00.0: irq 48 for MSI/MSI-X [ 12.049014] usbcore: registered new interface driver snd-usb-audio [ 12.051891] iwlagn 0000:02:00.0: loaded firmware version 9.221.4.1 build 25532 [ 12.052270] cfg80211: Ignoring regulatory request Set by core since the driver uses its own custom regulatory domain [ 12.062298] ieee80211 phy0: Selected rate control algorithm 'iwl-agn-rs' [ 12.188493] input: HDA Intel Mic at Ext Front Jack as /devices/pci0000:00/0000:00:1b.0/sound/card0/input11 [ 12.188738] input: HDA Intel Line Out at Ext Front Jack as /devices/pci0000:00/0000:00:1b.0/sound/card0/input12 [ 12.189134] HDA Intel 0000:01:00.1: PCI INT A -> GSI 16 (level, low) -> IRQ 16 [ 12.189281] hda_intel: Disable MSI for Nvidia chipset [ 12.189567] HDA Intel 0000:01:00.1: setting latency timer to 64 [ 12.928176] Synaptics Touchpad, model: 1, fw: 6.5, id: 0x1c0b1, caps: 0xa04751/0xa00000/0x0 [ 13.013239] input: SynPS/2 Synaptics TouchPad as /devices/platform/i8042/serio1/input/input13 [ 13.137972] Adding 262136k swap on /host/ubuntu/disks/swap.disk. Priority:-1 extents:1 across:262136k [ 13.168629] EXT4-fs (loop0): re-mounted. Opts: errors=remount-ro [ 13.295284] type=1400 audit(1308290547.940:5): apparmor="STATUS" operation="profile_load" name="/usr/share/gdm/guest-session/Xsession" pid=884 comm="apparmor_parser" [ 13.296124] type=1400 audit(1308290547.940:6): apparmor="STATUS" operation="profile_load" name="/usr/sbin/tcpdump" pid=889 comm="apparmor_parser" [ 13.296351] type=1400 audit(1308290547.940:7): apparmor="STATUS" operation="profile_load" name="/usr/lib/cups/backend/cups-pdf" pid=888 comm="apparmor_parser" [ 13.296536] type=1400 audit(1308290547.940:8): apparmor="STATUS" operation="profile_replace" name="/sbin/dhclient" pid=885 comm="apparmor_parser" [ 13.297558] type=1400 audit(1308290547.950:9): apparmor="STATUS" operation="profile_load" name="/usr/sbin/cupsd" pid=888 comm="apparmor_parser" [ 13.297724] type=1400 audit(1308290547.950:10): apparmor="STATUS" operation="profile_replace" name="/usr/lib/NetworkManager/nm-dhcp-client.action" pid=885 comm="apparmor_parser" [ 13.298422] type=1400 audit(1308290547.950:11): apparmor="STATUS" operation="profile_replace" name="/usr/lib/connman/scripts/dhclient-script" pid=885 comm="apparmor_parser" [ 13.417045] Bluetooth: L2CAP ver 2.15 [ 13.417200] Bluetooth: L2CAP socket layer initialized [ 13.425408] Bluetooth: BNEP (Ethernet Emulation) ver 1.3 [ 13.425544] Bluetooth: BNEP filters: protocol multicast [ 13.429779] Bluetooth: SCO (Voice Link) ver 0.6 [ 13.429903] Bluetooth: SCO socket layer initialized fwts-test/oops-0001/test-0001.sh000077500000000000000000000006441231470457100162600ustar00rootroot00000000000000#!/bin/bash # TEST="Test oops against known failure patterns" NAME=test-0001.sh TMPLOG=$TMP/oops.log.$$ $FWTS --log-format="%line %owner " -w 80 --klog=$FWTSTESTDIR/oops-0001/oops.txt oops - | grep "^[0-9]*[ ]*oops" | cut -c7- > $TMPLOG diff $TMPLOG $FWTSTESTDIR/oops-0001/oops-0001.log >> $FAILURE_LOG ret=$? if [ $ret -eq 0 ]; then echo PASSED: $TEST, $NAME else echo FAILED: $TEST, $NAME fi rm $TMPLOG exit $ret fwts-test/oops-0001/test-0002.sh000077500000000000000000000007321231470457100162570ustar00rootroot00000000000000#!/bin/bash # TEST="Test oops summary table against known failure patterns" NAME=test-0002.sh TMPLOG=$TMP/oops.log.$$ $FWTS --log-format="%line %owner " -w 400 --klog=$FWTSTESTDIR/oops-0001/oops.txt oops - | grep summary | sed 's/line: [0-9]*//' | cut -c7- > $TMPLOG grep -v "log line:" $FWTSTESTDIR/oops-0001/oops-0002.log | diff $TMPLOG - >> $FAILURE_LOG ret=$? if [ $ret -eq 0 ]; then echo PASSED: $TEST, $NAME else echo FAILED: $TEST, $NAME fi rm $TMPLOG exit $ret fwts-test/oops-0001/test-0003.sh000077500000000000000000000006531231470457100162620ustar00rootroot00000000000000#!/bin/bash # TEST="Test oops against known failure rate" NAME=test-0003.sh TMPLOG=$TMP/oops.log.$$ $FWTS --log-format="%line %owner " -w 80 --klog=$FWTSTESTDIR/oops-0001/oops.txt oops - | grep "oopses" | grep -v "summary" | cut -c7- > $TMPLOG diff $TMPLOG $FWTSTESTDIR/oops-0001/oops-0003.log >> $FAILURE_LOG ret=$? if [ $ret -eq 0 ]; then echo PASSED: $TEST, $NAME else echo FAILED: $TEST, $NAME fi rm $TMPLOG exit $ret fwts-test/oops-0001/testcase.txt000066400000000000000000000000661231470457100167360ustar00rootroot00000000000000Test fwts oops test against real kernel oops messages fwts-test/osilinux-0001/000077500000000000000000000000001231470457100152525ustar00rootroot00000000000000fwts-test/osilinux-0001/acpidump-0001.log000066400000000000000000004054211231470457100201430ustar00rootroot00000000000000DSDT @ 0xbf6d9b6a 0000: 44 53 44 54 f4 5f 00 00 02 11 54 4f 53 43 50 4c DSDT._....TOSCPL 0010: 43 52 45 53 54 4c 4e 45 00 00 04 06 49 4e 54 4c CRESTLNE....INTL 0020: 08 06 06 20 08 5a 30 30 30 01 08 5a 30 30 31 0a ... .Z000..Z001. 0030: 02 08 5a 30 30 32 0a 04 08 5a 30 30 33 0a 08 08 ..Z002...Z003... 0040: 5a 30 30 34 00 08 5a 30 30 35 0a 0f 08 5a 30 30 Z004..Z005...Z00 0050: 36 0a 0d 08 5a 30 30 37 0a 0b 08 5a 30 30 38 0a 6...Z007...Z008. 0060: 09 08 45 43 44 59 0a 07 5b 01 4d 55 54 58 00 5b ..ECDY..[.MUTX.[ 0070: 80 50 52 54 30 01 0a 80 0a 04 5b 81 0b 50 52 54 .PRT0.....[..PRT 0080: 30 13 50 38 30 48 20 14 4e 07 50 38 58 48 0a a0 0.P80H .N.P8XH.. 0090: 17 93 68 00 70 7d 7b 50 38 30 44 0c 00 ff ff ff ..h.p}{P80D..... 00a0: 00 69 00 50 38 30 44 a0 1b 93 68 01 70 7d 7b 50 .i.P80D...h.p}{P 00b0: 38 30 44 0c ff 00 ff ff 00 79 69 0a 08 00 00 50 80D......yi....P 00c0: 38 30 44 a0 1c 93 68 0a 02 70 7d 7b 50 38 30 44 80D...h..p}{P80D 00d0: 0c ff ff 00 ff 00 79 69 0a 10 00 00 50 38 30 44 ......yi....P80D 00e0: a0 1c 93 68 0a 03 70 7d 7b 50 38 30 44 0c ff ff ...h..p}{P80D... 00f0: ff 00 00 79 69 0a 18 00 00 50 38 30 44 70 50 38 ...yi....P80DpP8 0100: 30 44 50 38 30 48 14 0c 5f 50 49 43 01 70 68 47 0DP80H.._PIC.phG 0110: 50 49 43 14 46 06 5f 50 54 53 01 70 00 50 38 30 PIC.F._PTS.p.P80 0120: 44 50 38 58 48 00 68 a0 1e 93 68 0a 03 70 01 5c DP8XH.h...h..p.\ 0130: 2f 05 5f 53 42 5f 50 43 49 30 4c 50 43 42 45 43 /._SB_PCI0LPCBEC 0140: 30 5f 53 33 4c 44 a0 33 93 68 0a 04 70 01 5c 2f 0_S3LD.3.h..p.\/ 0150: 05 5f 53 42 5f 50 43 49 30 4c 50 43 42 45 43 30 ._SB_PCI0LPCBEC0 0160: 5f 53 33 4c 44 5c 2f 04 5f 53 42 5f 50 43 49 30 _S3LD\/._SB_PCI0 0170: 4c 50 43 42 50 48 53 53 0a 0e 14 4c 1c 5f 57 41 LPCBPHSS...L._WA 0180: 4b 01 50 38 58 48 01 0a ab a0 30 91 93 68 0a 03 K.P8XH....0..h.. 0190: 93 68 0a 04 a0 25 7b 43 46 47 44 0c 00 00 00 01 .h...%{CFGD..... 01a0: 00 a0 18 90 7b 43 46 47 44 0a f0 00 93 4f 53 59 ....{CFGD....OSY 01b0: 53 0b d1 07 54 52 41 50 0a 3d a0 18 93 52 50 31 S...TRAP.=...RP1 01c0: 44 00 86 5c 2f 03 5f 53 42 5f 50 43 49 30 52 50 D..\/._SB_PCI0RP 01d0: 30 31 00 a0 18 93 52 50 32 44 00 86 5c 2f 03 5f 01....RP2D..\/._ 01e0: 53 42 5f 50 43 49 30 52 50 30 32 00 a0 18 93 52 SB_PCI0RP02....R 01f0: 50 33 44 00 86 5c 2f 03 5f 53 42 5f 50 43 49 30 P3D..\/._SB_PCI0 0200: 52 50 30 33 00 a0 18 93 52 50 34 44 00 86 5c 2f RP03....RP4D..\/ 0210: 03 5f 53 42 5f 50 43 49 30 52 50 30 34 00 a0 18 ._SB_PCI0RP04... 0220: 93 52 50 35 44 00 86 5c 2f 03 5f 53 42 5f 50 43 .RP5D..\/._SB_PC 0230: 49 30 52 50 30 35 00 a0 18 93 52 50 36 44 00 86 I0RP05....RP6D.. 0240: 5c 2f 03 5f 53 42 5f 50 43 49 30 52 50 30 36 00 \/._SB_PCI0RP06. 0250: a0 12 93 68 0a 03 50 38 58 48 00 0a 30 54 52 41 ...h..P8XH..0TRA 0260: 50 0a 46 a0 43 0d 93 68 0a 04 50 38 58 48 00 0a P.F.C..h..P8XH.. 0270: 40 5c 2f 04 5f 53 42 5f 50 43 49 30 4c 50 43 42 @\/._SB_PCI0LPCB 0280: 50 48 53 53 0a 0f 70 57 41 4b 46 60 70 00 57 41 PHSS..pWAKF`p.WA 0290: 4b 46 7b 60 0a 05 60 a0 18 93 60 01 50 38 58 48 KF{`..`...`.P8XH 02a0: 00 0a 41 86 5c 2e 5f 53 42 5f 50 57 52 42 0a 02 ..A.\._SB_PWRB.. 02b0: a0 46 08 44 54 53 45 54 52 41 50 0a 47 a0 42 06 .F.DTSETRAP.G.B. 02c0: 90 5c 2f 04 5f 53 42 5f 50 43 49 30 4c 50 43 42 .\/._SB_PCI0LPCB 02d0: 45 43 4f 4b 93 45 43 44 59 00 a0 27 92 95 44 54 ECOK.ECDY..'..DT 02e0: 53 31 44 54 53 32 70 44 54 53 31 5c 2f 05 5f 53 S1DTS2pDTS1\/._S 02f0: 42 5f 50 43 49 30 4c 50 43 42 45 43 30 5f 53 4b B_PCI0LPCBEC0_SK 0300: 54 41 a1 1d 70 44 54 53 32 5c 2f 05 5f 53 42 5f TA..pDTS2\/._SB_ 0310: 50 43 49 30 4c 50 43 42 45 43 30 5f 53 4b 54 41 PCI0LPCBEC0_SKTA 0320: a1 16 5c 2f 04 5f 53 42 5f 50 43 49 30 4c 50 43 ..\/._SB_PCI0LPC 0330: 42 50 48 53 53 0a 10 5c 2e 5f 50 52 5f 52 50 50 BPHSS..\._PR_RPP 0340: 43 a4 12 04 02 00 00 14 1e 47 45 54 42 0b 77 68 C........GETB.wh 0350: 0a 08 60 77 69 0a 08 61 5b 13 6a 60 61 54 42 46 ..`wi..a[.j`aTBF 0360: 33 a4 54 42 46 33 14 42 09 50 4e 4f 54 08 a0 4a 3.TBF3.B.PNOT..J 0370: 06 4d 50 45 4e a0 31 7b 50 44 43 30 0a 08 00 86 .MPEN.1{PDC0.... 0380: 5c 2e 5f 50 52 5f 43 50 55 30 0a 80 a0 1a 7b 50 \._PR_CPU0....{P 0390: 44 43 30 0a 10 00 5b 22 0a 64 86 5c 2e 5f 50 52 DC0...[".d.\._PR 03a0: 5f 43 50 55 30 0a 81 a0 31 7b 50 44 43 31 0a 08 _CPU0...1{PDC1.. 03b0: 00 86 5c 2e 5f 50 52 5f 43 50 55 31 0a 80 a0 1a ..\._PR_CPU1.... 03c0: 7b 50 44 43 31 0a 10 00 5b 22 0a 64 86 5c 2e 5f {PDC1...[".d.\._ 03d0: 50 52 5f 43 50 55 31 0a 81 a1 1f 86 5c 2e 5f 50 PR_CPU1.....\._P 03e0: 52 5f 43 50 55 30 0a 80 5b 22 0a 64 86 5c 2e 5f R_CPU0..[".d.\._ 03f0: 50 52 5f 43 50 55 30 0a 81 14 17 54 52 41 50 09 PR_CPU0....TRAP. 0400: 70 68 53 4d 49 46 70 00 54 52 50 30 a4 53 4d 49 phSMIFp.TRP0.SMI 0410: 46 10 41 0f 5f 53 42 5f 14 4a 0e 5f 49 4e 49 00 F.A._SB_.J._INI. 0420: 70 0b 99 99 4d 41 52 4b a0 1c 44 54 53 45 54 52 p...MARK..DTSETR 0430: 41 50 0a 47 5e 2f 03 50 43 49 30 4c 50 43 42 50 AP.G^/.PCI0LPCBP 0440: 48 53 53 0a 10 70 0b d0 07 4f 53 59 53 a0 4a 09 HSS..p...OSYS.J. 0450: 5b 12 5f 4f 53 49 60 a0 18 5f 4f 53 49 0d 4c 69 [._OSI`.._OSI.Li 0460: 6e 75 78 00 70 01 4c 49 4e 58 70 00 45 43 44 59 nux.p.LINXp.ECDY 0470: a0 1b 5f 4f 53 49 0d 57 69 6e 64 6f 77 73 20 32 .._OSI.Windows 2 0480: 30 30 31 00 70 0b d1 07 4f 53 59 53 a0 1f 5f 4f 001.p...OSYS.._O 0490: 53 49 0d 57 69 6e 64 6f 77 73 20 32 30 30 31 20 SI.Windows 2001 04a0: 53 50 31 00 70 0b d1 07 4f 53 59 53 a0 1f 5f 4f SP1.p...OSYS.._O 04b0: 53 49 0d 57 69 6e 64 6f 77 73 20 32 30 30 31 20 SI.Windows 2001 04c0: 53 50 32 00 70 0b d2 07 4f 53 59 53 a0 1b 5f 4f SP2.p...OSYS.._O 04d0: 53 49 0d 57 69 6e 64 6f 77 73 20 32 30 30 36 00 SI.Windows 2006. 04e0: 70 0b d6 07 4f 53 59 53 a0 14 90 4d 50 45 4e 93 p...OSYS...MPEN. 04f0: 4f 53 59 53 0b d1 07 54 52 41 50 0a 3d 54 52 41 OSYS...TRAP.=TRA 0500: 50 0a 2b 5b 80 47 4e 56 53 00 0c bc 2d 6e bf 0b P.+[.GNVS...-n.. 0510: 00 01 5b 81 45 24 47 4e 56 53 10 4f 53 59 53 10 ..[.E$GNVS.OSYS. 0520: 53 4d 49 46 08 50 52 4d 30 08 50 52 4d 31 08 53 SMIF.PRM0.PRM1.S 0530: 43 49 46 08 50 52 4d 32 08 50 52 4d 33 08 4c 43 CIF.PRM2.PRM3.LC 0540: 4b 46 08 50 52 4d 34 08 50 52 4d 35 08 50 38 30 KF.PRM4.PRM5.P80 0550: 44 20 4c 49 44 53 08 50 57 52 53 08 44 42 47 53 D LIDS.PWRS.DBGS 0560: 08 4c 49 4e 58 08 00 08 41 43 54 31 08 41 43 54 .LINX...ACT1.ACT 0570: 54 08 50 53 56 54 08 54 43 31 56 08 54 43 32 56 T.PSVT.TC1V.TC2V 0580: 08 54 53 50 56 08 43 52 54 54 08 44 54 53 45 08 .TSPV.CRTT.DTSE. 0590: 44 54 53 31 08 44 54 53 32 08 00 40 05 41 50 49 DTS1.DTS2..@.API 05a0: 43 08 4d 50 45 4e 08 50 43 50 30 08 50 43 50 31 C.MPEN.PCP0.PCP1 05b0: 08 50 50 43 4d 08 00 28 43 4d 41 50 08 43 4d 42 .PPCM..(CMAP.CMB 05c0: 50 08 4c 50 54 50 08 46 44 43 50 08 00 30 49 47 P.LPTP.FDCP..0IG 05d0: 44 53 08 54 4c 53 54 08 43 41 44 4c 08 50 41 44 DS.TLST.CADL.PAD 05e0: 4c 08 43 53 54 45 10 4e 53 54 45 10 53 53 54 45 L.CSTE.NSTE.SSTE 05f0: 10 4e 44 49 44 08 44 49 44 31 20 44 49 44 32 20 .NDID.DID1 DID2 0600: 44 49 44 33 20 44 49 44 34 20 44 49 44 35 20 00 DID3 DID4 DID5 . 0610: 40 06 42 4c 43 53 08 42 52 54 4c 08 41 4c 53 45 @.BLCS.BRTL.ALSE 0620: 08 41 4c 41 46 08 4c 4c 4f 57 08 4c 48 49 48 08 .ALAF.LLOW.LHIH. 0630: 00 08 45 4d 41 45 08 45 4d 41 50 10 45 4d 41 4c ..EMAE.EMAP.EMAL 0640: 10 00 08 4d 45 46 45 08 00 18 54 50 4d 50 08 54 ...MEFE...TPMP.T 0650: 50 4d 45 08 00 40 04 47 54 46 30 38 47 54 46 32 PME..@.GTF08GTF2 0660: 38 49 44 45 4d 08 47 54 46 31 38 00 40 09 41 53 8IDEM.GTF18.@.AS 0670: 4c 42 20 49 42 54 54 08 49 50 41 54 08 49 54 56 LB IBTT.IPAT.ITV 0680: 46 08 49 54 56 4d 08 49 50 53 43 08 49 42 4c 43 F.ITVM.IPSC.IBLC 0690: 08 49 42 49 41 08 49 53 53 43 08 49 34 30 39 08 .IBIA.ISSC.I409. 06a0: 49 35 30 39 08 49 36 30 39 08 49 37 30 39 08 49 I509.I609.I709.I 06b0: 44 4d 4d 08 49 44 4d 53 08 49 46 31 45 08 48 56 DMM.IDMS.IF1E.HV 06c0: 43 4f 08 4e 58 44 31 20 4e 58 44 32 20 4d 41 52 CO.NXD1 NXD2 MAR 06d0: 4b 10 42 52 41 44 08 42 54 45 4e 08 56 56 45 4e K.BRAD.BTEN.VVEN 06e0: 08 42 47 54 4c 08 54 4d 45 45 01 00 07 53 43 55 .BGTL.TMEE...SCU 06f0: 30 01 53 43 55 31 01 53 43 55 32 01 53 43 55 33 0.SCU1.SCU2.SCU3 0700: 01 00 04 58 4b 53 50 01 58 4b 49 4e 01 58 4b 49 ...XKSP.XKIN.XKI 0710: 44 01 58 4b 4f 4b 01 00 04 42 47 55 31 08 42 53 D.XKOK...BGU1.BS 0720: 54 31 08 42 46 43 31 10 57 4b 4c 4e 08 57 41 4b T1.BFC1.WKLN.WAK 0730: 46 08 44 53 4d 44 08 42 41 59 53 08 48 41 50 45 F.DSMD.BAYS.HAPE 0740: 01 00 07 44 54 53 4d 01 00 07 4f 44 54 31 08 4f ...DTSM...ODT1.O 0750: 44 54 32 08 44 54 53 57 08 08 44 53 45 4e 01 08 DT2.DTSW..DSEN.. 0760: 45 43 4f 4e 00 08 47 50 49 43 00 08 43 54 59 50 ECON..GPIC..CTYP 0770: 00 08 4c 30 31 43 00 08 56 46 4e 30 00 08 56 46 ..L01C..VFN0..VF 0780: 4e 31 00 10 4a 7c 5f 47 50 45 14 46 35 5f 4c 30 N1..J|_GPE.F5_L0 0790: 31 00 72 4c 30 31 43 01 4c 30 31 43 50 38 58 48 1.rL01C.L01CP8XH 07a0: 00 01 50 38 58 48 01 4c 30 31 43 a0 48 08 90 93 ..P8XH.L01C.H... 07b0: 52 50 31 44 00 5c 2f 04 5f 53 42 5f 50 43 49 30 RP1D.\/._SB_PCI0 07c0: 52 50 30 31 48 50 53 58 5b 22 0a 64 a0 40 05 5c RP01HPSX[".d.@.\ 07d0: 2f 04 5f 53 42 5f 50 43 49 30 52 50 30 31 50 44 /._SB_PCI0RP01PD 07e0: 43 58 70 01 5c 2f 04 5f 53 42 5f 50 43 49 30 52 CXp.\/._SB_PCI0R 07f0: 50 30 31 50 44 43 58 70 01 5c 2f 04 5f 53 42 5f P01PDCXp.\/._SB_ 0800: 50 43 49 30 52 50 30 31 48 50 53 58 86 5c 2f 03 PCI0RP01HPSX.\/. 0810: 5f 53 42 5f 50 43 49 30 52 50 30 31 00 a1 16 70 _SB_PCI0RP01...p 0820: 01 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 30 31 .\/._SB_PCI0RP01 0830: 48 50 53 58 a0 48 08 90 93 52 50 32 44 00 5c 2f HPSX.H...RP2D.\/ 0840: 04 5f 53 42 5f 50 43 49 30 52 50 30 32 48 50 53 ._SB_PCI0RP02HPS 0850: 58 5b 22 0a 64 a0 40 05 5c 2f 04 5f 53 42 5f 50 X[".d.@.\/._SB_P 0860: 43 49 30 52 50 30 32 50 44 43 58 70 01 5c 2f 04 CI0RP02PDCXp.\/. 0870: 5f 53 42 5f 50 43 49 30 52 50 30 32 50 44 43 58 _SB_PCI0RP02PDCX 0880: 70 01 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 30 p.\/._SB_PCI0RP0 0890: 32 48 50 53 58 86 5c 2f 03 5f 53 42 5f 50 43 49 2HPSX.\/._SB_PCI 08a0: 30 52 50 30 32 00 a1 16 70 01 5c 2f 04 5f 53 42 0RP02...p.\/._SB 08b0: 5f 50 43 49 30 52 50 30 32 48 50 53 58 a0 48 08 _PCI0RP02HPSX.H. 08c0: 90 93 52 50 33 44 00 5c 2f 04 5f 53 42 5f 50 43 ..RP3D.\/._SB_PC 08d0: 49 30 52 50 30 33 48 50 53 58 5b 22 0a 64 a0 40 I0RP03HPSX[".d.@ 08e0: 05 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 30 33 .\/._SB_PCI0RP03 08f0: 50 44 43 58 70 01 5c 2f 04 5f 53 42 5f 50 43 49 PDCXp.\/._SB_PCI 0900: 30 52 50 30 33 50 44 43 58 70 01 5c 2f 04 5f 53 0RP03PDCXp.\/._S 0910: 42 5f 50 43 49 30 52 50 30 33 48 50 53 58 86 5c B_PCI0RP03HPSX.\ 0920: 2f 03 5f 53 42 5f 50 43 49 30 52 50 30 33 00 a1 /._SB_PCI0RP03.. 0930: 16 70 01 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 .p.\/._SB_PCI0RP 0940: 30 33 48 50 53 58 a0 48 08 90 93 52 50 34 44 00 03HPSX.H...RP4D. 0950: 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 30 34 48 \/._SB_PCI0RP04H 0960: 50 53 58 5b 22 0a 64 a0 40 05 5c 2f 04 5f 53 42 PSX[".d.@.\/._SB 0970: 5f 50 43 49 30 52 50 30 34 50 44 43 58 70 01 5c _PCI0RP04PDCXp.\ 0980: 2f 04 5f 53 42 5f 50 43 49 30 52 50 30 34 50 44 /._SB_PCI0RP04PD 0990: 43 58 70 01 5c 2f 04 5f 53 42 5f 50 43 49 30 52 CXp.\/._SB_PCI0R 09a0: 50 30 34 48 50 53 58 86 5c 2f 03 5f 53 42 5f 50 P04HPSX.\/._SB_P 09b0: 43 49 30 52 50 30 34 00 a1 16 70 01 5c 2f 04 5f CI0RP04...p.\/._ 09c0: 53 42 5f 50 43 49 30 52 50 30 34 48 50 53 58 a0 SB_PCI0RP04HPSX. 09d0: 48 08 90 93 52 50 35 44 00 5c 2f 04 5f 53 42 5f H...RP5D.\/._SB_ 09e0: 50 43 49 30 52 50 30 35 48 50 53 58 5b 22 0a 64 PCI0RP05HPSX[".d 09f0: a0 40 05 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 .@.\/._SB_PCI0RP 0a00: 30 35 50 44 43 58 70 01 5c 2f 04 5f 53 42 5f 50 05PDCXp.\/._SB_P 0a10: 43 49 30 52 50 30 35 50 44 43 58 70 01 5c 2f 04 CI0RP05PDCXp.\/. 0a20: 5f 53 42 5f 50 43 49 30 52 50 30 35 48 50 53 58 _SB_PCI0RP05HPSX 0a30: 86 5c 2f 03 5f 53 42 5f 50 43 49 30 52 50 30 35 .\/._SB_PCI0RP05 0a40: 00 a1 16 70 01 5c 2f 04 5f 53 42 5f 50 43 49 30 ...p.\/._SB_PCI0 0a50: 52 50 30 35 48 50 53 58 a0 48 08 90 93 52 50 36 RP05HPSX.H...RP6 0a60: 44 00 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 30 D.\/._SB_PCI0RP0 0a70: 36 48 50 53 58 5b 22 0a 64 a0 40 05 5c 2f 04 5f 6HPSX[".d.@.\/._ 0a80: 53 42 5f 50 43 49 30 52 50 30 36 50 44 43 58 70 SB_PCI0RP06PDCXp 0a90: 01 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 30 36 .\/._SB_PCI0RP06 0aa0: 50 44 43 58 70 01 5c 2f 04 5f 53 42 5f 50 43 49 PDCXp.\/._SB_PCI 0ab0: 30 52 50 30 36 48 50 53 58 86 5c 2f 03 5f 53 42 0RP06HPSX.\/._SB 0ac0: 5f 50 43 49 30 52 50 30 36 00 a1 16 70 01 5c 2f _PCI0RP06...p.\/ 0ad0: 04 5f 53 42 5f 50 43 49 30 52 50 30 36 48 50 53 ._SB_PCI0RP06HPS 0ae0: 58 14 42 0d 5f 4c 30 32 00 70 00 47 50 45 43 a0 X.B._L02.p.GPEC. 0af0: 4d 0a 5c 2f 04 5f 53 42 5f 50 43 49 30 4c 50 43 M.\/._SB_PCI0LPC 0b00: 42 45 43 4f 4b a0 4e 04 93 44 54 53 57 01 a0 27 BECOK.N..DTSW..' 0b10: 92 95 44 54 53 31 44 54 53 32 70 44 54 53 31 5c ..DTS1DTS2pDTS1\ 0b20: 2f 05 5f 53 42 5f 50 43 49 30 4c 50 43 42 45 43 /._SB_PCI0LPCBEC 0b30: 30 5f 53 4b 54 41 a1 1d 70 44 54 53 32 5c 2f 05 0_SKTA..pDTS2\/. 0b40: 5f 53 42 5f 50 43 49 30 4c 50 43 42 45 43 30 5f _SB_PCI0LPCBEC0_ 0b50: 53 4b 54 41 a1 48 04 a0 27 92 95 4f 44 54 31 4f SKTA.H..'..ODT1O 0b60: 44 54 32 70 4f 44 54 31 5c 2f 05 5f 53 42 5f 50 DT2pODT1\/._SB_P 0b70: 43 49 30 4c 50 43 42 45 43 30 5f 53 4b 54 41 a1 CI0LPCBEC0_SKTA. 0b80: 1d 70 4f 44 54 32 5c 2f 05 5f 53 42 5f 50 43 49 .pODT2\/._SB_PCI 0b90: 30 4c 50 43 42 45 43 30 5f 53 4b 54 41 a1 16 5c 0LPCBEC0_SKTA..\ 0ba0: 2f 04 5f 53 42 5f 50 43 49 30 4c 50 43 42 50 48 /._SB_PCI0LPCBPH 0bb0: 53 53 0a 10 14 18 5f 4c 30 33 00 86 5c 2f 03 5f SS...._L03..\/._ 0bc0: 53 42 5f 50 43 49 30 55 53 42 31 0a 02 14 18 5f SB_PCI0USB1...._ 0bd0: 4c 30 34 00 86 5c 2f 03 5f 53 42 5f 50 43 49 30 L04..\/._SB_PCI0 0be0: 55 53 42 32 0a 02 14 18 5f 4c 30 35 00 86 5c 2f USB2...._L05..\/ 0bf0: 03 5f 53 42 5f 50 43 49 30 55 53 42 35 0a 02 14 ._SB_PCI0USB5... 0c00: 36 5f 4c 30 36 00 a0 27 5c 2f 04 5f 53 42 5f 50 6_L06..'\/._SB_P 0c10: 43 49 30 47 46 58 30 47 53 53 45 5c 2f 04 5f 53 CI0GFX0GSSE\/._S 0c20: 42 5f 50 43 49 30 47 46 58 30 47 53 43 49 a1 07 B_PCI0GFX0GSCI.. 0c30: 70 01 53 43 49 53 14 43 1f 5f 4c 30 39 00 a0 41 p.SCIS.C._L09..A 0c40: 05 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 30 31 .\/._SB_PCI0RP01 0c50: 50 53 50 58 70 01 5c 2f 04 5f 53 42 5f 50 43 49 PSPXp.\/._SB_PCI 0c60: 30 52 50 30 31 50 53 50 58 70 01 5c 2f 04 5f 53 0RP01PSPXp.\/._S 0c70: 42 5f 50 43 49 30 52 50 30 31 50 4d 53 58 86 5c B_PCI0RP01PMSX.\ 0c80: 2f 03 5f 53 42 5f 50 43 49 30 52 50 30 31 0a 02 /._SB_PCI0RP01.. 0c90: a0 41 05 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 .A.\/._SB_PCI0RP 0ca0: 30 32 50 53 50 58 70 01 5c 2f 04 5f 53 42 5f 50 02PSPXp.\/._SB_P 0cb0: 43 49 30 52 50 30 32 50 53 50 58 70 01 5c 2f 04 CI0RP02PSPXp.\/. 0cc0: 5f 53 42 5f 50 43 49 30 52 50 30 32 50 4d 53 58 _SB_PCI0RP02PMSX 0cd0: 86 5c 2f 03 5f 53 42 5f 50 43 49 30 52 50 30 32 .\/._SB_PCI0RP02 0ce0: 0a 02 a0 41 05 5c 2f 04 5f 53 42 5f 50 43 49 30 ...A.\/._SB_PCI0 0cf0: 52 50 30 33 50 53 50 58 70 01 5c 2f 04 5f 53 42 RP03PSPXp.\/._SB 0d00: 5f 50 43 49 30 52 50 30 33 50 53 50 58 70 01 5c _PCI0RP03PSPXp.\ 0d10: 2f 04 5f 53 42 5f 50 43 49 30 52 50 30 33 50 4d /._SB_PCI0RP03PM 0d20: 53 58 86 5c 2f 03 5f 53 42 5f 50 43 49 30 52 50 SX.\/._SB_PCI0RP 0d30: 30 33 0a 02 a0 41 05 5c 2f 04 5f 53 42 5f 50 43 03...A.\/._SB_PC 0d40: 49 30 52 50 30 34 50 53 50 58 70 01 5c 2f 04 5f I0RP04PSPXp.\/._ 0d50: 53 42 5f 50 43 49 30 52 50 30 34 50 53 50 58 70 SB_PCI0RP04PSPXp 0d60: 01 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 30 34 .\/._SB_PCI0RP04 0d70: 50 4d 53 58 86 5c 2f 03 5f 53 42 5f 50 43 49 30 PMSX.\/._SB_PCI0 0d80: 52 50 30 34 0a 02 a0 41 05 5c 2f 04 5f 53 42 5f RP04...A.\/._SB_ 0d90: 50 43 49 30 52 50 30 35 50 53 50 58 70 01 5c 2f PCI0RP05PSPXp.\/ 0da0: 04 5f 53 42 5f 50 43 49 30 52 50 30 35 50 53 50 ._SB_PCI0RP05PSP 0db0: 58 70 01 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 Xp.\/._SB_PCI0RP 0dc0: 30 35 50 4d 53 58 86 5c 2f 03 5f 53 42 5f 50 43 05PMSX.\/._SB_PC 0dd0: 49 30 52 50 30 35 0a 02 a0 41 05 5c 2f 04 5f 53 I0RP05...A.\/._S 0de0: 42 5f 50 43 49 30 52 50 30 36 50 53 50 58 70 01 B_PCI0RP06PSPXp. 0df0: 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 30 36 50 \/._SB_PCI0RP06P 0e00: 53 50 58 70 01 5c 2f 04 5f 53 42 5f 50 43 49 30 SPXp.\/._SB_PCI0 0e10: 52 50 30 36 50 4d 53 58 86 5c 2f 03 5f 53 42 5f RP06PMSX.\/._SB_ 0e20: 50 43 49 30 52 50 30 36 0a 02 14 18 5f 4c 30 42 PCI0RP06...._L0B 0e30: 00 86 5c 2f 03 5f 53 42 5f 50 43 49 30 50 43 49 ..\/._SB_PCI0PCI 0e40: 42 0a 02 14 18 5f 4c 30 43 00 86 5c 2f 03 5f 53 B...._L0C..\/._S 0e50: 42 5f 50 43 49 30 55 53 42 33 0a 02 14 4b 0b 5f B_PCI0USB3...K._ 0e60: 4c 30 44 00 a0 3b 5c 2f 04 5f 53 42 5f 50 43 49 L0D..;\/._SB_PCI 0e70: 30 45 48 43 31 50 4d 45 53 70 01 5c 2f 04 5f 53 0EHC1PMESp.\/._S 0e80: 42 5f 50 43 49 30 45 48 43 31 50 4d 45 53 86 5c B_PCI0EHC1PMES.\ 0e90: 2f 03 5f 53 42 5f 50 43 49 30 45 48 43 31 0a 02 /._SB_PCI0EHC1.. 0ea0: a0 3b 5c 2f 04 5f 53 42 5f 50 43 49 30 45 48 43 .;\/._SB_PCI0EHC 0eb0: 32 50 4d 45 53 70 01 5c 2f 04 5f 53 42 5f 50 43 2PMESp.\/._SB_PC 0ec0: 49 30 45 48 43 32 50 4d 45 53 86 5c 2f 03 5f 53 I0EHC2PMES.\/._S 0ed0: 42 5f 50 43 49 30 45 48 43 32 0a 02 a0 3b 5c 2f B_PCI0EHC2...;\/ 0ee0: 04 5f 53 42 5f 50 43 49 30 48 44 45 46 50 4d 45 ._SB_PCI0HDEFPME 0ef0: 53 70 01 5c 2f 04 5f 53 42 5f 50 43 49 30 48 44 Sp.\/._SB_PCI0HD 0f00: 45 46 50 4d 45 53 86 5c 2f 03 5f 53 42 5f 50 43 EFPMES.\/._SB_PC 0f10: 49 30 48 44 45 46 0a 02 14 18 5f 4c 30 45 00 86 I0HDEF...._L0E.. 0f20: 5c 2f 03 5f 53 42 5f 50 43 49 30 55 53 42 34 0a \/._SB_PCI0USB4. 0f30: 02 14 1c 5f 4c 31 42 00 80 4c 50 4f 4c 4c 50 4f ..._L1B..LPOLLPO 0f40: 4c 86 5c 2e 5f 53 42 5f 4c 49 44 30 0a 80 10 46 L.\._SB_LID0...F 0f50: 0b 5f 50 52 5f 5b 83 0b 43 50 55 30 00 10 10 00 ._PR_[..CPU0.... 0f60: 00 06 5b 83 0b 43 50 55 31 01 10 10 00 00 06 14 ..[..CPU1....... 0f70: 45 09 52 50 50 43 00 a0 4d 08 93 4f 53 59 53 0b E.RPPC..M..OSYS. 0f80: d2 07 a0 42 08 7b 43 46 47 44 01 00 a0 42 04 94 ...B.{CFGD...B.. 0f90: 5e 2e 43 50 55 30 5f 50 50 43 00 74 5e 2e 43 50 ^.CPU0_PPC.t^.CP 0fa0: 55 30 5f 50 50 43 01 5e 2e 43 50 55 30 5f 50 50 U0_PPC.^.CPU0_PP 0fb0: 43 50 4e 4f 54 72 5e 2e 43 50 55 30 5f 50 50 43 CPNOTr^.CPU0_PPC 0fc0: 01 5e 2e 43 50 55 30 5f 50 50 43 50 4e 4f 54 a1 .^.CPU0_PPCPNOT. 0fd0: 35 72 5e 2e 43 50 55 30 5f 50 50 43 01 5e 2e 43 5r^.CPU0_PPC.^.C 0fe0: 50 55 30 5f 50 50 43 50 4e 4f 54 74 5e 2e 43 50 PU0_PPCPNOTt^.CP 0ff0: 55 30 5f 50 50 43 01 5e 2e 43 50 55 30 5f 50 50 U0_PPC.^.CPU0_PP 1000: 43 50 4e 4f 54 08 46 57 53 4f 0d 46 57 53 4f 00 CPNOT.FWSO.FWSO. 1010: 08 5f 50 53 43 00 14 12 5f 50 53 30 00 70 5f 50 ._PSC..._PS0.p_P 1020: 53 43 60 70 00 5f 50 53 43 14 0d 5f 50 53 33 00 SC`p._PSC.._PS3. 1030: 70 0a 03 5f 50 53 43 10 8c fb 04 5f 53 42 5f 5b p.._PSC...._SB_[ 1040: 82 4f 3e 41 4d 57 30 08 5f 48 49 44 0d 70 6e 70 .O>AMW0._HID.pnp 1050: 30 63 31 34 00 08 5f 55 49 44 00 08 5f 57 44 47 0c14.._UID.._WDG 1060: 11 3f 0a 3c a7 1d 85 2e 53 d0 5f 49 9d fa 1a 4a .?.<....S._I...J 1070: d6 2e 6a 86 41 43 01 00 3b 6d 43 71 dd fb 72 4c ..j.AC..;mCq..rL 1080: bc b8 43 5b fe 0d 64 f9 42 43 01 00 21 12 90 05 ..C[..d.BC..!... 1090: 66 d5 d1 11 b2 f0 00 a0 c9 06 29 10 42 41 01 00 f.........).BA.. 10a0: 08 53 54 41 43 11 07 0a 04 01 14 03 00 14 1f 57 .STAC..........W 10b0: 51 41 43 01 70 0d 4d 58 4d 54 43 43 6f 6e 66 69 QAC.p.MXMTCConfi 10c0: 67 44 61 74 61 00 5b 31 a4 53 54 41 43 08 53 54 gData.[1.STAC.ST 10d0: 42 43 11 07 0a 04 01 00 00 00 14 34 57 51 42 43 BC.........4WQBC 10e0: 01 70 0d 47 65 74 20 4d 58 4d 54 43 43 6f 6e 74 .p.Get MXMTCCont 10f0: 72 6f 6c 44 61 74 61 3a 20 53 54 42 43 20 3d 20 rolData: STBC = 1100: 00 5b 31 70 53 54 42 43 5b 31 a4 53 54 42 43 14 .[1pSTBC[1.STBC. 1110: 47 06 57 53 42 43 02 70 69 53 54 42 43 70 0d 53 G.WSBC.piSTBCp.S 1120: 65 74 20 4d 58 4d 54 43 43 6f 6e 74 72 6f 6c 44 et MXMTCControlD 1130: 61 74 61 3a 20 53 54 42 43 20 3d 20 00 5b 31 70 ata: STBC = .[1p 1140: 53 54 42 43 5b 31 a0 30 93 5e 5e 2f 03 50 43 49 STBC[1.0.^^/.PCI 1150: 30 4c 50 43 42 45 43 4f 4b 01 70 83 88 53 54 42 0LPCBECOK.p..STB 1160: 43 01 00 5e 5e 2f 04 50 43 49 30 4c 50 43 42 45 C..^^/.PCI0LPCBE 1170: 43 30 5f 53 4b 54 43 08 57 51 42 41 11 43 2b 0b C0_SKTC.WQBA.C+. 1180: ae 02 46 4f 4d 42 01 00 00 00 9e 02 00 00 c0 0b ..FOMB.......... 1190: 00 00 44 53 00 01 1a 7d da 54 28 d9 85 00 01 06 ..DS...}.T(..... 11a0: 18 42 10 07 10 0a 4b 61 02 c9 21 52 3c 18 94 05 .B....Ka..!R<... 11b0: 10 43 88 57 04 44 04 84 bc 0a b0 29 c0 24 88 fa .C.W.D.....).$.. 11c0: f7 87 28 09 0e 25 04 42 12 05 98 17 a0 5b 80 61 ..(..%.B.....[.a 11d0: 01 b6 05 98 16 e0 18 92 4a 03 a7 04 96 02 21 a1 ........J.....!. 11e0: 02 94 0b f0 2d 40 3b a2 24 0b b0 0c 23 02 8f 82 ....-@;.$...#... 11f0: a1 71 68 ec 30 2c 13 4c 83 38 8c b2 91 45 60 dc .qh.0,.L.8...E`. 1200: 4e 05 c8 15 20 4c 80 78 54 61 34 07 45 e0 42 63 N... L.xTa4.E.Bc 1210: 64 40 c8 a3 00 ab a3 d0 a4 12 d8 bd 00 65 02 2c d@...........e., 1220: 0a 10 27 c0 9a 00 63 48 32 28 40 9b 00 5b 20 42 ..'...cH2(@..[ B 1230: 0f d4 19 8a 46 70 02 51 6a 46 11 48 ac 1a 01 85 ....Fp.QjF.H.... 1240: 12 34 46 b0 10 81 c2 86 37 46 98 03 88 d1 fe 20 .4F.....7F..... 1250: 48 20 05 e3 66 91 46 83 1a 6b 82 63 f7 68 4e b8 H ..f.F..k.c.hN. 1260: 73 01 d2 e7 26 90 a3 3b b8 3a 07 4d 86 c7 b0 1e s...&..;.:.M.... 1270: 06 d8 29 00 ef 1a 50 d3 3f 78 26 08 0e 35 44 8f ..)...P.?x&..5D. 1280: 3a dc 09 1c fb 91 30 88 b3 3b 6e ac c3 c9 68 d0 :.....0..;n...h. 1290: a5 0a 30 7b 00 d0 d0 12 9c f6 99 84 7e 0f 38 9f ..0{........~.8. 12a0: 9e 21 89 fc 41 a0 46 e6 ff 3f b4 c7 78 5a 31 43 .!..A.F..?..xZ1C 12b0: 3e 0b 1c 16 13 0b a1 4d 6a 3c 40 40 e1 d1 40 08 >......Mj<@@..@. 12c0: 6f 06 9e af 09 46 86 90 93 f1 a0 06 e0 41 d7 3a o....F.......A.: 12d0: 32 8d 27 a6 21 cf e8 00 22 bf 32 78 0c 41 02 f9 2.'.!...".2x.A.. 12e0: c4 60 b8 c7 81 13 78 02 f0 59 40 10 92 00 21 51 .`....x..Y@...!Q 12f0: e3 a7 47 08 7e 7a 78 93 30 28 1f d2 99 f9 90 e1 ..G.~zx.0(...... 1300: 11 c2 07 c4 7b 9f 3b 19 c1 29 7b a4 e0 b0 7e 0e ....{.;..){...~. 1310: 20 c0 af 0f 8f 0d 09 7c ae 08 8c 1d aa fd 0a 40 ......|.......@ 1320: 08 1e ed 51 e0 54 23 1c 2d 78 08 8a 1c 03 4a cc ...Q.T#.-x....J. 1330: 18 50 03 38 85 d0 e7 73 04 47 14 25 f6 21 19 da .P.8...s.G.%.!.. 1340: 08 e1 1f 39 4e c1 f7 8b 23 3d ad 23 78 91 f0 08 ...9N...#=.#x... 1350: 30 e1 ce 28 a8 38 30 f4 ff 7f 4c 01 dc 7a 3b a6 0..(.80...L..z;. 1360: 80 3e c0 31 05 50 fc ff 3f a6 00 87 a8 c7 14 f4 .>.1.P..?....... 1370: 40 0c 7c 2e a1 0d ff 96 c1 8e 03 87 74 6a 8f 28 @.|.........tj.( 1380: 80 29 79 47 14 50 8c 14 d6 f1 04 18 05 3c 9b a0 .)yG.P.......<.. 1390: 22 1d 4f 80 ce ff ff 78 02 58 b8 9a bc 92 84 7d ".O....x.X.....} 13a0: 1e 78 1d 89 14 e3 41 e2 b5 e4 c1 24 46 98 08 8f .x....A....$F... 13b0: 27 1e 47 c0 b7 82 28 91 8e 3e c4 83 49 28 63 3e '.G...(..>..I(c> 13c0: a3 84 89 f9 04 70 22 ef 27 46 0a 73 2a 8f 27 2c .....p".'F.s*.', 13d0: c4 f1 04 a0 85 e2 e3 09 3a 2c 84 fe ff c7 13 dc ........:,...... 13e0: e1 c1 a7 0c fc 85 0c c6 f9 04 30 24 f0 7c 02 ca ..........0$.|.. 13f0: db 18 e6 80 02 8c 14 da f4 a9 d1 a8 55 83 32 35 ............U.25 1400: ca 34 a8 d5 a7 52 63 c6 4c 9c 52 bc 6c 8d df f2 .4...Rc.L.R.l... 1410: 9e 09 02 b1 20 0a 81 38 cc f3 42 20 96 a2 01 84 .... ..8..B .... 1420: 85 06 a1 42 a9 05 e2 98 20 34 92 0a 10 f6 ff 07 ...B.... 4...... 1430: 5b 82 1b 4c 49 44 30 08 5f 48 49 44 0c 41 d0 0c [..LID0._HID.A.. 1440: 0d 14 0b 5f 4c 49 44 00 a4 4c 50 4f 4c 5b 82 0f ..._LID..LPOL[.. 1450: 50 57 52 42 08 5f 48 49 44 0c 41 d0 0c 0c 5b 82 PWRB._HID.A...[. 1460: 84 b9 04 50 43 49 30 14 09 5f 53 33 44 00 a4 0a ...PCI0.._S3D... 1470: 02 14 09 5f 53 34 44 00 a4 0a 02 08 5f 48 49 44 ..._S4D....._HID 1480: 0c 41 d0 0a 08 08 5f 43 49 44 0c 41 d0 0a 03 5b .A...._CID.A...[ 1490: 82 43 0e 4d 43 48 43 08 5f 41 44 52 00 5b 80 48 .C.MCHC._ADR.[.H 14a0: 42 55 53 02 0a 40 0a c0 5b 81 4a 0c 48 42 55 53 BUS..@..[.J.HBUS 14b0: 03 45 50 45 4e 01 00 0b 45 50 42 52 14 00 20 4d .EPEN...EPBR.. M 14c0: 48 45 4e 01 00 0d 4d 48 42 52 12 00 40 0a 50 58 HEN...MHBR..@.PX 14d0: 45 4e 01 50 58 53 5a 02 00 17 50 58 42 52 06 00 EN.PXSZ...PXBR.. 14e0: 20 44 49 45 4e 01 00 0b 44 49 42 52 14 00 20 49 DIEN...DIBR.. I 14f0: 50 45 4e 01 00 0b 49 50 42 52 14 00 40 0e 00 04 PEN...IPBR..@... 1500: 50 4d 30 48 02 00 02 50 4d 31 4c 02 00 02 50 4d PM0H...PM1L...PM 1510: 31 48 02 00 02 50 4d 32 4c 02 00 02 50 4d 32 48 1H...PM2L...PM2H 1520: 02 00 02 50 4d 33 4c 02 00 02 50 4d 33 48 02 00 ...PM3L...PM3H.. 1530: 02 50 4d 34 4c 02 00 02 50 4d 34 48 02 00 02 50 .PM4L...PM4H...P 1540: 4d 35 4c 02 00 02 50 4d 35 48 02 00 02 50 4d 36 M5L...PM5H...PM6 1550: 4c 02 00 02 50 4d 36 48 02 00 02 00 07 48 45 4e L...PM6H.....HEN 1560: 41 01 00 40 05 54 55 55 44 10 00 40 06 00 04 54 A..@.TUUD..@...T 1570: 4c 55 44 0c 08 42 55 46 30 11 4d 20 0b 08 02 88 LUD..BUF0.M .... 1580: 0d 00 02 0c 00 00 00 00 00 ff 00 00 00 00 01 87 ................ 1590: 17 00 01 0c 03 00 00 00 00 00 00 00 00 f7 0c 00 ................ 15a0: 00 00 00 00 00 f8 0c 00 00 47 01 f8 0c f8 0c 01 .........G...... 15b0: 08 87 17 00 01 0c 03 00 00 00 00 00 0d 00 00 ff ................ 15c0: ff 00 00 00 00 00 00 00 f3 00 00 87 17 00 00 0c ................ 15d0: 03 00 00 00 00 00 00 0a 00 ff ff 0b 00 00 00 00 ................ 15e0: 00 00 00 02 00 87 17 00 00 0c 03 00 00 00 00 00 ................ 15f0: 00 0c 00 ff 3f 0c 00 00 00 00 00 00 40 00 00 87 ....?.......@... 1600: 17 00 00 0c 03 00 00 00 00 00 40 0c 00 ff 7f 0c ..........@..... 1610: 00 00 00 00 00 00 40 00 00 87 17 00 00 0c 03 00 ......@......... 1620: 00 00 00 00 80 0c 00 ff bf 0c 00 00 00 00 00 00 ................ 1630: 40 00 00 87 17 00 00 0c 03 00 00 00 00 00 c0 0c @............... 1640: 00 ff ff 0c 00 00 00 00 00 00 40 00 00 87 17 00 ..........@..... 1650: 00 0c 03 00 00 00 00 00 00 0d 00 ff 3f 0d 00 00 ............?... 1660: 00 00 00 00 40 00 00 87 17 00 00 0c 03 00 00 00 ....@........... 1670: 00 00 40 0d 00 ff 7f 0d 00 00 00 00 00 00 40 00 ..@...........@. 1680: 00 87 17 00 00 0c 03 00 00 00 00 00 80 0d 00 ff ................ 1690: bf 0d 00 00 00 00 00 00 40 00 00 87 17 00 00 0c ........@....... 16a0: 03 00 00 00 00 00 c0 0d 00 ff ff 0d 00 00 00 00 ................ 16b0: 00 00 40 00 00 87 17 00 00 0c 03 00 00 00 00 00 ..@............. 16c0: 00 0e 00 ff 3f 0e 00 00 00 00 00 00 40 00 00 87 ....?.......@... 16d0: 17 00 00 0c 03 00 00 00 00 00 40 0e 00 ff 7f 0e ..........@..... 16e0: 00 00 00 00 00 00 40 00 00 87 17 00 00 0c 03 00 ......@......... 16f0: 00 00 00 00 80 0e 00 ff bf 0e 00 00 00 00 00 00 ................ 1700: 40 00 00 87 17 00 00 0c 03 00 00 00 00 00 c0 0e @............... 1710: 00 ff ff 0e 00 00 00 00 00 00 40 00 00 87 17 00 ..........@..... 1720: 00 0c 03 00 00 00 00 00 00 0f 00 ff ff 0f 00 00 ................ 1730: 00 00 00 00 00 01 00 87 17 00 00 0c 03 00 00 00 ................ 1740: 00 00 00 00 00 ff ff ff df 00 00 00 00 00 00 00 ................ 1750: 00 87 17 00 00 0c 03 00 00 00 00 00 00 00 f0 ff ................ 1760: ff bf fe 00 00 00 00 00 00 c0 0e 87 17 00 00 0c ................ 1770: 03 00 00 00 00 00 00 d4 fe ff 4f d4 fe 00 00 00 ..........O..... 1780: 00 00 00 00 00 79 00 14 4b 3d 5f 43 52 53 08 a0 .....y..K=_CRS.. 1790: 1c 5e 2e 4d 43 48 43 50 4d 31 4c 8a 42 55 46 30 .^.MCHCPM1L.BUF0 17a0: 0a 7c 43 30 4c 4e 70 00 43 30 4c 4e a0 1f 93 5e .|C0LNp.C0LN...^ 17b0: 2e 4d 43 48 43 50 4d 31 4c 01 8d 42 55 46 30 0b .MCHCPM1L..BUF0. 17c0: 58 03 43 30 52 57 70 00 43 30 52 57 a0 1c 5e 2e X.C0RWp.C0RW..^. 17d0: 4d 43 48 43 50 4d 31 48 8a 42 55 46 30 0a 96 43 MCHCPM1H.BUF0..C 17e0: 34 4c 4e 70 00 43 34 4c 4e a0 1f 93 5e 2e 4d 43 4LNp.C4LN...^.MC 17f0: 48 43 50 4d 31 48 01 8d 42 55 46 30 0b 28 04 43 HCPM1H..BUF0.(.C 1800: 34 52 57 70 00 43 34 52 57 a0 1c 5e 2e 4d 43 48 4RWp.C4RW..^.MCH 1810: 43 50 4d 32 4c 8a 42 55 46 30 0a b0 43 38 4c 4e CPM2L.BUF0..C8LN 1820: 70 00 43 38 4c 4e a0 1f 93 5e 2e 4d 43 48 43 50 p.C8LN...^.MCHCP 1830: 4d 32 4c 01 8d 42 55 46 30 0b f8 04 43 38 52 57 M2L..BUF0...C8RW 1840: 70 00 43 38 52 57 a0 1c 5e 2e 4d 43 48 43 50 4d p.C8RW..^.MCHCPM 1850: 32 48 8a 42 55 46 30 0a ca 43 43 4c 4e 70 00 43 2H.BUF0..CCLNp.C 1860: 43 4c 4e a0 1f 93 5e 2e 4d 43 48 43 50 4d 32 48 CLN...^.MCHCPM2H 1870: 01 8d 42 55 46 30 0b c8 05 43 43 52 57 70 00 43 ..BUF0...CCRWp.C 1880: 43 52 57 a0 1c 5e 2e 4d 43 48 43 50 4d 33 4c 8a CRW..^.MCHCPM3L. 1890: 42 55 46 30 0a e4 44 30 4c 4e 70 00 44 30 4c 4e BUF0..D0LNp.D0LN 18a0: a0 1f 93 5e 2e 4d 43 48 43 50 4d 33 4c 01 8d 42 ...^.MCHCPM3L..B 18b0: 55 46 30 0b 98 06 44 30 52 57 70 00 44 30 52 57 UF0...D0RWp.D0RW 18c0: a0 1c 5e 2e 4d 43 48 43 50 4d 33 48 8a 42 55 46 ..^.MCHCPM3H.BUF 18d0: 30 0a fe 44 34 4c 4e 70 00 44 34 4c 4e a0 1f 93 0..D4LNp.D4LN... 18e0: 5e 2e 4d 43 48 43 50 4d 33 48 01 8d 42 55 46 30 ^.MCHCPM3H..BUF0 18f0: 0b 68 07 44 34 52 57 70 00 44 34 52 57 a0 1d 5e .h.D4RWp.D4RW..^ 1900: 2e 4d 43 48 43 50 4d 34 4c 8a 42 55 46 30 0b 18 .MCHCPM4L.BUF0.. 1910: 01 44 38 4c 4e 70 00 44 38 4c 4e a0 1f 93 5e 2e .D8LNp.D8LN...^. 1920: 4d 43 48 43 50 4d 34 4c 01 8d 42 55 46 30 0b 38 MCHCPM4L..BUF0.8 1930: 08 44 38 52 57 70 00 44 38 52 57 a0 1d 5e 2e 4d .D8RWp.D8RW..^.M 1940: 43 48 43 50 4d 34 48 8a 42 55 46 30 0b 32 01 44 CHCPM4H.BUF0.2.D 1950: 43 4c 4e 70 00 44 43 4c 4e a0 1f 93 5e 2e 4d 43 CLNp.DCLN...^.MC 1960: 48 43 50 4d 34 48 01 8d 42 55 46 30 0b 08 09 44 HCPM4H..BUF0...D 1970: 43 52 57 70 00 44 43 52 57 a0 1d 5e 2e 4d 43 48 CRWp.DCRW..^.MCH 1980: 43 50 4d 35 4c 8a 42 55 46 30 0b 4c 01 45 30 4c CPM5L.BUF0.L.E0L 1990: 4e 70 00 45 30 4c 4e a0 1f 93 5e 2e 4d 43 48 43 Np.E0LN...^.MCHC 19a0: 50 4d 35 4c 01 8d 42 55 46 30 0b d8 09 45 30 52 PM5L..BUF0...E0R 19b0: 57 70 00 45 30 52 57 a0 1d 5e 2e 4d 43 48 43 50 Wp.E0RW..^.MCHCP 19c0: 4d 35 48 8a 42 55 46 30 0b 66 01 45 34 4c 4e 70 M5H.BUF0.f.E4LNp 19d0: 00 45 34 4c 4e a0 1f 93 5e 2e 4d 43 48 43 50 4d .E4LN...^.MCHCPM 19e0: 35 48 01 8d 42 55 46 30 0b a8 0a 45 34 52 57 70 5H..BUF0...E4RWp 19f0: 00 45 34 52 57 a0 1d 5e 2e 4d 43 48 43 50 4d 36 .E4RW..^.MCHCPM6 1a00: 4c 8a 42 55 46 30 0b 80 01 45 38 4c 4e 70 00 45 L.BUF0...E8LNp.E 1a10: 38 4c 4e a0 1f 93 5e 2e 4d 43 48 43 50 4d 36 4c 8LN...^.MCHCPM6L 1a20: 01 8d 42 55 46 30 0b 78 0b 45 38 52 57 70 00 45 ..BUF0.x.E8RWp.E 1a30: 38 52 57 a0 1d 5e 2e 4d 43 48 43 50 4d 36 48 8a 8RW..^.MCHCPM6H. 1a40: 42 55 46 30 0b 9a 01 45 43 4c 4e 70 00 45 43 4c BUF0...ECLNp.ECL 1a50: 4e a0 1f 93 5e 2e 4d 43 48 43 50 4d 36 48 01 8d N...^.MCHCPM6H.. 1a60: 42 55 46 30 0b 48 0c 45 43 52 57 70 00 45 43 52 BUF0.H.ECRWp.ECR 1a70: 57 a0 1d 5e 2e 4d 43 48 43 50 4d 30 48 8a 42 55 W..^.MCHCPM0H.BU 1a80: 46 30 0b b4 01 46 30 4c 4e 70 00 46 30 4c 4e a0 F0...F0LNp.F0LN. 1a90: 1f 93 5e 2e 4d 43 48 43 50 4d 30 48 01 8d 42 55 ..^.MCHCPM0H..BU 1aa0: 46 30 0b 18 0d 46 30 52 57 70 00 46 30 52 57 8a F0...F0RWp.F0RW. 1ab0: 42 55 46 30 0b c2 01 4d 31 4d 4e 8a 42 55 46 30 BUF0...M1MN.BUF0 1ac0: 0b c6 01 4d 31 4d 58 8a 42 55 46 30 0b ce 01 4d ...M1MX.BUF0...M 1ad0: 31 4c 4e 8a 42 55 46 30 0b dc 01 4d 32 4d 4e 8a 1LN.BUF0...M2MN. 1ae0: 42 55 46 30 0b e0 01 4d 32 4d 58 8a 42 55 46 30 BUF0...M2MX.BUF0 1af0: 0b e8 01 4d 32 4c 4e 79 5e 2e 4d 43 48 43 50 58 ...M2LNy^.MCHCPX 1b00: 42 52 0a 1a 4d 31 4d 58 7a 0c 00 00 00 10 5e 2e BR..M1MXz.....^. 1b10: 4d 43 48 43 50 58 53 5a 60 72 4d 31 4d 58 60 4d MCHCPXSZ`rM1MX`M 1b20: 32 4d 4e 72 74 4d 32 4d 58 4d 32 4d 4e 00 01 4d 2MNrtM2MXM2MN..M 1b30: 32 4c 4e 74 4d 31 4d 58 01 4d 31 4d 58 79 5e 2e 2LNtM1MX.M1MXy^. 1b40: 4d 43 48 43 54 4c 55 44 0a 14 4d 31 4d 4e 72 74 MCHCTLUD..M1MNrt 1b50: 4d 31 4d 58 4d 31 4d 4e 00 01 4d 31 4c 4e a4 42 M1MXM1MN..M1LN.B 1b60: 55 46 30 14 47 28 5f 50 52 54 00 a0 45 0f 47 50 UF0.G(_PRT..E.GP 1b70: 49 43 a4 12 4d 0e 13 12 0b 04 0c ff ff 01 00 00 IC..M........... 1b80: 00 0a 10 12 0b 04 0c ff ff 02 00 00 00 0a 10 12 ................ 1b90: 0b 04 0c ff ff 07 00 00 00 0a 10 12 0b 04 0c ff ................ 1ba0: ff 19 00 00 00 0a 14 12 0b 04 0c ff ff 1a 00 00 ................ 1bb0: 00 0a 10 12 0b 04 0c ff ff 1a 00 01 00 0a 15 12 ................ 1bc0: 0c 04 0c ff ff 1a 00 0a 02 00 0a 12 12 0b 04 0c ................ 1bd0: ff ff 1b 00 00 00 0a 16 12 0b 04 0c ff ff 1c 00 ................ 1be0: 00 00 0a 11 12 0b 04 0c ff ff 1c 00 01 00 0a 10 ................ 1bf0: 12 0c 04 0c ff ff 1c 00 0a 02 00 0a 12 12 0c 04 ................ 1c00: 0c ff ff 1c 00 0a 03 00 0a 13 12 0b 04 0c ff ff ................ 1c10: 1d 00 00 00 0a 17 12 0b 04 0c ff ff 1d 00 01 00 ................ 1c20: 0a 13 12 0c 04 0c ff ff 1d 00 0a 02 00 0a 12 12 ................ 1c30: 0b 04 0c ff ff 1f 00 00 00 0a 13 12 0b 04 0c ff ................ 1c40: ff 1f 00 01 00 0a 13 12 0c 04 0c ff ff 1f 00 0a ................ 1c50: 02 00 0a 13 12 0c 04 0c ff ff 1f 00 0a 03 00 0a ................ 1c60: 10 a1 49 18 a4 12 45 18 13 12 13 04 0c ff ff 01 ..I...E......... 1c70: 00 00 5e 2e 4c 50 43 42 4c 4e 4b 41 00 12 13 04 ..^.LPCBLNKA.... 1c80: 0c ff ff 02 00 00 5e 2e 4c 50 43 42 4c 4e 4b 41 ......^.LPCBLNKA 1c90: 00 12 13 04 0c ff ff 07 00 00 5e 2e 4c 50 43 42 ..........^.LPCB 1ca0: 4c 4e 4b 41 00 12 13 04 0c ff ff 19 00 00 5e 2e LNKA..........^. 1cb0: 4c 50 43 42 4c 4e 4b 45 00 12 13 04 0c ff ff 1a LPCBLNKE........ 1cc0: 00 00 5e 2e 4c 50 43 42 4c 4e 4b 41 00 12 13 04 ..^.LPCBLNKA.... 1cd0: 0c ff ff 1a 00 01 5e 2e 4c 50 43 42 4c 4e 4b 46 ......^.LPCBLNKF 1ce0: 00 12 14 04 0c ff ff 1a 00 0a 02 5e 2e 4c 50 43 ...........^.LPC 1cf0: 42 4c 4e 4b 43 00 12 13 04 0c ff ff 1b 00 00 5e BLNKC..........^ 1d00: 2e 4c 50 43 42 4c 4e 4b 47 00 12 13 04 0c ff ff .LPCBLNKG....... 1d10: 1c 00 00 5e 2e 4c 50 43 42 4c 4e 4b 42 00 12 13 ...^.LPCBLNKB... 1d20: 04 0c ff ff 1c 00 01 5e 2e 4c 50 43 42 4c 4e 4b .......^.LPCBLNK 1d30: 41 00 12 14 04 0c ff ff 1c 00 0a 02 5e 2e 4c 50 A...........^.LP 1d40: 43 42 4c 4e 4b 43 00 12 14 04 0c ff ff 1c 00 0a CBLNKC.......... 1d50: 03 5e 2e 4c 50 43 42 4c 4e 4b 44 00 12 13 04 0c .^.LPCBLNKD..... 1d60: ff ff 1d 00 00 5e 2e 4c 50 43 42 4c 4e 4b 48 00 .....^.LPCBLNKH. 1d70: 12 13 04 0c ff ff 1d 00 01 5e 2e 4c 50 43 42 4c .........^.LPCBL 1d80: 4e 4b 44 00 12 14 04 0c ff ff 1d 00 0a 02 5e 2e NKD...........^. 1d90: 4c 50 43 42 4c 4e 4b 43 00 12 13 04 0c ff ff 1f LPCBLNKC........ 1da0: 00 00 5e 2e 4c 50 43 42 4c 4e 4b 44 00 12 13 04 ..^.LPCBLNKD.... 1db0: 0c ff ff 1f 00 01 5e 2e 4c 50 43 42 4c 4e 4b 44 ......^.LPCBLNKD 1dc0: 00 12 14 04 0c ff ff 1f 00 0a 02 5e 2e 4c 50 43 ...........^.LPC 1dd0: 42 4c 4e 4b 44 00 12 14 04 0c ff ff 1f 00 0a 03 BLNKD........... 1de0: 5e 2e 4c 50 43 42 4c 4e 4b 41 00 5b 82 40 14 50 ^.LPCBLNKA.[.@.P 1df0: 44 52 43 08 5f 48 49 44 0c 41 d0 0c 02 08 5f 55 DRC._HID.A...._U 1e00: 49 44 01 08 42 55 46 30 11 46 06 0a 62 86 09 00 ID..BUF0.F..b... 1e10: 01 00 00 00 00 00 40 00 00 86 09 00 01 00 00 00 ......@......... 1e20: 00 00 40 00 00 86 09 00 01 00 00 00 00 00 10 00 ..@............. 1e30: 00 86 09 00 01 00 00 00 00 00 10 00 00 86 09 00 ................ 1e40: 01 00 00 00 00 00 00 00 00 86 09 00 01 00 00 d2 ................ 1e50: fe 00 00 02 00 86 09 00 01 00 00 d4 fe 00 50 00 ..............P. 1e60: 00 86 09 00 01 00 50 d4 fe 00 b0 04 00 79 00 14 ......P......y.. 1e70: 4d 0b 5f 43 52 53 08 8a 42 55 46 30 0a 04 52 42 M._CRS..BUF0..RB 1e80: 52 30 79 5e 5e 2e 4c 50 43 42 52 43 42 41 0a 0e R0y^^.LPCBRCBA.. 1e90: 52 42 52 30 8a 42 55 46 30 0a 10 4d 42 52 30 79 RBR0.BUF0..MBR0y 1ea0: 5e 5e 2e 4d 43 48 43 4d 48 42 52 0a 0e 4d 42 52 ^^.MCHCMHBR..MBR 1eb0: 30 8a 42 55 46 30 0a 1c 44 42 52 30 79 5e 5e 2e 0.BUF0..DBR0y^^. 1ec0: 4d 43 48 43 44 49 42 52 0a 0c 44 42 52 30 8a 42 MCHCDIBR..DBR0.B 1ed0: 55 46 30 0a 28 45 42 52 30 79 5e 5e 2e 4d 43 48 UF0.(EBR0y^^.MCH 1ee0: 43 45 50 42 52 0a 0c 45 42 52 30 8a 42 55 46 30 CEPBR..EBR0.BUF0 1ef0: 0a 34 58 42 52 30 79 5e 5e 2e 4d 43 48 43 50 58 .4XBR0y^^.MCHCPX 1f00: 42 52 0a 1a 58 42 52 30 8a 42 55 46 30 0a 38 58 BR..XBR0.BUF0.8X 1f10: 53 5a 30 7a 0c 00 00 00 10 5e 5e 2e 4d 43 48 43 SZ0z.....^^.MCHC 1f20: 50 58 53 5a 58 53 5a 30 a4 42 55 46 30 5b 82 4d PXSZXSZ0.BUF0[.M 1f30: 50 50 45 47 50 08 5f 41 44 52 0c 00 00 01 00 14 PPEGP._ADR...... 1f40: 41 09 5f 50 52 54 00 a0 33 47 50 49 43 a4 12 2c A._PRT..3GPIC.., 1f50: 04 12 09 04 0b ff ff 00 00 0a 10 12 09 04 0b ff ................ 1f60: ff 01 00 0a 11 12 0a 04 0b ff ff 0a 02 00 0a 12 ................ 1f70: 12 0a 04 0b ff ff 0a 03 00 0a 13 a1 45 05 a4 12 ............E... 1f80: 41 05 04 12 12 04 0b ff ff 00 5e 5e 2e 4c 50 43 A.........^^.LPC 1f90: 42 4c 4e 4b 41 00 12 12 04 0b ff ff 01 5e 5e 2e BLNKA........^^. 1fa0: 4c 50 43 42 4c 4e 4b 42 00 12 13 04 0b ff ff 0a LPCBLNKB........ 1fb0: 02 5e 5e 2e 4c 50 43 42 4c 4e 4b 43 00 12 13 04 .^^.LPCBLNKC.... 1fc0: 0b ff ff 0a 03 5e 5e 2e 4c 50 43 42 4c 4e 4b 44 .....^^.LPCBLNKD 1fd0: 00 5b 82 49 46 56 47 41 5f 08 5f 41 44 52 00 08 .[.IFVGA_._ADR.. 1fe0: 53 57 49 54 01 08 43 52 54 41 01 08 4c 43 44 41 SWIT..CRTA..LCDA 1ff0: 01 08 54 56 41 41 01 08 56 4c 44 46 01 5b 80 56 ..TVAA..VLDF.[.V 2000: 49 44 53 02 00 0a c8 5b 81 0b 56 49 44 53 03 56 IDS....[..VIDS.V 2010: 44 49 44 20 14 09 5f 53 54 41 00 a4 0a 0f 08 5f DID .._STA....._ 2020: 50 53 43 00 14 0c 5f 50 53 30 00 70 00 5f 50 53 PSC..._PS0.p._PS 2030: 43 14 0c 5f 50 53 31 00 70 01 5f 50 53 43 14 0d C.._PS1.p._PSC.. 2040: 5f 50 53 33 00 70 0a 03 5f 50 53 43 14 10 5f 44 _PS3.p.._PSC.._D 2050: 4f 53 01 70 7b 68 0a 03 00 53 57 49 54 14 17 5f OS.p{h...SWIT.._ 2060: 44 4f 44 00 a4 12 0f 03 0c 00 01 01 00 0c 10 01 DOD............. 2070: 01 00 0b 00 02 5b 82 4d 08 43 52 54 5f 14 0a 5f .....[.M.CRT_.._ 2080: 41 44 52 00 a4 0b 00 01 14 41 06 5f 44 43 53 00 ADR......A._DCS. 2090: 5e 5e 5e 5e 2e 4c 50 43 42 50 48 53 53 0a 0c 70 ^^^^.LPCBPHSS..p 20a0: 43 41 44 4c 60 70 43 53 54 45 61 7b 60 0a 02 60 CADL`pCSTEa{`..` 20b0: 7b 61 0a 02 61 a0 08 60 70 01 43 52 54 41 a1 07 {a..a..`p.CRTA.. 20c0: 70 00 43 52 54 41 a0 13 43 52 54 41 a0 08 93 61 p.CRTA..CRTA...a 20d0: 0a 02 a4 0a 1f a1 04 a4 0a 1d a1 0f a0 08 93 61 ...............a 20e0: 0a 02 a4 0a 0f a1 04 a4 0a 0d 14 12 5f 44 47 53 ............_DGS 20f0: 00 a0 07 43 52 54 41 a4 01 a1 03 a4 00 14 06 5f ...CRTA........_ 2100: 44 53 53 01 5b 82 47 0e 4c 43 44 5f 14 0a 5f 41 DSS.[.G.LCD_.._A 2110: 44 52 00 a4 0b 10 01 14 4d 05 5f 44 43 53 00 5e DR......M._DCS.^ 2120: 5e 5e 5e 2e 4c 50 43 42 50 48 53 53 0a 0c 70 43 ^^^.LPCBPHSS..pC 2130: 41 44 4c 60 70 43 53 54 45 61 7b 60 01 60 7b 61 ADL`pCSTEa{`.`{a 2140: 01 61 a0 08 60 70 01 4c 43 44 41 a1 07 70 00 4c .a..`p.LCDA..p.L 2150: 43 44 41 a0 12 4c 43 44 41 a0 07 93 61 01 a4 0a CDA..LCDA...a... 2160: 1f a1 04 a4 0a 1d a1 0e a0 07 93 61 01 a4 0a 0f ...........a.... 2170: a1 04 a4 0a 0d 14 12 5f 44 47 53 00 a0 07 4c 43 ......._DGS...LC 2180: 44 41 a4 01 a1 03 a4 00 14 06 5f 44 53 53 01 14 DA........_DSS.. 2190: 1d 5f 42 43 4c 00 a4 12 15 0a 0a 46 0a 28 00 0a ._BCL......F.(.. 21a0: 0a 0a 14 0a 1e 0a 28 0a 32 0a 3c 0a 46 14 20 5f ......(.2.<.F. _ 21b0: 42 43 4d 01 78 68 0a 0a 60 61 70 61 5e 5e 5e 5e BCM.xh..`apa^^^^ 21c0: 2f 03 4c 50 43 42 45 43 30 5f 42 52 54 53 14 1e /.LPCBEC0_BRTS.. 21d0: 5f 42 51 43 00 77 5e 5e 5e 5e 2f 03 4c 50 43 42 _BQC.w^^^^/.LPCB 21e0: 45 43 30 5f 42 52 54 53 0a 0a 60 a4 60 5b 82 4d EC0_BRTS..`.`[.M 21f0: 08 54 56 5f 5f 14 0a 5f 41 44 52 00 a4 0b 00 02 .TV__.._ADR..... 2200: 14 41 06 5f 44 43 53 00 5e 5e 5e 5e 2e 4c 50 43 .A._DCS.^^^^.LPC 2210: 42 50 48 53 53 0a 0c 70 43 41 44 4c 60 70 43 53 BPHSS..pCADL`pCS 2220: 54 45 61 7b 60 0a 04 60 7b 61 0a 04 61 a0 08 60 TEa{`..`{a..a..` 2230: 70 01 54 56 41 41 a1 07 70 00 54 56 41 41 a0 13 p.TVAA..p.TVAA.. 2240: 54 56 41 41 a0 08 93 61 0a 04 a4 0a 1f a1 04 a4 TVAA...a........ 2250: 0a 1d a1 0f a0 08 93 61 0a 04 a4 0a 0f a1 04 a4 .......a........ 2260: 0a 0d 14 12 5f 44 47 53 00 a0 07 54 56 41 41 a4 ...._DGS...TVAA. 2270: 01 a1 03 a4 00 14 06 5f 44 53 53 01 14 49 10 44 ......._DSS..I.D 2280: 53 53 57 00 a0 4a 0e 93 53 57 49 54 00 5e 5e 5e SSW..J..SWIT.^^^ 2290: 2e 4c 50 43 42 50 48 53 53 0a 0c 70 43 41 44 4c .LPCBPHSS..pCADL 22a0: 60 70 43 53 54 45 61 a0 16 94 61 01 7b 60 61 56 `pCSTEa...a.{`aV 22b0: 4c 44 46 7b 56 4c 44 46 0a fe 56 4c 44 46 a0 43 LDF{VLDF..VLDF.C 22c0: 0a 56 4c 44 46 a0 27 93 60 0a 09 a0 0b 93 61 0a .VLDF.'.`.....a. 22d0: 08 53 54 42 4c 0a 02 a0 0a 93 61 01 53 54 42 4c .STBL.....a.STBL 22e0: 0a 03 a0 0a 93 61 0a 09 53 54 42 4c 01 a0 28 93 .....a..STBL..(. 22f0: 60 0a 0a a0 0b 93 61 0a 08 53 54 42 4c 0a 05 a0 `.....a..STBL... 2300: 0a 93 61 0a 02 53 54 42 4c 01 a0 0b 93 61 0a 0a ..a..STBL....a.. 2310: 53 54 42 4c 0a 04 a0 4b 04 93 60 0a 0b a0 0b 93 STBL...K..`..... 2320: 61 0a 08 53 54 42 4c 0a 02 a0 0b 93 61 0a 09 53 a..STBL.....a..S 2330: 54 42 4c 0a 05 a0 0a 93 61 01 53 54 42 4c 0a 03 TBL.....a.STBL.. 2340: a0 0b 93 61 0a 0a 53 54 42 4c 0a 04 a0 0a 93 61 ...a..STBL.....a 2350: 0a 02 53 54 42 4c 01 a0 0a 93 61 0a 0b 53 54 42 ..STBL....a..STB 2360: 4c 01 a1 0c 70 01 56 4c 44 46 53 54 42 4c 01 a1 L...p.VLDFSTBL.. 2370: 16 a0 14 93 53 57 49 54 01 5e 5e 5e 2e 4c 50 43 ....SWIT.^^^.LPC 2380: 42 50 48 53 53 01 14 45 0b 53 54 42 4c 01 a0 16 BPHSS..E.STBL... 2390: 93 68 01 70 00 43 52 54 41 70 01 4c 43 44 41 70 .h.p.CRTAp.LCDAp 23a0: 00 54 56 41 41 a0 17 93 68 0a 02 70 01 43 52 54 .TVAA...h..p.CRT 23b0: 41 70 00 4c 43 44 41 70 00 54 56 41 41 a0 17 93 Ap.LCDAp.TVAA... 23c0: 68 0a 03 70 01 43 52 54 41 70 01 4c 43 44 41 70 h..p.CRTAp.LCDAp 23d0: 00 54 56 41 41 a0 17 93 68 0a 04 70 00 43 52 54 .TVAA...h..p.CRT 23e0: 41 70 00 4c 43 44 41 70 01 54 56 41 41 a0 17 93 Ap.LCDAp.TVAA... 23f0: 68 0a 05 70 00 43 52 54 41 70 01 4c 43 44 41 70 h..p.CRTAp.LCDAp 2400: 01 54 56 41 41 a0 17 93 68 0a 06 70 01 43 52 54 .TVAA...h..p.CRT 2410: 41 70 00 4c 43 44 41 70 01 54 56 41 41 a0 17 93 Ap.LCDAp.TVAA... 2420: 68 0a 07 70 01 43 52 54 41 70 01 4c 43 44 41 70 h..p.CRTAp.LCDAp 2430: 01 54 56 41 41 86 56 47 41 5f 0a 80 5b 82 42 f8 .TVAA.VGA_..[.B. 2440: 47 46 58 30 08 5f 41 44 52 0c 00 00 02 00 14 10 GFX0._ADR....... 2450: 5f 44 4f 53 01 70 7b 68 0a 07 00 44 53 45 4e 14 _DOS.p{h...DSEN. 2460: 41 26 5f 44 4f 44 00 70 00 4e 44 49 44 a0 15 92 A&_DOD.p.NDID... 2470: 93 44 49 44 4c 00 70 53 44 44 4c 44 49 44 31 44 .DIDL.pSDDLDID1D 2480: 49 44 31 a0 15 92 93 44 44 4c 32 00 70 53 44 44 ID1....DDL2.pSDD 2490: 4c 44 49 44 32 44 49 44 32 a0 15 92 93 44 44 4c LDID2DID2....DDL 24a0: 33 00 70 53 44 44 4c 44 49 44 33 44 49 44 33 a0 3.pSDDLDID3DID3. 24b0: 15 92 93 44 44 4c 34 00 70 53 44 44 4c 44 49 44 ...DDL4.pSDDLDID 24c0: 34 44 49 44 34 a0 15 92 93 44 44 4c 35 00 70 53 4DID4....DDL5.pS 24d0: 44 44 4c 44 49 44 35 44 49 44 35 a0 2c 93 4e 44 DDLDID5DID5.,.ND 24e0: 49 44 01 08 54 4d 50 31 12 07 01 0c ff ff ff ff ID..TMP1........ 24f0: 70 7d 0c 00 00 01 00 44 49 44 31 00 88 54 4d 50 p}.....DID1..TMP 2500: 31 00 00 a4 54 4d 50 31 a0 46 04 93 4e 44 49 44 1...TMP1.F..NDID 2510: 0a 02 08 54 4d 50 32 12 0c 02 0c ff ff ff ff 0c ...TMP2......... 2520: ff ff ff ff 70 7d 0c 00 00 01 00 44 49 44 31 00 ....p}.....DID1. 2530: 88 54 4d 50 32 00 00 70 7d 0c 00 00 01 00 44 49 .TMP2..p}.....DI 2540: 44 32 00 88 54 4d 50 32 01 00 a4 54 4d 50 32 a0 D2..TMP2...TMP2. 2550: 4f 05 93 4e 44 49 44 0a 03 08 54 4d 50 33 12 11 O..NDID...TMP3.. 2560: 03 0c ff ff ff ff 0c ff ff ff ff 0c ff ff ff ff ................ 2570: 70 7d 0c 00 00 01 00 44 49 44 31 00 88 54 4d 50 p}.....DID1..TMP 2580: 33 00 00 70 7d 0c 00 00 01 00 44 49 44 32 00 88 3..p}.....DID2.. 2590: 54 4d 50 33 01 00 70 7d 0c 00 00 01 00 44 49 44 TMP3..p}.....DID 25a0: 33 00 88 54 4d 50 33 0a 02 00 a4 54 4d 50 33 a0 3..TMP3....TMP3. 25b0: 48 07 93 4e 44 49 44 0a 04 08 54 4d 50 34 12 16 H..NDID...TMP4.. 25c0: 04 0c ff ff ff ff 0c ff ff ff ff 0c ff ff ff ff ................ 25d0: 0c ff ff ff ff 70 7d 0c 00 00 01 00 44 49 44 31 .....p}.....DID1 25e0: 00 88 54 4d 50 34 00 00 70 7d 0c 00 00 01 00 44 ..TMP4..p}.....D 25f0: 49 44 32 00 88 54 4d 50 34 01 00 70 7d 0c 00 00 ID2..TMP4..p}... 2600: 01 00 44 49 44 33 00 88 54 4d 50 34 0a 02 00 70 ..DID3..TMP4...p 2610: 7d 0c 00 00 01 00 44 49 44 34 00 88 54 4d 50 34 }.....DID4..TMP4 2620: 0a 03 00 a4 54 4d 50 34 a0 41 09 94 4e 44 49 44 ....TMP4.A..NDID 2630: 0a 04 08 54 4d 50 35 12 1b 05 0c ff ff ff ff 0c ...TMP5......... 2640: ff ff ff ff 0c ff ff ff ff 0c ff ff ff ff 0c ff ................ 2650: ff ff ff 70 7d 0c 00 00 01 00 44 49 44 31 00 88 ...p}.....DID1.. 2660: 54 4d 50 35 00 00 70 7d 0c 00 00 01 00 44 49 44 TMP5..p}.....DID 2670: 32 00 88 54 4d 50 35 01 00 70 7d 0c 00 00 01 00 2..TMP5..p}..... 2680: 44 49 44 33 00 88 54 4d 50 35 0a 02 00 70 7d 0c DID3..TMP5...p}. 2690: 00 00 01 00 44 49 44 34 00 88 54 4d 50 35 0a 03 ....DID4..TMP5.. 26a0: 00 70 7d 0c 00 00 01 00 44 49 44 34 00 88 54 4d .p}.....DID4..TM 26b0: 50 35 0a 04 00 a4 54 4d 50 35 a4 12 05 01 0b 00 P5....TMP5...... 26c0: 04 5b 82 43 06 44 44 30 31 14 1c 5f 41 44 52 08 .[.C.DD01.._ADR. 26d0: a0 09 93 44 49 44 31 00 a4 01 a1 0b a4 7b 0b ff ...DID1......{.. 26e0: ff 44 49 44 31 00 14 0f 5f 44 43 53 00 a4 43 44 .DID1..._DCS..CD 26f0: 44 53 44 49 44 31 14 0f 5f 44 47 53 00 a4 4e 44 DSDID1.._DGS..ND 2700: 44 53 44 49 44 31 14 1f 5f 44 53 53 01 a0 18 93 DSDID1.._DSS.... 2710: 7b 68 0c 00 00 00 c0 00 0c 00 00 00 c0 70 4e 53 {h...........pNS 2720: 54 45 43 53 54 45 5b 82 44 06 44 44 30 32 14 1d TECSTE[.D.DD02.. 2730: 5f 41 44 52 08 a0 0a 93 44 49 44 32 00 a4 0a 02 _ADR....DID2.... 2740: a1 0b a4 7b 0b ff ff 44 49 44 32 00 14 0f 5f 44 ...{...DID2..._D 2750: 43 53 00 a4 43 44 44 53 44 49 44 32 14 0f 5f 44 CS..CDDSDID2.._D 2760: 47 53 00 a4 4e 44 44 53 44 49 44 32 14 1f 5f 44 GS..NDDSDID2.._D 2770: 53 53 01 a0 18 93 7b 68 0c 00 00 00 c0 00 0c 00 SS....{h........ 2780: 00 00 c0 70 4e 53 54 45 43 53 54 45 5b 82 41 07 ...pNSTECSTE[.A. 2790: 44 44 30 33 14 1d 5f 41 44 52 08 a0 0a 93 44 49 DD03.._ADR....DI 27a0: 44 33 00 a4 0a 03 a1 0b a4 7b 0b ff ff 44 49 44 D3.......{...DID 27b0: 33 00 14 1c 5f 44 43 53 00 a0 0a 93 44 49 44 33 3..._DCS....DID3 27c0: 00 a4 0a 0b a1 0a a4 43 44 44 53 44 49 44 33 14 .......CDDSDID3. 27d0: 0f 5f 44 47 53 00 a4 4e 44 44 53 44 49 44 33 14 ._DGS..NDDSDID3. 27e0: 1f 5f 44 53 53 01 a0 18 93 7b 68 0c 00 00 00 c0 ._DSS....{h..... 27f0: 00 0c 00 00 00 c0 70 4e 53 54 45 43 53 54 45 5b ......pNSTECSTE[ 2800: 82 41 07 44 44 30 34 14 1d 5f 41 44 52 08 a0 0a .A.DD04.._ADR... 2810: 93 44 49 44 34 00 a4 0a 04 a1 0b a4 7b 0b ff ff .DID4.......{... 2820: 44 49 44 34 00 14 1c 5f 44 43 53 00 a0 0a 93 44 DID4..._DCS....D 2830: 49 44 34 00 a4 0a 0b a1 0a a4 43 44 44 53 44 49 ID4.......CDDSDI 2840: 44 34 14 0f 5f 44 47 53 00 a4 4e 44 44 53 44 49 D4.._DGS..NDDSDI 2850: 44 34 14 1f 5f 44 53 53 01 a0 18 93 7b 68 0c 00 D4.._DSS....{h.. 2860: 00 00 c0 00 0c 00 00 00 c0 70 4e 53 54 45 43 53 .........pNSTECS 2870: 54 45 5b 82 41 07 44 44 30 35 14 1d 5f 41 44 52 TE[.A.DD05.._ADR 2880: 08 a0 0a 93 44 49 44 35 00 a4 0a 05 a1 0b a4 7b ....DID5.......{ 2890: 0b ff ff 44 49 44 35 00 14 1c 5f 44 43 53 00 a0 ...DID5..._DCS.. 28a0: 0a 93 44 49 44 35 00 a4 0a 0b a1 0a a4 43 44 44 ..DID5.......CDD 28b0: 53 44 49 44 35 14 0f 5f 44 47 53 00 a4 4e 44 44 SDID5.._DGS..NDD 28c0: 53 44 49 44 35 14 1f 5f 44 53 53 01 a0 18 93 7b SDID5.._DSS....{ 28d0: 68 0c 00 00 00 c0 00 0c 00 00 00 c0 70 4e 53 54 h...........pNST 28e0: 45 43 53 54 45 14 4e 06 53 44 44 4c 01 75 4e 44 ECSTE.N.SDDL.uND 28f0: 49 44 70 7b 68 0b 0f 0f 00 60 7d 0c 00 00 00 80 IDp{h....`}..... 2900: 60 61 a0 09 93 44 49 44 4c 60 a4 61 a0 09 93 44 `a...DIDL`.a...D 2910: 44 4c 32 60 a4 61 a0 09 93 44 44 4c 33 60 a4 61 DL2`.a...DDL3`.a 2920: a0 09 93 44 44 4c 34 60 a4 61 a0 09 93 44 44 4c ...DDL4`.a...DDL 2930: 35 60 a4 61 a0 09 93 44 44 4c 36 60 a4 61 a0 09 5`.a...DDL6`.a.. 2940: 93 44 44 4c 37 60 a4 61 a0 09 93 44 44 4c 38 60 .DDL7`.a...DDL8` 2950: a4 61 a4 00 14 4a 08 43 44 44 53 01 a0 0f 93 43 .a...J.CDDS....C 2960: 41 44 4c 7b 68 0b 0f 0f 00 a4 0a 1f a0 0f 93 43 ADL{h..........C 2970: 41 4c 32 7b 68 0b 0f 0f 00 a4 0a 1f a0 0f 93 43 AL2{h..........C 2980: 41 4c 33 7b 68 0b 0f 0f 00 a4 0a 1f a0 0f 93 43 AL3{h..........C 2990: 41 4c 34 7b 68 0b 0f 0f 00 a4 0a 1f a0 0f 93 43 AL4{h..........C 29a0: 41 4c 35 7b 68 0b 0f 0f 00 a4 0a 1f a0 0f 93 43 AL5{h..........C 29b0: 41 4c 36 7b 68 0b 0f 0f 00 a4 0a 1f a0 0f 93 43 AL6{h..........C 29c0: 41 4c 37 7b 68 0b 0f 0f 00 a4 0a 1f a0 0f 93 43 AL7{h..........C 29d0: 41 4c 38 7b 68 0b 0f 0f 00 a4 0a 1f a4 0a 1d 14 AL8{h........... 29e0: 41 08 4e 44 44 53 01 a0 0e 93 4e 41 44 4c 7b 68 A.NDDS....NADL{h 29f0: 0b 0f 0f 00 a4 01 a0 0e 93 4e 44 4c 32 7b 68 0b .........NDL2{h. 2a00: 0f 0f 00 a4 01 a0 0e 93 4e 44 4c 33 7b 68 0b 0f ........NDL3{h.. 2a10: 0f 00 a4 01 a0 0e 93 4e 44 4c 34 7b 68 0b 0f 0f .......NDL4{h... 2a20: 00 a4 01 a0 0e 93 4e 44 4c 35 7b 68 0b 0f 0f 00 ......NDL5{h.... 2a30: a4 01 a0 0e 93 4e 44 4c 36 7b 68 0b 0f 0f 00 a4 .....NDL6{h..... 2a40: 01 a0 0e 93 4e 44 4c 37 7b 68 0b 0f 0f 00 a4 01 ....NDL7{h...... 2a50: a0 0e 93 4e 44 4c 38 7b 68 0b 0f 0f 00 a4 01 a4 ...NDL8{h....... 2a60: 00 14 40 07 42 52 54 4e 09 a0 14 93 7b 44 49 44 ..@.BRTN....{DID 2a70: 31 0b 00 0f 00 0b 00 04 86 44 44 30 31 68 a0 14 1........DD01h.. 2a80: 93 7b 44 49 44 32 0b 00 0f 00 0b 00 04 86 44 44 .{DID2........DD 2a90: 30 32 68 a0 14 93 7b 44 49 44 33 0b 00 0f 00 0b 02h...{DID3..... 2aa0: 00 04 86 44 44 30 33 68 a0 14 93 7b 44 49 44 34 ...DD03h...{DID4 2ab0: 0b 00 0f 00 0b 00 04 86 44 44 30 34 68 a0 14 93 ........DD04h... 2ac0: 7b 44 49 44 35 0b 00 0f 00 0b 00 04 86 44 44 30 {DID5........DD0 2ad0: 35 68 10 24 5e 5e 50 43 49 30 5b 80 4d 43 48 50 5h.$^^PCI0[.MCHP 2ae0: 02 0a 40 0a c0 5b 81 10 4d 43 48 50 00 00 40 30 ..@..[..MCHP..@0 2af0: 54 41 53 4d 0a 00 06 5b 80 49 47 44 50 02 0a 40 TASM...[.IGDP..@ 2b00: 0a c0 5b 81 45 05 49 47 44 50 00 00 40 09 00 01 ..[.E.IGDP..@... 2b10: 47 49 56 44 01 00 02 47 55 4d 41 03 00 09 00 04 GIVD...GUMA..... 2b20: 47 4d 46 4e 01 00 1b 00 40 46 41 53 4c 45 08 00 GMFN....@FASLE.. 2b30: 18 47 53 53 45 01 47 53 53 42 0e 47 53 45 53 01 .GSSE.GSSB.GSES. 2b40: 00 30 00 08 43 44 56 4c 05 00 03 00 18 4c 42 50 .0..CDVL.....LBP 2b50: 43 08 00 30 41 53 4c 53 20 5b 80 49 47 44 4d 00 C..0ASLS [.IGDM. 2b60: 41 53 4c 42 0b 00 20 5b 81 4e 16 49 47 44 4d 00 ASLB.. [.N.IGDM. 2b70: 53 49 47 4e 40 08 53 49 5a 45 20 4f 56 45 52 20 SIGN@.SIZE OVER 2b80: 53 56 45 52 40 10 56 56 45 52 40 08 47 56 45 52 SVER@.VVER@.GVER 2b90: 40 08 4d 42 4f 58 20 00 40 52 44 52 44 59 20 43 @.MBOX .@RDRDY C 2ba0: 53 54 53 20 43 45 56 54 20 00 40 0a 44 49 44 4c STS CEVT .@.DIDL 2bb0: 20 44 44 4c 32 20 44 44 4c 33 20 44 44 4c 34 20 DDL2 DDL3 DDL4 2bc0: 44 44 4c 35 20 44 44 4c 36 20 44 44 4c 37 20 44 DDL5 DDL6 DDL7 D 2bd0: 44 4c 38 20 43 50 44 4c 20 43 50 4c 32 20 43 50 DL8 CPDL CPL2 CP 2be0: 4c 33 20 43 50 4c 34 20 43 50 4c 35 20 43 50 4c L3 CPL4 CPL5 CPL 2bf0: 36 20 43 50 4c 37 20 43 50 4c 38 20 43 41 44 4c 6 CPL7 CPL8 CADL 2c00: 20 43 41 4c 32 20 43 41 4c 33 20 43 41 4c 34 20 CAL2 CAL3 CAL4 2c10: 43 41 4c 35 20 43 41 4c 36 20 43 41 4c 37 20 43 CAL5 CAL6 CAL7 C 2c20: 41 4c 38 20 4e 41 44 4c 20 4e 44 4c 32 20 4e 44 AL8 NADL NDL2 ND 2c30: 4c 33 20 4e 44 4c 34 20 4e 44 4c 35 20 4e 44 4c L3 NDL4 NDL5 NDL 2c40: 36 20 4e 44 4c 37 20 4e 44 4c 38 20 41 53 4c 50 6 NDL7 NDL8 ASLP 2c50: 20 54 49 44 58 20 43 48 50 44 20 43 4c 49 44 20 TIDX CHPD CLID 2c60: 43 44 43 4b 20 53 58 53 57 20 45 56 54 53 20 43 CDCK SXSW EVTS C 2c70: 4e 4f 54 20 4e 52 44 59 20 00 40 1e 53 43 49 45 NOT NRDY .@.SCIE 2c80: 01 47 45 46 43 04 47 58 46 43 03 47 45 53 46 08 .GEFC.GXFC.GESF. 2c90: 00 10 50 41 52 4d 20 44 53 4c 50 20 00 40 7a 41 ..PARM DSLP .@zA 2ca0: 52 44 59 20 41 53 4c 43 20 54 43 48 45 20 41 4c RDY ASLC TCHE AL 2cb0: 53 49 20 42 43 4c 50 20 50 46 49 54 20 43 42 4c SI BCLP PFIT CBL 2cc0: 56 20 42 43 4c 4d 40 14 43 50 46 4d 20 00 40 5c V BCLM@.CPFM .@\ 2cd0: 47 56 44 31 80 00 0e 08 44 42 54 42 12 32 15 00 GVD1....DBTB.2.. 2ce0: 0a 07 0a 38 0b c0 01 0b 00 0e 0a 3f 0b c7 01 0b ...8.......?.... 2cf0: 07 0e 0b f8 01 0b 38 0e 0b c0 0f 00 00 00 00 00 ......8......... 2d00: 0b 00 70 0b 07 70 0b 38 70 0b c0 71 0b 00 7e 08 ..p..p.8p..q..~. 2d10: 43 44 43 54 12 23 03 12 0a 03 0a c8 0b 40 01 0b CDCT.#.......@.. 2d20: 90 01 12 0a 03 0a c8 0b 4d 01 0b 90 01 12 0a 03 ........M....... 2d30: 0a de 0b 4d 01 0b 7d 01 08 53 55 43 43 01 08 4e ...M..}..SUCC..N 2d40: 56 4c 44 0a 02 08 43 52 49 54 0a 04 08 4e 43 52 VLD...CRIT...NCR 2d50: 54 0a 06 14 4c 4a 47 53 43 49 08 14 44 1e 47 42 T...LJGSCI..D.GB 2d60: 44 41 08 a0 1a 93 47 45 53 46 00 70 0b 79 02 50 DA....GESF.p.y.P 2d70: 41 52 4d 70 00 47 45 53 46 a4 53 55 43 43 a0 1a ARMp.GESF.SUCC.. 2d80: 93 47 45 53 46 01 70 0b 40 02 50 41 52 4d 70 00 .GESF.p.@.PARMp. 2d90: 47 45 53 46 a4 53 55 43 43 a0 47 04 93 47 45 53 GESF.SUCC.G..GES 2da0: 46 0a 04 7b 50 41 52 4d 0c 00 00 ff ef 50 41 52 F..{PARM.....PAR 2db0: 4d 7b 50 41 52 4d 79 83 88 44 42 54 42 49 42 54 M{PARMy..DBTBIBT 2dc0: 54 00 0a 10 00 50 41 52 4d 7d 49 42 54 54 50 41 T....PARM}IBTTPA 2dd0: 52 4d 50 41 52 4d 70 00 47 45 53 46 a4 53 55 43 RMPARMp.GESF.SUC 2de0: 43 a0 4a 06 93 47 45 53 46 0a 05 70 49 50 53 43 C.J..GESF..pIPSC 2df0: 50 41 52 4d 7d 50 41 52 4d 79 49 50 41 54 0a 08 PARM}PARMyIPAT.. 2e00: 00 50 41 52 4d 72 50 41 52 4d 0b 00 01 50 41 52 .PARMrPARM...PAR 2e10: 4d 7d 50 41 52 4d 79 4c 49 44 53 0a 10 00 50 41 M}PARMyLIDS...PA 2e20: 52 4d 72 50 41 52 4d 0c 00 00 01 00 50 41 52 4d RMrPARM.....PARM 2e30: 7d 50 41 52 4d 79 49 42 49 41 0a 14 00 50 41 52 }PARMyIBIA...PAR 2e40: 4d 70 00 47 45 53 46 a4 53 55 43 43 a0 2d 93 47 Mp.GESF.SUCC.-.G 2e50: 45 53 46 0a 06 70 49 54 56 46 50 41 52 4d 7d 50 ESF..pITVFPARM}P 2e60: 41 52 4d 79 49 54 56 4d 0a 04 00 50 41 52 4d 70 ARMyITVM...PARMp 2e70: 00 47 45 53 46 a4 53 55 43 43 a0 4f 08 93 47 45 .GESF.SUCC.O..GE 2e80: 53 46 0a 07 70 47 49 56 44 50 41 52 4d 7f 50 41 SF..pGIVDPARM.PA 2e90: 52 4d 01 50 41 52 4d 7d 50 41 52 4d 79 47 4d 46 RM.PARM}PARMyGMF 2ea0: 4e 01 00 50 41 52 4d 7d 50 41 52 4d 0b 00 10 50 N..PARM}PARM...P 2eb0: 41 52 4d a0 16 49 44 4d 4d 7d 50 41 52 4d 79 49 ARM..IDMM}PARMyI 2ec0: 44 4d 53 0a 11 00 50 41 52 4d a1 12 7d 50 41 52 DMS...PARM..}PAR 2ed0: 4d 79 49 44 4d 53 0a 0d 00 50 41 52 4d 7d 79 83 MyIDMS...PARM}y. 2ee0: 88 83 88 43 44 43 54 48 56 43 4f 00 74 43 44 56 ...CDCTHVCO.tCDV 2ef0: 4c 01 00 00 0a 15 00 50 41 52 4d 50 41 52 4d 70 L......PARMPARMp 2f00: 01 47 45 53 46 a4 53 55 43 43 a0 2a 93 47 45 53 .GESF.SUCC.*.GES 2f10: 46 0a 0a 70 00 50 41 52 4d a0 10 49 53 53 43 7d F..p.PARM..ISSC} 2f20: 50 41 52 4d 0a 03 50 41 52 4d 70 00 47 45 53 46 PARM..PARMp.GESF 2f30: a4 53 55 43 43 70 00 47 45 53 46 a4 43 52 49 54 .SUCCp.GESF.CRIT 2f40: 14 41 28 53 42 43 42 08 a0 20 93 47 45 53 46 00 .A(SBCB.. .GESF. 2f50: 70 00 50 41 52 4d 70 0b 7d f7 50 41 52 4d 70 00 p.PARMp.}.PARMp. 2f60: 47 45 53 46 a4 53 55 43 43 a0 18 93 47 45 53 46 GESF.SUCC...GESF 2f70: 01 70 00 47 45 53 46 70 00 50 41 52 4d a4 53 55 .p.GESFp.PARM.SU 2f80: 43 43 a0 19 93 47 45 53 46 0a 03 70 00 47 45 53 CC...GESF..p.GES 2f90: 46 70 00 50 41 52 4d a4 53 55 43 43 a0 19 93 47 Fp.PARM.SUCC...G 2fa0: 45 53 46 0a 04 70 00 47 45 53 46 70 00 50 41 52 ESF..p.GESFp.PAR 2fb0: 4d a4 53 55 43 43 a0 19 93 47 45 53 46 0a 05 70 M.SUCC...GESF..p 2fc0: 00 47 45 53 46 70 00 50 41 52 4d a4 53 55 43 43 .GESFp.PARM.SUCC 2fd0: a0 37 93 47 45 53 46 0a 06 70 7b 50 41 52 4d 0a .7.GESF..p{PARM. 2fe0: 0f 00 49 54 56 46 70 7a 7b 50 41 52 4d 0a f0 00 ..ITVFpz{PARM... 2ff0: 0a 04 00 49 54 56 4d 70 00 47 45 53 46 70 00 50 ...ITVMp.GESFp.P 3000: 41 52 4d a4 53 55 43 43 a0 19 93 47 45 53 46 0a ARM.SUCC...GESF. 3010: 07 70 00 47 45 53 46 70 00 50 41 52 4d a4 53 55 .p.GESFp.PARM.SU 3020: 43 43 a0 19 93 47 45 53 46 0a 08 70 00 47 45 53 CC...GESF..p.GES 3030: 46 70 00 50 41 52 4d a4 53 55 43 43 a0 24 93 47 Fp.PARM.SUCC.$.G 3040: 45 53 46 0a 09 7b 50 41 52 4d 0a ff 49 42 54 54 ESF..{PARM..IBTT 3050: 70 00 47 45 53 46 70 00 50 41 52 4d a4 53 55 43 p.GESFp.PARM.SUC 3060: 43 a0 46 05 93 47 45 53 46 0a 0a 7b 50 41 52 4d C.F..GESF..{PARM 3070: 0a ff 49 50 53 43 a0 21 7b 7a 50 41 52 4d 0a 08 ..IPSC.!{zPARM.. 3080: 00 0a ff 00 7b 7a 50 41 52 4d 0a 08 00 0a ff 49 ....{zPARM.....I 3090: 50 41 54 76 49 50 41 54 7b 7a 50 41 52 4d 0a 14 PATvIPAT{zPARM.. 30a0: 00 0a 07 49 42 49 41 70 00 47 45 53 46 70 00 50 ...IBIAp.GESFp.P 30b0: 41 52 4d a4 53 55 43 43 a0 40 06 93 47 45 53 46 ARM.SUCC.@..GESF 30c0: 0a 0b 7b 7a 50 41 52 4d 01 00 01 49 46 31 45 a0 ..{zPARM...IF1E. 30d0: 21 7b 50 41 52 4d 0c 00 e0 01 00 00 7b 7a 50 41 !{PARM......{zPA 30e0: 52 4d 0a 0d 00 0a 0f 49 44 4d 53 70 00 49 44 4d RM.....IDMSp.IDM 30f0: 4d a1 16 7b 7a 50 41 52 4d 0a 11 00 0a 0f 49 44 M..{zPARM.....ID 3100: 4d 53 70 01 49 44 4d 4d 70 00 47 45 53 46 70 00 MSp.IDMMp.GESFp. 3110: 50 41 52 4d a4 53 55 43 43 a0 19 93 47 45 53 46 PARM.SUCC...GESF 3120: 0a 10 70 00 47 45 53 46 70 00 50 41 52 4d a4 53 ..p.GESFp.PARM.S 3130: 55 43 43 a0 1f 93 47 45 53 46 0a 11 7d 50 41 52 UCC...GESF..}PAR 3140: 4d 0b 00 01 50 41 52 4d 70 00 47 45 53 46 a4 53 M...PARMp.GESF.S 3150: 55 43 43 a0 49 04 93 47 45 53 46 0a 12 a0 26 7b UCC.I..GESF...&{ 3160: 50 41 52 4d 01 00 a0 10 93 7a 50 41 52 4d 01 00 PARM.....zPARM.. 3170: 01 70 01 49 53 53 43 a1 0c 70 00 47 45 53 46 a4 .p.ISSC..p.GESF. 3180: 43 52 49 54 a1 07 70 00 49 53 53 43 70 00 47 45 CRIT..p.ISSCp.GE 3190: 53 46 70 00 50 41 52 4d a4 53 55 43 43 a0 19 93 SFp.PARM.SUCC... 31a0: 47 45 53 46 0a 13 70 00 47 45 53 46 70 00 50 41 GESF..p.GESFp.PA 31b0: 52 4d a4 53 55 43 43 70 00 47 45 53 46 a4 53 55 RM.SUCCp.GESF.SU 31c0: 43 43 a0 11 93 47 45 46 43 0a 04 70 47 42 44 41 CC...GEFC..pGBDA 31d0: 47 58 46 43 a0 11 93 47 45 46 43 0a 06 70 53 42 GXFC...GEFC..pSB 31e0: 43 42 47 58 46 43 70 00 47 45 46 43 70 01 53 43 CBGXFCp.GEFCp.SC 31f0: 49 53 70 00 47 53 53 45 70 00 53 43 49 45 a4 00 ISp.GSSEp.SCIE.. 3200: 14 19 50 44 52 44 00 a0 0c 92 44 52 44 59 5b 22 ..PDRD....DRDY[" 3210: 41 53 4c 50 a4 92 44 52 44 59 14 1d 50 53 54 53 ASLP..DRDY..PSTS 3220: 00 a0 0e 94 43 53 54 53 0a 02 5b 22 41 53 4c 50 ....CSTS..["ASLP 3230: a4 93 43 53 54 53 0a 03 14 47 06 47 4e 4f 54 02 ..CSTS...G.GNOT. 3240: a0 07 50 44 52 44 a4 01 a0 07 50 53 54 53 a4 01 ..PDRD....PSTS.. 3250: 70 68 43 45 56 54 70 0a 03 43 53 54 53 a0 2c 90 phCEVTp..CSTS.,. 3260: 93 43 48 50 44 00 93 69 00 a0 18 91 94 4f 53 59 .CHPD..i.....OSY 3270: 53 0b d0 07 95 4f 53 59 53 0b d6 07 86 50 43 49 S....OSYS....PCI 3280: 30 69 a1 07 86 47 46 58 30 69 86 47 46 58 30 0a 0i...GFX0i.GFX0. 3290: 80 a0 0c 92 50 53 54 53 70 00 43 45 56 54 a4 00 ....PSTSp.CEVT.. 32a0: 14 13 47 48 44 53 01 70 68 54 49 44 58 a4 47 4e ..GHDS.phTIDX.GN 32b0: 4f 54 01 00 14 14 47 4c 49 44 01 70 68 43 4c 49 OT....GLID.phCLI 32c0: 44 a4 47 4e 4f 54 0a 02 00 14 15 47 44 43 4b 01 D.GNOT.....GDCK. 32d0: 70 68 43 44 43 4b a4 47 4e 4f 54 0a 04 0a 80 14 phCDCK.GNOT..... 32e0: 19 50 41 52 44 00 a0 0c 92 41 52 44 59 5b 22 41 .PARD....ARDY["A 32f0: 53 4c 50 a4 92 41 52 44 59 14 46 0c 41 49 4e 54 SLP..ARDY.F.AINT 3300: 02 a0 0e 92 7b 54 43 48 45 79 01 68 00 00 a4 01 ....{TCHEy.h.... 3310: a0 07 50 41 52 44 a4 01 a0 4c 05 93 68 0a 02 a0 ..PARD...L..h... 3320: 33 43 50 46 4d a0 0e 93 43 50 46 4d 01 70 0a 06 3CPFM...CPFM.p.. 3330: 50 46 49 54 a0 0f 93 43 50 46 4d 0a 06 70 0a 08 PFIT...CPFM..p.. 3340: 50 46 49 54 a0 0e 93 43 50 46 4d 0a 08 70 01 50 PFIT...CPFM..p.P 3350: 46 49 54 a1 0c 7f 50 46 49 54 0a 07 50 46 49 54 FIT...PFIT..PFIT 3360: 7d 50 46 49 54 0c 00 00 00 80 50 46 49 54 70 0a }PFIT.....PFITp. 3370: 04 41 53 4c 43 a1 42 04 a0 28 93 68 01 70 78 77 .ASLC.B..(.h.pxw 3380: 69 0a ff 00 0a 64 00 00 42 43 4c 50 7d 42 43 4c i....d..BCLP}BCL 3390: 50 0c 00 00 00 80 42 43 4c 50 70 0a 02 41 53 4c P.....BCLPp..ASL 33a0: 43 a1 16 a0 10 93 68 00 70 69 41 4c 53 49 70 01 C.....h.piALSIp. 33b0: 41 53 4c 43 a1 03 a4 01 70 00 4c 42 50 43 a4 00 ASLC....p.LBPC.. 33c0: 10 41 36 5c 00 5b 80 49 4f 5f 54 01 0b 00 08 0a .A6\.[.IO_T..... 33d0: 10 5b 81 0e 49 4f 5f 54 01 00 40 04 54 52 50 30 .[..IO_T..@.TRP0 33e0: 08 5b 80 50 4d 49 4f 01 0b 00 10 0a 80 5b 81 28 .[.PMIO......[.( 33f0: 50 4d 49 4f 01 00 40 15 00 08 00 02 41 43 50 57 PMIO..@.....ACPW 3400: 01 00 45 0b 00 01 47 50 45 43 01 00 4e 10 00 09 ..E...GPEC..N... 3410: 53 43 49 53 01 00 06 5b 80 47 50 49 4f 01 0b 80 SCIS...[.GPIO... 3420: 11 0a 3c 5b 81 40 0c 47 50 49 4f 01 47 55 30 30 ..<[.@.GPIO.GU00 3430: 08 47 55 30 31 08 47 55 30 32 08 47 55 30 33 08 .GU01.GU02.GU03. 3440: 47 49 4f 30 08 47 49 4f 31 08 47 49 4f 32 08 47 GIO0.GIO1.GIO2.G 3450: 49 4f 33 08 00 20 47 4c 30 30 08 47 4c 30 31 08 IO3.. GL00.GL01. 3460: 47 4c 30 32 08 00 03 47 50 32 37 01 47 50 32 38 GL02...GP27.GP28 3470: 01 00 03 00 40 04 47 42 30 30 08 47 42 30 31 08 ....@.GB00.GB01. 3480: 47 42 30 32 08 47 42 30 33 08 00 40 08 47 49 56 GB02.GB03..@.GIV 3490: 30 08 00 03 4c 50 4f 4c 01 00 04 47 49 56 32 08 0...LPOL...GIV2. 34a0: 47 49 56 33 08 47 55 30 34 08 47 55 30 35 08 47 GIV3.GU04.GU05.G 34b0: 55 30 36 08 47 55 30 37 08 47 49 4f 34 08 47 49 U06.GU07.GIO4.GI 34c0: 4f 35 08 47 49 4f 36 08 47 49 4f 37 08 00 05 47 O5.GIO6.GIO7...G 34d0: 50 33 37 01 00 02 47 4c 30 35 08 47 4c 30 36 08 P37...GL05.GL06. 34e0: 47 4c 30 37 08 5b 80 52 43 52 42 00 0c 00 c0 d1 GL07.[.RCRB..... 34f0: fe 0b 00 40 5b 81 48 05 52 43 52 42 13 00 80 00 ...@[.H.RCRB.... 3500: 08 00 80 00 10 00 80 02 02 48 50 41 53 02 00 05 .........HPAS... 3510: 48 50 41 45 01 00 48 09 00 01 50 41 54 44 01 53 HPAE..H...PATD.S 3520: 41 54 44 01 53 4d 42 44 01 48 44 41 44 01 00 0b ATD.SMBD.HDAD... 3530: 52 50 31 44 01 52 50 32 44 01 52 50 33 44 01 52 RP1D.RP2D.RP3D.R 3540: 50 34 44 01 52 50 35 44 01 52 50 36 44 01 08 5f P4D.RP5D.RP6D.._ 3550: 53 30 5f 12 05 03 00 00 00 08 5f 53 33 5f 12 07 S0_......._S3_.. 3560: 03 0a 05 0a 05 00 08 5f 53 34 5f 12 07 03 0a 06 ......._S4_..... 3570: 0a 06 00 08 5f 53 35 5f 12 07 03 0a 07 0a 07 00 ...._S5_........ 3580: 14 45 04 47 45 54 50 09 a0 0e 93 7b 68 0a 09 00 .E.GETP....{h... 3590: 00 a4 0c ff ff ff ff a0 0d 93 7b 68 0a 09 00 0a ..........{h.... 35a0: 08 a4 0b 84 03 7a 7b 68 0b 00 03 00 0a 08 60 7a .....z{h......`z 35b0: 7b 68 0b 00 30 00 0a 0c 61 a4 77 0a 1e 74 0a 09 {h..0...a.w..t.. 35c0: 72 60 61 00 00 00 14 30 47 44 4d 41 0d a0 23 68 r`a....0GDMA..#h 35d0: a0 07 90 69 6c a4 0a 14 a0 0e 90 6a 6c a4 77 74 ...il......jl.wt 35e0: 0a 04 6b 00 0a 0f 00 a4 77 74 0a 04 6b 00 0a 1e ..k.....wt..k... 35f0: 00 a4 0c ff ff ff ff 14 1f 47 45 54 54 09 a4 77 .........GETT..w 3600: 0a 1e 74 0a 09 72 7b 7a 68 0a 02 00 0a 03 00 7b ..t..r{zh......{ 3610: 68 0a 03 00 00 00 00 14 44 06 47 45 54 46 0b 08 h.......D.GETF.. 3620: 54 4d 50 46 00 a0 0c 68 7d 54 4d 50 46 01 54 4d TMPF...h}TMPF.TM 3630: 50 46 a0 11 7b 6a 0a 02 00 7d 54 4d 50 46 0a 02 PF..{j...}TMPF.. 3640: 54 4d 50 46 a0 0d 69 7d 54 4d 50 46 0a 04 54 4d TMPF..i}TMPF..TM 3650: 50 46 a0 11 7b 6a 0a 20 00 7d 54 4d 50 46 0a 08 PF..{j. .}TMPF.. 3660: 54 4d 50 46 a0 12 7b 6a 0b 00 40 00 7d 54 4d 50 TMPF..{j..@.}TMP 3670: 46 0a 10 54 4d 50 46 a4 54 4d 50 46 14 3d 53 45 F..TMPF.TMPF.=SE 3680: 54 50 0b a0 08 94 68 0a f0 a4 0a 08 a1 2d a0 27 TP....h......-.' 3690: 7b 69 0a 02 00 a0 10 90 92 94 68 0a 78 7b 6a 0a {i........h.x{j. 36a0: 02 00 a4 0b 01 23 a0 0f 90 92 94 68 0a b4 7b 6a .....#.....h..{j 36b0: 01 00 a4 0b 01 21 a4 0b 01 10 14 37 53 44 4d 41 .....!.....7SDMA 36c0: 09 a0 08 92 94 68 0a 14 a4 01 a0 09 92 94 68 0a .....h........h. 36d0: 1e a4 0a 02 a0 08 92 94 68 0a 2d a4 01 a0 09 92 ........h.-..... 36e0: 94 68 0a 3c a4 0a 02 a0 08 92 94 68 0a 5a a4 01 .h.<.......h.Z.. 36f0: a4 00 14 2f 53 45 54 54 0b a0 25 7b 69 0a 02 00 .../SETT..%{i... 3700: a0 0f 90 92 94 68 0a 78 7b 6a 0a 02 00 a4 0a 0b .....h.x{j...... 3710: a0 0e 90 92 94 68 0a b4 7b 6a 01 00 a4 0a 09 a4 .....h..{j...... 3720: 0a 04 5b 82 4b 04 48 44 45 46 08 5f 41 44 52 0c ..[.K.HDEF._ADR. 3730: 00 00 1b 00 5b 80 48 44 41 52 02 0a 4c 0a 10 5b ....[.HDAR..L..[ 3740: 81 22 48 44 41 52 02 44 43 4b 41 01 00 07 44 43 ."HDAR.DCKA...DC 3750: 4b 4d 01 00 06 44 43 4b 53 01 00 30 00 0f 50 4d KM...DCKS..0..PM 3760: 45 53 01 08 5f 50 52 57 12 06 02 0a 0d 0a 03 5b ES.._PRW.......[ 3770: 82 41 10 52 50 30 31 08 5f 41 44 52 0c 00 00 1c .A.RP01._ADR.... 3780: 00 5b 80 50 58 43 53 02 0a 40 0a c0 5b 81 45 04 .[.PXCS..@..[.E. 3790: 50 58 43 53 40 00 40 09 00 0d 4c 41 53 58 01 00 PXCS@.@...LASX.. 37a0: 32 41 42 50 58 01 00 02 50 44 43 58 01 00 02 50 2ABPX...PDCX...P 37b0: 44 53 58 01 00 01 4c 53 43 58 01 00 27 00 10 50 DSX...LSCX..'..P 37c0: 53 50 58 01 00 4f 3c 00 1e 48 50 53 58 01 50 4d SPX..O<..HPSX.PM 37d0: 53 58 01 5b 82 0b 50 58 53 58 08 5f 41 44 52 00 SX.[..PXSX._ADR. 37e0: 14 41 09 5f 50 52 54 00 a0 33 47 50 49 43 a4 12 .A._PRT..3GPIC.. 37f0: 2c 04 12 09 04 0b ff ff 00 00 0a 10 12 09 04 0b ,............... 3800: ff ff 01 00 0a 11 12 0a 04 0b ff ff 0a 02 00 0a ................ 3810: 12 12 0a 04 0b ff ff 0a 03 00 0a 13 a1 45 05 a4 .............E.. 3820: 12 41 05 04 12 12 04 0b ff ff 00 5e 5e 2e 4c 50 .A.........^^.LP 3830: 43 42 4c 4e 4b 41 00 12 12 04 0b ff ff 01 5e 5e CBLNKA........^^ 3840: 2e 4c 50 43 42 4c 4e 4b 42 00 12 13 04 0b ff ff .LPCBLNKB....... 3850: 0a 02 5e 5e 2e 4c 50 43 42 4c 4e 4b 43 00 12 13 ..^^.LPCBLNKC... 3860: 04 0b ff ff 0a 03 5e 5e 2e 4c 50 43 42 4c 4e 4b ......^^.LPCBLNK 3870: 44 00 5b 82 41 10 52 50 30 32 08 5f 41 44 52 0c D.[.A.RP02._ADR. 3880: 01 00 1c 00 5b 80 50 58 43 53 02 0a 40 0a c0 5b ....[.PXCS..@..[ 3890: 81 45 04 50 58 43 53 40 00 40 09 00 0d 4c 41 53 .E.PXCS@.@...LAS 38a0: 58 01 00 32 41 42 50 58 01 00 02 50 44 43 58 01 X..2ABPX...PDCX. 38b0: 00 02 50 44 53 58 01 00 01 4c 53 43 58 01 00 27 ..PDSX...LSCX..' 38c0: 00 10 50 53 50 58 01 00 4f 3c 00 1e 48 50 53 58 ..PSPX..O<..HPSX 38d0: 01 50 4d 53 58 01 5b 82 0b 50 58 53 58 08 5f 41 .PMSX.[..PXSX._A 38e0: 44 52 00 14 41 09 5f 50 52 54 00 a0 33 47 50 49 DR..A._PRT..3GPI 38f0: 43 a4 12 2c 04 12 09 04 0b ff ff 00 00 0a 11 12 C..,............ 3900: 09 04 0b ff ff 01 00 0a 12 12 0a 04 0b ff ff 0a ................ 3910: 02 00 0a 13 12 0a 04 0b ff ff 0a 03 00 0a 10 a1 ................ 3920: 45 05 a4 12 41 05 04 12 12 04 0b ff ff 00 5e 5e E...A.........^^ 3930: 2e 4c 50 43 42 4c 4e 4b 42 00 12 12 04 0b ff ff .LPCBLNKB....... 3940: 01 5e 5e 2e 4c 50 43 42 4c 4e 4b 43 00 12 13 04 .^^.LPCBLNKC.... 3950: 0b ff ff 0a 02 5e 5e 2e 4c 50 43 42 4c 4e 4b 44 .....^^.LPCBLNKD 3960: 00 12 13 04 0b ff ff 0a 03 5e 5e 2e 4c 50 43 42 .........^^.LPCB 3970: 4c 4e 4b 41 00 5b 82 4d 11 52 50 30 33 08 5f 41 LNKA.[.M.RP03._A 3980: 44 52 0c 02 00 1c 00 5b 80 50 58 43 53 02 0a 40 DR.....[.PXCS..@ 3990: 0a c0 5b 81 45 04 50 58 43 53 40 00 40 09 00 0d ..[.E.PXCS@.@... 39a0: 4c 41 53 58 01 00 32 41 42 50 58 01 00 02 50 44 LASX..2ABPX...PD 39b0: 43 58 01 00 02 50 44 53 58 01 00 01 4c 53 43 58 CX...PDSX...LSCX 39c0: 01 00 27 00 10 50 53 50 58 01 00 4f 3c 00 1e 48 ..'..PSPX..O<..H 39d0: 50 53 58 01 50 4d 53 58 01 5b 82 0b 50 58 53 58 PSX.PMSX.[..PXSX 39e0: 08 5f 41 44 52 00 08 2e 50 58 53 58 5f 52 4d 56 ._ADR...PXSX_RMV 39f0: 01 08 2e 50 58 53 58 5f 50 52 57 12 06 02 0a 09 ...PXSX_PRW..... 3a00: 0a 03 14 41 09 5f 50 52 54 00 a0 33 47 50 49 43 ...A._PRT..3GPIC 3a10: a4 12 2c 04 12 09 04 0b ff ff 00 00 0a 12 12 09 ..,............. 3a20: 04 0b ff ff 01 00 0a 13 12 0a 04 0b ff ff 0a 02 ................ 3a30: 00 0a 10 12 0a 04 0b ff ff 0a 03 00 0a 11 a1 45 ...............E 3a40: 05 a4 12 41 05 04 12 12 04 0b ff ff 00 5e 5e 2e ...A.........^^. 3a50: 4c 50 43 42 4c 4e 4b 43 00 12 12 04 0b ff ff 01 LPCBLNKC........ 3a60: 5e 5e 2e 4c 50 43 42 4c 4e 4b 44 00 12 13 04 0b ^^.LPCBLNKD..... 3a70: ff ff 0a 02 5e 5e 2e 4c 50 43 42 4c 4e 4b 41 00 ....^^.LPCBLNKA. 3a80: 12 13 04 0b ff ff 0a 03 5e 5e 2e 4c 50 43 42 4c ........^^.LPCBL 3a90: 4e 4b 42 00 5b 82 4f 11 52 50 30 34 08 5f 41 44 NKB.[.O.RP04._AD 3aa0: 52 0c 03 00 1c 00 5b 80 50 58 43 53 02 0a 40 0a R.....[.PXCS..@. 3ab0: c0 5b 81 45 04 50 58 43 53 40 00 40 09 00 0d 4c .[.E.PXCS@.@...L 3ac0: 41 53 58 01 00 32 41 42 50 58 01 00 02 50 44 43 ASX..2ABPX...PDC 3ad0: 58 01 00 02 50 44 53 58 01 00 01 4c 53 43 58 01 X...PDSX...LSCX. 3ae0: 00 27 00 10 50 53 50 58 01 00 4f 3c 00 1e 48 50 .'..PSPX..O<..HP 3af0: 53 58 01 50 4d 53 58 01 5b 82 29 50 58 53 58 08 SX.PMSX.[.)PXSX. 3b00: 5f 41 44 52 00 14 1d 5f 50 52 57 00 a0 0d 57 4b _ADR..._PRW...WK 3b10: 4c 4e a4 12 06 02 0a 09 0a 03 a1 08 a4 12 05 02 LN.............. 3b20: 0a 09 00 14 41 09 5f 50 52 54 00 a0 33 47 50 49 ....A._PRT..3GPI 3b30: 43 a4 12 2c 04 12 09 04 0b ff ff 00 00 0a 13 12 C..,............ 3b40: 09 04 0b ff ff 01 00 0a 10 12 0a 04 0b ff ff 0a ................ 3b50: 02 00 0a 11 12 0a 04 0b ff ff 0a 03 00 0a 12 a1 ................ 3b60: 45 05 a4 12 41 05 04 12 12 04 0b ff ff 00 5e 5e E...A.........^^ 3b70: 2e 4c 50 43 42 4c 4e 4b 44 00 12 12 04 0b ff ff .LPCBLNKD....... 3b80: 01 5e 5e 2e 4c 50 43 42 4c 4e 4b 41 00 12 13 04 .^^.LPCBLNKA.... 3b90: 0b ff ff 0a 02 5e 5e 2e 4c 50 43 42 4c 4e 4b 42 .....^^.LPCBLNKB 3ba0: 00 12 13 04 0b ff ff 0a 03 5e 5e 2e 4c 50 43 42 .........^^.LPCB 3bb0: 4c 4e 4b 43 00 5b 82 41 10 52 50 30 35 08 5f 41 LNKC.[.A.RP05._A 3bc0: 44 52 0c 04 00 1c 00 5b 80 50 58 43 53 02 0a 40 DR.....[.PXCS..@ 3bd0: 0a c0 5b 81 45 04 50 58 43 53 40 00 40 09 00 0d ..[.E.PXCS@.@... 3be0: 4c 41 53 58 01 00 32 41 42 50 58 01 00 02 50 44 LASX..2ABPX...PD 3bf0: 43 58 01 00 02 50 44 53 58 01 00 01 4c 53 43 58 CX...PDSX...LSCX 3c00: 01 00 27 00 10 50 53 50 58 01 00 4f 3c 00 1e 48 ..'..PSPX..O<..H 3c10: 50 53 58 01 50 4d 53 58 01 5b 82 0b 50 58 53 58 PSX.PMSX.[..PXSX 3c20: 08 5f 41 44 52 00 14 41 09 5f 50 52 54 00 a0 33 ._ADR..A._PRT..3 3c30: 47 50 49 43 a4 12 2c 04 12 09 04 0b ff ff 00 00 GPIC..,......... 3c40: 0a 10 12 09 04 0b ff ff 01 00 0a 11 12 0a 04 0b ................ 3c50: ff ff 0a 02 00 0a 12 12 0a 04 0b ff ff 0a 03 00 ................ 3c60: 0a 13 a1 45 05 a4 12 41 05 04 12 12 04 0b ff ff ...E...A........ 3c70: 00 5e 5e 2e 4c 50 43 42 4c 4e 4b 41 00 12 12 04 .^^.LPCBLNKA.... 3c80: 0b ff ff 01 5e 5e 2e 4c 50 43 42 4c 4e 4b 42 00 ....^^.LPCBLNKB. 3c90: 12 13 04 0b ff ff 0a 02 5e 5e 2e 4c 50 43 42 4c ........^^.LPCBL 3ca0: 4e 4b 43 00 12 13 04 0b ff ff 0a 03 5e 5e 2e 4c NKC.........^^.L 3cb0: 50 43 42 4c 4e 4b 44 00 5b 82 41 10 52 50 30 36 PCBLNKD.[.A.RP06 3cc0: 08 5f 41 44 52 0c 05 00 1c 00 5b 80 50 58 43 53 ._ADR.....[.PXCS 3cd0: 02 0a 40 0a c0 5b 81 45 04 50 58 43 53 40 00 40 ..@..[.E.PXCS@.@ 3ce0: 09 00 0d 4c 41 53 58 01 00 32 41 42 50 58 01 00 ...LASX..2ABPX.. 3cf0: 02 50 44 43 58 01 00 02 50 44 53 58 01 00 01 4c .PDCX...PDSX...L 3d00: 53 43 58 01 00 27 00 10 50 53 50 58 01 00 4f 3c SCX..'..PSPX..O< 3d10: 00 1e 48 50 53 58 01 50 4d 53 58 01 5b 82 0b 50 ..HPSX.PMSX.[..P 3d20: 58 53 58 08 5f 41 44 52 00 14 41 09 5f 50 52 54 XSX._ADR..A._PRT 3d30: 00 a0 33 47 50 49 43 a4 12 2c 04 12 09 04 0b ff ..3GPIC..,...... 3d40: ff 00 00 0a 11 12 09 04 0b ff ff 01 00 0a 12 12 ................ 3d50: 0a 04 0b ff ff 0a 02 00 0a 13 12 0a 04 0b ff ff ................ 3d60: 0a 03 00 0a 10 a1 45 05 a4 12 41 05 04 12 12 04 ......E...A..... 3d70: 0b ff ff 00 5e 5e 2e 4c 50 43 42 4c 4e 4b 42 00 ....^^.LPCBLNKB. 3d80: 12 12 04 0b ff ff 01 5e 5e 2e 4c 50 43 42 4c 4e .......^^.LPCBLN 3d90: 4b 43 00 12 13 04 0b ff ff 0a 02 5e 5e 2e 4c 50 KC.........^^.LP 3da0: 43 42 4c 4e 4b 44 00 12 13 04 0b ff ff 0a 03 5e CBLNKD.........^ 3db0: 5e 2e 4c 50 43 42 4c 4e 4b 41 00 5b 82 4d 06 55 ^.LPCBLNKA.[.M.U 3dc0: 53 42 31 08 5f 41 44 52 0c 00 00 1d 00 5b 80 55 SB1._ADR.....[.U 3dd0: 31 43 53 02 0a c4 0a 04 5b 81 0b 55 31 43 53 03 1CS.....[..U1CS. 3de0: 55 31 45 4e 02 08 5f 50 52 57 12 06 02 0a 03 0a U1EN.._PRW...... 3df0: 03 14 24 5f 50 53 57 01 a0 15 68 70 01 41 43 50 ..$_PSW...hp.ACP 3e00: 57 a0 0c 41 43 50 57 70 0a 03 55 31 45 4e a1 07 W..ACPWp..U1EN.. 3e10: 70 00 55 31 45 4e 14 09 5f 53 33 44 00 a4 0a 02 p.U1EN.._S3D.... 3e20: 14 09 5f 53 34 44 00 a4 0a 02 5b 82 4c 06 55 53 .._S4D....[.L.US 3e30: 42 32 08 5f 41 44 52 0c 01 00 1d 00 5b 80 55 32 B2._ADR.....[.U2 3e40: 43 53 02 0a c4 0a 04 5b 81 0b 55 32 43 53 03 55 CS.....[..U2CS.U 3e50: 32 45 4e 02 08 5f 50 52 57 12 06 02 0a 04 0a 03 2EN.._PRW....... 3e60: 14 23 5f 50 53 57 01 a0 14 68 70 01 41 43 50 57 .#_PSW...hp.ACPW 3e70: a0 0b 41 43 50 57 70 01 55 32 45 4e a1 07 70 00 ..ACPWp.U2EN..p. 3e80: 55 32 45 4e 14 09 5f 53 33 44 00 a4 0a 02 14 09 U2EN.._S3D...... 3e90: 5f 53 34 44 00 a4 0a 02 5b 82 4d 06 55 53 42 33 _S4D....[.M.USB3 3ea0: 08 5f 41 44 52 0c 02 00 1d 00 5b 80 55 32 43 53 ._ADR.....[.U2CS 3eb0: 02 0a c4 0a 04 5b 81 0b 55 32 43 53 03 55 33 45 .....[..U2CS.U3E 3ec0: 4e 02 08 5f 50 52 57 12 06 02 0a 0c 0a 03 14 24 N.._PRW........$ 3ed0: 5f 50 53 57 01 a0 15 68 70 01 41 43 50 57 a0 0c _PSW...hp.ACPW.. 3ee0: 41 43 50 57 70 0a 03 55 33 45 4e a1 07 70 00 55 ACPWp..U3EN..p.U 3ef0: 33 45 4e 14 09 5f 53 33 44 00 a4 0a 02 14 09 5f 3EN.._S3D......_ 3f00: 53 34 44 00 a4 0a 02 5b 82 4d 06 55 53 42 34 08 S4D....[.M.USB4. 3f10: 5f 41 44 52 0c 00 00 1a 00 5b 80 55 34 43 53 02 _ADR.....[.U4CS. 3f20: 0a c4 0a 04 5b 81 0b 55 34 43 53 03 55 34 45 4e ....[..U4CS.U4EN 3f30: 02 08 5f 50 52 57 12 06 02 0a 0e 0a 03 14 24 5f .._PRW........$_ 3f40: 50 53 57 01 a0 15 68 70 01 41 43 50 57 a0 0c 41 PSW...hp.ACPW..A 3f50: 43 50 57 70 0a 03 55 34 45 4e a1 07 70 00 55 34 CPWp..U4EN..p.U4 3f60: 45 4e 14 09 5f 53 33 44 00 a4 0a 02 14 09 5f 53 EN.._S3D......_S 3f70: 34 44 00 a4 0a 02 5b 82 41 06 55 53 42 35 08 5f 4D....[.A.USB5._ 3f80: 41 44 52 0c 01 00 1a 00 5b 80 55 35 43 53 02 0a ADR.....[.U5CS.. 3f90: c4 0a 04 5b 81 0b 55 35 43 53 03 55 35 45 4e 02 ...[..U5CS.U5EN. 3fa0: 14 24 5f 50 53 57 01 a0 15 68 70 01 41 43 50 57 .$_PSW...hp.ACPW 3fb0: a0 0c 41 43 50 57 70 0a 03 55 35 45 4e a1 07 70 ..ACPWp..U5EN..p 3fc0: 00 55 35 45 4e 14 09 5f 53 33 44 00 a4 0a 02 14 .U5EN.._S3D..... 3fd0: 09 5f 53 34 44 00 a4 0a 02 5b 82 4b 0a 45 48 43 ._S4D....[.K.EHC 3fe0: 31 08 5f 41 44 52 0c 07 00 1d 00 5b 80 55 37 43 1._ADR.....[.U7C 3ff0: 53 02 0a 54 0a 04 5b 81 0d 55 37 43 53 03 00 0f S..T..[..U7CS... 4000: 50 4d 45 53 01 5b 82 4f 05 48 55 42 37 08 5f 41 PMES.[.O.HUB7._A 4010: 44 52 00 5b 82 0b 50 52 54 31 08 5f 41 44 52 01 DR.[..PRT1._ADR. 4020: 5b 82 0c 50 52 54 32 08 5f 41 44 52 0a 02 5b 82 [..PRT2._ADR..[. 4030: 0c 50 52 54 33 08 5f 41 44 52 0a 03 5b 82 0c 50 .PRT3._ADR..[..P 4040: 52 54 34 08 5f 41 44 52 0a 04 5b 82 0c 50 52 54 RT4._ADR..[..PRT 4050: 35 08 5f 41 44 52 0a 05 5b 82 0c 50 52 54 36 08 5._ADR..[..PRT6. 4060: 5f 41 44 52 0a 06 08 5f 50 52 57 12 06 02 0a 0d _ADR..._PRW..... 4070: 0a 03 14 09 5f 53 33 44 00 a4 0a 02 14 09 5f 53 ...._S3D......_S 4080: 34 44 00 a4 0a 02 5b 82 4f 08 45 48 43 32 08 5f 4D....[.O.EHC2._ 4090: 41 44 52 0c 07 00 1a 00 5b 80 55 46 43 53 02 0a ADR.....[.UFCS.. 40a0: 54 0a 04 5b 81 0d 55 46 43 53 03 00 0f 50 4d 45 T..[..UFCS...PME 40b0: 53 01 5b 82 43 04 48 55 42 37 08 5f 41 44 52 00 S.[.C.HUB7._ADR. 40c0: 5b 82 0b 50 52 54 31 08 5f 41 44 52 01 5b 82 0c [..PRT1._ADR.[.. 40d0: 50 52 54 32 08 5f 41 44 52 0a 02 5b 82 0c 50 52 PRT2._ADR..[..PR 40e0: 54 33 08 5f 41 44 52 0a 03 5b 82 0c 50 52 54 34 T3._ADR..[..PRT4 40f0: 08 5f 41 44 52 0a 04 08 5f 50 52 57 12 06 02 0a ._ADR..._PRW.... 4100: 0d 0a 03 14 09 5f 53 33 44 00 a4 0a 02 14 09 5f ....._S3D......_ 4110: 53 34 44 00 a4 0a 02 5b 82 4a 06 50 43 49 42 08 S4D....[.J.PCIB. 4120: 5f 41 44 52 0c 00 00 1e 00 14 49 05 5f 50 52 54 _ADR......I._PRT 4130: 00 a0 21 47 50 49 43 a4 12 1a 02 12 0b 04 0c ff ..!GPIC......... 4140: ff 06 00 00 00 0a 16 12 0b 04 0c ff ff 06 00 01 ................ 4150: 00 0a 17 a1 2f a4 12 2c 02 12 14 04 0c ff ff 06 ..../..,........ 4160: 00 00 5e 5e 2e 4c 50 43 42 4c 4e 4b 47 00 12 14 ..^^.LPCBLNKG... 4170: 04 0c ff ff 06 00 01 5e 5e 2e 4c 50 43 42 4c 4e .......^^.LPCBLN 4180: 4b 48 00 5b 82 8d 2e 01 4c 50 43 42 08 5f 41 44 KH.[....LPCB._AD 4190: 52 0c 00 00 1f 00 5b 80 4c 50 43 30 02 0a 40 0a R.....[.LPC0..@. 41a0: c0 5b 81 4d 07 4c 50 43 30 00 00 40 10 50 41 52 .[.M.LPC0..@.PAR 41b0: 43 08 50 42 52 43 08 50 43 52 43 08 50 44 52 43 C.PBRC.PCRC.PDRC 41c0: 08 00 20 50 45 52 43 08 50 46 52 43 08 50 47 52 .. PERC.PFRC.PGR 41d0: 43 08 50 48 52 43 08 00 40 0a 43 4d 41 52 03 00 C.PHRC..@.CMAR.. 41e0: 01 43 4d 42 52 03 00 01 4c 50 54 52 02 00 06 43 .CMBR...LPTR...C 41f0: 4d 41 44 01 43 4d 42 44 01 4c 50 54 44 01 46 44 MAD.CMBD.LPTD.FD 4200: 44 44 01 00 2c 49 4f 52 32 10 00 02 4c 47 52 4d DD..,IOR2...LGRM 4210: 06 00 48 32 52 41 45 4e 01 00 0d 52 43 42 41 12 ..H2RAEN...RCBA. 4220: 5b 80 53 4d 49 30 01 0c 00 fe 00 00 0c 02 00 00 [.SMI0.......... 4230: 00 5b 81 0b 53 4d 49 30 00 53 4d 49 43 08 5b 80 .[..SMI0.SMIC.[. 4240: 53 4d 49 31 00 0c bd 2e 6e bf 0c 90 00 00 00 5b SMI1....n......[ 4250: 81 16 53 4d 49 31 00 42 43 4d 44 08 44 49 44 5f ..SMI1.BCMD.DID_ 4260: 20 49 4e 46 4f 40 40 5b 81 15 53 4d 49 31 00 01 INFO@@[..SMI1.. 4270: 01 00 00 28 49 4e 46 5f 08 49 4e 46 31 20 5b 01 ...(INF_.INF1 [. 4280: 50 53 4d 58 00 14 27 50 48 53 53 01 5b 23 50 53 PSMX..'PHSS.[#PS 4290: 4d 58 ff ff 70 0a 80 42 43 4d 44 70 68 44 49 44 MX..p..BCMDphDID 42a0: 5f 70 00 53 4d 49 43 5b 27 50 53 4d 58 5b 82 41 _p.SMIC['PSMX[.A 42b0: 0a 4c 4e 4b 41 08 5f 48 49 44 0c 41 d0 0c 0f 08 .LNKA._HID.A.... 42c0: 5f 55 49 44 01 14 0d 5f 44 49 53 08 70 0a 80 50 _UID..._DIS.p..P 42d0: 41 52 43 08 5f 50 52 53 11 09 0a 06 23 fa d4 18 ARC._PRS....#... 42e0: 79 00 14 38 5f 43 52 53 08 08 52 54 4c 41 11 09 y..8_CRS..RTLA.. 42f0: 0a 06 23 00 00 18 79 00 8b 52 54 4c 41 01 49 52 ..#...y..RTLA.IR 4300: 51 30 70 00 49 52 51 30 79 01 7b 50 41 52 43 0a Q0p.IRQ0y.{PARC. 4310: 0f 00 49 52 51 30 a4 52 54 4c 41 14 1b 5f 53 52 ..IRQ0.RTLA.._SR 4320: 53 09 8b 68 01 49 52 51 30 82 49 52 51 30 60 76 S..h.IRQ0.IRQ0`v 4330: 60 70 60 50 41 52 43 14 18 5f 53 54 41 08 a0 0c `p`PARC.._STA... 4340: 7b 50 41 52 43 0a 80 00 a4 0a 09 a1 04 a4 0a 0b {PARC........... 4350: 5b 82 42 0a 4c 4e 4b 42 08 5f 48 49 44 0c 41 d0 [.B.LNKB._HID.A. 4360: 0c 0f 08 5f 55 49 44 0a 02 14 0d 5f 44 49 53 08 ..._UID...._DIS. 4370: 70 0a 80 50 42 52 43 08 5f 50 52 53 11 09 0a 06 p..PBRC._PRS.... 4380: 23 fa d8 18 79 00 14 38 5f 43 52 53 08 08 52 54 #...y..8_CRS..RT 4390: 4c 42 11 09 0a 06 23 00 00 18 79 00 8b 52 54 4c LB....#...y..RTL 43a0: 42 01 49 52 51 30 70 00 49 52 51 30 79 01 7b 50 B.IRQ0p.IRQ0y.{P 43b0: 42 52 43 0a 0f 00 49 52 51 30 a4 52 54 4c 42 14 BRC...IRQ0.RTLB. 43c0: 1b 5f 53 52 53 09 8b 68 01 49 52 51 30 82 49 52 ._SRS..h.IRQ0.IR 43d0: 51 30 60 76 60 70 60 50 42 52 43 14 18 5f 53 54 Q0`v`p`PBRC.._ST 43e0: 41 08 a0 0c 7b 50 42 52 43 0a 80 00 a4 0a 09 a1 A...{PBRC....... 43f0: 04 a4 0a 0b 5b 82 42 0a 4c 4e 4b 43 08 5f 48 49 ....[.B.LNKC._HI 4400: 44 0c 41 d0 0c 0f 08 5f 55 49 44 0a 03 14 0d 5f D.A...._UID...._ 4410: 44 49 53 08 70 0a 80 50 43 52 43 08 5f 50 52 53 DIS.p..PCRC._PRS 4420: 11 09 0a 06 23 fa d4 18 79 00 14 38 5f 43 52 53 ....#...y..8_CRS 4430: 08 08 52 54 4c 43 11 09 0a 06 23 00 00 18 79 00 ..RTLC....#...y. 4440: 8b 52 54 4c 43 01 49 52 51 30 70 00 49 52 51 30 .RTLC.IRQ0p.IRQ0 4450: 79 01 7b 50 43 52 43 0a 0f 00 49 52 51 30 a4 52 y.{PCRC...IRQ0.R 4460: 54 4c 43 14 1b 5f 53 52 53 09 8b 68 01 49 52 51 TLC.._SRS..h.IRQ 4470: 30 82 49 52 51 30 60 76 60 70 60 50 43 52 43 14 0.IRQ0`v`p`PCRC. 4480: 18 5f 53 54 41 08 a0 0c 7b 50 43 52 43 0a 80 00 ._STA...{PCRC... 4490: a4 0a 09 a1 04 a4 0a 0b 5b 82 42 0a 4c 4e 4b 44 ........[.B.LNKD 44a0: 08 5f 48 49 44 0c 41 d0 0c 0f 08 5f 55 49 44 0a ._HID.A...._UID. 44b0: 04 14 0d 5f 44 49 53 08 70 0a 80 50 44 52 43 08 ..._DIS.p..PDRC. 44c0: 5f 50 52 53 11 09 0a 06 23 fa d8 18 79 00 14 38 _PRS....#...y..8 44d0: 5f 43 52 53 08 08 52 54 4c 44 11 09 0a 06 23 00 _CRS..RTLD....#. 44e0: 00 18 79 00 8b 52 54 4c 44 01 49 52 51 30 70 00 ..y..RTLD.IRQ0p. 44f0: 49 52 51 30 79 01 7b 50 44 52 43 0a 0f 00 49 52 IRQ0y.{PDRC...IR 4500: 51 30 a4 52 54 4c 44 14 1b 5f 53 52 53 09 8b 68 Q0.RTLD.._SRS..h 4510: 01 49 52 51 30 82 49 52 51 30 60 76 60 70 60 50 .IRQ0.IRQ0`v`p`P 4520: 44 52 43 14 18 5f 53 54 41 08 a0 0c 7b 50 44 52 DRC.._STA...{PDR 4530: 43 0a 80 00 a4 0a 09 a1 04 a4 0a 0b 5b 82 42 0a C...........[.B. 4540: 4c 4e 4b 45 08 5f 48 49 44 0c 41 d0 0c 0f 08 5f LNKE._HID.A...._ 4550: 55 49 44 0a 05 14 0d 5f 44 49 53 08 70 0a 80 50 UID...._DIS.p..P 4560: 45 52 43 08 5f 50 52 53 11 09 0a 06 23 fa d4 18 ERC._PRS....#... 4570: 79 00 14 38 5f 43 52 53 08 08 52 54 4c 45 11 09 y..8_CRS..RTLE.. 4580: 0a 06 23 00 00 18 79 00 8b 52 54 4c 45 01 49 52 ..#...y..RTLE.IR 4590: 51 30 70 00 49 52 51 30 79 01 7b 50 45 52 43 0a Q0p.IRQ0y.{PERC. 45a0: 0f 00 49 52 51 30 a4 52 54 4c 45 14 1b 5f 53 52 ..IRQ0.RTLE.._SR 45b0: 53 09 8b 68 01 49 52 51 30 82 49 52 51 30 60 76 S..h.IRQ0.IRQ0`v 45c0: 60 70 60 50 45 52 43 14 18 5f 53 54 41 08 a0 0c `p`PERC.._STA... 45d0: 7b 50 45 52 43 0a 80 00 a4 0a 09 a1 04 a4 0a 0b {PERC........... 45e0: 5b 82 42 0a 4c 4e 4b 46 08 5f 48 49 44 0c 41 d0 [.B.LNKF._HID.A. 45f0: 0c 0f 08 5f 55 49 44 0a 06 14 0d 5f 44 49 53 08 ..._UID...._DIS. 4600: 70 0a 80 50 46 52 43 08 5f 50 52 53 11 09 0a 06 p..PFRC._PRS.... 4610: 23 fa d8 18 79 00 14 38 5f 43 52 53 08 08 52 54 #...y..8_CRS..RT 4620: 4c 46 11 09 0a 06 23 00 00 18 79 00 8b 52 54 4c LF....#...y..RTL 4630: 46 01 49 52 51 30 70 00 49 52 51 30 79 01 7b 50 F.IRQ0p.IRQ0y.{P 4640: 46 52 43 0a 0f 00 49 52 51 30 a4 52 54 4c 46 14 FRC...IRQ0.RTLF. 4650: 1b 5f 53 52 53 09 8b 68 01 49 52 51 30 82 49 52 ._SRS..h.IRQ0.IR 4660: 51 30 60 76 60 70 60 50 46 52 43 14 18 5f 53 54 Q0`v`p`PFRC.._ST 4670: 41 08 a0 0c 7b 50 46 52 43 0a 80 00 a4 0a 09 a1 A...{PFRC....... 4680: 04 a4 0a 0b 5b 82 42 0a 4c 4e 4b 47 08 5f 48 49 ....[.B.LNKG._HI 4690: 44 0c 41 d0 0c 0f 08 5f 55 49 44 0a 07 14 0d 5f D.A...._UID...._ 46a0: 44 49 53 08 70 0a 80 50 47 52 43 08 5f 50 52 53 DIS.p..PGRC._PRS 46b0: 11 09 0a 06 23 fa d4 18 79 00 14 38 5f 43 52 53 ....#...y..8_CRS 46c0: 08 08 52 54 4c 47 11 09 0a 06 23 00 00 18 79 00 ..RTLG....#...y. 46d0: 8b 52 54 4c 47 01 49 52 51 30 70 00 49 52 51 30 .RTLG.IRQ0p.IRQ0 46e0: 79 01 7b 50 47 52 43 0a 0f 00 49 52 51 30 a4 52 y.{PGRC...IRQ0.R 46f0: 54 4c 47 14 1b 5f 53 52 53 09 8b 68 01 49 52 51 TLG.._SRS..h.IRQ 4700: 30 82 49 52 51 30 60 76 60 70 60 50 47 52 43 14 0.IRQ0`v`p`PGRC. 4710: 18 5f 53 54 41 08 a0 0c 7b 50 47 52 43 0a 80 00 ._STA...{PGRC... 4720: a4 0a 09 a1 04 a4 0a 0b 5b 82 42 0a 4c 4e 4b 48 ........[.B.LNKH 4730: 08 5f 48 49 44 0c 41 d0 0c 0f 08 5f 55 49 44 0a ._HID.A...._UID. 4740: 08 14 0d 5f 44 49 53 08 70 0a 80 50 48 52 43 08 ..._DIS.p..PHRC. 4750: 5f 50 52 53 11 09 0a 06 23 fa d8 18 79 00 14 38 _PRS....#...y..8 4760: 5f 43 52 53 08 08 52 54 4c 48 11 09 0a 06 23 00 _CRS..RTLH....#. 4770: 00 18 79 00 8b 52 54 4c 48 01 49 52 51 30 70 00 ..y..RTLH.IRQ0p. 4780: 49 52 51 30 79 01 7b 50 48 52 43 0a 0f 00 49 52 IRQ0y.{PHRC...IR 4790: 51 30 a4 52 54 4c 48 14 1b 5f 53 52 53 09 8b 68 Q0.RTLH.._SRS..h 47a0: 01 49 52 51 30 82 49 52 51 30 60 76 60 70 60 50 .IRQ0.IRQ0`v`p`P 47b0: 48 52 43 14 18 5f 53 54 41 08 a0 0c 7b 50 48 52 HRC.._STA...{PHR 47c0: 43 0a 80 00 a4 0a 09 a1 04 a4 0a 0b 5b 82 3d 44 C...........[.=D 47d0: 4d 41 43 08 5f 48 49 44 0c 41 d0 02 00 08 5f 43 MAC._HID.A...._C 47e0: 52 53 11 28 0a 25 47 01 00 00 00 00 01 20 47 01 RS.(.%G...... G. 47f0: 81 00 81 00 01 11 47 01 93 00 93 00 01 0d 47 01 ......G.......G. 4800: c0 00 c0 00 01 20 2a 10 01 79 00 5b 82 26 46 57 ..... *..y.[.&FW 4810: 48 44 08 5f 48 49 44 0c 25 d4 08 00 08 5f 43 52 HD._HID.%...._CR 4820: 53 11 11 0a 0e 86 09 00 00 00 00 00 ff 00 00 00 S............... 4830: 01 79 00 5b 82 40 0b 48 50 45 54 08 5f 48 49 44 .y.[.@.HPET._HID 4840: 0c 41 d0 01 03 08 5f 43 49 44 0c 41 d0 0c 01 08 .A...._CID.A.... 4850: 42 55 46 30 11 11 0a 0e 86 09 00 00 00 00 d0 fe BUF0............ 4860: 00 04 00 00 79 00 14 27 5f 53 54 41 00 a0 13 92 ....y..'_STA.... 4870: 95 4f 53 59 53 0b d1 07 a0 08 48 50 41 45 a4 0a .OSYS.....HPAE.. 4880: 0f a1 0a a0 08 48 50 41 45 a4 0a 0b a4 00 14 46 .....HPAE......F 4890: 05 5f 43 52 53 08 a0 49 04 48 50 41 45 8a 42 55 ._CRS..I.HPAE.BU 48a0: 46 30 0a 04 48 50 54 30 a0 11 93 48 50 41 53 01 F0..HPT0...HPAS. 48b0: 70 0c 00 10 d0 fe 48 50 54 30 a0 12 93 48 50 41 p.....HPT0...HPA 48c0: 53 0a 02 70 0c 00 20 d0 fe 48 50 54 30 a0 12 93 S..p.. ..HPT0... 48d0: 48 50 41 53 0a 03 70 0c 00 30 d0 fe 48 50 54 30 HPAS..p..0..HPT0 48e0: a4 42 55 46 30 5b 82 45 0a 49 50 49 43 08 5f 48 .BUF0[.E.IPIC._H 48f0: 49 44 0b 41 d0 08 5f 43 52 53 11 41 09 0a 8d 47 ID.A.._CRS.A...G 4900: 01 20 00 20 00 01 02 47 01 24 00 24 00 01 02 47 . . ...G.$.$...G 4910: 01 28 00 28 00 01 02 47 01 2c 00 2c 00 01 02 47 .(.(...G.,.,...G 4920: 01 30 00 30 00 01 02 47 01 34 00 34 00 01 02 47 .0.0...G.4.4...G 4930: 01 38 00 38 00 01 02 47 01 3c 00 3c 00 01 02 47 .8.8...G.<.<...G 4940: 01 a0 00 a0 00 01 02 47 01 a4 00 a4 00 01 02 47 .......G.......G 4950: 01 a8 00 a8 00 01 02 47 01 ac 00 ac 00 01 02 47 .......G.......G 4960: 01 b0 00 b0 00 01 02 47 01 b4 00 b4 00 01 02 47 .......G.......G 4970: 01 b8 00 b8 00 01 02 47 01 bc 00 bc 00 01 02 47 .......G.......G 4980: 01 d0 04 d0 04 01 02 22 04 00 79 00 5b 82 25 4d ......."..y.[.%M 4990: 41 54 48 08 5f 48 49 44 0c 41 d0 0c 04 08 5f 43 ATH._HID.A...._C 49a0: 52 53 11 10 0a 0d 47 01 f0 00 f0 00 01 01 22 00 RS....G.......". 49b0: 20 79 00 5b 82 4b 09 4c 44 52 43 08 5f 48 49 44 y.[.K.LDRC._HID 49c0: 0c 41 d0 0c 02 08 5f 55 49 44 0a 02 08 5f 43 52 .A...._UID..._CR 49d0: 53 11 4e 07 0a 7a 47 01 2e 00 2e 00 01 02 47 01 S.N..zG.......G. 49e0: 4e 00 4e 00 01 02 47 01 61 00 61 00 01 01 47 01 N.N...G.a.a...G. 49f0: 63 00 63 00 01 01 47 01 65 00 65 00 01 01 47 01 c.c...G.e.e...G. 4a00: 67 00 67 00 01 01 47 01 80 00 80 00 01 01 47 01 g.g...G.......G. 4a10: 92 00 92 00 01 01 47 01 b2 00 b2 00 01 02 47 01 ......G.......G. 4a20: 80 06 80 06 01 20 47 01 00 08 00 08 01 10 47 01 ..... G.......G. 4a30: 00 10 00 10 01 80 47 01 80 11 80 11 01 40 47 01 ......G......@G. 4a40: 00 fe 00 fe 01 01 47 01 00 ff 00 ff 01 80 79 00 ......G.......y. 4a50: 5b 82 25 52 54 43 5f 08 5f 48 49 44 0c 41 d0 0b [.%RTC_._HID.A.. 4a60: 00 08 5f 43 52 53 11 10 0a 0d 47 01 70 00 70 00 .._CRS....G.p.p. 4a70: 01 08 22 00 01 79 00 5b 82 2d 54 49 4d 52 08 5f .."..y.[.-TIMR._ 4a80: 48 49 44 0c 41 d0 01 00 08 5f 43 52 53 11 18 0a HID.A...._CRS... 4a90: 15 47 01 40 00 40 00 01 04 47 01 50 00 50 00 10 .G.@.@...G.P.P.. 4aa0: 04 22 01 00 79 00 5b 82 32 41 43 41 44 08 5f 48 ."..y.[.2ACAD._H 4ab0: 49 44 0d 41 43 50 49 30 30 30 33 00 08 5f 50 43 ID.ACPI0003.._PC 4ac0: 4c 12 06 01 5f 53 42 5f 14 11 5f 50 53 52 00 70 L..._SB_.._PSR.p 4ad0: 01 41 43 50 57 a4 41 43 50 57 14 1a 45 43 4f 4b .ACPW.ACPW..ECOK 4ae0: 00 a0 0f 93 5e 2e 45 43 30 5f 5a 30 30 39 01 a4 ....^.EC0_Z009.. 4af0: 01 a1 03 a4 00 5b 82 4e 6f 45 43 30 5f 08 5f 48 .....[.NoEC0_._H 4b00: 49 44 0c 41 d0 0c 09 08 5f 47 50 45 0a 1c 08 5a ID.A...._GPE...Z 4b10: 30 30 39 00 08 5f 43 52 53 11 15 0a 12 47 01 62 009.._CRS....G.b 4b20: 00 62 00 01 01 47 01 66 00 66 00 01 01 79 00 14 .b...G.f.f...y.. 4b30: 3b 5f 52 45 47 02 a0 34 93 68 0a 03 70 69 5a 30 ;_REG..4.h..piZ0 4b40: 30 39 a0 28 5b 12 5f 4f 53 49 60 70 00 42 54 44 09.([._OSI`p.BTD 4b50: 53 a0 19 5f 4f 53 49 0d 57 69 6e 64 6f 77 73 20 S.._OSI.Windows 4b60: 32 30 30 36 00 70 01 42 54 44 53 5b 80 45 52 41 2006.p.BTDS[.ERA 4b70: 4d 03 00 0a ff 5b 81 4e 2e 45 52 41 4d 11 00 40 M....[.N.ERAM..@ 4b80: 30 53 4d 50 52 08 53 4d 53 54 08 53 4d 41 44 08 0SMPR.SMST.SMAD. 4b90: 53 4d 43 4d 08 53 4d 44 30 40 10 42 43 4e 54 08 SMCM.SMD0@.BCNT. 4ba0: 53 4d 41 41 18 00 40 04 43 48 47 4d 10 43 48 47 SMAA..@.CHGM.CHG 4bb0: 53 10 45 4e 49 44 08 45 4e 49 42 08 45 4e 44 44 S.ENID.ENIB.ENDD 4bc0: 08 43 48 47 56 08 43 48 47 41 10 42 41 4c 30 01 .CHGV.CHGA.BAL0. 4bd0: 42 41 4c 31 01 42 41 4c 32 01 42 41 4c 33 01 42 BAL1.BAL2.BAL3.B 4be0: 42 43 30 01 42 42 43 31 01 42 42 43 32 01 42 42 BC0.BBC1.BBC2.BB 4bf0: 43 33 01 00 08 50 48 44 44 01 49 46 44 44 01 49 C3...PHDD.IFDD.I 4c00: 4f 44 44 01 53 48 44 44 01 53 31 32 30 01 45 46 ODD.SHDD.S120.EF 4c10: 44 44 01 43 52 54 44 01 53 50 57 52 01 53 42 54 DD.CRTD.SPWR.SBT 4c20: 4e 01 56 49 44 4f 01 56 4f 4c 44 01 56 4f 4c 55 N.VIDO.VOLD.VOLU 4c30: 01 4d 55 54 45 01 43 4f 4e 54 01 42 52 47 54 01 .MUTE.CONT.BRGT. 4c40: 48 42 54 4e 01 53 34 53 54 01 53 4b 45 59 01 42 HBTN.S4ST.SKEY.B 4c50: 4b 45 59 01 54 4f 55 50 01 46 4e 42 4e 01 4c 49 KEY.TOUP.FNBN.LI 4c60: 44 46 01 44 49 47 4d 01 55 57 41 4b 01 00 08 44 DF.DIGM.UWAK...D 4c70: 4b 53 50 01 44 4b 49 4e 01 44 4b 49 44 01 44 4b KSP.DKIN.DKID.DK 4c80: 4f 4b 01 00 04 44 4b 50 57 01 00 07 42 54 4e 53 OK...DKPW...BTNS 4c90: 08 53 31 4c 44 01 53 33 4c 44 01 56 47 41 51 01 .S1LD.S3LD.VGAQ. 4ca0: 50 43 4d 51 01 50 43 4d 52 01 41 44 50 54 01 53 PCMQ.PCMR.ADPT.S 4cb0: 4c 4c 53 01 53 59 53 37 01 50 57 41 4b 01 4d 57 LLS.SYS7.PWAK.MW 4cc0: 41 4b 01 4c 57 41 4b 01 00 05 00 28 54 43 4e 4c AK.LWAK....(TCNL 4cd0: 08 54 4d 50 49 08 54 4d 53 44 08 46 41 53 4e 04 .TMPI.TMSD.FASN. 4ce0: 46 41 53 55 04 50 43 56 4c 04 00 02 53 57 54 4f FASU.PCVL...SWTO 4cf0: 01 48 57 54 4f 01 4d 4f 44 45 01 46 41 4e 53 02 .HWTO.MODE.FANS. 4d00: 49 4e 49 54 01 46 41 4e 31 01 46 41 4e 32 01 46 INIT.FAN1.FAN2.F 4d10: 41 4e 54 01 53 4b 4e 4d 01 43 54 4d 50 08 4c 49 ANT.SKNM.CTMP.LI 4d20: 44 45 01 50 4d 45 45 01 50 57 42 45 01 52 4e 47 DE.PMEE.PWBE.RNG 4d30: 45 01 42 54 57 45 01 44 43 4b 45 01 00 02 53 4b E.BTWE.DCKE...SK 4d40: 54 58 08 53 4b 54 42 08 53 4b 54 43 08 53 4b 54 TX.SKTB.SKTC.SKT 4d50: 41 08 00 08 48 41 50 4c 02 48 41 50 52 01 00 05 A...HAPL.HAPR... 4d60: 42 54 44 54 01 42 54 50 57 01 42 54 44 53 01 42 BTDT.BTPW.BTDS.B 4d70: 54 50 53 01 42 54 53 57 01 42 54 57 4b 01 42 54 TPS.BTSW.BTWK.BT 4d80: 4c 44 01 00 01 42 52 54 53 08 43 4e 54 53 08 57 LD...BRTS.CNTS.W 4d90: 4c 41 54 01 42 54 41 54 01 57 4c 45 58 01 42 54 LAT.BTAT.WLEX.BT 4da0: 45 58 01 4b 4c 53 57 01 57 4c 4f 4b 01 00 02 50 EX.KLSW.WLOK...P 4db0: 54 49 44 08 43 50 55 54 08 45 50 4b 54 08 47 48 TID.CPUT.EPKT.GH 4dc0: 49 44 08 00 04 42 4d 46 30 03 42 54 59 30 01 42 ID...BMF0.BTY0.B 4dd0: 53 54 30 08 42 52 43 30 10 42 53 4e 30 10 42 50 ST0.BRC0.BSN0.BP 4de0: 56 30 10 42 44 56 30 10 42 44 43 30 10 42 46 43 V0.BDV0.BDC0.BFC 4df0: 30 10 47 41 55 30 08 43 59 43 30 08 42 50 43 30 0.GAU0.CYC0.BPC0 4e00: 10 42 41 43 30 10 42 41 54 30 08 42 54 57 30 10 .BAC0.BAT0.BTW0. 4e10: 42 44 4e 30 08 00 40 04 00 04 42 4d 46 31 03 42 BDN0..@...BMF1.B 4e20: 54 59 31 01 42 53 54 31 08 42 52 43 31 10 42 53 TY1.BST1.BRC1.BS 4e30: 4e 31 10 42 50 56 31 10 42 44 56 31 10 42 44 43 N1.BPV1.BDV1.BDC 4e40: 31 10 42 46 43 31 10 47 41 55 31 08 43 59 43 31 1.BFC1.GAU1.CYC1 4e50: 08 42 50 43 31 10 42 41 43 31 10 42 41 54 31 08 .BPC1.BAC1.BAT1. 4e60: 42 54 57 31 10 14 37 5f 51 31 31 00 70 0a 87 50 BTW1..7_Q11.p..P 4e70: 38 30 48 a0 13 49 47 44 53 5e 5e 5e 2e 47 46 58 80H..IGDS^^^.GFX 4e80: 30 42 52 54 4e 0a 87 a1 15 86 5e 5e 5e 2f 03 50 0BRTN.....^^^/.P 4e90: 45 47 50 56 47 41 5f 4c 43 44 5f 0a 87 14 37 5f EGPVGA_LCD_...7_ 4ea0: 51 31 32 00 70 0a 86 50 38 30 48 a0 13 49 47 44 Q12.p..P80H..IGD 4eb0: 53 5e 5e 5e 2e 47 46 58 30 42 52 54 4e 0a 86 a1 S^^^.GFX0BRTN... 4ec0: 15 86 5e 5e 5e 2f 03 50 45 47 50 56 47 41 5f 4c ..^^^/.PEGPVGA_L 4ed0: 43 44 5f 0a 86 14 40 05 5f 51 31 43 00 70 0d 3d CD_...@._Q1C.p.= 4ee0: 3d 3d 3d 3d 51 55 45 52 59 5f 31 43 3d 3d 3d 3d ====QUERY_1C==== 4ef0: 3d 00 5b 31 a0 31 56 49 44 4f a0 12 49 47 44 53 =.[1.1VIDO..IGDS 4f00: 5e 5e 5e 2e 47 46 58 30 47 48 44 53 00 a1 12 5e ^^^.GFX0GHDS...^ 4f10: 5e 5e 2f 03 50 45 47 50 56 47 41 5f 44 53 53 57 ^^/.PEGPVGA_DSSW 4f20: 70 00 56 49 44 4f 14 21 5f 51 31 44 00 70 0d 3d p.VIDO.!_Q1D.p.= 4f30: 3d 3d 3d 3d 51 55 45 52 59 5f 31 44 3d 3d 3d 3d ====QUERY_1D==== 4f40: 3d 00 5b 31 50 43 4c 4b 14 21 5f 51 31 45 00 70 =.[1PCLK.!_Q1E.p 4f50: 0d 3d 3d 3d 3d 3d 51 55 45 52 59 5f 31 45 3d 3d .=====QUERY_1E== 4f60: 3d 3d 3d 00 5b 31 50 43 4c 4b 14 39 5f 51 32 35 ===.[1PCLK.9_Q25 4f70: 00 70 0d 3d 3d 3d 3d 3d 51 55 45 52 59 5f 32 35 .p.=====QUERY_25 4f80: 3d 3d 3d 3d 3d 00 5b 31 5b 22 0b e8 03 86 5e 5e =====.[1["....^^ 4f90: 42 41 54 31 0a 81 5b 22 0b e8 03 86 5e 5e 42 41 BAT1..["....^^BA 4fa0: 54 31 0a 80 14 2f 5f 51 33 34 00 70 0d 3d 3d 3d T1.../_Q34.p.=== 4fb0: 3d 3d 51 55 45 52 59 5f 33 34 3d 3d 3d 3d 3d 00 ==QUERY_34=====. 4fc0: 5b 31 a0 11 42 4b 45 59 50 48 53 53 0a 71 70 00 [1..BKEYPHSS.qp. 4fd0: 42 4b 45 59 14 32 5f 51 33 37 00 70 0d 3d 3d 3d BKEY.2_Q37.p.=== 4fe0: 3d 3d 51 55 45 52 59 5f 33 37 3d 3d 3d 3d 3d 00 ==QUERY_37=====. 4ff0: 5b 31 86 41 43 41 44 0a 80 5b 22 0b e8 03 86 5e [1.ACAD..["....^ 5000: 5e 42 41 54 31 0a 80 14 32 5f 51 33 38 00 70 0d ^BAT1...2_Q38.p. 5010: 3d 3d 3d 3d 3d 51 55 45 52 59 5f 33 38 3d 3d 3d =====QUERY_38=== 5020: 3d 3d 00 5b 31 86 41 43 41 44 0a 80 5b 22 0b e8 ==.[1.ACAD..[".. 5030: 03 86 5e 5e 42 41 54 31 0a 80 14 29 5f 51 32 44 ..^^BAT1...)_Q2D 5040: 00 70 0d 3d 3d 3d 3d 3d 51 55 45 52 59 5f 32 44 .p.=====QUERY_2D 5050: 3d 3d 3d 3d 3d 00 5b 31 70 00 44 54 53 4d 54 52 =====.[1p.DTSMTR 5060: 41 50 0a 46 14 29 5f 51 32 45 00 70 0d 3d 3d 3d AP.F.)_Q2E.p.=== 5070: 3d 3d 51 55 45 52 59 5f 32 45 3d 3d 3d 3d 3d 00 ==QUERY_2E=====. 5080: 5b 31 70 01 44 54 53 4d 54 52 41 50 0a 46 5b 80 [1p.DTSMTRAP.F[. 5090: 43 43 4c 4b 01 0b 10 10 0a 04 5b 81 20 43 43 4c CCLK......[. CCL 50a0: 4b 03 00 01 44 55 54 59 03 54 48 45 4e 01 00 03 K...DUTY.THEN... 50b0: 46 54 54 5f 01 00 08 54 53 54 53 01 5b 80 45 43 FTT_...TSTS.[.EC 50c0: 52 4d 03 00 0a ff 5b 81 44 04 45 43 52 4d 11 00 RM....[.D.ECRM.. 50d0: 40 4a 45 52 49 42 10 45 52 42 44 08 00 48 0a 53 @JERIB.ERBD..H.S 50e0: 44 54 4d 08 46 53 53 4e 04 46 41 4e 55 04 50 54 DTM.FSSN.FANU.PT 50f0: 56 4c 03 00 04 54 54 48 52 01 00 48 06 50 4a 49 VL...TTHR..H.PJI 5100: 44 08 00 08 00 48 1d 52 46 52 44 10 5b 01 46 41 D....H.RFRD.[.FA 5110: 4d 58 00 14 22 46 41 4e 47 01 5b 23 46 41 4d 58 MX.."FANG.[#FAMX 5120: ff ff 70 68 45 52 49 42 70 45 52 42 44 60 5b 27 ..phERIBpERBD`[' 5130: 46 41 4d 58 a4 60 14 22 46 41 4e 57 02 5b 23 46 FAMX.`."FANW.[#F 5140: 41 4d 58 ff ff 70 68 45 52 49 42 70 69 45 52 42 AMX..phERIBpiERB 5150: 44 5b 27 46 41 4d 58 a4 69 14 09 54 55 56 52 01 D['FAMX.i..TUVR. 5160: a4 0a 03 14 2e 54 48 52 4f 01 a0 09 93 68 00 a4 .....THRO....h.. 5170: 54 48 45 4e a1 1d a0 09 93 68 01 a4 44 55 54 59 THEN.....h..DUTY 5180: a1 11 a0 0a 93 68 0a 02 a4 54 54 48 52 a1 04 a4 .....h...TTHR... 5190: 0a ff 14 2a 43 4c 43 4b 01 a0 10 93 68 00 70 00 ...*CLCK....h.p. 51a0: 54 48 45 4e 70 00 46 54 54 5f a1 0d 70 68 44 55 THENp.FTT_..phDU 51b0: 54 59 70 01 54 48 45 4e a4 54 48 45 4e 14 37 50 TYp.THEN.THEN.7P 51c0: 43 4c 4b 00 70 50 54 56 4c 60 a0 10 93 60 00 70 CLK.pPTVL`...`.p 51d0: 00 54 48 45 4e 70 00 46 54 54 5f a1 19 76 60 70 .THENp.FTT_..v`p 51e0: 80 60 00 61 7b 61 0a 07 61 70 61 44 55 54 59 70 .`.a{a..apaDUTYp 51f0: 01 54 48 45 4e 5b 82 4b 22 42 41 54 31 08 5f 48 .THEN[.K"BAT1._H 5200: 49 44 0c 41 d0 0c 0a 08 5f 55 49 44 01 08 5f 50 ID.A...._UID.._P 5210: 43 4c 12 06 01 5f 53 42 5f 14 39 5f 53 54 41 00 CL..._SB_.9_STA. 5220: a0 29 90 45 43 4f 4b 93 45 43 44 59 00 a0 13 5e .).ECOK.ECDY...^ 5230: 5e 2e 45 43 30 5f 42 41 4c 30 5b 22 0a 14 a4 0a ^.EC0_BAL0[".... 5240: 1f a1 08 5b 22 0a 14 a4 0a 0f a1 08 5b 22 0a 14 ...[".......[".. 5250: a4 0a 1f 14 48 10 5f 42 49 46 00 08 53 54 41 54 ....H._BIF..STAT 5260: 12 3a 0d 01 0b a0 0f 0b a0 0f 01 0b 5c 2b 0b a4 .:..........\+.. 5270: 01 0a 9c 0b 08 01 0b c4 0e 0d 50 41 33 34 36 35 ..........PA3465 5280: 55 20 00 0d 33 36 35 38 51 00 0d 4c 69 2d 49 6f U ..3658Q..Li-Io 5290: 6e 00 0d 43 4f 4d 50 41 4c 20 00 a0 4b 07 90 45 n..COMPAL ..K..E 52a0: 43 4f 4b 93 45 43 44 59 00 70 5e 5e 2e 45 43 30 COK.ECDY.p^^.EC0 52b0: 5f 42 44 4e 30 60 a0 23 93 60 0a 08 70 0a b4 88 _BDN0`.#.`..p... 52c0: 53 54 41 54 0a 06 00 70 0d 50 41 33 34 35 37 55 STAT...p.PA3457U 52d0: 20 00 88 53 54 41 54 0a 09 00 a0 24 93 60 0a 20 ..STAT....$.`. 52e0: 70 0b 02 01 88 53 54 41 54 0a 06 00 70 0d 50 41 p....STAT...p.PA 52f0: 33 34 35 37 55 20 00 88 53 54 41 54 0a 09 00 5b 3457U ..STAT...[ 5300: 22 0a 14 70 5e 5e 2e 45 43 30 5f 42 44 43 30 42 "..p^^.EC0_BDC0B 5310: 46 43 31 5b 22 0a 14 a1 12 70 0d 4c 69 2d 49 6f FC1["....p.Li-Io 5320: 6e 00 88 53 54 41 54 0a 0b 00 a0 2c 42 46 43 31 n..STAT....,BFC1 5330: 78 42 46 43 31 0a 64 60 61 77 61 0a 64 61 70 61 xBFC1.d`awa.dapa 5340: 42 46 43 31 70 61 88 53 54 41 54 01 00 70 61 88 BFC1pa.STAT..pa. 5350: 53 54 41 54 0a 02 00 a4 53 54 41 54 14 45 0c 5f STAT....STAT.E._ 5360: 42 53 54 00 08 50 42 53 54 12 10 04 00 0c ff ff BST..PBST....... 5370: ff ff 0c ff ff ff ff 0b 5c 2b 70 0b 5c 2b 63 a0 ........\+p.\+c. 5380: 38 90 45 43 4f 4b 93 45 43 44 59 00 5b 22 0a 14 8.ECOK.ECDY.[".. 5390: 70 5e 5e 2e 45 43 30 5f 42 53 54 30 42 53 54 31 p^^.EC0_BST0BST1 53a0: 5b 22 0a 14 70 5e 5e 2e 45 43 30 5f 47 41 55 30 ["..p^^.EC0_GAU0 53b0: 42 47 55 31 5b 22 0a 14 a0 15 42 46 43 31 77 42 BGU1["....BFC1wB 53c0: 47 55 31 42 46 43 31 62 78 62 0a 64 64 62 a1 09 GU1BFC1bxb.ddb.. 53d0: 77 42 47 55 31 0a 28 62 70 42 53 54 31 88 50 42 wBGU1.(bpBST1.PB 53e0: 53 54 00 00 70 00 88 50 42 53 54 01 00 70 62 88 ST..p..PBST..pb. 53f0: 50 42 53 54 0a 02 00 70 63 88 50 42 53 54 0a 03 PBST...pc.PBST.. 5400: 00 a0 1b 94 45 43 44 59 00 76 45 43 44 59 a0 0e ....ECDY.vECDY.. 5410: 93 45 43 44 59 00 86 42 41 54 31 0a 80 a4 50 42 .ECDY..BAT1...PB 5420: 53 54 5b 82 2e 50 53 32 4b 08 5f 48 49 44 0c 41 ST[..PS2K._HID.A 5430: d0 03 03 08 5f 43 52 53 11 19 0a 16 47 01 60 00 ...._CRS....G.`. 5440: 60 00 01 01 47 01 64 00 64 00 01 01 23 02 00 01 `...G.d.d...#... 5450: 79 00 5b 82 1e 50 53 32 4d 08 5f 48 49 44 0c 41 y.[..PS2M._HID.A 5460: d0 0f 13 08 5f 43 52 53 11 09 0a 06 23 00 10 01 ...._CRS....#... 5470: 79 00 5b 82 43 6a 50 41 54 41 08 5f 41 44 52 0c y.[.CjPATA._ADR. 5480: 01 00 1f 00 5b 80 50 41 43 53 02 0a 40 0a c0 5b ....[.PACS..@..[ 5490: 81 49 04 50 41 43 53 03 50 52 49 54 10 00 10 50 .I.PACS.PRIT...P 54a0: 53 49 54 04 00 1c 53 59 4e 43 04 00 0c 53 44 54 SIT...SYNC...SDT 54b0: 30 02 00 02 53 44 54 31 02 00 4a 04 49 43 52 30 0...SDT1..J.ICR0 54c0: 04 49 43 52 31 04 49 43 52 32 04 49 43 52 33 04 .ICR1.ICR2.ICR3. 54d0: 49 43 52 34 04 49 43 52 35 04 5b 82 4b 63 50 52 ICR4.ICR5.[.KcPR 54e0: 49 44 08 5f 41 44 52 00 14 40 17 5f 47 54 4d 00 ID._ADR..@._GTM. 54f0: 08 50 42 55 46 11 17 0a 14 00 00 00 00 00 00 00 .PBUF........... 5500: 00 00 00 00 00 00 00 00 00 00 00 00 00 8a 50 42 ..............PB 5510: 55 46 00 50 49 4f 30 8a 50 42 55 46 0a 04 44 4d UF.PIO0.PBUF..DM 5520: 41 30 8a 50 42 55 46 0a 08 50 49 4f 31 8a 50 42 A0.PBUF..PIO1.PB 5530: 55 46 0a 0c 44 4d 41 31 8a 50 42 55 46 0a 10 46 UF..DMA1.PBUF..F 5540: 4c 41 47 70 47 45 54 50 50 52 49 54 50 49 4f 30 LAGpGETPPRITPIO0 5550: 70 47 44 4d 41 7b 53 59 4e 43 01 00 7b 49 43 52 pGDMA{SYNC..{ICR 5560: 33 01 00 7b 49 43 52 30 01 00 53 44 54 30 7b 49 3..{ICR0..SDT0{I 5570: 43 52 31 01 00 44 4d 41 30 a0 14 93 44 4d 41 30 CR1..DMA0...DMA0 5580: 0c ff ff ff ff 70 50 49 4f 30 44 4d 41 30 a0 2e .....pPIO0DMA0.. 5590: 7b 50 52 49 54 0b 00 40 00 a0 14 93 7b 50 52 49 {PRIT..@....{PRI 55a0: 54 0a 90 00 0a 80 70 0b 84 03 50 49 4f 31 a1 0e T.....p...PIO1.. 55b0: 70 47 45 54 54 50 53 49 54 50 49 4f 31 a1 0b 70 pGETTPSITPIO1..p 55c0: 0c ff ff ff ff 50 49 4f 31 70 47 44 4d 41 7b 53 .....PIO1pGDMA{S 55d0: 59 4e 43 0a 02 00 7b 49 43 52 33 0a 02 00 7b 49 YNC...{ICR3...{I 55e0: 43 52 30 0a 02 00 53 44 54 31 7b 49 43 52 31 0a CR0...SDT1{ICR1. 55f0: 02 00 44 4d 41 31 a0 14 93 44 4d 41 31 0c ff ff ..DMA1...DMA1... 5600: ff ff 70 50 49 4f 31 44 4d 41 31 70 47 45 54 46 ..pPIO1DMA1pGETF 5610: 7b 53 59 4e 43 01 00 7b 53 59 4e 43 0a 02 00 50 {SYNC..{SYNC...P 5620: 52 49 54 46 4c 41 47 a0 2c 7b 93 50 49 4f 30 0c RITFLAG.,{.PIO0. 5630: ff ff ff ff 93 44 4d 41 30 0c ff ff ff ff 00 70 .....DMA0......p 5640: 0a 78 50 49 4f 30 70 0a 14 44 4d 41 30 70 0a 03 .xPIO0p..DMA0p.. 5650: 46 4c 41 47 a4 50 42 55 46 14 4c 2a 5f 53 54 4d FLAG.PBUF.L*_STM 5660: 03 8a 68 00 50 49 4f 30 8a 68 0a 04 44 4d 41 30 ..h.PIO0.h..DMA0 5670: 8a 68 0a 08 50 49 4f 31 8a 68 0a 0c 44 4d 41 31 .h..PIO1.h..DMA1 5680: 8a 68 0a 10 46 4c 41 47 a0 41 12 93 87 69 0b 00 .h..FLAG.A...i.. 5690: 02 7b 50 52 49 54 0b f0 c0 50 52 49 54 7b 53 59 .{PRIT...PRIT{SY 56a0: 4e 43 0a 02 53 59 4e 43 70 00 53 44 54 30 7b 49 NC..SYNCp.SDT0{I 56b0: 43 52 30 0a 02 49 43 52 30 7b 49 43 52 31 0a 02 CR0..ICR0{ICR1.. 56c0: 49 43 52 31 7b 49 43 52 33 0a 02 49 43 52 33 7b ICR1{ICR3..ICR3{ 56d0: 49 43 52 35 0a 02 49 43 52 35 8b 69 0a 62 57 34 ICR5..ICR5.i.bW4 56e0: 39 30 8b 69 0a 6a 57 35 33 30 8b 69 0a 7e 57 36 90.i.jW530.i.~W6 56f0: 33 30 8b 69 0a 80 57 36 34 30 8b 69 0a b0 57 38 30.i..W640.i..W8 5700: 38 30 8b 69 0a ba 57 39 33 30 7d 50 52 49 54 0b 80.i..W930}PRIT. 5710: 04 80 50 52 49 54 a0 1e 90 7b 46 4c 41 47 0a 02 ..PRIT...{FLAG.. 5720: 00 7b 57 34 39 30 0b 00 08 00 7d 50 52 49 54 0a .{W490....}PRIT. 5730: 02 50 52 49 54 7d 50 52 49 54 53 45 54 50 50 49 .PRIT}PRITSETPPI 5740: 4f 30 57 35 33 30 57 36 34 30 50 52 49 54 a0 4b O0W530W640PRIT.K 5750: 05 7b 46 4c 41 47 01 00 7d 53 59 4e 43 01 53 59 .{FLAG..}SYNC.SY 5760: 4e 43 70 53 44 4d 41 44 4d 41 30 53 44 54 30 a0 NCpSDMADMA0SDT0. 5770: 12 95 44 4d 41 30 0a 1e 7d 49 43 52 33 01 49 43 ..DMA0..}ICR3.IC 5780: 52 33 a0 12 95 44 4d 41 30 0a 3c 7d 49 43 52 30 R3...DMA0.<}ICR0 5790: 01 49 43 52 30 a0 14 7b 57 39 33 30 0b 00 20 00 .ICR0..{W930.. . 57a0: 7d 49 43 52 31 01 49 43 52 31 a0 4b 15 93 87 6a }ICR1.ICR1.K...j 57b0: 0b 00 02 7b 50 52 49 54 0b 0f bf 50 52 49 54 70 ...{PRIT...PRITp 57c0: 00 50 53 49 54 7b 53 59 4e 43 01 53 59 4e 43 70 .PSIT{SYNC.SYNCp 57d0: 00 53 44 54 31 7b 49 43 52 30 01 49 43 52 30 7b .SDT1{ICR0.ICR0{ 57e0: 49 43 52 31 01 49 43 52 31 7b 49 43 52 33 01 49 ICR1.ICR1{ICR3.I 57f0: 43 52 33 7b 49 43 52 35 01 49 43 52 35 8b 6a 0a CR3{ICR5.ICR5.j. 5800: 62 57 34 39 31 8b 6a 0a 6a 57 35 33 31 8b 6a 0a bW491.j.jW531.j. 5810: 7e 57 36 33 31 8b 6a 0a 80 57 36 34 31 8b 6a 0a ~W631.j..W641.j. 5820: b0 57 38 38 31 8b 6a 0a ba 57 39 33 31 7d 50 52 .W881.j..W931}PR 5830: 49 54 0b 40 80 50 52 49 54 a0 1e 90 7b 46 4c 41 IT.@.PRIT...{FLA 5840: 47 0a 08 00 7b 57 34 39 31 0b 00 08 00 7d 50 52 G...{W491....}PR 5850: 49 54 0a 20 50 52 49 54 a0 4c 04 7b 46 4c 41 47 IT. PRIT.L.{FLAG 5860: 0a 10 00 7d 50 52 49 54 0b 00 40 50 52 49 54 a0 ...}PRIT..@PRIT. 5870: 13 94 50 49 4f 31 0a f0 7d 50 52 49 54 0a 80 50 ..PIO1..}PRIT..P 5880: 52 49 54 a1 21 7d 50 52 49 54 0a 10 50 52 49 54 RIT.!}PRIT..PRIT 5890: 70 53 45 54 54 50 49 4f 31 57 35 33 31 57 36 34 pSETTPIO1W531W64 58a0: 31 50 53 49 54 a0 40 06 7b 46 4c 41 47 0a 04 00 1PSIT.@.{FLAG... 58b0: 7d 53 59 4e 43 0a 02 53 59 4e 43 70 53 44 4d 41 }SYNC..SYNCpSDMA 58c0: 44 4d 41 31 53 44 54 31 a0 13 95 44 4d 41 31 0a DMA1SDT1...DMA1. 58d0: 1e 7d 49 43 52 33 0a 02 49 43 52 33 a0 13 95 44 .}ICR3..ICR3...D 58e0: 4d 41 31 0a 3c 7d 49 43 52 30 0a 02 49 43 52 30 MA1.<}ICR0..ICR0 58f0: a0 15 7b 57 39 33 31 0b 00 20 00 7d 49 43 52 31 ..{W931.. .}ICR1 5900: 0a 02 49 43 52 31 5b 82 47 10 50 5f 44 30 08 5f ..ICR1[.G.P_D0._ 5910: 41 44 52 00 14 4a 0f 5f 47 54 46 00 08 50 49 42 ADR..J._GTF..PIB 5920: 30 11 11 0a 0e 03 00 00 00 00 a0 ef 03 00 00 00 0............... 5930: 00 a0 ef 8c 50 49 42 30 01 50 4d 44 30 8c 50 49 ....PIB0.PMD0.PI 5940: 42 30 0a 08 44 4d 44 30 a0 40 06 7b 50 52 49 54 B0..DMD0.@.{PRIT 5950: 0a 02 00 a0 13 93 7b 50 52 49 54 0a 09 00 0a 08 ......{PRIT..... 5960: 70 0a 08 50 4d 44 30 a1 41 04 70 0a 0a 50 4d 44 p..PMD0.A.p..PMD 5970: 30 7a 7b 50 52 49 54 0b 00 03 00 0a 08 60 7a 7b 0z{PRIT......`z{ 5980: 50 52 49 54 0b 00 30 00 0a 0c 61 72 60 61 62 a0 PRIT..0...ar`ab. 5990: 0c 93 0a 03 62 70 0a 0b 50 4d 44 30 a0 0c 93 0a ....bp..PMD0.... 59a0: 05 62 70 0a 0c 50 4d 44 30 a1 07 70 01 50 4d 44 .bp..PMD0..p.PMD 59b0: 30 a0 43 04 7b 53 59 4e 43 01 00 70 7d 53 44 54 0.C.{SYNC..p}SDT 59c0: 30 0a 40 00 44 4d 44 30 a0 2c 7b 49 43 52 31 01 0.@.DMD0.,{ICR1. 59d0: 00 a0 13 7b 49 43 52 30 01 00 72 44 4d 44 30 0a ...{ICR0..rDMD0. 59e0: 02 44 4d 44 30 a0 0f 7b 49 43 52 33 01 00 70 0a .DMD0..{ICR3..p. 59f0: 45 44 4d 44 30 a1 14 7d 74 7b 50 4d 44 30 0a 07 EDMD0..}t{PMD0.. 5a00: 00 0a 02 00 0a 20 44 4d 44 30 a4 50 49 42 30 5b ..... DMD0.PIB0[ 5a10: 82 46 10 50 5f 44 31 08 5f 41 44 52 01 14 49 0f .F.P_D1._ADR..I. 5a20: 5f 47 54 46 00 08 50 49 42 31 11 11 0a 0e 03 00 _GTF..PIB1...... 5a30: 00 00 00 b0 ef 03 00 00 00 00 b0 ef 8c 50 49 42 .............PIB 5a40: 31 01 50 4d 44 31 8c 50 49 42 31 0a 08 44 4d 44 1.PMD1.PIB1..DMD 5a50: 31 a0 4b 05 7b 50 52 49 54 0a 20 00 a0 13 93 7b 1.K.{PRIT. ....{ 5a60: 50 52 49 54 0a 90 00 0a 80 70 0a 08 50 4d 44 31 PRIT.....p..PMD1 5a70: a1 3c 72 7b 50 53 49 54 0a 03 00 7a 7b 50 53 49 .. 0050: 80 49 ee 6a 65 26 72 1e cd bf 5f 2f 96 d6 c0 0a .I.je&r..._/.... 0060: 92 f5 06 b5 00 b2 3b 29 02 e2 4c 8d c2 f2 bc 41 ......;)..L....A 0070: 77 9c 70 f0 f3 1b 09 d2 63 5a dc a8 83 f8 5e c9 w.p.....cZ....^. 0080: 15 95 f9 fa fd dc 05 b7 4d 67 7f 2d b3 84 33 20 ........Mg.-..3 0090: e1 d1 79 2a a7 6a 77 d1 b6 20 2a 76 42 c5 d5 e9 ..y*.jw.. *vB... 00a0: b6 43 40 55 44 c3 c9 37 99 5f 41 97 70 f3 d1 f6 .C@UD..7._A.p... 00b0: 07 ec 7b 1a 29 a1 c1 f1 91 fd 48 86 6e 3e ce cb ..{.).....H.n>.. 00c0: 01 00 00 00 b6 00 00 00 00 00 02 00 4c 45 4e 4f ............LENO 00d0: 56 4f 54 50 2d 36 38 20 20 20 57 49 4e 44 4f 57 VOTP-68 WINDOW 00e0: 53 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 S .............. 00f0: 00 00 00 00 00 00 8a 6e 2e c9 36 e6 7f 10 8a ea .......n..6..... 0100: 14 ad d2 93 b7 6d 9b 73 ad 83 36 b8 6c a7 a7 ee .....m.s..6.l... 0110: 37 47 16 fe f3 fc cd c7 89 84 06 16 91 0b 1e 81 7G.............. 0120: 11 42 b1 35 52 57 f6 6b bb 5f a5 81 e2 ff 89 8a .B.5RW.k._...... 0130: 95 c3 4d fc e9 56 4f 4c 34 cc 99 5e 62 e1 90 8a ..M..VOL4..^b... 0140: 54 be 4a 00 5c 9b a0 86 41 46 66 9d e2 f2 e7 36 T.J.\...AFf....6 0150: 9c 33 91 27 e7 8d 5c a1 d8 f9 a4 61 8a 1c 04 07 .3.'..\....a.... 0160: e3 2a 1e 14 f1 bd 7f 4c 09 ff 19 11 a9 d4 74 ca .*.....L......t. 0170: 11 9e dc 54 39 bf ...T9. APIC @ 0xbf6dff70 0000: 41 50 49 43 68 00 00 00 01 13 50 54 4c 54 44 20 APICh.....PTLTD 0010: 09 20 41 50 49 43 20 20 00 00 04 06 20 4c 54 50 . APIC .... LTP 0020: 00 00 00 00 00 00 e0 fe 01 00 00 00 00 08 00 00 ................ 0030: 01 00 00 00 00 08 01 01 01 00 00 00 01 0c 02 00 ................ 0040: 00 00 c0 fe 00 00 00 00 04 06 00 05 00 01 04 06 ................ 0050: 01 05 00 01 02 0a 00 00 02 00 00 00 05 00 02 0a ................ 0060: 00 09 09 00 00 00 0d 00 ........ BOOT @ 0xbf6dffd8 0000: 42 4f 4f 54 28 00 00 00 01 a5 50 54 4c 54 44 20 BOOT(.....PTLTD 0010: 24 53 42 46 54 42 4c 24 00 00 04 06 20 4c 54 50 $SBFTBL$.... LTP 0020: 01 00 00 00 36 00 00 00 ....6... SSDT @ 0xbf6d98bd 0000: 53 53 44 54 ad 02 00 00 01 59 53 61 74 61 52 65 SSDT.....YSataRe 0010: 53 61 74 61 41 68 63 69 00 10 00 00 49 4e 54 4c SataAhci....INTL 0020: 24 06 05 20 10 48 28 5c 2f 03 5f 53 42 5f 50 43 $.. .H(\/._SB_PC 0030: 49 30 53 41 54 41 5b 82 4f 0c 50 52 54 30 08 5f I0SATA[.O.PRT0._ 0040: 41 44 52 0b ff ff 14 44 0b 5f 53 44 44 01 08 47 ADR....D._SDD..G 0050: 42 55 30 11 0a 0a 07 00 00 00 00 00 a0 00 8c 47 BU0............G 0060: 42 55 30 0a 00 47 42 30 30 8c 47 42 55 30 0a 01 BU0..GB00.GBU0.. 0070: 47 42 30 31 8c 47 42 55 30 0a 02 47 42 30 32 8c GB01.GBU0..GB02. 0080: 47 42 55 30 0a 03 47 42 30 33 8c 47 42 55 30 0a GBU0..GB03.GBU0. 0090: 04 47 42 30 34 8c 47 42 55 30 0a 05 47 42 30 35 .GB04.GBU0..GB05 00a0: 8c 47 42 55 30 0a 06 47 42 30 36 a0 46 04 93 87 .GBU0..GB06.F... 00b0: 68 0b 00 02 8b 68 0a 9c 57 37 38 30 a0 1e 7b 57 h....h..W780..{W 00c0: 37 38 30 0a 08 00 70 0a 10 47 42 30 30 70 0a 03 780...p..GB00p.. 00d0: 47 42 30 31 70 0a ef 47 42 30 36 a1 16 70 0a 90 GB01p..GB06..p.. 00e0: 47 42 30 30 70 0a 03 47 42 30 31 70 0a ef 47 42 GB00p..GB01p..GB 00f0: 30 36 70 47 42 55 30 47 54 46 30 14 0b 5f 47 54 06pGBU0GTF0.._GT 0100: 46 00 a4 47 54 46 30 5b 82 41 0d 50 52 54 31 08 F..GTF0[.A.PRT1. 0110: 5f 41 44 52 0c ff ff 01 00 14 44 0b 5f 53 44 44 _ADR......D._SDD 0120: 01 08 47 42 55 31 11 0a 0a 07 00 00 00 00 00 a0 ..GBU1.......... 0130: 00 8c 47 42 55 31 0a 00 47 42 31 30 8c 47 42 55 ..GBU1..GB10.GBU 0140: 31 0a 01 47 42 31 31 8c 47 42 55 31 0a 02 47 42 1..GB11.GBU1..GB 0150: 31 32 8c 47 42 55 31 0a 03 47 42 31 33 8c 47 42 12.GBU1..GB13.GB 0160: 55 31 0a 04 47 42 31 34 8c 47 42 55 31 0a 05 47 U1..GB14.GBU1..G 0170: 42 31 35 8c 47 42 55 31 0a 06 47 42 31 36 a0 46 B15.GBU1..GB16.F 0180: 04 93 87 68 0b 00 02 8b 68 0a 9c 57 37 38 31 a0 ...h....h..W781. 0190: 1e 7b 57 37 38 31 0a 08 00 70 0a 10 47 42 31 30 .{W781...p..GB10 01a0: 70 0a 03 47 42 31 31 70 0a ef 47 42 31 36 a1 16 p..GB11p..GB16.. 01b0: 70 0a 90 47 42 31 30 70 0a 03 47 42 31 31 70 0a p..GB10p..GB11p. 01c0: ef 47 42 31 36 70 47 42 55 31 47 54 46 31 14 0b .GB16pGBU1GTF1.. 01d0: 5f 47 54 46 00 a4 47 54 46 31 5b 82 41 0d 50 52 _GTF..GTF1[.A.PR 01e0: 54 32 08 5f 41 44 52 0c ff ff 02 00 14 44 0b 5f T2._ADR......D._ 01f0: 53 44 44 01 08 47 42 55 32 11 0a 0a 07 00 00 00 SDD..GBU2....... 0200: 00 00 a0 00 8c 47 42 55 32 0a 00 47 42 32 30 8c .....GBU2..GB20. 0210: 47 42 55 32 0a 01 47 42 32 31 8c 47 42 55 32 0a GBU2..GB21.GBU2. 0220: 02 47 42 32 32 8c 47 42 55 32 0a 03 47 42 32 33 .GB22.GBU2..GB23 0230: 8c 47 42 55 32 0a 04 47 42 32 34 8c 47 42 55 32 .GBU2..GB24.GBU2 0240: 0a 05 47 42 32 35 8c 47 42 55 32 0a 06 47 42 32 ..GB25.GBU2..GB2 0250: 36 a0 46 04 93 87 68 0b 00 02 8b 68 0a 9c 57 37 6.F...h....h..W7 0260: 38 32 a0 1e 7b 57 37 38 32 0a 08 00 70 0a 10 47 82..{W782...p..G 0270: 42 32 30 70 0a 03 47 42 32 31 70 0a ef 47 42 32 B20p..GB21p..GB2 0280: 36 a1 16 70 0a 90 47 42 32 30 70 0a 03 47 42 32 6..p..GB20p..GB2 0290: 31 70 0a ef 47 42 32 36 70 47 42 55 32 47 54 46 1p..GB26pGBU2GTF 02a0: 32 14 0b 5f 47 54 46 00 a4 47 54 46 32 2.._GTF..GTF2 SSDT @ 0xbf6d981a 0000: 53 53 44 54 a3 00 00 00 01 ed 42 72 74 52 65 66 SSDT......BrtRef 0010: 44 44 30 31 42 52 54 00 00 10 00 00 49 4e 54 4c DD01BRT.....INTL 0020: 24 06 05 20 10 4e 07 5c 2f 04 5f 53 42 5f 50 43 $.. .N.\/._SB_PC 0030: 49 30 47 46 58 30 44 44 30 33 14 1e 5f 42 43 4c I0GFX0DD03.._BCL 0040: 00 a4 12 16 0a 0a 46 0a 28 0a 00 0a 0a 0a 14 0a ......F.(....... 0050: 1e 0a 28 0a 32 0a 3c 0a 46 14 25 5f 42 43 4d 01 ..(.2.<.F.%_BCM. 0060: 78 68 0a 0a 60 61 70 61 5c 2f 05 5f 53 42 5f 50 xh..`apa\/._SB_P 0070: 43 49 30 4c 50 43 42 45 43 30 5f 42 52 54 53 14 CI0LPCBEC0_BRTS. 0080: 23 5f 42 51 43 00 77 5c 2f 05 5f 53 42 5f 50 43 #_BQC.w\/._SB_PC 0090: 49 30 4c 50 43 42 45 43 30 5f 42 52 54 53 0a 0a I0LPCBEC0_BRTS.. 00a0: 60 a4 60 `.` SSDT @ 0xbf6d8e10 0000: 53 53 44 54 5f 02 00 00 01 c8 50 6d 52 65 66 00 SSDT_.....PmRef. 0010: 43 70 75 30 54 73 74 00 00 30 00 00 49 4e 54 4c Cpu0Tst..0..INTL 0020: 24 06 05 20 10 4a 23 5c 2e 5f 50 52 5f 43 50 55 $.. .J#\._PR_CPU 0030: 30 08 5f 54 50 43 0a 00 14 4d 06 5f 50 54 43 00 0._TPC...M._PTC. 0040: a0 37 7b 50 44 43 30 0a 04 00 a4 12 2c 02 11 14 .7{PDC0.....,... 0050: 0a 11 82 0c 00 7f 00 00 00 00 00 00 00 00 00 00 ................ 0060: 00 79 00 11 14 0a 11 82 0c 00 7f 00 00 00 00 00 .y.............. 0070: 00 00 00 00 00 00 79 00 a4 12 2c 02 11 14 0a 11 ......y...,..... 0080: 82 0c 00 01 04 01 00 10 10 00 00 00 00 00 00 79 ...............y 0090: 00 11 14 0a 11 82 0c 00 01 04 01 00 10 10 00 00 ................ 00a0: 00 00 00 00 79 00 08 54 53 53 49 12 41 07 08 12 ....y..TSSI.A... 00b0: 0d 05 0a 64 0b e8 03 0a 00 0a 00 0a 00 12 0d 05 ...d............ 00c0: 0a 58 0b 6b 03 0a 00 0a 0f 0a 00 12 0d 05 0a 4b .X.k...........K 00d0: 0b ee 02 0a 00 0a 0e 0a 00 12 0d 05 0a 3f 0b 71 .............?.q 00e0: 02 0a 00 0a 0d 0a 00 12 0d 05 0a 32 0b f4 01 0a ...........2.... 00f0: 00 0a 0c 0a 00 12 0d 05 0a 26 0b 77 01 0a 00 0a .........&.w.... 0100: 0b 0a 00 12 0c 05 0a 19 0a fa 0a 00 0a 0a 0a 00 ................ 0110: 12 0c 05 0a 0d 0a 7d 0a 00 0a 09 0a 00 08 54 53 ......}.......TS 0120: 53 4d 12 41 07 08 12 0d 05 0a 64 0b e8 03 0a 00 SM.A......d..... 0130: 0a 00 0a 00 12 0d 05 0a 58 0b 6b 03 0a 00 0a 1e ........X.k..... 0140: 0a 00 12 0d 05 0a 4b 0b ee 02 0a 00 0a 1c 0a 00 ......K......... 0150: 12 0d 05 0a 3f 0b 71 02 0a 00 0a 1a 0a 00 12 0d ....?.q......... 0160: 05 0a 32 0b f4 01 0a 00 0a 18 0a 00 12 0d 05 0a ..2............. 0170: 26 0b 77 01 0a 00 0a 16 0a 00 12 0c 05 0a 19 0a &.w............. 0180: fa 0a 00 0a 14 0a 00 12 0c 05 0a 0d 0a 7d 0a 00 .............}.. 0190: 0a 12 0a 00 08 54 53 53 46 0a 00 14 43 08 5f 54 .....TSSF...C._T 01a0: 53 53 00 a0 47 06 90 92 54 53 53 46 5b 12 5f 50 SS..G...TSSF[._P 01b0: 53 53 00 70 5f 50 53 53 60 70 87 60 61 76 61 70 SS.p_PSS`p.`avap 01c0: 83 88 83 88 60 61 00 0a 01 00 62 70 0a 00 63 a2 ....`a....bp..c. 01d0: 35 95 63 87 54 53 53 49 70 78 77 62 74 0a 08 63 5.c.TSSIpxwbt..c 01e0: 00 00 0a 08 00 00 64 70 64 88 83 88 54 53 53 49 ......dpd...TSSI 01f0: 63 00 0a 01 00 70 64 88 83 88 54 53 53 4d 63 00 c....pd...TSSMc. 0200: 0a 01 00 75 63 70 ff 54 53 53 46 a0 0e 7b 50 44 ...ucp.TSSF..{PD 0210: 43 30 0a 04 00 a4 54 53 53 4d a4 54 53 53 49 14 C0....TSSM.TSSI. 0220: 3f 5f 54 53 44 00 a0 27 90 7b 43 46 47 44 0c 00 ?_TSD..'.{CFGD.. 0230: 00 00 01 00 92 7b 50 44 43 30 0a 04 00 a4 12 0f .....{PDC0...... 0240: 01 12 0c 05 0a 05 0a 00 0a 00 0a fd 0a 02 a4 12 ................ 0250: 0f 01 12 0c 05 0a 05 0a 00 0a 00 0a fc 0a 01 ............... SSDT @ 0xbf6d8d6a 0000: 53 53 44 54 a6 00 00 00 01 6d 50 6d 52 65 66 00 SSDT.....mPmRef. 0010: 43 70 75 31 54 73 74 00 00 30 00 00 49 4e 54 4c Cpu1Tst..0..INTL 0020: 24 06 05 20 10 41 08 5c 2e 5f 50 52 5f 43 50 55 $.. .A.\._PR_CPU 0030: 31 08 5f 54 50 43 0a 00 14 16 5f 50 54 43 00 a4 1._TPC...._PTC.. 0040: 5c 2f 03 5f 50 52 5f 43 50 55 30 5f 50 54 43 14 \/._PR_CPU0_PTC. 0050: 16 5f 54 53 53 00 a4 5c 2f 03 5f 50 52 5f 43 50 ._TSS..\/._PR_CP 0060: 55 30 5f 54 53 53 14 3f 5f 54 53 44 00 a0 27 90 U0_TSS.?_TSD..'. 0070: 7b 43 46 47 44 0c 00 00 00 01 00 92 7b 50 44 43 {CFGD.......{PDC 0080: 31 0a 04 00 a4 12 0f 01 12 0c 05 0a 05 0a 00 0a 1............... 0090: 00 0a fd 0a 02 a4 12 0f 01 12 0c 05 0a 05 0a 00 ................ 00a0: 0a 01 0a fc 0a 01 ...... SSDT @ 0xbf6d8884 0000: 53 53 44 54 e6 04 00 00 01 df 50 6d 52 65 66 00 SSDT......PmRef. 0010: 43 70 75 50 6d 00 00 00 00 30 00 00 49 4e 54 4c CpuPm....0..INTL 0020: 24 06 05 20 10 45 08 5c 00 08 53 53 44 54 12 43 $.. .E.\..SSDT.C 0030: 05 0c 0d 43 50 55 30 49 53 54 20 00 0c 9e 95 6d ...CPU0IST ....m 0040: bf 0c b4 01 00 00 0d 43 50 55 31 49 53 54 20 00 .......CPU1IST . 0050: 0c 52 97 6d bf 0c c8 00 00 00 0d 43 50 55 30 43 .R.m.......CPU0C 0060: 53 54 20 00 0c 6f 90 6d bf 0c aa 04 00 00 0d 43 ST ..o.m.......C 0070: 50 55 31 43 53 54 20 00 0c 19 95 6d bf 0c 85 00 PU1CST ....m.... 0080: 00 00 08 43 46 47 44 0c f1 69 3f 11 08 5c 50 44 ...CFGD..i?..\PD 0090: 43 30 0c 00 00 00 80 08 5c 50 44 43 31 0c 00 00 C0......\PDC1... 00a0: 00 80 08 5c 53 44 54 4c 0a 00 10 4d 21 5c 2e 5f ...\SDTL...M!\._ 00b0: 50 52 5f 43 50 55 30 08 48 49 30 5f 0a 00 08 48 PR_CPU0.HI0_...H 00c0: 43 30 5f 0a 00 14 48 06 5f 50 44 43 01 8a 68 0a C0_...H._PDC..h. 00d0: 00 52 45 56 53 8a 68 0a 04 53 49 5a 45 70 87 68 .REVS.h..SIZEp.h 00e0: 60 70 74 60 0a 08 00 61 5b 13 68 0a 40 77 61 0a `pt`...a[.h.@wa. 00f0: 08 00 54 45 4d 50 08 53 54 53 30 11 07 0a 04 00 ..TEMP.STS0..... 0100: 00 00 00 73 53 54 53 30 54 45 4d 50 62 5f 4f 53 ...sSTS0TEMPb_OS 0110: 43 11 13 0a 10 16 a6 77 40 0c 29 be 47 9e bd d8 C......w@.).G... 0120: 70 58 71 39 53 52 45 56 53 53 49 5a 45 62 14 49 pXq9SREVSSIZEb.I 0130: 19 5f 4f 53 43 04 8a 6b 0a 00 53 54 53 30 8a 6b ._OSC..k..STS0.k 0140: 0a 04 43 41 50 30 8a 68 0a 00 49 49 44 30 8a 68 ..CAP0.h..IID0.h 0150: 0a 04 49 49 44 31 8a 68 0a 08 49 49 44 32 8a 68 ..IID1.h..IID2.h 0160: 0a 0c 49 49 44 33 08 55 49 44 30 11 13 0a 10 16 ..IID3.UID0..... 0170: a6 77 40 0c 29 be 47 9e bd d8 70 58 71 39 53 8a .w@.).G...pXq9S. 0180: 55 49 44 30 0a 00 45 49 44 30 8a 55 49 44 30 0a UID0..EID0.UID0. 0190: 04 45 49 44 31 8a 55 49 44 30 0a 08 45 49 44 32 .EID1.UID0..EID2 01a0: 8a 55 49 44 30 0a 0c 45 49 44 33 a0 32 92 90 90 .UID0..EID3.2... 01b0: 93 49 49 44 30 45 49 44 30 93 49 49 44 31 45 49 .IID0EID0.IID1EI 01c0: 44 31 90 93 49 49 44 32 45 49 44 32 93 49 49 44 D1..IID2EID2.IID 01d0: 33 45 49 44 33 70 0a 06 53 54 53 30 a4 6b a0 0f 3EID3p..STS0.k.. 01e0: 92 93 69 0a 01 70 0a 0a 53 54 53 30 a4 6b 7d 7b ..i..p..STS0.k}{ 01f0: 50 44 43 30 0c ff ff ff 7f 00 43 41 50 30 50 44 PDC0......CAP0PD 0200: 43 30 70 7b 50 44 43 30 0a ff 00 50 43 50 30 a0 C0p{PDC0...PCP0. 0210: 4c 05 7b 43 46 47 44 0a 01 00 a0 41 05 90 90 7b L.{CFGD....A...{ 0220: 43 46 47 44 0c 00 00 00 01 00 93 7b 50 44 43 30 CFGD.......{PDC0 0230: 0a 09 00 0a 09 92 7b 53 44 54 4c 0a 01 00 7d 53 ......{SDTL...}S 0240: 44 54 4c 0a 01 53 44 54 4c 5b 80 49 53 54 30 00 DTL..SDTL[.IST0. 0250: 83 88 53 53 44 54 0a 01 00 83 88 53 53 44 54 0a ..SSDT.....SSDT. 0260: 02 00 5b 20 49 53 54 30 48 49 30 5f a0 49 05 7b ..[ IST0HI0_.I.{ 0270: 43 46 47 44 0a f0 00 a0 4e 04 90 90 7b 43 46 47 CFGD....N...{CFG 0280: 44 0c 00 00 00 01 00 7b 50 44 43 30 0a 18 00 92 D......{PDC0.... 0290: 7b 53 44 54 4c 0a 02 00 7d 53 44 54 4c 0a 02 53 {SDTL...}SDTL..S 02a0: 44 54 4c 5b 80 43 53 54 30 00 83 88 53 53 44 54 DTL[.CST0...SSDT 02b0: 0a 07 00 83 88 53 53 44 54 0a 08 00 5b 20 43 53 .....SSDT...[ CS 02c0: 54 30 48 43 30 5f a4 6b 10 4d 21 5c 2e 5f 50 52 T0HC0_.k.M!\._PR 02d0: 5f 43 50 55 31 08 48 49 31 5f 0a 00 08 48 43 31 _CPU1.HI1_...HC1 02e0: 5f 0a 00 14 48 06 5f 50 44 43 01 8a 68 0a 00 52 _...H._PDC..h..R 02f0: 45 56 53 8a 68 0a 04 53 49 5a 45 70 87 68 60 70 EVS.h..SIZEp.h`p 0300: 74 60 0a 08 00 61 5b 13 68 0a 40 77 61 0a 08 00 t`...a[.h.@wa... 0310: 54 45 4d 50 08 53 54 53 31 11 07 0a 04 00 00 00 TEMP.STS1....... 0320: 00 73 53 54 53 31 54 45 4d 50 62 5f 4f 53 43 11 .sSTS1TEMPb_OSC. 0330: 13 0a 10 16 a6 77 40 0c 29 be 47 9e bd d8 70 58 .....w@.).G...pX 0340: 71 39 53 52 45 56 53 53 49 5a 45 62 14 49 19 5f q9SREVSSIZEb.I._ 0350: 4f 53 43 04 8a 6b 0a 00 53 54 53 31 8a 6b 0a 04 OSC..k..STS1.k.. 0360: 43 41 50 31 8a 68 0a 00 49 49 44 30 8a 68 0a 04 CAP1.h..IID0.h.. 0370: 49 49 44 31 8a 68 0a 08 49 49 44 32 8a 68 0a 0c IID1.h..IID2.h.. 0380: 49 49 44 33 08 55 49 44 31 11 13 0a 10 16 a6 77 IID3.UID1......w 0390: 40 0c 29 be 47 9e bd d8 70 58 71 39 53 8a 55 49 @.).G...pXq9S.UI 03a0: 44 31 0a 00 45 49 44 30 8a 55 49 44 31 0a 04 45 D1..EID0.UID1..E 03b0: 49 44 31 8a 55 49 44 31 0a 08 45 49 44 32 8a 55 ID1.UID1..EID2.U 03c0: 49 44 31 0a 0c 45 49 44 33 a0 32 92 90 90 93 49 ID1..EID3.2....I 03d0: 49 44 30 45 49 44 30 93 49 49 44 31 45 49 44 31 ID0EID0.IID1EID1 03e0: 90 93 49 49 44 32 45 49 44 32 93 49 49 44 33 45 ..IID2EID2.IID3E 03f0: 49 44 33 70 0a 06 53 54 53 31 a4 6b a0 0f 92 93 ID3p..STS1.k.... 0400: 69 0a 01 70 0a 0a 53 54 53 31 a4 6b 7d 7b 50 44 i..p..STS1.k}{PD 0410: 43 31 0c ff ff ff 7f 00 43 41 50 31 50 44 43 31 C1......CAP1PDC1 0420: 70 7b 50 44 43 31 0a ff 00 50 43 50 31 a0 4c 05 p{PDC1...PCP1.L. 0430: 7b 43 46 47 44 0a 01 00 a0 41 05 90 90 7b 43 46 {CFGD....A...{CF 0440: 47 44 0c 00 00 00 01 00 93 7b 50 44 43 31 0a 09 GD.......{PDC1.. 0450: 00 0a 09 92 7b 53 44 54 4c 0a 10 00 7d 53 44 54 ....{SDTL...}SDT 0460: 4c 0a 10 53 44 54 4c 5b 80 49 53 54 31 00 83 88 L..SDTL[.IST1... 0470: 53 53 44 54 0a 04 00 83 88 53 53 44 54 0a 05 00 SSDT.....SSDT... 0480: 5b 20 49 53 54 31 48 49 31 5f a0 49 05 7b 43 46 [ IST1HI1_.I.{CF 0490: 47 44 0a f0 00 a0 4e 04 90 90 7b 43 46 47 44 0c GD....N...{CFGD. 04a0: 00 00 00 01 00 7b 50 44 43 31 0a 18 00 92 7b 53 .....{PDC1....{S 04b0: 44 54 4c 0a 20 00 7d 53 44 54 4c 0a 20 53 44 54 DTL. .}SDTL. SDT 04c0: 4c 5b 80 43 53 54 31 00 83 88 53 53 44 54 0a 0a L[.CST1...SSDT.. 04d0: 00 83 88 53 53 44 54 0a 0b 00 5b 20 43 53 54 31 ...SSDT...[ CST1 04e0: 48 43 31 5f a4 6b HC1_.k XSDT @ 0xbf6d87f0 0000: 58 53 44 54 94 00 00 00 01 c2 4c 45 4e 4f 56 4f XSDT......LENOVO 0010: 54 50 2d 36 38 20 20 20 00 00 04 06 20 4c 54 50 TP-68 .... LTP 0020: 00 00 00 00 d2 fb 6d bf 00 00 00 00 c6 fc 6d bf ......m.......m. 0030: 00 00 00 00 2e fd 6d bf 00 00 00 00 66 fd 6d bf ......m.....f.m. 0040: 00 00 00 00 a2 fd 6d bf 00 00 00 00 d4 fd 6d bf ......m.......m. 0050: 00 00 00 00 fa fd 6d bf 00 00 00 00 70 ff 6d bf ......m.....p.m. 0060: 00 00 00 00 d8 ff 6d bf 00 00 00 00 bd 98 6d bf ......m.......m. 0070: 00 00 00 00 1a 98 6d bf 00 00 00 00 10 8e 6d bf ......m.......m. 0080: 00 00 00 00 6a 8d 6d bf 00 00 00 00 84 88 6d bf ....j.m.......m. 0090: 00 00 00 00 .... RSD PTR @ 0xf7240 0000: 52 53 44 20 50 54 52 20 c5 4c 45 4e 4f 56 4f 02 RSD PTR .LENOVO. 0010: 94 87 6d bf 24 00 00 00 f0 87 6d bf 00 00 00 00 ..m.$.....m..... 0020: 39 00 00 00 9... fwts-test/osilinux-0001/acpidump-0002.log000066400000000000000000004054211231470457100201440ustar00rootroot00000000000000DSDT @ 0xbf6d9b6a 0000: 44 53 44 54 f4 5f 00 00 02 11 54 4f 53 43 50 4c DSDT._....TOSCPL 0010: 43 52 45 53 54 4c 4e 45 00 00 04 06 49 4e 54 4c CRESTLNE....INTL 0020: 08 06 06 20 08 5a 30 30 30 01 08 5a 30 30 31 0a ... .Z000..Z001. 0030: 02 08 5a 30 30 32 0a 04 08 5a 30 30 33 0a 08 08 ..Z002...Z003... 0040: 5a 30 30 34 00 08 5a 30 30 35 0a 0f 08 5a 30 30 Z004..Z005...Z00 0050: 36 0a 0d 08 5a 30 30 37 0a 0b 08 5a 30 30 38 0a 6...Z007...Z008. 0060: 09 08 45 43 44 59 0a 07 5b 01 4d 55 54 58 00 5b ..ECDY..[.MUTX.[ 0070: 80 50 52 54 30 01 0a 80 0a 04 5b 81 0b 50 52 54 .PRT0.....[..PRT 0080: 30 13 50 38 30 48 20 14 4e 07 50 38 58 48 0a a0 0.P80H .N.P8XH.. 0090: 17 93 68 00 70 7d 7b 50 38 30 44 0c 00 ff ff ff ..h.p}{P80D..... 00a0: 00 69 00 50 38 30 44 a0 1b 93 68 01 70 7d 7b 50 .i.P80D...h.p}{P 00b0: 38 30 44 0c ff 00 ff ff 00 79 69 0a 08 00 00 50 80D......yi....P 00c0: 38 30 44 a0 1c 93 68 0a 02 70 7d 7b 50 38 30 44 80D...h..p}{P80D 00d0: 0c ff ff 00 ff 00 79 69 0a 10 00 00 50 38 30 44 ......yi....P80D 00e0: a0 1c 93 68 0a 03 70 7d 7b 50 38 30 44 0c ff ff ...h..p}{P80D... 00f0: ff 00 00 79 69 0a 18 00 00 50 38 30 44 70 50 38 ...yi....P80DpP8 0100: 30 44 50 38 30 48 14 0c 5f 50 49 43 01 70 68 47 0DP80H.._PIC.phG 0110: 50 49 43 14 46 06 5f 50 54 53 01 70 00 50 38 30 PIC.F._PTS.p.P80 0120: 44 50 38 58 48 00 68 a0 1e 93 68 0a 03 70 01 5c DP8XH.h...h..p.\ 0130: 2f 05 5f 53 42 5f 50 43 49 30 4c 50 43 42 45 43 /._SB_PCI0LPCBEC 0140: 30 5f 53 33 4c 44 a0 33 93 68 0a 04 70 01 5c 2f 0_S3LD.3.h..p.\/ 0150: 05 5f 53 42 5f 50 43 49 30 4c 50 43 42 45 43 30 ._SB_PCI0LPCBEC0 0160: 5f 53 33 4c 44 5c 2f 04 5f 53 42 5f 50 43 49 30 _S3LD\/._SB_PCI0 0170: 4c 50 43 42 50 48 53 53 0a 0e 14 4c 1c 5f 57 41 LPCBPHSS...L._WA 0180: 4b 01 50 38 58 48 01 0a ab a0 30 91 93 68 0a 03 K.P8XH....0..h.. 0190: 93 68 0a 04 a0 25 7b 43 46 47 44 0c 00 00 00 01 .h...%{CFGD..... 01a0: 00 a0 18 90 7b 43 46 47 44 0a f0 00 93 4f 53 59 ....{CFGD....OSY 01b0: 53 0b d1 07 54 52 41 50 0a 3d a0 18 93 52 50 31 S...TRAP.=...RP1 01c0: 44 00 86 5c 2f 03 5f 53 42 5f 50 43 49 30 52 50 D..\/._SB_PCI0RP 01d0: 30 31 00 a0 18 93 52 50 32 44 00 86 5c 2f 03 5f 01....RP2D..\/._ 01e0: 53 42 5f 50 43 49 30 52 50 30 32 00 a0 18 93 52 SB_PCI0RP02....R 01f0: 50 33 44 00 86 5c 2f 03 5f 53 42 5f 50 43 49 30 P3D..\/._SB_PCI0 0200: 52 50 30 33 00 a0 18 93 52 50 34 44 00 86 5c 2f RP03....RP4D..\/ 0210: 03 5f 53 42 5f 50 43 49 30 52 50 30 34 00 a0 18 ._SB_PCI0RP04... 0220: 93 52 50 35 44 00 86 5c 2f 03 5f 53 42 5f 50 43 .RP5D..\/._SB_PC 0230: 49 30 52 50 30 35 00 a0 18 93 52 50 36 44 00 86 I0RP05....RP6D.. 0240: 5c 2f 03 5f 53 42 5f 50 43 49 30 52 50 30 36 00 \/._SB_PCI0RP06. 0250: a0 12 93 68 0a 03 50 38 58 48 00 0a 30 54 52 41 ...h..P8XH..0TRA 0260: 50 0a 46 a0 43 0d 93 68 0a 04 50 38 58 48 00 0a P.F.C..h..P8XH.. 0270: 40 5c 2f 04 5f 53 42 5f 50 43 49 30 4c 50 43 42 @\/._SB_PCI0LPCB 0280: 50 48 53 53 0a 0f 70 57 41 4b 46 60 70 00 57 41 PHSS..pWAKF`p.WA 0290: 4b 46 7b 60 0a 05 60 a0 18 93 60 01 50 38 58 48 KF{`..`...`.P8XH 02a0: 00 0a 41 86 5c 2e 5f 53 42 5f 50 57 52 42 0a 02 ..A.\._SB_PWRB.. 02b0: a0 46 08 44 54 53 45 54 52 41 50 0a 47 a0 42 06 .F.DTSETRAP.G.B. 02c0: 90 5c 2f 04 5f 53 42 5f 50 43 49 30 4c 50 43 42 .\/._SB_PCI0LPCB 02d0: 45 43 4f 4b 93 45 43 44 59 00 a0 27 92 95 44 54 ECOK.ECDY..'..DT 02e0: 53 31 44 54 53 32 70 44 54 53 31 5c 2f 05 5f 53 S1DTS2pDTS1\/._S 02f0: 42 5f 50 43 49 30 4c 50 43 42 45 43 30 5f 53 4b B_PCI0LPCBEC0_SK 0300: 54 41 a1 1d 70 44 54 53 32 5c 2f 05 5f 53 42 5f TA..pDTS2\/._SB_ 0310: 50 43 49 30 4c 50 43 42 45 43 30 5f 53 4b 54 41 PCI0LPCBEC0_SKTA 0320: a1 16 5c 2f 04 5f 53 42 5f 50 43 49 30 4c 50 43 ..\/._SB_PCI0LPC 0330: 42 50 48 53 53 0a 10 5c 2e 5f 50 52 5f 52 50 50 BPHSS..\._PR_RPP 0340: 43 a4 12 04 02 00 00 14 1e 47 45 54 42 0b 77 68 C........GETB.wh 0350: 0a 08 60 77 69 0a 08 61 5b 13 6a 60 61 54 42 46 ..`wi..a[.j`aTBF 0360: 33 a4 54 42 46 33 14 42 09 50 4e 4f 54 08 a0 4a 3.TBF3.B.PNOT..J 0370: 06 4d 50 45 4e a0 31 7b 50 44 43 30 0a 08 00 86 .MPEN.1{PDC0.... 0380: 5c 2e 5f 50 52 5f 43 50 55 30 0a 80 a0 1a 7b 50 \._PR_CPU0....{P 0390: 44 43 30 0a 10 00 5b 22 0a 64 86 5c 2e 5f 50 52 DC0...[".d.\._PR 03a0: 5f 43 50 55 30 0a 81 a0 31 7b 50 44 43 31 0a 08 _CPU0...1{PDC1.. 03b0: 00 86 5c 2e 5f 50 52 5f 43 50 55 31 0a 80 a0 1a ..\._PR_CPU1.... 03c0: 7b 50 44 43 31 0a 10 00 5b 22 0a 64 86 5c 2e 5f {PDC1...[".d.\._ 03d0: 50 52 5f 43 50 55 31 0a 81 a1 1f 86 5c 2e 5f 50 PR_CPU1.....\._P 03e0: 52 5f 43 50 55 30 0a 80 5b 22 0a 64 86 5c 2e 5f R_CPU0..[".d.\._ 03f0: 50 52 5f 43 50 55 30 0a 81 14 17 54 52 41 50 09 PR_CPU0....TRAP. 0400: 70 68 53 4d 49 46 70 00 54 52 50 30 a4 53 4d 49 phSMIFp.TRP0.SMI 0410: 46 10 41 0f 5f 53 42 5f 14 4a 0e 5f 49 4e 49 00 F.A._SB_.J._INI. 0420: 70 0b 99 99 4d 41 52 4b a0 1c 44 54 53 45 54 52 p...MARK..DTSETR 0430: 41 50 0a 47 5e 2f 03 50 43 49 30 4c 50 43 42 50 AP.G^/.PCI0LPCBP 0440: 48 53 53 0a 10 70 0b d0 07 4f 53 59 53 a0 4a 09 HSS..p...OSYS.J. 0450: 5b 12 5f 4f 53 49 60 a0 18 5f 4f 53 49 0d 4d 69 [._OSI`.._OSI.Mi 0460: 6e 69 78 00 70 01 4c 49 4e 58 70 00 45 43 44 59 nix.p.LINXp.ECDY 0470: a0 1b 5f 4f 53 49 0d 57 69 6e 64 6f 77 73 20 32 .._OSI.Windows 2 0480: 30 30 31 00 70 0b d1 07 4f 53 59 53 a0 1f 5f 4f 001.p...OSYS.._O 0490: 53 49 0d 57 69 6e 64 6f 77 73 20 32 30 30 31 20 SI.Windows 2001 04a0: 53 50 31 00 70 0b d1 07 4f 53 59 53 a0 1f 5f 4f SP1.p...OSYS.._O 04b0: 53 49 0d 57 69 6e 64 6f 77 73 20 32 30 30 31 20 SI.Windows 2001 04c0: 53 50 32 00 70 0b d2 07 4f 53 59 53 a0 1b 5f 4f SP2.p...OSYS.._O 04d0: 53 49 0d 57 69 6e 64 6f 77 73 20 32 30 30 36 00 SI.Windows 2006. 04e0: 70 0b d6 07 4f 53 59 53 a0 14 90 4d 50 45 4e 93 p...OSYS...MPEN. 04f0: 4f 53 59 53 0b d1 07 54 52 41 50 0a 3d 54 52 41 OSYS...TRAP.=TRA 0500: 50 0a 2b 5b 80 47 4e 56 53 00 0c bc 2d 6e bf 0b P.+[.GNVS...-n.. 0510: 00 01 5b 81 45 24 47 4e 56 53 10 4f 53 59 53 10 ..[.E$GNVS.OSYS. 0520: 53 4d 49 46 08 50 52 4d 30 08 50 52 4d 31 08 53 SMIF.PRM0.PRM1.S 0530: 43 49 46 08 50 52 4d 32 08 50 52 4d 33 08 4c 43 CIF.PRM2.PRM3.LC 0540: 4b 46 08 50 52 4d 34 08 50 52 4d 35 08 50 38 30 KF.PRM4.PRM5.P80 0550: 44 20 4c 49 44 53 08 50 57 52 53 08 44 42 47 53 D LIDS.PWRS.DBGS 0560: 08 4c 49 4e 58 08 00 08 41 43 54 31 08 41 43 54 .LINX...ACT1.ACT 0570: 54 08 50 53 56 54 08 54 43 31 56 08 54 43 32 56 T.PSVT.TC1V.TC2V 0580: 08 54 53 50 56 08 43 52 54 54 08 44 54 53 45 08 .TSPV.CRTT.DTSE. 0590: 44 54 53 31 08 44 54 53 32 08 00 40 05 41 50 49 DTS1.DTS2..@.API 05a0: 43 08 4d 50 45 4e 08 50 43 50 30 08 50 43 50 31 C.MPEN.PCP0.PCP1 05b0: 08 50 50 43 4d 08 00 28 43 4d 41 50 08 43 4d 42 .PPCM..(CMAP.CMB 05c0: 50 08 4c 50 54 50 08 46 44 43 50 08 00 30 49 47 P.LPTP.FDCP..0IG 05d0: 44 53 08 54 4c 53 54 08 43 41 44 4c 08 50 41 44 DS.TLST.CADL.PAD 05e0: 4c 08 43 53 54 45 10 4e 53 54 45 10 53 53 54 45 L.CSTE.NSTE.SSTE 05f0: 10 4e 44 49 44 08 44 49 44 31 20 44 49 44 32 20 .NDID.DID1 DID2 0600: 44 49 44 33 20 44 49 44 34 20 44 49 44 35 20 00 DID3 DID4 DID5 . 0610: 40 06 42 4c 43 53 08 42 52 54 4c 08 41 4c 53 45 @.BLCS.BRTL.ALSE 0620: 08 41 4c 41 46 08 4c 4c 4f 57 08 4c 48 49 48 08 .ALAF.LLOW.LHIH. 0630: 00 08 45 4d 41 45 08 45 4d 41 50 10 45 4d 41 4c ..EMAE.EMAP.EMAL 0640: 10 00 08 4d 45 46 45 08 00 18 54 50 4d 50 08 54 ...MEFE...TPMP.T 0650: 50 4d 45 08 00 40 04 47 54 46 30 38 47 54 46 32 PME..@.GTF08GTF2 0660: 38 49 44 45 4d 08 47 54 46 31 38 00 40 09 41 53 8IDEM.GTF18.@.AS 0670: 4c 42 20 49 42 54 54 08 49 50 41 54 08 49 54 56 LB IBTT.IPAT.ITV 0680: 46 08 49 54 56 4d 08 49 50 53 43 08 49 42 4c 43 F.ITVM.IPSC.IBLC 0690: 08 49 42 49 41 08 49 53 53 43 08 49 34 30 39 08 .IBIA.ISSC.I409. 06a0: 49 35 30 39 08 49 36 30 39 08 49 37 30 39 08 49 I509.I609.I709.I 06b0: 44 4d 4d 08 49 44 4d 53 08 49 46 31 45 08 48 56 DMM.IDMS.IF1E.HV 06c0: 43 4f 08 4e 58 44 31 20 4e 58 44 32 20 4d 41 52 CO.NXD1 NXD2 MAR 06d0: 4b 10 42 52 41 44 08 42 54 45 4e 08 56 56 45 4e K.BRAD.BTEN.VVEN 06e0: 08 42 47 54 4c 08 54 4d 45 45 01 00 07 53 43 55 .BGTL.TMEE...SCU 06f0: 30 01 53 43 55 31 01 53 43 55 32 01 53 43 55 33 0.SCU1.SCU2.SCU3 0700: 01 00 04 58 4b 53 50 01 58 4b 49 4e 01 58 4b 49 ...XKSP.XKIN.XKI 0710: 44 01 58 4b 4f 4b 01 00 04 42 47 55 31 08 42 53 D.XKOK...BGU1.BS 0720: 54 31 08 42 46 43 31 10 57 4b 4c 4e 08 57 41 4b T1.BFC1.WKLN.WAK 0730: 46 08 44 53 4d 44 08 42 41 59 53 08 48 41 50 45 F.DSMD.BAYS.HAPE 0740: 01 00 07 44 54 53 4d 01 00 07 4f 44 54 31 08 4f ...DTSM...ODT1.O 0750: 44 54 32 08 44 54 53 57 08 08 44 53 45 4e 01 08 DT2.DTSW..DSEN.. 0760: 45 43 4f 4e 00 08 47 50 49 43 00 08 43 54 59 50 ECON..GPIC..CTYP 0770: 00 08 4c 30 31 43 00 08 56 46 4e 30 00 08 56 46 ..L01C..VFN0..VF 0780: 4e 31 00 10 4a 7c 5f 47 50 45 14 46 35 5f 4c 30 N1..J|_GPE.F5_L0 0790: 31 00 72 4c 30 31 43 01 4c 30 31 43 50 38 58 48 1.rL01C.L01CP8XH 07a0: 00 01 50 38 58 48 01 4c 30 31 43 a0 48 08 90 93 ..P8XH.L01C.H... 07b0: 52 50 31 44 00 5c 2f 04 5f 53 42 5f 50 43 49 30 RP1D.\/._SB_PCI0 07c0: 52 50 30 31 48 50 53 58 5b 22 0a 64 a0 40 05 5c RP01HPSX[".d.@.\ 07d0: 2f 04 5f 53 42 5f 50 43 49 30 52 50 30 31 50 44 /._SB_PCI0RP01PD 07e0: 43 58 70 01 5c 2f 04 5f 53 42 5f 50 43 49 30 52 CXp.\/._SB_PCI0R 07f0: 50 30 31 50 44 43 58 70 01 5c 2f 04 5f 53 42 5f P01PDCXp.\/._SB_ 0800: 50 43 49 30 52 50 30 31 48 50 53 58 86 5c 2f 03 PCI0RP01HPSX.\/. 0810: 5f 53 42 5f 50 43 49 30 52 50 30 31 00 a1 16 70 _SB_PCI0RP01...p 0820: 01 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 30 31 .\/._SB_PCI0RP01 0830: 48 50 53 58 a0 48 08 90 93 52 50 32 44 00 5c 2f HPSX.H...RP2D.\/ 0840: 04 5f 53 42 5f 50 43 49 30 52 50 30 32 48 50 53 ._SB_PCI0RP02HPS 0850: 58 5b 22 0a 64 a0 40 05 5c 2f 04 5f 53 42 5f 50 X[".d.@.\/._SB_P 0860: 43 49 30 52 50 30 32 50 44 43 58 70 01 5c 2f 04 CI0RP02PDCXp.\/. 0870: 5f 53 42 5f 50 43 49 30 52 50 30 32 50 44 43 58 _SB_PCI0RP02PDCX 0880: 70 01 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 30 p.\/._SB_PCI0RP0 0890: 32 48 50 53 58 86 5c 2f 03 5f 53 42 5f 50 43 49 2HPSX.\/._SB_PCI 08a0: 30 52 50 30 32 00 a1 16 70 01 5c 2f 04 5f 53 42 0RP02...p.\/._SB 08b0: 5f 50 43 49 30 52 50 30 32 48 50 53 58 a0 48 08 _PCI0RP02HPSX.H. 08c0: 90 93 52 50 33 44 00 5c 2f 04 5f 53 42 5f 50 43 ..RP3D.\/._SB_PC 08d0: 49 30 52 50 30 33 48 50 53 58 5b 22 0a 64 a0 40 I0RP03HPSX[".d.@ 08e0: 05 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 30 33 .\/._SB_PCI0RP03 08f0: 50 44 43 58 70 01 5c 2f 04 5f 53 42 5f 50 43 49 PDCXp.\/._SB_PCI 0900: 30 52 50 30 33 50 44 43 58 70 01 5c 2f 04 5f 53 0RP03PDCXp.\/._S 0910: 42 5f 50 43 49 30 52 50 30 33 48 50 53 58 86 5c B_PCI0RP03HPSX.\ 0920: 2f 03 5f 53 42 5f 50 43 49 30 52 50 30 33 00 a1 /._SB_PCI0RP03.. 0930: 16 70 01 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 .p.\/._SB_PCI0RP 0940: 30 33 48 50 53 58 a0 48 08 90 93 52 50 34 44 00 03HPSX.H...RP4D. 0950: 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 30 34 48 \/._SB_PCI0RP04H 0960: 50 53 58 5b 22 0a 64 a0 40 05 5c 2f 04 5f 53 42 PSX[".d.@.\/._SB 0970: 5f 50 43 49 30 52 50 30 34 50 44 43 58 70 01 5c _PCI0RP04PDCXp.\ 0980: 2f 04 5f 53 42 5f 50 43 49 30 52 50 30 34 50 44 /._SB_PCI0RP04PD 0990: 43 58 70 01 5c 2f 04 5f 53 42 5f 50 43 49 30 52 CXp.\/._SB_PCI0R 09a0: 50 30 34 48 50 53 58 86 5c 2f 03 5f 53 42 5f 50 P04HPSX.\/._SB_P 09b0: 43 49 30 52 50 30 34 00 a1 16 70 01 5c 2f 04 5f CI0RP04...p.\/._ 09c0: 53 42 5f 50 43 49 30 52 50 30 34 48 50 53 58 a0 SB_PCI0RP04HPSX. 09d0: 48 08 90 93 52 50 35 44 00 5c 2f 04 5f 53 42 5f H...RP5D.\/._SB_ 09e0: 50 43 49 30 52 50 30 35 48 50 53 58 5b 22 0a 64 PCI0RP05HPSX[".d 09f0: a0 40 05 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 .@.\/._SB_PCI0RP 0a00: 30 35 50 44 43 58 70 01 5c 2f 04 5f 53 42 5f 50 05PDCXp.\/._SB_P 0a10: 43 49 30 52 50 30 35 50 44 43 58 70 01 5c 2f 04 CI0RP05PDCXp.\/. 0a20: 5f 53 42 5f 50 43 49 30 52 50 30 35 48 50 53 58 _SB_PCI0RP05HPSX 0a30: 86 5c 2f 03 5f 53 42 5f 50 43 49 30 52 50 30 35 .\/._SB_PCI0RP05 0a40: 00 a1 16 70 01 5c 2f 04 5f 53 42 5f 50 43 49 30 ...p.\/._SB_PCI0 0a50: 52 50 30 35 48 50 53 58 a0 48 08 90 93 52 50 36 RP05HPSX.H...RP6 0a60: 44 00 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 30 D.\/._SB_PCI0RP0 0a70: 36 48 50 53 58 5b 22 0a 64 a0 40 05 5c 2f 04 5f 6HPSX[".d.@.\/._ 0a80: 53 42 5f 50 43 49 30 52 50 30 36 50 44 43 58 70 SB_PCI0RP06PDCXp 0a90: 01 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 30 36 .\/._SB_PCI0RP06 0aa0: 50 44 43 58 70 01 5c 2f 04 5f 53 42 5f 50 43 49 PDCXp.\/._SB_PCI 0ab0: 30 52 50 30 36 48 50 53 58 86 5c 2f 03 5f 53 42 0RP06HPSX.\/._SB 0ac0: 5f 50 43 49 30 52 50 30 36 00 a1 16 70 01 5c 2f _PCI0RP06...p.\/ 0ad0: 04 5f 53 42 5f 50 43 49 30 52 50 30 36 48 50 53 ._SB_PCI0RP06HPS 0ae0: 58 14 42 0d 5f 4c 30 32 00 70 00 47 50 45 43 a0 X.B._L02.p.GPEC. 0af0: 4d 0a 5c 2f 04 5f 53 42 5f 50 43 49 30 4c 50 43 M.\/._SB_PCI0LPC 0b00: 42 45 43 4f 4b a0 4e 04 93 44 54 53 57 01 a0 27 BECOK.N..DTSW..' 0b10: 92 95 44 54 53 31 44 54 53 32 70 44 54 53 31 5c ..DTS1DTS2pDTS1\ 0b20: 2f 05 5f 53 42 5f 50 43 49 30 4c 50 43 42 45 43 /._SB_PCI0LPCBEC 0b30: 30 5f 53 4b 54 41 a1 1d 70 44 54 53 32 5c 2f 05 0_SKTA..pDTS2\/. 0b40: 5f 53 42 5f 50 43 49 30 4c 50 43 42 45 43 30 5f _SB_PCI0LPCBEC0_ 0b50: 53 4b 54 41 a1 48 04 a0 27 92 95 4f 44 54 31 4f SKTA.H..'..ODT1O 0b60: 44 54 32 70 4f 44 54 31 5c 2f 05 5f 53 42 5f 50 DT2pODT1\/._SB_P 0b70: 43 49 30 4c 50 43 42 45 43 30 5f 53 4b 54 41 a1 CI0LPCBEC0_SKTA. 0b80: 1d 70 4f 44 54 32 5c 2f 05 5f 53 42 5f 50 43 49 .pODT2\/._SB_PCI 0b90: 30 4c 50 43 42 45 43 30 5f 53 4b 54 41 a1 16 5c 0LPCBEC0_SKTA..\ 0ba0: 2f 04 5f 53 42 5f 50 43 49 30 4c 50 43 42 50 48 /._SB_PCI0LPCBPH 0bb0: 53 53 0a 10 14 18 5f 4c 30 33 00 86 5c 2f 03 5f SS...._L03..\/._ 0bc0: 53 42 5f 50 43 49 30 55 53 42 31 0a 02 14 18 5f SB_PCI0USB1...._ 0bd0: 4c 30 34 00 86 5c 2f 03 5f 53 42 5f 50 43 49 30 L04..\/._SB_PCI0 0be0: 55 53 42 32 0a 02 14 18 5f 4c 30 35 00 86 5c 2f USB2...._L05..\/ 0bf0: 03 5f 53 42 5f 50 43 49 30 55 53 42 35 0a 02 14 ._SB_PCI0USB5... 0c00: 36 5f 4c 30 36 00 a0 27 5c 2f 04 5f 53 42 5f 50 6_L06..'\/._SB_P 0c10: 43 49 30 47 46 58 30 47 53 53 45 5c 2f 04 5f 53 CI0GFX0GSSE\/._S 0c20: 42 5f 50 43 49 30 47 46 58 30 47 53 43 49 a1 07 B_PCI0GFX0GSCI.. 0c30: 70 01 53 43 49 53 14 43 1f 5f 4c 30 39 00 a0 41 p.SCIS.C._L09..A 0c40: 05 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 30 31 .\/._SB_PCI0RP01 0c50: 50 53 50 58 70 01 5c 2f 04 5f 53 42 5f 50 43 49 PSPXp.\/._SB_PCI 0c60: 30 52 50 30 31 50 53 50 58 70 01 5c 2f 04 5f 53 0RP01PSPXp.\/._S 0c70: 42 5f 50 43 49 30 52 50 30 31 50 4d 53 58 86 5c B_PCI0RP01PMSX.\ 0c80: 2f 03 5f 53 42 5f 50 43 49 30 52 50 30 31 0a 02 /._SB_PCI0RP01.. 0c90: a0 41 05 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 .A.\/._SB_PCI0RP 0ca0: 30 32 50 53 50 58 70 01 5c 2f 04 5f 53 42 5f 50 02PSPXp.\/._SB_P 0cb0: 43 49 30 52 50 30 32 50 53 50 58 70 01 5c 2f 04 CI0RP02PSPXp.\/. 0cc0: 5f 53 42 5f 50 43 49 30 52 50 30 32 50 4d 53 58 _SB_PCI0RP02PMSX 0cd0: 86 5c 2f 03 5f 53 42 5f 50 43 49 30 52 50 30 32 .\/._SB_PCI0RP02 0ce0: 0a 02 a0 41 05 5c 2f 04 5f 53 42 5f 50 43 49 30 ...A.\/._SB_PCI0 0cf0: 52 50 30 33 50 53 50 58 70 01 5c 2f 04 5f 53 42 RP03PSPXp.\/._SB 0d00: 5f 50 43 49 30 52 50 30 33 50 53 50 58 70 01 5c _PCI0RP03PSPXp.\ 0d10: 2f 04 5f 53 42 5f 50 43 49 30 52 50 30 33 50 4d /._SB_PCI0RP03PM 0d20: 53 58 86 5c 2f 03 5f 53 42 5f 50 43 49 30 52 50 SX.\/._SB_PCI0RP 0d30: 30 33 0a 02 a0 41 05 5c 2f 04 5f 53 42 5f 50 43 03...A.\/._SB_PC 0d40: 49 30 52 50 30 34 50 53 50 58 70 01 5c 2f 04 5f I0RP04PSPXp.\/._ 0d50: 53 42 5f 50 43 49 30 52 50 30 34 50 53 50 58 70 SB_PCI0RP04PSPXp 0d60: 01 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 30 34 .\/._SB_PCI0RP04 0d70: 50 4d 53 58 86 5c 2f 03 5f 53 42 5f 50 43 49 30 PMSX.\/._SB_PCI0 0d80: 52 50 30 34 0a 02 a0 41 05 5c 2f 04 5f 53 42 5f RP04...A.\/._SB_ 0d90: 50 43 49 30 52 50 30 35 50 53 50 58 70 01 5c 2f PCI0RP05PSPXp.\/ 0da0: 04 5f 53 42 5f 50 43 49 30 52 50 30 35 50 53 50 ._SB_PCI0RP05PSP 0db0: 58 70 01 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 Xp.\/._SB_PCI0RP 0dc0: 30 35 50 4d 53 58 86 5c 2f 03 5f 53 42 5f 50 43 05PMSX.\/._SB_PC 0dd0: 49 30 52 50 30 35 0a 02 a0 41 05 5c 2f 04 5f 53 I0RP05...A.\/._S 0de0: 42 5f 50 43 49 30 52 50 30 36 50 53 50 58 70 01 B_PCI0RP06PSPXp. 0df0: 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 30 36 50 \/._SB_PCI0RP06P 0e00: 53 50 58 70 01 5c 2f 04 5f 53 42 5f 50 43 49 30 SPXp.\/._SB_PCI0 0e10: 52 50 30 36 50 4d 53 58 86 5c 2f 03 5f 53 42 5f RP06PMSX.\/._SB_ 0e20: 50 43 49 30 52 50 30 36 0a 02 14 18 5f 4c 30 42 PCI0RP06...._L0B 0e30: 00 86 5c 2f 03 5f 53 42 5f 50 43 49 30 50 43 49 ..\/._SB_PCI0PCI 0e40: 42 0a 02 14 18 5f 4c 30 43 00 86 5c 2f 03 5f 53 B...._L0C..\/._S 0e50: 42 5f 50 43 49 30 55 53 42 33 0a 02 14 4b 0b 5f B_PCI0USB3...K._ 0e60: 4c 30 44 00 a0 3b 5c 2f 04 5f 53 42 5f 50 43 49 L0D..;\/._SB_PCI 0e70: 30 45 48 43 31 50 4d 45 53 70 01 5c 2f 04 5f 53 0EHC1PMESp.\/._S 0e80: 42 5f 50 43 49 30 45 48 43 31 50 4d 45 53 86 5c B_PCI0EHC1PMES.\ 0e90: 2f 03 5f 53 42 5f 50 43 49 30 45 48 43 31 0a 02 /._SB_PCI0EHC1.. 0ea0: a0 3b 5c 2f 04 5f 53 42 5f 50 43 49 30 45 48 43 .;\/._SB_PCI0EHC 0eb0: 32 50 4d 45 53 70 01 5c 2f 04 5f 53 42 5f 50 43 2PMESp.\/._SB_PC 0ec0: 49 30 45 48 43 32 50 4d 45 53 86 5c 2f 03 5f 53 I0EHC2PMES.\/._S 0ed0: 42 5f 50 43 49 30 45 48 43 32 0a 02 a0 3b 5c 2f B_PCI0EHC2...;\/ 0ee0: 04 5f 53 42 5f 50 43 49 30 48 44 45 46 50 4d 45 ._SB_PCI0HDEFPME 0ef0: 53 70 01 5c 2f 04 5f 53 42 5f 50 43 49 30 48 44 Sp.\/._SB_PCI0HD 0f00: 45 46 50 4d 45 53 86 5c 2f 03 5f 53 42 5f 50 43 EFPMES.\/._SB_PC 0f10: 49 30 48 44 45 46 0a 02 14 18 5f 4c 30 45 00 86 I0HDEF...._L0E.. 0f20: 5c 2f 03 5f 53 42 5f 50 43 49 30 55 53 42 34 0a \/._SB_PCI0USB4. 0f30: 02 14 1c 5f 4c 31 42 00 80 4c 50 4f 4c 4c 50 4f ..._L1B..LPOLLPO 0f40: 4c 86 5c 2e 5f 53 42 5f 4c 49 44 30 0a 80 10 46 L.\._SB_LID0...F 0f50: 0b 5f 50 52 5f 5b 83 0b 43 50 55 30 00 10 10 00 ._PR_[..CPU0.... 0f60: 00 06 5b 83 0b 43 50 55 31 01 10 10 00 00 06 14 ..[..CPU1....... 0f70: 45 09 52 50 50 43 00 a0 4d 08 93 4f 53 59 53 0b E.RPPC..M..OSYS. 0f80: d2 07 a0 42 08 7b 43 46 47 44 01 00 a0 42 04 94 ...B.{CFGD...B.. 0f90: 5e 2e 43 50 55 30 5f 50 50 43 00 74 5e 2e 43 50 ^.CPU0_PPC.t^.CP 0fa0: 55 30 5f 50 50 43 01 5e 2e 43 50 55 30 5f 50 50 U0_PPC.^.CPU0_PP 0fb0: 43 50 4e 4f 54 72 5e 2e 43 50 55 30 5f 50 50 43 CPNOTr^.CPU0_PPC 0fc0: 01 5e 2e 43 50 55 30 5f 50 50 43 50 4e 4f 54 a1 .^.CPU0_PPCPNOT. 0fd0: 35 72 5e 2e 43 50 55 30 5f 50 50 43 01 5e 2e 43 5r^.CPU0_PPC.^.C 0fe0: 50 55 30 5f 50 50 43 50 4e 4f 54 74 5e 2e 43 50 PU0_PPCPNOTt^.CP 0ff0: 55 30 5f 50 50 43 01 5e 2e 43 50 55 30 5f 50 50 U0_PPC.^.CPU0_PP 1000: 43 50 4e 4f 54 08 46 57 53 4f 0d 46 57 53 4f 00 CPNOT.FWSO.FWSO. 1010: 08 5f 50 53 43 00 14 12 5f 50 53 30 00 70 5f 50 ._PSC..._PS0.p_P 1020: 53 43 60 70 00 5f 50 53 43 14 0d 5f 50 53 33 00 SC`p._PSC.._PS3. 1030: 70 0a 03 5f 50 53 43 10 8c fb 04 5f 53 42 5f 5b p.._PSC...._SB_[ 1040: 82 4f 3e 41 4d 57 30 08 5f 48 49 44 0d 70 6e 70 .O>AMW0._HID.pnp 1050: 30 63 31 34 00 08 5f 55 49 44 00 08 5f 57 44 47 0c14.._UID.._WDG 1060: 11 3f 0a 3c a7 1d 85 2e 53 d0 5f 49 9d fa 1a 4a .?.<....S._I...J 1070: d6 2e 6a 86 41 43 01 00 3b 6d 43 71 dd fb 72 4c ..j.AC..;mCq..rL 1080: bc b8 43 5b fe 0d 64 f9 42 43 01 00 21 12 90 05 ..C[..d.BC..!... 1090: 66 d5 d1 11 b2 f0 00 a0 c9 06 29 10 42 41 01 00 f.........).BA.. 10a0: 08 53 54 41 43 11 07 0a 04 01 14 03 00 14 1f 57 .STAC..........W 10b0: 51 41 43 01 70 0d 4d 58 4d 54 43 43 6f 6e 66 69 QAC.p.MXMTCConfi 10c0: 67 44 61 74 61 00 5b 31 a4 53 54 41 43 08 53 54 gData.[1.STAC.ST 10d0: 42 43 11 07 0a 04 01 00 00 00 14 34 57 51 42 43 BC.........4WQBC 10e0: 01 70 0d 47 65 74 20 4d 58 4d 54 43 43 6f 6e 74 .p.Get MXMTCCont 10f0: 72 6f 6c 44 61 74 61 3a 20 53 54 42 43 20 3d 20 rolData: STBC = 1100: 00 5b 31 70 53 54 42 43 5b 31 a4 53 54 42 43 14 .[1pSTBC[1.STBC. 1110: 47 06 57 53 42 43 02 70 69 53 54 42 43 70 0d 53 G.WSBC.piSTBCp.S 1120: 65 74 20 4d 58 4d 54 43 43 6f 6e 74 72 6f 6c 44 et MXMTCControlD 1130: 61 74 61 3a 20 53 54 42 43 20 3d 20 00 5b 31 70 ata: STBC = .[1p 1140: 53 54 42 43 5b 31 a0 30 93 5e 5e 2f 03 50 43 49 STBC[1.0.^^/.PCI 1150: 30 4c 50 43 42 45 43 4f 4b 01 70 83 88 53 54 42 0LPCBECOK.p..STB 1160: 43 01 00 5e 5e 2f 04 50 43 49 30 4c 50 43 42 45 C..^^/.PCI0LPCBE 1170: 43 30 5f 53 4b 54 43 08 57 51 42 41 11 43 2b 0b C0_SKTC.WQBA.C+. 1180: ae 02 46 4f 4d 42 01 00 00 00 9e 02 00 00 c0 0b ..FOMB.......... 1190: 00 00 44 53 00 01 1a 7d da 54 28 d9 85 00 01 06 ..DS...}.T(..... 11a0: 18 42 10 07 10 0a 4b 61 02 c9 21 52 3c 18 94 05 .B....Ka..!R<... 11b0: 10 43 88 57 04 44 04 84 bc 0a b0 29 c0 24 88 fa .C.W.D.....).$.. 11c0: f7 87 28 09 0e 25 04 42 12 05 98 17 a0 5b 80 61 ..(..%.B.....[.a 11d0: 01 b6 05 98 16 e0 18 92 4a 03 a7 04 96 02 21 a1 ........J.....!. 11e0: 02 94 0b f0 2d 40 3b a2 24 0b b0 0c 23 02 8f 82 ....-@;.$...#... 11f0: a1 71 68 ec 30 2c 13 4c 83 38 8c b2 91 45 60 dc .qh.0,.L.8...E`. 1200: 4e 05 c8 15 20 4c 80 78 54 61 34 07 45 e0 42 63 N... L.xTa4.E.Bc 1210: 64 40 c8 a3 00 ab a3 d0 a4 12 d8 bd 00 65 02 2c d@...........e., 1220: 0a 10 27 c0 9a 00 63 48 32 28 40 9b 00 5b 20 42 ..'...cH2(@..[ B 1230: 0f d4 19 8a 46 70 02 51 6a 46 11 48 ac 1a 01 85 ....Fp.QjF.H.... 1240: 12 34 46 b0 10 81 c2 86 37 46 98 03 88 d1 fe 20 .4F.....7F..... 1250: 48 20 05 e3 66 91 46 83 1a 6b 82 63 f7 68 4e b8 H ..f.F..k.c.hN. 1260: 73 01 d2 e7 26 90 a3 3b b8 3a 07 4d 86 c7 b0 1e s...&..;.:.M.... 1270: 06 d8 29 00 ef 1a 50 d3 3f 78 26 08 0e 35 44 8f ..)...P.?x&..5D. 1280: 3a dc 09 1c fb 91 30 88 b3 3b 6e ac c3 c9 68 d0 :.....0..;n...h. 1290: a5 0a 30 7b 00 d0 d0 12 9c f6 99 84 7e 0f 38 9f ..0{........~.8. 12a0: 9e 21 89 fc 41 a0 46 e6 ff 3f b4 c7 78 5a 31 43 .!..A.F..?..xZ1C 12b0: 3e 0b 1c 16 13 0b a1 4d 6a 3c 40 40 e1 d1 40 08 >......Mj<@@..@. 12c0: 6f 06 9e af 09 46 86 90 93 f1 a0 06 e0 41 d7 3a o....F.......A.: 12d0: 32 8d 27 a6 21 cf e8 00 22 bf 32 78 0c 41 02 f9 2.'.!...".2x.A.. 12e0: c4 60 b8 c7 81 13 78 02 f0 59 40 10 92 00 21 51 .`....x..Y@...!Q 12f0: e3 a7 47 08 7e 7a 78 93 30 28 1f d2 99 f9 90 e1 ..G.~zx.0(...... 1300: 11 c2 07 c4 7b 9f 3b 19 c1 29 7b a4 e0 b0 7e 0e ....{.;..){...~. 1310: 20 c0 af 0f 8f 0d 09 7c ae 08 8c 1d aa fd 0a 40 ......|.......@ 1320: 08 1e ed 51 e0 54 23 1c 2d 78 08 8a 1c 03 4a cc ...Q.T#.-x....J. 1330: 18 50 03 38 85 d0 e7 73 04 47 14 25 f6 21 19 da .P.8...s.G.%.!.. 1340: 08 e1 1f 39 4e c1 f7 8b 23 3d ad 23 78 91 f0 08 ...9N...#=.#x... 1350: 30 e1 ce 28 a8 38 30 f4 ff 7f 4c 01 dc 7a 3b a6 0..(.80...L..z;. 1360: 80 3e c0 31 05 50 fc ff 3f a6 00 87 a8 c7 14 f4 .>.1.P..?....... 1370: 40 0c 7c 2e a1 0d ff 96 c1 8e 03 87 74 6a 8f 28 @.|.........tj.( 1380: 80 29 79 47 14 50 8c 14 d6 f1 04 18 05 3c 9b a0 .)yG.P.......<.. 1390: 22 1d 4f 80 ce ff ff 78 02 58 b8 9a bc 92 84 7d ".O....x.X.....} 13a0: 1e 78 1d 89 14 e3 41 e2 b5 e4 c1 24 46 98 08 8f .x....A....$F... 13b0: 27 1e 47 c0 b7 82 28 91 8e 3e c4 83 49 28 63 3e '.G...(..>..I(c> 13c0: a3 84 89 f9 04 70 22 ef 27 46 0a 73 2a 8f 27 2c .....p".'F.s*.', 13d0: c4 f1 04 a0 85 e2 e3 09 3a 2c 84 fe ff c7 13 dc ........:,...... 13e0: e1 c1 a7 0c fc 85 0c c6 f9 04 30 24 f0 7c 02 ca ..........0$.|.. 13f0: db 18 e6 80 02 8c 14 da f4 a9 d1 a8 55 83 32 35 ............U.25 1400: ca 34 a8 d5 a7 52 63 c6 4c 9c 52 bc 6c 8d df f2 .4...Rc.L.R.l... 1410: 9e 09 02 b1 20 0a 81 38 cc f3 42 20 96 a2 01 84 .... ..8..B .... 1420: 85 06 a1 42 a9 05 e2 98 20 34 92 0a 10 f6 ff 07 ...B.... 4...... 1430: 5b 82 1b 4c 49 44 30 08 5f 48 49 44 0c 41 d0 0c [..LID0._HID.A.. 1440: 0d 14 0b 5f 4c 49 44 00 a4 4c 50 4f 4c 5b 82 0f ..._LID..LPOL[.. 1450: 50 57 52 42 08 5f 48 49 44 0c 41 d0 0c 0c 5b 82 PWRB._HID.A...[. 1460: 84 b9 04 50 43 49 30 14 09 5f 53 33 44 00 a4 0a ...PCI0.._S3D... 1470: 02 14 09 5f 53 34 44 00 a4 0a 02 08 5f 48 49 44 ..._S4D....._HID 1480: 0c 41 d0 0a 08 08 5f 43 49 44 0c 41 d0 0a 03 5b .A...._CID.A...[ 1490: 82 43 0e 4d 43 48 43 08 5f 41 44 52 00 5b 80 48 .C.MCHC._ADR.[.H 14a0: 42 55 53 02 0a 40 0a c0 5b 81 4a 0c 48 42 55 53 BUS..@..[.J.HBUS 14b0: 03 45 50 45 4e 01 00 0b 45 50 42 52 14 00 20 4d .EPEN...EPBR.. M 14c0: 48 45 4e 01 00 0d 4d 48 42 52 12 00 40 0a 50 58 HEN...MHBR..@.PX 14d0: 45 4e 01 50 58 53 5a 02 00 17 50 58 42 52 06 00 EN.PXSZ...PXBR.. 14e0: 20 44 49 45 4e 01 00 0b 44 49 42 52 14 00 20 49 DIEN...DIBR.. I 14f0: 50 45 4e 01 00 0b 49 50 42 52 14 00 40 0e 00 04 PEN...IPBR..@... 1500: 50 4d 30 48 02 00 02 50 4d 31 4c 02 00 02 50 4d PM0H...PM1L...PM 1510: 31 48 02 00 02 50 4d 32 4c 02 00 02 50 4d 32 48 1H...PM2L...PM2H 1520: 02 00 02 50 4d 33 4c 02 00 02 50 4d 33 48 02 00 ...PM3L...PM3H.. 1530: 02 50 4d 34 4c 02 00 02 50 4d 34 48 02 00 02 50 .PM4L...PM4H...P 1540: 4d 35 4c 02 00 02 50 4d 35 48 02 00 02 50 4d 36 M5L...PM5H...PM6 1550: 4c 02 00 02 50 4d 36 48 02 00 02 00 07 48 45 4e L...PM6H.....HEN 1560: 41 01 00 40 05 54 55 55 44 10 00 40 06 00 04 54 A..@.TUUD..@...T 1570: 4c 55 44 0c 08 42 55 46 30 11 4d 20 0b 08 02 88 LUD..BUF0.M .... 1580: 0d 00 02 0c 00 00 00 00 00 ff 00 00 00 00 01 87 ................ 1590: 17 00 01 0c 03 00 00 00 00 00 00 00 00 f7 0c 00 ................ 15a0: 00 00 00 00 00 f8 0c 00 00 47 01 f8 0c f8 0c 01 .........G...... 15b0: 08 87 17 00 01 0c 03 00 00 00 00 00 0d 00 00 ff ................ 15c0: ff 00 00 00 00 00 00 00 f3 00 00 87 17 00 00 0c ................ 15d0: 03 00 00 00 00 00 00 0a 00 ff ff 0b 00 00 00 00 ................ 15e0: 00 00 00 02 00 87 17 00 00 0c 03 00 00 00 00 00 ................ 15f0: 00 0c 00 ff 3f 0c 00 00 00 00 00 00 40 00 00 87 ....?.......@... 1600: 17 00 00 0c 03 00 00 00 00 00 40 0c 00 ff 7f 0c ..........@..... 1610: 00 00 00 00 00 00 40 00 00 87 17 00 00 0c 03 00 ......@......... 1620: 00 00 00 00 80 0c 00 ff bf 0c 00 00 00 00 00 00 ................ 1630: 40 00 00 87 17 00 00 0c 03 00 00 00 00 00 c0 0c @............... 1640: 00 ff ff 0c 00 00 00 00 00 00 40 00 00 87 17 00 ..........@..... 1650: 00 0c 03 00 00 00 00 00 00 0d 00 ff 3f 0d 00 00 ............?... 1660: 00 00 00 00 40 00 00 87 17 00 00 0c 03 00 00 00 ....@........... 1670: 00 00 40 0d 00 ff 7f 0d 00 00 00 00 00 00 40 00 ..@...........@. 1680: 00 87 17 00 00 0c 03 00 00 00 00 00 80 0d 00 ff ................ 1690: bf 0d 00 00 00 00 00 00 40 00 00 87 17 00 00 0c ........@....... 16a0: 03 00 00 00 00 00 c0 0d 00 ff ff 0d 00 00 00 00 ................ 16b0: 00 00 40 00 00 87 17 00 00 0c 03 00 00 00 00 00 ..@............. 16c0: 00 0e 00 ff 3f 0e 00 00 00 00 00 00 40 00 00 87 ....?.......@... 16d0: 17 00 00 0c 03 00 00 00 00 00 40 0e 00 ff 7f 0e ..........@..... 16e0: 00 00 00 00 00 00 40 00 00 87 17 00 00 0c 03 00 ......@......... 16f0: 00 00 00 00 80 0e 00 ff bf 0e 00 00 00 00 00 00 ................ 1700: 40 00 00 87 17 00 00 0c 03 00 00 00 00 00 c0 0e @............... 1710: 00 ff ff 0e 00 00 00 00 00 00 40 00 00 87 17 00 ..........@..... 1720: 00 0c 03 00 00 00 00 00 00 0f 00 ff ff 0f 00 00 ................ 1730: 00 00 00 00 00 01 00 87 17 00 00 0c 03 00 00 00 ................ 1740: 00 00 00 00 00 ff ff ff df 00 00 00 00 00 00 00 ................ 1750: 00 87 17 00 00 0c 03 00 00 00 00 00 00 00 f0 ff ................ 1760: ff bf fe 00 00 00 00 00 00 c0 0e 87 17 00 00 0c ................ 1770: 03 00 00 00 00 00 00 d4 fe ff 4f d4 fe 00 00 00 ..........O..... 1780: 00 00 00 00 00 79 00 14 4b 3d 5f 43 52 53 08 a0 .....y..K=_CRS.. 1790: 1c 5e 2e 4d 43 48 43 50 4d 31 4c 8a 42 55 46 30 .^.MCHCPM1L.BUF0 17a0: 0a 7c 43 30 4c 4e 70 00 43 30 4c 4e a0 1f 93 5e .|C0LNp.C0LN...^ 17b0: 2e 4d 43 48 43 50 4d 31 4c 01 8d 42 55 46 30 0b .MCHCPM1L..BUF0. 17c0: 58 03 43 30 52 57 70 00 43 30 52 57 a0 1c 5e 2e X.C0RWp.C0RW..^. 17d0: 4d 43 48 43 50 4d 31 48 8a 42 55 46 30 0a 96 43 MCHCPM1H.BUF0..C 17e0: 34 4c 4e 70 00 43 34 4c 4e a0 1f 93 5e 2e 4d 43 4LNp.C4LN...^.MC 17f0: 48 43 50 4d 31 48 01 8d 42 55 46 30 0b 28 04 43 HCPM1H..BUF0.(.C 1800: 34 52 57 70 00 43 34 52 57 a0 1c 5e 2e 4d 43 48 4RWp.C4RW..^.MCH 1810: 43 50 4d 32 4c 8a 42 55 46 30 0a b0 43 38 4c 4e CPM2L.BUF0..C8LN 1820: 70 00 43 38 4c 4e a0 1f 93 5e 2e 4d 43 48 43 50 p.C8LN...^.MCHCP 1830: 4d 32 4c 01 8d 42 55 46 30 0b f8 04 43 38 52 57 M2L..BUF0...C8RW 1840: 70 00 43 38 52 57 a0 1c 5e 2e 4d 43 48 43 50 4d p.C8RW..^.MCHCPM 1850: 32 48 8a 42 55 46 30 0a ca 43 43 4c 4e 70 00 43 2H.BUF0..CCLNp.C 1860: 43 4c 4e a0 1f 93 5e 2e 4d 43 48 43 50 4d 32 48 CLN...^.MCHCPM2H 1870: 01 8d 42 55 46 30 0b c8 05 43 43 52 57 70 00 43 ..BUF0...CCRWp.C 1880: 43 52 57 a0 1c 5e 2e 4d 43 48 43 50 4d 33 4c 8a CRW..^.MCHCPM3L. 1890: 42 55 46 30 0a e4 44 30 4c 4e 70 00 44 30 4c 4e BUF0..D0LNp.D0LN 18a0: a0 1f 93 5e 2e 4d 43 48 43 50 4d 33 4c 01 8d 42 ...^.MCHCPM3L..B 18b0: 55 46 30 0b 98 06 44 30 52 57 70 00 44 30 52 57 UF0...D0RWp.D0RW 18c0: a0 1c 5e 2e 4d 43 48 43 50 4d 33 48 8a 42 55 46 ..^.MCHCPM3H.BUF 18d0: 30 0a fe 44 34 4c 4e 70 00 44 34 4c 4e a0 1f 93 0..D4LNp.D4LN... 18e0: 5e 2e 4d 43 48 43 50 4d 33 48 01 8d 42 55 46 30 ^.MCHCPM3H..BUF0 18f0: 0b 68 07 44 34 52 57 70 00 44 34 52 57 a0 1d 5e .h.D4RWp.D4RW..^ 1900: 2e 4d 43 48 43 50 4d 34 4c 8a 42 55 46 30 0b 18 .MCHCPM4L.BUF0.. 1910: 01 44 38 4c 4e 70 00 44 38 4c 4e a0 1f 93 5e 2e .D8LNp.D8LN...^. 1920: 4d 43 48 43 50 4d 34 4c 01 8d 42 55 46 30 0b 38 MCHCPM4L..BUF0.8 1930: 08 44 38 52 57 70 00 44 38 52 57 a0 1d 5e 2e 4d .D8RWp.D8RW..^.M 1940: 43 48 43 50 4d 34 48 8a 42 55 46 30 0b 32 01 44 CHCPM4H.BUF0.2.D 1950: 43 4c 4e 70 00 44 43 4c 4e a0 1f 93 5e 2e 4d 43 CLNp.DCLN...^.MC 1960: 48 43 50 4d 34 48 01 8d 42 55 46 30 0b 08 09 44 HCPM4H..BUF0...D 1970: 43 52 57 70 00 44 43 52 57 a0 1d 5e 2e 4d 43 48 CRWp.DCRW..^.MCH 1980: 43 50 4d 35 4c 8a 42 55 46 30 0b 4c 01 45 30 4c CPM5L.BUF0.L.E0L 1990: 4e 70 00 45 30 4c 4e a0 1f 93 5e 2e 4d 43 48 43 Np.E0LN...^.MCHC 19a0: 50 4d 35 4c 01 8d 42 55 46 30 0b d8 09 45 30 52 PM5L..BUF0...E0R 19b0: 57 70 00 45 30 52 57 a0 1d 5e 2e 4d 43 48 43 50 Wp.E0RW..^.MCHCP 19c0: 4d 35 48 8a 42 55 46 30 0b 66 01 45 34 4c 4e 70 M5H.BUF0.f.E4LNp 19d0: 00 45 34 4c 4e a0 1f 93 5e 2e 4d 43 48 43 50 4d .E4LN...^.MCHCPM 19e0: 35 48 01 8d 42 55 46 30 0b a8 0a 45 34 52 57 70 5H..BUF0...E4RWp 19f0: 00 45 34 52 57 a0 1d 5e 2e 4d 43 48 43 50 4d 36 .E4RW..^.MCHCPM6 1a00: 4c 8a 42 55 46 30 0b 80 01 45 38 4c 4e 70 00 45 L.BUF0...E8LNp.E 1a10: 38 4c 4e a0 1f 93 5e 2e 4d 43 48 43 50 4d 36 4c 8LN...^.MCHCPM6L 1a20: 01 8d 42 55 46 30 0b 78 0b 45 38 52 57 70 00 45 ..BUF0.x.E8RWp.E 1a30: 38 52 57 a0 1d 5e 2e 4d 43 48 43 50 4d 36 48 8a 8RW..^.MCHCPM6H. 1a40: 42 55 46 30 0b 9a 01 45 43 4c 4e 70 00 45 43 4c BUF0...ECLNp.ECL 1a50: 4e a0 1f 93 5e 2e 4d 43 48 43 50 4d 36 48 01 8d N...^.MCHCPM6H.. 1a60: 42 55 46 30 0b 48 0c 45 43 52 57 70 00 45 43 52 BUF0.H.ECRWp.ECR 1a70: 57 a0 1d 5e 2e 4d 43 48 43 50 4d 30 48 8a 42 55 W..^.MCHCPM0H.BU 1a80: 46 30 0b b4 01 46 30 4c 4e 70 00 46 30 4c 4e a0 F0...F0LNp.F0LN. 1a90: 1f 93 5e 2e 4d 43 48 43 50 4d 30 48 01 8d 42 55 ..^.MCHCPM0H..BU 1aa0: 46 30 0b 18 0d 46 30 52 57 70 00 46 30 52 57 8a F0...F0RWp.F0RW. 1ab0: 42 55 46 30 0b c2 01 4d 31 4d 4e 8a 42 55 46 30 BUF0...M1MN.BUF0 1ac0: 0b c6 01 4d 31 4d 58 8a 42 55 46 30 0b ce 01 4d ...M1MX.BUF0...M 1ad0: 31 4c 4e 8a 42 55 46 30 0b dc 01 4d 32 4d 4e 8a 1LN.BUF0...M2MN. 1ae0: 42 55 46 30 0b e0 01 4d 32 4d 58 8a 42 55 46 30 BUF0...M2MX.BUF0 1af0: 0b e8 01 4d 32 4c 4e 79 5e 2e 4d 43 48 43 50 58 ...M2LNy^.MCHCPX 1b00: 42 52 0a 1a 4d 31 4d 58 7a 0c 00 00 00 10 5e 2e BR..M1MXz.....^. 1b10: 4d 43 48 43 50 58 53 5a 60 72 4d 31 4d 58 60 4d MCHCPXSZ`rM1MX`M 1b20: 32 4d 4e 72 74 4d 32 4d 58 4d 32 4d 4e 00 01 4d 2MNrtM2MXM2MN..M 1b30: 32 4c 4e 74 4d 31 4d 58 01 4d 31 4d 58 79 5e 2e 2LNtM1MX.M1MXy^. 1b40: 4d 43 48 43 54 4c 55 44 0a 14 4d 31 4d 4e 72 74 MCHCTLUD..M1MNrt 1b50: 4d 31 4d 58 4d 31 4d 4e 00 01 4d 31 4c 4e a4 42 M1MXM1MN..M1LN.B 1b60: 55 46 30 14 47 28 5f 50 52 54 00 a0 45 0f 47 50 UF0.G(_PRT..E.GP 1b70: 49 43 a4 12 4d 0e 13 12 0b 04 0c ff ff 01 00 00 IC..M........... 1b80: 00 0a 10 12 0b 04 0c ff ff 02 00 00 00 0a 10 12 ................ 1b90: 0b 04 0c ff ff 07 00 00 00 0a 10 12 0b 04 0c ff ................ 1ba0: ff 19 00 00 00 0a 14 12 0b 04 0c ff ff 1a 00 00 ................ 1bb0: 00 0a 10 12 0b 04 0c ff ff 1a 00 01 00 0a 15 12 ................ 1bc0: 0c 04 0c ff ff 1a 00 0a 02 00 0a 12 12 0b 04 0c ................ 1bd0: ff ff 1b 00 00 00 0a 16 12 0b 04 0c ff ff 1c 00 ................ 1be0: 00 00 0a 11 12 0b 04 0c ff ff 1c 00 01 00 0a 10 ................ 1bf0: 12 0c 04 0c ff ff 1c 00 0a 02 00 0a 12 12 0c 04 ................ 1c00: 0c ff ff 1c 00 0a 03 00 0a 13 12 0b 04 0c ff ff ................ 1c10: 1d 00 00 00 0a 17 12 0b 04 0c ff ff 1d 00 01 00 ................ 1c20: 0a 13 12 0c 04 0c ff ff 1d 00 0a 02 00 0a 12 12 ................ 1c30: 0b 04 0c ff ff 1f 00 00 00 0a 13 12 0b 04 0c ff ................ 1c40: ff 1f 00 01 00 0a 13 12 0c 04 0c ff ff 1f 00 0a ................ 1c50: 02 00 0a 13 12 0c 04 0c ff ff 1f 00 0a 03 00 0a ................ 1c60: 10 a1 49 18 a4 12 45 18 13 12 13 04 0c ff ff 01 ..I...E......... 1c70: 00 00 5e 2e 4c 50 43 42 4c 4e 4b 41 00 12 13 04 ..^.LPCBLNKA.... 1c80: 0c ff ff 02 00 00 5e 2e 4c 50 43 42 4c 4e 4b 41 ......^.LPCBLNKA 1c90: 00 12 13 04 0c ff ff 07 00 00 5e 2e 4c 50 43 42 ..........^.LPCB 1ca0: 4c 4e 4b 41 00 12 13 04 0c ff ff 19 00 00 5e 2e LNKA..........^. 1cb0: 4c 50 43 42 4c 4e 4b 45 00 12 13 04 0c ff ff 1a LPCBLNKE........ 1cc0: 00 00 5e 2e 4c 50 43 42 4c 4e 4b 41 00 12 13 04 ..^.LPCBLNKA.... 1cd0: 0c ff ff 1a 00 01 5e 2e 4c 50 43 42 4c 4e 4b 46 ......^.LPCBLNKF 1ce0: 00 12 14 04 0c ff ff 1a 00 0a 02 5e 2e 4c 50 43 ...........^.LPC 1cf0: 42 4c 4e 4b 43 00 12 13 04 0c ff ff 1b 00 00 5e BLNKC..........^ 1d00: 2e 4c 50 43 42 4c 4e 4b 47 00 12 13 04 0c ff ff .LPCBLNKG....... 1d10: 1c 00 00 5e 2e 4c 50 43 42 4c 4e 4b 42 00 12 13 ...^.LPCBLNKB... 1d20: 04 0c ff ff 1c 00 01 5e 2e 4c 50 43 42 4c 4e 4b .......^.LPCBLNK 1d30: 41 00 12 14 04 0c ff ff 1c 00 0a 02 5e 2e 4c 50 A...........^.LP 1d40: 43 42 4c 4e 4b 43 00 12 14 04 0c ff ff 1c 00 0a CBLNKC.......... 1d50: 03 5e 2e 4c 50 43 42 4c 4e 4b 44 00 12 13 04 0c .^.LPCBLNKD..... 1d60: ff ff 1d 00 00 5e 2e 4c 50 43 42 4c 4e 4b 48 00 .....^.LPCBLNKH. 1d70: 12 13 04 0c ff ff 1d 00 01 5e 2e 4c 50 43 42 4c .........^.LPCBL 1d80: 4e 4b 44 00 12 14 04 0c ff ff 1d 00 0a 02 5e 2e NKD...........^. 1d90: 4c 50 43 42 4c 4e 4b 43 00 12 13 04 0c ff ff 1f LPCBLNKC........ 1da0: 00 00 5e 2e 4c 50 43 42 4c 4e 4b 44 00 12 13 04 ..^.LPCBLNKD.... 1db0: 0c ff ff 1f 00 01 5e 2e 4c 50 43 42 4c 4e 4b 44 ......^.LPCBLNKD 1dc0: 00 12 14 04 0c ff ff 1f 00 0a 02 5e 2e 4c 50 43 ...........^.LPC 1dd0: 42 4c 4e 4b 44 00 12 14 04 0c ff ff 1f 00 0a 03 BLNKD........... 1de0: 5e 2e 4c 50 43 42 4c 4e 4b 41 00 5b 82 40 14 50 ^.LPCBLNKA.[.@.P 1df0: 44 52 43 08 5f 48 49 44 0c 41 d0 0c 02 08 5f 55 DRC._HID.A...._U 1e00: 49 44 01 08 42 55 46 30 11 46 06 0a 62 86 09 00 ID..BUF0.F..b... 1e10: 01 00 00 00 00 00 40 00 00 86 09 00 01 00 00 00 ......@......... 1e20: 00 00 40 00 00 86 09 00 01 00 00 00 00 00 10 00 ..@............. 1e30: 00 86 09 00 01 00 00 00 00 00 10 00 00 86 09 00 ................ 1e40: 01 00 00 00 00 00 00 00 00 86 09 00 01 00 00 d2 ................ 1e50: fe 00 00 02 00 86 09 00 01 00 00 d4 fe 00 50 00 ..............P. 1e60: 00 86 09 00 01 00 50 d4 fe 00 b0 04 00 79 00 14 ......P......y.. 1e70: 4d 0b 5f 43 52 53 08 8a 42 55 46 30 0a 04 52 42 M._CRS..BUF0..RB 1e80: 52 30 79 5e 5e 2e 4c 50 43 42 52 43 42 41 0a 0e R0y^^.LPCBRCBA.. 1e90: 52 42 52 30 8a 42 55 46 30 0a 10 4d 42 52 30 79 RBR0.BUF0..MBR0y 1ea0: 5e 5e 2e 4d 43 48 43 4d 48 42 52 0a 0e 4d 42 52 ^^.MCHCMHBR..MBR 1eb0: 30 8a 42 55 46 30 0a 1c 44 42 52 30 79 5e 5e 2e 0.BUF0..DBR0y^^. 1ec0: 4d 43 48 43 44 49 42 52 0a 0c 44 42 52 30 8a 42 MCHCDIBR..DBR0.B 1ed0: 55 46 30 0a 28 45 42 52 30 79 5e 5e 2e 4d 43 48 UF0.(EBR0y^^.MCH 1ee0: 43 45 50 42 52 0a 0c 45 42 52 30 8a 42 55 46 30 CEPBR..EBR0.BUF0 1ef0: 0a 34 58 42 52 30 79 5e 5e 2e 4d 43 48 43 50 58 .4XBR0y^^.MCHCPX 1f00: 42 52 0a 1a 58 42 52 30 8a 42 55 46 30 0a 38 58 BR..XBR0.BUF0.8X 1f10: 53 5a 30 7a 0c 00 00 00 10 5e 5e 2e 4d 43 48 43 SZ0z.....^^.MCHC 1f20: 50 58 53 5a 58 53 5a 30 a4 42 55 46 30 5b 82 4d PXSZXSZ0.BUF0[.M 1f30: 50 50 45 47 50 08 5f 41 44 52 0c 00 00 01 00 14 PPEGP._ADR...... 1f40: 41 09 5f 50 52 54 00 a0 33 47 50 49 43 a4 12 2c A._PRT..3GPIC.., 1f50: 04 12 09 04 0b ff ff 00 00 0a 10 12 09 04 0b ff ................ 1f60: ff 01 00 0a 11 12 0a 04 0b ff ff 0a 02 00 0a 12 ................ 1f70: 12 0a 04 0b ff ff 0a 03 00 0a 13 a1 45 05 a4 12 ............E... 1f80: 41 05 04 12 12 04 0b ff ff 00 5e 5e 2e 4c 50 43 A.........^^.LPC 1f90: 42 4c 4e 4b 41 00 12 12 04 0b ff ff 01 5e 5e 2e BLNKA........^^. 1fa0: 4c 50 43 42 4c 4e 4b 42 00 12 13 04 0b ff ff 0a LPCBLNKB........ 1fb0: 02 5e 5e 2e 4c 50 43 42 4c 4e 4b 43 00 12 13 04 .^^.LPCBLNKC.... 1fc0: 0b ff ff 0a 03 5e 5e 2e 4c 50 43 42 4c 4e 4b 44 .....^^.LPCBLNKD 1fd0: 00 5b 82 49 46 56 47 41 5f 08 5f 41 44 52 00 08 .[.IFVGA_._ADR.. 1fe0: 53 57 49 54 01 08 43 52 54 41 01 08 4c 43 44 41 SWIT..CRTA..LCDA 1ff0: 01 08 54 56 41 41 01 08 56 4c 44 46 01 5b 80 56 ..TVAA..VLDF.[.V 2000: 49 44 53 02 00 0a c8 5b 81 0b 56 49 44 53 03 56 IDS....[..VIDS.V 2010: 44 49 44 20 14 09 5f 53 54 41 00 a4 0a 0f 08 5f DID .._STA....._ 2020: 50 53 43 00 14 0c 5f 50 53 30 00 70 00 5f 50 53 PSC..._PS0.p._PS 2030: 43 14 0c 5f 50 53 31 00 70 01 5f 50 53 43 14 0d C.._PS1.p._PSC.. 2040: 5f 50 53 33 00 70 0a 03 5f 50 53 43 14 10 5f 44 _PS3.p.._PSC.._D 2050: 4f 53 01 70 7b 68 0a 03 00 53 57 49 54 14 17 5f OS.p{h...SWIT.._ 2060: 44 4f 44 00 a4 12 0f 03 0c 00 01 01 00 0c 10 01 DOD............. 2070: 01 00 0b 00 02 5b 82 4d 08 43 52 54 5f 14 0a 5f .....[.M.CRT_.._ 2080: 41 44 52 00 a4 0b 00 01 14 41 06 5f 44 43 53 00 ADR......A._DCS. 2090: 5e 5e 5e 5e 2e 4c 50 43 42 50 48 53 53 0a 0c 70 ^^^^.LPCBPHSS..p 20a0: 43 41 44 4c 60 70 43 53 54 45 61 7b 60 0a 02 60 CADL`pCSTEa{`..` 20b0: 7b 61 0a 02 61 a0 08 60 70 01 43 52 54 41 a1 07 {a..a..`p.CRTA.. 20c0: 70 00 43 52 54 41 a0 13 43 52 54 41 a0 08 93 61 p.CRTA..CRTA...a 20d0: 0a 02 a4 0a 1f a1 04 a4 0a 1d a1 0f a0 08 93 61 ...............a 20e0: 0a 02 a4 0a 0f a1 04 a4 0a 0d 14 12 5f 44 47 53 ............_DGS 20f0: 00 a0 07 43 52 54 41 a4 01 a1 03 a4 00 14 06 5f ...CRTA........_ 2100: 44 53 53 01 5b 82 47 0e 4c 43 44 5f 14 0a 5f 41 DSS.[.G.LCD_.._A 2110: 44 52 00 a4 0b 10 01 14 4d 05 5f 44 43 53 00 5e DR......M._DCS.^ 2120: 5e 5e 5e 2e 4c 50 43 42 50 48 53 53 0a 0c 70 43 ^^^.LPCBPHSS..pC 2130: 41 44 4c 60 70 43 53 54 45 61 7b 60 01 60 7b 61 ADL`pCSTEa{`.`{a 2140: 01 61 a0 08 60 70 01 4c 43 44 41 a1 07 70 00 4c .a..`p.LCDA..p.L 2150: 43 44 41 a0 12 4c 43 44 41 a0 07 93 61 01 a4 0a CDA..LCDA...a... 2160: 1f a1 04 a4 0a 1d a1 0e a0 07 93 61 01 a4 0a 0f ...........a.... 2170: a1 04 a4 0a 0d 14 12 5f 44 47 53 00 a0 07 4c 43 ......._DGS...LC 2180: 44 41 a4 01 a1 03 a4 00 14 06 5f 44 53 53 01 14 DA........_DSS.. 2190: 1d 5f 42 43 4c 00 a4 12 15 0a 0a 46 0a 28 00 0a ._BCL......F.(.. 21a0: 0a 0a 14 0a 1e 0a 28 0a 32 0a 3c 0a 46 14 20 5f ......(.2.<.F. _ 21b0: 42 43 4d 01 78 68 0a 0a 60 61 70 61 5e 5e 5e 5e BCM.xh..`apa^^^^ 21c0: 2f 03 4c 50 43 42 45 43 30 5f 42 52 54 53 14 1e /.LPCBEC0_BRTS.. 21d0: 5f 42 51 43 00 77 5e 5e 5e 5e 2f 03 4c 50 43 42 _BQC.w^^^^/.LPCB 21e0: 45 43 30 5f 42 52 54 53 0a 0a 60 a4 60 5b 82 4d EC0_BRTS..`.`[.M 21f0: 08 54 56 5f 5f 14 0a 5f 41 44 52 00 a4 0b 00 02 .TV__.._ADR..... 2200: 14 41 06 5f 44 43 53 00 5e 5e 5e 5e 2e 4c 50 43 .A._DCS.^^^^.LPC 2210: 42 50 48 53 53 0a 0c 70 43 41 44 4c 60 70 43 53 BPHSS..pCADL`pCS 2220: 54 45 61 7b 60 0a 04 60 7b 61 0a 04 61 a0 08 60 TEa{`..`{a..a..` 2230: 70 01 54 56 41 41 a1 07 70 00 54 56 41 41 a0 13 p.TVAA..p.TVAA.. 2240: 54 56 41 41 a0 08 93 61 0a 04 a4 0a 1f a1 04 a4 TVAA...a........ 2250: 0a 1d a1 0f a0 08 93 61 0a 04 a4 0a 0f a1 04 a4 .......a........ 2260: 0a 0d 14 12 5f 44 47 53 00 a0 07 54 56 41 41 a4 ...._DGS...TVAA. 2270: 01 a1 03 a4 00 14 06 5f 44 53 53 01 14 49 10 44 ......._DSS..I.D 2280: 53 53 57 00 a0 4a 0e 93 53 57 49 54 00 5e 5e 5e SSW..J..SWIT.^^^ 2290: 2e 4c 50 43 42 50 48 53 53 0a 0c 70 43 41 44 4c .LPCBPHSS..pCADL 22a0: 60 70 43 53 54 45 61 a0 16 94 61 01 7b 60 61 56 `pCSTEa...a.{`aV 22b0: 4c 44 46 7b 56 4c 44 46 0a fe 56 4c 44 46 a0 43 LDF{VLDF..VLDF.C 22c0: 0a 56 4c 44 46 a0 27 93 60 0a 09 a0 0b 93 61 0a .VLDF.'.`.....a. 22d0: 08 53 54 42 4c 0a 02 a0 0a 93 61 01 53 54 42 4c .STBL.....a.STBL 22e0: 0a 03 a0 0a 93 61 0a 09 53 54 42 4c 01 a0 28 93 .....a..STBL..(. 22f0: 60 0a 0a a0 0b 93 61 0a 08 53 54 42 4c 0a 05 a0 `.....a..STBL... 2300: 0a 93 61 0a 02 53 54 42 4c 01 a0 0b 93 61 0a 0a ..a..STBL....a.. 2310: 53 54 42 4c 0a 04 a0 4b 04 93 60 0a 0b a0 0b 93 STBL...K..`..... 2320: 61 0a 08 53 54 42 4c 0a 02 a0 0b 93 61 0a 09 53 a..STBL.....a..S 2330: 54 42 4c 0a 05 a0 0a 93 61 01 53 54 42 4c 0a 03 TBL.....a.STBL.. 2340: a0 0b 93 61 0a 0a 53 54 42 4c 0a 04 a0 0a 93 61 ...a..STBL.....a 2350: 0a 02 53 54 42 4c 01 a0 0a 93 61 0a 0b 53 54 42 ..STBL....a..STB 2360: 4c 01 a1 0c 70 01 56 4c 44 46 53 54 42 4c 01 a1 L...p.VLDFSTBL.. 2370: 16 a0 14 93 53 57 49 54 01 5e 5e 5e 2e 4c 50 43 ....SWIT.^^^.LPC 2380: 42 50 48 53 53 01 14 45 0b 53 54 42 4c 01 a0 16 BPHSS..E.STBL... 2390: 93 68 01 70 00 43 52 54 41 70 01 4c 43 44 41 70 .h.p.CRTAp.LCDAp 23a0: 00 54 56 41 41 a0 17 93 68 0a 02 70 01 43 52 54 .TVAA...h..p.CRT 23b0: 41 70 00 4c 43 44 41 70 00 54 56 41 41 a0 17 93 Ap.LCDAp.TVAA... 23c0: 68 0a 03 70 01 43 52 54 41 70 01 4c 43 44 41 70 h..p.CRTAp.LCDAp 23d0: 00 54 56 41 41 a0 17 93 68 0a 04 70 00 43 52 54 .TVAA...h..p.CRT 23e0: 41 70 00 4c 43 44 41 70 01 54 56 41 41 a0 17 93 Ap.LCDAp.TVAA... 23f0: 68 0a 05 70 00 43 52 54 41 70 01 4c 43 44 41 70 h..p.CRTAp.LCDAp 2400: 01 54 56 41 41 a0 17 93 68 0a 06 70 01 43 52 54 .TVAA...h..p.CRT 2410: 41 70 00 4c 43 44 41 70 01 54 56 41 41 a0 17 93 Ap.LCDAp.TVAA... 2420: 68 0a 07 70 01 43 52 54 41 70 01 4c 43 44 41 70 h..p.CRTAp.LCDAp 2430: 01 54 56 41 41 86 56 47 41 5f 0a 80 5b 82 42 f8 .TVAA.VGA_..[.B. 2440: 47 46 58 30 08 5f 41 44 52 0c 00 00 02 00 14 10 GFX0._ADR....... 2450: 5f 44 4f 53 01 70 7b 68 0a 07 00 44 53 45 4e 14 _DOS.p{h...DSEN. 2460: 41 26 5f 44 4f 44 00 70 00 4e 44 49 44 a0 15 92 A&_DOD.p.NDID... 2470: 93 44 49 44 4c 00 70 53 44 44 4c 44 49 44 31 44 .DIDL.pSDDLDID1D 2480: 49 44 31 a0 15 92 93 44 44 4c 32 00 70 53 44 44 ID1....DDL2.pSDD 2490: 4c 44 49 44 32 44 49 44 32 a0 15 92 93 44 44 4c LDID2DID2....DDL 24a0: 33 00 70 53 44 44 4c 44 49 44 33 44 49 44 33 a0 3.pSDDLDID3DID3. 24b0: 15 92 93 44 44 4c 34 00 70 53 44 44 4c 44 49 44 ...DDL4.pSDDLDID 24c0: 34 44 49 44 34 a0 15 92 93 44 44 4c 35 00 70 53 4DID4....DDL5.pS 24d0: 44 44 4c 44 49 44 35 44 49 44 35 a0 2c 93 4e 44 DDLDID5DID5.,.ND 24e0: 49 44 01 08 54 4d 50 31 12 07 01 0c ff ff ff ff ID..TMP1........ 24f0: 70 7d 0c 00 00 01 00 44 49 44 31 00 88 54 4d 50 p}.....DID1..TMP 2500: 31 00 00 a4 54 4d 50 31 a0 46 04 93 4e 44 49 44 1...TMP1.F..NDID 2510: 0a 02 08 54 4d 50 32 12 0c 02 0c ff ff ff ff 0c ...TMP2......... 2520: ff ff ff ff 70 7d 0c 00 00 01 00 44 49 44 31 00 ....p}.....DID1. 2530: 88 54 4d 50 32 00 00 70 7d 0c 00 00 01 00 44 49 .TMP2..p}.....DI 2540: 44 32 00 88 54 4d 50 32 01 00 a4 54 4d 50 32 a0 D2..TMP2...TMP2. 2550: 4f 05 93 4e 44 49 44 0a 03 08 54 4d 50 33 12 11 O..NDID...TMP3.. 2560: 03 0c ff ff ff ff 0c ff ff ff ff 0c ff ff ff ff ................ 2570: 70 7d 0c 00 00 01 00 44 49 44 31 00 88 54 4d 50 p}.....DID1..TMP 2580: 33 00 00 70 7d 0c 00 00 01 00 44 49 44 32 00 88 3..p}.....DID2.. 2590: 54 4d 50 33 01 00 70 7d 0c 00 00 01 00 44 49 44 TMP3..p}.....DID 25a0: 33 00 88 54 4d 50 33 0a 02 00 a4 54 4d 50 33 a0 3..TMP3....TMP3. 25b0: 48 07 93 4e 44 49 44 0a 04 08 54 4d 50 34 12 16 H..NDID...TMP4.. 25c0: 04 0c ff ff ff ff 0c ff ff ff ff 0c ff ff ff ff ................ 25d0: 0c ff ff ff ff 70 7d 0c 00 00 01 00 44 49 44 31 .....p}.....DID1 25e0: 00 88 54 4d 50 34 00 00 70 7d 0c 00 00 01 00 44 ..TMP4..p}.....D 25f0: 49 44 32 00 88 54 4d 50 34 01 00 70 7d 0c 00 00 ID2..TMP4..p}... 2600: 01 00 44 49 44 33 00 88 54 4d 50 34 0a 02 00 70 ..DID3..TMP4...p 2610: 7d 0c 00 00 01 00 44 49 44 34 00 88 54 4d 50 34 }.....DID4..TMP4 2620: 0a 03 00 a4 54 4d 50 34 a0 41 09 94 4e 44 49 44 ....TMP4.A..NDID 2630: 0a 04 08 54 4d 50 35 12 1b 05 0c ff ff ff ff 0c ...TMP5......... 2640: ff ff ff ff 0c ff ff ff ff 0c ff ff ff ff 0c ff ................ 2650: ff ff ff 70 7d 0c 00 00 01 00 44 49 44 31 00 88 ...p}.....DID1.. 2660: 54 4d 50 35 00 00 70 7d 0c 00 00 01 00 44 49 44 TMP5..p}.....DID 2670: 32 00 88 54 4d 50 35 01 00 70 7d 0c 00 00 01 00 2..TMP5..p}..... 2680: 44 49 44 33 00 88 54 4d 50 35 0a 02 00 70 7d 0c DID3..TMP5...p}. 2690: 00 00 01 00 44 49 44 34 00 88 54 4d 50 35 0a 03 ....DID4..TMP5.. 26a0: 00 70 7d 0c 00 00 01 00 44 49 44 34 00 88 54 4d .p}.....DID4..TM 26b0: 50 35 0a 04 00 a4 54 4d 50 35 a4 12 05 01 0b 00 P5....TMP5...... 26c0: 04 5b 82 43 06 44 44 30 31 14 1c 5f 41 44 52 08 .[.C.DD01.._ADR. 26d0: a0 09 93 44 49 44 31 00 a4 01 a1 0b a4 7b 0b ff ...DID1......{.. 26e0: ff 44 49 44 31 00 14 0f 5f 44 43 53 00 a4 43 44 .DID1..._DCS..CD 26f0: 44 53 44 49 44 31 14 0f 5f 44 47 53 00 a4 4e 44 DSDID1.._DGS..ND 2700: 44 53 44 49 44 31 14 1f 5f 44 53 53 01 a0 18 93 DSDID1.._DSS.... 2710: 7b 68 0c 00 00 00 c0 00 0c 00 00 00 c0 70 4e 53 {h...........pNS 2720: 54 45 43 53 54 45 5b 82 44 06 44 44 30 32 14 1d TECSTE[.D.DD02.. 2730: 5f 41 44 52 08 a0 0a 93 44 49 44 32 00 a4 0a 02 _ADR....DID2.... 2740: a1 0b a4 7b 0b ff ff 44 49 44 32 00 14 0f 5f 44 ...{...DID2..._D 2750: 43 53 00 a4 43 44 44 53 44 49 44 32 14 0f 5f 44 CS..CDDSDID2.._D 2760: 47 53 00 a4 4e 44 44 53 44 49 44 32 14 1f 5f 44 GS..NDDSDID2.._D 2770: 53 53 01 a0 18 93 7b 68 0c 00 00 00 c0 00 0c 00 SS....{h........ 2780: 00 00 c0 70 4e 53 54 45 43 53 54 45 5b 82 41 07 ...pNSTECSTE[.A. 2790: 44 44 30 33 14 1d 5f 41 44 52 08 a0 0a 93 44 49 DD03.._ADR....DI 27a0: 44 33 00 a4 0a 03 a1 0b a4 7b 0b ff ff 44 49 44 D3.......{...DID 27b0: 33 00 14 1c 5f 44 43 53 00 a0 0a 93 44 49 44 33 3..._DCS....DID3 27c0: 00 a4 0a 0b a1 0a a4 43 44 44 53 44 49 44 33 14 .......CDDSDID3. 27d0: 0f 5f 44 47 53 00 a4 4e 44 44 53 44 49 44 33 14 ._DGS..NDDSDID3. 27e0: 1f 5f 44 53 53 01 a0 18 93 7b 68 0c 00 00 00 c0 ._DSS....{h..... 27f0: 00 0c 00 00 00 c0 70 4e 53 54 45 43 53 54 45 5b ......pNSTECSTE[ 2800: 82 41 07 44 44 30 34 14 1d 5f 41 44 52 08 a0 0a .A.DD04.._ADR... 2810: 93 44 49 44 34 00 a4 0a 04 a1 0b a4 7b 0b ff ff .DID4.......{... 2820: 44 49 44 34 00 14 1c 5f 44 43 53 00 a0 0a 93 44 DID4..._DCS....D 2830: 49 44 34 00 a4 0a 0b a1 0a a4 43 44 44 53 44 49 ID4.......CDDSDI 2840: 44 34 14 0f 5f 44 47 53 00 a4 4e 44 44 53 44 49 D4.._DGS..NDDSDI 2850: 44 34 14 1f 5f 44 53 53 01 a0 18 93 7b 68 0c 00 D4.._DSS....{h.. 2860: 00 00 c0 00 0c 00 00 00 c0 70 4e 53 54 45 43 53 .........pNSTECS 2870: 54 45 5b 82 41 07 44 44 30 35 14 1d 5f 41 44 52 TE[.A.DD05.._ADR 2880: 08 a0 0a 93 44 49 44 35 00 a4 0a 05 a1 0b a4 7b ....DID5.......{ 2890: 0b ff ff 44 49 44 35 00 14 1c 5f 44 43 53 00 a0 ...DID5..._DCS.. 28a0: 0a 93 44 49 44 35 00 a4 0a 0b a1 0a a4 43 44 44 ..DID5.......CDD 28b0: 53 44 49 44 35 14 0f 5f 44 47 53 00 a4 4e 44 44 SDID5.._DGS..NDD 28c0: 53 44 49 44 35 14 1f 5f 44 53 53 01 a0 18 93 7b SDID5.._DSS....{ 28d0: 68 0c 00 00 00 c0 00 0c 00 00 00 c0 70 4e 53 54 h...........pNST 28e0: 45 43 53 54 45 14 4e 06 53 44 44 4c 01 75 4e 44 ECSTE.N.SDDL.uND 28f0: 49 44 70 7b 68 0b 0f 0f 00 60 7d 0c 00 00 00 80 IDp{h....`}..... 2900: 60 61 a0 09 93 44 49 44 4c 60 a4 61 a0 09 93 44 `a...DIDL`.a...D 2910: 44 4c 32 60 a4 61 a0 09 93 44 44 4c 33 60 a4 61 DL2`.a...DDL3`.a 2920: a0 09 93 44 44 4c 34 60 a4 61 a0 09 93 44 44 4c ...DDL4`.a...DDL 2930: 35 60 a4 61 a0 09 93 44 44 4c 36 60 a4 61 a0 09 5`.a...DDL6`.a.. 2940: 93 44 44 4c 37 60 a4 61 a0 09 93 44 44 4c 38 60 .DDL7`.a...DDL8` 2950: a4 61 a4 00 14 4a 08 43 44 44 53 01 a0 0f 93 43 .a...J.CDDS....C 2960: 41 44 4c 7b 68 0b 0f 0f 00 a4 0a 1f a0 0f 93 43 ADL{h..........C 2970: 41 4c 32 7b 68 0b 0f 0f 00 a4 0a 1f a0 0f 93 43 AL2{h..........C 2980: 41 4c 33 7b 68 0b 0f 0f 00 a4 0a 1f a0 0f 93 43 AL3{h..........C 2990: 41 4c 34 7b 68 0b 0f 0f 00 a4 0a 1f a0 0f 93 43 AL4{h..........C 29a0: 41 4c 35 7b 68 0b 0f 0f 00 a4 0a 1f a0 0f 93 43 AL5{h..........C 29b0: 41 4c 36 7b 68 0b 0f 0f 00 a4 0a 1f a0 0f 93 43 AL6{h..........C 29c0: 41 4c 37 7b 68 0b 0f 0f 00 a4 0a 1f a0 0f 93 43 AL7{h..........C 29d0: 41 4c 38 7b 68 0b 0f 0f 00 a4 0a 1f a4 0a 1d 14 AL8{h........... 29e0: 41 08 4e 44 44 53 01 a0 0e 93 4e 41 44 4c 7b 68 A.NDDS....NADL{h 29f0: 0b 0f 0f 00 a4 01 a0 0e 93 4e 44 4c 32 7b 68 0b .........NDL2{h. 2a00: 0f 0f 00 a4 01 a0 0e 93 4e 44 4c 33 7b 68 0b 0f ........NDL3{h.. 2a10: 0f 00 a4 01 a0 0e 93 4e 44 4c 34 7b 68 0b 0f 0f .......NDL4{h... 2a20: 00 a4 01 a0 0e 93 4e 44 4c 35 7b 68 0b 0f 0f 00 ......NDL5{h.... 2a30: a4 01 a0 0e 93 4e 44 4c 36 7b 68 0b 0f 0f 00 a4 .....NDL6{h..... 2a40: 01 a0 0e 93 4e 44 4c 37 7b 68 0b 0f 0f 00 a4 01 ....NDL7{h...... 2a50: a0 0e 93 4e 44 4c 38 7b 68 0b 0f 0f 00 a4 01 a4 ...NDL8{h....... 2a60: 00 14 40 07 42 52 54 4e 09 a0 14 93 7b 44 49 44 ..@.BRTN....{DID 2a70: 31 0b 00 0f 00 0b 00 04 86 44 44 30 31 68 a0 14 1........DD01h.. 2a80: 93 7b 44 49 44 32 0b 00 0f 00 0b 00 04 86 44 44 .{DID2........DD 2a90: 30 32 68 a0 14 93 7b 44 49 44 33 0b 00 0f 00 0b 02h...{DID3..... 2aa0: 00 04 86 44 44 30 33 68 a0 14 93 7b 44 49 44 34 ...DD03h...{DID4 2ab0: 0b 00 0f 00 0b 00 04 86 44 44 30 34 68 a0 14 93 ........DD04h... 2ac0: 7b 44 49 44 35 0b 00 0f 00 0b 00 04 86 44 44 30 {DID5........DD0 2ad0: 35 68 10 24 5e 5e 50 43 49 30 5b 80 4d 43 48 50 5h.$^^PCI0[.MCHP 2ae0: 02 0a 40 0a c0 5b 81 10 4d 43 48 50 00 00 40 30 ..@..[..MCHP..@0 2af0: 54 41 53 4d 0a 00 06 5b 80 49 47 44 50 02 0a 40 TASM...[.IGDP..@ 2b00: 0a c0 5b 81 45 05 49 47 44 50 00 00 40 09 00 01 ..[.E.IGDP..@... 2b10: 47 49 56 44 01 00 02 47 55 4d 41 03 00 09 00 04 GIVD...GUMA..... 2b20: 47 4d 46 4e 01 00 1b 00 40 46 41 53 4c 45 08 00 GMFN....@FASLE.. 2b30: 18 47 53 53 45 01 47 53 53 42 0e 47 53 45 53 01 .GSSE.GSSB.GSES. 2b40: 00 30 00 08 43 44 56 4c 05 00 03 00 18 4c 42 50 .0..CDVL.....LBP 2b50: 43 08 00 30 41 53 4c 53 20 5b 80 49 47 44 4d 00 C..0ASLS [.IGDM. 2b60: 41 53 4c 42 0b 00 20 5b 81 4e 16 49 47 44 4d 00 ASLB.. [.N.IGDM. 2b70: 53 49 47 4e 40 08 53 49 5a 45 20 4f 56 45 52 20 SIGN@.SIZE OVER 2b80: 53 56 45 52 40 10 56 56 45 52 40 08 47 56 45 52 SVER@.VVER@.GVER 2b90: 40 08 4d 42 4f 58 20 00 40 52 44 52 44 59 20 43 @.MBOX .@RDRDY C 2ba0: 53 54 53 20 43 45 56 54 20 00 40 0a 44 49 44 4c STS CEVT .@.DIDL 2bb0: 20 44 44 4c 32 20 44 44 4c 33 20 44 44 4c 34 20 DDL2 DDL3 DDL4 2bc0: 44 44 4c 35 20 44 44 4c 36 20 44 44 4c 37 20 44 DDL5 DDL6 DDL7 D 2bd0: 44 4c 38 20 43 50 44 4c 20 43 50 4c 32 20 43 50 DL8 CPDL CPL2 CP 2be0: 4c 33 20 43 50 4c 34 20 43 50 4c 35 20 43 50 4c L3 CPL4 CPL5 CPL 2bf0: 36 20 43 50 4c 37 20 43 50 4c 38 20 43 41 44 4c 6 CPL7 CPL8 CADL 2c00: 20 43 41 4c 32 20 43 41 4c 33 20 43 41 4c 34 20 CAL2 CAL3 CAL4 2c10: 43 41 4c 35 20 43 41 4c 36 20 43 41 4c 37 20 43 CAL5 CAL6 CAL7 C 2c20: 41 4c 38 20 4e 41 44 4c 20 4e 44 4c 32 20 4e 44 AL8 NADL NDL2 ND 2c30: 4c 33 20 4e 44 4c 34 20 4e 44 4c 35 20 4e 44 4c L3 NDL4 NDL5 NDL 2c40: 36 20 4e 44 4c 37 20 4e 44 4c 38 20 41 53 4c 50 6 NDL7 NDL8 ASLP 2c50: 20 54 49 44 58 20 43 48 50 44 20 43 4c 49 44 20 TIDX CHPD CLID 2c60: 43 44 43 4b 20 53 58 53 57 20 45 56 54 53 20 43 CDCK SXSW EVTS C 2c70: 4e 4f 54 20 4e 52 44 59 20 00 40 1e 53 43 49 45 NOT NRDY .@.SCIE 2c80: 01 47 45 46 43 04 47 58 46 43 03 47 45 53 46 08 .GEFC.GXFC.GESF. 2c90: 00 10 50 41 52 4d 20 44 53 4c 50 20 00 40 7a 41 ..PARM DSLP .@zA 2ca0: 52 44 59 20 41 53 4c 43 20 54 43 48 45 20 41 4c RDY ASLC TCHE AL 2cb0: 53 49 20 42 43 4c 50 20 50 46 49 54 20 43 42 4c SI BCLP PFIT CBL 2cc0: 56 20 42 43 4c 4d 40 14 43 50 46 4d 20 00 40 5c V BCLM@.CPFM .@\ 2cd0: 47 56 44 31 80 00 0e 08 44 42 54 42 12 32 15 00 GVD1....DBTB.2.. 2ce0: 0a 07 0a 38 0b c0 01 0b 00 0e 0a 3f 0b c7 01 0b ...8.......?.... 2cf0: 07 0e 0b f8 01 0b 38 0e 0b c0 0f 00 00 00 00 00 ......8......... 2d00: 0b 00 70 0b 07 70 0b 38 70 0b c0 71 0b 00 7e 08 ..p..p.8p..q..~. 2d10: 43 44 43 54 12 23 03 12 0a 03 0a c8 0b 40 01 0b CDCT.#.......@.. 2d20: 90 01 12 0a 03 0a c8 0b 4d 01 0b 90 01 12 0a 03 ........M....... 2d30: 0a de 0b 4d 01 0b 7d 01 08 53 55 43 43 01 08 4e ...M..}..SUCC..N 2d40: 56 4c 44 0a 02 08 43 52 49 54 0a 04 08 4e 43 52 VLD...CRIT...NCR 2d50: 54 0a 06 14 4c 4a 47 53 43 49 08 14 44 1e 47 42 T...LJGSCI..D.GB 2d60: 44 41 08 a0 1a 93 47 45 53 46 00 70 0b 79 02 50 DA....GESF.p.y.P 2d70: 41 52 4d 70 00 47 45 53 46 a4 53 55 43 43 a0 1a ARMp.GESF.SUCC.. 2d80: 93 47 45 53 46 01 70 0b 40 02 50 41 52 4d 70 00 .GESF.p.@.PARMp. 2d90: 47 45 53 46 a4 53 55 43 43 a0 47 04 93 47 45 53 GESF.SUCC.G..GES 2da0: 46 0a 04 7b 50 41 52 4d 0c 00 00 ff ef 50 41 52 F..{PARM.....PAR 2db0: 4d 7b 50 41 52 4d 79 83 88 44 42 54 42 49 42 54 M{PARMy..DBTBIBT 2dc0: 54 00 0a 10 00 50 41 52 4d 7d 49 42 54 54 50 41 T....PARM}IBTTPA 2dd0: 52 4d 50 41 52 4d 70 00 47 45 53 46 a4 53 55 43 RMPARMp.GESF.SUC 2de0: 43 a0 4a 06 93 47 45 53 46 0a 05 70 49 50 53 43 C.J..GESF..pIPSC 2df0: 50 41 52 4d 7d 50 41 52 4d 79 49 50 41 54 0a 08 PARM}PARMyIPAT.. 2e00: 00 50 41 52 4d 72 50 41 52 4d 0b 00 01 50 41 52 .PARMrPARM...PAR 2e10: 4d 7d 50 41 52 4d 79 4c 49 44 53 0a 10 00 50 41 M}PARMyLIDS...PA 2e20: 52 4d 72 50 41 52 4d 0c 00 00 01 00 50 41 52 4d RMrPARM.....PARM 2e30: 7d 50 41 52 4d 79 49 42 49 41 0a 14 00 50 41 52 }PARMyIBIA...PAR 2e40: 4d 70 00 47 45 53 46 a4 53 55 43 43 a0 2d 93 47 Mp.GESF.SUCC.-.G 2e50: 45 53 46 0a 06 70 49 54 56 46 50 41 52 4d 7d 50 ESF..pITVFPARM}P 2e60: 41 52 4d 79 49 54 56 4d 0a 04 00 50 41 52 4d 70 ARMyITVM...PARMp 2e70: 00 47 45 53 46 a4 53 55 43 43 a0 4f 08 93 47 45 .GESF.SUCC.O..GE 2e80: 53 46 0a 07 70 47 49 56 44 50 41 52 4d 7f 50 41 SF..pGIVDPARM.PA 2e90: 52 4d 01 50 41 52 4d 7d 50 41 52 4d 79 47 4d 46 RM.PARM}PARMyGMF 2ea0: 4e 01 00 50 41 52 4d 7d 50 41 52 4d 0b 00 10 50 N..PARM}PARM...P 2eb0: 41 52 4d a0 16 49 44 4d 4d 7d 50 41 52 4d 79 49 ARM..IDMM}PARMyI 2ec0: 44 4d 53 0a 11 00 50 41 52 4d a1 12 7d 50 41 52 DMS...PARM..}PAR 2ed0: 4d 79 49 44 4d 53 0a 0d 00 50 41 52 4d 7d 79 83 MyIDMS...PARM}y. 2ee0: 88 83 88 43 44 43 54 48 56 43 4f 00 74 43 44 56 ...CDCTHVCO.tCDV 2ef0: 4c 01 00 00 0a 15 00 50 41 52 4d 50 41 52 4d 70 L......PARMPARMp 2f00: 01 47 45 53 46 a4 53 55 43 43 a0 2a 93 47 45 53 .GESF.SUCC.*.GES 2f10: 46 0a 0a 70 00 50 41 52 4d a0 10 49 53 53 43 7d F..p.PARM..ISSC} 2f20: 50 41 52 4d 0a 03 50 41 52 4d 70 00 47 45 53 46 PARM..PARMp.GESF 2f30: a4 53 55 43 43 70 00 47 45 53 46 a4 43 52 49 54 .SUCCp.GESF.CRIT 2f40: 14 41 28 53 42 43 42 08 a0 20 93 47 45 53 46 00 .A(SBCB.. .GESF. 2f50: 70 00 50 41 52 4d 70 0b 7d f7 50 41 52 4d 70 00 p.PARMp.}.PARMp. 2f60: 47 45 53 46 a4 53 55 43 43 a0 18 93 47 45 53 46 GESF.SUCC...GESF 2f70: 01 70 00 47 45 53 46 70 00 50 41 52 4d a4 53 55 .p.GESFp.PARM.SU 2f80: 43 43 a0 19 93 47 45 53 46 0a 03 70 00 47 45 53 CC...GESF..p.GES 2f90: 46 70 00 50 41 52 4d a4 53 55 43 43 a0 19 93 47 Fp.PARM.SUCC...G 2fa0: 45 53 46 0a 04 70 00 47 45 53 46 70 00 50 41 52 ESF..p.GESFp.PAR 2fb0: 4d a4 53 55 43 43 a0 19 93 47 45 53 46 0a 05 70 M.SUCC...GESF..p 2fc0: 00 47 45 53 46 70 00 50 41 52 4d a4 53 55 43 43 .GESFp.PARM.SUCC 2fd0: a0 37 93 47 45 53 46 0a 06 70 7b 50 41 52 4d 0a .7.GESF..p{PARM. 2fe0: 0f 00 49 54 56 46 70 7a 7b 50 41 52 4d 0a f0 00 ..ITVFpz{PARM... 2ff0: 0a 04 00 49 54 56 4d 70 00 47 45 53 46 70 00 50 ...ITVMp.GESFp.P 3000: 41 52 4d a4 53 55 43 43 a0 19 93 47 45 53 46 0a ARM.SUCC...GESF. 3010: 07 70 00 47 45 53 46 70 00 50 41 52 4d a4 53 55 .p.GESFp.PARM.SU 3020: 43 43 a0 19 93 47 45 53 46 0a 08 70 00 47 45 53 CC...GESF..p.GES 3030: 46 70 00 50 41 52 4d a4 53 55 43 43 a0 24 93 47 Fp.PARM.SUCC.$.G 3040: 45 53 46 0a 09 7b 50 41 52 4d 0a ff 49 42 54 54 ESF..{PARM..IBTT 3050: 70 00 47 45 53 46 70 00 50 41 52 4d a4 53 55 43 p.GESFp.PARM.SUC 3060: 43 a0 46 05 93 47 45 53 46 0a 0a 7b 50 41 52 4d C.F..GESF..{PARM 3070: 0a ff 49 50 53 43 a0 21 7b 7a 50 41 52 4d 0a 08 ..IPSC.!{zPARM.. 3080: 00 0a ff 00 7b 7a 50 41 52 4d 0a 08 00 0a ff 49 ....{zPARM.....I 3090: 50 41 54 76 49 50 41 54 7b 7a 50 41 52 4d 0a 14 PATvIPAT{zPARM.. 30a0: 00 0a 07 49 42 49 41 70 00 47 45 53 46 70 00 50 ...IBIAp.GESFp.P 30b0: 41 52 4d a4 53 55 43 43 a0 40 06 93 47 45 53 46 ARM.SUCC.@..GESF 30c0: 0a 0b 7b 7a 50 41 52 4d 01 00 01 49 46 31 45 a0 ..{zPARM...IF1E. 30d0: 21 7b 50 41 52 4d 0c 00 e0 01 00 00 7b 7a 50 41 !{PARM......{zPA 30e0: 52 4d 0a 0d 00 0a 0f 49 44 4d 53 70 00 49 44 4d RM.....IDMSp.IDM 30f0: 4d a1 16 7b 7a 50 41 52 4d 0a 11 00 0a 0f 49 44 M..{zPARM.....ID 3100: 4d 53 70 01 49 44 4d 4d 70 00 47 45 53 46 70 00 MSp.IDMMp.GESFp. 3110: 50 41 52 4d a4 53 55 43 43 a0 19 93 47 45 53 46 PARM.SUCC...GESF 3120: 0a 10 70 00 47 45 53 46 70 00 50 41 52 4d a4 53 ..p.GESFp.PARM.S 3130: 55 43 43 a0 1f 93 47 45 53 46 0a 11 7d 50 41 52 UCC...GESF..}PAR 3140: 4d 0b 00 01 50 41 52 4d 70 00 47 45 53 46 a4 53 M...PARMp.GESF.S 3150: 55 43 43 a0 49 04 93 47 45 53 46 0a 12 a0 26 7b UCC.I..GESF...&{ 3160: 50 41 52 4d 01 00 a0 10 93 7a 50 41 52 4d 01 00 PARM.....zPARM.. 3170: 01 70 01 49 53 53 43 a1 0c 70 00 47 45 53 46 a4 .p.ISSC..p.GESF. 3180: 43 52 49 54 a1 07 70 00 49 53 53 43 70 00 47 45 CRIT..p.ISSCp.GE 3190: 53 46 70 00 50 41 52 4d a4 53 55 43 43 a0 19 93 SFp.PARM.SUCC... 31a0: 47 45 53 46 0a 13 70 00 47 45 53 46 70 00 50 41 GESF..p.GESFp.PA 31b0: 52 4d a4 53 55 43 43 70 00 47 45 53 46 a4 53 55 RM.SUCCp.GESF.SU 31c0: 43 43 a0 11 93 47 45 46 43 0a 04 70 47 42 44 41 CC...GEFC..pGBDA 31d0: 47 58 46 43 a0 11 93 47 45 46 43 0a 06 70 53 42 GXFC...GEFC..pSB 31e0: 43 42 47 58 46 43 70 00 47 45 46 43 70 01 53 43 CBGXFCp.GEFCp.SC 31f0: 49 53 70 00 47 53 53 45 70 00 53 43 49 45 a4 00 ISp.GSSEp.SCIE.. 3200: 14 19 50 44 52 44 00 a0 0c 92 44 52 44 59 5b 22 ..PDRD....DRDY[" 3210: 41 53 4c 50 a4 92 44 52 44 59 14 1d 50 53 54 53 ASLP..DRDY..PSTS 3220: 00 a0 0e 94 43 53 54 53 0a 02 5b 22 41 53 4c 50 ....CSTS..["ASLP 3230: a4 93 43 53 54 53 0a 03 14 47 06 47 4e 4f 54 02 ..CSTS...G.GNOT. 3240: a0 07 50 44 52 44 a4 01 a0 07 50 53 54 53 a4 01 ..PDRD....PSTS.. 3250: 70 68 43 45 56 54 70 0a 03 43 53 54 53 a0 2c 90 phCEVTp..CSTS.,. 3260: 93 43 48 50 44 00 93 69 00 a0 18 91 94 4f 53 59 .CHPD..i.....OSY 3270: 53 0b d0 07 95 4f 53 59 53 0b d6 07 86 50 43 49 S....OSYS....PCI 3280: 30 69 a1 07 86 47 46 58 30 69 86 47 46 58 30 0a 0i...GFX0i.GFX0. 3290: 80 a0 0c 92 50 53 54 53 70 00 43 45 56 54 a4 00 ....PSTSp.CEVT.. 32a0: 14 13 47 48 44 53 01 70 68 54 49 44 58 a4 47 4e ..GHDS.phTIDX.GN 32b0: 4f 54 01 00 14 14 47 4c 49 44 01 70 68 43 4c 49 OT....GLID.phCLI 32c0: 44 a4 47 4e 4f 54 0a 02 00 14 15 47 44 43 4b 01 D.GNOT.....GDCK. 32d0: 70 68 43 44 43 4b a4 47 4e 4f 54 0a 04 0a 80 14 phCDCK.GNOT..... 32e0: 19 50 41 52 44 00 a0 0c 92 41 52 44 59 5b 22 41 .PARD....ARDY["A 32f0: 53 4c 50 a4 92 41 52 44 59 14 46 0c 41 49 4e 54 SLP..ARDY.F.AINT 3300: 02 a0 0e 92 7b 54 43 48 45 79 01 68 00 00 a4 01 ....{TCHEy.h.... 3310: a0 07 50 41 52 44 a4 01 a0 4c 05 93 68 0a 02 a0 ..PARD...L..h... 3320: 33 43 50 46 4d a0 0e 93 43 50 46 4d 01 70 0a 06 3CPFM...CPFM.p.. 3330: 50 46 49 54 a0 0f 93 43 50 46 4d 0a 06 70 0a 08 PFIT...CPFM..p.. 3340: 50 46 49 54 a0 0e 93 43 50 46 4d 0a 08 70 01 50 PFIT...CPFM..p.P 3350: 46 49 54 a1 0c 7f 50 46 49 54 0a 07 50 46 49 54 FIT...PFIT..PFIT 3360: 7d 50 46 49 54 0c 00 00 00 80 50 46 49 54 70 0a }PFIT.....PFITp. 3370: 04 41 53 4c 43 a1 42 04 a0 28 93 68 01 70 78 77 .ASLC.B..(.h.pxw 3380: 69 0a ff 00 0a 64 00 00 42 43 4c 50 7d 42 43 4c i....d..BCLP}BCL 3390: 50 0c 00 00 00 80 42 43 4c 50 70 0a 02 41 53 4c P.....BCLPp..ASL 33a0: 43 a1 16 a0 10 93 68 00 70 69 41 4c 53 49 70 01 C.....h.piALSIp. 33b0: 41 53 4c 43 a1 03 a4 01 70 00 4c 42 50 43 a4 00 ASLC....p.LBPC.. 33c0: 10 41 36 5c 00 5b 80 49 4f 5f 54 01 0b 00 08 0a .A6\.[.IO_T..... 33d0: 10 5b 81 0e 49 4f 5f 54 01 00 40 04 54 52 50 30 .[..IO_T..@.TRP0 33e0: 08 5b 80 50 4d 49 4f 01 0b 00 10 0a 80 5b 81 28 .[.PMIO......[.( 33f0: 50 4d 49 4f 01 00 40 15 00 08 00 02 41 43 50 57 PMIO..@.....ACPW 3400: 01 00 45 0b 00 01 47 50 45 43 01 00 4e 10 00 09 ..E...GPEC..N... 3410: 53 43 49 53 01 00 06 5b 80 47 50 49 4f 01 0b 80 SCIS...[.GPIO... 3420: 11 0a 3c 5b 81 40 0c 47 50 49 4f 01 47 55 30 30 ..<[.@.GPIO.GU00 3430: 08 47 55 30 31 08 47 55 30 32 08 47 55 30 33 08 .GU01.GU02.GU03. 3440: 47 49 4f 30 08 47 49 4f 31 08 47 49 4f 32 08 47 GIO0.GIO1.GIO2.G 3450: 49 4f 33 08 00 20 47 4c 30 30 08 47 4c 30 31 08 IO3.. GL00.GL01. 3460: 47 4c 30 32 08 00 03 47 50 32 37 01 47 50 32 38 GL02...GP27.GP28 3470: 01 00 03 00 40 04 47 42 30 30 08 47 42 30 31 08 ....@.GB00.GB01. 3480: 47 42 30 32 08 47 42 30 33 08 00 40 08 47 49 56 GB02.GB03..@.GIV 3490: 30 08 00 03 4c 50 4f 4c 01 00 04 47 49 56 32 08 0...LPOL...GIV2. 34a0: 47 49 56 33 08 47 55 30 34 08 47 55 30 35 08 47 GIV3.GU04.GU05.G 34b0: 55 30 36 08 47 55 30 37 08 47 49 4f 34 08 47 49 U06.GU07.GIO4.GI 34c0: 4f 35 08 47 49 4f 36 08 47 49 4f 37 08 00 05 47 O5.GIO6.GIO7...G 34d0: 50 33 37 01 00 02 47 4c 30 35 08 47 4c 30 36 08 P37...GL05.GL06. 34e0: 47 4c 30 37 08 5b 80 52 43 52 42 00 0c 00 c0 d1 GL07.[.RCRB..... 34f0: fe 0b 00 40 5b 81 48 05 52 43 52 42 13 00 80 00 ...@[.H.RCRB.... 3500: 08 00 80 00 10 00 80 02 02 48 50 41 53 02 00 05 .........HPAS... 3510: 48 50 41 45 01 00 48 09 00 01 50 41 54 44 01 53 HPAE..H...PATD.S 3520: 41 54 44 01 53 4d 42 44 01 48 44 41 44 01 00 0b ATD.SMBD.HDAD... 3530: 52 50 31 44 01 52 50 32 44 01 52 50 33 44 01 52 RP1D.RP2D.RP3D.R 3540: 50 34 44 01 52 50 35 44 01 52 50 36 44 01 08 5f P4D.RP5D.RP6D.._ 3550: 53 30 5f 12 05 03 00 00 00 08 5f 53 33 5f 12 07 S0_......._S3_.. 3560: 03 0a 05 0a 05 00 08 5f 53 34 5f 12 07 03 0a 06 ......._S4_..... 3570: 0a 06 00 08 5f 53 35 5f 12 07 03 0a 07 0a 07 00 ...._S5_........ 3580: 14 45 04 47 45 54 50 09 a0 0e 93 7b 68 0a 09 00 .E.GETP....{h... 3590: 00 a4 0c ff ff ff ff a0 0d 93 7b 68 0a 09 00 0a ..........{h.... 35a0: 08 a4 0b 84 03 7a 7b 68 0b 00 03 00 0a 08 60 7a .....z{h......`z 35b0: 7b 68 0b 00 30 00 0a 0c 61 a4 77 0a 1e 74 0a 09 {h..0...a.w..t.. 35c0: 72 60 61 00 00 00 14 30 47 44 4d 41 0d a0 23 68 r`a....0GDMA..#h 35d0: a0 07 90 69 6c a4 0a 14 a0 0e 90 6a 6c a4 77 74 ...il......jl.wt 35e0: 0a 04 6b 00 0a 0f 00 a4 77 74 0a 04 6b 00 0a 1e ..k.....wt..k... 35f0: 00 a4 0c ff ff ff ff 14 1f 47 45 54 54 09 a4 77 .........GETT..w 3600: 0a 1e 74 0a 09 72 7b 7a 68 0a 02 00 0a 03 00 7b ..t..r{zh......{ 3610: 68 0a 03 00 00 00 00 14 44 06 47 45 54 46 0b 08 h.......D.GETF.. 3620: 54 4d 50 46 00 a0 0c 68 7d 54 4d 50 46 01 54 4d TMPF...h}TMPF.TM 3630: 50 46 a0 11 7b 6a 0a 02 00 7d 54 4d 50 46 0a 02 PF..{j...}TMPF.. 3640: 54 4d 50 46 a0 0d 69 7d 54 4d 50 46 0a 04 54 4d TMPF..i}TMPF..TM 3650: 50 46 a0 11 7b 6a 0a 20 00 7d 54 4d 50 46 0a 08 PF..{j. .}TMPF.. 3660: 54 4d 50 46 a0 12 7b 6a 0b 00 40 00 7d 54 4d 50 TMPF..{j..@.}TMP 3670: 46 0a 10 54 4d 50 46 a4 54 4d 50 46 14 3d 53 45 F..TMPF.TMPF.=SE 3680: 54 50 0b a0 08 94 68 0a f0 a4 0a 08 a1 2d a0 27 TP....h......-.' 3690: 7b 69 0a 02 00 a0 10 90 92 94 68 0a 78 7b 6a 0a {i........h.x{j. 36a0: 02 00 a4 0b 01 23 a0 0f 90 92 94 68 0a b4 7b 6a .....#.....h..{j 36b0: 01 00 a4 0b 01 21 a4 0b 01 10 14 37 53 44 4d 41 .....!.....7SDMA 36c0: 09 a0 08 92 94 68 0a 14 a4 01 a0 09 92 94 68 0a .....h........h. 36d0: 1e a4 0a 02 a0 08 92 94 68 0a 2d a4 01 a0 09 92 ........h.-..... 36e0: 94 68 0a 3c a4 0a 02 a0 08 92 94 68 0a 5a a4 01 .h.<.......h.Z.. 36f0: a4 00 14 2f 53 45 54 54 0b a0 25 7b 69 0a 02 00 .../SETT..%{i... 3700: a0 0f 90 92 94 68 0a 78 7b 6a 0a 02 00 a4 0a 0b .....h.x{j...... 3710: a0 0e 90 92 94 68 0a b4 7b 6a 01 00 a4 0a 09 a4 .....h..{j...... 3720: 0a 04 5b 82 4b 04 48 44 45 46 08 5f 41 44 52 0c ..[.K.HDEF._ADR. 3730: 00 00 1b 00 5b 80 48 44 41 52 02 0a 4c 0a 10 5b ....[.HDAR..L..[ 3740: 81 22 48 44 41 52 02 44 43 4b 41 01 00 07 44 43 ."HDAR.DCKA...DC 3750: 4b 4d 01 00 06 44 43 4b 53 01 00 30 00 0f 50 4d KM...DCKS..0..PM 3760: 45 53 01 08 5f 50 52 57 12 06 02 0a 0d 0a 03 5b ES.._PRW.......[ 3770: 82 41 10 52 50 30 31 08 5f 41 44 52 0c 00 00 1c .A.RP01._ADR.... 3780: 00 5b 80 50 58 43 53 02 0a 40 0a c0 5b 81 45 04 .[.PXCS..@..[.E. 3790: 50 58 43 53 40 00 40 09 00 0d 4c 41 53 58 01 00 PXCS@.@...LASX.. 37a0: 32 41 42 50 58 01 00 02 50 44 43 58 01 00 02 50 2ABPX...PDCX...P 37b0: 44 53 58 01 00 01 4c 53 43 58 01 00 27 00 10 50 DSX...LSCX..'..P 37c0: 53 50 58 01 00 4f 3c 00 1e 48 50 53 58 01 50 4d SPX..O<..HPSX.PM 37d0: 53 58 01 5b 82 0b 50 58 53 58 08 5f 41 44 52 00 SX.[..PXSX._ADR. 37e0: 14 41 09 5f 50 52 54 00 a0 33 47 50 49 43 a4 12 .A._PRT..3GPIC.. 37f0: 2c 04 12 09 04 0b ff ff 00 00 0a 10 12 09 04 0b ,............... 3800: ff ff 01 00 0a 11 12 0a 04 0b ff ff 0a 02 00 0a ................ 3810: 12 12 0a 04 0b ff ff 0a 03 00 0a 13 a1 45 05 a4 .............E.. 3820: 12 41 05 04 12 12 04 0b ff ff 00 5e 5e 2e 4c 50 .A.........^^.LP 3830: 43 42 4c 4e 4b 41 00 12 12 04 0b ff ff 01 5e 5e CBLNKA........^^ 3840: 2e 4c 50 43 42 4c 4e 4b 42 00 12 13 04 0b ff ff .LPCBLNKB....... 3850: 0a 02 5e 5e 2e 4c 50 43 42 4c 4e 4b 43 00 12 13 ..^^.LPCBLNKC... 3860: 04 0b ff ff 0a 03 5e 5e 2e 4c 50 43 42 4c 4e 4b ......^^.LPCBLNK 3870: 44 00 5b 82 41 10 52 50 30 32 08 5f 41 44 52 0c D.[.A.RP02._ADR. 3880: 01 00 1c 00 5b 80 50 58 43 53 02 0a 40 0a c0 5b ....[.PXCS..@..[ 3890: 81 45 04 50 58 43 53 40 00 40 09 00 0d 4c 41 53 .E.PXCS@.@...LAS 38a0: 58 01 00 32 41 42 50 58 01 00 02 50 44 43 58 01 X..2ABPX...PDCX. 38b0: 00 02 50 44 53 58 01 00 01 4c 53 43 58 01 00 27 ..PDSX...LSCX..' 38c0: 00 10 50 53 50 58 01 00 4f 3c 00 1e 48 50 53 58 ..PSPX..O<..HPSX 38d0: 01 50 4d 53 58 01 5b 82 0b 50 58 53 58 08 5f 41 .PMSX.[..PXSX._A 38e0: 44 52 00 14 41 09 5f 50 52 54 00 a0 33 47 50 49 DR..A._PRT..3GPI 38f0: 43 a4 12 2c 04 12 09 04 0b ff ff 00 00 0a 11 12 C..,............ 3900: 09 04 0b ff ff 01 00 0a 12 12 0a 04 0b ff ff 0a ................ 3910: 02 00 0a 13 12 0a 04 0b ff ff 0a 03 00 0a 10 a1 ................ 3920: 45 05 a4 12 41 05 04 12 12 04 0b ff ff 00 5e 5e E...A.........^^ 3930: 2e 4c 50 43 42 4c 4e 4b 42 00 12 12 04 0b ff ff .LPCBLNKB....... 3940: 01 5e 5e 2e 4c 50 43 42 4c 4e 4b 43 00 12 13 04 .^^.LPCBLNKC.... 3950: 0b ff ff 0a 02 5e 5e 2e 4c 50 43 42 4c 4e 4b 44 .....^^.LPCBLNKD 3960: 00 12 13 04 0b ff ff 0a 03 5e 5e 2e 4c 50 43 42 .........^^.LPCB 3970: 4c 4e 4b 41 00 5b 82 4d 11 52 50 30 33 08 5f 41 LNKA.[.M.RP03._A 3980: 44 52 0c 02 00 1c 00 5b 80 50 58 43 53 02 0a 40 DR.....[.PXCS..@ 3990: 0a c0 5b 81 45 04 50 58 43 53 40 00 40 09 00 0d ..[.E.PXCS@.@... 39a0: 4c 41 53 58 01 00 32 41 42 50 58 01 00 02 50 44 LASX..2ABPX...PD 39b0: 43 58 01 00 02 50 44 53 58 01 00 01 4c 53 43 58 CX...PDSX...LSCX 39c0: 01 00 27 00 10 50 53 50 58 01 00 4f 3c 00 1e 48 ..'..PSPX..O<..H 39d0: 50 53 58 01 50 4d 53 58 01 5b 82 0b 50 58 53 58 PSX.PMSX.[..PXSX 39e0: 08 5f 41 44 52 00 08 2e 50 58 53 58 5f 52 4d 56 ._ADR...PXSX_RMV 39f0: 01 08 2e 50 58 53 58 5f 50 52 57 12 06 02 0a 09 ...PXSX_PRW..... 3a00: 0a 03 14 41 09 5f 50 52 54 00 a0 33 47 50 49 43 ...A._PRT..3GPIC 3a10: a4 12 2c 04 12 09 04 0b ff ff 00 00 0a 12 12 09 ..,............. 3a20: 04 0b ff ff 01 00 0a 13 12 0a 04 0b ff ff 0a 02 ................ 3a30: 00 0a 10 12 0a 04 0b ff ff 0a 03 00 0a 11 a1 45 ...............E 3a40: 05 a4 12 41 05 04 12 12 04 0b ff ff 00 5e 5e 2e ...A.........^^. 3a50: 4c 50 43 42 4c 4e 4b 43 00 12 12 04 0b ff ff 01 LPCBLNKC........ 3a60: 5e 5e 2e 4c 50 43 42 4c 4e 4b 44 00 12 13 04 0b ^^.LPCBLNKD..... 3a70: ff ff 0a 02 5e 5e 2e 4c 50 43 42 4c 4e 4b 41 00 ....^^.LPCBLNKA. 3a80: 12 13 04 0b ff ff 0a 03 5e 5e 2e 4c 50 43 42 4c ........^^.LPCBL 3a90: 4e 4b 42 00 5b 82 4f 11 52 50 30 34 08 5f 41 44 NKB.[.O.RP04._AD 3aa0: 52 0c 03 00 1c 00 5b 80 50 58 43 53 02 0a 40 0a R.....[.PXCS..@. 3ab0: c0 5b 81 45 04 50 58 43 53 40 00 40 09 00 0d 4c .[.E.PXCS@.@...L 3ac0: 41 53 58 01 00 32 41 42 50 58 01 00 02 50 44 43 ASX..2ABPX...PDC 3ad0: 58 01 00 02 50 44 53 58 01 00 01 4c 53 43 58 01 X...PDSX...LSCX. 3ae0: 00 27 00 10 50 53 50 58 01 00 4f 3c 00 1e 48 50 .'..PSPX..O<..HP 3af0: 53 58 01 50 4d 53 58 01 5b 82 29 50 58 53 58 08 SX.PMSX.[.)PXSX. 3b00: 5f 41 44 52 00 14 1d 5f 50 52 57 00 a0 0d 57 4b _ADR..._PRW...WK 3b10: 4c 4e a4 12 06 02 0a 09 0a 03 a1 08 a4 12 05 02 LN.............. 3b20: 0a 09 00 14 41 09 5f 50 52 54 00 a0 33 47 50 49 ....A._PRT..3GPI 3b30: 43 a4 12 2c 04 12 09 04 0b ff ff 00 00 0a 13 12 C..,............ 3b40: 09 04 0b ff ff 01 00 0a 10 12 0a 04 0b ff ff 0a ................ 3b50: 02 00 0a 11 12 0a 04 0b ff ff 0a 03 00 0a 12 a1 ................ 3b60: 45 05 a4 12 41 05 04 12 12 04 0b ff ff 00 5e 5e E...A.........^^ 3b70: 2e 4c 50 43 42 4c 4e 4b 44 00 12 12 04 0b ff ff .LPCBLNKD....... 3b80: 01 5e 5e 2e 4c 50 43 42 4c 4e 4b 41 00 12 13 04 .^^.LPCBLNKA.... 3b90: 0b ff ff 0a 02 5e 5e 2e 4c 50 43 42 4c 4e 4b 42 .....^^.LPCBLNKB 3ba0: 00 12 13 04 0b ff ff 0a 03 5e 5e 2e 4c 50 43 42 .........^^.LPCB 3bb0: 4c 4e 4b 43 00 5b 82 41 10 52 50 30 35 08 5f 41 LNKC.[.A.RP05._A 3bc0: 44 52 0c 04 00 1c 00 5b 80 50 58 43 53 02 0a 40 DR.....[.PXCS..@ 3bd0: 0a c0 5b 81 45 04 50 58 43 53 40 00 40 09 00 0d ..[.E.PXCS@.@... 3be0: 4c 41 53 58 01 00 32 41 42 50 58 01 00 02 50 44 LASX..2ABPX...PD 3bf0: 43 58 01 00 02 50 44 53 58 01 00 01 4c 53 43 58 CX...PDSX...LSCX 3c00: 01 00 27 00 10 50 53 50 58 01 00 4f 3c 00 1e 48 ..'..PSPX..O<..H 3c10: 50 53 58 01 50 4d 53 58 01 5b 82 0b 50 58 53 58 PSX.PMSX.[..PXSX 3c20: 08 5f 41 44 52 00 14 41 09 5f 50 52 54 00 a0 33 ._ADR..A._PRT..3 3c30: 47 50 49 43 a4 12 2c 04 12 09 04 0b ff ff 00 00 GPIC..,......... 3c40: 0a 10 12 09 04 0b ff ff 01 00 0a 11 12 0a 04 0b ................ 3c50: ff ff 0a 02 00 0a 12 12 0a 04 0b ff ff 0a 03 00 ................ 3c60: 0a 13 a1 45 05 a4 12 41 05 04 12 12 04 0b ff ff ...E...A........ 3c70: 00 5e 5e 2e 4c 50 43 42 4c 4e 4b 41 00 12 12 04 .^^.LPCBLNKA.... 3c80: 0b ff ff 01 5e 5e 2e 4c 50 43 42 4c 4e 4b 42 00 ....^^.LPCBLNKB. 3c90: 12 13 04 0b ff ff 0a 02 5e 5e 2e 4c 50 43 42 4c ........^^.LPCBL 3ca0: 4e 4b 43 00 12 13 04 0b ff ff 0a 03 5e 5e 2e 4c NKC.........^^.L 3cb0: 50 43 42 4c 4e 4b 44 00 5b 82 41 10 52 50 30 36 PCBLNKD.[.A.RP06 3cc0: 08 5f 41 44 52 0c 05 00 1c 00 5b 80 50 58 43 53 ._ADR.....[.PXCS 3cd0: 02 0a 40 0a c0 5b 81 45 04 50 58 43 53 40 00 40 ..@..[.E.PXCS@.@ 3ce0: 09 00 0d 4c 41 53 58 01 00 32 41 42 50 58 01 00 ...LASX..2ABPX.. 3cf0: 02 50 44 43 58 01 00 02 50 44 53 58 01 00 01 4c .PDCX...PDSX...L 3d00: 53 43 58 01 00 27 00 10 50 53 50 58 01 00 4f 3c SCX..'..PSPX..O< 3d10: 00 1e 48 50 53 58 01 50 4d 53 58 01 5b 82 0b 50 ..HPSX.PMSX.[..P 3d20: 58 53 58 08 5f 41 44 52 00 14 41 09 5f 50 52 54 XSX._ADR..A._PRT 3d30: 00 a0 33 47 50 49 43 a4 12 2c 04 12 09 04 0b ff ..3GPIC..,...... 3d40: ff 00 00 0a 11 12 09 04 0b ff ff 01 00 0a 12 12 ................ 3d50: 0a 04 0b ff ff 0a 02 00 0a 13 12 0a 04 0b ff ff ................ 3d60: 0a 03 00 0a 10 a1 45 05 a4 12 41 05 04 12 12 04 ......E...A..... 3d70: 0b ff ff 00 5e 5e 2e 4c 50 43 42 4c 4e 4b 42 00 ....^^.LPCBLNKB. 3d80: 12 12 04 0b ff ff 01 5e 5e 2e 4c 50 43 42 4c 4e .......^^.LPCBLN 3d90: 4b 43 00 12 13 04 0b ff ff 0a 02 5e 5e 2e 4c 50 KC.........^^.LP 3da0: 43 42 4c 4e 4b 44 00 12 13 04 0b ff ff 0a 03 5e CBLNKD.........^ 3db0: 5e 2e 4c 50 43 42 4c 4e 4b 41 00 5b 82 4d 06 55 ^.LPCBLNKA.[.M.U 3dc0: 53 42 31 08 5f 41 44 52 0c 00 00 1d 00 5b 80 55 SB1._ADR.....[.U 3dd0: 31 43 53 02 0a c4 0a 04 5b 81 0b 55 31 43 53 03 1CS.....[..U1CS. 3de0: 55 31 45 4e 02 08 5f 50 52 57 12 06 02 0a 03 0a U1EN.._PRW...... 3df0: 03 14 24 5f 50 53 57 01 a0 15 68 70 01 41 43 50 ..$_PSW...hp.ACP 3e00: 57 a0 0c 41 43 50 57 70 0a 03 55 31 45 4e a1 07 W..ACPWp..U1EN.. 3e10: 70 00 55 31 45 4e 14 09 5f 53 33 44 00 a4 0a 02 p.U1EN.._S3D.... 3e20: 14 09 5f 53 34 44 00 a4 0a 02 5b 82 4c 06 55 53 .._S4D....[.L.US 3e30: 42 32 08 5f 41 44 52 0c 01 00 1d 00 5b 80 55 32 B2._ADR.....[.U2 3e40: 43 53 02 0a c4 0a 04 5b 81 0b 55 32 43 53 03 55 CS.....[..U2CS.U 3e50: 32 45 4e 02 08 5f 50 52 57 12 06 02 0a 04 0a 03 2EN.._PRW....... 3e60: 14 23 5f 50 53 57 01 a0 14 68 70 01 41 43 50 57 .#_PSW...hp.ACPW 3e70: a0 0b 41 43 50 57 70 01 55 32 45 4e a1 07 70 00 ..ACPWp.U2EN..p. 3e80: 55 32 45 4e 14 09 5f 53 33 44 00 a4 0a 02 14 09 U2EN.._S3D...... 3e90: 5f 53 34 44 00 a4 0a 02 5b 82 4d 06 55 53 42 33 _S4D....[.M.USB3 3ea0: 08 5f 41 44 52 0c 02 00 1d 00 5b 80 55 32 43 53 ._ADR.....[.U2CS 3eb0: 02 0a c4 0a 04 5b 81 0b 55 32 43 53 03 55 33 45 .....[..U2CS.U3E 3ec0: 4e 02 08 5f 50 52 57 12 06 02 0a 0c 0a 03 14 24 N.._PRW........$ 3ed0: 5f 50 53 57 01 a0 15 68 70 01 41 43 50 57 a0 0c _PSW...hp.ACPW.. 3ee0: 41 43 50 57 70 0a 03 55 33 45 4e a1 07 70 00 55 ACPWp..U3EN..p.U 3ef0: 33 45 4e 14 09 5f 53 33 44 00 a4 0a 02 14 09 5f 3EN.._S3D......_ 3f00: 53 34 44 00 a4 0a 02 5b 82 4d 06 55 53 42 34 08 S4D....[.M.USB4. 3f10: 5f 41 44 52 0c 00 00 1a 00 5b 80 55 34 43 53 02 _ADR.....[.U4CS. 3f20: 0a c4 0a 04 5b 81 0b 55 34 43 53 03 55 34 45 4e ....[..U4CS.U4EN 3f30: 02 08 5f 50 52 57 12 06 02 0a 0e 0a 03 14 24 5f .._PRW........$_ 3f40: 50 53 57 01 a0 15 68 70 01 41 43 50 57 a0 0c 41 PSW...hp.ACPW..A 3f50: 43 50 57 70 0a 03 55 34 45 4e a1 07 70 00 55 34 CPWp..U4EN..p.U4 3f60: 45 4e 14 09 5f 53 33 44 00 a4 0a 02 14 09 5f 53 EN.._S3D......_S 3f70: 34 44 00 a4 0a 02 5b 82 41 06 55 53 42 35 08 5f 4D....[.A.USB5._ 3f80: 41 44 52 0c 01 00 1a 00 5b 80 55 35 43 53 02 0a ADR.....[.U5CS.. 3f90: c4 0a 04 5b 81 0b 55 35 43 53 03 55 35 45 4e 02 ...[..U5CS.U5EN. 3fa0: 14 24 5f 50 53 57 01 a0 15 68 70 01 41 43 50 57 .$_PSW...hp.ACPW 3fb0: a0 0c 41 43 50 57 70 0a 03 55 35 45 4e a1 07 70 ..ACPWp..U5EN..p 3fc0: 00 55 35 45 4e 14 09 5f 53 33 44 00 a4 0a 02 14 .U5EN.._S3D..... 3fd0: 09 5f 53 34 44 00 a4 0a 02 5b 82 4b 0a 45 48 43 ._S4D....[.K.EHC 3fe0: 31 08 5f 41 44 52 0c 07 00 1d 00 5b 80 55 37 43 1._ADR.....[.U7C 3ff0: 53 02 0a 54 0a 04 5b 81 0d 55 37 43 53 03 00 0f S..T..[..U7CS... 4000: 50 4d 45 53 01 5b 82 4f 05 48 55 42 37 08 5f 41 PMES.[.O.HUB7._A 4010: 44 52 00 5b 82 0b 50 52 54 31 08 5f 41 44 52 01 DR.[..PRT1._ADR. 4020: 5b 82 0c 50 52 54 32 08 5f 41 44 52 0a 02 5b 82 [..PRT2._ADR..[. 4030: 0c 50 52 54 33 08 5f 41 44 52 0a 03 5b 82 0c 50 .PRT3._ADR..[..P 4040: 52 54 34 08 5f 41 44 52 0a 04 5b 82 0c 50 52 54 RT4._ADR..[..PRT 4050: 35 08 5f 41 44 52 0a 05 5b 82 0c 50 52 54 36 08 5._ADR..[..PRT6. 4060: 5f 41 44 52 0a 06 08 5f 50 52 57 12 06 02 0a 0d _ADR..._PRW..... 4070: 0a 03 14 09 5f 53 33 44 00 a4 0a 02 14 09 5f 53 ...._S3D......_S 4080: 34 44 00 a4 0a 02 5b 82 4f 08 45 48 43 32 08 5f 4D....[.O.EHC2._ 4090: 41 44 52 0c 07 00 1a 00 5b 80 55 46 43 53 02 0a ADR.....[.UFCS.. 40a0: 54 0a 04 5b 81 0d 55 46 43 53 03 00 0f 50 4d 45 T..[..UFCS...PME 40b0: 53 01 5b 82 43 04 48 55 42 37 08 5f 41 44 52 00 S.[.C.HUB7._ADR. 40c0: 5b 82 0b 50 52 54 31 08 5f 41 44 52 01 5b 82 0c [..PRT1._ADR.[.. 40d0: 50 52 54 32 08 5f 41 44 52 0a 02 5b 82 0c 50 52 PRT2._ADR..[..PR 40e0: 54 33 08 5f 41 44 52 0a 03 5b 82 0c 50 52 54 34 T3._ADR..[..PRT4 40f0: 08 5f 41 44 52 0a 04 08 5f 50 52 57 12 06 02 0a ._ADR..._PRW.... 4100: 0d 0a 03 14 09 5f 53 33 44 00 a4 0a 02 14 09 5f ....._S3D......_ 4110: 53 34 44 00 a4 0a 02 5b 82 4a 06 50 43 49 42 08 S4D....[.J.PCIB. 4120: 5f 41 44 52 0c 00 00 1e 00 14 49 05 5f 50 52 54 _ADR......I._PRT 4130: 00 a0 21 47 50 49 43 a4 12 1a 02 12 0b 04 0c ff ..!GPIC......... 4140: ff 06 00 00 00 0a 16 12 0b 04 0c ff ff 06 00 01 ................ 4150: 00 0a 17 a1 2f a4 12 2c 02 12 14 04 0c ff ff 06 ..../..,........ 4160: 00 00 5e 5e 2e 4c 50 43 42 4c 4e 4b 47 00 12 14 ..^^.LPCBLNKG... 4170: 04 0c ff ff 06 00 01 5e 5e 2e 4c 50 43 42 4c 4e .......^^.LPCBLN 4180: 4b 48 00 5b 82 8d 2e 01 4c 50 43 42 08 5f 41 44 KH.[....LPCB._AD 4190: 52 0c 00 00 1f 00 5b 80 4c 50 43 30 02 0a 40 0a R.....[.LPC0..@. 41a0: c0 5b 81 4d 07 4c 50 43 30 00 00 40 10 50 41 52 .[.M.LPC0..@.PAR 41b0: 43 08 50 42 52 43 08 50 43 52 43 08 50 44 52 43 C.PBRC.PCRC.PDRC 41c0: 08 00 20 50 45 52 43 08 50 46 52 43 08 50 47 52 .. PERC.PFRC.PGR 41d0: 43 08 50 48 52 43 08 00 40 0a 43 4d 41 52 03 00 C.PHRC..@.CMAR.. 41e0: 01 43 4d 42 52 03 00 01 4c 50 54 52 02 00 06 43 .CMBR...LPTR...C 41f0: 4d 41 44 01 43 4d 42 44 01 4c 50 54 44 01 46 44 MAD.CMBD.LPTD.FD 4200: 44 44 01 00 2c 49 4f 52 32 10 00 02 4c 47 52 4d DD..,IOR2...LGRM 4210: 06 00 48 32 52 41 45 4e 01 00 0d 52 43 42 41 12 ..H2RAEN...RCBA. 4220: 5b 80 53 4d 49 30 01 0c 00 fe 00 00 0c 02 00 00 [.SMI0.......... 4230: 00 5b 81 0b 53 4d 49 30 00 53 4d 49 43 08 5b 80 .[..SMI0.SMIC.[. 4240: 53 4d 49 31 00 0c bd 2e 6e bf 0c 90 00 00 00 5b SMI1....n......[ 4250: 81 16 53 4d 49 31 00 42 43 4d 44 08 44 49 44 5f ..SMI1.BCMD.DID_ 4260: 20 49 4e 46 4f 40 40 5b 81 15 53 4d 49 31 00 01 INFO@@[..SMI1.. 4270: 01 00 00 28 49 4e 46 5f 08 49 4e 46 31 20 5b 01 ...(INF_.INF1 [. 4280: 50 53 4d 58 00 14 27 50 48 53 53 01 5b 23 50 53 PSMX..'PHSS.[#PS 4290: 4d 58 ff ff 70 0a 80 42 43 4d 44 70 68 44 49 44 MX..p..BCMDphDID 42a0: 5f 70 00 53 4d 49 43 5b 27 50 53 4d 58 5b 82 41 _p.SMIC['PSMX[.A 42b0: 0a 4c 4e 4b 41 08 5f 48 49 44 0c 41 d0 0c 0f 08 .LNKA._HID.A.... 42c0: 5f 55 49 44 01 14 0d 5f 44 49 53 08 70 0a 80 50 _UID..._DIS.p..P 42d0: 41 52 43 08 5f 50 52 53 11 09 0a 06 23 fa d4 18 ARC._PRS....#... 42e0: 79 00 14 38 5f 43 52 53 08 08 52 54 4c 41 11 09 y..8_CRS..RTLA.. 42f0: 0a 06 23 00 00 18 79 00 8b 52 54 4c 41 01 49 52 ..#...y..RTLA.IR 4300: 51 30 70 00 49 52 51 30 79 01 7b 50 41 52 43 0a Q0p.IRQ0y.{PARC. 4310: 0f 00 49 52 51 30 a4 52 54 4c 41 14 1b 5f 53 52 ..IRQ0.RTLA.._SR 4320: 53 09 8b 68 01 49 52 51 30 82 49 52 51 30 60 76 S..h.IRQ0.IRQ0`v 4330: 60 70 60 50 41 52 43 14 18 5f 53 54 41 08 a0 0c `p`PARC.._STA... 4340: 7b 50 41 52 43 0a 80 00 a4 0a 09 a1 04 a4 0a 0b {PARC........... 4350: 5b 82 42 0a 4c 4e 4b 42 08 5f 48 49 44 0c 41 d0 [.B.LNKB._HID.A. 4360: 0c 0f 08 5f 55 49 44 0a 02 14 0d 5f 44 49 53 08 ..._UID...._DIS. 4370: 70 0a 80 50 42 52 43 08 5f 50 52 53 11 09 0a 06 p..PBRC._PRS.... 4380: 23 fa d8 18 79 00 14 38 5f 43 52 53 08 08 52 54 #...y..8_CRS..RT 4390: 4c 42 11 09 0a 06 23 00 00 18 79 00 8b 52 54 4c LB....#...y..RTL 43a0: 42 01 49 52 51 30 70 00 49 52 51 30 79 01 7b 50 B.IRQ0p.IRQ0y.{P 43b0: 42 52 43 0a 0f 00 49 52 51 30 a4 52 54 4c 42 14 BRC...IRQ0.RTLB. 43c0: 1b 5f 53 52 53 09 8b 68 01 49 52 51 30 82 49 52 ._SRS..h.IRQ0.IR 43d0: 51 30 60 76 60 70 60 50 42 52 43 14 18 5f 53 54 Q0`v`p`PBRC.._ST 43e0: 41 08 a0 0c 7b 50 42 52 43 0a 80 00 a4 0a 09 a1 A...{PBRC....... 43f0: 04 a4 0a 0b 5b 82 42 0a 4c 4e 4b 43 08 5f 48 49 ....[.B.LNKC._HI 4400: 44 0c 41 d0 0c 0f 08 5f 55 49 44 0a 03 14 0d 5f D.A...._UID...._ 4410: 44 49 53 08 70 0a 80 50 43 52 43 08 5f 50 52 53 DIS.p..PCRC._PRS 4420: 11 09 0a 06 23 fa d4 18 79 00 14 38 5f 43 52 53 ....#...y..8_CRS 4430: 08 08 52 54 4c 43 11 09 0a 06 23 00 00 18 79 00 ..RTLC....#...y. 4440: 8b 52 54 4c 43 01 49 52 51 30 70 00 49 52 51 30 .RTLC.IRQ0p.IRQ0 4450: 79 01 7b 50 43 52 43 0a 0f 00 49 52 51 30 a4 52 y.{PCRC...IRQ0.R 4460: 54 4c 43 14 1b 5f 53 52 53 09 8b 68 01 49 52 51 TLC.._SRS..h.IRQ 4470: 30 82 49 52 51 30 60 76 60 70 60 50 43 52 43 14 0.IRQ0`v`p`PCRC. 4480: 18 5f 53 54 41 08 a0 0c 7b 50 43 52 43 0a 80 00 ._STA...{PCRC... 4490: a4 0a 09 a1 04 a4 0a 0b 5b 82 42 0a 4c 4e 4b 44 ........[.B.LNKD 44a0: 08 5f 48 49 44 0c 41 d0 0c 0f 08 5f 55 49 44 0a ._HID.A...._UID. 44b0: 04 14 0d 5f 44 49 53 08 70 0a 80 50 44 52 43 08 ..._DIS.p..PDRC. 44c0: 5f 50 52 53 11 09 0a 06 23 fa d8 18 79 00 14 38 _PRS....#...y..8 44d0: 5f 43 52 53 08 08 52 54 4c 44 11 09 0a 06 23 00 _CRS..RTLD....#. 44e0: 00 18 79 00 8b 52 54 4c 44 01 49 52 51 30 70 00 ..y..RTLD.IRQ0p. 44f0: 49 52 51 30 79 01 7b 50 44 52 43 0a 0f 00 49 52 IRQ0y.{PDRC...IR 4500: 51 30 a4 52 54 4c 44 14 1b 5f 53 52 53 09 8b 68 Q0.RTLD.._SRS..h 4510: 01 49 52 51 30 82 49 52 51 30 60 76 60 70 60 50 .IRQ0.IRQ0`v`p`P 4520: 44 52 43 14 18 5f 53 54 41 08 a0 0c 7b 50 44 52 DRC.._STA...{PDR 4530: 43 0a 80 00 a4 0a 09 a1 04 a4 0a 0b 5b 82 42 0a C...........[.B. 4540: 4c 4e 4b 45 08 5f 48 49 44 0c 41 d0 0c 0f 08 5f LNKE._HID.A...._ 4550: 55 49 44 0a 05 14 0d 5f 44 49 53 08 70 0a 80 50 UID...._DIS.p..P 4560: 45 52 43 08 5f 50 52 53 11 09 0a 06 23 fa d4 18 ERC._PRS....#... 4570: 79 00 14 38 5f 43 52 53 08 08 52 54 4c 45 11 09 y..8_CRS..RTLE.. 4580: 0a 06 23 00 00 18 79 00 8b 52 54 4c 45 01 49 52 ..#...y..RTLE.IR 4590: 51 30 70 00 49 52 51 30 79 01 7b 50 45 52 43 0a Q0p.IRQ0y.{PERC. 45a0: 0f 00 49 52 51 30 a4 52 54 4c 45 14 1b 5f 53 52 ..IRQ0.RTLE.._SR 45b0: 53 09 8b 68 01 49 52 51 30 82 49 52 51 30 60 76 S..h.IRQ0.IRQ0`v 45c0: 60 70 60 50 45 52 43 14 18 5f 53 54 41 08 a0 0c `p`PERC.._STA... 45d0: 7b 50 45 52 43 0a 80 00 a4 0a 09 a1 04 a4 0a 0b {PERC........... 45e0: 5b 82 42 0a 4c 4e 4b 46 08 5f 48 49 44 0c 41 d0 [.B.LNKF._HID.A. 45f0: 0c 0f 08 5f 55 49 44 0a 06 14 0d 5f 44 49 53 08 ..._UID...._DIS. 4600: 70 0a 80 50 46 52 43 08 5f 50 52 53 11 09 0a 06 p..PFRC._PRS.... 4610: 23 fa d8 18 79 00 14 38 5f 43 52 53 08 08 52 54 #...y..8_CRS..RT 4620: 4c 46 11 09 0a 06 23 00 00 18 79 00 8b 52 54 4c LF....#...y..RTL 4630: 46 01 49 52 51 30 70 00 49 52 51 30 79 01 7b 50 F.IRQ0p.IRQ0y.{P 4640: 46 52 43 0a 0f 00 49 52 51 30 a4 52 54 4c 46 14 FRC...IRQ0.RTLF. 4650: 1b 5f 53 52 53 09 8b 68 01 49 52 51 30 82 49 52 ._SRS..h.IRQ0.IR 4660: 51 30 60 76 60 70 60 50 46 52 43 14 18 5f 53 54 Q0`v`p`PFRC.._ST 4670: 41 08 a0 0c 7b 50 46 52 43 0a 80 00 a4 0a 09 a1 A...{PFRC....... 4680: 04 a4 0a 0b 5b 82 42 0a 4c 4e 4b 47 08 5f 48 49 ....[.B.LNKG._HI 4690: 44 0c 41 d0 0c 0f 08 5f 55 49 44 0a 07 14 0d 5f D.A...._UID...._ 46a0: 44 49 53 08 70 0a 80 50 47 52 43 08 5f 50 52 53 DIS.p..PGRC._PRS 46b0: 11 09 0a 06 23 fa d4 18 79 00 14 38 5f 43 52 53 ....#...y..8_CRS 46c0: 08 08 52 54 4c 47 11 09 0a 06 23 00 00 18 79 00 ..RTLG....#...y. 46d0: 8b 52 54 4c 47 01 49 52 51 30 70 00 49 52 51 30 .RTLG.IRQ0p.IRQ0 46e0: 79 01 7b 50 47 52 43 0a 0f 00 49 52 51 30 a4 52 y.{PGRC...IRQ0.R 46f0: 54 4c 47 14 1b 5f 53 52 53 09 8b 68 01 49 52 51 TLG.._SRS..h.IRQ 4700: 30 82 49 52 51 30 60 76 60 70 60 50 47 52 43 14 0.IRQ0`v`p`PGRC. 4710: 18 5f 53 54 41 08 a0 0c 7b 50 47 52 43 0a 80 00 ._STA...{PGRC... 4720: a4 0a 09 a1 04 a4 0a 0b 5b 82 42 0a 4c 4e 4b 48 ........[.B.LNKH 4730: 08 5f 48 49 44 0c 41 d0 0c 0f 08 5f 55 49 44 0a ._HID.A...._UID. 4740: 08 14 0d 5f 44 49 53 08 70 0a 80 50 48 52 43 08 ..._DIS.p..PHRC. 4750: 5f 50 52 53 11 09 0a 06 23 fa d8 18 79 00 14 38 _PRS....#...y..8 4760: 5f 43 52 53 08 08 52 54 4c 48 11 09 0a 06 23 00 _CRS..RTLH....#. 4770: 00 18 79 00 8b 52 54 4c 48 01 49 52 51 30 70 00 ..y..RTLH.IRQ0p. 4780: 49 52 51 30 79 01 7b 50 48 52 43 0a 0f 00 49 52 IRQ0y.{PHRC...IR 4790: 51 30 a4 52 54 4c 48 14 1b 5f 53 52 53 09 8b 68 Q0.RTLH.._SRS..h 47a0: 01 49 52 51 30 82 49 52 51 30 60 76 60 70 60 50 .IRQ0.IRQ0`v`p`P 47b0: 48 52 43 14 18 5f 53 54 41 08 a0 0c 7b 50 48 52 HRC.._STA...{PHR 47c0: 43 0a 80 00 a4 0a 09 a1 04 a4 0a 0b 5b 82 3d 44 C...........[.=D 47d0: 4d 41 43 08 5f 48 49 44 0c 41 d0 02 00 08 5f 43 MAC._HID.A...._C 47e0: 52 53 11 28 0a 25 47 01 00 00 00 00 01 20 47 01 RS.(.%G...... G. 47f0: 81 00 81 00 01 11 47 01 93 00 93 00 01 0d 47 01 ......G.......G. 4800: c0 00 c0 00 01 20 2a 10 01 79 00 5b 82 26 46 57 ..... *..y.[.&FW 4810: 48 44 08 5f 48 49 44 0c 25 d4 08 00 08 5f 43 52 HD._HID.%...._CR 4820: 53 11 11 0a 0e 86 09 00 00 00 00 00 ff 00 00 00 S............... 4830: 01 79 00 5b 82 40 0b 48 50 45 54 08 5f 48 49 44 .y.[.@.HPET._HID 4840: 0c 41 d0 01 03 08 5f 43 49 44 0c 41 d0 0c 01 08 .A...._CID.A.... 4850: 42 55 46 30 11 11 0a 0e 86 09 00 00 00 00 d0 fe BUF0............ 4860: 00 04 00 00 79 00 14 27 5f 53 54 41 00 a0 13 92 ....y..'_STA.... 4870: 95 4f 53 59 53 0b d1 07 a0 08 48 50 41 45 a4 0a .OSYS.....HPAE.. 4880: 0f a1 0a a0 08 48 50 41 45 a4 0a 0b a4 00 14 46 .....HPAE......F 4890: 05 5f 43 52 53 08 a0 49 04 48 50 41 45 8a 42 55 ._CRS..I.HPAE.BU 48a0: 46 30 0a 04 48 50 54 30 a0 11 93 48 50 41 53 01 F0..HPT0...HPAS. 48b0: 70 0c 00 10 d0 fe 48 50 54 30 a0 12 93 48 50 41 p.....HPT0...HPA 48c0: 53 0a 02 70 0c 00 20 d0 fe 48 50 54 30 a0 12 93 S..p.. ..HPT0... 48d0: 48 50 41 53 0a 03 70 0c 00 30 d0 fe 48 50 54 30 HPAS..p..0..HPT0 48e0: a4 42 55 46 30 5b 82 45 0a 49 50 49 43 08 5f 48 .BUF0[.E.IPIC._H 48f0: 49 44 0b 41 d0 08 5f 43 52 53 11 41 09 0a 8d 47 ID.A.._CRS.A...G 4900: 01 20 00 20 00 01 02 47 01 24 00 24 00 01 02 47 . . ...G.$.$...G 4910: 01 28 00 28 00 01 02 47 01 2c 00 2c 00 01 02 47 .(.(...G.,.,...G 4920: 01 30 00 30 00 01 02 47 01 34 00 34 00 01 02 47 .0.0...G.4.4...G 4930: 01 38 00 38 00 01 02 47 01 3c 00 3c 00 01 02 47 .8.8...G.<.<...G 4940: 01 a0 00 a0 00 01 02 47 01 a4 00 a4 00 01 02 47 .......G.......G 4950: 01 a8 00 a8 00 01 02 47 01 ac 00 ac 00 01 02 47 .......G.......G 4960: 01 b0 00 b0 00 01 02 47 01 b4 00 b4 00 01 02 47 .......G.......G 4970: 01 b8 00 b8 00 01 02 47 01 bc 00 bc 00 01 02 47 .......G.......G 4980: 01 d0 04 d0 04 01 02 22 04 00 79 00 5b 82 25 4d ......."..y.[.%M 4990: 41 54 48 08 5f 48 49 44 0c 41 d0 0c 04 08 5f 43 ATH._HID.A...._C 49a0: 52 53 11 10 0a 0d 47 01 f0 00 f0 00 01 01 22 00 RS....G.......". 49b0: 20 79 00 5b 82 4b 09 4c 44 52 43 08 5f 48 49 44 y.[.K.LDRC._HID 49c0: 0c 41 d0 0c 02 08 5f 55 49 44 0a 02 08 5f 43 52 .A...._UID..._CR 49d0: 53 11 4e 07 0a 7a 47 01 2e 00 2e 00 01 02 47 01 S.N..zG.......G. 49e0: 4e 00 4e 00 01 02 47 01 61 00 61 00 01 01 47 01 N.N...G.a.a...G. 49f0: 63 00 63 00 01 01 47 01 65 00 65 00 01 01 47 01 c.c...G.e.e...G. 4a00: 67 00 67 00 01 01 47 01 80 00 80 00 01 01 47 01 g.g...G.......G. 4a10: 92 00 92 00 01 01 47 01 b2 00 b2 00 01 02 47 01 ......G.......G. 4a20: 80 06 80 06 01 20 47 01 00 08 00 08 01 10 47 01 ..... G.......G. 4a30: 00 10 00 10 01 80 47 01 80 11 80 11 01 40 47 01 ......G......@G. 4a40: 00 fe 00 fe 01 01 47 01 00 ff 00 ff 01 80 79 00 ......G.......y. 4a50: 5b 82 25 52 54 43 5f 08 5f 48 49 44 0c 41 d0 0b [.%RTC_._HID.A.. 4a60: 00 08 5f 43 52 53 11 10 0a 0d 47 01 70 00 70 00 .._CRS....G.p.p. 4a70: 01 08 22 00 01 79 00 5b 82 2d 54 49 4d 52 08 5f .."..y.[.-TIMR._ 4a80: 48 49 44 0c 41 d0 01 00 08 5f 43 52 53 11 18 0a HID.A...._CRS... 4a90: 15 47 01 40 00 40 00 01 04 47 01 50 00 50 00 10 .G.@.@...G.P.P.. 4aa0: 04 22 01 00 79 00 5b 82 32 41 43 41 44 08 5f 48 ."..y.[.2ACAD._H 4ab0: 49 44 0d 41 43 50 49 30 30 30 33 00 08 5f 50 43 ID.ACPI0003.._PC 4ac0: 4c 12 06 01 5f 53 42 5f 14 11 5f 50 53 52 00 70 L..._SB_.._PSR.p 4ad0: 01 41 43 50 57 a4 41 43 50 57 14 1a 45 43 4f 4b .ACPW.ACPW..ECOK 4ae0: 00 a0 0f 93 5e 2e 45 43 30 5f 5a 30 30 39 01 a4 ....^.EC0_Z009.. 4af0: 01 a1 03 a4 00 5b 82 4e 6f 45 43 30 5f 08 5f 48 .....[.NoEC0_._H 4b00: 49 44 0c 41 d0 0c 09 08 5f 47 50 45 0a 1c 08 5a ID.A...._GPE...Z 4b10: 30 30 39 00 08 5f 43 52 53 11 15 0a 12 47 01 62 009.._CRS....G.b 4b20: 00 62 00 01 01 47 01 66 00 66 00 01 01 79 00 14 .b...G.f.f...y.. 4b30: 3b 5f 52 45 47 02 a0 34 93 68 0a 03 70 69 5a 30 ;_REG..4.h..piZ0 4b40: 30 39 a0 28 5b 12 5f 4f 53 49 60 70 00 42 54 44 09.([._OSI`p.BTD 4b50: 53 a0 19 5f 4f 53 49 0d 57 69 6e 64 6f 77 73 20 S.._OSI.Windows 4b60: 32 30 30 36 00 70 01 42 54 44 53 5b 80 45 52 41 2006.p.BTDS[.ERA 4b70: 4d 03 00 0a ff 5b 81 4e 2e 45 52 41 4d 11 00 40 M....[.N.ERAM..@ 4b80: 30 53 4d 50 52 08 53 4d 53 54 08 53 4d 41 44 08 0SMPR.SMST.SMAD. 4b90: 53 4d 43 4d 08 53 4d 44 30 40 10 42 43 4e 54 08 SMCM.SMD0@.BCNT. 4ba0: 53 4d 41 41 18 00 40 04 43 48 47 4d 10 43 48 47 SMAA..@.CHGM.CHG 4bb0: 53 10 45 4e 49 44 08 45 4e 49 42 08 45 4e 44 44 S.ENID.ENIB.ENDD 4bc0: 08 43 48 47 56 08 43 48 47 41 10 42 41 4c 30 01 .CHGV.CHGA.BAL0. 4bd0: 42 41 4c 31 01 42 41 4c 32 01 42 41 4c 33 01 42 BAL1.BAL2.BAL3.B 4be0: 42 43 30 01 42 42 43 31 01 42 42 43 32 01 42 42 BC0.BBC1.BBC2.BB 4bf0: 43 33 01 00 08 50 48 44 44 01 49 46 44 44 01 49 C3...PHDD.IFDD.I 4c00: 4f 44 44 01 53 48 44 44 01 53 31 32 30 01 45 46 ODD.SHDD.S120.EF 4c10: 44 44 01 43 52 54 44 01 53 50 57 52 01 53 42 54 DD.CRTD.SPWR.SBT 4c20: 4e 01 56 49 44 4f 01 56 4f 4c 44 01 56 4f 4c 55 N.VIDO.VOLD.VOLU 4c30: 01 4d 55 54 45 01 43 4f 4e 54 01 42 52 47 54 01 .MUTE.CONT.BRGT. 4c40: 48 42 54 4e 01 53 34 53 54 01 53 4b 45 59 01 42 HBTN.S4ST.SKEY.B 4c50: 4b 45 59 01 54 4f 55 50 01 46 4e 42 4e 01 4c 49 KEY.TOUP.FNBN.LI 4c60: 44 46 01 44 49 47 4d 01 55 57 41 4b 01 00 08 44 DF.DIGM.UWAK...D 4c70: 4b 53 50 01 44 4b 49 4e 01 44 4b 49 44 01 44 4b KSP.DKIN.DKID.DK 4c80: 4f 4b 01 00 04 44 4b 50 57 01 00 07 42 54 4e 53 OK...DKPW...BTNS 4c90: 08 53 31 4c 44 01 53 33 4c 44 01 56 47 41 51 01 .S1LD.S3LD.VGAQ. 4ca0: 50 43 4d 51 01 50 43 4d 52 01 41 44 50 54 01 53 PCMQ.PCMR.ADPT.S 4cb0: 4c 4c 53 01 53 59 53 37 01 50 57 41 4b 01 4d 57 LLS.SYS7.PWAK.MW 4cc0: 41 4b 01 4c 57 41 4b 01 00 05 00 28 54 43 4e 4c AK.LWAK....(TCNL 4cd0: 08 54 4d 50 49 08 54 4d 53 44 08 46 41 53 4e 04 .TMPI.TMSD.FASN. 4ce0: 46 41 53 55 04 50 43 56 4c 04 00 02 53 57 54 4f FASU.PCVL...SWTO 4cf0: 01 48 57 54 4f 01 4d 4f 44 45 01 46 41 4e 53 02 .HWTO.MODE.FANS. 4d00: 49 4e 49 54 01 46 41 4e 31 01 46 41 4e 32 01 46 INIT.FAN1.FAN2.F 4d10: 41 4e 54 01 53 4b 4e 4d 01 43 54 4d 50 08 4c 49 ANT.SKNM.CTMP.LI 4d20: 44 45 01 50 4d 45 45 01 50 57 42 45 01 52 4e 47 DE.PMEE.PWBE.RNG 4d30: 45 01 42 54 57 45 01 44 43 4b 45 01 00 02 53 4b E.BTWE.DCKE...SK 4d40: 54 58 08 53 4b 54 42 08 53 4b 54 43 08 53 4b 54 TX.SKTB.SKTC.SKT 4d50: 41 08 00 08 48 41 50 4c 02 48 41 50 52 01 00 05 A...HAPL.HAPR... 4d60: 42 54 44 54 01 42 54 50 57 01 42 54 44 53 01 42 BTDT.BTPW.BTDS.B 4d70: 54 50 53 01 42 54 53 57 01 42 54 57 4b 01 42 54 TPS.BTSW.BTWK.BT 4d80: 4c 44 01 00 01 42 52 54 53 08 43 4e 54 53 08 57 LD...BRTS.CNTS.W 4d90: 4c 41 54 01 42 54 41 54 01 57 4c 45 58 01 42 54 LAT.BTAT.WLEX.BT 4da0: 45 58 01 4b 4c 53 57 01 57 4c 4f 4b 01 00 02 50 EX.KLSW.WLOK...P 4db0: 54 49 44 08 43 50 55 54 08 45 50 4b 54 08 47 48 TID.CPUT.EPKT.GH 4dc0: 49 44 08 00 04 42 4d 46 30 03 42 54 59 30 01 42 ID...BMF0.BTY0.B 4dd0: 53 54 30 08 42 52 43 30 10 42 53 4e 30 10 42 50 ST0.BRC0.BSN0.BP 4de0: 56 30 10 42 44 56 30 10 42 44 43 30 10 42 46 43 V0.BDV0.BDC0.BFC 4df0: 30 10 47 41 55 30 08 43 59 43 30 08 42 50 43 30 0.GAU0.CYC0.BPC0 4e00: 10 42 41 43 30 10 42 41 54 30 08 42 54 57 30 10 .BAC0.BAT0.BTW0. 4e10: 42 44 4e 30 08 00 40 04 00 04 42 4d 46 31 03 42 BDN0..@...BMF1.B 4e20: 54 59 31 01 42 53 54 31 08 42 52 43 31 10 42 53 TY1.BST1.BRC1.BS 4e30: 4e 31 10 42 50 56 31 10 42 44 56 31 10 42 44 43 N1.BPV1.BDV1.BDC 4e40: 31 10 42 46 43 31 10 47 41 55 31 08 43 59 43 31 1.BFC1.GAU1.CYC1 4e50: 08 42 50 43 31 10 42 41 43 31 10 42 41 54 31 08 .BPC1.BAC1.BAT1. 4e60: 42 54 57 31 10 14 37 5f 51 31 31 00 70 0a 87 50 BTW1..7_Q11.p..P 4e70: 38 30 48 a0 13 49 47 44 53 5e 5e 5e 2e 47 46 58 80H..IGDS^^^.GFX 4e80: 30 42 52 54 4e 0a 87 a1 15 86 5e 5e 5e 2f 03 50 0BRTN.....^^^/.P 4e90: 45 47 50 56 47 41 5f 4c 43 44 5f 0a 87 14 37 5f EGPVGA_LCD_...7_ 4ea0: 51 31 32 00 70 0a 86 50 38 30 48 a0 13 49 47 44 Q12.p..P80H..IGD 4eb0: 53 5e 5e 5e 2e 47 46 58 30 42 52 54 4e 0a 86 a1 S^^^.GFX0BRTN... 4ec0: 15 86 5e 5e 5e 2f 03 50 45 47 50 56 47 41 5f 4c ..^^^/.PEGPVGA_L 4ed0: 43 44 5f 0a 86 14 40 05 5f 51 31 43 00 70 0d 3d CD_...@._Q1C.p.= 4ee0: 3d 3d 3d 3d 51 55 45 52 59 5f 31 43 3d 3d 3d 3d ====QUERY_1C==== 4ef0: 3d 00 5b 31 a0 31 56 49 44 4f a0 12 49 47 44 53 =.[1.1VIDO..IGDS 4f00: 5e 5e 5e 2e 47 46 58 30 47 48 44 53 00 a1 12 5e ^^^.GFX0GHDS...^ 4f10: 5e 5e 2f 03 50 45 47 50 56 47 41 5f 44 53 53 57 ^^/.PEGPVGA_DSSW 4f20: 70 00 56 49 44 4f 14 21 5f 51 31 44 00 70 0d 3d p.VIDO.!_Q1D.p.= 4f30: 3d 3d 3d 3d 51 55 45 52 59 5f 31 44 3d 3d 3d 3d ====QUERY_1D==== 4f40: 3d 00 5b 31 50 43 4c 4b 14 21 5f 51 31 45 00 70 =.[1PCLK.!_Q1E.p 4f50: 0d 3d 3d 3d 3d 3d 51 55 45 52 59 5f 31 45 3d 3d .=====QUERY_1E== 4f60: 3d 3d 3d 00 5b 31 50 43 4c 4b 14 39 5f 51 32 35 ===.[1PCLK.9_Q25 4f70: 00 70 0d 3d 3d 3d 3d 3d 51 55 45 52 59 5f 32 35 .p.=====QUERY_25 4f80: 3d 3d 3d 3d 3d 00 5b 31 5b 22 0b e8 03 86 5e 5e =====.[1["....^^ 4f90: 42 41 54 31 0a 81 5b 22 0b e8 03 86 5e 5e 42 41 BAT1..["....^^BA 4fa0: 54 31 0a 80 14 2f 5f 51 33 34 00 70 0d 3d 3d 3d T1.../_Q34.p.=== 4fb0: 3d 3d 51 55 45 52 59 5f 33 34 3d 3d 3d 3d 3d 00 ==QUERY_34=====. 4fc0: 5b 31 a0 11 42 4b 45 59 50 48 53 53 0a 71 70 00 [1..BKEYPHSS.qp. 4fd0: 42 4b 45 59 14 32 5f 51 33 37 00 70 0d 3d 3d 3d BKEY.2_Q37.p.=== 4fe0: 3d 3d 51 55 45 52 59 5f 33 37 3d 3d 3d 3d 3d 00 ==QUERY_37=====. 4ff0: 5b 31 86 41 43 41 44 0a 80 5b 22 0b e8 03 86 5e [1.ACAD..["....^ 5000: 5e 42 41 54 31 0a 80 14 32 5f 51 33 38 00 70 0d ^BAT1...2_Q38.p. 5010: 3d 3d 3d 3d 3d 51 55 45 52 59 5f 33 38 3d 3d 3d =====QUERY_38=== 5020: 3d 3d 00 5b 31 86 41 43 41 44 0a 80 5b 22 0b e8 ==.[1.ACAD..[".. 5030: 03 86 5e 5e 42 41 54 31 0a 80 14 29 5f 51 32 44 ..^^BAT1...)_Q2D 5040: 00 70 0d 3d 3d 3d 3d 3d 51 55 45 52 59 5f 32 44 .p.=====QUERY_2D 5050: 3d 3d 3d 3d 3d 00 5b 31 70 00 44 54 53 4d 54 52 =====.[1p.DTSMTR 5060: 41 50 0a 46 14 29 5f 51 32 45 00 70 0d 3d 3d 3d AP.F.)_Q2E.p.=== 5070: 3d 3d 51 55 45 52 59 5f 32 45 3d 3d 3d 3d 3d 00 ==QUERY_2E=====. 5080: 5b 31 70 01 44 54 53 4d 54 52 41 50 0a 46 5b 80 [1p.DTSMTRAP.F[. 5090: 43 43 4c 4b 01 0b 10 10 0a 04 5b 81 20 43 43 4c CCLK......[. CCL 50a0: 4b 03 00 01 44 55 54 59 03 54 48 45 4e 01 00 03 K...DUTY.THEN... 50b0: 46 54 54 5f 01 00 08 54 53 54 53 01 5b 80 45 43 FTT_...TSTS.[.EC 50c0: 52 4d 03 00 0a ff 5b 81 44 04 45 43 52 4d 11 00 RM....[.D.ECRM.. 50d0: 40 4a 45 52 49 42 10 45 52 42 44 08 00 48 0a 53 @JERIB.ERBD..H.S 50e0: 44 54 4d 08 46 53 53 4e 04 46 41 4e 55 04 50 54 DTM.FSSN.FANU.PT 50f0: 56 4c 03 00 04 54 54 48 52 01 00 48 06 50 4a 49 VL...TTHR..H.PJI 5100: 44 08 00 08 00 48 1d 52 46 52 44 10 5b 01 46 41 D....H.RFRD.[.FA 5110: 4d 58 00 14 22 46 41 4e 47 01 5b 23 46 41 4d 58 MX.."FANG.[#FAMX 5120: ff ff 70 68 45 52 49 42 70 45 52 42 44 60 5b 27 ..phERIBpERBD`[' 5130: 46 41 4d 58 a4 60 14 22 46 41 4e 57 02 5b 23 46 FAMX.`."FANW.[#F 5140: 41 4d 58 ff ff 70 68 45 52 49 42 70 69 45 52 42 AMX..phERIBpiERB 5150: 44 5b 27 46 41 4d 58 a4 69 14 09 54 55 56 52 01 D['FAMX.i..TUVR. 5160: a4 0a 03 14 2e 54 48 52 4f 01 a0 09 93 68 00 a4 .....THRO....h.. 5170: 54 48 45 4e a1 1d a0 09 93 68 01 a4 44 55 54 59 THEN.....h..DUTY 5180: a1 11 a0 0a 93 68 0a 02 a4 54 54 48 52 a1 04 a4 .....h...TTHR... 5190: 0a ff 14 2a 43 4c 43 4b 01 a0 10 93 68 00 70 00 ...*CLCK....h.p. 51a0: 54 48 45 4e 70 00 46 54 54 5f a1 0d 70 68 44 55 THENp.FTT_..phDU 51b0: 54 59 70 01 54 48 45 4e a4 54 48 45 4e 14 37 50 TYp.THEN.THEN.7P 51c0: 43 4c 4b 00 70 50 54 56 4c 60 a0 10 93 60 00 70 CLK.pPTVL`...`.p 51d0: 00 54 48 45 4e 70 00 46 54 54 5f a1 19 76 60 70 .THENp.FTT_..v`p 51e0: 80 60 00 61 7b 61 0a 07 61 70 61 44 55 54 59 70 .`.a{a..apaDUTYp 51f0: 01 54 48 45 4e 5b 82 4b 22 42 41 54 31 08 5f 48 .THEN[.K"BAT1._H 5200: 49 44 0c 41 d0 0c 0a 08 5f 55 49 44 01 08 5f 50 ID.A...._UID.._P 5210: 43 4c 12 06 01 5f 53 42 5f 14 39 5f 53 54 41 00 CL..._SB_.9_STA. 5220: a0 29 90 45 43 4f 4b 93 45 43 44 59 00 a0 13 5e .).ECOK.ECDY...^ 5230: 5e 2e 45 43 30 5f 42 41 4c 30 5b 22 0a 14 a4 0a ^.EC0_BAL0[".... 5240: 1f a1 08 5b 22 0a 14 a4 0a 0f a1 08 5b 22 0a 14 ...[".......[".. 5250: a4 0a 1f 14 48 10 5f 42 49 46 00 08 53 54 41 54 ....H._BIF..STAT 5260: 12 3a 0d 01 0b a0 0f 0b a0 0f 01 0b 5c 2b 0b a4 .:..........\+.. 5270: 01 0a 9c 0b 08 01 0b c4 0e 0d 50 41 33 34 36 35 ..........PA3465 5280: 55 20 00 0d 33 36 35 38 51 00 0d 4c 69 2d 49 6f U ..3658Q..Li-Io 5290: 6e 00 0d 43 4f 4d 50 41 4c 20 00 a0 4b 07 90 45 n..COMPAL ..K..E 52a0: 43 4f 4b 93 45 43 44 59 00 70 5e 5e 2e 45 43 30 COK.ECDY.p^^.EC0 52b0: 5f 42 44 4e 30 60 a0 23 93 60 0a 08 70 0a b4 88 _BDN0`.#.`..p... 52c0: 53 54 41 54 0a 06 00 70 0d 50 41 33 34 35 37 55 STAT...p.PA3457U 52d0: 20 00 88 53 54 41 54 0a 09 00 a0 24 93 60 0a 20 ..STAT....$.`. 52e0: 70 0b 02 01 88 53 54 41 54 0a 06 00 70 0d 50 41 p....STAT...p.PA 52f0: 33 34 35 37 55 20 00 88 53 54 41 54 0a 09 00 5b 3457U ..STAT...[ 5300: 22 0a 14 70 5e 5e 2e 45 43 30 5f 42 44 43 30 42 "..p^^.EC0_BDC0B 5310: 46 43 31 5b 22 0a 14 a1 12 70 0d 4c 69 2d 49 6f FC1["....p.Li-Io 5320: 6e 00 88 53 54 41 54 0a 0b 00 a0 2c 42 46 43 31 n..STAT....,BFC1 5330: 78 42 46 43 31 0a 64 60 61 77 61 0a 64 61 70 61 xBFC1.d`awa.dapa 5340: 42 46 43 31 70 61 88 53 54 41 54 01 00 70 61 88 BFC1pa.STAT..pa. 5350: 53 54 41 54 0a 02 00 a4 53 54 41 54 14 45 0c 5f STAT....STAT.E._ 5360: 42 53 54 00 08 50 42 53 54 12 10 04 00 0c ff ff BST..PBST....... 5370: ff ff 0c ff ff ff ff 0b 5c 2b 70 0b 5c 2b 63 a0 ........\+p.\+c. 5380: 38 90 45 43 4f 4b 93 45 43 44 59 00 5b 22 0a 14 8.ECOK.ECDY.[".. 5390: 70 5e 5e 2e 45 43 30 5f 42 53 54 30 42 53 54 31 p^^.EC0_BST0BST1 53a0: 5b 22 0a 14 70 5e 5e 2e 45 43 30 5f 47 41 55 30 ["..p^^.EC0_GAU0 53b0: 42 47 55 31 5b 22 0a 14 a0 15 42 46 43 31 77 42 BGU1["....BFC1wB 53c0: 47 55 31 42 46 43 31 62 78 62 0a 64 64 62 a1 09 GU1BFC1bxb.ddb.. 53d0: 77 42 47 55 31 0a 28 62 70 42 53 54 31 88 50 42 wBGU1.(bpBST1.PB 53e0: 53 54 00 00 70 00 88 50 42 53 54 01 00 70 62 88 ST..p..PBST..pb. 53f0: 50 42 53 54 0a 02 00 70 63 88 50 42 53 54 0a 03 PBST...pc.PBST.. 5400: 00 a0 1b 94 45 43 44 59 00 76 45 43 44 59 a0 0e ....ECDY.vECDY.. 5410: 93 45 43 44 59 00 86 42 41 54 31 0a 80 a4 50 42 .ECDY..BAT1...PB 5420: 53 54 5b 82 2e 50 53 32 4b 08 5f 48 49 44 0c 41 ST[..PS2K._HID.A 5430: d0 03 03 08 5f 43 52 53 11 19 0a 16 47 01 60 00 ...._CRS....G.`. 5440: 60 00 01 01 47 01 64 00 64 00 01 01 23 02 00 01 `...G.d.d...#... 5450: 79 00 5b 82 1e 50 53 32 4d 08 5f 48 49 44 0c 41 y.[..PS2M._HID.A 5460: d0 0f 13 08 5f 43 52 53 11 09 0a 06 23 00 10 01 ...._CRS....#... 5470: 79 00 5b 82 43 6a 50 41 54 41 08 5f 41 44 52 0c y.[.CjPATA._ADR. 5480: 01 00 1f 00 5b 80 50 41 43 53 02 0a 40 0a c0 5b ....[.PACS..@..[ 5490: 81 49 04 50 41 43 53 03 50 52 49 54 10 00 10 50 .I.PACS.PRIT...P 54a0: 53 49 54 04 00 1c 53 59 4e 43 04 00 0c 53 44 54 SIT...SYNC...SDT 54b0: 30 02 00 02 53 44 54 31 02 00 4a 04 49 43 52 30 0...SDT1..J.ICR0 54c0: 04 49 43 52 31 04 49 43 52 32 04 49 43 52 33 04 .ICR1.ICR2.ICR3. 54d0: 49 43 52 34 04 49 43 52 35 04 5b 82 4b 63 50 52 ICR4.ICR5.[.KcPR 54e0: 49 44 08 5f 41 44 52 00 14 40 17 5f 47 54 4d 00 ID._ADR..@._GTM. 54f0: 08 50 42 55 46 11 17 0a 14 00 00 00 00 00 00 00 .PBUF........... 5500: 00 00 00 00 00 00 00 00 00 00 00 00 00 8a 50 42 ..............PB 5510: 55 46 00 50 49 4f 30 8a 50 42 55 46 0a 04 44 4d UF.PIO0.PBUF..DM 5520: 41 30 8a 50 42 55 46 0a 08 50 49 4f 31 8a 50 42 A0.PBUF..PIO1.PB 5530: 55 46 0a 0c 44 4d 41 31 8a 50 42 55 46 0a 10 46 UF..DMA1.PBUF..F 5540: 4c 41 47 70 47 45 54 50 50 52 49 54 50 49 4f 30 LAGpGETPPRITPIO0 5550: 70 47 44 4d 41 7b 53 59 4e 43 01 00 7b 49 43 52 pGDMA{SYNC..{ICR 5560: 33 01 00 7b 49 43 52 30 01 00 53 44 54 30 7b 49 3..{ICR0..SDT0{I 5570: 43 52 31 01 00 44 4d 41 30 a0 14 93 44 4d 41 30 CR1..DMA0...DMA0 5580: 0c ff ff ff ff 70 50 49 4f 30 44 4d 41 30 a0 2e .....pPIO0DMA0.. 5590: 7b 50 52 49 54 0b 00 40 00 a0 14 93 7b 50 52 49 {PRIT..@....{PRI 55a0: 54 0a 90 00 0a 80 70 0b 84 03 50 49 4f 31 a1 0e T.....p...PIO1.. 55b0: 70 47 45 54 54 50 53 49 54 50 49 4f 31 a1 0b 70 pGETTPSITPIO1..p 55c0: 0c ff ff ff ff 50 49 4f 31 70 47 44 4d 41 7b 53 .....PIO1pGDMA{S 55d0: 59 4e 43 0a 02 00 7b 49 43 52 33 0a 02 00 7b 49 YNC...{ICR3...{I 55e0: 43 52 30 0a 02 00 53 44 54 31 7b 49 43 52 31 0a CR0...SDT1{ICR1. 55f0: 02 00 44 4d 41 31 a0 14 93 44 4d 41 31 0c ff ff ..DMA1...DMA1... 5600: ff ff 70 50 49 4f 31 44 4d 41 31 70 47 45 54 46 ..pPIO1DMA1pGETF 5610: 7b 53 59 4e 43 01 00 7b 53 59 4e 43 0a 02 00 50 {SYNC..{SYNC...P 5620: 52 49 54 46 4c 41 47 a0 2c 7b 93 50 49 4f 30 0c RITFLAG.,{.PIO0. 5630: ff ff ff ff 93 44 4d 41 30 0c ff ff ff ff 00 70 .....DMA0......p 5640: 0a 78 50 49 4f 30 70 0a 14 44 4d 41 30 70 0a 03 .xPIO0p..DMA0p.. 5650: 46 4c 41 47 a4 50 42 55 46 14 4c 2a 5f 53 54 4d FLAG.PBUF.L*_STM 5660: 03 8a 68 00 50 49 4f 30 8a 68 0a 04 44 4d 41 30 ..h.PIO0.h..DMA0 5670: 8a 68 0a 08 50 49 4f 31 8a 68 0a 0c 44 4d 41 31 .h..PIO1.h..DMA1 5680: 8a 68 0a 10 46 4c 41 47 a0 41 12 93 87 69 0b 00 .h..FLAG.A...i.. 5690: 02 7b 50 52 49 54 0b f0 c0 50 52 49 54 7b 53 59 .{PRIT...PRIT{SY 56a0: 4e 43 0a 02 53 59 4e 43 70 00 53 44 54 30 7b 49 NC..SYNCp.SDT0{I 56b0: 43 52 30 0a 02 49 43 52 30 7b 49 43 52 31 0a 02 CR0..ICR0{ICR1.. 56c0: 49 43 52 31 7b 49 43 52 33 0a 02 49 43 52 33 7b ICR1{ICR3..ICR3{ 56d0: 49 43 52 35 0a 02 49 43 52 35 8b 69 0a 62 57 34 ICR5..ICR5.i.bW4 56e0: 39 30 8b 69 0a 6a 57 35 33 30 8b 69 0a 7e 57 36 90.i.jW530.i.~W6 56f0: 33 30 8b 69 0a 80 57 36 34 30 8b 69 0a b0 57 38 30.i..W640.i..W8 5700: 38 30 8b 69 0a ba 57 39 33 30 7d 50 52 49 54 0b 80.i..W930}PRIT. 5710: 04 80 50 52 49 54 a0 1e 90 7b 46 4c 41 47 0a 02 ..PRIT...{FLAG.. 5720: 00 7b 57 34 39 30 0b 00 08 00 7d 50 52 49 54 0a .{W490....}PRIT. 5730: 02 50 52 49 54 7d 50 52 49 54 53 45 54 50 50 49 .PRIT}PRITSETPPI 5740: 4f 30 57 35 33 30 57 36 34 30 50 52 49 54 a0 4b O0W530W640PRIT.K 5750: 05 7b 46 4c 41 47 01 00 7d 53 59 4e 43 01 53 59 .{FLAG..}SYNC.SY 5760: 4e 43 70 53 44 4d 41 44 4d 41 30 53 44 54 30 a0 NCpSDMADMA0SDT0. 5770: 12 95 44 4d 41 30 0a 1e 7d 49 43 52 33 01 49 43 ..DMA0..}ICR3.IC 5780: 52 33 a0 12 95 44 4d 41 30 0a 3c 7d 49 43 52 30 R3...DMA0.<}ICR0 5790: 01 49 43 52 30 a0 14 7b 57 39 33 30 0b 00 20 00 .ICR0..{W930.. . 57a0: 7d 49 43 52 31 01 49 43 52 31 a0 4b 15 93 87 6a }ICR1.ICR1.K...j 57b0: 0b 00 02 7b 50 52 49 54 0b 0f bf 50 52 49 54 70 ...{PRIT...PRITp 57c0: 00 50 53 49 54 7b 53 59 4e 43 01 53 59 4e 43 70 .PSIT{SYNC.SYNCp 57d0: 00 53 44 54 31 7b 49 43 52 30 01 49 43 52 30 7b .SDT1{ICR0.ICR0{ 57e0: 49 43 52 31 01 49 43 52 31 7b 49 43 52 33 01 49 ICR1.ICR1{ICR3.I 57f0: 43 52 33 7b 49 43 52 35 01 49 43 52 35 8b 6a 0a CR3{ICR5.ICR5.j. 5800: 62 57 34 39 31 8b 6a 0a 6a 57 35 33 31 8b 6a 0a bW491.j.jW531.j. 5810: 7e 57 36 33 31 8b 6a 0a 80 57 36 34 31 8b 6a 0a ~W631.j..W641.j. 5820: b0 57 38 38 31 8b 6a 0a ba 57 39 33 31 7d 50 52 .W881.j..W931}PR 5830: 49 54 0b 40 80 50 52 49 54 a0 1e 90 7b 46 4c 41 IT.@.PRIT...{FLA 5840: 47 0a 08 00 7b 57 34 39 31 0b 00 08 00 7d 50 52 G...{W491....}PR 5850: 49 54 0a 20 50 52 49 54 a0 4c 04 7b 46 4c 41 47 IT. PRIT.L.{FLAG 5860: 0a 10 00 7d 50 52 49 54 0b 00 40 50 52 49 54 a0 ...}PRIT..@PRIT. 5870: 13 94 50 49 4f 31 0a f0 7d 50 52 49 54 0a 80 50 ..PIO1..}PRIT..P 5880: 52 49 54 a1 21 7d 50 52 49 54 0a 10 50 52 49 54 RIT.!}PRIT..PRIT 5890: 70 53 45 54 54 50 49 4f 31 57 35 33 31 57 36 34 pSETTPIO1W531W64 58a0: 31 50 53 49 54 a0 40 06 7b 46 4c 41 47 0a 04 00 1PSIT.@.{FLAG... 58b0: 7d 53 59 4e 43 0a 02 53 59 4e 43 70 53 44 4d 41 }SYNC..SYNCpSDMA 58c0: 44 4d 41 31 53 44 54 31 a0 13 95 44 4d 41 31 0a DMA1SDT1...DMA1. 58d0: 1e 7d 49 43 52 33 0a 02 49 43 52 33 a0 13 95 44 .}ICR3..ICR3...D 58e0: 4d 41 31 0a 3c 7d 49 43 52 30 0a 02 49 43 52 30 MA1.<}ICR0..ICR0 58f0: a0 15 7b 57 39 33 31 0b 00 20 00 7d 49 43 52 31 ..{W931.. .}ICR1 5900: 0a 02 49 43 52 31 5b 82 47 10 50 5f 44 30 08 5f ..ICR1[.G.P_D0._ 5910: 41 44 52 00 14 4a 0f 5f 47 54 46 00 08 50 49 42 ADR..J._GTF..PIB 5920: 30 11 11 0a 0e 03 00 00 00 00 a0 ef 03 00 00 00 0............... 5930: 00 a0 ef 8c 50 49 42 30 01 50 4d 44 30 8c 50 49 ....PIB0.PMD0.PI 5940: 42 30 0a 08 44 4d 44 30 a0 40 06 7b 50 52 49 54 B0..DMD0.@.{PRIT 5950: 0a 02 00 a0 13 93 7b 50 52 49 54 0a 09 00 0a 08 ......{PRIT..... 5960: 70 0a 08 50 4d 44 30 a1 41 04 70 0a 0a 50 4d 44 p..PMD0.A.p..PMD 5970: 30 7a 7b 50 52 49 54 0b 00 03 00 0a 08 60 7a 7b 0z{PRIT......`z{ 5980: 50 52 49 54 0b 00 30 00 0a 0c 61 72 60 61 62 a0 PRIT..0...ar`ab. 5990: 0c 93 0a 03 62 70 0a 0b 50 4d 44 30 a0 0c 93 0a ....bp..PMD0.... 59a0: 05 62 70 0a 0c 50 4d 44 30 a1 07 70 01 50 4d 44 .bp..PMD0..p.PMD 59b0: 30 a0 43 04 7b 53 59 4e 43 01 00 70 7d 53 44 54 0.C.{SYNC..p}SDT 59c0: 30 0a 40 00 44 4d 44 30 a0 2c 7b 49 43 52 31 01 0.@.DMD0.,{ICR1. 59d0: 00 a0 13 7b 49 43 52 30 01 00 72 44 4d 44 30 0a ...{ICR0..rDMD0. 59e0: 02 44 4d 44 30 a0 0f 7b 49 43 52 33 01 00 70 0a .DMD0..{ICR3..p. 59f0: 45 44 4d 44 30 a1 14 7d 74 7b 50 4d 44 30 0a 07 EDMD0..}t{PMD0.. 5a00: 00 0a 02 00 0a 20 44 4d 44 30 a4 50 49 42 30 5b ..... DMD0.PIB0[ 5a10: 82 46 10 50 5f 44 31 08 5f 41 44 52 01 14 49 0f .F.P_D1._ADR..I. 5a20: 5f 47 54 46 00 08 50 49 42 31 11 11 0a 0e 03 00 _GTF..PIB1...... 5a30: 00 00 00 b0 ef 03 00 00 00 00 b0 ef 8c 50 49 42 .............PIB 5a40: 31 01 50 4d 44 31 8c 50 49 42 31 0a 08 44 4d 44 1.PMD1.PIB1..DMD 5a50: 31 a0 4b 05 7b 50 52 49 54 0a 20 00 a0 13 93 7b 1.K.{PRIT. ....{ 5a60: 50 52 49 54 0a 90 00 0a 80 70 0a 08 50 4d 44 31 PRIT.....p..PMD1 5a70: a1 3c 72 7b 50 53 49 54 0a 03 00 7a 7b 50 53 49 .. 0050: 80 49 ee 6a 65 26 72 1e cd bf 5f 2f 96 d6 c0 0a .I.je&r..._/.... 0060: 92 f5 06 b5 00 b2 3b 29 02 e2 4c 8d c2 f2 bc 41 ......;)..L....A 0070: 77 9c 70 f0 f3 1b 09 d2 63 5a dc a8 83 f8 5e c9 w.p.....cZ....^. 0080: 15 95 f9 fa fd dc 05 b7 4d 67 7f 2d b3 84 33 20 ........Mg.-..3 0090: e1 d1 79 2a a7 6a 77 d1 b6 20 2a 76 42 c5 d5 e9 ..y*.jw.. *vB... 00a0: b6 43 40 55 44 c3 c9 37 99 5f 41 97 70 f3 d1 f6 .C@UD..7._A.p... 00b0: 07 ec 7b 1a 29 a1 c1 f1 91 fd 48 86 6e 3e ce cb ..{.).....H.n>.. 00c0: 01 00 00 00 b6 00 00 00 00 00 02 00 4c 45 4e 4f ............LENO 00d0: 56 4f 54 50 2d 36 38 20 20 20 57 49 4e 44 4f 57 VOTP-68 WINDOW 00e0: 53 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 S .............. 00f0: 00 00 00 00 00 00 8a 6e 2e c9 36 e6 7f 10 8a ea .......n..6..... 0100: 14 ad d2 93 b7 6d 9b 73 ad 83 36 b8 6c a7 a7 ee .....m.s..6.l... 0110: 37 47 16 fe f3 fc cd c7 89 84 06 16 91 0b 1e 81 7G.............. 0120: 11 42 b1 35 52 57 f6 6b bb 5f a5 81 e2 ff 89 8a .B.5RW.k._...... 0130: 95 c3 4d fc e9 56 4f 4c 34 cc 99 5e 62 e1 90 8a ..M..VOL4..^b... 0140: 54 be 4a 00 5c 9b a0 86 41 46 66 9d e2 f2 e7 36 T.J.\...AFf....6 0150: 9c 33 91 27 e7 8d 5c a1 d8 f9 a4 61 8a 1c 04 07 .3.'..\....a.... 0160: e3 2a 1e 14 f1 bd 7f 4c 09 ff 19 11 a9 d4 74 ca .*.....L......t. 0170: 11 9e dc 54 39 bf ...T9. APIC @ 0xbf6dff70 0000: 41 50 49 43 68 00 00 00 01 13 50 54 4c 54 44 20 APICh.....PTLTD 0010: 09 20 41 50 49 43 20 20 00 00 04 06 20 4c 54 50 . APIC .... LTP 0020: 00 00 00 00 00 00 e0 fe 01 00 00 00 00 08 00 00 ................ 0030: 01 00 00 00 00 08 01 01 01 00 00 00 01 0c 02 00 ................ 0040: 00 00 c0 fe 00 00 00 00 04 06 00 05 00 01 04 06 ................ 0050: 01 05 00 01 02 0a 00 00 02 00 00 00 05 00 02 0a ................ 0060: 00 09 09 00 00 00 0d 00 ........ BOOT @ 0xbf6dffd8 0000: 42 4f 4f 54 28 00 00 00 01 a5 50 54 4c 54 44 20 BOOT(.....PTLTD 0010: 24 53 42 46 54 42 4c 24 00 00 04 06 20 4c 54 50 $SBFTBL$.... LTP 0020: 01 00 00 00 36 00 00 00 ....6... SSDT @ 0xbf6d98bd 0000: 53 53 44 54 ad 02 00 00 01 59 53 61 74 61 52 65 SSDT.....YSataRe 0010: 53 61 74 61 41 68 63 69 00 10 00 00 49 4e 54 4c SataAhci....INTL 0020: 24 06 05 20 10 48 28 5c 2f 03 5f 53 42 5f 50 43 $.. .H(\/._SB_PC 0030: 49 30 53 41 54 41 5b 82 4f 0c 50 52 54 30 08 5f I0SATA[.O.PRT0._ 0040: 41 44 52 0b ff ff 14 44 0b 5f 53 44 44 01 08 47 ADR....D._SDD..G 0050: 42 55 30 11 0a 0a 07 00 00 00 00 00 a0 00 8c 47 BU0............G 0060: 42 55 30 0a 00 47 42 30 30 8c 47 42 55 30 0a 01 BU0..GB00.GBU0.. 0070: 47 42 30 31 8c 47 42 55 30 0a 02 47 42 30 32 8c GB01.GBU0..GB02. 0080: 47 42 55 30 0a 03 47 42 30 33 8c 47 42 55 30 0a GBU0..GB03.GBU0. 0090: 04 47 42 30 34 8c 47 42 55 30 0a 05 47 42 30 35 .GB04.GBU0..GB05 00a0: 8c 47 42 55 30 0a 06 47 42 30 36 a0 46 04 93 87 .GBU0..GB06.F... 00b0: 68 0b 00 02 8b 68 0a 9c 57 37 38 30 a0 1e 7b 57 h....h..W780..{W 00c0: 37 38 30 0a 08 00 70 0a 10 47 42 30 30 70 0a 03 780...p..GB00p.. 00d0: 47 42 30 31 70 0a ef 47 42 30 36 a1 16 70 0a 90 GB01p..GB06..p.. 00e0: 47 42 30 30 70 0a 03 47 42 30 31 70 0a ef 47 42 GB00p..GB01p..GB 00f0: 30 36 70 47 42 55 30 47 54 46 30 14 0b 5f 47 54 06pGBU0GTF0.._GT 0100: 46 00 a4 47 54 46 30 5b 82 41 0d 50 52 54 31 08 F..GTF0[.A.PRT1. 0110: 5f 41 44 52 0c ff ff 01 00 14 44 0b 5f 53 44 44 _ADR......D._SDD 0120: 01 08 47 42 55 31 11 0a 0a 07 00 00 00 00 00 a0 ..GBU1.......... 0130: 00 8c 47 42 55 31 0a 00 47 42 31 30 8c 47 42 55 ..GBU1..GB10.GBU 0140: 31 0a 01 47 42 31 31 8c 47 42 55 31 0a 02 47 42 1..GB11.GBU1..GB 0150: 31 32 8c 47 42 55 31 0a 03 47 42 31 33 8c 47 42 12.GBU1..GB13.GB 0160: 55 31 0a 04 47 42 31 34 8c 47 42 55 31 0a 05 47 U1..GB14.GBU1..G 0170: 42 31 35 8c 47 42 55 31 0a 06 47 42 31 36 a0 46 B15.GBU1..GB16.F 0180: 04 93 87 68 0b 00 02 8b 68 0a 9c 57 37 38 31 a0 ...h....h..W781. 0190: 1e 7b 57 37 38 31 0a 08 00 70 0a 10 47 42 31 30 .{W781...p..GB10 01a0: 70 0a 03 47 42 31 31 70 0a ef 47 42 31 36 a1 16 p..GB11p..GB16.. 01b0: 70 0a 90 47 42 31 30 70 0a 03 47 42 31 31 70 0a p..GB10p..GB11p. 01c0: ef 47 42 31 36 70 47 42 55 31 47 54 46 31 14 0b .GB16pGBU1GTF1.. 01d0: 5f 47 54 46 00 a4 47 54 46 31 5b 82 41 0d 50 52 _GTF..GTF1[.A.PR 01e0: 54 32 08 5f 41 44 52 0c ff ff 02 00 14 44 0b 5f T2._ADR......D._ 01f0: 53 44 44 01 08 47 42 55 32 11 0a 0a 07 00 00 00 SDD..GBU2....... 0200: 00 00 a0 00 8c 47 42 55 32 0a 00 47 42 32 30 8c .....GBU2..GB20. 0210: 47 42 55 32 0a 01 47 42 32 31 8c 47 42 55 32 0a GBU2..GB21.GBU2. 0220: 02 47 42 32 32 8c 47 42 55 32 0a 03 47 42 32 33 .GB22.GBU2..GB23 0230: 8c 47 42 55 32 0a 04 47 42 32 34 8c 47 42 55 32 .GBU2..GB24.GBU2 0240: 0a 05 47 42 32 35 8c 47 42 55 32 0a 06 47 42 32 ..GB25.GBU2..GB2 0250: 36 a0 46 04 93 87 68 0b 00 02 8b 68 0a 9c 57 37 6.F...h....h..W7 0260: 38 32 a0 1e 7b 57 37 38 32 0a 08 00 70 0a 10 47 82..{W782...p..G 0270: 42 32 30 70 0a 03 47 42 32 31 70 0a ef 47 42 32 B20p..GB21p..GB2 0280: 36 a1 16 70 0a 90 47 42 32 30 70 0a 03 47 42 32 6..p..GB20p..GB2 0290: 31 70 0a ef 47 42 32 36 70 47 42 55 32 47 54 46 1p..GB26pGBU2GTF 02a0: 32 14 0b 5f 47 54 46 00 a4 47 54 46 32 2.._GTF..GTF2 SSDT @ 0xbf6d981a 0000: 53 53 44 54 a3 00 00 00 01 ed 42 72 74 52 65 66 SSDT......BrtRef 0010: 44 44 30 31 42 52 54 00 00 10 00 00 49 4e 54 4c DD01BRT.....INTL 0020: 24 06 05 20 10 4e 07 5c 2f 04 5f 53 42 5f 50 43 $.. .N.\/._SB_PC 0030: 49 30 47 46 58 30 44 44 30 33 14 1e 5f 42 43 4c I0GFX0DD03.._BCL 0040: 00 a4 12 16 0a 0a 46 0a 28 0a 00 0a 0a 0a 14 0a ......F.(....... 0050: 1e 0a 28 0a 32 0a 3c 0a 46 14 25 5f 42 43 4d 01 ..(.2.<.F.%_BCM. 0060: 78 68 0a 0a 60 61 70 61 5c 2f 05 5f 53 42 5f 50 xh..`apa\/._SB_P 0070: 43 49 30 4c 50 43 42 45 43 30 5f 42 52 54 53 14 CI0LPCBEC0_BRTS. 0080: 23 5f 42 51 43 00 77 5c 2f 05 5f 53 42 5f 50 43 #_BQC.w\/._SB_PC 0090: 49 30 4c 50 43 42 45 43 30 5f 42 52 54 53 0a 0a I0LPCBEC0_BRTS.. 00a0: 60 a4 60 `.` SSDT @ 0xbf6d8e10 0000: 53 53 44 54 5f 02 00 00 01 c8 50 6d 52 65 66 00 SSDT_.....PmRef. 0010: 43 70 75 30 54 73 74 00 00 30 00 00 49 4e 54 4c Cpu0Tst..0..INTL 0020: 24 06 05 20 10 4a 23 5c 2e 5f 50 52 5f 43 50 55 $.. .J#\._PR_CPU 0030: 30 08 5f 54 50 43 0a 00 14 4d 06 5f 50 54 43 00 0._TPC...M._PTC. 0040: a0 37 7b 50 44 43 30 0a 04 00 a4 12 2c 02 11 14 .7{PDC0.....,... 0050: 0a 11 82 0c 00 7f 00 00 00 00 00 00 00 00 00 00 ................ 0060: 00 79 00 11 14 0a 11 82 0c 00 7f 00 00 00 00 00 .y.............. 0070: 00 00 00 00 00 00 79 00 a4 12 2c 02 11 14 0a 11 ......y...,..... 0080: 82 0c 00 01 04 01 00 10 10 00 00 00 00 00 00 79 ...............y 0090: 00 11 14 0a 11 82 0c 00 01 04 01 00 10 10 00 00 ................ 00a0: 00 00 00 00 79 00 08 54 53 53 49 12 41 07 08 12 ....y..TSSI.A... 00b0: 0d 05 0a 64 0b e8 03 0a 00 0a 00 0a 00 12 0d 05 ...d............ 00c0: 0a 58 0b 6b 03 0a 00 0a 0f 0a 00 12 0d 05 0a 4b .X.k...........K 00d0: 0b ee 02 0a 00 0a 0e 0a 00 12 0d 05 0a 3f 0b 71 .............?.q 00e0: 02 0a 00 0a 0d 0a 00 12 0d 05 0a 32 0b f4 01 0a ...........2.... 00f0: 00 0a 0c 0a 00 12 0d 05 0a 26 0b 77 01 0a 00 0a .........&.w.... 0100: 0b 0a 00 12 0c 05 0a 19 0a fa 0a 00 0a 0a 0a 00 ................ 0110: 12 0c 05 0a 0d 0a 7d 0a 00 0a 09 0a 00 08 54 53 ......}.......TS 0120: 53 4d 12 41 07 08 12 0d 05 0a 64 0b e8 03 0a 00 SM.A......d..... 0130: 0a 00 0a 00 12 0d 05 0a 58 0b 6b 03 0a 00 0a 1e ........X.k..... 0140: 0a 00 12 0d 05 0a 4b 0b ee 02 0a 00 0a 1c 0a 00 ......K......... 0150: 12 0d 05 0a 3f 0b 71 02 0a 00 0a 1a 0a 00 12 0d ....?.q......... 0160: 05 0a 32 0b f4 01 0a 00 0a 18 0a 00 12 0d 05 0a ..2............. 0170: 26 0b 77 01 0a 00 0a 16 0a 00 12 0c 05 0a 19 0a &.w............. 0180: fa 0a 00 0a 14 0a 00 12 0c 05 0a 0d 0a 7d 0a 00 .............}.. 0190: 0a 12 0a 00 08 54 53 53 46 0a 00 14 43 08 5f 54 .....TSSF...C._T 01a0: 53 53 00 a0 47 06 90 92 54 53 53 46 5b 12 5f 50 SS..G...TSSF[._P 01b0: 53 53 00 70 5f 50 53 53 60 70 87 60 61 76 61 70 SS.p_PSS`p.`avap 01c0: 83 88 83 88 60 61 00 0a 01 00 62 70 0a 00 63 a2 ....`a....bp..c. 01d0: 35 95 63 87 54 53 53 49 70 78 77 62 74 0a 08 63 5.c.TSSIpxwbt..c 01e0: 00 00 0a 08 00 00 64 70 64 88 83 88 54 53 53 49 ......dpd...TSSI 01f0: 63 00 0a 01 00 70 64 88 83 88 54 53 53 4d 63 00 c....pd...TSSMc. 0200: 0a 01 00 75 63 70 ff 54 53 53 46 a0 0e 7b 50 44 ...ucp.TSSF..{PD 0210: 43 30 0a 04 00 a4 54 53 53 4d a4 54 53 53 49 14 C0....TSSM.TSSI. 0220: 3f 5f 54 53 44 00 a0 27 90 7b 43 46 47 44 0c 00 ?_TSD..'.{CFGD.. 0230: 00 00 01 00 92 7b 50 44 43 30 0a 04 00 a4 12 0f .....{PDC0...... 0240: 01 12 0c 05 0a 05 0a 00 0a 00 0a fd 0a 02 a4 12 ................ 0250: 0f 01 12 0c 05 0a 05 0a 00 0a 00 0a fc 0a 01 ............... SSDT @ 0xbf6d8d6a 0000: 53 53 44 54 a6 00 00 00 01 6d 50 6d 52 65 66 00 SSDT.....mPmRef. 0010: 43 70 75 31 54 73 74 00 00 30 00 00 49 4e 54 4c Cpu1Tst..0..INTL 0020: 24 06 05 20 10 41 08 5c 2e 5f 50 52 5f 43 50 55 $.. .A.\._PR_CPU 0030: 31 08 5f 54 50 43 0a 00 14 16 5f 50 54 43 00 a4 1._TPC...._PTC.. 0040: 5c 2f 03 5f 50 52 5f 43 50 55 30 5f 50 54 43 14 \/._PR_CPU0_PTC. 0050: 16 5f 54 53 53 00 a4 5c 2f 03 5f 50 52 5f 43 50 ._TSS..\/._PR_CP 0060: 55 30 5f 54 53 53 14 3f 5f 54 53 44 00 a0 27 90 U0_TSS.?_TSD..'. 0070: 7b 43 46 47 44 0c 00 00 00 01 00 92 7b 50 44 43 {CFGD.......{PDC 0080: 31 0a 04 00 a4 12 0f 01 12 0c 05 0a 05 0a 00 0a 1............... 0090: 00 0a fd 0a 02 a4 12 0f 01 12 0c 05 0a 05 0a 00 ................ 00a0: 0a 01 0a fc 0a 01 ...... SSDT @ 0xbf6d8884 0000: 53 53 44 54 e6 04 00 00 01 df 50 6d 52 65 66 00 SSDT......PmRef. 0010: 43 70 75 50 6d 00 00 00 00 30 00 00 49 4e 54 4c CpuPm....0..INTL 0020: 24 06 05 20 10 45 08 5c 00 08 53 53 44 54 12 43 $.. .E.\..SSDT.C 0030: 05 0c 0d 43 50 55 30 49 53 54 20 00 0c 9e 95 6d ...CPU0IST ....m 0040: bf 0c b4 01 00 00 0d 43 50 55 31 49 53 54 20 00 .......CPU1IST . 0050: 0c 52 97 6d bf 0c c8 00 00 00 0d 43 50 55 30 43 .R.m.......CPU0C 0060: 53 54 20 00 0c 6f 90 6d bf 0c aa 04 00 00 0d 43 ST ..o.m.......C 0070: 50 55 31 43 53 54 20 00 0c 19 95 6d bf 0c 85 00 PU1CST ....m.... 0080: 00 00 08 43 46 47 44 0c f1 69 3f 11 08 5c 50 44 ...CFGD..i?..\PD 0090: 43 30 0c 00 00 00 80 08 5c 50 44 43 31 0c 00 00 C0......\PDC1... 00a0: 00 80 08 5c 53 44 54 4c 0a 00 10 4d 21 5c 2e 5f ...\SDTL...M!\._ 00b0: 50 52 5f 43 50 55 30 08 48 49 30 5f 0a 00 08 48 PR_CPU0.HI0_...H 00c0: 43 30 5f 0a 00 14 48 06 5f 50 44 43 01 8a 68 0a C0_...H._PDC..h. 00d0: 00 52 45 56 53 8a 68 0a 04 53 49 5a 45 70 87 68 .REVS.h..SIZEp.h 00e0: 60 70 74 60 0a 08 00 61 5b 13 68 0a 40 77 61 0a `pt`...a[.h.@wa. 00f0: 08 00 54 45 4d 50 08 53 54 53 30 11 07 0a 04 00 ..TEMP.STS0..... 0100: 00 00 00 73 53 54 53 30 54 45 4d 50 62 5f 4f 53 ...sSTS0TEMPb_OS 0110: 43 11 13 0a 10 16 a6 77 40 0c 29 be 47 9e bd d8 C......w@.).G... 0120: 70 58 71 39 53 52 45 56 53 53 49 5a 45 62 14 49 pXq9SREVSSIZEb.I 0130: 19 5f 4f 53 43 04 8a 6b 0a 00 53 54 53 30 8a 6b ._OSC..k..STS0.k 0140: 0a 04 43 41 50 30 8a 68 0a 00 49 49 44 30 8a 68 ..CAP0.h..IID0.h 0150: 0a 04 49 49 44 31 8a 68 0a 08 49 49 44 32 8a 68 ..IID1.h..IID2.h 0160: 0a 0c 49 49 44 33 08 55 49 44 30 11 13 0a 10 16 ..IID3.UID0..... 0170: a6 77 40 0c 29 be 47 9e bd d8 70 58 71 39 53 8a .w@.).G...pXq9S. 0180: 55 49 44 30 0a 00 45 49 44 30 8a 55 49 44 30 0a UID0..EID0.UID0. 0190: 04 45 49 44 31 8a 55 49 44 30 0a 08 45 49 44 32 .EID1.UID0..EID2 01a0: 8a 55 49 44 30 0a 0c 45 49 44 33 a0 32 92 90 90 .UID0..EID3.2... 01b0: 93 49 49 44 30 45 49 44 30 93 49 49 44 31 45 49 .IID0EID0.IID1EI 01c0: 44 31 90 93 49 49 44 32 45 49 44 32 93 49 49 44 D1..IID2EID2.IID 01d0: 33 45 49 44 33 70 0a 06 53 54 53 30 a4 6b a0 0f 3EID3p..STS0.k.. 01e0: 92 93 69 0a 01 70 0a 0a 53 54 53 30 a4 6b 7d 7b ..i..p..STS0.k}{ 01f0: 50 44 43 30 0c ff ff ff 7f 00 43 41 50 30 50 44 PDC0......CAP0PD 0200: 43 30 70 7b 50 44 43 30 0a ff 00 50 43 50 30 a0 C0p{PDC0...PCP0. 0210: 4c 05 7b 43 46 47 44 0a 01 00 a0 41 05 90 90 7b L.{CFGD....A...{ 0220: 43 46 47 44 0c 00 00 00 01 00 93 7b 50 44 43 30 CFGD.......{PDC0 0230: 0a 09 00 0a 09 92 7b 53 44 54 4c 0a 01 00 7d 53 ......{SDTL...}S 0240: 44 54 4c 0a 01 53 44 54 4c 5b 80 49 53 54 30 00 DTL..SDTL[.IST0. 0250: 83 88 53 53 44 54 0a 01 00 83 88 53 53 44 54 0a ..SSDT.....SSDT. 0260: 02 00 5b 20 49 53 54 30 48 49 30 5f a0 49 05 7b ..[ IST0HI0_.I.{ 0270: 43 46 47 44 0a f0 00 a0 4e 04 90 90 7b 43 46 47 CFGD....N...{CFG 0280: 44 0c 00 00 00 01 00 7b 50 44 43 30 0a 18 00 92 D......{PDC0.... 0290: 7b 53 44 54 4c 0a 02 00 7d 53 44 54 4c 0a 02 53 {SDTL...}SDTL..S 02a0: 44 54 4c 5b 80 43 53 54 30 00 83 88 53 53 44 54 DTL[.CST0...SSDT 02b0: 0a 07 00 83 88 53 53 44 54 0a 08 00 5b 20 43 53 .....SSDT...[ CS 02c0: 54 30 48 43 30 5f a4 6b 10 4d 21 5c 2e 5f 50 52 T0HC0_.k.M!\._PR 02d0: 5f 43 50 55 31 08 48 49 31 5f 0a 00 08 48 43 31 _CPU1.HI1_...HC1 02e0: 5f 0a 00 14 48 06 5f 50 44 43 01 8a 68 0a 00 52 _...H._PDC..h..R 02f0: 45 56 53 8a 68 0a 04 53 49 5a 45 70 87 68 60 70 EVS.h..SIZEp.h`p 0300: 74 60 0a 08 00 61 5b 13 68 0a 40 77 61 0a 08 00 t`...a[.h.@wa... 0310: 54 45 4d 50 08 53 54 53 31 11 07 0a 04 00 00 00 TEMP.STS1....... 0320: 00 73 53 54 53 31 54 45 4d 50 62 5f 4f 53 43 11 .sSTS1TEMPb_OSC. 0330: 13 0a 10 16 a6 77 40 0c 29 be 47 9e bd d8 70 58 .....w@.).G...pX 0340: 71 39 53 52 45 56 53 53 49 5a 45 62 14 49 19 5f q9SREVSSIZEb.I._ 0350: 4f 53 43 04 8a 6b 0a 00 53 54 53 31 8a 6b 0a 04 OSC..k..STS1.k.. 0360: 43 41 50 31 8a 68 0a 00 49 49 44 30 8a 68 0a 04 CAP1.h..IID0.h.. 0370: 49 49 44 31 8a 68 0a 08 49 49 44 32 8a 68 0a 0c IID1.h..IID2.h.. 0380: 49 49 44 33 08 55 49 44 31 11 13 0a 10 16 a6 77 IID3.UID1......w 0390: 40 0c 29 be 47 9e bd d8 70 58 71 39 53 8a 55 49 @.).G...pXq9S.UI 03a0: 44 31 0a 00 45 49 44 30 8a 55 49 44 31 0a 04 45 D1..EID0.UID1..E 03b0: 49 44 31 8a 55 49 44 31 0a 08 45 49 44 32 8a 55 ID1.UID1..EID2.U 03c0: 49 44 31 0a 0c 45 49 44 33 a0 32 92 90 90 93 49 ID1..EID3.2....I 03d0: 49 44 30 45 49 44 30 93 49 49 44 31 45 49 44 31 ID0EID0.IID1EID1 03e0: 90 93 49 49 44 32 45 49 44 32 93 49 49 44 33 45 ..IID2EID2.IID3E 03f0: 49 44 33 70 0a 06 53 54 53 31 a4 6b a0 0f 92 93 ID3p..STS1.k.... 0400: 69 0a 01 70 0a 0a 53 54 53 31 a4 6b 7d 7b 50 44 i..p..STS1.k}{PD 0410: 43 31 0c ff ff ff 7f 00 43 41 50 31 50 44 43 31 C1......CAP1PDC1 0420: 70 7b 50 44 43 31 0a ff 00 50 43 50 31 a0 4c 05 p{PDC1...PCP1.L. 0430: 7b 43 46 47 44 0a 01 00 a0 41 05 90 90 7b 43 46 {CFGD....A...{CF 0440: 47 44 0c 00 00 00 01 00 93 7b 50 44 43 31 0a 09 GD.......{PDC1.. 0450: 00 0a 09 92 7b 53 44 54 4c 0a 10 00 7d 53 44 54 ....{SDTL...}SDT 0460: 4c 0a 10 53 44 54 4c 5b 80 49 53 54 31 00 83 88 L..SDTL[.IST1... 0470: 53 53 44 54 0a 04 00 83 88 53 53 44 54 0a 05 00 SSDT.....SSDT... 0480: 5b 20 49 53 54 31 48 49 31 5f a0 49 05 7b 43 46 [ IST1HI1_.I.{CF 0490: 47 44 0a f0 00 a0 4e 04 90 90 7b 43 46 47 44 0c GD....N...{CFGD. 04a0: 00 00 00 01 00 7b 50 44 43 31 0a 18 00 92 7b 53 .....{PDC1....{S 04b0: 44 54 4c 0a 20 00 7d 53 44 54 4c 0a 20 53 44 54 DTL. .}SDTL. SDT 04c0: 4c 5b 80 43 53 54 31 00 83 88 53 53 44 54 0a 0a L[.CST1...SSDT.. 04d0: 00 83 88 53 53 44 54 0a 0b 00 5b 20 43 53 54 31 ...SSDT...[ CST1 04e0: 48 43 31 5f a4 6b HC1_.k XSDT @ 0xbf6d87f0 0000: 58 53 44 54 94 00 00 00 01 c2 4c 45 4e 4f 56 4f XSDT......LENOVO 0010: 54 50 2d 36 38 20 20 20 00 00 04 06 20 4c 54 50 TP-68 .... LTP 0020: 00 00 00 00 d2 fb 6d bf 00 00 00 00 c6 fc 6d bf ......m.......m. 0030: 00 00 00 00 2e fd 6d bf 00 00 00 00 66 fd 6d bf ......m.....f.m. 0040: 00 00 00 00 a2 fd 6d bf 00 00 00 00 d4 fd 6d bf ......m.......m. 0050: 00 00 00 00 fa fd 6d bf 00 00 00 00 70 ff 6d bf ......m.....p.m. 0060: 00 00 00 00 d8 ff 6d bf 00 00 00 00 bd 98 6d bf ......m.......m. 0070: 00 00 00 00 1a 98 6d bf 00 00 00 00 10 8e 6d bf ......m.......m. 0080: 00 00 00 00 6a 8d 6d bf 00 00 00 00 84 88 6d bf ....j.m.......m. 0090: 00 00 00 00 .... RSD PTR @ 0xf7240 0000: 52 53 44 20 50 54 52 20 c5 4c 45 4e 4f 56 4f 02 RSD PTR .LENOVO. 0010: 94 87 6d bf 24 00 00 00 f0 87 6d bf 00 00 00 00 ..m.$.....m..... 0020: 39 00 00 00 9... fwts-test/osilinux-0001/osilinux-0001.log000066400000000000000000000036301231470457100202070ustar00rootroot00000000000000osilinux osilinux: Disassemble DSDT to check for _OSI("Linux"). osilinux ---------------------------------------------------------- osilinux Test 1 of 1: Disassemble DSDT to check for _OSI("Linux"). osilinux This is not strictly a failure mode, it just alerts one osilinux that this has been defined in the DSDT and probably should osilinux be avoided since the Linux ACPI driver matches onto the osilinux Windows _OSI strings osilinux { osilinux If (_OSI ("Linux")) osilinux { osilinux Store (One, LINX) /* \LINX */ osilinux Store (Zero, ECDY) /* \ECDY */ osilinux } osilinux If (_OSI ("Windows 2001")) osilinux { osilinux Store (0x07D1, OSYS) /* \OSYS */ osilinux } osilinux If (_OSI ("Windows 2001 SP1")) osilinux { osilinux Store (0x07D1, OSYS) /* \OSYS */ osilinux } osilinux If (_OSI ("Windows 2001 SP2")) osilinux { osilinux Store (0x07D2, OSYS) /* \OSYS */ osilinux } osilinux If (_OSI ("Windows 2006")) osilinux { osilinux Store (0x07D6, OSYS) /* \OSYS */ osilinux } osilinux } osilinux WARNING: Test 1, DSDT implements a deprecated osilinux _OSI("Linux") test. osilinux osilinux ========================================================== osilinux 0 passed, 0 failed, 1 warning, 0 aborted, 0 skipped, 0 osilinux info only. osilinux ========================================================== fwts-test/osilinux-0001/osilinux-0002.log000066400000000000000000000015161231470457100202110ustar00rootroot00000000000000osilinux osilinux: Disassemble DSDT to check for _OSI("Linux"). osilinux ---------------------------------------------------------- osilinux Test 1 of 1: Disassemble DSDT to check for _OSI("Linux"). osilinux This is not strictly a failure mode, it just alerts one osilinux that this has been defined in the DSDT and probably should osilinux be avoided since the Linux ACPI driver matches onto the osilinux Windows _OSI strings osilinux PASSED: Test 1, DSDT does not implement a deprecated osilinux _OSI("Linux") test. osilinux osilinux ========================================================== osilinux 1 passed, 0 failed, 0 warning, 0 aborted, 0 skipped, 0 osilinux info only. osilinux ========================================================== fwts-test/osilinux-0001/test-0001.sh000077500000000000000000000010751231470457100171510ustar00rootroot00000000000000#!/bin/bash # TEST="Test osilinux against known incorrect ACPI tables" NAME=test-0001.sh TMPLOG=$TMP/osilinux.log.$$ $FWTS --show-tests | grep osilinux > /dev/null if [ $? -eq 1 ]; then echo SKIP: $TEST, $NAME exit 77 fi $FWTS --log-format="%line %owner " -w 80 --dumpfile=$FWTSTESTDIR/osilinux-0001/acpidump-0001.log osilinux - | grep "^[0-9]*[ ]*osilinux" | cut -c7- > $TMPLOG diff $TMPLOG $FWTSTESTDIR/osilinux-0001/osilinux-0001.log >> $FAILURE_LOG ret=$? if [ $ret -eq 0 ]; then echo PASSED: $TEST, $NAME else echo FAILED: $TEST, $NAME fi rm $TMPLOG exit $ret fwts-test/osilinux-0001/test-0002.sh000077500000000000000000000010731231470457100171500ustar00rootroot00000000000000#!/bin/bash # TEST="Test osilinux against known correct ACPI tables" NAME=test-0002.sh TMPLOG=$TMP/osilinux.log.$$ $FWTS --show-tests | grep osilinux > /dev/null if [ $? -eq 1 ]; then echo SKIP: $TEST, $NAME exit 77 fi $FWTS --log-format="%line %owner " -w 80 --dumpfile=$FWTSTESTDIR/osilinux-0001/acpidump-0002.log osilinux - | grep "^[0-9]*[ ]*osilinux" | cut -c7- > $TMPLOG diff $TMPLOG $FWTSTESTDIR/osilinux-0001/osilinux-0002.log >> $FAILURE_LOG ret=$? if [ $ret -eq 0 ]; then echo PASSED: $TEST, $NAME else echo FAILED: $TEST, $NAME fi rm $TMPLOG exit $ret fwts-test/syntaxcheck-0001/000077500000000000000000000000001231470457100157245ustar00rootroot00000000000000fwts-test/syntaxcheck-0001/acpidump-0001.log000066400000000000000000003707021231470457100206200ustar00rootroot00000000000000DSDT @ 0xbf6d9b6a 0000: 44 53 44 54 f4 5f 00 00 02 11 54 4f 53 43 50 4c DSDT._....TOSCPL 0010: 43 52 45 53 54 4c 4e 45 00 00 04 06 49 4e 54 4c CRESTLNE....INTL 0020: 08 06 06 20 08 5a 30 30 30 01 08 5a 30 30 31 0a ... .Z000..Z001. 0030: 02 08 5a 30 30 32 0a 04 08 5a 30 30 33 0a 08 08 ..Z002...Z003... 0040: 5a 30 30 34 00 08 5a 30 30 35 0a 0f 08 5a 30 30 Z004..Z005...Z00 0050: 36 0a 0d 08 5a 30 30 37 0a 0b 08 5a 30 30 38 0a 6...Z007...Z008. 0060: 09 08 45 43 44 59 0a 07 5b 01 4d 55 54 58 00 5b ..ECDY..[.MUTX.[ 0070: 80 50 52 54 30 01 0a 80 0a 04 5b 81 0b 50 52 54 .PRT0.....[..PRT 0080: 30 13 50 38 30 48 20 14 4e 07 50 38 58 48 0a a0 0.P80H .N.P8XH.. 0090: 17 93 68 00 70 7d 7b 50 38 30 44 0c 00 ff ff ff ..h.p}{P80D..... 00a0: 00 69 00 50 38 30 44 a0 1b 93 68 01 70 7d 7b 50 .i.P80D...h.p}{P 00b0: 38 30 44 0c ff 00 ff ff 00 79 69 0a 08 00 00 50 80D......yi....P 00c0: 38 30 44 a0 1c 93 68 0a 02 70 7d 7b 50 38 30 44 80D...h..p}{P80D 00d0: 0c ff ff 00 ff 00 79 69 0a 10 00 00 50 38 30 44 ......yi....P80D 00e0: a0 1c 93 68 0a 03 70 7d 7b 50 38 30 44 0c ff ff ...h..p}{P80D... 00f0: ff 00 00 79 69 0a 18 00 00 50 38 30 44 70 50 38 ...yi....P80DpP8 0100: 30 44 50 38 30 48 14 0c 5f 50 49 43 01 70 68 47 0DP80H.._PIC.phG 0110: 50 49 43 14 46 06 5f 50 54 53 01 70 00 50 38 30 PIC.F._PTS.p.P80 0120: 44 50 38 58 48 00 68 a0 1e 93 68 0a 03 70 01 5c DP8XH.h...h..p.\ 0130: 2f 05 5f 53 42 5f 50 43 49 30 4c 50 43 42 45 43 /._SB_PCI0LPCBEC 0140: 30 5f 53 33 4c 44 a0 33 93 68 0a 04 70 01 5c 2f 0_S3LD.3.h..p.\/ 0150: 05 5f 53 42 5f 50 43 49 30 4c 50 43 42 45 43 30 ._SB_PCI0LPCBEC0 0160: 5f 53 33 4c 44 5c 2f 04 5f 53 42 5f 50 43 49 30 _S3LD\/._SB_PCI0 0170: 4c 50 43 42 50 48 53 53 0a 0e 14 4c 1c 5f 57 41 LPCBPHSS...L._WA 0180: 4b 01 50 38 58 48 01 0a ab a0 30 91 93 68 0a 03 K.P8XH....0..h.. 0190: 93 68 0a 04 a0 25 7b 43 46 47 44 0c 00 00 00 01 .h...%{CFGD..... 01a0: 00 a0 18 90 7b 43 46 47 44 0a f0 00 93 4f 53 59 ....{CFGD....OSY 01b0: 53 0b d1 07 54 52 41 50 0a 3d a0 18 93 52 50 31 S...TRAP.=...RP1 01c0: 44 00 86 5c 2f 03 5f 53 42 5f 50 43 49 30 52 50 D..\/._SB_PCI0RP 01d0: 30 31 00 a0 18 93 52 50 32 44 00 86 5c 2f 03 5f 01....RP2D..\/._ 01e0: 53 42 5f 50 43 49 30 52 50 30 32 00 a0 18 93 52 SB_PCI0RP02....R 01f0: 50 33 44 00 86 5c 2f 03 5f 53 42 5f 50 43 49 30 P3D..\/._SB_PCI0 0200: 52 50 30 33 00 a0 18 93 52 50 34 44 00 86 5c 2f RP03....RP4D..\/ 0210: 03 5f 53 42 5f 50 43 49 30 52 50 30 34 00 a0 18 ._SB_PCI0RP04... 0220: 93 52 50 35 44 00 86 5c 2f 03 5f 53 42 5f 50 43 .RP5D..\/._SB_PC 0230: 49 30 52 50 30 35 00 a0 18 93 52 50 36 44 00 86 I0RP05....RP6D.. 0240: 5c 2f 03 5f 53 42 5f 50 43 49 30 52 50 30 36 00 \/._SB_PCI0RP06. 0250: a0 12 93 68 0a 03 50 38 58 48 00 0a 30 54 52 41 ...h..P8XH..0TRA 0260: 50 0a 46 a0 43 0d 93 68 0a 04 50 38 58 48 00 0a P.F.C..h..P8XH.. 0270: 40 5c 2f 04 5f 53 42 5f 50 43 49 30 4c 50 43 42 @\/._SB_PCI0LPCB 0280: 50 48 53 53 0a 0f 70 57 41 4b 46 60 70 00 57 41 PHSS..pWAKF`p.WA 0290: 4b 46 7b 60 0a 05 60 a0 18 93 60 01 50 38 58 48 KF{`..`...`.P8XH 02a0: 00 0a 41 86 5c 2e 5f 53 42 5f 50 57 52 42 0a 02 ..A.\._SB_PWRB.. 02b0: a0 46 08 44 54 53 45 54 52 41 50 0a 47 a0 42 06 .F.DTSETRAP.G.B. 02c0: 90 5c 2f 04 5f 53 42 5f 50 43 49 30 4c 50 43 42 .\/._SB_PCI0LPCB 02d0: 45 43 4f 4b 93 45 43 44 59 00 a0 27 92 95 44 54 ECOK.ECDY..'..DT 02e0: 53 31 44 54 53 32 70 44 54 53 31 5c 2f 05 5f 53 S1DTS2pDTS1\/._S 02f0: 42 5f 50 43 49 30 4c 50 43 42 45 43 30 5f 53 4b B_PCI0LPCBEC0_SK 0300: 54 41 a1 1d 70 44 54 53 32 5c 2f 05 5f 53 42 5f TA..pDTS2\/._SB_ 0310: 50 43 49 30 4c 50 43 42 45 43 30 5f 53 4b 54 41 PCI0LPCBEC0_SKTA 0320: a1 16 5c 2f 04 5f 53 42 5f 50 43 49 30 4c 50 43 ..\/._SB_PCI0LPC 0330: 42 50 48 53 53 0a 10 5c 2e 5f 50 52 5f 52 50 50 BPHSS..\._PR_RPP 0340: 43 a4 12 04 02 00 00 14 1e 47 45 54 42 0b 77 68 C........GETB.wh 0350: 0a 08 60 77 69 0a 08 61 5b 13 6a 60 61 54 42 46 ..`wi..a[.j`aTBF 0360: 33 a4 54 42 46 33 14 42 09 50 4e 4f 54 08 a0 4a 3.TBF3.B.PNOT..J 0370: 06 4d 50 45 4e a0 31 7b 50 44 43 30 0a 08 00 86 .MPEN.1{PDC0.... 0380: 5c 2e 5f 50 52 5f 43 50 55 30 0a 80 a0 1a 7b 50 \._PR_CPU0....{P 0390: 44 43 30 0a 10 00 5b 22 0a 64 86 5c 2e 5f 50 52 DC0...[".d.\._PR 03a0: 5f 43 50 55 30 0a 81 a0 31 7b 50 44 43 31 0a 08 _CPU0...1{PDC1.. 03b0: 00 86 5c 2e 5f 50 52 5f 43 50 55 31 0a 80 a0 1a ..\._PR_CPU1.... 03c0: 7b 50 44 43 31 0a 10 00 5b 22 0a 64 86 5c 2e 5f {PDC1...[".d.\._ 03d0: 50 52 5f 43 50 55 31 0a 81 a1 1f 86 5c 2e 5f 50 PR_CPU1.....\._P 03e0: 52 5f 43 50 55 30 0a 80 5b 22 0a 64 86 5c 2e 5f R_CPU0..[".d.\._ 03f0: 50 52 5f 43 50 55 30 0a 81 14 17 54 52 41 50 09 PR_CPU0....TRAP. 0400: 70 68 53 4d 49 46 70 00 54 52 50 30 a4 53 4d 49 phSMIFp.TRP0.SMI 0410: 46 10 41 0f 5f 53 42 5f 14 4a 0e 5f 49 4e 49 00 F.A._SB_.J._INI. 0420: 70 0b 99 99 4d 41 52 4b a0 1c 44 54 53 45 54 52 p...MARK..DTSETR 0430: 41 50 0a 47 5e 2f 03 50 43 49 30 4c 50 43 42 50 AP.G^/.PCI0LPCBP 0440: 48 53 53 0a 10 70 0b d0 07 4f 53 59 53 a0 4a 09 HSS..p...OSYS.J. 0450: 5b 12 5f 4f 53 49 60 a0 18 5f 4f 53 49 0d 4c 69 [._OSI`.._OSI.Li 0460: 6e 75 78 00 70 01 4c 49 4e 58 70 00 45 43 44 59 nux.p.LINXp.ECDY 0470: a0 1b 5f 4f 53 49 0d 57 69 6e 64 6f 77 73 20 32 .._OSI.Windows 2 0480: 30 30 31 00 70 0b d1 07 4f 53 59 53 a0 1f 5f 4f 001.p...OSYS.._O 0490: 53 49 0d 57 69 6e 64 6f 77 73 20 32 30 30 31 20 SI.Windows 2001 04a0: 53 50 31 00 70 0b d1 07 4f 53 59 53 a0 1f 5f 4f SP1.p...OSYS.._O 04b0: 53 49 0d 57 69 6e 64 6f 77 73 20 32 30 30 31 20 SI.Windows 2001 04c0: 53 50 32 00 70 0b d2 07 4f 53 59 53 a0 1b 5f 4f SP2.p...OSYS.._O 04d0: 53 49 0d 57 69 6e 64 6f 77 73 20 32 30 30 36 00 SI.Windows 2006. 04e0: 70 0b d6 07 4f 53 59 53 a0 14 90 4d 50 45 4e 93 p...OSYS...MPEN. 04f0: 4f 53 59 53 0b d1 07 54 52 41 50 0a 3d 54 52 41 OSYS...TRAP.=TRA 0500: 50 0a 2b 5b 80 47 4e 56 53 00 0c bc 2d 6e bf 0b P.+[.GNVS...-n.. 0510: 00 01 5b 81 45 24 47 4e 56 53 10 4f 53 59 53 10 ..[.E$GNVS.OSYS. 0520: 53 4d 49 46 08 50 52 4d 30 08 50 52 4d 31 08 53 SMIF.PRM0.PRM1.S 0530: 43 49 46 08 50 52 4d 32 08 50 52 4d 33 08 4c 43 CIF.PRM2.PRM3.LC 0540: 4b 46 08 50 52 4d 34 08 50 52 4d 35 08 50 38 30 KF.PRM4.PRM5.P80 0550: 44 20 4c 49 44 53 08 50 57 52 53 08 44 42 47 53 D LIDS.PWRS.DBGS 0560: 08 4c 49 4e 58 08 00 08 41 43 54 31 08 41 43 54 .LINX...ACT1.ACT 0570: 54 08 50 53 56 54 08 54 43 31 56 08 54 43 32 56 T.PSVT.TC1V.TC2V 0580: 08 54 53 50 56 08 43 52 54 54 08 44 54 53 45 08 .TSPV.CRTT.DTSE. 0590: 44 54 53 31 08 44 54 53 32 08 00 40 05 41 50 49 DTS1.DTS2..@.API 05a0: 43 08 4d 50 45 4e 08 50 43 50 30 08 50 43 50 31 C.MPEN.PCP0.PCP1 05b0: 08 50 50 43 4d 08 00 28 43 4d 41 50 08 43 4d 42 .PPCM..(CMAP.CMB 05c0: 50 08 4c 50 54 50 08 46 44 43 50 08 00 30 49 47 P.LPTP.FDCP..0IG 05d0: 44 53 08 54 4c 53 54 08 43 41 44 4c 08 50 41 44 DS.TLST.CADL.PAD 05e0: 4c 08 43 53 54 45 10 4e 53 54 45 10 53 53 54 45 L.CSTE.NSTE.SSTE 05f0: 10 4e 44 49 44 08 44 49 44 31 20 44 49 44 32 20 .NDID.DID1 DID2 0600: 44 49 44 33 20 44 49 44 34 20 44 49 44 35 20 00 DID3 DID4 DID5 . 0610: 40 06 42 4c 43 53 08 42 52 54 4c 08 41 4c 53 45 @.BLCS.BRTL.ALSE 0620: 08 41 4c 41 46 08 4c 4c 4f 57 08 4c 48 49 48 08 .ALAF.LLOW.LHIH. 0630: 00 08 45 4d 41 45 08 45 4d 41 50 10 45 4d 41 4c ..EMAE.EMAP.EMAL 0640: 10 00 08 4d 45 46 45 08 00 18 54 50 4d 50 08 54 ...MEFE...TPMP.T 0650: 50 4d 45 08 00 40 04 47 54 46 30 38 47 54 46 32 PME..@.GTF08GTF2 0660: 38 49 44 45 4d 08 47 54 46 31 38 00 40 09 41 53 8IDEM.GTF18.@.AS 0670: 4c 42 20 49 42 54 54 08 49 50 41 54 08 49 54 56 LB IBTT.IPAT.ITV 0680: 46 08 49 54 56 4d 08 49 50 53 43 08 49 42 4c 43 F.ITVM.IPSC.IBLC 0690: 08 49 42 49 41 08 49 53 53 43 08 49 34 30 39 08 .IBIA.ISSC.I409. 06a0: 49 35 30 39 08 49 36 30 39 08 49 37 30 39 08 49 I509.I609.I709.I 06b0: 44 4d 4d 08 49 44 4d 53 08 49 46 31 45 08 48 56 DMM.IDMS.IF1E.HV 06c0: 43 4f 08 4e 58 44 31 20 4e 58 44 32 20 4d 41 52 CO.NXD1 NXD2 MAR 06d0: 4b 10 42 52 41 44 08 42 54 45 4e 08 56 56 45 4e K.BRAD.BTEN.VVEN 06e0: 08 42 47 54 4c 08 54 4d 45 45 01 00 07 53 43 55 .BGTL.TMEE...SCU 06f0: 30 01 53 43 55 31 01 53 43 55 32 01 53 43 55 33 0.SCU1.SCU2.SCU3 0700: 01 00 04 58 4b 53 50 01 58 4b 49 4e 01 58 4b 49 ...XKSP.XKIN.XKI 0710: 44 01 58 4b 4f 4b 01 00 04 42 47 55 31 08 42 53 D.XKOK...BGU1.BS 0720: 54 31 08 42 46 43 31 10 57 4b 4c 4e 08 57 41 4b T1.BFC1.WKLN.WAK 0730: 46 08 44 53 4d 44 08 42 41 59 53 08 48 41 50 45 F.DSMD.BAYS.HAPE 0740: 01 00 07 44 54 53 4d 01 00 07 4f 44 54 31 08 4f ...DTSM...ODT1.O 0750: 44 54 32 08 44 54 53 57 08 08 44 53 45 4e 01 08 DT2.DTSW..DSEN.. 0760: 45 43 4f 4e 00 08 47 50 49 43 00 08 43 54 59 50 ECON..GPIC..CTYP 0770: 00 08 4c 30 31 43 00 08 56 46 4e 30 00 08 56 46 ..L01C..VFN0..VF 0780: 4e 31 00 10 4a 7c 5f 47 50 45 14 46 35 5f 4c 30 N1..J|_GPE.F5_L0 0790: 31 00 72 4c 30 31 43 01 4c 30 31 43 50 38 58 48 1.rL01C.L01CP8XH 07a0: 00 01 50 38 58 48 01 4c 30 31 43 a0 48 08 90 93 ..P8XH.L01C.H... 07b0: 52 50 31 44 00 5c 2f 04 5f 53 42 5f 50 43 49 30 RP1D.\/._SB_PCI0 07c0: 52 50 30 31 48 50 53 58 5b 22 0a 64 a0 40 05 5c RP01HPSX[".d.@.\ 07d0: 2f 04 5f 53 42 5f 50 43 49 30 52 50 30 31 50 44 /._SB_PCI0RP01PD 07e0: 43 58 70 01 5c 2f 04 5f 53 42 5f 50 43 49 30 52 CXp.\/._SB_PCI0R 07f0: 50 30 31 50 44 43 58 70 01 5c 2f 04 5f 53 42 5f P01PDCXp.\/._SB_ 0800: 50 43 49 30 52 50 30 31 48 50 53 58 86 5c 2f 03 PCI0RP01HPSX.\/. 0810: 5f 53 42 5f 50 43 49 30 52 50 30 31 00 a1 16 70 _SB_PCI0RP01...p 0820: 01 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 30 31 .\/._SB_PCI0RP01 0830: 48 50 53 58 a0 48 08 90 93 52 50 32 44 00 5c 2f HPSX.H...RP2D.\/ 0840: 04 5f 53 42 5f 50 43 49 30 52 50 30 32 48 50 53 ._SB_PCI0RP02HPS 0850: 58 5b 22 0a 64 a0 40 05 5c 2f 04 5f 53 42 5f 50 X[".d.@.\/._SB_P 0860: 43 49 30 52 50 30 32 50 44 43 58 70 01 5c 2f 04 CI0RP02PDCXp.\/. 0870: 5f 53 42 5f 50 43 49 30 52 50 30 32 50 44 43 58 _SB_PCI0RP02PDCX 0880: 70 01 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 30 p.\/._SB_PCI0RP0 0890: 32 48 50 53 58 86 5c 2f 03 5f 53 42 5f 50 43 49 2HPSX.\/._SB_PCI 08a0: 30 52 50 30 32 00 a1 16 70 01 5c 2f 04 5f 53 42 0RP02...p.\/._SB 08b0: 5f 50 43 49 30 52 50 30 32 48 50 53 58 a0 48 08 _PCI0RP02HPSX.H. 08c0: 90 93 52 50 33 44 00 5c 2f 04 5f 53 42 5f 50 43 ..RP3D.\/._SB_PC 08d0: 49 30 52 50 30 33 48 50 53 58 5b 22 0a 64 a0 40 I0RP03HPSX[".d.@ 08e0: 05 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 30 33 .\/._SB_PCI0RP03 08f0: 50 44 43 58 70 01 5c 2f 04 5f 53 42 5f 50 43 49 PDCXp.\/._SB_PCI 0900: 30 52 50 30 33 50 44 43 58 70 01 5c 2f 04 5f 53 0RP03PDCXp.\/._S 0910: 42 5f 50 43 49 30 52 50 30 33 48 50 53 58 86 5c B_PCI0RP03HPSX.\ 0920: 2f 03 5f 53 42 5f 50 43 49 30 52 50 30 33 00 a1 /._SB_PCI0RP03.. 0930: 16 70 01 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 .p.\/._SB_PCI0RP 0940: 30 33 48 50 53 58 a0 48 08 90 93 52 50 34 44 00 03HPSX.H...RP4D. 0950: 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 30 34 48 \/._SB_PCI0RP04H 0960: 50 53 58 5b 22 0a 64 a0 40 05 5c 2f 04 5f 53 42 PSX[".d.@.\/._SB 0970: 5f 50 43 49 30 52 50 30 34 50 44 43 58 70 01 5c _PCI0RP04PDCXp.\ 0980: 2f 04 5f 53 42 5f 50 43 49 30 52 50 30 34 50 44 /._SB_PCI0RP04PD 0990: 43 58 70 01 5c 2f 04 5f 53 42 5f 50 43 49 30 52 CXp.\/._SB_PCI0R 09a0: 50 30 34 48 50 53 58 86 5c 2f 03 5f 53 42 5f 50 P04HPSX.\/._SB_P 09b0: 43 49 30 52 50 30 34 00 a1 16 70 01 5c 2f 04 5f CI0RP04...p.\/._ 09c0: 53 42 5f 50 43 49 30 52 50 30 34 48 50 53 58 a0 SB_PCI0RP04HPSX. 09d0: 48 08 90 93 52 50 35 44 00 5c 2f 04 5f 53 42 5f H...RP5D.\/._SB_ 09e0: 50 43 49 30 52 50 30 35 48 50 53 58 5b 22 0a 64 PCI0RP05HPSX[".d 09f0: a0 40 05 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 .@.\/._SB_PCI0RP 0a00: 30 35 50 44 43 58 70 01 5c 2f 04 5f 53 42 5f 50 05PDCXp.\/._SB_P 0a10: 43 49 30 52 50 30 35 50 44 43 58 70 01 5c 2f 04 CI0RP05PDCXp.\/. 0a20: 5f 53 42 5f 50 43 49 30 52 50 30 35 48 50 53 58 _SB_PCI0RP05HPSX 0a30: 86 5c 2f 03 5f 53 42 5f 50 43 49 30 52 50 30 35 .\/._SB_PCI0RP05 0a40: 00 a1 16 70 01 5c 2f 04 5f 53 42 5f 50 43 49 30 ...p.\/._SB_PCI0 0a50: 52 50 30 35 48 50 53 58 a0 48 08 90 93 52 50 36 RP05HPSX.H...RP6 0a60: 44 00 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 30 D.\/._SB_PCI0RP0 0a70: 36 48 50 53 58 5b 22 0a 64 a0 40 05 5c 2f 04 5f 6HPSX[".d.@.\/._ 0a80: 53 42 5f 50 43 49 30 52 50 30 36 50 44 43 58 70 SB_PCI0RP06PDCXp 0a90: 01 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 30 36 .\/._SB_PCI0RP06 0aa0: 50 44 43 58 70 01 5c 2f 04 5f 53 42 5f 50 43 49 PDCXp.\/._SB_PCI 0ab0: 30 52 50 30 36 48 50 53 58 86 5c 2f 03 5f 53 42 0RP06HPSX.\/._SB 0ac0: 5f 50 43 49 30 52 50 30 36 00 a1 16 70 01 5c 2f _PCI0RP06...p.\/ 0ad0: 04 5f 53 42 5f 50 43 49 30 52 50 30 36 48 50 53 ._SB_PCI0RP06HPS 0ae0: 58 14 42 0d 5f 4c 30 32 00 70 00 47 50 45 43 a0 X.B._L02.p.GPEC. 0af0: 4d 0a 5c 2f 04 5f 53 42 5f 50 43 49 30 4c 50 43 M.\/._SB_PCI0LPC 0b00: 42 45 43 4f 4b a0 4e 04 93 44 54 53 57 01 a0 27 BECOK.N..DTSW..' 0b10: 92 95 44 54 53 31 44 54 53 32 70 44 54 53 31 5c ..DTS1DTS2pDTS1\ 0b20: 2f 05 5f 53 42 5f 50 43 49 30 4c 50 43 42 45 43 /._SB_PCI0LPCBEC 0b30: 30 5f 53 4b 54 41 a1 1d 70 44 54 53 32 5c 2f 05 0_SKTA..pDTS2\/. 0b40: 5f 53 42 5f 50 43 49 30 4c 50 43 42 45 43 30 5f _SB_PCI0LPCBEC0_ 0b50: 53 4b 54 41 a1 48 04 a0 27 92 95 4f 44 54 31 4f SKTA.H..'..ODT1O 0b60: 44 54 32 70 4f 44 54 31 5c 2f 05 5f 53 42 5f 50 DT2pODT1\/._SB_P 0b70: 43 49 30 4c 50 43 42 45 43 30 5f 53 4b 54 41 a1 CI0LPCBEC0_SKTA. 0b80: 1d 70 4f 44 54 32 5c 2f 05 5f 53 42 5f 50 43 49 .pODT2\/._SB_PCI 0b90: 30 4c 50 43 42 45 43 30 5f 53 4b 54 41 a1 16 5c 0LPCBEC0_SKTA..\ 0ba0: 2f 04 5f 53 42 5f 50 43 49 30 4c 50 43 42 50 48 /._SB_PCI0LPCBPH 0bb0: 53 53 0a 10 14 18 5f 4c 30 33 00 86 5c 2f 03 5f SS...._L03..\/._ 0bc0: 53 42 5f 50 43 49 30 55 53 42 31 0a 02 14 18 5f SB_PCI0USB1...._ 0bd0: 4c 30 34 00 86 5c 2f 03 5f 53 42 5f 50 43 49 30 L04..\/._SB_PCI0 0be0: 55 53 42 32 0a 02 14 18 5f 4c 30 35 00 86 5c 2f USB2...._L05..\/ 0bf0: 03 5f 53 42 5f 50 43 49 30 55 53 42 35 0a 02 14 ._SB_PCI0USB5... 0c00: 36 5f 4c 30 36 00 a0 27 5c 2f 04 5f 53 42 5f 50 6_L06..'\/._SB_P 0c10: 43 49 30 47 46 58 30 47 53 53 45 5c 2f 04 5f 53 CI0GFX0GSSE\/._S 0c20: 42 5f 50 43 49 30 47 46 58 30 47 53 43 49 a1 07 B_PCI0GFX0GSCI.. 0c30: 70 01 53 43 49 53 14 43 1f 5f 4c 30 39 00 a0 41 p.SCIS.C._L09..A 0c40: 05 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 30 31 .\/._SB_PCI0RP01 0c50: 50 53 50 58 70 01 5c 2f 04 5f 53 42 5f 50 43 49 PSPXp.\/._SB_PCI 0c60: 30 52 50 30 31 50 53 50 58 70 01 5c 2f 04 5f 53 0RP01PSPXp.\/._S 0c70: 42 5f 50 43 49 30 52 50 30 31 50 4d 53 58 86 5c B_PCI0RP01PMSX.\ 0c80: 2f 03 5f 53 42 5f 50 43 49 30 52 50 30 31 0a 02 /._SB_PCI0RP01.. 0c90: a0 41 05 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 .A.\/._SB_PCI0RP 0ca0: 30 32 50 53 50 58 70 01 5c 2f 04 5f 53 42 5f 50 02PSPXp.\/._SB_P 0cb0: 43 49 30 52 50 30 32 50 53 50 58 70 01 5c 2f 04 CI0RP02PSPXp.\/. 0cc0: 5f 53 42 5f 50 43 49 30 52 50 30 32 50 4d 53 58 _SB_PCI0RP02PMSX 0cd0: 86 5c 2f 03 5f 53 42 5f 50 43 49 30 52 50 30 32 .\/._SB_PCI0RP02 0ce0: 0a 02 a0 41 05 5c 2f 04 5f 53 42 5f 50 43 49 30 ...A.\/._SB_PCI0 0cf0: 52 50 30 33 50 53 50 58 70 01 5c 2f 04 5f 53 42 RP03PSPXp.\/._SB 0d00: 5f 50 43 49 30 52 50 30 33 50 53 50 58 70 01 5c _PCI0RP03PSPXp.\ 0d10: 2f 04 5f 53 42 5f 50 43 49 30 52 50 30 33 50 4d /._SB_PCI0RP03PM 0d20: 53 58 86 5c 2f 03 5f 53 42 5f 50 43 49 30 52 50 SX.\/._SB_PCI0RP 0d30: 30 33 0a 02 a0 41 05 5c 2f 04 5f 53 42 5f 50 43 03...A.\/._SB_PC 0d40: 49 30 52 50 30 34 50 53 50 58 70 01 5c 2f 04 5f I0RP04PSPXp.\/._ 0d50: 53 42 5f 50 43 49 30 52 50 30 34 50 53 50 58 70 SB_PCI0RP04PSPXp 0d60: 01 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 30 34 .\/._SB_PCI0RP04 0d70: 50 4d 53 58 86 5c 2f 03 5f 53 42 5f 50 43 49 30 PMSX.\/._SB_PCI0 0d80: 52 50 30 34 0a 02 a0 41 05 5c 2f 04 5f 53 42 5f RP04...A.\/._SB_ 0d90: 50 43 49 30 52 50 30 35 50 53 50 58 70 01 5c 2f PCI0RP05PSPXp.\/ 0da0: 04 5f 53 42 5f 50 43 49 30 52 50 30 35 50 53 50 ._SB_PCI0RP05PSP 0db0: 58 70 01 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 Xp.\/._SB_PCI0RP 0dc0: 30 35 50 4d 53 58 86 5c 2f 03 5f 53 42 5f 50 43 05PMSX.\/._SB_PC 0dd0: 49 30 52 50 30 35 0a 02 a0 41 05 5c 2f 04 5f 53 I0RP05...A.\/._S 0de0: 42 5f 50 43 49 30 52 50 30 36 50 53 50 58 70 01 B_PCI0RP06PSPXp. 0df0: 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 30 36 50 \/._SB_PCI0RP06P 0e00: 53 50 58 70 01 5c 2f 04 5f 53 42 5f 50 43 49 30 SPXp.\/._SB_PCI0 0e10: 52 50 30 36 50 4d 53 58 86 5c 2f 03 5f 53 42 5f RP06PMSX.\/._SB_ 0e20: 50 43 49 30 52 50 30 36 0a 02 14 18 5f 4c 30 42 PCI0RP06...._L0B 0e30: 00 86 5c 2f 03 5f 53 42 5f 50 43 49 30 50 43 49 ..\/._SB_PCI0PCI 0e40: 42 0a 02 14 18 5f 4c 30 43 00 86 5c 2f 03 5f 53 B...._L0C..\/._S 0e50: 42 5f 50 43 49 30 55 53 42 33 0a 02 14 4b 0b 5f B_PCI0USB3...K._ 0e60: 4c 30 44 00 a0 3b 5c 2f 04 5f 53 42 5f 50 43 49 L0D..;\/._SB_PCI 0e70: 30 45 48 43 31 50 4d 45 53 70 01 5c 2f 04 5f 53 0EHC1PMESp.\/._S 0e80: 42 5f 50 43 49 30 45 48 43 31 50 4d 45 53 86 5c B_PCI0EHC1PMES.\ 0e90: 2f 03 5f 53 42 5f 50 43 49 30 45 48 43 31 0a 02 /._SB_PCI0EHC1.. 0ea0: a0 3b 5c 2f 04 5f 53 42 5f 50 43 49 30 45 48 43 .;\/._SB_PCI0EHC 0eb0: 32 50 4d 45 53 70 01 5c 2f 04 5f 53 42 5f 50 43 2PMESp.\/._SB_PC 0ec0: 49 30 45 48 43 32 50 4d 45 53 86 5c 2f 03 5f 53 I0EHC2PMES.\/._S 0ed0: 42 5f 50 43 49 30 45 48 43 32 0a 02 a0 3b 5c 2f B_PCI0EHC2...;\/ 0ee0: 04 5f 53 42 5f 50 43 49 30 48 44 45 46 50 4d 45 ._SB_PCI0HDEFPME 0ef0: 53 70 01 5c 2f 04 5f 53 42 5f 50 43 49 30 48 44 Sp.\/._SB_PCI0HD 0f00: 45 46 50 4d 45 53 86 5c 2f 03 5f 53 42 5f 50 43 EFPMES.\/._SB_PC 0f10: 49 30 48 44 45 46 0a 02 14 18 5f 4c 30 45 00 86 I0HDEF...._L0E.. 0f20: 5c 2f 03 5f 53 42 5f 50 43 49 30 55 53 42 34 0a \/._SB_PCI0USB4. 0f30: 02 14 1c 5f 4c 31 42 00 80 4c 50 4f 4c 4c 50 4f ..._L1B..LPOLLPO 0f40: 4c 86 5c 2e 5f 53 42 5f 4c 49 44 30 0a 80 10 46 L.\._SB_LID0...F 0f50: 0b 5f 50 52 5f 5b 83 0b 43 50 55 30 00 10 10 00 ._PR_[..CPU0.... 0f60: 00 06 5b 83 0b 43 50 55 31 01 10 10 00 00 06 14 ..[..CPU1....... 0f70: 45 09 52 50 50 43 00 a0 4d 08 93 4f 53 59 53 0b E.RPPC..M..OSYS. 0f80: d2 07 a0 42 08 7b 43 46 47 44 01 00 a0 42 04 94 ...B.{CFGD...B.. 0f90: 5e 2e 43 50 55 30 5f 50 50 43 00 74 5e 2e 43 50 ^.CPU0_PPC.t^.CP 0fa0: 55 30 5f 50 50 43 01 5e 2e 43 50 55 30 5f 50 50 U0_PPC.^.CPU0_PP 0fb0: 43 50 4e 4f 54 72 5e 2e 43 50 55 30 5f 50 50 43 CPNOTr^.CPU0_PPC 0fc0: 01 5e 2e 43 50 55 30 5f 50 50 43 50 4e 4f 54 a1 .^.CPU0_PPCPNOT. 0fd0: 35 72 5e 2e 43 50 55 30 5f 50 50 43 01 5e 2e 43 5r^.CPU0_PPC.^.C 0fe0: 50 55 30 5f 50 50 43 50 4e 4f 54 74 5e 2e 43 50 PU0_PPCPNOTt^.CP 0ff0: 55 30 5f 50 50 43 01 5e 2e 43 50 55 30 5f 50 50 U0_PPC.^.CPU0_PP 1000: 43 50 4e 4f 54 08 46 57 53 4f 0d 46 57 53 4f 00 CPNOT.FWSO.FWSO. 1010: 08 5f 50 53 43 00 14 12 5f 50 53 30 00 70 5f 50 ._PSC..._PS0.p_P 1020: 53 43 60 70 00 5f 50 53 43 14 0d 5f 50 53 33 00 SC`p._PSC.._PS3. 1030: 70 0a 03 5f 50 53 43 10 8c fb 04 5f 53 42 5f 5b p.._PSC...._SB_[ 1040: 82 4f 3e 41 4d 57 30 08 5f 48 49 44 0d 70 6e 70 .O>AMW0._HID.pnp 1050: 30 63 31 34 00 08 5f 55 49 44 00 08 5f 57 44 47 0c14.._UID.._WDG 1060: 11 3f 0a 3c a7 1d 85 2e 53 d0 5f 49 9d fa 1a 4a .?.<....S._I...J 1070: d6 2e 6a 86 41 43 01 00 3b 6d 43 71 dd fb 72 4c ..j.AC..;mCq..rL 1080: bc b8 43 5b fe 0d 64 f9 42 43 01 00 21 12 90 05 ..C[..d.BC..!... 1090: 66 d5 d1 11 b2 f0 00 a0 c9 06 29 10 42 41 01 00 f.........).BA.. 10a0: 08 53 54 41 43 11 07 0a 04 01 14 03 00 14 1f 57 .STAC..........W 10b0: 51 41 43 01 70 0d 4d 58 4d 54 43 43 6f 6e 66 69 QAC.p.MXMTCConfi 10c0: 67 44 61 74 61 00 5b 31 a4 53 54 41 43 08 53 54 gData.[1.STAC.ST 10d0: 42 43 11 07 0a 04 01 00 00 00 14 34 57 51 42 43 BC.........4WQBC 10e0: 01 70 0d 47 65 74 20 4d 58 4d 54 43 43 6f 6e 74 .p.Get MXMTCCont 10f0: 72 6f 6c 44 61 74 61 3a 20 53 54 42 43 20 3d 20 rolData: STBC = 1100: 00 5b 31 70 53 54 42 43 5b 31 a4 53 54 42 43 14 .[1pSTBC[1.STBC. 1110: 47 06 57 53 42 43 02 70 69 53 54 42 43 70 0d 53 G.WSBC.piSTBCp.S 1120: 65 74 20 4d 58 4d 54 43 43 6f 6e 74 72 6f 6c 44 et MXMTCControlD 1130: 61 74 61 3a 20 53 54 42 43 20 3d 20 00 5b 31 70 ata: STBC = .[1p 1140: 53 54 42 43 5b 31 a0 30 93 5e 5e 2f 03 50 43 49 STBC[1.0.^^/.PCI 1150: 30 4c 50 43 42 45 43 4f 4b 01 70 83 88 53 54 42 0LPCBECOK.p..STB 1160: 43 01 00 5e 5e 2f 04 50 43 49 30 4c 50 43 42 45 C..^^/.PCI0LPCBE 1170: 43 30 5f 53 4b 54 43 08 57 51 42 41 11 43 2b 0b C0_SKTC.WQBA.C+. 1180: ae 02 46 4f 4d 42 01 00 00 00 9e 02 00 00 c0 0b ..FOMB.......... 1190: 00 00 44 53 00 01 1a 7d da 54 28 d9 85 00 01 06 ..DS...}.T(..... 11a0: 18 42 10 07 10 0a 4b 61 02 c9 21 52 3c 18 94 05 .B....Ka..!R<... 11b0: 10 43 88 57 04 44 04 84 bc 0a b0 29 c0 24 88 fa .C.W.D.....).$.. 11c0: f7 87 28 09 0e 25 04 42 12 05 98 17 a0 5b 80 61 ..(..%.B.....[.a 11d0: 01 b6 05 98 16 e0 18 92 4a 03 a7 04 96 02 21 a1 ........J.....!. 11e0: 02 94 0b f0 2d 40 3b a2 24 0b b0 0c 23 02 8f 82 ....-@;.$...#... 11f0: a1 71 68 ec 30 2c 13 4c 83 38 8c b2 91 45 60 dc .qh.0,.L.8...E`. 1200: 4e 05 c8 15 20 4c 80 78 54 61 34 07 45 e0 42 63 N... L.xTa4.E.Bc 1210: 64 40 c8 a3 00 ab a3 d0 a4 12 d8 bd 00 65 02 2c d@...........e., 1220: 0a 10 27 c0 9a 00 63 48 32 28 40 9b 00 5b 20 42 ..'...cH2(@..[ B 1230: 0f d4 19 8a 46 70 02 51 6a 46 11 48 ac 1a 01 85 ....Fp.QjF.H.... 1240: 12 34 46 b0 10 81 c2 86 37 46 98 03 88 d1 fe 20 .4F.....7F..... 1250: 48 20 05 e3 66 91 46 83 1a 6b 82 63 f7 68 4e b8 H ..f.F..k.c.hN. 1260: 73 01 d2 e7 26 90 a3 3b b8 3a 07 4d 86 c7 b0 1e s...&..;.:.M.... 1270: 06 d8 29 00 ef 1a 50 d3 3f 78 26 08 0e 35 44 8f ..)...P.?x&..5D. 1280: 3a dc 09 1c fb 91 30 88 b3 3b 6e ac c3 c9 68 d0 :.....0..;n...h. 1290: a5 0a 30 7b 00 d0 d0 12 9c f6 99 84 7e 0f 38 9f ..0{........~.8. 12a0: 9e 21 89 fc 41 a0 46 e6 ff 3f b4 c7 78 5a 31 43 .!..A.F..?..xZ1C 12b0: 3e 0b 1c 16 13 0b a1 4d 6a 3c 40 40 e1 d1 40 08 >......Mj<@@..@. 12c0: 6f 06 9e af 09 46 86 90 93 f1 a0 06 e0 41 d7 3a o....F.......A.: 12d0: 32 8d 27 a6 21 cf e8 00 22 bf 32 78 0c 41 02 f9 2.'.!...".2x.A.. 12e0: c4 60 b8 c7 81 13 78 02 f0 59 40 10 92 00 21 51 .`....x..Y@...!Q 12f0: e3 a7 47 08 7e 7a 78 93 30 28 1f d2 99 f9 90 e1 ..G.~zx.0(...... 1300: 11 c2 07 c4 7b 9f 3b 19 c1 29 7b a4 e0 b0 7e 0e ....{.;..){...~. 1310: 20 c0 af 0f 8f 0d 09 7c ae 08 8c 1d aa fd 0a 40 ......|.......@ 1320: 08 1e ed 51 e0 54 23 1c 2d 78 08 8a 1c 03 4a cc ...Q.T#.-x....J. 1330: 18 50 03 38 85 d0 e7 73 04 47 14 25 f6 21 19 da .P.8...s.G.%.!.. 1340: 08 e1 1f 39 4e c1 f7 8b 23 3d ad 23 78 91 f0 08 ...9N...#=.#x... 1350: 30 e1 ce 28 a8 38 30 f4 ff 7f 4c 01 dc 7a 3b a6 0..(.80...L..z;. 1360: 80 3e c0 31 05 50 fc ff 3f a6 00 87 a8 c7 14 f4 .>.1.P..?....... 1370: 40 0c 7c 2e a1 0d ff 96 c1 8e 03 87 74 6a 8f 28 @.|.........tj.( 1380: 80 29 79 47 14 50 8c 14 d6 f1 04 18 05 3c 9b a0 .)yG.P.......<.. 1390: 22 1d 4f 80 ce ff ff 78 02 58 b8 9a bc 92 84 7d ".O....x.X.....} 13a0: 1e 78 1d 89 14 e3 41 e2 b5 e4 c1 24 46 98 08 8f .x....A....$F... 13b0: 27 1e 47 c0 b7 82 28 91 8e 3e c4 83 49 28 63 3e '.G...(..>..I(c> 13c0: a3 84 89 f9 04 70 22 ef 27 46 0a 73 2a 8f 27 2c .....p".'F.s*.', 13d0: c4 f1 04 a0 85 e2 e3 09 3a 2c 84 fe ff c7 13 dc ........:,...... 13e0: e1 c1 a7 0c fc 85 0c c6 f9 04 30 24 f0 7c 02 ca ..........0$.|.. 13f0: db 18 e6 80 02 8c 14 da f4 a9 d1 a8 55 83 32 35 ............U.25 1400: ca 34 a8 d5 a7 52 63 c6 4c 9c 52 bc 6c 8d df f2 .4...Rc.L.R.l... 1410: 9e 09 02 b1 20 0a 81 38 cc f3 42 20 96 a2 01 84 .... ..8..B .... 1420: 85 06 a1 42 a9 05 e2 98 20 34 92 0a 10 f6 ff 07 ...B.... 4...... 1430: 5b 82 1b 4c 49 44 30 08 5f 48 49 44 0c 41 d0 0c [..LID0._HID.A.. 1440: 0d 14 0b 5f 4c 49 44 00 a4 4c 50 4f 4c 5b 82 0f ..._LID..LPOL[.. 1450: 50 57 52 42 08 5f 48 49 44 0c 41 d0 0c 0c 5b 82 PWRB._HID.A...[. 1460: 84 b9 04 50 43 49 30 14 09 5f 53 33 44 00 a4 0a ...PCI0.._S3D... 1470: 02 14 09 5f 53 34 44 00 a4 0a 02 08 5f 48 49 44 ..._S4D....._HID 1480: 0c 41 d0 0a 08 08 5f 43 49 44 0c 41 d0 0a 03 5b .A...._CID.A...[ 1490: 82 43 0e 4d 43 48 43 08 5f 41 44 52 00 5b 80 48 .C.MCHC._ADR.[.H 14a0: 42 55 53 02 0a 40 0a c0 5b 81 4a 0c 48 42 55 53 BUS..@..[.J.HBUS 14b0: 03 45 50 45 4e 01 00 0b 45 50 42 52 14 00 20 4d .EPEN...EPBR.. M 14c0: 48 45 4e 01 00 0d 4d 48 42 52 12 00 40 0a 50 58 HEN...MHBR..@.PX 14d0: 45 4e 01 50 58 53 5a 02 00 17 50 58 42 52 06 00 EN.PXSZ...PXBR.. 14e0: 20 44 49 45 4e 01 00 0b 44 49 42 52 14 00 20 49 DIEN...DIBR.. I 14f0: 50 45 4e 01 00 0b 49 50 42 52 14 00 40 0e 00 04 PEN...IPBR..@... 1500: 50 4d 30 48 02 00 02 50 4d 31 4c 02 00 02 50 4d PM0H...PM1L...PM 1510: 31 48 02 00 02 50 4d 32 4c 02 00 02 50 4d 32 48 1H...PM2L...PM2H 1520: 02 00 02 50 4d 33 4c 02 00 02 50 4d 33 48 02 00 ...PM3L...PM3H.. 1530: 02 50 4d 34 4c 02 00 02 50 4d 34 48 02 00 02 50 .PM4L...PM4H...P 1540: 4d 35 4c 02 00 02 50 4d 35 48 02 00 02 50 4d 36 M5L...PM5H...PM6 1550: 4c 02 00 02 50 4d 36 48 02 00 02 00 07 48 45 4e L...PM6H.....HEN 1560: 41 01 00 40 05 54 55 55 44 10 00 40 06 00 04 54 A..@.TUUD..@...T 1570: 4c 55 44 0c 08 42 55 46 30 11 4d 20 0b 08 02 88 LUD..BUF0.M .... 1580: 0d 00 02 0c 00 00 00 00 00 ff 00 00 00 00 01 87 ................ 1590: 17 00 01 0c 03 00 00 00 00 00 00 00 00 f7 0c 00 ................ 15a0: 00 00 00 00 00 f8 0c 00 00 47 01 f8 0c f8 0c 01 .........G...... 15b0: 08 87 17 00 01 0c 03 00 00 00 00 00 0d 00 00 ff ................ 15c0: ff 00 00 00 00 00 00 00 f3 00 00 87 17 00 00 0c ................ 15d0: 03 00 00 00 00 00 00 0a 00 ff ff 0b 00 00 00 00 ................ 15e0: 00 00 00 02 00 87 17 00 00 0c 03 00 00 00 00 00 ................ 15f0: 00 0c 00 ff 3f 0c 00 00 00 00 00 00 40 00 00 87 ....?.......@... 1600: 17 00 00 0c 03 00 00 00 00 00 40 0c 00 ff 7f 0c ..........@..... 1610: 00 00 00 00 00 00 40 00 00 87 17 00 00 0c 03 00 ......@......... 1620: 00 00 00 00 80 0c 00 ff bf 0c 00 00 00 00 00 00 ................ 1630: 40 00 00 87 17 00 00 0c 03 00 00 00 00 00 c0 0c @............... 1640: 00 ff ff 0c 00 00 00 00 00 00 40 00 00 87 17 00 ..........@..... 1650: 00 0c 03 00 00 00 00 00 00 0d 00 ff 3f 0d 00 00 ............?... 1660: 00 00 00 00 40 00 00 87 17 00 00 0c 03 00 00 00 ....@........... 1670: 00 00 40 0d 00 ff 7f 0d 00 00 00 00 00 00 40 00 ..@...........@. 1680: 00 87 17 00 00 0c 03 00 00 00 00 00 80 0d 00 ff ................ 1690: bf 0d 00 00 00 00 00 00 40 00 00 87 17 00 00 0c ........@....... 16a0: 03 00 00 00 00 00 c0 0d 00 ff ff 0d 00 00 00 00 ................ 16b0: 00 00 40 00 00 87 17 00 00 0c 03 00 00 00 00 00 ..@............. 16c0: 00 0e 00 ff 3f 0e 00 00 00 00 00 00 40 00 00 87 ....?.......@... 16d0: 17 00 00 0c 03 00 00 00 00 00 40 0e 00 ff 7f 0e ..........@..... 16e0: 00 00 00 00 00 00 40 00 00 87 17 00 00 0c 03 00 ......@......... 16f0: 00 00 00 00 80 0e 00 ff bf 0e 00 00 00 00 00 00 ................ 1700: 40 00 00 87 17 00 00 0c 03 00 00 00 00 00 c0 0e @............... 1710: 00 ff ff 0e 00 00 00 00 00 00 40 00 00 87 17 00 ..........@..... 1720: 00 0c 03 00 00 00 00 00 00 0f 00 ff ff 0f 00 00 ................ 1730: 00 00 00 00 00 01 00 87 17 00 00 0c 03 00 00 00 ................ 1740: 00 00 00 00 00 ff ff ff df 00 00 00 00 00 00 00 ................ 1750: 00 87 17 00 00 0c 03 00 00 00 00 00 00 00 f0 ff ................ 1760: ff bf fe 00 00 00 00 00 00 c0 0e 87 17 00 00 0c ................ 1770: 03 00 00 00 00 00 00 d4 fe ff 4f d4 fe 00 00 00 ..........O..... 1780: 00 00 00 00 00 79 00 14 4b 3d 5f 43 52 53 08 a0 .....y..K=_CRS.. 1790: 1c 5e 2e 4d 43 48 43 50 4d 31 4c 8a 42 55 46 30 .^.MCHCPM1L.BUF0 17a0: 0a 7c 43 30 4c 4e 70 00 43 30 4c 4e a0 1f 93 5e .|C0LNp.C0LN...^ 17b0: 2e 4d 43 48 43 50 4d 31 4c 01 8d 42 55 46 30 0b .MCHCPM1L..BUF0. 17c0: 58 03 43 30 52 57 70 00 43 30 52 57 a0 1c 5e 2e X.C0RWp.C0RW..^. 17d0: 4d 43 48 43 50 4d 31 48 8a 42 55 46 30 0a 96 43 MCHCPM1H.BUF0..C 17e0: 34 4c 4e 70 00 43 34 4c 4e a0 1f 93 5e 2e 4d 43 4LNp.C4LN...^.MC 17f0: 48 43 50 4d 31 48 01 8d 42 55 46 30 0b 28 04 43 HCPM1H..BUF0.(.C 1800: 34 52 57 70 00 43 34 52 57 a0 1c 5e 2e 4d 43 48 4RWp.C4RW..^.MCH 1810: 43 50 4d 32 4c 8a 42 55 46 30 0a b0 43 38 4c 4e CPM2L.BUF0..C8LN 1820: 70 00 43 38 4c 4e a0 1f 93 5e 2e 4d 43 48 43 50 p.C8LN...^.MCHCP 1830: 4d 32 4c 01 8d 42 55 46 30 0b f8 04 43 38 52 57 M2L..BUF0...C8RW 1840: 70 00 43 38 52 57 a0 1c 5e 2e 4d 43 48 43 50 4d p.C8RW..^.MCHCPM 1850: 32 48 8a 42 55 46 30 0a ca 43 43 4c 4e 70 00 43 2H.BUF0..CCLNp.C 1860: 43 4c 4e a0 1f 93 5e 2e 4d 43 48 43 50 4d 32 48 CLN...^.MCHCPM2H 1870: 01 8d 42 55 46 30 0b c8 05 43 43 52 57 70 00 43 ..BUF0...CCRWp.C 1880: 43 52 57 a0 1c 5e 2e 4d 43 48 43 50 4d 33 4c 8a CRW..^.MCHCPM3L. 1890: 42 55 46 30 0a e4 44 30 4c 4e 70 00 44 30 4c 4e BUF0..D0LNp.D0LN 18a0: a0 1f 93 5e 2e 4d 43 48 43 50 4d 33 4c 01 8d 42 ...^.MCHCPM3L..B 18b0: 55 46 30 0b 98 06 44 30 52 57 70 00 44 30 52 57 UF0...D0RWp.D0RW 18c0: a0 1c 5e 2e 4d 43 48 43 50 4d 33 48 8a 42 55 46 ..^.MCHCPM3H.BUF 18d0: 30 0a fe 44 34 4c 4e 70 00 44 34 4c 4e a0 1f 93 0..D4LNp.D4LN... 18e0: 5e 2e 4d 43 48 43 50 4d 33 48 01 8d 42 55 46 30 ^.MCHCPM3H..BUF0 18f0: 0b 68 07 44 34 52 57 70 00 44 34 52 57 a0 1d 5e .h.D4RWp.D4RW..^ 1900: 2e 4d 43 48 43 50 4d 34 4c 8a 42 55 46 30 0b 18 .MCHCPM4L.BUF0.. 1910: 01 44 38 4c 4e 70 00 44 38 4c 4e a0 1f 93 5e 2e .D8LNp.D8LN...^. 1920: 4d 43 48 43 50 4d 34 4c 01 8d 42 55 46 30 0b 38 MCHCPM4L..BUF0.8 1930: 08 44 38 52 57 70 00 44 38 52 57 a0 1d 5e 2e 4d .D8RWp.D8RW..^.M 1940: 43 48 43 50 4d 34 48 8a 42 55 46 30 0b 32 01 44 CHCPM4H.BUF0.2.D 1950: 43 4c 4e 70 00 44 43 4c 4e a0 1f 93 5e 2e 4d 43 CLNp.DCLN...^.MC 1960: 48 43 50 4d 34 48 01 8d 42 55 46 30 0b 08 09 44 HCPM4H..BUF0...D 1970: 43 52 57 70 00 44 43 52 57 a0 1d 5e 2e 4d 43 48 CRWp.DCRW..^.MCH 1980: 43 50 4d 35 4c 8a 42 55 46 30 0b 4c 01 45 30 4c CPM5L.BUF0.L.E0L 1990: 4e 70 00 45 30 4c 4e a0 1f 93 5e 2e 4d 43 48 43 Np.E0LN...^.MCHC 19a0: 50 4d 35 4c 01 8d 42 55 46 30 0b d8 09 45 30 52 PM5L..BUF0...E0R 19b0: 57 70 00 45 30 52 57 a0 1d 5e 2e 4d 43 48 43 50 Wp.E0RW..^.MCHCP 19c0: 4d 35 48 8a 42 55 46 30 0b 66 01 45 34 4c 4e 70 M5H.BUF0.f.E4LNp 19d0: 00 45 34 4c 4e a0 1f 93 5e 2e 4d 43 48 43 50 4d .E4LN...^.MCHCPM 19e0: 35 48 01 8d 42 55 46 30 0b a8 0a 45 34 52 57 70 5H..BUF0...E4RWp 19f0: 00 45 34 52 57 a0 1d 5e 2e 4d 43 48 43 50 4d 36 .E4RW..^.MCHCPM6 1a00: 4c 8a 42 55 46 30 0b 80 01 45 38 4c 4e 70 00 45 L.BUF0...E8LNp.E 1a10: 38 4c 4e a0 1f 93 5e 2e 4d 43 48 43 50 4d 36 4c 8LN...^.MCHCPM6L 1a20: 01 8d 42 55 46 30 0b 78 0b 45 38 52 57 70 00 45 ..BUF0.x.E8RWp.E 1a30: 38 52 57 a0 1d 5e 2e 4d 43 48 43 50 4d 36 48 8a 8RW..^.MCHCPM6H. 1a40: 42 55 46 30 0b 9a 01 45 43 4c 4e 70 00 45 43 4c BUF0...ECLNp.ECL 1a50: 4e a0 1f 93 5e 2e 4d 43 48 43 50 4d 36 48 01 8d N...^.MCHCPM6H.. 1a60: 42 55 46 30 0b 48 0c 45 43 52 57 70 00 45 43 52 BUF0.H.ECRWp.ECR 1a70: 57 a0 1d 5e 2e 4d 43 48 43 50 4d 30 48 8a 42 55 W..^.MCHCPM0H.BU 1a80: 46 30 0b b4 01 46 30 4c 4e 70 00 46 30 4c 4e a0 F0...F0LNp.F0LN. 1a90: 1f 93 5e 2e 4d 43 48 43 50 4d 30 48 01 8d 42 55 ..^.MCHCPM0H..BU 1aa0: 46 30 0b 18 0d 46 30 52 57 70 00 46 30 52 57 8a F0...F0RWp.F0RW. 1ab0: 42 55 46 30 0b c2 01 4d 31 4d 4e 8a 42 55 46 30 BUF0...M1MN.BUF0 1ac0: 0b c6 01 4d 31 4d 58 8a 42 55 46 30 0b ce 01 4d ...M1MX.BUF0...M 1ad0: 31 4c 4e 8a 42 55 46 30 0b dc 01 4d 32 4d 4e 8a 1LN.BUF0...M2MN. 1ae0: 42 55 46 30 0b e0 01 4d 32 4d 58 8a 42 55 46 30 BUF0...M2MX.BUF0 1af0: 0b e8 01 4d 32 4c 4e 79 5e 2e 4d 43 48 43 50 58 ...M2LNy^.MCHCPX 1b00: 42 52 0a 1a 4d 31 4d 58 7a 0c 00 00 00 10 5e 2e BR..M1MXz.....^. 1b10: 4d 43 48 43 50 58 53 5a 60 72 4d 31 4d 58 60 4d MCHCPXSZ`rM1MX`M 1b20: 32 4d 4e 72 74 4d 32 4d 58 4d 32 4d 4e 00 01 4d 2MNrtM2MXM2MN..M 1b30: 32 4c 4e 74 4d 31 4d 58 01 4d 31 4d 58 79 5e 2e 2LNtM1MX.M1MXy^. 1b40: 4d 43 48 43 54 4c 55 44 0a 14 4d 31 4d 4e 72 74 MCHCTLUD..M1MNrt 1b50: 4d 31 4d 58 4d 31 4d 4e 00 01 4d 31 4c 4e a4 42 M1MXM1MN..M1LN.B 1b60: 55 46 30 14 47 28 5f 50 52 54 00 a0 45 0f 47 50 UF0.G(_PRT..E.GP 1b70: 49 43 a4 12 4d 0e 13 12 0b 04 0c ff ff 01 00 00 IC..M........... 1b80: 00 0a 10 12 0b 04 0c ff ff 02 00 00 00 0a 10 12 ................ 1b90: 0b 04 0c ff ff 07 00 00 00 0a 10 12 0b 04 0c ff ................ 1ba0: ff 19 00 00 00 0a 14 12 0b 04 0c ff ff 1a 00 00 ................ 1bb0: 00 0a 10 12 0b 04 0c ff ff 1a 00 01 00 0a 15 12 ................ 1bc0: 0c 04 0c ff ff 1a 00 0a 02 00 0a 12 12 0b 04 0c ................ 1bd0: ff ff 1b 00 00 00 0a 16 12 0b 04 0c ff ff 1c 00 ................ 1be0: 00 00 0a 11 12 0b 04 0c ff ff 1c 00 01 00 0a 10 ................ 1bf0: 12 0c 04 0c ff ff 1c 00 0a 02 00 0a 12 12 0c 04 ................ 1c00: 0c ff ff 1c 00 0a 03 00 0a 13 12 0b 04 0c ff ff ................ 1c10: 1d 00 00 00 0a 17 12 0b 04 0c ff ff 1d 00 01 00 ................ 1c20: 0a 13 12 0c 04 0c ff ff 1d 00 0a 02 00 0a 12 12 ................ 1c30: 0b 04 0c ff ff 1f 00 00 00 0a 13 12 0b 04 0c ff ................ 1c40: ff 1f 00 01 00 0a 13 12 0c 04 0c ff ff 1f 00 0a ................ 1c50: 02 00 0a 13 12 0c 04 0c ff ff 1f 00 0a 03 00 0a ................ 1c60: 10 a1 49 18 a4 12 45 18 13 12 13 04 0c ff ff 01 ..I...E......... 1c70: 00 00 5e 2e 4c 50 43 42 4c 4e 4b 41 00 12 13 04 ..^.LPCBLNKA.... 1c80: 0c ff ff 02 00 00 5e 2e 4c 50 43 42 4c 4e 4b 41 ......^.LPCBLNKA 1c90: 00 12 13 04 0c ff ff 07 00 00 5e 2e 4c 50 43 42 ..........^.LPCB 1ca0: 4c 4e 4b 41 00 12 13 04 0c ff ff 19 00 00 5e 2e LNKA..........^. 1cb0: 4c 50 43 42 4c 4e 4b 45 00 12 13 04 0c ff ff 1a LPCBLNKE........ 1cc0: 00 00 5e 2e 4c 50 43 42 4c 4e 4b 41 00 12 13 04 ..^.LPCBLNKA.... 1cd0: 0c ff ff 1a 00 01 5e 2e 4c 50 43 42 4c 4e 4b 46 ......^.LPCBLNKF 1ce0: 00 12 14 04 0c ff ff 1a 00 0a 02 5e 2e 4c 50 43 ...........^.LPC 1cf0: 42 4c 4e 4b 43 00 12 13 04 0c ff ff 1b 00 00 5e BLNKC..........^ 1d00: 2e 4c 50 43 42 4c 4e 4b 47 00 12 13 04 0c ff ff .LPCBLNKG....... 1d10: 1c 00 00 5e 2e 4c 50 43 42 4c 4e 4b 42 00 12 13 ...^.LPCBLNKB... 1d20: 04 0c ff ff 1c 00 01 5e 2e 4c 50 43 42 4c 4e 4b .......^.LPCBLNK 1d30: 41 00 12 14 04 0c ff ff 1c 00 0a 02 5e 2e 4c 50 A...........^.LP 1d40: 43 42 4c 4e 4b 43 00 12 14 04 0c ff ff 1c 00 0a CBLNKC.......... 1d50: 03 5e 2e 4c 50 43 42 4c 4e 4b 44 00 12 13 04 0c .^.LPCBLNKD..... 1d60: ff ff 1d 00 00 5e 2e 4c 50 43 42 4c 4e 4b 48 00 .....^.LPCBLNKH. 1d70: 12 13 04 0c ff ff 1d 00 01 5e 2e 4c 50 43 42 4c .........^.LPCBL 1d80: 4e 4b 44 00 12 14 04 0c ff ff 1d 00 0a 02 5e 2e NKD...........^. 1d90: 4c 50 43 42 4c 4e 4b 43 00 12 13 04 0c ff ff 1f LPCBLNKC........ 1da0: 00 00 5e 2e 4c 50 43 42 4c 4e 4b 44 00 12 13 04 ..^.LPCBLNKD.... 1db0: 0c ff ff 1f 00 01 5e 2e 4c 50 43 42 4c 4e 4b 44 ......^.LPCBLNKD 1dc0: 00 12 14 04 0c ff ff 1f 00 0a 02 5e 2e 4c 50 43 ...........^.LPC 1dd0: 42 4c 4e 4b 44 00 12 14 04 0c ff ff 1f 00 0a 03 BLNKD........... 1de0: 5e 2e 4c 50 43 42 4c 4e 4b 41 00 5b 82 40 14 50 ^.LPCBLNKA.[.@.P 1df0: 44 52 43 08 5f 48 49 44 0c 41 d0 0c 02 08 5f 55 DRC._HID.A...._U 1e00: 49 44 01 08 42 55 46 30 11 46 06 0a 62 86 09 00 ID..BUF0.F..b... 1e10: 01 00 00 00 00 00 40 00 00 86 09 00 01 00 00 00 ......@......... 1e20: 00 00 40 00 00 86 09 00 01 00 00 00 00 00 10 00 ..@............. 1e30: 00 86 09 00 01 00 00 00 00 00 10 00 00 86 09 00 ................ 1e40: 01 00 00 00 00 00 00 00 00 86 09 00 01 00 00 d2 ................ 1e50: fe 00 00 02 00 86 09 00 01 00 00 d4 fe 00 50 00 ..............P. 1e60: 00 86 09 00 01 00 50 d4 fe 00 b0 04 00 79 00 14 ......P......y.. 1e70: 4d 0b 5f 43 52 53 08 8a 42 55 46 30 0a 04 52 42 M._CRS..BUF0..RB 1e80: 52 30 79 5e 5e 2e 4c 50 43 42 52 43 42 41 0a 0e R0y^^.LPCBRCBA.. 1e90: 52 42 52 30 8a 42 55 46 30 0a 10 4d 42 52 30 79 RBR0.BUF0..MBR0y 1ea0: 5e 5e 2e 4d 43 48 43 4d 48 42 52 0a 0e 4d 42 52 ^^.MCHCMHBR..MBR 1eb0: 30 8a 42 55 46 30 0a 1c 44 42 52 30 79 5e 5e 2e 0.BUF0..DBR0y^^. 1ec0: 4d 43 48 43 44 49 42 52 0a 0c 44 42 52 30 8a 42 MCHCDIBR..DBR0.B 1ed0: 55 46 30 0a 28 45 42 52 30 79 5e 5e 2e 4d 43 48 UF0.(EBR0y^^.MCH 1ee0: 43 45 50 42 52 0a 0c 45 42 52 30 8a 42 55 46 30 CEPBR..EBR0.BUF0 1ef0: 0a 34 58 42 52 30 79 5e 5e 2e 4d 43 48 43 50 58 .4XBR0y^^.MCHCPX 1f00: 42 52 0a 1a 58 42 52 30 8a 42 55 46 30 0a 38 58 BR..XBR0.BUF0.8X 1f10: 53 5a 30 7a 0c 00 00 00 10 5e 5e 2e 4d 43 48 43 SZ0z.....^^.MCHC 1f20: 50 58 53 5a 58 53 5a 30 a4 42 55 46 30 5b 82 4d PXSZXSZ0.BUF0[.M 1f30: 50 50 45 47 50 08 5f 41 44 52 0c 00 00 01 00 14 PPEGP._ADR...... 1f40: 41 09 5f 50 52 54 00 a0 33 47 50 49 43 a4 12 2c A._PRT..3GPIC.., 1f50: 04 12 09 04 0b ff ff 00 00 0a 10 12 09 04 0b ff ................ 1f60: ff 01 00 0a 11 12 0a 04 0b ff ff 0a 02 00 0a 12 ................ 1f70: 12 0a 04 0b ff ff 0a 03 00 0a 13 a1 45 05 a4 12 ............E... 1f80: 41 05 04 12 12 04 0b ff ff 00 5e 5e 2e 4c 50 43 A.........^^.LPC 1f90: 42 4c 4e 4b 41 00 12 12 04 0b ff ff 01 5e 5e 2e BLNKA........^^. 1fa0: 4c 50 43 42 4c 4e 4b 42 00 12 13 04 0b ff ff 0a LPCBLNKB........ 1fb0: 02 5e 5e 2e 4c 50 43 42 4c 4e 4b 43 00 12 13 04 .^^.LPCBLNKC.... 1fc0: 0b ff ff 0a 03 5e 5e 2e 4c 50 43 42 4c 4e 4b 44 .....^^.LPCBLNKD 1fd0: 00 5b 82 49 46 56 47 41 5f 08 5f 41 44 52 00 08 .[.IFVGA_._ADR.. 1fe0: 53 57 49 54 01 08 43 52 54 41 01 08 4c 43 44 41 SWIT..CRTA..LCDA 1ff0: 01 08 54 56 41 41 01 08 56 4c 44 46 01 5b 80 56 ..TVAA..VLDF.[.V 2000: 49 44 53 02 00 0a c8 5b 81 0b 56 49 44 53 03 56 IDS....[..VIDS.V 2010: 44 49 44 20 14 09 5f 53 54 41 00 a4 0a 0f 08 5f DID .._STA....._ 2020: 50 53 43 00 14 0c 5f 50 53 30 00 70 00 5f 50 53 PSC..._PS0.p._PS 2030: 43 14 0c 5f 50 53 31 00 70 01 5f 50 53 43 14 0d C.._PS1.p._PSC.. 2040: 5f 50 53 33 00 70 0a 03 5f 50 53 43 14 10 5f 44 _PS3.p.._PSC.._D 2050: 4f 53 01 70 7b 68 0a 03 00 53 57 49 54 14 17 5f OS.p{h...SWIT.._ 2060: 44 4f 44 00 a4 12 0f 03 0c 00 01 01 00 0c 10 01 DOD............. 2070: 01 00 0b 00 02 5b 82 4d 08 43 52 54 5f 14 0a 5f .....[.M.CRT_.._ 2080: 41 44 52 00 a4 0b 00 01 14 41 06 5f 44 43 53 00 ADR......A._DCS. 2090: 5e 5e 5e 5e 2e 4c 50 43 42 50 48 53 53 0a 0c 70 ^^^^.LPCBPHSS..p 20a0: 43 41 44 4c 60 70 43 53 54 45 61 7b 60 0a 02 60 CADL`pCSTEa{`..` 20b0: 7b 61 0a 02 61 a0 08 60 70 01 43 52 54 41 a1 07 {a..a..`p.CRTA.. 20c0: 70 00 43 52 54 41 a0 13 43 52 54 41 a0 08 93 61 p.CRTA..CRTA...a 20d0: 0a 02 a4 0a 1f a1 04 a4 0a 1d a1 0f a0 08 93 61 ...............a 20e0: 0a 02 a4 0a 0f a1 04 a4 0a 0d 14 12 5f 44 47 53 ............_DGS 20f0: 00 a0 07 43 52 54 41 a4 01 a1 03 a4 00 14 06 5f ...CRTA........_ 2100: 44 53 53 01 5b 82 47 0e 4c 43 44 5f 14 0a 5f 41 DSS.[.G.LCD_.._A 2110: 44 52 00 a4 0b 10 01 14 4d 05 5f 44 43 53 00 5e DR......M._DCS.^ 2120: 5e 5e 5e 2e 4c 50 43 42 50 48 53 53 0a 0c 70 43 ^^^.LPCBPHSS..pC 2130: 41 44 4c 60 70 43 53 54 45 61 7b 60 01 60 7b 61 ADL`pCSTEa{`.`{a 2140: 01 61 a0 08 60 70 01 4c 43 44 41 a1 07 70 00 4c .a..`p.LCDA..p.L 2150: 43 44 41 a0 12 4c 43 44 41 a0 07 93 61 01 a4 0a CDA..LCDA...a... 2160: 1f a1 04 a4 0a 1d a1 0e a0 07 93 61 01 a4 0a 0f ...........a.... 2170: a1 04 a4 0a 0d 14 12 5f 44 47 53 00 a0 07 4c 43 ......._DGS...LC 2180: 44 41 a4 01 a1 03 a4 00 14 06 5f 44 53 53 01 14 DA........_DSS.. 2190: 1d 5f 42 43 4c 00 a4 12 15 0a 0a 46 0a 28 00 0a ._BCL......F.(.. 21a0: 0a 0a 14 0a 1e 0a 28 0a 32 0a 3c 0a 46 14 20 5f ......(.2.<.F. _ 21b0: 42 43 4d 01 78 68 0a 0a 60 61 70 61 5e 5e 5e 5e BCM.xh..`apa^^^^ 21c0: 2f 03 4c 50 43 42 45 43 30 5f 42 52 54 53 14 1e /.LPCBEC0_BRTS.. 21d0: 5f 42 51 43 00 77 5e 5e 5e 5e 2f 03 4c 50 43 42 _BQC.w^^^^/.LPCB 21e0: 45 43 30 5f 42 52 54 53 0a 0a 60 a4 60 5b 82 4d EC0_BRTS..`.`[.M 21f0: 08 54 56 5f 5f 14 0a 5f 41 44 52 00 a4 0b 00 02 .TV__.._ADR..... 2200: 14 41 06 5f 44 43 53 00 5e 5e 5e 5e 2e 4c 50 43 .A._DCS.^^^^.LPC 2210: 42 50 48 53 53 0a 0c 70 43 41 44 4c 60 70 43 53 BPHSS..pCADL`pCS 2220: 54 45 61 7b 60 0a 04 60 7b 61 0a 04 61 a0 08 60 TEa{`..`{a..a..` 2230: 70 01 54 56 41 41 a1 07 70 00 54 56 41 41 a0 13 p.TVAA..p.TVAA.. 2240: 54 56 41 41 a0 08 93 61 0a 04 a4 0a 1f a1 04 a4 TVAA...a........ 2250: 0a 1d a1 0f a0 08 93 61 0a 04 a4 0a 0f a1 04 a4 .......a........ 2260: 0a 0d 14 12 5f 44 47 53 00 a0 07 54 56 41 41 a4 ...._DGS...TVAA. 2270: 01 a1 03 a4 00 14 06 5f 44 53 53 01 14 49 10 44 ......._DSS..I.D 2280: 53 53 57 00 a0 4a 0e 93 53 57 49 54 00 5e 5e 5e SSW..J..SWIT.^^^ 2290: 2e 4c 50 43 42 50 48 53 53 0a 0c 70 43 41 44 4c .LPCBPHSS..pCADL 22a0: 60 70 43 53 54 45 61 a0 16 94 61 01 7b 60 61 56 `pCSTEa...a.{`aV 22b0: 4c 44 46 7b 56 4c 44 46 0a fe 56 4c 44 46 a0 43 LDF{VLDF..VLDF.C 22c0: 0a 56 4c 44 46 a0 27 93 60 0a 09 a0 0b 93 61 0a .VLDF.'.`.....a. 22d0: 08 53 54 42 4c 0a 02 a0 0a 93 61 01 53 54 42 4c .STBL.....a.STBL 22e0: 0a 03 a0 0a 93 61 0a 09 53 54 42 4c 01 a0 28 93 .....a..STBL..(. 22f0: 60 0a 0a a0 0b 93 61 0a 08 53 54 42 4c 0a 05 a0 `.....a..STBL... 2300: 0a 93 61 0a 02 53 54 42 4c 01 a0 0b 93 61 0a 0a ..a..STBL....a.. 2310: 53 54 42 4c 0a 04 a0 4b 04 93 60 0a 0b a0 0b 93 STBL...K..`..... 2320: 61 0a 08 53 54 42 4c 0a 02 a0 0b 93 61 0a 09 53 a..STBL.....a..S 2330: 54 42 4c 0a 05 a0 0a 93 61 01 53 54 42 4c 0a 03 TBL.....a.STBL.. 2340: a0 0b 93 61 0a 0a 53 54 42 4c 0a 04 a0 0a 93 61 ...a..STBL.....a 2350: 0a 02 53 54 42 4c 01 a0 0a 93 61 0a 0b 53 54 42 ..STBL....a..STB 2360: 4c 01 a1 0c 70 01 56 4c 44 46 53 54 42 4c 01 a1 L...p.VLDFSTBL.. 2370: 16 a0 14 93 53 57 49 54 01 5e 5e 5e 2e 4c 50 43 ....SWIT.^^^.LPC 2380: 42 50 48 53 53 01 14 45 0b 53 54 42 4c 01 a0 16 BPHSS..E.STBL... 2390: 93 68 01 70 00 43 52 54 41 70 01 4c 43 44 41 70 .h.p.CRTAp.LCDAp 23a0: 00 54 56 41 41 a0 17 93 68 0a 02 70 01 43 52 54 .TVAA...h..p.CRT 23b0: 41 70 00 4c 43 44 41 70 00 54 56 41 41 a0 17 93 Ap.LCDAp.TVAA... 23c0: 68 0a 03 70 01 43 52 54 41 70 01 4c 43 44 41 70 h..p.CRTAp.LCDAp 23d0: 00 54 56 41 41 a0 17 93 68 0a 04 70 00 43 52 54 .TVAA...h..p.CRT 23e0: 41 70 00 4c 43 44 41 70 01 54 56 41 41 a0 17 93 Ap.LCDAp.TVAA... 23f0: 68 0a 05 70 00 43 52 54 41 70 01 4c 43 44 41 70 h..p.CRTAp.LCDAp 2400: 01 54 56 41 41 a0 17 93 68 0a 06 70 01 43 52 54 .TVAA...h..p.CRT 2410: 41 70 00 4c 43 44 41 70 01 54 56 41 41 a0 17 93 Ap.LCDAp.TVAA... 2420: 68 0a 07 70 01 43 52 54 41 70 01 4c 43 44 41 70 h..p.CRTAp.LCDAp 2430: 01 54 56 41 41 86 56 47 41 5f 0a 80 5b 82 42 f8 .TVAA.VGA_..[.B. 2440: 47 46 58 30 08 5f 41 44 52 0c 00 00 02 00 14 10 GFX0._ADR....... 2450: 5f 44 4f 53 01 70 7b 68 0a 07 00 44 53 45 4e 14 _DOS.p{h...DSEN. 2460: 41 26 5f 44 4f 44 00 70 00 4e 44 49 44 a0 15 92 A&_DOD.p.NDID... 2470: 93 44 49 44 4c 00 70 53 44 44 4c 44 49 44 31 44 .DIDL.pSDDLDID1D 2480: 49 44 31 a0 15 92 93 44 44 4c 32 00 70 53 44 44 ID1....DDL2.pSDD 2490: 4c 44 49 44 32 44 49 44 32 a0 15 92 93 44 44 4c LDID2DID2....DDL 24a0: 33 00 70 53 44 44 4c 44 49 44 33 44 49 44 33 a0 3.pSDDLDID3DID3. 24b0: 15 92 93 44 44 4c 34 00 70 53 44 44 4c 44 49 44 ...DDL4.pSDDLDID 24c0: 34 44 49 44 34 a0 15 92 93 44 44 4c 35 00 70 53 4DID4....DDL5.pS 24d0: 44 44 4c 44 49 44 35 44 49 44 35 a0 2c 93 4e 44 DDLDID5DID5.,.ND 24e0: 49 44 01 08 54 4d 50 31 12 07 01 0c ff ff ff ff ID..TMP1........ 24f0: 70 7d 0c 00 00 01 00 44 49 44 31 00 88 54 4d 50 p}.....DID1..TMP 2500: 31 00 00 a4 54 4d 50 31 a0 46 04 93 4e 44 49 44 1...TMP1.F..NDID 2510: 0a 02 08 54 4d 50 32 12 0c 02 0c ff ff ff ff 0c ...TMP2......... 2520: ff ff ff ff 70 7d 0c 00 00 01 00 44 49 44 31 00 ....p}.....DID1. 2530: 88 54 4d 50 32 00 00 70 7d 0c 00 00 01 00 44 49 .TMP2..p}.....DI 2540: 44 32 00 88 54 4d 50 32 01 00 a4 54 4d 50 32 a0 D2..TMP2...TMP2. 2550: 4f 05 93 4e 44 49 44 0a 03 08 54 4d 50 33 12 11 O..NDID...TMP3.. 2560: 03 0c ff ff ff ff 0c ff ff ff ff 0c ff ff ff ff ................ 2570: 70 7d 0c 00 00 01 00 44 49 44 31 00 88 54 4d 50 p}.....DID1..TMP 2580: 33 00 00 70 7d 0c 00 00 01 00 44 49 44 32 00 88 3..p}.....DID2.. 2590: 54 4d 50 33 01 00 70 7d 0c 00 00 01 00 44 49 44 TMP3..p}.....DID 25a0: 33 00 88 54 4d 50 33 0a 02 00 a4 54 4d 50 33 a0 3..TMP3....TMP3. 25b0: 48 07 93 4e 44 49 44 0a 04 08 54 4d 50 34 12 16 H..NDID...TMP4.. 25c0: 04 0c ff ff ff ff 0c ff ff ff ff 0c ff ff ff ff ................ 25d0: 0c ff ff ff ff 70 7d 0c 00 00 01 00 44 49 44 31 .....p}.....DID1 25e0: 00 88 54 4d 50 34 00 00 70 7d 0c 00 00 01 00 44 ..TMP4..p}.....D 25f0: 49 44 32 00 88 54 4d 50 34 01 00 70 7d 0c 00 00 ID2..TMP4..p}... 2600: 01 00 44 49 44 33 00 88 54 4d 50 34 0a 02 00 70 ..DID3..TMP4...p 2610: 7d 0c 00 00 01 00 44 49 44 34 00 88 54 4d 50 34 }.....DID4..TMP4 2620: 0a 03 00 a4 54 4d 50 34 a0 41 09 94 4e 44 49 44 ....TMP4.A..NDID 2630: 0a 04 08 54 4d 50 35 12 1b 05 0c ff ff ff ff 0c ...TMP5......... 2640: ff ff ff ff 0c ff ff ff ff 0c ff ff ff ff 0c ff ................ 2650: ff ff ff 70 7d 0c 00 00 01 00 44 49 44 31 00 88 ...p}.....DID1.. 2660: 54 4d 50 35 00 00 70 7d 0c 00 00 01 00 44 49 44 TMP5..p}.....DID 2670: 32 00 88 54 4d 50 35 01 00 70 7d 0c 00 00 01 00 2..TMP5..p}..... 2680: 44 49 44 33 00 88 54 4d 50 35 0a 02 00 70 7d 0c DID3..TMP5...p}. 2690: 00 00 01 00 44 49 44 34 00 88 54 4d 50 35 0a 03 ....DID4..TMP5.. 26a0: 00 70 7d 0c 00 00 01 00 44 49 44 34 00 88 54 4d .p}.....DID4..TM 26b0: 50 35 0a 04 00 a4 54 4d 50 35 a4 12 05 01 0b 00 P5....TMP5...... 26c0: 04 5b 82 43 06 44 44 30 31 14 1c 5f 41 44 52 08 .[.C.DD01.._ADR. 26d0: a0 09 93 44 49 44 31 00 a4 01 a1 0b a4 7b 0b ff ...DID1......{.. 26e0: ff 44 49 44 31 00 14 0f 5f 44 43 53 00 a4 43 44 .DID1..._DCS..CD 26f0: 44 53 44 49 44 31 14 0f 5f 44 47 53 00 a4 4e 44 DSDID1.._DGS..ND 2700: 44 53 44 49 44 31 14 1f 5f 44 53 53 01 a0 18 93 DSDID1.._DSS.... 2710: 7b 68 0c 00 00 00 c0 00 0c 00 00 00 c0 70 4e 53 {h...........pNS 2720: 54 45 43 53 54 45 5b 82 44 06 44 44 30 32 14 1d TECSTE[.D.DD02.. 2730: 5f 41 44 52 08 a0 0a 93 44 49 44 32 00 a4 0a 02 _ADR....DID2.... 2740: a1 0b a4 7b 0b ff ff 44 49 44 32 00 14 0f 5f 44 ...{...DID2..._D 2750: 43 53 00 a4 43 44 44 53 44 49 44 32 14 0f 5f 44 CS..CDDSDID2.._D 2760: 47 53 00 a4 4e 44 44 53 44 49 44 32 14 1f 5f 44 GS..NDDSDID2.._D 2770: 53 53 01 a0 18 93 7b 68 0c 00 00 00 c0 00 0c 00 SS....{h........ 2780: 00 00 c0 70 4e 53 54 45 43 53 54 45 5b 82 41 07 ...pNSTECSTE[.A. 2790: 44 44 30 33 14 1d 5f 41 44 52 08 a0 0a 93 44 49 DD03.._ADR....DI 27a0: 44 33 00 a4 0a 03 a1 0b a4 7b 0b ff ff 44 49 44 D3.......{...DID 27b0: 33 00 14 1c 5f 44 43 53 00 a0 0a 93 44 49 44 33 3..._DCS....DID3 27c0: 00 a4 0a 0b a1 0a a4 43 44 44 53 44 49 44 33 14 .......CDDSDID3. 27d0: 0f 5f 44 47 53 00 a4 4e 44 44 53 44 49 44 33 14 ._DGS..NDDSDID3. 27e0: 1f 5f 44 53 53 01 a0 18 93 7b 68 0c 00 00 00 c0 ._DSS....{h..... 27f0: 00 0c 00 00 00 c0 70 4e 53 54 45 43 53 54 45 5b ......pNSTECSTE[ 2800: 82 41 07 44 44 30 34 14 1d 5f 41 44 52 08 a0 0a .A.DD04.._ADR... 2810: 93 44 49 44 34 00 a4 0a 04 a1 0b a4 7b 0b ff ff .DID4.......{... 2820: 44 49 44 34 00 14 1c 5f 44 43 53 00 a0 0a 93 44 DID4..._DCS....D 2830: 49 44 34 00 a4 0a 0b a1 0a a4 43 44 44 53 44 49 ID4.......CDDSDI 2840: 44 34 14 0f 5f 44 47 53 00 a4 4e 44 44 53 44 49 D4.._DGS..NDDSDI 2850: 44 34 14 1f 5f 44 53 53 01 a0 18 93 7b 68 0c 00 D4.._DSS....{h.. 2860: 00 00 c0 00 0c 00 00 00 c0 70 4e 53 54 45 43 53 .........pNSTECS 2870: 54 45 5b 82 41 07 44 44 30 35 14 1d 5f 41 44 52 TE[.A.DD05.._ADR 2880: 08 a0 0a 93 44 49 44 35 00 a4 0a 05 a1 0b a4 7b ....DID5.......{ 2890: 0b ff ff 44 49 44 35 00 14 1c 5f 44 43 53 00 a0 ...DID5..._DCS.. 28a0: 0a 93 44 49 44 35 00 a4 0a 0b a1 0a a4 43 44 44 ..DID5.......CDD 28b0: 53 44 49 44 35 14 0f 5f 44 47 53 00 a4 4e 44 44 SDID5.._DGS..NDD 28c0: 53 44 49 44 35 14 1f 5f 44 53 53 01 a0 18 93 7b SDID5.._DSS....{ 28d0: 68 0c 00 00 00 c0 00 0c 00 00 00 c0 70 4e 53 54 h...........pNST 28e0: 45 43 53 54 45 14 4e 06 53 44 44 4c 01 75 4e 44 ECSTE.N.SDDL.uND 28f0: 49 44 70 7b 68 0b 0f 0f 00 60 7d 0c 00 00 00 80 IDp{h....`}..... 2900: 60 61 a0 09 93 44 49 44 4c 60 a4 61 a0 09 93 44 `a...DIDL`.a...D 2910: 44 4c 32 60 a4 61 a0 09 93 44 44 4c 33 60 a4 61 DL2`.a...DDL3`.a 2920: a0 09 93 44 44 4c 34 60 a4 61 a0 09 93 44 44 4c ...DDL4`.a...DDL 2930: 35 60 a4 61 a0 09 93 44 44 4c 36 60 a4 61 a0 09 5`.a...DDL6`.a.. 2940: 93 44 44 4c 37 60 a4 61 a0 09 93 44 44 4c 38 60 .DDL7`.a...DDL8` 2950: a4 61 a4 00 14 4a 08 43 44 44 53 01 a0 0f 93 43 .a...J.CDDS....C 2960: 41 44 4c 7b 68 0b 0f 0f 00 a4 0a 1f a0 0f 93 43 ADL{h..........C 2970: 41 4c 32 7b 68 0b 0f 0f 00 a4 0a 1f a0 0f 93 43 AL2{h..........C 2980: 41 4c 33 7b 68 0b 0f 0f 00 a4 0a 1f a0 0f 93 43 AL3{h..........C 2990: 41 4c 34 7b 68 0b 0f 0f 00 a4 0a 1f a0 0f 93 43 AL4{h..........C 29a0: 41 4c 35 7b 68 0b 0f 0f 00 a4 0a 1f a0 0f 93 43 AL5{h..........C 29b0: 41 4c 36 7b 68 0b 0f 0f 00 a4 0a 1f a0 0f 93 43 AL6{h..........C 29c0: 41 4c 37 7b 68 0b 0f 0f 00 a4 0a 1f a0 0f 93 43 AL7{h..........C 29d0: 41 4c 38 7b 68 0b 0f 0f 00 a4 0a 1f a4 0a 1d 14 AL8{h........... 29e0: 41 08 4e 44 44 53 01 a0 0e 93 4e 41 44 4c 7b 68 A.NDDS....NADL{h 29f0: 0b 0f 0f 00 a4 01 a0 0e 93 4e 44 4c 32 7b 68 0b .........NDL2{h. 2a00: 0f 0f 00 a4 01 a0 0e 93 4e 44 4c 33 7b 68 0b 0f ........NDL3{h.. 2a10: 0f 00 a4 01 a0 0e 93 4e 44 4c 34 7b 68 0b 0f 0f .......NDL4{h... 2a20: 00 a4 01 a0 0e 93 4e 44 4c 35 7b 68 0b 0f 0f 00 ......NDL5{h.... 2a30: a4 01 a0 0e 93 4e 44 4c 36 7b 68 0b 0f 0f 00 a4 .....NDL6{h..... 2a40: 01 a0 0e 93 4e 44 4c 37 7b 68 0b 0f 0f 00 a4 01 ....NDL7{h...... 2a50: a0 0e 93 4e 44 4c 38 7b 68 0b 0f 0f 00 a4 01 a4 ...NDL8{h....... 2a60: 00 14 40 07 42 52 54 4e 09 a0 14 93 7b 44 49 44 ..@.BRTN....{DID 2a70: 31 0b 00 0f 00 0b 00 04 86 44 44 30 31 68 a0 14 1........DD01h.. 2a80: 93 7b 44 49 44 32 0b 00 0f 00 0b 00 04 86 44 44 .{DID2........DD 2a90: 30 32 68 a0 14 93 7b 44 49 44 33 0b 00 0f 00 0b 02h...{DID3..... 2aa0: 00 04 86 44 44 30 33 68 a0 14 93 7b 44 49 44 34 ...DD03h...{DID4 2ab0: 0b 00 0f 00 0b 00 04 86 44 44 30 34 68 a0 14 93 ........DD04h... 2ac0: 7b 44 49 44 35 0b 00 0f 00 0b 00 04 86 44 44 30 {DID5........DD0 2ad0: 35 68 10 24 5e 5e 50 43 49 30 5b 80 4d 43 48 50 5h.$^^PCI0[.MCHP 2ae0: 02 0a 40 0a c0 5b 81 10 4d 43 48 50 00 00 40 30 ..@..[..MCHP..@0 2af0: 54 41 53 4d 0a 00 06 5b 80 49 47 44 50 02 0a 40 TASM...[.IGDP..@ 2b00: 0a c0 5b 81 45 05 49 47 44 50 00 00 40 09 00 01 ..[.E.IGDP..@... 2b10: 47 49 56 44 01 00 02 47 55 4d 41 03 00 09 00 04 GIVD...GUMA..... 2b20: 47 4d 46 4e 01 00 1b 00 40 46 41 53 4c 45 08 00 GMFN....@FASLE.. 2b30: 18 47 53 53 45 01 47 53 53 42 0e 47 53 45 53 01 .GSSE.GSSB.GSES. 2b40: 00 30 00 08 43 44 56 4c 05 00 03 00 18 4c 42 50 .0..CDVL.....LBP 2b50: 43 08 00 30 41 53 4c 53 20 5b 80 49 47 44 4d 00 C..0ASLS [.IGDM. 2b60: 41 53 4c 42 0b 00 20 5b 81 4e 16 49 47 44 4d 00 ASLB.. [.N.IGDM. 2b70: 53 49 47 4e 40 08 53 49 5a 45 20 4f 56 45 52 20 SIGN@.SIZE OVER 2b80: 53 56 45 52 40 10 56 56 45 52 40 08 47 56 45 52 SVER@.VVER@.GVER 2b90: 40 08 4d 42 4f 58 20 00 40 52 44 52 44 59 20 43 @.MBOX .@RDRDY C 2ba0: 53 54 53 20 43 45 56 54 20 00 40 0a 44 49 44 4c STS CEVT .@.DIDL 2bb0: 20 44 44 4c 32 20 44 44 4c 33 20 44 44 4c 34 20 DDL2 DDL3 DDL4 2bc0: 44 44 4c 35 20 44 44 4c 36 20 44 44 4c 37 20 44 DDL5 DDL6 DDL7 D 2bd0: 44 4c 38 20 43 50 44 4c 20 43 50 4c 32 20 43 50 DL8 CPDL CPL2 CP 2be0: 4c 33 20 43 50 4c 34 20 43 50 4c 35 20 43 50 4c L3 CPL4 CPL5 CPL 2bf0: 36 20 43 50 4c 37 20 43 50 4c 38 20 43 41 44 4c 6 CPL7 CPL8 CADL 2c00: 20 43 41 4c 32 20 43 41 4c 33 20 43 41 4c 34 20 CAL2 CAL3 CAL4 2c10: 43 41 4c 35 20 43 41 4c 36 20 43 41 4c 37 20 43 CAL5 CAL6 CAL7 C 2c20: 41 4c 38 20 4e 41 44 4c 20 4e 44 4c 32 20 4e 44 AL8 NADL NDL2 ND 2c30: 4c 33 20 4e 44 4c 34 20 4e 44 4c 35 20 4e 44 4c L3 NDL4 NDL5 NDL 2c40: 36 20 4e 44 4c 37 20 4e 44 4c 38 20 41 53 4c 50 6 NDL7 NDL8 ASLP 2c50: 20 54 49 44 58 20 43 48 50 44 20 43 4c 49 44 20 TIDX CHPD CLID 2c60: 43 44 43 4b 20 53 58 53 57 20 45 56 54 53 20 43 CDCK SXSW EVTS C 2c70: 4e 4f 54 20 4e 52 44 59 20 00 40 1e 53 43 49 45 NOT NRDY .@.SCIE 2c80: 01 47 45 46 43 04 47 58 46 43 03 47 45 53 46 08 .GEFC.GXFC.GESF. 2c90: 00 10 50 41 52 4d 20 44 53 4c 50 20 00 40 7a 41 ..PARM DSLP .@zA 2ca0: 52 44 59 20 41 53 4c 43 20 54 43 48 45 20 41 4c RDY ASLC TCHE AL 2cb0: 53 49 20 42 43 4c 50 20 50 46 49 54 20 43 42 4c SI BCLP PFIT CBL 2cc0: 56 20 42 43 4c 4d 40 14 43 50 46 4d 20 00 40 5c V BCLM@.CPFM .@\ 2cd0: 47 56 44 31 80 00 0e 08 44 42 54 42 12 32 15 00 GVD1....DBTB.2.. 2ce0: 0a 07 0a 38 0b c0 01 0b 00 0e 0a 3f 0b c7 01 0b ...8.......?.... 2cf0: 07 0e 0b f8 01 0b 38 0e 0b c0 0f 00 00 00 00 00 ......8......... 2d00: 0b 00 70 0b 07 70 0b 38 70 0b c0 71 0b 00 7e 08 ..p..p.8p..q..~. 2d10: 43 44 43 54 12 23 03 12 0a 03 0a c8 0b 40 01 0b CDCT.#.......@.. 2d20: 90 01 12 0a 03 0a c8 0b 4d 01 0b 90 01 12 0a 03 ........M....... 2d30: 0a de 0b 4d 01 0b 7d 01 08 53 55 43 43 01 08 4e ...M..}..SUCC..N 2d40: 56 4c 44 0a 02 08 43 52 49 54 0a 04 08 4e 43 52 VLD...CRIT...NCR 2d50: 54 0a 06 14 4c 4a 47 53 43 49 08 14 44 1e 47 42 T...LJGSCI..D.GB 2d60: 44 41 08 a0 1a 93 47 45 53 46 00 70 0b 79 02 50 DA....GESF.p.y.P 2d70: 41 52 4d 70 00 47 45 53 46 a4 53 55 43 43 a0 1a ARMp.GESF.SUCC.. 2d80: 93 47 45 53 46 01 70 0b 40 02 50 41 52 4d 70 00 .GESF.p.@.PARMp. 2d90: 47 45 53 46 a4 53 55 43 43 a0 47 04 93 47 45 53 GESF.SUCC.G..GES 2da0: 46 0a 04 7b 50 41 52 4d 0c 00 00 ff ef 50 41 52 F..{PARM.....PAR 2db0: 4d 7b 50 41 52 4d 79 83 88 44 42 54 42 49 42 54 M{PARMy..DBTBIBT 2dc0: 54 00 0a 10 00 50 41 52 4d 7d 49 42 54 54 50 41 T....PARM}IBTTPA 2dd0: 52 4d 50 41 52 4d 70 00 47 45 53 46 a4 53 55 43 RMPARMp.GESF.SUC 2de0: 43 a0 4a 06 93 47 45 53 46 0a 05 70 49 50 53 43 C.J..GESF..pIPSC 2df0: 50 41 52 4d 7d 50 41 52 4d 79 49 50 41 54 0a 08 PARM}PARMyIPAT.. 2e00: 00 50 41 52 4d 72 50 41 52 4d 0b 00 01 50 41 52 .PARMrPARM...PAR 2e10: 4d 7d 50 41 52 4d 79 4c 49 44 53 0a 10 00 50 41 M}PARMyLIDS...PA 2e20: 52 4d 72 50 41 52 4d 0c 00 00 01 00 50 41 52 4d RMrPARM.....PARM 2e30: 7d 50 41 52 4d 79 49 42 49 41 0a 14 00 50 41 52 }PARMyIBIA...PAR 2e40: 4d 70 00 47 45 53 46 a4 53 55 43 43 a0 2d 93 47 Mp.GESF.SUCC.-.G 2e50: 45 53 46 0a 06 70 49 54 56 46 50 41 52 4d 7d 50 ESF..pITVFPARM}P 2e60: 41 52 4d 79 49 54 56 4d 0a 04 00 50 41 52 4d 70 ARMyITVM...PARMp 2e70: 00 47 45 53 46 a4 53 55 43 43 a0 4f 08 93 47 45 .GESF.SUCC.O..GE 2e80: 53 46 0a 07 70 47 49 56 44 50 41 52 4d 7f 50 41 SF..pGIVDPARM.PA 2e90: 52 4d 01 50 41 52 4d 7d 50 41 52 4d 79 47 4d 46 RM.PARM}PARMyGMF 2ea0: 4e 01 00 50 41 52 4d 7d 50 41 52 4d 0b 00 10 50 N..PARM}PARM...P 2eb0: 41 52 4d a0 16 49 44 4d 4d 7d 50 41 52 4d 79 49 ARM..IDMM}PARMyI 2ec0: 44 4d 53 0a 11 00 50 41 52 4d a1 12 7d 50 41 52 DMS...PARM..}PAR 2ed0: 4d 79 49 44 4d 53 0a 0d 00 50 41 52 4d 7d 79 83 MyIDMS...PARM}y. 2ee0: 88 83 88 43 44 43 54 48 56 43 4f 00 74 43 44 56 ...CDCTHVCO.tCDV 2ef0: 4c 01 00 00 0a 15 00 50 41 52 4d 50 41 52 4d 70 L......PARMPARMp 2f00: 01 47 45 53 46 a4 53 55 43 43 a0 2a 93 47 45 53 .GESF.SUCC.*.GES 2f10: 46 0a 0a 70 00 50 41 52 4d a0 10 49 53 53 43 7d F..p.PARM..ISSC} 2f20: 50 41 52 4d 0a 03 50 41 52 4d 70 00 47 45 53 46 PARM..PARMp.GESF 2f30: a4 53 55 43 43 70 00 47 45 53 46 a4 43 52 49 54 .SUCCp.GESF.CRIT 2f40: 14 41 28 53 42 43 42 08 a0 20 93 47 45 53 46 00 .A(SBCB.. .GESF. 2f50: 70 00 50 41 52 4d 70 0b 7d f7 50 41 52 4d 70 00 p.PARMp.}.PARMp. 2f60: 47 45 53 46 a4 53 55 43 43 a0 18 93 47 45 53 46 GESF.SUCC...GESF 2f70: 01 70 00 47 45 53 46 70 00 50 41 52 4d a4 53 55 .p.GESFp.PARM.SU 2f80: 43 43 a0 19 93 47 45 53 46 0a 03 70 00 47 45 53 CC...GESF..p.GES 2f90: 46 70 00 50 41 52 4d a4 53 55 43 43 a0 19 93 47 Fp.PARM.SUCC...G 2fa0: 45 53 46 0a 04 70 00 47 45 53 46 70 00 50 41 52 ESF..p.GESFp.PAR 2fb0: 4d a4 53 55 43 43 a0 19 93 47 45 53 46 0a 05 70 M.SUCC...GESF..p 2fc0: 00 47 45 53 46 70 00 50 41 52 4d a4 53 55 43 43 .GESFp.PARM.SUCC 2fd0: a0 37 93 47 45 53 46 0a 06 70 7b 50 41 52 4d 0a .7.GESF..p{PARM. 2fe0: 0f 00 49 54 56 46 70 7a 7b 50 41 52 4d 0a f0 00 ..ITVFpz{PARM... 2ff0: 0a 04 00 49 54 56 4d 70 00 47 45 53 46 70 00 50 ...ITVMp.GESFp.P 3000: 41 52 4d a4 53 55 43 43 a0 19 93 47 45 53 46 0a ARM.SUCC...GESF. 3010: 07 70 00 47 45 53 46 70 00 50 41 52 4d a4 53 55 .p.GESFp.PARM.SU 3020: 43 43 a0 19 93 47 45 53 46 0a 08 70 00 47 45 53 CC...GESF..p.GES 3030: 46 70 00 50 41 52 4d a4 53 55 43 43 a0 24 93 47 Fp.PARM.SUCC.$.G 3040: 45 53 46 0a 09 7b 50 41 52 4d 0a ff 49 42 54 54 ESF..{PARM..IBTT 3050: 70 00 47 45 53 46 70 00 50 41 52 4d a4 53 55 43 p.GESFp.PARM.SUC 3060: 43 a0 46 05 93 47 45 53 46 0a 0a 7b 50 41 52 4d C.F..GESF..{PARM 3070: 0a ff 49 50 53 43 a0 21 7b 7a 50 41 52 4d 0a 08 ..IPSC.!{zPARM.. 3080: 00 0a ff 00 7b 7a 50 41 52 4d 0a 08 00 0a ff 49 ....{zPARM.....I 3090: 50 41 54 76 49 50 41 54 7b 7a 50 41 52 4d 0a 14 PATvIPAT{zPARM.. 30a0: 00 0a 07 49 42 49 41 70 00 47 45 53 46 70 00 50 ...IBIAp.GESFp.P 30b0: 41 52 4d a4 53 55 43 43 a0 40 06 93 47 45 53 46 ARM.SUCC.@..GESF 30c0: 0a 0b 7b 7a 50 41 52 4d 01 00 01 49 46 31 45 a0 ..{zPARM...IF1E. 30d0: 21 7b 50 41 52 4d 0c 00 e0 01 00 00 7b 7a 50 41 !{PARM......{zPA 30e0: 52 4d 0a 0d 00 0a 0f 49 44 4d 53 70 00 49 44 4d RM.....IDMSp.IDM 30f0: 4d a1 16 7b 7a 50 41 52 4d 0a 11 00 0a 0f 49 44 M..{zPARM.....ID 3100: 4d 53 70 01 49 44 4d 4d 70 00 47 45 53 46 70 00 MSp.IDMMp.GESFp. 3110: 50 41 52 4d a4 53 55 43 43 a0 19 93 47 45 53 46 PARM.SUCC...GESF 3120: 0a 10 70 00 47 45 53 46 70 00 50 41 52 4d a4 53 ..p.GESFp.PARM.S 3130: 55 43 43 a0 1f 93 47 45 53 46 0a 11 7d 50 41 52 UCC...GESF..}PAR 3140: 4d 0b 00 01 50 41 52 4d 70 00 47 45 53 46 a4 53 M...PARMp.GESF.S 3150: 55 43 43 a0 49 04 93 47 45 53 46 0a 12 a0 26 7b UCC.I..GESF...&{ 3160: 50 41 52 4d 01 00 a0 10 93 7a 50 41 52 4d 01 00 PARM.....zPARM.. 3170: 01 70 01 49 53 53 43 a1 0c 70 00 47 45 53 46 a4 .p.ISSC..p.GESF. 3180: 43 52 49 54 a1 07 70 00 49 53 53 43 70 00 47 45 CRIT..p.ISSCp.GE 3190: 53 46 70 00 50 41 52 4d a4 53 55 43 43 a0 19 93 SFp.PARM.SUCC... 31a0: 47 45 53 46 0a 13 70 00 47 45 53 46 70 00 50 41 GESF..p.GESFp.PA 31b0: 52 4d a4 53 55 43 43 70 00 47 45 53 46 a4 53 55 RM.SUCCp.GESF.SU 31c0: 43 43 a0 11 93 47 45 46 43 0a 04 70 47 42 44 41 CC...GEFC..pGBDA 31d0: 47 58 46 43 a0 11 93 47 45 46 43 0a 06 70 53 42 GXFC...GEFC..pSB 31e0: 43 42 47 58 46 43 70 00 47 45 46 43 70 01 53 43 CBGXFCp.GEFCp.SC 31f0: 49 53 70 00 47 53 53 45 70 00 53 43 49 45 a4 00 ISp.GSSEp.SCIE.. 3200: 14 19 50 44 52 44 00 a0 0c 92 44 52 44 59 5b 22 ..PDRD....DRDY[" 3210: 41 53 4c 50 a4 92 44 52 44 59 14 1d 50 53 54 53 ASLP..DRDY..PSTS 3220: 00 a0 0e 94 43 53 54 53 0a 02 5b 22 41 53 4c 50 ....CSTS..["ASLP 3230: a4 93 43 53 54 53 0a 03 14 47 06 47 4e 4f 54 02 ..CSTS...G.GNOT. 3240: a0 07 50 44 52 44 a4 01 a0 07 50 53 54 53 a4 01 ..PDRD....PSTS.. 3250: 70 68 43 45 56 54 70 0a 03 43 53 54 53 a0 2c 90 phCEVTp..CSTS.,. 3260: 93 43 48 50 44 00 93 69 00 a0 18 91 94 4f 53 59 .CHPD..i.....OSY 3270: 53 0b d0 07 95 4f 53 59 53 0b d6 07 86 50 43 49 S....OSYS....PCI 3280: 30 69 a1 07 86 47 46 58 30 69 86 47 46 58 30 0a 0i...GFX0i.GFX0. 3290: 80 a0 0c 92 50 53 54 53 70 00 43 45 56 54 a4 00 ....PSTSp.CEVT.. 32a0: 14 13 47 48 44 53 01 70 68 54 49 44 58 a4 47 4e ..GHDS.phTIDX.GN 32b0: 4f 54 01 00 14 14 47 4c 49 44 01 70 68 43 4c 49 OT....GLID.phCLI 32c0: 44 a4 47 4e 4f 54 0a 02 00 14 15 47 44 43 4b 01 D.GNOT.....GDCK. 32d0: 70 68 43 44 43 4b a4 47 4e 4f 54 0a 04 0a 80 14 phCDCK.GNOT..... 32e0: 19 50 41 52 44 00 a0 0c 92 41 52 44 59 5b 22 41 .PARD....ARDY["A 32f0: 53 4c 50 a4 92 41 52 44 59 14 46 0c 41 49 4e 54 SLP..ARDY.F.AINT 3300: 02 a0 0e 92 7b 54 43 48 45 79 01 68 00 00 a4 01 ....{TCHEy.h.... 3310: a0 07 50 41 52 44 a4 01 a0 4c 05 93 68 0a 02 a0 ..PARD...L..h... 3320: 33 43 50 46 4d a0 0e 93 43 50 46 4d 01 70 0a 06 3CPFM...CPFM.p.. 3330: 50 46 49 54 a0 0f 93 43 50 46 4d 0a 06 70 0a 08 PFIT...CPFM..p.. 3340: 50 46 49 54 a0 0e 93 43 50 46 4d 0a 08 70 01 50 PFIT...CPFM..p.P 3350: 46 49 54 a1 0c 7f 50 46 49 54 0a 07 50 46 49 54 FIT...PFIT..PFIT 3360: 7d 50 46 49 54 0c 00 00 00 80 50 46 49 54 70 0a }PFIT.....PFITp. 3370: 04 41 53 4c 43 a1 42 04 a0 28 93 68 01 70 78 77 .ASLC.B..(.h.pxw 3380: 69 0a ff 00 0a 64 00 00 42 43 4c 50 7d 42 43 4c i....d..BCLP}BCL 3390: 50 0c 00 00 00 80 42 43 4c 50 70 0a 02 41 53 4c P.....BCLPp..ASL 33a0: 43 a1 16 a0 10 93 68 00 70 69 41 4c 53 49 70 01 C.....h.piALSIp. 33b0: 41 53 4c 43 a1 03 a4 01 70 00 4c 42 50 43 a4 00 ASLC....p.LBPC.. 33c0: 10 41 36 5c 00 5b 80 49 4f 5f 54 01 0b 00 08 0a .A6\.[.IO_T..... 33d0: 10 5b 81 0e 49 4f 5f 54 01 00 40 04 54 52 50 30 .[..IO_T..@.TRP0 33e0: 08 5b 80 50 4d 49 4f 01 0b 00 10 0a 80 5b 81 28 .[.PMIO......[.( 33f0: 50 4d 49 4f 01 00 40 15 00 08 00 02 41 43 50 57 PMIO..@.....ACPW 3400: 01 00 45 0b 00 01 47 50 45 43 01 00 4e 10 00 09 ..E...GPEC..N... 3410: 53 43 49 53 01 00 06 5b 80 47 50 49 4f 01 0b 80 SCIS...[.GPIO... 3420: 11 0a 3c 5b 81 40 0c 47 50 49 4f 01 47 55 30 30 ..<[.@.GPIO.GU00 3430: 08 47 55 30 31 08 47 55 30 32 08 47 55 30 33 08 .GU01.GU02.GU03. 3440: 47 49 4f 30 08 47 49 4f 31 08 47 49 4f 32 08 47 GIO0.GIO1.GIO2.G 3450: 49 4f 33 08 00 20 47 4c 30 30 08 47 4c 30 31 08 IO3.. GL00.GL01. 3460: 47 4c 30 32 08 00 03 47 50 32 37 01 47 50 32 38 GL02...GP27.GP28 3470: 01 00 03 00 40 04 47 42 30 30 08 47 42 30 31 08 ....@.GB00.GB01. 3480: 47 42 30 32 08 47 42 30 33 08 00 40 08 47 49 56 GB02.GB03..@.GIV 3490: 30 08 00 03 4c 50 4f 4c 01 00 04 47 49 56 32 08 0...LPOL...GIV2. 34a0: 47 49 56 33 08 47 55 30 34 08 47 55 30 35 08 47 GIV3.GU04.GU05.G 34b0: 55 30 36 08 47 55 30 37 08 47 49 4f 34 08 47 49 U06.GU07.GIO4.GI 34c0: 4f 35 08 47 49 4f 36 08 47 49 4f 37 08 00 05 47 O5.GIO6.GIO7...G 34d0: 50 33 37 01 00 02 47 4c 30 35 08 47 4c 30 36 08 P37...GL05.GL06. 34e0: 47 4c 30 37 08 5b 80 52 43 52 42 00 0c 00 c0 d1 GL07.[.RCRB..... 34f0: fe 0b 00 40 5b 81 48 05 52 43 52 42 13 00 80 00 ...@[.H.RCRB.... 3500: 08 00 80 00 10 00 80 02 02 48 50 41 53 02 00 05 .........HPAS... 3510: 48 50 41 45 01 00 48 09 00 01 50 41 54 44 01 53 HPAE..H...PATD.S 3520: 41 54 44 01 53 4d 42 44 01 48 44 41 44 01 00 0b ATD.SMBD.HDAD... 3530: 52 50 31 44 01 52 50 32 44 01 52 50 33 44 01 52 RP1D.RP2D.RP3D.R 3540: 50 34 44 01 52 50 35 44 01 52 50 36 44 01 08 5f P4D.RP5D.RP6D.._ 3550: 53 30 5f 12 05 03 00 00 00 08 5f 53 33 5f 12 07 S0_......._S3_.. 3560: 03 0a 05 0a 05 00 08 5f 53 34 5f 12 07 03 0a 06 ......._S4_..... 3570: 0a 06 00 08 5f 53 35 5f 12 07 03 0a 07 0a 07 00 ...._S5_........ 3580: 14 45 04 47 45 54 50 09 a0 0e 93 7b 68 0a 09 00 .E.GETP....{h... 3590: 00 a4 0c ff ff ff ff a0 0d 93 7b 68 0a 09 00 0a ..........{h.... 35a0: 08 a4 0b 84 03 7a 7b 68 0b 00 03 00 0a 08 60 7a .....z{h......`z 35b0: 7b 68 0b 00 30 00 0a 0c 61 a4 77 0a 1e 74 0a 09 {h..0...a.w..t.. 35c0: 72 60 61 00 00 00 14 30 47 44 4d 41 0d a0 23 68 r`a....0GDMA..#h 35d0: a0 07 90 69 6c a4 0a 14 a0 0e 90 6a 6c a4 77 74 ...il......jl.wt 35e0: 0a 04 6b 00 0a 0f 00 a4 77 74 0a 04 6b 00 0a 1e ..k.....wt..k... 35f0: 00 a4 0c ff ff ff ff 14 1f 47 45 54 54 09 a4 77 .........GETT..w 3600: 0a 1e 74 0a 09 72 7b 7a 68 0a 02 00 0a 03 00 7b ..t..r{zh......{ 3610: 68 0a 03 00 00 00 00 14 44 06 47 45 54 46 0b 08 h.......D.GETF.. 3620: 54 4d 50 46 00 a0 0c 68 7d 54 4d 50 46 01 54 4d TMPF...h}TMPF.TM 3630: 50 46 a0 11 7b 6a 0a 02 00 7d 54 4d 50 46 0a 02 PF..{j...}TMPF.. 3640: 54 4d 50 46 a0 0d 69 7d 54 4d 50 46 0a 04 54 4d TMPF..i}TMPF..TM 3650: 50 46 a0 11 7b 6a 0a 20 00 7d 54 4d 50 46 0a 08 PF..{j. .}TMPF.. 3660: 54 4d 50 46 a0 12 7b 6a 0b 00 40 00 7d 54 4d 50 TMPF..{j..@.}TMP 3670: 46 0a 10 54 4d 50 46 a4 54 4d 50 46 14 3d 53 45 F..TMPF.TMPF.=SE 3680: 54 50 0b a0 08 94 68 0a f0 a4 0a 08 a1 2d a0 27 TP....h......-.' 3690: 7b 69 0a 02 00 a0 10 90 92 94 68 0a 78 7b 6a 0a {i........h.x{j. 36a0: 02 00 a4 0b 01 23 a0 0f 90 92 94 68 0a b4 7b 6a .....#.....h..{j 36b0: 01 00 a4 0b 01 21 a4 0b 01 10 14 37 53 44 4d 41 .....!.....7SDMA 36c0: 09 a0 08 92 94 68 0a 14 a4 01 a0 09 92 94 68 0a .....h........h. 36d0: 1e a4 0a 02 a0 08 92 94 68 0a 2d a4 01 a0 09 92 ........h.-..... 36e0: 94 68 0a 3c a4 0a 02 a0 08 92 94 68 0a 5a a4 01 .h.<.......h.Z.. 36f0: a4 00 14 2f 53 45 54 54 0b a0 25 7b 69 0a 02 00 .../SETT..%{i... 3700: a0 0f 90 92 94 68 0a 78 7b 6a 0a 02 00 a4 0a 0b .....h.x{j...... 3710: a0 0e 90 92 94 68 0a b4 7b 6a 01 00 a4 0a 09 a4 .....h..{j...... 3720: 0a 04 5b 82 4b 04 48 44 45 46 08 5f 41 44 52 0c ..[.K.HDEF._ADR. 3730: 00 00 1b 00 5b 80 48 44 41 52 02 0a 4c 0a 10 5b ....[.HDAR..L..[ 3740: 81 22 48 44 41 52 02 44 43 4b 41 01 00 07 44 43 ."HDAR.DCKA...DC 3750: 4b 4d 01 00 06 44 43 4b 53 01 00 30 00 0f 50 4d KM...DCKS..0..PM 3760: 45 53 01 08 5f 50 52 57 12 06 02 0a 0d 0a 03 5b ES.._PRW.......[ 3770: 82 41 10 52 50 30 31 08 5f 41 44 52 0c 00 00 1c .A.RP01._ADR.... 3780: 00 5b 80 50 58 43 53 02 0a 40 0a c0 5b 81 45 04 .[.PXCS..@..[.E. 3790: 50 58 43 53 40 00 40 09 00 0d 4c 41 53 58 01 00 PXCS@.@...LASX.. 37a0: 32 41 42 50 58 01 00 02 50 44 43 58 01 00 02 50 2ABPX...PDCX...P 37b0: 44 53 58 01 00 01 4c 53 43 58 01 00 27 00 10 50 DSX...LSCX..'..P 37c0: 53 50 58 01 00 4f 3c 00 1e 48 50 53 58 01 50 4d SPX..O<..HPSX.PM 37d0: 53 58 01 5b 82 0b 50 58 53 58 08 5f 41 44 52 00 SX.[..PXSX._ADR. 37e0: 14 41 09 5f 50 52 54 00 a0 33 47 50 49 43 a4 12 .A._PRT..3GPIC.. 37f0: 2c 04 12 09 04 0b ff ff 00 00 0a 10 12 09 04 0b ,............... 3800: ff ff 01 00 0a 11 12 0a 04 0b ff ff 0a 02 00 0a ................ 3810: 12 12 0a 04 0b ff ff 0a 03 00 0a 13 a1 45 05 a4 .............E.. 3820: 12 41 05 04 12 12 04 0b ff ff 00 5e 5e 2e 4c 50 .A.........^^.LP 3830: 43 42 4c 4e 4b 41 00 12 12 04 0b ff ff 01 5e 5e CBLNKA........^^ 3840: 2e 4c 50 43 42 4c 4e 4b 42 00 12 13 04 0b ff ff .LPCBLNKB....... 3850: 0a 02 5e 5e 2e 4c 50 43 42 4c 4e 4b 43 00 12 13 ..^^.LPCBLNKC... 3860: 04 0b ff ff 0a 03 5e 5e 2e 4c 50 43 42 4c 4e 4b ......^^.LPCBLNK 3870: 44 00 5b 82 41 10 52 50 30 32 08 5f 41 44 52 0c D.[.A.RP02._ADR. 3880: 01 00 1c 00 5b 80 50 58 43 53 02 0a 40 0a c0 5b ....[.PXCS..@..[ 3890: 81 45 04 50 58 43 53 40 00 40 09 00 0d 4c 41 53 .E.PXCS@.@...LAS 38a0: 58 01 00 32 41 42 50 58 01 00 02 50 44 43 58 01 X..2ABPX...PDCX. 38b0: 00 02 50 44 53 58 01 00 01 4c 53 43 58 01 00 27 ..PDSX...LSCX..' 38c0: 00 10 50 53 50 58 01 00 4f 3c 00 1e 48 50 53 58 ..PSPX..O<..HPSX 38d0: 01 50 4d 53 58 01 5b 82 0b 50 58 53 58 08 5f 41 .PMSX.[..PXSX._A 38e0: 44 52 00 14 41 09 5f 50 52 54 00 a0 33 47 50 49 DR..A._PRT..3GPI 38f0: 43 a4 12 2c 04 12 09 04 0b ff ff 00 00 0a 11 12 C..,............ 3900: 09 04 0b ff ff 01 00 0a 12 12 0a 04 0b ff ff 0a ................ 3910: 02 00 0a 13 12 0a 04 0b ff ff 0a 03 00 0a 10 a1 ................ 3920: 45 05 a4 12 41 05 04 12 12 04 0b ff ff 00 5e 5e E...A.........^^ 3930: 2e 4c 50 43 42 4c 4e 4b 42 00 12 12 04 0b ff ff .LPCBLNKB....... 3940: 01 5e 5e 2e 4c 50 43 42 4c 4e 4b 43 00 12 13 04 .^^.LPCBLNKC.... 3950: 0b ff ff 0a 02 5e 5e 2e 4c 50 43 42 4c 4e 4b 44 .....^^.LPCBLNKD 3960: 00 12 13 04 0b ff ff 0a 03 5e 5e 2e 4c 50 43 42 .........^^.LPCB 3970: 4c 4e 4b 41 00 5b 82 4d 11 52 50 30 33 08 5f 41 LNKA.[.M.RP03._A 3980: 44 52 0c 02 00 1c 00 5b 80 50 58 43 53 02 0a 40 DR.....[.PXCS..@ 3990: 0a c0 5b 81 45 04 50 58 43 53 40 00 40 09 00 0d ..[.E.PXCS@.@... 39a0: 4c 41 53 58 01 00 32 41 42 50 58 01 00 02 50 44 LASX..2ABPX...PD 39b0: 43 58 01 00 02 50 44 53 58 01 00 01 4c 53 43 58 CX...PDSX...LSCX 39c0: 01 00 27 00 10 50 53 50 58 01 00 4f 3c 00 1e 48 ..'..PSPX..O<..H 39d0: 50 53 58 01 50 4d 53 58 01 5b 82 0b 50 58 53 58 PSX.PMSX.[..PXSX 39e0: 08 5f 41 44 52 00 08 2e 50 58 53 58 5f 52 4d 56 ._ADR...PXSX_RMV 39f0: 01 08 2e 50 58 53 58 5f 50 52 57 12 06 02 0a 09 ...PXSX_PRW..... 3a00: 0a 03 14 41 09 5f 50 52 54 00 a0 33 47 50 49 43 ...A._PRT..3GPIC 3a10: a4 12 2c 04 12 09 04 0b ff ff 00 00 0a 12 12 09 ..,............. 3a20: 04 0b ff ff 01 00 0a 13 12 0a 04 0b ff ff 0a 02 ................ 3a30: 00 0a 10 12 0a 04 0b ff ff 0a 03 00 0a 11 a1 45 ...............E 3a40: 05 a4 12 41 05 04 12 12 04 0b ff ff 00 5e 5e 2e ...A.........^^. 3a50: 4c 50 43 42 4c 4e 4b 43 00 12 12 04 0b ff ff 01 LPCBLNKC........ 3a60: 5e 5e 2e 4c 50 43 42 4c 4e 4b 44 00 12 13 04 0b ^^.LPCBLNKD..... 3a70: ff ff 0a 02 5e 5e 2e 4c 50 43 42 4c 4e 4b 41 00 ....^^.LPCBLNKA. 3a80: 12 13 04 0b ff ff 0a 03 5e 5e 2e 4c 50 43 42 4c ........^^.LPCBL 3a90: 4e 4b 42 00 5b 82 4f 11 52 50 30 34 08 5f 41 44 NKB.[.O.RP04._AD 3aa0: 52 0c 03 00 1c 00 5b 80 50 58 43 53 02 0a 40 0a R.....[.PXCS..@. 3ab0: c0 5b 81 45 04 50 58 43 53 40 00 40 09 00 0d 4c .[.E.PXCS@.@...L 3ac0: 41 53 58 01 00 32 41 42 50 58 01 00 02 50 44 43 ASX..2ABPX...PDC 3ad0: 58 01 00 02 50 44 53 58 01 00 01 4c 53 43 58 01 X...PDSX...LSCX. 3ae0: 00 27 00 10 50 53 50 58 01 00 4f 3c 00 1e 48 50 .'..PSPX..O<..HP 3af0: 53 58 01 50 4d 53 58 01 5b 82 29 50 58 53 58 08 SX.PMSX.[.)PXSX. 3b00: 5f 41 44 52 00 14 1d 5f 50 52 57 00 a0 0d 57 4b _ADR..._PRW...WK 3b10: 4c 4e a4 12 06 02 0a 09 0a 03 a1 08 a4 12 05 02 LN.............. 3b20: 0a 09 00 14 41 09 5f 50 52 54 00 a0 33 47 50 49 ....A._PRT..3GPI 3b30: 43 a4 12 2c 04 12 09 04 0b ff ff 00 00 0a 13 12 C..,............ 3b40: 09 04 0b ff ff 01 00 0a 10 12 0a 04 0b ff ff 0a ................ 3b50: 02 00 0a 11 12 0a 04 0b ff ff 0a 03 00 0a 12 a1 ................ 3b60: 45 05 a4 12 41 05 04 12 12 04 0b ff ff 00 5e 5e E...A.........^^ 3b70: 2e 4c 50 43 42 4c 4e 4b 44 00 12 12 04 0b ff ff .LPCBLNKD....... 3b80: 01 5e 5e 2e 4c 50 43 42 4c 4e 4b 41 00 12 13 04 .^^.LPCBLNKA.... 3b90: 0b ff ff 0a 02 5e 5e 2e 4c 50 43 42 4c 4e 4b 42 .....^^.LPCBLNKB 3ba0: 00 12 13 04 0b ff ff 0a 03 5e 5e 2e 4c 50 43 42 .........^^.LPCB 3bb0: 4c 4e 4b 43 00 5b 82 41 10 52 50 30 35 08 5f 41 LNKC.[.A.RP05._A 3bc0: 44 52 0c 04 00 1c 00 5b 80 50 58 43 53 02 0a 40 DR.....[.PXCS..@ 3bd0: 0a c0 5b 81 45 04 50 58 43 53 40 00 40 09 00 0d ..[.E.PXCS@.@... 3be0: 4c 41 53 58 01 00 32 41 42 50 58 01 00 02 50 44 LASX..2ABPX...PD 3bf0: 43 58 01 00 02 50 44 53 58 01 00 01 4c 53 43 58 CX...PDSX...LSCX 3c00: 01 00 27 00 10 50 53 50 58 01 00 4f 3c 00 1e 48 ..'..PSPX..O<..H 3c10: 50 53 58 01 50 4d 53 58 01 5b 82 0b 50 58 53 58 PSX.PMSX.[..PXSX 3c20: 08 5f 41 44 52 00 14 41 09 5f 50 52 54 00 a0 33 ._ADR..A._PRT..3 3c30: 47 50 49 43 a4 12 2c 04 12 09 04 0b ff ff 00 00 GPIC..,......... 3c40: 0a 10 12 09 04 0b ff ff 01 00 0a 11 12 0a 04 0b ................ 3c50: ff ff 0a 02 00 0a 12 12 0a 04 0b ff ff 0a 03 00 ................ 3c60: 0a 13 a1 45 05 a4 12 41 05 04 12 12 04 0b ff ff ...E...A........ 3c70: 00 5e 5e 2e 4c 50 43 42 4c 4e 4b 41 00 12 12 04 .^^.LPCBLNKA.... 3c80: 0b ff ff 01 5e 5e 2e 4c 50 43 42 4c 4e 4b 42 00 ....^^.LPCBLNKB. 3c90: 12 13 04 0b ff ff 0a 02 5e 5e 2e 4c 50 43 42 4c ........^^.LPCBL 3ca0: 4e 4b 43 00 12 13 04 0b ff ff 0a 03 5e 5e 2e 4c NKC.........^^.L 3cb0: 50 43 42 4c 4e 4b 44 00 5b 82 41 10 52 50 30 36 PCBLNKD.[.A.RP06 3cc0: 08 5f 41 44 52 0c 05 00 1c 00 5b 80 50 58 43 53 ._ADR.....[.PXCS 3cd0: 02 0a 40 0a c0 5b 81 45 04 50 58 43 53 40 00 40 ..@..[.E.PXCS@.@ 3ce0: 09 00 0d 4c 41 53 58 01 00 32 41 42 50 58 01 00 ...LASX..2ABPX.. 3cf0: 02 50 44 43 58 01 00 02 50 44 53 58 01 00 01 4c .PDCX...PDSX...L 3d00: 53 43 58 01 00 27 00 10 50 53 50 58 01 00 4f 3c SCX..'..PSPX..O< 3d10: 00 1e 48 50 53 58 01 50 4d 53 58 01 5b 82 0b 50 ..HPSX.PMSX.[..P 3d20: 58 53 58 08 5f 41 44 52 00 14 41 09 5f 50 52 54 XSX._ADR..A._PRT 3d30: 00 a0 33 47 50 49 43 a4 12 2c 04 12 09 04 0b ff ..3GPIC..,...... 3d40: ff 00 00 0a 11 12 09 04 0b ff ff 01 00 0a 12 12 ................ 3d50: 0a 04 0b ff ff 0a 02 00 0a 13 12 0a 04 0b ff ff ................ 3d60: 0a 03 00 0a 10 a1 45 05 a4 12 41 05 04 12 12 04 ......E...A..... 3d70: 0b ff ff 00 5e 5e 2e 4c 50 43 42 4c 4e 4b 42 00 ....^^.LPCBLNKB. 3d80: 12 12 04 0b ff ff 01 5e 5e 2e 4c 50 43 42 4c 4e .......^^.LPCBLN 3d90: 4b 43 00 12 13 04 0b ff ff 0a 02 5e 5e 2e 4c 50 KC.........^^.LP 3da0: 43 42 4c 4e 4b 44 00 12 13 04 0b ff ff 0a 03 5e CBLNKD.........^ 3db0: 5e 2e 4c 50 43 42 4c 4e 4b 41 00 5b 82 4d 06 55 ^.LPCBLNKA.[.M.U 3dc0: 53 42 31 08 5f 41 44 52 0c 00 00 1d 00 5b 80 55 SB1._ADR.....[.U 3dd0: 31 43 53 02 0a c4 0a 04 5b 81 0b 55 31 43 53 03 1CS.....[..U1CS. 3de0: 55 31 45 4e 02 08 5f 50 52 57 12 06 02 0a 03 0a U1EN.._PRW...... 3df0: 03 14 24 5f 50 53 57 01 a0 15 68 70 01 41 43 50 ..$_PSW...hp.ACP 3e00: 57 a0 0c 41 43 50 57 70 0a 03 55 31 45 4e a1 07 W..ACPWp..U1EN.. 3e10: 70 00 55 31 45 4e 14 09 5f 53 33 44 00 a4 0a 02 p.U1EN.._S3D.... 3e20: 14 09 5f 53 34 44 00 a4 0a 02 5b 82 4c 06 55 53 .._S4D....[.L.US 3e30: 42 32 08 5f 41 44 52 0c 01 00 1d 00 5b 80 55 32 B2._ADR.....[.U2 3e40: 43 53 02 0a c4 0a 04 5b 81 0b 55 32 43 53 03 55 CS.....[..U2CS.U 3e50: 32 45 4e 02 08 5f 50 52 57 12 06 02 0a 04 0a 03 2EN.._PRW....... 3e60: 14 23 5f 50 53 57 01 a0 14 68 70 01 41 43 50 57 .#_PSW...hp.ACPW 3e70: a0 0b 41 43 50 57 70 01 55 32 45 4e a1 07 70 00 ..ACPWp.U2EN..p. 3e80: 55 32 45 4e 14 09 5f 53 33 44 00 a4 0a 02 14 09 U2EN.._S3D...... 3e90: 5f 53 34 44 00 a4 0a 02 5b 82 4d 06 55 53 42 33 _S4D....[.M.USB3 3ea0: 08 5f 41 44 52 0c 02 00 1d 00 5b 80 55 32 43 53 ._ADR.....[.U2CS 3eb0: 02 0a c4 0a 04 5b 81 0b 55 32 43 53 03 55 33 45 .....[..U2CS.U3E 3ec0: 4e 02 08 5f 50 52 57 12 06 02 0a 0c 0a 03 14 24 N.._PRW........$ 3ed0: 5f 50 53 57 01 a0 15 68 70 01 41 43 50 57 a0 0c _PSW...hp.ACPW.. 3ee0: 41 43 50 57 70 0a 03 55 33 45 4e a1 07 70 00 55 ACPWp..U3EN..p.U 3ef0: 33 45 4e 14 09 5f 53 33 44 00 a4 0a 02 14 09 5f 3EN.._S3D......_ 3f00: 53 34 44 00 a4 0a 02 5b 82 4d 06 55 53 42 34 08 S4D....[.M.USB4. 3f10: 5f 41 44 52 0c 00 00 1a 00 5b 80 55 34 43 53 02 _ADR.....[.U4CS. 3f20: 0a c4 0a 04 5b 81 0b 55 34 43 53 03 55 34 45 4e ....[..U4CS.U4EN 3f30: 02 08 5f 50 52 57 12 06 02 0a 0e 0a 03 14 24 5f .._PRW........$_ 3f40: 50 53 57 01 a0 15 68 70 01 41 43 50 57 a0 0c 41 PSW...hp.ACPW..A 3f50: 43 50 57 70 0a 03 55 34 45 4e a1 07 70 00 55 34 CPWp..U4EN..p.U4 3f60: 45 4e 14 09 5f 53 33 44 00 a4 0a 02 14 09 5f 53 EN.._S3D......_S 3f70: 34 44 00 a4 0a 02 5b 82 41 06 55 53 42 35 08 5f 4D....[.A.USB5._ 3f80: 41 44 52 0c 01 00 1a 00 5b 80 55 35 43 53 02 0a ADR.....[.U5CS.. 3f90: c4 0a 04 5b 81 0b 55 35 43 53 03 55 35 45 4e 02 ...[..U5CS.U5EN. 3fa0: 14 24 5f 50 53 57 01 a0 15 68 70 01 41 43 50 57 .$_PSW...hp.ACPW 3fb0: a0 0c 41 43 50 57 70 0a 03 55 35 45 4e a1 07 70 ..ACPWp..U5EN..p 3fc0: 00 55 35 45 4e 14 09 5f 53 33 44 00 a4 0a 02 14 .U5EN.._S3D..... 3fd0: 09 5f 53 34 44 00 a4 0a 02 5b 82 4b 0a 45 48 43 ._S4D....[.K.EHC 3fe0: 31 08 5f 41 44 52 0c 07 00 1d 00 5b 80 55 37 43 1._ADR.....[.U7C 3ff0: 53 02 0a 54 0a 04 5b 81 0d 55 37 43 53 03 00 0f S..T..[..U7CS... 4000: 50 4d 45 53 01 5b 82 4f 05 48 55 42 37 08 5f 41 PMES.[.O.HUB7._A 4010: 44 52 00 5b 82 0b 50 52 54 31 08 5f 41 44 52 01 DR.[..PRT1._ADR. 4020: 5b 82 0c 50 52 54 32 08 5f 41 44 52 0a 02 5b 82 [..PRT2._ADR..[. 4030: 0c 50 52 54 33 08 5f 41 44 52 0a 03 5b 82 0c 50 .PRT3._ADR..[..P 4040: 52 54 34 08 5f 41 44 52 0a 04 5b 82 0c 50 52 54 RT4._ADR..[..PRT 4050: 35 08 5f 41 44 52 0a 05 5b 82 0c 50 52 54 36 08 5._ADR..[..PRT6. 4060: 5f 41 44 52 0a 06 08 5f 50 52 57 12 06 02 0a 0d _ADR..._PRW..... 4070: 0a 03 14 09 5f 53 33 44 00 a4 0a 02 14 09 5f 53 ...._S3D......_S 4080: 34 44 00 a4 0a 02 5b 82 4f 08 45 48 43 32 08 5f 4D....[.O.EHC2._ 4090: 41 44 52 0c 07 00 1a 00 5b 80 55 46 43 53 02 0a ADR.....[.UFCS.. 40a0: 54 0a 04 5b 81 0d 55 46 43 53 03 00 0f 50 4d 45 T..[..UFCS...PME 40b0: 53 01 5b 82 43 04 48 55 42 37 08 5f 41 44 52 00 S.[.C.HUB7._ADR. 40c0: 5b 82 0b 50 52 54 31 08 5f 41 44 52 01 5b 82 0c [..PRT1._ADR.[.. 40d0: 50 52 54 32 08 5f 41 44 52 0a 02 5b 82 0c 50 52 PRT2._ADR..[..PR 40e0: 54 33 08 5f 41 44 52 0a 03 5b 82 0c 50 52 54 34 T3._ADR..[..PRT4 40f0: 08 5f 41 44 52 0a 04 08 5f 50 52 57 12 06 02 0a ._ADR..._PRW.... 4100: 0d 0a 03 14 09 5f 53 33 44 00 a4 0a 02 14 09 5f ....._S3D......_ 4110: 53 34 44 00 a4 0a 02 5b 82 4a 06 50 43 49 42 08 S4D....[.J.PCIB. 4120: 5f 41 44 52 0c 00 00 1e 00 14 49 05 5f 50 52 54 _ADR......I._PRT 4130: 00 a0 21 47 50 49 43 a4 12 1a 02 12 0b 04 0c ff ..!GPIC......... 4140: ff 06 00 00 00 0a 16 12 0b 04 0c ff ff 06 00 01 ................ 4150: 00 0a 17 a1 2f a4 12 2c 02 12 14 04 0c ff ff 06 ..../..,........ 4160: 00 00 5e 5e 2e 4c 50 43 42 4c 4e 4b 47 00 12 14 ..^^.LPCBLNKG... 4170: 04 0c ff ff 06 00 01 5e 5e 2e 4c 50 43 42 4c 4e .......^^.LPCBLN 4180: 4b 48 00 5b 82 8d 2e 01 4c 50 43 42 08 5f 41 44 KH.[....LPCB._AD 4190: 52 0c 00 00 1f 00 5b 80 4c 50 43 30 02 0a 40 0a R.....[.LPC0..@. 41a0: c0 5b 81 4d 07 4c 50 43 30 00 00 40 10 50 41 52 .[.M.LPC0..@.PAR 41b0: 43 08 50 42 52 43 08 50 43 52 43 08 50 44 52 43 C.PBRC.PCRC.PDRC 41c0: 08 00 20 50 45 52 43 08 50 46 52 43 08 50 47 52 .. PERC.PFRC.PGR 41d0: 43 08 50 48 52 43 08 00 40 0a 43 4d 41 52 03 00 C.PHRC..@.CMAR.. 41e0: 01 43 4d 42 52 03 00 01 4c 50 54 52 02 00 06 43 .CMBR...LPTR...C 41f0: 4d 41 44 01 43 4d 42 44 01 4c 50 54 44 01 46 44 MAD.CMBD.LPTD.FD 4200: 44 44 01 00 2c 49 4f 52 32 10 00 02 4c 47 52 4d DD..,IOR2...LGRM 4210: 06 00 48 32 52 41 45 4e 01 00 0d 52 43 42 41 12 ..H2RAEN...RCBA. 4220: 5b 80 53 4d 49 30 01 0c 00 fe 00 00 0c 02 00 00 [.SMI0.......... 4230: 00 5b 81 0b 53 4d 49 30 00 53 4d 49 43 08 5b 80 .[..SMI0.SMIC.[. 4240: 53 4d 49 31 00 0c bd 2e 6e bf 0c 90 00 00 00 5b SMI1....n......[ 4250: 81 16 53 4d 49 31 00 42 43 4d 44 08 44 49 44 5f ..SMI1.BCMD.DID_ 4260: 20 49 4e 46 4f 40 40 5b 81 15 53 4d 49 31 00 01 INFO@@[..SMI1.. 4270: 01 00 00 28 49 4e 46 5f 08 49 4e 46 31 20 5b 01 ...(INF_.INF1 [. 4280: 50 53 4d 58 00 14 27 50 48 53 53 01 5b 23 50 53 PSMX..'PHSS.[#PS 4290: 4d 58 ff ff 70 0a 80 42 43 4d 44 70 68 44 49 44 MX..p..BCMDphDID 42a0: 5f 70 00 53 4d 49 43 5b 27 50 53 4d 58 5b 82 41 _p.SMIC['PSMX[.A 42b0: 0a 4c 4e 4b 41 08 5f 48 49 44 0c 41 d0 0c 0f 08 .LNKA._HID.A.... 42c0: 5f 55 49 44 01 14 0d 5f 44 49 53 08 70 0a 80 50 _UID..._DIS.p..P 42d0: 41 52 43 08 5f 50 52 53 11 09 0a 06 23 fa d4 18 ARC._PRS....#... 42e0: 79 00 14 38 5f 43 52 53 08 08 52 54 4c 41 11 09 y..8_CRS..RTLA.. 42f0: 0a 06 23 00 00 18 79 00 8b 52 54 4c 41 01 49 52 ..#...y..RTLA.IR 4300: 51 30 70 00 49 52 51 30 79 01 7b 50 41 52 43 0a Q0p.IRQ0y.{PARC. 4310: 0f 00 49 52 51 30 a4 52 54 4c 41 14 1b 5f 53 52 ..IRQ0.RTLA.._SR 4320: 53 09 8b 68 01 49 52 51 30 82 49 52 51 30 60 76 S..h.IRQ0.IRQ0`v 4330: 60 70 60 50 41 52 43 14 18 5f 53 54 41 08 a0 0c `p`PARC.._STA... 4340: 7b 50 41 52 43 0a 80 00 a4 0a 09 a1 04 a4 0a 0b {PARC........... 4350: 5b 82 42 0a 4c 4e 4b 42 08 5f 48 49 44 0c 41 d0 [.B.LNKB._HID.A. 4360: 0c 0f 08 5f 55 49 44 0a 02 14 0d 5f 44 49 53 08 ..._UID...._DIS. 4370: 70 0a 80 50 42 52 43 08 5f 50 52 53 11 09 0a 06 p..PBRC._PRS.... 4380: 23 fa d8 18 79 00 14 38 5f 43 52 53 08 08 52 54 #...y..8_CRS..RT 4390: 4c 42 11 09 0a 06 23 00 00 18 79 00 8b 52 54 4c LB....#...y..RTL 43a0: 42 01 49 52 51 30 70 00 49 52 51 30 79 01 7b 50 B.IRQ0p.IRQ0y.{P 43b0: 42 52 43 0a 0f 00 49 52 51 30 a4 52 54 4c 42 14 BRC...IRQ0.RTLB. 43c0: 1b 5f 53 52 53 09 8b 68 01 49 52 51 30 82 49 52 ._SRS..h.IRQ0.IR 43d0: 51 30 60 76 60 70 60 50 42 52 43 14 18 5f 53 54 Q0`v`p`PBRC.._ST 43e0: 41 08 a0 0c 7b 50 42 52 43 0a 80 00 a4 0a 09 a1 A...{PBRC....... 43f0: 04 a4 0a 0b 5b 82 42 0a 4c 4e 4b 43 08 5f 48 49 ....[.B.LNKC._HI 4400: 44 0c 41 d0 0c 0f 08 5f 55 49 44 0a 03 14 0d 5f D.A...._UID...._ 4410: 44 49 53 08 70 0a 80 50 43 52 43 08 5f 50 52 53 DIS.p..PCRC._PRS 4420: 11 09 0a 06 23 fa d4 18 79 00 14 38 5f 43 52 53 ....#...y..8_CRS 4430: 08 08 52 54 4c 43 11 09 0a 06 23 00 00 18 79 00 ..RTLC....#...y. 4440: 8b 52 54 4c 43 01 49 52 51 30 70 00 49 52 51 30 .RTLC.IRQ0p.IRQ0 4450: 79 01 7b 50 43 52 43 0a 0f 00 49 52 51 30 a4 52 y.{PCRC...IRQ0.R 4460: 54 4c 43 14 1b 5f 53 52 53 09 8b 68 01 49 52 51 TLC.._SRS..h.IRQ 4470: 30 82 49 52 51 30 60 76 60 70 60 50 43 52 43 14 0.IRQ0`v`p`PCRC. 4480: 18 5f 53 54 41 08 a0 0c 7b 50 43 52 43 0a 80 00 ._STA...{PCRC... 4490: a4 0a 09 a1 04 a4 0a 0b 5b 82 42 0a 4c 4e 4b 44 ........[.B.LNKD 44a0: 08 5f 48 49 44 0c 41 d0 0c 0f 08 5f 55 49 44 0a ._HID.A...._UID. 44b0: 04 14 0d 5f 44 49 53 08 70 0a 80 50 44 52 43 08 ..._DIS.p..PDRC. 44c0: 5f 50 52 53 11 09 0a 06 23 fa d8 18 79 00 14 38 _PRS....#...y..8 44d0: 5f 43 52 53 08 08 52 54 4c 44 11 09 0a 06 23 00 _CRS..RTLD....#. 44e0: 00 18 79 00 8b 52 54 4c 44 01 49 52 51 30 70 00 ..y..RTLD.IRQ0p. 44f0: 49 52 51 30 79 01 7b 50 44 52 43 0a 0f 00 49 52 IRQ0y.{PDRC...IR 4500: 51 30 a4 52 54 4c 44 14 1b 5f 53 52 53 09 8b 68 Q0.RTLD.._SRS..h 4510: 01 49 52 51 30 82 49 52 51 30 60 76 60 70 60 50 .IRQ0.IRQ0`v`p`P 4520: 44 52 43 14 18 5f 53 54 41 08 a0 0c 7b 50 44 52 DRC.._STA...{PDR 4530: 43 0a 80 00 a4 0a 09 a1 04 a4 0a 0b 5b 82 42 0a C...........[.B. 4540: 4c 4e 4b 45 08 5f 48 49 44 0c 41 d0 0c 0f 08 5f LNKE._HID.A...._ 4550: 55 49 44 0a 05 14 0d 5f 44 49 53 08 70 0a 80 50 UID...._DIS.p..P 4560: 45 52 43 08 5f 50 52 53 11 09 0a 06 23 fa d4 18 ERC._PRS....#... 4570: 79 00 14 38 5f 43 52 53 08 08 52 54 4c 45 11 09 y..8_CRS..RTLE.. 4580: 0a 06 23 00 00 18 79 00 8b 52 54 4c 45 01 49 52 ..#...y..RTLE.IR 4590: 51 30 70 00 49 52 51 30 79 01 7b 50 45 52 43 0a Q0p.IRQ0y.{PERC. 45a0: 0f 00 49 52 51 30 a4 52 54 4c 45 14 1b 5f 53 52 ..IRQ0.RTLE.._SR 45b0: 53 09 8b 68 01 49 52 51 30 82 49 52 51 30 60 76 S..h.IRQ0.IRQ0`v 45c0: 60 70 60 50 45 52 43 14 18 5f 53 54 41 08 a0 0c `p`PERC.._STA... 45d0: 7b 50 45 52 43 0a 80 00 a4 0a 09 a1 04 a4 0a 0b {PERC........... 45e0: 5b 82 42 0a 4c 4e 4b 46 08 5f 48 49 44 0c 41 d0 [.B.LNKF._HID.A. 45f0: 0c 0f 08 5f 55 49 44 0a 06 14 0d 5f 44 49 53 08 ..._UID...._DIS. 4600: 70 0a 80 50 46 52 43 08 5f 50 52 53 11 09 0a 06 p..PFRC._PRS.... 4610: 23 fa d8 18 79 00 14 38 5f 43 52 53 08 08 52 54 #...y..8_CRS..RT 4620: 4c 46 11 09 0a 06 23 00 00 18 79 00 8b 52 54 4c LF....#...y..RTL 4630: 46 01 49 52 51 30 70 00 49 52 51 30 79 01 7b 50 F.IRQ0p.IRQ0y.{P 4640: 46 52 43 0a 0f 00 49 52 51 30 a4 52 54 4c 46 14 FRC...IRQ0.RTLF. 4650: 1b 5f 53 52 53 09 8b 68 01 49 52 51 30 82 49 52 ._SRS..h.IRQ0.IR 4660: 51 30 60 76 60 70 60 50 46 52 43 14 18 5f 53 54 Q0`v`p`PFRC.._ST 4670: 41 08 a0 0c 7b 50 46 52 43 0a 80 00 a4 0a 09 a1 A...{PFRC....... 4680: 04 a4 0a 0b 5b 82 42 0a 4c 4e 4b 47 08 5f 48 49 ....[.B.LNKG._HI 4690: 44 0c 41 d0 0c 0f 08 5f 55 49 44 0a 07 14 0d 5f D.A...._UID...._ 46a0: 44 49 53 08 70 0a 80 50 47 52 43 08 5f 50 52 53 DIS.p..PGRC._PRS 46b0: 11 09 0a 06 23 fa d4 18 79 00 14 38 5f 43 52 53 ....#...y..8_CRS 46c0: 08 08 52 54 4c 47 11 09 0a 06 23 00 00 18 79 00 ..RTLG....#...y. 46d0: 8b 52 54 4c 47 01 49 52 51 30 70 00 49 52 51 30 .RTLG.IRQ0p.IRQ0 46e0: 79 01 7b 50 47 52 43 0a 0f 00 49 52 51 30 a4 52 y.{PGRC...IRQ0.R 46f0: 54 4c 47 14 1b 5f 53 52 53 09 8b 68 01 49 52 51 TLG.._SRS..h.IRQ 4700: 30 82 49 52 51 30 60 76 60 70 60 50 47 52 43 14 0.IRQ0`v`p`PGRC. 4710: 18 5f 53 54 41 08 a0 0c 7b 50 47 52 43 0a 80 00 ._STA...{PGRC... 4720: a4 0a 09 a1 04 a4 0a 0b 5b 82 42 0a 4c 4e 4b 48 ........[.B.LNKH 4730: 08 5f 48 49 44 0c 41 d0 0c 0f 08 5f 55 49 44 0a ._HID.A...._UID. 4740: 08 14 0d 5f 44 49 53 08 70 0a 80 50 48 52 43 08 ..._DIS.p..PHRC. 4750: 5f 50 52 53 11 09 0a 06 23 fa d8 18 79 00 14 38 _PRS....#...y..8 4760: 5f 43 52 53 08 08 52 54 4c 48 11 09 0a 06 23 00 _CRS..RTLH....#. 4770: 00 18 79 00 8b 52 54 4c 48 01 49 52 51 30 70 00 ..y..RTLH.IRQ0p. 4780: 49 52 51 30 79 01 7b 50 48 52 43 0a 0f 00 49 52 IRQ0y.{PHRC...IR 4790: 51 30 a4 52 54 4c 48 14 1b 5f 53 52 53 09 8b 68 Q0.RTLH.._SRS..h 47a0: 01 49 52 51 30 82 49 52 51 30 60 76 60 70 60 50 .IRQ0.IRQ0`v`p`P 47b0: 48 52 43 14 18 5f 53 54 41 08 a0 0c 7b 50 48 52 HRC.._STA...{PHR 47c0: 43 0a 80 00 a4 0a 09 a1 04 a4 0a 0b 5b 82 3d 44 C...........[.=D 47d0: 4d 41 43 08 5f 48 49 44 0c 41 d0 02 00 08 5f 43 MAC._HID.A...._C 47e0: 52 53 11 28 0a 25 47 01 00 00 00 00 01 20 47 01 RS.(.%G...... G. 47f0: 81 00 81 00 01 11 47 01 93 00 93 00 01 0d 47 01 ......G.......G. 4800: c0 00 c0 00 01 20 2a 10 01 79 00 5b 82 26 46 57 ..... *..y.[.&FW 4810: 48 44 08 5f 48 49 44 0c 25 d4 08 00 08 5f 43 52 HD._HID.%...._CR 4820: 53 11 11 0a 0e 86 09 00 00 00 00 00 ff 00 00 00 S............... 4830: 01 79 00 5b 82 40 0b 48 50 45 54 08 5f 48 49 44 .y.[.@.HPET._HID 4840: 0c 41 d0 01 03 08 5f 43 49 44 0c 41 d0 0c 01 08 .A...._CID.A.... 4850: 42 55 46 30 11 11 0a 0e 86 09 00 00 00 00 d0 fe BUF0............ 4860: 00 04 00 00 79 00 14 27 5f 53 54 41 00 a0 13 92 ....y..'_STA.... 4870: 95 4f 53 59 53 0b d1 07 a0 08 48 50 41 45 a4 0a .OSYS.....HPAE.. 4880: 0f a1 0a a0 08 48 50 41 45 a4 0a 0b a4 00 14 46 .....HPAE......F 4890: 05 5f 43 52 53 08 a0 49 04 48 50 41 45 8a 42 55 ._CRS..I.HPAE.BU 48a0: 46 30 0a 04 48 50 54 30 a0 11 93 48 50 41 53 01 F0..HPT0...HPAS. 48b0: 70 0c 00 10 d0 fe 48 50 54 30 a0 12 93 48 50 41 p.....HPT0...HPA 48c0: 53 0a 02 70 0c 00 20 d0 fe 48 50 54 30 a0 12 93 S..p.. ..HPT0... 48d0: 48 50 41 53 0a 03 70 0c 00 30 d0 fe 48 50 54 30 HPAS..p..0..HPT0 48e0: a4 42 55 46 30 5b 82 45 0a 49 50 49 43 08 5f 48 .BUF0[.E.IPIC._H 48f0: 49 44 0b 41 d0 08 5f 43 52 53 11 41 09 0a 8d 47 ID.A.._CRS.A...G 4900: 01 20 00 20 00 01 02 47 01 24 00 24 00 01 02 47 . . ...G.$.$...G 4910: 01 28 00 28 00 01 02 47 01 2c 00 2c 00 01 02 47 .(.(...G.,.,...G 4920: 01 30 00 30 00 01 02 47 01 34 00 34 00 01 02 47 .0.0...G.4.4...G 4930: 01 38 00 38 00 01 02 47 01 3c 00 3c 00 01 02 47 .8.8...G.<.<...G 4940: 01 a0 00 a0 00 01 02 47 01 a4 00 a4 00 01 02 47 .......G.......G 4950: 01 a8 00 a8 00 01 02 47 01 ac 00 ac 00 01 02 47 .......G.......G 4960: 01 b0 00 b0 00 01 02 47 01 b4 00 b4 00 01 02 47 .......G.......G 4970: 01 b8 00 b8 00 01 02 47 01 bc 00 bc 00 01 02 47 .......G.......G 4980: 01 d0 04 d0 04 01 02 22 04 00 79 00 5b 82 25 4d ......."..y.[.%M 4990: 41 54 48 08 5f 48 49 44 0c 41 d0 0c 04 08 5f 43 ATH._HID.A...._C 49a0: 52 53 11 10 0a 0d 47 01 f0 00 f0 00 01 01 22 00 RS....G.......". 49b0: 20 79 00 5b 82 4b 09 4c 44 52 43 08 5f 48 49 44 y.[.K.LDRC._HID 49c0: 0c 41 d0 0c 02 08 5f 55 49 44 0a 02 08 5f 43 52 .A...._UID..._CR 49d0: 53 11 4e 07 0a 7a 47 01 2e 00 2e 00 01 02 47 01 S.N..zG.......G. 49e0: 4e 00 4e 00 01 02 47 01 61 00 61 00 01 01 47 01 N.N...G.a.a...G. 49f0: 63 00 63 00 01 01 47 01 65 00 65 00 01 01 47 01 c.c...G.e.e...G. 4a00: 67 00 67 00 01 01 47 01 80 00 80 00 01 01 47 01 g.g...G.......G. 4a10: 92 00 92 00 01 01 47 01 b2 00 b2 00 01 02 47 01 ......G.......G. 4a20: 80 06 80 06 01 20 47 01 00 08 00 08 01 10 47 01 ..... G.......G. 4a30: 00 10 00 10 01 80 47 01 80 11 80 11 01 40 47 01 ......G......@G. 4a40: 00 fe 00 fe 01 01 47 01 00 ff 00 ff 01 80 79 00 ......G.......y. 4a50: 5b 82 25 52 54 43 5f 08 5f 48 49 44 0c 41 d0 0b [.%RTC_._HID.A.. 4a60: 00 08 5f 43 52 53 11 10 0a 0d 47 01 70 00 70 00 .._CRS....G.p.p. 4a70: 01 08 22 00 01 79 00 5b 82 2d 54 49 4d 52 08 5f .."..y.[.-TIMR._ 4a80: 48 49 44 0c 41 d0 01 00 08 5f 43 52 53 11 18 0a HID.A...._CRS... 4a90: 15 47 01 40 00 40 00 01 04 47 01 50 00 50 00 10 .G.@.@...G.P.P.. 4aa0: 04 22 01 00 79 00 5b 82 32 41 43 41 44 08 5f 48 ."..y.[.2ACAD._H 4ab0: 49 44 0d 41 43 50 49 30 30 30 33 00 08 5f 50 43 ID.ACPI0003.._PC 4ac0: 4c 12 06 01 5f 53 42 5f 14 11 5f 50 53 52 00 70 L..._SB_.._PSR.p 4ad0: 01 41 43 50 57 a4 41 43 50 57 14 1a 45 43 4f 4b .ACPW.ACPW..ECOK 4ae0: 00 a0 0f 93 5e 2e 45 43 30 5f 5a 30 30 39 01 a4 ....^.EC0_Z009.. 4af0: 01 a1 03 a4 00 5b 82 4e 6f 45 43 30 5f 08 5f 48 .....[.NoEC0_._H 4b00: 49 44 0c 41 d0 0c 09 08 5f 47 50 45 0a 1c 08 5a ID.A...._GPE...Z 4b10: 30 30 39 00 08 5f 43 52 53 11 15 0a 12 47 01 62 009.._CRS....G.b 4b20: 00 62 00 01 01 47 01 66 00 66 00 01 01 79 00 14 .b...G.f.f...y.. 4b30: 3b 5f 52 45 47 02 a0 34 93 68 0a 03 70 69 5a 30 ;_REG..4.h..piZ0 4b40: 30 39 a0 28 5b 12 5f 4f 53 49 60 70 00 42 54 44 09.([._OSI`p.BTD 4b50: 53 a0 19 5f 4f 53 49 0d 57 69 6e 64 6f 77 73 20 S.._OSI.Windows 4b60: 32 30 30 36 00 70 01 42 54 44 53 5b 80 45 52 41 2006.p.BTDS[.ERA 4b70: 4d 03 00 0a ff 5b 81 4e 2e 45 52 41 4d 11 00 40 M....[.N.ERAM..@ 4b80: 30 53 4d 50 52 08 53 4d 53 54 08 53 4d 41 44 08 0SMPR.SMST.SMAD. 4b90: 53 4d 43 4d 08 53 4d 44 30 40 10 42 43 4e 54 08 SMCM.SMD0@.BCNT. 4ba0: 53 4d 41 41 18 00 40 04 43 48 47 4d 10 43 48 47 SMAA..@.CHGM.CHG 4bb0: 53 10 45 4e 49 44 08 45 4e 49 42 08 45 4e 44 44 S.ENID.ENIB.ENDD 4bc0: 08 43 48 47 56 08 43 48 47 41 10 42 41 4c 30 01 .CHGV.CHGA.BAL0. 4bd0: 42 41 4c 31 01 42 41 4c 32 01 42 41 4c 33 01 42 BAL1.BAL2.BAL3.B 4be0: 42 43 30 01 42 42 43 31 01 42 42 43 32 01 42 42 BC0.BBC1.BBC2.BB 4bf0: 43 33 01 00 08 50 48 44 44 01 49 46 44 44 01 49 C3...PHDD.IFDD.I 4c00: 4f 44 44 01 53 48 44 44 01 53 31 32 30 01 45 46 ODD.SHDD.S120.EF 4c10: 44 44 01 43 52 54 44 01 53 50 57 52 01 53 42 54 DD.CRTD.SPWR.SBT 4c20: 4e 01 56 49 44 4f 01 56 4f 4c 44 01 56 4f 4c 55 N.VIDO.VOLD.VOLU 4c30: 01 4d 55 54 45 01 43 4f 4e 54 01 42 52 47 54 01 .MUTE.CONT.BRGT. 4c40: 48 42 54 4e 01 53 34 53 54 01 53 4b 45 59 01 42 HBTN.S4ST.SKEY.B 4c50: 4b 45 59 01 54 4f 55 50 01 46 4e 42 4e 01 4c 49 KEY.TOUP.FNBN.LI 4c60: 44 46 01 44 49 47 4d 01 55 57 41 4b 01 00 08 44 DF.DIGM.UWAK...D 4c70: 4b 53 50 01 44 4b 49 4e 01 44 4b 49 44 01 44 4b KSP.DKIN.DKID.DK 4c80: 4f 4b 01 00 04 44 4b 50 57 01 00 07 42 54 4e 53 OK...DKPW...BTNS 4c90: 08 53 31 4c 44 01 53 33 4c 44 01 56 47 41 51 01 .S1LD.S3LD.VGAQ. 4ca0: 50 43 4d 51 01 50 43 4d 52 01 41 44 50 54 01 53 PCMQ.PCMR.ADPT.S 4cb0: 4c 4c 53 01 53 59 53 37 01 50 57 41 4b 01 4d 57 LLS.SYS7.PWAK.MW 4cc0: 41 4b 01 4c 57 41 4b 01 00 05 00 28 54 43 4e 4c AK.LWAK....(TCNL 4cd0: 08 54 4d 50 49 08 54 4d 53 44 08 46 41 53 4e 04 .TMPI.TMSD.FASN. 4ce0: 46 41 53 55 04 50 43 56 4c 04 00 02 53 57 54 4f FASU.PCVL...SWTO 4cf0: 01 48 57 54 4f 01 4d 4f 44 45 01 46 41 4e 53 02 .HWTO.MODE.FANS. 4d00: 49 4e 49 54 01 46 41 4e 31 01 46 41 4e 32 01 46 INIT.FAN1.FAN2.F 4d10: 41 4e 54 01 53 4b 4e 4d 01 43 54 4d 50 08 4c 49 ANT.SKNM.CTMP.LI 4d20: 44 45 01 50 4d 45 45 01 50 57 42 45 01 52 4e 47 DE.PMEE.PWBE.RNG 4d30: 45 01 42 54 57 45 01 44 43 4b 45 01 00 02 53 4b E.BTWE.DCKE...SK 4d40: 54 58 08 53 4b 54 42 08 53 4b 54 43 08 53 4b 54 TX.SKTB.SKTC.SKT 4d50: 41 08 00 08 48 41 50 4c 02 48 41 50 52 01 00 05 A...HAPL.HAPR... 4d60: 42 54 44 54 01 42 54 50 57 01 42 54 44 53 01 42 BTDT.BTPW.BTDS.B 4d70: 54 50 53 01 42 54 53 57 01 42 54 57 4b 01 42 54 TPS.BTSW.BTWK.BT 4d80: 4c 44 01 00 01 42 52 54 53 08 43 4e 54 53 08 57 LD...BRTS.CNTS.W 4d90: 4c 41 54 01 42 54 41 54 01 57 4c 45 58 01 42 54 LAT.BTAT.WLEX.BT 4da0: 45 58 01 4b 4c 53 57 01 57 4c 4f 4b 01 00 02 50 EX.KLSW.WLOK...P 4db0: 54 49 44 08 43 50 55 54 08 45 50 4b 54 08 47 48 TID.CPUT.EPKT.GH 4dc0: 49 44 08 00 04 42 4d 46 30 03 42 54 59 30 01 42 ID...BMF0.BTY0.B 4dd0: 53 54 30 08 42 52 43 30 10 42 53 4e 30 10 42 50 ST0.BRC0.BSN0.BP 4de0: 56 30 10 42 44 56 30 10 42 44 43 30 10 42 46 43 V0.BDV0.BDC0.BFC 4df0: 30 10 47 41 55 30 08 43 59 43 30 08 42 50 43 30 0.GAU0.CYC0.BPC0 4e00: 10 42 41 43 30 10 42 41 54 30 08 42 54 57 30 10 .BAC0.BAT0.BTW0. 4e10: 42 44 4e 30 08 00 40 04 00 04 42 4d 46 31 03 42 BDN0..@...BMF1.B 4e20: 54 59 31 01 42 53 54 31 08 42 52 43 31 10 42 53 TY1.BST1.BRC1.BS 4e30: 4e 31 10 42 50 56 31 10 42 44 56 31 10 42 44 43 N1.BPV1.BDV1.BDC 4e40: 31 10 42 46 43 31 10 47 41 55 31 08 43 59 43 31 1.BFC1.GAU1.CYC1 4e50: 08 42 50 43 31 10 42 41 43 31 10 42 41 54 31 08 .BPC1.BAC1.BAT1. 4e60: 42 54 57 31 10 14 37 5f 51 31 31 00 70 0a 87 50 BTW1..7_Q11.p..P 4e70: 38 30 48 a0 13 49 47 44 53 5e 5e 5e 2e 47 46 58 80H..IGDS^^^.GFX 4e80: 30 42 52 54 4e 0a 87 a1 15 86 5e 5e 5e 2f 03 50 0BRTN.....^^^/.P 4e90: 45 47 50 56 47 41 5f 4c 43 44 5f 0a 87 14 37 5f EGPVGA_LCD_...7_ 4ea0: 51 31 32 00 70 0a 86 50 38 30 48 a0 13 49 47 44 Q12.p..P80H..IGD 4eb0: 53 5e 5e 5e 2e 47 46 58 30 42 52 54 4e 0a 86 a1 S^^^.GFX0BRTN... 4ec0: 15 86 5e 5e 5e 2f 03 50 45 47 50 56 47 41 5f 4c ..^^^/.PEGPVGA_L 4ed0: 43 44 5f 0a 86 14 40 05 5f 51 31 43 00 70 0d 3d CD_...@._Q1C.p.= 4ee0: 3d 3d 3d 3d 51 55 45 52 59 5f 31 43 3d 3d 3d 3d ====QUERY_1C==== 4ef0: 3d 00 5b 31 a0 31 56 49 44 4f a0 12 49 47 44 53 =.[1.1VIDO..IGDS 4f00: 5e 5e 5e 2e 47 46 58 30 47 48 44 53 00 a1 12 5e ^^^.GFX0GHDS...^ 4f10: 5e 5e 2f 03 50 45 47 50 56 47 41 5f 44 53 53 57 ^^/.PEGPVGA_DSSW 4f20: 70 00 56 49 44 4f 14 21 5f 51 31 44 00 70 0d 3d p.VIDO.!_Q1D.p.= 4f30: 3d 3d 3d 3d 51 55 45 52 59 5f 31 44 3d 3d 3d 3d ====QUERY_1D==== 4f40: 3d 00 5b 31 50 43 4c 4b 14 21 5f 51 31 45 00 70 =.[1PCLK.!_Q1E.p 4f50: 0d 3d 3d 3d 3d 3d 51 55 45 52 59 5f 31 45 3d 3d .=====QUERY_1E== 4f60: 3d 3d 3d 00 5b 31 50 43 4c 4b 14 39 5f 51 32 35 ===.[1PCLK.9_Q25 4f70: 00 70 0d 3d 3d 3d 3d 3d 51 55 45 52 59 5f 32 35 .p.=====QUERY_25 4f80: 3d 3d 3d 3d 3d 00 5b 31 5b 22 0b e8 03 86 5e 5e =====.[1["....^^ 4f90: 42 41 54 31 0a 81 5b 22 0b e8 03 86 5e 5e 42 41 BAT1..["....^^BA 4fa0: 54 31 0a 80 14 2f 5f 51 33 34 00 70 0d 3d 3d 3d T1.../_Q34.p.=== 4fb0: 3d 3d 51 55 45 52 59 5f 33 34 3d 3d 3d 3d 3d 00 ==QUERY_34=====. 4fc0: 5b 31 a0 11 42 4b 45 59 50 48 53 53 0a 71 70 00 [1..BKEYPHSS.qp. 4fd0: 42 4b 45 59 14 32 5f 51 33 37 00 70 0d 3d 3d 3d BKEY.2_Q37.p.=== 4fe0: 3d 3d 51 55 45 52 59 5f 33 37 3d 3d 3d 3d 3d 00 ==QUERY_37=====. 4ff0: 5b 31 86 41 43 41 44 0a 80 5b 22 0b e8 03 86 5e [1.ACAD..["....^ 5000: 5e 42 41 54 31 0a 80 14 32 5f 51 33 38 00 70 0d ^BAT1...2_Q38.p. 5010: 3d 3d 3d 3d 3d 51 55 45 52 59 5f 33 38 3d 3d 3d =====QUERY_38=== 5020: 3d 3d 00 5b 31 86 41 43 41 44 0a 80 5b 22 0b e8 ==.[1.ACAD..[".. 5030: 03 86 5e 5e 42 41 54 31 0a 80 14 29 5f 51 32 44 ..^^BAT1...)_Q2D 5040: 00 70 0d 3d 3d 3d 3d 3d 51 55 45 52 59 5f 32 44 .p.=====QUERY_2D 5050: 3d 3d 3d 3d 3d 00 5b 31 70 00 44 54 53 4d 54 52 =====.[1p.DTSMTR 5060: 41 50 0a 46 14 29 5f 51 32 45 00 70 0d 3d 3d 3d AP.F.)_Q2E.p.=== 5070: 3d 3d 51 55 45 52 59 5f 32 45 3d 3d 3d 3d 3d 00 ==QUERY_2E=====. 5080: 5b 31 70 01 44 54 53 4d 54 52 41 50 0a 46 5b 80 [1p.DTSMTRAP.F[. 5090: 43 43 4c 4b 01 0b 10 10 0a 04 5b 81 20 43 43 4c CCLK......[. CCL 50a0: 4b 03 00 01 44 55 54 59 03 54 48 45 4e 01 00 03 K...DUTY.THEN... 50b0: 46 54 54 5f 01 00 08 54 53 54 53 01 5b 80 45 43 FTT_...TSTS.[.EC 50c0: 52 4d 03 00 0a ff 5b 81 44 04 45 43 52 4d 11 00 RM....[.D.ECRM.. 50d0: 40 4a 45 52 49 42 10 45 52 42 44 08 00 48 0a 53 @JERIB.ERBD..H.S 50e0: 44 54 4d 08 46 53 53 4e 04 46 41 4e 55 04 50 54 DTM.FSSN.FANU.PT 50f0: 56 4c 03 00 04 54 54 48 52 01 00 48 06 50 4a 49 VL...TTHR..H.PJI 5100: 44 08 00 08 00 48 1d 52 46 52 44 10 5b 01 46 41 D....H.RFRD.[.FA 5110: 4d 58 00 14 22 46 41 4e 47 01 5b 23 46 41 4d 58 MX.."FANG.[#FAMX 5120: ff ff 70 68 45 52 49 42 70 45 52 42 44 60 5b 27 ..phERIBpERBD`[' 5130: 46 41 4d 58 a4 60 14 22 46 41 4e 57 02 5b 23 46 FAMX.`."FANW.[#F 5140: 41 4d 58 ff ff 70 68 45 52 49 42 70 69 45 52 42 AMX..phERIBpiERB 5150: 44 5b 27 46 41 4d 58 a4 69 14 09 54 55 56 52 01 D['FAMX.i..TUVR. 5160: a4 0a 03 14 2e 54 48 52 4f 01 a0 09 93 68 00 a4 .....THRO....h.. 5170: 54 48 45 4e a1 1d a0 09 93 68 01 a4 44 55 54 59 THEN.....h..DUTY 5180: a1 11 a0 0a 93 68 0a 02 a4 54 54 48 52 a1 04 a4 .....h...TTHR... 5190: 0a ff 14 2a 43 4c 43 4b 01 a0 10 93 68 00 70 00 ...*CLCK....h.p. 51a0: 54 48 45 4e 70 00 46 54 54 5f a1 0d 70 68 44 55 THENp.FTT_..phDU 51b0: 54 59 70 01 54 48 45 4e a4 54 48 45 4e 14 37 50 TYp.THEN.THEN.7P 51c0: 43 4c 4b 00 70 50 54 56 4c 60 a0 10 93 60 00 70 CLK.pPTVL`...`.p 51d0: 00 54 48 45 4e 70 00 46 54 54 5f a1 19 76 60 70 .THENp.FTT_..v`p 51e0: 80 60 00 61 7b 61 0a 07 61 70 61 44 55 54 59 70 .`.a{a..apaDUTYp 51f0: 01 54 48 45 4e 5b 82 4b 22 42 41 54 31 08 5f 48 .THEN[.K"BAT1._H 5200: 49 44 0c 41 d0 0c 0a 08 5f 55 49 44 01 08 5f 50 ID.A...._UID.._P 5210: 43 4c 12 06 01 5f 53 42 5f 14 39 5f 53 54 41 00 CL..._SB_.9_STA. 5220: a0 29 90 45 43 4f 4b 93 45 43 44 59 00 a0 13 5e .).ECOK.ECDY...^ 5230: 5e 2e 45 43 30 5f 42 41 4c 30 5b 22 0a 14 a4 0a ^.EC0_BAL0[".... 5240: 1f a1 08 5b 22 0a 14 a4 0a 0f a1 08 5b 22 0a 14 ...[".......[".. 5250: a4 0a 1f 14 48 10 5f 42 49 46 00 08 53 54 41 54 ....H._BIF..STAT 5260: 12 3a 0d 01 0b a0 0f 0b a0 0f 01 0b 5c 2b 0b a4 .:..........\+.. 5270: 01 0a 9c 0b 08 01 0b c4 0e 0d 50 41 33 34 36 35 ..........PA3465 5280: 55 20 00 0d 33 36 35 38 51 00 0d 4c 69 2d 49 6f U ..3658Q..Li-Io 5290: 6e 00 0d 43 4f 4d 50 41 4c 20 00 a0 4b 07 90 45 n..COMPAL ..K..E 52a0: 43 4f 4b 93 45 43 44 59 00 70 5e 5e 2e 45 43 30 COK.ECDY.p^^.EC0 52b0: 5f 42 44 4e 30 60 a0 23 93 60 0a 08 70 0a b4 88 _BDN0`.#.`..p... 52c0: 53 54 41 54 0a 06 00 70 0d 50 41 33 34 35 37 55 STAT...p.PA3457U 52d0: 20 00 88 53 54 41 54 0a 09 00 a0 24 93 60 0a 20 ..STAT....$.`. 52e0: 70 0b 02 01 88 53 54 41 54 0a 06 00 70 0d 50 41 p....STAT...p.PA 52f0: 33 34 35 37 55 20 00 88 53 54 41 54 0a 09 00 5b 3457U ..STAT...[ 5300: 22 0a 14 70 5e 5e 2e 45 43 30 5f 42 44 43 30 42 "..p^^.EC0_BDC0B 5310: 46 43 31 5b 22 0a 14 a1 12 70 0d 4c 69 2d 49 6f FC1["....p.Li-Io 5320: 6e 00 88 53 54 41 54 0a 0b 00 a0 2c 42 46 43 31 n..STAT....,BFC1 5330: 78 42 46 43 31 0a 64 60 61 77 61 0a 64 61 70 61 xBFC1.d`awa.dapa 5340: 42 46 43 31 70 61 88 53 54 41 54 01 00 70 61 88 BFC1pa.STAT..pa. 5350: 53 54 41 54 0a 02 00 a4 53 54 41 54 14 45 0c 5f STAT....STAT.E._ 5360: 42 53 54 00 08 50 42 53 54 12 10 04 00 0c ff ff BST..PBST....... 5370: ff ff 0c ff ff ff ff 0b 5c 2b 70 0b 5c 2b 63 a0 ........\+p.\+c. 5380: 38 90 45 43 4f 4b 93 45 43 44 59 00 5b 22 0a 14 8.ECOK.ECDY.[".. 5390: 70 5e 5e 2e 45 43 30 5f 42 53 54 30 42 53 54 31 p^^.EC0_BST0BST1 53a0: 5b 22 0a 14 70 5e 5e 2e 45 43 30 5f 47 41 55 30 ["..p^^.EC0_GAU0 53b0: 42 47 55 31 5b 22 0a 14 a0 15 42 46 43 31 77 42 BGU1["....BFC1wB 53c0: 47 55 31 42 46 43 31 62 78 62 0a 64 64 62 a1 09 GU1BFC1bxb.ddb.. 53d0: 77 42 47 55 31 0a 28 62 70 42 53 54 31 88 50 42 wBGU1.(bpBST1.PB 53e0: 53 54 00 00 70 00 88 50 42 53 54 01 00 70 62 88 ST..p..PBST..pb. 53f0: 50 42 53 54 0a 02 00 70 63 88 50 42 53 54 0a 03 PBST...pc.PBST.. 5400: 00 a0 1b 94 45 43 44 59 00 76 45 43 44 59 a0 0e ....ECDY.vECDY.. 5410: 93 45 43 44 59 00 86 42 41 54 31 0a 80 a4 50 42 .ECDY..BAT1...PB 5420: 53 54 5b 82 2e 50 53 32 4b 08 5f 48 49 44 0c 41 ST[..PS2K._HID.A 5430: d0 03 03 08 5f 43 52 53 11 19 0a 16 47 01 60 00 ...._CRS....G.`. 5440: 60 00 01 01 47 01 64 00 64 00 01 01 23 02 00 01 `...G.d.d...#... 5450: 79 00 5b 82 1e 50 53 32 4d 08 5f 48 49 44 0c 41 y.[..PS2M._HID.A 5460: d0 0f 13 08 5f 43 52 53 11 09 0a 06 23 00 10 01 ...._CRS....#... 5470: 79 00 5b 82 43 6a 50 41 54 41 08 5f 41 44 52 0c y.[.CjPATA._ADR. 5480: 01 00 1f 00 5b 80 50 41 43 53 02 0a 40 0a c0 5b ....[.PACS..@..[ 5490: 81 49 04 50 41 43 53 03 50 52 49 54 10 00 10 50 .I.PACS.PRIT...P 54a0: 53 49 54 04 00 1c 53 59 4e 43 04 00 0c 53 44 54 SIT...SYNC...SDT 54b0: 30 02 00 02 53 44 54 31 02 00 4a 04 49 43 52 30 0...SDT1..J.ICR0 54c0: 04 49 43 52 31 04 49 43 52 32 04 49 43 52 33 04 .ICR1.ICR2.ICR3. 54d0: 49 43 52 34 04 49 43 52 35 04 5b 82 4b 63 50 52 ICR4.ICR5.[.KcPR 54e0: 49 44 08 5f 41 44 52 00 14 40 17 5f 47 54 4d 00 ID._ADR..@._GTM. 54f0: 08 50 42 55 46 11 17 0a 14 00 00 00 00 00 00 00 .PBUF........... 5500: 00 00 00 00 00 00 00 00 00 00 00 00 00 8a 50 42 ..............PB 5510: 55 46 00 50 49 4f 30 8a 50 42 55 46 0a 04 44 4d UF.PIO0.PBUF..DM 5520: 41 30 8a 50 42 55 46 0a 08 50 49 4f 31 8a 50 42 A0.PBUF..PIO1.PB 5530: 55 46 0a 0c 44 4d 41 31 8a 50 42 55 46 0a 10 46 UF..DMA1.PBUF..F 5540: 4c 41 47 70 47 45 54 50 50 52 49 54 50 49 4f 30 LAGpGETPPRITPIO0 5550: 70 47 44 4d 41 7b 53 59 4e 43 01 00 7b 49 43 52 pGDMA{SYNC..{ICR 5560: 33 01 00 7b 49 43 52 30 01 00 53 44 54 30 7b 49 3..{ICR0..SDT0{I 5570: 43 52 31 01 00 44 4d 41 30 a0 14 93 44 4d 41 30 CR1..DMA0...DMA0 5580: 0c ff ff ff ff 70 50 49 4f 30 44 4d 41 30 a0 2e .....pPIO0DMA0.. 5590: 7b 50 52 49 54 0b 00 40 00 a0 14 93 7b 50 52 49 {PRIT..@....{PRI 55a0: 54 0a 90 00 0a 80 70 0b 84 03 50 49 4f 31 a1 0e T.....p...PIO1.. 55b0: 70 47 45 54 54 50 53 49 54 50 49 4f 31 a1 0b 70 pGETTPSITPIO1..p 55c0: 0c ff ff ff ff 50 49 4f 31 70 47 44 4d 41 7b 53 .....PIO1pGDMA{S 55d0: 59 4e 43 0a 02 00 7b 49 43 52 33 0a 02 00 7b 49 YNC...{ICR3...{I 55e0: 43 52 30 0a 02 00 53 44 54 31 7b 49 43 52 31 0a CR0...SDT1{ICR1. 55f0: 02 00 44 4d 41 31 a0 14 93 44 4d 41 31 0c ff ff ..DMA1...DMA1... 5600: ff ff 70 50 49 4f 31 44 4d 41 31 70 47 45 54 46 ..pPIO1DMA1pGETF 5610: 7b 53 59 4e 43 01 00 7b 53 59 4e 43 0a 02 00 50 {SYNC..{SYNC...P 5620: 52 49 54 46 4c 41 47 a0 2c 7b 93 50 49 4f 30 0c RITFLAG.,{.PIO0. 5630: ff ff ff ff 93 44 4d 41 30 0c ff ff ff ff 00 70 .....DMA0......p 5640: 0a 78 50 49 4f 30 70 0a 14 44 4d 41 30 70 0a 03 .xPIO0p..DMA0p.. 5650: 46 4c 41 47 a4 50 42 55 46 14 4c 2a 5f 53 54 4d FLAG.PBUF.L*_STM 5660: 03 8a 68 00 50 49 4f 30 8a 68 0a 04 44 4d 41 30 ..h.PIO0.h..DMA0 5670: 8a 68 0a 08 50 49 4f 31 8a 68 0a 0c 44 4d 41 31 .h..PIO1.h..DMA1 5680: 8a 68 0a 10 46 4c 41 47 a0 41 12 93 87 69 0b 00 .h..FLAG.A...i.. 5690: 02 7b 50 52 49 54 0b f0 c0 50 52 49 54 7b 53 59 .{PRIT...PRIT{SY 56a0: 4e 43 0a 02 53 59 4e 43 70 00 53 44 54 30 7b 49 NC..SYNCp.SDT0{I 56b0: 43 52 30 0a 02 49 43 52 30 7b 49 43 52 31 0a 02 CR0..ICR0{ICR1.. 56c0: 49 43 52 31 7b 49 43 52 33 0a 02 49 43 52 33 7b ICR1{ICR3..ICR3{ 56d0: 49 43 52 35 0a 02 49 43 52 35 8b 69 0a 62 57 34 ICR5..ICR5.i.bW4 56e0: 39 30 8b 69 0a 6a 57 35 33 30 8b 69 0a 7e 57 36 90.i.jW530.i.~W6 56f0: 33 30 8b 69 0a 80 57 36 34 30 8b 69 0a b0 57 38 30.i..W640.i..W8 5700: 38 30 8b 69 0a ba 57 39 33 30 7d 50 52 49 54 0b 80.i..W930}PRIT. 5710: 04 80 50 52 49 54 a0 1e 90 7b 46 4c 41 47 0a 02 ..PRIT...{FLAG.. 5720: 00 7b 57 34 39 30 0b 00 08 00 7d 50 52 49 54 0a .{W490....}PRIT. 5730: 02 50 52 49 54 7d 50 52 49 54 53 45 54 50 50 49 .PRIT}PRITSETPPI 5740: 4f 30 57 35 33 30 57 36 34 30 50 52 49 54 a0 4b O0W530W640PRIT.K 5750: 05 7b 46 4c 41 47 01 00 7d 53 59 4e 43 01 53 59 .{FLAG..}SYNC.SY 5760: 4e 43 70 53 44 4d 41 44 4d 41 30 53 44 54 30 a0 NCpSDMADMA0SDT0. 5770: 12 95 44 4d 41 30 0a 1e 7d 49 43 52 33 01 49 43 ..DMA0..}ICR3.IC 5780: 52 33 a0 12 95 44 4d 41 30 0a 3c 7d 49 43 52 30 R3...DMA0.<}ICR0 5790: 01 49 43 52 30 a0 14 7b 57 39 33 30 0b 00 20 00 .ICR0..{W930.. . 57a0: 7d 49 43 52 31 01 49 43 52 31 a0 4b 15 93 87 6a }ICR1.ICR1.K...j 57b0: 0b 00 02 7b 50 52 49 54 0b 0f bf 50 52 49 54 70 ...{PRIT...PRITp 57c0: 00 50 53 49 54 7b 53 59 4e 43 01 53 59 4e 43 70 .PSIT{SYNC.SYNCp 57d0: 00 53 44 54 31 7b 49 43 52 30 01 49 43 52 30 7b .SDT1{ICR0.ICR0{ 57e0: 49 43 52 31 01 49 43 52 31 7b 49 43 52 33 01 49 ICR1.ICR1{ICR3.I 57f0: 43 52 33 7b 49 43 52 35 01 49 43 52 35 8b 6a 0a CR3{ICR5.ICR5.j. 5800: 62 57 34 39 31 8b 6a 0a 6a 57 35 33 31 8b 6a 0a bW491.j.jW531.j. 5810: 7e 57 36 33 31 8b 6a 0a 80 57 36 34 31 8b 6a 0a ~W631.j..W641.j. 5820: b0 57 38 38 31 8b 6a 0a ba 57 39 33 31 7d 50 52 .W881.j..W931}PR 5830: 49 54 0b 40 80 50 52 49 54 a0 1e 90 7b 46 4c 41 IT.@.PRIT...{FLA 5840: 47 0a 08 00 7b 57 34 39 31 0b 00 08 00 7d 50 52 G...{W491....}PR 5850: 49 54 0a 20 50 52 49 54 a0 4c 04 7b 46 4c 41 47 IT. PRIT.L.{FLAG 5860: 0a 10 00 7d 50 52 49 54 0b 00 40 50 52 49 54 a0 ...}PRIT..@PRIT. 5870: 13 94 50 49 4f 31 0a f0 7d 50 52 49 54 0a 80 50 ..PIO1..}PRIT..P 5880: 52 49 54 a1 21 7d 50 52 49 54 0a 10 50 52 49 54 RIT.!}PRIT..PRIT 5890: 70 53 45 54 54 50 49 4f 31 57 35 33 31 57 36 34 pSETTPIO1W531W64 58a0: 31 50 53 49 54 a0 40 06 7b 46 4c 41 47 0a 04 00 1PSIT.@.{FLAG... 58b0: 7d 53 59 4e 43 0a 02 53 59 4e 43 70 53 44 4d 41 }SYNC..SYNCpSDMA 58c0: 44 4d 41 31 53 44 54 31 a0 13 95 44 4d 41 31 0a DMA1SDT1...DMA1. 58d0: 1e 7d 49 43 52 33 0a 02 49 43 52 33 a0 13 95 44 .}ICR3..ICR3...D 58e0: 4d 41 31 0a 3c 7d 49 43 52 30 0a 02 49 43 52 30 MA1.<}ICR0..ICR0 58f0: a0 15 7b 57 39 33 31 0b 00 20 00 7d 49 43 52 31 ..{W931.. .}ICR1 5900: 0a 02 49 43 52 31 5b 82 47 10 50 5f 44 30 08 5f ..ICR1[.G.P_D0._ 5910: 41 44 52 00 14 4a 0f 5f 47 54 46 00 08 50 49 42 ADR..J._GTF..PIB 5920: 30 11 11 0a 0e 03 00 00 00 00 a0 ef 03 00 00 00 0............... 5930: 00 a0 ef 8c 50 49 42 30 01 50 4d 44 30 8c 50 49 ....PIB0.PMD0.PI 5940: 42 30 0a 08 44 4d 44 30 a0 40 06 7b 50 52 49 54 B0..DMD0.@.{PRIT 5950: 0a 02 00 a0 13 93 7b 50 52 49 54 0a 09 00 0a 08 ......{PRIT..... 5960: 70 0a 08 50 4d 44 30 a1 41 04 70 0a 0a 50 4d 44 p..PMD0.A.p..PMD 5970: 30 7a 7b 50 52 49 54 0b 00 03 00 0a 08 60 7a 7b 0z{PRIT......`z{ 5980: 50 52 49 54 0b 00 30 00 0a 0c 61 72 60 61 62 a0 PRIT..0...ar`ab. 5990: 0c 93 0a 03 62 70 0a 0b 50 4d 44 30 a0 0c 93 0a ....bp..PMD0.... 59a0: 05 62 70 0a 0c 50 4d 44 30 a1 07 70 01 50 4d 44 .bp..PMD0..p.PMD 59b0: 30 a0 43 04 7b 53 59 4e 43 01 00 70 7d 53 44 54 0.C.{SYNC..p}SDT 59c0: 30 0a 40 00 44 4d 44 30 a0 2c 7b 49 43 52 31 01 0.@.DMD0.,{ICR1. 59d0: 00 a0 13 7b 49 43 52 30 01 00 72 44 4d 44 30 0a ...{ICR0..rDMD0. 59e0: 02 44 4d 44 30 a0 0f 7b 49 43 52 33 01 00 70 0a .DMD0..{ICR3..p. 59f0: 45 44 4d 44 30 a1 14 7d 74 7b 50 4d 44 30 0a 07 EDMD0..}t{PMD0.. 5a00: 00 0a 02 00 0a 20 44 4d 44 30 a4 50 49 42 30 5b ..... DMD0.PIB0[ 5a10: 82 46 10 50 5f 44 31 08 5f 41 44 52 01 14 49 0f .F.P_D1._ADR..I. 5a20: 5f 47 54 46 00 08 50 49 42 31 11 11 0a 0e 03 00 _GTF..PIB1...... 5a30: 00 00 00 b0 ef 03 00 00 00 00 b0 ef 8c 50 49 42 .............PIB 5a40: 31 01 50 4d 44 31 8c 50 49 42 31 0a 08 44 4d 44 1.PMD1.PIB1..DMD 5a50: 31 a0 4b 05 7b 50 52 49 54 0a 20 00 a0 13 93 7b 1.K.{PRIT. ....{ 5a60: 50 52 49 54 0a 90 00 0a 80 70 0a 08 50 4d 44 31 PRIT.....p..PMD1 5a70: a1 3c 72 7b 50 53 49 54 0a 03 00 7a 7b 50 53 49 . $TMPLOG diff $TMPLOG $FWTSTESTDIR/syntaxcheck-0001/syntaxcheck-0001.log >> $FAILURE_LOG ret=$? if [ $ret -eq 0 ]; then echo PASSED: $TEST, $NAME else echo FAILED: $TEST, $NAME fi rm $TMPLOG exit $ret fwts-test/wmi-0001/000077500000000000000000000000001231470457100141745ustar00rootroot00000000000000fwts-test/wmi-0001/acpidump-0001.log000066400000000000000000012733641231470457100170770ustar00rootroot00000000000000DSDT @ 0xdafe8000 0000: 44 53 44 54 52 02 01 00 01 8d 4c 45 4e 4f 56 4f DSDTR.....LENOVO 0010: 54 50 2d 47 32 20 20 20 10 11 00 00 49 4e 54 4c TP-G2 ....INTL 0020: 09 11 06 20 10 4f 06 5c 5f 50 52 5f 5b 83 0b 43 ... .O.\_PR_[..C 0030: 50 55 30 01 10 04 00 00 06 5b 83 0b 43 50 55 31 PU0......[..CPU1 0040: 02 10 04 00 00 06 5b 83 0b 43 50 55 32 03 10 04 ......[..CPU2... 0050: 00 00 06 5b 83 0b 43 50 55 33 04 10 04 00 00 06 ...[..CPU3...... 0060: 5b 83 0b 43 50 55 34 05 10 04 00 00 06 5b 83 0b [..CPU4......[.. 0070: 43 50 55 35 06 10 04 00 00 06 5b 83 0b 43 50 55 CPU5......[..CPU 0080: 36 07 10 04 00 00 06 5b 83 0b 43 50 55 37 08 10 6......[..CPU7.. 0090: 04 00 00 06 10 47 1a 5c 00 14 42 1a 50 4e 54 46 .....G.\..B.PNTF 00a0: 01 a0 4c 17 7b 5c 50 50 4d 46 0b 00 04 00 a0 2d ..L.{\PPMF.....- 00b0: 91 90 7b 50 44 43 30 0a 08 00 91 93 68 0a 80 93 ..{PDC0.....h... 00c0: 68 0a 82 90 7b 50 44 43 30 0a 10 00 93 68 0a 81 h...{PDC0....h.. 00d0: 86 5c 2e 5f 50 52 5f 43 50 55 30 68 a0 2d 91 90 .\._PR_CPU0h.-.. 00e0: 7b 50 44 43 31 0a 08 00 91 93 68 0a 80 93 68 0a {PDC1.....h...h. 00f0: 82 90 7b 50 44 43 31 0a 10 00 93 68 0a 81 86 5c ..{PDC1....h...\ 0100: 2e 5f 50 52 5f 43 50 55 31 68 a0 2d 91 90 7b 50 ._PR_CPU1h.-..{P 0110: 44 43 32 0a 08 00 91 93 68 0a 80 93 68 0a 82 90 DC2.....h...h... 0120: 7b 50 44 43 32 0a 10 00 93 68 0a 81 86 5c 2e 5f {PDC2....h...\._ 0130: 50 52 5f 43 50 55 32 68 a0 2d 91 90 7b 50 44 43 PR_CPU2h.-..{PDC 0140: 33 0a 08 00 91 93 68 0a 80 93 68 0a 82 90 7b 50 3.....h...h...{P 0150: 44 43 33 0a 10 00 93 68 0a 81 86 5c 2e 5f 50 52 DC3....h...\._PR 0160: 5f 43 50 55 33 68 a0 2d 91 90 7b 50 44 43 34 0a _CPU3h.-..{PDC4. 0170: 08 00 91 93 68 0a 80 93 68 0a 82 90 7b 50 44 43 ....h...h...{PDC 0180: 34 0a 10 00 93 68 0a 81 86 5c 2e 5f 50 52 5f 43 4....h...\._PR_C 0190: 50 55 34 68 a0 2d 91 90 7b 50 44 43 35 0a 08 00 PU4h.-..{PDC5... 01a0: 91 93 68 0a 80 93 68 0a 82 90 7b 50 44 43 35 0a ..h...h...{PDC5. 01b0: 10 00 93 68 0a 81 86 5c 2e 5f 50 52 5f 43 50 55 ...h...\._PR_CPU 01c0: 35 68 a0 2d 91 90 7b 50 44 43 36 0a 08 00 91 93 5h.-..{PDC6..... 01d0: 68 0a 80 93 68 0a 82 90 7b 50 44 43 36 0a 10 00 h...h...{PDC6... 01e0: 93 68 0a 81 86 5c 2e 5f 50 52 5f 43 50 55 36 68 .h...\._PR_CPU6h 01f0: a0 2d 91 90 7b 50 44 43 37 0a 08 00 91 93 68 0a .-..{PDC7.....h. 0200: 80 93 68 0a 82 90 7b 50 44 43 37 0a 10 00 93 68 ..h...{PDC7....h 0210: 0a 81 86 5c 2e 5f 50 52 5f 43 50 55 37 68 a1 1d ...\._PR_CPU7h.. 0220: a0 1b 91 93 68 0a 80 91 93 68 0a 81 93 68 0a 82 ....h....h...h.. 0230: 86 5c 2e 5f 50 52 5f 43 50 55 30 68 5b 80 4d 4e .\._PR_CPU0h[.MN 0240: 56 53 00 0c 18 d0 f9 da 0b 00 10 5b 81 40 41 4d VS.........[.@AM 0250: 4e 56 53 03 00 80 80 06 47 41 50 41 20 47 41 50 NVS.....GAPA GAP 0260: 4c 20 44 43 4b 49 20 44 43 4b 53 20 56 43 44 4c L DCKI DCKS VCDL 0270: 01 56 43 44 43 01 56 43 44 54 01 56 43 44 44 01 .VCDC.VCDT.VCDD. 0280: 00 01 56 43 53 53 01 56 43 44 42 01 56 43 49 4e ..VCSS.VCDB.VCIN 0290: 01 56 56 50 4f 08 42 52 54 4e 08 42 52 4c 56 08 .VVPO.BRTN.BRLV. 02a0: 43 44 46 4c 08 43 44 41 48 08 50 4d 4f 44 02 50 CDFL.CDAH.PMOD.P 02b0: 44 49 52 01 50 44 4d 41 01 00 04 4c 46 44 43 01 DIR.PDMA...LFDC. 02c0: 00 07 43 32 4e 41 01 43 33 4e 41 01 43 34 4e 41 ..C2NA.C3NA.C4NA 02d0: 01 43 36 4e 41 01 43 37 4e 41 01 00 03 00 08 00 .C6NA.C7NA...... 02e0: 02 00 01 4e 48 50 53 01 4e 50 4d 45 01 00 03 55 ...NHPS.NPME...U 02f0: 4f 50 54 08 42 54 49 44 20 44 50 50 30 01 44 50 OPT.BTID DPP0.DP 0300: 50 31 01 44 50 50 32 01 44 50 50 33 01 44 50 50 P1.DPP2.DPP3.DPP 0310: 34 01 44 50 50 35 01 00 02 00 08 54 43 52 54 10 4.DPP5.....TCRT. 0320: 54 50 53 56 10 54 54 43 31 10 54 54 43 32 10 54 TPSV.TTC1.TTC2.T 0330: 54 53 50 10 53 52 41 48 08 53 52 48 45 08 53 52 TSP.SRAH.SRHE.SR 0340: 45 31 08 53 52 45 32 08 53 52 45 33 08 53 52 45 E1.SRE2.SRE3.SRE 0350: 34 08 53 52 45 35 08 53 52 45 36 08 53 52 55 31 4.SRE5.SRE6.SRU1 0360: 08 53 52 55 32 08 53 52 55 33 08 53 52 55 37 08 .SRU2.SRU3.SRU7. 0370: 53 52 55 34 08 53 52 55 35 08 53 52 55 38 08 53 SRU4.SRU5.SRU8.S 0380: 52 50 42 08 53 52 4c 50 08 53 52 53 41 08 53 52 RPB.SRLP.SRSA.SR 0390: 53 4d 08 43 57 41 43 01 43 57 41 53 01 43 57 55 SM.CWAC.CWAS.CWU 03a0: 45 01 43 57 55 53 01 00 04 43 57 41 50 10 43 57 E.CWUS...CWAP.CW 03b0: 41 54 10 44 42 47 43 01 00 07 46 53 31 4c 10 46 AT.DBGC...FS1L.F 03c0: 53 31 4d 10 46 53 31 48 10 46 53 32 4c 10 46 53 S1M.FS1H.FS2L.FS 03d0: 32 4d 10 46 53 32 48 10 46 53 33 4c 10 46 53 33 2M.FS2H.FS3L.FS3 03e0: 4d 10 46 53 33 48 10 54 41 54 43 01 00 06 54 41 M.FS3H.TATC...TA 03f0: 54 4c 01 54 41 54 57 08 54 4e 46 54 04 54 4e 54 TL.TATW.TNFT.TNT 0400: 54 04 54 44 46 41 04 54 44 54 41 04 54 44 46 44 T.TDFA.TDTA.TDFD 0410: 04 54 44 54 44 04 54 43 46 41 04 54 43 54 41 04 .TDTD.TCFA.TCTA. 0420: 54 43 46 44 04 54 43 54 44 04 54 53 46 54 04 54 TCFD.TCTD.TSFT.T 0430: 53 54 54 04 54 49 54 30 08 54 43 52 30 10 54 50 STT.TIT0.TCR0.TP 0440: 53 30 10 54 49 54 31 08 54 43 52 31 10 54 50 53 S0.TIT1.TCR1.TPS 0450: 31 10 54 49 54 32 08 54 43 52 32 10 54 50 53 32 1.TIT2.TCR2.TPS2 0460: 10 54 49 46 30 08 54 49 46 31 08 54 49 46 32 08 .TIF0.TIF1.TIF2. 0470: 00 38 42 54 48 49 01 00 07 48 44 49 52 01 48 44 .8BTHI...HDIR.HD 0480: 45 48 01 48 44 53 50 01 48 44 50 50 01 48 44 55 EH.HDSP.HDPP.HDU 0490: 42 01 48 44 4d 43 01 00 02 54 50 4d 45 08 42 49 B.HDMC...TPME.BI 04a0: 44 45 04 49 44 45 54 04 00 01 44 54 53 45 01 00 DE.IDET...DTSE.. 04b0: 06 44 54 53 30 08 44 54 53 31 08 44 54 30 30 01 .DTS0.DTS1.DT00. 04c0: 44 54 30 31 01 44 54 30 32 01 44 54 30 33 01 00 DT01.DT02.DT03.. 04d0: 04 4c 49 44 42 01 43 34 57 52 01 43 34 41 43 01 .LIDB.C4WR.C4AC. 04e0: 4f 44 44 58 01 43 4d 50 52 01 49 4c 4e 46 01 50 ODDX.CMPR.ILNF.P 04f0: 4c 55 58 01 00 01 00 48 05 00 04 00 01 49 44 4d LUX....H.....IDM 0500: 4d 01 00 02 00 03 00 01 00 01 4c 49 44 53 01 00 M.........LIDS.. 0510: 02 00 08 00 04 00 04 54 43 47 30 01 54 43 47 31 .......TCG0.TCG1 0520: 01 00 06 53 57 47 50 08 49 50 4d 53 08 49 50 4d ...SWGP.IPMS.IPM 0530: 42 48 07 49 50 4d 52 18 49 50 4d 4f 18 49 50 4d BH.IPMR.IPMO.IPM 0540: 41 08 56 49 47 44 01 56 44 53 43 01 00 02 56 44 A.VIGD.VDSC...VD 0550: 53 50 01 00 03 00 18 41 53 46 54 08 50 4c 31 4c SP.....ASFT.PL1L 0560: 08 50 4c 31 4d 08 43 48 4b 43 20 43 48 4b 45 20 .PL1M.CHKC CHKE 0570: 41 54 52 42 20 00 08 50 50 43 52 08 54 50 43 52 ATRB ..PPCR.TPCR 0580: 05 00 03 00 48 07 43 54 44 50 08 50 50 43 41 08 ....H.CTDP.PPCA. 0590: 54 50 43 41 05 00 03 42 46 57 42 48 12 4f 53 50 TPCA...BFWBH.OSP 05a0: 58 01 4f 53 43 34 01 00 06 53 50 45 4e 01 53 43 X.OSC4...SPEN.SC 05b0: 52 4d 01 47 46 50 4c 01 45 54 41 55 01 49 48 42 RM.GFPL.ETAU.IHB 05c0: 43 01 41 50 4d 44 01 00 02 46 54 50 53 08 48 49 C.APMD...FTPS.HI 05d0: 53 54 08 4c 50 53 54 08 4c 57 53 54 08 00 18 4d ST.LPST.LWST...M 05e0: 54 41 55 08 00 40 10 48 50 45 54 20 50 4b 4c 49 TAU..@.HPET PKLI 05f0: 10 56 4c 43 58 10 56 4e 49 54 08 56 42 44 30 08 .VLCX.VNIT.VBD0. 0600: 56 42 44 54 40 08 56 42 50 4c 10 56 42 50 48 10 VBDT@.VBPL.VBPH. 0610: 56 42 4d 4c 08 56 42 4d 48 08 56 45 44 49 40 40 VBML.VBMH.VEDI@@ 0620: 50 44 43 49 10 49 53 43 47 20 49 53 53 50 01 49 PDCI.ISCG ISSP.I 0630: 53 57 4b 02 00 05 53 48 41 31 40 0a 46 46 44 54 SWK...SHA1@.FFDT 0640: 01 00 07 4c 57 43 50 01 4c 57 45 4e 01 00 06 55 ...LWCP.LWEN...U 0650: 53 42 52 01 00 07 41 50 53 54 08 00 08 5b 81 44 SBR...APST...[.D 0660: 09 4d 4e 56 53 01 00 80 80 05 57 49 54 4d 08 57 .MNVS.....WITM.W 0670: 53 45 4c 08 57 4c 53 30 08 57 4c 53 31 08 57 4c SEL.WLS0.WLS1.WL 0680: 53 32 08 57 4c 53 33 08 57 4c 53 34 08 57 4c 53 S2.WLS3.WLS4.WLS 0690: 35 08 57 4c 53 36 08 57 4c 53 37 08 57 4c 53 38 5.WLS6.WLS7.WLS8 06a0: 08 57 4c 53 39 08 57 4c 53 41 08 57 4c 53 42 08 .WLS9.WLSA.WLSB. 06b0: 57 4c 53 43 08 57 4c 53 44 08 57 45 4e 43 08 57 WLSC.WLSD.WENC.W 06c0: 4b 42 44 08 57 50 54 59 08 57 50 41 53 48 40 57 KBD.WPTY.WPASH@W 06d0: 50 4e 57 48 40 57 53 50 4d 08 57 53 50 53 08 57 PNWH@WSPM.WSPS.W 06e0: 53 4d 4e 08 57 53 4d 58 08 57 53 45 4e 08 57 53 SMN.WSMX.WSEN.WS 06f0: 4b 42 08 5b 81 10 4d 4e 56 53 01 00 80 00 05 44 KB.[..MNVS.....D 0700: 42 47 53 40 40 5b 80 47 4e 56 53 00 0c 18 ce f6 BGS@@[.GNVS..... 0710: da 0b c8 01 5b 81 4b 2c 47 4e 56 53 10 4f 53 59 ....[.K,GNVS.OSY 0720: 53 10 53 4d 49 46 08 50 52 4d 30 08 50 52 4d 31 S.SMIF.PRM0.PRM1 0730: 08 00 48 05 50 57 52 53 08 00 48 06 00 38 52 45 ..H.PWRS..H..8RE 0740: 56 4e 08 00 10 41 50 49 43 08 54 43 4e 54 08 50 VN...APIC.TCNT.P 0750: 43 50 30 08 50 43 50 31 08 50 50 43 4d 08 50 50 CP0.PCP1.PPCM.PP 0760: 4d 46 20 43 36 37 4c 08 00 40 05 49 47 44 53 08 MF C67L..@.IGDS. 0770: 54 4c 53 54 08 43 41 44 4c 08 50 41 44 4c 08 43 TLST.CADL.PADL.C 0780: 53 54 45 10 4e 53 54 45 10 53 53 54 45 10 4e 44 STE.NSTE.SSTE.ND 0790: 49 44 08 44 49 44 31 20 44 49 44 32 20 44 49 44 ID.DID1 DID2 DID 07a0: 33 20 44 49 44 34 20 44 49 44 35 20 4b 53 56 30 3 DID4 DID5 KSV0 07b0: 20 4b 53 56 31 08 00 38 42 4c 43 53 08 42 52 54 KSV1..8BLCS.BRT 07c0: 4c 08 00 48 07 54 50 4d 50 08 00 08 4d 4f 52 44 L..H.TPMP...MORD 07d0: 08 54 43 47 50 08 50 50 52 50 20 50 50 52 51 08 .TCGP.PPRP PPRQ. 07e0: 4c 50 50 52 08 47 54 46 30 38 47 54 46 32 38 49 LPPR.GTF08GTF28I 07f0: 44 45 4d 08 47 54 46 31 38 42 49 44 5f 08 50 4c DEM.GTF18BID_.PL 0800: 49 44 08 41 4f 41 43 08 53 4c 44 52 20 57 41 4b ID.AOAC.SLDR WAK 0810: 52 08 00 40 05 41 53 4c 42 20 49 42 54 54 08 49 R..@.ASLB IBTT.I 0820: 50 41 54 08 49 54 56 46 08 49 54 56 4d 08 49 50 PAT.ITVF.ITVM.IP 0830: 53 43 08 49 42 4c 43 08 49 42 49 41 08 49 53 53 SC.IBLC.IBIA.ISS 0840: 43 08 49 34 30 39 08 49 35 30 39 08 49 36 30 39 C.I409.I509.I609 0850: 08 49 37 30 39 08 49 50 43 46 08 49 44 4d 53 08 .I709.IPCF.IDMS. 0860: 49 46 31 45 08 48 56 43 4f 08 4e 58 44 31 20 4e IF1E.HVCO.NXD1 N 0870: 58 44 32 20 4e 58 44 33 20 4e 58 44 34 20 4e 58 XD2 NXD3 NXD4 NX 0880: 44 35 20 4e 58 44 36 20 4e 58 44 37 20 4e 58 44 D5 NXD6 NXD7 NXD 0890: 38 20 47 53 4d 49 08 50 41 56 50 08 00 08 4f 53 8 GSMI.PAVP...OS 08a0: 43 43 08 4e 45 58 50 08 53 44 47 56 08 53 44 44 CC.NEXP.SDGV.SDD 08b0: 56 08 00 30 44 53 45 4e 08 45 43 4f 4e 08 00 08 V..0DSEN.ECON... 08c0: 43 54 59 50 08 4c 30 31 43 08 56 46 4e 30 08 56 CTYP.L01C.VFN0.V 08d0: 46 4e 31 08 00 40 07 4e 56 47 41 20 4e 56 48 41 FN1..@.NVGA NVHA 08e0: 20 41 4d 44 41 20 44 49 44 36 20 44 49 44 37 20 AMDA DID6 DID7 08f0: 44 49 44 38 20 45 42 41 53 20 43 50 53 50 20 45 DID8 EBAS CPSP E 0900: 45 43 50 20 45 56 43 50 20 58 42 41 53 20 4f 42 ECP EVCP XBAS OB 0910: 53 31 20 4f 42 53 32 20 4f 42 53 33 20 4f 42 53 S1 OBS2 OBS3 OBS 0920: 34 20 4f 42 53 35 20 4f 42 53 36 20 4f 42 53 37 4 OBS5 OBS6 OBS7 0930: 20 4f 42 53 38 20 00 48 05 41 54 4d 43 08 50 54 OBS8 .H.ATMC.PT 0940: 4d 43 08 41 54 52 41 08 50 54 52 41 08 50 4e 48 MC.ATRA.PTRA.PNH 0950: 4d 20 54 42 41 42 20 54 42 41 48 20 52 54 49 50 M TBAB TBAH RTIP 0960: 08 54 53 4f 44 08 41 54 50 43 08 50 54 50 43 08 .TSOD.ATPC.PTPC. 0970: 50 46 4c 56 08 42 52 45 56 08 48 47 4d 44 08 50 PFLV.BREV.HGMD.P 0980: 57 4f 4b 08 48 4c 52 53 08 44 53 45 4c 08 45 53 WOK.HLRS.DSEL.ES 0990: 45 4c 08 50 53 45 4c 08 50 57 45 4e 08 50 52 53 EL.PSEL.PWEN.PRS 09a0: 54 08 44 50 42 4d 08 44 50 43 4d 08 44 50 44 4d T.DPBM.DPCM.DPDM 09b0: 08 41 4c 46 50 08 49 4d 4f 4e 08 50 44 54 53 08 .ALFP.IMON.PDTS. 09c0: 50 4b 47 41 08 50 41 4d 54 08 41 43 30 46 08 41 PKGA.PAMT.AC0F.A 09d0: 43 31 46 08 00 48 19 58 48 43 4d 08 58 48 50 4d C1F..H.XHCM.XHPM 09e0: 08 10 8c 51 0d 5c 5f 53 42 5f 14 4a 30 5f 49 4e ...Q.\_SB_.J0_IN 09f0: 49 00 a0 43 0f 5b 12 5c 5f 4f 53 49 60 a0 2c 5c I..C.[.\_OSI`.,\ 0a00: 5f 4f 53 49 0d 57 69 6e 64 6f 77 73 20 32 30 30 _OSI.Windows 200 0a10: 31 00 70 0a 01 5c 57 4e 54 46 70 0a 01 5c 57 58 1.p..\WNTFp..\WX 0a20: 50 46 70 0a 00 5c 57 53 50 56 a0 20 5c 5f 4f 53 PFp..\WSPV. \_OS 0a30: 49 0d 57 69 6e 64 6f 77 73 20 32 30 30 31 20 53 I.Windows 2001 S 0a40: 50 31 00 70 0a 01 5c 57 53 50 56 a0 20 5c 5f 4f P1.p..\WSPV. \_O 0a50: 53 49 0d 57 69 6e 64 6f 77 73 20 32 30 30 31 20 SI.Windows 2001 0a60: 53 50 32 00 70 0a 02 5c 57 53 50 56 a0 1c 5c 5f SP2.p..\WSPV..\_ 0a70: 4f 53 49 0d 57 69 6e 64 6f 77 73 20 32 30 30 36 OSI.Windows 2006 0a80: 00 70 0a 01 5c 57 56 49 53 a0 2e 5c 5f 4f 53 49 .p..\WVIS..\_OSI 0a90: 0d 57 69 6e 64 6f 77 73 20 32 30 30 39 00 70 0a .Windows 2009.p. 0aa0: 01 5c 57 49 4e 37 70 0a 01 5c 2f 03 5f 53 42 5f .\WIN7p..\/._SB_ 0ab0: 47 44 43 4b 58 48 4f 53 a0 15 5c 5f 4f 53 49 0d GDCKXHOS..\_OSI. 0ac0: 4c 69 6e 75 78 00 70 0a 01 5c 4c 4e 55 58 a0 17 Linux.p..\LNUX.. 0ad0: 5c 5f 4f 53 49 0d 46 72 65 65 42 53 44 00 70 0a \_OSI.FreeBSD.p. 0ae0: 01 5c 4c 4e 55 58 a1 2d a0 2b 93 5c 53 43 4d 50 .\LNUX.-.+.\SCMP 0af0: 5c 5f 4f 53 5f 0d 4d 69 63 72 6f 73 6f 66 74 20 \_OS_.Microsoft 0b00: 57 69 6e 64 6f 77 73 20 4e 54 00 00 70 0a 01 5c Windows NT..p..\ 0b10: 57 4e 54 46 a0 12 92 95 5c 5f 52 45 56 0a 02 70 WNTF....\_REV..p 0b20: 0a 01 5c 48 38 44 52 70 0a 01 5c 4f 53 49 46 70 ..\H8DRp..\OSIFp 0b30: 5c 2f 06 5f 53 42 5f 50 43 49 30 4c 50 43 5f 45 \/._SB_PCI0LPC_E 0b40: 43 5f 5f 41 43 5f 5f 5f 50 53 52 5c 50 57 52 53 C__AC___PSR\PWRS 0b50: 5c 2f 05 5f 53 42 5f 50 43 49 30 4c 50 43 5f 4d \/._SB_PCI0LPC_M 0b60: 4f 55 5f 4d 48 49 44 a0 26 5c 4c 4e 55 58 5c 2f OU_MHID.&\LNUX\/ 0b70: 05 5f 53 42 5f 50 43 49 30 4c 50 43 5f 45 43 5f ._SB_PCI0LPC_EC_ 0b80: 5f 53 41 55 4d 0a 02 5c 55 43 4d 53 0a 1c 70 5c _SAUM..\UCMS..p\ 0b90: 53 52 41 48 5c 2f 03 5f 53 42 5f 50 43 49 30 52 SRAH\/._SB_PCI0R 0ba0: 49 44 5f a0 1e 56 49 47 44 70 5c 53 52 48 45 5c ID_..VIGDp\SRHE\ 0bb0: 2f 04 5f 53 42 5f 50 43 49 30 56 49 44 5f 52 49 /._SB_PCI0VID_RI 0bc0: 44 5f a1 1a 70 5c 53 52 48 45 5c 2f 04 5f 53 42 D_..p\SRHE\/._SB 0bd0: 5f 50 43 49 30 50 45 47 5f 52 49 44 5f 70 5c 53 _PCI0PEG_RID_p\S 0be0: 52 45 31 5c 2f 04 5f 53 42 5f 50 43 49 30 45 58 RE1\/._SB_PCI0EX 0bf0: 50 31 52 49 44 5f 70 5c 53 52 45 32 5c 2f 04 5f P1RID_p\SRE2\/._ 0c00: 53 42 5f 50 43 49 30 45 58 50 32 52 49 44 5f 70 SB_PCI0EXP2RID_p 0c10: 5c 53 52 45 33 5c 2f 04 5f 53 42 5f 50 43 49 30 \SRE3\/._SB_PCI0 0c20: 45 58 50 33 52 49 44 5f 70 5c 53 52 55 37 5c 2f EXP3RID_p\SRU7\/ 0c30: 04 5f 53 42 5f 50 43 49 30 45 48 43 31 52 49 44 ._SB_PCI0EHC1RID 0c40: 5f 70 5c 53 52 55 38 5c 2f 04 5f 53 42 5f 50 43 _p\SRU8\/._SB_PC 0c50: 49 30 45 48 43 32 52 49 44 5f 70 5c 53 52 4c 50 I0EHC2RID_p\SRLP 0c60: 5c 2f 04 5f 53 42 5f 50 43 49 30 4c 50 43 5f 52 \/._SB_PCI0LPC_R 0c70: 49 44 5f 70 5c 53 52 53 41 5c 2f 04 5f 53 42 5f ID_p\SRSA\/._SB_ 0c80: 50 43 49 30 53 41 54 31 52 49 44 5f 70 5c 53 52 PCI0SAT1RID_p\SR 0c90: 53 4d 5c 2f 04 5f 53 42 5f 50 43 49 30 53 4d 42 SM\/._SB_PCI0SMB 0ca0: 55 52 49 44 5f a0 48 04 56 44 53 50 70 5c 56 48 URID_.H.VDSPp\VH 0cb0: 59 42 0a 05 0a 00 61 a0 36 7b 61 0a 80 00 a0 1a YB....a.6{a..... 0cc0: 5c 57 49 4e 37 a0 13 92 93 7b 61 0a 03 00 0a 03 \WIN7....{a..... 0cd0: 5c 56 48 59 42 0a 06 0a 03 a1 14 a0 12 93 7b 61 \VHYB.........{a 0ce0: 0a 03 00 0a 03 5c 56 48 59 42 0a 06 0a 02 5c 55 .....\VHYB....\U 0cf0: 43 4d 53 0a 1d 5b 82 4b 11 4c 4e 4b 41 08 5f 48 CMS..[.K.LNKA._H 0d00: 49 44 0c 41 d0 0c 0f 08 5f 55 49 44 0a 01 14 28 ID.A...._UID...( 0d10: 5f 53 54 41 00 a0 1c 92 56 50 49 52 5c 2f 04 5f _STA....VPIR\/._ 0d20: 53 42 5f 50 43 49 30 4c 50 43 5f 50 49 52 41 a4 SB_PCI0LPC_PIRA. 0d30: 0a 09 a1 04 a4 0a 0b 08 5f 50 52 53 11 09 0a 06 ........_PRS.... 0d40: 23 f8 0e 18 79 00 14 2f 5f 44 49 53 00 7d 5c 2f #...y../_DIS.}\/ 0d50: 04 5f 53 42 5f 50 43 49 30 4c 50 43 5f 50 49 52 ._SB_PCI0LPC_PIR 0d60: 41 0a 80 5c 2f 04 5f 53 42 5f 50 43 49 30 4c 50 A..\/._SB_PCI0LP 0d70: 43 5f 50 49 52 41 08 42 55 46 41 11 09 0a 06 23 C_PIRA.BUFA....# 0d80: 00 00 18 79 00 8b 42 55 46 41 0a 01 49 52 41 31 ...y..BUFA..IRA1 0d90: 14 3a 5f 43 52 53 00 7b 5c 2f 04 5f 53 42 5f 50 .:_CRS.{\/._SB_P 0da0: 43 49 30 4c 50 43 5f 50 49 52 41 0a 8f 60 a0 0e CI0LPC_PIRA..`.. 0db0: 56 50 49 52 60 79 0a 01 60 49 52 41 31 a1 08 70 VPIR`y..`IRA1..p 0dc0: 0a 00 49 52 41 31 a4 42 55 46 41 14 46 04 5f 53 ..IRA1.BUFA.F._S 0dd0: 52 53 01 8b 68 0a 01 49 52 41 32 82 49 52 41 32 RS..h..IRA2.IRA2 0de0: 60 7b 5c 2f 04 5f 53 42 5f 50 43 49 30 4c 50 43 `{\/._SB_PCI0LPC 0df0: 5f 50 49 52 41 0a 70 61 7d 61 76 60 61 70 61 5c _PIRA.pa}av`apa\ 0e00: 2f 04 5f 53 42 5f 50 43 49 30 4c 50 43 5f 50 49 /._SB_PCI0LPC_PI 0e10: 52 41 5b 82 4b 11 4c 4e 4b 42 08 5f 48 49 44 0c RA[.K.LNKB._HID. 0e20: 41 d0 0c 0f 08 5f 55 49 44 0a 02 14 28 5f 53 54 A...._UID...(_ST 0e30: 41 00 a0 1c 92 56 50 49 52 5c 2f 04 5f 53 42 5f A....VPIR\/._SB_ 0e40: 50 43 49 30 4c 50 43 5f 50 49 52 42 a4 0a 09 a1 PCI0LPC_PIRB.... 0e50: 04 a4 0a 0b 08 5f 50 52 53 11 09 0a 06 23 f8 0e ....._PRS....#.. 0e60: 18 79 00 14 2f 5f 44 49 53 00 7d 5c 2f 04 5f 53 .y../_DIS.}\/._S 0e70: 42 5f 50 43 49 30 4c 50 43 5f 50 49 52 42 0a 80 B_PCI0LPC_PIRB.. 0e80: 5c 2f 04 5f 53 42 5f 50 43 49 30 4c 50 43 5f 50 \/._SB_PCI0LPC_P 0e90: 49 52 42 08 42 55 46 42 11 09 0a 06 23 00 00 18 IRB.BUFB....#... 0ea0: 79 00 8b 42 55 46 42 0a 01 49 52 42 31 14 3a 5f y..BUFB..IRB1.:_ 0eb0: 43 52 53 00 7b 5c 2f 04 5f 53 42 5f 50 43 49 30 CRS.{\/._SB_PCI0 0ec0: 4c 50 43 5f 50 49 52 42 0a 8f 60 a0 0e 56 50 49 LPC_PIRB..`..VPI 0ed0: 52 60 79 0a 01 60 49 52 42 31 a1 08 70 0a 00 49 R`y..`IRB1..p..I 0ee0: 52 42 31 a4 42 55 46 42 14 46 04 5f 53 52 53 01 RB1.BUFB.F._SRS. 0ef0: 8b 68 0a 01 49 52 42 32 82 49 52 42 32 60 7b 5c .h..IRB2.IRB2`{\ 0f00: 2f 04 5f 53 42 5f 50 43 49 30 4c 50 43 5f 50 49 /._SB_PCI0LPC_PI 0f10: 52 42 0a 70 61 7d 61 76 60 61 70 61 5c 2f 04 5f RB.pa}av`apa\/._ 0f20: 53 42 5f 50 43 49 30 4c 50 43 5f 50 49 52 42 5b SB_PCI0LPC_PIRB[ 0f30: 82 4b 11 4c 4e 4b 43 08 5f 48 49 44 0c 41 d0 0c .K.LNKC._HID.A.. 0f40: 0f 08 5f 55 49 44 0a 03 14 28 5f 53 54 41 00 a0 .._UID...(_STA.. 0f50: 1c 92 56 50 49 52 5c 2f 04 5f 53 42 5f 50 43 49 ..VPIR\/._SB_PCI 0f60: 30 4c 50 43 5f 50 49 52 43 a4 0a 09 a1 04 a4 0a 0LPC_PIRC....... 0f70: 0b 08 5f 50 52 53 11 09 0a 06 23 f8 0e 18 79 00 .._PRS....#...y. 0f80: 14 2f 5f 44 49 53 00 7d 5c 2f 04 5f 53 42 5f 50 ./_DIS.}\/._SB_P 0f90: 43 49 30 4c 50 43 5f 50 49 52 43 0a 80 5c 2f 04 CI0LPC_PIRC..\/. 0fa0: 5f 53 42 5f 50 43 49 30 4c 50 43 5f 50 49 52 43 _SB_PCI0LPC_PIRC 0fb0: 08 42 55 46 43 11 09 0a 06 23 00 00 18 79 00 8b .BUFC....#...y.. 0fc0: 42 55 46 43 0a 01 49 52 43 31 14 3a 5f 43 52 53 BUFC..IRC1.:_CRS 0fd0: 00 7b 5c 2f 04 5f 53 42 5f 50 43 49 30 4c 50 43 .{\/._SB_PCI0LPC 0fe0: 5f 50 49 52 43 0a 8f 60 a0 0e 56 50 49 52 60 79 _PIRC..`..VPIR`y 0ff0: 0a 01 60 49 52 43 31 a1 08 70 0a 00 49 52 43 31 ..`IRC1..p..IRC1 1000: a4 42 55 46 43 14 46 04 5f 53 52 53 01 8b 68 0a .BUFC.F._SRS..h. 1010: 01 49 52 43 32 82 49 52 43 32 60 7b 5c 2f 04 5f .IRC2.IRC2`{\/._ 1020: 53 42 5f 50 43 49 30 4c 50 43 5f 50 49 52 43 0a SB_PCI0LPC_PIRC. 1030: 70 61 7d 61 76 60 61 70 61 5c 2f 04 5f 53 42 5f pa}av`apa\/._SB_ 1040: 50 43 49 30 4c 50 43 5f 50 49 52 43 5b 82 4b 11 PCI0LPC_PIRC[.K. 1050: 4c 4e 4b 44 08 5f 48 49 44 0c 41 d0 0c 0f 08 5f LNKD._HID.A...._ 1060: 55 49 44 0a 04 14 28 5f 53 54 41 00 a0 1c 92 56 UID...(_STA....V 1070: 50 49 52 5c 2f 04 5f 53 42 5f 50 43 49 30 4c 50 PIR\/._SB_PCI0LP 1080: 43 5f 50 49 52 44 a4 0a 09 a1 04 a4 0a 0b 08 5f C_PIRD........._ 1090: 50 52 53 11 09 0a 06 23 f8 0e 18 79 00 14 2f 5f PRS....#...y../_ 10a0: 44 49 53 00 7d 5c 2f 04 5f 53 42 5f 50 43 49 30 DIS.}\/._SB_PCI0 10b0: 4c 50 43 5f 50 49 52 44 0a 80 5c 2f 04 5f 53 42 LPC_PIRD..\/._SB 10c0: 5f 50 43 49 30 4c 50 43 5f 50 49 52 44 08 42 55 _PCI0LPC_PIRD.BU 10d0: 46 44 11 09 0a 06 23 00 00 18 79 00 8b 42 55 46 FD....#...y..BUF 10e0: 44 0a 01 49 52 44 31 14 3a 5f 43 52 53 00 7b 5c D..IRD1.:_CRS.{\ 10f0: 2f 04 5f 53 42 5f 50 43 49 30 4c 50 43 5f 50 49 /._SB_PCI0LPC_PI 1100: 52 44 0a 8f 60 a0 0e 56 50 49 52 60 79 0a 01 60 RD..`..VPIR`y..` 1110: 49 52 44 31 a1 08 70 0a 00 49 52 44 31 a4 42 55 IRD1..p..IRD1.BU 1120: 46 44 14 46 04 5f 53 52 53 01 8b 68 0a 01 49 52 FD.F._SRS..h..IR 1130: 44 32 82 49 52 44 32 60 7b 5c 2f 04 5f 53 42 5f D2.IRD2`{\/._SB_ 1140: 50 43 49 30 4c 50 43 5f 50 49 52 44 0a 70 61 7d PCI0LPC_PIRD.pa} 1150: 61 76 60 61 70 61 5c 2f 04 5f 53 42 5f 50 43 49 av`apa\/._SB_PCI 1160: 30 4c 50 43 5f 50 49 52 44 5b 82 4b 11 4c 4e 4b 0LPC_PIRD[.K.LNK 1170: 45 08 5f 48 49 44 0c 41 d0 0c 0f 08 5f 55 49 44 E._HID.A...._UID 1180: 0a 05 14 28 5f 53 54 41 00 a0 1c 92 56 50 49 52 ...(_STA....VPIR 1190: 5c 2f 04 5f 53 42 5f 50 43 49 30 4c 50 43 5f 50 \/._SB_PCI0LPC_P 11a0: 49 52 45 a4 0a 09 a1 04 a4 0a 0b 08 5f 50 52 53 IRE........._PRS 11b0: 11 09 0a 06 23 f8 0e 18 79 00 14 2f 5f 44 49 53 ....#...y../_DIS 11c0: 00 7d 5c 2f 04 5f 53 42 5f 50 43 49 30 4c 50 43 .}\/._SB_PCI0LPC 11d0: 5f 50 49 52 45 0a 80 5c 2f 04 5f 53 42 5f 50 43 _PIRE..\/._SB_PC 11e0: 49 30 4c 50 43 5f 50 49 52 45 08 42 55 46 45 11 I0LPC_PIRE.BUFE. 11f0: 09 0a 06 23 00 00 18 79 00 8b 42 55 46 45 0a 01 ...#...y..BUFE.. 1200: 49 52 45 31 14 3a 5f 43 52 53 00 7b 5c 2f 04 5f IRE1.:_CRS.{\/._ 1210: 53 42 5f 50 43 49 30 4c 50 43 5f 50 49 52 45 0a SB_PCI0LPC_PIRE. 1220: 8f 60 a0 0e 56 50 49 52 60 79 0a 01 60 49 52 45 .`..VPIR`y..`IRE 1230: 31 a1 08 70 0a 00 49 52 45 31 a4 42 55 46 45 14 1..p..IRE1.BUFE. 1240: 46 04 5f 53 52 53 01 8b 68 0a 01 49 52 45 32 82 F._SRS..h..IRE2. 1250: 49 52 45 32 60 7b 5c 2f 04 5f 53 42 5f 50 43 49 IRE2`{\/._SB_PCI 1260: 30 4c 50 43 5f 50 49 52 45 0a 70 61 7d 61 76 60 0LPC_PIRE.pa}av` 1270: 61 70 61 5c 2f 04 5f 53 42 5f 50 43 49 30 4c 50 apa\/._SB_PCI0LP 1280: 43 5f 50 49 52 45 5b 82 4b 11 4c 4e 4b 46 08 5f C_PIRE[.K.LNKF._ 1290: 48 49 44 0c 41 d0 0c 0f 08 5f 55 49 44 0a 06 14 HID.A...._UID... 12a0: 28 5f 53 54 41 00 a0 1c 92 56 50 49 52 5c 2f 04 (_STA....VPIR\/. 12b0: 5f 53 42 5f 50 43 49 30 4c 50 43 5f 50 49 52 46 _SB_PCI0LPC_PIRF 12c0: a4 0a 09 a1 04 a4 0a 0b 08 5f 50 52 53 11 09 0a ........._PRS... 12d0: 06 23 f8 0e 18 79 00 14 2f 5f 44 49 53 00 7d 5c .#...y../_DIS.}\ 12e0: 2f 04 5f 53 42 5f 50 43 49 30 4c 50 43 5f 50 49 /._SB_PCI0LPC_PI 12f0: 52 46 0a 80 5c 2f 04 5f 53 42 5f 50 43 49 30 4c RF..\/._SB_PCI0L 1300: 50 43 5f 50 49 52 46 08 42 55 46 46 11 09 0a 06 PC_PIRF.BUFF.... 1310: 23 00 00 18 79 00 8b 42 55 46 46 0a 01 49 52 46 #...y..BUFF..IRF 1320: 31 14 3a 5f 43 52 53 00 7b 5c 2f 04 5f 53 42 5f 1.:_CRS.{\/._SB_ 1330: 50 43 49 30 4c 50 43 5f 50 49 52 46 0a 8f 60 a0 PCI0LPC_PIRF..`. 1340: 0e 56 50 49 52 60 79 0a 01 60 49 52 46 31 a1 08 .VPIR`y..`IRF1.. 1350: 70 0a 00 49 52 46 31 a4 42 55 46 46 14 46 04 5f p..IRF1.BUFF.F._ 1360: 53 52 53 01 8b 68 0a 01 49 52 46 32 82 49 52 46 SRS..h..IRF2.IRF 1370: 32 60 7b 5c 2f 04 5f 53 42 5f 50 43 49 30 4c 50 2`{\/._SB_PCI0LP 1380: 43 5f 50 49 52 46 0a 70 61 7d 61 76 60 61 70 61 C_PIRF.pa}av`apa 1390: 5c 2f 04 5f 53 42 5f 50 43 49 30 4c 50 43 5f 50 \/._SB_PCI0LPC_P 13a0: 49 52 46 5b 82 4b 11 4c 4e 4b 47 08 5f 48 49 44 IRF[.K.LNKG._HID 13b0: 0c 41 d0 0c 0f 08 5f 55 49 44 0a 07 14 28 5f 53 .A...._UID...(_S 13c0: 54 41 00 a0 1c 92 56 50 49 52 5c 2f 04 5f 53 42 TA....VPIR\/._SB 13d0: 5f 50 43 49 30 4c 50 43 5f 50 49 52 47 a4 0a 09 _PCI0LPC_PIRG... 13e0: a1 04 a4 0a 0b 08 5f 50 52 53 11 09 0a 06 23 f8 ......_PRS....#. 13f0: 0e 18 79 00 14 2f 5f 44 49 53 00 7d 5c 2f 04 5f ..y../_DIS.}\/._ 1400: 53 42 5f 50 43 49 30 4c 50 43 5f 50 49 52 47 0a SB_PCI0LPC_PIRG. 1410: 80 5c 2f 04 5f 53 42 5f 50 43 49 30 4c 50 43 5f .\/._SB_PCI0LPC_ 1420: 50 49 52 47 08 42 55 46 47 11 09 0a 06 23 00 00 PIRG.BUFG....#.. 1430: 18 79 00 8b 42 55 46 47 0a 01 49 52 47 31 14 3a .y..BUFG..IRG1.: 1440: 5f 43 52 53 00 7b 5c 2f 04 5f 53 42 5f 50 43 49 _CRS.{\/._SB_PCI 1450: 30 4c 50 43 5f 50 49 52 47 0a 8f 60 a0 0e 56 50 0LPC_PIRG..`..VP 1460: 49 52 60 79 0a 01 60 49 52 47 31 a1 08 70 0a 00 IR`y..`IRG1..p.. 1470: 49 52 47 31 a4 42 55 46 47 14 46 04 5f 53 52 53 IRG1.BUFG.F._SRS 1480: 01 8b 68 0a 01 49 52 47 32 82 49 52 47 32 60 7b ..h..IRG2.IRG2`{ 1490: 5c 2f 04 5f 53 42 5f 50 43 49 30 4c 50 43 5f 50 \/._SB_PCI0LPC_P 14a0: 49 52 47 0a 70 61 7d 61 76 60 61 70 61 5c 2f 04 IRG.pa}av`apa\/. 14b0: 5f 53 42 5f 50 43 49 30 4c 50 43 5f 50 49 52 47 _SB_PCI0LPC_PIRG 14c0: 5b 82 4b 11 4c 4e 4b 48 08 5f 48 49 44 0c 41 d0 [.K.LNKH._HID.A. 14d0: 0c 0f 08 5f 55 49 44 0a 08 14 28 5f 53 54 41 00 ..._UID...(_STA. 14e0: a0 1c 92 56 50 49 52 5c 2f 04 5f 53 42 5f 50 43 ...VPIR\/._SB_PC 14f0: 49 30 4c 50 43 5f 50 49 52 48 a4 0a 09 a1 04 a4 I0LPC_PIRH...... 1500: 0a 0b 08 5f 50 52 53 11 09 0a 06 23 f8 0e 18 79 ..._PRS....#...y 1510: 00 14 2f 5f 44 49 53 00 7d 5c 2f 04 5f 53 42 5f ../_DIS.}\/._SB_ 1520: 50 43 49 30 4c 50 43 5f 50 49 52 48 0a 80 5c 2f PCI0LPC_PIRH..\/ 1530: 04 5f 53 42 5f 50 43 49 30 4c 50 43 5f 50 49 52 ._SB_PCI0LPC_PIR 1540: 48 08 42 55 46 48 11 09 0a 06 23 00 00 18 79 00 H.BUFH....#...y. 1550: 8b 42 55 46 48 0a 01 49 52 48 31 14 3a 5f 43 52 .BUFH..IRH1.:_CR 1560: 53 00 7b 5c 2f 04 5f 53 42 5f 50 43 49 30 4c 50 S.{\/._SB_PCI0LP 1570: 43 5f 50 49 52 48 0a 8f 60 a0 0e 56 50 49 52 60 C_PIRH..`..VPIR` 1580: 79 0a 01 60 49 52 48 31 a1 08 70 0a 00 49 52 48 y..`IRH1..p..IRH 1590: 31 a4 42 55 46 48 14 46 04 5f 53 52 53 01 8b 68 1.BUFH.F._SRS..h 15a0: 0a 01 49 52 48 32 82 49 52 48 32 60 7b 5c 2f 04 ..IRH2.IRH2`{\/. 15b0: 5f 53 42 5f 50 43 49 30 4c 50 43 5f 50 49 52 48 _SB_PCI0LPC_PIRH 15c0: 0a 70 61 7d 61 76 60 61 70 61 5c 2f 04 5f 53 42 .pa}av`apa\/._SB 15d0: 5f 50 43 49 30 4c 50 43 5f 50 49 52 48 14 39 56 _PCI0LPC_PIRH.9V 15e0: 50 49 52 01 70 0a 01 60 a0 0a 7b 68 0a 80 00 70 PIR.p..`..{h...p 15f0: 0a 00 60 a1 21 7b 68 0a 0f 61 a0 09 95 61 0a 03 ..`.!{h..a...a.. 1600: 70 0a 00 60 a1 10 a0 0e 91 93 61 0a 08 93 61 0a p..`......a...a. 1610: 0d 70 0a 00 60 a4 60 5b 82 4f 47 4d 45 4d 5f 08 .p..`.`[.OGMEM_. 1620: 5f 48 49 44 0c 41 d0 0c 01 08 4d 45 4d 53 11 42 _HID.A....MEMS.B 1630: 0d 0a ce 86 09 00 01 00 00 00 00 00 00 0a 00 86 ................ 1640: 09 00 00 00 00 0c 00 00 00 00 00 86 09 00 00 00 ................ 1650: 40 0c 00 00 00 00 00 86 09 00 00 00 80 0c 00 00 @............... 1660: 00 00 00 86 09 00 00 00 c0 0c 00 00 00 00 00 86 ................ 1670: 09 00 00 00 00 0d 00 00 00 00 00 86 09 00 00 00 ................ 1680: 40 0d 00 00 00 00 00 86 09 00 00 00 80 0d 00 00 @............... 1690: 00 00 00 86 09 00 00 00 c0 0d 00 00 00 00 00 86 ................ 16a0: 09 00 00 00 00 0e 00 00 00 00 00 86 09 00 00 00 ................ 16b0: 40 0e 00 00 00 00 00 86 09 00 00 00 80 0e 00 00 @............... 16c0: 00 00 00 86 09 00 00 00 c0 0e 00 00 00 00 00 86 ................ 16d0: 09 00 00 00 00 0f 00 00 00 01 00 86 09 00 01 00 ................ 16e0: 00 10 00 00 00 ee 01 86 09 00 00 00 00 c0 fe 00 ................ 16f0: 00 14 00 86 09 00 00 00 c0 d4 fe 00 40 2b 01 79 ............@+.y 1700: 00 8a 4d 45 4d 53 0a 14 4d 43 30 4c 8a 4d 45 4d ..MEMS..MC0L.MEM 1710: 53 0a 20 4d 43 34 4c 8a 4d 45 4d 53 0a 2c 4d 43 S. MC4L.MEMS.,MC 1720: 38 4c 8a 4d 45 4d 53 0a 38 4d 43 43 4c 8a 4d 45 8L.MEMS.8MCCL.ME 1730: 4d 53 0a 44 4d 44 30 4c 8a 4d 45 4d 53 0a 50 4d MS.DMD0L.MEMS.PM 1740: 44 34 4c 8a 4d 45 4d 53 0a 5c 4d 44 38 4c 8a 4d D4L.MEMS.\MD8L.M 1750: 45 4d 53 0a 68 4d 44 43 4c 8a 4d 45 4d 53 0a 74 EMS.hMDCL.MEMS.t 1760: 4d 45 30 4c 8a 4d 45 4d 53 0a 80 4d 45 34 4c 8a ME0L.MEMS..ME4L. 1770: 4d 45 4d 53 0a 8c 4d 45 38 4c 8a 4d 45 4d 53 0a MEMS..ME8L.MEMS. 1780: 98 4d 45 43 4c 8d 4d 45 4d 53 0a 78 4d 43 30 57 .MECL.MEMS.xMC0W 1790: 8d 4d 45 4d 53 0a d8 4d 43 34 57 8d 4d 45 4d 53 .MEMS..MC4W.MEMS 17a0: 0b 38 01 4d 43 38 57 8d 4d 45 4d 53 0b 98 01 4d .8.MC8W.MEMS...M 17b0: 43 43 57 8d 4d 45 4d 53 0b f8 01 4d 44 30 57 8d CCW.MEMS...MD0W. 17c0: 4d 45 4d 53 0b 58 02 4d 44 34 57 8d 4d 45 4d 53 MEMS.X.MD4W.MEMS 17d0: 0b b8 02 4d 44 38 57 8d 4d 45 4d 53 0b 18 03 4d ...MD8W.MEMS...M 17e0: 44 43 57 8d 4d 45 4d 53 0b 78 03 4d 45 30 57 8d DCW.MEMS.x.ME0W. 17f0: 4d 45 4d 53 0b d8 03 4d 45 34 57 8d 4d 45 4d 53 MEMS...ME4W.MEMS 1800: 0b 38 04 4d 45 38 57 8d 4d 45 4d 53 0b 98 04 4d .8.ME8W.MEMS...M 1810: 45 43 57 8a 4d 45 4d 53 0a ac 4d 45 42 31 8a 4d ECW.MEMS..MEB1.M 1820: 45 4d 53 0a b0 4d 45 4c 31 8a 4d 45 4d 53 0a bc EMS..MEL1.MEMS.. 1830: 4d 45 4c 32 8a 4d 45 4d 53 0a c8 4d 45 4c 33 14 MEL2.MEMS..MEL3. 1840: 48 25 5f 43 52 53 00 7b 5c 2f 03 5f 53 42 5f 50 H%_CRS.{\/._SB_P 1850: 43 49 30 50 41 4d 31 0a 03 60 a0 18 60 70 0b 00 CI0PAM1..`..`p.. 1860: 40 4d 43 30 4c a0 0d 7b 60 0a 02 00 70 0a 01 4d @MC0L..{`...p..M 1870: 43 30 57 7b 5c 2f 03 5f 53 42 5f 50 43 49 30 50 C0W{\/._SB_PCI0P 1880: 41 4d 31 0a 30 60 a0 18 60 70 0b 00 40 4d 43 34 AM1.0`..`p..@MC4 1890: 4c a0 0d 7b 60 0a 20 00 70 0a 01 4d 43 34 57 7b L..{`. .p..MC4W{ 18a0: 5c 2f 03 5f 53 42 5f 50 43 49 30 50 41 4d 32 0a \/._SB_PCI0PAM2. 18b0: 03 60 a0 18 60 70 0b 00 40 4d 43 38 4c a0 0d 7b .`..`p..@MC8L..{ 18c0: 60 0a 02 00 70 0a 01 4d 43 38 57 7b 5c 2f 03 5f `...p..MC8W{\/._ 18d0: 53 42 5f 50 43 49 30 50 41 4d 32 0a 30 60 a0 18 SB_PCI0PAM2.0`.. 18e0: 60 70 0b 00 40 4d 43 43 4c a0 0d 7b 60 0a 20 00 `p..@MCCL..{`. . 18f0: 70 0a 01 4d 43 43 57 7b 5c 2f 03 5f 53 42 5f 50 p..MCCW{\/._SB_P 1900: 43 49 30 50 41 4d 33 0a 03 60 a0 18 60 70 0b 00 CI0PAM3..`..`p.. 1910: 40 4d 44 30 4c a0 0d 7b 60 0a 02 00 70 0a 01 4d @MD0L..{`...p..M 1920: 44 30 57 7b 5c 2f 03 5f 53 42 5f 50 43 49 30 50 D0W{\/._SB_PCI0P 1930: 41 4d 33 0a 30 60 a0 18 60 70 0b 00 40 4d 44 34 AM3.0`..`p..@MD4 1940: 4c a0 0d 7b 60 0a 20 00 70 0a 01 4d 44 34 57 7b L..{`. .p..MD4W{ 1950: 5c 2f 03 5f 53 42 5f 50 43 49 30 50 41 4d 34 0a \/._SB_PCI0PAM4. 1960: 03 60 a0 18 60 70 0b 00 40 4d 44 38 4c a0 0d 7b .`..`p..@MD8L..{ 1970: 60 0a 02 00 70 0a 01 4d 44 38 57 7b 5c 2f 03 5f `...p..MD8W{\/._ 1980: 53 42 5f 50 43 49 30 50 41 4d 34 0a 30 60 a0 18 SB_PCI0PAM4.0`.. 1990: 60 70 0b 00 40 4d 44 43 4c a0 0d 7b 60 0a 20 00 `p..@MDCL..{`. . 19a0: 70 0a 01 4d 44 43 57 7b 5c 2f 03 5f 53 42 5f 50 p..MDCW{\/._SB_P 19b0: 43 49 30 50 41 4d 35 0a 03 60 a0 18 60 70 0b 00 CI0PAM5..`..`p.. 19c0: 40 4d 45 30 4c a0 0d 7b 60 0a 02 00 70 0a 01 4d @ME0L..{`...p..M 19d0: 45 30 57 7b 5c 2f 03 5f 53 42 5f 50 43 49 30 50 E0W{\/._SB_PCI0P 19e0: 41 4d 35 0a 30 60 a0 18 60 70 0b 00 40 4d 45 34 AM5.0`..`p..@ME4 19f0: 4c a0 0d 7b 60 0a 20 00 70 0a 01 4d 45 34 57 7b L..{`. .p..ME4W{ 1a00: 5c 2f 03 5f 53 42 5f 50 43 49 30 50 41 4d 36 0a \/._SB_PCI0PAM6. 1a10: 03 60 a0 18 60 70 0b 00 40 4d 45 38 4c a0 0d 7b .`..`p..@ME8L..{ 1a20: 60 0a 02 00 70 0a 01 4d 45 38 57 7b 5c 2f 03 5f `...p..ME8W{\/._ 1a30: 53 42 5f 50 43 49 30 50 41 4d 36 0a 30 60 a0 18 SB_PCI0PAM6.0`.. 1a40: 60 70 0b 00 40 4d 45 43 4c a0 0d 7b 60 0a 20 00 `p..@MECL..{`. . 1a50: 70 0a 01 4d 45 43 57 74 5c 4d 45 4d 58 4d 45 42 p..MECWt\MEMXMEB 1a60: 31 4d 45 4c 31 a0 2d 92 93 5c 2f 05 5f 53 42 5f 1MEL1.-..\/._SB_ 1a70: 50 43 49 30 4c 50 43 5f 54 50 4d 5f 5f 53 54 41 PCI0LPC_TPM__STA 1a80: 0a 0f 70 0c 00 00 40 01 4d 45 4c 32 70 0a 00 4d ..p...@.MEL2p..M 1a90: 45 4c 33 a4 4d 45 4d 53 5b 82 48 10 4c 49 44 5f EL3.MEMS[.H.LID_ 1aa0: 08 5f 48 49 44 0c 41 d0 0c 0d 14 46 05 5f 4c 49 ._HID.A....F._LI 1ab0: 44 00 a0 49 04 90 93 5c 49 4c 4e 46 0a 00 93 5c D..I...\ILNF...\ 1ac0: 50 4c 55 58 0a 00 a0 1e 5c 48 38 44 52 a4 5c 2f PLUX....\H8DR.\/ 1ad0: 05 5f 53 42 5f 50 43 49 30 4c 50 43 5f 45 43 5f ._SB_PCI0LPC_EC_ 1ae0: 5f 48 50 4c 44 a1 16 a0 0f 7b 5c 52 42 45 43 0a _HPLD....{\RBEC. 1af0: 46 0a 04 00 a4 0a 01 a1 04 a4 0a 00 a1 04 a4 0a F............... 1b00: 01 14 1f 5f 50 52 57 00 a0 0e 5c 4c 57 43 50 a4 ..._PRW...\LWCP. 1b10: 12 06 02 0a 1d 0a 04 a1 09 a4 12 06 02 0a 1d 0a ................ 1b20: 03 14 40 08 5f 50 53 57 01 a0 3f 5c 48 38 44 52 ..@._PSW..?\H8DR 1b30: a0 1c 68 70 0a 01 5c 2f 05 5f 53 42 5f 50 43 49 ..hp..\/._SB_PCI 1b40: 30 4c 50 43 5f 45 43 5f 5f 48 57 4c 4f a1 1b 70 0LPC_EC__HWLO..p 1b50: 0a 00 5c 2f 05 5f 53 42 5f 50 43 49 30 4c 50 43 ..\/._SB_PCI0LPC 1b60: 5f 45 43 5f 5f 48 57 4c 4f a1 1c a0 0d 68 5c 4d _EC__HWLO....h\M 1b70: 42 45 43 0a 32 0a ff 0a 04 a1 0c 5c 4d 42 45 43 BEC.2......\MBEC 1b80: 0a 32 0a fb 0a 00 a0 1b 5c 4c 57 43 50 a0 0a 68 .2......\LWCP..h 1b90: 70 0a 01 5c 4c 57 45 4e a1 09 70 0a 00 5c 4c 57 p..\LWEN..p..\LW 1ba0: 45 4e 5b 82 44 08 53 4c 50 42 08 5f 48 49 44 0c EN[.D.SLPB._HID. 1bb0: 41 d0 0c 0e 14 0e 5f 50 52 57 00 a4 12 06 02 0a A....._PRW...... 1bc0: 1d 0a 03 14 44 06 5f 50 53 57 01 a0 3f 5c 48 38 ....D._PSW..?\H8 1bd0: 44 52 a0 1c 68 70 0a 01 5c 2f 05 5f 53 42 5f 50 DR..hp..\/._SB_P 1be0: 43 49 30 4c 50 43 5f 45 43 5f 5f 48 57 46 4e a1 CI0LPC_EC__HWFN. 1bf0: 1b 70 0a 00 5c 2f 05 5f 53 42 5f 50 43 49 30 4c .p..\/._SB_PCI0L 1c00: 50 43 5f 45 43 5f 5f 48 57 46 4e a1 1c a0 0d 68 PC_EC__HWFN....h 1c10: 5c 4d 42 45 43 0a 32 0a ff 0a 10 a1 0c 5c 4d 42 \MBEC.2......\MB 1c20: 45 43 0a 32 0a ef 0a 00 10 4e 19 5c 00 08 55 50 EC.2.....N.\..UP 1c30: 43 30 12 0a 04 0a ff 0a 00 0a 00 0a 00 08 50 4c C0............PL 1c40: 44 30 11 13 0a 10 81 00 00 00 00 00 00 00 91 12 D0.............. 1c50: 00 00 03 00 00 00 08 55 50 43 31 12 0a 04 0a ff .......UPC1..... 1c60: 0a 00 0a 00 0a 00 08 50 4c 44 31 11 13 0a 10 81 .......PLD1..... 1c70: 00 00 00 00 00 00 00 91 12 00 00 03 00 00 00 08 ................ 1c80: 55 50 43 32 12 0a 04 0a ff 0a ff 0a 00 0a 00 08 UPC2............ 1c90: 50 4c 44 32 11 13 0a 10 81 00 00 00 00 00 00 00 PLD2............ 1ca0: 33 1c 00 00 03 00 00 00 08 55 50 43 33 12 0a 04 3........UPC3... 1cb0: 0a ff 0a 02 0a 00 0a 00 08 50 4c 44 33 11 13 0a .........PLD3... 1cc0: 10 81 00 00 00 00 00 00 00 48 1d 00 00 00 00 00 .........H...... 1cd0: 00 08 55 50 43 34 12 0a 04 0a ff 0a 00 0a 00 0a ..UPC4.......... 1ce0: 00 08 50 4c 44 34 11 13 0a 10 81 00 00 00 00 00 ..PLD4.......... 1cf0: 00 00 69 0c 00 00 03 00 00 00 08 55 50 43 35 12 ..i........UPC5. 1d00: 0a 04 0a ff 0a 02 0a 00 0a 00 08 50 4c 44 35 11 ...........PLD5. 1d10: 13 0a 10 81 00 00 00 00 00 00 00 19 12 00 00 03 ................ 1d20: 00 00 00 08 55 50 43 36 12 0a 04 0a 00 0a ff 0a ....UPC6........ 1d30: 00 0a 00 08 50 4c 44 36 11 13 0a 10 81 00 00 00 ....PLD6........ 1d40: 00 00 00 00 30 1c 00 00 00 00 00 00 08 55 50 43 ....0........UPC 1d50: 37 12 0a 04 0a ff 0a ff 0a 00 0a 00 08 50 4c 44 7............PLD 1d60: 37 11 13 0a 10 81 00 00 00 00 00 00 00 33 1c 00 7............3.. 1d70: 00 03 00 00 00 08 55 50 43 39 12 0a 04 0a ff 0a ......UPC9...... 1d80: 00 0a 00 0a 00 08 50 4c 44 39 11 13 0a 10 81 00 ......PLD9...... 1d90: 00 00 00 00 00 00 59 12 00 00 03 00 00 00 08 55 ......Y........U 1da0: 50 43 49 12 0a 04 0a ff 0a ff 0a 00 0a 00 08 50 PCI............P 1db0: 4c 44 49 11 13 0a 10 81 00 00 00 00 00 00 00 30 LDI............0 1dc0: 1c 00 00 00 00 00 00 5b 82 81 e6 06 50 43 49 30 .......[....PCI0 1dd0: 08 5f 42 42 4e 0a 00 08 5f 41 44 52 0a 00 08 52 ._BBN..._ADR...R 1de0: 49 44 5f 0a 00 08 5f 53 33 44 0a 02 08 4c 52 52 ID_..._S3D...LRR 1df0: 54 12 47 1e 16 12 15 04 0c ff ff 01 00 0a 00 5c T.G............\ 1e00: 2e 5f 53 42 5f 4c 4e 4b 41 0a 00 12 15 04 0c ff ._SB_LNKA....... 1e10: ff 02 00 0a 00 5c 2e 5f 53 42 5f 4c 4e 4b 41 0a .....\._SB_LNKA. 1e20: 00 12 15 04 0c ff ff 14 00 0a 00 5c 2e 5f 53 42 ...........\._SB 1e30: 5f 4c 4e 4b 41 0a 00 12 15 04 0c ff ff 16 00 0a _LNKA........... 1e40: 00 5c 2e 5f 53 42 5f 4c 4e 4b 41 0a 00 12 15 04 .\._SB_LNKA..... 1e50: 0c ff ff 16 00 0a 01 5c 2e 5f 53 42 5f 4c 4e 4b .......\._SB_LNK 1e60: 44 0a 00 12 15 04 0c ff ff 16 00 0a 02 5c 2e 5f D............\._ 1e70: 53 42 5f 4c 4e 4b 43 0a 00 12 15 04 0c ff ff 16 SB_LNKC......... 1e80: 00 0a 03 5c 2e 5f 53 42 5f 4c 4e 4b 42 0a 00 12 ...\._SB_LNKB... 1e90: 15 04 0c ff ff 19 00 0a 00 5c 2e 5f 53 42 5f 4c .........\._SB_L 1ea0: 4e 4b 45 0a 00 12 15 04 0c ff ff 1a 00 0a 00 5c NKE............\ 1eb0: 2e 5f 53 42 5f 4c 4e 4b 41 0a 00 12 15 04 0c ff ._SB_LNKA....... 1ec0: ff 1b 00 0a 00 5c 2e 5f 53 42 5f 4c 4e 4b 47 0a .....\._SB_LNKG. 1ed0: 00 12 15 04 0c ff ff 1c 00 0a 00 5c 2e 5f 53 42 ...........\._SB 1ee0: 5f 4c 4e 4b 41 0a 00 12 15 04 0c ff ff 1c 00 0a _LNKA........... 1ef0: 01 5c 2e 5f 53 42 5f 4c 4e 4b 42 0a 00 12 15 04 .\._SB_LNKB..... 1f00: 0c ff ff 1c 00 0a 02 5c 2e 5f 53 42 5f 4c 4e 4b .......\._SB_LNK 1f10: 43 0a 00 12 15 04 0c ff ff 1c 00 0a 03 5c 2e 5f C............\._ 1f20: 53 42 5f 4c 4e 4b 44 0a 00 12 15 04 0c ff ff 1d SB_LNKD......... 1f30: 00 0a 00 5c 2e 5f 53 42 5f 4c 4e 4b 48 0a 00 12 ...\._SB_LNKH... 1f40: 15 04 0c ff ff 1d 00 0a 01 5c 2e 5f 53 42 5f 4c .........\._SB_L 1f50: 4e 4b 44 0a 00 12 15 04 0c ff ff 1d 00 0a 02 5c NKD............\ 1f60: 2e 5f 53 42 5f 4c 4e 4b 41 0a 00 12 15 04 0c ff ._SB_LNKA....... 1f70: ff 1d 00 0a 03 5c 2e 5f 53 42 5f 4c 4e 4b 43 0a .....\._SB_LNKC. 1f80: 00 12 15 04 0c ff ff 1f 00 0a 00 5c 2e 5f 53 42 ...........\._SB 1f90: 5f 4c 4e 4b 46 0a 00 12 15 04 0c ff ff 1f 00 0a _LNKF........... 1fa0: 01 5c 2e 5f 53 42 5f 4c 4e 4b 44 0a 00 12 15 04 .\._SB_LNKD..... 1fb0: 0c ff ff 1f 00 0a 02 5c 2e 5f 53 42 5f 4c 4e 4b .......\._SB_LNK 1fc0: 43 0a 00 12 15 04 0c ff ff 1f 00 0a 03 5c 2e 5f C............\._ 1fd0: 53 42 5f 4c 4e 4b 41 0a 00 08 41 52 52 54 12 47 SB_LNKA...ARRT.G 1fe0: 13 16 12 0d 04 0c ff ff 01 00 0a 00 0a 00 0a 10 ................ 1ff0: 12 0d 04 0c ff ff 02 00 0a 00 0a 00 0a 10 12 0d ................ 2000: 04 0c ff ff 14 00 0a 00 0a 00 0a 10 12 0d 04 0c ................ 2010: ff ff 16 00 0a 00 0a 00 0a 10 12 0d 04 0c ff ff ................ 2020: 16 00 0a 01 0a 00 0a 13 12 0d 04 0c ff ff 16 00 ................ 2030: 0a 02 0a 00 0a 12 12 0d 04 0c ff ff 16 00 0a 03 ................ 2040: 0a 00 0a 11 12 0d 04 0c ff ff 19 00 0a 00 0a 00 ................ 2050: 0a 14 12 0d 04 0c ff ff 1a 00 0a 00 0a 00 0a 10 ................ 2060: 12 0d 04 0c ff ff 1b 00 0a 00 0a 00 0a 16 12 0d ................ 2070: 04 0c ff ff 1c 00 0a 00 0a 00 0a 10 12 0d 04 0c ................ 2080: ff ff 1c 00 0a 01 0a 00 0a 11 12 0d 04 0c ff ff ................ 2090: 1c 00 0a 02 0a 00 0a 12 12 0d 04 0c ff ff 1c 00 ................ 20a0: 0a 03 0a 00 0a 13 12 0d 04 0c ff ff 1d 00 0a 00 ................ 20b0: 0a 00 0a 17 12 0d 04 0c ff ff 1d 00 0a 01 0a 00 ................ 20c0: 0a 13 12 0d 04 0c ff ff 1d 00 0a 02 0a 00 0a 10 ................ 20d0: 12 0d 04 0c ff ff 1d 00 0a 03 0a 00 0a 12 12 0d ................ 20e0: 04 0c ff ff 1f 00 0a 00 0a 00 0a 15 12 0d 04 0c ................ 20f0: ff ff 1f 00 0a 01 0a 00 0a 13 12 0d 04 0c ff ff ................ 2100: 1f 00 0a 02 0a 00 0a 12 12 0d 04 0c ff ff 1f 00 ................ 2110: 0a 03 0a 00 0a 10 14 19 5f 50 52 54 00 a0 0b 5c ........_PRT...\ 2120: 47 50 49 43 a4 41 52 52 54 a1 06 a4 4c 52 52 54 GPIC.ARRT...LRRT 2130: 08 5f 48 49 44 0c 41 d0 0a 08 08 5f 43 49 44 0c ._HID.A...._CID. 2140: 41 d0 0a 03 5b 80 4d 48 43 53 02 0a 40 0a c0 5b A...[.MHCS..@..[ 2150: 81 36 4d 48 43 53 03 00 40 20 50 41 4d 30 08 50 .6MHCS..@ PAM0.P 2160: 41 4d 31 08 50 41 4d 32 08 50 41 4d 33 08 50 41 AM1.PAM2.PAM3.PA 2170: 4d 34 08 50 41 4d 35 08 50 41 4d 36 08 00 48 1a M4.PAM5.PAM6..H. 2180: 00 14 54 4c 55 44 0c 08 5f 43 52 53 11 45 1c 0b ..TLUD.._CRS.E.. 2190: c0 01 88 0d 00 02 0c 00 00 00 00 00 ff 00 00 00 ................ 21a0: 00 01 47 01 f8 0c f8 0c 01 08 88 0d 00 01 0c 03 ..G............. 21b0: 00 00 00 00 f7 0c 00 00 f8 0c 88 0d 00 01 0c 03 ................ 21c0: 00 00 00 0d ff ff 00 00 00 f3 87 17 00 00 0c 03 ................ 21d0: 00 00 00 00 00 00 0a 00 ff ff 0b 00 00 00 00 00 ................ 21e0: 00 00 02 00 87 17 00 00 0c 03 00 00 00 00 00 00 ................ 21f0: 0c 00 ff 3f 0c 00 00 00 00 00 00 40 00 00 87 17 ...?.......@.... 2200: 00 00 0c 03 00 00 00 00 00 40 0c 00 ff 7f 0c 00 .........@...... 2210: 00 00 00 00 00 40 00 00 87 17 00 00 0c 03 00 00 .....@.......... 2220: 00 00 00 80 0c 00 ff bf 0c 00 00 00 00 00 00 40 ...............@ 2230: 00 00 87 17 00 00 0c 03 00 00 00 00 00 c0 0c 00 ................ 2240: ff ff 0c 00 00 00 00 00 00 40 00 00 87 17 00 00 .........@...... 2250: 0c 03 00 00 00 00 00 00 0d 00 ff 3f 0d 00 00 00 ...........?.... 2260: 00 00 00 40 00 00 87 17 00 00 0c 03 00 00 00 00 ...@............ 2270: 00 40 0d 00 ff 7f 0d 00 00 00 00 00 00 40 00 00 .@...........@.. 2280: 87 17 00 00 0c 03 00 00 00 00 00 80 0d 00 ff bf ................ 2290: 0d 00 00 00 00 00 00 40 00 00 87 17 00 00 0c 03 .......@........ 22a0: 00 00 00 00 00 c0 0d 00 ff ff 0d 00 00 00 00 00 ................ 22b0: 00 40 00 00 87 17 00 00 0c 03 00 00 00 00 00 00 .@.............. 22c0: 0e 00 ff 3f 0e 00 00 00 00 00 00 40 00 00 87 17 ...?.......@.... 22d0: 00 00 0c 03 00 00 00 00 00 40 0e 00 ff 7f 0e 00 .........@...... 22e0: 00 00 00 00 00 40 00 00 87 17 00 00 0c 03 00 00 .....@.......... 22f0: 00 00 00 80 0e 00 ff bf 0e 00 00 00 00 00 00 40 ...............@ 2300: 00 00 87 17 00 00 0c 03 00 00 00 00 00 c0 0e 00 ................ 2310: ff ff 0e 00 00 00 00 00 00 40 00 00 87 17 00 00 .........@...... 2320: 0c 03 00 00 00 00 00 00 10 00 ff ff bf fe 00 00 ................ 2330: 00 00 00 00 b0 fe 87 17 00 00 0c 03 00 00 00 00 ................ 2340: 00 00 d4 fe ff bf d4 fe 00 00 00 00 00 c0 00 00 ................ 2350: 79 00 8a 5f 43 52 53 0a 68 43 30 4c 4e 8a 5f 43 y.._CRS.hC0LN._C 2360: 52 53 0a 82 43 34 4c 4e 8a 5f 43 52 53 0a 9c 43 RS..C4LN._CRS..C 2370: 38 4c 4e 8a 5f 43 52 53 0a b6 43 43 4c 4e 8a 5f 8LN._CRS..CCLN._ 2380: 43 52 53 0a d0 44 30 4c 4e 8a 5f 43 52 53 0a ea CRS..D0LN._CRS.. 2390: 44 34 4c 4e 8a 5f 43 52 53 0b 04 01 44 38 4c 4e D4LN._CRS...D8LN 23a0: 8a 5f 43 52 53 0b 1e 01 44 43 4c 4e 8a 5f 43 52 ._CRS...DCLN._CR 23b0: 53 0b 38 01 45 30 4c 4e 8a 5f 43 52 53 0b 52 01 S.8.E0LN._CRS.R. 23c0: 45 34 4c 4e 8a 5f 43 52 53 0b 6c 01 45 38 4c 4e E4LN._CRS.l.E8LN 23d0: 8a 5f 43 52 53 0b 86 01 45 43 4c 4e 8a 5f 43 52 ._CRS...ECLN._CR 23e0: 53 0b 94 01 58 58 4d 4e 8a 5f 43 52 53 0b 98 01 S...XXMN._CRS... 23f0: 58 58 4d 58 8a 5f 43 52 53 0b a0 01 58 58 4c 4e XXMX._CRS...XXLN 2400: 8a 5f 43 52 53 0b ae 01 46 34 4d 4e 8a 5f 43 52 ._CRS...F4MN._CR 2410: 53 0b b2 01 46 34 4d 58 8a 5f 43 52 53 0b ba 01 S...F4MX._CRS... 2420: 46 34 4c 4e 8b 5f 43 52 53 0a 0a 42 30 4d 58 8b F4LN._CRS..B0MX. 2430: 5f 43 52 53 0a 0e 42 30 4c 4e 14 4e 12 5f 49 4e _CRS..B0LN.N._IN 2440: 49 08 70 0a 3f 42 30 4d 58 70 72 0a 3f 0a 01 00 I.p.?B0MXpr.?... 2450: 42 30 4c 4e a0 11 92 5c 4f 53 49 46 5c 2e 5f 53 B0LN...\OSIF\._S 2460: 42 5f 5f 49 4e 49 79 54 4c 55 44 0a 14 60 70 60 B__INIyTLUD..`p` 2470: 5c 4d 45 4d 58 70 60 58 58 4d 4e 72 74 58 58 4d \MEMXp`XXMNrtXXM 2480: 58 58 58 4d 4e 00 0a 01 58 58 4c 4e a0 10 93 5c XXXMN...XXLN...\ 2490: 54 50 4d 50 0a 00 70 0a 00 46 34 4c 4e a0 10 7b TPMP..p..F4LN..{ 24a0: 50 41 4d 31 0a 03 00 70 0a 00 43 30 4c 4e a0 10 PAM1...p..C0LN.. 24b0: 7b 50 41 4d 31 0a 30 00 70 0a 00 43 34 4c 4e a0 {PAM1.0.p..C4LN. 24c0: 10 7b 50 41 4d 32 0a 03 00 70 0a 00 43 38 4c 4e .{PAM2...p..C8LN 24d0: a0 10 7b 50 41 4d 32 0a 30 00 70 0a 00 43 43 4c ..{PAM2.0.p..CCL 24e0: 4e a0 10 7b 50 41 4d 33 0a 03 00 70 0a 00 44 30 N..{PAM3...p..D0 24f0: 4c 4e a0 10 7b 50 41 4d 33 0a 30 00 70 0a 00 44 LN..{PAM3.0.p..D 2500: 34 4c 4e a0 10 7b 50 41 4d 34 0a 03 00 70 0a 00 4LN..{PAM4...p.. 2510: 44 38 4c 4e a0 10 7b 50 41 4d 34 0a 30 00 70 0a D8LN..{PAM4.0.p. 2520: 00 44 43 4c 4e a0 10 7b 50 41 4d 35 0a 03 00 70 .DCLN..{PAM5...p 2530: 0a 00 45 30 4c 4e a0 10 7b 50 41 4d 35 0a 30 00 ..E0LN..{PAM5.0. 2540: 70 0a 00 45 34 4c 4e a0 10 7b 50 41 4d 36 0a 03 p..E4LN..{PAM6.. 2550: 00 70 0a 00 45 38 4c 4e a0 10 7b 50 41 4d 36 0a .p..E8LN..{PAM6. 2560: 30 00 70 0a 00 45 43 4c 4e 08 53 55 50 50 0a 00 0.p..ECLN.SUPP.. 2570: 08 43 54 52 4c 0a 00 14 4d 2b 5f 4f 53 43 04 8a .CTRL...M+_OSC.. 2580: 6b 0a 00 43 44 57 31 8a 6b 0a 04 43 44 57 32 8a k..CDW1.k..CDW2. 2590: 6b 0a 08 43 44 57 33 a0 2c 5c 2f 04 5f 53 42 5f k..CDW3.,\/._SB_ 25a0: 50 43 49 30 58 48 43 49 43 55 49 44 68 a4 5c 2f PCI0XHCICUIDh.\/ 25b0: 04 5f 53 42 5f 50 43 49 30 58 48 43 49 50 4f 53 ._SB_PCI0XHCIPOS 25c0: 43 69 6a 6b a0 41 26 93 68 11 13 0a 10 5b 4d db Cijk.A&.h....[M. 25d0: 33 f7 1f 1c 40 96 57 74 41 c0 3d d7 66 70 43 44 3...@.WtA.=.fpCD 25e0: 57 32 53 55 50 50 70 43 44 57 33 43 54 52 4c 7b W2SUPPpCDW3CTRL{ 25f0: 43 54 52 4c 0a 0d 43 54 52 4c a0 49 1f 92 7b 43 CTRL..CTRL.I..{C 2600: 44 57 31 0a 01 00 a0 4a 0c 7b 43 54 52 4c 0a 01 DW1....J.{CTRL.. 2610: 00 a0 33 92 5c 56 49 47 44 70 0a 00 5c 2f 04 5f ..3.\VIGDp..\/._ 2620: 53 42 5f 50 43 49 30 50 45 47 5f 48 50 47 50 70 SB_PCI0PEG_HPGPp 2630: 0a 00 5c 2f 04 5f 53 42 5f 50 43 49 30 50 45 47 ..\/._SB_PCI0PEG 2640: 5f 47 4d 47 50 70 0a 00 5c 2f 04 5f 53 42 5f 50 _GMGPp..\/._SB_P 2650: 43 49 30 45 58 50 31 48 50 43 45 70 0a 01 5c 2f CI0EXP1HPCEp..\/ 2660: 04 5f 53 42 5f 50 43 49 30 45 58 50 31 48 50 43 ._SB_PCI0EXP1HPC 2670: 53 70 0a 01 5c 2f 04 5f 53 42 5f 50 43 49 30 45 Sp..\/._SB_PCI0E 2680: 58 50 31 50 44 43 5f 70 0a 00 5c 2f 04 5f 53 42 XP1PDC_p..\/._SB 2690: 5f 50 43 49 30 45 58 50 33 48 50 43 45 70 0a 01 _PCI0EXP3HPCEp.. 26a0: 5c 2f 04 5f 53 42 5f 50 43 49 30 45 58 50 33 48 \/._SB_PCI0EXP3H 26b0: 50 43 53 70 0a 01 5c 2f 04 5f 53 42 5f 50 43 49 PCSp..\/._SB_PCI 26c0: 30 45 58 50 33 50 44 43 5f 70 0a 01 5c 4e 48 50 0EXP3PDC_p..\NHP 26d0: 53 a0 42 12 7b 43 54 52 4c 0a 04 00 a0 33 92 5c S.B.{CTRL....3.\ 26e0: 56 49 47 44 70 0a 00 5c 2f 04 5f 53 42 5f 50 43 VIGDp..\/._SB_PC 26f0: 49 30 50 45 47 5f 50 4d 47 50 70 0a 00 5c 2f 04 I0PEG_PMGPp..\/. 2700: 5f 53 42 5f 50 43 49 30 50 45 47 5f 47 4d 47 50 _SB_PCI0PEG_GMGP 2710: a0 41 04 5c 2f 04 5f 53 42 5f 50 43 49 30 45 58 .A.\/._SB_PCI0EX 2720: 50 31 50 4d 43 45 70 0a 00 5c 2f 04 5f 53 42 5f P1PMCEp..\/._SB_ 2730: 50 43 49 30 45 58 50 31 50 4d 43 45 70 0a 01 5c PCI0EXP1PMCEp..\ 2740: 2f 04 5f 53 42 5f 50 43 49 30 45 58 50 31 50 4d /._SB_PCI0EXP1PM 2750: 43 53 a0 41 04 5c 2f 04 5f 53 42 5f 50 43 49 30 CS.A.\/._SB_PCI0 2760: 45 58 50 32 50 4d 43 45 70 0a 00 5c 2f 04 5f 53 EXP2PMCEp..\/._S 2770: 42 5f 50 43 49 30 45 58 50 32 50 4d 43 45 70 0a B_PCI0EXP2PMCEp. 2780: 01 5c 2f 04 5f 53 42 5f 50 43 49 30 45 58 50 32 .\/._SB_PCI0EXP2 2790: 50 4d 43 53 a0 41 04 5c 2f 04 5f 53 42 5f 50 43 PMCS.A.\/._SB_PC 27a0: 49 30 45 58 50 33 50 4d 43 45 70 0a 00 5c 2f 04 I0EXP3PMCEp..\/. 27b0: 5f 53 42 5f 50 43 49 30 45 58 50 33 50 4d 43 45 _SB_PCI0EXP3PMCE 27c0: 70 0a 01 5c 2f 04 5f 53 42 5f 50 43 49 30 45 58 p..\/._SB_PCI0EX 27d0: 50 33 50 4d 43 53 70 0a 00 5c 2f 04 5f 53 42 5f P3PMCSp..\/._SB_ 27e0: 50 43 49 30 4c 50 43 5f 45 58 50 45 70 0a 01 5c PCI0LPC_EXPEp..\ 27f0: 4e 50 4d 45 a0 11 92 93 69 0a 01 7d 43 44 57 31 NPME....i..}CDW1 2800: 0a 0a 43 44 57 31 a0 16 92 93 43 44 57 33 43 54 ..CDW1....CDW3CT 2810: 52 4c 7d 43 44 57 31 0a 10 43 44 57 31 70 43 54 RL}CDW1..CDW1pCT 2820: 52 4c 43 44 57 33 a1 0c 7d 43 44 57 31 0a 06 43 RLCDW3..}CDW1..C 2830: 44 57 31 a4 6b 5b 01 4d 44 47 53 07 08 56 44 45 DW1.k[.MDGS..VDE 2840: 45 0a 01 08 56 44 44 41 11 03 0a 02 8d 56 44 44 E...VDDA.....VDD 2850: 41 0a 00 56 55 50 43 8d 56 44 44 41 0a 01 56 51 A..VUPC.VDDA..VQ 2860: 44 4c 8d 56 44 44 41 0a 02 56 51 44 43 8d 56 44 DL.VDDA..VQDC.VD 2870: 44 41 0a 03 56 51 44 30 8d 56 44 44 41 0a 04 56 DA..VQD0.VDDA..V 2880: 51 44 31 8d 56 44 44 41 0a 05 56 51 44 32 8d 56 QD1.VDDA..VQD2.V 2890: 44 44 41 0a 06 56 53 44 4c 8d 56 44 44 41 0a 07 DDA..VSDL.VDDA.. 28a0: 56 53 44 43 8d 56 44 44 41 0a 08 56 53 44 30 8d VSDC.VDDA..VSD0. 28b0: 56 44 44 41 0a 09 56 53 44 31 8d 56 44 44 41 0a VDDA..VSD1.VDDA. 28c0: 0a 56 53 44 32 8d 56 44 44 41 0a 0b 56 53 44 33 .VSD2.VDDA..VSD3 28d0: 8d 56 44 44 41 0a 0c 56 53 44 34 8d 56 44 44 41 .VDDA..VSD4.VDDA 28e0: 0a 0d 56 53 44 35 8d 56 44 44 41 0a 0e 4d 53 57 ..VSD5.VDDA..MSW 28f0: 54 5b 82 87 51 01 56 49 44 5f 08 5f 41 44 52 0c T[..Q.VID_._ADR. 2900: 00 00 02 00 08 52 49 44 5f 0a 00 5b 80 56 50 43 .....RID_..[.VPC 2910: 47 02 0a 00 0b 00 01 5b 81 0e 56 50 43 47 03 00 G......[..VPCG.. 2920: 40 6a 56 50 57 52 08 08 4d 49 44 4c 0b 00 04 08 @jVPWR..MIDL.... 2930: 4d 49 44 43 0b 00 01 08 4d 49 44 30 0b 00 03 08 MIDC....MID0.... 2940: 4d 49 44 31 0b 01 03 08 4d 49 44 32 0b 02 03 08 MID1....MID2.... 2950: 4d 49 44 33 0b 03 03 08 4d 49 44 34 0b 04 03 08 MID3....MID4.... 2960: 4d 49 44 35 0b 05 03 08 5f 53 33 44 0a 03 14 1a MID5...._S3D.... 2970: 5f 49 4e 49 00 70 5c 2f 03 5f 53 42 5f 4c 49 44 _INI.p\/._SB_LID 2980: 5f 5f 4c 49 44 43 4c 49 44 14 07 5f 50 53 30 00 __LIDCLID.._PS0. 2990: a3 14 07 5f 50 53 31 00 a3 14 07 5f 50 53 32 00 ..._PS1...._PS2. 29a0: a3 14 07 5f 50 53 33 00 a3 14 0c 56 53 57 54 00 ..._PS3....VSWT. 29b0: 47 48 44 53 0a 00 14 36 56 4c 4f 43 01 a0 2f 93 GHDS...6VLOC../. 29c0: 68 5c 2f 03 5f 53 42 5f 4c 49 44 5f 5f 4c 49 44 h\/._SB_LID__LID 29d0: 5c 56 53 4c 44 68 a0 16 93 56 50 57 52 0a 00 70 \VSLDh...VPWR..p 29e0: 68 43 4c 49 44 47 4e 4f 54 0a 02 0a 00 14 4c 07 hCLIDGNOT.....L. 29f0: 5f 44 4f 53 01 7b 68 0a 03 68 a0 3a 93 68 0a 02 _DOS.{h..h.:.h.. 2a00: 70 0a 14 60 a2 30 60 76 60 5b 23 4d 44 47 53 ff p..`.0`v`[#MDGS. 2a10: ff a0 19 93 0a 00 4d 53 57 54 70 0a 01 4d 53 57 ......MSWTp..MSW 2a20: 54 70 0a 00 60 70 68 56 44 45 45 5b 27 4d 44 47 Tp..`phVDEE['MDG 2a30: 53 5b 22 0a c8 a1 34 5b 23 4d 44 47 53 ff ff a0 S["...4[#MDGS... 2a40: 0f 93 56 44 45 45 0a 02 70 0a 00 4d 53 57 54 a0 ..VDEE..p..MSWT. 2a50: 0c 94 68 0a 02 70 0a 01 56 44 45 45 a1 07 70 68 ..h..p..VDEE..ph 2a60: 56 44 45 45 5b 27 4d 44 47 53 14 4c 57 5f 44 4f VDEE['MDGS.LW_DO 2a70: 44 00 70 0a 00 4e 44 49 44 a0 0e 92 93 44 49 44 D.p..NDID....DID 2a80: 4c 0a 00 75 4e 44 49 44 a0 0e 92 93 44 44 4c 32 L..uNDID....DDL2 2a90: 0a 00 75 4e 44 49 44 a0 0e 92 93 44 44 4c 33 0a ..uNDID....DDL3. 2aa0: 00 75 4e 44 49 44 a0 0e 92 93 44 44 4c 34 0a 00 .uNDID....DDL4.. 2ab0: 75 4e 44 49 44 a0 0e 92 93 44 44 4c 35 0a 00 75 uNDID....DDL5..u 2ac0: 4e 44 49 44 a0 0e 92 93 44 44 4c 36 0a 00 75 4e NDID....DDL6..uN 2ad0: 44 49 44 a0 0e 92 93 44 44 4c 37 0a 00 75 4e 44 DID....DDL7..uND 2ae0: 49 44 a0 0e 92 93 44 44 4c 38 0a 00 75 4e 44 49 ID....DDL8..uNDI 2af0: 44 a0 33 93 4e 44 49 44 0a 01 08 54 4d 50 31 12 D.3.NDID...TMP1. 2b00: 07 01 0c ff ff ff ff 70 7d 0c 00 00 01 80 7b 0b .......p}.....{. 2b10: 0f 0f 44 49 44 4c 00 00 88 54 4d 50 31 0a 00 00 ..DIDL...TMP1... 2b20: a4 54 4d 50 31 a0 42 05 93 4e 44 49 44 0a 02 08 .TMP1.B..NDID... 2b30: 54 4d 50 32 12 0c 02 0c ff ff ff ff 0c ff ff ff TMP2............ 2b40: ff 70 7d 0c 00 00 01 80 7b 0b 0f 0f 44 49 44 4c .p}.....{...DIDL 2b50: 00 00 88 54 4d 50 32 0a 00 00 70 7d 0c 00 00 01 ...TMP2...p}.... 2b60: 80 7b 0b 0f 0f 44 44 4c 32 00 00 88 54 4d 50 32 .{...DDL2...TMP2 2b70: 0a 01 00 a4 54 4d 50 32 a0 40 07 93 4e 44 49 44 ....TMP2.@..NDID 2b80: 0a 03 08 54 4d 50 33 12 11 03 0c ff ff ff ff 0c ...TMP3......... 2b90: ff ff ff ff 0c ff ff ff ff 70 7d 0c 00 00 01 80 .........p}..... 2ba0: 7b 0b 0f 0f 44 49 44 4c 00 00 88 54 4d 50 33 0a {...DIDL...TMP3. 2bb0: 00 00 70 7d 0c 00 00 01 80 7b 0b 0f 0f 44 44 4c ..p}.....{...DDL 2bc0: 32 00 00 88 54 4d 50 33 0a 01 00 70 7d 0c 00 00 2...TMP3...p}... 2bd0: 01 80 7b 0b 0f 0f 44 44 4c 33 00 00 88 54 4d 50 ..{...DDL3...TMP 2be0: 33 0a 02 00 a4 54 4d 50 33 a0 4e 08 93 4e 44 49 3....TMP3.N..NDI 2bf0: 44 0a 04 08 54 4d 50 34 12 16 04 0c ff ff ff ff D...TMP4........ 2c00: 0c ff ff ff ff 0c ff ff ff ff 0c ff ff ff ff 70 ...............p 2c10: 7d 0c 00 00 01 80 7b 0b 0f 0f 44 49 44 4c 00 00 }.....{...DIDL.. 2c20: 88 54 4d 50 34 0a 00 00 70 7d 0c 00 00 01 80 7b .TMP4...p}.....{ 2c30: 0b 0f 0f 44 44 4c 32 00 00 88 54 4d 50 34 0a 01 ...DDL2...TMP4.. 2c40: 00 70 7d 0c 00 00 01 80 7b 0b 0f 0f 44 44 4c 33 .p}.....{...DDL3 2c50: 00 00 88 54 4d 50 34 0a 02 00 70 7d 0c 00 00 01 ...TMP4...p}.... 2c60: 80 7b 0b 0f 0f 44 44 4c 34 00 00 88 54 4d 50 34 .{...DDL4...TMP4 2c70: 0a 03 00 a4 54 4d 50 34 a0 4c 0a 93 4e 44 49 44 ....TMP4.L..NDID 2c80: 0a 05 08 54 4d 50 35 12 1b 05 0c ff ff ff ff 0c ...TMP5......... 2c90: ff ff ff ff 0c ff ff ff ff 0c ff ff ff ff 0c ff ................ 2ca0: ff ff ff 70 7d 0c 00 00 01 80 7b 0b 0f 0f 44 49 ...p}.....{...DI 2cb0: 44 4c 00 00 88 54 4d 50 35 0a 00 00 70 7d 0c 00 DL...TMP5...p}.. 2cc0: 00 01 80 7b 0b 0f 0f 44 44 4c 32 00 00 88 54 4d ...{...DDL2...TM 2cd0: 50 35 0a 01 00 70 7d 0c 00 00 01 80 7b 0b 0f 0f P5...p}.....{... 2ce0: 44 44 4c 33 00 00 88 54 4d 50 35 0a 02 00 70 7d DDL3...TMP5...p} 2cf0: 0c 00 00 01 80 7b 0b 0f 0f 44 44 4c 34 00 00 88 .....{...DDL4... 2d00: 54 4d 50 35 0a 03 00 70 7d 0c 00 00 01 80 7b 0b TMP5...p}.....{. 2d10: 0f 0f 44 44 4c 35 00 00 88 54 4d 50 35 0a 04 00 ..DDL5...TMP5... 2d20: a4 54 4d 50 35 a0 4a 0c 93 4e 44 49 44 0a 06 08 .TMP5.J..NDID... 2d30: 54 4d 50 36 12 20 06 0c ff ff ff ff 0c ff ff ff TMP6. .......... 2d40: ff 0c ff ff ff ff 0c ff ff ff ff 0c ff ff ff ff ................ 2d50: 0c ff ff ff ff 70 7d 0c 00 00 01 80 7b 0b 0f 0f .....p}.....{... 2d60: 44 49 44 4c 00 00 88 54 4d 50 36 0a 00 00 70 7d DIDL...TMP6...p} 2d70: 0c 00 00 01 80 7b 0b 0f 0f 44 44 4c 32 00 00 88 .....{...DDL2... 2d80: 54 4d 50 36 0a 01 00 70 7d 0c 00 00 01 80 7b 0b TMP6...p}.....{. 2d90: 0f 0f 44 44 4c 33 00 00 88 54 4d 50 36 0a 02 00 ..DDL3...TMP6... 2da0: 70 7d 0c 00 00 01 80 7b 0b 0f 0f 44 44 4c 34 00 p}.....{...DDL4. 2db0: 00 88 54 4d 50 36 0a 03 00 70 7d 0c 00 00 01 80 ..TMP6...p}..... 2dc0: 7b 0b 0f 0f 44 44 4c 35 00 00 88 54 4d 50 36 0a {...DDL5...TMP6. 2dd0: 04 00 70 7d 0c 00 00 01 80 7b 0b 0f 0f 44 44 4c ..p}.....{...DDL 2de0: 36 00 00 88 54 4d 50 36 0a 05 00 a4 54 4d 50 36 6...TMP6....TMP6 2df0: a0 48 0e 93 4e 44 49 44 0a 07 08 54 4d 50 37 12 .H..NDID...TMP7. 2e00: 25 07 0c ff ff ff ff 0c ff ff ff ff 0c ff ff ff %............... 2e10: ff 0c ff ff ff ff 0c ff ff ff ff 0c ff ff ff ff ................ 2e20: 0c ff ff ff ff 70 7d 0c 00 00 01 80 7b 0b 0f 0f .....p}.....{... 2e30: 44 49 44 4c 00 00 88 54 4d 50 37 0a 00 00 70 7d DIDL...TMP7...p} 2e40: 0c 00 00 01 80 7b 0b 0f 0f 44 44 4c 32 00 00 88 .....{...DDL2... 2e50: 54 4d 50 37 0a 01 00 70 7d 0c 00 00 01 80 7b 0b TMP7...p}.....{. 2e60: 0f 0f 44 44 4c 33 00 00 88 54 4d 50 37 0a 02 00 ..DDL3...TMP7... 2e70: 70 7d 0c 00 00 01 80 7b 0b 0f 0f 44 44 4c 34 00 p}.....{...DDL4. 2e80: 00 88 54 4d 50 37 0a 03 00 70 7d 0c 00 00 01 80 ..TMP7...p}..... 2e90: 7b 0b 0f 0f 44 44 4c 35 00 00 88 54 4d 50 37 0a {...DDL5...TMP7. 2ea0: 04 00 70 7d 0c 00 00 01 80 7b 0b 0f 0f 44 44 4c ..p}.....{...DDL 2eb0: 36 00 00 88 54 4d 50 37 0a 05 00 70 7d 0c 00 00 6...TMP7...p}... 2ec0: 01 80 7b 0b 0f 0f 44 44 4c 37 00 00 88 54 4d 50 ..{...DDL7...TMP 2ed0: 37 0a 06 00 a4 54 4d 50 37 a0 46 10 94 4e 44 49 7....TMP7.F..NDI 2ee0: 44 0a 07 08 54 4d 50 38 12 2a 08 0c ff ff ff ff D...TMP8.*...... 2ef0: 0c ff ff ff ff 0c ff ff ff ff 0c ff ff ff ff 0c ................ 2f00: ff ff ff ff 0c ff ff ff ff 0c ff ff ff ff 0c ff ................ 2f10: ff ff ff 70 7d 0c 00 00 01 80 7b 0b 0f 0f 44 49 ...p}.....{...DI 2f20: 44 4c 00 00 88 54 4d 50 38 0a 00 00 70 7d 0c 00 DL...TMP8...p}.. 2f30: 00 01 80 7b 0b 0f 0f 44 44 4c 32 00 00 88 54 4d ...{...DDL2...TM 2f40: 50 38 0a 01 00 70 7d 0c 00 00 01 80 7b 0b 0f 0f P8...p}.....{... 2f50: 44 44 4c 33 00 00 88 54 4d 50 38 0a 02 00 70 7d DDL3...TMP8...p} 2f60: 0c 00 00 01 80 7b 0b 0f 0f 44 44 4c 34 00 00 88 .....{...DDL4... 2f70: 54 4d 50 38 0a 03 00 70 7d 0c 00 00 01 80 7b 0b TMP8...p}.....{. 2f80: 0f 0f 44 44 4c 35 00 00 88 54 4d 50 38 0a 04 00 ..DDL5...TMP8... 2f90: 70 7d 0c 00 00 01 80 7b 0b 0f 0f 44 44 4c 36 00 p}.....{...DDL6. 2fa0: 00 88 54 4d 50 38 0a 05 00 70 7d 0c 00 00 01 80 ..TMP8...p}..... 2fb0: 7b 0b 0f 0f 44 44 4c 37 00 00 88 54 4d 50 38 0a {...DDL7...TMP8. 2fc0: 06 00 70 7d 0c 00 00 01 80 7b 0b 0f 0f 44 44 4c ..p}.....{...DDL 2fd0: 38 00 00 88 54 4d 50 38 0a 07 00 a4 54 4d 50 38 8...TMP8....TMP8 2fe0: a4 12 05 01 0b 00 04 14 14 56 44 53 57 01 a0 0d .........VDSW... 2ff0: 93 56 50 57 52 0a 00 47 44 43 4b 68 14 4b 1e 56 .VPWR..GDCKh.K.V 3000: 43 41 44 01 70 0a 00 60 a0 10 93 7b 44 49 44 4c CAD.p..`...{DIDL 3010: 0b 0f 0f 00 68 70 0a 0d 60 a1 48 08 a0 10 93 7b ....hp..`.H....{ 3020: 44 44 4c 32 0b 0f 0f 00 68 70 0a 0d 60 a1 44 07 DDL2....hp..`.D. 3030: a0 10 93 7b 44 44 4c 33 0b 0f 0f 00 68 70 0a 0d ...{DDL3....hp.. 3040: 60 a1 40 06 a0 10 93 7b 44 44 4c 34 0b 0f 0f 00 `.@....{DDL4.... 3050: 68 70 0a 0d 60 a1 4c 04 a0 10 93 7b 44 44 4c 35 hp..`.L....{DDL5 3060: 0b 0f 0f 00 68 70 0a 0d 60 a1 38 a0 10 93 7b 44 ....hp..`.8...{D 3070: 44 4c 36 0b 0f 0f 00 68 70 0a 0d 60 a1 25 a0 10 DL6....hp..`.%.. 3080: 93 7b 44 44 4c 37 0b 0f 0f 00 68 70 0a 0d 60 a1 .{DDL7....hp..`. 3090: 12 a0 10 93 7b 44 44 4c 38 0b 0f 0f 00 68 70 0a ....{DDL8....hp. 30a0: 0d 60 a0 11 93 7b 43 50 44 4c 0b 0f 0f 00 68 7d .`...{CPDL....h} 30b0: 0a 10 60 60 a1 4f 08 a0 11 93 7b 43 50 4c 32 0b ..``.O....{CPL2. 30c0: 0f 0f 00 68 7d 0a 10 60 60 a1 4a 07 a0 11 93 7b ...h}..``.J....{ 30d0: 43 50 4c 33 0b 0f 0f 00 68 7d 0a 10 60 60 a1 45 CPL3....h}..``.E 30e0: 06 a0 11 93 7b 43 50 4c 34 0b 0f 0f 00 68 7d 0a ....{CPL4....h}. 30f0: 10 60 60 a1 40 05 a0 11 93 7b 43 50 4c 35 0b 0f .``.@....{CPL5.. 3100: 0f 00 68 7d 0a 10 60 60 a1 3b a0 11 93 7b 43 50 ..h}..``.;...{CP 3110: 4c 36 0b 0f 0f 00 68 7d 0a 10 60 60 a1 27 a0 11 L6....h}..``.'.. 3120: 93 7b 43 50 4c 37 0b 0f 0f 00 68 7d 0a 10 60 60 .{CPL7....h}..`` 3130: a1 13 a0 11 93 7b 43 50 4c 38 0b 0f 0f 00 68 7d .....{CPL8....h} 3140: 0a 10 60 60 a0 11 93 7b 43 41 44 4c 0b 0f 0f 00 ..``...{CADL.... 3150: 68 7d 0a 02 60 60 a1 4f 08 a0 11 93 7b 43 41 4c h}..``.O....{CAL 3160: 32 0b 0f 0f 00 68 7d 0a 02 60 60 a1 4a 07 a0 11 2....h}..``.J... 3170: 93 7b 43 41 4c 33 0b 0f 0f 00 68 7d 0a 02 60 60 .{CAL3....h}..`` 3180: a1 45 06 a0 11 93 7b 43 41 4c 34 0b 0f 0f 00 68 .E....{CAL4....h 3190: 7d 0a 02 60 60 a1 40 05 a0 11 93 7b 43 41 4c 35 }..``.@....{CAL5 31a0: 0b 0f 0f 00 68 7d 0a 02 60 60 a1 3b a0 11 93 7b ....h}..``.;...{ 31b0: 43 41 4c 36 0b 0f 0f 00 68 7d 0a 02 60 60 a1 27 CAL6....h}..``.' 31c0: a0 11 93 7b 43 41 4c 37 0b 0f 0f 00 68 7d 0a 02 ...{CAL7....h}.. 31d0: 60 60 a1 13 a0 11 93 7b 43 41 4c 38 0b 0f 0f 00 ``.....{CAL8.... 31e0: 68 7d 0a 02 60 60 a4 60 14 4c 09 4e 44 44 53 01 h}..``.`.L.NDDS. 31f0: a0 0f 93 7b 4e 41 44 4c 0b 0f 0f 00 68 a4 0a 01 ...{NADL....h... 3200: a1 41 08 a0 0f 93 7b 4e 44 4c 32 0b 0f 0f 00 68 .A....{NDL2....h 3210: a4 0a 01 a1 4e 06 a0 0f 93 7b 4e 44 4c 33 0b 0f ....N....{NDL3.. 3220: 0f 00 68 a4 0a 01 a1 4b 05 a0 0f 93 7b 4e 44 4c ..h....K....{NDL 3230: 34 0b 0f 0f 00 68 a4 0a 01 a1 48 04 a0 0f 93 7b 4....h....H....{ 3240: 4e 44 4c 35 0b 0f 0f 00 68 a4 0a 01 a1 35 a0 0f NDL5....h....5.. 3250: 93 7b 4e 44 4c 36 0b 0f 0f 00 68 a4 0a 01 a1 23 .{NDL6....h....# 3260: a0 0f 93 7b 4e 44 4c 37 0b 0f 0f 00 68 a4 0a 01 ...{NDL7....h... 3270: a1 11 a0 0f 93 7b 4e 44 4c 38 0b 0f 0f 00 68 a4 .....{NDL8....h. 3280: 0a 01 a4 0a 00 5b 82 44 06 4c 43 44 30 14 0a 5f .....[.D.LCD0.._ 3290: 41 44 52 00 a4 0b 00 04 14 0f 5f 44 43 53 00 a4 ADR......._DCS.. 32a0: 56 43 41 44 4d 49 44 4c 14 0f 5f 44 47 53 00 a4 VCADMIDL.._DGS.. 32b0: 4e 44 44 53 4d 49 44 4c 14 0e 5f 44 53 53 01 7b NDDSMIDL.._DSS.{ 32c0: 68 0a 01 56 53 44 4c 14 23 5f 44 44 43 01 a0 0b h..VSDL.#_DDC... 32d0: 93 68 0a 01 a4 5c 56 45 44 49 a1 0d a0 0b 93 68 .h...\VEDI.....h 32e0: 0a 02 a4 5c 56 45 44 49 a4 0a 00 5b 82 3f 43 52 ...\VEDI...[.?CR 32f0: 54 30 14 0a 5f 41 44 52 00 a4 0b 00 01 14 0f 5f T0.._ADR......._ 3300: 44 43 53 00 a4 56 43 41 44 4d 49 44 43 14 0f 5f DCS..VCADMIDC.._ 3310: 44 47 53 00 a4 4e 44 44 53 4d 49 44 43 14 0e 5f DGS..NDDSMIDC.._ 3320: 44 53 53 01 7b 68 0a 01 56 53 44 43 5b 82 3f 44 DSS.{h..VSDC[.?D 3330: 56 49 30 14 0a 5f 41 44 52 00 a4 0b 00 03 14 0f VI0.._ADR....... 3340: 5f 44 43 53 00 a4 56 43 41 44 4d 49 44 30 14 0f _DCS..VCADMID0.. 3350: 5f 44 47 53 00 a4 4e 44 44 53 4d 49 44 30 14 0e _DGS..NDDSMID0.. 3360: 5f 44 53 53 01 7b 68 0a 01 56 53 44 30 5b 82 3f _DSS.{h..VSD0[.? 3370: 44 56 49 31 14 0a 5f 41 44 52 00 a4 0b 01 03 14 DVI1.._ADR...... 3380: 0f 5f 44 43 53 00 a4 56 43 41 44 4d 49 44 31 14 ._DCS..VCADMID1. 3390: 0f 5f 44 47 53 00 a4 4e 44 44 53 4d 49 44 31 14 ._DGS..NDDSMID1. 33a0: 0e 5f 44 53 53 01 7b 68 0a 01 56 53 44 31 5b 82 ._DSS.{h..VSD1[. 33b0: 3f 44 56 49 32 14 0a 5f 41 44 52 00 a4 0b 02 03 ?DVI2.._ADR..... 33c0: 14 0f 5f 44 43 53 00 a4 56 43 41 44 4d 49 44 32 .._DCS..VCADMID2 33d0: 14 0f 5f 44 47 53 00 a4 4e 44 44 53 4d 49 44 32 .._DGS..NDDSMID2 33e0: 14 0e 5f 44 53 53 01 7b 68 0a 01 56 53 44 32 5b .._DSS.{h..VSD2[ 33f0: 82 3f 44 56 49 33 14 0a 5f 41 44 52 00 a4 0b 03 .?DVI3.._ADR.... 3400: 03 14 0f 5f 44 43 53 00 a4 56 43 41 44 4d 49 44 ..._DCS..VCADMID 3410: 33 14 0f 5f 44 47 53 00 a4 4e 44 44 53 4d 49 44 3.._DGS..NDDSMID 3420: 33 14 0e 5f 44 53 53 01 7b 68 0a 01 56 53 44 33 3.._DSS.{h..VSD3 3430: 5b 82 3f 44 56 49 34 14 0a 5f 41 44 52 00 a4 0b [.?DVI4.._ADR... 3440: 04 03 14 0f 5f 44 43 53 00 a4 56 43 41 44 4d 49 ...._DCS..VCADMI 3450: 44 34 14 0f 5f 44 47 53 00 a4 4e 44 44 53 4d 49 D4.._DGS..NDDSMI 3460: 44 34 14 0e 5f 44 53 53 01 7b 68 0a 01 56 53 44 D4.._DSS.{h..VSD 3470: 34 5b 82 3f 44 56 49 35 14 0a 5f 41 44 52 00 a4 4[.?DVI5.._ADR.. 3480: 0b 05 03 14 0f 5f 44 43 53 00 a4 56 43 41 44 4d ....._DCS..VCADM 3490: 49 44 35 14 0f 5f 44 47 53 00 a4 4e 44 44 53 4d ID5.._DGS..NDDSM 34a0: 49 44 35 14 0e 5f 44 53 53 01 7b 68 0a 01 56 53 ID5.._DSS.{h..VS 34b0: 44 35 5b 80 49 47 44 50 02 0a 40 0a c0 5b 81 45 D5[.IGDP..@..[.E 34c0: 05 49 47 44 50 00 00 40 09 00 01 47 49 56 44 01 .IGDP..@...GIVD. 34d0: 00 02 47 55 4d 41 03 00 09 00 04 47 4d 46 4e 01 ..GUMA.....GMFN. 34e0: 00 1b 00 40 46 41 53 4c 45 08 00 18 47 53 53 45 ...@FASLE...GSSE 34f0: 01 47 53 53 42 0e 47 53 45 53 01 00 30 00 0c 43 .GSSB.GSES..0..C 3500: 44 56 4c 01 00 03 00 18 4c 42 50 43 08 00 30 41 DVL.....LBPC..0A 3510: 53 4c 53 20 5b 80 49 47 44 4d 00 5c 41 53 4c 42 SLS [.IGDM.\ASLB 3520: 0b 00 20 5b 81 48 19 49 47 44 4d 00 53 49 47 4e .. [.H.IGDM.SIGN 3530: 40 08 53 49 5a 45 20 4f 56 45 52 20 53 56 45 52 @.SIZE OVER SVER 3540: 40 10 56 56 45 52 40 08 47 56 45 52 40 08 4d 42 @.VVER@.GVER@.MB 3550: 4f 58 20 44 4d 4f 44 20 00 40 50 44 52 44 59 20 OX DMOD .@PDRDY 3560: 43 53 54 53 20 43 45 56 54 20 00 40 0a 44 49 44 CSTS CEVT .@.DID 3570: 4c 20 44 44 4c 32 20 44 44 4c 33 20 44 44 4c 34 L DDL2 DDL3 DDL4 3580: 20 44 44 4c 35 20 44 44 4c 36 20 44 44 4c 37 20 DDL5 DDL6 DDL7 3590: 44 44 4c 38 20 43 50 44 4c 20 43 50 4c 32 20 43 DDL8 CPDL CPL2 C 35a0: 50 4c 33 20 43 50 4c 34 20 43 50 4c 35 20 43 50 PL3 CPL4 CPL5 CP 35b0: 4c 36 20 43 50 4c 37 20 43 50 4c 38 20 43 41 44 L6 CPL7 CPL8 CAD 35c0: 4c 20 43 41 4c 32 20 43 41 4c 33 20 43 41 4c 34 L CAL2 CAL3 CAL4 35d0: 20 43 41 4c 35 20 43 41 4c 36 20 43 41 4c 37 20 CAL5 CAL6 CAL7 35e0: 43 41 4c 38 20 4e 41 44 4c 20 4e 44 4c 32 20 4e CAL8 NADL NDL2 N 35f0: 44 4c 33 20 4e 44 4c 34 20 4e 44 4c 35 20 4e 44 DL3 NDL4 NDL5 ND 3600: 4c 36 20 4e 44 4c 37 20 4e 44 4c 38 20 41 53 4c L6 NDL7 NDL8 ASL 3610: 50 20 54 49 44 58 20 43 48 50 44 20 43 4c 49 44 P TIDX CHPD CLID 3620: 20 43 44 43 4b 20 53 58 53 57 20 45 56 54 53 20 CDCK SXSW EVTS 3630: 43 4e 4f 54 20 4e 52 44 59 20 00 40 1e 53 43 49 CNOT NRDY .@.SCI 3640: 45 01 47 45 46 43 04 47 58 46 43 03 47 45 53 46 E.GEFC.GXFC.GESF 3650: 08 00 10 50 41 52 4d 20 44 53 4c 50 20 00 40 7a ...PARM DSLP .@z 3660: 41 52 44 59 20 41 53 4c 43 20 54 43 48 45 20 41 ARDY ASLC TCHE A 3670: 4c 53 49 20 42 43 4c 50 20 50 46 49 54 20 43 42 LSI BCLP PFIT CB 3680: 4c 56 20 42 43 4c 4d 40 14 43 50 46 4d 20 45 50 LV BCLM@.CPFM EP 3690: 46 4d 20 50 4c 55 54 40 25 50 46 4d 42 20 43 43 FM PLUT@%PFMB CC 36a0: 44 56 20 50 43 46 54 20 00 40 2f 47 56 44 31 80 DV PCFT .@/GVD1. 36b0: 00 0c 50 48 45 44 20 42 44 44 43 40 80 08 44 42 ..PHED BDDC@..DB 36c0: 54 42 12 38 15 0a 00 0a 07 0a 38 0b c0 01 0b 00 TB.8......8..... 36d0: 0e 0a 3f 0b c7 01 0b 07 0e 0b f8 01 0b 38 0e 0b ..?..........8.. 36e0: c0 0f 0a 00 0a 00 0a 00 0a 00 0a 00 0b 00 70 0b ..............p. 36f0: 07 70 0b 38 70 0b c0 71 0b 00 7e 08 43 44 43 54 .p.8p..q..~.CDCT 3700: 12 29 05 12 07 02 0a e4 0b 40 01 12 07 02 0a de .).......@...... 3710: 0b 4d 01 12 07 02 0a de 0b 4d 01 12 06 02 0a 00 .M.......M...... 3720: 0a 00 12 07 02 0a de 0b 4d 01 08 53 55 43 43 0a ........M..SUCC. 3730: 01 08 4e 56 4c 44 0a 02 08 43 52 49 54 0a 04 08 ..NVLD...CRIT... 3740: 4e 43 52 54 0a 06 14 48 05 47 53 43 49 08 a0 11 NCRT...H.GSCI... 3750: 93 47 45 46 43 0a 04 70 47 42 44 41 47 58 46 43 .GEFC..pGBDAGXFC 3760: a0 11 93 47 45 46 43 0a 06 70 53 42 43 42 47 58 ...GEFC..pSBCBGX 3770: 46 43 70 0a 00 47 45 46 43 70 0a 01 5c 2f 04 5f FCp..GEFCp..\/._ 3780: 53 42 5f 50 43 49 30 4c 50 43 5f 53 43 49 53 70 SB_PCI0LPC_SCISp 3790: 0a 00 47 53 53 45 70 0a 00 53 43 49 45 a4 00 14 ..GSSEp..SCIE... 37a0: 4b 1e 47 42 44 41 08 a0 1b 93 47 45 53 46 0a 00 K.GBDA....GESF.. 37b0: 70 0b 41 02 50 41 52 4d 70 00 47 45 53 46 a4 53 p.A.PARMp.GESF.S 37c0: 55 43 43 a0 1b 93 47 45 53 46 0a 01 70 0b 02 02 UCC...GESF..p... 37d0: 50 41 52 4d 70 00 47 45 53 46 a4 53 55 43 43 a0 PARMp.GESF.SUCC. 37e0: 47 04 93 47 45 53 46 0a 04 7b 50 41 52 4d 0c 00 G..GESF..{PARM.. 37f0: 00 ff ef 50 41 52 4d 7b 50 41 52 4d 79 83 88 44 ...PARM{PARMy..D 3800: 42 54 42 49 42 54 54 00 0a 10 00 50 41 52 4d 7d BTBIBTT....PARM} 3810: 49 42 54 54 50 41 52 4d 50 41 52 4d 70 00 47 45 IBTTPARMPARMp.GE 3820: 53 46 a4 53 55 43 43 a0 45 08 93 47 45 53 46 0a SF.SUCC.E..GESF. 3830: 05 a0 17 5c 2f 03 5f 53 42 5f 4c 49 44 5f 5f 4c ...\/._SB_LID__L 3840: 49 44 70 0a 01 4c 49 44 53 a1 08 70 0a 00 4c 49 IDp..LIDS..p..LI 3850: 44 53 70 49 50 53 43 50 41 52 4d 72 50 41 52 4d DSpIPSCPARMrPARM 3860: 0a 01 50 41 52 4d 72 50 41 52 4d 0b 00 03 50 41 ..PARMrPARM...PA 3870: 52 4d 72 50 41 52 4d 0c 00 00 01 00 50 41 52 4d RMrPARM.....PARM 3880: 7d 50 41 52 4d 79 4c 49 44 53 0a 10 00 50 41 52 }PARMyLIDS...PAR 3890: 4d 7d 50 41 52 4d 79 49 42 49 41 0a 14 00 50 41 M}PARMyIBIA...PA 38a0: 52 4d 70 00 47 45 53 46 a4 53 55 43 43 a0 2d 93 RMp.GESF.SUCC.-. 38b0: 47 45 53 46 0a 06 70 49 54 56 46 50 41 52 4d 7d GESF..pITVFPARM} 38c0: 50 41 52 4d 79 49 54 56 4d 0a 04 00 50 41 52 4d PARMyITVM...PARM 38d0: 70 00 47 45 53 46 a4 53 55 43 43 a0 47 07 93 47 p.GESF.SUCC.G..G 38e0: 45 53 46 0a 07 70 47 49 56 44 50 41 52 4d 7f 50 ESF..pGIVDPARM.P 38f0: 41 52 4d 0a 01 50 41 52 4d 7d 50 41 52 4d 79 47 ARM..PARM}PARMyG 3900: 4d 46 4e 0a 01 00 50 41 52 4d 7d 50 41 52 4d 79 MFN...PARM}PARMy 3910: 0a 03 0a 0b 00 50 41 52 4d 7d 50 41 52 4d 79 0a .....PARM}PARMy. 3920: 03 0a 11 00 50 41 52 4d 7d 79 83 88 83 88 43 44 ....PARM}y....CD 3930: 43 54 48 56 43 4f 00 43 44 56 4c 00 0a 15 00 50 CTHVCO.CDVL....P 3940: 41 52 4d 50 41 52 4d 70 0a 01 47 45 53 46 a4 53 ARMPARMp..GESF.S 3950: 55 43 43 a0 2c 93 47 45 53 46 0a 0a 70 0a 00 50 UCC.,.GESF..p..P 3960: 41 52 4d a0 10 49 53 53 43 7d 50 41 52 4d 0a 03 ARM..ISSC}PARM.. 3970: 50 41 52 4d 70 0a 00 47 45 53 46 a4 53 55 43 43 PARMp..GESF.SUCC 3980: 70 00 47 45 53 46 a4 43 52 49 54 14 4b 2a 53 42 p.GESF.CRIT.K*SB 3990: 43 42 08 a0 1b 93 47 45 53 46 0a 00 70 0b 01 01 CB....GESF..p... 39a0: 50 41 52 4d 70 00 47 45 53 46 a4 53 55 43 43 a0 PARMp.GESF.SUCC. 39b0: 19 93 47 45 53 46 0a 01 70 00 47 45 53 46 70 00 ..GESF..p.GESFp. 39c0: 50 41 52 4d a4 53 55 43 43 a0 19 93 47 45 53 46 PARM.SUCC...GESF 39d0: 0a 03 70 00 47 45 53 46 70 00 50 41 52 4d a4 53 ..p.GESFp.PARM.S 39e0: 55 43 43 a0 19 93 47 45 53 46 0a 04 70 00 47 45 UCC...GESF..p.GE 39f0: 53 46 70 00 50 41 52 4d a4 53 55 43 43 a0 19 93 SFp.PARM.SUCC... 3a00: 47 45 53 46 0a 05 70 00 47 45 53 46 70 00 50 41 GESF..p.GESFp.PA 3a10: 52 4d a4 53 55 43 43 a0 37 93 47 45 53 46 0a 06 RM.SUCC.7.GESF.. 3a20: 70 7b 50 41 52 4d 0a 0f 00 49 54 56 46 70 7a 7b p{PARM...ITVFpz{ 3a30: 50 41 52 4d 0a f0 00 0a 04 00 49 54 56 4d 70 00 PARM......ITVMp. 3a40: 47 45 53 46 70 00 50 41 52 4d a4 53 55 43 43 a0 GESFp.PARM.SUCC. 3a50: 19 93 47 45 53 46 0a 07 70 00 47 45 53 46 70 00 ..GESF..p.GESFp. 3a60: 50 41 52 4d a4 53 55 43 43 a0 19 93 47 45 53 46 PARM.SUCC...GESF 3a70: 0a 08 70 00 47 45 53 46 70 00 50 41 52 4d a4 53 ..p.GESFp.PARM.S 3a80: 55 43 43 a0 24 93 47 45 53 46 0a 09 7b 50 41 52 UCC.$.GESF..{PAR 3a90: 4d 0a ff 49 42 54 54 70 00 47 45 53 46 70 00 50 M..IBTTp.GESFp.P 3aa0: 41 52 4d a4 53 55 43 43 a0 46 05 93 47 45 53 46 ARM.SUCC.F..GESF 3ab0: 0a 0a 7b 50 41 52 4d 0a ff 49 50 53 43 a0 21 7b ..{PARM..IPSC.!{ 3ac0: 7a 50 41 52 4d 0a 08 00 0a ff 00 7b 7a 50 41 52 zPARM......{zPAR 3ad0: 4d 0a 08 00 0a ff 49 50 41 54 76 49 50 41 54 7b M.....IPATvIPAT{ 3ae0: 7a 50 41 52 4d 0a 14 00 0a 07 49 42 49 41 70 00 zPARM.....IBIAp. 3af0: 47 45 53 46 70 00 50 41 52 4d a4 53 55 43 43 a0 GESFp.PARM.SUCC. 3b00: 47 05 93 47 45 53 46 0a 0b 7b 7a 50 41 52 4d 0a G..GESF..{zPARM. 3b10: 01 00 0a 01 49 46 31 45 a0 1c 7b 50 41 52 4d 79 ....IF1E..{PARMy 3b20: 0a 0f 0a 0d 00 00 7b 7a 50 41 52 4d 0a 0d 00 0a ......{zPARM.... 3b30: 0f 49 44 4d 53 a1 10 7b 7a 50 41 52 4d 0a 11 00 .IDMS..{zPARM... 3b40: 0a 0f 49 44 4d 53 70 00 47 45 53 46 70 00 50 41 ..IDMSp.GESFp.PA 3b50: 52 4d a4 53 55 43 43 a0 19 93 47 45 53 46 0a 10 RM.SUCC...GESF.. 3b60: 70 00 47 45 53 46 70 00 50 41 52 4d a4 53 55 43 p.GESFp.PARM.SUC 3b70: 43 a0 2c 93 47 45 53 46 0a 11 70 79 4c 49 44 53 C.,.GESF..pyLIDS 3b80: 0a 08 00 50 41 52 4d 72 50 41 52 4d 0b 00 01 50 ...PARMrPARM...P 3b90: 41 52 4d 70 00 47 45 53 46 a4 53 55 43 43 a0 4e ARMp.GESF.SUCC.N 3ba0: 04 93 47 45 53 46 0a 12 a0 2a 7b 50 41 52 4d 0a ..GESF...*{PARM. 3bb0: 01 00 a0 13 93 7a 50 41 52 4d 0a 01 00 0a 01 70 .....zPARM.....p 3bc0: 0a 01 49 53 53 43 a1 0c 70 00 47 45 53 46 a4 43 ..ISSC..p.GESF.C 3bd0: 52 49 54 a1 08 70 0a 00 49 53 53 43 70 00 47 45 RIT..p..ISSCp.GE 3be0: 53 46 70 00 50 41 52 4d a4 53 55 43 43 a0 19 93 SFp.PARM.SUCC... 3bf0: 47 45 53 46 0a 13 70 00 47 45 53 46 70 00 50 41 GESF..p.GESFp.PA 3c00: 52 4d a4 53 55 43 43 a0 24 93 47 45 53 46 0a 14 RM.SUCC.$.GESF.. 3c10: 7b 50 41 52 4d 0a 0f 50 41 56 50 70 00 47 45 53 {PARM..PAVPp.GES 3c20: 46 70 00 50 41 52 4d a4 53 55 43 43 70 00 47 45 Fp.PARM.SUCCp.GE 3c30: 53 46 a4 53 55 43 43 14 19 50 44 52 44 00 a0 0c SF.SUCC..PDRD... 3c40: 92 44 52 44 59 5b 22 41 53 4c 50 a4 92 44 52 44 .DRDY["ASLP..DRD 3c50: 59 14 1d 50 53 54 53 00 a0 0e 94 43 53 54 53 0a Y..PSTS....CSTS. 3c60: 02 5b 22 41 53 4c 50 a4 93 43 53 54 53 0a 03 14 .["ASLP..CSTS... 3c70: 45 07 47 4e 4f 54 02 a0 08 50 44 52 44 a4 0a 01 E.GNOT...PDRD... 3c80: 70 68 43 45 56 54 70 0a 03 43 53 54 53 a0 42 04 phCEVTp..CSTS.B. 3c90: 90 93 43 48 50 44 0a 00 93 69 0a 00 a0 33 92 93 ..CHPD...i...3.. 3ca0: 68 0a 01 a0 19 90 5c 57 58 50 46 92 5c 57 56 49 h.....\WXPF.\WVI 3cb0: 53 86 5c 2e 5f 53 42 5f 50 43 49 30 69 a1 12 86 S.\._SB_PCI0i... 3cc0: 5c 2f 03 5f 53 42 5f 50 43 49 30 56 49 44 5f 69 \/._SB_PCI0VID_i 3cd0: 86 5c 2f 03 5f 53 42 5f 50 43 49 30 56 49 44 5f .\/._SB_PCI0VID_ 3ce0: 0a 80 a4 0a 00 14 15 47 48 44 53 01 70 68 54 49 .......GHDS.phTI 3cf0: 44 58 a4 47 4e 4f 54 0a 01 0a 00 14 15 47 4c 49 DX.GNOT......GLI 3d00: 44 01 70 68 43 4c 49 44 a4 47 4e 4f 54 0a 02 0a D.phCLID.GNOT... 3d10: 00 14 0f 47 4c 49 53 01 70 68 43 4c 49 44 a4 0a ...GLIS.phCLID.. 3d20: 00 14 15 47 44 43 4b 01 70 68 43 44 43 4b a4 47 ...GDCK.phCDCK.G 3d30: 4e 4f 54 0a 04 0a 80 14 0c 47 44 43 53 01 70 68 NOT......GDCS.ph 3d40: 43 44 43 4b 14 19 50 41 52 44 00 a0 0c 92 41 52 CDCK..PARD....AR 3d50: 44 59 5b 22 41 53 4c 50 a4 92 41 52 44 59 14 4b DY["ASLP..ARDY.K 3d60: 0a 41 49 4e 54 02 a0 10 92 7b 54 43 48 45 79 0a .AINT....{TCHEy. 3d70: 01 68 00 00 a4 0a 01 a0 08 50 41 52 44 a4 0a 01 .h.......PARD... 3d80: a0 25 93 68 0a 02 7f 50 46 49 54 0a 07 50 46 49 .%.h...PFIT..PFI 3d90: 54 7d 50 46 49 54 0c 00 00 00 80 50 46 49 54 70 T}PFIT.....PFITp 3da0: 0a 04 41 53 4c 43 a1 49 05 a0 20 93 68 0a 01 70 ..ASLC.I.. .h..p 3db0: 69 42 43 4c 50 7d 42 43 4c 50 0c 00 00 00 80 42 iBCLP}BCLP.....B 3dc0: 43 4c 50 70 0a 0a 41 53 4c 43 a1 35 a0 19 93 68 CLPp..ASLC.5...h 3dd0: 0a 03 70 69 50 46 4d 42 7d 50 46 4d 42 0c 00 01 ..piPFMB}PFMB... 3de0: 00 80 50 46 4d 42 a1 19 a0 12 93 68 0a 00 70 69 ..PFMB.....h..pi 3df0: 41 4c 53 49 70 0a 01 41 53 4c 43 a1 04 a4 0a 01 ALSIp..ASLC..... 3e00: 70 0a 01 41 53 4c 45 a4 0a 00 5b 82 87 16 03 4c p..ASLE...[....L 3e10: 50 43 5f 08 5f 41 44 52 0c 00 00 1f 00 08 5f 53 PC_._ADR......_S 3e20: 33 44 0a 03 08 52 49 44 5f 0a 00 5b 82 4b 1c 53 3D...RID_..[.K.S 3e30: 49 4f 5f 08 5f 48 49 44 0c 41 d0 0c 02 08 5f 55 IO_._HID.A...._U 3e40: 49 44 0a 00 08 53 43 52 53 11 4b 10 0b 06 01 47 ID...SCRS.K....G 3e50: 01 10 00 10 00 01 10 47 01 90 00 90 00 01 10 47 .......G.......G 3e60: 01 24 00 24 00 01 02 47 01 28 00 28 00 01 02 47 .$.$...G.(.(...G 3e70: 01 2c 00 2c 00 01 02 47 01 30 00 30 00 01 02 47 .,.,...G.0.0...G 3e80: 01 34 00 34 00 01 02 47 01 38 00 38 00 01 02 47 .4.4...G.8.8...G 3e90: 01 3c 00 3c 00 01 02 47 01 a4 00 a4 00 01 02 47 .<.<...G.......G 3ea0: 01 a8 00 a8 00 01 02 47 01 ac 00 ac 00 01 02 47 .......G.......G 3eb0: 01 b0 00 b0 00 01 06 47 01 b8 00 b8 00 01 02 47 .......G.......G 3ec0: 01 bc 00 bc 00 01 02 47 01 50 00 50 00 01 04 47 .......G.P.P...G 3ed0: 01 72 00 72 00 01 06 47 01 00 04 00 04 01 80 47 .r.r...G.......G 3ee0: 01 00 05 00 05 01 80 47 01 00 08 00 08 01 10 47 .......G.......G 3ef0: 01 e0 15 e0 15 01 10 47 01 00 16 00 16 01 80 86 .......G........ 3f00: 09 00 01 00 00 00 f8 00 00 00 04 86 09 00 01 00 ................ 3f10: 00 00 00 00 10 00 00 86 09 00 01 00 c0 d1 fe 00 ................ 3f20: 40 00 00 86 09 00 01 00 00 d1 fe 00 40 00 00 86 @...........@... 3f30: 09 00 01 00 80 d1 fe 00 10 00 00 86 09 00 01 00 ................ 3f40: 90 d1 fe 00 10 00 00 86 09 00 01 00 50 d4 fe 00 ............P... 3f50: 70 00 00 79 00 8a 53 43 52 53 0a c0 54 52 4d 42 p..y..SCRS..TRMB 3f60: 14 47 09 5f 43 52 53 00 70 5c 54 42 41 42 54 52 .G._CRS.p\TBABTR 3f70: 4d 42 a0 20 93 5c 2f 05 5f 53 42 5f 50 43 49 30 MB. .\/._SB_PCI0 3f80: 4c 50 43 5f 54 50 4d 5f 5f 53 54 41 0a 0f a4 53 LPC_TPM__STA...S 3f90: 43 52 53 a1 44 06 74 87 53 43 52 53 0a 02 60 08 CRS.D.t.SCRS..`. 3fa0: 42 55 46 30 11 02 60 72 60 87 5c 2f 05 5f 53 42 BUF0..`r`.\/._SB 3fb0: 5f 50 43 49 30 4c 50 43 5f 54 50 4d 5f 42 55 46 _PCI0LPC_TPM_BUF 3fc0: 31 60 08 42 55 46 31 11 02 60 70 53 43 52 53 42 1`.BUF1..`pSCRSB 3fd0: 55 46 30 73 42 55 46 30 5c 2f 05 5f 53 42 5f 50 UF0sBUF0\/._SB_P 3fe0: 43 49 30 4c 50 43 5f 54 50 4d 5f 42 55 46 31 42 CI0LPC_TPM_BUF1B 3ff0: 55 46 31 a4 42 55 46 31 5b 80 4c 50 43 53 02 0a UF1.BUF1[.LPCS.. 4000: 00 0b 00 01 5b 81 4b 09 4c 50 43 53 00 00 40 30 ....[.K.LPCS..@0 4010: 50 49 52 41 08 50 49 52 42 08 50 49 52 43 08 50 PIRA.PIRB.PIRC.P 4020: 49 52 44 08 53 45 52 51 08 00 18 50 49 52 45 08 IRD.SERQ...PIRE. 4030: 50 49 52 46 08 50 49 52 47 08 50 49 52 48 08 00 PIRF.PIRG.PIRH.. 4040: 40 0a 58 55 31 41 03 00 01 58 55 32 41 03 00 01 @.XU1A...XU2A... 4050: 58 50 41 5f 02 00 02 58 46 41 5f 01 00 03 58 55 XPA_...XFA_...XU 4060: 31 45 01 58 55 32 45 01 58 50 45 5f 01 58 46 45 1E.XU2E.XPE_.XFE 4070: 5f 01 00 0c 58 47 31 45 01 00 01 58 47 31 41 0e _...XG1E...XG1A. 4080: 00 10 58 47 32 45 01 00 01 58 47 32 41 0e 00 40 ..XG2E...XG2A..@ 4090: 0b 00 02 43 4c 4b 52 01 00 07 45 58 50 45 01 00 ...CLKR...EXPE.. 40a0: 05 5b 80 4c 50 49 4f 01 0b 00 05 0a 80 5b 81 4b .[.LPIO......[.K 40b0: 04 4c 50 49 4f 03 00 40 06 00 08 00 08 00 06 47 .LPIO..@.......G 40c0: 4c 49 53 01 00 01 00 08 00 40 0e 00 06 58 48 50 LIS......@...XHP 40d0: 44 01 00 49 05 00 06 50 49 44 48 02 00 08 50 49 D..I...PIDH...PI 40e0: 44 4c 02 00 4e 06 44 4f 49 30 01 44 4f 49 31 01 DL..N.DOI0.DOI1. 40f0: 44 4f 49 32 01 44 4f 49 33 01 5b 80 50 4d 49 4f DOI2.DOI3.[.PMIO 4100: 01 0b 00 04 0a 80 5b 81 1c 50 4d 49 4f 00 00 40 ......[..PMIO..@ 4110: 21 00 01 53 57 47 45 01 00 4e 10 00 09 53 43 49 !..SWGE..N...SCI 4120: 53 01 00 06 5b 80 49 4f 5f 54 01 0b 00 08 0a 10 S...[.IO_T...... 4130: 5b 81 24 49 4f 5f 54 01 54 52 50 49 10 00 10 00 [.$IO_T.TRPI.... 4140: 10 00 10 54 52 50 30 08 00 08 00 08 00 08 00 08 ...TRP0......... 4150: 00 08 00 08 00 08 5b 82 33 50 49 43 5f 08 5f 48 ......[.3PIC_._H 4160: 49 44 0b 41 d0 08 5f 43 52 53 11 20 0a 1d 47 01 ID.A.._CRS. ..G. 4170: 20 00 20 00 01 02 47 01 a0 00 a0 00 01 02 47 01 . ...G.......G. 4180: d0 04 d0 04 01 02 22 04 00 79 00 5b 82 25 54 49 ......"..y.[.%TI 4190: 4d 52 08 5f 48 49 44 0c 41 d0 01 00 08 5f 43 52 MR._HID.A...._CR 41a0: 53 11 10 0a 0d 47 01 40 00 40 00 01 04 22 01 00 S....G.@.@...".. 41b0: 79 00 5b 82 48 06 48 50 45 54 08 5f 48 49 44 0c y.[.H.HPET._HID. 41c0: 41 d0 01 03 14 1f 5f 53 54 41 00 a0 10 90 5c 57 A....._STA....\W 41d0: 4e 54 46 92 5c 57 58 50 46 a4 0a 00 a1 04 a4 0a NTF.\WXPF....... 41e0: 0f a4 0a 00 08 42 55 46 30 11 11 0a 0e 86 09 00 .....BUF0....... 41f0: 00 00 00 d0 fe 00 04 00 00 79 00 14 20 5f 43 52 .........y.. _CR 4200: 53 08 8a 42 55 46 30 0a 04 48 50 54 30 70 5c 48 S..BUF0..HPT0p\H 4210: 50 45 54 48 50 54 30 a4 42 55 46 30 5b 82 35 44 PETHPT0.BUF0[.5D 4220: 4d 41 43 08 5f 48 49 44 0c 41 d0 02 00 08 5f 43 MAC._HID.A...._C 4230: 52 53 11 20 0a 1d 47 01 00 00 00 00 01 10 47 01 RS. ..G.......G. 4240: 80 00 80 00 01 10 47 01 c0 00 c0 00 01 20 2a 10 ......G...... *. 4250: 05 79 00 5b 82 22 53 50 4b 52 08 5f 48 49 44 0c .y.[."SPKR._HID. 4260: 41 d0 08 00 08 5f 43 52 53 11 0d 0a 0a 47 01 61 A...._CRS....G.a 4270: 00 61 00 01 01 79 00 5b 82 25 46 50 55 5f 08 5f .a...y.[.%FPU_._ 4280: 48 49 44 0c 41 d0 0c 04 08 5f 43 52 53 11 10 0a HID.A...._CRS... 4290: 0d 47 01 f0 00 f0 00 01 01 22 00 20 79 00 5b 82 .G.......". y.[. 42a0: 25 52 54 43 5f 08 5f 48 49 44 0c 41 d0 0b 00 08 %RTC_._HID.A.... 42b0: 5f 43 52 53 11 10 0a 0d 47 01 70 00 70 00 01 02 _CRS....G.p.p... 42c0: 22 00 01 79 00 5b 82 2d 4b 42 44 5f 08 5f 48 49 "..y.[.-KBD_._HI 42d0: 44 0c 41 d0 03 03 08 5f 43 52 53 11 18 0a 15 47 D.A...._CRS....G 42e0: 01 60 00 60 00 01 01 47 01 64 00 64 00 01 01 22 .`.`...G.d.d..." 42f0: 02 00 79 00 5b 82 4a 05 4d 4f 55 5f 08 5f 48 49 ..y.[.J.MOU_._HI 4300: 44 0c 24 4d 37 80 08 5f 43 49 44 0c 41 d0 0f 13 D.$M7.._CID.A... 4310: 08 5f 43 52 53 11 08 0a 05 22 00 10 79 00 14 31 ._CRS...."..y..1 4320: 4d 48 49 44 00 a0 1e 5c 2f 04 5f 53 42 5f 50 43 MHID...\/._SB_PC 4330: 49 30 4c 50 43 5f 50 41 44 44 70 0c 24 4d 37 80 I0LPC_PADDp.$M7. 4340: 5f 48 49 44 a1 0b 70 0c 30 ae 00 20 5f 48 49 44 _HID..p.0.. _HID 4350: 5b 80 49 4d 47 41 01 0b e0 15 0a 10 5b 81 21 49 [.IMGA......[.!I 4360: 4d 47 41 01 00 08 00 08 00 08 57 41 4b 52 10 00 MGA.......WAKR.. 4370: 38 47 41 49 58 08 00 08 47 41 44 54 08 00 08 5b 8GAIX...GADT...[ 4380: 86 4f 05 47 41 49 58 47 41 44 54 01 00 40 28 00 .O.GAIXGADT..@(. 4390: 03 49 56 50 57 01 44 56 50 57 01 42 4c 50 4c 01 .IVPW.DVPW.BLPL. 43a0: 00 02 54 50 34 52 01 50 41 44 52 01 42 50 41 44 ..TP4R.PADR.BPAD 43b0: 01 00 01 00 01 50 41 44 44 01 00 42 07 45 50 57 .....PADD..B.EPW 43c0: 47 01 00 01 43 53 4f 4e 01 44 53 43 49 01 44 53 G...CSON.DSCI.DS 43d0: 43 53 01 44 4c 41 4e 01 00 4a 30 47 41 49 44 08 CS.DLAN..J0GAID. 43e0: 10 48 0c 5c 5f 53 42 5f 08 54 43 47 50 11 0b 0a .H.\_SB_.TCGP... 43f0: 08 1f e0 1f 01 02 04 08 f0 8c 54 43 47 50 0a 00 ..........TCGP.. 4400: 50 50 52 51 8c 54 43 47 50 0a 01 50 50 4c 31 8c PPRQ.TCGP..PPL1. 4410: 54 43 47 50 0a 02 50 50 52 50 8c 54 43 47 50 0a TCGP..PPRP.TCGP. 4420: 03 54 50 52 53 8c 54 43 47 50 0a 04 50 50 4f 52 .TPRS.TCGP..PPOR 4430: 8c 54 43 47 50 0a 05 54 50 4d 56 8c 54 43 47 50 .TCGP..TPMV.TCGP 4440: 0a 06 4d 4f 52 5f 8c 54 43 47 50 0a 07 54 56 45 ..MOR_.TCGP..TVE 4450: 4e 5b 80 54 43 47 43 01 0a 72 0a 02 5b 81 10 54 N[.TCGC..r..[..T 4460: 43 47 43 11 54 49 44 58 08 54 50 44 41 08 5b 86 CGC.TIDX.TPDA.[. 4470: 1c 54 49 44 58 54 50 44 41 11 00 40 20 54 50 50 .TIDXTPDA..@ TPP 4480: 31 08 50 50 4c 4f 08 54 50 50 33 08 5b 80 53 4d 1.PPLO.TPP3.[.SM 4490: 49 50 01 0a b2 0a 02 5b 81 10 53 4d 49 50 02 53 IP.....[..SMIP.S 44a0: 4d 49 54 08 53 4d 49 44 08 5b 80 54 50 4d 46 00 MIT.SMID.[.TPMF. 44b0: 0c 00 00 ff ff 0b 55 aa 5b 81 10 54 50 4d 46 10 ......U.[..TPMF. 44c0: 50 50 49 50 08 50 50 49 43 08 5b 82 42 59 54 50 PPIP.PPIC.[.BYTP 44d0: 4d 5f 08 54 4d 50 56 0a 00 14 46 08 5f 48 49 44 M_.TMPV...F._HID 44e0: 00 a0 0f 93 54 56 49 44 0b d1 15 a4 0c 24 d8 01 ....TVID.....$.. 44f0: 02 a0 18 91 93 54 56 49 44 0b 50 10 93 54 56 49 .....TVID.P..TVI 4500: 44 0b 0b 10 a4 0c 5c a3 10 00 a0 0f 93 54 56 49 D.....\......TVI 4510: 44 0b fa 19 a4 0c 4d cf 35 04 a0 0f 93 54 44 49 D.....M.5....TDI 4520: 44 0b 02 10 a4 0c 08 6d 01 02 a0 0f 93 54 44 49 D......m.....TDI 4530: 44 0b 01 10 a4 0c 08 6d 01 01 a0 0f 93 54 56 49 D......m.....TVI 4540: 44 0b 14 11 a4 0c 06 8d 12 00 a0 0f 93 54 56 49 D............TVI 4550: 44 0b 4a 10 a4 0c 4d af 12 00 a4 0c 41 d0 0c 31 D.J...M.....A..1 4560: 08 5f 43 49 44 0c 41 d0 0c 31 08 5f 55 49 44 0a ._CID.A..1._UID. 4570: 01 5b 80 54 4d 4d 42 00 0c 00 00 d4 fe 0b 00 10 .[.TMMB......... 4580: 5b 81 26 54 4d 4d 42 11 41 43 43 53 08 00 48 0b [.&TMMB.ACCS..H. 4590: 54 53 54 41 08 54 42 43 41 08 00 80 73 07 54 56 TSTA.TBCA...s.TV 45a0: 49 44 10 54 44 49 44 10 14 23 5f 53 54 41 00 a0 ID.TDID..#_STA.. 45b0: 0b 93 41 43 43 53 0a ff a4 0a 00 a1 0d a0 0b 93 ..ACCS.......... 45c0: 54 50 4d 45 0a 00 a4 0a 00 a4 0a 0f 08 42 55 46 TPME.........BUF 45d0: 31 11 11 0a 0e 86 09 00 00 00 00 d4 fe 00 50 00 1.............P. 45e0: 00 79 00 14 0b 5f 43 52 53 08 a4 42 55 46 31 14 .y..._CRS..BUF1. 45f0: 3c 55 43 4d 50 02 a0 0a 92 93 0a 10 87 68 a4 0a 4f30: a0 1e 90 62 92 57 42 4f 4e 5c 57 42 45 43 0a 07 ...b.WBON\WBEC.. 4f40: 0a 00 5c 57 42 45 43 0a 06 0a 00 5b 22 0a 64 a0 ..\WBEC....[".d. 4f50: 0e 92 93 61 0a ff 5c 57 42 45 43 0a 07 61 a0 0e ...a..\WBEC..a.. 4f60: 92 93 60 0a ff 5c 57 42 45 43 0a 06 60 a0 05 93 ..`..\WBEC..`... 4f70: 68 0a 03 a0 0a 93 68 0a 07 5b 22 0b f4 01 14 42 h.....h..["....B 4f80: 07 45 56 4e 54 01 a0 37 5c 48 38 44 52 a0 18 68 .EVNT..7\H8DR..h 4f90: 7d 48 41 4d 37 0a 01 48 41 4d 37 7d 48 41 4d 35 }HAM7..HAM7}HAM5 4fa0: 0a 04 48 41 4d 35 a1 17 7b 48 41 4d 37 0a fe 48 ..HAM5..{HAM7..H 4fb0: 41 4d 37 7b 48 41 4d 35 0a fb 48 41 4d 35 a1 32 AM7{HAM5..HAM5.2 4fc0: a0 18 68 5c 4d 42 45 43 0a 17 0a ff 0a 01 5c 4d ..h\MBEC......\M 4fd0: 42 45 43 0a 15 0a ff 0a 04 a1 17 5c 4d 42 45 43 BEC........\MBEC 4fe0: 0a 17 0a fe 0a 00 5c 4d 42 45 43 0a 15 0a fb 0a ......\MBEC..... 4ff0: 00 5b 84 49 07 50 55 42 53 03 00 00 14 2b 5f 53 .[.I.PUBS....+_S 5000: 54 41 00 a0 0c 5c 48 38 44 52 70 48 55 42 53 60 TA...\H8DRpHUBS` 5010: a1 0c 7b 5c 52 42 45 43 0a 3b 0a 10 60 a0 05 60 ..{\RBEC.;..`..` 5020: a4 0a 01 a1 04 a4 0a 00 14 21 5f 4f 4e 5f 00 a0 .........!_ON_.. 5030: 0d 5c 48 38 44 52 70 0a 01 48 55 42 53 a1 0c 5c .\H8DRp..HUBS..\ 5040: 4d 42 45 43 0a 3b 0a ff 0a 10 14 21 5f 4f 46 46 MBEC.;.....!_OFF 5050: 00 a0 0d 5c 48 38 44 52 70 0a 00 48 55 42 53 a1 ...\H8DRp..HUBS. 5060: 0c 5c 4d 42 45 43 0a 3b 0a ef 0a 00 14 2b 43 48 .\MBEC.;.....+CH 5070: 4b 53 00 70 0b e8 03 60 a2 13 48 4d 50 52 5b 22 KS.p...`..HMPR[" 5080: 0a 01 76 60 a0 07 92 60 a4 0b 80 80 a0 07 48 4d ..v`...`......HM 5090: 44 4e a4 00 a4 0b 81 80 14 4b 12 4c 50 4d 44 00 DN.......K.LPMD. 50a0: 70 0a 00 60 70 0a 00 61 70 0a 00 62 a0 40 08 5c p..`p..ap..b.@.\ 50b0: 48 38 44 52 a0 48 07 48 50 41 43 a0 0c 48 50 4c H8DR.H.HPAC..HPL 50c0: 4f 70 5c 4c 50 53 54 60 a1 44 06 a0 41 06 95 48 Op\LPST`.D..A..H 50d0: 57 41 54 0a 5a a0 1f 48 42 30 41 a0 19 91 7b 48 WAT.Z..HB0A...{H 50e0: 42 30 53 0a 10 00 95 7b 48 42 30 53 0a 07 00 0a B0S....{HB0S.... 50f0: 02 70 0a 01 61 a1 05 70 0a 01 61 a0 1f 48 42 31 .p..a..p..a..HB1 5100: 41 a0 19 91 7b 48 42 31 53 0a 10 00 95 7b 48 42 A...{HB1S....{HB 5110: 31 53 0a 07 00 0a 02 70 0a 01 62 a1 05 70 0a 01 1S.....p..b..p.. 5120: 62 a0 0b 90 61 62 70 5c 4c 50 53 54 60 a1 44 09 b...abp\LPST`.D. 5130: a0 41 09 7b 5c 52 42 45 43 0a 46 0a 10 00 a0 13 .A.{\RBEC.F..... 5140: 7b 5c 52 42 45 43 0a 34 0a 80 00 70 5c 4c 50 53 {\RBEC.4...p\LPS 5150: 54 60 a1 4f 06 a0 4c 06 95 5c 52 42 45 43 0a c9 T`.O..L..\RBEC.. 5160: 0a 5a 70 5c 52 42 45 43 0a 38 63 a0 1a 7b 63 0a .Zp\RBEC.8c..{c. 5170: 80 00 a0 13 91 7b 63 0a 10 00 95 7b 63 0a 07 00 .....{c....{c... 5180: 0a 02 70 0a 01 61 a1 05 70 0a 01 62 70 5c 52 42 ..p..a..p..bp\RB 5190: 45 43 0a 39 63 a0 1a 7b 63 0a 80 00 a0 13 91 7b EC.9c..{c......{ 51a0: 63 0a 10 00 95 7b 63 0a 07 00 0a 02 70 0a 01 61 c....{c.....p..a 51b0: a1 05 70 0a 01 62 a0 0b 90 61 62 70 5c 4c 50 53 ..p..b...abp\LPS 51c0: 54 60 a4 60 14 3a 43 4c 50 4d 00 a0 33 7b 5c 50 T`.`.:CLPM..3{\P 51d0: 50 4d 46 0a 01 00 a0 0d 5c 4f 53 50 58 5c 50 4e PMF.....\OSPX\PN 51e0: 54 46 0a 80 a1 1a 70 4c 50 4d 44 60 a0 09 60 5c TF....pLPMD`..`\ 51f0: 53 54 45 50 0a 04 a1 08 5c 53 54 45 50 0a 05 5b STEP....\STEP..[ 5200: 01 4d 43 50 55 07 14 44 04 5f 51 31 30 00 a0 3c .MCPU..D._Q10..< 5210: 5c 2f 06 5f 53 42 5f 50 43 49 30 4c 50 43 5f 45 \/._SB_PCI0LPC_E 5220: 43 5f 5f 48 4b 45 59 4d 48 4b 4b 0a 01 5c 2f 06 C__HKEYMHKK..\/. 5230: 5f 53 42 5f 50 43 49 30 4c 50 43 5f 45 43 5f 5f _SB_PCI0LPC_EC__ 5240: 48 4b 45 59 4d 48 4b 51 0b 01 10 14 07 5f 51 31 HKEYMHKQ....._Q1 5250: 31 00 a3 14 44 04 5f 51 31 32 00 a0 3c 5c 2f 06 1...D._Q12..<\/. 5260: 5f 53 42 5f 50 43 49 30 4c 50 43 5f 45 43 5f 5f _SB_PCI0LPC_EC__ 5270: 48 4b 45 59 4d 48 4b 4b 0a 02 5c 2f 06 5f 53 42 HKEYMHKK..\/._SB 5280: 5f 50 43 49 30 4c 50 43 5f 45 43 5f 5f 48 4b 45 _PCI0LPC_EC__HKE 5290: 59 4d 48 4b 51 0b 02 10 14 41 05 5f 51 31 33 00 YMHKQ....A._Q13. 52a0: a0 3a 5c 2f 06 5f 53 42 5f 50 43 49 30 4c 50 43 .:\/._SB_PCI0LPC 52b0: 5f 45 43 5f 5f 48 4b 45 59 44 48 4b 43 5c 2f 06 _EC__HKEYDHKC\/. 52c0: 5f 53 42 5f 50 43 49 30 4c 50 43 5f 45 43 5f 5f _SB_PCI0LPC_EC__ 52d0: 48 4b 45 59 4d 48 4b 51 0b 04 10 a1 0e 86 5c 2e HKEYMHKQ......\. 52e0: 5f 53 42 5f 53 4c 50 42 0a 80 14 44 04 5f 51 36 _SB_SLPB...D._Q6 52f0: 34 00 a0 3c 5c 2f 06 5f 53 42 5f 50 43 49 30 4c 4..<\/._SB_PCI0L 5300: 50 43 5f 45 43 5f 5f 48 4b 45 59 4d 48 4b 4b 0a PC_EC__HKEYMHKK. 5310: 10 5c 2f 06 5f 53 42 5f 50 43 49 30 4c 50 43 5f .\/._SB_PCI0LPC_ 5320: 45 43 5f 5f 48 4b 45 59 4d 48 4b 51 0b 05 10 14 EC__HKEYMHKQ.... 5330: 44 04 5f 51 36 35 00 a0 3c 5c 2f 06 5f 53 42 5f D._Q65..<\/._SB_ 5340: 50 43 49 30 4c 50 43 5f 45 43 5f 5f 48 4b 45 59 PCI0LPC_EC__HKEY 5350: 4d 48 4b 4b 0a 20 5c 2f 06 5f 53 42 5f 50 43 49 MHKK. \/._SB_PCI 5360: 30 4c 50 43 5f 45 43 5f 5f 48 4b 45 59 4d 48 4b 0LPC_EC__HKEYMHK 5370: 51 0b 06 10 14 4b 09 5f 51 31 36 00 a0 3c 5c 2f Q....K._Q16..<\/ 5380: 06 5f 53 42 5f 50 43 49 30 4c 50 43 5f 45 43 5f ._SB_PCI0LPC_EC_ 5390: 5f 48 4b 45 59 4d 48 4b 4b 0a 40 5c 2f 06 5f 53 _HKEYMHKK.@\/._S 53a0: 42 5f 50 43 49 30 4c 50 43 5f 45 43 5f 5f 48 4b B_PCI0LPC_EC__HK 53b0: 45 59 4d 48 4b 51 0b 07 10 a1 46 05 a0 21 93 5c EYMHKQ....F..!.\ 53c0: 56 48 59 42 0a 03 0a 00 0a 03 86 5c 2f 03 5f 53 VHYB.......\/._S 53d0: 42 5f 50 43 49 30 56 49 44 5f 0a 80 a4 00 a0 18 B_PCI0VID_...... 53e0: 56 49 47 44 5c 2f 04 5f 53 42 5f 50 43 49 30 56 VIGD\/._SB_PCI0V 53f0: 49 44 5f 56 53 57 54 a1 18 5c 2f 05 5f 53 42 5f ID_VSWT..\/._SB_ 5400: 50 43 49 30 50 45 47 5f 56 49 44 5f 56 53 57 54 PCI0PEG_VID_VSWT 5410: 14 42 05 5f 51 31 37 00 a0 3c 5c 2f 06 5f 53 42 .B._Q17..<\/._SB 5420: 5f 50 43 49 30 4c 50 43 5f 45 43 5f 5f 48 4b 45 _PCI0LPC_EC__HKE 5430: 59 4d 48 4b 4b 0a 80 5c 2f 06 5f 53 42 5f 50 43 YMHKK..\/._SB_PC 5440: 49 30 4c 50 43 5f 45 43 5f 5f 48 4b 45 59 4d 48 I0LPC_EC__HKEYMH 5450: 4b 51 0b 08 10 a1 0d a0 0b 92 5c 57 4e 54 46 56 KQ........\WNTFV 5460: 45 58 50 14 46 04 5f 51 31 38 00 a0 3d 5c 2f 06 EXP.F._Q18..=\/. 5470: 5f 53 42 5f 50 43 49 30 4c 50 43 5f 45 43 5f 5f _SB_PCI0LPC_EC__ 5480: 48 4b 45 59 4d 48 4b 4b 0b 00 01 5c 2f 06 5f 53 HKEYMHKK...\/._S 5490: 42 5f 50 43 49 30 4c 50 43 5f 45 43 5f 5f 48 4b B_PCI0LPC_EC__HK 54a0: 45 59 4d 48 4b 51 0b 09 10 a3 14 45 04 5f 51 36 EYMHKQ.....E._Q6 54b0: 36 00 a0 3d 5c 2f 06 5f 53 42 5f 50 43 49 30 4c 6..=\/._SB_PCI0L 54c0: 50 43 5f 45 43 5f 5f 48 4b 45 59 4d 48 4b 4b 0b PC_EC__HKEYMHKK. 54d0: 00 02 5c 2f 06 5f 53 42 5f 50 43 49 30 4c 50 43 ..\/._SB_PCI0LPC 54e0: 5f 45 43 5f 5f 48 4b 45 59 4d 48 4b 51 0b 0a 10 _EC__HKEYMHKQ... 54f0: 14 45 04 5f 51 31 41 00 a0 3d 5c 2f 06 5f 53 42 .E._Q1A..=\/._SB 5500: 5f 50 43 49 30 4c 50 43 5f 45 43 5f 5f 48 4b 45 _PCI0LPC_EC__HKE 5510: 59 4d 48 4b 4b 0b 00 04 5c 2f 06 5f 53 42 5f 50 YMHKK...\/._SB_P 5520: 43 49 30 4c 50 43 5f 45 43 5f 5f 48 4b 45 59 4d CI0LPC_EC__HKEYM 5530: 48 4b 51 0b 0b 10 14 24 5f 51 31 42 00 5c 2f 06 HKQ....$_Q1B.\/. 5540: 5f 53 42 5f 50 43 49 30 4c 50 43 5f 45 43 5f 5f _SB_PCI0LPC_EC__ 5550: 48 4b 45 59 4d 48 4b 51 0b 0c 10 14 45 04 5f 51 HKEYMHKQ....E._Q 5560: 36 32 00 a0 3d 5c 2f 06 5f 53 42 5f 50 43 49 30 62..=\/._SB_PCI0 5570: 4c 50 43 5f 45 43 5f 5f 48 4b 45 59 4d 48 4b 4b LPC_EC__HKEYMHKK 5580: 0b 00 10 5c 2f 06 5f 53 42 5f 50 43 49 30 4c 50 ...\/._SB_PCI0LP 5590: 43 5f 45 43 5f 5f 48 4b 45 59 4d 48 4b 51 0b 0d C_EC__HKEYMHKQ.. 55a0: 10 14 45 04 5f 51 36 30 00 a0 3d 5c 2f 06 5f 53 ..E._Q60..=\/._S 55b0: 42 5f 50 43 49 30 4c 50 43 5f 45 43 5f 5f 48 4b B_PCI0LPC_EC__HK 55c0: 45 59 4d 48 4b 4b 0b 00 20 5c 2f 06 5f 53 42 5f EYMHKK.. \/._SB_ 55d0: 50 43 49 30 4c 50 43 5f 45 43 5f 5f 48 4b 45 59 PCI0LPC_EC__HKEY 55e0: 4d 48 4b 51 0b 0e 10 14 45 04 5f 51 36 31 00 a0 MHKQ....E._Q61.. 55f0: 3d 5c 2f 06 5f 53 42 5f 50 43 49 30 4c 50 43 5f =\/._SB_PCI0LPC_ 5600: 45 43 5f 5f 48 4b 45 59 4d 48 4b 4b 0b 00 40 5c EC__HKEYMHKK..@\ 5610: 2f 06 5f 53 42 5f 50 43 49 30 4c 50 43 5f 45 43 /._SB_PCI0LPC_EC 5620: 5f 5f 48 4b 45 59 4d 48 4b 51 0b 0f 10 14 4e 04 __HKEYMHKQ....N. 5630: 5f 51 31 46 00 a0 3f 5c 2f 06 5f 53 42 5f 50 43 _Q1F..?\/._SB_PC 5640: 49 30 4c 50 43 5f 45 43 5f 5f 48 4b 45 59 4d 48 I0LPC_EC__HKEYMH 5650: 4b 4b 0c 00 00 02 00 5c 2f 06 5f 53 42 5f 50 43 KK.....\/._SB_PC 5660: 49 30 4c 50 43 5f 45 43 5f 5f 48 4b 45 59 4d 48 I0LPC_EC__HKEYMH 5670: 4b 51 0b 12 10 5c 55 43 4d 53 0a 0e 14 47 04 5f KQ...\UCMS...G._ 5680: 51 36 37 00 a0 3f 5c 2f 06 5f 53 42 5f 50 43 49 Q67..?\/._SB_PCI 5690: 30 4c 50 43 5f 45 43 5f 5f 48 4b 45 59 4d 48 4b 0LPC_EC__HKEYMHK 56a0: 4b 0c 00 00 04 00 5c 2f 06 5f 53 42 5f 50 43 49 K.....\/._SB_PCI 56b0: 30 4c 50 43 5f 45 43 5f 5f 48 4b 45 59 4d 48 4b 0LPC_EC__HKEYMHK 56c0: 51 0b 13 10 14 47 04 5f 51 31 43 00 a0 3f 5c 2f Q....G._Q1C..?\/ 56d0: 06 5f 53 42 5f 50 43 49 30 4c 50 43 5f 45 43 5f ._SB_PCI0LPC_EC_ 56e0: 5f 48 4b 45 59 4d 48 4b 4b 0c 00 00 00 01 5c 2f _HKEYMHKK.....\/ 56f0: 06 5f 53 42 5f 50 43 49 30 4c 50 43 5f 45 43 5f ._SB_PCI0LPC_EC_ 5700: 5f 48 4b 45 59 4d 48 4b 51 0b 19 10 14 47 04 5f _HKEYMHKQ....G._ 5710: 51 31 44 00 a0 3f 5c 2f 06 5f 53 42 5f 50 43 49 Q1D..?\/._SB_PCI 5720: 30 4c 50 43 5f 45 43 5f 5f 48 4b 45 59 4d 48 4b 0LPC_EC__HKEYMHK 5730: 4b 0c 00 00 00 02 5c 2f 06 5f 53 42 5f 50 43 49 K.....\/._SB_PCI 5740: 30 4c 50 43 5f 45 43 5f 5f 48 4b 45 59 4d 48 4b 0LPC_EC__HKEYMHK 5750: 51 0b 1a 10 14 48 0f 5f 51 32 36 00 a0 28 56 49 Q....H._Q26..(VI 5760: 47 44 a0 0b 5c 57 56 49 53 5c 56 42 54 44 5c 2f GD..\WVIS\VBTD\/ 5770: 05 5f 53 42 5f 50 43 49 30 4c 50 43 5f 45 43 5f ._SB_PCI0LPC_EC_ 5780: 5f 42 52 4e 53 a1 08 5c 55 43 4d 53 0a 12 a0 2e _BRNS..\UCMS.... 5790: 5c 2f 05 5f 53 42 5f 50 43 49 30 50 45 47 5f 56 \/._SB_PCI0PEG_V 57a0: 49 44 5f 49 53 4f 50 86 5c 2f 04 5f 53 42 5f 50 ID_ISOP.\/._SB_P 57b0: 43 49 30 50 45 47 5f 56 49 44 5f 0a df 5b 22 0b CI0PEG_VID_..[". 57c0: f4 01 86 41 43 5f 5f 0a 80 86 5c 2e 5f 54 5a 5f ...AC__...\._TZ_ 57d0: 54 48 4d 30 0a 80 a0 0e 5c 57 58 50 46 5b 23 4d THM0....\WXPF[#M 57e0: 43 50 55 ff ff 70 0a 01 50 57 52 53 a0 18 7b 5c CPU..p..PWRS..{\ 57f0: 50 50 4d 46 0a 01 00 a0 0d 5c 4f 53 50 58 5c 50 PPMF.....\OSPX\P 5800: 4e 54 46 0a 80 a0 0a 5c 57 58 50 46 5b 22 0a 64 NTF....\WXPF[".d 5810: a0 0d 5c 4f 53 43 34 5c 50 4e 54 46 0a 81 a0 0c ..\OSC4\PNTF.... 5820: 5c 57 58 50 46 5b 27 4d 43 50 55 5c 2f 06 5f 53 \WXPF['MCPU\/._S 5830: 42 5f 50 43 49 30 4c 50 43 5f 45 43 5f 5f 48 4b B_PCI0LPC_EC__HK 5840: 45 59 4d 48 4b 51 0b 40 60 41 54 4d 43 14 24 5f EYMHKQ.@`ATMC.$_ 5850: 51 32 45 00 5c 2f 06 5f 53 42 5f 50 43 49 30 4c Q2E.\/._SB_PCI0L 5860: 50 43 5f 45 43 5f 5f 48 4b 45 59 4d 48 4b 51 0b PC_EC__HKEYMHKQ. 5870: 40 60 14 48 0f 5f 51 32 37 00 a0 28 56 49 47 44 @`.H._Q27..(VIGD 5880: a0 0b 5c 57 56 49 53 5c 56 42 54 44 5c 2f 05 5f ..\WVIS\VBTD\/._ 5890: 53 42 5f 50 43 49 30 4c 50 43 5f 45 43 5f 5f 42 SB_PCI0LPC_EC__B 58a0: 52 4e 53 a1 08 5c 55 43 4d 53 0a 12 a0 2e 5c 2f RNS..\UCMS....\/ 58b0: 05 5f 53 42 5f 50 43 49 30 50 45 47 5f 56 49 44 ._SB_PCI0PEG_VID 58c0: 5f 49 53 4f 50 86 5c 2f 04 5f 53 42 5f 50 43 49 _ISOP.\/._SB_PCI 58d0: 30 50 45 47 5f 56 49 44 5f 0a df 5b 22 0b f4 01 0PEG_VID_..["... 58e0: 86 41 43 5f 5f 0a 80 86 5c 2e 5f 54 5a 5f 54 48 .AC__...\._TZ_TH 58f0: 4d 30 0a 80 a0 0e 5c 57 58 50 46 5b 23 4d 43 50 M0....\WXPF[#MCP 5900: 55 ff ff 70 0a 00 50 57 52 53 a0 18 7b 5c 50 50 U..p..PWRS..{\PP 5910: 4d 46 0a 01 00 a0 0d 5c 4f 53 50 58 5c 50 4e 54 MF.....\OSPX\PNT 5920: 46 0a 80 a0 0a 5c 57 58 50 46 5b 22 0a 64 a0 0d F....\WXPF[".d.. 5930: 5c 4f 53 43 34 5c 50 4e 54 46 0a 81 a0 0c 5c 57 \OSC4\PNTF....\W 5940: 58 50 46 5b 27 4d 43 50 55 5c 2f 06 5f 53 42 5f XPF['MCPU\/._SB_ 5950: 50 43 49 30 4c 50 43 5f 45 43 5f 5f 48 4b 45 59 PCI0LPC_EC__HKEY 5960: 4d 48 4b 51 0b 40 60 41 54 4d 43 14 24 5f 51 32 MHKQ.@`ATMC.$_Q2 5970: 46 00 5c 2f 06 5f 53 42 5f 50 43 49 30 4c 50 43 F.\/._SB_PCI0LPC 5980: 5f 45 43 5f 5f 48 4b 45 59 4d 48 4b 51 0b 40 60 _EC__HKEYMHKQ.@` 5990: 14 49 0a 5f 51 32 41 00 5c 56 43 4d 53 0a 01 5c .I._Q2A.\VCMS..\ 59a0: 2f 03 5f 53 42 5f 4c 49 44 5f 5f 4c 49 44 a0 4b /._SB_LID__LID.K 59b0: 08 93 5c 49 4c 4e 46 0a 00 5c 2f 06 5f 53 42 5f ..\ILNF..\/._SB_ 59c0: 50 43 49 30 4c 50 43 5f 45 43 5f 5f 48 4b 45 59 PCI0LPC_EC__HKEY 59d0: 4d 48 4b 51 0b 02 50 a0 42 06 93 5c 50 4c 55 58 MHKQ..P.B..\PLUX 59e0: 0a 00 a0 2f 56 49 47 44 5c 2f 04 5f 53 42 5f 50 .../VIGD\/._SB_P 59f0: 43 49 30 56 49 44 5f 47 4c 49 53 0a 01 5c 2f 04 CI0VID_GLIS..\/. 5a00: 5f 53 42 5f 50 43 49 30 56 49 44 5f 56 4c 4f 43 _SB_PCI0VID_VLOC 5a10: 0a 01 a1 1a 5c 2f 05 5f 53 42 5f 50 43 49 30 50 ....\/._SB_PCI0P 5a20: 45 47 5f 56 49 44 5f 56 4c 4f 43 0a 01 86 5c 2e EG_VID_VLOC...\. 5a30: 5f 53 42 5f 4c 49 44 5f 0a 80 14 4b 09 5f 51 32 _SB_LID_...K._Q2 5a40: 42 00 5c 55 43 4d 53 0a 0d 5c 56 43 4d 53 0a 01 B.\UCMS..\VCMS.. 5a50: 5c 2f 03 5f 53 42 5f 4c 49 44 5f 5f 4c 49 44 a0 \/._SB_LID__LID. 5a60: 46 07 93 5c 49 4c 4e 46 0a 00 5c 2f 06 5f 53 42 F..\ILNF..\/._SB 5a70: 5f 50 43 49 30 4c 50 43 5f 45 43 5f 5f 48 4b 45 _PCI0LPC_EC__HKE 5a80: 59 4d 48 4b 51 0b 01 50 a0 4d 04 93 5c 50 4c 55 YMHKQ..P.M..\PLU 5a90: 58 0a 00 a0 1a 56 49 47 44 5c 2f 04 5f 53 42 5f X....VIGD\/._SB_ 5aa0: 50 43 49 30 56 49 44 5f 47 4c 49 53 0a 00 a1 1a PCI0VID_GLIS.... 5ab0: 5c 2f 05 5f 53 42 5f 50 43 49 30 50 45 47 5f 56 \/._SB_PCI0PEG_V 5ac0: 49 44 5f 56 4c 4f 43 0a 00 86 5c 2e 5f 53 42 5f ID_VLOC...\._SB_ 5ad0: 4c 49 44 5f 0a 80 14 06 5f 51 33 44 00 14 43 04 LID_...._Q3D..C. 5ae0: 5f 51 34 38 00 a0 3b 7b 5c 50 50 4d 46 0a 01 00 _Q48..;{\PPMF... 5af0: a0 0d 5c 4f 53 50 58 5c 50 4e 54 46 0a 80 a1 08 ..\OSPX\PNTF.... 5b00: 5c 53 54 45 50 0a 04 70 0a 01 5c 2f 05 5f 53 42 \STEP..p..\/._SB 5b10: 5f 50 43 49 30 4c 50 43 5f 45 43 5f 5f 43 41 4c _PCI0LPC_EC__CAL 5b20: 4d 14 28 5f 51 34 39 00 a0 21 7b 5c 50 50 4d 46 M.(_Q49..!{\PPMF 5b30: 0a 01 00 a0 0d 5c 4f 53 50 58 5c 50 4e 54 46 0a .....\OSPX\PNTF. 5b40: 80 a1 08 5c 53 54 45 50 0a 05 14 10 5f 51 37 46 ...\STEP...._Q7F 5b50: 00 5b 32 01 00 00 01 80 0b c3 02 14 24 5f 51 34 .[2.........$_Q4 5b60: 45 00 5c 2f 06 5f 53 42 5f 50 43 49 30 4c 50 43 E.\/._SB_PCI0LPC 5b70: 5f 45 43 5f 5f 48 4b 45 59 4d 48 4b 51 0b 11 60 _EC__HKEYMHKQ..` 5b80: 14 24 5f 51 34 46 00 5c 2f 06 5f 53 42 5f 50 43 .$_Q4F.\/._SB_PC 5b90: 49 30 4c 50 43 5f 45 43 5f 5f 48 4b 45 59 4d 48 I0LPC_EC__HKEYMH 5ba0: 4b 51 0b 12 60 14 24 5f 51 34 36 00 5c 2f 06 5f KQ..`.$_Q46.\/._ 5bb0: 53 42 5f 50 43 49 30 4c 50 43 5f 45 43 5f 5f 48 SB_PCI0LPC_EC__H 5bc0: 4b 45 59 4d 48 4b 51 0b 12 60 14 24 5f 51 32 32 KEYMHKQ..`.$_Q22 5bd0: 00 43 4c 50 4d a0 0c 48 42 30 41 86 42 41 54 30 .CLPM..HB0A.BAT0 5be0: 0a 80 a0 0c 48 42 31 41 86 42 41 54 31 0a 80 14 ....HB1A.BAT1... 5bf0: 11 5f 51 34 41 00 43 4c 50 4d 86 42 41 54 30 0a ._Q4A.CLPM.BAT0. 5c00: 81 14 0d 5f 51 34 42 00 86 42 41 54 30 0a 80 14 ..._Q4B..BAT0... 5c10: 49 08 5f 51 34 43 00 43 4c 50 4d a0 41 06 5c 57 I._Q4C.CLPM.A.\W 5c20: 4e 54 46 a0 3d 48 42 31 41 70 0a 01 5c 2f 06 5f NTF.=HB1Ap..\/._ 5c30: 53 42 5f 50 43 49 30 4c 50 43 5f 45 43 5f 5f 42 SB_PCI0LPC_EC__B 5c40: 41 54 31 58 42 31 53 86 5c 2f 05 5f 53 42 5f 50 AT1XB1S.\/._SB_P 5c50: 43 49 30 4c 50 43 5f 45 43 5f 5f 42 41 54 31 0a CI0LPC_EC__BAT1. 5c60: 01 a1 1b 86 5c 2f 05 5f 53 42 5f 50 43 49 30 4c ....\/._SB_PCI0L 5c70: 50 43 5f 45 43 5f 5f 42 41 54 31 0a 03 a1 1b 86 PC_EC__BAT1..... 5c80: 5c 2f 05 5f 53 42 5f 50 43 49 30 4c 50 43 5f 45 \/._SB_PCI0LPC_E 5c90: 43 5f 5f 42 41 54 31 0a 81 14 25 5f 51 34 44 00 C__BAT1...%_Q4D. 5ca0: a0 1e 7b 5e 2e 42 41 54 31 42 31 53 54 5e 2e 42 ..{^.BAT1B1ST^.B 5cb0: 41 54 31 58 42 31 53 00 86 42 41 54 31 0a 80 14 AT1XB1S..BAT1... 5cc0: 11 5f 51 32 34 00 43 4c 50 4d 86 42 41 54 30 0a ._Q24.CLPM.BAT0. 5cd0: 80 14 29 5f 51 32 35 00 a0 22 7b 5e 2e 42 41 54 ..)_Q25.."{^.BAT 5ce0: 31 42 31 53 54 5e 2e 42 41 54 31 58 42 31 53 00 1B1ST^.BAT1XB1S. 5cf0: 43 4c 50 4d 86 42 41 54 31 0a 80 14 47 08 42 41 CLPM.BAT1...G.BA 5d00: 54 57 01 70 5c 2f 06 5f 53 42 5f 50 43 49 30 4c TW.p\/._SB_PCI0L 5d10: 50 43 5f 45 43 5f 5f 42 41 54 31 58 42 31 53 60 PC_EC__BAT1XB1S` 5d20: a0 0c 5c 48 38 44 52 70 48 42 31 41 61 a1 18 a0 ..\H8DRpHB1Aa... 5d30: 10 7b 5c 52 42 45 43 0a 39 0a 80 00 70 0a 01 61 .{\RBEC.9...p..a 5d40: a1 05 70 0a 00 61 a0 3c 7f 60 61 00 70 61 5c 2f ..p..a.<.`a.pa\/ 5d50: 06 5f 53 42 5f 50 43 49 30 4c 50 43 5f 45 43 5f ._SB_PCI0LPC_EC_ 5d60: 5f 42 41 54 31 58 42 31 53 86 5c 2f 05 5f 53 42 _BAT1XB1S.\/._SB 5d70: 5f 50 43 49 30 4c 50 43 5f 45 43 5f 5f 42 41 54 _PCI0LPC_EC__BAT 5d80: 31 0a 01 5b 81 31 45 43 4f 52 01 00 40 50 53 42 1..[.1ECOR..@PSB 5d90: 52 43 10 53 42 46 43 10 53 42 41 45 10 53 42 52 RC.SBFC.SBAE.SBR 5da0: 53 10 53 42 41 43 10 53 42 56 4f 10 53 42 41 46 S.SBAC.SBVO.SBAF 5db0: 10 53 42 42 53 10 5b 81 18 45 43 4f 52 01 00 40 .SBBS.[..ECOR..@ 5dc0: 50 53 42 42 4d 10 53 42 4d 44 10 53 42 43 43 10 PSBBM.SBMD.SBCC. 5dd0: 5b 81 27 45 43 4f 52 01 00 40 50 53 42 44 43 10 [.'ECOR..@PSBDC. 5de0: 53 42 44 56 10 53 42 4f 4d 10 53 42 53 49 10 53 SBDV.SBOM.SBSI.S 5df0: 42 44 54 10 53 42 53 4e 10 5b 81 0e 45 43 4f 52 BDT.SBSN.[..ECOR 5e00: 01 00 40 50 53 42 43 48 20 5b 81 0f 45 43 4f 52 ..@PSBCH [..ECOR 5e10: 01 00 40 50 53 42 4d 4e 40 08 5b 81 0f 45 43 4f ..@PSBMN@.[..ECO 5e20: 52 01 00 40 50 53 42 44 4e 40 08 5b 01 42 41 54 R..@PSBDN@.[.BAT 5e30: 4d 07 14 48 16 47 42 49 46 03 5b 23 42 41 54 4d M..H.GBIF.[#BATM 5e40: ff ff a0 48 12 6a 7d 68 0a 01 48 49 49 44 70 53 ...H.j}h..HIIDpS 5e50: 42 42 4d 67 7a 67 0a 0f 67 7f 67 0a 01 88 69 0a BBMgzg..g.g...i. 5e60: 00 00 70 68 48 49 49 44 a0 0a 67 77 53 42 46 43 ..phHIID..gwSBFC 5e70: 0a 0a 61 a1 07 70 53 42 46 43 61 70 61 88 69 0a ..a..pSBFCapa.i. 5e80: 02 00 7d 68 0a 02 48 49 49 44 a0 0a 67 77 53 42 ..}h..HIID..gwSB 5e90: 44 43 0a 0a 60 a1 07 70 53 42 44 43 60 70 60 88 DC..`..pSBDC`p`. 5ea0: 69 0a 01 00 78 61 0a 14 62 88 69 0a 05 00 a0 0a i...xa..b.i..... 5eb0: 67 70 0a c8 88 69 0a 06 00 a1 21 a0 15 53 42 44 gp...i....!..SBD 5ec0: 56 78 0c 40 0d 03 00 53 42 44 56 62 88 69 0a 06 Vx.@...SBDVb.i.. 5ed0: 00 a1 09 70 0a 00 88 69 0a 06 00 70 53 42 44 56 ...p...i...pSBDV 5ee0: 88 69 0a 04 00 70 53 42 53 4e 60 08 53 45 52 4e .i...pSBSN`.SERN 5ef0: 11 09 0a 06 20 20 20 20 20 00 70 0a 04 62 a2 15 .... .p..b.. 5f00: 60 78 60 0a 0a 61 60 72 61 0a 30 88 53 45 52 4e `x`..a`ra.0.SERN 5f10: 62 00 76 62 70 53 45 52 4e 88 69 0a 0a 00 7d 68 b.vbpSERN.i...}h 5f20: 0a 06 48 49 49 44 70 53 42 44 4e 88 69 0a 09 00 ..HIIDpSBDN.i... 5f30: 7d 68 0a 04 48 49 49 44 08 42 54 59 50 11 08 0a }h..HIID.BTYP... 5f40: 05 00 00 00 00 00 70 53 42 43 48 42 54 59 50 70 ......pSBCHBTYPp 5f50: 42 54 59 50 88 69 0a 0b 00 7d 68 0a 05 48 49 49 BTYP.i...}h..HII 5f60: 44 70 53 42 4d 4e 88 69 0a 0c 00 a1 27 70 0c ff DpSBMN.i....'p.. 5f70: ff ff ff 88 69 0a 01 00 70 0a 00 88 69 0a 05 00 ....i...p...i... 5f80: 70 0a 00 88 69 0a 06 00 70 0c ff ff ff ff 88 69 p...i...p......i 5f90: 0a 02 00 5b 27 42 41 54 4d a4 69 14 4a 0d 47 42 ...['BATM.i.J.GB 5fa0: 53 54 04 5b 23 42 41 54 4d ff ff a0 0a 7b 69 0a ST.[#BATM....{i. 5fb0: 20 00 70 0a 02 60 a1 12 a0 0a 7b 69 0a 40 00 70 .p..`....{i.@.p 5fc0: 0a 01 60 a1 05 70 0a 00 60 a0 06 7b 69 0a 07 00 ..`..p..`..{i... 5fd0: a1 06 7d 60 0a 04 60 a0 19 93 7b 69 0a 07 00 0a ..}`..`...{i.... 5fe0: 07 70 0a 04 60 70 0a 00 61 70 0a 00 62 70 0a 00 .p..`p..ap..bp.. 5ff0: 63 a1 40 06 70 68 48 49 49 44 70 53 42 56 4f 63 c.@.phHIIDpSBVOc 6000: a0 0a 6a 77 53 42 52 43 0a 0a 62 a1 07 70 53 42 ..jwSBRC..b..pSB 6010: 52 43 62 70 53 42 41 43 61 a0 1c 92 95 61 0b 00 RCbpSBACa....a.. 6020: 80 a0 0e 7b 60 0a 01 00 74 0c 00 00 01 00 61 61 ...{`...t.....aa 6030: a1 05 70 0a 00 61 a1 0d a0 0b 92 7b 60 0a 02 00 ..p..a.....{`... 6040: 70 0a 00 61 a0 0d 6a 77 63 61 61 78 61 0b e8 03 p..a..jwcaaxa... 6050: 67 61 70 60 88 6b 0a 00 00 70 61 88 6b 0a 01 00 gap`.k...pa.k... 6060: 70 62 88 6b 0a 02 00 70 63 88 6b 0a 03 00 5b 27 pb.k...pc.k...[' 6070: 42 41 54 4d a4 6b 5b 82 47 15 42 41 54 30 08 5f BATM.k[.G.BAT0._ 6080: 48 49 44 0c 41 d0 0c 0a 08 5f 55 49 44 0a 00 08 HID.A...._UID... 6090: 5f 50 43 4c 12 07 01 5c 5f 53 42 5f 08 42 30 53 _PCL...\_SB_.B0S 60a0: 54 0a 00 08 42 54 30 49 12 23 0d 0a 00 0c ff ff T...BT0I.#...... 60b0: ff ff 0c ff ff ff ff 0a 01 0b 30 2a 0a 00 0a 00 ..........0*.... 60c0: 0a 01 0a 01 0d 00 0d 00 0d 00 0d 00 08 42 54 30 .............BT0 60d0: 50 12 02 04 14 44 04 5f 53 54 41 00 a0 0f 5c 48 P....D._STA...\H 60e0: 38 44 52 70 48 42 30 41 42 30 53 54 a1 1e a0 13 8DRpHB0AB0ST.... 60f0: 7b 5c 52 42 45 43 0a 38 0a 80 00 70 0a 01 42 30 {\RBEC.8...p..B0 6100: 53 54 a1 08 70 0a 00 42 30 53 54 a0 08 42 30 53 ST..p..B0ST..B0S 6110: 54 a4 0a 1f a1 04 a4 0a 0f 14 47 04 5f 42 49 46 T.........G._BIF 6120: 00 70 0a 00 67 70 0a 0a 66 a2 2b 90 92 67 66 a0 .p..gp..f.+..gf. 6130: 1f 48 42 30 41 a0 13 93 7b 48 42 30 53 0a 07 00 .HB0A...{HB0S... 6140: 0a 07 5b 22 0b e8 03 76 66 a1 05 70 0a 01 67 a1 ..["...vf..p..g. 6150: 05 70 0a 00 66 a4 47 42 49 46 0a 00 42 54 30 49 .p..f.GBIF..BT0I 6160: 67 14 23 5f 42 53 54 00 7f 83 88 42 54 30 49 0a g.#_BST....BT0I. 6170: 00 00 0a 01 60 a4 47 42 53 54 0a 00 48 42 30 53 ....`.GBST..HB0S 6180: 60 42 54 30 50 14 49 04 5f 42 54 50 01 7b 48 41 `BT0P.I._BTP.{HA 6190: 4d 34 0a ef 48 41 4d 34 a0 36 68 70 68 61 a0 11 M4..HAM4.6hpha.. 61a0: 92 83 88 42 54 30 49 0a 00 00 78 61 0a 0a 60 61 ...BT0I...xa..`a 61b0: 7b 61 0a ff 48 54 30 4c 7b 7a 61 0a 08 00 0a ff {a..HT0L{za..... 61c0: 48 54 30 48 7d 48 41 4d 34 0a 10 48 41 4d 34 5b HT0H}HAM4..HAM4[ 61d0: 82 49 19 42 41 54 31 08 5f 48 49 44 0c 41 d0 0c .I.BAT1._HID.A.. 61e0: 0a 08 5f 55 49 44 0a 01 08 5f 50 43 4c 12 07 01 .._UID..._PCL... 61f0: 5c 5f 53 42 5f 08 42 31 53 54 0a 00 08 58 42 31 \_SB_.B1ST...XB1 6200: 53 0a 01 08 42 54 31 49 12 23 0d 0a 00 0c ff ff S...BT1I.#...... 6210: ff ff 0c ff ff ff ff 0a 01 0b 30 2a 0a 00 0a 00 ..........0*.... 6220: 0a 01 0a 01 0d 00 0d 00 0d 00 0d 00 08 42 54 31 .............BT1 6230: 50 12 02 04 14 47 06 5f 53 54 41 00 a0 0f 5c 48 P....G._STA...\H 6240: 38 44 52 70 48 42 31 41 42 31 53 54 a1 1e a0 13 8DRpHB1AB1ST.... 6250: 7b 5c 52 42 45 43 0a 39 0a 80 00 70 0a 01 42 31 {\RBEC.9...p..B1 6260: 53 54 a1 08 70 0a 00 42 31 53 54 a0 1f 42 31 53 ST..p..B1ST..B1S 6270: 54 a0 08 58 42 31 53 a4 0a 1f a1 10 a0 09 5c 57 T..XB1S.......\W 6280: 4e 54 46 a4 0a 00 a1 04 a4 0a 1f a1 10 a0 09 5c NTF............\ 6290: 57 4e 54 46 a4 0a 00 a1 04 a4 0a 0f 14 47 04 5f WNTF.........G._ 62a0: 42 49 46 00 70 0a 00 67 70 0a 0a 66 a2 2b 90 92 BIF.p..gp..f.+.. 62b0: 67 66 a0 1f 48 42 31 41 a0 13 93 7b 48 42 31 53 gf..HB1A...{HB1S 62c0: 0a 07 00 0a 07 5b 22 0b e8 03 76 66 a1 05 70 0a .....["...vf..p. 62d0: 01 67 a1 05 70 0a 00 66 a4 47 42 49 46 0a 10 42 .g..p..f.GBIF..B 62e0: 54 31 49 67 14 23 5f 42 53 54 00 7f 83 88 42 54 T1Ig.#_BST....BT 62f0: 31 49 0a 00 00 0a 01 60 a4 47 42 53 54 0a 10 48 1I.....`.GBST..H 6300: 42 31 53 60 42 54 31 50 14 49 04 5f 42 54 50 01 B1S`BT1P.I._BTP. 6310: 7b 48 41 4d 34 0a df 48 41 4d 34 a0 36 68 70 68 {HAM4..HAM4.6hph 6320: 61 a0 11 92 83 88 42 54 31 49 0a 00 00 78 61 0a a.....BT1I...xa. 6330: 0a 60 61 7b 61 0a ff 48 54 31 4c 7b 7a 61 0a 08 .`a{a..HT1L{za.. 6340: 00 0a ff 48 54 31 48 7d 48 41 4d 34 0a 20 48 41 ...HT1H}HAM4. HA 6350: 4d 34 14 17 5f 45 4a 30 01 a0 10 68 70 0a 00 42 M4.._EJ0...hp..B 6360: 31 53 54 70 0a 00 58 42 31 53 5b 82 4d 05 41 43 1STp..XB1S[.M.AC 6370: 5f 5f 08 5f 48 49 44 0d 41 43 50 49 30 30 30 33 __._HID.ACPI0003 6380: 00 08 5f 55 49 44 0a 00 08 5f 50 43 4c 12 07 01 .._UID..._PCL... 6390: 5c 5f 53 42 5f 14 29 5f 50 53 52 00 a0 0b 5c 48 \_SB_.)_PSR...\H 63a0: 38 44 52 a4 48 50 41 43 a1 16 a0 0f 7b 5c 52 42 8DR.HPAC....{\RB 63b0: 45 43 0a 46 0a 10 00 a4 0a 01 a1 04 a4 0a 00 14 EC.F............ 63c0: 09 5f 53 54 41 00 a4 0a 0f 5b 82 4a 75 48 4b 45 ._STA....[.JuHKE 63d0: 59 08 5f 48 49 44 0c 30 ae 00 68 14 09 5f 53 54 Y._HID.0..h.._ST 63e0: 41 00 a4 0a 0f 14 0a 4d 48 4b 56 00 a4 0b 00 01 A......MHKV..... 63f0: 08 44 48 4b 43 0a 00 08 44 48 4b 42 0a 01 5b 01 .DHKC...DHKB..[. 6400: 58 44 48 4b 07 08 44 48 4b 48 0a 00 08 44 48 4b XDHK..DHKH...DHK 6410: 57 0a 00 08 44 48 4b 53 0a 00 08 44 48 4b 44 0a W...DHKS...DHKD. 6420: 00 08 44 48 4b 4e 0b 08 08 08 44 48 4b 54 0a 00 ..DHKN....DHKT.. 6430: 08 44 48 57 57 0a 00 14 0c 4d 48 4b 41 00 a4 0c .DHWW....MHKA... 6440: fb ff ff 07 14 0b 4d 48 4b 4e 00 a4 44 48 4b 4e ......MHKN..DHKN 6450: 14 18 4d 48 4b 4b 01 a0 0d 44 48 4b 43 a4 7b 44 ..MHKK...DHKC.{D 6460: 48 4b 4e 68 00 a1 03 a4 00 14 40 05 4d 48 4b 4d HKNh......@.MHKM 6470: 02 5b 23 58 44 48 4b ff ff a0 06 94 68 0a 20 a3 .[#XDHK.....h. . 6480: a1 33 79 01 76 68 60 a0 29 7b 60 0c fb ff ff 07 .3y.vh`.){`..... 6490: 00 a0 0c 69 7d 60 44 48 4b 4e 44 48 4b 4e a1 12 ...i}`DHKNDHKN.. 64a0: 7b 44 48 4b 4e 7f 60 0c ff ff ff ff 00 44 48 4b {DHKN.`......DHK 64b0: 4e a1 02 a3 5b 27 58 44 48 4b 14 13 4d 48 4b 53 N...['XDHK..MHKS 64c0: 00 86 5c 2e 5f 53 42 5f 53 4c 50 42 0a 80 14 0c ..\._SB_SLPB.... 64d0: 4d 48 4b 43 01 70 68 44 48 4b 43 14 49 08 4d 48 MHKC.phDHKC.I.MH 64e0: 4b 50 00 5b 23 58 44 48 4b ff ff a0 11 44 48 57 KP.[#XDHK....DHW 64f0: 57 70 44 48 57 57 61 70 00 44 48 57 57 a1 4f 05 WpDHWWap.DHWW.O. 6500: a0 11 44 48 4b 57 70 44 48 4b 57 61 70 00 44 48 ..DHKWpDHKWap.DH 6510: 4b 57 a1 4a 04 a0 11 44 48 4b 44 70 44 48 4b 44 KW.J...DHKDpDHKD 6520: 61 70 00 44 48 4b 44 a1 35 a0 11 44 48 4b 53 70 ap.DHKD.5..DHKSp 6530: 44 48 4b 53 61 70 00 44 48 4b 53 a1 21 a0 11 44 DHKSap.DHKS.!..D 6540: 48 4b 54 70 44 48 4b 54 61 70 00 44 48 4b 54 a1 HKTpDHKTap.DHKT. 6550: 0d 70 44 48 4b 48 61 70 00 44 48 4b 48 5b 27 58 .pDHKHap.DHKH['X 6560: 44 48 4b a4 61 14 3e 4d 48 4b 45 01 70 68 44 48 DHK.a.>MHKE.phDH 6570: 4b 42 5b 23 58 44 48 4b ff ff 70 00 44 48 4b 48 KB[#XDHK..p.DHKH 6580: 70 00 44 48 4b 57 70 00 44 48 4b 53 70 00 44 48 p.DHKWp.DHKSp.DH 6590: 4b 44 70 00 44 48 4b 54 70 00 44 48 57 57 5b 27 KDp.DHKTp.DHWW[' 65a0: 58 44 48 4b 14 45 0b 4d 48 4b 51 01 a0 4d 0a 44 XDHK.E.MHKQ..M.D 65b0: 48 4b 42 a0 40 09 44 48 4b 43 5b 23 58 44 48 4b HKB.@.DHKC[#XDHK 65c0: ff ff a0 06 95 68 0b 00 10 a1 4d 06 a0 0c 95 68 .....h....M....h 65d0: 0b 00 20 70 68 44 48 4b 48 a1 4d 05 a0 0c 95 68 .. phDHKH.M....h 65e0: 0b 00 30 70 68 44 48 4b 57 a1 4d 04 a0 0c 95 68 ..0phDHKW.M....h 65f0: 0b 00 40 70 68 44 48 4b 53 a1 3d a0 0c 95 68 0b ..@phDHKS.=...h. 6600: 00 50 70 68 44 48 4b 44 a1 2e a0 0c 95 68 0b 00 .PphDHKD.....h.. 6610: 60 70 68 44 48 4b 48 a1 1f a0 0c 95 68 0b 00 70 `phDHKH.....h..p 6620: 70 68 44 48 4b 54 a1 10 a0 0c 95 68 0b 00 80 70 phDHKT.....h...p 6630: 68 44 48 57 57 a1 01 5b 27 58 44 48 4b 86 48 4b hDHWW..['XDHK.HK 6640: 45 59 0a 80 a1 15 a0 13 93 68 0b 04 10 86 5c 2e EY.......h....\. 6650: 5f 53 42 5f 53 4c 50 42 0a 80 14 49 05 4d 48 4b _SB_SLPB...I.MHK 6660: 42 01 a0 26 93 68 0a 00 5c 2f 05 5f 53 42 5f 50 B..&.h..\/._SB_P 6670: 43 49 30 4c 50 43 5f 45 43 5f 5f 42 45 45 50 0a CI0LPC_EC__BEEP. 6680: 11 70 0a 00 5c 4c 49 44 42 a1 2a a0 26 93 68 0a .p..\LIDB.*.&.h. 6690: 01 5c 2f 05 5f 53 42 5f 50 43 49 30 4c 50 43 5f .\/._SB_PCI0LPC_ 66a0: 45 43 5f 5f 42 45 45 50 0a 10 70 0a 01 5c 4c 49 EC__BEEP..p..\LI 66b0: 44 42 a1 01 14 47 04 4d 48 4b 44 00 a0 3f 93 5c DB...G.MHKD..?.\ 66c0: 50 4c 55 58 0a 00 a0 1a 56 49 47 44 5c 2f 04 5f PLUX....VIGD\/._ 66d0: 53 42 5f 50 43 49 30 56 49 44 5f 56 4c 4f 43 0a SB_PCI0VID_VLOC. 66e0: 00 a1 1a 5c 2f 05 5f 53 42 5f 50 43 49 30 50 45 ...\/._SB_PCI0PE 66f0: 47 5f 56 49 44 5f 56 4c 4f 43 0a 00 14 3e 4d 48 G_VID_VLOC...>MH 6700: 51 43 01 a0 31 5c 57 4e 54 46 a0 0b 93 68 0a 00 QC..1\WNTF...h.. 6710: a4 5c 43 57 41 43 a1 1e a0 0b 93 68 0a 01 a4 5c .\CWAC.....h...\ 6720: 43 57 41 50 a1 10 a0 0b 93 68 0a 02 a4 5c 43 57 CWAP.....h...\CW 6730: 41 54 a1 02 a3 a1 02 a3 a4 0a 00 14 35 4d 48 47 AT..........5MHG 6740: 43 00 a0 28 5c 57 4e 54 46 5b 23 58 44 48 4b ff C..(\WNTF[#XDHK. 6750: ff a0 0b 43 4b 43 34 0a 00 70 0a 03 60 a1 05 70 ...CKC4..p..`..p 6760: 0a 04 60 5b 27 58 44 48 4b a4 60 a1 02 a3 a4 0a ..`['XDHK.`..... 6770: 00 14 4c 06 4d 48 53 43 01 a0 41 06 90 5c 43 57 ..L.MHSC..A..\CW 6780: 41 43 5c 57 4e 54 46 5b 23 58 44 48 4b ff ff a0 AC\WNTF[#XDHK... 6790: 45 04 5c 4f 53 43 34 a0 1c 93 68 0a 03 a0 16 92 E.\OSC4...h..... 67a0: 5c 43 57 41 53 5c 50 4e 54 46 0a 81 70 0a 01 5c \CWAS\PNTF..p..\ 67b0: 43 57 41 53 a1 20 a0 1b 93 68 0a 04 a0 15 5c 43 CWAS. ...h....\C 67c0: 57 41 53 5c 50 4e 54 46 0a 81 70 0a 00 5c 43 57 WAS\PNTF..p..\CW 67d0: 41 53 a1 02 a3 5b 27 58 44 48 4b a1 02 a3 14 47 AS...['XDHK....G 67e0: 05 43 4b 43 34 01 70 0a 00 60 a0 13 5c 43 34 57 .CKC4.p..`..\C4W 67f0: 52 a0 0c 92 5c 43 34 41 43 7d 60 0a 01 60 a0 0b R...\C4AC}`..`.. 6800: 5c 43 34 4e 41 7d 60 0a 02 60 a0 11 90 5c 43 57 \C4NA}`..`...\CW 6810: 41 43 5c 43 57 41 53 7d 60 0a 04 60 a0 11 90 5c AC\CWAS}`..`...\ 6820: 43 57 55 45 5c 43 57 55 53 7d 60 0a 08 60 7b 60 CWUE\CWUS}`..`{` 6830: 80 68 00 60 a4 60 14 0c 4d 48 51 45 00 a4 5c 43 .h.`.`..MHQE..\C 6840: 34 57 52 14 19 4d 48 47 45 00 a0 0f 90 5c 43 34 4WR..MHGE....\C4 6850: 57 52 5c 43 34 41 43 a4 0a 04 a4 0a 03 14 44 06 WR\C4AC.......D. 6860: 4d 48 53 45 01 a0 4c 05 5c 43 34 57 52 70 5c 43 MHSE..L.\C4WRp\C 6870: 34 41 43 60 a0 25 93 68 0a 03 70 0a 00 5c 43 34 4AC`.%.h..p..\C4 6880: 41 43 a0 17 7f 60 5c 43 34 41 43 00 a0 0d 5c 4f AC...`\C4AC...\O 6890: 53 43 34 5c 50 4e 54 46 0a 81 a1 27 a0 25 93 68 SC4\PNTF...'.%.h 68a0: 0a 04 70 0a 01 5c 43 34 41 43 a0 17 7f 60 5c 43 ..p..\C4AC...`\C 68b0: 34 41 43 00 a0 0d 5c 4f 53 43 34 5c 50 4e 54 46 4AC...\OSC4\PNTF 68c0: 0a 81 14 0d 55 41 57 4f 01 a4 5c 55 41 57 53 68 ....UAWO..\UAWSh 68d0: 14 13 4d 4c 43 47 01 70 5c 4b 42 4c 53 0a 00 0a ..MLCG.p\KBLS... 68e0: 00 60 a4 60 14 4a 08 4d 4c 43 53 01 70 5c 4b 42 .`.`.J.MLCS.p\KB 68f0: 4c 53 0a 01 68 60 a0 46 07 92 7b 60 0c 00 00 00 LS..h`.F..{`.... 6900: 80 00 a0 27 7b 68 0c 00 00 01 00 00 5c 2f 06 5f ...'{h......\/._ 6910: 53 42 5f 50 43 49 30 4c 50 43 5f 45 43 5f 5f 48 SB_PCI0LPC_EC__H 6920: 4b 45 59 4d 48 4b 51 0b 01 60 a1 42 04 a0 3f 5c KEYMHKQ..`.B..?\ 6930: 2f 06 5f 53 42 5f 50 43 49 30 4c 50 43 5f 45 43 /._SB_PCI0LPC_EC 6940: 5f 5f 48 4b 45 59 4d 48 4b 4b 0c 00 00 02 00 5c __HKEYMHKK.....\ 6950: 2f 06 5f 53 42 5f 50 43 49 30 4c 50 43 5f 45 43 /._SB_PCI0LPC_EC 6960: 5f 5f 48 4b 45 59 4d 48 4b 51 0b 12 10 a4 60 14 __HKEYMHKQ....`. 6970: 12 44 53 53 47 01 7d 0b 00 04 5c 50 44 43 49 60 .DSSG.}...\PDCI` 6980: a4 60 14 12 44 53 53 53 01 7d 5c 50 44 43 49 68 .`..DSSS.}\PDCIh 6990: 5c 50 44 43 49 14 10 53 42 53 47 01 a4 5c 53 59 \PDCI..SBSG..\SY 69a0: 42 43 0a 00 0a 00 14 0f 53 42 53 53 01 a4 5c 53 BC......SBSS..\S 69b0: 59 42 43 0a 01 68 14 15 50 42 4c 47 01 70 5c 42 YBC..h..PBLG.p\B 69c0: 52 4c 56 60 7d 60 0b 00 0f 61 a4 61 14 41 06 50 RLV`}`...a.a.A.P 69d0: 42 4c 53 01 70 68 5c 42 52 4c 56 a0 1d 5c 56 49 BLS.ph\BRLV..\VI 69e0: 47 44 5c 2f 05 5f 53 42 5f 50 43 49 30 4c 50 43 GD\/._SB_PCI0LPC 69f0: 5f 45 43 5f 5f 42 52 4e 53 a1 0b 5c 56 42 52 43 _EC__BRNS..\VBRC 6a00: 5c 42 52 4c 56 a0 25 92 5c 4e 42 43 46 5c 2f 06 \BRLV.%.\NBCF\/. 6a10: 5f 53 42 5f 50 43 49 30 4c 50 43 5f 45 43 5f 5f _SB_PCI0LPC_EC__ 6a20: 48 4b 45 59 4d 48 4b 51 0b 50 60 a4 0a 00 14 4b HKEYMHKQ.P`....K 6a30: 04 50 4d 53 47 01 70 5c 50 52 53 4d 0a 00 0a 00 .PMSG.p\PRSM.... 6a40: 60 a0 36 92 5c 41 50 49 4e a0 0e 7b 60 0a 10 00 `.6.\APIN..{`... 6a50: 70 0a 01 5c 41 50 4d 44 a1 09 70 0a 00 5c 41 50 p..\APMD..p..\AP 6a60: 4d 44 a0 0d 5c 4f 53 50 58 5c 50 4e 54 46 0a 80 MD..\OSPX\PNTF.. 6a70: 70 0a 01 5c 41 50 49 4e a4 60 14 45 05 50 4d 53 p..\APIN.`.E.PMS 6a80: 53 01 5c 50 52 53 4d 0a 01 68 a0 42 04 91 90 92 S.\PRSM..h.B.... 6a90: 5c 41 50 4d 44 7b 68 0a 10 00 90 5c 41 50 4d 44 \APMD{h....\APMD 6aa0: 92 7b 68 0a 10 00 a0 0e 7b 68 0a 10 00 70 0a 01 .{h.....{h...p.. 6ab0: 5c 41 50 4d 44 a1 09 70 0a 00 5c 41 50 4d 44 a0 \APMD..p..\APMD. 6ac0: 0d 5c 4f 53 50 58 5c 50 4e 54 46 0a 80 a4 0a 00 .\OSPX\PNTF..... 6ad0: 14 20 49 53 53 47 01 70 5c 49 53 53 50 60 7d 60 . ISSG.p\ISSP`}` 6ae0: 0a 80 60 7d 60 7b 5c 49 53 43 47 0a 30 00 60 a4 ..`}`{\ISCG.0.`. 6af0: 60 14 10 49 53 53 53 01 70 68 5c 49 53 43 47 a4 `..ISSS.ph\ISCG. 6b00: 0a 00 14 10 46 46 53 47 01 a4 5c 49 46 52 53 0a ....FFSG..\IFRS. 6b10: 00 0a 00 14 11 46 46 53 53 01 5c 49 46 52 53 0a .....FFSS.\IFRS. 6b20: 01 68 a4 0a 00 10 46 27 5c 2f 05 5f 53 42 5f 50 .h....F'\/._SB_P 6b30: 43 49 30 4c 50 43 5f 45 43 5f 5f 48 4b 45 59 08 CI0LPC_EC__HKEY. 6b40: 49 4e 44 56 0a 00 14 4c 07 4d 48 51 49 00 a0 15 INDV...L.MHQI... 6b50: 7b 5c 49 50 4d 53 0a 01 00 7d 49 4e 44 56 0a 01 {\IPMS...}INDV.. 6b60: 49 4e 44 56 a0 15 7b 5c 49 50 4d 53 0a 02 00 7d INDV..{\IPMS...} 6b70: 49 4e 44 56 0a 02 49 4e 44 56 a0 16 7b 5c 49 50 INDV..INDV..{\IP 6b80: 4d 53 0a 04 00 7d 49 4e 44 56 0b 00 01 49 4e 44 MS...}INDV...IND 6b90: 56 a0 16 7b 5c 49 50 4d 53 0a 08 00 7d 49 4e 44 V..{\IPMS...}IND 6ba0: 56 0b 00 02 49 4e 44 56 a0 15 7b 5c 49 50 4d 53 V...INDV..{\IPMS 6bb0: 0a 10 00 7d 49 4e 44 56 0a 04 49 4e 44 56 a4 49 ...}INDV..INDV.I 6bc0: 4e 44 56 14 42 17 4d 48 47 49 01 08 52 45 54 42 NDV.B.MHGI..RETB 6bd0: 11 03 0a 10 8c 52 45 54 42 0a 00 4d 48 47 53 79 .....RETB..MHGSy 6be0: 0a 01 68 60 a0 4c 14 7b 49 4e 44 56 60 00 a0 24 ..h`.L.{INDV`..$ 6bf0: 93 68 0a 00 5b 13 52 45 54 42 0a 08 0a 78 42 52 .h..[.RETB...xBR 6c00: 42 55 70 5c 49 50 4d 42 42 52 42 55 70 0a 10 4d BUp\IPMBBRBUp..M 6c10: 48 47 53 a1 4d 11 a0 24 93 68 0a 01 5b 13 52 45 HGS.M..$.h..[.RE 6c20: 54 42 0a 08 0a 18 52 52 42 55 70 5c 49 50 4d 52 TB....RRBUp\IPMR 6c30: 52 52 42 55 70 0a 04 4d 48 47 53 a1 45 0f a0 48 RRBUp..MHGS.E..H 6c40: 08 93 68 0a 08 5b 13 52 45 54 42 0a 10 0a 18 4f ..h..[.RETB....O 6c50: 44 42 55 8c 52 45 54 42 0a 01 4d 48 47 5a 70 5c DBU.RETB..MHGZp\ 6c60: 49 50 4d 4f 4f 44 42 55 a0 47 05 93 5e 5e 42 44 IPMOODBU.G..^^BD 6c70: 45 56 0a 03 a0 0e 5c 48 38 44 52 70 5e 5e 48 50 EV....\H8DRp^^HP 6c80: 42 55 61 a1 0c 7b 5c 52 42 45 43 0a 47 0a 01 61 BUa..{\RBEC.G..a 6c90: a0 0e 92 61 7d 0a 04 4d 48 47 5a 4d 48 47 5a a0 ...a}..MHGZMHGZ. 6ca0: 20 93 5e 5e 42 53 54 53 0a 00 7d 0a 01 4d 48 47 .^^BSTS..}..MHG 6cb0: 5a 4d 48 47 5a 7d 0a 02 4d 48 47 5a 4d 48 47 5a ZMHGZ}..MHGZMHGZ 6cc0: 70 0a 05 4d 48 47 53 a1 49 06 a0 2f 93 68 0a 09 p..MHGS.I../.h.. 6cd0: 5b 13 52 45 54 42 0a 10 0a 08 41 55 42 55 70 5c [.RETB....AUBUp\ 6ce0: 49 50 4d 41 41 55 42 55 70 0a 01 88 52 45 54 42 IPMAAUBUp...RETB 6cf0: 0a 01 00 70 0a 03 4d 48 47 53 a1 36 a0 34 93 68 ...p..MHGS.6.4.h 6d00: 0a 02 70 5c 56 44 59 4e 0a 00 0a 00 61 7b 61 0a ..p\VDYN....a{a. 6d10: 0f 88 52 45 54 42 0a 02 00 7a 61 0a 04 61 7b 61 ..RETB...za..a{a 6d20: 0a 0f 88 52 45 54 42 0a 01 00 70 0a 03 4d 48 47 ...RETB...p..MHG 6d30: 53 a4 52 45 54 42 14 45 06 4d 48 53 49 02 79 0a S.RETB.E.MHSI.y. 6d40: 01 68 60 a0 48 05 7b 49 4e 44 56 60 00 a0 3e 93 .h`.H.{INDV`..>. 6d50: 68 0a 08 a0 38 69 a0 0e 5c 48 38 44 52 70 5e 5e h...8i..\H8DRp^^ 6d60: 48 50 42 55 61 a1 0c 7b 5c 52 42 45 43 0a 47 0a HPBUa..{\RBEC.G. 6d70: 01 61 a0 19 92 61 70 5e 5e 42 47 49 44 0a 00 5e .a...ap^^BGID..^ 6d80: 5e 42 44 45 56 5e 5e 4e 42 49 4e 61 a1 0f a0 0d ^BDEV^^NBINa.... 6d90: 93 68 0a 02 5c 56 44 59 4e 0a 01 69 10 47 06 5c .h..\VDYN..i.G.\ 6da0: 2f 04 5f 53 42 5f 50 43 49 30 4c 50 43 5f 45 43 /._SB_PCI0LPC_EC 6db0: 5f 5f 14 41 05 5f 51 36 41 00 a0 06 48 44 4d 43 __.A._Q6A...HDMC 6dc0: a3 a1 42 04 a0 3f 5c 2f 06 5f 53 42 5f 50 43 49 ..B..?\/._SB_PCI 6dd0: 30 4c 50 43 5f 45 43 5f 5f 48 4b 45 59 4d 48 4b 0LPC_EC__HKEYMHK 6de0: 4b 0c 00 00 00 04 5c 2f 06 5f 53 42 5f 50 43 49 K.....\/._SB_PCI 6df0: 30 4c 50 43 5f 45 43 5f 5f 48 4b 45 59 4d 48 4b 0LPC_EC__HKEYMHK 6e00: 51 0b 1b 10 10 48 0a 5c 2f 05 5f 53 42 5f 50 43 Q....H.\/._SB_PC 6e10: 49 30 4c 50 43 5f 45 43 5f 5f 48 4b 45 59 14 1b I0LPC_EC__HKEY.. 6e20: 4d 4d 54 47 00 70 0b 01 01 60 a0 0d 48 44 4d 43 MMTG.p...`..HDMC 6e30: 7d 60 0c 00 00 01 00 60 a4 60 14 42 07 4d 4d 54 }`.....`.`.B.MMT 6e40: 53 01 a0 06 48 44 4d 43 a3 a1 43 06 a0 20 93 68 S...HDMC..C.. .h 6e50: 0a 02 5c 2f 05 5f 53 42 5f 50 43 49 30 4c 50 43 ..\/._SB_PCI0LPC 6e60: 5f 45 43 5f 5f 4c 45 44 5f 0a 0e 0a 80 a1 3f a0 _EC__LED_.....?. 6e70: 20 93 68 0a 03 5c 2f 05 5f 53 42 5f 50 43 49 30 .h..\/._SB_PCI0 6e80: 4c 50 43 5f 45 43 5f 5f 4c 45 44 5f 0a 0e 0a c0 LPC_EC__LED_.... 6e90: a1 1c 5c 2f 05 5f 53 42 5f 50 43 49 30 4c 50 43 ..\/._SB_PCI0LPC 6ea0: 5f 45 43 5f 5f 4c 45 44 5f 0a 0e 0a 00 10 45 06 _EC__LED_.....E. 6eb0: 5c 2f 05 5f 53 42 5f 50 43 49 30 4c 50 43 5f 45 \/._SB_PCI0LPC_E 6ec0: 43 5f 5f 48 4b 45 59 14 09 50 57 4d 43 00 a4 0a C__HKEY..PWMC... 6ed0: 01 14 41 04 50 57 4d 47 00 70 5c 2f 05 5f 53 42 ..A.PWMG.p\/._SB 6ee0: 5f 50 43 49 30 4c 50 43 5f 45 43 5f 5f 50 57 4d _PCI0LPC_EC__PWM 6ef0: 48 60 79 60 0a 08 60 7d 60 5c 2f 05 5f 53 42 5f H`y`..`}`\/._SB_ 6f00: 50 43 49 30 4c 50 43 5f 45 43 5f 5f 50 57 4d 4c PCI0LPC_EC__PWML 6f10: 60 a4 60 10 39 5c 2f 04 5f 53 42 5f 50 43 49 30 `.`.9\/._SB_PCI0 6f20: 4c 50 43 5f 45 43 5f 5f 14 24 5f 51 33 46 00 5c LPC_EC__.$_Q3F.\ 6f30: 2f 06 5f 53 42 5f 50 43 49 30 4c 50 43 5f 45 43 /._SB_PCI0LPC_EC 6f40: 5f 5f 48 4b 45 59 4d 48 4b 51 0b 00 60 10 25 5c __HKEYMHKQ..`.%\ 6f50: 2f 05 5f 53 42 5f 50 43 49 30 4c 50 43 5f 45 43 /._SB_PCI0LPC_EC 6f60: 5f 5f 48 4b 45 59 14 0c 4e 55 4d 47 00 70 0a 00 __HKEY..NUMG.p.. 6f70: 60 a4 60 5b 82 43 b1 50 45 47 5f 08 5f 41 44 52 `.`[.C.PEG_._ADR 6f80: 0c 00 00 01 00 08 5f 53 33 44 0a 03 08 52 49 44 ......_S3D...RID 6f90: 5f 0a 00 08 4c 41 52 54 12 2a 02 12 13 04 0b ff _...LART.*...... 6fa0: ff 0a 00 5c 2e 5f 53 42 5f 4c 4e 4b 41 0a 00 12 ...\._SB_LNKA... 6fb0: 13 04 0b ff ff 0a 01 5c 2e 5f 53 42 5f 4c 4e 4b .......\._SB_LNK 6fc0: 42 0a 00 08 41 41 52 54 12 1a 02 12 0b 04 0b ff B...AART........ 6fd0: ff 0a 00 0a 00 0a 10 12 0b 04 0b ff ff 0a 01 0a ................ 6fe0: 00 0a 11 14 19 5f 50 52 54 00 a0 0b 5c 47 50 49 ....._PRT...\GPI 6ff0: 43 a4 41 41 52 54 a1 06 a4 4c 41 52 54 5b 01 4d C.AART...LART[.M 7000: 44 47 53 07 08 56 44 45 45 0a 01 08 56 44 44 41 DGS..VDEE...VDDA 7010: 11 03 0a 04 8d 56 44 44 41 0a 00 56 55 50 43 8d .....VDDA..VUPC. 7020: 56 44 44 41 0a 01 56 51 44 4c 8d 56 44 44 41 0a VDDA..VQDL.VDDA. 7030: 02 56 51 44 43 8d 56 44 44 41 0a 03 56 51 44 30 .VQDC.VDDA..VQD0 7040: 8d 56 44 44 41 0a 04 56 51 44 31 8d 56 44 44 41 .VDDA..VQD1.VDDA 7050: 0a 05 56 51 44 32 8d 56 44 44 41 0a 06 56 51 44 ..VQD2.VDDA..VQD 7060: 33 8d 56 44 44 41 0a 07 56 51 44 34 8d 56 44 44 3.VDDA..VQD4.VDD 7070: 41 0a 08 56 51 44 35 8d 56 44 44 41 0a 09 56 53 A..VQD5.VDDA..VS 7080: 44 4c 8d 56 44 44 41 0a 0a 56 53 44 43 8d 56 44 DL.VDDA..VSDC.VD 7090: 44 41 0a 0b 56 53 44 30 8d 56 44 44 41 0a 0c 56 DA..VSD0.VDDA..V 70a0: 53 44 31 8d 56 44 44 41 0a 0d 56 53 44 32 8d 56 SD1.VDDA..VSD2.V 70b0: 44 44 41 0a 0e 56 53 44 33 8d 56 44 44 41 0a 0f DDA..VSD3.VDDA.. 70c0: 56 53 44 34 8d 56 44 44 41 0a 10 56 53 44 35 8d VSD4.VDDA..VSD5. 70d0: 56 44 44 41 0a 11 4d 53 57 54 8d 56 44 44 41 0a VDDA..MSWT.VDDA. 70e0: 12 56 57 53 54 5b 82 4b 97 56 49 44 5f 08 5f 41 .VWST[.K.VID_._A 70f0: 44 52 0a 00 5b 80 56 50 43 47 02 0a 00 0b 00 01 DR..[.VPCG...... 7100: 5b 81 1e 56 50 43 47 03 00 40 16 56 53 49 44 20 [..VPCG..@.VSID 7110: 00 40 08 56 49 44 53 20 00 40 16 56 50 57 52 08 .@.VIDS .@.VPWR. 7120: 08 5f 53 33 44 0a 03 08 44 47 4f 53 0a 00 14 45 ._S3D...DGOS...E 7130: 04 5f 49 4e 49 00 5c 56 55 50 53 0a 02 70 5c 56 ._INI.\VUPS..p\V 7140: 43 44 4c 56 51 44 4c 70 5c 56 43 44 43 56 51 44 CDLVQDLp\VCDCVQD 7150: 43 70 5c 56 43 44 54 56 51 44 30 70 5c 56 43 44 Cp\VCDTVQD0p\VCD 7160: 44 56 51 44 31 a0 0e 49 53 4f 50 5c 56 48 59 42 DVQD1..ISOP\VHYB 7170: 0a 04 0a 01 14 4d 0c 5f 50 53 30 00 a0 49 0b 49 .....M._PS0..I.I 7180: 53 4f 50 a0 4c 07 44 47 4f 53 5c 56 48 59 42 0a SOP.L.DGOS\VHYB. 7190: 02 0a 00 5b 22 0a 64 5c 56 48 59 42 0a 00 0a 01 ...[".d\VHYB.... 71a0: 5b 22 0a 0a 5c 56 48 59 42 0a 0a 0a 01 5b 22 0a ["..\VHYB....[". 71b0: 64 5c 56 48 59 42 0a 02 0a 01 5b 22 0a 01 5c 56 d\VHYB....["..\V 71c0: 48 59 42 0a 08 0a 01 70 0a 0a 60 70 0a 32 61 a2 HYB....p..`p.2a. 71d0: 11 61 5b 22 60 a0 09 5c 4c 43 48 4b 0a 01 a5 76 .a["`..\LCHK...v 71e0: 61 5c 56 48 59 42 0a 0a 0a 00 5c 56 48 59 42 0a a\VHYB....\VHYB. 71f0: 04 0a 00 5c 53 57 54 54 0a 01 70 00 44 47 4f 53 ...\SWTT..p.DGOS 7200: a1 17 a0 15 92 93 56 53 49 44 0c aa 17 f4 21 5c ......VSID....!\ 7210: 56 48 59 42 0a 04 0a 00 5c 56 48 59 42 0a 09 5c VHYB....\VHYB..\ 7220: 2f 05 5f 53 42 5f 50 43 49 30 50 45 47 5f 56 49 /._SB_PCI0PEG_VI 7230: 44 5f 48 44 41 53 a1 0b 70 0c aa 17 f3 21 56 49 D_HDAS..p....!VI 7240: 44 53 14 07 5f 50 53 31 00 a3 14 07 5f 50 53 32 DS.._PS1...._PS2 7250: 00 a3 14 4b 08 5f 50 53 33 00 a0 43 08 49 53 4f ...K._PS3..C.ISO 7260: 50 a0 4c 07 93 5c 2f 05 5f 53 42 5f 50 43 49 30 P.L..\/._SB_PCI0 7270: 50 45 47 5f 56 49 44 5f 4f 4d 50 52 0a 03 5c 53 PEG_VID_OMPR..\S 7280: 57 54 54 0a 00 5c 56 48 59 42 0a 08 0a 00 70 0a WTT..\VHYB....p. 7290: 0a 60 70 0a 32 61 a2 11 61 5b 22 60 a0 09 5c 4c .`p.2a..a["`..\L 72a0: 43 48 4b 0a 00 a5 76 61 5c 56 48 59 42 0a 02 0a CHK...va\VHYB... 72b0: 00 5b 22 0a 64 5c 56 48 59 42 0a 00 0a 00 70 01 .[".d\VHYB....p. 72c0: 44 47 4f 53 70 0a 02 5c 2f 05 5f 53 42 5f 50 43 DGOSp..\/._SB_PC 72d0: 49 30 50 45 47 5f 56 49 44 5f 4f 4d 50 52 14 09 I0PEG_VID_OMPR.. 72e0: 5f 53 54 41 00 a4 0a 0f 14 4a 05 5f 44 53 4d 04 _STA.....J._DSM. 72f0: a0 24 5c 43 4d 50 42 68 11 13 0a 10 f8 d8 86 a4 .$\CMPBh........ 7300: da 0b 1b 47 a7 2b 60 42 a6 b5 be e0 a4 4e 56 4f ...G.+`B.....NVO 7310: 50 68 69 6a 6b a0 24 5c 43 4d 50 42 68 11 13 0a Phijk.$\CMPBh... 7320: 10 01 2d 13 a3 da 8c ba 49 a5 2e bc 9d 46 df 6b ..-.....I....F.k 7330: 81 a4 4e 56 50 53 68 69 6a 6b a4 11 07 0a 04 01 ..NVPShijk...... 7340: 00 00 80 08 5f 49 52 43 0a 00 5b 80 41 54 52 50 ...._IRC..[.ATRP 7350: 00 5c 41 54 52 42 0c 00 00 01 00 5b 81 14 41 54 .\ATRB.....[..AT 7360: 52 50 10 49 44 58 30 80 00 40 49 44 58 31 80 00 RP.IDX0..@IDX1.. 7370: 40 14 4d 05 5f 52 4f 4d 0a a0 17 92 95 68 0b 00 @.M._ROM.....h.. 7380: 80 a4 47 45 54 42 74 68 0b 00 80 00 69 49 44 58 ..GETBth....iIDX 7390: 31 a0 32 94 72 68 69 00 0b 00 80 74 0b 00 80 68 1.2.rhi....t...h 73a0: 60 74 69 60 61 70 47 45 54 42 68 60 49 44 58 30 `ti`apGETBh`IDX0 73b0: 63 70 47 45 54 42 0a 00 61 49 44 58 31 64 73 63 cpGETB..aIDX1dsc 73c0: 64 65 a4 65 a4 47 45 54 42 68 69 49 44 58 30 14 de.e.GETBhiIDX0. 73d0: 1e 47 45 54 42 0b 77 68 0a 08 60 77 69 0a 08 61 .GETB.wh..`wi..a 73e0: 5b 13 6a 60 61 54 42 46 33 a4 54 42 46 33 14 30 [.j`aTBF3.TBF3.0 73f0: 56 53 57 54 00 a0 0f 5c 57 56 49 53 70 5c 56 45 VSWT...\WVISp\VE 7400: 56 54 0a 07 60 a1 0a 70 5c 56 45 56 54 0a 05 60 VT..`..p\VEVT..` 7410: 7b 0a ff 60 61 a0 09 61 41 53 57 54 61 0a 01 14 {..`a..aASWTa... 7420: 44 05 56 4c 4f 43 01 a0 4c 04 93 68 5c 2f 03 5f D.VLOC..L..h\/._ 7430: 53 42 5f 4c 49 44 5f 5f 4c 49 44 5c 56 53 4c 44 SB_LID__LID\VSLD 7440: 68 a0 32 93 7b 56 50 57 52 0a 03 00 0a 00 a0 0b h.2.{VPWR....... 7450: 68 70 5c 56 45 56 54 0a 01 60 a1 0a 70 5c 56 45 hp\VEVT..`..p\VE 7460: 56 54 0a 02 60 7b 0a 0f 60 61 a0 09 61 41 53 57 VT..`{..`a..aASW 7470: 54 61 0a 00 14 47 07 5f 44 4f 53 01 a0 3a 93 68 Ta...G._DOS..:.h 7480: 0a 02 70 0a 14 60 a2 30 60 76 60 5b 23 4d 44 47 ..p..`.0`v`[#MDG 7490: 53 ff ff a0 19 93 0a 00 4d 53 57 54 70 0a 01 4d S.......MSWTp..M 74a0: 53 57 54 70 0a 00 60 70 68 56 44 45 45 5b 27 4d SWTp..`phVDEE['M 74b0: 44 47 53 5b 22 0a c8 a1 34 5b 23 4d 44 47 53 ff DGS["...4[#MDGS. 74c0: ff a0 0f 93 56 44 45 45 0a 02 70 0a 00 4d 53 57 ....VDEE..p..MSW 74d0: 54 a0 0c 94 68 0a 02 70 0a 01 56 44 45 45 a1 07 T...h..p..VDEE.. 74e0: 70 68 56 44 45 45 5b 27 4d 44 47 53 14 22 5f 44 phVDEE['MDGS."_D 74f0: 4f 44 00 a4 12 1a 08 0b 00 01 0b 14 01 0b 11 01 OD.............. 7500: 0b 15 01 0b 12 01 0b 16 01 0b 13 01 0b 10 01 14 ................ 7510: 4f 12 41 53 57 54 02 a0 14 93 0a 01 56 44 45 45 O.ASWT......VDEE 7520: 7b 0a 01 69 61 5c 56 53 44 53 68 61 a1 42 11 70 {..ia\VSDSha.B.p 7530: 0a 14 60 a2 44 0f 60 76 60 5b 23 4d 44 47 53 ff ..`.D.`v`[#MDGS. 7540: ff a0 4c 0d 93 0a 00 4d 53 57 54 70 0a 00 60 a0 ..L....MSWTp..`. 7550: 0d 7b 0a 01 69 00 70 0a 01 56 55 50 43 a1 08 70 .{..i.p..VUPC..p 7560: 0a 00 56 55 50 43 a0 0d 7b 0a 01 68 00 70 0a 01 ..VUPC..{..h.p.. 7570: 56 51 44 4c a1 08 70 0a 00 56 51 44 4c a0 0d 7b VQDL..p..VQDL..{ 7580: 0a 02 68 00 70 0a 01 56 51 44 43 a1 08 70 0a 00 ..h.p..VQDC..p.. 7590: 56 51 44 43 a0 0d 7b 0a 04 68 00 70 0a 01 56 51 VQDC..{..h.p..VQ 75a0: 44 30 a1 08 70 0a 00 56 51 44 30 a0 0d 7b 0a 08 D0..p..VQD0..{.. 75b0: 68 00 70 0a 01 56 51 44 31 a1 08 70 0a 00 56 51 h.p..VQD1..p..VQ 75c0: 44 31 a0 0d 7b 0a 10 68 00 70 0a 01 56 51 44 32 D1..{..h.p..VQD2 75d0: a1 08 70 0a 00 56 51 44 32 a0 0d 7b 0a 20 68 00 ..p..VQD2..{. h. 75e0: 70 0a 01 56 51 44 33 a1 08 70 0a 00 56 51 44 33 p..VQD3..p..VQD3 75f0: a0 0d 7b 0a 40 68 00 70 0a 01 56 51 44 34 a1 08 ..{.@h.p..VQD4.. 7600: 70 0a 00 56 51 44 34 a0 0d 7b 0a 80 68 00 70 0a p..VQD4..{..h.p. 7610: 01 56 51 44 35 a1 08 70 0a 00 56 51 44 35 5b 27 .VQD5..p..VQD5[' 7620: 4d 44 47 53 5b 22 0a c8 a0 0d 7b 0a 02 69 00 86 MDGS["....{..i.. 7630: 56 49 44 5f 0a 81 a1 08 86 56 49 44 5f 0a 80 14 VID_.....VID_... 7640: 35 56 44 53 57 01 a0 2e 93 56 50 57 52 0a 00 a0 5VDSW....VPWR... 7650: 0b 68 70 5c 56 45 56 54 0a 03 60 a1 0a 70 5c 56 .hp\VEVT..`..p\V 7660: 45 56 54 0a 04 60 7b 0a 0f 60 61 a0 09 61 41 53 EVT..`{..`a..aAS 7670: 57 54 61 0a 00 5b 82 48 09 4c 43 44 30 14 0a 5f WTa..[.H.LCD0.._ 7680: 41 44 52 00 a4 0b 10 01 14 1c 5f 44 43 53 00 5c ADR......._DCS.\ 7690: 56 55 50 53 0a 00 a0 09 5c 56 43 44 4c a4 0a 1f VUPS....\VCDL... 76a0: a1 04 a4 0a 1d 14 0b 5f 44 47 53 00 a4 56 51 44 ......._DGS..VQD 76b0: 4c 14 30 5f 44 53 53 01 7b 68 0a 01 56 53 44 4c L.0_DSS.{h..VSDL 76c0: a0 21 7b 68 0c 00 00 00 80 00 a0 0f 7b 68 0c 00 .!{h........{h.. 76d0: 00 00 40 00 44 53 57 54 0a 02 a1 07 44 53 57 54 ..@.DSWT....DSWT 76e0: 0a 01 14 2c 5f 44 44 43 01 a0 08 49 53 4f 50 a4 ...,_DDC...ISOP. 76f0: 0a 00 a0 0b 93 68 0a 01 a4 5c 56 45 44 49 a1 0d .....h...\VEDI.. 7700: a0 0b 93 68 0a 02 a4 5c 56 45 44 49 a4 0a 00 5b ...h...\VEDI...[ 7710: 82 43 08 43 52 54 30 14 0a 5f 41 44 52 00 a4 0b .C.CRT0.._ADR... 7720: 00 01 14 34 5f 44 43 53 00 5c 56 55 50 53 0a 01 ...4_DCS.\VUPS.. 7730: a0 15 5c 56 43 53 53 a0 09 5c 56 43 44 43 a4 0a ..\VCSS..\VCDC.. 7740: 1f a1 04 a4 0a 1d a1 10 a0 09 5c 56 43 44 43 a4 ..........\VCDC. 7750: 0a 0f a1 04 a4 0a 0d 14 0b 5f 44 47 53 00 a4 56 ........._DGS..V 7760: 51 44 43 14 30 5f 44 53 53 01 7b 68 0a 01 56 53 QDC.0_DSS.{h..VS 7770: 44 43 a0 21 7b 68 0c 00 00 00 80 00 a0 0f 7b 68 DC.!{h........{h 7780: 0c 00 00 00 40 00 44 53 57 54 0a 02 a1 07 44 53 ....@.DSWT....DS 7790: 57 54 0a 01 5b 82 4b 06 44 56 49 30 14 0a 5f 41 WT..[.K.DVI0.._A 77a0: 44 52 00 a4 0b 11 01 14 1c 5f 44 43 53 00 5c 56 DR......._DCS.\V 77b0: 55 50 53 0a 00 a0 09 5c 56 43 44 44 a4 0a 1f a1 UPS....\VCDD.... 77c0: 04 a4 0a 1d 14 0b 5f 44 47 53 00 a4 56 51 44 31 ......_DGS..VQD1 77d0: 14 30 5f 44 53 53 01 7b 68 0a 01 56 53 44 31 a0 .0_DSS.{h..VSD1. 77e0: 21 7b 68 0c 00 00 00 80 00 a0 0f 7b 68 0c 00 00 !{h........{h... 77f0: 00 40 00 44 53 57 54 0a 02 a1 07 44 53 57 54 0a .@.DSWT....DSWT. 7800: 01 5b 82 4b 06 44 50 30 5f 14 0a 5f 41 44 52 00 .[.K.DP0_.._ADR. 7810: a4 0b 14 01 14 1c 5f 44 43 53 00 5c 56 55 50 53 ......_DCS.\VUPS 7820: 0a 00 a0 09 5c 56 43 44 54 a4 0a 1f a1 04 a4 0a ....\VCDT....... 7830: 1d 14 0b 5f 44 47 53 00 a4 56 51 44 30 14 30 5f ..._DGS..VQD0.0_ 7840: 44 53 53 01 7b 68 0a 01 56 53 44 30 a0 21 7b 68 DSS.{h..VSD0.!{h 7850: 0c 00 00 00 80 00 a0 0f 7b 68 0c 00 00 00 40 00 ........{h....@. 7860: 44 53 57 54 0a 02 a1 07 44 53 57 54 0a 01 5b 82 DSWT....DSWT..[. 7870: 4b 06 44 56 49 31 14 0a 5f 41 44 52 00 a4 0b 12 K.DVI1.._ADR.... 7880: 01 14 1c 5f 44 43 53 00 5c 56 55 50 53 0a 00 a0 ..._DCS.\VUPS... 7890: 09 5c 56 43 44 44 a4 0a 1f a1 04 a4 0a 1d 14 0b .\VCDD.......... 78a0: 5f 44 47 53 00 a4 56 51 44 33 14 30 5f 44 53 53 _DGS..VQD3.0_DSS 78b0: 01 7b 68 0a 01 56 53 44 33 a0 21 7b 68 0c 00 00 .{h..VSD3.!{h... 78c0: 00 80 00 a0 0f 7b 68 0c 00 00 00 40 00 44 53 57 .....{h....@.DSW 78d0: 54 0a 02 a1 07 44 53 57 54 0a 01 5b 82 4b 06 44 T....DSWT..[.K.D 78e0: 50 31 5f 14 0a 5f 41 44 52 00 a4 0b 15 01 14 1c P1_.._ADR....... 78f0: 5f 44 43 53 00 5c 56 55 50 53 0a 00 a0 09 5c 56 _DCS.\VUPS....\V 7900: 43 44 54 a4 0a 1f a1 04 a4 0a 1d 14 0b 5f 44 47 CDT.........._DG 7910: 53 00 a4 56 51 44 32 14 30 5f 44 53 53 01 7b 68 S..VQD2.0_DSS.{h 7920: 0a 01 56 53 44 32 a0 21 7b 68 0c 00 00 00 80 00 ..VSD2.!{h...... 7930: a0 0f 7b 68 0c 00 00 00 40 00 44 53 57 54 0a 02 ..{h....@.DSWT.. 7940: a1 07 44 53 57 54 0a 01 5b 82 4b 06 44 56 49 32 ..DSWT..[.K.DVI2 7950: 14 0a 5f 41 44 52 00 a4 0b 13 01 14 1c 5f 44 43 .._ADR......._DC 7960: 53 00 5c 56 55 50 53 0a 00 a0 09 5c 56 43 44 44 S.\VUPS....\VCDD 7970: a4 0a 1f a1 04 a4 0a 1d 14 0b 5f 44 47 53 00 a4 .........._DGS.. 7980: 56 51 44 35 14 30 5f 44 53 53 01 7b 68 0a 01 56 VQD5.0_DSS.{h..V 7990: 53 44 35 a0 21 7b 68 0c 00 00 00 80 00 a0 0f 7b SD5.!{h........{ 79a0: 68 0c 00 00 00 40 00 44 53 57 54 0a 02 a1 07 44 h....@.DSWT....D 79b0: 53 57 54 0a 01 5b 82 4b 06 44 50 32 5f 14 0a 5f SWT..[.K.DP2_.._ 79c0: 41 44 52 00 a4 0b 16 01 14 1c 5f 44 43 53 00 5c ADR......._DCS.\ 79d0: 56 55 50 53 0a 00 a0 09 5c 56 43 44 54 a4 0a 1f VUPS....\VCDT... 79e0: a1 04 a4 0a 1d 14 0b 5f 44 47 53 00 a4 56 51 44 ......._DGS..VQD 79f0: 34 14 30 5f 44 53 53 01 7b 68 0a 01 56 53 44 34 4.0_DSS.{h..VSD4 7a00: a0 21 7b 68 0c 00 00 00 80 00 a0 0f 7b 68 0c 00 .!{h........{h.. 7a10: 00 00 40 00 44 53 57 54 0a 02 a1 07 44 53 57 54 ..@.DSWT....DSWT 7a20: 0a 01 14 3f 44 53 57 54 01 a0 09 56 53 44 4c 70 ...?DSWT...VSDLp 7a30: 0a 01 60 a1 05 70 0a 00 60 a0 0a 56 53 44 43 7d ..`..p..`..VSDC} 7a40: 0a 02 60 60 a0 0a 56 53 44 30 7d 0a 08 60 60 a0 ..``..VSD0}..``. 7a50: 0f 60 a0 0c 56 55 50 43 5c 56 53 44 53 60 68 a1 .`..VUPC\VSDS`h. 7a60: 02 a3 5b 80 50 45 47 43 02 0a 00 0b 00 01 5b 81 ..[.PEGC......[. 7a70: 18 50 45 47 43 03 00 40 76 47 4d 47 50 01 48 50 .PEGC..@vGMGP.HP 7a80: 47 50 01 50 4d 47 50 01 5b 82 29 49 47 42 45 08 GP.PMGP.[.)IGBE. 7a90: 5f 41 44 52 0c 00 00 19 00 08 5f 53 33 44 0a 03 _ADR......_S3D.. 7aa0: 08 52 49 44 5f 0a 00 08 5f 50 52 57 12 06 02 0a .RID_..._PRW.... 7ab0: 0d 0a 04 5b 82 48 13 45 58 50 31 08 5f 41 44 52 ...[.H.EXP1._ADR 7ac0: 0c 00 00 1c 00 08 52 49 44 5f 0a 00 5b 80 50 45 ......RID_..[.PE 7ad0: 43 53 02 0a 00 0b 00 01 5b 81 43 04 50 45 43 53 CS......[.C.PECS 7ae0: 03 00 40 2d 00 03 50 44 43 5f 01 00 02 50 44 53 ..@-..PDC_...PDS 7af0: 5f 01 00 01 00 38 50 53 5f 5f 01 50 50 5f 5f 01 _....8PS__.PP__. 7b00: 00 46 3c 00 06 48 50 43 45 01 50 4d 43 45 01 00 .F<..HPCE.PMCE.. 7b10: 18 00 06 48 50 43 53 01 50 4d 43 53 01 14 0f 5f ...HPCS.PMCS..._ 7b20: 49 4e 49 00 70 50 44 53 5f 50 44 53 46 08 4c 50 INI.pPDS_PDSF.LP 7b30: 52 54 12 43 05 04 12 13 04 0b ff ff 0a 00 5c 2e RT.C..........\. 7b40: 5f 53 42 5f 4c 4e 4b 41 0a 00 12 13 04 0b ff ff _SB_LNKA........ 7b50: 0a 01 5c 2e 5f 53 42 5f 4c 4e 4b 42 0a 00 12 13 ..\._SB_LNKB.... 7b60: 04 0b ff ff 0a 02 5c 2e 5f 53 42 5f 4c 4e 4b 43 ......\._SB_LNKC 7b70: 0a 00 12 13 04 0b ff ff 0a 03 5c 2e 5f 53 42 5f ..........\._SB_ 7b80: 4c 4e 4b 44 0a 00 08 41 50 52 54 12 32 04 12 0b LNKD...APRT.2... 7b90: 04 0b ff ff 0a 00 0a 00 0a 10 12 0b 04 0b ff ff ................ 7ba0: 0a 01 0a 00 0a 11 12 0b 04 0b ff ff 0a 02 0a 00 ................ 7bb0: 0a 12 12 0b 04 0b ff ff 0a 03 0a 00 0a 13 14 19 ................ 7bc0: 5f 50 52 54 00 a0 0b 5c 47 50 49 43 a4 41 50 52 _PRT...\GPIC.APR 7bd0: 54 a1 06 a4 4c 50 52 54 08 50 44 53 46 0a 00 5b T...LPRT.PDSF..[ 7be0: 82 0c 53 4c 4f 54 08 5f 41 44 52 0a 00 5b 82 46 ..SLOT._ADR..[.F 7bf0: 0f 45 58 50 32 08 5f 41 44 52 0c 01 00 1c 00 08 .EXP2._ADR...... 7c00: 52 49 44 5f 0a 00 5b 80 50 45 43 53 02 0a 00 0b RID_..[.PECS.... 7c10: 00 01 5b 81 26 50 45 43 53 03 00 40 31 50 53 5f ..[.&PECS..@1PS_ 7c20: 5f 01 50 50 5f 5f 01 00 46 3c 00 07 50 4d 43 45 _.PP__..F<..PMCE 7c30: 01 00 18 00 07 50 4d 43 53 01 08 4c 50 52 54 12 .....PMCS..LPRT. 7c40: 43 05 04 12 13 04 0b ff ff 0a 00 5c 2e 5f 53 42 C..........\._SB 7c50: 5f 4c 4e 4b 42 0a 00 12 13 04 0b ff ff 0a 01 5c _LNKB..........\ 7c60: 2e 5f 53 42 5f 4c 4e 4b 43 0a 00 12 13 04 0b ff ._SB_LNKC....... 7c70: ff 0a 02 5c 2e 5f 53 42 5f 4c 4e 4b 44 0a 00 12 ...\._SB_LNKD... 7c80: 13 04 0b ff ff 0a 03 5c 2e 5f 53 42 5f 4c 4e 4b .......\._SB_LNK 7c90: 41 0a 00 08 41 50 52 54 12 32 04 12 0b 04 0b ff A...APRT.2...... 7ca0: ff 0a 00 0a 00 0a 11 12 0b 04 0b ff ff 0a 01 0a ................ 7cb0: 00 0a 12 12 0b 04 0b ff ff 0a 02 0a 00 0a 13 12 ................ 7cc0: 0b 04 0b ff ff 0a 03 0a 00 0a 10 14 19 5f 50 52 ............._PR 7cd0: 54 00 a0 0b 5c 47 50 49 43 a4 41 50 52 54 a1 06 T...\GPIC.APRT.. 7ce0: a4 4c 50 52 54 5b 82 4e 14 45 58 50 33 08 5f 41 .LPRT[.N.EXP3._A 7cf0: 44 52 0c 02 00 1c 00 08 52 49 44 5f 0a 00 5b 80 DR......RID_..[. 7d00: 50 45 43 53 02 0a 00 0b 00 01 5b 81 43 04 50 45 PECS......[.C.PE 7d10: 43 53 03 00 40 2d 00 03 50 44 43 5f 01 00 02 50 CS..@-..PDC_...P 7d20: 44 53 5f 01 00 01 00 38 50 53 5f 5f 01 50 50 5f DS_....8PS__.PP_ 7d30: 5f 01 00 46 3c 00 06 48 50 43 45 01 50 4d 43 45 _..F<..HPCE.PMCE 7d40: 01 00 18 00 06 48 50 43 53 01 50 4d 43 53 01 14 .....HPCS.PMCS.. 7d50: 0f 5f 49 4e 49 00 70 50 44 53 5f 50 44 53 46 08 ._INI.pPDS_PDSF. 7d60: 5f 50 52 57 12 06 02 0a 09 0a 04 08 4c 50 52 54 _PRW........LPRT 7d70: 12 43 05 04 12 13 04 0b ff ff 0a 00 5c 2e 5f 53 .C..........\._S 7d80: 42 5f 4c 4e 4b 43 0a 00 12 13 04 0b ff ff 0a 01 B_LNKC.......... 7d90: 5c 2e 5f 53 42 5f 4c 4e 4b 44 0a 00 12 13 04 0b \._SB_LNKD...... 7da0: ff ff 0a 02 5c 2e 5f 53 42 5f 4c 4e 4b 41 0a 00 ....\._SB_LNKA.. 7db0: 12 13 04 0b ff ff 0a 03 5c 2e 5f 53 42 5f 4c 4e ........\._SB_LN 7dc0: 4b 42 0a 00 08 41 50 52 54 12 32 04 12 0b 04 0b KB...APRT.2..... 7dd0: ff ff 0a 00 0a 00 0a 12 12 0b 04 0b ff ff 0a 01 ................ 7de0: 0a 00 0a 13 12 0b 04 0b ff ff 0a 02 0a 00 0a 10 ................ 7df0: 12 0b 04 0b ff ff 0a 03 0a 00 0a 11 14 19 5f 50 .............._P 7e00: 52 54 00 a0 0b 5c 47 50 49 43 a4 41 50 52 54 a1 RT...\GPIC.APRT. 7e10: 06 a4 4c 50 52 54 08 50 44 53 46 0a 00 5b 82 16 ..LPRT.PDSF..[.. 7e20: 53 4c 4f 54 08 5f 41 44 52 0a 00 14 09 5f 52 4d SLOT._ADR...._RM 7e30: 56 00 a4 0a 01 5b 82 1d 53 41 54 31 08 5f 41 44 V....[..SAT1._AD 7e40: 52 0c 02 00 1f 00 08 5f 53 33 44 0a 03 08 52 49 R......_S3D...RI 7e50: 44 5f 0a 00 5b 82 1d 53 41 54 32 08 5f 41 44 52 D_..[..SAT2._ADR 7e60: 0c 05 00 1f 00 08 5f 53 33 44 0a 03 08 52 49 44 ......_S3D...RID 7e70: 5f 0a 00 5b 82 1d 53 4d 42 55 08 5f 41 44 52 0c _..[..SMBU._ADR. 7e80: 03 00 1f 00 08 5f 53 33 44 0a 03 08 52 49 44 5f ....._S3D...RID_ 7e90: 0a 00 5b 82 40 69 58 48 43 49 08 5f 41 44 52 0c ..[.@iXHCI._ADR. 7ea0: 00 00 14 00 08 5f 53 33 44 0a 03 08 52 49 44 5f ....._S3D...RID_ 7eb0: 0a 00 5b 80 58 48 43 53 02 0a 00 0b 00 01 5b 81 ..[.XHCS......[. 7ec0: 1d 58 48 43 53 03 00 40 68 50 52 32 5f 20 50 52 .XHCS..@hPR2_ PR 7ed0: 32 4d 20 50 52 33 5f 20 50 52 33 4d 20 08 5f 50 2M PR3_ PR3M ._P 7ee0: 52 30 12 19 01 5c 2f 05 5f 53 42 5f 50 43 49 30 R0...\/._SB_PCI0 7ef0: 4c 50 43 5f 45 43 5f 5f 50 55 42 53 08 5f 50 52 LPC_EC__PUBS._PR 7f00: 31 12 19 01 5c 2f 05 5f 53 42 5f 50 43 49 30 4c 1...\/._SB_PCI0L 7f10: 50 43 5f 45 43 5f 5f 50 55 42 53 08 5f 50 52 32 PC_EC__PUBS._PR2 7f20: 12 19 01 5c 2f 05 5f 53 42 5f 50 43 49 30 4c 50 ...\/._SB_PCI0LP 7f30: 43 5f 45 43 5f 5f 50 55 42 53 08 5f 50 52 57 12 C_EC__PUBS._PRW. 7f40: 1d 03 0a 0d 0a 03 5c 2f 05 5f 53 42 5f 50 43 49 ......\/._SB_PCI 7f50: 30 4c 50 43 5f 45 43 5f 5f 50 55 42 53 14 24 43 0LPC_EC__PUBS.$C 7f60: 55 49 44 09 a0 1a 93 68 11 13 0a 10 a9 12 95 7c UID....h.......| 7f70: 05 17 b4 4c af 7d 50 6a 24 23 ab 71 a4 0a 01 a4 ...L.}Pj$#.q.... 7f80: 0a 00 14 48 05 50 4f 53 43 0b 8a 6a 0a 00 43 44 ...H.POSC..j..CD 7f90: 57 31 a0 10 92 93 68 01 7d 43 44 57 31 0a 08 43 W1....h.}CDW1..C 7fa0: 44 57 31 a0 14 93 5c 58 48 43 4d 0a 00 7d 43 44 DW1...\XHCM..}CD 7fb0: 57 31 0a 02 43 44 57 31 a0 20 90 92 7b 43 44 57 W1..CDW1. ..{CDW 7fc0: 31 0a 01 00 91 93 5c 58 48 43 4d 0a 02 93 5c 58 1.....\XHCM...\X 7fd0: 48 43 4d 0a 03 53 58 48 43 a4 6a 14 49 08 53 58 HCM..SXHC.j.I.SX 7fe0: 48 43 00 70 0a 00 60 7b 50 52 33 5f 0c f0 ff ff HC.p..`{PR3_.... 7ff0: ff 60 7d 60 5c 58 48 50 4d 60 a0 1b 93 5c 2f 03 .`}`\XHPM`...\/. 8000: 5f 53 42 5f 47 44 43 4b 47 47 49 44 0a 05 7b 60 _SB_GDCKGGID..{` 8010: 0c fb ff ff ff 60 7b 60 50 52 33 4d 50 52 33 5f .....`{`PR3MPR3_ 8020: 70 0a 00 60 7b 50 52 32 5f 0c f0 ff ff ff 60 7d p..`{PR2_.....`} 8030: 60 5c 58 48 50 4d 60 a0 1b 93 5c 2f 03 5f 53 42 `\XHPM`...\/._SB 8040: 5f 47 44 43 4b 47 47 49 44 0a 05 7b 60 0c fb ff _GDCKGGID..{`... 8050: ff ff 60 7b 60 50 52 32 4d 50 52 32 5f 70 0a 01 ..`{`PR2MPR2_p.. 8060: 5c 55 53 42 52 5b 82 4d 4b 55 52 54 48 08 5f 41 \USBR[.MKURTH._A 8070: 44 52 0a 00 5b 82 49 08 48 53 50 30 08 5f 41 44 DR..[.I.HSP0._AD 8080: 52 0a 01 14 3b 5f 55 50 43 08 08 55 50 43 50 12 R...;_UPC..UPCP. 8090: 0a 04 0a 00 0a 00 0a 00 0a 00 9d 5c 55 50 43 30 ...........\UPC0 80a0: 55 50 43 50 a0 15 92 7b 50 52 32 5f 0a 01 00 70 UPCP...{PR2_...p 80b0: 0a 00 88 55 50 43 50 0a 00 00 a4 55 50 43 50 14 ...UPCP....UPCP. 80c0: 3f 5f 50 4c 44 08 08 50 4c 44 50 11 03 0a 10 70 ?_PLD..PLDP....p 80d0: 5c 50 4c 44 30 50 4c 44 50 8d 50 4c 44 50 0a 40 \PLD0PLDP.PLDP.@ 80e0: 56 49 53 5f a0 15 92 7b 50 52 32 5f 0a 01 00 7b VIS_...{PR2_...{ 80f0: 56 49 53 5f 0a 00 56 49 53 5f a4 50 4c 44 50 5b VIS_..VIS_.PLDP[ 8100: 82 49 08 48 53 50 31 08 5f 41 44 52 0a 02 14 3b .I.HSP1._ADR...; 8110: 5f 55 50 43 08 08 55 50 43 50 12 0a 04 0a 00 0a _UPC..UPCP...... 8120: 00 0a 00 0a 00 9d 5c 55 50 43 31 55 50 43 50 a0 ......\UPC1UPCP. 8130: 15 92 7b 50 52 32 5f 0a 02 00 70 0a 00 88 55 50 ..{PR2_...p...UP 8140: 43 50 0a 00 00 a4 55 50 43 50 14 3f 5f 50 4c 44 CP....UPCP.?_PLD 8150: 08 08 50 4c 44 50 11 03 0a 10 70 5c 50 4c 44 31 ..PLDP....p\PLD1 8160: 50 4c 44 50 8d 50 4c 44 50 0a 40 56 49 53 5f a0 PLDP.PLDP.@VIS_. 8170: 15 92 7b 50 52 32 5f 0a 02 00 7b 56 49 53 5f 0a ..{PR2_...{VIS_. 8180: 00 56 49 53 5f a4 50 4c 44 50 5b 82 49 08 48 53 .VIS_.PLDP[.I.HS 8190: 50 32 08 5f 41 44 52 0a 03 14 3b 5f 55 50 43 08 P2._ADR...;_UPC. 81a0: 08 55 50 43 50 12 0a 04 0a 00 0a 00 0a 00 0a 00 .UPCP........... 81b0: 9d 5c 55 50 43 32 55 50 43 50 a0 15 92 7b 50 52 .\UPC2UPCP...{PR 81c0: 32 5f 0a 04 00 70 0a 00 88 55 50 43 50 0a 00 00 2_...p...UPCP... 81d0: a4 55 50 43 50 14 3f 5f 50 4c 44 08 08 50 4c 44 .UPCP.?_PLD..PLD 81e0: 50 11 03 0a 10 70 5c 50 4c 44 32 50 4c 44 50 8d P....p\PLD2PLDP. 81f0: 50 4c 44 50 0a 40 56 49 53 5f a0 15 92 7b 50 52 PLDP.@VIS_...{PR 8200: 32 5f 0a 04 00 7b 56 49 53 5f 0a 00 56 49 53 5f 2_...{VIS_..VIS_ 8210: a4 50 4c 44 50 5b 82 49 08 48 53 50 33 08 5f 41 .PLDP[.I.HSP3._A 8220: 44 52 0a 04 14 3b 5f 55 50 43 08 08 55 50 43 50 DR...;_UPC..UPCP 8230: 12 0a 04 0a 00 0a 00 0a 00 0a 00 9d 5c 55 50 43 ............\UPC 8240: 33 55 50 43 50 a0 15 92 7b 50 52 32 5f 0a 08 00 3UPCP...{PR2_... 8250: 70 0a 00 88 55 50 43 50 0a 00 00 a4 55 50 43 50 p...UPCP....UPCP 8260: 14 3f 5f 50 4c 44 08 08 50 4c 44 50 11 03 0a 10 .?_PLD..PLDP.... 8270: 70 5c 50 4c 44 33 50 4c 44 50 8d 50 4c 44 50 0a p\PLD3PLDP.PLDP. 8280: 40 56 49 53 5f a0 15 92 7b 50 52 32 5f 0a 08 00 @VIS_...{PR2_... 8290: 7b 56 49 53 5f 0a 00 56 49 53 5f a4 50 4c 44 50 {VIS_..VIS_.PLDP 82a0: 5b 82 4f 09 53 53 50 30 08 5f 41 44 52 0a 05 14 [.O.SSP0._ADR... 82b0: 46 04 5f 55 50 43 08 08 55 50 43 50 12 0a 04 0a F._UPC..UPCP.... 82c0: 00 0a 00 0a 00 0a 00 9d 5c 55 50 43 30 55 50 43 ........\UPC0UPC 82d0: 50 a0 1f 91 92 7b 50 52 32 5f 0a 01 00 92 7b 50 P....{PR2_....{P 82e0: 52 33 5f 0a 01 00 70 0a 00 88 55 50 43 50 0a 00 R3_...p...UPCP.. 82f0: 00 a4 55 50 43 50 14 4a 04 5f 50 4c 44 08 08 50 ..UPCP.J._PLD..P 8300: 4c 44 50 11 03 0a 10 70 5c 50 4c 44 30 50 4c 44 LDP....p\PLD0PLD 8310: 50 8d 50 4c 44 50 0a 40 56 49 53 5f a0 1f 91 92 P.PLDP.@VIS_.... 8320: 7b 50 52 32 5f 0a 01 00 92 7b 50 52 33 5f 0a 01 {PR2_....{PR3_.. 8330: 00 7b 56 49 53 5f 0a 00 56 49 53 5f a4 50 4c 44 .{VIS_..VIS_.PLD 8340: 50 5b 82 4f 09 53 53 50 31 08 5f 41 44 52 0a 06 P[.O.SSP1._ADR.. 8350: 14 46 04 5f 55 50 43 08 08 55 50 43 50 12 0a 04 .F._UPC..UPCP... 8360: 0a 00 0a 00 0a 00 0a 00 9d 5c 55 50 43 31 55 50 .........\UPC1UP 8370: 43 50 a0 1f 91 92 7b 50 52 32 5f 0a 02 00 92 7b CP....{PR2_....{ 8380: 50 52 33 5f 0a 02 00 70 0a 00 88 55 50 43 50 0a PR3_...p...UPCP. 8390: 00 00 a4 55 50 43 50 14 4a 04 5f 50 4c 44 08 08 ...UPCP.J._PLD.. 83a0: 50 4c 44 50 11 03 0a 10 70 5c 50 4c 44 31 50 4c PLDP....p\PLD1PL 83b0: 44 50 8d 50 4c 44 50 0a 40 56 49 53 5f a0 1f 91 DP.PLDP.@VIS_... 83c0: 92 7b 50 52 32 5f 0a 02 00 92 7b 50 52 33 5f 0a .{PR2_....{PR3_. 83d0: 02 00 7b 56 49 53 5f 0a 00 56 49 53 5f a4 50 4c ..{VIS_..VIS_.PL 83e0: 44 50 5b 82 4f 09 53 53 50 32 08 5f 41 44 52 0a DP[.O.SSP2._ADR. 83f0: 07 14 46 04 5f 55 50 43 08 08 55 50 43 50 12 0a ..F._UPC..UPCP.. 8400: 04 0a 00 0a 00 0a 00 0a 00 9d 5c 55 50 43 32 55 ..........\UPC2U 8410: 50 43 50 a0 1f 91 92 7b 50 52 32 5f 0a 04 00 92 PCP....{PR2_.... 8420: 7b 50 52 33 5f 0a 04 00 70 0a 00 88 55 50 43 50 {PR3_...p...UPCP 8430: 0a 00 00 a4 55 50 43 50 14 4a 04 5f 50 4c 44 08 ....UPCP.J._PLD. 8440: 08 50 4c 44 50 11 03 0a 10 70 5c 50 4c 44 32 50 .PLDP....p\PLD2P 8450: 4c 44 50 8d 50 4c 44 50 0a 40 56 49 53 5f a0 1f LDP.PLDP.@VIS_.. 8460: 91 92 7b 50 52 32 5f 0a 04 00 92 7b 50 52 33 5f ..{PR2_....{PR3_ 8470: 0a 04 00 7b 56 49 53 5f 0a 00 56 49 53 5f a4 50 ...{VIS_..VIS_.P 8480: 4c 44 50 5b 82 4f 09 53 53 50 33 08 5f 41 44 52 LDP[.O.SSP3._ADR 8490: 0a 08 14 46 04 5f 55 50 43 08 08 55 50 43 50 12 ...F._UPC..UPCP. 84a0: 0a 04 0a 00 0a 00 0a 00 0a 00 9d 5c 55 50 43 33 ...........\UPC3 84b0: 55 50 43 50 a0 1f 91 92 7b 50 52 32 5f 0a 08 00 UPCP....{PR2_... 84c0: 92 7b 50 52 33 5f 0a 08 00 70 0a 00 88 55 50 43 .{PR3_...p...UPC 84d0: 50 0a 00 00 a4 55 50 43 50 14 4a 04 5f 50 4c 44 P....UPCP.J._PLD 84e0: 08 08 50 4c 44 50 11 03 0a 10 70 5c 50 4c 44 33 ..PLDP....p\PLD3 84f0: 50 4c 44 50 8d 50 4c 44 50 0a 40 56 49 53 5f a0 PLDP.PLDP.@VIS_. 8500: 1f 91 92 7b 50 52 32 5f 0a 08 00 92 7b 50 52 33 ...{PR2_....{PR3 8510: 5f 0a 08 00 7b 56 49 53 5f 0a 00 56 49 53 5f a4 _...{VIS_..VIS_. 8520: 50 4c 44 50 5b 82 41 4d 45 48 43 31 08 5f 41 44 PLDP[.AMEHC1._AD 8530: 52 0c 00 00 1d 00 08 5f 53 33 44 0a 03 08 52 49 R......_S3D...RI 8540: 44 5f 0a 00 5b 80 45 48 43 53 02 0a 00 0b 00 01 D_..[.EHCS...... 8550: 5b 81 15 45 48 43 53 03 00 40 31 50 57 4b 49 01 [..EHCS..@1PWKI. 8560: 50 57 55 43 08 00 07 08 5f 50 52 30 12 19 01 5c PWUC...._PR0...\ 8570: 2f 05 5f 53 42 5f 50 43 49 30 4c 50 43 5f 45 43 /._SB_PCI0LPC_EC 8580: 5f 5f 50 55 42 53 08 5f 50 52 31 12 19 01 5c 2f __PUBS._PR1...\/ 8590: 05 5f 53 42 5f 50 43 49 30 4c 50 43 5f 45 43 5f ._SB_PCI0LPC_EC_ 85a0: 5f 50 55 42 53 08 5f 50 52 32 12 19 01 5c 2f 05 _PUBS._PR2...\/. 85b0: 5f 53 42 5f 50 43 49 30 4c 50 43 5f 45 43 5f 5f _SB_PCI0LPC_EC__ 85c0: 50 55 42 53 14 14 5f 49 4e 49 00 70 0a 01 50 57 PUBS.._INI.p..PW 85d0: 4b 49 70 0a 23 50 57 55 43 08 5f 50 52 57 12 1d KIp.#PWUC._PRW.. 85e0: 03 0a 0d 0a 03 5c 2f 05 5f 53 42 5f 50 43 49 30 .....\/._SB_PCI0 85f0: 4c 50 43 5f 45 43 5f 5f 50 55 42 53 5b 82 49 3f LPC_EC__PUBS[.I? 8600: 55 52 54 48 08 5f 41 44 52 0a 00 5b 82 4a 3e 55 URTH._ADR..[.J>U 8610: 52 4d 48 08 5f 41 44 52 0a 01 14 0c 5f 55 50 43 RMH._ADR...._UPC 8620: 08 a4 5c 55 50 43 49 14 0c 5f 50 4c 44 08 a4 5c ..\UPCI.._PLD..\ 8630: 50 4c 44 49 5b 82 4f 0b 50 52 54 30 08 5f 41 44 PLDI[.O.PRT0._AD 8640: 52 0a 01 14 46 05 5f 55 50 43 08 08 55 50 43 50 R...F._UPC..UPCP 8650: 12 0a 04 0a 00 0a 00 0a 00 0a 00 9d 5c 55 50 43 ............\UPC 8660: 30 55 50 43 50 a0 09 93 5c 58 48 43 4d 0a 00 a1 0UPCP...\XHCM... 8670: 25 a0 23 7b 5c 2f 04 5f 53 42 5f 50 43 49 30 58 %.#{\/._SB_PCI0X 8680: 48 43 49 50 52 32 5f 0a 01 00 70 0a 00 88 55 50 HCIPR2_...p...UP 8690: 43 50 0a 00 00 a4 55 50 43 50 14 4a 05 5f 50 4c CP....UPCP.J._PL 86a0: 44 08 08 50 4c 44 50 11 03 0a 10 70 5c 50 4c 44 D..PLDP....p\PLD 86b0: 30 50 4c 44 50 8d 50 4c 44 50 0a 40 56 49 53 5f 0PLDP.PLDP.@VIS_ 86c0: a0 09 93 5c 58 48 43 4d 0a 00 a1 2a a0 23 7b 5c ...\XHCM...*.#{\ 86d0: 2f 04 5f 53 42 5f 50 43 49 30 58 48 43 49 50 52 /._SB_PCI0XHCIPR 86e0: 32 5f 0a 01 00 7b 56 49 53 5f 0a 00 56 49 53 5f 2_...{VIS_..VIS_ 86f0: a4 50 4c 44 50 5b 82 4f 0b 50 52 54 31 08 5f 41 .PLDP[.O.PRT1._A 8700: 44 52 0a 02 14 46 05 5f 55 50 43 08 08 55 50 43 DR...F._UPC..UPC 8710: 50 12 0a 04 0a 00 0a 00 0a 00 0a 00 9d 5c 55 50 P............\UP 8720: 43 31 55 50 43 50 a0 09 93 5c 58 48 43 4d 0a 00 C1UPCP...\XHCM.. 8730: a1 25 a0 23 7b 5c 2f 04 5f 53 42 5f 50 43 49 30 .%.#{\/._SB_PCI0 8740: 58 48 43 49 50 52 32 5f 0a 02 00 70 0a 00 88 55 XHCIPR2_...p...U 8750: 50 43 50 0a 00 00 a4 55 50 43 50 14 4a 05 5f 50 PCP....UPCP.J._P 8760: 4c 44 08 08 50 4c 44 50 11 03 0a 10 70 5c 50 4c LD..PLDP....p\PL 8770: 44 31 50 4c 44 50 8d 50 4c 44 50 0a 40 56 49 53 D1PLDP.PLDP.@VIS 8780: 5f a0 09 93 5c 58 48 43 4d 0a 00 a1 25 a0 23 7b _...\XHCM...%.#{ 8790: 5c 2f 04 5f 53 42 5f 50 43 49 30 58 48 43 49 50 \/._SB_PCI0XHCIP 87a0: 52 32 5f 0a 02 00 7b 56 49 53 5f 0a 00 56 49 53 R2_...{VIS_..VIS 87b0: 5f a4 50 4c 44 50 5b 82 4e 0d 50 52 54 32 08 5f _.PLDP[.N.PRT2._ 87c0: 41 44 52 0a 03 14 46 05 5f 55 50 43 08 08 55 50 ADR...F._UPC..UP 87d0: 43 50 12 0a 04 0a 00 0a 00 0a 00 0a 00 9d 5c 55 CP............\U 87e0: 50 43 32 55 50 43 50 a0 09 93 5c 58 48 43 4d 0a PC2UPCP...\XHCM. 87f0: 00 a1 25 a0 23 7b 5c 2f 04 5f 53 42 5f 50 43 49 ..%.#{\/._SB_PCI 8800: 30 58 48 43 49 50 52 32 5f 0a 04 00 70 0a 00 88 0XHCIPR2_...p... 8810: 55 50 43 50 0a 00 00 a4 55 50 43 50 14 49 07 5f UPCP....UPCP.I._ 8820: 50 4c 44 08 08 50 4c 44 50 11 03 0a 10 70 5c 50 PLD..PLDP....p\P 8830: 4c 44 32 50 4c 44 50 8d 50 4c 44 50 0a 40 56 49 LD2PLDP.PLDP.@VI 8840: 53 5f a0 09 93 5c 58 48 43 4d 0a 00 a1 25 a0 23 S_...\XHCM...%.# 8850: 7b 5c 2f 04 5f 53 42 5f 50 43 49 30 58 48 43 49 {\/._SB_PCI0XHCI 8860: 50 52 32 5f 0a 04 00 7b 56 49 53 5f 0a 00 56 49 PR2_...{VIS_..VI 8870: 53 5f a0 1e 93 5c 2f 03 5f 53 42 5f 47 44 43 4b S_...\/._SB_GDCK 8880: 47 47 49 44 0a 05 7b 56 49 53 5f 0a 00 56 49 53 GGID..{VIS_..VIS 8890: 5f a4 50 4c 44 50 5b 82 4f 0b 50 52 54 33 08 5f _.PLDP[.O.PRT3._ 88a0: 41 44 52 0a 04 14 46 05 5f 55 50 43 08 08 55 50 ADR...F._UPC..UP 88b0: 43 50 12 0a 04 0a 00 0a 00 0a 00 0a 00 9d 5c 55 CP............\U 88c0: 50 43 33 55 50 43 50 a0 09 93 5c 58 48 43 4d 0a PC3UPCP...\XHCM. 88d0: 00 a1 25 a0 23 7b 5c 2f 04 5f 53 42 5f 50 43 49 ..%.#{\/._SB_PCI 88e0: 30 58 48 43 49 50 52 32 5f 0a 08 00 70 0a 00 88 0XHCIPR2_...p... 88f0: 55 50 43 50 0a 00 00 a4 55 50 43 50 14 4a 05 5f UPCP....UPCP.J._ 8900: 50 4c 44 08 08 50 4c 44 50 11 03 0a 10 70 5c 50 PLD..PLDP....p\P 8910: 4c 44 33 50 4c 44 50 8d 50 4c 44 50 0a 40 56 49 LD3PLDP.PLDP.@VI 8920: 53 5f a0 09 93 5c 58 48 43 4d 0a 00 a1 25 a0 23 S_...\XHCM...%.# 8930: 7b 5c 2f 04 5f 53 42 5f 50 43 49 30 58 48 43 49 {\/._SB_PCI0XHCI 8940: 50 52 32 5f 0a 08 00 7b 56 49 53 5f 0a 00 56 49 PR2_...{VIS_..VI 8950: 53 5f a4 50 4c 44 50 5b 82 26 50 52 54 34 08 5f S_.PLDP[.&PRT4._ 8960: 41 44 52 0a 05 14 0c 5f 55 50 43 08 a4 5c 55 50 ADR...._UPC..\UP 8970: 43 34 14 0c 5f 50 4c 44 08 a4 5c 50 4c 44 34 5b C4.._PLD..\PLD4[ 8980: 82 26 50 52 54 35 08 5f 41 44 52 0a 06 14 0c 5f .&PRT5._ADR...._ 8990: 55 50 43 08 a4 5c 55 50 43 35 14 0c 5f 50 4c 44 UPC..\UPC5.._PLD 89a0: 08 a4 5c 50 4c 44 35 5b 82 26 50 52 54 36 08 5f ..\PLD5[.&PRT6._ 89b0: 41 44 52 0a 07 14 0c 5f 55 50 43 08 a4 5c 55 50 ADR...._UPC..\UP 89c0: 43 36 14 0c 5f 50 4c 44 08 a4 5c 50 4c 44 36 5b C6.._PLD..\PLD6[ 89d0: 82 26 50 52 54 37 08 5f 41 44 52 0a 08 14 0c 5f .&PRT7._ADR...._ 89e0: 55 50 43 08 a4 5c 55 50 43 37 14 0c 5f 50 4c 44 UPC..\UPC7.._PLD 89f0: 08 a4 5c 50 4c 44 37 5b 82 4e 1f 45 48 43 32 08 ..\PLD7[.N.EHC2. 8a00: 5f 41 44 52 0c 00 00 1a 00 08 5f 53 33 44 0a 03 _ADR......_S3D.. 8a10: 08 52 49 44 5f 0a 00 5b 80 45 48 43 53 02 0a 00 .RID_..[.EHCS... 8a20: 0b 00 01 5b 81 15 45 48 43 53 03 00 40 31 50 57 ...[..EHCS..@1PW 8a30: 4b 49 01 50 57 55 43 06 00 09 08 5f 50 52 30 12 KI.PWUC...._PR0. 8a40: 19 01 5c 2f 05 5f 53 42 5f 50 43 49 30 4c 50 43 ..\/._SB_PCI0LPC 8a50: 5f 45 43 5f 5f 50 55 42 53 08 5f 50 52 31 12 19 _EC__PUBS._PR1.. 8a60: 01 5c 2f 05 5f 53 42 5f 50 43 49 30 4c 50 43 5f .\/._SB_PCI0LPC_ 8a70: 45 43 5f 5f 50 55 42 53 08 5f 50 52 32 12 19 01 EC__PUBS._PR2... 8a80: 5c 2f 05 5f 53 42 5f 50 43 49 30 4c 50 43 5f 45 \/._SB_PCI0LPC_E 8a90: 43 5f 5f 50 55 42 53 14 14 5f 49 4e 49 00 70 0a C__PUBS.._INI.p. 8aa0: 01 50 57 4b 49 70 0a 13 50 57 55 43 08 5f 50 52 .PWKIp..PWUC._PR 8ab0: 57 12 1d 03 0a 0d 0a 03 5c 2f 05 5f 53 42 5f 50 W.......\/._SB_P 8ac0: 43 49 30 4c 50 43 5f 45 43 5f 5f 50 55 42 53 5b CI0LPC_EC__PUBS[ 8ad0: 82 46 12 55 52 54 48 08 5f 41 44 52 0a 00 5b 82 .F.URTH._ADR..[. 8ae0: 47 11 55 52 4d 48 08 5f 41 44 52 0a 01 14 0c 5f G.URMH._ADR...._ 8af0: 55 50 43 08 a4 5c 55 50 43 49 14 0c 5f 50 4c 44 UPC..\UPCI.._PLD 8b00: 08 a4 5c 50 4c 44 49 5b 82 26 50 52 54 38 08 5f ..\PLDI[.&PRT8._ 8b10: 41 44 52 0a 01 14 0c 5f 55 50 43 08 a4 5c 55 50 ADR...._UPC..\UP 8b20: 43 49 14 0c 5f 50 4c 44 08 a4 5c 50 4c 44 49 5b CI.._PLD..\PLDI[ 8b30: 82 26 50 52 54 39 08 5f 41 44 52 0a 02 14 0c 5f .&PRT9._ADR...._ 8b40: 55 50 43 08 a4 5c 55 50 43 39 14 0c 5f 50 4c 44 UPC..\UPC9.._PLD 8b50: 08 a4 5c 50 4c 44 39 5b 82 26 50 52 54 41 08 5f ..\PLD9[.&PRTA._ 8b60: 41 44 52 0a 03 14 0c 5f 55 50 43 08 a4 5c 55 50 ADR...._UPC..\UP 8b70: 43 49 14 0c 5f 50 4c 44 08 a4 5c 50 4c 44 49 5b CI.._PLD..\PLDI[ 8b80: 82 26 50 52 54 42 08 5f 41 44 52 0a 04 14 0c 5f .&PRTB._ADR...._ 8b90: 55 50 43 08 a4 5c 55 50 43 49 14 0c 5f 50 4c 44 UPC..\UPCI.._PLD 8ba0: 08 a4 5c 50 4c 44 49 5b 82 26 50 52 54 43 08 5f ..\PLDI[.&PRTC._ 8bb0: 41 44 52 0a 05 14 0c 5f 55 50 43 08 a4 5c 55 50 ADR...._UPC..\UP 8bc0: 43 49 14 0c 5f 50 4c 44 08 a4 5c 50 4c 44 49 5b CI.._PLD..\PLDI[ 8bd0: 82 26 50 52 54 44 08 5f 41 44 52 0a 06 14 0c 5f .&PRTD._ADR...._ 8be0: 55 50 43 08 a4 5c 55 50 43 49 14 0c 5f 50 4c 44 UPC..\UPCI.._PLD 8bf0: 08 a4 5c 50 4c 44 49 5b 82 31 48 44 45 46 08 5f ..\PLDI[.1HDEF._ 8c00: 41 44 52 0c 00 00 1b 00 08 5f 53 33 44 0a 03 08 ADR......_S3D... 8c10: 52 49 44 5f 0a 00 08 5f 50 52 57 12 06 02 0a 0d RID_..._PRW..... 8c20: 0a 04 14 07 5f 50 53 57 01 a3 10 47 66 5c 2f 04 ...._PSW...Gf\/. 8c30: 5f 53 42 5f 50 43 49 30 4c 50 43 5f 45 43 5f 5f _SB_PCI0LPC_EC__ 8c40: 08 42 44 45 56 0a ff 08 42 53 54 53 0a 00 08 42 .BDEV...BSTS...B 8c50: 48 4b 45 0a 00 14 22 5f 51 32 43 00 a0 1b 93 42 HKE..."_Q2C....B 8c60: 53 54 53 0a 00 70 42 47 49 44 0a 00 42 44 45 56 STS..pBGID..BDEV 8c70: 4e 42 52 45 42 44 45 56 14 19 5f 51 32 44 00 70 NBREBDEV.._Q2D.p 8c80: 42 47 49 44 0a 00 42 44 45 56 4e 42 49 4e 42 44 BGID..BDEVNBINBD 8c90: 45 56 14 44 08 5f 51 33 38 00 70 42 47 49 44 0a EV.D._Q38.pBGID. 8ca0: 00 60 a0 4f 05 93 60 0a 0f 42 44 49 53 5c 42 48 .`.O..`..BDIS\BH 8cb0: 44 50 0a 01 0a 00 4e 42 45 4a 42 44 45 56 70 60 DP....NBEJBDEVp` 8cc0: 42 44 45 56 a0 3d 93 5c 42 49 44 45 0a 03 70 0a BDEV.=.\BIDE..p. 8cd0: 00 5c 2f 05 5f 53 42 5f 50 43 49 30 53 41 54 31 .\/._SB_PCI0SAT1 8ce0: 50 52 49 4d 47 54 4d 45 70 0a 00 5c 2f 05 5f 53 PRIMGTMEp..\/._S 8cf0: 42 5f 50 43 49 30 53 41 54 31 53 43 4e 44 47 54 B_PCI0SAT1SCNDGT 8d00: 4d 45 a1 14 a0 05 48 50 42 55 a1 0c 70 60 42 44 ME....HPBU..p`BD 8d10: 45 56 4e 42 49 4e 60 08 4f 44 45 4a 0a 00 14 4c EVNBIN`.ODEJ...L 8d20: 05 5f 51 34 34 00 a0 44 05 5c 2f 04 5f 53 42 5f ._Q44..D.\/._SB_ 8d30: 50 43 49 30 4c 50 43 5f 43 53 4f 4e 70 0a 01 4f PCI0LPC_CSONp..O 8d40: 44 45 4a 70 42 47 49 44 0a 00 42 44 45 56 4e 42 DEJpBGID..BDEVNB 8d50: 49 4e 42 44 45 56 70 0a 00 4f 44 45 4a 5c 2f 06 INBDEVp..ODEJ\/. 8d60: 5f 53 42 5f 50 43 49 30 4c 50 43 5f 45 43 5f 5f _SB_PCI0LPC_EC__ 8d70: 48 4b 45 59 4d 48 4b 51 0b 06 30 14 4a 04 4e 42 HKEYMHKQ..0.J.NB 8d80: 52 45 01 a0 42 04 95 68 0a 0c a0 23 93 5c 42 49 RE..B..h...#.\BI 8d90: 44 45 0a 03 86 5c 2f 05 5f 53 42 5f 50 43 49 30 DE...\/._SB_PCI0 8da0: 53 41 54 31 53 43 4e 44 4d 53 54 52 0a 03 a1 17 SAT1SCNDMSTR.... 8db0: 86 5c 2f 04 5f 53 42 5f 50 43 49 30 53 41 54 31 .\/._SB_PCI0SAT1 8dc0: 50 52 54 31 0a 03 14 41 06 4e 42 45 4a 01 a0 4c PRT1...A.NBEJ..L 8dd0: 04 93 42 53 54 53 0a 00 a0 42 04 95 68 0a 0c a0 ..BSTS...B..h... 8de0: 23 93 5c 42 49 44 45 0a 03 86 5c 2f 05 5f 53 42 #.\BIDE...\/._SB 8df0: 5f 50 43 49 30 53 41 54 31 53 43 4e 44 4d 53 54 _PCI0SAT1SCNDMST 8e00: 52 0a 01 a1 17 86 5c 2f 04 5f 53 42 5f 50 43 49 R.....\/._SB_PCI 8e10: 30 53 41 54 31 50 52 54 31 0a 01 42 45 45 50 0a 0SAT1PRT1..BEEP. 8e20: 00 70 0a 00 42 53 54 53 14 4d 05 4e 42 49 4e 01 .p..BSTS.M.NBIN. 8e30: a0 48 04 95 68 0a 0c 42 45 4e 5f 0a 01 a0 23 93 .H..h..BEN_...#. 8e40: 5c 42 49 44 45 0a 03 86 5c 2f 05 5f 53 42 5f 50 \BIDE...\/._SB_P 8e50: 43 49 30 53 41 54 31 53 43 4e 44 4d 53 54 52 0a CI0SAT1SCNDMSTR. 8e60: 01 a1 17 86 5c 2f 04 5f 53 42 5f 50 43 49 30 53 ....\/._SB_PCI0S 8e70: 41 54 31 50 52 54 31 0a 01 42 45 45 50 0a 00 70 AT1PRT1..BEEP..p 8e80: 0a 00 42 53 54 53 14 4c 04 42 53 43 4e 00 a0 44 ..BSTS.L.BSCN..D 8e90: 04 92 48 50 42 55 70 42 47 49 44 0a 00 60 70 60 ..HPBUpBGID..`p` 8ea0: 42 44 45 56 a0 21 95 60 0a 0c a0 0b 93 60 0a 06 BDEV.!.`.....`.. 8eb0: 42 45 4e 5f 0a 02 a1 07 42 45 4e 5f 0a 01 4c 45 BEN_....BEN_..LE 8ec0: 44 5f 0a 04 0a 80 42 45 45 50 0a 00 70 0a 00 42 D_....BEEP..p..B 8ed0: 53 54 53 14 43 05 42 45 4a 30 01 a0 42 04 68 42 STS.C.BEJ0..B.hB 8ee0: 44 49 53 5c 42 48 44 50 0a 01 0a 00 70 0a 01 42 DIS\BHDP....p..B 8ef0: 53 54 53 a0 2a 42 48 4b 45 70 0a 00 42 48 4b 45 STS.*BHKEp..BHKE 8f00: 5c 2f 06 5f 53 42 5f 50 43 49 30 4c 50 43 5f 45 \/._SB_PCI0LPC_E 8f10: 43 5f 5f 48 4b 45 59 4d 48 4b 51 0b 03 30 a1 08 C__HKEYMHKQ..0.. 8f20: 70 0a 00 42 53 54 53 14 1d 42 45 4a 33 01 a0 0d p..BSTS..BEJ3... 8f30: 68 42 44 49 53 70 0a 01 42 53 54 53 a1 08 70 0a hBDISp..BSTS..p. 8f40: 00 42 53 54 53 14 32 42 50 54 53 01 70 0a 01 48 .BSTS.2BPTS.p..H 8f50: 44 42 4d a0 17 92 93 42 53 54 53 0a 00 70 0a 0f DBM....BSTS..p.. 8f60: 42 44 45 56 70 0a 00 42 53 54 53 70 0a 00 42 48 BDEVp..BSTSp..BH 8f70: 4b 45 42 55 57 4b 0a 00 14 41 08 42 57 41 4b 01 KEBUWK...A.BWAK. 8f80: 42 55 57 4b 0a 00 70 42 47 49 44 0a 00 60 a0 42 BUWK..pBGID..`.B 8f90: 05 93 42 53 54 53 0a 00 a0 1b 92 93 60 42 44 45 ..BSTS......`BDE 8fa0: 56 4e 42 45 4a 42 44 45 56 70 60 42 44 45 56 4e VNBEJBDEVp`BDEVN 8fb0: 42 49 4e 60 a1 2c a0 2a 91 5c 4c 46 44 43 92 93 BIN`.,.*.\LFDC.. 8fc0: 42 44 45 56 0a 0d a0 1a 92 93 60 0a 0f a0 13 48 BDEV......`....H 8fd0: 50 42 55 a0 06 92 94 68 0a 02 a1 06 4e 42 52 45 PBU....h....NBRE 8fe0: 60 a0 0f 95 42 44 45 56 0a 0c 5c 55 42 49 53 0a `...BDEV..\UBIS. 8ff0: 00 a1 08 5c 55 42 49 53 0a 01 14 49 05 42 44 49 ...\UBIS...I.BDI 9000: 53 00 a0 41 05 92 5c 2f 04 5f 53 42 5f 50 43 49 S..A..\/._SB_PCI 9010: 30 4c 50 43 5f 43 53 4f 4e a0 1c 92 5c 2f 04 5f 0LPC_CSON...\/._ 9020: 53 42 5f 50 43 49 30 4c 50 43 5f 47 4c 49 53 5c SB_PCI0LPC_GLIS\ 9030: 55 42 49 53 0a 01 70 0a 01 5c 2f 04 5f 53 42 5f UBIS..p..\/._SB_ 9040: 50 43 49 30 4c 50 43 5f 43 53 4f 4e 70 0a 0f 5c PCI0LPC_CSONp..\ 9050: 49 44 45 54 14 4f 04 42 50 4f 4e 01 a0 47 04 5c IDET.O.BPON..G.\ 9060: 2f 04 5f 53 42 5f 50 43 49 30 4c 50 43 5f 43 53 /._SB_PCI0LPC_CS 9070: 4f 4e 70 0a 00 5c 2f 04 5f 53 42 5f 50 43 49 30 ONp..\/._SB_PCI0 9080: 4c 50 43 5f 43 53 4f 4e a0 1b 5c 2f 04 5f 53 42 LPC_CSON..\/._SB 9090: 5f 50 43 49 30 4c 50 43 5f 47 4c 49 53 5c 55 42 _PCI0LPC_GLIS\UB 90a0: 49 53 0a 00 14 4e 04 42 45 4e 5f 01 a0 46 04 5c IS...N.BEN_..F.\ 90b0: 2f 04 5f 53 42 5f 50 43 49 30 4c 50 43 5f 43 53 /._SB_PCI0LPC_CS 90c0: 4f 4e 42 50 4f 4e 68 a0 24 90 68 93 4f 44 45 4a ONBPONh.$.h.ODEJ 90d0: 0a 01 70 0a 09 5c 2f 05 5f 53 42 5f 50 43 49 30 ..p..\/._SB_PCI0 90e0: 4c 50 43 5f 45 43 5f 5f 48 41 4e 54 a0 06 68 49 LPC_EC__HANT..hI 90f0: 52 44 59 14 40 06 42 53 54 41 01 70 5c 2f 03 5f RDY.@.BSTA.p\/._ 9100: 53 42 5f 47 44 43 4b 47 47 49 44 60 a0 18 93 60 SB_GDCKGGID`...` 9110: 0a 00 a0 12 44 4f 43 44 a0 0c 93 0a 00 5c 44 45 ....DOCD.....\DE 9120: 53 53 a4 0a 01 a1 2b a0 17 5c 2f 04 5f 53 42 5f SS....+..\/._SB_ 9130: 50 43 49 30 4c 50 43 5f 43 53 4f 4e a4 0a 00 42 PCI0LPC_CSON...B 9140: 49 4e 49 a0 0d 93 68 0a 01 a4 95 42 44 45 56 0a INI...h....BDEV. 9150: 0c a4 0a 00 14 44 06 42 55 57 4b 01 a0 3f 5c 48 .....D.BUWK..?\H 9160: 38 44 52 a0 1c 68 70 0a 01 5c 2f 05 5f 53 42 5f 8DR..hp..\/._SB_ 9170: 50 43 49 30 4c 50 43 5f 45 43 5f 5f 48 57 42 55 PCI0LPC_EC__HWBU 9180: a1 1b 70 0a 00 5c 2f 05 5f 53 42 5f 50 43 49 30 ..p..\/._SB_PCI0 9190: 4c 50 43 5f 45 43 5f 5f 48 57 42 55 a1 1c a0 0d LPC_EC__HWBU.... 91a0: 68 5c 4d 42 45 43 0a 32 0a ff 0a 80 a1 0c 5c 4d h\MBEC.2......\M 91b0: 42 45 43 0a 32 0a 7f 0a 00 14 1a 42 49 4e 49 00 BEC.2......BINI. 91c0: a0 13 93 42 44 45 56 0a ff 70 42 47 49 44 0a 00 ...BDEV..pBGID.. 91d0: 42 44 45 56 14 4a 08 42 47 49 44 01 a0 06 68 70 BDEV.J.BGID...hp 91e0: 0a ff 60 a1 49 06 a0 12 5c 48 38 44 52 70 48 50 ..`.I...\H8DRpHP 91f0: 42 55 61 70 48 42 49 44 62 a1 18 70 52 42 45 43 BUapHBIDb..pRBEC 9200: 0a 47 62 7b 62 0a 01 61 7b 62 0a 04 62 7a 62 0a .Gb{b..a{b..bzb. 9210: 02 62 a0 06 62 70 0a 0f 60 a1 2d a0 09 48 44 55 .b..bp..`.-..HDU 9220: 42 70 0a 0f 60 a1 21 a0 19 91 93 5c 49 44 45 54 Bp..`.!....\IDET 9230: 0a 03 93 5c 49 44 45 54 0a 06 70 5c 49 44 45 54 ...\IDET..p\IDET 9240: 60 a1 05 70 0a 07 60 a0 05 93 60 0a 0f a0 0f 90 `..p..`...`..... 9250: 5c 48 44 55 42 95 60 0a 0c 70 0a 0f 60 a4 60 14 \HDUB.`..p..`.`. 9260: 32 49 52 44 59 00 70 0b f4 01 60 70 0a 3c 61 70 2IRDY.p...`p..GGID 9330: 0a 07 5c 2f 05 5f 53 42 5f 50 43 49 30 4c 50 43 ..\/._SB_PCI0LPC 9340: 5f 45 43 5f 5f 44 41 54 54 0a 01 0a 00 5c 2f 05 _EC__DATT....\/. 9350: 5f 53 42 5f 50 43 49 30 4c 50 43 5f 45 43 5f 5f _SB_PCI0LPC_EC__ 9360: 44 41 54 54 0a 00 0a 01 a1 37 5c 2f 05 5f 53 42 DATT.....7\/._SB 9370: 5f 50 43 49 30 4c 50 43 5f 45 43 5f 5f 44 41 54 _PCI0LPC_EC__DAT 9380: 54 0a 01 0a 01 5c 2f 05 5f 53 42 5f 50 43 49 30 T....\/._SB_PCI0 9390: 4c 50 43 5f 45 43 5f 5f 44 41 54 54 0a 00 0a 00 LPC_EC__DATT.... 93a0: 5c 2f 05 5f 53 42 5f 50 43 49 30 4c 50 43 5f 45 \/._SB_PCI0LPC_E 93b0: 43 5f 5f 44 44 57 4b 0a 00 70 0a 01 5c 2f 04 5f C__DDWK..p..\/._ 93c0: 53 42 5f 50 43 49 30 4c 50 43 5f 44 53 43 49 14 SB_PCI0LPC_DSCI. 93d0: 2f 5f 44 43 4b 01 70 0a 00 60 a0 22 93 47 47 49 /_DCK.p..`.".GGI 93e0: 44 0a 05 70 5c 2f 05 5f 53 42 5f 50 43 49 30 4c D..p\/._SB_PCI0L 93f0: 50 43 5f 45 43 5f 5f 53 44 43 4b 68 60 a4 60 08 PC_EC__SDCKh`.`. 9400: 55 44 4f 50 0a 00 14 27 5f 45 4a 30 01 a0 20 93 UDOP...'_EJ0.. . 9410: 47 47 49 44 0a 05 5c 2f 05 5f 53 42 5f 50 43 49 GGID..\/._SB_PCI 9420: 30 4c 50 43 5f 45 43 5f 5f 53 45 4a 30 68 14 27 0LPC_EC__SEJ0h.' 9430: 5f 45 4a 33 01 a0 20 93 47 47 49 44 0a 05 5c 2f _EJ3.. .GGID..\/ 9440: 05 5f 53 42 5f 50 43 49 30 4c 50 43 5f 45 43 5f ._SB_PCI0LPC_EC_ 9450: 5f 53 45 4a 33 68 14 27 5f 45 4a 34 01 a0 20 93 _SEJ3h.'_EJ4.. . 9460: 47 47 49 44 0a 05 5c 2f 05 5f 53 42 5f 50 43 49 GGID..\/._SB_PCI 9470: 30 4c 50 43 5f 45 43 5f 5f 53 45 4a 34 68 14 26 0LPC_EC__SEJ4h.& 9480: 50 45 4a 33 00 a0 1f 93 47 47 49 44 0a 05 5c 2f PEJ3....GGID..\/ 9490: 05 5f 53 42 5f 50 43 49 30 4c 50 43 5f 45 43 5f ._SB_PCI0LPC_EC_ 94a0: 5f 50 53 45 33 14 2e 5f 42 44 4e 00 70 0a 00 60 _PSE3.._BDN.p..` 94b0: a0 21 93 47 47 49 44 0a 05 70 5c 2f 05 5f 53 42 .!.GGID..p\/._SB 94c0: 5f 50 43 49 30 4c 50 43 5f 45 43 5f 5f 53 4c 42 _PCI0LPC_EC__SLB 94d0: 4e 60 a4 60 14 2e 5f 55 49 44 00 70 0a 00 60 a0 N`.`.._UID.p..`. 94e0: 21 93 47 47 49 44 0a 05 70 5c 2f 05 5f 53 42 5f !.GGID..p\/._SB_ 94f0: 50 43 49 30 4c 50 43 5f 45 43 5f 5f 53 4c 55 44 PCI0LPC_EC__SLUD 9500: 60 a4 60 14 1e 47 50 54 53 01 5c 2f 05 5f 53 42 `.`..GPTS.\/._SB 9510: 5f 50 43 49 30 4c 50 43 5f 45 43 5f 5f 53 50 54 _PCI0LPC_EC__SPT 9520: 53 68 14 37 47 57 41 4b 01 5c 2f 05 5f 53 42 5f Sh.7GWAK.\/._SB_ 9530: 50 43 49 30 4c 50 43 5f 45 43 5f 5f 53 57 41 4b PCI0LPC_EC__SWAK 9540: 68 5c 2f 05 5f 53 42 5f 50 43 49 30 4c 50 43 5f h\/._SB_PCI0LPC_ 9550: 45 43 5f 5f 44 44 57 4b 0a 00 14 26 47 47 50 45 EC__DDWK...&GGPE 9560: 00 a0 1f 93 47 47 49 44 0a 05 5c 2f 05 5f 53 42 ....GGID..\/._SB 9570: 5f 50 43 49 30 4c 50 43 5f 45 43 5f 5f 53 47 50 _PCI0LPC_EC__SGP 9580: 45 08 47 5f 49 44 0c ff ff ff ff 14 4e 05 47 47 E.G_ID......N.GG 9590: 49 44 00 70 5c 2f 04 5f 53 42 5f 50 43 49 30 4c ID.p\/._SB_PCI0L 95a0: 50 43 5f 44 4f 49 30 60 70 5c 2f 04 5f 53 42 5f PC_DOI0`p\/._SB_ 95b0: 50 43 49 30 4c 50 43 5f 44 4f 49 31 61 70 5c 2f PCI0LPC_DOI1ap\/ 95c0: 04 5f 53 42 5f 50 43 49 30 4c 50 43 5f 44 4f 49 ._SB_PCI0LPC_DOI 95d0: 32 62 7d 60 79 61 0a 01 00 60 7d 60 79 62 0a 02 2b}`ya...`}`yb.. 95e0: 00 60 70 60 47 5f 49 44 a4 60 10 43 5e 5c 2f 04 .`p`G_ID.`.C^\/. 95f0: 5f 53 42 5f 50 43 49 30 4c 50 43 5f 45 43 5f 5f _SB_PCI0LPC_EC__ 9600: 14 4b 08 5f 51 35 30 00 70 5c 2f 03 5f 53 42 5f .K._Q50.p\/._SB_ 9610: 47 44 43 4b 47 47 49 44 60 a0 42 07 92 93 60 0a GDCKGGID`.B...`. 9620: 07 5c 2f 05 5f 53 42 5f 50 43 49 30 4c 50 43 5f .\/._SB_PCI0LPC_ 9630: 45 43 5f 5f 4c 45 44 5f 0a 08 0a 80 5c 2f 05 5f EC__LED_....\/._ 9640: 53 42 5f 50 43 49 30 4c 50 43 5f 45 43 5f 5f 4c SB_PCI0LPC_EC__L 9650: 45 44 5f 0a 08 0a c0 a0 27 93 60 0a 05 5c 2f 05 ED_.....'.`..\/. 9660: 5f 53 42 5f 50 43 49 30 4c 50 43 5f 45 43 5f 5f _SB_PCI0LPC_EC__ 9670: 53 50 45 4a 47 55 53 42 0a 00 5b 22 0b 2c 01 86 SPEJGUSB..[".,.. 9680: 5c 2e 5f 53 42 5f 47 44 43 4b 0a 03 14 4d 28 5f \._SB_GDCK...M(_ 9690: 51 34 35 00 70 0c ff ff ff ff 5c 2f 03 5f 53 42 Q45.p.....\/._SB 96a0: 5f 47 44 43 4b 47 5f 49 44 70 0c ff ff ff ff 5c _GDCKG_IDp.....\ 96b0: 2f 05 5f 53 42 5f 50 43 49 30 4c 50 43 5f 45 43 /._SB_PCI0LPC_EC 96c0: 5f 5f 53 4c 49 44 70 5c 2f 03 5f 53 42 5f 47 44 __SLIDp\/._SB_GD 96d0: 43 4b 47 47 49 44 60 a0 33 93 60 0a 07 5c 2f 05 CKGGID`.3.`..\/. 96e0: 5f 53 42 5f 50 43 49 30 4c 50 43 5f 45 43 5f 5f _SB_PCI0LPC_EC__ 96f0: 4c 45 44 5f 0a 08 0a 00 47 55 53 42 0a 00 86 5c LED_....GUSB...\ 9700: 2e 5f 53 42 5f 47 44 43 4b 0a 03 a0 4e 0d 93 60 ._SB_GDCK...N..` 9710: 0a 05 5c 2f 05 5f 53 42 5f 50 43 49 30 4c 50 43 ..\/._SB_PCI0LPC 9720: 5f 45 43 5f 5f 4c 45 44 5f 0a 08 0a 80 41 53 53 _EC__LED_....ASS 9730: 49 0a 00 a0 42 04 7b 5c 2f 04 5f 53 42 5f 50 43 I...B.{\/._SB_PC 9740: 49 30 58 48 43 49 50 52 32 5f 0a 04 00 7b 5c 2f I0XHCIPR2_...{\/ 9750: 04 5f 53 42 5f 50 43 49 30 58 48 43 49 50 52 32 ._SB_PCI0XHCIPR2 9760: 5f 0a fb 5c 2f 04 5f 53 42 5f 50 43 49 30 58 48 _..\/._SB_PCI0XH 9770: 43 49 50 52 32 5f a0 42 04 7b 5c 2f 04 5f 53 42 CIPR2_.B.{\/._SB 9780: 5f 50 43 49 30 58 48 43 49 50 52 33 5f 0a 04 00 _PCI0XHCIPR3_... 9790: 7b 5c 2f 04 5f 53 42 5f 50 43 49 30 58 48 43 49 {\/._SB_PCI0XHCI 97a0: 50 52 33 5f 0a fb 5c 2f 04 5f 53 42 5f 50 43 49 PR3_..\/._SB_PCI 97b0: 30 58 48 43 49 50 52 33 5f 5b 22 0a 64 a0 0c 5c 0XHCIPR3_[".d..\ 97c0: 48 38 44 52 70 53 4c 49 53 61 a1 0c 7b 5c 52 42 H8DRpSLISa..{\RB 97d0: 45 43 0a 02 0a 01 61 a0 12 93 61 0a 01 86 5c 2e EC....a...a...\. 97e0: 5f 53 42 5f 47 44 43 4b 0a 00 a1 4f 12 a0 4e 0f _SB_GDCK...O..N. 97f0: 44 4f 43 44 5b 22 0a 64 a0 15 5c 2f 04 5f 53 42 DOCD[".d..\/._SB 9800: 5f 50 43 49 30 4c 50 43 5f 45 50 57 47 a3 a1 0b _PCI0LPC_EPWG... 9810: a0 09 48 50 41 43 5f 51 32 37 41 53 53 49 0a 02 ..HPAC_Q27ASSI.. 9820: 5b 22 0a 64 a0 49 0a 90 92 93 5c 2f 03 5f 53 42 [".d.I....\/._SB 9830: 5f 47 44 43 4b 58 48 4f 53 0a 00 92 93 5c 58 48 _GDCKXHOS....\XH 9840: 43 4d 0a 00 a0 44 04 80 7b 5c 2f 04 5f 53 42 5f CM...D..{\/._SB_ 9850: 50 43 49 30 58 48 43 49 50 52 32 5f 0a 04 00 00 PCI0XHCIPR2_.... 9860: 7d 5c 2f 04 5f 53 42 5f 50 43 49 30 58 48 43 49 }\/._SB_PCI0XHCI 9870: 50 52 32 5f 0a 04 5c 2f 04 5f 53 42 5f 50 43 49 PR2_..\/._SB_PCI 9880: 30 58 48 43 49 50 52 32 5f a0 44 04 80 7b 5c 2f 0XHCIPR2_.D..{\/ 9890: 04 5f 53 42 5f 50 43 49 30 58 48 43 49 50 52 33 ._SB_PCI0XHCIPR3 98a0: 5f 0a 04 00 00 7d 5c 2f 04 5f 53 42 5f 50 43 49 _....}\/._SB_PCI 98b0: 30 58 48 43 49 50 52 33 5f 0a 04 5c 2f 04 5f 53 0XHCIPR3_..\/._S 98c0: 42 5f 50 43 49 30 58 48 43 49 50 52 33 5f 5c 2f B_PCI0XHCIPR3_\/ 98d0: 06 5f 53 42 5f 50 43 49 30 4c 50 43 5f 45 43 5f ._SB_PCI0LPC_EC_ 98e0: 5f 48 4b 45 59 4d 48 4b 51 0b 10 40 a1 2d 5b 22 _HKEYMHKQ..@.-[" 98f0: 0a 64 a0 09 48 50 41 43 5f 51 32 36 5c 2f 06 5f .d..HPAC_Q26\/._ 9900: 53 42 5f 50 43 49 30 4c 50 43 5f 45 43 5f 5f 48 SB_PCI0LPC_EC__H 9910: 4b 45 59 4d 48 4b 51 0b 11 40 14 40 0a 47 55 53 KEYMHKQ..@.@.GUS 9920: 42 01 a0 4c 08 5c 48 38 44 52 70 68 53 4c 49 53 B..L.\H8DRphSLIS 9930: a0 4e 07 93 68 0a 00 5c 2f 05 5f 53 42 5f 50 43 .N..h..\/._SB_PC 9940: 49 30 4c 50 43 5f 45 43 5f 5f 4c 45 44 5f 0a 08 I0LPC_EC__LED_.. 9950: 0a 00 a0 27 93 5c 58 48 43 4d 0a 00 86 5c 2f 06 ...'.\XHCM...\/. 9960: 5f 53 42 5f 50 43 49 30 45 48 43 31 55 52 54 48 _SB_PCI0EHC1URTH 9970: 55 52 4d 48 50 52 54 32 0a 03 a1 34 a0 32 7b 5c URMHPRT2...4.2{\ 9980: 2f 04 5f 53 42 5f 50 43 49 30 58 48 43 49 50 52 /._SB_PCI0XHCIPR 9990: 32 5f 0a 04 00 86 5c 2f 05 5f 53 42 5f 50 43 49 2_....\/._SB_PCI 99a0: 30 58 48 43 49 55 52 54 48 48 53 50 32 0a 03 a1 0XHCIURTHHSP2... 99b0: 0b 5c 4d 42 45 43 0a 02 0a fe 68 14 46 19 44 41 .\MBEC....h.F.DA 99c0: 54 54 02 70 0a 00 60 a0 42 08 93 68 0a 00 a0 28 TT.p..`.B..h...( 99d0: 93 69 0a 01 a0 11 5c 48 38 44 52 7d 48 41 4d 36 .i....\H8DR}HAM6 99e0: 0a 80 48 41 4d 36 a1 0c 5c 4d 42 45 43 0a 16 0a ..HAM6..\MBEC... 99f0: ff 0a 80 70 0a 01 60 a0 24 93 69 0a 00 a0 11 5c ...p..`.$.i....\ 9a00: 48 38 44 52 7b 48 41 4d 36 0a 7f 48 41 4d 36 a1 H8DR{HAM6..HAM6. 9a10: 0c 5c 4d 42 45 43 0a 16 0a 7f 0a 00 a0 2d 93 69 .\MBEC.......-.i 9a20: 0a 02 a0 14 5c 48 38 44 52 a0 0d 7b 48 41 4d 36 ....\H8DR..{HAM6 9a30: 0a 80 00 70 0a 01 60 a1 12 a0 10 7b 5c 52 42 45 ...p..`....{\RBE 9a40: 43 0a 16 0a 80 00 70 0a 01 60 a0 42 08 93 68 0a C.....p..`.B..h. 9a50: 01 a0 28 93 69 0a 01 a0 11 5c 48 38 44 52 7d 48 ..(.i....\H8DR}H 9a60: 41 4d 41 0a 01 48 41 4d 41 a1 0c 5c 4d 42 45 43 AMA..HAMA..\MBEC 9a70: 0a 1a 0a ff 0a 01 70 0a 01 60 a0 24 93 69 0a 00 ......p..`.$.i.. 9a80: a0 11 5c 48 38 44 52 7b 48 41 4d 41 0a fe 48 41 ..\H8DR{HAMA..HA 9a90: 4d 41 a1 0c 5c 4d 42 45 43 0a 1a 0a fe 0a 00 a0 MA..\MBEC....... 9aa0: 2d 93 69 0a 02 a0 14 5c 48 38 44 52 a0 0d 7b 48 -.i....\H8DR..{H 9ab0: 41 4d 41 0a 01 00 70 0a 01 60 a1 12 a0 10 7b 5c AMA...p..`....{\ 9ac0: 52 42 45 43 0a 1a 0a 01 00 70 0a 01 60 a0 42 08 RBEC.....p..`.B. 9ad0: 93 68 0a 02 a0 28 93 69 0a 01 a0 11 5c 48 38 44 .h...(.i....\H8D 9ae0: 52 7d 48 41 4d 42 0a 01 48 41 4d 42 a1 0c 5c 4d R}HAMB..HAMB..\M 9af0: 42 45 43 0a 1b 0a ff 0a 01 70 0a 01 60 a0 24 93 BEC......p..`.$. 9b00: 69 0a 00 a0 11 5c 48 38 44 52 7b 48 41 4d 42 0a i....\H8DR{HAMB. 9b10: fe 48 41 4d 42 a1 0c 5c 4d 42 45 43 0a 1b 0a fe .HAMB..\MBEC.... 9b20: 0a 00 a0 2d 93 69 0a 02 a0 14 5c 48 38 44 52 a0 ...-.i....\H8DR. 9b30: 0d 7b 48 41 4d 42 0a 01 00 70 0a 01 60 a1 12 a0 .{HAMB...p..`... 9b40: 10 7b 5c 52 42 45 43 0a 1b 0a 01 00 70 0a 01 60 .{\RBEC.....p..` 9b50: a4 60 14 4b 07 44 44 57 4b 01 70 0a 00 60 a0 23 .`.K.DDWK.p..`.# 9b60: 93 68 0a 01 a0 0c 5c 48 38 44 52 70 01 48 57 44 .h....\H8DRp.HWD 9b70: 4b a1 0c 5c 4d 42 45 43 0a 32 0a ff 0a 08 70 0a K..\MBEC.2....p. 9b80: 01 60 a0 1f 93 68 0a 00 a0 0c 5c 48 38 44 52 70 .`...h....\H8DRp 9b90: 00 48 57 44 4b a1 0c 5c 4d 42 45 43 0a 32 0a f7 .HWDK..\MBEC.2.. 9ba0: 0a 00 a0 29 93 68 0a 02 a0 10 5c 48 38 44 52 a0 ...).h....\H8DR. 9bb0: 09 48 57 44 4b 70 0a 01 60 a1 12 a0 10 7b 5c 52 .HWDKp..`....{\R 9bc0: 42 45 43 0a 32 0a 08 00 70 0a 01 60 a4 60 10 4c BEC.2...p..`.`.L 9bd0: 08 5c 2f 05 5f 53 42 5f 50 43 49 30 4c 50 43 5f .\/._SB_PCI0LPC_ 9be0: 45 43 5f 5f 48 4b 45 59 14 42 07 47 44 4b 53 00 EC__HKEY.B.GDKS. 9bf0: 70 0a 00 60 5b 22 0b f4 01 a0 4f 05 93 5c 2f 05 p..`["....O..\/. 9c00: 5f 53 42 5f 50 43 49 30 4c 50 43 5f 45 43 5f 5f _SB_PCI0LPC_EC__ 9c10: 44 4f 43 44 0a 01 a0 23 44 4f 43 44 70 5c 2f 05 DOCD...#DOCDp\/. 9c20: 5f 53 42 5f 50 43 49 30 4c 50 43 5f 45 43 5f 5f _SB_PCI0LPC_EC__ 9c30: 41 43 53 42 60 79 60 0a 01 60 7d 60 0a 01 60 70 ACSB`y`..`}`..`p 9c40: 5c 2f 03 5f 53 42 5f 47 44 43 4b 47 47 49 44 61 \/._SB_GDCKGGIDa 9c50: 79 61 0a 08 61 7d 60 61 60 a4 60 10 4c 5a 5c 2f ya..a}`a`.`.LZ\/ 9c60: 04 5f 53 42 5f 50 43 49 30 4c 50 43 5f 45 43 5f ._SB_PCI0LPC_EC_ 9c70: 5f 08 53 4c 49 44 0c ff ff ff ff 08 53 49 44 42 _.SLID......SIDB 9c80: 0c ff ff ff ff 08 53 46 4c 47 0a 00 08 53 55 43 ......SFLG...SUC 9c90: 54 0a 00 08 53 48 4b 45 0a 00 14 24 53 4c 42 4e T...SHKE...$SLBN 9ca0: 00 70 0a 00 60 a0 19 93 5c 2f 03 5f 53 42 5f 47 .p..`...\/._SB_G 9cb0: 44 43 4b 47 47 49 44 0a 05 a4 0c 30 ae 00 02 14 DCKGGID....0.... 9cc0: 09 53 4c 55 44 00 a4 0a 00 14 3f 53 53 54 41 00 .SLUD.....?SSTA. 9cd0: 53 55 44 4b 53 55 44 54 a0 0c 93 47 53 49 44 0a SUDKSUDT...GSID. 9ce0: 05 70 0a 0f 60 a1 13 a0 0b 92 5c 57 39 38 46 70 .p..`.....\W98Fp 9cf0: 0a 00 60 a1 05 70 0a 0c 60 a0 0d 5c 57 39 38 46 ..`..p..`..\W98F 9d00: 70 48 49 44 53 60 60 a4 60 14 2b 53 49 4e 49 00 pHIDS``.`.+SINI. 9d10: a0 14 93 47 53 49 44 0a 05 7d 53 46 4c 47 0b 00 ...GSID..}SFLG.. 9d20: 04 53 46 4c 47 a1 0f 7b 53 46 4c 47 80 0b 00 04 .SFLG..{SFLG.... 9d30: 00 53 46 4c 47 14 4c 07 53 50 54 53 01 a0 44 07 .SFLG.L.SPTS..D. 9d40: 90 92 95 68 0a 01 92 94 68 0a 04 70 0a 00 53 48 ...h....h..p..SH 9d50: 4b 45 70 0a 00 53 49 44 42 a0 1d 7b 53 46 4c 47 KEp..SIDB..{SFLG 9d60: 0a 02 00 70 0a 00 53 4c 49 44 7b 53 46 4c 47 80 ...p..SLID{SFLG. 9d70: 0a 02 00 53 46 4c 47 a0 2e 93 47 53 49 44 0a 05 ...SFLG...GSID.. 9d80: a0 1e 93 68 0a 03 5c 2f 05 5f 53 42 5f 50 43 49 ...h..\/._SB_PCI 9d90: 30 4c 50 43 5f 45 43 5f 5f 44 44 57 4b 0a 01 70 0LPC_EC__DDWK..p 9da0: 0a 05 53 49 44 42 7d 53 46 4c 47 0b 00 01 53 46 ..SIDB}SFLG...SF 9db0: 4c 47 14 46 0b 53 57 41 4b 01 70 0c ff ff ff ff LG.F.SWAK.p..... 9dc0: 53 4c 49 44 a0 44 0a 90 92 95 68 0a 01 92 94 68 SLID.D....h....h 9dd0: 0a 04 a0 45 04 93 53 49 44 42 0a 05 a0 18 93 47 ...E..SIDB.....G 9de0: 53 49 44 0a 05 4c 45 44 5f 0a 03 0a 80 79 68 0a SID..LED_....yh. 9df0: 08 53 48 4b 45 a1 22 47 55 53 42 0a 00 86 5c 2e .SHKE."GUSB...\. 9e00: 5f 53 42 5f 47 44 43 4b 0a 00 7b 53 46 4c 47 80 _SB_GDCK..{SFLG. 9e10: 0b 00 04 00 53 46 4c 47 a1 1b a0 16 93 47 53 49 ....SFLG.....GSI 9e20: 44 0a 05 41 53 53 49 0a 00 5b 22 0a 64 57 53 44 D..ASSI..[".dWSD 9e30: 4b a1 02 a3 7b 53 46 4c 47 80 0b 00 01 00 53 46 K...{SFLG.....SF 9e40: 4c 47 7b 53 46 4c 47 80 0a 02 00 53 46 4c 47 7b LG{SFLG....SFLG{ 9e50: 53 46 4c 47 80 0a 10 00 53 46 4c 47 7b 53 46 4c SFLG....SFLG{SFL 9e60: 47 80 0a 20 00 53 46 4c 47 14 11 53 47 50 45 00 G.. .SFLG..SGPE. 9e70: 7d 53 46 4c 47 0a 08 53 46 4c 47 14 4e 0c 53 44 }SFLG..SFLG.N.SD 9e80: 43 4b 01 a0 43 0c 5c 48 38 44 52 a0 2d 68 42 53 CK..C.\H8DR.-hBS 9e90: 43 4e 5c 2f 05 5f 53 42 5f 50 43 49 30 4c 50 43 CN\/._SB_PCI0LPC 9ea0: 5f 45 43 5f 5f 44 41 54 54 0a 01 0a 01 7d 53 46 _EC__DATT....}SF 9eb0: 4c 47 0b 00 04 53 46 4c 47 a1 4d 08 7d 53 46 4c LG...SFLG.M.}SFL 9ec0: 47 0a 02 53 46 4c 47 47 55 53 42 0a 00 70 0a 01 G..SFLGGUSB..p.. 9ed0: 48 42 31 49 a0 43 04 5c 57 4e 54 46 70 0a 00 5c HB1I.C.\WNTFp..\ 9ee0: 2f 06 5f 53 42 5f 50 43 49 30 4c 50 43 5f 45 43 /._SB_PCI0LPC_EC 9ef0: 5f 5f 42 41 54 31 42 31 53 54 70 0a 00 5c 2f 06 __BAT1B1STp..\/. 9f00: 5f 53 42 5f 50 43 49 30 4c 50 43 5f 45 43 5f 5f _SB_PCI0LPC_EC__ 9f10: 42 41 54 31 58 42 31 53 42 45 4a 30 0a 01 5c 2f BAT1XB1SBEJ0..\/ 9f20: 05 5f 53 42 5f 50 43 49 30 4c 50 43 5f 45 43 5f ._SB_PCI0LPC_EC_ 9f30: 5f 44 41 54 54 0a 01 0a 00 7b 53 46 4c 47 80 0b _DATT....{SFLG.. 9f40: 00 04 00 53 46 4c 47 a4 0a 01 14 2f 53 45 4a 30 ...SFLG..../SEJ0 9f50: 01 70 0a 00 53 4c 49 44 a0 08 68 41 53 53 49 0a .p..SLID..hASSI. 9f60: 01 4c 45 44 5f 0a 03 0a 00 53 55 44 49 7b 53 46 .LED_....SUDI{SF 9f70: 4c 47 80 0a 02 00 53 46 4c 47 14 1f 53 45 4a 33 LG....SFLG..SEJ3 9f80: 01 7d 53 46 4c 47 0a 10 53 46 4c 47 a0 0d 93 5c .}SFLG..SFLG...\ 9f90: 53 50 53 5f 0a 03 50 53 45 33 14 11 53 45 4a 34 SPS_..PSE3..SEJ4 9fa0: 01 7d 53 46 4c 47 0a 20 53 46 4c 47 14 18 50 53 .}SFLG. SFLG..PS 9fb0: 45 33 00 a0 11 7b 53 46 4c 47 0a 10 00 4c 45 44 E3...{SFLG...LED 9fc0: 5f 0a 03 0a 00 08 53 48 44 45 0a 00 14 44 04 57 _.....SHDE...D.W 9fd0: 53 44 4b 00 a0 2d 7b 53 46 4c 47 7d 0a 10 0a 20 SDK..-{SFLG}... 9fe0: 00 00 53 44 43 4b 0a 01 a0 19 5c 57 39 38 46 7d ..SDCK....\W98F} 9ff0: 53 46 4c 47 0b 00 02 53 46 4c 47 70 0a 05 53 48 SFLG...SFLGp..SH a000: 44 45 a1 0e 86 5c 2e 5f 53 42 5f 47 44 43 4b 0a DE...\._SB_GDCK. a010: 00 14 40 06 48 49 44 53 01 70 68 60 a0 43 05 7b ..@.HIDS.ph`.C.{ a020: 53 46 4c 47 0b 00 02 00 a0 37 93 68 0a 0f a0 0a SFLG.....7.h.... a030: 5c 57 39 38 46 70 0a 0c 60 76 53 48 44 45 a0 21 \W98Fp..`vSHDE.! a040: 92 53 48 44 45 7b 53 46 4c 47 80 0b 00 02 00 53 .SHDE{SFLG.....S a050: 46 4c 47 86 5c 2e 5f 53 42 5f 47 44 43 4b 0a 00 FLG.\._SB_GDCK.. a060: a1 0f 7b 53 46 4c 47 80 0b 00 02 00 53 46 4c 47 ..{SFLG.....SFLG a070: a4 60 14 44 08 53 55 44 4b 00 a0 4c 07 7b 53 46 .`.D.SUDK..L.{SF a080: 4c 47 0a 08 00 a0 41 07 92 7b 53 46 4c 47 0b 00 LG....A..{SFLG.. a090: 01 00 7d 53 48 4b 45 0b 04 20 53 48 4b 45 a0 28 ..}SHKE.. SHKE.( a0a0: 93 5c 55 4f 50 54 0a 00 5c 2f 06 5f 53 42 5f 50 .\UOPT..\/._SB_P a0b0: 43 49 30 4c 50 43 5f 45 43 5f 5f 48 4b 45 59 4d CI0LPC_EC__HKEYM a0c0: 48 4b 51 53 48 4b 45 a0 13 5c 57 39 38 46 86 5c HKQSHKE..\W98F.\ a0d0: 2e 5f 53 42 5f 47 44 43 4b 0a 01 a1 0e 86 5c 2e ._SB_GDCK.....\. a0e0: 5f 53 42 5f 47 44 43 4b 0a 03 7b 53 46 4c 47 80 _SB_GDCK..{SFLG. a0f0: 0a 08 00 53 46 4c 47 14 1d 53 55 44 49 00 a0 0d ...SFLG..SUDI... a100: 5c 57 4e 54 46 70 0a 01 53 55 43 54 a1 08 70 0a \WNTFp..SUCT..p. a110: 05 53 55 43 54 14 43 05 53 55 44 54 00 a0 4b 04 .SUCT.C.SUDT..K. a120: 7b 53 48 4b 45 0b 04 20 00 a0 3f 93 47 53 49 44 {SHKE.. ..?.GSID a130: 0a 00 a0 36 92 76 53 55 43 54 70 0a 00 53 48 4b ...6.vSUCTp..SHK a140: 45 a0 27 93 5c 55 4f 50 54 0a 00 5c 2f 06 5f 53 E.'.\UOPT..\/._S a150: 42 5f 50 43 49 30 4c 50 43 5f 45 43 5f 5f 48 4b B_PCI0LPC_EC__HK a160: 45 59 4d 48 4b 51 0b 03 40 14 42 05 47 53 49 44 EYMHKQ..@.B.GSID a170: 00 a0 45 04 93 53 4c 49 44 0c ff ff ff ff 70 0c ..E..SLID.....p. a180: ff ff ff ff 5c 2f 03 5f 53 42 5f 47 44 43 4b 47 ....\/._SB_GDCKG a190: 5f 49 44 a0 1a 93 5c 2f 03 5f 53 42 5f 47 44 43 _ID...\/._SB_GDC a1a0: 4b 47 47 49 44 0a 05 70 0a 05 53 4c 49 44 a1 08 KGGID..p..SLID.. a1b0: 70 0a 00 53 4c 49 44 a4 53 4c 49 44 14 4b 04 53 p..SLID.SLID.K.S a1c0: 50 45 4a 00 4c 45 44 5f 0a 03 0a 00 5b 22 0a c8 PEJ.LED_....[".. a1d0: 4c 45 44 5f 0a 08 0a 80 5b 22 0a c8 4c 45 44 5f LED_....["..LED_ a1e0: 0a 08 0a 00 5b 22 0a c8 4c 45 44 5f 0a 08 0a 80 ....["..LED_.... a1f0: 5b 22 0a c8 4c 45 44 5f 0a 08 0a 00 5b 22 0a c8 ["..LED_....[".. a200: 4c 45 44 5f 0a 08 0a 80 10 40 05 5c 2f 04 5f 53 LED_.....@.\/._S a210: 42 5f 50 43 49 30 4c 50 43 5f 45 43 5f 5f 14 0d B_PCI0LPC_EC__.. a220: 5f 51 34 33 00 5c 55 43 4d 53 0a 18 14 2c 53 41 _Q43.\UCMS...,SA a230: 55 4d 01 a0 06 94 68 0a 03 a3 a1 1e a0 0c 5c 48 UM....h.......\H a240: 38 44 52 70 68 48 41 55 4d a1 0f 5c 4d 42 45 43 8DRphHAUM..\MBEC a250: 0a 03 0a 9f 79 68 0a 05 00 10 42 05 5c 2f 05 5f ....yh....B.\/._ a260: 53 42 5f 50 43 49 30 4c 50 43 5f 45 43 5f 5f 48 SB_PCI0LPC_EC__H a270: 4b 45 59 14 10 47 53 4d 53 01 a4 5c 41 55 44 43 KEY..GSMS..\AUDC a280: 0a 00 0a 00 14 13 53 53 4d 53 01 a4 5c 41 55 44 ......SSMS..\AUD a290: 43 0a 01 7b 68 0a 01 00 14 13 53 48 44 41 01 a4 C..{h.....SHDA.. a2a0: 5c 41 55 44 43 0a 02 7b 68 0a 01 00 10 4c 36 5c \AUDC..{h....L6\ a2b0: 2f 04 5f 53 42 5f 50 43 49 30 4c 50 43 5f 45 43 /._SB_PCI0LPC_EC a2c0: 5f 5f 08 42 52 54 57 12 26 12 0a 64 0a 64 0a 0a __.BRTW.&..d.d.. a2d0: 0a 0f 0a 14 0a 19 0a 1e 0a 23 0a 28 0a 2d 0a 32 .........#.(.-.2 a2e0: 0a 37 0a 3c 0a 41 0a 46 0a 50 0a 5a 0a 64 08 42 .7.<.A.F.P.Z.d.B a2f0: 52 54 42 12 42 09 03 12 30 16 0a 14 0a 04 0a 04 RTB.B...0....... a300: 0a 08 0a 0c 0a 13 0a 19 0a 20 0a 27 0a 30 0a 39 ......... .'.0.9 a310: 0a 43 0a 4e 0a 5c 0a 71 0a 8b 0a b4 0a ff 0b 45 .C.N.\.q.......E a320: 01 0b 45 01 0a 04 0a 04 12 2e 16 0a 1e 0a 03 0a ..E............. a330: 03 0a 06 0a 09 0a 0c 0a 0f 0a 13 0a 17 0a 1c 0a ................ a340: 21 0a 28 0a 32 0a 41 0a 58 0a 7d 0a b9 0a ff 0a !.(.2.A.X.}..... a350: d2 0a d2 0a 03 0a 03 12 2e 16 0a 00 0a 04 0a 04 ................ a360: 0a 07 0a 09 0a 0c 0a 10 0a 15 0a 1c 0a 25 0a 32 .............%.2 a370: 0a 40 0a 50 0a 64 0a 82 0a a5 0a cd 0a ff 0a dc .@.P.d.......... a380: 0a dc 0a 04 0a 04 14 4a 0e 5f 51 31 34 00 a0 3d .......J._Q14..= a390: 5c 2f 06 5f 53 42 5f 50 43 49 30 4c 50 43 5f 45 \/._SB_PCI0LPC_E a3a0: 43 5f 5f 48 4b 45 59 4d 48 4b 4b 0b 00 80 5c 2f C__HKEYMHKK...\/ a3b0: 06 5f 53 42 5f 50 43 49 30 4c 50 43 5f 45 43 5f ._SB_PCI0LPC_EC_ a3c0: 5f 48 4b 45 59 4d 48 4b 51 0b 10 10 a0 3f 5c 4e _HKEYMHKQ....?\N a3d0: 42 43 46 a0 1c 5c 56 49 47 44 86 5c 2f 04 5f 53 BCF..\VIGD.\/._S a3e0: 42 5f 50 43 49 30 56 49 44 5f 4c 43 44 30 0a 86 B_PCI0VID_LCD0.. a3f0: a1 1b 86 5c 2f 05 5f 53 42 5f 50 43 49 30 50 45 ...\/._SB_PCI0PE a400: 47 5f 56 49 44 5f 4c 43 44 30 0a 86 a1 44 06 70 G_VID_LCD0...D.p a410: 5c 42 52 4c 56 60 a0 0f 92 93 60 0a 0f 75 60 70 \BRLV`....`..u`p a420: 60 5c 42 52 4c 56 a0 24 5c 56 49 47 44 5c 55 43 `\BRLV.$\VIGD\UC a430: 4d 53 0a 16 5c 2f 05 5f 53 42 5f 50 43 49 30 4c MS..\/._SB_PCI0L a440: 50 43 5f 45 43 5f 5f 42 52 4e 53 a1 07 5c 56 42 PC_EC__BRNS..\VB a450: 52 43 60 5c 2f 06 5f 53 42 5f 50 43 49 30 4c 50 RC`\/._SB_PCI0LP a460: 43 5f 45 43 5f 5f 48 4b 45 59 4d 48 4b 51 0b 50 C_EC__HKEYMHKQ.P a470: 60 14 4a 0e 5f 51 31 35 00 a0 3f 5c 2f 06 5f 53 `.J._Q15..?\/._S a480: 42 5f 50 43 49 30 4c 50 43 5f 45 43 5f 5f 48 4b B_PCI0LPC_EC__HK a490: 45 59 4d 48 4b 4b 0c 00 00 01 00 5c 2f 06 5f 53 EYMHKK.....\/._S a4a0: 42 5f 50 43 49 30 4c 50 43 5f 45 43 5f 5f 48 4b B_PCI0LPC_EC__HK a4b0: 45 59 4d 48 4b 51 0b 11 10 a0 3f 5c 4e 42 43 46 EYMHKQ....?\NBCF a4c0: a0 1c 5c 56 49 47 44 86 5c 2f 04 5f 53 42 5f 50 ..\VIGD.\/._SB_P a4d0: 43 49 30 56 49 44 5f 4c 43 44 30 0a 87 a1 1b 86 CI0VID_LCD0..... a4e0: 5c 2f 05 5f 53 42 5f 50 43 49 30 50 45 47 5f 56 \/._SB_PCI0PEG_V a4f0: 49 44 5f 4c 43 44 30 0a 87 a1 40 06 70 5c 42 52 ID_LCD0...@.p\BR a500: 4c 56 60 a0 0b 60 76 60 70 60 5c 42 52 4c 56 a0 LV`..`v`p`\BRLV. a510: 24 5c 56 49 47 44 5c 55 43 4d 53 0a 16 5c 2f 05 $\VIGD\UCMS..\/. a520: 5f 53 42 5f 50 43 49 30 4c 50 43 5f 45 43 5f 5f _SB_PCI0LPC_EC__ a530: 42 52 4e 53 a1 07 5c 56 42 52 43 60 5c 2f 06 5f BRNS..\VBRC`\/._ a540: 53 42 5f 50 43 49 30 4c 50 43 5f 45 43 5f 5f 48 SB_PCI0LPC_EC__H a550: 4b 45 59 4d 48 4b 51 0b 50 60 a4 00 14 4c 0b 42 KEYMHKQ.P`...L.B a560: 52 4e 53 00 72 5c 42 52 4c 56 0a 02 60 70 5c 42 RNS.r\BRLV..`p\B a570: 52 54 4e 63 a0 4b 09 5c 2f 04 5f 53 42 5f 50 43 RTNc.K.\/._SB_PC a580: 49 30 56 49 44 5f 44 52 44 59 a0 23 93 0a 00 60 I0VID_DRDY.#...` a590: 70 83 88 83 88 42 52 54 42 63 00 0a 14 00 61 70 p....BRTBc....ap a5a0: 83 88 83 88 42 52 54 42 63 00 0a 12 00 62 a1 1f ....BRTBc....b.. a5b0: 70 83 88 83 88 42 52 54 42 63 00 0a 15 00 61 70 p....BRTBc....ap a5c0: 83 88 83 88 42 52 54 42 63 00 0a 13 00 62 7d 61 ....BRTBc....b}a a5d0: 79 62 0a 09 00 62 5c 2f 04 5f 53 42 5f 50 43 49 yb...b\/._SB_PCI a5e0: 30 56 49 44 5f 41 49 4e 54 0a 03 62 70 83 88 83 0VID_AINT..bp... a5f0: 88 42 52 54 42 63 00 60 00 62 5c 2f 04 5f 53 42 .BRTBc.`.b\/._SB a600: 5f 50 43 49 30 56 49 44 5f 41 49 4e 54 0a 01 62 _PCI0VID_AINT..b a610: a1 08 5c 55 43 4d 53 0a 12 10 44 06 5c 2f 04 5f ..\UCMS...D.\/._ a620: 53 42 5f 50 43 49 30 4c 50 43 5f 45 43 5f 5f 14 SB_PCI0LPC_EC__. a630: 4e 04 5f 51 31 39 00 a0 3f 5c 2f 06 5f 53 42 5f N._Q19..?\/._SB_ a640: 50 43 49 30 4c 50 43 5f 45 43 5f 5f 48 4b 45 59 PCI0LPC_EC__HKEY a650: 4d 48 4b 4b 0c 00 00 80 00 5c 2f 06 5f 53 42 5f MHKK.....\/._SB_ a660: 50 43 49 30 4c 50 43 5f 45 43 5f 5f 48 4b 45 59 PCI0LPC_EC__HKEY a670: 4d 48 4b 51 0b 18 10 5c 55 43 4d 53 0a 03 10 44 MHKQ...\UCMS...D a680: 06 5c 2f 04 5f 53 42 5f 50 43 49 30 4c 50 43 5f .\/._SB_PCI0LPC_ a690: 45 43 5f 5f 14 4e 04 5f 51 36 33 00 a0 3f 5c 2f EC__.N._Q63..?\/ a6a0: 06 5f 53 42 5f 50 43 49 30 4c 50 43 5f 45 43 5f ._SB_PCI0LPC_EC_ a6b0: 5f 48 4b 45 59 4d 48 4b 4b 0c 00 00 08 00 5c 2f _HKEYMHKK.....\/ a6c0: 06 5f 53 42 5f 50 43 49 30 4c 50 43 5f 45 43 5f ._SB_PCI0LPC_EC_ a6d0: 5f 48 4b 45 59 4d 48 4b 51 0b 14 10 5c 55 43 4d _HKEYMHKQ...\UCM a6e0: 53 0a 0b 10 42 0b 5c 2f 04 5f 53 42 5f 50 43 49 S...B.\/._SB_PCI a6f0: 30 4c 50 43 5f 45 43 5f 5f 14 0a 5f 51 37 30 00 0LPC_EC__.._Q70. a700: 46 4e 53 54 14 0a 5f 51 37 32 00 46 4e 53 54 14 FNST.._Q72.FNST. a710: 0a 5f 51 37 33 00 46 4e 53 54 14 4b 07 46 4e 53 ._Q73.FNST.K.FNS a720: 54 00 a0 12 5c 48 38 44 52 70 48 46 4e 53 60 70 T...\H8DRpHFNS`p a730: 48 46 4e 45 61 a1 17 7b 5c 52 42 45 43 0a 0e 0a HFNEa..{\RBEC... a740: 03 60 7b 5c 52 42 45 43 0a 00 0a 08 61 a0 48 04 .`{\RBEC....a.H. a750: 61 a0 0c 93 60 0a 00 5c 55 43 4d 53 0a 11 a0 0c a...`..\UCMS.... a760: 93 60 0a 01 5c 55 43 4d 53 0a 0f a0 0c 93 60 0a .`..\UCMS.....`. a770: 02 5c 55 43 4d 53 0a 10 5c 2f 06 5f 53 42 5f 50 .\UCMS..\/._SB_P a780: 43 49 30 4c 50 43 5f 45 43 5f 5f 48 4b 45 59 4d CI0LPC_EC__HKEYM a790: 48 4b 51 0b 05 60 10 3d 5c 2f 05 5f 53 42 5f 50 HKQ..`.=\/._SB_P a7a0: 43 49 30 4c 50 43 5f 45 43 5f 5f 48 4b 45 59 14 CI0LPC_EC__HKEY. a7b0: 10 47 48 53 4c 01 a4 5c 46 4e 53 43 0a 00 0a 00 .GHSL..\FNSC.... a7c0: 14 13 53 48 53 4c 01 a4 5c 46 4e 53 43 0a 01 7b ..SHSL..\FNSC..{ a7d0: 68 0a 01 00 10 47 30 5c 2f 05 5f 53 42 5f 50 43 h....G0\/._SB_PC a7e0: 49 30 4c 50 43 5f 45 43 5f 5f 48 4b 45 59 08 57 I0LPC_EC__HKEY.W a7f0: 47 46 4c 0a 00 14 09 57 53 49 46 00 a4 0a 00 14 GFL....WSIF..... a800: 1e 57 4c 53 57 00 a4 5c 2f 05 5f 53 42 5f 50 43 .WLSW..\/._SB_PC a810: 49 30 4c 50 43 5f 45 43 5f 5f 47 53 54 53 14 37 I0LPC_EC__GSTS.7 a820: 47 57 41 4e 00 70 0a 00 60 a0 0e 7b 57 47 46 4c GWAN.p..`..{WGFL a830: 0a 01 00 7d 60 0a 01 60 a0 0b 7b 57 47 46 4c 0a ...}`..`..{WGFL. a840: 08 00 a4 60 a0 0a 57 50 57 53 7d 60 0a 02 60 7d ...`..WPWS}`..`} a850: 60 0a 04 60 a4 60 14 1b 53 57 41 4e 01 a0 0c 7b `..`.`..SWAN...{ a860: 68 0a 02 00 57 50 57 43 0a 01 a1 07 57 50 57 43 h...WPWC....WPWC a870: 0a 00 14 37 47 42 44 43 00 70 0a 00 60 a0 0e 7b ...7GBDC.p..`..{ a880: 57 47 46 4c 0a 10 00 7d 60 0a 01 60 a0 0b 7b 57 WGFL...}`..`..{W a890: 47 46 4c 0a 80 00 a4 60 a0 0a 42 50 57 53 7d 60 GFL....`..BPWS}` a8a0: 0a 02 60 7d 60 0a 04 60 a4 60 14 1b 53 42 44 43 ..`}`..`.`..SBDC a8b0: 01 a0 0c 7b 68 0a 02 00 42 50 57 43 0a 01 a1 07 ...{h...BPWC.... a8c0: 42 50 57 43 0a 00 14 3b 57 50 57 53 00 a0 1f 5c BPWC...;WPWS...\ a8d0: 48 38 44 52 70 5c 2f 05 5f 53 42 5f 50 43 49 30 H8DRp\/._SB_PCI0 a8e0: 4c 50 43 5f 45 43 5f 5f 44 43 57 57 60 a1 12 70 LPC_EC__DCWW`..p a8f0: 7a 7b 5c 52 42 45 43 0a 3a 0a 40 00 0a 06 00 60 z{\RBEC.:.@....` a900: a4 60 14 42 09 57 50 57 43 01 a0 4e 04 90 68 90 .`.B.WPWC..N..h. a910: 7b 57 47 46 4c 0a 01 00 92 7b 57 47 46 4c 0a 08 {WGFL....{WGFL.. a920: 00 a0 1f 5c 48 38 44 52 70 01 5c 2f 05 5f 53 42 ...\H8DRp.\/._SB a930: 5f 50 43 49 30 4c 50 43 5f 45 43 5f 5f 44 43 57 _PCI0LPC_EC__DCW a940: 57 a1 0c 5c 4d 42 45 43 0a 3a 0a ff 0a 40 7d 57 W..\MBEC.:...@}W a950: 47 46 4c 0a 02 57 47 46 4c a1 3b a0 1f 5c 48 38 GFL..WGFL.;..\H8 a960: 44 52 70 00 5c 2f 05 5f 53 42 5f 50 43 49 30 4c DRp.\/._SB_PCI0L a970: 50 43 5f 45 43 5f 5f 44 43 57 57 a1 0c 5c 4d 42 PC_EC__DCWW..\MB a980: 45 43 0a 3a 0a bf 0a 00 7b 57 47 46 4c 80 0a 02 EC.:....{WGFL... a990: 00 57 47 46 4c 14 3b 42 50 57 53 00 a0 1f 5c 48 .WGFL.;BPWS...\H a9a0: 38 44 52 70 5c 2f 05 5f 53 42 5f 50 43 49 30 4c 8DRp\/._SB_PCI0L a9b0: 50 43 5f 45 43 5f 5f 44 43 42 44 60 a1 12 70 7a PC_EC__DCBD`..pz a9c0: 7b 5c 52 42 45 43 0a 3a 0a 10 00 0a 04 00 60 a4 {\RBEC.:......`. a9d0: 60 14 42 09 42 50 57 43 01 a0 4e 04 90 68 90 7b `.B.BPWC..N..h.{ a9e0: 57 47 46 4c 0a 10 00 92 7b 57 47 46 4c 0a 80 00 WGFL....{WGFL... a9f0: a0 1f 5c 48 38 44 52 70 01 5c 2f 05 5f 53 42 5f ..\H8DRp.\/._SB_ aa00: 50 43 49 30 4c 50 43 5f 45 43 5f 5f 44 43 42 44 PCI0LPC_EC__DCBD aa10: a1 0c 5c 4d 42 45 43 0a 3a 0a ff 0a 10 7d 57 47 ..\MBEC.:....}WG aa20: 46 4c 0a 20 57 47 46 4c a1 3b a0 1f 5c 48 38 44 FL. WGFL.;..\H8D aa30: 52 70 00 5c 2f 05 5f 53 42 5f 50 43 49 30 4c 50 Rp.\/._SB_PCI0LP aa40: 43 5f 45 43 5f 5f 44 43 42 44 a1 0c 5c 4d 42 45 C_EC__DCBD..\MBE aa50: 43 0a 3a 0a ef 0a 00 7b 57 47 46 4c 80 0a 20 00 C.:....{WGFL.. . aa60: 57 47 46 4c 14 3b 57 47 49 4e 00 70 0a 00 57 47 WGFL.;WGIN.p..WG aa70: 46 4c 70 5c 57 47 53 56 0a 01 57 47 46 4c a0 10 FLp\WGSV..WGFL.. aa80: 57 50 57 53 7d 57 47 46 4c 0a 02 57 47 46 4c a0 WPWS}WGFL..WGFL. aa90: 10 42 50 57 53 7d 57 47 46 4c 0a 20 57 47 46 4c .BPWS}WGFL. WGFL aaa0: 14 14 57 47 50 53 01 a0 0d 92 95 68 0a 04 5c 42 ..WGPS.....h..\B aab0: 4c 54 48 0a 05 14 26 57 47 57 4b 01 a0 0f 7b 57 LTH...&WGWK...{W aac0: 47 46 4c 0a 20 00 42 50 57 43 0a 01 a0 0f 7b 57 GFL. .BPWC....{W aad0: 47 46 4c 0a 02 00 57 50 57 43 0a 01 10 39 5c 2f GFL...WPWC...9\/ aae0: 04 5f 53 42 5f 50 43 49 30 4c 50 43 5f 45 43 5f ._SB_PCI0LPC_EC_ aaf0: 5f 14 24 5f 51 34 31 00 5c 2f 06 5f 53 42 5f 50 _.$_Q41.\/._SB_P ab00: 43 49 30 4c 50 43 5f 45 43 5f 5f 48 4b 45 59 4d CI0LPC_EC__HKEYM ab10: 48 4b 51 0b 00 70 5b 82 85 1f 02 57 4d 49 31 08 HKQ..p[....WMI1. ab20: 5f 48 49 44 0c 41 d0 0c 14 08 5f 55 49 44 0a 01 _HID.A...._UID.. ab30: 08 5f 57 44 47 11 48 0b 0a b4 0e 23 f5 51 77 96 ._WDG.H....#.Qw. ab40: cd 46 a1 cf c0 b2 3e e3 4d b7 41 30 50 05 64 9a .F....>.M.A0P.d. ab50: 47 98 f5 33 33 4e a7 07 8e 25 1e bb c3 a1 41 31 G..33N...%....A1 ab60: 01 06 ef 54 4b 6a ed a5 33 4d 94 55 b0 d9 b4 8d ...TKj..3M.U.... ab70: f4 b3 41 32 01 06 b6 eb f1 74 7a 92 7d 4c 95 df ..A2.....tz.}L.. ab80: 69 8e 21 e8 0e b5 41 33 01 06 ff 04 ef 7e 28 43 i.!...A3.....~(C ab90: 7c 44 b5 bb d4 49 92 5d 53 8d 41 34 01 06 9e 15 |D...I.]S.A4.... aba0: db 8a 32 1e 5c 45 bc 93 30 8a 7e d9 82 46 41 35 ..2.\E..0.~..FA5 abb0: 01 01 fd d9 51 26 1c 91 69 4b b9 4e d0 de d5 96 ....Q&..iK.N.... abc0: 3b d7 41 36 01 06 1a 65 64 73 2f 13 e7 4f ad aa ;.A6...eds/..O.. abd0: 40 c6 c7 ee 2e 3b 41 37 01 06 21 12 90 05 66 d5 @....;A7..!...f. abe0: d1 11 b2 f0 00 a0 c9 06 29 10 42 41 01 00 08 52 ........).BA...R abf0: 45 54 4e 12 4a 04 05 0d 53 75 63 63 65 73 73 00 ETN.J...Success. ac00: 0d 4e 6f 74 20 53 75 70 70 6f 72 74 65 64 00 0d .Not Supported.. ac10: 49 6e 76 61 6c 69 64 20 50 61 72 61 6d 65 74 65 Invalid Paramete ac20: 72 00 0d 41 63 63 65 73 73 20 44 65 6e 69 65 64 r..Access Denied ac30: 00 0d 53 79 73 74 65 6d 20 42 75 73 79 00 08 49 ..System Busy..I ac40: 54 45 4d 12 43 7c 51 12 0f 02 0a 0e 0d 57 61 6b TEM.C|Q......Wak ac50: 65 4f 6e 4c 41 4e 00 12 1a 02 0a 00 0d 45 74 68 eOnLAN.......Eth ac60: 65 72 6e 65 74 4c 41 4e 4f 70 74 69 6f 6e 52 4f ernetLANOptionRO ac70: 4d 00 12 14 02 0a 00 0d 55 53 42 42 49 4f 53 53 M.......USBBIOSS ac80: 75 70 70 6f 72 74 00 12 11 02 0a 00 0d 41 6c 77 upport.......Alw ac90: 61 79 73 4f 6e 55 53 42 00 12 10 02 0a 01 0d 54 aysOnUSB.......T aca0: 72 61 63 6b 50 6f 69 6e 74 00 12 0e 02 0a 01 0d rackPoint....... acb0: 54 6f 75 63 68 50 61 64 00 12 0f 02 0a 00 0d 46 TouchPad.......F acc0: 6e 4b 65 79 4c 6f 63 6b 00 12 15 02 0a 04 0d 54 nKeyLock.......T acd0: 68 69 6e 6b 50 61 64 4e 75 6d 4c 6f 63 6b 00 12 hinkPadNumLock.. ace0: 14 02 0a 0c 0d 50 6f 77 65 72 4f 6e 4e 75 6d 4c .....PowerOnNumL acf0: 6f 63 6b 00 12 17 02 0a 05 0d 42 6f 6f 74 44 69 ock.......BootDi ad00: 73 70 6c 61 79 44 65 76 69 63 65 00 12 0f 02 0a splayDevice..... ad10: 00 0d 53 70 65 65 64 53 74 65 70 00 12 21 02 0a ..SpeedStep..!.. ad20: 09 0d 41 64 61 70 74 69 76 65 54 68 65 72 6d 61 ..AdaptiveTherma ad30: 6c 4d 61 6e 61 67 65 6d 65 6e 74 41 43 00 12 26 lManagementAC..& ad40: 02 0a 09 0d 41 64 61 70 74 69 76 65 54 68 65 72 ....AdaptiveTher ad50: 6d 61 6c 4d 61 6e 61 67 65 6d 65 6e 74 42 61 74 malManagementBat ad60: 74 65 72 79 00 12 10 02 0a 06 0d 43 44 52 4f 4d tery.......CDROM ad70: 53 70 65 65 64 00 12 18 02 0a 01 0d 43 50 55 50 Speed.......CPUP ad80: 6f 77 65 72 4d 61 6e 61 67 65 6d 65 6e 74 00 12 owerManagement.. ad90: 16 02 0a 00 0d 50 6f 77 65 72 43 6f 6e 74 72 6f .....PowerContro ada0: 6c 42 65 65 70 00 12 15 02 0a 00 0d 4c 6f 77 42 lBeep.......LowB adb0: 61 74 74 65 72 79 41 6c 61 72 6d 00 12 12 02 0a atteryAlarm..... adc0: 00 0d 50 61 73 73 77 6f 72 64 42 65 65 70 00 12 ..PasswordBeep.. add0: 12 02 0a 00 0d 4b 65 79 62 6f 61 72 64 42 65 65 .....KeyboardBee ade0: 70 00 12 18 02 0a 00 0d 45 78 74 65 6e 64 65 64 p.......Extended adf0: 4d 65 6d 6f 72 79 54 65 73 74 00 12 18 02 0a 07 MemoryTest...... ae00: 0d 53 41 54 41 43 6f 6e 74 72 6f 6c 6c 65 72 4d .SATAControllerM ae10: 6f 64 65 00 12 19 02 0a 00 0d 43 6f 72 65 4d 75 ode.......CoreMu ae20: 6c 74 69 50 72 6f 63 65 73 73 69 6e 67 00 12 1e ltiProcessing... ae30: 02 0a 00 0d 56 69 72 74 75 61 6c 69 7a 61 74 69 ....Virtualizati ae40: 6f 6e 54 65 63 68 6e 6f 6c 6f 67 79 00 12 15 02 onTechnology.... ae50: 0a 00 0d 4c 6f 63 6b 42 49 4f 53 53 65 74 74 69 ...LockBIOSSetti ae60: 6e 67 00 12 1b 02 0a 0b 0d 4d 69 6e 69 6d 75 6d ng.......Minimum ae70: 50 61 73 73 77 6f 72 64 4c 65 6e 67 74 68 00 12 PasswordLength.. ae80: 22 02 0a 00 0d 42 49 4f 53 50 61 73 73 77 6f 72 "....BIOSPasswor ae90: 64 41 74 55 6e 61 74 74 65 6e 64 65 64 42 6f 6f dAtUnattendedBoo aea0: 74 00 12 29 02 0a 00 0d 46 69 6e 67 65 72 70 72 t..)....Fingerpr aeb0: 69 6e 74 50 72 65 64 65 73 6b 74 6f 70 41 75 74 intPredesktopAut aec0: 68 65 6e 74 69 63 61 74 69 6f 6e 00 12 1f 02 0a hentication..... aed0: 08 0d 46 69 6e 67 65 72 70 72 69 6e 74 52 65 61 ..FingerprintRea aee0: 64 65 72 50 72 69 6f 72 69 74 79 00 12 1d 02 0a derPriority..... aef0: 03 0d 46 69 6e 67 65 72 70 72 69 6e 74 53 65 63 ..FingerprintSec af00: 75 72 69 74 79 4d 6f 64 65 00 12 12 02 0a 02 0d urityMode....... af10: 53 65 63 75 72 69 74 79 43 68 69 70 00 12 1a 02 SecurityChip.... af20: 0a 00 0d 42 49 4f 53 55 70 64 61 74 65 42 79 45 ...BIOSUpdateByE af30: 6e 64 55 73 65 72 73 00 12 1d 02 0a 00 0d 44 61 ndUsers.......Da af40: 74 61 45 78 65 63 75 74 69 6f 6e 50 72 65 76 65 taExecutionPreve af50: 6e 74 69 6f 6e 00 12 17 02 0a 00 0d 45 74 68 65 ntion.......Ethe af60: 72 6e 65 74 4c 41 4e 41 63 63 65 73 73 00 12 17 rnetLANAccess... af70: 02 0a 00 0d 57 69 72 65 6c 65 73 73 4c 41 4e 41 ....WirelessLANA af80: 63 63 65 73 73 00 12 17 02 0a 00 0d 57 69 72 65 ccess.......Wire af90: 6c 65 73 73 57 41 4e 41 63 63 65 73 73 00 12 15 lessWANAccess... afa0: 02 0a 00 0d 42 6c 75 65 74 6f 6f 74 68 41 63 63 ....BluetoothAcc afb0: 65 73 73 00 12 17 02 0a 00 0d 57 69 72 65 6c 65 ess.......Wirele afc0: 73 73 55 53 42 41 63 63 65 73 73 00 12 11 02 0a ssUSBAccess..... afd0: 00 0d 4d 6f 64 65 6d 41 63 63 65 73 73 00 12 13 ..ModemAccess... afe0: 02 0a 00 0d 55 53 42 50 6f 72 74 41 63 63 65 73 ....USBPortAcces aff0: 73 00 12 14 02 0a 00 0d 49 45 45 45 31 33 39 34 s.......IEEE1394 b000: 41 63 63 65 73 73 00 12 17 02 0a 00 0d 45 78 70 Access.......Exp b010: 72 65 73 73 43 61 72 64 41 63 63 65 73 73 00 12 ressCardAccess.. b020: 1a 02 0a 00 0d 50 43 49 45 78 70 72 65 73 73 53 .....PCIExpressS b030: 6c 6f 74 41 63 63 65 73 73 00 12 14 02 0a 00 0d lotAccess....... b040: 55 6c 74 72 61 62 61 79 41 63 63 65 73 73 00 12 UltrabayAccess.. b050: 1a 02 0a 00 0d 4d 65 6d 6f 72 79 43 61 72 64 53 .....MemoryCardS b060: 6c 6f 74 41 63 63 65 73 73 00 12 19 02 0a 00 0d lotAccess....... b070: 53 6d 61 72 74 43 61 72 64 53 6c 6f 74 41 63 63 SmartCardSlotAcc b080: 65 73 73 00 12 1c 02 0a 00 0d 49 6e 74 65 67 72 ess.......Integr b090: 61 74 65 64 43 61 6d 65 72 61 41 63 63 65 73 73 atedCameraAccess b0a0: 00 12 16 02 0a 00 0d 4d 69 63 72 6f 70 68 6f 6e .......Microphon b0b0: 65 41 63 63 65 73 73 00 12 0e 02 0a 0a 0d 42 6f eAccess.......Bo b0c0: 6f 74 4d 6f 64 65 00 12 17 02 0a 00 0d 53 74 61 otMode.......Sta b0d0: 72 74 75 70 4f 70 74 69 6f 6e 4b 65 79 73 00 12 rtupOptionKeys.. b0e0: 1d 02 0a 00 0d 42 6f 6f 74 44 65 76 69 63 65 4c .....BootDeviceL b0f0: 69 73 74 46 31 32 4f 70 74 69 6f 6e 00 12 0f 02 istF12Option.... b100: 0a 64 0d 42 6f 6f 74 4f 72 64 65 72 00 12 11 02 .d.BootOrder.... b110: 0a 00 0d 57 69 4d 41 58 41 63 63 65 73 73 00 12 ...WiMAXAccess.. b120: 14 02 0a 0d 0d 47 72 61 70 68 69 63 73 44 65 76 .....GraphicsDev b130: 69 63 65 00 12 10 02 0a 00 0d 54 58 54 46 65 61 ice.......TXTFea b140: 74 75 72 65 00 12 10 02 0a 00 0d 56 54 64 46 65 ture.......VTdFe b150: 61 74 75 72 65 00 12 10 02 0a 0f 0d 41 4d 54 43 ature.......AMTC b160: 6f 6e 74 72 6f 6c 00 12 27 02 0a 00 0d 46 69 6e ontrol..'....Fin b170: 67 65 72 70 72 69 6e 74 50 61 73 73 77 6f 72 64 gerprintPassword b180: 41 75 74 68 65 6e 74 69 63 61 74 69 6f 6e 00 12 Authentication.. b190: 1d 02 0a 00 0d 46 69 6e 67 65 72 70 72 69 6e 74 .....Fingerprint b1a0: 52 65 61 64 65 72 41 63 63 65 73 73 00 12 26 02 ReaderAccess..&. b1b0: 0a 00 0d 4f 73 44 65 74 65 63 74 69 6f 6e 46 6f ...OsDetectionFo b1c0: 72 53 77 69 74 63 68 61 62 6c 65 47 72 61 70 68 rSwitchableGraph b1d0: 69 63 73 00 12 20 02 0a 0f 0d 43 6f 6d 70 75 74 ics.. ....Comput b1e0: 72 61 63 65 4d 6f 64 75 6c 65 41 63 74 69 76 61 raceModuleActiva b1f0: 74 69 6f 6e 00 12 1f 02 0a 01 0d 50 43 49 45 78 tion.......PCIEx b200: 70 72 65 73 73 50 6f 77 65 72 4d 61 6e 61 67 65 pressPowerManage b210: 6d 65 6e 74 00 12 19 02 0a 0f 0d 41 54 70 4d 6f ment.......ATpMo b220: 64 75 6c 65 41 63 74 69 76 61 74 69 6f 6e 00 12 duleActivation.. b230: 15 02 0a 00 0d 65 53 41 54 41 50 6f 72 74 41 63 .....eSATAPortAc b240: 63 65 73 73 00 12 1d 02 0a 00 0d 48 61 72 64 77 cess.......Hardw b250: 61 72 65 50 61 73 73 77 6f 72 64 4d 61 6e 61 67 arePasswordManag b260: 65 72 00 12 1e 02 0a 00 0d 48 79 70 65 72 54 68 er.......HyperTh b270: 72 65 61 64 69 6e 67 54 65 63 68 6e 6f 6c 6f 67 readingTechnolog b280: 79 00 12 13 02 0a 00 0d 46 6e 43 74 72 6c 4b 65 y.......FnCtrlKe b290: 79 53 77 61 70 00 12 1a 02 0a 00 0d 42 49 4f 53 ySwap.......BIOS b2a0: 50 61 73 73 77 6f 72 64 41 74 52 65 62 6f 6f 74 PasswordAtReboot b2b0: 00 12 12 02 0a 00 0d 4f 6e 42 79 41 63 41 74 74 .......OnByAcAtt b2c0: 61 63 68 00 12 11 02 0a 64 0d 4e 65 74 77 6f 72 ach.....d.Networ b2d0: 6b 42 6f 6f 74 00 12 13 02 0a 00 0d 42 6f 6f 74 kBoot.......Boot b2e0: 4f 72 64 65 72 4c 6f 63 6b 00 12 0f 02 0a 10 0d OrderLock....... b2f0: 55 53 42 33 30 4d 6f 64 65 00 12 16 02 0a 11 0d USB30Mode....... b300: 45 78 70 72 65 73 73 43 61 72 64 53 70 65 65 64 ExpressCardSpeed b310: 00 12 1a 02 0a 00 0d 52 61 70 69 64 53 74 61 72 .......RapidStar b320: 74 54 65 63 68 6e 6f 6c 6f 67 79 00 12 1a 02 0a tTechnology..... b330: 12 0d 4b 65 79 62 6f 61 72 64 49 6c 6c 75 6d 69 ..KeyboardIllumi b340: 6e 61 74 69 6f 6e 00 12 16 02 0a 00 0d 49 50 76 nation.......IPv b350: 34 4e 65 74 77 6f 72 6b 53 74 61 63 6b 00 12 16 4NetworkStack... b360: 02 0a 00 0d 49 50 76 36 4e 65 74 77 6f 72 6b 53 ....IPv6NetworkS b370: 74 61 63 6b 00 12 19 02 0a 13 0d 55 65 66 69 50 tack.......UefiP b380: 78 65 42 6f 6f 74 50 72 69 6f 72 69 74 79 00 12 xeBootPriority.. b390: 25 02 0a 00 0d 50 68 79 73 69 63 61 6c 50 72 65 %....PhysicalPre b3a0: 73 65 6e 63 65 46 6f 72 54 70 6d 50 72 6f 76 69 senceForTpmProvi b3b0: 73 69 6f 6e 00 12 21 02 0a 00 0d 50 68 79 73 69 sion..!....Physi b3c0: 63 61 6c 50 72 65 73 65 6e 63 65 46 6f 72 54 70 calPresenceForTp b3d0: 6d 43 6c 65 61 72 00 12 1e 02 0a 00 0d 53 65 63 mClear.......Sec b3e0: 75 72 65 52 6f 6c 6c 42 61 63 6b 50 72 65 76 65 ureRollBackPreve b3f0: 6e 74 69 6f 6e 00 12 10 02 0a 00 0d 53 65 63 75 ntion.......Secu b400: 72 65 42 6f 6f 74 00 08 56 53 45 4c 12 42 26 14 reBoot..VSEL.B&. b410: 12 13 02 0d 44 69 73 61 62 6c 65 00 0d 45 6e 61 ....Disable..Ena b420: 62 6c 65 00 12 16 02 0d 44 69 73 61 62 6c 65 00 ble.....Disable. b430: 0d 41 75 74 6f 6d 61 74 69 63 00 12 1d 03 0d 41 .Automatic.....A b440: 63 74 69 76 65 00 0d 49 6e 61 63 74 69 76 65 00 ctive..Inactive. b450: 0d 44 69 73 61 62 6c 65 00 12 10 02 0d 4e 6f 72 .Disable.....Nor b460: 6d 61 6c 00 0d 48 69 67 68 00 12 1d 02 0d 49 6e mal..High.....In b470: 64 65 70 65 6e 64 65 6e 74 00 0d 53 79 6e 63 68 dependent..Synch b480: 72 6f 6e 69 7a 65 64 00 12 35 05 0d 4c 43 44 00 ronized..5..LCD. b490: 0d 56 47 41 00 0d 44 69 67 69 74 61 6c 00 0d 44 .VGA..Digital..D b4a0: 69 67 69 74 61 6c 31 6f 6e 44 6f 63 6b 00 0d 44 igital1onDock..D b4b0: 69 67 69 74 61 6c 32 6f 6e 44 6f 63 6b 00 12 18 igital2onDock... b4c0: 03 0d 48 69 67 68 00 0d 4e 6f 72 6d 61 6c 00 0d ..High..Normal.. b4d0: 53 69 6c 65 6e 74 00 12 17 02 0d 43 6f 6d 70 61 Silent.....Compa b4e0: 74 69 62 69 6c 69 74 79 00 0d 41 48 43 49 00 12 tibility..AHCI.. b4f0: 1a 02 0d 45 78 74 65 72 6e 61 6c 00 0d 49 6e 74 ...External..Int b500: 65 72 6e 61 6c 4f 6e 6c 79 00 12 21 02 0d 4d 61 ernalOnly..!..Ma b510: 78 69 6d 69 7a 65 50 65 72 66 6f 72 6d 61 6e 63 ximizePerformanc b520: 65 00 0d 42 61 6c 61 6e 63 65 64 00 12 16 02 0d e..Balanced..... b530: 51 75 69 63 6b 00 0d 44 69 61 67 6e 6f 73 74 69 Quick..Diagnosti b540: 63 73 00 12 29 0a 0d 44 69 73 61 62 6c 65 00 0d cs..)..Disable.. b550: 34 00 0d 35 00 0d 36 00 0d 37 00 0d 38 00 0d 39 4..5..6..7..8..9 b560: 00 0d 31 30 00 0d 31 31 00 0d 31 32 00 12 11 03 ..10..11..12.... b570: 0d 41 75 74 6f 00 0d 4f 6e 00 0d 4f 66 66 00 12 .Auto..On..Off.. b580: 2d 03 0d 49 6e 74 65 67 72 61 74 65 64 47 66 78 -..IntegratedGfx b590: 00 0d 44 69 73 63 72 65 74 65 47 66 78 00 0d 53 ..DiscreteGfx..S b5a0: 77 69 74 63 68 61 62 6c 65 47 66 78 00 12 29 04 witchableGfx..). b5b0: 0d 44 69 73 61 62 6c 65 00 0d 41 43 4f 6e 6c 79 .Disable..ACOnly b5c0: 00 0d 41 43 61 6e 64 42 61 74 74 65 72 79 00 0d ..ACandBattery.. b5d0: 45 6e 61 62 6c 65 00 12 1c 03 0d 44 69 73 61 62 Enable.....Disab b5e0: 6c 65 00 0d 45 6e 61 62 6c 65 00 0d 44 69 73 61 le..Enable..Disa b5f0: 62 6c 65 00 12 1e 03 0d 44 69 73 61 62 6c 65 00 ble.....Disable. b600: 0d 45 6e 61 62 6c 65 00 0d 41 75 74 6f 6d 61 74 .Enable..Automat b610: 69 63 00 12 1a 02 0d 47 65 6e 65 72 61 74 69 6f ic.....Generatio b620: 6e 31 00 0d 41 75 74 6f 6d 61 74 69 63 00 12 27 n1..Automatic..' b630: 03 0d 54 68 69 6e 6b 4c 69 67 68 74 4f 6e 6c 79 ..ThinkLightOnly b640: 00 0d 42 61 63 6b 6c 69 67 68 74 4f 6e 6c 79 00 ..BacklightOnly. b650: 0d 42 6f 74 68 00 12 18 02 0d 49 50 76 34 46 69 .Both.....IPv4Fi b660: 72 73 74 00 0d 49 50 76 36 46 69 72 73 74 00 08 rst..IPv6First.. b670: 56 4c 53 54 12 48 07 0f 0d 48 44 44 30 00 0d 48 VLST.H...HDD0..H b680: 44 44 31 00 0d 48 44 44 32 00 0d 48 44 44 33 00 DD1..HDD2..HDD3. b690: 0d 48 44 44 34 00 0d 50 43 49 4c 41 4e 00 0d 41 .HDD4..PCILAN..A b6a0: 54 41 50 49 43 44 30 00 0d 41 54 41 50 49 43 44 TAPICD0..ATAPICD b6b0: 31 00 0d 41 54 41 50 49 43 44 32 00 0d 55 53 42 1..ATAPICD2..USB b6c0: 46 44 44 00 0d 55 53 42 43 44 00 0d 55 53 42 48 FDD..USBCD..USBH b6d0: 44 44 00 0d 4f 74 68 65 72 48 44 44 00 0d 4f 74 DD..OtherHDD..Ot b6e0: 68 65 72 43 44 00 0d 4e 4f 44 45 56 00 08 50 45 herCD..NODEV..PE b6f0: 4e 43 12 13 02 0d 61 73 63 69 69 00 0d 73 63 61 NC....ascii..sca b700: 6e 63 6f 64 65 00 08 50 4b 42 44 12 0e 03 0d 75 ncode..PKBD....u b710: 73 00 0d 66 72 00 0d 67 72 00 08 50 54 59 50 12 s..fr..gr..PTYP. b720: 36 08 0d 70 61 70 00 0d 70 6f 70 00 0d 75 68 64 6..pap..pop..uhd b730: 70 31 00 0d 6d 68 64 70 31 00 0d 75 68 64 70 32 p1..mhdp1..uhdp2 b740: 00 0d 6d 68 64 70 32 00 0d 75 68 64 70 33 00 0d ..mhdp2..uhdp3.. b750: 6d 68 64 70 33 00 5b 01 4d 57 4d 49 07 08 50 43 mhdp3.[.MWMI..PC b760: 46 47 11 03 0a 18 08 49 42 55 46 11 04 0b 00 01 FG.....IBUF..... b770: 08 49 4c 45 4e 0a 00 08 50 53 54 52 11 03 0a 81 .ILEN...PSTR.... b780: 14 4d 22 57 51 41 30 01 5b 23 4d 57 4d 49 ff ff .M"WQA0.[#MWMI.. b790: a0 16 92 93 5c 57 4d 49 53 0a 00 68 0a 00 5b 27 ....\WMIS..h..[' b7a0: 4d 57 4d 49 a4 0d 00 70 83 88 49 54 45 4d 5c 57 MWMI...p..ITEM\W b7b0: 49 54 4d 00 60 70 83 88 60 0a 00 00 61 70 83 88 ITM.`p..`...ap.. b7c0: 60 0a 01 00 62 a0 21 95 61 0a 64 73 62 0d 2c 00 `...b.!.a.dsb.,. b7d0: 66 70 83 88 56 53 45 4c 61 00 63 73 66 83 88 63 fp..VSELa.csf..c b7e0: 5c 57 53 45 4c 00 67 a1 4e 1b 70 87 56 4c 53 54 \WSEL.g.N.p.VLST b7f0: 63 a0 1e 92 94 5c 57 4c 53 30 63 73 62 0d 2c 00 c....\WLS0csb.,. b800: 67 73 67 83 88 56 4c 53 54 5c 57 4c 53 30 00 62 gsg..VLST\WLS0.b b810: a0 1e 92 94 5c 57 4c 53 31 63 73 62 0d 3a 00 67 ....\WLS1csb.:.g b820: 73 67 83 88 56 4c 53 54 5c 57 4c 53 31 00 62 a0 sg..VLST\WLS1.b. b830: 1e 92 94 5c 57 4c 53 32 63 73 62 0d 3a 00 67 73 ...\WLS2csb.:.gs b840: 67 83 88 56 4c 53 54 5c 57 4c 53 32 00 62 a0 1e g..VLST\WLS2.b.. b850: 92 94 5c 57 4c 53 33 63 73 62 0d 3a 00 67 73 67 ..\WLS3csb.:.gsg b860: 83 88 56 4c 53 54 5c 57 4c 53 33 00 62 a0 1e 92 ..VLST\WLS3.b... b870: 94 5c 57 4c 53 34 63 73 62 0d 3a 00 67 73 67 83 .\WLS4csb.:.gsg. b880: 88 56 4c 53 54 5c 57 4c 53 34 00 62 a0 1e 92 94 .VLST\WLS4.b.... b890: 5c 57 4c 53 35 63 73 62 0d 3a 00 67 73 67 83 88 \WLS5csb.:.gsg.. b8a0: 56 4c 53 54 5c 57 4c 53 35 00 62 a0 1e 92 94 5c VLST\WLS5.b....\ b8b0: 57 4c 53 36 63 73 62 0d 3a 00 67 73 67 83 88 56 WLS6csb.:.gsg..V b8c0: 4c 53 54 5c 57 4c 53 36 00 62 a0 1e 92 94 5c 57 LST\WLS6.b....\W b8d0: 4c 53 37 63 73 62 0d 3a 00 67 73 67 83 88 56 4c LS7csb.:.gsg..VL b8e0: 53 54 5c 57 4c 53 37 00 62 a0 1e 92 94 5c 57 4c ST\WLS7.b....\WL b8f0: 53 38 63 73 62 0d 3a 00 67 73 67 83 88 56 4c 53 S8csb.:.gsg..VLS b900: 54 5c 57 4c 53 38 00 62 a0 1e 92 94 5c 57 4c 53 T\WLS8.b....\WLS b910: 39 63 73 62 0d 3a 00 67 73 67 83 88 56 4c 53 54 9csb.:.gsg..VLST b920: 5c 57 4c 53 39 00 62 a0 1e 92 94 5c 57 4c 53 41 \WLS9.b....\WLSA b930: 63 73 62 0d 3a 00 67 73 67 83 88 56 4c 53 54 5c csb.:.gsg..VLST\ b940: 57 4c 53 41 00 62 a0 1e 92 94 5c 57 4c 53 42 63 WLSA.b....\WLSBc b950: 73 62 0d 3a 00 67 73 67 83 88 56 4c 53 54 5c 57 sb.:.gsg..VLST\W b960: 4c 53 42 00 62 a0 1e 92 94 5c 57 4c 53 43 63 73 LSB.b....\WLSCcs b970: 62 0d 3a 00 67 73 67 83 88 56 4c 53 54 5c 57 4c b.:.gsg..VLST\WL b980: 53 43 00 62 a0 1e 92 94 5c 57 4c 53 44 63 73 62 SC.b....\WLSDcsb b990: 0d 3a 00 67 73 67 83 88 56 4c 53 54 5c 57 4c 53 .:.gsg..VLST\WLS b9a0: 44 00 62 70 62 67 5b 27 4d 57 4d 49 a4 67 14 47 D.bpbg['MWMI.g.G b9b0: 05 57 4d 41 31 03 5b 23 4d 57 4d 49 ff ff a0 0a .WMA1.[#MWMI.... b9c0: 93 87 6a 0a 00 70 0a 02 60 a1 2d 70 43 41 52 47 ..j..p..`.-pCARG b9d0: 6a 60 a0 24 93 60 0a 00 70 57 53 45 54 49 54 45 j`.$.`..pWSETITE b9e0: 4d 56 53 45 4c 60 a0 10 93 60 0a 00 70 5c 57 4d MVSEL`...`..p\WM b9f0: 49 53 0a 01 0a 00 60 5b 27 4d 57 4d 49 a4 83 88 IS....`['MWMI... ba00: 52 45 54 4e 60 00 14 42 05 57 4d 41 32 03 5b 23 RETN`..B.WMA2.[# ba10: 4d 57 4d 49 ff ff 70 43 41 52 47 6a 60 a0 2c 93 MWMI..pCARGj`.,. ba20: 60 0a 00 a0 15 92 93 49 4c 45 4e 0a 00 70 43 50 `......ILEN..pCP ba30: 41 53 49 42 55 46 0a 00 60 a0 10 93 60 0a 00 70 ASIBUF..`...`..p ba40: 5c 57 4d 49 53 0a 02 0a 00 60 5b 27 4d 57 4d 49 \WMIS....`['MWMI ba50: a4 83 88 52 45 54 4e 60 00 14 42 05 57 4d 41 33 ...RETN`..B.WMA3 ba60: 03 5b 23 4d 57 4d 49 ff ff 70 43 41 52 47 6a 60 .[#MWMI..pCARGj` ba70: a0 2c 93 60 0a 00 a0 15 92 93 49 4c 45 4e 0a 00 .,.`......ILEN.. ba80: 70 43 50 41 53 49 42 55 46 0a 00 60 a0 10 93 60 pCPASIBUF..`...` ba90: 0a 00 70 5c 57 4d 49 53 0a 03 0a 00 60 5b 27 4d ..p\WMIS....`['M baa0: 57 4d 49 a4 83 88 52 45 54 4e 60 00 14 42 05 57 WMI...RETN`..B.W bab0: 4d 41 34 03 5b 23 4d 57 4d 49 ff ff 70 43 41 52 MA4.[#MWMI..pCAR bac0: 47 6a 60 a0 2c 93 60 0a 00 a0 15 92 93 49 4c 45 Gj`.,.`......ILE bad0: 4e 0a 00 70 43 50 41 53 49 42 55 46 0a 00 60 a0 N..pCPASIBUF..`. bae0: 10 93 60 0a 00 70 5c 57 4d 49 53 0a 04 0a 00 60 ..`..p\WMIS....` baf0: 5b 27 4d 57 4d 49 a4 83 88 52 45 54 4e 60 00 14 ['MWMI...RETN`.. bb00: 49 07 57 51 41 35 01 5b 23 4d 57 4d 49 ff ff 70 I.WQA5.[#MWMI..p bb10: 5c 57 4d 49 53 0a 05 0a 00 60 70 5c 57 53 50 4d \WMIS....`p\WSPM bb20: 88 50 43 46 47 0a 00 00 70 5c 57 53 50 53 88 50 .PCFG...p\WSPS.P bb30: 43 46 47 0a 04 00 70 5c 57 53 4d 4e 88 50 43 46 CFG...p\WSMN.PCF bb40: 47 0a 08 00 70 5c 57 53 4d 58 88 50 43 46 47 0a G...p\WSMX.PCFG. bb50: 0c 00 70 5c 57 53 45 4e 88 50 43 46 47 0a 10 00 ..p\WSEN.PCFG... bb60: 70 5c 57 53 4b 42 88 50 43 46 47 0a 14 00 5b 27 p\WSKB.PCFG...[' bb70: 4d 57 4d 49 a4 50 43 46 47 14 4d 05 57 4d 41 36 MWMI.PCFG.M.WMA6 bb80: 03 5b 23 4d 57 4d 49 ff ff a0 0a 93 87 6a 0a 00 .[#MWMI......j.. bb90: 70 0a 02 60 a1 33 70 43 41 52 47 6a 60 a0 2a 93 p..`.3pCARGj`.*. bba0: 60 0a 00 a0 13 92 93 49 4c 45 4e 0a 00 70 53 50 `......ILEN..pSP bbb0: 41 53 49 42 55 46 60 a0 10 93 60 0a 00 70 5c 57 ASIBUF`...`..p\W bbc0: 4d 49 53 0a 06 0a 00 60 5b 27 4d 57 4d 49 a4 83 MIS....`['MWMI.. bbd0: 88 52 45 54 4e 60 00 14 4c 0b 57 4d 41 37 03 a0 .RETN`..L.WMA7.. bbe0: 09 93 87 6a 0a 00 a4 0d 00 70 43 41 52 47 6a 60 ...j.....pCARGj` bbf0: a0 41 0a 93 60 0a 00 70 47 49 54 4d 49 42 55 46 .A..`..pGITMIBUF bc00: 49 54 45 4d 61 a0 07 93 61 ff a4 0d 00 70 83 88 ITEMa...a....p.. bc10: 49 54 45 4d 61 00 60 70 83 88 60 0a 00 00 61 a0 ITEMa.`p..`...a. bc20: 3f 95 61 0a 64 70 83 88 56 53 45 4c 61 00 63 70 ?.a.dp..VSELa.cp bc30: 83 88 63 0a 00 00 62 70 87 63 64 70 0a 01 65 a2 ..c...bp.cdp..e. bc40: 1f 95 65 64 70 83 88 63 65 00 66 a0 11 92 93 87 ..edp..ce.f..... bc50: 66 0a 00 73 62 0d 2c 00 67 73 67 66 62 75 65 a1 f..sb.,.gsgfbue. bc60: 32 70 83 88 56 4c 53 54 0a 00 00 62 70 87 56 4c 2p..VLST...bp.VL bc70: 53 54 64 70 0a 01 65 a2 1a 95 65 64 70 83 88 56 STdp..e...edp..V bc80: 4c 53 54 65 00 66 73 62 0d 2c 00 67 73 67 66 62 LSTe.fsb.,.gsgfb bc90: 75 65 a4 62 14 40 07 43 41 52 47 01 70 87 68 60 ue.b.@.CARG.p.h` bca0: a0 16 93 60 0a 00 70 0a 00 49 42 55 46 70 0a 00 ...`..p..IBUFp.. bcb0: 49 4c 45 4e a4 0a 00 a0 0a 92 93 8e 68 0a 02 a4 ILEN........h... bcc0: 0a 02 a0 09 92 95 60 0a ff a4 0a 02 70 68 49 42 ......`.....phIB bcd0: 55 46 76 60 70 83 88 49 42 55 46 60 00 61 a0 1a UFv`p..IBUF`.a.. bce0: 91 93 61 0a 3b 93 61 0a 2a 70 0a 00 88 49 42 55 ..a.;.a.*p...IBU bcf0: 46 60 00 70 60 49 4c 45 4e a1 08 70 87 68 49 4c F`.p`ILEN..p.hIL bd00: 45 4e a4 0a 00 14 41 07 53 43 4d 50 03 70 87 68 EN....A.SCMP.p.h bd10: 60 a0 08 93 60 0a 00 a4 0a 00 75 60 08 53 54 52 `...`.....u`.STR bd20: 31 11 02 60 70 68 53 54 52 31 76 60 70 0a 00 61 1..`phSTR1v`p..a bd30: 70 6a 62 a2 22 95 61 60 70 83 88 53 54 52 31 61 pjb.".a`p..STR1a bd40: 00 63 70 83 88 69 62 00 64 a0 08 92 93 63 64 a4 .cp..ib.d....cd. bd50: 0a 00 75 61 75 62 70 83 88 69 62 00 64 a0 08 93 ..uaubp..ib.d... bd60: 64 0a 00 a4 0a 01 a0 0d 91 93 64 0a 2c 93 64 0a d.........d.,.d. bd70: 3a a4 0a 01 a4 0a 00 14 2f 47 49 54 4d 02 70 0a :......./GITM.p. bd80: 00 60 70 87 69 61 a2 1e 95 60 61 70 83 88 83 88 .`p.ia...`ap.... bd90: 69 60 00 0a 01 00 63 a0 0b 53 43 4d 50 63 68 0a i`....c..SCMPch. bda0: 00 a4 60 75 60 a4 ff 14 29 47 53 45 4c 03 70 0a ..`u`...)GSEL.p. bdb0: 00 60 70 87 68 61 a2 18 95 60 61 70 83 88 68 60 .`p.ha...`ap..h` bdc0: 00 62 a0 0a 53 43 4d 50 62 69 6a a4 60 75 60 a4 .b..SCMPbij.`u`. bdd0: ff 14 10 53 4c 45 4e 02 70 83 88 68 69 00 60 a4 ...SLEN.p..hi.`. bde0: 87 60 14 16 43 4c 52 50 00 70 0a 00 5c 57 50 41 .`..CLRP.p..\WPA bdf0: 53 70 0a 00 5c 57 50 4e 57 14 4c 04 47 50 41 53 Sp..\WPNW.L.GPAS be00: 02 70 69 60 70 0a 00 61 a2 31 92 94 61 0a 80 70 .pi`p..a.1..a..p be10: 83 88 68 60 00 62 a0 16 91 93 62 0a 2c 93 62 0a ..h`.b....b.,.b. be20: 00 70 0a 00 88 50 53 54 52 61 00 a4 61 70 62 88 .p...PSTRa..apb. be30: 50 53 54 52 61 00 75 60 75 61 70 0a 00 88 50 53 PSTRa.u`uap...PS be40: 54 52 61 00 a4 ff 14 43 09 43 50 41 53 02 43 4c TRa....C.CPAS.CL be50: 52 50 70 69 60 70 47 50 41 53 68 60 61 a0 07 93 RPpi`pGPASh`a... be60: 61 ff a4 0a 02 a0 08 93 61 0a 00 a4 0a 02 70 50 a.......a.....pP be70: 53 54 52 5c 57 50 41 53 72 60 61 60 75 60 70 47 STR\WPASr`a`u`pG be80: 53 45 4c 50 45 4e 43 68 60 66 a0 07 93 66 ff a4 SELPENCh`f...f.. be90: 0a 02 70 66 5c 57 45 4e 43 a0 3d 93 66 0a 00 72 ..pf\WENC.=.f..r bea0: 60 53 4c 45 4e 50 45 4e 43 0a 00 60 a0 0d 92 93 `SLENPENC..`.... beb0: 83 88 68 60 00 0a 2c a4 0a 02 75 60 70 47 53 45 ..h`..,...u`pGSE bec0: 4c 50 4b 42 44 68 60 66 a0 07 93 66 ff a4 0a 02 LPKBDh`f...f.... bed0: 70 66 5c 57 4b 42 44 a4 0a 00 14 4e 0f 53 50 41 pf\WKBD....N.SPA bee0: 53 01 43 4c 52 50 70 47 53 45 4c 50 54 59 50 68 S.CLRPpGSELPTYPh bef0: 0a 00 66 a0 07 93 66 ff a4 0a 02 70 66 5c 57 50 ..f...f....pf\WP bf00: 54 59 70 53 4c 45 4e 50 54 59 50 66 60 a0 0d 92 TYpSLENPTYPf`... bf10: 93 83 88 68 60 00 0a 2c a4 0a 02 75 60 70 47 50 ...h`..,...u`pGP bf20: 41 53 68 60 61 a0 0c 91 93 61 ff 93 61 0a 00 a4 ASh`a....a..a... bf30: 0a 02 70 50 53 54 52 5c 57 50 41 53 72 60 61 60 ..pPSTR\WPASr`a` bf40: a0 0d 92 93 83 88 68 60 00 0a 2c a4 0a 02 75 60 ......h`..,...u` bf50: 70 47 50 41 53 68 60 61 a0 07 93 61 ff a4 0a 02 pGPASh`a...a.... bf60: a0 0c 93 61 0a 00 70 0a 00 50 53 54 52 70 50 53 ...a..p..PSTRpPS bf70: 54 52 5c 57 50 4e 57 72 60 61 60 75 60 70 47 53 TR\WPNWr`a`u`pGS bf80: 45 4c 50 45 4e 43 68 60 66 a0 07 93 66 ff a4 0a ELPENCh`f...f... bf90: 02 70 66 5c 57 45 4e 43 a0 3d 93 66 0a 00 72 60 .pf\WENC.=.f..r` bfa0: 53 4c 45 4e 50 45 4e 43 0a 00 60 a0 0d 92 93 83 SLENPENC..`..... bfb0: 88 68 60 00 0a 2c a4 0a 02 75 60 70 47 53 45 4c .h`..,...u`pGSEL bfc0: 50 4b 42 44 68 60 66 a0 07 93 66 ff a4 0a 02 70 PKBDh`f...f....p bfd0: 66 5c 57 4b 42 44 a4 0a 00 14 4b 48 57 53 45 54 f\WKBD....KHWSET bfe0: 02 70 49 4c 45 4e 60 75 60 70 47 49 54 4d 49 42 .pILEN`u`pGITMIB bff0: 55 46 68 61 a0 07 93 61 ff a4 0a 02 70 61 5c 57 UFha...a....pa\W c000: 49 54 4d 70 83 88 68 61 00 63 70 83 88 63 0a 01 ITMp..ha.cp..c.. c010: 00 64 70 87 64 62 75 62 70 83 88 63 0a 00 00 64 .dp.dbubp..c...d c020: a0 3a 95 64 0a 64 70 83 88 69 64 00 65 70 47 53 .:.d.dp..id.epGS c030: 45 4c 65 49 42 55 46 62 66 a0 07 93 66 ff a4 0a ELeIBUFbf...f... c040: 02 70 66 5c 57 53 45 4c 72 62 53 4c 45 4e 65 66 .pf\WSELrbSLENef c050: 62 70 83 88 49 42 55 46 62 00 64 a1 46 3e 70 0a bp..IBUFb.d.F>p. c060: 3f 5c 57 4c 53 30 70 0a 3f 5c 57 4c 53 31 70 0a ?\WLS0p.?\WLS1p. c070: 3f 5c 57 4c 53 32 70 0a 3f 5c 57 4c 53 33 70 0a ?\WLS2p.?\WLS3p. c080: 3f 5c 57 4c 53 34 70 0a 3f 5c 57 4c 53 35 70 0a ?\WLS4p.?\WLS5p. c090: 3f 5c 57 4c 53 36 70 0a 3f 5c 57 4c 53 37 70 0a ?\WLS6p.?\WLS7p. c0a0: 3f 5c 57 4c 53 38 70 0a 3f 5c 57 4c 53 39 70 0a ?\WLS8p.?\WLS9p. c0b0: 3f 5c 57 4c 53 41 70 0a 3f 5c 57 4c 53 42 70 0a ?\WLSAp.?\WLSBp. c0c0: 3f 5c 57 4c 53 43 70 0a 3f 5c 57 4c 53 44 70 47 ?\WLSCp.?\WLSDpG c0d0: 53 45 4c 56 4c 53 54 49 42 55 46 62 66 a0 07 93 SELVLSTIBUFbf... c0e0: 66 ff a4 0a 02 70 66 5c 57 4c 53 30 72 62 53 4c f....pf\WLS0rbSL c0f0: 45 4e 56 4c 53 54 66 62 70 83 88 49 42 55 46 62 ENVLSTfbp..IBUFb c100: 00 64 a0 3f 90 95 62 60 93 64 0a 3a 75 62 70 47 .d.?..b`.d.:ubpG c110: 53 45 4c 56 4c 53 54 49 42 55 46 62 66 a0 07 93 SELVLSTIBUFbf... c120: 66 ff a4 0a 02 70 66 5c 57 4c 53 31 72 62 53 4c f....pf\WLS1rbSL c130: 45 4e 56 4c 53 54 66 62 70 83 88 49 42 55 46 62 ENVLSTfbp..IBUFb c140: 00 64 a0 3f 90 95 62 60 93 64 0a 3a 75 62 70 47 .d.?..b`.d.:ubpG c150: 53 45 4c 56 4c 53 54 49 42 55 46 62 66 a0 07 93 SELVLSTIBUFbf... c160: 66 ff a4 0a 02 70 66 5c 57 4c 53 32 72 62 53 4c f....pf\WLS2rbSL c170: 45 4e 56 4c 53 54 66 62 70 83 88 49 42 55 46 62 ENVLSTfbp..IBUFb c180: 00 64 a0 3f 90 95 62 60 93 64 0a 3a 75 62 70 47 .d.?..b`.d.:ubpG c190: 53 45 4c 56 4c 53 54 49 42 55 46 62 66 a0 07 93 SELVLSTIBUFbf... c1a0: 66 ff a4 0a 02 70 66 5c 57 4c 53 33 72 62 53 4c f....pf\WLS3rbSL c1b0: 45 4e 56 4c 53 54 66 62 70 83 88 49 42 55 46 62 ENVLSTfbp..IBUFb c1c0: 00 64 a0 3f 90 95 62 60 93 64 0a 3a 75 62 70 47 .d.?..b`.d.:ubpG c1d0: 53 45 4c 56 4c 53 54 49 42 55 46 62 66 a0 07 93 SELVLSTIBUFbf... c1e0: 66 ff a4 0a 02 70 66 5c 57 4c 53 34 72 62 53 4c f....pf\WLS4rbSL c1f0: 45 4e 56 4c 53 54 66 62 70 83 88 49 42 55 46 62 ENVLSTfbp..IBUFb c200: 00 64 a0 3f 90 95 62 60 93 64 0a 3a 75 62 70 47 .d.?..b`.d.:ubpG c210: 53 45 4c 56 4c 53 54 49 42 55 46 62 66 a0 07 93 SELVLSTIBUFbf... c220: 66 ff a4 0a 02 70 66 5c 57 4c 53 35 72 62 53 4c f....pf\WLS5rbSL c230: 45 4e 56 4c 53 54 66 62 70 83 88 49 42 55 46 62 ENVLSTfbp..IBUFb c240: 00 64 a0 3f 90 95 62 60 93 64 0a 3a 75 62 70 47 .d.?..b`.d.:ubpG c250: 53 45 4c 56 4c 53 54 49 42 55 46 62 66 a0 07 93 SELVLSTIBUFbf... c260: 66 ff a4 0a 02 70 66 5c 57 4c 53 36 72 62 53 4c f....pf\WLS6rbSL c270: 45 4e 56 4c 53 54 66 62 70 83 88 49 42 55 46 62 ENVLSTfbp..IBUFb c280: 00 64 a0 3f 90 95 62 60 93 64 0a 3a 75 62 70 47 .d.?..b`.d.:ubpG c290: 53 45 4c 56 4c 53 54 49 42 55 46 62 66 a0 07 93 SELVLSTIBUFbf... c2a0: 66 ff a4 0a 02 70 66 5c 57 4c 53 37 72 62 53 4c f....pf\WLS7rbSL c2b0: 45 4e 56 4c 53 54 66 62 70 83 88 49 42 55 46 62 ENVLSTfbp..IBUFb c2c0: 00 64 a0 3f 90 95 62 60 93 64 0a 3a 75 62 70 47 .d.?..b`.d.:ubpG c2d0: 53 45 4c 56 4c 53 54 49 42 55 46 62 66 a0 07 93 SELVLSTIBUFbf... c2e0: 66 ff a4 0a 02 70 66 5c 57 4c 53 38 72 62 53 4c f....pf\WLS8rbSL c2f0: 45 4e 56 4c 53 54 66 62 70 83 88 49 42 55 46 62 ENVLSTfbp..IBUFb c300: 00 64 a0 3f 90 95 62 60 93 64 0a 3a 75 62 70 47 .d.?..b`.d.:ubpG c310: 53 45 4c 56 4c 53 54 49 42 55 46 62 66 a0 07 93 SELVLSTIBUFbf... c320: 66 ff a4 0a 02 70 66 5c 57 4c 53 39 72 62 53 4c f....pf\WLS9rbSL c330: 45 4e 56 4c 53 54 66 62 70 83 88 49 42 55 46 62 ENVLSTfbp..IBUFb c340: 00 64 a0 3f 90 95 62 60 93 64 0a 3a 75 62 70 47 .d.?..b`.d.:ubpG c350: 53 45 4c 56 4c 53 54 49 42 55 46 62 66 a0 07 93 SELVLSTIBUFbf... c360: 66 ff a4 0a 02 70 66 5c 57 4c 53 41 72 62 53 4c f....pf\WLSArbSL c370: 45 4e 56 4c 53 54 66 62 70 83 88 49 42 55 46 62 ENVLSTfbp..IBUFb c380: 00 64 a0 3f 90 95 62 60 93 64 0a 3a 75 62 70 47 .d.?..b`.d.:ubpG c390: 53 45 4c 56 4c 53 54 49 42 55 46 62 66 a0 07 93 SELVLSTIBUFbf... c3a0: 66 ff a4 0a 02 70 66 5c 57 4c 53 42 72 62 53 4c f....pf\WLSBrbSL c3b0: 45 4e 56 4c 53 54 66 62 70 83 88 49 42 55 46 62 ENVLSTfbp..IBUFb c3c0: 00 64 a0 3f 90 95 62 60 93 64 0a 3a 75 62 70 47 .d.?..b`.d.:ubpG c3d0: 53 45 4c 56 4c 53 54 49 42 55 46 62 66 a0 07 93 SELVLSTIBUFbf... c3e0: 66 ff a4 0a 02 70 66 5c 57 4c 53 43 72 62 53 4c f....pf\WLSCrbSL c3f0: 45 4e 56 4c 53 54 66 62 70 83 88 49 42 55 46 62 ENVLSTfbp..IBUFb c400: 00 64 a0 3f 90 95 62 60 93 64 0a 3a 75 62 70 47 .d.?..b`.d.:ubpG c410: 53 45 4c 56 4c 53 54 49 42 55 46 62 66 a0 07 93 SELVLSTIBUFbf... c420: 66 ff a4 0a 02 70 66 5c 57 4c 53 44 72 62 53 4c f....pf\WLSDrbSL c430: 45 4e 56 4c 53 54 66 62 70 83 88 49 42 55 46 62 ENVLSTfbp..IBUFb c440: 00 64 a0 1f 90 93 64 0a 2c 95 62 60 75 62 70 43 .d....d.,.b`ubpC c450: 50 41 53 49 42 55 46 62 60 a0 08 92 93 60 0a 00 PASIBUFb`....`.. c460: a4 60 a4 0a 00 08 57 51 42 41 11 42 8a 0b 9d 08 .`....WQBA.B.... c470: 46 4f 4d 42 01 00 00 00 8d 08 00 00 f2 36 00 00 FOMB.........6.. c480: 44 53 00 01 1a 7d da 54 a8 c9 9a 00 01 06 18 42 DS...}.T.......B c490: 10 13 10 0a 0d 21 02 0b 83 50 4c 18 14 a0 45 41 .....!...PL...EA c4a0: c8 05 14 95 02 21 c3 02 14 0b 70 2e 40 ba 00 e5 .....!....p.@... c4b0: 28 72 0c 22 02 f7 ef 0f 31 0e 88 14 40 48 26 84 (r."....1...@H&. c4c0: 44 00 53 21 70 84 a0 5f 01 08 1d a2 c9 a0 00 a7 D.S!p.._........ c4d0: 08 82 b4 65 01 ba 05 f8 16 a0 1d 42 68 15 0a 30 ...e.......Bh..0 c4e0: 29 c0 27 98 2c 0a 90 0d 26 db 70 64 18 4c e4 18 ).'.,...&.pd.L.. c4f0: 50 62 c6 80 d2 39 05 d9 04 16 74 a1 28 9a 46 94 Pb...9....t.(.F. c500: 04 07 75 0c 11 82 97 2b 40 f2 04 a4 79 5e b2 3e ..u....+@...y^.> c510: 08 0d 81 8d 80 47 91 00 c2 62 2c 53 e2 61 50 1e .....G...b,S.aP. c520: 40 24 67 a8 28 60 7b 9d 88 86 75 9c 4c 12 1c 6a @$g.(`{...u.L..j c530: 94 96 28 c0 fc c8 34 91 63 6b 7a c4 82 64 d2 86 ..(...4.ckz..d.. c540: 82 1a ba a7 75 52 9e 68 c4 83 32 4c 02 8f 82 a1 ....uR.h..2L.... c550: 71 82 b2 20 e4 60 a0 28 c0 93 f0 1c 8b 17 20 7c q.. .`.(...... | c560: c6 e4 28 10 23 81 8f 04 1e cd 31 63 81 c2 05 3c ..(.#.....1c...< c570: 9f 63 88 1c f7 50 63 1c 45 e4 04 ef 00 51 8c 56 .c...Pc.E....Q.V c580: d0 bc 85 18 2c 9a c1 7a 06 27 83 4e f0 ff 3f 02 ....,..z.'.N..?. c590: 2e 03 42 1e 05 58 1d 94 a6 61 82 ee 05 bc 1a 1a ..B..X...a...... c5a0: 13 a0 11 43 ca 04 38 bb 2f 68 46 6d 09 30 27 40 ...C..8./hFm.0'@ c5b0: 9b 00 6f 08 42 39 cf 28 c7 72 8a 51 1e 06 62 be ..o.B9.(.r.Q..b. c5c0: 0c 04 8d 12 23 e6 b9 c4 35 6c 84 18 21 4f 21 50 ....#...5l..!O!P c5d0: dc f6 07 41 06 8d 1b bd 4f 0b 67 75 02 47 ff a4 ...A....O.gu.G.. c5e0: 60 02 4f f9 c0 9e 0d 4e e0 58 a3 c6 38 95 04 8e `.O....N.X..8... c5f0: fd 80 90 06 10 45 82 47 9d 16 7c 2e f0 d0 0e da .....E.G..|..... c600: 73 3c 81 20 87 70 04 4f 0c 0f 04 1e 03 bb 29 f8 s<. .p.O......). c610: 08 e0 13 02 de 35 a0 ae 06 0f 06 6c d0 e1 30 e3 .....5.....l..0. c620: f5 f0 c3 9d c0 49 3e 60 f0 c3 86 07 87 9b e7 c9 .....I>`........ c630: 1c 59 a9 02 cc 1e 0e 74 90 f0 69 83 9d 01 30 f2 .Y.....t..i...0. c640: 07 81 1a 99 a1 3d ee 97 0e 43 3e 27 1c 16 13 7b .....=...C>'...{ c650: ea a0 e3 01 ff 65 e4 39 c3 d3 f7 7c 4d 30 ec c0 .....e.9...|M0.. c660: d1 03 31 f4 c3 c6 61 9c 86 ef 1f 3e 2f c0 38 05 ..1...a....>/.8. c670: 78 e4 fe ff 1f 52 7c 9a e0 47 0b 9f 26 d8 f5 e0 x....R|..G..&... c680: 34 9e 03 3c 9c b3 f2 61 02 6c f7 13 36 a2 77 0b 4..<...a.l..6.w. c690: 8f 06 7b 0a 00 df f9 05 9c 77 0d 36 58 18 e7 17 ..{......w.6X... c6a0: e0 71 42 f0 10 f8 41 c2 43 e0 03 78 fe 38 43 2b .qB...A.C..x.8C+ c6b0: 9d 17 72 60 f0 ce 39 30 46 c1 f3 3c 36 4c a0 20 ..r`..90F..<6L. c6c0: af 01 85 7a 16 50 18 9f 6a 80 d7 ff ff 54 03 5c ...z.P..j....T.\ c6d0: 0e 07 b8 93 03 dc 7b 01 bb 38 3c d7 c0 15 7d ae ......{..8<...}. c6e0: 81 7a 6f 29 6e 8c ba c6 04 79 14 78 a4 89 f2 3c .zo)n....y.x...< c6f0: f3 2e 13 e1 d9 c6 d7 1a 4f 21 8e af 35 46 7c 99 ........O!..5F|. c700: 78 b7 31 ee c1 3d d6 3c e4 18 e4 68 22 bc 18 04 x.1..=.<...h"... c710: 7c bc f1 b1 06 bc 62 5e 28 b2 70 ac 01 34 fe ff |.....b^(.p..4.. c720: 8f 35 c0 0d eb 01 05 7c 47 06 76 43 81 77 42 01 .5.....|G.vC.wB. c730: fc 24 7e 01 e8 c8 e1 b4 20 b2 f1 06 f0 29 80 aa .$~..... ....).. c740: 01 d2 34 61 13 4c 4f 2e 78 1f 09 9c 9b 44 c9 87 ..4a.LO.x....D.. c750: 45 e1 9c f5 20 42 41 0c e8 20 c7 09 f4 19 c5 07 E... BA.. ...... c760: 91 13 7d 22 f4 a0 3c 8c 77 14 76 02 f1 61 c2 63 ..}"..<.w.v..a.c c770: f7 31 81 ff 63 3c 1b a3 5b 0d 86 fe ff e7 14 0e .1..c<..[....... c780: e6 83 08 27 a8 eb 26 01 32 7d 47 05 50 00 f9 5e ...'..&.2}G.P..^ c790: e0 73 c0 b3 01 1b c3 a3 80 d1 8c ce c3 4f 16 15 .s...........O.. c7a0: 77 b2 14 c4 93 75 94 c9 a2 67 e2 7b 85 67 f4 a6 w....u...g.{.g.. c7b0: e5 39 7a c2 be 87 c0 3a 0c 84 7c 30 f0 34 0c e7 .9z....:..|0.4.. c7c0: c9 72 38 4f 96 8f c5 d7 10 f0 09 9c 2d c8 e1 31 .r8O........-..1 c7d0: b1 46 45 af 42 1e 1e bf 1c 78 3e cf 08 47 f9 24 .FE.B....x>..G.$ c7e0: 81 c3 78 26 f1 10 7d 2b 82 35 91 93 f6 6d e1 64 ..x&..}+.5...m.d c7f0: 83 be 9e 61 6e 45 b0 ff ff b7 22 38 17 34 98 99 ...anE...."8.4.. c800: ee 55 a8 58 f7 2a 40 ec b0 5e 7b 7c b0 82 7b af .U.X.*@..^{|..{. c810: 82 7b a9 7a 56 38 c6 f0 0f 53 31 4e e9 b5 d3 40 .{.zV8...S1N...@ c820: 61 a2 c4 7b af f2 18 df ab d8 15 2a 4c ac 97 2b a..{.......*L..+ c830: a3 be 4e 84 0b 14 24 d2 ab 55 94 c8 f1 0d f9 5e ..N...$..U.....^ c840: 05 5e 39 f7 2a 90 fd ff ef 55 80 79 b4 f7 2a 30 .^9.*....U.y..*0 c850: 5e 1b d8 0d 09 16 d0 8b 15 60 28 f3 c5 8a e6 bd ^........`(..... c860: 58 21 fe ff e7 12 a6 e7 62 45 e6 09 ff 66 05 70 X!......bE...f.p c870: fa ff 7f b3 02 8c dd 8b 30 47 2b 78 29 6f 56 34 ........0G+x)oV4 c880: ce 32 14 70 41 14 c6 37 2b c0 d1 75 05 37 64 b8 .2.pA..7+..u.7d. c890: 60 51 82 f9 10 e2 e9 1c f1 43 c2 4b c0 63 8e 07 `Q.......C.K.c.. c8a0: fc 40 e0 cb 15 98 fe ff 04 3e f9 9e e5 db d4 7b .@.......>.....{ c8b0: 2f 3f 60 bd 57 f9 f0 1b eb 9d e1 e5 ca 23 89 72 /?`.W........#.r c8c0: 12 a1 7c b7 7a af 32 4a c4 17 62 9f 82 0d 6d 94 ..|.z.2J..b...m. c8d0: a7 8a e8 c6 7b b9 02 af a4 cb 15 40 93 e1 bf 5c ....{......@...\ c8e0: 81 ef e6 80 bd 26 c1 f9 ff 5f 93 f8 f5 0a f0 93 .....&..._...... c8f0: fd 7a 45 73 5f af 50 a2 20 a4 08 48 33 05 cf fd .zEs_.P. ..H3... c900: 0a e0 c4 ff ff 7e 05 58 0e 77 bf 02 7a b7 23 f0 .....~.X.w..z.#. c910: a2 bc 1d 61 af 58 f8 8c 57 2c 1a 66 25 8a b7 26 ...a.X..W,.f%..& c920: 0a e3 2b 16 30 f9 ff 5f b1 80 d9 41 14 37 6a b8 ..+.0.._...A.7j. c930: 17 27 df 7a 3c df 88 be c3 60 4e 58 30 6e 58 f0 .'.z<....`NX0nX. c940: 87 f4 30 ec 93 c4 3b 96 8f 56 06 79 03 7e b2 7a ..0...;..V.y.~.z c950: b0 8a 62 84 80 c7 f3 2e ec a3 d5 9b 96 51 62 c7 ..b..........Qb. c960: f2 85 ea 59 cb d7 2c 43 c4 7d 20 f6 0d 0b b0 fd ...Y..,C.} ..... c970: ff bf 61 01 8e 2e 0e fc e0 80 bd 61 01 3e 67 0a ..a........a.>g. c980: 9e 1b 16 b0 f9 ff df b0 00 fe ff ff 6f 58 c0 e1 ............oX.. c990: 76 85 bd 65 61 6f 2f 64 15 34 d4 4a 14 fc 7b 65 v..eao/d.4.J..{e c9a0: 18 7a c3 02 1c 8d db a3 06 c7 d9 e0 49 02 73 ae .z..........I.s. c9b0: c6 cd e6 e0 02 47 e8 1d 54 73 67 97 14 18 b7 2c .....G..Tsg...., c9c0: b8 97 aa 87 86 28 07 f1 2a fc 60 f5 28 75 64 8f .....(..*.`.(ud. c9d0: 57 4f c3 3e 66 f9 96 65 a8 08 6f 59 ec 0c 11 2f WO.>f..e..oY.../ c9e0: 56 94 10 ef 15 a1 7d e7 32 f8 a3 b1 51 83 be 1c V.....}.2...Q... c9f0: bf 65 c1 fb ff df b2 e0 8b fc ab e8 44 e0 5b 16 .e..........D.[. ca00: c0 8f 60 10 72 32 70 f4 79 01 3f 80 87 11 0f 89 ..`.r2p.y.?..... ca10: 05 18 38 bd 2f f9 4c c1 0f 18 3e 53 b0 eb 41 f4 ..8./.L...>S..A. ca20: c7 00 9f 4b 30 83 03 ff b5 e2 d0 3d 8a d7 07 13 ...K0......=.... ca30: 78 70 fc ff 3f 38 b8 77 86 23 f2 1d c6 83 03 db xp..?8.w.#...... ca40: 41 00 38 0c 0e 1f 6a 70 e8 f1 18 38 a4 cf 63 ec A.8...jp...8..c. ca50: c2 f0 90 e3 a1 81 0d d0 43 03 96 93 78 0a 39 34 ........C...x.94 ca60: 30 4b 18 1a 50 8a 37 34 fa ff 1f 1a 1f 92 0f 0b 0K..P.74........ ca70: 31 9f 72 22 bc 2f f8 04 c5 d0 5f 53 7c bb f0 4d 1.r"./...._S|..M ca80: 10 37 3e 70 5d 3a 3d 3e e0 73 e4 f2 f8 70 47 27 .7>p]:=>.s...pG' ca90: 8f 0f 86 cb ab 0c 39 9a f8 68 c5 86 07 b6 9b 9e ......9..h...... caa0: 87 07 7c ae 9b 60 bc 42 f2 6b 09 8c 13 14 fe ba ..|..`.B.k...... cab0: 09 de ff ff 75 13 78 8e 82 6b bd 64 d3 20 af 1c ....u.x..k.d. .. cac0: c5 7a 11 50 18 9f d9 00 47 63 7d 66 03 cb bd 80 .z.P....Gc}f.... cad0: dd d8 e0 9e d6 60 df 1d 1e ce 1e d3 1e d5 1e d0 .....`.......... cae0: 7c c4 8e f1 96 16 24 4e 84 d7 81 a7 35 5f 32 e2 |.....$N....5_2. caf0: 05 7a 5a 33 46 9c 97 36 23 be 52 84 78 58 f3 c9 .zZ3F..6#.R.xX.. cb00: cd 78 0f 13 e1 c2 bc b0 3d ad 81 e3 ff 7f 5a 83 .x......=.....Z. cb10: 23 e7 8a 0d d0 e4 a2 8f 3b a4 80 e5 da c0 6e 29 #.......;.....n) cb20: f0 2e d8 c0 f9 ff 7f 44 01 5f 96 0b 36 cd 71 c1 .......D._..6.q. cb30: 46 71 58 0d 90 e6 09 ff 7a 0d fe 49 f8 7a 0d d8 FqX.....z..I.z.. cb40: be c5 e2 ae d7 c0 ea ff 7f bd 06 96 82 47 4a ef .............GJ. cb50: d4 e0 ba 69 e3 41 df b4 61 0a be 45 d1 28 e4 8a ...i.A..a..E.(.. cb60: b6 10 0a e3 5b 14 e0 08 fb 2d 0a 2c 17 a7 b7 28 ....[....-.,...( cb70: fc 0c 3c 68 df 75 18 a6 ef d0 f0 4f 4d cf 4d 0f ..H.p......^.. cb90: d4 6b 94 2f 30 c7 10 31 ca cb b4 21 e2 f9 d4 e4 .k./0..1...!.... cba0: b3 42 dc 10 0f d1 46 88 fa 3c ed 09 bd 46 81 57 .B....F..<...F.W cbb0: d0 35 0a a0 c9 fd 08 77 8d 02 cb bd 81 9d 87 f8 .5.....w........ cbc0: 95 c8 d7 06 18 f7 28 38 ff ff 7b 14 60 23 cc 3d ......(8..{.`#.= cbd0: 8a 06 b9 47 a1 4e 26 be d4 79 a2 e0 08 7f 91 42 ...G.N&..y.....B cbe0: c5 26 51 e8 c3 10 2a e6 61 84 82 18 d0 19 4e 14 .&Q...*.a.....N. cbf0: 68 15 27 0a 72 8b f1 a4 1e a3 00 5f cb f4 50 79 h.'.r......_..Py cc00: e4 a1 52 10 0f d5 71 86 8a 9e a4 e7 8f f9 ff 1f ..R...q......... cc10: 1c b0 07 29 80 17 0a 6d fa d4 68 d4 aa 41 99 1a ...)...m..h..A.. cc20: 65 1a d4 ea 53 a9 31 63 e7 50 4b 3b 4b 50 31 8b e...S.1c.PK;KP1. cc30: d1 68 1c 05 84 ca fe 9b 0b c4 21 9f 3a 02 74 b0 .h........!.:.t. cc40: 17 95 80 2c 6b 6d 02 71 7c 13 10 8d 80 48 cb 63 ...,km.q|....H.c cc50: 42 40 ce 0d 22 20 ab 58 93 80 ac f9 01 23 70 eb B@.." .X.....#p. cc60: d4 01 c4 52 82 d0 44 0b 17 a8 e3 81 68 30 84 46 ...R..D.....h0.F cc70: 40 0e 46 21 20 cb f8 74 0b dc 02 ac 00 31 f9 20 @.F! ..t.....1. cc80: 54 b0 17 50 a6 1e 44 40 56 ba 56 01 59 37 88 80 T..P..D@V.V.Y7.. cc90: fe ff 2f 83 32 03 ce 32 ba 01 62 0a 1f 0a 02 b1 ../.2..2..b..... cca0: 26 3d a0 4c 20 88 ae 1c c4 0f 10 93 06 22 20 c7 &=.L ........" . ccb0: 39 98 08 dc 71 14 01 52 47 c3 a5 20 54 fc f3 44 9...q..RG.. T..D ccc0: 20 16 64 09 8c 82 d0 08 9a 40 98 3c 4f 20 2c d4 .d......@..x....Q d1f0: b8 80 e7 73 0c 91 e3 1e 6a 8c a3 88 7c 38 0c ed ...s....j...|8.. d200: 74 e3 1c d8 e9 14 04 2e 90 60 3d cf 59 20 ff ff t........`=.Y .. d210: 18 07 c1 f0 8e 01 23 03 42 1e 05 58 1d 96 26 91 ......#.B..X..&. d220: c0 ee 05 68 bc 04 48 e1 20 a5 0c 42 30 8d 09 b0 ...h..H. ..B0... d230: 75 68 90 37 01 d6 ae 02 42 89 74 02 71 42 44 89 uh.7....B.t.qBD. d240: 18 d4 40 51 6a 43 15 4c 67 c3 13 66 dc 10 31 0c ..@QjC.Lg..f..1. d250: 14 b7 fd 41 90 61 e3 c6 ef 41 9d d6 d9 1d d3 ab ...A.a...A...... d260: 82 09 3c e9 37 84 a7 83 a3 38 da a8 31 9a 23 65 ..<.7....8..1.#e d270: ab d6 b9 c2 91 e0 51 e7 05 9f 0c 3c b4 c3 f6 60 ......Q....<...` d280: cf d2 43 38 82 67 86 47 02 8f 81 dd 15 7c 08 f0 ..C8.g.G.....|.. d290: 19 01 ef 1a 50 97 83 47 03 36 e9 70 98 f1 7a ee ....P..G.6.p..z. d2a0: 9e ba cf 18 fc bc e1 c1 e1 46 7a 32 47 56 aa 00 .........Fz2GV.. d2b0: b3 d7 00 1d 25 7c e0 60 77 81 a7 00 13 58 fe 20 ....%|.`w....X. d2c0: 50 23 33 b4 c7 fb de 61 c8 27 85 c3 62 62 0f 1e P#3....a.'..bb.. d2d0: 74 3c e0 bf 8f 3c 69 78 fa 9e af 09 06 86 90 95 t<.....y./.o.& d320: 88 f6 10 03 c6 19 e1 ce 1b 70 4e 31 c0 03 ea 10 .........pN1.... d330: 30 87 09 0f 81 0f e0 19 e4 1c 7d cc 39 33 dc 71 0.........}.93.q d340: 07 6c c3 e0 91 2d 80 b0 38 4f 02 05 7c 1b 50 18 .l...-..8O..|.P. d350: 1f 6e c0 fb ff 3f dc 00 d7 f3 01 ee f8 00 f7 62 .n...?.........b d360: c1 0e 0f 8f 37 c0 60 48 8f 34 6f 35 31 5e 6d 42 ....7.`H.4o51^mB d370: 44 78 a8 79 b7 31 52 bc c7 1b 76 8d 39 8b 07 90 Dx.y.1R...v.9... d380: 28 c5 a1 e9 62 13 23 ca 9b 8d 61 df 74 0c 14 2a (...b.#...a.t..* d390: 52 84 30 2f 16 21 1e 6f c0 2c e9 a5 a2 cf 81 8f R.0/.!.o.,...... d3a0: 37 80 97 ff ff f1 06 f0 30 0c 1f 53 c0 76 73 60 7.......0..S.vs` d3b0: f7 14 f8 e7 14 c0 91 90 47 80 0e 1e 16 01 22 1b ........G.....". d3c0: cf 00 9f 89 a8 40 2a cd 14 2c e3 14 ac 4e 88 5c .....@*..,...N.\ d3d0: 06 85 44 40 68 64 86 f3 21 d1 60 06 f1 f9 c0 67 ..D@hd..!.`....g d3e0: 0a 9f 9c f8 ff ff e4 04 9e 83 c9 43 05 2c 44 9f ...........C.,D. d3f0: 16 38 9c cf 2c 1c ce 47 12 7e 80 e4 47 25 70 09 .8..,..G.~..G%p. d400: 3c 34 80 02 c8 f7 03 9f 03 9e 11 d8 1c 1e 09 7c <4.............| d410: 20 60 f0 3c da a8 e8 d1 c6 c3 e3 47 06 cf e7 81 `.<.......G.... d420: e0 28 1f 09 70 18 ef 17 1e a2 4f 39 b0 26 72 d4 .(..p.....O9.&r. d430: 16 7d 22 10 e8 33 17 e6 94 03 9c 82 8f 1e 15 f5 .}"..3.......... d440: 40 0a da 93 82 cf 0a 3e 7c c1 ff ff 1f be e0 cc @......>|....... d450: eb 65 cd 07 8e 38 67 71 ba ef 16 f8 13 29 30 0b .e...8gq.....)0. d460: 72 22 45 c1 f8 44 0a d8 bc 05 60 af 0b 4f 22 30 r"E..D....`..O"0 d470: ce 11 cf 58 30 0f 55 a7 f8 52 f5 c6 10 e1 c9 ea ...X0.U..R...... d480: 35 ea 01 cb 60 2f 02 86 79 c5 f2 e9 2a c4 03 96 5...`/..y...*... d490: cf 5a d1 42 84 8c 12 ec 15 eb 55 c6 47 2a 83 07 .Z.B......U.G*.. d4a0: 0c 1b 2d 52 84 47 2c fc ff ff 88 05 1e 09 07 52 ..-R.G,........R d4b0: 80 2a 03 c7 1d 48 81 fd 69 02 7f bd f0 78 b0 ff .*...H..i....x.. d4c0: ff 73 00 f8 0e 31 c0 60 c0 30 0e 31 c0 43 f0 c9 .s...1.`.0.1.C.. d4d0: 0c f4 c7 1d f8 e3 e0 19 9f 1c 26 50 98 13 29 0a ..........&P..). d4e0: c6 27 52 c0 d9 ff ff 70 05 86 e3 0d f8 6f 33 3e .'R....p.....o3> d4f0: 84 fa 7c e3 0b a9 21 5e 6c de d4 5e 09 5e df d9 ..|...!^l..^.^.. d500: b5 e6 f5 dd a7 82 27 d1 08 21 a3 bc e4 18 24 c4 ......'..!....$. d510: eb a8 01 83 05 89 78 0a 4f 3b 8f 37 e0 15 75 20 ......x.O;.7..u d520: 05 e8 f1 ff 3f 90 02 83 7b 0a ec 73 0a e0 29 f9 ....?...{..s..). d530: 89 94 a6 3e 91 a2 15 01 69 aa 60 21 98 fe 44 4a ...>....i.`!..DJ d540: 0f 06 ce 4d a2 e4 43 a3 70 ce 7a 20 a1 20 06 74 ...M..C.p.z . .t d550: 90 43 05 fa ac e2 03 c9 81 3c 22 7a 58 3e 54 fa .C.......<"zX>T. d560: ae e2 73 88 8f 14 1e bf 0f 0b fc 3f e3 e3 28 03 ..s........?..(. d570: af e6 bc 82 02 f3 69 14 a3 eb 3e 01 92 ff ff fc ......i...>..... d580: b8 be c3 28 c8 d1 79 f8 c9 a2 e2 4e 96 82 78 b2 ...(..y....N..x. d590: 8e 32 59 f4 4c 7c bb f0 8c de bb 7c 83 65 37 59 .2Y.L|.....|.e7Y d5a0: 78 97 81 90 8f 06 be c9 c2 1d 8b 2f 23 e0 bb c9 x........../#... d5b0: 02 5e 47 e3 b3 05 3b 85 f8 ba 06 4b a1 4d 9f 1a .^G...;....K.M.. d5c0: 8d 5a fd ff 1b 94 a9 51 a6 41 ad 3e 95 1a 33 76 .Z.....Q.A.>..3v d5d0: a1 b0 b8 0b 06 95 b4 2c 8d cb 81 40 68 80 5b a9 .......,...@h.[. d5e0: 40 1c fa 0b a4 53 02 f9 6a 09 c8 62 57 25 10 cb @....S..j..bW%.. d5f0: 54 01 d1 c8 dd c2 20 02 72 bc 4f 8d 40 1d 49 07 T..... .r.O.@.I. d600: 10 13 e4 63 ac f4 25 20 10 cb a6 15 a0 e5 3a 01 ...c..% ......:. d610: 62 61 41 68 c0 5f b5 86 e0 b4 20 02 72 32 2d 40 baAh._.... .r2-@ d620: 2c 27 88 80 fc ff 07 10 41 0d 5c 2f 05 5f 53 42 ,'......A.\/._SB d630: 5f 50 43 49 30 4c 50 43 5f 45 43 5f 5f 48 4b 45 _PCI0LPC_EC__HKE d640: 59 5b 01 42 46 57 4d 07 14 10 4d 48 43 46 01 70 Y[.BFWM...MHCF.p d650: 5c 42 46 57 43 68 60 a4 60 14 4f 05 4d 48 50 46 \BFWCh`.`.O.MHPF d660: 01 08 52 45 54 42 11 03 0a 25 5b 23 42 46 57 4d ..RETB...%[#BFWM d670: ff ff a0 3b 92 94 87 68 0a 25 70 68 5c 42 46 57 ...;...h.%ph\BFW d680: 42 a0 22 5c 42 46 57 50 5c 2f 05 5f 53 42 5f 50 B."\BFWP\/._SB_P d690: 43 49 30 4c 50 43 5f 45 43 5f 5f 43 48 4b 53 5c CI0LPC_EC__CHKS\ d6a0: 42 46 57 4c 70 5c 42 46 57 42 52 45 54 42 5b 27 BFWLp\BFWBRETB[' d6b0: 42 46 57 4d a4 52 45 54 42 14 32 4d 48 49 46 01 BFWM.RETB.2MHIF. d6c0: 08 52 45 54 42 11 03 0a 0a 5b 23 42 46 57 4d ff .RETB....[#BFWM. d6d0: ff 5c 42 46 57 47 68 70 5c 42 46 57 42 52 45 54 .\BFWGhp\BFWBRET d6e0: 42 5b 27 42 46 57 4d a4 52 45 54 42 14 0c 4d 48 B['BFWM.RETB..MH d6f0: 44 4d 01 5c 42 44 4d 43 68 10 4a 0c 5c 2f 05 5f DM.\BDMCh.J.\/._ d700: 53 42 5f 50 43 49 30 4c 50 43 5f 45 43 5f 5f 48 SB_PCI0LPC_EC__H d710: 4b 45 59 14 10 50 53 53 47 01 a4 5c 50 53 49 46 KEY..PSSG..\PSIF d720: 0a 00 0a 00 14 0f 50 53 53 53 01 a4 5c 50 53 49 ......PSSS..\PSI d730: 46 0a 01 68 14 0f 50 53 42 53 01 a4 5c 50 53 49 F..h..PSBS..\PSI d740: 46 0a 02 68 14 0f 42 49 43 47 01 a4 5c 50 53 49 F..h..BICG..\PSI d750: 46 0a 03 68 14 0f 42 49 43 53 01 a4 5c 50 53 49 F..h..BICS..\PSI d760: 46 0a 04 68 14 0f 42 43 54 47 01 a4 5c 50 53 49 F..h..BCTG..\PSI d770: 46 0a 05 68 14 0f 42 43 43 53 01 a4 5c 50 53 49 F..h..BCCS..\PSI d780: 46 0a 06 68 14 0f 42 43 53 47 01 a4 5c 50 53 49 F..h..BCSG..\PSI d790: 46 0a 07 68 14 0f 42 43 53 53 01 a4 5c 50 53 49 F..h..BCSS..\PSI d7a0: 46 0a 08 68 14 0f 42 44 53 47 01 a4 5c 50 53 49 F..h..BDSG..\PSI d7b0: 46 0a 09 68 14 0f 42 44 53 53 01 a4 5c 50 53 49 F..h..BDSS..\PSI d7c0: 46 0a 0a 68 10 4a 0a 5c 2f 05 5f 53 42 5f 50 43 F..h.J.\/._SB_PC d7d0: 49 30 4c 50 43 5f 45 43 5f 5f 48 4b 45 59 14 10 I0LPC_EC__HKEY.. d7e0: 47 49 4c 4e 00 a4 7d 0a 02 5c 49 4c 4e 46 00 14 GILN..}..\ILNF.. d7f0: 3d 53 49 4c 4e 01 a0 17 93 0a 01 68 70 0a 01 5c =SILN......hp..\ d800: 49 4c 4e 46 70 0a 00 42 42 4c 53 a4 0a 00 a1 1e ILNFp..BBLS..... d810: a0 17 93 0a 02 68 70 0a 00 5c 49 4c 4e 46 70 0a .....hp..\ILNFp. d820: 01 42 42 4c 53 a4 0a 00 a1 04 a4 0a 01 14 41 04 .BBLS.........A. d830: 47 4c 53 49 00 a0 22 5c 48 38 44 52 a4 72 0a 02 GLSI.."\H8DR.r.. d840: 5c 2f 05 5f 53 42 5f 50 43 49 30 4c 50 43 5f 45 \/._SB_PCI0LPC_E d850: 43 5f 5f 48 50 4c 44 00 a1 16 a0 0f 7b 5c 52 42 C__HPLD.....{\RB d860: 45 43 0a 46 0a 04 00 a4 0a 03 a1 04 a4 0a 02 10 EC.F............ d870: 4a 05 5c 2f 05 5f 53 42 5f 50 43 49 30 4c 50 43 J.\/._SB_PCI0LPC d880: 5f 45 43 5f 5f 48 4b 45 59 14 10 47 44 4c 4e 00 _EC__HKEY..GDLN. d890: a4 7d 0a 02 5c 50 4c 55 58 00 14 2f 53 44 4c 4e .}..\PLUX../SDLN d8a0: 01 a0 10 93 0a 01 68 70 0a 01 5c 50 4c 55 58 a4 ......hp..\PLUX. d8b0: 0a 00 a1 17 a0 10 93 0a 02 68 70 0a 00 5c 50 4c .........hp..\PL d8c0: 55 58 a4 0a 00 a1 04 a4 0a 01 08 5c 56 48 43 43 UX.........\VHCC d8d0: 0a 00 10 2a 5c 2f 04 5f 53 42 5f 50 43 49 30 50 ...*\/._SB_PCI0P d8e0: 45 47 5f 56 49 44 5f 14 15 49 53 4f 50 00 a4 90 EG_VID_..ISOP... d8f0: 56 44 53 50 90 56 49 47 44 56 44 53 43 10 2e 5c VDSP.VIGDVDSC..\ d900: 2e 5f 53 42 5f 50 43 49 30 08 4f 54 4d 5f 0d 4f ._SB_PCI0.OTM_.O d910: 54 4d 41 43 50 49 20 32 30 30 39 2d 4e 6f 76 2d TMACPI 2009-Nov- d920: 31 32 20 31 38 3a 31 38 3a 35 31 00 10 46 12 5c 12 18:18:51..F.\ d930: 2f 04 5f 53 42 5f 50 43 49 30 50 45 47 5f 56 49 /._SB_PCI0PEG_VI d940: 44 5f 14 40 11 47 4f 42 54 01 08 4f 50 56 4b 11 D_.@.GOBT..OPVK. d950: 4a 0e 0a e6 e4 b8 4f 51 50 72 8a c2 4b 56 e6 00 J.....OQPr..KV.. d960: 00 00 01 00 31 34 38 35 39 37 34 35 36 39 38 35 ....148597456985 d970: 47 65 6e 75 69 6e 65 20 4e 56 49 44 49 41 20 43 Genuine NVIDIA C d980: 65 72 74 69 66 69 65 64 20 4f 70 74 69 6d 75 73 ertified Optimus d990: 20 52 65 61 64 79 20 4d 6f 74 68 65 72 62 6f 61 Ready Motherboa d9a0: 72 64 20 66 6f 72 20 36 38 38 33 32 35 6e 6f 7a rd for 688325noz d9b0: 6f 6d 69 32 31 44 35 20 20 20 20 20 2d 20 40 4a omi21D5 - @J d9c0: 20 24 55 27 5c 22 54 20 29 5f 47 42 20 50 2f 41 $U'\"T )_GB P/A d9d0: 4f 5c 37 22 3d 46 37 39 4b 37 2b 5f 3f 4b 48 5c O\7"=F79K7+_?KH\ d9e0: 5f 46 58 48 5f 44 57 32 26 4a 46 50 52 25 24 2f _FXH_DW2&JFPR%$/ d9f0: 46 24 20 2d 20 43 6f 70 79 72 69 67 68 74 20 32 F$ - Copyright 2 da00: 30 31 30 20 4e 56 49 44 49 41 20 43 6f 72 70 6f 010 NVIDIA Corpo da10: 72 61 74 69 6f 6e 20 41 6c 6c 20 52 69 67 68 74 ration All Right da20: 73 20 52 65 73 65 72 76 65 64 2d 31 34 38 35 39 s Reserved-14859 da30: 37 34 35 36 39 38 35 28 52 29 8b 68 0a 02 55 53 7456985(R).h..US da40: 52 47 a0 0e 93 55 53 52 47 0b 4b 56 a4 4f 50 56 RG...USRG.KV.OPV da50: 4b a4 00 10 48 25 5c 2f 04 5f 53 42 5f 50 43 49 K...H%\/._SB_PCI da60: 30 50 45 47 5f 56 49 44 5f 08 4f 4d 50 52 0a 02 0PEG_VID_.OMPR.. da70: 08 48 44 41 53 0a 00 14 44 23 4e 56 4f 50 04 08 .HDAS...D#NVOP.. da80: 5f 54 5f 30 00 70 0d 2d 2d 2d 2d 2d 2d 2d 20 4e _T_0.p.------- N da90: 56 20 4f 50 54 49 4d 55 53 20 44 53 4d 20 2d 2d V OPTIMUS DSM -- daa0: 2d 2d 2d 2d 2d 2d 00 5b 31 a0 0d 92 93 69 0b 00 ------.[1....i.. dab0: 01 a4 0c 01 00 00 80 70 99 6a 00 5f 54 5f 30 a0 .......p.j._T_0. dac0: 41 07 93 5f 54 5f 30 0a 00 70 11 07 0a 04 00 00 A.._T_0..p...... dad0: 00 00 60 78 0a 00 0a 08 62 61 79 0a 01 62 62 7d ..`x....bay..bb} dae0: 83 88 60 61 00 62 88 60 61 00 78 0a 1a 0a 08 62 ..`a.b.`a.x....b daf0: 61 79 0a 01 62 62 7d 83 88 60 61 00 62 88 60 61 ay..bb}..`a.b.`a db00: 00 78 0a 1b 0a 08 62 61 79 0a 01 62 62 7d 83 88 .x....bay..bb}.. db10: 60 61 00 62 88 60 61 00 78 0a 10 0a 08 62 61 79 `a.b.`a.x....bay db20: 0a 01 62 62 7d 83 88 60 61 00 62 88 60 61 00 a4 ..bb}..`a.b.`a.. db30: 60 a1 44 17 a0 4c 0a 93 5f 54 5f 30 0a 1a 5b 13 `.D..L.._T_0..[. db40: 6b 0a 18 0a 02 4f 50 43 45 5b 13 6b 0a 00 0a 01 k....OPCE[.k.... db50: 46 4c 43 48 a0 10 99 46 4c 43 48 00 70 4f 50 43 FLCH...FLCH.pOPC db60: 45 4f 4d 50 52 70 11 07 0a 04 00 00 00 00 60 5b EOMPRp........`[ db70: 13 60 0a 00 0a 01 4f 50 45 4e 5b 13 60 0a 03 0a .`....OPEN[.`... db80: 02 43 47 43 53 5b 13 60 0a 06 0a 01 53 48 50 43 .CGCS[.`....SHPC db90: 5b 13 60 0a 18 0a 03 44 47 50 43 5b 13 60 0a 1b [.`....DGPC[.`.. dba0: 0a 02 48 44 41 43 70 01 4f 50 45 4e 70 01 53 48 ..HDACp.OPENp.SH dbb0: 50 43 70 01 44 47 50 43 a0 1f 5c 2f 05 5f 53 42 PCp.DGPC..\/._SB dbc0: 5f 50 43 49 30 50 45 47 5f 56 49 44 5f 5f 53 54 _PCI0PEG_VID__ST dbd0: 41 70 0a 03 43 47 43 53 70 0a 02 48 44 41 43 a4 Ap..CGCSp..HDAC. dbe0: 60 a1 44 0c a0 4d 09 93 5f 54 5f 30 0a 1b 5b 13 `.D..M.._T_0..[. dbf0: 6b 0a 00 0a 01 48 44 41 55 5b 13 6b 0a 01 0a 01 k....HDAU[.k.... dc00: 48 44 41 52 70 11 07 0a 04 00 00 00 00 60 5b 13 HDARp........`[. dc10: 60 0a 02 0a 02 52 51 47 53 5b 13 60 0a 04 0a 01 `....RQGS[.`.... dc20: 50 57 53 54 70 01 50 57 53 54 a0 3a 90 5c 2f 05 PWSTp.PWST.:.\/. dc30: 5f 53 42 5f 50 43 49 30 4c 50 43 5f 45 43 5f 5f _SB_PCI0LPC_EC__ dc40: 44 4f 43 44 5c 2f 06 5f 53 42 5f 50 43 49 30 4c DOCD\/._SB_PCI0L dc50: 50 43 5f 45 43 5f 5f 41 43 5f 5f 5f 50 53 52 70 PC_EC__AC___PSRp dc60: 01 52 51 47 53 a1 07 70 00 52 51 47 53 a0 12 99 .RQGS..p.RQGS... dc70: 48 44 41 52 00 70 99 48 44 41 55 00 48 44 41 53 HDAR.p.HDAU.HDAS dc80: a4 60 a1 23 a0 21 93 5f 54 5f 30 0a 10 a4 5c 2f .`.#.!._T_0...\/ dc90: 05 5f 53 42 5f 50 43 49 30 50 45 47 5f 56 49 44 ._SB_PCI0PEG_VID dca0: 5f 47 4f 42 54 6b a4 0c 02 00 00 80 10 37 5c 00 _GOBTk.......7\. dcb0: 14 33 43 4d 50 42 02 70 87 68 61 a0 09 92 93 61 .3CMPB.p.ha....a dcc0: 87 69 a4 0a 00 70 0a 00 60 a2 17 95 60 61 a0 10 .i...p..`...`a.. dcd0: 92 93 83 88 68 60 00 83 88 69 60 00 a4 0a 00 75 ....h`...i`....u dce0: 60 a4 0a 01 10 49 21 5c 2f 04 5f 53 42 5f 50 43 `....I!\/._SB_PC dcf0: 49 30 50 45 47 5f 56 49 44 5f 08 43 50 50 43 0a I0PEG_VID_.CPPC. dd00: 00 14 4c 1f 4e 56 50 53 04 08 5f 54 5f 31 00 08 ..L.NVPS.._T_1.. dd10: 5f 54 5f 30 00 70 0d 2d 2d 2d 2d 2d 2d 2d 20 4e _T_0.p.------- N dd20: 56 20 47 50 53 20 44 53 4d 20 2d 2d 2d 2d 2d 2d V GPS DSM ------ dd30: 2d 2d 00 5b 31 70 99 6a 00 5f 54 5f 30 a0 46 05 --.[1p.j._T_0.F. dd40: 93 5f 54 5f 30 0a 00 70 11 0b 0a 08 00 00 00 00 ._T_0..p........ dd50: 00 00 00 00 60 70 11 0a 0a 07 00 20 21 22 23 2a ....`p..... !"#* dd60: ff 63 70 00 64 70 83 88 63 64 00 65 a2 25 92 93 .cp.dp..cd.e.%.. dd70: 65 0a ff 78 65 0a 08 62 61 79 0a 01 62 62 7d 83 e..xe..bay..bb}. dd80: 88 60 61 00 62 88 60 61 00 75 64 70 83 88 63 64 .`a.b.`a.udp..cd dd90: 00 65 a4 60 a1 40 16 a0 36 93 5f 54 5f 30 0a 20 .e.`.@..6._T_0. dda0: 70 11 07 0a 04 00 00 00 00 60 5b 13 60 0a 18 0a p........`[.`... ddb0: 01 43 55 49 54 5b 13 60 0a 1e 0a 01 50 53 45 52 .CUIT[.`....PSER ddc0: 70 01 43 55 49 54 70 01 50 53 45 52 a4 60 a1 46 p.CUITp.PSER.`.F ddd0: 12 a0 18 93 5f 54 5f 30 0a 21 a4 5c 2f 03 5f 50 ...._T_0.!.\/._P dde0: 52 5f 43 50 55 30 5f 50 53 53 a1 4a 10 a0 2c 93 R_CPU0_PSS.J..,. ddf0: 5f 54 5f 30 0a 22 5b 13 6b 0a 00 0a 08 50 50 43 _T_0."[.k....PPC de00: 56 70 50 50 43 56 43 50 50 43 5c 50 4e 54 46 0a VpPPCVCPPC\PNTF. de10: 80 a4 11 07 0a 04 00 00 00 00 a1 4a 0d a0 1e 93 ...........J.... de20: 5f 54 5f 30 0a 23 70 11 07 0a 04 00 00 00 00 60 _T_0.#p........` de30: 70 43 50 50 43 88 60 0a 00 00 a4 60 a1 48 0b a0 pCPPC.`....`.H.. de40: 45 0b 93 5f 54 5f 30 0a 2a 70 11 27 0a 24 00 02 E.._T_0.*p.'.$.. de50: 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 ................ de60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ de70: 00 00 60 70 83 88 6b 0a 00 00 88 60 0a 00 00 5b ..`p..k....`...[ de80: 13 6b 0a 00 0a 04 51 54 59 50 70 99 51 54 59 50 .k....QTYPp.QTYP de90: 00 5f 54 5f 31 a0 2e 93 5f 54 5f 31 0a 00 70 5c ._T_1..._T_1..p\ dea0: 2f 05 5f 53 42 5f 50 43 49 30 4c 50 43 5f 45 43 /._SB_PCI0LPC_EC deb0: 5f 5f 54 4d 50 30 61 70 7b 61 0a ff 00 88 60 0a __TMP0ap{a....`. dec0: 0c 00 a4 60 a1 30 a0 1a 93 5f 54 5f 31 0a 01 70 ...`.0..._T_1..p ded0: 0a 08 88 60 0a 0d 00 70 0a 03 88 60 0a 01 00 a4 ...`...p...`.... dee0: 60 a1 13 a0 11 93 5f 54 5f 31 0a 02 70 00 88 60 `....._T_1..p..` def0: 0a 01 00 a4 60 a4 11 07 0a 04 02 00 00 80 10 2c ....`.........., df00: 5c 2f 06 5f 53 42 5f 50 43 49 30 45 48 43 32 55 \/._SB_PCI0EHC2U df10: 52 54 48 55 52 4d 48 50 52 54 43 08 5f 45 4a 44 RTHURMHPRTC._EJD df20: 0d 5c 5f 53 42 2e 47 44 43 4b 00 10 36 5c 2f 06 .\_SB.GDCK..6\/. df30: 5f 53 42 5f 50 43 49 30 45 48 43 31 55 52 54 48 _SB_PCI0EHC1URTH df40: 55 52 4d 48 50 52 54 35 08 5f 45 4a 44 0d 5c 5f URMHPRT5._EJD.\_ df50: 53 42 2e 50 43 49 30 2e 45 58 50 33 2e 53 4c 4f SB.PCI0.EXP3.SLO df60: 54 00 10 38 5c 2f 04 5f 53 42 5f 50 43 49 30 45 T..8\/._SB_PCI0E df70: 58 50 33 53 4c 4f 54 08 5f 45 4a 44 0d 5c 5f 53 XP3SLOT._EJD.\_S df80: 42 2e 50 43 49 30 2e 45 48 43 31 2e 55 52 54 48 B.PCI0.EHC1.URTH df90: 2e 55 52 4d 48 2e 50 52 54 35 00 08 5c 5f 53 30 .URMH.PRT5..\_S0 dfa0: 5f 12 0a 04 0a 00 0a 00 0a 00 0a 00 08 5c 5f 53 _............\_S dfb0: 33 5f 12 0a 04 0a 05 0a 05 0a 00 0a 00 08 5c 5f 3_............\_ dfc0: 53 34 5f 12 0a 04 0a 06 0a 06 0a 00 0a 00 08 5c S4_............\ dfd0: 5f 53 35 5f 12 0a 04 0a 07 0a 07 0a 00 0a 00 14 _S5_............ dfe0: 45 26 5c 5f 50 54 53 01 70 0a 01 60 a0 0c 93 68 E&\_PTS.p..`...h dff0: 5c 53 50 53 5f 70 0a 00 60 a0 0f 91 93 68 0a 00 \SPS_p..`....h.. e000: 92 95 68 0a 06 70 0a 00 60 a0 4b 23 60 70 68 5c ..h..p..`.K#`ph\ e010: 53 50 53 5f 5c 2f 06 5f 53 42 5f 50 43 49 30 4c SPS_\/._SB_PCI0L e020: 50 43 5f 45 43 5f 5f 48 4b 45 59 4d 48 4b 45 0a PC_EC__HKEYMHKE. e030: 00 a0 1f 5c 2f 05 5f 53 42 5f 50 43 49 30 4c 50 ...\/._SB_PCI0LP e040: 43 5f 45 43 5f 5f 4b 42 4c 54 5c 55 43 4d 53 0a C_EC__KBLT\UCMS. e050: 0d a0 47 05 93 68 0a 01 70 5c 2f 05 5f 53 42 5f ..G..h..p\/._SB_ e060: 50 43 49 30 4c 50 43 5f 45 43 5f 5f 48 46 4e 49 PCI0LPC_EC__HFNI e070: 5c 46 4e 49 44 70 0a 00 5c 2f 05 5f 53 42 5f 50 \FNIDp..\/._SB_P e080: 43 49 30 4c 50 43 5f 45 43 5f 5f 48 46 4e 49 70 CI0LPC_EC__HFNIp e090: 0a 00 5c 2f 05 5f 53 42 5f 50 43 49 30 4c 50 43 ..\/._SB_PCI0LPC e0a0: 5f 45 43 5f 5f 48 46 53 50 a0 3a 93 68 0a 03 5c _EC__HFSP.:.h..\ e0b0: 56 56 50 44 0a 03 5c 54 52 41 50 70 5c 2f 06 5f VVPD..\TRAPp\/._ e0c0: 53 42 5f 50 43 49 30 4c 50 43 5f 45 43 5f 5f 41 SB_PCI0LPC_EC__A e0d0: 43 5f 5f 5f 50 53 52 5c 41 43 53 54 70 0a 00 5c C___PSR\ACSTp..\ e0e0: 41 50 49 4e a0 46 04 93 68 0a 04 a0 0b 56 44 53 APIN.F..h....VDS e0f0: 50 70 00 53 48 41 31 5c 2f 03 5f 53 42 5f 53 4c Pp.SHA1\/._SB_SL e100: 50 42 5f 50 53 57 0a 00 5c 54 52 41 50 5c 2f 05 PB_PSW..\TRAP\/. e110: 5f 53 42 5f 50 43 49 30 4c 50 43 5f 54 50 4d 5f _SB_PCI0LPC_TPM_ e120: 43 4d 4f 52 5c 41 57 4f 4e 0a 04 a0 28 93 68 0a CMOR\AWON...(.h. e130: 05 5c 54 52 41 50 5c 2f 05 5f 53 42 5f 50 43 49 .\TRAP\/._SB_PCI e140: 30 4c 50 43 5f 54 50 4d 5f 43 4d 4f 52 5c 41 57 0LPC_TPM_CMOR\AW e150: 4f 4e 0a 05 5c 2f 05 5f 53 42 5f 50 43 49 30 4c ON..\/._SB_PCI0L e160: 50 43 5f 45 43 5f 5f 42 50 54 53 68 a0 20 92 95 PC_EC__BPTSh. .. e170: 68 0a 04 70 0a 00 5c 2f 05 5f 53 42 5f 50 43 49 h..p..\/._SB_PCI e180: 30 4c 50 43 5f 45 43 5f 5f 48 57 4c 42 a1 1b 70 0LPC_EC__HWLB..p e190: 0a 01 5c 2f 05 5f 53 42 5f 50 43 49 30 4c 50 43 ..\/._SB_PCI0LPC e1a0: 5f 45 43 5f 5f 48 57 4c 42 a0 4f 07 92 93 68 0a _EC__HWLB.O...h. e1b0: 05 70 0a 01 5c 2f 05 5f 53 42 5f 50 43 49 30 4c .p..\/._SB_PCI0L e1c0: 50 43 5f 45 43 5f 5f 48 43 4d 55 5c 2f 03 5f 53 PC_EC__HCMU\/._S e1d0: 42 5f 47 44 43 4b 47 50 54 53 68 70 5c 2f 04 5f B_GDCKGPTShp\/._ e1e0: 53 42 5f 50 43 49 30 45 58 50 31 50 44 53 5f 5c SB_PCI0EXP1PDS_\ e1f0: 2f 04 5f 53 42 5f 50 43 49 30 45 58 50 31 50 44 /._SB_PCI0EXP1PD e200: 53 46 70 5c 2f 04 5f 53 42 5f 50 43 49 30 45 58 SFp\/._SB_PCI0EX e210: 50 33 50 44 53 5f 5c 2f 04 5f 53 42 5f 50 43 49 P3PDS_\/._SB_PCI e220: 30 45 58 50 33 50 44 53 46 5c 2f 06 5f 53 42 5f 0EXP3PDSF\/._SB_ e230: 50 43 49 30 4c 50 43 5f 45 43 5f 5f 48 4b 45 59 PCI0LPC_EC__HKEY e240: 57 47 50 53 68 08 57 41 4b 49 12 06 02 0a 00 0a WGPSh.WAKI...... e250: 00 14 45 85 5c 5f 57 41 4b 01 a0 10 91 93 68 0a ..E.\_WAK.....h. e260: 00 92 95 68 0a 05 a4 57 41 4b 49 70 0a 00 5c 53 ...h...WAKIp..\S e270: 50 53 5f 70 0a 00 5c 2f 05 5f 53 42 5f 50 43 49 PS_p..\/._SB_PCI e280: 30 4c 50 43 5f 45 43 5f 5f 48 43 4d 55 5c 2f 05 0LPC_EC__HCMU\/. e290: 5f 53 42 5f 50 43 49 30 4c 50 43 5f 45 43 5f 5f _SB_PCI0LPC_EC__ e2a0: 45 56 4e 54 0a 01 5c 2f 06 5f 53 42 5f 50 43 49 EVNT..\/._SB_PCI e2b0: 30 4c 50 43 5f 45 43 5f 5f 48 4b 45 59 4d 48 4b 0LPC_EC__HKEYMHK e2c0: 45 0a 01 5c 2f 05 5f 53 42 5f 50 43 49 30 4c 50 E..\/._SB_PCI0LP e2d0: 43 5f 45 43 5f 5f 46 4e 53 54 5c 55 43 4d 53 0a C_EC__FNST\UCMS. e2e0: 0d 70 0a 00 5c 4c 49 44 42 a0 22 93 68 0a 01 70 .p..\LIDB.".h..p e2f0: 5c 2f 05 5f 53 42 5f 50 43 49 30 4c 50 43 5f 45 \/._SB_PCI0LPC_E e300: 43 5f 5f 48 46 4e 49 5c 46 4e 49 44 a0 4e 3b 93 C__HFNI\FNID.N;. e310: 68 0a 03 5c 4e 56 53 53 0a 00 70 5c 2f 06 5f 53 h..\NVSS..p\/._S e320: 42 5f 50 43 49 30 4c 50 43 5f 45 43 5f 5f 41 43 B_PCI0LPC_EC__AC e330: 5f 5f 5f 50 53 52 5c 50 57 52 53 5c 2f 05 5f 53 ___PSR\PWRS\/._S e340: 42 5f 50 43 49 30 4c 50 43 5f 45 43 5f 5f 4c 45 B_PCI0LPC_EC__LE e350: 44 5f 0a 08 0a 80 a0 0d 5c 4f 53 43 34 5c 50 4e D_......\OSC4\PN e360: 54 46 0a 81 a0 3a 92 93 5c 41 43 53 54 5c 2f 06 TF...:..\ACST\/. e370: 5f 53 42 5f 50 43 49 30 4c 50 43 5f 45 43 5f 5f _SB_PCI0LPC_EC__ e380: 41 43 5f 5f 5f 50 53 52 5c 2f 05 5f 53 42 5f 50 AC___PSR\/._SB_P e390: 43 49 30 4c 50 43 5f 45 43 5f 5f 41 54 4d 43 a0 CI0LPC_EC__ATMC. e3a0: 44 0c 5c 53 43 52 4d 70 0a 07 5c 2f 05 5f 53 42 D.\SCRMp..\/._SB e3b0: 5f 50 43 49 30 4c 50 43 5f 45 43 5f 5f 48 46 53 _PCI0LPC_EC__HFS e3c0: 50 a0 42 0a 5c 4d 54 41 55 70 0b e8 03 62 a2 20 P.B.\MTAUp...b. e3d0: 90 5c 2f 05 5f 53 42 5f 50 43 49 30 4c 50 43 5f .\/._SB_PCI0LPC_ e3e0: 45 43 5f 5f 50 49 42 53 62 5b 22 0a 01 76 62 a0 EC__PIBSb["..vb. e3f0: 44 07 62 70 0a 01 5c 2f 05 5f 53 42 5f 50 43 49 D.bp..\/._SB_PCI e400: 30 4c 50 43 5f 45 43 5f 5f 50 4c 53 4c 70 5c 4d 0LPC_EC__PLSLp\M e410: 54 41 55 5c 2f 05 5f 53 42 5f 50 43 49 30 4c 50 TAU\/._SB_PCI0LP e420: 43 5f 45 43 5f 5f 50 4c 54 55 70 5c 50 4c 31 4c C_EC__PLTUp\PL1L e430: 5c 2f 05 5f 53 42 5f 50 43 49 30 4c 50 43 5f 45 \/._SB_PCI0LPC_E e440: 43 5f 5f 50 4c 4c 53 70 5c 50 4c 31 4d 5c 2f 05 C__PLLSp\PL1M\/. e450: 5f 53 42 5f 50 43 49 30 4c 50 43 5f 45 43 5f 5f _SB_PCI0LPC_EC__ e460: 50 4c 4d 53 a0 45 04 93 5c 49 53 57 4b 0a 01 a0 PLMS.E..\ISWK... e470: 3a 5c 2f 06 5f 53 42 5f 50 43 49 30 4c 50 43 5f :\/._SB_PCI0LPC_ e480: 45 43 5f 5f 48 4b 45 59 44 48 4b 43 5c 2f 06 5f EC__HKEYDHKC\/._ e490: 53 42 5f 50 43 49 30 4c 50 43 5f 45 43 5f 5f 48 SB_PCI0LPC_EC__H e4a0: 4b 45 59 4d 48 4b 51 0b 70 60 a0 4d 07 5c 56 49 KEYMHKQ.p`.M.\VI e4b0: 47 44 5c 2f 04 5f 53 42 5f 50 43 49 30 56 49 44 GD\/._SB_PCI0VID e4c0: 5f 47 4c 49 53 5c 2f 03 5f 53 42 5f 4c 49 44 5f _GLIS\/._SB_LID_ e4d0: 5f 4c 49 44 70 5c 2f 03 5f 53 42 5f 47 44 43 4b _LIDp\/._SB_GDCK e4e0: 47 47 49 44 60 a0 1f 91 93 60 0a 00 93 60 0a 01 GGID`....`...`.. e4f0: 5c 2f 04 5f 53 42 5f 50 43 49 30 56 49 44 5f 47 \/._SB_PCI0VID_G e500: 44 43 53 0a 01 a1 16 5c 2f 04 5f 53 42 5f 50 43 DCS....\/._SB_PC e510: 49 30 56 49 44 5f 47 44 43 53 0a 00 a0 0b 5c 57 I0VID_GDCS....\W e520: 56 49 53 5c 56 42 54 44 a1 49 07 a0 46 07 5c 57 VIS\VBTD.I..F.\W e530: 56 49 53 5c 2f 04 5f 53 42 5f 50 43 49 30 56 49 VIS\/._SB_PCI0VI e540: 44 5f 47 4c 49 53 5c 2f 03 5f 53 42 5f 4c 49 44 D_GLIS\/._SB_LID e550: 5f 5f 4c 49 44 70 5c 2f 03 5f 53 42 5f 47 44 43 __LIDp\/._SB_GDC e560: 4b 47 47 49 44 60 a0 1f 91 93 60 0a 00 93 60 0a KGGID`....`...`. e570: 01 5c 2f 04 5f 53 42 5f 50 43 49 30 56 49 44 5f .\/._SB_PCI0VID_ e580: 47 44 43 53 0a 01 a1 16 5c 2f 04 5f 53 42 5f 50 GDCS....\/._SB_P e590: 43 49 30 56 49 44 5f 47 44 43 53 0a 00 5c 56 42 CI0VID_GDCS..\VB e5a0: 54 44 5c 56 43 4d 53 0a 01 5c 2f 03 5f 53 42 5f TD\VCMS..\/._SB_ e5b0: 4c 49 44 5f 5f 4c 49 44 5c 41 57 4f 4e 0a 00 a0 LID__LID\AWON... e5c0: 1b 5c 43 4d 50 52 86 5c 2e 5f 53 42 5f 53 4c 50 .\CMPR.\._SB_SLP e5d0: 42 0a 02 70 0a 00 5c 43 4d 50 52 a0 4f 0e 5c 55 B..p..\CMPR.O.\U e5e0: 53 42 52 a0 47 0e 91 93 5c 58 48 43 4d 0a 02 93 SBR.G...\XHCM... e5f0: 5c 58 48 43 4d 0a 03 70 0a 00 60 7b 5c 2f 04 5f \XHCM..p..`{\/._ e600: 53 42 5f 50 43 49 30 58 48 43 49 50 52 33 5f 0c SB_PCI0XHCIPR3_. e610: f0 ff ff ff 60 7d 60 5c 58 48 50 4d 60 a0 1b 93 ....`}`\XHPM`... e620: 5c 2f 03 5f 53 42 5f 47 44 43 4b 47 47 49 44 0a \/._SB_GDCKGGID. e630: 05 7b 60 0c fb ff ff ff 60 7b 60 5c 2f 04 5f 53 .{`.....`{`\/._S e640: 42 5f 50 43 49 30 58 48 43 49 50 52 33 4d 5c 2f B_PCI0XHCIPR3M\/ e650: 04 5f 53 42 5f 50 43 49 30 58 48 43 49 50 52 33 ._SB_PCI0XHCIPR3 e660: 5f 70 0a 00 60 7b 5c 2f 04 5f 53 42 5f 50 43 49 _p..`{\/._SB_PCI e670: 30 58 48 43 49 50 52 32 5f 0c f0 ff ff ff 60 7d 0XHCIPR2_.....`} e680: 60 5c 58 48 50 4d 60 a0 1b 93 5c 2f 03 5f 53 42 `\XHPM`...\/._SB e690: 5f 47 44 43 4b 47 47 49 44 0a 05 7b 60 0c fb ff _GDCKGGID..{`... e6a0: ff ff 60 7b 60 5c 2f 04 5f 53 42 5f 50 43 49 30 ..`{`\/._SB_PCI0 e6b0: 58 48 43 49 50 52 32 4d 5c 2f 04 5f 53 42 5f 50 XHCIPR2M\/._SB_P e6c0: 43 49 30 58 48 43 49 50 52 32 5f a0 4a 1a 93 68 CI0XHCIPR2_.J..h e6d0: 0a 04 5c 4e 56 53 53 0a 00 70 0a 00 5c 2f 05 5f ..\NVSS..p..\/._ e6e0: 53 42 5f 50 43 49 30 4c 50 43 5f 45 43 5f 5f 48 SB_PCI0LPC_EC__H e6f0: 53 50 41 70 5c 2f 06 5f 53 42 5f 50 43 49 30 4c SPAp\/._SB_PCI0L e700: 50 43 5f 45 43 5f 5f 41 43 5f 5f 5f 50 53 52 5c PC_EC__AC___PSR\ e710: 50 57 52 53 a0 0d 5c 4f 53 43 34 5c 50 4e 54 46 PWRS..\OSC4\PNTF e720: 0a 81 5c 2f 05 5f 53 42 5f 50 43 49 30 4c 50 43 ..\/._SB_PCI0LPC e730: 5f 45 43 5f 5f 41 54 4d 43 a0 44 0c 5c 53 43 52 _EC__ATMC.D.\SCR e740: 4d 70 0a 07 5c 2f 05 5f 53 42 5f 50 43 49 30 4c Mp..\/._SB_PCI0L e750: 50 43 5f 45 43 5f 5f 48 46 53 50 a0 42 0a 5c 4d PC_EC__HFSP.B.\M e760: 54 41 55 70 0b e8 03 62 a2 20 90 5c 2f 05 5f 53 TAUp...b. .\/._S e770: 42 5f 50 43 49 30 4c 50 43 5f 45 43 5f 5f 50 49 B_PCI0LPC_EC__PI e780: 42 53 62 5b 22 0a 01 76 62 a0 44 07 62 70 0a 01 BSb["..vb.D.bp.. e790: 5c 2f 05 5f 53 42 5f 50 43 49 30 4c 50 43 5f 45 \/._SB_PCI0LPC_E e7a0: 43 5f 5f 50 4c 53 4c 70 5c 4d 54 41 55 5c 2f 05 C__PLSLp\MTAU\/. e7b0: 5f 53 42 5f 50 43 49 30 4c 50 43 5f 45 43 5f 5f _SB_PCI0LPC_EC__ e7c0: 50 4c 54 55 70 5c 50 4c 31 4c 5c 2f 05 5f 53 42 PLTUp\PL1L\/._SB e7d0: 5f 50 43 49 30 4c 50 43 5f 45 43 5f 5f 50 4c 4c _PCI0LPC_EC__PLL e7e0: 53 70 5c 50 4c 31 4d 5c 2f 05 5f 53 42 5f 50 43 Sp\PL1M\/._SB_PC e7f0: 49 30 4c 50 43 5f 45 43 5f 5f 50 4c 4d 53 a0 31 I0LPC_EC__PLMS.1 e800: 92 5c 4e 42 43 46 a0 1d 5c 56 49 47 44 5c 2f 05 .\NBCF..\VIGD\/. e810: 5f 53 42 5f 50 43 49 30 4c 50 43 5f 45 43 5f 5f _SB_PCI0LPC_EC__ e820: 42 52 4e 53 a1 0b 5c 56 42 52 43 5c 42 52 4c 56 BRNS..\VBRC\BRLV e830: a0 45 04 93 5c 49 53 57 4b 0a 02 a0 3a 5c 2f 06 .E..\ISWK...:\/. e840: 5f 53 42 5f 50 43 49 30 4c 50 43 5f 45 43 5f 5f _SB_PCI0LPC_EC__ e850: 48 4b 45 59 44 48 4b 43 5c 2f 06 5f 53 42 5f 50 HKEYDHKC\/._SB_P e860: 43 49 30 4c 50 43 5f 45 43 5f 5f 48 4b 45 59 4d CI0LPC_EC__HKEYM e870: 48 4b 51 0b 80 60 a0 43 06 7f 5c 2f 04 5f 53 42 HKQ..`.C..\/._SB e880: 5f 50 43 49 30 45 58 50 31 50 44 53 5f 5c 2f 04 _PCI0EXP1PDS_\/. e890: 5f 53 42 5f 50 43 49 30 45 58 50 31 50 44 53 46 _SB_PCI0EXP1PDSF e8a0: 00 70 5c 2f 04 5f 53 42 5f 50 43 49 30 45 58 50 .p\/._SB_PCI0EXP e8b0: 31 50 44 53 5f 5c 2f 04 5f 53 42 5f 50 43 49 30 1PDS_\/._SB_PCI0 e8c0: 45 58 50 31 50 44 53 46 86 5c 2f 03 5f 53 42 5f EXP1PDSF.\/._SB_ e8d0: 50 43 49 30 45 58 50 31 0a 00 a0 43 06 7f 5c 2f PCI0EXP1...C..\/ e8e0: 04 5f 53 42 5f 50 43 49 30 45 58 50 33 50 44 53 ._SB_PCI0EXP3PDS e8f0: 5f 5c 2f 04 5f 53 42 5f 50 43 49 30 45 58 50 33 _\/._SB_PCI0EXP3 e900: 50 44 53 46 00 70 5c 2f 04 5f 53 42 5f 50 43 49 PDSF.p\/._SB_PCI e910: 30 45 58 50 33 50 44 53 5f 5c 2f 04 5f 53 42 5f 0EXP3PDS_\/._SB_ e920: 50 43 49 30 45 58 50 33 50 44 53 46 86 5c 2f 03 PCI0EXP3PDSF.\/. e930: 5f 53 42 5f 50 43 49 30 45 58 50 33 0a 00 5c 2f _SB_PCI0EXP3..\/ e940: 05 5f 53 42 5f 50 43 49 30 4c 50 43 5f 45 43 5f ._SB_PCI0LPC_EC_ e950: 5f 42 41 54 57 68 5c 2f 03 5f 53 42 5f 47 44 43 _BATWh\/._SB_GDC e960: 4b 47 57 41 4b 68 5c 2f 05 5f 53 42 5f 50 43 49 KGWAKh\/._SB_PCI e970: 30 4c 50 43 5f 45 43 5f 5f 42 57 41 4b 68 5c 2f 0LPC_EC__BWAKh\/ e980: 06 5f 53 42 5f 50 43 49 30 4c 50 43 5f 45 43 5f ._SB_PCI0LPC_EC_ e990: 5f 48 4b 45 59 57 47 57 4b 68 86 5c 2e 5f 54 5a _HKEYWGWKh.\._TZ e9a0: 5f 54 48 4d 30 0a 80 5c 56 53 4c 44 5c 2f 03 5f _THM0..\VSLD\/._ e9b0: 53 42 5f 4c 49 44 5f 5f 4c 49 44 a0 28 5c 56 49 SB_LID__LID.(\VI e9c0: 47 44 5c 2f 04 5f 53 42 5f 50 43 49 30 56 49 44 GD\/._SB_PCI0VID e9d0: 5f 47 4c 49 53 5c 2f 03 5f 53 42 5f 4c 49 44 5f _GLIS\/._SB_LID_ e9e0: 5f 4c 49 44 a1 2a a0 28 5c 57 56 49 53 5c 2f 04 _LID.*.(\WVIS\/. e9f0: 5f 53 42 5f 50 43 49 30 56 49 44 5f 47 4c 49 53 _SB_PCI0VID_GLIS ea00: 5c 2f 03 5f 53 42 5f 4c 49 44 5f 5f 4c 49 44 a0 \/._SB_LID__LID. ea10: 39 95 68 0a 04 a0 33 7b 5c 52 52 42 46 0a 02 00 9.h...3{\RRBF... ea20: 79 68 0a 08 60 70 7d 0b 13 20 60 00 60 5c 2f 06 yh..`p}.. `.`\/. ea30: 5f 53 42 5f 50 43 49 30 4c 50 43 5f 45 43 5f 5f _SB_PCI0LPC_EC__ ea40: 48 4b 45 59 4d 48 4b 51 60 a0 41 05 93 68 0a 04 HKEYMHKQ`.A..h.. ea50: 70 0a 00 60 70 5c 43 53 55 4d 0a 00 61 a0 14 92 p..`p\CSUM..a... ea60: 93 61 5c 43 48 4b 43 70 0a 01 60 70 61 5c 43 48 .a\CHKCp..`pa\CH ea70: 4b 43 70 5c 43 53 55 4d 0a 01 61 a0 14 92 93 61 KCp\CSUM..a....a ea80: 5c 43 48 4b 45 70 0a 01 60 70 61 5c 43 48 4b 45 \CHKEp..`pa\CHKE ea90: a0 0a 60 86 5c 5f 53 42 5f 0a 00 70 00 5c 52 52 ..`.\_SB_..p.\RR eaa0: 42 46 a4 57 41 4b 49 10 47 21 5c 5f 53 49 5f 14 BF.WAKI.G!\_SI_. eab0: 4f 20 5f 53 53 54 01 a0 3b 93 68 0a 00 5c 2f 05 O _SST..;.h..\/. eac0: 5f 53 42 5f 50 43 49 30 4c 50 43 5f 45 43 5f 5f _SB_PCI0LPC_EC__ ead0: 4c 45 44 5f 0a 00 0a 00 5c 2f 05 5f 53 42 5f 50 LED_....\/._SB_P eae0: 43 49 30 4c 50 43 5f 45 43 5f 5f 4c 45 44 5f 0a CI0LPC_EC__LED_. eaf0: 07 0a 00 a0 42 06 93 68 0a 01 a0 25 91 5c 53 50 ....B..h...%.\SP eb00: 53 5f 5c 57 4e 54 46 5c 2f 05 5f 53 42 5f 50 43 S_\WNTF\/._SB_PC eb10: 49 30 4c 50 43 5f 45 43 5f 5f 42 45 45 50 0a 05 I0LPC_EC__BEEP.. eb20: 5c 2f 05 5f 53 42 5f 50 43 49 30 4c 50 43 5f 45 \/._SB_PCI0LPC_E eb30: 43 5f 5f 4c 45 44 5f 0a 00 0a 80 5c 2f 05 5f 53 C__LED_....\/._S eb40: 42 5f 50 43 49 30 4c 50 43 5f 45 43 5f 5f 4c 45 B_PCI0LPC_EC__LE eb50: 44 5f 0a 07 0a 00 a0 3b 93 68 0a 02 5c 2f 05 5f D_.....;.h..\/._ eb60: 53 42 5f 50 43 49 30 4c 50 43 5f 45 43 5f 5f 4c SB_PCI0LPC_EC__L eb70: 45 44 5f 0a 00 0a c0 5c 2f 05 5f 53 42 5f 50 43 ED_....\/._SB_PC eb80: 49 30 4c 50 43 5f 45 43 5f 5f 4c 45 44 5f 0a 07 I0LPC_EC__LED_.. eb90: 0a c0 a0 46 0d 93 68 0a 03 a0 22 94 5c 53 50 53 ...F..h...".\SPS eba0: 5f 0a 03 5c 2f 05 5f 53 42 5f 50 43 49 30 4c 50 _..\/._SB_PCI0LP ebb0: 43 5f 45 43 5f 5f 42 45 45 50 0a 07 a1 4f 04 a0 C_EC__BEEP...O.. ebc0: 31 93 5c 53 50 53 5f 0a 03 5c 2f 05 5f 53 42 5f 1.\SPS_..\/._SB_ ebd0: 50 43 49 30 4c 50 43 5f 45 43 5f 5f 42 45 45 50 PCI0LPC_EC__BEEP ebe0: 0a 03 5c 2f 03 5f 53 42 5f 47 44 43 4b 50 45 4a ..\/._SB_GDCKPEJ ebf0: 33 a1 1a 5c 2f 05 5f 53 42 5f 50 43 49 30 4c 50 3..\/._SB_PCI0LP ec00: 43 5f 45 43 5f 5f 42 45 45 50 0a 04 a0 09 93 5c C_EC__BEEP.....\ ec10: 53 50 53 5f 0a 03 a1 1c 5c 2f 05 5f 53 42 5f 50 SPS_....\/._SB_P ec20: 43 49 30 4c 50 43 5f 45 43 5f 5f 4c 45 44 5f 0a CI0LPC_EC__LED_. ec30: 00 0a 80 5c 2f 05 5f 53 42 5f 50 43 49 30 4c 50 ...\/._SB_PCI0LP ec40: 43 5f 45 43 5f 5f 4c 45 44 5f 0a 07 0a c0 5c 2f C_EC__LED_....\/ ec50: 05 5f 53 42 5f 50 43 49 30 4c 50 43 5f 45 43 5f ._SB_PCI0LPC_EC_ ec60: 5f 4c 45 44 5f 0a 00 0a c0 a0 45 05 93 68 0a 04 _LED_.....E..h.. ec70: 5c 2f 05 5f 53 42 5f 50 43 49 30 4c 50 43 5f 45 \/._SB_PCI0LPC_E ec80: 43 5f 5f 42 45 45 50 0a 03 5c 2f 05 5f 53 42 5f C__BEEP..\/._SB_ ec90: 50 43 49 30 4c 50 43 5f 45 43 5f 5f 4c 45 44 5f PCI0LPC_EC__LED_ eca0: 0a 07 0a c0 5c 2f 05 5f 53 42 5f 50 43 49 30 4c ....\/._SB_PCI0L ecb0: 50 43 5f 45 43 5f 5f 4c 45 44 5f 0a 00 0a c0 10 PC_EC__LED_..... ecc0: 41 3e 5c 5f 47 50 45 14 48 09 5f 4c 31 44 00 70 A>\_GPE.H._L1D.p ecd0: 5c 2f 05 5f 53 42 5f 50 43 49 30 4c 50 43 5f 45 \/._SB_PCI0LPC_E ece0: 43 5f 5f 48 57 41 4b 60 70 60 5c 52 52 42 46 5b C__HWAK`p`\RRBF[ ecf0: 22 0a 0a a0 06 7b 60 0a 02 00 a0 13 7b 60 0a 04 "....{`.....{`.. ed00: 00 86 5c 2e 5f 53 42 5f 4c 49 44 5f 0a 02 a0 22 ..\._SB_LID_..." ed10: 7b 60 0a 08 00 5c 2f 03 5f 53 42 5f 47 44 43 4b {`...\/._SB_GDCK ed20: 47 47 50 45 86 5c 2e 5f 53 42 5f 53 4c 50 42 0a GGPE.\._SB_SLPB. ed30: 02 a0 13 7b 60 0a 10 00 86 5c 2e 5f 53 42 5f 53 ...{`....\._SB_S ed40: 4c 50 42 0a 02 a0 06 7b 60 0a 40 00 a0 13 7b 60 LPB....{`.@...{` ed50: 0a 80 00 86 5c 2e 5f 53 42 5f 53 4c 50 42 0a 02 ....\._SB_SLPB.. ed60: 14 43 10 5f 4c 30 39 00 a0 43 05 5c 2f 04 5f 53 .C._L09..C.\/._S ed70: 42 5f 50 43 49 30 45 58 50 31 50 53 5f 5f 70 0a B_PCI0EXP1PS__p. ed80: 01 5c 2f 04 5f 53 42 5f 50 43 49 30 45 58 50 31 .\/._SB_PCI0EXP1 ed90: 50 53 5f 5f 70 0a 01 5c 2f 04 5f 53 42 5f 50 43 PS__p..\/._SB_PC eda0: 49 30 45 58 50 31 50 4d 43 53 86 5c 2f 03 5f 53 I0EXP1PMCS.\/._S edb0: 42 5f 50 43 49 30 45 58 50 31 0a 02 a0 43 05 5c B_PCI0EXP1...C.\ edc0: 2f 04 5f 53 42 5f 50 43 49 30 45 58 50 32 50 53 /._SB_PCI0EXP2PS edd0: 5f 5f 70 0a 01 5c 2f 04 5f 53 42 5f 50 43 49 30 __p..\/._SB_PCI0 ede0: 45 58 50 32 50 53 5f 5f 70 0a 01 5c 2f 04 5f 53 EXP2PS__p..\/._S edf0: 42 5f 50 43 49 30 45 58 50 32 50 4d 43 53 86 5c B_PCI0EXP2PMCS.\ ee00: 2f 03 5f 53 42 5f 50 43 49 30 45 58 50 32 0a 02 /._SB_PCI0EXP2.. ee10: a0 43 05 5c 2f 04 5f 53 42 5f 50 43 49 30 45 58 .C.\/._SB_PCI0EX ee20: 50 33 50 53 5f 5f 70 0a 01 5c 2f 04 5f 53 42 5f P3PS__p..\/._SB_ ee30: 50 43 49 30 45 58 50 33 50 53 5f 5f 70 0a 01 5c PCI0EXP3PS__p..\ ee40: 2f 04 5f 53 42 5f 50 43 49 30 45 58 50 33 50 4d /._SB_PCI0EXP3PM ee50: 43 53 86 5c 2f 03 5f 53 42 5f 50 43 49 30 45 58 CS.\/._SB_PCI0EX ee60: 50 33 0a 02 14 41 13 5f 4c 30 31 00 a0 44 09 5c P3...A._L01..D.\ ee70: 2f 04 5f 53 42 5f 50 43 49 30 45 58 50 31 48 50 /._SB_PCI0EXP1HP ee80: 43 53 5b 22 0a 64 70 0a 01 5c 2f 04 5f 53 42 5f CS[".dp..\/._SB_ ee90: 50 43 49 30 45 58 50 31 48 50 43 53 a0 44 06 5c PCI0EXP1HPCS.D.\ eea0: 2f 04 5f 53 42 5f 50 43 49 30 45 58 50 31 50 44 /._SB_PCI0EXP1PD eeb0: 43 5f 70 0a 01 5c 2f 04 5f 53 42 5f 50 43 49 30 C_p..\/._SB_PCI0 eec0: 45 58 50 31 50 44 43 5f 70 5c 2f 04 5f 53 42 5f EXP1PDC_p\/._SB_ eed0: 50 43 49 30 45 58 50 31 50 44 53 5f 5c 2f 04 5f PCI0EXP1PDS_\/._ eee0: 53 42 5f 50 43 49 30 45 58 50 31 50 44 53 46 86 SB_PCI0EXP1PDSF. eef0: 5c 2f 03 5f 53 42 5f 50 43 49 30 45 58 50 31 0a \/._SB_PCI0EXP1. ef00: 00 a0 44 09 5c 2f 04 5f 53 42 5f 50 43 49 30 45 ..D.\/._SB_PCI0E ef10: 58 50 33 48 50 43 53 5b 22 0a 64 70 0a 01 5c 2f XP3HPCS[".dp..\/ ef20: 04 5f 53 42 5f 50 43 49 30 45 58 50 33 48 50 43 ._SB_PCI0EXP3HPC ef30: 53 a0 44 06 5c 2f 04 5f 53 42 5f 50 43 49 30 45 S.D.\/._SB_PCI0E ef40: 58 50 33 50 44 43 5f 70 0a 01 5c 2f 04 5f 53 42 XP3PDC_p..\/._SB ef50: 5f 50 43 49 30 45 58 50 33 50 44 43 5f 70 5c 2f _PCI0EXP3PDC_p\/ ef60: 04 5f 53 42 5f 50 43 49 30 45 58 50 33 50 44 53 ._SB_PCI0EXP3PDS ef70: 5f 5c 2f 04 5f 53 42 5f 50 43 49 30 45 58 50 33 _\/._SB_PCI0EXP3 ef80: 50 44 53 46 86 5c 2f 03 5f 53 42 5f 50 43 49 30 PDSF.\/._SB_PCI0 ef90: 45 58 50 33 0a 00 14 4b 04 5f 4c 30 32 00 70 0a EXP3...K._L02.p. efa0: 00 5c 2f 04 5f 53 42 5f 50 43 49 30 4c 50 43 5f .\/._SB_PCI0LPC_ efb0: 53 57 47 45 a0 2d 90 5c 43 57 55 45 7b 5c 53 57 SWGE.-.\CWUE{\SW efc0: 47 50 0a 02 00 7b 5c 53 57 47 50 80 0a 02 00 5c GP...{\SWGP....\ efd0: 53 57 47 50 a0 0d 5c 4f 53 43 34 5c 50 4e 54 46 SWGP..\OSC4\PNTF efe0: 0a 81 14 47 04 5f 4c 30 36 00 a0 27 5c 2f 04 5f ...G._L06..'\/._ eff0: 53 42 5f 50 43 49 30 56 49 44 5f 47 53 53 45 5c SB_PCI0VID_GSSE\ f000: 2f 04 5f 53 42 5f 50 43 49 30 56 49 44 5f 47 53 /._SB_PCI0VID_GS f010: 43 49 a1 17 70 0a 01 5c 2f 04 5f 53 42 5f 50 43 CI..p..\/._SB_PC f020: 49 30 4c 50 43 5f 53 43 49 53 14 46 07 5f 4c 31 I0LPC_SCIS.F._L1 f030: 36 00 a0 45 04 5c 2f 05 5f 53 42 5f 50 43 49 30 6..E.\/._SB_PCI0 f040: 50 45 47 5f 56 49 44 5f 49 53 4f 50 a0 2b 92 5c PEG_VID_ISOP.+.\ f050: 2f 04 5f 53 42 5f 50 43 49 30 4c 50 43 5f 58 48 /._SB_PCI0LPC_XH f060: 50 44 86 5c 2f 04 5f 53 42 5f 50 43 49 30 50 45 PD.\/._SB_PCI0PE f070: 47 5f 56 49 44 5f 0a 81 7f 5c 2f 04 5f 53 42 5f G_VID_...\/._SB_ f080: 50 43 49 30 4c 50 43 5f 58 48 50 44 0a 01 5c 2f PCI0LPC_XHPD..\/ f090: 04 5f 53 42 5f 50 43 49 30 4c 50 43 5f 58 48 50 ._SB_PCI0LPC_XHP f0a0: 44 10 4d 58 5c 2f 05 5f 53 42 5f 50 43 49 30 4c D.MX\/._SB_PCI0L f0b0: 50 43 5f 45 43 5f 5f 48 4b 45 59 14 48 0c 4d 48 PC_EC__HKEY.H.MH f0c0: 51 54 01 a0 4d 0b 90 5c 57 4e 54 46 5c 54 41 54 QT..M..\WNTF\TAT f0d0: 43 a0 0e 93 68 0a 00 70 5c 54 41 54 43 60 a4 60 C...h..p\TATC`.` f0e0: a1 40 0a a0 4b 04 93 68 0a 01 70 5c 54 44 46 41 .@..K..h..p\TDFA f0f0: 60 72 60 79 5c 54 44 54 41 0a 04 00 60 72 60 79 `r`y\TDTA...`r`y f100: 5c 54 44 46 44 0a 08 00 60 72 60 79 5c 54 44 54 \TDFD...`r`y\TDT f110: 44 0a 0c 00 60 72 60 79 5c 54 4e 46 54 0a 10 00 D...`r`y\TNFT... f120: 60 72 60 79 5c 54 4e 54 54 0a 14 00 60 a4 60 a1 `r`y\TNTT...`.`. f130: 41 05 a0 32 93 68 0a 02 70 5c 54 43 46 41 60 72 A..2.h..p\TCFA`r f140: 60 79 5c 54 43 54 41 0a 04 00 60 72 60 79 5c 54 `y\TCTA...`r`y\T f150: 43 46 44 0a 08 00 60 72 60 79 5c 54 43 54 44 0a CFD...`r`y\TCTD. f160: 0c 00 60 a4 60 a1 1b a0 05 93 68 0a 03 a1 13 a0 ..`.`.....h..... f170: 0e 93 68 0a 04 70 5c 54 41 54 57 60 a4 60 a1 02 ..h..p\TATW`.`.. f180: a3 a4 0a 00 14 46 25 4d 48 41 54 01 a0 4b 24 90 .....F%MHAT..K$. f190: 5c 57 4e 54 46 5c 54 41 54 43 70 7b 68 0a ff 00 \WNTF\TATCp{h... f1a0: 60 a0 0a 92 41 54 4d 56 60 a4 0a 00 70 7b 7a 68 `...ATMV`...p{zh f1b0: 0a 08 00 0a ff 00 60 a0 0a 92 41 54 4d 56 60 a4 ......`...ATMV`. f1c0: 0a 00 70 7b 68 0a 0f 00 5c 54 43 46 41 70 7b 7a ..p{h...\TCFAp{z f1d0: 68 0a 04 00 0a 0f 00 5c 54 43 54 41 70 7b 7a 68 h......\TCTAp{zh f1e0: 0a 08 00 0a 0f 00 5c 54 43 46 44 70 7b 7a 68 0a ......\TCFDp{zh. f1f0: 0c 00 0a 0f 00 5c 54 43 54 44 41 54 4d 43 a0 4e .....\TCTDATMC.N f200: 07 7b 5c 50 50 4d 46 0a 80 00 70 5c 46 54 50 53 .{\PPMF...p\FTPS f210: 61 a0 30 7b 68 0c 00 00 01 00 00 a0 1c 5c 2e 5f a.0{h........\._ f220: 50 52 5f 43 4c 56 4c 70 5c 43 54 44 50 5c 46 54 PR_CLVLp\CTDP\FT f230: 50 53 75 5c 46 54 50 53 a1 09 70 0a 01 5c 46 54 PSu\FTPS..p..\FT f240: 50 53 a1 22 a0 16 5c 2e 5f 50 52 5f 43 4c 56 4c PS."..\._PR_CLVL f250: 70 5c 43 54 44 50 5c 46 54 50 53 a1 09 70 0a 00 p\CTDP\FTPS..p.. f260: 5c 46 54 50 53 a0 17 7f 5c 46 54 50 53 61 00 a0 \FTPS...\FTPSa.. f270: 0d 5c 4f 53 50 58 5c 50 4e 54 46 0a 80 70 5c 53 .\OSPX\PNTF..p\S f280: 43 52 4d 62 a0 2b 7b 68 0c 00 00 04 00 00 70 0a CRMb.+{h......p. f290: 01 5c 53 43 52 4d 70 0a 07 5c 2f 05 5f 53 42 5f .\SCRMp..\/._SB_ f2a0: 50 43 49 30 4c 50 43 5f 45 43 5f 5f 48 46 53 50 PCI0LPC_EC__HFSP f2b0: a1 23 70 0a 00 5c 53 43 52 4d 70 0a 80 5c 2f 05 .#p..\SCRMp..\/. f2c0: 5f 53 42 5f 50 43 49 30 4c 50 43 5f 45 43 5f 5f _SB_PCI0LPC_EC__ f2d0: 48 46 53 50 70 5c 45 54 41 55 63 a0 11 7b 68 0c HFSPp\ETAUc..{h. f2e0: 00 00 02 00 00 70 0a 01 5c 45 54 41 55 a1 09 70 .....p..\ETAU..p f2f0: 0a 00 5c 45 54 41 55 a0 4d 0d 5c 4d 54 41 55 a0 ..\ETAU.M.\MTAU. f300: 45 0d 91 7f 5c 53 43 52 4d 62 00 7f 5c 45 54 41 E...\SCRMb..\ETA f310: 55 63 00 70 0b e8 03 64 a2 25 5c 2f 05 5f 53 42 Uc.p...d.%\/._SB f320: 5f 50 43 49 30 4c 50 43 5f 45 43 5f 5f 50 49 42 _PCI0LPC_EC__PIB f330: 53 5b 22 0a 01 76 64 a0 06 92 64 a4 0a 00 70 0a S["..vd...d...p. f340: 01 5c 2f 05 5f 53 42 5f 50 43 49 30 4c 50 43 5f .\/._SB_PCI0LPC_ f350: 45 43 5f 5f 50 4c 53 4c a0 26 7b 68 0c 00 00 06 EC__PLSL.&{h.... f360: 00 00 70 5c 4d 54 41 55 5c 2f 05 5f 53 42 5f 50 ..p\MTAU\/._SB_P f370: 43 49 30 4c 50 43 5f 45 43 5f 5f 50 4c 54 55 a1 CI0LPC_EC__PLTU. f380: 1b 70 0a 1c 5c 2f 05 5f 53 42 5f 50 43 49 30 4c .p..\/._SB_PCI0L f390: 50 43 5f 45 43 5f 5f 50 4c 54 55 70 5c 50 4c 31 PC_EC__PLTUp\PL1 f3a0: 4c 5c 2f 05 5f 53 42 5f 50 43 49 30 4c 50 43 5f L\/._SB_PCI0LPC_ f3b0: 45 43 5f 5f 50 4c 4c 53 70 5c 50 4c 31 4d 5c 2f EC__PLLSp\PL1M\/ f3c0: 05 5f 53 42 5f 50 43 49 30 4c 50 43 5f 45 43 5f ._SB_PCI0LPC_EC_ f3d0: 5f 50 4c 4d 53 a4 0a 01 a4 0a 00 14 42 12 4d 48 _PLMS.......B.MH f3e0: 47 54 01 a0 47 11 90 5c 57 4e 54 46 5c 54 41 54 GT..G..\WNTF\TAT f3f0: 43 70 0c 00 00 00 01 60 a0 12 7b 5c 50 50 4d 46 Cp.....`..{\PPMF f400: 0a 80 00 7d 60 0c 00 00 00 08 60 a0 0e 5c 53 43 ...}`.....`..\SC f410: 52 4d 7d 60 0c 00 00 00 10 60 a0 0e 5c 45 54 41 RM}`.....`..\ETA f420: 55 7d 60 0c 00 00 00 04 60 a0 14 95 5c 43 54 44 U}`.....`...\CTD f430: 50 5c 46 54 50 53 7d 60 0c 00 00 00 02 60 72 60 P\FTPS}`.....`r` f440: 79 5c 54 53 46 54 0a 10 00 60 72 60 79 5c 54 53 y\TSFT...`r`y\TS f450: 54 54 0a 14 00 60 70 7b 68 0a ff 00 61 a0 0f 92 TT...`p{h...a... f460: 41 54 4d 56 61 7d 60 0b ff ff 60 a4 60 70 7b 68 ATMVa}`...`.`p{h f470: 0a 0f 00 61 a0 0d 93 61 0a 00 72 60 5c 54 49 46 ...a...a..r`\TIF f480: 30 60 a1 26 a0 0d 93 61 0a 01 72 60 5c 54 49 46 0`.&...a..r`\TIF f490: 31 60 a1 16 a0 0d 93 61 0a 02 72 60 5c 54 49 46 1`.....a..r`\TIF f4a0: 32 60 a1 06 72 60 0a ff 60 70 7b 7a 68 0a 04 00 2`..r`..`p{zh... f4b0: 0a 0f 00 61 a0 11 93 61 0a 00 72 60 79 5c 54 49 ...a...a..r`y\TI f4c0: 54 30 0a 08 00 60 a1 32 a0 11 93 61 0a 01 72 60 T0...`.2...a..r` f4d0: 79 5c 54 49 54 31 0a 08 00 60 a1 1e a0 11 93 61 y\TIT1...`.....a f4e0: 0a 02 72 60 79 5c 54 49 54 32 0a 08 00 60 a1 0a ..r`y\TIT2...`.. f4f0: 72 60 79 0a ff 0a 08 00 60 a4 60 a4 0a 00 14 4c r`y.....`.`....L f500: 04 41 54 4d 56 01 70 7b 68 0a 0f 00 61 70 5c 54 .ATMV.p{h...ap\T f510: 4e 46 54 60 a0 08 92 95 61 60 a4 0a 00 70 7b 7a NFT`....a`...p{z f520: 68 0a 04 00 0a 0f 00 62 70 5c 54 4e 54 54 60 a0 h......bp\TNTT`. f530: 08 92 95 62 60 a4 0a 00 a0 0f 5c 54 41 54 4c a0 ...b`.....\TATL. f540: 08 7f 61 62 00 a4 0a 00 a4 0a 01 14 43 0e 4d 48 ..ab........C.MH f550: 43 54 01 70 0a 00 60 a0 14 5c 53 50 45 4e 70 5c CT.p..`..\SPENp\ f560: 4c 57 53 54 60 75 60 79 60 0a 08 60 70 0a 08 61 LWST`u`y`..`p..a f570: 79 61 0a 08 61 a0 4d 04 93 68 0c ff ff ff ff 7d ya..a.M..h.....} f580: 61 5c 54 50 43 52 61 a0 34 5c 53 50 45 4e 7d 60 a\TPCRa.4\SPEN}` f590: 5c 50 50 43 52 60 a0 12 92 90 5c 50 50 4d 46 0c \PPCR`....\PPMF. f5a0: 00 00 00 02 7d 61 0a 80 61 a0 12 92 90 5c 50 50 ....}a..a....\PP f5b0: 4d 46 0c 00 00 00 08 7d 61 0a 40 61 a1 06 7d 61 MF.....}a.@a..}a f5c0: 0a c0 61 a1 40 06 a0 35 90 5c 4f 53 50 58 5c 53 ..a.@..5.\OSPX\S f5d0: 50 45 4e 7b 68 0c 00 00 ff 00 62 7a 62 0a 10 62 PEN{h.....bzb..b f5e0: 7d 60 62 60 a0 17 7f 62 5c 50 50 43 52 00 70 62 }`b`...b\PPCR.pb f5f0: 5c 50 50 43 41 5c 50 4e 54 46 0a 80 a0 27 5c 57 \PPCA\PNTF...'\W f600: 56 49 53 7b 68 0a 1f 62 7d 61 62 61 a0 17 7f 62 VIS{h..b}aba...b f610: 5c 54 50 43 52 00 70 62 5c 54 50 43 41 5c 50 4e \TPCR.pb\TPCA\PN f620: 54 46 0a 82 79 60 0a 10 60 7d 60 61 60 a4 60 10 TF..y`..`}`a`.`. f630: 42 15 5c 2f 04 5f 53 42 5f 50 43 49 30 4c 50 43 B.\/._SB_PCI0LPC f640: 5f 45 43 5f 5f 14 4c 13 41 54 4d 43 00 a0 44 13 _EC__.L.ATMC..D. f650: 90 5c 57 4e 54 46 5c 54 41 54 43 a0 4f 06 48 50 .\WNTF\TATC.O.HP f660: 41 43 70 5c 54 43 46 41 60 70 5c 54 43 54 41 61 ACp\TCFA`p\TCTAa f670: 70 7d 79 61 0a 04 00 60 00 62 7f 62 41 54 4d 58 p}ya...`.b.bATMX f680: 63 70 62 41 54 4d 58 a0 1f 93 5c 54 43 54 41 0a cpbATMX...\TCTA. f690: 00 70 5c 54 43 52 30 5c 54 43 52 54 70 5c 54 50 .p\TCR0\TCRTp\TP f6a0: 53 30 5c 54 50 53 56 a1 23 a0 1f 93 5c 54 43 54 S0\TPSV.#...\TCT f6b0: 41 0a 01 70 5c 54 43 52 31 5c 54 43 52 54 70 5c A..p\TCR1\TCRTp\ f6c0: 54 50 53 31 5c 54 50 53 56 a1 01 a1 4b 06 70 5c TPS1\TPSV...K.p\ f6d0: 54 43 46 44 60 70 5c 54 43 54 44 61 70 7d 79 61 TCFD`p\TCTDap}ya f6e0: 0a 04 00 60 00 62 7f 62 41 54 4d 58 63 70 62 41 ...`.b.bATMXcpbA f6f0: 54 4d 58 a0 1f 93 5c 54 43 54 44 0a 00 70 5c 54 TMX...\TCTD..p\T f700: 43 52 30 5c 54 43 52 54 70 5c 54 50 53 30 5c 54 CR0\TCRTp\TPS0\T f710: 50 53 56 a1 23 a0 1f 93 5c 54 43 54 44 0a 01 70 PSV.#...\TCTD..p f720: 5c 54 43 52 31 5c 54 43 52 54 70 5c 54 50 53 31 \TCR1\TCRTp\TPS1 f730: 5c 54 50 53 56 a1 01 a0 3d 63 a0 3a 5c 2f 06 5f \TPSV...=c.:\/._ f740: 53 42 5f 50 43 49 30 4c 50 43 5f 45 43 5f 5f 48 SB_PCI0LPC_EC__H f750: 4b 45 59 44 48 4b 43 5c 2f 06 5f 53 42 5f 50 43 KEYDHKC\/._SB_PC f760: 49 30 4c 50 43 5f 45 43 5f 5f 48 4b 45 59 4d 48 I0LPC_EC__HKEYMH f770: 4b 51 0b 30 60 86 5c 2e 5f 54 5a 5f 54 48 4d 30 KQ.0`.\._TZ_THM0 f780: 0a 81 10 4b 14 5c 5f 54 5a 5f 5b 85 46 11 54 48 ...K.\_TZ_[.F.TH f790: 4d 30 14 0c 5f 43 52 54 00 a4 5c 54 43 52 54 14 M0.._CRT..\TCRT. f7a0: 42 10 5f 54 4d 50 00 a0 42 05 5c 48 38 44 52 70 B._TMP..B.\H8DRp f7b0: 5c 2f 05 5f 53 42 5f 50 43 49 30 4c 50 43 5f 45 \/._SB_PCI0LPC_E f7c0: 43 5f 5f 54 4d 50 30 60 70 5c 2f 05 5f 53 42 5f C__TMP0`p\/._SB_ f7d0: 50 43 49 30 4c 50 43 5f 45 43 5f 5f 54 53 4c 32 PCI0LPC_EC__TSL2 f7e0: 61 70 5c 2f 05 5f 53 42 5f 50 43 49 30 4c 50 43 ap\/._SB_PCI0LPC f7f0: 5f 45 43 5f 5f 54 53 4c 33 62 a1 24 70 5c 52 42 _EC__TSL3b.$p\RB f800: 45 43 0a 78 60 70 7b 5c 52 42 45 43 0a 8a 0a 7f EC.x`p{\RBEC.... f810: 00 61 70 7b 5c 52 42 45 43 0a 8b 0a 7f 00 62 a0 .ap{\RBEC.....b. f820: 09 93 60 0a 80 70 0a 30 60 7d 79 5c 2f 04 5f 53 ..`..p.0`}y\/._S f830: 42 5f 50 43 49 30 4c 50 43 5f 50 49 44 48 0a 02 B_PCI0LPC_PIDH.. f840: 00 5c 2f 04 5f 53 42 5f 50 43 49 30 4c 50 43 5f .\/._SB_PCI0LPC_ f850: 50 49 44 4c 63 a0 0a 95 63 0a 04 7b 62 0a 00 62 PIDLc...c..{b..b f860: a0 0e 62 5c 54 53 44 4c a4 43 32 4b 5f 0a 80 a0 ..b\TSDL.C2K_... f870: 2c 92 5c 2f 06 5f 53 42 5f 50 43 49 30 4c 50 43 ,.\/._SB_PCI0LPC f880: 5f 45 43 5f 5f 48 4b 45 59 44 48 4b 43 a0 0e 61 _EC__HKEYDHKC..a f890: 5c 54 53 44 4c a4 43 32 4b 5f 0a 80 a4 43 32 4b \TSDL.C2K_...C2K f8a0: 5f 60 14 2b 43 32 4b 5f 01 72 77 68 0a 0a 00 0b _`.+C2K_.rwh.... f8b0: ac 0a 60 a0 0c 92 94 60 0b ac 0a 70 0b b8 0b 60 ..`....`...p...` f8c0: a0 0b 94 60 0b ac 0f 70 0b b8 0b 60 a4 60 10 41 ...`...p...`.`.A f8d0: 0f 5c 2f 04 5f 53 42 5f 50 43 49 30 4c 50 43 5f .\/._SB_PCI0LPC_ f8e0: 45 43 5f 5f 14 4b 0d 5f 51 34 30 00 86 5c 2e 5f EC__.K._Q40..\._ f8f0: 54 5a 5f 54 48 4d 30 0a 80 a0 1f 5c 48 38 44 52 TZ_THM0....\H8DR f900: 70 5c 2f 05 5f 53 42 5f 50 43 49 30 4c 50 43 5f p\/._SB_PCI0LPC_ f910: 45 43 5f 5f 54 53 4c 32 61 a1 0e 70 7b 5c 52 42 EC__TSL2a..p{\RB f920: 45 43 0a 8a 0a 7f 00 61 a0 3d 5c 2f 06 5f 53 42 EC.....a.=\/._SB f930: 5f 50 43 49 30 4c 50 43 5f 45 43 5f 5f 48 4b 45 _PCI0LPC_EC__HKE f940: 59 44 48 4b 43 a0 20 61 5c 2f 06 5f 53 42 5f 50 YDHKC. a\/._SB_P f950: 43 49 30 4c 50 43 5f 45 43 5f 5f 48 4b 45 59 4d CI0LPC_EC__HKEYM f960: 48 4b 51 0b 22 60 a0 06 56 49 47 44 a3 a1 06 5c HKQ."`..VIGD...\ f970: 56 54 48 52 a0 4b 04 7b 5c 50 50 4d 46 0a 01 00 VTHR.K.{\PPMF... f980: a0 0d 5c 4f 53 50 58 5c 50 4e 54 46 0a 80 a1 31 ..\OSPX\PNTF...1 f990: 70 7b 5c 2f 05 5f 53 42 5f 50 43 49 30 4c 50 43 p{\/._SB_PCI0LPC f9a0: 5f 45 43 5f 5f 54 53 4c 30 0a 77 00 62 a0 09 62 _EC__TSL0.w.b..b f9b0: 5c 53 54 45 50 0a 09 a1 08 5c 53 54 45 50 0a 0a \STEP....\STEP.. f9c0: 08 47 50 49 43 0a 00 14 0d 5f 50 49 43 01 70 68 .GPIC...._PIC.ph f9d0: 5c 47 50 49 43 5b 80 53 4d 49 30 01 0a b2 0a 01 \GPIC[.SMI0..... f9e0: 5b 81 0b 53 4d 49 30 01 41 50 4d 43 08 5b 81 28 [..SMI0.APMC.[.( f9f0: 4d 4e 56 53 00 00 80 e0 07 43 4d 44 5f 08 45 52 MNVS.....CMD_.ER fa00: 52 5f 20 50 41 52 30 20 50 41 52 31 20 50 41 52 R_ PAR0 PAR1 PAR fa10: 32 20 50 41 52 33 20 5b 01 4d 53 4d 49 07 14 4d 2 PAR3 [.MSMI..M fa20: 05 53 4d 49 5f 05 5b 23 4d 53 4d 49 ff ff 70 68 .SMI_.[#MSMI..ph fa30: 43 4d 44 5f 70 0a 01 45 52 52 5f 70 69 50 41 52 CMD_p..ERR_piPAR fa40: 30 70 6a 50 41 52 31 70 6b 50 41 52 32 70 6c 50 0pjPAR1pkPAR2plP fa50: 41 52 33 70 0a f5 41 50 4d 43 a2 13 93 45 52 52 AR3p..APMC...ERR fa60: 5f 0a 01 5b 22 0a 01 70 0a f5 41 50 4d 43 70 50 _..["..p..APMCpP fa70: 41 52 30 60 5b 27 4d 53 4d 49 a4 60 14 14 52 50 AR0`['MSMI.`..RP fa80: 43 49 01 a4 53 4d 49 5f 0a 00 0a 00 68 0a 00 0a CI..SMI_....h... fa90: 00 14 12 57 50 43 49 02 53 4d 49 5f 0a 00 0a 01 ...WPCI.SMI_.... faa0: 68 69 0a 00 14 11 4d 50 43 49 03 53 4d 49 5f 0a hi....MPCI.SMI_. fab0: 00 0a 02 68 69 6a 14 14 52 42 45 43 01 a4 53 4d ...hij..RBEC..SM fac0: 49 5f 0a 00 0a 03 68 0a 00 0a 00 14 12 57 42 45 I_....h......WBE fad0: 43 02 53 4d 49 5f 0a 00 0a 04 68 69 0a 00 14 11 C.SMI_....hi.... fae0: 4d 42 45 43 03 53 4d 49 5f 0a 00 0a 05 68 69 6a MBEC.SMI_....hij faf0: 14 14 52 49 53 41 01 a4 53 4d 49 5f 0a 00 0a 06 ..RISA..SMI_.... fb00: 68 0a 00 0a 00 14 12 57 49 53 41 02 53 4d 49 5f h......WISA.SMI_ fb10: 0a 00 0a 07 68 69 0a 00 14 11 4d 49 53 41 03 53 ....hi....MISA.S fb20: 4d 49 5f 0a 00 0a 08 68 69 6a 14 14 56 45 58 50 MI_....hij..VEXP fb30: 00 53 4d 49 5f 0a 01 0a 00 0a 00 0a 00 0a 00 14 .SMI_........... fb40: 13 56 55 50 53 01 53 4d 49 5f 0a 01 0a 01 68 0a .VUPS.SMI_....h. fb50: 00 0a 00 14 12 56 53 44 53 02 53 4d 49 5f 0a 01 .....VSDS.SMI_.. fb60: 0a 02 68 69 0a 00 14 14 56 44 44 43 00 53 4d 49 ..hi....VDDC.SMI fb70: 5f 0a 01 0a 03 0a 00 0a 00 0a 00 14 13 56 56 50 _............VVP fb80: 44 01 53 4d 49 5f 0a 01 0a 04 68 0a 00 0a 00 14 D.SMI_....h..... fb90: 13 56 4e 52 53 01 53 4d 49 5f 0a 01 0a 05 68 0a .VNRS.SMI_....h. fba0: 00 0a 00 14 15 47 4c 50 57 00 a4 53 4d 49 5f 0a .....GLPW..SMI_. fbb0: 01 0a 06 0a 00 0a 00 0a 00 14 13 56 53 4c 44 01 ...........VSLD. fbc0: 53 4d 49 5f 0a 01 0a 07 68 0a 00 0a 00 14 14 56 SMI_....h......V fbd0: 45 56 54 01 a4 53 4d 49 5f 0a 01 0a 08 68 0a 00 EVT..SMI_....h.. fbe0: 0a 00 14 15 56 54 48 52 00 a4 53 4d 49 5f 0a 01 ....VTHR..SMI_.. fbf0: 0a 09 0a 00 0a 00 0a 00 14 13 56 42 52 43 01 53 ..........VBRC.S fc00: 4d 49 5f 0a 01 0a 0a 68 0a 00 0a 00 14 15 56 42 MI_....h......VB fc10: 52 47 00 a4 53 4d 49 5f 0a 01 0a 0e 0a 00 0a 00 RG..SMI_........ fc20: 0a 00 14 13 56 43 4d 53 02 a4 53 4d 49 5f 0a 01 ....VCMS..SMI_.. fc30: 0a 0b 68 69 0a 00 14 15 56 42 54 44 00 a4 53 4d ..hi....VBTD..SM fc40: 49 5f 0a 01 0a 0f 0a 00 0a 00 0a 00 14 13 56 48 I_............VH fc50: 59 42 02 a4 53 4d 49 5f 0a 01 0a 10 68 69 0a 00 YB..SMI_....hi.. fc60: 14 13 56 44 59 4e 02 a4 53 4d 49 5f 0a 01 0a 11 ..VDYN..SMI_.... fc70: 68 69 0a 00 14 14 55 43 4d 53 01 a4 53 4d 49 5f hi....UCMS..SMI_ fc80: 0a 02 68 0a 00 0a 00 0a 00 14 13 42 48 44 50 02 ..h........BHDP. fc90: a4 53 4d 49 5f 0a 03 0a 00 68 69 0a 00 14 13 53 .SMI_....hi....S fca0: 54 45 50 01 53 4d 49 5f 0a 04 68 0a 00 0a 00 0a TEP.SMI_..h..... fcb0: 00 14 14 54 52 41 50 00 53 4d 49 5f 0a 05 0a 00 ...TRAP.SMI_.... fcc0: 0a 00 0a 00 0a 00 14 14 43 42 52 49 00 53 4d 49 ........CBRI.SMI fcd0: 5f 0a 05 0a 01 0a 00 0a 00 0a 00 14 15 42 43 48 _............BCH fce0: 4b 00 a4 53 4d 49 5f 0a 05 0a 04 0a 00 0a 00 0a K..SMI_......... fcf0: 00 14 14 42 59 52 53 00 53 4d 49 5f 0a 05 0a 05 ...BYRS.SMI_.... fd00: 0a 00 0a 00 0a 00 14 14 4c 43 48 4b 01 a4 53 4d ........LCHK..SM fd10: 49 5f 0a 05 0a 06 68 0a 00 0a 00 14 13 41 53 53 I_....h......ASS fd20: 49 01 53 4d 49 5f 0a 05 0a 07 68 0a 00 0a 00 14 I.SMI_....h..... fd30: 15 44 45 53 53 00 a4 53 4d 49 5f 0a 05 0a 08 0a .DESS..SMI_..... fd40: 00 0a 00 0a 00 14 14 42 4c 54 48 01 a4 53 4d 49 .......BLTH..SMI fd50: 5f 0a 06 68 0a 00 0a 00 0a 00 14 13 50 52 53 4d _..h........PRSM fd60: 02 a4 53 4d 49 5f 0a 07 0a 00 68 69 0a 00 14 13 ..SMI_....hi.... fd70: 49 46 52 53 02 a4 53 4d 49 5f 0a 07 0a 01 68 69 IFRS..SMI_....hi fd80: 0a 00 14 14 54 44 50 43 01 a4 53 4d 49 5f 0a 07 ....TDPC..SMI_.. fd90: 0a 02 68 0a 00 0a 00 14 14 57 47 53 56 01 a4 53 ..h......WGSV..S fda0: 4d 49 5f 0a 09 68 0a 00 0a 00 0a 00 14 42 05 53 MI_..h.......B.S fdb0: 57 54 54 01 a0 4a 04 53 4d 49 5f 0a 0a 0a 02 68 WTT..J.SMI_....h fdc0: 0a 00 0a 00 a0 3a 5c 2f 06 5f 53 42 5f 50 43 49 .....:\/._SB_PCI fdd0: 30 4c 50 43 5f 45 43 5f 5f 48 4b 45 59 44 48 4b 0LPC_EC__HKEYDHK fde0: 43 5c 2f 06 5f 53 42 5f 50 43 49 30 4c 50 43 5f C\/._SB_PCI0LPC_ fdf0: 45 43 5f 5f 48 4b 45 59 4d 48 4b 51 0b 30 60 14 EC__HKEYMHKQ.0`. fe00: 15 54 53 44 4c 00 a4 53 4d 49 5f 0a 0a 0a 03 0a .TSDL..SMI_..... fe10: 00 0a 00 0a 00 14 13 54 50 48 59 01 53 4d 49 5f .......TPHY.SMI_ fe20: 0a 0c 68 0a 00 0a 00 0a 00 14 14 43 53 55 4d 01 ..h........CSUM. fe30: a4 53 4d 49 5f 0a 0e 68 0a 00 0a 00 0a 00 14 14 .SMI_..h........ fe40: 4e 56 53 53 01 a4 53 4d 49 5f 0a 0f 68 0a 00 0a NVSS..SMI_..h... fe50: 00 0a 00 14 13 57 4d 49 53 02 a4 53 4d 49 5f 0a .....WMIS..SMI_. fe60: 10 68 69 0a 00 0a 00 14 14 41 57 4f 4e 01 a4 53 .hi......AWON..S fe70: 4d 49 5f 0a 12 68 0a 00 0a 00 0a 00 14 2f 50 4d MI_..h......./PM fe80: 4f 4e 02 70 87 68 60 08 54 53 54 52 11 02 60 70 ON.p.h`.TSTR..`p fe90: 68 54 53 54 52 70 54 53 54 52 5c 44 42 47 53 53 hTSTRpTSTR\DBGSS fea0: 4d 49 5f 0a 11 69 0a 00 0a 00 0a 00 14 14 55 41 MI_..i........UA feb0: 57 53 01 a4 53 4d 49 5f 0a 13 68 0a 00 0a 00 0a WS..SMI_..h..... fec0: 00 14 14 42 46 57 43 01 a4 53 4d 49 5f 0a 14 0a ...BFWC..SMI_... fed0: 00 68 0a 00 0a 00 14 15 42 46 57 50 00 a4 53 4d .h......BFWP..SM fee0: 49 5f 0a 14 0a 01 0a 00 0a 00 0a 00 14 14 42 46 I_............BF fef0: 57 4c 00 53 4d 49 5f 0a 14 0a 02 0a 00 0a 00 0a WL.SMI_......... ff00: 00 14 13 42 46 57 47 01 53 4d 49 5f 0a 14 0a 03 ...BFWG.SMI_.... ff10: 68 0a 00 0a 00 14 13 42 44 4d 43 01 53 4d 49 5f h......BDMC.SMI_ ff20: 0a 14 0a 04 68 0a 00 0a 00 14 13 50 53 49 46 02 ....h......PSIF. ff30: a4 53 4d 49 5f 0a 14 0a 05 68 69 0a 00 14 13 46 .SMI_....hi....F ff40: 4e 53 43 02 a4 53 4d 49 5f 0a 14 0a 06 68 69 0a NSC..SMI_....hi. ff50: 00 14 13 41 55 44 43 02 a4 53 4d 49 5f 0a 14 0a ...AUDC..SMI_... ff60: 07 68 69 0a 00 14 13 53 59 42 43 02 a4 53 4d 49 .hi....SYBC..SMI ff70: 5f 0a 14 0a 08 68 69 0a 00 14 13 4b 42 4c 53 02 _....hi....KBLS. ff80: a4 53 4d 49 5f 0a 14 0a 09 68 69 0a 00 14 14 55 .SMI_....hi....U ff90: 42 49 53 01 a4 53 4d 49 5f 0a 15 0a 00 68 0a 00 BIS..SMI_....h.. ffa0: 0a 00 14 33 44 50 49 4f 02 a0 06 92 68 a4 0a 00 ...3DPIO....h... ffb0: a0 08 94 68 0a f0 a4 0a 00 a0 10 94 68 0a b4 a0 ...h........h... ffc0: 05 69 a4 0a 02 a1 04 a4 0a 01 a0 08 94 68 0a 78 .i...........h.x ffd0: a4 0a 03 a4 0a 04 14 3d 44 55 44 4d 02 a0 06 92 .......=DUDM.... ffe0: 69 a4 0a ff a0 08 94 68 0a 5a a4 0a 00 a0 08 94 i......h.Z...... fff0: 68 0a 3c a4 0a 01 a0 08 94 68 0a 2d a4 0a 02 a0 h.<......h.-.... 10000: 08 94 68 0a 1e a4 0a 03 a0 08 94 68 0a 14 a4 0a ..h........h.... 10010: 04 a4 0a 05 14 28 44 4d 44 4d 02 a0 05 69 a4 0a .....(DMDM...i.. 10020: 00 a0 06 92 68 a4 0a 00 a0 08 94 68 0a 96 a4 0a ....h......h.... 10030: 01 a0 08 94 68 0a 78 a4 0a 02 a4 0a 03 14 41 05 ....h.x.......A. 10040: 55 55 44 4d 02 a0 0a 92 7b 68 0a 04 00 a4 0a 00 UUDM....{h...... 10050: a0 09 7b 69 0a 20 00 a4 0a 14 a0 09 7b 69 0a 10 ..{i. ......{i.. 10060: 00 a4 0a 1e a0 09 7b 69 0a 08 00 a4 0a 2d a0 09 ......{i.....-.. 10070: 7b 69 0a 04 00 a4 0a 3c a0 09 7b 69 0a 02 00 a4 {i.....<..{i.... 10080: 0a 5a a0 09 7b 69 0a 01 00 a4 0a 78 a4 0a 00 14 .Z..{i.....x.... 10090: 48 04 55 4d 44 4d 04 a0 0a 92 7b 68 0a 02 00 a4 H.UMDM....{h.... 100a0: 0a 00 a0 08 7b 69 0a 04 00 a4 6b a0 14 7b 69 0a ....{i....k..{i. 100b0: 02 00 a0 09 92 94 6b 0a 78 a4 0a b4 a1 03 a4 6b ......k.x......k 100c0: a0 14 7b 6a 0a 04 00 a0 09 92 94 6b 0a b4 a4 0a ..{j.......k.... 100d0: f0 a1 03 a4 6b a4 0a 00 14 4b 04 55 50 49 4f 04 ....k....K.UPIO. 100e0: a0 16 92 7b 68 0a 02 00 a0 08 93 6a 0a 02 a4 0a ...{h......j.... 100f0: f0 a1 05 a4 0b 84 03 a0 08 7b 69 0a 02 00 a4 6b .........{i....k 10100: a0 14 7b 69 0a 01 00 a0 09 92 94 6b 0a 78 a4 0a ..{i.......k.x.. 10110: b4 a1 03 a4 6b a0 08 93 6a 0a 02 a4 0a f0 a1 05 ....k...j....... 10120: a4 0b 84 03 14 2d 46 44 4d 41 02 a0 0c 92 93 69 .....-FDMA.....i 10130: 0a ff a4 7d 69 0a 40 00 a0 10 92 95 68 0a 03 a4 ...}i.@.....h... 10140: 7d 74 68 0a 02 00 0a 20 00 a0 05 68 a4 0a 12 a4 }th.... ...h.... 10150: 0a 00 14 1f 46 50 49 4f 01 a0 0c 92 95 68 0a 03 ....FPIO.....h.. 10160: a4 7d 68 0a 08 00 a0 08 93 68 0a 01 a4 0a 01 a4 .}h......h...... 10170: 0a 00 14 4a 05 53 43 4d 50 02 70 87 68 60 a0 08 ...J.SCMP.p.h`.. 10180: 92 93 60 87 69 a4 01 75 60 08 53 54 52 31 11 02 ..`.i..u`.STR1.. 10190: 60 08 53 54 52 32 11 02 60 70 68 53 54 52 31 70 `.STR2..`phSTR1p 101a0: 69 53 54 52 32 70 00 61 a2 22 95 61 60 70 83 88 iSTR2p.a.".a`p.. 101b0: 53 54 52 31 61 00 62 70 83 88 53 54 52 32 61 00 STR1a.bp..STR2a. 101c0: 63 a0 07 92 93 62 63 a4 01 75 61 a4 00 08 53 50 c....bc..ua...SP 101d0: 53 5f 0a 00 08 4f 53 49 46 0a 00 08 57 39 38 46 S_...OSIF...W98F 101e0: 0a 00 08 57 4e 54 46 0a 00 08 57 58 50 46 0a 00 ...WNTF...WXPF.. 101f0: 08 57 56 49 53 0a 00 08 57 49 4e 37 0a 00 08 57 .WVIS...WIN7...W 10200: 53 50 56 0a 00 08 4c 4e 55 58 0a 00 08 48 38 44 SPV...LNUX...H8D 10210: 52 0a 00 08 4d 45 4d 58 0a 00 08 41 43 53 54 0a R...MEMX...ACST. 10220: 00 08 46 4d 42 4c 0a 01 08 46 44 54 50 0a 02 08 ..FMBL...FDTP... 10230: 46 55 50 53 0a 03 08 46 4e 49 44 0a 00 08 52 52 FUPS...FNID...RR 10240: 42 46 0a 00 08 4e 42 43 46 0a 00 08 41 50 49 4e BF...NBCF...APIN 10250: 0a 00 .. FACS @ 0xdaf5a000 0000: 46 41 43 53 40 00 00 00 00 a2 00 00 00 00 00 00 FACS@........... 0010: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0020: 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0030: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ FACP @ 0xdafe5000 0000: 46 41 43 50 f4 00 00 00 04 50 4c 45 4e 4f 56 4f FACP.....PLENOVO 0010: 54 50 2d 47 32 20 20 20 10 11 00 00 50 54 4c 20 TP-G2 ....PTL 0020: 02 00 00 00 00 a0 f5 da 00 80 fe da 00 02 09 00 ................ 0030: b2 00 00 00 f2 f1 00 f3 00 04 00 00 00 00 00 00 ................ 0040: 04 04 00 00 00 00 00 00 50 04 00 00 08 04 00 00 ........P....... 0050: 20 04 00 00 00 00 00 00 04 02 01 04 10 00 10 f4 ............... 0060: 65 00 e9 03 00 00 00 00 01 03 0d 00 32 13 00 00 e...........2... 0070: ad 46 00 00 01 08 00 00 f9 0c 00 00 00 00 00 00 .F.............. 0080: 06 00 00 00 00 a0 f5 da 00 00 00 00 00 80 fe da ................ 0090: 00 00 00 00 01 20 00 00 00 04 00 00 00 00 00 00 ..... .......... 00a0: 01 00 00 00 00 00 00 00 00 00 00 00 01 10 00 00 ................ 00b0: 04 04 00 00 00 00 00 00 01 00 00 00 00 00 00 00 ................ 00c0: 00 00 00 00 01 08 00 00 50 04 00 00 00 00 00 00 ........P....... 00d0: 01 20 00 00 08 04 00 00 00 00 00 00 01 80 00 00 . .............. 00e0: 20 04 00 00 00 00 00 00 01 00 00 00 00 00 00 00 ............... 00f0: 00 00 00 00 .... SLIC @ 0xdaffd000 0000: 53 4c 49 43 76 01 00 00 01 c3 4c 45 4e 4f 56 4f SLICv.....LENOVO 0010: 54 50 2d 47 32 20 20 20 10 11 00 00 50 54 4c 20 TP-G2 ....PTL 0020: 01 00 00 00 00 00 00 00 9c 00 00 00 06 02 00 00 ................ 0030: 00 24 00 00 52 53 41 31 00 04 00 00 01 00 01 00 .$..RSA1........ 0040: 69 16 4a 9f b1 4b 3a fb 80 20 aa af c4 f9 3e c1 i.J..K:.. ....>. 0050: 80 49 ee 6a 65 26 72 1e cd bf 5f 2f 96 d6 c0 0a .I.je&r..._/.... 0060: 92 f5 06 b5 00 b2 3b 29 02 e2 4c 8d c2 f2 bc 41 ......;)..L....A 0070: 77 9c 70 f0 f3 1b 09 d2 63 5a dc a8 83 f8 5e c9 w.p.....cZ....^. 0080: 15 95 f9 fa fd dc 05 b7 4d 67 7f 2d b3 84 33 20 ........Mg.-..3 0090: e1 d1 79 2a a7 6a 77 d1 b6 20 2a 76 42 c5 d5 e9 ..y*.jw.. *vB... 00a0: b6 43 40 55 44 c3 c9 37 99 5f 41 97 70 f3 d1 f6 .C@UD..7._A.p... 00b0: 07 ec 7b 1a 29 a1 c1 f1 91 fd 48 86 6e 3e ce cb ..{.).....H.n>.. 00c0: 01 00 00 00 b6 00 00 00 00 00 02 00 4c 45 4e 4f ............LENO 00d0: 56 4f 54 50 2d 47 32 20 20 20 57 49 4e 44 4f 57 VOTP-G2 WINDOW 00e0: 53 20 01 00 02 00 00 00 00 00 00 00 00 00 00 00 S .............. 00f0: 00 00 00 00 00 00 71 c8 5a 3a 03 f6 43 06 26 ce ......q.Z:..C.&. 0100: b3 7c 04 21 76 ba a3 79 1f 85 8c 96 94 0a 74 be .|.!v..y......t. 0110: bb a4 b8 35 ca fb eb ca 42 2e af 9b 7f 62 ad c9 ...5....B....b.. 0120: ab 2b 59 33 00 ca 3f 17 b4 5d f9 c9 36 38 bc 60 .+Y3..?..]..68.` 0130: 5d c2 ca 84 4a 9b 79 5c ed ad ec b9 93 76 8b 03 ]...J.y\.....v.. 0140: 4a 29 6d 09 29 8b ff c9 e4 aa 37 fa a4 42 57 b7 J)m.).....7..BW. 0150: 88 2e e1 6e 88 4d dc ab 1a e1 4c 26 f7 87 09 24 ...n.M....L&...$ 0160: 32 06 86 f6 5f 9b 9a 0b 3c 32 a0 eb e8 c6 4c f6 2..._...<2....L. 0170: b2 8d c3 65 27 23 ...e'# TCPA @ 0xdaffc000 0000: 54 43 50 41 32 00 00 00 02 f6 50 54 4c 00 00 00 TCPA2.....PTL... 0010: 4c 45 4e 4f 56 4f 00 00 00 00 04 06 4c 4e 56 4f LENOVO......LNVO 0020: 01 00 00 00 00 00 00 00 01 00 00 d0 f6 da 00 00 ................ 0030: 00 00 .. SSDT @ 0xdaffb000 0000: 53 53 44 54 49 02 00 00 01 1d 4c 45 4e 4f 56 4f SSDTI.....LENOVO 0010: 54 50 2d 53 53 44 54 32 00 02 00 00 49 4e 54 4c TP-SSDT2....INTL 0020: 09 11 06 20 10 0e 5c 00 14 0a 4b 4f 55 32 00 5b ... ..\...KOU2.[ 0030: 21 0a 64 10 4f 0c 5c 2f 04 5f 53 42 5f 50 43 49 !.d.O.\/._SB_PCI 0040: 30 56 49 44 5f 4c 43 44 30 14 26 5f 42 43 4c 00 0VID_LCD0.&_BCL. 0050: 70 0a 01 5c 4e 42 43 46 a4 5c 2f 05 5f 53 42 5f p..\NBCF.\/._SB_ 0060: 50 43 49 30 4c 50 43 5f 45 43 5f 5f 42 52 54 57 PCI0LPC_EC__BRTW 0070: 14 48 05 5f 42 43 4d 01 70 89 5c 2f 05 5f 53 42 .H._BCM.p.\/._SB 0080: 5f 50 43 49 30 4c 50 43 5f 45 43 5f 5f 42 52 54 _PCI0LPC_EC__BRT 0090: 57 01 68 00 0a 00 0a 02 60 a0 2f 92 93 60 ff 74 W.h.....`./..`.t 00a0: 60 0a 02 61 70 61 5c 42 52 4c 56 5c 2f 05 5f 53 `..apa\BRLV\/._S 00b0: 42 5f 50 43 49 30 4c 50 43 5f 45 43 5f 5f 42 52 B_PCI0LPC_EC__BR 00c0: 4e 53 5c 55 43 4d 53 0a 16 14 39 5f 42 51 43 00 NS\UCMS...9_BQC. 00d0: 70 5c 42 52 4c 56 60 72 60 0a 02 61 a0 22 92 94 p\BRLV`r`..a.".. 00e0: 61 0a 11 a4 83 88 5c 2f 05 5f 53 42 5f 50 43 49 a.....\/._SB_PCI 00f0: 30 4c 50 43 5f 45 43 5f 5f 42 52 54 57 61 00 a1 0LPC_EC__BRTWa.. 0100: 03 a4 00 10 45 14 5c 2f 05 5f 53 42 5f 50 43 49 ....E.\/._SB_PCI 0110: 30 50 45 47 5f 56 49 44 5f 4c 43 44 30 14 2d 5f 0PEG_VID_LCD0.-_ 0120: 42 43 4c 00 a0 0e 5c 57 56 49 53 70 0a 01 5c 4e BCL...\WVISp..\N 0130: 42 43 46 a4 5c 2f 05 5f 53 42 5f 50 43 49 30 4c BCF.\/._SB_PCI0L 0140: 50 43 5f 45 43 5f 5f 42 52 54 57 14 45 08 5f 42 PC_EC__BRTW.E._B 0150: 43 4d 01 a0 3a 90 92 93 5c 57 49 4e 37 0a 00 5c CM..:...\WIN7..\ 0160: 2f 05 5f 53 42 5f 50 43 49 30 50 45 47 5f 56 49 /._SB_PCI0PEG_VI 0170: 44 5f 49 53 4f 50 5c 2f 05 5f 53 42 5f 50 43 49 D_ISOP\/._SB_PCI 0180: 30 56 49 44 5f 4c 43 44 30 5f 42 43 4d 68 a1 42 0VID_LCD0_BCMh.B 0190: 04 a0 3f 5c 4e 42 43 46 70 89 5c 2f 05 5f 53 42 ..?\NBCFp.\/._SB 01a0: 5f 50 43 49 30 4c 50 43 5f 45 43 5f 5f 42 52 54 _PCI0LPC_EC__BRT 01b0: 57 01 68 00 0a 00 0a 02 60 a0 17 92 93 60 ff 74 W.h.....`....`.t 01c0: 60 0a 02 61 5c 56 42 52 43 61 70 61 5c 42 52 4c `..a\VBRCapa\BRL 01d0: 56 14 47 07 5f 42 51 43 00 a0 3a 90 92 93 5c 57 V.G._BQC..:...\W 01e0: 49 4e 37 0a 00 5c 2f 05 5f 53 42 5f 50 43 49 30 IN7..\/._SB_PCI0 01f0: 50 45 47 5f 56 49 44 5f 49 53 4f 50 a4 5c 2f 05 PEG_VID_ISOP.\/. 0200: 5f 53 42 5f 50 43 49 30 56 49 44 5f 4c 43 44 30 _SB_PCI0VID_LCD0 0210: 5f 42 51 43 a1 34 70 5c 42 52 4c 56 60 72 60 0a _BQC.4p\BRLV`r`. 0220: 02 61 a0 22 92 94 61 0a 11 a4 83 88 5c 2f 05 5f .a."..a.....\/._ 0230: 53 42 5f 50 43 49 30 4c 50 43 5f 45 43 5f 5f 42 SB_PCI0LPC_EC__B 0240: 52 54 57 61 00 a1 03 a4 00 RTWa..... SSDT @ 0xdaffa000 0000: 53 53 44 54 33 00 00 00 01 61 4c 45 4e 4f 56 4f SSDT3....aLENOVO 0010: 54 50 2d 53 53 44 54 31 00 01 00 00 49 4e 54 4c TP-SSDT1....INTL 0020: 09 11 06 20 10 0e 5c 00 14 0a 4b 4f 55 31 00 5b ... ..\...KOU1.[ 0030: 21 0a 64 !.d SSDT @ 0xdaff9000 0000: 53 53 44 54 a8 07 00 00 01 7b 4c 45 4e 4f 56 4f SSDT.....{LENOVO 0010: 53 61 74 61 41 68 63 69 00 10 00 00 49 4e 54 4c SataAhci....INTL 0020: 09 11 06 20 10 43 78 5c 2f 03 5f 53 42 5f 50 43 ... .Cx\/._SB_PC 0030: 49 30 53 41 54 31 5b 82 4a 13 50 52 54 30 08 44 I0SAT1[.J.PRT0.D 0040: 49 50 30 0a 00 08 48 44 54 46 11 11 0a 0e 02 00 IP0...HDTF...... 0050: 00 00 00 a0 ef 00 00 00 00 00 a0 f5 08 45 52 54 .............ERT 0060: 46 11 18 0a 15 02 00 00 00 00 a0 ef 00 00 00 00 F............... 0070: 00 a0 f5 5f 00 00 00 00 a0 ef 08 48 50 54 46 11 ..._.......HPTF. 0080: 18 0a 15 02 00 00 00 00 a0 ef 00 00 00 00 00 a0 ................ 0090: f5 10 03 00 00 00 a0 ef 08 48 58 54 46 11 1f 0a .........HXTF... 00a0: 1c 02 00 00 00 00 a0 ef 00 00 00 00 00 a0 f5 5f ..............._ 00b0: 00 00 00 00 a0 ef 10 03 00 00 00 a0 ef 08 44 44 ..............DD 00c0: 54 46 11 11 0a 0e 00 00 00 00 00 a0 e3 00 00 00 TF.............. 00d0: 00 00 a0 e3 8c 44 44 54 46 0a 01 44 54 41 54 8c .....DDTF..DTAT. 00e0: 44 44 54 46 0a 08 44 54 46 54 08 44 47 54 46 11 DDTF..DTFT.DGTF. 00f0: 18 0a 15 00 00 00 00 00 a0 e3 00 00 00 00 00 a0 ................ 0100: e3 10 03 00 00 00 a0 ef 8c 44 47 54 46 0a 01 47 .........DGTF..G 0110: 54 41 54 8c 44 47 54 46 0a 08 47 54 46 54 08 5f TAT.DGTF..GTFT._ 0120: 41 44 52 0b ff ff 14 34 5f 53 44 44 01 70 0a 00 ADR....4_SDD.p.. 0130: 44 49 50 30 a0 26 93 87 68 0b 00 02 8b 68 0a 9c DIP0.&..h....h.. 0140: 4d 30 37 38 a0 16 90 5c 44 50 50 30 7b 4d 30 37 M078...\DPP0{M07 0150: 38 0a 08 00 70 0a 01 44 49 50 30 14 16 5f 47 54 8...p..DIP0.._GT 0160: 46 00 a0 0a 44 49 50 30 a4 48 50 54 46 a4 48 44 F...DIP0.HPTF.HD 0170: 54 46 5b 82 4a 27 50 52 54 31 08 44 49 50 30 0a TF[.J'PRT1.DIP0. 0180: 00 08 48 44 54 46 11 11 0a 0e 02 00 00 00 00 a0 ..HDTF.......... 0190: ef 00 00 00 00 00 a0 f5 08 45 52 54 46 11 18 0a .........ERTF... 01a0: 15 02 00 00 00 00 a0 ef 00 00 00 00 00 a0 f5 5f ..............._ 01b0: 00 00 00 00 a0 ef 08 48 50 54 46 11 18 0a 15 02 .......HPTF..... 01c0: 00 00 00 00 a0 ef 00 00 00 00 00 a0 f5 10 03 00 ................ 01d0: 00 00 a0 ef 08 48 58 54 46 11 1f 0a 1c 02 00 00 .....HXTF....... 01e0: 00 00 a0 ef 00 00 00 00 00 a0 f5 5f 00 00 00 00 ..........._.... 01f0: a0 ef 10 03 00 00 00 a0 ef 08 44 44 54 46 11 11 ..........DDTF.. 0200: 0a 0e 00 00 00 00 00 a0 e3 00 00 00 00 00 a0 e3 ................ 0210: 8c 44 44 54 46 0a 01 44 54 41 54 8c 44 44 54 46 .DDTF..DTAT.DDTF 0220: 0a 08 44 54 46 54 08 44 47 54 46 11 18 0a 15 00 ..DTFT.DGTF..... 0230: 00 00 00 00 a0 e3 00 00 00 00 00 a0 e3 10 03 00 ................ 0240: 00 00 a0 ef 8c 44 47 54 46 0a 01 47 54 41 54 8c .....DGTF..GTAT. 0250: 44 47 54 46 0a 08 47 54 46 54 14 1e 5f 45 4a 30 DGTF..GTFT.._EJ0 0260: 01 5c 2f 05 5f 53 42 5f 50 43 49 30 4c 50 43 5f .\/._SB_PCI0LPC_ 0270: 45 43 5f 5f 42 45 4a 30 68 14 29 5f 53 54 41 00 EC__BEJ0h.)_STA. 0280: a0 1d 5c 2f 05 5f 53 42 5f 50 43 49 30 4c 50 43 ..\/._SB_PCI0LPC 0290: 5f 45 43 5f 5f 42 53 54 41 0a 01 a4 0a 0f a1 04 _EC__BSTA....... 02a0: a4 0a 00 08 5f 41 44 52 0c ff ff 01 00 14 4b 09 ...._ADR......K. 02b0: 5f 53 44 44 01 70 0a 00 44 49 50 30 a0 4c 08 93 _SDD.p..DIP0.L.. 02c0: 87 68 0b 00 02 8b 68 0a 9c 4d 30 37 38 8b 68 0a .h....h..M078.h. 02d0: 00 4d 30 30 30 a0 38 7b 4d 30 30 30 0b 00 c0 00 .M000.8{M000.... 02e0: a0 2d 92 7b 4d 30 30 30 0b 00 40 00 70 0a 03 5c .-.{M000..@.p..\ 02f0: 49 44 45 54 70 0a 03 5c 2f 05 5f 53 42 5f 50 43 IDETp..\/._SB_PC 0300: 49 30 4c 50 43 5f 45 43 5f 5f 42 44 45 56 a1 23 I0LPC_EC__BDEV.# 0310: 70 0a 06 5c 49 44 45 54 70 0a 06 5c 2f 05 5f 53 p..\IDETp..\/._S 0320: 42 5f 50 43 49 30 4c 50 43 5f 45 43 5f 5f 42 44 B_PCI0LPC_EC__BD 0330: 45 56 a0 16 90 5c 44 50 50 31 7b 4d 30 37 38 0a EV...\DPP1{M078. 0340: 08 00 70 0a 01 44 49 50 30 14 44 0a 5f 47 54 46 ..p..DIP0.D._GTF 0350: 00 70 5c 2f 03 5f 53 42 5f 47 44 43 4b 47 47 49 .p\/._SB_GDCKGGI 0360: 44 61 a0 15 93 61 0a 00 a0 0a 44 49 50 30 a4 48 Da...a....DIP0.H 0370: 50 54 46 a4 48 44 54 46 a1 45 07 70 5c 2f 05 5f PTF.HDTF.E.p\/._ 0380: 53 42 5f 50 43 49 30 4c 50 43 5f 45 43 5f 5f 42 SB_PCI0LPC_EC__B 0390: 47 49 44 0a 00 60 a0 09 93 60 0a 07 70 0a 06 60 GID..`...`..p..` 03a0: a0 15 93 60 0a 06 a0 0a 44 49 50 30 a4 48 50 54 ...`....DIP0.HPT 03b0: 46 a4 48 44 54 46 a0 1e 44 49 50 30 70 5c 43 44 F.HDTF..DIP0p\CD 03c0: 46 4c 47 54 46 54 70 5c 43 44 41 48 47 54 41 54 FLGTFTp\CDAHGTAT 03d0: a4 44 47 54 46 70 5c 43 44 46 4c 44 54 46 54 70 .DGTFp\CDFLDTFTp 03e0: 5c 43 44 41 48 44 54 41 54 a4 44 44 54 46 5b 82 \CDAHDTAT.DDTF[. 03f0: 4c 13 50 52 54 32 08 44 49 50 30 0a 00 08 48 44 L.PRT2.DIP0...HD 0400: 54 46 11 11 0a 0e 02 00 00 00 00 a0 ef 00 00 00 TF.............. 0410: 00 00 a0 f5 08 45 52 54 46 11 18 0a 15 02 00 00 .....ERTF....... 0420: 00 00 a0 ef 00 00 00 00 00 a0 f5 5f 00 00 00 00 ..........._.... 0430: a0 ef 08 48 50 54 46 11 18 0a 15 02 00 00 00 00 ...HPTF......... 0440: a0 ef 00 00 00 00 00 a0 f5 10 03 00 00 00 a0 ef ................ 0450: 08 48 58 54 46 11 1f 0a 1c 02 00 00 00 00 a0 ef .HXTF........... 0460: 00 00 00 00 00 a0 f5 5f 00 00 00 00 a0 ef 10 03 ......._........ 0470: 00 00 00 a0 ef 08 44 44 54 46 11 11 0a 0e 00 00 ......DDTF...... 0480: 00 00 00 a0 e3 00 00 00 00 00 a0 e3 8c 44 44 54 .............DDT 0490: 46 0a 01 44 54 41 54 8c 44 44 54 46 0a 08 44 54 F..DTAT.DDTF..DT 04a0: 46 54 08 44 47 54 46 11 18 0a 15 00 00 00 00 00 FT.DGTF......... 04b0: a0 e3 00 00 00 00 00 a0 e3 10 03 00 00 00 a0 ef ................ 04c0: 8c 44 47 54 46 0a 01 47 54 41 54 8c 44 47 54 46 .DGTF..GTAT.DGTF 04d0: 0a 08 47 54 46 54 08 5f 41 44 52 0c ff ff 02 00 ..GTFT._ADR..... 04e0: 14 34 5f 53 44 44 01 70 0a 00 44 49 50 30 a0 26 .4_SDD.p..DIP0.& 04f0: 93 87 68 0b 00 02 8b 68 0a 9c 4d 30 37 38 a0 16 ..h....h..M078.. 0500: 90 5c 44 50 50 32 7b 4d 30 37 38 0a 08 00 70 0a .\DPP2{M078...p. 0510: 01 44 49 50 30 14 16 5f 47 54 46 00 a0 0a 44 49 .DIP0.._GTF...DI 0520: 50 30 a4 48 50 54 46 a4 48 44 54 46 5b 82 4c 13 P0.HPTF.HDTF[.L. 0530: 50 52 54 33 08 44 49 50 30 0a 00 08 48 44 54 46 PRT3.DIP0...HDTF 0540: 11 11 0a 0e 02 00 00 00 00 a0 ef 00 00 00 00 00 ................ 0550: a0 f5 08 45 52 54 46 11 18 0a 15 02 00 00 00 00 ...ERTF......... 0560: a0 ef 00 00 00 00 00 a0 f5 5f 00 00 00 00 a0 ef ........._...... 0570: 08 48 50 54 46 11 18 0a 15 02 00 00 00 00 a0 ef .HPTF........... 0580: 00 00 00 00 00 a0 f5 10 03 00 00 00 a0 ef 08 48 ...............H 0590: 58 54 46 11 1f 0a 1c 02 00 00 00 00 a0 ef 00 00 XTF............. 05a0: 00 00 00 a0 f5 5f 00 00 00 00 a0 ef 10 03 00 00 ....._.......... 05b0: 00 a0 ef 08 44 44 54 46 11 11 0a 0e 00 00 00 00 ....DDTF........ 05c0: 00 a0 e3 00 00 00 00 00 a0 e3 8c 44 44 54 46 0a ...........DDTF. 05d0: 01 44 54 41 54 8c 44 44 54 46 0a 08 44 54 46 54 .DTAT.DDTF..DTFT 05e0: 08 44 47 54 46 11 18 0a 15 00 00 00 00 00 a0 e3 .DGTF........... 05f0: 00 00 00 00 00 a0 e3 10 03 00 00 00 a0 ef 8c 44 ...............D 0600: 47 54 46 0a 01 47 54 41 54 8c 44 47 54 46 0a 08 GTF..GTAT.DGTF.. 0610: 47 54 46 54 08 5f 41 44 52 0c ff ff 03 00 14 34 GTFT._ADR......4 0620: 5f 53 44 44 01 70 0a 00 44 49 50 30 a0 26 93 87 _SDD.p..DIP0.&.. 0630: 68 0b 00 02 8b 68 0a 9c 4d 30 37 38 a0 16 90 5c h....h..M078...\ 0640: 44 50 50 33 7b 4d 30 37 38 0a 08 00 70 0a 01 44 DPP3{M078...p..D 0650: 49 50 30 14 16 5f 47 54 46 00 a0 0a 44 49 50 30 IP0.._GTF...DIP0 0660: a4 48 50 54 46 a4 48 44 54 46 5b 82 4c 13 50 52 .HPTF.HDTF[.L.PR 0670: 54 34 08 44 49 50 30 0a 00 08 48 44 54 46 11 11 T4.DIP0...HDTF.. 0680: 0a 0e 02 00 00 00 00 a0 ef 00 00 00 00 00 a0 f5 ................ 0690: 08 45 52 54 46 11 18 0a 15 02 00 00 00 00 a0 ef .ERTF........... 06a0: 00 00 00 00 00 a0 f5 5f 00 00 00 00 a0 ef 08 48 ......._.......H 06b0: 50 54 46 11 18 0a 15 02 00 00 00 00 a0 ef 00 00 PTF............. 06c0: 00 00 00 a0 f5 10 03 00 00 00 a0 ef 08 48 58 54 .............HXT 06d0: 46 11 1f 0a 1c 02 00 00 00 00 a0 ef 00 00 00 00 F............... 06e0: 00 a0 f5 5f 00 00 00 00 a0 ef 10 03 00 00 00 a0 ..._............ 06f0: ef 08 44 44 54 46 11 11 0a 0e 00 00 00 00 00 a0 ..DDTF.......... 0700: e3 00 00 00 00 00 a0 e3 8c 44 44 54 46 0a 01 44 .........DDTF..D 0710: 54 41 54 8c 44 44 54 46 0a 08 44 54 46 54 08 44 TAT.DDTF..DTFT.D 0720: 47 54 46 11 18 0a 15 00 00 00 00 00 a0 e3 00 00 GTF............. 0730: 00 00 00 a0 e3 10 03 00 00 00 a0 ef 8c 44 47 54 .............DGT 0740: 46 0a 01 47 54 41 54 8c 44 47 54 46 0a 08 47 54 F..GTAT.DGTF..GT 0750: 46 54 08 5f 41 44 52 0c ff ff 04 00 14 34 5f 53 FT._ADR......4_S 0760: 44 44 01 70 0a 00 44 49 50 30 a0 26 93 87 68 0b DD.p..DIP0.&..h. 0770: 00 02 8b 68 0a 9c 4d 30 37 38 a0 16 90 5c 44 50 ...h..M078...\DP 0780: 50 34 7b 4d 30 37 38 0a 08 00 70 0a 01 44 49 50 P4{M078...p..DIP 0790: 30 14 16 5f 47 54 46 00 a0 0a 44 49 50 30 a4 48 0.._GTF...DIP0.H 07a0: 50 54 46 a4 48 44 54 46 PTF.HDTF HPET @ 0xdafe4000 0000: 48 50 45 54 38 00 00 00 01 ee 4c 45 4e 4f 56 4f HPET8.....LENOVO 0010: 54 50 2d 47 32 20 20 20 10 11 00 00 50 54 4c 20 TP-G2 ....PTL 0020: 02 00 00 00 01 a3 86 80 00 00 00 00 00 00 d0 fe ................ 0030: 00 00 00 00 00 80 00 00 ........ APIC @ 0xdafe3000 0000: 41 50 49 43 98 00 00 00 01 26 4c 45 4e 4f 56 4f APIC.....&LENOVO 0010: 54 50 2d 47 32 20 20 20 10 11 00 00 50 54 4c 20 TP-G2 ....PTL 0020: 02 00 00 00 00 00 e0 fe 01 00 00 00 00 08 01 00 ................ 0030: 01 00 00 00 00 08 02 01 01 00 00 00 00 08 03 02 ................ 0040: 01 00 00 00 00 08 04 03 01 00 00 00 00 08 05 00 ................ 0050: 00 00 00 00 00 08 06 00 00 00 00 00 00 08 07 00 ................ 0060: 00 00 00 00 00 08 08 00 00 00 00 00 01 0c 02 00 ................ 0070: 00 00 c0 fe 00 00 00 00 02 0a 00 00 02 00 00 00 ................ 0080: 00 00 02 0a 00 09 09 00 00 00 0d 00 04 06 00 05 ................ 0090: 00 01 04 06 01 05 00 01 ........ MCFG @ 0xdafe2000 0000: 4d 43 46 47 3c 00 00 00 01 bf 4c 45 4e 4f 56 4f MCFG<.....LENOVO 0010: 54 50 2d 47 32 20 20 20 10 11 00 00 50 54 4c 20 TP-G2 ....PTL 0020: 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 f8 ................ 0030: 00 00 00 00 00 00 00 3f 00 00 00 00 .......?.... ECDT @ 0xdafe1000 0000: 45 43 44 54 52 00 00 00 01 a5 4c 45 4e 4f 56 4f ECDTR.....LENOVO 0010: 54 50 2d 47 32 20 20 20 10 11 00 00 50 54 4c 20 TP-G2 ....PTL 0020: 02 00 00 00 01 08 00 00 66 00 00 00 00 00 00 00 ........f....... 0030: 01 08 00 00 62 00 00 00 00 00 00 00 00 00 00 00 ....b........... 0040: 11 5c 5f 53 42 2e 50 43 49 30 2e 4c 50 43 2e 45 .\_SB.PCI0.LPC.E 0050: 43 00 C. FPDT @ 0xdafe0000 0000: 46 50 44 54 54 00 00 00 01 66 4c 45 4e 4f 56 4f FPDTT....fLENOVO 0010: 54 50 2d 47 32 20 20 20 10 11 00 00 50 54 4c 20 TP-G2 ....PTL 0020: 02 00 00 00 00 00 10 01 00 00 00 00 18 f5 eb d9 ................ 0030: 00 00 00 00 00 30 10 01 00 00 00 00 18 d0 eb d9 .....0.......... 0040: 00 00 00 00 01 30 10 01 00 00 00 00 18 80 e5 d9 .....0.......... 0050: 00 00 00 00 .... ASF! @ 0xdafe7000 0000: 41 53 46 21 a5 00 00 00 20 3d 4c 45 4e 4f 56 4f ASF!.... =LENOVO 0010: 54 50 2d 47 32 20 20 20 10 11 00 00 50 54 4c 20 TP-G2 ....PTL 0020: 02 00 00 00 00 00 10 00 ff ff 17 20 00 00 4a 66 ........... ..Jf 0030: 00 00 00 00 01 00 2c 00 00 00 03 0c 00 00 00 00 ......,......... 0040: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0050: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0060: 02 00 18 00 04 04 00 00 00 88 00 03 01 88 00 02 ................ 0070: 02 88 00 01 03 88 00 04 03 00 17 00 00 f8 00 00 ................ 0080: 00 13 f0 01 00 00 00 00 00 00 00 00 00 00 00 84 ................ 0090: 00 16 00 00 10 5c 68 88 c2 d2 dc a0 a2 a4 a6 c8 .....\h......... 00a0: 00 00 00 00 00 ..... UEFI @ 0xdafdf000 0000: 55 45 46 49 3e 00 00 00 01 0a 4c 45 4e 4f 56 4f UEFI>.....LENOVO 0010: 54 50 2d 47 32 20 20 20 10 11 00 00 50 54 4c 20 TP-G2 ....PTL 0020: 02 00 00 00 e8 63 95 d2 e1 cf 41 4d 8e 54 da 43 .....c....AM.T.C 0030: 22 fe de 5c 36 00 00 90 f5 da 00 00 00 00 "..\6......... UEFI @ 0xdafde000 0000: 55 45 46 49 42 00 00 00 01 b6 50 54 4c 20 20 20 UEFIB.....PTL 0010: 43 4f 4d 42 55 46 00 00 01 00 00 00 50 54 4c 20 COMBUF......PTL 0020: 01 00 00 00 be 96 e8 15 df 0c e2 47 9b 97 a2 8a ...........G.... 0030: 39 8b c7 65 36 00 02 00 00 00 a8 16 3f d8 00 00 9..e6.......?... 0040: 00 00 .. POAT @ 0xdafdd000 0000: 50 4f 41 54 55 00 00 00 03 c4 4c 45 4e 4f 56 4f POATU.....LENOVO 0010: 54 50 2d 47 32 20 20 20 10 11 00 00 50 54 4c 20 TP-G2 ....PTL 0020: 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0030: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0040: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0050: 00 00 00 00 00 ..... SSDT @ 0xdafdc000 0000: 53 53 44 54 37 0c 00 00 01 64 50 6d 52 65 66 00 SSDT7....dPmRef. 0010: 43 70 75 30 49 73 74 00 00 30 00 00 49 4e 54 4c Cpu0Ist..0..INTL 0020: 09 11 06 20 10 42 c1 5c 2e 5f 50 52 5f 43 50 55 ... .B.\._PR_CPU 0030: 30 14 42 2d 5f 50 50 43 00 70 00 60 70 5c 2f 05 0.B-_PPC.p.`p\/. 0040: 5f 53 42 5f 50 43 49 30 4c 50 43 5f 45 43 5f 5f _SB_PCI0LPC_EC__ 0050: 4c 50 4d 44 60 a0 44 0f 92 60 a0 4a 06 91 90 5c LPMD`.D..`.J...\ 0060: 2f 06 5f 53 42 5f 50 43 49 30 4c 50 43 5f 45 43 /._SB_PCI0LPC_EC 0070: 5f 5f 41 43 5f 5f 5f 50 53 52 5c 54 43 46 41 90 __AC___PSR\TCFA. 0080: 92 5c 2f 06 5f 53 42 5f 50 43 49 30 4c 50 43 5f .\/._SB_PCI0LPC_ 0090: 45 43 5f 5f 41 43 5f 5f 5f 50 53 52 5c 54 43 46 EC__AC___PSR\TCF 00a0: 44 a0 23 7b 5c 2f 05 5f 53 42 5f 50 43 49 30 4c D.#{\/._SB_PCI0L 00b0: 50 43 5f 45 43 5f 5f 54 53 4c 30 0a 76 00 70 5c PC_EC__TSL0.v.p\ 00c0: 4c 57 53 54 60 a1 25 a0 23 7b 5c 2f 05 5f 53 42 LWST`.%.#{\/._SB 00d0: 5f 50 43 49 30 4c 50 43 5f 45 43 5f 5f 54 53 4c _PCI0LPC_EC__TSL 00e0: 30 0a 77 00 70 5c 4c 57 53 54 60 a0 4e 05 92 60 0.w.p\LWST`.N..` 00f0: a0 0d 5c 41 50 4d 44 70 5c 41 50 53 54 60 a0 4b ..\APMDp\APST`.K 0100: 04 92 60 a0 19 5c 2e 5f 50 52 5f 43 4c 56 4c a0 ..`..\._PR_CLVL. 0110: 0d 5c 50 50 43 41 70 5c 50 50 43 41 60 a1 2c a0 .\PPCAp\PPCA`.,. 0120: 2a 91 5c 50 50 43 41 5c 46 54 50 53 a0 14 92 94 *.\PPCA\FTPS.... 0130: 5c 46 54 50 53 5c 50 50 43 41 70 5c 50 50 43 41 \FTPS\PPCAp\PPCA 0140: 60 a1 08 70 5c 46 54 50 53 60 a0 43 16 91 90 5c `..p\FTPS`.C...\ 0150: 47 46 50 4c 92 60 90 92 5c 47 46 50 4c 60 70 0b GFPL.`..\GFPL`p. 0160: e8 03 61 a2 2a 5c 2f 05 5f 53 42 5f 50 43 49 30 ..a.*\/._SB_PCI0 0170: 4c 50 43 5f 45 43 5f 5f 50 49 42 53 5b 22 01 76 LPC_EC__PIBS[".v 0180: 61 a0 0c 92 61 70 60 5c 50 50 43 52 a4 60 a0 49 a...ap`\PPCR.`.I 0190: 07 60 a0 45 07 92 5c 47 46 50 4c 70 01 5c 47 46 .`.E..\GFPLp.\GF 01a0: 50 4c 70 0a 04 5c 2f 05 5f 53 42 5f 50 43 49 30 PLp..\/._SB_PCI0 01b0: 4c 50 43 5f 45 43 5f 5f 50 4c 53 4c 70 01 5c 2f LPC_EC__PLSLp.\/ 01c0: 05 5f 53 42 5f 50 43 49 30 4c 50 43 5f 45 43 5f ._SB_PCI0LPC_EC_ 01d0: 5f 50 4c 54 55 70 0a 0d 5c 2f 05 5f 53 42 5f 50 _PLTUp..\/._SB_P 01e0: 43 49 30 4c 50 43 5f 45 43 5f 5f 50 4c 4c 53 70 CI0LPC_EC__PLLSp 01f0: 00 5c 2f 05 5f 53 42 5f 50 43 49 30 4c 50 43 5f .\/._SB_PCI0LPC_ 0200: 45 43 5f 5f 50 4c 4d 53 a1 45 0a a0 42 0a 5c 47 EC__PLMS.E..B.\G 0210: 46 50 4c 70 00 5c 47 46 50 4c 70 0a 04 5c 2f 05 FPLp.\GFPLp..\/. 0220: 5f 53 42 5f 50 43 49 30 4c 50 43 5f 45 43 5f 5f _SB_PCI0LPC_EC__ 0230: 50 4c 53 4c a0 23 5c 4d 54 41 55 70 5c 4d 54 41 PLSL.#\MTAUp\MTA 0240: 55 5c 2f 05 5f 53 42 5f 50 43 49 30 4c 50 43 5f U\/._SB_PCI0LPC_ 0250: 45 43 5f 5f 50 4c 54 55 a1 1b 70 0a 1c 5c 2f 05 EC__PLTU..p..\/. 0260: 5f 53 42 5f 50 43 49 30 4c 50 43 5f 45 43 5f 5f _SB_PCI0LPC_EC__ 0270: 50 4c 54 55 70 5c 50 4c 31 4c 5c 2f 05 5f 53 42 PLTUp\PL1L\/._SB 0280: 5f 50 43 49 30 4c 50 43 5f 45 43 5f 5f 50 4c 4c _PCI0LPC_EC__PLL 0290: 53 70 5c 50 4c 31 4d 5c 2f 05 5f 53 42 5f 50 43 Sp\PL1M\/._SB_PC 02a0: 49 30 4c 50 43 5f 45 43 5f 5f 50 4c 4d 53 a0 4c I0LPC_EC__PLMS.L 02b0: 04 5c 2e 5f 50 52 5f 43 4c 56 4c a0 21 93 60 00 .\._PR_CLVL.!.`. 02c0: a0 13 95 5c 43 54 44 50 5c 46 54 50 53 70 5c 46 ...\CTDP\FTPSp\F 02d0: 54 50 53 60 a1 08 70 5c 43 54 44 50 60 a1 1d a0 TPS`..p\CTDP`... 02e0: 1b 92 95 5c 43 54 44 50 60 70 5c 43 54 44 50 60 ...\CTDP`p\CTDP` 02f0: a0 0a 94 5c 4c 57 53 54 60 75 60 70 60 5c 50 50 ...\LWST`u`p`\PP 0300: 43 52 a4 60 14 40 09 5f 50 43 54 00 a0 1b 5c 2e CR.`.@._PCT...\. 0310: 5f 50 52 5f 43 4c 56 4c 70 5c 2e 5f 50 52 5f 43 _PR_CLVLp\._PR_C 0320: 50 50 43 5c 43 54 44 50 a0 3e 90 7b 43 46 47 44 PPC\CTDP.>.{CFGD 0330: 01 00 7b 50 44 43 30 01 00 a4 12 2c 02 11 14 0a ..{PDC0....,.... 0340: 11 82 0c 00 7f 00 00 00 00 00 00 00 00 00 00 00 ................ 0350: 79 00 11 14 0a 11 82 0c 00 7f 00 00 00 00 00 00 y............... 0360: 00 00 00 00 00 79 00 a4 12 2c 02 11 14 0a 11 82 .....y...,...... 0370: 0c 00 01 10 00 00 00 08 00 00 00 00 00 00 79 00 ..............y. 0380: 11 14 0a 11 82 0c 00 01 08 00 00 b3 00 00 00 00 ................ 0390: 00 00 00 79 00 14 19 58 50 53 53 00 a0 0d 7b 50 ...y...XPSS...{P 03a0: 44 43 30 01 00 a4 4e 50 53 53 a4 53 50 53 53 08 DC0...NPSS.SPSS. 03b0: 53 50 53 53 12 42 1f 0f 12 20 06 0c c5 09 00 00 SPSS.B... ...... 03c0: 0c b8 88 00 00 0c 6e 00 00 00 0c 0a 00 00 00 0c ......n......... 03d0: 83 00 00 00 0c 00 00 00 00 12 20 06 0c c4 09 00 .......... ..... 03e0: 00 0c b8 88 00 00 0c 6e 00 00 00 0c 0a 00 00 00 .......n........ 03f0: 0c 83 01 00 00 0c 01 00 00 00 12 20 06 0c 60 09 ........... ..`. 0400: 00 00 0c c2 81 00 00 0c 6e 00 00 00 0c 0a 00 00 ........n....... 0410: 00 0c 83 02 00 00 0c 02 00 00 00 12 20 06 0c fc ............ ... 0420: 08 00 00 0c ee 7a 00 00 0c 6e 00 00 00 0c 0a 00 .....z...n...... 0430: 00 00 0c 83 03 00 00 0c 03 00 00 00 12 20 06 0c ............. .. 0440: 98 08 00 00 0c 3b 74 00 00 0c 6e 00 00 00 0c 0a .....;t...n..... 0450: 00 00 00 0c 83 04 00 00 0c 04 00 00 00 12 20 06 .............. . 0460: 0c 34 08 00 00 0c aa 6d 00 00 0c 6e 00 00 00 0c .4.....m...n.... 0470: 0a 00 00 00 0c 83 05 00 00 0c 05 00 00 00 12 20 ............... 0480: 06 0c d0 07 00 00 0c 3a 67 00 00 0c 6e 00 00 00 .......:g...n... 0490: 0c 0a 00 00 00 0c 83 06 00 00 0c 06 00 00 00 12 ................ 04a0: 20 06 0c 6c 07 00 00 0c f0 60 00 00 0c 6e 00 00 ..l.....`...n.. 04b0: 00 0c 0a 00 00 00 0c 83 07 00 00 0c 07 00 00 00 ................ 04c0: 12 20 06 0c 08 07 00 00 0c c1 5a 00 00 0c 6e 00 . ........Z...n. 04d0: 00 00 0c 0a 00 00 00 0c 83 08 00 00 0c 08 00 00 ................ 04e0: 00 12 20 06 0c a4 06 00 00 0c b3 54 00 00 0c 6e .. ........T...n 04f0: 00 00 00 0c 0a 00 00 00 0c 83 09 00 00 0c 09 00 ................ 0500: 00 00 12 20 06 0c 40 06 00 00 0c c4 4e 00 00 0c ... ..@.....N... 0510: 6e 00 00 00 0c 0a 00 00 00 0c 83 0a 00 00 0c 0a n............... 0520: 00 00 00 12 20 06 0c dc 05 00 00 0c f6 48 00 00 .... ........H.. 0530: 0c 6e 00 00 00 0c 0a 00 00 00 0c 83 0b 00 00 0c .n.............. 0540: 0b 00 00 00 12 20 06 0c 78 05 00 00 0c 4a 43 00 ..... ..x....JC. 0550: 00 0c 6e 00 00 00 0c 0a 00 00 00 0c 83 0c 00 00 ..n............. 0560: 0c 0c 00 00 00 12 20 06 0c 14 05 00 00 0c ba 3d ...... ........= 0570: 00 00 0c 6e 00 00 00 0c 0a 00 00 00 0c 83 0d 00 ...n............ 0580: 00 0c 0d 00 00 00 12 20 06 0c b0 04 00 00 0c 48 ....... .......H 0590: 38 00 00 0c 6e 00 00 00 0c 0a 00 00 00 0c 83 0e 8...n........... 05a0: 00 00 0c 0e 00 00 00 12 20 06 0c 00 00 00 80 0c ........ ....... 05b0: 00 00 00 80 0c 00 00 00 80 0c 00 00 00 80 0c 00 ................ 05c0: 00 00 80 0c 00 00 00 80 12 20 06 0c 00 00 00 80 ......... ...... 05d0: 0c 00 00 00 80 0c 00 00 00 80 0c 00 00 00 80 0c ................ 05e0: 00 00 00 80 0c 00 00 00 80 12 20 06 0c 00 00 00 .......... ..... 05f0: 80 0c 00 00 00 80 0c 00 00 00 80 0c 00 00 00 80 ................ 0600: 0c 00 00 00 80 0c 00 00 00 80 12 20 06 0c 00 00 ........... .... 0610: 00 80 0c 00 00 00 80 0c 00 00 00 80 0c 00 00 00 ................ 0620: 80 0c 00 00 00 80 0c 00 00 00 80 12 20 06 0c 00 ............ ... 0630: 00 00 80 0c 00 00 00 80 0c 00 00 00 80 0c 00 00 ................ 0640: 00 80 0c 00 00 00 80 0c 00 00 00 80 12 20 06 0c ............. .. 0650: 00 00 00 80 0c 00 00 00 80 0c 00 00 00 80 0c 00 ................ 0660: 00 00 80 0c 00 00 00 80 0c 00 00 00 80 12 20 06 .............. . 0670: 0c 00 00 00 80 0c 00 00 00 80 0c 00 00 00 80 0c ................ 0680: 00 00 00 80 0c 00 00 00 80 0c 00 00 00 80 12 20 ............... 0690: 06 0c 00 00 00 80 0c 00 00 00 80 0c 00 00 00 80 ................ 06a0: 0c 00 00 00 80 0c 00 00 00 80 0c 00 00 00 80 12 ................ 06b0: 20 06 0c 00 00 00 80 0c 00 00 00 80 0c 00 00 00 ............... 06c0: 80 0c 00 00 00 80 0c 00 00 00 80 0c 00 00 00 80 ................ 06d0: 12 20 06 0c 00 00 00 80 0c 00 00 00 80 0c 00 00 . .............. 06e0: 00 80 0c 00 00 00 80 0c 00 00 00 80 0c 00 00 00 ................ 06f0: 80 12 20 06 0c 00 00 00 80 0c 00 00 00 80 0c 00 .. ............. 0700: 00 00 80 0c 00 00 00 80 0c 00 00 00 80 0c 00 00 ................ 0710: 00 80 12 20 06 0c 00 00 00 80 0c 00 00 00 80 0c ... ............ 0720: 00 00 00 80 0c 00 00 00 80 0c 00 00 00 80 0c 00 ................ 0730: 00 00 80 12 20 06 0c 00 00 00 80 0c 00 00 00 80 .... ........... 0740: 0c 00 00 00 80 0c 00 00 00 80 0c 00 00 00 80 0c ................ 0750: 00 00 00 80 12 20 06 0c 00 00 00 80 0c 00 00 00 ..... .......... 0760: 80 0c 00 00 00 80 0c 00 00 00 80 0c 00 00 00 80 ................ 0770: 0c 00 00 00 80 12 20 06 0c 00 00 00 80 0c 00 00 ...... ......... 0780: 00 80 0c 00 00 00 80 0c 00 00 00 80 0c 00 00 00 ................ 0790: 80 0c 00 00 00 80 12 20 06 0c 00 00 00 80 0c 00 ....... ........ 07a0: 00 00 80 0c 00 00 00 80 0c 00 00 00 80 0c 00 00 ................ 07b0: 00 80 0c 00 00 00 80 08 5f 50 53 53 12 42 1f 0f ........_PSS.B.. 07c0: 12 20 06 0c c5 09 00 00 0c b8 88 00 00 0c 0a 00 . .............. 07d0: 00 00 0c 0a 00 00 00 0c 00 1f 00 00 0c 00 1f 00 ................ 07e0: 00 12 20 06 0c c4 09 00 00 0c b8 88 00 00 0c 0a .. ............. 07f0: 00 00 00 0c 0a 00 00 00 0c 00 19 00 00 0c 00 19 ................ 0800: 00 00 12 20 06 0c 60 09 00 00 0c c2 81 00 00 0c ... ..`......... 0810: 0a 00 00 00 0c 0a 00 00 00 0c 00 18 00 00 0c 00 ................ 0820: 18 00 00 12 20 06 0c fc 08 00 00 0c ee 7a 00 00 .... ........z.. 0830: 0c 0a 00 00 00 0c 0a 00 00 00 0c 00 17 00 00 0c ................ 0840: 00 17 00 00 12 20 06 0c 98 08 00 00 0c 3b 74 00 ..... .......;t. 0850: 00 0c 0a 00 00 00 0c 0a 00 00 00 0c 00 16 00 00 ................ 0860: 0c 00 16 00 00 12 20 06 0c 34 08 00 00 0c aa 6d ...... ..4.....m 0870: 00 00 0c 0a 00 00 00 0c 0a 00 00 00 0c 00 15 00 ................ 0880: 00 0c 00 15 00 00 12 20 06 0c d0 07 00 00 0c 3a ....... .......: 0890: 67 00 00 0c 0a 00 00 00 0c 0a 00 00 00 0c 00 14 g............... 08a0: 00 00 0c 00 14 00 00 12 20 06 0c 6c 07 00 00 0c ........ ..l.... 08b0: f0 60 00 00 0c 0a 00 00 00 0c 0a 00 00 00 0c 00 .`.............. 08c0: 13 00 00 0c 00 13 00 00 12 20 06 0c 08 07 00 00 ......... ...... 08d0: 0c c1 5a 00 00 0c 0a 00 00 00 0c 0a 00 00 00 0c ..Z............. 08e0: 00 12 00 00 0c 00 12 00 00 12 20 06 0c a4 06 00 .......... ..... 08f0: 00 0c b3 54 00 00 0c 0a 00 00 00 0c 0a 00 00 00 ...T............ 0900: 0c 00 11 00 00 0c 00 11 00 00 12 20 06 0c 40 06 ........... ..@. 0910: 00 00 0c c4 4e 00 00 0c 0a 00 00 00 0c 0a 00 00 ....N........... 0920: 00 0c 00 10 00 00 0c 00 10 00 00 12 20 06 0c dc ............ ... 0930: 05 00 00 0c f6 48 00 00 0c 0a 00 00 00 0c 0a 00 .....H.......... 0940: 00 00 0c 00 0f 00 00 0c 00 0f 00 00 12 20 06 0c ............. .. 0950: 78 05 00 00 0c 4a 43 00 00 0c 0a 00 00 00 0c 0a x....JC......... 0960: 00 00 00 0c 00 0e 00 00 0c 00 0e 00 00 12 20 06 .............. . 0970: 0c 14 05 00 00 0c ba 3d 00 00 0c 0a 00 00 00 0c .......=........ 0980: 0a 00 00 00 0c 00 0d 00 00 0c 00 0d 00 00 12 20 ............... 0990: 06 0c b0 04 00 00 0c 48 38 00 00 0c 0a 00 00 00 .......H8....... 09a0: 0c 0a 00 00 00 0c 00 0c 00 00 0c 00 0c 00 00 12 ................ 09b0: 20 06 0c 00 00 00 80 0c 00 00 00 80 0c 00 00 00 ............... 09c0: 80 0c 00 00 00 80 0c 00 00 00 80 0c 00 00 00 80 ................ 09d0: 12 20 06 0c 00 00 00 80 0c 00 00 00 80 0c 00 00 . .............. 09e0: 00 80 0c 00 00 00 80 0c 00 00 00 80 0c 00 00 00 ................ 09f0: 80 12 20 06 0c 00 00 00 80 0c 00 00 00 80 0c 00 .. ............. 0a00: 00 00 80 0c 00 00 00 80 0c 00 00 00 80 0c 00 00 ................ 0a10: 00 80 12 20 06 0c 00 00 00 80 0c 00 00 00 80 0c ... ............ 0a20: 00 00 00 80 0c 00 00 00 80 0c 00 00 00 80 0c 00 ................ 0a30: 00 00 80 12 20 06 0c 00 00 00 80 0c 00 00 00 80 .... ........... 0a40: 0c 00 00 00 80 0c 00 00 00 80 0c 00 00 00 80 0c ................ 0a50: 00 00 00 80 12 20 06 0c 00 00 00 80 0c 00 00 00 ..... .......... 0a60: 80 0c 00 00 00 80 0c 00 00 00 80 0c 00 00 00 80 ................ 0a70: 0c 00 00 00 80 12 20 06 0c 00 00 00 80 0c 00 00 ...... ......... 0a80: 00 80 0c 00 00 00 80 0c 00 00 00 80 0c 00 00 00 ................ 0a90: 80 0c 00 00 00 80 12 20 06 0c 00 00 00 80 0c 00 ....... ........ 0aa0: 00 00 80 0c 00 00 00 80 0c 00 00 00 80 0c 00 00 ................ 0ab0: 00 80 0c 00 00 00 80 12 20 06 0c 00 00 00 80 0c ........ ....... 0ac0: 00 00 00 80 0c 00 00 00 80 0c 00 00 00 80 0c 00 ................ 0ad0: 00 00 80 0c 00 00 00 80 12 20 06 0c 00 00 00 80 ......... ...... 0ae0: 0c 00 00 00 80 0c 00 00 00 80 0c 00 00 00 80 0c ................ 0af0: 00 00 00 80 0c 00 00 00 80 12 20 06 0c 00 00 00 .......... ..... 0b00: 80 0c 00 00 00 80 0c 00 00 00 80 0c 00 00 00 80 ................ 0b10: 0c 00 00 00 80 0c 00 00 00 80 12 20 06 0c 00 00 ........... .... 0b20: 00 80 0c 00 00 00 80 0c 00 00 00 80 0c 00 00 00 ................ 0b30: 80 0c 00 00 00 80 0c 00 00 00 80 12 20 06 0c 00 ............ ... 0b40: 00 00 80 0c 00 00 00 80 0c 00 00 00 80 0c 00 00 ................ 0b50: 00 80 0c 00 00 00 80 0c 00 00 00 80 12 20 06 0c ............. .. 0b60: 00 00 00 80 0c 00 00 00 80 0c 00 00 00 80 0c 00 ................ 0b70: 00 00 80 0c 00 00 00 80 0c 00 00 00 80 12 20 06 .............. . 0b80: 0c 00 00 00 80 0c 00 00 00 80 0c 00 00 00 80 0c ................ 0b90: 00 00 00 80 0c 00 00 00 80 0c 00 00 00 80 12 20 ............... 0ba0: 06 0c 00 00 00 80 0c 00 00 00 80 0c 00 00 00 80 ................ 0bb0: 0c 00 00 00 80 0c 00 00 00 80 0c 00 00 00 80 08 ................ 0bc0: 50 53 44 46 00 14 4b 04 5f 50 53 44 00 a0 2e 92 PSDF..K._PSD.... 0bd0: 50 53 44 46 70 54 43 4e 54 88 83 88 48 50 53 44 PSDFpTCNT...HPSD 0be0: 00 00 0a 04 00 70 54 43 4e 54 88 83 88 53 50 53 .....pTCNT...SPS 0bf0: 44 00 00 0a 04 00 70 ff 50 53 44 46 a0 0f 7b 50 D.....p.PSDF..{P 0c00: 44 43 30 0b 00 08 00 a4 48 50 53 44 a4 53 50 53 DC0.....HPSD.SPS 0c10: 44 08 48 50 53 44 12 0d 01 12 0a 05 0a 05 00 00 D.HPSD.......... 0c20: 0a fe 0a 80 08 53 50 53 44 12 0d 01 12 0a 05 0a .....SPSD....... 0c30: 05 00 00 0a fc 0a 80 ....... SSDT @ 0xdafdb000 0000: 53 53 44 54 7e 0a 00 00 01 c5 50 6d 52 65 66 00 SSDT~.....PmRef. 0010: 43 70 75 50 6d 00 00 00 00 30 00 00 49 4e 54 4c CpuPm....0..INTL 0020: 09 11 06 20 10 46 0c 5c 00 08 53 53 44 54 12 43 ... .F.\..SSDT.C 0030: 05 0c 0d 43 50 55 30 49 53 54 20 00 0c 18 80 7f ...CPU0IST ..... 0040: d5 0c 37 0c 00 00 0d 41 50 49 53 54 20 20 20 00 ..7....APIST . 0050: 0c 98 ba e3 da 0c 03 03 00 00 0d 43 50 55 30 43 ...........CPU0C 0060: 53 54 20 00 0c 18 a0 e3 da 0c 01 0a 00 00 0d 41 ST ............A 0070: 50 43 53 54 20 20 20 00 0c 98 9d e3 da 0c 19 01 PCST ......... 0080: 00 00 08 43 46 47 44 0c ff f6 66 00 08 5c 50 44 ...CFGD...f..\PD 0090: 43 30 0c 00 00 00 80 08 5c 50 44 43 31 0c 00 00 C0......\PDC1... 00a0: 00 80 08 5c 50 44 43 32 0c 00 00 00 80 08 5c 50 ...\PDC2......\P 00b0: 44 43 33 0c 00 00 00 80 08 5c 50 44 43 34 0c 00 DC3......\PDC4.. 00c0: 00 00 80 08 5c 50 44 43 35 0c 00 00 00 80 08 5c ....\PDC5......\ 00d0: 50 44 43 36 0c 00 00 00 80 08 5c 50 44 43 37 0c PDC6......\PDC7. 00e0: 00 00 00 80 08 5c 53 44 54 4c 00 10 48 0a 5c 5f .....\SDTL..H.\_ 00f0: 50 52 5f 5b 80 50 50 4d 54 00 0c 98 8f f5 da 0b PR_[.PPMT....... 0100: 29 00 5b 81 40 09 50 50 4d 54 10 50 47 52 56 08 ).[.@.PPMT.PGRV. 0110: 00 28 41 43 52 54 08 41 50 53 56 08 41 41 43 30 .(ACRT.APSV.AAC0 0120: 08 43 50 49 44 20 43 50 50 43 08 43 43 54 50 08 .CPID CPPC.CCTP. 0130: 43 4c 56 4c 08 43 42 4d 49 08 50 4c 31 30 10 50 CLVL.CBMI.PL10.P 0140: 4c 32 30 10 50 4c 57 30 08 43 54 43 30 08 54 41 L20.PLW0.CTC0.TA 0150: 52 30 08 50 50 43 30 08 50 4c 31 31 10 50 4c 32 R0.PPC0.PL11.PL2 0160: 31 10 50 4c 57 31 08 43 54 43 31 08 54 41 52 31 1.PLW1.CTC1.TAR1 0170: 08 50 50 43 31 08 50 4c 31 32 10 50 4c 32 32 10 .PPC1.PL12.PL22. 0180: 50 4c 57 32 08 43 54 43 32 08 54 41 52 32 08 50 PLW2.CTC2.TAR2.P 0190: 50 43 32 08 10 4b 21 5c 2e 5f 50 52 5f 43 50 55 PC2..K!\._PR_CPU 01a0: 30 08 48 49 30 5f 00 08 48 43 30 5f 00 14 14 5f 0.HI0_..HC0_..._ 01b0: 50 44 43 01 70 43 50 44 43 68 60 47 43 41 50 60 PDC.pCPDCh`GCAP` 01c0: a4 60 14 17 5f 4f 53 43 04 70 43 4f 53 43 68 69 .`.._OSC.pCOSChi 01d0: 6a 6b 60 47 43 41 50 60 a4 60 14 48 06 43 50 44 jk`GCAP`.`.H.CPD 01e0: 43 01 8a 68 00 52 45 56 53 8a 68 0a 04 53 49 5a C..h.REVS.h..SIZ 01f0: 45 70 87 68 60 70 74 60 0a 08 00 61 5b 13 68 0a Ep.h`pt`...a[.h. 0200: 40 77 61 0a 08 00 54 45 4d 50 08 53 54 53 30 11 @wa...TEMP.STS0. 0210: 07 0a 04 00 00 00 00 73 53 54 53 30 54 45 4d 50 .......sSTS0TEMP 0220: 62 a4 43 4f 53 43 11 13 0a 10 16 a6 77 40 0c 29 b.COSC......w@.) 0230: be 47 9e bd d8 70 58 71 39 53 52 45 56 53 53 49 .G...pXq9SREVSSI 0240: 5a 45 62 14 4d 0b 43 4f 53 43 04 8a 6b 00 53 54 ZEb.M.COSC..k.ST 0250: 53 30 8a 6b 0a 04 43 41 50 30 8a 68 00 49 49 44 S0.k..CAP0.h.IID 0260: 30 8a 68 0a 04 49 49 44 31 8a 68 0a 08 49 49 44 0.h..IID1.h..IID 0270: 32 8a 68 0a 0c 49 49 44 33 08 55 49 44 30 11 13 2.h..IID3.UID0.. 0280: 0a 10 16 a6 77 40 0c 29 be 47 9e bd d8 70 58 71 ....w@.).G...pXq 0290: 39 53 8a 55 49 44 30 00 45 49 44 30 8a 55 49 44 9S.UID0.EID0.UID 02a0: 30 0a 04 45 49 44 31 8a 55 49 44 30 0a 08 45 49 0..EID1.UID0..EI 02b0: 44 32 8a 55 49 44 30 0a 0c 45 49 44 33 a0 32 92 D2.UID0..EID3.2. 02c0: 90 90 93 49 49 44 30 45 49 44 30 93 49 49 44 31 ...IID0EID0.IID1 02d0: 45 49 44 31 90 93 49 49 44 32 45 49 44 32 93 49 EID1..IID2EID2.I 02e0: 49 44 33 45 49 44 33 70 0a 06 53 54 53 30 a4 6b ID3EID3p..STS0.k 02f0: a0 0e 92 93 69 01 70 0a 0a 53 54 53 30 a4 6b a4 ....i.p..STS0.k. 0300: 6b 14 4e 0a 47 43 41 50 01 8a 68 00 53 54 53 30 k.N.GCAP..h.STS0 0310: 8a 68 0a 04 43 41 50 30 a0 12 91 93 53 54 53 30 .h..CAP0....STS0 0320: 0a 06 93 53 54 53 30 0a 0a a4 00 a0 16 7b 53 54 ...STS0......{ST 0330: 53 30 01 00 7b 43 41 50 30 0b ff 0b 43 41 50 30 S0..{CAP0...CAP0 0340: a4 00 7d 7b 50 44 43 30 0c ff ff ff 7f 00 43 41 ..}{PDC0......CA 0350: 50 30 50 44 43 30 a0 47 05 7b 43 46 47 44 0a 3e P0PDC0.G.{CFGD.> 0360: 00 a0 4c 04 90 90 7b 43 46 47 44 0b 00 04 00 7b ..L...{CFGD....{ 0370: 50 44 43 30 0a 18 00 92 7b 53 44 54 4c 0a 02 00 PDC0....{SDTL... 0380: 7d 53 44 54 4c 0a 02 53 44 54 4c 5b 80 43 53 54 }SDTL..SDTL[.CST 0390: 30 00 83 88 53 53 44 54 0a 07 00 83 88 53 53 44 0...SSDT.....SSD 03a0: 54 0a 08 00 5b 20 43 53 54 30 48 43 30 5f a4 00 T...[ CST0HC0_.. 03b0: 10 4f 16 5c 2e 5f 50 52 5f 43 50 55 31 08 48 49 .O.\._PR_CPU1.HI 03c0: 31 5f 00 08 48 43 31 5f 00 14 1f 5f 50 44 43 01 1_..HC1_..._PDC. 03d0: 70 5c 2f 03 5f 50 52 5f 43 50 55 30 43 50 44 43 p\/._PR_CPU0CPDC 03e0: 68 60 47 43 41 50 60 a4 60 14 22 5f 4f 53 43 04 h`GCAP`.`."_OSC. 03f0: 70 5c 2f 03 5f 50 52 5f 43 50 55 30 43 4f 53 43 p\/._PR_CPU0COSC 0400: 68 69 6a 6b 60 47 43 41 50 60 a4 60 14 4e 07 47 hijk`GCAP`.`.N.G 0410: 43 41 50 01 8a 68 00 53 54 53 31 8a 68 0a 04 43 CAP..h.STS1.h..C 0420: 41 50 31 a0 12 91 93 53 54 53 31 0a 06 93 53 54 AP1....STS1...ST 0430: 53 31 0a 0a a4 00 a0 16 7b 53 54 53 31 01 00 7b S1......{STS1..{ 0440: 43 41 50 31 0b ff 0b 43 41 50 31 a4 00 7d 7b 50 CAP1...CAP1..}{P 0450: 44 43 31 0c ff ff ff 7f 00 43 41 50 31 50 44 43 DC1......CAP1PDC 0460: 31 a0 10 93 7b 50 44 43 31 0a 09 00 0a 09 41 50 1...{PDC1.....AP 0470: 50 54 a0 0d 7b 50 44 43 31 0a 18 00 41 50 43 54 PT..{PDC1...APCT 0480: 70 50 44 43 31 50 44 43 30 a4 00 14 4a 04 41 50 pPDC1PDC0...J.AP 0490: 43 54 00 a0 42 04 90 7b 43 46 47 44 0a 2e 00 92 CT..B..{CFGD.... 04a0: 7b 53 44 54 4c 0a 20 00 7d 53 44 54 4c 0a 20 53 {SDTL. .}SDTL. S 04b0: 44 54 4c 5b 80 43 53 54 31 00 83 88 53 53 44 54 DTL[.CST1...SSDT 04c0: 0a 0a 00 83 88 53 53 44 54 0a 0b 00 5b 20 43 53 .....SSDT...[ CS 04d0: 54 31 48 43 31 5f 14 49 04 41 50 50 54 00 a0 41 T1HC1_.I.APPT..A 04e0: 04 90 7b 43 46 47 44 01 00 92 7b 53 44 54 4c 0a ..{CFGD...{SDTL. 04f0: 10 00 7d 53 44 54 4c 0a 10 53 44 54 4c 5b 80 49 ..}SDTL..SDTL[.I 0500: 53 54 31 00 83 88 53 53 44 54 0a 04 00 83 88 53 ST1...SSDT.....S 0510: 53 44 54 0a 05 00 5b 20 49 53 54 31 48 49 31 5f SDT...[ IST1HI1_ 0520: 10 44 0e 5c 2e 5f 50 52 5f 43 50 55 32 14 1f 5f .D.\._PR_CPU2.._ 0530: 50 44 43 01 70 5c 2f 03 5f 50 52 5f 43 50 55 30 PDC.p\/._PR_CPU0 0540: 43 50 44 43 68 60 47 43 41 50 60 a4 60 14 22 5f CPDCh`GCAP`.`."_ 0550: 4f 53 43 04 70 5c 2f 03 5f 50 52 5f 43 50 55 30 OSC.p\/._PR_CPU0 0560: 43 4f 53 43 68 69 6a 6b 60 47 43 41 50 60 a4 60 COSChijk`GCAP`.` 0570: 14 44 09 47 43 41 50 01 8a 68 00 53 54 53 32 8a .D.GCAP..h.STS2. 0580: 68 0a 04 43 41 50 32 a0 12 91 93 53 54 53 32 0a h..CAP2....STS2. 0590: 06 93 53 54 53 32 0a 0a a4 00 a0 16 7b 53 54 53 ..STS2......{STS 05a0: 32 01 00 7b 43 41 50 32 0b ff 0b 43 41 50 32 a4 2..{CAP2...CAP2. 05b0: 00 7d 7b 50 44 43 32 0c ff ff ff 7f 00 43 41 50 .}{PDC2......CAP 05c0: 32 50 44 43 32 a0 1b 93 7b 50 44 43 32 0a 09 00 2PDC2...{PDC2... 05d0: 0a 09 5c 2f 03 5f 50 52 5f 43 50 55 31 41 50 50 ..\/._PR_CPU1APP 05e0: 54 a0 18 7b 50 44 43 32 0a 18 00 5c 2f 03 5f 50 T..{PDC2...\/._P 05f0: 52 5f 43 50 55 31 41 50 43 54 70 50 44 43 32 50 R_CPU1APCTpPDC2P 0600: 44 43 30 a4 00 10 44 0e 5c 2e 5f 50 52 5f 43 50 DC0...D.\._PR_CP 0610: 55 33 14 1f 5f 50 44 43 01 70 5c 2f 03 5f 50 52 U3.._PDC.p\/._PR 0620: 5f 43 50 55 30 43 50 44 43 68 60 47 43 41 50 60 _CPU0CPDCh`GCAP` 0630: a4 60 14 22 5f 4f 53 43 04 70 5c 2f 03 5f 50 52 .`."_OSC.p\/._PR 0640: 5f 43 50 55 30 43 4f 53 43 68 69 6a 6b 60 47 43 _CPU0COSChijk`GC 0650: 41 50 60 a4 60 14 44 09 47 43 41 50 01 8a 68 00 AP`.`.D.GCAP..h. 0660: 53 54 53 33 8a 68 0a 04 43 41 50 33 a0 12 91 93 STS3.h..CAP3.... 0670: 53 54 53 33 0a 06 93 53 54 53 33 0a 0a a4 00 a0 STS3...STS3..... 0680: 16 7b 53 54 53 33 01 00 7b 43 41 50 33 0b ff 0b .{STS3..{CAP3... 0690: 43 41 50 33 a4 00 7d 7b 50 44 43 33 0c ff ff ff CAP3..}{PDC3.... 06a0: 7f 00 43 41 50 33 50 44 43 33 a0 1b 93 7b 50 44 ..CAP3PDC3...{PD 06b0: 43 33 0a 09 00 0a 09 5c 2f 03 5f 50 52 5f 43 50 C3.....\/._PR_CP 06c0: 55 31 41 50 50 54 a0 18 7b 50 44 43 33 0a 18 00 U1APPT..{PDC3... 06d0: 5c 2f 03 5f 50 52 5f 43 50 55 31 41 50 43 54 70 \/._PR_CPU1APCTp 06e0: 50 44 43 33 50 44 43 30 a4 00 10 44 0e 5c 2e 5f PDC3PDC0...D.\._ 06f0: 50 52 5f 43 50 55 34 14 1f 5f 50 44 43 01 70 5c PR_CPU4.._PDC.p\ 0700: 2f 03 5f 50 52 5f 43 50 55 30 43 50 44 43 68 60 /._PR_CPU0CPDCh` 0710: 47 43 41 50 60 a4 60 14 22 5f 4f 53 43 04 70 5c GCAP`.`."_OSC.p\ 0720: 2f 03 5f 50 52 5f 43 50 55 30 43 4f 53 43 68 69 /._PR_CPU0COSChi 0730: 6a 6b 60 47 43 41 50 60 a4 60 14 44 09 47 43 41 jk`GCAP`.`.D.GCA 0740: 50 01 8a 68 00 53 54 53 34 8a 68 0a 04 43 41 50 P..h.STS4.h..CAP 0750: 34 a0 12 91 93 53 54 53 34 0a 06 93 53 54 53 34 4....STS4...STS4 0760: 0a 0a a4 00 a0 16 7b 53 54 53 34 01 00 7b 43 41 ......{STS4..{CA 0770: 50 34 0b ff 0b 43 41 50 34 a4 00 7d 7b 50 44 43 P4...CAP4..}{PDC 0780: 34 0c ff ff ff 7f 00 43 41 50 34 50 44 43 34 a0 4......CAP4PDC4. 0790: 1b 93 7b 50 44 43 34 0a 09 00 0a 09 5c 2f 03 5f ..{PDC4.....\/._ 07a0: 50 52 5f 43 50 55 31 41 50 50 54 a0 18 7b 50 44 PR_CPU1APPT..{PD 07b0: 43 34 0a 18 00 5c 2f 03 5f 50 52 5f 43 50 55 31 C4...\/._PR_CPU1 07c0: 41 50 43 54 70 50 44 43 34 50 44 43 30 a4 00 10 APCTpPDC4PDC0... 07d0: 44 0e 5c 2e 5f 50 52 5f 43 50 55 35 14 1f 5f 50 D.\._PR_CPU5.._P 07e0: 44 43 01 70 5c 2f 03 5f 50 52 5f 43 50 55 30 43 DC.p\/._PR_CPU0C 07f0: 50 44 43 68 60 47 43 41 50 60 a4 60 14 22 5f 4f PDCh`GCAP`.`."_O 0800: 53 43 04 70 5c 2f 03 5f 50 52 5f 43 50 55 30 43 SC.p\/._PR_CPU0C 0810: 4f 53 43 68 69 6a 6b 60 47 43 41 50 60 a4 60 14 OSChijk`GCAP`.`. 0820: 44 09 47 43 41 50 01 8a 68 00 53 54 53 35 8a 68 D.GCAP..h.STS5.h 0830: 0a 04 43 41 50 35 a0 12 91 93 53 54 53 35 0a 06 ..CAP5....STS5.. 0840: 93 53 54 53 35 0a 0a a4 00 a0 16 7b 53 54 53 35 .STS5......{STS5 0850: 01 00 7b 43 41 50 35 0b ff 0b 43 41 50 35 a4 00 ..{CAP5...CAP5.. 0860: 7d 7b 50 44 43 35 0c ff ff ff 7f 00 43 41 50 35 }{PDC5......CAP5 0870: 50 44 43 35 a0 1b 93 7b 50 44 43 35 0a 09 00 0a PDC5...{PDC5.... 0880: 09 5c 2f 03 5f 50 52 5f 43 50 55 31 41 50 50 54 .\/._PR_CPU1APPT 0890: a0 18 7b 50 44 43 35 0a 18 00 5c 2f 03 5f 50 52 ..{PDC5...\/._PR 08a0: 5f 43 50 55 31 41 50 43 54 70 50 44 43 35 50 44 _CPU1APCTpPDC5PD 08b0: 43 30 a4 00 10 44 0e 5c 2e 5f 50 52 5f 43 50 55 C0...D.\._PR_CPU 08c0: 36 14 1f 5f 50 44 43 01 70 5c 2f 03 5f 50 52 5f 6.._PDC.p\/._PR_ 08d0: 43 50 55 30 43 50 44 43 68 60 47 43 41 50 60 a4 CPU0CPDCh`GCAP`. 08e0: 60 14 22 5f 4f 53 43 04 70 5c 2f 03 5f 50 52 5f `."_OSC.p\/._PR_ 08f0: 43 50 55 30 43 4f 53 43 68 69 6a 6b 60 47 43 41 CPU0COSChijk`GCA 0900: 50 60 a4 60 14 44 09 47 43 41 50 01 8a 68 00 53 P`.`.D.GCAP..h.S 0910: 54 53 36 8a 68 0a 04 43 41 50 36 a0 12 91 93 53 TS6.h..CAP6....S 0920: 54 53 36 0a 06 93 53 54 53 36 0a 0a a4 00 a0 16 TS6...STS6...... 0930: 7b 53 54 53 36 01 00 7b 43 41 50 36 0b ff 0b 43 {STS6..{CAP6...C 0940: 41 50 36 a4 00 7d 7b 50 44 43 36 0c ff ff ff 7f AP6..}{PDC6..... 0950: 00 43 41 50 36 50 44 43 36 a0 1b 93 7b 50 44 43 .CAP6PDC6...{PDC 0960: 36 0a 09 00 0a 09 5c 2f 03 5f 50 52 5f 43 50 55 6.....\/._PR_CPU 0970: 31 41 50 50 54 a0 18 7b 50 44 43 36 0a 18 00 5c 1APPT..{PDC6...\ 0980: 2f 03 5f 50 52 5f 43 50 55 31 41 50 43 54 70 50 /._PR_CPU1APCTpP 0990: 44 43 36 50 44 43 30 a4 00 10 44 0e 5c 2e 5f 50 DC6PDC0...D.\._P 09a0: 52 5f 43 50 55 37 14 1f 5f 50 44 43 01 70 5c 2f R_CPU7.._PDC.p\/ 09b0: 03 5f 50 52 5f 43 50 55 30 43 50 44 43 68 60 47 ._PR_CPU0CPDCh`G 09c0: 43 41 50 60 a4 60 14 22 5f 4f 53 43 04 70 5c 2f CAP`.`."_OSC.p\/ 09d0: 03 5f 50 52 5f 43 50 55 30 43 4f 53 43 68 69 6a ._PR_CPU0COSChij 09e0: 6b 60 47 43 41 50 60 a4 60 14 44 09 47 43 41 50 k`GCAP`.`.D.GCAP 09f0: 01 8a 68 00 53 54 53 37 8a 68 0a 04 43 41 50 37 ..h.STS7.h..CAP7 0a00: a0 12 91 93 53 54 53 37 0a 06 93 53 54 53 37 0a ....STS7...STS7. 0a10: 0a a4 00 a0 16 7b 53 54 53 37 01 00 7b 43 41 50 .....{STS7..{CAP 0a20: 37 0b ff 0b 43 41 50 37 a4 00 7d 7b 50 44 43 37 7...CAP7..}{PDC7 0a30: 0c ff ff ff 7f 00 43 41 50 37 50 44 43 37 a0 1b ......CAP7PDC7.. 0a40: 93 7b 50 44 43 37 0a 09 00 0a 09 5c 2f 03 5f 50 .{PDC7.....\/._P 0a50: 52 5f 43 50 55 31 41 50 50 54 a0 18 7b 50 44 43 R_CPU1APPT..{PDC 0a60: 37 0a 18 00 5c 2f 03 5f 50 52 5f 43 50 55 31 41 7...\/._PR_CPU1A 0a70: 50 43 54 70 50 44 43 37 50 44 43 30 a4 00 PCTpPDC7PDC0.. DMAR @ 0xdafda000 0000: 44 4d 41 52 b8 00 00 00 01 e3 49 4e 54 45 4c 20 DMAR......INTEL 0010: 53 4e 42 20 00 00 00 00 01 00 00 00 49 4e 54 4c SNB ........INTL 0020: 01 00 00 00 23 01 00 00 00 00 00 00 00 00 00 00 ....#........... 0030: 00 00 18 00 00 00 00 00 00 00 d9 fe 00 00 00 00 ................ 0040: 01 08 00 00 00 00 02 00 00 00 20 00 01 00 00 00 .......... ..... 0050: 00 10 d9 fe 00 00 00 00 03 08 00 00 02 f0 1f 00 ................ 0060: 04 08 00 00 00 f0 0f 00 01 00 30 00 00 00 00 00 ..........0..... 0070: 00 00 2f da 00 00 00 00 ff 6f 30 da 00 00 00 00 ../......o0..... 0080: 01 08 00 00 00 00 1d 00 01 08 00 00 00 00 1a 00 ................ 0090: 01 08 00 00 00 00 14 00 01 00 20 00 00 00 00 00 .......... ..... 00a0: 00 00 80 db 00 00 00 00 ff ff 9f df 00 00 00 00 ................ 00b0: 01 08 00 00 00 00 02 00 ........ UEFI @ 0xdafd9000 0000: 55 45 46 49 a6 02 00 00 01 94 4c 45 4e 4f 56 4f UEFI......LENOVO 0010: 54 50 2d 47 32 20 20 20 10 11 00 00 50 54 4c 20 TP-G2 ....PTL 0020: 02 00 00 00 97 b1 9f 0d fc ce 91 4e ac b1 25 35 ...........N..%5 0030: d9 e5 a8 44 36 00 1f 00 00 00 42 00 00 00 43 00 ...D6.....B...C. 0040: 00 00 44 00 00 00 45 00 00 00 46 00 00 00 47 00 ..D...E...F...G. 0050: 00 00 48 00 00 00 49 00 00 00 4a 00 00 00 4b 00 ..H...I...J...K. 0060: 00 00 4d 00 00 00 51 00 00 00 f2 00 00 00 f1 00 ..M...Q......... 0070: 00 00 52 00 00 00 e9 00 00 00 01 00 00 00 02 00 ..R............. 0080: 00 00 ab 00 00 00 03 00 00 00 20 00 00 00 04 00 .......... ..... 0090: 00 00 05 00 00 00 06 00 00 00 c1 00 00 00 07 00 ................ 00a0: 00 00 08 00 00 00 09 00 00 00 0a 00 00 00 0b 00 ................ 00b0: 00 00 0c 00 00 00 83 0c fa 0e d7 03 b9 44 9c 8d .............D.. 00c0: 6f 32 e6 3e c0 98 78 98 e4 93 55 ad fd 46 b6 16 o2.>..x...U..F.. 00d0: 6c 4e 69 9a 6b 9e e9 79 fb c0 21 28 21 4c 9a bb lNi.k..y..!(!L.. 00e0: 9e 7e b2 ca 15 f4 39 12 2f ce 28 7d f2 43 b5 15 .~....9./.(}.C.. 00f0: 5e 60 9f 10 06 0c b8 6e 83 9e 86 8a 60 4a 83 a9 ^`.....n....`J.. 0100: d4 41 e9 6a 27 05 62 40 78 f8 bd 63 de 44 af 27 .A.j'.b@x..c.D.' 0110: f8 27 fd 67 89 06 c5 c0 04 ae 4c 4b 82 44 a3 53 .'.g......LK.D.S 0120: c1 38 2b 4a 08 48 ed 36 ec ca ae c7 d9 4e b5 e1 .8+J.H.6.....N.. 0130: e3 4e 15 cb 8f 04 4a df a9 58 ef fb c8 4d a3 9f .N....J..X...M.. 0140: 8d b6 be 0f 83 70 1d b2 04 dc 15 5d 50 4d a2 d8 .....p.....]PM.. 0150: 5d 1b 4f 82 ac 11 8f 0a 9e ca 15 f8 29 4a a7 16 ].O.........)J.. 0160: eb ae 45 ca 63 6e 63 db 4b cc a3 ad 42 48 ba 0c ..E.cnc.K...BH.. 0170: 50 58 ad 17 d3 d8 e2 36 f7 1b fc f4 39 4c 9e 9b PX.....6....9L.. 0180: ce a8 35 39 c3 1a 9c 9c c7 c4 09 9f 51 41 99 c4 ..59........QA.. 0190: 53 a0 0a 4a 94 96 00 a8 63 ef 86 95 fb 42 84 ab S..J....c....B.. 01a0: ea 59 0b f1 41 aa 58 dc af d8 22 6e f8 42 99 66 .Y..A.X..."n.B.f 01b0: 36 ff 78 8c 9c af cf 73 d7 68 b2 fb dd 47 ac d1 6.x....s.h...G.. 01c0: 21 8e f9 19 a5 2c 5e 1d 9c 62 bd f6 52 4f 8a 5f !....,^..b..RO._ 01d0: 93 96 e7 28 9b ec c1 50 59 3f ba 9c 76 4e b2 aa ...(...PY?..vN.. 01e0: 83 4f da 5e 07 c9 65 00 9b 59 30 86 71 4b b4 9c .O.^..e..Y0.qK.. 01f0: 0b 12 af 56 07 80 66 73 5e 52 29 84 65 4b b1 77 ...V..fs^R).eK.w 0200: 3b 79 04 dd bf 85 7f ee 45 d0 be 98 eb 4f bd 30 ;y......E....O.0 0210: d6 76 37 7d ce f8 a9 0b 09 b4 66 d2 03 4e be 37 .v7}......f..N.7 0220: ad bd bc 85 63 fd 25 51 b0 6d bb 88 8e 41 a4 bc ....c.%Q.m...A.. 0230: ef c4 17 4d 69 bc 38 b4 91 da 47 8b 0a 4d ad 56 ...Mi.8...G..M.V 0240: c7 28 a9 4c 7f 58 9c 7c 96 6e 42 8e 65 48 9d 6c .(.L.X.|.nB.eH.l 0250: 4f 80 05 2f 2c 0e c9 27 0d b0 dc cc 13 44 90 78 O../,..'.....D.x 0260: 14 88 a0 0c b6 fe ec 9a 91 b8 9c 93 4b 47 a9 18 ............KG.. 0270: 29 9f b2 65 93 6c 8a 8c 3c 24 d0 bb a9 4a be 17 )..e.l..<$...J.. 0280: cf 9b 58 31 30 ec 05 9e e1 ee 9a 07 17 4d 8f 46 ..X10........M.F 0290: cf 81 12 60 db 26 c7 76 9f 9b fa 28 2b 45 97 1f ...`.&.v...(+E.. 02a0: c1 20 ed 9f 5e 99 . ..^. XSDT @ 0xdaffe170 0000: 58 53 44 54 bc 00 00 00 01 3a 4c 45 4e 4f 56 4f XSDT.....:LENOVO 0010: 54 50 2d 47 32 20 20 20 10 11 00 00 50 54 4c 20 TP-G2 ....PTL 0020: 02 00 00 00 00 50 fe da 00 00 00 00 00 d0 ff da .....P.......... 0030: 00 00 00 00 00 c0 ff da 00 00 00 00 00 b0 ff da ................ 0040: 00 00 00 00 00 a0 ff da 00 00 00 00 00 90 ff da ................ 0050: 00 00 00 00 00 40 fe da 00 00 00 00 00 30 fe da .....@.......0.. 0060: 00 00 00 00 00 20 fe da 00 00 00 00 00 10 fe da ..... .......... 0070: 00 00 00 00 00 00 fe da 00 00 00 00 00 70 fe da .............p.. 0080: 00 00 00 00 00 f0 fd da 00 00 00 00 00 e0 fd da ................ 0090: 00 00 00 00 00 d0 fd da 00 00 00 00 00 c0 fd da ................ 00a0: 00 00 00 00 00 b0 fd da 00 00 00 00 00 a0 fd da ................ 00b0: 00 00 00 00 00 90 fd da 00 00 00 00 ............ RSD PTR @ 0xf0120 0000: 52 53 44 20 50 54 52 20 7f 4c 45 4e 4f 56 4f 02 RSD PTR .LENOVO. 0010: d4 e0 ff da 24 00 00 00 70 e1 ff da 00 00 00 00 ....$...p....... 0020: b2 00 00 00 .... fwts-test/wmi-0001/acpidump-0002.log000066400000000000000000013006751231470457100170740ustar00rootroot00000000000000APIC @ 0x00000000 0000: 41 50 49 43 cc 00 00 00 02 d3 5f 41 53 55 53 5f APIC......_ASUS_ 0010: 4e 6f 74 65 62 6f 6f 6b 04 20 22 06 4d 53 46 54 Notebook. ".MSFT 0020: 13 00 01 00 00 00 e0 fe 01 00 00 00 00 08 01 00 ................ 0030: 01 00 00 00 00 08 02 02 01 00 00 00 00 08 03 04 ................ 0040: 01 00 00 00 00 08 04 06 01 00 00 00 00 08 05 01 ................ 0050: 01 00 00 00 00 08 06 03 01 00 00 00 00 08 07 05 ................ 0060: 01 00 00 00 00 08 08 07 01 00 00 00 00 08 09 08 ................ 0070: 00 00 00 00 00 08 0a 09 00 00 00 00 00 08 0b 0a ................ 0080: 00 00 00 00 00 08 0c 0b 00 00 00 00 00 08 0d 0c ................ 0090: 00 00 00 00 00 08 0e 0d 00 00 00 00 00 08 0f 0e ................ 00a0: 00 00 00 00 00 08 10 0f 00 00 00 00 01 0c 02 00 ................ 00b0: 00 00 c0 fe 00 00 00 00 02 0a 00 00 02 00 00 00 ................ 00c0: 00 00 02 0a 00 09 09 00 00 00 0d 00 ............ ASF! @ 0x00000000 0000: 41 53 46 21 a0 00 00 00 20 3e 49 4e 54 45 4c 20 ASF!.... >INTEL 0010: 20 48 43 47 00 00 00 00 01 00 00 00 54 46 53 4d HCG........TFSM 0020: 40 42 0f 00 00 00 10 00 ff ff 01 00 00 00 01 57 @B.............W 0030: 00 00 00 00 01 00 2c 00 00 00 03 0c 89 04 01 01 ......,......... 0040: 05 6f 00 68 08 88 17 00 89 04 04 04 07 6f 00 68 .o.h.........o.h 0050: 20 88 03 00 89 05 01 01 19 6f 00 68 20 88 22 00 ........o.h .". 0060: 02 00 18 00 04 04 00 00 00 88 00 03 01 88 00 02 ................ 0070: 02 88 00 01 03 88 00 04 03 00 17 00 20 f8 00 00 ............ ... 0080: 00 13 f0 00 00 00 01 57 00 00 00 00 01 00 00 84 .......W........ 0090: 00 11 00 00 0b 5c 68 88 c2 d2 dc a0 a2 a4 a6 c8 .....\h......... DBGP @ 0x00000000 0000: 44 42 47 50 34 00 00 00 01 8e 5f 41 53 55 53 5f DBGP4....._ASUS_ 0010: 4e 6f 74 65 62 6f 6f 6b 04 20 22 06 4d 53 46 54 Notebook. ".MSFT 0020: 13 00 01 00 00 00 00 00 01 08 00 00 40 02 00 00 ............@... 0030: 00 00 00 00 .... ECDT @ 0x00000000 0000: 45 43 44 54 c1 00 00 00 01 ce 5f 41 53 55 53 5f ECDT......_ASUS_ 0010: 4e 6f 74 65 62 6f 6f 6b 04 20 22 06 41 4d 49 2e Notebook. ".AMI. 0020: 03 00 00 00 01 08 00 00 66 00 00 00 00 00 00 00 ........f....... 0030: 01 08 00 00 62 00 00 00 00 00 00 00 00 00 00 00 ....b........... 0040: 1b 5c 5f 53 42 2e 50 43 49 30 2e 53 42 52 47 2e .\_SB.PCI0.SBRG. 0050: 45 43 30 00 00 00 00 00 00 00 00 00 00 00 00 00 EC0............. 0060: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0070: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0080: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0090: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 00c0: 00 . DSDT @ 0x00000000 0000: 44 53 44 54 bd 0d 01 00 01 04 5f 41 53 55 53 5f DSDT......_ASUS_ 0010: 4e 6f 74 65 62 6f 6f 6b 00 00 00 00 49 4e 54 4c Notebook....INTL 0020: 12 11 09 20 08 53 53 31 5f 0a 01 08 53 53 32 5f ... .SS1_...SS2_ 0030: 0a 00 08 53 53 33 5f 0a 01 08 53 53 34 5f 0a 01 ...SS3_...SS4_.. 0040: 08 49 4f 53 54 0b 00 44 08 54 4f 50 4d 0c ff ff .IOST..D.TOPM... 0050: ff bf 08 52 4f 4d 53 0c 00 00 e0 ff 08 4d 47 31 ...ROMS......MG1 0060: 42 0c 00 00 00 00 08 4d 47 31 4c 0c 00 00 00 00 B......MG1L..... 0070: 08 4d 47 32 42 0c 00 00 00 c0 08 4d 47 32 4c 0c .MG2B......MG2L. 0080: 00 c0 50 24 08 4d 43 48 42 0c 00 00 d1 fe 08 4d ..P$.MCHB......M 0090: 43 48 4c 0b 00 40 08 45 47 50 42 0c 00 90 d1 fe CHL..@.EGPB..... 00a0: 08 45 47 50 4c 0b 00 10 08 44 4d 49 42 0c 00 80 .EGPL....DMIB... 00b0: d1 fe 08 44 4d 49 4c 0b 00 10 08 49 46 50 42 0c ...DMIL....IFPB. 00c0: 00 40 d1 fe 08 49 46 50 4c 0b 00 10 08 50 45 42 .@...IFPL....PEB 00d0: 53 0c 00 00 00 e0 08 50 45 4c 4e 0c 00 00 00 04 S......PELN..... 00e0: 08 54 54 54 42 0c 00 00 d2 fe 08 54 54 54 4c 0c .TTTB......TTTL. 00f0: 00 00 02 00 08 53 4d 42 53 0b a0 ef 08 53 4d 42 .....SMBS....SMB 0100: 4c 0a 10 08 50 42 4c 4b 0b 10 04 08 50 4d 42 53 L...PBLK....PMBS 0110: 0b 00 04 08 50 4d 4c 4e 0a 80 08 4c 56 4c 32 0b ....PMLN...LVL2. 0120: 14 04 08 4c 56 4c 33 0b 15 04 08 4c 56 4c 34 0b ...LVL3....LVL4. 0130: 16 04 08 53 4d 49 50 0a b2 08 47 50 42 53 0b 00 ...SMIP...GPBS.. 0140: 05 08 47 50 4c 4e 0a 80 08 41 50 43 42 0c 00 00 ..GPLN...APCB... 0150: c0 fe 08 41 50 43 4c 0b 00 10 08 50 4d 33 30 0b ...APCL....PM30. 0160: 30 04 08 53 52 43 42 0c 00 c0 d1 fe 08 53 52 43 0..SRCB......SRC 0170: 4c 0b 00 40 08 53 55 53 57 0a ff 08 48 50 54 42 L..@.SUSW...HPTB 0180: 0c 00 00 d0 fe 08 48 50 54 43 0c 04 f4 d1 fe 08 ......HPTC...... 0190: 41 43 50 48 0a de 08 41 53 53 42 0a 00 08 41 4f ACPH...ASSB...AO 01a0: 54 42 0a 00 08 41 41 58 42 0a 00 08 50 45 48 50 TB...AAXB...PEHP 01b0: 0a 00 08 53 48 50 43 0a 01 08 50 45 50 4d 0a 00 ...SHPC...PEPM.. 01c0: 08 50 45 45 52 0a 00 08 50 45 43 53 0a 00 08 49 .PEER...PECS...I 01d0: 54 4b 45 0a 00 08 44 53 53 50 0a 00 08 46 48 50 TKE...DSSP...FHP 01e0: 50 0a 01 08 46 4d 42 4c 0a 01 08 46 44 54 50 0a P...FMBL...FDTP. 01f0: 02 08 46 55 50 53 0a 03 08 42 53 48 5f 0a 00 08 ..FUPS...BSH_... 0200: 42 45 4c 5f 0a 01 08 42 45 48 5f 0a 02 08 42 52 BEL_...BEH_...BR 0210: 48 5f 0a 03 08 42 54 46 5f 0a 04 08 42 48 43 5f H_...BTF_...BHC_ 0220: 0a 05 08 42 59 42 5f 0a 06 08 42 50 48 5f 0a 07 ...BYB_...BPH_.. 0230: 08 42 53 48 53 0a 08 08 42 45 4c 53 0a 09 08 42 .BSHS...BELS...B 0240: 52 48 53 0a 0a 08 42 54 46 53 0a 0b 08 42 45 48 RHS...BTFS...BEH 0250: 53 0a 0c 08 42 50 48 53 0a 0d 08 42 54 4c 5f 0a S...BPHS...BTL_. 0260: 10 08 42 53 52 5f 0a 14 08 42 53 43 5f 0a 1b 08 ..BSR_...BSC_... 0270: 42 43 43 5f 0a 1c 08 42 4f 46 5f 0a 20 08 42 45 BCC_...BOF_. .BE 0280: 46 5f 0a 21 08 42 4c 4c 45 0a 22 08 42 4c 4c 43 F_.!.BLLE.".BLLC 0290: 0a 23 08 42 4c 43 41 0a 24 08 42 4c 4c 53 0a 25 .#.BLCA.$.BLLS.% 02a0: 08 42 4c 4c 50 0a 26 08 42 4c 4c 44 0a 27 08 42 .BLLP.&.BLLD.'.B 02b0: 48 42 45 0a 30 08 42 48 42 43 0a 31 08 42 48 42 HBE.0.BHBC.1.BHB 02c0: 4e 0a 32 08 42 48 42 4d 0a 33 08 54 52 54 50 0a N.2.BHBM.3.TRTP. 02d0: 01 08 57 44 54 45 0a 01 08 54 52 54 44 0a 02 08 ..WDTE...TRTD... 02e0: 54 52 54 49 0a 03 08 47 43 44 44 0a 01 08 44 53 TRTI...GCDD...DS 02f0: 54 41 0a 0a 08 44 53 4c 4f 0a 0c 08 44 53 4c 43 TA...DSLO...DSLC 0300: 0a 0e 08 50 49 54 53 0a 10 08 53 42 43 53 0a 12 ...PITS...SBCS.. 0310: 08 53 41 4c 53 0a 13 08 4c 53 53 53 0a 2a 08 53 .SALS...LSSS.*.S 0320: 4f 4f 54 0a 35 08 50 44 42 52 0a 4d 08 4d 42 45 OOT.5.PDBR.M.MBE 0330: 43 0a 00 08 4d 42 4c 46 0a 0a 5b 80 47 4e 56 53 C...MBLF..[.GNVS 0340: 00 0c 18 be 79 bf 0b a8 01 5b 81 4a 3b 47 4e 56 ....y....[.J;GNV 0350: 53 10 4f 53 59 53 10 53 4d 49 46 08 50 52 4d 30 S.OSYS.SMIF.PRM0 0360: 08 50 52 4d 31 08 53 43 49 46 08 50 52 4d 32 08 .PRM1.SCIF.PRM2. 0370: 50 52 4d 33 08 4c 43 4b 46 08 50 52 4d 34 08 50 PRM3.LCKF.PRM4.P 0380: 52 4d 35 08 50 38 30 44 20 4c 49 44 53 08 50 57 RM5.P80D LIDS.PW 0390: 52 53 08 44 42 47 53 08 54 48 4f 46 08 41 43 54 RS.DBGS.THOF.ACT 03a0: 31 08 41 43 54 54 08 50 53 56 54 08 54 43 31 56 1.ACTT.PSVT.TC1V 03b0: 08 54 43 32 56 08 54 53 50 56 08 43 52 54 54 08 .TC2V.TSPV.CRTT. 03c0: 44 54 53 45 08 44 54 53 31 08 44 54 53 32 08 44 DTSE.DTS1.DTS2.D 03d0: 54 53 46 08 00 38 52 45 56 4e 08 00 10 41 50 49 TSF..8REVN...API 03e0: 43 08 54 43 4e 54 08 50 43 50 30 08 50 43 50 31 C.TCNT.PCP0.PCP1 03f0: 08 50 50 43 4d 08 50 50 4d 46 20 43 36 37 4c 08 .PPCM.PPMF C67L. 0400: 4e 41 54 50 08 43 4d 41 50 08 43 4d 42 50 08 4c NATP.CMAP.CMBP.L 0410: 50 54 50 08 46 44 43 50 08 43 4d 43 50 08 43 49 PTP.FDCP.CMCP.CI 0420: 52 50 08 53 4d 53 43 08 57 33 38 31 08 53 4d 43 RP.SMSC.W381.SMC 0430: 31 08 49 47 44 53 08 54 4c 53 54 08 43 41 44 4c 1.IGDS.TLST.CADL 0440: 08 50 41 44 4c 08 43 53 54 45 10 4e 53 54 45 10 .PADL.CSTE.NSTE. 0450: 53 53 54 45 10 4e 44 49 44 08 44 49 44 31 20 44 SSTE.NDID.DID1 D 0460: 49 44 32 20 44 49 44 33 20 44 49 44 34 20 44 49 ID2 DID3 DID4 DI 0470: 44 35 20 4b 53 56 30 20 4b 53 56 31 08 00 38 42 D5 KSV0 KSV1..8B 0480: 4c 43 53 08 42 52 54 4c 08 41 4c 53 45 08 41 4c LCS.BRTL.ALSE.AL 0490: 41 46 08 4c 4c 4f 57 08 4c 48 49 48 08 00 08 45 AF.LLOW.LHIH...E 04a0: 4d 41 45 08 45 4d 41 50 10 45 4d 41 4c 10 00 08 MAE.EMAP.EMAL... 04b0: 4d 45 46 45 08 44 53 54 53 08 00 10 54 50 4d 50 MEFE.DSTS...TPMP 04c0: 08 54 50 4d 45 08 4d 4f 52 44 08 54 43 47 50 08 .TPME.MORD.TCGP. 04d0: 50 50 52 50 20 50 50 52 51 08 4c 50 50 52 08 47 PPRP PPRQ.LPPR.G 04e0: 54 46 30 38 47 54 46 32 38 49 44 45 4d 08 47 54 TF08GTF28IDEM.GT 04f0: 46 31 38 42 49 44 5f 08 00 48 08 41 53 4c 42 20 F18BID_..H.ASLB 0500: 49 42 54 54 08 49 50 41 54 08 49 54 56 46 08 49 IBTT.IPAT.ITVF.I 0510: 54 56 4d 08 49 50 53 43 08 49 42 4c 43 08 49 42 TVM.IPSC.IBLC.IB 0520: 49 41 08 49 53 53 43 08 49 34 30 39 08 49 35 30 IA.ISSC.I409.I50 0530: 39 08 49 36 30 39 08 49 37 30 39 08 49 50 43 46 9.I609.I709.IPCF 0540: 08 49 44 4d 53 08 49 46 31 45 08 48 56 43 4f 08 .IDMS.IF1E.HVCO. 0550: 4e 58 44 31 20 4e 58 44 32 20 4e 58 44 33 20 4e NXD1 NXD2 NXD3 N 0560: 58 44 34 20 4e 58 44 35 20 4e 58 44 36 20 4e 58 XD4 NXD5 NXD6 NX 0570: 44 37 20 4e 58 44 38 20 47 53 4d 49 08 50 41 56 D7 NXD8 GSMI.PAV 0580: 50 08 00 08 4f 53 43 43 08 4e 45 58 50 08 53 42 P...OSCC.NEXP.SB 0590: 56 31 08 53 42 56 32 08 00 30 44 53 45 4e 08 45 V1.SBV2..0DSEN.E 05a0: 43 4f 4e 08 47 50 49 43 08 43 54 59 50 08 4c 30 CON.GPIC.CTYP.L0 05b0: 31 43 08 56 46 4e 30 08 56 46 4e 31 08 56 46 4e 1C.VFN0.VFN1.VFN 05c0: 32 08 56 46 4e 33 08 56 46 4e 34 08 00 48 05 4e 2.VFN3.VFN4..H.N 05d0: 56 47 41 20 4e 56 48 41 20 41 4d 44 41 20 44 49 VGA NVHA AMDA DI 05e0: 44 36 20 44 49 44 37 20 44 49 44 38 20 45 42 41 D6 DID7 DID8 EBA 05f0: 53 20 43 50 53 50 20 45 45 43 50 20 45 56 43 50 S CPSP EECP EVCP 0600: 20 58 42 41 53 20 4f 42 53 31 20 4f 42 53 32 20 XBAS OBS1 OBS2 0610: 4f 42 53 33 20 4f 42 53 34 20 4f 42 53 35 20 4f OBS3 OBS4 OBS5 O 0620: 42 53 36 20 4f 42 53 37 20 4f 42 53 38 20 00 48 BS6 OBS7 OBS8 .H 0630: 05 41 54 4d 43 08 50 54 4d 43 08 41 54 52 41 08 .ATMC.PTMC.ATRA. 0640: 50 54 52 41 08 50 4e 48 4d 20 54 42 41 42 20 54 PTRA.PNHM TBAB T 0650: 42 41 48 20 52 54 49 50 08 54 53 4f 44 08 41 54 BAH RTIP.TSOD.AT 0660: 50 43 08 50 54 50 43 08 50 46 4c 56 08 42 52 45 PC.PTPC.PFLV.BRE 0670: 56 08 53 47 4d 44 08 53 47 46 4c 08 50 57 4f 4b V.SGMD.SGFL.PWOK 0680: 08 48 4c 52 53 08 44 53 45 4c 08 45 53 45 4c 08 .HLRS.DSEL.ESEL. 0690: 50 53 45 4c 08 50 57 45 4e 08 50 52 53 54 08 4d PSEL.PWEN.PRST.M 06a0: 58 44 31 20 4d 58 44 32 20 4d 58 44 33 20 4d 58 XD1 MXD2 MXD3 MX 06b0: 44 34 20 4d 58 44 35 20 4d 58 44 36 20 4d 58 44 D4 MXD5 MXD6 MXD 06c0: 37 20 4d 58 44 38 20 47 42 41 53 10 00 28 41 4c 7 MXD8 GBAS..(AL 06d0: 46 50 08 49 4d 4f 4e 08 50 44 54 53 08 50 4b 47 FP.IMON.PDTS.PKG 06e0: 41 08 50 41 4d 54 08 41 43 30 46 08 41 43 31 46 A.PAMT.AC0F.AC1F 06f0: 08 44 54 53 33 08 44 54 53 34 08 52 53 56 32 08 .DTS3.DTS4.RSV2. 0700: 52 53 56 33 08 10 86 68 06 5c 5f 53 42 5f 08 50 RSV3...h.\_SB_.P 0710: 52 30 30 12 43 24 24 12 0f 04 0c ff ff 01 00 0a R00.C$$......... 0720: 00 4c 4e 4b 41 0a 00 12 0f 04 0c ff ff 01 00 0a .LNKA........... 0730: 01 4c 4e 4b 42 0a 00 12 0f 04 0c ff ff 01 00 0a .LNKB........... 0740: 02 4c 4e 4b 43 0a 00 12 0f 04 0c ff ff 01 00 0a .LNKC........... 0750: 03 4c 4e 4b 44 0a 00 12 0f 04 0c ff ff 06 00 0a .LNKD........... 0760: 00 4c 4e 4b 44 0a 00 12 0f 04 0c ff ff 06 00 0a .LNKD........... 0770: 01 4c 4e 4b 41 0a 00 12 0f 04 0c ff ff 06 00 0a .LNKA........... 0780: 02 4c 4e 4b 42 0a 00 12 0f 04 0c ff ff 06 00 0a .LNKB........... 0790: 03 4c 4e 4b 43 0a 00 12 0f 04 0c ff ff 04 00 0a .LNKC........... 07a0: 00 4c 4e 4b 41 0a 00 12 0f 04 0c ff ff 04 00 0a .LNKA........... 07b0: 01 4c 4e 4b 42 0a 00 12 0f 04 0c ff ff 04 00 0a .LNKB........... 07c0: 02 4c 4e 4b 43 0a 00 12 0f 04 0c ff ff 04 00 0a .LNKC........... 07d0: 03 4c 4e 4b 44 0a 00 12 0f 04 0c ff ff 1f 00 0a .LNKD........... 07e0: 02 4c 4e 4b 43 0a 00 12 0f 04 0c ff ff 1f 00 0a .LNKC........... 07f0: 03 4c 4e 4b 41 0a 00 12 0f 04 0c ff ff 1b 00 0a .LNKA........... 0800: 00 4c 4e 4b 47 0a 00 12 0f 04 0c ff ff 18 00 0a .LNKG........... 0810: 00 4c 4e 4b 45 0a 00 12 0f 04 0c ff ff 19 00 0a .LNKE........... 0820: 00 4c 4e 4b 45 0a 00 12 0f 04 0c ff ff 16 00 0a .LNKE........... 0830: 00 4c 4e 4b 41 0a 00 12 0f 04 0c ff ff 16 00 0a .LNKA........... 0840: 01 4c 4e 4b 44 0a 00 12 0f 04 0c ff ff 16 00 0a .LNKD........... 0850: 02 4c 4e 4b 43 0a 00 12 0f 04 0c ff ff 16 00 0a .LNKC........... 0860: 03 4c 4e 4b 42 0a 00 12 0f 04 0c ff ff 1f 00 0a .LNKB........... 0870: 00 4c 4e 4b 46 0a 00 12 0f 04 0c ff ff 1f 00 0a .LNKF........... 0880: 01 4c 4e 4b 44 0a 00 12 0f 04 0c ff ff 1d 00 0a .LNKD........... 0890: 00 4c 4e 4b 48 0a 00 12 0f 04 0c ff ff 1d 00 0a .LNKH........... 08a0: 01 4c 4e 4b 44 0a 00 12 0f 04 0c ff ff 1d 00 0a .LNKD........... 08b0: 02 4c 4e 4b 41 0a 00 12 0f 04 0c ff ff 1d 00 0a .LNKA........... 08c0: 03 4c 4e 4b 43 0a 00 12 0f 04 0c ff ff 1a 00 0a .LNKC........... 08d0: 00 4c 4e 4b 41 0a 00 12 0f 04 0c ff ff 1a 00 0a .LNKA........... 08e0: 01 4c 4e 4b 46 0a 00 12 0f 04 0c ff ff 1a 00 0a .LNKF........... 08f0: 02 4c 4e 4b 43 0a 00 12 0f 04 0c ff ff 1a 00 0a .LNKC........... 0900: 03 4c 4e 4b 44 0a 00 12 0f 04 0c ff ff 1c 00 0a .LNKD........... 0910: 00 4c 4e 4b 41 0a 00 12 0f 04 0c ff ff 1c 00 0a .LNKA........... 0920: 01 4c 4e 4b 42 0a 00 12 0f 04 0c ff ff 1c 00 0a .LNKB........... 0930: 02 4c 4e 4b 43 0a 00 12 0f 04 0c ff ff 1c 00 0a .LNKC........... 0940: 03 4c 4e 4b 44 0a 00 12 0f 04 0c ff ff 02 00 0a .LNKD........... 0950: 00 4c 4e 4b 41 0a 00 08 41 52 30 30 12 4b 1f 24 .LNKA...AR00.K.$ 0960: 12 0d 04 0c ff ff 01 00 0a 00 0a 00 0a 10 12 0d ................ 0970: 04 0c ff ff 01 00 0a 01 0a 00 0a 11 12 0d 04 0c ................ 0980: ff ff 01 00 0a 02 0a 00 0a 12 12 0d 04 0c ff ff ................ 0990: 01 00 0a 03 0a 00 0a 13 12 0d 04 0c ff ff 06 00 ................ 09a0: 0a 00 0a 00 0a 13 12 0d 04 0c ff ff 06 00 0a 01 ................ 09b0: 0a 00 0a 10 12 0d 04 0c ff ff 06 00 0a 02 0a 00 ................ 09c0: 0a 11 12 0d 04 0c ff ff 06 00 0a 03 0a 00 0a 12 ................ 09d0: 12 0d 04 0c ff ff 04 00 0a 00 0a 00 0a 10 12 0d ................ 09e0: 04 0c ff ff 04 00 0a 01 0a 00 0a 11 12 0d 04 0c ................ 09f0: ff ff 04 00 0a 02 0a 00 0a 12 12 0d 04 0c ff ff ................ 0a00: 04 00 0a 03 0a 00 0a 13 12 0d 04 0c ff ff 1f 00 ................ 0a10: 0a 02 0a 00 0a 12 12 0d 04 0c ff ff 1f 00 0a 03 ................ 0a20: 0a 00 0a 10 12 0d 04 0c ff ff 1b 00 0a 00 0a 00 ................ 0a30: 0a 16 12 0d 04 0c ff ff 18 00 0a 00 0a 00 0a 14 ................ 0a40: 12 0d 04 0c ff ff 19 00 0a 00 0a 00 0a 14 12 0d ................ 0a50: 04 0c ff ff 16 00 0a 00 0a 00 0a 10 12 0d 04 0c ................ 0a60: ff ff 16 00 0a 01 0a 00 0a 13 12 0d 04 0c ff ff ................ 0a70: 16 00 0a 02 0a 00 0a 12 12 0d 04 0c ff ff 16 00 ................ 0a80: 0a 03 0a 00 0a 11 12 0d 04 0c ff ff 1f 00 0a 00 ................ 0a90: 0a 00 0a 15 12 0d 04 0c ff ff 1f 00 0a 01 0a 00 ................ 0aa0: 0a 13 12 0d 04 0c ff ff 1d 00 0a 00 0a 00 0a 17 ................ 0ab0: 12 0d 04 0c ff ff 1d 00 0a 01 0a 00 0a 13 12 0d ................ 0ac0: 04 0c ff ff 1d 00 0a 02 0a 00 0a 10 12 0d 04 0c ................ 0ad0: ff ff 1d 00 0a 03 0a 00 0a 12 12 0d 04 0c ff ff ................ 0ae0: 1a 00 0a 00 0a 00 0a 10 12 0d 04 0c ff ff 1a 00 ................ 0af0: 0a 01 0a 00 0a 15 12 0d 04 0c ff ff 1a 00 0a 02 ................ 0b00: 0a 00 0a 12 12 0d 04 0c ff ff 1a 00 0a 03 0a 00 ................ 0b10: 0a 13 12 0d 04 0c ff ff 1c 00 0a 00 0a 00 0a 10 ................ 0b20: 12 0d 04 0c ff ff 1c 00 0a 01 0a 00 0a 11 12 0d ................ 0b30: 04 0c ff ff 1c 00 0a 02 0a 00 0a 12 12 0d 04 0c ................ 0b40: ff ff 1c 00 0a 03 0a 00 0a 13 12 0d 04 0c ff ff ................ 0b50: 02 00 0a 00 0a 00 0a 10 08 50 52 30 32 12 3a 04 .........PR02.:. 0b60: 12 0d 04 0b ff ff 0a 00 4c 4e 4b 41 0a 00 12 0d ........LNKA.... 0b70: 04 0b ff ff 0a 01 4c 4e 4b 42 0a 00 12 0d 04 0b ......LNKB...... 0b80: ff ff 0a 02 4c 4e 4b 43 0a 00 12 0d 04 0b ff ff ....LNKC........ 0b90: 0a 03 4c 4e 4b 44 0a 00 08 41 52 30 32 12 32 04 ..LNKD...AR02.2. 0ba0: 12 0b 04 0b ff ff 0a 00 0a 00 0a 10 12 0b 04 0b ................ 0bb0: ff ff 0a 01 0a 00 0a 11 12 0b 04 0b ff ff 0a 02 ................ 0bc0: 0a 00 0a 12 12 0b 04 0b ff ff 0a 03 0a 00 0a 13 ................ 0bd0: 08 50 52 30 41 12 3a 04 12 0d 04 0b ff ff 0a 00 .PR0A.:......... 0be0: 4c 4e 4b 42 0a 00 12 0d 04 0b ff ff 0a 01 4c 4e LNKB..........LN 0bf0: 4b 43 0a 00 12 0d 04 0b ff ff 0a 02 4c 4e 4b 44 KC..........LNKD 0c00: 0a 00 12 0d 04 0b ff ff 0a 03 4c 4e 4b 41 0a 00 ..........LNKA.. 0c10: 08 41 52 30 41 12 32 04 12 0b 04 0b ff ff 0a 00 .AR0A.2......... 0c20: 0a 00 0a 11 12 0b 04 0b ff ff 0a 01 0a 00 0a 12 ................ 0c30: 12 0b 04 0b ff ff 0a 02 0a 00 0a 13 12 0b 04 0b ................ 0c40: ff ff 0a 03 0a 00 0a 10 08 50 52 30 42 12 3a 04 .........PR0B.:. 0c50: 12 0d 04 0b ff ff 0a 00 4c 4e 4b 43 0a 00 12 0d ........LNKC.... 0c60: 04 0b ff ff 0a 01 4c 4e 4b 44 0a 00 12 0d 04 0b ......LNKD...... 0c70: ff ff 0a 02 4c 4e 4b 41 0a 00 12 0d 04 0b ff ff ....LNKA........ 0c80: 0a 03 4c 4e 4b 42 0a 00 08 41 52 30 42 12 32 04 ..LNKB...AR0B.2. 0c90: 12 0b 04 0b ff ff 0a 00 0a 00 0a 12 12 0b 04 0b ................ 0ca0: ff ff 0a 01 0a 00 0a 13 12 0b 04 0b ff ff 0a 02 ................ 0cb0: 0a 00 0a 10 12 0b 04 0b ff ff 0a 03 0a 00 0a 11 ................ 0cc0: 08 50 52 30 43 12 3a 04 12 0d 04 0b ff ff 0a 00 .PR0C.:......... 0cd0: 4c 4e 4b 44 0a 00 12 0d 04 0b ff ff 0a 01 4c 4e LNKD..........LN 0ce0: 4b 41 0a 00 12 0d 04 0b ff ff 0a 02 4c 4e 4b 42 KA..........LNKB 0cf0: 0a 00 12 0d 04 0b ff ff 0a 03 4c 4e 4b 43 0a 00 ..........LNKC.. 0d00: 08 41 52 30 43 12 32 04 12 0b 04 0b ff ff 0a 00 .AR0C.2......... 0d10: 0a 00 0a 13 12 0b 04 0b ff ff 0a 01 0a 00 0a 10 ................ 0d20: 12 0b 04 0b ff ff 0a 02 0a 00 0a 11 12 0b 04 0b ................ 0d30: ff ff 0a 03 0a 00 0a 12 08 50 52 30 34 12 3a 04 .........PR04.:. 0d40: 12 0d 04 0b ff ff 0a 00 4c 4e 4b 41 0a 00 12 0d ........LNKA.... 0d50: 04 0b ff ff 0a 01 4c 4e 4b 42 0a 00 12 0d 04 0b ......LNKB...... 0d60: ff ff 0a 02 4c 4e 4b 43 0a 00 12 0d 04 0b ff ff ....LNKC........ 0d70: 0a 03 4c 4e 4b 44 0a 00 08 41 52 30 34 12 32 04 ..LNKD...AR04.2. 0d80: 12 0b 04 0b ff ff 0a 00 0a 00 0a 10 12 0b 04 0b ................ 0d90: ff ff 0a 01 0a 00 0a 11 12 0b 04 0b ff ff 0a 02 ................ 0da0: 0a 00 0a 12 12 0b 04 0b ff ff 0a 03 0a 00 0a 13 ................ 0db0: 08 50 52 30 35 12 3a 04 12 0d 04 0b ff ff 0a 00 .PR05.:......... 0dc0: 4c 4e 4b 42 0a 00 12 0d 04 0b ff ff 0a 01 4c 4e LNKB..........LN 0dd0: 4b 43 0a 00 12 0d 04 0b ff ff 0a 02 4c 4e 4b 44 KC..........LNKD 0de0: 0a 00 12 0d 04 0b ff ff 0a 03 4c 4e 4b 41 0a 00 ..........LNKA.. 0df0: 08 41 52 30 35 12 32 04 12 0b 04 0b ff ff 0a 00 .AR05.2......... 0e00: 0a 00 0a 11 12 0b 04 0b ff ff 0a 01 0a 00 0a 12 ................ 0e10: 12 0b 04 0b ff ff 0a 02 0a 00 0a 13 12 0b 04 0b ................ 0e20: ff ff 0a 03 0a 00 0a 10 08 50 52 30 36 12 3a 04 .........PR06.:. 0e30: 12 0d 04 0b ff ff 0a 00 4c 4e 4b 43 0a 00 12 0d ........LNKC.... 0e40: 04 0b ff ff 0a 01 4c 4e 4b 44 0a 00 12 0d 04 0b ......LNKD...... 0e50: ff ff 0a 02 4c 4e 4b 41 0a 00 12 0d 04 0b ff ff ....LNKA........ 0e60: 0a 03 4c 4e 4b 42 0a 00 08 41 52 30 36 12 32 04 ..LNKB...AR06.2. 0e70: 12 0b 04 0b ff ff 0a 00 0a 00 0a 12 12 0b 04 0b ................ 0e80: ff ff 0a 01 0a 00 0a 13 12 0b 04 0b ff ff 0a 02 ................ 0e90: 0a 00 0a 10 12 0b 04 0b ff ff 0a 03 0a 00 0a 11 ................ 0ea0: 08 50 52 30 37 12 3a 04 12 0d 04 0b ff ff 0a 00 .PR07.:......... 0eb0: 4c 4e 4b 44 0a 00 12 0d 04 0b ff ff 0a 01 4c 4e LNKD..........LN 0ec0: 4b 41 0a 00 12 0d 04 0b ff ff 0a 02 4c 4e 4b 42 KA..........LNKB 0ed0: 0a 00 12 0d 04 0b ff ff 0a 03 4c 4e 4b 43 0a 00 ..........LNKC.. 0ee0: 08 41 52 30 37 12 32 04 12 0b 04 0b ff ff 0a 00 .AR07.2......... 0ef0: 0a 00 0a 13 12 0b 04 0b ff ff 0a 01 0a 00 0a 10 ................ 0f00: 12 0b 04 0b ff ff 0a 02 0a 00 0a 11 12 0b 04 0b ................ 0f10: ff ff 0a 03 0a 00 0a 12 08 50 52 30 38 12 3a 04 .........PR08.:. 0f20: 12 0d 04 0b ff ff 0a 00 4c 4e 4b 41 0a 00 12 0d ........LNKA.... 0f30: 04 0b ff ff 0a 01 4c 4e 4b 42 0a 00 12 0d 04 0b ......LNKB...... 0f40: ff ff 0a 02 4c 4e 4b 43 0a 00 12 0d 04 0b ff ff ....LNKC........ 0f50: 0a 03 4c 4e 4b 44 0a 00 08 41 52 30 38 12 32 04 ..LNKD...AR08.2. 0f60: 12 0b 04 0b ff ff 0a 00 0a 00 0a 10 12 0b 04 0b ................ 0f70: ff ff 0a 01 0a 00 0a 11 12 0b 04 0b ff ff 0a 02 ................ 0f80: 0a 00 0a 12 12 0b 04 0b ff ff 0a 03 0a 00 0a 13 ................ 0f90: 08 50 52 30 39 12 3a 04 12 0d 04 0b ff ff 0a 00 .PR09.:......... 0fa0: 4c 4e 4b 42 0a 00 12 0d 04 0b ff ff 0a 01 4c 4e LNKB..........LN 0fb0: 4b 43 0a 00 12 0d 04 0b ff ff 0a 02 4c 4e 4b 44 KC..........LNKD 0fc0: 0a 00 12 0d 04 0b ff ff 0a 03 4c 4e 4b 41 0a 00 ..........LNKA.. 0fd0: 08 41 52 30 39 12 32 04 12 0b 04 0b ff ff 0a 00 .AR09.2......... 0fe0: 0a 00 0a 11 12 0b 04 0b ff ff 0a 01 0a 00 0a 12 ................ 0ff0: 12 0b 04 0b ff ff 0a 02 0a 00 0a 13 12 0b 04 0b ................ 1000: ff ff 0a 03 0a 00 0a 10 08 50 52 30 45 12 3a 04 .........PR0E.:. 1010: 12 0d 04 0b ff ff 0a 00 4c 4e 4b 43 0a 00 12 0d ........LNKC.... 1020: 04 0b ff ff 0a 01 4c 4e 4b 44 0a 00 12 0d 04 0b ......LNKD...... 1030: ff ff 0a 02 4c 4e 4b 41 0a 00 12 0d 04 0b ff ff ....LNKA........ 1040: 0a 03 4c 4e 4b 42 0a 00 08 41 52 30 45 12 32 04 ..LNKB...AR0E.2. 1050: 12 0b 04 0b ff ff 0a 00 0a 00 0a 12 12 0b 04 0b ................ 1060: ff ff 0a 01 0a 00 0a 13 12 0b 04 0b ff ff 0a 02 ................ 1070: 0a 00 0a 10 12 0b 04 0b ff ff 0a 03 0a 00 0a 11 ................ 1080: 08 50 52 30 46 12 3a 04 12 0d 04 0b ff ff 0a 00 .PR0F.:......... 1090: 4c 4e 4b 44 0a 00 12 0d 04 0b ff ff 0a 01 4c 4e LNKD..........LN 10a0: 4b 41 0a 00 12 0d 04 0b ff ff 0a 02 4c 4e 4b 42 KA..........LNKB 10b0: 0a 00 12 0d 04 0b ff ff 0a 03 4c 4e 4b 43 0a 00 ..........LNKC.. 10c0: 08 41 52 30 46 12 32 04 12 0b 04 0b ff ff 0a 00 .AR0F.2......... 10d0: 0a 00 0a 13 12 0b 04 0b ff ff 0a 01 0a 00 0a 10 ................ 10e0: 12 0b 04 0b ff ff 0a 02 0a 00 0a 11 12 0b 04 0b ................ 10f0: ff ff 0a 03 0a 00 0a 12 08 50 52 30 31 12 4b 13 .........PR01.K. 1100: 14 12 0f 04 0c ff ff 03 00 0a 00 4c 4e 4b 44 0a ...........LNKD. 1110: 00 12 0f 04 0c ff ff 03 00 0a 01 4c 4e 4b 43 0a ...........LNKC. 1120: 00 12 0f 04 0c ff ff 03 00 0a 02 4c 4e 4b 46 0a ...........LNKF. 1130: 00 12 0f 04 0c ff ff 03 00 0a 03 4c 4e 4b 47 0a ...........LNKG. 1140: 00 12 0f 04 0c ff ff 02 00 0a 00 4c 4e 4b 43 0a ...........LNKC. 1150: 00 12 0f 04 0c ff ff 02 00 0a 01 4c 4e 4b 44 0a ...........LNKD. 1160: 00 12 0f 04 0c ff ff 02 00 0a 02 4c 4e 4b 42 0a ...........LNKB. 1170: 00 12 0f 04 0c ff ff 02 00 0a 03 4c 4e 4b 41 0a ...........LNKA. 1180: 00 12 0d 04 0b ff ff 0a 00 4c 4e 4b 46 0a 00 12 .........LNKF... 1190: 0d 04 0b ff ff 0a 01 4c 4e 4b 47 0a 00 12 0d 04 .......LNKG..... 11a0: 0b ff ff 0a 02 4c 4e 4b 48 0a 00 12 0d 04 0b ff .....LNKH....... 11b0: ff 0a 03 4c 4e 4b 45 0a 00 12 0f 04 0c ff ff 01 ...LNKE......... 11c0: 00 0a 00 4c 4e 4b 47 0a 00 12 0f 04 0c ff ff 01 ...LNKG......... 11d0: 00 0a 01 4c 4e 4b 46 0a 00 12 0f 04 0c ff ff 01 ...LNKF......... 11e0: 00 0a 02 4c 4e 4b 45 0a 00 12 0f 04 0c ff ff 01 ...LNKE......... 11f0: 00 0a 03 4c 4e 4b 48 0a 00 12 0f 04 0c ff ff 05 ...LNKH......... 1200: 00 0a 00 4c 4e 4b 43 0a 00 12 0f 04 0c ff ff 05 ...LNKC......... 1210: 00 0a 01 4c 4e 4b 45 0a 00 12 0f 04 0c ff ff 05 ...LNKE......... 1220: 00 0a 02 4c 4e 4b 47 0a 00 12 0f 04 0c ff ff 05 ...LNKG......... 1230: 00 0a 03 4c 4e 4b 46 0a 00 08 41 52 30 31 12 43 ...LNKF...AR01.C 1240: 11 14 12 0d 04 0c ff ff 03 00 0a 00 0a 00 0a 13 ................ 1250: 12 0d 04 0c ff ff 03 00 0a 01 0a 00 0a 12 12 0d ................ 1260: 04 0c ff ff 03 00 0a 02 0a 00 0a 15 12 0d 04 0c ................ 1270: ff ff 03 00 0a 03 0a 00 0a 16 12 0d 04 0c ff ff ................ 1280: 02 00 0a 00 0a 00 0a 12 12 0d 04 0c ff ff 02 00 ................ 1290: 0a 01 0a 00 0a 13 12 0d 04 0c ff ff 02 00 0a 02 ................ 12a0: 0a 00 0a 11 12 0d 04 0c ff ff 02 00 0a 03 0a 00 ................ 12b0: 0a 10 12 0b 04 0b ff ff 0a 00 0a 00 0a 15 12 0b ................ 12c0: 04 0b ff ff 0a 01 0a 00 0a 16 12 0b 04 0b ff ff ................ 12d0: 0a 02 0a 00 0a 17 12 0b 04 0b ff ff 0a 03 0a 00 ................ 12e0: 0a 14 12 0d 04 0c ff ff 01 00 0a 00 0a 00 0a 16 ................ 12f0: 12 0d 04 0c ff ff 01 00 0a 01 0a 00 0a 15 12 0d ................ 1300: 04 0c ff ff 01 00 0a 02 0a 00 0a 14 12 0d 04 0c ................ 1310: ff ff 01 00 0a 03 0a 00 0a 17 12 0d 04 0c ff ff ................ 1320: 05 00 0a 00 0a 00 0a 12 12 0d 04 0c ff ff 05 00 ................ 1330: 0a 01 0a 00 0a 14 12 0d 04 0c ff ff 05 00 0a 02 ................ 1340: 0a 00 0a 16 12 0d 04 0c ff ff 05 00 0a 03 0a 00 ................ 1350: 0a 15 08 50 52 53 41 11 09 0a 06 23 f8 1c 18 79 ...PRSA....#...y 1360: 00 08 50 52 53 42 11 09 0a 06 23 f8 14 18 79 00 ..PRSB....#...y. 1370: 06 50 52 53 42 50 52 53 43 06 50 52 53 42 50 52 .PRSBPRSC.PRSBPR 1380: 53 44 06 50 52 53 42 50 52 53 45 06 50 52 53 42 SD.PRSBPRSE.PRSB 1390: 50 52 53 46 06 50 52 53 42 50 52 53 47 06 50 52 PRSF.PRSBPRSG.PR 13a0: 53 42 50 52 53 48 5b 82 84 9e 05 50 43 49 30 08 SBPRSH[....PCI0. 13b0: 5f 48 49 44 0c 41 d0 0a 08 08 5f 43 49 44 0c 41 _HID.A...._CID.A 13c0: d0 0a 03 08 5f 41 44 52 0a 00 14 0a 5e 42 4e 30 ...._ADR....^BN0 13d0: 30 00 a4 0a 00 14 0b 5f 42 42 4e 00 a4 42 4e 30 0......_BBN..BN0 13e0: 30 08 5f 55 49 44 0a 00 14 16 5f 50 52 54 00 a0 0._UID...._PRT.. 13f0: 0a 50 49 43 4d a4 41 52 30 30 a4 50 52 30 30 5b .PICM.AR00.PR00[ 1400: 80 48 42 55 53 02 0a 00 0b 00 01 5b 81 4b 0d 48 .HBUS......[.K.H 1410: 42 55 53 03 00 40 20 45 50 45 4e 01 00 0b 45 50 BUS..@ EPEN...EP 1420: 42 52 14 00 20 4d 48 45 4e 01 00 0e 4d 48 42 52 BR.. MHEN...MHBR 1430: 11 00 20 47 43 4c 4b 01 00 1f 44 30 45 4e 01 00 .. GCLK...D0EN.. 1440: 4f 05 50 58 45 4e 01 50 58 53 5a 02 00 17 50 58 O.PXEN.PXSZ...PX 1450: 42 52 06 00 20 44 49 45 4e 01 00 0b 44 49 42 52 BR.. DIEN...DIBR 1460: 14 00 20 00 14 4d 45 42 52 0c 00 40 06 00 04 50 .. ..MEBR..@...P 1470: 4d 30 48 02 00 02 50 4d 31 4c 02 00 02 50 4d 31 M0H...PM1L...PM1 1480: 48 02 00 02 50 4d 32 4c 02 00 02 50 4d 32 48 02 H...PM2L...PM2H. 1490: 00 02 50 4d 33 4c 02 00 02 50 4d 33 48 02 00 02 ..PM3L...PM3H... 14a0: 50 4d 34 4c 02 00 02 50 4d 34 48 02 00 02 50 4d PM4L...PM4H...PM 14b0: 35 4c 02 00 02 50 4d 35 48 02 00 02 50 4d 36 4c 5L...PM5H...PM6L 14c0: 02 00 02 50 4d 36 48 02 00 02 00 48 10 00 14 54 ...PM6H....H...T 14d0: 55 55 44 13 00 49 07 00 14 54 4c 55 44 0c 00 40 UUD..I...TLUD..@ 14e0: 04 00 07 48 54 53 45 01 5b 80 4d 43 48 54 00 0c ...HTSE.[.MCHT.. 14f0: 00 00 d1 fe 0b 00 11 5b 81 06 4d 43 48 54 01 08 .......[..MCHT.. 1500: 42 55 46 30 11 43 1f 0b ee 01 88 0d 00 02 0c 00 BUF0.C.......... 1510: 00 00 00 00 ff 00 00 00 00 01 87 17 00 01 0c 03 ................ 1520: 00 00 00 00 00 00 00 00 f7 0c 00 00 00 00 00 00 ................ 1530: f8 0c 00 00 47 01 f8 0c f8 0c 01 08 87 17 00 01 ....G........... 1540: 0c 03 00 00 00 00 00 0d 00 00 ff ff 00 00 00 00 ................ 1550: 00 00 00 f3 00 00 87 17 00 00 0c 03 00 00 00 00 ................ 1560: 00 00 0a 00 ff ff 0b 00 00 00 00 00 00 00 02 00 ................ 1570: 87 17 00 00 0c 03 00 00 00 00 00 00 0c 00 ff 3f ...............? 1580: 0c 00 00 00 00 00 00 40 00 00 87 17 00 00 0c 03 .......@........ 1590: 00 00 00 00 00 40 0c 00 ff 7f 0c 00 00 00 00 00 .....@.......... 15a0: 00 40 00 00 87 17 00 00 0c 03 00 00 00 00 00 80 .@.............. 15b0: 0c 00 ff bf 0c 00 00 00 00 00 00 40 00 00 87 17 ...........@.... 15c0: 00 00 0c 03 00 00 00 00 00 c0 0c 00 ff ff 0c 00 ................ 15d0: 00 00 00 00 00 40 00 00 87 17 00 00 0c 03 00 00 .....@.......... 15e0: 00 00 00 00 0d 00 ff 3f 0d 00 00 00 00 00 00 40 .......?.......@ 15f0: 00 00 87 17 00 00 0c 03 00 00 00 00 00 40 0d 00 .............@.. 1600: ff 7f 0d 00 00 00 00 00 00 40 00 00 87 17 00 00 .........@...... 1610: 0c 03 00 00 00 00 00 80 0d 00 ff bf 0d 00 00 00 ................ 1620: 00 00 00 40 00 00 87 17 00 00 0c 03 00 00 00 00 ...@............ 1630: 00 c0 0d 00 ff ff 0d 00 00 00 00 00 00 40 00 00 .............@.. 1640: 87 17 00 00 0c 03 00 00 00 00 00 00 0e 00 ff 3f ...............? 1650: 0e 00 00 00 00 00 00 40 00 00 87 17 00 00 0c 03 .......@........ 1660: 00 00 00 00 00 40 0e 00 ff 7f 0e 00 00 00 00 00 .....@.......... 1670: 00 40 00 00 87 17 00 00 0c 03 00 00 00 00 00 80 .@.............. 1680: 0e 00 ff bf 0e 00 00 00 00 00 00 40 00 00 87 17 ...........@.... 1690: 00 00 0c 03 00 00 00 00 00 c0 0e 00 ff ff 0e 00 ................ 16a0: 00 00 00 00 00 40 00 00 87 17 00 00 0c 03 00 00 .....@.......... 16b0: 00 00 00 00 0f 00 ff ff 0f 00 00 00 00 00 00 00 ................ 16c0: 01 00 87 17 00 00 0c 03 00 00 00 00 00 00 00 00 ................ 16d0: ff ff af fe 00 00 00 00 00 00 b0 fe 87 17 00 00 ................ 16e0: 0c 03 00 00 00 00 00 00 d4 fe ff 4f d4 fe 00 00 ...........O.... 16f0: 00 00 00 50 00 00 79 00 14 47 31 5f 43 52 53 08 ...P..y..G1_CRS. 1700: 8b 42 55 46 30 0a 0a 50 42 4d 58 70 74 7a 5c 50 .BUF0..PBMXptz\P 1710: 45 4c 4e 0a 14 00 0a 02 00 50 42 4d 58 8b 42 55 ELN......PBMX.BU 1720: 46 30 0a 0e 50 42 4c 4e 70 74 7a 5c 50 45 4c 4e F0..PBLNptz\PELN 1730: 0a 14 00 0a 01 00 50 42 4c 4e a0 16 50 4d 31 4c ......PBLN..PM1L 1740: 8a 42 55 46 30 0a 7c 43 30 4c 4e 70 00 43 30 4c .BUF0.|C0LNp.C0L 1750: 4e a0 1a 93 50 4d 31 4c 0a 01 8d 42 55 46 30 0b N...PM1L...BUF0. 1760: 58 03 43 30 52 57 70 00 43 30 52 57 a0 16 50 4d X.C0RWp.C0RW..PM 1770: 31 48 8a 42 55 46 30 0a 96 43 34 4c 4e 70 00 43 1H.BUF0..C4LNp.C 1780: 34 4c 4e a0 1a 93 50 4d 31 48 0a 01 8d 42 55 46 4LN...PM1H...BUF 1790: 30 0b 28 04 43 34 52 57 70 00 43 34 52 57 a0 16 0.(.C4RWp.C4RW.. 17a0: 50 4d 32 4c 8a 42 55 46 30 0a b0 43 38 4c 4e 70 PM2L.BUF0..C8LNp 17b0: 00 43 38 4c 4e a0 1a 93 50 4d 32 4c 0a 01 8d 42 .C8LN...PM2L...B 17c0: 55 46 30 0b f8 04 43 38 52 57 70 00 43 38 52 57 UF0...C8RWp.C8RW 17d0: a0 16 50 4d 32 48 8a 42 55 46 30 0a ca 43 43 4c ..PM2H.BUF0..CCL 17e0: 4e 70 00 43 43 4c 4e a0 1a 93 50 4d 32 48 0a 01 Np.CCLN...PM2H.. 17f0: 8d 42 55 46 30 0b c8 05 43 43 52 57 70 00 43 43 .BUF0...CCRWp.CC 1800: 52 57 a0 16 50 4d 33 4c 8a 42 55 46 30 0a e4 44 RW..PM3L.BUF0..D 1810: 30 4c 4e 70 00 44 30 4c 4e a0 1a 93 50 4d 33 4c 0LNp.D0LN...PM3L 1820: 0a 01 8d 42 55 46 30 0b 98 06 44 30 52 57 70 00 ...BUF0...D0RWp. 1830: 44 30 52 57 a0 16 50 4d 33 48 8a 42 55 46 30 0a D0RW..PM3H.BUF0. 1840: fe 44 34 4c 4e 70 00 44 34 4c 4e a0 1a 93 50 4d .D4LNp.D4LN...PM 1850: 33 48 0a 01 8d 42 55 46 30 0b 68 07 44 34 52 57 3H...BUF0.h.D4RW 1860: 70 00 44 34 52 57 a0 17 50 4d 34 4c 8a 42 55 46 p.D4RW..PM4L.BUF 1870: 30 0b 18 01 44 38 4c 4e 70 00 44 38 4c 4e a0 1a 0...D8LNp.D8LN.. 1880: 93 50 4d 34 4c 0a 01 8d 42 55 46 30 0b 38 08 44 .PM4L...BUF0.8.D 1890: 38 52 57 70 00 44 38 52 57 a0 17 50 4d 34 48 8a 8RWp.D8RW..PM4H. 18a0: 42 55 46 30 0b 32 01 44 43 4c 4e 70 00 44 43 4c BUF0.2.DCLNp.DCL 18b0: 4e a0 1a 93 50 4d 34 48 0a 01 8d 42 55 46 30 0b N...PM4H...BUF0. 18c0: 08 09 44 43 52 57 70 00 44 43 52 57 a0 17 50 4d ..DCRWp.DCRW..PM 18d0: 35 4c 8a 42 55 46 30 0b 4c 01 45 30 4c 4e 70 00 5L.BUF0.L.E0LNp. 18e0: 45 30 4c 4e a0 1a 93 50 4d 35 4c 0a 01 8d 42 55 E0LN...PM5L...BU 18f0: 46 30 0b d8 09 45 30 52 57 70 00 45 30 52 57 a0 F0...E0RWp.E0RW. 1900: 17 50 4d 35 48 8a 42 55 46 30 0b 66 01 45 34 4c .PM5H.BUF0.f.E4L 1910: 4e 70 00 45 34 4c 4e a0 1a 93 50 4d 35 48 0a 01 Np.E4LN...PM5H.. 1920: 8d 42 55 46 30 0b a8 0a 45 34 52 57 70 00 45 34 .BUF0...E4RWp.E4 1930: 52 57 a0 17 50 4d 36 4c 8a 42 55 46 30 0b 80 01 RW..PM6L.BUF0... 1940: 45 38 4c 4e 70 00 45 38 4c 4e a0 1a 93 50 4d 36 E8LNp.E8LN...PM6 1950: 4c 0a 01 8d 42 55 46 30 0b 78 0b 45 38 52 57 70 L...BUF0.x.E8RWp 1960: 00 45 38 52 57 a0 17 50 4d 36 48 8a 42 55 46 30 .E8RW..PM6H.BUF0 1970: 0b 9a 01 45 43 4c 4e 70 00 45 43 4c 4e a0 1a 93 ...ECLNp.ECLN... 1980: 50 4d 36 48 0a 01 8d 42 55 46 30 0b 48 0c 45 43 PM6H...BUF0.H.EC 1990: 52 57 70 00 45 43 52 57 a0 17 50 4d 30 48 8a 42 RWp.ECRW..PM0H.B 19a0: 55 46 30 0b b4 01 46 30 4c 4e 70 00 46 30 4c 4e UF0...F0LNp.F0LN 19b0: a0 1a 93 50 4d 30 48 0a 01 8d 42 55 46 30 0b 18 ...PM0H...BUF0.. 19c0: 0d 46 30 52 57 70 00 46 30 52 57 8a 42 55 46 30 .F0RWp.F0RW.BUF0 19d0: 0b c2 01 4d 31 4d 4e 8a 42 55 46 30 0b c6 01 4d ...M1MN.BUF0...M 19e0: 31 4d 58 8a 42 55 46 30 0b ce 01 4d 31 4c 4e 79 1MX.BUF0...M1LNy 19f0: 54 4c 55 44 0a 14 4d 31 4d 4e 72 74 4d 31 4d 58 TLUD..M1MNrtM1MX 1a00: 4d 31 4d 4e 00 0a 01 4d 31 4c 4e a4 42 55 46 30 M1MN...M1LN.BUF0 1a10: 08 47 55 49 44 11 13 0a 10 5b 4d db 33 f7 1f 1c .GUID....[M.3... 1a20: 40 96 57 74 41 c0 3d d7 66 08 53 55 50 50 0a 00 @.WtA.=.f.SUPP.. 1a30: 08 43 54 52 4c 0a 00 14 40 0b 5f 4f 53 43 0c 70 .CTRL...@._OSC.p 1a40: 6b 60 8a 60 0a 00 43 44 57 31 8a 60 0a 04 43 44 k`.`..CDW1.`..CD 1a50: 57 32 8a 60 0a 08 43 44 57 33 a0 4e 07 93 68 47 W2.`..CDW3.N..hG 1a60: 55 49 44 70 43 44 57 32 53 55 50 50 70 43 44 57 UIDpCDW2SUPPpCDW 1a70: 33 43 54 52 4c a0 27 80 7b 43 44 57 31 0a 01 00 3CTRL.'.{CDW1... 1a80: 00 a0 0d 7b 43 54 52 4c 0a 01 00 4e 48 50 47 a0 ...{CTRL...NHPG. 1a90: 0d 7b 43 54 52 4c 0a 04 00 4e 50 4d 45 a0 10 92 .{CTRL...NPME... 1aa0: 93 69 01 7d 43 44 57 31 0a 08 43 44 57 31 a0 16 .i.}CDW1..CDW1.. 1ab0: 92 93 43 44 57 33 43 54 52 4c 7d 43 44 57 31 0a ..CDW3CTRL}CDW1. 1ac0: 10 43 44 57 31 70 43 54 52 4c 43 44 57 33 70 43 .CDW1pCTRLCDW3pC 1ad0: 54 52 4c 4f 53 43 43 a4 60 a1 0e 7d 43 44 57 31 TRLOSCC.`..}CDW1 1ae0: 0a 04 43 44 57 31 a4 60 10 48 19 5c 2e 5f 53 42 ..CDW1.`.H.\._SB 1af0: 5f 50 43 49 30 14 11 41 52 30 30 00 a4 5c 2e 5f _PCI0..AR00..\._ 1b00: 53 42 5f 41 52 30 30 14 11 50 52 30 30 00 a4 5c SB_AR00..PR00..\ 1b10: 2e 5f 53 42 5f 50 52 30 30 14 11 41 52 30 31 00 ._SB_PR00..AR01. 1b20: a4 5c 2e 5f 53 42 5f 41 52 30 31 14 11 50 52 30 .\._SB_AR01..PR0 1b30: 31 00 a4 5c 2e 5f 53 42 5f 50 52 30 31 14 11 41 1..\._SB_PR01..A 1b40: 52 30 32 00 a4 5c 2e 5f 53 42 5f 41 52 30 32 14 R02..\._SB_AR02. 1b50: 11 50 52 30 32 00 a4 5c 2e 5f 53 42 5f 50 52 30 .PR02..\._SB_PR0 1b60: 32 14 11 41 52 30 34 00 a4 5c 2e 5f 53 42 5f 41 2..AR04..\._SB_A 1b70: 52 30 34 14 11 50 52 30 34 00 a4 5c 2e 5f 53 42 R04..PR04..\._SB 1b80: 5f 50 52 30 34 14 11 41 52 30 35 00 a4 5c 2e 5f _PR04..AR05..\._ 1b90: 53 42 5f 41 52 30 35 14 11 50 52 30 35 00 a4 5c SB_AR05..PR05..\ 1ba0: 2e 5f 53 42 5f 50 52 30 35 14 11 41 52 30 36 00 ._SB_PR05..AR06. 1bb0: a4 5c 2e 5f 53 42 5f 41 52 30 36 14 11 50 52 30 .\._SB_AR06..PR0 1bc0: 36 00 a4 5c 2e 5f 53 42 5f 50 52 30 36 14 11 41 6..\._SB_PR06..A 1bd0: 52 30 37 00 a4 5c 2e 5f 53 42 5f 41 52 30 37 14 R07..\._SB_AR07. 1be0: 11 50 52 30 37 00 a4 5c 2e 5f 53 42 5f 50 52 30 .PR07..\._SB_PR0 1bf0: 37 14 11 41 52 30 38 00 a4 5c 2e 5f 53 42 5f 41 7..AR08..\._SB_A 1c00: 52 30 38 14 11 50 52 30 38 00 a4 5c 2e 5f 53 42 R08..PR08..\._SB 1c10: 5f 50 52 30 38 14 11 41 52 30 39 00 a4 5c 2e 5f _PR08..AR09..\._ 1c20: 53 42 5f 41 52 30 39 14 11 50 52 30 39 00 a4 5c SB_AR09..PR09..\ 1c30: 2e 5f 53 42 5f 50 52 30 39 14 11 41 52 30 41 00 ._SB_PR09..AR0A. 1c40: a4 5c 2e 5f 53 42 5f 41 52 30 41 14 11 50 52 30 .\._SB_AR0A..PR0 1c50: 41 00 a4 5c 2e 5f 53 42 5f 50 52 30 41 14 11 41 A..\._SB_PR0A..A 1c60: 52 30 42 00 a4 5c 2e 5f 53 42 5f 41 52 30 42 14 R0B..\._SB_AR0B. 1c70: 11 50 52 30 42 00 a4 5c 2e 5f 53 42 5f 50 52 30 .PR0B..\._SB_PR0 1c80: 42 5b 82 45 04 50 45 47 30 08 5f 41 44 52 0c 00 B[.E.PEG0._ADR.. 1c90: 00 01 00 14 0f 5f 50 52 57 00 a4 47 50 52 57 0a ....._PRW..GPRW. 1ca0: 09 0a 04 14 16 5f 50 52 54 00 a0 0a 50 49 43 4d ....._PRT...PICM 1cb0: a4 41 52 30 32 a4 50 52 30 32 5b 82 0c 47 46 58 .AR02.PR02[..GFX 1cc0: 30 08 5f 41 44 52 0a 00 5b 82 36 50 45 47 31 08 0._ADR..[.6PEG1. 1cd0: 5f 41 44 52 0c 01 00 01 00 14 0f 5f 50 52 57 00 _ADR......._PRW. 1ce0: a4 47 50 52 57 0a 09 0a 04 14 16 5f 50 52 54 00 .GPRW......_PRT. 1cf0: a0 0a 50 49 43 4d a4 41 52 30 41 a4 50 52 30 41 ..PICM.AR0A.PR0A 1d00: 5b 82 36 50 45 47 32 08 5f 41 44 52 0c 02 00 01 [.6PEG2._ADR.... 1d10: 00 14 0f 5f 50 52 57 00 a4 47 50 52 57 0a 09 0a ..._PRW..GPRW... 1d20: 04 14 16 5f 50 52 54 00 a0 0a 50 49 43 4d a4 41 ..._PRT...PICM.A 1d30: 52 30 42 a4 50 52 30 42 5b 82 36 50 45 47 33 08 R0B.PR0B[.6PEG3. 1d40: 5f 41 44 52 0c 00 00 06 00 14 0f 5f 50 52 57 00 _ADR......._PRW. 1d50: a4 47 50 52 57 0a 09 0a 04 14 16 5f 50 52 54 00 .GPRW......_PRT. 1d60: a0 0a 50 49 43 4d a4 41 52 30 43 a4 50 52 30 43 ..PICM.AR0C.PR0C 1d70: 5b 82 1f 42 30 44 34 08 5f 41 44 52 0c 00 00 04 [..B0D4._ADR.... 1d80: 00 14 0f 5f 50 52 57 00 a4 47 50 52 57 0a 09 0a ..._PRW..GPRW... 1d90: 04 5b 82 36 50 30 50 31 08 5f 41 44 52 0c 00 00 .[.6P0P1._ADR... 1da0: 1e 00 14 0f 5f 50 52 57 00 a4 47 50 52 57 0a 0b ...._PRW..GPRW.. 1db0: 0a 04 14 16 5f 50 52 54 00 a0 0a 50 49 43 4d a4 ...._PRT...PICM. 1dc0: 41 52 30 31 a4 50 52 30 31 5b 82 4f 49 53 42 55 AR01.PR01[.OISBU 1dd0: 53 08 5f 41 44 52 0c 03 00 1f 00 5b 80 53 4d 42 S._ADR.....[.SMB 1de0: 50 02 0a 40 0a c0 5b 81 0d 53 4d 42 50 03 00 02 P..@..[..SMBP... 1df0: 49 32 43 45 01 5b 80 53 4d 50 42 02 0a 20 0a 04 I2CE.[.SMPB.. .. 1e00: 5b 81 0d 53 4d 50 42 03 00 05 53 42 41 52 0b 5b [..SMPB...SBAR.[ 1e10: 80 53 4d 42 49 01 79 53 42 41 52 0a 05 00 0a 10 .SMBI.ySBAR..... 1e20: 5b 81 3a 53 4d 42 49 01 48 53 54 53 08 00 08 48 [.:SMBI.HSTS...H 1e30: 43 4f 4e 08 48 43 4f 4d 08 54 58 53 41 08 44 41 CON.HCOM.TXSA.DA 1e40: 54 30 08 44 41 54 31 08 48 42 44 52 08 50 45 43 T0.DAT1.HBDR.PEC 1e50: 52 08 52 58 53 41 08 53 44 41 54 10 14 48 04 53 R.RXSA.SDAT..H.S 1e60: 53 58 42 0a a0 08 53 54 52 54 a4 0a 00 70 0a 00 SXB...STRT...p.. 1e70: 49 32 43 45 70 0a bf 48 53 54 53 70 68 54 58 53 I2CEp..HSTSphTXS 1e80: 41 70 69 48 43 4f 4d 70 0a 48 48 43 4f 4e a0 13 ApiHCOMp.HHCON.. 1e90: 43 4f 4d 50 7d 48 53 54 53 0a ff 48 53 54 53 a4 COMP}HSTS..HSTS. 1ea0: 0a 01 a4 0a 00 14 4a 04 53 52 58 42 09 a0 09 53 ......J.SRXB...S 1eb0: 54 52 54 a4 0b ff ff 70 0a 00 49 32 43 45 70 0a TRT....p..I2CEp. 1ec0: bf 48 53 54 53 70 7d 68 0a 01 00 54 58 53 41 70 .HSTSp}h...TXSAp 1ed0: 0a 44 48 43 4f 4e a0 15 43 4f 4d 50 7d 48 53 54 .DHCON..COMP}HST 1ee0: 53 0a ff 48 53 54 53 a4 44 41 54 30 a4 0b ff ff S..HSTS.DAT0.... 1ef0: 14 4e 04 53 57 52 42 0b a0 08 53 54 52 54 a4 0a .N.SWRB...STRT.. 1f00: 00 70 0a 00 49 32 43 45 70 0a bf 48 53 54 53 70 .p..I2CEp..HSTSp 1f10: 68 54 58 53 41 70 69 48 43 4f 4d 70 6a 44 41 54 hTXSApiHCOMpjDAT 1f20: 30 70 0a 48 48 43 4f 4e a0 13 43 4f 4d 50 7d 48 0p.HHCON..COMP}H 1f30: 53 54 53 0a ff 48 53 54 53 a4 0a 01 a4 0a 00 14 STS..HSTS....... 1f40: 40 05 53 52 44 42 0a a0 09 53 54 52 54 a4 0b ff @.SRDB...STRT... 1f50: ff 70 0a 00 49 32 43 45 70 0a bf 48 53 54 53 70 .p..I2CEp..HSTSp 1f60: 7d 68 0a 01 00 54 58 53 41 70 69 48 43 4f 4d 70 }h...TXSApiHCOMp 1f70: 0a 48 48 43 4f 4e a0 15 43 4f 4d 50 7d 48 53 54 .HHCON..COMP}HST 1f80: 53 0a ff 48 53 54 53 a4 44 41 54 30 a4 0b ff ff S..HSTS.DAT0.... 1f90: 14 4c 05 53 57 52 57 0b a0 08 53 54 52 54 a4 0a .L.SWRW...STRT.. 1fa0: 00 70 0a 00 49 32 43 45 70 0a bf 48 53 54 53 70 .p..I2CEp..HSTSp 1fb0: 68 54 58 53 41 70 69 48 43 4f 4d 7b 6a 0a ff 44 hTXSApiHCOM{j..D 1fc0: 41 54 31 7b 7a 6a 0a 08 00 0a ff 44 41 54 30 70 AT1{zj.....DAT0p 1fd0: 0a 4c 48 43 4f 4e a0 13 43 4f 4d 50 7d 48 53 54 .LHCON..COMP}HST 1fe0: 53 0a ff 48 53 54 53 a4 0a 01 a4 0a 00 14 4c 05 S..HSTS.......L. 1ff0: 53 52 44 57 0a a0 09 53 54 52 54 a4 0b ff ff 70 SRDW...STRT....p 2000: 0a 00 49 32 43 45 70 0a bf 48 53 54 53 70 7d 68 ..I2CEp..HSTSp}h 2010: 0a 01 00 54 58 53 41 70 69 48 43 4f 4d 70 0a 4c ...TXSApiHCOMp.L 2020: 48 43 4f 4e a0 1f 43 4f 4d 50 7d 48 53 54 53 0a HCON..COMP}HSTS. 2030: ff 48 53 54 53 a4 7d 79 44 41 54 30 0a 08 00 44 .HSTS.}yDAT0...D 2040: 41 54 31 00 a4 0c ff ff ff ff 14 40 0a 53 42 4c AT1........@.SBL 2050: 57 0c a0 08 53 54 52 54 a4 0a 00 70 6b 49 32 43 W...STRT...pkI2C 2060: 45 70 0a bf 48 53 54 53 70 68 54 58 53 41 70 69 Ep..HSTSphTXSApi 2070: 48 43 4f 4d 70 87 6a 44 41 54 30 70 0a 00 61 70 HCOMp.jDAT0p..ap 2080: 83 88 6a 0a 00 00 48 42 44 52 70 0a 54 48 43 4f ..j...HBDRp.THCO 2090: 4e a2 42 04 94 87 6a 61 70 0b a0 0f 60 a2 12 90 N.B...jap...`... 20a0: 92 7b 48 53 54 53 0a 80 00 60 76 60 5b 21 0a 32 .{HSTS...`v`[!.2 20b0: a0 0a 92 60 4b 49 4c 4c a4 0a 00 70 0a 80 48 53 ...`KILL...p..HS 20c0: 54 53 75 61 a0 0f 94 87 6a 61 70 83 88 6a 61 00 TSua....jap..ja. 20d0: 48 42 44 52 a0 13 43 4f 4d 50 7d 48 53 54 53 0a HBDR..COMP}HSTS. 20e0: ff 48 53 54 53 a4 0a 01 a4 0a 00 14 48 0d 53 42 .HSTS.......H.SB 20f0: 4c 52 0b 08 54 42 55 46 11 04 0b 00 01 a0 08 53 LR..TBUF.......S 2100: 54 52 54 a4 0a 00 70 6a 49 32 43 45 70 0a bf 48 TRT...pjI2CEp..H 2110: 53 54 53 70 7d 68 0a 01 00 54 58 53 41 70 69 48 STSp}h...TXSApiH 2120: 43 4f 4d 70 0a 54 48 43 4f 4e 70 0b a0 0f 60 a2 COMp.THCONp...`. 2130: 12 90 92 7b 48 53 54 53 0a 80 00 60 76 60 5b 21 ...{HSTS...`v`[! 2140: 0a 32 a0 0a 92 60 4b 49 4c 4c a4 0a 00 70 44 41 .2...`KILL...pDA 2150: 54 30 88 54 42 55 46 0a 00 00 70 0a 80 48 53 54 T0.TBUF...p..HST 2160: 53 70 0a 01 61 a2 45 04 95 61 83 88 54 42 55 46 Sp..a.E..a..TBUF 2170: 0a 00 00 70 0b a0 0f 60 a2 12 90 92 7b 48 53 54 ...p...`....{HST 2180: 53 0a 80 00 60 76 60 5b 21 0a 32 a0 0a 92 60 4b S...`v`[!.2...`K 2190: 49 4c 4c a4 0a 00 70 48 42 44 52 88 54 42 55 46 ILL...pHBDR.TBUF 21a0: 61 00 70 0a 80 48 53 54 53 75 61 a0 15 43 4f 4d a.p..HSTSua..COM 21b0: 50 7d 48 53 54 53 0a ff 48 53 54 53 a4 54 42 55 P}HSTS..HSTS.TBU 21c0: 46 a4 0a 00 14 47 05 53 54 52 54 08 70 0a c8 60 F....G.STRT.p..` 21d0: a2 21 60 a0 18 7b 48 53 54 53 0a 40 00 76 60 5b .!`..{HSTS.@.v`[ 21e0: 22 0a 01 a0 08 93 60 0a 00 a4 0a 01 a1 05 70 0a ".....`.......p. 21f0: 00 60 70 0b a0 0f 60 a2 21 60 a0 19 7b 48 53 54 .`p...`.!`..{HST 2200: 53 0a 01 00 76 60 5b 21 0a 32 a0 09 93 60 0a 00 S...v`[!.2...`.. 2210: 4b 49 4c 4c a1 04 a4 0a 00 a4 0a 01 14 30 43 4f KILL.........0CO 2220: 4d 50 08 70 0b a0 0f 60 a2 21 60 a0 0c 7b 48 53 MP.p...`.!`..{HS 2230: 54 53 0a 02 00 a4 0a 01 a1 11 76 60 5b 21 0a 32 TS........v`[!.2 2240: a0 09 93 60 0a 00 4b 49 4c 4c a4 0a 00 14 1c 4b ...`..KILL.....K 2250: 49 4c 4c 08 7d 48 43 4f 4e 0a 02 48 43 4f 4e 7d ILL.}HCON..HCON} 2260: 48 53 54 53 0a ff 48 53 54 53 5b 82 4f 04 48 44 HSTS..HSTS[.O.HD 2270: 45 46 08 5f 41 44 52 0c 00 00 1b 00 5b 80 48 44 EF._ADR.....[.HD 2280: 41 52 02 0a 4c 0a 10 5b 81 22 48 44 41 52 02 44 AR..L..[."HDAR.D 2290: 43 4b 41 01 00 07 44 43 4b 4d 01 00 06 44 43 4b CKA...DCKM...DCK 22a0: 53 01 00 30 00 0f 50 4d 45 53 01 14 0f 5f 50 52 S..0..PMES..._PR 22b0: 57 00 a4 47 50 52 57 0a 0d 0a 04 5b 82 1f 47 4c W..GPRW....[..GL 22c0: 41 4e 08 5f 41 44 52 0c 00 00 19 00 14 0f 5f 50 AN._ADR......._P 22d0: 52 57 00 a4 47 50 52 57 0a 0d 0a 04 5b 82 44 ec RW..GPRW....[.D. 22e0: 53 42 52 47 08 5f 41 44 52 0c 00 00 1f 00 10 46 SBRG._ADR......F 22f0: 5a 5c 5f 53 42 5f 5b 80 5c 2f 04 5f 53 42 5f 50 Z\_SB_[.\/._SB_P 2300: 43 49 30 53 42 52 47 4c 50 43 31 02 0a 40 0a c0 CI0SBRGLPC1..@.. 2310: 5b 81 43 04 5c 2f 04 5f 53 42 5f 50 43 49 30 53 [.C.\/._SB_PCI0S 2320: 42 52 47 4c 50 43 31 00 00 40 10 50 41 52 43 08 BRGLPC1..@.PARC. 2330: 50 42 52 43 08 50 43 52 43 08 50 44 52 43 08 00 PBRC.PCRC.PDRC.. 2340: 20 50 45 52 43 08 50 46 52 43 08 50 47 52 43 08 PERC.PFRC.PGRC. 2350: 50 48 52 43 08 5b 82 46 0a 4c 4e 4b 41 08 5f 48 PHRC.[.F.LNKA._H 2360: 49 44 0c 41 d0 0c 0f 08 5f 55 49 44 0a 01 14 11 ID.A...._UID.... 2370: 5f 44 49 53 08 7d 50 41 52 43 0a 80 50 41 52 43 _DIS.}PARC..PARC 2380: 14 0b 5f 50 52 53 08 a4 50 52 53 41 14 3a 5f 43 .._PRS..PRSA.:_C 2390: 52 53 08 08 52 54 4c 41 11 09 0a 06 23 00 00 18 RS..RTLA....#... 23a0: 79 00 8b 52 54 4c 41 0a 01 49 52 51 30 70 00 49 y..RTLA..IRQ0p.I 23b0: 52 51 30 79 0a 01 7b 50 41 52 43 0a 0f 00 49 52 RQ0y..{PARC...IR 23c0: 51 30 a4 52 54 4c 41 14 1c 5f 53 52 53 09 8b 68 Q0.RTLA.._SRS..h 23d0: 0a 01 49 52 51 30 82 49 52 51 30 60 76 60 70 60 ..IRQ0.IRQ0`v`p` 23e0: 50 41 52 43 14 18 5f 53 54 41 08 a0 0c 7b 50 41 PARC.._STA...{PA 23f0: 52 43 0a 80 00 a4 0a 09 a1 04 a4 0a 0b 5b 82 46 RC...........[.F 2400: 0a 4c 4e 4b 42 08 5f 48 49 44 0c 41 d0 0c 0f 08 .LNKB._HID.A.... 2410: 5f 55 49 44 0a 02 14 11 5f 44 49 53 08 7d 50 42 _UID...._DIS.}PB 2420: 52 43 0a 80 50 42 52 43 14 0b 5f 50 52 53 08 a4 RC..PBRC.._PRS.. 2430: 50 52 53 42 14 3a 5f 43 52 53 08 08 52 54 4c 42 PRSB.:_CRS..RTLB 2440: 11 09 0a 06 23 00 00 18 79 00 8b 52 54 4c 42 0a ....#...y..RTLB. 2450: 01 49 52 51 30 70 00 49 52 51 30 79 0a 01 7b 50 .IRQ0p.IRQ0y..{P 2460: 42 52 43 0a 0f 00 49 52 51 30 a4 52 54 4c 42 14 BRC...IRQ0.RTLB. 2470: 1c 5f 53 52 53 09 8b 68 0a 01 49 52 51 30 82 49 ._SRS..h..IRQ0.I 2480: 52 51 30 60 76 60 70 60 50 42 52 43 14 18 5f 53 RQ0`v`p`PBRC.._S 2490: 54 41 08 a0 0c 7b 50 42 52 43 0a 80 00 a4 0a 09 TA...{PBRC...... 24a0: a1 04 a4 0a 0b 5b 82 46 0a 4c 4e 4b 43 08 5f 48 .....[.F.LNKC._H 24b0: 49 44 0c 41 d0 0c 0f 08 5f 55 49 44 0a 03 14 11 ID.A...._UID.... 24c0: 5f 44 49 53 08 7d 50 43 52 43 0a 80 50 43 52 43 _DIS.}PCRC..PCRC 24d0: 14 0b 5f 50 52 53 08 a4 50 52 53 43 14 3a 5f 43 .._PRS..PRSC.:_C 24e0: 52 53 08 08 52 54 4c 43 11 09 0a 06 23 00 00 18 RS..RTLC....#... 24f0: 79 00 8b 52 54 4c 43 0a 01 49 52 51 30 70 00 49 y..RTLC..IRQ0p.I 2500: 52 51 30 79 0a 01 7b 50 43 52 43 0a 0f 00 49 52 RQ0y..{PCRC...IR 2510: 51 30 a4 52 54 4c 43 14 1c 5f 53 52 53 09 8b 68 Q0.RTLC.._SRS..h 2520: 0a 01 49 52 51 30 82 49 52 51 30 60 76 60 70 60 ..IRQ0.IRQ0`v`p` 2530: 50 43 52 43 14 18 5f 53 54 41 08 a0 0c 7b 50 43 PCRC.._STA...{PC 2540: 52 43 0a 80 00 a4 0a 09 a1 04 a4 0a 0b 5b 82 46 RC...........[.F 2550: 0a 4c 4e 4b 44 08 5f 48 49 44 0c 41 d0 0c 0f 08 .LNKD._HID.A.... 2560: 5f 55 49 44 0a 04 14 11 5f 44 49 53 08 7d 50 44 _UID...._DIS.}PD 2570: 52 43 0a 80 50 44 52 43 14 0b 5f 50 52 53 08 a4 RC..PDRC.._PRS.. 2580: 50 52 53 44 14 3a 5f 43 52 53 08 08 52 54 4c 44 PRSD.:_CRS..RTLD 2590: 11 09 0a 06 23 00 00 18 79 00 8b 52 54 4c 44 0a ....#...y..RTLD. 25a0: 01 49 52 51 30 70 00 49 52 51 30 79 0a 01 7b 50 .IRQ0p.IRQ0y..{P 25b0: 44 52 43 0a 0f 00 49 52 51 30 a4 52 54 4c 44 14 DRC...IRQ0.RTLD. 25c0: 1c 5f 53 52 53 09 8b 68 0a 01 49 52 51 30 82 49 ._SRS..h..IRQ0.I 25d0: 52 51 30 60 76 60 70 60 50 44 52 43 14 18 5f 53 RQ0`v`p`PDRC.._S 25e0: 54 41 08 a0 0c 7b 50 44 52 43 0a 80 00 a4 0a 09 TA...{PDRC...... 25f0: a1 04 a4 0a 0b 5b 82 46 0a 4c 4e 4b 45 08 5f 48 .....[.F.LNKE._H 2600: 49 44 0c 41 d0 0c 0f 08 5f 55 49 44 0a 05 14 11 ID.A...._UID.... 2610: 5f 44 49 53 08 7d 50 45 52 43 0a 80 50 45 52 43 _DIS.}PERC..PERC 2620: 14 0b 5f 50 52 53 08 a4 50 52 53 45 14 3a 5f 43 .._PRS..PRSE.:_C 2630: 52 53 08 08 52 54 4c 45 11 09 0a 06 23 00 00 18 RS..RTLE....#... 2640: 79 00 8b 52 54 4c 45 0a 01 49 52 51 30 70 00 49 y..RTLE..IRQ0p.I 2650: 52 51 30 79 0a 01 7b 50 45 52 43 0a 0f 00 49 52 RQ0y..{PERC...IR 2660: 51 30 a4 52 54 4c 45 14 1c 5f 53 52 53 09 8b 68 Q0.RTLE.._SRS..h 2670: 0a 01 49 52 51 30 82 49 52 51 30 60 76 60 70 60 ..IRQ0.IRQ0`v`p` 2680: 50 45 52 43 14 18 5f 53 54 41 08 a0 0c 7b 50 45 PERC.._STA...{PE 2690: 52 43 0a 80 00 a4 0a 09 a1 04 a4 0a 0b 5b 82 46 RC...........[.F 26a0: 0a 4c 4e 4b 46 08 5f 48 49 44 0c 41 d0 0c 0f 08 .LNKF._HID.A.... 26b0: 5f 55 49 44 0a 06 14 11 5f 44 49 53 08 7d 50 46 _UID...._DIS.}PF 26c0: 52 43 0a 80 50 46 52 43 14 0b 5f 50 52 53 08 a4 RC..PFRC.._PRS.. 26d0: 50 52 53 46 14 3a 5f 43 52 53 08 08 52 54 4c 46 PRSF.:_CRS..RTLF 26e0: 11 09 0a 06 23 00 00 18 79 00 8b 52 54 4c 46 0a ....#...y..RTLF. 26f0: 01 49 52 51 30 70 00 49 52 51 30 79 0a 01 7b 50 .IRQ0p.IRQ0y..{P 2700: 46 52 43 0a 0f 00 49 52 51 30 a4 52 54 4c 46 14 FRC...IRQ0.RTLF. 2710: 1c 5f 53 52 53 09 8b 68 0a 01 49 52 51 30 82 49 ._SRS..h..IRQ0.I 2720: 52 51 30 60 76 60 70 60 50 46 52 43 14 18 5f 53 RQ0`v`p`PFRC.._S 2730: 54 41 08 a0 0c 7b 50 46 52 43 0a 80 00 a4 0a 09 TA...{PFRC...... 2740: a1 04 a4 0a 0b 5b 82 46 0a 4c 4e 4b 47 08 5f 48 .....[.F.LNKG._H 2750: 49 44 0c 41 d0 0c 0f 08 5f 55 49 44 0a 07 14 11 ID.A...._UID.... 2760: 5f 44 49 53 08 7d 50 47 52 43 0a 80 50 47 52 43 _DIS.}PGRC..PGRC 2770: 14 0b 5f 50 52 53 08 a4 50 52 53 47 14 3a 5f 43 .._PRS..PRSG.:_C 2780: 52 53 08 08 52 54 4c 47 11 09 0a 06 23 00 00 18 RS..RTLG....#... 2790: 79 00 8b 52 54 4c 47 0a 01 49 52 51 30 70 00 49 y..RTLG..IRQ0p.I 27a0: 52 51 30 79 0a 01 7b 50 47 52 43 0a 0f 00 49 52 RQ0y..{PGRC...IR 27b0: 51 30 a4 52 54 4c 47 14 1c 5f 53 52 53 09 8b 68 Q0.RTLG.._SRS..h 27c0: 0a 01 49 52 51 30 82 49 52 51 30 60 76 60 70 60 ..IRQ0.IRQ0`v`p` 27d0: 50 47 52 43 14 18 5f 53 54 41 08 a0 0c 7b 50 47 PGRC.._STA...{PG 27e0: 52 43 0a 80 00 a4 0a 09 a1 04 a4 0a 0b 5b 82 46 RC...........[.F 27f0: 0a 4c 4e 4b 48 08 5f 48 49 44 0c 41 d0 0c 0f 08 .LNKH._HID.A.... 2800: 5f 55 49 44 0a 08 14 11 5f 44 49 53 08 7d 50 48 _UID...._DIS.}PH 2810: 52 43 0a 80 50 48 52 43 14 0b 5f 50 52 53 08 a4 RC..PHRC.._PRS.. 2820: 50 52 53 48 14 3a 5f 43 52 53 08 08 52 54 4c 48 PRSH.:_CRS..RTLH 2830: 11 09 0a 06 23 00 00 18 79 00 8b 52 54 4c 48 0a ....#...y..RTLH. 2840: 01 49 52 51 30 70 00 49 52 51 30 79 0a 01 7b 50 .IRQ0p.IRQ0y..{P 2850: 48 52 43 0a 0f 00 49 52 51 30 a4 52 54 4c 48 14 HRC...IRQ0.RTLH. 2860: 1c 5f 53 52 53 09 8b 68 0a 01 49 52 51 30 82 49 ._SRS..h..IRQ0.I 2870: 52 51 30 60 76 60 70 60 50 48 52 43 14 18 5f 53 RQ0`v`p`PHRC.._S 2880: 54 41 08 a0 0c 7b 50 48 52 43 0a 80 00 a4 0a 09 TA...{PHRC...... 2890: a1 04 a4 0a 0b 5b 80 4c 50 43 30 02 0a 40 0a c0 .....[.LPC0..@.. 28a0: 5b 81 22 4c 50 43 30 00 00 40 20 49 4f 44 30 08 [."LPC0..@ IOD0. 28b0: 49 4f 44 31 08 00 40 37 52 41 45 4e 01 00 0d 52 IOD1..@7RAEN...R 28c0: 43 42 41 12 5b 82 3d 44 4d 41 43 08 5f 48 49 44 CBA.[.=DMAC._HID 28d0: 0c 41 d0 02 00 08 5f 43 52 53 11 28 0a 25 47 01 .A...._CRS.(.%G. 28e0: 00 00 00 00 01 20 47 01 81 00 81 00 01 11 47 01 ..... G.......G. 28f0: 93 00 93 00 01 0d 47 01 c0 00 c0 00 01 20 2a 10 ......G...... *. 2900: 01 79 00 5b 82 26 46 57 48 44 08 5f 48 49 44 0c .y.[.&FWHD._HID. 2910: 25 d4 08 00 08 5f 43 52 53 11 11 0a 0e 86 09 00 %...._CRS....... 2920: 00 00 00 00 ff 00 00 00 01 79 00 5b 82 4f 0a 48 .........y.[.O.H 2930: 50 45 54 08 5f 48 49 44 0c 41 d0 01 03 08 5f 55 PET._HID.A...._U 2940: 49 44 0a 00 08 42 55 46 30 11 11 0a 0e 86 09 00 ID...BUF0....... 2950: 01 00 00 d0 fe 00 04 00 00 79 00 14 28 5f 53 54 .........y..(_ST 2960: 41 00 a0 13 92 95 4f 53 59 53 0b d1 07 a0 08 48 A.....OSYS.....H 2970: 50 41 45 a4 0a 0f a1 0a a0 08 48 50 41 45 a4 0a PAE.......HPAE.. 2980: 0b a4 0a 00 14 47 05 5f 43 52 53 08 a0 4a 04 48 .....G._CRS..J.H 2990: 50 41 45 8a 42 55 46 30 0a 04 48 50 54 30 a0 12 PAE.BUF0..HPT0.. 29a0: 93 48 50 41 53 0a 01 70 0c 00 10 d0 fe 48 50 54 .HPAS..p.....HPT 29b0: 30 a0 12 93 48 50 41 53 0a 02 70 0c 00 20 d0 fe 0...HPAS..p.. .. 29c0: 48 50 54 30 a0 12 93 48 50 41 53 0a 03 70 0c 00 HPT0...HPAS..p.. 29d0: 30 d0 fe 48 50 54 30 a4 42 55 46 30 5b 82 45 0a 0..HPT0.BUF0[.E. 29e0: 49 50 49 43 08 5f 48 49 44 0b 41 d0 08 5f 43 52 IPIC._HID.A.._CR 29f0: 53 11 41 09 0a 8d 47 01 20 00 20 00 01 02 47 01 S.A...G. . ...G. 2a00: 24 00 24 00 01 02 47 01 28 00 28 00 01 02 47 01 $.$...G.(.(...G. 2a10: 2c 00 2c 00 01 02 47 01 30 00 30 00 01 02 47 01 ,.,...G.0.0...G. 2a20: 34 00 34 00 01 02 47 01 38 00 38 00 01 02 47 01 4.4...G.8.8...G. 2a30: 3c 00 3c 00 01 02 47 01 a0 00 a0 00 01 02 47 01 <.<...G.......G. 2a40: a4 00 a4 00 01 02 47 01 a8 00 a8 00 01 02 47 01 ......G.......G. 2a50: ac 00 ac 00 01 02 47 01 b0 00 b0 00 01 02 47 01 ......G.......G. 2a60: b4 00 b4 00 01 02 47 01 b8 00 b8 00 01 02 47 01 ......G.......G. 2a70: bc 00 bc 00 01 02 47 01 d0 04 d0 04 01 02 22 04 ......G.......". 2a80: 00 79 00 5b 82 25 4d 41 54 48 08 5f 48 49 44 0c .y.[.%MATH._HID. 2a90: 41 d0 0c 04 08 5f 43 52 53 11 10 0a 0d 47 01 f0 A...._CRS....G.. 2aa0: 00 f0 00 01 01 22 00 20 79 00 5b 82 43 1e 4c 44 .....". y.[.C.LD 2ab0: 52 43 08 5f 48 49 44 0c 41 d0 0c 02 08 5f 55 49 RC._HID.A...._UI 2ac0: 44 0a 02 08 42 55 46 30 11 4e 08 0a 8a 47 01 2e D...BUF0.N...G.. 2ad0: 00 2e 00 01 02 47 01 4e 00 4e 00 01 02 47 01 61 .....G.N.N...G.a 2ae0: 00 61 00 01 01 47 01 63 00 63 00 01 01 47 01 65 .a...G.c.c...G.e 2af0: 00 65 00 01 01 47 01 67 00 67 00 01 01 47 01 70 .e...G.g.g...G.p 2b00: 00 70 00 01 01 47 01 80 00 80 00 01 01 47 01 92 .p...G.......G.. 2b10: 00 92 00 01 01 47 01 b2 00 b2 00 01 02 47 01 80 .....G.......G.. 2b20: 06 80 06 01 20 47 01 ff ff ff ff 01 01 47 01 ff .... G.......G.. 2b30: ff ff ff 01 01 47 01 ff ff ff ff 01 01 47 01 00 .....G.......G.. 2b40: 04 00 04 01 80 47 01 00 05 00 05 01 80 47 01 4e .....G.......G.N 2b50: 16 4e 16 01 02 79 00 08 42 55 46 31 11 46 09 0a .N...y..BUF1.F.. 2b60: 92 47 01 2e 00 2e 00 01 02 47 01 4e 00 4e 00 01 .G.......G.N.N.. 2b70: 02 47 01 61 00 61 00 01 01 47 01 63 00 63 00 01 .G.a.a...G.c.c.. 2b80: 01 47 01 65 00 65 00 01 01 47 01 67 00 67 00 01 .G.e.e...G.g.g.. 2b90: 01 47 01 70 00 70 00 01 01 47 01 80 00 80 00 01 .G.p.p...G...... 2ba0: 01 47 01 92 00 92 00 01 01 47 01 b2 00 b2 00 01 .G.......G...... 2bb0: 02 47 01 80 06 80 06 01 20 47 01 ff ff ff ff 01 .G...... G...... 2bc0: 01 47 01 ff ff ff ff 01 01 47 01 ff ff ff ff 01 .G.......G...... 2bd0: 01 47 01 00 04 00 04 01 54 47 01 58 04 58 04 01 .G......TG.X.X.. 2be0: 28 47 01 00 05 00 05 01 80 47 01 4e 16 4e 16 01 (G.......G.N.N.. 2bf0: 02 79 00 08 5f 43 52 53 11 46 09 0a 92 47 01 2e .y.._CRS.F...G.. 2c00: 00 2e 00 01 02 47 01 4e 00 4e 00 01 02 47 01 61 .....G.N.N...G.a 2c10: 00 61 00 01 01 47 01 63 00 63 00 01 01 47 01 65 .a...G.c.c...G.e 2c20: 00 65 00 01 01 47 01 67 00 67 00 01 01 47 01 70 .e...G.g.g...G.p 2c30: 00 70 00 01 01 47 01 80 00 80 00 01 01 47 01 92 .p...G.......G.. 2c40: 00 92 00 01 01 47 01 b2 00 b2 00 01 02 47 01 80 .....G.......G.. 2c50: 06 80 06 01 20 47 01 00 10 00 10 01 10 47 01 ff .... G.......G.. 2c60: ff ff ff 01 01 47 01 ff ff ff ff 01 01 47 01 00 .....G.......G.. 2c70: 04 00 04 01 54 47 01 58 04 58 04 01 28 47 01 00 ....TG.X.X..(G.. 2c80: 05 00 05 01 80 47 01 4e 16 4e 16 01 02 79 00 5b .....G.N.N...y.[ 2c90: 82 25 52 54 43 5f 08 5f 48 49 44 0c 41 d0 0b 00 .%RTC_._HID.A... 2ca0: 08 5f 43 52 53 11 10 0a 0d 47 01 70 00 70 00 01 ._CRS....G.p.p.. 2cb0: 08 22 00 01 79 00 5b 82 2d 54 49 4d 52 08 5f 48 ."..y.[.-TIMR._H 2cc0: 49 44 0c 41 d0 01 00 08 5f 43 52 53 11 18 0a 15 ID.A...._CRS.... 2cd0: 47 01 40 00 40 00 01 04 47 01 50 00 50 00 10 04 G.@.@...G.P.P... 2ce0: 22 01 00 79 00 5b 82 43 04 43 57 44 54 08 5f 48 "..y.[.C.CWDT._H 2cf0: 49 44 0c 25 d4 3f 0d 08 5f 43 49 44 0c 41 d0 0c ID.%.?.._CID.A.. 2d00: 02 08 42 55 46 30 11 0d 0a 0a 47 01 54 04 54 04 ..BUF0....G.T.T. 2d10: 04 04 79 00 14 09 5f 53 54 41 08 a4 0a 0f 14 0b ..y..._STA...... 2d20: 5f 43 52 53 08 a4 42 55 46 30 5b 82 40 31 41 44 _CRS..BUF0[.@1AD 2d30: 42 47 08 5f 48 49 44 0c 41 d0 0c 02 08 5f 55 49 BG._HID.A...._UI 2d40: 44 0a 13 08 43 52 53 31 11 0d 0a 0a 47 01 40 02 D...CRS1....G.@. 2d50: 40 02 01 1a 79 00 5b 80 44 42 47 43 01 0b 59 02 @...y.[.DBGC..Y. 2d60: 0a 10 5b 81 0b 44 42 47 43 11 44 42 47 50 08 5b ..[..DBGC.DBGP.[ 2d70: 80 44 42 50 50 01 0b 50 02 0a 02 5b 81 10 44 42 .DBPP..P...[..DB 2d80: 50 50 11 50 50 44 54 08 50 50 53 54 08 5b 80 44 PP.PPDT.PPST.[.D 2d90: 42 38 30 01 0a 80 0a 01 5b 81 0b 44 42 38 30 11 B80.....[..DB80. 2da0: 44 50 38 30 08 14 0b 5f 43 52 53 00 a4 43 52 53 DP80..._CRS..CRS 2db0: 31 14 0d 43 41 4c 4c 08 5c 49 53 4d 49 0a 96 14 1..CALL.\ISMI... 2dc0: 4d 0b 50 55 54 44 09 7d 7b 68 0a 0f 00 0a 10 60 M.PUTD.}{h.....` 2dd0: 7b 7a 68 0a 04 00 0a 0f 61 7b 80 61 00 0a 0f 62 {zh.....a{.a...b 2de0: 70 0b ff 3f 64 70 60 50 50 44 54 70 7a 7f 50 50 p..?dp`PPDTpz.PP 2df0: 53 54 0a 80 00 0a 03 00 63 a2 20 90 92 93 63 0a ST......c. ...c. 2e00: 10 92 93 64 0a 00 70 7a 7f 50 50 53 54 0a 80 00 ...d..pz.PPST... 2e10: 0a 03 00 63 76 64 5b 21 0a 1e a0 0f 93 64 0a 00 ...cvd[!.....d.. 2e20: 70 0a 00 50 50 44 54 a4 0a 00 70 0b ff 3f 64 70 p..PPDT...p..?dp 2e30: 61 50 50 44 54 70 7a 7f 50 50 53 54 0a 80 00 0a aPPDTpz.PPST.... 2e40: 03 00 63 a2 20 90 92 93 63 0a 00 92 93 64 0a 00 ..c. ...c....d.. 2e50: 70 7a 7f 50 50 53 54 0a 80 00 0a 03 00 63 76 64 pz.PPST......cvd 2e60: 5b 21 0a 1e a0 0f 93 64 0a 00 70 0a 00 50 50 44 [!.....d..p..PPD 2e70: 54 a4 0a 00 70 62 50 50 44 54 a4 0a 01 14 48 08 T...pbPPDT....H. 2e80: 4f 55 54 53 09 a0 4b 07 92 93 5c 2f 05 5f 53 42 OUTS..K...\/._SB 2e90: 5f 50 43 49 30 53 42 52 47 41 44 42 47 44 42 47 _PCI0SBRGADBGDBG 2ea0: 50 0a ff 72 87 68 0a 01 60 70 0a 00 61 08 42 55 P..r.h..`p..a.BU 2eb0: 46 46 11 02 60 70 68 42 55 46 46 74 60 0a 01 60 FF..`phBUFFt`..` 2ec0: a0 0d 93 50 55 54 44 0a 53 0a 00 a4 0a 00 a2 29 ...PUTD.S......) 2ed0: 92 93 83 88 42 55 46 46 61 00 0a 00 a0 19 93 50 ....BUFFa......P 2ee0: 55 54 44 83 88 42 55 46 46 61 00 0a 00 50 55 54 UTD..BUFFa...PUT 2ef0: 44 0a 00 a4 0a 00 75 61 50 55 54 44 0a 00 a4 0a D.....uaPUTD.... 2f00: 01 a1 04 a4 0a 00 14 4d 09 4f 55 54 44 09 08 44 .......M.OUTD..D 2f10: 45 43 5f 11 0e 0a 0b 30 31 32 33 34 35 36 37 38 EC_....012345678 2f20: 39 00 08 54 4d 50 5f 11 03 0a 0b 70 0a 00 60 70 9..TMP_....p..`p 2f30: 68 61 a0 0c 93 61 0a 00 4f 55 54 53 0d 30 00 a1 ha...a..OUTS.0.. 2f40: 44 06 a2 27 94 61 0a 00 78 61 0a 0a 62 61 70 83 D..'.a..xa..bap. 2f50: 88 44 45 43 5f 62 00 88 54 4d 50 5f 60 00 75 60 .DEC_b..TMP_`.u` 2f60: 70 0a 00 88 54 4d 50 5f 60 00 70 0a 00 62 76 60 p...TMP_`.p..bv` 2f70: a2 2b 95 62 60 70 83 88 54 4d 50 5f 62 00 63 70 .+.b`p..TMP_b.cp 2f80: 83 88 54 4d 50 5f 60 00 88 54 4d 50 5f 62 00 70 ..TMP_`..TMP_b.p 2f90: 63 88 54 4d 50 5f 60 00 75 62 76 60 4f 55 54 53 c.TMP_`.ubv`OUTS 2fa0: 54 4d 50 5f 14 47 09 4f 55 54 48 09 08 48 45 58 TMP_.G.OUTH..HEX 2fb0: 5f 11 14 0a 11 30 31 32 33 34 35 36 37 38 39 41 _....0123456789A 2fc0: 42 43 44 45 46 00 08 54 4d 50 5f 11 03 0a 0a 70 BCDEF..TMP_....p 2fd0: 0a 00 60 70 68 61 a2 2b 95 60 0a 08 7b 61 0a 0f ..`pha.+.`..{a.. 2fe0: 62 70 83 88 48 45 58 5f 62 00 88 54 4d 50 5f 60 bp..HEX_b..TMP_` 2ff0: 00 7a 61 0a 04 61 75 60 70 0a 00 88 54 4d 50 5f .za..au`p...TMP_ 3000: 60 00 70 0a 00 62 76 60 a2 2b 95 62 60 70 83 88 `.p..bv`.+.b`p.. 3010: 54 4d 50 5f 62 00 63 70 83 88 54 4d 50 5f 60 00 TMP_b.cp..TMP_`. 3020: 88 54 4d 50 5f 62 00 70 63 88 54 4d 50 5f 60 00 .TMP_b.pc.TMP_`. 3030: 75 62 76 60 4f 55 54 53 54 4d 50 5f 5b 82 4e 0e ubv`OUTSTMP_[.N. 3040: 50 53 32 4d 14 45 05 5f 48 49 44 00 a0 11 5c 2e PS2M.E._HID...\. 3050: 5f 53 42 5f 53 59 4e 41 a4 0c 4f 2e 0a 06 a0 11 _SB_SYNA..O..... 3060: 5c 2e 5f 53 42 5f 41 4c 50 53 a4 0c 06 a9 13 07 \._SB_ALPS...... 3070: a0 11 5c 2e 5f 53 42 5f 45 4c 41 4e a4 0c 16 84 ..\._SB_ELAN.... 3080: 01 01 a0 11 5c 2e 5f 53 42 5f 53 54 4c 43 a4 0c ....\._SB_STLC.. 3090: 4e 8c c1 41 a4 0c 4f 2e 0a 06 08 5f 43 49 44 12 N..A..O...._CID. 30a0: 1b 05 0c 4f 2e 0a 00 0c 4f 2e 00 02 0c 41 d0 0f ...O....O....A.. 30b0: 03 0c 41 d0 0f 13 0c 41 d0 0f 12 14 21 5f 53 54 ..A....A....!_ST 30c0: 41 00 79 0a 01 0a 0e 60 a0 0c 7b 5c 49 4f 53 54 A.y....`..{\IOST 30d0: 60 00 a4 0a 0f a1 04 a4 0a 00 a4 0a 00 08 43 52 `.............CR 30e0: 53 31 11 08 0a 05 22 00 10 79 00 08 43 52 53 32 S1...."..y..CRS2 30f0: 11 18 0a 15 47 01 60 00 60 00 00 01 47 01 64 00 ....G.`.`...G.d. 3100: 64 00 00 01 22 00 10 79 00 14 22 5f 43 52 53 00 d..."..y.."_CRS. 3110: 79 0a 01 0a 0a 60 a0 0e 7b 5c 49 4f 53 54 60 00 y....`..{\IOST`. 3120: a4 43 52 53 31 a1 06 a4 43 52 53 32 5b 82 44 07 .CRS1...CRS2[.D. 3130: 50 53 32 4b 08 5f 48 49 44 0c 41 d0 03 03 08 5f PS2K._HID.A...._ 3140: 43 49 44 0c 41 d0 03 0b 14 1a 5f 53 54 41 00 a0 CID.A....._STA.. 3150: 0e 7b 5c 49 4f 53 54 0b 00 04 00 a4 0a 0f a1 04 .{\IOST......... 3160: a4 0a 00 08 5f 43 52 53 11 18 0a 15 47 01 60 00 ...._CRS....G.`. 3170: 60 00 00 01 47 01 64 00 64 00 00 01 22 02 00 79 `...G.d.d..."..y 3180: 00 08 5f 50 52 53 11 1b 0a 18 31 00 47 01 60 00 .._PRS....1.G.`. 3190: 60 00 00 01 47 01 64 00 64 00 00 01 22 02 00 38 `...G.d.d..."..8 31a0: 79 00 5b 82 46 71 49 44 45 30 08 5f 41 44 52 0c y.[.FqIDE0._ADR. 31b0: 02 00 1f 00 08 52 45 47 46 0a 01 14 12 5f 52 45 .....REGF...._RE 31c0: 47 02 a0 0b 93 68 0a 02 70 69 52 45 47 46 5b 82 G....h..piREGF[. 31d0: 49 04 43 48 4e 30 08 5f 41 44 52 0a 00 5b 82 1c I.CHN0._ADR..[.. 31e0: 44 52 56 30 08 5f 41 44 52 0a 00 14 0f 5f 47 54 DRV0._ADR...._GT 31f0: 46 00 a4 52 41 54 41 41 54 41 30 5b 82 1c 44 52 F..RATAATA0[..DR 3200: 56 31 08 5f 41 44 52 0a 01 14 0f 5f 47 54 46 00 V1._ADR...._GTF. 3210: a4 52 41 54 41 41 54 41 31 5b 82 49 04 43 48 4e .RATAATA1[.I.CHN 3220: 31 08 5f 41 44 52 0a 01 5b 82 1c 44 52 56 30 08 1._ADR..[..DRV0. 3230: 5f 41 44 52 0a 00 14 0f 5f 47 54 46 00 a4 52 41 _ADR...._GTF..RA 3240: 54 41 41 54 41 32 5b 82 1c 44 52 56 31 08 5f 41 TAATA2[..DRV1._A 3250: 44 52 0a 01 14 0f 5f 47 54 46 00 a4 52 41 54 41 DR...._GTF..RATA 3260: 41 54 41 33 08 41 54 30 31 11 0a 0a 07 03 00 00 ATA3.AT01....... 3270: 00 00 00 ef 08 41 54 30 32 11 0a 0a 07 00 00 00 .....AT02....... 3280: 00 00 00 90 08 41 54 30 33 11 0a 0a 07 00 00 00 .....AT03....... 3290: 00 00 00 c6 08 41 54 30 34 11 0a 0a 07 00 00 00 .....AT04....... 32a0: 00 00 00 91 08 41 54 30 35 11 0a 0a 07 00 00 00 .....AT05....... 32b0: 00 00 00 f5 08 41 54 30 36 11 0a 0a 07 10 03 00 .....AT06....... 32c0: 00 00 00 ef 08 41 54 36 31 11 0a 0a 07 90 03 00 .....AT61....... 32d0: 00 00 00 ef 08 41 54 30 37 11 0a 0a 07 10 06 00 .....AT07....... 32e0: 00 00 00 ef 08 41 54 30 38 11 0a 0a 07 41 00 00 .....AT08....A.. 32f0: 00 00 00 ef 08 41 54 38 31 11 0a 0a 07 c1 00 00 .....AT81....... 3300: 00 00 00 ef 08 41 54 30 39 11 0a 0a 07 90 05 00 .....AT09....... 3310: 00 00 00 ef 08 41 54 41 30 11 03 0a 32 08 41 54 .....ATA0...2.AT 3320: 41 31 11 03 0a 32 08 41 54 41 32 11 03 0a 32 08 A1...2.ATA2...2. 3330: 41 54 41 33 11 03 0a 32 08 41 54 41 42 11 03 0a ATA3...2.ATAB... 3340: 32 8c 41 54 41 42 0a 00 43 4d 44 43 14 4c 05 47 2.ATAB..CMDC.L.G 3350: 54 46 42 0b 77 43 4d 44 43 0a 38 60 72 60 0a 08 TFB.wCMDC.8`r`.. 3360: 61 5b 13 41 54 41 42 61 0a 38 43 4d 44 58 77 43 a[.ATABa.8CMDXwC 3370: 4d 44 43 0a 07 60 8c 41 54 41 42 72 60 0a 02 00 MDC..`.ATABr`... 3380: 41 30 30 31 8c 41 54 41 42 72 60 0a 06 00 41 30 A001.ATABr`...A0 3390: 30 35 70 68 43 4d 44 58 70 69 41 30 30 31 70 6a 05phCMDXpiA001pj 33a0: 41 30 30 35 75 43 4d 44 43 14 41 1f 47 54 46 5f A005uCMDC.A.GTF_ 33b0: 0a 70 69 5b 31 70 0a 00 43 4d 44 43 08 49 44 30 .pi[1p..CMDC.ID0 33c0: 30 0a 00 08 49 44 34 39 0b 00 0c 08 49 44 35 39 0...ID49....ID59 33d0: 0a 00 08 49 44 35 33 0a 04 08 49 44 36 33 0b 00 ...ID53...ID63.. 33e0: 0f 08 49 44 38 38 0b 00 0f 08 49 44 37 38 0a 00 ..ID88....ID78.. 33f0: 08 57 31 32 38 0a 00 08 57 31 31 39 0a 00 08 57 .W128...W119...W 3400: 31 32 30 0a 00 08 49 52 44 59 0a 01 08 50 49 4f 120...IRDY...PIO 3410: 54 0a 00 08 44 4d 41 54 0a 00 a0 43 0b 93 87 69 T...DMAT...C...i 3420: 0b 00 02 8b 69 0a 00 49 57 30 30 70 49 57 30 30 ....i..IW00pIW00 3430: 49 44 30 30 8b 69 0a 62 49 57 34 39 70 49 57 34 ID00.i.bIW49pIW4 3440: 39 49 44 34 39 8b 69 0a 6a 49 57 35 33 70 49 57 9ID49.i.jIW53pIW 3450: 35 33 49 44 35 33 8b 69 0a 7e 49 57 36 33 70 49 53ID53.i.~IW63pI 3460: 57 36 33 49 44 36 33 8b 69 0a 76 49 57 35 39 70 W63ID63.i.vIW59p 3470: 49 57 35 39 49 44 35 39 8b 69 0a b0 49 57 38 38 IW59ID59.i..IW88 3480: 70 49 57 38 38 49 44 38 38 8b 69 0a 9c 49 57 37 pIW88ID88.i..IW7 3490: 38 70 49 57 37 38 49 44 37 38 8b 69 0b 00 01 49 8pIW78ID78.i...I 34a0: 31 32 38 70 49 31 32 38 57 31 32 38 8b 69 0a ee 128pI128W128.i.. 34b0: 49 31 31 39 70 49 31 31 39 57 31 31 39 8b 69 0a I119pI119W119.i. 34c0: f0 49 31 32 30 70 49 31 32 30 57 31 32 30 70 0a .I120pI120W120p. 34d0: a0 67 a0 06 68 70 0a b0 67 a0 24 90 7b 49 44 35 .g..hp..g.$.{ID5 34e0: 39 0b 00 01 00 7b 49 44 35 39 0a ff 00 47 54 46 9....{ID59...GTF 34f0: 42 41 54 30 33 7b 49 44 35 39 0a ff 00 67 a0 40 BAT03{ID59...g.@ 3500: 09 93 67 0a a0 a0 14 7b 57 31 32 38 0a 01 00 47 ..g....{W128...G 3510: 54 46 42 41 54 30 35 0a 00 67 a0 14 7b 49 44 37 TFBAT05..g..{ID7 3520: 38 0a 40 00 47 54 46 42 41 54 30 37 0a 06 67 a0 8.@.GTFBAT07..g. 3530: 2d 7b 49 44 37 38 0a 08 00 a0 16 5c 2e 5f 53 42 -{ID78.....\._SB 3540: 5f 4c 44 46 54 47 54 46 42 41 54 30 36 0a 03 67 _LDFTGTFBAT06..g 3550: a1 0c 47 54 46 42 41 54 36 31 0a 03 67 a0 31 7b ..GTFBAT61..g.1{ 3560: 57 31 31 39 0a 20 00 a0 1a 7b 5c 2e 5f 53 42 5f W119. ...{\._SB_ 3570: 48 44 44 46 0a 01 00 47 54 46 42 41 54 30 38 0a HDDF...GTFBAT08. 3580: 00 67 a1 0c 47 54 46 42 41 54 38 31 0a 00 67 70 .g..GTFBAT81..gp 3590: 41 54 41 42 5b 31 a4 41 54 41 42 14 2c 52 41 54 ATAB[1.ATAB.,RAT 35a0: 41 01 8c 68 0a 00 43 4d 44 4e 77 43 4d 44 4e 0a A..h..CMDNwCMDN. 35b0: 38 60 5b 13 68 0a 08 60 52 45 54 42 70 52 45 54 8`[.h..`RETBpRET 35c0: 42 5b 31 a4 52 45 54 42 08 41 54 50 30 11 03 0a B[1.RETB.ATP0... 35d0: 32 5b 82 30 50 52 54 30 08 5f 41 44 52 0b ff ff 2[.0PRT0._ADR... 35e0: 14 12 5f 53 44 44 01 70 41 47 54 46 0a 00 68 41 .._SDD.pAGTF..hA 35f0: 54 50 30 14 0f 5f 47 54 46 00 a4 52 41 54 41 41 TP0.._GTF..RATAA 3600: 54 50 30 08 41 54 50 32 11 03 0a 32 5b 82 40 1e TP0.ATP2...2[.@. 3610: 50 52 54 32 08 5f 41 44 52 0c ff ff 02 00 08 4f PRT2._ADR......O 3620: 46 4c 47 0a 01 14 12 5f 53 44 44 01 70 41 47 54 FLG...._SDD.pAGT 3630: 46 0a 00 68 41 54 50 32 14 0f 5f 47 54 46 00 a4 F..hATP2.._GTF.. 3640: 52 41 54 41 41 54 50 32 14 45 1a 5f 44 53 4d 0c RATAATP2.E._DSM. 3650: 08 5f 54 5f 31 00 08 5f 54 5f 30 00 a0 4c 18 93 ._T_1.._T_0..L.. 3660: 68 11 13 0a 10 30 ef fa bd bb ae de 11 8a 39 08 h....0........9. 3670: 00 20 0c 9a 66 a2 43 17 01 70 99 6a 00 5f 54 5f . ..f.C..p.j._T_ 3680: 30 a0 2b 93 5f 54 5f 30 0a 00 a2 22 01 70 99 69 0.+._T_0...".p.i 3690: 00 5f 54 5f 31 a0 0e 93 5f 54 5f 31 0a 01 a4 11 ._T_1..._T_1.... 36a0: 04 0a 01 0f a1 07 a4 11 04 0a 01 00 a5 a1 4a 13 ..............J. 36b0: a0 0b 93 5f 54 5f 30 0a 01 a4 0a 01 a1 4b 12 a0 ..._T_0......K.. 36c0: 4c 0a 93 5f 54 5f 30 0a 02 70 5c 2f 04 5f 53 42 L.._T_0..p\/._SB 36d0: 5f 50 43 49 30 53 42 52 47 47 50 4c 4b 66 70 0a _PCI0SBRGGPLKfp. 36e0: 00 5c 2f 04 5f 53 42 5f 50 43 49 30 53 42 52 47 .\/._SB_PCI0SBRG 36f0: 47 50 4c 4b 70 0a 00 47 50 45 33 70 0a 01 47 50 GPLKp..GPE3p..GP 3700: 53 33 70 0a 00 4f 46 4c 47 a0 17 93 7b 47 4c 30 S3p..OFLG...{GL0 3710: 30 0a 08 00 0a 08 7d 47 49 56 30 0a 08 47 49 56 0.....}GIV0..GIV 3720: 30 a1 0c 7b 47 49 56 30 0a f7 47 49 56 30 7d 5c 0..{GIV0..GIV0}\ 3730: 47 4c 30 38 0a 10 5c 47 4c 30 38 5b 22 0a c8 70 GL08..\GL08["..p 3740: 0a 01 4f 46 4c 47 70 0a 01 47 50 53 33 70 0a 01 ..OFLGp..GPS3p.. 3750: 47 50 45 33 70 66 5c 2f 04 5f 53 42 5f 50 43 49 GPE3pf\/._SB_PCI 3760: 30 53 42 52 47 47 50 4c 4b a4 0a 01 a1 4b 07 a0 0SBRGGPLK....K.. 3770: 43 07 93 5f 54 5f 30 0a 03 a0 44 06 4f 46 4c 47 C.._T_0...D.OFLG 3780: 70 5c 2f 04 5f 53 42 5f 50 43 49 30 53 42 52 47 p\/._SB_PCI0SBRG 3790: 47 50 4c 4b 66 70 0a 00 5c 2f 04 5f 53 42 5f 50 GPLKfp..\/._SB_P 37a0: 43 49 30 53 42 52 47 47 50 4c 4b 70 0a 00 47 50 CI0SBRGGPLKp..GP 37b0: 45 33 70 0a 01 47 50 53 33 7b 5c 47 4c 30 38 0a E3p..GPS3{\GL08. 37c0: ef 5c 47 4c 30 38 70 66 5c 2f 04 5f 53 42 5f 50 .\GL08pf\/._SB_P 37d0: 43 49 30 53 42 52 47 47 50 4c 4b a4 0a 01 a1 04 CI0SBRGGPLK..... 37e0: a4 0a 00 a1 04 a4 0a 00 a5 a1 04 a4 0a 00 14 4b ...............K 37f0: 0c 41 47 54 46 0a 70 0a a0 60 70 0a 00 43 4d 44 .AGTF.p..`p..CMD 3800: 43 a0 43 0b 93 87 69 0b 00 02 8b 69 0a 00 49 57 C.C...i....i..IW 3810: 30 30 8b 69 0b 00 01 49 31 32 38 a0 14 7b 49 31 00.i...I128..{I1 3820: 32 38 0a 01 00 47 54 46 42 41 54 30 35 0a 00 60 28...GTFBAT05..` 3830: 8b 69 0a 9c 49 57 37 38 a0 14 7b 49 57 37 38 0a .i..IW78..{IW78. 3840: 40 00 47 54 46 42 41 54 30 37 0a 06 60 a0 2d 7b @.GTFBAT07..`.-{ 3850: 49 57 37 38 0a 08 00 a0 16 5c 2e 5f 53 42 5f 4c IW78.....\._SB_L 3860: 44 46 54 47 54 46 42 41 54 30 36 0a 03 60 a1 0c DFTGTFBAT06..`.. 3870: 47 54 46 42 41 54 36 31 0a 03 60 8b 69 0a ee 49 GTFBAT61..`.i..I 3880: 31 31 39 a0 31 7b 49 31 31 39 0a 20 00 a0 1a 7b 119.1{I119. ...{ 3890: 5c 2e 5f 53 42 5f 48 44 44 46 0a 01 00 47 54 46 \._SB_HDDF...GTF 38a0: 42 41 54 30 38 0a 00 60 a1 0c 47 54 46 42 41 54 BAT08..`..GTFBAT 38b0: 38 31 0a 00 60 a4 41 54 41 42 5b 82 4b 56 49 44 81..`.ATAB[.KVID 38c0: 45 31 08 5f 41 44 52 0c 05 00 1f 00 08 52 45 47 E1._ADR......REG 38d0: 46 0a 01 14 12 5f 52 45 47 02 a0 0b 93 68 0a 02 F...._REG....h.. 38e0: 70 69 52 45 47 46 5b 80 42 41 52 30 02 0a 00 0b piREGF[.BAR0.... 38f0: 00 01 5b 81 4d 06 42 41 52 30 03 56 44 49 44 20 ..[.M.BAR0.VDID 3900: 00 30 53 43 43 52 08 42 43 43 52 08 00 40 42 4d .0SCCR.BCCR..@BM 3910: 41 50 56 02 00 04 53 4d 53 5f 02 00 08 50 30 45 APV...SMS_...P0E 3920: 4e 01 50 31 45 4e 01 50 32 45 4e 01 50 33 45 4e N.P1EN.P2EN.P3EN 3930: 01 50 34 45 4e 01 50 35 45 4e 01 00 01 00 01 50 .P4EN.P5EN.....P 3940: 30 50 46 01 50 31 50 46 01 50 32 50 46 01 50 33 0PF.P1PF.P2PF.P3 3950: 50 46 01 50 34 50 46 01 50 35 50 46 01 00 01 00 PF.P4PF.P5PF.... 3960: 01 5b 82 49 04 43 48 4e 30 08 5f 41 44 52 0a 00 .[.I.CHN0._ADR.. 3970: 5b 82 1c 44 52 56 30 08 5f 41 44 52 0a 00 14 0f [..DRV0._ADR.... 3980: 5f 47 54 46 00 a4 52 41 54 41 41 54 41 30 5b 82 _GTF..RATAATA0[. 3990: 1c 44 52 56 31 08 5f 41 44 52 0a 01 14 0f 5f 47 .DRV1._ADR...._G 39a0: 54 46 00 a4 52 41 54 41 41 54 41 31 5b 82 49 04 TF..RATAATA1[.I. 39b0: 43 48 4e 31 08 5f 41 44 52 0a 01 5b 82 1c 44 52 CHN1._ADR..[..DR 39c0: 56 30 08 5f 41 44 52 0a 00 14 0f 5f 47 54 46 00 V0._ADR...._GTF. 39d0: a4 52 41 54 41 41 54 41 32 5b 82 1c 44 52 56 31 .RATAATA2[..DRV1 39e0: 08 5f 41 44 52 0a 01 14 0f 5f 47 54 46 00 a4 52 ._ADR...._GTF..R 39f0: 41 54 41 41 54 41 33 08 41 54 30 31 11 0a 0a 07 ATAATA3.AT01.... 3a00: 03 00 00 00 00 00 ef 08 41 54 30 32 11 0a 0a 07 ........AT02.... 3a10: 00 00 00 00 00 00 90 08 41 54 30 33 11 0a 0a 07 ........AT03.... 3a20: 00 00 00 00 00 00 c6 08 41 54 30 34 11 0a 0a 07 ........AT04.... 3a30: 00 00 00 00 00 00 91 08 41 54 30 35 11 0a 0a 07 ........AT05.... 3a40: 00 00 00 00 00 00 f5 08 41 54 30 36 11 0a 0a 07 ........AT06.... 3a50: 10 03 00 00 00 00 ef 08 41 54 36 31 11 0a 0a 07 ........AT61.... 3a60: 90 03 00 00 00 00 ef 08 41 54 30 37 11 0a 0a 07 ........AT07.... 3a70: 10 06 00 00 00 00 ef 08 41 54 30 38 11 0a 0a 07 ........AT08.... 3a80: 41 00 00 00 00 00 ef 08 41 54 38 31 11 0a 0a 07 A.......AT81.... 3a90: c1 00 00 00 00 00 ef 08 41 54 30 39 11 0a 0a 07 ........AT09.... 3aa0: 90 05 00 00 00 00 ef 08 41 54 41 30 11 03 0a 32 ........ATA0...2 3ab0: 08 41 54 41 31 11 03 0a 32 08 41 54 41 32 11 03 .ATA1...2.ATA2.. 3ac0: 0a 32 08 41 54 41 33 11 03 0a 32 08 41 54 41 42 .2.ATA3...2.ATAB 3ad0: 11 03 0a 32 8c 41 54 41 42 0a 00 43 4d 44 43 14 ...2.ATAB..CMDC. 3ae0: 4c 05 47 54 46 42 0b 77 43 4d 44 43 0a 38 60 72 L.GTFB.wCMDC.8`r 3af0: 60 0a 08 61 5b 13 41 54 41 42 61 0a 38 43 4d 44 `..a[.ATABa.8CMD 3b00: 58 77 43 4d 44 43 0a 07 60 8c 41 54 41 42 72 60 XwCMDC..`.ATABr` 3b10: 0a 02 00 41 30 30 31 8c 41 54 41 42 72 60 0a 06 ...A001.ATABr`.. 3b20: 00 41 30 30 35 70 68 43 4d 44 58 70 69 41 30 30 .A005phCMDXpiA00 3b30: 31 70 6a 41 30 30 35 75 43 4d 44 43 14 41 1f 47 1pjA005uCMDC.A.G 3b40: 54 46 5f 0a 70 69 5b 31 70 0a 00 43 4d 44 43 08 TF_.pi[1p..CMDC. 3b50: 49 44 30 30 0a 00 08 49 44 34 39 0b 00 0c 08 49 ID00...ID49....I 3b60: 44 35 39 0a 00 08 49 44 35 33 0a 04 08 49 44 36 D59...ID53...ID6 3b70: 33 0b 00 0f 08 49 44 38 38 0b 00 0f 08 49 44 37 3....ID88....ID7 3b80: 38 0a 00 08 57 31 32 38 0a 00 08 57 31 31 39 0a 8...W128...W119. 3b90: 00 08 57 31 32 30 0a 00 08 49 52 44 59 0a 01 08 ..W120...IRDY... 3ba0: 50 49 4f 54 0a 00 08 44 4d 41 54 0a 00 a0 43 0b PIOT...DMAT...C. 3bb0: 93 87 69 0b 00 02 8b 69 0a 00 49 57 30 30 70 49 ..i....i..IW00pI 3bc0: 57 30 30 49 44 30 30 8b 69 0a 62 49 57 34 39 70 W00ID00.i.bIW49p 3bd0: 49 57 34 39 49 44 34 39 8b 69 0a 6a 49 57 35 33 IW49ID49.i.jIW53 3be0: 70 49 57 35 33 49 44 35 33 8b 69 0a 7e 49 57 36 pIW53ID53.i.~IW6 3bf0: 33 70 49 57 36 33 49 44 36 33 8b 69 0a 76 49 57 3pIW63ID63.i.vIW 3c00: 35 39 70 49 57 35 39 49 44 35 39 8b 69 0a b0 49 59pIW59ID59.i..I 3c10: 57 38 38 70 49 57 38 38 49 44 38 38 8b 69 0a 9c W88pIW88ID88.i.. 3c20: 49 57 37 38 70 49 57 37 38 49 44 37 38 8b 69 0b IW78pIW78ID78.i. 3c30: 00 01 49 31 32 38 70 49 31 32 38 57 31 32 38 8b ..I128pI128W128. 3c40: 69 0a ee 49 31 31 39 70 49 31 31 39 57 31 31 39 i..I119pI119W119 3c50: 8b 69 0a f0 49 31 32 30 70 49 31 32 30 57 31 32 .i..I120pI120W12 3c60: 30 70 0a a0 67 a0 06 68 70 0a b0 67 a0 24 90 7b 0p..g..hp..g.$.{ 3c70: 49 44 35 39 0b 00 01 00 7b 49 44 35 39 0a ff 00 ID59....{ID59... 3c80: 47 54 46 42 41 54 30 33 7b 49 44 35 39 0a ff 00 GTFBAT03{ID59... 3c90: 67 a0 40 09 93 67 0a a0 a0 14 7b 57 31 32 38 0a g.@..g....{W128. 3ca0: 01 00 47 54 46 42 41 54 30 35 0a 00 67 a0 14 7b ..GTFBAT05..g..{ 3cb0: 49 44 37 38 0a 40 00 47 54 46 42 41 54 30 37 0a ID78.@.GTFBAT07. 3cc0: 06 67 a0 2d 7b 49 44 37 38 0a 08 00 a0 16 5c 2e .g.-{ID78.....\. 3cd0: 5f 53 42 5f 4c 44 46 54 47 54 46 42 41 54 30 36 _SB_LDFTGTFBAT06 3ce0: 0a 03 67 a1 0c 47 54 46 42 41 54 36 31 0a 03 67 ..g..GTFBAT61..g 3cf0: a0 31 7b 57 31 31 39 0a 20 00 a0 1a 7b 5c 2e 5f .1{W119. ...{\._ 3d00: 53 42 5f 48 44 44 46 0a 01 00 47 54 46 42 41 54 SB_HDDF...GTFBAT 3d10: 30 38 0a 00 67 a1 0c 47 54 46 42 41 54 38 31 0a 08..g..GTFBAT81. 3d20: 00 67 70 41 54 41 42 5b 31 a4 41 54 41 42 14 2c .gpATAB[1.ATAB., 3d30: 52 41 54 41 01 8c 68 0a 00 43 4d 44 4e 77 43 4d RATA..h..CMDNwCM 3d40: 44 4e 0a 38 60 5b 13 68 0a 08 60 52 45 54 42 70 DN.8`[.h..`RETBp 3d50: 52 45 54 42 5b 31 a4 52 45 54 42 14 4b 0c 41 47 RETB[1.RETB.K.AG 3d60: 54 46 0a 70 0a a0 60 70 0a 00 43 4d 44 43 a0 43 TF.p..`p..CMDC.C 3d70: 0b 93 87 69 0b 00 02 8b 69 0a 00 49 57 30 30 8b ...i....i..IW00. 3d80: 69 0b 00 01 49 31 32 38 a0 14 7b 49 31 32 38 0a i...I128..{I128. 3d90: 01 00 47 54 46 42 41 54 30 35 0a 00 60 8b 69 0a ..GTFBAT05..`.i. 3da0: 9c 49 57 37 38 a0 14 7b 49 57 37 38 0a 40 00 47 .IW78..{IW78.@.G 3db0: 54 46 42 41 54 30 37 0a 06 60 a0 2d 7b 49 57 37 TFBAT07..`.-{IW7 3dc0: 38 0a 08 00 a0 16 5c 2e 5f 53 42 5f 4c 44 46 54 8.....\._SB_LDFT 3dd0: 47 54 46 42 41 54 30 36 0a 03 60 a1 0c 47 54 46 GTFBAT06..`..GTF 3de0: 42 41 54 36 31 0a 03 60 8b 69 0a ee 49 31 31 39 BAT61..`.i..I119 3df0: a0 31 7b 49 31 31 39 0a 20 00 a0 1a 7b 5c 2e 5f .1{I119. ...{\._ 3e00: 53 42 5f 48 44 44 46 0a 01 00 47 54 46 42 41 54 SB_HDDF...GTFBAT 3e10: 30 38 0a 00 60 a1 0c 47 54 46 42 41 54 38 31 0a 08..`..GTFBAT81. 3e20: 00 60 a4 41 54 41 42 5b 82 1f 45 48 43 31 08 5f .`.ATAB[..EHC1._ 3e30: 41 44 52 0c 00 00 1d 00 14 0f 5f 50 52 57 00 a4 ADR......._PRW.. 3e40: 47 50 52 57 0a 0d 0a 03 5b 82 1f 55 53 42 31 08 GPRW....[..USB1. 3e50: 5f 41 44 52 0c 01 00 1d 00 14 0f 5f 50 52 57 00 _ADR......._PRW. 3e60: a4 47 50 52 57 0a 03 0a 03 5b 82 1f 55 53 42 32 .GPRW....[..USB2 3e70: 08 5f 41 44 52 0c 02 00 1d 00 14 0f 5f 50 52 57 ._ADR......._PRW 3e80: 00 a4 47 50 52 57 0a 04 0a 03 5b 82 1f 55 53 42 ..GPRW....[..USB 3e90: 33 08 5f 41 44 52 0c 03 00 1d 00 14 0f 5f 50 52 3._ADR......._PR 3ea0: 57 00 a4 47 50 52 57 0a 0c 0a 03 5b 82 1f 55 53 W..GPRW....[..US 3eb0: 42 34 08 5f 41 44 52 0c 04 00 1d 00 14 0f 5f 50 B4._ADR......._P 3ec0: 52 57 00 a4 47 50 52 57 0a 0e 0a 03 5b 82 1f 45 RW..GPRW....[..E 3ed0: 48 43 32 08 5f 41 44 52 0c 00 00 1a 00 14 0f 5f HC2._ADR......._ 3ee0: 50 52 57 00 a4 47 50 52 57 0a 0d 0a 03 5b 82 1f PRW..GPRW....[.. 3ef0: 55 53 42 35 08 5f 41 44 52 0c 01 00 1a 00 14 0f USB5._ADR....... 3f00: 5f 50 52 57 00 a4 47 50 52 57 0a 05 0a 03 5b 82 _PRW..GPRW....[. 3f10: 1f 55 53 42 36 08 5f 41 44 52 0c 02 00 1a 00 14 .USB6._ADR...... 3f20: 0f 5f 50 52 57 00 a4 47 50 52 57 0a 20 0a 03 5b ._PRW..GPRW. ..[ 3f30: 82 1f 55 53 42 37 08 5f 41 44 52 0c 03 00 1a 00 ..USB7._ADR..... 3f40: 14 0f 5f 50 52 57 00 a4 47 50 52 57 0a 25 0a 03 .._PRW..GPRW.%.. 3f50: 5b 82 45 19 52 50 30 31 08 5f 41 44 52 0c 00 00 [.E.RP01._ADR... 3f60: 1c 00 5b 80 4c 43 54 4c 02 0a 50 0a 04 5b 81 12 ..[.LCTL..P..[.. 3f70: 4c 43 54 4c 01 00 04 50 45 4c 44 01 50 45 52 4c LCTL...PELD.PERL 3f80: 01 5b 80 53 4c 4f 54 02 0a 54 0a 10 5b 81 43 04 .[.SLOT..T..[.C. 3f90: 53 4c 4f 54 01 53 43 41 50 20 53 43 54 4c 10 41 SLOT.SCAP SCTL.A 3fa0: 42 50 31 01 50 46 44 31 01 4d 53 43 31 01 50 44 BP1.PFD1.MSC1.PD 3fb0: 43 31 01 43 43 31 30 01 4d 53 31 30 01 50 44 53 C1.CC10.MS10.PDS 3fc0: 31 01 52 53 56 30 01 4c 41 53 43 01 52 53 56 31 1.RSV0.LASC.RSV1 3fd0: 07 5b 80 52 48 55 42 02 0a 60 0a 10 5b 81 1a 52 .[.RHUB..`..[..R 3fe0: 48 55 42 01 50 4d 49 44 10 50 4d 45 53 01 50 4d HUB.PMID.PMES.PM 3ff0: 45 50 01 52 53 56 32 0e 5b 80 4d 49 53 43 02 0a EP.RSV2.[.MISC.. 4000: d8 0a 08 5b 81 3d 4d 49 53 43 01 52 53 56 34 1e ...[.=MISC.RSV4. 4010: 50 4d 43 45 01 48 50 43 45 01 50 4d 4d 53 01 48 PMCE.HPCE.PMMS.H 4020: 50 50 44 01 48 50 41 42 01 48 50 43 43 01 48 50 PPD.HPAB.HPCC.HP 4030: 4c 41 01 52 53 56 33 19 48 50 43 53 01 50 4d 43 LA.RSV3.HPCS.PMC 4040: 53 01 5b 80 50 58 43 53 02 0a 40 0a c0 5b 81 41 S.[.PXCS..@..[.A 4050: 05 50 58 43 53 40 00 40 09 00 0d 4c 41 53 58 01 .PXCS@.@...LASX. 4060: 00 32 41 42 50 58 01 00 02 50 44 43 58 01 00 02 .2ABPX...PDCX... 4070: 50 44 53 58 01 00 01 4c 53 43 58 01 00 27 00 10 PDSX...LSCX..'.. 4080: 50 53 50 58 01 00 4f 3a 00 1e 48 50 45 58 01 50 PSPX..O:..HPEX.P 4090: 4d 45 58 01 00 1e 48 50 53 58 01 50 4d 53 58 01 MEX...HPSX.PMSX. 40a0: 14 1f 48 50 48 4b 00 70 0a 01 50 44 43 31 70 0a ..HPHK.p..PDC1p. 40b0: 01 48 50 43 53 70 0a 00 50 45 4c 44 5b 22 0a fa .HPCSp..PELD[".. 40c0: 14 0f 5f 50 52 57 00 a4 47 50 52 57 0a 09 0a 04 .._PRW..GPRW.... 40d0: 14 16 5f 50 52 54 00 a0 0a 50 49 43 4d a4 41 52 .._PRT...PICM.AR 40e0: 30 34 a4 50 52 30 34 5b 82 45 21 52 50 30 32 08 04.PR04[.E!RP02. 40f0: 5f 41 44 52 0c 01 00 1c 00 5b 80 4c 43 54 4c 02 _ADR.....[.LCTL. 4100: 0a 50 0a 04 5b 81 12 4c 43 54 4c 01 00 04 50 45 .P..[..LCTL...PE 4110: 4c 44 01 50 45 52 4c 01 5b 80 53 4c 4f 54 02 0a LD.PERL.[.SLOT.. 4120: 54 0a 10 5b 81 43 04 53 4c 4f 54 01 53 43 41 50 T..[.C.SLOT.SCAP 4130: 20 53 43 54 4c 10 41 42 50 31 01 50 46 44 31 01 SCTL.ABP1.PFD1. 4140: 4d 53 43 31 01 50 44 43 31 01 43 43 31 30 01 4d MSC1.PDC1.CC10.M 4150: 53 31 30 01 50 44 53 31 01 52 53 56 30 01 4c 41 S10.PDS1.RSV0.LA 4160: 53 43 01 52 53 56 31 07 5b 80 52 48 55 42 02 0a SC.RSV1.[.RHUB.. 4170: 60 0a 10 5b 81 1a 52 48 55 42 01 50 4d 49 44 10 `..[..RHUB.PMID. 4180: 50 4d 45 53 01 50 4d 45 50 01 52 53 56 32 0e 5b PMES.PMEP.RSV2.[ 4190: 80 4d 49 53 43 02 0a d8 0a 08 5b 81 3d 4d 49 53 .MISC.....[.=MIS 41a0: 43 01 52 53 56 34 1e 50 4d 43 45 01 48 50 43 45 C.RSV4.PMCE.HPCE 41b0: 01 50 4d 4d 53 01 48 50 50 44 01 48 50 41 42 01 .PMMS.HPPD.HPAB. 41c0: 48 50 43 43 01 48 50 4c 41 01 52 53 56 33 19 48 HPCC.HPLA.RSV3.H 41d0: 50 43 53 01 50 4d 43 53 01 5b 80 50 58 43 53 02 PCS.PMCS.[.PXCS. 41e0: 0a 40 0a c0 5b 81 41 05 50 58 43 53 40 00 40 09 .@..[.A.PXCS@.@. 41f0: 00 0d 4c 41 53 58 01 00 32 41 42 50 58 01 00 02 ..LASX..2ABPX... 4200: 50 44 43 58 01 00 02 50 44 53 58 01 00 01 4c 53 PDCX...PDSX...LS 4210: 43 58 01 00 27 00 10 50 53 50 58 01 00 4f 3a 00 CX..'..PSPX..O:. 4220: 1e 48 50 45 58 01 50 4d 45 58 01 00 1e 48 50 53 .HPEX.PMEX...HPS 4230: 58 01 50 4d 53 58 01 14 1f 48 50 48 4b 00 70 0a X.PMSX...HPHK.p. 4240: 01 50 44 43 31 70 0a 01 48 50 43 53 70 0a 00 50 .PDC1p..HPCSp..P 4250: 45 4c 44 5b 22 0a fa 14 0f 5f 50 52 57 00 a4 47 ELD["...._PRW..G 4260: 50 52 57 0a 09 0a 04 14 16 5f 50 52 54 00 a0 0a PRW......_PRT... 4270: 50 49 43 4d a4 41 52 30 35 a4 50 52 30 35 5b 82 PICM.AR05.PR05[. 4280: 4e 07 57 4c 41 4e 08 5f 41 44 52 0a 00 14 08 5f N.WLAN._ADR...._ 4290: 52 4d 56 00 a4 00 5b 80 4d 49 4e 50 02 0a 00 0a RMV...[.MINP.... 42a0: 68 5b 81 26 4d 49 4e 50 01 56 4e 55 4d 20 00 28 h[.&MINP.VNUM .( 42b0: 50 49 4e 46 08 53 42 43 43 08 42 53 43 43 08 00 PINF.SBCC.BSCC.. 42c0: 40 10 53 4e 55 4d 20 00 20 14 24 4d 50 44 50 00 @.SNUM . .$MPDP. 42d0: a0 0e 93 53 4e 55 4d 0c ff ff ff ff a4 0a 00 a0 ...SNUM......... 42e0: 0c 92 93 42 53 43 43 0a 02 a4 0a 00 a4 01 14 0f ...BSCC......... 42f0: 5f 50 52 57 00 a4 47 50 52 57 0a 09 0a 03 5b 82 _PRW..GPRW....[. 4300: 42 28 52 50 30 34 08 5f 41 44 52 0c 03 00 1c 00 B(RP04._ADR..... 4310: 5b 80 4c 43 54 4c 02 0a 50 0a 04 5b 81 12 4c 43 [.LCTL..P..[..LC 4320: 54 4c 01 00 04 50 45 4c 44 01 50 45 52 4c 01 5b TL...PELD.PERL.[ 4330: 80 53 4c 4f 54 02 0a 54 0a 10 5b 81 43 04 53 4c .SLOT..T..[.C.SL 4340: 4f 54 01 53 43 41 50 20 53 43 54 4c 10 41 42 50 OT.SCAP SCTL.ABP 4350: 31 01 50 46 44 31 01 4d 53 43 31 01 50 44 43 31 1.PFD1.MSC1.PDC1 4360: 01 43 43 31 30 01 4d 53 31 30 01 50 44 53 31 01 .CC10.MS10.PDS1. 4370: 52 53 56 30 01 4c 41 53 43 01 52 53 56 31 07 5b RSV0.LASC.RSV1.[ 4380: 80 52 48 55 42 02 0a 60 0a 10 5b 81 1a 52 48 55 .RHUB..`..[..RHU 4390: 42 01 50 4d 49 44 10 50 4d 45 53 01 50 4d 45 50 B.PMID.PMES.PMEP 43a0: 01 52 53 56 32 0e 5b 80 4d 49 53 43 02 0a d8 0a .RSV2.[.MISC.... 43b0: 08 5b 81 3d 4d 49 53 43 01 52 53 56 34 1e 50 4d .[.=MISC.RSV4.PM 43c0: 43 45 01 48 50 43 45 01 50 4d 4d 53 01 48 50 50 CE.HPCE.PMMS.HPP 43d0: 44 01 48 50 41 42 01 48 50 43 43 01 48 50 4c 41 D.HPAB.HPCC.HPLA 43e0: 01 52 53 56 33 19 48 50 43 53 01 50 4d 43 53 01 .RSV3.HPCS.PMCS. 43f0: 5b 80 50 58 43 53 02 0a 40 0a c0 5b 81 41 05 50 [.PXCS..@..[.A.P 4400: 58 43 53 40 00 40 09 00 0d 4c 41 53 58 01 00 32 XCS@.@...LASX..2 4410: 41 42 50 58 01 00 02 50 44 43 58 01 00 02 50 44 ABPX...PDCX...PD 4420: 53 58 01 00 01 4c 53 43 58 01 00 27 00 10 50 53 SX...LSCX..'..PS 4430: 50 58 01 00 4f 3a 00 1e 48 50 45 58 01 50 4d 45 PX..O:..HPEX.PME 4440: 58 01 00 1e 48 50 53 58 01 50 4d 53 58 01 14 1f X...HPSX.PMSX... 4450: 48 50 48 4b 00 70 0a 01 50 44 43 31 70 0a 01 48 HPHK.p..PDC1p..H 4460: 50 43 53 70 0a 00 50 45 4c 44 5b 22 0a fa 14 0f PCSp..PELD[".... 4470: 5f 50 52 57 00 a4 47 50 52 57 0a 09 0a 04 14 16 _PRW..GPRW...... 4480: 5f 50 52 54 00 a0 0a 50 49 43 4d a4 41 52 30 37 _PRT...PICM.AR07 4490: a4 50 52 30 37 5b 82 4b 0e 58 48 43 49 08 5f 41 .PR07[.K.XHCI._A 44a0: 44 52 0a 00 5b 80 58 48 50 43 02 0a 00 0b 00 01 DR..[.XHPC...... 44b0: 5b 81 18 58 48 50 43 01 58 48 56 44 20 58 48 30 [..XHPC.XHVD XH0 44c0: 34 08 00 48 05 58 48 31 30 20 08 54 4d 50 30 0a 4..H.XH10 .TMP0. 44d0: 00 08 54 4d 50 31 0a 00 14 09 5f 52 4d 56 00 a4 ..TMP1...._RMV.. 44e0: 0a 00 14 46 04 5f 4f 4e 5f 00 5c 2f 05 5f 53 42 ...F._ON_.\/._SB 44f0: 5f 50 43 49 30 53 42 52 47 45 43 30 5f 53 54 38 _PCI0SBRGEC0_ST8 4500: 37 0a 20 0a 25 5b 22 0a 64 5c 2f 05 5f 53 42 5f 7. .%[".d\/._SB_ 4510: 50 43 49 30 53 42 52 47 45 43 30 5f 53 54 38 37 PCI0SBRGEC0_ST87 4520: 0a 20 0a 45 5b 22 0b e8 03 14 06 5f 49 4e 49 00 . .E["....._INI. 4530: 14 41 04 5f 4f 46 46 00 70 5c 2f 05 5f 53 42 5f .A._OFF.p\/._SB_ 4540: 50 43 49 30 53 42 52 47 45 43 30 5f 53 54 38 37 PCI0SBRGEC0_ST87 4550: 0a 40 0a 45 61 70 5c 2f 05 5f 53 42 5f 50 43 49 .@.Eap\/._SB_PCI 4560: 30 53 42 52 47 45 43 30 5f 53 54 38 37 0a 40 0a 0SBRGEC0_ST87.@. 4570: 25 61 14 0f 5f 50 52 57 00 a4 47 50 52 57 0a 09 %a.._PRW..GPRW.. 4580: 0a 03 5b 82 45 19 52 50 30 35 08 5f 41 44 52 0c ..[.E.RP05._ADR. 4590: 04 00 1c 00 5b 80 4c 43 54 4c 02 0a 50 0a 04 5b ....[.LCTL..P..[ 45a0: 81 12 4c 43 54 4c 01 00 04 50 45 4c 44 01 50 45 ..LCTL...PELD.PE 45b0: 52 4c 01 5b 80 53 4c 4f 54 02 0a 54 0a 10 5b 81 RL.[.SLOT..T..[. 45c0: 43 04 53 4c 4f 54 01 53 43 41 50 20 53 43 54 4c C.SLOT.SCAP SCTL 45d0: 10 41 42 50 31 01 50 46 44 31 01 4d 53 43 31 01 .ABP1.PFD1.MSC1. 45e0: 50 44 43 31 01 43 43 31 30 01 4d 53 31 30 01 50 PDC1.CC10.MS10.P 45f0: 44 53 31 01 52 53 56 30 01 4c 41 53 43 01 52 53 DS1.RSV0.LASC.RS 4600: 56 31 07 5b 80 52 48 55 42 02 0a 60 0a 10 5b 81 V1.[.RHUB..`..[. 4610: 1a 52 48 55 42 01 50 4d 49 44 10 50 4d 45 53 01 .RHUB.PMID.PMES. 4620: 50 4d 45 50 01 52 53 56 32 0e 5b 80 4d 49 53 43 PMEP.RSV2.[.MISC 4630: 02 0a d8 0a 08 5b 81 3d 4d 49 53 43 01 52 53 56 .....[.=MISC.RSV 4640: 34 1e 50 4d 43 45 01 48 50 43 45 01 50 4d 4d 53 4.PMCE.HPCE.PMMS 4650: 01 48 50 50 44 01 48 50 41 42 01 48 50 43 43 01 .HPPD.HPAB.HPCC. 4660: 48 50 4c 41 01 52 53 56 33 19 48 50 43 53 01 50 HPLA.RSV3.HPCS.P 4670: 4d 43 53 01 5b 80 50 58 43 53 02 0a 40 0a c0 5b MCS.[.PXCS..@..[ 4680: 81 41 05 50 58 43 53 40 00 40 09 00 0d 4c 41 53 .A.PXCS@.@...LAS 4690: 58 01 00 32 41 42 50 58 01 00 02 50 44 43 58 01 X..2ABPX...PDCX. 46a0: 00 02 50 44 53 58 01 00 01 4c 53 43 58 01 00 27 ..PDSX...LSCX..' 46b0: 00 10 50 53 50 58 01 00 4f 3a 00 1e 48 50 45 58 ..PSPX..O:..HPEX 46c0: 01 50 4d 45 58 01 00 1e 48 50 53 58 01 50 4d 53 .PMEX...HPSX.PMS 46d0: 58 01 14 1f 48 50 48 4b 00 70 0a 01 50 44 43 31 X...HPHK.p..PDC1 46e0: 70 0a 01 48 50 43 53 70 0a 00 50 45 4c 44 5b 22 p..HPCSp..PELD[" 46f0: 0a fa 14 0f 5f 50 52 57 00 a4 47 50 52 57 0a 09 ...._PRW..GPRW.. 4700: 0a 04 14 16 5f 50 52 54 00 a0 0a 50 49 43 4d a4 ...._PRT...PICM. 4710: 41 52 30 38 a4 50 52 30 38 5b 82 40 1e 52 50 30 AR08.PR08[.@.RP0 4720: 36 08 5f 41 44 52 0c 05 00 1c 00 5b 80 4c 43 54 6._ADR.....[.LCT 4730: 4c 02 0a 50 0a 04 5b 81 12 4c 43 54 4c 01 00 04 L..P..[..LCTL... 4740: 50 45 4c 44 01 50 45 52 4c 01 5b 80 53 4c 4f 54 PELD.PERL.[.SLOT 4750: 02 0a 54 0a 10 5b 81 43 04 53 4c 4f 54 01 53 43 ..T..[.C.SLOT.SC 4760: 41 50 20 53 43 54 4c 10 41 42 50 31 01 50 46 44 AP SCTL.ABP1.PFD 4770: 31 01 4d 53 43 31 01 50 44 43 31 01 43 43 31 30 1.MSC1.PDC1.CC10 4780: 01 4d 53 31 30 01 50 44 53 31 01 52 53 56 30 01 .MS10.PDS1.RSV0. 4790: 4c 41 53 43 01 52 53 56 31 07 5b 80 52 48 55 42 LASC.RSV1.[.RHUB 47a0: 02 0a 60 0a 10 5b 81 1a 52 48 55 42 01 50 4d 49 ..`..[..RHUB.PMI 47b0: 44 10 50 4d 45 53 01 50 4d 45 50 01 52 53 56 32 D.PMES.PMEP.RSV2 47c0: 0e 5b 80 4d 49 53 43 02 0a d8 0a 08 5b 81 3d 4d .[.MISC.....[.=M 47d0: 49 53 43 01 52 53 56 34 1e 50 4d 43 45 01 48 50 ISC.RSV4.PMCE.HP 47e0: 43 45 01 50 4d 4d 53 01 48 50 50 44 01 48 50 41 CE.PMMS.HPPD.HPA 47f0: 42 01 48 50 43 43 01 48 50 4c 41 01 52 53 56 33 B.HPCC.HPLA.RSV3 4800: 19 48 50 43 53 01 50 4d 43 53 01 5b 80 50 58 43 .HPCS.PMCS.[.PXC 4810: 53 02 0a 40 0a c0 5b 81 41 05 50 58 43 53 40 00 S..@..[.A.PXCS@. 4820: 40 09 00 0d 4c 41 53 58 01 00 32 41 42 50 58 01 @...LASX..2ABPX. 4830: 00 02 50 44 43 58 01 00 02 50 44 53 58 01 00 01 ..PDCX...PDSX... 4840: 4c 53 43 58 01 00 27 00 10 50 53 50 58 01 00 4f LSCX..'..PSPX..O 4850: 3a 00 1e 48 50 45 58 01 50 4d 45 58 01 00 1e 48 :..HPEX.PMEX...H 4860: 50 53 58 01 50 4d 53 58 01 14 1f 48 50 48 4b 00 PSX.PMSX...HPHK. 4870: 70 0a 01 50 44 43 31 70 0a 01 48 50 43 53 70 0a p..PDC1p..HPCSp. 4880: 00 50 45 4c 44 5b 22 0a fa 14 0f 5f 50 52 57 00 .PELD["...._PRW. 4890: a4 47 50 52 57 0a 09 0a 04 14 16 5f 50 52 54 00 .GPRW......_PRT. 48a0: a0 0a 50 49 43 4d a4 41 52 30 39 a4 50 52 30 39 ..PICM.AR09.PR09 48b0: 5b 82 49 04 47 4c 41 4e 08 5f 41 44 52 0a 00 14 [.I.GLAN._ADR... 48c0: 08 5f 52 4d 56 00 a4 00 5b 80 4c 41 4e 52 02 0a ._RMV...[.LANR.. 48d0: 00 0b 00 01 5b 81 15 4c 41 4e 52 01 56 49 44 5f ....[..LANR.VID_ 48e0: 10 00 40 6f 00 0f 50 4d 45 53 01 14 0f 5f 50 52 ..@o..PMES..._PR 48f0: 57 00 a4 47 50 52 57 0a 09 0a 04 5b 82 45 19 52 W..GPRW....[.E.R 4900: 50 30 37 08 5f 41 44 52 0c 06 00 1c 00 5b 80 4c P07._ADR.....[.L 4910: 43 54 4c 02 0a 50 0a 04 5b 81 12 4c 43 54 4c 01 CTL..P..[..LCTL. 4920: 00 04 50 45 4c 44 01 50 45 52 4c 01 5b 80 53 4c ..PELD.PERL.[.SL 4930: 4f 54 02 0a 54 0a 10 5b 81 43 04 53 4c 4f 54 01 OT..T..[.C.SLOT. 4940: 53 43 41 50 20 53 43 54 4c 10 41 42 50 31 01 50 SCAP SCTL.ABP1.P 4950: 46 44 31 01 4d 53 43 31 01 50 44 43 31 01 43 43 FD1.MSC1.PDC1.CC 4960: 31 30 01 4d 53 31 30 01 50 44 53 31 01 52 53 56 10.MS10.PDS1.RSV 4970: 30 01 4c 41 53 43 01 52 53 56 31 07 5b 80 52 48 0.LASC.RSV1.[.RH 4980: 55 42 02 0a 60 0a 10 5b 81 1a 52 48 55 42 01 50 UB..`..[..RHUB.P 4990: 4d 49 44 10 50 4d 45 53 01 50 4d 45 50 01 52 53 MID.PMES.PMEP.RS 49a0: 56 32 0e 5b 80 4d 49 53 43 02 0a d8 0a 08 5b 81 V2.[.MISC.....[. 49b0: 3d 4d 49 53 43 01 52 53 56 34 1e 50 4d 43 45 01 =MISC.RSV4.PMCE. 49c0: 48 50 43 45 01 50 4d 4d 53 01 48 50 50 44 01 48 HPCE.PMMS.HPPD.H 49d0: 50 41 42 01 48 50 43 43 01 48 50 4c 41 01 52 53 PAB.HPCC.HPLA.RS 49e0: 56 33 19 48 50 43 53 01 50 4d 43 53 01 5b 80 50 V3.HPCS.PMCS.[.P 49f0: 58 43 53 02 0a 40 0a c0 5b 81 41 05 50 58 43 53 XCS..@..[.A.PXCS 4a00: 40 00 40 09 00 0d 4c 41 53 58 01 00 32 41 42 50 @.@...LASX..2ABP 4a10: 58 01 00 02 50 44 43 58 01 00 02 50 44 53 58 01 X...PDCX...PDSX. 4a20: 00 01 4c 53 43 58 01 00 27 00 10 50 53 50 58 01 ..LSCX..'..PSPX. 4a30: 00 4f 3a 00 1e 48 50 45 58 01 50 4d 45 58 01 00 .O:..HPEX.PMEX.. 4a40: 1e 48 50 53 58 01 50 4d 53 58 01 14 1f 48 50 48 .HPSX.PMSX...HPH 4a50: 4b 00 70 0a 01 50 44 43 31 70 0a 01 48 50 43 53 K.p..PDC1p..HPCS 4a60: 70 0a 00 50 45 4c 44 5b 22 0a fa 14 0f 5f 50 52 p..PELD["...._PR 4a70: 57 00 a4 47 50 52 57 0a 09 0a 04 14 16 5f 50 52 W..GPRW......_PR 4a80: 54 00 a0 0a 50 49 43 4d a4 41 52 30 45 a4 50 52 T...PICM.AR0E.PR 4a90: 30 45 5b 82 45 19 52 50 30 38 08 5f 41 44 52 0c 0E[.E.RP08._ADR. 4aa0: 07 00 1c 00 5b 80 4c 43 54 4c 02 0a 50 0a 04 5b ....[.LCTL..P..[ 4ab0: 81 12 4c 43 54 4c 01 00 04 50 45 4c 44 01 50 45 ..LCTL...PELD.PE 4ac0: 52 4c 01 5b 80 53 4c 4f 54 02 0a 54 0a 10 5b 81 RL.[.SLOT..T..[. 4ad0: 43 04 53 4c 4f 54 01 53 43 41 50 20 53 43 54 4c C.SLOT.SCAP SCTL 4ae0: 10 41 42 50 31 01 50 46 44 31 01 4d 53 43 31 01 .ABP1.PFD1.MSC1. 4af0: 50 44 43 31 01 43 43 31 30 01 4d 53 31 30 01 50 PDC1.CC10.MS10.P 4b00: 44 53 31 01 52 53 56 30 01 4c 41 53 43 01 52 53 DS1.RSV0.LASC.RS 4b10: 56 31 07 5b 80 52 48 55 42 02 0a 60 0a 10 5b 81 V1.[.RHUB..`..[. 4b20: 1a 52 48 55 42 01 50 4d 49 44 10 50 4d 45 53 01 .RHUB.PMID.PMES. 4b30: 50 4d 45 50 01 52 53 56 32 0e 5b 80 4d 49 53 43 PMEP.RSV2.[.MISC 4b40: 02 0a d8 0a 08 5b 81 3d 4d 49 53 43 01 52 53 56 .....[.=MISC.RSV 4b50: 34 1e 50 4d 43 45 01 48 50 43 45 01 50 4d 4d 53 4.PMCE.HPCE.PMMS 4b60: 01 48 50 50 44 01 48 50 41 42 01 48 50 43 43 01 .HPPD.HPAB.HPCC. 4b70: 48 50 4c 41 01 52 53 56 33 19 48 50 43 53 01 50 HPLA.RSV3.HPCS.P 4b80: 4d 43 53 01 5b 80 50 58 43 53 02 0a 40 0a c0 5b MCS.[.PXCS..@..[ 4b90: 81 41 05 50 58 43 53 40 00 40 09 00 0d 4c 41 53 .A.PXCS@.@...LAS 4ba0: 58 01 00 32 41 42 50 58 01 00 02 50 44 43 58 01 X..2ABPX...PDCX. 4bb0: 00 02 50 44 53 58 01 00 01 4c 53 43 58 01 00 27 ..PDSX...LSCX..' 4bc0: 00 10 50 53 50 58 01 00 4f 3a 00 1e 48 50 45 58 ..PSPX..O:..HPEX 4bd0: 01 50 4d 45 58 01 00 1e 48 50 53 58 01 50 4d 53 .PMEX...HPSX.PMS 4be0: 58 01 14 1f 48 50 48 4b 00 70 0a 01 50 44 43 31 X...HPHK.p..PDC1 4bf0: 70 0a 01 48 50 43 53 70 0a 00 50 45 4c 44 5b 22 p..HPCSp..PELD[" 4c00: 0a fa 14 0f 5f 50 52 57 00 a4 47 50 52 57 0a 09 ...._PRW..GPRW.. 4c10: 0a 04 14 16 5f 50 52 54 00 a0 0a 50 49 43 4d a4 ...._PRT...PICM. 4c20: 41 52 30 46 a4 50 52 30 46 5b 82 89 ed 01 47 46 AR0F.PR0F[....GF 4c30: 58 30 08 5f 41 44 52 0c 00 00 02 00 5b 80 56 53 X0._ADR.....[.VS 4c40: 49 44 02 0a 00 0a 04 5b 81 0b 56 53 49 44 01 52 ID.....[..VSID.R 4c50: 45 47 30 20 08 50 43 54 47 12 02 0b 10 28 5c 2e EG0 .PCTG....(\. 4c60: 5f 53 42 5f 50 43 49 30 5b 80 4d 43 48 50 02 0a _SB_PCI0[.MCHP.. 4c70: 40 0a c0 5b 81 10 4d 43 48 50 00 00 40 30 54 41 @..[..MCHP..@0TA 4c80: 53 4d 0a 00 06 5b 80 49 47 44 50 02 0a 40 0a c0 SM...[.IGDP..@.. 4c90: 5b 81 45 05 49 47 44 50 00 00 40 09 00 01 47 49 [.E.IGDP..@...GI 4ca0: 56 44 01 00 02 47 55 4d 41 03 00 09 00 04 47 4d VD...GUMA.....GM 4cb0: 46 4e 01 00 1b 00 40 46 41 53 4c 45 08 00 18 47 FN....@FASLE...G 4cc0: 53 53 45 01 47 53 53 42 0e 47 53 45 53 01 00 30 SSE.GSSB.GSES..0 4cd0: 00 0c 43 44 56 4c 01 00 03 00 18 4c 42 50 43 08 ..CDVL.....LBPC. 4ce0: 00 30 41 53 4c 53 20 5b 80 49 47 44 4d 00 41 53 .0ASLS [.IGDM.AS 4cf0: 4c 42 0b 00 20 5b 81 48 19 49 47 44 4d 00 53 49 LB.. [.H.IGDM.SI 4d00: 47 4e 40 08 53 49 5a 45 20 4f 56 45 52 20 53 56 GN@.SIZE OVER SV 4d10: 45 52 40 10 56 56 45 52 40 08 47 56 45 52 40 08 ER@.VVER@.GVER@. 4d20: 4d 42 4f 58 20 44 4d 4f 44 20 00 40 50 44 52 44 MBOX DMOD .@PDRD 4d30: 59 20 43 53 54 53 20 43 45 56 54 20 00 40 0a 44 Y CSTS CEVT .@.D 4d40: 49 44 4c 20 44 44 4c 32 20 44 44 4c 33 20 44 44 IDL DDL2 DDL3 DD 4d50: 4c 34 20 44 44 4c 35 20 44 44 4c 36 20 44 44 4c L4 DDL5 DDL6 DDL 4d60: 37 20 44 44 4c 38 20 43 50 44 4c 20 43 50 4c 32 7 DDL8 CPDL CPL2 4d70: 20 43 50 4c 33 20 43 50 4c 34 20 43 50 4c 35 20 CPL3 CPL4 CPL5 4d80: 43 50 4c 36 20 43 50 4c 37 20 43 50 4c 38 20 43 CPL6 CPL7 CPL8 C 4d90: 41 44 4c 20 43 41 4c 32 20 43 41 4c 33 20 43 41 ADL CAL2 CAL3 CA 4da0: 4c 34 20 43 41 4c 35 20 43 41 4c 36 20 43 41 4c L4 CAL5 CAL6 CAL 4db0: 37 20 43 41 4c 38 20 4e 41 44 4c 20 4e 44 4c 32 7 CAL8 NADL NDL2 4dc0: 20 4e 44 4c 33 20 4e 44 4c 34 20 4e 44 4c 35 20 NDL3 NDL4 NDL5 4dd0: 4e 44 4c 36 20 4e 44 4c 37 20 4e 44 4c 38 20 41 NDL6 NDL7 NDL8 A 4de0: 53 4c 50 20 54 49 44 58 20 43 48 50 44 20 43 4c SLP TIDX CHPD CL 4df0: 49 44 20 43 44 43 4b 20 53 58 53 57 20 45 56 54 ID CDCK SXSW EVT 4e00: 53 20 43 4e 4f 54 20 4e 52 44 59 20 00 40 1e 53 S CNOT NRDY .@.S 4e10: 43 49 45 01 47 45 46 43 04 47 58 46 43 03 47 45 CIE.GEFC.GXFC.GE 4e20: 53 46 08 00 10 50 41 52 4d 20 44 53 4c 50 20 00 SF...PARM DSLP . 4e30: 40 7a 41 52 44 59 20 41 53 4c 43 20 54 43 48 45 @zARDY ASLC TCHE 4e40: 20 41 4c 53 49 20 42 43 4c 50 20 50 46 49 54 20 ALSI BCLP PFIT 4e50: 43 42 4c 56 20 42 43 4c 4d 40 14 43 50 46 4d 20 CBLV BCLM@.CPFM 4e60: 45 50 46 4d 20 50 4c 55 54 40 25 50 46 4d 42 20 EPFM PLUT@%PFMB 4e70: 43 43 44 56 20 50 43 46 54 20 00 40 2f 47 56 44 CCDV PCFT .@/GVD 4e80: 31 80 00 0c 50 48 45 44 20 42 44 44 43 40 80 08 1...PHED BDDC@.. 4e90: 44 42 54 42 12 38 15 0a 00 0a 07 0a 38 0b c0 01 DBTB.8......8... 4ea0: 0b 00 0e 0a 3f 0b c7 01 0b 07 0e 0b f8 01 0b 38 ....?..........8 4eb0: 0e 0b c0 0f 0a 00 0a 00 0a 00 0a 00 0a 00 0b 00 ................ 4ec0: 70 0b 07 70 0b 38 70 0b c0 71 0b 00 7e 08 43 44 p..p.8p..q..~.CD 4ed0: 43 54 12 29 05 12 07 02 0a e4 0b 40 01 12 07 02 CT.).......@.... 4ee0: 0a de 0b 4d 01 12 07 02 0a de 0b 4d 01 12 06 02 ...M.......M.... 4ef0: 0a 00 0a 00 12 07 02 0a de 0b 4d 01 08 53 55 43 ..........M..SUC 4f00: 43 0a 01 08 4e 56 4c 44 0a 02 08 43 52 49 54 0a C...NVLD...CRIT. 4f10: 04 08 4e 43 52 54 0a 06 14 4e 51 47 53 43 49 08 ..NCRT...NQGSCI. 4f20: 14 42 1f 47 42 44 41 08 a0 1b 93 47 45 53 46 0a .B.GBDA....GESF. 4f30: 00 70 0b 79 06 50 41 52 4d 70 00 47 45 53 46 a4 .p.y.PARMp.GESF. 4f40: 53 55 43 43 a0 1b 93 47 45 53 46 0a 01 70 0b 40 SUCC...GESF..p.@ 4f50: 02 50 41 52 4d 70 00 47 45 53 46 a4 53 55 43 43 .PARMp.GESF.SUCC 4f60: a0 47 04 93 47 45 53 46 0a 04 7b 50 41 52 4d 0c .G..GESF..{PARM. 4f70: 00 00 ff ef 50 41 52 4d 7b 50 41 52 4d 79 83 88 ....PARM{PARMy.. 4f80: 44 42 54 42 49 42 54 54 00 0a 10 00 50 41 52 4d DBTBIBTT....PARM 4f90: 7d 49 42 54 54 50 41 52 4d 50 41 52 4d 70 00 47 }IBTTPARMPARMp.G 4fa0: 45 53 46 a4 53 55 43 43 a0 4a 06 93 47 45 53 46 ESF.SUCC.J..GESF 4fb0: 0a 05 70 49 50 53 43 50 41 52 4d 7d 50 41 52 4d ..pIPSCPARM}PARM 4fc0: 79 49 50 41 54 0a 08 00 50 41 52 4d 72 50 41 52 yIPAT...PARMrPAR 4fd0: 4d 0b 00 01 50 41 52 4d 7d 50 41 52 4d 79 4c 49 M...PARM}PARMyLI 4fe0: 44 53 0a 10 00 50 41 52 4d 72 50 41 52 4d 0c 00 DS...PARMrPARM.. 4ff0: 00 01 00 50 41 52 4d 7d 50 41 52 4d 79 49 42 49 ...PARM}PARMyIBI 5000: 41 0a 14 00 50 41 52 4d 70 00 47 45 53 46 a4 53 A...PARMp.GESF.S 5010: 55 43 43 a0 2d 93 47 45 53 46 0a 06 70 49 54 56 UCC.-.GESF..pITV 5020: 46 50 41 52 4d 7d 50 41 52 4d 79 49 54 56 4d 0a FPARM}PARMyITVM. 5030: 04 00 50 41 52 4d 70 00 47 45 53 46 a4 53 55 43 ..PARMp.GESF.SUC 5040: 43 a0 49 07 93 47 45 53 46 0a 07 70 47 49 56 44 C.I..GESF..pGIVD 5050: 50 41 52 4d 7f 50 41 52 4d 0a 01 50 41 52 4d 7d PARM.PARM..PARM} 5060: 50 41 52 4d 79 47 4d 46 4e 0a 01 00 50 41 52 4d PARMyGMFN...PARM 5070: 7d 50 41 52 4d 79 0a 03 0a 0b 00 50 41 52 4d 7d }PARMy.....PARM} 5080: 50 41 52 4d 79 49 44 4d 53 0a 11 00 50 41 52 4d PARMyIDMS...PARM 5090: 7d 79 83 88 83 88 43 44 43 54 48 56 43 4f 00 43 }y....CDCTHVCO.C 50a0: 44 56 4c 00 0a 15 00 50 41 52 4d 50 41 52 4d 70 DVL....PARMPARMp 50b0: 0a 01 47 45 53 46 a4 53 55 43 43 a0 2c 93 47 45 ..GESF.SUCC.,.GE 50c0: 53 46 0a 0a 70 0a 00 50 41 52 4d a0 10 49 53 53 SF..p..PARM..ISS 50d0: 43 7d 50 41 52 4d 0a 03 50 41 52 4d 70 0a 00 47 C}PARM..PARMp..G 50e0: 45 53 46 a4 53 55 43 43 a0 1f 93 47 45 53 46 0a ESF.SUCC...GESF. 50f0: 0b 70 4b 53 56 30 50 41 52 4d 70 4b 53 56 31 47 .pKSV0PARMpKSV1G 5100: 45 53 46 a4 53 55 43 43 70 00 47 45 53 46 a4 43 ESF.SUCCp.GESF.C 5110: 52 49 54 14 41 2e 53 42 43 42 08 a0 24 93 47 45 RIT.A.SBCB..$.GE 5120: 53 46 0a 00 70 0a 00 50 41 52 4d 70 0c fd 87 0f SF..p..PARMp.... 5130: 00 50 41 52 4d 70 00 47 45 53 46 a4 53 55 43 43 .PARMp.GESF.SUCC 5140: a0 19 93 47 45 53 46 0a 01 70 00 47 45 53 46 70 ...GESF..p.GESFp 5150: 00 50 41 52 4d a4 53 55 43 43 a0 19 93 47 45 53 .PARM.SUCC...GES 5160: 46 0a 03 70 00 47 45 53 46 70 00 50 41 52 4d a4 F..p.GESFp.PARM. 5170: 53 55 43 43 a0 19 93 47 45 53 46 0a 04 70 00 47 SUCC...GESF..p.G 5180: 45 53 46 70 00 50 41 52 4d a4 53 55 43 43 a0 19 ESFp.PARM.SUCC.. 5190: 93 47 45 53 46 0a 05 70 00 47 45 53 46 70 00 50 .GESF..p.GESFp.P 51a0: 41 52 4d a4 53 55 43 43 a0 37 93 47 45 53 46 0a ARM.SUCC.7.GESF. 51b0: 06 70 7b 50 41 52 4d 0a 0f 00 49 54 56 46 70 7a .p{PARM...ITVFpz 51c0: 7b 50 41 52 4d 0a f0 00 0a 04 00 49 54 56 4d 70 {PARM......ITVMp 51d0: 00 47 45 53 46 70 00 50 41 52 4d a4 53 55 43 43 .GESFp.PARM.SUCC 51e0: a0 46 04 93 47 45 53 46 0a 07 a0 2b 93 50 41 52 .F..GESF...+.PAR 51f0: 4d 0a 00 70 43 4c 49 44 60 a0 1c 7b 0c 00 00 00 M..pCLID`..{.... 5200: 80 60 00 7b 43 4c 49 44 0a 0f 43 4c 49 44 47 4c .`.{CLID..CLIDGL 5210: 49 44 43 4c 49 44 70 00 47 45 53 46 70 00 50 41 IDCLIDp.GESFp.PA 5220: 52 4d a4 53 55 43 43 a0 19 93 47 45 53 46 0a 08 RM.SUCC...GESF.. 5230: 70 00 47 45 53 46 70 00 50 41 52 4d a4 53 55 43 p.GESFp.PARM.SUC 5240: 43 a0 24 93 47 45 53 46 0a 09 7b 50 41 52 4d 0a C.$.GESF..{PARM. 5250: ff 49 42 54 54 70 00 47 45 53 46 70 00 50 41 52 .IBTTp.GESFp.PAR 5260: 4d a4 53 55 43 43 a0 46 05 93 47 45 53 46 0a 0a M.SUCC.F..GESF.. 5270: 7b 50 41 52 4d 0a ff 49 50 53 43 a0 21 7b 7a 50 {PARM..IPSC.!{zP 5280: 41 52 4d 0a 08 00 0a ff 00 7b 7a 50 41 52 4d 0a ARM......{zPARM. 5290: 08 00 0a ff 49 50 41 54 76 49 50 41 54 7b 7a 50 ....IPATvIPAT{zP 52a0: 41 52 4d 0a 14 00 0a 07 49 42 49 41 70 00 47 45 ARM.....IBIAp.GE 52b0: 53 46 70 00 50 41 52 4d a4 53 55 43 43 a0 47 05 SFp.PARM.SUCC.G. 52c0: 93 47 45 53 46 0a 0b 7b 7a 50 41 52 4d 0a 01 00 .GESF..{zPARM... 52d0: 0a 01 49 46 31 45 a0 1c 7b 50 41 52 4d 79 0a 0f ..IF1E..{PARMy.. 52e0: 0a 0d 00 00 7b 7a 50 41 52 4d 0a 0d 00 0a 0f 49 ....{zPARM.....I 52f0: 44 4d 53 a1 10 7b 7a 50 41 52 4d 0a 11 00 0a 0f DMS..{zPARM..... 5300: 49 44 4d 53 70 00 47 45 53 46 70 00 50 41 52 4d IDMSp.GESFp.PARM 5310: a4 53 55 43 43 a0 19 93 47 45 53 46 0a 10 70 00 .SUCC...GESF..p. 5320: 47 45 53 46 70 00 50 41 52 4d a4 53 55 43 43 a0 GESFp.PARM.SUCC. 5330: 2c 93 47 45 53 46 0a 11 70 79 4c 49 44 53 0a 08 ,.GESF..pyLIDS.. 5340: 00 50 41 52 4d 72 50 41 52 4d 0b 00 01 50 41 52 .PARMrPARM...PAR 5350: 4d 70 00 47 45 53 46 a4 53 55 43 43 a0 4e 04 93 Mp.GESF.SUCC.N.. 5360: 47 45 53 46 0a 12 a0 2a 7b 50 41 52 4d 0a 01 00 GESF...*{PARM... 5370: a0 13 93 7a 50 41 52 4d 0a 01 00 0a 01 70 0a 01 ...zPARM.....p.. 5380: 49 53 53 43 a1 0c 70 00 47 45 53 46 a4 43 52 49 ISSC..p.GESF.CRI 5390: 54 a1 08 70 0a 00 49 53 53 43 70 00 47 45 53 46 T..p..ISSCp.GESF 53a0: 70 00 50 41 52 4d a4 53 55 43 43 a0 19 93 47 45 p.PARM.SUCC...GE 53b0: 53 46 0a 13 70 00 47 45 53 46 70 00 50 41 52 4d SF..p.GESFp.PARM 53c0: a4 53 55 43 43 a0 24 93 47 45 53 46 0a 14 7b 50 .SUCC.$.GESF..{P 53d0: 41 52 4d 0a 0f 50 41 56 50 70 00 47 45 53 46 70 ARM..PAVPp.GESFp 53e0: 00 50 41 52 4d a4 53 55 43 43 70 00 47 45 53 46 .PARM.SUCCp.GESF 53f0: a4 53 55 43 43 a0 11 93 47 45 46 43 0a 04 70 47 .SUCC...GEFC..pG 5400: 42 44 41 47 58 46 43 a0 11 93 47 45 46 43 0a 06 BDAGXFC...GEFC.. 5410: 70 53 42 43 42 47 58 46 43 70 0a 00 47 45 46 43 pSBCBGXFCp..GEFC 5420: 70 0a 01 53 43 49 53 70 0a 00 47 53 53 45 70 0a p..SCISp..GSSEp. 5430: 00 53 43 49 45 a4 00 14 19 50 44 52 44 00 a0 0c .SCIE....PDRD... 5440: 92 44 52 44 59 5b 22 41 53 4c 50 a4 92 44 52 44 .DRDY["ASLP..DRD 5450: 59 14 1d 50 53 54 53 00 a0 0e 94 43 53 54 53 0a Y..PSTS....CSTS. 5460: 02 5b 22 41 53 4c 50 a4 93 43 53 54 53 0a 03 14 .["ASLP..CSTS... 5470: 42 08 47 4e 4f 54 02 a0 08 50 44 52 44 a4 0a 01 B.GNOT...PDRD... 5480: 70 68 43 45 56 54 70 0a 03 43 53 54 53 a0 3f 90 phCEVTp..CSTS.?. 5490: 93 43 48 50 44 0a 00 93 69 0a 00 a0 1e 91 94 4f .CHPD...i......O 54a0: 53 59 53 0b d0 07 95 4f 53 59 53 0b d6 07 86 5c SYS....OSYS....\ 54b0: 2e 5f 53 42 5f 50 43 49 30 69 a1 12 86 5c 2f 03 ._SB_PCI0i...\/. 54c0: 5f 53 42 5f 50 43 49 30 47 46 58 30 69 a0 0d 5b _SB_PCI0GFX0i..[ 54d0: 12 48 4e 4f 54 00 48 4e 4f 54 68 a1 13 86 5c 2f .HNOT.HNOTh...\/ 54e0: 03 5f 53 42 5f 50 43 49 30 47 46 58 30 0a 80 a4 ._SB_PCI0GFX0... 54f0: 0a 00 14 15 47 48 44 53 01 70 68 54 49 44 58 a4 ....GHDS.phTIDX. 5500: 47 4e 4f 54 0a 01 0a 00 14 15 47 4c 49 44 01 70 GNOT......GLID.p 5510: 68 43 4c 49 44 a4 47 4e 4f 54 0a 02 0a 00 14 15 hCLID.GNOT...... 5520: 47 44 43 4b 01 70 68 43 44 43 4b a4 47 4e 4f 54 GDCK.phCDCK.GNOT 5530: 0a 04 0a 00 14 19 50 41 52 44 00 a0 0c 92 41 52 ......PARD....AR 5540: 44 59 5b 22 41 53 4c 50 a4 92 41 52 44 59 14 49 DY["ASLP..ARDY.I 5550: 13 41 49 4e 54 02 a0 10 92 7b 54 43 48 45 79 0a .AINT....{TCHEy. 5560: 01 68 00 00 a4 0a 01 a0 08 50 41 52 44 a4 0a 01 .h.......PARD... 5570: a0 46 0c 93 68 0a 02 a0 4d 09 43 50 46 4d 7b 43 .F..h...M.CPFM{C 5580: 50 46 4d 0a 0f 60 7b 45 50 46 4d 0a 0f 61 a0 2c PFM..`{EPFM..a., 5590: 93 60 0a 01 a0 0d 7b 61 0a 06 00 70 0a 06 50 46 .`....{a...p..PF 55a0: 49 54 a1 18 a0 0d 7b 61 0a 08 00 70 0a 08 50 46 IT....{a...p..PF 55b0: 49 54 a1 08 70 0a 01 50 46 49 54 a0 2c 93 60 0a IT..p..PFIT.,.`. 55c0: 06 a0 0d 7b 61 0a 08 00 70 0a 08 50 46 49 54 a1 ...{a...p..PFIT. 55d0: 18 a0 0d 7b 61 0a 01 00 70 0a 01 50 46 49 54 a1 ...{a...p..PFIT. 55e0: 08 70 0a 06 50 46 49 54 a0 2c 93 60 0a 08 a0 0d .p..PFIT.,.`.... 55f0: 7b 61 0a 01 00 70 0a 01 50 46 49 54 a1 18 a0 0d {a...p..PFIT.... 5600: 7b 61 0a 06 00 70 0a 06 50 46 49 54 a1 08 70 0a {a...p..PFIT..p. 5610: 08 50 46 49 54 a1 0c 7f 50 46 49 54 0a 07 50 46 .PFIT...PFIT..PF 5620: 49 54 7d 50 46 49 54 0c 00 00 00 80 50 46 49 54 IT}PFIT.....PFIT 5630: 70 0a 04 41 53 4c 43 a1 46 04 a0 29 93 68 0a 01 p..ASLC.F..).h.. 5640: 70 78 77 69 0a ff 00 0a 64 00 00 42 43 4c 50 7d pxwi....d..BCLP} 5650: 42 43 4c 50 0c 00 00 00 80 42 43 4c 50 70 0a 02 BCLP.....BCLPp.. 5660: 41 53 4c 43 a1 19 a0 12 93 68 0a 00 70 69 41 4c ASLC.....h..piAL 5670: 53 49 70 0a 01 41 53 4c 43 a1 04 a4 0a 01 70 0a SIp..ASLC.....p. 5680: 01 41 53 4c 45 a4 0a 00 14 19 53 43 49 50 00 a0 .ASLE.....SCIP.. 5690: 0f 92 93 4f 56 45 52 0a 00 a4 92 47 53 4d 49 a4 ...OVER....GSMI. 56a0: 0a 00 08 4f 50 42 53 0c 00 ff ff ff 14 25 4f 50 ...OPBS......%OP 56b0: 54 53 01 a0 1e 7b 5c 2e 5f 53 42 5f 56 47 41 46 TS...{\._SB_VGAF 56c0: 0a 01 00 a0 0e 93 68 0a 03 70 41 53 4c 53 4f 50 ......h..pASLSOP 56d0: 42 53 14 43 04 4f 57 41 4b 01 a0 3b 7b 5c 2e 5f BS.C.OWAK..;{\._ 56e0: 53 42 5f 56 47 41 46 0a 01 00 a0 15 93 68 0a 03 SB_VGAF......h.. 56f0: 70 4f 50 42 53 41 53 4c 53 70 0a 01 47 53 45 53 pOPBSASLSp..GSES 5700: 70 0a 01 5c 2f 04 5f 53 42 5f 50 43 49 30 47 46 p..\/._SB_PCI0GF 5710: 58 30 43 4c 49 44 14 4e 14 4f 47 43 44 00 a0 19 X0CLID.N.OGCD... 5720: 93 43 41 44 4c 0a 00 70 4c 43 44 4d 5c 2e 5f 53 .CADL..pLCDM\._S 5730: 42 5f 43 53 54 45 a4 00 70 4f 41 32 44 43 41 44 B_CSTE..pOA2DCAD 5740: 4c 5c 2e 5f 53 42 5f 43 53 54 45 a0 0a 93 43 41 L\._SB_CSTE...CA 5750: 4c 32 0a 00 a4 00 7d 4f 41 32 44 43 41 4c 32 5c L2....}OA2DCAL2\ 5760: 2e 5f 53 42 5f 43 53 54 45 5c 2e 5f 53 42 5f 43 ._SB_CSTE\._SB_C 5770: 53 54 45 a0 0a 93 43 41 4c 33 0a 00 a4 00 7d 4f STE...CAL3....}O 5780: 41 32 44 43 41 4c 33 5c 2e 5f 53 42 5f 43 53 54 A2DCAL3\._SB_CST 5790: 45 5c 2e 5f 53 42 5f 43 53 54 45 a0 0a 93 43 41 E\._SB_CSTE...CA 57a0: 4c 34 0a 00 a4 00 7d 4f 41 32 44 43 41 4c 34 5c L4....}OA2DCAL4\ 57b0: 2e 5f 53 42 5f 43 53 54 45 5c 2e 5f 53 42 5f 43 ._SB_CSTE\._SB_C 57c0: 53 54 45 a0 0a 93 43 41 4c 35 0a 00 a4 00 7d 4f STE...CAL5....}O 57d0: 41 32 44 43 41 4c 35 5c 2e 5f 53 42 5f 43 53 54 A2DCAL5\._SB_CST 57e0: 45 5c 2e 5f 53 42 5f 43 53 54 45 a0 0a 93 43 41 E\._SB_CSTE...CA 57f0: 4c 36 0a 00 a4 00 7d 4f 41 32 44 43 41 4c 36 5c L6....}OA2DCAL6\ 5800: 2e 5f 53 42 5f 43 53 54 45 5c 2e 5f 53 42 5f 43 ._SB_CSTE\._SB_C 5810: 53 54 45 a0 0a 93 43 41 4c 37 0a 00 a4 00 7d 4f STE...CAL7....}O 5820: 41 32 44 43 41 4c 37 5c 2e 5f 53 42 5f 43 53 54 A2DCAL7\._SB_CST 5830: 45 5c 2e 5f 53 42 5f 43 53 54 45 a0 0a 93 43 41 E\._SB_CSTE...CA 5840: 4c 38 0a 00 a4 00 7d 4f 41 32 44 43 41 4c 38 5c L8....}OA2DCAL8\ 5850: 2e 5f 53 42 5f 43 53 54 45 5c 2e 5f 53 42 5f 43 ._SB_CSTE\._SB_C 5860: 53 54 45 a4 00 14 42 15 4f 47 43 41 00 53 44 54 STE...B.OGCA.SDT 5870: 50 a0 19 93 43 50 44 4c 0a 00 70 4c 43 44 4d 5c P...CPDL..pLCDM\ 5880: 2e 5f 53 42 5f 43 41 44 4c a4 00 70 4f 41 32 44 ._SB_CADL..pOA2D 5890: 43 50 44 4c 5c 2e 5f 53 42 5f 43 41 44 4c a0 0a CPDL\._SB_CADL.. 58a0: 93 43 50 4c 32 0a 00 a4 00 7d 4f 41 32 44 43 50 .CPL2....}OA2DCP 58b0: 4c 32 5c 2e 5f 53 42 5f 43 41 44 4c 5c 2e 5f 53 L2\._SB_CADL\._S 58c0: 42 5f 43 41 44 4c a0 0a 93 43 50 4c 33 0a 00 a4 B_CADL...CPL3... 58d0: 00 7d 4f 41 32 44 43 50 4c 33 5c 2e 5f 53 42 5f .}OA2DCPL3\._SB_ 58e0: 43 41 44 4c 5c 2e 5f 53 42 5f 43 41 44 4c a0 0a CADL\._SB_CADL.. 58f0: 93 43 50 4c 34 0a 00 a4 00 7d 4f 41 32 44 43 50 .CPL4....}OA2DCP 5900: 4c 34 5c 2e 5f 53 42 5f 43 41 44 4c 5c 2e 5f 53 L4\._SB_CADL\._S 5910: 42 5f 43 41 44 4c a0 0a 93 43 50 4c 35 0a 00 a4 B_CADL...CPL5... 5920: 00 7d 4f 41 32 44 43 50 4c 35 5c 2e 5f 53 42 5f .}OA2DCPL5\._SB_ 5930: 43 41 44 4c 5c 2e 5f 53 42 5f 43 41 44 4c a0 0a CADL\._SB_CADL.. 5940: 93 43 50 4c 36 0a 00 a4 00 7d 4f 41 32 44 43 50 .CPL6....}OA2DCP 5950: 4c 36 5c 2e 5f 53 42 5f 43 41 44 4c 5c 2e 5f 53 L6\._SB_CADL\._S 5960: 42 5f 43 41 44 4c a0 0a 93 43 50 4c 37 0a 00 a4 B_CADL...CPL7... 5970: 00 7d 4f 41 32 44 43 50 4c 37 5c 2e 5f 53 42 5f .}OA2DCPL7\._SB_ 5980: 43 41 44 4c 5c 2e 5f 53 42 5f 43 41 44 4c a0 0a CADL\._SB_CADL.. 5990: 93 43 50 4c 38 0a 00 a4 00 7d 4f 41 32 44 43 50 .CPL8....}OA2DCP 59a0: 4c 38 5c 2e 5f 53 42 5f 43 41 44 4c 5c 2e 5f 53 L8\._SB_CADL\._S 59b0: 42 5f 43 41 44 4c a4 00 14 46 06 4f 41 32 44 01 B_CADL...F.OA2D. 59c0: 70 00 60 a0 0e 93 68 4c 46 49 44 7d 60 4c 43 44 p.`...hLFID}`LCD 59d0: 4d 60 a0 0e 93 68 43 52 49 44 7d 60 43 52 54 4d M`...hCRID}`CRTM 59e0: 60 a0 0e 93 68 54 56 49 44 7d 60 54 56 4f 4d 60 `...hTVID}`TVOM` 59f0: a0 0e 93 68 48 44 49 44 7d 60 48 44 4d 4d 60 a0 ...hHDID}`HDMM`. 5a00: 0e 93 68 44 56 49 44 7d 60 44 56 49 4d 60 a0 0e ..hDVID}`DVIM`.. 5a10: 93 68 44 50 49 44 7d 60 44 50 4f 4d 60 a4 60 08 .hDPID}`DPOM`.`. 5a20: 44 44 49 44 0a 00 14 46 0a 57 4e 44 44 01 70 47 DDID...F.WNDD.pG 5a30: 44 49 44 68 44 44 49 44 70 44 44 49 44 4e 41 44 DIDhDDIDpDDIDNAD 5a40: 4c 70 47 44 49 44 68 44 44 49 44 70 44 44 49 44 LpGDIDhDDIDpDDID 5a50: 4e 44 4c 32 70 47 44 49 44 68 44 44 49 44 70 44 NDL2pGDIDhDDIDpD 5a60: 44 49 44 4e 44 4c 33 70 47 44 49 44 68 44 44 49 DIDNDL3pGDIDhDDI 5a70: 44 70 44 44 49 44 4e 44 4c 34 70 47 44 49 44 68 DpDDIDNDL4pGDIDh 5a80: 44 44 49 44 70 44 44 49 44 4e 44 4c 35 70 47 44 DDIDpDDIDNDL5pGD 5a90: 49 44 68 44 44 49 44 70 44 44 49 44 4e 44 4c 36 IDhDDIDpDDIDNDL6 5aa0: 70 47 44 49 44 68 44 44 49 44 70 44 44 49 44 4e pGDIDhDDIDpDDIDN 5ab0: 44 4c 37 70 47 44 49 44 68 44 44 49 44 70 44 44 DL7pGDIDhDDIDpDD 5ac0: 49 44 4e 44 4c 38 70 0a 00 43 4f 4e 54 08 43 4f IDNDL8p..CONT.CO 5ad0: 4e 54 0a 00 14 45 08 47 44 49 44 01 a2 4a 07 95 NT...E.GDID..J.. 5ae0: 43 4f 4e 54 0a 08 70 0a 01 60 79 60 43 4f 4e 54 CONT..p..`y`CONT 5af0: 60 7b 5c 2e 5f 53 42 5f 4e 53 54 45 60 61 75 43 `{\._SB_NSTE`auC 5b00: 4f 4e 54 a0 0d 7b 61 4c 43 44 4d 00 a4 4c 46 49 ONT..{aLCDM..LFI 5b10: 44 a0 0d 7b 61 43 52 54 4d 00 a4 43 52 49 44 a0 D..{aCRTM..CRID. 5b20: 0d 7b 61 54 56 4f 4d 00 a4 54 56 49 44 a0 0d 7b .{aTVOM..TVID..{ 5b30: 61 48 44 4d 4d 00 a4 48 44 49 44 a0 0d 7b 61 44 aHDMM..HDID..{aD 5b40: 56 49 4d 00 a4 44 56 49 44 a0 0d 7b 61 44 50 4f VIM..DVID..{aDPO 5b50: 4d 00 a4 44 50 49 44 a4 0a 00 08 4c 46 49 44 0c M..DPID....LFID. 5b60: ff ff ff ff 08 43 52 49 44 0c ff ff ff ff 08 54 .....CRID......T 5b70: 56 49 44 0c ff ff ff ff 08 44 50 49 44 0c ff ff VID......DPID... 5b80: ff ff 08 48 44 49 44 0c ff ff ff ff 08 44 56 49 ...HDID......DVI 5b90: 44 0c ff ff ff ff 14 41 04 47 44 54 50 01 7b 68 D......A.GDTP.{h 5ba0: 0b 00 0f 60 a0 0c 93 60 0b 00 01 70 68 43 52 49 ...`...`...phCRI 5bb0: 44 a0 0c 93 60 0b 00 02 70 68 54 56 49 44 a0 0c D...`...phTVID.. 5bc0: 93 60 0b 00 04 70 68 4c 46 49 44 a0 0c 93 68 0b .`...phLFID...h. 5bd0: 00 03 70 68 48 44 49 44 14 47 04 53 44 54 50 00 ..phHDID.G.SDTP. 5be0: 47 44 54 50 43 50 44 4c 47 44 54 50 43 50 4c 32 GDTPCPDLGDTPCPL2 5bf0: 47 44 54 50 43 50 4c 33 47 44 54 50 43 50 4c 34 GDTPCPL3GDTPCPL4 5c00: 47 44 54 50 43 50 4c 35 47 44 54 50 43 50 4c 36 GDTPCPL5GDTPCPL6 5c10: 47 44 54 50 43 50 4c 37 47 44 54 50 43 50 4c 38 GDTPCPL7GDTPCPL8 5c20: 14 18 50 52 53 54 00 a0 0d 93 52 45 47 30 0c ff ..PRST....REG0.. 5c30: ff ff ff a4 00 a1 03 a4 01 08 4c 43 44 4d 0b 08 ..........LCDM.. 5c40: 08 08 43 52 54 4d 0b 01 01 08 54 56 4f 4d 0b 02 ..CRTM....TVOM.. 5c50: 02 08 48 44 4d 4d 0b 04 04 08 44 56 49 4d 0b 40 ..HDMM....DVIM.@ 5c60: 40 08 44 50 4f 4d 0b 80 80 08 44 4f 53 46 01 08 @.DPOM....DOSF.. 5c70: 42 52 4e 43 00 08 55 50 44 4e 01 08 4e 58 54 44 BRNC..UPDN..NXTD 5c80: 0a 01 14 49 06 4d 44 32 41 01 70 00 60 a0 0d 7b ...I.MD2A.p.`..{ 5c90: 68 4c 43 44 4d 00 7d 60 0a 01 60 a0 0d 7b 68 43 hLCDM.}`..`..{hC 5ca0: 52 54 4d 00 7d 60 0a 02 60 a0 0d 7b 68 54 56 4f RTM.}`..`..{hTVO 5cb0: 4d 00 7d 60 0a 04 60 a0 0d 7b 68 44 56 49 4d 00 M.}`..`..{hDVIM. 5cc0: 7d 60 0a 08 60 a0 0d 7b 68 48 44 4d 4d 00 7d 60 }`..`..{hHDMM.}` 5cd0: 0a 10 60 a0 0d 7b 68 44 50 4f 4d 00 7d 60 0a 20 ..`..{hDPOM.}`. 5ce0: 60 a0 08 92 60 a4 4e 58 54 44 a4 60 14 49 06 4d `...`.NXTD.`.I.M 5cf0: 41 32 44 01 70 00 60 a0 0d 7b 68 0a 01 00 7d 60 A2D.p.`..{h...}` 5d00: 4c 43 44 4d 60 a0 0d 7b 68 0a 02 00 7d 60 43 52 LCDM`..{h...}`CR 5d10: 54 4d 60 a0 0d 7b 68 0a 04 00 7d 60 54 56 4f 4d TM`..{h...}`TVOM 5d20: 60 a0 0d 7b 68 0a 08 00 7d 60 44 56 49 4d 60 a0 `..{h...}`DVIM`. 5d30: 0d 7b 68 0a 10 00 7d 60 48 44 4d 4d 60 a0 0d 7b .{h...}`HDMM`..{ 5d40: 68 0a 20 00 7d 60 44 50 4f 4d 60 a0 08 92 60 a4 h. .}`DPOM`...`. 5d50: 4c 43 44 4d a4 60 14 06 5f 49 4e 49 00 14 37 5f LCDM.`.._INI..7_ 5d60: 44 4f 53 01 47 56 49 46 a0 2c 7b 5c 2e 5f 53 42 DOS.GVIF.,{\._SB 5d70: 5f 56 42 49 46 0a 01 00 7b 68 0a 03 44 4f 53 46 _VBIF...{h..DOSF 5d80: 70 7a 68 0a 02 00 42 52 4e 43 7b 42 52 4e 43 0a pzh...BRNC{BRNC. 5d90: 01 42 52 4e 43 14 4c 26 5f 44 4f 44 00 70 0a 00 .BRNC.L&_DOD.p.. 5da0: 4e 44 49 44 a0 15 92 93 44 49 44 4c 00 70 53 44 NDID....DIDL.pSD 5db0: 44 4c 44 49 44 4c 44 49 44 31 a0 15 92 93 44 44 DLDIDLDID1....DD 5dc0: 4c 32 00 70 53 44 44 4c 44 44 4c 32 44 49 44 32 L2.pSDDLDDL2DID2 5dd0: a0 15 92 93 44 44 4c 33 00 70 53 44 44 4c 44 44 ....DDL3.pSDDLDD 5de0: 4c 33 44 49 44 33 a0 15 92 93 44 44 4c 34 00 70 L3DID3....DDL4.p 5df0: 53 44 44 4c 44 44 4c 34 44 49 44 34 a0 15 92 93 SDDLDDL4DID4.... 5e00: 44 44 4c 35 00 70 53 44 44 4c 44 44 4c 35 44 49 DDL5.pSDDLDDL5DI 5e10: 44 35 a0 2e 93 4e 44 49 44 0a 01 08 54 4d 50 31 D5...NDID...TMP1 5e20: 12 07 01 0c ff ff ff ff 70 7d 0c 00 00 01 00 44 ........p}.....D 5e30: 49 44 31 00 88 54 4d 50 31 0a 00 00 a4 54 4d 50 ID1..TMP1....TMP 5e40: 31 a0 48 04 93 4e 44 49 44 0a 02 08 54 4d 50 32 1.H..NDID...TMP2 5e50: 12 0c 02 0c ff ff ff ff 0c ff ff ff ff 70 7d 0c .............p}. 5e60: 00 00 01 00 44 49 44 31 00 88 54 4d 50 32 0a 00 ....DID1..TMP2.. 5e70: 00 70 7d 0c 00 00 01 00 44 49 44 32 00 88 54 4d .p}.....DID2..TM 5e80: 50 32 0a 01 00 a4 54 4d 50 32 a0 41 06 93 4e 44 P2....TMP2.A..ND 5e90: 49 44 0a 03 08 54 4d 50 33 12 11 03 0c ff ff ff ID...TMP3....... 5ea0: ff 0c ff ff ff ff 0c ff ff ff ff 70 7d 0c 00 00 ...........p}... 5eb0: 01 00 44 49 44 31 00 88 54 4d 50 33 0a 00 00 70 ..DID1..TMP3...p 5ec0: 7d 0c 00 00 01 00 44 49 44 32 00 88 54 4d 50 33 }.....DID2..TMP3 5ed0: 0a 01 00 70 7d 0c 00 00 01 00 44 49 44 33 00 88 ...p}.....DID3.. 5ee0: 54 4d 50 33 0a 02 00 a4 54 4d 50 33 a0 4a 07 93 TMP3....TMP3.J.. 5ef0: 4e 44 49 44 0a 04 08 54 4d 50 34 12 16 04 0c ff NDID...TMP4..... 5f00: ff ff ff 0c ff ff ff ff 0c ff ff ff ff 0c ff ff ................ 5f10: ff ff 70 7d 0c 00 00 01 00 44 49 44 31 00 88 54 ..p}.....DID1..T 5f20: 4d 50 34 0a 00 00 70 7d 0c 00 00 01 00 44 49 44 MP4...p}.....DID 5f30: 32 00 88 54 4d 50 34 0a 01 00 70 7d 0c 00 00 01 2..TMP4...p}.... 5f40: 00 44 49 44 33 00 88 54 4d 50 34 0a 02 00 70 7d .DID3..TMP4...p} 5f50: 0c 00 00 01 00 44 49 44 34 00 88 54 4d 50 34 0a .....DID4..TMP4. 5f60: 03 00 a4 54 4d 50 34 a0 43 09 94 4e 44 49 44 0a ...TMP4.C..NDID. 5f70: 04 08 54 4d 50 35 12 1b 05 0c ff ff ff ff 0c ff ..TMP5.......... 5f80: ff ff ff 0c ff ff ff ff 0c ff ff ff ff 0c ff ff ................ 5f90: ff ff 70 7d 0c 00 00 01 00 44 49 44 31 00 88 54 ..p}.....DID1..T 5fa0: 4d 50 35 0a 00 00 70 7d 0c 00 00 01 00 44 49 44 MP5...p}.....DID 5fb0: 32 00 88 54 4d 50 35 0a 01 00 70 7d 0c 00 00 01 2..TMP5...p}.... 5fc0: 00 44 49 44 33 00 88 54 4d 50 35 0a 02 00 70 7d .DID3..TMP5...p} 5fd0: 0c 00 00 01 00 44 49 44 34 00 88 54 4d 50 35 0a .....DID4..TMP5. 5fe0: 03 00 70 7d 0c 00 00 01 00 44 49 44 35 00 88 54 ..p}.....DID5..T 5ff0: 4d 50 35 0a 04 00 a4 54 4d 50 35 a4 12 05 01 0b MP5....TMP5..... 6000: 00 04 5b 82 45 06 44 44 30 31 14 1e 5f 41 44 52 ..[.E.DD01.._ADR 6010: 08 a0 0b 93 44 49 44 31 0a 00 a4 0a 01 a1 0b a4 ....DID1........ 6020: 7b 0b ff ff 44 49 44 31 00 14 0f 5f 44 43 53 00 {...DID1..._DCS. 6030: a4 43 44 44 53 44 49 44 31 14 0f 5f 44 47 53 00 .CDDSDID1.._DGS. 6040: a4 4e 44 44 53 44 49 44 31 14 1f 5f 44 53 53 01 .NDDSDID1.._DSS. 6050: a0 18 93 7b 68 0c 00 00 00 c0 00 0c 00 00 00 c0 ...{h........... 6060: 70 4e 53 54 45 43 53 54 45 5b 82 42 12 4c 43 44 pNSTECSTE[.B.LCD 6070: 44 14 1e 5f 41 44 52 08 a0 0b 93 44 49 44 32 0a D.._ADR....DID2. 6080: 00 a4 0a 02 a1 0b a4 7b 0b ff ff 44 49 44 32 00 .......{...DID2. 6090: 14 0f 5f 44 43 53 00 a4 43 44 44 53 44 49 44 32 .._DCS..CDDSDID2 60a0: 14 0f 5f 44 47 53 00 a4 4e 44 44 53 44 49 44 32 .._DGS..NDDSDID2 60b0: 14 1f 5f 44 53 53 01 a0 18 93 7b 68 0c 00 00 00 .._DSS....{h.... 60c0: c0 00 0c 00 00 00 c0 70 4e 53 54 45 43 53 54 45 .......pNSTECSTE 60d0: 14 46 06 5f 42 43 4c 00 70 0a 00 60 70 42 52 54 .F._BCL.p..`pBRT 60e0: 49 64 79 64 0a 04 64 a2 4a 04 95 60 0a 0b 74 0a Idyd..d.J..`..t. 60f0: 0b 60 63 74 63 0a 01 63 70 72 64 63 00 63 70 83 .`ctc..cprdc.cp. 6100: 88 5c 2f 05 5f 53 42 5f 50 43 49 30 53 42 52 47 .\/._SB_PCI0SBRG 6110: 45 43 30 5f 50 57 41 43 63 00 61 70 78 77 61 0a EC0_PWACc.apxwa. 6120: 64 00 0a ff 00 00 62 70 62 88 50 43 54 47 60 00 d.....bpb.PCTG`. 6130: 75 60 a4 50 43 54 47 08 42 43 42 48 0a 00 14 3c u`.PCTG.BCBH...< 6140: 5f 42 43 4d 01 70 01 42 43 4d 44 70 47 43 42 4c _BCM.p.BCMDpGCBL 6150: 68 60 74 74 0a 0b 0a 01 00 60 5c 2e 5f 53 42 5f h`tt.....`\._SB_ 6160: 4c 42 54 4e 5c 2f 05 5f 53 42 5f 50 43 49 30 53 LBTN\/._SB_PCI0S 6170: 42 52 47 45 43 30 5f 53 54 42 52 14 11 5f 42 51 BRGEC0_STBR.._BQ 6180: 43 00 a4 5c 2e 5f 53 42 5f 4c 42 54 4e 5b 82 43 C..\._SB_LBTN[.C 6190: 07 44 44 30 33 14 1e 5f 41 44 52 08 a0 0b 93 44 .DD03.._ADR....D 61a0: 49 44 33 0a 00 a4 0a 03 a1 0b a4 7b 0b ff ff 44 ID3........{...D 61b0: 49 44 33 00 14 1d 5f 44 43 53 00 a0 0b 93 44 49 ID3..._DCS....DI 61c0: 44 33 0a 00 a4 0a 0b a1 0a a4 43 44 44 53 44 49 D3........CDDSDI 61d0: 44 33 14 0f 5f 44 47 53 00 a4 4e 44 44 53 44 49 D3.._DGS..NDDSDI 61e0: 44 33 14 1f 5f 44 53 53 01 a0 18 93 7b 68 0c 00 D3.._DSS....{h.. 61f0: 00 00 c0 00 0c 00 00 00 c0 70 4e 53 54 45 43 53 .........pNSTECS 6200: 54 45 5b 82 43 07 44 44 30 34 14 1e 5f 41 44 52 TE[.C.DD04.._ADR 6210: 08 a0 0b 93 44 49 44 34 0a 00 a4 0a 04 a1 0b a4 ....DID4........ 6220: 7b 0b ff ff 44 49 44 34 00 14 1d 5f 44 43 53 00 {...DID4..._DCS. 6230: a0 0b 93 44 49 44 34 0a 00 a4 0a 0b a1 0a a4 43 ...DID4........C 6240: 44 44 53 44 49 44 34 14 0f 5f 44 47 53 00 a4 4e DDSDID4.._DGS..N 6250: 44 44 53 44 49 44 34 14 1f 5f 44 53 53 01 a0 18 DDSDID4.._DSS... 6260: 93 7b 68 0c 00 00 00 c0 00 0c 00 00 00 c0 70 4e .{h...........pN 6270: 53 54 45 43 53 54 45 5b 82 43 07 44 44 30 35 14 STECSTE[.C.DD05. 6280: 1e 5f 41 44 52 08 a0 0b 93 44 49 44 35 0a 00 a4 ._ADR....DID5... 6290: 0a 05 a1 0b a4 7b 0b ff ff 44 49 44 35 00 14 1d .....{...DID5... 62a0: 5f 44 43 53 00 a0 0b 93 44 49 44 35 0a 00 a4 0a _DCS....DID5.... 62b0: 0b a1 0a a4 43 44 44 53 44 49 44 35 14 0f 5f 44 ....CDDSDID5.._D 62c0: 47 53 00 a4 4e 44 44 53 44 49 44 35 14 1f 5f 44 GS..NDDSDID5.._D 62d0: 53 53 01 a0 18 93 7b 68 0c 00 00 00 c0 00 0c 00 SS....{h........ 62e0: 00 00 c0 70 4e 53 54 45 43 53 54 45 5b 82 43 07 ...pNSTECSTE[.C. 62f0: 44 44 30 36 14 1e 5f 41 44 52 08 a0 0b 93 44 49 DD06.._ADR....DI 6300: 44 36 0a 00 a4 0a 06 a1 0b a4 7b 0b ff ff 44 49 D6........{...DI 6310: 44 36 00 14 1d 5f 44 43 53 00 a0 0b 93 44 49 44 D6..._DCS....DID 6320: 36 0a 00 a4 0a 0b a1 0a a4 43 44 44 53 44 49 44 6........CDDSDID 6330: 36 14 0f 5f 44 47 53 00 a4 4e 44 44 53 44 49 44 6.._DGS..NDDSDID 6340: 36 14 1f 5f 44 53 53 01 a0 18 93 7b 68 0c 00 00 6.._DSS....{h... 6350: 00 c0 00 0c 00 00 00 c0 70 4e 53 54 45 43 53 54 ........pNSTECST 6360: 45 5b 82 43 07 44 44 30 37 14 1e 5f 41 44 52 08 E[.C.DD07.._ADR. 6370: a0 0b 93 44 49 44 37 0a 00 a4 0a 07 a1 0b a4 7b ...DID7........{ 6380: 0b ff ff 44 49 44 37 00 14 1d 5f 44 43 53 00 a0 ...DID7..._DCS.. 6390: 0b 93 44 49 44 37 0a 00 a4 0a 0b a1 0a a4 43 44 ..DID7........CD 63a0: 44 53 44 49 44 37 14 0f 5f 44 47 53 00 a4 4e 44 DSDID7.._DGS..ND 63b0: 44 53 44 49 44 37 14 1f 5f 44 53 53 01 a0 18 93 DSDID7.._DSS.... 63c0: 7b 68 0c 00 00 00 c0 00 0c 00 00 00 c0 70 4e 53 {h...........pNS 63d0: 54 45 43 53 54 45 5b 82 43 07 44 44 30 38 14 1e TECSTE[.C.DD08.. 63e0: 5f 41 44 52 08 a0 0b 93 44 49 44 38 0a 00 a4 0a _ADR....DID8.... 63f0: 08 a1 0b a4 7b 0b ff ff 44 49 44 38 00 14 1d 5f ....{...DID8..._ 6400: 44 43 53 00 a0 0b 93 44 49 44 38 0a 00 a4 0a 0b DCS....DID8..... 6410: a1 0a a4 43 44 44 53 44 49 44 38 14 0f 5f 44 47 ...CDDSDID8.._DG 6420: 53 00 a4 4e 44 44 53 44 49 44 38 14 1f 5f 44 53 S..NDDSDID8.._DS 6430: 53 01 a0 18 93 7b 68 0c 00 00 00 c0 00 0c 00 00 S....{h......... 6440: 00 c0 70 4e 53 54 45 43 53 54 45 14 4f 06 53 44 ..pNSTECSTE.O.SD 6450: 44 4c 01 75 4e 44 49 44 70 7b 68 0b 0f 0f 00 60 DL.uNDIDp{h....` 6460: 7d 0c 00 00 00 80 60 61 a0 09 93 44 49 44 4c 60 }.....`a...DIDL` 6470: a4 61 a0 09 93 44 44 4c 32 60 a4 61 a0 09 93 44 .a...DDL2`.a...D 6480: 44 4c 33 60 a4 61 a0 09 93 44 44 4c 34 60 a4 61 DL3`.a...DDL4`.a 6490: a0 09 93 44 44 4c 35 60 a4 61 a0 09 93 44 44 4c ...DDL5`.a...DDL 64a0: 36 60 a4 61 a0 09 93 44 44 4c 37 60 a4 61 a0 09 6`.a...DDL7`.a.. 64b0: 93 44 44 4c 38 60 a4 61 a4 0a 00 14 43 07 43 44 .DDL8`.a....C.CD 64c0: 44 53 01 70 7b 68 0b 0f 0f 00 60 a0 08 93 0a 00 DS.p{h....`..... 64d0: 60 a4 0a 1d a0 0a 93 43 41 44 4c 60 a4 0a 1f a0 `......CADL`.... 64e0: 0a 93 43 41 4c 32 60 a4 0a 1f a0 0a 93 43 41 4c ..CAL2`......CAL 64f0: 33 60 a4 0a 1f a0 0a 93 43 41 4c 34 60 a4 0a 1f 3`......CAL4`... 6500: a0 0a 93 43 41 4c 35 60 a4 0a 1f a0 0a 93 43 41 ...CAL5`......CA 6510: 4c 36 60 a4 0a 1f a0 0a 93 43 41 4c 37 60 a4 0a L6`......CAL7`.. 6520: 1f a0 0a 93 43 41 4c 38 60 a4 0a 1f a4 0a 1d 14 ....CAL8`....... 6530: 43 07 4e 44 44 53 01 70 7b 68 0b 0f 0f 00 60 a0 C.NDDS.p{h....`. 6540: 08 93 0a 00 60 a4 0a 00 a0 0a 93 4e 41 44 4c 60 ....`......NADL` 6550: a4 0a 01 a0 0a 93 4e 44 4c 32 60 a4 0a 01 a0 0a ......NDL2`..... 6560: 93 4e 44 4c 33 60 a4 0a 01 a0 0a 93 4e 44 4c 34 .NDL3`......NDL4 6570: 60 a4 0a 01 a0 0a 93 4e 44 4c 35 60 a4 0a 01 a0 `......NDL5`.... 6580: 0a 93 4e 44 4c 36 60 a4 0a 01 a0 0a 93 4e 44 4c ..NDL6`......NDL 6590: 37 60 a4 0a 01 a0 0a 93 4e 44 4c 38 60 a4 0a 01 7`......NDL8`... 65a0: a4 0a 00 14 4b 14 53 57 48 44 09 70 01 55 50 44 ....K.SWHD.p.UPD 65b0: 4e a0 4c 07 93 44 4f 53 46 0a 01 a0 13 5c 4e 41 N.L..DOSF....\NA 65c0: 54 4b 70 0a 00 5c 2e 5f 53 42 5f 53 46 55 4e a1 TKp..\._SB_SFUN. 65d0: 0e 70 0a 04 5c 2e 5f 53 42 5f 53 46 55 4e 70 68 .p..\._SB_SFUNph 65e0: 5c 2e 5f 53 42 5f 53 53 54 45 a0 2b 5c 4e 41 54 \._SB_SSTE.+\NAT 65f0: 4b 70 4d 41 32 44 68 5c 2e 5f 53 42 5f 4e 53 54 KpMA2Dh\._SB_NST 6600: 45 70 5c 2e 5f 53 42 5f 4e 53 54 45 5c 2e 5f 53 Ep\._SB_NSTE\._S 6610: 42 5f 53 53 54 45 49 53 4d 49 0a 94 86 5c 2f 03 B_SSTEISMI...\/. 6620: 5f 53 42 5f 50 43 49 30 47 46 58 30 0a 81 a1 4d _SB_PCI0GFX0...M 6630: 0b 70 0a 01 5c 2f 04 5f 53 42 5f 50 43 49 30 47 .p..\/._SB_PCI0G 6640: 46 58 30 43 45 56 54 70 0a 03 5c 2f 04 5f 53 42 FX0CEVTp..\/._SB 6650: 5f 50 43 49 30 47 46 58 30 43 53 54 53 a0 4e 05 _PCI0GFX0CSTS.N. 6660: 92 93 5c 2e 5f 53 42 5f 43 41 44 4c 5c 2e 5f 53 ..\._SB_CADL\._S 6670: 42 5f 50 41 44 4c 70 5c 2e 5f 53 42 5f 43 41 44 B_PADLp\._SB_CAD 6680: 4c 5c 2e 5f 53 42 5f 50 41 44 4c a0 17 93 4f 53 L\._SB_PADL...OS 6690: 46 47 4f 53 58 50 86 5c 2e 5f 53 42 5f 50 43 49 FGOSXP.\._SB_PCI 66a0: 30 0a 00 a1 13 86 5c 2f 03 5f 53 42 5f 50 43 49 0.....\/._SB_PCI 66b0: 30 47 46 58 30 0a 00 5b 22 0b e8 03 70 4d 41 32 0GFX0..["...pMA2 66c0: 44 68 5c 2e 5f 53 42 5f 4e 53 54 45 57 4e 44 44 Dh\._SB_NSTEWNDD 66d0: 5c 2e 5f 53 42 5f 4e 53 54 45 86 5c 2f 03 5f 53 \._SB_NSTE.\/._S 66e0: 42 5f 50 43 49 30 47 46 58 30 0a 80 a4 0a 00 14 B_PCI0GFX0...... 66f0: 24 47 43 44 44 00 70 0a 01 5c 2e 5f 53 42 5f 53 $GCDD.p..\._SB_S 6700: 46 55 4e 49 53 4d 49 0a 95 a4 5c 2e 5f 53 42 5f FUNISMI...\._SB_ 6710: 43 53 54 45 14 24 47 4e 44 44 00 70 0a 05 5c 2e CSTE.$GNDD.p..\. 6720: 5f 53 42 5f 53 46 55 4e 49 53 4d 49 0a 95 a4 5c _SB_SFUNISMI...\ 6730: 2e 5f 53 42 5f 4e 53 54 45 14 24 47 43 41 44 00 ._SB_NSTE.$GCAD. 6740: 70 0a 02 5c 2e 5f 53 42 5f 53 46 55 4e 49 53 4d p..\._SB_SFUNISM 6750: 49 0a 95 a4 5c 2e 5f 53 42 5f 43 41 44 4c 14 31 I...\._SB_CADL.1 6760: 47 56 49 46 00 70 0a 67 5c 2e 5f 53 42 5f 56 42 GVIF.p.g\._SB_VB 6770: 49 46 70 0a 00 5c 2e 5f 53 42 5f 53 46 55 4e 49 IFp..\._SB_SFUNI 6780: 53 4d 49 0a 95 a4 5c 2e 5f 53 42 5f 56 42 49 46 SMI...\._SB_VBIF 6790: 14 44 27 41 44 56 44 00 a0 15 7b 44 4f 53 46 0a .D'ADVD...{DOSF. 67a0: 03 00 47 43 44 44 47 43 41 44 47 56 49 46 a1 09 ..GCDDGCADGVIF.. 67b0: 4f 47 43 41 4f 47 43 44 a0 47 24 5c 4e 41 54 4b OGCAOGCD.G$\NATK 67c0: a0 1e 55 50 44 4e 70 4d 44 32 41 5c 2e 5f 53 42 ..UPDNpMD2A\._SB 67d0: 5f 43 53 54 45 4e 58 54 44 70 00 55 50 44 4e 70 _CSTENXTDp.UPDNp 67e0: 00 60 70 4d 44 32 41 5c 2e 5f 53 42 5f 43 41 44 .`pMD2A\._SB_CAD 67f0: 4c 61 70 00 62 a0 1d 7b 5c 2e 5f 53 42 5f 56 47 Lap.b..{\._SB_VG 6800: 41 46 0a 01 00 7b 5c 2e 5f 53 42 5f 56 42 49 46 AF...{\._SB_VBIF 6810: 0a 08 62 a0 25 7b 93 62 0a 08 7b 5c 2e 5f 53 42 ..b.%{.b..{\._SB 6820: 5f 56 47 41 46 0a 01 00 00 7b 4e 58 54 44 61 4e _VGAF....{NXTDaN 6830: 58 54 44 70 4e 58 54 44 60 a2 41 1c 92 93 4e 58 XTDpNXTD`.A...NX 6840: 54 44 60 75 4e 58 54 44 a0 15 90 93 44 4f 53 46 TD`uNXTD....DOSF 6850: 0a 01 93 4e 58 54 44 0a 03 75 4e 58 54 44 a0 25 ...NXTD..uNXTD.% 6860: 7b 44 4f 53 46 0a 03 00 a0 0d 93 4e 58 54 44 0a {DOSF......NXTD. 6870: 05 75 4e 58 54 44 a0 0d 93 4e 58 54 44 0a 06 75 .uNXTD...NXTD..u 6880: 4e 58 54 44 a0 0d 93 4e 58 54 44 0a 07 75 4e 58 NXTD...NXTD..uNX 6890: 54 44 a0 17 7b 44 4f 53 46 0a 03 00 a0 0d 93 4e TD..{DOSF......N 68a0: 58 54 44 0a 09 75 4e 58 54 44 a0 15 90 93 44 4f XTD..uNXTD....DO 68b0: 53 46 0a 01 93 4e 58 54 44 0a 0a 75 4e 58 54 44 SF...NXTD..uNXTD 68c0: a0 0d 93 4e 58 54 44 0a 0b 75 4e 58 54 44 a0 15 ...NXTD..uNXTD.. 68d0: 90 93 44 4f 53 46 0a 01 93 4e 58 54 44 0a 0c 75 ..DOSF...NXTD..u 68e0: 4e 58 54 44 a2 15 90 94 4e 58 54 44 0a 0c 95 4e NXTD....NXTD...N 68f0: 58 54 44 0a 10 75 4e 58 54 44 a0 24 93 44 4f 53 XTD..uNXTD.$.DOS 6900: 46 0a 01 a0 0d 93 4e 58 54 44 0a 11 75 4e 58 54 F.....NXTD..uNXT 6910: 44 a0 0d 93 4e 58 54 44 0a 12 75 4e 58 54 44 a0 D...NXTD..uNXTD. 6920: 0d 93 4e 58 54 44 0a 13 75 4e 58 54 44 a0 3b 93 ..NXTD..uNXTD.;. 6930: 44 4f 53 46 0a 01 a2 16 90 92 95 4e 58 54 44 0a DOSF.......NXTD. 6940: 14 95 4e 58 54 44 0a 20 75 4e 58 54 44 a0 0d 93 ..NXTD. uNXTD... 6950: 4e 58 54 44 0a 21 75 4e 58 54 44 a0 0d 93 4e 58 NXTD.!uNXTD...NX 6960: 54 44 0a 22 75 4e 58 54 44 a0 0d 93 4e 58 54 44 TD."uNXTD...NXTD 6970: 0a 23 75 4e 58 54 44 a0 15 90 93 44 4f 53 46 0a .#uNXTD....DOSF. 6980: 01 93 4e 58 54 44 0a 24 75 4e 58 54 44 a2 15 90 ..NXTD.$uNXTD... 6990: 94 4e 58 54 44 0a 24 95 4e 58 54 44 0a 28 75 4e .NXTD.$.NXTD.(uN 69a0: 58 54 44 a0 15 90 93 44 4f 53 46 0a 01 93 4e 58 XTD....DOSF...NX 69b0: 54 44 0a 28 75 4e 58 54 44 a2 15 90 94 4e 58 54 TD.(uNXTD....NXT 69c0: 44 0a 28 95 4e 58 54 44 0a 30 75 4e 58 54 44 a0 D.(.NXTD.0uNXTD. 69d0: 15 90 93 44 4f 53 46 0a 01 93 4e 58 54 44 0a 30 ...DOSF...NXTD.0 69e0: 75 4e 58 54 44 a0 0e 94 4e 58 54 44 0a 30 70 01 uNXTD...NXTD.0p. 69f0: 4e 58 54 44 7b 4e 58 54 44 61 60 a4 4e 58 54 44 NXTD{NXTDa`.NXTD 6a00: a4 47 4e 44 44 14 35 47 43 44 53 00 a0 15 7b 44 .GNDD.5GCDS...{D 6a10: 4f 53 46 0a 03 00 47 43 44 44 47 43 41 44 47 56 OSF...GCDDGCADGV 6a20: 49 46 a1 09 4f 47 43 41 4f 47 43 44 a4 4d 44 32 IF..OGCAOGCD.MD2 6a30: 41 5c 2e 5f 53 42 5f 43 53 54 45 14 08 4e 41 54 A\._SB_CSTE..NAT 6a40: 4b 00 a4 01 08 42 43 4d 44 0a 00 14 0f 55 50 42 K....BCMD....UPB 6a50: 4c 00 86 4c 43 44 44 0a 86 a4 00 14 0f 44 57 42 L..LCDD......DWB 6a60: 4c 00 86 4c 43 44 44 0a 87 a4 00 14 44 04 47 43 L..LCDD.....D.GC 6a70: 42 4c 01 70 0a 00 60 7b 68 0c ff ff ff 7f 68 a2 BL.p..`{h.....h. 6a80: 2e 95 60 74 0a 0b 0a 01 00 70 83 88 50 43 54 47 ..`t.....p..PCTG 6a90: 60 00 61 70 83 88 50 43 54 47 72 60 0a 01 00 00 `.ap..PCTGr`.... 6aa0: 62 a0 0a 90 92 94 68 61 94 68 62 a5 75 60 a4 60 b.....ha.hb.u`.` 6ab0: 5b 82 42 05 5c 2e 5f 53 42 5f 4d 45 4d 32 08 5f [.B.\._SB_MEM2._ 6ac0: 48 49 44 0c 41 d0 0c 01 08 5f 55 49 44 0a 02 08 HID.A...._UID... 6ad0: 43 52 53 5f 11 1d 0a 1a 86 09 00 01 00 00 00 20 CRS_........... 6ae0: 00 00 20 00 86 09 00 01 00 00 00 40 00 00 20 00 .. ........@.. . 6af0: 79 00 14 11 5f 43 52 53 00 a0 0a 49 47 44 53 a4 y..._CRS...IGDS. 6b00: 43 52 53 5f 5b 82 46 28 52 50 30 33 08 5f 41 44 CRS_[.F(RP03._AD 6b10: 52 0c 02 00 1c 00 08 5f 48 50 50 12 0a 04 0a 08 R......_HPP..... 6b20: 0a 40 0a 01 0a 00 5b 80 4c 43 54 4c 02 0a 50 0a .@....[.LCTL..P. 6b30: 04 5b 81 12 4c 43 54 4c 01 00 04 50 45 4c 44 01 .[..LCTL...PELD. 6b40: 50 45 52 4c 01 5b 80 53 4c 4f 54 02 0a 54 0a 10 PERL.[.SLOT..T.. 6b50: 5b 81 43 04 53 4c 4f 54 01 53 43 41 50 20 53 43 [.C.SLOT.SCAP SC 6b60: 54 4c 10 41 42 50 31 01 50 46 44 31 01 4d 53 43 TL.ABP1.PFD1.MSC 6b70: 31 01 50 44 43 31 01 43 43 31 30 01 4d 53 31 30 1.PDC1.CC10.MS10 6b80: 01 50 44 53 31 01 52 53 56 30 01 4c 41 53 43 01 .PDS1.RSV0.LASC. 6b90: 52 53 56 31 07 5b 80 52 48 55 42 02 0a 60 0a 10 RSV1.[.RHUB..`.. 6ba0: 5b 81 1a 52 48 55 42 01 50 4d 49 44 10 50 4d 45 [..RHUB.PMID.PME 6bb0: 53 01 50 4d 45 50 01 52 53 56 32 0e 5b 80 4d 49 S.PMEP.RSV2.[.MI 6bc0: 53 43 02 0a d8 0a 08 5b 81 3d 4d 49 53 43 01 52 SC.....[.=MISC.R 6bd0: 53 56 34 1e 50 4d 43 45 01 48 50 43 45 01 50 4d SV4.PMCE.HPCE.PM 6be0: 4d 53 01 48 50 50 44 01 48 50 41 42 01 48 50 43 MS.HPPD.HPAB.HPC 6bf0: 43 01 48 50 4c 41 01 52 53 56 33 19 48 50 43 53 C.HPLA.RSV3.HPCS 6c00: 01 50 4d 43 53 01 5b 80 50 58 43 53 02 0a 40 0a .PMCS.[.PXCS..@. 6c10: c0 5b 81 41 05 50 58 43 53 40 00 40 09 00 0d 4c .[.A.PXCS@.@...L 6c20: 41 53 58 01 00 32 41 42 50 58 01 00 02 50 44 43 ASX..2ABPX...PDC 6c30: 58 01 00 02 50 44 53 58 01 00 01 4c 53 43 58 01 X...PDSX...LSCX. 6c40: 00 27 00 10 50 53 50 58 01 00 4f 3a 00 1e 48 50 .'..PSPX..O:..HP 6c50: 45 58 01 50 4d 45 58 01 00 1e 48 50 53 58 01 50 EX.PMEX...HPSX.P 6c60: 4d 53 58 01 14 1f 48 50 48 4b 00 70 0a 01 50 44 MSX...HPHK.p..PD 6c70: 43 31 70 0a 01 48 50 43 53 70 0a 00 50 45 4c 44 C1p..HPCSp..PELD 6c80: 5b 22 0a fa 5b 82 4c 04 58 43 46 30 08 5f 41 44 ["..[.L.XCF0._AD 6c90: 52 0a 00 14 35 5f 53 54 41 00 a0 10 7b 5c 46 44 R...5_STA...{\FD 6ca0: 52 54 0c 00 00 04 00 00 a4 0a 00 70 5c 2e 5f 53 RT.........p\._S 6cb0: 42 5f 52 42 50 45 0c 5a 20 0e 00 60 a0 09 7b 60 B_RBPE.Z ..`..{` 6cc0: 0a 40 00 a4 0a 0f a4 0a 00 14 08 5f 52 4d 56 00 .@........._RMV. 6cd0: a4 01 5b 82 13 58 43 46 31 08 5f 41 44 52 0a 01 ..[..XCF1._ADR.. 6ce0: 14 06 5f 45 4a 30 01 5b 82 13 58 43 46 32 08 5f .._EJ0.[..XCF2._ 6cf0: 41 44 52 0a 02 14 06 5f 45 4a 30 01 5b 82 13 58 ADR...._EJ0.[..X 6d00: 43 46 33 08 5f 41 44 52 0a 03 14 06 5f 45 4a 30 CF3._ADR...._EJ0 6d10: 01 5b 82 13 58 43 46 34 08 5f 41 44 52 0a 04 14 .[..XCF4._ADR... 6d20: 06 5f 45 4a 30 01 5b 82 13 58 43 46 35 08 5f 41 ._EJ0.[..XCF5._A 6d30: 44 52 0a 05 14 06 5f 45 4a 30 01 5b 82 13 58 43 DR...._EJ0.[..XC 6d40: 46 36 08 5f 41 44 52 0a 06 14 06 5f 45 4a 30 01 F6._ADR...._EJ0. 6d50: 5b 82 13 58 43 46 37 08 5f 41 44 52 0a 07 14 06 [..XCF7._ADR.... 6d60: 5f 45 4a 30 01 14 0f 5f 50 52 57 00 a4 47 50 52 _EJ0..._PRW..GPR 6d70: 57 0a 09 0a 04 14 16 5f 50 52 54 00 a0 0a 50 49 W......_PRT...PI 6d80: 43 4d a4 41 52 30 36 a4 50 52 30 36 5b 01 4d 55 CM.AR06.PR06[.MU 6d90: 54 58 00 5b 80 50 52 54 30 01 0a 80 0a 04 5b 81 TX.[.PRT0.....[. 6da0: 0b 50 52 54 30 13 50 38 30 48 20 14 40 08 50 38 .PRT0.P80H .@.P8 6db0: 58 48 0a a0 18 93 68 0a 00 70 7d 7b 50 38 30 44 XH....h..p}{P80D 6dc0: 0c 00 ff ff ff 00 69 00 50 38 30 44 a0 1c 93 68 ......i.P80D...h 6dd0: 0a 01 70 7d 7b 50 38 30 44 0c ff 00 ff ff 00 79 ..p}{P80D......y 6de0: 69 0a 08 00 00 50 38 30 44 a0 1c 93 68 0a 02 70 i....P80D...h..p 6df0: 7d 7b 50 38 30 44 0c ff ff 00 ff 00 79 69 0a 10 }{P80D......yi.. 6e00: 00 00 50 38 30 44 a0 1c 93 68 0a 03 70 7d 7b 50 ..P80D...h..p}{P 6e10: 38 30 44 0c ff ff ff 00 00 79 69 0a 18 00 00 50 80D......yi....P 6e20: 38 30 44 70 50 38 30 44 50 38 30 48 5b 80 53 50 80DpP80DP80H[.SP 6e30: 52 54 01 0a b2 0a 02 5b 81 0b 53 50 52 54 11 53 RT.....[..SPRT.S 6e40: 53 4d 50 08 14 13 5c 5f 50 49 43 01 70 68 47 50 SMP...\_PIC.phGP 6e50: 49 43 70 68 50 49 43 4d 14 0b 5f 50 54 53 01 50 ICphPICM.._PTS.P 6e60: 54 53 5f 68 14 13 5f 57 41 4b 09 57 41 4b 5f 68 TS_h.._WAK.WAK_h 6e70: a4 12 06 02 0a 00 0a 00 14 1e 47 45 54 42 0b 77 ..........GETB.w 6e80: 68 0a 08 60 77 69 0a 08 61 5b 13 6a 60 61 54 42 h..`wi..a[.j`aTB 6e90: 46 33 a4 54 42 46 33 14 41 1c 50 4e 4f 54 08 a0 F3.TBF3.A.PNOT.. 6ea0: 49 19 94 54 43 4e 54 0a 01 a0 31 7b 50 44 43 30 I..TCNT...1{PDC0 6eb0: 0a 08 00 86 5c 2e 5f 50 52 5f 43 50 55 30 0a 80 ....\._PR_CPU0.. 6ec0: a0 1a 7b 50 44 43 30 0a 10 00 5b 22 0a 64 86 5c ..{PDC0...[".d.\ 6ed0: 2e 5f 50 52 5f 43 50 55 30 0a 81 a0 31 7b 50 44 ._PR_CPU0...1{PD 6ee0: 43 31 0a 08 00 86 5c 2e 5f 50 52 5f 43 50 55 31 C1....\._PR_CPU1 6ef0: 0a 80 a0 1a 7b 50 44 43 31 0a 10 00 5b 22 0a 64 ....{PDC1...[".d 6f00: 86 5c 2e 5f 50 52 5f 43 50 55 31 0a 81 a0 31 7b .\._PR_CPU1...1{ 6f10: 50 44 43 32 0a 08 00 86 5c 2e 5f 50 52 5f 43 50 PDC2....\._PR_CP 6f20: 55 32 0a 80 a0 1a 7b 50 44 43 32 0a 10 00 5b 22 U2....{PDC2...[" 6f30: 0a 64 86 5c 2e 5f 50 52 5f 43 50 55 32 0a 81 a0 .d.\._PR_CPU2... 6f40: 31 7b 50 44 43 33 0a 08 00 86 5c 2e 5f 50 52 5f 1{PDC3....\._PR_ 6f50: 43 50 55 33 0a 80 a0 1a 7b 50 44 43 33 0a 10 00 CPU3....{PDC3... 6f60: 5b 22 0a 64 86 5c 2e 5f 50 52 5f 43 50 55 33 0a [".d.\._PR_CPU3. 6f70: 81 a0 31 7b 50 44 43 34 0a 08 00 86 5c 2e 5f 50 ..1{PDC4....\._P 6f80: 52 5f 43 50 55 34 0a 80 a0 1a 7b 50 44 43 34 0a R_CPU4....{PDC4. 6f90: 10 00 5b 22 0a 64 86 5c 2e 5f 50 52 5f 43 50 55 ..[".d.\._PR_CPU 6fa0: 34 0a 81 a0 31 7b 50 44 43 35 0a 08 00 86 5c 2e 4...1{PDC5....\. 6fb0: 5f 50 52 5f 43 50 55 35 0a 80 a0 1a 7b 50 44 43 _PR_CPU5....{PDC 6fc0: 35 0a 10 00 5b 22 0a 64 86 5c 2e 5f 50 52 5f 43 5...[".d.\._PR_C 6fd0: 50 55 35 0a 81 a0 31 7b 50 44 43 36 0a 08 00 86 PU5...1{PDC6.... 6fe0: 5c 2e 5f 50 52 5f 43 50 55 36 0a 80 a0 1a 7b 50 \._PR_CPU6....{P 6ff0: 44 43 36 0a 10 00 5b 22 0a 64 86 5c 2e 5f 50 52 DC6...[".d.\._PR 7000: 5f 43 50 55 36 0a 81 a0 31 7b 50 44 43 37 0a 08 _CPU6...1{PDC7.. 7010: 00 86 5c 2e 5f 50 52 5f 43 50 55 37 0a 80 a0 1a ..\._PR_CPU7.... 7020: 7b 50 44 43 37 0a 10 00 5b 22 0a 64 86 5c 2e 5f {PDC7...[".d.\._ 7030: 50 52 5f 43 50 55 37 0a 81 a1 1f 86 5c 2e 5f 50 PR_CPU7.....\._P 7040: 52 5f 43 50 55 30 0a 80 5b 22 0a 64 86 5c 2e 5f R_CPU0..[".d.\._ 7050: 50 52 5f 43 50 55 30 0a 81 14 3c 54 52 41 50 0a PR_CPU0...BIF0..0ECAV 9e50: a0 0b 42 53 4c 46 70 42 31 4d 44 60 a1 07 70 42 ..BSLFpB1MD`..pB 9e60: 30 4d 44 60 a0 16 92 93 60 0b ff ff 7a 60 0a 0f 0MD`....`...z`.. 9e70: 61 7b 61 0a 01 61 7f 61 0a 01 60 a1 04 70 ff 60 a{a..a.a..`..p.` 9e80: a4 60 14 2d 42 49 46 31 00 a0 1f 45 43 41 56 a0 .`.-BIF1...ECAV. 9e90: 0b 42 53 4c 46 70 42 31 44 43 60 a1 07 70 42 30 .BSLFpB1DC`..pB0 9ea0: 44 43 60 7b 60 0b ff ff 60 a1 04 70 ff 60 a4 60 DC`{`...`..p.`.` 9eb0: 14 2d 42 49 46 32 00 a0 1f 45 43 41 56 a0 0b 42 .-BIF2...ECAV..B 9ec0: 53 4c 46 70 42 31 46 43 60 a1 07 70 42 30 46 43 SLFpB1FC`..pB0FC 9ed0: 60 7b 60 0b ff ff 60 a1 04 70 ff 60 a4 60 14 3e `{`...`..p.`.`.> 9ee0: 42 49 46 33 00 a0 30 45 43 41 56 a0 0b 42 53 4c BIF3..0ECAV..BSL 9ef0: 46 70 42 31 4d 44 60 a1 07 70 42 30 4d 44 60 a0 FpB1MD`..pB0MD`. 9f00: 16 92 93 60 0b ff ff 7a 60 0a 09 60 7b 60 0a 01 ...`...z`..`{`.. 9f10: 60 7f 60 0a 01 60 a1 04 70 ff 60 a4 60 14 27 42 `.`..`..p.`.`.'B 9f20: 49 46 34 00 a0 19 45 43 41 56 a0 0b 42 53 4c 46 IF4...ECAV..BSLF 9f30: 70 42 31 44 56 60 a1 07 70 42 30 44 56 60 a1 04 pB1DV`..pB0DV`.. 9f40: 70 ff 60 a4 60 14 47 06 42 49 46 39 00 08 42 53 p.`.`.G.BIF9..BS 9f50: 54 52 11 03 0a 20 70 53 4d 42 52 52 44 42 4c 42 TR... pSMBRRDBLB 9f60: 41 44 52 0a 21 60 a0 25 92 93 83 88 60 0a 00 00 ADR.!`.%....`... 9f70: 0a 00 70 5c 2e 5f 53 42 5f 4d 4e 41 4d 42 53 54 ..p\._SB_MNAMBST 9f80: 52 70 0a 00 88 42 53 54 52 0a 04 00 a1 1b 70 83 Rp...BSTR.....p. 9f90: 88 60 0a 02 00 42 53 54 52 70 0a 00 88 42 53 54 .`...BSTRp...BST 9fa0: 52 83 88 60 0a 01 00 00 a4 42 53 54 52 14 27 42 R..`.....BSTR.'B 9fb0: 49 46 41 00 a0 19 45 43 41 56 a0 0b 42 53 4c 46 IFA...ECAV..BSLF 9fc0: 70 42 31 53 4e 60 a1 07 70 42 30 53 4e 60 a1 04 pB1SN`..pB0SN`.. 9fd0: 70 ff 60 a4 60 14 27 42 53 54 53 00 a0 19 45 43 p.`.`.'BSTS...EC 9fe0: 41 56 a0 0b 42 53 4c 46 70 42 31 53 54 60 a1 07 AV..BSLFpB1ST`.. 9ff0: 70 42 30 53 54 60 a1 04 70 ff 60 a4 60 14 27 42 pB0ST`..p.`.`.'B a000: 43 52 54 00 a0 19 45 43 41 56 a0 0b 42 53 4c 46 CRT...ECAV..BSLF a010: 70 42 31 43 43 60 a1 07 70 42 30 43 43 60 a1 04 pB1CC`..pB0CC`.. a020: 70 ff 60 a4 60 14 31 42 52 43 50 00 a0 23 45 43 p.`.`.1BRCP..#EC a030: 41 56 a0 0b 42 53 4c 46 70 42 31 52 43 60 a1 07 AV..BSLFpB1RC`.. a040: 70 42 30 52 43 60 a0 09 93 60 0b ff ff 70 ff 60 pB0RC`...`...p.` a050: a1 04 70 ff 60 a4 60 14 27 42 56 4f 54 00 a0 19 ..p.`.`.'BVOT... a060: 45 43 41 56 a0 0b 42 53 4c 46 70 42 31 56 4c 60 ECAV..BSLFpB1VL` a070: a1 07 70 42 30 56 4c 60 a1 04 70 ff 60 a4 60 10 ..pB0VL`..p.`.`. a080: 4e 06 5c 00 14 22 43 48 47 53 09 70 5c 2f 05 5f N.\.."CHGS.p\/._ a090: 53 42 5f 50 43 49 30 53 42 52 47 45 43 30 5f 42 SB_PCI0SBRGEC0_B a0a0: 43 48 47 68 60 a4 60 08 42 53 4c 46 00 14 17 42 CHGh`.`.BSLF...B a0b0: 41 54 53 09 a0 08 68 70 01 42 53 4c 46 a1 07 70 ATS...hp.BSLF..p a0c0: 00 42 53 4c 46 5b 01 4d 4d 50 58 00 14 0e 42 41 .BSLF[.MMPX...BA a0d0: 54 4f 08 5b 23 4d 4d 50 58 ff ff 14 0c 42 41 54 TO.[#MMPX....BAT a0e0: 52 08 5b 27 4d 4d 50 58 08 42 4c 4c 4f 00 10 43 R.['MMPX.BLLO..C a0f0: 14 5c 2f 04 5f 53 42 5f 50 43 49 30 53 42 52 47 .\/._SB_PCI0SBRG a100: 45 43 30 5f 14 4d 04 5f 51 41 31 00 70 44 43 50 EC0_.M._QA1.pDCP a110: 53 0a 00 5c 2e 5f 53 42 5f 44 43 50 46 a0 10 5c S..\._SB_DCPF..\ a120: 2e 5f 53 42 5f 44 43 50 46 5b 22 0b d0 07 86 5c ._SB_DCPF["....\ a130: 2f 03 5f 53 42 5f 50 43 49 30 42 41 54 30 0a 80 /._SB_PCI0BAT0.. a140: 86 5c 2f 03 5f 53 42 5f 50 43 49 30 42 41 54 30 .\/._SB_PCI0BAT0 a150: 0a 81 14 46 04 5f 51 41 35 00 70 01 42 4c 4c 4f ...F._QA5.p.BLLO a160: a0 1c 5c 2e 5f 53 42 5f 41 54 4b 50 5c 2f 03 5f ..\._SB_ATKP\/._ a170: 53 42 5f 41 54 4b 44 49 41 4e 45 0a 6e a1 1b a0 SB_ATKDIANE.n... a180: 19 42 41 54 50 0a 00 86 5c 2f 03 5f 53 42 5f 50 .BATP...\/._SB_P a190: 43 49 30 42 41 54 30 0a 80 14 46 05 5f 51 41 33 CI0BAT0...F._QA3 a1a0: 00 a0 4e 04 42 41 54 50 0a 00 70 42 43 4c 45 0a ..N.BATP..pBCLE. a1b0: 00 60 a0 17 93 60 0a 00 86 5c 2f 03 5f 53 42 5f .`...`...\/._SB_ a1c0: 50 43 49 30 42 41 54 30 0a 80 a1 25 86 5c 2f 03 PCI0BAT0...%.\/. a1d0: 5f 53 42 5f 50 43 49 30 42 41 54 30 0a 81 86 5c _SB_PCI0BAT0...\ a1e0: 2f 03 5f 53 42 5f 50 43 49 30 41 43 30 5f 0a 80 /._SB_PCI0AC0_.. a1f0: 14 21 42 41 54 50 09 a0 0d 68 a4 5c 2e 5f 53 42 .!BATP...h.\._SB a200: 5f 44 43 50 32 a1 0c a4 5c 2e 5f 53 42 5f 44 43 _DCP2...\._SB_DC a210: 50 46 14 1f 4e 42 41 54 01 a0 18 42 41 54 50 0a PF..NBAT...BATP. a220: 00 86 5c 2f 03 5f 53 42 5f 50 43 49 30 42 41 54 ..\/._SB_PCI0BAT a230: 30 68 10 44 11 5c 00 08 4d 45 53 34 00 14 4d 08 0h.D.\..MES4..M. a240: 4f 45 4d 53 01 a0 2d 93 68 0a 03 a0 19 92 94 5c OEMS..-.h......\ a250: 4f 53 46 47 5c 4f 53 4d 45 70 01 5c 2e 5f 53 42 OSFG\OSMEp.\._SB a260: 5f 57 49 44 45 a1 0d 70 00 5c 2e 5f 53 42 5f 57 _WIDE..p.\._SB_W a270: 49 44 45 53 42 52 53 68 5c 2f 05 5f 53 42 5f 50 IDESBRSh\/._SB_P a280: 43 49 30 53 42 52 47 45 43 30 5f 45 43 30 53 68 CI0SBRGEC0_EC0Sh a290: 70 68 5c 2e 5f 53 42 5f 53 4c 50 4e 5c 44 49 41 ph\._SB_SLPN\DIA a2a0: 47 72 68 0a d0 00 50 50 52 4a 68 70 68 5c 2e 5f Grh...PPRJhph\._ a2b0: 53 42 5f 53 4c 50 54 a0 08 68 53 54 52 50 0a 01 SB_SLPT..hSTRP.. a2c0: 50 52 4a 53 68 49 53 4d 49 0a 9d 14 4b 07 4f 45 PRJShISMI...K.OE a2d0: 4d 57 01 49 53 4d 49 0a 9e 70 00 5c 2e 5f 53 42 MW.ISMI..p.\._SB a2e0: 5f 53 4c 50 54 5c 2f 05 5f 53 42 5f 50 43 49 30 _SLPT\/._SB_PCI0 a2f0: 53 42 52 47 45 43 30 5f 45 43 30 57 68 a0 22 93 SBRGEC0_EC0Wh.". a300: 68 0a 04 a0 14 92 94 5c 4f 53 46 47 5c 4f 53 4d h......\OSFG\OSM a310: 45 70 0a 02 4d 45 53 34 a1 07 70 00 4d 45 53 34 Ep..MES4..p.MES4 a320: 53 42 52 57 68 a0 12 93 68 0a 04 86 5c 2e 5f 53 SBRWh...h...\._S a330: 42 5f 53 4c 50 42 0a 02 50 52 4a 57 68 5c 44 49 B_SLPB..PRJWh\DI a340: 41 47 72 68 0a f0 00 10 4e 50 5c 5f 53 42 5f 5b AGrh....NP\_SB_[ a350: 82 45 50 50 54 49 44 08 43 41 44 52 0a 00 08 57 .EPPTID.CADR...W a360: 4c 45 4e 0a 00 08 52 4c 45 4e 0a 00 08 43 41 4d LEN...RLEN...CAM a370: 44 0a 00 08 4f 42 55 46 11 03 0a 10 08 49 42 55 D...OBUF.....IBU a380: 46 11 03 0a 0f 08 45 52 52 4e 0a 00 08 5f 48 49 F.....ERRN..._HI a390: 44 0c 25 d4 34 0e 08 5f 43 49 44 0c 41 d0 0c 02 D.%.4.._CID.A... a3a0: 08 49 56 45 52 0c 00 00 03 00 08 54 53 44 4c 12 .IVER......TSDL. a3b0: 28 04 0a 00 0d 43 50 55 20 54 65 6d 70 65 72 61 (....CPU Tempera a3c0: 74 75 72 65 00 0a 05 0d 50 43 48 20 54 65 6d 70 ture....PCH Temp a3d0: 65 72 61 74 75 72 65 00 08 54 4d 50 56 12 0c 02 erature..TMPV... a3e0: 0c 00 00 00 80 0c 00 00 00 80 08 50 53 44 4c 12 ...........PSDL. a3f0: 1c 04 0a 00 0d 43 50 55 20 50 6f 77 65 72 00 0a .....CPU Power.. a400: 01 0d 47 66 78 20 50 6f 77 65 72 00 08 50 57 52 ..Gfx Power..PWR a410: 56 12 0c 02 0c 00 00 00 80 0c 00 00 00 80 08 4f V..............O a420: 53 44 4c 12 2a 06 0a 04 0d 46 61 6e 20 52 50 4d SDL.*....Fan RPM a430: 00 0d 52 50 4d 00 0a 0c 0d 42 61 74 74 65 72 79 ..RPM....Battery a440: 20 43 61 70 61 63 69 79 00 0d 6d 41 68 00 08 4f Capaciy..mAh..O a450: 53 44 56 12 0c 02 0c 00 00 00 80 0c 00 00 00 80 SDV............. a460: 14 45 06 54 53 44 44 00 08 54 4d 50 43 0a 00 70 .E.TSDD..TMPC..p a470: 5c 2f 05 5f 53 42 5f 50 43 49 30 53 42 52 47 45 \/._SB_PCI0SBRGE a480: 43 30 5f 45 43 50 55 54 4d 50 43 70 54 4d 50 43 C0_ECPUTMPCpTMPC a490: 88 54 4d 50 56 0a 00 00 70 5c 2f 05 5f 53 42 5f .TMPV...p\/._SB_ a4a0: 50 43 49 30 53 42 52 47 45 43 30 5f 45 43 50 55 PCI0SBRGEC0_ECPU a4b0: 54 4d 50 43 70 54 4d 50 43 88 54 4d 50 56 0a 01 TMPCpTMPC.TMPV.. a4c0: 00 a4 54 4d 50 56 14 08 50 57 52 47 00 a4 ff 14 ..TMPV..PWRG.... a4d0: 3e 50 53 44 44 00 08 50 57 52 43 0a 00 70 50 57 >PSDD..PWRC..pPW a4e0: 52 47 50 57 52 43 70 50 57 52 43 88 50 57 52 56 RGPWRCpPWRC.PWRV a4f0: 0a 00 00 70 50 57 52 47 50 57 52 43 70 50 57 52 ...pPWRGPWRCpPWR a500: 43 88 50 57 52 56 0a 01 00 a4 50 57 52 56 14 08 C.PWRV....PWRV.. a510: 4f 53 44 47 00 a4 ff 14 3e 4f 53 44 44 00 08 4f OSDG....>OSDD..O a520: 53 44 43 0a 00 70 4f 53 44 47 4f 53 44 43 70 4f SDC..pOSDGOSDCpO a530: 53 44 43 88 4f 53 44 56 0a 00 00 70 4f 53 44 47 SDC.OSDV...pOSDG a540: 4f 53 44 43 70 4f 53 44 43 88 4f 53 44 56 0a 01 OSDCpOSDC.OSDV.. a550: 00 a4 4f 53 44 56 14 09 53 44 53 50 00 a4 0a 0a ..OSDV..SDSP.... a560: 08 4d 42 4f 58 11 03 0a 1a 08 50 41 44 41 12 2e .MBOX.....PADA.. a570: 0a 0a 01 0c ff ff ff ff 0c ff ff ff ff 0a 1a 0c ................ a580: ff ff ff ff 0c ff ff ff ff 0c ff ff ff ff 0c ff ................ a590: ff ff ff 0c ff ff ff ff 0c ff ff ff ff 08 50 41 ..............PA a5a0: 44 44 12 18 0a 0a 02 0b 71 02 0b 70 02 0a 1a 0a DD......q..p.... a5b0: 62 0a 63 0a 60 0a 61 0a 65 0a 64 14 31 50 41 44 b.c.`.a.e.d.1PAD a5c0: 54 00 7b 5c 2f 05 5f 53 42 5f 50 43 49 30 53 42 T.{\/._SB_PCI0SB a5d0: 52 47 45 43 30 5f 50 42 53 59 0a 80 60 a0 0a 93 RGEC0_PBSY..`... a5e0: 60 0a 00 a4 50 41 44 44 a4 50 41 44 41 14 3c 52 `...PADD.PADA.\._SB_A a860: 54 4b 44 14 43 13 41 47 46 4e 09 a0 10 93 68 0a TKD.C.AGFN....h. a870: 00 a4 5c 2e 5f 53 42 5f 47 4e 42 46 70 0a 00 60 ..\._SB_GNBFp..` a880: 5b 80 5c 50 41 52 4d 00 68 0a 08 5b 81 20 5c 50 [.\PARM.h..[. \P a890: 41 52 4d 03 4d 46 55 4e 10 53 46 55 4e 10 4c 45 ARM.MFUN.SFUN.LE a8a0: 4e 5f 10 53 54 41 53 08 45 52 4f 52 08 70 0a 00 N_.STAS.EROR.p.. a8b0: 45 52 4f 52 70 0a 01 53 54 41 53 a0 18 93 4d 46 ERORp..STAS...MF a8c0: 55 4e 0a 02 42 53 4d 49 68 7b 53 54 41 53 0a fe UN..BSMIh{STAS.. a8d0: 53 54 41 53 7b 4d 46 55 4e 0a f0 60 a0 16 93 60 STAS{MFUN..`...` a8e0: 0a 10 4d 46 31 58 68 4c 45 4e 5f 4d 46 55 4e 53 ..MF1XhLEN_MFUNS a8f0: 46 55 4e a0 20 93 4d 46 55 4e 0a 42 4d 46 34 32 FUN. .MFUN.BMF42 a900: 68 53 46 55 4e 4c 45 4e 5f 7b 53 54 41 53 0a fe hSFUNLEN_{STAS.. a910: 53 54 41 53 a0 1c 93 4d 46 55 4e 0a 01 47 56 45 STAS...MFUN..GVE a920: 52 68 4c 45 4e 5f 7b 53 54 41 53 0a fe 53 54 41 RhLEN_{STAS..STA a930: 53 a0 20 93 4d 46 55 4e 0a 30 4d 46 33 30 68 53 S. .MFUN.0MF30hS a940: 46 55 4e 4c 45 4e 5f 7b 53 54 41 53 0a fe 53 54 FUNLEN_{STAS..ST a950: 41 53 41 47 4c 4e 68 4d 46 55 4e 53 46 55 4e 4c ASAGLNhMFUNSFUNL a960: 45 4e 5f a0 1a 93 53 54 41 53 0a 01 70 0a 01 45 EN_...STAS..p..E a970: 52 4f 52 7d 53 54 41 53 0a 02 53 54 41 53 7b 53 ROR}STAS..STAS{S a980: 54 41 53 0a fe 53 54 41 53 7d 53 54 41 53 0a 80 TAS..STAS}STAS.. a990: 53 54 41 53 a4 0a 00 14 29 47 56 45 52 02 5b 80 STAS....)GVER.[. a9a0: 5c 46 47 56 52 00 68 69 5b 81 14 5c 46 47 56 52 \FGVR.hi[..\FGVR a9b0: 03 00 40 04 41 50 49 44 10 41 50 52 56 20 a4 0a ..@.APID.APRV .. a9c0: 00 14 45 07 4d 46 33 30 03 5b 80 46 4d 33 30 00 ..E.MF30.[.FM30. a9d0: 68 0a 08 5b 81 12 46 4d 33 30 03 00 30 53 4d 33 h..[..FM30..0SM3 a9e0: 30 08 45 4d 33 30 08 70 0a 01 60 a0 0d 93 69 0a 0.EM30.p..`...i. a9f0: 00 70 47 33 30 56 68 6a 60 a0 0d 93 69 0a 01 70 .pG30Vhj`...i..p aa00: 45 43 30 31 68 6a 60 a0 0d 93 69 0a 02 70 45 43 EC01hj`...i..pEC aa10: 30 32 68 6a 60 a0 13 60 70 60 45 4d 33 30 7d 53 02hj`..`p`EM30}S aa20: 4d 33 30 0a 02 53 4d 33 30 7d 53 4d 33 30 0a 80 M30..SM30}SM30.. aa30: 53 4d 33 30 a4 0a 00 14 41 04 47 33 30 56 02 a0 SM30....A.G30V.. aa40: 08 95 69 0a 0c a4 0a 02 5b 80 5c 46 33 30 30 00 ..i.....[.\F300. aa50: 68 69 5b 81 14 5c 46 33 30 30 03 00 40 04 53 56 hi[..\F300..@.SV aa60: 45 52 10 4d 56 45 52 10 70 0a 00 4d 56 45 52 70 ER.MVER.p..MVERp aa70: 0a 00 53 56 45 52 a4 0a 00 14 41 0b 45 43 30 31 ..SVER....A.EC01 aa80: 02 a0 08 95 69 0a 10 a4 0a 02 5b 80 46 45 43 31 ....i.....[.FEC1 aa90: 00 68 69 5b 81 27 46 45 43 31 03 00 40 04 45 43 .hi[.'FEC1..@.EC aaa0: 4d 44 08 45 44 41 31 08 45 44 41 32 08 45 44 41 MD.EDA1.EDA2.EDA aab0: 33 08 45 44 41 34 08 45 44 41 35 08 70 5c 2f 05 3.EDA4.EDA5.p\/. aac0: 5f 53 42 5f 50 43 49 30 53 42 52 47 45 43 30 5f _SB_PCI0SBRGEC0_ aad0: 45 43 58 54 45 43 4d 44 45 44 41 31 45 44 41 32 ECXTECMDEDA1EDA2 aae0: 45 44 41 33 45 44 41 34 45 44 41 35 60 70 83 88 EDA3EDA4EDA5`p.. aaf0: 60 0a 01 00 45 44 41 31 70 83 88 60 0a 02 00 45 `...EDA1p..`...E ab00: 44 41 32 70 83 88 60 0a 03 00 45 44 41 33 70 83 DA2p..`...EDA3p. ab10: 88 60 0a 04 00 45 44 41 34 70 83 88 60 0a 05 00 .`...EDA4p..`... ab20: 45 44 41 35 a4 83 88 60 0a 00 00 14 49 0e 45 43 EDA5...`....I.EC ab30: 30 32 02 a0 08 95 69 0a 30 a4 0a 02 5b 80 46 45 02....i.0...[.FE ab40: 43 32 00 68 69 5b 81 37 46 45 43 32 03 00 40 04 C2.hi[.7FEC2..@. ab50: 42 55 53 4e 08 50 52 4f 54 08 44 41 44 44 08 44 BUSN.PROT.DADD.D ab60: 52 45 47 08 44 41 54 30 08 44 41 54 31 08 42 4c REG.DAT0.DAT1.BL ab70: 45 4e 08 52 45 56 42 08 42 4c 4b 4b 40 10 70 12 EN.REVB.BLKK@.p. ab80: 08 02 0a 00 11 03 0a 20 61 70 42 4c 45 4e 88 61 ....... apBLEN.a ab90: 0a 00 00 70 42 4c 4b 4b 88 61 0a 01 00 70 5c 2f ...pBLKK.a...p\/ aba0: 05 5f 53 42 5f 50 43 49 30 53 42 52 47 45 43 30 ._SB_PCI0SBRGEC0 abb0: 5f 45 43 53 42 42 55 53 4e 50 52 4f 54 44 41 44 _ECSBBUSNPROTDAD abc0: 44 44 52 45 47 44 41 54 30 44 41 54 31 61 60 a0 DDREGDAT0DAT1a`. abd0: 36 93 83 88 60 0a 00 00 0a 00 70 83 88 60 0a 01 6...`.....p..`.. abe0: 00 44 41 54 30 70 83 88 60 0a 02 00 44 41 54 31 .DAT0p..`...DAT1 abf0: 70 83 88 60 0a 03 00 42 4c 45 4e 70 83 88 60 0a p..`...BLENp..`. ac00: 04 00 42 4c 4b 4b 70 83 88 60 0a 00 00 62 7b 62 ..BLKKp..`...b{b ac10: 0a 3f 62 a4 62 14 13 47 45 4e 57 01 70 0a 00 5c .?b.b..GENW.p..\ ac20: 2e 5f 53 42 5f 52 54 43 57 14 18 42 53 4d 49 09 ._SB_RTCW..BSMI. ac30: 70 68 5c 2e 5f 53 42 5f 42 49 50 41 49 53 4d 49 ph\._SB_BIPAISMI ac40: 0a a1 10 81 3b 01 5c 2e 5f 53 42 5f 41 54 4b 44 ....;.\._SB_ATKD ac50: 14 48 0f 4d 46 31 58 04 5b 80 46 4d 31 58 00 68 .H.MF1X.[.FM1X.h ac60: 0a 08 5b 81 12 46 4d 31 58 03 00 30 53 4d 31 58 ..[..FM1X..0SM1X ac70: 08 45 4d 31 58 08 70 0a 01 60 a0 0e 93 6a 0a 10 .EM1X.p..`...j.. ac80: 70 4d 46 31 30 68 69 6b 60 a0 0e 93 6a 0a 11 70 pMF10hik`...j..p ac90: 4d 46 31 31 68 69 6b 60 a0 0e 93 6a 0a 12 70 4d MF11hik`...j..pM aca0: 46 31 32 68 69 6b 60 a0 0e 93 6a 0a 13 70 4d 46 F12hik`...j..pMF acb0: 31 33 68 69 6b 60 a0 0e 93 6a 0a 14 70 4d 46 31 13hik`...j..pMF1 acc0: 34 68 69 6b 60 a0 0e 93 6a 0a 15 70 4d 46 31 35 4hik`...j..pMF15 acd0: 68 69 6b 60 a0 0e 93 6a 0a 16 70 4d 46 31 36 68 hik`...j..pMF16h ace0: 69 6b 60 a0 0e 93 6a 0a 17 70 4d 46 31 37 68 69 ik`...j..pMF17hi acf0: 6b 60 a0 0e 93 6a 0a 18 70 4d 46 31 38 68 69 6b k`...j..pMF18hik ad00: 60 a0 0e 93 6a 0a 19 70 4d 46 31 39 68 69 6b 60 `...j..pMF19hik` ad10: a0 0e 93 6a 0a 1f 70 4d 46 31 46 68 69 6b 60 7b ...j..pMF1Fhik`{ ad20: 53 4d 31 58 0a fe 53 4d 31 58 a0 13 60 70 60 45 SM1X..SM1X..`p`E ad30: 4d 31 58 7d 53 4d 31 58 0a 02 53 4d 31 58 7d 53 M1X}SM1X..SM1X}S ad40: 4d 31 58 0a 80 53 4d 31 58 14 28 4d 46 31 30 03 M1X..SM1X.(MF10. ad50: 70 0a 01 60 a0 0d 93 6a 0a 00 70 47 31 30 56 68 p..`...j..pG10Vh ad60: 69 60 a0 0d 93 6a 0a 01 70 53 52 54 43 68 69 60 i`...j..pSRTChi` ad70: a4 60 14 41 04 47 31 30 56 02 a0 08 95 69 0a 0c .`.A.G10V....i.. ad80: a4 0a 02 5b 80 5c 46 31 30 30 00 68 69 5b 81 14 ...[.\F100.hi[.. ad90: 5c 46 31 30 30 03 00 40 04 53 56 45 52 10 4d 56 \F100..@.SVER.MV ada0: 45 52 10 70 0a 00 4d 56 45 52 70 0a 00 53 56 45 ER.p..MVERp..SVE adb0: 52 a4 0a 00 14 3c 53 52 54 43 02 a0 08 95 69 0a R....G b590: 56 53 56 02 a0 08 95 69 0a 0b a4 0a 02 5b 80 5c VSV....i.....[.\ b5a0: 46 31 33 34 00 68 69 5b 81 14 5c 46 31 33 34 03 F134.hi[..\F134. b5b0: 00 40 04 56 53 4e 4d 08 56 53 56 4c 10 a0 0b 94 .@.VSNM.VSVL.... b5c0: 56 53 4e 4d 0a 00 a4 0a 10 a4 0a 00 14 34 47 46 VSNM.........4GF b5d0: 4e 4e 02 a0 08 95 69 0a 09 a4 0a 02 5b 80 5c 46 NN....i.....[.\F b5e0: 31 33 35 00 68 69 5b 81 0f 5c 46 31 33 35 03 00 135.hi[..\F135.. b5f0: 40 04 4e 4d 46 4e 20 70 0a 01 4e 4d 46 4e a4 0a @.NMFN p..NMFN.. b600: 00 14 4f 05 47 46 4e 53 02 a0 08 95 69 0a 0d a4 ..O.GFNS....i... b610: 0a 02 5b 80 5c 46 31 33 36 00 68 69 5b 81 14 5c ..[.\F136.hi[..\ b620: 46 31 33 36 03 00 40 04 46 4e 4e 4d 08 47 46 4e F136..@.FNNM.GFN b630: 53 20 a0 14 7d 93 46 4e 4e 4d 0a 00 94 46 4e 4e S ..}.FNNM...FNN b640: 4d 0a 01 00 a4 0a 10 70 46 4e 4e 4d 60 70 5c 2e M......pFNNM`p\. b650: 5f 54 5a 5f 52 46 41 4e 76 60 47 46 4e 53 a4 0a _TZ_RFANv`GFNS.. b660: 00 14 4e 05 53 46 4e 53 02 a0 08 95 69 0a 0a a4 ..N.SFNS....i... b670: 0a 02 5b 80 5c 46 31 33 37 00 68 69 5b 81 14 5c ..[.\F137.hi[..\ b680: 46 31 33 37 03 00 40 04 46 4e 4e 42 08 46 4e 53 F137..@.FNNB.FNS b690: 50 08 a0 0b 94 46 4e 4e 42 0a 01 a4 0a 10 5c 2f P....FNNB.....\/ b6a0: 05 5f 53 42 5f 50 43 49 30 53 42 52 47 45 43 30 ._SB_PCI0SBRGEC0 b6b0: 5f 53 46 4e 56 46 4e 4e 42 46 4e 53 50 a4 0a 00 _SFNVFNNBFNSP... b6c0: 14 36 4d 46 31 34 03 70 0a 01 60 a0 0d 93 6a 0a .6MF14.p..`...j. b6d0: 00 70 47 31 34 56 68 69 60 a0 0d 93 6a 0a 01 70 .pG14Vhi`...j..p b6e0: 47 4e 42 54 68 69 60 a0 0d 93 6a 0a 02 70 47 42 GNBThi`...j..pGB b6f0: 54 53 68 69 60 a4 60 14 41 04 47 31 34 56 02 a0 TShi`.`.A.G14V.. b700: 08 95 69 0a 0c a4 0a 02 5b 80 5c 46 31 34 30 00 ..i.....[.\F140. b710: 68 69 5b 81 14 5c 46 31 34 30 03 00 40 04 53 56 hi[..\F140..@.SV b720: 45 52 10 4d 56 45 52 10 70 0a 00 4d 56 45 52 70 ER.MVER.p..MVERp b730: 0a 00 53 56 45 52 a4 0a 00 14 34 47 4e 42 54 02 ..SVER....4GNBT. b740: a0 08 95 69 0a 09 a4 0a 02 5b 80 5c 46 31 34 31 ...i.....[.\F141 b750: 00 68 69 5b 81 0f 5c 46 31 34 31 03 00 40 04 4e .hi[..\F141..@.N b760: 42 42 54 08 70 0a 05 4e 42 42 54 a4 0a 00 14 4f BBT.p..NBBT....O b770: 0e 47 42 54 53 02 a0 08 95 69 0a 0a a4 0a 02 5b .GBTS....i.....[ b780: 80 5c 46 31 34 32 00 68 69 5b 81 14 5c 46 31 34 .\F142.hi[..\F14 b790: 32 03 00 40 04 42 54 4e 4d 08 42 54 53 54 08 08 2..@.BTNM.BTST.. b7a0: 42 54 54 42 12 2f 05 12 08 03 0a 0c 0a 00 0a 00 BTTB./.......... b7b0: 12 08 03 0a 0d 0a 00 0a 00 12 08 03 0a 0e 0a 00 ................ b7c0: 0a 00 12 08 03 0a 0f 0a 00 0a 00 12 08 03 0a 15 ................ b7d0: 0a 00 0a 00 a0 0b 94 42 54 4e 4d 0a 05 a4 0a 10 .......BTNM..... b7e0: 70 42 54 4e 4d 60 76 60 70 83 88 42 54 54 42 60 pBTNM`v`p..BTTB` b7f0: 00 61 a0 29 93 83 88 61 0a 01 00 0a 00 70 5c 2f .a.)...a.....p\/ b800: 05 5f 53 42 5f 50 43 49 30 53 42 52 47 45 43 30 ._SB_PCI0SBRGEC0 b810: 5f 52 50 49 4e 83 88 61 0a 00 00 62 a0 19 93 83 _RPIN..a...b.... b820: 88 61 0a 01 00 0a 01 70 5c 52 47 50 4c 83 88 61 .a.....p\RGPL..a b830: 0a 00 00 0a 01 62 a0 0a 93 83 88 61 0a 01 00 0a .....b.....a.... b840: 03 a0 10 93 83 88 61 0a 02 00 62 70 0a 00 42 54 ......a...bp..BT b850: 53 54 a1 08 70 0a 01 42 54 53 54 a4 0a 00 14 43 ST..p..BTST....C b860: 05 4d 46 31 35 03 70 0a 01 60 a0 0d 93 6a 0a 00 .MF15.p..`...j.. b870: 70 47 31 35 56 68 69 60 a0 0d 93 6a 0a 01 70 47 pG15Vhi`...j..pG b880: 4c 44 42 68 69 60 a0 0d 93 6a 0a 02 70 53 4c 44 LDBhi`...j..pSLD b890: 42 68 69 60 a0 0d 93 6a 0a 03 70 47 44 50 49 68 Bhi`...j..pGDPIh b8a0: 69 60 a0 0d 93 6a 0a 04 70 53 4f 44 50 68 69 60 i`...j..pSODPhi` b8b0: a4 60 14 41 04 47 31 35 56 02 a0 08 95 69 0a 0c .`.A.G15V....i.. b8c0: a4 0a 02 5b 80 5c 46 31 35 30 00 68 69 5b 81 14 ...[.\F150.hi[.. b8d0: 5c 46 31 35 30 03 00 40 04 53 56 45 52 10 4d 56 \F150..@.SVER.MV b8e0: 45 52 10 70 0a 00 4d 56 45 52 70 0a 00 53 56 45 ER.p..MVERp..SVE b8f0: 52 a4 0a 00 14 43 04 47 4c 44 42 02 a0 08 95 69 R....C.GLDB....i b900: 0a 0a a4 0a 02 5b 80 5c 46 31 35 31 00 68 69 5b .....[.\F151.hi[ b910: 81 14 5c 46 31 35 31 03 00 40 04 4c 43 44 42 08 ..\F151..@.LCDB. b920: 4d 4c 44 42 08 70 47 50 4c 56 4c 43 44 42 70 0a MLDB.pGPLVLCDBp. b930: 0b 4d 4c 44 42 a4 0a 00 14 4a 07 53 4c 44 42 02 .MLDB....J.SLDB. b940: a0 08 95 69 0a 0a a4 0a 02 5b 80 5c 46 31 35 32 ...i.....[.\F152 b950: 00 68 69 5b 81 14 5c 46 31 35 32 03 00 40 04 4c .hi[..\F152..@.L b960: 43 44 4c 08 4c 54 50 45 08 a0 1f 93 4c 54 50 45 CDL.LTPE....LTPE b970: 0a 00 a0 0b 94 4c 43 44 4c 0a 0b a4 0a 10 53 50 .....LCDL.....SP b980: 4c 56 4c 43 44 4c a4 0a 00 a0 26 93 4c 54 50 45 LVLCDL....&.LTPE b990: 0a 01 5c 2f 05 5f 53 42 5f 50 43 49 30 53 42 52 ..\/._SB_PCI0SBR b9a0: 47 45 43 30 5f 53 42 52 56 4c 43 44 4c a4 0a 00 GEC0_SBRVLCDL... b9b0: a4 0a 11 14 4c 04 47 44 50 49 02 a0 08 95 69 0a ....L.GDPI....i. b9c0: 10 a4 0a 02 5b 80 5c 46 31 35 33 00 68 69 5b 81 ....[.\F153.hi[. b9d0: 14 5c 46 31 35 33 03 00 40 04 4f 44 50 49 20 4f .\F153..@.ODPI O b9e0: 44 50 43 08 70 0a 00 60 7d 60 0a 01 60 7d 60 0a DPC.p..`}`..`}`. b9f0: 02 60 70 60 4f 44 50 49 42 53 4d 49 68 a4 0a 00 .`p`ODPIBSMIh... ba00: 14 46 05 53 4f 44 50 02 a0 08 95 69 0a 0c a4 0a .F.SODP....i.... ba10: 02 5b 80 5c 46 31 35 34 00 68 69 5b 81 0f 5c 46 .[.\F154.hi[..\F ba20: 31 35 34 03 00 40 04 4f 44 50 4d 20 70 0a 00 60 154..@.ODPM p..` ba30: 7d 60 0a 01 60 7d 60 0a 02 60 7b 4f 44 50 4d 60 }`..`}`..`{ODPM` ba40: 60 a0 12 93 60 4f 44 50 4d 53 44 53 50 4f 44 50 `...`ODPMSDSPODP ba50: 4d a4 0a 00 a4 0a 10 14 36 4d 46 31 36 03 70 0a M.......6MF16.p. ba60: 01 60 a0 0d 93 6a 0a 00 70 47 31 36 56 68 69 60 .`...j..pG16Vhi` ba70: a0 0d 93 6a 0a 01 70 53 46 42 44 68 69 60 a0 0d ...j..pSFBDhi`.. ba80: 93 6a 0a 02 70 4c 43 4d 44 68 69 60 a4 60 14 41 .j..pLCMDhi`.`.A ba90: 04 47 31 36 56 02 a0 08 95 69 0a 0c a4 0a 02 5b .G16V....i.....[ baa0: 80 5c 46 31 36 30 00 68 69 5b 81 14 5c 46 31 36 .\F160.hi[..\F16 bab0: 30 03 00 40 04 53 56 45 52 10 4d 56 45 52 10 70 0..@.SVER.MVER.p bac0: 0a 00 4d 56 45 52 70 0a 00 53 56 45 52 a4 0a 00 ..MVERp..SVER... bad0: 14 4c 04 53 46 42 44 02 a0 08 95 69 0a 0a a4 0a .L.SFBD....i.... bae0: 02 5b 80 5c 46 31 36 31 00 68 69 5b 81 0f 5c 46 .[.\F161.hi[..\F baf0: 31 36 31 03 00 40 04 4e 58 42 44 08 a0 1b 4f 46 161..@.NXBD...OF bb00: 42 44 4e 58 42 44 70 4e 58 42 44 5c 2e 5f 53 42 BDNXBDpNXBD\._SB bb10: 5f 55 48 44 42 a4 0a 00 a1 04 a4 0a 10 14 17 4c _UHDB..........L bb20: 43 4d 44 02 a0 08 95 69 0a 0a a4 0a 02 42 53 4d CMD....i.....BSM bb30: 49 68 a4 0a 00 14 45 04 4d 46 31 37 03 70 0a 01 Ih....E.MF17.p.. bb40: 60 a0 0d 93 6a 0a 00 70 47 31 37 56 68 69 60 a0 `...j..pG17Vhi`. bb50: 0d 93 6a 0a 01 70 47 4d 44 4c 68 69 60 a0 0d 93 ..j..pGMDLhi`... bb60: 6a 0a 02 70 47 42 53 49 68 69 60 a0 0d 93 6a 0a j..pGBSIhi`...j. bb70: 03 70 47 45 43 49 68 69 60 a4 60 14 41 04 47 31 .pGECIhi`.`.A.G1 bb80: 37 56 02 a0 08 95 69 0a 0c a4 0a 02 5b 80 5c 46 7V....i.....[.\F bb90: 31 37 30 00 68 69 5b 81 14 5c 46 31 37 30 03 00 170.hi[..\F170.. bba0: 40 04 53 56 45 52 10 4d 56 45 52 10 70 0a 00 4d @.SVER.MVER.p..M bbb0: 56 45 52 70 0a 00 53 56 45 52 a4 0a 00 14 4d 0c VERp..SVER....M. bbc0: 47 4d 44 4c 02 a0 08 95 69 0a 19 a4 0a 02 5b 80 GMDL....i.....[. bbd0: 5c 46 31 37 31 00 68 69 5b 81 23 5c 46 31 37 31 \F171.hi[.#\F171 bbe0: 03 00 40 04 4d 4c 45 4e 08 4d 44 4c 31 20 4d 44 ..@.MLEN.MDL1 MD bbf0: 4c 32 20 4d 44 4c 33 20 4d 44 4c 34 20 70 0a 00 L2 MDL3 MDL4 p.. bc00: 4d 44 4c 31 70 0a 00 4d 44 4c 32 70 0a 00 4d 44 MDL1p..MDL2p..MD bc10: 4c 33 70 0a 00 4d 44 4c 34 08 42 42 55 46 11 03 L3p..MDL4.BBUF.. bc20: 0a 10 8a 42 42 55 46 0a 00 44 41 54 31 8a 42 42 ...BBUF..DAT1.BB bc30: 55 46 0a 04 44 41 54 32 8a 42 42 55 46 0a 08 44 UF..DAT2.BBUF..D bc40: 41 54 33 8a 42 42 55 46 0a 0c 44 41 54 34 70 47 AT3.BBUF..DAT4pG bc50: 42 4d 4e 60 70 87 60 4d 4c 45 4e 70 47 42 4d 4e BMN`p.`MLENpGBMN bc60: 42 42 55 46 70 44 41 54 31 4d 44 4c 31 70 44 41 BBUFpDAT1MDL1pDA bc70: 54 32 4d 44 4c 32 70 44 41 54 33 4d 44 4c 33 70 T2MDL2pDAT3MDL3p bc80: 44 41 54 34 4d 44 4c 34 a4 0a 00 14 4d 0c 47 42 DAT4MDL4....M.GB bc90: 53 49 02 a0 08 95 69 0a 19 a4 0a 02 5b 80 5c 46 SI....i.....[.\F bca0: 31 37 32 00 68 69 5b 81 23 5c 46 31 37 32 03 00 172.hi[.#\F172.. bcb0: 40 04 42 4c 45 4e 08 42 44 4c 31 20 42 44 4c 32 @.BLEN.BDL1 BDL2 bcc0: 20 42 44 4c 33 20 42 44 4c 34 20 70 0a 00 42 44 BDL3 BDL4 p..BD bcd0: 4c 31 70 0a 00 42 44 4c 32 70 0a 00 42 44 4c 33 L1p..BDL2p..BDL3 bce0: 70 0a 00 42 44 4c 34 08 42 42 55 46 11 03 0a 10 p..BDL4.BBUF.... bcf0: 8a 42 42 55 46 0a 00 44 41 54 31 8a 42 42 55 46 .BBUF..DAT1.BBUF bd00: 0a 04 44 41 54 32 8a 42 42 55 46 0a 08 44 41 54 ..DAT2.BBUF..DAT bd10: 33 8a 42 42 55 46 0a 0c 44 41 54 34 70 47 42 52 3.BBUF..DAT4pGBR bd20: 56 60 70 87 60 42 4c 45 4e 70 47 42 52 56 42 42 V`p.`BLENpGBRVBB bd30: 55 46 70 44 41 54 31 42 44 4c 31 70 44 41 54 32 UFpDAT1BDL1pDAT2 bd40: 42 44 4c 32 70 44 41 54 33 42 44 4c 33 70 44 41 BDL2pDAT3BDL3pDA bd50: 54 34 42 44 4c 34 a4 0a 00 14 43 06 47 45 43 49 T4BDL4....C.GECI bd60: 02 a0 08 95 69 0a 19 a4 0a 02 5b 80 5c 46 31 37 ....i.....[.\F17 bd70: 33 00 68 69 5b 81 23 5c 46 31 37 33 03 00 40 04 3.hi[.#\F173..@. bd80: 45 4c 45 4e 08 45 44 4c 31 20 45 44 4c 32 20 45 ELEN.EDL1 EDL2 E bd90: 44 4c 33 20 45 44 4c 34 20 70 0a 00 45 44 4c 31 DL3 EDL4 p..EDL1 bda0: 70 0a 00 45 44 4c 32 70 0a 00 45 44 4c 33 70 0a p..EDL2p..EDL3p. bdb0: 00 45 44 4c 34 42 53 4d 49 68 a4 0a 00 14 45 04 .EDL4BSMIh....E. bdc0: 4d 46 31 38 03 70 0a 01 60 a0 0d 93 6a 0a 00 70 MF18.p..`...j..p bdd0: 47 31 38 56 68 69 60 a0 0d 93 6a 0a 01 70 47 44 G18Vhi`...j..pGD bde0: 56 49 68 69 60 a0 0d 93 6a 0a 02 70 47 44 56 53 VIhi`...j..pGDVS bdf0: 68 69 60 a0 0d 93 6a 0a 03 70 53 44 50 57 68 69 hi`...j..pSDPWhi be00: 60 a4 60 14 41 04 47 31 38 56 02 a0 08 95 69 0a `.`.A.G18V....i. be10: 0c a4 0a 02 5b 80 5c 46 31 38 30 00 68 69 5b 81 ....[.\F180.hi[. be20: 14 5c 46 31 38 30 03 00 40 04 53 56 45 52 10 4d .\F180..@.SVER.M be30: 56 45 52 10 70 0a 00 4d 56 45 52 70 0a 00 53 56 VER.p..MVERp..SV be40: 45 52 a4 0a 00 14 3b 47 44 56 49 02 a0 08 95 69 ER....;GDVI....i be50: 0a 18 a4 0a 02 5b 80 5c 46 31 38 31 00 68 69 5b .....[.\F181.hi[ be60: 81 14 5c 46 31 38 31 03 00 40 04 4c 44 49 30 20 ..\F181..@.LDI0 be70: 4c 44 49 31 20 70 46 45 42 4c 4c 44 49 30 a4 0a LDI1 pFEBLLDI0.. be80: 00 14 4a 04 47 44 56 53 02 a0 08 95 69 0a 0a a4 ..J.GDVS....i... be90: 0a 02 5b 80 5c 46 31 38 32 00 68 69 5b 81 14 5c ..[.\F182.hi[..\ bea0: 46 31 38 32 03 00 40 04 44 4e 55 4d 08 44 53 54 F182..@.DNUM.DST beb0: 53 08 79 0a 01 44 4e 55 4d 60 a0 0e 93 7b 60 46 S.y..DNUM`...{`F bec0: 45 42 4c 00 0a 00 a4 0a 10 a4 0a 00 14 46 05 53 EBL..........F.S bed0: 44 50 57 02 a0 08 95 69 0a 0a a4 0a 02 5b 80 5c DPW....i.....[.\ bee0: 46 31 38 33 00 68 69 5b 81 14 5c 46 31 38 33 03 F183.hi[..\F183. bef0: 00 40 04 44 4e 55 4d 08 44 43 54 52 08 79 0a 01 .@.DNUM.DCTR.y.. bf00: 44 4e 55 4d 60 a0 0e 93 7b 60 46 45 42 4c 00 0a DNUM`...{`FEBL.. bf10: 00 a4 0a 10 a0 0b 94 44 43 54 52 0a 01 a4 0a 11 .......DCTR..... bf20: a4 0a 00 14 36 4d 46 31 39 03 70 0a 01 60 a0 0d ....6MF19.p..`.. bf30: 93 6a 0a 00 70 47 31 39 56 68 69 60 a0 0d 93 6a .j..pG19Vhi`...j bf40: 0a 01 70 41 43 4d 53 68 69 60 a0 0d 93 6a 0a 02 ..pACMShi`...j.. bf50: 70 43 53 49 4e 68 69 60 a4 60 14 41 04 47 31 39 pCSINhi`.`.A.G19 bf60: 56 02 a0 08 95 69 0a 0c a4 0a 02 5b 80 5c 46 31 V....i.....[.\F1 bf70: 39 30 00 68 69 5b 81 14 5c 46 31 39 30 03 00 40 90.hi[..\F190..@ bf80: 04 53 56 45 52 10 4d 56 45 52 10 70 0a 00 4d 56 .SVER.MVER.p..MV bf90: 45 52 70 0a 00 53 56 45 52 a4 0a 00 14 0e 41 43 ERp..SVER.....AC bfa0: 4d 53 02 42 53 4d 49 68 a4 0a 00 14 39 43 53 49 MS.BSMIh....9CSI bfb0: 4e 02 a0 08 95 69 0a 0a a4 0a 02 5b 80 5c 46 31 N....i.....[.\F1 bfc0: 39 32 00 68 69 5b 81 0f 5c 46 31 39 32 03 00 40 92.hi[..\F192..@ bfd0: 04 43 4d 41 58 10 70 74 0b 00 01 0a 01 00 43 4d .CMAX.pt......CM bfe0: 41 58 a4 0a 00 14 0e 4d 46 31 46 03 42 53 4d 49 AX.....MF1F.BSMI bff0: 68 a4 0a 00 10 12 5c 2e 5f 53 42 5f 41 54 4b 44 h.....\._SB_ATKD c000: 14 06 41 47 4c 4e 04 10 49 1b 5c 2e 5f 53 42 5f ..AGLN..I.\._SB_ c010: 41 54 4b 44 14 49 04 4f 46 42 44 01 08 46 42 44 ATKD.I.OFBD..FBD c020: 54 12 2a 14 0a e0 0a e1 0a e2 0a e3 0a e4 0a e5 T.*............. c030: 0a e6 0a e7 0a e8 0a e9 0a ea 0a eb 0a ec 0a ed ................ c040: 0a ee 0a ef 0a f1 0a f2 0a f3 0a f6 70 89 46 42 ............p.FB c050: 44 54 01 68 00 0a 00 0a 00 60 75 60 a4 60 14 0f DT.h.....`u`.`.. c060: 47 42 52 56 00 70 0d 32 30 38 00 60 a4 60 14 11 GBRV.p.208.`.`.. c070: 47 42 4d 4e 00 70 0d 4b 34 33 53 41 00 60 a4 60 GBMN.p.K43SA.`.` c080: 14 0f 4f 47 44 50 01 70 68 60 70 0a 02 61 a4 61 ..OGDP.ph`p..a.a c090: 14 09 52 53 49 44 00 a4 0a 00 14 0c 4f 53 44 50 ..RSID......OSDP c0a0: 02 70 68 60 70 69 61 14 45 07 4d 46 34 32 03 5b .ph`pia.E.MF42.[ c0b0: 80 46 4d 34 32 00 68 0a 08 5b 81 12 46 4d 34 32 .FM42.h..[..FM42 c0c0: 03 00 30 53 4d 34 32 08 45 4d 34 32 08 70 0a 01 ..0SM42.EM42.p.. c0d0: 60 a0 0d 93 69 0a 01 70 53 46 42 4f 68 6a 60 a0 `...i..pSFBOhj`. c0e0: 0d 93 69 0a 02 70 53 41 4f 43 68 6a 60 a0 0d 93 ..i..pSAOChj`... c0f0: 69 0a 03 70 47 42 53 54 68 6a 60 a0 13 60 70 60 i..pGBSThj`..`p` c100: 45 4d 34 32 7d 53 4d 34 32 0a 02 53 4d 34 32 7d EM42}SM42..SM42} c110: 53 4d 34 32 0a 80 53 4d 34 32 a4 0a 00 14 24 53 SM42..SM42....$S c120: 46 42 4f 02 5b 80 5c 46 34 32 31 00 68 69 5b 81 FBO.[.\F421.hi[. c130: 0f 5c 46 34 32 31 03 00 40 04 53 4f 50 54 08 a4 .\F421..@.SOPT.. c140: 0a 00 14 24 53 41 4f 43 02 5b 80 5c 46 34 32 32 ...$SAOC.[.\F422 c150: 00 68 69 5b 81 0f 5c 46 34 32 32 03 00 40 04 43 .hi[..\F422..@.C c160: 4e 54 46 08 a4 0a 00 14 49 05 47 42 53 54 02 5b NTF.....I.GBST.[ c170: 80 5c 46 34 32 33 00 68 69 5b 81 16 5c 46 34 32 .\F423.hi[..\F42 c180: 33 03 00 40 04 42 4f 54 31 40 04 42 4f 54 32 40 3..@.BOT1@.BOT2@ c190: 04 70 54 42 4f 54 42 4f 54 31 70 52 54 43 33 60 .pTBOTBOT1pRTC3` c1a0: 79 60 0a 08 60 72 52 54 43 32 60 60 79 60 0a 08 y`..`rRTC2``y`.. c1b0: 60 72 52 54 43 31 60 60 70 60 42 4f 54 32 a4 0a `rRTC1``p`BOT2.. c1c0: 00 10 8f 4b 01 5c 2f 04 5f 53 42 5f 50 43 49 30 ...K.\/._SB_PCI0 c1d0: 53 42 52 47 45 43 30 5f 14 28 47 42 54 54 09 a0 SBRGEC0_.(GBTT.. c1e0: 19 45 43 41 56 a0 0b 93 68 0a 00 70 45 42 30 54 .ECAV...h..pEB0T c1f0: 60 a1 07 70 45 42 31 54 60 a1 05 70 0a ff 60 a4 `..pEB1T`..p..`. c200: 60 14 20 57 43 4d 44 09 a0 19 45 43 41 56 5b 23 `. WCMD...ECAV[# c210: 4d 55 45 43 ff ff 70 68 43 4d 44 31 5b 27 4d 55 MUEC..phCMD1['MU c220: 45 43 14 4e 05 44 4c 59 30 09 a0 08 92 45 43 41 EC.N.DLY0....ECA c230: 56 a4 ff 70 ff 60 5b 23 4d 55 45 43 ff ff 70 68 V..p.`[#MUEC..ph c240: 43 44 54 31 70 0a 6b 43 44 54 32 70 0a 00 43 44 CDT1p.kCDT2p..CD c250: 54 33 70 0a bb 43 4d 44 31 70 0a 7f 61 a2 0d 90 T3p..CMD1p..a... c260: 61 43 4d 44 31 5b 22 0a 01 76 61 a0 0d 93 43 4d aCMD1["..va...CM c270: 44 31 00 70 43 44 54 31 60 5b 27 4d 55 45 43 a4 D1.pCDT1`['MUEC. c280: 60 14 41 07 52 52 41 4d 09 a0 47 06 45 43 41 56 `.A.RRAM..G.ECAV c290: 5b 23 4d 55 45 43 ff ff 70 68 60 7b 60 0a ff 61 [#MUEC..ph`{`..a c2a0: 7a 60 0a 08 60 7b 60 0a ff 60 70 61 43 44 54 33 z`..`{`..`paCDT3 c2b0: 70 60 43 44 54 32 70 0a 80 43 44 54 31 70 0a b6 p`CDT2p..CDT1p.. c2c0: 43 4d 44 31 70 0a 7f 60 a2 0d 90 60 43 4d 44 31 CMD1p..`...`CMD1 c2d0: 5b 22 0a 01 76 60 a0 0d 93 43 4d 44 31 00 70 43 ["..v`...CMD1.pC c2e0: 44 54 31 60 a1 04 70 ff 60 5b 27 4d 55 45 43 a4 DT1`..p.`['MUEC. c2f0: 60 a4 ff 14 44 07 57 52 41 4d 0a a0 4a 06 45 43 `...D.WRAM..J.EC c300: 41 56 5b 23 4d 55 45 43 ff ff 70 68 60 7b 60 0a AV[#MUEC..ph`{`. c310: ff 61 7a 60 0a 08 60 7b 60 0a ff 60 70 61 43 44 .az`..`{`..`paCD c320: 54 33 70 60 43 44 54 32 70 0a 81 43 44 54 31 70 T3p`CDT2p..CDT1p c330: 69 43 44 54 34 70 0a b6 43 4d 44 31 70 0a 7f 60 iCDT4p..CMD1p..` c340: a2 0d 90 60 43 4d 44 31 5b 22 0a 01 76 60 a0 0a ...`CMD1["..v`.. c350: 93 43 4d 44 31 00 70 01 60 a1 04 70 ff 60 5b 27 .CMD1.p.`..p.`[' c360: 4d 55 45 43 a4 60 a4 ff 14 48 05 53 54 42 52 08 MUEC.`...H.STBR. c370: 70 0a 00 60 70 0a 00 61 70 0a 00 62 a0 13 7b 5c p..`p..ap..b..{\ c380: 2e 5f 53 42 5f 56 47 41 46 0a 01 00 70 0a 01 60 ._SB_VGAF...p..` c390: a0 09 61 5c 49 53 4d 49 0a 9a a1 26 a0 1e 62 a0 ..a\ISMI...&..b. c3a0: 12 92 93 4f 53 46 47 4f 53 45 47 5c 49 53 4d 49 ...OSFGOSEG\ISMI c3b0: 0a 9a a1 08 5c 49 53 4d 49 0a 9a a1 05 45 43 43 ....\ISMI....ECC c3c0: 42 14 4f 04 45 43 43 42 08 a0 1b 91 41 43 41 50 B.O.ECCB....ACAP c3d0: 93 4f 53 46 47 4f 53 56 54 70 5c 2e 5f 53 42 5f .OSFGOSVTp\._SB_ c3e0: 4c 42 54 4e 60 a1 0d 70 5c 2e 5f 53 42 5f 4c 42 LBTN`..p\._SB_LB c3f0: 54 4e 60 70 42 52 54 49 61 79 61 0a 04 61 72 60 TN`pBRTIaya..ar` c400: 61 61 70 83 88 50 57 41 43 61 00 60 53 41 44 43 aap..PWACa.`SADC c410: 60 14 0d 53 42 52 56 09 53 54 38 36 0a 00 68 08 `..SBRV.ST86..h. c420: 44 45 43 46 0a 00 14 4d 0b 53 46 4e 56 0a a0 40 DECF...M.SFNV..@ c430: 05 93 68 0a 00 a0 1f 7b 44 45 43 46 0a 01 00 70 ..h....{DECF...p c440: 52 52 41 4d 0b 21 05 60 7d 60 0a 80 60 57 52 41 RRAM.!.`}`..`WRA c450: 4d 0b 21 05 60 a0 1f 7b 44 45 43 46 0a 02 00 70 M.!.`..{DECF...p c460: 52 52 41 4d 0b 22 05 60 7d 60 0a 80 60 57 52 41 RRAM.".`}`..`WRA c470: 4d 0b 22 05 60 70 0a 00 44 45 43 46 a4 0a 00 a0 M.".`p..DECF.... c480: 30 93 68 0a 01 70 52 52 41 4d 0b 21 05 60 7b 60 0.h..pRRAM.!.`{` c490: 0a 7f 60 57 52 41 4d 0b 21 05 60 7d 44 45 43 46 ..`WRAM.!.`}DECF c4a0: 0a 01 44 45 43 46 53 54 38 34 0a 00 69 a4 0a 00 ..DECFST84..i... c4b0: a0 30 93 68 0a 02 70 52 52 41 4d 0b 22 05 60 7b .0.h..pRRAM.".`{ c4c0: 60 0a 7f 60 57 52 41 4d 0b 22 05 60 7d 44 45 43 `..`WRAM.".`}DEC c4d0: 46 0a 02 44 45 43 46 53 54 38 34 0a 01 69 a4 0a F..DECFST84..i.. c4e0: 00 a4 0a 00 14 4f 05 53 41 44 43 09 a0 45 05 45 .....O.SADC..E.E c4f0: 43 41 56 5b 23 4d 55 45 43 ff ff 70 0a 86 43 44 CAV[#MUEC..p..CD c500: 54 31 70 00 43 44 54 32 70 68 43 44 54 33 70 0a T1p.CDT2phCDT3p. c510: b6 43 4d 44 31 70 0a 7f 60 a2 0d 90 60 43 4d 44 .CMD1p..`...`CMD c520: 31 5b 22 0a 01 76 60 a0 0d 93 43 4d 44 31 00 70 1["..v`...CMD1.p c530: 43 44 54 31 60 a1 04 70 ff 60 5b 27 4d 55 45 43 CDT1`..p.`['MUEC c540: a4 60 a4 ff 14 1b 53 50 49 4e 0a a0 09 69 53 54 .`....SPIN...iST c550: 38 37 0a 20 68 a1 08 53 54 38 37 0a 40 68 a4 01 87. h..ST87.@h.. c560: 14 11 52 50 49 4e 09 70 53 54 38 37 0a 00 68 61 ..RPIN.pST87..ha c570: a4 61 14 4e 06 52 42 41 54 0a a0 08 92 45 43 41 .a.N.RBAT....ECA c580: 56 a4 ff 5b 23 4d 55 45 43 ff ff 70 0a 03 60 a2 V..[#MUEC..p..`. c590: 47 04 60 70 68 43 44 54 32 70 69 61 79 61 0a 01 G.`phCDT2piaya.. c5a0: 61 72 61 0a da 61 70 61 43 4d 44 31 70 0a 7f 61 ara..apaCMD1p..a c5b0: a2 0d 90 43 4d 44 31 61 76 61 5b 22 0a 01 a0 11 ...CMD1ava[".... c5c0: 93 43 4d 44 31 0a 00 70 43 44 54 31 61 70 00 60 .CMD1..pCDT1ap.` c5d0: a1 06 70 ff 61 76 60 5b 27 4d 55 45 43 a4 61 a4 ..p.av`['MUEC.a. c5e0: ff 14 4f 05 57 42 41 54 0b 7d 68 0a 80 63 a0 08 ..O.WBAT.}h..c.. c5f0: 92 45 43 41 56 a4 ff 5b 23 4d 55 45 43 ff ff 70 .ECAV..[#MUEC..p c600: 0a 03 60 a2 33 60 70 6a 43 44 54 31 70 63 43 44 ..`.3`pjCDT1pcCD c610: 54 32 70 69 61 79 61 0a 01 61 72 61 0a da 61 70 T2piaya..ara..ap c620: 61 43 4d 44 31 70 0a 7f 61 a2 0d 90 43 4d 44 31 aCMD1p..a...CMD1 c630: 61 76 61 5b 22 0a 01 5b 27 4d 55 45 43 a4 61 a4 ava["..['MUEC.a. c640: ff 14 3f 46 4e 43 54 0a a0 38 45 43 41 56 5b 23 ..?FNCT..8ECAV[# c650: 4d 55 45 43 ff ff 70 68 43 44 54 32 70 69 43 44 MUEC..phCDT2piCD c660: 54 31 70 0a c4 43 4d 44 31 70 0a 7f 60 a2 0d 90 T1p..CMD1p..`... c670: 60 43 4d 44 31 5b 22 0a 01 76 60 5b 27 4d 55 45 `CMD1["..v`['MUE c680: 43 08 57 52 51 4b 0a 02 08 52 44 51 4b 0a 03 08 C.WRQK...RDQK... c690: 53 44 42 54 0a 04 08 52 43 42 54 0a 05 08 57 52 SDBT...RCBT...WR c6a0: 42 54 0a 06 08 52 44 42 54 0a 07 08 57 52 57 44 BT...RDBT...WRWD c6b0: 0a 08 08 52 44 57 44 0a 09 08 57 52 42 4c 0a 0a ...RDWD...WRBL.. c6c0: 08 52 44 42 4c 0a 0b 08 50 43 4c 4c 0a 0c 08 47 .RDBL...PCLL...G c6d0: 4f 4f 44 0a 00 08 55 4b 45 52 0a 07 08 44 41 45 OOD...UKER...DAE c6e0: 52 0a 10 08 43 4d 44 4e 0a 12 08 55 4b 45 32 0a R...CMDN...UKE2. c6f0: 13 08 44 41 44 4e 0a 17 08 53 42 54 4f 0a 18 08 ..DADN...SBTO... c700: 55 53 50 54 0a 19 08 53 42 42 59 0a 1a 14 4e 04 USPT...SBBY...N. c710: 53 57 54 43 09 70 55 4b 45 52 60 70 0a 03 61 a2 SWTC.pUKER`p..a. c720: 3a 90 60 61 70 0a 23 62 a2 19 62 a0 0b 50 52 54 :.`ap.#b..b..PRT c730: 43 5b 22 0a 01 76 62 a1 0a 70 00 62 70 53 53 54 C["..vb..p.bpSST c740: 53 60 a0 17 60 70 00 50 52 54 43 76 61 a0 0c 61 S`..`p.PRTCva..a c750: 5b 22 0a 01 70 68 50 52 54 43 a4 60 14 4b 14 53 ["..phPRTC.`.K.S c760: 4d 42 52 0b 70 12 08 03 0a 07 0a 00 0a 00 60 a0 MBR.p.........`. c770: 08 92 45 43 41 56 a4 60 a0 2e 92 93 68 52 44 42 ..ECAV.`....hRDB c780: 4c a0 25 92 93 68 52 44 57 44 a0 1c 92 93 68 52 L.%..hRDWD....hR c790: 44 42 54 a0 13 92 93 68 52 43 42 54 a0 0a 92 93 DBT....hRCBT.... c7a0: 68 52 44 51 4b a4 60 5b 23 4d 55 45 43 ff ff 70 hRDQK.`[#MUEC..p c7b0: 50 52 54 43 61 70 00 62 a2 28 92 93 61 0a 00 5b PRTCap.b.(..a..[ c7c0: 21 0a 0a 75 62 a0 13 94 62 0b e8 03 70 53 42 42 !..ub...b...pSBB c7d0: 59 88 60 0a 00 00 70 00 61 a1 07 70 50 52 54 43 Y.`...p.a..pPRTC c7e0: 61 a0 4e 0b 92 94 62 0b e8 03 79 69 0a 01 63 7d a.N...b...yi..c} c7f0: 63 0a 01 63 70 63 41 44 44 52 a0 17 92 93 68 52 c..cpcADDR....hR c800: 44 51 4b a0 0e 92 93 68 52 43 42 54 70 6a 43 4d DQK....hRCBTpjCM c810: 44 42 70 0a 00 42 44 41 54 70 68 50 52 54 43 70 DBp..BDATphPRTCp c820: 53 57 54 43 68 88 60 0a 00 00 a0 45 07 93 83 88 SWTCh.`....E.... c830: 60 0a 00 00 0a 00 a0 1b 93 68 52 44 42 4c 70 42 `........hRDBLpB c840: 43 4e 54 88 60 0a 01 00 70 42 44 41 54 88 60 0a CNT.`...pBDAT.`. c850: 02 00 a0 19 93 68 52 44 57 44 70 0a 02 88 60 0a .....hRDWDp...`. c860: 01 00 70 44 54 32 42 88 60 0a 02 00 a0 19 93 68 ..pDT2B.`......h c870: 52 44 42 54 70 0a 01 88 60 0a 01 00 70 44 41 54 RDBTp...`...pDAT c880: 30 88 60 0a 02 00 a0 19 93 68 52 43 42 54 70 0a 0.`......hRCBTp. c890: 01 88 60 0a 01 00 70 44 41 54 30 88 60 0a 02 00 ..`...pDAT0.`... c8a0: 5b 27 4d 55 45 43 a4 60 14 4a 10 53 4d 42 57 0d ['MUEC.`.J.SMBW. c8b0: 70 12 04 01 0a 07 60 a0 08 92 45 43 41 56 a4 60 p.....`...ECAV.` c8c0: a0 2e 92 93 68 57 52 42 4c a0 25 92 93 68 57 52 ....hWRBL.%..hWR c8d0: 57 44 a0 1c 92 93 68 57 52 42 54 a0 13 92 93 68 WD....hWRBT....h c8e0: 53 44 42 54 a0 0a 92 93 68 57 52 51 4b a4 60 5b SDBT....hWRQK.`[ c8f0: 23 4d 55 45 43 ff ff 70 50 52 54 43 61 70 00 62 #MUEC..pPRTCap.b c900: a2 28 92 93 61 0a 00 5b 21 0a 0a 75 62 a0 13 94 .(..a..[!..ub... c910: 62 0b e8 03 70 53 42 42 59 88 60 0a 00 00 70 00 b...pSBBY.`...p. c920: 61 a1 07 70 50 52 54 43 61 a0 41 08 92 94 62 0b a..pPRTCa.A...b. c930: e8 03 70 0a 00 42 44 41 54 79 69 0a 01 63 70 63 ..p..BDATyi..cpc c940: 41 44 44 52 a0 17 92 93 68 57 52 51 4b a0 0e 92 ADDR....hWRQK... c950: 93 68 53 44 42 54 70 6a 43 4d 44 42 a0 13 93 68 .hSDBTpjCMDB...h c960: 57 52 42 4c 70 6b 42 43 4e 54 70 6c 42 44 41 54 WRBLpkBCNTplBDAT c970: a0 0d 93 68 57 52 57 44 70 6c 44 54 32 42 a0 0d ...hWRWDplDT2B.. c980: 93 68 57 52 42 54 70 6c 44 41 54 30 a0 0d 93 68 .hWRBTplDAT0...h c990: 53 44 42 54 70 6c 44 41 54 30 70 68 50 52 54 43 SDBTplDAT0phPRTC c9a0: 70 53 57 54 43 68 88 60 0a 00 00 5b 27 4d 55 45 pSWTCh.`...['MUE c9b0: 43 a4 60 5b 01 4d 55 45 50 00 14 4e 0a 52 42 45 C.`[.MUEP..N.RBE c9c0: 50 01 70 0b ff ff 61 5b 23 4d 55 45 50 ff ff 70 P.p...a[#MUEP..p c9d0: 52 52 41 4d 0b 20 06 63 7b 63 0a 7f 64 57 52 41 RRAM. .c{c..dWRA c9e0: 4d 0b 20 06 64 70 0a 10 62 70 0a 10 61 a2 4a 04 M. .dp..bp..a.J. c9f0: 7b 93 61 0a 10 92 93 62 0a 00 00 53 4d 42 57 57 {.a....b...SMBWW ca00: 52 57 44 42 41 44 52 0a 00 0a 02 0b 35 06 53 4d RWDBADR.....5.SM ca10: 42 57 57 52 57 44 42 41 44 52 0a 00 0a 02 0b 06 BWWRWDBADR...... ca20: 06 70 53 4d 42 52 52 44 42 54 0a 50 68 60 70 83 .pSMBRRDBT.Ph`p. ca30: 88 60 0a 00 00 61 76 62 5c 2f 05 5f 53 42 5f 50 .`...avb\/._SB_P ca40: 43 49 30 53 42 52 47 45 43 30 5f 57 52 41 4d 0b CI0SBRGEC0_WRAM. ca50: 20 06 63 79 61 0a 08 61 7d 61 83 88 60 0a 02 00 .cya..a}a..`... ca60: 61 5b 27 4d 55 45 50 a4 61 14 43 0a 57 42 45 50 a['MUEP.a.C.WBEP ca70: 02 70 0b ff ff 61 5b 23 4d 55 45 50 ff ff 70 52 .p...a[#MUEP..pR ca80: 52 41 4d 0b 20 06 63 7b 63 0a 7f 64 57 52 41 4d RAM. .c{c..dWRAM ca90: 0b 20 06 64 70 0a 10 62 70 0a 10 61 a2 4d 04 7b . .dp..bp..a.M.{ caa0: 93 61 0a 10 92 93 62 0a 00 00 53 4d 42 57 57 52 .a....b...SMBWWR cab0: 57 44 42 41 44 52 0a 00 0a 02 0b 35 06 53 4d 42 WDBADR.....5.SMB cac0: 57 57 52 57 44 42 41 44 52 0a 00 0a 02 0b 06 06 WWRWDBADR....... cad0: 70 53 4d 42 57 57 52 42 54 0a 50 68 0a 01 69 60 pSMBWWRBT.Ph..i` cae0: 70 83 88 60 0a 00 00 61 76 62 5c 2f 05 5f 53 42 p..`...avb\/._SB caf0: 5f 50 43 49 30 53 42 52 47 45 43 30 5f 57 52 41 _PCI0SBRGEC0_WRA cb00: 4d 0b 20 06 63 5b 27 4d 55 45 50 a4 61 14 4c 0a M. .c['MUEP.a.L. cb10: 45 43 58 54 06 70 12 0e 06 0a 10 0a 00 0a 00 0a ECXT.p.......... cb20: 00 0a 00 0a 00 61 a0 41 09 45 43 41 56 5b 23 4d .....a.A.ECAV[#M cb30: 55 45 43 ff ff 70 69 43 44 54 31 70 6a 43 44 54 UEC..piCDT1pjCDT cb40: 32 70 6b 43 44 54 33 70 6c 43 44 54 34 70 6d 43 2pkCDT3plCDT4pmC cb50: 44 54 35 70 68 43 4d 44 31 70 0a 7f 60 a2 0d 90 DT5phCMD1p..`... cb60: 60 43 4d 44 31 5b 22 0a 01 76 60 a0 3c 60 70 0a `CMD1["..v`.<`p. cb70: 00 88 61 0a 00 00 70 43 44 54 31 88 61 0a 01 00 ..a...pCDT1.a... cb80: 70 43 44 54 32 88 61 0a 02 00 70 43 44 54 33 88 pCDT2.a...pCDT3. cb90: 61 0a 03 00 70 43 44 54 34 88 61 0a 04 00 70 43 a...pCDT4.a...pC cba0: 44 54 35 88 61 0a 05 00 a1 09 70 0a 10 88 61 0a DT5.a.....p...a. cbb0: 00 00 5b 27 4d 55 45 43 a4 61 14 48 1a 45 43 53 ..['MUEC.a.H.ECS cbc0: 42 07 70 12 0e 05 0a 11 0a 00 0a 00 0a 00 11 03 B.p............. cbd0: 0a 20 61 a0 07 94 68 0a 01 a4 61 a0 45 18 45 43 . a...h...a.E.EC cbe0: 41 56 5b 23 4d 55 45 43 ff ff a0 0b 93 68 0a 00 AV[#MUEC.....h.. cbf0: 70 50 52 54 43 60 a1 07 70 50 52 54 32 60 70 00 pPRTC`..pPRT2`p. cc00: 62 a2 36 92 93 60 0a 00 5b 21 0a 0a 75 62 a0 13 b.6..`..[!..ub.. cc10: 94 62 0b e8 03 70 53 42 42 59 88 61 0a 00 00 70 .b...pSBBY.a...p cc20: 00 60 a1 15 a0 0b 93 68 0a 00 70 50 52 54 43 60 .`.....h..pPRTC` cc30: a1 07 70 50 52 54 32 60 a0 42 12 92 94 62 0b e8 ..pPRT2`.B...b.. cc40: 03 a0 39 93 68 0a 00 70 6a 41 44 44 52 70 6b 43 ..9.h..pjADDRpkC cc50: 4d 44 42 70 6c 44 41 54 30 70 6d 44 41 54 31 70 MDBplDAT0pmDAT1p cc60: 83 88 6e 0a 00 00 42 43 4e 54 70 83 88 6e 0a 01 ..n...BCNTp..n.. cc70: 00 42 44 41 54 70 69 50 52 54 43 a1 35 70 6a 41 .BDATpiPRTC.5pjA cc80: 44 44 32 70 6b 43 4d 44 32 70 6c 44 41 32 30 70 DD2pkCMD2plDA20p cc90: 6d 44 41 32 31 70 83 88 6e 0a 00 00 42 43 4e 32 mDA21p..n...BCN2 cca0: 70 83 88 6e 0a 01 00 42 44 41 32 70 69 50 52 54 p..n...BDA2piPRT ccb0: 32 70 0a 7f 60 a0 11 93 68 0a 00 a2 0b 50 52 54 2p..`...h....PRT ccc0: 43 5b 22 0a 01 76 60 a1 0d a2 0b 50 52 54 32 5b C["..v`....PRT2[ ccd0: 22 0a 01 76 60 a0 4b 07 60 a0 33 93 68 0a 00 70 "..v`.K.`.3.h..p cce0: 53 53 54 53 60 70 44 41 54 30 88 61 0a 01 00 70 SSTS`pDAT0.a...p ccf0: 44 41 54 31 88 61 0a 02 00 70 42 43 4e 54 88 61 DAT1.a...pBCNT.a cd00: 0a 03 00 70 42 44 41 54 88 61 0a 04 00 a1 2f 70 ...pBDAT.a..../p cd10: 53 53 54 32 60 70 44 41 32 30 88 61 0a 01 00 70 SST2`pDA20.a...p cd20: 44 41 32 31 88 61 0a 02 00 70 42 43 4e 32 88 61 DA21.a...pBCN2.a cd30: 0a 03 00 70 42 44 41 32 88 61 0a 04 00 7b 60 0a ...pBDA2.a...{`. cd40: 1f 60 a0 07 60 72 60 0a 10 60 70 60 88 61 0a 00 .`..`r`..`p`.a.. cd50: 00 a1 09 70 0a 10 88 61 0a 00 00 5b 27 4d 55 45 ...p...a...['MUE cd60: 43 a4 61 5b 80 45 43 49 44 01 0b 57 02 0a 01 5b C.a[.ECID..W...[ cd70: 81 0b 45 43 49 44 01 45 43 34 44 08 5b 80 45 43 ..ECID.EC4D.[.EC cd80: 49 43 01 0b 58 02 0a 01 5b 81 0b 45 43 49 43 01 IC..X...[..ECIC. cd90: 45 43 34 43 08 14 28 57 45 49 45 08 70 0b ff ff EC4C..(WEIE.p... cda0: 60 a2 1a 93 7b 45 43 34 43 0a 02 00 0a 02 a0 07 `...{EC4C....... cdb0: 93 60 0a 00 a4 ff 76 60 5b 22 0a 05 a4 00 14 29 .`....v`[".....) cdc0: 57 45 4f 46 08 70 0b ff ff 60 a2 1b 92 93 7b 45 WEOF.p...`....{E cdd0: 43 34 43 0a 01 00 0a 01 a0 07 93 60 0a 00 a4 ff C4C........`.... cde0: 76 60 5b 22 0a 05 a4 00 14 2e 57 45 4f 45 00 70 v`["......WEOE.p cdf0: 0b ff ff 60 a2 20 93 7b 45 43 34 43 0a 01 00 0a ...`. .{EC4C.... ce00: 01 a0 07 93 60 0a 00 a4 ff 76 60 5b 22 0a 05 70 ....`....v`["..p ce10: 45 43 34 44 61 a4 00 14 40 0a 53 54 38 33 09 a0 EC4Da...@.ST83.. ce20: 46 09 45 43 41 56 5b 23 4d 55 34 54 ff ff a0 10 F.ECAV[#MU4T.... ce30: 92 93 57 45 4f 45 00 5b 27 4d 55 34 54 a4 ff a0 ..WEOE.['MU4T... ce40: 10 92 93 57 45 49 45 00 5b 27 4d 55 34 54 a4 ff ...WEIE.['MU4T.. ce50: 70 0a ff 45 43 34 43 a0 10 92 93 57 45 49 45 00 p..EC4C....WEIE. ce60: 5b 27 4d 55 34 54 a4 ff 70 0a 83 45 43 34 43 a0 ['MU4T..p..EC4C. ce70: 10 92 93 57 45 49 45 00 5b 27 4d 55 34 54 a4 ff ...WEIE.['MU4T.. ce80: 70 68 45 43 34 44 a0 10 92 93 57 45 49 45 00 5b phEC4D....WEIE.[ ce90: 27 4d 55 34 54 a4 ff a0 10 92 93 57 45 4f 46 00 'MU4T......WEOF. cea0: 5b 27 4d 55 34 54 a4 ff 70 45 43 34 44 60 5b 27 ['MU4T..pEC4D`[' ceb0: 4d 55 34 54 a4 60 a4 ff 14 40 0a 53 54 38 34 0a MU4T.`...@.ST84. cec0: a0 46 09 45 43 41 56 5b 23 4d 55 34 54 ff ff a0 .F.ECAV[#MU4T... ced0: 10 92 93 57 45 4f 45 00 5b 27 4d 55 34 54 a4 ff ...WEOE.['MU4T.. cee0: a0 10 92 93 57 45 49 45 00 5b 27 4d 55 34 54 a4 ....WEIE.['MU4T. cef0: ff 70 0a ff 45 43 34 43 a0 10 92 93 57 45 49 45 .p..EC4C....WEIE cf00: 00 5b 27 4d 55 34 54 a4 ff 70 0a 84 45 43 34 43 .['MU4T..p..EC4C cf10: a0 10 92 93 57 45 49 45 00 5b 27 4d 55 34 54 a4 ....WEIE.['MU4T. cf20: ff 70 68 45 43 34 44 a0 10 92 93 57 45 49 45 00 .phEC4D....WEIE. cf30: 5b 27 4d 55 34 54 a4 ff 70 69 45 43 34 44 a0 10 ['MU4T..piEC4D.. cf40: 92 93 57 45 49 45 00 5b 27 4d 55 34 54 a4 ff 5b ..WEIE.['MU4T..[ cf50: 27 4d 55 34 54 a4 00 a4 ff 14 45 0c 53 54 39 35 'MU4T.....E.ST95 cf60: 0a a0 4b 0b 45 43 41 56 5b 23 4d 55 34 54 ff ff ..K.ECAV[#MU4T.. cf70: a0 10 92 93 57 45 4f 45 00 5b 27 4d 55 34 54 a4 ....WEOE.['MU4T. cf80: ff a0 10 92 93 57 45 49 45 00 5b 27 4d 55 34 54 .....WEIE.['MU4T cf90: a4 ff 70 0a ff 45 43 34 43 a0 10 92 93 57 45 49 ..p..EC4C....WEI cfa0: 45 00 5b 27 4d 55 34 54 a4 ff 70 0a 95 45 43 34 E.['MU4T..p..EC4 cfb0: 43 a0 10 92 93 57 45 49 45 00 5b 27 4d 55 34 54 C....WEIE.['MU4T cfc0: a4 ff 70 68 45 43 34 44 a0 10 92 93 57 45 49 45 ..phEC4D....WEIE cfd0: 00 5b 27 4d 55 34 54 a4 ff 70 69 45 43 34 44 a0 .['MU4T..piEC4D. cfe0: 10 92 93 57 45 49 45 00 5b 27 4d 55 34 54 a4 ff ...WEIE.['MU4T.. cff0: a0 1c 93 68 0a 00 a0 10 92 93 57 45 4f 46 00 5b ...h......WEOF.[ d000: 27 4d 55 34 54 a4 ff 70 45 43 34 44 60 5b 27 4d 'MU4T..pEC4D`['M d010: 55 34 54 a0 07 93 68 0a 00 a4 60 a4 00 a4 ff 14 U4T...h...`..... d020: 45 0c 53 54 38 37 0a a0 4b 0b 45 43 41 56 5b 23 E.ST87..K.ECAV[# d030: 4d 55 34 54 ff ff a0 10 92 93 57 45 4f 45 00 5b MU4T......WEOE.[ d040: 27 4d 55 34 54 a4 ff a0 10 92 93 57 45 49 45 00 'MU4T......WEIE. d050: 5b 27 4d 55 34 54 a4 ff 70 0a ff 45 43 34 43 a0 ['MU4T..p..EC4C. d060: 10 92 93 57 45 49 45 00 5b 27 4d 55 34 54 a4 ff ...WEIE.['MU4T.. d070: 70 0a 87 45 43 34 43 a0 10 92 93 57 45 49 45 00 p..EC4C....WEIE. d080: 5b 27 4d 55 34 54 a4 ff 70 68 45 43 34 44 a0 10 ['MU4T..phEC4D.. d090: 92 93 57 45 49 45 00 5b 27 4d 55 34 54 a4 ff 70 ..WEIE.['MU4T..p d0a0: 69 45 43 34 44 a0 10 92 93 57 45 49 45 00 5b 27 iEC4D....WEIE.[' d0b0: 4d 55 34 54 a4 ff a0 1c 93 68 0a 00 a0 10 92 93 MU4T.....h...... d0c0: 57 45 4f 46 00 5b 27 4d 55 34 54 a4 ff 70 45 43 WEOF.['MU4T..pEC d0d0: 34 44 60 5b 27 4d 55 34 54 a0 07 93 68 0a 00 a4 4D`['MU4T...h... d0e0: 60 a4 00 a4 ff 14 40 0a 53 54 38 35 09 a0 46 09 `.....@.ST85..F. d0f0: 45 43 41 56 5b 23 4d 55 34 54 ff ff a0 10 92 93 ECAV[#MU4T...... d100: 57 45 4f 45 00 5b 27 4d 55 34 54 a4 ff a0 10 92 WEOE.['MU4T..... d110: 93 57 45 49 45 00 5b 27 4d 55 34 54 a4 ff 70 0a .WEIE.['MU4T..p. d120: ff 45 43 34 43 a0 10 92 93 57 45 49 45 00 5b 27 .EC4C....WEIE.[' d130: 4d 55 34 54 a4 ff 70 0a 85 45 43 34 43 a0 10 92 MU4T..p..EC4C... d140: 93 57 45 49 45 00 5b 27 4d 55 34 54 a4 ff 70 68 .WEIE.['MU4T..ph d150: 45 43 34 44 a0 10 92 93 57 45 49 45 00 5b 27 4d EC4D....WEIE.['M d160: 55 34 54 a4 ff a0 10 92 93 57 45 4f 46 00 5b 27 U4T......WEOF.[' d170: 4d 55 34 54 a4 ff 70 45 43 34 44 60 5b 27 4d 55 MU4T..pEC4D`['MU d180: 34 54 a4 60 a4 ff 14 40 0a 53 54 38 36 0a a0 46 4T.`...@.ST86..F d190: 09 45 43 41 56 5b 23 4d 55 34 54 ff ff a0 10 92 .ECAV[#MU4T..... d1a0: 93 57 45 4f 45 00 5b 27 4d 55 34 54 a4 ff a0 10 .WEOE.['MU4T.... d1b0: 92 93 57 45 49 45 00 5b 27 4d 55 34 54 a4 ff 70 ..WEIE.['MU4T..p d1c0: 0a ff 45 43 34 43 a0 10 92 93 57 45 49 45 00 5b ..EC4C....WEIE.[ d1d0: 27 4d 55 34 54 a4 ff 70 0a 86 45 43 34 43 a0 10 'MU4T..p..EC4C.. d1e0: 92 93 57 45 49 45 00 5b 27 4d 55 34 54 a4 ff 70 ..WEIE.['MU4T..p d1f0: 68 45 43 34 44 a0 10 92 93 57 45 49 45 00 5b 27 hEC4D....WEIE.[' d200: 4d 55 34 54 a4 ff 70 69 45 43 34 44 a0 10 92 93 MU4T..piEC4D.... d210: 57 45 49 45 00 5b 27 4d 55 34 54 a4 ff 5b 27 4d WEIE.['MU4T..['M d220: 55 34 54 a4 00 a4 ff 14 47 0b 53 54 38 45 0a a0 U4T.....G.ST8E.. d230: 4d 0a 45 43 41 56 5b 23 4d 55 34 54 ff ff a0 10 M.ECAV[#MU4T.... d240: 92 93 57 45 4f 45 00 5b 27 4d 55 34 54 a4 ff a0 ..WEOE.['MU4T... d250: 10 92 93 57 45 49 45 00 5b 27 4d 55 34 54 a4 ff ...WEIE.['MU4T.. d260: 70 0a ff 45 43 34 43 a0 10 92 93 57 45 49 45 00 p..EC4C....WEIE. d270: 5b 27 4d 55 34 54 a4 ff 70 0a 8e 45 43 34 43 a0 ['MU4T..p..EC4C. d280: 10 92 93 57 45 49 45 00 5b 27 4d 55 34 54 a4 ff ...WEIE.['MU4T.. d290: 70 68 45 43 34 44 a0 10 92 93 57 45 49 45 00 5b phEC4D....WEIE.[ d2a0: 27 4d 55 34 54 a4 ff 70 69 45 43 34 44 a0 10 92 'MU4T..piEC4D... d2b0: 93 57 45 49 45 00 5b 27 4d 55 34 54 a4 ff a0 10 .WEIE.['MU4T.... d2c0: 92 93 57 45 4f 46 00 5b 27 4d 55 34 54 a4 ff 70 ..WEOF.['MU4T..p d2d0: 45 43 34 44 60 5b 27 4d 55 34 54 a4 60 a4 ff 14 EC4D`['MU4T.`... d2e0: 47 0b 53 54 39 45 0b a0 4d 0a 45 43 41 56 5b 23 G.ST9E..M.ECAV[# d2f0: 4d 55 34 54 ff ff a0 10 92 93 57 45 4f 45 00 5b MU4T......WEOE.[ d300: 27 4d 55 34 54 a4 ff a0 10 92 93 57 45 49 45 00 'MU4T......WEIE. d310: 5b 27 4d 55 34 54 a4 ff 70 0a ff 45 43 34 43 a0 ['MU4T..p..EC4C. d320: 10 92 93 57 45 49 45 00 5b 27 4d 55 34 54 a4 ff ...WEIE.['MU4T.. d330: 70 0a 9e 45 43 34 43 a0 10 92 93 57 45 49 45 00 p..EC4C....WEIE. d340: 5b 27 4d 55 34 54 a4 ff 70 68 45 43 34 44 a0 10 ['MU4T..phEC4D.. d350: 92 93 57 45 49 45 00 5b 27 4d 55 34 54 a4 ff 70 ..WEIE.['MU4T..p d360: 69 45 43 34 44 a0 10 92 93 57 45 49 45 00 5b 27 iEC4D....WEIE.[' d370: 4d 55 34 54 a4 ff 70 6a 45 43 34 44 a0 10 92 93 MU4T..pjEC4D.... d380: 57 45 49 45 00 5b 27 4d 55 34 54 a4 ff 5b 27 4d WEIE.['MU4T..['M d390: 55 34 54 a4 00 a4 ff 14 47 0b 53 54 39 46 0b a0 U4T.....G.ST9F.. d3a0: 4d 0a 45 43 41 56 5b 23 4d 55 34 54 ff ff a0 10 M.ECAV[#MU4T.... d3b0: 92 93 57 45 4f 45 00 5b 27 4d 55 34 54 a4 ff a0 ..WEOE.['MU4T... d3c0: 10 92 93 57 45 49 45 00 5b 27 4d 55 34 54 a4 ff ...WEIE.['MU4T.. d3d0: 70 0a ff 45 43 34 43 a0 10 92 93 57 45 49 45 00 p..EC4C....WEIE. d3e0: 5b 27 4d 55 34 54 a4 ff 70 0a 9f 45 43 34 43 a0 ['MU4T..p..EC4C. d3f0: 10 92 93 57 45 49 45 00 5b 27 4d 55 34 54 a4 ff ...WEIE.['MU4T.. d400: 70 68 45 43 34 44 a0 10 92 93 57 45 49 45 00 5b phEC4D....WEIE.[ d410: 27 4d 55 34 54 a4 ff 70 69 45 43 34 44 a0 10 92 'MU4T..piEC4D... d420: 93 57 45 49 45 00 5b 27 4d 55 34 54 a4 ff 70 6a .WEIE.['MU4T..pj d430: 45 43 34 44 a0 10 92 93 57 45 49 45 00 5b 27 4d EC4D....WEIE.['M d440: 55 34 54 a4 ff 5b 27 4d 55 34 54 a4 00 a4 ff 14 U4T..['MU4T..... d450: 48 08 53 54 41 39 0a a0 4e 07 45 43 41 56 5b 23 H.STA9..N.ECAV[# d460: 4d 55 34 54 ff ff a0 10 92 93 57 45 4f 45 00 5b MU4T......WEOE.[ d470: 27 4d 55 34 54 a4 ff a0 10 92 93 57 45 49 45 00 'MU4T......WEIE. d480: 5b 27 4d 55 34 54 a4 ff 70 0a a9 45 43 34 43 a0 ['MU4T..p..EC4C. d490: 10 92 93 57 45 49 45 00 5b 27 4d 55 34 54 a4 ff ...WEIE.['MU4T.. d4a0: 70 68 45 43 34 44 a0 10 92 93 57 45 49 45 00 5b phEC4D....WEIE.[ d4b0: 27 4d 55 34 54 a4 ff 70 69 45 43 34 44 a0 10 92 'MU4T..piEC4D... d4c0: 93 57 45 49 45 00 5b 27 4d 55 34 54 a4 ff 5b 27 .WEIE.['MU4T..[' d4d0: 4d 55 34 54 a4 00 a4 ff 14 40 0a 53 54 41 38 09 MU4T.....@.STA8. d4e0: a0 46 09 45 43 41 56 5b 23 4d 55 34 54 ff ff a0 .F.ECAV[#MU4T... d4f0: 10 92 93 57 45 4f 45 00 5b 27 4d 55 34 54 a4 ff ...WEOE.['MU4T.. d500: a0 10 92 93 57 45 49 45 00 5b 27 4d 55 34 54 a4 ....WEIE.['MU4T. d510: ff 70 0a ff 45 43 34 43 a0 10 92 93 57 45 49 45 .p..EC4C....WEIE d520: 00 5b 27 4d 55 34 54 a4 ff 70 0a a8 45 43 34 43 .['MU4T..p..EC4C d530: a0 10 92 93 57 45 49 45 00 5b 27 4d 55 34 54 a4 ....WEIE.['MU4T. d540: ff 70 68 45 43 34 44 a0 10 92 93 57 45 49 45 00 .phEC4D....WEIE. d550: 5b 27 4d 55 34 54 a4 ff a0 10 92 93 57 45 4f 46 ['MU4T......WEOF d560: 00 5b 27 4d 55 34 54 a4 ff 70 45 43 34 44 60 5b .['MU4T..pEC4D`[ d570: 27 4d 55 34 54 a4 60 a4 ff 14 47 05 54 50 53 57 'MU4T.`...G.TPSW d580: 01 7b 68 0a 01 60 a0 25 60 5c 2f 05 5f 53 42 5f .{h..`.%`\/._SB_ d590: 50 43 49 30 53 42 52 47 45 43 30 5f 45 43 58 54 PCI0SBRGEC0_ECXT d5a0: 0a b6 0a b8 0a 01 0a 01 0a 00 0a 00 a1 24 5c 2f .............$\/ d5b0: 05 5f 53 42 5f 50 43 49 30 53 42 52 47 45 43 30 ._SB_PCI0SBRGEC0 d5c0: 5f 45 43 58 54 0a b6 0a b8 0a 01 0a 02 0a 00 0a _ECXT........... d5d0: 00 14 42 04 54 50 53 54 00 70 5c 2f 05 5f 53 42 ..B.TPST.p\/._SB d5e0: 5f 50 43 49 30 53 42 52 47 45 43 30 5f 45 43 58 _PCI0SBRGEC0_ECX d5f0: 54 0a b6 0a b8 0a 02 0a 00 0a 00 0a 00 60 70 83 T............`p. d600: 88 60 0a 01 00 61 a0 08 93 61 0a 00 a4 0a 01 a1 .`...a...a...... d610: 04 a4 0a 00 14 45 05 4c 42 53 57 01 a0 28 93 68 .....E.LBSW..(.h d620: 0a 01 5c 2f 05 5f 53 42 5f 50 43 49 30 53 42 52 ..\/._SB_PCI0SBR d630: 47 45 43 30 5f 45 43 58 54 0a b6 0a b9 0a 01 0a GEC0_ECXT....... d640: 00 0a 00 0a 00 a1 24 5c 2f 05 5f 53 42 5f 50 43 ......$\/._SB_PC d650: 49 30 53 42 52 47 45 43 30 5f 45 43 58 54 0a b6 I0SBRGEC0_ECXT.. d660: 0a b9 0a 02 0a 00 0a 00 0a 00 14 16 4c 42 53 54 ............LBST d670: 00 70 52 52 41 4d 0b 4a 04 60 7b 60 0a 03 60 a4 .pRRAM.J.`{`..`. d680: 60 10 18 5c 00 08 54 53 50 5f 0a 0a 08 54 43 31 `..\..TSP_...TC1 d690: 5f 0a 02 08 54 43 32 5f 0a 0a 10 46 14 5c 5f 54 _...TC2_...F.\_T d6a0: 5a 5f 14 32 4b 45 4c 56 01 7b 68 0a ff 60 a0 19 Z_.2KELV.{h..`.. d6b0: 92 95 60 0a 80 74 0b 00 01 60 60 77 60 0a 0a 60 ..`..t...``w`..` d6c0: 74 0b ac 0a 60 60 a4 60 77 60 0a 0a 60 72 60 0b t...``.`w`..`r`. d6d0: ac 0a 60 a4 60 14 14 43 45 4c 43 01 74 68 0b ac ..`.`..CELC.th.. d6e0: 0a 60 78 60 0a 0a 61 60 a4 60 08 50 4c 43 59 0a .`x`..a`.`.PLCY. d6f0: 00 5b 85 4e 0e 54 48 52 4d 14 19 5f 43 52 54 00 .[.N.THRM.._CRT. d700: 52 43 52 54 a4 4b 45 4c 56 5c 2e 5f 53 42 5f 54 RCRT.KELV\._SB_T d710: 43 52 54 14 2f 5f 54 4d 50 00 70 0a 05 61 a2 1e CRT./_TMP.p..a.. d720: 61 70 52 54 4d 50 60 a0 0f 94 60 5c 2e 5f 53 42 apRTMP`...`\._SB d730: 5f 54 43 52 54 76 61 a1 05 70 0a 00 61 a4 4b 45 _TCRTva..p..a.KE d740: 4c 56 60 08 5f 50 53 4c 12 2a 04 5c 2e 5f 50 52 LV`._PSL.*.\._PR d750: 5f 43 50 55 30 5c 2e 5f 50 52 5f 43 50 55 31 5c _CPU0\._PR_CPU1\ d760: 2e 5f 50 52 5f 43 50 55 32 5c 2e 5f 50 52 5f 43 ._PR_CPU2\._PR_C d770: 50 55 33 14 10 5f 54 53 50 00 77 54 53 50 5f 0a PU3.._TSP.wTSP_. d780: 0a 60 a4 60 14 0b 5f 54 43 31 00 a4 54 43 31 5f .`.`.._TC1..TC1_ d790: 14 0b 5f 54 43 32 00 a4 54 43 32 5f 14 30 5f 50 .._TC2..TC2_.0_P d7a0: 53 56 00 52 50 53 56 a0 14 50 4c 43 59 a4 4b 45 SV.RPSV..PLCY.KE d7b0: 4c 56 5c 2e 5f 53 42 5f 50 50 53 56 a1 10 a4 4b LV\._SB_PPSV...K d7c0: 45 4c 56 5c 2e 5f 53 42 5f 54 50 53 56 14 13 5f ELV\._SB_TPSV.._ d7d0: 53 43 50 01 70 00 50 4c 43 59 86 54 48 52 4d 0a SCP.p.PLCY.THRM. d7e0: 81 10 4e 20 5c 5f 54 5a 5f 08 41 54 4d 50 0a 3c ..N \_TZ_.ATMP.< d7f0: 08 4c 54 4d 50 0a 3c 08 46 41 4e 53 0a 00 14 4a .LTMP.<.FANS...J d800: 04 52 54 4d 50 00 a0 3d 5c 2f 05 5f 53 42 5f 50 .RTMP..=\/._SB_P d810: 43 49 30 53 42 52 47 45 43 30 5f 45 43 41 56 70 CI0SBRGEC0_ECAVp d820: 5c 2f 05 5f 53 42 5f 50 43 49 30 53 42 52 47 45 \/._SB_PCI0SBRGE d830: 43 30 5f 45 43 50 55 60 a0 0b 95 60 0a 80 70 60 C0_ECPU`...`..p` d840: 4c 54 4d 50 a4 4c 54 4d 50 14 4c 04 52 43 52 54 LTMP.LTMP.L.RCRT d850: 00 a0 44 04 5c 2f 05 5f 53 42 5f 50 43 49 30 53 ..D.\/._SB_PCI0S d860: 42 52 47 45 43 30 5f 45 43 41 56 70 5c 2f 05 5f BRGEC0_ECAVp\/._ d870: 53 42 5f 50 43 49 30 53 42 52 47 45 43 30 5f 45 SB_PCI0SBRGEC0_E d880: 43 52 54 60 a0 11 95 60 0a 80 70 60 5c 2e 5f 53 CRT`...`..p`\._S d890: 42 5f 54 43 52 54 14 4c 04 52 50 53 56 00 a0 44 B_TCRT.L.RPSV..D d8a0: 04 5c 2f 05 5f 53 42 5f 50 43 49 30 53 42 52 47 .\/._SB_PCI0SBRG d8b0: 45 43 30 5f 45 43 41 56 70 5c 2f 05 5f 53 42 5f EC0_ECAVp\/._SB_ d8c0: 50 43 49 30 53 42 52 47 45 43 30 5f 45 50 53 56 PCI0SBRGEC0_EPSV d8d0: 60 a0 11 95 60 0a 80 70 60 5c 2e 5f 53 42 5f 54 `...`..p`\._SB_T d8e0: 50 53 56 14 44 08 52 46 41 4e 01 a0 45 07 5c 2f PSV.D.RFAN..E.\/ d8f0: 05 5f 53 42 5f 50 43 49 30 53 42 52 47 45 43 30 ._SB_PCI0SBRGEC0 d900: 5f 45 43 41 56 70 5c 2f 05 5f 53 42 5f 50 43 49 _ECAVp\/._SB_PCI d910: 30 53 42 52 47 45 43 30 5f 53 54 38 33 68 60 a0 0SBRGEC0_ST83h`. d920: 07 93 60 0a ff a4 60 70 5c 2f 05 5f 53 42 5f 50 ..`...`p\/._SB_P d930: 43 49 30 53 42 52 47 45 43 30 5f 54 41 43 48 68 CI0SBRGEC0_TACHh d940: 60 78 60 0a 64 61 60 72 60 0a 01 60 a0 0c 92 94 `x`.da`r`..`.... d950: 60 0a 3c 70 60 46 41 4e 53 a1 07 70 46 41 4e 53 `.LID_ ea90: 08 5f 48 49 44 0c 41 d0 0c 0d 14 2e 5f 4c 49 44 ._HID.A....._LID eaa0: 00 70 01 60 70 5c 2f 05 5f 53 42 5f 50 43 49 30 .p.`p\/._SB_PCI0 eab0: 53 42 52 47 45 43 30 5f 52 50 49 4e 0a 46 60 a0 SBRGEC0_RPIN.F`. eac0: 07 93 60 ff 70 01 60 a4 60 10 06 5c 5f 47 50 45 ..`.p.`.`..\_GPE ead0: 10 28 5c 2f 04 5f 53 42 5f 50 43 49 30 53 42 52 .(\/._SB_PCI0SBR eae0: 47 45 43 30 5f 14 13 5f 51 38 33 00 86 5c 2e 5f GEC0_.._Q83..\._ eaf0: 53 42 5f 4c 49 44 5f 0a 80 10 26 5c 5f 53 42 5f SB_LID_...&\_SB_ eb00: 5b 82 1e 53 4c 50 42 08 5f 48 49 44 0c 41 d0 0c [..SLPB._HID.A.. eb10: 0e 14 0e 5f 50 52 57 00 a4 12 06 02 0a 0b 0a 04 ..._PRW......... eb20: 10 49 21 5c 2e 5f 53 42 5f 41 54 4b 44 14 28 46 .I!\._SB_ATKD.(F eb30: 53 4d 49 01 70 68 5c 2e 5f 53 42 5f 46 53 46 4e SMI.ph\._SB_FSFN eb40: 7d 68 0a a0 60 49 53 4d 49 0a 90 a4 5c 2e 5f 53 }h..`ISMI...\._S eb50: 42 5f 46 53 54 41 14 18 46 4c 53 48 01 70 68 5c B_FSTA..FLSH.ph\ eb60: 2e 5f 53 42 5f 46 53 54 41 46 53 4d 49 0a 00 14 ._SB_FSTAFSMI... eb70: 19 46 49 4e 49 01 70 68 5c 2e 5f 53 42 5f 46 41 .FINI.ph\._SB_FA eb80: 44 52 a4 46 53 4d 49 0a 01 14 19 46 45 52 53 01 DR.FSMI....FERS. eb90: 70 68 5c 2e 5f 53 42 5f 46 53 54 41 a4 46 53 4d ph\._SB_FSTA.FSM eba0: 49 0a 02 14 2c 46 57 52 49 01 70 68 5c 2e 5f 53 I...,FWRI.ph\._S ebb0: 42 5f 46 41 44 52 70 0b 00 10 5c 2e 5f 53 42 5f B_FADRp...\._SB_ ebc0: 46 53 49 5a a4 74 0b 00 10 46 53 4d 49 0a 03 00 FSIZ.t...FSMI... ebd0: 14 1f 46 57 52 50 00 70 0a 00 5c 2e 5f 53 42 5f ..FWRP.p..\._SB_ ebe0: 46 53 49 5a a4 74 0b 00 10 46 53 4d 49 0a 03 00 FSIZ.t...FSMI... ebf0: 14 19 46 45 42 57 01 70 68 5c 2e 5f 53 42 5f 46 ..FEBW.ph\._SB_F ec00: 41 44 52 a4 46 53 4d 49 0a 04 14 19 46 45 42 52 ADR.FSMI....FEBR ec10: 01 70 68 5c 2e 5f 53 42 5f 46 41 44 52 a4 46 53 .ph\._SB_FADR.FS ec20: 4d 49 0a 05 14 0d 46 45 44 57 00 a4 46 53 4d 49 MI....FEDW..FSMI ec30: 0a 06 14 19 45 43 53 52 01 70 68 5c 2e 5f 53 42 ....ECSR.ph\._SB ec40: 5f 46 53 54 41 a4 46 53 4d 49 0a 07 14 19 46 4c _FSTA.FSMI....FL ec50: 53 43 01 70 68 5c 2e 5f 53 42 5f 46 53 54 41 a4 SC.ph\._SB_FSTA. ec60: 46 53 4d 49 0a 08 14 4f 07 46 49 4d 45 01 70 68 FSMI...O.FIME.ph ec70: 5c 2e 5f 53 42 5f 46 53 54 41 a0 3e 7d 93 68 0a \._SB_FSTA.>}.h. ec80: 04 93 68 0a 05 00 46 53 4d 49 0a 09 a0 14 93 68 ..h...FSMI.....h ec90: 0a 04 70 5c 2e 5f 53 42 5f 46 41 44 52 55 4c 43 ..p\._SB_FADRULC eca0: 4b 70 0a 00 5c 2e 5f 53 42 5f 46 53 54 41 a4 5c Kp..\._SB_FSTA.\ ecb0: 2e 5f 53 42 5f 46 53 54 41 a0 25 93 68 0b 00 80 ._SB_FSTA.%.h... ecc0: 70 0b 00 10 5c 2e 5f 53 42 5f 46 53 49 5a 46 53 p...\._SB_FSIZFS ecd0: 4d 49 0a 09 a4 5c 2e 5f 53 42 5f 46 53 54 41 a4 MI...\._SB_FSTA. ece0: 46 53 4d 49 0a 09 14 4c 04 46 52 45 43 01 a0 31 FSMI...L.FREC..1 ecf0: 93 68 0b 00 80 70 68 5c 2e 5f 53 42 5f 46 53 54 .h...ph\._SB_FST ed00: 41 46 53 4d 49 0a 0a 70 0b 00 10 5c 2e 5f 53 42 AFSMI..p...\._SB ed10: 5f 46 53 49 5a a4 5c 2e 5f 53 42 5f 46 53 54 41 _FSIZ.\._SB_FSTA ed20: 70 68 5c 2e 5f 53 42 5f 46 53 54 41 a4 46 53 4d ph\._SB_FSTA.FSM ed30: 49 0a 0a 08 55 4c 43 4b 0a 00 10 44 2a 5c 5f 53 I...ULCK...D*\_S ed40: 42 5f 08 58 43 50 44 0a 00 08 58 4e 50 54 0a 01 B_.XCPD...XNPT.. ed50: 08 58 43 41 50 0a 02 08 58 44 43 50 0a 04 08 58 .XCAP...XDCP...X ed60: 44 43 54 0a 08 08 58 44 53 54 0a 0a 08 58 4c 43 DCT...XDST...XLC ed70: 50 0a 0c 08 58 4c 43 54 0a 10 08 58 4c 53 54 0a P...XLCT...XLST. ed80: 12 08 58 53 43 50 0a 14 08 58 53 43 54 0a 18 08 ..XSCP...XSCT... ed90: 58 53 53 54 0a 1a 08 58 52 43 54 0a 1c 5b 01 4d XSST...XRCT..[.M eda0: 55 54 45 00 14 28 42 44 46 52 04 79 68 0a 14 68 UTE..(BDFR.yh..h edb0: 79 69 0a 0f 69 79 6a 0a 0c 6a 72 68 0a 00 60 72 yi..iyj..jrh..`r edc0: 69 60 60 72 6a 60 60 72 6b 60 60 a4 60 14 38 52 i``rj``rk``.`.8R edd0: 42 50 45 01 5b 23 4d 55 54 45 ff ff 72 68 5c 50 BPE.[#MUTE..rh\P ede0: 45 42 53 60 5b 80 50 43 46 47 00 60 0a 01 5b 81 EBS`[.PCFG.`..[. edf0: 0b 50 43 46 47 01 58 43 46 47 08 5b 27 4d 55 54 .PCFG.XCFG.['MUT ee00: 45 a4 58 43 46 47 14 41 04 52 57 50 45 01 5b 23 E.XCFG.A.RWPE.[# ee10: 4d 55 54 45 ff ff 7b 68 0c fe ff ff ff 68 72 68 MUTE..{h.....hrh ee20: 5c 50 45 42 53 60 5b 80 50 43 46 47 00 60 0a 02 \PEBS`[.PCFG.`.. ee30: 5b 81 0b 50 43 46 47 02 58 43 46 47 10 5b 27 4d [..PCFG.XCFG.['M ee40: 55 54 45 a4 58 43 46 47 14 41 04 52 44 50 45 01 UTE.XCFG.A.RDPE. ee50: 5b 23 4d 55 54 45 ff ff 7b 68 0c fc ff ff ff 68 [#MUTE..{h.....h ee60: 72 68 5c 50 45 42 53 60 5b 80 50 43 46 47 00 60 rh\PEBS`[.PCFG.` ee70: 0a 04 5b 81 0b 50 43 46 47 03 58 43 46 47 20 5b ..[..PCFG.XCFG [ ee80: 27 4d 55 54 45 a4 58 43 46 47 14 39 57 42 50 45 'MUTE.XCFG.9WBPE ee90: 02 5b 23 4d 55 54 45 ff ff 72 68 5c 50 45 42 53 .[#MUTE..rh\PEBS eea0: 60 5b 80 50 43 46 47 00 60 0a 01 5b 81 0b 50 43 `[.PCFG.`..[..PC eeb0: 46 47 01 58 43 46 47 08 70 69 58 43 46 47 5b 27 FG.XCFG.piXCFG[' eec0: 4d 55 54 45 14 42 04 57 57 50 45 02 5b 23 4d 55 MUTE.B.WWPE.[#MU eed0: 54 45 ff ff 7b 68 0c fe ff ff ff 68 72 68 5c 50 TE..{h.....hrh\P eee0: 45 42 53 60 5b 80 50 43 46 47 00 60 0a 02 5b 81 EBS`[.PCFG.`..[. eef0: 0b 50 43 46 47 02 58 43 46 47 10 70 69 58 43 46 .PCFG.XCFG.piXCF ef00: 47 5b 27 4d 55 54 45 14 42 04 57 44 50 45 02 5b G['MUTE.B.WDPE.[ ef10: 23 4d 55 54 45 ff ff 7b 68 0c fc ff ff ff 68 72 #MUTE..{h.....hr ef20: 68 5c 50 45 42 53 60 5b 80 50 43 46 47 00 60 0a h\PEBS`[.PCFG.`. ef30: 04 5b 81 0b 50 43 46 47 03 58 43 46 47 20 70 69 .[..PCFG.XCFG pi ef40: 58 43 46 47 5b 27 4d 55 54 45 14 4a 04 52 57 44 XCFG['MUTE.J.RWD ef50: 50 03 5b 23 4d 55 54 45 ff ff 7b 68 0c fc ff ff P.[#MUTE..{h.... ef60: ff 68 72 68 5c 50 45 42 53 60 5b 80 50 43 46 47 .hrh\PEBS`[.PCFG ef70: 00 60 0a 04 5b 81 0b 50 43 46 47 03 58 43 46 47 .`..[..PCFG.XCFG ef80: 20 7b 58 43 46 47 6a 61 7d 61 69 58 43 46 47 5b {XCFGja}aiXCFG[ ef90: 27 4d 55 54 45 14 49 04 52 50 4d 45 01 72 68 0a 'MUTE.I.RPME.rh. efa0: 84 60 70 5c 2e 5f 53 42 5f 52 44 50 45 60 61 a0 .`p\._SB_RDPE`a. efb0: 0b 93 61 0c ff ff ff ff a4 0a 00 a1 23 a0 1e 90 ..a.........#... efc0: 61 0c 00 00 01 00 5c 2e 5f 53 42 5f 57 44 50 45 a.....\._SB_WDPE efd0: 60 7b 61 0c 00 00 01 00 00 a4 0a 01 a4 0a 00 10 `{a............. efe0: 44 08 5c 2e 5f 53 42 5f 50 43 49 30 5b 82 46 07 D.\._SB_PCI0[.F. eff0: 52 45 53 43 08 5f 48 49 44 0c 41 d0 0c 02 08 5f RESC._HID.A...._ f000: 55 49 44 0a 09 08 42 55 46 30 11 11 0a 0e 86 09 UID...BUF0...... f010: 00 01 00 00 00 00 00 10 00 00 79 00 14 47 04 5f ..........y..G._ f020: 43 52 53 08 8a 42 55 46 30 0a 04 50 54 42 30 70 CRS..BUF0..PTB0p f030: 5c 2e 5f 53 42 5f 50 54 41 42 50 54 42 30 8a 42 \._SB_PTABPTB0.B f040: 55 46 30 0a 08 50 54 4c 4e a0 15 93 5c 2e 5f 53 UF0..PTLN...\._S f050: 42 5f 50 54 41 42 0a 00 70 0a 00 50 54 4c 4e a4 B_PTAB..p..PTLN. f060: 42 55 46 30 10 4f 64 5c 00 5b 80 5c 50 4d 49 4f BUF0.Od\.[.\PMIO f070: 01 0b 00 04 0a 80 5b 81 4f 15 5c 50 4d 49 4f 01 ......[.O.\PMIO. f080: 00 40 08 00 01 54 44 54 59 03 54 45 4e 41 01 54 .@...TDTY.TENA.T f090: 54 44 54 03 46 52 43 54 01 00 08 54 48 4c 53 01 TDT.FRCT...THLS. f0a0: 00 06 00 48 06 00 01 50 45 48 53 01 00 07 50 45 ...H...PEHS...PE f0b0: 50 53 01 42 4c 53 54 01 53 42 50 53 01 00 04 47 PS.BLST.SBPS...G f0c0: 30 30 53 01 47 30 31 53 01 47 30 32 53 01 47 50 00S.G01S.G02S.GP f0d0: 53 33 01 47 30 34 53 01 47 30 35 53 01 47 30 36 S3.G04S.G05S.G06 f0e0: 53 01 47 30 37 53 01 47 30 38 53 01 47 30 39 53 S.G07S.G08S.G09S f0f0: 01 47 30 41 53 01 47 30 42 53 01 47 30 43 53 01 .G0AS.G0BS.G0CS. f100: 47 30 44 53 01 47 30 45 53 01 47 30 46 53 01 00 G0DS.G0ES.G0FS.. f110: 20 00 01 50 45 48 45 01 00 07 50 45 50 45 01 42 ..PEHE...PEPE.B f120: 4c 45 4e 01 53 42 50 45 01 00 04 47 30 30 45 01 LEN.SBPE...G00E. f130: 47 30 31 45 01 47 30 32 45 01 47 50 45 33 01 47 G01E.G02E.GPE3.G f140: 30 34 45 01 47 30 35 45 01 47 30 36 45 01 47 30 04E.G05E.G06E.G0 f150: 37 45 01 47 30 38 45 01 47 30 39 45 01 47 30 41 7E.G08E.G09E.G0A f160: 45 01 47 30 42 45 01 47 30 43 45 01 47 30 44 45 E.G0BE.G0CE.G0DE f170: 01 47 30 45 45 01 47 30 46 45 01 00 20 00 04 53 .G0EE.G0FE.. ..S f180: 4c 50 45 01 41 50 4d 45 01 00 05 4d 43 53 45 01 LPE.APME...MCSE. f190: 00 01 54 43 4f 45 01 50 45 52 45 01 00 01 00 10 ..TCOE.PERE..... f1a0: 00 04 53 4c 50 53 01 41 50 4d 53 01 00 05 4d 43 ..SLPS.APMS...MC f1b0: 53 53 01 00 01 54 43 4f 53 01 50 45 52 53 01 00 SS...TCOS.PERS.. f1c0: 01 00 40 06 00 01 47 50 45 43 01 00 4e 10 00 09 ..@...GPEC..N... f1d0: 53 43 49 53 01 00 06 5b 80 5c 47 50 49 53 01 0b SCIS...[.\GPIS.. f1e0: 00 04 0a 50 5b 81 0f 5c 47 50 49 53 01 00 40 11 ...P[..\GPIS..@. f1f0: 47 53 30 30 10 5b 80 5c 47 50 30 31 01 0b 00 05 GS00.[.\GP01.... f200: 0a 64 5b 81 42 0f 5c 47 50 30 31 01 47 55 30 30 .d[.B.\GP01.GU00 f210: 08 47 55 30 31 08 47 55 30 32 08 47 55 30 33 08 .GU01.GU02.GU03. f220: 47 49 4f 30 08 47 49 4f 31 08 47 49 4f 32 08 47 GIO0.GIO1.GIO2.G f230: 49 4f 33 08 00 20 00 08 47 4c 30 31 08 47 4c 30 IO3.. ..GL01.GL0 f240: 32 08 00 03 47 50 32 37 01 47 50 32 38 01 00 03 2...GP27.GP28... f250: 00 40 04 00 08 47 42 30 31 08 47 42 30 32 08 47 .@...GB01.GB02.G f260: 42 30 33 08 00 40 08 47 49 56 30 08 47 49 56 31 B03..@.GIV0.GIV1 f270: 08 47 49 56 32 08 47 49 56 33 08 47 55 30 34 08 .GIV2.GIV3.GU04. f280: 47 55 30 35 08 47 55 30 36 08 47 55 30 37 08 47 GU05.GU06.GU07.G f290: 49 4f 34 08 47 49 4f 35 08 47 49 4f 36 08 47 49 IO4.GIO5.GIO6.GI f2a0: 4f 37 08 00 05 00 01 00 02 47 4c 30 35 08 47 4c O7.......GL05.GL f2b0: 30 36 08 47 4c 30 37 08 00 20 47 55 30 38 08 47 06.GL07.. GU08.G f2c0: 55 30 39 08 47 55 30 41 08 47 55 30 42 08 47 49 U09.GU0A.GU0B.GI f2d0: 4f 38 08 47 49 4f 39 08 47 49 4f 41 08 47 49 4f O8.GIO9.GIOA.GIO f2e0: 42 08 47 4c 30 38 08 47 4c 30 39 08 47 4c 30 41 B.GL08.GL09.GL0A f2f0: 08 47 4c 30 42 08 5b 80 5c 47 50 49 4f 01 0b 00 .GL0B.[.\GPIO... f300: 05 0a 80 5b 81 34 5c 47 50 49 4f 01 00 40 06 47 ...[.4\GPIO..@.G f310: 4c 30 30 10 47 4c 31 30 10 00 40 04 47 42 30 30 L00.GL10..@.GB00 f320: 20 00 40 08 47 50 30 30 10 00 40 05 47 4c 32 30 .@.GP00..@.GL20 f330: 20 00 40 06 47 4c 34 30 20 5b 80 52 43 42 41 00 .@.GL40 [.RCBA. f340: 0c 00 c0 d1 fe 0b 00 40 5b 81 0f 52 43 42 41 01 .......@[..RCBA. f350: 00 80 0c 1a 46 44 52 54 20 14 45 07 52 47 50 4c ....FDRT .E.RGPL f360: 0a 70 69 60 70 00 61 a2 0e 60 79 61 0a 01 61 7d .pi`p.a..`ya..a} f370: 61 0a 01 61 76 60 a0 17 95 68 0a 10 79 61 68 61 a..av`...h..yaha f380: 70 47 4c 30 30 60 7b 60 61 60 7a 60 68 60 a1 3e pGL00`{`a`z`h`.> f390: a0 10 95 68 0a 20 70 47 4c 31 30 60 74 68 0a 10 ...h. pGL10`th.. f3a0: 62 a1 1f a0 10 95 68 0a 40 70 47 4c 32 30 60 74 b.....h.@pGL20`t f3b0: 68 0a 20 62 a1 0c 70 47 4c 34 30 60 74 68 0a 40 h. b..pGL40`th.@ f3c0: 62 79 61 62 61 7b 60 61 60 7a 60 62 60 a4 60 14 byaba{`a`z`b`.`. f3d0: 48 0e 53 47 50 4c 0b 70 5c 2f 04 5f 53 42 5f 50 H.SGPL.p\/._SB_P f3e0: 43 49 30 53 42 52 47 47 50 4c 4b 67 70 0a 00 5c CI0SBRGGPLKgp..\ f3f0: 2f 04 5f 53 42 5f 50 43 49 30 53 42 52 47 47 50 /._SB_PCI0SBRGGP f400: 4c 4b 70 69 60 70 00 61 a2 0e 60 79 61 0a 01 61 LKpi`p.a..`ya..a f410: 7d 61 0a 01 61 76 60 a0 4d 06 92 95 68 0a 10 a0 }a..av`.M...h... f420: 10 95 68 0a 20 70 47 4c 31 30 60 74 68 0a 10 62 ..h. pGL10`th..b f430: a1 1f a0 10 95 68 0a 40 70 47 4c 32 30 60 74 68 .....h.@pGL20`th f440: 0a 20 62 a1 0c 70 47 4c 34 30 60 74 68 0a 40 62 . b..pGL40`th.@b f450: 79 61 62 61 80 61 63 7b 60 63 60 79 6a 62 64 7d yaba.ac{`c`yjbd} f460: 60 64 60 a0 0b 95 68 0a 20 70 60 47 4c 31 30 a1 `d`...h. p`GL10. f470: 15 a0 0b 95 68 0a 40 70 60 47 4c 32 30 a1 07 70 ....h.@p`GL20..p f480: 60 47 4c 34 30 a1 1d 79 61 68 61 80 61 63 7b 47 `GL40..yaha.ac{G f490: 4c 30 30 63 60 79 6a 68 64 7d 60 64 60 70 60 47 L00c`yjhd}`d`p`G f4a0: 4c 30 30 70 67 5c 2f 04 5f 53 42 5f 50 43 49 30 L00pg\/._SB_PCI0 f4b0: 53 42 52 47 47 50 4c 4b 14 14 52 47 50 50 09 7a SBRGGPLK..RGPP.z f4c0: 47 50 30 30 68 60 7b 60 0a 01 60 a4 60 14 46 05 GP00h`{`..`.`.F. f4d0: 54 47 50 50 09 70 5c 2f 04 5f 53 42 5f 50 43 49 TGPP.p\/._SB_PCI f4e0: 30 53 42 52 47 47 50 4c 4b 67 70 0a 00 5c 2f 04 0SBRGGPLKgp..\/. f4f0: 5f 53 42 5f 50 43 49 30 53 42 52 47 47 50 4c 4b _SB_PCI0SBRGGPLK f500: 79 0a 01 68 60 7f 47 50 30 30 60 47 50 30 30 70 y..h`.GP00`GP00p f510: 67 5c 2f 04 5f 53 42 5f 50 43 49 30 53 42 52 47 g\/._SB_PCI0SBRG f520: 47 50 4c 4b 14 48 06 53 47 50 50 0a 70 5c 2f 04 GPLK.H.SGPP.p\/. f530: 5f 53 42 5f 50 43 49 30 53 42 52 47 47 50 4c 4b _SB_PCI0SBRGGPLK f540: 67 70 0a 00 5c 2f 04 5f 53 42 5f 50 43 49 30 53 gp..\/._SB_PCI0S f550: 42 52 47 47 50 4c 4b 79 0a 01 68 60 a0 0c 69 7d BRGGPLKy..h`..i} f560: 47 50 30 30 60 47 50 30 30 a1 0e 80 60 61 7b 47 GP00`GP00...`a{G f570: 50 30 30 61 47 50 30 30 70 67 5c 2f 04 5f 53 42 P00aGP00pg\/._SB f580: 5f 50 43 49 30 53 42 52 47 47 50 4c 4b 08 50 4d _PCI0SBRGGPLK.PM f590: 45 57 00 14 0b 53 42 52 53 01 5c 43 50 58 53 14 EW...SBRS.\CPXS. f5a0: 11 53 42 52 57 01 70 5c 53 42 50 53 5c 50 4d 45 .SBRW.p\SBPS\PME f5b0: 57 14 27 53 54 52 50 01 a0 10 68 70 01 5c 53 4c W.'STRP...hp.\SL f5c0: 50 53 70 01 5c 53 4c 50 45 a1 0f 70 00 5c 53 4c PSp.\SLPE..p.\SL f5d0: 50 45 70 01 5c 53 4c 50 53 14 17 48 4b 54 48 08 PEp.\SLPS..HKTH. f5e0: a0 0a 54 48 4c 53 a4 54 54 44 54 a1 05 a4 0b ff ..THLS.TTDT..... f5f0: ff 14 42 0c 43 50 58 53 00 70 0a 00 60 70 0c 00 ..B.CPXS.p..`p.. f600: 00 01 00 61 70 0c 60 00 0e 00 62 70 0c dc 00 0e ...ap.`...bp.... f610: 00 63 a2 49 08 95 60 0a 04 a0 4f 06 92 7b 5c 46 .c.I..`...O..{\F f620: 44 52 54 61 00 a2 31 7b 5c 2e 5f 53 42 5f 52 44 DRTa..1{\._SB_RD f630: 50 45 62 0c 00 00 01 00 00 7d 5c 2e 5f 53 42 5f PEb......}\._SB_ f640: 52 44 50 45 62 0c 00 00 01 00 64 5c 2e 5f 53 42 RDPEb.....d\._SB f650: 5f 57 44 50 45 62 64 a2 31 7b 5c 2e 5f 53 42 5f _WDPEbd.1{\._SB_ f660: 52 44 50 45 63 0c 00 00 00 80 00 7d 5c 2e 5f 53 RDPEc......}\._S f670: 42 5f 52 44 50 45 63 0c 00 00 00 80 64 5c 2e 5f B_RDPEc.....d\._ f680: 53 42 5f 57 44 50 45 63 64 72 62 0b 00 10 62 72 SB_WDPEcdrb...br f690: 63 0b 00 10 63 79 61 0a 01 61 75 60 a2 17 7b 5c c...cya..au`..{\ f6a0: 50 45 50 53 0a 01 00 7d 5c 50 45 50 53 0a 01 5c PEPS...}\PEPS..\ f6b0: 50 45 50 53 10 49 20 5c 5f 47 50 45 14 41 05 5f PEPS.I \_GPE.A._ f6c0: 4c 30 31 00 a0 49 04 92 7b 5c 46 44 52 54 0c 00 L01..I..{\FDRT.. f6d0: 00 04 00 00 a0 39 5c 2f 04 5f 53 42 5f 50 43 49 .....9\/._SB_PCI f6e0: 30 52 50 30 33 48 50 43 53 5c 2f 04 5f 53 42 5f 0RP03HPCS\/._SB_ f6f0: 50 43 49 30 52 50 30 33 48 50 48 4b 86 5c 2f 03 PCI0RP03HPHK.\/. f700: 5f 53 42 5f 50 43 49 30 52 50 30 33 0a 00 14 4f _SB_PCI0RP03...O f710: 1a 5f 4c 30 39 00 a0 49 06 5c 2f 04 5f 53 42 5f ._L09..I.\/._SB_ f720: 50 43 49 30 52 50 30 31 50 4d 45 53 a2 41 04 5c PCI0RP01PMES.A.\ f730: 2f 04 5f 53 42 5f 50 43 49 30 52 50 30 31 50 4d /._SB_PCI0RP01PM f740: 45 53 70 0a 01 5c 2f 04 5f 53 42 5f 50 43 49 30 ESp..\/._SB_PCI0 f750: 52 50 30 31 50 4d 45 53 70 0a 01 5c 2f 04 5f 53 RP01PMESp..\/._S f760: 42 5f 50 43 49 30 52 50 30 31 50 4d 43 53 86 5c B_PCI0RP01PMCS.\ f770: 2f 03 5f 53 42 5f 50 43 49 30 52 50 30 31 0a 02 /._SB_PCI0RP01.. f780: a0 49 06 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 .I.\/._SB_PCI0RP f790: 30 32 50 4d 45 53 a2 41 04 5c 2f 04 5f 53 42 5f 02PMES.A.\/._SB_ f7a0: 50 43 49 30 52 50 30 32 50 4d 45 53 70 0a 01 5c PCI0RP02PMESp..\ f7b0: 2f 04 5f 53 42 5f 50 43 49 30 52 50 30 32 50 4d /._SB_PCI0RP02PM f7c0: 45 53 70 0a 01 5c 2f 04 5f 53 42 5f 50 43 49 30 ESp..\/._SB_PCI0 f7d0: 52 50 30 32 50 4d 43 53 86 5c 2f 03 5f 53 42 5f RP02PMCS.\/._SB_ f7e0: 50 43 49 30 52 50 30 32 0a 02 a0 49 06 5c 2f 04 PCI0RP02...I.\/. f7f0: 5f 53 42 5f 50 43 49 30 52 50 30 34 50 4d 45 53 _SB_PCI0RP04PMES f800: a2 41 04 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 .A.\/._SB_PCI0RP f810: 30 34 50 4d 45 53 70 0a 01 5c 2f 04 5f 53 42 5f 04PMESp..\/._SB_ f820: 50 43 49 30 52 50 30 34 50 4d 45 53 70 0a 01 5c PCI0RP04PMESp..\ f830: 2f 04 5f 53 42 5f 50 43 49 30 52 50 30 34 50 4d /._SB_PCI0RP04PM f840: 43 53 86 5c 2f 03 5f 53 42 5f 50 43 49 30 52 50 CS.\/._SB_PCI0RP f850: 30 34 0a 02 a0 49 06 5c 2f 04 5f 53 42 5f 50 43 04...I.\/._SB_PC f860: 49 30 52 50 30 36 50 4d 45 53 a2 41 04 5c 2f 04 I0RP06PMES.A.\/. f870: 5f 53 42 5f 50 43 49 30 52 50 30 36 50 4d 45 53 _SB_PCI0RP06PMES f880: 70 0a 01 5c 2f 04 5f 53 42 5f 50 43 49 30 52 50 p..\/._SB_PCI0RP f890: 30 36 50 4d 45 53 70 0a 01 5c 2f 04 5f 53 42 5f 06PMESp..\/._SB_ f8a0: 50 43 49 30 52 50 30 36 50 4d 43 53 86 5c 2f 03 PCI0RP06PMCS.\/. f8b0: 5f 53 42 5f 50 43 49 30 52 50 30 36 0a 02 10 4f _SB_PCI0RP06...O f8c0: 06 5c 2f 03 5f 53 42 5f 50 43 49 30 53 42 52 47 .\/._SB_PCI0SBRG f8d0: 5b 80 52 58 34 30 02 0a 40 0a 10 5b 81 0e 52 58 [.RX40..@..[..RX f8e0: 34 30 01 00 40 06 47 50 4c 4b 01 5b 80 52 58 41 40..@.GPLK.[.RXA f8f0: 30 02 0a a0 0a 20 5b 81 36 52 58 41 30 01 00 09 0.... [.6RXA0... f900: 50 42 4c 56 01 42 43 50 45 01 00 45 07 00 01 50 PBLV.BCPE..E...P f910: 42 4d 53 01 00 01 50 4d 43 53 01 45 43 4e 53 01 BMS...PMCS.ECNS. f920: 00 03 45 43 54 31 10 45 4c 45 4e 01 00 07 10 43 ..ECT1.ELEN....C f930: 44 5c 00 5b 80 53 4d 42 30 01 5c 2e 5f 53 42 5f D\.[.SMB0.\._SB_ f940: 53 4d 42 42 0a 10 5b 81 48 04 53 4d 42 30 01 48 SMBB..[.H.SMB0.H f950: 53 54 53 08 53 53 54 53 08 48 53 54 43 08 48 43 STS.SSTS.HSTC.HC f960: 4d 44 08 48 41 44 52 08 48 44 54 30 08 48 44 54 MD.HADR.HDT0.HDT f970: 31 08 42 4c 4b 44 08 53 50 45 43 08 53 52 43 56 1.BLKD.SPEC.SRCV f980: 08 53 4c 56 44 10 41 55 58 53 08 41 55 58 43 08 .SLVD.AUXS.AUXC. f990: 08 52 42 55 46 11 03 0a 20 14 22 48 42 53 59 00 .RBUF... ."HBSY. f9a0: 70 0c ff ff 0f 00 60 a2 12 60 7b 48 53 54 53 0a p.....`..`{HSTS. f9b0: 01 61 a0 05 92 61 a4 00 76 60 a4 01 14 29 57 54 .a...a..v`...)WT f9c0: 53 42 00 70 0c ff ff 0f 00 60 a2 19 60 76 60 7b SB.p.....`..`v`{ f9d0: 48 53 54 53 0a 1e 61 a0 07 93 61 0a 02 a4 01 a0 HSTS..a...a..... f9e0: 04 61 a4 00 a4 00 5b 01 5c 50 34 53 4d 00 14 4f .a....[.\P4SM..O f9f0: 05 53 42 59 54 0a 5b 23 5c 50 34 53 4d ff ff 70 .SBYT.[#\P4SM..p fa00: 41 55 58 43 60 70 0a 00 41 55 58 43 70 68 48 41 AUXC`p..AUXCphHA fa10: 44 52 70 69 48 43 4d 44 70 0a ff 48 53 54 53 70 DRpiHCMDp..HSTSp fa20: 0a 44 48 53 54 43 a0 14 57 54 53 42 70 60 41 55 .DHSTC..WTSBp`AU fa30: 58 43 5b 27 5c 50 34 53 4d a4 01 a1 10 70 60 41 XC['\P4SM....p`A fa40: 55 58 43 5b 27 5c 50 34 53 4d a4 00 a4 ff 14 4d UXC['\P4SM.....M fa50: 05 57 42 59 54 0b 5b 23 5c 50 34 53 4d ff ff 70 .WBYT.[#\P4SM..p fa60: 0a 05 60 a2 3f 60 a0 07 48 42 53 59 76 60 a1 34 ..`.?`..HBSYv`.4 fa70: 70 68 48 41 44 52 70 69 48 43 4d 44 70 6a 48 44 phHADRpiHCMDpjHD fa80: 54 30 70 0a ff 48 53 54 53 70 0a 48 48 53 54 43 T0p..HSTSp.HHSTC fa90: a0 0e 57 54 53 42 5b 27 5c 50 34 53 4d a4 01 a1 ..WTSB['\P4SM... faa0: 03 76 60 5b 27 5c 50 34 53 4d a4 ff 14 44 07 57 .v`['\P4SM...D.W fab0: 57 52 44 0b 5b 23 5c 50 34 53 4d ff ff 70 0a 05 WRD.[#\P4SM..p.. fac0: 60 a2 46 05 60 a0 07 48 42 53 59 76 60 a1 4a 04 `.F.`..HBSYv`.J. fad0: 70 68 48 41 44 52 70 69 48 43 4d 44 7b 6a 0a ff phHADRpiHCMD{j.. fae0: 61 7a 6a 0a 08 62 7b 62 0a ff 62 70 62 48 44 54 azj..b{b..bpbHDT faf0: 30 70 61 48 44 54 31 70 0a ff 48 53 54 53 70 0a 0paHDT1p..HSTSp. fb00: 4c 48 53 54 43 a0 0e 57 54 53 42 5b 27 5c 50 34 LHSTC..WTSB['\P4 fb10: 53 4d a4 01 a1 03 76 60 5b 27 5c 50 34 53 4d a4 SM....v`['\P4SM. fb20: ff 14 41 09 57 42 4c 4b 0b 5b 23 5c 50 34 53 4d ..A.WBLK.[#\P4SM fb30: ff ff 70 0a 05 60 a2 43 07 60 a0 07 48 42 53 59 ..p..`.C.`..HBSY fb40: 76 60 a1 47 06 7d 41 55 58 43 0a 02 41 55 58 43 v`.G.}AUXC..AUXC fb50: 70 68 48 41 44 52 70 69 48 43 4d 44 70 48 53 54 phHADRpiHCMDpHST fb60: 43 61 70 6a 62 70 0a 00 61 a2 13 62 70 83 88 52 Capjbp..a..bp..R fb70: 42 55 46 61 00 42 4c 4b 44 76 62 75 61 70 6a 48 BUFa.BLKDvbuapjH fb80: 44 54 30 70 48 53 54 43 61 70 0a ff 48 53 54 53 DT0pHSTCap..HSTS fb90: 70 0a 54 48 53 54 43 a0 0e 57 54 53 42 5b 27 5c p.THSTC..WTSB['\ fba0: 50 34 53 4d a4 01 a1 03 76 60 5b 27 5c 50 34 53 P4SM....v`['\P4S fbb0: 4d a4 ff 14 4c 05 52 53 42 54 0a 5b 23 5c 50 34 M...L.RSBT.[#\P4 fbc0: 53 4d ff ff 70 0a 05 60 a2 3e 60 a0 07 48 42 53 SM..p..`.>`..HBS fbd0: 59 76 60 a1 33 7d 68 0a 01 48 41 44 52 70 69 48 Yv`.3}h..HADRpiH fbe0: 43 4d 44 70 0a ff 48 53 54 53 70 0a 44 48 53 54 CMDp..HSTSp.DHST fbf0: 43 a0 11 57 54 53 42 5b 27 5c 50 34 53 4d a4 48 C..WTSB['\P4SM.H fc00: 44 54 30 a1 03 76 60 5b 27 5c 50 34 53 4d a4 ff DT0..v`['\P4SM.. fc10: 14 4c 05 52 42 59 54 0a 5b 23 5c 50 34 53 4d ff .L.RBYT.[#\P4SM. fc20: ff 70 0a 05 60 a2 3e 60 a0 07 48 42 53 59 76 60 .p..`.>`..HBSYv` fc30: a1 33 7d 68 0a 01 48 41 44 52 70 69 48 43 4d 44 .3}h..HADRpiHCMD fc40: 70 0a ff 48 53 54 53 70 0a 48 48 53 54 43 a0 11 p..HSTSp.HHSTC.. fc50: 57 54 53 42 5b 27 5c 50 34 53 4d a4 48 44 54 30 WTSB['\P4SM.HDT0 fc60: a1 03 76 60 5b 27 5c 50 34 53 4d a4 ff 14 40 07 ..v`['\P4SM...@. fc70: 52 57 52 44 0a 5b 23 5c 50 34 53 4d ff ff 70 0a RWRD.[#\P4SM..p. fc80: 05 60 a2 42 05 60 a0 07 48 42 53 59 76 60 a1 46 .`.B.`..HBSYv`.F fc90: 04 7d 68 0a 01 48 41 44 52 70 69 48 43 4d 44 70 .}h..HADRpiHCMDp fca0: 0a ff 48 53 54 53 70 0a 4c 48 53 54 43 a0 23 57 ..HSTSp.LHSTC.#W fcb0: 54 53 42 70 48 44 54 30 61 79 61 0a 08 61 70 48 TSBpHDT0aya..apH fcc0: 44 54 31 62 72 61 62 61 5b 27 5c 50 34 53 4d a4 DT1braba['\P4SM. fcd0: 61 a1 03 76 60 5b 27 5c 50 34 53 4d a4 ff 14 43 a..v`['\P4SM...C fce0: 09 52 42 4c 4b 0b 5b 23 5c 50 34 53 4d ff ff 70 .RBLK.[#\P4SM..p fcf0: 0a 05 60 a2 45 07 60 a0 07 48 42 53 59 76 60 a1 ..`.E.`..HBSYv`. fd00: 49 06 7d 41 55 58 43 0a 02 41 55 58 43 7d 68 0a I.}AUXC..AUXC}h. fd10: 01 48 41 44 52 70 69 48 43 4d 44 70 0a ff 48 53 .HADRpiHCMDp..HS fd20: 54 53 70 0a 54 48 53 54 43 a0 3b 57 54 53 42 70 TSp.THSTC.;WTSBp fd30: 48 53 54 43 61 70 48 44 54 30 62 70 62 63 70 0a HSTCapHDT0bpbcp. fd40: 00 52 42 55 46 70 0a 00 61 a2 12 62 70 42 4c 4b .RBUFp..a..bpBLK fd50: 44 88 52 42 55 46 61 00 76 62 75 61 5b 27 5c 50 D.RBUFa.vbua['\P fd60: 34 53 4d a4 63 a1 03 76 60 5b 27 5c 50 34 53 4d 4SM.c..v`['\P4SM fd70: a4 ff 10 43 1c 5c 5f 47 50 45 14 18 5f 4c 30 33 ...C.\_GPE.._L03 fd80: 08 86 5c 2f 03 5f 53 42 5f 50 43 49 30 55 53 42 ..\/._SB_PCI0USB fd90: 31 0a 02 14 18 5f 4c 30 34 08 86 5c 2f 03 5f 53 1...._L04..\/._S fda0: 42 5f 50 43 49 30 55 53 42 32 0a 02 14 18 5f 4c B_PCI0USB2...._L fdb0: 30 43 08 86 5c 2f 03 5f 53 42 5f 50 43 49 30 55 0C..\/._SB_PCI0U fdc0: 53 42 33 0a 02 14 18 5f 4c 30 45 08 86 5c 2f 03 SB3...._L0E..\/. fdd0: 5f 53 42 5f 50 43 49 30 55 53 42 34 0a 02 14 18 _SB_PCI0USB4.... fde0: 5f 4c 30 35 08 86 5c 2f 03 5f 53 42 5f 50 43 49 _L05..\/._SB_PCI fdf0: 30 55 53 42 35 0a 02 14 2a 5f 4c 32 30 08 86 5c 0USB5...*_L20..\ fe00: 2f 03 5f 53 42 5f 50 43 49 30 55 53 42 36 0a 02 /._SB_PCI0USB6.. fe10: 86 5c 2f 03 5f 53 42 5f 50 43 49 30 55 53 42 37 .\/._SB_PCI0USB7 fe20: 0a 02 14 2a 5f 4c 30 44 08 86 5c 2f 03 5f 53 42 ...*_L0D..\/._SB fe30: 5f 50 43 49 30 45 48 43 31 0a 02 86 5c 2f 03 5f _PCI0EHC1...\/._ fe40: 53 42 5f 50 43 49 30 45 48 43 32 0a 02 14 18 5f SB_PCI0EHC2...._ fe50: 4c 30 38 08 86 5c 2f 03 5f 53 42 5f 50 43 49 30 L08..\/._SB_PCI0 fe60: 48 44 45 46 0a 02 14 35 5f 4c 30 42 08 a0 2c 5c HDEF...5_L0B..,\ fe70: 50 4d 45 57 86 5c 2e 5f 53 42 5f 50 43 49 30 0a PMEW.\._SB_PCI0. fe80: 02 86 5c 2f 03 5f 53 42 5f 50 43 49 30 52 50 30 ..\/._SB_PCI0RP0 fe90: 32 0a 02 70 00 5c 50 4d 45 57 a1 01 14 49 09 5f 2..p.\PMEW...I._ fea0: 4c 31 33 00 a0 0c 93 50 46 4c 56 46 44 54 50 a4 L13....PFLVFDTP. feb0: 00 a0 42 08 5c 2f 05 5f 53 42 5f 50 43 49 30 49 ..B.\/._SB_PCI0I fec0: 44 45 30 50 52 54 32 4f 46 4c 47 70 5c 2f 04 5f DE0PRT2OFLGp\/._ fed0: 53 42 5f 50 43 49 30 53 42 52 47 47 50 4c 4b 67 SB_PCI0SBRGGPLKg fee0: 70 0a 00 5c 2f 04 5f 53 42 5f 50 43 49 30 53 42 p..\/._SB_PCI0SB fef0: 52 47 47 50 4c 4b 70 0a 00 47 50 45 33 7b 47 4c RGGPLKp..GPE3{GL ff00: 30 38 0a ef 47 4c 30 38 70 67 5c 2f 04 5f 53 42 08..GL08pg\/._SB ff10: 5f 50 43 49 30 53 42 52 47 47 50 4c 4b 5b 22 0b _PCI0SBRGGPLK[". ff20: 20 03 86 5c 2f 03 5f 53 42 5f 50 43 49 30 49 44 ..\/._SB_PCI0ID ff30: 45 30 0a 82 a4 00 10 4f 1e 5c 2f 03 5f 53 42 5f E0.....O.\/._SB_ ff40: 50 43 49 30 45 48 43 31 5b 82 4c 1d 52 48 55 42 PCI0EHC1[.L.RHUB ff50: 08 5f 41 44 52 0a 00 5b 82 4d 1c 50 52 54 31 08 ._ADR..[.M.PRT1. ff60: 5f 41 44 52 0a 01 08 5f 55 50 43 12 0a 04 0a 00 _ADR..._UPC..... ff70: 0a ff 0a 00 0a 00 5b 82 34 50 52 54 31 08 5f 41 ......[.4PRT1._A ff80: 44 52 0a 01 14 13 5f 55 50 43 00 5c 4f 55 50 43 DR...._UPC.\OUPC ff90: 0a 00 a4 5c 42 55 50 43 14 13 5f 50 4c 44 00 5c ...\BUPC.._PLD.\ ffa0: 4f 50 4c 44 0a 00 a4 5c 42 50 4c 44 5b 82 34 50 OPLD...\BPLD[.4P ffb0: 52 54 32 08 5f 41 44 52 0a 02 14 13 5f 55 50 43 RT2._ADR...._UPC ffc0: 00 5c 4f 55 50 43 0a 01 a4 5c 42 55 50 43 14 13 .\OUPC...\BUPC.. ffd0: 5f 50 4c 44 00 5c 4f 50 4c 44 0a 01 a4 5c 42 50 _PLD.\OPLD...\BP ffe0: 4c 44 5b 82 34 50 52 54 33 08 5f 41 44 52 0a 03 LD[.4PRT3._ADR.. fff0: 14 13 5f 55 50 43 00 5c 4f 55 50 43 0a 02 a4 5c .._UPC.\OUPC...\ 10000: 42 55 50 43 14 13 5f 50 4c 44 00 5c 4f 50 4c 44 BUPC.._PLD.\OPLD 10010: 0a 02 a4 5c 42 50 4c 44 5b 82 34 50 52 54 34 08 ...\BPLD[.4PRT4. 10020: 5f 41 44 52 0a 04 14 13 5f 55 50 43 00 5c 4f 55 _ADR...._UPC.\OU 10030: 50 43 0a 03 a4 5c 42 55 50 43 14 13 5f 50 4c 44 PC...\BUPC.._PLD 10040: 00 5c 4f 50 4c 44 0a 03 a4 5c 42 50 4c 44 5b 82 .\OPLD...\BPLD[. 10050: 34 50 52 54 35 08 5f 41 44 52 0a 05 14 13 5f 55 4PRT5._ADR...._U 10060: 50 43 00 5c 4f 55 50 43 0a 04 a4 5c 42 55 50 43 PC.\OUPC...\BUPC 10070: 14 13 5f 50 4c 44 00 5c 4f 50 4c 44 0a 04 a4 5c .._PLD.\OPLD...\ 10080: 42 50 4c 44 5b 82 34 50 52 54 36 08 5f 41 44 52 BPLD[.4PRT6._ADR 10090: 0a 06 14 13 5f 55 50 43 00 5c 4f 55 50 43 0a 05 ...._UPC.\OUPC.. 100a0: a4 5c 42 55 50 43 14 13 5f 50 4c 44 00 5c 4f 50 .\BUPC.._PLD.\OP 100b0: 4c 44 0a 05 a4 5c 42 50 4c 44 5b 82 34 50 52 54 LD...\BPLD[.4PRT 100c0: 37 08 5f 41 44 52 0a 07 14 13 5f 55 50 43 00 5c 7._ADR...._UPC.\ 100d0: 4f 55 50 43 0a 06 a4 5c 42 55 50 43 14 13 5f 50 OUPC...\BUPC.._P 100e0: 4c 44 00 5c 4f 50 4c 44 0a 06 a4 5c 42 50 4c 44 LD.\OPLD...\BPLD 100f0: 5b 82 34 50 52 54 38 08 5f 41 44 52 0a 08 14 13 [.4PRT8._ADR.... 10100: 5f 55 50 43 00 5c 4f 55 50 43 0a 07 a4 5c 42 55 _UPC.\OUPC...\BU 10110: 50 43 14 13 5f 50 4c 44 00 5c 4f 50 4c 44 0a 07 PC.._PLD.\OPLD.. 10120: a4 5c 42 50 4c 44 10 43 18 5c 2f 03 5f 53 42 5f .\BPLD.C.\/._SB_ 10130: 50 43 49 30 45 48 43 32 5b 82 40 17 52 48 55 42 PCI0EHC2[.@.RHUB 10140: 08 5f 41 44 52 0a 00 5b 82 41 16 50 52 54 31 08 ._ADR..[.A.PRT1. 10150: 5f 41 44 52 0a 01 08 5f 55 50 43 12 0a 04 0a 00 _ADR..._UPC..... 10160: 0a ff 0a 00 0a 00 5b 82 34 50 52 54 31 08 5f 41 ......[.4PRT1._A 10170: 44 52 0a 01 14 13 5f 55 50 43 00 5c 4f 55 50 43 DR...._UPC.\OUPC 10180: 0a 08 a4 5c 42 55 50 43 14 13 5f 50 4c 44 00 5c ...\BUPC.._PLD.\ 10190: 4f 50 4c 44 0a 08 a4 5c 42 50 4c 44 5b 82 34 50 OPLD...\BPLD[.4P 101a0: 52 54 32 08 5f 41 44 52 0a 02 14 13 5f 55 50 43 RT2._ADR...._UPC 101b0: 00 5c 4f 55 50 43 0a 09 a4 5c 42 55 50 43 14 13 .\OUPC...\BUPC.. 101c0: 5f 50 4c 44 00 5c 4f 50 4c 44 0a 09 a4 5c 42 50 _PLD.\OPLD...\BP 101d0: 4c 44 5b 82 34 50 52 54 33 08 5f 41 44 52 0a 03 LD[.4PRT3._ADR.. 101e0: 14 13 5f 55 50 43 00 5c 4f 55 50 43 0a 0a a4 5c .._UPC.\OUPC...\ 101f0: 42 55 50 43 14 13 5f 50 4c 44 00 5c 4f 50 4c 44 BUPC.._PLD.\OPLD 10200: 0a 0a a4 5c 42 50 4c 44 5b 82 34 50 52 54 34 08 ...\BPLD[.4PRT4. 10210: 5f 41 44 52 0a 04 14 13 5f 55 50 43 00 5c 4f 55 _ADR...._UPC.\OU 10220: 50 43 0a 0b a4 5c 42 55 50 43 14 13 5f 50 4c 44 PC...\BUPC.._PLD 10230: 00 5c 4f 50 4c 44 0a 0b a4 5c 42 50 4c 44 5b 82 .\OPLD...\BPLD[. 10240: 34 50 52 54 35 08 5f 41 44 52 0a 05 14 13 5f 55 4PRT5._ADR...._U 10250: 50 43 00 5c 4f 55 50 43 0a 0c a4 5c 42 55 50 43 PC.\OUPC...\BUPC 10260: 14 13 5f 50 4c 44 00 5c 4f 50 4c 44 0a 0c a4 5c .._PLD.\OPLD...\ 10270: 42 50 4c 44 5b 82 34 50 52 54 36 08 5f 41 44 52 BPLD[.4PRT6._ADR 10280: 0a 06 14 13 5f 55 50 43 00 5c 4f 55 50 43 0a 0d ...._UPC.\OUPC.. 10290: a4 5c 42 55 50 43 14 13 5f 50 4c 44 00 5c 4f 50 .\BUPC.._PLD.\OP 102a0: 4c 44 0a 0d a4 5c 42 50 4c 44 10 49 0d 5c 00 08 LD...\BPLD.I.\.. 102b0: 43 4e 54 42 11 11 0a 0e ff ff ff 00 00 00 00 00 CNTB............ 102c0: ff ff 00 ff ff 00 08 56 49 53 42 11 11 0a 0e 01 .......VISB..... 102d0: 01 01 00 00 00 00 00 00 00 00 00 00 00 08 53 48 ..............SH 102e0: 50 42 11 11 0a 0e 07 07 07 07 07 07 07 07 07 07 PB.............. 102f0: 07 07 07 07 08 42 55 50 43 12 0a 04 0a ff 0a 00 .....BUPC....... 10300: 0a 00 0a 00 08 42 50 4c 44 11 07 0a 10 81 00 31 .....BPLD......1 10310: 00 14 1a 4f 55 50 43 09 70 83 88 43 4e 54 42 68 ...OUPC.p..CNTBh 10320: 00 60 70 60 88 42 55 50 43 0a 00 00 14 47 05 4f .`p`.BUPC....G.O 10330: 50 4c 44 09 70 83 88 56 49 53 42 68 00 60 70 83 PLD.p..VISBh.`p. 10340: 88 42 50 4c 44 0a 08 00 61 7b 61 0a fe 61 7d 61 .BPLD...a{a..a}a 10350: 60 61 70 61 88 42 50 4c 44 0a 08 00 70 83 88 53 `apa.BPLD...p..S 10360: 48 50 42 68 00 60 70 83 88 42 50 4c 44 0a 09 00 HPBh.`p..BPLD... 10370: 61 7b 61 0a c3 61 7d 61 60 61 70 61 88 42 50 4c a{a..a}a`apa.BPL 10380: 44 0a 09 00 10 45 49 5c 00 14 1e 4c 49 4d 54 00 D....EI\...LIMT. 10390: 74 5c 2e 5f 53 42 5f 43 50 55 50 5c 2e 5f 53 42 t\._SB_CPUP\._SB 103a0: 5f 53 4c 4d 54 60 a4 60 08 4c 43 44 42 0a 00 14 _SLMT`.`.LCDB... 103b0: 2e 50 50 52 4a 09 a0 10 94 68 0a 03 5c 53 47 50 .PPRJ....h..\SGP 103c0: 4c 0a 18 0a 01 0a 00 5c 2f 05 5f 53 42 5f 50 43 L......\/._SB_PC 103d0: 49 30 52 50 30 34 58 48 43 49 5f 4f 4e 5f 14 11 I0RP04XHCI_ON_.. 103e0: 50 52 4a 53 09 5c 53 47 50 4c 0a 0f 0a 01 0a 00 PRJS.\SGPL...... 103f0: 14 1d 50 52 4a 57 09 5c 2f 05 5f 53 42 5f 50 43 ..PRJW.\/._SB_PC 10400: 49 30 53 42 52 47 45 43 30 5f 53 54 42 52 14 20 I0SBRGEC0_STBR. 10410: 47 4c 49 44 08 a4 5c 2f 05 5f 53 42 5f 50 43 49 GLID..\/._SB_PCI 10420: 30 53 42 52 47 45 43 30 5f 52 50 49 4e 0a 46 14 0SBRGEC0_RPIN.F. 10430: 06 54 4c 49 44 08 14 06 54 47 41 43 08 14 06 54 .TLID...TGAC...T 10440: 47 44 43 09 14 06 46 43 54 52 0b 14 10 4f 57 47 GDC...FCTR...OWG 10450: 44 09 5c 53 47 50 4c 0a 16 0a 01 68 14 38 4f 57 D.\SGPL....h.8OW 10460: 4c 44 09 70 68 5c 2e 5f 53 42 5f 57 52 53 54 7f LD.ph\._SB_WRST. 10470: 68 0a 01 68 a0 20 93 90 5c 2f 03 5f 53 42 5f 41 h..h. ..\/._SB_A 10480: 54 4b 44 57 41 50 46 0a 05 0a 00 5c 53 47 50 4c TKDWAPF....\SGPL 10490: 0a 1c 0a 01 68 14 26 4f 42 54 44 09 70 68 5c 2e ....h.&OBTD.ph\. 104a0: 5f 53 42 5f 42 52 53 54 5c 53 47 50 4c 0a 39 0a _SB_BRST\SGPL.9. 104b0: 01 68 5c 53 47 50 4c 0a 0f 0a 01 68 14 45 05 4f .h\SGPL....h.E.O 104c0: 55 57 44 09 70 68 5c 2e 5f 53 42 5f 55 57 53 54 UWD.ph\._SB_UWST 104d0: a0 1f 68 70 5c 2f 05 5f 53 42 5f 50 43 49 30 53 ..hp\/._SB_PCI0S 104e0: 42 52 47 45 43 30 5f 53 54 38 37 0a 40 0a ff 60 BRGEC0_ST87.@..` 104f0: a1 1e 70 5c 2f 05 5f 53 42 5f 50 43 49 30 53 42 ..p\/._SB_PCI0SB 10500: 52 47 45 43 30 5f 53 54 38 37 0a 20 0a ff 60 a4 RGEC0_ST87. ..`. 10510: 0a 01 14 45 05 4f 57 4d 44 09 70 68 5c 2e 5f 53 ...E.OWMD.ph\._S 10520: 42 5f 57 4d 53 54 a0 1f 68 70 5c 2f 05 5f 53 42 B_WMST..hp\/._SB 10530: 5f 50 43 49 30 53 42 52 47 45 43 30 5f 53 54 38 _PCI0SBRGEC0_ST8 10540: 37 0a 40 0a ff 60 a1 1e 70 5c 2f 05 5f 53 42 5f 7.@..`..p\/._SB_ 10550: 50 43 49 30 53 42 52 47 45 43 30 5f 53 54 38 37 PCI0SBRGEC0_ST87 10560: 0a 20 0a ff 60 a4 0a 01 14 45 05 4f 47 50 44 09 . ..`....E.OGPD. 10570: 70 68 5c 2e 5f 53 42 5f 47 50 53 54 a0 1f 68 70 ph\._SB_GPST..hp 10580: 5c 2f 05 5f 53 42 5f 50 43 49 30 53 42 52 47 45 \/._SB_PCI0SBRGE 10590: 43 30 5f 53 54 38 37 0a 40 0a ff 60 a1 1e 70 5c C0_ST87.@..`..p\ 105a0: 2f 05 5f 53 42 5f 50 43 49 30 53 42 52 47 45 43 /._SB_PCI0SBRGEC 105b0: 30 5f 53 54 38 37 0a 20 0a ff 60 a4 0a 01 14 45 0_ST87. ..`....E 105c0: 05 4f 54 47 44 09 70 68 5c 2e 5f 53 42 5f 54 47 .OTGD.ph\._SB_TG 105d0: 53 54 a0 1f 68 70 5c 2f 05 5f 53 42 5f 50 43 49 ST..hp\/._SB_PCI 105e0: 30 53 42 52 47 45 43 30 5f 53 54 38 37 0a 40 0a 0SBRGEC0_ST87.@. 105f0: ff 60 a1 1e 70 5c 2f 05 5f 53 42 5f 50 43 49 30 .`..p\/._SB_PCI0 10600: 53 42 52 47 45 43 30 5f 53 54 38 37 0a 20 0a ff SBRGEC0_ST87. .. 10610: 60 a4 0a 01 14 40 08 4f 48 57 52 08 70 00 60 a0 `....@.OHWR.p.`. 10620: 1d 5c 2f 05 5f 53 42 5f 50 43 49 30 52 50 30 32 .\/._SB_PCI0RP02 10630: 57 4c 41 4e 4d 50 44 50 7d 60 0a 80 60 a0 11 5c WLANMPDP}`..`..\ 10640: 2e 5f 53 42 5f 42 54 44 50 7d 60 0b 00 01 60 a0 ._SB_BTDP}`...`. 10650: 10 5c 2e 5f 53 42 5f 55 57 44 50 7d 60 0a 08 60 .\._SB_UWDP}`..` 10660: a0 10 5c 2e 5f 53 42 5f 57 4d 44 50 7d 60 0a 10 ..\._SB_WMDP}`.. 10670: 60 a0 10 5c 2e 5f 53 42 5f 47 50 44 50 7d 60 0a `..\._SB_GPDP}`. 10680: 20 60 a0 10 5c 2e 5f 53 42 5f 54 47 44 50 7d 60 `..\._SB_TGDP}` 10690: 0a 40 60 a4 60 14 43 07 4f 52 53 54 08 70 0a 00 .@`.`.C.ORST.p.. 106a0: 60 a0 10 5c 2e 5f 53 42 5f 57 52 53 54 7d 60 0a `..\._SB_WRST}`. 106b0: 01 60 a0 10 5c 2e 5f 53 42 5f 42 52 53 54 7d 60 .`..\._SB_BRST}` 106c0: 0a 02 60 a0 10 5c 2e 5f 53 42 5f 55 57 53 54 7d ..`..\._SB_UWST} 106d0: 60 0a 04 60 a0 10 5c 2e 5f 53 42 5f 57 4d 53 54 `..`..\._SB_WMST 106e0: 7d 60 0a 08 60 a0 10 5c 2e 5f 53 42 5f 47 50 53 }`..`..\._SB_GPS 106f0: 54 7d 60 0a 10 60 a0 10 5c 2e 5f 53 42 5f 54 47 T}`..`..\._SB_TG 10700: 53 54 7d 60 0a 20 60 a4 60 14 20 47 42 54 4c 08 ST}`. `.`. GBTL. 10710: a4 5c 2f 05 5f 53 42 5f 50 43 49 30 53 42 52 47 .\/._SB_PCI0SBRG 10720: 45 43 30 5f 52 50 49 4e 0a 73 14 20 53 42 54 4c EC0_RPIN.s. SBTL 10730: 09 5c 2f 05 5f 53 42 5f 50 43 49 30 53 42 52 47 .\/._SB_PCI0SBRG 10740: 45 43 30 5f 53 50 49 4e 0a 73 68 14 08 42 4c 32 EC0_SPIN.sh..BL2 10750: 43 00 a4 00 14 27 53 54 43 46 09 a0 20 93 68 0a C....'STCF.. .h. 10760: 01 5c 2f 05 5f 53 42 5f 50 43 49 30 53 42 52 47 .\/._SB_PCI0SBRG 10770: 45 43 30 5f 46 4e 43 54 0a 84 0a 00 14 0b 4f 54 EC0_FNCT......OT 10780: 47 42 08 70 01 60 a4 60 14 28 44 43 50 53 09 70 GB.p.`.`.(DCPS.p 10790: 5c 2f 05 5f 53 42 5f 50 43 49 30 53 42 52 47 45 \/._SB_PCI0SBRGE 107a0: 43 30 5f 52 50 49 4e 0a 26 60 7f 60 0a 01 60 a4 C0_RPIN.&`.`..`. 107b0: 60 14 28 41 43 50 53 08 70 5c 2f 05 5f 53 42 5f `.(ACPS.p\/._SB_ 107c0: 50 43 49 30 53 42 52 47 45 43 30 5f 52 50 49 4e PCI0SBRGEC0_RPIN 107d0: 0a 24 60 7f 60 0a 01 60 a4 60 14 3f 4f 4c 50 4d .$`.`..`.`.?OLPM 107e0: 08 a0 38 93 5c 2e 5f 53 42 5f 41 43 50 46 0a 00 ..8.\._SB_ACPF.. 107f0: a0 29 92 94 5c 2f 05 5f 53 42 5f 50 43 49 30 53 .)..\/._SB_PCI0S 10800: 42 52 47 45 43 30 5f 42 30 44 43 0b b8 0b 70 01 BRGEC0_B0DC...p. 10810: 5c 2e 5f 53 42 5f 53 4c 4d 54 10 06 5c 5f 47 50 \._SB_SLMT..\_GP 10820: 45 10 14 5c 2f 04 5f 53 42 5f 50 43 49 30 53 42 E..\/._SB_PCI0SB 10830: 52 47 45 43 30 5f 10 41 4e 5c 2f 04 5f 53 42 5f RGEC0_.AN\/._SB_ 10840: 50 43 49 30 50 45 47 30 47 46 58 30 5b 80 56 53 PCI0PEG0GFX0[.VS 10850: 49 44 02 0a 00 0a 04 5b 81 0b 56 53 49 44 01 52 ID.....[..VSID.R 10860: 45 47 30 20 08 50 43 54 47 12 02 0b 14 18 50 52 EG0 .PCTG.....PR 10870: 53 54 00 a0 0d 93 52 45 47 30 0c ff ff ff ff a4 ST....REG0...... 10880: 00 a1 03 a4 01 08 55 50 44 4e 01 08 4e 58 54 44 ......UPDN..NXTD 10890: 0a 01 08 4c 43 44 4d 0a 01 08 43 52 54 4d 0a 02 ...LCDM...CRTM.. 108a0: 08 54 56 4f 4d 0a 04 08 44 56 49 4d 0a 08 08 48 .TVOM...DVIM...H 108b0: 44 4d 4d 0a 10 08 50 41 43 48 00 08 44 4f 4e 45 DMM...PACH..DONE 108c0: 00 08 44 4f 53 46 01 08 42 52 4e 43 00 14 19 5f ..DOSF..BRNC..._ 108d0: 49 4e 49 00 70 44 4f 53 46 5c 2e 5f 53 42 5f 44 INI.pDOSF\._SB_D 108e0: 4f 53 46 47 45 54 44 14 32 5f 44 4f 53 01 7b 68 OSFGETD.2_DOS.{h 108f0: 0a 03 44 4f 53 46 70 44 4f 53 46 5c 2e 5f 53 42 ..DOSFpDOSF\._SB 10900: 5f 44 4f 53 46 70 7a 68 0a 02 00 42 52 4e 43 7b _DOSFpzh...BRNC{ 10910: 42 52 4e 43 0a 01 42 52 4e 43 08 44 4f 44 50 12 BRNC..BRNC.DODP. 10920: 11 03 0c 00 01 01 00 0c 10 01 01 00 0c 10 00 ff ................ 10930: ff 14 40 06 5f 44 4f 44 00 a0 43 05 92 50 41 43 ..@._DOD..C..PAC 10940: 48 a0 28 93 5c 2e 5f 53 42 5f 56 47 41 46 0a 02 H.(.\._SB_VGAF.. 10950: 70 0b 10 02 88 44 4f 44 50 89 44 4f 44 50 01 0c p....DODP.DODP.. 10960: 10 00 ff ff 00 0a 00 0a 00 00 a1 1b 70 0b 21 01 ............p.!. 10970: 88 44 4f 44 50 89 44 4f 44 50 01 0c 10 00 ff ff .DODP.DODP...... 10980: 00 0a 00 0a 00 00 70 0a 01 50 41 43 48 a4 44 4f ......p..PACH.DO 10990: 44 50 5b 82 4a 05 43 52 54 44 08 5f 41 44 52 0b DP[.J.CRTD._ADR. 109a0: 00 01 14 24 5f 44 43 53 00 70 5c 2e 5f 53 42 5f ...$_DCS.p\._SB_ 109b0: 41 56 4c 44 60 a0 0e 60 a0 0b 7b 60 43 52 54 4d AVLD`..`..{`CRTM 109c0: 00 a4 0a 1f a4 0a 1d 14 19 5f 44 47 53 00 7b 4e ........._DGS.{N 109d0: 58 54 44 43 52 54 4d 60 a0 05 60 a4 0a 01 a4 0a XTDCRTM`..`..... 109e0: 00 14 0c 5f 44 53 53 01 70 01 44 4f 4e 45 5b 82 ..._DSS.p.DONE[. 109f0: 42 07 48 44 4d 49 14 1f 5f 41 44 52 00 a0 12 93 B.HDMI.._ADR.... 10a00: 5c 2e 5f 53 42 5f 56 47 41 46 0a 02 a4 0b 10 02 \._SB_VGAF...... 10a10: a1 05 a4 0b 21 01 14 24 5f 44 43 53 00 70 5c 2e ....!..$_DCS.p\. 10a20: 5f 53 42 5f 41 56 4c 44 60 a0 0e 60 a0 0b 7b 60 _SB_AVLD`..`..{` 10a30: 48 44 4d 4d 00 a4 0a 1f a4 0a 1d 14 19 5f 44 47 HDMM........._DG 10a40: 53 00 7b 4e 58 54 44 48 44 4d 4d 60 a0 05 60 a4 S.{NXTDHDMM`..`. 10a50: 0a 01 a4 0a 00 14 0c 5f 44 53 53 01 70 01 44 4f ......._DSS.p.DO 10a60: 4e 45 5b 82 47 11 4c 43 44 44 08 5f 41 44 52 0b NE[.G.LCDD._ADR. 10a70: 10 01 14 2a 5f 44 43 53 00 49 53 4d 49 0a 95 70 ...*_DCS.ISMI..p 10a80: 5c 2e 5f 53 42 5f 41 43 54 44 60 a0 0e 60 a0 0b \._SB_ACTD`..`.. 10a90: 7b 60 4c 43 44 4d 00 a4 0a 1f a4 0a 1d 14 19 5f {`LCDM........._ 10aa0: 44 47 53 00 7b 4e 58 54 44 4c 43 44 4d 60 a0 05 DGS.{NXTDLCDM`.. 10ab0: 60 a4 0a 01 a4 0a 00 14 0c 5f 44 53 53 01 70 01 `........_DSS.p. 10ac0: 44 4f 4e 45 14 46 06 5f 42 43 4c 00 70 0a 00 60 DONE.F._BCL.p..` 10ad0: 70 42 52 54 49 64 79 64 0a 04 64 a2 4a 04 95 60 pBRTIdyd..d.J..` 10ae0: 0a 0b 74 0a 0b 60 63 74 63 0a 01 63 70 72 64 63 ..t..`ctc..cprdc 10af0: 00 63 70 83 88 5c 2f 05 5f 53 42 5f 50 43 49 30 .cp..\/._SB_PCI0 10b00: 53 42 52 47 45 43 30 5f 50 57 41 43 63 00 61 70 SBRGEC0_PWACc.ap 10b10: 78 77 61 0a 64 00 0a ff 00 00 62 70 62 88 50 43 xwa.d.....bpb.PC 10b20: 54 47 60 00 75 60 a4 50 43 54 47 08 42 43 42 48 TG`.u`.PCTG.BCBH 10b30: 0a 00 14 36 5f 42 43 4d 01 70 47 43 42 4c 68 60 ...6_BCM.pGCBLh` 10b40: 74 74 0a 0b 0a 01 00 60 5c 2e 5f 53 42 5f 4c 42 tt.....`\._SB_LB 10b50: 54 4e 5c 2f 05 5f 53 42 5f 50 43 49 30 53 42 52 TN\/._SB_PCI0SBR 10b60: 47 45 43 30 5f 53 54 42 52 14 11 5f 42 51 43 00 GEC0_STBR.._BQC. 10b70: a4 5c 2e 5f 53 42 5f 4c 42 54 4e 14 42 07 53 57 .\._SB_LBTN.B.SW 10b80: 48 44 09 70 01 55 50 44 4e a0 1a 93 44 4f 53 46 HD.p.UPDN...DOSF 10b90: 0a 01 70 68 5c 2e 5f 53 42 5f 53 45 54 44 49 53 ..ph\._SB_SETDIS 10ba0: 4d 49 0a 94 a1 49 04 70 68 4e 58 54 44 70 68 5c MI...I.phNXTDph\ 10bb0: 2e 5f 53 42 5f 53 45 54 44 70 00 44 4f 4e 45 86 ._SB_SETDp.DONE. 10bc0: 47 46 58 30 0a 80 70 0b f4 01 60 a2 22 60 47 45 GFX0..p...`."`GE 10bd0: 54 44 a0 13 93 5c 2e 5f 53 42 5f 41 43 54 44 4e TD...\._SB_ACTDN 10be0: 58 54 44 70 00 60 a1 07 5b 22 0a 0a 76 60 14 17 XTDp.`..["..v`.. 10bf0: 47 45 54 44 00 49 53 4d 49 0a 95 a4 5c 2e 5f 53 GETD.ISMI...\._S 10c00: 42 5f 41 43 54 44 14 17 47 4e 44 44 00 49 53 4d B_ACTD..GNDD.ISM 10c10: 49 0a a0 a4 5c 2e 5f 53 42 5f 53 45 54 44 14 45 I...\._SB_SETD.E 10c20: 08 41 44 56 44 00 a0 4f 05 55 50 44 4e 70 00 55 .ADVD..O.UPDNp.U 10c30: 50 44 4e 5c 2f 05 5f 53 42 5f 50 43 49 30 53 42 PDN\/._SB_PCI0SB 10c40: 52 47 45 43 30 5f 53 50 49 4e 0a 40 0a 00 47 45 RGEC0_SPIN.@..GE 10c50: 54 44 5b 22 0a 01 5c 2f 05 5f 53 42 5f 50 43 49 TD["..\/._SB_PCI 10c60: 30 53 42 52 47 45 43 30 5f 53 50 49 4e 0a 40 0a 0SBRGEC0_SPIN.@. 10c70: 01 70 5c 2e 5f 53 42 5f 41 43 54 44 5c 2e 5f 53 .p\._SB_ACTD\._S 10c80: 42 5f 53 45 54 44 47 4e 44 44 70 5c 2e 5f 53 42 B_SETDGNDDp\._SB 10c90: 5f 53 45 54 44 4e 58 54 44 a4 5c 2e 5f 53 42 5f _SETDNXTD.\._SB_ 10ca0: 53 45 54 44 14 0b 47 43 44 53 00 a4 47 45 54 44 SETD..GCDS..GETD 10cb0: 14 08 4e 41 54 4b 00 a4 01 14 0d 55 50 42 4c 00 ..NATK.....UPBL. 10cc0: 86 4c 43 44 44 0a 86 14 0d 44 57 42 4c 00 86 4c .LCDD....DWBL..L 10cd0: 43 44 44 0a 87 14 42 04 47 43 42 4c 01 7b 68 0c CDD...B.GCBL.{h. 10ce0: ff ff ff 7f 68 70 0a 00 60 a2 18 95 60 0a 0b 70 ....hp..`...`..p 10cf0: 83 88 50 43 54 47 60 00 61 a0 06 92 94 61 68 a5 ..PCTG`.a....ah. 10d00: 75 60 a0 0e 92 95 60 0a 0b 70 74 0a 0b 0a 01 00 u`....`..pt..... 10d10: 62 a1 04 70 60 62 a4 62 08 5c 5f 53 30 5f 12 0a b..p`b.b.\_S0_.. 10d20: 04 0a 00 0a 00 0a 00 0a 00 a0 16 53 53 33 5f 08 ...........SS3_. 10d30: 5c 5f 53 33 5f 12 0a 04 0a 05 0a 00 0a 00 0a 00 \_S3_........... 10d40: a0 16 53 53 34 5f 08 5c 5f 53 34 5f 12 0a 04 0a ..SS4_.\_S4_.... 10d50: 06 0a 00 0a 00 0a 00 08 5c 5f 53 35 5f 12 0a 04 ........\_S5_... 10d60: 0a 07 0a 00 0a 00 0a 00 14 23 50 54 53 5f 01 a0 .........#PTS_.. 10d70: 1c 68 5c 2f 04 5f 53 42 5f 50 43 49 30 47 46 58 .h\/._SB_PCI0GFX 10d80: 30 4f 50 54 53 68 5c 4f 45 4d 53 68 14 30 57 41 0OPTSh\OEMSh.0WA 10d90: 4b 5f 01 5c 2f 03 5f 53 42 5f 41 54 4b 44 47 45 K_.\/._SB_ATKDGE 10da0: 4e 57 68 5c 2f 04 5f 53 42 5f 50 43 49 30 47 46 NWh\/._SB_PCI0GF 10db0: 58 30 4f 57 41 4b 68 5c 4f 45 4d 57 68 X0OWAKh\OEMWh FACP @ 0x00000000 0000: 46 41 43 50 f4 00 00 00 04 9c 5f 41 53 55 53 5f FACP......_ASUS_ 0010: 4e 6f 74 65 62 6f 6f 6b 04 20 22 06 4d 53 46 54 Notebook. ".MSFT 0020: 13 00 01 00 40 4e 7e bf 18 90 78 bf 01 02 09 00 ....@N~...x..... 0030: b2 00 00 00 b0 b1 00 80 00 04 00 00 00 00 00 00 ................ 0040: 04 04 00 00 00 00 00 00 50 04 00 00 08 04 00 00 ........P....... 0050: 20 04 00 00 00 00 00 00 04 02 01 04 10 00 00 85 ............... 0060: 65 00 e9 03 00 04 10 00 01 03 7d 7e 32 13 00 00 e.........}~2... 0070: a5 86 03 00 01 08 00 00 f9 0c 00 00 00 00 00 00 ................ 0080: 06 00 00 00 40 4d 7e bf 00 00 00 00 18 90 78 bf ....@M~.......x. 0090: 00 00 00 00 01 20 00 00 00 04 00 00 00 00 00 00 ..... .......... 00a0: 01 00 00 00 00 00 00 00 00 00 00 00 01 10 00 00 ................ 00b0: 04 04 00 00 00 00 00 00 01 00 00 00 00 00 00 00 ................ 00c0: 00 00 00 00 01 08 00 00 50 04 00 00 00 00 00 00 ........P....... 00d0: 01 20 00 00 08 04 00 00 00 00 00 00 01 80 00 00 . .............. 00e0: 20 04 00 00 00 00 00 00 01 00 00 00 00 00 00 00 ............... 00f0: 00 00 00 00 .... FACS @ 0x00000000 0000: 46 41 43 53 40 00 00 00 00 00 00 00 00 00 00 00 FACS@........... 0010: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0020: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0030: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0030: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ HPET @ 0x00000000 0000: 48 50 45 54 38 00 00 00 01 66 5f 41 53 55 53 5f HPET8....f_ASUS_ 0010: 4e 6f 74 65 62 6f 6f 6b 04 20 22 06 41 4d 49 2e Notebook. ".AMI. 0020: 03 00 00 00 01 a7 86 80 00 00 00 00 00 00 d0 fe ................ 0030: 00 00 00 00 00 ee 37 00 ......7. MCFG @ 0x00000000 0000: 4d 43 46 47 3c 00 00 00 01 2f 5f 41 53 55 53 5f MCFG<..../_ASUS_ 0010: 4e 6f 74 65 62 6f 6f 6b 04 20 22 06 4d 53 46 54 Notebook. ".MSFT 0020: 97 00 00 00 00 00 00 00 00 00 00 00 00 00 00 e0 ................ 0030: 00 00 00 00 00 00 00 3f 00 00 00 00 .......?.... SSDT1 @ 0x00000000 0000: 53 53 44 54 55 09 00 00 01 47 50 6d 52 65 66 00 SSDTU....GPmRef. 0010: 43 70 75 30 49 73 74 00 00 30 00 00 49 4e 54 4c Cpu0Ist..0..INTL 0020: 12 11 09 20 10 40 93 5c 2e 5f 50 52 5f 43 50 55 ... .@.\._PR_CPU 0030: 30 14 0c 5f 50 50 43 00 a4 5c 4c 49 4d 54 14 44 0.._PPC..\LIMT.D 0040: 07 5f 50 43 54 00 a0 3e 90 7b 43 46 47 44 01 00 ._PCT..>.{CFGD.. 0050: 7b 50 44 43 30 01 00 a4 12 2c 02 11 14 0a 11 82 {PDC0....,...... 0060: 0c 00 7f 00 00 00 00 00 00 00 00 00 00 00 79 00 ..............y. 0070: 11 14 0a 11 82 0c 00 7f 00 00 00 00 00 00 00 00 ................ 0080: 00 00 00 79 00 a4 12 2c 02 11 14 0a 11 82 0c 00 ...y...,........ 0090: 01 10 00 00 00 10 00 00 00 00 00 00 79 00 11 14 ............y... 00a0: 0a 11 82 0c 00 01 08 00 00 b3 00 00 00 00 00 00 ................ 00b0: 00 79 00 14 19 58 50 53 53 00 a0 0d 7b 50 44 43 .y...XPSS...{PDC 00c0: 30 01 00 a4 4e 50 53 53 a4 53 50 53 53 08 53 50 0...NPSS.SPSS.SP 00d0: 53 53 12 42 1f 0f 12 20 06 0c 99 08 00 00 0c c8 SS.B... ........ 00e0: af 00 00 0c 6e 00 00 00 0c 0a 00 00 00 0c 83 00 ....n........... 00f0: 00 00 0c 00 00 00 00 12 20 06 0c 98 08 00 00 0c ........ ....... 0100: c8 af 00 00 0c 6e 00 00 00 0c 0a 00 00 00 0c 83 .....n.......... 0110: 01 00 00 0c 01 00 00 00 12 20 06 0c d0 07 00 00 ......... ...... 0120: 0c 9d 9a 00 00 0c 6e 00 00 00 0c 0a 00 00 00 0c ......n......... 0130: 83 02 00 00 0c 02 00 00 00 12 20 06 0c 6c 07 00 .......... ..l.. 0140: 00 0c 0b 92 00 00 0c 6e 00 00 00 0c 0a 00 00 00 .......n........ 0150: 0c 83 03 00 00 0c 03 00 00 00 12 20 06 0c 08 07 ........... .... 0160: 00 00 0c f6 87 00 00 0c 6e 00 00 00 0c 0a 00 00 ........n....... 0170: 00 0c 83 04 00 00 0c 04 00 00 00 12 20 06 0c a4 ............ ... 0180: 06 00 00 0c bf 7f 00 00 0c 6e 00 00 00 0c 0a 00 .........n...... 0190: 00 00 0c 83 05 00 00 0c 05 00 00 00 12 20 06 0c ............. .. 01a0: 40 06 00 00 0c 13 76 00 00 0c 6e 00 00 00 0c 0a @.....v...n..... 01b0: 00 00 00 0c 83 06 00 00 0c 06 00 00 00 12 20 06 .............. . 01c0: 0c dc 05 00 00 0c 34 6e 00 00 0c 6e 00 00 00 0c ......4n...n.... 01d0: 0a 00 00 00 0c 83 07 00 00 0c 07 00 00 00 12 20 ............... 01e0: 06 0c 78 05 00 00 0c e4 64 00 00 0c 6e 00 00 00 ..x.....d...n... 01f0: 0c 0a 00 00 00 0c 83 08 00 00 0c 08 00 00 00 12 ................ 0200: 20 06 0c 14 05 00 00 0c 5c 5d 00 00 0c 6e 00 00 .......\]...n.. 0210: 00 0c 0a 00 00 00 0c 83 09 00 00 0c 09 00 00 00 ................ 0220: 12 20 06 0c b0 04 00 00 0c 6d 54 00 00 0c 6e 00 . .......mT...n. 0230: 00 00 0c 0a 00 00 00 0c 83 0a 00 00 0c 0a 00 00 ................ 0240: 00 12 20 06 0c 4c 04 00 00 0c 3f 4d 00 00 0c 6e .. ..L....?M...n 0250: 00 00 00 0c 0a 00 00 00 0c 83 0b 00 00 0c 0b 00 ................ 0260: 00 00 12 20 06 0c e8 03 00 00 0c ae 44 00 00 0c ... ........D... 0270: 6e 00 00 00 0c 0a 00 00 00 0c 83 0c 00 00 0c 0c n............... 0280: 00 00 00 12 20 06 0c 84 03 00 00 0c 4d 3c 00 00 .... .......M<.. 0290: 0c 6e 00 00 00 0c 0a 00 00 00 0c 83 0d 00 00 0c .n.............. 02a0: 0d 00 00 00 12 20 06 0c 20 03 00 00 0c 9b 35 00 ..... .. .....5. 02b0: 00 0c 6e 00 00 00 0c 0a 00 00 00 0c 83 0e 00 00 ..n............. 02c0: 0c 0e 00 00 00 12 20 06 0c 00 00 00 80 0c 00 00 ...... ......... 02d0: 00 80 0c 00 00 00 80 0c 00 00 00 80 0c 00 00 00 ................ 02e0: 80 0c 00 00 00 80 12 20 06 0c 00 00 00 80 0c 00 ....... ........ 02f0: 00 00 80 0c 00 00 00 80 0c 00 00 00 80 0c 00 00 ................ 0300: 00 80 0c 00 00 00 80 12 20 06 0c 00 00 00 80 0c ........ ....... 0310: 00 00 00 80 0c 00 00 00 80 0c 00 00 00 80 0c 00 ................ 0320: 00 00 80 0c 00 00 00 80 12 20 06 0c 00 00 00 80 ......... ...... 0330: 0c 00 00 00 80 0c 00 00 00 80 0c 00 00 00 80 0c ................ 0340: 00 00 00 80 0c 00 00 00 80 12 20 06 0c 00 00 00 .......... ..... 0350: 80 0c 00 00 00 80 0c 00 00 00 80 0c 00 00 00 80 ................ 0360: 0c 00 00 00 80 0c 00 00 00 80 12 20 06 0c 00 00 ........... .... 0370: 00 80 0c 00 00 00 80 0c 00 00 00 80 0c 00 00 00 ................ 0380: 80 0c 00 00 00 80 0c 00 00 00 80 12 20 06 0c 00 ............ ... 0390: 00 00 80 0c 00 00 00 80 0c 00 00 00 80 0c 00 00 ................ 03a0: 00 80 0c 00 00 00 80 0c 00 00 00 80 12 20 06 0c ............. .. 03b0: 00 00 00 80 0c 00 00 00 80 0c 00 00 00 80 0c 00 ................ 03c0: 00 00 80 0c 00 00 00 80 0c 00 00 00 80 12 20 06 .............. . 03d0: 0c 00 00 00 80 0c 00 00 00 80 0c 00 00 00 80 0c ................ 03e0: 00 00 00 80 0c 00 00 00 80 0c 00 00 00 80 12 20 ............... 03f0: 06 0c 00 00 00 80 0c 00 00 00 80 0c 00 00 00 80 ................ 0400: 0c 00 00 00 80 0c 00 00 00 80 0c 00 00 00 80 12 ................ 0410: 20 06 0c 00 00 00 80 0c 00 00 00 80 0c 00 00 00 ............... 0420: 80 0c 00 00 00 80 0c 00 00 00 80 0c 00 00 00 80 ................ 0430: 12 20 06 0c 00 00 00 80 0c 00 00 00 80 0c 00 00 . .............. 0440: 00 80 0c 00 00 00 80 0c 00 00 00 80 0c 00 00 00 ................ 0450: 80 12 20 06 0c 00 00 00 80 0c 00 00 00 80 0c 00 .. ............. 0460: 00 00 80 0c 00 00 00 80 0c 00 00 00 80 0c 00 00 ................ 0470: 00 80 12 20 06 0c 00 00 00 80 0c 00 00 00 80 0c ... ............ 0480: 00 00 00 80 0c 00 00 00 80 0c 00 00 00 80 0c 00 ................ 0490: 00 00 80 12 20 06 0c 00 00 00 80 0c 00 00 00 80 .... ........... 04a0: 0c 00 00 00 80 0c 00 00 00 80 0c 00 00 00 80 0c ................ 04b0: 00 00 00 80 12 20 06 0c 00 00 00 80 0c 00 00 00 ..... .......... 04c0: 80 0c 00 00 00 80 0c 00 00 00 80 0c 00 00 00 80 ................ 04d0: 0c 00 00 00 80 08 5f 50 53 53 12 42 1f 0f 12 20 ......_PSS.B... 04e0: 06 0c 99 08 00 00 0c c8 af 00 00 0c 0a 00 00 00 ................ 04f0: 0c 0a 00 00 00 0c 00 1f 00 00 0c 00 1f 00 00 12 ................ 0500: 20 06 0c 98 08 00 00 0c c8 af 00 00 0c 0a 00 00 ............... 0510: 00 0c 0a 00 00 00 0c 00 16 00 00 0c 00 16 00 00 ................ 0520: 12 20 06 0c d0 07 00 00 0c 9d 9a 00 00 0c 0a 00 . .............. 0530: 00 00 0c 0a 00 00 00 0c 00 14 00 00 0c 00 14 00 ................ 0540: 00 12 20 06 0c 6c 07 00 00 0c 0b 92 00 00 0c 0a .. ..l.......... 0550: 00 00 00 0c 0a 00 00 00 0c 00 13 00 00 0c 00 13 ................ 0560: 00 00 12 20 06 0c 08 07 00 00 0c f6 87 00 00 0c ... ............ 0570: 0a 00 00 00 0c 0a 00 00 00 0c 00 12 00 00 0c 00 ................ 0580: 12 00 00 12 20 06 0c a4 06 00 00 0c bf 7f 00 00 .... ........... 0590: 0c 0a 00 00 00 0c 0a 00 00 00 0c 00 11 00 00 0c ................ 05a0: 00 11 00 00 12 20 06 0c 40 06 00 00 0c 13 76 00 ..... ..@.....v. 05b0: 00 0c 0a 00 00 00 0c 0a 00 00 00 0c 00 10 00 00 ................ 05c0: 0c 00 10 00 00 12 20 06 0c dc 05 00 00 0c 34 6e ...... .......4n 05d0: 00 00 0c 0a 00 00 00 0c 0a 00 00 00 0c 00 0f 00 ................ 05e0: 00 0c 00 0f 00 00 12 20 06 0c 78 05 00 00 0c e4 ....... ..x..... 05f0: 64 00 00 0c 0a 00 00 00 0c 0a 00 00 00 0c 00 0e d............... 0600: 00 00 0c 00 0e 00 00 12 20 06 0c 14 05 00 00 0c ........ ....... 0610: 5c 5d 00 00 0c 0a 00 00 00 0c 0a 00 00 00 0c 00 \].............. 0620: 0d 00 00 0c 00 0d 00 00 12 20 06 0c b0 04 00 00 ......... ...... 0630: 0c 6d 54 00 00 0c 0a 00 00 00 0c 0a 00 00 00 0c .mT............. 0640: 00 0c 00 00 0c 00 0c 00 00 12 20 06 0c 4c 04 00 .......... ..L.. 0650: 00 0c 3f 4d 00 00 0c 0a 00 00 00 0c 0a 00 00 00 ..?M............ 0660: 0c 00 0b 00 00 0c 00 0b 00 00 12 20 06 0c e8 03 ........... .... 0670: 00 00 0c ae 44 00 00 0c 0a 00 00 00 0c 0a 00 00 ....D........... 0680: 00 0c 00 0a 00 00 0c 00 0a 00 00 12 20 06 0c 84 ............ ... 0690: 03 00 00 0c 4d 3c 00 00 0c 0a 00 00 00 0c 0a 00 ....M<.......... 06a0: 00 00 0c 00 09 00 00 0c 00 09 00 00 12 20 06 0c ............. .. 06b0: 20 03 00 00 0c 9b 35 00 00 0c 0a 00 00 00 0c 0a .....5......... 06c0: 00 00 00 0c 00 08 00 00 0c 00 08 00 00 12 20 06 .............. . 06d0: 0c 00 00 00 80 0c 00 00 00 80 0c 00 00 00 80 0c ................ 06e0: 00 00 00 80 0c 00 00 00 80 0c 00 00 00 80 12 20 ............... 06f0: 06 0c 00 00 00 80 0c 00 00 00 80 0c 00 00 00 80 ................ 0700: 0c 00 00 00 80 0c 00 00 00 80 0c 00 00 00 80 12 ................ 0710: 20 06 0c 00 00 00 80 0c 00 00 00 80 0c 00 00 00 ............... 0720: 80 0c 00 00 00 80 0c 00 00 00 80 0c 00 00 00 80 ................ 0730: 12 20 06 0c 00 00 00 80 0c 00 00 00 80 0c 00 00 . .............. 0740: 00 80 0c 00 00 00 80 0c 00 00 00 80 0c 00 00 00 ................ 0750: 80 12 20 06 0c 00 00 00 80 0c 00 00 00 80 0c 00 .. ............. 0760: 00 00 80 0c 00 00 00 80 0c 00 00 00 80 0c 00 00 ................ 0770: 00 80 12 20 06 0c 00 00 00 80 0c 00 00 00 80 0c ... ............ 0780: 00 00 00 80 0c 00 00 00 80 0c 00 00 00 80 0c 00 ................ 0790: 00 00 80 12 20 06 0c 00 00 00 80 0c 00 00 00 80 .... ........... 07a0: 0c 00 00 00 80 0c 00 00 00 80 0c 00 00 00 80 0c ................ 07b0: 00 00 00 80 12 20 06 0c 00 00 00 80 0c 00 00 00 ..... .......... 07c0: 80 0c 00 00 00 80 0c 00 00 00 80 0c 00 00 00 80 ................ 07d0: 0c 00 00 00 80 12 20 06 0c 00 00 00 80 0c 00 00 ...... ......... 07e0: 00 80 0c 00 00 00 80 0c 00 00 00 80 0c 00 00 00 ................ 07f0: 80 0c 00 00 00 80 12 20 06 0c 00 00 00 80 0c 00 ....... ........ 0800: 00 00 80 0c 00 00 00 80 0c 00 00 00 80 0c 00 00 ................ 0810: 00 80 0c 00 00 00 80 12 20 06 0c 00 00 00 80 0c ........ ....... 0820: 00 00 00 80 0c 00 00 00 80 0c 00 00 00 80 0c 00 ................ 0830: 00 00 80 0c 00 00 00 80 12 20 06 0c 00 00 00 80 ......... ...... 0840: 0c 00 00 00 80 0c 00 00 00 80 0c 00 00 00 80 0c ................ 0850: 00 00 00 80 0c 00 00 00 80 12 20 06 0c 00 00 00 .......... ..... 0860: 80 0c 00 00 00 80 0c 00 00 00 80 0c 00 00 00 80 ................ 0870: 0c 00 00 00 80 0c 00 00 00 80 12 20 06 0c 00 00 ........... .... 0880: 00 80 0c 00 00 00 80 0c 00 00 00 80 0c 00 00 00 ................ 0890: 80 0c 00 00 00 80 0c 00 00 00 80 12 20 06 0c 00 ............ ... 08a0: 00 00 80 0c 00 00 00 80 0c 00 00 00 80 0c 00 00 ................ 08b0: 00 80 0c 00 00 00 80 0c 00 00 00 80 12 20 06 0c ............. .. 08c0: 00 00 00 80 0c 00 00 00 80 0c 00 00 00 80 0c 00 ................ 08d0: 00 00 80 0c 00 00 00 80 0c 00 00 00 80 08 50 53 ..............PS 08e0: 44 46 00 14 4b 04 5f 50 53 44 00 a0 2e 92 50 53 DF..K._PSD....PS 08f0: 44 46 70 54 43 4e 54 88 83 88 48 50 53 44 00 00 DFpTCNT...HPSD.. 0900: 0a 04 00 70 54 43 4e 54 88 83 88 53 50 53 44 00 ...pTCNT...SPSD. 0910: 00 0a 04 00 70 ff 50 53 44 46 a0 0f 7b 50 44 43 ....p.PSDF..{PDC 0920: 30 0b 00 08 00 a4 48 50 53 44 a4 53 50 53 44 08 0.....HPSD.SPSD. 0930: 48 50 53 44 12 0d 01 12 0a 05 0a 05 00 00 0a fe HPSD............ 0940: 0a 80 08 53 50 53 44 12 0d 01 12 0a 05 0a 05 00 ...SPSD......... 0950: 00 0a fc 0a 80 ..... SSDT2 @ 0x00000000 0000: 53 53 44 54 96 09 00 00 01 ae 50 6d 52 65 66 00 SSDT......PmRef. 0010: 43 70 75 50 6d 00 00 00 00 30 00 00 49 4e 54 4c CpuPm....0..INTL 0020: 12 11 09 20 10 46 0c 5c 00 08 53 53 44 54 12 43 ... .F.\..SSDT.C 0030: 05 0c 0d 43 50 55 30 49 53 54 20 00 0c 18 a0 09 ...CPU0IST ..... 0040: 02 0c 55 09 00 00 0d 41 50 49 53 54 20 20 20 00 ..U....APIST . 0050: 0c 98 ba 5c bf 0c 03 03 00 00 0d 43 50 55 30 43 ...\.......CPU0C 0060: 53 54 20 00 0c 98 a7 5c bf 0c 3f 07 00 00 0d 41 ST ....\..?....A 0070: 50 43 53 54 20 20 20 00 0c 98 9d 5c bf 0c 19 01 PCST ....\.... 0080: 00 00 08 43 46 47 44 0c ff f6 70 00 08 5c 50 44 ...CFGD...p..\PD 0090: 43 30 0c 00 00 00 80 08 5c 50 44 43 31 0c 00 00 C0......\PDC1... 00a0: 00 80 08 5c 50 44 43 32 0c 00 00 00 80 08 5c 50 ...\PDC2......\P 00b0: 44 43 33 0c 00 00 00 80 08 5c 50 44 43 34 0c 00 DC3......\PDC4.. 00c0: 00 00 80 08 5c 50 44 43 35 0c 00 00 00 80 08 5c ....\PDC5......\ 00d0: 50 44 43 36 0c 00 00 00 80 08 5c 50 44 43 37 0c PDC6......\PDC7. 00e0: 00 00 00 80 08 5c 53 44 54 4c 00 10 4b 21 5c 2e .....\SDTL..K!\. 00f0: 5f 50 52 5f 43 50 55 30 08 48 49 30 5f 00 08 48 _PR_CPU0.HI0_..H 0100: 43 30 5f 00 14 14 5f 50 44 43 01 70 43 50 44 43 C0_..._PDC.pCPDC 0110: 68 60 47 43 41 50 60 a4 60 14 17 5f 4f 53 43 04 h`GCAP`.`.._OSC. 0120: 70 43 4f 53 43 68 69 6a 6b 60 47 43 41 50 60 a4 pCOSChijk`GCAP`. 0130: 60 14 48 06 43 50 44 43 01 8a 68 00 52 45 56 53 `.H.CPDC..h.REVS 0140: 8a 68 0a 04 53 49 5a 45 70 87 68 60 70 74 60 0a .h..SIZEp.h`pt`. 0150: 08 00 61 5b 13 68 0a 40 77 61 0a 08 00 54 45 4d ..a[.h.@wa...TEM 0160: 50 08 53 54 53 30 11 07 0a 04 00 00 00 00 73 53 P.STS0........sS 0170: 54 53 30 54 45 4d 50 62 a4 43 4f 53 43 11 13 0a TS0TEMPb.COSC... 0180: 10 16 a6 77 40 0c 29 be 47 9e bd d8 70 58 71 39 ...w@.).G...pXq9 0190: 53 52 45 56 53 53 49 5a 45 62 14 4d 0b 43 4f 53 SREVSSIZEb.M.COS 01a0: 43 04 8a 6b 00 53 54 53 30 8a 6b 0a 04 43 41 50 C..k.STS0.k..CAP 01b0: 30 8a 68 00 49 49 44 30 8a 68 0a 04 49 49 44 31 0.h.IID0.h..IID1 01c0: 8a 68 0a 08 49 49 44 32 8a 68 0a 0c 49 49 44 33 .h..IID2.h..IID3 01d0: 08 55 49 44 30 11 13 0a 10 16 a6 77 40 0c 29 be .UID0......w@.). 01e0: 47 9e bd d8 70 58 71 39 53 8a 55 49 44 30 00 45 G...pXq9S.UID0.E 01f0: 49 44 30 8a 55 49 44 30 0a 04 45 49 44 31 8a 55 ID0.UID0..EID1.U 0200: 49 44 30 0a 08 45 49 44 32 8a 55 49 44 30 0a 0c ID0..EID2.UID0.. 0210: 45 49 44 33 a0 32 92 90 90 93 49 49 44 30 45 49 EID3.2....IID0EI 0220: 44 30 93 49 49 44 31 45 49 44 31 90 93 49 49 44 D0.IID1EID1..IID 0230: 32 45 49 44 32 93 49 49 44 33 45 49 44 33 70 0a 2EID2.IID3EID3p. 0240: 06 53 54 53 30 a4 6b a0 0e 92 93 69 01 70 0a 0a .STS0.k....i.p.. 0250: 53 54 53 30 a4 6b a4 6b 14 4e 0a 47 43 41 50 01 STS0.k.k.N.GCAP. 0260: 8a 68 00 53 54 53 30 8a 68 0a 04 43 41 50 30 a0 .h.STS0.h..CAP0. 0270: 12 91 93 53 54 53 30 0a 06 93 53 54 53 30 0a 0a ...STS0...STS0.. 0280: a4 00 a0 16 7b 53 54 53 30 01 00 7b 43 41 50 30 ....{STS0..{CAP0 0290: 0b ff 0b 43 41 50 30 a4 00 7d 7b 50 44 43 30 0c ...CAP0..}{PDC0. 02a0: ff ff ff 7f 00 43 41 50 30 50 44 43 30 a0 47 05 .....CAP0PDC0.G. 02b0: 7b 43 46 47 44 0a 3e 00 a0 4c 04 90 90 7b 43 46 {CFGD.>..L...{CF 02c0: 47 44 0b 00 04 00 7b 50 44 43 30 0a 18 00 92 7b GD....{PDC0....{ 02d0: 53 44 54 4c 0a 02 00 7d 53 44 54 4c 0a 02 53 44 SDTL...}SDTL..SD 02e0: 54 4c 5b 80 43 53 54 30 00 83 88 53 53 44 54 0a TL[.CST0...SSDT. 02f0: 07 00 83 88 53 53 44 54 0a 08 00 5b 20 43 53 54 ....SSDT...[ CST 0300: 30 48 43 30 5f a4 00 10 46 16 5c 2e 5f 50 52 5f 0HC0_...F.\._PR_ 0310: 43 50 55 31 08 48 49 31 5f 00 08 48 43 31 5f 00 CPU1.HI1_..HC1_. 0320: 14 1f 5f 50 44 43 01 70 5c 2f 03 5f 50 52 5f 43 .._PDC.p\/._PR_C 0330: 50 55 30 43 50 44 43 68 60 47 43 41 50 60 a4 60 PU0CPDCh`GCAP`.` 0340: 14 22 5f 4f 53 43 04 70 5c 2f 03 5f 50 52 5f 43 ."_OSC.p\/._PR_C 0350: 50 55 30 43 4f 53 43 68 69 6a 6b 60 47 43 41 50 PU0COSChijk`GCAP 0360: 60 a4 60 14 45 07 47 43 41 50 01 8a 68 00 53 54 `.`.E.GCAP..h.ST 0370: 53 31 8a 68 0a 04 43 41 50 31 a0 12 91 93 53 54 S1.h..CAP1....ST 0380: 53 31 0a 06 93 53 54 53 31 0a 0a a4 00 a0 16 7b S1...STS1......{ 0390: 53 54 53 31 01 00 7b 43 41 50 31 0b ff 0b 43 41 STS1..{CAP1...CA 03a0: 50 31 a4 00 7d 7b 50 44 43 31 0c ff ff ff 7f 00 P1..}{PDC1...... 03b0: 43 41 50 31 50 44 43 31 a0 10 93 7b 50 44 43 30 CAP1PDC1...{PDC0 03c0: 0a 09 00 0a 09 41 50 50 54 a0 0d 7b 50 44 43 30 .....APPT..{PDC0 03d0: 0a 18 00 41 50 43 54 a4 00 14 4a 04 41 50 43 54 ...APCT...J.APCT 03e0: 00 a0 42 04 90 7b 43 46 47 44 0a 2e 00 92 7b 53 ..B..{CFGD....{S 03f0: 44 54 4c 0a 20 00 7d 53 44 54 4c 0a 20 53 44 54 DTL. .}SDTL. SDT 0400: 4c 5b 80 43 53 54 31 00 83 88 53 53 44 54 0a 0a L[.CST1...SSDT.. 0410: 00 83 88 53 53 44 54 0a 0b 00 5b 20 43 53 54 31 ...SSDT...[ CST1 0420: 48 43 31 5f 14 49 04 41 50 50 54 00 a0 41 04 90 HC1_.I.APPT..A.. 0430: 7b 43 46 47 44 01 00 92 7b 53 44 54 4c 0a 10 00 {CFGD...{SDTL... 0440: 7d 53 44 54 4c 0a 10 53 44 54 4c 5b 80 49 53 54 }SDTL..SDTL[.IST 0450: 31 00 83 88 53 53 44 54 0a 04 00 83 88 53 53 44 1...SSDT.....SSD 0460: 54 0a 05 00 5b 20 49 53 54 31 48 49 31 5f 10 4b T...[ IST1HI1_.K 0470: 0d 5c 2e 5f 50 52 5f 43 50 55 32 14 1f 5f 50 44 .\._PR_CPU2.._PD 0480: 43 01 70 5c 2f 03 5f 50 52 5f 43 50 55 30 43 50 C.p\/._PR_CPU0CP 0490: 44 43 68 60 47 43 41 50 60 a4 60 14 22 5f 4f 53 DCh`GCAP`.`."_OS 04a0: 43 04 70 5c 2f 03 5f 50 52 5f 43 50 55 30 43 4f C.p\/._PR_CPU0CO 04b0: 53 43 68 69 6a 6b 60 47 43 41 50 60 a4 60 14 4b SChijk`GCAP`.`.K 04c0: 08 47 43 41 50 01 8a 68 00 53 54 53 32 8a 68 0a .GCAP..h.STS2.h. 04d0: 04 43 41 50 32 a0 12 91 93 53 54 53 32 0a 06 93 .CAP2....STS2... 04e0: 53 54 53 32 0a 0a a4 00 a0 16 7b 53 54 53 32 01 STS2......{STS2. 04f0: 00 7b 43 41 50 32 0b ff 0b 43 41 50 32 a4 00 7d .{CAP2...CAP2..} 0500: 7b 50 44 43 32 0c ff ff ff 7f 00 43 41 50 32 50 {PDC2......CAP2P 0510: 44 43 32 a0 1b 93 7b 50 44 43 32 0a 09 00 0a 09 DC2...{PDC2..... 0520: 5c 2f 03 5f 50 52 5f 43 50 55 31 41 50 50 54 a0 \/._PR_CPU1APPT. 0530: 18 7b 50 44 43 32 0a 18 00 5c 2f 03 5f 50 52 5f .{PDC2...\/._PR_ 0540: 43 50 55 31 41 50 43 54 a4 00 10 4b 0d 5c 2e 5f CPU1APCT...K.\._ 0550: 50 52 5f 43 50 55 33 14 1f 5f 50 44 43 01 70 5c PR_CPU3.._PDC.p\ 0560: 2f 03 5f 50 52 5f 43 50 55 30 43 50 44 43 68 60 /._PR_CPU0CPDCh` 0570: 47 43 41 50 60 a4 60 14 22 5f 4f 53 43 04 70 5c GCAP`.`."_OSC.p\ 0580: 2f 03 5f 50 52 5f 43 50 55 30 43 4f 53 43 68 69 /._PR_CPU0COSChi 0590: 6a 6b 60 47 43 41 50 60 a4 60 14 4b 08 47 43 41 jk`GCAP`.`.K.GCA 05a0: 50 01 8a 68 00 53 54 53 33 8a 68 0a 04 43 41 50 P..h.STS3.h..CAP 05b0: 33 a0 12 91 93 53 54 53 33 0a 06 93 53 54 53 33 3....STS3...STS3 05c0: 0a 0a a4 00 a0 16 7b 53 54 53 33 01 00 7b 43 41 ......{STS3..{CA 05d0: 50 33 0b ff 0b 43 41 50 33 a4 00 7d 7b 50 44 43 P3...CAP3..}{PDC 05e0: 33 0c ff ff ff 7f 00 43 41 50 33 50 44 43 33 a0 3......CAP3PDC3. 05f0: 1b 93 7b 50 44 43 33 0a 09 00 0a 09 5c 2f 03 5f ..{PDC3.....\/._ 0600: 50 52 5f 43 50 55 31 41 50 50 54 a0 18 7b 50 44 PR_CPU1APPT..{PD 0610: 43 33 0a 18 00 5c 2f 03 5f 50 52 5f 43 50 55 31 C3...\/._PR_CPU1 0620: 41 50 43 54 a4 00 10 4b 0d 5c 2e 5f 50 52 5f 43 APCT...K.\._PR_C 0630: 50 55 34 14 1f 5f 50 44 43 01 70 5c 2f 03 5f 50 PU4.._PDC.p\/._P 0640: 52 5f 43 50 55 30 43 50 44 43 68 60 47 43 41 50 R_CPU0CPDCh`GCAP 0650: 60 a4 60 14 22 5f 4f 53 43 04 70 5c 2f 03 5f 50 `.`."_OSC.p\/._P 0660: 52 5f 43 50 55 30 43 4f 53 43 68 69 6a 6b 60 47 R_CPU0COSChijk`G 0670: 43 41 50 60 a4 60 14 4b 08 47 43 41 50 01 8a 68 CAP`.`.K.GCAP..h 0680: 00 53 54 53 34 8a 68 0a 04 43 41 50 34 a0 12 91 .STS4.h..CAP4... 0690: 93 53 54 53 34 0a 06 93 53 54 53 34 0a 0a a4 00 .STS4...STS4.... 06a0: a0 16 7b 53 54 53 34 01 00 7b 43 41 50 34 0b ff ..{STS4..{CAP4.. 06b0: 0b 43 41 50 34 a4 00 7d 7b 50 44 43 34 0c ff ff .CAP4..}{PDC4... 06c0: ff 7f 00 43 41 50 34 50 44 43 34 a0 1b 93 7b 50 ...CAP4PDC4...{P 06d0: 44 43 34 0a 09 00 0a 09 5c 2f 03 5f 50 52 5f 43 DC4.....\/._PR_C 06e0: 50 55 31 41 50 50 54 a0 18 7b 50 44 43 34 0a 18 PU1APPT..{PDC4.. 06f0: 00 5c 2f 03 5f 50 52 5f 43 50 55 31 41 50 43 54 .\/._PR_CPU1APCT 0700: a4 00 10 4b 0d 5c 2e 5f 50 52 5f 43 50 55 35 14 ...K.\._PR_CPU5. 0710: 1f 5f 50 44 43 01 70 5c 2f 03 5f 50 52 5f 43 50 ._PDC.p\/._PR_CP 0720: 55 30 43 50 44 43 68 60 47 43 41 50 60 a4 60 14 U0CPDCh`GCAP`.`. 0730: 22 5f 4f 53 43 04 70 5c 2f 03 5f 50 52 5f 43 50 "_OSC.p\/._PR_CP 0740: 55 30 43 4f 53 43 68 69 6a 6b 60 47 43 41 50 60 U0COSChijk`GCAP` 0750: a4 60 14 4b 08 47 43 41 50 01 8a 68 00 53 54 53 .`.K.GCAP..h.STS 0760: 35 8a 68 0a 04 43 41 50 35 a0 12 91 93 53 54 53 5.h..CAP5....STS 0770: 35 0a 06 93 53 54 53 35 0a 0a a4 00 a0 16 7b 53 5...STS5......{S 0780: 54 53 35 01 00 7b 43 41 50 35 0b ff 0b 43 41 50 TS5..{CAP5...CAP 0790: 35 a4 00 7d 7b 50 44 43 35 0c ff ff ff 7f 00 43 5..}{PDC5......C 07a0: 41 50 35 50 44 43 35 a0 1b 93 7b 50 44 43 35 0a AP5PDC5...{PDC5. 07b0: 09 00 0a 09 5c 2f 03 5f 50 52 5f 43 50 55 31 41 ....\/._PR_CPU1A 07c0: 50 50 54 a0 18 7b 50 44 43 35 0a 18 00 5c 2f 03 PPT..{PDC5...\/. 07d0: 5f 50 52 5f 43 50 55 31 41 50 43 54 a4 00 10 4b _PR_CPU1APCT...K 07e0: 0d 5c 2e 5f 50 52 5f 43 50 55 36 14 1f 5f 50 44 .\._PR_CPU6.._PD 07f0: 43 01 70 5c 2f 03 5f 50 52 5f 43 50 55 30 43 50 C.p\/._PR_CPU0CP 0800: 44 43 68 60 47 43 41 50 60 a4 60 14 22 5f 4f 53 DCh`GCAP`.`."_OS 0810: 43 04 70 5c 2f 03 5f 50 52 5f 43 50 55 30 43 4f C.p\/._PR_CPU0CO 0820: 53 43 68 69 6a 6b 60 47 43 41 50 60 a4 60 14 4b SChijk`GCAP`.`.K 0830: 08 47 43 41 50 01 8a 68 00 53 54 53 36 8a 68 0a .GCAP..h.STS6.h. 0840: 04 43 41 50 36 a0 12 91 93 53 54 53 36 0a 06 93 .CAP6....STS6... 0850: 53 54 53 36 0a 0a a4 00 a0 16 7b 53 54 53 36 01 STS6......{STS6. 0860: 00 7b 43 41 50 36 0b ff 0b 43 41 50 36 a4 00 7d .{CAP6...CAP6..} 0870: 7b 50 44 43 36 0c ff ff ff 7f 00 43 41 50 36 50 {PDC6......CAP6P 0880: 44 43 36 a0 1b 93 7b 50 44 43 36 0a 09 00 0a 09 DC6...{PDC6..... 0890: 5c 2f 03 5f 50 52 5f 43 50 55 31 41 50 50 54 a0 \/._PR_CPU1APPT. 08a0: 18 7b 50 44 43 36 0a 18 00 5c 2f 03 5f 50 52 5f .{PDC6...\/._PR_ 08b0: 43 50 55 31 41 50 43 54 a4 00 10 4b 0d 5c 2e 5f CPU1APCT...K.\._ 08c0: 50 52 5f 43 50 55 37 14 1f 5f 50 44 43 01 70 5c PR_CPU7.._PDC.p\ 08d0: 2f 03 5f 50 52 5f 43 50 55 30 43 50 44 43 68 60 /._PR_CPU0CPDCh` 08e0: 47 43 41 50 60 a4 60 14 22 5f 4f 53 43 04 70 5c GCAP`.`."_OSC.p\ 08f0: 2f 03 5f 50 52 5f 43 50 55 30 43 4f 53 43 68 69 /._PR_CPU0COSChi 0900: 6a 6b 60 47 43 41 50 60 a4 60 14 4b 08 47 43 41 jk`GCAP`.`.K.GCA 0910: 50 01 8a 68 00 53 54 53 37 8a 68 0a 04 43 41 50 P..h.STS7.h..CAP 0920: 37 a0 12 91 93 53 54 53 37 0a 06 93 53 54 53 37 7....STS7...STS7 0930: 0a 0a a4 00 a0 16 7b 53 54 53 37 01 00 7b 43 41 ......{STS7..{CA 0940: 50 37 0b ff 0b 43 41 50 37 a4 00 7d 7b 50 44 43 P7...CAP7..}{PDC 0950: 37 0c ff ff ff 7f 00 43 41 50 37 50 44 43 37 a0 7......CAP7PDC7. 0960: 1b 93 7b 50 44 43 37 0a 09 00 0a 09 5c 2f 03 5f ..{PDC7.....\/._ 0970: 50 52 5f 43 50 55 31 41 50 50 54 a0 18 7b 50 44 PR_CPU1APPT..{PD 0980: 43 37 0a 18 00 5c 2f 03 5f 50 52 5f 43 50 55 31 C7...\/._PR_CPU1 0990: 41 50 43 54 a4 00 APCT.. SSDT3 @ 0x00000000 0000: 53 53 44 54 3f 07 00 00 01 2b 50 6d 52 65 66 00 SSDT?....+PmRef. 0010: 43 70 75 30 43 73 74 00 01 30 00 00 49 4e 54 4c Cpu0Cst..0..INTL 0020: 12 11 09 20 10 4a 71 5c 2e 5f 50 52 5f 43 50 55 ... .Jq\._PR_CPU 0030: 30 08 43 31 4c 4d 12 1c 04 11 14 0a 11 82 0c 00 0.C1LM.......... 0040: 7f 01 02 01 00 00 00 00 00 00 00 00 79 00 01 01 ............y... 0050: 0b e8 03 08 43 31 4c 48 12 1c 04 11 14 0a 11 82 ....C1LH........ 0060: 0c 00 7f 00 00 00 00 00 00 00 00 00 00 00 79 00 ..............y. 0070: 01 01 0b e8 03 08 43 33 4c 4d 12 1e 04 11 14 0a ......C3LM...... 0080: 11 82 0c 00 7f 01 02 01 10 00 00 00 00 00 00 00 ................ 0090: 79 00 0a 02 0a 9c 0b f4 01 08 43 37 53 4d 12 1d y.........C7SM.. 00a0: 04 11 14 0a 11 82 0c 00 7f 01 02 01 31 00 00 00 ............1... 00b0: 00 00 00 00 79 00 0a 03 0a c7 0a c8 08 43 37 4c ....y........C7L 00c0: 4d 12 1d 04 11 14 0a 11 82 0c 00 7f 01 02 01 30 M..............0 00d0: 00 00 00 00 00 00 00 79 00 0a 03 0a c7 0a c8 08 .......y........ 00e0: 43 36 4c 4d 12 1e 04 11 14 0a 11 82 0c 00 7f 01 C6LM............ 00f0: 02 01 20 00 00 00 00 00 00 00 79 00 0a 03 0a b5 .. .......y..... 0100: 0b 5e 01 08 43 33 4c 49 12 1e 04 11 14 0a 11 82 .^..C3LI........ 0110: 0c 00 01 08 00 00 14 04 00 00 00 00 00 00 79 00 ..............y. 0120: 0a 02 0a 9c 0b f4 01 08 43 36 4c 49 12 1e 04 11 ........C6LI.... 0130: 14 0a 11 82 0c 00 01 08 00 00 15 04 00 00 00 00 ................ 0140: 00 00 79 00 0a 03 0a b5 0b 5e 01 08 43 37 4c 49 ..y......^..C7LI 0150: 12 1d 04 11 14 0a 11 82 0c 00 01 08 00 00 16 04 ................ 0160: 00 00 00 00 00 00 79 00 0a 03 0a c7 0a c8 08 43 ......y........C 0170: 33 53 54 12 0d 04 0a 03 12 02 00 12 02 00 12 02 3ST............. 0180: 00 08 43 32 53 54 12 0a 03 0a 02 12 02 00 12 02 ..C2ST.......... 0190: 00 08 43 31 53 54 12 06 02 01 12 02 00 08 43 53 ..C1ST........CS 01a0: 54 46 00 14 4b 59 5f 43 53 54 08 70 5c 2f 04 5f TF..KY_CST.p\/._ 01b0: 53 42 5f 50 43 49 30 41 43 30 5f 5f 50 53 52 50 SB_PCI0AC0__PSRP 01c0: 57 52 53 a0 46 06 90 92 43 53 54 46 7b 43 46 47 WRS.F...CSTF{CFG 01d0: 44 0c 00 00 40 00 00 70 0a 50 88 43 33 4c 49 0a D...@..p.P.C3LI. 01e0: 02 00 70 0a 50 88 43 33 4c 4d 0a 02 00 70 0a 6d ..p.P.C3LM...p.m 01f0: 88 43 37 53 4d 0a 02 00 70 0a 6d 88 43 37 4c 4d .C7SM...p.m.C7LM 0200: 0a 02 00 70 0a 68 88 43 36 4c 4d 0a 02 00 70 0a ...p.h.C6LM...p. 0210: 6d 88 43 37 4c 49 0a 02 00 70 0a 68 88 43 36 4c m.C7LI...p.h.C6L 0220: 49 0a 02 00 70 ff 43 53 54 46 a0 4a 1f 90 7b 43 I...p.CSTF.J..{C 0230: 46 47 44 0b 00 10 00 7b 50 44 43 30 0b 00 02 00 FGD....{PDC0.... 0240: a0 40 17 91 92 50 57 52 53 92 93 50 46 4c 56 46 .@...PWRS..PFLVF 0250: 4d 42 4c a0 42 06 7b 43 46 47 44 0c 00 00 01 00 MBL.B.{CFGD..... 0260: 00 a0 34 7b 43 46 47 44 0a 08 00 70 43 31 4c 4d ..4{CFGD...pC1LM 0270: 88 43 33 53 54 01 00 70 43 33 4c 4d 88 43 33 53 .C3ST..pC3LM.C3S 0280: 54 0a 02 00 70 43 37 53 4d 88 43 33 53 54 0a 03 T...pC7SM.C3ST.. 0290: 00 a4 43 33 53 54 a1 1f 70 43 31 4c 4d 88 43 32 ..C3ST..pC1LM.C2 02a0: 53 54 01 00 70 43 37 53 4d 88 43 32 53 54 0a 02 ST..pC7SM.C2ST.. 02b0: 00 a4 43 32 53 54 a0 4f 05 7b 43 46 47 44 0a 20 ..C2ST.O.{CFGD. 02c0: 00 a0 34 7b 43 46 47 44 0a 08 00 70 43 31 4c 4d ..4{CFGD...pC1LM 02d0: 88 43 33 53 54 01 00 70 43 33 4c 4d 88 43 33 53 .C3ST..pC3LM.C3S 02e0: 54 0a 02 00 70 43 37 4c 4d 88 43 33 53 54 0a 03 T...pC7LM.C3ST.. 02f0: 00 a4 43 33 53 54 a1 1f 70 43 31 4c 4d 88 43 32 ..C3ST..pC1LM.C2 0300: 53 54 01 00 70 43 37 4c 4d 88 43 32 53 54 0a 02 ST..pC7LM.C2ST.. 0310: 00 a4 43 32 53 54 a0 4f 05 7b 43 46 47 44 0a 10 ..C2ST.O.{CFGD.. 0320: 00 a0 34 7b 43 46 47 44 0a 08 00 70 43 31 4c 4d ..4{CFGD...pC1LM 0330: 88 43 33 53 54 01 00 70 43 33 4c 4d 88 43 33 53 .C3ST..pC3LM.C3S 0340: 54 0a 02 00 70 43 36 4c 4d 88 43 33 53 54 0a 03 T...pC6LM.C3ST.. 0350: 00 a4 43 33 53 54 a1 1f 70 43 31 4c 4d 88 43 32 ..C3ST..pC1LM.C2 0360: 53 54 01 00 70 43 36 4c 4d 88 43 32 53 54 0a 02 ST..pC6LM.C2ST.. 0370: 00 a4 43 32 53 54 a0 27 7b 43 46 47 44 0a 08 00 ..C2ST.'{CFGD... 0380: 70 43 31 4c 4d 88 43 32 53 54 01 00 70 43 33 4c pC1LM.C2ST..pC3L 0390: 4d 88 43 32 53 54 0a 02 00 a4 43 32 53 54 a1 12 M.C2ST....C2ST.. 03a0: 70 43 31 4c 4d 88 43 31 53 54 01 00 a4 43 31 53 pC1LM.C1ST...C1S 03b0: 54 a0 36 7b 43 46 47 44 0a 10 00 70 43 31 4c 4d T.6{CFGD...pC1LM 03c0: 88 43 32 53 54 01 00 70 43 36 4c 4d 88 43 32 53 .C2ST..pC6LM.C2S 03d0: 54 0a 02 00 70 0a 02 88 83 88 43 32 53 54 0a 02 T...p.....C2ST.. 03e0: 00 01 00 a4 43 32 53 54 a1 3c a0 27 7b 43 46 47 ....C2ST.<.'{CFG 03f0: 44 0a 08 00 70 43 31 4c 4d 88 43 32 53 54 01 00 D...pC1LM.C2ST.. 0400: 70 43 33 4c 4d 88 43 32 53 54 0a 02 00 a4 43 32 pC3LM.C2ST....C2 0410: 53 54 a1 12 70 43 31 4c 4d 88 43 31 53 54 01 00 ST..pC1LM.C1ST.. 0420: a4 43 31 53 54 a0 47 19 90 7b 43 46 47 44 0b 00 .C1ST.G..{CFGD.. 0430: 10 00 7b 50 44 43 30 0b 00 01 00 a0 4d 10 91 92 ..{PDC0.....M... 0440: 50 57 52 53 92 93 50 46 4c 56 46 4d 42 4c a0 4f PWRS..PFLVFMBL.O 0450: 05 7b 43 46 47 44 0a 20 00 a0 34 7b 43 46 47 44 .{CFGD. ..4{CFGD 0460: 0a 08 00 70 43 31 4c 4d 88 43 33 53 54 01 00 70 ...pC1LM.C3ST..p 0470: 43 33 4c 49 88 43 33 53 54 0a 02 00 70 43 37 4c C3LI.C3ST...pC7L 0480: 49 88 43 33 53 54 0a 03 00 a4 43 33 53 54 a1 1f I.C3ST....C3ST.. 0490: 70 43 31 4c 4d 88 43 32 53 54 01 00 70 43 37 4c pC1LM.C2ST..pC7L 04a0: 49 88 43 32 53 54 0a 02 00 a4 43 32 53 54 a0 4f I.C2ST....C2ST.O 04b0: 05 7b 43 46 47 44 0a 10 00 a0 34 7b 43 46 47 44 .{CFGD....4{CFGD 04c0: 0a 08 00 70 43 31 4c 4d 88 43 33 53 54 01 00 70 ...pC1LM.C3ST..p 04d0: 43 33 4c 49 88 43 33 53 54 0a 02 00 70 43 36 4c C3LI.C3ST...pC6L 04e0: 49 88 43 33 53 54 0a 03 00 a4 43 33 53 54 a1 1f I.C3ST....C3ST.. 04f0: 70 43 31 4c 4d 88 43 32 53 54 01 00 70 43 36 4c pC1LM.C2ST..pC6L 0500: 49 88 43 32 53 54 0a 02 00 a4 43 32 53 54 a0 27 I.C2ST....C2ST.' 0510: 7b 43 46 47 44 0a 08 00 70 43 31 4c 4d 88 43 32 {CFGD...pC1LM.C2 0520: 53 54 01 00 70 43 33 4c 49 88 43 32 53 54 0a 02 ST..pC3LI.C2ST.. 0530: 00 a4 43 32 53 54 a1 12 70 43 31 4c 4d 88 43 31 ..C2ST..pC1LM.C1 0540: 53 54 01 00 a4 43 31 53 54 a0 36 7b 43 46 47 44 ST...C1ST.6{CFGD 0550: 0a 10 00 70 43 31 4c 4d 88 43 32 53 54 01 00 70 ...pC1LM.C2ST..p 0560: 43 36 4c 49 88 43 32 53 54 0a 02 00 70 0a 02 88 C6LI.C2ST...p... 0570: 83 88 43 32 53 54 0a 02 00 01 00 a4 43 32 53 54 ..C2ST......C2ST 0580: a1 3c a0 27 7b 43 46 47 44 0a 08 00 70 43 31 4c .<.'{CFGD...pC1L 0590: 4d 88 43 32 53 54 01 00 70 43 33 4c 49 88 43 32 M.C2ST..pC3LI.C2 05a0: 53 54 0a 02 00 a4 43 32 53 54 a1 12 70 43 31 4c ST....C2ST..pC1L 05b0: 4d 88 43 31 53 54 01 00 a4 43 31 53 54 a0 4d 10 M.C1ST...C1ST.M. 05c0: 91 92 50 57 52 53 92 93 50 46 4c 56 46 4d 42 4c ..PWRS..PFLVFMBL 05d0: a0 4f 05 7b 43 46 47 44 0a 20 00 a0 34 7b 43 46 .O.{CFGD. ..4{CF 05e0: 47 44 0a 08 00 70 43 31 4c 48 88 43 33 53 54 01 GD...pC1LH.C3ST. 05f0: 00 70 43 33 4c 49 88 43 33 53 54 0a 02 00 70 43 .pC3LI.C3ST...pC 0600: 37 4c 49 88 43 33 53 54 0a 03 00 a4 43 33 53 54 7LI.C3ST....C3ST 0610: a1 1f 70 43 31 4c 48 88 43 32 53 54 01 00 70 43 ..pC1LH.C2ST..pC 0620: 37 4c 49 88 43 32 53 54 0a 02 00 a4 43 32 53 54 7LI.C2ST....C2ST 0630: a0 4f 05 7b 43 46 47 44 0a 10 00 a0 34 7b 43 46 .O.{CFGD....4{CF 0640: 47 44 0a 08 00 70 43 31 4c 48 88 43 33 53 54 01 GD...pC1LH.C3ST. 0650: 00 70 43 33 4c 49 88 43 33 53 54 0a 02 00 70 43 .pC3LI.C3ST...pC 0660: 36 4c 49 88 43 33 53 54 0a 03 00 a4 43 33 53 54 6LI.C3ST....C3ST 0670: a1 1f 70 43 31 4c 48 88 43 32 53 54 01 00 70 43 ..pC1LH.C2ST..pC 0680: 36 4c 49 88 43 32 53 54 0a 02 00 a4 43 32 53 54 6LI.C2ST....C2ST 0690: a0 27 7b 43 46 47 44 0a 08 00 70 43 31 4c 48 88 .'{CFGD...pC1LH. 06a0: 43 32 53 54 01 00 70 43 33 4c 49 88 43 32 53 54 C2ST..pC3LI.C2ST 06b0: 0a 02 00 a4 43 32 53 54 a1 12 70 43 31 4c 48 88 ....C2ST..pC1LH. 06c0: 43 31 53 54 01 00 a4 43 31 53 54 a0 36 7b 43 46 C1ST...C1ST.6{CF 06d0: 47 44 0a 10 00 70 43 31 4c 48 88 43 32 53 54 01 GD...pC1LH.C2ST. 06e0: 00 70 43 36 4c 49 88 43 32 53 54 0a 02 00 70 0a .pC6LI.C2ST...p. 06f0: 02 88 83 88 43 32 53 54 0a 02 00 01 00 a4 43 32 ....C2ST......C2 0700: 53 54 a1 3c a0 27 7b 43 46 47 44 0a 08 00 70 43 ST.<.'{CFGD...pC 0710: 31 4c 48 88 43 32 53 54 01 00 70 43 33 4c 49 88 1LH.C2ST..pC3LI. 0720: 43 32 53 54 0a 02 00 a4 43 32 53 54 a1 12 70 43 C2ST....C2ST..pC SSDT4 @ 0x00000000 0000: 53 53 44 54 03 03 00 00 01 77 50 6d 52 65 66 00 SSDT.....wPmRef. 0010: 41 70 49 73 74 00 00 00 00 30 00 00 49 4e 54 4c ApIst....0..INTL 0020: 12 11 09 20 10 48 06 5c 2e 5f 50 52 5f 43 50 55 ... .H.\._PR_CPU 0030: 31 14 16 5f 50 50 43 00 a4 5c 2f 03 5f 50 52 5f 1.._PPC..\/._PR_ 0040: 43 50 55 30 5f 50 50 43 14 16 5f 50 43 54 00 a4 CPU0_PPC.._PCT.. 0050: 5c 2f 03 5f 50 52 5f 43 50 55 30 5f 50 43 54 14 \/._PR_CPU0_PCT. 0060: 16 5f 50 53 53 00 a4 5c 2f 03 5f 50 52 5f 43 50 ._PSS..\/._PR_CP 0070: 55 30 5f 50 53 53 14 16 5f 50 53 44 00 a4 5c 2f U0_PSS.._PSD..\/ 0080: 03 5f 50 52 5f 43 50 55 30 5f 50 53 44 10 48 06 ._PR_CPU0_PSD.H. 0090: 5c 2e 5f 50 52 5f 43 50 55 32 14 16 5f 50 50 43 \._PR_CPU2.._PPC 00a0: 00 a4 5c 2f 03 5f 50 52 5f 43 50 55 30 5f 50 50 ..\/._PR_CPU0_PP 00b0: 43 14 16 5f 50 43 54 00 a4 5c 2f 03 5f 50 52 5f C.._PCT..\/._PR_ 00c0: 43 50 55 30 5f 50 43 54 14 16 5f 50 53 53 00 a4 CPU0_PCT.._PSS.. 00d0: 5c 2f 03 5f 50 52 5f 43 50 55 30 5f 50 53 53 14 \/._PR_CPU0_PSS. 00e0: 16 5f 50 53 44 00 a4 5c 2f 03 5f 50 52 5f 43 50 ._PSD..\/._PR_CP 00f0: 55 30 5f 50 53 44 10 48 06 5c 2e 5f 50 52 5f 43 U0_PSD.H.\._PR_C 0100: 50 55 33 14 16 5f 50 50 43 00 a4 5c 2f 03 5f 50 PU3.._PPC..\/._P 0110: 52 5f 43 50 55 30 5f 50 50 43 14 16 5f 50 43 54 R_CPU0_PPC.._PCT 0120: 00 a4 5c 2f 03 5f 50 52 5f 43 50 55 30 5f 50 43 ..\/._PR_CPU0_PC 0130: 54 14 16 5f 50 53 53 00 a4 5c 2f 03 5f 50 52 5f T.._PSS..\/._PR_ 0140: 43 50 55 30 5f 50 53 53 14 16 5f 50 53 44 00 a4 CPU0_PSS.._PSD.. 0150: 5c 2f 03 5f 50 52 5f 43 50 55 30 5f 50 53 44 10 \/._PR_CPU0_PSD. 0160: 48 06 5c 2e 5f 50 52 5f 43 50 55 34 14 16 5f 50 H.\._PR_CPU4.._P 0170: 50 43 00 a4 5c 2f 03 5f 50 52 5f 43 50 55 30 5f PC..\/._PR_CPU0_ 0180: 50 50 43 14 16 5f 50 43 54 00 a4 5c 2f 03 5f 50 PPC.._PCT..\/._P 0190: 52 5f 43 50 55 30 5f 50 43 54 14 16 5f 50 53 53 R_CPU0_PCT.._PSS 01a0: 00 a4 5c 2f 03 5f 50 52 5f 43 50 55 30 5f 50 53 ..\/._PR_CPU0_PS 01b0: 53 14 16 5f 50 53 44 00 a4 5c 2f 03 5f 50 52 5f S.._PSD..\/._PR_ 01c0: 43 50 55 30 5f 50 53 44 10 48 06 5c 2e 5f 50 52 CPU0_PSD.H.\._PR 01d0: 5f 43 50 55 35 14 16 5f 50 50 43 00 a4 5c 2f 03 _CPU5.._PPC..\/. 01e0: 5f 50 52 5f 43 50 55 30 5f 50 50 43 14 16 5f 50 _PR_CPU0_PPC.._P 01f0: 43 54 00 a4 5c 2f 03 5f 50 52 5f 43 50 55 30 5f CT..\/._PR_CPU0_ 0200: 50 43 54 14 16 5f 50 53 53 00 a4 5c 2f 03 5f 50 PCT.._PSS..\/._P 0210: 52 5f 43 50 55 30 5f 50 53 53 14 16 5f 50 53 44 R_CPU0_PSS.._PSD 0220: 00 a4 5c 2f 03 5f 50 52 5f 43 50 55 30 5f 50 53 ..\/._PR_CPU0_PS 0230: 44 10 48 06 5c 2e 5f 50 52 5f 43 50 55 36 14 16 D.H.\._PR_CPU6.. 0240: 5f 50 50 43 00 a4 5c 2f 03 5f 50 52 5f 43 50 55 _PPC..\/._PR_CPU 0250: 30 5f 50 50 43 14 16 5f 50 43 54 00 a4 5c 2f 03 0_PPC.._PCT..\/. 0260: 5f 50 52 5f 43 50 55 30 5f 50 43 54 14 16 5f 50 _PR_CPU0_PCT.._P 0270: 53 53 00 a4 5c 2f 03 5f 50 52 5f 43 50 55 30 5f SS..\/._PR_CPU0_ 0280: 50 53 53 14 16 5f 50 53 44 00 a4 5c 2f 03 5f 50 PSS.._PSD..\/._P 0290: 52 5f 43 50 55 30 5f 50 53 44 10 48 06 5c 2e 5f R_CPU0_PSD.H.\._ 02a0: 50 52 5f 43 50 55 37 14 16 5f 50 50 43 00 a4 5c PR_CPU7.._PPC..\ 02b0: 2f 03 5f 50 52 5f 43 50 55 30 5f 50 50 43 14 16 /._PR_CPU0_PPC.. 02c0: 5f 50 43 54 00 a4 5c 2f 03 5f 50 52 5f 43 50 55 _PCT..\/._PR_CPU 02d0: 30 5f 50 43 54 14 16 5f 50 53 53 00 a4 5c 2f 03 0_PCT.._PSS..\/. 02e0: 5f 50 52 5f 43 50 55 30 5f 50 53 53 14 16 5f 50 _PR_CPU0_PSS.._P 02f0: 53 44 00 a4 5c 2f 03 5f 50 52 5f 43 50 55 30 5f SD..\/._PR_CPU0_ 0300: 50 53 44 PSD SSDT5 @ 0x00000000 0000: 53 53 44 54 19 01 00 00 01 ed 50 6d 52 65 66 00 SSDT......PmRef. 0010: 41 70 43 73 74 00 00 00 00 30 00 00 49 4e 54 4c ApCst....0..INTL 0020: 12 11 09 20 10 22 5c 2e 5f 50 52 5f 43 50 55 31 ... ."\._PR_CPU1 0030: 14 16 5f 43 53 54 00 a4 5c 2f 03 5f 50 52 5f 43 .._CST..\/._PR_C 0040: 50 55 30 5f 43 53 54 10 22 5c 2e 5f 50 52 5f 43 PU0_CST."\._PR_C 0050: 50 55 32 14 16 5f 43 53 54 00 a4 5c 2f 03 5f 50 PU2.._CST..\/._P 0060: 52 5f 43 50 55 30 5f 43 53 54 10 22 5c 2e 5f 50 R_CPU0_CST."\._P 0070: 52 5f 43 50 55 33 14 16 5f 43 53 54 00 a4 5c 2f R_CPU3.._CST..\/ 0080: 03 5f 50 52 5f 43 50 55 30 5f 43 53 54 10 22 5c ._PR_CPU0_CST."\ 0090: 2e 5f 50 52 5f 43 50 55 34 14 16 5f 43 53 54 00 ._PR_CPU4.._CST. 00a0: a4 5c 2f 03 5f 50 52 5f 43 50 55 30 5f 43 53 54 .\/._PR_CPU0_CST 00b0: 10 22 5c 2e 5f 50 52 5f 43 50 55 35 14 16 5f 43 ."\._PR_CPU5.._C 00c0: 53 54 00 a4 5c 2f 03 5f 50 52 5f 43 50 55 30 5f ST..\/._PR_CPU0_ 00d0: 43 53 54 10 22 5c 2e 5f 50 52 5f 43 50 55 36 14 CST."\._PR_CPU6. 00e0: 16 5f 43 53 54 00 a4 5c 2f 03 5f 50 52 5f 43 50 ._CST..\/._PR_CP 00f0: 55 30 5f 43 53 54 10 22 5c 2e 5f 50 52 5f 43 50 U0_CST."\._PR_CP 0100: 55 37 14 16 5f 43 53 54 00 a4 5c 2f 03 5f 50 52 U7.._CST..\/._PR 0110: 5f 43 50 55 30 5f 43 53 54 _CPU0_CST fwts-test/wmi-0001/acpidump-0003.log000066400000000000000000012270051231470457100170700ustar00rootroot00000000000000DSDT @ 0x00000000 0000: 44 53 44 54 41 f7 00 00 01 7d 44 45 4c 4c 20 20 DSDTA....}DELL 0010: 51 41 30 39 20 20 20 00 00 10 00 00 4c 4f 48 52 QA09 .....LOHR 0020: 02 00 00 00 5b 80 4e 56 31 5f 01 0a 72 0a 02 5b ....[.NV1_..r..[ 0030: 81 10 4e 56 31 5f 01 49 4e 44 58 08 44 41 54 41 ..NV1_.INDX.DATA 0040: 08 5b 86 20 49 4e 44 58 44 41 54 41 01 00 40 60 .[. INDXDATA..@` 0050: 42 52 47 41 04 00 04 42 52 47 44 04 00 14 53 34 BRGA...BRGD...S4 0060: 46 47 08 10 39 5f 50 52 5f 5b 83 0b 43 30 30 30 FG..9_PR_[..C000 0070: 00 10 08 00 00 06 5b 83 0b 43 30 30 31 01 10 08 ......[..C001... 0080: 00 00 06 5b 83 0b 43 30 30 32 02 10 08 00 00 06 ...[..C002...... 0090: 5b 83 0b 43 30 30 33 03 10 08 00 00 06 08 5f 53 [..C003......._S 00a0: 30 5f 12 0a 04 0a 00 0a 00 0a 00 0a 00 08 5f 53 0_............_S 00b0: 33 5f 12 0a 04 0a 03 0a 03 0a 00 0a 00 08 5f 53 3_............_S 00c0: 34 5f 12 0a 04 0a 04 0a 04 0a 00 0a 00 08 5f 53 4_............_S 00d0: 35 5f 12 0a 04 0a 05 0a 05 0a 00 0a 00 08 54 5a 5_............TZ 00e0: 46 47 0a 00 5b 80 44 45 42 32 01 0a 80 0a 02 5b FG..[.DEB2.....[ 00f0: 81 0b 44 45 42 32 02 50 38 30 48 10 5b 80 50 4d ..DEB2.P80H.[.PM 0100: 49 4f 01 0b d6 0c 0a 02 5b 81 10 50 4d 49 4f 01 IO......[..PMIO. 0110: 50 49 44 58 08 50 44 41 54 08 5b 80 50 30 31 5f PIDX.PDAT.[.P01_ 0120: 01 0b 01 08 0a 01 5b 81 0b 50 30 31 5f 01 50 53 ......[..P01_.PS 0130: 54 31 08 5b 80 53 50 52 54 01 0a b0 0a 02 5b 81 T1.[.SPRT.....[. 0140: 10 53 50 52 54 11 53 53 4d 50 08 53 53 4d 44 08 .SPRT.SSMP.SSMD. 0150: 5b 80 4f 4e 56 53 00 0c 98 0f 34 5e 0b 05 00 5b [.ONVS....4^...[ 0160: 81 1f 4f 4e 56 53 00 42 52 49 44 08 50 57 52 53 ..ONVS.BRID.PWRS 0170: 08 45 43 4f 4e 08 42 52 54 4c 08 4c 49 44 53 08 .ECON.BRTL.LIDS. 0180: 10 4b 2f 5f 53 42 5f 08 4c 49 4e 58 0a 00 08 4f .K/_SB_.LINX...O 0190: 53 53 50 0a 00 08 4f 53 54 42 ff 5b 80 4f 53 54 SSP...OSTB.[.OST 01a0: 59 00 0c 18 0f 34 5e 0c 01 00 00 00 5b 81 0b 4f Y....4^.....[..O 01b0: 53 54 59 00 54 50 4f 53 08 14 46 26 4f 53 54 50 STY.TPOS..F&OSTP 01c0: 00 a0 49 25 93 4f 53 54 42 ff a0 49 16 5b 12 5f ..I%.OSTB..I.[._ 01d0: 4f 53 49 60 70 0a 00 4f 53 54 42 70 0a 00 54 50 OSI`p..OSTBp..TP 01e0: 4f 53 a0 21 5f 4f 53 49 0d 57 69 6e 64 6f 77 73 OS.!_OSI.Windows 01f0: 20 32 30 30 31 00 70 0a 08 4f 53 54 42 70 0a 08 2001.p..OSTBp.. 0200: 54 50 4f 53 a0 23 5f 4f 53 49 0d 57 69 6e 64 6f TPOS.#_OSI.Windo 0210: 77 73 20 32 30 30 31 2e 31 00 70 0a 20 4f 53 54 ws 2001.1.p. OST 0220: 42 70 0a 20 54 50 4f 53 a0 25 5f 4f 53 49 0d 57 Bp. TPOS.%_OSI.W 0230: 69 6e 64 6f 77 73 20 32 30 30 31 20 53 50 31 00 indows 2001 SP1. 0240: 70 0a 10 4f 53 54 42 70 0a 10 54 50 4f 53 a0 25 p..OSTBp..TPOS.% 0250: 5f 4f 53 49 0d 57 69 6e 64 6f 77 73 20 32 30 30 _OSI.Windows 200 0260: 31 20 53 50 32 00 70 0a 11 4f 53 54 42 70 0a 11 1 SP2.p..OSTBp.. 0270: 54 50 4f 53 a0 25 5f 4f 53 49 0d 57 69 6e 64 6f TPOS.%_OSI.Windo 0280: 77 73 20 32 30 30 31 20 53 50 33 00 70 0a 12 4f ws 2001 SP3.p..O 0290: 53 54 42 70 0a 12 54 50 4f 53 a0 21 5f 4f 53 49 STBp..TPOS.!_OSI 02a0: 0d 57 69 6e 64 6f 77 73 20 32 30 30 36 00 70 0a .Windows 2006.p. 02b0: 40 4f 53 54 42 70 0a 40 54 50 4f 53 a0 2c 5f 4f @OSTBp.@TPOS.,_O 02c0: 53 49 0d 57 69 6e 64 6f 77 73 20 32 30 30 36 20 SI.Windows 2006 02d0: 53 50 31 00 70 0a 01 4f 53 53 50 70 0a 40 4f 53 SP1.p..OSSPp.@OS 02e0: 54 42 70 0a 40 54 50 4f 53 a0 28 5f 4f 53 49 0d TBp.@TPOS.(_OSI. 02f0: 57 69 6e 64 6f 77 73 20 32 30 30 39 00 70 0a 01 Windows 2009.p.. 0300: 4f 53 53 50 70 0a 50 4f 53 54 42 70 0a 50 54 50 OSSPp.POSTBp.PTP 0310: 4f 53 a0 21 5f 4f 53 49 0d 4c 69 6e 75 78 00 70 OS.!_OSI.Linux.p 0320: 0a 01 4c 49 4e 58 70 0a 80 4f 53 54 42 70 0a 80 ..LINXp..OSTBp.. 0330: 54 50 4f 53 a1 4c 0c a0 49 0b 5b 12 5f 4f 53 5f TPOS.L..I.[._OS_ 0340: 60 a0 2a 53 45 51 4c 5f 4f 53 5f 0d 4d 69 63 72 `.*SEQL_OS_.Micr 0350: 6f 73 6f 66 74 20 57 69 6e 64 6f 77 73 00 70 0a osoft Windows.p. 0360: 01 4f 53 54 42 70 0a 01 54 50 4f 53 a1 44 08 a0 .OSTBp..TPOS.D.. 0370: 41 04 53 45 51 4c 5f 4f 53 5f 0d 4d 69 63 72 6f A.SEQL_OS_.Micro 0380: 73 6f 66 74 20 57 69 6e 64 6f 77 73 4d 45 3a 20 soft WindowsME: 0390: 4d 69 6c 6c 65 6e 6e 69 75 6d 20 45 64 69 74 69 Millennium Editi 03a0: 6f 6e 00 70 0a 02 4f 53 54 42 70 0a 02 54 50 4f on.p..OSTBp..TPO 03b0: 53 a1 3f a0 2d 53 45 51 4c 5f 4f 53 5f 0d 4d 69 S.?.-SEQL_OS_.Mi 03c0: 63 72 6f 73 6f 66 74 20 57 69 6e 64 6f 77 73 20 crosoft Windows 03d0: 4e 54 00 70 0a 04 4f 53 54 42 70 0a 04 54 50 4f NT.p..OSTBp..TPO 03e0: 53 a1 0f 70 0a 00 4f 53 54 42 70 0a 00 54 50 4f S..p..OSTBp..TPO 03f0: 53 a1 0f 70 0a 00 4f 53 54 42 70 0a 00 54 50 4f S..p..OSTBp..TPO 0400: 53 5e 2f 03 50 43 49 30 4c 50 43 30 50 48 53 31 S^/.PCI0LPC0PHS1 0410: 0a b0 a0 08 93 54 50 4f 53 0a 80 a4 4f 53 54 42 .....TPOS...OSTB 0420: 14 4b 05 53 45 51 4c 0a 70 87 68 60 70 87 69 61 .K.SEQL.p.h`p.ia 0430: a0 07 92 93 60 61 a4 00 08 42 55 46 30 11 02 60 ....`a...BUF0..` 0440: 70 68 42 55 46 30 08 42 55 46 31 11 02 60 70 69 phBUF0.BUF1..`pi 0450: 42 55 46 31 70 00 62 a2 22 95 62 60 70 83 88 42 BUF1p.b.".b`p..B 0460: 55 46 30 62 00 63 70 83 88 42 55 46 31 62 00 64 UF0b.cp..BUF1b.d 0470: a0 07 92 93 63 64 a4 00 75 62 a4 01 08 4d 59 39 ....cd..ub...MY9 0480: 46 0a 00 14 43 08 5f 50 54 53 01 70 0a 01 4d 59 F...C._PTS.p..MY 0490: 39 46 a0 05 93 68 0a 05 a0 21 93 68 0a 04 70 0a 9F...h...!.h..p. 04a0: 01 53 34 46 47 70 00 5c 2f 04 5f 53 42 5f 50 43 .S4FGp.\/._SB_PC 04b0: 49 30 53 4d 42 5f 50 48 59 44 a0 30 93 68 0a 03 I0SMB_PHYD.0.h.. 04c0: 70 00 5c 2f 04 5f 53 42 5f 50 43 49 30 53 4d 42 p.\/._SB_PCI0SMB 04d0: 5f 52 53 54 55 70 0a 01 5c 2f 04 5f 53 42 5f 50 _RSTUp..\/._SB_P 04e0: 43 49 30 53 4d 42 5f 42 4c 4e 4b a0 1b 93 68 0a CI0SMB_BLNK...h. 04f0: 01 70 0a 02 5c 2f 04 5f 53 42 5f 50 43 49 30 53 .p..\/._SB_PCI0S 0500: 4d 42 5f 42 4c 4e 4b 14 43 23 5f 57 41 4b 01 70 MB_BLNK.C#_WAK.p 0510: 0a 00 4d 59 39 46 a0 0f 92 95 5c 2e 5f 53 42 5f ..MY9F....\._SB_ 0520: 54 50 4f 53 0a 40 a0 0e 93 5c 2e 5f 53 42 5f 54 TPOS.@...\._SB_T 0530: 50 4f 53 0a 80 70 54 5a 46 47 60 a0 0c 60 5c 2e POS..pTZFG`..`\. 0540: 5f 54 5a 5f 49 4e 49 54 a0 4c 04 93 68 0a 03 5c _TZ_INIT.L..h..\ 0550: 2e 5f 47 50 45 54 52 49 47 5c 2e 5f 47 50 45 57 ._GPETRIG\._GPEW 0560: 4c 45 4e 70 0a 71 53 53 4d 50 70 01 5c 2f 04 5f LENp.qSSMPp.\/._ 0570: 53 42 5f 50 43 49 30 53 4d 42 5f 52 53 54 55 70 SB_PCI0SMB_RSTUp 0580: 0a 00 5c 2f 04 5f 53 42 5f 50 43 49 30 53 4d 42 ..\/._SB_PCI0SMB 0590: 5f 53 52 42 54 a0 41 08 93 68 0a 04 a0 18 47 50 _SRBT.A..h....GP 05a0: 49 43 5c 2f 04 5f 53 42 5f 50 43 49 30 4c 50 43 IC\/._SB_PCI0LPC 05b0: 30 44 53 50 49 5c 2e 5f 47 50 45 54 52 49 47 5c 0DSPI\._GPETRIG\ 05c0: 2e 5f 47 50 45 57 4c 45 4e 70 01 5c 2f 04 5f 53 ._GPEWLENp.\/._S 05d0: 42 5f 50 43 49 30 53 4d 42 5f 50 48 59 44 70 0a B_PCI0SMB_PHYDp. 05e0: 0f 5c 2f 04 5f 53 42 5f 50 43 49 30 4c 50 43 30 .\/._SB_PCI0LPC0 05f0: 42 43 4d 44 70 0a ab 5c 2f 04 5f 53 42 5f 50 43 BCMDp..\/._SB_PC 0600: 49 30 4c 50 43 30 53 4d 49 43 86 5c 2e 5f 53 42 I0LPC0SMIC.\._SB 0610: 5f 50 57 52 42 0a 02 a0 20 93 68 0a 01 7b 50 53 _PWRB... .h..{PS 0620: 54 31 0a 04 60 a0 12 93 60 0a 00 86 5c 2e 5f 53 T1..`...`...\._S 0630: 42 5f 50 57 52 42 0a 02 70 0a 03 5c 2f 04 5f 53 B_PWRB..p..\/._S 0640: 42 5f 50 43 49 30 53 4d 42 5f 42 4c 4e 4b 86 5c B_PCI0SMB_BLNK.\ 0650: 2e 5f 53 42 5f 50 43 49 30 0a 00 5b 23 5c 2f 05 ._SB_PCI0..[#\/. 0660: 5f 53 42 5f 50 43 49 30 4c 50 43 30 45 43 30 5f _SB_PCI0LPC0EC0_ 0670: 4d 55 54 30 ff ff 70 5c 2f 05 5f 53 42 5f 50 43 MUT0..p\/._SB_PC 0680: 49 30 4c 50 43 30 45 43 30 5f 41 43 49 4e 50 57 I0LPC0EC0_ACINPW 0690: 52 53 5b 27 5c 2f 05 5f 53 42 5f 50 43 49 30 4c RS['\/._SB_PCI0L 06a0: 50 43 30 45 43 30 5f 4d 55 54 30 86 5c 2e 5f 53 PC0EC0_MUT0.\._S 06b0: 42 5f 41 43 41 44 0a 80 5b 23 5c 2f 05 5f 53 42 B_ACAD..[#\/._SB 06c0: 5f 50 43 49 30 4c 50 43 30 45 43 30 5f 4d 55 54 _PCI0LPC0EC0_MUT 06d0: 30 ff ff 70 5c 2f 05 5f 53 42 5f 50 43 49 30 4c 0..p\/._SB_PCI0L 06e0: 50 43 30 45 43 30 5f 42 30 49 4e 5c 2f 03 5f 53 PC0EC0_B0IN\/._S 06f0: 42 5f 42 41 54 54 42 53 54 41 5b 27 5c 2f 05 5f B_BATTBSTA['\/._ 0700: 53 42 5f 50 43 49 30 4c 50 43 30 45 43 30 5f 4d SB_PCI0LPC0EC0_M 0710: 55 54 30 86 5c 2e 5f 53 42 5f 42 41 54 54 0a 80 UT0.\._SB_BATT.. 0720: 70 0a 00 5c 2e 5f 53 42 5f 57 43 41 31 5c 2e 5f p..\._SB_WCA1\._ 0730: 53 42 5f 46 4f 57 4d 0a 11 0a 0b 10 4a 09 5f 53 SB_FOWM.....J._S 0740: 49 5f 14 43 09 5f 53 53 54 01 a0 21 93 68 0a 01 I_.C._SST..!.h.. 0750: 70 0d 3d 3d 3d 3d 3d 20 53 53 54 20 57 6f 72 6b p.===== SST Work 0760: 69 6e 67 20 3d 3d 3d 3d 3d 00 5b 31 a0 20 93 68 ing =====.[1. .h 0770: 0a 02 70 0d 3d 3d 3d 3d 3d 20 53 53 54 20 57 61 ..p.===== SST Wa 0780: 6b 69 6e 67 20 3d 3d 3d 3d 3d 00 5b 31 a0 22 93 king =====.[1.". 0790: 68 0a 03 70 0d 3d 3d 3d 3d 3d 20 53 53 54 20 53 h..p.===== SST S 07a0: 6c 65 65 70 69 6e 67 20 3d 3d 3d 3d 3d 00 5b 31 leeping =====.[1 07b0: a0 25 93 68 0a 04 70 0d 3d 3d 3d 3d 3d 20 53 53 .%.h..p.===== SS 07c0: 54 20 53 6c 65 65 70 69 6e 67 20 53 34 20 3d 3d T Sleeping S4 == 07d0: 3d 3d 3d 00 5b 31 08 47 50 49 43 0a 00 14 22 5f ===.[1.GPIC..."_ 07e0: 50 49 43 01 70 68 47 50 49 43 a0 15 68 5c 2f 04 PIC.phGPIC..h\/. 07f0: 5f 53 42 5f 50 43 49 30 4c 50 43 30 44 53 50 49 _SB_PCI0LPC0DSPI 0800: 10 83 16 0e 5f 53 42 5f 5b 82 4a 7d 41 4d 57 30 ...._SB_[.J}AMW0 0810: 5b 01 57 4d 49 58 01 08 5f 48 49 44 0d 50 4e 50 [.WMIX.._HID.PNP 0820: 30 43 31 34 00 08 5f 55 49 44 0a 00 14 13 53 54 0C14.._UID....ST 0830: 42 59 03 8c 68 69 54 4d 50 5f 70 6a 54 4d 50 5f BY..hiTMP_pjTMP_ 0840: 14 13 53 54 57 44 03 8b 68 69 54 4d 50 5f 70 6a ..STWD..hiTMP_pj 0850: 54 4d 50 5f 14 13 53 54 44 57 03 8a 68 69 54 4d TMP_..STDW..hiTM 0860: 50 5f 70 6a 54 4d 50 5f 14 1a 43 4c 42 59 01 70 P_pjTMP_..CLBY.p 0870: 0a 00 60 a2 0f 95 60 87 68 53 54 42 59 68 60 0a ..`...`.hSTBYh`. 0880: 00 75 60 08 5f 57 44 47 11 4c 07 0a 78 bc dc 9d .u`._WDG.L..x... 0890: 8d 97 a9 da 11 b0 12 b6 22 a1 ef 54 92 41 41 01 ........"..T.AA. 08a0: 00 ce 93 05 a8 97 a9 da 11 b0 12 b6 22 a1 ef 54 ............"..T 08b0: 92 42 41 01 02 70 76 8c dd b5 1c db 11 a9 8b 66 .BA..pv........f 08c0: 9a 0c 20 00 08 42 43 01 02 94 59 bb 9d 97 a9 da .. ..BC...Y..... 08d0: 11 b0 12 b6 22 a1 ef 54 92 d0 00 01 08 e0 6c 77 ...."..T......lw 08e0: a3 88 1e db 11 a9 8b 08 00 20 0c 9a 66 42 43 01 ......... ..fBC. 08f0: 00 21 12 90 05 66 d5 d1 11 b2 f0 00 a0 c9 06 29 .!...f.........) 0900: 10 4d 4f 01 00 08 49 4e 46 4f 11 03 0a 80 8b 49 .MO...INFO.....I 0910: 4e 46 4f 0a 00 49 4e 46 30 8b 49 4e 46 4f 0a 02 NFO..INF0.INFO.. 0920: 49 4e 46 31 8b 49 4e 46 4f 0a 04 49 4e 46 32 8b INF1.INFO..INF2. 0930: 49 4e 46 4f 0a 06 49 4e 46 33 8b 49 4e 46 4f 0a INFO..INF3.INFO. 0940: 08 49 4e 46 34 8b 49 4e 46 4f 0a 0a 49 4e 46 35 .INF4.INFO..INF5 0950: 8b 49 4e 46 4f 0a 0c 49 4e 46 36 8b 49 4e 46 4f .INFO..INF6.INFO 0960: 0a 0e 49 4e 46 37 08 45 43 44 30 0a 00 14 0e 57 ..INF7.ECD0....W 0970: 45 44 30 01 70 68 45 43 44 30 a4 68 14 08 57 43 ED0.phECD0.h..WC 0980: 41 41 01 a4 68 14 4b 06 57 51 41 41 01 5b 23 57 AA..h.K.WQAA.[#W 0990: 4d 49 58 ff ff 43 4c 42 59 49 4e 46 4f a0 0c 92 MIX..CLBYINFO... 09a0: 93 68 0a 00 70 49 4e 46 4f 61 a1 3e 53 54 44 57 .h..pINFOa.>STDW 09b0: 49 4e 46 4f 0a 00 0c 44 45 4c 4c 53 54 44 57 49 INFO...DELLSTDWI 09c0: 4e 46 4f 0a 04 0c 20 57 4d 49 53 54 44 57 49 4e NFO... WMISTDWIN 09d0: 46 4f 0a 08 0a 00 53 54 44 57 49 4e 46 4f 0a 0c FO....STDWINFO.. 09e0: 0b 00 10 70 49 4e 46 4f 61 5b 27 57 4d 49 58 a4 ...pINFOa['WMIX. 09f0: 61 14 08 57 53 41 41 02 a4 69 14 0d 57 4d 49 5f a..WSAA..i..WMI_ 0a00: 02 a4 50 48 57 4d 68 69 14 28 57 4d 42 41 03 8a ..PHWMhi.(WMBA.. 0a10: 6a 0a 28 57 42 55 46 72 57 42 55 46 0a 2c 61 a0 j.(WBUFrWBUF.,a. 0a20: 0f 92 94 61 0b 00 10 70 57 4d 49 5f 6a 61 60 a4 ...a...pWMI_ja`. 0a30: 60 14 08 57 4d 42 43 03 a4 6a 14 24 5f 57 45 44 `..WMBC..j.$_WED 0a40: 01 a0 0a 93 68 0a d0 a4 49 4e 46 4f 43 4c 42 59 ....h...INFOCLBY 0a50: 49 4e 46 4f 70 68 49 4e 46 4f a4 49 4e 46 4f 08 INFOphINFO.INFO. 0a60: 57 51 4d 4f 11 4f 57 0b 7a 05 46 4f 4d 42 01 00 WQMO.OW.z.FOMB.. 0a70: 00 00 6a 05 00 00 98 1c 00 00 44 53 00 01 1a 7d ..j.......DS...} 0a80: da 54 18 d9 8d 00 01 06 18 42 10 0f 10 22 21 04 .T.......B..."!. 0a90: 12 01 a1 c8 2c 0c 86 10 38 2e 84 1c 40 48 1c 14 ....,...8...@H.. 0aa0: 4a 08 84 fa 13 c8 af 00 84 0e 05 c8 14 60 50 80 J............`P. 0ab0: 53 04 11 f4 2a c0 a6 00 93 02 2c 0a d0 2e c0 b2 S...*.....,..... 0ac0: 00 dd 02 a4 c3 12 91 e0 28 31 e0 28 9d d8 c2 0d ........(1.(.... 0ad0: 1b bc 50 14 cd 20 4a 82 ca 05 f8 46 10 78 b9 02 ..P.. J....F.x.. 0ae0: 24 4f 40 9a 05 18 16 60 5d 80 ec 21 50 a9 43 40 $O@....`]..!P.C@ 0af0: c9 19 02 6a 00 ad 4e 40 f8 95 4e 09 49 10 ce 58 ...j..N@..N.I..X 0b00: c5 e3 6b 16 4d cf 49 ce 31 e4 78 5c e8 41 f0 40 ..k.M.I.1.x\.A.@ 0b10: 0a 40 58 78 08 45 80 41 49 18 0b 75 31 6a d4 48 .@Xx.E.AI..u1j.H 0b20: d9 80 0c 51 da a8 d1 03 3a bf 23 39 bb a3 3b 92 ...Q....:.#9..;. 0b30: 04 46 3d a6 63 2c 6c 46 42 8d d1 1c 14 81 c6 0d .F=.c,lFB....... 0b40: da 12 61 35 ae d8 67 66 e1 c3 12 c6 11 1c 58 82 ..a5..gf......X. 0b50: 46 d1 34 c7 b3 0d 91 e0 20 42 63 64 40 c8 f3 b0 F.4..... Bcd@... 0b60: 05 7a e4 09 ec 1e 51 0a 11 34 df 13 a9 51 80 36 .z....Q..4...Q.6 0b70: 0c d9 3a 1b 68 a8 b1 1a 43 11 44 84 a0 51 0c 16 ..:.h...C.D..Q.. 0b80: 21 54 88 ff 7f 94 a8 a7 14 24 6a 65 20 42 0b 66 !T.......$je B.f 0b90: 04 66 7f 10 24 c6 99 41 87 05 cb 00 91 11 41 a3 .f..$..A......A. 0ba0: 61 67 01 0f c7 33 69 7e 62 1a 9c 09 c6 86 90 06 ag...3i~b....... 0bb0: 08 89 3a 38 50 02 4b 19 38 b1 3d 2e 8d ef 8c a3 ..:8P.K.8.=..... 0bc0: 86 38 f5 33 f3 3f c2 5b f0 11 80 8f c1 83 3d 84 .8.3.?.[......=. 0bd0: 80 47 c8 ce 00 06 c4 7b 9f 34 99 8b cf 02 30 86 .G.....{.4....0. 0be0: 0f d7 f8 28 34 1e 76 3e 60 e3 e2 f0 3e 14 9c 70 ...(4.v>`...>..p 0bf0: b1 20 0a 00 21 59 e7 03 f4 ac 8f 2d e0 c3 40 b3 . ..!Y.....-..@. 0c00: 77 08 42 f0 22 e0 a3 83 8f 1b 1e f7 f3 06 18 0e w.B."........... 0c10: 07 1e 8e 4f 1b c0 65 04 5c da 93 c2 04 92 fc 04 ...O..e.\....... 0c20: 90 18 18 d4 81 c0 07 0b b8 92 e0 50 c3 f3 c4 1e ...........P.... 0c30: 10 fe ff 47 79 22 2f 06 9e fe 63 00 8c 03 82 a7 ...Gy"/...c..... 0c40: 75 52 be 79 3c 48 78 50 61 12 f8 94 c0 d0 f8 71 uR.y 0cc0: 4e f8 5c 80 77 0d a8 19 fa b0 01 e7 d0 81 3f 4d N.\.w.........?M 0cd0: e0 0f 16 f8 f1 f8 9a c3 26 9c c0 f2 07 81 1a 99 ........&....... 0ce0: a1 3d cb d3 7a 0d f0 69 c7 04 3e 6f f8 ff ff cf .=..z..i..>o.... 0cf0: f1 78 c0 af f8 74 41 ee 0a 9e af cf 2e cc c6 78 .x...tA........x 0d00: 50 a3 f0 01 07 77 76 f1 11 c0 67 17 e0 39 89 67 P....wv...g..9.g 0d10: 09 f0 1e 02 7c 22 89 f7 b0 05 63 c4 78 c8 33 ae ....|"....c.x.3. 0d20: 7a 18 ba 08 58 dd 7d 05 75 f4 02 13 d4 6b 06 ee z...X.}.u....k.. 0d30: f4 02 7c 4e 59 f0 fe ff a7 2c e0 7e 55 e0 47 14 ..|NY....,.~U.G. 0d40: 30 40 76 76 3a 11 c2 7b c9 73 88 6f 57 3e 98 04 0@vv:..{.s.oW>.. 0d50: 79 0e 88 f0 94 c5 ef 03 51 62 1e 50 a4 28 46 0c y.......Qb.P.(F. 0d60: f2 84 e5 eb 49 0c 43 07 0b 17 3e c2 53 16 60 f1 ....I.C...>.S.`. 0d70: 92 85 39 65 c1 7c 1b f8 94 05 8e ff ff 29 0b 5c ..9e.|.......).\ 0d80: e3 7e ca 02 66 d2 9f 02 3e d5 f8 09 a0 e8 07 0b .~..f...>....... 0d90: 0a e3 53 16 e0 4a de 01 01 34 67 27 df 16 0c 76 ..S..J...4g'...v 0da0: cc be 64 f8 94 08 86 43 86 ef 54 87 f2 c8 f1 14 ..d....C..T..... 0db0: e0 23 16 d8 e3 1c 03 74 5c f1 11 cb ff ff 23 16 .#.....t\.....#. 0dc0: c0 8d 03 08 fe d4 01 eb 1e 10 d6 87 0e e0 21 fb ..............!. 0dd0: 21 a0 33 8c 25 83 c8 c6 b9 86 8e d1 e2 17 aa 9b !.3.%........... 0de0: 42 ec 83 e1 b2 81 04 ea e1 5a 30 85 44 d1 68 34 B........Z0.D.h4 0df0: 06 26 30 82 33 88 01 9d 11 42 87 32 9c 8a f3 10 .&0.3....B.2.... 0e00: ea ff 4f 30 d4 8d 89 ce ce f3 e7 b7 11 9f 08 0c ..O0............ 0e10: ec 2b c4 5b 06 58 86 e5 c5 3d 01 1c e3 49 26 a8 .+.[.X...=...I&. 0e20: e6 58 83 9a 83 af 02 6f 64 26 f0 15 0c 6c a7 19 .X.....od&...l.. 0e30: 8c be 3b 01 28 80 7c 14 f0 7d f9 6d 80 cd e2 95 ..;.(.|..}.m.... 0e40: d9 68 3e 7f 22 86 8e 12 33 74 0a e2 a1 3b e8 d0 .h>."...3t...;.. 0e50: d1 c7 01 9f ac 70 c1 0e 5f d0 26 77 b4 27 e6 59 .....p.._.&w.'.Y 0e60: 78 9e b8 b9 83 e9 88 04 63 f0 98 c9 83 59 e0 e4 x.......c....Y.. 0e70: 41 f1 ff 9f 3c 4c 78 4c d8 c3 21 3d 74 78 64 7c A....0..9..g.;.3.. 0e90: d6 23 e7 b0 46 0b 7b c0 cf 21 be c3 f8 c0 c3 60 .#..F.{..!.....` 0ea0: 7d 7a 01 c7 f1 0b fe 69 00 3c 07 10 8f e1 05 84 }z.....i.<...... 0eb0: 13 14 7d fe a5 42 17 27 99 30 a8 d3 14 e0 ea f4 ..}..B.'.0...... 0ec0: 06 9e ab 3e ee 2c 85 fb ff 9f a5 60 1c 7e 7d 81 ...>.,.....`.~}. 0ed0: f7 5d ca 08 07 f2 2c 05 f6 f8 cf 10 1d 02 7c 96 .]....,.......|. 0ee0: 02 f8 21 e4 4c 09 e5 3c 83 0b 7e a6 04 5a ff ff ..!.L..<..~..Z.. 0ef0: 53 08 f8 8f 11 3e e2 c0 3d 54 f2 00 87 30 28 87 S....>..=T...0(. 0f00: 4a b8 c7 5f 70 1c 8e f9 39 03 77 24 03 1e a7 67 J.._p...9.w$...g 0f10: dc 28 3d 04 3e 80 56 e7 46 4e 3e a7 84 3b 12 f0 .(=.>.V.FN>..;.. 0f20: 29 e1 06 80 09 70 ce 04 d4 fc ff cf 99 80 01 90 )....p.......... 0f30: 08 ef 0a 51 df 93 0d f1 9c cc 70 5e 22 1e 61 9e ...Q......p^".a. 0f40: 93 c1 79 ce 04 f8 f2 ff 3f d6 c3 be 29 04 7f 0a ..y.....?...)... 0f50: 01 26 e2 cf 99 54 f8 39 13 da 5c 3c 6d 9f 33 01 .&...T.9..\..>.p.. 6830: 50 49 30 5f 70 50 49 5f 5f 60 70 0a 00 61 a2 10 PI0_pPI__`p..a.. 6840: 60 a0 08 7b 60 0a 01 00 75 61 7a 60 0a 01 60 70 `..{`...uaz`..`p 6850: 76 61 4e 50 4f 54 70 0a 00 57 52 45 4e 5b 82 46 vaNPOTp..WREN[.F 6860: 06 50 52 54 31 08 5f 41 44 52 0a 01 14 22 5f 53 .PRT1._ADR..."_S 6870: 54 41 00 a0 16 93 5e 5e 5e 2e 41 46 44 5f 4f 44 TA....^^^.AFD_OD 6880: 5a 50 0c 01 00 00 80 a4 0a 00 a1 04 a4 0a 0f 14 ZP.............. 6890: 0e 44 49 53 5f 00 45 4e 50 5f 0a 01 0a 00 14 0e .DIS_.ENP_...... 68a0: 45 4e 41 5f 00 45 4e 50 5f 0a 01 0a 01 5b 82 16 ENA_.ENP_....[.. 68b0: 4f 44 44 5f 08 5f 41 44 52 0a 00 14 09 5f 52 4d ODD_._ADR...._RM 68c0: 56 00 a4 0a 01 5b 82 24 50 52 54 32 08 5f 41 44 V....[.$PRT2._AD 68d0: 52 0a 02 5b 82 16 45 53 41 54 08 5f 41 44 52 0a R..[..ESAT._ADR. 68e0: 00 14 09 5f 52 4d 56 00 a4 0a 01 5b 82 24 50 52 ..._RMV....[.$PR 68f0: 54 33 08 5f 41 44 52 0a 03 5b 82 16 45 53 41 54 T3._ADR..[..ESAT 6900: 08 5f 41 44 52 0a 00 14 09 5f 52 4d 56 00 a4 0a ._ADR...._RMV... 6910: 01 5b 82 24 50 52 54 34 08 5f 41 44 52 0a 04 5b .[.$PRT4._ADR..[ 6920: 82 16 45 53 41 54 08 5f 41 44 52 0a 00 14 09 5f ..ESAT._ADR...._ 6930: 52 4d 56 00 a4 0a 01 5b 82 24 50 52 54 35 08 5f RMV....[.$PRT5._ 6940: 41 44 52 0a 05 5b 82 16 45 53 41 54 08 5f 41 44 ADR..[..ESAT._AD 6950: 52 0a 00 14 09 5f 52 4d 56 00 a4 0a 01 5b 82 48 R...._RMV....[.H 6960: 87 53 4d 42 5f 08 5f 41 44 52 0c 00 00 14 00 5b .SMB_._ADR.....[ 6970: 80 53 42 52 56 02 0a 08 0b 00 01 5b 81 48 04 53 .SBRV......[.H.S 6980: 42 52 56 00 52 56 49 44 08 00 48 05 48 50 42 53 BRV.RVID..H.HPBS 6990: 20 00 48 15 00 03 48 49 48 50 01 00 44 0f 49 31 .H...HIHP..D.I1 69a0: 46 5f 01 49 31 32 46 01 00 0e 00 0a 48 50 45 54 F_.I12F.....HPET 69b0: 01 00 45 0e 00 02 47 33 31 4f 01 00 45 2f 00 06 ..E...G31O..E/.. 69c0: 41 43 49 52 01 5b 80 50 4d 49 4f 01 0b d6 0c 0a ACIR.[.PMIO..... 69d0: 02 5b 81 10 50 4d 49 4f 01 49 4e 50 4d 08 44 41 .[..PMIO.INPM.DA 69e0: 50 4d 08 5b 86 1a 49 4e 50 4d 44 41 50 4d 01 00 PM.[..INPMDAPM.. 69f0: 40 12 4d 4d 53 4f 20 00 40 1c 50 31 45 42 10 5b @.MMSO .@.P1EB.[ 6a00: 80 45 52 4d 4d 00 4d 4d 53 4f 0b 00 10 5b 81 45 .ERMM.MMSO...[.E 6a10: 71 45 52 4d 4d 00 00 40 80 00 05 50 30 31 45 01 qERMM..@...P01E. 6a20: 50 30 31 4f 01 50 30 31 49 01 00 20 00 05 50 30 P01O.P01I.. ..P0 6a30: 36 45 01 50 30 36 4f 01 50 30 36 49 01 00 05 50 6E.P06O.P06I...P 6a40: 30 37 45 01 50 30 37 4f 01 50 30 37 49 01 00 18 07E.P07O.P07I... 6a50: 00 05 50 30 42 45 01 50 30 42 4f 01 50 30 42 49 ..P0BE.P0BO.P0BI 6a60: 01 00 05 50 30 43 45 01 50 30 43 4f 01 50 30 43 ...P0CE.P0CO.P0C 6a70: 49 01 00 05 50 30 44 45 01 50 30 44 4f 01 50 30 I...P0DE.P0DO.P0 6a80: 44 49 01 00 05 50 30 45 45 01 50 30 45 4f 01 50 DI...P0EE.P0EO.P 6a90: 30 45 49 01 00 05 50 30 46 45 01 50 30 46 4f 01 0EI...P0FE.P0FO. 6aa0: 50 30 46 49 01 00 05 50 31 30 45 01 50 31 30 4f P0FI...P10E.P10O 6ab0: 01 50 31 30 49 01 00 18 00 05 50 31 34 45 01 50 .P10I.....P14E.P 6ac0: 31 34 4f 01 50 31 34 49 01 00 05 50 31 35 45 01 14O.P14I...P15E. 6ad0: 50 31 35 4f 01 50 31 35 49 01 00 05 50 31 36 45 P15O.P15I...P16E 6ae0: 01 50 31 36 4f 01 50 31 36 49 01 00 05 50 31 37 .P16O.P16I...P17 6af0: 45 01 50 31 37 4f 01 50 31 37 49 01 00 18 00 05 E.P17O.P17I..... 6b00: 50 31 42 45 01 50 31 42 4f 01 50 31 42 49 01 00 P1BE.P1BO.P1BI.. 6b10: 05 50 31 43 45 01 50 31 43 4f 01 50 31 43 49 01 .P1CE.P1CO.P1CI. 6b20: 00 18 00 05 50 32 30 45 01 50 32 30 4f 01 50 32 ....P20E.P20O.P2 6b30: 30 49 01 00 05 50 32 31 45 01 50 32 31 4f 01 50 0I...P21E.P21O.P 6b40: 32 31 49 01 00 05 50 32 32 45 01 50 32 32 4f 01 21I...P22E.P22O. 6b50: 50 32 32 49 01 00 05 50 32 33 45 01 50 32 33 4f P22I...P23E.P23O 6b60: 01 50 32 33 49 01 00 28 00 01 50 32 39 48 01 50 .P23I..(..P29H.P 6b70: 32 39 53 01 50 32 39 55 01 50 32 39 44 01 50 32 29S.P29U.P29D.P2 6b80: 39 45 01 50 32 39 4f 01 50 32 39 49 01 00 10 00 9E.P29O.P29I.... 6b90: 05 50 32 43 45 01 50 32 43 4f 01 50 32 43 49 01 .P2CE.P2CO.P2CI. 6ba0: 00 05 50 32 44 45 01 50 32 44 4f 01 50 32 44 49 ..P2DE.P2DO.P2DI 6bb0: 01 00 01 50 32 45 48 01 50 32 45 53 01 50 32 45 ...P2EH.P2ES.P2E 6bc0: 55 01 50 32 45 44 01 50 32 45 45 01 50 32 45 4f U.P2ED.P2EE.P2EO 6bd0: 01 50 32 45 49 01 00 20 00 05 50 33 33 45 01 50 .P2EI.. ..P33E.P 6be0: 33 33 4f 01 50 33 33 49 01 00 08 00 05 50 33 35 33O.P33I.....P35 6bf0: 45 01 50 33 35 4f 01 50 33 35 49 01 00 08 00 05 E.P35O.P35I..... 6c00: 50 33 37 45 01 50 33 37 4f 01 50 33 37 49 01 00 P37E.P37O.P37I.. 6c10: 08 00 05 50 33 39 45 01 50 33 39 4f 01 50 33 39 ...P39E.P39O.P39 6c20: 49 01 00 08 00 05 50 33 42 45 01 50 33 42 4f 01 I.....P3BE.P3BO. 6c30: 50 33 42 49 01 00 08 50 4f 33 44 08 00 01 50 33 P3BI...PO3D...P3 6c40: 45 48 01 50 33 45 53 01 50 33 45 55 01 50 33 45 EH.P3ES.P3EU.P3E 6c50: 44 01 50 33 45 45 01 50 33 45 4f 01 50 33 45 49 D.P3EE.P3EO.P3EI 6c60: 01 00 01 50 33 46 48 01 50 33 46 53 01 50 33 46 ...P3FH.P3FS.P3F 6c70: 55 01 50 33 46 44 01 50 33 46 45 01 50 33 46 4f U.P3FD.P3FE.P3FO 6c80: 01 50 33 46 49 01 00 01 50 34 30 48 01 50 34 30 .P3FI...P40H.P40 6c90: 53 01 50 34 30 55 01 50 34 30 44 01 50 34 30 45 S.P40U.P40D.P40E 6ca0: 01 50 34 30 4f 01 50 34 30 49 01 00 08 00 05 50 .P40O.P40I.....P 6cb0: 34 32 45 01 50 34 32 4f 01 50 34 32 49 01 00 40 42E.P42O.P42I..@ 6cc0: 11 00 07 47 45 30 35 01 00 05 50 36 36 45 01 50 ...GE05...P66E.P 6cd0: 36 36 4f 01 50 36 36 49 01 00 20 47 45 31 31 08 66O.P66I.. GE11. 6ce0: 00 05 50 36 43 45 01 50 36 43 4f 01 50 36 43 49 ..P6CE.P6CO.P6CI 6cf0: 01 00 10 00 07 47 45 31 35 01 00 07 47 45 31 36 .....GE15...GE16 6d00: 01 00 20 47 45 32 31 08 00 07 47 45 32 32 01 00 .. GE21...GE22.. 6d10: 48 17 50 4f 41 36 08 00 18 00 05 50 41 41 45 01 H.POA6.....PAAE. 6d20: 50 41 41 4f 01 50 41 41 49 01 00 20 00 05 50 41 PAAO.PAAI.. ..PA 6d30: 46 45 01 50 41 46 4f 01 50 41 46 49 01 00 05 50 FE.PAFO.PAFI...P 6d40: 42 30 45 01 50 42 30 4f 01 50 42 30 49 01 00 05 B0E.PB0O.PB0I... 6d50: 50 42 31 45 01 50 42 31 4f 01 50 42 31 49 01 00 PB1E.PB1O.PB1I.. 6d60: 05 50 42 32 45 01 50 42 32 4f 01 50 42 32 49 01 .PB2E.PB2O.PB2I. 6d70: 00 05 50 42 33 45 01 50 42 33 4f 01 50 42 33 49 ..PB3E.PB3O.PB3I 6d80: 01 00 05 50 42 34 45 01 50 42 34 4f 01 50 42 34 ...PB4E.PB4O.PB4 6d90: 49 01 00 05 50 42 35 45 01 50 42 35 4f 01 50 42 I...PB5E.PB5O.PB 6da0: 35 49 01 00 05 50 42 36 45 01 50 42 36 4f 01 50 5I...PB6E.PB6O.P 6db0: 42 36 49 01 00 40 07 00 05 50 43 35 45 01 50 43 B6I..@...PC5E.PC 6dc0: 35 4f 01 50 43 35 49 01 00 08 00 05 50 43 37 45 5O.PC5I.....PC7E 6dd0: 01 50 43 37 4f 01 50 43 37 49 01 00 05 50 43 38 .PC7O.PC7I...PC8 6de0: 45 01 50 43 38 4f 01 50 43 38 49 01 00 48 1b 00 E.PC8O.PC8I..H.. 6df0: 01 45 30 31 53 01 00 03 45 30 35 53 01 00 09 45 .E01S...E05S...E 6e00: 31 35 53 01 45 31 36 53 01 00 05 45 32 32 53 01 15S.E16S...E22S. 6e10: 00 09 00 01 45 30 31 45 01 00 03 45 30 35 45 01 ....E01E...E05E. 6e20: 00 09 45 31 35 45 01 45 31 36 45 01 00 05 45 32 ..E15E.E16E...E2 6e30: 32 45 01 00 09 00 01 45 30 31 43 01 00 03 45 30 2E.....E01C...E0 6e40: 35 43 01 00 09 45 31 35 43 01 45 31 36 43 01 00 5C...E15C.E16C.. 6e50: 05 45 32 32 43 01 00 03 45 32 36 43 01 00 05 00 .E22C...E26C.... 6e60: 01 45 30 31 4c 01 00 03 45 30 35 4c 01 00 09 45 .E01L...E05L...E 6e70: 31 35 4c 01 45 31 36 4c 01 00 05 45 32 32 4c 01 15L.E16L...E22L. 6e80: 00 49 3c 00 01 43 4c 50 53 01 00 46 08 00 07 47 .I<..CLPS..F...G 6e90: 31 35 41 01 00 40 09 00 06 53 52 42 54 02 00 18 15A..@...SRBT... 6ea0: 00 02 53 4c 50 53 02 00 0c 00 04 53 50 42 54 02 ..SLPS.....SPBT. 6eb0: 00 4a 57 00 06 4d 54 33 41 01 00 41 0a 45 50 4e .JW..MT3A..A.EPN 6ec0: 4d 01 44 50 50 46 01 00 4e 21 00 06 50 57 44 45 M.DPPF..N!..PWDE 6ed0: 01 00 11 00 05 41 4c 4c 53 01 00 4a 04 00 02 54 .....ALLS..J...T 6ee0: 46 54 45 01 00 45 0b 42 4c 4e 4b 02 00 46 08 50 FTE..E.BLNK..F.P 6ef0: 48 59 44 01 00 01 52 53 54 55 01 55 53 35 52 01 HYD...RSTU.US5R. 6f00: 00 4c 07 46 30 43 54 08 46 30 4d 53 08 46 30 46 .L.F0CT.F0MS.F0F 6f10: 51 08 46 30 4c 44 08 46 30 4d 44 08 46 30 4d 50 Q.F0LD.F0MD.F0MP 6f20: 08 4c 54 30 4c 08 4c 54 30 48 08 4d 54 30 4c 08 .LT0L.LT0H.MT0L. 6f30: 4d 54 30 48 08 48 54 30 4c 08 48 54 30 48 08 4c MT0H.HT0L.HT0H.L 6f40: 52 47 30 08 4c 48 43 30 08 00 10 46 31 43 54 08 RG0.LHC0...F1CT. 6f50: 46 31 4d 53 08 46 31 46 51 08 46 31 4c 44 08 46 F1MS.F1FQ.F1LD.F 6f60: 31 4d 44 08 46 31 4d 50 08 4c 54 31 4c 08 4c 54 1MD.F1MP.LT1L.LT 6f70: 31 48 08 4d 54 31 4c 08 4d 54 31 48 08 48 54 31 1H.MT1L.MT1H.HT1 6f80: 4c 08 48 54 31 48 08 4c 52 47 31 08 4c 48 43 31 L.HT1H.LRG1.LHC1 6f90: 08 00 10 46 32 43 54 08 46 32 4d 53 08 46 32 46 ...F2CT.F2MS.F2F 6fa0: 51 08 46 32 4c 44 08 46 32 4d 44 08 46 32 4d 50 Q.F2LD.F2MD.F2MP 6fb0: 08 4c 54 32 4c 08 4c 54 32 48 08 4d 54 32 4c 08 .LT2L.LT2H.MT2L. 6fc0: 4d 54 32 48 08 48 54 32 4c 08 48 54 32 48 08 4c MT2H.HT2L.HT2H.L 6fd0: 52 47 32 08 4c 48 43 32 08 00 10 46 33 43 54 08 RG2.LHC2...F3CT. 6fe0: 46 33 4d 53 08 46 33 46 51 08 46 33 4c 44 08 46 F3MS.F3FQ.F3LD.F 6ff0: 33 4d 44 08 46 33 4d 50 08 4c 54 33 4c 08 4c 54 3MD.F3MP.LT3L.LT 7000: 33 48 08 4d 54 33 4c 08 4d 54 33 48 08 48 54 33 3H.MT3L.MT3H.HT3 7010: 4c 08 48 54 33 48 08 4c 52 47 33 08 4c 48 43 33 L.HT3H.LRG3.LHC3 7020: 08 00 80 61 01 53 45 43 5f 08 00 08 4d 49 4e 5f ...a.SEC_...MIN_ 7030: 08 00 80 ff 02 4d 58 30 31 08 00 28 4d 58 30 37 .....MX01..(MX07 7040: 08 00 30 4d 58 31 34 08 4d 58 31 35 08 4d 58 31 ..0MX14.MX15.MX1 7050: 36 08 00 20 4d 58 32 31 08 4d 58 32 32 08 4d 58 6.. MX21.MX22.MX 7060: 32 33 08 00 18 4d 58 32 37 08 4d 58 32 38 08 00 23...MX27.MX28.. 7070: 18 4d 58 33 32 08 4d 58 33 33 08 4d 58 33 34 08 .MX32.MX33.MX34. 7080: 00 30 4d 58 34 31 08 00 10 4d 58 34 34 08 00 40 .0MX41...MX44..@ 7090: 04 4d 58 35 33 08 00 18 4d 58 35 37 08 4d 58 35 .MX53...MX57.MX5 70a0: 38 08 4d 58 35 39 08 00 30 4d 58 36 36 08 00 48 8.MX59..0MX66..H 70b0: 11 4d 31 30 32 08 00 28 4d 31 30 38 08 00 48 1e .M102..(M108..H. 70c0: 4d 31 37 30 08 00 20 4d 31 37 35 08 4d 31 37 36 M170.. M175.M176 70d0: 08 00 18 4d 31 38 30 08 4d 31 38 31 08 4d 31 38 ...M180.M181.M18 70e0: 32 08 00 40 07 4d 31 39 37 08 00 08 4d 31 39 39 2..@.M197...M199 70f0: 08 4d 32 30 30 08 00 48 1b 4d 53 30 30 08 4d 53 .M200..H.MS00.MS 7100: 30 31 08 4d 53 30 32 08 4d 53 30 33 08 4d 53 30 01.MS02.MS03.MS0 7110: 34 08 00 48 1d 4d 53 34 30 08 00 40 20 00 02 45 4..H.MS40..@ ..E 7120: 43 45 53 01 5b 80 50 31 45 30 01 50 31 45 42 0a CES.[.P1E0.P1EB. 7130: 04 5b 81 19 50 31 45 30 01 00 0e 50 45 57 53 01 .[..P1E0...PEWS. 7140: 57 53 54 41 01 00 0e 50 45 57 44 01 14 0c 54 52 WSTA...PEWD...TR 7150: 4d 44 00 70 00 54 46 54 45 14 06 48 54 43 44 00 MD.p.TFTE..HTCD. 7160: 5b 80 41 42 49 4f 01 0b d8 0c 0a 08 5b 81 10 41 [.ABIO......[..A 7170: 42 49 4f 03 49 4e 41 42 20 44 41 41 42 20 14 11 BIO.INAB DAAB .. 7180: 52 44 41 42 01 70 68 49 4e 41 42 a4 44 41 41 42 RDAB.phINAB.DAAB 7190: 14 12 57 54 41 42 02 70 68 49 4e 41 42 70 69 44 ..WTAB.phINABpiD 71a0: 41 41 42 14 18 52 57 41 42 03 7b 52 44 41 42 68 AAB..RWAB.{RDABh 71b0: 69 60 7d 60 6a 61 57 54 41 42 68 61 14 1a 43 41 i`}`jaWTABha..CA 71c0: 42 52 03 79 68 0a 05 60 72 60 69 61 79 61 0a 18 BR.yh..`r`iaya.. 71d0: 62 72 62 6a 63 a4 63 5b 82 81 c5 01 4c 50 43 30 brbjc.c[....LPC0 71e0: 08 5f 41 44 52 0c 03 00 14 00 5b 80 50 49 52 51 ._ADR.....[.PIRQ 71f0: 01 0b 00 0c 0a 02 5b 81 10 50 49 52 51 01 50 49 ......[..PIRQ.PI 7200: 49 44 08 50 49 44 41 08 5b 86 43 09 50 49 49 44 ID.PIDA.[.C.PIID 7210: 50 49 44 41 01 50 49 52 41 08 50 49 52 42 08 50 PIDA.PIRA.PIRB.P 7220: 49 52 43 08 50 49 52 44 08 50 49 52 45 08 50 49 IRC.PIRD.PIRE.PI 7230: 52 46 08 50 49 52 47 08 50 49 52 48 08 00 40 04 RF.PIRG.PIRH..@. 7240: 50 49 52 53 08 00 10 48 44 41 44 08 00 08 47 45 PIRS...HDAD...GE 7250: 43 5f 08 00 40 0d 55 53 42 31 08 55 53 42 32 08 C_..@.USB1.USB2. 7260: 55 53 42 33 08 55 53 42 34 08 55 53 42 35 08 55 USB3.USB4.USB5.U 7270: 53 42 36 08 55 53 42 37 08 00 48 04 49 44 45 5f SB6.USB7..H.IDE_ 7280: 08 53 41 54 41 08 00 40 07 47 50 50 30 08 47 50 .SATA..@.GPP0.GP 7290: 50 31 08 47 50 50 32 08 47 50 50 33 08 08 49 50 P1.GPP2.GPP3..IP 72a0: 52 53 11 09 0a 06 23 00 0c 18 79 00 08 55 50 52 RS....#...y..UPR 72b0: 53 11 09 0a 06 23 b8 00 08 79 00 14 3a 44 53 50 S....#...y..:DSP 72c0: 49 00 49 4e 54 41 0a 1f 49 4e 54 42 0a 1f 49 4e I.INTA..INTB..IN 72d0: 54 43 0a 1f 49 4e 54 44 0a 1f 70 0a 1f 50 49 52 TC..INTD..p..PIR 72e0: 45 70 0a 1f 50 49 52 46 70 0a 1f 50 49 52 47 70 Ep..PIRFp..PIRGp 72f0: 0a 1f 50 49 52 48 14 1e 49 4e 54 41 01 70 68 50 ..PIRH..INTA.phP 7300: 49 52 41 70 68 48 44 41 44 70 68 47 45 43 5f 70 IRAphHDADphGEC_p 7310: 68 47 50 50 30 14 2a 49 4e 54 42 01 70 68 50 49 hGPP0.*INTB.phPI 7320: 52 42 70 68 55 53 42 32 70 68 55 53 42 34 70 68 RBphUSB2phUSB4ph 7330: 55 53 42 36 70 68 47 50 50 31 70 68 49 44 45 5f USB6phGPP1phIDE_ 7340: 14 2a 49 4e 54 43 01 70 68 50 49 52 43 70 68 55 .*INTC.phPIRCphU 7350: 53 42 31 70 68 55 53 42 33 70 68 55 53 42 35 70 SB1phUSB3phUSB5p 7360: 68 55 53 42 37 70 68 47 50 50 32 14 18 49 4e 54 hUSB7phGPP2..INT 7370: 44 01 70 68 50 49 52 44 70 68 53 41 54 41 70 68 D.phPIRDphSATAph 7380: 47 50 50 33 5b 82 43 08 4c 4e 4b 41 08 5f 48 49 GPP3[.C.LNKA._HI 7390: 44 0c 41 d0 0c 0f 08 5f 55 49 44 0a 01 14 14 5f D.A...._UID...._ 73a0: 53 54 41 00 a0 08 50 49 52 41 a4 0a 0b a1 04 a4 STA...PIRA...... 73b0: 0a 09 14 0b 5f 50 52 53 00 a4 49 50 52 53 14 0c ...._PRS..IPRS.. 73c0: 5f 44 49 53 00 49 4e 54 41 0a 1f 14 21 5f 43 52 _DIS.INTA...!_CR 73d0: 53 00 70 49 50 52 53 60 8b 60 0a 01 49 52 51 30 S.pIPRS`.`..IRQ0 73e0: 79 0a 01 50 49 52 41 49 52 51 30 a4 60 14 1b 5f y..PIRAIRQ0.`.._ 73f0: 53 52 53 01 8b 68 0a 01 49 52 51 30 82 49 52 51 SRS..h..IRQ0.IRQ 7400: 30 60 76 60 49 4e 54 41 60 5b 82 43 08 4c 4e 4b 0`v`INTA`[.C.LNK 7410: 42 08 5f 48 49 44 0c 41 d0 0c 0f 08 5f 55 49 44 B._HID.A...._UID 7420: 0a 02 14 14 5f 53 54 41 00 a0 08 50 49 52 42 a4 ...._STA...PIRB. 7430: 0a 0b a1 04 a4 0a 09 14 0b 5f 50 52 53 00 a4 49 ........._PRS..I 7440: 50 52 53 14 0c 5f 44 49 53 00 49 4e 54 42 0a 1f PRS.._DIS.INTB.. 7450: 14 21 5f 43 52 53 00 70 49 50 52 53 60 8b 60 0a .!_CRS.pIPRS`.`. 7460: 01 49 52 51 30 79 0a 01 50 49 52 42 49 52 51 30 .IRQ0y..PIRBIRQ0 7470: a4 60 14 1b 5f 53 52 53 01 8b 68 0a 01 49 52 51 .`.._SRS..h..IRQ 7480: 30 82 49 52 51 30 60 76 60 49 4e 54 42 60 5b 82 0.IRQ0`v`INTB`[. 7490: 43 08 4c 4e 4b 43 08 5f 48 49 44 0c 41 d0 0c 0f C.LNKC._HID.A... 74a0: 08 5f 55 49 44 0a 03 14 14 5f 53 54 41 00 a0 08 ._UID...._STA... 74b0: 50 49 52 43 a4 0a 0b a1 04 a4 0a 09 14 0b 5f 50 PIRC.........._P 74c0: 52 53 00 a4 49 50 52 53 14 0c 5f 44 49 53 00 49 RS..IPRS.._DIS.I 74d0: 4e 54 43 0a 1f 14 21 5f 43 52 53 00 70 49 50 52 NTC...!_CRS.pIPR 74e0: 53 60 8b 60 0a 01 49 52 51 30 79 0a 01 50 49 52 S`.`..IRQ0y..PIR 74f0: 43 49 52 51 30 a4 60 14 1b 5f 53 52 53 01 8b 68 CIRQ0.`.._SRS..h 7500: 0a 01 49 52 51 30 82 49 52 51 30 60 76 60 49 4e ..IRQ0.IRQ0`v`IN 7510: 54 43 60 5b 82 43 08 4c 4e 4b 44 08 5f 48 49 44 TC`[.C.LNKD._HID 7520: 0c 41 d0 0c 0f 08 5f 55 49 44 0a 04 14 14 5f 53 .A...._UID...._S 7530: 54 41 00 a0 08 50 49 52 44 a4 0a 0b a1 04 a4 0a TA...PIRD....... 7540: 09 14 0b 5f 50 52 53 00 a4 49 50 52 53 14 0c 5f ..._PRS..IPRS.._ 7550: 44 49 53 00 49 4e 54 44 0a 1f 14 21 5f 43 52 53 DIS.INTD...!_CRS 7560: 00 70 49 50 52 53 60 8b 60 0a 01 49 52 51 30 79 .pIPRS`.`..IRQ0y 7570: 0a 01 50 49 52 44 49 52 51 30 a4 60 14 1b 5f 53 ..PIRDIRQ0.`.._S 7580: 52 53 01 8b 68 0a 01 49 52 51 30 82 49 52 51 30 RS..h..IRQ0.IRQ0 7590: 60 76 60 49 4e 54 44 60 5b 82 45 08 4c 4e 4b 45 `v`INTD`[.E.LNKE 75a0: 08 5f 48 49 44 0c 41 d0 0c 0f 08 5f 55 49 44 0a ._HID.A...._UID. 75b0: 05 14 14 5f 53 54 41 00 a0 08 50 49 52 45 a4 0a ..._STA...PIRE.. 75c0: 0b a1 04 a4 0a 09 14 0b 5f 50 52 53 00 a4 49 50 ........_PRS..IP 75d0: 52 53 14 0d 5f 44 49 53 00 70 0a 1f 50 49 52 45 RS.._DIS.p..PIRE 75e0: 14 21 5f 43 52 53 00 70 49 50 52 53 60 8b 60 0a .!_CRS.pIPRS`.`. 75f0: 01 49 52 51 30 79 0a 01 50 49 52 45 49 52 51 30 .IRQ0y..PIREIRQ0 7600: a4 60 14 1c 5f 53 52 53 01 8b 68 0a 01 49 52 51 .`.._SRS..h..IRQ 7610: 30 82 49 52 51 30 60 76 60 70 60 50 49 52 45 5b 0.IRQ0`v`p`PIRE[ 7620: 82 45 08 4c 4e 4b 46 08 5f 48 49 44 0c 41 d0 0c .E.LNKF._HID.A.. 7630: 0f 08 5f 55 49 44 0a 06 14 14 5f 53 54 41 00 a0 .._UID...._STA.. 7640: 08 50 49 52 46 a4 0a 0b a1 04 a4 0a 09 14 0b 5f .PIRF.........._ 7650: 50 52 53 00 a4 49 50 52 53 14 0d 5f 44 49 53 00 PRS..IPRS.._DIS. 7660: 70 0a 1f 50 49 52 46 14 21 5f 43 52 53 00 70 49 p..PIRF.!_CRS.pI 7670: 50 52 53 60 8b 60 0a 01 49 52 51 30 79 0a 01 50 PRS`.`..IRQ0y..P 7680: 49 52 46 49 52 51 30 a4 60 14 1c 5f 53 52 53 01 IRFIRQ0.`.._SRS. 7690: 8b 68 0a 01 49 52 51 30 82 49 52 51 30 60 76 60 .h..IRQ0.IRQ0`v` 76a0: 70 60 50 49 52 46 5b 82 45 08 4c 4e 4b 47 08 5f p`PIRF[.E.LNKG._ 76b0: 48 49 44 0c 41 d0 0c 0f 08 5f 55 49 44 0a 07 14 HID.A...._UID... 76c0: 14 5f 53 54 41 00 a0 08 50 49 52 47 a4 0a 0b a1 ._STA...PIRG.... 76d0: 04 a4 0a 09 14 0b 5f 50 52 53 00 a4 49 50 52 53 ......_PRS..IPRS 76e0: 14 0d 5f 44 49 53 00 70 0a 1f 50 49 52 47 14 21 .._DIS.p..PIRG.! 76f0: 5f 43 52 53 00 70 49 50 52 53 60 8b 60 0a 01 49 _CRS.pIPRS`.`..I 7700: 52 51 30 79 0a 01 50 49 52 47 49 52 51 30 a4 60 RQ0y..PIRGIRQ0.` 7710: 14 1c 5f 53 52 53 01 8b 68 0a 01 49 52 51 30 82 .._SRS..h..IRQ0. 7720: 49 52 51 30 60 76 60 70 60 50 49 52 47 5b 82 45 IRQ0`v`p`PIRG[.E 7730: 08 4c 4e 4b 48 08 5f 48 49 44 0c 41 d0 0c 0f 08 .LNKH._HID.A.... 7740: 5f 55 49 44 0a 08 14 14 5f 53 54 41 00 a0 08 50 _UID...._STA...P 7750: 49 52 48 a4 0a 0b a1 04 a4 0a 09 14 0b 5f 50 52 IRH.........._PR 7760: 53 00 a4 49 50 52 53 14 0d 5f 44 49 53 00 70 0a S..IPRS.._DIS.p. 7770: 1f 50 49 52 48 14 21 5f 43 52 53 00 70 49 50 52 .PIRH.!_CRS.pIPR 7780: 53 60 8b 60 0a 01 49 52 51 30 79 0a 01 50 49 52 S`.`..IRQ0y..PIR 7790: 48 49 52 51 30 a4 60 14 1c 5f 53 52 53 01 8b 68 HIRQ0.`.._SRS..h 77a0: 0a 01 49 52 51 30 82 49 52 51 30 60 76 60 70 60 ..IRQ0.IRQ0`v`p` 77b0: 50 49 52 48 5b 80 4c 50 43 52 02 0a 04 0a 42 5b PIRH[.LPCR....B[ 77c0: 81 4f 05 4c 50 43 52 01 50 43 4d 44 02 00 4e 1f .O.LPCR.PCMD..N. 77d0: 43 4d 41 30 01 43 4d 41 31 01 43 4d 41 32 01 43 CMA0.CMA1.CMA2.C 77e0: 4d 41 33 01 43 4d 41 34 01 43 4d 41 35 01 43 4d MA3.CMA4.CMA5.CM 77f0: 41 36 01 43 4d 41 37 01 43 4d 42 30 01 43 4d 42 A6.CMA7.CMB0.CMB 7800: 31 01 43 4d 42 32 01 43 4d 42 33 01 43 4d 42 34 1.CMB2.CMB3.CMB4 7810: 01 43 4d 42 35 01 43 4d 42 36 01 43 4d 42 37 01 .CMB5.CMB6.CMB7. 7820: 5b 82 46 04 44 4d 41 43 08 5f 48 49 44 0c 41 d0 [.F.DMAC._HID.A. 7830: 02 00 08 5f 43 52 53 11 30 0a 2d 47 01 00 00 00 ..._CRS.0.-G.... 7840: 00 01 20 47 01 81 00 81 00 01 0f 47 01 c0 00 c0 .. G.......G.... 7850: 00 01 1f 47 01 0b 04 0b 04 01 01 47 01 d6 04 d6 ...G.......G.... 7860: 04 01 01 2a 10 01 79 00 5b 82 26 4d 41 54 48 08 ...*..y.[.&MATH. 7870: 5f 48 49 44 0c 41 d0 0c 04 08 5f 43 52 53 11 11 _HID.A...._CRS.. 7880: 0a 0e 47 01 f0 00 f0 00 01 0f 23 00 20 01 79 00 ..G.......#. .y. 7890: 5b 82 2c 50 49 43 5f 08 5f 48 49 44 0b 41 d0 08 [.,PIC_._HID.A.. 78a0: 5f 43 52 53 11 19 0a 16 47 01 20 00 20 00 01 02 _CRS....G. . ... 78b0: 47 01 a0 00 a0 00 01 02 23 04 00 01 79 00 5b 82 G.......#...y.[. 78c0: 26 52 54 43 5f 08 5f 48 49 44 0c 41 d0 0b 00 08 &RTC_._HID.A.... 78d0: 5f 43 52 53 11 11 0a 0e 47 01 70 00 70 00 01 02 _CRS....G.p.p... 78e0: 23 00 01 01 79 00 5b 82 22 53 50 4b 52 08 5f 48 #...y.[."SPKR._H 78f0: 49 44 0c 41 d0 08 00 08 5f 43 52 53 11 0d 0a 0a ID.A...._CRS.... 7900: 47 01 61 00 61 00 01 01 79 00 5b 82 26 54 49 4d G.a.a...y.[.&TIM 7910: 45 08 5f 48 49 44 0c 41 d0 01 00 08 5f 43 52 53 E._HID.A...._CRS 7920: 11 11 0a 0e 47 01 40 00 40 00 01 04 23 01 00 01 ....G.@.@...#... 7930: 79 00 5b 82 35 4b 42 43 30 08 5f 48 49 44 0c 41 y.[.5KBC0._HID.A 7940: d0 03 03 08 5f 43 52 53 11 19 0a 16 47 01 60 00 ...._CRS....G.`. 7950: 60 00 01 01 47 01 64 00 64 00 01 01 23 02 00 01 `...G.d.d...#... 7960: 79 00 14 06 5f 50 53 57 01 5b 80 50 4b 42 53 01 y..._PSW.[.PKBS. 7970: 0a 60 0a 05 5b 81 16 50 4b 42 53 11 50 4b 42 44 .`..[..PKBS.PKBD 7980: 08 00 08 00 08 00 08 50 4b 42 43 08 5b 82 4d 06 .......PKBC.[.M. 7990: 50 53 32 4d 14 1d 5f 48 49 44 00 a0 0e 93 42 52 PS2M.._HID....BR 79a0: 49 44 0a 01 a4 0c 11 8c 04 c3 a1 07 a4 0c 11 8c ID.............. 79b0: 04 c2 08 5f 43 49 44 0c 41 d0 0f 13 14 1e 5f 53 ..._CID.A....._S 79c0: 54 41 00 a0 14 7b 93 50 4b 42 44 0a ff 93 50 4b TA...{.PKBD...PK 79d0: 42 43 0a ff 00 a4 0a 00 a4 0a 0f 08 5f 43 52 53 BC.........._CRS 79e0: 11 09 0a 06 23 00 10 01 79 00 08 5f 50 52 53 11 ....#...y.._PRS. 79f0: 0b 0a 08 31 00 22 00 10 38 79 00 5b 82 4c 10 53 ...1."..8y.[.L.S 7a00: 59 53 52 08 5f 48 49 44 0c 41 d0 0c 02 08 5f 43 YSR._HID.A...._C 7a10: 52 53 11 46 0f 0a f2 47 01 22 00 22 00 01 02 47 RS.F...G."."...G 7a20: 01 2e 00 2e 00 01 02 47 01 72 00 72 00 01 02 47 .......G.r.r...G 7a30: 01 80 00 80 00 01 01 47 01 92 00 92 00 01 01 47 .......G.......G 7a40: 01 b0 00 b0 00 01 02 47 01 b2 00 b2 00 01 01 47 .......G.......G 7a50: 01 b8 00 b8 00 01 01 47 01 bc 00 bc 00 01 01 47 .......G.......G 7a60: 01 f0 00 f0 00 01 01 47 01 d0 04 d0 04 01 02 47 .......G.......G 7a70: 01 30 05 30 05 01 08 47 01 00 08 00 08 01 28 47 .0.0...G......(G 7a80: 01 30 08 30 08 01 01 47 01 40 08 40 08 01 08 47 .0.0...G.@.@...G 7a90: 01 00 0b 00 0b 01 20 47 01 20 0b 20 0b 01 20 47 ...... G. . .. G 7aa0: 01 00 0c 00 0c 01 02 47 01 14 0c 14 0c 01 01 47 .......G.......G 7ab0: 01 50 0c 50 0c 01 03 47 01 d0 0c d0 0c 01 02 47 .P.P...G.......G 7ac0: 01 d2 0c d2 0c 01 02 47 01 d4 0c d4 0c 01 02 47 .......G.......G 7ad0: 01 d6 0c d6 0c 01 02 47 01 d8 0c d8 0c 01 08 47 .......G.......G 7ae0: 01 f9 0c f9 0c 01 01 88 0d 00 01 0c 03 00 00 00 ................ 7af0: 81 ff 81 00 00 00 01 88 0d 00 01 0c 03 00 00 00 ................ 7b00: 82 ff 82 00 00 00 01 79 00 5b 80 4c 50 43 53 02 .......y.[.LPCS. 7b10: 0a a0 0a 04 5b 81 0b 4c 50 43 53 03 53 50 42 41 ....[..LPCS.SPBA 7b20: 20 5b 82 40 0e 4d 45 4d 5f 08 5f 48 49 44 0c 41 [.@.MEM_._HID.A 7b30: d0 0c 01 08 4d 53 52 43 11 4a 05 0a 56 86 09 00 ....MSRC.J..V... 7b40: 00 00 00 0e 00 00 00 02 00 86 09 00 00 00 00 e0 ................ 7b50: ff 00 00 20 00 86 09 00 01 00 00 00 00 00 00 00 ... ............ 7b60: 00 86 09 00 01 00 00 c1 fe 20 00 00 00 86 09 00 ......... ...... 7b70: 00 00 00 d0 fe 00 04 00 00 86 09 00 01 00 10 d6 ................ 7b80: fe 00 04 00 00 86 09 00 01 00 00 d8 fe 00 10 00 ................ 7b90: 00 79 00 14 45 06 5f 43 52 53 00 8a 4d 53 52 43 .y..E._CRS..MSRC 7ba0: 0a 1c 42 41 52 58 8a 4d 53 52 43 0a 20 47 41 4c ..BARX.MSRC. GAL 7bb0: 4e 8a 4d 53 52 43 0a 28 4d 42 30 31 8a 4d 53 52 N.MSRC.(MB01.MSR 7bc0: 43 0a 2c 4d 4c 30 31 70 53 50 42 41 60 7b 60 0c C.,ML01pSPBA`{`. 7bd0: e0 ff ff ff 4d 42 30 31 70 4e 42 42 41 60 a0 15 ....MB01pNBBA`.. 7be0: 60 70 0b 00 10 47 41 4c 4e 7b 60 0c f0 ff ff ff `p...GALN{`..... 7bf0: 42 41 52 58 a4 4d 53 52 43 14 09 5f 53 54 41 00 BARX.MSRC.._STA. 7c00: a4 0a 0f 5b 01 50 53 4d 58 00 5b 80 53 4d 49 30 ...[.PSMX.[.SMI0 7c10: 01 0a b0 0a 01 5b 81 0b 53 4d 49 30 00 53 4d 49 .....[..SMI0.SMI 7c20: 43 08 5b 80 53 4d 49 31 00 0c 18 a0 0c 5e 0c 00 C.[.SMI1.....^.. 7c30: 10 00 00 5b 81 16 53 4d 49 31 00 42 43 4d 44 10 ...[..SMI1.BCMD. 7c40: 44 49 44 5f 20 49 4e 46 4f 40 40 5b 81 30 53 4d DID_ INFO@@[.0SM 7c50: 49 31 00 00 30 49 4e 46 30 08 49 4e 46 31 08 49 I1..0INF0.INF1.I 7c60: 4e 46 32 08 49 4e 46 33 08 49 4e 46 34 08 49 4e NF2.INF3.INF4.IN 7c70: 46 35 08 49 4e 46 36 08 49 4e 46 37 08 5b 81 0d F5.INF6.INF7.[.. 7c80: 53 4d 49 31 00 00 30 49 4e 46 44 20 14 13 50 48 SMI1..0INFD ..PH 7c90: 53 31 01 70 68 42 43 4d 44 70 0a ab 53 4d 49 43 S1.phBCMDp..SMIC 7ca0: 14 3d 50 48 53 32 02 5b 23 50 53 4d 58 ff ff 70 .=PHS2.[#PSMX..p 7cb0: 0a 00 44 49 44 5f 70 69 49 4e 46 4f 70 68 42 43 ..DID_piINFOphBC 7cc0: 4d 44 70 0a ab 53 4d 49 43 70 49 4e 46 4f 60 5b MDp..SMICpINFO`[ 7cd0: 27 50 53 4d 58 70 0a 00 42 43 4d 44 a4 60 14 2d 'PSMXp..BCMD.`.- 7ce0: 50 48 53 33 03 5b 23 50 53 4d 58 ff ff 70 68 42 PHS3.[#PSMX..phB 7cf0: 43 4d 44 70 69 44 49 44 5f 70 6a 49 4e 46 4f 70 CMDpiDID_pjINFOp 7d00: 0a ab 53 4d 49 43 5b 27 50 53 4d 58 5b 82 1c 4d ..SMIC['PSMX[..M 7d10: 42 54 5f 08 5f 48 49 44 0c 41 d0 0c 32 14 0c 47 BT_._HID.A..2..G 7d20: 48 49 44 00 a4 11 04 0a 01 02 5b 82 8e 0f 01 45 HID.......[....E 7d30: 43 30 5f 08 5f 48 49 44 0c 41 d0 0c 09 14 26 5f C0_._HID.A....&_ 7d40: 43 52 53 00 08 42 46 46 52 11 15 0a 12 47 01 62 CRS..BFFR....G.b 7d50: 00 62 00 00 01 47 01 66 00 66 00 00 01 79 00 a4 .b...G.f.f...y.. 7d60: 42 46 46 52 14 43 13 5f 52 45 47 02 a0 4b 12 90 BFFR.C._REG..K.. 7d70: 93 68 0a 03 93 69 0a 01 70 0a 01 45 43 4f 4e 5b .h...i..p..ECON[ 7d80: 23 4d 55 54 30 ff ff 70 41 43 49 4e 50 57 52 53 #MUT0..pACINPWRS 7d90: 70 42 30 49 4e 5e 5e 5e 5e 2e 42 41 54 54 42 53 pB0IN^^^^.BATTBS 7da0: 54 41 5b 27 4d 55 54 30 a0 1d 93 54 50 4f 53 0a TA['MUT0...TPOS. 7db0: 80 5b 23 4d 55 54 30 ff ff 70 0a 40 41 43 4f 53 .[#MUT0..p.@ACOS 7dc0: 5b 27 4d 55 54 30 a0 1d 93 54 50 4f 53 0a 04 5b ['MUT0...TPOS..[ 7dd0: 23 4d 55 54 30 ff ff 70 0a 08 41 43 4f 53 5b 27 #MUT0..p..ACOS[' 7de0: 4d 55 54 30 a0 1d 93 54 50 4f 53 0a 08 5b 23 4d MUT0...TPOS..[#M 7df0: 55 54 30 ff ff 70 0a 10 41 43 4f 53 5b 27 4d 55 UT0..p..ACOS['MU 7e00: 54 30 a0 1d 93 54 50 4f 53 0a 10 5b 23 4d 55 54 T0...TPOS..[#MUT 7e10: 30 ff ff 70 0a 10 41 43 4f 53 5b 27 4d 55 54 30 0..p..ACOS['MUT0 7e20: a0 1d 93 54 50 4f 53 0a 11 5b 23 4d 55 54 30 ff ...TPOS..[#MUT0. 7e30: ff 70 0a 10 41 43 4f 53 5b 27 4d 55 54 30 a0 1d .p..ACOS['MUT0.. 7e40: 93 54 50 4f 53 0a 12 5b 23 4d 55 54 30 ff ff 70 .TPOS..[#MUT0..p 7e50: 0a 10 41 43 4f 53 5b 27 4d 55 54 30 a0 1d 93 54 ..ACOS['MUT0...T 7e60: 50 4f 53 0a 40 5b 23 4d 55 54 30 ff ff 70 0a 20 POS.@[#MUT0..p. 7e70: 41 43 4f 53 5b 27 4d 55 54 30 a0 1d 93 54 50 4f ACOS['MUT0...TPO 7e80: 53 0a 50 5b 23 4d 55 54 30 ff ff 70 0a 80 41 43 S.P[#MUT0..p..AC 7e90: 4f 53 5b 27 4d 55 54 30 08 5f 47 50 45 0a 03 5b OS['MUT0._GPE..[ 7ea0: 80 45 43 52 4d 03 0a 00 0b 00 01 5b 81 42 42 45 .ECRM......[.BBE 7eb0: 43 52 4d 11 57 4b 45 56 08 00 48 0b 50 52 54 43 CRM.WKEV..H.PRTC 7ec0: 08 53 53 54 41 08 53 41 44 52 08 53 43 4d 44 08 .SSTA.SADR.SCMD. 7ed0: 53 4d 49 44 08 53 44 41 54 08 53 44 54 31 08 00 SMID.SDAT.SDT1.. 7ee0: 48 0e 42 43 4e 54 08 41 4c 52 41 08 41 4c 44 30 H.BCNT.ALRA.ALD0 7ef0: 08 41 4c 44 31 08 41 43 49 4e 01 50 57 4f 4e 01 .ALD1.ACIN.PWON. 7f00: 49 4e 53 33 01 57 50 53 57 01 49 4e 53 34 01 53 INS3.WPSW.INS4.S 7f10: 4d 4f 4e 01 57 50 57 47 01 52 56 43 4f 01 53 55 MON.WPWG.RVCO.SU 7f20: 53 42 01 53 55 53 43 01 46 41 4e 4f 01 53 4e 49 SB.SUSC.FANO.SNI 7f30: 46 01 4c 49 44 41 01 00 03 4b 42 42 50 01 44 41 F.LIDA...KBBP.DA 7f40: 44 50 01 4d 4d 42 54 01 4b 42 53 4f 01 4b 42 45 DP.MMBT.KBSO.KBE 7f50: 52 01 45 43 43 42 01 43 49 52 42 01 4d 55 54 45 R.ECCB.CIRB.MUTE 7f60: 01 54 53 4e 30 01 54 53 4e 31 01 4f 53 54 50 01 .TSN0.TSN1.OSTP. 7f70: 54 53 4e 32 01 45 42 4b 30 01 45 42 4b 31 01 45 TSN2.EBK0.EBK1.E 7f80: 42 4b 32 01 45 42 4b 33 01 00 08 00 04 51 41 33 BK2.EBK3.....QA3 7f90: 45 01 00 43 05 54 4f 46 53 08 00 10 54 54 52 54 E..C.TOFS...TTRT 7fa0: 01 43 43 50 55 01 00 0e 4f 54 50 43 08 56 47 41 .CCPU...OTPC.VGA 7fb0: 54 08 43 48 50 54 08 43 50 55 54 08 53 59 53 54 T.CHPT.CPUT.SYST 7fc0: 08 44 54 53 31 08 44 54 53 32 08 00 10 48 57 53 .DTS1.DTS2...HWS 7fd0: 4e 08 43 54 59 50 08 46 43 4e 54 01 46 54 53 54 N.CTYP.FCNT.FTST 7fe0: 01 00 03 46 41 44 4a 01 54 43 54 4c 01 46 41 54 ...FADJ.TCTL.FAT 7ff0: 4f 01 44 41 43 31 08 44 41 43 32 08 46 4c 56 4c O.DAC1.DAC2.FLVL 8000: 08 43 54 4c 31 10 43 54 4c 32 10 46 41 4e 48 08 .CTL1.CTL2.FANH. 8010: 46 41 4e 4c 08 52 50 4d 32 10 46 54 41 43 10 46 FANL.RPM2.FTAC.F 8020: 53 50 44 10 53 4c 45 44 01 4e 4c 45 44 01 43 4c SPD.SLED.NLED.CL 8030: 45 44 01 00 05 42 54 31 4c 01 42 54 32 4c 01 53 ED...BT1L.BT2L.S 8040: 4e 49 4c 01 00 15 42 4c 42 55 01 42 4c 42 44 01 NIL...BLBU.BLBD. 8050: 42 4c 42 48 01 00 05 42 48 4c 4c 08 42 54 4c 4c BLBH...BHLL.BTLL 8060: 08 42 54 4c 49 08 00 08 53 56 50 4c 08 44 49 41 .BTLI...SVPL.DIA 8070: 47 08 4b 4c 45 44 08 00 20 41 43 54 50 08 00 08 G.KLED.. ACTP... 8080: 4e 4f 53 30 08 00 30 41 43 4f 53 08 00 08 4b 42 NOS0..0ACOS...KB 8090: 54 4c 08 4b 42 42 4c 08 42 52 53 4c 08 50 4c 47 TL.KBBL.BRSL.PLG 80a0: 48 08 50 4c 47 4c 08 00 48 06 53 42 46 30 08 00 H.PLGL..H.SBF0.. 80b0: 10 43 41 50 30 10 52 43 50 30 10 56 4f 54 30 10 .CAP0.RCP0.VOT0. 80c0: 43 52 54 30 10 42 54 4d 30 10 42 53 54 30 10 42 CRT0.BTM0.BST0.B 80d0: 52 43 30 10 46 43 50 30 10 44 43 50 30 10 44 56 RC0.FCP0.DCP0.DV 80e0: 54 30 10 4d 45 52 30 10 4d 46 44 30 10 42 53 4e T0.MER0.MFD0.BSN 80f0: 30 10 4d 41 53 30 10 00 38 42 43 53 30 08 4d 4e 0.MAS0..8BCS0.MN 8100: 4e 30 08 44 4e 4e 30 08 42 43 4e 30 08 42 4f 43 N0.DNN0.BCN0.BOC 8110: 30 08 42 46 43 30 08 42 4d 44 30 08 43 50 4c 30 0.BFC0.BMD0.CPL0 8120: 08 42 30 49 4e 01 42 30 44 59 01 42 30 50 46 01 .B0IN.B0DY.B0PF. 8130: 42 30 54 46 01 42 30 43 4c 01 42 30 4c 57 01 42 B0TF.B0CL.B0LW.B 8140: 30 44 43 01 42 30 44 44 01 42 30 46 43 01 42 30 0DC.B0DD.B0FC.B0 8150: 50 43 01 42 30 4f 54 01 00 01 42 30 57 4b 01 42 PC.B0OT...B0WK.B 8160: 30 49 43 01 42 30 57 43 01 42 30 4c 33 01 42 30 0IC.B0WC.B0L3.B0 8170: 46 47 01 42 30 44 47 01 42 30 56 4c 01 42 30 52 FG.B0DG.B0VL.B0R 8180: 59 01 42 30 41 4c 01 42 30 41 46 01 42 30 4e 49 Y.B0AL.B0AF.B0NI 8190: 01 42 30 4c 49 01 53 4d 45 30 01 53 4d 45 31 01 .B0LI.SME0.SME1. 81a0: 53 4d 45 32 01 53 4d 45 33 01 46 4c 44 47 01 46 SME2.SME3.FLDG.F 81b0: 4c 43 47 01 44 53 47 30 01 49 4e 49 54 01 52 54 LCG.DSG0.INIT.RT 81c0: 41 4d 01 52 43 41 4d 01 00 01 54 44 41 4d 01 4f AM.RCAM...TDAM.O 81d0: 54 41 4d 01 00 01 54 43 41 4d 01 4f 43 41 4d 01 TAM...TCAM.OCAM. 81e0: 43 41 50 31 10 52 43 50 31 10 56 4f 54 31 10 43 CAP1.RCP1.VOT1.C 81f0: 52 54 31 10 42 54 4d 31 10 42 53 54 31 10 42 52 RT1.BTM1.BST1.BR 8200: 43 31 10 46 43 50 31 10 44 43 50 31 10 44 56 54 C1.FCP1.DCP1.DVT 8210: 31 10 4d 45 52 31 10 4d 46 44 31 10 42 53 4e 31 1.MER1.MFD1.BSN1 8220: 10 4d 41 53 31 10 00 38 42 43 53 31 08 4d 4e 4e .MAS1..8BCS1.MNN 8230: 31 08 44 4e 4e 31 08 42 43 4e 31 08 42 4f 43 31 1.DNN1.BCN1.BOC1 8240: 08 42 46 43 31 08 42 4d 44 31 08 43 50 4c 31 08 .BFC1.BMD1.CPL1. 8250: 42 31 49 4e 01 42 31 44 59 01 42 31 50 46 01 42 B1IN.B1DY.B1PF.B 8260: 31 54 46 01 42 31 43 4c 01 42 31 4c 57 01 42 31 1TF.B1CL.B1LW.B1 8270: 44 43 01 42 31 44 44 01 42 31 46 43 01 42 31 50 DC.B1DD.B1FC.B1P 8280: 43 01 42 31 4f 54 01 00 01 42 31 57 4b 01 42 31 C.B1OT...B1WK.B1 8290: 49 43 01 42 31 57 43 01 42 31 4c 33 01 42 31 46 IC.B1WC.B1L3.B1F 82a0: 47 01 42 31 44 47 01 42 31 56 4c 01 42 31 52 59 G.B1DG.B1VL.B1RY 82b0: 01 42 31 41 4c 01 42 31 41 46 01 42 31 4e 49 01 .B1AL.B1AF.B1NI. 82c0: 42 31 4c 49 01 53 4c 4d 31 08 53 4c 4d 32 08 5b B1LI.SLM1.SLM2.[ 82d0: 01 4d 55 54 30 00 14 0d 5f 51 42 31 00 70 0a b1 .MUT0..._QB1.p.. 82e0: 50 38 30 48 14 43 0b 5f 51 38 30 00 70 0a 80 50 P80H.C._Q80.p..P 82f0: 38 30 48 a0 0b 50 57 52 53 70 42 52 47 41 60 a1 80H..PWRSpBRGA`. 8300: 07 70 42 52 47 44 60 a0 36 92 95 54 50 4f 53 0a .pBRGD`.6..TPOS. 8310: 40 70 0a 00 60 86 5e 5e 5e 2e 56 47 41 5f 4c 43 @p..`.^^^.VGA_LC 8320: 44 5f 0a 86 86 5e 5e 5e 2f 03 50 42 33 5f 56 47 D_...^^^/.PB3_VG 8330: 41 5f 4c 43 44 5f 0a 86 70 42 52 54 4c 60 a1 09 A_LCD_..pBRTL`.. 8340: 50 48 53 32 0a 8a 0a 02 a0 08 92 93 60 0a 0f 75 PHS2........`..u 8350: 60 70 0a 03 5e 5e 5e 5e 2e 41 4d 57 30 49 4e 46 `p..^^^^.AMW0INF 8360: 30 70 0a 00 5e 5e 5e 5e 2e 41 4d 57 30 49 4e 46 0p..^^^^.AMW0INF 8370: 31 70 0b 06 e0 5e 5e 5e 5e 2e 41 4d 57 30 49 4e 1p...^^^^.AMW0IN 8380: 46 32 70 60 5e 5e 5e 5e 2e 41 4d 57 30 49 4e 46 F2p`^^^^.AMW0INF 8390: 33 86 41 4d 57 30 0a d0 14 43 0b 5f 51 38 31 00 3.AMW0...C._Q81. 83a0: 70 0a 81 50 38 30 48 a0 0b 50 57 52 53 70 42 52 p..P80H..PWRSpBR 83b0: 47 41 60 a1 07 70 42 52 47 44 60 a0 36 92 95 54 GA`..pBRGD`.6..T 83c0: 50 4f 53 0a 40 70 0a 00 60 86 5e 5e 5e 2e 56 47 POS.@p..`.^^^.VG 83d0: 41 5f 4c 43 44 5f 0a 87 86 5e 5e 5e 2f 03 50 42 A_LCD_...^^^/.PB 83e0: 33 5f 56 47 41 5f 4c 43 44 5f 0a 87 70 42 52 54 3_VGA_LCD_..pBRT 83f0: 4c 60 a1 09 50 48 53 32 0a 8a 0a 03 a0 08 92 93 L`..PHS2........ 8400: 60 0a 00 76 60 70 0a 03 5e 5e 5e 5e 2e 41 4d 57 `..v`p..^^^^.AMW 8410: 30 49 4e 46 30 70 0a 00 5e 5e 5e 5e 2e 41 4d 57 0INF0p..^^^^.AMW 8420: 30 49 4e 46 31 70 0b 05 e0 5e 5e 5e 5e 2e 41 4d 0INF1p...^^^^.AM 8430: 57 30 49 4e 46 32 70 60 5e 5e 5e 5e 2e 41 4d 57 W0INF2p`^^^^.AMW 8440: 30 49 4e 46 33 86 41 4d 57 30 0a d0 14 14 5f 51 0INF3.AMW0...._Q 8450: 38 32 00 70 0a 82 50 38 30 48 86 4c 49 44 5f 0a 82.p..P80H.LID_. 8460: 80 14 44 06 5f 51 38 33 00 70 0a 83 50 38 30 48 ..D._Q83.p..P80H 8470: 5b 23 4d 55 54 30 ff ff 70 41 43 49 4e 50 57 52 [#MUT0..pACINPWR 8480: 53 5b 27 4d 55 54 30 86 41 43 41 44 0a 80 a0 26 S['MUT0.ACAD...& 8490: 93 45 43 4f 4e 0a 01 86 5c 2e 5f 50 52 5f 43 30 .ECON...\._PR_C0 84a0: 30 30 0a 80 5b 22 0a 64 86 5c 2e 5f 50 52 5f 43 00..[".d.\._PR_C 84b0: 30 30 30 0a 81 a0 10 95 54 50 4f 53 0a 40 50 48 000.....TPOS.@PH 84c0: 53 32 0a 8a 0a 01 14 44 06 5f 51 38 34 00 70 0a S2.....D._Q84.p. 84d0: 84 50 38 30 48 5b 23 4d 55 54 30 ff ff 70 41 43 .P80H[#MUT0..pAC 84e0: 49 4e 50 57 52 53 5b 27 4d 55 54 30 86 41 43 41 INPWRS['MUT0.ACA 84f0: 44 0a 80 a0 26 93 45 43 4f 4e 0a 01 86 5c 2e 5f D...&.ECON...\._ 8500: 50 52 5f 43 30 30 30 0a 80 5b 22 0a 64 86 5c 2e PR_C000..[".d.\. 8510: 5f 50 52 5f 43 30 30 30 0a 81 a0 10 95 54 50 4f _PR_C000.....TPO 8520: 53 0a 40 50 48 53 32 0a 8a 0a 00 14 43 09 5f 51 S.@PHS2.....C._Q 8530: 38 35 00 70 0a 85 50 38 30 48 5b 23 4d 55 54 30 85.p..P80H[#MUT0 8540: ff ff 5e 5e 5e 5e 2e 42 41 54 54 42 54 53 54 86 ..^^^^.BATTBTST. 8550: 42 41 54 54 0a 80 5b 22 0b f4 01 a0 25 5e 5e 5e BATT..["....%^^^ 8560: 5e 2e 42 41 54 54 42 54 43 48 86 42 41 54 54 0a ^.BATTBTCH.BATT. 8570: 81 70 0a 00 5e 5e 5e 5e 2e 42 41 54 54 42 54 43 .p..^^^^.BATTBTC 8580: 48 70 0a 02 5e 5e 5e 5e 2e 41 4d 57 30 49 4e 46 Hp..^^^^.AMW0INF 8590: 30 70 0a 00 5e 5e 5e 5e 2e 41 4d 57 30 49 4e 46 0p..^^^^.AMW0INF 85a0: 31 70 0b 0e e0 5e 5e 5e 5e 2e 41 4d 57 30 49 4e 1p...^^^^.AMW0IN 85b0: 46 32 86 41 4d 57 30 0a d0 5b 27 4d 55 54 30 14 F2.AMW0..['MUT0. 85c0: 47 08 5f 51 38 36 00 70 0a 86 50 38 30 48 5b 23 G._Q86.p..P80H[# 85d0: 4d 55 54 30 ff ff 70 0a 00 5e 5e 5e 5e 2e 42 41 MUT0..p..^^^^.BA 85e0: 54 54 42 53 54 41 86 42 41 54 54 0a 80 5b 22 0b TTBSTA.BATT..[". 85f0: f4 01 86 42 41 54 54 0a 81 70 0a 00 5e 5e 5e 5e ...BATT..p..^^^^ 8600: 2e 42 41 54 54 42 54 50 5f 5b 27 4d 55 54 30 70 .BATTBTP_['MUT0p 8610: 0a 02 5e 5e 5e 5e 2e 41 4d 57 30 49 4e 46 30 70 ..^^^^.AMW0INF0p 8620: 0a 00 5e 5e 5e 5e 2e 41 4d 57 30 49 4e 46 31 70 ..^^^^.AMW0INF1p 8630: 0b 0e e0 5e 5e 5e 5e 2e 41 4d 57 30 49 4e 46 32 ...^^^^.AMW0INF2 8640: 86 41 4d 57 30 0a d0 14 0d 5f 51 38 37 00 70 0a .AMW0...._Q87.p. 8650: 87 50 38 30 48 14 0d 5f 51 38 38 00 70 0a 88 50 .P80H.._Q88.p..P 8660: 38 30 48 14 0d 5f 51 38 39 00 70 0a 89 50 38 30 80H.._Q89.p..P80 8670: 48 14 0d 5f 51 38 41 00 70 0a 8a 50 38 30 48 14 H.._Q8A.p..P80H. 8680: 4d 0b 5f 51 38 43 00 70 0a 8c 50 38 30 48 70 0a M._Q8C.p..P80Hp. 8690: 00 60 70 0a 00 61 70 0a 00 62 70 0a 00 63 70 0a .`p..ap..bp..cp. 86a0: f2 57 43 41 31 46 4f 57 4d 0a 11 0a 0b 70 57 46 .WCA1FOWM....pWF 86b0: 49 31 60 70 57 46 49 32 61 70 0b 00 01 62 70 0a I1`pWFI2ap...bp. 86c0: 01 63 a0 4a 07 57 49 46 53 70 0a 06 5e 5e 5e 5e .c.J.WIFSp..^^^^ 86d0: 2e 41 4d 57 30 49 4e 46 30 70 0a 00 5e 5e 5e 5e .AMW0INF0p..^^^^ 86e0: 2e 41 4d 57 30 49 4e 46 31 70 0b 08 e0 5e 5e 5e .AMW0INF1p...^^^ 86f0: 5e 2e 41 4d 57 30 49 4e 46 32 70 60 5e 5e 5e 5e ^.AMW0INF2p`^^^^ 8700: 2e 41 4d 57 30 49 4e 46 33 70 61 5e 5e 5e 5e 2e .AMW0INF3pa^^^^. 8710: 41 4d 57 30 49 4e 46 34 70 62 5e 5e 5e 5e 2e 41 AMW0INF4pb^^^^.A 8720: 4d 57 30 49 4e 46 35 70 63 5e 5e 5e 5e 2e 41 4d MW0INF5pc^^^^.AM 8730: 57 30 49 4e 46 36 86 41 4d 57 30 0a d0 14 0d 5f W0INF6.AMW0...._ 8740: 51 38 44 00 70 0a 8d 50 38 30 48 14 14 5f 51 38 Q8D.p..P80H.._Q8 8750: 45 00 70 0a 8e 50 38 30 48 86 53 4c 50 42 0a 80 E.p..P80H.SLPB.. 8760: 14 14 5f 51 38 46 00 70 0a 8f 50 38 30 48 86 42 .._Q8F.p..P80H.B 8770: 41 54 54 0a 80 14 14 5f 51 39 30 00 70 0a 90 50 ATT...._Q90.p..P 8780: 38 30 48 86 42 41 54 54 0a 80 14 1b 5f 51 39 31 80H.BATT...._Q91 8790: 00 70 0a 91 50 38 30 48 70 0a 91 53 53 4d 44 70 .p..P80Hp..SSMDp 87a0: 0a 77 53 53 4d 50 14 14 5f 51 39 32 00 70 0a 92 .wSSMP.._Q92.p.. 87b0: 53 53 4d 44 70 0a 77 53 53 4d 50 14 14 5f 51 39 SSMDp.wSSMP.._Q9 87c0: 33 00 70 0a 93 53 53 4d 44 70 0a 77 53 53 4d 50 3.p..SSMDp.wSSMP 87d0: 14 14 5f 51 39 34 00 70 0a 94 53 53 4d 44 70 0a .._Q94.p..SSMDp. 87e0: 77 53 53 4d 50 14 14 5f 51 39 35 00 70 0a 95 53 wSSMP.._Q95.p..S 87f0: 53 4d 44 70 0a 77 53 53 4d 50 14 14 5f 51 39 36 SMDp.wSSMP.._Q96 8800: 00 70 0a 96 53 53 4d 44 70 0a 77 53 53 4d 50 14 .p..SSMDp.wSSMP. 8810: 14 5f 51 39 37 00 70 0a 97 53 53 4d 44 70 0a 77 ._Q97.p..SSMDp.w 8820: 53 53 4d 50 14 14 5f 51 39 38 00 70 0a 98 53 53 SSMP.._Q98.p..SS 8830: 4d 44 70 0a 77 53 53 4d 50 14 31 5f 51 39 41 00 MDp.wSSMP.1_Q9A. 8840: 70 0a 9a 50 38 30 48 70 4e 4f 53 30 60 70 60 5c p..P80HpNOS0`p`\ 8850: 2f 03 5f 50 52 5f 43 30 30 30 5f 50 50 43 86 5c /._PR_C000_PPC.\ 8860: 2e 5f 50 52 5f 43 30 30 30 0a 80 14 06 5f 51 41 ._PR_C000...._QA 8870: 30 00 14 06 5f 51 41 31 00 14 06 5f 51 41 32 00 0..._QA1..._QA2. 8880: 14 06 5f 51 41 33 00 14 06 5f 51 41 34 00 14 06 .._QA3..._QA4... 8890: 5f 51 41 36 00 14 06 5f 51 41 37 00 14 06 5f 51 _QA6..._QA7..._Q 88a0: 41 38 00 14 06 5f 51 41 39 00 14 06 5f 51 41 41 A8..._QA9..._QAA 88b0: 00 14 4a 04 5f 51 41 43 00 5b 22 0a 32 70 0a ac ..J._QAC.[".2p.. 88c0: 50 38 30 48 70 0a 02 5e 5e 5e 5e 2e 41 4d 57 30 P80Hp..^^^^.AMW0 88d0: 49 4e 46 30 70 0a 00 5e 5e 5e 5e 2e 41 4d 57 30 INF0p..^^^^.AMW0 88e0: 49 4e 46 31 70 0b 27 e0 5e 5e 5e 5e 2e 41 4d 57 INF1p.'.^^^^.AMW 88f0: 30 49 4e 46 32 86 41 4d 57 30 0a d0 14 14 5f 51 0INF2.AMW0...._Q 8900: 41 46 00 70 0a af 50 38 30 48 86 4d 42 54 5f 0a AF.p..P80H.MBT_. 8910: 80 14 46 04 5f 51 41 44 00 70 0a ad 50 38 30 48 ..F._QAD.p..P80H 8920: 70 0a 02 5e 5e 5e 5e 2e 41 4d 57 30 49 4e 46 30 p..^^^^.AMW0INF0 8930: 70 0a 00 5e 5e 5e 5e 2e 41 4d 57 30 49 4e 46 31 p..^^^^.AMW0INF1 8940: 70 0b 25 e0 5e 5e 5e 5e 2e 41 4d 57 30 49 4e 46 p.%.^^^^.AMW0INF 8950: 32 86 41 4d 57 30 0a d0 14 46 04 5f 51 41 45 00 2.AMW0...F._QAE. 8960: 70 0a ae 50 38 30 48 70 0a 02 5e 5e 5e 5e 2e 41 p..P80Hp..^^^^.A 8970: 4d 57 30 49 4e 46 30 70 0a 00 5e 5e 5e 5e 2e 41 MW0INF0p..^^^^.A 8980: 4d 57 30 49 4e 46 31 70 0b 28 e0 5e 5e 5e 5e 2e MW0INF1p.(.^^^^. 8990: 41 4d 57 30 49 4e 46 32 86 41 4d 57 30 0a d0 14 AMW0INF2.AMW0... 89a0: 06 5f 51 42 30 00 14 06 5f 51 44 30 00 14 06 5f ._QB0..._QD0..._ 89b0: 51 44 31 00 14 3d 5f 51 45 30 00 70 0a e0 50 38 QD1..=_QE0.p..P8 89c0: 30 48 70 0a 02 5e 5e 5e 5e 2e 41 4d 57 30 49 4e 0Hp..^^^^.AMW0IN 89d0: 46 30 70 0a 00 5e 5e 5e 5e 2e 41 4d 57 30 49 4e F0p..^^^^.AMW0IN 89e0: 46 31 70 0a 3a 5e 5e 5e 5e 2e 41 4d 57 30 49 4e F1p.:^^^^.AMW0IN 89f0: 46 32 14 3e 5f 51 45 31 00 70 0a e1 50 38 30 48 F2.>_QE1.p..P80H 8a00: 70 0a 02 5e 5e 5e 5e 2e 41 4d 57 30 49 4e 46 30 p..^^^^.AMW0INF0 8a10: 70 0a 00 5e 5e 5e 5e 2e 41 4d 57 30 49 4e 46 31 p..^^^^.AMW0INF1 8a20: 70 0b 45 e0 5e 5e 5e 5e 2e 41 4d 57 30 49 4e 46 p.E.^^^^.AMW0INF 8a30: 32 14 47 22 5f 51 45 33 00 70 0a e3 50 38 30 48 2.G"_QE3.p..P80H 8a40: 70 0a 00 57 43 41 33 70 0a 00 57 43 41 34 46 4f p..WCA3p..WCA4FO 8a50: 57 4d 0a 11 0a 05 5b 23 4d 55 54 30 ff ff 70 41 WM....[#MUT0..pA 8a60: 43 49 4e 60 70 44 41 44 50 61 70 41 43 54 50 62 CIN`pDADPapACTPb 8a70: 70 0a 06 5e 5e 5e 5e 2e 41 4d 57 30 49 4e 46 30 p..^^^^.AMW0INF0 8a80: 70 0a 00 5e 5e 5e 5e 2e 41 4d 57 30 49 4e 46 31 p..^^^^.AMW0INF1 8a90: 70 0b 0d e0 5e 5e 5e 5e 2e 41 4d 57 30 49 4e 46 p...^^^^.AMW0INF 8aa0: 32 70 0a 00 5e 5e 5e 5e 2e 41 4d 57 30 49 4e 46 2p..^^^^.AMW0INF 8ab0: 33 70 0a 00 5e 5e 5e 5e 2e 41 4d 57 30 49 4e 46 3p..^^^^.AMW0INF 8ac0: 34 70 0a 00 5e 5e 5e 5e 2e 41 4d 57 30 49 4e 46 4p..^^^^.AMW0INF 8ad0: 35 70 0a 00 5e 5e 5e 5e 2e 41 4d 57 30 49 4e 46 5p..^^^^.AMW0INF 8ae0: 36 a0 0c 93 54 59 50 45 0a 00 70 0a 41 67 a0 0c 6...TYPE..p.Ag.. 8af0: 93 54 59 50 45 0a 01 70 0a 5a 67 a0 49 07 93 42 .TYPE..p.Zg.I..B 8b00: 45 4d 51 0a 02 a0 4f 06 93 42 30 49 4e 0a 01 a0 EMQ...O..B0IN... 8b10: 20 92 93 44 4e 4e 30 0a ff 70 0a 12 5e 5e 5e 5e ..DNN0..p..^^^^ 8b20: 2e 41 4d 57 30 49 4e 46 33 86 41 4d 57 30 0a d0 .AMW0INF3.AMW0.. 8b30: a1 44 04 a0 1f 93 42 30 50 46 0a 01 70 0a 16 5e .D....B0PF..p..^ 8b40: 5e 5e 5e 2e 41 4d 57 30 49 4e 46 33 86 41 4d 57 ^^^.AMW0INF3.AMW 8b50: 30 0a d0 a1 21 a0 1f 93 42 30 54 46 0a 01 70 0a 0...!...B0TF..p. 8b60: 15 5e 5e 5e 5e 2e 41 4d 57 30 49 4e 46 33 86 41 .^^^^.AMW0INF3.A 8b70: 4d 57 30 0a d0 a0 4d 0d 93 42 45 4d 51 0a 01 70 MW0...M..BEMQ..p 8b80: 0a 01 50 38 30 48 a0 47 04 93 60 0a 01 79 67 0a ..P80H.G..`..yg. 8b90: 08 67 a0 3b 93 62 0a 00 70 0a 01 5e 5e 5e 5e 2e .g.;.b..p..^^^^. 8ba0: 41 4d 57 30 49 4e 46 33 70 0a 01 5e 5e 5e 5e 2e AMW0INF3p..^^^^. 8bb0: 41 4d 57 30 49 4e 46 35 70 67 5e 5e 5e 5e 2e 41 AMW0INF5pg^^^^.A 8bc0: 4d 57 30 49 4e 46 36 86 41 4d 57 30 0a d0 a0 44 MW0INF6.AMW0...D 8bd0: 08 95 62 67 70 0a 02 50 38 30 48 a0 3b 93 62 0a ..bgp..P80H.;.b. 8be0: 2d 70 0a 03 50 38 30 48 70 0a 05 5e 5e 5e 5e 2e -p..P80Hp..^^^^. 8bf0: 41 4d 57 30 49 4e 46 33 70 0a 01 5e 5e 5e 5e 2e AMW0INF3p..^^^^. 8c00: 41 4d 57 30 49 4e 46 35 70 67 5e 5e 5e 5e 2e 41 AMW0INF5pg^^^^.A 8c10: 4d 57 30 49 4e 46 36 a0 34 93 62 0a 41 70 0a 02 MW0INF6.4.b.Ap.. 8c20: 5e 5e 5e 5e 2e 41 4d 57 30 49 4e 46 33 70 0a 04 ^^^^.AMW0INF3p.. 8c30: 5e 5e 5e 5e 2e 41 4d 57 30 49 4e 46 35 70 67 5e ^^^^.AMW0INF5pg^ 8c40: 5e 5e 5e 2e 41 4d 57 30 49 4e 46 36 86 41 4d 57 ^^^.AMW0INF6.AMW 8c50: 30 0a d0 5b 27 4d 55 54 30 14 41 06 5f 51 45 35 0..['MUT0.A._QE5 8c60: 00 70 0a e5 50 38 30 48 5b 23 4d 55 54 30 ff ff .p..P80H[#MUT0.. 8c70: 5e 5e 5e 5e 2e 42 41 54 54 42 54 53 54 70 0a 02 ^^^^.BATTBTSTp.. 8c80: 5e 5e 5e 5e 2e 41 4d 57 30 49 4e 46 30 70 0a 00 ^^^^.AMW0INF0p.. 8c90: 5e 5e 5e 5e 2e 41 4d 57 30 49 4e 46 31 70 0b 0e ^^^^.AMW0INF1p.. 8ca0: e0 5e 5e 5e 5e 2e 41 4d 57 30 49 4e 46 32 86 41 .^^^^.AMW0INF2.A 8cb0: 4d 57 30 0a d0 5b 27 4d 55 54 30 14 0d 5f 51 46 MW0..['MUT0.._QF 8cc0: 31 00 70 0a f1 50 38 30 48 14 0d 5f 51 46 32 00 1.p..P80H.._QF2. 8cd0: 70 0a f2 50 38 30 48 14 0d 5f 51 46 33 00 70 0a p..P80H.._QF3.p. 8ce0: f3 50 38 30 48 14 0d 5f 51 46 34 00 70 0a f4 50 .P80H.._QF4.p..P 8cf0: 38 30 48 14 0d 5f 51 46 35 00 70 0a f5 50 38 30 80H.._QF5.p..P80 8d00: 48 14 0d 5f 51 46 36 00 70 0a f6 50 38 30 48 14 H.._QF6.p..P80H. 8d10: 0d 5f 51 46 37 00 70 0a f7 50 38 30 48 14 0d 5f ._QF7.p..P80H.._ 8d20: 51 46 38 00 70 0a f8 50 38 30 48 14 0d 5f 51 46 QF8.p..P80H.._QF 8d30: 39 00 70 0a f9 50 38 30 48 14 0d 5f 51 46 41 00 9.p..P80H.._QFA. 8d40: 70 0a fa 50 38 30 48 14 0d 5f 51 46 42 00 70 0a p..P80H.._QFB.p. 8d50: fb 50 38 30 48 14 0d 5f 51 46 43 00 70 0a fc 50 .P80H.._QFC.p..P 8d60: 38 30 48 14 46 0c 5f 51 39 46 00 70 0a 9f 50 38 80H.F._Q9F.p..P8 8d70: 30 48 70 0a 00 60 70 0a 00 61 70 0a 00 62 70 0a 0Hp..`p..ap..bp. 8d80: 00 63 a0 17 93 51 43 4b 53 0a 00 70 0a f2 57 43 .c...QCKS..p..WC 8d90: 41 31 46 4f 57 4d 0a 11 0a 0b 70 57 46 49 31 60 A1FOWM....pWFI1` 8da0: 70 57 46 49 32 61 70 0b 00 01 62 70 0a 01 63 a0 pWFI2ap...bp..c. 8db0: 4a 07 57 49 46 53 70 0a 06 5e 5e 5e 5e 2e 41 4d J.WIFSp..^^^^.AM 8dc0: 57 30 49 4e 46 30 70 0a 00 5e 5e 5e 5e 2e 41 4d W0INF0p..^^^^.AM 8dd0: 57 30 49 4e 46 31 70 0b 08 e0 5e 5e 5e 5e 2e 41 W0INF1p...^^^^.A 8de0: 4d 57 30 49 4e 46 32 70 60 5e 5e 5e 5e 2e 41 4d MW0INF2p`^^^^.AM 8df0: 57 30 49 4e 46 33 70 61 5e 5e 5e 5e 2e 41 4d 57 W0INF3pa^^^^.AMW 8e00: 30 49 4e 46 34 70 62 5e 5e 5e 5e 2e 41 4d 57 30 0INF4pb^^^^.AMW0 8e10: 49 4e 46 35 70 63 5e 5e 5e 5e 2e 41 4d 57 30 49 INF5pc^^^^.AMW0I 8e20: 4e 46 36 86 41 4d 57 30 0a d0 5b 82 40 16 50 32 NF6.AMW0..[.@.P2 8e30: 50 5f 08 5f 41 44 52 0c 04 00 14 00 08 5f 50 52 P_._ADR......_PR 8e40: 57 12 06 02 0a 04 0a 05 14 43 14 5f 50 52 54 00 W........C._PRT. 8e50: a0 4b 07 47 50 49 43 a4 12 43 07 08 12 0d 04 0c .K.GPIC..C...... 8e60: ff ff 04 00 0a 00 0a 00 0a 15 12 0d 04 0c ff ff ................ 8e70: 04 00 0a 01 0a 00 0a 16 12 0d 04 0c ff ff 04 00 ................ 8e80: 0a 02 0a 00 0a 17 12 0d 04 0c ff ff 04 00 0a 03 ................ 8e90: 0a 00 0a 14 12 0d 04 0c ff ff 05 00 0a 00 0a 00 ................ 8ea0: 0a 14 12 0d 04 0c ff ff 05 00 0a 01 0a 00 0a 15 ................ 8eb0: 12 0d 04 0c ff ff 05 00 0a 02 0a 00 0a 16 12 0d ................ 8ec0: 04 0c ff ff 05 00 0a 03 0a 00 0a 17 a1 4f 0b a4 .............O.. 8ed0: 12 4b 0b 08 12 16 04 0c ff ff 04 00 0a 00 5e 5e .K............^^ 8ee0: 2e 4c 50 43 30 4c 4e 4b 46 0a 00 12 16 04 0c ff .LPC0LNKF....... 8ef0: ff 04 00 0a 01 5e 5e 2e 4c 50 43 30 4c 4e 4b 47 .....^^.LPC0LNKG 8f00: 0a 00 12 16 04 0c ff ff 04 00 0a 02 5e 5e 2e 4c ............^^.L 8f10: 50 43 30 4c 4e 4b 48 0a 00 12 16 04 0c ff ff 04 PC0LNKH......... 8f20: 00 0a 03 5e 5e 2e 4c 50 43 30 4c 4e 4b 45 0a 00 ...^^.LPC0LNKE.. 8f30: 12 16 04 0c ff ff 05 00 0a 00 5e 5e 2e 4c 50 43 ..........^^.LPC 8f40: 30 4c 4e 4b 45 0a 00 12 16 04 0c ff ff 05 00 0a 0LNKE........... 8f50: 01 5e 5e 2e 4c 50 43 30 4c 4e 4b 46 0a 00 12 16 .^^.LPC0LNKF.... 8f60: 04 0c ff ff 05 00 0a 02 5e 5e 2e 4c 50 43 30 4c ........^^.LPC0L 8f70: 4e 4b 47 0a 00 12 16 04 0c ff ff 05 00 0a 03 5e NKG............^ 8f80: 5e 2e 4c 50 43 30 4c 4e 4b 48 0a 00 5b 82 45 57 ^.LPC0LNKH..[.EW 8f90: 53 50 42 30 08 5f 41 44 52 0c 00 00 15 00 08 5f SPB0._ADR......_ 8fa0: 50 52 57 12 06 02 0a 08 0a 04 14 4d 09 5f 50 52 PRW........M._PR 8fb0: 54 00 a0 39 47 50 49 43 a4 12 32 04 12 0b 04 0b T..9GPIC..2..... 8fc0: ff ff 0a 00 0a 00 0a 10 12 0b 04 0b ff ff 0a 01 ................ 8fd0: 0a 00 0a 11 12 0b 04 0b ff ff 0a 02 0a 00 0a 12 ................ 8fe0: 12 0b 04 0b ff ff 0a 03 0a 00 0a 13 a1 4b 05 a4 .............K.. 8ff0: 12 47 05 04 12 14 04 0b ff ff 0a 00 5e 5e 2e 4c .G..........^^.L 9000: 50 43 30 4c 4e 4b 41 0a 00 12 14 04 0b ff ff 0a PC0LNKA......... 9010: 01 5e 5e 2e 4c 50 43 30 4c 4e 4b 42 0a 00 12 14 .^^.LPC0LNKB.... 9020: 04 0b ff ff 0a 02 5e 5e 2e 4c 50 43 30 4c 4e 4b ......^^.LPC0LNK 9030: 43 0a 00 12 14 04 0b ff ff 0a 03 5e 5e 2e 4c 50 C..........^^.LP 9040: 43 30 4c 4e 4b 44 0a 00 5b 80 50 43 46 47 02 0a C0LNKD..[.PCFG.. 9050: 00 0a 20 5b 81 18 50 43 46 47 03 44 56 49 44 20 .. [..PCFG.DVID 9060: 50 43 4d 53 20 00 40 08 53 42 55 53 20 5b 80 58 PCMS .@.SBUS [.X 9070: 50 43 42 02 0a 58 0a 40 5b 81 39 58 50 43 42 00 PCB..X.@[.9XPCB. 9080: 00 40 08 4c 4b 43 4e 10 4c 4b 53 54 10 00 30 00 .@.LKCN.LKST..0. 9090: 03 50 53 44 43 01 00 02 50 53 44 53 01 00 01 48 .PSDC...PSDS...H 90a0: 50 43 53 01 00 37 50 4d 45 53 01 00 4f 06 54 47 PCS..7PMES..O.TG 90b0: 4c 53 04 14 0f 47 50 50 42 00 a4 7b 5f 41 44 52 LS...GPPB..{_ADR 90c0: 0a 07 00 14 48 30 47 48 50 53 02 70 47 50 50 42 ....H0GHPS.pGPPB 90d0: 60 a0 4e 13 93 68 0a 00 a0 4c 04 93 60 0a 00 5e `.N..h...L..`..^ 90e0: 5e 2e 53 4d 42 5f 52 57 41 42 5e 5e 2e 53 4d 42 ^.SMB_RWAB^^.SMB 90f0: 5f 43 41 42 52 0a 06 0a 00 0a c0 0c ff ef ff ff _CABR........... 9100: 0a 00 5e 5e 2e 53 4d 42 5f 52 57 41 42 5e 5e 2e ..^^.SMB_RWAB^^. 9110: 53 4d 42 5f 43 41 42 52 0a 01 0a 00 0a 65 0c fe SMB_CABR.....e.. 9120: fe ff ff 0a 00 a0 4c 04 93 60 0a 01 5e 5e 2e 53 ......L..`..^^.S 9130: 4d 42 5f 52 57 41 42 5e 5e 2e 53 4d 42 5f 43 41 MB_RWAB^^.SMB_CA 9140: 42 52 0a 06 0a 00 0a c0 0c ff df ff ff 0a 00 5e BR.............^ 9150: 5e 2e 53 4d 42 5f 52 57 41 42 5e 5e 2e 53 4d 42 ^.SMB_RWAB^^.SMB 9160: 5f 43 41 42 52 0a 01 0a 00 0a 65 0c fd fd ff ff _CABR.....e..... 9170: 0a 00 a0 4c 04 93 60 0a 02 5e 5e 2e 53 4d 42 5f ...L..`..^^.SMB_ 9180: 52 57 41 42 5e 5e 2e 53 4d 42 5f 43 41 42 52 0a RWAB^^.SMB_CABR. 9190: 06 0a 00 0a c0 0c ff bf ff ff 0a 00 5e 5e 2e 53 ............^^.S 91a0: 4d 42 5f 52 57 41 42 5e 5e 2e 53 4d 42 5f 43 41 MB_RWAB^^.SMB_CA 91b0: 42 52 0a 01 0a 00 0a 65 0c fb fb ff ff 0a 00 a0 BR.....e........ 91c0: 4c 04 93 60 0a 03 5e 5e 2e 53 4d 42 5f 52 57 41 L..`..^^.SMB_RWA 91d0: 42 5e 5e 2e 53 4d 42 5f 43 41 42 52 0a 06 0a 00 B^^.SMB_CABR.... 91e0: 0a c0 0c ff 7f ff ff 0a 00 5e 5e 2e 53 4d 42 5f .........^^.SMB_ 91f0: 52 57 41 42 5e 5e 2e 53 4d 42 5f 43 41 42 52 0a RWAB^^.SMB_CABR. 9200: 01 0a 00 0a 65 0c f7 f7 ff ff 0a 00 5b 21 0a c8 ....e.......[!.. 9210: a0 46 14 93 68 0a 01 a0 4e 04 93 60 0a 00 5e 5e .F..h...N..`..^^ 9220: 2e 53 4d 42 5f 52 57 41 42 5e 5e 2e 53 4d 42 5f .SMB_RWAB^^.SMB_ 9230: 43 41 42 52 0a 06 0a 00 0a c0 0c ff ef ff ff 0b CABR............ 9240: 00 10 5e 5e 2e 53 4d 42 5f 52 57 41 42 5e 5e 2e ..^^.SMB_RWAB^^. 9250: 53 4d 42 5f 43 41 42 52 0a 01 0a 00 0a 65 0c fe SMB_CABR.....e.. 9260: fe ff ff 0b 01 01 a0 4e 04 93 60 0a 01 5e 5e 2e .......N..`..^^. 9270: 53 4d 42 5f 52 57 41 42 5e 5e 2e 53 4d 42 5f 43 SMB_RWAB^^.SMB_C 9280: 41 42 52 0a 06 0a 00 0a c0 0c ff df ff ff 0b 00 ABR............. 9290: 20 5e 5e 2e 53 4d 42 5f 52 57 41 42 5e 5e 2e 53 ^^.SMB_RWAB^^.S 92a0: 4d 42 5f 43 41 42 52 0a 01 0a 00 0a 65 0c fd fd MB_CABR.....e... 92b0: ff ff 0b 02 02 a0 4e 04 93 60 0a 02 5e 5e 2e 53 ......N..`..^^.S 92c0: 4d 42 5f 52 57 41 42 5e 5e 2e 53 4d 42 5f 43 41 MB_RWAB^^.SMB_CA 92d0: 42 52 0a 06 0a 00 0a c0 0c ff bf ff ff 0b 00 40 BR.............@ 92e0: 5e 5e 2e 53 4d 42 5f 52 57 41 42 5e 5e 2e 53 4d ^^.SMB_RWAB^^.SM 92f0: 42 5f 43 41 42 52 0a 01 0a 00 0a 65 0c fb fb ff B_CABR.....e.... 9300: ff 0b 04 04 a0 4e 04 93 60 0a 03 5e 5e 2e 53 4d .....N..`..^^.SM 9310: 42 5f 52 57 41 42 5e 5e 2e 53 4d 42 5f 43 41 42 B_RWAB^^.SMB_CAB 9320: 52 0a 06 0a 00 0a c0 0c ff 7f ff ff 0b 00 80 5e R..............^ 9330: 5e 2e 53 4d 42 5f 52 57 41 42 5e 5e 2e 53 4d 42 ^.SMB_RWAB^^.SMB 9340: 5f 43 41 42 52 0a 01 0a 00 0a 65 0c f7 f7 ff ff _CABR.....e..... 9350: 0b 08 08 5b 21 0a c8 a0 44 07 93 68 0a 00 47 45 ...[!...D..h..GE 9360: 4e 32 70 5e 5e 2e 53 4d 42 5f 52 44 41 42 5e 5e N2p^^.SMB_RDAB^^ 9370: 2e 53 4d 42 5f 43 41 42 52 0a 03 60 0a a5 61 7b .SMB_CABR..`..a{ 9380: 61 0a ff 61 70 0b f4 01 62 a2 37 90 92 93 61 0a a..ap...b.7...a. 9390: 10 94 62 0a 00 76 62 5b 21 0a c8 5b 21 0a c8 70 ..b..vb[!..[!..p 93a0: 5e 5e 2e 53 4d 42 5f 52 44 41 42 5e 5e 2e 53 4d ^^.SMB_RDAB^^.SM 93b0: 42 5f 43 41 42 52 0a 03 60 0a a5 61 7b 61 0a ff B_CABR..`..a{a.. 93c0: 61 a0 0a 92 93 61 0a 10 47 45 4e 31 14 49 0a 47 a....a..GEN1.I.G 93d0: 45 4e 32 00 70 0a 02 54 47 4c 53 70 47 50 50 42 EN2.p..TGLSpGPPB 93e0: 60 5e 5e 2e 53 4d 42 5f 52 57 41 42 5e 5e 2e 53 `^^.SMB_RWAB^^.S 93f0: 4d 42 5f 43 41 42 52 0a 03 60 0a a4 0c fe ff ff MB_CABR..`...... 9400: ff 0a 01 5e 5e 2e 53 4d 42 5f 52 57 41 42 5e 5e ...^^.SMB_RWAB^^ 9410: 2e 53 4d 42 5f 43 41 42 52 0a 03 60 0a a2 0c ff .SMB_CABR..`.... 9420: df ff ff 0b 00 20 5e 5e 2e 53 4d 42 5f 52 57 41 ..... ^^.SMB_RWA 9430: 42 5e 5e 2e 53 4d 42 5f 43 41 42 52 0a 03 60 0a B^^.SMB_CABR..`. 9440: c0 0c ff 7f ff ff 0b 00 80 5e 5e 2e 53 4d 42 5f .........^^.SMB_ 9450: 52 57 41 42 5e 5e 2e 53 4d 42 5f 43 41 42 52 0a RWAB^^.SMB_CABR. 9460: 03 60 0a a4 0c ff ff ff df 0c 00 00 00 20 5b 21 .`........... [! 9470: 0a c8 5b 21 0a c8 14 41 06 47 45 4e 31 00 70 0a ..[!...A.GEN1.p. 9480: 01 54 47 4c 53 70 47 50 50 42 60 5e 5e 2e 53 4d .TGLSpGPPB`^^.SM 9490: 42 5f 52 57 41 42 5e 5e 2e 53 4d 42 5f 43 41 42 B_RWAB^^.SMB_CAB 94a0: 52 0a 03 60 0a a4 0c fe ff ff ff 0a 00 5e 5e 2e R..`.........^^. 94b0: 53 4d 42 5f 52 57 41 42 5e 5e 2e 53 4d 42 5f 43 SMB_RWAB^^.SMB_C 94c0: 41 42 52 0a 03 60 0a a2 0c ff df ff ff 0b 00 20 ABR..`......... 94d0: 5b 21 0a c8 5b 21 0a c8 5b 82 29 58 50 44 56 08 [!..[!..[.)XPDV. 94e0: 5f 41 44 52 0a 00 5b 80 50 43 46 47 02 0a 00 0a _ADR..[.PCFG.... 94f0: 08 5b 81 10 50 43 46 47 03 44 56 49 44 20 50 43 .[..PCFG.DVID PC 9500: 4d 53 20 5b 82 45 57 53 50 42 31 08 5f 41 44 52 MS [.EWSPB1._ADR 9510: 0c 01 00 15 00 08 5f 50 52 57 12 06 02 0a 08 0a ......_PRW...... 9520: 04 14 4d 09 5f 50 52 54 00 a0 39 47 50 49 43 a4 ..M._PRT..9GPIC. 9530: 12 32 04 12 0b 04 0b ff ff 0a 00 0a 00 0a 11 12 .2.............. 9540: 0b 04 0b ff ff 0a 01 0a 00 0a 12 12 0b 04 0b ff ................ 9550: ff 0a 02 0a 00 0a 13 12 0b 04 0b ff ff 0a 03 0a ................ 9560: 00 0a 10 a1 4b 05 a4 12 47 05 04 12 14 04 0b ff ....K...G....... 9570: ff 0a 00 5e 5e 2e 4c 50 43 30 4c 4e 4b 42 0a 00 ...^^.LPC0LNKB.. 9580: 12 14 04 0b ff ff 0a 01 5e 5e 2e 4c 50 43 30 4c ........^^.LPC0L 9590: 4e 4b 43 0a 00 12 14 04 0b ff ff 0a 02 5e 5e 2e NKC..........^^. 95a0: 4c 50 43 30 4c 4e 4b 44 0a 00 12 14 04 0b ff ff LPC0LNKD........ 95b0: 0a 03 5e 5e 2e 4c 50 43 30 4c 4e 4b 41 0a 00 5b ..^^.LPC0LNKA..[ 95c0: 80 50 43 46 47 02 0a 00 0a 20 5b 81 18 50 43 46 .PCFG.... [..PCF 95d0: 47 03 44 56 49 44 20 50 43 4d 53 20 00 40 08 53 G.DVID PCMS .@.S 95e0: 42 55 53 20 5b 80 58 50 43 42 02 0a 58 0a 40 5b BUS [.XPCB..X.@[ 95f0: 81 39 58 50 43 42 00 00 40 08 4c 4b 43 4e 10 4c .9XPCB..@.LKCN.L 9600: 4b 53 54 10 00 30 00 03 50 53 44 43 01 00 02 50 KST..0..PSDC...P 9610: 53 44 53 01 00 01 48 50 43 53 01 00 37 50 4d 45 SDS...HPCS..7PME 9620: 53 01 00 4f 06 54 47 4c 53 04 14 0f 47 50 50 42 S..O.TGLS...GPPB 9630: 00 a4 7b 5f 41 44 52 0a 07 00 14 48 30 47 48 50 ..{_ADR....H0GHP 9640: 53 02 70 47 50 50 42 60 a0 4e 13 93 68 0a 00 a0 S.pGPPB`.N..h... 9650: 4c 04 93 60 0a 00 5e 5e 2e 53 4d 42 5f 52 57 41 L..`..^^.SMB_RWA 9660: 42 5e 5e 2e 53 4d 42 5f 43 41 42 52 0a 06 0a 00 B^^.SMB_CABR.... 9670: 0a c0 0c ff ef ff ff 0a 00 5e 5e 2e 53 4d 42 5f .........^^.SMB_ 9680: 52 57 41 42 5e 5e 2e 53 4d 42 5f 43 41 42 52 0a RWAB^^.SMB_CABR. 9690: 01 0a 00 0a 65 0c fe fe ff ff 0a 00 a0 4c 04 93 ....e........L.. 96a0: 60 0a 01 5e 5e 2e 53 4d 42 5f 52 57 41 42 5e 5e `..^^.SMB_RWAB^^ 96b0: 2e 53 4d 42 5f 43 41 42 52 0a 06 0a 00 0a c0 0c .SMB_CABR....... 96c0: ff df ff ff 0a 00 5e 5e 2e 53 4d 42 5f 52 57 41 ......^^.SMB_RWA 96d0: 42 5e 5e 2e 53 4d 42 5f 43 41 42 52 0a 01 0a 00 B^^.SMB_CABR.... 96e0: 0a 65 0c fd fd ff ff 0a 00 a0 4c 04 93 60 0a 02 .e........L..`.. 96f0: 5e 5e 2e 53 4d 42 5f 52 57 41 42 5e 5e 2e 53 4d ^^.SMB_RWAB^^.SM 9700: 42 5f 43 41 42 52 0a 06 0a 00 0a c0 0c ff bf ff B_CABR.......... 9710: ff 0a 00 5e 5e 2e 53 4d 42 5f 52 57 41 42 5e 5e ...^^.SMB_RWAB^^ 9720: 2e 53 4d 42 5f 43 41 42 52 0a 01 0a 00 0a 65 0c .SMB_CABR.....e. 9730: fb fb ff ff 0a 00 a0 4c 04 93 60 0a 03 5e 5e 2e .......L..`..^^. 9740: 53 4d 42 5f 52 57 41 42 5e 5e 2e 53 4d 42 5f 43 SMB_RWAB^^.SMB_C 9750: 41 42 52 0a 06 0a 00 0a c0 0c ff 7f ff ff 0a 00 ABR............. 9760: 5e 5e 2e 53 4d 42 5f 52 57 41 42 5e 5e 2e 53 4d ^^.SMB_RWAB^^.SM 9770: 42 5f 43 41 42 52 0a 01 0a 00 0a 65 0c f7 f7 ff B_CABR.....e.... 9780: ff 0a 00 5b 21 0a c8 a0 46 14 93 68 0a 01 a0 4e ...[!...F..h...N 9790: 04 93 60 0a 00 5e 5e 2e 53 4d 42 5f 52 57 41 42 ..`..^^.SMB_RWAB 97a0: 5e 5e 2e 53 4d 42 5f 43 41 42 52 0a 06 0a 00 0a ^^.SMB_CABR..... 97b0: c0 0c ff ef ff ff 0b 00 10 5e 5e 2e 53 4d 42 5f .........^^.SMB_ 97c0: 52 57 41 42 5e 5e 2e 53 4d 42 5f 43 41 42 52 0a RWAB^^.SMB_CABR. 97d0: 01 0a 00 0a 65 0c fe fe ff ff 0b 01 01 a0 4e 04 ....e.........N. 97e0: 93 60 0a 01 5e 5e 2e 53 4d 42 5f 52 57 41 42 5e .`..^^.SMB_RWAB^ 97f0: 5e 2e 53 4d 42 5f 43 41 42 52 0a 06 0a 00 0a c0 ^.SMB_CABR...... 9800: 0c ff df ff ff 0b 00 20 5e 5e 2e 53 4d 42 5f 52 ....... ^^.SMB_R 9810: 57 41 42 5e 5e 2e 53 4d 42 5f 43 41 42 52 0a 01 WAB^^.SMB_CABR.. 9820: 0a 00 0a 65 0c fd fd ff ff 0b 02 02 a0 4e 04 93 ...e.........N.. 9830: 60 0a 02 5e 5e 2e 53 4d 42 5f 52 57 41 42 5e 5e `..^^.SMB_RWAB^^ 9840: 2e 53 4d 42 5f 43 41 42 52 0a 06 0a 00 0a c0 0c .SMB_CABR....... 9850: ff bf ff ff 0b 00 40 5e 5e 2e 53 4d 42 5f 52 57 ......@^^.SMB_RW 9860: 41 42 5e 5e 2e 53 4d 42 5f 43 41 42 52 0a 01 0a AB^^.SMB_CABR... 9870: 00 0a 65 0c fb fb ff ff 0b 04 04 a0 4e 04 93 60 ..e.........N..` 9880: 0a 03 5e 5e 2e 53 4d 42 5f 52 57 41 42 5e 5e 2e ..^^.SMB_RWAB^^. 9890: 53 4d 42 5f 43 41 42 52 0a 06 0a 00 0a c0 0c ff SMB_CABR........ 98a0: 7f ff ff 0b 00 80 5e 5e 2e 53 4d 42 5f 52 57 41 ......^^.SMB_RWA 98b0: 42 5e 5e 2e 53 4d 42 5f 43 41 42 52 0a 01 0a 00 B^^.SMB_CABR.... 98c0: 0a 65 0c f7 f7 ff ff 0b 08 08 5b 21 0a c8 a0 44 .e........[!...D 98d0: 07 93 68 0a 00 47 45 4e 32 70 5e 5e 2e 53 4d 42 ..h..GEN2p^^.SMB 98e0: 5f 52 44 41 42 5e 5e 2e 53 4d 42 5f 43 41 42 52 _RDAB^^.SMB_CABR 98f0: 0a 03 60 0a a5 61 7b 61 0a ff 61 70 0b f4 01 62 ..`..a{a..ap...b 9900: a2 37 90 92 93 61 0a 10 94 62 0a 00 76 62 5b 21 .7...a...b..vb[! 9910: 0a c8 5b 21 0a c8 70 5e 5e 2e 53 4d 42 5f 52 44 ..[!..p^^.SMB_RD 9920: 41 42 5e 5e 2e 53 4d 42 5f 43 41 42 52 0a 03 60 AB^^.SMB_CABR..` 9930: 0a a5 61 7b 61 0a ff 61 a0 0a 92 93 61 0a 10 47 ..a{a..a....a..G 9940: 45 4e 31 14 49 0a 47 45 4e 32 00 70 0a 02 54 47 EN1.I.GEN2.p..TG 9950: 4c 53 70 47 50 50 42 60 5e 5e 2e 53 4d 42 5f 52 LSpGPPB`^^.SMB_R 9960: 57 41 42 5e 5e 2e 53 4d 42 5f 43 41 42 52 0a 03 WAB^^.SMB_CABR.. 9970: 60 0a a4 0c fe ff ff ff 0a 01 5e 5e 2e 53 4d 42 `.........^^.SMB 9980: 5f 52 57 41 42 5e 5e 2e 53 4d 42 5f 43 41 42 52 _RWAB^^.SMB_CABR 9990: 0a 03 60 0a a2 0c ff df ff ff 0b 00 20 5e 5e 2e ..`......... ^^. 99a0: 53 4d 42 5f 52 57 41 42 5e 5e 2e 53 4d 42 5f 43 SMB_RWAB^^.SMB_C 99b0: 41 42 52 0a 03 60 0a c0 0c ff 7f ff ff 0b 00 80 ABR..`.......... 99c0: 5e 5e 2e 53 4d 42 5f 52 57 41 42 5e 5e 2e 53 4d ^^.SMB_RWAB^^.SM 99d0: 42 5f 43 41 42 52 0a 03 60 0a a4 0c ff ff ff df B_CABR..`....... 99e0: 0c 00 00 00 20 5b 21 0a c8 5b 21 0a c8 14 41 06 .... [!..[!...A. 99f0: 47 45 4e 31 00 70 0a 01 54 47 4c 53 70 47 50 50 GEN1.p..TGLSpGPP 9a00: 42 60 5e 5e 2e 53 4d 42 5f 52 57 41 42 5e 5e 2e B`^^.SMB_RWAB^^. 9a10: 53 4d 42 5f 43 41 42 52 0a 03 60 0a a4 0c fe ff SMB_CABR..`..... 9a20: ff ff 0a 00 5e 5e 2e 53 4d 42 5f 52 57 41 42 5e ....^^.SMB_RWAB^ 9a30: 5e 2e 53 4d 42 5f 43 41 42 52 0a 03 60 0a a2 0c ^.SMB_CABR..`... 9a40: ff df ff ff 0b 00 20 5b 21 0a c8 5b 21 0a c8 5b ...... [!..[!..[ 9a50: 82 29 58 50 44 56 08 5f 41 44 52 0a 00 5b 80 50 .)XPDV._ADR..[.P 9a60: 43 46 47 02 0a 00 0a 08 5b 81 10 50 43 46 47 03 CFG.....[..PCFG. 9a70: 44 56 49 44 20 50 43 4d 53 20 5b 82 45 57 53 50 DVID PCMS [.EWSP 9a80: 42 32 08 5f 41 44 52 0c 02 00 15 00 08 5f 50 52 B2._ADR......_PR 9a90: 57 12 06 02 0a 08 0a 04 14 4d 09 5f 50 52 54 00 W........M._PRT. 9aa0: a0 39 47 50 49 43 a4 12 32 04 12 0b 04 0b ff ff .9GPIC..2....... 9ab0: 0a 00 0a 00 0a 12 12 0b 04 0b ff ff 0a 01 0a 00 ................ 9ac0: 0a 13 12 0b 04 0b ff ff 0a 02 0a 00 0a 10 12 0b ................ 9ad0: 04 0b ff ff 0a 03 0a 00 0a 11 a1 4b 05 a4 12 47 ...........K...G 9ae0: 05 04 12 14 04 0b ff ff 0a 00 5e 5e 2e 4c 50 43 ..........^^.LPC 9af0: 30 4c 4e 4b 43 0a 00 12 14 04 0b ff ff 0a 01 5e 0LNKC..........^ 9b00: 5e 2e 4c 50 43 30 4c 4e 4b 44 0a 00 12 14 04 0b ^.LPC0LNKD...... 9b10: ff ff 0a 02 5e 5e 2e 4c 50 43 30 4c 4e 4b 41 0a ....^^.LPC0LNKA. 9b20: 00 12 14 04 0b ff ff 0a 03 5e 5e 2e 4c 50 43 30 .........^^.LPC0 9b30: 4c 4e 4b 42 0a 00 5b 80 50 43 46 47 02 0a 00 0a LNKB..[.PCFG.... 9b40: 20 5b 81 18 50 43 46 47 03 44 56 49 44 20 50 43 [..PCFG.DVID PC 9b50: 4d 53 20 00 40 08 53 42 55 53 20 5b 80 58 50 43 MS .@.SBUS [.XPC 9b60: 42 02 0a 58 0a 40 5b 81 39 58 50 43 42 00 00 40 B..X.@[.9XPCB..@ 9b70: 08 4c 4b 43 4e 10 4c 4b 53 54 10 00 30 00 03 50 .LKCN.LKST..0..P 9b80: 53 44 43 01 00 02 50 53 44 53 01 00 01 48 50 43 SDC...PSDS...HPC 9b90: 53 01 00 37 50 4d 45 53 01 00 4f 06 54 47 4c 53 S..7PMES..O.TGLS 9ba0: 04 14 0f 47 50 50 42 00 a4 7b 5f 41 44 52 0a 07 ...GPPB..{_ADR.. 9bb0: 00 14 48 30 47 48 50 53 02 70 47 50 50 42 60 a0 ..H0GHPS.pGPPB`. 9bc0: 4e 13 93 68 0a 00 a0 4c 04 93 60 0a 00 5e 5e 2e N..h...L..`..^^. 9bd0: 53 4d 42 5f 52 57 41 42 5e 5e 2e 53 4d 42 5f 43 SMB_RWAB^^.SMB_C 9be0: 41 42 52 0a 06 0a 00 0a c0 0c ff ef ff ff 0a 00 ABR............. 9bf0: 5e 5e 2e 53 4d 42 5f 52 57 41 42 5e 5e 2e 53 4d ^^.SMB_RWAB^^.SM 9c00: 42 5f 43 41 42 52 0a 01 0a 00 0a 65 0c fe fe ff B_CABR.....e.... 9c10: ff 0a 00 a0 4c 04 93 60 0a 01 5e 5e 2e 53 4d 42 ....L..`..^^.SMB 9c20: 5f 52 57 41 42 5e 5e 2e 53 4d 42 5f 43 41 42 52 _RWAB^^.SMB_CABR 9c30: 0a 06 0a 00 0a c0 0c ff df ff ff 0a 00 5e 5e 2e .............^^. 9c40: 53 4d 42 5f 52 57 41 42 5e 5e 2e 53 4d 42 5f 43 SMB_RWAB^^.SMB_C 9c50: 41 42 52 0a 01 0a 00 0a 65 0c fd fd ff ff 0a 00 ABR.....e....... 9c60: a0 4c 04 93 60 0a 02 5e 5e 2e 53 4d 42 5f 52 57 .L..`..^^.SMB_RW 9c70: 41 42 5e 5e 2e 53 4d 42 5f 43 41 42 52 0a 06 0a AB^^.SMB_CABR... 9c80: 00 0a c0 0c ff bf ff ff 0a 00 5e 5e 2e 53 4d 42 ..........^^.SMB 9c90: 5f 52 57 41 42 5e 5e 2e 53 4d 42 5f 43 41 42 52 _RWAB^^.SMB_CABR 9ca0: 0a 01 0a 00 0a 65 0c fb fb ff ff 0a 00 a0 4c 04 .....e........L. 9cb0: 93 60 0a 03 5e 5e 2e 53 4d 42 5f 52 57 41 42 5e .`..^^.SMB_RWAB^ 9cc0: 5e 2e 53 4d 42 5f 43 41 42 52 0a 06 0a 00 0a c0 ^.SMB_CABR...... 9cd0: 0c ff 7f ff ff 0a 00 5e 5e 2e 53 4d 42 5f 52 57 .......^^.SMB_RW 9ce0: 41 42 5e 5e 2e 53 4d 42 5f 43 41 42 52 0a 01 0a AB^^.SMB_CABR... 9cf0: 00 0a 65 0c f7 f7 ff ff 0a 00 5b 21 0a c8 a0 46 ..e.......[!...F 9d00: 14 93 68 0a 01 a0 4e 04 93 60 0a 00 5e 5e 2e 53 ..h...N..`..^^.S 9d10: 4d 42 5f 52 57 41 42 5e 5e 2e 53 4d 42 5f 43 41 MB_RWAB^^.SMB_CA 9d20: 42 52 0a 06 0a 00 0a c0 0c ff ef ff ff 0b 00 10 BR.............. 9d30: 5e 5e 2e 53 4d 42 5f 52 57 41 42 5e 5e 2e 53 4d ^^.SMB_RWAB^^.SM 9d40: 42 5f 43 41 42 52 0a 01 0a 00 0a 65 0c fe fe ff B_CABR.....e.... 9d50: ff 0b 01 01 a0 4e 04 93 60 0a 01 5e 5e 2e 53 4d .....N..`..^^.SM 9d60: 42 5f 52 57 41 42 5e 5e 2e 53 4d 42 5f 43 41 42 B_RWAB^^.SMB_CAB 9d70: 52 0a 06 0a 00 0a c0 0c ff df ff ff 0b 00 20 5e R............. ^ 9d80: 5e 2e 53 4d 42 5f 52 57 41 42 5e 5e 2e 53 4d 42 ^.SMB_RWAB^^.SMB 9d90: 5f 43 41 42 52 0a 01 0a 00 0a 65 0c fd fd ff ff _CABR.....e..... 9da0: 0b 02 02 a0 4e 04 93 60 0a 02 5e 5e 2e 53 4d 42 ....N..`..^^.SMB 9db0: 5f 52 57 41 42 5e 5e 2e 53 4d 42 5f 43 41 42 52 _RWAB^^.SMB_CABR 9dc0: 0a 06 0a 00 0a c0 0c ff bf ff ff 0b 00 40 5e 5e .............@^^ 9dd0: 2e 53 4d 42 5f 52 57 41 42 5e 5e 2e 53 4d 42 5f .SMB_RWAB^^.SMB_ 9de0: 43 41 42 52 0a 01 0a 00 0a 65 0c fb fb ff ff 0b CABR.....e...... 9df0: 04 04 a0 4e 04 93 60 0a 03 5e 5e 2e 53 4d 42 5f ...N..`..^^.SMB_ 9e00: 52 57 41 42 5e 5e 2e 53 4d 42 5f 43 41 42 52 0a RWAB^^.SMB_CABR. 9e10: 06 0a 00 0a c0 0c ff 7f ff ff 0b 00 80 5e 5e 2e .............^^. 9e20: 53 4d 42 5f 52 57 41 42 5e 5e 2e 53 4d 42 5f 43 SMB_RWAB^^.SMB_C 9e30: 41 42 52 0a 01 0a 00 0a 65 0c f7 f7 ff ff 0b 08 ABR.....e....... 9e40: 08 5b 21 0a c8 a0 44 07 93 68 0a 00 47 45 4e 32 .[!...D..h..GEN2 9e50: 70 5e 5e 2e 53 4d 42 5f 52 44 41 42 5e 5e 2e 53 p^^.SMB_RDAB^^.S 9e60: 4d 42 5f 43 41 42 52 0a 03 60 0a a5 61 7b 61 0a MB_CABR..`..a{a. 9e70: ff 61 70 0b f4 01 62 a2 37 90 92 93 61 0a 10 94 .ap...b.7...a... 9e80: 62 0a 00 76 62 5b 21 0a c8 5b 21 0a c8 70 5e 5e b..vb[!..[!..p^^ 9e90: 2e 53 4d 42 5f 52 44 41 42 5e 5e 2e 53 4d 42 5f .SMB_RDAB^^.SMB_ 9ea0: 43 41 42 52 0a 03 60 0a a5 61 7b 61 0a ff 61 a0 CABR..`..a{a..a. 9eb0: 0a 92 93 61 0a 10 47 45 4e 31 14 49 0a 47 45 4e ...a..GEN1.I.GEN 9ec0: 32 00 70 0a 02 54 47 4c 53 70 47 50 50 42 60 5e 2.p..TGLSpGPPB`^ 9ed0: 5e 2e 53 4d 42 5f 52 57 41 42 5e 5e 2e 53 4d 42 ^.SMB_RWAB^^.SMB 9ee0: 5f 43 41 42 52 0a 03 60 0a a4 0c fe ff ff ff 0a _CABR..`........ 9ef0: 01 5e 5e 2e 53 4d 42 5f 52 57 41 42 5e 5e 2e 53 .^^.SMB_RWAB^^.S 9f00: 4d 42 5f 43 41 42 52 0a 03 60 0a a2 0c ff df ff MB_CABR..`...... 9f10: ff 0b 00 20 5e 5e 2e 53 4d 42 5f 52 57 41 42 5e ... ^^.SMB_RWAB^ 9f20: 5e 2e 53 4d 42 5f 43 41 42 52 0a 03 60 0a c0 0c ^.SMB_CABR..`... 9f30: ff 7f ff ff 0b 00 80 5e 5e 2e 53 4d 42 5f 52 57 .......^^.SMB_RW 9f40: 41 42 5e 5e 2e 53 4d 42 5f 43 41 42 52 0a 03 60 AB^^.SMB_CABR..` 9f50: 0a a4 0c ff ff ff df 0c 00 00 00 20 5b 21 0a c8 ........... [!.. 9f60: 5b 21 0a c8 14 41 06 47 45 4e 31 00 70 0a 01 54 [!...A.GEN1.p..T 9f70: 47 4c 53 70 47 50 50 42 60 5e 5e 2e 53 4d 42 5f GLSpGPPB`^^.SMB_ 9f80: 52 57 41 42 5e 5e 2e 53 4d 42 5f 43 41 42 52 0a RWAB^^.SMB_CABR. 9f90: 03 60 0a a4 0c fe ff ff ff 0a 00 5e 5e 2e 53 4d .`.........^^.SM 9fa0: 42 5f 52 57 41 42 5e 5e 2e 53 4d 42 5f 43 41 42 B_RWAB^^.SMB_CAB 9fb0: 52 0a 03 60 0a a2 0c ff df ff ff 0b 00 20 5b 21 R..`......... [! 9fc0: 0a c8 5b 21 0a c8 5b 82 29 58 50 44 56 08 5f 41 ..[!..[.)XPDV._A 9fd0: 44 52 0a 00 5b 80 50 43 46 47 02 0a 00 0a 08 5b DR..[.PCFG.....[ 9fe0: 81 10 50 43 46 47 03 44 56 49 44 20 50 43 4d 53 ..PCFG.DVID PCMS 9ff0: 20 5b 82 45 57 53 50 42 33 08 5f 41 44 52 0c 03 [.EWSPB3._ADR.. a000: 00 15 00 08 5f 50 52 57 12 06 02 0a 08 0a 04 14 ...._PRW........ a010: 4d 09 5f 50 52 54 00 a0 39 47 50 49 43 a4 12 32 M._PRT..9GPIC..2 a020: 04 12 0b 04 0b ff ff 0a 00 0a 00 0a 13 12 0b 04 ................ a030: 0b ff ff 0a 01 0a 00 0a 10 12 0b 04 0b ff ff 0a ................ a040: 02 0a 00 0a 11 12 0b 04 0b ff ff 0a 03 0a 00 0a ................ a050: 12 a1 4b 05 a4 12 47 05 04 12 14 04 0b ff ff 0a ..K...G......... a060: 00 5e 5e 2e 4c 50 43 30 4c 4e 4b 44 0a 00 12 14 .^^.LPC0LNKD.... a070: 04 0b ff ff 0a 01 5e 5e 2e 4c 50 43 30 4c 4e 4b ......^^.LPC0LNK a080: 41 0a 00 12 14 04 0b ff ff 0a 02 5e 5e 2e 4c 50 A..........^^.LP a090: 43 30 4c 4e 4b 42 0a 00 12 14 04 0b ff ff 0a 03 C0LNKB.......... a0a0: 5e 5e 2e 4c 50 43 30 4c 4e 4b 43 0a 00 5b 80 50 ^^.LPC0LNKC..[.P a0b0: 43 46 47 02 0a 00 0a 20 5b 81 18 50 43 46 47 03 CFG.... [..PCFG. a0c0: 44 56 49 44 20 50 43 4d 53 20 00 40 08 53 42 55 DVID PCMS .@.SBU a0d0: 53 20 5b 80 58 50 43 42 02 0a 58 0a 40 5b 81 39 S [.XPCB..X.@[.9 a0e0: 58 50 43 42 00 00 40 08 4c 4b 43 4e 10 4c 4b 53 XPCB..@.LKCN.LKS a0f0: 54 10 00 30 00 03 50 53 44 43 01 00 02 50 53 44 T..0..PSDC...PSD a100: 53 01 00 01 48 50 43 53 01 00 37 50 4d 45 53 01 S...HPCS..7PMES. a110: 00 4f 06 54 47 4c 53 04 14 0f 47 50 50 42 00 a4 .O.TGLS...GPPB.. a120: 7b 5f 41 44 52 0a 07 00 14 48 30 47 48 50 53 02 {_ADR....H0GHPS. a130: 70 47 50 50 42 60 a0 4e 13 93 68 0a 00 a0 4c 04 pGPPB`.N..h...L. a140: 93 60 0a 00 5e 5e 2e 53 4d 42 5f 52 57 41 42 5e .`..^^.SMB_RWAB^ a150: 5e 2e 53 4d 42 5f 43 41 42 52 0a 06 0a 00 0a c0 ^.SMB_CABR...... a160: 0c ff ef ff ff 0a 00 5e 5e 2e 53 4d 42 5f 52 57 .......^^.SMB_RW a170: 41 42 5e 5e 2e 53 4d 42 5f 43 41 42 52 0a 01 0a AB^^.SMB_CABR... a180: 00 0a 65 0c fe fe ff ff 0a 00 a0 4c 04 93 60 0a ..e........L..`. a190: 01 5e 5e 2e 53 4d 42 5f 52 57 41 42 5e 5e 2e 53 .^^.SMB_RWAB^^.S a1a0: 4d 42 5f 43 41 42 52 0a 06 0a 00 0a c0 0c ff df MB_CABR......... a1b0: ff ff 0a 00 5e 5e 2e 53 4d 42 5f 52 57 41 42 5e ....^^.SMB_RWAB^ a1c0: 5e 2e 53 4d 42 5f 43 41 42 52 0a 01 0a 00 0a 65 ^.SMB_CABR.....e a1d0: 0c fd fd ff ff 0a 00 a0 4c 04 93 60 0a 02 5e 5e ........L..`..^^ a1e0: 2e 53 4d 42 5f 52 57 41 42 5e 5e 2e 53 4d 42 5f .SMB_RWAB^^.SMB_ a1f0: 43 41 42 52 0a 06 0a 00 0a c0 0c ff bf ff ff 0a CABR............ a200: 00 5e 5e 2e 53 4d 42 5f 52 57 41 42 5e 5e 2e 53 .^^.SMB_RWAB^^.S a210: 4d 42 5f 43 41 42 52 0a 01 0a 00 0a 65 0c fb fb MB_CABR.....e... a220: ff ff 0a 00 a0 4c 04 93 60 0a 03 5e 5e 2e 53 4d .....L..`..^^.SM a230: 42 5f 52 57 41 42 5e 5e 2e 53 4d 42 5f 43 41 42 B_RWAB^^.SMB_CAB a240: 52 0a 06 0a 00 0a c0 0c ff 7f ff ff 0a 00 5e 5e R.............^^ a250: 2e 53 4d 42 5f 52 57 41 42 5e 5e 2e 53 4d 42 5f .SMB_RWAB^^.SMB_ a260: 43 41 42 52 0a 01 0a 00 0a 65 0c f7 f7 ff ff 0a CABR.....e...... a270: 00 5b 21 0a c8 a0 46 14 93 68 0a 01 a0 4e 04 93 .[!...F..h...N.. a280: 60 0a 00 5e 5e 2e 53 4d 42 5f 52 57 41 42 5e 5e `..^^.SMB_RWAB^^ a290: 2e 53 4d 42 5f 43 41 42 52 0a 06 0a 00 0a c0 0c .SMB_CABR....... a2a0: ff ef ff ff 0b 00 10 5e 5e 2e 53 4d 42 5f 52 57 .......^^.SMB_RW a2b0: 41 42 5e 5e 2e 53 4d 42 5f 43 41 42 52 0a 01 0a AB^^.SMB_CABR... a2c0: 00 0a 65 0c fe fe ff ff 0b 01 01 a0 4e 04 93 60 ..e.........N..` a2d0: 0a 01 5e 5e 2e 53 4d 42 5f 52 57 41 42 5e 5e 2e ..^^.SMB_RWAB^^. a2e0: 53 4d 42 5f 43 41 42 52 0a 06 0a 00 0a c0 0c ff SMB_CABR........ a2f0: df ff ff 0b 00 20 5e 5e 2e 53 4d 42 5f 52 57 41 ..... ^^.SMB_RWA a300: 42 5e 5e 2e 53 4d 42 5f 43 41 42 52 0a 01 0a 00 B^^.SMB_CABR.... a310: 0a 65 0c fd fd ff ff 0b 02 02 a0 4e 04 93 60 0a .e.........N..`. a320: 02 5e 5e 2e 53 4d 42 5f 52 57 41 42 5e 5e 2e 53 .^^.SMB_RWAB^^.S a330: 4d 42 5f 43 41 42 52 0a 06 0a 00 0a c0 0c ff bf MB_CABR......... a340: ff ff 0b 00 40 5e 5e 2e 53 4d 42 5f 52 57 41 42 ....@^^.SMB_RWAB a350: 5e 5e 2e 53 4d 42 5f 43 41 42 52 0a 01 0a 00 0a ^^.SMB_CABR..... a360: 65 0c fb fb ff ff 0b 04 04 a0 4e 04 93 60 0a 03 e.........N..`.. a370: 5e 5e 2e 53 4d 42 5f 52 57 41 42 5e 5e 2e 53 4d ^^.SMB_RWAB^^.SM a380: 42 5f 43 41 42 52 0a 06 0a 00 0a c0 0c ff 7f ff B_CABR.......... a390: ff 0b 00 80 5e 5e 2e 53 4d 42 5f 52 57 41 42 5e ....^^.SMB_RWAB^ a3a0: 5e 2e 53 4d 42 5f 43 41 42 52 0a 01 0a 00 0a 65 ^.SMB_CABR.....e a3b0: 0c f7 f7 ff ff 0b 08 08 5b 21 0a c8 a0 44 07 93 ........[!...D.. a3c0: 68 0a 00 47 45 4e 32 70 5e 5e 2e 53 4d 42 5f 52 h..GEN2p^^.SMB_R a3d0: 44 41 42 5e 5e 2e 53 4d 42 5f 43 41 42 52 0a 03 DAB^^.SMB_CABR.. a3e0: 60 0a a5 61 7b 61 0a ff 61 70 0b f4 01 62 a2 37 `..a{a..ap...b.7 a3f0: 90 92 93 61 0a 10 94 62 0a 00 76 62 5b 21 0a c8 ...a...b..vb[!.. a400: 5b 21 0a c8 70 5e 5e 2e 53 4d 42 5f 52 44 41 42 [!..p^^.SMB_RDAB a410: 5e 5e 2e 53 4d 42 5f 43 41 42 52 0a 03 60 0a a5 ^^.SMB_CABR..`.. a420: 61 7b 61 0a ff 61 a0 0a 92 93 61 0a 10 47 45 4e a{a..a....a..GEN a430: 31 14 49 0a 47 45 4e 32 00 70 0a 02 54 47 4c 53 1.I.GEN2.p..TGLS a440: 70 47 50 50 42 60 5e 5e 2e 53 4d 42 5f 52 57 41 pGPPB`^^.SMB_RWA a450: 42 5e 5e 2e 53 4d 42 5f 43 41 42 52 0a 03 60 0a B^^.SMB_CABR..`. a460: a4 0c fe ff ff ff 0a 01 5e 5e 2e 53 4d 42 5f 52 ........^^.SMB_R a470: 57 41 42 5e 5e 2e 53 4d 42 5f 43 41 42 52 0a 03 WAB^^.SMB_CABR.. a480: 60 0a a2 0c ff df ff ff 0b 00 20 5e 5e 2e 53 4d `......... ^^.SM a490: 42 5f 52 57 41 42 5e 5e 2e 53 4d 42 5f 43 41 42 B_RWAB^^.SMB_CAB a4a0: 52 0a 03 60 0a c0 0c ff 7f ff ff 0b 00 80 5e 5e R..`..........^^ a4b0: 2e 53 4d 42 5f 52 57 41 42 5e 5e 2e 53 4d 42 5f .SMB_RWAB^^.SMB_ a4c0: 43 41 42 52 0a 03 60 0a a4 0c ff ff ff df 0c 00 CABR..`......... a4d0: 00 00 20 5b 21 0a c8 5b 21 0a c8 14 41 06 47 45 .. [!..[!...A.GE a4e0: 4e 31 00 70 0a 01 54 47 4c 53 70 47 50 50 42 60 N1.p..TGLSpGPPB` a4f0: 5e 5e 2e 53 4d 42 5f 52 57 41 42 5e 5e 2e 53 4d ^^.SMB_RWAB^^.SM a500: 42 5f 43 41 42 52 0a 03 60 0a a4 0c fe ff ff ff B_CABR..`....... a510: 0a 00 5e 5e 2e 53 4d 42 5f 52 57 41 42 5e 5e 2e ..^^.SMB_RWAB^^. a520: 53 4d 42 5f 43 41 42 52 0a 03 60 0a a2 0c ff df SMB_CABR..`..... a530: ff ff 0b 00 20 5b 21 0a c8 5b 21 0a c8 5b 82 29 .... [!..[!..[.) a540: 58 50 44 56 08 5f 41 44 52 0a 00 5b 80 50 43 46 XPDV._ADR..[.PCF a550: 47 02 0a 00 0a 08 5b 81 10 50 43 46 47 03 44 56 G.....[..PCFG.DV a560: 49 44 20 50 43 4d 53 20 5b 82 4d a2 56 47 41 5f ID PCMS [.M.VGA_ a570: 08 5f 41 44 52 0c 00 00 01 00 08 50 58 45 4e 0c ._ADR......PXEN. a580: 01 00 00 80 08 50 58 49 44 0c 00 00 03 00 08 50 .....PXID......P a590: 58 4d 58 0c 01 00 00 80 08 4c 43 44 54 0c 00 00 XMX......LCDT... a5a0: 00 80 08 44 53 43 54 0c 00 00 00 80 08 50 58 46 ...DSCT......PXF a5b0: 58 0c 00 00 00 80 08 50 58 44 59 0c 01 00 00 80 X......PXDY..... a5c0: 08 41 46 37 45 0c 00 00 00 80 08 42 4c 56 4c 11 .AF7E......BLVL. a5d0: 13 0a 10 00 20 30 40 50 58 60 70 80 90 a0 b0 c0 .... 0@PX`p..... a5e0: d0 e0 ff 08 44 4f 53 50 0a 00 14 09 5f 53 54 41 ....DOSP...._STA a5f0: 00 a4 0a 0f 14 0c 5f 44 4f 53 01 70 68 44 4f 53 ......_DOS.phDOS a600: 50 14 21 5f 44 4f 44 00 a4 12 19 05 0c 00 01 01 P.!_DOD......... a610: 00 0c 10 01 01 00 0b 00 02 0c 10 02 01 00 0c 20 ............... a620: 02 01 00 5b 82 4a 0d 4c 43 44 5f 14 0a 5f 41 44 ...[.J.LCD_.._AD a630: 52 00 a4 0b 10 01 14 2e 5f 42 43 4c 00 a4 12 26 R......._BCL...& a640: 12 0a 64 0a 1e 0a 06 0a 0c 0a 12 0a 18 0a 1e 0a ..d............. a650: 24 0a 2a 0a 30 0a 36 0a 3c 0a 42 0a 48 0a 4e 0a $.*.0.6.<.B.H.N. a660: 54 0a 5a 0a 64 14 49 09 5f 42 43 4d 01 a0 2b 93 T.Z.d.I._BCM..+. a670: 41 46 37 45 0c 01 00 00 80 78 72 77 68 0a 03 00 AF7E.....xrwh... a680: 0a 13 00 0a 14 61 60 70 83 88 42 4c 56 4c 60 00 .....a`p..BLVL`. a690: 63 5e 5e 5e 41 46 4e 37 63 a1 4b 04 5b 23 5e 5e c^^^AFN7c.K.[#^^ a6a0: 5e 2e 4c 50 43 30 50 53 4d 58 ff ff 70 0a 01 5e ^.LPC0PSMX..p..^ a6b0: 5e 5e 2e 4c 50 43 30 49 4e 46 30 70 68 5e 5e 5e ^^.LPC0INF0ph^^^ a6c0: 2e 4c 50 43 30 49 4e 46 31 5e 5e 5e 2e 4c 50 43 .LPC0INF1^^^.LPC a6d0: 30 50 48 53 31 0a 8a 5b 27 5e 5e 5e 2e 4c 50 43 0PHS1..['^^^.LPC a6e0: 30 50 53 4d 58 a0 0e 50 57 52 53 70 42 52 47 41 0PSMX..PWRSpBRGA a6f0: 42 52 54 4c a1 0a 70 42 52 47 44 42 52 54 4c 08 BRTL..pBRGDBRTL. a700: 41 54 49 42 11 04 0b 00 01 14 4a 09 41 54 49 46 ATIB......J.ATIF a710: 0a a0 0a 93 68 0a 00 a4 41 46 30 30 a0 0a 93 68 ....h...AF00...h a720: 0a 01 a4 41 46 30 31 a0 0a 93 68 0a 02 a4 41 46 ...AF01...h...AF a730: 30 32 a0 16 93 68 0a 03 a4 41 46 30 33 83 88 69 02...h...AF03..i a740: 0a 02 00 83 88 69 0a 04 00 a0 0a 93 68 0a 0f a4 .....i......h... a750: 41 46 31 35 a1 4f 04 8b 41 54 49 42 0a 00 53 53 AF15.O..ATIB..SS a760: 5a 45 8b 41 54 49 42 0a 02 56 45 52 4e 8a 41 54 ZE.ATIB..VERN.AT a770: 49 42 0a 04 4e 4d 53 4b 8a 41 54 49 42 0a 08 53 IB..NMSK.ATIB..S a780: 46 55 4e 70 0a 00 53 53 5a 45 70 0a 00 56 45 52 FUNp..SSZEp..VER a790: 4e 70 0a 00 4e 4d 53 4b 70 0a 00 53 46 55 4e a4 Np..NMSKp..SFUN. a7a0: 41 54 49 42 14 41 09 41 46 30 30 00 70 0a f0 50 ATIB.A.AF00.p..P a7b0: 38 30 48 8b 41 54 49 42 0a 00 53 53 5a 45 8b 41 80H.ATIB..SSZE.A a7c0: 54 49 42 0a 02 56 45 52 4e 8a 41 54 49 42 0a 04 TIB..VERN.ATIB.. a7d0: 4e 4d 53 4b 8a 41 54 49 42 0a 08 53 46 55 4e 70 NMSK.ATIB..SFUNp a7e0: 0a 0c 53 53 5a 45 70 0a 01 56 45 52 4e a0 12 93 ..SSZEp..VERN... a7f0: 50 58 45 4e 0c 00 00 00 80 70 0a 11 4e 4d 53 4b PXEN.....p..NMSK a800: a1 08 70 0a 51 4e 4d 53 4b a0 16 93 41 46 37 45 ..p.QNMSK...AF7E a810: 0c 01 00 00 80 7d 4e 4d 53 4b 0a 80 4e 4d 53 4b .....}NMSK..NMSK a820: 70 4e 4d 53 4b 4d 53 4b 4e 70 0b 07 40 53 46 55 pNMSKMSKNp..@SFU a830: 4e a4 41 54 49 42 08 4e 43 4f 44 0a 81 14 47 05 N.ATIB.NCOD...G. a840: 41 46 30 31 00 70 0a f1 50 38 30 48 8b 41 54 49 AF01.p..P80H.ATI a850: 42 0a 00 53 53 5a 45 8a 41 54 49 42 0a 02 56 4d B..SSZE.ATIB..VM a860: 53 4b 8a 41 54 49 42 0a 06 46 4c 47 53 70 0a 0b SK.ATIB..FLGSp.. a870: 56 4d 53 4b 70 0a 0a 53 53 5a 45 70 0a 03 56 4d VMSKp..SSZEp..VM a880: 53 4b 70 0a 01 46 4c 47 53 70 0a 81 4e 43 4f 44 SKp..FLGSp..NCOD a890: a4 41 54 49 42 08 50 53 42 52 11 07 0a 04 00 00 .ATIB.PSBR...... a8a0: 00 00 08 4d 53 4b 4e 0a 00 08 53 45 58 4d 0a 00 ...MSKN...SEXM.. a8b0: 08 53 54 48 47 0a 00 08 53 54 48 49 0a 00 08 53 .STHG...STHI...S a8c0: 46 50 47 0a 00 08 53 46 50 49 0a 00 08 53 53 50 FPG...SFPI...SSP a8d0: 53 0a 00 08 53 53 44 4d 0a 0a 08 53 43 44 59 0a S...SSDM...SCDY. a8e0: 00 08 53 41 43 54 11 0a 0a 07 01 02 08 80 03 09 ..SACT.......... a8f0: 81 14 4b 19 41 46 30 32 00 70 0a f2 50 38 30 48 ..K.AF02.p..P80H a900: 8d 50 53 42 52 0a 00 50 44 53 57 8d 50 53 42 52 .PSBR..PDSW.PSBR a910: 0a 01 50 45 58 4d 8d 50 53 42 52 0a 02 50 54 48 ..PEXM.PSBR..PTH a920: 52 8d 50 53 42 52 0a 03 50 46 50 53 8d 50 53 42 R.PSBR..PFPS.PSB a930: 52 0a 04 50 53 50 53 8d 50 53 42 52 0a 05 50 44 R..PSPS.PSBR..PD a940: 43 43 8d 50 53 42 52 0a 06 50 58 50 53 8d 50 53 CC.PSBR..PXPS.PS a950: 42 52 0a 07 50 42 52 54 8b 41 54 49 42 0a 00 53 BR..PBRT.ATIB..S a960: 53 5a 45 8a 41 54 49 42 0a 02 50 53 42 49 8c 41 SZE.ATIB..PSBI.A a970: 54 49 42 0a 06 45 58 50 4d 8c 41 54 49 42 0a 07 TIB..EXPM.ATIB.. a980: 54 48 52 4d 8c 41 54 49 42 0a 08 54 48 49 44 8c THRM.ATIB..THID. a990: 41 54 49 42 0a 09 46 50 57 52 8c 41 54 49 42 0a ATIB..FPWR.ATIB. a9a0: 0a 46 50 49 44 8c 41 54 49 42 0a 0b 53 50 57 52 .FPID.ATIB..SPWR a9b0: 8c 41 54 49 42 0a 0c 42 52 54 4c 70 0a 0d 53 53 .ATIB..BRTLp..SS a9c0: 5a 45 70 50 53 42 52 50 53 42 49 a0 12 50 44 53 ZEpPSBRPSBI..PDS a9d0: 57 70 0a 82 50 38 30 48 70 00 50 44 53 57 a0 1a Wp..P80Hp.PDSW.. a9e0: 50 45 58 4d 70 53 45 58 4d 45 58 50 4d 70 00 53 PEXMpSEXMEXPMp.S a9f0: 45 58 4d 70 00 50 45 58 4d a0 29 50 54 48 52 70 EXMp.PEXM.)PTHRp aa00: 53 54 48 47 54 48 52 4d 70 53 54 48 49 54 48 49 STHGTHRMpSTHITHI aa10: 44 70 00 53 54 48 47 70 00 53 54 48 49 70 00 50 Dp.STHGp.STHIp.P aa20: 54 48 52 a0 29 50 46 50 53 70 53 46 50 47 46 50 THR.)PFPSpSFPGFP aa30: 57 52 70 53 46 50 49 46 50 57 52 70 00 53 46 50 WRpSFPIFPWRp.SFP aa40: 47 70 00 53 46 50 49 70 00 50 46 50 53 a0 14 50 Gp.SFPIp.PFPS..P aa50: 53 50 53 70 53 53 50 53 53 50 57 52 70 00 50 53 SPSpSSPSSPWRp.PS aa60: 50 53 a0 12 50 58 50 53 70 0a a2 50 38 30 48 70 PS..PXPSp..P80Hp aa70: 00 50 58 50 53 a0 12 50 42 52 54 70 0a f7 50 38 .PXPS..PBRTp..P8 aa80: 30 48 70 00 50 42 52 54 a4 41 54 49 42 14 49 14 0Hp.PBRT.ATIB.I. aa90: 41 46 30 33 02 70 0a f3 50 38 30 48 8b 41 54 49 AF03.p..P80H.ATI aaa0: 42 0a 00 53 53 5a 45 8b 41 54 49 42 0a 02 53 53 B..SSZE.ATIB..SS aab0: 44 50 8b 41 54 49 42 0a 04 53 43 44 50 70 68 53 DP.ATIB..SCDPphS aac0: 53 44 50 70 69 53 43 44 50 08 4e 58 54 44 0a 06 SDPpiSCDP.NXTD.. aad0: 08 43 49 44 58 0a 06 70 53 53 44 50 61 7b 61 0a .CIDX..pSSDPa{a. aae0: 8b 61 70 53 43 44 50 62 a0 27 5b 12 5e 5e 5e 2e .apSCDPb.'[.^^^. aaf0: 4c 49 44 5f 5f 4c 49 44 64 7b 62 0c fe ff ff ff LID__LIDd{b..... ab00: 62 7d 62 5e 5e 5e 2e 4c 49 44 5f 5f 4c 49 44 62 b}b^^^.LID__LIDb ab10: a1 06 7d 62 0a 01 62 70 62 50 38 30 48 70 00 60 ..}b..bpbP80Hp.` ab20: a2 28 95 60 87 53 41 43 54 70 83 88 53 41 43 54 .(.`.SACTp..SACT ab30: 60 00 63 a0 11 93 63 61 70 60 43 49 44 58 70 87 `.c...cap`CIDXp. ab40: 53 41 43 54 60 a1 03 75 60 70 43 49 44 58 60 a2 SACT`..u`pCIDX`. ab50: 36 95 60 87 53 41 43 54 75 60 a0 0c 93 60 87 53 6.`.SACTu`...`.S ab60: 41 43 54 70 0a 00 60 70 83 88 53 41 43 54 60 00 ACTp..`p..SACT`. ab70: 63 a0 14 93 7b 63 62 00 63 70 60 4e 58 54 44 70 c...{cb.cp`NXTDp ab80: 87 53 41 43 54 60 a0 11 93 4e 58 54 44 87 53 41 .SACT`...NXTD.SA ab90: 43 54 70 00 53 53 44 50 a1 29 70 4e 58 54 44 60 CTp.SSDP.)pNXTD` aba0: 70 83 88 53 41 43 54 60 00 63 7b 53 53 44 50 0c p..SACT`.c{SSDP. abb0: 74 ff ff ff 53 53 44 50 7d 53 53 44 50 63 53 53 t...SSDP}SSDPcSS abc0: 44 50 70 0a 04 53 53 5a 45 70 53 53 44 50 50 38 DPp..SSZEpSSDPP8 abd0: 30 48 a4 41 54 49 42 14 2a 41 46 4e 30 08 a0 23 0H.ATIB.*AFN0..# abe0: 7b 4d 53 4b 4e 0a 01 00 8d 50 53 42 52 0a 00 50 {MSKN....PSBR..P abf0: 44 53 57 70 01 50 44 53 57 86 56 47 41 5f 4e 43 DSWp.PDSW.VGA_NC ac00: 4f 44 14 41 04 41 46 4e 33 0a a0 39 7b 4d 53 4b OD.A.AFN3..9{MSK ac10: 4e 0a 08 00 70 68 60 70 60 53 46 50 49 70 69 60 N...ph`p`SFPIpi` ac20: 70 7b 60 0a 03 60 53 46 50 47 8d 50 53 42 52 0a p{`..`SFPG.PSBR. ac30: 03 50 46 50 53 70 01 50 46 50 53 86 56 47 41 5f .PFPSp.PFPS.VGA_ ac40: 4e 43 4f 44 14 41 04 41 46 4e 34 09 a0 39 7b 4d NCOD.A.AFN4..9{M ac50: 53 4b 4e 0a 10 00 70 68 60 70 53 53 50 53 61 70 SKN...ph`pSSPSap ac60: 60 53 53 50 53 a0 04 93 60 61 a1 1b 8d 50 53 42 `SSPS...`a...PSB ac70: 52 0a 04 50 53 50 53 70 01 50 53 50 53 86 56 47 R..PSPSp.PSPS.VG ac80: 41 5f 4e 43 4f 44 14 2a 41 46 4e 35 08 a0 23 7b A_NCOD.*AFN5..#{ ac90: 4d 53 4b 4e 0a 20 00 8d 50 53 42 52 0a 05 50 44 MSKN. ..PSBR..PD aca0: 43 43 70 01 50 44 43 43 86 56 47 41 5f 4e 43 4f CCp.PDCC.VGA_NCO acb0: 44 14 2a 41 46 4e 36 08 a0 23 7b 4d 53 4b 4e 0a D.*AFN6..#{MSKN. acc0: 40 00 8d 50 53 42 52 0a 06 50 58 50 53 70 01 50 @..PSBR..PXPSp.P acd0: 58 50 53 86 56 47 41 5f 4e 43 4f 44 14 3b 41 46 XPS.VGA_NCOD.;AF ace0: 4e 37 09 a0 34 7b 4d 53 4b 4e 0a 80 00 8d 50 53 N7..4{MSKN....PS acf0: 42 52 0a 07 50 42 52 54 70 01 50 42 52 54 8c 41 BR..PBRTp.PBRT.A ad00: 54 49 42 0a 0c 42 52 54 4c 70 68 42 52 54 4c 86 TIB..BRTLphBRTL. ad10: 56 47 41 5f 4e 43 4f 44 14 43 05 41 46 31 35 00 VGA_NCOD.C.AF15. ad20: 70 0a ff 50 38 30 48 8b 41 54 49 42 0a 00 44 4e p..P80H.ATIB..DN ad30: 55 4d 8b 41 54 49 42 0a 02 44 53 5a 45 70 0a 08 UM.ATIB..DSZEp.. ad40: 44 53 5a 45 5e 5e 2e 4c 50 43 30 50 48 53 33 0a DSZE^^.LPC0PHS3. ad50: 8d 0a 0f 41 54 49 42 70 5e 5e 2e 4c 50 43 30 49 ...ATIBp^^.LPC0I ad60: 4e 46 4f 41 54 49 42 a4 41 54 49 42 08 41 54 30 NFOATIB.ATIB.AT0 ad70: 30 11 03 0a ff 08 41 54 30 31 11 03 0a 03 14 3f 0.....AT01.....? ad80: 41 54 43 53 0a a0 09 93 68 0a 00 41 54 43 30 a0 ATCS....h..ATC0. ad90: 09 93 68 0a 01 41 54 43 31 a0 0a 93 68 0a 02 41 ..h..ATC1...h..A ada0: 54 43 32 69 a0 09 93 68 0a 03 41 54 43 33 a0 0a TC2i...h..ATC3.. adb0: 93 68 0a 04 41 54 43 34 69 a4 41 54 30 30 14 3c .h..ATC4i.AT00.< adc0: 41 54 43 30 00 8b 41 54 30 30 0a 00 53 5a 5a 45 ATC0..AT00..SZZE add0: 8b 41 54 30 30 0a 02 49 4e 54 46 8a 41 54 30 30 .AT00..INTF.AT00 ade0: 0a 04 53 55 50 50 70 0a 08 53 5a 5a 45 70 0a 01 ..SUPPp..SZZEp.. adf0: 49 4e 54 46 70 0a 0f 53 55 50 50 14 42 05 41 54 INTFp..SUPP.B.AT ae00: 43 31 08 8b 41 54 30 30 0a 00 53 5a 5a 45 8a 41 C1..AT00..SZZE.A ae10: 54 30 30 0a 02 56 46 4d 4b 8a 41 54 30 30 0a 06 T00..VFMK.AT00.. ae20: 46 4c 41 47 5b 13 41 54 30 30 0a 30 0a 01 44 4f FLAG[.AT00.0..DO ae30: 43 4b 70 0a 0a 53 5a 5a 45 70 0a 01 56 46 4d 4b CKp..SZZEp..VFMK ae40: 70 0a 00 46 4c 41 47 70 0a 01 44 4f 43 4b 14 4b p..FLAGp..DOCK.K ae50: 08 41 54 43 32 09 5b 13 68 0a 10 0a 03 46 55 43 .ATC2.[.h....FUC ae60: 43 5b 13 68 0a 13 0a 06 44 45 56 56 8c 68 0a 03 C[.h....DEVV.h.. ae70: 42 55 53 53 8a 68 0a 04 56 46 4d 4b 8a 68 0a 06 BUSS.h..VFMK.h.. ae80: 46 4c 41 47 5b 13 68 0a 30 0a 01 41 44 56 43 5b FLAG[.h.0..ADVC[ ae90: 13 68 0a 31 0a 01 57 46 43 4d 8c 68 0a 08 52 51 .h.1..WFCM.h..RQ aea0: 53 54 8c 68 0a 09 50 46 52 51 8b 41 54 30 30 0a ST.h..PFRQ.AT00. aeb0: 00 53 5a 5a 45 8c 41 54 30 30 0a 02 52 45 54 56 .SZZE.AT00..RETV aec0: 70 0a 03 53 5a 5a 45 70 0a 01 52 45 54 56 70 41 p..SZZEp..RETVpA aed0: 4c 49 42 0a 02 68 41 54 30 30 14 4e 05 41 54 43 LIB..hAT00.N.ATC aee0: 33 08 8b 41 54 30 30 0a 00 53 5a 5a 45 8c 41 54 3..AT00..SZZE.AT aef0: 30 30 0a 02 52 45 54 56 8b 41 54 30 31 0a 00 53 00..RETV.AT01..S af00: 5a 5a 42 8c 41 54 30 31 0a 02 50 53 50 50 70 0a ZZB.AT01..PSPPp. af10: 03 53 5a 5a 45 70 0a 01 52 45 54 56 70 0a 03 53 .SZZEp..RETVp..S af20: 5a 5a 42 70 0a 01 50 53 50 50 70 41 4c 49 42 0a ZZBp..PSPPpALIB. af30: 03 41 54 30 31 41 54 30 30 14 4d 05 41 54 43 34 .AT01AT00.M.ATC4 af40: 09 5b 13 68 0a 10 0a 03 46 55 43 43 5b 13 68 0a .[.h....FUCC[.h. af50: 13 0a 06 44 45 56 56 8c 68 0a 03 42 55 53 53 8c ...DEVV.h..BUSS. af60: 68 0a 04 4e 55 4c 4e 8b 41 54 30 30 0a 00 53 5a h..NULN.AT00..SZ af70: 5a 45 8c 41 54 30 30 0a 02 4e 55 4c 4d 70 0a 03 ZE.AT00..NULMp.. af80: 53 5a 5a 45 70 0a 01 4e 55 4c 4d 70 41 4c 49 42 SZZEp..NULMpALIB af90: 0a 04 68 41 54 30 30 10 4d b8 56 47 41 5f 08 41 ..hAT00.M.VGA_.A afa0: 54 50 42 11 04 0b 00 01 08 44 53 49 44 0c ff ff TPB......DSID... afb0: ff ff 08 47 50 46 41 0c ff ff ff ff 08 48 53 49 ...GPFA......HSI afc0: 44 0c ff ff ff ff 08 43 4e 54 30 11 08 0a 05 05 D......CNT0..... afd0: 00 00 10 01 08 43 4e 54 31 11 08 0a 05 05 01 00 .....CNT1....... afe0: 00 01 08 43 4e 54 32 11 08 0a 05 07 03 00 10 02 ...CNT2......... aff0: 08 43 4e 54 33 11 08 0a 05 07 07 00 20 02 08 43 .CNT3....... ..C b000: 4e 54 34 11 08 0a 05 00 09 00 30 02 08 43 4e 54 NT4.......0..CNT b010: 35 11 08 0a 05 01 00 01 10 01 08 43 4e 54 36 11 5..........CNT6. b020: 08 0a 05 01 01 01 00 01 08 43 4e 54 37 11 08 0a .........CNT7... b030: 05 03 03 01 10 02 08 43 4e 54 38 11 08 0a 05 03 .......CNT8..... b040: 07 01 20 02 08 43 4e 54 39 11 08 0a 05 00 09 01 .. ..CNT9....... b050: 30 02 14 4d 0a 41 54 50 58 0a a0 0a 93 68 0a 00 0..M.ATPX....h.. b060: a4 50 58 30 30 a0 0a 93 68 0a 01 a4 50 58 30 31 .PX00...h...PX01 b070: a0 14 93 68 0a 02 50 58 30 32 83 88 69 0a 02 00 ...h..PX02..i... b080: a4 41 54 50 42 a0 14 93 68 0a 03 50 58 30 33 83 .ATPB...h..PX03. b090: 88 69 0a 02 00 a4 41 54 50 42 a0 14 93 68 0a 04 .i....ATPB...h.. b0a0: 50 58 30 34 83 88 69 0a 02 00 a4 41 54 50 42 a0 PX04..i....ATPB. b0b0: 0a 93 68 0a 08 a4 50 58 30 38 a0 0a 93 68 0a 09 ..h...PX08...h.. b0c0: a4 50 58 30 39 8b 41 54 50 42 0a 00 53 53 5a 45 .PX09.ATPB..SSZE b0d0: 8b 41 54 50 42 0a 02 56 45 52 4e 8a 41 54 50 42 .ATPB..VERN.ATPB b0e0: 0a 04 53 46 55 4e 70 0a 00 53 53 5a 45 70 0a 00 ..SFUNp..SSZEp.. b0f0: 56 45 52 4e 70 0a 00 53 46 55 4e a4 41 54 50 42 VERNp..SFUN.ATPB b100: 14 48 0f 50 58 30 30 00 70 0a e0 50 38 30 48 8b .H.PX00.p..P80H. b110: 41 54 50 42 0a 00 53 53 5a 45 8b 41 54 50 42 0a ATPB..SSZE.ATPB. b120: 02 56 45 52 4e 8a 41 54 50 42 0a 04 53 46 55 4e .VERN.ATPB..SFUN b130: 70 0a 08 53 53 5a 45 70 0a 01 56 45 52 4e a0 17 p..SSZEp..VERN.. b140: 93 50 58 45 4e 0c 00 00 00 80 70 0a 00 53 46 55 .PXEN.....p..SFU b150: 4e a4 41 54 50 42 a0 13 93 50 58 4d 58 0c 00 00 N.ATPB...PXMX... b160: 00 80 70 0b 8f 01 53 46 55 4e a1 09 70 0b 83 01 ..p...SFUN..p... b170: 53 46 55 4e a0 19 93 50 58 44 59 0c 01 00 00 80 SFUN...PXDY..... b180: 7b 53 46 55 4e 0c fd ff ff ff 53 46 55 4e a0 21 {SFUN.....SFUN.! b190: 90 93 50 58 44 59 0c 01 00 00 80 93 50 58 46 58 ..PXDY......PXFX b1a0: 0c 01 00 00 80 7d 53 46 55 4e 0a 02 53 46 55 4e .....}SFUN..SFUN b1b0: 70 5e 5e 2f 03 50 42 33 5f 56 47 41 5f 53 56 49 p^^/.PB3_VGA_SVI b1c0: 44 60 70 5e 5e 2f 03 50 42 33 5f 48 44 41 55 53 D`p^^/.PB3_HDAUS b1d0: 56 49 44 61 a0 0f 92 93 60 0c ff ff ff ff 70 60 VIDa....`.....p` b1e0: 44 53 49 44 a0 0f 92 93 61 0c ff ff ff ff 70 61 DSID....a.....pa b1f0: 48 53 49 44 a4 41 54 50 42 14 42 08 50 58 30 31 HSID.ATPB.B.PX01 b200: 00 70 0a e1 50 38 30 48 8b 41 54 50 42 0a 00 53 .p..P80H.ATPB..S b210: 53 5a 45 8a 41 54 50 42 0a 02 56 4d 53 4b 8a 41 SZE.ATPB..VMSK.A b220: 54 50 42 0a 06 46 4c 47 53 70 0a 0a 53 53 5a 45 TPB..FLGSp..SSZE b230: 70 0b ff 01 56 4d 53 4b a0 12 93 50 58 4d 58 0c p...VMSK...PXMX. b240: 00 00 00 80 70 0a 4b 46 4c 47 53 a1 1f 70 0a 00 ....p.KFLGS..p.. b250: 46 4c 47 53 a0 16 93 50 58 44 59 0c 01 00 00 80 FLGS...PXDY..... b260: 7d 46 4c 47 53 0a 80 46 4c 47 53 7d 46 4c 47 53 }FLGS..FLGS}FLGS b270: 0b 00 01 46 4c 47 53 a4 41 54 50 42 14 48 48 50 ...FLGS.ATPB.HHP b280: 58 30 32 01 8b 41 54 50 42 0a 00 53 53 5a 45 8c X02..ATPB..SSZE. b290: 41 54 50 42 0a 02 50 57 53 54 70 0a 03 53 53 5a ATPB..PWSTp..SSZ b2a0: 45 70 11 03 0a 05 67 8b 67 0a 00 53 5a 5a 45 5b Ep....g.g..SZZE[ b2b0: 13 67 0a 10 0a 03 46 55 43 43 5b 13 67 0a 13 0a .g....FUCC[.g... b2c0: 05 44 45 56 56 8c 67 0a 03 42 55 53 53 8c 67 0a .DEVV.g..BUSS.g. b2d0: 04 48 50 53 54 70 0a 05 53 5a 5a 45 70 0a 00 42 .HPSTp..SZZEp..B b2e0: 55 53 53 70 0a 00 46 55 43 43 70 11 03 0a 04 66 USSp..FUCCp....f b2f0: 8c 66 0a 02 48 50 4f 58 7b 68 0a 01 50 57 53 54 .f..HPOX{h..PWST b300: 08 48 50 4f 4b 0a 00 a0 46 26 50 57 53 54 70 0b .HPOK...F&PWSTp. b310: e2 11 50 38 30 48 7d 5e 5e 2e 53 4d 42 5f 4d 53 ..P80H}^^.SMB_MS b320: 30 34 0a f0 5e 5e 2e 53 4d 42 5f 4d 53 30 34 70 04..^^.SMB_MS04p b330: 00 5e 5e 2e 53 4d 42 5f 50 32 43 4f 70 00 5e 5e .^^.SMB_P2COp.^^ b340: 2e 53 4d 42 5f 50 32 43 45 70 00 5e 5e 2e 53 4d .SMB_P2CEp.^^.SM b350: 42 5f 50 32 44 4f 70 00 5e 5e 2e 53 4d 42 5f 50 B_P2DOp.^^.SMB_P b360: 32 44 45 5b 22 0a 0a 70 01 5e 5e 2e 53 4d 42 5f 2DE["..p.^^.SMB_ b370: 50 32 44 4f 70 00 5e 5e 2e 53 4d 42 5f 50 32 44 P2DOp.^^.SMB_P2D b380: 45 5b 22 0a 0a 70 01 5e 5e 2e 53 4d 42 5f 50 33 E["..p.^^.SMB_P3 b390: 37 4f 70 00 5e 5e 2e 53 4d 42 5f 50 33 37 45 5b 7Op.^^.SMB_P37E[ b3a0: 22 0a 0a 70 01 5e 5e 2e 53 4d 42 5f 4d 58 32 38 "..p.^^.SMB_MX28 b3b0: a2 0f 93 5e 5e 2e 53 4d 42 5f 50 31 43 49 0a 00 ...^^.SMB_P1CI.. b3c0: 70 01 5e 5e 2e 53 4d 42 5f 50 32 43 4f 70 00 5e p.^^.SMB_P2COp.^ b3d0: 5e 2e 53 4d 42 5f 50 32 43 45 70 0b e2 12 50 38 ^.SMB_P2CEp...P8 b3e0: 30 48 70 0a 00 48 50 4f 4b 5b 22 0a 64 5b 22 0a 0Hp..HPOK[".d[". b3f0: 64 70 0a 03 44 45 56 56 70 0a 01 48 50 53 54 70 dp..DEVVp..HPSTp b400: 41 4c 49 42 0a 06 67 66 5b 22 0a 14 70 0a 00 62 ALIB..gf["..p..b b410: a2 44 0d 95 62 0a 0f 70 01 5e 5e 2e 50 42 33 5f .D..b..p.^^.PB3_ b420: 50 53 44 43 70 0a 01 64 70 0a c8 65 a2 31 90 64 PSDCp..dp..e.1.d b430: 65 70 5e 5e 2e 50 42 33 5f 58 50 52 44 0a a5 60 ep^^.PB3_XPRD..` b440: 7b 60 0a 7f 60 a0 10 90 92 95 60 0a 10 92 93 60 {`..`.....`....` b450: 0a 7f 70 0a 00 64 a1 07 5b 22 0a 05 76 65 a0 40 ..p..d..["..ve.@ b460: 08 92 64 70 5e 5e 2e 50 42 33 5f 58 50 44 4c 65 ..dp^^.PB3_XPDLe b470: a0 13 65 5e 5e 2e 50 42 33 5f 58 50 52 54 5b 22 ..e^^.PB3_XPRT[" b480: 0a 05 75 62 a1 4a 05 79 0a 03 0a 03 47 50 46 41 ..ub.J.y....GPFA b490: 70 47 50 46 41 5e 5e 2e 4c 50 43 30 49 4e 46 4f pGPFA^^.LPC0INFO b4a0: 5e 5e 2e 4c 50 43 30 50 48 53 31 0a 87 70 0a 00 ^^.LPC0PHS1..p.. b4b0: 60 a0 12 93 5e 5e 2e 50 42 33 5f 58 50 52 32 ff `...^^.PB3_XPR2. b4c0: 70 0a 01 60 a0 0d 60 70 0a 01 48 50 4f 4b 70 0a p..`..`p..HPOKp. b4d0: 10 62 a1 0c 70 0a 00 48 50 4f 4b 70 0a 10 62 a1 .b..p..HPOKp..b. b4e0: 05 70 0a 10 62 a0 40 08 92 48 50 4f 4b 70 0b e2 .p..b.@..HPOKp.. b4f0: 13 50 38 30 48 70 5e 5e 2f 03 50 42 33 5f 56 47 .P80Hp^^/.PB3_VG b500: 41 5f 44 56 49 44 61 5b 22 0a 0a 70 0a 01 64 70 A_DVIDa["..p..dp b510: 0a 05 65 a2 3d 90 64 65 70 5e 5e 2e 50 42 33 5f ..e.=.dep^^.PB3_ b520: 58 50 52 44 0a a5 60 7b 60 0a 7f 60 a0 0a 92 94 XPRD..`{`..`.... b530: 60 0a 04 70 0a 00 64 a1 19 70 5e 5e 2f 03 50 42 `..p..d..p^^/.PB b540: 33 5f 56 47 41 5f 44 56 49 44 61 5b 22 0a 05 76 3_VGA_DVIDa["..v b550: 65 70 0a 03 44 45 56 56 70 0a 00 48 50 53 54 41 ep..DEVVp..HPSTA b560: 4c 49 42 0a 06 67 70 0b e2 14 50 38 30 48 a1 40 LIB..gp...P80H.@ b570: 13 70 0b e2 02 50 38 30 48 79 0a 03 0a 03 47 50 .p...P80Hy....GP b580: 46 41 70 47 50 46 41 5e 5e 2e 4c 50 43 30 49 4e FApGPFA^^.LPC0IN b590: 46 4f 5e 5e 2e 4c 50 43 30 50 48 53 31 0a 84 70 FO^^.LPC0PHS1..p b5a0: 00 5e 5e 2e 53 4d 42 5f 50 32 43 4f 70 00 5e 5e .^^.SMB_P2COp.^^ b5b0: 2e 53 4d 42 5f 50 32 43 45 70 00 5e 5e 2e 53 4d .SMB_P2CEp.^^.SM b5c0: 42 5f 50 33 37 4f 70 00 5e 5e 2e 53 4d 42 5f 50 B_P37Op.^^.SMB_P b5d0: 33 37 45 5b 22 0a 0a 70 00 5e 5e 2e 53 4d 42 5f 37E["..p.^^.SMB_ b5e0: 50 32 44 4f 70 00 5e 5e 2e 53 4d 42 5f 50 32 44 P2DOp.^^.SMB_P2D b5f0: 45 70 0b e2 03 50 38 30 48 70 01 5e 5e 2e 50 42 Ep...P80Hp.^^.PB b600: 33 5f 50 53 44 43 70 5e 5e 2f 03 50 42 33 5f 56 3_PSDCp^^/.PB3_V b610: 47 41 5f 44 56 49 44 61 5b 22 0a 0a 70 0a 01 64 GA_DVIDa["..p..d b620: 70 0a 05 65 a2 3d 90 64 65 70 5e 5e 2e 50 42 33 p..e.=.dep^^.PB3 b630: 5f 58 50 52 44 0a a5 60 7b 60 0a 7f 60 a0 0a 92 _XPRD..`{`..`... b640: 94 60 0a 04 70 0a 00 64 a1 19 70 5e 5e 2f 03 50 .`..p..d..p^^/.P b650: 42 33 5f 56 47 41 5f 44 56 49 44 61 5b 22 0a 05 B3_VGA_DVIDa[".. b660: 76 65 70 0a 03 44 45 56 56 70 0a 00 48 50 53 54 vep..DEVVp..HPST b670: 41 4c 49 42 0a 06 67 70 0a 02 48 50 4f 4b 7b 5e ALIB..gp..HPOK{^ b680: 5e 2e 53 4d 42 5f 4d 53 30 34 0a 0f 5e 5e 2e 53 ^.SMB_MS04..^^.S b690: 4d 42 5f 4d 53 30 34 70 0b e2 04 50 38 30 48 a0 MB_MS04p...P80H. b6a0: 45 06 48 50 4f 4b a0 47 05 90 93 48 50 4f 4b 0a E.HPOK.G...HPOK. b6b0: 01 92 93 44 53 49 44 0c ff ff ff ff 70 44 53 49 ...DSID.....pDSI b6c0: 44 61 70 61 5e 5e 2f 03 50 42 33 5f 56 47 41 5f Dapa^^/.PB3_VGA_ b6d0: 53 4d 49 44 5b 22 0a 0a 70 48 53 49 44 61 a0 1b SMID["..pHSIDa.. b6e0: 92 93 61 0c ff ff ff ff 70 61 5e 5e 2f 03 50 42 ..a.....pa^^/.PB b6f0: 33 5f 48 44 41 55 53 4d 49 44 5b 22 0a 0a 86 50 3_HDAUSMID["...P b700: 42 33 5f 0a 00 14 4c 07 50 58 30 33 01 8b 41 54 B3_...L.PX03..AT b710: 50 42 0a 00 53 53 5a 45 8b 41 54 50 42 0a 02 44 PB..SSZE.ATPB..D b720: 50 53 57 70 0a 04 53 53 5a 45 7b 68 0a 01 44 50 PSWp..SSZE{h..DP b730: 53 57 a0 29 44 50 53 57 70 0b e3 02 50 38 30 48 SW.)DPSWp...P80H b740: 70 0a 01 5e 5e 2e 53 4d 42 5f 50 30 36 4f 70 0a p..^^.SMB_P06Op. b750: 00 5e 5e 2e 53 4d 42 5f 50 30 36 45 a1 25 70 0b .^^.SMB_P06E.%p. b760: e3 01 50 38 30 48 70 0a 00 5e 5e 2e 53 4d 42 5f ..P80Hp..^^.SMB_ b770: 50 30 36 4f 70 0a 00 5e 5e 2e 53 4d 42 5f 50 30 P06Op..^^.SMB_P0 b780: 36 45 14 43 08 50 58 30 34 01 70 0a e4 50 38 30 6E.C.PX04.p..P80 b790: 48 8b 41 54 50 42 0a 00 53 53 5a 45 8b 41 54 50 H.ATPB..SSZE.ATP b7a0: 42 0a 02 49 43 53 57 70 0a 04 53 53 5a 45 7b 68 B..ICSWp..SSZE{h b7b0: 0a 01 49 43 53 57 a0 29 49 43 53 57 70 0b e4 02 ..ICSW.)ICSWp... b7c0: 50 38 30 48 70 0a 01 5e 5e 2e 53 4d 42 5f 50 31 P80Hp..^^.SMB_P1 b7d0: 34 4f 70 0a 00 5e 5e 2e 53 4d 42 5f 50 31 34 45 4Op..^^.SMB_P14E b7e0: a1 25 70 0b e4 01 50 38 30 48 70 0a 00 5e 5e 2e .%p...P80Hp..^^. b7f0: 53 4d 42 5f 50 31 34 4f 70 0a 00 5e 5e 2e 53 4d SMB_P14Op..^^.SM b800: 42 5f 50 31 34 45 14 4a 27 50 58 30 38 00 70 0a B_P14E.J'PX08.p. b810: e8 50 38 30 48 8b 41 54 50 42 0a 00 43 4e 55 4d .P80H.ATPB..CNUM b820: 8b 41 54 50 42 0a 02 43 53 53 5a 70 0a 0a 43 4e .ATPB..CSSZp..CN b830: 55 4d 70 0a 05 43 53 53 5a 5b 13 41 54 50 42 0a UMp..CSSZ[.ATPB. b840: 20 0a 28 43 54 49 30 70 43 4e 54 30 43 54 49 30 .(CTI0pCNT0CTI0 b850: 5b 13 41 54 50 42 0a 48 0a 28 43 54 49 31 70 43 [.ATPB.H.(CTI1pC b860: 4e 54 31 43 54 49 31 5b 13 41 54 50 42 0a 70 0a NT1CTI1[.ATPB.p. b870: 28 43 54 49 32 8c 43 4e 54 32 0a 00 46 4c 47 32 (CTI2.CNT2..FLG2 b880: a0 31 93 4c 43 44 54 0c 01 00 00 80 a0 12 93 44 .1.LCDT........D b890: 53 43 54 0c 01 00 00 80 70 0a 00 46 4c 47 32 a0 SCT.....p..FLG2. b8a0: 12 93 44 53 43 54 0c 02 00 00 80 70 0a 07 46 4c ..DSCT.....p..FL b8b0: 47 32 70 43 4e 54 32 43 54 49 32 5b 13 41 54 50 G2pCNT2CTI2[.ATP b8c0: 42 0a 98 0a 28 43 54 49 33 8c 43 4e 54 33 0a 00 B...(CTI3.CNT3.. b8d0: 46 4c 47 33 a0 12 93 4c 43 44 54 0c 00 00 00 80 FLG3...LCDT..... b8e0: 70 0a 07 46 4c 47 33 a0 25 93 4c 43 44 54 0c 01 p..FLG3.%.LCDT.. b8f0: 00 00 80 70 0a 00 46 4c 47 33 a0 12 93 44 53 43 ...p..FLG3...DSC b900: 54 0c 02 00 00 80 70 0a 00 46 4c 47 33 a0 25 93 T.....p..FLG3.%. b910: 4c 43 44 54 0c 02 00 00 80 70 0a 00 46 4c 47 33 LCDT.....p..FLG3 b920: a0 12 93 44 53 43 54 0c 02 00 00 80 70 0a 07 46 ...DSCT.....p..F b930: 4c 47 33 70 43 4e 54 33 43 54 49 33 5b 13 41 54 LG3pCNT3CTI3[.AT b940: 50 42 0a c0 0a 28 43 54 49 34 70 43 4e 54 34 43 PB...(CTI4pCNT4C b950: 54 49 34 5b 13 41 54 50 42 0a e8 0a 28 43 54 49 TI4[.ATPB...(CTI b960: 35 70 43 4e 54 35 43 54 49 35 5b 13 41 54 50 42 5pCNT5CTI5[.ATPB b970: 0b 10 01 0a 28 43 54 49 36 70 43 4e 54 36 43 54 ....(CTI6pCNT6CT b980: 49 36 5b 13 41 54 50 42 0b 38 01 0a 28 43 54 49 I6[.ATPB.8..(CTI b990: 37 8c 43 4e 54 37 0a 00 46 4c 47 37 a0 31 93 4c 7.CNT7..FLG7.1.L b9a0: 43 44 54 0c 01 00 00 80 a0 12 93 44 53 43 54 0c CDT........DSCT. b9b0: 01 00 00 80 70 0a 00 46 4c 47 37 a0 12 93 44 53 ....p..FLG7...DS b9c0: 43 54 0c 02 00 00 80 70 0a 07 46 4c 47 37 70 43 CT.....p..FLG7pC b9d0: 4e 54 37 43 54 49 37 5b 13 41 54 50 42 0b 60 01 NT7CTI7[.ATPB.`. b9e0: 0a 28 43 54 49 38 8c 43 4e 54 38 0a 00 46 4c 47 .(CTI8.CNT8..FLG b9f0: 38 a0 12 93 4c 43 44 54 0c 00 00 00 80 70 0a 07 8...LCDT.....p.. ba00: 46 4c 47 38 a0 12 93 4c 43 44 54 0c 01 00 00 80 FLG8...LCDT..... ba10: 70 0a 00 46 4c 47 38 a0 12 93 4c 43 44 54 0c 02 p..FLG8...LCDT.. ba20: 00 00 80 70 0a 00 46 4c 47 38 a0 12 93 44 53 43 ...p..FLG8...DSC ba30: 54 0c 02 00 00 80 70 0a 07 46 4c 47 38 70 43 4e T.....p..FLG8pCN ba40: 54 38 43 54 49 38 5b 13 41 54 50 42 0b 88 01 0a T8CTI8[.ATPB.... ba50: 28 43 54 49 39 8c 43 4e 54 39 0a 00 46 4c 47 39 (CTI9.CNT9..FLG9 ba60: a0 12 93 44 53 43 54 0c 02 00 00 80 70 0a 07 46 ...DSCT.....p..F ba70: 4c 47 39 70 43 4e 54 39 43 54 49 39 a4 41 54 50 LG9pCNT9CTI9.ATP ba80: 42 14 43 0a 50 58 30 39 00 70 0a e9 50 38 30 48 B.C.PX09.p..P80H ba90: 8b 41 54 50 42 0a 00 43 4e 55 4d 8b 41 54 50 42 .ATPB..CNUM.ATPB baa0: 0a 02 43 53 53 5a 70 0a 00 43 4e 55 4d 70 0a 00 ..CSSZp..CNUMp.. bab0: 43 53 53 5a 8c 41 54 50 42 0a 04 41 54 49 30 8c CSSZ.ATPB..ATI0. bac0: 41 54 50 42 0a 05 48 50 44 30 8c 41 54 50 42 0a ATPB..HPD0.ATPB. bad0: 06 44 44 43 30 70 0a 00 41 54 49 30 70 0a 00 48 .DDC0p..ATI0p..H bae0: 50 44 30 70 0a 00 44 44 43 30 8c 41 54 50 42 0a PD0p..DDC0.ATPB. baf0: 07 41 54 49 31 8c 41 54 50 42 0a 08 48 50 44 31 .ATI1.ATPB..HPD1 bb00: 8c 41 54 50 42 0a 09 44 44 43 31 70 0a 00 41 54 .ATPB..DDC1p..AT bb10: 49 31 70 0a 00 48 50 44 31 70 0a 00 44 44 43 31 I1p..HPD1p..DDC1 bb20: a4 41 54 50 42 10 48 0d 56 47 41 5f 5b 80 52 45 .ATPB.H.VGA_[.RE bb30: 56 44 00 0c 18 a0 2f 5e 0c 04 ec 00 00 5b 81 12 VD..../^.....[.. bb40: 52 45 56 44 00 53 52 4f 4d 20 56 52 4f 4d 80 00 REVD.SROM VROM.. bb50: 76 08 54 56 47 41 11 05 0b 00 ec 00 14 41 0a 41 v.TVGA.......A.A bb60: 54 52 4d 0a 72 68 69 60 a0 3d 92 94 60 53 52 4f TRM.rhi`.=..`SRO bb70: 4d 77 69 0a 08 61 77 68 0a 08 62 70 56 52 4f 4d Mwi..awh..bpVROM bb80: 54 56 47 41 5b 13 54 56 47 41 62 61 54 45 4d 50 TVGA[.TVGAbaTEMP bb90: 08 52 45 54 42 11 02 69 70 54 45 4d 50 52 45 54 .RETB..ipTEMPRET bba0: 42 a4 52 45 54 42 a1 47 05 a0 44 04 95 68 53 52 B.RETB.G..D..hSR bbb0: 4f 4d 74 53 52 4f 4d 68 63 77 63 0a 08 61 77 68 OMtSROMhcwc..awh bbc0: 0a 08 62 70 56 52 4f 4d 54 56 47 41 5b 13 54 56 ..bpVROMTVGA[.TV bbd0: 47 41 62 61 54 45 4d 5f 08 52 45 54 43 11 02 63 GAbaTEM_.RETC..c bbe0: 70 54 45 4d 5f 52 45 54 43 a4 52 45 54 43 a1 0f pTEM_RETC.RETC.. bbf0: 08 52 45 54 44 11 03 0a 01 a4 52 45 54 44 08 41 .RETD.....RETD.A bc00: 46 43 42 11 03 0a b8 08 43 41 4c 42 11 03 0a 05 FCB.....CALB.... bc10: 5b 82 84 92 01 41 46 44 5f 08 5f 48 49 44 0d 41 [....AFD_._HID.A bc20: 46 44 30 30 30 31 00 08 41 46 45 4e 0c 00 00 00 FD0001..AFEN.... bc30: 80 08 46 55 33 45 0c 00 00 00 80 08 48 44 44 30 ..FU3E......HDD0 bc40: 0c 00 00 00 80 08 4f 44 5a 50 0c 01 00 00 80 08 ......ODZP...... bc50: 44 41 54 33 11 11 0a 0e 0e 00 03 0c 03 00 00 00 DAT3............ bc60: 92 00 03 00 00 00 08 44 41 54 34 11 11 0a 0e 0e .......DAT4..... bc70: 00 11 0d 03 00 00 00 a5 00 02 00 00 00 08 44 41 ..............DA bc80: 54 35 11 11 0a 0e 0e 00 00 03 00 00 00 ff 00 00 T5.............. bc90: 00 00 00 00 08 44 41 54 36 11 11 0a 0e 0e 00 00 .....DAT6....... bca0: 0c 00 00 00 ff 00 00 00 00 00 00 08 44 41 54 37 ............DAT7 bcb0: 11 11 0a 0e 0e 00 03 0c 03 00 00 00 00 ff 00 00 ................ bcc0: 00 00 08 44 41 54 38 11 11 0a 0e 0e 00 00 02 00 ...DAT8......... bcd0: 00 00 ff 00 00 00 00 00 00 08 44 41 54 39 11 11 ..........DAT9.. bce0: 0a 0e 0e 00 ff ff 00 00 00 ff 00 00 00 00 00 00 ................ bcf0: 08 44 41 54 41 11 11 0a 0e 0e 00 ff ff 00 00 00 .DATA........... bd00: ff 00 00 00 00 00 00 08 44 41 54 42 11 11 0a 0e ........DATB.... bd10: 0e 00 ff ff 00 00 00 ff 00 00 00 00 00 00 08 44 ...............D bd20: 41 54 43 11 11 0a 0e 0e 00 01 04 00 00 00 ff 00 ATC............. bd30: 00 00 00 00 00 14 1a 5f 53 54 41 00 a0 0e 93 41 ......._STA....A bd40: 46 45 4e 0c 00 00 00 80 a4 0a 00 a1 04 a4 0a 0f FEN............. bd50: 14 4c 06 41 46 43 4d 03 7b 68 0a ff 68 a0 0a 93 .L.AFCM.{h..h... bd60: 68 0a 00 a4 41 46 43 30 a0 0a 93 68 0a 01 a4 41 h...AFC0...h...A bd70: 46 43 31 a0 0c 93 68 0a 02 a4 41 46 43 32 69 6a FC1...h...AFC2ij bd80: a1 3c 8b 41 46 43 42 0a 00 53 53 5a 45 8b 41 46 .<.AFCB..SSZE.AF bd90: 43 42 0a 02 56 45 52 4e 8a 41 46 43 42 0a 04 53 CB..VERN.AFCB..S bda0: 46 55 4e 70 0a 00 53 53 5a 45 70 0a 00 56 45 52 FUNp..SSZEp..VER bdb0: 4e 70 0a 00 53 46 55 4e a4 41 46 43 42 14 42 05 Np..SFUN.AFCB.B. bdc0: 41 46 43 30 00 70 0b 00 af 50 38 30 48 8b 41 46 AFC0.p...P80H.AF bdd0: 43 42 0a 00 53 53 5a 45 8b 41 46 43 42 0a 02 56 CB..SSZE.AFCB..V bde0: 45 52 4e 8a 41 46 43 42 0a 04 53 46 55 4e 70 0a ERN.AFCB..SFUNp. bdf0: 08 53 53 5a 45 70 0a 01 56 45 52 4e 70 0a 03 53 .SSZEp..VERNp..S be00: 46 55 4e 70 0b 00 ae 50 38 30 48 a4 41 46 43 42 FUNp...P80H.AFCB be10: 14 41 67 41 46 43 31 00 70 0b 01 af 50 38 30 48 .AgAFC1.p...P80H be20: 8b 41 46 43 42 0a 00 53 53 5a 45 8b 41 46 43 42 .AFCB..SSZE.AFCB be30: 0a 02 45 53 5a 30 8b 41 46 43 42 0a 04 43 43 44 ..ESZ0.AFCB..CCD be40: 30 8b 41 46 43 42 0a 06 45 42 55 30 8b 41 46 43 0.AFCB..EBU0.AFC be50: 42 0a 08 43 46 47 30 8b 41 46 43 42 0a 0a 50 43 B..CFG0.AFCB..PC be60: 41 30 8b 41 46 43 42 0a 0c 44 43 50 30 8b 41 46 A0.AFCB..DCP0.AF be70: 43 42 0a 0e 44 52 41 30 70 0a 0e 45 53 5a 30 70 CB..DRA0p..ESZ0p be80: 0a 02 45 42 55 30 70 0a 00 43 46 47 30 70 0a 88 ..EBU0p..CFG0p.. be90: 50 43 41 30 a0 2f 93 5e 5e 2e 53 41 54 41 56 49 PCA0./.^^.SATAVI bea0: 44 49 0c 22 10 00 78 70 0a 01 45 42 55 30 70 0b DI."..xp..EBU0p. beb0: 01 01 43 43 44 30 70 0a 00 44 43 50 30 70 0a 00 ..CCD0p..DCP0p.. bec0: 44 52 41 30 a0 28 93 5e 5e 2e 53 41 54 41 56 49 DRA0.(.^^.SATAVI bed0: 44 49 0c 22 10 01 78 70 0b 06 01 43 43 44 30 70 DI."..xp...CCD0p bee0: 0a 00 44 43 50 30 70 0a 00 44 52 41 30 a0 28 93 ..DCP0p..DRA0.(. bef0: 5e 5e 2e 53 41 54 41 56 49 44 49 0c 22 10 02 78 ^^.SATAVIDI."..x bf00: 70 0b 04 01 43 43 44 30 70 0a 00 44 43 50 30 70 p...CCD0p..DCP0p bf10: 0a 00 44 52 41 30 a0 28 93 5e 5e 2e 53 41 54 41 ..DRA0.(.^^.SATA bf20: 56 49 44 49 0c 22 10 03 78 70 0b 04 01 43 43 44 VIDI."..xp...CCD bf30: 30 70 0a 00 44 43 50 30 70 0a 00 44 52 41 30 a0 0p..DCP0p..DRA0. bf40: 28 93 5e 5e 2e 53 41 54 41 56 49 44 49 0c 22 10 (.^^.SATAVIDI.". bf50: 04 78 70 0b 06 01 43 43 44 30 70 0a 00 44 43 50 .xp...CCD0p..DCP bf60: 30 70 0a 00 44 52 41 30 8b 41 46 43 42 0a 10 45 0p..DRA0.AFCB..E bf70: 53 5a 31 8b 41 46 43 42 0a 12 43 43 44 31 8b 41 SZ1.AFCB..CCD1.A bf80: 46 43 42 0a 14 45 42 55 31 8b 41 46 43 42 0a 16 FCB..EBU1.AFCB.. bf90: 43 46 47 31 8b 41 46 43 42 0a 18 50 43 41 31 8b CFG1.AFCB..PCA1. bfa0: 41 46 43 42 0a 1a 44 43 50 31 8b 41 46 43 42 0a AFCB..DCP1.AFCB. bfb0: 1c 44 52 41 31 70 0a 0e 45 53 5a 31 70 0a 02 45 .DRA1p..ESZ1p..E bfc0: 42 55 31 70 0a 00 43 46 47 31 70 0a 88 50 43 41 BU1p..CFG1p..PCA bfd0: 31 a0 2f 93 5e 5e 2e 53 41 54 41 56 49 44 49 0c 1./.^^.SATAVIDI. bfe0: 22 10 00 78 70 0a 01 45 42 55 31 70 0b 01 01 43 "..xp..EBU1p...C bff0: 43 44 31 70 0a 01 44 43 50 31 70 0a 01 44 52 41 CD1p..DCP1p..DRA c000: 31 a0 28 93 5e 5e 2e 53 41 54 41 56 49 44 49 0c 1.(.^^.SATAVIDI. c010: 22 10 01 78 70 0b 06 01 43 43 44 31 70 0a 01 44 "..xp...CCD1p..D c020: 43 50 31 70 0a 00 44 52 41 31 a0 28 93 5e 5e 2e CP1p..DRA1.(.^^. c030: 53 41 54 41 56 49 44 49 0c 22 10 02 78 70 0b 04 SATAVIDI."..xp.. c040: 01 43 43 44 31 70 0a 00 44 43 50 31 70 0a 00 44 .CCD1p..DCP1p..D c050: 52 41 31 a0 28 93 5e 5e 2e 53 41 54 41 56 49 44 RA1.(.^^.SATAVID c060: 49 0c 22 10 03 78 70 0b 04 01 43 43 44 31 70 0a I."..xp...CCD1p. c070: 00 44 43 50 31 70 0a 00 44 52 41 31 a0 28 93 5e .DCP1p..DRA1.(.^ c080: 5e 2e 53 41 54 41 56 49 44 49 0c 22 10 04 78 70 ^.SATAVIDI."..xp c090: 0b 06 01 43 43 44 31 70 0a 01 44 43 50 31 70 0a ...CCD1p..DCP1p. c0a0: 00 44 52 41 31 8b 41 46 43 42 0a 1e 45 53 5a 32 .DRA1.AFCB..ESZ2 c0b0: 8b 41 46 43 42 0a 20 43 43 44 32 8b 41 46 43 42 .AFCB. CCD2.AFCB c0c0: 0a 22 45 42 55 32 8b 41 46 43 42 0a 24 43 46 47 ."EBU2.AFCB.$CFG c0d0: 32 8b 41 46 43 42 0a 26 50 43 41 32 8b 41 46 43 2.AFCB.&PCA2.AFC c0e0: 42 0a 28 44 43 50 32 8b 41 46 43 42 0a 2a 44 52 B.(DCP2.AFCB.*DR c0f0: 41 32 70 0a 0e 45 53 5a 32 70 0a 02 45 42 55 32 A2p..ESZ2p..EBU2 c100: 70 0a 00 43 46 47 32 70 0a 88 50 43 41 32 a0 2f p..CFG2p..PCA2./ c110: 93 5e 5e 2e 53 41 54 41 56 49 44 49 0c 22 10 00 .^^.SATAVIDI.".. c120: 78 70 0a 01 45 42 55 32 70 0b 01 01 43 43 44 32 xp..EBU2p...CCD2 c130: 70 0a 00 44 43 50 32 70 0a 01 44 52 41 32 a0 28 p..DCP2p..DRA2.( c140: 93 5e 5e 2e 53 41 54 41 56 49 44 49 0c 22 10 01 .^^.SATAVIDI.".. c150: 78 70 0b 06 01 43 43 44 32 70 0a 02 44 43 50 32 xp...CCD2p..DCP2 c160: 70 0a 00 44 52 41 32 a0 28 93 5e 5e 2e 53 41 54 p..DRA2.(.^^.SAT c170: 41 56 49 44 49 0c 22 10 02 78 70 0b 04 01 43 43 AVIDI."..xp...CC c180: 44 32 70 0a 00 44 43 50 32 70 0a 00 44 52 41 32 D2p..DCP2p..DRA2 c190: a0 28 93 5e 5e 2e 53 41 54 41 56 49 44 49 0c 22 .(.^^.SATAVIDI." c1a0: 10 03 78 70 0b 04 01 43 43 44 32 70 0a 00 44 43 ..xp...CCD2p..DC c1b0: 50 32 70 0a 00 44 52 41 32 a0 28 93 5e 5e 2e 53 P2p..DRA2.(.^^.S c1c0: 41 54 41 56 49 44 49 0c 22 10 04 78 70 0b 06 01 ATAVIDI."..xp... c1d0: 43 43 44 32 70 0a 02 44 43 50 32 70 0a 00 44 52 CCD2p..DCP2p..DR c1e0: 41 32 5b 13 41 46 43 42 0b 60 01 0a 70 49 44 58 A2[.AFCB.`..pIDX c1f0: 33 70 44 41 54 33 49 44 58 33 5b 13 41 46 43 42 3pDAT3IDX3[.AFCB c200: 0b d0 01 0a 70 49 44 58 34 70 44 41 54 34 49 44 ....pIDX4pDAT4ID c210: 58 34 5b 13 41 46 43 42 0b 40 02 0a 70 49 44 58 X4[.AFCB.@..pIDX c220: 35 8c 44 41 54 35 0a 07 42 55 53 35 a0 19 93 5e 5.DAT5..BUS5...^ c230: 5e 2e 56 47 41 5f 50 58 45 4e 0c 00 00 00 80 70 ^.VGA_PXEN.....p c240: 0a ff 42 55 53 35 a1 4e 05 a0 25 93 5e 5e 2e 56 ..BUS5.N..%.^^.V c250: 47 41 5f 50 58 49 44 5e 5e 2e 50 42 32 5f 5f 41 GA_PXID^^.PB2__A c260: 44 52 70 5e 5e 2e 50 42 32 5f 53 42 55 53 60 a0 DRp^^.PB2_SBUS`. c270: 25 93 5e 5e 2e 56 47 41 5f 50 58 49 44 5e 5e 2e %.^^.VGA_PXID^^. c280: 50 42 33 5f 5f 41 44 52 70 5e 5e 2e 50 42 33 5f PB3__ADRp^^.PB3_ c290: 53 42 55 53 60 7a 60 0a 08 60 7b 60 0a ff 60 70 SBUS`z`..`{`..`p c2a0: 60 42 55 53 35 70 44 41 54 35 49 44 58 35 5b 13 `BUS5pDAT5IDX5[. c2b0: 41 46 43 42 0b b0 02 0a 70 49 44 58 36 8c 44 41 AFCB....pIDX6.DA c2c0: 54 36 0a 07 42 55 53 36 70 5e 5e 2e 50 42 37 5f T6..BUS6p^^.PB7_ c2d0: 53 42 55 53 60 7a 60 0a 08 60 7b 60 0a ff 60 70 SBUS`z`..`{`..`p c2e0: 60 42 55 53 36 70 44 41 54 36 49 44 58 36 5b 13 `BUS6pDAT6IDX6[. c2f0: 41 46 43 42 0b 20 03 0a 70 49 44 58 37 a0 34 92 AFCB. ..pIDX7.4. c300: 93 46 55 33 45 0c 00 00 00 80 8c 44 41 54 37 0a .FU3E......DAT7. c310: 09 42 55 53 37 70 5e 5e 2e 53 50 42 31 53 42 55 .BUS7p^^.SPB1SBU c320: 53 60 7a 60 0a 08 60 7b 60 0a ff 60 70 60 42 55 S`z`..`{`..`p`BU c330: 53 37 70 44 41 54 37 49 44 58 37 5b 13 41 46 43 S7pDAT7IDX7[.AFC c340: 42 0b 90 03 0a 70 49 44 58 38 8c 44 41 54 38 0a B....pIDX8.DAT8. c350: 07 42 55 53 38 70 5e 5e 2e 50 42 34 5f 53 42 55 .BUS8p^^.PB4_SBU c360: 53 60 7a 60 0a 08 60 7b 60 0a ff 60 70 60 42 55 S`z`..`{`..`p`BU c370: 53 38 70 44 41 54 38 49 44 58 38 5b 13 41 46 43 S8pDAT8IDX8[.AFC c380: 42 0b 00 04 0a 70 49 44 58 39 8c 44 41 54 39 0a B....pIDX9.DAT9. c390: 07 42 55 53 39 70 5e 5e 2e 50 42 36 5f 53 42 55 .BUS9p^^.PB6_SBU c3a0: 53 60 7a 60 0a 08 60 7b 60 0a ff 60 70 60 42 55 S`z`..`{`..`p`BU c3b0: 53 39 70 44 41 54 39 49 44 58 39 5b 13 41 46 43 S9pDAT9IDX9[.AFC c3c0: 42 0b 70 04 0a 70 49 44 58 41 8c 44 41 54 41 0a B.p..pIDXA.DATA. c3d0: 07 42 55 53 41 70 5e 5e 2e 53 50 42 30 53 42 55 .BUSAp^^.SPB0SBU c3e0: 53 60 7a 60 0a 08 60 7b 60 0a ff 60 70 60 42 55 S`z`..`{`..`p`BU c3f0: 53 41 70 44 41 54 41 49 44 58 41 5b 13 41 46 43 SApDATAIDXA[.AFC c400: 42 0b e0 04 0a 70 49 44 58 42 8c 44 41 54 42 0a B....pIDXB.DATB. c410: 07 42 55 53 42 70 5e 5e 2e 50 42 35 5f 53 42 55 .BUSBp^^.PB5_SBU c420: 53 60 7a 60 0a 08 60 7b 60 0a ff 60 70 60 42 55 S`z`..`{`..`p`BU c430: 53 42 70 44 41 54 42 49 44 58 42 5b 13 41 46 43 SBpDATBIDXB[.AFC c440: 42 0b 50 05 0a 70 49 44 58 43 8c 44 41 54 43 0a B.P..pIDXC.DATC. c450: 07 42 55 53 43 7a 60 0a 08 60 7b 60 0a ff 60 70 .BUSCz`..`{`..`p c460: 60 42 55 53 43 70 44 41 54 43 49 44 58 43 70 0a `BUSCpDATCIDXCp. c470: b8 53 53 5a 45 70 0b 01 ae 50 38 30 48 a4 41 46 .SSZEp...P80H.AF c480: 43 42 14 83 0b 01 41 46 43 32 02 70 0b 02 af 50 CB....AFC2.p...P c490: 38 30 48 8a 41 46 43 42 0a 00 46 4c 41 47 8c 41 80H.AFCB..FLAG.A c4a0: 46 43 42 0a 04 50 57 53 54 8c 41 46 43 42 0a 05 FCB..PWST.AFCB.. c4b0: 44 49 4e 44 8b 43 41 4c 42 0a 00 53 5a 5a 45 5b DIND.CALB..SZZE[ c4c0: 13 43 41 4c 42 0a 10 0a 03 46 55 43 43 5b 13 43 .CALB....FUCC[.C c4d0: 41 4c 42 0a 13 0a 05 44 45 56 56 5b 13 43 41 4c ALB....DEVV[.CAL c4e0: 42 0a 18 0a 08 42 55 53 53 8c 43 41 4c 42 0a 04 B....BUSS.CALB.. c4f0: 48 50 53 54 70 0a 05 53 5a 5a 45 7b 68 0a ff 50 HPSTp..SZZE{h..P c500: 57 53 54 7b 69 0a ff 44 49 4e 44 a0 44 18 93 44 WST{i..DIND.D..D c510: 49 4e 44 0a 00 a0 34 91 93 5e 5e 2e 53 41 54 41 IND...4..^^.SATA c520: 56 49 44 49 0c 22 10 02 78 93 5e 5e 2e 53 41 54 VIDI."..x.^^.SAT c530: 41 56 49 44 49 0c 22 10 03 78 7d 46 4c 41 47 0a AVIDI."..x}FLAG. c540: 80 46 4c 41 47 a4 46 4c 41 47 70 0a 01 5e 5e 2e .FLAG.FLAGp..^^. c550: 53 4d 42 5f 4d 58 35 37 70 0a 01 5e 5e 2e 53 4d SMB_MX57p..^^.SM c560: 42 5f 4d 31 37 30 a0 49 06 93 50 57 53 54 0a 00 B_M170.I..PWST.. c570: a0 25 93 5e 5e 2e 53 41 54 41 56 49 44 49 0c 22 .%.^^.SATAVIDI." c580: 10 00 78 86 5e 5e 2f 03 53 41 54 41 50 52 49 44 ..x.^^/.SATAPRID c590: 50 5f 44 30 0a 03 a0 32 91 93 5e 5e 2e 53 41 54 P_D0...2..^^.SAT c5a0: 41 56 49 44 49 0c 22 10 01 78 93 5e 5e 2e 53 41 AVIDI."..x.^^.SA c5b0: 54 41 56 49 44 49 0c 22 10 04 78 86 5e 5e 2e 53 TAVIDI."..x.^^.S c5c0: 41 54 41 50 52 49 44 0a 03 70 0a 00 46 4c 41 47 ATAPRID..p..FLAG c5d0: a0 46 0a 93 50 57 53 54 0a 01 70 0a 00 5e 5e 2e .F..PWST..p..^^. c5e0: 53 4d 42 5f 50 41 41 4f 70 0a 00 5e 5e 2e 53 4d SMB_PAAOp..^^.SM c5f0: 42 5f 50 41 41 45 70 0a 01 5e 5e 2e 53 4d 42 5f B_PAAEp..^^.SMB_ c600: 50 33 39 4f 70 0a 00 5e 5e 2e 53 4d 42 5f 50 33 P39Op..^^.SMB_P3 c610: 39 45 5b 22 0b e8 03 a0 25 93 5e 5e 2e 53 41 54 9E["....%.^^.SAT c620: 41 56 49 44 49 0c 22 10 00 78 86 5e 5e 2f 03 53 AVIDI."..x.^^/.S c630: 41 54 41 50 52 49 44 50 5f 44 30 0a 01 a0 32 91 ATAPRIDP_D0...2. c640: 93 5e 5e 2e 53 41 54 41 56 49 44 49 0c 22 10 01 .^^.SATAVIDI.".. c650: 78 93 5e 5e 2e 53 41 54 41 56 49 44 49 0c 22 10 x.^^.SATAVIDI.". c660: 04 78 86 5e 5e 2e 53 41 54 41 50 52 49 44 0a 01 .x.^^.SATAPRID.. c670: 70 0a 01 46 4c 41 47 a0 18 93 50 57 53 54 0a ff p..FLAG...PWST.. c680: 70 5e 5e 2e 53 4d 42 5f 50 33 39 4f 46 4c 41 47 p^^.SMB_P39OFLAG c690: a0 4a 3f 93 44 49 4e 44 0a 01 a0 34 91 93 5e 5e .J?.DIND...4..^^ c6a0: 2e 53 41 54 41 56 49 44 49 0c 22 10 02 78 93 5e .SATAVIDI."..x.^ c6b0: 5e 2e 53 41 54 41 56 49 44 49 0c 22 10 03 78 7d ^.SATAVIDI."..x} c6c0: 46 4c 41 47 0a 80 46 4c 41 47 a4 46 4c 41 47 70 FLAG..FLAG.FLAGp c6d0: 0a 01 5e 5e 2e 53 4d 42 5f 4d 58 35 33 70 0a 01 ..^^.SMB_MX53p.. c6e0: 5e 5e 2e 53 4d 42 5f 4d 31 37 30 a0 4e 19 93 4f ^^.SMB_M170.N..O c6f0: 44 5a 50 0c 00 00 00 80 a0 4d 09 93 50 57 53 54 DZP......M..PWST c700: 0a 00 a0 25 93 5e 5e 2e 53 41 54 41 56 49 44 49 ...%.^^.SATAVIDI c710: 0c 22 10 00 78 86 5e 5e 2f 03 53 41 54 41 50 52 ."..x.^^/.SATAPR c720: 54 31 4f 44 44 5f 0a 03 a0 46 06 91 93 5e 5e 2e T1ODD_...F...^^. c730: 53 41 54 41 56 49 44 49 0c 22 10 01 78 93 5e 5e SATAVIDI."..x.^^ c740: 2e 53 41 54 41 56 49 44 49 0c 22 10 04 78 a0 16 .SATAVIDI."..x.. c750: 93 48 44 44 30 0a 01 86 5e 5e 2e 53 41 54 41 50 .HDD0...^^.SATAP c760: 52 54 31 0a 03 a1 29 a0 17 92 95 54 50 4f 53 0a RT1...)....TPOS. c770: 50 86 5e 5e 2e 53 41 54 41 50 52 54 31 0a 03 a1 P.^^.SATAPRT1... c780: 0f 86 5e 5e 2e 53 41 54 41 50 52 49 44 0a 03 70 ..^^.SATAPRID..p c790: 0a 00 46 4c 41 47 a0 4a 0d 93 50 57 53 54 0a 01 ..FLAG.J..PWST.. c7a0: 70 0a 00 5e 5e 2e 53 4d 42 5f 50 41 41 4f 70 0a p..^^.SMB_PAAOp. c7b0: 00 5e 5e 2e 53 4d 42 5f 50 41 41 45 70 0a 01 5e .^^.SMB_PAAEp..^ c7c0: 5e 2e 53 4d 42 5f 50 33 39 4f 70 0a 00 5e 5e 2e ^.SMB_P39Op..^^. c7d0: 53 4d 42 5f 50 33 39 45 5b 22 0b e8 03 a0 25 93 SMB_P39E["....%. c7e0: 5e 5e 2e 53 41 54 41 56 49 44 49 0c 22 10 00 78 ^^.SATAVIDI."..x c7f0: 86 5e 5e 2f 03 53 41 54 41 50 52 54 31 4f 44 44 .^^/.SATAPRT1ODD c800: 5f 0a 01 a0 46 06 91 93 5e 5e 2e 53 41 54 41 56 _...F...^^.SATAV c810: 49 44 49 0c 22 10 01 78 93 5e 5e 2e 53 41 54 41 IDI."..x.^^.SATA c820: 56 49 44 49 0c 22 10 04 78 a0 16 93 48 44 44 30 VIDI."..x...HDD0 c830: 0a 01 86 5e 5e 2e 53 41 54 41 50 52 54 31 0a 01 ...^^.SATAPRT1.. c840: a1 29 a0 17 92 95 54 50 4f 53 0a 50 86 5e 5e 2e .)....TPOS.P.^^. c850: 53 41 54 41 50 52 54 31 0a 01 a1 0f 86 5e 5e 2e SATAPRT1.....^^. c860: 53 41 54 41 50 52 49 44 0a 01 70 0a 01 46 4c 41 SATAPRID..p..FLA c870: 47 a0 18 93 50 57 53 54 0a ff 70 5e 5e 2e 53 4d G...PWST..p^^.SM c880: 42 5f 50 33 35 4f 46 4c 41 47 a1 40 20 a0 32 93 B_P35OFLAG.@ .2. c890: 5e 5e 2e 53 41 54 41 56 49 44 49 0c 22 10 04 78 ^^.SATAVIDI."..x c8a0: 70 5e 5e 2e 53 4d 42 5f 50 33 35 4f 46 4c 41 47 p^^.SMB_P35OFLAG c8b0: 7d 46 4c 41 47 0a c0 46 4c 41 47 a4 46 4c 41 47 }FLAG..FLAG.FLAG c8c0: a0 45 09 93 50 57 53 54 0a 00 a0 25 93 5e 5e 2e .E..PWST...%.^^. c8d0: 53 41 54 41 56 49 44 49 0c 22 10 00 78 86 5e 5e SATAVIDI."..x.^^ c8e0: 2f 03 53 41 54 41 4f 44 44 5a 4f 44 44 5f 0a 03 /.SATAODDZODD_.. c8f0: a0 4e 05 93 5e 5e 2e 53 41 54 41 56 49 44 49 0c .N..^^.SATAVIDI. c900: 22 10 01 78 a0 1b 93 48 44 44 30 0a 01 86 5e 5e "..x...HDD0...^^ c910: 2f 03 53 41 54 41 4f 44 44 5a 4f 44 44 5f 0a 03 /.SATAODDZODD_.. c920: a1 2e a0 1c 92 95 54 50 4f 53 0a 50 86 5e 5e 2f ......TPOS.P.^^/ c930: 03 53 41 54 41 4f 44 44 5a 4f 44 44 5f 0a 03 a1 .SATAODDZODD_... c940: 0f 86 5e 5e 2e 53 41 54 41 50 52 49 44 0a 03 70 ..^^.SATAPRID..p c950: 0a 00 46 4c 41 47 a0 42 0d 93 50 57 53 54 0a 01 ..FLAG.B..PWST.. c960: 70 0a 00 5e 5e 2e 53 4d 42 5f 50 41 41 4f 70 0a p..^^.SMB_PAAOp. c970: 00 5e 5e 2e 53 4d 42 5f 50 41 41 45 70 0a 01 5e .^^.SMB_PAAEp..^ c980: 5e 2e 53 4d 42 5f 50 33 35 4f 70 0a 00 5e 5e 2e ^.SMB_P35Op..^^. c990: 53 4d 42 5f 50 33 35 45 5b 22 0b e8 03 a0 25 93 SMB_P35E["....%. c9a0: 5e 5e 2e 53 41 54 41 56 49 44 49 0c 22 10 00 78 ^^.SATAVIDI."..x c9b0: 86 5e 5e 2f 03 53 41 54 41 4f 44 44 5a 4f 44 44 .^^/.SATAODDZODD c9c0: 5f 0a 01 a0 4e 05 93 5e 5e 2e 53 41 54 41 56 49 _...N..^^.SATAVI c9d0: 44 49 0c 22 10 01 78 a0 1b 93 48 44 44 30 0a 01 DI."..x...HDD0.. c9e0: 86 5e 5e 2f 03 53 41 54 41 4f 44 44 5a 4f 44 44 .^^/.SATAODDZODD c9f0: 5f 0a 01 a1 2e a0 1c 92 95 54 50 4f 53 0a 50 86 _........TPOS.P. ca00: 5e 5e 2f 03 53 41 54 41 4f 44 44 5a 4f 44 44 5f ^^/.SATAODDZODD_ ca10: 0a 01 a1 0f 86 5e 5e 2e 53 41 54 41 50 52 49 44 .....^^.SATAPRID ca20: 0a 01 70 0a 01 46 4c 41 47 a0 41 06 93 50 57 53 ..p..FLAG.A..PWS ca30: 54 0a ff 70 5e 5e 2e 53 4d 42 5f 50 33 35 4f 46 T..p^^.SMB_P35OF ca40: 4c 41 47 a0 2f 91 93 5e 5e 2e 53 41 54 41 56 49 LAG./..^^.SATAVI ca50: 44 49 0c 22 10 00 78 93 5e 5e 2e 53 41 54 41 56 DI."..x.^^.SATAV ca60: 49 44 49 0c 22 10 01 78 7b 46 4c 41 47 0a 7f 46 IDI."..x{FLAG..F ca70: 4c 41 47 a1 0c 7d 46 4c 41 47 0a 80 46 4c 41 47 LAG..}FLAG..FLAG ca80: 7d 46 4c 41 47 0a 40 46 4c 41 47 a0 45 1a 93 44 }FLAG.@FLAG.E..D ca90: 49 4e 44 0a 02 a0 34 91 93 5e 5e 2e 53 41 54 41 IND...4..^^.SATA caa0: 56 49 44 49 0c 22 10 02 78 93 5e 5e 2e 53 41 54 VIDI."..x.^^.SAT cab0: 41 56 49 44 49 0c 22 10 03 78 7d 46 4c 41 47 0a AVIDI."..x}FLAG. cac0: 80 46 4c 41 47 a4 46 4c 41 47 70 0a 01 5e 5e 2e .FLAG.FLAGp..^^. cad0: 53 4d 42 5f 4d 58 35 38 70 0a 01 5e 5e 2e 53 4d SMB_MX58p..^^.SM cae0: 42 5f 4d 31 37 30 a0 49 06 93 50 57 53 54 0a 00 B_M170.I..PWST.. caf0: a0 25 93 5e 5e 2e 53 41 54 41 56 49 44 49 0c 22 .%.^^.SATAVIDI." cb00: 10 00 78 86 5e 5e 2f 03 53 41 54 41 50 52 49 44 ..x.^^/.SATAPRID cb10: 50 5f 44 31 0a 03 a0 32 91 93 5e 5e 2e 53 41 54 P_D1...2..^^.SAT cb20: 41 56 49 44 49 0c 22 10 01 78 93 5e 5e 2e 53 41 AVIDI."..x.^^.SA cb30: 54 41 56 49 44 49 0c 22 10 04 78 86 5e 5e 2e 53 TAVIDI."..x.^^.S cb40: 41 54 41 53 45 43 44 0a 03 70 0a 00 46 4c 41 47 ATASECD..p..FLAG cb50: a0 47 0c 93 50 57 53 54 0a 01 70 0a 00 5e 5e 2e .G..PWST..p..^^. cb60: 53 4d 42 5f 50 41 41 4f 70 0a 00 5e 5e 2e 53 4d SMB_PAAOp..^^.SM cb70: 42 5f 50 41 41 45 5b 22 0b e8 03 70 0a 01 5e 5e B_PAAE["...p..^^ cb80: 2e 53 4d 42 5f 50 33 35 4f 70 0a 00 5e 5e 2e 53 .SMB_P35Op..^^.S cb90: 4d 42 5f 50 33 35 45 5b 22 0b e8 03 70 0a 01 5e MB_P35E["...p..^ cba0: 5e 2e 53 4d 42 5f 50 41 41 4f 70 0a 00 5e 5e 2e ^.SMB_PAAOp..^^. cbb0: 53 4d 42 5f 50 41 41 45 a0 25 93 5e 5e 2e 53 41 SMB_PAAE.%.^^.SA cbc0: 54 41 56 49 44 49 0c 22 10 00 78 86 5e 5e 2f 03 TAVIDI."..x.^^/. cbd0: 53 41 54 41 50 52 49 44 50 5f 44 31 0a 01 a0 32 SATAPRIDP_D1...2 cbe0: 91 93 5e 5e 2e 53 41 54 41 56 49 44 49 0c 22 10 ..^^.SATAVIDI.". cbf0: 01 78 93 5e 5e 2e 53 41 54 41 56 49 44 49 0c 22 .x.^^.SATAVIDI." cc00: 10 04 78 86 5e 5e 2e 53 41 54 41 53 45 43 44 0a ..x.^^.SATASECD. cc10: 01 70 0a 01 46 4c 41 47 a0 18 93 50 57 53 54 0a .p..FLAG...PWST. cc20: ff 70 5e 5e 2e 53 4d 42 5f 50 33 35 4f 46 4c 41 .p^^.SMB_P35OFLA cc30: 47 a0 48 08 93 44 49 4e 44 0a 03 70 0a 01 5e 5e G.H..DIND..p..^^ cc40: 2e 53 4d 42 5f 4d 58 36 36 a0 29 93 50 57 53 54 .SMB_MX66.).PWST cc50: 0a 00 70 01 5e 5e 2e 53 4d 42 5f 50 34 32 4f 70 ..p.^^.SMB_P42Op cc60: 00 5e 5e 2e 53 4d 42 5f 50 34 32 45 70 0a 00 46 .^^.SMB_P42Ep..F cc70: 4c 41 47 a0 2d 93 50 57 53 54 0a 01 70 00 5e 5e LAG.-.PWST..p.^^ cc80: 2e 53 4d 42 5f 50 34 32 4f 70 00 5e 5e 2e 53 4d .SMB_P42Op.^^.SM cc90: 42 5f 50 34 32 45 5b 22 0a 28 70 0a 01 46 4c 41 B_P42E[".(p..FLA cca0: 47 a0 18 93 50 57 53 54 0a ff 70 5e 5e 2e 53 4d G...PWST..p^^.SM ccb0: 42 5f 50 34 32 4f 46 4c 41 47 a0 47 09 93 44 49 B_P42OFLAG.G..DI ccc0: 4e 44 0a 04 70 0a 01 5e 5e 2e 53 4d 42 5f 4d 58 ND..p..^^.SMB_MX ccd0: 30 37 a0 22 93 50 57 53 54 0a 00 86 5e 5e 2f 03 07.".PWST...^^/. cce0: 4f 48 43 34 52 48 55 42 50 52 54 32 0a 03 70 0a OHC4RHUBPRT2..p. ccf0: 00 46 4c 41 47 a0 43 04 93 50 57 53 54 0a 01 70 .FLAG.C..PWST..p cd00: 0a 01 5e 5e 2e 53 4d 42 5f 50 30 37 4f 70 0a 00 ..^^.SMB_P07Op.. cd10: 5e 5e 2e 53 4d 42 5f 50 30 37 45 5b 22 0a 28 86 ^^.SMB_P07E[".(. cd20: 5e 5e 2f 03 4f 48 43 34 52 48 55 42 50 52 54 32 ^^/.OHC4RHUBPRT2 cd30: 0a 01 70 0a 01 46 4c 41 47 a0 18 93 50 57 53 54 ..p..FLAG...PWST cd40: 0a ff 70 5e 5e 2e 53 4d 42 5f 50 30 37 4f 46 4c ..p^^.SMB_P07OFL cd50: 41 47 a0 4a 0b 93 44 49 4e 44 0a 05 a0 32 93 5e AG.J..DIND...2.^ cd60: 5e 2e 56 47 41 5f 50 58 45 4e 0c 00 00 00 80 70 ^.VGA_PXEN.....p cd70: 5e 5e 2e 53 4d 42 5f 50 32 44 4f 46 4c 41 47 7d ^^.SMB_P2DOFLAG} cd80: 46 4c 41 47 0a 80 46 4c 41 47 a4 46 4c 41 47 a0 FLAG..FLAG.FLAG. cd90: 1d 93 50 57 53 54 0a 00 86 5e 5e 2e 50 42 33 5f ..PWST...^^.PB3_ cda0: 56 47 41 5f 0a 03 70 0a 00 46 4c 41 47 a0 46 04 VGA_..p..FLAG.F. cdb0: 93 50 57 53 54 0a 01 a0 18 5e 5e 2e 53 4d 42 5f .PWST....^^.SMB_ cdc0: 50 32 44 4f 70 0a 01 46 4c 41 47 a4 46 4c 41 47 P2DOp..FLAG.FLAG cdd0: a1 23 5e 5e 2e 56 47 41 5f 50 58 30 32 0a 01 86 .#^^.VGA_PX02... cde0: 5e 5e 2e 50 42 33 5f 56 47 41 5f 0a 01 70 0a 01 ^^.PB3_VGA_..p.. cdf0: 46 4c 41 47 a0 18 93 50 57 53 54 0a ff 70 5e 5e FLAG...PWST..p^^ ce00: 2e 53 4d 42 5f 50 32 44 4f 46 4c 41 47 a0 4f 18 .SMB_P2DOFLAG.O. ce10: 93 44 49 4e 44 0a 06 70 0a 02 5e 5e 2e 53 4d 42 .DIND..p..^^.SMB ce20: 5f 4d 58 35 39 70 0a 01 5e 5e 2e 53 4d 42 5f 4d _MX59p..^^.SMB_M ce30: 58 32 37 a0 25 93 50 57 53 54 0a 00 86 5e 5e 2e X27.%.PWST...^^. ce40: 50 42 37 5f 58 50 44 56 0a 03 70 0a 00 46 4c 41 PB7_XPDV..p..FLA ce50: 47 70 0b 60 af 50 38 30 48 a0 4a 12 93 50 57 53 Gp.`.P80H.J..PWS ce60: 54 0a 01 70 0a 00 5e 5e 2e 53 4d 42 5f 50 31 42 T..p..^^.SMB_P1B ce70: 4f 70 0a 00 5e 5e 2e 53 4d 42 5f 50 31 42 45 5b Op..^^.SMB_P1BE[ ce80: 22 0a 28 70 0a 01 5e 5e 2e 53 4d 42 5f 50 33 42 ".(p..^^.SMB_P3B ce90: 4f 70 0a 00 5e 5e 2e 53 4d 42 5f 50 33 42 45 5b Op..^^.SMB_P3BE[ cea0: 22 0a 28 70 5e 5e 2e 53 4d 42 5f 4d 53 30 34 60 ".(p^^.SMB_MS04` ceb0: 7d 60 0a 0f 61 70 61 5e 5e 2e 53 4d 42 5f 4d 53 }`..apa^^.SMB_MS cec0: 30 34 5b 22 0a 28 70 0a 01 5e 5e 2e 53 4d 42 5f 04[".(p..^^.SMB_ ced0: 50 31 42 4f 70 0a 00 5e 5e 2e 53 4d 42 5f 50 31 P1BOp..^^.SMB_P1 cee0: 42 45 5b 22 0a 28 70 01 5e 5e 2e 53 4d 42 5f 50 BE[".(p.^^.SMB_P cef0: 32 39 48 70 01 5e 5e 2e 53 4d 42 5f 50 32 39 53 29Hp.^^.SMB_P29S cf00: 70 00 5e 5e 2e 53 4d 42 5f 50 32 39 55 5b 22 0a p.^^.SMB_P29U[". cf10: 28 70 0a 00 46 55 43 43 70 0a 07 44 45 56 56 70 (p..FUCCp..DEVVp cf20: 0a 00 42 55 53 53 70 0a 01 48 50 53 54 41 4c 49 ..BUSSp..HPSTALI cf30: 42 0a 06 43 41 4c 42 5b 22 0a 28 70 5e 5e 2f 03 B..CALB[".(p^^/. cf40: 50 42 37 5f 58 50 44 56 44 49 53 46 60 7b 60 0c PB7_XPDVDISF`{`. cf50: f9 ff ff ff 60 70 60 5e 5e 2f 03 50 42 37 5f 58 ....`p`^^/.PB7_X cf60: 50 44 56 44 49 53 46 86 5e 5e 2e 50 42 37 5f 58 PDVDISF.^^.PB7_X cf70: 50 44 56 0a 01 70 0a 01 46 4c 41 47 70 0b 61 af PDV..p..FLAGp.a. cf80: 50 38 30 48 a0 18 93 50 57 53 54 0a ff 70 5e 5e P80H...PWST..p^^ cf90: 2e 53 4d 42 5f 50 33 42 4f 46 4c 41 47 a0 47 0e .SMB_P3BOFLAG.G. cfa0: 93 44 49 4e 44 0a 07 70 0a 02 5e 5e 2e 53 4d 42 .DIND..p..^^.SMB cfb0: 5f 4d 32 30 30 a0 25 93 50 57 53 54 0a 00 86 5e _M200.%.PWST...^ cfc0: 5e 2e 53 50 42 31 58 50 44 56 0a 03 70 0a 00 46 ^.SPB1XPDV..p..F cfd0: 4c 41 47 70 0b 70 ae 50 38 30 48 a0 40 09 93 50 LAGp.p.P80H.@..P cfe0: 57 53 54 0a 01 70 0a 01 5e 5e 2e 53 4d 42 5f 50 WST..p..^^.SMB_P cff0: 43 38 4f 70 0a 00 5e 5e 2e 53 4d 42 5f 50 43 38 C8Op..^^.SMB_PC8 d000: 45 5b 22 0a 28 70 5e 5e 2e 53 4d 42 5f 4d 53 30 E[".(p^^.SMB_MS0 d010: 33 60 7d 60 0a f0 61 70 61 5e 5e 2e 53 4d 42 5f 3`}`..apa^^.SMB_ d020: 4d 53 30 33 70 01 5e 5e 2e 53 4d 42 5f 50 32 45 MS03p.^^.SMB_P2E d030: 48 70 01 5e 5e 2e 53 4d 42 5f 50 32 45 53 70 00 Hp.^^.SMB_P2ESp. d040: 5e 5e 2e 53 4d 42 5f 50 32 45 55 5b 22 0a 28 86 ^^.SMB_P2EU[".(. d050: 5e 5e 2e 53 50 42 31 58 50 44 56 0a 01 70 0a 01 ^^.SPB1XPDV..p.. d060: 46 4c 41 47 70 0b 71 ae 50 38 30 48 a0 18 93 50 FLAGp.q.P80H...P d070: 57 53 54 0a ff 70 5e 5e 2e 53 4d 42 5f 50 43 38 WST..p^^.SMB_PC8 d080: 4f 46 4c 41 47 a0 4d 0f 93 44 49 4e 44 0a 08 70 OFLAG.M..DIND..p d090: 0a 02 5e 5e 2e 53 4d 42 5f 4d 31 39 37 a0 1d 93 ..^^.SMB_M197... d0a0: 50 57 53 54 0a 00 86 5e 5e 2e 50 42 34 5f 58 50 PWST...^^.PB4_XP d0b0: 44 56 0a 03 70 0a 00 46 4c 41 47 a0 4e 0a 93 50 DV..p..FLAG.N..P d0c0: 57 53 54 0a 01 70 0a 01 5e 5e 2e 53 4d 42 5f 50 WST..p..^^.SMB_P d0d0: 43 35 4f 70 0a 00 5e 5e 2e 53 4d 42 5f 50 43 35 C5Op..^^.SMB_PC5 d0e0: 45 5b 22 0a c8 70 5e 5e 2e 53 4d 42 5f 4d 53 30 E["..p^^.SMB_MS0 d0f0: 31 60 7d 60 0a f0 61 70 61 5e 5e 2e 53 4d 42 5f 1`}`..apa^^.SMB_ d100: 4d 53 30 31 70 01 5e 5e 2e 53 4d 42 5f 50 33 46 MS01p.^^.SMB_P3F d110: 48 70 01 5e 5e 2e 53 4d 42 5f 50 33 46 53 70 00 Hp.^^.SMB_P3FSp. d120: 5e 5e 2e 53 4d 42 5f 50 33 46 55 5b 22 0a c8 70 ^^.SMB_P3FU["..p d130: 0a 00 46 55 43 43 70 0a 04 44 45 56 56 70 0a 00 ..FUCCp..DEVVp.. d140: 42 55 53 53 70 0a 01 48 50 53 54 41 4c 49 42 0a BUSSp..HPSTALIB. d150: 06 43 41 4c 42 86 5e 5e 2e 50 42 34 5f 58 50 44 .CALB.^^.PB4_XPD d160: 56 0a 01 70 0a 01 46 4c 41 47 a0 18 93 50 57 53 V..p..FLAG...PWS d170: 54 0a ff 70 5e 5e 2e 53 4d 42 5f 50 43 35 4f 46 T..p^^.SMB_PC5OF d180: 4c 41 47 a0 4e 12 93 44 49 4e 44 0a 09 70 0a 01 LAG.N..DIND..p.. d190: 5e 5e 2e 53 4d 42 5f 4d 31 37 36 a0 1d 93 50 57 ^^.SMB_M176...PW d1a0: 53 54 0a 00 86 5e 5e 2e 50 42 36 5f 58 50 44 56 ST...^^.PB6_XPDV d1b0: 0a 03 70 0a 00 46 4c 41 47 a0 42 0d 93 50 57 53 ..p..FLAG.B..PWS d1c0: 54 0a 01 5b 22 0a 28 70 0a 01 5e 5e 2e 53 4d 42 T..[".(p..^^.SMB d1d0: 5f 50 30 45 4f 70 0a 00 5e 5e 2e 53 4d 42 5f 50 _P0EOp..^^.SMB_P d1e0: 30 45 45 70 0a 00 5e 5e 2e 53 4d 42 5f 50 42 30 0EEp..^^.SMB_PB0 d1f0: 4f 70 0a 00 5e 5e 2e 53 4d 42 5f 50 42 30 45 5b Op..^^.SMB_PB0E[ d200: 22 0a c8 70 5e 5e 2e 53 4d 42 5f 4d 53 30 32 60 "..p^^.SMB_MS02` d210: 7d 60 0a 0f 61 70 61 5e 5e 2e 53 4d 42 5f 4d 53 }`..apa^^.SMB_MS d220: 30 32 5b 22 0a 28 70 01 5e 5e 2e 53 4d 42 5f 50 02[".(p.^^.SMB_P d230: 34 30 48 70 01 5e 5e 2e 53 4d 42 5f 50 34 30 53 40Hp.^^.SMB_P40S d240: 70 00 5e 5e 2e 53 4d 42 5f 50 34 30 55 5b 22 0a p.^^.SMB_P40U[". d250: c8 70 0a 00 46 55 43 43 70 0a 06 44 45 56 56 70 .p..FUCCp..DEVVp d260: 0a 00 42 55 53 53 70 0a 01 48 50 53 54 41 4c 49 ..BUSSp..HPSTALI d270: 42 0a 06 43 41 4c 42 86 5e 5e 2e 50 42 36 5f 58 B..CALB.^^.PB6_X d280: 50 44 56 0a 01 70 0a 01 46 4c 41 47 a0 25 93 50 PDV..p..FLAG.%.P d290: 57 53 54 0a ff 70 5e 5e 2e 53 4d 42 5f 50 42 30 WST..p^^.SMB_PB0 d2a0: 4f 60 7b 60 0a 01 60 7f 60 0a 01 60 70 60 46 4c O`{`..`.`..`p`FL d2b0: 41 47 a0 4a 0b 93 44 49 4e 44 0a 0a 70 0a 01 5e AG.J..DIND..p..^ d2c0: 5e 2e 53 4d 42 5f 4d 31 37 35 a0 1d 93 50 57 53 ^.SMB_M175...PWS d2d0: 54 0a 00 86 5e 5e 2e 53 50 42 30 58 50 44 56 0a T...^^.SPB0XPDV. d2e0: 03 70 0a 00 46 4c 41 47 a0 4e 05 93 50 57 53 54 .p..FLAG.N..PWST d2f0: 0a 01 70 0a 01 5e 5e 2e 53 4d 42 5f 50 30 43 4f ..p..^^.SMB_P0CO d300: 70 0a 00 5e 5e 2e 53 4d 42 5f 50 30 43 45 5b 22 p..^^.SMB_P0CE[" d310: 0a 28 70 0a 00 5e 5e 2e 53 4d 42 5f 50 41 46 4f .(p..^^.SMB_PAFO d320: 70 0a 00 5e 5e 2e 53 4d 42 5f 50 41 46 45 5b 22 p..^^.SMB_PAFE[" d330: 0a c8 86 5e 5e 2e 53 50 42 30 58 50 44 56 0a 01 ...^^.SPB0XPDV.. d340: 70 0a 01 46 4c 41 47 a0 25 93 50 57 53 54 0a ff p..FLAG.%.PWST.. d350: 70 5e 5e 2e 53 4d 42 5f 50 41 46 4f 60 7b 60 0a p^^.SMB_PAFO`{`. d360: 01 60 7f 60 0a 01 60 70 60 46 4c 41 47 a0 4e 12 .`.`..`p`FLAG.N. d370: 93 44 49 4e 44 0a 0b 70 0a 01 5e 5e 2e 53 4d 42 .DIND..p..^^.SMB d380: 5f 50 42 31 4f a0 1d 93 50 57 53 54 0a 00 86 5e _PB1O...PWST...^ d390: 5e 2e 50 42 35 5f 58 50 44 56 0a 03 70 0a 00 46 ^.PB5_XPDV..p..F d3a0: 4c 41 47 a0 42 0d 93 50 57 53 54 0a 01 5b 22 0a LAG.B..PWST..[". d3b0: 28 70 0a 01 5e 5e 2e 53 4d 42 5f 50 30 44 4f 70 (p..^^.SMB_P0DOp d3c0: 0a 00 5e 5e 2e 53 4d 42 5f 50 30 44 45 70 0a 00 ..^^.SMB_P0DEp.. d3d0: 5e 5e 2e 53 4d 42 5f 50 42 31 4f 70 0a 00 5e 5e ^^.SMB_PB1Op..^^ d3e0: 2e 53 4d 42 5f 50 42 31 45 5b 22 0a c8 70 5e 5e .SMB_PB1E["..p^^ d3f0: 2e 53 4d 42 5f 4d 53 30 31 60 7d 60 0a 0f 61 70 .SMB_MS01`}`..ap d400: 61 5e 5e 2e 53 4d 42 5f 4d 53 30 31 5b 22 0a 28 a^^.SMB_MS01[".( d410: 70 01 5e 5e 2e 53 4d 42 5f 50 33 45 48 70 01 5e p.^^.SMB_P3EHp.^ d420: 5e 2e 53 4d 42 5f 50 33 45 53 70 00 5e 5e 2e 53 ^.SMB_P3ESp.^^.S d430: 4d 42 5f 50 33 45 55 5b 22 0a c8 70 0a 00 46 55 MB_P3EU["..p..FU d440: 43 43 70 0a 05 44 45 56 56 70 0a 00 42 55 53 53 CCp..DEVVp..BUSS d450: 70 0a 01 48 50 53 54 41 4c 49 42 0a 06 43 41 4c p..HPSTALIB..CAL d460: 42 86 5e 5e 2e 50 42 35 5f 58 50 44 56 0a 01 70 B.^^.PB5_XPDV..p d470: 0a 01 46 4c 41 47 a0 25 93 50 57 53 54 0a ff 70 ..FLAG.%.PWST..p d480: 5e 5e 2e 53 4d 42 5f 50 42 31 4f 60 7b 60 0a 01 ^^.SMB_PB1O`{`.. d490: 60 7f 60 0a 01 60 70 60 46 4c 41 47 a0 4c 08 93 `.`..`p`FLAG.L.. d4a0: 44 49 4e 44 0a 0c 70 0a 01 5e 5e 2e 53 4d 42 5f DIND..p..^^.SMB_ d4b0: 4d 58 32 33 a0 2b 93 50 57 53 54 0a 00 70 0a 00 MX23.+.PWST..p.. d4c0: 5e 5e 2e 53 4d 42 5f 50 31 37 4f 70 0a 00 5e 5e ^^.SMB_P17Op..^^ d4d0: 2e 53 4d 42 5f 50 31 37 45 70 0a 00 46 4c 41 47 .SMB_P17Ep..FLAG d4e0: a0 2f 93 50 57 53 54 0a 01 70 0a 01 5e 5e 2e 53 ./.PWST..p..^^.S d4f0: 4d 42 5f 50 31 37 4f 70 0a 00 5e 5e 2e 53 4d 42 MB_P17Op..^^.SMB d500: 5f 50 31 37 45 5b 22 0a c8 70 0a 01 46 4c 41 47 _P17E["..p..FLAG d510: a0 18 93 50 57 53 54 0a ff 70 5e 5e 2e 53 4d 42 ...PWST..p^^.SMB d520: 5f 50 31 37 4f 46 4c 41 47 70 0b 02 ae 50 38 30 _P17OFLAGp...P80 d530: 48 a4 46 4c 41 47 10 4a 0a 2e 53 41 54 41 50 52 H.FLAG.J..SATAPR d540: 49 44 14 4e 09 5f 45 4a 58 01 70 0a 00 5e 5e 5e ID.N._EJX.p..^^^ d550: 2e 53 4d 42 5f 50 41 41 4f 70 0a 00 5e 5e 5e 2e .SMB_PAAOp..^^^. d560: 53 4d 42 5f 50 41 41 45 5b 22 0a 28 a0 2e 93 5e SMB_PAAE[".(...^ d570: 5e 5e 2e 41 46 44 5f 48 44 44 30 0a 01 70 0a 00 ^^.AFD_HDD0..p.. d580: 5e 5e 5e 2e 53 4d 42 5f 50 33 39 4f 70 0a 00 5e ^^^.SMB_P39Op..^ d590: 5e 5e 2e 53 4d 42 5f 50 33 39 45 a1 1f 70 0a 00 ^^.SMB_P39E..p.. d5a0: 5e 5e 5e 2e 53 4d 42 5f 50 33 35 4f 70 0a 00 5e ^^^.SMB_P35Op..^ d5b0: 5e 5e 2e 53 4d 42 5f 50 33 35 45 5b 22 0a 28 70 ^^.SMB_P35E[".(p d5c0: 0a 01 5e 5e 5e 2e 53 4d 42 5f 50 41 41 4f 70 0a ..^^^.SMB_PAAOp. d5d0: 00 5e 5e 5e 2e 53 4d 42 5f 50 41 41 45 5b 22 0a .^^^.SMB_PAAE[". d5e0: 28 10 44 08 2f 03 53 41 54 41 50 52 49 44 50 5f (.D./.SATAPRIDP_ d5f0: 44 30 14 43 07 5f 45 4a 58 01 70 0a 00 5e 5e 5e D0.C._EJX.p..^^^ d600: 5e 2e 53 4d 42 5f 50 41 41 4f 70 0a 00 5e 5e 5e ^.SMB_PAAOp..^^^ d610: 5e 2e 53 4d 42 5f 50 41 41 45 5b 22 0a 28 70 0a ^.SMB_PAAE[".(p. d620: 00 5e 5e 5e 5e 2e 53 4d 42 5f 50 33 39 4f 70 0a .^^^^.SMB_P39Op. d630: 00 5e 5e 5e 5e 2e 53 4d 42 5f 50 33 39 45 5b 22 .^^^^.SMB_P39E[" d640: 0a 28 70 0a 01 5e 5e 5e 5e 2e 53 4d 42 5f 50 41 .(p..^^^^.SMB_PA d650: 41 4f 70 0a 00 5e 5e 5e 5e 2e 53 4d 42 5f 50 41 AOp..^^^^.SMB_PA d660: 41 45 5b 22 0a 28 10 49 07 2e 53 41 54 41 50 52 AE[".(.I..SATAPR d670: 54 31 14 4d 06 5f 45 4a 58 01 70 0a 00 5e 5e 5e T1.M._EJX.p..^^^ d680: 2e 53 4d 42 5f 50 41 41 4f 70 0a 00 5e 5e 5e 2e .SMB_PAAOp..^^^. d690: 53 4d 42 5f 50 41 41 45 5b 22 0a 28 70 0a 00 5e SMB_PAAE[".(p..^ d6a0: 5e 5e 2e 53 4d 42 5f 50 33 39 4f 70 0a 00 5e 5e ^^.SMB_P39Op..^^ d6b0: 5e 2e 53 4d 42 5f 50 33 39 45 5b 22 0a 28 70 0a ^.SMB_P39E[".(p. d6c0: 01 5e 5e 5e 2e 53 4d 42 5f 50 41 41 4f 70 0a 00 .^^^.SMB_PAAOp.. d6d0: 5e 5e 5e 2e 53 4d 42 5f 50 41 41 45 5b 22 0a 28 ^^^.SMB_PAAE[".( d6e0: 10 44 08 2f 03 53 41 54 41 50 52 54 31 4f 44 44 .D./.SATAPRT1ODD d6f0: 5f 14 43 07 5f 45 4a 58 01 70 0a 00 5e 5e 5e 5e _.C._EJX.p..^^^^ d700: 2e 53 4d 42 5f 50 41 41 4f 70 0a 00 5e 5e 5e 5e .SMB_PAAOp..^^^^ d710: 2e 53 4d 42 5f 50 41 41 45 5b 22 0a 28 70 0a 00 .SMB_PAAE[".(p.. d720: 5e 5e 5e 5e 2e 53 4d 42 5f 50 33 39 4f 70 0a 00 ^^^^.SMB_P39Op.. d730: 5e 5e 5e 5e 2e 53 4d 42 5f 50 33 39 45 5b 22 0a ^^^^.SMB_P39E[". d740: 28 70 0a 01 5e 5e 5e 5e 2e 53 4d 42 5f 50 41 41 (p..^^^^.SMB_PAA d750: 4f 70 0a 00 5e 5e 5e 5e 2e 53 4d 42 5f 50 41 41 Op..^^^^.SMB_PAA d760: 45 5b 22 0a 28 10 49 07 2e 53 41 54 41 53 45 43 E[".(.I..SATASEC d770: 44 14 4d 06 5f 45 4a 58 01 70 0a 00 5e 5e 5e 2e D.M._EJX.p..^^^. d780: 53 4d 42 5f 50 41 41 4f 70 0a 00 5e 5e 5e 2e 53 SMB_PAAOp..^^^.S d790: 4d 42 5f 50 41 41 45 5b 22 0a 28 70 0a 00 5e 5e MB_PAAE[".(p..^^ d7a0: 5e 2e 53 4d 42 5f 50 33 39 4f 70 0a 00 5e 5e 5e ^.SMB_P39Op..^^^ d7b0: 2e 53 4d 42 5f 50 33 39 45 5b 22 0a 28 70 0a 01 .SMB_P39E[".(p.. d7c0: 5e 5e 5e 2e 53 4d 42 5f 50 41 41 4f 70 0a 00 5e ^^^.SMB_PAAOp..^ d7d0: 5e 5e 2e 53 4d 42 5f 50 41 41 45 5b 22 0a 28 10 ^^.SMB_PAAE[".(. d7e0: 44 08 2f 03 53 41 54 41 50 52 49 44 50 5f 44 31 D./.SATAPRIDP_D1 d7f0: 14 43 07 5f 45 4a 58 01 70 0a 00 5e 5e 5e 5e 2e .C._EJX.p..^^^^. d800: 53 4d 42 5f 50 41 41 4f 70 0a 00 5e 5e 5e 5e 2e SMB_PAAOp..^^^^. d810: 53 4d 42 5f 50 41 41 45 5b 22 0a 28 70 0a 00 5e SMB_PAAE[".(p..^ d820: 5e 5e 5e 2e 53 4d 42 5f 50 33 39 4f 70 0a 00 5e ^^^.SMB_P39Op..^ d830: 5e 5e 5e 2e 53 4d 42 5f 50 33 39 45 5b 22 0a 28 ^^^.SMB_P39E[".( d840: 70 0a 01 5e 5e 5e 5e 2e 53 4d 42 5f 50 41 41 4f p..^^^^.SMB_PAAO d850: 70 0a 00 5e 5e 5e 5e 2e 53 4d 42 5f 50 41 41 45 p..^^^^.SMB_PAAE d860: 5b 22 0a 28 10 4d 05 4f 48 43 31 5b 82 45 05 52 [".(.M.OHC1[.E.R d870: 48 55 42 08 5f 41 44 52 0a 00 5b 82 0c 50 52 54 HUB._ADR..[..PRT d880: 31 08 5f 41 44 52 0a 01 5b 82 0c 50 52 54 32 08 1._ADR..[..PRT2. d890: 5f 41 44 52 0a 02 5b 82 0c 50 52 54 33 08 5f 41 _ADR..[..PRT3._A d8a0: 44 52 0a 03 5b 82 1c 50 52 54 35 08 5f 41 44 52 DR..[..PRT5._ADR d8b0: 0a 05 08 5f 55 50 43 12 0a 04 0a 00 0a ff 0a 00 ..._UPC......... d8c0: 0a 00 10 3d 45 48 43 31 5b 82 36 52 48 55 42 08 ...=EHC1[.6RHUB. d8d0: 5f 41 44 52 0a 00 5b 82 0c 50 52 54 31 08 5f 41 _ADR..[..PRT1._A d8e0: 44 52 0a 01 5b 82 0c 50 52 54 32 08 5f 41 44 52 DR..[..PRT2._ADR d8f0: 0a 02 5b 82 0c 50 52 54 33 08 5f 41 44 52 0a 03 ..[..PRT3._ADR.. d900: 10 41 05 45 48 43 32 5b 82 49 04 52 48 55 42 08 .A.EHC2[.I.RHUB. d910: 5f 41 44 52 0a 00 5b 82 1c 50 52 54 34 08 5f 41 _ADR..[..PRT4._A d920: 44 52 0a 04 08 5f 55 50 43 12 0a 04 0a 00 0a ff DR..._UPC....... d930: 0a 00 0a 00 5b 82 1c 50 52 54 35 08 5f 41 44 52 ....[..PRT5._ADR d940: 0a 05 08 5f 55 50 43 12 0a 04 0a 00 0a ff 0a 00 ..._UPC......... d950: 0a 00 10 40 06 4f 48 43 34 5b 82 48 05 52 48 55 ...@.OHC4[.H.RHU d960: 42 08 5f 41 44 52 0a 00 5b 82 0c 50 52 54 31 08 B._ADR..[..PRT1. d970: 5f 41 44 52 0a 01 5b 82 3b 50 52 54 32 08 5f 41 _ADR..[.;PRT2._A d980: 44 52 0a 02 14 2e 5f 45 4a 58 01 5b 22 0a 28 70 DR...._EJX.[".(p d990: 0a 00 5e 5e 5e 5e 2e 53 4d 42 5f 50 30 37 4f 70 ..^^^^.SMB_P07Op d9a0: 0a 00 5e 5e 5e 5e 2e 53 4d 42 5f 50 30 37 45 5b ..^^^^.SMB_P07E[ d9b0: 22 0a 28 10 27 2e 50 42 32 5f 56 47 41 5f 14 1c ".(.'.PB2_VGA_.. d9c0: 5f 45 4a 58 01 5b 22 0a 28 5e 5e 5e 2e 56 47 41 _EJX.[".(^^^.VGA d9d0: 5f 50 58 30 32 0a 00 5b 22 0a 28 10 27 2e 50 42 _PX02..[".(.'.PB d9e0: 33 5f 56 47 41 5f 14 1c 5f 45 4a 58 01 5b 22 0a 3_VGA_.._EJX.[". d9f0: 28 5e 5e 5e 2e 56 47 41 5f 50 58 30 32 0a 00 5b (^^^.VGA_PX02..[ da00: 22 0a 28 10 40 14 2e 50 42 37 5f 58 50 44 56 14 ".(.@..PB7_XPDV. da10: 44 13 5f 45 4a 58 01 8b 43 41 4c 42 0a 00 53 5a D._EJX..CALB..SZ da20: 5a 45 5b 13 43 41 4c 42 0a 10 0a 03 46 55 43 43 ZE[.CALB....FUCC da30: 5b 13 43 41 4c 42 0a 13 0a 05 44 45 56 56 5b 13 [.CALB....DEVV[. da40: 43 41 4c 42 0a 18 0a 08 42 55 53 53 8c 43 41 4c CALB....BUSS.CAL da50: 42 0a 04 48 50 53 54 70 0a 05 53 5a 5a 45 70 0a B..HPSTp..SZZEp. da60: 00 46 55 43 43 70 0a 07 44 45 56 56 70 0a 00 42 .FUCCp..DEVVp..B da70: 55 53 53 70 0a 00 48 50 53 54 41 4c 49 42 0a 06 USSp..HPSTALIB.. da80: 43 41 4c 42 5b 22 0a 28 70 01 5e 5e 5e 2e 53 4d CALB[".(p.^^^.SM da90: 42 5f 50 32 39 48 70 01 5e 5e 5e 2e 53 4d 42 5f B_P29Hp.^^^.SMB_ daa0: 50 32 39 53 70 01 5e 5e 5e 2e 53 4d 42 5f 50 32 P29Sp.^^^.SMB_P2 dab0: 39 55 5b 22 0a 28 70 5e 5e 5e 2e 53 4d 42 5f 4d 9U[".(p^^^.SMB_M dac0: 53 30 34 60 7b 60 0c f0 ff ff ff 61 70 61 5e 5e S04`{`.....apa^^ dad0: 5e 2e 53 4d 42 5f 4d 53 30 34 5b 22 0a 28 70 0a ^.SMB_MS04[".(p. dae0: 00 5e 5e 5e 2e 53 4d 42 5f 50 41 41 4f 70 0a 00 .^^^.SMB_PAAOp.. daf0: 5e 5e 5e 2e 53 4d 42 5f 50 41 41 45 5b 22 0a 28 ^^^.SMB_PAAE[".( db00: 70 0a 00 5e 5e 5e 2e 53 4d 42 5f 50 33 42 4f 70 p..^^^.SMB_P3BOp db10: 0a 00 5e 5e 5e 2e 53 4d 42 5f 50 33 42 45 5b 22 ..^^^.SMB_P3BE[" db20: 0a 28 70 0a 01 5e 5e 5e 2e 53 4d 42 5f 50 41 41 .(p..^^^.SMB_PAA db30: 4f 70 0a 00 5e 5e 5e 2e 53 4d 42 5f 50 41 41 45 Op..^^^.SMB_PAAE db40: 5b 22 0a 28 10 47 08 2e 53 50 42 31 58 50 44 56 [".(.G..SPB1XPDV db50: 14 4b 07 5f 45 4a 58 01 70 01 5e 5e 5e 2e 53 4d .K._EJX.p.^^^.SM db60: 42 5f 50 32 45 48 70 01 5e 5e 5e 2e 53 4d 42 5f B_P2EHp.^^^.SMB_ db70: 50 32 45 53 70 01 5e 5e 5e 2e 53 4d 42 5f 50 32 P2ESp.^^^.SMB_P2 db80: 45 55 5b 22 0a 28 70 5e 5e 5e 2e 53 4d 42 5f 4d EU[".(p^^^.SMB_M db90: 53 30 33 60 7b 60 0c 0f ff ff ff 61 70 61 5e 5e S03`{`.....apa^^ dba0: 5e 2e 53 4d 42 5f 4d 53 30 33 70 0a 00 5e 5e 5e ^.SMB_MS03p..^^^ dbb0: 2e 53 4d 42 5f 50 43 38 4f 70 0a 00 5e 5e 5e 2e .SMB_PC8Op..^^^. dbc0: 53 4d 42 5f 50 43 38 45 5b 22 0a 28 10 43 05 2e SMB_PC8E[".(.C.. dbd0: 53 50 42 30 58 50 44 56 14 47 04 5f 45 4a 58 01 SPB0XPDV.G._EJX. dbe0: 70 0a 01 5e 5e 5e 2e 53 4d 42 5f 50 41 46 4f 70 p..^^^.SMB_PAFOp dbf0: 0a 00 5e 5e 5e 2e 53 4d 42 5f 50 41 46 45 70 0a ..^^^.SMB_PAFEp. dc00: 00 5e 5e 5e 2e 53 4d 42 5f 50 30 43 4f 70 0a 00 .^^^.SMB_P0COp.. dc10: 5e 5e 5e 2e 53 4d 42 5f 50 30 43 45 5b 22 0a 28 ^^^.SMB_P0CE[".( dc20: 10 4c 0f 2e 50 42 34 5f 58 50 44 56 14 40 0f 5f .L..PB4_XPDV.@._ dc30: 45 4a 58 01 8b 43 41 4c 42 0a 00 53 5a 5a 45 5b EJX..CALB..SZZE[ dc40: 13 43 41 4c 42 0a 10 0a 03 46 55 43 43 5b 13 43 .CALB....FUCC[.C dc50: 41 4c 42 0a 13 0a 05 44 45 56 56 5b 13 43 41 4c ALB....DEVV[.CAL dc60: 42 0a 18 0a 08 42 55 53 53 8c 43 41 4c 42 0a 04 B....BUSS.CALB.. dc70: 48 50 53 54 70 0a 05 53 5a 5a 45 70 0a 00 46 55 HPSTp..SZZEp..FU dc80: 43 43 70 0a 04 44 45 56 56 70 0a 00 42 55 53 53 CCp..DEVVp..BUSS dc90: 70 0a 00 48 50 53 54 41 4c 49 42 0a 06 43 41 4c p..HPSTALIB..CAL dca0: 42 5b 22 0a 28 70 01 5e 5e 5e 2e 53 4d 42 5f 50 B[".(p.^^^.SMB_P dcb0: 33 46 48 70 01 5e 5e 5e 2e 53 4d 42 5f 50 33 46 3FHp.^^^.SMB_P3F dcc0: 53 70 01 5e 5e 5e 2e 53 4d 42 5f 50 33 46 55 5b Sp.^^^.SMB_P3FU[ dcd0: 22 0a 28 70 5e 5e 5e 2e 53 4d 42 5f 4d 53 30 31 ".(p^^^.SMB_MS01 dce0: 60 7b 60 0c 0f ff ff ff 61 70 61 5e 5e 5e 2e 53 `{`.....apa^^^.S dcf0: 4d 42 5f 4d 53 30 31 5b 22 0a 28 70 0a 00 5e 5e MB_MS01[".(p..^^ dd00: 5e 2e 53 4d 42 5f 50 43 35 4f 70 0a 00 5e 5e 5e ^.SMB_PC5Op..^^^ dd10: 2e 53 4d 42 5f 50 43 35 45 5b 22 0a 28 10 4e 11 .SMB_PC5E[".(.N. dd20: 2e 50 42 35 5f 58 50 44 56 14 42 11 5f 45 4a 58 .PB5_XPDV.B._EJX dd30: 01 8b 43 41 4c 42 0a 00 53 5a 5a 45 5b 13 43 41 ..CALB..SZZE[.CA dd40: 4c 42 0a 10 0a 03 46 55 43 43 5b 13 43 41 4c 42 LB....FUCC[.CALB dd50: 0a 13 0a 05 44 45 56 56 5b 13 43 41 4c 42 0a 18 ....DEVV[.CALB.. dd60: 0a 08 42 55 53 53 8c 43 41 4c 42 0a 04 48 50 53 ..BUSS.CALB..HPS dd70: 54 70 0a 05 53 5a 5a 45 70 0a 00 46 55 43 43 70 Tp..SZZEp..FUCCp dd80: 0a 05 44 45 56 56 70 0a 00 42 55 53 53 70 0a 00 ..DEVVp..BUSSp.. dd90: 48 50 53 54 41 4c 49 42 0a 06 43 41 4c 42 5b 22 HPSTALIB..CALB[" dda0: 0a 28 70 01 5e 5e 5e 2e 53 4d 42 5f 50 33 45 48 .(p.^^^.SMB_P3EH ddb0: 70 01 5e 5e 5e 2e 53 4d 42 5f 50 33 45 53 70 01 p.^^^.SMB_P3ESp. ddc0: 5e 5e 5e 2e 53 4d 42 5f 50 33 45 55 5b 22 0a 28 ^^^.SMB_P3EU[".( ddd0: 70 5e 5e 5e 2e 53 4d 42 5f 4d 53 30 31 60 7b 60 p^^^.SMB_MS01`{` dde0: 0c f0 ff ff ff 61 70 61 5e 5e 5e 2e 53 4d 42 5f .....apa^^^.SMB_ ddf0: 4d 53 30 31 5b 22 0a 28 70 0a 01 5e 5e 5e 2e 53 MS01[".(p..^^^.S de00: 4d 42 5f 50 42 31 4f 70 0a 00 5e 5e 5e 2e 53 4d MB_PB1Op..^^^.SM de10: 42 5f 50 42 31 45 5b 22 0a 28 70 0a 00 5e 5e 5e B_PB1E[".(p..^^^ de20: 2e 53 4d 42 5f 50 30 44 4f 70 0a 00 5e 5e 5e 2e .SMB_P0DOp..^^^. de30: 53 4d 42 5f 50 30 44 45 5b 22 0a 28 10 4e 11 2e SMB_P0DE[".(.N.. de40: 50 42 36 5f 58 50 44 56 14 42 11 5f 45 4a 58 01 PB6_XPDV.B._EJX. de50: 8b 43 41 4c 42 0a 00 53 5a 5a 45 5b 13 43 41 4c .CALB..SZZE[.CAL de60: 42 0a 10 0a 03 46 55 43 43 5b 13 43 41 4c 42 0a B....FUCC[.CALB. de70: 13 0a 05 44 45 56 56 5b 13 43 41 4c 42 0a 18 0a ...DEVV[.CALB... de80: 08 42 55 53 53 8c 43 41 4c 42 0a 04 48 50 53 54 .BUSS.CALB..HPST de90: 70 0a 05 53 5a 5a 45 70 0a 00 46 55 43 43 70 0a p..SZZEp..FUCCp. dea0: 06 44 45 56 56 70 0a 00 42 55 53 53 70 0a 00 48 .DEVVp..BUSSp..H deb0: 50 53 54 41 4c 49 42 0a 06 43 41 4c 42 5b 22 0a PSTALIB..CALB[". dec0: 28 70 01 5e 5e 5e 2e 53 4d 42 5f 50 34 30 48 70 (p.^^^.SMB_P40Hp ded0: 01 5e 5e 5e 2e 53 4d 42 5f 50 34 30 53 70 01 5e .^^^.SMB_P40Sp.^ dee0: 5e 5e 2e 53 4d 42 5f 50 34 30 55 5b 22 0a 28 70 ^^.SMB_P40U[".(p def0: 5e 5e 5e 2e 53 4d 42 5f 4d 53 30 32 60 7b 60 0c ^^^.SMB_MS02`{`. df00: f0 ff ff ff 61 70 61 5e 5e 5e 2e 53 4d 42 5f 4d ....apa^^^.SMB_M df10: 53 30 32 5b 22 0a 28 70 0a 01 5e 5e 5e 2e 53 4d S02[".(p..^^^.SM df20: 42 5f 50 42 30 4f 70 0a 00 5e 5e 5e 2e 53 4d 42 B_PB0Op..^^^.SMB df30: 5f 50 42 30 45 5b 22 0a 28 70 0a 00 5e 5e 5e 2e _PB0E[".(p..^^^. df40: 53 4d 42 5f 50 30 45 4f 70 0a 00 5e 5e 5e 2e 53 SMB_P0EOp..^^^.S df50: 4d 42 5f 50 30 45 45 5b 22 0a 28 10 46 1e 53 41 MB_P0EE[".(.F.SA df60: 54 41 5b 82 4e 1d 4f 44 44 5a 08 5f 41 44 52 0a TA[.N.ODDZ._ADR. df70: 01 08 4f 44 50 53 0a 00 14 22 5f 53 54 41 00 a0 ..ODPS..."_STA.. df80: 16 93 5e 5e 5e 2e 41 46 44 5f 4f 44 5a 50 0c 00 ..^^^.AFD_ODZP.. df90: 00 00 80 a4 0a 00 a1 04 a4 0a 0f 14 48 09 5f 50 ............H._P dfa0: 53 30 00 70 0b 00 df 50 38 30 48 a0 41 08 93 5e S0.p...P80H.A..^ dfb0: 5e 5e 2e 41 46 44 5f 4f 44 5a 50 0c 01 00 00 80 ^^.AFD_ODZP..... dfc0: a0 4c 06 93 56 49 44 49 0c 22 10 04 78 70 0a 00 .L..VIDI."..xp.. dfd0: 44 49 53 31 70 0a 01 57 52 45 4e 70 0a 01 50 49 DIS1p..WRENp..PI dfe0: 31 5f 70 0a 00 57 52 45 4e 5b 22 0a 28 70 0a 00 1_p..WREN[".(p.. dff0: 5e 5e 5e 2e 53 4d 42 5f 50 41 41 4f 70 0a 00 5e ^^^.SMB_PAAOp..^ e000: 5e 5e 2e 53 4d 42 5f 50 41 41 45 70 0a 01 5e 5e ^^.SMB_PAAEp..^^ e010: 5e 2e 53 4d 42 5f 50 33 35 4f 70 0a 00 5e 5e 5e ^.SMB_P35Op..^^^ e020: 2e 53 4d 42 5f 50 33 35 45 5b 22 0a 28 70 0a 00 .SMB_P35E[".(p.. e030: 4f 44 50 53 14 48 09 5f 50 53 33 00 70 0b 03 df ODPS.H._PS3.p... e040: 50 38 30 48 a0 41 08 93 5e 5e 5e 2e 41 46 44 5f P80H.A..^^^.AFD_ e050: 4f 44 5a 50 0c 01 00 00 80 a0 4c 06 93 56 49 44 ODZP......L..VID e060: 49 0c 22 10 04 78 5b 22 0a 28 70 0a 00 5e 5e 5e I."..x[".(p..^^^ e070: 2e 53 4d 42 5f 50 41 41 4f 70 0a 00 5e 5e 5e 2e .SMB_PAAOp..^^^. e080: 53 4d 42 5f 50 41 41 45 70 0a 00 5e 5e 5e 2e 53 SMB_PAAEp..^^^.S e090: 4d 42 5f 50 33 35 4f 70 0a 00 5e 5e 5e 2e 53 4d MB_P35Op..^^^.SM e0a0: 42 5f 50 33 35 45 5b 22 0a 28 70 0a 01 44 49 53 B_P35E[".(p..DIS e0b0: 31 70 0a 01 57 52 45 4e 70 0a 00 50 49 31 5f 70 1p..WRENp..PI1_p e0c0: 0a 00 57 52 45 4e 70 0a 03 4f 44 50 53 14 0b 5f ..WRENp..ODPS.._ e0d0: 50 53 43 00 a4 4f 44 50 53 5b 82 47 06 4f 44 44 PSC..ODPS[.G.ODD e0e0: 5f 08 5f 41 44 52 0a 00 14 09 5f 52 4d 56 00 a4 _._ADR...._RMV.. e0f0: 0a 01 14 4f 04 5f 45 4a 58 01 5b 22 0a 28 70 0a ...O._EJX.[".(p. e100: 00 5e 5e 5e 5e 2e 53 4d 42 5f 50 41 41 4f 70 0a .^^^^.SMB_PAAOp. e110: 00 5e 5e 5e 5e 2e 53 4d 42 5f 50 41 41 45 70 0a .^^^^.SMB_PAAEp. e120: 00 5e 5e 5e 5e 2e 53 4d 42 5f 50 33 35 4f 70 0a .^^^^.SMB_P35Op. e130: 00 5e 5e 5e 5e 2e 53 4d 42 5f 50 33 35 45 5b 22 .^^^^.SMB_P35E[" e140: 0a 28 5b 82 2c 41 43 41 44 08 5f 48 49 44 0d 41 .([.,ACAD._HID.A e150: 43 50 49 30 30 30 33 00 14 0b 5f 50 53 52 00 a4 CPI0003..._PSR.. e160: 50 57 52 53 14 0b 5f 50 43 4c 00 a4 5f 53 42 5f PWRS.._PCL.._SB_ e170: 5b 82 4e 6b 42 41 54 54 08 5f 48 49 44 0c 41 d0 [.NkBATT._HID.A. e180: 0c 0a 08 5f 55 49 44 0a 01 08 5f 50 43 4c 12 06 ..._UID..._PCL.. e190: 01 50 43 49 30 08 42 54 50 5f 0a 00 08 42 54 43 .PCI0.BTP_...BTC e1a0: 48 0a 00 08 42 53 54 41 0a 00 08 50 42 49 46 12 H...BSTA...PBIF. e1b0: 39 0d 0a 01 0c ff ff ff ff 0c ff ff ff ff 0a 00 9............... e1c0: 0c ff ff ff ff 0a 00 0a 00 0a 64 0a 00 0d 42 41 ..........d...BA e1d0: 54 30 00 0d 31 32 33 34 35 36 37 38 39 00 0d 4c T0..123456789..L e1e0: 69 4f 4e 00 0d 50 54 4c 00 08 50 42 53 54 12 0f iON..PTL..PBST.. e1f0: 04 0a 00 0c ff ff ff ff 0b 34 10 0b 30 2a 5b 01 .........4..0*[. e200: 45 43 4d 55 00 14 22 5f 53 54 41 00 a0 0b 93 45 ECMU.."_STA....E e210: 43 4f 4e 0a 00 a4 0a 0f a1 0f a0 08 42 53 54 41 CON.........BSTA e220: a4 0a 1f a1 04 a4 0a 0f 14 47 07 42 54 53 54 00 .........G.BTST. e230: 5b 23 5e 5e 2f 04 50 43 49 30 4c 50 43 30 45 43 [#^^/.PCI0LPC0EC e240: 30 5f 4d 55 54 30 ff ff 70 5e 5e 2f 04 50 43 49 0_MUT0..p^^/.PCI e250: 30 4c 50 43 30 45 43 30 5f 42 30 49 4e 42 53 54 0LPC0EC0_B0INBST e260: 41 5b 27 5e 5e 2f 04 50 43 49 30 4c 50 43 30 45 A['^^/.PCI0LPC0E e270: 43 30 5f 4d 55 54 30 a0 1f 93 42 53 54 41 0a 01 C0_MUT0...BSTA.. e280: a0 16 93 42 54 50 5f 0a 00 70 0a 01 42 54 43 48 ...BTP_..p..BTCH e290: 70 0a 01 42 54 50 5f a1 08 70 0a 00 42 54 50 5f p..BTP_..p..BTP_ e2a0: 14 46 06 49 54 4f 53 01 70 11 0c 0a 09 30 00 00 .F.ITOS.p....0.. e2b0: 00 00 00 00 00 00 60 70 11 14 0a 11 30 31 32 33 ......`p....0123 e2c0: 34 35 36 37 38 39 41 42 43 44 45 46 00 67 70 0a 456789ABCDEF.gp. e2d0: 08 61 70 0a 00 62 70 0a 00 63 a2 2a 61 76 61 7b .ap..bp..c.*ava{ e2e0: 7a 68 79 61 0a 02 00 00 0a 0f 64 a0 05 64 70 ff zhya......d..dp. e2f0: 63 a0 13 63 47 42 46 45 67 64 71 65 50 42 46 45 c..cGBFEgdqePBFE e300: 60 62 65 75 62 a4 60 14 13 47 42 46 45 03 8c 68 `beub.`..GBFE..h e310: 69 54 49 44 58 70 54 49 44 58 6a 14 13 50 42 46 iTIDXpTIDXj..PBF e320: 45 03 8c 68 69 54 49 44 58 70 6a 54 49 44 58 14 E..hiTIDXpjTIDX. e330: 4c 37 5f 42 49 46 00 08 5f 54 5f 32 00 08 5f 54 L7_BIF.._T_2.._T e340: 5f 31 00 08 5f 54 5f 30 00 5b 23 5e 5e 2f 04 50 _1.._T_0.[#^^/.P e350: 43 49 30 4c 50 43 30 45 43 30 5f 4d 55 54 30 ff CI0LPC0EC0_MUT0. e360: ff 70 5e 5e 2f 04 50 43 49 30 4c 50 43 30 45 43 .p^^/.PCI0LPC0EC e370: 30 5f 44 43 50 30 88 50 42 49 46 0a 01 00 70 5e 0_DCP0.PBIF...p^ e380: 5e 2f 04 50 43 49 30 4c 50 43 30 45 43 30 5f 46 ^/.PCI0LPC0EC0_F e390: 43 50 30 60 70 60 88 50 42 49 46 0a 02 00 70 5e CP0`p`.PBIF...p^ e3a0: 5e 2f 04 50 43 49 30 4c 50 43 30 45 43 30 5f 44 ^/.PCI0LPC0EC0_D e3b0: 56 54 30 88 50 42 49 46 0a 04 00 70 5e 5e 2f 04 VT0.PBIF...p^^/. e3c0: 50 43 49 30 4c 50 43 30 45 43 30 5f 44 4e 4e 30 PCI0LPC0EC0_DNN0 e3d0: 61 70 5e 5e 2f 04 50 43 49 30 4c 50 43 30 45 43 ap^^/.PCI0LPC0EC e3e0: 30 5f 42 53 4e 30 62 70 5e 5e 2f 04 50 43 49 30 0_BSN0bp^^/.PCI0 e3f0: 4c 50 43 30 45 43 30 5f 42 43 4e 30 63 70 5e 5e LPC0EC0_BCN0cp^^ e400: 2f 04 50 43 49 30 4c 50 43 30 45 43 30 5f 4d 4e /.PCI0LPC0EC0_MN e410: 4e 30 64 5b 27 5e 5e 2f 04 50 43 49 30 4c 50 43 N0d['^^/.PCI0LPC e420: 30 45 43 30 5f 4d 55 54 30 70 78 60 0a 0a 00 00 0EC0_MUT0px`.... e430: 88 50 42 49 46 0a 05 00 70 0a 00 88 50 42 49 46 .PBIF...p...PBIF e440: 0a 06 00 70 99 61 00 5f 54 5f 30 a0 19 93 5f 54 ...p.a._T_0..._T e450: 5f 30 0a 00 70 0d 55 6e 6b 6e 6f 77 00 88 50 42 _0..p.Unknow..PB e460: 49 46 0a 09 00 a1 19 a0 17 93 5f 54 5f 30 0a ff IF........_T_0.. e470: 70 0d 44 65 6c 6c 00 88 50 42 49 46 0a 09 00 70 p.Dell..PBIF...p e480: 49 54 4f 53 5b 29 62 00 88 50 42 49 46 0a 0a 00 ITOS[)b..PBIF... e490: 70 99 63 00 5f 54 5f 31 a0 19 93 5f 54 5f 31 0a p.c._T_1..._T_1. e4a0: 00 70 0d 55 6e 6b 6e 6f 77 00 88 50 42 49 46 0a .p.Unknow..PBIF. e4b0: 0b 00 a1 43 0d a0 17 93 5f 54 5f 31 0a 01 70 0d ...C...._T_1..p. e4c0: 50 42 41 43 00 88 50 42 49 46 0a 0b 00 a1 48 0b PBAC..PBIF....H. e4d0: a0 17 93 5f 54 5f 31 0a 02 70 0d 4c 49 4f 4e 00 ..._T_1..p.LION. e4e0: 88 50 42 49 46 0a 0b 00 a1 4d 09 a0 17 93 5f 54 .PBIF....M...._T e4f0: 5f 31 0a 03 70 0d 4e 49 43 44 00 88 50 42 49 46 _1..p.NICD..PBIF e500: 0a 0b 00 a1 42 08 a0 17 93 5f 54 5f 31 0a 04 70 ....B...._T_1..p e510: 0d 4e 49 4d 48 00 88 50 42 49 46 0a 0b 00 a1 47 .NIMH..PBIF....G e520: 06 a0 17 93 5f 54 5f 31 0a 05 70 0d 4e 49 5a 4e ...._T_1..p.NIZN e530: 00 88 50 42 49 46 0a 0b 00 a1 4c 04 a0 16 93 5f ..PBIF....L...._ e540: 54 5f 31 0a 06 70 0d 52 41 4d 00 88 50 42 49 46 T_1..p.RAM..PBIF e550: 0a 0b 00 a1 32 a0 17 93 5f 54 5f 31 0a 07 70 0d ....2..._T_1..p. e560: 5a 4e 41 52 00 88 50 42 49 46 0a 0b 00 a1 18 a0 ZNAR..PBIF...... e570: 16 93 5f 54 5f 31 0a 08 70 0d 4c 49 50 00 88 50 .._T_1..p.LIP..P e580: 42 49 46 0a 0b 00 70 99 64 00 5f 54 5f 32 a0 19 BIF...p.d._T_2.. e590: 93 5f 54 5f 32 0a 00 70 0d 55 6e 6b 6e 6f 77 00 ._T_2..p.Unknow. e5a0: 88 50 42 49 46 0a 0c 00 a1 4e 0f a0 17 93 5f 54 .PBIF....N...._T e5b0: 5f 32 0a 01 70 0d 44 65 6c 6c 00 88 50 42 49 46 _2..p.Dell..PBIF e5c0: 0a 0c 00 a1 43 0e a0 17 93 5f 54 5f 32 0a 02 70 ....C...._T_2..p e5d0: 0d 53 4f 4e 59 00 88 50 42 49 46 0a 0c 00 a1 48 .SONY..PBIF....H e5e0: 0c a0 18 93 5f 54 5f 32 0a 03 70 0d 53 41 4e 59 ...._T_2..p.SANY e5f0: 4f 00 88 50 42 49 46 0a 0c 00 a1 4c 0a a0 1c 93 O..PBIF....L.... e600: 5f 54 5f 32 0a 04 70 0d 50 41 4e 41 53 4f 4e 49 _T_2..p.PANASONI e610: 43 00 88 50 42 49 46 0a 0c 00 a1 4c 08 a0 1b 93 C..PBIF....L.... e620: 5f 54 5f 32 0a 05 70 0d 53 4f 4e 59 5f 4f 4c 44 _T_2..p.SONY_OLD e630: 00 88 50 42 49 46 0a 0c 00 a1 4d 06 a0 16 93 5f ..PBIF....M...._ e640: 54 5f 32 0a 06 70 0d 53 44 49 00 88 50 42 49 46 T_2..p.SDI..PBIF e650: 0a 0c 00 a1 43 05 a0 19 93 5f 54 5f 32 0a 07 70 ....C...._T_2..p e660: 0d 53 49 4d 50 4c 4f 00 88 50 42 49 46 0a 0c 00 .SIMPLO..PBIF... e670: a1 36 a0 1b 93 5f 54 5f 32 0a 08 70 0d 4d 4f 54 .6..._T_2..p.MOT e680: 4f 52 4f 4c 41 00 88 50 42 49 46 0a 0c 00 a1 18 OROLA..PBIF..... e690: a0 16 93 5f 54 5f 32 0a 09 70 0d 4c 47 43 00 88 ..._T_2..p.LGC.. e6a0: 50 42 49 46 0a 0c 00 a4 50 42 49 46 14 43 18 5f PBIF....PBIF.C._ e6b0: 42 53 54 00 5b 23 5e 5e 2f 04 50 43 49 30 4c 50 BST.[#^^/.PCI0LP e6c0: 43 30 45 43 30 5f 4d 55 54 30 ff ff 70 5e 5e 2f C0EC0_MUT0..p^^/ e6d0: 04 50 43 49 30 4c 50 43 30 45 43 30 5f 42 30 44 .PCI0LPC0EC0_B0D e6e0: 43 60 70 5e 5e 2f 04 50 43 49 30 4c 50 43 30 45 C`p^^/.PCI0LPC0E e6f0: 43 30 5f 42 30 49 43 61 79 61 0a 01 61 72 60 61 C0_B0ICaya..ar`a e700: 60 70 5e 5e 2f 04 50 43 49 30 4c 50 43 30 45 43 `p^^/.PCI0LPC0EC e710: 30 5f 42 30 43 4c 61 5b 27 5e 5e 2f 04 50 43 49 0_B0CLa['^^/.PCI e720: 30 4c 50 43 30 45 43 30 5f 4d 55 54 30 79 61 0a 0LPC0EC0_MUT0ya. e730: 02 61 72 60 61 60 70 60 88 50 42 53 54 0a 00 00 .ar`a`p`.PBST... e740: 5b 23 5e 5e 2f 04 50 43 49 30 4c 50 43 30 45 43 [#^^/.PCI0LPC0EC e750: 30 5f 4d 55 54 30 ff ff 70 5e 5e 2f 04 50 43 49 0_MUT0..p^^/.PCI e760: 30 4c 50 43 30 45 43 30 5f 43 41 50 30 88 50 42 0LPC0EC0_CAP0.PB e770: 53 54 0a 02 00 70 5e 5e 2f 04 50 43 49 30 4c 50 ST...p^^/.PCI0LP e780: 43 30 45 43 30 5f 56 4f 54 30 88 50 42 53 54 0a C0EC0_VOT0.PBST. e790: 03 00 5b 27 5e 5e 2f 04 50 43 49 30 4c 50 43 30 ..['^^/.PCI0LPC0 e7a0: 45 43 30 5f 4d 55 54 30 5b 23 5e 5e 2f 04 50 43 EC0_MUT0[#^^/.PC e7b0: 49 30 4c 50 43 30 45 43 30 5f 4d 55 54 30 ff ff I0LPC0EC0_MUT0.. e7c0: 70 5e 5e 2f 04 50 43 49 30 4c 50 43 30 45 43 30 p^^/.PCI0LPC0EC0 e7d0: 5f 43 52 54 30 60 5b 27 5e 5e 2f 04 50 43 49 30 _CRT0`['^^/.PCI0 e7e0: 4c 50 43 30 45 43 30 5f 4d 55 54 30 a0 07 93 60 LPC0EC0_MUT0...` e7f0: 0a 00 75 60 a1 2c a0 10 50 57 52 53 a0 0a 7b 60 ..u`.,..PWRS..{` e800: 0b 00 80 00 70 ff 60 a1 19 a0 12 7b 60 0b 00 80 ....p.`....{`... e810: 00 74 0a 00 60 60 7b 60 0b ff ff 60 a1 04 70 ff .t..``{`...`..p. e820: 60 70 60 88 50 42 53 54 0a 01 00 a4 50 42 53 54 `p`.PBST....PBST e830: 5b 82 41 12 4c 49 44 5f 08 5f 48 49 44 0c 41 d0 [.A.LID_._HID.A. e840: 0c 0d 08 5f 50 52 57 12 06 02 0a 0a 0a 03 14 48 ..._PRW........H e850: 09 5f 50 53 57 01 a0 48 04 68 5b 23 5e 5e 2f 04 ._PSW..H.h[#^^/. e860: 50 43 49 30 4c 50 43 30 45 43 30 5f 4d 55 54 30 PCI0LPC0EC0_MUT0 e870: ff ff 70 0a 02 5e 5e 2f 04 50 43 49 30 4c 50 43 ..p..^^/.PCI0LPC e880: 30 45 43 30 5f 57 4b 45 56 5b 27 5e 5e 2f 04 50 0EC0_WKEV['^^/.P e890: 43 49 30 4c 50 43 30 45 43 30 5f 4d 55 54 30 a1 CI0LPC0EC0_MUT0. e8a0: 47 04 5b 23 5e 5e 2f 04 50 43 49 30 4c 50 43 30 G.[#^^/.PCI0LPC0 e8b0: 45 43 30 5f 4d 55 54 30 ff ff 70 0a 00 5e 5e 2f EC0_MUT0..p..^^/ e8c0: 04 50 43 49 30 4c 50 43 30 45 43 30 5f 57 4b 45 .PCI0LPC0EC0_WKE e8d0: 56 5b 27 5e 5e 2f 04 50 43 49 30 4c 50 43 30 45 V['^^/.PCI0LPC0E e8e0: 43 30 5f 4d 55 54 30 14 4b 06 5f 4c 49 44 00 a0 C0_MUT0.K._LID.. e8f0: 0f 93 45 43 4f 4e 0a 00 70 0a 01 4c 49 44 53 a1 ..ECON..p..LIDS. e900: 4e 04 5b 23 5e 5e 2f 04 50 43 49 30 4c 50 43 30 N.[#^^/.PCI0LPC0 e910: 45 43 30 5f 4d 55 54 30 ff ff 70 5e 5e 2f 04 50 EC0_MUT0..p^^/.P e920: 43 49 30 4c 50 43 30 45 43 30 5f 4c 49 44 41 60 CI0LPC0EC0_LIDA` e930: 5b 27 5e 5e 2f 04 50 43 49 30 4c 50 43 30 45 43 ['^^/.PCI0LPC0EC e940: 30 5f 4d 55 54 30 7f 60 0a 01 4c 49 44 53 a4 4c 0_MUT0.`..LIDS.L e950: 49 44 53 5b 82 0f 53 4c 50 42 08 5f 48 49 44 0c IDS[..SLPB._HID. e960: 41 d0 0c 0e 10 4d 05 5c 00 08 48 50 44 54 12 3e A....M.\..HPDT.> e970: 09 0d 4c 45 47 41 43 59 48 50 00 0c 00 00 00 80 ..LEGACYHP...... e980: 0c 00 00 00 80 0d 4e 41 54 49 56 45 48 50 00 0c ......NATIVEHP.. e990: 00 00 00 80 0c 00 00 00 80 0d 54 48 45 52 4d 41 ..........THERMA e9a0: 4c 58 00 0c 00 00 00 80 0c 00 00 00 80 08 44 44 LX............DD e9b0: 42 30 0a 00 08 44 44 42 31 0a 00 08 44 44 42 32 B0...DDB1...DDB2 e9c0: 0a 00 10 45 7e 5f 47 50 45 14 16 54 52 49 47 00 ...E~_GPE..TRIG. e9d0: 54 52 49 45 54 52 49 43 54 52 49 5a 54 52 49 42 TRIETRICTRIZTRIB e9e0: 14 4d 04 54 52 49 42 00 a0 45 04 5c 2f 04 5f 53 .M.TRIB..E.\/._S e9f0: 42 5f 50 43 49 30 53 4d 42 5f 50 30 37 49 70 0a B_PCI0SMB_P07Ip. ea00: 00 5c 2f 04 5f 53 42 5f 50 43 49 30 53 4d 42 5f .\/._SB_PCI0SMB_ ea10: 50 30 37 4f 5b 22 0a 64 70 0a 01 5c 2f 04 5f 53 P07O[".dp..\/._S ea20: 42 5f 50 43 49 30 53 4d 42 5f 50 30 37 4f 14 45 B_PCI0SMB_P07O.E ea30: 04 5f 4c 31 43 00 70 0b ff ff 61 70 5c 2f 04 5f ._L1C.p...ap\/._ ea40: 53 42 5f 50 43 49 30 53 4d 42 5f 4d 49 4e 5f 62 SB_PCI0SMB_MIN_b ea50: 79 62 0a 08 61 70 5c 2f 04 5f 53 42 5f 50 43 49 yb..ap\/._SB_PCI ea60: 30 53 4d 42 5f 53 45 43 5f 62 7d 61 62 61 70 61 0SMB_SEC_b}abapa ea70: 50 38 30 48 14 49 0a 5f 4c 30 38 00 86 5c 2f 03 P80H.I._L08..\/. ea80: 5f 53 42 5f 50 43 49 30 50 42 32 5f 0a 02 86 5c _SB_PCI0PB2_...\ ea90: 2f 03 5f 53 42 5f 50 43 49 30 50 42 34 5f 0a 02 /._SB_PCI0PB4_.. eaa0: 86 5c 2f 03 5f 53 42 5f 50 43 49 30 50 42 35 5f .\/._SB_PCI0PB5_ eab0: 0a 02 86 5c 2f 03 5f 53 42 5f 50 43 49 30 50 42 ...\/._SB_PCI0PB eac0: 36 5f 0a 02 86 5c 2f 03 5f 53 42 5f 50 43 49 30 6_...\/._SB_PCI0 ead0: 50 42 37 5f 0a 02 86 5c 2f 03 5f 53 42 5f 50 43 PB7_...\/._SB_PC eae0: 49 30 53 50 42 30 0a 02 86 5c 2f 03 5f 53 42 5f I0SPB0...\/._SB_ eaf0: 50 43 49 30 53 50 42 31 0a 02 86 5c 2f 03 5f 53 PCI0SPB1...\/._S eb00: 42 5f 50 43 49 30 53 50 42 32 0a 02 86 5c 2f 03 B_PCI0SPB2...\/. eb10: 5f 53 42 5f 50 43 49 30 53 50 42 33 0a 02 14 49 _SB_PCI0SPB3...I eb20: 0a 5f 4c 31 38 00 86 5c 2f 03 5f 53 42 5f 50 43 ._L18..\/._SB_PC eb30: 49 30 4f 48 43 31 0a 02 86 5c 2f 03 5f 53 42 5f I0OHC1...\/._SB_ eb40: 50 43 49 30 4f 48 43 32 0a 02 86 5c 2f 03 5f 53 PCI0OHC2...\/._S eb50: 42 5f 50 43 49 30 4f 48 43 33 0a 02 86 5c 2f 03 B_PCI0OHC3...\/. eb60: 5f 53 42 5f 50 43 49 30 4f 48 43 34 0a 02 86 5c _SB_PCI0OHC4...\ eb70: 2f 03 5f 53 42 5f 50 43 49 30 45 48 43 31 0a 02 /._SB_PCI0EHC1.. eb80: 86 5c 2f 03 5f 53 42 5f 50 43 49 30 45 48 43 32 .\/._SB_PCI0EHC2 eb90: 0a 02 86 5c 2f 03 5f 53 42 5f 50 43 49 30 45 48 ...\/._SB_PCI0EH eba0: 43 33 0a 02 86 5c 2f 03 5f 53 42 5f 50 43 49 30 C3...\/._SB_PCI0 ebb0: 58 48 43 31 0a 02 86 5c 2f 03 5f 53 42 5f 50 43 XHC1...\/._SB_PC ebc0: 49 30 58 48 43 32 0a 02 14 2f 54 52 49 43 00 70 I0XHC2.../TRIC.p ebd0: 80 5c 2f 04 5f 53 42 5f 50 43 49 30 53 4d 42 5f .\/._SB_PCI0SMB_ ebe0: 47 45 31 35 00 5c 2f 04 5f 53 42 5f 50 43 49 30 GE15.\/._SB_PCI0 ebf0: 53 4d 42 5f 45 31 35 43 14 2f 54 52 49 45 00 70 SMB_E15C./TRIE.p ec00: 80 5c 2f 04 5f 53 42 5f 50 43 49 30 53 4d 42 5f .\/._SB_PCI0SMB_ ec10: 47 45 30 35 00 5c 2f 04 5f 53 42 5f 50 43 49 30 GE05.\/._SB_PCI0 ec20: 53 4d 42 5f 45 30 35 43 14 47 0c 5f 4c 30 35 00 SMB_E05C.G._L05. ec30: 5b 22 0a c8 a0 4b 05 5c 2f 04 5f 53 42 5f 50 43 ["...K.\/._SB_PC ec40: 49 30 53 4d 42 5f 45 30 35 43 a0 45 04 5c 2f 04 I0SMB_E05C.E.\/. ec50: 5f 53 42 5f 50 43 49 30 53 4d 42 5f 47 45 30 35 _SB_PCI0SMB_GE05 ec60: 5c 2f 04 5f 53 42 5f 50 43 49 30 53 50 42 30 47 \/._SB_PCI0SPB0G ec70: 48 50 53 5c 2f 04 5f 53 42 5f 50 43 49 30 53 4d HPS\/._SB_PCI0SM ec80: 42 5f 47 45 30 35 0a 00 70 0b 05 0f 50 38 30 48 B_GE05..p...P80H ec90: a1 49 04 a0 46 04 92 5c 2f 04 5f 53 42 5f 50 43 .I..F..\/._SB_PC eca0: 49 30 53 4d 42 5f 47 45 30 35 5c 2f 04 5f 53 42 I0SMB_GE05\/._SB ecb0: 5f 50 43 49 30 53 50 42 30 47 48 50 53 5c 2f 04 _PCI0SPB0GHPS\/. ecc0: 5f 53 42 5f 50 43 49 30 53 4d 42 5f 47 45 30 35 _SB_PCI0SMB_GE05 ecd0: 0a 00 70 0b 05 1f 50 38 30 48 54 52 49 45 86 5c ..p...P80HTRIE.\ ece0: 2f 03 5f 53 42 5f 50 43 49 30 53 50 42 30 0a 01 /._SB_PCI0SPB0.. ecf0: 08 57 4c 41 4e 0a 00 08 57 4c 53 54 0a 01 14 4f .WLAN...WLST...O ed00: 05 5f 4c 30 39 00 70 57 4c 53 54 60 a0 14 93 60 ._L09.pWLST`...` ed10: 0a 01 70 0a 00 57 4c 53 54 70 0b 34 12 50 38 30 ..p..WLSTp.4.P80 ed20: 48 a0 14 93 60 0a 00 70 0a 01 57 4c 53 54 70 0b H...`..p..WLSTp. ed30: 21 43 50 38 30 48 57 4c 45 4e 86 5c 2f 03 5f 53 !CP80HWLEN.\/._S ed40: 42 5f 50 43 49 30 50 42 37 5f 0a 00 86 5c 2f 03 B_PCI0PB7_...\/. ed50: 5f 53 42 5f 50 43 49 30 53 50 42 32 0a 00 14 4f _SB_PCI0SPB2...O ed60: 1f 57 4c 45 4e 00 70 57 4c 53 54 60 70 57 4c 41 .WLEN.pWLST`pWLA ed70: 4e 61 70 0a 00 5c 2f 04 5f 53 42 5f 50 43 49 30 Nap..\/._SB_PCI0 ed80: 53 4d 42 5f 50 30 37 45 70 0a 00 5c 2f 04 5f 53 SMB_P07Ep..\/._S ed90: 42 5f 50 43 49 30 53 4d 42 5f 50 30 44 45 70 0a B_PCI0SMB_P0DEp. eda0: 00 5c 2f 04 5f 53 42 5f 50 43 49 30 53 4d 42 5f .\/._SB_PCI0SMB_ edb0: 50 30 45 45 70 0a 00 5c 2f 04 5f 53 42 5f 50 43 P0EEp..\/._SB_PC edc0: 49 30 53 4d 42 5f 50 42 34 45 70 0a 00 5c 2f 04 I0SMB_PB4Ep..\/. edd0: 5f 53 42 5f 50 43 49 30 53 4d 42 5f 50 43 37 45 _SB_PCI0SMB_PC7E ede0: a0 46 0c 93 60 0a 01 a0 4d 07 93 61 0a 01 70 0a .F..`...M..a..p. edf0: 00 5c 2f 04 5f 53 42 5f 50 43 49 30 53 4d 42 5f .\/._SB_PCI0SMB_ ee00: 50 42 34 4f 70 0a 00 5c 2f 04 5f 53 42 5f 50 43 PB4Op..\/._SB_PC ee10: 49 30 53 4d 42 5f 50 43 37 4f 5c 2f 04 5f 53 42 I0SMB_PC7O\/._SB ee20: 5f 50 43 49 30 50 42 37 5f 58 50 4c 50 0a 01 5b _PCI0PB7_XPLP..[ ee30: 22 0a 64 5b 22 0a 64 5c 2f 03 5f 53 42 5f 50 43 ".d[".d\/._SB_PC ee40: 49 30 58 50 54 52 0a 07 0a 01 5c 2f 04 5f 53 42 I0XPTR....\/._SB ee50: 5f 50 43 49 30 53 50 42 32 47 48 50 53 0a 00 0a _PCI0SPB2GHPS... ee60: 02 5b 22 0a 14 70 0a 01 5c 2f 04 5f 53 42 5f 50 .["..p..\/._SB_P ee70: 43 49 30 53 4d 42 5f 50 30 44 4f 70 0a 01 5c 2f CI0SMB_P0DOp..\/ ee80: 04 5f 53 42 5f 50 43 49 30 53 4d 42 5f 50 30 45 ._SB_PCI0SMB_P0E ee90: 4f 70 0a 01 5c 2f 04 5f 53 42 5f 50 43 49 30 53 Op..\/._SB_PCI0S eea0: 4d 42 5f 50 30 37 4f a1 46 0b 70 0a 00 5c 2f 04 MB_P07O.F.p..\/. eeb0: 5f 53 42 5f 50 43 49 30 53 4d 42 5f 50 30 44 4f _SB_PCI0SMB_P0DO eec0: 70 0a 00 5c 2f 04 5f 53 42 5f 50 43 49 30 53 4d p..\/._SB_PCI0SM eed0: 42 5f 50 30 45 4f 70 0a 00 5c 2f 04 5f 53 42 5f B_P0EOp..\/._SB_ eee0: 50 43 49 30 53 4d 42 5f 50 30 37 4f a0 41 07 93 PCI0SMB_P07O.A.. eef0: 61 0a 01 5c 2f 03 5f 53 42 5f 50 43 49 30 58 50 a..\/._SB_PCI0XP ef00: 54 52 0a 07 0a 00 5c 2f 04 5f 53 42 5f 50 43 49 TR....\/._SB_PCI ef10: 30 53 50 42 32 47 48 50 53 0a 01 0a 02 5c 2f 04 0SPB2GHPS....\/. ef20: 5f 53 42 5f 50 43 49 30 50 42 37 5f 58 50 4c 50 _SB_PCI0PB7_XPLP ef30: 0a 00 70 0a 01 5c 2f 04 5f 53 42 5f 50 43 49 30 ..p..\/._SB_PCI0 ef40: 53 4d 42 5f 50 42 34 4f 70 0a 01 5c 2f 04 5f 53 SMB_PB4Op..\/._S ef50: 42 5f 50 43 49 30 53 4d 42 5f 50 43 37 4f 14 2f B_PCI0SMB_PC7O./ ef60: 54 52 49 5a 00 70 80 5c 2f 04 5f 53 42 5f 50 43 TRIZ.p.\/._SB_PC ef70: 49 30 53 4d 42 5f 47 45 31 36 00 5c 2f 04 5f 53 I0SMB_GE16.\/._S ef80: 42 5f 50 43 49 30 53 4d 42 5f 45 31 36 43 14 49 B_PCI0SMB_E16C.I ef90: 21 5f 4c 31 30 00 a0 41 21 93 5c 2f 04 5f 53 42 !_L10..A!.\/._SB efa0: 5f 50 43 49 30 41 46 44 5f 4f 44 5a 50 0c 01 00 _PCI0AFD_ODZP... efb0: 00 80 a0 4c 10 5c 2f 04 5f 53 42 5f 50 43 49 30 ...L.\/._SB_PCI0 efc0: 53 4d 42 5f 45 31 36 43 5b 22 0a 14 a0 42 0f 5c SMB_E16C["...B.\ efd0: 2f 04 5f 53 42 5f 50 43 49 30 53 4d 42 5f 45 31 /._SB_PCI0SMB_E1 efe0: 36 43 a0 4c 0d 5c 2f 04 5f 53 42 5f 50 43 49 30 6C.L.\/._SB_PCI0 eff0: 53 4d 42 5f 47 45 31 36 70 00 5c 2f 04 5f 53 42 SMB_GE16p.\/._SB f000: 5f 50 43 49 30 53 4d 42 5f 45 31 36 43 a0 47 04 _PCI0SMB_E16C.G. f010: 91 93 5c 2f 04 5f 53 42 5f 50 43 49 30 53 41 54 ..\/._SB_PCI0SAT f020: 41 56 49 44 49 0c 22 10 00 78 93 5c 2f 04 5f 53 AVIDI."..x.\/._S f030: 42 5f 50 43 49 30 53 41 54 41 56 49 44 49 0c 22 B_PCI0SATAVIDI." f040: 10 01 78 86 5c 2f 03 5f 53 42 5f 50 43 49 30 41 ..x.\/._SB_PCI0A f050: 46 44 5f 0a 80 a0 41 06 93 5c 2f 04 5f 53 42 5f FD_...A..\/._SB_ f060: 50 43 49 30 53 41 54 41 56 49 44 49 0c 22 10 04 PCI0SATAVIDI.".. f070: 78 a0 2d 93 5c 2f 04 5f 53 42 5f 50 43 49 30 41 x.-.\/._SB_PCI0A f080: 46 44 5f 48 44 44 30 0a 01 86 5c 2f 04 5f 53 42 FD_HDD0...\/._SB f090: 5f 50 43 49 30 53 41 54 41 4f 44 44 5a 0a 80 a1 _PCI0SATAODDZ... f0a0: 17 86 5c 2f 04 5f 53 42 5f 50 43 49 30 53 41 54 ..\/._SB_PCI0SAT f0b0: 41 4f 44 44 5a 0a 80 70 0b 15 df 50 38 30 48 a1 AODDZ..p...P80H. f0c0: 44 0e 5b 22 0a 14 a0 4d 0d 92 5c 2f 04 5f 53 42 D.["...M..\/._SB f0d0: 5f 50 43 49 30 53 4d 42 5f 47 45 31 36 70 01 5c _PCI0SMB_GE16p.\ f0e0: 2f 04 5f 53 42 5f 50 43 49 30 53 4d 42 5f 45 31 /._SB_PCI0SMB_E1 f0f0: 36 43 a0 47 04 91 93 5c 2f 04 5f 53 42 5f 50 43 6C.G...\/._SB_PC f100: 49 30 53 41 54 41 56 49 44 49 0c 22 10 00 78 93 I0SATAVIDI."..x. f110: 5c 2f 04 5f 53 42 5f 50 43 49 30 53 41 54 41 56 \/._SB_PCI0SATAV f120: 49 44 49 0c 22 10 01 78 86 5c 2f 03 5f 53 42 5f IDI."..x.\/._SB_ f130: 50 43 49 30 41 46 44 5f 0a 80 a0 41 06 93 5c 2f PCI0AFD_...A..\/ f140: 04 5f 53 42 5f 50 43 49 30 53 41 54 41 56 49 44 ._SB_PCI0SATAVID f150: 49 0c 22 10 04 78 a0 2d 93 5c 2f 04 5f 53 42 5f I."..x.-.\/._SB_ f160: 50 43 49 30 41 46 44 5f 48 44 44 30 0a 01 86 5c PCI0AFD_HDD0...\ f170: 2f 04 5f 53 42 5f 50 43 49 30 53 41 54 41 4f 44 /._SB_PCI0SATAOD f180: 44 5a 0a 80 a1 17 86 5c 2f 04 5f 53 42 5f 50 43 DZ.....\/._SB_PC f190: 49 30 53 41 54 41 4f 44 44 5a 0a 80 70 0b 14 df I0SATAODDZ..p... f1a0: 50 38 30 48 54 52 49 5a 10 4b 47 2f 03 5f 53 42 P80HTRIZ.KG/._SB f1b0: 5f 50 43 49 30 53 4d 42 5f 5b 01 53 42 58 30 00 _PCI0SMB_[.SBX0. f1c0: 5b 80 53 4d 42 30 01 0b 00 0b 0a 10 5b 81 2e 53 [.SMB0......[..S f1d0: 4d 42 30 01 48 53 54 30 08 53 4c 56 30 08 43 4e MB0.HST0.SLV0.CN f1e0: 54 30 08 43 4d 44 30 08 41 44 44 30 08 44 54 30 T0.CMD0.ADD0.DT0 f1f0: 30 08 44 54 31 30 08 42 4c 4b 30 08 14 42 06 57 0.DT10.BLK0..B.W f200: 42 44 30 01 70 68 60 70 0a 00 62 70 48 53 54 30 BD0.ph`p..bpHST0 f210: 63 70 7b 63 0a 80 00 61 a2 2c 92 93 61 0a 80 a0 cp{c...a.,..a... f220: 0d 95 60 0a 0a 70 0a 18 62 70 0a 00 61 a1 17 5b ..`..p..bp..a..[ f230: 22 0a 0a 74 60 0a 0a 60 70 48 53 54 30 63 70 7b "..t`..`pHST0cp{ f240: 63 0a 80 00 61 a0 17 92 93 62 0a 18 70 7b 48 53 c...a....b..p{HS f250: 54 30 0a 1c 00 61 a0 06 61 70 0a 07 62 a4 62 14 T0...a..ap..b.b. f260: 4c 06 57 54 43 30 01 70 68 60 70 0a 07 62 70 0a L.WTC0.ph`p..bp. f270: 01 61 a2 4a 04 93 61 0a 01 70 7b 48 53 54 30 0a .a.J..a..p{HST0. f280: 1d 00 63 a0 2f 92 93 63 0a 00 a0 1e 93 63 0a 01 ..c./..c.....c.. f290: a0 0d 95 60 0a 0a 70 0a 18 62 70 0a 00 61 a1 0a ...`..p..bp..a.. f2a0: 5b 22 0a 0a 74 60 0a 0a 60 a1 09 70 0a 07 62 70 ["..t`..`..p..bp f2b0: 0a 00 61 a1 09 70 0a 00 62 70 0a 00 61 70 7d 48 ..a..p..bp..ap}H f2c0: 53 54 30 0a 1f 00 48 53 54 30 a4 62 14 46 1f 53 ST0...HST0.b.F.S f2d0: 42 52 30 03 70 12 08 22 0a 07 0a 00 0a 00 60 70 BR0.p.."......`p f2e0: 7b 68 0a 5f 00 64 a0 2c 92 93 64 0a 03 a0 25 92 {h._.d.,..d...%. f2f0: 93 64 0a 05 a0 1e 92 93 64 0a 07 a0 17 92 93 64 .d......d......d f300: 0a 09 a0 10 92 93 64 0a 0b 70 0a 19 88 60 0a 00 ......d..p...`.. f310: 00 a4 60 a0 4d 1a 93 5b 23 53 42 58 30 ff ff 0a ..`.M..[#SBX0... f320: 00 70 7d 79 69 0a 01 00 0a 01 00 41 44 44 30 70 .p}yi......ADD0p f330: 6a 43 4d 44 30 70 7d 48 53 54 30 0a 1f 00 48 53 jCMD0p}HST0...HS f340: 54 30 70 7b 68 0a a0 00 61 70 7d 7b 43 4e 54 30 T0p{h...ap}{CNT0 f350: 0a 5f 00 61 00 43 4e 54 30 a0 16 93 64 0a 03 70 ._.a.CNT0...d..p f360: 7d 7b 43 4e 54 30 0a a0 00 0a 40 00 43 4e 54 30 }{CNT0....@.CNT0 f370: a0 16 93 64 0a 05 70 7d 7b 43 4e 54 30 0a a0 00 ...d..p}{CNT0... f380: 0a 44 00 43 4e 54 30 a0 16 93 64 0a 07 70 7d 7b .D.CNT0...d..p}{ f390: 43 4e 54 30 0a a0 00 0a 48 00 43 4e 54 30 a0 16 CNT0....H.CNT0.. f3a0: 93 64 0a 09 70 7d 7b 43 4e 54 30 0a a0 00 0a 4c .d..p}{CNT0....L f3b0: 00 43 4e 54 30 a0 2a 93 64 0a 0b 70 7d 48 53 54 .CNT0.*.d..p}HST f3c0: 30 0a 80 00 48 53 54 30 70 0a 00 44 54 30 30 70 0...HST0p..DT00p f3d0: 7d 7b 43 4e 54 30 0a a0 00 0a 54 00 43 4e 54 30 }{CNT0....T.CNT0 f3e0: 70 57 54 43 30 0b e8 03 61 70 61 88 60 0a 00 00 pWTC0...apa.`... f3f0: a0 4d 0b 93 61 0a 00 a0 17 93 64 0a 05 70 0a 01 .M..a.....d..p.. f400: 88 60 0a 01 00 70 44 54 30 30 88 60 0a 02 00 a0 .`...pDT00.`.... f410: 17 93 64 0a 07 70 0a 01 88 60 0a 01 00 70 44 54 ..d..p...`...pDT f420: 30 30 88 60 0a 02 00 a0 26 93 64 0a 09 70 0a 02 00.`....&.d..p.. f430: 88 60 0a 01 00 70 44 54 31 30 62 79 62 0a 08 62 .`...pDT10byb..b f440: 72 62 44 54 30 30 62 70 62 88 60 0a 02 00 a0 4f rbDT00bpb.`....O f450: 05 93 64 0a 0b 70 57 42 44 30 0b f4 01 61 a0 0d ..d..pWBD0...a.. f460: 92 93 61 0a 00 70 61 88 60 0a 00 00 a1 41 04 70 ..a..pa.`....A.p f470: 44 54 30 30 88 60 0a 01 00 70 44 54 30 30 61 70 DT00.`...pDT00ap f480: 43 4e 54 30 62 70 0a 00 62 a2 17 95 62 61 72 0a CNT0bp..b...bar. f490: 02 62 63 70 42 4c 4b 30 88 60 63 00 72 0a 01 62 .bcpBLK0.`c.r..b f4a0: 62 70 7d 48 53 54 30 0a 80 00 48 53 54 30 70 7b bp}HST0...HST0p{ f4b0: 43 4e 54 30 0a 5f 00 43 4e 54 30 5b 27 53 42 58 CNT0._.CNT0['SBX f4c0: 30 a4 60 14 40 16 53 42 57 30 05 70 12 04 01 0a 0.`.@.SBW0.p.... f4d0: 07 60 70 7b 68 0a 5f 00 64 a0 2c 92 93 64 0a 02 .`p{h._.d.,..d.. f4e0: a0 25 92 93 64 0a 04 a0 1e 92 93 64 0a 06 a0 17 .%..d......d.... f4f0: 92 93 64 0a 08 a0 10 92 93 64 0a 0a 70 0a 19 88 ..d......d..p... f500: 60 0a 00 00 a4 60 a0 4b 11 93 5b 23 53 42 58 30 `....`.K..[#SBX0 f510: ff ff 0a 00 70 79 69 0a 01 00 41 44 44 30 70 6a ....pyi...ADD0pj f520: 43 4d 44 30 70 7d 48 53 54 30 0a 1f 00 48 53 54 CMD0p}HST0...HST f530: 30 70 7b 68 0a a0 00 61 70 7d 7b 43 4e 54 30 0a 0p{h...ap}{CNT0. f540: 5f 00 61 00 43 4e 54 30 a0 16 93 64 0a 02 70 7d _.a.CNT0...d..p} f550: 7b 43 4e 54 30 0a a0 00 0a 40 00 43 4e 54 30 a0 {CNT0....@.CNT0. f560: 16 93 64 0a 04 70 7d 7b 43 4e 54 30 0a a0 00 0a ..d..p}{CNT0.... f570: 44 00 43 4e 54 30 a0 1c 93 64 0a 06 70 6c 44 54 D.CNT0...d..plDT f580: 30 30 70 7d 7b 43 4e 54 30 0a a0 00 0a 48 00 43 00p}{CNT0....H.C f590: 4e 54 30 a0 26 93 64 0a 08 7b 6c 0a ff 44 54 30 NT0.&.d..{l..DT0 f5a0: 30 7a 6c 0a 08 44 54 31 30 70 7d 7b 43 4e 54 30 0zl..DT10p}{CNT0 f5b0: 0a a0 00 0a 4c 00 43 4e 54 30 a0 47 04 93 64 0a ....L.CNT0.G..d. f5c0: 0a 70 7d 48 53 54 30 0a 80 00 48 53 54 30 70 43 .p}HST0...HST0pC f5d0: 4e 54 30 61 70 6b 44 54 30 30 70 0a 00 62 a2 12 NT0apkDT00p..b.. f5e0: 95 62 6b 70 88 6c 62 00 42 4c 4b 30 72 0a 01 62 .bkp.lb.BLK0r..b f5f0: 62 70 7d 7b 43 4e 54 30 0a a0 00 0a 54 00 43 4e bp}{CNT0....T.CN f600: 54 30 70 57 54 43 30 0b e8 03 88 60 0a 00 00 70 T0pWTC0....`...p f610: 7b 43 4e 54 30 0a 5f 00 43 4e 54 30 5b 27 53 42 {CNT0._.CNT0['SB f620: 58 30 a4 60 10 4c 11 5f 54 5a 5f 5b 80 53 54 53 X0.`.L._TZ_[.STS f630: 49 00 0c e8 31 0c f8 0a 08 5b 81 12 53 54 53 49 I...1....[..STSI f640: 03 54 53 49 49 08 00 18 54 53 49 44 08 5b 86 4a .TSII...TSID.[.J f650: 07 54 53 49 49 54 53 49 44 01 00 08 54 53 30 31 .TSIITSID...TS01 f660: 08 54 53 30 32 08 54 53 30 33 08 54 53 30 34 08 .TS02.TS03.TS04. f670: 54 53 30 35 08 54 53 30 36 08 54 53 30 37 08 54 TS05.TS06.TS07.T f680: 53 30 38 08 54 53 30 39 08 00 30 54 53 31 30 08 S08.TS09..0TS10. f690: 54 53 31 31 08 54 53 31 32 08 54 53 31 33 08 54 TS11.TS12.TS13.T f6a0: 53 31 34 08 00 48 06 54 53 32 32 08 00 48 07 54 S14..H.TS22..H.T f6b0: 53 33 32 08 00 40 46 54 53 42 46 08 00 40 1f 54 S32..@FTSBF..@.T f6c0: 53 46 45 08 54 53 46 46 08 08 5a 30 43 54 0a 73 SFE.TSFF..Z0CT.s f6d0: 14 48 04 47 5a 58 54 08 7d 54 53 30 33 0a 40 54 .H.GZXT.}TS03.@T f6e0: 53 30 39 70 54 53 30 31 61 70 54 53 31 30 62 7b S09pTS01apTS10b{ f6f0: 54 53 30 33 0a bf 54 53 30 39 72 77 0b 00 01 61 TS03..TS09rw...a f700: 00 62 63 7a 63 0a 05 63 72 0b ac 0a 78 77 63 0a .bczc..cr...xwc. f710: 7d 00 0a 64 00 00 66 a4 66 5b 85 26 54 48 5a 30 }..d..f.f[.&THZ0 f720: 14 14 5f 43 52 54 08 a4 72 0b ac 0a 77 5a 30 43 .._CRT..r...wZ0C f730: 54 0a 0a 00 00 14 0b 5f 54 4d 50 08 a4 47 5a 58 T......_TMP..GZX f740: 54 T FACS @ 0x00000000 0000: 46 41 43 53 40 00 00 00 00 a2 00 00 00 00 00 00 FACS@........... 0010: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0020: 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0030: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0030: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ FACP @ 0x00000000 0000: 46 41 43 50 f4 00 00 00 04 2f 44 45 4c 4c 20 20 FACP...../DELL 0010: 51 41 30 39 20 20 20 00 02 00 00 00 50 54 4c 20 QA09 .....PTL 0020: 02 00 00 00 00 f0 32 5e 00 f0 3a 5e 01 02 09 00 ......2^..:^.... 0030: b0 00 00 00 a0 a1 00 00 00 08 00 00 00 00 00 00 ................ 0040: 04 08 00 00 00 00 00 00 00 00 00 00 08 08 00 00 ................ 0050: 20 08 00 00 00 00 00 00 04 02 00 04 08 00 00 00 ............... 0060: 65 00 e9 03 00 00 00 00 01 00 0d 00 00 11 00 00 e............... 0070: ad 05 00 00 01 08 00 01 64 00 00 00 00 00 00 00 ........d....... 0080: fe 00 00 00 00 f0 32 5e 00 00 00 00 00 f0 3a 5e ......2^......:^ 0090: 00 00 00 00 01 20 00 02 00 08 00 00 00 00 00 00 ..... .......... 00a0: 01 00 00 02 00 00 00 00 00 00 00 00 01 10 00 02 ................ 00b0: 04 08 00 00 00 00 00 00 01 00 00 02 00 00 00 00 ................ 00c0: 00 00 00 00 01 00 00 01 00 00 00 00 00 00 00 00 ................ 00d0: 01 20 00 03 08 08 00 00 00 00 00 00 01 40 00 03 . ...........@.. 00e0: 20 08 00 00 00 00 00 00 01 00 00 03 00 00 00 00 ............... 00f0: 00 00 00 00 .... SLIC @ 0x00000000 0000: 53 4c 49 43 76 01 00 00 01 23 44 45 4c 4c 20 20 SLICv....#DELL 0010: 51 41 30 39 20 20 20 00 02 00 00 00 4c 4f 48 52 QA09 .....LOHR 0020: 01 00 00 00 00 00 00 00 9c 00 00 00 06 02 00 00 ................ 0030: 00 24 00 00 52 53 41 31 00 04 00 00 01 00 01 00 .$..RSA1........ 0040: 7f f6 c1 05 be 5c 57 63 a5 8a 68 f3 6e 8f 06 fa .....\Wc..h.n... 0050: af b4 9f 68 82 23 ec 50 40 5a 73 7f ec e4 07 cb ...h.#.P@Zs..... 0060: dc 25 1a 9c e3 e3 66 11 e0 a5 98 06 c5 80 0a fa .%....f......... 0070: 42 93 86 98 e7 d5 1b d4 d7 3a a4 0b ee e2 7d be B........:....}. 0080: 5f 5b 15 0c ab d0 21 de bf e9 b5 6e a4 57 b9 8c _[....!....n.W.. 0090: 0c d2 ba 3a 69 30 76 94 71 a2 64 d7 4c d8 85 bf ...:i0v.q.d.L... 00a0: df a5 6a c8 dc 45 d5 4d 8c b8 8c 05 2f fc 2e 23 ..j..E.M..../..# 00b0: c4 29 c5 6f 3f 29 6c 6d 57 79 0e b6 75 ed 21 95 .).o?)lmWy..u.!. 00c0: 01 00 00 00 b6 00 00 00 00 00 02 00 44 45 4c 4c ............DELL 00d0: 20 20 51 41 30 39 20 20 20 00 57 49 4e 44 4f 57 QA09 .WINDOW 00e0: 53 20 01 00 02 00 00 00 00 00 00 00 00 00 00 00 S .............. 00f0: 00 00 00 00 00 00 33 b8 a7 56 40 af 02 b9 42 a8 ......3..V@...B. 0100: 07 7a d1 57 85 0f 88 e7 04 11 fb 35 34 14 60 b7 .z.W.......54.`. 0110: 78 82 53 7b 67 3b 40 3f 40 c1 01 84 cb 05 c5 30 x.S{g;@?@......0 0120: 7d 36 82 60 f1 24 2e 46 15 9f ce 5a 24 44 5f 7f }6.`.$.F...Z$D_. 0130: cf 5d b8 63 10 82 74 80 f7 7a f0 93 e2 21 2a af .].c..t..z...!*. 0140: 6a 00 e3 1e 1a 36 dc 1e bd 2b 11 08 35 cf 24 52 j....6...+..5.$R 0150: 22 d9 03 53 f2 6b 4b 13 ef 79 63 d9 5f a1 37 da "..S.kK..yc._.7. 0160: 61 87 6f dd c5 07 b4 3e 48 7d 61 48 49 fb 25 d3 a.o....>H}aHI.%. 0170: fc 2e e4 44 ef 38 ...D.8 HPET @ 0x00000000 0000: 48 50 45 54 38 00 00 00 01 b2 44 45 4c 4c 20 20 HPET8.....DELL 0010: 51 41 30 39 20 20 20 00 02 00 00 00 50 54 4c 20 QA09 .....PTL 0020: 02 00 00 00 10 82 53 43 00 08 00 00 00 00 d0 fe ......SC........ 0030: 00 00 00 00 02 14 00 00 ........ APIC @ 0x00000000 0000: 41 50 49 43 7a 00 00 00 02 69 44 45 4c 4c 20 20 APICz....iDELL 0010: 51 41 30 39 20 20 20 00 02 00 00 00 50 54 4c 20 QA09 .....PTL 0020: 02 00 00 00 00 00 e0 fe 01 00 00 00 00 08 00 00 ................ 0030: 01 00 00 00 00 08 01 01 01 00 00 00 00 08 02 02 ................ 0040: 00 00 00 00 00 08 03 03 00 00 00 00 01 0c 02 00 ................ 0050: 00 00 c0 fe 00 00 00 00 02 0a 00 00 02 00 00 00 ................ 0060: 00 00 04 06 00 05 00 01 04 06 01 05 00 01 04 06 ................ 0070: 02 05 00 01 04 06 03 05 00 01 .......... MCFG @ 0x00000000 0000: 4d 43 46 47 3c 00 00 00 01 9f 44 45 4c 4c 20 20 MCFG<.....DELL 0010: 51 41 30 39 20 20 20 00 02 00 00 00 50 54 4c 20 QA09 .....PTL 0020: 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 f8 ................ 0030: 00 00 00 00 00 00 00 3f 00 00 00 00 .......?.... SBST @ 0x00000000 0000: 53 42 53 54 30 00 00 00 01 c3 44 45 4c 4c 20 20 SBST0.....DELL 0010: 51 41 30 39 20 20 20 00 02 00 00 00 50 54 4c 20 QA09 .....PTL 0020: 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 0020: 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ UEFI1 @ 0x00000000 0000: 55 45 46 49 3e 00 00 00 01 0b 44 45 4c 4c 20 20 UEFI>.....DELL 0010: 51 41 30 39 20 20 20 00 02 00 00 00 50 54 4c 20 QA09 .....PTL 0020: 02 00 00 00 e8 63 95 d2 e1 cf 41 4d 8e 54 da 43 .....c....AM.T.C 0030: 22 fe de 5c 36 00 00 b0 30 5e 00 00 00 00 "..\6...0^.... UEFI2 @ 0x00000000 0000: 55 45 46 49 42 00 00 00 01 f0 50 54 4c 20 20 20 UEFIB.....PTL 0010: 43 4f 4d 42 55 46 00 00 01 00 00 00 50 54 4c 20 COMBUF......PTL 0020: 01 00 00 00 be 96 e8 15 df 0c e2 47 9b 97 a2 8a ...........G.... 0030: 39 8b c7 65 36 00 01 00 00 00 28 37 e0 5d 00 00 9..e6.....(7.].. 0040: 00 00 .. SSDT1 @ 0x00000000 0000: 53 53 44 54 26 07 00 00 01 f0 41 4d 44 20 20 20 SSDT&.....AMD 0010: 50 4f 57 45 52 4e 4f 57 01 00 00 00 41 4d 44 20 POWERNOW....AMD 0020: 01 00 00 00 10 40 38 5c 2e 5f 50 52 5f 43 30 30 .....@8\._PR_C00 0030: 30 08 5f 50 43 54 12 2c 02 11 14 0a 11 82 0c 00 0._PCT.,........ 0040: 7f 40 00 00 62 00 01 c0 00 00 00 00 79 00 11 14 .@..b.......y... 0050: 0a 11 82 0c 00 7f 40 00 00 00 00 00 00 00 00 00 ......@......... 0060: 00 79 00 08 5f 50 53 53 12 4a 0e 07 12 20 06 0c .y.._PSS.J... .. 0070: 6c 07 00 00 0c 46 23 00 00 0c 00 00 00 00 0c 00 l....F#......... 0080: 00 00 00 0c 00 00 00 00 0c 00 00 00 00 12 20 06 .............. . 0090: 0c 08 07 00 00 0c d0 20 00 00 0c 00 00 00 00 0c ....... ........ 00a0: 00 00 00 00 0c 01 00 00 00 0c 01 00 00 00 12 20 ............... 00b0: 06 0c 40 06 00 00 0c 14 1c 00 00 0c 00 00 00 00 ..@............. 00c0: 0c 00 00 00 00 0c 02 00 00 00 0c 02 00 00 00 12 ................ 00d0: 20 06 0c 78 05 00 00 0c b0 18 00 00 0c 00 00 00 ..x............ 00e0: 00 0c 00 00 00 00 0c 03 00 00 00 0c 03 00 00 00 ................ 00f0: 12 20 06 0c b0 04 00 00 0c c8 14 00 00 0c 00 00 . .............. 0100: 00 00 0c 00 00 00 00 0c 04 00 00 00 0c 04 00 00 ................ 0110: 00 12 20 06 0c e8 03 00 00 0c ad 12 00 00 0c 00 .. ............. 0120: 00 00 00 0c 00 00 00 00 0c 05 00 00 00 0c 05 00 ................ 0130: 00 00 12 20 06 0c 20 03 00 00 0c 9f 10 00 00 0c ... .. ......... 0140: 00 00 00 00 0c 00 00 00 00 0c 06 00 00 00 0c 06 ................ 0150: 00 00 00 08 58 50 53 53 12 4b 1f 07 12 47 04 08 ....XPSS.K...G.. 0160: 0c 6c 07 00 00 0c 46 23 00 00 0c 00 00 00 00 0c .l....F#........ 0170: 00 00 00 00 11 0b 0a 08 00 00 00 00 00 00 00 00 ................ 0180: 11 0b 0a 08 00 00 00 00 00 00 00 00 11 0b 0a 08 ................ 0190: 00 00 00 00 00 00 00 00 11 0b 0a 08 00 00 00 00 ................ 01a0: 00 00 00 00 12 47 04 08 0c 08 07 00 00 0c d0 20 .....G......... 01b0: 00 00 0c 00 00 00 00 0c 00 00 00 00 11 0b 0a 08 ................ 01c0: 01 00 00 00 00 00 00 00 11 0b 0a 08 01 00 00 00 ................ 01d0: 00 00 00 00 11 0b 0a 08 00 00 00 00 00 00 00 00 ................ 01e0: 11 0b 0a 08 00 00 00 00 00 00 00 00 12 47 04 08 .............G.. 01f0: 0c 40 06 00 00 0c 14 1c 00 00 0c 00 00 00 00 0c .@.............. 0200: 00 00 00 00 11 0b 0a 08 02 00 00 00 00 00 00 00 ................ 0210: 11 0b 0a 08 02 00 00 00 00 00 00 00 11 0b 0a 08 ................ 0220: 00 00 00 00 00 00 00 00 11 0b 0a 08 00 00 00 00 ................ 0230: 00 00 00 00 12 47 04 08 0c 78 05 00 00 0c b0 18 .....G...x...... 0240: 00 00 0c 00 00 00 00 0c 00 00 00 00 11 0b 0a 08 ................ 0250: 03 00 00 00 00 00 00 00 11 0b 0a 08 03 00 00 00 ................ 0260: 00 00 00 00 11 0b 0a 08 00 00 00 00 00 00 00 00 ................ 0270: 11 0b 0a 08 00 00 00 00 00 00 00 00 12 47 04 08 .............G.. 0280: 0c b0 04 00 00 0c c8 14 00 00 0c 00 00 00 00 0c ................ 0290: 00 00 00 00 11 0b 0a 08 04 00 00 00 00 00 00 00 ................ 02a0: 11 0b 0a 08 04 00 00 00 00 00 00 00 11 0b 0a 08 ................ 02b0: 00 00 00 00 00 00 00 00 11 0b 0a 08 00 00 00 00 ................ 02c0: 00 00 00 00 12 47 04 08 0c e8 03 00 00 0c ad 12 .....G.......... 02d0: 00 00 0c 00 00 00 00 0c 00 00 00 00 11 0b 0a 08 ................ 02e0: 05 00 00 00 00 00 00 00 11 0b 0a 08 05 00 00 00 ................ 02f0: 00 00 00 00 11 0b 0a 08 00 00 00 00 00 00 00 00 ................ 0300: 11 0b 0a 08 00 00 00 00 00 00 00 00 12 47 04 08 .............G.. 0310: 0c 20 03 00 00 0c 9f 10 00 00 0c 00 00 00 00 0c . .............. 0320: 00 00 00 00 11 0b 0a 08 06 00 00 00 00 00 00 00 ................ 0330: 11 0b 0a 08 06 00 00 00 00 00 00 00 11 0b 0a 08 ................ 0340: 00 00 00 00 00 00 00 00 11 0b 0a 08 00 00 00 00 ................ 0350: 00 00 00 00 08 5f 50 53 44 12 18 01 12 15 05 0a ....._PSD....... 0360: 05 0a 00 0c 00 00 00 00 0c fc 00 00 00 0c 02 00 ................ 0370: 00 00 08 5f 50 50 43 0a 00 08 5f 43 53 54 12 26 ..._PPC..._CST.& 0380: 02 0a 01 12 21 04 11 14 0a 11 82 0c 00 01 08 00 ....!........... 0390: 01 41 08 00 00 00 00 00 00 79 00 0a 02 0b 64 00 .A.......y....d. 03a0: 0c 00 00 00 00 10 40 38 5c 2e 5f 50 52 5f 43 30 ......@8\._PR_C0 03b0: 30 31 08 5f 50 43 54 12 2c 02 11 14 0a 11 82 0c 01._PCT.,....... 03c0: 00 7f 40 00 00 62 00 01 c0 00 00 00 00 79 00 11 ..@..b.......y.. 03d0: 14 0a 11 82 0c 00 7f 40 00 00 00 00 00 00 00 00 .......@........ 03e0: 00 00 79 00 08 5f 50 53 53 12 4a 0e 07 12 20 06 ..y.._PSS.J... . 03f0: 0c 6c 07 00 00 0c 46 23 00 00 0c 00 00 00 00 0c .l....F#........ 0400: 00 00 00 00 0c 00 00 00 00 0c 00 00 00 00 12 20 ............... 0410: 06 0c 08 07 00 00 0c d0 20 00 00 0c 00 00 00 00 ........ ....... 0420: 0c 00 00 00 00 0c 01 00 00 00 0c 01 00 00 00 12 ................ 0430: 20 06 0c 40 06 00 00 0c 14 1c 00 00 0c 00 00 00 ..@............ 0440: 00 0c 00 00 00 00 0c 02 00 00 00 0c 02 00 00 00 ................ 0450: 12 20 06 0c 78 05 00 00 0c b0 18 00 00 0c 00 00 . ..x........... 0460: 00 00 0c 00 00 00 00 0c 03 00 00 00 0c 03 00 00 ................ 0470: 00 12 20 06 0c b0 04 00 00 0c c8 14 00 00 0c 00 .. ............. 0480: 00 00 00 0c 00 00 00 00 0c 04 00 00 00 0c 04 00 ................ 0490: 00 00 12 20 06 0c e8 03 00 00 0c ad 12 00 00 0c ... ............ 04a0: 00 00 00 00 0c 00 00 00 00 0c 05 00 00 00 0c 05 ................ 04b0: 00 00 00 12 20 06 0c 20 03 00 00 0c 9f 10 00 00 .... .. ........ 04c0: 0c 00 00 00 00 0c 00 00 00 00 0c 06 00 00 00 0c ................ 04d0: 06 00 00 00 08 58 50 53 53 12 4b 1f 07 12 47 04 .....XPSS.K...G. 04e0: 08 0c 6c 07 00 00 0c 46 23 00 00 0c 00 00 00 00 ..l....F#....... 04f0: 0c 00 00 00 00 11 0b 0a 08 00 00 00 00 00 00 00 ................ 0500: 00 11 0b 0a 08 00 00 00 00 00 00 00 00 11 0b 0a ................ 0510: 08 00 00 00 00 00 00 00 00 11 0b 0a 08 00 00 00 ................ 0520: 00 00 00 00 00 12 47 04 08 0c 08 07 00 00 0c d0 ......G......... 0530: 20 00 00 0c 00 00 00 00 0c 00 00 00 00 11 0b 0a ............... 0540: 08 01 00 00 00 00 00 00 00 11 0b 0a 08 01 00 00 ................ 0550: 00 00 00 00 00 11 0b 0a 08 00 00 00 00 00 00 00 ................ 0560: 00 11 0b 0a 08 00 00 00 00 00 00 00 00 12 47 04 ..............G. 0570: 08 0c 40 06 00 00 0c 14 1c 00 00 0c 00 00 00 00 ..@............. 0580: 0c 00 00 00 00 11 0b 0a 08 02 00 00 00 00 00 00 ................ 0590: 00 11 0b 0a 08 02 00 00 00 00 00 00 00 11 0b 0a ................ 05a0: 08 00 00 00 00 00 00 00 00 11 0b 0a 08 00 00 00 ................ 05b0: 00 00 00 00 00 12 47 04 08 0c 78 05 00 00 0c b0 ......G...x..... 05c0: 18 00 00 0c 00 00 00 00 0c 00 00 00 00 11 0b 0a ................ 05d0: 08 03 00 00 00 00 00 00 00 11 0b 0a 08 03 00 00 ................ 05e0: 00 00 00 00 00 11 0b 0a 08 00 00 00 00 00 00 00 ................ 05f0: 00 11 0b 0a 08 00 00 00 00 00 00 00 00 12 47 04 ..............G. 0600: 08 0c b0 04 00 00 0c c8 14 00 00 0c 00 00 00 00 ................ 0610: 0c 00 00 00 00 11 0b 0a 08 04 00 00 00 00 00 00 ................ 0620: 00 11 0b 0a 08 04 00 00 00 00 00 00 00 11 0b 0a ................ 0630: 08 00 00 00 00 00 00 00 00 11 0b 0a 08 00 00 00 ................ 0640: 00 00 00 00 00 12 47 04 08 0c e8 03 00 00 0c ad ......G......... 0650: 12 00 00 0c 00 00 00 00 0c 00 00 00 00 11 0b 0a ................ 0660: 08 05 00 00 00 00 00 00 00 11 0b 0a 08 05 00 00 ................ 0670: 00 00 00 00 00 11 0b 0a 08 00 00 00 00 00 00 00 ................ 0680: 00 11 0b 0a 08 00 00 00 00 00 00 00 00 12 47 04 ..............G. 0690: 08 0c 20 03 00 00 0c 9f 10 00 00 0c 00 00 00 00 .. ............. 06a0: 0c 00 00 00 00 11 0b 0a 08 06 00 00 00 00 00 00 ................ 06b0: 00 11 0b 0a 08 06 00 00 00 00 00 00 00 11 0b 0a ................ 06c0: 08 00 00 00 00 00 00 00 00 11 0b 0a 08 00 00 00 ................ 06d0: 00 00 00 00 00 08 5f 50 53 44 12 18 01 12 15 05 ......_PSD...... 06e0: 0a 05 0a 00 0c 00 00 00 00 0c fc 00 00 00 0c 02 ................ 06f0: 00 00 00 08 5f 50 50 43 0a 00 08 5f 43 53 54 12 ...._PPC..._CST. 0700: 26 02 0a 01 12 21 04 11 14 0a 11 82 0c 00 01 08 &....!.......... 0710: 00 01 41 08 00 00 00 00 00 00 79 00 0a 02 0b 64 ..A.......y....d 0720: 00 0c 00 00 00 00 ...... SSDT2 @ 0x00000000 0000: 53 53 44 54 0a 19 00 00 02 af 41 4d 44 00 00 00 SSDT......AMD... 0010: 41 4c 49 42 00 00 00 00 01 00 00 00 4d 53 46 54 ALIB........MSFT 0020: 00 00 00 04 10 85 8e 01 5c 5f 53 42 5f 08 41 30 ........\_SB_.A0 0030: 30 31 0a 06 08 41 44 30 31 0c 00 00 00 f8 06 41 01...AD01......A 0040: 44 30 31 41 30 39 31 08 41 44 30 37 12 43 07 08 D01A091.AD07.C.. 0050: 11 0d 0a 0a 00 00 00 00 00 00 00 00 00 00 11 0d ................ 0060: 0a 0a 10 17 08 0f 01 31 01 04 02 00 11 0d 0a 0a .......1........ 0070: 04 04 04 04 01 30 01 00 01 00 11 0d 0a 0a 05 05 .....0.......... 0080: 05 05 02 30 01 00 01 00 11 0d 0a 0a 06 06 06 06 ...0............ 0090: 03 30 01 00 02 00 11 0d 0a 0a 07 07 07 07 04 30 .0.............0 00a0: 01 00 02 00 11 0d 0a 0a 00 03 00 03 00 30 01 00 .............0.. 00b0: 02 00 11 0d 0a 0a 00 00 00 00 00 00 00 00 00 00 ................ 00c0: 06 41 44 30 37 41 30 39 32 08 41 30 39 33 11 04 .AD07A092.A093.. 00d0: 0b 00 01 14 41 05 41 4c 49 42 02 a0 0b 93 68 0a ....A.ALIB....h. 00e0: 01 a4 41 30 33 35 69 a0 0b 93 68 0a 02 a4 41 30 ..A035i...h...A0 00f0: 33 37 69 a0 0b 93 68 0a 03 a4 41 30 34 38 69 a0 37i...h...A048i. 0100: 0b 93 68 0a 04 a4 41 30 37 33 69 a0 0a 93 68 0a ..h...A073i...h. 0110: 05 a4 41 30 39 34 a0 0b 93 68 0a 06 a4 41 30 37 ..A094...h...A07 0120: 37 69 a4 0a 00 14 09 41 30 39 34 08 a4 0a 00 14 7i.....A094..... 0130: 31 41 30 30 38 0a 72 41 30 39 31 79 68 0a 0c 00 1A008.rA091yh... 0140: 60 72 69 60 60 5b 80 41 30 39 35 00 60 0a 04 5b `ri``[.A095.`..[ 0150: 81 0b 41 30 39 35 03 41 30 39 36 20 a4 41 30 39 ..A095.A096 .A09 0160: 36 14 32 41 30 30 39 0b 72 41 30 39 31 79 68 0a 6.2A009.rA091yh. 0170: 0c 00 60 72 69 60 60 5b 80 41 30 39 35 00 60 0a ..`ri``[.A095.`. 0180: 04 5b 81 0b 41 30 39 35 03 41 30 39 36 20 70 6a .[..A095.A096 pj 0190: 41 30 39 36 14 1c 41 30 35 38 0c 70 41 30 30 38 A096..A058.pA008 01a0: 68 69 60 7d 7b 60 6a 00 6b 60 41 30 30 39 68 69 hi`}{`j.k`A009hi 01b0: 60 5b 01 41 30 39 37 00 14 32 41 30 35 39 02 5b `[.A097..2A059.[ 01c0: 23 41 30 39 37 ff ff 70 79 72 68 0a 02 00 0a 03 #A097..pyrh..... 01d0: 00 60 41 30 30 39 60 0a e0 69 70 41 30 30 38 60 .`A009`..ipA008` 01e0: 0a e4 60 5b 27 41 30 39 37 a4 60 14 2f 41 30 39 ..`['A097.`./A09 01f0: 38 03 5b 23 41 30 39 37 ff ff 70 79 72 68 0a 02 8.[#A097..pyrh.. 0200: 00 0a 03 00 60 41 30 30 39 60 0a e0 69 41 30 30 ....`A009`..iA00 0210: 39 60 0a e4 6a 5b 27 41 30 39 37 14 1c 41 30 35 9`..j['A097..A05 0220: 36 04 70 41 30 35 39 68 69 60 7d 7b 60 6a 00 6b 6.pA059hi`}{`j.k 0230: 60 41 30 39 38 68 69 60 5b 01 41 30 39 39 00 14 `A098hi`[.A099.. 0240: 29 41 30 31 36 03 5b 23 41 30 39 39 ff ff 41 30 )A016.[#A099..A0 0250: 30 39 68 69 6a 70 41 30 30 38 68 72 69 0a 04 00 09hijpA008hri... 0260: 60 5b 27 41 30 39 39 a4 60 14 26 41 30 34 39 04 `['A099.`.&A049. 0270: 5b 23 41 30 39 39 ff ff 41 30 30 39 68 69 6a 41 [#A099..A009hijA 0280: 30 30 39 68 72 69 0a 04 00 6b 5b 27 41 30 39 39 009hri...k['A099 0290: 14 1e 41 30 31 37 05 70 41 30 31 36 68 69 6a 60 ..A017.pA016hij` 02a0: 7d 7b 60 6b 00 6c 60 41 30 34 39 68 69 6a 60 14 }{`k.l`A049hij`. 02b0: 0f 41 30 38 31 01 a4 83 88 41 30 39 32 68 00 14 .A081....A092h.. 02c0: 42 05 41 30 36 35 02 70 0a 34 61 a0 11 93 41 30 B.A065.p.4a...A0 02d0: 30 38 68 0a 00 0c ff ff ff ff a4 0a 00 70 0a 01 08h..........p.. 02e0: 60 a2 2e 93 60 0a 01 70 7b 41 30 30 38 68 61 0a `...`..p{A008ha. 02f0: ff 00 61 a0 06 93 61 0a 00 a5 a0 11 93 7b 41 30 ..a...a......{A0 0300: 30 38 68 61 0a ff 00 69 70 0a 00 60 a1 03 75 61 08ha...ip..`..ua 0310: a4 61 14 47 09 41 30 36 34 0a 5b 80 50 4d 49 4f .a.G.A064.[.PMIO 0320: 01 0b d6 0c 0a 02 5b 81 10 50 4d 49 4f 01 50 4d ......[..PMIO.PM 0330: 52 49 08 50 4d 52 44 08 5b 86 12 50 4d 52 49 50 RI.PMRD.[..PMRIP 0340: 4d 52 44 01 00 40 70 41 42 41 52 20 5b 80 41 43 MRD..@pABAR [.AC 0350: 46 47 01 41 42 41 52 0a 08 5b 81 10 41 43 46 47 FG.ABAR..[..ACFG 0360: 03 41 42 49 58 20 41 42 44 41 20 70 0a 00 60 a0 .ABIX ABDA p..`. 0370: 17 93 69 0a 00 70 0c 68 00 00 80 41 42 49 58 70 ..i..p.h...ABIXp 0380: 41 42 44 41 60 a4 60 a1 22 70 0c 68 00 00 80 41 ABDA`.`."p.h...A 0390: 42 49 58 70 41 42 44 41 60 7d 7b 60 0c fc ff ff BIXpABDA`}{`.... 03a0: ff 00 68 60 70 60 41 42 44 41 14 48 05 41 30 38 ..h`p`ABDA.H.A08 03b0: 37 01 70 41 30 31 36 0a 00 0a 60 0a cd 60 75 68 7.pA016...`..`uh 03c0: 7d 7b 60 0c ff ff ff fe 00 7b 80 7b 60 0c 00 00 }{`......{.{`... 03d0: 00 01 00 00 0c 00 00 00 01 00 60 7d 7b 60 0c ff ..........`}{`.. 03e0: ff 00 fd 00 79 68 0a 10 00 60 41 30 34 39 0a 00 ....yh...`A049.. 03f0: 0a 60 0a cd 60 70 41 30 31 36 0a 00 0a 60 0a ce .`..`pA016...`.. 0400: 60 a4 60 14 47 0a 41 30 38 38 03 70 41 30 31 36 `.`.G.A088.pA016 0410: 0a 00 0a 60 0a cd 60 70 7b 69 0b ff ff 00 61 7d ...`..`p{i....a} 0420: 7b 60 0c ff ff ff fe 00 7b 80 7b 60 0c 00 00 00 {`......{.{`.... 0430: 01 00 00 0c 00 00 00 01 00 60 7d 7b 60 0c 00 00 .........`}{`... 0440: 00 fd 00 79 68 0a 10 00 60 7d 60 0c 00 00 00 02 ...yh...`}`..... 0450: 60 7d 60 61 60 41 30 34 39 0a 00 0a 60 0a cd 60 `}`a`A049...`..` 0460: a0 4a 04 93 6a 0a 01 70 7a 69 0a 10 00 61 7d 7b .J..j..pzi...a}{ 0470: 60 0c ff ff ff fe 00 7b 80 7b 60 0c 00 00 00 01 `......{.{`..... 0480: 00 00 0c 00 00 00 01 00 60 7d 7b 60 0c 00 00 00 ........`}{`.... 0490: ff 00 79 72 68 0a 01 00 0a 10 00 60 7d 60 61 60 ..yrh......`}`a` 04a0: 41 30 34 39 0a 00 0a 60 0a cd 60 14 4f 04 41 30 A049...`..`.O.A0 04b0: 31 31 02 7d 79 68 0a 03 00 0a 01 60 41 30 38 38 11.}yh.....`A088 04c0: 0a 03 60 0a 01 a0 15 90 69 0a 01 a2 0f 92 93 7b ..`.....i......{ 04d0: 41 30 38 37 0a 03 0a 02 00 0a 02 a0 15 90 69 0a A087..........i. 04e0: 02 a2 0f 92 93 7b 41 30 38 37 0a 03 0a 04 00 0a .....{A087...... 04f0: 04 41 30 38 38 0a 03 0a 00 0a 01 14 18 41 30 31 .A088........A01 0500: 30 02 41 30 38 38 0a 0b 68 0a 00 41 30 38 38 0a 0.A088..h..A088. 0510: 05 69 0a 01 14 19 41 30 30 37 01 41 30 38 38 0a .i....A007.A088. 0520: 0b 68 0a 00 70 41 30 38 37 0a 05 60 a4 60 14 49 .h..pA087..`.`.I 0530: 07 41 30 38 39 01 70 7d 7b 68 0a ff 00 0c 00 50 .A089.p}{h.....P 0540: 86 01 00 60 70 7d 7b 68 0c 00 ff ff ff 00 0a 04 ...`p}{h........ 0550: 00 61 70 7d 79 0a 03 0a 1e 00 79 0a 01 0a 12 00 .ap}y.....y..... 0560: 00 62 41 30 31 30 0b 00 86 60 41 30 31 30 0b 04 .bA010...`A010.. 0570: 86 61 41 30 31 30 0b 08 86 62 a0 12 93 7a 68 0a .aA010...b...zh. 0580: 10 00 0b 00 fe 41 30 31 31 0a 0d 0a 03 a0 12 93 .....A011....... 0590: 7a 68 0a 10 00 0b 30 fe 41 30 31 31 0a 0b 0a 03 zh....0.A011.... 05a0: a4 41 30 30 37 0b 50 86 14 44 06 41 30 39 30 02 .A007.P..D.A090. 05b0: 70 7d 7b 68 0a ff 00 0c 00 50 86 01 00 60 70 7d p}{h.....P...`p} 05c0: 7b 68 0c 00 ff ff ff 00 0a 04 00 61 70 7d 79 0a {h.........ap}y. 05d0: 03 0a 1e 00 79 0a 01 0a 12 00 00 62 7d 62 79 0a ....y......b}by. 05e0: 01 0a 10 00 62 41 30 31 30 0b 00 86 60 41 30 31 ....bA010...`A01 05f0: 30 0b 04 86 61 41 30 31 30 0b 08 86 62 41 30 31 0...aA010...bA01 0600: 30 0b 50 86 69 41 30 31 31 0a 0b 0a 03 08 41 44 0.P.iA011.....AD 0610: 30 32 0a 03 06 41 44 30 32 41 30 31 38 08 41 44 02...AD02A018.AD 0620: 30 33 0a 03 06 41 44 30 33 41 30 31 39 08 41 44 03...AD03A019.AD 0630: 30 34 0a 00 06 41 44 30 34 41 30 32 30 08 41 44 04...AD04A020.AD 0640: 30 35 0a 01 06 41 44 30 35 41 30 32 31 08 41 44 05...AD05A021.AD 0650: 30 36 12 12 08 0a 00 0a 02 0a 01 0a 01 0a 00 0a 06.............. 0660: 00 0a 02 0a 00 06 41 44 30 36 41 30 32 32 08 41 ......AD06A022.A 0670: 44 30 38 12 12 08 0a 00 0a 00 0a 00 0a 00 0a 00 D08............. 0680: 0a 00 0a 00 0a 00 06 41 44 30 38 41 30 32 33 08 .......AD08A023. 0690: 41 30 32 34 0a 00 08 41 30 32 35 0a 00 08 41 30 A024...A025...A0 06a0: 32 36 0a 01 08 41 30 32 37 12 12 08 0a 00 0a 00 26...A027....... 06b0: 0a 00 0a 00 0a 00 0a 00 0a 00 0a 00 08 41 30 32 .............A02 06c0: 38 12 12 08 0a 00 0a 00 0a 00 0a 00 0a 00 0a 00 8............... 06d0: 0a 00 0a 00 08 41 30 32 39 12 12 08 0a 00 0a 00 .....A029....... 06e0: 0a 00 0a 00 0a 00 0a 00 0a 00 0a 00 08 41 44 30 .............AD0 06f0: 39 12 12 08 0a 00 0a 00 0a 00 0a 00 0a 00 0a 00 9............... 0700: 0a 00 0a 00 06 41 44 30 39 41 30 33 30 08 41 30 .....AD09A030.A0 0710: 33 31 12 12 08 0a 01 0a 01 0a 01 0a 01 0a 01 0a 31.............. 0720: 01 0a 01 0a 01 08 41 30 33 32 12 12 08 0a 00 0a ......A032...... 0730: 00 0a 00 0a 00 0a 00 0a 00 0a 00 0a 00 08 41 30 ..............A0 0740: 33 34 0a 00 14 4a 09 41 30 33 35 09 70 83 88 68 34...J.A035.p..h 0750: 0a 02 00 61 70 41 30 31 33 60 70 61 41 30 32 35 ...apA013`paA025 0760: 7d 79 0a 01 0a 05 00 79 0a 01 0a 06 00 62 7d 79 }y.....y.....b}y 0770: 41 30 32 35 0a 05 00 79 41 30 32 36 0a 06 00 63 A025...yA026...c 0780: 41 30 31 37 0a 00 0a 60 0a f4 80 62 00 7b 62 63 A017...`...b.{bc 0790: 00 a0 07 93 61 60 a4 0a 00 41 30 30 36 41 30 32 ....a`...A006A02 07a0: 35 a0 14 93 41 30 31 38 0a 04 41 30 31 32 0a 01 5...A018..A012.. 07b0: 41 30 31 34 0a 01 a0 15 91 92 94 41 30 31 38 0a A014.......A018. 07c0: 01 92 95 41 30 31 38 0a 04 a4 0a 00 a0 0b 93 41 ...A018........A 07d0: 30 32 34 0a 00 a4 0a 00 41 30 33 36 a4 0a 00 14 024.....A036.... 07e0: 24 41 30 33 37 01 70 41 30 33 38 68 67 70 83 88 $A037.pA038hgp.. 07f0: 67 0a 02 00 60 a0 08 92 93 60 0a 02 a4 67 41 30 g...`....`...gA0 0800: 33 36 a4 67 14 4e 1b 41 30 33 38 01 08 41 30 33 36.g.N.A038..A03 0810: 39 0a 00 70 0a 00 41 30 33 34 70 11 03 0a 0a 67 9..p..A034p....g 0820: 8b 67 0a 00 41 30 34 30 70 0a 03 41 30 34 30 8c .g..A040p..A040. 0830: 67 0a 02 41 30 34 31 70 0a 01 41 30 34 31 a0 14 g..A041p..A041.. 0840: 91 92 94 41 30 31 38 0a 01 92 95 41 30 31 38 0a ...A018....A018. 0850: 04 a4 67 a0 0a 93 41 30 32 34 0a 00 a4 67 8b 68 ..g...A024...g.h 0860: 0a 02 41 30 34 32 8b 68 0a 04 41 30 34 33 8b 68 ..A042.h..A043.h 0870: 0a 06 41 30 34 34 8c 68 0a 08 41 30 34 35 8c 68 ..A044.h..A045.h 0880: 0a 09 41 30 34 36 7b 7a 41 30 34 32 0a 08 00 0a ..A046{zA042.... 0890: ff 41 30 33 39 a2 47 05 92 94 41 30 33 34 41 30 .A039.G...A034A0 08a0: 30 31 a0 45 04 93 41 30 34 37 41 30 33 34 0a 01 01.E..A047A034.. 08b0: 70 41 30 30 38 79 72 41 30 33 34 0a 02 00 0a 03 pA008yrA034..... 08c0: 00 0a 18 61 7b 7a 61 0a 10 00 0a ff 62 7b 7a 61 ...a{za.....b{za 08d0: 0a 08 00 0a ff 61 a0 11 90 92 95 41 30 33 39 61 .....a.....A039a 08e0: 92 94 41 30 33 39 62 a5 75 41 30 33 34 a0 0c 94 ..A039b.uA034... 08f0: 41 30 33 34 41 30 30 31 a4 67 a0 1e 93 83 88 41 A034A001.g.....A 0900: 30 32 37 41 30 33 34 00 0a 00 70 41 30 34 32 88 027A034...pA042. 0910: 41 30 32 37 41 30 33 34 00 a1 16 a0 14 92 93 83 A027A034........ 0920: 88 41 30 32 37 41 30 33 34 00 41 30 34 32 a4 67 .A027A034.A042.g 0930: 70 0a 00 88 41 30 33 32 41 30 33 34 00 a0 15 93 p...A032A034.... 0940: 41 30 34 36 0a 00 70 0a 00 88 41 30 32 37 41 30 A046..p...A027A0 0950: 33 34 00 a0 15 93 41 30 34 36 0a 01 70 0a 01 88 34....A046..p... 0960: 41 30 33 32 41 30 33 34 00 a0 15 93 41 30 34 36 A032A034....A046 0970: 0a 02 70 0a 01 88 41 30 32 39 41 30 33 34 00 a0 ..p...A029A034.. 0980: 15 93 41 30 34 36 0a 03 70 0a 02 88 41 30 32 39 ..A046..p...A029 0990: 41 30 33 34 00 a0 24 93 7b 41 30 34 33 41 30 34 A034..$.{A043A04 09a0: 34 00 0a 01 70 83 88 41 30 32 32 41 30 33 34 00 4...p..A022A034. 09b0: 88 41 30 32 39 41 30 33 34 00 70 0a 02 41 30 34 .A029A034.p..A04 09c0: 31 a4 67 14 19 41 30 34 37 09 a0 0f 93 83 88 41 1.g..A047......A 09d0: 30 32 32 68 00 0a 00 a4 0a 00 a4 0a 01 14 43 13 022h..........C. 09e0: 41 30 34 38 09 70 11 04 0b 00 01 67 70 0a 03 88 A048.p.....gp... 09f0: 67 0a 00 00 70 0a 00 88 67 0a 01 00 70 0a 00 88 g...p...g...p... 0a00: 67 0a 02 00 70 83 88 68 0a 02 00 41 30 32 34 70 g...p..h...A024p 0a10: 41 30 31 36 0a 00 0a 60 0a f4 60 a0 19 93 41 30 A016...`..`...A0 0a20: 32 34 0a 01 a0 0b 93 7b 60 0a 01 00 0a 01 a4 67 24.....{`......g 0a30: 7d 60 0a 01 60 a0 1b 93 41 30 32 34 0a 00 a0 0b }`..`...A024.... 0a40: 93 7b 60 0a 01 00 0a 00 a4 67 7b 60 80 0a 01 00 .{`......g{`.... 0a50: 60 7d 60 79 41 30 31 38 0a 01 00 60 41 30 34 39 `}`yA018...`A049 0a60: 0a 00 0a 60 0a f4 60 41 30 35 30 71 41 30 32 38 ...`..`A050qA028 0a70: 71 41 30 32 37 41 30 30 36 41 30 32 35 a0 14 93 qA027A006A025... 0a80: 41 30 31 38 0a 04 41 30 31 32 0a 01 41 30 31 34 A018..A012..A014 0a90: 0a 01 a0 4c 07 90 94 41 30 31 38 0a 01 95 41 30 ...L...A018...A0 0aa0: 31 38 0a 04 a0 46 05 93 41 30 31 38 0a 02 41 30 18...F..A018..A0 0ab0: 35 30 71 41 30 32 32 71 41 30 33 30 70 0a 00 41 50qA022qA030p..A 0ac0: 30 33 34 a2 37 92 94 41 30 33 34 41 30 30 31 a0 034.7..A034A001. 0ad0: 26 92 93 83 88 41 30 32 33 41 30 33 34 00 0a 00 &....A023A034... 0ae0: 70 83 88 41 30 32 33 41 30 33 34 00 88 41 30 33 p..A023A034..A03 0af0: 30 41 30 33 34 00 75 41 30 33 34 a1 0f 41 30 35 0A034.uA034..A05 0b00: 30 71 41 30 33 31 71 41 30 33 30 41 30 33 36 a4 0qA031qA030A036. 0b10: 67 08 41 30 35 31 12 12 08 0a 00 0a 00 0a 00 0a g.A051.......... 0b20: 00 0a 00 0a 00 0a 00 0a 00 14 42 12 41 30 33 36 ..........B.A036 0b30: 08 70 0a 00 41 30 33 34 41 30 35 30 71 41 30 33 .p..A034A050qA03 0b40: 31 71 41 30 35 31 a2 30 92 94 41 30 33 34 41 30 1qA051.0..A034A0 0b50: 30 31 a0 1f 93 41 30 34 37 41 30 33 34 0a 01 70 01...A047A034..p 0b60: 41 30 35 32 41 30 33 34 88 41 30 35 31 41 30 33 A052A034.A051A03 0b70: 34 00 75 41 30 33 34 a0 1f 92 93 89 41 30 33 32 4.uA034.....A032 0b80: 01 0a 01 00 0a 00 0a 00 ff 41 30 35 30 71 41 30 .........A050qA0 0b90: 33 31 71 41 30 35 31 a0 27 92 93 89 41 30 35 31 31qA051.'...A051 0ba0: 01 0a 02 00 0a 00 0a 00 ff 41 30 31 34 0a 02 41 .........A014..A 0bb0: 30 35 33 41 30 31 39 0a 01 41 30 31 32 0a 02 70 053A019..A012..p 0bc0: 0a 00 41 30 33 34 a2 4e 05 92 94 41 30 33 34 41 ..A034.N...A034A 0bd0: 30 30 31 a0 12 93 41 30 34 37 41 30 33 34 0a 00 001...A047A034.. 0be0: 75 41 30 33 34 9f 70 83 88 41 30 33 30 41 30 33 uA034.p..A030A03 0bf0: 34 00 60 70 83 88 41 30 35 31 41 30 33 34 00 62 4.`p..A051A034.b 0c00: a0 0a 93 60 62 75 41 30 33 34 9f 70 62 88 41 30 ...`buA034.pb.A0 0c10: 33 30 41 30 33 34 00 41 30 35 34 41 30 33 34 62 30A034.A054A034b 0c20: 75 41 30 33 34 a0 26 93 89 41 30 35 31 01 0a 02 uA034.&..A051... 0c30: 00 0a 00 0a 00 ff 41 30 31 32 0a 01 41 30 35 33 ......A012..A053 0c40: 41 30 32 30 0a 00 41 30 31 34 0a 01 14 43 05 41 A020..A014...C.A 0c50: 30 35 32 01 70 0a 02 60 a0 39 93 83 88 41 30 32 052.p..`.9...A02 0c60: 37 68 00 0a 00 a0 14 91 93 41 30 31 33 0a 01 93 7h.......A013... 0c70: 41 30 31 38 0a 03 70 0a 01 60 a0 17 92 93 83 88 A018..p..`...... 0c80: 41 30 32 33 68 00 0a 00 70 83 88 41 30 32 33 68 A023h...p..A023h 0c90: 00 60 a1 0b 70 83 88 41 30 32 39 68 00 60 a4 60 .`..p..A029h.`.` 0ca0: 14 43 0e 41 30 35 34 02 a0 15 93 68 0a 06 41 30 .C.A054....h..A0 0cb0: 31 37 0a 00 0a 60 0a 80 80 0a 40 00 0a 40 41 30 17...`....@..@A0 0cc0: 35 35 68 69 a0 1b 92 93 83 88 41 30 32 37 68 00 55hi......A027h. 0cd0: 0a 00 41 30 35 36 68 0a a1 80 0b 00 10 00 0a 00 ..A056h......... 0ce0: a1 10 41 30 35 36 68 0a a1 80 0b 00 10 00 0b 00 ..A056h......... 0cf0: 10 70 79 72 68 0a 02 00 0a 03 00 61 7b 41 30 30 .pyrh......a{A00 0d00: 38 61 0a 70 0c 00 00 40 00 63 a0 41 06 92 93 63 8a.p...@.c.A...c 0d10: 0a 00 41 30 35 37 68 70 0a 01 62 a2 4b 04 62 41 ..A057hp..b.K.bA 0d20: 30 35 38 61 0a 68 80 0a 00 00 0a 20 5b 22 0a 1e 058a.h..... [".. 0d30: a2 13 7b 41 30 30 38 61 0a 68 0c 00 00 00 08 00 ..{A008a.h...... 0d40: 5b 22 0a 0a 70 0a 00 62 a0 1e 93 69 0a 01 70 41 ["..p..b...i..pA 0d50: 30 35 39 68 0a a4 64 a0 0f 92 93 7b 64 0b 00 08 059h..d....{d... 0d60: 00 0a 00 70 0a 01 62 41 30 36 30 68 a1 01 a0 15 ...p..bA060h.... 0d70: 93 68 0a 06 41 30 31 37 0a 00 0a 60 0a 80 80 0a .h..A017...`.... 0d80: 40 00 0a 00 08 41 30 36 31 12 14 09 0a 00 0a 00 @....A061....... 0d90: 0a 00 0a 00 0a 00 0a 00 0a 00 0a 00 0a 00 08 41 ...............A 0da0: 30 36 32 0a 00 08 41 30 36 33 0a 00 14 4c 0e 41 062...A063...L.A 0db0: 30 35 37 09 70 0a 00 41 30 36 32 70 0a 00 41 30 057.p..A062p..A0 0dc0: 36 33 70 79 72 68 0a 02 00 0a 03 00 61 a0 21 93 63pyrh......a.!. 0dd0: 68 0a 06 70 41 30 36 34 0a 00 0a 00 88 41 30 36 h..pA064.....A06 0de0: 31 0a 00 00 41 30 36 34 0a 00 0a 01 a4 0a 00 70 1...A064.......p 0df0: 41 30 30 38 61 0a 18 63 70 7b 7a 63 0a 08 00 0a A008a..cp{zc.... 0e00: ff 00 63 70 79 63 0a 08 00 62 70 41 30 30 38 62 ..cpyc...bpA008b 0e10: 0a 0c 63 70 7b 7a 63 0a 10 00 0a ff 00 63 a0 0e ..cp{zc......c.. 0e20: 92 93 7b 63 0a 80 00 0a 00 70 0a 07 60 a1 05 70 ..{c.....p..`..p 0e30: 0a 00 60 70 0a 00 64 a2 41 06 92 94 64 60 70 41 ..`p..d.A...d`pA 0e40: 30 36 35 72 62 64 00 0a 10 41 30 36 32 a0 0b 93 065rbd...A062... 0e50: 41 30 36 32 0a 00 75 64 9f 72 41 30 36 32 0a 10 A062..ud.rA062.. 0e60: 41 30 36 32 70 41 30 30 38 72 62 64 00 41 30 36 A062pA008rbd.A06 0e70: 32 41 30 36 33 70 7b 41 30 36 33 0a 03 00 88 41 2A063p{A063....A 0e80: 30 36 31 64 00 41 30 35 38 72 62 64 00 41 30 36 061d.A058rbd.A06 0e90: 32 80 0a 03 00 0a 00 75 64 14 43 0c 41 30 36 30 2......ud.C.A060 0ea0: 09 70 0a 00 41 30 36 32 70 0a 00 41 30 36 33 a0 .p..A062p..A063. 0eb0: 17 93 68 0a 06 41 30 36 34 83 88 41 30 36 31 0a ..h..A064..A061. 0ec0: 00 00 0a 01 a4 0a 00 70 79 72 68 0a 02 00 0a 03 .......pyrh..... 0ed0: 00 61 70 41 30 30 38 61 0a 18 63 70 7b 7a 63 0a .apA008a..cp{zc. 0ee0: 08 00 0a ff 00 63 70 79 63 0a 08 00 62 70 41 30 .....cpyc...bpA0 0ef0: 30 38 62 0a 0c 63 70 7b 7a 63 0a 10 00 0a ff 00 08b..cp{zc...... 0f00: 63 a0 0e 92 93 7b 63 0a 80 00 0a 00 70 0a 07 60 c....{c.....p..` 0f10: a1 05 70 0a 00 60 70 0a 00 64 a2 42 04 92 94 64 ..p..`p..d.B...d 0f20: 60 70 41 30 36 35 72 62 64 00 0a 10 41 30 36 32 `pA065rbd...A062 0f30: a0 0b 93 41 30 36 32 0a 00 75 64 9f 72 41 30 36 ...A062..ud.rA06 0f40: 32 0a 10 41 30 36 32 41 30 30 39 72 62 64 00 41 2..A062A009rbd.A 0f50: 30 36 32 83 88 41 30 36 31 64 00 75 64 14 47 05 062..A061d.ud.G. 0f60: 41 30 35 35 02 70 79 72 68 0a 02 00 0a 03 00 60 A055.pyrh......` 0f70: a0 22 93 69 0a 01 41 30 35 38 60 0a 88 80 0a 2f .".i..A058`..../ 0f80: 00 0a 21 41 30 35 36 68 0a a4 80 0c 01 00 00 20 ..!A056h....... 0f90: 00 0a 00 a1 21 41 30 35 36 68 0a a4 80 0c 01 00 ....!A056h...... 0fa0: 00 20 00 0c 01 00 00 20 41 30 35 38 60 0a 88 80 . ..... A058`... 0fb0: 0a 2f 00 0a 02 14 41 07 41 30 35 33 0a 70 41 30 ./....A.A053.pA0 0fc0: 31 36 0a 00 0a 60 0a ea 61 7d 61 0a 02 61 41 30 16...`..a}a..aA0 0fd0: 34 39 0a 00 0a 60 0a ea 61 7b 61 80 79 0a 03 0a 49...`..a{a.y... 0fe0: 03 00 00 61 7d 61 79 68 0a 03 00 61 7b 80 61 00 ...a}ayh...a{.a. 0ff0: 0a 04 62 7d 7b 61 80 0a 04 00 00 62 61 41 30 34 ..b}{a.....baA04 1000: 39 0a 00 0a 60 0a ea 61 a0 1e 92 93 69 0a 00 a2 9...`..a....i... 1010: 17 92 93 79 61 0a 02 00 62 7b 41 30 31 36 0a 00 ...ya...b{A016.. 1020: 0a 60 0a eb 0a 01 61 14 21 41 30 35 30 02 70 87 .`....a.!A050.p. 1030: 68 61 70 0a 00 60 a2 12 95 60 61 70 83 88 83 68 hap..`...`ap...h 1040: 60 00 88 83 69 60 00 75 60 14 11 41 30 31 33 00 `...i`.u`..A013. 1050: a4 7b 41 30 32 35 41 30 32 36 00 08 41 30 36 36 .{A025A026..A066 1060: 0a 00 08 41 30 36 37 0a 00 08 41 30 36 38 0a 00 ...A067...A068.. 1070: 08 41 30 36 39 0a 00 08 41 30 37 30 0a 00 08 41 .A069...A070...A 1080: 30 37 31 0a 00 08 41 30 37 32 11 13 0a 10 01 02 071...A072...... 1090: 04 04 08 08 08 08 10 10 10 10 10 10 10 10 14 48 ...............H 10a0: 0f 41 30 37 33 01 08 41 30 33 39 0a 00 08 41 30 .A073..A039...A0 10b0: 37 34 0a 00 70 0a 00 41 30 33 34 70 11 03 0a 0a 74..p..A034p.... 10c0: 67 70 83 88 68 0a 03 00 41 30 33 39 70 83 88 68 gp..h...A039p..h 10d0: 0a 04 00 41 30 37 34 70 0a 03 88 67 0a 00 00 70 ...A074p...g...p 10e0: 0a 00 88 67 0a 01 00 70 41 30 37 34 88 67 0a 02 ...g...pA074.g.. 10f0: 00 a2 47 05 92 94 41 30 33 34 41 30 30 31 a0 45 ..G...A034A001.E 1100: 04 93 41 30 34 37 41 30 33 34 0a 01 70 41 30 30 ..A047A034..pA00 1110: 38 79 72 41 30 33 34 0a 02 00 0a 03 00 0a 18 61 8yrA034........a 1120: 7b 7a 61 0a 10 00 0a ff 62 7b 7a 61 0a 08 00 0a {za.....b{za.... 1130: ff 61 a0 11 90 92 95 41 30 33 39 61 92 94 41 30 .a.....A039a..A0 1140: 33 39 62 a5 75 41 30 33 34 a0 0c 94 41 30 33 34 39b.uA034...A034 1150: 41 30 30 31 a4 67 a0 13 92 94 41 30 37 35 41 30 A001.g....A075A0 1160: 33 34 0a 01 41 30 37 34 a4 67 70 83 88 41 30 37 34..A074.gp..A07 1170: 32 41 30 37 34 00 61 41 30 37 36 41 30 33 34 0a 2A074.aA076A034. 1180: 01 0a 00 41 30 37 36 41 30 33 34 0a 02 61 70 61 ...A076A034..apa 1190: 88 67 0a 02 00 a4 67 14 4c 06 41 30 37 37 09 70 .g....g.L.A077.p 11a0: 83 88 68 0a 04 00 60 70 83 88 68 0a 02 00 61 74 ..h...`p..h...at 11b0: 7a 61 0a 03 00 0a 02 61 a0 09 93 60 0a 01 70 0a za.....a...`..p. 11c0: 06 62 a1 05 70 0a 04 62 70 41 30 37 38 61 62 60 .b..p..bpA078ab` 11d0: 70 11 03 0a 0a 67 8b 67 0a 00 41 30 34 30 8c 67 p....g.g..A040.g 11e0: 0a 02 41 30 34 31 8c 67 0a 03 41 30 37 39 70 0a ..A041.g..A079p. 11f0: 04 41 30 34 30 70 0a 00 41 30 34 31 70 60 41 30 .A040p..A041p`A0 1200: 37 39 a4 67 08 41 30 38 30 11 0d 0a 0a 00 00 00 79.g.A080....... 1210: 00 00 00 00 00 00 00 14 45 1a 41 30 37 38 0a 70 ........E.A078.p 1220: 0a 00 64 70 41 30 38 31 68 67 70 83 88 67 0a 07 ..dpA081hgp..g.. 1230: 00 61 a0 08 92 93 61 0a 01 a4 64 70 69 62 a2 4c .a....a...dpib.L 1240: 17 92 93 62 0a 08 a0 41 04 93 62 0a 06 70 0a 00 ...b...A..b..p.. 1250: 88 41 30 32 33 68 00 41 30 35 36 68 0a a2 80 0b .A023h.A056h.... 1260: 00 20 00 0a 00 70 0a 00 41 30 32 36 41 30 33 36 . ...p..A026A036 1270: 41 30 37 36 68 0a 01 0a 00 41 30 38 32 68 0a 00 A076h....A082h.. 1280: 70 0a 01 62 70 0a 00 63 a0 31 93 62 0a 01 7b 41 p..bp..c.1.b..{A 1290: 30 35 39 68 0a a5 0a 3f 61 a0 0e 94 61 0a 04 70 059h...?a...a..p 12a0: 0a 02 62 70 0a 00 63 9f a0 0b 95 63 0a 50 5b 22 ..bp..c....c.P[" 12b0: 0a 01 75 63 a1 05 70 0a 04 62 a0 4c 06 93 62 0a ..uc..p..b.L..b. 12c0: 02 70 41 30 35 39 68 0a a5 61 7b 61 0a 3f 61 a0 .pA059h..a{a.?a. 12d0: 0a 93 61 0a 10 70 0a 05 62 9f a0 0c 95 63 0a 50 ..a..p..b....c.P 12e0: 5b 22 0a 01 75 63 9f 70 0a 04 62 a0 0d 93 83 88 ["..uc.p..b..... 12f0: 41 30 32 33 68 00 0a 01 9f a0 2d 93 41 30 38 33 A023h.....-.A083 1300: 68 0a 01 41 30 35 36 68 0a a2 80 0b 00 20 00 0b h..A056h..... .. 1310: 00 20 70 0a 01 88 41 30 32 33 68 00 41 30 35 35 . p...A023h.A055 1320: 68 0a 01 70 0a 07 62 a0 23 93 62 0a 04 41 30 38 h..p..b.#.b..A08 1330: 32 68 0a 01 41 30 37 36 68 0a 00 0a 00 70 0a 01 2h..A076h....p.. 1340: 88 41 30 32 33 68 00 70 0a 00 62 a0 4c 04 93 62 .A023h.p..b.L..b 1350: 0a 07 a0 41 04 5b 12 5c 2e 5f 53 42 5f 41 4c 49 ...A.[.\._SB_ALI 1360: 43 66 70 79 72 68 0a 02 00 0a 03 00 61 5c 2e 5f Cfpyrh......a\._ 1370: 53 42 5f 41 4c 49 43 61 0a 00 5b 22 0a 02 5c 2e SB_ALICa..["..\. 1380: 5f 53 42 5f 41 4c 49 43 61 0a 01 70 0a 00 63 70 _SB_ALICa..p..cp 1390: 0a 01 62 9f 70 0a 04 62 a0 0d 93 62 0a 05 70 0a ..b.p..b...b..p. 13a0: 01 64 70 0a 00 62 a0 14 93 62 0a 00 70 0a 01 41 .dp..b...b..p..A 13b0: 30 32 36 41 30 33 36 70 0a 08 62 a4 64 14 40 0b 026A036p..b.d.@. 13c0: 41 30 37 36 0b 70 41 30 38 31 68 67 70 83 88 67 A076.pA081hgp..g 13d0: 0a 02 00 41 30 36 38 70 83 88 67 0a 03 00 41 30 ...A068p..g...A0 13e0: 36 39 a0 14 93 69 0a 00 41 30 38 34 68 41 30 36 69...i..A084hA06 13f0: 38 41 30 36 39 0a 01 a0 14 93 69 0a 01 41 30 38 8A069.....i..A08 1400: 34 68 41 30 36 38 41 30 36 39 0a 00 a0 09 92 93 4hA068A069...... 1410: 69 0a 02 a4 0a 00 a0 0e 93 6a 0a 00 70 41 30 37 i........j..pA07 1420: 35 68 0a 00 62 a1 04 70 6a 62 a0 0e 92 94 41 30 5h..b..pjb....A0 1430: 37 35 68 0a 01 62 a4 0a 00 70 41 30 38 35 68 61 75h..b...pA085ha 1440: a0 12 93 61 0a 00 72 41 30 36 38 62 63 70 41 30 ...a..rA068bcpA0 1450: 36 39 64 a1 0e 74 41 30 36 39 62 64 70 41 30 36 69d..tA069bdpA06 1460: 38 63 41 30 38 34 68 63 64 0a 01 a4 0a 00 14 40 8cA084hcd......@ 1470: 09 41 30 38 33 01 70 11 03 0a 10 61 70 0a 00 60 .A083.p....ap..` 1480: a2 45 05 92 94 60 0a 03 70 41 30 35 39 68 72 60 .E...`..pA059hr` 1490: 0a a5 00 62 70 62 88 61 77 60 0a 04 00 00 70 7a ...bpb.aw`....pz 14a0: 62 0a 08 00 88 61 72 77 60 0a 04 00 0a 01 00 00 b....arw`....... 14b0: 70 7a 62 0a 10 00 88 61 72 77 60 0a 04 00 0a 02 pzb....arw`..... 14c0: 00 00 70 7a 62 0a 18 00 88 61 72 77 60 0a 04 00 ..pzb....arw`... 14d0: 0a 03 00 00 75 60 70 0a 00 60 a2 21 95 60 0a 0f ....u`p..`.!.`.. 14e0: a0 19 90 93 83 88 61 60 00 0a 2a 93 83 88 61 72 ......a`..*...ar 14f0: 60 0a 01 00 00 0a 09 a4 0a 01 75 60 a4 0a 00 14 `.........u`.... 1500: 4b 04 41 30 38 35 09 70 41 30 38 31 68 67 70 83 K.A085.pA081hgp. 1510: 88 67 0a 00 00 41 30 36 36 70 83 88 67 0a 01 00 .g...A066p..g... 1520: 41 30 36 37 70 0a 00 60 a0 0e 94 41 30 36 36 41 A067p..`...A066A 1530: 30 36 37 70 0a 01 60 7b 41 30 35 39 68 0a 50 0a 067p..`{A059h.P. 1540: 01 61 a4 7b 7f 60 61 00 0a 01 00 14 49 05 41 30 .a.{.`a.....I.A0 1550: 38 32 02 70 41 30 38 31 68 67 70 83 88 67 0a 04 82.pA081hgp..g.. 1560: 00 41 30 37 31 70 7d 79 83 88 67 72 0a 05 0a 01 .A071p}y..gr.... 1570: 00 00 0a 08 00 83 88 67 0a 05 00 00 41 30 37 30 .......g....A070 1580: 41 30 31 37 0a 00 0a e0 7d 79 41 30 37 30 0a 10 A017....}yA070.. 1590: 00 72 0b 00 08 77 0b 00 01 41 30 37 31 00 00 00 .r...w...A071... 15a0: 80 0a 01 00 69 08 41 30 38 36 11 0a 0a 07 00 01 ....i.A086...... 15b0: 02 04 08 0c 10 14 4b 06 41 30 37 35 02 a0 1e 93 ......K.A075.... 15c0: 69 0a 00 7b 7a 41 30 35 39 68 0a a2 0a 04 00 0a i..{zA059h...... 15d0: 07 60 70 83 88 41 30 38 36 60 00 61 a1 42 04 70 .`p..A086`.a.B.p 15e0: 41 30 38 31 68 67 70 83 88 67 0a 00 00 41 30 36 A081hgp..g...A06 15f0: 36 70 83 88 67 0a 01 00 41 30 36 37 a0 14 94 41 6p..g...A067...A 1600: 30 36 36 41 30 36 37 74 41 30 36 36 41 30 36 37 066A067tA066A067 1610: 61 a1 0b 74 41 30 36 37 41 30 36 36 61 75 61 a4 a..tA067A066aua. 1620: 61 14 4c 09 41 30 38 34 0c 70 41 30 38 31 68 67 a.L.A084.pA081hg 1630: 70 69 41 30 36 38 70 6a 41 30 36 39 70 7d 79 83 piA068pjA069p}y. 1640: 88 67 72 0a 05 0a 01 00 00 0a 08 00 83 88 67 0a .gr...........g. 1650: 05 00 00 41 30 37 30 a0 1a 94 41 30 36 38 41 30 ...A070...A068A0 1660: 36 39 74 41 30 36 38 41 30 36 39 61 70 41 30 36 69tA068A069apA06 1670: 39 62 a1 11 74 41 30 36 39 41 30 36 38 61 70 41 9b..tA069A068apA 1680: 30 36 38 62 79 74 79 0a 01 72 61 0a 01 00 00 0a 068byty..ra..... 1690: 01 00 62 63 70 80 63 00 64 a0 09 93 6b 0a 01 70 ..bcp.c.d...k..p 16a0: 0a 00 63 41 30 31 37 0a 00 0a e0 7d 79 41 30 37 ..cA017....}yA07 16b0: 30 0a 10 00 0b 23 80 00 64 63 5b 21 0a 0a 08 41 0....#..dc[!...A 16c0: 30 30 32 0a 00 08 41 30 30 33 0a 00 08 41 30 30 002...A003...A00 16d0: 34 0a 00 08 41 30 30 35 0a 00 14 45 0d 41 30 30 4...A005...E.A00 16e0: 36 01 70 7d 79 0a 18 0a 03 00 0a 04 00 61 a0 35 6.p}y........a.5 16f0: 93 41 30 30 35 0a 00 70 41 30 30 37 0b 80 85 41 .A005..pA007...A 1700: 30 30 33 70 41 30 30 38 61 0b 5c 01 41 30 30 32 003pA008a.\.A002 1710: 70 41 30 30 38 61 0b a4 01 41 30 30 34 70 0a 01 pA008a...A004p.. 1720: 41 30 30 35 70 41 30 30 37 0b 80 85 60 70 7d 79 A005pA007...`p}y 1730: 0a 18 0a 03 00 0a 04 00 61 70 41 30 30 38 61 0b ........apA008a. 1740: 5c 01 62 70 41 30 30 38 61 0b a4 01 63 a0 1a 93 \.bpA008a...c... 1750: 68 0a 01 7b 60 0c fe ff ff ff 60 7b 62 0c fc ff h..{`.....`{b... 1760: ff ff 62 7d 63 0a 03 63 a1 25 7d 60 7b 41 30 30 ..b}c..c.%}`{A00 1770: 33 0a 01 00 60 7d 62 7b 41 30 30 32 0a 03 00 62 3...`}b{A002...b 1780: 7b 63 7d 0c fc ff ff ff 41 30 30 34 00 63 41 30 {c}.....A004.cA0 1790: 30 39 61 0b a4 01 63 41 30 30 39 61 0b 5c 01 62 09a...cA009a.\.b 17a0: 41 30 31 30 0b 80 85 60 41 30 31 31 0a 12 0a 03 A010...`A011.... 17b0: 14 41 06 41 30 31 32 01 70 41 30 31 33 61 70 41 .A.A012.pA013apA 17c0: 30 30 37 0b 90 84 60 a0 4a 04 92 93 7b 60 0a f0 007...`.J...{`.. 17d0: 00 0a 00 a0 12 93 68 0a 02 7b 60 0c a0 ff ff ff ......h..{`..... 17e0: 60 7d 60 0a a0 60 a1 23 a0 12 93 61 0a 00 7b 60 `}`..`.#...a..{` 17f0: 0c 60 ff ff ff 60 7d 60 0a 60 60 a1 0e 7b 60 0c .`...`}`.``..{`. 1800: 20 ff ff ff 60 7d 60 0a 20 60 41 30 31 30 0b 90 ...`}`. `A010.. 1810: 84 60 08 41 44 30 41 0a 00 14 47 04 41 30 31 34 .`.AD0A...G.A014 1820: 01 a0 3f 93 41 44 30 41 0a 01 70 41 30 31 33 61 ..?.AD0A..pA013a 1830: 70 41 30 30 37 0b 2c 84 60 7b 60 0c fe ff ff ff pA007.,.`{`..... 1840: 60 a0 0f 90 93 68 0a 01 93 61 0a 01 7d 60 0a 01 `....h...a..}`.. 1850: 60 41 30 31 30 0b 2c 84 60 41 30 31 31 0a 1b 0a `A010.,.`A011... 1860: 03 14 48 0a 41 30 31 35 01 70 68 60 a0 09 93 68 ..H.A015.ph`...h 1870: 0a 02 70 0a 00 60 a0 49 04 92 93 41 30 31 36 0a ..p..`.I...A016. 1880: 00 0a e0 0c 23 80 30 01 0a 00 41 30 31 37 0a 00 ....#.0...A017.. 1890: 0a e0 0c 16 80 30 01 80 0b 00 10 00 79 60 0a 0c .....0......y`.. 18a0: 00 a2 1e 92 93 7b 41 30 31 36 0a 00 0a e0 0c 16 .....{A016...... 18b0: 80 30 01 0b 00 20 00 79 60 0a 0d 00 5b 21 0a 0a .0... .y`...[!.. 18c0: a0 49 04 92 93 41 30 31 36 0a 00 0a e0 0c 23 80 .I...A016.....#. 18d0: 31 01 0a 00 41 30 31 37 0a 00 0a e0 0c 16 80 31 1...A017.......1 18e0: 01 80 0b 00 10 00 79 60 0a 0c 00 a2 1e 92 93 7b ......y`.......{ 18f0: 41 30 31 36 0a 00 0a e0 0c 16 80 31 01 0b 00 20 A016.......1... 1900: 00 79 60 0a 0d 00 5b 21 0a 0a .y`...[!.. UEFI3 @ 0x00000000 0000: 55 45 46 49 42 02 00 00 01 91 44 45 4c 4c 20 20 UEFIB.....DELL 0010: 51 41 30 39 20 20 20 00 02 00 00 00 50 54 4c 20 QA09 .....PTL 0020: 02 00 00 00 97 b1 9f 0d fc ce 91 4e ac b1 25 35 ...........N..%5 0030: d9 e5 a8 44 36 00 1a 00 00 00 42 00 00 00 43 00 ...D6.....B...C. 0040: 00 00 44 00 00 00 45 00 00 00 46 00 00 00 47 00 ..D...E...F...G. 0050: 00 00 48 00 00 00 49 00 00 00 4a 00 00 00 4b 00 ..H...I...J...K. 0060: 00 00 4d 00 00 00 f2 00 00 00 f1 00 00 00 f3 00 ..M............. 0070: 00 00 81 00 00 00 e9 00 00 00 01 00 00 00 ab 00 ................ 0080: 00 00 02 00 00 00 03 00 00 00 c1 00 00 00 04 00 ................ 0090: 00 00 05 00 00 00 06 00 00 00 07 00 00 00 08 00 ................ 00a0: 00 00 83 0c fa 0e d7 03 b9 44 9c 8d 6f 32 e6 3e .........D..o2.> 00b0: c0 98 78 98 e4 93 55 ad fd 46 b6 16 6c 4e 69 9a ..x...U..F..lNi. 00c0: 6b 9e e9 79 fb c0 21 28 21 4c 9a bb 9e 7e b2 ca k..y..!(!L...~.. 00d0: 15 f4 39 12 2f ce 28 7d f2 43 b5 15 5e 60 9f 10 ..9./.(}.C..^`.. 00e0: 06 0c b8 6e 83 9e 86 8a 60 4a 83 a9 d4 41 e9 6a ...n....`J...A.j 00f0: 27 05 62 40 78 f8 bd 63 de 44 af 27 f8 27 fd 67 '.b@x..c.D.'.'.g 0100: 89 06 c5 c0 04 ae 4c 4b 82 44 a3 53 c1 38 2b 4a ......LK.D.S.8+J 0110: 08 48 ed 36 ec ca ae c7 d9 4e b5 e1 e3 4e 15 cb .H.6.....N...N.. 0120: 8f 04 4a df a9 58 ef fb c8 4d a3 9f 8d b6 be 0f ..J..X...M...... 0130: 83 70 1d b2 04 dc 15 5d 50 4d a2 d8 5d 1b 4f 82 .p.....]PM..].O. 0140: ac 11 8f 0a 9e ca 15 f8 29 4a a7 16 eb ae 45 ca ........)J....E. 0150: 63 6e e2 36 f7 1b fc f4 39 4c 9e 9b ce a8 35 39 cn.6....9L....59 0160: c3 1a 9c 9c c7 c4 09 9f 51 41 99 c4 53 a0 0a 4a ........QA..S..J 0170: 94 96 00 a8 63 ef 86 95 fb 42 84 ab ea 59 0b f1 ....c....B...Y.. 0180: 41 aa 3d be 20 33 92 49 cd 4f b8 6c 60 e5 e9 15 A.=. 3.I.O.l`... 0190: 69 1e 58 dc af d8 22 6e f8 42 99 66 36 ff 78 8c i.X..."n.B.f6.x. 01a0: 9c af 5e 1d 9c 62 bd f6 52 4f 8a 5f 93 96 e7 28 ..^..b..RO._...( 01b0: 9b ec c1 50 59 3f ba 9c 76 4e b2 aa 83 4f da 5e ...PY?..vN...O.^ 01c0: 07 c9 14 d5 a5 bb 70 a9 56 41 8d dd a5 ed e2 1b ......p.VA...... 01d0: bf 5f 7f ee 45 d0 be 98 eb 4f bd 30 d6 76 37 7d ._..E....O.0.v7} 01e0: ce f8 38 b4 91 da 47 8b 0a 4d ad 56 c7 28 a9 4c ..8...G..M.V.(.L 01f0: 7f 58 aa 9b df 6c 34 f9 c2 43 a8 5f 28 63 86 a9 .X...l4..C._(c.. 0200: 76 c4 a9 0b 09 b4 66 d2 03 4e be 37 ad bd bc 85 v.....f..N.7.... 0210: 63 fd 9c 7c 96 6e 42 8e 65 48 9d 6c 4f 80 05 2f c..|.nB.eH.lO../ 0220: 2c 0e ec 9a 91 b8 9c 93 4b 47 a9 18 29 9f b2 65 ,.......KG..)..e 0230: 93 6c 8a 8c 3c 24 d0 bb a9 4a be 17 cf 9b 58 31 .l..<$...J....X1 0240: 30 ec 0.fwts-test/wmi-0001/test-0001.sh000077500000000000000000000010231231470457100160640ustar00rootroot00000000000000#!/bin/bash # TEST="Test wmi against known correct ACPI tables" NAME=test-0001.sh TMPLOG=$TMP/wmi.log.$$ $FWTS --show-tests | grep wmi > /dev/null if [ $? -eq 1 ]; then echo SKIP: $TEST, $NAME exit 77 fi $FWTS --log-format="%line %owner " -w 80 --dumpfile=$FWTSTESTDIR/wmi-0001/acpidump-0001.log wmi - | grep "^[0-9]*[ ]*wmi" | cut -c7- > $TMPLOG diff $TMPLOG $FWTSTESTDIR/wmi-0001/wmi-0001.log >> $FAILURE_LOG ret=$? if [ $ret -eq 0 ]; then echo PASSED: $TEST, $NAME else echo FAILED: $TEST, $NAME fi rm $TMPLOG exit $ret fwts-test/wmi-0001/test-0002.sh000077500000000000000000000010231231470457100160650ustar00rootroot00000000000000#!/bin/bash # TEST="Test wmi against known correct ACPI tables" NAME=test-0002.sh TMPLOG=$TMP/wmi.log.$$ $FWTS --show-tests | grep wmi > /dev/null if [ $? -eq 1 ]; then echo SKIP: $TEST, $NAME exit 77 fi $FWTS --log-format="%line %owner " -w 80 --dumpfile=$FWTSTESTDIR/wmi-0001/acpidump-0002.log wmi - | grep "^[0-9]*[ ]*wmi" | cut -c7- > $TMPLOG diff $TMPLOG $FWTSTESTDIR/wmi-0001/wmi-0002.log >> $FAILURE_LOG ret=$? if [ $ret -eq 0 ]; then echo PASSED: $TEST, $NAME else echo FAILED: $TEST, $NAME fi rm $TMPLOG exit $ret fwts-test/wmi-0001/test-0003.sh000077500000000000000000000010251231470457100160700ustar00rootroot00000000000000#!/bin/bash # TEST="Test wmi against known incorrect ACPI tables" NAME=test-0003.sh TMPLOG=$TMP/wmi.log.$$ $FWTS --show-tests | grep wmi > /dev/null if [ $? -eq 1 ]; then echo SKIP: $TEST, $NAME exit 77 fi $FWTS --log-format="%line %owner " -w 80 --dumpfile=$FWTSTESTDIR/wmi-0001/acpidump-0003.log wmi - | grep "^[0-9]*[ ]*wmi" | cut -c7- > $TMPLOG diff $TMPLOG $FWTSTESTDIR/wmi-0001/wmi-0003.log >> $FAILURE_LOG ret=$? if [ $ret -eq 0 ]; then echo PASSED: $TEST, $NAME else echo FAILED: $TEST, $NAME fi rm $TMPLOG exit $ret fwts-test/wmi-0001/wmi-0001.log000066400000000000000000000126321231470457100160550ustar00rootroot00000000000000wmi wmi: Extract and analyse Windows Management wmi Instrumentation (WMI). wmi ---------------------------------------------------------- wmi Test 1 of 1: Windows Management Instrumentation test. wmi wmi \_SB_.WMI1._WDG (1 of 9) wmi GUID: 51F5230E-9677-46CD-A1CF-C0B23EE34DB7 wmi WMI Object: wmi Flags : 0x05 (Expensive | String) wmi Object ID : A0 wmi Instance : 0x50 wmi wmi \_SB_.WMI1._WDG (2 of 9) wmi GUID: 98479A64-33F5-4E33-A707-8E251EBBC3A1 wmi WMI Method: wmi Flags : 0x06 (Method | String) wmi Object ID : A1 wmi Instance : 0x01 wmi PASSED: Test 1, 98479A64-33F5-4E33-A707-8E251EBBC3A1 has wmi associated method \_SB_.WMI1.WMA1 wmi wmi \_SB_.WMI1._WDG (3 of 9) wmi GUID: 6A4B54EF-A5ED-4D33-9455-B0D9B48DF4B3 wmi WMI Method: wmi Flags : 0x06 (Method | String) wmi Object ID : A2 wmi Instance : 0x01 wmi PASSED: Test 1, 6A4B54EF-A5ED-4D33-9455-B0D9B48DF4B3 has wmi associated method \_SB_.WMI1.WMA2 wmi wmi \_SB_.WMI1._WDG (4 of 9) wmi GUID: 74F1EBB6-927A-4C7D-95DF-698E21E80EB5 wmi WMI Method: wmi Flags : 0x06 (Method | String) wmi Object ID : A3 wmi Instance : 0x01 wmi PASSED: Test 1, 74F1EBB6-927A-4C7D-95DF-698E21E80EB5 has wmi associated method \_SB_.WMI1.WMA3 wmi wmi \_SB_.WMI1._WDG (5 of 9) wmi GUID: 7EEF04FF-4328-447C-B5BB-D449925D538D wmi WMI Method: wmi Flags : 0x06 (Method | String) wmi Object ID : A4 wmi Instance : 0x01 wmi PASSED: Test 1, 7EEF04FF-4328-447C-B5BB-D449925D538D has wmi associated method \_SB_.WMI1.WMA4 wmi wmi \_SB_.WMI1._WDG (6 of 9) wmi GUID: 8ADB159E-1E32-455C-BC93-308A7ED98246 wmi WMI Object: wmi Flags : 0x01 (Expensive) wmi Object ID : A5 wmi Instance : 0x01 wmi wmi \_SB_.WMI1._WDG (7 of 9) wmi GUID: 2651D9FD-911C-4B69-B94E-D0DED5963BD7 wmi WMI Method: wmi Flags : 0x06 (Method | String) wmi Object ID : A6 wmi Instance : 0x01 wmi PASSED: Test 1, 2651D9FD-911C-4B69-B94E-D0DED5963BD7 has wmi associated method \_SB_.WMI1.WMA6 wmi wmi \_SB_.WMI1._WDG (8 of 9) wmi GUID: 7364651A-132F-4FE7-ADAA-40C6C7EE2E3B wmi WMI Method: wmi Flags : 0x06 (Method | String) wmi Object ID : A7 wmi Instance : 0x01 wmi PASSED: Test 1, 7364651A-132F-4FE7-ADAA-40C6C7EE2E3B has wmi associated method \_SB_.WMI1.WMA7 wmi wmi \_SB_.WMI1._WDG (9 of 9) wmi GUID: 05901221-D566-11D1-B2F0-00A0C9062910 wmi WMI Object: wmi Flags : 0x00 (None) wmi Object ID : BA wmi Instance : 0x01 wmi wmi \_SB_.WMI2._WDG (1 of 5) wmi GUID: FCB424F1-075A-4E0E-BFC4-62F3E71771FA wmi WMI Object: wmi Flags : 0x01 (Expensive) wmi Object ID : A7 wmi Instance : 0x01 wmi wmi \_SB_.WMI2._WDG (2 of 5) wmi GUID: E2BE5EE3-42DA-49DB-8378-1F5247388202 wmi WMI Method: wmi Flags : 0x02 (Method) wmi Object ID : A8 wmi Instance : 0x01 wmi PASSED: Test 1, E2BE5EE3-42DA-49DB-8378-1F5247388202 has wmi associated method \_SB_.WMI2.WMA8 wmi wmi \_SB_.WMI2._WDG (3 of 5) wmi GUID: 7430019A-DCE9-4548-BAB0-9FDE0935CAFF wmi WMI Object: wmi Flags : 0x05 (Expensive | String) wmi Object ID : A9 wmi Instance : 0x0a wmi wmi \_SB_.WMI2._WDG (4 of 5) wmi GUID: 7FF47003-3B6C-4E5E-A227-E979824A85D1 wmi WMI Method: wmi Flags : 0x06 (Method | String) wmi Object ID : AA wmi Instance : 0x01 wmi PASSED: Test 1, 7FF47003-3B6C-4E5E-A227-E979824A85D1 has wmi associated method \_SB_.WMI2.WMAA wmi wmi \_SB_.WMI2._WDG (5 of 5) wmi GUID: 05901221-D566-11D1-B2F0-00A0C9062910 wmi WMI Object: wmi Flags : 0x00 (None) wmi Object ID : BB wmi Instance : 0x01 wmi wmi ========================================================== wmi 8 passed, 0 failed, 0 warning, 0 aborted, 0 skipped, 0 wmi info only. wmi ========================================================== fwts-test/wmi-0001/wmi-0002.log000066400000000000000000000026761231470457100160650ustar00rootroot00000000000000wmi wmi: Extract and analyse Windows Management wmi Instrumentation (WMI). wmi ---------------------------------------------------------- wmi Test 1 of 1: Windows Management Instrumentation test. wmi wmi \_SB_.ATKD._WDG (1 of 2) wmi GUID: 97845ED0-4E6D-11DE-8A39-0800200C9A66 wmi WMI Method: wmi Flags : 0x02 (Method) wmi Object ID : NB wmi Instance : 0x01 wmi Driver : asus-wmi (Asus) wmi PASSED: Test 1, 97845ED0-4E6D-11DE-8A39-0800200C9A66 has wmi associated method \_SB_.ATKD.WMNB wmi wmi \_SB_.ATKD._WDG (2 of 2) wmi GUID: 0B3CBB35-E3C2-45ED-91C2-4C5A6D195D1C wmi WMI Event: wmi Flags : 0x08 (Event) wmi Notification ID: 0xff wmi Reserved : 0x00 wmi Instance : 0x01 wmi Driver : asus-nb-wmi (Asus) wmi PASSED: Test 1, All events associated with \_SB_.ATKD._WDG wmi are handled by a kernel driver. wmi wmi ========================================================== wmi 2 passed, 0 failed, 0 warning, 0 aborted, 0 skipped, 0 wmi info only. wmi ========================================================== fwts-test/wmi-0001/wmi-0003.log000066400000000000000000000051431231470457100160560ustar00rootroot00000000000000wmi wmi: Extract and analyse Windows Management wmi Instrumentation (WMI). wmi ---------------------------------------------------------- wmi Test 1 of 1: Windows Management Instrumentation test. wmi wmi \_SB_.AMW0._WDG (1 of 6) wmi GUID: 8D9DDCBC-A997-11DA-B012-B622A1EF5492 wmi WMI Object: wmi Flags : 0x00 (None) wmi Object ID : AA wmi Instance : 0x01 wmi wmi \_SB_.AMW0._WDG (2 of 6) wmi GUID: A80593CE-A997-11DA-B012-B622A1EF5492 wmi WMI Method: wmi Flags : 0x02 (Method) wmi Object ID : BA wmi Instance : 0x01 wmi PASSED: Test 1, A80593CE-A997-11DA-B012-B622A1EF5492 has wmi associated method \_SB_.AMW0.WMBA wmi wmi \_SB_.AMW0._WDG (3 of 6) wmi GUID: DD8C7670-1CB5-11DB-A98B-669A0C200008 wmi WMI Method: wmi Flags : 0x02 (Method) wmi Object ID : BC wmi Instance : 0x01 wmi PASSED: Test 1, DD8C7670-1CB5-11DB-A98B-669A0C200008 has wmi associated method \_SB_.AMW0.WMBC wmi wmi \_SB_.AMW0._WDG (4 of 6) wmi GUID: 9DBB5994-A997-11DA-B012-B622A1EF5492 wmi WMI Event: wmi Flags : 0x08 (Event) wmi Notification ID: 0xd0 wmi Reserved : 0x00 wmi Instance : 0x01 wmi Driver : dell-wmi (Dell) wmi wmi \_SB_.AMW0._WDG (5 of 6) wmi GUID: A3776CE0-1E88-11DB-A98B-0800200C9A66 wmi WMI Object: wmi Flags : 0x00 (None) wmi Object ID : BC wmi Instance : 0x01 wmi wmi \_SB_.AMW0._WDG (6 of 6) wmi GUID: 05901221-D566-11D1-B2F0-00A0C9062910 wmi WMI Object: wmi Flags : 0x00 (None) wmi Object ID : MO wmi Instance : 0x01 wmi PASSED: Test 1, All events associated with \_SB_.AMW0._WDG wmi are handled by a kernel driver. wmi wmi ========================================================== wmi 3 passed, 0 failed, 0 warning, 0 aborted, 0 skipped, 0 wmi info only. wmi ========================================================== live-image/000077500000000000000000000000001231470457100131015ustar00rootroot00000000000000live-image/fwts-frontend-text000077500000000000000000000150051231470457100166120ustar00rootroot00000000000000#!/bin/bash # # Copyright (C) 2010-2014 Canonical # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # FWTS="Firmware Test Suite" OPTIONS="/tmp/options.$$" DIALOG_CMD="/tmp/fwts.cmd.$$" export DIALOGRC="/usr/share/fwts/fwts-live-dialogrc" FWTS_DATE=`date +%d%m%Y` FWTS_TIME=`date +%H%M` # # Check if executed as root or with sudo # if [ $EUID -ne 0 ]; then echo "`basename $0`: must be executed with sudo" exit 1 fi # # for debugging, use: # - WORK_DIR=./fwts/$FWTS_DATE/$FWTS_TIME # if booting in fwts-live # - change FWTS_AUTO_SHUTDOWN= to alter default shutdown after testing completion # WORK_DIR=/fwts/$FWTS_DATE/$FWTS_TIME FWTS_AUTO_SHUTDOWN="$1" SHUTDOWN_AT_END=1 # # set WORK_DIR to /cdrom/fwts if booting via casper # if [ `grep -qs boot=casper /proc/cmdline; echo $?` -eq 0 ]; then CASPER_DETECTED=1 WORK_DIR=/cdrom/fwts/$FWTS_DATE/$FWTS_TIME fi # # check /proc/cmdline and argv[1] for FWTS_AUTO_SHUTDOWN to toggle auto shutdown # if [ `grep -qs FWTS_AUTO_SHUTDOWN=1 /proc/cmdline; echo $?` -ne 0 ]; then if [ -n "${CASPER_DETECTED:+x}" ]; then SHUTDOWN_AT_END=0 elif [ -n "${FWTS_AUTO_SHUTDOWN:+x}" ]; then SHUTDOWN_AT_END=0 fi fi do_help() { dialog --backtitle "$FWTS" --title "Help" --msgbox \ "To make selections from the menu use the following keys:\n\nUse the up/down cursor keys to navigate to the desired menu option and the bar to tick the menu selection.\n\nUse the left/right or tab keys to navigate the button options and press the key to select." 13 60 } # # Run a bunch of tests and monitor progress # do_test() { num_tests=`fwts $1 --show-tests | wc -l` num_tests=$((num_tests - 1)) if [ $num_tests -gt 0 ]; then fwts --force-clean --skip-test=s3,s4 $1 --show-progress-dialog --log-type plaintext,html | dialog --backtitle "$FWTS" --title "$2" --gauge "" 13 80 0 fi } # # Get user choice of tests to run # select_tests() { while true do declare -a tests x=0 # # Discover available tests # fwts --batch --batch-experimental --uefi --unsafe --show-tests | grep "^ "| sort | uniq > $OPTIONS while read test text do ((x++)) tests[$x]=$test txt="${txt} ${x} \"${text}\" off" done < $OPTIONS rm $OPTIONS # # Construct and run dialog # echo dialog --backtitle '"$FWTS"' --title '"Select Tests to Run"' --help-button --checklist '"Select from the list below the test(s) you want to run. Use up/down cursor keys, space to select and enter to start:"' 20 70 $x $txt > $DIALOG_CMD . $DIALOG_CMD 2> $OPTIONS ret=$? rm $DIALOG_CMD # # Scan return selections and build fwts test scenarios # x=0 for i in `cat $OPTIONS` do ((x++)) i=${i#\"} i=${i%\"} run_tests="$run_tests ${tests[$i]}" done # # Handle dialog exit states: # case $ret in 0) if [ $x -eq 0 ]; then dialog --backtitle "$FWTS" --title "No Tests Selected!" --msgbox \ " You did not select any tests to be run." 5 50 else fwts --force-clean $run_tests --show-progress-dialog --log-type plaintext,html | dialog --backtitle "$FWTS" --title "$2" --gauge "" 15 80 0 done_tests_finish fi ;; 1) return ;; 2) do_help ;; 255) no_tests_finish ;; esac done } # # View the results log # view_results() { tempfile=/tmp/view_results.tmp.$$ dialog --print-maxsize 2>| $tempfile term_height=`sed -n "s/^MaxSize: \([0-9]*\), \([0-9]*\)$/\1/p" $tempfile 2> /dev/null` term_width=` sed -n "s/^MaxSize: \([0-9]*\), \([0-9]*\)$/\2/p" $tempfile 2> /dev/null` term_height=$((term_height)) term_width=$((term_width - 2)) rm $tempfile dialog --backtitle "$FWTS" --title "Test Results" \ --textbox results.log \ $term_height $term_width } # # Shutdown or exit # finish() { if [ $SHUTDOWN_AT_END -eq 1 ]; then dialog --backtitle "$FWTS" --infobox " Shutting down.." 3 30 shutdown -P now exit 0 else dialog --clear exit 0 fi } # # Aborted, no tests run # no_tests_finish() { dialog --backtitle "$FWTS" --title "Abort Testing!" --msgbox \ " You did not select any tests to be run.\n\n Press Enter to shutdown." 7 50 finish } # # Finish after running some tests # done_tests_finish() { if [ -n "${CASPER_DETECTED:+x}" ]; then cd $WORK_DIR mv ./results.html ../../results.html else ln -sf $WORK_DIR/results.html /fwts/results.html fi dialog --backtitle "$FWTS" --title "Testing Complete" --yesno \ "The results can be found on the USB stick in the\n the directory: /fwts/$FWTS_DATE/$FWTS_TIME/results.log\n\n Do you want to view the results log now?" 9 55 case $? in 0) view_results ;; 1|255) ;; esac dialog --backtitle "$FWTS" --title "Testing Complete" --msgbox \ "The results can be found on the USB stick in the\n the directory: /fwts/$FWTS_DATE/$FWTS_TIME/results.log\n\n Press Enter to shutdown" 9 55 finish } # # Here we go.. # mkdir -p $WORK_DIR >& /dev/null if [ $? -ne 0 ]; then dialog --ok-label "Shutdown" --backtitle "$FWTS" --title "Error" --msgbox "Could not create directory fwts/$FWTS_DATE/$FWTS_TIME to store test results.\n\n Press Enter to shutdown." 8 50 finish exit 0 fi while true do dialog --help-button --backtitle "$FWTS" --title "Select Tests" --radiolist \ "This will run a suite of firmware tests that will check the BIOS and ACPI tables. It can also find issues that can cause Linux problems.\n\n\ The default below is to run just all the Batch Tests, but you can select more tests below if required.\n\nPlease select below (using cursor up/down and space) and press enter to continue:" \ 18 70 4 \ 1 "All Batch Tests" on \ 2 "Select Individual Tests" off \ 3 "Abort Testing" off \ 2> $OPTIONS case $? in 0) cd $WORK_DIR >& /dev/null case `cat $OPTIONS` in '1') do_test "--batch" 'Running Batch Tests' done_tests_finish ;; '2') select_tests ;; '3') no_tests_finish ;; esac ;; 2) do_help ;; 1|255) no_tests_finish ;; esac done live-image/fwts-live-dialogrc000066400000000000000000000050271231470457100165320ustar00rootroot00000000000000# # Run-time configuration file for dialog # # Automatically generated by "dialog --create-rc " # # # Types of values: # # Number - # String - "string" # Boolean - # Attribute - (foreground,background,highlight?) # Set aspect-ration. aspect = 0 # Set separator (for multiple widgets output). separate_widget = "" # Set tab-length (for textbox tab-conversion). tab_len = 0 # Make tab-traversal for checklist, etc., include the list. visit_items = OFF # Shadow dialog boxes? This also turns on color. use_shadow = ON # Turn color support ON or OFF use_colors = ON # Screen color screen_color = (WHITE,MAGENTA,ON) # Shadow color shadow_color = (BLACK,BLACK,ON) # Dialog box color dialog_color = (BLACK,WHITE,OFF) # Dialog box title color title_color = (RED,WHITE,ON) # Dialog box border color border_color = (WHITE,WHITE,ON) # Active button color button_active_color = (WHITE,RED,ON) # Inactive button color button_inactive_color = (BLACK,WHITE,OFF) # Active button key color button_key_active_color = (WHITE,RED,ON) # Inactive button key color button_key_inactive_color = (RED,WHITE,OFF) # Active button label color button_label_active_color = (YELLOW,RED,ON) # Inactive button label color button_label_inactive_color = (BLACK,WHITE,ON) # Input box color inputbox_color = (BLACK,WHITE,OFF) # Input box border color inputbox_border_color = (BLACK,WHITE,OFF) # Search box color searchbox_color = (BLACK,WHITE,OFF) # Search box title color searchbox_title_color = (RED,WHITE,ON) # Search box border color searchbox_border_color = (WHITE,WHITE,ON) # File position indicator color position_indicator_color = (RED,WHITE,ON) # Menu box color menubox_color = (BLACK,WHITE,OFF) # Menu box border color menubox_border_color = (WHITE,WHITE,ON) # Item color item_color = (BLACK,WHITE,OFF) # Selected item color item_selected_color = (WHITE,RED,ON) # Tag color tag_color = (RED,WHITE,ON) # Selected tag color tag_selected_color = (YELLOW,RED,ON) # Tag key color tag_key_color = (RED,WHITE,OFF) # Selected tag key color tag_key_selected_color = (WHITE,RED,ON) # Check box color check_color = (BLACK,WHITE,OFF) # Selected check box color check_selected_color = (WHITE,RED,ON) # Up arrow color uarrow_color = (GREEN,WHITE,ON) # Down arrow color darrow_color = (GREEN,WHITE,ON) # Item help-text color itemhelp_color = (WHITE,BLACK,OFF) # Active form text color form_active_text_color = (WHITE,RED,ON) # Form text color form_text_color = (WHITE,CYAN,ON) # Readonly form item color form_item_readonly_color = (CYAN,WHITE,ON) m4/000077500000000000000000000000001231470457100114025ustar00rootroot00000000000000m4/.gitignore000066400000000000000000000000161231470457100133670ustar00rootroot00000000000000* !.gitignore scripts/000077500000000000000000000000001231470457100125515ustar00rootroot00000000000000scripts/fwts-collect000077500000000000000000000067751231470457100151240ustar00rootroot00000000000000#!/bin/bash # # Copyright (C) 2012-2014 Canonical # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # OUTNAME=fwts-logs.tar.gz TMPDIR=/tmp/fwts.$$ FWTS=`which fwts` # # Check if executed as root or with sudo # if [ $EUID -ne 0 ]; then echo "`basename $0`: must be executed with sudo" exit 1 fi # # sighandler # on_die() { if [ -d $TMPDIR ]; then rm -rf $TMPDIR echo "Interrupted, exiting." exit 1 fi } # # Show how to use this script # show_help() { cat << EOD fwts-collect [ LOGFILEs... ] Collect up fwts related logs and put them in a gzip'd tar file for appending to bug reports. By default this will collect the basic logs and system related information, but one can also specify extra files to add to the archive too. example: sudo fwts-collect report.log /var/log/messages EOD } # # Dump out ACPI interrupt stats # acpi_irq_dump() { if [ -d /sys/firmware/acpi/interrupts ]; then echo "/sys/firmware/acpi/interrupts:" echo " " for I in /sys/firmware/acpi/interrupts/* do name=`basename $I` echo -e "$name\t" `cat $I` done fi } while getopts "o:h" opt; do case $opt in h) show_help exit 0 ;; \?) echo "Invalid option: -$OPTARG" 1>&2 exit 1 ;; esac done OUTFILE=`basename $OUTNAME` OUTPATH=$PWD OUTNAME=$OUTPATH/$OUTFILE # # Sanity checks # if [ -d $OUTNAME ] ; then echo "$OUTNAME is a directory and already exists." 1>&2 exit 1 fi if [ -e $OUTNAME ] ; then echo "File $OUTFILE already exists." 1>&2 exit 1 fi if [[ $EUID -ne 0 ]]; then echo "Need to run this as root" 1>&2 exit 1 fi if [ -z $FWTS ]; then echo "Firmware test suite fwts does not exist!" 1>&2 exit 1 fi if [ -d $TMPDIR ]; then echo "Cannot create temporary directory $TMPDIR: already exists!" 1>&2 exit 1 fi trap 'on_die' TERM INT mkdir $TMPDIR err=$? if [ $err -ne 0 ]; then echo "Cannot create temporary directory $TMPDIR: error $err" 1>&2 exit 1 fi # # Dump out logs # cd $TMPDIR # # General /proc info # cat /proc/iomem > iomem.log cat /proc/mtrr > mtrr.log cat /proc/interrupts > interrupts.log acpi_irq_dump > acpi_irqs.log # # Copy of kernel log # cp /var/log/kern.log kern.log # # fwts specific output # fwts --dump >& /dev/null fwts cmosdump --log-format="" -r cmosdump.log >& /dev/null fwts ebdadump --log-format="" -r ebdadump.log >& /dev/null fwts uefidump --log-format="" -r uefidump.log >& /dev/null fwts memmapdump --log-format="" -r memmap.log >& /dev/null fwts acpidump --log-format="" -r acpitables.log >& /dev/null fwts mpdump --log-format="" -r mpdump.log >& /dev/null fwts version --log-format="" -r version.log >& /dev/null # # Copy over any extra user specified logs # cd $OUTPATH while [ $# -ne 0 ] do if [ -e $1 ]; then cp $1 $TMPDIR else echo "File $1 does not exist!" 1>& 2 rm -rf $TMPDIR exit 1 fi shift done # # Now archive up the files # cd $TMPDIR tar cfz - . > $OUTNAME cd $OUTPATH rm -rf $TMPDIR exit 0 smatchify.sh000077500000000000000000000050271231470457100134140ustar00rootroot00000000000000#!/bin/bash # # Copyright (C) 2012-2014 Canonical # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # SMATCH_DIR=smatch SMATCH_REPO=git://repo.or.cz/smatch DEPENDENCIES="libxml2-dev llvm-dev libsqlite3-dev" INCLUDES="-I/usr/lib/gcc/i686-linux-gnu/ -I/usr/include/x86_64-linux-gnu" HERE=$(pwd) # # Install any packages we depend on to build smatch # smatch_install_dependencies() { install="" echo "Checking for dependencies for smatch.." for d in ${DEPENDENCIES} do if [ "$(dpkg -l | grep $d)" == "" ]; then install="$install $d" fi done if [ "$install" != "" ]; then echo "Need to install:$install" sudo apt-get install $install if [ $? -ne 0 ]; then echo "Installation of packages failed" exit 1 fi fi } # # Get an up to date version of smatch # smatch_get() { if [ -d ${SMATCH_DIR} ]; then echo "Getting latest version of smatch.." cd ${SMATCH_DIR} git checkout -f master >& /dev/null git fetch origin >& /dev/null git fetch origin master >& /dev/null git reset --hard FETCH_HEAD >& /dev/null cd ${HERE} else echo "Getting smatch.." git clone ${SMATCH_REPO} ${SMATCH_DIR} fi } # # Build smatch # smatch_build() { cd ${SMATCH_DIR} echo "Smatch: make clean.." make clean >& /dev/null echo "Smatch: make.." make > /dev/null 2>&1 if [ $? -eq 0 ]; then echo "Build of smatch succeeded" else echo "Build of smatchfailed" exit 1 fi cd ${HERE} } # # Build fwts using smatch # smatch_fwts() { echo "Building fwts.." autoreconf -ivf > /dev/null ./configure > /dev/null make clean make CHECK="${HERE}/${SMATCH_DIR}/smatch --full-path" \ CC="${HERE}/${SMATCH_DIR}/cgcc $INCLUDES" | tee smatch.log } # # Check for errors # smatch_errors() { errors=$(grep "error: " smatch.log | wc -l) echo " " echo "Smatch found $errors errors, see smatch.log for more details." } smatch_install_dependencies smatch_get smatch_build smatch_fwts smatch_errors src/000077500000000000000000000000001231470457100116515ustar00rootroot00000000000000src/Makefile.am000066400000000000000000000052521231470457100137110ustar00rootroot00000000000000# Must build in this order: # 1. acpica/source/compiler # 2. lib # 3. acpica # ... because the libs in this bundled acpica/ depend on lib/ (libfwts.so), # but libfwts.so depends on libraries produced by acpica/source/compiler. SUBDIRS = acpica/source/compiler lib acpica AM_CPPFLAGS = \ -I$(top_srcdir)/src/lib/include \ -I$(top_srcdir)/src/acpica/source/include \ -I$(top_srcdir)/src/acpica/source/compiler \ -I$(top_srcdir)/efi_runtime \ -Wall -Werror -Wextra bin_PROGRAMS = fwts fwts_CPPFLAGS = $(AM_CPPFLAGS) # # fwts main + tests # fwts_SOURCES = main.c \ acpi/ac_adapter/ac_adapter.c \ acpi/acpidump/acpidump.c \ acpi/acpiinfo/acpiinfo.c \ acpi/acpitables/acpitables.c \ acpi/apicinstance/apicinstance.c \ acpi/battery/battery.c \ acpi/brightness/brightness-helper.c \ acpi/brightness/brightness.c \ acpi/brightness/autobrightness.c \ acpi/checksum/checksum.c \ acpi/crsdump/crsdump.c \ acpi/crsdump/prsdump.c \ acpi/cstates/cstates.c \ acpi/dmar/dmar.c \ acpi/fadt/fadt.c \ acpi/fan/fan.c \ acpi/gpedump/gpedump.c \ acpi/lid/lid.c \ acpi/mcfg/mcfg.c \ acpi/method/method.c \ acpi/osilinux/osilinux.c \ acpi/pcc/pcc.c \ acpi/powerbutton/powerbutton.c \ acpi/plddump/plddump.c \ acpi/s3/s3.c \ acpi/s3power/s3power.c \ acpi/s4/s4.c \ acpi/syntaxcheck/syntaxcheck.c \ acpi/wakealarm/wakealarm.c \ acpi/wmi/wmi.c \ apic/apicedge/apicedge.c \ bios/bios_info/bios_info.c \ bios/bios32/bios32.c \ bios/ebda_region/ebda_region.c \ bios/ebdadump/ebdadump.c \ bios/hdaaudio/hdaaudio.c \ bios/memmapdump/memmapdump.c \ bios/mtrr/mtrr.c \ bios/multiproc/mpcheck.c \ bios/multiproc/mpdump.c \ bios/os2gap/os2gap.c \ bios/pciirq/pciirq.c \ bios/pnp/pnp.c \ bios/romdump/romdump.c \ cmos/cmosdump/cmosdump.c \ cpu/virt/virt.c \ cpu/virt/virt_svm.c \ cpu/virt/virt_vmx.c \ cpu/maxfreq/maxfreq.c \ cpu/cpufreq/cpufreq.c \ cpu/nx/nx.c \ cpu/msr/msr.c \ cpu/microcode/microcode.c \ dmi/dmicheck/dmicheck.c \ hotkey/hotkey/hotkey.c \ hpet/hpet_check/hpet_check.c \ kernel/klog/klog.c \ kernel/oops/oops.c \ kernel/version/version.c \ pci/aspm/aspm.c \ pci/crs/crs.c \ pci/maxreadreq/maxreadreq.c \ uefi/csm/csm.c \ uefi/uefidump/uefidump.c \ uefi/uefirttime/uefirttime.c \ uefi/uefirtvariable/uefirtvariable.c \ uefi/uefirtmisc/uefirtmisc.c \ uefi/securebootcert/securebootcert.c \ uefi/uefivarinfo/uefivarinfo.c fwts_LDFLAGS = -lm fwts_LDADD = \ -Llib/src -lfwts \ -L$(top_srcdir)/src/acpica -lfwtsacpica man_MANS = ../doc/fwts.1 ../doc/fwts-collect.1 ../doc/fwts-frontend-text.1 src/acpi/000077500000000000000000000000001231470457100125655ustar00rootroot00000000000000src/acpi/ac_adapter/000077500000000000000000000000001231470457100146505ustar00rootroot00000000000000src/acpi/ac_adapter/ac_adapter.c000066400000000000000000000111271231470457100171010ustar00rootroot00000000000000/* * Copyright (C) 2010-2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #include "fwts.h" #ifdef FWTS_ARCH_INTEL #include #include #include #include static int ac_adapter_init(fwts_framework *fw) { int matching = 0; int not_matching = 0; if (fwts_ac_adapter_get_state(FWTS_AC_ADAPTER_ANY, &matching, ¬_matching) != FWTS_OK) { fwts_failed(fw, LOG_LEVEL_LOW, "NoACAdapterEntry", "No %s or %s directory available: cannot test.", FWTS_SYS_CLASS_POWER_SUPPLY, FWTS_PROC_ACPI_AC_ADAPTER); return FWTS_ERROR; } return FWTS_OK; } static int ac_adapter_test1(fwts_framework *fw) { int matching = 0; int not_matching = 0; fwts_ac_adapter_get_state(FWTS_AC_ADAPTER_ANY, &matching, ¬_matching); if ((matching == 0) || (not_matching > 0)) fwts_failed(fw, LOG_LEVEL_LOW, "NoACAdapterState", "Failed to detect any state in the ac_adapter state info."); else fwts_passed(fw, "Detected a state in the ac_adapter state info."); return FWTS_OK; } static int ac_adapter_test2(fwts_framework *fw) { int matching = 0; int not_matching = 0; fwts_printf(fw, "==== Make sure laptop is connected to the mains power. ====\n"); fwts_press_enter(fw); fwts_ac_adapter_get_state(FWTS_AC_ADAPTER_ONLINE, &matching, ¬_matching); if ((matching == 0) || (not_matching > 0)) fwts_failed(fw, LOG_LEVEL_HIGH, "NoACAdapterOnLine", "Failed to detect an ac_adapter on-line state."); else fwts_passed(fw, "Detected ac_adapter on-line state."); return FWTS_OK; } static int ac_adapter_test3(fwts_framework *fw) { int fd; size_t len; char *buffer; int matching; int not_matching; int events; int i; if ((fd = fwts_acpi_event_open()) < 0) { fwts_log_error(fw, "Cannot connect to acpid."); return FWTS_ERROR; } events = 0; matching = 0; not_matching = 0; fwts_printf(fw, "==== Please unplug the laptop power. ====\n"); for (i=0;i<20;i++) { if ((buffer = fwts_acpi_event_read(fd, &len, 1)) != NULL) { if (strstr(buffer, "ac_adapter")) { events++; fwts_ac_adapter_get_state(FWTS_AC_ADAPTER_OFFLINE, &matching, ¬_matching); break; } free(buffer); } fwts_printf(fw, "Waiting %2.2d/20\r", 20-i); } if (events == 0) fwts_failed(fw, LOG_LEVEL_HIGH, "NoACAdapterEventsOff", "Did not detect any ACPI ac-adapter events while waiting for power to be disconnected."); else if ((matching == 0) || (not_matching > 0)) fwts_failed(fw, LOG_LEVEL_HIGH, "NoACAdapterOffline", "Could not detect ac_adapter off-line state."); else fwts_passed(fw, "Detected ac_adapter off-line state."); events = 0; matching = 0; not_matching = 0; fwts_printf(fw, "==== Please re-connect the laptop power. ====\n"); for (i=0;i<20;i++) { if ((buffer = fwts_acpi_event_read(fd, &len, 1)) != NULL) { events++; if (strstr(buffer, "ac_adapter")) { events++; fwts_ac_adapter_get_state(FWTS_AC_ADAPTER_ONLINE, &matching, ¬_matching); break; } free(buffer); } fwts_printf(fw, "Waiting %2.2d/20\r", 20-i); } if (events == 0) fwts_failed(fw, LOG_LEVEL_HIGH, "NoACAdapterEventsOn", "Did not detect any ACPI ac-adapter events while waiting for power to be re-connected."); else if ((matching == 0) || (not_matching > 0)) fwts_failed(fw, LOG_LEVEL_HIGH, "NoACAdapterOnline", "Could not detect ac_adapter on-line state."); else fwts_passed(fw, "Detected ac_adapter on-line state."); fwts_acpi_event_close(fd); return FWTS_OK; } static fwts_framework_minor_test ac_adapter_tests[] = { { ac_adapter_test1, "Test ACPI ac_adapter state." }, { ac_adapter_test2, "Test ac_adapter initial on-line state." }, { ac_adapter_test3, "Test ac_adapter state changes." }, { NULL, NULL } }; static fwts_framework_ops ac_adapter_ops = { .description = "Interactive ac_adapter power test.", .init = ac_adapter_init, .minor_tests = ac_adapter_tests }; FWTS_REGISTER("ac_adapter", &ac_adapter_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_INTERACTIVE); #endif src/acpi/acpidump/000077500000000000000000000000001231470457100143675ustar00rootroot00000000000000src/acpi/acpidump/acpidump.c000066400000000000000000002305721231470457100163460ustar00rootroot00000000000000/* * Copyright (C) 2010-2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #include #include #include #include #include #include #include #include #include #include "fwts.h" struct fwts_acpidump_field; typedef void (*fwts_acpidump_field_func)(fwts_framework *fw, const struct fwts_acpidump_field *info, const void *data, const int offset); typedef char *(*fwts_acpidump_str_func)(const uint64_t val); typedef struct fwts_acpidump_field { const char *label; /* Name of field */ const int size; /* Size of field in struct in bytes */ const size_t offset; /* Offset of field from start of struct */ const fwts_acpidump_field_func func; /* Field dumping function */ const uint8_t bit_field_nbits; /* Number of bits in field to dump */ const uint8_t bit_field_shift; /* Shift offset in field */ const char **strings; /* field lookup string table */ const size_t strings_len; /* length of strings table (number of entries) */ const fwts_acpidump_str_func str_func; /* string dumping function */ } fwts_acpidump_field; /* FIELD maps onto the fields in fwts_acpidump_field */ #define FIELD(label, type, field, func, bit_field_nbits, bit_field_shift, strings, strings_len, str_func) \ { \ label, \ sizeof(((type *)0)->field), \ offsetof(type, field), \ func, \ bit_field_nbits, \ bit_field_shift, \ strings, \ strings_len, \ str_func \ } #define FIELD_UINT(text, type, field) \ FIELD(text, type, field, acpi_dump_uint, 0, 0, NULL, 0, NULL) #define FIELD_UINTS(text, type, field) \ FIELD(text, type, field, acpi_dump_uints, 0, 0, NULL, 0, NULL) #define FIELD_STR(text, type, field) \ FIELD(text, type, field, acpi_dump_str, 0, 0, NULL, 0, NULL) #define FIELD_STRZ(text, type, field) \ FIELD(text, type, field, acpi_dump_strz, 0, 0, NULL, 0, NULL) #define FIELD_STRS(text, type, field, strings, strings_len) \ FIELD(text, type, field, acpi_dump_strings, 0, 0, strings, strings_len, NULL) #define FIELD_STRF(text, type, field, str_func) \ FIELD(text, type, field, acpi_dump_string_func, 0, 0, NULL, 0, str_func) #define FIELD_GAS(text, type, field) \ FIELD(text, type, field, acpi_dump_gas, 0, 0, NULL, 0, NULL) #define FIELD_BITF(text, type, field, nbits, shift) \ FIELD(text, type, field, acpi_dump_uint, nbits, shift, NULL, 0, NULL) #define FIELD_GUID(text, type, field) \ FIELD(text, type, field, acpi_dump_guid, 0, 0, NULL, 0, NULL) #define FIELD_END { NULL, 0, 0, NULL, 0, 0, NULL, 0, NULL} static char *acpi_dump_field_info( const char *label, const int size, const int offset) { static char buffer[1024]; snprintf(buffer, sizeof(buffer), "[0x%3.3x %4.4d %3d] %40.40s:", offset, offset, size, label); return buffer; } static void acpi_dump_str( fwts_framework *fw, const fwts_acpidump_field *info, const void *data, const int offset) { fwts_log_info_verbatum(fw, "%s %*.*s", acpi_dump_field_info(info->label, info->size, info->offset + offset), info->size, info->size, (char *)data); } static void acpi_dump_strz( fwts_framework *fw, const fwts_acpidump_field *info, const void *data, const int offset) { fwts_log_info_verbatum(fw, "%s %s", acpi_dump_field_info(info->label, strlen(data) + 1, info->offset + offset), (char *)data); } static uint64_t apci_dump_get_uint64_t( const fwts_acpidump_field *info, const void *data) { uint64_t ret = 0; uint64_t mask = (1ULL << (uint64_t)info->bit_field_nbits) - 1; int i; switch (info->size) { case 1: case 2: case 4: case 8: memcpy(&ret, data, info->size); break; default: ret = 0; for (i = 0; (i < info->size) && (i < 8); i++) { uint8_t val8 = *(uint8_t *)data++; ret = (ret << 8) | val8; } break; } return mask ? (ret >> info->bit_field_shift) & mask : ret; } static void acpi_dump_uint( fwts_framework *fw, const fwts_acpidump_field *info, const void *data, const int offset) { int i, hexdigits = info->size << 1; uint64_t val = apci_dump_get_uint64_t(info, data); switch (info->size) { case 1: case 2: case 4: case 8: if (info->bit_field_nbits) { hexdigits = (3 + info->bit_field_nbits) / 4; fwts_log_info_verbatum(fw, "%57.57s: 0x%*.*" PRIx64, info->label, hexdigits, hexdigits, val); } else fwts_log_info_verbatum(fw, "%s 0x%*.*" PRIx64, acpi_dump_field_info(info->label, info->size, info->offset + offset), hexdigits, hexdigits, val); break; default: for (i = 0; i < info->size; i++) { uint8_t val8 = *(uint8_t *)data++; fwts_log_info_verbatum(fw, "%s 0x%2.2x [%d]", acpi_dump_field_info(info->label, info->size, info->offset + offset), val8, i); } break; } } static void acpi_dump_uints( fwts_framework *fw, const fwts_acpidump_field *info, const void *data, const int offset) { size_t n, length = info->size; uint8_t *ptr = (uint8_t *)data; for (n = 0; n < length; n += 8) { int i; int j; int todo = length - n > 8 ? 8 : length - n; char buffer[128]; for (i = 0, j = 0, *buffer = '\0'; i < todo; i++, ptr++) j += snprintf(buffer + j, sizeof(buffer) - j, "%2.2x ", *ptr); fwts_log_info_verbatum(fw, "%s %s", acpi_dump_field_info(info->label, info->size, info->offset + offset), buffer); } } static void acpi_dump_guid( fwts_framework *fw, const fwts_acpidump_field *info, const void *data, const int offset) { char guid[37]; fwts_guid_buf_to_str(data, guid, sizeof(guid)); fwts_log_info_verbatum(fw, "%s %s", acpi_dump_field_info(info->label, info->size, info->offset + offset), guid); } static void acpi_dump_strings( fwts_framework *fw, const fwts_acpidump_field *info, const void *data, const int offset) { int hexdigits = info->size << 1; uint64_t val = apci_dump_get_uint64_t(info, data); fwts_log_info_verbatum(fw, "%s 0x%*.*" PRIx64 " (%s)", acpi_dump_field_info(info->label, info->size, info->offset + offset), hexdigits, hexdigits, val, val > info->strings_len ? "Unknown" : info->strings[val]); } static void acpi_dump_string_func( fwts_framework *fw, const fwts_acpidump_field *info, const void *data, const int offset) { int hexdigits = info->size << 1; uint64_t val = apci_dump_get_uint64_t(info, data); fwts_log_info_verbatum(fw, "%s 0x%*.*" PRIx64 " (%s)", acpi_dump_field_info(info->label, info->size, info->offset + offset), hexdigits, hexdigits, val, info->str_func(val)); } static void acpi_dump_table_fields( fwts_framework *fw, const uint8_t *data, const fwts_acpidump_field *fields, const int offset, const size_t table_len) { const fwts_acpidump_field *field; for (field = fields; field->label != NULL; field++) if ((field->offset + field->size) <= table_len) field->func(fw, field, data + field->offset, offset); } static void __acpi_dump_table_fields( fwts_framework *fw, const uint8_t *data, const fwts_acpidump_field *fields, const size_t offset) { const fwts_acpidump_field *field; for (field = fields; field->label != NULL; field++) field->func(fw, field, data + field->offset, offset); } static void acpi_dump_raw_data( fwts_framework *fw, const uint8_t *data, const size_t length, const size_t offset) { size_t n; for (n = 0; n < length; n+=16) { int left = length - n; char buffer[128]; fwts_dump_raw_data(buffer, sizeof(buffer), data + n, n + offset, left > 16 ? 16 : left); fwts_log_info_verbatum(fw, "%s", buffer); } } static void acpi_dump_raw_table(fwts_framework *fw, const fwts_acpi_table_info *table) { fwts_log_nl(fw); acpi_dump_raw_data(fw, (uint8_t *)table->data, table->length, 0); } static char *acpi_dump_gas_address_space_id(const uint64_t index) { char *txt; switch (index) { case 0x00: txt = "System Memory"; break; case 0x01: txt = "System I/O"; break; case 0x02: txt = "PCI Configuration Space"; break; case 0x03: txt = "Embedded Controller"; break; case 0x04: txt = "SMBus"; break; case 0x05 ... 0x7e: case 0x80 ... 0xbf: txt = "Reserved"; break; case 0x7f: txt = "Functional Fixed Hardware"; break; case 0xc0 ... 0xff: txt = "OEM Defined"; break; default: txt = "Unknown"; break; } return txt; } static void acpi_dump_gas( fwts_framework *fw, const fwts_acpidump_field *info, const void *data, const int offset) { static const char const *access_width[] = { "Undefined (legacy reasons)", "Byte Access", "Word Access", "DWord Access", "QWord Access", "Unknown", }; static const fwts_acpidump_field fields[] = { FIELD_STRF(" addr_space_id", fwts_acpi_gas, address_space_id, acpi_dump_gas_address_space_id), FIELD_UINT(" reg_bit_width", fwts_acpi_gas, register_bit_width), FIELD_UINT(" reg_bit_offset", fwts_acpi_gas, register_bit_offset), FIELD_STRS(" access_width", fwts_acpi_gas, access_width, access_width, 6), FIELD_UINT(" address", fwts_acpi_gas, address), FIELD_END }; FWTS_UNUSED(offset); fwts_log_nl(fw); fwts_log_info_verbatum(fw, "%s (Generic Address Structure)", acpi_dump_field_info(info->label, info->size, offset + info->offset)); __acpi_dump_table_fields(fw, data, fields, offset + info->offset); } static void acpidump_hdr( fwts_framework *fw, const fwts_acpi_table_header *hdr, const int length) { static const fwts_acpidump_field fields[] = { FIELD_STR ("Signature", fwts_acpi_table_header, signature), FIELD_UINT("Length", fwts_acpi_table_header, length), FIELD_UINT("Revision", fwts_acpi_table_header, revision), FIELD_UINT("Checksum", fwts_acpi_table_header, checksum), FIELD_STR ("OEM ID", fwts_acpi_table_header, oem_id), FIELD_STR ("OEM Table ID", fwts_acpi_table_header, oem_tbl_id), FIELD_UINT("OEM Revision", fwts_acpi_table_header, oem_revision), FIELD_STR ("Creator ID", fwts_acpi_table_header, creator_id), FIELD_UINT("Creator Revision", fwts_acpi_table_header, creator_revision), FIELD_END }; acpi_dump_table_fields(fw, (uint8_t *)hdr, fields, 0, length); } static void acpidump_boot(fwts_framework *fw, const fwts_acpi_table_info *table) { size_t length = table->length; uint8_t cmos_data; fwts_acpi_table_boot *boot = (fwts_acpi_table_boot *)table->data; static const fwts_acpidump_field fields[] = { FIELD_UINT("CMOS offset", fwts_acpi_table_boot, cmos_index), FIELD_END }; if (length < (int)(sizeof(fwts_acpi_table_header) + 4)) { fwts_log_info(fw, "Boot table too short\n"); return; } acpi_dump_table_fields(fw, table->data, fields, 0, length); /* * We can only run the CMOS validation if we are sure the * ACPI table was loaded directly from firmware on this * machine. If the firmware came from file or was from * fwts (as a fixup) then we have to assume it is not from * this machine to be safe, so in this case, bail out with * out checking the CMOS settings. */ if (table->provenance != FWTS_ACPI_TABLE_FROM_FIRMWARE) return; if (fwts_cmos_read(boot->cmos_index, &cmos_data) == FWTS_OK) { fwts_log_info_verbatum(fw, "%56.56s: 0x%x", "Boot Register", cmos_data); fwts_log_info_verbatum(fw, "%56.56s: %x", "PNP-OS", (cmos_data & FWTS_BOOT_REGISTER_PNPOS) ? 1 : 0); fwts_log_info_verbatum(fw, "%56.56s: %x", "Booting", (cmos_data & FWTS_BOOT_REGISTER_BOOTING) ? 1 : 0); fwts_log_info_verbatum(fw, "%56.56s: %x", "Diag", (cmos_data & FWTS_BOOT_REGISTER_DIAG) ? 1 : 0); fwts_log_info_verbatum(fw, "%56.56s: %x", "Suppress", (cmos_data & FWTS_BOOT_REGISTER_SUPPRESS_BOOT_DISPLAY) ? 1 : 0); fwts_log_info_verbatum(fw, "%56.56s: %x", "Parity", (cmos_data & FWTS_BOOT_REGISTER_PARITY) ? 1 : 0); } else fwts_log_error(fw, "Cannot get read/write permission on I/O ports."); } static void acpidump_bert(fwts_framework *fw, const fwts_acpi_table_info *table) { static const fwts_acpidump_field fields[] = { FIELD_UINT("Region Length", fwts_acpi_table_bert, boot_error_region_length), FIELD_UINT("Region Addr", fwts_acpi_table_bert, boot_error_region), FIELD_END }; acpi_dump_table_fields(fw, table->data, fields, 0, table->length); } static void acpidump_cpep(fwts_framework *fw, const fwts_acpi_table_info *table) { size_t i, n = (table->length - sizeof(fwts_acpi_table_bert)) / sizeof(fwts_acpi_cpep_processor_info); for (i = 0; i < n; i++) { fwts_acpidump_field fields[] = { FIELD_UINT(" Type", fwts_acpi_table_cpep, cpep_info[i].type), FIELD_UINT(" Length", fwts_acpi_table_cpep, cpep_info[i].length), FIELD_UINT(" Processor ID", fwts_acpi_table_cpep, cpep_info[i].processor_id), FIELD_UINT(" Processor EID", fwts_acpi_table_cpep, cpep_info[i].processor_eid), FIELD_UINT(" Poll Interval (ms)",fwts_acpi_table_cpep, cpep_info[i].polling_interval), FIELD_END }; fwts_log_info_verbatum(fw, "CPEP #%zu\n", i); __acpi_dump_table_fields(fw, table->data, fields, 0); }; } static void acpidump_ecdt(fwts_framework *fw, const fwts_acpi_table_info *table) { size_t n = table->length - sizeof(fwts_acpi_table_ecdt); fwts_acpi_table_ecdt *ecdt = (fwts_acpi_table_ecdt *)table->data; static const fwts_acpidump_field fields[] = { FIELD_GAS ("EC_CONTROL",fwts_acpi_table_ecdt, ec_control), FIELD_GAS ("EC_DATA", fwts_acpi_table_ecdt, ec_data), FIELD_UINT("UID", fwts_acpi_table_ecdt, uid), FIELD_UINT("GPE_BIT", fwts_acpi_table_ecdt, gpe_bit), FIELD_END }; acpi_dump_table_fields(fw, table->data, fields, 0, table->length); fwts_log_info_verbatum(fw, "EC_ID:"); fwts_log_nl(fw); acpi_dump_raw_data(fw, ecdt->ec_id, n, sizeof(fwts_acpi_table_ecdt)); } static void acpidump_erst(fwts_framework *fw, const fwts_acpi_table_info *table) { uint32_t i; static const char *serialization_actions[] = { "BEGIN_WRITE_OPERATION", "BEGIN_READ_OPERATION", "BEGIN_CLEAR_OPERATION", "END_OPERATION", "SET_RECORD_offsetof", "EXECUTE_OPERATION", "CHECK_BUSY_STATUS", "GET_COMMAND_STATUS", "GET_RECORD_IDENTIFIER", "SET_RECORD_IDENTIFIER", "GET_RECOERD_COUNT", "BEGIN_DUMMY_WRITE_OPERATION", "RESERVED", "GET_ERROR_LOG_ADDRESS_RANGE", "GET_ERROR_LOG_ADDRESS_RANGE_LENGTH", "GET_ERROR_LOG_ADDRESS_RANGE_ATTRIBUTES" }; static const char *instructions[] = { "READ_REGISTER", "READ_REGISTER_VALUE", "WRITE_REGISTER", "WRITE_REGISTER_VALUE", "NOOP", "LOAD_VAR1", "LOAD_VAR2", "STORE_VAR1", "ADD", "SUBTRACT", "ADD_VALUE", "SUBTRACT_VALUE", "STALL", "STALL_WHILE_TRUE", "SKIP_NEXT_INSTRUCTION_IF_TRUE", "GOTO", "SET_SRC_ADDRESS_BASE", "SET_DST_ADDRESS_BASE", "MOVE_DATA" }; fwts_acpi_table_erst *erst = (fwts_acpi_table_erst *)table->data; static const fwts_acpidump_field fields[] = { FIELD_UINT("Serialization Hdr. Size", fwts_acpi_table_erst, serialization_header_size), FIELD_UINT("Insrtuction Entry Count", fwts_acpi_table_erst, instruction_entry_count), FIELD_END }; acpi_dump_table_fields(fw, table->data, fields, 0, table->length); for (i = 0; i < erst->instruction_entry_count; i++) { fwts_acpidump_field entry_fields[] = { FIELD_STRS(" Action", fwts_acpi_table_erst, entries[i].serialization_action, serialization_actions, 16), FIELD_STRS(" Instruction", fwts_acpi_table_erst, entries[i].instruction, instructions, 19), FIELD_UINT(" Flags", fwts_acpi_table_erst, entries[i].flags), FIELD_GAS (" Register region", fwts_acpi_table_erst, entries[i].register_region), FIELD_UINT(" Value", fwts_acpi_table_erst, entries[i].value), FIELD_UINT(" Mask", fwts_acpi_table_erst, entries[i].mask), FIELD_END }; fwts_log_info_verbatum(fw, "Entry #%" PRIu32, i+1); __acpi_dump_table_fields(fw, table->data, entry_fields, 0); } } static void acpidump_amlcode(fwts_framework *fw, const fwts_acpi_table_info *table) { fwts_log_info_verbatum(fw, "Contains 0x%zx bytes of AML byte code", table->length-sizeof(fwts_acpi_table_header)); } static void acpidump_facs(fwts_framework *fw, const fwts_acpi_table_info *table) { static const fwts_acpidump_field fields[] = { FIELD_STR ("Signature", fwts_acpi_table_facs, signature), FIELD_UINT("Length", fwts_acpi_table_facs, length), FIELD_UINT("H/W Signature", fwts_acpi_table_facs, hardware_signature), FIELD_UINT("Waking Vector", fwts_acpi_table_facs, firmware_waking_vector), FIELD_UINT("Global Lock", fwts_acpi_table_facs, global_lock), FIELD_UINT("Flags", fwts_acpi_table_facs, flags), FIELD_UINT("X Waking Vector", fwts_acpi_table_facs, x_firmware_waking_vector), FIELD_UINT("Version", fwts_acpi_table_facs, version), FIELD_UINT("OSPM Flags", fwts_acpi_table_facs, ospm_flags), FIELD_END }; acpi_dump_table_fields(fw, table->data, fields, 0, table->length); } static void acpidump_hpet(fwts_framework *fw, const fwts_acpi_table_info *table) { static const fwts_acpidump_field fields[] = { FIELD_UINT("Event Timer ID", fwts_acpi_table_hpet, event_timer_block_id), FIELD_BITF(" Hardware Rev", fwts_acpi_table_hpet, event_timer_block_id, 8, 0), FIELD_BITF(" Num Comparitors", fwts_acpi_table_hpet, event_timer_block_id, 5, 8), FIELD_BITF(" Count Size Cap", fwts_acpi_table_hpet, event_timer_block_id, 1, 13), FIELD_BITF(" Reserved", fwts_acpi_table_hpet, event_timer_block_id, 1, 14), FIELD_BITF(" IRQ Routing Cap", fwts_acpi_table_hpet, event_timer_block_id, 1, 15), FIELD_BITF(" PCI Vendor ID", fwts_acpi_table_hpet, event_timer_block_id, 16, 16), FIELD_GAS ("Base Address", fwts_acpi_table_hpet, base_address), FIELD_UINT("HPET Number", fwts_acpi_table_hpet, hpet_number), FIELD_UINT("Main Counter Min", fwts_acpi_table_hpet, main_counter_minimum), FIELD_UINT("Page Prot Attr", fwts_acpi_table_hpet, page_prot_and_oem_attribute), FIELD_BITF(" Page Protection", fwts_acpi_table_hpet, page_prot_and_oem_attribute, 4, 0), FIELD_BITF(" OEM Attr", fwts_acpi_table_hpet, page_prot_and_oem_attribute, 4, 4), FIELD_END }; acpi_dump_table_fields(fw, table->data, fields, 0, table->length); } static void acpidump_fadt(fwts_framework *fw, const fwts_acpi_table_info *table) { static const fwts_acpidump_field fields[] = { FIELD_UINT("FACS Address", fwts_acpi_table_fadt, firmware_control), FIELD_UINT("DSDT Address", fwts_acpi_table_fadt, dsdt), FIELD_UINT("Model", fwts_acpi_table_fadt, reserved), FIELD_STRS("PM Profile", fwts_acpi_table_fadt, preferred_pm_profile, fwts_acpi_fadt_preferred_pm_profile, 8), FIELD_UINT("SCI Interrupt", fwts_acpi_table_fadt, sci_int), FIELD_UINT("SMI Command Port", fwts_acpi_table_fadt, smi_cmd), FIELD_UINT("ACPI Enable Value", fwts_acpi_table_fadt, acpi_enable), FIELD_UINT("ACPI Disable Value", fwts_acpi_table_fadt, acpi_disable), FIELD_UINT("S4BIOS Command", fwts_acpi_table_fadt, s4bios_req), FIELD_UINT("P-State Control", fwts_acpi_table_fadt, pstate_cnt), FIELD_UINT("PM1A Event Block", fwts_acpi_table_fadt, pm1a_evt_blk), FIELD_UINT("PM1B Event Block", fwts_acpi_table_fadt, pm1b_evt_blk), FIELD_UINT("PM1A Control Block", fwts_acpi_table_fadt, pm1a_cnt_blk), FIELD_UINT("PM1B Control Block", fwts_acpi_table_fadt, pm1b_cnt_blk), FIELD_UINT("PM2 Control Block", fwts_acpi_table_fadt, pm2_cnt_blk), FIELD_UINT("PM Timer Block", fwts_acpi_table_fadt, pm_tmr_blk), FIELD_UINT("GPE0 Block", fwts_acpi_table_fadt, gpe0_blk), FIELD_UINT("GPE1 Block", fwts_acpi_table_fadt, gpe1_blk), FIELD_UINT("PM1 Event Block Length", fwts_acpi_table_fadt, pm1_evt_len), FIELD_UINT("PM1 Control Block Length", fwts_acpi_table_fadt, pm1_cnt_len), FIELD_UINT("PM2 Control Block Length", fwts_acpi_table_fadt, pm2_cnt_len), FIELD_UINT("PM Timer Block Length", fwts_acpi_table_fadt, pm_tmr_len), FIELD_UINT("GPE0 Block Length", fwts_acpi_table_fadt, gpe0_blk_len), FIELD_UINT("GPE1 Block Length", fwts_acpi_table_fadt, gpe1_blk_len), FIELD_UINT("_CST Support", fwts_acpi_table_fadt, cst_cnt), FIELD_UINT("C2 Latency", fwts_acpi_table_fadt, p_lvl2_lat), FIELD_UINT("C3 Latency", fwts_acpi_table_fadt, p_lvl3_lat), FIELD_UINT("CPU Cache Size", fwts_acpi_table_fadt, flush_size), FIELD_UINT("CPU Cache Flush Stride", fwts_acpi_table_fadt, flush_stride), FIELD_UINT("Duty Cycle Offset", fwts_acpi_table_fadt, duty_offset), FIELD_UINT("Duty Cycle Width", fwts_acpi_table_fadt, duty_width), FIELD_UINT("RTC Day Alarm Index", fwts_acpi_table_fadt, day_alrm), FIELD_UINT("RTC Month Alarm Index", fwts_acpi_table_fadt, mon_alrm), FIELD_UINT("RTC Century Index", fwts_acpi_table_fadt, century), FIELD_UINT("IA-PC Boot Flags (see below)", fwts_acpi_table_fadt, iapc_boot_arch), FIELD_BITF(" Legacy Devices Supported (V2)", fwts_acpi_table_fadt, iapc_boot_arch, 1, 0), FIELD_BITF(" 8042 present on ports 60/64 (V2)", fwts_acpi_table_fadt, iapc_boot_arch, 1, 1), FIELD_BITF(" VGA Not Present (V4)", fwts_acpi_table_fadt, iapc_boot_arch, 1, 2), FIELD_BITF(" MSI Not Supported (V4)", fwts_acpi_table_fadt, iapc_boot_arch, 1, 3), FIELD_BITF(" PCIe ASPM Not supported (V4)", fwts_acpi_table_fadt, iapc_boot_arch, 1, 4), FIELD_BITF(" CMOS RTC Not Present (V5)", fwts_acpi_table_fadt, iapc_boot_arch, 1, 5), FIELD_UINT("Flags (see below)", fwts_acpi_table_fadt, flags), FIELD_BITF(" WBINVD instruction (V1)", fwts_acpi_table_fadt, flags, 1, 0), FIELD_BITF(" WBINVD flushes all caches (V1)", fwts_acpi_table_fadt, flags, 1, 1), FIELD_BITF(" All CPUs support C1 (V1)", fwts_acpi_table_fadt, flags, 1, 2), FIELD_BITF(" C2 works on MP system (V1)", fwts_acpi_table_fadt, flags, 1, 3), FIELD_BITF(" Control Method Power Button (V1)", fwts_acpi_table_fadt, flags, 1, 4), FIELD_BITF(" Control Method Sleep Button (V1)", fwts_acpi_table_fadt, flags, 1, 5), FIELD_BITF(" RTC wake not in fixed reg space (V1)", fwts_acpi_table_fadt, flags, 1, 6), FIELD_BITF(" RTC can wake system from S4 (V1)", fwts_acpi_table_fadt, flags, 1, 7), FIELD_BITF(" 32 bit PM timer (V1)", fwts_acpi_table_fadt, flags, 1, 8), FIELD_BITF(" Docking Capability (V1)", fwts_acpi_table_fadt, flags, 1, 9), FIELD_BITF(" Reset Register Supported (V2)", fwts_acpi_table_fadt, flags, 1, 10), FIELD_BITF(" Sealed Case (V3)", fwts_acpi_table_fadt, flags, 1, 11), FIELD_BITF(" Headless, No Video (V3)", fwts_acpi_table_fadt, flags, 1, 12), FIELD_BITF(" Use native instr. after SLP_TYPx (V3)", fwts_acpi_table_fadt, flags, 1, 13), FIELD_BITF(" PCI_EXP_WAK bits supported (V4)", fwts_acpi_table_fadt, flags, 1, 14), FIELD_BITF(" Use patform clock (V4)", fwts_acpi_table_fadt, flags, 1, 15), FIELD_BITF(" RTC_STS Valid after S4 wake (V4)", fwts_acpi_table_fadt, flags, 1, 16), FIELD_BITF(" Remote power on capable (V4)", fwts_acpi_table_fadt, flags, 1, 17), FIELD_BITF(" Use APIC Cluster Model (V4)", fwts_acpi_table_fadt, flags, 1, 18), FIELD_BITF(" Use APIC Physical Dest. Mode (V4)", fwts_acpi_table_fadt, flags, 1, 19), FIELD_BITF(" ACPI hardware is not implemented (V5)", fwts_acpi_table_fadt, flags, 1, 20), FIELD_BITF(" S0 power savings are equal or better than S3 (V5)", fwts_acpi_table_fadt, flags, 1, 21), FIELD_BITF(" RESERVED", fwts_acpi_table_fadt, flags, 10, 22), FIELD_GAS ("RESET_REG", fwts_acpi_table_fadt, reset_reg), FIELD_UINT("RESET_VALUE", fwts_acpi_table_fadt, reset_value), FIELD_UINT("X_FIRMWARE_CTRL", fwts_acpi_table_fadt, x_firmware_ctrl), FIELD_UINT("X_DSDT", fwts_acpi_table_fadt, x_dsdt), FIELD_GAS ("X_PM1a_EVT_BLK", fwts_acpi_table_fadt, x_pm1a_evt_blk), FIELD_GAS ("X_PM1b_EVT_BLK", fwts_acpi_table_fadt, x_pm1b_evt_blk), FIELD_GAS ("X_PM1a_CNT_BLK", fwts_acpi_table_fadt, x_pm1a_cnt_blk), FIELD_GAS ("X_PM1b_CNT_BLK", fwts_acpi_table_fadt, x_pm1b_cnt_blk), FIELD_GAS ("X_PM2_CNT_BLK", fwts_acpi_table_fadt, x_pm2_cnt_blk), FIELD_GAS ("X_PM_TMR_BLK", fwts_acpi_table_fadt, x_pm_tmr_blk), FIELD_GAS ("X_GPE0_BLK", fwts_acpi_table_fadt, x_gpe0_blk), FIELD_GAS ("X_GPE1_BLK", fwts_acpi_table_fadt, x_gpe1_blk), FIELD_GAS ("SLEEP_CONTROL_REG", fwts_acpi_table_fadt, sleep_control_reg), FIELD_GAS ("SLEEP_STATUS_REG", fwts_acpi_table_fadt, sleep_status_reg), FIELD_END }; acpi_dump_table_fields(fw, table->data, fields, 0, table->length); } static void acpidump_rsdp(fwts_framework *fw, const fwts_acpi_table_info *table) { static const fwts_acpidump_field fields[] = { FIELD_STR ("Signature", fwts_acpi_table_rsdp, signature), FIELD_UINT("Checksum", fwts_acpi_table_rsdp, checksum), FIELD_STR ("OEM ID", fwts_acpi_table_rsdp, oem_id), FIELD_UINT("Revision", fwts_acpi_table_rsdp, revision), FIELD_UINT("RsdtAddress", fwts_acpi_table_rsdp, rsdt_address), FIELD_UINT("Length", fwts_acpi_table_rsdp, length), FIELD_UINT("XsdtAddress", fwts_acpi_table_rsdp, xsdt_address), FIELD_UINT("Extended Checksum", fwts_acpi_table_rsdp, extended_checksum), FIELD_UINT("Reserved", fwts_acpi_table_rsdp, reserved), FIELD_END }; acpi_dump_table_fields(fw, table->data, fields, 0, table->length); } static void acpidump_rsdt(fwts_framework *fw, const fwts_acpi_table_info *table) { size_t i, n = (table->length - sizeof(fwts_acpi_table_header)) / sizeof(uint32_t); fwts_acpi_table_rsdt *rsdt = (fwts_acpi_table_rsdt *)table->data; for (i = 0; i < n; i++) { char label[80]; fwts_acpi_table_info *table; if (fwts_acpi_find_table_by_addr(fw, (uint64_t)rsdt->entries[i], &table) == FWTS_OK) { char *name = table == NULL ? "unknown" : table->name; snprintf(label, sizeof(label), "Entry %2.2zu %s", i, name); fwts_log_info_verbatum(fw, "%s 0x%8.8x", acpi_dump_field_info(label, sizeof(rsdt->entries[i]), offsetof(fwts_acpi_table_rsdt, entries[i])), rsdt->entries[i]); } } } static void acpidump_sbst(fwts_framework *fw, const fwts_acpi_table_info *table) { static const fwts_acpidump_field fields[] = { FIELD_UINT("Warn. Energy Level", fwts_acpi_table_sbst, warning_energy_level), FIELD_UINT("Low Energy Level", fwts_acpi_table_sbst, low_energy_level), FIELD_UINT("Crit. Energy Level", fwts_acpi_table_sbst, critical_energy_level), FIELD_END }; acpi_dump_table_fields(fw, table->data, fields, 0, table->length); } static void acpidump_xsdt(fwts_framework *fw, const fwts_acpi_table_info *table) { size_t i, n = (table->length - sizeof(fwts_acpi_table_header)) / sizeof(uint64_t); fwts_acpi_table_xsdt *xsdt = (fwts_acpi_table_xsdt *)table->data; for (i = 0; i < n; i++) { char label[80]; fwts_acpi_table_info *table; if (fwts_acpi_find_table_by_addr(fw, xsdt->entries[i], &table) == FWTS_OK) { char *name = table == NULL ? "unknown" : table->name; snprintf(label, sizeof(label), "Entry %2.2zu %s", i, name); fwts_log_info_verbatum(fw, "%s 0x%16.16" PRIx64, acpi_dump_field_info(label, sizeof(xsdt->entries[i]), offsetof(fwts_acpi_table_xsdt, entries[i])), xsdt->entries[i]); } } } static void acpidump_madt(fwts_framework *fw, const fwts_acpi_table_info *table) { uint8_t *data = (uint8_t *)table->data; size_t offset = 0; int i = 0; static const fwts_acpidump_field fields[] = { FIELD_UINT("Local APIC Address", fwts_acpi_table_madt, lapic_address), FIELD_UINT("Flags", fwts_acpi_table_madt, flags), FIELD_BITF(" PCAT_COMPAT", fwts_acpi_table_madt, flags, 1, 0), FIELD_END }; static const char *types[] = { "Processor Local APIC", /* 0 */ "I/O APIC", /* 1 */ "Interrupt Source Override", /* 2 */ "Non-maskable Interrupt Source (NMI)", /* 3 */ "Local APIC NMI", /* 4 */ "Local APIC Address Override", /* 5 */ "I/O SAPIC", /* 6 */ "Local SAPIC", /* 7 */ "Platform Interrupt Sources", /* 8 */ "Processor Local x2APIC", /* 9 */ "Local x2APIC NMI", /* 10 */ "GIC", /* 11 */ "GIC Distributor", /* 12 */ "OEM Defined" /* 13 */ }; static const fwts_acpidump_field fields_sub_table_header[] = { FIELD_STRS(" Type", fwts_acpi_madt_sub_table_header, type, types, 13), FIELD_UINT(" Length", fwts_acpi_madt_sub_table_header, length), FIELD_END }; acpi_dump_table_fields(fw, data, fields, 0, table->length); offset += sizeof(fwts_acpi_table_madt); data += sizeof(fwts_acpi_table_madt); while (offset < table->length) { int skip = 0; fwts_acpi_madt_sub_table_header *hdr = (fwts_acpi_madt_sub_table_header *)data; /* Check for unknown type or illegal size */ if (hdr->type > 12 || hdr->length < 6) break; fwts_log_info_verbatum(fw, "APIC Structure #%d:", ++i); __acpi_dump_table_fields(fw, data, fields_sub_table_header, offset); data += sizeof(fwts_acpi_madt_sub_table_header); offset += sizeof(fwts_acpi_madt_sub_table_header); switch (hdr->type) { case 0: { static const fwts_acpidump_field fields_processor_local_apic[] = { FIELD_UINT(" ACPI CPU ID", fwts_acpi_madt_processor_local_apic, acpi_processor_id), FIELD_UINT(" APIC ID", fwts_acpi_madt_processor_local_apic, apic_id), FIELD_UINT(" Flags", fwts_acpi_madt_processor_local_apic, flags), FIELD_BITF(" Enabled", fwts_acpi_madt_processor_local_apic, flags, 1, 0), FIELD_END }; __acpi_dump_table_fields(fw, data, fields_processor_local_apic, offset); skip = sizeof(fwts_acpi_madt_processor_local_apic); } break; case 1: { static const fwts_acpidump_field fields_io_apic[] = { FIELD_UINT(" I/O APIC ID", fwts_acpi_madt_io_apic, io_apic_id), FIELD_UINT(" I/O APIC Addr", fwts_acpi_madt_io_apic, io_apic_phys_address), FIELD_UINT(" Global IRQ Base", fwts_acpi_madt_io_apic, global_irq_base), FIELD_END }; __acpi_dump_table_fields(fw, data, fields_io_apic, offset); skip = sizeof(fwts_acpi_madt_io_apic); } break; case 2: { static const fwts_acpidump_field fields_madt_interrupt_override[] = { FIELD_UINT(" Bus", fwts_acpi_madt_interrupt_override, bus), FIELD_UINT(" Source", fwts_acpi_madt_interrupt_override, source), FIELD_UINT(" Gbl Sys Int", fwts_acpi_madt_interrupt_override, gsi), FIELD_UINT(" Flags", fwts_acpi_madt_interrupt_override, flags), FIELD_BITF(" Polarity", fwts_acpi_madt_interrupt_override, flags, 2, 0), FIELD_BITF(" Trigger Mode", fwts_acpi_madt_interrupt_override, flags, 2, 2), FIELD_END }; __acpi_dump_table_fields(fw, data, fields_madt_interrupt_override, offset); skip = sizeof(fwts_acpi_madt_interrupt_override); } break; case 3: { static const fwts_acpidump_field fields_madt_nmi[] = { FIELD_UINT(" Flags", fwts_acpi_madt_nmi, flags), FIELD_UINT(" Gbl Sys Int", fwts_acpi_madt_nmi, gsi), FIELD_END }; __acpi_dump_table_fields(fw, data, fields_madt_nmi, offset); skip = sizeof(fwts_acpi_madt_nmi); } break; case 4: { static const fwts_acpidump_field fields_madt_local_apic_nmi[] = { FIELD_UINT(" ACPI CPU ID", fwts_acpi_madt_local_apic_nmi, acpi_processor_id), FIELD_UINT(" Flags", fwts_acpi_madt_local_apic_nmi, flags), FIELD_UINT(" Local APIC LINT", fwts_acpi_madt_local_apic_nmi, local_apic_lint), FIELD_END }; __acpi_dump_table_fields(fw, data, fields_madt_local_apic_nmi, offset); skip = sizeof(fwts_acpi_madt_local_apic_nmi); } break; case 5: { static const fwts_acpidump_field fields_madt_local_apic_addr_override[] = { FIELD_UINT(" Local APIC Addr", fwts_acpi_madt_local_apic_addr_override, address), FIELD_END }; __acpi_dump_table_fields(fw, data, fields_madt_local_apic_addr_override, offset); skip = sizeof(fwts_acpi_madt_local_apic_addr_override); } break; case 6: { static const fwts_acpidump_field fields_madt_io_sapic[] = { FIELD_UINT(" I/O SAPIC ID", fwts_acpi_madt_io_sapic, io_sapic_id), FIELD_UINT(" Gbl Sys Int", fwts_acpi_madt_io_sapic, gsi), FIELD_UINT(" I/O SAPIC Addr", fwts_acpi_madt_io_sapic, address), FIELD_END }; __acpi_dump_table_fields(fw, data, fields_madt_io_sapic, offset); skip = sizeof(fwts_acpi_madt_io_sapic); } break; case 7: { fwts_acpi_madt_local_sapic *local_sapic = (fwts_acpi_madt_local_sapic *)data; static const fwts_acpidump_field fields_madt_local_sapic[] = { FIELD_UINT(" ACPI CPU ID", fwts_acpi_madt_local_sapic, acpi_processor_id), FIELD_UINT(" Local SAPIC ID", fwts_acpi_madt_local_sapic, local_sapic_id), FIELD_UINT(" Local SAPIC EID", fwts_acpi_madt_local_sapic, local_sapic_eid), FIELD_UINT(" Flags", fwts_acpi_madt_local_sapic, flags), FIELD_UINT(" UID Value", fwts_acpi_madt_local_sapic, uid_value), FIELD_UINT(" UID String", fwts_acpi_madt_local_sapic, uid_string), FIELD_END }; __acpi_dump_table_fields(fw, data, fields_madt_local_sapic, offset); skip = (sizeof(fwts_acpi_madt_local_sapic) + strlen(local_sapic->uid_string) + 1); } break; case 8: { static const fwts_acpidump_field fields_madt_local_sapic[] = { FIELD_UINT(" Flags", fwts_acpi_madt_platform_int_source, flags), FIELD_UINT(" Type", fwts_acpi_madt_platform_int_source, type), FIELD_UINT(" Processor ID", fwts_acpi_madt_platform_int_source, processor_id), FIELD_UINT(" Processor EID", fwts_acpi_madt_platform_int_source, processor_eid), FIELD_UINT(" IO SAPIC Vector", fwts_acpi_madt_platform_int_source, io_sapic_vector), FIELD_UINT(" Gbl Sys Int", fwts_acpi_madt_platform_int_source, gsi), FIELD_UINT(" PIS Flags", fwts_acpi_madt_platform_int_source, pis_flags), FIELD_END }; __acpi_dump_table_fields(fw, data, fields_madt_local_sapic, offset); skip = (sizeof(fwts_acpi_madt_platform_int_source)); } break; case 9: { static const fwts_acpidump_field fields_madt_local_x2apic[] = { FIELD_UINT(" x2APIC ID", fwts_acpi_madt_local_x2apic, x2apic_id), FIELD_UINT(" Flags", fwts_acpi_madt_local_x2apic, flags), FIELD_UINT(" Processor UID", fwts_acpi_madt_local_x2apic, processor_uid), FIELD_END }; __acpi_dump_table_fields(fw, data, fields_madt_local_x2apic, offset); skip = (sizeof(fwts_acpi_madt_local_x2apic)); } break; case 10: { static const fwts_acpidump_field fields_madt_local_x2apic_nmi[] = { FIELD_UINT(" Flags", fwts_acpi_madt_local_x2apic_nmi, flags), FIELD_UINT(" Processor UID", fwts_acpi_madt_local_x2apic_nmi, processor_uid), FIELD_UINT(" LINT#", fwts_acpi_madt_local_x2apic_nmi, local_x2apic_lint), FIELD_END }; __acpi_dump_table_fields(fw, data, fields_madt_local_x2apic_nmi, offset); skip = (sizeof(fwts_acpi_madt_local_x2apic_nmi)); } break; case 11: { static const fwts_acpidump_field fields_madt_gic[] = { FIELD_UINT(" Reserved", fwts_acpi_madt_gic, reserved), FIELD_UINT(" GIC ID", fwts_acpi_madt_gic, gic_id), FIELD_UINT(" Processor UID", fwts_acpi_madt_gic, processor_uid), FIELD_UINT(" Flags", fwts_acpi_madt_gic, flags), FIELD_UINT(" Parking Protocol",fwts_acpi_madt_gic, parking_protocol_version), FIELD_UINT(" Perf. Int. GSIV", fwts_acpi_madt_gic, performance_interrupt_gsiv), FIELD_UINT(" Parked Address", fwts_acpi_madt_gic, parked_address), FIELD_UINT(" Phys. Base. Addr",fwts_acpi_madt_gic, physical_base_address), }; __acpi_dump_table_fields(fw, data, fields_madt_gic, offset); skip = (sizeof(fwts_acpi_madt_gic)); } break; case 12: { static const fwts_acpidump_field fields_madt_gicd[] = { FIELD_UINT(" Reserved", fwts_acpi_madt_gicd, reserved), FIELD_UINT(" GIC ID", fwts_acpi_madt_gicd, gic_id), FIELD_UINT(" Phys. Base. Addr",fwts_acpi_madt_gicd, physical_base_address), FIELD_UINT(" Sys Vector Base", fwts_acpi_madt_gicd, system_vector_base), FIELD_UINT(" Reserved", fwts_acpi_madt_gicd, reserved2), }; __acpi_dump_table_fields(fw, data, fields_madt_gicd, offset); skip = (sizeof(fwts_acpi_madt_gicd)); } break; default: skip = 0; break; } data += skip; offset += skip; } } static void acpidump_mcfg(fwts_framework *fw, const fwts_acpi_table_info *table) { fwts_acpi_table_mcfg *mcfg = (fwts_acpi_table_mcfg *)table->data; size_t i, n = table->length - sizeof(fwts_acpi_table_mcfg); static const fwts_acpidump_field fields[] = { FIELD_UINT("Reserved", fwts_acpi_table_mcfg, reserved), FIELD_END }; acpi_dump_table_fields(fw, table->data, fields, 0, table->length); fwts_acpi_mcfg_configuration *config = mcfg->configuration; for (i = 0; i < n / sizeof(fwts_acpi_mcfg_configuration); i++) { static const fwts_acpidump_field fields_config[] = { FIELD_UINT(" Base Address", fwts_acpi_mcfg_configuration, base_address), FIELD_UINT(" PCI Seg Grp Num", fwts_acpi_mcfg_configuration, pci_segment_group_number), FIELD_UINT(" Start Bus Num", fwts_acpi_mcfg_configuration, start_bus_number), FIELD_UINT(" End Bus Num", fwts_acpi_mcfg_configuration, end_bus_number), FIELD_UINT(" Reserved", fwts_acpi_mcfg_configuration, reserved), FIELD_END }; fwts_log_nl(fw); fwts_log_info_verbatum(fw, "Configuration #%zd:", i+1); acpi_dump_table_fields(fw, (uint8_t *)config, fields_config, 0, table->length); config++; } } static void acpidump_slit(fwts_framework *fw, const fwts_acpi_table_info *table) { fwts_acpi_table_slit *slit = (fwts_acpi_table_slit *)table->data; uint64_t j = 0; uint64_t k = 0; uint64_t n = table->length - sizeof(fwts_acpi_table_slit); const uint8_t *entry; fwts_log_info_verbatum(fw, "# Sys Localities: 0x%" PRIx64 "(%" PRIu64 ")", slit->num_of_system_localities, slit->num_of_system_localities); if (n < slit->num_of_system_localities * slit->num_of_system_localities) { fwts_log_info_verbatum(fw,"Expecting %" PRIu64 " bytes, got only %" PRIu64, (slit->num_of_system_localities * slit->num_of_system_localities), n); } else { uint64_t i; entry = table->data + sizeof(fwts_acpi_table_slit); for (i = 0; i < n; i++) { fwts_log_info_verbatum(fw, "Entry[%2.2" PRIu64 "][%2.2" PRIu64 "]: %2.2x", j, k, *entry++); k++; if (k >= slit->num_of_system_localities) { k = 0; j++; } } } }; static void acpidump_srat(fwts_framework *fw, const fwts_acpi_table_info *table) { uint8_t *ptr = (uint8_t *)table->data + sizeof(fwts_acpi_table_srat); int offset = sizeof(fwts_acpi_table_srat); while (ptr < (uint8_t *)table->data + table->length) { switch (*ptr) { case 0: { static const fwts_acpidump_field fields_lasa[] = { FIELD_UINT(" Proximity [7:0]", fwts_acpi_table_slit_local_apic_sapic_affinity, proximity_domain_0), FIELD_UINT(" APIC ID", fwts_acpi_table_slit_local_apic_sapic_affinity, apic_id), FIELD_UINT(" Flags", fwts_acpi_table_slit_local_apic_sapic_affinity, flags), FIELD_UINT(" L_SAPIC_EID", fwts_acpi_table_slit_local_apic_sapic_affinity, local_sapic_eid), FIELD_UINT(" Proximity [31:24]",fwts_acpi_table_slit_local_apic_sapic_affinity, proximity_domain_3), FIELD_UINT(" Proximity [23:16]",fwts_acpi_table_slit_local_apic_sapic_affinity, proximity_domain_2), FIELD_UINT(" Proximity [15:8]",fwts_acpi_table_slit_local_apic_sapic_affinity, proximity_domain_1), FIELD_UINT(" Clock Domain: 0x", fwts_acpi_table_slit_local_apic_sapic_affinity, clock_domain), FIELD_END, }; fwts_log_info_verbatum(fw, " Processor Local APIC/SAPID Affinity Structure:"); __acpi_dump_table_fields(fw, ptr, fields_lasa, offset); ptr += sizeof(fwts_acpi_table_slit_local_apic_sapic_affinity); offset += sizeof(fwts_acpi_table_slit_local_apic_sapic_affinity); } break; case 1: { static const fwts_acpidump_field fields_ma[] = { FIELD_UINT(" Prox. Domain", fwts_acpi_table_slit_memory_affinity, proximity_domain), FIELD_UINT(" Base Addr Lo", fwts_acpi_table_slit_memory_affinity, base_addr_lo), FIELD_UINT(" Base Addr Hi", fwts_acpi_table_slit_memory_affinity, base_addr_hi), FIELD_UINT(" Length Lo", fwts_acpi_table_slit_memory_affinity, length_lo), FIELD_UINT(" Length Hi", fwts_acpi_table_slit_memory_affinity, length_hi), FIELD_UINT(" Flags", fwts_acpi_table_slit_memory_affinity, flags), FIELD_END, }; fwts_log_info_verbatum(fw, " Memory Affinity Structure:"); __acpi_dump_table_fields(fw, ptr, fields_ma, offset); ptr += sizeof(fwts_acpi_table_slit_memory_affinity); offset += sizeof(fwts_acpi_table_slit_memory_affinity); } break; case 2: { static const fwts_acpidump_field fields_xa[] = { FIELD_UINT(" Prox. Domain", fwts_acpi_table_slit_local_x2apic_affinity, proximity_domain), FIELD_UINT(" X2APIC ID", fwts_acpi_table_slit_local_x2apic_affinity, x2apic_id), FIELD_UINT(" Flags", fwts_acpi_table_slit_local_x2apic_affinity, flags), FIELD_UINT(" Clock Domain", fwts_acpi_table_slit_local_x2apic_affinity, clock_domain), FIELD_END, }; fwts_log_info_verbatum(fw, " Processor Local x2APIC Affinit Structure:"); __acpi_dump_table_fields(fw, ptr, fields_xa, offset); ptr += sizeof(fwts_acpi_table_slit_local_x2apic_affinity); offset += sizeof(fwts_acpi_table_slit_local_x2apic_affinity); } break; default: ptr = (uint8_t *)table->data + table->length; /* force abort */ break; } } } static void acpidump_tcpa(fwts_framework *fw, const fwts_acpi_table_info *table) { static const fwts_acpidump_field fields[] = { FIELD_UINT("Reserved", fwts_acpi_table_tcpa, reserved), FIELD_UINT("Log Zone Length", fwts_acpi_table_tcpa, log_zone_length), FIELD_UINT("Log Zone Address", fwts_acpi_table_tcpa, log_zone_addr), FIELD_END }; acpi_dump_table_fields(fw, table->data, fields, 0, table->length); } /* * acpidump_asf() * dump out ASF! descruption table * see: http://dmtf.org/documents/asf/alert-standard-format-asf-specification-200 */ static void acpidump_asf(fwts_framework *fw, const fwts_acpi_table_info *table) { uint8_t *data = (uint8_t *)table->data; size_t length = table->length; uint8_t *ptr; ptr = data + sizeof(fwts_acpi_table_header); static const fwts_acpidump_field asf_info_fields[] = { FIELD_UINT("Watchdog Reset Value", fwts_acpi_table_asf_info, watchdog_reset_value), FIELD_UINT("Min Sensor Poll Wait Time", fwts_acpi_table_asf_info, min_sensor_poll_wait_time), FIELD_UINT("System ID", fwts_acpi_table_asf_info, id), FIELD_UINT("IANA ID", fwts_acpi_table_asf_info, iana_id), FIELD_UINT("Feature Flags", fwts_acpi_table_asf_info, flags), FIELD_UINT("Reserved1", fwts_acpi_table_asf_info, reserved1), FIELD_UINT("Reserved2", fwts_acpi_table_asf_info, reserved2), FIELD_UINT("Reserved3", fwts_acpi_table_asf_info, reserved3), FIELD_END }; static const fwts_acpidump_field asf_alrt_fields[] = { FIELD_UINT("Assertion Event Bit Mask", fwts_acpi_table_asf_alrt, assertion_mask), FIELD_UINT("De-assertion Event Bit Mask", fwts_acpi_table_asf_alrt, deassertion_mask), FIELD_UINT("Number of Alerts", fwts_acpi_table_asf_alrt, number_of_alerts), FIELD_UINT("Array Element Length", fwts_acpi_table_asf_alrt, array_length), FIELD_END }; static const fwts_acpidump_field asf_alrt_element_fields[] = { FIELD_UINT("Alert Device Address", fwts_acpi_table_asf_alrt_element, device_addr), FIELD_UINT("Alert Command", fwts_acpi_table_asf_alrt_element, command), FIELD_UINT("Alert Data Mask", fwts_acpi_table_asf_alrt_element, data_mask), FIELD_UINT("Alert Compare Value", fwts_acpi_table_asf_alrt_element, compare_value), FIELD_UINT("Alert Event Sensor Type", fwts_acpi_table_asf_alrt_element, sensor_type), FIELD_UINT("Alert Event Type", fwts_acpi_table_asf_alrt_element, event_type), FIELD_UINT("Alert Event Offset", fwts_acpi_table_asf_alrt_element, event_offset), FIELD_UINT("Alert Event Source Type", fwts_acpi_table_asf_alrt_element, event_source_type), FIELD_UINT("Alert Event Severity", fwts_acpi_table_asf_alrt_element, event_severity), FIELD_UINT("Alert Sensor Number", fwts_acpi_table_asf_alrt_element, sensor_number), FIELD_UINT("Alert Entity", fwts_acpi_table_asf_alrt_element, entity), FIELD_UINT("Alert Entity Instance", fwts_acpi_table_asf_alrt_element, entity_instance), FIELD_END }; static const fwts_acpidump_field asf_rctl_fields[] = { FIELD_UINT("Number of Controls", fwts_acpi_table_asf_rctl, number_of_controls), FIELD_UINT("Array Element Length", fwts_acpi_table_asf_rctl, array_element_length), FIELD_UINT("Reserved", fwts_acpi_table_asf_rctl, reserved), FIELD_END }; static const fwts_acpidump_field asf_rctl_element_fields[] = { FIELD_UINT("Control Function", fwts_acpi_table_asf_rctl_element, control_function), FIELD_UINT("Control Device Address", fwts_acpi_table_asf_rctl_element, control_device_addr), FIELD_UINT("Control Command", fwts_acpi_table_asf_rctl_element, control_command), FIELD_UINT("Control Value", fwts_acpi_table_asf_rctl_element, control_value), FIELD_END }; static const fwts_acpidump_field asf_rcmp_fields[] = { FIELD_UINT("Remote Control Capabilities", fwts_acpi_table_asf_rcmp, remote_control_capabilities), FIELD_UINT("RMCP Boot Options Completion Code", fwts_acpi_table_asf_rcmp, rcmp_completion_code), FIELD_UINT("RMCP IANA Enterprise ID", fwts_acpi_table_asf_rcmp, rcmp_iana), FIELD_UINT("RMCP Special Command", fwts_acpi_table_asf_rcmp, rcmp_special_command), FIELD_UINT("RMCP Special Command Parameter", fwts_acpi_table_asf_rcmp, rcmp_special_command_param), FIELD_UINT("RMCP Boot Options", fwts_acpi_table_asf_rcmp, rcmp_boot_options), FIELD_UINT("RMCP OEM Parameters", fwts_acpi_table_asf_rcmp, rcmp_oem_parameters), FIELD_END }; static const fwts_acpidump_field asf_header_fields[] = { FIELD_UINT("Type", fwts_acpi_table_asf_header, type), FIELD_UINT("Reserved", fwts_acpi_table_asf_header, reserved), FIELD_UINT("Length", fwts_acpi_table_asf_header, length), FIELD_END }; static const fwts_acpidump_field asf_addr_fields[] = { FIELD_UINT("SEEPROM Address", fwts_acpi_table_asf_addr, seeprom_addr), FIELD_UINT("Number of Devices", fwts_acpi_table_asf_addr, number_of_devices), FIELD_END }; static const fwts_acpidump_field asf_addr_element_fields[] = { FIELD_UINT("Fixed SMBus Address", fwts_acpi_table_asf_addr_element, fixed_smbus_addr), FIELD_END }; while (ptr < data + length) { fwts_acpi_table_asf_header *hdr = (fwts_acpi_table_asf_header *)ptr; fwts_acpi_table_asf_alrt *alrt; fwts_acpi_table_asf_rctl *rctl; fwts_acpi_table_asf_addr *addr; uint8_t type = hdr->type; uint8_t i; uint8_t *asf_ptr = ptr; fwts_log_nl(fw); __acpi_dump_table_fields(fw, asf_ptr, asf_header_fields, asf_ptr - data); asf_ptr += sizeof(fwts_acpi_table_asf_header); switch (type & 0x7f) { case 0: /* Info fields */ __acpi_dump_table_fields(fw, asf_ptr, asf_info_fields, asf_ptr - data); break; case 1: /* Alert fields */ alrt = (fwts_acpi_table_asf_alrt *)asf_ptr; __acpi_dump_table_fields(fw, asf_ptr, asf_alrt_fields, asf_ptr - data); asf_ptr += sizeof(fwts_acpi_table_asf_alrt); for (i = 0; i < alrt->number_of_alerts; i++) { fwts_log_nl(fw); fwts_log_info_verbatum(fw, "ASF Alert Data #%" PRId8 ":", i); __acpi_dump_table_fields(fw, asf_ptr, asf_alrt_element_fields, asf_ptr - data); asf_ptr += alrt->array_length; } break; case 2: /* remote control system actions */ rctl = (fwts_acpi_table_asf_rctl *)asf_ptr; __acpi_dump_table_fields(fw, asf_ptr, asf_rctl_fields, asf_ptr - data); asf_ptr += sizeof(fwts_acpi_table_asf_rctl); for (i = 0; i < rctl->number_of_controls; i++) { fwts_log_nl(fw); fwts_log_info_verbatum(fw, "ASF Control Data #%" PRId8 ":", i); __acpi_dump_table_fields(fw, asf_ptr, asf_rctl_element_fields, asf_ptr - data); asf_ptr += rctl->array_element_length; } break; case 3: /* remote control capabilties */ __acpi_dump_table_fields(fw, asf_ptr, asf_rcmp_fields, asf_ptr - data); break; case 4: /* fixed SMBus addresses */ addr = (fwts_acpi_table_asf_addr *)asf_ptr; __acpi_dump_table_fields(fw, asf_ptr, asf_addr_fields, asf_ptr - data); asf_ptr += sizeof(fwts_acpi_table_asf_addr); for (i = 0; i < addr->number_of_devices; i++) { __acpi_dump_table_fields(fw, asf_ptr, asf_addr_element_fields, asf_ptr - data); asf_ptr += sizeof(fwts_acpi_table_asf_addr_element); } break; default: break; /* Unknown! */ } ptr += hdr->length; /* Jump to next header */ if (type & 0x80) /* Last record indicator, top bit of type field */ break; } } /* * acpidump_dmar_device_scope() * dump out DMAR device scope */ static void acpidump_dmar_device_scope( fwts_framework *fw, const uint8_t *data, const uint8_t *device_scope, const size_t device_scope_length) { size_t length = device_scope_length; static const fwts_acpidump_field dmar_device_scope_fields[] = { FIELD_UINT("Type", fwts_acpi_table_dmar_device_scope, type), FIELD_UINT("Length", fwts_acpi_table_dmar_device_scope, length), FIELD_UINT("Reserved", fwts_acpi_table_dmar_device_scope, reserved), FIELD_UINT("Enumeration ID", fwts_acpi_table_dmar_device_scope, enumeration_id), FIELD_UINT("Start Bus Number", fwts_acpi_table_dmar_device_scope, start_bus_number), FIELD_END }; /* Parse through multiple device scope entries */ while (length > 0) { unsigned int i; fwts_acpi_table_dmar_device_scope *device_scope_entry = (fwts_acpi_table_dmar_device_scope *)device_scope; __acpi_dump_table_fields(fw, device_scope, dmar_device_scope_fields, device_scope - data); /* * The device scope has a variable length path, * so just dump this raw data out for now. */ for (i = 0; i < device_scope_entry->length - sizeof(fwts_acpi_table_dmar_device_scope); i++) { uint8_t val8 = device_scope_entry->path[i]; fwts_log_info_verbatum(fw, "%s 0x%2.2x [%d]", acpi_dump_field_info("Path", 1, (device_scope - data) + sizeof(fwts_acpi_table_dmar_device_scope) + i), val8, i); } device_scope += device_scope_entry->length; length -= device_scope_entry->length; } } /* * acpidump_dmar() * dump out DMAR * http://download.intel.com/technology/computing/vptech/Intel(r)_VT_for_Direct_IO.pdf */ static void acpidump_dmar(fwts_framework *fw, const fwts_acpi_table_info *table) { const uint8_t *data = table->data, *ptr = table->data; static const fwts_acpidump_field dmar_fields[] = { FIELD_UINT("Host Address Width", fwts_acpi_table_dmar, host_addr_width), FIELD_UINT("Flags", fwts_acpi_table_dmar, flags), FIELD_UINT("Reserved", fwts_acpi_table_dmar, reserved), FIELD_END }; static const fwts_acpidump_field dmar_header_fields[] = { FIELD_UINT("Type", fwts_acpi_table_dmar_header, type), FIELD_UINT("Length", fwts_acpi_table_dmar_header, length), FIELD_END }; static const fwts_acpidump_field dmar_hardware_unit_fields[] = { FIELD_UINT("Flags", fwts_acpi_table_dmar_hardware_unit, flags), FIELD_UINT("Reserved", fwts_acpi_table_dmar_hardware_unit, reserved), FIELD_UINT("Segment Number", fwts_acpi_table_dmar_hardware_unit, segment_number), FIELD_UINT("Register Base Address", fwts_acpi_table_dmar_hardware_unit, register_base_addr), FIELD_UINT("Device Scope", fwts_acpi_table_dmar_hardware_unit, device_scope), FIELD_END }; static const fwts_acpidump_field dmar_reserved_memory_fields[] = { FIELD_UINT("Reserved", fwts_acpi_table_dmar_reserved_memory, reserved), FIELD_UINT("Segment", fwts_acpi_table_dmar_reserved_memory, segment), FIELD_UINT("Base Address", fwts_acpi_table_dmar_reserved_memory, base_address), FIELD_UINT("End Address", fwts_acpi_table_dmar_reserved_memory, end_address), FIELD_END }; static const fwts_acpidump_field dmar_atsr_fields[] = { FIELD_UINT("Flags", fwts_acpi_table_dmar_atsr, flags), FIELD_UINT("Reserved", fwts_acpi_table_dmar_atsr, reserved), FIELD_UINT("Segment", fwts_acpi_table_dmar_atsr, segment), FIELD_END }; __acpi_dump_table_fields(fw, ptr, dmar_fields, ptr - data); ptr += sizeof(fwts_acpi_table_dmar); while (ptr < data + table->length) { fwts_acpi_table_dmar_header *header = (fwts_acpi_table_dmar_header *)ptr; fwts_log_nl(fw); switch (header->type) { case 0: fwts_log_info_verbatum(fw, "Hardware Unit Definition:"); __acpi_dump_table_fields(fw, ptr, dmar_header_fields, ptr - data); __acpi_dump_table_fields(fw, ptr, dmar_hardware_unit_fields, ptr - data); acpidump_dmar_device_scope(fw, data, ptr + sizeof(fwts_acpi_table_dmar_hardware_unit), (size_t)header->length - sizeof(fwts_acpi_table_dmar_hardware_unit)); break; case 1: fwts_log_info_verbatum(fw, "Reserved Memory Definition:"); __acpi_dump_table_fields(fw, ptr, dmar_header_fields, ptr - data); __acpi_dump_table_fields(fw, ptr, dmar_reserved_memory_fields, ptr - data); acpidump_dmar_device_scope(fw, data, ptr + sizeof(fwts_acpi_table_dmar_reserved_memory), (size_t)header->length - sizeof(fwts_acpi_table_dmar_reserved_memory)); break; case 2: fwts_log_info_verbatum(fw, "Root Port ATS Capability Reporting Structure:"); __acpi_dump_table_fields(fw, ptr, dmar_header_fields, ptr - data); __acpi_dump_table_fields(fw, ptr, dmar_atsr_fields, ptr - data); acpidump_dmar_device_scope(fw, data, ptr + sizeof(fwts_acpi_table_dmar_atsr), (size_t)header->length - sizeof(fwts_acpi_table_dmar_atsr)); break; default: /* and anything else */ break; } ptr += header->length; } } /* * acpidump_slic() * dump out SLIC */ static void acpidump_slic(fwts_framework *fw, const fwts_acpi_table_info *table) { uint8_t *data = (uint8_t *)table->data; size_t length = table->length; uint8_t *ptr = data; static const fwts_acpidump_field slic_header_fields[] = { FIELD_UINT("Type", fwts_acpi_table_slic_header, type), FIELD_UINT("Length", fwts_acpi_table_slic_header, length), FIELD_END }; static const fwts_acpidump_field slic_key_fields[] = { FIELD_UINT("Key Type", fwts_acpi_table_slic_key, key_type), FIELD_UINT("Version", fwts_acpi_table_slic_key, version), FIELD_UINT("Reserved", fwts_acpi_table_slic_key, reserved), FIELD_UINT("Algorithm", fwts_acpi_table_slic_key, algorithm), FIELD_UINT("Magic", fwts_acpi_table_slic_key, magic), FIELD_UINT("Bit Length",fwts_acpi_table_slic_key, bit_length), FIELD_UINTS("Modulus", fwts_acpi_table_slic_key, modulus), FIELD_END }; static const fwts_acpidump_field slic_marker_fields[] = { FIELD_UINT("Version", fwts_acpi_table_slic_marker, version), FIELD_STR("OEM ID", fwts_acpi_table_slic_marker, oem_id), FIELD_STR("OEM TABLE ID", fwts_acpi_table_slic_marker, oem_table_id), FIELD_UINTS("Windows Flag", fwts_acpi_table_slic_marker, windows_flag), FIELD_UINT("SLIC Version", fwts_acpi_table_slic_marker, slic_version), FIELD_UINTS("Reserved", fwts_acpi_table_slic_marker, reserved), FIELD_UINTS("Signature", fwts_acpi_table_slic_marker, signature), FIELD_END }; ptr += sizeof(fwts_acpi_table_header); while (ptr < data + length) { fwts_log_nl(fw); fwts_acpi_table_slic_header *header = (fwts_acpi_table_slic_header *)ptr; /* * Some machines such as the Acer Veritas have a SLIC header that * declares it's length as zero. So to avoid spinning forever * break out of the loop. */ if ((ptr + sizeof(fwts_acpi_table_slic_header) < data + length) && (header->length == 0)) { fwts_log_info(fw, "SLIC header length is zero, aborting dump of SLIC."); break; } switch(header->type) { case 0: __acpi_dump_table_fields(fw, ptr, slic_header_fields, ptr - data); __acpi_dump_table_fields(fw, ptr, slic_key_fields, ptr - data); break; case 1: __acpi_dump_table_fields(fw, ptr, slic_header_fields, ptr - data); __acpi_dump_table_fields(fw, ptr, slic_marker_fields, ptr - data); break; default: __acpi_dump_table_fields(fw, ptr, slic_header_fields, ptr - data); break; } ptr += header->length; } } /* * acpidump_uefi() * dump out UEFI tables */ static void acpidump_uefi(fwts_framework *fw, const const fwts_acpi_table_info *table) { fwts_acpi_table_uefi *uefi = (fwts_acpi_table_uefi *)table->data; static const fwts_acpidump_field uefi_fields[] = { FIELD_GUID("UUID", fwts_acpi_table_uefi, uuid), FIELD_END }; __acpi_dump_table_fields(fw, table->data, uefi_fields, 0); fwts_log_nl(fw); acpi_dump_raw_data(fw, uefi->data, table->length - sizeof(fwts_acpi_table_uefi), sizeof(fwts_acpi_table_uefi)); } /* * acpidump_bgrt() * dump BGRT, see 5.2.22 Boot Graphics Resource Table (BGRT) * of version 5.0 ACPI spec. */ static void acpidump_bgrt(fwts_framework *fw, const fwts_acpi_table_info *table) { static const fwts_acpidump_field bgrt_fields[] = { FIELD_UINT("Version", fwts_acpi_table_bgrt, version), FIELD_UINT("Status", fwts_acpi_table_bgrt, status), FIELD_UINT("Image Type", fwts_acpi_table_bgrt, image_type), FIELD_UINT("Image Address", fwts_acpi_table_bgrt, image_addr), FIELD_UINT("Image Offset X", fwts_acpi_table_bgrt, image_offset_x), FIELD_UINT("Image Offset Y", fwts_acpi_table_bgrt, image_offset_t), FIELD_END }; acpi_dump_table_fields(fw, table->data, bgrt_fields, 0, table->length); } /* * acpidump_gtdt() * dump GTDT, see 5.2.24 Generic Timer Description Table (GTDT) * of version 5.0 ACPI spec. */ static void acpidump_gtdt(fwts_framework *fw, const fwts_acpi_table_info *table) { static const fwts_acpidump_field gtdt_fields[] = { FIELD_UINT("Physical Address", fwts_acpi_table_gtdt, phys_addr), FIELD_UINT("Global Flags", fwts_acpi_table_gtdt, global_flags), FIELD_UINT("Secure PL1 Timer GSIV", fwts_acpi_table_gtdt, secure_PL1_timer_GSIV), FIELD_UINT("Secure PL1 Timer Flags", fwts_acpi_table_gtdt, secure_PL1_timer_flags), FIELD_UINT("Non-Secure PL1 Timer GSIV", fwts_acpi_table_gtdt, non_secure_PL1_timer_GSIV), FIELD_UINT("Non-Secure PL1 Timer Flags", fwts_acpi_table_gtdt, non_secure_PL1_timer_flags), FIELD_UINT("Virtual Timer GSIV", fwts_acpi_table_gtdt, virtual_timer_GSIV), FIELD_UINT("Virtual Timer flags", fwts_acpi_table_gtdt, virtual_timer_flags), FIELD_UINT("Non-Secure PL2 Timer GSIV", fwts_acpi_table_gtdt, non_secure_PL2_timer_GSIV), FIELD_UINT("Non-Secure PL2 Timer Flags", fwts_acpi_table_gtdt, non_secure_PL2_timer_flags), FIELD_END }; acpi_dump_table_fields(fw, table->data, gtdt_fields, 0, table->length); } /* * acpidump_fpdt() * dump FPDT, see 5.2.23 Firmware Performance Data Table (FPDT) * of version 5.0 ACPI spec. */ static void acpidump_fpdt(fwts_framework *fw, const fwts_acpi_table_info *table) { uint8_t *data = (uint8_t *)table->data, *ptr = data; const size_t fpdt_hdr_len = sizeof(fwts_acpi_table_fpdt_header); static const fwts_acpidump_field fpdt_header_fields[] = { FIELD_UINT("Type", fwts_acpi_table_fpdt_header, type), FIELD_UINT("Length", fwts_acpi_table_fpdt_header, length), FIELD_UINT("Revision", fwts_acpi_table_fpdt_header, revision), FIELD_END }; static const fwts_acpidump_field fpdt_basic_boot_perf_ptr_fields[] = { FIELD_UINT("Reserved", fwts_acpi_table_fpdt_basic_boot_perf_ptr, reserved), FIELD_UINT("FBPT Pointer", fwts_acpi_table_fpdt_basic_boot_perf_ptr, fbpt_addr), FIELD_END }; static const fwts_acpidump_field fpdt_s3_perf_ptr_fields[] = { FIELD_UINT("Reserved", fwts_acpi_table_fpdt_s3_perf_ptr, reserved), FIELD_UINT("S3PT Pointer", fwts_acpi_table_fpdt_s3_perf_ptr, s3pt_addr), FIELD_END }; ptr += sizeof(fwts_acpi_table_header); /* * Currently we just dump out the various pointer records. A more complete * implementation should mmap the memory that the records point to and also * dump these out. That's an implementation issue for later. */ while (ptr < data + table->length) { fwts_acpi_table_fpdt_header *fpdt = (fwts_acpi_table_fpdt_header *)ptr; fwts_log_nl(fw); switch (fpdt->type) { case 0x0000: fwts_log_info_verbatum(fw, "Basic Boot Performance Data Record pointer:"); __acpi_dump_table_fields(fw, ptr, fpdt_header_fields, ptr - data); __acpi_dump_table_fields(fw, ptr, fpdt_basic_boot_perf_ptr_fields, ptr - data); break; case 0x0001: fwts_log_info_verbatum(fw, "S3 Performance Table pointer:"); __acpi_dump_table_fields(fw, ptr, fpdt_header_fields, ptr - data); __acpi_dump_table_fields(fw, ptr, fpdt_s3_perf_ptr_fields, ptr - data); break; case 0x0002 ... 0x0fff: fwts_log_info_verbatum(fw, "Reserved for ACPI specification usage:"); __acpi_dump_table_fields(fw, ptr, fpdt_header_fields, ptr - data); acpi_dump_raw_data(fw, ptr + fpdt_hdr_len, fpdt->length - fpdt_hdr_len, ptr + fpdt_hdr_len - data); break; case 0x1000 ... 0x1fff: fwts_log_info_verbatum(fw, "Reserved for Platform Vendor usage:"); __acpi_dump_table_fields(fw, ptr, fpdt_header_fields, ptr - data); acpi_dump_raw_data(fw, ptr + fpdt_hdr_len, fpdt->length - fpdt_hdr_len, ptr + fpdt_hdr_len - data); break; case 0x2000 ... 0x2fff: fwts_log_info_verbatum(fw, "Reserved for Hardware Vendor usage:"); __acpi_dump_table_fields(fw, ptr, fpdt_header_fields, ptr - data); acpi_dump_raw_data(fw, ptr + fpdt_hdr_len, fpdt->length - fpdt_hdr_len, ptr + fpdt_hdr_len - data); break; case 0x3000 ... 0x3fff: fwts_log_info_verbatum(fw, "Reserved for BIOS Vendor usage:"); __acpi_dump_table_fields(fw, ptr, fpdt_header_fields, ptr - data); acpi_dump_raw_data(fw, ptr + fpdt_hdr_len, fpdt->length - fpdt_hdr_len, ptr + fpdt_hdr_len - data); break; default: fwts_log_info_verbatum(fw, "Reserved for future usage:"); __acpi_dump_table_fields(fw, ptr, fpdt_header_fields, ptr - data); acpi_dump_raw_data(fw, ptr + fpdt_hdr_len, fpdt->length - fpdt_hdr_len, ptr + fpdt_hdr_len - data); break; } ptr += fpdt->length; } } /* * acpidump_rasf() * dump RASF, see 5.2.20 ACPI RAS FeatureTable (RASF) * of version 5.0 ACPI spec. */ static void acpidump_rasf(fwts_framework *fw, const fwts_acpi_table_info *table) { static const fwts_acpidump_field rasf_fields[] = { FIELD_UINTS("Comm. Channel ID", fwts_acpi_table_rasf, platform_cc_id), FIELD_END }; acpi_dump_table_fields(fw, table->data, rasf_fields, 0, table->length); /* No idea how to dump rest of table, spec is a rather poor */ acpi_dump_raw_table(fw, table); } /* * acpidump_pcct() * dump PCCT, see 14 ACPI PCCT (Platform Communications Channel) * of version 5.0 ACPI spec. */ static void acpidump_pcct(fwts_framework *fw, const fwts_acpi_table_info *table) { uint8_t *data = (uint8_t *)table->data, *ptr = data; static const fwts_acpidump_field pcct_fields[] = { FIELD_UINT ("Flags", fwts_acpi_table_pcct, flags), FIELD_UINTS("Reserved", fwts_acpi_table_pcct, reserved), FIELD_END }; static const fwts_acpidump_field type0_fields[] = { FIELD_UINTS("Reserved", fwts_acpi_table_pcct_subspace_type_0, reserved), FIELD_UINT ("Base Address", fwts_acpi_table_pcct_subspace_type_0, base_address), FIELD_UINT ("Length", fwts_acpi_table_pcct_subspace_type_0, length), FIELD_GAS ("Doorbell Register",fwts_acpi_table_pcct_subspace_type_0, doorbell_register), FIELD_UINT ("Doorbell Preserve",fwts_acpi_table_pcct_subspace_type_0, doorbell_preserve), FIELD_UINT ("Doorbell Write", fwts_acpi_table_pcct_subspace_type_0, doorbell_write), FIELD_UINT ("Nominal Latency", fwts_acpi_table_pcct_subspace_type_0, nominal_latency), FIELD_UINT ("Max. Access Rate", fwts_acpi_table_pcct_subspace_type_0, max_periodic_access_rate), FIELD_UINT ("Min. Turnaround Time", fwts_acpi_table_pcct_subspace_type_0, min_request_turnaround_time), FIELD_END }; acpi_dump_table_fields(fw, data, pcct_fields, 0, table->length); ptr += sizeof(fwts_acpi_table_pcct); /* Now scan through the array of subspace structures */ while (ptr < data + table->length) { fwts_acpi_table_pcct_subspace_header *header = (fwts_acpi_table_pcct_subspace_header *)ptr; /* Currently just type 0 is supported */ switch (header->type) { case 0: fwts_log_info_verbatum(fw, "General Communications Subspace Structure (type 0):"); __acpi_dump_table_fields(fw, ptr, type0_fields, ptr - data); break; default: break; } ptr += header->length; } } /* * acpidump_spcr() * dump spcr, Serial Port Console Redirection Table */ static void acpidump_spcr(fwts_framework *fw, const fwts_acpi_table_info *table) { static const fwts_acpidump_field spcr_fields[] = { FIELD_UINT("Interface Type", fwts_acpi_table_spcr, interface_type), FIELD_UINT("Reserved", fwts_acpi_table_spcr, reserved1), FIELD_GAS ("Base Address", fwts_acpi_table_spcr, base_address), FIELD_UINT("Interrupt Type", fwts_acpi_table_spcr, interrupt_type), FIELD_UINT("IRQ", fwts_acpi_table_spcr, irq), FIELD_UINT("Global System Interrupt", fwts_acpi_table_spcr, gsi), FIELD_UINT("Baud Rate", fwts_acpi_table_spcr, baud_rate), FIELD_UINT("Parity", fwts_acpi_table_spcr, parity), FIELD_UINT("Stop Bits", fwts_acpi_table_spcr, stop_bits), FIELD_UINT("Flow Control", fwts_acpi_table_spcr, flow_control), FIELD_UINT("Terminal Type", fwts_acpi_table_spcr, terminal_type), FIELD_UINT("Reserved", fwts_acpi_table_spcr, reserved2), FIELD_UINT("PCI Device ID", fwts_acpi_table_spcr, pci_device_id), FIELD_UINT("PCI Vendor ID", fwts_acpi_table_spcr, pci_vendor_id), FIELD_UINT("PCI Bus Number", fwts_acpi_table_spcr, pci_bus_number), FIELD_UINT("PCI Device Number", fwts_acpi_table_spcr, pci_device_number), FIELD_UINT("PCI Function Number", fwts_acpi_table_spcr, pci_function_number), FIELD_UINT("PCI Flags", fwts_acpi_table_spcr, pci_flags), FIELD_UINT("PCI Segment", fwts_acpi_table_spcr, pci_segment), FIELD_UINT("Reserved", fwts_acpi_table_spcr, reserved3), FIELD_END }; acpi_dump_table_fields(fw, table->data, spcr_fields, 0, table->length); } /* * acpidump_dbgp() * dump dbgp, debug port table */ static void acpidump_dbgp(fwts_framework *fw, const fwts_acpi_table_info *table) { static const fwts_acpidump_field dbgp_fields[] = { FIELD_UINT("Interface Type", fwts_acpi_table_dbgp, interface_type), FIELD_UINT("Reserved", fwts_acpi_table_dbgp, reserved1), FIELD_GAS ("Base Address", fwts_acpi_table_dbgp, base_address), FIELD_END }; acpi_dump_table_fields(fw, table->data, dbgp_fields, 0, table->length); } /* * acpidump_dbg2() * dump dbg2, debug port table */ static void acpidump_dbg2(fwts_framework *fw, const fwts_acpi_table_info *table) { fwts_acpi_table_dbg2 *dbg2 = (fwts_acpi_table_dbg2 *)table->data; uint32_t i; size_t offset; typedef struct { fwts_acpi_gas addr; } gas_addr; typedef struct { uint32_t size; } addr_size; typedef struct { char *path; } namespace; static const fwts_acpidump_field dbg2_fields[] = { FIELD_UINT("Info Offset", fwts_acpi_table_dbg2, info_offset), FIELD_UINT("Info Count", fwts_acpi_table_dbg2, info_count), FIELD_END }; static const fwts_acpidump_field dbg2_info_fields[] = { FIELD_UINT("Revision", fwts_acpi_table_dbg2_info, revision), FIELD_UINT("Length", fwts_acpi_table_dbg2_info, length), FIELD_UINT("Register Count", fwts_acpi_table_dbg2_info, number_of_regs), FIELD_UINT("Namespace Length", fwts_acpi_table_dbg2_info, namespace_length), FIELD_UINT("Namespace Offset", fwts_acpi_table_dbg2_info, namespace_offset), FIELD_UINT("OEM Data Length", fwts_acpi_table_dbg2_info, oem_data_length), FIELD_UINT("OEM Data Offset", fwts_acpi_table_dbg2_info, oem_data_offset), FIELD_UINT("Port Type", fwts_acpi_table_dbg2_info, port_type), FIELD_UINT("Port Subtype", fwts_acpi_table_dbg2_info, port_subtype), FIELD_UINT("Reserved", fwts_acpi_table_dbg2_info, reserved), FIELD_UINT("Base Address Offset", fwts_acpi_table_dbg2_info, base_address_offset), FIELD_UINT("Address Size Offset", fwts_acpi_table_dbg2_info, address_size_offset), FIELD_END }; static const fwts_acpidump_field dbg2_gas_fields[] = { FIELD_GAS ("Base Address Register", gas_addr, addr), FIELD_END }; static const fwts_acpidump_field dbg2_addr_fields[] = { FIELD_UINT("Address Size", addr_size, size), FIELD_END }; static const fwts_acpidump_field dbg2_namespace_fields[] = { FIELD_STRZ("Namepath", namespace, path), FIELD_END }; acpi_dump_table_fields(fw, table->data, dbg2_fields, 0, table->length); fwts_log_nl(fw); offset = dbg2->info_offset; /* Dump out info_count number of instances */ for (i = 0; i < dbg2->info_count; i++) { uint32_t j; fwts_acpi_table_dbg2_info *dbg2_info = (fwts_acpi_table_dbg2_info *)(table->data + offset); uint8_t *base_addr_regs = (uint8_t *)dbg2_info + dbg2_info->base_address_offset; uint8_t *address_size = (uint8_t *)dbg2_info + dbg2_info->address_size_offset; uint8_t *namespace_str = (uint8_t *)dbg2_info + dbg2_info->namespace_offset; uint8_t *oem_data = (uint8_t *)dbg2_info + dbg2_info->oem_data_offset; __acpi_dump_table_fields(fw, table->data + offset, dbg2_info_fields, offset); if (dbg2_info->number_of_regs) { /* Dump out the register GAS and sizes */ for (j = 0; j < dbg2_info->number_of_regs; j++) { __acpi_dump_table_fields(fw, &base_addr_regs[j], dbg2_gas_fields, (void*)&base_addr_regs[j] - table->data); } fwts_log_nl(fw); for (j = 0; j < dbg2_info->number_of_regs; j++) acpi_dump_uint(fw, dbg2_addr_fields, &address_size[j], (void *)&address_size[j] - table->data); fwts_log_nl(fw); } /* Do we have a namespace to dump? */ if (dbg2_info->namespace_offset) acpi_dump_strz(fw, dbg2_namespace_fields, namespace_str, (void *)namespace_str - table->data); /* And dump any OEM specific data */ if (dbg2_info->oem_data_length) { fwts_log_nl(fw); fwts_log_info_verbatum(fw, "OEM Data:"); acpi_dump_raw_data(fw, oem_data, dbg2_info->oem_data_length, (void *)oem_data - table->data); } offset += dbg2_info->length; if (offset > table->length) break; } } /* * acpidump_mchi() * dump mchi, Management Controller Host Interface Table * http://www.dmtf.org/standards/published_documents/DSP0256_1.0.0.pdf */ static void acpidump_mchi(fwts_framework *fw, const fwts_acpi_table_info *table) { static const fwts_acpidump_field mchi_fields[] = { FIELD_UINT("Interface Type", fwts_acpi_table_mchi, interface_type), FIELD_UINT("Protocol Identifier", fwts_acpi_table_mchi, protocol_identifier), FIELD_UINT("Protocol Data", fwts_acpi_table_mchi, protocol_data), FIELD_UINT("Interrupt Type", fwts_acpi_table_mchi, interrupt_type), FIELD_UINT("GPE", fwts_acpi_table_mchi, gpe), FIELD_UINT("PCI Device Flag", fwts_acpi_table_mchi, pci_device_flag), FIELD_UINT("Global System Interrupt", fwts_acpi_table_mchi, global_system_interrupt), FIELD_GAS ("Base Address", fwts_acpi_table_mchi, base_address), FIELD_UINT("PCI Segment Group Number", fwts_acpi_table_mchi, pci_segment_group_number), FIELD_UINT("PCI Bus Number", fwts_acpi_table_mchi, pci_bus_number), FIELD_UINT("PCI Device Number", fwts_acpi_table_mchi, pci_device_number), FIELD_UINT("PCI Function Number", fwts_acpi_table_mchi, pci_function_number), FIELD_END }; acpi_dump_table_fields(fw, table->data, mchi_fields, 0, table->length); } typedef struct { const char *name; /* ACPI table signature */ void (*func)(fwts_framework *fw, const fwts_acpi_table_info *table); const int standard_header; /* 1 = standard ACPI header */ const char *description; /* table description */ } acpidump_table_vec; /* To be implemented */ #define acpidump_aspt acpi_dump_raw_table #define acpidump_csrt acpi_dump_raw_table #define acpidump_etdt acpi_dump_raw_table #define acpidump_einj acpi_dump_raw_table #define acpidump_hest acpi_dump_raw_table #define acpidump_ibft acpi_dump_raw_table #define acpidump_ivrs acpi_dump_raw_table #define acpidump_msct acpi_dump_raw_table #define acpidump_msdm acpi_dump_raw_table #define acpidump_mpst acpi_dump_raw_table #define acpidump_oemb acpi_dump_raw_table #define acpidump_pmtt acpi_dump_raw_table #define acpidump_waet acpi_dump_raw_table #define acpidump_wdat acpi_dump_raw_table #define acpidump_wdrt acpi_dump_raw_table #define acpidump_wpbt acpi_dump_raw_table static const acpidump_table_vec table_vec[] = { { "APIC", acpidump_madt, 1, "Multiple APIC Description Table" }, { "ASF!", acpidump_asf, 1, "Alert Standard Format Table" }, { "ASPT", acpidump_aspt, 1, "ACPI System Performance Tuning Table" }, { "BERT", acpidump_bert, 1, "Boot Error Record Table" }, { "BGRT", acpidump_bgrt, 1, "Boot Graphics Resource Table" }, { "BOOT", acpidump_boot, 1, "Simple Boot Flag Table", }, { "CPEP", acpidump_cpep, 1, "Corrected Platform Error Polling Table" }, { "CSRT", acpidump_csrt, 1, "Core System Resource Table" }, { "DBG2", acpidump_dbg2, 1, "Debug Port Table 2" }, { "DBGP", acpidump_dbgp, 1, "Debug Port Table", }, { "DSDT", acpidump_amlcode, 1, "Differentiated System Description Table" }, { "DMAR", acpidump_dmar, 1, "DMA Remapping Table", }, { "ECDT", acpidump_ecdt, 1, "Embedded Controller Boot Resources Table" }, { "EINJ", acpidump_einj, 1, "Error Injection Table" }, { "ERST", acpidump_erst, 1, "Error Record Serialization Table" }, { "ETDT", acpidump_etdt, 1, "Event Timer Description Table (Obsolete)" }, { "FACP", acpidump_fadt, 1, "Fixed ACPI Description Table" }, { "FACS", acpidump_facs, 0, "Firmware ACPI Control Structure" }, { "FPDT", acpidump_fpdt, 1, "Firmware Performance Data Table" }, { "GTDT", acpidump_gtdt, 1, "Generic Timer Description Table" }, { "HEST", acpidump_hest, 1, "Hardware Error Source Table" }, { "HPET", acpidump_hpet, 1, "IA-PC High Precision Event Timer Table" }, { "IBFT", acpidump_ibft, 1, "iSCSI Boot Firmware Table" }, { "IVRS", acpidump_ivrs, 1, "I/O Virtualization Reporting Structure" }, { "MCFG", acpidump_mcfg, 1, "PCI Express Memory Mapped Config Space Base Address Table" }, { "MCHI", acpidump_mchi, 1, "Management Controller Host Interface Table" }, { "MPST", acpidump_mpst, 1, "Memory Power State Table" }, { "MSCT", acpidump_msct, 1, "Maximum System Characteristics Table" }, { "MSDM", acpidump_msdm, 1, "Microsoft Data Management Table" }, { "OEMB", acpidump_oemb, 1, "OEM-define ACPI Table" }, { "PCCT", acpidump_pcct, 1, "Platform Communications Channel" }, { "PMTT", acpidump_pmtt, 1, "Platform Memory Topology Table", }, { "PSDT", acpidump_amlcode, 1, "Persistent System Description Table" }, { "RASF", acpidump_rasf, 1, "ACPI RAS Feature Table" }, { "RSDT", acpidump_rsdt, 1, "Root System Description Table" }, { "RSD PTR ", acpidump_rsdp, 0, "Root System Description Pointer" }, { "SBST", acpidump_sbst, 1, "Smart Battery Specification Table" }, { "SPCR", acpidump_spcr, 1, "Serial Port Console Redirection Table" }, { "SSDT", acpidump_amlcode, 1, "Secondary System Description Table" }, { "SLIC", acpidump_slic, 1, "Microsoft Software License Table" }, { "SLIT", acpidump_slit, 1, "System Locality Distance Information Table" }, { "SRAT", acpidump_srat, 1, "System Resource Affinity Tanle" }, { "TCPA", acpidump_tcpa, 1, "Trusted Computing Platform Alliance Capabilities Table" }, { "UEFI", acpidump_uefi, 1, "UEFI ACPI Data Table" }, { "WAET", acpidump_waet, 1, "Windows ACPI Emulated Devices Table" }, { "WDAT", acpidump_wdat, 1, "Watch Dog Action Table" }, { "WDRT", acpidump_wdrt, 1, "Watch Dog Resource Table" }, { "WPBT", acpidump_wpbt, 1, "Windows Platform Binary Table" }, { "XSDT", acpidump_xsdt, 1, "Extended System Description Table" }, { NULL, NULL, 0, NULL }, }; static int acpidump_table(fwts_framework *fw, fwts_acpi_table_info *table) { uint8_t *data = (uint8_t *)table->data; fwts_acpi_table_header hdr; size_t length = table->length; int i; for (i = 0; table_vec[i].name != NULL; i++) { if (strncmp(table_vec[i].name, (char *)data, strlen(table_vec[i].name)) == 0) { if (table_vec[i].description) { fwts_log_info_verbatum(fw, "%s:", table_vec[i].description); fwts_log_nl(fw); } if (table_vec[i].standard_header) { fwts_acpi_table_get_header(&hdr, data); acpidump_hdr(fw, &hdr, length); } table_vec[i].func(fw, table); return FWTS_OK; } } /* Cannot find, assume standard table header */ fwts_acpi_table_get_header(&hdr, data); acpidump_hdr(fw, &hdr, length); acpi_dump_raw_table(fw, table); return FWTS_OK; } static int acpidump_test1(fwts_framework *fw) { int i; fwts_acpi_table_info *table; fwts_infoonly(fw); for (i = 0; (fwts_acpi_get_table(fw, i, &table) == FWTS_OK) && (table !=NULL); i++) { char *provenance; switch (table->provenance) { case FWTS_ACPI_TABLE_FROM_FILE: provenance = " (loaded from file)"; break; case FWTS_ACPI_TABLE_FROM_FIXUP: provenance = " (generated by fwts)"; break; default: provenance = ""; break; } fwts_log_info_verbatum(fw, "%s @ %lx (%zd bytes)%s", table->name, (unsigned long)table->addr, table->length, provenance); fwts_log_info_verbatum(fw, "----"); acpidump_table(fw, table); fwts_log_nl(fw); } /* Some systems don't have any ACPI tables */ if (!i) fwts_log_info(fw, "Cannot find any ACPI tables."); return FWTS_OK; } static fwts_framework_minor_test acpidump_tests[] = { { acpidump_test1, "Dump ACPI tables." }, { NULL, NULL } }; static fwts_framework_ops acpidump_ops = { .description = "Dump ACPI tables.", .minor_tests = acpidump_tests }; FWTS_REGISTER("acpidump", &acpidump_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_UTILS); src/acpi/acpiinfo/000077500000000000000000000000001231470457100143555ustar00rootroot00000000000000src/acpi/acpiinfo/acpiinfo.c000066400000000000000000000074601231470457100163200ustar00rootroot00000000000000/* * Copyright (C) 2010-2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #include "fwts.h" #include #include #include #include static int acpiinfo_compiled_by(fwts_framework *fw, char *name, int instance) { char *compiler; char tmp[80]; char num[10]; fwts_acpi_table_info *table; fwts_acpi_table_header *header; if (fwts_acpi_find_table(fw, name, instance < 0 ? 0 : instance, &table) != FWTS_OK) return FWTS_ERROR; if (table == NULL || table->data == NULL) return FWTS_ERROR; header = (fwts_acpi_table_header *)table->data; if (strncmp(header->creator_id, "MSFT", 4) == 0) { compiler = "Microsoft"; } else if (strncmp(header->creator_id, "INTL", 4) == 0) { compiler = "Intel"; } else { snprintf(tmp, sizeof(tmp), "Unknown (%4.4s)", header->creator_id); compiler = tmp; } if (instance == -1) *num = '\0'; else snprintf(num, sizeof(num), "%d", instance); fwts_log_info(fw, "Table %4.4s%s, OEM %6.6s, created with %4.4s (%s) compiler.", header->signature, num, header->oem_id, header->creator_id, compiler); return FWTS_OK; } static int acpiinfo_test1(fwts_framework *fw) { char *str; if (((str = fwts_get("/sys/module/acpi/parameters/acpica_version")) == NULL) && ((str = fwts_get("/proc/acpi/info")) == NULL)) fwts_log_info(fw, "Cannot get ACPI version info from " "/sys/module/acpi/parameters/acpica_version or /proc/acpi/info"); else { int version; int yearmonth; fwts_chop_newline(str); sscanf(str, "%6d", &yearmonth); if (yearmonth > 201110) { version = 5; } else if (yearmonth > 200906) { version = 4; } else if (yearmonth > 200505) { version = 3; } else { version = 2; } fwts_log_info(fw, "Kernel ACPICA driver version: %s, supports ACPI %d.0", str, version); free(str); } fwts_infoonly(fw); return FWTS_OK; } static int acpiinfo_test2(fwts_framework *fw) { fwts_acpi_table_info *table; fwts_acpi_table_header *header; if (fwts_acpi_find_table(fw, "FACP", 0, &table) != FWTS_OK) return FWTS_ERROR; if (table == NULL || table->data == NULL) return FWTS_ERROR; header = (fwts_acpi_table_header *)table->data; fwts_log_info(fw, "FACP ACPI Version: %d.0\n", header->revision); fwts_infoonly(fw); return FWTS_OK; } static int acpiinfo_test3(fwts_framework *fw) { int i; fwts_log_info(fw, "Determine the compiler used to generate the ACPI AML in the DSDT and SSDT."); acpiinfo_compiled_by(fw, "DSDT", -1); for (i = 0; i < 32 ; i++) { /* If we can't fetch the Nth SSDT, we've reached the end */ if (acpiinfo_compiled_by(fw, "SSDT", i) != FWTS_OK) break; } fwts_infoonly(fw); return FWTS_OK; } static fwts_framework_minor_test acpiinfo_tests[] = { { acpiinfo_test1, "Determine Kernel ACPI version." }, { acpiinfo_test2, "Determine machine's ACPI version." }, { acpiinfo_test3, "Determine AML compiler." }, { NULL, NULL } }; static fwts_framework_ops acpiinfo_ops = { .description = "General ACPI information test.", .minor_tests = acpiinfo_tests }; FWTS_REGISTER("acpiinfo", &acpiinfo_ops, FWTS_TEST_EARLY, FWTS_FLAG_BATCH); src/acpi/acpitables/000077500000000000000000000000001231470457100146745ustar00rootroot00000000000000src/acpi/acpitables/acpitables.c000066400000000000000000000515631231470457100171610ustar00rootroot00000000000000/* * Copyright (C) 2010-2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #include #include #include #include #include #include #include #include #include #include "fwts.h" static void acpi_table_check_ecdt(fwts_framework *fw, fwts_acpi_table_info *table) { fwts_acpi_table_ecdt *ecdt = (fwts_acpi_table_ecdt*)table->data; if ((ecdt->ec_control.address_space_id != 0) && (ecdt->ec_control.address_space_id != 1)) { fwts_failed(fw, LOG_LEVEL_MEDIUM, "ECDTECCtrlAddrSpaceID", "ECDT EC_CONTROL address space id = %" PRIu8 ", should be 0 or 1 (System I/O Space or System Memory Space)", ecdt->ec_control.address_space_id); fwts_advice(fw, "The ECDT EC_CONTROL address space id was invalid, however the kernel ACPI EC driver " "will just assume it an I/O port address. This will not affect " "the system behaviour and can probably be ignored."); } if ((ecdt->ec_data.address_space_id != 0) && (ecdt->ec_data.address_space_id != 1)) { fwts_failed(fw, LOG_LEVEL_MEDIUM, "ECDTECDataAddrSpaceID", "ECDT EC_CONTROL address space id = %" PRIu8 ", should be 0 or 1 (System I/O Space or System Memory Space)", ecdt->ec_data.address_space_id); fwts_advice(fw, "The ECDT EC_DATA address space id was invalid, however the kernel ACPI EC driver " "will just assume it an I/O port address. This will not affect " "the system behaviour and can probably be ignored."); } } static void acpi_table_check_hpet(fwts_framework *fw, fwts_acpi_table_info *table) { fwts_acpi_table_hpet *hpet = (fwts_acpi_table_hpet*)table->data; if (hpet->base_address.address == 0) fwts_failed(fw, LOG_LEVEL_MEDIUM, "HPETBaseZero", "HPET base is 0x000000000000, which is invalid."); if (((hpet->event_timer_block_id >> 16) & 0xffff) == 0) { fwts_failed(fw, LOG_LEVEL_MEDIUM, "HPETVendorIdZero", "HPET PCI Vendor ID is 0x0000, which is invalid."); fwts_advice(fw, "The HPET specification (http://www.intel.com/hardwaredesign/hpetspec_1.pdf) describes " "the HPET table in section 3.2.4 'The ACPI 2.0 HPET Description Table (HPET)'. The top " "16 bits of the Event Timer Block ID specify the Vendor ID and this should not be zero. " "This won't affect the kernel behaviour, but should be fixed as it is an undefined ID value."); } } static void acpi_table_check_fadt(fwts_framework *fw, fwts_acpi_table_info *table) { fwts_acpi_table_fadt *fadt = (fwts_acpi_table_fadt*)table->data; if (fadt->firmware_control == 0) { if (table->length >= 140) { if (fadt->x_firmware_ctrl == 0) { fwts_failed(fw, LOG_LEVEL_CRITICAL, "FADTFACSZero", "FADT 32 bit FIRMWARE_CONTROL and 64 bit X_FIRMWARE_CONTROL (FACS address) are null."); fwts_advice(fw, "The 32 bit FIRMWARE_CTRL or 64 bit X_FIRMWARE_CTRL should point to a valid " "Firmware ACPI Control Structure (FACS). This is a firmware bug and needs to be fixed."); } } else { fwts_failed(fw, LOG_LEVEL_MEDIUM, "FADT32BitFACSNull", "FADT 32 bit FIRMWARE_CONTROL is null."); fwts_advice(fw, "The ACPI version 1.0 FADT has a NULL FIRMWARE_CTRL and it needs to be defined " "to point to a valid Firmware ACPI Control Structure (FACS). This is a firmware " "bug and needs to be fixed."); } } else { if (table->length >= 140) { if (fadt->x_firmware_ctrl != 0) { if (((uint64_t)fadt->firmware_control != fadt->x_firmware_ctrl)) { fwts_failed(fw, LOG_LEVEL_MEDIUM, "FwCtrl32and64Differ", "FIRMWARE_CONTROL is 0x%" PRIx32 " and differs " "from X_FIRMWARE_CONTROL 0x%" PRIx64, fadt->firmware_control, fadt->x_firmware_ctrl); fwts_advice(fw, "One would expect the 32 bit FIRMWARE_CTRL and 64 bit X_FIRMWARE_CTRL " "pointers to point to the same FACS, however they don't which is clearly ambiguous and wrong. " "The kernel works around this by using the 64 bit X_FIRMWARE_CTRL pointer to the FACS. "); } } } } if (fadt->dsdt == 0) fwts_failed(fw, LOG_LEVEL_MEDIUM, "FADTDSTNull", "FADT DSDT address is null."); if (table->length >= 148) { if (fadt->x_dsdt == 0) { fwts_failed(fw, LOG_LEVEL_MEDIUM, "FADTXDSTDNull", "FADT X_DSDT address is null."); fwts_advice(fw, "An ACPI 2.0 FADT is being used however the 64 bit X_DSDT is null." "The kernel will fall back to using the 32 bit DSDT pointer instead."); } else if ((uint64_t)fadt->dsdt != fadt->x_dsdt) { fwts_failed(fw, LOG_LEVEL_MEDIUM, "FADT32And64Mismatch", "FADT 32 bit DSDT (0x%" PRIx32 ") does not point to same " "physical address as 64 bit X_DSDT (0x%" PRIx64 ").", fadt->dsdt, fadt->x_dsdt); fwts_advice(fw, "One would expect the 32 bit DSDT and 64 bit X_DSDT " "pointers to point to the same DSDT, however they don't which is clearly ambiguous and wrong. " "The kernel works around this by using the 64 bit X_DSDT pointer to the DSDT. "); } } if (fadt->sci_int == 0) fwts_failed(fw, LOG_LEVEL_MEDIUM, "FADTSCIIRQZero", "FADT SCI Interrupt is 0x00, should be defined."); if (fadt->smi_cmd == 0) { if ((fadt->acpi_enable == 0) && (fadt->acpi_disable == 0) && (fadt->s4bios_req == 0) && (fadt->pstate_cnt == 0) && (fadt->cst_cnt == 0)) fwts_warning(fw, "FADT SMI_CMD is 0x00, system appears to not support System Management mode."); else { fwts_failed(fw, LOG_LEVEL_MEDIUM, "FADTSMICMDZero", "FADT SMI_CMD is 0x00, however, one or more of ACPI_ENABLE, ACPI_DISABLE, " "S4BIOS_REQ, PSTATE_CNT and CST_CNT are defined which means SMI_CMD should be " "defined otherwise SMI commands cannot be sent."); fwts_advice(fw, "The configuration seems to suggest that SMI command should be defined to " "allow the kernel to trigger system management interrupts via the SMD_CMD port. " "The fact that SMD_CMD is zero which is invalid means that SMIs are not possible " "through the normal ACPI mechanisms. This means some firmware based machine " "specific functions will not work."); } } if (fadt->pm_tmr_len != 4) { fwts_failed(fw, LOG_LEVEL_MEDIUM, "FADTBadPMTMRLEN", "FADT PM_TMR_LEN is %" PRIu8 ", should be 4.", fadt->pm_tmr_len); fwts_advice(fw, "FADT field PM_TMR_LEN defines the number of bytes decoded by PM_TMR_BLK. " "This fields value must be 4. If it is not the correct size then the kernel " "will not request a region for the pm timer block. "); } if (fadt->gpe0_blk_len & 1) { fwts_failed(fw, LOG_LEVEL_MEDIUM, "FADTBadGPEBLKLEN", "FADT GPE0_BLK_LEN is %" PRIu8 ", should a multiple of 2.", fadt->gpe0_blk_len); fwts_advice(fw, "The FADT GPE_BLK_LEN should be a multiple of 2. Because it isn't, the ACPI driver will " "not map in the GPE0 region. This could mean that General Purpose Events will not " "function correctly (for example lid or ac-power events)."); } if (fadt->gpe1_blk_len & 1) { fwts_failed(fw, LOG_LEVEL_MEDIUM, "FADTBadGPE1BLKLEN", "FADT GPE1_BLK_LEN is %" PRIu8 ", should a multiple of 2.", fadt->gpe1_blk_len); fwts_advice(fw, "The FADT GPE_BLK_LEN should be a multiple of 2. Because it isn't, the ACPI driver will " "not map in the GPE1 region. This could mean that General Purpose Events will not " "function correctly (for example lid or ac-power events)."); } /* * Bug LP: /833644 * * Remove these tests, really need to put more intelligence into it * perhaps in the cstates test rather than here. For the moment we * shall remove this warning as it's giving users false alarms * See: https://bugs.launchpad.net/ubuntu/+source/fwts/+bug/833644 */ /* if (fadt->p_lvl2_lat > 100) { fwts_warning(fw, "FADT P_LVL2_LAT is %" PRIi16 ", a value > 100 indicates a " "system not to support a C2 state.", fadt->p_lvl2_lat); fwts_advice(fw, "The FADT P_LVL2_LAT setting specifies the C2 latency in microseconds. The ACPI specification " "states that a value > 100 indicates that C2 is not supported and hence the " "ACPI processor idle routine will not use C2 power states."); } if (fadt->p_lvl3_lat > 1000) { fwts_warning(fw, "FADT P_LVL3_LAT is %" PRIu16 ", a value > 1000 indicates a " "system not to support a C3 state.", fadt->p_lvl3_lat); fwts_advice(fw, "The FADT P_LVL2_LAT setting specifies the C3 latency in microseconds. The ACPI specification " "states that a value > 1000 indicates that C3 is not supported and hence the " "ACPI processor idle routine will not use C3 power states."); } */ /* if (fadt->day_alrm == 0) fwts_warning(fw, "FADT DAY_ALRM is zero, OS will not be able to program day of month alarm."); if (fadt->mon_alrm == 0) fwts_warning(fw, "FADT MON_ALRM is zero, OS will not be able to program month of year alarm."); if (fadt->century == 0) fwts_warning(fw, "FADT CENTURY is zero, RTC does not support centenary feature is not supported."); */ if (table->length>=129) { if ((fadt->reset_reg.address_space_id != 0) && (fadt->reset_reg.address_space_id != 1) && (fadt->reset_reg.address_space_id != 2)) { fwts_failed(fw, LOG_LEVEL_MEDIUM, "FADTBadRESETREG", "FADT RESET_REG address space ID was %" PRIu8 ", must be System Memory space (0), " "System I/O space (1), or PCI configuration space (2).", fadt->reset_reg.address_space_id); fwts_advice(fw, "If the FADT RESET_REG address space ID is not set correctly then ACPI writes " "to this register *may* nor work correctly, meaning a reboot via this mechanism may not work."); } if ((fadt->reset_value == 0) && (fadt->reset_reg.address != 0)) fwts_warning(fw, "FADT RESET_VALUE is zero, which may be incorrect, it is usually non-zero."); } } static void acpi_table_check_rsdp(fwts_framework *fw, fwts_acpi_table_info *table) { fwts_acpi_table_rsdp *rsdp = (fwts_acpi_table_rsdp*)table->data; int i; int passed; for (passed=0,i=0;i<6;i++) { if (isalnum(rsdp->oem_id[i])) passed++; } if (!passed) { fwts_failed(fw, LOG_LEVEL_MEDIUM, "RSDPBadOEMId", "RSDP: oem_id does not contain any alpha numeric characters."); fwts_advice(fw, "The RSDP OEM Id is non-conforming, but this will not affect the system behaviour. However " "this should be fixed if possible to make the firmware ACPI complaint."); } if (rsdp->revision > 2) { fwts_failed(fw, LOG_LEVEL_MEDIUM, "RSDPBadRevisionId", "RSDP: revision is %" PRIu8 ", expected value less than 2.", rsdp->revision); fwts_advice(fw, "A RSDP revision number greater than 2 probably won't cause any system problems."); } } static void acpi_table_check_rsdt(fwts_framework *fw, fwts_acpi_table_info *table) { int i; int n; fwts_acpi_table_rsdt *rsdt = (fwts_acpi_table_rsdt*)table->data; n = (table->length - sizeof(fwts_acpi_table_header)) / sizeof(uint32_t); for (i=0; ientries[i] == 0) { fwts_failed(fw, LOG_LEVEL_HIGH, "RSDTEntryNull", "RSDT Entry %d is null, should not be non-zero.", i); fwts_advice(fw, "A RSDT pointer is null and therefore erroneously points to an invalid 32 bit " "ACPI table header. At worse this will cause the kernel to oops, at best the kernel " "may ignore this. However, it should be fixed where possible."); } } } static void acpi_table_check_sbst(fwts_framework *fw, fwts_acpi_table_info *table) { fwts_acpi_table_sbst *sbst = (fwts_acpi_table_sbst*)table->data; if (sbst->critical_energy_level > sbst->low_energy_level) { fwts_failed(fw, LOG_LEVEL_MEDIUM, "SBSTEnergyLevel1", "SBST Critical Energy Level (%" PRIu32 ") " "is greater than the Low Energy Level (%" PRIu32 ").", sbst->critical_energy_level, sbst->low_energy_level); fwts_advice(fw, "This could affect system behaviour based on incorrect smart battery information. This should be fixed."); } if (sbst->low_energy_level > sbst->warning_energy_level) { fwts_failed(fw, LOG_LEVEL_MEDIUM, "SBSTEnergeyLevel2", "SBST Low Energy Energy Level (%" PRIu32 ") " "is greater than the Warning Energy Level (%" PRIu32 ").", sbst->low_energy_level, sbst->warning_energy_level); fwts_advice(fw, "This could affect system behaviour based on incorrect smart battery information. This should be fixed."); } if (sbst->warning_energy_level == 0) { fwts_failed(fw, LOG_LEVEL_MEDIUM, "SBSTEnergyLevelZero", "SBST Warning Energy Level is zero, which is probably too low."); fwts_advice(fw, "This could affect system behaviour based on incorrect smart battery information. This should be fixed."); } } static void acpi_table_check_xsdt(fwts_framework *fw, fwts_acpi_table_info *table) { int i; int n; fwts_acpi_table_xsdt *xsdt = (fwts_acpi_table_xsdt*)table->data; n = (table->length - sizeof(fwts_acpi_table_header)) / sizeof(uint64_t); for (i=0; ientries[i] == 0) { fwts_failed(fw, LOG_LEVEL_MEDIUM, "XSDTEntryNull", "XSDT Entry %d is null, should not be non-zero.", i); fwts_advice(fw, "A XSDT pointer is null and therefore erroneously points to an invalid 64 bit " "ACPI table header. At worse this will cause the kernel to oops, at best the kernel " "may ignore this. However, it should be fixed where possible."); } } } static void acpi_table_check_madt(fwts_framework *fw, fwts_acpi_table_info *table) { fwts_acpi_table_madt *madt = (fwts_acpi_table_madt*)table->data; const void *data = table->data; size_t length = table->length; int i = 0; if (madt->flags & 0xfffffffe) fwts_failed(fw, LOG_LEVEL_MEDIUM, "MADTFlagsNonZero", "MADT flags field, bits 1..31 are reserved and " "should be zero, but are set as: %" PRIx32 ".\n", madt->flags); data += sizeof(fwts_acpi_table_madt); length -= sizeof(fwts_acpi_table_madt); while (length > sizeof(fwts_acpi_madt_sub_table_header)) { size_t skip = 0; i++; fwts_acpi_madt_sub_table_header *hdr = (fwts_acpi_madt_sub_table_header*)data; data += sizeof(fwts_acpi_madt_sub_table_header); length -= sizeof(fwts_acpi_madt_sub_table_header); switch (hdr->type) { case 0: { fwts_acpi_madt_processor_local_apic *lapic = (fwts_acpi_madt_processor_local_apic *)data; if (lapic->flags & 0xfffffffe) fwts_failed(fw, LOG_LEVEL_MEDIUM, "MADTAPICFlagsNonZero", "MADT Local APIC flags field, bits 1..31 are reserved and " "should be zero, but are set as: %" PRIx32 ".", lapic->flags); skip = sizeof(fwts_acpi_madt_processor_local_apic); } break; case 1: { fwts_acpi_madt_io_apic *ioapic = (fwts_acpi_madt_io_apic*)data; if (ioapic->io_apic_phys_address == 0) fwts_failed(fw, LOG_LEVEL_MEDIUM, "MADTIOAPICAddrZero", "MADT IO APIC address is zero, appears not to be defined."); /* if (ioapic->global_irq_base == 0) fwts_failed(fw, LOG_LEVEL_MEDIUM, "MADTIOAPICIRQZero", "MADT IO APIC global IRQ base is zero, appears not to be defined."); */ skip = sizeof(fwts_acpi_madt_io_apic); } break; case 2: { fwts_acpi_madt_interrupt_override *int_override = (fwts_acpi_madt_interrupt_override*)data; if (int_override->bus != 0) fwts_failed(fw, LOG_LEVEL_MEDIUM, "MADTIRQSrcISA", "MADT Interrupt Source Override Bus should be 0 for ISA bus."); if (int_override->flags & 0xfffffff0) fwts_failed(fw, LOG_LEVEL_MEDIUM, "MADTIRQSrcFlags", "MADT Interrupt Source Override flags, bits 4..31 are reserved " "and should be zero, but are set as: %" PRIx32 ".", int_override->flags); skip = sizeof(fwts_acpi_madt_interrupt_override); } break; case 3: { fwts_acpi_madt_nmi *nmi = (fwts_acpi_madt_nmi*)data; if (nmi->flags & 0xfffffff0) fwts_failed(fw, LOG_LEVEL_MEDIUM, "MADTNMISrcFlags", "MADT Non-Maskable Interrupt Source, flags, bits 4..31 are reserved " "and should be zero, but are set as: %" PRIx32 ".", nmi->flags); skip = sizeof(fwts_acpi_madt_nmi); } break; case 4: { fwts_acpi_madt_local_apic_nmi *nmi = (fwts_acpi_madt_local_apic_nmi*)data; if (nmi->flags & 0xfffffff0) fwts_failed(fw, LOG_LEVEL_MEDIUM, "MADTLAPICNMIFlags", "MADT Local APIC NMI flags, bits 4..31 are reserved " "and should be zero, but are set as: %" PRIx32 ".", nmi->flags); skip = sizeof(fwts_acpi_madt_local_apic_nmi); } break; case 5: { //fwts_acpi_madt_local_apic_addr_override *override = (fwts_acpi_madt_local_apic_addr_override*)data; skip = sizeof(fwts_acpi_madt_local_apic_addr_override); } break; case 6: { fwts_acpi_madt_io_sapic *sapic = (fwts_acpi_madt_io_sapic*)data; if (sapic->address == 0) fwts_failed(fw, LOG_LEVEL_MEDIUM, "MADIOSPAICAddrZero", "MADT I/O SAPIC address is zero, appears not to be defined."); skip = sizeof(fwts_acpi_madt_io_sapic); } break; case 7: { fwts_acpi_madt_local_sapic *local_sapic = (fwts_acpi_madt_local_sapic*)data; skip = sizeof(fwts_acpi_madt_local_sapic) + strlen(local_sapic->uid_string) + 1; } break; case 8: { fwts_acpi_madt_platform_int_source *src = (fwts_acpi_madt_platform_int_source*)data; if (src->flags & 0xfffffff0) fwts_failed(fw, LOG_LEVEL_MEDIUM, "MADTPlatIRQSrcFlags", "MADT Platform Interrupt Source, flags, bits 4..31 are " "reserved and should be zero, but are set as: %" PRIx32 ".", src->flags); if (src->type > 3) fwts_failed(fw, LOG_LEVEL_MEDIUM, "MADTPlatIRQType", "MADT Platform Interrupt Source, type field is %" PRIu8 ", should be 1..3.", src->type); if (src->io_sapic_vector == 0) fwts_failed(fw, LOG_LEVEL_MEDIUM, "MADTPlatIRQIOSAPICVector", "MADT Platform Interrupt Source, IO SAPIC Vector is zero, appears not to be defined."); if (src->pis_flags & 0xfffffffe) fwts_failed(fw, LOG_LEVEL_MEDIUM, "MADTPlatIRQSrcFlagsNonZero", "MADT Platform Interrupt Source, Platform Interrupt Source flag " "bits 1..31 are reserved and should be zero, but are " "set as: %" PRIx32 ".", src->pis_flags); skip = (sizeof(fwts_acpi_madt_platform_int_source)); } break; case 9: skip = (sizeof(fwts_acpi_madt_local_x2apic)); break; case 10: { fwts_acpi_madt_local_x2apic_nmi *nmi = (fwts_acpi_madt_local_x2apic_nmi*)data; if (nmi->flags & 0xfffffff0) fwts_failed(fw, LOG_LEVEL_MEDIUM, "MADTLAPICX2APICNMIFlags", "MADT Local x2APIC NMI, flags, bits 4..31 are reserved and " "should be zero, but are set as: %" PRIx32 ".", nmi->flags); skip = (sizeof(fwts_acpi_madt_local_x2apic_nmi)); } break; case 11: { fwts_acpi_madt_gic *gic = (fwts_acpi_madt_gic*)data; if (gic->flags & 0xfffffffc) fwts_failed(fw, LOG_LEVEL_MEDIUM, "MADTGICFLags", "MADT GIC, flags, bits 2..31 are reserved " "and should be zero, but are set as: %" PRIx32 ".", gic->flags); skip = sizeof(fwts_acpi_madt_gic); } break; case 12: /* Not much to sanity check */ skip = sizeof(fwts_acpi_madt_gicd); break; default: skip = 0; break; } data += skip; length -= skip; } } static void acpi_table_check_mcfg(fwts_framework *fw, fwts_acpi_table_info *table) { FWTS_UNUSED(fw); FWTS_UNUSED(table); /* FIXME */ /*fwts_acpi_table_mcfg *mcfg = (fwts_acpi_table_mcfg*)table->data;*/ } typedef void (*check_func)(fwts_framework *fw, fwts_acpi_table_info *table); typedef struct { char *name; check_func func; } acpi_table_check_table; static acpi_table_check_table check_table[] = { { "APIC", acpi_table_check_madt }, { "ECDT", acpi_table_check_ecdt }, { "FACP", acpi_table_check_fadt }, { "HPET", acpi_table_check_hpet }, { "MCFG", acpi_table_check_mcfg }, { "RSDT", acpi_table_check_rsdt }, { "RSDP", acpi_table_check_rsdp }, { "SBST", acpi_table_check_sbst }, { "XSDT", acpi_table_check_xsdt }, { NULL , NULL }, } ; static int acpi_table_check_test1(fwts_framework *fw) { int i; for (i=0; check_table[i].name != NULL; i++) { uint32_t failed = fw->minor_tests.failed; fwts_acpi_table_info *table; if (fwts_acpi_find_table(fw, check_table[i].name, 0, &table) != FWTS_OK) { fwts_aborted(fw, "Cannot load ACPI table %s.", check_table[i].name); /* If this fails, we cannot load any subsequent tables so abort */ break; } if (table) { check_table[i].func(fw, table); if (failed == fw->minor_tests.failed) fwts_passed(fw, "Table %s passed.", check_table[i].name); } else { fwts_log_info(fw, "Table %s not present to check.", check_table[i].name); } } return FWTS_OK; } static fwts_framework_minor_test acpi_table_check_tests[] = { { acpi_table_check_test1, "Test ACPI tables." }, { NULL, NULL } }; static fwts_framework_ops acpi_table_check_ops = { .description = "ACPI table settings sanity tests.", .minor_tests = acpi_table_check_tests }; FWTS_REGISTER("acpitables", &acpi_table_check_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH); src/acpi/apicinstance/000077500000000000000000000000001231470457100152265ustar00rootroot00000000000000src/acpi/apicinstance/apicinstance.c000066400000000000000000000050241231470457100200340ustar00rootroot00000000000000/* * Copyright (C) 2010-2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #include "fwts.h" #ifdef FWTS_ARCH_INTEL static int apicinstance_test1(fwts_framework *fw) { fwts_acpi_table_info *first_madt_table = NULL; int i; int count; for (i=0, count=0;; i++) { fwts_acpi_table_info *table; if (fwts_acpi_get_table(fw, i, &table) != FWTS_OK) { fwts_aborted(fw, "Cannot load ACPI table."); return FWTS_ERROR; } if (table == NULL) break; if (strcmp(table->name, "APIC") == 0) { fwts_log_info(fw, "Found APIC/MADT table %s @ %llx, length 0x%d\n", table->name, (unsigned long long)table->addr, (int)table->length); if (first_madt_table == NULL) first_madt_table = table; else { if ((first_madt_table->length == table->length) && (memcmp(first_madt_table->data, table->data, table->length) == 0)) fwts_log_info(fw, " (and matches the first APIC/MADT table)."); else fwts_log_info(fw, " (and differs from first APIC/MADT table)."); } count++; } } if (count > 1) { char buffer[32]; fwts_failed(fw, LOG_LEVEL_HIGH, "MultipleAPICMADT", "Found %d APIC/MADT tables, the kernel expects just one.", count); snprintf(buffer, sizeof(buffer), " (or up to %d)", count); fwts_log_advice(fw, "If you find any APIC issues, perhaps try using " "acpi_apic_instance=2%s.", count > 2 ? buffer : ""); } else fwts_passed(fw, "Found %d APIC/MADT table(s), as expected.", count); return FWTS_OK; } static fwts_framework_minor_test apicinstance_tests[] = { { apicinstance_test1, "Test for single instance of APIC/MADT table." }, { NULL, NULL } }; static fwts_framework_ops apicinstance_ops = { .description = "Test for single instance of APIC/MADT table.", .minor_tests = apicinstance_tests }; FWTS_REGISTER("apicinstance", &apicinstance_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH); #endif src/acpi/battery/000077500000000000000000000000001231470457100142375ustar00rootroot00000000000000src/acpi/battery/battery.c000066400000000000000000000202531231470457100160570ustar00rootroot00000000000000/* * Copyright (C) 2006, Intel Corporation * Copyright (C) 2010-2014 Canonical * * This file was originally part of the Linux-ready Firmware Developer Kit * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #include "fwts.h" #ifdef FWTS_ARCH_INTEL #include #include #include #include #include #include #include #include static void battery_discharge(fwts_framework *fw, const int secs) { int i; fwts_cpu_consume_start(); for (i=0;iinitial_value) { fwts_passed(fw, "Battery %s charge is incrementing as expected.", name); return; } fwts_printf(fw, "Waiting %3.3d/120\r", 120-i); sleep(1); } fwts_failed(fw, LOG_LEVEL_MEDIUM, "BatteryNotCharging", "Battery %s claims it's charging but no charge is added", name); } static void check_discharging(fwts_framework *fw, int index, char *name) { int i; /* when we get here we KNOW the state is "discharging" */ uint32_t initial_value, new_value; fwts_printf(fw, "==== Waiting to see if battery '%s' discharges ====\n", name); fwts_cpu_consume_start(); initial_value = get_full(fw, index); for (i=0; i<=120; i++) { new_value = get_full(fw, index); if (new_value #include #include #include #include #include #include #include #include #include "brightness-helper.h" static bool skip_tests; static int auto_brightness_test1(fwts_framework *fw) { struct dirent *entry; int actual_brightness; int max_brightness; DIR *brightness_dir = brightness_get_dir(); skip_tests = true; rewinddir(brightness_dir); do { entry = readdir(brightness_dir); if (entry == NULL || entry->d_name[0] == '.') continue; if (brightness_get_setting(entry->d_name, "actual_brightness", &actual_brightness) != FWTS_OK) { fwts_failed(fw, LOG_LEVEL_HIGH, "BrightnessNotFound", "Actual brightness could not be accessed for %s.", entry->d_name); continue; } if (brightness_get_setting(entry->d_name, "max_brightness", &max_brightness) != FWTS_OK) { fwts_failed(fw, LOG_LEVEL_HIGH, "BrightnessNotExist", "Maximum brightness could not be accessed for %s.", entry->d_name); continue; } skip_tests = false; if (max_brightness <= 0) { fwts_failed(fw, LOG_LEVEL_HIGH, "BrightnessMaxTest1", "Maximum brightness for %s is %d and should be > 0.", entry->d_name, max_brightness); continue; } fwts_passed(fw, "Maximum brightness for %s is %d which is sane.", entry->d_name, max_brightness); if ((actual_brightness >=0) && (actual_brightness <= max_brightness)) fwts_passed(fw, "Actual brightness for %s is %d which is in range 0..%d.", entry->d_name, actual_brightness, max_brightness); else fwts_failed(fw, LOG_LEVEL_HIGH, "BrightnessOutofRange", "Actual brightness for %s not in range 0..%d.", entry->d_name, max_brightness); } while (entry); return FWTS_OK; } static int auto_brightness_test2(fwts_framework *fw) { struct dirent *entry; int max_brightness; int actual_brightness; int saved_brightness; DIR *brightness_dir = brightness_get_dir(); rewinddir(brightness_dir); do { int i; int failures = 0; bool *brightness_fail; entry = readdir(brightness_dir); if (entry == NULL || entry->d_name[0] == '.') continue; if (brightness_get_setting(entry->d_name, "max_brightness", &max_brightness) != FWTS_OK) { fwts_failed(fw, LOG_LEVEL_HIGH, "BrightnessNotExist", "Maximum brightness could not be accessed for %s.", entry->d_name); continue; } if (max_brightness <= 0) { fwts_failed(fw, LOG_LEVEL_HIGH, "BrightnessMaxTest2", "Maximum brightness for %s is %d and should be > 0.", entry->d_name, max_brightness); continue; } if (brightness_get_setting(entry->d_name, "actual_brightness", &saved_brightness) != FWTS_OK) { fwts_failed(fw, LOG_LEVEL_HIGH, "BrightnessNotExist", "Maximum brightness could not be accessed for %s.", entry->d_name); continue; } brightness_fail = calloc(sizeof(bool), max_brightness + 1); if (brightness_fail == NULL) { fwts_log_error(fw, "Cannot allocate brightness table."); continue; } for (i = 0; i <= max_brightness; i++) { brightness_set_setting(entry->d_name, "brightness", i); if (brightness_get_setting(entry->d_name, "actual_brightness", &actual_brightness) != FWTS_OK) { fwts_log_info(fw, "Cannot get brightness setting %d for backlight %s.", i, entry->d_name); failures++; brightness_fail[i] = true; continue; } if (actual_brightness != i) { failures++; brightness_fail[i] = true; } else { brightness_fail[i] = false; } } if (failures) { char *msg = NULL; char buf[40]; /* Find the ranges of the failed levels */ for (i = 0; i <= max_brightness; i++) { int j, end = i; if (brightness_fail[i]) { /* Scan until we don't find a failure */ for (j = i; j <= max_brightness && brightness_fail[j]; j++) end = j; if (i == end) { /* Just one failure */ snprintf(buf, sizeof(buf), " %d", i); } else { /* A contiguous range of failures */ snprintf(buf, sizeof(buf), " %d-%d", i, end); i = end; } msg = fwts_realloc_strcat(msg, buf); } } fwts_failed(fw, LOG_LEVEL_MEDIUM, "BrightnessMismatch", "%d brightness levels did not match the brightnesss level " "just set for backlight %s.", failures, entry->d_name); fwts_log_info(fw, "The failed brightness levels were:%s.", msg); free(msg); } else fwts_passed(fw, "Actual brightness matches the brightnesss level for " "all %d levels for backlight %s.", max_brightness, entry->d_name); free(brightness_fail); /* Restore original setting */ brightness_set_setting(entry->d_name, "brightness", saved_brightness); } while (entry); return FWTS_OK; } static fwts_framework_minor_test auto_brightness_tests[] = { { auto_brightness_test1, "Test for maximum and actual brightness." }, { auto_brightness_test2, "Change actual brightness." }, { NULL, NULL } }; static fwts_framework_ops auto_brightness_ops = { .description = "Automated LCD brightness test.", .init = brightness_init, .deinit = brightness_deinit, .minor_tests = auto_brightness_tests }; FWTS_REGISTER("autobrightness", &auto_brightness_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH); #endif src/acpi/brightness/brightness-helper.c000066400000000000000000000056301231470457100205320ustar00rootroot00000000000000/* * Copyright (C) 2010-2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #include "fwts.h" #include "brightness-helper.h" #include #include #include #include /* * Brightness tests helper functions */ static DIR *brightness_dir; static char *brightness_path; /* * brightness_get_dir() * return /sys interface DIR handle opened by brightness_init() */ DIR *brightness_get_dir(void) { return brightness_dir; } /* * brightness_get_path() * */ char *brightness_get_path(void) { return brightness_path; } /* * brightness_init() * generic brightness test init, if successful * it opens a diretory for the /sys interface */ int brightness_init(fwts_framework *fw) { int i; static char *sys_path[] = { "/sys/class/backlight", "/sys/devices/virtual/backlight", NULL }; brightness_path = NULL; brightness_dir = NULL; for (i = 0; sys_path[i]; i++) { brightness_dir = opendir(sys_path[i]); if (brightness_dir) { brightness_path = sys_path[i]; return FWTS_OK; } } fwts_failed(fw, LOG_LEVEL_LOW, "BacklightNoPath", "No sysfs backlight directory available: cannot test."); return FWTS_ERROR; } /* * brightness_deinit() */ int brightness_deinit(fwts_framework *fw) { FWTS_UNUSED(fw); if (brightness_dir) closedir(brightness_dir); brightness_path = NULL; brightness_dir = NULL; return FWTS_OK; } /* * brightness_get_setting() * get a brightness setting */ int brightness_get_setting(const char *entry_name, const char *setting, int *value) { char path[PATH_MAX]; FILE *fp; snprintf(path, sizeof(path), "%s/%s/%s", brightness_path, entry_name, setting); if ((fp = fopen(path, "r")) == NULL) return FWTS_ERROR; if (fscanf(fp, "%d", value) != 1) { fclose(fp); return FWTS_ERROR; } fclose(fp); return FWTS_OK; } /* * brightness_set_setting() * set a brightness setting */ int brightness_set_setting(const char *entry_name, const char *setting, const int value) { char path[PATH_MAX]; FILE *fp; snprintf(path, sizeof(path), "%s/%s/%s", brightness_path, entry_name, setting); if ((fp = fopen(path, "w")) == NULL) return FWTS_ERROR; if (fprintf(fp, "%d", value) < 1) { fclose(fp); return FWTS_ERROR; } fclose(fp); return FWTS_OK; } src/acpi/brightness/brightness-helper.h000066400000000000000000000023031231470457100205310ustar00rootroot00000000000000/* * Copyright (C) 2010-2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #ifndef __BRIGHTNESS_HELPER__ #define __BRIGHTNESS_HELPER__ #include "fwts.h" #include #include DIR *brightness_get_dir(void); char *brightness_get_path(void); int brightness_init(fwts_framework *fw); int brightness_deinit(fwts_framework *fw); int brightness_get_setting(const char *entry_name, const char *setting, int *value); int brightness_set_setting(const char *entry_name, const char *setting, const int value); #endif src/acpi/brightness/brightness.c000066400000000000000000000205121231470457100172510ustar00rootroot00000000000000/* * Copyright (C) 2010-2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #include "fwts.h" #ifdef FWTS_ARCH_INTEL #include #include #include #include #include #include #include #include #include #include "brightness-helper.h" static bool skip_tests = false; static int brightness_test1(fwts_framework *fw) { struct dirent *entry; int max_brightness; int saved_brightness; DIR *brightness_dir = brightness_get_dir(); if (skip_tests) { fwts_skipped(fw, "Test skipped because previous test failed."); return FWTS_SKIP; } rewinddir(brightness_dir); do { int ch; entry = readdir(brightness_dir); if (entry == NULL || entry->d_name[0] == '.') continue; if (brightness_get_setting(entry->d_name, "max_brightness", &max_brightness) != FWTS_OK) { fwts_failed(fw, LOG_LEVEL_HIGH, "BrightnessNotExist", "Maximum brightness could not be accessed for %s.", entry->d_name); continue; } if (max_brightness <= 0) { fwts_failed(fw, LOG_LEVEL_HIGH, "BrightnessMaxTest1", "Maximum brightness for %s is %d and should be > 0.", entry->d_name, max_brightness); continue; } if (brightness_get_setting(entry->d_name, "actual_brightness", &saved_brightness) != FWTS_OK) { fwts_failed(fw, LOG_LEVEL_HIGH, "BrightnessMaxTest1", "Failed to get current brightness setting for %s.", entry->d_name); continue; } fwts_printf(fw, "==== Setting backlight to a low level ====\n"); /* * Setting it to zero on some machines turns * off the backlight, so set to a low value instead */ brightness_set_setting(entry->d_name, "brightness", 1); ch = fwts_get_reply(fw, "==== Is the Backlight now set to a dim level? [Y/N]: ", "ynYN"); if (ch == 'y' || ch == 'Y') fwts_passed(fw, "Backlight %s set to dim level.", entry->d_name); else fwts_failed(fw, LOG_LEVEL_MEDIUM, "BrightnessDimLevel", "Backlight %s was NOT set to dim level.", entry->d_name); fwts_printf(fw, "==== Setting backlight to highest level ====\n"); brightness_set_setting(entry->d_name, "brightness", max_brightness); ch = fwts_get_reply(fw, "==== Is the Backlight now set to a bright level? [Y/N]: ", "ynYN"); if (ch == 'y' || ch == 'Y') fwts_passed(fw, "Backlight %s set to bright level.", entry->d_name); else fwts_failed(fw, LOG_LEVEL_MEDIUM, "BrightnessBrightLevel", "Backlight %s was NOT set to bright level.", entry->d_name); /* Restore */ brightness_set_setting(entry->d_name, "brightness", saved_brightness); } while (entry); return FWTS_OK; } static int brightness_test2(fwts_framework *fw) { struct dirent *entry; int max_brightness; int saved_brightness; DIR *brightness_dir = brightness_get_dir(); if (skip_tests) { fwts_skipped(fw, "Test skipped because previous test failed."); return FWTS_SKIP; } rewinddir(brightness_dir); do { int i; entry = readdir(brightness_dir); if (entry == NULL || entry->d_name[0] == '.') continue; if (brightness_get_setting(entry->d_name, "max_brightness", &max_brightness) != FWTS_OK) { fwts_failed(fw, LOG_LEVEL_HIGH, "BrightnessNotExist", "Maximum brightness could not be accessed for %s.", entry->d_name); continue; } if (max_brightness <= 0) { fwts_failed(fw, LOG_LEVEL_HIGH, "BrightnessMaxTest2", "Maximum brightness for %s is %d and should be > 0.", entry->d_name, max_brightness); continue; } fwts_printf(fw, "==== Backlight will now slowly transition from dim to bright ====\n"); if (brightness_get_setting(entry->d_name, "actual_brightness", &saved_brightness) == FWTS_OK) { long delay = 5000000 / max_brightness; int ch; if (delay > 1000000) delay = 1000000; for (i = 0; i <= max_brightness; i++) { fwts_printf(fw, "Setting to brightness level %d\r", i); brightness_set_setting(entry->d_name, "brightness", i); usleep(delay); } ch = fwts_get_reply(fw, "==== Did the backlight go from dim to bright? [Y/N]: ", "ynYN"); if (ch == 'y' || ch == 'Y') fwts_passed(fw, "Backlight %s was observed going from dim to bright.", entry->d_name); else fwts_failed(fw, LOG_LEVEL_MEDIUM, "BrightnessNoDimming", "Backlight %s was NOT observed going from dim to bright.", entry->d_name); /* Restore */ brightness_set_setting(entry->d_name, "brightness", saved_brightness); } } while (entry); return FWTS_OK; } static int brightness_wait_event(fwts_framework *fw) { int fd; int events = 0; char *buffer; size_t len; int i; if ((fd = fwts_acpi_event_open()) < 0) { fwts_log_error(fw, "Cannot connect to acpid."); return FWTS_ERROR; } for (i = 0; i <= 20; i++) { if ((buffer = fwts_acpi_event_read(fd, &len, 1)) != NULL) if (strstr(buffer, "video")) { free(buffer); events++; break; } fwts_printf(fw, "Waiting %2.2d/20\r", 20 - i); } fwts_acpi_event_close(fd); return events; } static int brightness_test3(fwts_framework *fw) { struct dirent *entry; int saved_brightness; DIR *brightness_dir = brightness_get_dir(); rewinddir(brightness_dir); do { int tmp; entry = readdir(brightness_dir); if (entry == NULL || entry->d_name[0] == '.') continue; if (brightness_get_setting(entry->d_name, "actual_brightness", &saved_brightness) != FWTS_OK) { fwts_failed(fw, LOG_LEVEL_HIGH, "BrightnessNotExist", "Actual brightness could not be accessed for %s.", entry->d_name); continue; } brightness_set_setting(entry->d_name, "brightness", 1); fwts_printf(fw, "==== Press the brightness UP hotkey for %s ====\n", entry->d_name); if (brightness_wait_event(fw) == 0) fwts_failed(fw, LOG_LEVEL_HIGH, "BrightnessNoHotKey", "Did not detect ACPI hotkey event."); else { int new_brightness; if (brightness_get_setting(entry->d_name, "actual_brightness", &new_brightness) != FWTS_OK) { fwts_failed(fw, LOG_LEVEL_HIGH, "BrightnessNotExist", "Actual brightness could not be accessed for %s.", entry->d_name); } else { if (new_brightness > 0) fwts_passed(fw, "Brightness increased on UP hotkey for %s.", entry->d_name); else fwts_failed(fw, LOG_LEVEL_HIGH, "BrightnessNoIncrease", "Did not see brightness increased for %s.", entry->d_name); } } tmp = (saved_brightness > 0) ? saved_brightness : 1; brightness_set_setting(entry->d_name, "brightness", tmp); fwts_printf(fw, "==== Press the brightness DOWN hotkey for %s ====\n", entry->d_name); if (brightness_wait_event(fw) == 0) fwts_failed(fw, LOG_LEVEL_HIGH, "BrightnessNoHotKey", "Did not detect ACPI hotkey event."); else { int new_brightness; if (brightness_get_setting(entry->d_name, "actual_brightness", &new_brightness) != FWTS_OK) { fwts_failed(fw, LOG_LEVEL_HIGH, "BrightnessNotExist", "Actual brightness could not be accessed for %s.", entry->d_name); } else { if (new_brightness < tmp) fwts_passed(fw, "Brightness decreased on DOWN hotkey for %s.", entry->d_name); else fwts_failed(fw, LOG_LEVEL_HIGH, "BrightnessNoDecrease", "Did not see brightness decrease for %s.", entry->d_name); } } } while (entry); return FWTS_OK; } static fwts_framework_minor_test brightness_tests[] = { { brightness_test1, "Observe all brightness changes." }, { brightness_test2, "Observe min, max brightness changes." }, { brightness_test3, "Test brightness hotkeys." }, { NULL, NULL } }; static fwts_framework_ops brightness_ops = { .description = "Interactive LCD brightness test.", .init = brightness_init, .deinit = brightness_deinit, .minor_tests = brightness_tests }; FWTS_REGISTER("brightness", &brightness_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_INTERACTIVE); #endif src/acpi/checksum/000077500000000000000000000000001231470457100143675ustar00rootroot00000000000000src/acpi/checksum/checksum.c000066400000000000000000000111551231470457100163400ustar00rootroot00000000000000/* * Copyright (C) 2010-2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #include #include #include #include #include #include #include #include #include #include "fwts.h" static void checksum_rsdp(fwts_framework *fw, fwts_acpi_table_info *table) { uint8_t checksum; fwts_acpi_table_rsdp *rsdp = (fwts_acpi_table_rsdp*)table->data; if (table->length < 20) { fwts_failed(fw, LOG_LEVEL_HIGH, "ACPITableCheckSumShortRSDP", "RSDP was expected to be at least 20 bytes long, " "got a shortened size of %zd bytes.", table->length); /* Won't test on a short RSDP */ return; } /* Version 1.0 RSDP checksum, always applies */ checksum = fwts_checksum(table->data, 20); if (checksum != 0) { fwts_failed(fw, LOG_LEVEL_CRITICAL, "ACPITableChecksumRSDP", "RSDP has incorrect checksum, expected 0x%2.2" PRIx8 ", " "got 0x%2.2" PRIx8 ".", (uint8_t)(rsdp->checksum-checksum), rsdp->checksum); fwts_advice(fw, "The kernel will not load the RSDP with an " "invalid checksum and hence all other ACPI " "tables will also fail to load."); } else fwts_passed(fw, "Table RSDP has correct checksum 0x%2.2" PRIx8 ".", rsdp->checksum); /* * Version 2.0 RSP or more. Note ACPI 1.0 is indicated by a * zero version number */ if (rsdp->revision > 0) { if (table->length < sizeof(fwts_acpi_table_rsdp)) { fwts_failed(fw, LOG_LEVEL_CRITICAL, "ACPITableCheckSumShortRSDP", "RSDP was expected to be %d bytes long, " "got a shortened size of %d bytes.", (int)sizeof(fwts_acpi_table_rsdp), (int)table->length); /* Won't test on a short RSDP */ return; } checksum = fwts_checksum(table->data, sizeof(fwts_acpi_table_rsdp)); if (checksum != 0) { fwts_failed(fw, LOG_LEVEL_CRITICAL, "ACPITableChecksumRSDP", "RSDP has incorrect extended checksum, " "expected 0x%2.2" PRIx8 ", got 0x%2.2" PRIx8 ".", (uint8_t)(rsdp->extended_checksum-checksum), rsdp->extended_checksum); fwts_advice(fw, "The kernel will not load the RSDP with an " "invalid extended checksum and hence all " "other ACPI tables will also fail to load."); } else fwts_passed(fw, "Table RSDP has correct extended " "checksum 0x%2.2" PRIx8 ".", rsdp->extended_checksum); } } static int checksum_scan_tables(fwts_framework *fw) { int i; for (i=0;; i++) { fwts_acpi_table_info *table; fwts_acpi_table_header *hdr; uint8_t checksum; if (fwts_acpi_get_table(fw, i, &table) != FWTS_OK) { fwts_aborted(fw, "Cannot load ACPI tables."); return FWTS_ABORTED; } if (table == NULL) break; hdr = (fwts_acpi_table_header*)table->data; if (strcmp("RSDP", table->name) == 0) { checksum_rsdp(fw, table); continue; } /* FACS doesn't have a checksum, so ignore */ if (strcmp("FACS", table->name) == 0) continue; checksum = fwts_checksum(table->data, table->length); if (checksum == 0) fwts_passed(fw, "Table %s has correct checksum 0x%2.2" PRIx8, table->name, hdr->checksum); else { fwts_failed(fw, LOG_LEVEL_MEDIUM, "ACPITableChecksum", "Table %s has incorrect checksum, " "expected 0x%2.2" PRIx8 ", got 0x%2.2" PRIx8 ".", table->name, (uint8_t)(hdr->checksum-checksum), hdr->checksum); fwts_advice(fw, "The kernel will warn that this table has " "an invalid checksum but will ignore the " "error and still load it. This is not a " "critical issue, but should be fixed if " "possible to avoid the warning messages."); } } return FWTS_OK; } static int checksum_test1(fwts_framework *fw) { return checksum_scan_tables(fw); } static fwts_framework_minor_test checksum_tests[] = { { checksum_test1, "ACPI table checksum test." }, { NULL, NULL } }; static fwts_framework_ops checksum_ops = { .description = "ACPI table checksum test.", .minor_tests = checksum_tests }; FWTS_REGISTER("checksum", &checksum_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH); src/acpi/crsdump/000077500000000000000000000000001231470457100142425ustar00rootroot00000000000000src/acpi/crsdump/crsdump.c000066400000000000000000000601271231470457100160710ustar00rootroot00000000000000/* * Copyright (C) 2013-2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #include "fwts.h" #include #include #include #include #include /* acpica headers */ #include "acpi.h" #include "fwts_acpi_object_eval.h" #include "crsdump.h" typedef struct { const char *label; /* Field label */ size_t offset; /* Offset into _CRS buffer */ size_t bitlength; /* Size of field in bits */ uint64_t bitmask; /* Bit mask, 0 = use all bits */ uint8_t shift; /* Value shift */ const char **annotation; /* Annotations */ const char *(*callback)(const uint64_t val); /* val -> string mapping callback for CRS_UINTX */ } crsdump_info; #define CRS_UINT(label, offset, bitlength) { label, offset, bitlength, 0, 0, NULL, NULL } #define CRS_UINT24(label, offset, bitlength) { label, offset, bitlength, 0, 8, NULL, NULL } #define CRS_UINTX(label, offset, bitlength, callback) { label, offset, bitlength, 0, 0, NULL, callback } #define CRS_BITS(label, offset, bitmask) { label, offset, 8, bitmask, 0, NULL, NULL } #define CRS_BITX(label, offset, bitmask, annotation) { label, offset, 8, bitmask, 0, annotation, NULL } #define CRS_END { NULL, 0, 0, 0, 0, 0, NULL } static void crsdump_show_header( fwts_framework *fw, const char *objname, const char *crs_name) { fwts_log_info_verbatum(fw, "%s (%s):", objname, crs_name); } static void crsdump_show_info( fwts_framework *fw, const uint8_t *data, const size_t length, const crsdump_info *info) { /* * Walk through fields and dump data according to the mapping */ for ( ; info->label; info++) { uint64_t val; uint64_t mask = info->bitmask; int hexdigits = info->bitlength >> 2; if (info->offset + (info->bitlength >> 3) > length) continue; if (info->bitmask) { /* * CRS_BIT*() data */ val = (uint64_t)*(uint8_t*)(data + info->offset); while (mask && ((mask & 1) == 0)) { val >>= 1; mask >>= 1; } val &= mask; hexdigits = 2; } else { /* * CRS_UINT*() data */ switch (info->bitlength) { case 8: val = (uint64_t)*(uint8_t*)(data + info->offset); break; case 16: val = (uint64_t)*(uint16_t*)(data + info->offset); break; case 32: val = (uint64_t)*(uint32_t*)(data + info->offset); break; case 64: val = (uint64_t)*(uint64_t*)(data + info->offset); break; default: val = ~0; break; } } val = val << info->shift; if (info->annotation) { fwts_log_info_verbatum(fw, " 0x%4.4" PRIx16 ": %-30.30s: 0x%-*.*" PRIx64 " (%s)", (uint16_t)info->offset, info->label, hexdigits, hexdigits, val, info->annotation[val]); } else if (info->callback) { fwts_log_info_verbatum(fw, " 0x%4.4" PRIx16 ": %-30.30s: 0x%-*.*" PRIx64 " (%s)", (uint16_t)info->offset, info->label, hexdigits, hexdigits, val, info->callback(val)); } else { fwts_log_info_verbatum(fw, " 0x%4.4" PRIx16 ": %-30.30s: 0x%-*.*" PRIx64, (uint16_t)info->offset, info->label, hexdigits, hexdigits, val); } } } static void crsdump_show( fwts_framework *fw, const char *objname, const char *crs_name, const uint8_t *data, const size_t length, const crsdump_info *header, const crsdump_info *info) { crsdump_show_header(fw, objname, crs_name); crsdump_show_info(fw, data, length, header); crsdump_show_info(fw, data, length, info); } static void crsdump_data( fwts_framework *fw, const uint8_t *data, const size_t from, const size_t to) { size_t i; char buffer[120]; for (i = from; i < to; i+= 16) { size_t n = to - i; fwts_dump_raw_data(buffer, sizeof(buffer), data + i, i, n > 16 ? 16 : n); buffer[56] = '\0'; /* Truncate off text version of hex dump */ fwts_log_info_verbatum(fw, " 0x%4.4" PRIx16 ": %-30.30s: %s", (uint16_t)i, "Hex Dump", buffer + 8); } } /* * crsdump_init() * initialize ACPI */ static int crsdump_init(fwts_framework *fw) { if (fwts_acpi_init(fw) != FWTS_OK) { fwts_log_error(fw, "Cannot initialise ACPI."); return FWTS_ERROR; } return FWTS_OK; } /* * crsdump_deinit * de-intialize ACPI */ static int crsdump_deinit(fwts_framework *fw) { return fwts_acpi_deinit(fw); } /* * See section 6.4.2.7 Fixed DMA Descriptor, DMA transfer width */ static const char *crs_dma_transfer_width(const uint64_t val) { switch (val) { case 0x00: return "8 bit"; case 0x01: return "16 bit"; case 0x02: return "32 bit"; case 0x03: return "64 bit"; case 0x04: return "128 bit"; case 0x05: return "256 bit"; default: return "reserved"; } } /* * See section 6.4.3.5.2 DWord Address Space Descriptor Resource Type */ static const char *crs_resource_type(const uint64_t val) { switch (val) { case 0x00: return "Memory range"; case 0x01: return "I/O range"; case 0x02: return "Bus number range"; case 0xc0 ... 0xff: return "Hardware Vendor Defined"; default: return "Reserved"; } } /* * See section 6.4.8.1. Generic Register Descriptor Address Space ID */ static const char *crs_address_space_id(const uint64_t val) { switch (val) { case 0x00: return "System Memory"; case 0x01: return "System I/O"; case 0x02: return "PCI Configuration Space"; case 0x03: return "Embedded Controller"; case 0x04: return "SMBus"; case 0x0a: return "PCC"; case 0x7f: return "Functional Fixed Hardware"; default: return "Uknown"; } } /* * See section 6.4.8.1. Generic Register Descriptor Address Size */ static const char *crs_address_size(const uint64_t val) { switch (val) { case 0x00: return "Undefined (legacy)"; case 0x01: return "Byte Access"; case 0x02: return "Word Access"; case 0x04: return "Dword Access"; case 0x08: return "Qword Access"; default: return "Unknown"; } } /* * See section 6.4.3.8.1 GPIO Connection Description */ static const char *crs_gpio_connection_type(const uint64_t val) { switch (val) { case 0x00: return "Interrupt Connection"; case 0x01: return "I/O Connection"; default: return "Reserved"; } } /* * See section 6.4.3.8.1 GPIO Connection Description */ static const char *crs_pin_configuration(const uint64_t val) { switch (val) { case 0x00: return "Default Configuration"; case 0x01: return "Pull-Up"; case 0x02: return "Pull-Down"; case 0x03: return "No Pull"; case 0x80 ... 0xff: return "Vendor Defined"; default: return "Reserved"; } } /* * Convert IRQ mask into list of IRQs */ static const char *crs_irq_map(const uint64_t val) { unsigned int i; static char buf[6 + (32 * 4)]; char tmp[5]; const size_t n = sizeof(buf) - 1; strncpy(buf, "IRQ:", n); if (!val) { strncat(buf, " none", n); } else { for (i = 0; i < 32; i++) { if (val & (1 << i)) { snprintf(tmp, sizeof(tmp), " %u", i); strncat(buf, tmp, n); } } } return buf; } /* * CRS small resource checks, simple checking */ static void crsdump_small_resource_items( fwts_framework *fw, const char *objname, const uint8_t *data, const size_t length) { uint8_t tag_item = (data[0] >> 3) & 0xf; size_t crs_length = 1 + (data[0] & 7); static const crsdump_info header[] = { CRS_BITS("Tag Type", 0, 128), CRS_BITS("Tag Item ID", 0, 64 | 32 | 16 | 8), CRS_BITS("Tag Length", 0, 4 | 2 | 1), }; /* Ensure we just dump minimum _CRS buffer length */ if (crs_length > length) crs_length = length; switch (tag_item) { case 0x4: /* 6.4.2.1 IRQ Descriptor */ { static const char *sharing[] = { "Exclusive", "Shared", "Exclusive And Wake", "Shared And Wake" }; static const char *polarity[] = { "Active-High", "Active-Low" }; static const char *mode[] = { "Level-Triggered", "Edge-Triggered" }; static const crsdump_info info[] = { CRS_UINTX("IRQ Mask", 1, 16, crs_irq_map), CRS_BITS("Reserved", 3, 128 | 64), CRS_BITX("Interrupt Sharing", 3, 32 | 16, sharing), CRS_BITX("Interrupt Polarity", 3, 8, polarity), CRS_BITS("Ignored", 3, 4 | 2), CRS_BITX("Interrupt Mode", 3, 1, mode), CRS_END }; crsdump_show(fw, objname, "IRQ Descriptor", data, crs_length, header, info); } break; case 0x5: /* 6.4.2.2 DMA Descriptor */ { static const char *dma_speed[] = { "Compatibility Mode", "Type A DMA", "Type B DMA", "Type F DMA" }; static const char *bus_master[] = { "Not a bus master", "Is a bus master" }; static const char *dma_size[] = { "8 bit only", "8 and 16 bit", "16 bit only", "Reserved" }; static const crsdump_info info[] = { CRS_UINT("DMA channel mask", 1, 16), CRS_BITS("Reserved", 2, 128), CRS_BITX("DMA channel speed", 2, 64 | 32, dma_speed), CRS_BITS("Ignored", 2, 16 | 8), CRS_BITX("Logical device bus master", 2, 4, bus_master), CRS_BITX("DMA transfer type preference",2, 2 | 1, dma_size), CRS_END }; crsdump_show(fw, objname, "DMA Descriptor", data, crs_length, header, info); } break; case 0x6: /* 6.4.2.3 Start Dependent Functions Descriptor */ { static const char *config[] = { "Good configurarion", "Acceptable configuration", "Sub-optimal configuration", "Reserved" }; static const crsdump_info info[] = { CRS_BITS("Reserved", 1, 0xf0), CRS_BITX("Performance/robustness", 1, 8 | 4, config), CRS_BITX("Compatibility priority", 1, 2 | 1, config), CRS_END }; crsdump_show(fw, objname, "Start Dependent Functions Descriptor", data, crs_length, header, info); } break; case 0x7: /* 6.4.2.4 End Dependent Functions Descriptor */ crsdump_show_header(fw, objname, "End Dependent Functions Descriptor"); break; case 0x8: /* 6.4.2.5 I/O Port Descriptor */ { static const char *decodes[] = { "16 bit addresses", "10 bit addresses" }; static const crsdump_info info[] = { CRS_BITS("Reserved", 1, 0xfe), CRS_BITX("Logical Device Decode", 1, 1, decodes), CRS_UINT("Minimum Base Address", 2, 16), CRS_UINT("Maximum Base Address", 4, 16), CRS_UINT("Base Alignment", 6, 8), CRS_UINT("Range Length", 7, 8), CRS_END }; crsdump_show(fw, objname, "I/O Port Descriptor", data, crs_length, header, info); } break; case 0x9: /* 6.4.2.6 Fixed Location I/O Port Descriptor */ { static const crsdump_info info[] = { CRS_UINT("Range Base Address", 1, 16), CRS_UINT("Range Length", 3, 8), CRS_END }; crsdump_show(fw, objname, "Fixed Location I/O Port Descriptor", data, crs_length, header, info); } break; case 0xa: /* 6.4.2.7 Fixed DMA Descriptor */ { static const crsdump_info info[] = { CRS_UINT("DMA Request Line", 1, 16), CRS_UINT("DMA Channel", 3, 16), CRS_UINTX("DMA Transfer Width", 5, 1, crs_dma_transfer_width), CRS_END }; crsdump_show(fw, objname, "Fixed DMA Descriptor", data, crs_length, header, info); } break; case 0xe: /* 6.4.2.8 Vendor-Defined Descriptor */ crsdump_show_header(fw, objname, "Vendor-Defined Descriptor"); crsdump_show_info(fw, data, crs_length, header); crsdump_data(fw, data, 3, crs_length); break; case 0xf: /* 6.4.2.9 End Tag */ { static const crsdump_info info[] = { CRS_UINT("Checksum", 1, 8), CRS_END }; crsdump_show(fw, objname, "End Tag", data, crs_length, header, info); } break; default: crsdump_show_header(fw, objname, "Unknown type"); crsdump_show_info(fw, data, crs_length, header); crsdump_data(fw, data, 1, crs_length); break; } fwts_log_nl(fw); } /* * CRS large resource checks, simple checking */ static void crsdump_large_resource_items( fwts_framework *fw, const char *objname, const uint8_t *data, const uint64_t length) { uint8_t tag_item = data[0] & 0x7f; size_t crs_length = data[1] + (data[2] << 8) + 3; static const crsdump_info header[] = { CRS_BITS("Tag Type", 0, 128), CRS_BITS("Tag Item ID", 0, 0x7f), CRS_UINT("Length", 1, 16), CRS_END }; static const char *write_status[] = { "non-writeable, read-only", "writeable, read/write" }; static const char *mifmaf[] = { "Not fixed", "Fixed" }; static const char *decode_type[] = { "Bridge Positively decodes this address", "Bridge Subtractively decode this address" }; static const char *sharing[] = { "Exclusive", "Shared", "Exclusive and Wake", "Shared and Wake" }; static const char *polarity[] = { "Active-High", "Active-Low", "Active-Both", "Reserved" }; static const char *mode[] = { "Level-Triggered", "Edge-Triggered" }; static const char *consumer[] = { "producer and consumer", "consumer" }; /* Ensure we just dump minimum _CRS buffer length */ if (crs_length > length) crs_length = length; switch (tag_item) { case 0x1: /* 6.4.3.1 24-Bit Memory Range Descriptor */ { static const crsdump_info info[] = { CRS_BITX("Write Status", 3, 1, write_status), CRS_UINT24("Range Minimum Base", 4, 16), CRS_UINT24("Range Maximum Base", 6, 16), CRS_UINT("Base Alignment", 8, 16), CRS_UINT("Range Length", 10, 16), CRS_END }; crsdump_show(fw, objname, "24-Bit Memory Range Descriptor", data, crs_length, header, info); } break; case 0x2: /* 6.4.3.7 Generic Register Descriptor */ { static const crsdump_info info[] = { CRS_UINTX("Address Space ID", 3, 8, crs_address_space_id), CRS_UINT("Address Bit Width", 4, 8), CRS_UINT("Register Bit Offset", 5, 8), CRS_UINTX("Address Size", 6, 8, crs_address_size), CRS_UINT("Register Address", 7, 64), CRS_END }; crsdump_show(fw, objname, "Generic Register Descriptor", data, crs_length, header, info); } break; case 0x4: /* 6.4.3.2 Vendor-Defined Descriptor */ crsdump_show_header(fw, objname, "Vendor-Defined Descriptor"); crsdump_show_info(fw, data, crs_length, header); crsdump_data(fw, data, 3, crs_length); break; case 0x5: /* 6.4.3.3 32-Bit Memory Range Descriptor */ { static const crsdump_info info[] = { CRS_BITX("Write Status", 3, 1, write_status), CRS_UINT("Range Minimum Address", 4, 32), CRS_UINT("Range Maximum Address", 8, 32), CRS_UINT("Base Alignment", 12, 32), CRS_UINT("Range Length", 16, 32), CRS_END }; crsdump_show(fw, objname, "32-Bit Memory Range Descriptor", data, crs_length, header, info); } break; case 0x6: /* 6.4.3.4 32-Bit Fixed Memory Range Descriptor */ { static const crsdump_info info[] = { CRS_BITX("Write Status", 3, 1, write_status), CRS_UINT("Range Base Address", 4, 32), CRS_UINT("Range Length", 8, 32), CRS_END }; crsdump_show(fw, objname, "32-Bit Fixed Memory Range Descriptor", data, crs_length, header, info); } break; case 0x7: /* 6.4.3.5.2 DWord Address Space Descriptor */ { static const crsdump_info info[] = { CRS_UINTX("Resource Type", 3, 8, crs_resource_type), CRS_BITS("Reserved", 4, 0xf0), CRS_BITX("Max Address Fixed", 4, 8, mifmaf), CRS_BITX("Min Address Fixed", 4, 4, mifmaf), CRS_BITX("Decode Type", 4, 2, decode_type), CRS_BITS("Ignored", 4, 1), CRS_UINT("Type Specific Flags", 5, 8), CRS_UINT("Address Space Granularity", 6, 32), CRS_UINT("Address Range Minimum", 10, 32), CRS_UINT("Address Range Maximum", 14, 32), CRS_UINT("Address Translation Offset", 18, 32), CRS_UINT("Address Length", 22, 32), CRS_UINT("Resource Source Index", 26, 1), /* Skip Resource Source String */ CRS_END }; crsdump_show(fw, objname, "DWord Address Space Descriptor", data, crs_length, header, info); } break; case 0x8: /* 6.4.3.5.3 Word Address Space Descriptor */ { static const crsdump_info info[] = { CRS_UINTX("Resource Type", 3, 8, crs_resource_type), CRS_BITS("Reserved", 4, 0xf0), CRS_BITX("Max Address Fixed", 4, 8, mifmaf), CRS_BITX("Min Address Fixed", 4, 4, mifmaf), CRS_BITX("Decode Type", 4, 2, decode_type), CRS_BITS("Ignored", 4, 1), CRS_UINT("Type Specific Flags", 5, 8), CRS_UINT("Address Space Granularity", 6, 16), CRS_UINT("Address Range Minimum", 8, 16), CRS_UINT("Address Range Maximum", 10, 16), CRS_UINT("Address Translation Offset", 12, 16), CRS_UINT("Address Length", 14, 16), CRS_UINT("Resource Source Index", 16, 1), /* Skip Resource Source String */ CRS_END }; crsdump_show(fw, objname, "Word Address Space Descriptor", data, crs_length, header, info); } break; case 0x9: /* 6.4.3.6 Extended Interrupt Descriptor */ { static const crsdump_info info[] = { CRS_BITS("Reserved", 3, 128 | 64 | 32), CRS_BITX("Interrupt Sharing", 3, 16 | 8, sharing), CRS_BITX("Interrupt Polarity", 7, 4, polarity), CRS_BITX("Interrupt Mode", 7, 2, mode), CRS_BITX("Interrupt Consumer/Producer", 7, 1, consumer), CRS_UINT("Interrupt Table Length", 8, 8), CRS_END }; crsdump_show(fw, objname, "Extended Interrupt Descriptor", data, crs_length, header, info); crsdump_data(fw, data, 5, crs_length); } break; case 0xa: /* 6.4.3.5.1 QWord Address Space Descriptor */ { static const crsdump_info info[] = { CRS_UINTX("Resource Type", 3, 8, crs_resource_type), CRS_BITS("Reserved", 4, 0xf0), CRS_BITX("Max Address Fixed", 4, 8, mifmaf), CRS_BITX("Min Address Fixed", 4, 4, mifmaf), CRS_BITX("Decode Type", 4, 2, decode_type), CRS_BITS("Ignored", 4, 1), CRS_UINT("Type Specific Flags", 5, 8), CRS_UINT("Address Space Granularity", 6, 64), CRS_UINT("Address Range Minimum", 14, 64), CRS_UINT("Address Range Maximum", 22, 64), CRS_UINT("Address Translation Offset", 30, 64), CRS_UINT("Address Length", 38, 64), CRS_UINT("Resource Source Index", 46, 1), /* Skip Resource Source String */ CRS_END }; crsdump_show(fw, objname, "QWord Address Space Descriptor", data, crs_length, header, info); } break; case 0xb: /* 6.4.3.5.4 Extended Address Space Descriptor */ { static const crsdump_info info[] = { CRS_UINTX("Resource Type", 3, 8, crs_resource_type), CRS_BITS("Reserved", 4, 0xf0), CRS_BITX("Max Address Fixed", 4, 8, mifmaf), CRS_BITX("Min Address Fixed", 4, 4, mifmaf), CRS_BITX("Decode Type", 4, 2, decode_type), CRS_BITX("Consumer/Producer", 4, 1, consumer), CRS_UINT("Type Specific Flags", 5, 8), CRS_UINT("Revision ID", 6, 8), CRS_UINT("Reserved", 7, 8), CRS_UINT("Address Space Granularity", 8, 64), CRS_UINT("Address Range Minimum", 16, 64), CRS_UINT("Address Range Maximum", 24, 64), CRS_UINT("Address Translation Offset", 32, 64), CRS_UINT("Address Length", 40, 64), CRS_UINT("Type Specific Attribute", 48, 64), CRS_END }; crsdump_show(fw, objname, "Extended Address Space Descriptor", data, crs_length, header, info); } break; case 0xc: /* 6.4.3.8.1 GPIO Connection Descriptor */ { if (crs_length < 4) break; if (data[4] == 0) { /* Interrupt connection */ static const crsdump_info info[] = { CRS_UINT("Revision ID", 3, 8), CRS_UINTX("GPIO Connection Type", 4, 8, crs_gpio_connection_type), CRS_BITS("Reserved", 5, 0xfe), CRS_BITX("Consumer/Producer", 5, 1, consumer), CRS_UINT("Reserved", 6, 8), CRS_BITS("Reserved", 7, 128 | 64 | 32), CRS_BITX("Interrupt Sharing and Wake", 7, 16 | 8, sharing), CRS_BITX("Interrupt Polarity", 7, 4 | 2, polarity), CRS_BITX("Interrupt Mode", 7, 1, mode), CRS_UINT("Interrupt and I/O Flags", 8, 8), CRS_UINTX("Pin Configuration", 9, 8, crs_pin_configuration), CRS_UINT("Output Driver Strength", 10, 16), CRS_UINT("Debounce Timeout (bits)", 12, 16), CRS_UINT("Pin Table Offset", 14, 16), CRS_UINT("Resource Source Index", 16, 8), CRS_UINT("Resource Name Offset", 17, 16), CRS_UINT("Vendor Data Offset", 19, 16), CRS_UINT("Vendor Data Length", 21, 16), /* Skip pin table */ CRS_END }; crsdump_show(fw, objname, "GPIO Connection Descriptor", data, crs_length, header, info); } else if (data[4] == 1) { static const char *sharing[] = { "Exclusive", "Shared", }; static const char *restriction[] = { "Input or Output", "Input Only", "Output Only", "Input or Ouput, config must be preserved" }; /* I/O connection */ static const crsdump_info info[] = { CRS_UINT("Revision ID", 3, 8), CRS_UINTX("GPIO Connection Type", 4, 8, crs_gpio_connection_type), CRS_BITS("Reserved", 5, 0xfe), CRS_BITX("Consumer/Producer", 5, 1, consumer), CRS_UINT("Reserved", 6, 8), CRS_BITS("Reserved", 7, 128 | 64 | 32 | 16), CRS_BITX("Interrupt Sharing", 7, 8, sharing), CRS_BITS("Reserved", 7, 4), CRS_BITX("I/O Restriction", 7, 2 | 1, restriction), CRS_UINT("Interrupt and I/O Flags", 8, 8), CRS_UINTX("Pin Configuration", 9, 8, crs_pin_configuration), CRS_UINT("Output Driver Strength", 10, 16), CRS_UINT("Debounce Timeout (bits)", 12, 16), CRS_UINT("Pin Table Offset", 14, 16), CRS_UINT("Resource Source Index", 16, 8), CRS_UINT("Resource Name Offset", 17, 16), CRS_UINT("Vendor Data Offset", 19, 16), CRS_UINT("Vendor Data Length", 21, 16), /* Skip pin table */ CRS_END }; crsdump_show(fw, objname, "GPIO Connection Descriptor", data, crs_length, header, info); } else { /* No idea of the connection type */ static const crsdump_info info[] = { CRS_UINT("Revision ID", 3, 8), CRS_UINT("GPIO Connection Type", 4, 8), CRS_END }; crsdump_show(fw, objname, "GPIO Connection Descriptor", data, crs_length, header, info); } } break; case 0xe: /* 6.4.3.8.2 Serial Bus Connection Descriptors */ /* This is not frequently used, deferring implementation to later */ crsdump_show_header(fw, objname, "Serial Bus Connection Descriptor"); crsdump_show_info(fw, data, crs_length, header); crsdump_data(fw, data, 3, crs_length); break; default: crsdump_show_header(fw, objname, "Unknown type"); crsdump_show_info(fw, data, crs_length, header); crsdump_data(fw, data, 3, crs_length); break; } fwts_log_nl(fw); } int resource_dump(fwts_framework *fw, const char *objname) { fwts_list_link *item; fwts_list *objects; const size_t name_len = strlen(objname); if ((objects = fwts_acpi_object_get_names()) == NULL) { fwts_log_info(fw, "Cannot find any ACPI objects"); return FWTS_ERROR; } fwts_list_foreach(item, objects) { char *name = fwts_list_data(char*, item); const size_t len = strlen(name); if (strncmp(objname, name + len - name_len, name_len) == 0) { ACPI_OBJECT_LIST arg_list; ACPI_BUFFER buf; ACPI_OBJECT *obj; uint8_t *data; int ret; arg_list.Count = 0; arg_list.Pointer = NULL; ret = fwts_acpi_object_evaluate(fw, name, &arg_list, &buf); if ((ACPI_FAILURE(ret) != AE_OK) || (buf.Pointer == NULL)) continue; /* Do we have a valid resource buffer to dump? */ obj = buf.Pointer; if ((obj->Type == ACPI_TYPE_BUFFER) && (obj->Buffer.Pointer != NULL) && (obj->Buffer.Length > 0)) { data = (uint8_t*)obj->Buffer.Pointer; if (data[0] & 128) crsdump_large_resource_items(fw, name, data, obj->Buffer.Length); else crsdump_small_resource_items(fw, name, data, obj->Buffer.Length); } free(buf.Pointer); } } return FWTS_OK; } static int crsdump_test1(fwts_framework *fw) { return resource_dump(fw, "_CRS"); } static fwts_framework_minor_test crsdump_tests[] = { { crsdump_test1, "Dump ACPI _CRS (Current Resource Settings)." }, { NULL, NULL } }; static fwts_framework_ops crsdump_ops = { .description = "Dump ACPI _CRS resources.", .init = crsdump_init, .deinit = crsdump_deinit, .minor_tests = crsdump_tests }; FWTS_REGISTER("crsdump", &crsdump_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_UTILS); src/acpi/crsdump/crsdump.h000066400000000000000000000016061231470457100160730ustar00rootroot00000000000000/* * Copyright (C) 2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #ifndef __CRSDUMP_H__ #define __CRSDUMP_H__ #include "fwts.h" extern int resource_dump(fwts_framework *fw, const char *objname); #endif src/acpi/crsdump/prsdump.c000066400000000000000000000032621231470457100161030ustar00rootroot00000000000000/* * Copyright (C) 2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #include "fwts.h" /* acpica headers */ #include "acpi.h" #include "fwts_acpi_object_eval.h" #include "crsdump.h" /* * prsdump_init() * initialize ACPI */ static int prsdump_init(fwts_framework *fw) { if (fwts_acpi_init(fw) != FWTS_OK) { fwts_log_error(fw, "Cannot initialise ACPI."); return FWTS_ERROR; } return FWTS_OK; } /* * prsdump_deinit * de-intialize ACPI */ static int prsdump_deinit(fwts_framework *fw) { return fwts_acpi_deinit(fw); } static int prsdump_test1(fwts_framework *fw) { return resource_dump(fw, "_PRS"); } static fwts_framework_minor_test prsdump_tests[] = { { prsdump_test1, "Dump ACPI _PRS (Possible Resource Settings)." }, { NULL, NULL } }; static fwts_framework_ops prsdump_ops = { .description = "Dump ACPI _PRS resources.", .init = prsdump_init, .deinit = prsdump_deinit, .minor_tests = prsdump_tests }; FWTS_REGISTER("prsdump", &prsdump_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_UTILS); src/acpi/cstates/000077500000000000000000000000001231470457100142335ustar00rootroot00000000000000src/acpi/cstates/cstates.c000066400000000000000000000144361231470457100160550ustar00rootroot00000000000000/* * Copyright (C) 2006, Intel Corporation * Copyright (C) 2010-2014 Canonical * * This file is was originally from the Linux-ready Firmware Developer Kit * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #define _GNU_SOURCE /* for sched_setaffinity */ #include "fwts.h" #ifdef FWTS_ARCH_INTEL #define PROCESSOR_PATH "/sys/devices/system/cpu" #include #include #include #include #include #include #include #include #define MIN_CSTATE 1 #define MAX_CSTATE 16 typedef struct { int counts[MAX_CSTATE]; bool used[MAX_CSTATE]; bool present[MAX_CSTATE]; } fwts_cstates; static int statecount = -1; static int firstcpu = -1; static void get_cstates(char *path, fwts_cstates *state) { struct dirent *entry; char filename[PATH_MAX]; char *data; DIR *dir; int i; for (i=MIN_CSTATE; icounts[i] = 0; state->present[i] = false; state->used[i] = false; } if ((dir = opendir(path)) == NULL) return; while ((entry = readdir(dir)) != NULL) { if (entry && strlen(entry->d_name)>3) { int nr; int count; snprintf(filename, sizeof(filename), "%s/%s/name", path, entry->d_name); if ((data = fwts_get(filename)) == NULL) break; /* * Names can be "Cx\n", or "ATM-Cx\n", or "SNB-Cx\n", * or newer kernels can be "Cx\n" or "Cx-SNB\n" etc * where x is the C state number. */ if ((data[0] == 'C') && isdigit(data[1])) nr = strtoull(data+1, NULL, 10); else if (strcmp("POLL", data) == 0) nr = 0; else { char *ptr = strstr(data, "-C"); if (ptr) nr = strtoull(ptr + 2, NULL, 10); else nr = 0; } free(data); snprintf(filename, sizeof(filename), "%s/%s/usage", path, entry->d_name); if ((data = fwts_get(filename)) == NULL) break; count = strtoull(data, NULL, 10); free(data); if ((nr >= 0) && (nr < MAX_CSTATE)) { state->counts[nr] = count; state->present[nr] = true; } } } closedir(dir); } #define TOTAL_WAIT_TIME 20 static void do_cpu(fwts_framework *fw, int nth, int cpus, int cpu, char *path) { fwts_cstates initial, current; int count; char buffer[128]; char tmp[8]; bool keepgoing = true; int i; get_cstates(path, &initial); for (i=0; (i < TOTAL_WAIT_TIME) && keepgoing; i++) { int j; snprintf(buffer, sizeof(buffer),"(CPU %d of %d)", nth+1, cpus); fwts_progress_message(fw, 100 * (i+ (TOTAL_WAIT_TIME*nth))/ (cpus * TOTAL_WAIT_TIME), buffer); if ((i & 7) < 4) sleep(1); else { uint64_t loop_count; if (fwts_cpu_performance(fw, cpu, &loop_count) != FWTS_OK) { fwts_failed(fw, LOG_LEVEL_HIGH, "CPUFailedPerformance", "Could not determine the CPU performance, this " "may be due to not being able to get or set the " "CPU affinity for CPU %i.", cpu); } } get_cstates(path, ¤t); keepgoing = false; for (j=MIN_CSTATE; jd_name)>3) && (strncmp(entry->d_name, "cpu", 3) == 0) && (isdigit(entry->d_name[3]))) cpus++; rewinddir(dir); for (i=0;(entry = readdir(dir)) != NULL;) { if (entry && (strlen(entry->d_name)>3) && (strncmp(entry->d_name, "cpu", 3) == 0) && (isdigit(entry->d_name[3]))) { char cpupath[PATH_MAX]; snprintf(cpupath, sizeof(cpupath), "%s/%s/cpuidle", PROCESSOR_PATH, entry->d_name); do_cpu(fw, i++, cpus, strtoul(entry->d_name+3, NULL, 10), cpupath); } } closedir(dir); return FWTS_OK; } static fwts_framework_minor_test cstates_tests[] = { { cstates_test1, "Test all CPUs C-states." }, { NULL, NULL } }; static fwts_framework_ops cstates_ops = { .description = "Processor C state support test.", .minor_tests = cstates_tests }; FWTS_REGISTER("cstates", &cstates_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH); #endif src/acpi/dmar/000077500000000000000000000000001231470457100135105ustar00rootroot00000000000000src/acpi/dmar/dmar.c000066400000000000000000000210201231470457100145720ustar00rootroot00000000000000/* * Copyright (C) 2006, Intel Corporation * Copyright (C) 2010-2014 Canonical * * This file was originally part of the Linux-ready Firmware Developer Kit * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #include "fwts.h" #ifdef FWTS_ARCH_INTEL #include #include #include #include #define MASK_4K 0xfff /* See http://download.intel.com/technology/computing/vptech/Intel(r)_VT_for_Direct_IO.pdf */ /* DMA Remapping Reporting Table (DMAR) */ struct acpi_table_dmar { uint8_t head[36]; uint8_t haw; uint8_t flags; uint8_t reserved[10]; } __attribute__((packed)); #define DMAR_HEADER_SIZE sizeof(struct acpi_table_dmar) struct acpi_dmar_entry_header { uint16_t type; uint16_t length; } __attribute__((packed)); enum acpi_dmar_entry_type { ACPI_DMAR_DRHD = 0, ACPI_DMAR_RMRR, ACPI_DMAR_ASTR, ACPI_DMAR_ENTRY_COUNT }; struct acpi_table_drhd { struct acpi_dmar_entry_header header; uint8_t flags; /* BIT0: INCLUDE_ALL */ uint8_t reserved; uint16_t segment; uint64_t address; /* register base address for this drhd */ } __attribute__ ((packed)); struct acpi_table_rmrr { struct acpi_dmar_entry_header header; uint16_t reserved; uint16_t segment; uint64_t base_address; uint64_t end_address; } __attribute__ ((packed)); enum acpi_dev_scope_type { ACPI_DEV_ENDPOINT=0x01, ACPI_DEV_P2PBRIDGE, ACPI_DEV_IOAPIC, ACPI_DEV_HPET, ACPI_DEV_ENTRY_COUNT }; struct acpi_dev_scope { uint8_t dev_type; uint8_t length; uint16_t reserved; uint8_t enumeration_id; uint8_t start_bus; } __attribute__((packed)); struct acpi_pci_path { uint8_t dev; uint8_t fn; } __attribute__((packed)); #define MIN_SCOPE_LEN (sizeof(struct acpi_pci_path) + \ sizeof(struct acpi_dev_scope)) /* * = -1, no such device * = 0, normal pci device * = 1, pci bridge, sec_bus gets set */ static int read_pci_device_secondary_bus_number(const uint8_t seg, const uint8_t bus, const uint8_t dev, const uint8_t fn, uint8_t *sec_bus) { FILE *file; char path[PATH_MAX]; char configs[64]; size_t count; snprintf(path, sizeof(path), "/sys/bus/pci/devices/%04x:%02x:%02x.%d/config", seg, bus, dev, fn); if ((file = fopen(path, "r")) == NULL) return -1; count = fread(configs, sizeof(char), 64, file); fclose(file); if (count < 64) return -1; /* header type is at 0x0e */ if ((configs[0xe] & 0x7f) != 1) /* not a pci bridge */ return 0; *sec_bus = configs[0x19]; /* secondary bus number */ return 1; } static int acpi_parse_one_dev_scope(fwts_framework *fw, struct acpi_dev_scope *scope, const uint16_t seg) { struct acpi_pci_path *path; int count; uint8_t bus; uint8_t sec_bus = 0; int dev_type; if (scope->length < MIN_SCOPE_LEN) { fwts_failed(fw, LOG_LEVEL_MEDIUM, "InvalidDevScope", "Invalid device scope entry."); return FWTS_ERROR; } if (scope->dev_type >= ACPI_DEV_ENTRY_COUNT) { fwts_warning(fw, "Unknown device scope type."); return FWTS_ERROR; } if (scope->dev_type > ACPI_DEV_P2PBRIDGE) { fwts_log_info(fw, "Unknown device scope type, " "the test case should be fixed."); return FWTS_ERROR; } bus = scope->start_bus; count = (scope->length - sizeof(struct acpi_dev_scope)) /sizeof(struct acpi_pci_path); path = (struct acpi_pci_path *)(scope + 1); if (!count) goto error; dev_type = 1; while (count) { if (dev_type <= 0) /* last device isn't a pci bridge */ goto error; dev_type = read_pci_device_secondary_bus_number(seg, bus, path->dev, path->fn, &sec_bus); if (dev_type < 0) /* no such device */ goto error; path++; count--; bus = sec_bus; } if ((scope->dev_type == ACPI_DEV_ENDPOINT && dev_type > 0) || (scope->dev_type == ACPI_DEV_P2PBRIDGE && dev_type == 0)) { fwts_failed(fw, LOG_LEVEL_MEDIUM, "DevScopeTypeNoMatch", "Device scope type not match."); return FWTS_ERROR; } return FWTS_OK; error: fwts_failed(fw, LOG_LEVEL_MEDIUM, "DevScopeDevNotFound", "Device scope device not found."); return FWTS_ERROR; } static int acpi_parse_dev_scope(fwts_framework *fw, void *start, void *end, const uint16_t seg) { struct acpi_dev_scope *scope; int ret; while (start < end) { scope = start; ret = acpi_parse_one_dev_scope(fw, scope, seg); if (ret) return ret; start += scope->length; } return FWTS_OK; } static int acpi_parse_one_drhd(fwts_framework *fw, struct acpi_dmar_entry_header *header) { static int include_all; struct acpi_table_drhd *drhd = (struct acpi_table_drhd*)header; if (drhd->address & MASK_4K) { fwts_failed(fw, LOG_LEVEL_MEDIUM, "InvalidDRHDRegAddr", "Invalid drhd register address."); return FWTS_ERROR; } if (drhd->flags & 1) { if (include_all == 1) { fwts_failed(fw, LOG_LEVEL_MEDIUM, "MultipleDRHDSFlag", "Multiple drhds have include_all flag set."); return FWTS_ERROR; } include_all = 1; } else { return acpi_parse_dev_scope(fw, (void *)(drhd + 1), ((void *)drhd) + header->length, drhd->segment); } return FWTS_OK; } static int acpi_parse_one_rmrr(fwts_framework *fw, struct acpi_dmar_entry_header *header) { struct acpi_table_rmrr *rmrr = (struct acpi_table_rmrr *)header; if ((rmrr->base_address & MASK_4K) || (rmrr->end_address < rmrr->base_address) || ((rmrr->end_address - rmrr->base_address + 1) & MASK_4K)) { fwts_failed(fw, LOG_LEVEL_MEDIUM, "InvalidRMRRRangeAddr", "Invalid rmrr range address."); return FWTS_ERROR; } return acpi_parse_dev_scope(fw, (void *)(rmrr + 1), ((void*)rmrr) + header->length, rmrr->segment); } static int dmar_acpi_table_check(fwts_framework *fw) { uint8_t *table_ptr; struct acpi_dmar_entry_header *header; fwts_acpi_table_info *table; int failed = 0; if (fwts_acpi_find_table(fw, "DMAR", 0, &table) != FWTS_OK) { fwts_log_error(fw, "Cannot load ACPI table."); return FWTS_ERROR; } if (table == NULL) { fwts_skipped(fw, "No DMAR table. This is not necessarily a " "failure as most systems do not have this table."); return FWTS_SKIP; } table_ptr = (uint8_t*)table->data; if (table->length <= DMAR_HEADER_SIZE) { fwts_failed(fw, LOG_LEVEL_MEDIUM, "InvalidDMAR", "Invalid DMAR ACPI table."); return FWTS_ERROR; } header = (struct acpi_dmar_entry_header *)(table_ptr+DMAR_HEADER_SIZE); while ((unsigned long)header < (unsigned long)(table_ptr + table->length)) { if ((header->type == ACPI_DMAR_DRHD) && (acpi_parse_one_drhd(fw, header) != FWTS_OK)) { failed++; break; } if ((header->type == ACPI_DMAR_RMRR) && (acpi_parse_one_rmrr(fw, header) != FWTS_OK)) { failed++; break; } header = ((void *)header) + header->length; } if (!failed) fwts_passed(fw, "DMAR ACPI table has passed test."); return FWTS_OK; } static void acpiinfo_check(fwts_framework *fw, char *line, int repeated, char *prevline, void *private, int *errors) { FWTS_UNUSED(repeated); FWTS_UNUSED(prevline); FWTS_UNUSED(private); FWTS_UNUSED(errors); if (strstr(line, "DMAR:[fault reason")) fwts_failed(fw, LOG_LEVEL_MEDIUM, "DMARError", "Found DMAR error: %s", line); } static int dmar_test1(fwts_framework *fw) { if (dmar_acpi_table_check(fw) == FWTS_OK) { fwts_list *klog; int errors = 0; if ((klog = fwts_klog_read()) == NULL) { fwts_log_error(fw, "Cannot read kernel log."); return FWTS_ERROR; } if (fwts_klog_scan(fw, klog, acpiinfo_check, NULL, NULL, &errors)) { fwts_log_error(fw, "Failed to scan kernel log."); fwts_klog_free(klog); return FWTS_ERROR; } if (errors == 0) fwts_passed(fw, "Found no DMAR errors in kernel log."); fwts_klog_free(klog); } return FWTS_OK; } static fwts_framework_minor_test dmar_tests[] = { { dmar_test1, "DMA Remapping test." }, { NULL, NULL } }; static fwts_framework_ops dmar_ops = { .description = "DMA Remapping (VT-d) test.", .minor_tests = dmar_tests }; FWTS_REGISTER("dmar", &dmar_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH); #endif src/acpi/fadt/000077500000000000000000000000001231470457100135035ustar00rootroot00000000000000src/acpi/fadt/fadt.c000066400000000000000000000134361231470457100145740ustar00rootroot00000000000000/* * Copyright (C) 2010-2014 Canonical * * Portions of this code original from the Linux-ready Firmware Developer Kit * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #include "fwts.h" #ifdef FWTS_ARCH_INTEL #include #include #include #include #include #include #include #include #define FADT_RESET_SUPPORTED (1 << 10) static const fwts_acpi_table_fadt *fadt; static int fadt_size; static int fadt_init(fwts_framework *fw) { fwts_acpi_table_info *table; if (fwts_acpi_find_table(fw, "FACP", 0, &table) != FWTS_OK) { fwts_log_error(fw, "Cannot read ACPI table FACP."); return FWTS_ERROR; } if (table == NULL) { fwts_log_error(fw, "ACPI table FACP does not exist!"); return FWTS_ERROR; } fadt = (const fwts_acpi_table_fadt*)table->data; fadt_size = table->length; /* Not having a FADT is not a failure */ if (fadt_size == 0) { fwts_log_info(fw, "FADT does not exist, this is not necessarily a failure, skipping tests."); return FWTS_SKIP; } return FWTS_OK; } static int fadt_test1(fwts_framework *fw) { uint32_t port, width, val32; int ret = FWTS_OK; fwts_log_info(fw, "FADT Preferred PM Profile: %hhu (%s)\n", fadt->preferred_pm_profile, FWTS_ACPI_FADT_PREFERRED_PM_PROFILE(fadt->preferred_pm_profile)); port = fadt->pm1a_cnt_blk; width = fadt->pm1_cnt_len * 8; /* In bits */ if ((fadt->header.revision > 1) || (fadt->header.length >= 244)) { /* Sanity check sizes with extended address variants */ fwts_log_info(fw, "FADT is greater than ACPI version 1.0"); if ((uint64_t)port != fadt->x_pm1a_cnt_blk.address) fwts_failed(fw, LOG_LEVEL_MEDIUM, "FADTPM1CNTAddrMismatch", "32 and 64 bit versions of FADT pm1_cnt address do not match (0x%8.8x vs 0x%16.16" PRIx64 ").", port, fadt->x_pm1a_cnt_blk.address); if (width != fadt->x_pm1a_cnt_blk.register_bit_width) fwts_failed(fw, LOG_LEVEL_MEDIUM, "FADTPM1CNTSizeMismatch", "32 and 64 bit versions of FADT pm1_cnt size do not match (0x%x vs 0x%x).", width, fadt->x_pm1a_cnt_blk.register_bit_width); port = fadt->x_pm1a_cnt_blk.address; width = fadt->x_pm1a_cnt_blk.register_bit_width; } switch (width) { case 8: if (ioperm(port, width/8, 1) < 0) ret = FWTS_ERROR; else { uint8_t val8; ret = fwts_inb(port, &val8); val32 = val8; ioperm(port, width/8, 0); } break; case 16: if (ioperm(port, width/8, 1) < 0) ret = FWTS_ERROR; else { uint16_t val16; ret = fwts_inw(port, &val16); val32 = val16; ioperm(port, width/8, 0); } break; case 32: if (ioperm(port, width/8, 1) < 0) ret = FWTS_ERROR; else { ret = fwts_inl(port, &val32); ioperm(port, width/8, 0); } break; default: fwts_failed(fw, LOG_LEVEL_HIGH, "FADTPM1AInvalidWidth", "FADT pm1a register has invalid bit width of %d.", width); return FWTS_OK; } if (ret != FWTS_OK) { fwts_log_error(fw, "Cannot read FADT PM1A_CNT_BLK port 0x%" PRIx32 ".", port); return FWTS_ERROR; } if (val32 & 0x01) fwts_passed(fw, "SCI_EN bit in PM1a Control Register Block is enabled."); else fwts_failed(fw, LOG_LEVEL_HIGH, "SCI_ENNotEnabled", "SCI_EN bit in PM1a Control Register Block is not enabled."); return FWTS_OK; } static int fadt_test2(fwts_framework *fw) { if ((fadt->header.revision == 1) || (fadt->header.length < 244)) { fwts_skipped(fw, "Header size indicates an ACPI 1.0 FADT, skipping test."); return FWTS_SKIP; } /* * Sanity check Reset reg, c.f. ACPICA * commit 57bdfbee675cd2c0618c66882d68a6bdf9f8efc4 */ if (fadt->flags & FADT_RESET_SUPPORTED) { if (fadt->reset_reg.register_bit_width != 8) { fwts_failed(fw, LOG_LEVEL_HIGH, "FadtResetRegWidth", "FADT reset register is not 8 bits wide, got instead: %" PRIi8 ".", fadt->reset_reg.register_bit_width); fwts_advice(fw, "Section 5.2.9 Fixed ACPI Description Table (Table 5-34) of the ACPI " "specification states that the FADT register width should " "be 8 bits wide. However, recent versions of ACPICA will ignore this " "and default to 8 bits."); } else fwts_passed(fw, "FADT reset register width is 8 bits wide as expected."); if (fadt->reset_reg.register_bit_offset != 0) { fwts_failed(fw, LOG_LEVEL_HIGH, "FadtResetRegBitOffset", "FADT reset register bit offset is not 0, got instead: %" PRIi8 ".", fadt->reset_reg.register_bit_offset); fwts_advice(fw, "Section 5.2.9 Fixed ACPI Description Table (Table 5-34) of the ACPI " "specification states that the FADT register bit offset should be 0."); } else fwts_passed(fw, "FADT register bit offset is 0 as expected."); } else { fwts_skipped(fw, "FADT flags indicates reset register not supported, skipping test."); return FWTS_SKIP; } return FWTS_OK; } static fwts_framework_minor_test fadt_tests[] = { { fadt_test1, "Test FADT SCI_EN bit is enabled." }, { fadt_test2, "Test FADT reset register." }, { NULL, NULL } }; static fwts_framework_ops fadt_ops = { .description = "FADT SCI_EN enabled tests.", .init = fadt_init, .minor_tests = fadt_tests }; FWTS_REGISTER("fadt", &fadt_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | FWTS_FLAG_ROOT_PRIV); #endif src/acpi/fan/000077500000000000000000000000001231470457100133315ustar00rootroot00000000000000src/acpi/fan/fan.c000066400000000000000000000161631231470457100142500ustar00rootroot00000000000000/* * Copyright (C) 2006, Intel Corporation * Copyright (C) 2010-2014 Canonical * * This file was originally part of the Linux-ready Firmware Developer Kit * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #include "fwts.h" #ifdef FWTS_ARCH_INTEL #include #include #include #include #include #include #include #include #define COOLING_DEV "cooling_device" #define THERMAL_PATH "/sys/class/thermal" typedef struct { char *name; char *type; int max_state; int cur_state; } fan_info; static void free_fan_info(void *ptr) { fan_info *info = (fan_info*)ptr; free(info->name); free(info->type); free(info); } static fwts_list *get_fan_info(fwts_framework *fw) { DIR *dir; struct dirent *entry; fwts_list *fans; if ((fans = fwts_list_new()) == NULL) { fwts_log_error(fw, "Out of memory gathing fan information."); return NULL; } if (!(dir = opendir(THERMAL_PATH))) return fans; do { entry = readdir(dir); if (entry && strstr(entry->d_name, COOLING_DEV)) { char path[PATH_MAX]; fan_info *info; char *str; info = calloc(1, sizeof(fan_info)); if (info == NULL) { fwts_log_error(fw, "Out of memory gathing fan information."); fwts_list_free(fans, free_fan_info); closedir(dir); return NULL; } if ((info->name = strdup(entry->d_name)) == NULL) { fwts_log_error(fw, "Out of memory gathing fan information."); fwts_list_free(fans, free_fan_info); free(info); closedir(dir); return NULL; } snprintf(path, sizeof(path), THERMAL_PATH "/%s/type", entry->d_name); if ((str = fwts_get(path)) == NULL) { fwts_failed(fw, LOG_LEVEL_MEDIUM, "NoFanType", "Fan present but has no fan type present."); } else { fwts_chop_newline(str); } info->type = str; /* NULL is OK */ snprintf(path, sizeof(path), THERMAL_PATH "/%s/max_state", entry->d_name); if ((str = fwts_get(path)) == NULL) { fwts_failed(fw, LOG_LEVEL_MEDIUM, "NoFanMaxState", "Fan present but has no max_state present."); info->max_state = -1; } else { info->max_state = atoi(str); free(str); } snprintf(path, sizeof(path), THERMAL_PATH "/%s/cur_state", entry->d_name); if ((str = fwts_get(path)) == NULL) { fwts_failed(fw, LOG_LEVEL_MEDIUM, "NoFanCurState", "Fan present but has no cur_state present."); info->cur_state = -1; } else { info->cur_state = atoi(str); free(str); } fwts_list_append(fans, info); } } while (entry); closedir(dir); return fans; } static int fan_test1(fwts_framework *fw) { fwts_list *fans; fwts_list_link *item; fwts_log_info(fw, "Test how many fans there are in the system. " "Check for the current status of the fan(s)."); if ((fans = get_fan_info(fw)) == NULL) return FWTS_ERROR; if (fwts_list_len(fans) == 0) { fwts_skipped(fw, "No thermal cooling information present: cannot test."); fwts_list_free(fans, free_fan_info); return FWTS_SKIP; } fwts_list_foreach(item, fans) { fan_info *info = fwts_list_data(fan_info *, item); if (info->type == NULL) fwts_failed(fw, LOG_LEVEL_MEDIUM, "NoFanType", "Fan present but has no fan type present."); if (info->max_state == -1) fwts_failed(fw, LOG_LEVEL_MEDIUM, "NoFanMaxState", "Fan present but has no max_state present."); if (info->cur_state == -1) fwts_failed(fw, LOG_LEVEL_MEDIUM, "NoFanCurState", "Fan present but has no cur_state present."); if (info->type && (info->max_state >= 0) && (info->cur_state >= 0)) fwts_passed(fw, "Fan %s of type %s has max cooling state %d " "and current cooling state %d.", info->name, info->type, info->max_state, info->cur_state); } fwts_list_free(fans, free_fan_info); return FWTS_OK; } static int fan_test2(fwts_framework *fw) { fwts_list *fans1, *fans2; fwts_list_link *item1, *item2; bool changed = false; fwts_log_info(fw, "Test how many fans there are in the system. " "Check for the current status of the fan(s)."); if ((fans1 = get_fan_info(fw)) == NULL) return FWTS_ERROR; if (fwts_list_len(fans1) == 0) { fwts_skipped(fw, "No thermal cooling information present: cannot test."); fwts_list_free(fans1, free_fan_info); return FWTS_SKIP; } fwts_log_info(fw, "Loading CPUs for 20 seconds to try and get fan speeds to change."); fwts_cpu_consume(20); if ((fans2 = get_fan_info(fw)) == NULL) { fwts_list_free(fans1, free_fan_info); return FWTS_ERROR; } if (fwts_list_len(fans2) == 0) { fwts_skipped(fw, "No thermal cooling information present: cannot test."); fwts_list_free(fans1, free_fan_info); fwts_list_free(fans2, free_fan_info); return FWTS_SKIP; } fwts_list_foreach(item1, fans1) { fan_info *info1 = fwts_list_data(fan_info *, item1); fwts_list_foreach(item2, fans2) { fan_info *info2 = fwts_list_data(fan_info *, item2); if (strcmp(info1->type, "Processor") == 0) { if (strcmp(info1->name, info2->name) == 0) { if (info2->cur_state < info1->cur_state) { fwts_failed(fw, LOG_LEVEL_HIGH, "FanCurStateDecreased", "Fan %s current state decreased from %d to %d " "while CPUs were busy, expected an increase.", info1->name, info1->cur_state, info2->cur_state); changed = true; } if (info2->cur_state > info1->cur_state) { fwts_passed(fw, "Fan %s current state increased from %d to %d " "while CPUs were busy.", info1->name, info1->cur_state, info2->cur_state); changed = true; } if (info2->cur_state == info1->cur_state) fwts_log_info(fw, "Fan %s current state did not change from value %d " "while CPUs were busy.", info1->name, info1->cur_state); } } } } if (!changed) { fwts_advice(fw, "Did not detect any change in the CPU related thermal cooling device states. " "It could be that the devices are returning static information back " "to the driver and/or the fan speed is automatically being " "controlled by firmware using System Management Mode in which case " "the kernel interfaces being examined may not work anyway."); } fwts_list_free(fans1, free_fan_info); fwts_list_free(fans2, free_fan_info); return FWTS_OK; } static fwts_framework_minor_test fan_tests[] = { { fan_test1, "Test fan status." }, { fan_test2, "Load system, check CPU fan status." }, { NULL, NULL} }; static fwts_framework_ops fan_ops = { .description = "Simple fan tests.", .minor_tests = fan_tests }; FWTS_REGISTER("fan", &fan_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH); #endif src/acpi/gpedump/000077500000000000000000000000001231470457100142265ustar00rootroot00000000000000src/acpi/gpedump/gpedump.c000066400000000000000000000126761231470457100160470ustar00rootroot00000000000000/* * Copyright (C) 2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #include "fwts.h" #include #include #include #include /* acpica headers */ #include "acpi.h" #include "aclocal.h" #include "acobject.h" #include "acstruct.h" #include "acglobal.h" #include "fwts_acpi_object_eval.h" /* * gpedump_init() * initialize ACPI */ static int gpedump_init(fwts_framework *fw) { if (fwts_acpi_init(fw) != FWTS_OK) { fwts_log_error(fw, "Cannot initialise ACPI."); return FWTS_ERROR; } return FWTS_OK; } /* * gpedump_deinit * de-intialize ACPI */ static int gpedump_deinit(fwts_framework *fw) { return fwts_acpi_deinit(fw); } static void gpu_dump_gpes( fwts_framework *fw, uint32_t reg, ACPI_GPE_BLOCK_INFO *gpe_block_info) { uint32_t i, gpe = ACPI_GPE_REGISTER_WIDTH * reg; for (i = 0; i < ACPI_GPE_REGISTER_WIDTH; i++, gpe++) { char buf[80]; uint32_t n; ACPI_GPE_NOTIFY_INFO *notify_info; ACPI_GPE_EVENT_INFO *GpeEventInfo = &gpe_block_info->EventInfo[gpe]; if ((GpeEventInfo->Flags & ACPI_GPE_DISPATCH_MASK) == ACPI_GPE_DISPATCH_NONE) continue; switch (GpeEventInfo->Flags & ACPI_GPE_DISPATCH_MASK) { case ACPI_GPE_DISPATCH_NONE: strncpy(buf, "none", sizeof(buf)); break; case ACPI_GPE_DISPATCH_HANDLER: strncpy(buf, "handler", sizeof(buf)); break; case ACPI_GPE_DISPATCH_METHOD: strncpy(buf, "method", sizeof(buf)); break; case ACPI_GPE_DISPATCH_NOTIFY: for (n = 0, notify_info = GpeEventInfo->Dispatch.NotifyList; notify_info; notify_info = notify_info->Next) n++; snprintf(buf, sizeof(buf), "notifes %" PRIu32 " devices", n); break; } fwts_log_info_verbatum(fw, " GPE 0x%2.2" PRIx8 ":", gpe_block_info->BlockBaseNumber + gpe); fwts_log_info_verbatum(fw, " Flags: 0x%2.2" PRIx8 " (trigger: %s, wake: %s)", GpeEventInfo->Flags, GpeEventInfo->Flags & ACPI_GPE_LEVEL_TRIGGERED ? "level" : "edge", GpeEventInfo->Flags & ACPI_GPE_CAN_WAKE ? "can wake" : "run only"); fwts_log_info_verbatum(fw, " Dispatch: %s", buf); } } static void gpedump_block( fwts_framework *fw, ACPI_GPE_XRUPT_INFO *gpe_xrupt_info, ACPI_GPE_BLOCK_INFO *gpe_block_info, uint32_t block) { ACPI_BUFFER buffer; ACPI_STATUS Status; uint32_t reg; char name[128]; buffer.Length = sizeof(name); buffer.Pointer = name; Status = AcpiGetName (gpe_block_info->Node, ACPI_FULL_PATHNAME, &buffer); if (ACPI_FAILURE (Status)) strncpy(name, "unknown", sizeof(name)); fwts_log_nl(fw); fwts_log_info_verbatum(fw, "Block %" PRIu32": DeviceNode %s (%s)\n", block, name, gpe_block_info->Node == AcpiGbl_FadtGpeDevice ? "FADT Defined GPE Block" : "GPE Block Device"); fwts_log_info_verbatum(fw, " GPE range: 0x%2.2" PRIx8 " to 0x%2.2" PRIx8 " on interrupt %" PRIu32 "\n", (uint8_t)gpe_block_info->BlockBaseNumber, (uint8_t)gpe_block_info->BlockBaseNumber + (gpe_block_info->GpeCount - 1), (uint32_t)gpe_xrupt_info->InterruptNumber); fwts_log_info_verbatum(fw, " GPE count: %" PRIu32 " (%" PRIu32 " registers)\n", (uint32_t)gpe_block_info->GpeCount, (uint32_t)gpe_block_info->RegisterCount); for (reg = 0; reg < gpe_block_info->RegisterCount; reg++) { ACPI_GPE_REGISTER_INFO *gpe_reg_info = &gpe_block_info->RegisterInfo[reg]; fwts_log_nl(fw); fwts_log_info_verbatum(fw, " Register %" PRIu32 ": (GPE 0x%2.2" PRIx8 "-0x%2.2" PRIx8 ")", reg, gpe_reg_info->BaseGpeNumber, gpe_reg_info->BaseGpeNumber + (ACPI_GPE_REGISTER_WIDTH - 1)); fwts_log_info_verbatum(fw, " Run Enable: 0x%2.2" PRIx8, gpe_reg_info->EnableForRun); fwts_log_info_verbatum(fw, " Wake Enable: 0x%2.2" PRIx8, gpe_reg_info->EnableForWake); fwts_log_info_verbatum(fw, " Status Address: 0x%8.8" PRIx64, (uint64_t)gpe_reg_info->StatusAddress.Address); fwts_log_info_verbatum(fw, " Enable Address: 0x%8.8" PRIx64, (uint64_t)gpe_reg_info->EnableAddress.Address); gpu_dump_gpes(fw, reg, gpe_block_info); } } static int gpedump_test1(fwts_framework *fw) { ACPI_GPE_BLOCK_INFO *gpe_block_info; ACPI_GPE_XRUPT_INFO *gpe_xrupt_info; uint32_t block = 0; gpe_xrupt_info = AcpiGbl_GpeXruptListHead; for (gpe_xrupt_info = AcpiGbl_GpeXruptListHead; gpe_xrupt_info; gpe_xrupt_info = gpe_xrupt_info->Next) { for (gpe_block_info = gpe_xrupt_info->GpeBlockListHead; gpe_block_info; gpe_block_info = gpe_block_info->Next) { gpedump_block(fw, gpe_xrupt_info, gpe_block_info, block); block++; } } return FWTS_OK; } static fwts_framework_minor_test gpedump_tests[] = { { gpedump_test1, "Dump GPEs." }, { NULL, NULL } }; static fwts_framework_ops gpedump_ops = { .description = "Dump GPEs.", .init = gpedump_init, .deinit = gpedump_deinit, .minor_tests = gpedump_tests }; FWTS_REGISTER("gpedump", &gpedump_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_UTILS); src/acpi/lid/000077500000000000000000000000001231470457100133355ustar00rootroot00000000000000src/acpi/lid/lid.c000066400000000000000000000121351231470457100142530ustar00rootroot00000000000000/* * Copyright (C) 2010-2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #include "fwts.h" #ifdef FWTS_ARCH_INTEL #include #include #include #include #include #include #include #include static int lid_init(fwts_framework *fw) { int matched, not_matched; if (fwts_button_match_state(fw, FWTS_BUTTON_LID_ANY, &matched, ¬_matched) != FWTS_OK) { fwts_failed(fw, LOG_LEVEL_LOW, "NoLIDPath", "No lid interface available: cannot test."); return FWTS_ERROR; } return FWTS_OK; } static void lid_check_field_poll(fwts_framework *fw, int button, int *matching, int *not_matching) { int i; int tmp_matching = 0; int tmp_not_matching = 0; for (i=0; i<100; i++) { fwts_button_match_state(fw, button, &tmp_matching, &tmp_not_matching); usleep(10); if (tmp_matching != 0) break; } *matching = tmp_matching; *not_matching = tmp_not_matching; } static int lid_test1(fwts_framework *fw) { int matching = 0; int not_matching = 0; fwts_printf(fw, "==== Make sure laptop lid is open. ====\n"); fwts_press_enter(fw); lid_check_field_poll(fw, FWTS_BUTTON_LID_OPENED, &matching, ¬_matching); if ((matching == 0) || (not_matching > 0)) fwts_failed(fw, LOG_LEVEL_HIGH, "LidNotOpen", "Detected a closed LID state."); else fwts_passed(fw, "Detected open LID state."); return FWTS_OK; } static int lid_test_state(fwts_framework *fw, int button) { int gpe_count = 0; int fd; int matching = 0; int not_matching = 0; int events = 0; size_t len; char *buffer; char *state; int i; fwts_gpe *gpes_start; fwts_gpe *gpes_end; switch (button) { case FWTS_BUTTON_LID_OPENED: state = "open"; break; case FWTS_BUTTON_LID_CLOSED: state = "closed"; break; default: state = "unknown"; break; } if ((gpe_count = fwts_gpe_read(&gpes_start)) == FWTS_ERROR) { fwts_log_error(fw, "Cannot read GPEs."); return FWTS_ERROR; } if ((fd = fwts_acpi_event_open()) < 0) { fwts_log_error(fw, "Cannot connect to acpid."); fwts_gpe_free(gpes_start, gpe_count); return FWTS_ERROR; } for (i=0; i<=20; i++) { if ((buffer = fwts_acpi_event_read(fd, &len, 1)) != NULL) { if (strstr(buffer, "button/lid")) { events++; lid_check_field_poll(fw, button, &matching, ¬_matching); break; } free(buffer); } fwts_printf(fw, "Waiting %2.2d/20\r", 20-i); } fwts_acpi_event_close(fd); if ((gpe_count = fwts_gpe_read(&gpes_end)) == FWTS_ERROR) { fwts_log_error(fw, "Cannot read GPEs."); fwts_gpe_free(gpes_start, gpe_count); return FWTS_ERROR; } fwts_gpe_test(fw, gpes_start, gpes_end, gpe_count); fwts_gpe_free(gpes_start, gpe_count); fwts_gpe_free(gpes_end, gpe_count); if (events == 0) fwts_failed(fw, LOG_LEVEL_HIGH, "NoLidEvents", "Did not detect any ACPI LID events while waiting for to LID %s.", state); else { fwts_passed(fw, "Detected ACPI LID events while waiting for LID to %s.", state); if ((matching == 0) || (not_matching > 0)) fwts_failed(fw, LOG_LEVEL_HIGH, "NoLidState", "Could not detect lid %s state.", state); else fwts_passed(fw, "Detected lid %s state.", state); } return FWTS_OK; } static int lid_test2(fwts_framework *fw) { int ret; fwts_printf(fw, "==== Please close laptop lid for 2 seconds and then re-open. ====\n"); if ((ret = lid_test_state(fw, FWTS_BUTTON_LID_CLOSED)) != FWTS_OK) return ret; if ((ret = lid_test_state(fw, FWTS_BUTTON_LID_OPENED)) != FWTS_OK) return ret; return FWTS_OK; } static int lid_test3(fwts_framework *fw) { int ret; int i; fwts_log_info(fw, "Some machines may have EC or ACPI faults that cause detection of multiple open/close events to fail."); for (i=1; i<4; i++) { fwts_printf(fw, "==== %d of %d: Please close laptop lid for 2 seconds and then re-open. ====\n", i,3); if ((ret = lid_test_state(fw, FWTS_BUTTON_LID_CLOSED)) != FWTS_OK) return ret; if ((ret = lid_test_state(fw, FWTS_BUTTON_LID_OPENED)) != FWTS_OK) return ret; } return FWTS_OK; } static fwts_framework_minor_test lid_tests[] = { { lid_test1, "Test LID buttons report open correctly." }, { lid_test2, "Test LID buttons on a single open/close." }, { lid_test3, "Test LID buttons on multiple open/close events." }, { NULL, NULL } }; static fwts_framework_ops lid_ops = { .description = "Interactive lid button test.", .init = lid_init, .minor_tests = lid_tests }; FWTS_REGISTER("lid", &lid_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_INTERACTIVE); #endif src/acpi/mcfg/000077500000000000000000000000001231470457100135015ustar00rootroot00000000000000src/acpi/mcfg/mcfg.c000066400000000000000000000174201231470457100145650ustar00rootroot00000000000000/* * Copyright (C) 2010-2014 Canonical * * Portions of this code original from the Linux-ready Firmware Developer Kit * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #include "fwts.h" #ifdef FWTS_ARCH_INTEL #include #include #include #include #include #include static fwts_list *memory_map_list; static fwts_acpi_table_info *mcfg_table; static int compare_config_space( fwts_framework *fw, const fwts_acpi_mcfg_configuration *config) { uint8_t *mapped_config_space; uint8_t config_space[16]; size_t page_size, n; bool match; char path[PATH_MAX]; FILE *fp; int i; page_size = fwts_page_size(); /* * Sanity check on first config, this is enough to * see if MMIO base is OK or not */ snprintf(path, sizeof(path), "/sys/bus/pci/devices/%4.4" PRIx16 ":00:00.0/config", config->pci_segment_group_number); if ((fp = fopen(path, "r")) == NULL) { fwts_log_warning(fw, "Could not open %s.", path); return FWTS_ERROR; } n = fread(config_space, 1, sizeof(config_space), fp); fclose(fp); if (n != sizeof(config_space)) { fwts_log_warning(fw, "Could only read %zd bytes from %s, expecting %zd.", n, path, sizeof(config_space)); return FWTS_ERROR; } if ((mapped_config_space = fwts_mmap(config->base_address, page_size)) == FWTS_MAP_FAILED) { fwts_log_error(fw, "Cannot mmap PCI config space at 0x%" PRIx64 ".", config->base_address); return FWTS_ERROR; } /* * Need to explicitly do byte comparisons on region * memcmp() fails as this can do 64 bit reads */ for (match = true, i = 0; i < 16; i++) { if (config_space[i] != mapped_config_space[i]) { match = false; break; } } (void)fwts_munmap(mapped_config_space, page_size); if (match) fwts_passed(fw, "PCI config space verified."); else fwts_failed(fw, LOG_LEVEL_MEDIUM, "PCIConfigSpaceBad", "PCI config space appears to not work."); return FWTS_OK; } static int mcfg_init(fwts_framework *fw) { if (fwts_acpi_find_table(fw, "MCFG", 0, &mcfg_table) != FWTS_OK) { fwts_log_error(fw, "Cannot load ACPI table"); return FWTS_ERROR; } if (mcfg_table == NULL) { fwts_log_error(fw, "ACPI table MCFG not found. This table is " "required to check for PCI Express*"); return FWTS_ERROR; } return FWTS_OK; } static int mcfg_deinit(fwts_framework *fw) { FWTS_UNUSED(fw); if (memory_map_list) fwts_memory_map_table_free(memory_map_list); return FWTS_OK; } static int mcfg_test1(fwts_framework *fw) { int nr, i; fwts_acpi_table_mcfg *mcfg = (fwts_acpi_table_mcfg*)mcfg_table->data; fwts_acpi_mcfg_configuration *config; bool failed = false; ssize_t mcfg_size; const char *memory_map_name; memory_map_name = fwts_memory_map_name(fw->firmware_type); fwts_log_info(fw, "This test tries to validate the MCFG table by comparing the first " "16 bytes in the MMIO mapped config space with the 'traditional' config " "space of the first PCI device (root bridge). The MCFG data is only " "trusted if it is marked reserved in the %s", memory_map_name); fwts_log_nl(fw); if ((memory_map_list = fwts_memory_map_table_load(fw)) == NULL) { /* Not fatal, just means test will be less comprehensive */ fwts_log_warning(fw, "No memory map table found"); } else { fwts_memory_map_table_dump(fw, memory_map_list); fwts_log_nl(fw); } mcfg_size = mcfg_table->length; mcfg_size -= sizeof(fwts_acpi_table_mcfg); if (mcfg_size < 0) { fwts_failed(fw, LOG_LEVEL_HIGH, "MCFGInvalidSize", "Invalid MCFG ACPI table size: got %zd bytes expecting more", mcfg_size + sizeof(fwts_acpi_table_mcfg)); fwts_advice(fw, "MCFG table must be least %zd bytes (header size) with " "multiples of %zd bytes for each MCFG entry.", sizeof(fwts_acpi_table_mcfg), sizeof(fwts_acpi_mcfg_configuration)); return FWTS_ERROR; } nr = mcfg_size / sizeof(fwts_acpi_mcfg_configuration); if (!nr) { fwts_failed(fw, LOG_LEVEL_MEDIUM, "MCFGNoEntries", "No MCFG ACPI table entries"); return FWTS_ERROR; } if (mcfg_size != (ssize_t)(nr * sizeof(fwts_acpi_mcfg_configuration))) { fwts_failed(fw, LOG_LEVEL_HIGH, "MCFGInvalidSize2", "MCFG table is not a multiple of record size"); return FWTS_ERROR; } fwts_log_info(fw, "MCFG table found, size is %zd bytes (excluding header) (%i entries).", mcfg_size, nr); if (mcfg == NULL) { fwts_failed(fw, LOG_LEVEL_HIGH, "MCFGInvalidTable", "Invalid MCFG ACPI table"); return FWTS_ERROR; } if (memory_map_list == NULL) fwts_failed(fw, LOG_LEVEL_MEDIUM, "MMapUnreadable", "Cannot check MCFG MMIO space against memory map table: could not read memory map table."); config = &mcfg->configuration[0]; for (i = 0; i < nr; i++, config++) { fwts_log_info_verbatum(fw, "Configuration Entry #%d:", i); fwts_log_info_verbatum(fw, " Base Address : 0x%" PRIx64, config->base_address); fwts_log_info_verbatum(fw, " Segment : %" PRIu8, config->pci_segment_group_number); fwts_log_info_verbatum(fw, " Start bus : %" PRIu8, config->start_bus_number); fwts_log_info_verbatum(fw, " End bus : %" PRIu8, config->end_bus_number); if ((memory_map_list != NULL) && (!fwts_memory_map_is_reserved(memory_map_list, config->base_address))) { fwts_failed(fw, LOG_LEVEL_LOW, "MCFGMMIONotReserved", "MCFG MMIO config space at 0x%" PRIx64 " is not reserved in the memory map table", config->base_address); fwts_advice(fw, "The PCI Express specification states that the " "PCI Express configuration space should " "be defined in the MCFG table and *maybe* " "optionally defined in the %s if ACPI MCFG is " "present. Linux checks if the region is reserved " "in the memory map table and will reject the " "MMCONFIG if there is a discrepency between MCFG " "and the memory map table for the PCI Express region. " "[See arch/x86/pci/mmconfig-shared.c pci_mmcfg_reject_broken()]. " "It is recommended that this is defined in the " "%s table for Linux.", memory_map_name, memory_map_name); failed = true; } } if (!failed) fwts_passed(fw, "MCFG MMIO config space is reserved in memory map table."); return FWTS_OK; } #define SINGLE_CONFIG_TABLE_SIZE \ (sizeof(fwts_acpi_table_mcfg) + sizeof(fwts_acpi_mcfg_configuration)) static int mcfg_test2(fwts_framework *fw) { fwts_acpi_table_mcfg *mcfg = (fwts_acpi_table_mcfg *)mcfg_table->data; if (mcfg == NULL) { fwts_failed(fw, LOG_LEVEL_HIGH, "MCFGInvalidTable", "Invalid MCFG ACPI table"); return FWTS_ERROR; } /* Need at least one config entry */ if (mcfg_table->length < SINGLE_CONFIG_TABLE_SIZE) { fwts_failed(fw, LOG_LEVEL_MEDIUM, "MCFGNoEntries", "No MCFG ACPI table entries"); return FWTS_ERROR; } return compare_config_space(fw, &mcfg->configuration[0]); } static fwts_framework_minor_test mcfg_tests[] = { { mcfg_test1, "Validate MCFG table." }, { mcfg_test2, "Validate MCFG PCI config space." }, { NULL, NULL } }; static fwts_framework_ops mcfg_ops = { .description = "MCFG PCI Express* memory mapped config space test.", .init = mcfg_init, .deinit = mcfg_deinit, .minor_tests = mcfg_tests }; FWTS_REGISTER("mcfg", &mcfg_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | FWTS_FLAG_ROOT_PRIV); #endif src/acpi/method/000077500000000000000000000000001231470457100140455ustar00rootroot00000000000000src/acpi/method/method.c000066400000000000000000004302221231470457100154740ustar00rootroot00000000000000/* * Copyright (C) 2010-2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #include "fwts.h" #include #include #include #include #include #include #include /* acpica headers */ #include "acpi.h" #include "fwts_acpi_object_eval.h" /* * ACPI methods + objects used in Linux ACPI driver: * * Name APCI Spec. Tested * section * _ACx 11.4.1 Y * _ADR 6.1.1, B.6.1, Y * _AEI 5.6.5.2 Y * _ALC 9.2.5 Y * _ALI 9.2.2 Y * _ALP 9.2.6 Y * _ALR 9.2.5 N * _ALT 9.2.3 Y * _ALx 11.4.2 N * _ART 11.4.3 N * _BBN 6.5.5 Y * _BCL B.6.2 Y * _BCM B.6.3 Y * _BCT 10.2.29 Y * _BDN 6.5.3 Y * _BFS 7.3.1 deprecated * _BIF 10.2.2.1 Y * _BIX 10.2.2.2 Y * _BLT 9.1.3 N not easily tested * _BMA 10.2.2.4 Y * _BMC 10.2.2.11 Y * _BMD 10.2.2.10 Y * _BMS 10.2.2.5 Y * _BQC B.6.4 Y * _BST 10.2.2.6 Y * _BTM 10.2.2.8 Y * _BTP 10.2.2.7 Y * _CBA PCI f/w spec Y * _CDM 6.2.1 Y * _CID 6.1.2 N * _CLS 6.1.3 N requires PCI SIG class info * _CPC 8.4.5 Y * _CRS 6.2.2 Y * _CRT 11.4.4 Y * _CSD 8.4.2.2 Y * _CST 8.4.2.1 Y * _CWS 9.18.6 N not easily tested * _DCK 6.5.2 Y * _DCS B.6.6 Y * _DDC B.6.5 Y * _DDN 6.1.4 Y * _DEP 6.5.8 N * _DGS B.6.7 Y * _DIS 6.2.3 Y * _DLM 5.7.5 N * _DMA 6.2.4 Y * _DOD B.4.2 Y * _DOS B.4.1 Y * _DSM 9.14.1 N * _DSS B.6.8 Y * _DSW 7.2.1 Y * _DTI 11.4.5 N * _Exx 5.6.4.1 n/a * _EC 1.12 n/a * _EDL 6.3.1 Y * _EJD 6.3.2 Y * _EJx 6.3.3 Y * _EVT 5.6.5.3 n/a * _FDE 9.9.1 N (floppy controller, ignore) * _FDI 9.9.2 N (floppy controller, ignore) * _FDM 9.9.3 N (floppy controller, ignore) * _FIF 11.3.1.1 Y * _FIX 6.2.5 Y * _FPS 11.3.1.2 N * _FSL 11.3.1.3 Y * _FST 11.3.1.4 Y * _GAI 10.4.5 Y * _GCP 9.18.2 Y * _GHL 10.4.7 N * _GL 5.7.1 n/a * _GLK 6.5.7 n/a * _GPD B.4.4 Y * _GPE 5.3.1, 12.11 N * _GRT 9.18.3 Y * _GSB 6.2.6 Y * _GTF 9.8.1.1 N * _GTM 9.8.2.1.1 N * _GTS 7.3.3 deprecated * _GWS 9.18.5 Y * _HID 6.1.5 Y * _HOT 11.4.6 Y * _HPP 6.2.7 Y * _HPX 6.2.8 N * _HRV 6.1.6 Y * _IFT IPMI Y * _INI 6.5.1 Y * _IRC 7.2.13 Y * _Lxx 5.6.4.1 n/a * _LCK 6.3.4 Y * _LID 9.4.1 Y * _MAT 6.2.9 N * _MBM 9.12.2.1 N * _MLS 6.1.7 N * _MSG 9.1.2 Y * _MSM 9.12.2.2 N * _NTT 11.4.7 Y * _OFF 7.1.2 Y * _ON_ 7.1.3 Y * _OS 5.7.3 N * _OSC 6.2.10 n/a * _OSI 5.7.2 n/a * _OST 6.3.5 n/a * _PAI 10.4.4 n/a * _PCL 10.3.2 N * _PCT 8.4.4.1 Y * _PDC 8.4.1 N * _PDL 8.4.4.6 Y * _PIC 5.8.1 Y * _PIF 10.3.3 Y * _PLD 6.1.8 Y * _PMC 10.4.1 N * _PMD 10.4.8 N * _PMM 10.4.3 Y * _PPC 8.4.4.3 Y * _PPE 8.4.6 Y * _PR 5.3.1 n/a * _PR0 7.2.8 Y * _PR1 7.2.9 Y * _PR2 7.2.10 Y * _PR3 7.2.11 Y * _PRE 7.2.12 Y * _PRL 10.3.4 N * _PRT 6.2.12 N * _PRS 6.2.11 Y * _PRW 7.2.11 N * _PS0 7.2.2 Y * _PS1 7.2.3 Y * _PS2 7.2.4 Y * _PS3 7.2.5 Y * _PSC 7.2.6 Y * _PSD 8.4.4.5 N * _PSE 7.2.7 Y * _PSL 11.4.8 N * _PSR 10.3.1 Y * _PSS 8.4.4.2 Y * _PSV 11.4.9 Y * _PSW 7.2.12 Y * _PTC 8.4.3.1 N * _PTP 10.4.2 n/a * _PTS 7.3.2 Y * _PUR 8.5.11 N * _PXM 6.2.13 Y * _Qxx 5.6.4.1 n/a * _REG 6.5.4 n/a * _REV 5.7.4 n/a * _RMV 6.3.6 Y * _ROM B.4.3 Y * _RTV 11.4.10 Y * _S0_ 7.3.4.1 Y * _S1_ 7.3.4.2 Y * _S2_ 7.3.4.3 Y * _S3_ 7.3.4.4 Y * _S4_ 7.3.4.5 Y * _S5_ 7.3.4.6 Y * _S1D 7.2.16 Y * _S2D 7.2.17 Y * _S3D 7.2.18 Y * _S4D 7.2.19 Y * _S0W 7.2.20 Y * _S1W 7.2.21 Y * _S2W 7.2.22 Y * _S3W 7.2.23 Y * _S4W 7.2.24 Y * _SB_ 5.3.1 n/a * _SBS 10.1.3 Y * _SCP 11.4.11 Y * _SDD 9.8.3.3.1 n/a * _SEG 6.5.6 Y * _SHL 10.4.5 n/a * _SLI 6.2.14 N * _SPD B.4.5 Y * _SRS 6.2.15 n/a * _SRT 9.18.4 n/a * _SRV IPMI Y * _SST 9.1.1 n/a * _STA 6.3.7, 7.1.4 Y * _STM 9.8.2.1.2 n/a * _STP 9.18.7 Y * _STR 6.1.9 Y * _STV 9.18.8 Y * _SUB 6.1.9 Y * _SUN 6.1.8 Y * _SWS 7.3.5 Y * _T_x 18.2.1.1 n/a * _TC1 11.4.12 Y * _TC2 11.4.13 Y * _TDL 8.4.3.5 Y * _TIP 9.18.9 Y * _TIV 9.18.10 Y * _TMP 11.4.14 Y * _TPC 8.4.3.3 Y * _TPT 11.4.15 Y * _TRT 11.4.16 N * _TSD 8.4.3.4 Y * _TSP 11.4.17 Y * _TSS 8.4.3.2 Y * _TST 11.4.18 Y * _TTS 7.3.6 Y * _TZ_ 5.3.1 n/a * _TZD 11.4.19 N * _TZM 11.4.20 N * _TZP 11.4.21 Y * _UID 6.1.9 Y * _UPC 9.13 N * _UPD 9.16.1 Y * _UPP 9.16.2 Y * _VPO B.4.6 Y * _WAK 7.3.7 Y * _Wxx 5.6.4.2.2 n/a * _WDG WMI N * _WED WMI N */ /* Test types */ #define METHOD_MANDITORY 1 #define METHOD_OPTIONAL 2 #define METHOD_MOBILE 4 #define method_check_type(fw, name, buf, type) \ method_check_type__(fw, name, buf, type, #type) static bool fadt_mobile_platform; /* True if a mobile platform */ #define method_test_integer(name, type) \ static int method_test ## name(fwts_framework *fw) \ { \ return method_evaluate_method(fw, type, # name, \ NULL, 0, method_test_integer_return, # name); \ } typedef void (*method_test_return)(fwts_framework *fw, char *name, ACPI_BUFFER *ret_buff, ACPI_OBJECT *ret_obj, void *private); /* * Helper functions to facilitate the evaluations */ /****************************************************************************/ /* * method_passed_sane() * helper function to report often used passed messages */ static void method_passed_sane( fwts_framework *fw, const char *name, const char *type) { fwts_passed(fw, "%s correctly returned a sane looking %s.", name, type); } /* * method_passed_sane_uint64() * helper function to report often used passed uint64 values */ static void method_passed_sane_uint64( fwts_framework *fw, const char *name, const uint64_t value) { fwts_passed(fw, "%s correctly returned sane looking " "value 0x%8.8" PRIx64 ".", name, value); } /* * method_failed_null_return() * helper function to report often used failed NULL object return */ static void method_failed_null_object( fwts_framework *fw, const char *name, const char *type) { fwts_failed(fw, LOG_LEVEL_MEDIUM, "MethodReturnNullObj", "%s returned a NULL object, and did not " "return %s.", name, type); } /* * method_package_count_min() * check that an ACPI package has at least 'min' elements */ static int method_package_count_min( fwts_framework *fw, const char *name, const char *objname, const ACPI_OBJECT *obj, const uint32_t min) { if (obj->Package.Count < min) { char tmp[128]; snprintf(tmp, sizeof(tmp), "Method_%sElementCount", objname); fwts_failed(fw, LOG_LEVEL_MEDIUM, tmp, "%s should return package of at least %" PRIu32 " element%s, got %" PRIu32 " element%s instead.", name, min, min == 1 ? "" : "s", obj->Package.Count, obj->Package.Count == 1 ? "" : "s"); return FWTS_ERROR; } return FWTS_OK; } /* * method_package_count_equal() * check that an ACPI package has exactly 'count' elements */ static int method_package_count_equal( fwts_framework *fw, const char *name, const char *objname, const ACPI_OBJECT *obj, const uint32_t count) { if (obj->Package.Count != count) { char tmp[128]; snprintf(tmp, sizeof(tmp), "Method_%sElementCount", objname); fwts_failed(fw, LOG_LEVEL_MEDIUM, tmp, "%s should return package of %" PRIu32 " element%s, got %" PRIu32 " element%s instead.", name, count, count == 1 ? "" : "s", obj->Package.Count, obj->Package.Count == 1 ? "" : "s"); return FWTS_ERROR; } return FWTS_OK; } /* * method_init() * initialize ACPI */ static int method_init(fwts_framework *fw) { fwts_acpi_table_info *info; int i; bool got_fadt = false; fadt_mobile_platform = false; /* Some systems have multiple FADTs, sigh */ for (i = 0; i < 256; i++) { int ret = fwts_acpi_find_table(fw, "FACP", i, &info); if (ret == FWTS_NULL_POINTER || info == NULL) break; fwts_acpi_table_fadt *fadt = (fwts_acpi_table_fadt*)info->data; got_fadt = true; if (fadt->preferred_pm_profile == 2) { fadt_mobile_platform = true; break; } } if (got_fadt && !fadt_mobile_platform) { fwts_log_info(fw, "FADT Preferred PM profile indicates this is not " "a Mobile Platform."); } if (fwts_acpi_init(fw) != FWTS_OK) { fwts_log_error(fw, "Cannot initialise ACPI."); return FWTS_ERROR; } return FWTS_OK; } /* * method_deinit * de-intialize ACPI */ static int method_deinit(fwts_framework *fw) { return fwts_acpi_deinit(fw); } /* * method_evaluate_found_method * find a given object name and evaluate it */ static void method_evaluate_found_method( fwts_framework *fw, char *name, method_test_return check_func, void *private, ACPI_OBJECT_LIST *arg_list) { ACPI_BUFFER buf; ACPI_STATUS ret; int sem_acquired; int sem_released; fwts_acpica_sem_count_clear(); ret = fwts_acpi_object_evaluate(fw, name, arg_list, &buf); if (ACPI_FAILURE(ret) != AE_OK) { fwts_acpi_object_evaluate_report_error(fw, name, ret); } else { if (check_func != NULL) { ACPI_OBJECT *obj = buf.Pointer; check_func(fw, name, &buf, obj, private); } } free(buf.Pointer); fwts_acpica_sem_count_get(&sem_acquired, &sem_released); if (sem_acquired != sem_released) { fwts_failed(fw, LOG_LEVEL_MEDIUM, "AMLLocksAcquired", "%s left %d locks in an acquired state.", name, sem_acquired - sem_released); fwts_advice(fw, "Locks left in an acquired state generally indicates " "that the AML code is not releasing a lock. This can " "sometimes occur when a method hits an error " "condition and exits prematurely without releasing an " "acquired lock. It may be occurring in the method " "being tested or other methods used while evaluating " "the method."); } } /* * method_evaluate_method * find all matching object names and evaluate them, * also run the callback check_func to sanity check * any returned values */ static int method_evaluate_method(fwts_framework *fw, int test_type, /* Manditory or optional */ char *name, ACPI_OBJECT *args, int num_args, method_test_return check_func, void *private) { fwts_list_link *item; fwts_list *methods; size_t name_len = strlen(name); bool found = false; if ((methods = fwts_acpi_object_get_names()) != NULL) { fwts_list_foreach(item, methods) { char *method_name = fwts_list_data(char*, item); size_t len = strlen(method_name); if (strncmp(name, method_name + len - name_len, name_len) == 0) { ACPI_OBJECT_LIST arg_list; found = true; arg_list.Count = num_args; arg_list.Pointer = args; method_evaluate_found_method(fw, method_name, check_func, private, &arg_list); } } } if (found) { if ((test_type & METHOD_MOBILE) && (!fadt_mobile_platform)) { fwts_warning(fw, "The FADT indictates that this machine is not " "a mobile platform, however it has a mobile " "platform specific object %s defined. " "Either the FADT referred PM profile is " "incorrect or this machine has mobile " "platform objects defined when it should not.", name); } return FWTS_OK; } else { /* Manditory not-found test are a failure */ if (test_type & METHOD_MANDITORY) { fwts_failed(fw, LOG_LEVEL_MEDIUM, "MethodNotExist", "Object %s did not exist.", name); } /* Mobile specific tests on non-mobile platform? */ if ((test_type & METHOD_MOBILE) && (!fadt_mobile_platform)) { fwts_skipped(fw, "Machine is not a mobile platform, skipping " "test for non-existant mobile platform " "related object %s.", name); } else { fwts_skipped(fw, "Skipping test for non-existant object %s.", name); } return FWTS_NOT_EXIST; } } /* * method_name_check * sanity check object name conforms to ACPI specification */ static int method_name_check(fwts_framework *fw) { fwts_list_link *item; fwts_list *methods; bool failed = false; if ((methods = fwts_acpi_object_get_names()) != NULL) { fwts_log_info(fw, "Found %d Objects\n", methods->len); fwts_list_foreach(item, methods) { char *ptr; for (ptr = fwts_list_data(char *, item); *ptr; ptr++) { if (!((*ptr == '\\') || (*ptr == '.') || (*ptr == '_') || (isdigit(*ptr)) || (isupper(*ptr))) ) { fwts_failed(fw, LOG_LEVEL_HIGH, "MethodIllegalName", "Method %s contains an illegal " "character: '%c'. This should " "be corrected.", fwts_list_data(char *, item), *ptr); failed = true; break; } } } if (!failed) fwts_passed(fw, "Method names contain legal characters."); } return FWTS_OK; } /* * method_check_type__ * check returned object type */ static int method_check_type__( fwts_framework *fw, char *name, ACPI_BUFFER *buf, ACPI_OBJECT_TYPE type, char *type_name) { ACPI_OBJECT *obj; if ((buf == NULL) || (buf->Pointer == NULL)) { method_failed_null_object(fw, name, type_name); return FWTS_ERROR; } obj = buf->Pointer; if (obj->Type != type) { fwts_failed(fw, LOG_LEVEL_MEDIUM, "MethodReturnBadType", "Method %s did not return %s.", name, type_name); return FWTS_ERROR; } return FWTS_OK; } /* * method_test_buffer_return * check if a buffer object was returned */ static void method_test_buffer_return( fwts_framework *fw, char *name, ACPI_BUFFER *buf, ACPI_OBJECT *obj, void *private) { FWTS_UNUSED(private); if (method_check_type(fw, name, buf, ACPI_TYPE_BUFFER) == FWTS_OK) fwts_passed(fw, "%s correctly returned a buffer of %" PRIu32 " elements.", name, obj->Buffer.Length); } /* * method_test_integer_return * check if an integer object was returned */ static void method_test_integer_return( fwts_framework *fw, char *name, ACPI_BUFFER *buf, ACPI_OBJECT *obj, void *private) { FWTS_UNUSED(obj); FWTS_UNUSED(private); if (method_check_type(fw, name, buf, ACPI_TYPE_INTEGER) == FWTS_OK) fwts_passed(fw, "%s correctly returned an integer.", name); } /* * method_test_string_return * check if an string object was returned */ static void method_test_string_return( fwts_framework *fw, char *name, ACPI_BUFFER *buf, ACPI_OBJECT *obj, void *private) { FWTS_UNUSED(obj); FWTS_UNUSED(private); if (method_check_type(fw, name, buf, ACPI_TYPE_STRING) == FWTS_OK) fwts_passed(fw, "%s correctly returned a string.", name); } /* * method_test_NULL_return * check if no object was retuned */ static void method_test_NULL_return( fwts_framework *fw, char *name, ACPI_BUFFER *buf, ACPI_OBJECT *obj, void *private) { FWTS_UNUSED(private); /* * In ACPICA SLACK mode null returns can be actually * forced to return ACPI integers. Blame an errata * and Windows compatibility for this mess. */ if (fw->acpica_mode & FWTS_ACPICA_MODE_SLACK) { if ((buf != NULL) && (buf->Pointer != NULL)) { ACPI_OBJECT *obj = buf->Pointer; if (obj->Type == ACPI_TYPE_INTEGER) { fwts_passed(fw, "%s returned an ACPI_TYPE_INTEGER as expected in slack mode.", name); return; } } } if (buf && buf->Length && buf->Pointer) { fwts_failed(fw, LOG_LEVEL_MEDIUM, "MethodShouldReturnNothing", "%s returned values, but was expected to return nothing.", name); fwts_log_info(fw, "Object returned:"); fwts_acpi_object_dump(fw, obj); fwts_advice(fw, "This probably won't cause any errors, but it should " "be fixed as the AML code is not conforming to the " "expected behaviour as described in the ACPI " "specification."); } else fwts_passed(fw, "%s returned no values as expected.", name); } /* * method_test_passed_failed_return * check if 0 or 1 (false/true) integer is returned */ static void method_test_passed_failed_return( fwts_framework *fw, char *name, ACPI_BUFFER *buf, ACPI_OBJECT *obj, void *private) { char *method = (char *)private; if (method_check_type(fw, name, buf, ACPI_TYPE_INTEGER) == FWTS_OK) { uint32_t val = (uint32_t)obj->Integer.Value; if ((val == 0) || (val == 1)) method_passed_sane_uint64(fw, name, obj->Integer.Value); else { fwts_failed(fw, LOG_LEVEL_MEDIUM, "MethodReturnZeroOrOne", "%s returned 0x%8.8" PRIx32 ", should return 1 " "(success) or 0 (failed).", method, val); fwts_advice(fw, "Method %s should be returning the correct " "1/0 success/failed return values. " "Unexpected behaviour may occur becauses of " "this error, the AML code does not conform to " "the ACPI specification and should be fixed.", method); } } } /* * method_test_polling_return * check if a returned polling time is valid */ static void method_test_polling_return( fwts_framework *fw, char *name, ACPI_BUFFER *buf, ACPI_OBJECT *obj, void *private) { if (method_check_type(fw, name, buf, ACPI_TYPE_INTEGER) == FWTS_OK) { char *method = (char *)private; if (obj->Integer.Value < 36000) { fwts_passed(fw, "%s correctly returned sane looking value " "%f seconds", method, (float)obj->Integer.Value / 10.0); } else { fwts_failed(fw, LOG_LEVEL_MEDIUM, "MethodPollTimeTooLong", "%s returned a value %f seconds > (1 hour) " "which is probably incorrect.", method, (float)obj->Integer.Value / 10.0); fwts_advice(fw, "The method is returning a polling interval " "which is very long and hence most probably " "incorrect."); } } } #define ACPI_TYPE_INTBUF (ACPI_TYPE_INVALID + 1) /* * Common types that can be returned. This is not a complete * list but it does cover the types we expect to return from * an ACPI evaluation. */ static const char *method_type_name(const ACPI_OBJECT_TYPE type) { switch (type) { case ACPI_TYPE_INTEGER: return "integer"; case ACPI_TYPE_STRING: return "string"; case ACPI_TYPE_BUFFER: return "buffer"; case ACPI_TYPE_PACKAGE: return "package"; case ACPI_TYPE_BUFFER_FIELD: return "buffer_field"; case ACPI_TYPE_LOCAL_REFERENCE: return "reference"; case ACPI_TYPE_INTBUF: return "integer or buffer"; default: return "unknown"; } } /* * method_package_elements_all_type() * sanity check fields in a package that all have * the same type */ static int method_package_elements_all_type( fwts_framework *fw, const char *name, const char *objname, const ACPI_OBJECT *obj, const ACPI_OBJECT_TYPE type) { uint32_t i; bool failed = false; char tmp[128]; for (i = 0; i < obj->Package.Count; i++) { if (obj->Package.Elements[i].Type != type) { snprintf(tmp, sizeof(tmp), "Method%sElementType", objname); fwts_failed(fw, LOG_LEVEL_MEDIUM, tmp, "%s package element %" PRIu32 " was not the expected " "type '%s', was instead type '%s'.", name, i, method_type_name(type), method_type_name(obj->Package.Elements[i].Type)); failed = true; } } return failed ? FWTS_ERROR: FWTS_OK; } typedef struct { ACPI_OBJECT_TYPE type; /* Type */ const char *name; /* Field name */ } fwts_package_element; /* * method_package_elements_type() * sanity check fields in a package that all have * the same type */ static int method_package_elements_type( fwts_framework *fw, const char *name, const char *objname, const ACPI_OBJECT *obj, const fwts_package_element *info, const uint32_t count) { uint32_t i; bool failed = false; char tmp[128]; if (obj->Package.Count != count) return FWTS_ERROR; for (i = 0; i < obj->Package.Count; i++) { if (obj->Package.Elements[i].Type != info[i].type) { snprintf(tmp, sizeof(tmp), "Method%sElementType", objname); fwts_failed(fw, LOG_LEVEL_MEDIUM, tmp, "%s package element %" PRIu32 " (%s) was not the expected " "type '%s', was instead type '%s'.", name, i, info[i].name, method_type_name(info[i].type), method_type_name(obj->Package.Elements[i].Type)); failed = true; } } return failed ? FWTS_ERROR: FWTS_OK; } /****************************************************************************/ /* * Section 5.6 ACPI Event Programming Model */ static int method_test_AEI(fwts_framework *fw) { return method_evaluate_method(fw, METHOD_OPTIONAL, "_AEI", NULL, 0, method_test_buffer_return, NULL); } /* * Section 5.8 System Configuration Objects */ static int method_test_PIC(fwts_framework *fw) { ACPI_OBJECT arg[1]; int i, ret; arg[0].Type = ACPI_TYPE_INTEGER; for (i = 0; i < 3; i++) { arg[0].Integer.Value = i; ret = method_evaluate_method(fw, METHOD_OPTIONAL, "_PIC", arg, 1, method_test_NULL_return, NULL); if (ret != FWTS_OK) break; } return ret; } /* * Section 6.1 Device Identification Objects */ static int method_test_DDN(fwts_framework *fw) { return method_evaluate_method(fw, METHOD_OPTIONAL, "_DDN", NULL, 0, method_test_string_return, NULL); } static bool method_valid_HID_string(char *str) { if (strlen(str) == 7) { /* PNP ID, must be 3 capitals followed by 4 hex */ if (!isupper(str[0]) || !isupper(str[1]) || !isupper(str[2])) return false; if (!isxdigit(str[3]) || !isxdigit(str[4]) || !isxdigit(str[5]) || !isxdigit(str[6])) return false; return true; } if (strlen(str) == 8) { /* ACPI ID, must be 4 capitals or digits followed by 4 hex */ if ((!isupper(str[0]) && !isdigit(str[0])) || (!isupper(str[1]) && !isdigit(str[1])) || (!isupper(str[2]) && !isdigit(str[2])) || (!isupper(str[3]) && !isdigit(str[3]))) return false; if (!isxdigit(str[4]) || !isxdigit(str[5]) || !isxdigit(str[6]) || !isxdigit(str[7])) return false; return true; } return false; } static bool method_valid_EISA_ID(uint32_t id, char *buf, size_t buf_len) { snprintf(buf, buf_len, "%c%c%c%02" PRIX32 "%02" PRIX32, 0x40 + ((id >> 2) & 0x1f), 0x40 + ((id & 0x3) << 3) + ((id >> 13) & 0x7), 0x40 + ((id >> 8) & 0x1f), (id >> 16) & 0xff, (id >> 24) & 0xff); /* 3 chars in EISA ID must be upper case */ if (!isupper(buf[0]) || !isupper(buf[1]) || !isupper(buf[2])) return false; /* Last 4 digits are always going to be hex, so pass */ return true; } static void method_test_HID_return( fwts_framework *fw, char *name, ACPI_BUFFER *buf, ACPI_OBJECT *obj, void *private) { char tmp[8]; FWTS_UNUSED(buf); FWTS_UNUSED(private); if (obj == NULL) { method_failed_null_object(fw, name, "a buffer or integer"); return; } switch (obj->Type) { case ACPI_TYPE_STRING: if (obj->String.Pointer) { if (method_valid_HID_string(obj->String.Pointer)) fwts_passed(fw, "%s returned a string '%s' " "as expected.", name, obj->String.Pointer); else fwts_failed(fw, LOG_LEVEL_MEDIUM, "MethodHIDInvalidString", "%s returned a string '%s' " "but it was not a valid PNP ID or a " "valid ACPI ID.", name, obj->String.Pointer); } else { fwts_failed(fw, LOG_LEVEL_MEDIUM, "Method_HIDNullString", "%s returned a NULL string.", name); } break; case ACPI_TYPE_INTEGER: if (method_valid_EISA_ID((uint32_t)obj->Integer.Value, tmp, sizeof(tmp))) fwts_passed(fw, "%s returned an integer " "0x%8.8" PRIx64 " (EISA ID %s).", name, (uint64_t)obj->Integer.Value, tmp); else fwts_failed(fw, LOG_LEVEL_MEDIUM, "MethodHIDInvalidInteger", "%s returned a integer 0x%8.8" PRIx64 " " "(EISA ID %s) but the this is not a valid " "EISA ID encoded PNP ID.", name, (uint64_t)obj->Integer.Value, tmp); break; default: fwts_failed(fw, LOG_LEVEL_MEDIUM, "Method_HIDBadReturnType", "%s did not return a string or an integer.", name); break; } } static int method_test_HID(fwts_framework *fw) { return method_evaluate_method(fw, METHOD_OPTIONAL, "_HID", NULL, 0, method_test_HID_return, NULL); } static int method_test_CID(fwts_framework *fw) { return method_evaluate_method(fw, METHOD_OPTIONAL, "_CID", NULL, 0, method_test_HID_return, NULL); } static int method_test_HRV(fwts_framework *fw) { return method_evaluate_method(fw, METHOD_OPTIONAL, "_HRV", NULL, 0, method_test_integer_return, NULL); } static int method_test_STR(fwts_framework *fw) { return method_evaluate_method(fw, METHOD_OPTIONAL, "_STR", NULL, 0, method_test_string_return, NULL); } static void method_test_PLD_return( fwts_framework *fw, char *name, ACPI_BUFFER *buf, ACPI_OBJECT *obj, void *private) { FWTS_UNUSED(private); if (method_check_type(fw, name, buf, ACPI_TYPE_PACKAGE) != FWTS_OK) return; /* All elements in the package must be buffers */ if (method_package_elements_all_type(fw, name, "_PLD", obj, ACPI_TYPE_BUFFER) != FWTS_OK) return; method_passed_sane(fw, name, "package"); } static int method_test_PLD(fwts_framework *fw) { return method_evaluate_method(fw, METHOD_OPTIONAL, "_PLD", NULL, 0, method_test_PLD_return, NULL); } static void method_test_SUB_return( fwts_framework *fw, char *name, ACPI_BUFFER *buf, ACPI_OBJECT *obj, void *private) { FWTS_UNUSED(buf); FWTS_UNUSED(private); if (obj == NULL) { method_failed_null_object(fw, name, "a buffer or integer"); return; } if (obj->Type == ACPI_TYPE_STRING) if (obj->String.Pointer) { if (method_valid_HID_string(obj->String.Pointer)) fwts_passed(fw, "%s returned a string '%s' " "as expected.", name, obj->String.Pointer); else fwts_failed(fw, LOG_LEVEL_MEDIUM, "MethodSUBInvalidString", "%s returned a string '%s' " "but it was not a valid PNP ID or a " "valid ACPI ID.", name, obj->String.Pointer); } else { fwts_failed(fw, LOG_LEVEL_MEDIUM, "Method_SUBNullString", "%s returned a NULL string.", name); } else { fwts_failed(fw, LOG_LEVEL_MEDIUM, "Method_UIDBadReturnType", "Method _SUB did not return a string or an integer."); } } static int method_test_SUB(fwts_framework *fw) { return method_evaluate_method(fw, METHOD_OPTIONAL, "_SUB", NULL, 0, method_test_SUB_return, NULL); } static int method_test_SUN(fwts_framework *fw) { return method_evaluate_method(fw, METHOD_OPTIONAL, "_SUN", NULL, 0, method_test_integer_return, NULL); } static void method_test_UID_return( fwts_framework *fw, char *name, ACPI_BUFFER *buf, ACPI_OBJECT *obj, void *private) { FWTS_UNUSED(buf); FWTS_UNUSED(private); if (obj == NULL) { method_failed_null_object(fw, name, "a buffer or integer"); return; } switch (obj->Type) { case ACPI_TYPE_STRING: if (obj->String.Pointer) fwts_passed(fw, "%s returned a string '%s' as expected.", name, obj->String.Pointer); else fwts_failed(fw, LOG_LEVEL_MEDIUM, "Method_UIDNullString", "%s returned a NULL string.", name); break; case ACPI_TYPE_INTEGER: method_passed_sane_uint64(fw, name, obj->Integer.Value); break; default: fwts_failed(fw, LOG_LEVEL_MEDIUM, "Method_UIDBadReturnType", "Method %s did not return a string or an integer.", name); break; } } static int method_test_UID(fwts_framework *fw) { return method_evaluate_method(fw, METHOD_OPTIONAL, "_UID", NULL, 0, method_test_UID_return, NULL); } /* * Section 6.2 Device Configurations Objects */ static void method_test_CRS_size( fwts_framework *fw, const char *name, /* full _CRS or _PRS path name */ const char *objname, /* name of _CRS or _PRS object */ const char *tag, /* error log tag */ const size_t crs_length, /* size of _CRS buffer */ const size_t hdr_length, /* size of _CRS header */ const size_t data_length, /* length of _CRS data w/o header */ const size_t min, /* minimum allowed _CRS data size */ const size_t max, /* maximum allowed _CRS data size */ bool *passed) /* pass/fail flag */ { if (crs_length < data_length + hdr_length) { fwts_failed(fw, LOG_LEVEL_HIGH, tag, "%s Resource size is %zd bytes long but " "the size stated in the %s buffer header " "is %zd and hence is longer. The resource " "buffer is too short.", name, crs_length, objname, data_length); *passed = false; return; } if ((data_length < min) || (data_length > max)) { if (min != max) { fwts_failed(fw, LOG_LEVEL_MEDIUM, tag, "%s Resource data size was %zd bytes long, " "expected it to be between %zd and %zd bytes", name, data_length, min, max); *passed = false; } else { fwts_failed(fw, LOG_LEVEL_MEDIUM, tag, "%s Resource data size was %zd bytes long, " "expected it to be %zd bytes", name, data_length, min); *passed = false; } } } static void method_test_CRS_small_size( fwts_framework *fw, const char *name, const char *objname, const uint8_t *data, const size_t crs_length, const size_t min, const size_t max, bool *passed) { size_t data_length = data[0] & 7; char tmp[128]; snprintf(tmp, sizeof(tmp), "Method%sSmallResourceSize", objname); method_test_CRS_size(fw, name, objname, tmp, crs_length, 1, data_length, min, max, passed); } /* * CRS small resource checks, simple checking */ static void method_test_CRS_small_resource_items( fwts_framework *fw, const char *name, const char *objname, const uint8_t *data, const size_t length, bool *passed, const char **tag) { uint8_t tag_item = (data[0] >> 3) & 0xf; char tmp[128]; static const char *types[] = { "Reserved", "Reserved", "Reserved", "Reserved", "IRQ Descriptor", "DMA Descriptor", "Start Dependent Functions Descriptor", "End Dependent Functions Descriptor", "I/O Port Descriptor", "Fixed Location I/O Port Descriptor", "Fixed DMA Descriptor", "Reserved", "Reserved", "Reserved", "Vendor Defined Descriptor", "End Tag Descriptor" }; switch (tag_item) { case 0x4: /* 6.4.2.1 IRQ Descriptor */ method_test_CRS_small_size(fw, name, objname, data, length, 2, 3, passed); break; case 0x5: /* 6.4.2.2 DMA Descriptor */ method_test_CRS_small_size(fw, name, objname, data, length, 2, 2, passed); if (!*passed) /* Too short, abort */ break; if ((data[2] & 3) == 3) { snprintf(tmp, sizeof(tmp), "Method%sDmaDescriptor", objname); fwts_failed(fw, LOG_LEVEL_HIGH, tmp, "%s DMA transfer type preference is 0x%" PRIx8 " which is reserved and invalid. See " "Section 6.4.2.2 of the ACPI specification.", name, data[2] & 3); *passed = false; } break; case 0x6: /* 6.4.2.3 Start Dependent Functions Descriptor */ method_test_CRS_small_size(fw, name, objname, data, length, 0, 1, passed); break; case 0x7: /* 6.4.2.4 End Dependent Functions Descriptor */ method_test_CRS_small_size(fw, name, objname, data, length, 0, 0, passed); break; case 0x8: /* 6.4.2.5 I/O Port Descriptor */ method_test_CRS_small_size(fw, name, objname, data, length, 7, 7, passed); if (!*passed) /* Too short, abort */ break; if (data[1] & 0xfe) { snprintf(tmp, sizeof(tmp), "Method%sIoPortInfoReservedNonZero", objname); fwts_failed(fw, LOG_LEVEL_LOW, tmp, "%s I/O Port Descriptor Information field " "has reserved bits that are non-zero, got " "0x%" PRIx8 " and expected 0 or 1 for this " "field. ", name, data[1]); *passed = false; } if (((data[1] & 1) == 0) && (data[3] > 3)) { snprintf(tmp, sizeof(tmp), "Method%sIoPortInfoMinBase10BitAddr", objname); fwts_failed(fw, LOG_LEVEL_LOW, tmp, "%s I/O Port Descriptor range minimum " "base address is more than 10 bits however " "the Information field indicates that only " "a 10 bit address is being used.", name); *passed = false; } if (((data[1] & 1) == 0) && (data[5] > 3)) { snprintf(tmp, sizeof(tmp), "Method%sIoPortInfoMaxBase10BitAddr", objname); fwts_failed(fw, LOG_LEVEL_LOW, tmp, "%s I/O Port Descriptor range maximum " "base address is more than 10 bits however " "the Information field indicates that only " "a 10 bit address is being used.", name); *passed = false; } break; case 0x9: /* 6.4.2.6 Fixed Location I/O Port Descriptor */ method_test_CRS_small_size(fw, name, objname, data, length, 3, 3, passed); break; case 0xa: /* 6.4.2.7 Fixed DMA Descriptor */ method_test_CRS_small_size(fw, name, objname, data, length, 5, 5, passed); if (!*passed) /* Too short, abort */ break; if (data[5] > 5) { snprintf(tmp, sizeof(tmp), "Method%sFixedDmaTransferWidth", objname); fwts_failed(fw, LOG_LEVEL_HIGH, tmp, "%s DMA transfer width is 0x%" PRIx8 " which is reserved and invalid. See " "Section 6.4.2.7 of the ACPI specification.", name, data[5]); *passed = false; } break; case 0xe: /* 6.4.2.8 Vendor-Defined Descriptor */ method_test_CRS_small_size(fw, name, objname, data, length, 1, 7, passed); break; case 0xf: /* 6.4.2.9 End Tag */ method_test_CRS_small_size(fw, name, objname, data, length, 1, 1, passed); break; default: snprintf(tmp, sizeof(tmp), "Method%sUnkownSmallResourceItem", objname); fwts_failed(fw, LOG_LEVEL_LOW, tmp, "%s tag bits 6:3 is an undefined " "small tag item name, value 0x%" PRIx8 ".", name, tag_item); fwts_advice(fw, "A small resource data type tag (byte 0, " "bits 6:3 of the %s buffer) contains " "an undefined small tag item 'name'. " "The %s buffer is therefore undefined " "and can't be used. See section " "'6.4.2 Small Resource Data Type' of the ACPI " "specification, and also table 6-161.", objname, objname); *passed = false; break; } *tag = types[tag_item]; } static void method_test_CRS_large_size( fwts_framework *fw, const char *name, const char *objname, const uint8_t *data, const size_t crs_length, const size_t min, const size_t max, bool *passed) { size_t data_length; char tmp[128]; /* Small _CRS resources have a 3 byte header */ if (crs_length < 3) { snprintf(tmp, sizeof(tmp), "Method%sBufferTooSmall", objname); fwts_failed(fw, LOG_LEVEL_MEDIUM, tmp, "%s should return a buffer of at least three bytes in length.", name); *passed = false; return; } data_length = (size_t)data[1] + ((size_t)data[2] << 8); snprintf(tmp, sizeof(tmp), "Method%sLargeResourceSize",objname); method_test_CRS_size(fw, name, objname, tmp, crs_length, 3, data_length, min, max, passed); } /* * Some CRS value fetching helper functions. We handle all the * addresses and lengths in 64 bits to make life easier */ static uint64_t method_CRS_val64(const uint8_t *data) { uint64_t val = ((uint64_t)data[7] << 56) | ((uint64_t)data[6] << 48) | ((uint64_t)data[5] << 40) | ((uint64_t)data[0] << 32) | ((uint64_t)data[3] << 24) | ((uint64_t)data[2] << 16) | ((uint64_t)data[1] << 8) | (uint64_t)data[0]; return val; } static uint64_t method_CRS_val32(const uint8_t *data) { uint64_t val = ((uint64_t)data[3] << 24) | ((uint64_t)data[2] << 16) | ((uint64_t)data[1] << 8) | (uint64_t)data[0]; return val; } static uint64_t method_CRS_val24(const uint8_t *data) { /* 24 bit values assume lower 8 bits are zero */ uint64_t val = ((uint64_t)data[1] << 16) | ((uint64_t)data[0] << 8); return val; } static uint64_t method_CRS_val16(const uint8_t *data) { uint64_t val = ((uint64_t)data[1] << 8) | (uint64_t)data[0]; return val; } /* * Sanity check addresses according to table 6-179 of ACPI spec */ static void method_test_CRS_mif_maf( fwts_framework *fw, const char *name, /* Full _CRS or _PRS path name */ const char *objname, /* _CRS or _PRS name */ const uint8_t flag, /* _MIF _MAF flag field */ const uint64_t min, /* Min address */ const uint64_t max, /* Max address */ const uint64_t len, /* Range length */ const uint64_t granularity, /* Address granularity */ const char *tag, /* failed error tag */ const char *type, /* Resource type */ bool *passed) { char tmp[128]; uint8_t mif = (flag >> 2) & 1; uint8_t maf = (flag >> 3) & 1; static char *mif_maf_advice = "See section '6.4.3.5 Address Space Resource Descriptors' " "table 6-179 of the ACPI specification for more details " "about how the _MIF, _MAF and memory range and granularity " "rules apply. Typically the kernel does not care about these " "being correct, so this is a minor issue."; /* Table 6-179 Valid combination of Address Space Descriptors fields */ if (len == 0) { if ((mif == 1) && (maf == 1)) { snprintf(tmp, sizeof(tmp), "Method%s%sMifMafBothOne", objname, tag); fwts_failed(fw, LOG_LEVEL_MEDIUM, tmp, "%s %s _MIF and _MAF flags are both " "set to one which is invalid when " "the length field is 0.", name, type); fwts_advice(fw, "%s", mif_maf_advice); *passed = false; } if ((mif == 1) && (min % (granularity + 1) != 0)) { snprintf(tmp, sizeof(tmp), "Method%s%sMinNotMultipleOfGran", objname, tag); fwts_failed(fw, LOG_LEVEL_MEDIUM, tmp, "%s %s _MIN address is not a multiple " "of the granularity when _MIF is 1.", name, type); fwts_advice(fw, "%s", mif_maf_advice); *passed = false; } if ((maf == 1) && (max % (granularity - 1) != 0)) { snprintf(tmp, sizeof(tmp), "Method%s%sMaxNotMultipleOfGran", objname, tag); fwts_failed(fw, LOG_LEVEL_MEDIUM, tmp, "%s %s _MAX address is not a multiple " "of the granularity when _MAF is 1.", name, type); fwts_advice(fw, "%s", mif_maf_advice); *passed = false; } } else { if ((mif == 0) && (maf == 0) && (len % (granularity + 1) != 0)) { snprintf(tmp, sizeof(tmp), "Method%s%sLenNotMultipleOfGran", objname, tag); fwts_failed(fw, LOG_LEVEL_MEDIUM, tmp, "%s %s length is not a multiple " "of the granularity when _MIF " "and _MIF are 0.", name, type); fwts_advice(fw, "%s", mif_maf_advice); *passed = false; } if (((mif == 0) && (maf == 1)) || ((mif == 1) && (maf == 0))) { snprintf(tmp, sizeof(tmp), "Method%s%sMifMafInvalid", objname, tag); fwts_failed(fw, LOG_LEVEL_MEDIUM, tmp, "%s %s _MIF and _MAF flags are either " "0 and 1 or 1 and 0 which is invalid when " "the length field is non-zero.", name, type); fwts_advice(fw, "%s", mif_maf_advice); *passed = false; } if ((mif == 1) && (maf == 1)) { if (granularity != 0) { snprintf(tmp, sizeof(tmp), "Method%s%sGranularityNotZero", objname, tag); fwts_failed(fw, LOG_LEVEL_MEDIUM, tmp, "%s %s granularity 0x%" PRIx64 " is not zero as expected when " "_MIF and _MAF are both 1.", name, type, granularity); fwts_advice(fw, "%s", mif_maf_advice); *passed = false; } if (min > max) { snprintf(tmp, sizeof(tmp), "Method%s%sMaxLessThanMin", objname, tag); fwts_failed(fw, LOG_LEVEL_MEDIUM, tmp, "%s %s minimum address range 0x%" PRIx64 " is greater than the maximum address " "range 0x%" PRIx64 ".", name, type, min, max); fwts_advice(fw, "%s", mif_maf_advice); *passed = false; } if (max - min + 1 != len) { snprintf(tmp, sizeof(tmp), "Method%s%sLengthInvalid", objname, tag); fwts_failed(fw, LOG_LEVEL_MEDIUM, tmp, "%s %s length 0x%" PRIx64 " does not match the difference between " "the minimum and maximum address ranges " "0x%" PRIx64 "-0x%" PRIx64 ".", name, type, len, min, max); fwts_advice(fw, "%s", mif_maf_advice); *passed = false; } } } } /* * CRS large resource checks, simple checking */ static void method_test_CRS_large_resource_items( fwts_framework *fw, const char *name, const char *objname, const uint8_t *data, const uint64_t length, bool *passed, const char **tag) { uint64_t min, max, len, gra; uint8_t tag_item = data[0] & 0x7f; char tmp[128]; static const char *types[] = { "Reserved", "24-bit Memory Range Descriptor", "Generic Register Descriptor", "Reserved", "Vendor Defined Descriptor", "32-bit Memory Range Descriptor", "32-bit Fixed Location Memory Range Descriptor", "DWORD Address Space Descriptor", "WORD Address Space Descriptor", "Extended IRQ Descriptor", "QWORD Address Space Descriptor", "Extended Addresss Space Descriptor", "GPIO Connection Descriptor", "Reserved", "Generic Serial Bus Connection Descriptor", "Reserved", }; switch (tag_item) { case 0x1: /* 6.4.3.1 24-Bit Memory Range Descriptor */ method_test_CRS_large_size(fw, name, objname, data, length, 9, 9, passed); if (!*passed) /* Too short, abort */ break; min = method_CRS_val24(&data[4]); max = method_CRS_val24(&data[6]); len = method_CRS_val16(&data[10]); if (max < min) { snprintf(tmp, sizeof(tmp), "Method%s24BitMemRangeMaxLessThanMin", objname); fwts_failed(fw, LOG_LEVEL_MEDIUM, tmp, "%s 24-Bit Memory Range Descriptor minimum " "address range 0x%" PRIx64 " is greater than " "the maximum address range 0x%" PRIx64 ".", name, min, max); *passed = false; } if (len > max + 1 - min) { snprintf(tmp, sizeof(tmp), "Method%s24BitMemRangeLengthTooLarge", objname); fwts_failed(fw, LOG_LEVEL_MEDIUM, tmp, "%s 24-Bit Memory Range Descriptor length " "0x%" PRIx64 " is greater than size between the " "the minimum and maximum address ranges " "0x%" PRIx64 "-0x%" PRIx64 ".", name, len, min, max); *passed = false; } break; case 0x2: /* 6.4.3.7 Generic Register Descriptor */ method_test_CRS_large_size(fw, name, objname, data, length, 12, 12, passed); if (!*passed) break; switch (data[3]) { case 0x00 ... 0x04: case 0x0a: case 0x7f: /* Valid values */ break; default: snprintf(tmp, sizeof(tmp), "Method%sGenericRegAddrSpaceIdInvalid", objname); fwts_failed(fw, LOG_LEVEL_HIGH, tmp, "%s Generic Register Descriptor has an invalid " "Address Space ID 0x%" PRIx8 ".", name, data[3]); *passed = false; } if (data[6] > 4) { snprintf(tmp, sizeof(tmp), "Method%sGenericRegAddrSizeInvalid", objname); fwts_failed(fw, LOG_LEVEL_HIGH, tmp, "%s Generic Register Descriptor has an invalid " "Address Access Size 0x%" PRIx8 ".", name, data[6]); *passed = false; } break; case 0x4: /* 6.4.3.2 Vendor-Defined Descriptor */ method_test_CRS_large_size(fw, name, objname, data, length, 0, 65535, passed); break; case 0x5: /* 6.4.3.3 32-Bit Memory Range Descriptor */ method_test_CRS_large_size(fw, name, objname, data, length, 17, 17, passed); if (!*passed) break; min = method_CRS_val32(&data[4]); max = method_CRS_val32(&data[8]); len = method_CRS_val32(&data[16]); if (max < min) { snprintf(tmp, sizeof(tmp), "Method%s32BitMemRangeMaxLessThanMin", objname); fwts_failed(fw, LOG_LEVEL_MEDIUM, tmp, "%s 32-Bit Memory Range Descriptor minimum " "address range 0x%" PRIx64 " is greater than " "the maximum address range 0x%" PRIx64 ".", name, min, max); *passed = false; } if (len > max + 1 - min) { snprintf(tmp, sizeof(tmp), "Method%s32BitMemRangeLengthTooLarge", objname); fwts_failed(fw, LOG_LEVEL_MEDIUM, tmp, "%s 32-Bit Memory Range Descriptor length " "0x%" PRIx64 " is greater than size between the " "the minimum and maximum address ranges " "0x%" PRIx64 "-0x%" PRIx64 ".", name, len, min, max); *passed = false; } break; case 0x6: /* 6.4.3.4 32-Bit Fixed Memory Range Descriptor */ method_test_CRS_large_size(fw, name, objname, data, length, 9, 9, passed); /* Not much can be checked for this descriptor */ break; case 0x7: /* 6.4.3.5.2 DWord Address Space Descriptor */ method_test_CRS_large_size(fw, name, objname, data, length, 23, 65535, passed); if (!*passed) /* Too short, abort */ break; gra = method_CRS_val32(&data[6]); min = method_CRS_val32(&data[10]); max = method_CRS_val32(&data[14]); len = method_CRS_val32(&data[22]); method_test_CRS_mif_maf(fw, name, objname, data[4], min, max, len, gra, "64BitDWordAddrSpace", types[0x7], passed); break; case 0x8: /* 6.4.3.5.3 Word Address Space Descriptor */ method_test_CRS_large_size(fw, name, objname, data, length, 13, 65535, passed); if (!*passed) /* Too short, abort */ break; gra = method_CRS_val16(&data[6]); min = method_CRS_val16(&data[8]); max = method_CRS_val16(&data[10]); len = method_CRS_val16(&data[14]); method_test_CRS_mif_maf(fw, name, objname, data[4], min, max, len, gra, "64BitWordAddrSpace", types[0x8], passed); break; case 0x9: /* 6.4.3.6 Extended Interrupt Descriptor */ method_test_CRS_large_size(fw, name, objname, data, length, 6, 65535, passed); /* Not much can be checked for this descriptor */ break; case 0xa: /* 6.4.3.5.1 QWord Address Space Descriptor */ method_test_CRS_large_size(fw, name, objname, data, length, 43, 65535, passed); if (!*passed) /* Too short, abort */ break; gra = method_CRS_val64(&data[6]); min = method_CRS_val64(&data[14]); max = method_CRS_val64(&data[22]); len = method_CRS_val64(&data[38]); method_test_CRS_mif_maf(fw, name, objname, data[4], min, max, len, gra, "64BitQWordAddrSpace", types[0xa], passed); break; case 0xb: /* 6.4.3.5.4 Extended Address Space Descriptor */ method_test_CRS_large_size(fw, name, objname, data, length, 53, 53, passed); if (!*passed) /* Too short, abort */ break; gra = method_CRS_val64(&data[8]); min = method_CRS_val64(&data[16]); max = method_CRS_val64(&data[24]); len = method_CRS_val64(&data[40]); method_test_CRS_mif_maf(fw, name, objname, data[4], min, max, len, gra, "64BitExtAddrSpace", types[0xb], passed); break; case 0xc: /* 6.4.3.8.1 GPIO Connection Descriptor */ method_test_CRS_large_size(fw, name, objname, data, length, 22, 65535, passed); if (!*passed) /* Too short, abort */ break; if (data[4] > 2) { snprintf(tmp, sizeof(tmp), "Method%sGpioConnTypeInvalid", objname); fwts_failed(fw, LOG_LEVEL_MEDIUM, tmp, "%s GPIO Connection Descriptor has an invalid " "Connection Type 0x%" PRIx8 ".", name, data[2]); *passed = false; fwts_advice(fw, "The GPIO pin connection type is " "not recognised. It should be either " "0x00 (interrupt connection) or " "0x01 (I/O connection). See table " "6-189 in section 6.4.3.8.1 of the ACPI " "specification."); } if ((data[9] > 0x03) && (data[9] < 0x80)) { snprintf(tmp, sizeof(tmp), "Method%sGpioConnTypeInvalid", objname); fwts_failed(fw, LOG_LEVEL_LOW, tmp, "%s GPIO Connection Descriptor has an invalid " "Pin Configuration Type 0x%" PRIx8 ".", name, data[9]); *passed = false; fwts_advice(fw, "The GPIO pin configuration type " "is not recognised. It should be one of:" "0x00 (default), 0x01 (pull-up), " "0x02 (pull-down), 0x03 (no-pull), " "0x80-0xff (vendor defined). See table " "6-189 in section 6.4.3.8.1 of the ACPI " "specification."); } break; case 0xe: /* 6.4.3.8.2 Serial Bus Connection Descriptors */ method_test_CRS_large_size(fw, name, objname, data, length, 11, 65535, passed); /* Don't care */ break; default: snprintf(tmp, sizeof(tmp), "Method%sUnkownLargeResourceItem", objname); fwts_failed(fw, LOG_LEVEL_LOW, tmp, "%s tag bits 6:0 is an undefined " "large tag item name, value 0x%" PRIx8 ".", name, tag_item); fwts_advice(fw, "A large resource data type tag (byte 0 of the " "%s buffer) contains an undefined large tag " "item 'name'. The %s buffer is therefore " "undefined and can't be used. See section " "'6.4.3 Large Resource Data Type' of the ACPI " "specification, and also table 6-173.", objname, objname); *passed = false; break; } *tag = types[tag_item < 16 ? tag_item : 0]; } static void method_test_CRS_return( fwts_framework *fw, char *name, ACPI_BUFFER *buf, ACPI_OBJECT *obj, void *private) { uint8_t *data; bool passed = true; const char *tag = "Unknown"; char *objname = (char*)private; char tmp[128]; FWTS_UNUSED(private); if (method_check_type(fw, name, buf, ACPI_TYPE_BUFFER) != FWTS_OK) return; if (obj->Buffer.Pointer == NULL) { snprintf(tmp, sizeof(tmp), "Method%sNullBuffer", objname); fwts_failed(fw, LOG_LEVEL_MEDIUM, tmp, "%s returned a NULL buffer pointer.", name); return; } if (obj->Buffer.Length < 1) { snprintf(tmp, sizeof(tmp), "Method%sBufferTooSmall", objname); fwts_failed(fw, LOG_LEVEL_MEDIUM, tmp, "%s should return a buffer of at least one byte in length.", name); return; } data = (uint8_t*)obj->Buffer.Pointer; if (data[0] & 128) method_test_CRS_large_resource_items(fw, name, objname, data, obj->Buffer.Length, &passed, &tag); else method_test_CRS_small_resource_items(fw, name, objname, data, obj->Buffer.Length, &passed, &tag); if (passed) fwts_passed(fw, "%s (%s) looks sane.", name, tag); } static int method_test_CRS(fwts_framework *fw) { return method_evaluate_method(fw, METHOD_MANDITORY, "_CRS", NULL, 0, method_test_CRS_return, "_CRS"); } static int method_test_PRS(fwts_framework *fw) { /* Re-use the _CRS checking on the returned buffer */ return method_evaluate_method(fw, METHOD_MANDITORY, "_PRS", NULL, 0, method_test_CRS_return, "_PRS"); } static int method_test_DMA(fwts_framework *fw) { return method_evaluate_method(fw, METHOD_OPTIONAL, "_DMA", NULL, 0, method_test_buffer_return, NULL); } static void method_test_FIX_return( fwts_framework *fw, char *name, ACPI_BUFFER *buf, ACPI_OBJECT *obj, void *private) { uint32_t i; char tmp[8]; bool failed = false; FWTS_UNUSED(private); if (method_check_type(fw, name, buf, ACPI_TYPE_PACKAGE) != FWTS_OK) return; /* All elements in the package must be integers */ if (method_package_elements_all_type(fw, name, "_FIX", obj, ACPI_TYPE_INTEGER) != FWTS_OK) return; /* And they need to be valid IDs */ for (i = 0; i < obj->Package.Count; i++) { if (!method_valid_EISA_ID( (uint32_t)obj->Package.Elements[i].Integer.Value, tmp, sizeof(tmp))) { fwts_failed(fw, LOG_LEVEL_MEDIUM, "Method_FIXInvalidElementValue", "%s returned an integer " "0x%8.8" PRIx64 " in package element " "%" PRIu32 " that is not a valid " "EISA ID.", name, (uint64_t)obj->Integer.Value, i); failed = true; } } if (!failed) method_passed_sane(fw, name, "package"); } static int method_test_FIX(fwts_framework *fw) { return method_evaluate_method(fw, METHOD_OPTIONAL, "_FIX", NULL, 0, method_test_FIX_return, NULL); } static int method_test_DIS(fwts_framework *fw) { return method_evaluate_method(fw, METHOD_OPTIONAL, "_DIS", NULL, 0, method_test_NULL_return, NULL); } static int method_test_GSB(fwts_framework *fw) { return method_evaluate_method(fw, METHOD_OPTIONAL, "_GSB", NULL, 0, method_test_integer_return, NULL); } static void method_test_HPP_return( fwts_framework *fw, char *name, ACPI_BUFFER *buf, ACPI_OBJECT *obj, void *private) { FWTS_UNUSED(private); if (method_check_type(fw, name, buf, ACPI_TYPE_PACKAGE) != FWTS_OK) return; /* Must be 4 elements in the package */ if (method_package_count_equal(fw, name, "_HPP", obj, 4) != FWTS_OK) return; /* All 4 elements in the package must be integers */ if (method_package_elements_all_type(fw, name, "_HPP", obj, ACPI_TYPE_INTEGER) != FWTS_OK) return; method_passed_sane(fw, name, "package"); } static int method_test_HPP(fwts_framework *fw) { return method_evaluate_method(fw, METHOD_OPTIONAL, "_HPP", NULL, 0, method_test_HPP_return, NULL); } static int method_test_PXM(fwts_framework *fw) { return method_evaluate_method(fw, METHOD_OPTIONAL, "_PXM", NULL, 0, method_test_integer_return, NULL); } /* * Section 6.3 Device Insertion, Removal and Status Objects */ static void method_test_EDL_return( fwts_framework *fw, char *name, ACPI_BUFFER *buf, ACPI_OBJECT *obj, void *private) { FWTS_UNUSED(private); if (method_check_type(fw, name, buf, ACPI_TYPE_PACKAGE) != FWTS_OK) return; if (method_package_elements_all_type(fw, name, "_EDL", obj, ACPI_TYPE_LOCAL_REFERENCE) != FWTS_OK) return; method_passed_sane(fw, name, "package"); } static int method_test_EDL(fwts_framework *fw) { return method_evaluate_method(fw, METHOD_OPTIONAL, "_EDL", NULL, 0, method_test_EDL_return, NULL); } static int method_test_EJD(fwts_framework *fw) { return method_evaluate_method(fw, METHOD_OPTIONAL, "_EJD", NULL, 0, method_test_string_return, NULL); } #define method_test_EJx(name) \ static int method_test ## name(fwts_framework *fw) \ { \ ACPI_OBJECT arg[1]; \ \ arg[0].Type = ACPI_TYPE_INTEGER; \ arg[0].Integer.Value = 1; \ \ return method_evaluate_method(fw, METHOD_OPTIONAL, \ # name, arg, 1, method_test_NULL_return, # name); \ } method_test_EJx(_EJ0) method_test_EJx(_EJ1) method_test_EJx(_EJ2) method_test_EJx(_EJ3) method_test_EJx(_EJ4) static int method_test_LCK(fwts_framework *fw) { ACPI_OBJECT arg[1]; arg[0].Type = ACPI_TYPE_INTEGER; arg[0].Integer.Value = 1; return method_evaluate_method(fw, METHOD_OPTIONAL, "_LCK", arg, 1, method_test_NULL_return, NULL); } static int method_test_RMV(fwts_framework *fw) { return method_evaluate_method(fw, METHOD_OPTIONAL, "_RMV", NULL, 0, method_test_passed_failed_return, "_RMV"); } static void method_test_STA_return( fwts_framework *fw, char *name, ACPI_BUFFER *buf, ACPI_OBJECT *obj, void *private) { bool failed = false; FWTS_UNUSED(private); if (method_check_type(fw, name, buf, ACPI_TYPE_INTEGER) != FWTS_OK) return; if ((obj->Integer.Value & 3) == 2) { fwts_failed(fw, LOG_LEVEL_MEDIUM, "Method_STAEnabledNotPresent", "%s indicates that the device is enabled " "but not present, which is impossible.", name); failed = true; } if ((obj->Integer.Value & ~0x1f) != 0) { fwts_failed(fw, LOG_LEVEL_MEDIUM, "Method_STAReservedBitsSet", "%s is returning non-zero reserved " "bits 5-31. These should be zero.", name); failed = true; } if (!failed) method_passed_sane_uint64(fw, name, obj->Integer.Value); } static int method_test_STA(fwts_framework *fw) { return method_evaluate_method(fw, METHOD_OPTIONAL, "_STA", NULL, 0, method_test_STA_return, "_STA"); } /* * Section 6.5 Other Objects and Controls */ static int method_test_BBN(fwts_framework *fw) { return method_evaluate_method(fw, METHOD_OPTIONAL, "_BBN", NULL, 0, method_test_integer_return, "_BBN"); } static int method_test_BDN(fwts_framework *fw) { return method_evaluate_method(fw, METHOD_MOBILE, "_BDN", NULL, 0, method_test_integer_return, "_BDN"); } static int method_test_DCK(fwts_framework *fw) { int i; for (i = 0; i <= 1; i++) { /* Undock, Dock */ ACPI_OBJECT arg[1]; arg[0].Type = ACPI_TYPE_INTEGER; arg[0].Integer.Value = i; if (method_evaluate_method(fw, METHOD_MOBILE, "_DCK", arg, 1, method_test_passed_failed_return, "_DCK") != FWTS_OK) break; fwts_log_nl(fw); } return FWTS_OK; } static int method_test_INI(fwts_framework *fw) { return method_evaluate_method(fw, METHOD_OPTIONAL, "_INI", NULL, 0, method_test_NULL_return, NULL); } static void method_test_SEG_return( fwts_framework *fw, char *name, ACPI_BUFFER *buf, ACPI_OBJECT *obj, void *private) { FWTS_UNUSED(private); if (method_check_type(fw, name, buf, ACPI_TYPE_INTEGER) != FWTS_OK) return; if ((obj->Integer.Value & 0xffff0000)) { fwts_failed(fw, LOG_LEVEL_MEDIUM, "Method_SEGIllegalReserved", "%s returned value 0x%8.8" PRIx64 " and some of the " "upper 16 reserved bits are set when they " "should in fact be zero.", name, (uint64_t)obj->Integer.Value); } else method_passed_sane_uint64(fw, name, obj->Integer.Value); } static int method_test_SEG(fwts_framework *fw) { return method_evaluate_method(fw, METHOD_OPTIONAL, "_SEG", NULL, 0, method_test_SEG_return, "_SEG"); } /* * Section 7.1 Declaring a Power Resource Object */ static int method_test_ON(fwts_framework *fw) { return method_evaluate_method(fw, METHOD_OPTIONAL, "_ON", NULL, 0, method_test_NULL_return, NULL); } static int method_test_OFF(fwts_framework *fw) { return method_evaluate_method(fw, METHOD_OPTIONAL, "_OFF", NULL, 0, method_test_NULL_return, NULL); } /* * Section 7.2 Device Power Management Objects */ static int method_test_DSW(fwts_framework *fw) { ACPI_OBJECT arg[3]; arg[0].Type = ACPI_TYPE_INTEGER; arg[0].Integer.Value = 1; arg[1].Type = ACPI_TYPE_INTEGER; arg[1].Integer.Value = 0; arg[2].Type = ACPI_TYPE_INTEGER; arg[2].Integer.Value = 3; return method_evaluate_method(fw, METHOD_OPTIONAL, "_DSW", arg, 3, method_test_NULL_return, NULL); } #define method_test_PSx(name) \ static int method_test ## name(fwts_framework *fw) \ { \ return method_evaluate_method(fw, METHOD_OPTIONAL, \ # name, NULL, 0, method_test_NULL_return, # name); \ } method_test_PSx(_PS0) method_test_PSx(_PS1) method_test_PSx(_PS2) method_test_PSx(_PS3) static int method_test_PSC(fwts_framework *fw) { return method_evaluate_method(fw, METHOD_OPTIONAL, "_PSC", NULL, 0, method_test_integer_return, NULL); } static int method_test_PSE(fwts_framework *fw) { ACPI_OBJECT arg[1]; arg[0].Type = ACPI_TYPE_INTEGER; arg[0].Integer.Value = 1; return method_evaluate_method(fw, METHOD_OPTIONAL, "_PSE", arg, 1, method_test_NULL_return, NULL); } static void method_test_power_resources_return( fwts_framework *fw, char *name, ACPI_BUFFER *buf, ACPI_OBJECT *obj, void *private) { char *objname = (char *)private; FWTS_UNUSED(private); if (method_check_type(fw, name, buf, ACPI_TYPE_PACKAGE) != FWTS_OK) return; if (method_package_elements_all_type(fw, name, objname, obj, ACPI_TYPE_LOCAL_REFERENCE) != FWTS_OK) return; method_passed_sane(fw, name, "package"); } #define method_test_POWER(name) \ static int method_test ## name(fwts_framework *fw) \ { \ return method_evaluate_method(fw, METHOD_OPTIONAL, \ # name, NULL, 0, method_test_power_resources_return, # name);\ } method_test_POWER(_PR0) method_test_POWER(_PR1) method_test_POWER(_PR2) method_test_POWER(_PR3) method_test_POWER(_PRE) static int method_test_PSW(fwts_framework *fw) { ACPI_OBJECT arg[1]; arg[0].Type = ACPI_TYPE_INTEGER; arg[0].Integer.Value = 1; return method_evaluate_method(fw, METHOD_OPTIONAL, "_PSW", arg, 1, method_test_NULL_return, NULL); } #define method_test_SxD(name) \ static int method_test ## name(fwts_framework *fw) \ { \ return method_evaluate_method(fw, METHOD_OPTIONAL, \ # name, NULL, 0, method_test_integer_return, # name); \ } method_test_SxD(_S1D) method_test_SxD(_S2D) method_test_SxD(_S3D) method_test_SxD(_S4D) #define method_test_SxW(name) \ static int method_test ## name(fwts_framework *fw) \ { \ return method_evaluate_method(fw, METHOD_OPTIONAL, \ # name, NULL, 0, method_test_integer_return, # name); \ } method_test_SxW(_S0W) method_test_SxW(_S1W) method_test_SxW(_S2W) method_test_SxW(_S3W) method_test_SxW(_S4W) static int method_test_IRC(fwts_framework *fw) { return method_evaluate_method(fw, METHOD_OPTIONAL, "_IRC", NULL, 0, method_test_NULL_return, NULL); } /* * Section 7.3 OEM Supplied System-Level Control Methods */ static void method_test_Sx__return( fwts_framework *fw, char *name, ACPI_BUFFER *buf, ACPI_OBJECT *obj, void *private) { bool failed = false; FWTS_UNUSED(private); if (method_check_type(fw, name, buf, ACPI_TYPE_PACKAGE) != FWTS_OK) return; /* * The ACPI spec states it should have 1 integer, with the * values packed into each byte. However, nearly all BIOS * vendors don't do this, instead they return a package of * 2 or more integers with each integer lower byte containing * the data we are interested in. The kernel handles this * the non-compliant way. Doh. See drivers/acpi/acpica/hwxface.c * for the kernel implementation and also * source/components/hardware/hwxface.c in the reference ACPICA * sources. */ /* Something is really wrong if we don't have any elements in _Sx_ */ if (obj->Package.Count < 1) { fwts_failed(fw, LOG_LEVEL_HIGH, "Method_SxElementCount", "The kernel expects a package of at least two " "integers, and %s only returned %" PRIu32 " elements in the package.", name, obj->Package.Count); return; } /* * Oh dear, BIOS is conforming to the spec but won't work in * Linux */ if (obj->Package.Count == 1) { fwts_failed(fw, LOG_LEVEL_MEDIUM, "Method_SxElementCount", "The ACPI specification states that %s should " "return a package of a single integer which " "this firmware does do. However, nearly all of the " "BIOS vendors return the values in the low 8 bits " "in a package of 2 to 4 integers which is not " "compliant with the specification BUT is the way " "that the ACPICA reference engine and the kernel " "expect. So, while this is conforming to the ACPI " "specification it will in fact not work in the " "Linux kernel.", name); return; } /* Yes, we really want integers! */ if ((obj->Package.Elements[0].Type != ACPI_TYPE_INTEGER) || (obj->Package.Elements[1].Type != ACPI_TYPE_INTEGER)) { fwts_failed(fw, LOG_LEVEL_MEDIUM, "Method_SxElementType", "%s returned a package that did not contain " "an integer.", name); return; } if (obj->Package.Elements[0].Integer.Value & 0xffffff00) { fwts_failed(fw, LOG_LEVEL_MEDIUM, "Method_SxElementValue", "%s package element 0 had upper 24 bits " "of bits that were non-zero.", name); failed = true; } if (obj->Package.Elements[1].Integer.Value & 0xffffff00) { fwts_failed(fw, LOG_LEVEL_MEDIUM, "Method_SxElementValue", "%s package element 1 had upper 24 bits " "of bits that were non-zero.", name); failed = true; } fwts_log_info(fw, "%s PM1a_CNT.SLP_TYP value: 0x%8.8" PRIx64, name, (uint64_t)obj->Package.Elements[0].Integer.Value); fwts_log_info(fw, "%s PM1b_CNT.SLP_TYP value: 0x%8.8" PRIx64, name, (uint64_t)obj->Package.Elements[1].Integer.Value); if (!failed) method_passed_sane(fw, name, "package"); } #define method_test_Sx_(name) \ static int method_test ## name(fwts_framework *fw) \ { \ return method_evaluate_method(fw, METHOD_OPTIONAL, \ # name, NULL, 0, method_test_Sx__return, # name); \ } method_test_Sx_(_S0_) method_test_Sx_(_S1_) method_test_Sx_(_S2_) method_test_Sx_(_S3_) method_test_Sx_(_S4_) method_test_Sx_(_S5_) static int method_test_SWS(fwts_framework *fw) { return method_evaluate_method(fw, METHOD_OPTIONAL, "_SWS", NULL, 0, method_test_integer_return, NULL); } /* * Section 8.4 Declaring Processors */ static void method_test_CPC_return( fwts_framework *fw, char *name, ACPI_BUFFER *buf, ACPI_OBJECT *obj, void *private) { static fwts_package_element elements[] = { { ACPI_TYPE_INTEGER, "Number of Entries" }, { ACPI_TYPE_INTEGER, "Revision" }, { ACPI_TYPE_INTBUF, "Highest Performance" }, { ACPI_TYPE_INTBUF, "Nominal Performance" }, { ACPI_TYPE_INTBUF, "Lowest Non Linear Performance" }, { ACPI_TYPE_INTBUF, "Lowest Performance" }, { ACPI_TYPE_BUFFER, "Guaranteed Performance Register" }, { ACPI_TYPE_BUFFER, "Desired Performance Register" }, { ACPI_TYPE_BUFFER, "Minimum Performance Register" }, { ACPI_TYPE_BUFFER, "Maximum Performance Register" }, { ACPI_TYPE_BUFFER, "Performance Reduction Tolerance Register" }, { ACPI_TYPE_BUFFER, "Timed Window Register" }, { ACPI_TYPE_INTBUF, "Counter Wraparound Time" }, { ACPI_TYPE_BUFFER, "Nominal Counter Register" }, { ACPI_TYPE_BUFFER, "Delivered Counter Register" }, { ACPI_TYPE_BUFFER, "Performance Limited Register" }, { ACPI_TYPE_BUFFER, "Enable Register" } }; FWTS_UNUSED(private); if (method_check_type(fw, name, buf, ACPI_TYPE_PACKAGE) != FWTS_OK) return; /* Something is really wrong if we don't have any elements in _PCT */ if (method_package_count_equal(fw, name, "_CPC", obj, 17) != FWTS_OK) return; /* For now, just check types */ if (method_package_elements_type(fw, name, "_CPC", obj, elements, 17) != FWTS_OK) return; method_passed_sane(fw, name, "package"); } static int method_test_CPC(fwts_framework *fw) { return method_evaluate_method(fw, METHOD_OPTIONAL, "_CPC", NULL, 0, method_test_CPC_return, NULL); } static void method_test_CSD_return( fwts_framework *fw, char *name, ACPI_BUFFER *buf, ACPI_OBJECT *obj, void *private) { uint32_t i; bool failed = false; FWTS_UNUSED(private); if (method_check_type(fw, name, buf, ACPI_TYPE_PACKAGE) != FWTS_OK) return; /* Something is really wrong if we don't have any elements in _CSD */ if (method_package_count_min(fw, name, "_CSD", obj, 1) != FWTS_OK) return; /* Could be one or more packages */ for (i = 0; i < obj->Package.Count; i++) { ACPI_OBJECT *pkg; uint32_t j; bool elements_ok = true; if (method_package_elements_all_type(fw, name, "_CSD", obj, ACPI_TYPE_PACKAGE) != FWTS_OK) { failed = true; continue; /* Skip processing sub-package */ } pkg = &obj->Package.Elements[i]; /* * Currently we expect a package of 6 integers. */ if (pkg->Package.Count != 6) { fwts_failed(fw, LOG_LEVEL_MEDIUM, "Method_CSDSubPackageElementCount", "%s sub-package %" PRIu32 " was expected to " "have 5 elements, got %" PRIu32 " elements instead.", name, i, pkg->Package.Count); failed = true; continue; } for (j = 0; j < 6; j++) { if (pkg->Package.Elements[j].Type != ACPI_TYPE_INTEGER) { fwts_failed(fw, LOG_LEVEL_MEDIUM, "Method_CSDSubPackageElementCount", "%s sub-package %" PRIu32 " element %" PRIu32 " is not " "an integer.", name, i, j); elements_ok = false; } } if (!elements_ok) { failed = true; continue; } /* Element 0 must equal the number elements in the package */ if (pkg->Package.Elements[0].Integer.Value != pkg->Package.Count) { fwts_failed(fw, LOG_LEVEL_MEDIUM, "Method_CSDSubPackageElement0", "%s sub-package %d element 0 (NumEntries) " "was expected to have value 0x%" PRIx64 ".", name, i, (uint64_t)pkg->Package.Elements[0].Integer.Value); failed = true; } /* Element 1 should contain zero */ if (pkg->Package.Elements[1].Integer.Value != 0) { fwts_failed(fw, LOG_LEVEL_MEDIUM, "Method_CSDSubPackageElement1", "%s sub-package %d element 1 (Revision) " "was expected to have value 1, instead it " "was 0x%" PRIx64 ".", name, i, (uint64_t)pkg->Package.Elements[1].Integer.Value); failed = true; } /* Element 3 should contain 0xfc..0xfe */ if ((pkg->Package.Elements[3].Integer.Value != 0xfc) && (pkg->Package.Elements[3].Integer.Value != 0xfd) && (pkg->Package.Elements[3].Integer.Value != 0xfe)) { fwts_failed(fw, LOG_LEVEL_MEDIUM, "Method_CSDSubPackageElement1", "%s sub-package %d element 3 (CoordType) " "was expected to have value 0xfc (SW_ALL), " "0xfd (SW_ANY) or 0xfe (HW_ALL), instead it " "was 0x%" PRIx64 ".", name, i, (uint64_t)pkg->Package.Elements[3].Integer.Value); failed = true; } /* Element 4 number of processors, skip check */ /* Element 5 index, check */ } if (!failed) method_passed_sane(fw, name, "package"); } static int method_test_CSD(fwts_framework *fw) { return method_evaluate_method(fw, METHOD_OPTIONAL, "_CSD", NULL, 0, method_test_CSD_return, NULL); } static void method_test_CST_return( fwts_framework *fw, char *name, ACPI_BUFFER *buf, ACPI_OBJECT *obj, void *private) { uint32_t i, j; bool failed = false; bool *cst_elements_ok; bool an_element_ok = false; typedef struct { const uint32_t type; const char *name; } cstate_info; static const cstate_info cstate_types[] = { { ACPI_TYPE_BUFFER, "buffer" }, { ACPI_TYPE_INTEGER, "integer" }, { ACPI_TYPE_INTEGER, "integer" }, { ACPI_TYPE_INTEGER, "integer" }, }; FWTS_UNUSED(private); if (obj == NULL) return; if (method_check_type(fw, name, buf, ACPI_TYPE_PACKAGE) != FWTS_OK) return; /* _CST has at least two elements */ if (method_package_count_min(fw, name, "_CST", obj, 2) != FWTS_OK) return; /* Element 1 must be an integer */ if (obj->Package.Elements[0].Type != ACPI_TYPE_INTEGER) { fwts_failed(fw, LOG_LEVEL_MEDIUM, "Method_CSTElement0NotInteger", "%s should return package with element zero being an integer " "count of the number of C state sub-packages.", name); return; } if (obj->Package.Elements[0].Integer.Value != obj->Package.Count - 1) { fwts_failed(fw, LOG_LEVEL_MEDIUM, "Method_CSTElement0CountMismatch", "%s should return package with element zero containing " "the number of C state sub-elements. However, _CST has " "%" PRIu32 " returned C state sub-elements yet _CST " "reports it has %" PRIu64 " C states.", name, obj->Package.Count - 1, (uint64_t)obj->Package.Elements[0].Integer.Value); return; } cst_elements_ok = calloc(obj->Package.Count, sizeof(bool)); if (cst_elements_ok == NULL) { fwts_log_error(fw, "Cannot allocate an array. Test aborted."); return; } /* Could be one or more packages */ for (i = 1; i < obj->Package.Count; i++) { cst_elements_ok[i] = true; ACPI_OBJECT *pkg; if (obj->Package.Elements[i].Type != ACPI_TYPE_PACKAGE) { fwts_failed(fw, LOG_LEVEL_MEDIUM, "Method_CSTElementType", "%s package element %" PRIu32 " was not a package.", name, i); cst_elements_ok[i] = false; failed = true; continue; /* Skip processing sub-package */ } pkg = &obj->Package.Elements[i]; if (pkg->Package.Count != 4) { fwts_failed(fw, LOG_LEVEL_MEDIUM, "Method_CSTElementPackageCountInvalid", "%s package element %" PRIu32 " should have " "4 elements, instead it had %" PRIu32 ".", name, i, pkg->Package.Count); cst_elements_ok[i] = false; failed = true; continue; } for (j = 0; j < 4; j++) { if (pkg->Package.Elements[j].Type != cstate_types[j].type) { fwts_failed(fw, LOG_LEVEL_MEDIUM, "Method_CSTCStatePackageElementInvalidType", "%s C-State package %" PRIu32 " element %" PRIu32 " was not a %s.", name, i, j, cstate_types[j].name); cst_elements_ok[i] = false; failed = true; } } /* Some very simple sanity checks on Register Resource Buffer */ if (pkg->Package.Elements[0].Type == ACPI_TYPE_BUFFER) { if (pkg->Package.Elements[0].Buffer.Pointer == NULL) { fwts_failed(fw, LOG_LEVEL_MEDIUM, "Method_CSTCStateRegisterResourceBufferNull", "%s C-State package %" PRIu32 " has a NULL " "Register Resource Buffer", name, i); failed = true; } else { uint8_t *data = (uint8_t *)pkg->Package.Elements[0].Buffer.Pointer; size_t length = (size_t)pkg->Package.Elements[0].Buffer.Length; if (data[0] != 0x82) { fwts_failed(fw, LOG_LEVEL_MEDIUM, "Method_CSTCStateResourceBufferWrongType", "%s C-State package %" PRIu32 " has a Resource " "type 0x%2.2" PRIx8 ", however, was expecting a Register " "Resource type 0x82.", name, i, data[0]); failed = true; } else { bool passed = true; method_test_CRS_large_size(fw, name, "_CST", data, length, 12, 12, &passed); if (!passed) failed = true; } } } if (cst_elements_ok[i]) an_element_ok = true; } /* Now dump out per CPU C-state information */ if (an_element_ok) { fwts_log_info_verbatum(fw, "%s values:", name); fwts_log_info_verbatum(fw, "# C-State Latency Power"); fwts_log_info_verbatum(fw, " (us) (mW)"); for (i = 1; i < obj->Package.Count; i++){ if (cst_elements_ok[i]) { ACPI_OBJECT *pkg = &obj->Package.Elements[i]; fwts_log_info_verbatum(fw, "%2" PRIu32 " C%" PRIu64 " %6" PRIu64 " %6" PRIu64, i, (uint64_t)pkg->Package.Elements[1].Integer.Value, (uint64_t)pkg->Package.Elements[2].Integer.Value, (uint64_t)pkg->Package.Elements[3].Integer.Value); } else { fwts_log_info_verbatum(fw, "%2" PRIu32 " -- ----- -----", i); } } } free(cst_elements_ok); if (!failed) method_passed_sane(fw, name, "values"); } static int method_test_CST(fwts_framework *fw) { return method_evaluate_method(fw, METHOD_OPTIONAL, "_CST", NULL, 0, method_test_CST_return, NULL); } static void method_test_PCT_return( fwts_framework *fw, char *name, ACPI_BUFFER *buf, ACPI_OBJECT *obj, void *private) { FWTS_UNUSED(private); if (method_check_type(fw, name, buf, ACPI_TYPE_PACKAGE) != FWTS_OK) return; /* Something is really wrong if we don't have any elements in _PCT */ if (method_package_count_min(fw, name, "_PCT", obj, 2) != FWTS_OK) return; if (method_package_elements_all_type(fw, name, "_PCT", obj, ACPI_TYPE_BUFFER) != FWTS_OK) return; method_passed_sane(fw, name, "package"); } static int method_test_PCT(fwts_framework *fw) { return method_evaluate_method(fw, METHOD_OPTIONAL, "_PCT", NULL, 0, method_test_PCT_return, NULL); } static void method_test_PSS_return( fwts_framework *fw, char *name, ACPI_BUFFER *buf, ACPI_OBJECT *obj, void *private) { uint32_t i; bool failed = false; uint32_t max_freq = 0; uint32_t prev_power = 0; bool max_freq_valid = false; bool dump_elements = false; bool *element_ok; FWTS_UNUSED(private); if (method_check_type(fw, name, buf, ACPI_TYPE_PACKAGE) != FWTS_OK) return; /* Something is really wrong if we don't have any elements in _PSS */ if (method_package_count_min(fw, name, "_PSS", obj, 1) != FWTS_OK) return; element_ok = calloc(obj->Package.Count, sizeof(bool)); if (element_ok == NULL) { fwts_log_error(fw, "Cannot allocate an array. Test aborted."); return; } for (i = 0; i < obj->Package.Count; i++) { ACPI_OBJECT *pstate; if (obj->Package.Elements[i].Type != ACPI_TYPE_PACKAGE) { fwts_failed(fw, LOG_LEVEL_MEDIUM, "Method_PSSElementType", "%s package element %" PRIu32 " was not a package.", name, i); failed = true; continue; /* Skip processing sub-package */ } pstate = &obj->Package.Elements[i]; if (pstate->Package.Count != 6) { fwts_failed(fw, LOG_LEVEL_MEDIUM, "Method_PSSSubPackageElementCount", "%s P-State sub-package %" PRIu32 " was expected to " "have 6 elements, got %" PRIu32 " elements instead.", name, i, obj->Package.Count); failed = true; continue; /* Skip processing sub-package */ } /* Elements need to be all ACPI integer types */ if ((pstate->Package.Elements[0].Type != ACPI_TYPE_INTEGER) || (pstate->Package.Elements[1].Type != ACPI_TYPE_INTEGER) || (pstate->Package.Elements[2].Type != ACPI_TYPE_INTEGER) || (pstate->Package.Elements[3].Type != ACPI_TYPE_INTEGER) || (pstate->Package.Elements[4].Type != ACPI_TYPE_INTEGER) || (pstate->Package.Elements[5].Type != ACPI_TYPE_INTEGER)) { fwts_failed(fw, LOG_LEVEL_MEDIUM, "Method_PSSSubPackageElementType", "%s P-State sub-package %" PRIu32 " was expected to " "have 6 Integer elements but didn't", name, i); failed = true; continue; } /* * Parses OK, so this element can be dumped out */ element_ok[i] = true; dump_elements = true; /* * Collect maximum frequency. The sub-packages are sorted in * descending power dissipation order, so one would assume that * the highest frequency is first. However, it is not clear * from the ACPI spec that this is necessarily an assumption we * should make, so instead we should probably scan through all * the valid sub-packages and find the highest frequency. */ if (max_freq < pstate->Package.Elements[0].Integer.Value) { max_freq = pstate->Package.Elements[0].Integer.Value; max_freq_valid = true; } /* Sanity check descending power dissipation levels */ if ((i > 0) && (prev_power != 0) && (pstate->Package.Elements[1].Integer.Value > prev_power)) { fwts_failed(fw, LOG_LEVEL_MEDIUM, "Method_PSSSubPackagePowerNotDecending", "%s P-State sub-package %" PRIu32 " has a larger " "power dissipation setting than the previous " "sub-package.", name, i); fwts_advice(fw, "_PSS P-States must be ordered in decending " "order of power dissipation, so that the " "zero'th entry has the highest power " "dissipation level and the Nth has the " "lowest."); failed = true; } prev_power = pstate->Package.Elements[1].Integer.Value; } /* * If we have some valid data then dump it out, it is useful to see */ if (dump_elements) { fwts_log_info_verbatum(fw, "%s values:", name); fwts_log_info_verbatum(fw, "P-State Freq Power Latency Bus Master"); fwts_log_info_verbatum(fw, " (MHz) (mW) (us) Latency (us)"); for (i = 0; i < obj->Package.Count; i++) { ACPI_OBJECT *pstate = &obj->Package.Elements[i]; if (element_ok[i]) { fwts_log_info_verbatum(fw, " %3d %7" PRIu64 " %8" PRIu64 " %5" PRIu64 " %5" PRIu64, i, (uint64_t)pstate->Package.Elements[0].Integer.Value, (uint64_t)pstate->Package.Elements[1].Integer.Value, (uint64_t)pstate->Package.Elements[2].Integer.Value, (uint64_t)pstate->Package.Elements[3].Integer.Value); } else { fwts_log_info_verbatum(fw, " %3d ---- ----- -- -- (invalid)", i); } } } free(element_ok); /* * Sanity check maximum frequency. We could also check the DMI data * for a BIOS date (but this can be wrong) or check the CPU identity * (which requires adding in new CPU identity checks) to make a decision * on when it is reasonable to assume a CPU is modern and hence clocked * incorrectly. For now, just flag up a low level error that the * frequency looks rather low rather than try to be intelligent (and * possibly make a mistake). I'd rather flag up a few false positives * on older machines than miss flagging up bad _PSS settings on new * machines. */ if (max_freq_valid && max_freq < 1000) { fwts_failed(fw, LOG_LEVEL_LOW, "Method_PSSSubPackageLowFreq", "Maximum CPU frequency is %dHz and this is low for " "a modern processor. This may indicate the _PSS " "P-States are incorrect\n", max_freq); fwts_advice(fw, "The _PSS P-States are used by the Linux CPU frequency " "driver to set the CPU frequencies according to system " "load. Sometimes the firmware sets these incorrectly " "and the machine runs at a sub-optimal speed. One can " "view the firmware defined CPU frequencies via " "/sys/devices/system/cpu/cpu*/cpufreq/" "scaling_available_frequencies"); failed = true; } if (!failed) method_passed_sane(fw, name, "package"); } static int method_test_PSS(fwts_framework *fw) { return method_evaluate_method(fw, METHOD_OPTIONAL, "_PSS", NULL, 0, method_test_PSS_return, NULL); } static int method_test_PPC(fwts_framework *fw) { return method_evaluate_method(fw, METHOD_OPTIONAL, "_PPC", NULL, 0, method_test_integer_return, NULL); } static int method_test_PPE(fwts_framework *fw) { return method_evaluate_method(fw, METHOD_OPTIONAL, "_PPE", NULL, 0, method_test_integer_return, NULL); } static int method_test_PDL(fwts_framework *fw) { return method_evaluate_method(fw, METHOD_OPTIONAL, "_PDL", NULL, 0, method_test_integer_return, NULL); } static int method_test_TDL(fwts_framework *fw) { return method_evaluate_method(fw, METHOD_OPTIONAL, "_TDL", NULL, 0, method_test_integer_return, NULL); } static int method_test_TPC(fwts_framework *fw) { return method_evaluate_method(fw, METHOD_OPTIONAL, "_TPC", NULL, 0, method_test_integer_return, NULL); } static void method_test_TSD_return( fwts_framework *fw, char *name, ACPI_BUFFER *buf, ACPI_OBJECT *obj, void *private) { uint32_t i; bool failed = false; FWTS_UNUSED(private); if (method_check_type(fw, name, buf, ACPI_TYPE_PACKAGE) != FWTS_OK) return; /* Something is really wrong if we don't have any elements in _TSD */ if (method_package_count_min(fw, name, "_TSD", obj, 1) != FWTS_OK) return; /* Could be one or more packages */ for (i = 0; i < obj->Package.Count; i++) { ACPI_OBJECT *pkg; uint32_t j; bool elements_ok = true; if (obj->Package.Elements[i].Type != ACPI_TYPE_PACKAGE) { fwts_failed(fw, LOG_LEVEL_MEDIUM, "Method_TSDElementType", "%s package element %" PRIu32 " was not a package.", name, i); failed = true; continue; /* Skip processing sub-package */ } pkg = &obj->Package.Elements[i]; /* * Currently we expect a package of 5 integers. */ if (pkg->Package.Count != 5) { fwts_failed(fw, LOG_LEVEL_MEDIUM, "Method_TSDSubPackageElementCount", "%s sub-package %" PRIu32 " was expected to " "have 5 elements, got %" PRIu32 " elements instead.", name, i, pkg->Package.Count); failed = true; continue; } for (j = 0; j < 5; j++) { if (pkg->Package.Elements[j].Type != ACPI_TYPE_INTEGER) { fwts_failed(fw, LOG_LEVEL_MEDIUM, "Method_TSDSubPackageElementCount", "%s sub-package %" PRIu32 " element %" PRIu32 " is not " "an integer.", name, i, j); elements_ok = false; } } if (!elements_ok) { failed = true; continue; } /* Element 0 must equal the number elements in the package */ if (pkg->Package.Elements[0].Integer.Value != pkg->Package.Count) { fwts_failed(fw, LOG_LEVEL_MEDIUM, "Method_TSDSubPackageElement0", "%s sub-package %" PRIu32 " element 0 (NumEntries) " "was expected to have value 0x%" PRIx64 ".", name, i, (uint64_t)pkg->Package.Elements[0].Integer.Value); failed = true; } /* Element 1 should contain zero */ if (pkg->Package.Elements[1].Integer.Value != 0) { fwts_failed(fw, LOG_LEVEL_MEDIUM, "Method_TSDSubPackageElement1", "%s sub-package %" PRIu32 " element 1 (Revision) " "was expected to have value 1, instead it " "was 0x%" PRIx64 ".", name, i, (uint64_t)pkg->Package.Elements[1].Integer.Value); failed = true; } /* Element 3 should contain 0xfc..0xfe */ if ((pkg->Package.Elements[3].Integer.Value != 0xfc) && (pkg->Package.Elements[3].Integer.Value != 0xfd) && (pkg->Package.Elements[3].Integer.Value != 0xfe)) { fwts_failed(fw, LOG_LEVEL_MEDIUM, "Method_TSDSubPackageElement1", "%s sub-package %" PRIu32 " element 3 (CoordType) " "was expected to have value 0xfc (SW_ALL), " "0xfd (SW_ANY) or 0xfe (HW_ALL), instead it " "was 0x%" PRIx64 ".", name, i, (uint64_t)pkg->Package.Elements[3].Integer.Value); failed = true; } /* Element 4 number of processors, skip check */ } if (!failed) method_passed_sane(fw, name, "package"); } static int method_test_TSD(fwts_framework *fw) { return method_evaluate_method(fw, METHOD_OPTIONAL, "_TSD", NULL, 0, method_test_TSD_return, NULL); } static void method_test_TSS_return( fwts_framework *fw, char *name, ACPI_BUFFER *buf, ACPI_OBJECT *obj, void *private) { uint32_t i; bool failed = false; bool *tss_elements_ok; bool an_element_ok = false; FWTS_UNUSED(private); if (method_check_type(fw, name, buf, ACPI_TYPE_PACKAGE) != FWTS_OK) return; /* Something is really wrong if we don't have any elements in _TSS */ if (method_package_count_min(fw, name, "_TSS", obj, 1) != FWTS_OK) return; tss_elements_ok = calloc(obj->Package.Count, sizeof(bool)); if (tss_elements_ok == NULL) { fwts_log_error(fw, "Cannot allocate an array. Test aborted."); return; } /* Could be one or more packages */ for (i = 0; i < obj->Package.Count; i++) { ACPI_OBJECT *pkg; uint32_t j; tss_elements_ok[i] = true; if (obj->Package.Elements[i].Type != ACPI_TYPE_PACKAGE) { fwts_failed(fw, LOG_LEVEL_MEDIUM, "Method_TSSElementType", "%s package element %" PRIu32 " was not a package.", name, i); tss_elements_ok[i] = false; failed = true; continue; /* Skip processing sub-package */ } pkg = &obj->Package.Elements[i]; /* * We expect a package of 5 integers. */ if (pkg->Package.Count != 5) { fwts_failed(fw, LOG_LEVEL_MEDIUM, "Method_TSSSubPackageElementCount", "%s sub-package %" PRIu32 " was expected to have 5 elements, " "got %" PRIu32" elements instead.", name, i, pkg->Package.Count); tss_elements_ok[i] = false; failed = true; continue; /* Skip processing sub-package */ } for (j = 0; j < 5; j++) { if (pkg->Package.Elements[j].Type != ACPI_TYPE_INTEGER) { fwts_failed(fw, LOG_LEVEL_MEDIUM, "Method_TSSSubPackageElementCount", "%s sub-package %" PRIu32 " element %" PRIu32 " is not " "an integer.", name, i, j); tss_elements_ok[i] = false; } } if (!tss_elements_ok[i]) { failed = true; continue; } /* At least one element is OK, so remember that */ an_element_ok = true; /* Element 0 must be 1..100 */ if ((pkg->Package.Elements[0].Integer.Value < 1) || (pkg->Package.Elements[0].Integer.Value > 100)) { fwts_failed(fw, LOG_LEVEL_MEDIUM, "Method_TSDSubPackageElement0", "%s sub-package %" PRIu32 " element 0" "was expected to have value 1..100, instead " "was %" PRIu64 ".", name, i, (uint64_t)pkg->Package.Elements[0].Integer.Value); failed = true; } /* Skip checking elements 1..4 */ } /* Summary info */ if (an_element_ok) { fwts_log_info_verbatum(fw, "%s values:", name); fwts_log_info_verbatum(fw, "T-State CPU Power Latency Control Status"); fwts_log_info_verbatum(fw, " Freq (mW) (usecs)"); for (i = 0; i < obj->Package.Count; i++) { if (tss_elements_ok[i]) { ACPI_OBJECT *pkg = &obj->Package.Elements[i]; fwts_log_info_verbatum(fw, " %3d %3" PRIu64 "%% %7" PRIu64 " %7" PRIu64 " %2.2" PRIx64 " %2.2" PRIx64, i, (uint64_t)pkg->Package.Elements[0].Integer.Value, (uint64_t)pkg->Package.Elements[1].Integer.Value, (uint64_t)pkg->Package.Elements[2].Integer.Value, (uint64_t)pkg->Package.Elements[3].Integer.Value, (uint64_t)pkg->Package.Elements[4].Integer.Value); } else { fwts_log_info_verbatum(fw, " %3d ---- ----- ----- -- -- (invalid)", i); } } } free(tss_elements_ok); if (!failed) method_passed_sane(fw, name, "package"); } static int method_test_TSS(fwts_framework *fw) { return method_evaluate_method(fw, METHOD_OPTIONAL, "_TSS", NULL, 0, method_test_TSS_return, NULL); } /* * Section 9.1 System Indicators */ static int method_test_MSG(fwts_framework *fw) { ACPI_OBJECT arg[1]; arg[0].Type = ACPI_TYPE_INTEGER; arg[0].Integer.Value = 0; return method_evaluate_method(fw, METHOD_OPTIONAL, "_MSG", arg, 1, method_test_NULL_return, NULL); } /* * Section 9.2 Ambient Light Sensor Device */ method_test_integer(_ALC, METHOD_OPTIONAL) method_test_integer(_ALI, METHOD_OPTIONAL) method_test_integer(_ALT, METHOD_OPTIONAL) /* TODO _ALR */ static int method_test_ALP(fwts_framework *fw) { return method_evaluate_method(fw, METHOD_OPTIONAL, "_ALP", NULL, 0, method_test_polling_return, "_ALP"); } /* * Section 9.4 Lid control */ static void method_test_LID_return( fwts_framework *fw, char *name, ACPI_BUFFER *buf, ACPI_OBJECT *obj, void *private) { FWTS_UNUSED(private); if (method_check_type(fw, name, buf, ACPI_TYPE_INTEGER) == FWTS_OK) method_passed_sane_uint64(fw, name, obj->Integer.Value); } static int method_test_LID(fwts_framework *fw) { return method_evaluate_method(fw, METHOD_MOBILE, "_LID", NULL, 0, method_test_LID_return, NULL); } /* * Section 9.16 User Presence Detection Device */ static int method_test_UPD(fwts_framework *fw) { return method_evaluate_method(fw, METHOD_OPTIONAL, "_UPD", NULL, 0, method_test_integer_return, NULL); } static int method_test_UPP(fwts_framework *fw) { return method_evaluate_method(fw, METHOD_OPTIONAL, "_UPP", NULL, 0, method_test_integer_return, NULL); } /* * Section 9.18 Wake Alarm Device */ static void method_test_GCP_return( fwts_framework *fw, char *name, ACPI_BUFFER *buf, ACPI_OBJECT *obj, void *private) { FWTS_UNUSED(private); if (method_check_type(fw, name, buf, ACPI_TYPE_INTEGER) != FWTS_OK) return; if (obj->Integer.Value & ~0xf) fwts_failed(fw, LOG_LEVEL_MEDIUM, "Method_GCPReturn", "%s returned %" PRId64 ", should be between 0 and 15, " "one or more of the reserved bits 4..31 seem " "to be set.", name, (uint64_t)obj->Integer.Value); else method_passed_sane_uint64(fw, name, obj->Integer.Value); } static int method_test_GCP(fwts_framework *fw) { return method_evaluate_method(fw, METHOD_OPTIONAL, "_GCP", NULL, 0, method_test_GCP_return, "_GCP"); } static void method_test_GRT_return( fwts_framework *fw, char *name, ACPI_BUFFER *buf, ACPI_OBJECT *obj, void *private) { FWTS_UNUSED(private); if (method_check_type(fw, name, buf, ACPI_TYPE_BUFFER) != FWTS_OK) return; if (obj->Buffer.Length != 16) { fwts_failed(fw, LOG_LEVEL_MEDIUM, "Method_GRTBadBufferSize", "%s should return a buffer of 16 bytes, but " "instead just returned %" PRIu32, name, obj->Buffer.Length); return; } /* * Should sanity check this, but we can't read the * the data in this emulated mode, so ignore */ method_passed_sane(fw, name, "buffer"); } static int method_test_GRT(fwts_framework *fw) { return method_evaluate_method(fw, METHOD_OPTIONAL, "_GRT", NULL, 0, method_test_GRT_return, NULL); } static void method_test_GWS_return( fwts_framework *fw, char *name, ACPI_BUFFER *buf, ACPI_OBJECT *obj, void *private) { FWTS_UNUSED(private); if (method_check_type(fw, name, buf, ACPI_TYPE_INTEGER) != FWTS_OK) return; if (obj->Integer.Value & ~0x3) fwts_failed(fw, LOG_LEVEL_MEDIUM, "Method_GWSReturn", "%s returned %" PRIu64 ", should be between 0 and 3, " "one or more of the reserved bits 2..31 seem " "to be set.", name, (uint64_t)obj->Integer.Value); else method_passed_sane_uint64(fw, name, obj->Integer.Value); } static int method_test_GWS(fwts_framework *fw) { ACPI_OBJECT arg[1]; arg[0].Type = ACPI_TYPE_INTEGER; arg[0].Integer.Value = 1; /* DC timer */ return method_evaluate_method(fw, METHOD_OPTIONAL, "_GWS", arg, 1, method_test_GWS_return, "_GWS"); } static int method_test_STP(fwts_framework *fw) { ACPI_OBJECT arg[2]; arg[0].Type = ACPI_TYPE_INTEGER; arg[0].Integer.Value = 1; /* DC timer */ arg[1].Type = ACPI_TYPE_INTEGER; arg[1].Integer.Value = 0; /* wake up instantly */ return method_evaluate_method(fw, METHOD_OPTIONAL, "_STP", arg, 2, method_test_passed_failed_return, "_STP"); } static int method_test_STV(fwts_framework *fw) { ACPI_OBJECT arg[2]; arg[0].Type = ACPI_TYPE_INTEGER; arg[0].Integer.Value = 1; /* DC timer */ arg[1].Type = ACPI_TYPE_INTEGER; arg[1].Integer.Value = 100; /* timer value */ return method_evaluate_method(fw, METHOD_OPTIONAL, "_STV", arg, 2, method_test_passed_failed_return, "_STV"); } static int method_test_TIP(fwts_framework *fw) { ACPI_OBJECT arg[1]; arg[0].Type = ACPI_TYPE_INTEGER; arg[0].Integer.Value = 1; /* DC timer */ return method_evaluate_method(fw, METHOD_OPTIONAL, "_TIP", arg, 1, method_test_integer_return, NULL); } static int method_test_TIV(fwts_framework *fw) { ACPI_OBJECT arg[1]; arg[0].Type = ACPI_TYPE_INTEGER; arg[0].Integer.Value = 1; /* DC timer */ return method_evaluate_method(fw, METHOD_OPTIONAL, "_TIV", arg, 1, method_test_integer_return, NULL); } /* * Section 10.1 Smart Battery */ static void method_test_SBS_return( fwts_framework *fw, char *name, ACPI_BUFFER *buf, ACPI_OBJECT *obj, void *private) { static char *sbs_info[] = { "Maximum 1 Smart Battery, system manager/selector not present", "Maximum 1 Smart Battery, system manager/selector present", "Maximum 2 Smart Batteries, system manager/selector present", "Maximum 3 Smart Batteries, system manager/selector present", "Maximum 4 Smart Batteries, system manager/selector present" }; FWTS_UNUSED(private); if (method_check_type(fw, name, buf, ACPI_TYPE_INTEGER) != FWTS_OK) return; switch (obj->Integer.Value) { case 0 ... 4: fwts_passed(fw, "%s correctly returned value %" PRIu64 " %s", name, (uint64_t)obj->Integer.Value, sbs_info[obj->Integer.Value]); break; default: fwts_failed(fw, LOG_LEVEL_MEDIUM, "Method_SBSReturn", "%s returned %" PRIu64 ", should be between 0 and 4.", name, (uint64_t)obj->Integer.Value); fwts_advice(fw, "Smart Battery %s is incorrectly informing " "the OS about the smart battery " "configuration. This is a bug and needs to be " "fixed.", name); break; } } static int method_test_SBS(fwts_framework *fw) { return method_evaluate_method(fw, METHOD_MOBILE, "_SBS", NULL, 0, method_test_SBS_return, NULL); } /* * Section 10.2 Battery Control Methods */ static int method_test_BCT(fwts_framework *fw) { ACPI_OBJECT arg[1]; arg[0].Type = ACPI_TYPE_INTEGER; arg[0].Integer.Value = 50; /* 50% */ /* * For now, just check that we get some integer back, values * can be 0x00000000, 0x00000001-0xfffffffe and 0xffffffff, * so anything is valid as long as it is an integer */ return method_evaluate_method(fw, METHOD_MOBILE, "_BCT", arg, 1, method_test_integer_return, NULL); } static void method_test_BIF_return( fwts_framework *fw, char *name, ACPI_BUFFER *buf, ACPI_OBJECT *obj, void *private) { bool failed = false; static fwts_package_element elements[] = { { ACPI_TYPE_INTEGER, "Power Unit" }, { ACPI_TYPE_INTEGER, "Design Capacity" }, { ACPI_TYPE_INTEGER, "Last Full Charge Capacity" }, { ACPI_TYPE_INTEGER, "Battery Technology" }, { ACPI_TYPE_INTEGER, "Design Voltage" }, { ACPI_TYPE_INTEGER, "Design Capacity of Warning" }, { ACPI_TYPE_INTEGER, "Design Capactty of Low" }, { ACPI_TYPE_INTEGER, "Battery Capacity Granularity 1" }, { ACPI_TYPE_INTEGER, "Battery Capacity Granularity 2" }, { ACPI_TYPE_STRING, "Model Number" }, { ACPI_TYPE_STRING, "Serial Number" }, { ACPI_TYPE_STRING, "Battery Type" }, { ACPI_TYPE_STRING, "OEM Information" } }; FWTS_UNUSED(private); if (method_check_type(fw, name, buf, ACPI_TYPE_PACKAGE) != FWTS_OK) return; if (method_package_count_equal(fw, name, "_BIF", obj, 13) != FWTS_OK) return; if (method_package_elements_type(fw, name, "_BIF", obj, elements, 13) != FWTS_OK) return; /* Sanity check each field */ /* Power Unit */ if (obj->Package.Elements[0].Integer.Value > 0x00000002) { fwts_failed(fw, LOG_LEVEL_MEDIUM, "Method_BIFBadUnits", "%s: Expected Power Unit (Element 0) to be " "0 (mWh) or 1 (mAh), got 0x%8.8" PRIx64 ".", name, (uint64_t)obj->Package.Elements[0].Integer.Value); failed = true; } #ifdef FWTS_METHOD_PEDANDTIC /* * Since this information may be evaluated by communicating with * the EC we skip these checks as we can't do this from userspace */ /* Design Capacity */ if (obj->Package.Elements[1].Integer.Value > 0x7fffffff) { fwts_failed(fw, LOG_LEVEL_LOW, "Method_BIFBadCapacity", "%s: Design Capacity (Element 1) is " "unknown: 0x%8.8" PRIx64 ".", name, obj->Package.Elements[1].Integer.Value); failed = true; } /* Last Full Charge Capacity */ if (obj->Package.Elements[2].Integer.Value > 0x7fffffff) { fwts_failed(fw, LOG_LEVEL_LOW, "Method_BIFChargeCapacity", "%s: Last Full Charge Capacity (Element 2) " "is unknown: 0x%8.8" PRIx64 ".", name, obj->Package.Elements[2].Integer.Value); failed = true; } #endif /* Battery Technology */ if (obj->Package.Elements[3].Integer.Value > 0x00000002) { fwts_failed(fw, LOG_LEVEL_MEDIUM, "Method_BIFBatTechUnit", "%s: Expected Battery Technology Unit " "(Element 3) to be 0 (Primary) or 1 " "(Secondary), got 0x%8.8" PRIx64 ".", name, (uint64_t)obj->Package.Elements[3].Integer.Value); failed = true; } #ifdef FWTS_METHOD_PEDANDTIC /* * Since this information may be evaluated by communicating with * the EC we skip these checks as we can't do this from userspace */ /* Design Voltage */ if (obj->Package.Elements[4].Integer.Value > 0x7fffffff) { fwts_failed(fw, LOG_LEVEL_LOW, "Method_BIFDesignVoltage", "%s: Design Voltage (Element 4) is " "unknown: 0x%8.8" PRIx64 ".", name, obj->Package.Elements[4].Integer.Value); failed = true; } /* Design capacity warning */ if (obj->Package.Elements[5].Integer.Value > 0x7fffffff) { fwts_failed(fw, LOG_LEVEL_LOW, "Method_BIFDesignCapacityE5", "%s: Design Capacity Warning (Element 5) " "is unknown: 0x%8.8" PRIx64 ".", name, obj->Package.Elements[5].Integer.Value); failed = true; } /* Design capacity low */ if (obj->Package.Elements[6].Integer.Value > 0x7fffffff) { fwts_failed(fw, LOG_LEVEL_LOW, "Method_BIFDesignCapacityE6", "%s: Design Capacity Warning (Element 6) " "is unknown: 0x%8.8" PRIx64 ".", name, obj->Package.Elements[6].Integer.Value); failed = true; } #endif if (failed) fwts_advice(fw, "Battery %s package contains errors. It is " "worth running the firmware test suite " "interactive 'battery' test to see if this " "is problematic. This is a bug an needs to " "be fixed.", name); else method_passed_sane(fw, name, "package"); } static int method_test_BIF(fwts_framework *fw) { return method_evaluate_method(fw, METHOD_MOBILE, "_BIF", NULL, 0, method_test_BIF_return, NULL); } static void method_test_BIX_return( fwts_framework *fw, char *name, ACPI_BUFFER *buf, ACPI_OBJECT *obj, void *private) { bool failed = false; static fwts_package_element elements[] = { { ACPI_TYPE_INTEGER, "Revision" }, { ACPI_TYPE_INTEGER, "Power Unit" }, { ACPI_TYPE_INTEGER, "Design Capacity" }, { ACPI_TYPE_INTEGER, "Last Full Charge Capacity" }, { ACPI_TYPE_INTEGER, "Battery Technology" }, { ACPI_TYPE_INTEGER, "Design Voltage" }, { ACPI_TYPE_INTEGER, "Design Capacity of Warning" }, { ACPI_TYPE_INTEGER, "Design Capactty of Low" }, { ACPI_TYPE_INTEGER, "Cycle Count" }, { ACPI_TYPE_INTEGER, "Measurement Accuracy" }, { ACPI_TYPE_INTEGER, "Max Sampling Time" }, { ACPI_TYPE_INTEGER, "Min Sampling Time" }, { ACPI_TYPE_INTEGER, "Max Averaging Interval" }, { ACPI_TYPE_INTEGER, "Min Averaging Interval" }, { ACPI_TYPE_INTEGER, "Battery Capacity Granularity 1" }, { ACPI_TYPE_INTEGER, "Battery Capacity Granularity 2" }, { ACPI_TYPE_STRING, "Model Number" }, { ACPI_TYPE_STRING, "Serial Number" }, { ACPI_TYPE_STRING, "Battery Type" }, { ACPI_TYPE_STRING, "OEM Information" } }; FWTS_UNUSED(private); if (method_check_type(fw, name, buf, ACPI_TYPE_PACKAGE) != FWTS_OK) return; if (method_package_count_equal(fw, name, "_BIX", obj, 20) != FWTS_OK) return; if (method_package_elements_type(fw, name, "_BIX", obj, elements, 20) != FWTS_OK) return; /* Sanity check each field */ /* Power Unit */ if (obj->Package.Elements[1].Integer.Value > 0x00000002) { fwts_failed(fw, LOG_LEVEL_MEDIUM, "Method_BIXPowerUnit", "%s: Expected %s (Element 1) to be " "0 (mWh) or 1 (mAh), got 0x%8.8" PRIx64 ".", name, elements[1].name, (uint64_t)obj->Package.Elements[1].Integer.Value); failed = true; } #ifdef FWTS_METHOD_PEDANDTIC /* * Since this information may be evaluated by communicating with * the EC we skip these checks as we can't do this from userspace */ /* Design Capacity */ if (obj->Package.Elements[2].Integer.Value > 0x7fffffff) { fwts_failed(fw, LOG_LEVEL_LOW, "Method_BIXDesignCapacity", "%s: %s (Element 2) is " "unknown: 0x%8.8" PRIx64 ".", name, elements[2].name, obj->Package.Elements[2].Integer.Value); failed = true; } /* Last Full Charge Capacity */ if (obj->Package.Elements[3].Integer.Value > 0x7fffffff) { fwts_failed(fw, LOG_LEVEL_LOW, "Method_BIXFullChargeCapacity", "%s: %s (Element 3) " "is unknown: 0x%8.8" PRIx64 ".", name, elements[3].name, obj->Package.Elements[3].Integer.Value); failed = true; } #endif /* Battery Technology */ if (obj->Package.Elements[4].Integer.Value > 0x00000002) { fwts_failed(fw, LOG_LEVEL_MEDIUM, "Method_BIXBatteryTechUnit", "%s: %s " "(Element 4) to be 0 (Primary) or 1 " "(Secondary), got 0x%8.8" PRIx64 ".", name, elements[4].name, (uint64_t)obj->Package.Elements[4].Integer.Value); failed = true; } #ifdef FWTS_METHOD_PEDANDTIC /* * Since this information may be evaluated by communicating with * the EC we skip these checks as we can't do this from userspace */ /* Design Voltage */ if (obj->Package.Elements[5].Integer.Value > 0x7fffffff) { fwts_failed(fw, LOG_LEVEL_LOW, "Method_BIXDesignVoltage", "%s: %s (Element 5) is unknown: " "0x%8.8" PRIx64 ".", name, elements[5].name, obj->Package.Elements[5].Integer.Value); failed = true; } /* Design capacity warning */ if (obj->Package.Elements[6].Integer.Value > 0x7fffffff) { fwts_failed(fw, LOG_LEVEL_LOW, "Method_BIXDesignCapacityE6", "%s: %s (Element 6) " "is unknown: 0x%8.8" PRIx64 ".", name, elements[6].name, obj->Package.Elements[6].Integer.Value); failed = true; } /* Design capacity low */ if (obj->Package.Elements[7].Integer.Value > 0x7fffffff) { fwts_failed(fw, LOG_LEVEL_LOW, "Method_BIXDesignCapacityE7", "%s: %s (Element 7) " "is unknown: 0x%8.8" PRIx64 ".", name, elements[7].name, obj->Package.Elements[7].Integer.Value); failed = true; } /* Cycle Count */ if (obj->Package.Elements[8].Integer.Value > 0x7fffffff) { fwts_failed(fw, LOG_LEVEL_LOW, "Method_BIXCyleCount", "%s: %s (Element 8) is unknown: " "0x%8.8" PRIx64 ".", Elements[8].name, name, obj->Package.Elements[8].Integer.Value); failed = true; } #endif if (failed) fwts_advice(fw, "Battery %s package contains errors. It is " "worth running the firmware test suite " "interactive 'battery' test to see if this " "is problematic. This is a bug an needs to " "be fixed.", name); else method_passed_sane(fw, name, "package"); } static int method_test_BIX(fwts_framework *fw) { return method_evaluate_method(fw, METHOD_MOBILE, "_BIX", NULL, 0, method_test_BIX_return, NULL); } static int method_test_BMA(fwts_framework *fw) { ACPI_OBJECT arg[1]; arg[0].Type = ACPI_TYPE_INTEGER; arg[0].Integer.Value = 1; return method_evaluate_method(fw, METHOD_MOBILE, "_BMA", arg, 1, method_test_integer_return, NULL); } static int method_test_BMS(fwts_framework *fw) { ACPI_OBJECT arg[1]; arg[0].Type = ACPI_TYPE_INTEGER; arg[0].Integer.Value = 1; return method_evaluate_method(fw, METHOD_MOBILE, "_BMS", arg, 1, method_test_integer_return, NULL); } static void method_test_BST_return( fwts_framework *fw, char *name, ACPI_BUFFER *buf, ACPI_OBJECT *obj, void *private) { bool failed = false; FWTS_UNUSED(private); if (method_check_type(fw, name, buf, ACPI_TYPE_PACKAGE) != FWTS_OK) return; if (method_package_count_equal(fw, name, "_BST", obj, 4) != FWTS_OK) return; if (method_package_elements_all_type(fw, name, "_BST", obj, ACPI_TYPE_INTEGER) != FWTS_OK) return; /* Sanity check each field */ /* Battery State */ if ((obj->Package.Elements[0].Integer.Value) > 7) { fwts_failed(fw, LOG_LEVEL_MEDIUM, "Method_BSTBadState", "%s: Expected Battery State (Element 0) to " "be 0..7, got 0x%8.8" PRIx64 ".", name, (uint64_t)obj->Package.Elements[0].Integer.Value); failed = true; } /* Ensure bits 0 (discharging) and 1 (charging) are not both set, see 10.2.2.6 */ if (((obj->Package.Elements[0].Integer.Value) & 3) == 3) { fwts_failed(fw, LOG_LEVEL_MEDIUM, "Method_BSTBadState", "%s: Battery State (Element 0) is " "indicating both charging and discharginng " "which is not allowed. Got value 0x%8.8" PRIx64 ".", name, (uint64_t)obj->Package.Elements[0].Integer.Value); failed = true; } /* Battery Present Rate - cannot check, pulled from EC */ /* Battery Remaining Capacity - cannot check, pulled from EC */ /* Battery Present Voltage - cannot check, pulled from EC */ if (failed) fwts_advice(fw, "Battery %s package contains errors. It is " "worth running the firmware test suite " "interactive 'battery' test to see if this " "is problematic. This is a bug an needs to " "be fixed.", name); else method_passed_sane(fw, name, "package"); } static int method_test_BST(fwts_framework *fw) { return method_evaluate_method(fw, METHOD_MOBILE, "_BST", NULL, 0, method_test_BST_return, NULL); } static int method_test_BTP(fwts_framework *fw) { static int values[] = { 0, 1, 100, 200, 0x7fffffff }; int i; for (i = 0; i < 5; i++) { ACPI_OBJECT arg[1]; arg[0].Type = ACPI_TYPE_INTEGER; arg[0].Integer.Value = values[i]; if (method_evaluate_method(fw, METHOD_MOBILE, "_BTP", arg, 1, method_test_NULL_return, NULL) == FWTS_NOT_EXIST) break; fwts_log_nl(fw); } return FWTS_OK; } static void method_test_PCL_return(fwts_framework *fw, char *name, ACPI_BUFFER *buf, ACPI_OBJECT *obj, void *private) { FWTS_UNUSED(fw); FWTS_UNUSED(name); FWTS_UNUSED(buf); FWTS_UNUSED(obj); FWTS_UNUSED(private); /* FIXME */ } static int method_test_PCL(fwts_framework *fw) { return method_evaluate_method(fw, METHOD_MOBILE, "_PCL", NULL, 0, method_test_PCL_return, "_PCL"); } static int method_test_BTM(fwts_framework *fw) { static int values[] = { 0, 1, 100, 200, 0x7fffffff }; int i; for (i=0 ; i < 5; i++) { ACPI_OBJECT arg[1]; arg[0].Type = ACPI_TYPE_INTEGER; arg[0].Integer.Value = values[i]; if (method_evaluate_method(fw, METHOD_MOBILE, "_BTM", arg, 1, method_test_NULL_return, NULL) == FWTS_NOT_EXIST) break; fwts_log_nl(fw); } return FWTS_OK; } static void method_test_BMD_return( fwts_framework *fw, char *name, ACPI_BUFFER *buf, ACPI_OBJECT *obj, void *private) { FWTS_UNUSED(private); if (method_check_type(fw, name, buf, ACPI_TYPE_PACKAGE) != FWTS_OK) return; if (method_package_count_equal(fw, name, "_BMD", obj, 5) != FWTS_OK) return; if (method_package_elements_all_type(fw, name, "_BMD", obj, ACPI_TYPE_INTEGER) != FWTS_OK) return; fwts_acpi_object_dump(fw, obj); method_passed_sane(fw, name, "package"); } static int method_test_BMD(fwts_framework *fw) { return method_evaluate_method(fw, METHOD_MOBILE, "_BMD", NULL, 0, method_test_BMD_return, NULL); } static int method_test_BMC(fwts_framework *fw) { static int values[] = { 0, 1, 2, 4 }; int i; for (i = 0; i < 4; i++) { ACPI_OBJECT arg[1]; arg[0].Type = ACPI_TYPE_INTEGER; arg[0].Integer.Value = values[i]; if (method_evaluate_method(fw, METHOD_MOBILE, "_BMC", arg, 1, method_test_NULL_return, NULL) == FWTS_NOT_EXIST) break; fwts_log_nl(fw); } return FWTS_OK; } /* * Section 10.3 AC Adapters and Power Sources Objects */ static void method_test_PSR_return( fwts_framework *fw, char *name, ACPI_BUFFER *buf, ACPI_OBJECT *obj, void *private) { FWTS_UNUSED(private); if (method_check_type(fw, name, buf, ACPI_TYPE_INTEGER) != FWTS_OK) return; if (obj->Integer.Value > 2) { fwts_failed(fw, LOG_LEVEL_MEDIUM, "Method_PSRZeroOrOne", "%s returned 0x%8.8" PRIx64 ", expected 0 " "(offline) or 1 (online)", name, (uint64_t)obj->Integer.Value); } else method_passed_sane_uint64(fw, name, obj->Integer.Value); } static int method_test_PSR(fwts_framework *fw) { return method_evaluate_method(fw, METHOD_OPTIONAL, "_PSR", NULL, 0, method_test_PSR_return, NULL); } static void method_test_PIF_return( fwts_framework *fw, char *name, ACPI_BUFFER *buf, ACPI_OBJECT *obj, void *private) { static fwts_package_element elements[] = { { ACPI_TYPE_INTEGER, "Power Source State" }, { ACPI_TYPE_INTEGER, "Maximum Output Power" }, { ACPI_TYPE_INTEGER, "Maximum Input Power" }, { ACPI_TYPE_STRING, "Model Number" }, { ACPI_TYPE_STRING, "Serial Number" }, { ACPI_TYPE_STRING, "OEM Information" } }; FWTS_UNUSED(private); if (method_check_type(fw, name, buf, ACPI_TYPE_PACKAGE) != FWTS_OK) return; if (method_package_count_equal(fw, name, "_PIF", obj, 6) != FWTS_OK) return; if (method_package_elements_type(fw, name, "_PIF", obj, elements, 6) != FWTS_OK) return; fwts_acpi_object_dump(fw, obj); method_passed_sane(fw, name, "package"); } static int method_test_PIF(fwts_framework *fw) { return method_evaluate_method(fw, METHOD_OPTIONAL, "_PIF", NULL, 0, method_test_PIF_return, NULL); } /* * Section 10.4 Power Meters */ static int method_test_GAI(fwts_framework *fw) { return method_evaluate_method(fw, METHOD_OPTIONAL, "_GAI", NULL, 0, method_test_integer_return, NULL); } static int method_test_PMM(fwts_framework *fw) { return method_evaluate_method(fw, METHOD_OPTIONAL, "_PMM", NULL, 0, method_test_integer_return, NULL); } /* * Section 11.3 Fan Devices */ static void method_test_FIF_return( fwts_framework *fw, char *name, ACPI_BUFFER *buf, ACPI_OBJECT *obj, void *private) { FWTS_UNUSED(private); if (method_check_type(fw, name, buf, ACPI_TYPE_PACKAGE) != FWTS_OK) return; if (method_package_count_equal(fw, name, "_FIF", obj, 4) != FWTS_OK) return; if (method_package_elements_all_type(fw, name, "_FIF", obj, ACPI_TYPE_INTEGER) != FWTS_OK) { fwts_advice(fw, "%s is not returning the correct " "fan information. It may be worth " "running the firmware test suite " "interactive 'fan' test to see if " "this affects the control and " "operation of the fan.", name); return; } fwts_acpi_object_dump(fw, obj); method_passed_sane(fw, name, "package"); } static int method_test_FIF(fwts_framework *fw) { return method_evaluate_method(fw, METHOD_OPTIONAL, "_FIF", NULL, 0, method_test_FIF_return, NULL); } static int method_test_FSL(fwts_framework *fw) { ACPI_OBJECT arg[1]; arg[0].Type = ACPI_TYPE_INTEGER; arg[0].Integer.Value = 50; return method_evaluate_method(fw, METHOD_OPTIONAL, "_FSL", arg, 1, method_test_NULL_return, NULL); } static void method_test_FST_return( fwts_framework *fw, char *name, ACPI_BUFFER *buf, ACPI_OBJECT *obj, void *private) { FWTS_UNUSED(private); if (method_check_type(fw, name, buf, ACPI_TYPE_PACKAGE) != FWTS_OK) return; if (method_package_count_equal(fw, name, "_FST", obj, 3) != FWTS_OK) return; if (method_package_elements_all_type(fw, name, "_FST", obj, ACPI_TYPE_INTEGER) != FWTS_OK) { fwts_advice(fw, "%s is not returning the correct " "fan status information. It may be " "worth running the firmware test " "suite interactive 'fan' test to see " "if this affects the control and " "operation of the fan.", name); return; } fwts_acpi_object_dump(fw, obj); method_passed_sane(fw, name, "package"); } static int method_test_FST(fwts_framework *fw) { return method_evaluate_method(fw, METHOD_OPTIONAL, "_FST", NULL, 0, method_test_FST_return, NULL); } /* * Section 11.4 Thermal */ static void method_test_THERM_return( fwts_framework *fw, char *name, ACPI_BUFFER *buf, ACPI_OBJECT *obj, void *private) { char *method = (char*)private; if (method_check_type(fw, name, buf, ACPI_TYPE_INTEGER) != FWTS_OK) return; if (fwts_acpi_region_handler_called_get()) { /* * We accessed some memory or I/O region during the * evaluation which returns spoofed values, so we * should not test the value being returned. In this * case, just pass this as a valid return type. */ method_passed_sane(fw, name, "return type"); } else { /* * The evaluation probably was a hard-coded value, * so sanity check it */ if (obj->Integer.Value >= 2732) { fwts_passed(fw, "%s correctly returned sane looking " "value 0x%8.8" PRIx64 " (%5.1f degrees K)", method, (uint64_t)obj->Integer.Value, (float)((uint64_t)obj->Integer.Value) / 10.0); } else { fwts_failed(fw, LOG_LEVEL_MEDIUM, "MethodBadTemp", "%s returned a dubious value below " "0 degrees C: 0x%8.8" PRIx64 " (%5.1f " "degrees K)", method, (uint64_t)obj->Integer.Value, (float)((uint64_t)obj->Integer.Value) / 10.0); fwts_advice(fw, "The value returned was probably a " "hard-coded thermal value which is " "out of range because fwts did not " "detect any ACPI region handler " "accesses of I/O or system memeory " "to evaluate the thermal value. " "It is worth sanity checking these " "values in " "/sys/class/thermal/thermal_zone*."); } } } #define method_test_THERM(name, type) \ static int method_test ## name(fwts_framework *fw) \ { \ fwts_acpi_region_handler_called_set(false); \ return method_evaluate_method(fw, type, # name, \ NULL, 0, method_test_THERM_return, # name); \ } method_test_THERM(_CRT, METHOD_OPTIONAL) method_test_THERM(_HOT, METHOD_OPTIONAL) method_test_THERM(_TMP, METHOD_OPTIONAL) method_test_THERM(_NTT, METHOD_OPTIONAL) method_test_THERM(_PSV, METHOD_OPTIONAL) method_test_THERM(_TST, METHOD_OPTIONAL) static int method_test_TSP(fwts_framework *fw) { return method_evaluate_method(fw, METHOD_OPTIONAL, "_TSP", NULL, 0, method_test_polling_return, "_TSP"); } static void method_test_TCx_return( fwts_framework *fw, char *name, ACPI_BUFFER *buf, ACPI_OBJECT *obj, void *private) { if (method_check_type(fw, name, buf, ACPI_TYPE_INTEGER) == FWTS_OK) method_passed_sane_uint64(fw, (char*)private, obj->Integer.Value); } static int method_test_TC1(fwts_framework *fw) { return method_evaluate_method(fw, METHOD_OPTIONAL, "_TC1", NULL, 0, method_test_TCx_return, "_TC1"); } static int method_test_TC2(fwts_framework *fw) { return method_evaluate_method(fw, METHOD_OPTIONAL, "_TC2", NULL, 0, method_test_TCx_return, "_TC1"); } static int method_test_ACx(fwts_framework *fw) { int i; for (i = 0; i < 10; i++) { char buffer[5]; snprintf(buffer, sizeof(buffer), "_AC%d", i); method_evaluate_method(fw, METHOD_OPTIONAL, buffer, NULL, 0, method_test_THERM_return, buffer); fwts_log_nl(fw); } return FWTS_OK; } static int method_test_DTI(fwts_framework *fw) { ACPI_OBJECT arg[1]; arg[0].Type = ACPI_TYPE_INTEGER; arg[0].Integer.Value = 2732 + 800; /* 80 degrees C */ return method_evaluate_method(fw, METHOD_OPTIONAL, "_DTI", arg, 1, method_test_NULL_return, NULL); } static int method_test_SCP(fwts_framework *fw) { int i; for (i = 0; i < 2; i++) { ACPI_OBJECT arg[3]; arg[0].Type = ACPI_TYPE_INTEGER; arg[0].Integer.Value = i; /* Mode */ arg[1].Type = ACPI_TYPE_INTEGER; arg[1].Integer.Value = 5; /* Acoustic limit */ arg[2].Type = ACPI_TYPE_INTEGER; arg[2].Integer.Value = 5; /* Power limit */ if (method_evaluate_method(fw, METHOD_OPTIONAL, "_DTI", arg, 1, method_test_NULL_return, NULL) == FWTS_NOT_EXIST) break; fwts_log_nl(fw); arg[0].Type = ACPI_TYPE_INTEGER; arg[0].Integer.Value = i; /* Mode */ arg[1].Type = ACPI_TYPE_INTEGER; arg[1].Integer.Value = 1; /* Acoustic limit */ arg[2].Type = ACPI_TYPE_INTEGER; arg[2].Integer.Value = 1; /* Power limit */ if (method_evaluate_method(fw, METHOD_OPTIONAL, "_DTI", arg, 1, method_test_NULL_return, NULL) == FWTS_NOT_EXIST) break; } return FWTS_OK; } static void method_test_RTV_return( fwts_framework *fw, char *name, ACPI_BUFFER *buf, ACPI_OBJECT *obj, void *private) { FWTS_UNUSED(private); if (method_check_type(fw, name, buf, ACPI_TYPE_INTEGER) == FWTS_OK) method_passed_sane_uint64(fw, name, obj->Integer.Value); } static int method_test_RTV(fwts_framework *fw) { return method_evaluate_method(fw, METHOD_OPTIONAL, "_RTV", NULL, 0, method_test_RTV_return, "_RTV"); } static int method_test_TPT(fwts_framework *fw) { ACPI_OBJECT arg[1]; arg[0].Type = ACPI_TYPE_INTEGER; arg[0].Integer.Value = 2732 + 900; /* 90 degrees C */ return method_evaluate_method(fw, METHOD_OPTIONAL, "_TPT", arg, 1, method_test_NULL_return, NULL); } static int method_test_TZP(fwts_framework *fw) { return method_evaluate_method(fw, METHOD_OPTIONAL, "_TZP", NULL, 0, method_test_polling_return, "_TZP"); } /* * Section 16 Waking and Sleeping */ static int method_test_PTS(fwts_framework *fw) { int i; for (i = 1; i < 6; i++) { ACPI_OBJECT arg[1]; arg[0].Type = ACPI_TYPE_INTEGER; arg[0].Integer.Value = i; fwts_log_info(fw, "Test _PTS(%d).", i); if (method_evaluate_method(fw, METHOD_MANDITORY, "_PTS", arg, 1, method_test_NULL_return, NULL) == FWTS_NOT_EXIST) { fwts_advice(fw, "Could not find _PTS. This method provides a " "mechanism to do housekeeping functions, such " "as write sleep state to the embedded " "controller before entering a sleep state. If " "the machine cannot suspend (S3), " "hibernate (S4) or shutdown (S5) then it " "could be because _PTS is missing. Note that " "ACPI 1.0 wants _PTS to be executed before " "suspending devices."); break; } fwts_log_nl(fw); } return FWTS_OK; } static int method_test_TTS(fwts_framework *fw) { int i; if (fwts_acpi_object_exists("_TTS") != NULL) { for (i = 1; i < 6; i++) { ACPI_OBJECT arg[1]; arg[0].Type = ACPI_TYPE_INTEGER; arg[0].Integer.Value = i; fwts_log_info(fw, "Test _TTS(%d) Transition To State S%d.", i, i); if (method_evaluate_method(fw, METHOD_MANDITORY, "_TTS", arg, 1, method_test_NULL_return, NULL) == FWTS_NOT_EXIST) { fwts_advice(fw, "Could not find _TTS. This method is invoked " "at the beginning of the the sleep transition " "for S1, S2, S3, S4 and S5 shutdown. The Linux " "kernel caters for firmware that does not implement " "_TTS, however, it will issue a warning that this " "control method is missing."); break; } fwts_log_nl(fw); } } else { fwts_skipped(fw, "Optional control method _TTS does not exist."); } return FWTS_OK; } static void method_test_Sx_return( fwts_framework *fw, char *name, ACPI_BUFFER *buf, ACPI_OBJECT *obj, void *private) { char *method = (char *)private; if (method_check_type(fw, name, buf, ACPI_TYPE_PACKAGE) != FWTS_OK) return; if (method_package_count_equal(fw, name, method, obj, 3) != FWTS_OK) return; fwts_acpi_object_dump(fw, obj); } #define method_test_Sx(name) \ static int method_test ## name(fwts_framework *fw) \ { \ return method_evaluate_method(fw, METHOD_OPTIONAL, \ # name, NULL, 0, method_test_Sx_return, # name);\ } method_test_Sx(_S0) method_test_Sx(_S1) method_test_Sx(_S2) method_test_Sx(_S3) method_test_Sx(_S4) method_test_Sx(_S5) static void method_test_WAK_return( fwts_framework *fw, char *name, ACPI_BUFFER *buf, ACPI_OBJECT *obj, void *private) { FWTS_UNUSED(private); if (method_check_type(fw, name, buf, ACPI_TYPE_PACKAGE) != FWTS_OK) return; if (method_package_count_equal(fw, name, "_WAK", obj, 2) != FWTS_OK) return; if (method_package_elements_all_type(fw, name, "_WAK", obj, ACPI_TYPE_INTEGER) != FWTS_OK) return; method_passed_sane(fw, name, "package"); } static int method_test_WAK(fwts_framework *fw) { uint32_t i; for (i = 1; i < 6; i++) { ACPI_OBJECT arg[1]; arg[0].Type = ACPI_TYPE_INTEGER; arg[0].Integer.Value = i; fwts_log_info(fw, "Test _WAK(%d) System Wake, State S%d.", i, i); if (method_evaluate_method(fw, METHOD_MANDITORY, "_WAK", arg, 1, method_test_WAK_return, &i) == FWTS_NOT_EXIST) { fwts_advice(fw, "Section 7.3.7 states that a system that wakes " "from a sleeping state will invoke the _WAK " "control to issue device, thermal and other " "notifications to ensure that the operating system " "checks the states of various devices, thermal " "zones, etc. The Linux kernel will report an " "ACPI exception if _WAK is does not exist when " "it returns from a sleep state."); break; } fwts_log_nl(fw); } return FWTS_OK; } /* * Appendix B ACPI Extensions for Display Adapters */ static int method_test_DOS(fwts_framework *fw) { ACPI_OBJECT arg[1]; arg[0].Type = ACPI_TYPE_INTEGER; arg[0].Integer.Value = 0 << 2 | 1; /* * BIOS should toggle active display, BIOS controls brightness of * LCD on AC/DC power changes */ return method_evaluate_method(fw, METHOD_OPTIONAL, "_DOS", arg, 1, method_test_NULL_return, NULL); } static void method_test_DOD_return( fwts_framework *fw, char *name, ACPI_BUFFER *buf, ACPI_OBJECT *obj, void *private) { uint32_t i; bool failed = false; static char *dod_type[] = { "Other", "VGA, CRT or VESA Compatible Analog Monitor", "TV/HDTV or other Analog-Video Monitor", "External Digital Monitor", "Internal/Integrated Digital Flat Panel", "Reserved", "Reserved", "Reserved", "Reserved", "Reserved", "Reserved", "Reserved", "Reserved", "Reserved", "Reserved", "Reserved" }; FWTS_UNUSED(private); if (method_check_type(fw, name, buf, ACPI_TYPE_PACKAGE) != FWTS_OK) return; for (i = 0; i < obj->Package.Count; i++) { if (obj->Package.Elements[i].Type != ACPI_TYPE_INTEGER) failed = true; else { uint32_t val = obj->Package.Elements[i].Integer.Value; fwts_log_info_verbatum(fw, "Device %" PRIu32 ":", i); if ((val & 0x80000000)) { fwts_log_info_verbatum(fw, " Video Chip Vendor Scheme %" PRIu32, val); } else { fwts_log_info_verbatum(fw, " Instance: %" PRIu32, val & 0xf); fwts_log_info_verbatum(fw, " Display port attachment: %" PRIu32, (val >> 4) & 0xf); fwts_log_info_verbatum(fw, " Type of display: %" PRIu32 " (%s)", (val >> 8) & 0xf, dod_type[(val >> 8) & 0xf]); fwts_log_info_verbatum(fw, " BIOS can detect device: %" PRIu32, (val >> 16) & 1); fwts_log_info_verbatum(fw, " Non-VGA device: %" PRIu32, (val >> 17) & 1); fwts_log_info_verbatum(fw, " Head or pipe ID: %" PRIu32, (val >> 18) & 0x7); } } } if (failed) fwts_failed(fw, LOG_LEVEL_MEDIUM, "Method_DODNoPackage", "Method _DOD did not return a package of " "%" PRIu32 " integers.", obj->Package.Count); else method_passed_sane(fw, name, "package"); } static int method_test_DOD(fwts_framework *fw) { return method_evaluate_method(fw, METHOD_OPTIONAL, "_DOD", NULL, 0, method_test_DOD_return, NULL); } static void method_test_ROM_return( fwts_framework *fw, char *name, ACPI_BUFFER *buf, ACPI_OBJECT *obj, void *private) { FWTS_UNUSED(obj); FWTS_UNUSED(private); if (method_check_type(fw, name, buf, ACPI_TYPE_BUFFER) == FWTS_OK) method_passed_sane(fw, name, "package"); } static int method_test_ROM(fwts_framework *fw) { ACPI_OBJECT arg[2]; arg[0].Type = ACPI_TYPE_INTEGER; arg[0].Integer.Value = 0; arg[1].Type = ACPI_TYPE_INTEGER; arg[1].Integer.Value = 4096; return method_evaluate_method(fw, METHOD_OPTIONAL, "_ROM", arg, 2, method_test_ROM_return, NULL); } static int method_test_GPD(fwts_framework *fw) { return method_evaluate_method(fw, METHOD_OPTIONAL, "_GPD", NULL, 0, method_test_integer_return, NULL); } static int method_test_SPD(fwts_framework *fw) { ACPI_OBJECT arg[2]; int i; for (i = 0; i < 4; i++) { arg[0].Type = ACPI_TYPE_INTEGER; arg[0].Integer.Value = i; /* bits 00..11, post device */ if (method_evaluate_method(fw, METHOD_OPTIONAL, "_SPD", arg, 1, method_test_passed_failed_return, NULL) == FWTS_NOT_EXIST) break; } return FWTS_OK; } static int method_test_VPO(fwts_framework *fw) { return method_evaluate_method(fw, METHOD_OPTIONAL, "_VPO", NULL, 0, method_test_integer_return, NULL); } static int method_test_ADR(fwts_framework *fw) { return method_evaluate_method(fw, METHOD_OPTIONAL, "_ADR", NULL, 0, method_test_integer_return, NULL); } static void method_test_BCL_return( fwts_framework *fw, char *name, ACPI_BUFFER *buf, ACPI_OBJECT *obj, void *private) { uint32_t i; bool failed = false; bool ascending_levels = false; char *str = NULL; FWTS_UNUSED(private); if (method_check_type(fw, name, buf, ACPI_TYPE_PACKAGE) != FWTS_OK) return; if (method_package_count_min(fw, name, "_BCL", obj, 3) != FWTS_OK) return; if (method_package_elements_all_type(fw, name, "_BCL", obj, ACPI_TYPE_INTEGER) != FWTS_OK) return; if (obj->Package.Elements[0].Integer.Value < obj->Package.Elements[1].Integer.Value) { fwts_failed(fw, LOG_LEVEL_MEDIUM, "Method_BCLMaxLevel", "Brightness level when on full " " power (%" PRIu64 ") is less than " "brightness level when on " "battery power (%" PRIu64 ").", (uint64_t)obj->Package.Elements[0].Integer.Value, (uint64_t)obj->Package.Elements[1].Integer.Value); failed = true; } for (i = 2; i < obj->Package.Count - 1; i++) { if (obj->Package.Elements[i].Integer.Value > obj->Package.Elements[i+1].Integer.Value) { fwts_log_info(fw, "Brightness level %" PRIu64 " (index %" PRIu32 ") is greater " "than brightness level %" PRIu64 " (index %d" PRIu32 "), should " "be in ascending order.", (uint64_t)obj->Package.Elements[i].Integer.Value, i, (uint64_t)obj->Package.Elements[i+1].Integer.Value, i+1); ascending_levels = true; failed = true; } } if (ascending_levels) { fwts_failed(fw, LOG_LEVEL_MEDIUM, "Method_BCLAscendingOrder", "Some or all of the brightness " "level are not in ascending " "order which should be fixed " "in the firmware."); failed = true; } fwts_log_info(fw, "Brightness levels for %s:" ,name); fwts_log_info_verbatum(fw, " Level on full power : %" PRIu64, (uint64_t)obj->Package.Elements[0].Integer.Value); fwts_log_info_verbatum(fw, " Level on battery power: %" PRIu64, (uint64_t)obj->Package.Elements[1].Integer.Value); for (i = 2; i < obj->Package.Count; i++) { char tmp[12]; snprintf(tmp, sizeof(tmp), "%s%" PRIu64, i == 2 ? "" : ", ", (uint64_t)obj->Package.Elements[i].Integer.Value); str = fwts_realloc_strcat(str, tmp); if (!str) break; } if (str) { fwts_log_info_verbatum(fw, " Brightness Levels : %s", str); free(str); } if (failed) fwts_advice(fw, "%s seems to be " "misconfigured and is " "returning incorrect " "brightness levels." "It is worth sanity checking " "this with the firmware test " "suite interactive test " "'brightness' to see how " "broken this is. As it is, " "_BCL is broken and needs to " "be fixed.", name); else fwts_passed(fw, "%s returned a sane " "package of %" PRIu32 " integers.", name, obj->Package.Count); } static int method_test_BCL(fwts_framework *fw) { return method_evaluate_method(fw, METHOD_OPTIONAL, "_BCL", NULL, 0, method_test_BCL_return, NULL); } static int method_test_BCM(fwts_framework *fw) { ACPI_OBJECT arg[1]; arg[0].Type = ACPI_TYPE_INTEGER; arg[0].Integer.Value = 0; return method_evaluate_method(fw, METHOD_OPTIONAL, "_BCM", arg, 1, method_test_NULL_return, NULL); } static int method_test_BQC(fwts_framework *fw) { return method_evaluate_method(fw, METHOD_OPTIONAL, "_BQC", NULL, 0, method_test_integer_return, NULL); } static void method_test_DDC_return( fwts_framework *fw, char *name, ACPI_BUFFER *buf, ACPI_OBJECT *obj, void *private) { uint32_t requested = *(uint32_t*)private; FWTS_UNUSED(buf); if (obj == NULL) { method_failed_null_object(fw, name, "a buffer or integer"); return; } switch (obj->Type) { case ACPI_TYPE_BUFFER: if (requested != obj->Buffer.Length) fwts_failed(fw, LOG_LEVEL_MEDIUM, "Method_DDCElementCount", "%s returned a buffer of %" PRIu32 " items, " "expected %" PRIu32 ".", name, obj->Buffer.Length, requested); else fwts_passed(fw, "Method %s returned a buffer of %d items " "as expected.", name, obj->Buffer.Length); break; case ACPI_TYPE_INTEGER: fwts_passed(fw, "%s could not return a buffer of %d " "items and instead returned an error " "status.", name, obj->Buffer.Length); break; default: fwts_failed(fw, LOG_LEVEL_MEDIUM, "Method_DDCBadReturnType", "%s did not return a buffer or an integer.", name); break; } } static int method_test_DDC(fwts_framework *fw) { ACPI_OBJECT arg[1]; uint32_t i; for (i = 128; i <= 256; i <<= 1) { arg[0].Type = ACPI_TYPE_INTEGER; arg[0].Integer.Value = 128; if (method_evaluate_method(fw, METHOD_OPTIONAL, "_DDC", arg, 1, method_test_DDC_return, &i) == FWTS_NOT_EXIST) break; } return FWTS_OK; } static int method_test_DCS(fwts_framework *fw) { return method_evaluate_method(fw, METHOD_OPTIONAL, "_DCS", NULL, 0, method_test_integer_return, NULL); } static int method_test_DGS(fwts_framework *fw) { return method_evaluate_method(fw, METHOD_OPTIONAL, "_DGS", NULL, 0, method_test_integer_return, NULL); } static int method_test_DSS(fwts_framework *fw) { ACPI_OBJECT arg[1]; arg[0].Type = ACPI_TYPE_INTEGER; arg[0].Integer.Value = 0; return method_evaluate_method(fw, METHOD_OPTIONAL, "_DSS", arg, 1, method_test_NULL_return, NULL); } static int method_test_CBA(fwts_framework *fw) { return method_evaluate_method(fw, METHOD_OPTIONAL, "_CBA", NULL, 0, method_test_integer_return, NULL); } static int method_test_CDM(fwts_framework *fw) { return method_evaluate_method(fw, METHOD_OPTIONAL, "_CDM", NULL, 0, method_test_integer_return, NULL); } /* * Intelligent Platform Management Interface (IPMI) Specification */ static int method_test_IFT(fwts_framework *fw) { return method_evaluate_method(fw, METHOD_OPTIONAL, "_IFT", NULL, 0, method_test_integer_return, NULL); } static int method_test_SRV(fwts_framework *fw) { return method_evaluate_method(fw, METHOD_OPTIONAL, "_SRV", NULL, 0, method_test_integer_return, NULL); } /* * Tests */ static fwts_framework_minor_test method_tests[] = { { method_name_check, "Test Method Names." }, /* Section 5.3 */ /* { method_test_GPE, "Test _GPE (General Purpose Events)." }, */ /* { method_test_PR , "Test _PR (Processor)." }, */ /* Section 5.6 ACPI Event Programming Model */ /* { method_test_Wxx, "Test _Wxx (Wake Event)." }, */ { method_test_AEI, "Test _AEI." }, /* { method_test_EVT, "Test _EVT (Event Method)." }, */ /* Section 5.7 Predefined Objects */ /* { method_test_DLM, "Test _DLM (Device Lock Mutex)." }, */ /* { method_test_GL , "Test _GL (Global Lock)." }, */ /* { method_test_OS , "Test _OS (Operating System)." }, */ /* { method_test_REV, "Test _REV (Revision)." }, */ /* Section 5.8 System Configuration Objects */ { method_test_PIC, "Test _PIC (Inform AML of Interrupt Model)." }, /* Section 6.1 Device Identification Objects */ { method_test_CID, "Test _CID (Compatible ID)." }, /* { method_test_CLS, "Test _CLS (Class Code)." }, */ { method_test_DDN, "Test _DDN (DOS Device Name)." }, { method_test_HID, "Test _HID (Hardware ID)." }, { method_test_HRV, "Test _HRV (Hardware Revision Number)." }, /* { method_test_MLS, "Test _MLS (Multiple Language String)." }, */ { method_test_PLD, "Test _PLD (Physical Device Location)." }, { method_test_SUB, "Test _SUB (Subsystem ID)." }, { method_test_SUN, "Test _SUN (Slot User Number)." }, { method_test_STR, "Test _STR (String)." }, { method_test_UID, "Test _UID (Unique ID)." }, /* Section 6.2 Device Configurations Objects */ { method_test_CDM, "Test _CDM (Clock Domain)." }, { method_test_CRS, "Test _CRS (Current Resource Settings)." }, { method_test_DIS, "Test _DIS (Disable)." }, { method_test_DMA, "Test _DMA (Direct Memory Access)." }, { method_test_FIX, "Test _FIX (Fixed Register Resource Provider)." }, { method_test_GSB, "Test _GSB (Global System Interrupt Base)." }, { method_test_HPP, "Test _HPP (Hot Plug Parameters)." }, /* { method_test_HPX, "Test _HPX (Hot Plug Extensions)." }, */ /* { method_test_MAT, "Test _MAT (Multiple APIC Table Entry)." }, */ { method_test_PRS, "Test _PRS (Possible Resource Settings)." }, { method_test_PXM, "Test _PXM (Proximity)." }, /* { method_test_SLI, "Test _SLI (System Locality Information)." }, */ /* { method_test_SRS, "Test _SRS (Set Resource Settings)." }, */ /* Section 6.3 Device Insertion, Removal and Status Objects */ { method_test_EDL, "Test _EDL (Eject Device List)." }, { method_test_EJD, "Test _EJD (Ejection Dependent Device)." }, { method_test_EJ0, "Test _EJ0 (Eject)." }, { method_test_EJ1, "Test _EJ1 (Eject)." }, { method_test_EJ2, "Test _EJ2 (Eject)." }, { method_test_EJ3, "Test _EJ3 (Eject)." }, { method_test_EJ4, "Test _EJ4 (Eject)." }, { method_test_LCK, "Test _LCK (Lock)." }, /* { method_test_OST, "Test _OST (OSPM Status Indication)." }, */ { method_test_RMV, "Test _RMV (Remove)." }, { method_test_STA, "Test _STA (Status)." }, /* Section 6.4 Resource Data Types for ACPI */ /* Section 6.5 Other Objects and Controls */ /* { method_test_DEP, "Test _DEP (Operational Region Dependencies)." }, */ { method_test_BDN, "Test _BDN (BIOS Dock Name)." }, { method_test_BBN, "Test _BBN (Base Bus Number)." }, { method_test_DCK, "Test _DCK (Dock)." }, { method_test_INI, "Test _INI (Initialize)." }, /* { method_test_GLK, "Test _GLK (Global Lock)." }, */ /* { method_test_REG, "Test _REG (Region)." }, */ { method_test_SEG, "Test _SEG (Segment)." }, /* Section 7.1 Declaring a Power Resource Object */ { method_test_OFF, "Test _OFF (Set resource off)." }, { method_test_ON, "Test _ON (Set resource on)." }, /* Section 7.2 Device Power Management Objects */ { method_test_DSW, "Test _DSW (Device Sleep Wake)." }, { method_test_IRC, "Test _IRC (In Rush Current)." }, { method_test_PRE, "Test _PRE (Power Resources for Enumeration)." }, { method_test_PR0, "Test _PR0 (Power Resources for D0)." }, { method_test_PR1, "Test _PR1 (Power Resources for D1)." }, { method_test_PR2, "Test _PR2 (Power Resources for D2)." }, { method_test_PR3, "Test _PR3 (Power Resources for D3)." }, /* { method_test_PRW, "Test _PRW (Power Resources for Wake)." }, */ { method_test_PS0, "Test _PS0 (Power State 0)." }, { method_test_PS1, "Test _PS1 (Power State 1)." }, { method_test_PS2, "Test _PS2 (Power State 2)." }, { method_test_PS3, "Test _PS3 (Power State 3)." }, { method_test_PSC, "Test _PSC (Power State Current)." }, { method_test_PSE, "Test _PSE (Power State for Enumeration)." }, { method_test_PSW, "Test _PSW (Power State Wake)." }, { method_test_S1D, "Test _S1D (S1 Device State)." }, { method_test_S2D, "Test _S2D (S2 Device State)." }, { method_test_S3D, "Test _S3D (S3 Device State)." }, { method_test_S4D, "Test _S4D (S4 Device State)." }, { method_test_S0W, "Test _S0W (S0 Device Wake State)." }, { method_test_S1W, "Test _S1W (S1 Device Wake State)." }, { method_test_S2W, "Test _S2W (S2 Device Wake State)." }, { method_test_S3W, "Test _S3W (S3 Device Wake State)." }, { method_test_S4W, "Test _S4W (S4 Device Wake State)." }, /* Section 7.3 OEM-Supplied System-Level Control Methods */ { method_test_S0_, "Test _S0_ (S0 System State)." }, { method_test_S1_, "Test _S1_ (S1 System State)." }, { method_test_S2_, "Test _S2_ (S2 System State)." }, { method_test_S3_, "Test _S3_ (S3 System State)." }, { method_test_S4_, "Test _S4_ (S4 System State)." }, { method_test_S5_, "Test _S5_ (S5 System State)." }, { method_test_SWS, "Test _SWS (System Wake Source)." }, /* Section 8.4 Declaring Processors */ { method_test_PSS, "Test _PSS (Performance Supported States)." }, { method_test_CPC, "Test _CPC (Continuous Performance Control)." }, { method_test_CSD, "Test _CSD (C State Dependencies)." }, { method_test_CST, "Test _CST (C States)." }, { method_test_PCT, "Test _PCT (Performance Control)." }, /* { method_test_PDC, "Test _PDC (Processor Driver Capabilities)." }, */ { method_test_PDL, "Test _PDL (P-State Depth Limit)." }, { method_test_PPC, "Test _PPC (Performance Present Capabilities)." }, { method_test_PPE, "Test _PPE (Polling for Platform Error)." }, /* { method_test_PSD, "Test _PSD (Power State Dependencies)." }, */ /* { method_test_PTC, "Test _PTC (Processor Throttling Control)." }, */ { method_test_TDL, "Test _TDL (T-State Depth Limit)." }, { method_test_TPC, "Test _TPC (Throttling Present Capabilities)." }, { method_test_TSD, "Test _TSD (Throttling State Dependencies)." }, { method_test_TSS, "Test _TSS (Throttling Supported States)." }, /* Section 8.5 Processor Aggregator Device */ /* Section 9.1 System Indicators */ { method_test_MSG, "Test _MSG (Message)." }, /* { method_test_PUR, "Test _PUR (Processor Utilization Request)." }, */ /* { method_test_SST, "Test _SST (System Status)." }, */ /* Section 9.2 Ambient Light Sensor Device */ { method_test_ALC, "Test _ALC (Ambient Light Colour Chromaticity)." }, { method_test_ALI, "Test _ALI (Ambient Light Illuminance)." }, { method_test_ALT, "Test _ALT (Ambient Light Temperature)." }, { method_test_ALP, "Test _ALP (Ambient Light Polling). "}, /* { method_test_ALR, "Test _ALR (Ambient Light Response). "}, */ /* Section 9.3 Battery Device */ /* Section 9.4 Lid Device */ { method_test_LID, "Test _LID (Lid Status)." }, /* Section 9.8 ATA Controllers */ /* { method_test_GTF, "Test _GTF (Get Task File)." }, */ /* { method_test_GTM, "Test _GTM (Get Timing Mode)." }, */ /* { method_test_SDD, "Test _SDD (Set Device Data)." }, */ /* { method_test_STM, "Test _STM (Set Timing Mode)." }, */ /* Section 9.9 Floppy Controllers */ /* { method_test_FDE, "Test _FDE (Floppy Disk Enumerate)." }, */ /* { method_test_FDI, "Test _FDI (Floppy Drive Information)." }, */ /* { method_test_FDM, "Test _FDM (Floppy Drive Mode)." }, */ /* Section 9.12 Memory Devices */ /* { method_test_MBM, "Test _MBM (Memory Bandwidth Monitoring Data)." }, */ /* { method_test_MSM, "Test _MSM (Memory Set Monitoring)." }, */ /* Section 9.13 USB Port Capabilities */ /* { method_test_UPC, "Test _UPC (USB Port Capabilities)." }, */ /* Section 9.14 Device Object Name Collision */ /* { method_test_DSM, "Test _DSM (Device Specific Method)." }, */ /* Section 9.16 User Presence Detection Device */ { method_test_UPD, "Test _UPD (User Presence Detect)." }, { method_test_UPP, "Test _UPP (User Presence Polling)." }, /* Section 9.18 Wake Alarm Device */ { method_test_GCP, "Test _GCP (Get Capabilities)." }, { method_test_GRT, "Test _GRT (Get Real Time)." }, { method_test_GWS, "Test _GWS (Get Wake Status)." }, /* { method_test_CWS, "Test _CWS (Clear Wake Status)." }, */ /* { method_test_SRT, "Test _SRT (Set Real Time)." }, */ { method_test_STP, "Test _STP (Set Expired Timer Wake Policy)." }, { method_test_STV, "Test _STV (Set Timer Value)." }, { method_test_TIP, "Test _TIP (Expired Timer Wake Policy)." }, { method_test_TIV, "Test _TIV (Timer Values)." }, /* Section 10.1 Smart Battery */ { method_test_SBS, "Test _SBS (Smart Battery Subsystem)." }, /* Section 10.2 Battery Controls */ { method_test_BCT, "Test _BCT (Battery Charge Time)." }, { method_test_BIF, "Test _BIF (Battery Information)." }, { method_test_BIX, "Test _BIX (Battery Information Extended)." }, { method_test_BMA, "Test _BMA (Battery Measurement Averaging)." }, { method_test_BMC, "Test _BMC (Battery Maintenance Control)." }, { method_test_BMD, "Test _BMD (Battery Maintenance Data)." }, { method_test_BMS, "Test _BMS (Battery Measurement Sampling Time)." }, { method_test_BST, "Test _BST (Battery Status)." }, { method_test_BTP, "Test _BTP (Battery Trip Point)." }, { method_test_BTM, "Test _BTM (Battery Time)." }, /* { method_test_BLT, "Test _BLT (Battery Level Threshold)." }, */ { method_test_PCL, "Test _PCL (Power Consumer List)." }, /* Section 10.3 AC Adapters and Power Source Objects */ /* { method_test_PCL, "Test _PCL (Power Consumer List)." }, */ { method_test_PIF, "Test _PIF (Power Source Information)." }, /* { method_test_PRL, "Test _PRL (Power Source Redundancy List)." }, */ { method_test_PSR, "Test _PSR (Power Source)." }, /* Section 10.4 Power Meters */ { method_test_GAI, "Test _GAI (Get Averaging Level)." }, /* { method_test_GHL, "Test _GHL (Get Harware Limit)." }, */ /* { method_test_PAI, "Test _PAI (Power Averaging Interval)." }, */ /* { method_test_PMC, "Test _PMC (Power Meter Capabilities)." }, */ /* { method_test_PMD, "Test _PMD (Power Meter Devices)." }, */ { method_test_PMM, "Test _PMM (Power Meter Measurement)." }, /* { method_test_PTP, "Test _PTP (Power Trip Points)." }, */ /* { method_test_SHL, "Test _SHL (Set Hardware Limit)." }, */ /* Section 11.3 Fan Devices */ { method_test_FIF, "Test _FIF (Fan Information)." }, /* { method_test_FPS, "Test _FPS (Fan Performance States)." }, */ { method_test_FSL, "Test _FSL (Fan Set Level)." }, { method_test_FST, "Test _FST (Fan Status)." }, /* Section 11.4 Thermal Objects */ { method_test_ACx, "Test _ACx (Active Cooling)." }, /* { method_test_ART, "Test _ART (Active Cooling Relationship Table)." }, */ /* { method_test_ALx, "Test _ALx (Active List)". }, */ { method_test_CRT, "Test _CRT (Critical Trip Point)." }, { method_test_DTI, "Test _DTI (Device Temperature Indication)." }, { method_test_HOT, "Test _HOT (Hot Temperature)." }, { method_test_NTT, "Test _NTT (Notification Temp Threshold)." }, /* { method_test_PSL, "Test _PSL (Passive List)." }, */ { method_test_PSV, "Test _PSV (Passive Temp)." }, { method_test_RTV, "Test _RTV (Relative Temp Values)." }, { method_test_SCP, "Test _SCP (Set Cooling Policy)." }, { method_test_TC1, "Test _TC1 (Thermal Constant 1)." }, { method_test_TC2, "Test _TC2 (Thermal Constant 2)." }, { method_test_TMP, "Test _TMP (Thermal Zone Current Temp)." }, { method_test_TPT, "Test _TPT (Trip Point Temperature)." }, /* { method_test_TRT, "Test _TRT (Thermal Relationship Table)." }, */ { method_test_TSP, "Test _TSP (Thermal Sampling Period)." }, { method_test_TST, "Test _TST (Temperature Sensor Threshold)." }, /* { method_test_TZD, "Test _TZD (Thermal Zone Devices)." }, */ { method_test_TZP, "Test _TZP (Thermal Zone Polling)." }, /* Section 16 Waking and Sleeping */ { method_test_PTS, "Test _PTS (Prepare to Sleep)." }, { method_test_TTS, "Test _TTS (Transition to State)." }, { method_test_S0, "Test _S0 (System S0 State)." }, { method_test_S1, "Test _S1 (System S1 State)." }, { method_test_S2, "Test _S2 (System S2 State)." }, { method_test_S3, "Test _S3 (System S3 State)." }, { method_test_S4, "Test _S4 (System S4 State)." }, { method_test_S5, "Test _S5 (System S5 State)." }, { method_test_WAK, "Test _WAK (System Wake)." }, /* Appendix B, ACPI Extensions for Display Adapters */ { method_test_ADR, "Test _ADR (Return Unique ID for Device)." }, { method_test_BCL, "Test _BCL (Query List of Brightness Control Levels Supported)." }, { method_test_BCM, "Test _BCM (Set Brightness Level)." }, { method_test_BQC, "Test _BQC (Brightness Query Current Level)." }, { method_test_DCS, "Test _DCS (Return the Status of Output Device)." }, { method_test_DDC, "Test _DDC (Return the EDID for this Device)." }, { method_test_DSS, "Test _DSS (Device Set State)." }, { method_test_DGS, "Test _DGS (Query Graphics State)." }, { method_test_DOD, "Test _DOD (Enumerate All Devices Attached to Display Adapter)." }, { method_test_DOS, "Test _DOS (Enable/Disable Output Switching)." }, { method_test_GPD, "Test _GPD (Get POST Device)." }, { method_test_ROM, "Test _ROM (Get ROM Data)." }, { method_test_SPD, "Test _SPD (Set POST Device)." }, { method_test_VPO, "Test _VPO (Video POST Options)." }, /* From PCI Specification */ { method_test_CBA, "Test _CBA (Configuration Base Address)." }, /* From IPMI Specification 2.0 */ { method_test_IFT, "Test _IFT (IPMI Interface Type)." }, { method_test_SRV, "Test _SRV (IPMI Interface Revision)." }, /* End! */ { NULL, NULL } }; static fwts_framework_ops method_ops = { .description = "ACPI DSDT Method Semantic tests.", .init = method_init, .deinit = method_deinit, .minor_tests = method_tests }; FWTS_REGISTER("method", &method_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH); src/acpi/osilinux/000077500000000000000000000000001231470457100144375ustar00rootroot00000000000000src/acpi/osilinux/osilinux.c000066400000000000000000000054771231470457100164720ustar00rootroot00000000000000/* * Copyright (C) 2010-2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #include "fwts.h" #ifdef FWTS_ARCH_INTEL #include #include #include #include #include #include static int osilinux_test1(fwts_framework *fw) { fwts_list_link *item; fwts_list_link *dumpitem = NULL; fwts_list* disassembly; int depth = 0; int dumpdepth = 0; int found = 0; if (fwts_iasl_disassemble(fw, "DSDT", 0, &disassembly) != FWTS_OK) { fwts_aborted(fw, "Cannot disassemble DSDT with iasl."); return FWTS_ERROR; } if (disassembly == NULL) { fwts_failed(fw, LOG_LEVEL_MEDIUM, "NoDSDT", "Could not read ACPI DSDT table."); return FWTS_ERROR; } fwts_log_info(fw, "This is not strictly a failure mode, it just alerts " "one that this has been defined in the DSDT and probably " "should be avoided since the Linux ACPI driver matches " "onto the Windows _OSI strings"); fwts_list_foreach(item, disassembly) { char *line = fwts_text_list_text(item); char *str; if (strstr(line, "{")) { depth++; if (dumpdepth == 0) dumpitem = item; } if (strstr(line, "}")) { depth--; if (dumpdepth != 0 && dumpdepth != depth) { found++; while (dumpitem != NULL && dumpitem != item->next) { fwts_log_warning_verbatum(fw, "%s", fwts_text_list_text(dumpitem)); dumpitem = dumpitem->next; } dumpdepth = 0; fwts_warning(fw, "DSDT implements a deprecated _OSI(\"Linux\") test."); } } if ((str = strstr(line, "_OSI")) != NULL) { if (strstr(str + 4, "Linux") || strstr(str + 4, "linux")) dumpdepth = depth; } } fwts_text_list_free(disassembly); if (!found) fwts_passed(fw, "DSDT does not implement a deprecated _OSI(\"Linux\") test."); return FWTS_OK; } static fwts_framework_minor_test osilinux_tests[] = { { osilinux_test1, "Disassemble DSDT to check for _OSI(\"Linux\")." }, { NULL, NULL } }; static fwts_framework_ops osilinux_ops = { .description = "Disassemble DSDT to check for _OSI(\"Linux\").", .minor_tests = osilinux_tests }; FWTS_REGISTER("osilinux", &osilinux_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH); #endif src/acpi/pcc/000077500000000000000000000000001231470457100133325ustar00rootroot00000000000000src/acpi/pcc/pcc.c000066400000000000000000000350631231470457100142520ustar00rootroot00000000000000/* * Copyright (C) 2010-2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #include "fwts.h" #ifdef FWTS_ARCH_INTEL #include #include #include #include #include /* acpica headers */ #include "acpi.h" #include "fwts_acpi_object_eval.h" /* * This test does some sanity checking on the PCC interface, * see http://acpica.org/download/Processor-Clocking-Control-v1p0.pdf */ #define PCC_HDR_SIGNATURE 0x24504343 /* $PCC */ /* * For the moment, we turn this off as I am concerned that reads of this region * may cause issues. */ #define CHECK_PCC_HDR 0 typedef struct { uint8_t descriptor; uint8_t length; uint8_t space_id; uint8_t resource_usage; uint8_t type_specific; uint64_t granularity; uint64_t minimum; uint64_t maximum; uint64_t translation_offset; uint64_t address_length; } __attribute__ ((packed)) fwts_pcc_memory_resource; typedef struct { uint8_t descriptor; uint16_t length; uint8_t space_id; uint8_t bit_width; uint8_t bit_offset; uint8_t access_size; uint64_t address; } __attribute__ ((packed)) fwts_pcc_register_resource; typedef struct { uint32_t signature; uint16_t length; uint8_t major; uint8_t minor; uint32_t features; uint16_t command; uint16_t status; uint32_t latency; uint32_t minimum_time; uint32_t maximum_time; uint32_t nominal; uint32_t throttled_frequency; uint32_t minimum_frequency; } __attribute__ ((packed)) fwts_pcc_header; /* * pcc_init() * initialize ACPI */ static int pcc_init(fwts_framework *fw) { if (fwts_acpi_init(fw) != FWTS_OK) return FWTS_ERROR; return FWTS_OK; } /* * pcc_deinit * de-intialize ACPI */ static int pcc_deinit(fwts_framework *fw) { return fwts_acpi_deinit(fw); } #if CHECK_PCC_HDR static void pcc_check_pcc_header( fwts_framework *fw, uint64_t addr, uint64_t length, bool *failed) { fwts_pcc_header *hdr; hdr = (fwts_pcc_header *)fwts_mmap((off_t)addr, (size_t)length); if (hdr == NULL) { fwts_log_info(fw, "Failed to memory map PCC header 0x%" PRIx64 "..0x%" PRIx64 ".", addr, addr + length); return; } fwts_log_info_verbatum(fw, "PCC header at 0x%" PRIx64 ".", addr); fwts_log_info_verbatum(fw, " Signature: 0x%" PRIx32, hdr->signature); fwts_log_info_verbatum(fw, " Length: 0x%" PRIx16, hdr->length); fwts_log_info_verbatum(fw, " Major: 0x%" PRIx8, hdr->major); fwts_log_info_verbatum(fw, " Minor: 0x%" PRIx8, hdr->minor); fwts_log_info_verbatum(fw, " Features: 0x%" PRIx32, hdr->features); fwts_log_info_verbatum(fw, " Commend: 0x%" PRIx16, hdr->command); fwts_log_info_verbatum(fw, " Status: 0x%" PRIx16, hdr->status); fwts_log_info_verbatum(fw, " Latency: 0x%" PRIx32, hdr->latency); fwts_log_info_verbatum(fw, " Minimum Time: 0x%" PRIx32, hdr->minimum_time); fwts_log_info_verbatum(fw, " Maximum Time: 0x%" PRIx32, hdr->maximum_time); fwts_log_info_verbatum(fw, " Nominal: 0x%" PRIx32, hdr->nominal); fwts_log_info_verbatum(fw, " Throttled Freq.: 0x%" PRIx32, hdr->throttled_frequency); fwts_log_info_verbatum(fw, " Minimum Freq.: 0x%" PRIx32, hdr->minimum_frequency); fwts_munmap(hdr, (size_t)length); fwts_log_nl(fw); if (hdr->signature != PCC_HDR_SIGNATURE) { fwts_failed(fw, LOG_LEVEL_HIGH, "PCCHdrSignatureError", "The PCC Header Signature is not a valid PCC signature, was expecting " "0x%" PRIx32 " ($PCC), got instead 0x%" PRIx32, PCC_HDR_SIGNATURE, hdr->signature); *failed = true; } } #endif static void pcc_check_shared_memory_region( fwts_framework *fw, const char *name, ACPI_OBJECT *pcc_obj, bool *failed) { fwts_pcc_memory_resource *pcc_mr; if (pcc_obj->Type != ACPI_TYPE_BUFFER) { fwts_failed(fw, LOG_LEVEL_HIGH, "PCCHElementZeroNotBuffer", "PCCH object %s returned a package with element zero " "was not an ACPI_BUFFER. This does not conform to the " "PCC specification.", name); *failed = true; return; } if (pcc_obj->Buffer.Pointer == NULL) { fwts_failed(fw, LOG_LEVEL_HIGH, "PCCHElementZeroBufferNull", "PCCH object %s returned a package with element zero " "which was an ACPI_BUFFER, however, the buffer pointer " "was NULL. This does not conform to the PCC " "specification.", name); *failed = true; return; } if (pcc_obj->Buffer.Length < sizeof(fwts_pcc_memory_resource)) { fwts_failed(fw, LOG_LEVEL_HIGH, "PCCHMemoryResourceIllegalSize", "PCCH object %s returned a PCC memory resource buffer " "which was the wrong size. Got %" PRIu32 " bytes, " "expected %zu bytes.", name, pcc_obj->Buffer.Length, sizeof(fwts_pcc_memory_resource)); *failed = true; return; } pcc_mr = (fwts_pcc_memory_resource *)pcc_obj->Buffer.Pointer; fwts_log_info_verbatum(fw, "PCC Memory Resource (Shared Memory Region) for %s:", name); fwts_log_info_verbatum(fw, " Descriptor: 0x%" PRIx8, pcc_mr->descriptor); fwts_log_info_verbatum(fw, " Length: 0x%" PRIx8, pcc_mr->length); fwts_log_info_verbatum(fw, " Space ID: 0x%" PRIx8, pcc_mr->space_id); fwts_log_info_verbatum(fw, " Resource Usage: 0x%" PRIx8, pcc_mr->resource_usage); fwts_log_info_verbatum(fw, " Type Specific: 0x%" PRIx8, pcc_mr->type_specific); fwts_log_info_verbatum(fw, " Minimum: 0x%" PRIx64, pcc_mr->minimum); fwts_log_info_verbatum(fw, " Maximum: 0x%" PRIx64, pcc_mr->maximum); fwts_log_info_verbatum(fw, " Translation Offset: 0x%" PRIx64, pcc_mr->translation_offset); fwts_log_info_verbatum(fw, " Address Length: 0x%" PRIx64, pcc_mr->address_length); if (pcc_mr->space_id != ACPI_ADR_SPACE_SYSTEM_MEMORY) { fwts_failed(fw, LOG_LEVEL_HIGH, "PCCMemoryResourceSpaceIdWrongType", "PCC Memory Resource Space ID is of the wrong type, got 0x%" PRIx8 ", expected to get type 0x%" PRIx8 " (ACPI_ADR_SPACE_SYSTEM_MEMORY).", pcc_mr->space_id, ACPI_ADR_SPACE_SYSTEM_MEMORY); *failed = true; } if (pcc_mr->length == 0) { fwts_failed(fw, LOG_LEVEL_HIGH, "PCCMemoryResourceAddrLength", "PCC Memory Resource Address Length is zero, this is clearly incorrect."); *failed = true; } if (pcc_mr->minimum & 4095) { fwts_failed(fw, LOG_LEVEL_HIGH, "PCCMemoryNotPageAligned", "PCC Memory Resource Minimum Address is not page aligned. It must " "start on a 4K page boundary."); *failed = true; } /* TODO: We should also check if the region is in the e820 region too */ if (pcc_mr->minimum == 0) { fwts_failed(fw, LOG_LEVEL_HIGH, "PCCMemoryResourceMinAddr", "PCC Memory Resource Minimum Address is zero, this is clearly incorrect."); *failed = true; } if (pcc_mr->maximum == 0) { fwts_failed(fw, LOG_LEVEL_HIGH, "PCCMemoryResourceMaxAddr", "PCC Memory Resource Maximum Address is zero, this is clearly incorrect."); *failed = true; } if (pcc_mr->minimum >= pcc_mr->maximum) { fwts_failed(fw, LOG_LEVEL_HIGH, "PCCMemoryResourceMinMaxAddrError", "PCC Memory Resource Minimum Address should be less than " "the Maximum Address: Min: 0x%" PRIx64 ", Max: 0x%" PRIx64, pcc_mr->minimum, pcc_mr->maximum); *failed = true; } fwts_log_nl(fw); #if CHECK_PCC_HDR pcc_check_pcc_header(fw, pcc_mr->minimum, pcc_mr->length, failed); #endif } static void pcc_check_doorbell_address( fwts_framework *fw, const char *name, ACPI_OBJECT *pcc_obj, bool *failed) { fwts_pcc_register_resource *pcc_rr; if (pcc_obj->Type != ACPI_TYPE_BUFFER) { fwts_failed(fw, LOG_LEVEL_HIGH, "PCCHElementOneNotBuffer", "PCCH object %s returned a package with element zero " "was not an ACPI_BUFFER. This does not conform to the " "PCC specification.", name); *failed = true; return; } if (pcc_obj->Buffer.Pointer == NULL) { fwts_failed(fw, LOG_LEVEL_HIGH, "PCCHElementOneBufferNull", "PCCH object %s returned a package with element one " "which was an ACPI_BUFFER, however, the buffer pointer " "was NULL. This does not conform to the PCC " "specification.", name); *failed = true; return; } if (pcc_obj->Buffer.Length < sizeof(fwts_pcc_register_resource)) { fwts_failed(fw, LOG_LEVEL_HIGH, "PCCHRegisterResourceIllegalSize", "PCCH object %s returned a PCC register resource buffer " "which was the wrong size. Got %" PRIu32 " bytes, " "expected %zu bytes.", name, pcc_obj->Buffer.Length, sizeof(fwts_pcc_register_resource)); *failed = true; return; } pcc_rr = (fwts_pcc_register_resource *)pcc_obj->Buffer.Pointer; fwts_log_info_verbatum(fw, "PCC Register Resource (Doorbell) for %s:", name); fwts_log_info_verbatum(fw, " Descriptor: 0x%" PRIx8, pcc_rr->descriptor); fwts_log_info_verbatum(fw, " Length: 0x%" PRIx8, pcc_rr->length); fwts_log_info_verbatum(fw, " Space ID: 0x%" PRIx8, pcc_rr->space_id); fwts_log_info_verbatum(fw, " Bit Width: 0x%" PRIx8, pcc_rr->bit_width); fwts_log_info_verbatum(fw, " Bit Offset: 0x%" PRIx8, pcc_rr->bit_offset); fwts_log_info_verbatum(fw, " Access Size: 0x%" PRIx8, pcc_rr->access_size); fwts_log_info_verbatum(fw, " Address: 0x%" PRIx64, pcc_rr->address); if (pcc_rr->space_id != ACPI_ADR_SPACE_SYSTEM_IO) { fwts_failed(fw, LOG_LEVEL_HIGH, "PCCRegisterResourceSpaceIdWrongType", "PCC Register Resource Space ID is of the wrong type, got 0x%" PRIx8 ", expected to get type 0x%" PRIx8 " (ACPI_ADR_SPACE_SYSTEM_IO).", pcc_rr->space_id, ACPI_ADR_SPACE_SYSTEM_IO); *failed = true; } if ((pcc_rr->bit_width < 1) || (pcc_rr->bit_width > 32)) { fwts_failed(fw, LOG_LEVEL_HIGH, "PCCRegisterResourceBitWidthError", "PCC Register Resource Bit Width is incorrect, got 0x%" PRIx8, pcc_rr->bit_width); *failed = true; } if (pcc_rr->address == 0) { fwts_failed(fw, LOG_LEVEL_HIGH, "PCCRegisterResourceAddressZero", "PCC Register Resource Address is incorrect, got 0x%" PRIx64, pcc_rr->address); *failed = true; } fwts_log_nl(fw); } static void pcc_check_doorbell_preserve_mask( fwts_framework *fw, const char *name, ACPI_OBJECT *pcc_obj, bool *failed) { if (pcc_obj->Type != ACPI_TYPE_INTEGER) { fwts_failed(fw, LOG_LEVEL_HIGH, "PCCHElementTwoNotInteger", "PCCH object %s returned a package with element two " "was not an ACPI_INTEGER. This does not conform to the " "PCC specification.", name); *failed = true; return; } fwts_log_info_verbatum(fw, "PCC Doorbell Preserve Mask for %s:", name); fwts_log_info_verbatum(fw, " Preserve Mask: 0x%" PRIx64, pcc_obj->Integer.Value); fwts_log_nl(fw); } static void pcc_check_doorbell_write_mask( fwts_framework *fw, const char *name, ACPI_OBJECT *pcc_obj, bool *failed) { if (pcc_obj->Type != ACPI_TYPE_INTEGER) { fwts_failed(fw, LOG_LEVEL_HIGH, "PCCHElementTwoNotInteger", "PCCH object %s returned a package with element three " "was not an ACPI_INTEGER. This does not conform to the " "PCC specification.", name); *failed = true; return; } fwts_log_info_verbatum(fw, "PCC Doorbell Write Mask for %s:", name); fwts_log_info_verbatum(fw, " Write Mask: 0x%" PRIx64, pcc_obj->Integer.Value); fwts_log_nl(fw); if (pcc_obj->Integer.Value == 0) { fwts_failed(fw, LOG_LEVEL_HIGH, "PCCDoorBellWriteMaskZero", "PCC Doorbell Write Mask is incorrect, got 0x%" PRIx64, pcc_obj->Integer.Value); *failed = true; } } static void pcc_check_buffer( fwts_framework *fw, const char *name, ACPI_BUFFER *buf) { ACPI_OBJECT *obj; bool failed = false; if (buf->Pointer == NULL) { fwts_failed(fw, LOG_LEVEL_HIGH, "PCCHNullPointer", "PCCH object %s returned a NULL pointer when evaluated.", name); return; } obj = buf->Pointer; if (obj->Type != ACPI_TYPE_PACKAGE) { fwts_failed(fw, LOG_LEVEL_HIGH, "PCCHNotPackage", "PCCH object %s did not return an ACPI_PACKAGE when evaluated.", name); return; } if (obj->Package.Count != 4) { fwts_failed(fw, LOG_LEVEL_HIGH, "PCCHExpectedTwoElements", "PCCH object %s did not return an ACPI_PACKAGE " "that contained two elements, got %" PRIu32 " instead.", name, obj->Package.Count); return; } pcc_check_shared_memory_region(fw, name, &obj->Package.Elements[0], &failed); pcc_check_doorbell_address(fw, name, &obj->Package.Elements[1], &failed); pcc_check_doorbell_preserve_mask(fw, name, &obj->Package.Elements[2], &failed); pcc_check_doorbell_write_mask(fw, name, &obj->Package.Elements[3], &failed); if (!failed) fwts_passed(fw, "PCC passed; %s returned sane looking data structures.", name); } static int pcc_test1(fwts_framework *fw) { ACPI_BUFFER buf; ACPI_STATUS ret; fwts_list_link *item; fwts_list *pccs; static char *name = "PCCH"; size_t name_len = strlen(name); int count = 0; fwts_log_info(fw, "This test checks the sanity of the Processor Clocking Control " "as found on some HP ProLiant machines. Most computers do not " "use this interface to control the CPU clock frequency, so this " "test will be skipped."); fwts_log_nl(fw); if ((pccs = fwts_acpi_object_get_names()) != NULL) { fwts_list_foreach(item, pccs) { char *pcc_name = fwts_list_data(char*, item); size_t len = strlen(pcc_name); if (strncmp(name, pcc_name + len - name_len, name_len) == 0) { ret = fwts_acpi_object_evaluate(fw, pcc_name, NULL, &buf); if (ACPI_FAILURE(ret) == AE_OK) { pcc_check_buffer(fw, pcc_name, &buf); count++; free(buf.Pointer); } } } } if (count > 1) { fwts_failed(fw, LOG_LEVEL_HIGH, "PCCTooManyPCCHObjects", "The firmware contains too many PCCH objects, expected 1, got %d.", count); } /* Nothing found, this is not an error */ if (count == 0) { fwts_log_info(fw, "This machine does not use Processor Clocking Control (PCC)."); fwts_infoonly(fw); } return FWTS_OK; } /* Just one big test */ static fwts_framework_minor_test pcc_tests[] = { { pcc_test1, "Processor Clocking Control (PCC) test." }, { NULL, NULL } }; static fwts_framework_ops pcc_ops = { .description = "Processor Clocking Control (PCC) test.", .init = pcc_init, .deinit = pcc_deinit, .minor_tests = pcc_tests }; FWTS_REGISTER("pcc", &pcc_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH); #endif src/acpi/plddump/000077500000000000000000000000001231470457100142325ustar00rootroot00000000000000src/acpi/plddump/plddump.c000066400000000000000000000163021231470457100160450ustar00rootroot00000000000000/* * Copyright (C) 2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #include "fwts.h" #include #include #include #include #include /* acpica headers */ #include "acpi.h" #include "fwts_acpi_object_eval.h" /* * plddump_init() * initialize ACPI */ static int plddump_init(fwts_framework *fw) { if (fwts_acpi_init(fw) != FWTS_OK) { fwts_log_error(fw, "Cannot initialise ACPI."); return FWTS_ERROR; } return FWTS_OK; } /* * plddump_deinit * de-intialize ACPI */ static int plddump_deinit(fwts_framework *fw) { return fwts_acpi_deinit(fw); } static inline uint64_t get_bit( const uint8_t *data, const uint32_t offset) { return (data[offset / 8] >> (offset % 8)) & 1; } static uint64_t get_bits( const uint8_t *data, const uint32_t offset, const uint32_t nbits) { uint64_t val = 0; uint32_t i; for (i = 0; i < nbits; i++) val |= (get_bit(data, offset + i) << i); return val; } static const char *yesno[] = { "No", "Yes" }; static const char *panel_surface[] = { "Top", "Bottom", "Left", "Right", "Front", "Back", "Unknown", "Out of specification" }; static const char *vertical_position[] = { "Upper", "Center", "Lower", "Unknown" }; static const char *horizontal_position[] = { "Left", "Center", "Right", "Unknown" }; static const char *shape[] = { "Round", "Oval", "Square", "Vertical Rectangle", "Horizontal Rectangle", "Veritical Trapezoid", "Horizontal Trapezoid", "Unknown", "Chamfered", "Reserved", "Reserved", "Reserved", "Reserved", "Reserved", "Reserved", "Reserved" }; static void plddump_buffer( fwts_framework *fw, const char *name, const void *data, const uint32_t length) { fwts_log_nl(fw); fwts_log_info_verbatum(fw, "Name: %s", name); fwts_log_info_verbatum(fw, " Revision: %" PRIu64, get_bits(data, 0, 7)); fwts_log_info_verbatum(fw, " Ignore Color: %" PRIu64 " (%s)", get_bits(data, 7, 1), yesno[get_bits(data, 7, 1)]); if (!get_bits(data, 7, 1)) { fwts_log_info_verbatum(fw, " Red: 0x%2.2" PRIx64, get_bits(data, 8, 8)); fwts_log_info_verbatum(fw, " Green: 0x%2.2" PRIx64, get_bits(data, 16, 8)); fwts_log_info_verbatum(fw, " Blue: 0x%2.2" PRIx64, get_bits(data, 24, 8)); } fwts_log_info_verbatum(fw, " Width: %" PRIu64 " mm", get_bits(data, 32, 16)); fwts_log_info_verbatum(fw, " Height: %" PRIu64 " mm", get_bits(data, 48, 16)); fwts_log_info_verbatum(fw, " User Visible: %" PRIu64 " (%s)", get_bits(data, 64, 1), yesno[get_bits(data, 64, 1)]); fwts_log_info_verbatum(fw, " Dock: %" PRIu64 " (%s)", get_bits(data, 65, 1), yesno[get_bits(data, 65, 1)]); fwts_log_info_verbatum(fw, " Lid: %" PRIu64 " (%s)", get_bits(data, 66, 1), yesno[get_bits(data, 66, 1)]); fwts_log_info_verbatum(fw, " Panel Surface: %" PRIu64 " (%s)", get_bits(data, 67, 3), panel_surface[get_bits(data, 67, 3)]); if (get_bits(data, 67, 3) < 6) { fwts_log_info_verbatum(fw, " Vertical Position: %" PRIu64 " (%s)", get_bits(data, 70, 2), vertical_position[get_bits(data, 70, 2)]); fwts_log_info_verbatum(fw, " Horizontal Position: %" PRIu64 " (%s)", get_bits(data, 72, 2), horizontal_position[get_bits(data, 72, 2)]); } fwts_log_info_verbatum(fw, " Shape: %" PRIu64 " (%s)", get_bits(data, 74, 4), shape[get_bits(data, 74, 4)]); fwts_log_info_verbatum(fw, " Group Orientation: %" PRIu64, get_bits(data, 78, 1)); fwts_log_info_verbatum(fw, " Group Token: %" PRIu64, get_bits(data, 79, 8)); fwts_log_info_verbatum(fw, " Group Position: %" PRIu64, get_bits(data, 87, 8)); fwts_log_info_verbatum(fw, " Bay: %" PRIu64 " (%s)", get_bits(data, 95, 1), yesno[get_bits(data, 95, 1)]); fwts_log_info_verbatum(fw, " Ejectable: %" PRIu64 " (%s)", get_bits(data, 96, 1), yesno[get_bits(data, 96, 1)]); fwts_log_info_verbatum(fw, " OSPM Ejection Rqd: %" PRIu64 " (%s)", get_bits(data, 97, 1), yesno[get_bits(data, 97, 1)]); fwts_log_info_verbatum(fw, " Cabinet Number: %" PRIu64, get_bits(data, 98, 8)); fwts_log_info_verbatum(fw, " Card Cage Number: %" PRIu64, get_bits(data, 106, 8)); fwts_log_info_verbatum(fw, " Reference: %" PRIu64 " (%s)", get_bits(data, 114, 1), yesno[get_bits(data, 114, 1)]); fwts_log_info_verbatum(fw, " Rotation: %" PRIu64 " (%" PRIu64 " degrees)", get_bits(data, 115, 3), get_bits(data, 115, 3) * 45); fwts_log_info_verbatum(fw, " Order: %" PRIu64, get_bits(data, 119, 5)); if (length >= 20) { fwts_log_info_verbatum(fw, " Vertical Offset: %" PRIu64 " mm", get_bits(data, 128, 16)); fwts_log_info_verbatum(fw, " Horizontal Offset: %" PRIu64 " mm", get_bits(data, 144, 16)); } } static int plddump_test1(fwts_framework *fw) { fwts_list_link *item; fwts_list *objects; const size_t name_len = 4; bool found = false; if ((objects = fwts_acpi_object_get_names()) == NULL) { fwts_log_info(fw, "Cannot find any ACPI objects"); return FWTS_ERROR; } fwts_list_foreach(item, objects) { char *name = fwts_list_data(char *, item); const size_t len = strlen(name); if (!strncmp("_PLD", name + len - name_len, name_len)) { ACPI_OBJECT_LIST arg_list; ACPI_BUFFER buf; ACPI_OBJECT *obj; int ret; arg_list.Count = 0; arg_list.Pointer = NULL; ret = fwts_acpi_object_evaluate(fw, name, &arg_list, &buf); if ((ACPI_FAILURE(ret) != AE_OK) || (buf.Pointer == NULL)) continue; /* Do we have a valid buffer in the package to dump? */ obj = buf.Pointer; if ((obj->Type == ACPI_TYPE_PACKAGE) && (obj->Package.Count) && (obj->Package.Elements[0].Type == ACPI_TYPE_BUFFER) && (obj->Package.Elements[0].Buffer.Pointer != NULL) && (obj->Package.Elements[0].Buffer.Length >= 16)) { plddump_buffer(fw, name, obj->Package.Elements[0].Buffer.Pointer, obj->Package.Elements[0].Buffer.Length); found = true; } free(buf.Pointer); } } if (!found) fwts_log_info_verbatum(fw, "No _PLD objects found."); return FWTS_OK; } static fwts_framework_minor_test plddump_tests[] = { { plddump_test1, "Dump ACPI _PLD (Physical Device Location)." }, { NULL, NULL } }; static fwts_framework_ops plddump_ops = { .description = "Dump ACPI _PLD (Physical Device Location).", .init = plddump_init, .deinit = plddump_deinit, .minor_tests = plddump_tests }; FWTS_REGISTER("plddump", &plddump_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_UTILS); src/acpi/powerbutton/000077500000000000000000000000001231470457100151555ustar00rootroot00000000000000src/acpi/powerbutton/powerbutton.c000066400000000000000000000044111231470457100177110ustar00rootroot00000000000000/* * Copyright (C) 2010-2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #include "fwts.h" #ifdef FWTS_ARCH_INTEL #include #include #include #include #include #include #include #include static int power_button_test1(fwts_framework *fw) { int fd; size_t len; char *buffer; int matching; int i; fwts_printf(fw, "==== Please press the laptop power button. ====\n"); if ((fd = fwts_acpi_event_open()) < 0) { fwts_log_error(fw, "Cannot connect to acpid."); return FWTS_ERROR; } matching = 0; for (i=0;i<=20;i++) { if ((buffer = fwts_acpi_event_read(fd, &len, 1)) != NULL) { if (strstr(buffer, "button/power")) { matching++; break; } free(buffer); } fwts_printf(fw, "Waiting %2.2d/20\r", 20-i); } if (matching == 0) fwts_failed(fw, LOG_LEVEL_HIGH, "NoPowerButtonEvents", "Did not detect any ACPI power buttons events while waiting for power button to be pressed."); else { char button[4096]; memset(button, 0, sizeof(button)); sscanf(buffer, "%*s %4095s", button); fwts_passed(fw, "Detected %s power button event.", button); } fwts_acpi_event_close(fd); return FWTS_OK; } static fwts_framework_minor_test power_button_tests[] = { { power_button_test1, "Test press of power button and ACPI event." }, { NULL, NULL } }; static fwts_framework_ops power_button_ops = { .description = "Interactive power_button button test.", .minor_tests = power_button_tests }; FWTS_REGISTER("power_button", &power_button_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_INTERACTIVE); #endif src/acpi/s3/000077500000000000000000000000001231470457100131125ustar00rootroot00000000000000src/acpi/s3/s3.c000066400000000000000000000413331231470457100136070ustar00rootroot00000000000000/* * Copyright (C) 2010-2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #include #include "fwts.h" #ifdef FWTS_ARCH_INTEL #include #include #include #include #include #include #define PM_SUSPEND "pm-suspend" #define PM_SUSPEND_HYBRID "pm-suspend-hybrid" #define FWTS_SUSPEND "FWTS_SUSPEND" #define FWTS_RESUME "FWTS_RESUME" static int s3_multiple = 1; /* number of s3 multiple tests to run */ static int s3_min_delay = 0; /* min time between resume and next suspend */ static int s3_max_delay = 30; /* max time between resume and next suspend */ static float s3_delay_delta = 0.5; /* amount to add to delay between each S3 tests */ static int s3_sleep_delay = 30; /* time between start of suspend and wakeup */ static bool s3_device_check = false; /* check for device config changes */ static char *s3_quirks = NULL; /* Quirks to be passed to pm-suspend */ static int s3_device_check_delay = 15; /* Time to sleep after waking up and then running device check */ static bool s3_min_max_delay = false; static float s3_suspend_time = 15.0; /* Maximum allowed suspend time */ static float s3_resume_time = 15.0; /* Maximum allowed resume time */ static bool s3_hybrid = false; static int s3_init(fwts_framework *fw) { /* Pre-init - make sure wakealarm works so that we can wake up after suspend */ if (fwts_wakealarm_test_firing(fw, 1) != FWTS_OK) { fwts_log_error(fw, "Cannot automatically wake machine up - aborting S3 test."); fwts_failed(fw, LOG_LEVEL_MEDIUM, "BadWakeAlarmS3", "Check if wakealarm works reliably for S3 tests."); return FWTS_ERROR; } return FWTS_OK; } static int s3_do_suspend_resume(fwts_framework *fw, int *hw_errors, int *pm_errors, int delay, int percent) { fwts_hwinfo hwinfo1, hwinfo2; int status; int duration; int differences; time_t t_start; time_t t_end; char *command; char *quirks; char buffer[80]; if (s3_device_check) fwts_hwinfo_get(fw, &hwinfo1); /* Format up pm-suspend command with optional quirking arguments */ if (s3_hybrid) { if ((command = fwts_realloc_strcat(NULL, PM_SUSPEND_HYBRID)) == NULL) return FWTS_OUT_OF_MEMORY; } else { if ((command = fwts_realloc_strcat(NULL, PM_SUSPEND)) == NULL) return FWTS_OUT_OF_MEMORY; } if (s3_quirks) { if ((command = fwts_realloc_strcat(command, " ")) == NULL) return FWTS_OUT_OF_MEMORY; if ((quirks = fwts_args_comma_list(s3_quirks)) == NULL) { free(command); return FWTS_OUT_OF_MEMORY; } if ((command = fwts_realloc_strcat(command, quirks)) == NULL) { free(quirks); return FWTS_OUT_OF_MEMORY; } free(quirks); } fwts_wakealarm_trigger(fw, delay); /* Do S3 here */ fwts_progress_message(fw, percent, "(Suspending)"); time(&t_start); (void)fwts_klog_write(fw, "Starting fwts suspend\n"); (void)fwts_klog_write(fw, FWTS_SUSPEND "\n"); (void)fwts_exec(command, &status); (void)fwts_klog_write(fw, FWTS_RESUME "\n"); (void)fwts_klog_write(fw, "Finished fwts resume\n"); time(&t_end); fwts_progress_message(fw, percent, "(Resumed)"); free(command); duration = (int)(t_end - t_start); fwts_log_info(fw, "pm-suspend returned %d after %d seconds.", status, duration); if (s3_device_check) { int i; for (i=0;i 0) { fwts_failed(fw, LOG_LEVEL_HIGH, "DevConfigDiffAfterS3", "Found %d differences in device configuation during S3 cycle.", differences); (*hw_errors)++; } } if (duration < delay) { (*pm_errors)++; fwts_failed(fw, LOG_LEVEL_MEDIUM, "ShortSuspend", "Unexpected: S3 slept for %d seconds, less than the expected %d seconds.", duration, delay); } fwts_progress_message(fw, percent, "(Checking for errors)"); if (duration > (delay*2)) { int s3_C1E_enabled; (*pm_errors)++; fwts_failed(fw, LOG_LEVEL_HIGH, "LongSuspend", "Unexpected: S3 much longer than expected (%d seconds).", duration); s3_C1E_enabled = fwts_cpu_has_c1e(); if (s3_C1E_enabled == -1) fwts_log_error(fw, "Cannot read C1E bit\n"); else if (s3_C1E_enabled == 1) fwts_advice(fw, "Detected AMD with C1E enabled. The AMD C1E idle wait can sometimes " "produce long delays on resume. This is a known issue with the " "failed delivery of intettupts while in deep C states. " "If you have a BIOS option to disable C1E please disable this and retry. " "Alternatively, re-test with the kernel parameter \"idle=mwait\". "); } /* Add in error check for pm-suspend status */ if ((status > 0) && (status < 128)) { (*pm_errors)++; fwts_failed(fw, LOG_LEVEL_HIGH, "PMActionFailedPreS3", "pm-action failed before trying to put the system " "in the requested power saving state."); } else if (status == 128) { (*pm_errors)++; fwts_failed(fw, LOG_LEVEL_HIGH, "PMActionPowerStateS3", "pm-action tried to put the machine in the requested " "power state but failed."); } else if (status > 128) { (*pm_errors)++; fwts_failed(fw, LOG_LEVEL_HIGH, "PMActionFailedS3", "pm-action encountered an error and also failed to " "enter the requested power saving state."); } return FWTS_OK; } static int s3_scan_times( fwts_framework *fw, fwts_list *klog, int *suspend_too_long, int *resume_too_long) { fwts_list_link *item; double s3_suspend_start = -1.0, s3_suspend_finish = -1.0; double s3_resume_start = -1.0, s3_resume_finish = -1.0; double previous_ts = -1.0, ts = 0.0; fwts_list_foreach(item, klog) { char *txt = (char *)item->data; char *bracket = strchr(txt, '['); size_t len = strlen(txt); if (len < 15 || bracket == NULL) continue; previous_ts = ts; /* Get log time stamp */ sscanf(bracket + 1, "%lf", &ts); if (strstr(txt, FWTS_SUSPEND)) { s3_suspend_start = ts; continue; } if (strstr(txt, FWTS_RESUME)) { s3_resume_finish = ts; continue; } /* This may be the last message we see from the kernel */ if (strstr(txt, "PM: Saving platform NVS memory")) { s3_suspend_finish = ts; continue; } /* And this may appear even later */ if (strstr(txt, "smpboot: CPU") && strstr(txt, "is now offline")) { s3_suspend_finish = ts; continue; } if (strstr(txt, "ACPI: Low-level resume complete")) { s3_resume_start = ts; if (s3_suspend_finish < 0.0) s3_suspend_finish = previous_ts; continue; } if (s3_resume_start < 0.0 && strstr(txt, "ACPI: Waking up from system sleep state S3")) { s3_resume_start = ts; if (s3_suspend_finish < 0.0) s3_suspend_finish = previous_ts; continue; } if (strstr(txt, "Restarting tasks ... done")) { s3_resume_finish = ts; break; } } fwts_log_info(fw, "Suspend/Resume Timings:"); if (s3_suspend_start > 0.0 && s3_suspend_finish > 0.0) { fwts_log_info_verbatum(fw, " Suspend: %.3f seconds.", s3_suspend_finish - s3_suspend_start); if (s3_suspend_finish - s3_suspend_start > s3_suspend_time) (*suspend_too_long)++; } else fwts_log_info_verbatum(fw, " Could not determine time to suspend."); if (s3_resume_start > 0.0 && s3_resume_finish > 0.0) { fwts_log_info_verbatum(fw, " Resume: %.3f seconds.", s3_resume_finish - s3_resume_start); if (s3_resume_finish - s3_resume_start > s3_resume_time) (*resume_too_long)++; } else fwts_log_info_verbatum(fw, " Could not determine time to resume."); return FWTS_OK; } static int s3_check_log( fwts_framework *fw, fwts_list *klog, int *errors, int *oopses, int *warn_ons, int *suspend_too_long, int *resume_too_long) { int error; int oops; int warn_on; if (fwts_klog_pm_check(fw, NULL, klog, &error)) fwts_log_error(fw, "Error parsing kernel log."); *errors += error; if (fwts_klog_firmware_check(fw, NULL, klog, &error)) fwts_log_error(fw, "Error parsing kernel log."); *errors += error; if (fwts_oops_check(fw, klog, &oops, &warn_on)) fwts_log_error(fw, "Error parsing kernel log."); *oopses += oops; *warn_ons += warn_on; s3_scan_times(fw, klog, suspend_too_long, resume_too_long); return FWTS_OK; } static int s3_test_multiple(fwts_framework *fw) { int i; int klog_errors = 0; int hw_errors = 0; int pm_errors = 0; int klog_oopses = 0; int klog_warn_ons = 0; int suspend_too_long = 0; int resume_too_long = 0; int awake_delay = s3_min_delay * 1000; int delta = (int)(s3_delay_delta * 1000.0); if (s3_multiple == 1) fwts_log_info(fw, "Defaulted to 1 test, use --s3-multiple=N to run more S3 cycles\n"); for (i=0; i (s3_max_delay * 1000)) awake_delay = s3_min_delay * 1000; } } fwts_log_info(fw, "Completed %d S3 cycle(s)\n", s3_multiple); if (klog_errors > 0) fwts_log_info(fw, "Found %d errors in kernel log.", klog_errors); else fwts_passed(fw, "No kernel log errors detected."); if (pm_errors > 0) fwts_log_info(fw, "Found %d PM related suspend issues.", pm_errors); else fwts_passed(fw, "No PM related suspend issues detected."); if (hw_errors > 0) fwts_log_info(fw, "Found %d device errors.", hw_errors); else fwts_passed(fw, "No device errors detected."); if (klog_oopses > 0) fwts_log_info(fw, "Found %d kernel oopses.", klog_oopses); else fwts_passed(fw, "No kernel oopses detected."); if (klog_warn_ons > 0) fwts_log_info(fw, "Found %d kernel WARN_ON warnings.", klog_warn_ons); else fwts_passed(fw, "No kernel WARN_ON warnings detected."); if ((klog_errors + pm_errors + hw_errors + klog_oopses) > 0) { fwts_log_info(fw, "Found %d errors and %d oopses doing %d suspend/resume cycle(s).", klog_errors + pm_errors + hw_errors, klog_oopses, s3_multiple); } else fwts_passed(fw, "Found no errors doing %d suspend/resume cycle(s).", s3_multiple); if (suspend_too_long > 0) fwts_failed(fw, LOG_LEVEL_MEDIUM, "SuspendTooLong", "%d suspend%s took longer than %.2f seconds.", suspend_too_long, resume_too_long == 1 ? "" : "s", s3_suspend_time); else fwts_passed(fw, "All suspends took less than %.2f seconds.", s3_suspend_time); if (resume_too_long > 0) fwts_failed(fw, LOG_LEVEL_MEDIUM, "ResumeTooLong", "%d resume%s took longer than %.2f seconds.", resume_too_long, resume_too_long == 1 ? "" : "s", s3_resume_time); else fwts_passed(fw, "All resumes took less than %.2f seconds.", s3_resume_time); return FWTS_OK; } static int s3_options_check(fwts_framework *fw) { FWTS_UNUSED(fw); if ((s3_multiple < 0) || (s3_multiple > 100000)) { fprintf(stderr, "--s3-multiple is %d, it should be 1..100000\n", s3_multiple); return FWTS_ERROR; } if ((s3_min_delay < 0) || (s3_min_delay > 3600)) { fprintf(stderr, "--s3-min-delay is %d, it cannot be less than zero or more than 1 hour!\n", s3_min_delay); return FWTS_ERROR; } if (s3_max_delay < s3_min_delay || s3_max_delay > 3600) { fprintf(stderr, "--s3-max-delay is %d, it cannot be less than --s3-min-delay or more than 1 hour!\n", s3_max_delay); return FWTS_ERROR; } if (s3_delay_delta <= 0.001) { fprintf(stderr, "--s3-delay-delta is %f, it cannot be less than 0.001\n", s3_delay_delta); return FWTS_ERROR; } if ((s3_sleep_delay < 5) || (s3_sleep_delay > 3600)) { fprintf(stderr, "--s3-sleep-delay is %d, it cannot be less than 5 seconds or more than 1 hour!\n", s3_sleep_delay); return FWTS_ERROR; } if ((s3_device_check_delay < 1) || (s3_device_check_delay > 3600)) { fprintf(stderr, "--s3-device-check-delay is %d, it cannot be less than 1 second or more than 1 hour!\n", s3_device_check_delay); return FWTS_ERROR; } if (s3_min_max_delay & s3_device_check) { fprintf(stderr, "Cannot use --s3-min-delay, --s3-max-delay, --s3-delay-delta as well as --s3-device-check, --s3-device-check-delay.\n"); return FWTS_ERROR; } if (s3_suspend_time < 0.0) { fprintf(stderr, "--s3-suspend-time too small.\n"); return FWTS_ERROR; } if (s3_resume_time < 0.0) { fprintf(stderr, "--s3-resume-time too small.\n"); return FWTS_ERROR; } return FWTS_OK; } static int s3_options_handler(fwts_framework *fw, int argc, char * const argv[], int option_char, int long_index) { FWTS_UNUSED(fw); FWTS_UNUSED(argc); FWTS_UNUSED(argv); switch (option_char) { case 0: switch (long_index) { case 0: s3_multiple = atoi(optarg); break; case 1: s3_min_delay = atoi(optarg); s3_min_max_delay = true; break; case 2: s3_max_delay = atoi(optarg); s3_min_max_delay = true; break; case 3: s3_delay_delta = atof(optarg); s3_min_max_delay = true; break; case 4: s3_sleep_delay = atoi(optarg); break; case 5: s3_device_check = true; break; case 6: s3_quirks = optarg; break; case 7: s3_device_check_delay = atoi(optarg); s3_device_check = true; break; case 8: s3_suspend_time = atof(optarg); break; case 9: s3_resume_time = atof(optarg); break; case 10: s3_hybrid = true; break; } } return FWTS_OK; } static fwts_option s3_options[] = { { "s3-multiple", "", 1, "Run S3 tests multiple times, e.g. --s3-multiple=10." }, { "s3-min-delay", "", 1, "Minimum time between S3 iterations, e.g. --s3-min-delay=10" }, { "s3-max-delay", "", 1, "Maximum time between S3 iterations, e.g. --s3-max-delay=20" }, { "s3-delay-delta", "", 1, "Time to be added to delay between S3 iterations. Used in conjunction with --s3-min-delay and --s3-max-delay, e.g. --s3-delay-delta=2.5" }, { "s3-sleep-delay", "", 1, "Sleep N seconds between start of suspend and wakeup, e.g. --s3-sleep-delay=60" }, { "s3-device-check", "", 0, "Check differences between device configurations over a S3 cycle. Note we add a default of 15 seconds to allow wifi to re-associate. Cannot be used with --s3-min-delay, --s3-max-delay and --s3-delay-delta." }, { "s3-quirks", "", 1, "Comma separated list of quirk arguments to pass to pm-suspend." }, { "s3-device-check-delay", "", 1, "Sleep N seconds before we run a device check after waking up from suspend. Default is 15 seconds, e.g. --s3-device-check-delay=20" }, { "s3-suspend-time", "", 1, "Maximum expected suspend time in seconds, e.g. --s3-suspend-time=3.5" }, { "s3-resume-time", "", 1, "Maximum expected resume time in seconds, e.g. --s3-resume-time=5.1" }, { "s3-hybrid", "", 0, "Run S3 with hybrid sleep, i.e. saving system states as S4 does." }, { NULL, NULL, 0, NULL } }; static fwts_framework_minor_test s3_tests[] = { { s3_test_multiple, "S3 suspend/resume test." }, { NULL, NULL } }; static fwts_framework_ops s3_ops = { .description = "S3 suspend/resume test.", .init = s3_init, .minor_tests = s3_tests, .options = s3_options, .options_handler = s3_options_handler, .options_check = s3_options_check, }; FWTS_REGISTER("s3", &s3_ops, FWTS_TEST_LATE, FWTS_FLAG_POWER_STATES | FWTS_FLAG_ROOT_PRIV); #endif src/acpi/s3power/000077500000000000000000000000001231470457100141675ustar00rootroot00000000000000src/acpi/s3power/s3power.c000066400000000000000000000207141231470457100157410ustar00rootroot00000000000000/* * Copyright (C) 2011-2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #include #include "fwts.h" #ifdef FWTS_ARCH_INTEL #include #include #include #include #include #include #include #define PM_SUSPEND "pm-suspend" static int s3power_sleep_delay = 600; /* time between start of suspend and wakeup */ static uint32_t battery_capacity_mAh; static uint32_t battery_capacity_mWh; static int s3power_adapter_offline(fwts_framework *fw, bool *offline) { int matching = 0; int not_matching = 0; if (fwts_ac_adapter_get_state(FWTS_AC_ADAPTER_ONLINE, &matching, ¬_matching) != FWTS_OK) { fwts_log_error(fw, "Cannot detect if running on AC or battery."); return FWTS_ERROR; } /* Any online, then we're not totally offlined */ *offline = matching > 0 ? false : true; return FWTS_OK; } static int s3power_wait_for_adapter_offline(fwts_framework *fw, bool *offline) { int fd; size_t len; char *buffer; int i; if (s3power_adapter_offline(fw, offline) == FWTS_ERROR) return FWTS_ERROR; if (*offline) return FWTS_OK; /* Already offline, so no need to wait */ if ((fd = fwts_acpi_event_open()) < 0) { fwts_log_error(fw, "Cannot connect to acpid."); return FWTS_ERROR; } fwts_printf(fw, "==== Please unplug the laptop power. ====\n"); for (i=0; (i<=20) && !*offline ;i++) { if ((buffer = fwts_acpi_event_read(fd, &len, 1)) != NULL) { if (strstr(buffer, "ac_adapter") != NULL) s3power_adapter_offline(fw, offline); free(buffer); } fwts_printf(fw, "Waiting %2.2d/20\r", 20-i); } fwts_acpi_event_close(fd); return FWTS_OK; } static int s3power_get_design_capacity(fwts_framework *fw, uint32_t *capacity_mAh, uint32_t *capacity_mWh) { return fwts_battery_get_capacity(fw, FWTS_BATTERY_DESIGN_CAPACITY, FWTS_BATTERY_ALL, capacity_mAh, capacity_mWh); } static int s3power_get_remaining_capacity(fwts_framework *fw, uint32_t *capacity_mAh, uint32_t *capacity_mWh) { return fwts_battery_get_capacity(fw, FWTS_BATTERY_REMAINING_CAPACITY, FWTS_BATTERY_ALL, capacity_mAh, capacity_mWh); } static int s3power_init(fwts_framework *fw) { if (fwts_wakealarm_test_firing(fw, 1) != FWTS_OK) { fwts_log_error(fw, "Cannot automatically wake machine up - aborting S3power test."); fwts_failed(fw, LOG_LEVEL_MEDIUM, "BadWakeAlarmS3Power", "Wakealarm does not work reliably for s3power test."); return FWTS_ABORTED; } if (s3power_get_design_capacity(fw, &battery_capacity_mAh, &battery_capacity_mWh) != FWTS_OK) { fwts_log_error(fw, "Cannot determine battery capacity, aborting test."); return FWTS_ABORTED; } return FWTS_OK; } static void s3power_difference(fwts_framework *fw, uint32_t before, uint32_t after, uint32_t battery_capacity, char *units) { int32_t diff = before - after; float hourly_loss; if (before != 0) { fwts_log_info(fw, "Change in capacity: %" PRId32 " %s\n", diff, units); hourly_loss = ((float)diff * 3600.0) / (float)s3power_sleep_delay; if (diff < 0) { fwts_log_error(fw, "Negative loss of power, are you sure the machine was not charging?"); } fwts_log_info(fw, "Loss of %7.4f %s per hour.", hourly_loss, units); if ((diff > 0) && (battery_capacity > 0)) { float duration = (float)battery_capacity / hourly_loss; fwts_log_info(fw, "The %" PRIu32 " %s battery will provide %5.2f hours of suspend time.", battery_capacity, units, duration); if (duration < 24.0) { fwts_failed(fw, LOG_LEVEL_CRITICAL, "ShortSuspendLife24hrs", "Machine cannot remain suspended for 1 day."); } else if (duration < 36.0) { fwts_failed(fw, LOG_LEVEL_HIGH, "ShortSuspendLife36hrs", "Machine cannot remain suspended for 1.5 days."); } else if (duration < 48.0) { fwts_failed(fw, LOG_LEVEL_MEDIUM, "ShortSuspendLife48hrs", "Machine cannot remain suspended for 2 days."); } else if (duration < 60.0) { fwts_failed(fw, LOG_LEVEL_LOW, "ShortSuspendLife60hrs", "Machine cannot remain suspended for 2.5 days."); } else { fwts_passed(fw, "Machine can remain suspended for %5.2f hours.", duration); } fwts_log_info(fw, "Note: Accuracy of results are increased with longer sleep delay durations."); } } } static int s3power_test(fwts_framework *fw) { int status; int duration; time_t t_start; time_t t_end; bool offline; uint32_t capacity_before_mAh; uint32_t capacity_after_mAh; uint32_t capacity_before_mWh; uint32_t capacity_after_mWh; if (s3power_wait_for_adapter_offline(fw, &offline) == FWTS_ERROR) { fwts_log_error(fw, "Cannot check if machine is running on battery, aborting test."); return FWTS_ABORTED; } if (!offline) { fwts_log_error(fw, "Machine needs to be running on battery to run test, aborting test."); return FWTS_ABORTED; } s3power_get_remaining_capacity(fw, &capacity_before_mAh, &capacity_before_mWh); fwts_wakealarm_trigger(fw, s3power_sleep_delay); /* Do S3 here */ fwts_progress_message(fw, 100, "(Suspending)"); time(&t_start); (void)fwts_exec(PM_SUSPEND, &status); time(&t_end); fwts_progress_message(fw, 100, "(Resumed)"); s3power_get_remaining_capacity(fw, &capacity_after_mAh, &capacity_after_mWh); s3power_difference(fw, capacity_before_mAh, capacity_after_mAh, battery_capacity_mAh, "mAh"); s3power_difference(fw, capacity_before_mWh, capacity_after_mWh, battery_capacity_mWh, "mWh"); duration = (int)(t_end - t_start); fwts_log_info(fw, "pm-suspend returned %d after %d seconds.", status, duration); if (duration < s3power_sleep_delay) fwts_failed(fw, LOG_LEVEL_MEDIUM, "ShortSuspend", "Unexpected: S3 slept for %d seconds, less than the expected %d seconds.", duration, s3power_sleep_delay); if (duration > (s3power_sleep_delay*2)) fwts_failed(fw, LOG_LEVEL_HIGH, "LongSuspend", "Unexpected: S3 much longer than expected (%d seconds).", duration); /* Add in error check for pm-suspend status */ if ((status > 0) && (status < 128)) { fwts_failed(fw, LOG_LEVEL_MEDIUM, "PMActionFailedPreS3", "pm-action failed before trying to put the system " "in the requested power saving state."); } else if (status == 128) { fwts_failed(fw, LOG_LEVEL_MEDIUM, "PMActionPowerStateS3", "pm-action tried to put the machine in the requested " "power state but failed."); } else if (status > 128) { fwts_failed(fw, LOG_LEVEL_MEDIUM, "PMActionFailedS3", "pm-action encountered an error and also failed to " "enter the requested power saving state."); } return FWTS_OK; } static int s3power_options_check(fwts_framework *fw) { FWTS_UNUSED(fw); if ((s3power_sleep_delay < 600) || (s3power_sleep_delay > 24*60*60)) { fprintf(stderr, "--s3power-sleep-delay is %d, it cannot be less than 600 seconds or more than 24 hours!\n", s3power_sleep_delay); return FWTS_ERROR; } return FWTS_OK; } static int s3power_options_handler(fwts_framework *fw, int argc, char * const argv[], int option_char, int long_index) { FWTS_UNUSED(fw); FWTS_UNUSED(argc); FWTS_UNUSED(argv); switch (option_char) { case 0: switch (long_index) { case 0: s3power_sleep_delay = atoi(optarg); break; } } return FWTS_OK; } static fwts_option s3power_options[] = { { "s3power-sleep-delay","", 1, "Sleep N seconds between start of suspend and wakeup, e.g. --s3power-sleep-delay=60" }, { NULL, NULL, 0, NULL } }; static fwts_framework_minor_test s3power_tests[] = { { s3power_test, "S3 power loss during suspend test." }, { NULL, NULL } }; static fwts_framework_ops s3power_ops = { .description = "S3 power loss during suspend test (takes minimum of 10 minutes to run).", .init = s3power_init, .minor_tests = s3power_tests, .options = s3power_options, .options_handler = s3power_options_handler, .options_check = s3power_options_check, }; FWTS_REGISTER("s3power", &s3power_ops, FWTS_TEST_LATE, FWTS_FLAG_POWER_STATES | FWTS_FLAG_ROOT_PRIV); #endif src/acpi/s4/000077500000000000000000000000001231470457100131135ustar00rootroot00000000000000src/acpi/s4/s4.c000066400000000000000000000352461231470457100136170ustar00rootroot00000000000000/* * Copyright (C) 2010-2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #include "fwts.h" #ifdef FWTS_ARCH_INTEL #include #include #include #include #include #define PM_HIBERNATE "pm-hibernate" #define FWTS_HIBERNATE "FWTS_HIBERNATE" #define FWTS_RESUME "FWTS_RESUME" #define FWTS_TRACING_BUFFER_SIZE "/sys/kernel/debug/tracing/buffer_size_kb" static int s4_multiple = 1; /* number of S4 multiple tests to run */ static int s4_min_delay = 0; /* min time between resume and next hibernate */ static int s4_max_delay = 30; /* max time between resume and next hibernate */ static float s4_delay_delta = 0.5; /* amount to add to delay between each S4 tests */ static int s4_sleep_delay = 90; /* delay between initiating S4 and wakeup */ static bool s4_device_check = false; /* check for device config changes */ static char *s4_quirks = NULL; /* Quirks to be passed to pm-hibernate */ static int s4_device_check_delay = 15; /* Time to sleep after waking up and then running device check */ static bool s4_min_max_delay = false; static int s4_init(fwts_framework *fw) { fwts_list* swap_devs; swap_devs = fwts_file_open_and_read("/proc/swaps"); if (fwts_text_list_strstr(swap_devs, "/dev/") == NULL) { fwts_list_free(swap_devs, free); fwts_failed(fw, LOG_LEVEL_MEDIUM, "NoSwap", "Cannot run hibernate test - machine appears to have NO swap."); return FWTS_ERROR; } fwts_list_free(swap_devs, free); if (fwts_wakealarm_test_firing(fw, 1)) { fwts_log_error(fw, "Cannot automatically wake machine up - aborting S4 test."); fwts_failed(fw, LOG_LEVEL_MEDIUM, "BadWakeAlarmS4", "Check if wakealarm works reliably for S4 tests."); return FWTS_ERROR; } return FWTS_OK; } static void s4_check_log(fwts_framework *fw, fwts_list *klog, int *errors, int *oopses, int *warn_ons) { int error; int oops; int warn_on; /* Check for kernel errors reported in the log */ if (fwts_klog_pm_check(fw, NULL, klog, &error)) fwts_log_error(fw, "Error parsing kernel log."); *errors += error; if (fwts_klog_firmware_check(fw, NULL, klog, &error)) fwts_log_error(fw, "Error parsing kernel log."); *errors += error; if (fwts_oops_check(fw, klog, &oops, &warn_on)) fwts_log_error(fw, "Error parsing kernel log."); *oopses += oops; *warn_ons += warn_on; } static int s4_hibernate(fwts_framework *fw, int *klog_errors, int *hw_errors, int *pm_errors, int *klog_oopses, int *klog_warn_ons, int *failed_alloc_image, int percent) { fwts_list *klog_pre, *klog_post, *klog_diff; fwts_hwinfo hwinfo1, hwinfo2; int status; int differences; char *command; char *quirks; char buffer[80]; if (s4_device_check) fwts_hwinfo_get(fw, &hwinfo1); /* Format up pm-hibernate command with optional quirking arguments */ if ((command = fwts_realloc_strcat(NULL, PM_HIBERNATE)) == NULL) return FWTS_OUT_OF_MEMORY; if (s4_quirks) { if ((command = fwts_realloc_strcat(command, " ")) == NULL) return FWTS_OUT_OF_MEMORY; if ((quirks = fwts_args_comma_list(s4_quirks)) == NULL) { free(command); return FWTS_OUT_OF_MEMORY; } if ((command = fwts_realloc_strcat(command, quirks)) == NULL) { free(quirks); return FWTS_OUT_OF_MEMORY; } free(quirks); } fwts_wakealarm_trigger(fw, s4_sleep_delay); /* Do s4 here */ if ((klog_pre = fwts_klog_read()) == NULL) fwts_log_error(fw, "S4: hibernate: Cannot read kernel log."); fwts_progress_message(fw, percent, "(Hibernating)"); (void)fwts_klog_write(fw, "Starting fwts hibernate\n"); (void)fwts_klog_write(fw, FWTS_HIBERNATE "\n"); (void)fwts_exec(command, &status); (void)fwts_klog_write(fw, FWTS_RESUME "\n"); (void)fwts_klog_write(fw, "Finished fwts resume\n"); fwts_progress_message(fw, percent, "(Resumed)"); free(command); if ((klog_post = fwts_klog_read()) == NULL) fwts_log_error(fw, "S4: hibernate: Cannot re-read kernel log."); if (s4_device_check) { int i; for (i=0;i 0) { fwts_failed(fw, LOG_LEVEL_HIGH, "DevConfigDiffAfterS4", "Found %d differences in device configuation during S4 cycle.", differences); (*hw_errors)++; } } fwts_progress_message(fw, percent, "(Checking for errors)"); klog_diff = fwts_klog_find_changes(klog_pre, klog_post); s4_check_log(fw, klog_diff, klog_errors, klog_oopses, klog_warn_ons); fwts_progress_message(fw, percent, "(Checking for PM errors)"); /* Add in error check for pm-hibernate status */ if ((status > 0) && (status < 128)) { fwts_failed(fw, LOG_LEVEL_HIGH, "PMActionFailedPreS4", "pm-action failed before trying to put the system " "in the requested power saving state."); (*pm_errors)++; } else if (status == 128) { fwts_failed(fw, LOG_LEVEL_HIGH, "PMActionPowerStateS4", "pm-action tried to put the machine in the requested " "power state but failed."); (*pm_errors)++; } else if (status > 128) { fwts_failed(fw, LOG_LEVEL_HIGH, "PMActionFailedS4", "pm-action encountered an error and also failed to " "enter the requested power saving state."); (*pm_errors)++; } if (fwts_klog_regex_find(fw, klog_diff, "Freezing user space processes.*done") < 1) { fwts_failed(fw, LOG_LEVEL_HIGH, "UserSpaceTaskFreeze", "Failed to freeze user space processes."); (*pm_errors)++; } if (fwts_klog_regex_find(fw, klog_diff, "Freezing remaining freezable tasks.*done") < 1) { fwts_failed(fw, LOG_LEVEL_HIGH, "KernelTaskFreeze", "Failed to freeze remaining non-user space processes."); (*pm_errors)++; } if ((fwts_klog_regex_find(fw, klog_diff, "PM: freeze of devices complete") < 1) && (fwts_klog_regex_find(fw, klog_diff, "PM: late freeze of devices complete") < 1)) { fwts_failed(fw, LOG_LEVEL_HIGH, "DeviceFreeze", "Failed to freeze devices."); (*pm_errors)++; } if (fwts_klog_regex_find(fw, klog_diff, "PM: Allocated.*kbytes") < 1) { fwts_failed(fw, LOG_LEVEL_HIGH, "HibernateImageAlloc", "Failed to allocate memory for hibernate image."); *failed_alloc_image = 1; (*pm_errors)++; } if (fwts_klog_regex_find(fw, klog_diff, "PM: Image restored successfully") < 1) { fwts_failed(fw, LOG_LEVEL_HIGH, "HibernateImageRestore", "Failed to restore hibernate image."); (*pm_errors)++; } fwts_klog_free(klog_pre); fwts_klog_free(klog_post); fwts_list_free(klog_diff, NULL); return FWTS_OK; } static int s4_test_multiple(fwts_framework *fw) { int i; int klog_errors = 0; int hw_errors = 0; int pm_errors = 0; int klog_oopses = 0; int klog_warn_ons = 0; int awake_delay = s4_min_delay * 1000; int delta = (int)(s4_delay_delta * 1000.0); int tracing_buffer_size = -1; int ret = FWTS_OK; bool retried = false; char tmp[32]; if (s4_multiple == 1) fwts_log_info(fw, "Defaulted to run 1 test, run --s4-multiple=N to run more S4 cycles\n"); for (i=0; i 4096)) { retried = true; fwts_failed(fw, LOG_LEVEL_HIGH, "TracingBufferTooBig", "/sys/kernel/debug/tracing/buffer_size_kb is set to %d Kbytes which " "may cause hibernate to fail. Programs such as ureadahead may have " "set this enable fast boot and not freed up the tracing buffer.", tracing_buffer_size); fwts_log_info(fw, "Setting tracing buffer size to 1K for subsequent tests."); fwts_set("1", FWTS_TRACING_BUFFER_SIZE); failed_alloc_image = 0; if (s4_hibernate(fw, &klog_errors, &hw_errors, &pm_errors, &klog_oopses, &klog_warn_ons, &failed_alloc_image, percent) != FWTS_OK) { fwts_log_error(fw, "Aborting S4 multiple tests."); ret = FWTS_ABORTED; break; }; if (failed_alloc_image) { ret = FWTS_ABORTED; break; } } } } if (!s4_device_check) { char buffer[80]; int i; tv.tv_sec = 0; tv.tv_usec = (awake_delay % 1000)*1000; select(0, NULL, NULL, NULL, &tv); for (i=0; i (s4_max_delay * 1000)) awake_delay = s4_min_delay * 1000; } } if (tracing_buffer_size > 0) { /* Restore tracking buffer size */ snprintf(tmp, sizeof(tmp), "%d", tracing_buffer_size); fwts_set(tmp, FWTS_TRACING_BUFFER_SIZE); } if (klog_errors > 0) fwts_log_info(fw, "Found %d errors in kernel log.", klog_errors); else fwts_passed(fw, "No kernel log errors detected."); if (pm_errors > 0) fwts_log_info(fw, "Found %d PM related hibernate issues.", pm_errors); else fwts_passed(fw, "No PM related hibernate issues detected."); if (hw_errors > 0) fwts_log_info(fw, "Found %d device errors.", hw_errors); else fwts_passed(fw, "No device errors detected."); if (klog_oopses > 0) fwts_log_info(fw, "Found %d kernel oopses.", klog_oopses); else fwts_passed(fw, "No kernel oopses detected."); if (klog_warn_ons > 0) fwts_log_info(fw, "Found %d kernel WARN_ON warnings.", klog_warn_ons); else fwts_passed(fw, "No kernel WARN_ON warnings detected."); /* Really passed or failed? */ if ((klog_errors + pm_errors + hw_errors + klog_oopses) > 0) { fwts_log_info(fw, "Found %d errors and %d oopses doing %d hibernate/resume cycle(s).", klog_errors + pm_errors + hw_errors, klog_oopses, s4_multiple); } else fwts_passed(fw, "Found no errors and no oopses doing %d hibernate/resume cycle(s).", s4_multiple); return ret; } static int s4_options_check(fwts_framework *fw) { FWTS_UNUSED(fw); if ((s4_multiple < 0) || (s4_multiple > 100000)) { fprintf(stderr, "--s4-multiple is %d, it should be 1..100000\n", s4_multiple); return FWTS_ERROR; } if ((s4_min_delay < 0) || (s4_min_delay > 3600)) { fprintf(stderr, "--s4-min-delay is %d, it cannot be less than zero or more than 1 hour!\n", s4_min_delay); return FWTS_ERROR; } if (s4_max_delay < s4_min_delay || s4_max_delay > 3600) { fprintf(stderr, "--s4-max-delay is %d, it cannot be less than --s4-min-delay or more than 1 hour!\n", s4_max_delay); return FWTS_ERROR; } if (s4_delay_delta <= 0.001) { fprintf(stderr, "--s4-delay-delta is %f, it cannot be less than 0.001\n", s4_delay_delta); return FWTS_ERROR; } if ((s4_sleep_delay < 10) || (s4_sleep_delay > 3600)) { fprintf(stderr, "--s4-sleep-delay is %d, it cannot be less than 10 seconds or more than 1 hour!\n", s4_sleep_delay); return FWTS_ERROR; } if ((s4_device_check_delay < 1) || (s4_device_check_delay > 3600)) { fprintf(stderr, "--s4-device-check-delay is %d, it cannot be less than 1 second or more than 1 hour!\n", s4_device_check_delay); return FWTS_ERROR; } if (s4_min_max_delay & s4_device_check) { fprintf(stderr, "Cannot use --s4-min-delay, --s4-max-delay, --s4-delay-delta as well as --s4-device-check, --s4-device-check-delay.\n"); return FWTS_ERROR; } return FWTS_OK; } static int s4_options_handler(fwts_framework *fw, int argc, char * const argv[], int option_char, int long_index) { FWTS_UNUSED(fw); FWTS_UNUSED(argc); FWTS_UNUSED(argv); switch (option_char) { case 0: switch (long_index) { case 0: s4_multiple = atoi(optarg); break; case 1: s4_min_delay = atoi(optarg); s4_min_max_delay = true; break; case 2: s4_max_delay = atoi(optarg); s4_min_max_delay = true; break; case 3: s4_delay_delta = atof(optarg); s4_min_max_delay = true; break; case 4: s4_sleep_delay = atoi(optarg); break; case 5: s4_device_check = true; break; case 6: s4_quirks = optarg; break; case 7: s4_device_check_delay = atoi(optarg); s4_device_check = true; } } return FWTS_OK; } static fwts_option s4_options[] = { { "s4-multiple", "", 1, "Run S4 tests multiple times, e.g. --s4-multiple=10." }, { "s4-min-delay", "", 1, "Minimum time between S4 iterations." }, { "s4-max-delay", "", 1, "Maximum time between S4 iterations." }, { "s4-delay-delta", "", 1, "Time to be added to delay between S4 iterations. Used in conjunction with --s4-min-delay and --s4-max-delay." }, { "s4-sleep-delay", "", 1, "Sleep N seconds between start of hibernate and wakeup." }, { "s4-device-check", "", 0, "Check differences between device configurations over a S4 cycle. Note we add a default of 15 seconds to allow wifi to re-associate. Cannot be used with --s4-min-delay, --s4-max-delay and --s4-delay-delta." }, { "s4-quirks", "", 1, "Comma separated list of quirk arguments to pass to pm-hibernate." }, { "s4-device-check-delay", "", 1, "Sleep N seconds before we run a device check after waking up from hibernate. Default is 15 seconds." }, { NULL, NULL, 0, NULL } }; static fwts_framework_minor_test s4_tests[] = { { s4_test_multiple, "S4 hibernate/resume test." }, { NULL, NULL } }; static fwts_framework_ops s4_ops = { .description = "S4 hibernate/resume test.", .init = s4_init, .minor_tests = s4_tests, .options = s4_options, .options_handler = s4_options_handler, .options_check = s4_options_check }; FWTS_REGISTER("s4", &s4_ops, FWTS_TEST_LAST, FWTS_FLAG_POWER_STATES | FWTS_FLAG_ROOT_PRIV); #endif src/acpi/syntaxcheck/000077500000000000000000000000001231470457100151115ustar00rootroot00000000000000src/acpi/syntaxcheck/syntaxcheck.c000066400000000000000000000443211231470457100176050ustar00rootroot00000000000000/* * Copyright (C) 2010-2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #include "fwts.h" #include #include #include #include #include #include #include #define ASL_EXCEPTIONS /* so we can include AslErrorLevel in aslmessages.h */ #include "aslmessages.h" typedef struct { const uint16_t error_number; const char *id_str; char *advice; } syntaxcheck_error_map_item; static int syntaxcheck_load_advice(fwts_framework *fw); static void syntaxcheck_free_advice(void); /* * syntaxcheck advice data file, data stored in json format */ #define SYNTAXCHECK_JSON_FILE "syntaxcheck.json" #define ASL_ID(error) { error, #error, NULL } /* * From aslmessages.h, current ASL errors * create a mapping from value to stringified name */ static syntaxcheck_error_map_item syntaxcheck_error_map[] = { ASL_ID(ASL_MSG_ALIGNMENT), ASL_ID(ASL_MSG_ALPHANUMERIC_STRING), ASL_ID(ASL_MSG_AML_NOT_IMPLEMENTED), ASL_ID(ASL_MSG_ARG_COUNT_HI), ASL_ID(ASL_MSG_ARG_COUNT_LO), ASL_ID(ASL_MSG_ARG_INIT), ASL_ID(ASL_MSG_BACKWARDS_OFFSET), ASL_ID(ASL_MSG_BUFFER_LENGTH), ASL_ID(ASL_MSG_CLOSE), ASL_ID(ASL_MSG_COMPILER_INTERNAL), ASL_ID(ASL_MSG_COMPILER_RESERVED), ASL_ID(ASL_MSG_CONNECTION_MISSING), ASL_ID(ASL_MSG_CONNECTION_INVALID), ASL_ID(ASL_MSG_CONSTANT_EVALUATION), ASL_ID(ASL_MSG_CONSTANT_FOLDED), ASL_ID(ASL_MSG_CORE_EXCEPTION), ASL_ID(ASL_MSG_DEBUG_FILE_OPEN), ASL_ID(ASL_MSG_DEBUG_FILENAME), ASL_ID(ASL_MSG_DEPENDENT_NESTING), ASL_ID(ASL_MSG_DMA_CHANNEL), ASL_ID(ASL_MSG_DMA_LIST), ASL_ID(ASL_MSG_DUPLICATE_CASE), ASL_ID(ASL_MSG_DUPLICATE_ITEM), ASL_ID(ASL_MSG_EARLY_EOF), ASL_ID(ASL_MSG_ENCODING_LENGTH), ASL_ID(ASL_MSG_EX_INTERRUPT_LIST), ASL_ID(ASL_MSG_EX_INTERRUPT_LIST_MIN), ASL_ID(ASL_MSG_EX_INTERRUPT_NUMBER), ASL_ID(ASL_MSG_FIELD_ACCESS_WIDTH), ASL_ID(ASL_MSG_FIELD_UNIT_ACCESS_WIDTH), ASL_ID(ASL_MSG_FIELD_UNIT_OFFSET), ASL_ID(ASL_MSG_GPE_NAME_CONFLICT), ASL_ID(ASL_MSG_HID_LENGTH), ASL_ID(ASL_MSG_HID_PREFIX), ASL_ID(ASL_MSG_HID_SUFFIX), ASL_ID(ASL_MSG_INCLUDE_FILE_OPEN), ASL_ID(ASL_MSG_INPUT_FILE_OPEN), ASL_ID(ASL_MSG_INTEGER_LENGTH), ASL_ID(ASL_MSG_INTEGER_OPTIMIZATION), ASL_ID(ASL_MSG_INTERRUPT_LIST), ASL_ID(ASL_MSG_INTERRUPT_NUMBER), ASL_ID(ASL_MSG_INVALID_ACCESS_SIZE), ASL_ID(ASL_MSG_INVALID_ADDR_FLAGS), ASL_ID(ASL_MSG_INVALID_CONSTANT_OP), ASL_ID(ASL_MSG_INVALID_EISAID), ASL_ID(ASL_MSG_INVALID_ESCAPE), ASL_ID(ASL_MSG_INVALID_GRAN_FIXED), ASL_ID(ASL_MSG_INVALID_GRANULARITY), ASL_ID(ASL_MSG_INVALID_LENGTH), ASL_ID(ASL_MSG_INVALID_LENGTH_FIXED), ASL_ID(ASL_MSG_INVALID_MIN_MAX), ASL_ID(ASL_MSG_INVALID_OPERAND), ASL_ID(ASL_MSG_INVALID_PERFORMANCE), ASL_ID(ASL_MSG_INVALID_PRIORITY), ASL_ID(ASL_MSG_INVALID_STRING), ASL_ID(ASL_MSG_INVALID_TARGET), ASL_ID(ASL_MSG_INVALID_TIME), ASL_ID(ASL_MSG_INVALID_TYPE), ASL_ID(ASL_MSG_INVALID_UUID), ASL_ID(ASL_MSG_ISA_ADDRESS), ASL_ID(ASL_MSG_LEADING_ASTERISK), ASL_ID(ASL_MSG_LIST_LENGTH_LONG), ASL_ID(ASL_MSG_LIST_LENGTH_SHORT), ASL_ID(ASL_MSG_LISTING_FILE_OPEN), ASL_ID(ASL_MSG_LISTING_FILENAME), ASL_ID(ASL_MSG_LOCAL_INIT), ASL_ID(ASL_MSG_LOCAL_OUTSIDE_METHOD), ASL_ID(ASL_MSG_LONG_LINE), ASL_ID(ASL_MSG_MEMORY_ALLOCATION), ASL_ID(ASL_MSG_MISSING_ENDDEPENDENT), ASL_ID(ASL_MSG_MISSING_STARTDEPENDENT), ASL_ID(ASL_MSG_MULTIPLE_DEFAULT), ASL_ID(ASL_MSG_MULTIPLE_TYPES), ASL_ID(ASL_MSG_NAME_EXISTS), ASL_ID(ASL_MSG_NAME_OPTIMIZATION), ASL_ID(ASL_MSG_NAMED_OBJECT_IN_WHILE), ASL_ID(ASL_MSG_NESTED_COMMENT), ASL_ID(ASL_MSG_NO_CASES), ASL_ID(ASL_MSG_NO_REGION), ASL_ID(ASL_MSG_NO_RETVAL), ASL_ID(ASL_MSG_NO_WHILE), ASL_ID(ASL_MSG_NON_ASCII), ASL_ID(ASL_MSG_NON_ZERO), ASL_ID(ASL_MSG_NOT_EXIST), ASL_ID(ASL_MSG_NOT_FOUND), ASL_ID(ASL_MSG_NOT_METHOD), ASL_ID(ASL_MSG_NOT_PARAMETER), ASL_ID(ASL_MSG_NOT_REACHABLE), ASL_ID(ASL_MSG_NOT_REFERENCED), ASL_ID(ASL_MSG_NULL_DESCRIPTOR), ASL_ID(ASL_MSG_NULL_STRING), ASL_ID(ASL_MSG_OPEN), ASL_ID(ASL_MSG_OUTPUT_FILE_OPEN), ASL_ID(ASL_MSG_OUTPUT_FILENAME), ASL_ID(ASL_MSG_PACKAGE_LENGTH), ASL_ID(ASL_MSG_PREPROCESSOR_FILENAME), ASL_ID(ASL_MSG_READ), ASL_ID(ASL_MSG_RECURSION), ASL_ID(ASL_MSG_REGION_BUFFER_ACCESS), ASL_ID(ASL_MSG_REGION_BYTE_ACCESS), ASL_ID(ASL_MSG_RESERVED_ARG_COUNT_HI), ASL_ID(ASL_MSG_RESERVED_ARG_COUNT_LO), ASL_ID(ASL_MSG_RESERVED_METHOD), ASL_ID(ASL_MSG_RESERVED_NO_RETURN_VAL), ASL_ID(ASL_MSG_RESERVED_OPERAND_TYPE), ASL_ID(ASL_MSG_RESERVED_RETURN_VALUE), ASL_ID(ASL_MSG_RESERVED_USE), ASL_ID(ASL_MSG_RESERVED_WORD), ASL_ID(ASL_MSG_RESOURCE_FIELD), ASL_ID(ASL_MSG_RESOURCE_INDEX), ASL_ID(ASL_MSG_RESOURCE_LIST), ASL_ID(ASL_MSG_RESOURCE_SOURCE), ASL_ID(ASL_MSG_RESULT_NOT_USED), ASL_ID(ASL_MSG_RETURN_TYPES), ASL_ID(ASL_MSG_SCOPE_FWD_REF), ASL_ID(ASL_MSG_SCOPE_TYPE), ASL_ID(ASL_MSG_SEEK), ASL_ID(ASL_MSG_SERIALIZED), ASL_ID(ASL_MSG_SINGLE_NAME_OPTIMIZATION), ASL_ID(ASL_MSG_SOME_NO_RETVAL), ASL_ID(ASL_MSG_STRING_LENGTH), ASL_ID(ASL_MSG_SWITCH_TYPE), ASL_ID(ASL_MSG_SYNC_LEVEL), ASL_ID(ASL_MSG_SYNTAX), ASL_ID(ASL_MSG_TABLE_SIGNATURE), ASL_ID(ASL_MSG_TAG_LARGER), ASL_ID(ASL_MSG_TAG_SMALLER), ASL_ID(ASL_MSG_TIMEOUT), ASL_ID(ASL_MSG_TOO_MANY_TEMPS), ASL_ID(ASL_MSG_UNKNOWN_RESERVED_NAME), ASL_ID(ASL_MSG_UNREACHABLE_CODE), ASL_ID(ASL_MSG_UNSUPPORTED), ASL_ID(ASL_MSG_UPPER_CASE), ASL_ID(ASL_MSG_VENDOR_LIST), ASL_ID(ASL_MSG_WRITE), ASL_ID(ASL_MSG_DIRECTIVE_SYNTAX), ASL_ID(ASL_MSG_ENDIF_MISMATCH), ASL_ID(ASL_MSG_ERROR_DIRECTIVE), ASL_ID(ASL_MSG_EXISTING_NAME), ASL_ID(ASL_MSG_INVALID_INVOCATION), ASL_ID(ASL_MSG_MACRO_SYNTAX), ASL_ID(ASL_MSG_TOO_MANY_ARGUMENTS), ASL_ID(ASL_MSG_UNKNOWN_DIRECTIVE), ASL_ID(ASL_MSG_UNKNOWN_PRAGMA), ASL_ID(ASL_MSG_BUFFER_ELEMENT), ASL_ID(ASL_MSG_DIVIDE_BY_ZERO), ASL_ID(ASL_MSG_FLAG_VALUE), ASL_ID(ASL_MSG_INTEGER_SIZE), ASL_ID(ASL_MSG_INVALID_EXPRESSION), ASL_ID(ASL_MSG_INVALID_FIELD_NAME), ASL_ID(ASL_MSG_INVALID_HEX_INTEGER), ASL_ID(ASL_MSG_OEM_TABLE), ASL_ID(ASL_MSG_RESERVED_VALUE), ASL_ID(ASL_MSG_UNKNOWN_LABEL), ASL_ID(ASL_MSG_UNKNOWN_SUBTABLE), ASL_ID(ASL_MSG_UNKNOWN_TABLE), ASL_ID(ASL_MSG_ZERO_VALUE), ASL_ID(ASL_MSG_RECURSION), ASL_ID(ASL_MSG_SERIALIZED_REQUIRED), ASL_ID(ASL_MSG_LOCAL_OUTSIDE_METHOD), ASL_ID(ASL_MSG_NOT_PARAMETER), ASL_ID(ASL_MSG_TRUNCATION), ASL_ID(ASL_MSG_LIST_LENGTH_SHORT), ASL_ID(ASL_MSG_PACKAGE_LENGTH), ASL_ID(ASL_MSG_RESERVED_PACKAGE_LENGTH), ASL_ID(ASL_MSG_LIST_LENGTH_SHORT), { 0, NULL, NULL } }; static int syntaxcheck_init(fwts_framework *fw) { (void)syntaxcheck_load_advice(fw); return FWTS_OK; } static int syntaxcheck_deinit(fwts_framework *fw) { FWTS_UNUSED(fw); syntaxcheck_free_advice(); return FWTS_OK; } static inline uint16_t syntaxcheck_error_code_to_error_level(const uint32_t error_code) { uint16_t error_level = (error_code / 1000) - 1; return error_level; } static inline uint16_t syntaxcheck_error_code_to_error_number(const uint32_t error_code) { uint16_t error_number = (error_code % 1000); return error_number; } static const char *syntaxcheck_error_code_to_id(const uint32_t error_code) { int i; uint16_t error_number = syntaxcheck_error_code_to_error_number(error_code); static const char *unknown = "Unknown"; for (i = 0; syntaxcheck_error_map[i].id_str != NULL; i++) { if (syntaxcheck_error_map[i].error_number == error_number) return syntaxcheck_error_map[i].id_str; } return unknown; } static const char *syntaxcheck_error_level(uint32_t error_code) { uint16_t error_level = syntaxcheck_error_code_to_error_level(error_code); static char buf[64]; char *ptr; /* Out of range for some reason? */ if (error_level >= ASL_NUM_REPORT_LEVELS) return "Unknown"; /* AslErrorLevel strings are end-space padded, so strip off end spaces if any */ strncpy(buf, AslErrorLevel[error_level], sizeof(buf)); buf[sizeof(buf) -1] = '\0'; ptr = strchr(buf, ' '); if (ptr) *ptr = '\0'; return buf; } /* * syntaxcheck_dump_code() * output a block of source around where the error is reported */ static void syntaxcheck_dump_code(fwts_framework *fw, int error_code, int carat_offset, char *error_message, fwts_list* iasl_disassembly, int error_line, int howmany) { int i = 0; fwts_list_link *item; fwts_log_info_verbatum(fw, "Line | AML source\n"); fwts_log_underline(fw->results, '-'); fwts_list_foreach(item, iasl_disassembly) { i++; if (i >= error_line + (howmany / 2)) break; if (i > error_line - (howmany / 2)) { fwts_log_info_verbatum(fw, "%5.5d| %s\n", i, fwts_text_list_text(item)); if (i == error_line) { fwts_log_info_verbatum(fw, " | %*.*s", carat_offset, carat_offset, "^"); fwts_log_info_verbatum(fw, " | %s %d: %s\n", syntaxcheck_error_level(error_code), error_code, error_message); } } } fwts_log_underline(fw->results, '='); } /* * syntaxcheck_load_advice() * load error, advice string tuple from json formatted data file * this populates the syntaxcheck_error_map advice field. */ static int syntaxcheck_load_advice(fwts_framework *fw) { int ret = FWTS_ERROR; int n; int i; json_object *syntaxcheck_table; json_object *syntaxcheck_objs; char json_data_path[PATH_MAX]; snprintf(json_data_path, sizeof(json_data_path), "%s/%s", fw->json_data_path, SYNTAXCHECK_JSON_FILE); syntaxcheck_objs = json_object_from_file(json_data_path); if (FWTS_JSON_ERROR(syntaxcheck_objs)) { fwts_log_error(fw, "Cannot load objects table from %s.", json_data_path); return FWTS_ERROR; } syntaxcheck_table = json_object_object_get(syntaxcheck_objs, "erroradvice"); if (FWTS_JSON_ERROR(syntaxcheck_table)) { fwts_log_error(fw, "Cannot fetch syntaxcheck table from %s.", json_data_path); goto fail_put; } n = json_object_array_length(syntaxcheck_table); /* Now fetch json objects */ for (i = 0; i < n; i++) { const char *advice, *id_str; json_object *obj; int j; obj = json_object_array_get_idx(syntaxcheck_table, i); if (FWTS_JSON_ERROR(obj)) { fwts_log_error(fw, "Cannot fetch %d item from syntaxcheck table.", i); break; } advice = json_object_get_string(json_object_object_get(obj, "advice")); if (FWTS_JSON_ERROR(advice)) { fwts_log_error(fw, "Cannot fetch advice from item %d.", i); break; } id_str = json_object_get_string(json_object_object_get(obj, "id")); if (FWTS_JSON_ERROR(id_str)) { fwts_log_error(fw, "Cannot fetch ID from item %d.", i); break; } for (j = 0; syntaxcheck_error_map[j].id_str != NULL; j++) { if (strcmp(id_str, syntaxcheck_error_map[j].id_str) == 0) { /* Matching id, so update the advice field */ syntaxcheck_error_map[j].advice = strdup(advice); break; } } } ret = FWTS_OK; fail_put: json_object_put(syntaxcheck_objs); return ret; } /* * syntaxcheck_free_advice() * free up the adviceinfo data */ static void syntaxcheck_free_advice(void) { int i; for (i = 0; syntaxcheck_error_map[i].id_str != NULL; i++) if (syntaxcheck_error_map[i].advice) free(syntaxcheck_error_map[i].advice); } /* * syntaxcheck_give_advice() * look up advice on a given error number and give advice if any exists */ static void syntaxcheck_give_advice(fwts_framework *fw, uint32_t error_code) { int i; /* iasl encodes error_codes as follows: */ uint16_t error_number = syntaxcheck_error_code_to_error_number(error_code); for (i = 0; syntaxcheck_error_map[i].id_str != NULL; i++) { if ((syntaxcheck_error_map[i].error_number == error_number) && (syntaxcheck_error_map[i].advice != NULL)) { fwts_advice(fw, "(for %s #%d, %s): %s", syntaxcheck_error_level(error_code), error_code, syntaxcheck_error_map[i].id_str, syntaxcheck_error_map[i].advice); break; } } } /* * syntaxcheck_table() * disassemble and reassemble a table, check for errors. which indicates the Nth * table, for example, SSDT may have tables 1..N */ static int syntaxcheck_table(fwts_framework *fw, char *tablename, int which) { fwts_list_link *item; int errors = 0; int warnings = 0; int remarks = 0; fwts_acpi_table_info *table; fwts_list *iasl_stdout, *iasl_stderr, *iasl_disassembly; if (fwts_acpi_find_table(fw, tablename, which, &table) != FWTS_OK) { fwts_aborted(fw, "Cannot load ACPI table %s.", tablename); return FWTS_ERROR; } if (table == NULL) return FWTS_NO_TABLE; /* Table does not exist */ if (fwts_iasl_reassemble(fw, table->data, table->length, &iasl_disassembly, &iasl_stdout, &iasl_stderr) != FWTS_OK) { fwts_aborted(fw, "Cannot re-assasemble with iasl."); return FWTS_ERROR; } fwts_log_nl(fw); fwts_log_info(fw, "Checking ACPI table %s (#%d)", tablename, which); fwts_log_nl(fw); if (iasl_stdout) { /* Scan error text from assembly */ fwts_list_foreach(item, iasl_stdout) { int num; char ch; char *line = fwts_text_list_text(item); if ((sscanf(line, "%*s %d%c", &num, &ch) == 2) && ch == ':') { if (item->next != NULL) { char *error_text = fwts_text_list_text(item->next); int iasl_error = (strstr(error_text, "Error") != NULL); int iasl_warning = (strstr(error_text, "Warning") != NULL); int iasl_remark = (strstr(error_text, "Remark") != NULL); int error_code; sscanf(error_text, "%*s %d", &error_code); /* Valid error or warning, go and report */ if (iasl_error || iasl_warning || iasl_remark) { char label[64]; char *colon = strstr(line, ":"); char *carat = strstr(error_text, "^"); char *ptr; int colon_offset = (colon == NULL) ? 0 : colon + 1 - line; int carat_offset = (carat == NULL) ? 0 : carat - error_text; uint16_t error_level = syntaxcheck_error_code_to_error_level((uint32_t)error_code); bool skip = false; /* trim */ fwts_chop_newline(error_text); /* Strip out the ^ from the error message */ for (ptr = error_text; *ptr; ptr++) if (*ptr == '^') *ptr = ' '; /* Look for error message after: "Error: 4042 - " prefix */ ptr = strstr(error_text, "-"); if (ptr) ptr += 2; else ptr = error_text; /* Urgh, none found, default */ /* Skip over leading white space */ while (*ptr == ' ') ptr++; snprintf(label, sizeof(label), "AMLAsm%s", syntaxcheck_error_code_to_id(error_code)); switch (error_level) { case ASL_WARNING: case ASL_WARNING2: case ASL_WARNING3: fwts_failed(fw, LOG_LEVEL_MEDIUM, label, "Assembler warning in line %d", num); break; case ASL_ERROR: fwts_failed(fw, LOG_LEVEL_HIGH, label, "Assembler error in line %d", num); break; case ASL_REMARK: fwts_failed(fw, LOG_LEVEL_LOW, label, "Assembler remark in line %d", num); break; case ASL_OPTIMIZATION: skip = true; break; default: fwts_log_info(fw, "Assembler message in line %d", num); break; } if (!skip) { syntaxcheck_dump_code(fw, error_code, carat_offset - colon_offset, ptr, iasl_disassembly, num, 8); syntaxcheck_give_advice(fw, error_code); } } errors += iasl_error; warnings += iasl_warning; remarks += iasl_remark; item = item->next; } else { fwts_log_info(fw, "%s", line); fwts_log_error(fw, "Could not find parser error message " "(this can happen if iasl segfaults!)"); } } } } /* * Did iasl emit any errors that we need to check? */ if (iasl_stderr) { fwts_list_foreach(item, iasl_stderr) { char *line = fwts_text_list_text(item); if (strstr(line, "Compiler aborting due to parser-detected syntax error")) { fwts_failed(fw, LOG_LEVEL_HIGH, "SyntaxCheckIASLCompilerAborted", "Compilation aborted early due to a parser detected syntax error."); fwts_advice(fw, "Some subsequent errors may not be detected because the " "compiler had to terminate prematurely. If the compiler did not " "abort early then potentially correct code may parse incorrectly " "producing some or many false positive errors."); } } } fwts_text_list_free(iasl_disassembly); fwts_text_list_free(iasl_stdout); fwts_text_list_free(iasl_stderr); if (errors + warnings + remarks > 0) fwts_log_info(fw, "Table %s (%d) reassembly: Found %d errors, %d warnings, %d remarks.", tablename, which, errors, warnings, remarks); else fwts_passed(fw, "%s (%d) reassembly, Found 0 errors, 0 warnings, 0 remarks.", tablename, which); fwts_log_nl(fw); return FWTS_OK; } static int syntaxcheck_DSDT(fwts_framework *fw) { return syntaxcheck_table(fw, "DSDT", 0); } static int syntaxcheck_SSDT(fwts_framework *fw) { int i; for (i=0; i < 100; i++) { int ret = syntaxcheck_table(fw, "SSDT", i); if (ret == FWTS_NO_TABLE) return FWTS_OK; /* Hit the last table */ if (ret != FWTS_OK) return FWTS_ERROR; } return FWTS_OK; } static fwts_framework_minor_test syntaxcheck_tests[] = { { syntaxcheck_DSDT, "Disassemble and reassemble DSDT" }, { syntaxcheck_SSDT, "Disassemble and reassemble SSDT" }, { NULL, NULL } }; static fwts_framework_ops syntaxcheck_ops = { .description = "Re-assemble DSDT and find syntax errors and warnings.", .init = syntaxcheck_init, .deinit = syntaxcheck_deinit, .minor_tests = syntaxcheck_tests }; FWTS_REGISTER("syntaxcheck", &syntaxcheck_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH); src/acpi/wakealarm/000077500000000000000000000000001231470457100145315ustar00rootroot00000000000000src/acpi/wakealarm/wakealarm.c000066400000000000000000000075621231470457100166530ustar00rootroot00000000000000/* * Copyright (C) 2010-2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #include "fwts.h" #include #include #include #include #include #include static int wakealarm_test1(fwts_framework *fw) { if (fwts_wakealarm_exits(fw) == FWTS_OK) fwts_passed(fw, "RTC with a RTC alarm ioctl() interface found."); else { fwts_failed(fw, LOG_LEVEL_MEDIUM, "NoWakeAlarmTest1", "Could not find an RTC with an alarm ioctl() interface."); #ifdef FWTS_ARCH_INTEL /* For x86 devices, this is considered a failure */ fwts_advice(fw, "x86 devices generally should have an RTC wake alarm that " "is normally controlled by the RTC alarm ioctl() interface. This interface " "does not exist, so the wake alarm tests will be aborted."); #else fwts_advice(fw, "non-x86 devices sometimes do not have an RTC wake alarm that " "is normally controlled by the RTC alarm ioctl() interface. This " "interface does not exist, so the wake alarm tests will be aborted."); #endif return FWTS_ABORTED; } return FWTS_OK; } static int wakealarm_test2(fwts_framework *fw) { fwts_log_info(fw, "Trigger wakealarm for 1 seconds in the future."); if (fwts_wakealarm_trigger(fw, 1)) { fwts_failed(fw, LOG_LEVEL_MEDIUM, "WakeAlarmNotTriggeredTest2", "RTC wakealarm did not trigger."); return FWTS_OK; } (void)fwts_wakealarm_cancel(fw); fwts_passed(fw, "RTC wakealarm was triggered successfully."); return FWTS_OK; } static int wakealarm_test3(fwts_framework *fw) { int ret; ret = fwts_wakealarm_test_firing(fw, 2); if (ret < 0) { fwts_failed(fw, LOG_LEVEL_MEDIUM, "WakeAlarmNotTriggeredTest3", "Failed to trigger and fire wakealarm."); return FWTS_ERROR; /* Really went wrong */ } if (ret == 0) fwts_passed(fw, "RTC wakealarm triggered and fired successfully."); else { fwts_failed(fw, LOG_LEVEL_MEDIUM, "WakeAlarmNotFiredTest3", "RTC wakealarm was triggered but did not fire."); } return FWTS_OK; } static int wakealarm_test4(fwts_framework *fw) { int i; int failed = 0; for (i = 1; i < 5; i++) { fwts_log_info(fw, "Trigger wakealarm for %d seconds in the future.", i); int ret = fwts_wakealarm_test_firing(fw, i); if (ret < 0) { fwts_failed(fw, LOG_LEVEL_MEDIUM, "WakeAlarmNotTriggeredTest4", "Failed to trigger and fire wakealarm."); return FWTS_ERROR; /* Really went wrong */ } if (ret != 0) { fwts_failed(fw, LOG_LEVEL_MEDIUM, "WakeAlarmNotFiredTest4", "RTC wakealarm was triggered but did not fire."); failed++; } fwts_progress(fw, 25 * i); } if (failed == 0) fwts_passed(fw, "RTC wakealarm triggered and fired successfully."); return FWTS_OK; } static fwts_framework_minor_test wakealarm_tests[] = { { wakealarm_test1, "Test existence of RTC with alarm interface." }, { wakealarm_test2, "Trigger wakealarm for 1 seconds in the future." }, { wakealarm_test3, "Test if wakealarm is fired." }, { wakealarm_test4, "Multiple wakealarm firing tests." }, { NULL, NULL } }; static fwts_framework_ops wakealarm_ops = { .description = "ACPI Wakealarm tests.", .minor_tests = wakealarm_tests }; FWTS_REGISTER("wakealarm", &wakealarm_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | FWTS_FLAG_ROOT_PRIV); src/acpi/wmi/000077500000000000000000000000001231470457100133615ustar00rootroot00000000000000src/acpi/wmi/wmi.c000066400000000000000000000260061231470457100143250ustar00rootroot00000000000000/* * Copyright (C) 2010-2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #include "fwts.h" #ifdef FWTS_ARCH_INTEL #include #include #include #include #include #include #include #include #include /* acpica headers */ #include "acpi.h" #include "fwts_acpi_object_eval.h" typedef enum { FWTS_WMI_EXPENSIVE = 0x00000001, FWTS_WMI_METHOD = 0x00000002, FWTS_WMI_STRING = 0x00000004, FWTS_WMI_EVENT = 0x00000008 } fwts_wmi_flags; typedef struct { const fwts_wmi_flags flags; const char *name; } fwts_wmi_flags_name; typedef struct { const char *guid; /* GUID string */ const char *driver; /* Kernel Driver name */ const char *vendor; /* Machine Vendor */ } fwts_wmi_known_guid; /* * Packed WMI WDG data */ typedef struct { uint8_t guid[16]; /* GUID */ union { uint8_t obj_id[2]; /* Object Identifier */ struct { uint8_t notify_id; /* Notify Identifier */ uint8_t reserved; /* Reserved */ }; }; uint8_t instance; /* Instance */ uint8_t flags; /* fwts_wmi_flags */ } __attribute__ ((packed)) fwts_wdg_info; /* * Bunch of known WMI GUIDs in the kernel */ static fwts_wmi_known_guid fwts_wmi_known_guids[] = { { "67C3371D-95A3-4C37-BB61-DD47B491DAAB", "acer-wmi", "Acer" }, { "431F16ED-0C2B-444C-B267-27DEB140CF9C", "acer-wmi", "Acer" }, { "6AF4F258-B401-42FD-BE91-3D4AC2D7C0D3", "acer-wmi", "Acer" }, { "95764E09-FB56-4e83-B31A-37761F60994A", "acer-wmi", "Acer" }, { "61EF69EA-865C-4BC3-A502-A0DEBA0CB531", "acer-wmi", "Acer" }, { "676AA15E-6A47-4D9F-A2CC-1E6D18D14026", "acer-wmi", "Acer" }, { "0B3CBB35-E3C2-45ED-91C2-4C5A6D195D1C", "asus-nb-wmi","Asus" }, { "97845ED0-4E6D-11DE-8A39-0800200C9A66", "asus-wmi", "Asus" }, { "9DBB5994-A997-11DA-B012-B622A1EF5492", "dell-wmi", "Dell" }, { "284A0E6B-380E-472A-921F-E52786257FB4", "dell-wmi-aio","Dell" }, { "02314822-307C-4F66-BF0E-48AEAEB26CC8", "dell-wmi-aio","Dell" }, { "ABBC0F72-8EA1-11D1-00A0-C90629100000", "eeepc-wmi", "Asus" }, { "97845ED0-4E6D-11DE-8A39-0800200C9A66", "eeepc-wmi", "Asus" }, { "95F24279-4D7B-4334-9387-ACCDC67EF61C", "hp-wmi", "HP" }, { "5FB7F034-2C63-45e9-BE91-3D44E2C707E4", "hp-wmi", "HP" }, { "551A1F84-FBDD-4125-91DB-3EA8F44F1D45", "msi-wmi", "MSI" }, { "B6F3EEF2-3D2F-49DC-9DE3-85BCE18C62F2", "msi-wmi", "MSI" }, { "5B3CC38A-40D9-7245-8AE6-1145B751BE3F", "msi-wmi", "MSI" }, { "F6CB5C3C-9CAE-4EBD-B577-931EA32A2CC0", "mxm-wmi", "MXM" }, { "C364AC71-36DB-495A-8494-B439D472A505", "tc110-wmi", "HP Compaq" }, { NULL, NULL, NULL } }; /* * WMI flag to text mappings */ static const fwts_wmi_flags_name wmi_flags_name[] = { { FWTS_WMI_EXPENSIVE, "Expensive" }, { FWTS_WMI_METHOD, "Method" }, { FWTS_WMI_STRING, "String" }, { FWTS_WMI_EVENT, "Event" }, { 0, NULL } }; static bool wmi_advice_given; /* * wmi_init() * initialize ACPI */ static int wmi_init(fwts_framework *fw) { if (fwts_acpi_init(fw) != FWTS_OK) { fwts_log_error(fw, "Cannot initialise ACPI."); return FWTS_ERROR; } return FWTS_OK; } /* * wmi_deinit() * de-intialize ACPI */ static int wmi_deinit(fwts_framework *fw) { return fwts_acpi_deinit(fw); } /* * fwts_wmi_known_guid() * find any known GUID driver info */ static fwts_wmi_known_guid *wmi_find_guid(char *guid) { fwts_wmi_known_guid *info = fwts_wmi_known_guids; for (info = fwts_wmi_known_guids; info->guid != NULL; info++) if (strcmp(info->guid, guid) == 0) return info; return NULL; } /* * wmi_strncat() * build up a description of flag settings */ static char *wmi_strncat(char *dst, const char *str, const size_t dst_len) { if (*dst) strncat(dst, " | ", dst_len); return strncat(dst, str, dst_len); } /* * wmi_wdg_flags_to_text() * turn WDG flags into a description string */ static char *wmi_wdg_flags_to_text(const fwts_wmi_flags flags) { static char buffer[1024]; int i; *buffer = 0; for (i = 0; wmi_flags_name[i].flags; i++) if (flags & wmi_flags_name[i].flags) wmi_strncat(buffer, wmi_flags_name[i].name, sizeof(buffer) - 1); if (!*buffer) strncpy(buffer, "None", sizeof(buffer) - 1); return buffer; } /* * wmi_method_exist_count() * check if an associated method exists for the WDG object */ static void wmi_method_exist_count( fwts_framework *fw, const fwts_wdg_info *info, const char *guid_str) { fwts_list_link *item; fwts_list *objects; const size_t wm_name_len = 4; char wm_name[5]; char *objname = ""; int count = 0; snprintf(wm_name, sizeof(wm_name), "WM%c%c", info->obj_id[0], info->obj_id[1]); if ((objects = fwts_acpi_object_get_names()) == NULL) return; /* Should not ever happen, bail out if it does */ fwts_list_foreach(item, objects) { char *name = fwts_list_data(char*, item); const size_t name_len = strlen(name); if (strncmp(wm_name, name + name_len - wm_name_len, wm_name_len) == 0) { objname = name; count++; } } if (count == 0) { fwts_failed(fw, LOG_LEVEL_LOW, "WMIMissingMethod", "GUID %s should have an associated method WM%c%c defined, " "however this does not seem to exist.", guid_str, info->obj_id[0], info->obj_id[1]); } else if (count > 1) { fwts_failed(fw, LOG_LEVEL_LOW, "WMIMultipleMethod", "GUID %s has multiple associated methods WM%c%c defined, " "this is a firmware bug that leads to ambigous behaviour.", guid_str, info->obj_id[0], info->obj_id[1]); } else fwts_passed(fw, "%s has associated method %s", guid_str, objname); } /* * wmi_no_known_driver() * grumble that the kernel does not have a known handler for this GUID */ static void wmi_no_known_driver( fwts_framework *fw, const char *guid_str) { fwts_failed(fw, LOG_LEVEL_MEDIUM, "WMIUnknownGUID", "GUID %s is unknown to the kernel, a driver may need to " "be implemented for this GUID.", guid_str); if (!wmi_advice_given) { wmi_advice_given = true; fwts_log_advice(fw, "A WMI driver probably needs to be written for this " "WMI event. It can checked for using: wmi_has_guid(\"%s\"). " "One can install a notify handler using " "wmi_install_notify_handler(\"%s\", handler, NULL). " "http://lwn.net/Articles/391230 describes how to write an " "appropriate driver.", guid_str, guid_str); } } /* * wmi_dump_object() * dump out a WDG object */ static void wmi_dump_object(fwts_framework *fw, const fwts_wdg_info *info) { fwts_log_info_verbatum(fw, " Flags : 0x%2.2" PRIx8 " (%s)", info->flags, wmi_wdg_flags_to_text(info->flags)); fwts_log_info_verbatum(fw, " Object ID : %c%c", info->obj_id[0], info->obj_id[1]); fwts_log_info_verbatum(fw, " Instance : 0x%2.2" PRIx8, info->instance); } /* * wmi_known_driver() * report info about the supported kernel driver */ static void wmi_known_driver( fwts_framework *fw, const fwts_wmi_known_guid *known) { /* If we recognise the GUID then we may as well report this info */ if (known) { fwts_log_info_verbatum(fw, " Driver : %s (%s)", known->driver, known->vendor); } } /* * wmi_parse_wdg_data() * parse over raw _WDG data and dump + sanity check the objects */ static void wmi_parse_wdg_data( fwts_framework *fw, const char *name, const size_t size, const uint8_t *wdg_data) { size_t i; fwts_wdg_info *info = (fwts_wdg_info *)wdg_data; bool all_events_known = true; bool events = false; for (i = 0; i < (size / sizeof(fwts_wdg_info)); i++, info++) { uint8_t *guid = info->guid; char guid_str[37]; const fwts_wmi_known_guid *known; fwts_guid_buf_to_str(guid, guid_str, sizeof(guid_str)); fwts_log_nl(fw); fwts_log_info_verbatum(fw, "%s (%zd of %zd)", name, i + 1, size / sizeof(fwts_wdg_info)); fwts_log_info_verbatum(fw, " GUID: %s", guid_str); known = wmi_find_guid(guid_str); if (info->flags & FWTS_WMI_METHOD) { fwts_log_info_verbatum(fw, " WMI Method:"); wmi_dump_object(fw, info); wmi_known_driver(fw, known); wmi_method_exist_count(fw, info, guid_str); } else if (info->flags & FWTS_WMI_EVENT) { events = true; fwts_log_info_verbatum(fw, " WMI Event:"); fwts_log_info_verbatum(fw, " Flags : 0x%2.2" PRIx8 " (%s)", info->flags, wmi_wdg_flags_to_text(info->flags)); fwts_log_info_verbatum(fw, " Notification ID: 0x%2.2" PRIx8, info->notify_id); fwts_log_info_verbatum(fw, " Reserved : 0x%2.2" PRIx8, info->reserved); fwts_log_info_verbatum(fw, " Instance : 0x%2.2" PRIx8, info->instance); wmi_known_driver(fw, known); /* To handle events we really need a custom kernel driver */ if (!known) { wmi_no_known_driver(fw, guid_str); all_events_known = false; } } else { fwts_log_info_verbatum(fw, " WMI Object:"); wmi_dump_object(fw, info); wmi_known_driver(fw, known); } } if (events && all_events_known) fwts_passed(fw, "All events associated with %s are handled by a kernel driver.", name); } static int wmi_test1(fwts_framework *fw) { fwts_list_link *item; fwts_list *objects; const size_t name_len = 4; bool wdg_found = false; if ((objects = fwts_acpi_object_get_names()) == NULL) { fwts_log_info(fw, "Cannot find any ACPI objects"); return FWTS_ERROR; } wmi_advice_given = false; fwts_list_foreach(item, objects) { char *name = fwts_list_data(char*, item); const size_t len = strlen(name); if (strncmp("_WDG", name + len - name_len, name_len) == 0) { ACPI_OBJECT_LIST arg_list; ACPI_BUFFER buf; ACPI_OBJECT *obj; int ret; arg_list.Count = 0; arg_list.Pointer = NULL; ret = fwts_acpi_object_evaluate(fw, name, &arg_list, &buf); if ((ACPI_FAILURE(ret) != AE_OK) || (buf.Pointer == NULL)) continue; /* Do we have a valid buffer to dump? */ obj = buf.Pointer; if ((obj->Type == ACPI_TYPE_BUFFER) && (obj->Buffer.Pointer != NULL) && (obj->Buffer.Length > 0)) { wmi_parse_wdg_data(fw, name, obj->Buffer.Length, (uint8_t*)obj->Buffer.Pointer); wdg_found = true; } free(buf.Pointer); } } if (!wdg_found) { fwts_log_info(fw, "No ACPI _WDG WMI data found."); return FWTS_SKIP; } return FWTS_OK; } static fwts_framework_minor_test wmi_tests[] = { { wmi_test1, "Windows Management Instrumentation test." }, { NULL, NULL } }; static fwts_framework_ops wmi_ops = { .description = "Extract and analyse Windows Management " "Instrumentation (WMI).", .init = wmi_init, .deinit = wmi_deinit, .minor_tests = wmi_tests }; FWTS_REGISTER("wmi", &wmi_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH); #endif src/acpica/000077500000000000000000000000001231470457100130715ustar00rootroot00000000000000src/acpica/Makefile.am000066400000000000000000000224751231470457100151370ustar00rootroot00000000000000# Nb. the top-level Makefile builds source/compiler for us now... ## SUBDIRS = source/compiler # # -DACPI_EXEC_APP is specific to making ACPICA for the fwts method test # AM_CPPFLAGS = \ -D_LINUX -DNDEBUG -D_CONSOLE -DACPI_EXEC_APP \ -I$(top_srcdir)/src/lib/include \ -Isource/include \ -Wall -fno-strict-aliasing # # We rename some of the functions so we can override them in fwts. This # is a hack, I feel dirty now. # osunixxf_munged.c: source/os_specific/service_layers/osunixxf.c cat source/os_specific/service_layers/osunixxf.c | \ sed 's/^AcpiOsPrintf/__AcpiOsPrintf/' | \ sed 's/^AcpiOsReadPort/__AcpiOsReadPort/' | \ sed 's/^AcpiOsReadPciConfiguration/__AcpiOsReadPciConfiguration/' | \ sed 's/^AcpiOsSignalSemaphore/__AcpiOsSignalSemaphore/' | \ sed 's/^AcpiOsWaitSemaphore/__AcpiOsWaitSemaphore/' | \ sed 's/^AcpiOsCreateSemaphore/__AcpiOsCreateSemaphore/' | \ sed 's/^AcpiOsDeleteSemaphore/__AcpiOsDeleteSemaphore/' | \ sed 's/^AcpiOsVprintf/__AcpiOsVprintf/' | \ sed 's/^AcpiOsSignal/__AcpiOsSignal/' | \ sed 's/^AcpiOsSleep/__AcpiOsSleep/' | \ sed 's/^AcpiOsExecute/__AcpiOsExecute/' \ > osunixxf_munged.c # # Force maximum loop iterations to be just 128 instead of 0xffff # because we really don't want to wait until the sun turns into # a lump of coal before we complete a blocked operation # dscontrol_munged.c: source/components/dispatcher/dscontrol.c cat source/components/dispatcher/dscontrol.c | \ sed 's/ACPI_MAX_LOOP_ITERATIONS/0x0080/' \ > dscontrol_munged.c BUILT_SOURCES = osunixxf_munged.c dscontrol_munged.c # # Source files that are generated on-the fly and need cleaning # CLEANFILES = osunixxf_munged.c \ dscontrol_munged.c \ source/compiler/aslcompiler.output \ source/compiler/dtparser.output \ source/compiler/dtparser.y.h \ source/compiler/prparser.output \ source/compiler/prparser.y.h \ source/compiler/prparserlex.c \ source/compiler/prparserparse.c pkglib_LTLIBRARIES = libfwtsacpica.la libfwtsacpica_la_LDFLAGS = -lpthread -version-info 1:0:0 libfwtsacpica_la_CPPFLAGS = $(AM_CPPFLAGS) # # fwts acpica library sources # libfwtsacpica_la_SOURCES = \ fwts_acpica.c \ osunixxf_munged.c \ dscontrol_munged.c \ source/components/debugger/dbcmds.c \ source/components/debugger/dbdisply.c \ source/components/debugger/dbexec.c \ source/components/debugger/dbfileio.c \ source/components/debugger/dbhistry.c \ source/components/debugger/dbinput.c \ source/components/debugger/dbstats.c \ source/components/debugger/dbutils.c \ source/components/debugger/dbxface.c \ source/components/debugger/dbmethod.c \ source/components/debugger/dbnames.c \ source/components/debugger/dbconvert.c \ source/components/debugger/dbtest.c \ source/components/disassembler/dmbuffer.c \ source/components/disassembler/dmnames.c \ source/components/disassembler/dmobject.c \ source/components/disassembler/dmopcode.c \ source/components/disassembler/dmresrc.c \ source/components/disassembler/dmresrcl.c \ source/components/disassembler/dmresrcs.c \ source/components/disassembler/dmutils.c \ source/components/disassembler/dmwalk.c \ source/components/disassembler/dmresrcl2.c \ source/components/disassembler/dmdeferred.c \ source/components/dispatcher/dsfield.c \ source/components/dispatcher/dsinit.c \ source/components/dispatcher/dsmethod.c \ source/components/dispatcher/dsmthdat.c \ source/components/dispatcher/dsobject.c \ source/components/dispatcher/dsutils.c \ source/components/dispatcher/dswexec.c \ source/components/dispatcher/dswload.c \ source/components/dispatcher/dswscope.c \ source/components/dispatcher/dswstate.c \ source/components/dispatcher/dsargs.c \ source/components/dispatcher/dswload2.c \ source/components/dispatcher/dsopcode.c \ source/components/events/evevent.c \ source/components/events/evgpe.c \ source/components/events/evgpeblk.c \ source/components/events/evgpeinit.c \ source/components/events/evgpeutil.c \ source/components/events/evxfgpe.c \ source/components/events/evmisc.c \ source/components/events/evregion.c \ source/components/events/evrgnini.c \ source/components/events/evsci.c \ source/components/events/evxface.c \ source/components/events/evxfevnt.c \ source/components/events/evxfregn.c \ source/components/events/evglock.c \ source/components/events/evhandler.c \ source/components/executer/exfield.c \ source/components/executer/exfldio.c \ source/components/executer/exmisc.c \ source/components/executer/exmutex.c \ source/components/executer/exnames.c \ source/components/executer/exoparg1.c \ source/components/executer/exoparg2.c \ source/components/executer/exoparg3.c \ source/components/executer/exoparg6.c \ source/components/executer/exprep.c \ source/components/executer/exregion.c \ source/components/executer/exresnte.c \ source/components/executer/exresolv.c \ source/components/executer/exresop.c \ source/components/executer/exstore.c \ source/components/executer/exstoren.c \ source/components/executer/exstorob.c \ source/components/executer/exsystem.c \ source/components/executer/exutils.c \ source/components/executer/exconvrt.c \ source/components/executer/excreate.c \ source/components/executer/exdump.c \ source/components/executer/exdebug.c \ source/components/executer/exconfig.c \ source/components/hardware/hwacpi.c \ source/components/hardware/hwgpe.c \ source/components/hardware/hwpci.c \ source/components/hardware/hwregs.c \ source/components/hardware/hwsleep.c \ source/components/hardware/hwvalid.c \ source/components/hardware/hwxface.c \ source/components/hardware/hwxfsleep.c \ source/components/hardware/hwesleep.c \ source/components/namespace/nsaccess.c \ source/components/namespace/nsalloc.c \ source/components/namespace/nsdump.c \ source/components/namespace/nsdumpdv.c \ source/components/namespace/nseval.c \ source/components/namespace/nsinit.c \ source/components/namespace/nsload.c \ source/components/namespace/nsnames.c \ source/components/namespace/nsobject.c \ source/components/namespace/nsparse.c \ source/components/namespace/nspredef.c \ source/components/namespace/nsrepair.c \ source/components/namespace/nsrepair2.c \ source/components/namespace/nssearch.c \ source/components/namespace/nsutils.c \ source/components/namespace/nswalk.c \ source/components/namespace/nsxfeval.c \ source/components/namespace/nsxfname.c \ source/components/namespace/nsxfobj.c \ source/components/namespace/nsconvert.c \ source/components/namespace/nsprepkg.c \ source/components/namespace/nsarguments.c \ source/components/parser/psargs.c \ source/components/parser/psloop.c \ source/components/parser/psopcode.c \ source/components/parser/psparse.c \ source/components/parser/psscope.c \ source/components/parser/pstree.c \ source/components/parser/psutils.c \ source/components/parser/pswalk.c \ source/components/parser/psxface.c \ source/components/parser/psopinfo.c \ source/components/parser/psobject.c \ source/components/resources/rsaddr.c \ source/components/resources/rscalc.c \ source/components/resources/rscreate.c \ source/components/resources/rsdump.c \ source/components/resources/rsio.c \ source/components/resources/rsinfo.c \ source/components/resources/rsirq.c \ source/components/resources/rslist.c \ source/components/resources/rsmemory.c \ source/components/resources/rsmisc.c \ source/components/resources/rsutils.c \ source/components/resources/rsxface.c \ source/components/resources/rsserial.c \ source/components/resources/rsdumpinfo.c \ source/components/tables/tbdata.c \ source/components/tables/tbfadt.c \ source/components/tables/tbfind.c \ source/components/tables/tbinstal.c \ source/components/tables/tbutils.c \ source/components/tables/tbxface.c \ source/components/tables/tbxfroot.c \ source/components/tables/tbxfload.c \ source/components/tables/tbprint.c \ source/components/utilities/utaddress.c \ source/components/utilities/utalloc.c \ source/components/utilities/utcache.c \ source/components/utilities/utcopy.c \ source/components/utilities/utdebug.c \ source/components/utilities/utdelete.c \ source/components/utilities/uteval.c \ source/components/utilities/utglobal.c \ source/components/utilities/utids.c \ source/components/utilities/utinit.c \ source/components/utilities/utlock.c \ source/components/utilities/utmath.c \ source/components/utilities/utmisc.c \ source/components/utilities/utmutex.c \ source/components/utilities/utobject.c \ source/components/utilities/utresrc.c \ source/components/utilities/utstate.c \ source/components/utilities/uttrack.c \ source/components/utilities/utosi.c \ source/components/utilities/utxferror.c \ source/components/utilities/utxface.c \ source/components/utilities/utdecode.c \ source/components/utilities/utexcep.c \ source/components/utilities/utpredef.c \ source/components/utilities/utstring.c \ source/components/utilities/utownerid.c \ source/components/utilities/utxfinit.c \ source/components/utilities/uterror.c \ source/components/utilities/utbuffer.c \ source/common/acgetline.c \ source/common/ahids.c \ source/common/cmfsize.c \ source/tools/acpiexec/aehandlers.c libfwtsacpica_la_LIBADD = \ -L$(top_srcdir)/src/lib/src -lfwts -lrt src/acpica/fwts_acpica.c000066400000000000000000000703501231470457100155250ustar00rootroot00000000000000/* * Copyright (C) 2010-2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #define _GNU_SOURCE #include #include #include #include #include #include #include #include #include #include #include #include #include #include "fwts.h" /* ACPICA specific headers */ #include "acpi.h" #include "accommon.h" #include "acparser.h" #include "amlcode.h" #include "acnamesp.h" #include "acdebug.h" #include "actables.h" #include "acinterp.h" #include "acapps.h" #define ACPI_MAX_INIT_TABLES (64) /* Number of ACPI tables */ #define MAX_SEMAPHORES (1024) /* For semaphore tracking */ #define MAX_THREADS (128) /* For thread tracking */ #define MAX_WAIT_TIMEOUT (20) /* Seconds */ #define ACPI_ADR_SPACE_USER_DEFINED1 (0x80) #define ACPI_ADR_SPACE_USER_DEFINED2 (0xE4) /* * Semaphore accounting info */ typedef struct { sem_t sem; /* Semaphore handle */ int count; /* count > 0 if acquired */ bool used; /* Semaphore being used flag */ } sem_info; /* * Used to account for threads used by AcpiOsExecute */ typedef struct { bool used; /* true if the thread accounting info in use by a thread */ pthread_t thread; /* thread info */ } fwts_thread; typedef void * (*pthread_callback)(void *); BOOLEAN AcpiGbl_IgnoreErrors = FALSE; UINT8 AcpiGbl_RegionFillValue = 0; static ACPI_TABLE_DESC Tables[ACPI_MAX_INIT_TABLES]; /* ACPICA Table descriptors */ static bool region_handler_called; /* Region handler tracking */ static sem_info sem_table[MAX_SEMAPHORES]; /* Semaphore accounting for AcpiOs*Semaphore() */ static pthread_mutex_t mutex_lock_sem_table; /* Semaphore accounting mutex */ static fwts_thread threads[MAX_THREADS]; /* Thread accounting for AcpiOsExecute */ static pthread_mutex_t mutex_thread_info; /* Thread accounting mutex */ /* * Static copies of ACPI tables used by ACPICA execution engine */ static ACPI_TABLE_XSDT *fwts_acpica_XSDT; static ACPI_TABLE_RSDT *fwts_acpica_RSDT; static ACPI_TABLE_RSDP *fwts_acpica_RSDP; static ACPI_TABLE_FADT *fwts_acpica_FADT; static void *fwts_acpica_DSDT; static fwts_framework *fwts_acpica_fw; /* acpica context copy of fw */ static bool fwts_acpica_init_called; /* > 0, ACPICA initialised */ /* Semaphore Tracking */ /* * fwts_acpica_sem_count_clear() * clear refs to semaphores and per semaphore count */ void fwts_acpica_sem_count_clear(void) { int i; pthread_mutex_lock(&mutex_lock_sem_table); for (i = 0; i < MAX_SEMAPHORES; i++) sem_table[i].count = 0; pthread_mutex_unlock(&mutex_lock_sem_table); } /* * fwts_acpica_sem_count_get() * collect up number of semaphores that were acquire and release * during a method evaluation */ void fwts_acpica_sem_count_get(int *acquired, int *released) { int i; *acquired = 0; *released = 0; /* Wait for any pending threads to complete */ for (i = 0; i < MAX_THREADS; i++) { pthread_mutex_lock(&mutex_thread_info); if (threads[i].used) { pthread_mutex_unlock(&mutex_thread_info); /* Wait for thread to complete */ pthread_join(threads[i].thread, NULL); pthread_mutex_lock(&mutex_thread_info); threads[i].used = false; pthread_mutex_unlock(&mutex_thread_info); } pthread_mutex_unlock(&mutex_thread_info); } /* * All threads (such as Notify() calls now complete, so * we can now do the semaphore accounting calculations */ pthread_mutex_lock(&mutex_lock_sem_table); for (i = 0; i < MAX_SEMAPHORES; i++) { if (sem_table[i].used) { (*acquired)++; if (sem_table[i].count == 0) (*released)++; } } pthread_mutex_unlock(&mutex_lock_sem_table); } /* ACPICA Handlers */ /* * fwts_notify_handler() * Notify handler */ static void fwts_notify_handler(ACPI_HANDLE Device, UINT32 Value, void *Context) { (void)AcpiEvaluateObject(Device, "_NOT", NULL, NULL); } static void fwts_device_notify_handler(ACPI_HANDLE Device, UINT32 Value, void *Context) { (void)AcpiEvaluateObject(Device, "_NOT", NULL, NULL); } static UINT32 fwts_interface_handler(ACPI_STRING InterfaceName, UINT32 Supported) { return Supported; } static ACPI_STATUS fwts_table_handler(UINT32 Event, void *Table, void *Context) { return AE_OK; } static UINT32 fwts_event_handler(void *Context) { return 0; } static ACPI_STATUS fwts_exception_handler( ACPI_STATUS AmlStatus, ACPI_NAME Name, UINT16 Opcode, UINT32 AmlOffset, void *Context) { char *exception = (char*)AcpiFormatException(AmlStatus); if (Name) fwts_log_info(fwts_acpica_fw, "ACPICA Exception %s during execution of method %4.4s", exception, (char*)&Name); else fwts_log_info(fwts_acpica_fw, "ACPICA Exception %s during execution at module level (table load)", exception); if (AcpiGbl_IgnoreErrors) { if (AmlStatus != AE_OK) { fwts_log_info(fwts_acpica_fw, "ACPICA Exception override, forcing AE_OK for execption %s", exception); AmlStatus = AE_OK; } } return AmlStatus; } static void fwts_attached_data_handler(ACPI_HANDLE obj, void *data) { } static ACPI_STATUS fwts_region_init( ACPI_HANDLE RegionHandle, UINT32 Function, void *HandlerContext, void **RegionContext) { *RegionContext = RegionHandle; return AE_OK; } void fwts_acpi_region_handler_called_set(bool val) { region_handler_called = val; } bool fwts_acpi_region_handler_called_get(void) { return region_handler_called; } static ACPI_STATUS fwts_region_handler( UINT32 function, ACPI_PHYSICAL_ADDRESS address, UINT32 bitwidth, UINT64 *value, void *handlercontext, void *regioncontext) { ACPI_OPERAND_OBJECT *regionobject = ACPI_CAST_PTR(ACPI_OPERAND_OBJECT, regioncontext); UINT8 *buffer = ACPI_CAST_PTR(UINT8, value); ACPI_SIZE length; UINT32 bytewidth; ACPI_CONNECTION_INFO *context; int i; if (regionobject->Region.Type != ACPI_TYPE_REGION) return AE_OK; fwts_acpi_region_handler_called_set(true); context = ACPI_CAST_PTR (ACPI_CONNECTION_INFO, handlercontext); length = (ACPI_SIZE)regionobject->Region.Length; switch (regionobject->Region.SpaceId) { case ACPI_ADR_SPACE_SYSTEM_IO: switch (function & ACPI_IO_MASK) { case ACPI_READ: *value = 0; break; case ACPI_WRITE: break; default: return AE_BAD_PARAMETER; break; } break; case ACPI_ADR_SPACE_SMBUS: case ACPI_ADR_SPACE_GSBUS: /* ACPI 5.0 */ length = 0; switch (function & ACPI_IO_MASK) { case ACPI_READ: switch (function >> 16) { case AML_FIELD_ATTRIB_QUICK: case AML_FIELD_ATTRIB_SEND_RCV: case AML_FIELD_ATTRIB_BYTE: length = 1; break; case AML_FIELD_ATTRIB_WORD: case AML_FIELD_ATTRIB_WORD_CALL: length = 2; break; case AML_FIELD_ATTRIB_BLOCK: case AML_FIELD_ATTRIB_BLOCK_CALL: length = 32; break; case AML_FIELD_ATTRIB_MULTIBYTE: case AML_FIELD_ATTRIB_RAW_BYTES: case AML_FIELD_ATTRIB_RAW_PROCESS: length = context->AccessLength - 2; break; default: break; } break; case ACPI_WRITE: switch (function >> 16) { case AML_FIELD_ATTRIB_QUICK: case AML_FIELD_ATTRIB_SEND_RCV: case AML_FIELD_ATTRIB_BYTE: case AML_FIELD_ATTRIB_WORD: case AML_FIELD_ATTRIB_BLOCK: length = 0; break; case AML_FIELD_ATTRIB_WORD_CALL: length = 2; break; case AML_FIELD_ATTRIB_BLOCK_CALL: length = 32; break; case AML_FIELD_ATTRIB_MULTIBYTE: case AML_FIELD_ATTRIB_RAW_BYTES: case AML_FIELD_ATTRIB_RAW_PROCESS: length = context->AccessLength - 2; break; default: break; } break; default: break; } for (i = 0; i < length; i++) buffer[i+2] = (UINT8)(0xA0 + i); buffer[0] = 0x7A; buffer[1] = (UINT8)length; return AE_OK; case ACPI_ADR_SPACE_IPMI: /* ACPI 4.0 */ buffer[0] = 0; /* Status byte */ buffer[1] = 64; /* Return buffer data length */ buffer[2] = 0; /* Completion code */ buffer[3] = 0; /* Reserved */ for (i = 4; i < 66; i++) buffer[i] = (UINT8) (i); return AE_OK; case ACPI_ADR_SPACE_SYSTEM_MEMORY: case ACPI_ADR_SPACE_EC: case ACPI_ADR_SPACE_CMOS: case ACPI_ADR_SPACE_GPIO: case ACPI_ADR_SPACE_PCI_BAR_TARGET: case ACPI_ADR_SPACE_FIXED_HARDWARE: case ACPI_ADR_SPACE_USER_DEFINED1: case ACPI_ADR_SPACE_USER_DEFINED2: default: bytewidth = (bitwidth / 8); if (bitwidth % 8) bytewidth += 1; switch (function) { case ACPI_READ: /* Fake it, return all zeros */ memset(value, 0, bytewidth); break; case ACPI_WRITE: /* Fake it, do nothing */ break; default: return AE_BAD_PARAMETER; } return AE_OK; } return AE_OK; } /* * AeLocalGetRootPointer() * override ACPICA AeLocalGetRootPointer to return a local copy of the RSDP */ ACPI_PHYSICAL_ADDRESS AeLocalGetRootPointer(void) { return (ACPI_PHYSICAL_ADDRESS)fwts_acpica_RSDP; } /* * fwts_acpica_vprintf() * accumulate prints from ACPICA engine, emit them when we hit terminal '\n' */ void fwts_acpica_vprintf(const char *fmt, va_list args) { static char *buffer; static size_t buffer_len; char *tmp; size_t tmp_len; if (fwts_acpica_fw == NULL) return; /* Only emit messages if in ACPICA debug mode */ if (!(fwts_acpica_fw->flags & FWTS_FLAG_ACPICA_DEBUG)) return; if (vasprintf(&tmp, fmt, args) < 0) { fwts_log_info(fwts_acpica_fw, "Out of memory allocating ACPICA printf buffer."); return; } tmp_len = strlen(tmp); if (buffer_len == 0) { buffer_len = tmp_len + 1; buffer = malloc(buffer_len); if (buffer) strcpy(buffer, tmp); else buffer_len = 0; } else { char *new_buf; buffer_len += tmp_len; new_buf = realloc(buffer, buffer_len); if (new_buf) { buffer = new_buf; strcat(buffer, tmp); } else { free(buffer); buffer_len = 0; } } if (index(buffer, '\n') != NULL) { fwts_log_info(fwts_acpica_fw, "%s", buffer); free(buffer); buffer_len = 0; } free(tmp); } /* * AcpiOsPrintf() * Override ACPICA AcpiOsPrintf to write printfs to the fwts log * rather than to stdout */ void ACPI_INTERNAL_VAR_XFACE AcpiOsPrintf (const char *fmt, ...) { va_list args; va_start(args, fmt); AcpiOsVprintf(fmt, args); va_end(args); } /* * AcpiOsVprintf() * Override ACPICA AcpiOsVprintf to write printfs to the fwts log * rather than to stdout */ void AcpiOsVprintf(const char *fmt, va_list args) { fwts_acpica_vprintf(fmt, args); } /* * AcpiOsCreateSemaphore() * Override ACPICA AcpiOsCreateSemaphore */ ACPI_STATUS AcpiOsCreateSemaphore(UINT32 MaxUnits, UINT32 InitialUnits, ACPI_HANDLE *OutHandle) { sem_info *sem = NULL; ACPI_STATUS ret = AE_OK; int i; if (!OutHandle) return AE_BAD_PARAMETER; pthread_mutex_lock(&mutex_lock_sem_table); for (i = 0; i < MAX_SEMAPHORES; i++) { if (!sem_table[i].used) { sem = &sem_table[i]; break; } } if (!sem) { pthread_mutex_unlock(&mutex_lock_sem_table); return AE_NO_MEMORY; } sem->used = true; sem->count = 0; if (sem_init(&sem->sem, 0, InitialUnits) == -1) { *OutHandle = NULL; ret = AE_NO_MEMORY; } else { *OutHandle = (ACPI_HANDLE)sem; } pthread_mutex_unlock(&mutex_lock_sem_table); return ret; } /* * AcpiOsDeleteSemaphore() * Override ACPICA AcpiOsDeleteSemaphore to fix semaphore memory freeing */ ACPI_STATUS AcpiOsDeleteSemaphore(ACPI_HANDLE Handle) { sem_info *sem = (sem_info *)Handle; ACPI_STATUS ret = AE_OK; if (!sem) return AE_BAD_PARAMETER; pthread_mutex_lock(&mutex_lock_sem_table); if (sem_destroy(&sem->sem) == -1) ret = AE_BAD_PARAMETER; sem->used = false; pthread_mutex_unlock(&mutex_lock_sem_table); return ret; } static void sem_alarm(int dummy) { /* Do nothing apart from interrupt sem_wait() */ } /* * AcpiOsWaitSemaphore() * Override ACPICA AcpiOsWaitSemaphore to keep track of semaphore acquires * so that we can see if any methods are sloppy in their releases. */ ACPI_STATUS AcpiOsWaitSemaphore(ACPI_HANDLE handle, UINT32 Units, UINT16 Timeout) { sem_info *sem = (sem_info *)handle; struct timespec tm; struct sigaction sa; if (!handle) return AE_BAD_PARAMETER; switch (Timeout) { case 0: if (sem_trywait(&sem->sem)) return AE_TIME; break; case ACPI_WAIT_FOREVER: /* * The semantics are "wait forever", but * really we actually detect a lock up * after a long wait and break out rather * than waiting for the sun to turn into * a lump of coal. This allows us to * handle controls such as _EJ0 that may * be waiting forever for a event to signal * control to continue. It is evil. */ sa.sa_handler = sem_alarm; sigemptyset(&sa.sa_mask); sa.sa_flags = 0; sigaction(SIGALRM, &sa, NULL); alarm(MAX_WAIT_TIMEOUT); if (sem_wait(&sem->sem)) { alarm(0); if (errno == EINTR) fwts_log_info(fwts_acpica_fw, "AML was blocked waiting for " "an external event, fwts detected " "this and forced a timeout after " "%d seconds on a Wait() that had " "an indefinite timeout.", MAX_WAIT_TIMEOUT); return AE_TIME; } alarm(0); break; default: tm.tv_sec = Timeout / 1000; tm.tv_nsec = (Timeout - (tm.tv_sec * 1000)) * 1000000; if (sem_timedwait(&sem->sem, &tm)) return AE_TIME; break; } pthread_mutex_lock(&mutex_lock_sem_table); sem->count++; pthread_mutex_unlock(&mutex_lock_sem_table); return AE_OK; } /* * AcpiOsSignalSemaphore() * Override ACPICA AcpiOsSignalSemaphore to keep track of semaphore releases * so that we can see if any methods are sloppy in their releases. */ ACPI_STATUS AcpiOsSignalSemaphore(ACPI_HANDLE handle, UINT32 Units) { sem_info *sem = (sem_info *)handle; if (!handle) return AE_BAD_PARAMETER; if (sem_post(&sem->sem) < 0) return AE_LIMIT; pthread_mutex_lock(&mutex_lock_sem_table); sem->count--; pthread_mutex_unlock(&mutex_lock_sem_table); return AE_OK; } /* * AcpiOsReadPort() * Override ACPICA AcpiOsReadPort to fake port reads */ ACPI_STATUS AcpiOsReadPort(ACPI_IO_ADDRESS addr, UINT32 *value, UINT32 width) { switch (width) { case 8: *value = 0xFF; break; case 16: *value = 0xFFFF; break; case 32: *value = 0xFFFFFFFF; break; default: return AE_BAD_PARAMETER; } return AE_OK; } typedef struct { pthread_callback func; void * context; int thread_index; } fwts_func_wrapper_context; /* * fwts_pthread_func_wrapper() * wrap the AcpiOsExecute function so we can mark the thread * accounting free once the function has completed. */ void *fwts_pthread_func_wrapper(fwts_func_wrapper_context *ctx) { void *ret; ret = ctx->func(ctx->context); pthread_mutex_lock(&mutex_thread_info); threads[ctx->thread_index].used = false; pthread_mutex_unlock(&mutex_thread_info); free(ctx); return ret; } ACPI_STATUS AcpiOsExecute( ACPI_EXECUTE_TYPE type, ACPI_OSD_EXEC_CALLBACK function, void *func_context) { int ret; int i; pthread_mutex_lock(&mutex_thread_info); /* Find a free slot to do per-thread join tracking */ for (i = 0; i < MAX_THREADS; i++) { if (!threads[i].used) { fwts_func_wrapper_context *ctx; /* We need some context to pass through to the thread wrapper */ if ((ctx = malloc(sizeof(fwts_func_wrapper_context))) == NULL) { pthread_mutex_unlock(&mutex_thread_info); return AE_NO_MEMORY; } ctx->func = (pthread_callback)function; ctx->context = func_context; ctx->thread_index = i; threads[i].used = true; ret = pthread_create(&threads[i].thread, NULL, (pthread_callback)fwts_pthread_func_wrapper, ctx); pthread_mutex_unlock(&mutex_thread_info); if (ret) return AE_ERROR; return AE_OK; } } /* No free slots, failed! */ pthread_mutex_unlock(&mutex_thread_info); return AE_NO_MEMORY; } /* * AcpiOsReadPciConfiguration() * Override ACPICA AcpiOsReadPciConfiguration to fake PCI reads */ ACPI_STATUS AcpiOsReadPciConfiguration(ACPI_PCI_ID *pciid, UINT32 reg, UINT64 *value, UINT32 width) { switch (width) { case 8: *value = 0x00; break; case 16: *value = 0x0000; break; case 32: *value = 0x00000000; break; default: return AE_BAD_PARAMETER; } return AE_OK; } void AeTableOverride(ACPI_TABLE_HEADER *ExistingTable, ACPI_TABLE_HEADER **NewTable) { if (strncmp(ExistingTable->Signature, ACPI_SIG_DSDT, 4) == 0) *NewTable = (ACPI_TABLE_HEADER*)fwts_acpica_DSDT; } ACPI_STATUS AcpiOsSignal(UINT32 function, void *info) { switch (function) { case ACPI_SIGNAL_BREAKPOINT: fwts_warning(fwts_acpica_fw, "Method contains an ACPICA breakpoint: %s\n", info ? (char*)info : "No Information"); AcpiGbl_CmSingleStep = FALSE; break; case ACPI_SIGNAL_FATAL: default: break; } return AE_OK; } void AcpiOsSleep(UINT64 milliseconds) { } int fwtsInstallEarlyHandlers(fwts_framework *fw) { int i; ACPI_HANDLE handle; static ACPI_ADR_SPACE_TYPE fwts_space_id_list[] = { ACPI_ADR_SPACE_SYSTEM_MEMORY, ACPI_ADR_SPACE_SYSTEM_IO, ACPI_ADR_SPACE_EC, ACPI_ADR_SPACE_SMBUS, ACPI_ADR_SPACE_CMOS, ACPI_ADR_SPACE_GSBUS, ACPI_ADR_SPACE_GPIO, ACPI_ADR_SPACE_PCI_BAR_TARGET, ACPI_ADR_SPACE_IPMI, ACPI_ADR_SPACE_FIXED_HARDWARE, ACPI_ADR_SPACE_USER_DEFINED1, ACPI_ADR_SPACE_USER_DEFINED2 }; if (AcpiInstallInterfaceHandler(fwts_interface_handler) != AE_OK) { fwts_log_error(fw, "Failed to install interface handler."); return FWTS_ERROR; } if (AcpiInstallTableHandler(fwts_table_handler, NULL) != AE_OK) { fwts_log_error(fw, "Failed to install table handler."); return FWTS_ERROR; } if (AcpiInstallExceptionHandler(fwts_exception_handler) != AE_OK) { fwts_log_error(fw, "Failed to install exception handler."); return FWTS_ERROR; } if (AcpiInstallNotifyHandler(ACPI_ROOT_OBJECT, ACPI_SYSTEM_NOTIFY, fwts_notify_handler, NULL) != AE_OK) { fwts_log_error(fw, "Failed to install system notify handler."); return FWTS_ERROR; } if (AcpiInstallNotifyHandler(ACPI_ROOT_OBJECT, ACPI_DEVICE_NOTIFY, fwts_device_notify_handler, NULL) != AE_OK) { fwts_log_error(fw, "Failed to install device notify handler."); return FWTS_ERROR; } if (AcpiGetHandle(NULL, "\\_SB", &handle) == AE_OK) { if (AcpiInstallNotifyHandler(handle, ACPI_SYSTEM_NOTIFY, fwts_notify_handler, NULL) != AE_OK) { fwts_log_error(fw, "Failed to install notify handler."); return FWTS_ERROR; } if (AcpiRemoveNotifyHandler(handle, ACPI_SYSTEM_NOTIFY, fwts_notify_handler) != AE_OK) { fwts_log_error(fw, "Failed to remove notify handler."); return FWTS_ERROR; } if (AcpiInstallNotifyHandler(handle, ACPI_ALL_NOTIFY, fwts_notify_handler, NULL) != AE_OK) { fwts_log_error(fw, "Failed to install notify handler."); return FWTS_ERROR; } if (AcpiRemoveNotifyHandler(handle, ACPI_ALL_NOTIFY, fwts_notify_handler) != AE_OK) { fwts_log_error(fw, "Failed to remove notify handler."); return FWTS_ERROR; } if (AcpiInstallNotifyHandler(handle, ACPI_ALL_NOTIFY, fwts_notify_handler, NULL) != AE_OK) { fwts_log_error(fw, "Failed to install notify handler."); return FWTS_ERROR; } if (AcpiAttachData(handle, fwts_attached_data_handler, handle) != AE_OK) { fwts_log_error(fw, "Failed to attach data handler."); return FWTS_ERROR; } if (AcpiDetachData(handle, fwts_attached_data_handler) != AE_OK) { fwts_log_error(fw, "Failed to detach data handler."); return FWTS_ERROR; } if (AcpiAttachData(handle, fwts_attached_data_handler, handle) != AE_OK) { fwts_log_error(fw, "Failed to attach data handler."); return FWTS_ERROR; } } for (i = 0; i < ACPI_ARRAY_LENGTH(fwts_space_id_list); i++) { if (AcpiInstallAddressSpaceHandler(AcpiGbl_RootNode, fwts_space_id_list[i], fwts_region_handler, fwts_region_init, NULL) != AE_OK) { fwts_log_error(fw, "Could not install an OpRegion handler for %s space(%u)", AcpiUtGetRegionName((UINT8)fwts_space_id_list[i]), fwts_space_id_list[i]); return FWTS_ERROR; } } if (!AcpiGbl_ReducedHardware) { if (AcpiInstallFixedEventHandler(ACPI_EVENT_GLOBAL, fwts_event_handler, NULL) != AE_OK) { fwts_log_error(fw, "Failed to install global event handler."); return FWTS_ERROR; } if (AcpiInstallFixedEventHandler(ACPI_EVENT_RTC, fwts_event_handler, NULL) != AE_OK) { fwts_log_error(fw, "Failed to install RTC event handler."); return FWTS_ERROR; } } return FWTS_OK; } /* * fwts_acpcia_set_fwts_framework() * set fwts_acpica_fw ptr */ void fwts_acpcia_set_fwts_framework(fwts_framework *fw) { fwts_acpica_fw = fw; } #define FWTS_ACPICA_MODE(fw, mode) \ (((fw->acpica_mode & mode) == mode) ? 1 : 0) /* * fwts_acpica_init() * Initialise ACPICA core engine */ int fwts_acpica_init(fwts_framework *fw) { int i; int n; UINT32 init_flags = ACPI_FULL_INITIALIZATION; fwts_acpi_table_info *table; /* Abort if already initialised */ if (fwts_acpica_init_called) return FWTS_ERROR; AcpiGbl_AutoSerializeMethods = FWTS_ACPICA_MODE(fw, FWTS_ACPICA_MODE_SERIALIZED); AcpiGbl_EnableInterpreterSlack = FWTS_ACPICA_MODE(fw, FWTS_ACPICA_MODE_SLACK); AcpiGbl_IgnoreErrors = FWTS_ACPICA_MODE(fw, FWTS_ACPICA_MODE_IGNORE_ERRORS); AcpiGbl_DisableAutoRepair = FWTS_ACPICA_MODE(fw, FWTS_ACPICA_MODE_DISABLE_AUTO_REPAIR); pthread_mutex_init(&mutex_lock_sem_table, NULL); pthread_mutex_init(&mutex_thread_info, NULL); fwts_acpcia_set_fwts_framework(fw); AcpiDbgLevel = ACPI_NORMAL_DEFAULT; AcpiDbgLayer = 0x00000000; AcpiOsRedirectOutput(stderr); /* Clone FADT, make sure it points to a DSDT in user space */ if (fwts_acpi_find_table(fw, "FACP", 0, &table) != FWTS_OK) return FWTS_ERROR; if (table != NULL) { fwts_acpi_table_info *tbl; fwts_acpica_FADT = fwts_low_calloc(1, table->length); if (fwts_acpica_FADT == NULL) { fwts_log_error(fw, "Out of memory allocating FADT."); return FWTS_ERROR; } memcpy(fwts_acpica_FADT, table->data, table->length); if (fwts_acpi_find_table(fw, "DSDT", 0, &tbl) != FWTS_OK) return FWTS_ERROR; if (tbl) { fwts_acpica_DSDT = (void *)tbl->data; fwts_acpica_FADT->Dsdt = ACPI_PTR_TO_PHYSADDR(tbl->data); if (table->length >= 148) fwts_acpica_FADT->XDsdt = ACPI_PTR_TO_PHYSADDR(tbl->data); } else { fwts_acpica_DSDT = NULL; fwts_acpica_FADT->Dsdt = 0; fwts_acpica_FADT->XDsdt = 0; } if (fwts_acpi_find_table(fw, "FACS", 0, &tbl) != FWTS_OK) return FWTS_ERROR; if (tbl) { fwts_acpica_FADT->Facs = ACPI_PTR_TO_PHYSADDR(tbl->data); if (table->length >= 140) fwts_acpica_FADT->XFacs = ACPI_PTR_TO_PHYSADDR(tbl->data); } else { fwts_acpica_FADT->Facs = 0; fwts_acpica_FADT->XFacs = 0; } fwts_acpica_FADT->Header.Checksum = 0; fwts_acpica_FADT->Header.Checksum = (UINT8)-AcpiTbChecksum ((void*)fwts_acpica_FADT, table->length); } else { fwts_acpica_FADT = NULL; } /* Clone XSDT, make it point to tables in user address space */ if (fwts_acpi_find_table(fw, "XSDT", 0, &table) != FWTS_OK) return FWTS_ERROR; if (table != NULL) { uint64_t *entries; fwts_acpica_XSDT = fwts_low_calloc(1, table->length); if (fwts_acpica_XSDT == NULL) { fwts_log_error(fw, "Out of memory allocating XSDT."); return FWTS_ERROR; } memcpy(fwts_acpica_XSDT, table->data, sizeof(ACPI_TABLE_HEADER)); n = (table->length - sizeof(ACPI_TABLE_HEADER)) / sizeof(uint64_t); entries = (uint64_t*)(table->data + sizeof(ACPI_TABLE_HEADER)); for (i=0; iname, "FACP", 4) == 0) { fwts_acpica_XSDT->TableOffsetEntry[i] = ACPI_PTR_TO_PHYSADDR(fwts_acpica_FADT); } else { fwts_acpica_XSDT->TableOffsetEntry[i] = ACPI_PTR_TO_PHYSADDR(tbl->data); } } else { fwts_acpica_XSDT->TableOffsetEntry[i] = ACPI_PTR_TO_PHYSADDR(NULL); } } fwts_acpica_XSDT->Header.Checksum = 0; fwts_acpica_XSDT->Header.Checksum = (UINT8)-AcpiTbChecksum ((void*)fwts_acpica_XSDT, table->length); } else { fwts_acpica_XSDT = NULL; } /* Clone RSDT, make it point to tables in user address space */ if (fwts_acpi_find_table(fw, "RSDT", 0, &table) != FWTS_OK) return FWTS_ERROR; if (table) { uint32_t *entries; fwts_acpica_RSDT = fwts_low_calloc(1, table->length); if (fwts_acpica_RSDT == NULL) { fwts_log_error(fw, "Out of memory allocating RSDT."); return FWTS_ERROR; } memcpy(fwts_acpica_RSDT, table->data, sizeof(ACPI_TABLE_HEADER)); n = (table->length - sizeof(ACPI_TABLE_HEADER)) / sizeof(uint32_t); entries = (uint32_t*)(table->data + sizeof(ACPI_TABLE_HEADER)); for (i=0; iname, "FACP", 4) == 0) { fwts_acpica_RSDT->TableOffsetEntry[i] = ACPI_PTR_TO_PHYSADDR(fwts_acpica_FADT); } else { fwts_acpica_RSDT->TableOffsetEntry[i] = ACPI_PTR_TO_PHYSADDR(tbl->data); } } else { fwts_acpica_RSDT->TableOffsetEntry[i] = ACPI_PTR_TO_PHYSADDR(NULL); } } fwts_acpica_RSDT->Header.Checksum = 0; fwts_acpica_RSDT->Header.Checksum = (UINT8)-AcpiTbChecksum ((void*)fwts_acpica_RSDT, table->length); } else { fwts_acpica_RSDT = NULL; } /* Clone RSDP, make it point to tables in user address space */ if (fwts_acpi_find_table(fw, "RSDP", 0, &table) != FWTS_OK) return FWTS_ERROR; if (table) { fwts_acpica_RSDP = fwts_low_calloc(1, table->length); if (fwts_acpica_RSDP == NULL) { fwts_log_error(fw, "Out of memory allocating RSDP."); return FWTS_ERROR; } memcpy(fwts_acpica_RSDP, table->data, table->length); if (table->length > 20) fwts_acpica_RSDP->XsdtPhysicalAddress = ACPI_PTR_TO_PHYSADDR(fwts_acpica_XSDT); fwts_acpica_RSDP->RsdtPhysicalAddress = ACPI_PTR_TO_PHYSADDR(fwts_acpica_RSDT); fwts_acpica_RSDP->Checksum = (UINT8)-AcpiTbChecksum ((void*)fwts_acpica_RSDP, ACPI_RSDP_CHECKSUM_LENGTH); } else { fwts_acpica_RSDP = NULL; } if (ACPI_FAILURE(AcpiInitializeSubsystem())) { fwts_log_error(fw, "Failed to initialise ACPICA subsystem."); goto failed; } if (AcpiInitializeTables(Tables, ACPI_MAX_INIT_TABLES, TRUE) != AE_OK) { fwts_log_error(fw, "Failed to initialise tables."); goto failed; } if (AcpiReallocateRootTable() != AE_OK) { fwts_log_error(fw, "Failed to reallocate root table."); goto failed; } if (AcpiLoadTables() != AE_OK) { fwts_log_error(fw, "Failed to load tables."); goto failed; } (void)fwtsInstallEarlyHandlers(fw); AcpiEnableSubsystem(init_flags); AcpiInitializeObjects(init_flags); fwts_acpica_init_called = true; return FWTS_OK; failed: AcpiTerminate(); return FWTS_ERROR; } #define FWTS_ACPICA_FREE(x) \ { fwts_low_free(x); x = NULL; } /* * fwts_acpica_deinit() * De-initialise ACPICA core engine */ int fwts_acpica_deinit(void) { if (!fwts_acpica_init_called) return FWTS_ERROR; AcpiTerminate(); pthread_mutex_destroy(&mutex_lock_sem_table); pthread_mutex_destroy(&mutex_thread_info); FWTS_ACPICA_FREE(fwts_acpica_XSDT); FWTS_ACPICA_FREE(fwts_acpica_RSDT); FWTS_ACPICA_FREE(fwts_acpica_RSDP); FWTS_ACPICA_FREE(fwts_acpica_FADT); fwts_acpica_init_called = false; return FWTS_OK; } /* * fwts_acpi_walk_for_object_names() * append to list (passed in context) objects names that match a given * type, (callback from fwts_acpica_get_object_names()) * */ static ACPI_STATUS fwts_acpi_walk_for_object_names( ACPI_HANDLE objHandle, UINT32 nestingLevel, void *context, void **ret) { fwts_list *list = (fwts_list*)context; ACPI_BUFFER buffer; char tmpbuf[1024]; buffer.Pointer = tmpbuf; buffer.Length = sizeof(tmpbuf); if (!ACPI_FAILURE(AcpiNsHandleToPathname(objHandle, &buffer))) fwts_list_append(list, strdup((char *)buffer.Pointer)); return AE_OK; } /* * fwts_acpica_get_object_names() * fetch a list of object names that match a specified type */ fwts_list *fwts_acpica_get_object_names(int type) { fwts_list *list; if ((list = fwts_list_new()) != NULL) AcpiWalkNamespace(type, ACPI_ROOT_OBJECT, ACPI_UINT32_MAX, fwts_acpi_walk_for_object_names, NULL, list, NULL); return list; } src/acpica/source/000077500000000000000000000000001231470457100143715ustar00rootroot00000000000000src/acpica/source/common/000077500000000000000000000000001231470457100156615ustar00rootroot00000000000000src/acpica/source/common/acgetline.c000066400000000000000000000432671231470457100177740ustar00rootroot00000000000000/****************************************************************************** * * Module Name: acgetline - local line editing * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #include "acpi.h" #include "accommon.h" #include "amlcode.h" #include "acparser.h" #include "acdebug.h" #include /* * This is an os-independent implementation of line-editing services needed * by the AcpiExec utility. It uses getchar() and putchar() and the existing * history support provided by the AML debugger. It assumes that the terminal * is in the correct line-editing mode such as raw and noecho. The OSL * interface AcpiOsInitialize should do this. AcpiOsTerminate should put the * terminal back into the original mode. */ #define _COMPONENT ACPI_OS_SERVICES ACPI_MODULE_NAME ("acgetline") /* Local prototypes */ static void AcpiAcClearLine ( UINT32 EndOfLine, UINT32 CursorPosition); /* Various ASCII constants */ #define _ASCII_NUL 0 #define _ASCII_BACKSPACE 0x08 #define _ASCII_TAB 0x09 #define _ASCII_ESCAPE 0x1B #define _ASCII_SPACE 0x20 #define _ASCII_LEFT_BRACKET 0x5B #define _ASCII_DEL 0x7F #define _ASCII_UP_ARROW 'A' #define _ASCII_DOWN_ARROW 'B' #define _ASCII_RIGHT_ARROW 'C' #define _ASCII_LEFT_ARROW 'D' #define _ASCII_NEWLINE '\n' extern UINT32 AcpiGbl_NextCmdNum; /* Erase a single character on the input command line */ #define ACPI_CLEAR_CHAR() \ putchar (_ASCII_BACKSPACE); \ putchar (_ASCII_SPACE); \ putchar (_ASCII_BACKSPACE); /* Backup cursor by Count positions */ #define ACPI_BACKUP_CURSOR(i, Count) \ for (i = 0; i < (Count); i++) \ {putchar (_ASCII_BACKSPACE);} /****************************************************************************** * * FUNCTION: AcpiAcClearLine * * PARAMETERS: EndOfLine - Current end-of-line index * CursorPosition - Current cursor position within line * * RETURN: None * * DESCRIPTION: Clear the entire command line the hard way, but probably the * most portable. * *****************************************************************************/ static void AcpiAcClearLine ( UINT32 EndOfLine, UINT32 CursorPosition) { UINT32 i; if (CursorPosition < EndOfLine) { /* Clear line from current position to end of line */ for (i = 0; i < (EndOfLine - CursorPosition); i++) { putchar (' '); } } /* Clear the entire line */ for (; EndOfLine > 0; EndOfLine--) { ACPI_CLEAR_CHAR (); } } /****************************************************************************** * * FUNCTION: AcpiOsGetLine * * PARAMETERS: Buffer - Where to return the command line * BufferLength - Maximum length of Buffer * BytesRead - Where the actual byte count is returned * * RETURN: Status and actual bytes read * * DESCRIPTION: Get the next input line from the terminal. NOTE: terminal * is expected to be in a mode that supports line-editing (raw, * noecho). This function is intended to be very portable. Also, * it uses the history support implemented in the AML debugger. * *****************************************************************************/ ACPI_STATUS AcpiOsGetLine ( char *Buffer, UINT32 BufferLength, UINT32 *BytesRead) { char *NextCommand; UINT32 MaxCommandIndex = AcpiGbl_NextCmdNum - 1; UINT32 CurrentCommandIndex = MaxCommandIndex; UINT32 PreviousCommandIndex = MaxCommandIndex; int InputChar; UINT32 CursorPosition = 0; UINT32 EndOfLine = 0; UINT32 i; /* Always clear the line buffer before we read a new line */ memset (Buffer, 0, BufferLength); /* * This loop gets one character at a time (except for esc sequences) * until a newline or error is detected. * * Note: Don't attempt to write terminal control ESC sequences, even * though it makes certain things more difficult. */ while (1) { if (EndOfLine >= (BufferLength - 1)) { return (AE_BUFFER_OVERFLOW); } InputChar = getchar (); switch (InputChar) { default: /* This is the normal character case */ /* Echo the character (at EOL) and copy it to the line buffer */ if (EndOfLine == CursorPosition) { putchar (InputChar); Buffer[EndOfLine] = (char) InputChar; EndOfLine++; CursorPosition++; Buffer[EndOfLine] = 0; continue; } /* Insert character into the middle of the buffer */ memmove (&Buffer[CursorPosition + 1], &Buffer[CursorPosition], (EndOfLine - CursorPosition + 1)); Buffer [CursorPosition] = (char) InputChar; Buffer [EndOfLine + 1] = 0; /* Display the new part of line starting at the new character */ fprintf (stdout, "%s", &Buffer[CursorPosition]); /* Restore cursor */ ACPI_BACKUP_CURSOR (i, EndOfLine - CursorPosition); CursorPosition++; EndOfLine++; continue; case _ASCII_DEL: /* Backspace key */ if (!EndOfLine) /* Any characters on the command line? */ { continue; } if (EndOfLine == CursorPosition) /* Erase the final character */ { ACPI_CLEAR_CHAR (); EndOfLine--; CursorPosition--; continue; } if (!CursorPosition) /* Do not backup beyond start of line */ { continue; } /* Remove the character from the line */ memmove (&Buffer[CursorPosition - 1], &Buffer[CursorPosition], (EndOfLine - CursorPosition + 1)); /* Display the new part of line starting at the new character */ putchar (_ASCII_BACKSPACE); fprintf (stdout, "%s ", &Buffer[CursorPosition - 1]); /* Restore cursor */ ACPI_BACKUP_CURSOR (i, EndOfLine - CursorPosition + 1); EndOfLine--; if (CursorPosition > 0) { CursorPosition--; } continue; case _ASCII_NEWLINE: /* Normal exit case at end of command line */ case _ASCII_NUL: /* Return the number of bytes in the command line string */ if (BytesRead) { *BytesRead = EndOfLine; } /* Echo, terminate string buffer, and exit */ putchar (InputChar); Buffer[EndOfLine] = 0; return (AE_OK); case _ASCII_TAB: /* Ignore */ continue; case EOF: return (AE_ERROR); case _ASCII_ESCAPE: /* Check for escape sequences of the form "ESC[x" */ InputChar = getchar (); if (InputChar != _ASCII_LEFT_BRACKET) { continue; /* Ignore this ESC, does not have the '[' */ } /* Get the code following the ESC [ */ InputChar = getchar (); /* Backup one character */ switch (InputChar) { case _ASCII_LEFT_ARROW: if (CursorPosition > 0) { putchar (_ASCII_BACKSPACE); CursorPosition--; } continue; case _ASCII_RIGHT_ARROW: /* * Move one character forward. Do this without sending * ESC sequence to the terminal for max portability. */ if (CursorPosition < EndOfLine) { /* Backup to start of line and print the entire line */ ACPI_BACKUP_CURSOR (i, CursorPosition); fprintf (stdout, "%s", Buffer); /* Backup to where the cursor should be */ CursorPosition++; ACPI_BACKUP_CURSOR (i, EndOfLine - CursorPosition); } continue; case _ASCII_UP_ARROW: /* If no commands available or at start of history list, ignore */ if (!CurrentCommandIndex) { continue; } /* Manage our up/down progress */ if (CurrentCommandIndex > PreviousCommandIndex) { CurrentCommandIndex = PreviousCommandIndex; } /* Get the historical command from the debugger */ NextCommand = AcpiDbGetHistoryByIndex (CurrentCommandIndex); if (!NextCommand) { return (AE_ERROR); } /* Make this the active command and echo it */ AcpiAcClearLine (EndOfLine, CursorPosition); strcpy (Buffer, NextCommand); fprintf (stdout, "%s", Buffer); EndOfLine = CursorPosition = strlen (Buffer); PreviousCommandIndex = CurrentCommandIndex; CurrentCommandIndex--; continue; case _ASCII_DOWN_ARROW: if (!MaxCommandIndex) /* Any commands available? */ { continue; } /* Manage our up/down progress */ if (CurrentCommandIndex < PreviousCommandIndex) { CurrentCommandIndex = PreviousCommandIndex; } /* If we are the end of the history list, output a clear new line */ if ((CurrentCommandIndex + 1) > MaxCommandIndex) { AcpiAcClearLine (EndOfLine, CursorPosition); EndOfLine = CursorPosition = 0; PreviousCommandIndex = CurrentCommandIndex; continue; } PreviousCommandIndex = CurrentCommandIndex; CurrentCommandIndex++; /* Get the historical command from the debugger */ NextCommand = AcpiDbGetHistoryByIndex (CurrentCommandIndex); if (!NextCommand) { return (AE_ERROR); } /* Make this the active command and echo it */ AcpiAcClearLine (EndOfLine, CursorPosition); strcpy (Buffer, NextCommand); fprintf (stdout, "%s", Buffer); EndOfLine = CursorPosition = strlen (Buffer); continue; case 0x31: case 0x32: case 0x33: case 0x34: case 0x35: case 0x36: /* * Ignore the various keys like insert/delete/home/end, etc. * But we must eat the final character of the ESC sequence. */ InputChar = getchar (); continue; default: /* Ignore random escape sequences that we don't care about */ continue; } continue; } } } src/acpica/source/common/adfile.c000066400000000000000000000332021231470457100172510ustar00rootroot00000000000000/****************************************************************************** * * Module Name: adfile - Application-level disassembler file support routines * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #include "acpi.h" #include "accommon.h" #include "acapps.h" #include #define _COMPONENT ACPI_TOOLS ACPI_MODULE_NAME ("adfile") /* Local prototypes */ static INT32 AdWriteBuffer ( char *Filename, char *Buffer, UINT32 Length); static char FilenameBuf[20]; /****************************************************************************** * * FUNCTION: AfGenerateFilename * * PARAMETERS: Prefix - prefix string * TableId - The table ID * * RETURN: Pointer to the completed string * * DESCRIPTION: Build an output filename from an ACPI table ID string * ******************************************************************************/ char * AdGenerateFilename ( char *Prefix, char *TableId) { UINT32 i; UINT32 j; for (i = 0; Prefix[i]; i++) { FilenameBuf[i] = Prefix[i]; } FilenameBuf[i] = '_'; i++; for (j = 0; j < 8 && (TableId[j] != ' ') && (TableId[j] != 0); i++, j++) { FilenameBuf[i] = TableId[j]; } FilenameBuf[i] = 0; strcat (FilenameBuf, ACPI_TABLE_FILE_SUFFIX); return (FilenameBuf); } /****************************************************************************** * * FUNCTION: AfWriteBuffer * * PARAMETERS: Filename - name of file * Buffer - data to write * Length - length of data * * RETURN: Actual number of bytes written * * DESCRIPTION: Open a file and write out a single buffer * ******************************************************************************/ static INT32 AdWriteBuffer ( char *Filename, char *Buffer, UINT32 Length) { FILE *File; ACPI_SIZE Actual; File = fopen (Filename, "wb"); if (!File) { printf ("Could not open file %s\n", Filename); return (-1); } Actual = fwrite (Buffer, 1, (size_t) Length, File); if (Actual != Length) { printf ("Could not write to file %s\n", Filename); } fclose (File); return ((INT32) Actual); } /****************************************************************************** * * FUNCTION: AfWriteTable * * PARAMETERS: Table - pointer to the ACPI table * Length - length of the table * TableName - the table signature * OemTableID - from the table header * * RETURN: None * * DESCRIPTION: Dump the loaded tables to a file (or files) * ******************************************************************************/ void AdWriteTable ( ACPI_TABLE_HEADER *Table, UINT32 Length, char *TableName, char *OemTableId) { char *Filename; Filename = AdGenerateFilename (TableName, OemTableId); AdWriteBuffer (Filename, (char *) Table, Length); AcpiOsPrintf ("Table [%s] written to \"%s\"\n", TableName, Filename); } /******************************************************************************* * * FUNCTION: FlGenerateFilename * * PARAMETERS: InputFilename - Original ASL source filename * Suffix - New extension. * * RETURN: New filename containing the original base + the new suffix * * DESCRIPTION: Generate a new filename from the ASL source filename and a new * extension. Used to create the *.LST, *.TXT, etc. files. * ******************************************************************************/ char * FlGenerateFilename ( char *InputFilename, char *Suffix) { char *Position; char *NewFilename; char *DirectoryPosition; /* * Copy the original filename to a new buffer. Leave room for the worst * case where we append the suffix, an added dot and the null terminator. */ NewFilename = ACPI_ALLOCATE_ZEROED ((ACPI_SIZE) strlen (InputFilename) + strlen (Suffix) + 2); if (!NewFilename) { return (NULL); } strcpy (NewFilename, InputFilename); /* Try to find the last dot in the filename */ DirectoryPosition = strrchr (NewFilename, '/'); Position = strrchr (NewFilename, '.'); if (Position && (Position > DirectoryPosition)) { /* Tack on the new suffix */ Position++; *Position = 0; strcat (Position, Suffix); } else { /* No dot, add one and then the suffix */ strcat (NewFilename, "."); strcat (NewFilename, Suffix); } return (NewFilename); } /******************************************************************************* * * FUNCTION: FlStrdup * * DESCRIPTION: Local strdup function * ******************************************************************************/ static char * FlStrdup ( char *String) { char *NewString; NewString = ACPI_ALLOCATE ((ACPI_SIZE) strlen (String) + 1); if (!NewString) { return (NULL); } strcpy (NewString, String); return (NewString); } /******************************************************************************* * * FUNCTION: FlSplitInputPathname * * PARAMETERS: InputFilename - The user-specified ASL source file to be * compiled * OutDirectoryPath - Where the directory path prefix is * returned * OutFilename - Where the filename part is returned * * RETURN: Status * * DESCRIPTION: Split the input path into a directory and filename part * 1) Directory part used to open include files * 2) Filename part used to generate output filenames * ******************************************************************************/ ACPI_STATUS FlSplitInputPathname ( char *InputPath, char **OutDirectoryPath, char **OutFilename) { char *Substring; char *DirectoryPath; char *Filename; *OutDirectoryPath = NULL; if (!InputPath) { return (AE_OK); } /* Get the path to the input filename's directory */ DirectoryPath = FlStrdup (InputPath); if (!DirectoryPath) { return (AE_NO_MEMORY); } /* Convert backslashes to slashes in the entire path */ UtConvertBackslashes (DirectoryPath); /* Backup to last slash or colon */ Substring = strrchr (DirectoryPath, '/'); if (!Substring) { Substring = strrchr (DirectoryPath, ':'); } /* Extract the simple filename */ if (!Substring) { Filename = FlStrdup (DirectoryPath); DirectoryPath[0] = 0; } else { Filename = FlStrdup (Substring + 1); *(Substring+1) = 0; } if (!Filename) { ACPI_FREE (DirectoryPath); return (AE_NO_MEMORY); } *OutDirectoryPath = DirectoryPath; if (OutFilename) { *OutFilename = Filename; return (AE_OK); } ACPI_FREE (Filename); return (AE_OK); } src/acpica/source/common/adisasm.c000066400000000000000000000714041231470457100174540ustar00rootroot00000000000000/****************************************************************************** * * Module Name: adisasm - Application-level disassembler routines * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #include "acpi.h" #include "accommon.h" #include "acparser.h" #include "amlcode.h" #include "acdebug.h" #include "acdisasm.h" #include "acdispat.h" #include "acnamesp.h" #include "actables.h" #include "acapps.h" #include #include #define _COMPONENT ACPI_TOOLS ACPI_MODULE_NAME ("adisasm") /* * Older versions of Bison won't emit this external in the generated header. * Newer versions do emit the external, so we don't need to do it. */ #ifndef ASLCOMPILER_ASLCOMPILERPARSE_H extern int AslCompilerdebug; #endif ACPI_STATUS NsDisplayNamespace ( void); void NsSetupNamespaceListing ( void *Handle); /* Local prototypes */ static void AdCreateTableHeader ( char *Filename, ACPI_TABLE_HEADER *Table); /* Stubs for ASL compiler */ #ifndef ACPI_ASL_COMPILER BOOLEAN AcpiDsIsResultUsed ( ACPI_PARSE_OBJECT *Op, ACPI_WALK_STATE *WalkState) { return TRUE; } ACPI_STATUS AcpiDsMethodError ( ACPI_STATUS Status, ACPI_WALK_STATE *WalkState) { return (Status); } #endif ACPI_STATUS AcpiNsLoadTable ( UINT32 TableIndex, ACPI_NAMESPACE_NODE *Node) { return (AE_NOT_IMPLEMENTED); } ACPI_STATUS AcpiDsRestartControlMethod ( ACPI_WALK_STATE *WalkState, ACPI_OPERAND_OBJECT *ReturnDesc) { return (AE_OK); } void AcpiDsTerminateControlMethod ( ACPI_OPERAND_OBJECT *MethodDesc, ACPI_WALK_STATE *WalkState) { return; } ACPI_STATUS AcpiDsCallControlMethod ( ACPI_THREAD_STATE *Thread, ACPI_WALK_STATE *WalkState, ACPI_PARSE_OBJECT *Op) { return (AE_OK); } ACPI_STATUS AcpiDsMethodDataInitArgs ( ACPI_OPERAND_OBJECT **Params, UINT32 MaxParamCount, ACPI_WALK_STATE *WalkState) { return (AE_OK); } static ACPI_TABLE_DESC LocalTables[1]; static ACPI_PARSE_OBJECT *AcpiGbl_ParseOpRoot; /******************************************************************************* * * FUNCTION: AdInitialize * * PARAMETERS: None * * RETURN: Status * * DESCRIPTION: ACPICA and local initialization * ******************************************************************************/ ACPI_STATUS AdInitialize ( void) { ACPI_STATUS Status; /* ACPICA subsystem initialization */ Status = AcpiOsInitialize (); if (ACPI_FAILURE (Status)) { return (Status); } Status = AcpiUtInitGlobals (); if (ACPI_FAILURE (Status)) { return (Status); } Status = AcpiUtMutexInitialize (); if (ACPI_FAILURE (Status)) { return (Status); } Status = AcpiNsRootInitialize (); if (ACPI_FAILURE (Status)) { return (Status); } /* Setup the Table Manager (cheat - there is no RSDT) */ AcpiGbl_RootTableList.MaxTableCount = 1; AcpiGbl_RootTableList.CurrentTableCount = 0; AcpiGbl_RootTableList.Tables = LocalTables; return (Status); } /****************************************************************************** * * FUNCTION: AdAmlDisassemble * * PARAMETERS: Filename - AML input filename * OutToFile - TRUE if output should go to a file * Prefix - Path prefix for output * OutFilename - where the filename is returned * * RETURN: Status * * DESCRIPTION: Disassemble an entire ACPI table * *****************************************************************************/ ACPI_STATUS AdAmlDisassemble ( BOOLEAN OutToFile, char *Filename, char *Prefix, char **OutFilename) { ACPI_STATUS Status; char *DisasmFilename = NULL; char *ExternalFilename; ACPI_EXTERNAL_FILE *ExternalFileList = AcpiGbl_ExternalFileList; FILE *File = NULL; ACPI_TABLE_HEADER *Table = NULL; ACPI_TABLE_HEADER *ExternalTable; ACPI_OWNER_ID OwnerId; /* * Input: AML code from either a file or via GetTables (memory or * registry) */ if (Filename) { Status = AcpiDbGetTableFromFile (Filename, &Table); if (ACPI_FAILURE (Status)) { return (Status); } /* * External filenames separated by commas * Example: iasl -e file1,file2,file3 -d xxx.aml */ while (ExternalFileList) { ExternalFilename = ExternalFileList->Path; if (!ACPI_STRCMP (ExternalFilename, Filename)) { /* Next external file */ ExternalFileList = ExternalFileList->Next; continue; } Status = AcpiDbGetTableFromFile (ExternalFilename, &ExternalTable); if (ACPI_FAILURE (Status)) { return (Status); } /* Load external table for symbol resolution */ if (ExternalTable) { Status = AdParseTable (ExternalTable, &OwnerId, TRUE, TRUE); if (ACPI_FAILURE (Status)) { AcpiOsPrintf ("Could not parse external ACPI tables, %s\n", AcpiFormatException (Status)); return (Status); } /* * Load namespace from names created within control methods * Set owner id of nodes in external table */ AcpiDmFinishNamespaceLoad (AcpiGbl_ParseOpRoot, AcpiGbl_RootNode, OwnerId); AcpiPsDeleteParseTree (AcpiGbl_ParseOpRoot); } /* Next external file */ ExternalFileList = ExternalFileList->Next; } /* Clear external list generated by Scope in external tables */ if (AcpiGbl_ExternalFileList) { AcpiDmClearExternalList (); } /* Load any externals defined in the optional external ref file */ AcpiDmGetExternalsFromFile (); } else { Status = AdGetLocalTables (); if (ACPI_FAILURE (Status)) { AcpiOsPrintf ("Could not get ACPI tables, %s\n", AcpiFormatException (Status)); return (Status); } if (!AcpiGbl_DbOpt_disasm) { return (AE_OK); } /* Obtained the local tables, just disassemble the DSDT */ Status = AcpiGetTable (ACPI_SIG_DSDT, 0, &Table); if (ACPI_FAILURE (Status)) { AcpiOsPrintf ("Could not get DSDT, %s\n", AcpiFormatException (Status)); return (Status); } AcpiOsPrintf ("\nDisassembly of DSDT\n"); Prefix = AdGenerateFilename ("dsdt", Table->OemTableId); } /* * Output: ASL code. Redirect to a file if requested */ if (OutToFile) { /* Create/Open a disassembly output file */ DisasmFilename = FlGenerateFilename (Prefix, FILE_SUFFIX_DISASSEMBLY); if (!DisasmFilename) { fprintf (stderr, "Could not generate output filename\n"); Status = AE_ERROR; goto Cleanup; } File = fopen (DisasmFilename, "w+"); if (!File) { fprintf (stderr, "Could not open output file %s\n", DisasmFilename); Status = AE_ERROR; goto Cleanup; } AcpiOsRedirectOutput (File); } *OutFilename = DisasmFilename; if (!AcpiUtIsAmlTable (Table)) { AdDisassemblerHeader (Filename); AcpiOsPrintf (" * ACPI Data Table [%4.4s]\n *\n", Table->Signature); AcpiOsPrintf (" * Format: [HexOffset DecimalOffset ByteLength] " "FieldName : FieldValue\n */\n\n"); AcpiDmDumpDataTable (Table); fprintf (stderr, "Acpi Data Table [%4.4s] decoded\n", Table->Signature); fprintf (stderr, "Formatted output: %s - %u bytes\n", DisasmFilename, CmGetFileSize (File)); } else { /* Always parse the tables, only option is what to display */ Status = AdParseTable (Table, &OwnerId, TRUE, FALSE); if (ACPI_FAILURE (Status)) { AcpiOsPrintf ("Could not parse ACPI tables, %s\n", AcpiFormatException (Status)); goto Cleanup; } if (AslCompilerdebug) { AcpiOsPrintf ("/**** Before second load\n"); NsSetupNamespaceListing (File); NsDisplayNamespace (); AcpiOsPrintf ("*****/\n"); } /* Load namespace from names created within control methods */ AcpiDmFinishNamespaceLoad (AcpiGbl_ParseOpRoot, AcpiGbl_RootNode, OwnerId); /* * Cross reference the namespace here, in order to * generate External() statements */ AcpiDmCrossReferenceNamespace (AcpiGbl_ParseOpRoot, AcpiGbl_RootNode, OwnerId); if (AslCompilerdebug) { AcpiDmDumpTree (AcpiGbl_ParseOpRoot); } /* Find possible calls to external control methods */ AcpiDmFindOrphanMethods (AcpiGbl_ParseOpRoot); /* * If we found any external control methods, we must reparse * the entire tree with the new information (namely, the * number of arguments per method) */ if (AcpiDmGetExternalMethodCount ()) { fprintf (stderr, "\nFound %u external control methods, " "reparsing with new information\n", AcpiDmGetExternalMethodCount ()); /* Reparse, rebuild namespace */ AcpiPsDeleteParseTree (AcpiGbl_ParseOpRoot); AcpiGbl_ParseOpRoot = NULL; AcpiNsDeleteNamespaceSubtree (AcpiGbl_RootNode); AcpiGbl_RootNode = NULL; AcpiGbl_RootNodeStruct.Name.Integer = ACPI_ROOT_NAME; AcpiGbl_RootNodeStruct.DescriptorType = ACPI_DESC_TYPE_NAMED; AcpiGbl_RootNodeStruct.Type = ACPI_TYPE_DEVICE; AcpiGbl_RootNodeStruct.Parent = NULL; AcpiGbl_RootNodeStruct.Child = NULL; AcpiGbl_RootNodeStruct.Peer = NULL; AcpiGbl_RootNodeStruct.Object = NULL; AcpiGbl_RootNodeStruct.Flags = 0; Status = AcpiNsRootInitialize (); /* New namespace, add the external definitions first */ AcpiDmAddExternalsToNamespace (); /* Parse the table again. No need to reload it, however */ Status = AdParseTable (Table, NULL, FALSE, FALSE); if (ACPI_FAILURE (Status)) { AcpiOsPrintf ("Could not parse ACPI tables, %s\n", AcpiFormatException (Status)); goto Cleanup; } /* Cross reference the namespace again */ AcpiDmFinishNamespaceLoad (AcpiGbl_ParseOpRoot, AcpiGbl_RootNode, OwnerId); AcpiDmCrossReferenceNamespace (AcpiGbl_ParseOpRoot, AcpiGbl_RootNode, OwnerId); if (AslCompilerdebug) { AcpiOsPrintf ("/**** After second load and resource conversion\n"); NsSetupNamespaceListing (File); NsDisplayNamespace (); AcpiOsPrintf ("*****/\n"); AcpiDmDumpTree (AcpiGbl_ParseOpRoot); } } /* * Now that the namespace is finalized, we can perform namespace * transforms. * * 1) Convert fixed-offset references to resource descriptors * to symbolic references (Note: modifies namespace) */ AcpiDmConvertResourceIndexes (AcpiGbl_ParseOpRoot, AcpiGbl_RootNode); /* Optional displays */ if (AcpiGbl_DbOpt_disasm) { /* This is the real disassembly */ AdDisplayTables (Filename, Table); /* Dump hex table if requested (-vt) */ AcpiDmDumpDataTable (Table); fprintf (stderr, "Disassembly completed\n"); fprintf (stderr, "ASL Output: %s - %u bytes\n", DisasmFilename, CmGetFileSize (File)); } } Cleanup: if (Table && !AcpiUtIsAmlTable (Table)) { ACPI_FREE (Table); } if (OutToFile && File) { if (AslCompilerdebug) /* Display final namespace, with transforms */ { NsSetupNamespaceListing (File); NsDisplayNamespace (); } fclose (File); AcpiOsRedirectOutput (stdout); } AcpiPsDeleteParseTree (AcpiGbl_ParseOpRoot); AcpiGbl_ParseOpRoot = NULL; return (Status); } /****************************************************************************** * * FUNCTION: AdDisassemblerHeader * * PARAMETERS: Filename - Input file for the table * * RETURN: None * * DESCRIPTION: Create the disassembler header, including ACPICA signon with * current time and date. * *****************************************************************************/ void AdDisassemblerHeader ( char *Filename) { time_t Timer; time (&Timer); /* Header and input table info */ AcpiOsPrintf ("/*\n"); AcpiOsPrintf (ACPI_COMMON_HEADER ("AML Disassembler", " * ")); AcpiOsPrintf (" * Disassembly of %s, %s", Filename, ctime (&Timer)); AcpiOsPrintf (" *\n"); } /****************************************************************************** * * FUNCTION: AdCreateTableHeader * * PARAMETERS: Filename - Input file for the table * Table - Pointer to the raw table * * RETURN: None * * DESCRIPTION: Create the ASL table header, including ACPICA signon with * current time and date. * *****************************************************************************/ static void AdCreateTableHeader ( char *Filename, ACPI_TABLE_HEADER *Table) { char *NewFilename; UINT8 Checksum; /* * Print file header and dump original table header */ AdDisassemblerHeader (Filename); AcpiOsPrintf (" * Original Table Header:\n"); AcpiOsPrintf (" * Signature \"%4.4s\"\n", Table->Signature); AcpiOsPrintf (" * Length 0x%8.8X (%u)\n", Table->Length, Table->Length); /* Print and validate the revision */ AcpiOsPrintf (" * Revision 0x%2.2X", Table->Revision); switch (Table->Revision) { case 0: AcpiOsPrintf (" **** Invalid Revision"); break; case 1: /* Revision of DSDT controls the ACPI integer width */ if (ACPI_COMPARE_NAME (Table->Signature, ACPI_SIG_DSDT)) { AcpiOsPrintf (" **** 32-bit table (V1), no 64-bit math support"); } break; default: break; } AcpiOsPrintf ("\n"); /* Print and validate the table checksum */ AcpiOsPrintf (" * Checksum 0x%2.2X", Table->Checksum); Checksum = AcpiTbChecksum (ACPI_CAST_PTR (UINT8, Table), Table->Length); if (Checksum) { AcpiOsPrintf (" **** Incorrect checksum, should be 0x%2.2X", (UINT8) (Table->Checksum - Checksum)); } AcpiOsPrintf ("\n"); AcpiOsPrintf (" * OEM ID \"%.6s\"\n", Table->OemId); AcpiOsPrintf (" * OEM Table ID \"%.8s\"\n", Table->OemTableId); AcpiOsPrintf (" * OEM Revision 0x%8.8X (%u)\n", Table->OemRevision, Table->OemRevision); AcpiOsPrintf (" * Compiler ID \"%.4s\"\n", Table->AslCompilerId); AcpiOsPrintf (" * Compiler Version 0x%8.8X (%u)\n", Table->AslCompilerRevision, Table->AslCompilerRevision); AcpiOsPrintf (" */\n"); /* Create AML output filename based on input filename */ if (Filename) { NewFilename = FlGenerateFilename (Filename, "aml"); } else { NewFilename = ACPI_ALLOCATE_ZEROED (9); if (NewFilename) { strncat (NewFilename, Table->Signature, 4); strcat (NewFilename, ".aml"); } } if (!NewFilename) { AcpiOsPrintf (" **** Could not generate AML output filename\n"); return; } /* Open the ASL definition block */ AcpiOsPrintf ( "DefinitionBlock (\"%s\", \"%4.4s\", %hu, \"%.6s\", \"%.8s\", 0x%8.8X)\n", NewFilename, Table->Signature, Table->Revision, Table->OemId, Table->OemTableId, Table->OemRevision); ACPI_FREE (NewFilename); } /****************************************************************************** * * FUNCTION: AdDisplayTables * * PARAMETERS: Filename - Input file for the table * Table - Pointer to the raw table * * RETURN: Status * * DESCRIPTION: Display (disassemble) loaded tables and dump raw tables * *****************************************************************************/ ACPI_STATUS AdDisplayTables ( char *Filename, ACPI_TABLE_HEADER *Table) { if (!AcpiGbl_ParseOpRoot) { return (AE_NOT_EXIST); } if (!AcpiGbl_DbOpt_verbose) { AdCreateTableHeader (Filename, Table); } AcpiDmDisassemble (NULL, AcpiGbl_ParseOpRoot, ACPI_UINT32_MAX); if (AcpiGbl_DbOpt_verbose) { AcpiOsPrintf ("\n\nTable Header:\n"); AcpiUtDebugDumpBuffer ((UINT8 *) Table, sizeof (ACPI_TABLE_HEADER), DB_BYTE_DISPLAY, ACPI_UINT32_MAX); AcpiOsPrintf ("Table Body (Length 0x%X)\n", Table->Length); AcpiUtDebugDumpBuffer (((UINT8 *) Table + sizeof (ACPI_TABLE_HEADER)), Table->Length, DB_BYTE_DISPLAY, ACPI_UINT32_MAX); } return (AE_OK); } /****************************************************************************** * * FUNCTION: AdGetLocalTables * * PARAMETERS: None * * RETURN: Status * * DESCRIPTION: Get the ACPI tables from either memory or a file * *****************************************************************************/ ACPI_STATUS AdGetLocalTables ( void) { ACPI_STATUS Status; ACPI_TABLE_HEADER TableHeader; ACPI_TABLE_HEADER *NewTable; UINT32 TableIndex; /* Get the DSDT via table override */ ACPI_MOVE_32_TO_32 (TableHeader.Signature, ACPI_SIG_DSDT); AcpiOsTableOverride (&TableHeader, &NewTable); if (!NewTable) { fprintf (stderr, "Could not obtain DSDT\n"); return (AE_NO_ACPI_TABLES); } AdWriteTable (NewTable, NewTable->Length, ACPI_SIG_DSDT, NewTable->OemTableId); /* Store DSDT in the Table Manager */ Status = AcpiTbStoreTable (0, NewTable, NewTable->Length, 0, &TableIndex); if (ACPI_FAILURE (Status)) { fprintf (stderr, "Could not store DSDT\n"); return (AE_NO_ACPI_TABLES); } return (AE_OK); } /****************************************************************************** * * FUNCTION: AdParseTable * * PARAMETERS: Table - Pointer to the raw table * OwnerId - Returned OwnerId of the table * LoadTable - If add table to the global table list * External - If this is an external table * * RETURN: Status * * DESCRIPTION: Parse the DSDT. * *****************************************************************************/ ACPI_STATUS AdParseTable ( ACPI_TABLE_HEADER *Table, ACPI_OWNER_ID *OwnerId, BOOLEAN LoadTable, BOOLEAN External) { ACPI_STATUS Status = AE_OK; ACPI_WALK_STATE *WalkState; UINT8 *AmlStart; UINT32 AmlLength; UINT32 TableIndex; if (!Table) { return (AE_NOT_EXIST); } /* Pass 1: Parse everything except control method bodies */ fprintf (stderr, "Pass 1 parse of [%4.4s]\n", (char *) Table->Signature); AmlLength = Table->Length - sizeof (ACPI_TABLE_HEADER); AmlStart = ((UINT8 *) Table + sizeof (ACPI_TABLE_HEADER)); /* Create the root object */ AcpiGbl_ParseOpRoot = AcpiPsCreateScopeOp (); if (!AcpiGbl_ParseOpRoot) { return (AE_NO_MEMORY); } /* Create and initialize a new walk state */ WalkState = AcpiDsCreateWalkState (0, AcpiGbl_ParseOpRoot, NULL, NULL); if (!WalkState) { return (AE_NO_MEMORY); } Status = AcpiDsInitAmlWalk (WalkState, AcpiGbl_ParseOpRoot, NULL, AmlStart, AmlLength, NULL, ACPI_IMODE_LOAD_PASS1); if (ACPI_FAILURE (Status)) { return (Status); } WalkState->ParseFlags &= ~ACPI_PARSE_DELETE_TREE; WalkState->ParseFlags |= ACPI_PARSE_DISASSEMBLE; Status = AcpiPsParseAml (WalkState); if (ACPI_FAILURE (Status)) { return (Status); } /* If LoadTable is FALSE, we are parsing the last loaded table */ TableIndex = AcpiGbl_RootTableList.CurrentTableCount - 1; /* Pass 2 */ if (LoadTable) { Status = AcpiTbStoreTable ((ACPI_PHYSICAL_ADDRESS) Table, Table, Table->Length, ACPI_TABLE_ORIGIN_INTERNAL_VIRTUAL, &TableIndex); if (ACPI_FAILURE (Status)) { return (Status); } Status = AcpiTbAllocateOwnerId (TableIndex); if (ACPI_FAILURE (Status)) { return (Status); } if (OwnerId) { Status = AcpiTbGetOwnerId (TableIndex, OwnerId); if (ACPI_FAILURE (Status)) { return (Status); } } } fprintf (stderr, "Pass 2 parse of [%4.4s]\n", (char *) Table->Signature); Status = AcpiNsOneCompleteParse (ACPI_IMODE_LOAD_PASS2, TableIndex, NULL); if (ACPI_FAILURE (Status)) { return (Status); } /* No need to parse control methods of external table */ if (External) { return (AE_OK); } /* * Pass 3: Parse control methods and link their parse trees * into the main parse tree */ fprintf (stderr, "Parsing Deferred Opcodes (Methods/Buffers/Packages/Regions)\n"); Status = AcpiDmParseDeferredOps (AcpiGbl_ParseOpRoot); fprintf (stderr, "\n"); /* Process Resource Templates */ AcpiDmFindResources (AcpiGbl_ParseOpRoot); fprintf (stderr, "Parsing completed\n"); return (AE_OK); } src/acpica/source/common/adwalk.c000066400000000000000000001015241231470457100172730ustar00rootroot00000000000000/****************************************************************************** * * Module Name: adwalk - Application-level disassembler parse tree walk routines * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #include "acpi.h" #include "accommon.h" #include "acparser.h" #include "amlcode.h" #include "acdisasm.h" #include "acdispat.h" #include "acnamesp.h" #include "acapps.h" #define _COMPONENT ACPI_TOOLS ACPI_MODULE_NAME ("adwalk") /* * aslmap - opcode mappings and reserved method names */ ACPI_OBJECT_TYPE AslMapNamedOpcodeToDataType ( UINT16 Opcode); /* Local prototypes */ static ACPI_STATUS AcpiDmFindOrphanDescending ( ACPI_PARSE_OBJECT *Op, UINT32 Level, void *Context); static ACPI_STATUS AcpiDmDumpDescending ( ACPI_PARSE_OBJECT *Op, UINT32 Level, void *Context); static ACPI_STATUS AcpiDmXrefDescendingOp ( ACPI_PARSE_OBJECT *Op, UINT32 Level, void *Context); static ACPI_STATUS AcpiDmCommonAscendingOp ( ACPI_PARSE_OBJECT *Op, UINT32 Level, void *Context); static ACPI_STATUS AcpiDmLoadDescendingOp ( ACPI_PARSE_OBJECT *Op, UINT32 Level, void *Context); static UINT32 AcpiDmInspectPossibleArgs ( UINT32 CurrentOpArgCount, UINT32 TargetCount, ACPI_PARSE_OBJECT *Op); static ACPI_STATUS AcpiDmResourceDescendingOp ( ACPI_PARSE_OBJECT *Op, UINT32 Level, void *Context); /******************************************************************************* * * FUNCTION: AcpiDmDumpTree * * PARAMETERS: Origin - Starting object * * RETURN: None * * DESCRIPTION: Parse tree walk to format and output the nodes * ******************************************************************************/ void AcpiDmDumpTree ( ACPI_PARSE_OBJECT *Origin) { ACPI_OP_WALK_INFO Info; if (!Origin) { return; } AcpiOsPrintf ("/*\nAML Parse Tree\n\n"); Info.Flags = 0; Info.Count = 0; Info.Level = 0; Info.WalkState = NULL; AcpiDmWalkParseTree (Origin, AcpiDmDumpDescending, NULL, &Info); AcpiOsPrintf ("*/\n\n"); } /******************************************************************************* * * FUNCTION: AcpiDmFindOrphanMethods * * PARAMETERS: Origin - Starting object * * RETURN: None * * DESCRIPTION: Parse tree walk to find "orphaned" method invocations -- methods * that are not resolved in the namespace * ******************************************************************************/ void AcpiDmFindOrphanMethods ( ACPI_PARSE_OBJECT *Origin) { ACPI_OP_WALK_INFO Info; if (!Origin) { return; } Info.Flags = 0; Info.Level = 0; Info.WalkState = NULL; AcpiDmWalkParseTree (Origin, AcpiDmFindOrphanDescending, NULL, &Info); } /******************************************************************************* * * FUNCTION: AcpiDmFinishNamespaceLoad * * PARAMETERS: ParseTreeRoot - Root of the parse tree * NamespaceRoot - Root of the internal namespace * OwnerId - OwnerId of the table to be disassembled * * RETURN: None * * DESCRIPTION: Load all namespace items that are created within control * methods. Used before namespace cross reference * ******************************************************************************/ void AcpiDmFinishNamespaceLoad ( ACPI_PARSE_OBJECT *ParseTreeRoot, ACPI_NAMESPACE_NODE *NamespaceRoot, ACPI_OWNER_ID OwnerId) { ACPI_STATUS Status; ACPI_OP_WALK_INFO Info; ACPI_WALK_STATE *WalkState; if (!ParseTreeRoot) { return; } /* Create and initialize a new walk state */ WalkState = AcpiDsCreateWalkState (OwnerId, ParseTreeRoot, NULL, NULL); if (!WalkState) { return; } Status = AcpiDsScopeStackPush (NamespaceRoot, NamespaceRoot->Type, WalkState); if (ACPI_FAILURE (Status)) { return; } Info.Flags = 0; Info.Level = 0; Info.WalkState = WalkState; AcpiDmWalkParseTree (ParseTreeRoot, AcpiDmLoadDescendingOp, AcpiDmCommonAscendingOp, &Info); ACPI_FREE (WalkState); } /******************************************************************************* * * FUNCTION: AcpiDmCrossReferenceNamespace * * PARAMETERS: ParseTreeRoot - Root of the parse tree * NamespaceRoot - Root of the internal namespace * OwnerId - OwnerId of the table to be disassembled * * RETURN: None * * DESCRIPTION: Cross reference the namespace to create externals * ******************************************************************************/ void AcpiDmCrossReferenceNamespace ( ACPI_PARSE_OBJECT *ParseTreeRoot, ACPI_NAMESPACE_NODE *NamespaceRoot, ACPI_OWNER_ID OwnerId) { ACPI_STATUS Status; ACPI_OP_WALK_INFO Info; ACPI_WALK_STATE *WalkState; if (!ParseTreeRoot) { return; } /* Create and initialize a new walk state */ WalkState = AcpiDsCreateWalkState (OwnerId, ParseTreeRoot, NULL, NULL); if (!WalkState) { return; } Status = AcpiDsScopeStackPush (NamespaceRoot, NamespaceRoot->Type, WalkState); if (ACPI_FAILURE (Status)) { return; } Info.Flags = 0; Info.Level = 0; Info.WalkState = WalkState; AcpiDmWalkParseTree (ParseTreeRoot, AcpiDmXrefDescendingOp, AcpiDmCommonAscendingOp, &Info); ACPI_FREE (WalkState); } /******************************************************************************* * * FUNCTION: AcpiDmConvertResourceIndexes * * PARAMETERS: ParseTreeRoot - Root of the parse tree * NamespaceRoot - Root of the internal namespace * * RETURN: None * * DESCRIPTION: Convert fixed-offset references to resource descriptors to * symbolic references. Should only be called after namespace has * been cross referenced. * ******************************************************************************/ void AcpiDmConvertResourceIndexes ( ACPI_PARSE_OBJECT *ParseTreeRoot, ACPI_NAMESPACE_NODE *NamespaceRoot) { ACPI_STATUS Status; ACPI_OP_WALK_INFO Info; ACPI_WALK_STATE *WalkState; if (!ParseTreeRoot) { return; } /* Create and initialize a new walk state */ WalkState = AcpiDsCreateWalkState (0, ParseTreeRoot, NULL, NULL); if (!WalkState) { return; } Status = AcpiDsScopeStackPush (NamespaceRoot, NamespaceRoot->Type, WalkState); if (ACPI_FAILURE (Status)) { return; } Info.Flags = 0; Info.Level = 0; Info.WalkState = WalkState; AcpiDmWalkParseTree (ParseTreeRoot, AcpiDmResourceDescendingOp, AcpiDmCommonAscendingOp, &Info); ACPI_FREE (WalkState); return; } /******************************************************************************* * * FUNCTION: AcpiDmDumpDescending * * PARAMETERS: ASL_WALK_CALLBACK * * RETURN: Status * * DESCRIPTION: Format and print contents of one parse Op. * ******************************************************************************/ static ACPI_STATUS AcpiDmDumpDescending ( ACPI_PARSE_OBJECT *Op, UINT32 Level, void *Context) { ACPI_OP_WALK_INFO *Info = Context; char *Path; if (!Op) { return (AE_OK); } /* Most of the information (count, level, name) here */ Info->Count++; AcpiOsPrintf ("% 5d [%2.2d] ", Info->Count, Level); AcpiDmIndent (Level); AcpiOsPrintf ("%-28s", AcpiPsGetOpcodeName (Op->Common.AmlOpcode)); /* Extra info is helpful */ switch (Op->Common.AmlOpcode) { case AML_BYTE_OP: AcpiOsPrintf ("%2.2X", (UINT32) Op->Common.Value.Integer); break; case AML_WORD_OP: AcpiOsPrintf ("%4.4X", (UINT32) Op->Common.Value.Integer); break; case AML_DWORD_OP: AcpiOsPrintf ("%8.8X", (UINT32) Op->Common.Value.Integer); break; case AML_QWORD_OP: AcpiOsPrintf ("%8.8X%8.8X", ACPI_FORMAT_UINT64 (Op->Common.Value.Integer)); break; case AML_INT_NAMEPATH_OP: if (Op->Common.Value.String) { AcpiNsExternalizeName (ACPI_UINT32_MAX, Op->Common.Value.String, NULL, &Path); AcpiOsPrintf ("%s %p", Path, Op->Common.Node); ACPI_FREE (Path); } else { AcpiOsPrintf ("[NULL]"); } break; case AML_NAME_OP: case AML_METHOD_OP: case AML_DEVICE_OP: case AML_INT_NAMEDFIELD_OP: AcpiOsPrintf ("%4.4s", ACPI_CAST_PTR (char, &Op->Named.Name)); break; default: break; } AcpiOsPrintf ("\n"); return (AE_OK); } /******************************************************************************* * * FUNCTION: AcpiDmFindOrphanDescending * * PARAMETERS: ASL_WALK_CALLBACK * * RETURN: Status * * DESCRIPTION: Check namepath Ops for orphaned method invocations * * Note: Experimental. * ******************************************************************************/ static ACPI_STATUS AcpiDmFindOrphanDescending ( ACPI_PARSE_OBJECT *Op, UINT32 Level, void *Context) { const ACPI_OPCODE_INFO *OpInfo; ACPI_PARSE_OBJECT *ChildOp; ACPI_PARSE_OBJECT *NextOp; ACPI_PARSE_OBJECT *ParentOp; UINT32 ArgCount; if (!Op) { return (AE_OK); } OpInfo = AcpiPsGetOpcodeInfo (Op->Common.AmlOpcode); switch (Op->Common.AmlOpcode) { #ifdef ACPI_UNDER_DEVELOPMENT case AML_ADD_OP: ChildOp = Op->Common.Value.Arg; if ((ChildOp->Common.AmlOpcode == AML_INT_NAMEPATH_OP) && !ChildOp->Common.Node) { AcpiNsExternalizeName (ACPI_UINT32_MAX, ChildOp->Common.Value.String, NULL, &Path); AcpiOsPrintf ("/* %-16s A-NAMEPATH: %s */\n", Op->Common.AmlOpName, Path); ACPI_FREE (Path); NextOp = Op->Common.Next; if (!NextOp) { /* This NamePath has no args, assume it is an integer */ AcpiDmAddOpToExternalList (ChildOp, ChildOp->Common.Value.String, ACPI_TYPE_INTEGER, 0, 0); return (AE_OK); } ArgCount = AcpiDmInspectPossibleArgs (3, 1, NextOp); AcpiOsPrintf ("/* A-CHILDREN: %u Actual %u */\n", ArgCount, AcpiDmCountChildren (Op)); if (ArgCount < 1) { /* One Arg means this is just a Store(Name,Target) */ AcpiDmAddOpToExternalList (ChildOp, ChildOp->Common.Value.String, ACPI_TYPE_INTEGER, 0, 0); return (AE_OK); } AcpiDmAddOpToExternalList (ChildOp, ChildOp->Common.Value.String, ACPI_TYPE_METHOD, ArgCount, 0); } break; #endif case AML_STORE_OP: ChildOp = Op->Common.Value.Arg; if ((ChildOp->Common.AmlOpcode == AML_INT_NAMEPATH_OP) && !ChildOp->Common.Node) { NextOp = Op->Common.Next; if (!NextOp) { /* This NamePath has no args, assume it is an integer */ AcpiDmAddOpToExternalList (ChildOp, ChildOp->Common.Value.String, ACPI_TYPE_INTEGER, 0, 0); return (AE_OK); } ArgCount = AcpiDmInspectPossibleArgs (2, 1, NextOp); if (ArgCount <= 1) { /* One Arg means this is just a Store(Name,Target) */ AcpiDmAddOpToExternalList (ChildOp, ChildOp->Common.Value.String, ACPI_TYPE_INTEGER, 0, 0); return (AE_OK); } AcpiDmAddOpToExternalList (ChildOp, ChildOp->Common.Value.String, ACPI_TYPE_METHOD, ArgCount, 0); } break; case AML_INT_NAMEPATH_OP: /* Must examine parent to see if this namepath is an argument */ ParentOp = Op->Common.Parent; OpInfo = AcpiPsGetOpcodeInfo (ParentOp->Common.AmlOpcode); if ((OpInfo->Class != AML_CLASS_EXECUTE) && (OpInfo->Class != AML_CLASS_CREATE) && (OpInfo->ObjectType != ACPI_TYPE_LOCAL_ALIAS) && (ParentOp->Common.AmlOpcode != AML_INT_METHODCALL_OP) && !Op->Common.Node) { ArgCount = AcpiDmInspectPossibleArgs (0, 0, Op->Common.Next); /* * Check if namepath is a predicate for if/while or lone parameter to * a return. */ if (ArgCount == 0) { if (((ParentOp->Common.AmlOpcode == AML_IF_OP) || (ParentOp->Common.AmlOpcode == AML_WHILE_OP) || (ParentOp->Common.AmlOpcode == AML_RETURN_OP)) && /* And namepath is the first argument */ (ParentOp->Common.Value.Arg == Op)) { AcpiDmAddOpToExternalList (Op, Op->Common.Value.String, ACPI_TYPE_INTEGER, 0, 0); break; } } /* * This is a standalone namestring (not a parameter to another * operator) - it *must* be a method invocation, nothing else is * grammatically possible. */ AcpiDmAddOpToExternalList (Op, Op->Common.Value.String, ACPI_TYPE_METHOD, ArgCount, 0); } break; default: break; } return (AE_OK); } /******************************************************************************* * * FUNCTION: AcpiDmLoadDescendingOp * * PARAMETERS: ASL_WALK_CALLBACK * * RETURN: Status * * DESCRIPTION: Descending handler for namespace control method object load * ******************************************************************************/ static ACPI_STATUS AcpiDmLoadDescendingOp ( ACPI_PARSE_OBJECT *Op, UINT32 Level, void *Context) { ACPI_OP_WALK_INFO *Info = Context; const ACPI_OPCODE_INFO *OpInfo; ACPI_WALK_STATE *WalkState; ACPI_OBJECT_TYPE ObjectType; ACPI_STATUS Status; char *Path = NULL; ACPI_PARSE_OBJECT *NextOp; ACPI_NAMESPACE_NODE *Node; char FieldPath[5]; BOOLEAN PreDefined = FALSE; UINT8 PreDefineIndex = 0; WalkState = Info->WalkState; OpInfo = AcpiPsGetOpcodeInfo (Op->Common.AmlOpcode); ObjectType = OpInfo->ObjectType; ObjectType = AslMapNamedOpcodeToDataType (Op->Asl.AmlOpcode); /* Only interested in operators that create new names */ if (!(OpInfo->Flags & AML_NAMED) && !(OpInfo->Flags & AML_CREATE)) { goto Exit; } /* Get the NamePath from the appropriate place */ if (OpInfo->Flags & AML_NAMED) { /* For all named operators, get the new name */ Path = (char *) Op->Named.Path; if (!Path && Op->Common.AmlOpcode == AML_INT_NAMEDFIELD_OP) { *ACPI_CAST_PTR (UINT32, &FieldPath[0]) = Op->Named.Name; FieldPath[4] = 0; Path = FieldPath; } } else if (OpInfo->Flags & AML_CREATE) { /* New name is the last child */ NextOp = Op->Common.Value.Arg; while (NextOp->Common.Next) { NextOp = NextOp->Common.Next; } Path = NextOp->Common.Value.String; } if (!Path) { goto Exit; } /* Insert the name into the namespace */ Status = AcpiNsLookup (WalkState->ScopeInfo, Path, ObjectType, ACPI_IMODE_LOAD_PASS2, ACPI_NS_DONT_OPEN_SCOPE, WalkState, &Node); Op->Common.Node = Node; if (ACPI_SUCCESS (Status)) { /* Check if it's a predefined node */ while (AcpiGbl_PreDefinedNames[PreDefineIndex].Name) { if (ACPI_COMPARE_NAME (Node->Name.Ascii, AcpiGbl_PreDefinedNames[PreDefineIndex].Name)) { PreDefined = TRUE; break; } PreDefineIndex++; } /* * Set node owner id if it satisfies all the following conditions: * 1) Not a predefined node, _SB_ etc * 2) Not the root node * 3) Not a node created by Scope */ if (!PreDefined && Node != AcpiGbl_RootNode && Op->Common.AmlOpcode != AML_SCOPE_OP) { Node->OwnerId = WalkState->OwnerId; } } Exit: if (AcpiNsOpensScope (ObjectType)) { if (Op->Common.Node) { Status = AcpiDsScopeStackPush (Op->Common.Node, ObjectType, WalkState); if (ACPI_FAILURE (Status)) { return (Status); } } } return (AE_OK); } /******************************************************************************* * * FUNCTION: AcpiDmXrefDescendingOp * * PARAMETERS: ASL_WALK_CALLBACK * * RETURN: Status * * DESCRIPTION: Descending handler for namespace cross reference * ******************************************************************************/ static ACPI_STATUS AcpiDmXrefDescendingOp ( ACPI_PARSE_OBJECT *Op, UINT32 Level, void *Context) { ACPI_OP_WALK_INFO *Info = Context; const ACPI_OPCODE_INFO *OpInfo; ACPI_WALK_STATE *WalkState; ACPI_OBJECT_TYPE ObjectType; ACPI_OBJECT_TYPE ObjectType2; ACPI_STATUS Status; char *Path = NULL; ACPI_PARSE_OBJECT *NextOp; ACPI_NAMESPACE_NODE *Node; ACPI_OPERAND_OBJECT *Object; UINT32 ParamCount = 0; char *Pathname; WalkState = Info->WalkState; OpInfo = AcpiPsGetOpcodeInfo (Op->Common.AmlOpcode); ObjectType = OpInfo->ObjectType; ObjectType = AslMapNamedOpcodeToDataType (Op->Asl.AmlOpcode); if ((!(OpInfo->Flags & AML_NAMED)) && (!(OpInfo->Flags & AML_CREATE)) && (Op->Common.AmlOpcode != AML_INT_NAMEPATH_OP) && (Op->Common.AmlOpcode != AML_NOTIFY_OP)) { goto Exit; } /* Get the NamePath from the appropriate place */ if (OpInfo->Flags & AML_NAMED) { /* * Only these two operators (Alias, Scope) refer to an existing * name, it is the first argument */ if (Op->Common.AmlOpcode == AML_ALIAS_OP) { ObjectType = ACPI_TYPE_ANY; NextOp = Op->Common.Value.Arg; NextOp = NextOp->Common.Value.Arg; if (NextOp->Common.AmlOpcode == AML_INT_NAMEPATH_OP) { Path = NextOp->Common.Value.String; } } else if (Op->Common.AmlOpcode == AML_SCOPE_OP) { Path = (char *) Op->Named.Path; } } else if (OpInfo->Flags & AML_CREATE) { /* Referenced Buffer Name is the first child */ ObjectType = ACPI_TYPE_BUFFER; /* Change from TYPE_BUFFER_FIELD */ NextOp = Op->Common.Value.Arg; if (NextOp->Common.AmlOpcode == AML_INT_NAMEPATH_OP) { Path = NextOp->Common.Value.String; } } else if (Op->Common.AmlOpcode == AML_NOTIFY_OP) { Path = Op->Common.Value.Arg->Asl.Value.String; } else { Path = Op->Common.Value.String; } if (!Path) { goto Exit; } /* * Lookup the name in the namespace. Name must exist at this point, or it * is an invalid reference. * * The namespace is also used as a lookup table for references to resource * descriptors and the fields within them. */ Node = NULL; Status = AcpiNsLookup (WalkState->ScopeInfo, Path, ACPI_TYPE_ANY, ACPI_IMODE_EXECUTE, ACPI_NS_SEARCH_PARENT | ACPI_NS_DONT_OPEN_SCOPE, WalkState, &Node); if (ACPI_SUCCESS (Status) && (Node->Flags & ANOBJ_IS_EXTERNAL)) { /* Node was created by an External() statement */ Status = AE_NOT_FOUND; } if (ACPI_FAILURE (Status)) { if (Status == AE_NOT_FOUND) { /* * Add this symbol as an external declaration, except if the * parent is a CondRefOf operator. For this operator, we do not * need an external, nor do we want one, since this can cause * disassembly problems if the symbol is actually a control * method. */ if (!(Op->Asl.Parent && (Op->Asl.Parent->Asl.AmlOpcode == AML_COND_REF_OF_OP))) { if (Node) { AcpiDmAddNodeToExternalList (Node, (UINT8) ObjectType, 0, 0); } else { AcpiDmAddOpToExternalList (Op, Path, (UINT8) ObjectType, 0, 0); } } } } /* * Found the node, but check if it came from an external table. * Add it to external list. Note: Node->OwnerId == 0 indicates * one of the built-in ACPI Names (_OS_ etc.) which can safely * be ignored. */ else if (Node->OwnerId && (WalkState->OwnerId != Node->OwnerId)) { ObjectType2 = ObjectType; Object = AcpiNsGetAttachedObject (Node); if (Object) { ObjectType2 = Object->Common.Type; if (ObjectType2 == ACPI_TYPE_METHOD) { ParamCount = Object->Method.ParamCount; } } Pathname = AcpiNsGetExternalPathname (Node); if (!Pathname) { return (AE_NO_MEMORY); } AcpiDmAddNodeToExternalList (Node, (UINT8) ObjectType2, ParamCount, ACPI_EXT_RESOLVED_REFERENCE); ACPI_FREE (Pathname); Op->Common.Node = Node; } else { Op->Common.Node = Node; } Exit: /* Open new scope if necessary */ if (AcpiNsOpensScope (ObjectType)) { if (Op->Common.Node) { Status = AcpiDsScopeStackPush (Op->Common.Node, ObjectType, WalkState); if (ACPI_FAILURE (Status)) { return (Status); } } } return (AE_OK); } /******************************************************************************* * * FUNCTION: AcpiDmResourceDescendingOp * * PARAMETERS: ASL_WALK_CALLBACK * * RETURN: None * * DESCRIPTION: Process one parse op during symbolic resource index conversion. * ******************************************************************************/ static ACPI_STATUS AcpiDmResourceDescendingOp ( ACPI_PARSE_OBJECT *Op, UINT32 Level, void *Context) { ACPI_OP_WALK_INFO *Info = Context; const ACPI_OPCODE_INFO *OpInfo; ACPI_WALK_STATE *WalkState; ACPI_OBJECT_TYPE ObjectType; ACPI_STATUS Status; WalkState = Info->WalkState; OpInfo = AcpiPsGetOpcodeInfo (Op->Common.AmlOpcode); /* Open new scope if necessary */ ObjectType = OpInfo->ObjectType; if (AcpiNsOpensScope (ObjectType)) { if (Op->Common.Node) { Status = AcpiDsScopeStackPush (Op->Common.Node, ObjectType, WalkState); if (ACPI_FAILURE (Status)) { return (Status); } } } /* * Check if this operator contains a reference to a resource descriptor. * If so, convert the reference into a symbolic reference. */ AcpiDmCheckResourceReference (Op, WalkState); return (AE_OK); } /******************************************************************************* * * FUNCTION: AcpiDmCommonAscendingOp * * PARAMETERS: ASL_WALK_CALLBACK * * RETURN: None * * DESCRIPTION: Ascending handler for combined parse/namespace walks. Closes * scope if necessary. * ******************************************************************************/ static ACPI_STATUS AcpiDmCommonAscendingOp ( ACPI_PARSE_OBJECT *Op, UINT32 Level, void *Context) { ACPI_OP_WALK_INFO *Info = Context; const ACPI_OPCODE_INFO *OpInfo; ACPI_OBJECT_TYPE ObjectType; /* Close scope if necessary */ OpInfo = AcpiPsGetOpcodeInfo (Op->Common.AmlOpcode); ObjectType = OpInfo->ObjectType; ObjectType = AslMapNamedOpcodeToDataType (Op->Asl.AmlOpcode); if (AcpiNsOpensScope (ObjectType)) { (void) AcpiDsScopeStackPop (Info->WalkState); } return (AE_OK); } /******************************************************************************* * * FUNCTION: AcpiDmInspectPossibleArgs * * PARAMETERS: CurrentOpArgCount - Which arg of the current op was the * possible method invocation found * TargetCount - Number of targets (0,1,2) for this op * Op - Parse op * * RETURN: Status * * DESCRIPTION: Examine following args and next ops for possible arguments * for an unrecognized method invocation. * ******************************************************************************/ static UINT32 AcpiDmInspectPossibleArgs ( UINT32 CurrentOpArgCount, UINT32 TargetCount, ACPI_PARSE_OBJECT *Op) { const ACPI_OPCODE_INFO *OpInfo; UINT32 i; UINT32 Last = 0; UINT32 Lookahead; Lookahead = (ACPI_METHOD_NUM_ARGS + TargetCount) - CurrentOpArgCount; /* Lookahead for the maximum number of possible arguments */ for (i = 0; i < Lookahead; i++) { if (!Op) { break; } OpInfo = AcpiPsGetOpcodeInfo (Op->Common.AmlOpcode); /* * Any one of these operators is "very probably" not a method arg */ if ((Op->Common.AmlOpcode == AML_STORE_OP) || (Op->Common.AmlOpcode == AML_NOTIFY_OP)) { break; } if ((OpInfo->Class != AML_CLASS_EXECUTE) && (OpInfo->Class != AML_CLASS_CONTROL)) { Last = i+1; } Op = Op->Common.Next; } return (Last); } src/acpica/source/common/ahids.c000077500000000000000000000330341231470457100171230ustar00rootroot00000000000000/****************************************************************************** * * Module Name: ahids - Table of ACPI/PNP _HID/_CID values * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #include "acpi.h" #include "accommon.h" #define _COMPONENT ACPI_UTILITIES ACPI_MODULE_NAME ("ahids") /* * ACPI/PNP Device IDs with description strings */ const AH_DEVICE_ID AslDeviceIds[] = { {"10EC5640", "Realtek I2S Audio Codec"}, {"80860F0A", "Intel Atom UART Controller"}, {"80860F14", "Intel Baytrail SDIO/MMC Host Controller"}, {"80860F28", "Intel SST Audio DSP"}, {"80860F41", "Intel Baytrail I2C Host Controller"}, {"ACPI0001", "SMBus 1.0 Host Controller"}, {"ACPI0002", "Smart Battery Subsystem"}, {"ACPI0003", "Power Source Device"}, {"ACPI0004", "Module Device"}, {"ACPI0005", "SMBus 2.0 Host Controller"}, {"ACPI0006", "GPE Block Device"}, {"ACPI0007", "Processor Device"}, {"ACPI0008", "Ambient Light Sensor Device"}, {"ACPI0009", "I/O xAPIC Device"}, {"ACPI000A", "I/O APIC Device"}, {"ACPI000B", "I/O SAPIC Device"}, {"ACPI000C", "Processor Aggregator Device"}, {"ACPI000D", "Power Meter Device"}, {"ACPI000E", "Time and Alarm Device"}, {"ACPI000F", "User Presence Detection Device"}, {"ATK4001", "Asus Radio Control Button"}, {"ATML1000", "Atmel Touchscreen Controller"}, {"BCM2E39", "Broadcom BT Serial Bus Driver over UART Bus Enumerator"}, {"CPLM3218", "Capella Micro CM3218x Ambient Light Sensor"}, {"DELLABCE", "Dell Airplane Mode Switch Driver"}, {"DLAC3002", "Qualcomm Atheros Bluetooth UART Transport"}, {"INT0002", "Virtual GPIO Controller"}, {"INT0800", "Intel 82802 Firmware Hub Device"}, {"INT3394", "ACPI System Fan"}, {"INT3396", "Standard Power Management Controller"}, {"INT33A0", "Intel Smart Connect Technology Device"}, {"INT33A1", "Intel Power Engine"}, {"INT33BB", "Intel Baytrail SD Host Controller"}, {"INT33BD", "Intel Baytrail Mailbox Device"}, {"INT33C0", "Intel Serial I/O SPI Host Controller"}, {"INT33C1", "Intel Serial I/O SPI Host Controller"}, {"INT33C2", "Intel Serial I/O I2C Host Controller"}, {"INT33C3", "Intel Serial I/O I2C Host Controller"}, {"INT33C4", "Intel Serial I/O UART Host Controller"}, {"INT33C5", "Intel Serial I/O UART Host Controller"}, {"INT33C6", "Intel SD Host Controller"}, {"INT33C7", "Intel Serial I/O GPIO Host Controller"}, {"INT33C8", "Intel Smart Sound Technology Host Controller"}, {"INT33C9", "Wolfson Microelectronics Audio WM5102"}, {"INT33CA", "Intel SPB Peripheral"}, {"INT33CB", "Intel Smart Sound Technology Audio Codec"}, {"INT33D1", "Intel GPIO Buttons"}, {"INT33D2", "Intel GPIO Buttons"}, {"INT33D3", "Intel GPIO Buttons"}, {"INT33D4", "Intel GPIO Buttons"}, {"INT33D6", "Intel Virtual Buttons Device"}, {"INT33F0", "Camera Sensor MT9M114"}, {"INT33FB", "MIPI-CSI Camera Sensor OV2722"}, {"INT33FC", "Intel Baytrail GPIO Controller"}, {"INT33FD", "Intel Baytrail Power Management IC"}, {"INT3400", "Intel Dynamic Power Performance Management"}, {"INT3401", "Intel Extended Thermal Model CPU"}, {"INT3403", "DPTF Temperature Sensor"}, {"INT3406", "Intel Dynamic Platform & Thermal Framework Display Participant"}, {"INT3407", "DPTF Platform Power Meter"}, {"INT340E", "Motherboard Resources"}, {"INT3420", "Intel Bluetooth RF Kill"}, {"INT3F0D", "ACPI Motherboard Resources"}, {"INTCF1A", "Sony IMX175 Camera Sensor"}, {"INTCFD9", "Intel Baytrail SOC GPIO Controller"}, {"INTL9C60", "Intel Baytrail SOC DMA Controller"}, {"INVN6500", "InvenSense MPU-6500 Six Axis Gyroscope and Accelerometer"}, {"LNXCPU", "Linux Logical CPU"}, {"LNXPOWER", "ACPI Power Resource (power gating)"}, {"LNXPWRBN", "System Power Button"}, {"LNXSYBUS", "System Bus"}, {"LNXSYSTM", "ACPI Root Node"}, {"LNXTHERM", "ACPI Thermal Zone"}, {"LNXVIDEO", "ACPI Video Controller"}, {"MSFT0101", "TPM 2.0 Security Device"}, {"NXP5442", "NXP 5442 Near Field Communications Controller"}, {"PNP0000", "8259-compatible Programmable Interrupt Controller"}, {"PNP0001", "EISA Interrupt Controller"}, {"PNP0002", "MCA Interrupt Controller"}, {"PNP0003", "IO-APIC Interrupt Controller"}, {"PNP0100", "PC-class System Timer"}, {"PNP0103", "HPET System Timer"}, {"PNP0200", "PC-class DMA Controller"}, {"PNP0300", "IBM PC/XT Keyboard Controller (83 key)"}, {"PNP0301", "IBM PC/XT Keyboard Controller (86 key)"}, {"PNP0302", "IBM PC/XT Keyboard Controller (84 key)"}, {"PNP0303", "IBM Enhanced Keyboard (101/102-key, PS/2 Mouse)"}, {"PNP0400", "Standard LPT Parallel Port"}, {"PNP0401", "ECP Parallel Port"}, {"PNP0500", "Standard PC COM Serial Port"}, {"PNP0501", "16550A-compatible COM Serial Port"}, {"PNP0510", "Generic IRDA-compatible Device"}, {"PNP0800", "Microsoft Sound System Compatible Device"}, {"PNP0A03", "PCI Bus"}, {"PNP0A05", "Generic Container Device"}, {"PNP0A06", "Generic Container Device"}, {"PNP0A08", "PCI Express Bus"}, {"PNP0B00", "AT Real-Time Clock"}, {"PNP0B01", "Intel PIIX4-compatible RTC/CMOS Device"}, {"PNP0B02", "Dallas Semiconductor-compatible RTC/CMOS Device"}, {"PNP0C01", "System Board"}, {"PNP0C02", "PNP Motherboard Resources"}, {"PNP0C04", "x87-compatible Floating Point Processing Unit"}, {"PNP0C08", "ACPI Core Hardware"}, {"PNP0C09", "Embedded Controller Device"}, {"PNP0C0A", "Control Method Battery"}, {"PNP0C0B", "Fan (Thermal Solution)"}, {"PNP0C0C", "Power Button Device"}, {"PNP0C0D", "Lid Device"}, {"PNP0C0E", "Sleep Button Device"}, {"PNP0C0F", "PCI Interrupt Link Device"}, {"PNP0C10", "System Indicator Device"}, {"PNP0C11", "Thermal Zone"}, {"PNP0C12", "Device Bay Controller"}, {"PNP0C14", "Windows Management Instrumentation Device"}, {"PNP0C15", "Docking Station"}, {"PNP0C40", "Standard Button Controller"}, {"PNP0C50", "HID Protocol Device (I2C bus)"}, {"PNP0C60", "Display Sensor Device"}, {"PNP0C70", "Dock Sensor Device"}, {"PNP0C80", "Memory Device"}, {"PNP0D40", "Standard Compliant SD Host Controller"}, {"PNP0D80", "Windows-compatible System Power Management Controller"}, {"PNP0F03", "Microsoft PS/2-style Mouse"}, {"SMO91D0", "Sensor Hub"}, {NULL, NULL} }; /******************************************************************************* * * FUNCTION: AcpiAhMatchHardwareId * * PARAMETERS: HardwareId - String representation of an _HID or _CID * * RETURN: ID info struct. NULL if HardwareId is not found * * DESCRIPTION: Lookup an _HID/_CID in the device ID table * ******************************************************************************/ const AH_DEVICE_ID * AcpiAhMatchHardwareId ( char *HardwareId) { const AH_DEVICE_ID *Info; for (Info = AslDeviceIds; Info->Name; Info++) { if (!ACPI_STRCMP (HardwareId, Info->Name)) { return (Info); } } return (NULL); } src/acpica/source/common/ahpredef.c000066400000000000000000001014241231470457100176050ustar00rootroot00000000000000/****************************************************************************** * * Module Name: ahpredef - Table of all known ACPI predefined names * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #include "acpi.h" #include "accommon.h" #define _COMPONENT ACPI_UTILITIES ACPI_MODULE_NAME ("ahpredef") /* * iASL only needs a partial table (short descriptions only). * AcpiHelp needs the full table. */ #ifdef ACPI_ASL_COMPILER #define AH_PREDEF(Name, ShortDesc, LongDesc) {Name, ShortDesc} #else #define AH_PREDEF(Name, ShortDesc, LongDesc) {Name, ShortDesc, LongDesc} #endif /* * Predefined ACPI names, with short description and return value. * This table was extracted directly from the ACPI specification. */ const AH_PREDEFINED_NAME AslPredefinedInfo[] = { AH_PREDEF ("_ACx", "Active Cooling", "Returns the active cooling policy threshold values"), AH_PREDEF ("_ADR", "Address", "Returns address of a device on parent bus, and resource field"), AH_PREDEF ("_AEI", "ACPI Event Interrupts", "Returns a list of GPIO events to be used as ACPI events"), AH_PREDEF ("_ALC", "Ambient Light Chromaticity", "Returns the ambient light color chromaticity"), AH_PREDEF ("_ALI", "Ambient Light Illuminance", "Returns the ambient light brightness"), AH_PREDEF ("_ALN", "Alignment", "Base alignment, Resource Descriptor field"), AH_PREDEF ("_ALP", "Ambient Light Polling", "Returns the ambient light sensor polling frequency"), AH_PREDEF ("_ALR", "Ambient Light Response", "Returns the ambient light brightness to display brightness mappings"), AH_PREDEF ("_ALT", "Ambient Light Temperature", "Returns the ambient light color temperature"), AH_PREDEF ("_ALx", "Active List", "Returns a list of active cooling device objects"), AH_PREDEF ("_ART", "Active Cooling Relationship Table", "Returns thermal relationship information between platform devices and fan devices"), AH_PREDEF ("_ASI", "Address Space Id", "Resource Descriptor field"), AH_PREDEF ("_ASZ", "Access Size", "Resource Descriptor field"), AH_PREDEF ("_ATT", "Type-Specific Attribute", "Resource Descriptor field"), AH_PREDEF ("_BAS", "Base Address", "Range base address, Resource Descriptor field"), AH_PREDEF ("_BBN", "BIOS Bus Number", "Returns the PCI bus number returned by the BIOS"), AH_PREDEF ("_BCL", "Brightness Control Levels", "Returns a list of supported brightness control levels"), AH_PREDEF ("_BCM", "Brightness Control Method", "Sets the brightness level of the display device"), AH_PREDEF ("_BCT", "Battery Charge Time", "Returns time remaining to complete charging battery"), AH_PREDEF ("_BDN", "BIOS Dock Name", "Returns the Dock ID returned by the BIOS"), AH_PREDEF ("_BFS", "Back From Sleep", "Inform AML of a wake event"), AH_PREDEF ("_BIF", "Battery Information", "Returns a Control Method Battery information block"), AH_PREDEF ("_BIX", "Battery Information Extended", "Returns a Control Method Battery extended information block"), AH_PREDEF ("_BLT", "Battery Level Threshold", "Set battery level threshold preferences"), AH_PREDEF ("_BM_", "Bus Master", "Resource Descriptor field"), AH_PREDEF ("_BMA", "Battery Measurement Averaging Interval", "Sets battery measurement averaging interval"), AH_PREDEF ("_BMC", "Battery Maintenance Control", "Sets battery maintenance and control features"), AH_PREDEF ("_BMD", "Battery Maintenance Data", "Returns battery maintenance, control, and state data"), AH_PREDEF ("_BMS", "Battery Measurement Sampling Time", "Sets the battery measurement sampling time"), AH_PREDEF ("_BQC", "Brightness Query Current", "Returns the current display brightness level"), AH_PREDEF ("_BST", "Battery Status", "Returns a Control Method Battery status block"), AH_PREDEF ("_BTM", "Battery Time", "Returns the battery runtime"), AH_PREDEF ("_BTP", "Battery Trip Point", "Sets a Control Method Battery trip point"), AH_PREDEF ("_CBA", "Configuration Base Address", "Sets the base address for a PCI Express host bridge"), AH_PREDEF ("_CDM", "Clock Domain", "Returns a logical processor's clock domain identifier"), AH_PREDEF ("_CID", "Compatible ID", "Returns a device's Plug and Play Compatible ID list"), AH_PREDEF ("_CLS", "Class Code", "Returns PCI class code and subclass"), AH_PREDEF ("_CPC", "Continuous Performance Control", "Returns a list of performance control interfaces"), AH_PREDEF ("_CRS", "Current Resource Settings", "Returns the current resource settings for a device"), AH_PREDEF ("_CRT", "Critical Temperature", "Returns the shutdown critical temperature"), AH_PREDEF ("_CSD", "C-State Dependencies", "Returns a list of C-state dependencies"), AH_PREDEF ("_CST", "C-States", "Returns a list of supported C-states"), AH_PREDEF ("_CWS", "Clear Wake Alarm Status", "Clear the status of wake alarms"), AH_PREDEF ("_DBT", "Debounce Timeout", "Timeout value, Resource Descriptor field"), AH_PREDEF ("_DCK", "Dock Present", "Sets docking isolation. Presence indicates device is a docking station"), AH_PREDEF ("_DCS", "Display Current Status", "Returns status of the display output device"), AH_PREDEF ("_DDC", "Display Data Current", "Returns the EDID for the display output device"), AH_PREDEF ("_DDN", "DOS Device Name", "Returns a device logical name"), AH_PREDEF ("_DEC", "Decode", "Device decoding type, Resource Descriptor field"), AH_PREDEF ("_DEP", "Dependencies", "Returns a list of operation region dependencies"), AH_PREDEF ("_DGS", "Display Graphics State", "Return the current state of the output device"), AH_PREDEF ("_DIS", "Disable Device", "Disables a device"), AH_PREDEF ("_DLM", "Device Lock Mutex", "Defines mutex for OS/AML sharing"), AH_PREDEF ("_DMA", "Direct Memory Access", "Returns device current resources for DMA transactions, and resource field"), AH_PREDEF ("_DOD", "Display Output Devices", "Enumerate all devices attached to the display adapter"), AH_PREDEF ("_DOS", "Disable Output Switching", "Sets the display output switching mode"), AH_PREDEF ("_DPL", "Device Selection Polarity", "Polarity of Device Selection signal, Resource Descriptor field"), AH_PREDEF ("_DRS", "Drive Strength", "Drive Strength setting for GPIO connection, Resource Descriptor field"), AH_PREDEF ("_DSM", "Device-Specific Method", "Executes device-specific functions"), AH_PREDEF ("_DSS", "Device Set State", "Sets the display device state"), AH_PREDEF ("_DSW", "Device Sleep Wake", "Sets the sleep and wake transition states for a device"), AH_PREDEF ("_DTI", "Device Temperature Indication", "Conveys native device temperature to the platform"), AH_PREDEF ("_Exx", "Edge-Triggered GPE", "Method executed as a result of a general-purpose event"), AH_PREDEF ("_EC_", "Embedded Controller", "returns EC offset and query information"), AH_PREDEF ("_EDL", "Eject Device List", "Returns a list of devices that are dependent on a device (docking)"), AH_PREDEF ("_EJD", "Ejection Dependent Device", "Returns the name of dependent (parent) device (docking)"), AH_PREDEF ("_EJx", "Eject Device", "Begin or cancel a device ejection request (docking)"), AH_PREDEF ("_END", "Endianness", "Endian orientation, Resource Descriptor field"), AH_PREDEF ("_EVT", "Event", "Event method for GPIO events"), AH_PREDEF ("_FDE", "Floppy Disk Enumerate", "Returns floppy disk configuration information"), AH_PREDEF ("_FDI", "Floppy Drive Information", "Returns a floppy drive information block"), AH_PREDEF ("_FDM", "Floppy Drive Mode", "Sets a floppy drive speed"), AH_PREDEF ("_FIF", "Fan Information", "Returns fan device information"), AH_PREDEF ("_FIX", "Fixed Register Resource Provider", "Returns a list of devices that implement FADT register blocks"), AH_PREDEF ("_FLC", "Flow Control", "Flow control, Resource Descriptor field"), AH_PREDEF ("_FPS", "Fan Performance States", "Returns a list of supported fan performance states"), AH_PREDEF ("_FSL", "Fan Set Level", "Control method that sets the fan device's speed level (performance state)"), AH_PREDEF ("_FST", "Fan Status", "Returns current status information for a fan device"), AH_PREDEF ("_GAI", "Get Averaging Interval", "Returns the power meter averaging interval"), AH_PREDEF ("_GCP", "Get Capabilities", "Get device time capabilities"), AH_PREDEF ("_GHL", "Get Hardware Limit", "Returns the hardware limit enforced by the power meter"), AH_PREDEF ("_GL_", "Global Lock", "OS-defined Global Lock mutex object"), AH_PREDEF ("_GLK", "Get Global Lock Requirement", "Returns a device's Global Lock requirement for device access"), AH_PREDEF ("_GPD", "Get Post Data", "Returns the value of the VGA device that will be posted at boot"), AH_PREDEF ("_GPE", "General Purpose Events", "Predefined scope (\\_GPE) or SCI number for EC"), AH_PREDEF ("_GRA", "Granularity", "Address space granularity, Resource Descriptor field"), AH_PREDEF ("_GRT", "Get Real Time", "Returns current time-of-day from a time/alarm device"), AH_PREDEF ("_GSB", "Global System Interrupt Base", "Returns the GSB for a I/O APIC device"), AH_PREDEF ("_GTF", "Get Task File", "Returns a list of ATA commands to restore a drive to default state"), AH_PREDEF ("_GTM", "Get Timing Mode", "Returns a list of IDE controller timing information"), AH_PREDEF ("_GTS", "Going To Sleep", "Inform AML of pending sleep"), AH_PREDEF ("_GWS", "Get Wake Status", "Return status of wake alarms"), AH_PREDEF ("_HE_", "High-Edge", "Interrupt triggering, Resource Descriptor field"), AH_PREDEF ("_HID", "Hardware ID", "Returns a device's Plug and Play Hardware ID"), AH_PREDEF ("_HOT", "Hot Temperature", "Returns the critical temperature for sleep (entry to S4)"), AH_PREDEF ("_HPP", "Hot Plug Parameters", "Returns a list of hot-plug information for a PCI device"), AH_PREDEF ("_HPX", "Hot Plug Parameter Extensions", "Returns a list of hot-plug information for a PCI device. Supersedes _HPP"), AH_PREDEF ("_HRV", "Hardware Revision", "Returns a hardware revision value"), AH_PREDEF ("_IFT", "IPMI Interface Type", "See the Intelligent Platform Management Interface Specification"), AH_PREDEF ("_INI", "Initialize", "Performs device specific initialization"), AH_PREDEF ("_INT", "Interrupts", "Interrupt mask bits, Resource Descriptor field"), AH_PREDEF ("_IOR", "I/O Restriction", "Restriction type, Resource Descriptor field"), AH_PREDEF ("_IRC", "Inrush Current", "Presence indicates that a device has a significant inrush current draw"), AH_PREDEF ("_Lxx", "Level-Triggered GPE", "Control method executed as a result of a general-purpose event"), AH_PREDEF ("_LCK", "Lock Device", "Locks or unlocks a device (docking)"), AH_PREDEF ("_LEN", "Length", "Range length, Resource Descriptor field"), AH_PREDEF ("_LID", "Lid Status", "Returns the open/closed status of the lid on a mobile system"), AH_PREDEF ("_LIN", "Lines In Use", "Handshake lines, Resource Descriptor field"), AH_PREDEF ("_LL_", "Low Level", "Interrupt polarity, Resource Descriptor field"), AH_PREDEF ("_MAF", "Maximum Address Fixed", "Resource Descriptor field"), AH_PREDEF ("_MAT", "Multiple APIC Table Entry", "Returns a list of MADT APIC structure entries"), AH_PREDEF ("_MAX", "Maximum Base Address", "Resource Descriptor field"), AH_PREDEF ("_MBM", "Memory Bandwidth Monitoring Data", "Returns bandwidth monitoring data for a memory device"), AH_PREDEF ("_MEM", "Memory Attributes", "Resource Descriptor field"), AH_PREDEF ("_MIF", "Minimum Address Fixed", "Resource Descriptor field"), AH_PREDEF ("_MIN", "Minimum Base Address", "Resource Descriptor field"), AH_PREDEF ("_MLS", "Multiple Language String", "Returns a device description in multiple languages"), AH_PREDEF ("_MOD", "Mode", "Interrupt mode, Resource Descriptor field"), AH_PREDEF ("_MSG", "Message", "Sets the system message waiting status indicator"), AH_PREDEF ("_MSM", "Memory Set Monitoring", "Sets bandwidth monitoring parameters for a memory device"), AH_PREDEF ("_MTP", "Memory Type", "Resource Descriptor field"), AH_PREDEF ("_NTT", "Notification Temperature Threshold", "Returns a threshold for device temperature change that requires platform notification"), AH_PREDEF ("_OFF", "Power Off", "Sets a power resource to the off state"), AH_PREDEF ("_ON_", "Power On", "Sets a power resource to the on state"), AH_PREDEF ("_OS_", "Operating System", "Returns a string that identifies the operating system"), AH_PREDEF ("_OSC", "Operating System Capabilities", "Inform AML of host features and capabilities"), AH_PREDEF ("_OSI", "Operating System Interfaces", "Returns supported interfaces, behaviors, and features"), AH_PREDEF ("_OST", "OSPM Status Indication", "Inform AML of event processing status"), AH_PREDEF ("_PAI", "Power Averaging Interval", "Sets the averaging interval for a power meter"), AH_PREDEF ("_PAR", "Parity", "Parity bits, Resource Descriptor field"), AH_PREDEF ("_PCL", "Power Consumer List", "Returns a list of devices powered by a power source"), AH_PREDEF ("_PCT", "Performance Control", "Returns processor performance control and status registers"), AH_PREDEF ("_PDC", "Processor Driver Capabilities", "Inform AML of processor driver capabilities"), AH_PREDEF ("_PDL", "P-state Depth Limit", "Returns the lowest available performance P-state"), AH_PREDEF ("_PHA", "Clock Phase", "Clock phase, Resource Descriptor field"), AH_PREDEF ("_PIC", "Interrupt Model", "Inform AML of the interrupt model in use"), AH_PREDEF ("_PIF", "Power Source Information", "Returns a Power Source information block"), AH_PREDEF ("_PIN", "Pin List", "Pin list, Resource Descriptor field"), AH_PREDEF ("_PLD", "Physical Location of Device", "Returns a device's physical location information"), AH_PREDEF ("_PMC", "Power Meter Capabilities", "Returns a list of Power Meter capabilities info"), AH_PREDEF ("_PMD", "Power Metered Devices", "Returns a list of devices that are measured by the power meter device"), AH_PREDEF ("_PMM", "Power Meter Measurement", "Returns the current value of the Power Meter"), AH_PREDEF ("_POL", "Polarity", "Interrupt polarity, Resource Descriptor field"), AH_PREDEF ("_PPC", "Performance Present Capabilites", "Returns a list of the performance states currently supported by the platform"), AH_PREDEF ("_PPE", "Polling for Platform Error", "Returns the polling interval to retrieve Corrected Platform Error information"), AH_PREDEF ("_PPI", "Pin Configuration", "Resource Descriptor field"), AH_PREDEF ("_PR", "Processor", "Predefined scope for processor objects"), AH_PREDEF ("_PR0", "Power Resources for D0", "Returns a list of dependent power resources to enter state D0 (fully on)"), AH_PREDEF ("_PR1", "Power Resources for D1", "Returns a list of dependent power resources to enter state D1"), AH_PREDEF ("_PR2", "Power Resources for D2", "Returns a list of dependent power resources to enter state D2"), AH_PREDEF ("_PR3", "Power Resources for D3hot", "Returns a list of dependent power resources to enter state D3hot"), AH_PREDEF ("_PRE", "Power Resources for Enumeration", "Returns a list of dependent power resources to enumerate devices on a bus"), AH_PREDEF ("_PRL", "Power Source Redundancy List", "Returns a list of power source devices in the same redundancy grouping"), AH_PREDEF ("_PRS", "Possible Resource Settings", "Returns a list of a device's possible resource settings"), AH_PREDEF ("_PRT", "PCI Routing Table", "Returns a list of PCI interrupt mappings"), AH_PREDEF ("_PRW", "Power Resources for Wake", "Returns a list of dependent power resources for waking"), AH_PREDEF ("_PS0", "Power State 0", "Sets a device's power state to D0 (device fully on)"), AH_PREDEF ("_PS1", "Power State 1", "Sets a device's power state to D1"), AH_PREDEF ("_PS2", "Power State 2", "Sets a device's power state to D2"), AH_PREDEF ("_PS3", "Power State 3", "Sets a device's power state to D3 (device off)"), AH_PREDEF ("_PSC", "Power State Current", "Returns a device's current power state"), AH_PREDEF ("_PSD", "Power State Dependencies", "Returns processor P-State dependencies"), AH_PREDEF ("_PSE", "Power State for Enumeration", "Put a bus into enumeration power mode"), AH_PREDEF ("_PSL", "Passive List", "Returns a list of passive cooling device objects"), AH_PREDEF ("_PSR", "Power Source", "Returns the power source device currently in use"), AH_PREDEF ("_PSS", "Performance Supported States", "Returns a list of supported processor performance states"), AH_PREDEF ("_PSV", "Passive Temperature", "Returns the passive trip point temperature"), AH_PREDEF ("_PSW", "Power State Wake", "Sets a device's wake function"), AH_PREDEF ("_PTC", "Processor Throttling Control", "Returns throttling control and status registers"), AH_PREDEF ("_PTP", "Power Trip Points", "Sets trip points for the Power Meter device"), AH_PREDEF ("_PTS", "Prepare To Sleep", "Inform the platform of an impending sleep transition"), AH_PREDEF ("_PUR", "Processor Utilization Request", "Returns the number of processors that the platform would like to idle"), AH_PREDEF ("_PXM", "Device Proximity", "Returns a device's proximity domain identifier"), AH_PREDEF ("_Qxx", "EC Query", "Embedded Controller query and SMBus Alarm control method"), AH_PREDEF ("_RBO", "Register Bit Offset", "Resource Descriptor field"), AH_PREDEF ("_RBW", "Register Bit Width", "Resource Descriptor field"), AH_PREDEF ("_REG", "Region Availability", "Inform AML code of an operation region availability change"), AH_PREDEF ("_REV", "Supported ACPI Revision", "Returns the revision of the ACPI specification that is implemented"), AH_PREDEF ("_RMV", "Removal Status", "Returns a device's removal ability status (docking)"), AH_PREDEF ("_RNG", "Range", "Memory range type, Resource Descriptor field"), AH_PREDEF ("_ROM", "Read-Only Memory", "Returns a copy of the ROM data for a display device"), AH_PREDEF ("_RT_", "Resource Type", "Resource Descriptor field"), AH_PREDEF ("_RTV", "Relative Temperature Values", "Returns temperature value information"), AH_PREDEF ("_RW_", "Read-Write Status", "Resource Descriptor field"), AH_PREDEF ("_RXL", "Receive Buffer Size", "Serial channel buffer, Resource Descriptor field"), AH_PREDEF ("_S0_", "S0 System State", "Returns values to enter the system into the S0 state"), AH_PREDEF ("_S1_", "S1 System State", "Returns values to enter the system into the S1 state"), AH_PREDEF ("_S2_", "S2 System State", "Returns values to enter the system into the S2 state"), AH_PREDEF ("_S3_", "S3 System State", "Returns values to enter the system into the S3 state"), AH_PREDEF ("_S4_", "S4 System State", "Returns values to enter the system into the S4 state"), AH_PREDEF ("_S5_", "S5 System State", "Returns values to enter the system into the S5 state"), AH_PREDEF ("_S1D", "S1 Device State", "Returns the highest D-state supported by a device when in the S1 state"), AH_PREDEF ("_S2D", "S2 Device State", "Returns the highest D-state supported by a device when in the S2 state"), AH_PREDEF ("_S3D", "S3 Device State", "Returns the highest D-state supported by a device when in the S3 state"), AH_PREDEF ("_S4D", "S4 Device State", "Returns the highest D-state supported by a device when in the S4 state"), AH_PREDEF ("_S0W", "S0 Device Wake State", "Returns the lowest D-state that the device can wake itself from S0"), AH_PREDEF ("_S1W", "S1 Device Wake State", "Returns the lowest D-state for this device that can wake the system from S1"), AH_PREDEF ("_S2W", "S2 Device Wake State", "Returns the lowest D-state for this device that can wake the system from S2"), AH_PREDEF ("_S3W", "S3 Device Wake State", "Returns the lowest D-state for this device that can wake the system from S3"), AH_PREDEF ("_S4W", "S4 Device Wake State", "Returns the lowest D-state for this device that can wake the system from S4"), AH_PREDEF ("_SB_", "System Bus", "Predefined scope for device and bus objects"), AH_PREDEF ("_SBS", "Smart Battery Subsystem", "Returns the subsystem configuration"), AH_PREDEF ("_SCP", "Set Cooling Policy", "Sets the cooling policy (active or passive)"), AH_PREDEF ("_SDD", "Set Device Data", "Sets data for a SATA device"), AH_PREDEF ("_SEG", "PCI Segment", "Returns a device's PCI Segment Group number"), AH_PREDEF ("_SHL", "Set Hardware Limit", "Sets the hardware limit enforced by the Power Meter"), AH_PREDEF ("_SHR", "Sharable", "Interrupt share status, Resource Descriptor field"), AH_PREDEF ("_SI_", "System Indicators", "Predefined scope"), AH_PREDEF ("_SIZ", "Size", "DMA transfer size, Resource Descriptor field"), AH_PREDEF ("_SLI", "System Locality Information", "Returns a list of NUMA system localities"), AH_PREDEF ("_SLV", "Slave Mode", "Mode setting, Resource Descriptor field"), AH_PREDEF ("_SPD", "Set Post Device", "Sets which video device will be posted at boot"), AH_PREDEF ("_SPE", "Speed", "Connection speed, Resource Descriptor field"), AH_PREDEF ("_SRS", "Set Resource Settings", "Sets a device's resource allocation"), AH_PREDEF ("_SRT", "Set Real Time", "Sets the current time for a time/alarm device"), AH_PREDEF ("_SRV", "IPMI Spec Revision", "See the Intelligent Platform Management Interface Specification"), AH_PREDEF ("_SST", "System Status", "Sets the system status indicator"), AH_PREDEF ("_STA", "Status", "Returns the current status of a Device or Power Resource"), AH_PREDEF ("_STB", "Stop Bits", "Serial channel stop bits, Resource Descriptor field"), AH_PREDEF ("_STM", "Set Timing Mode", "Sets an IDE controller transfer timings"), AH_PREDEF ("_STP", "Set Expired Timer Wake Policy", "Sets expired timer policies of the wake alarm device"), AH_PREDEF ("_STR", "Description String", "Returns a device's description string"), AH_PREDEF ("_STV", "Set Timer Value", "Set timer values of the wake alarm device"), AH_PREDEF ("_SUB", "Subsystem ID", "Returns the subsystem ID for a device"), AH_PREDEF ("_SUN", "Slot User Number", "Returns the slot unique ID number"), AH_PREDEF ("_SWS", "System Wake Source", "Returns the source event that caused the system to wake"), AH_PREDEF ("_T_x", "Emitted by ASL Compiler", "Reserved for use by ASL compilers"), AH_PREDEF ("_TC1", "Thermal Constant 1", "Returns TC1 for the passive cooling formula"), AH_PREDEF ("_TC2", "Thermal Constant 2", "Returns TC2 for the passive cooling formula"), AH_PREDEF ("_TDL", "T-State Depth Limit", "Returns the _TSS entry number of the lowest power throttling state"), AH_PREDEF ("_TIP", "Expired Timer Wake Policy", "Returns timer policies of the wake alarm device"), AH_PREDEF ("_TIV", "Timer Values", "Returns remaining time of the wake alarm device"), AH_PREDEF ("_TMP", "Temperature", "Returns a thermal zone's current temperature"), AH_PREDEF ("_TPC", "Throttling Present Capabilities", "Returns the current number of supported throttling states"), AH_PREDEF ("_TPT", "Trip Point Temperature", "Inform AML that a device's embedded temperature sensor has crossed a temperature trip point"), AH_PREDEF ("_TRA", "Translation", "Address translation offset, Resource Descriptor field"), AH_PREDEF ("_TRS", "Translation Sparse", "Sparse/dense flag, Resource Descriptor field"), AH_PREDEF ("_TRT", "Thermal Relationship Table", "Returns thermal relationships between platform devices"), AH_PREDEF ("_TSD", "Throttling State Dependencies", "Returns a list of T-state dependencies"), AH_PREDEF ("_TSF", "Type-Specific Flags", "Resource Descriptor field"), AH_PREDEF ("_TSP", "Thermal Sampling Period", "Returns the thermal sampling period for passive cooling"), AH_PREDEF ("_TSS", "Throttling Supported States", "Returns supported throttling state information"), AH_PREDEF ("_TST", "Temperature Sensor Threshold", "Returns the minimum separation for a device's temperature trip points"), AH_PREDEF ("_TTP", "Translation Type", "Translation/static flag, Resource Descriptor field"), AH_PREDEF ("_TTS", "Transition To State", "Inform AML of an S-state transition"), AH_PREDEF ("_TXL", "Transmit Buffer Size", "Serial Channel buffer, Resource Descriptor field"), AH_PREDEF ("_TYP", "Type", "DMA channel type (speed), Resource Descriptor field"), AH_PREDEF ("_TZ_", "Thermal Zone", "Predefined scope: ACPI 1.0"), AH_PREDEF ("_TZD", "Thermal Zone Devices", "Returns a list of device names associated with a Thermal Zone"), AH_PREDEF ("_TZM", "Thermal Zone Member", "Returns a reference to the thermal zone of which a device is a member"), AH_PREDEF ("_TZP", "Thermal Zone Polling", "Returns a Thermal zone's polling frequency"), AH_PREDEF ("_UID", "Unique ID", "Return a device's unique persistent ID"), AH_PREDEF ("_UPC", "USB Port Capabilities", "Returns a list of USB port capabilities"), AH_PREDEF ("_UPD", "User Presence Detect", "Returns user detection information"), AH_PREDEF ("_UPP", "User Presence Polling", "Returns the recommended user presence polling interval"), AH_PREDEF ("_VEN", "Vendor Data", "Resource Descriptor field"), AH_PREDEF ("_VPO", "Video Post Options", "Returns the implemented video post options"), AH_PREDEF ("_WAK", "Wake", "Inform AML that the system has just awakened"), AH_PREDEF ("_Wxx", "Wake Event", "Method executed as a result of a wake event"), AH_PREDEF (NULL, NULL, NULL) }; /******************************************************************************* * * FUNCTION: AcpiAhMatchPredefinedName * * PARAMETERS: Nameseg - Predefined name string * * RETURN: ID info struct. NULL if Nameseg not found * * DESCRIPTION: Lookup a predefined name. * ******************************************************************************/ const AH_PREDEFINED_NAME * AcpiAhMatchPredefinedName ( char *Nameseg) { const AH_PREDEFINED_NAME *Info; for (Info = AslPredefinedInfo; Info->Name; Info++) { if (ACPI_COMPARE_NAME (Nameseg, Info->Name)) { return (Info); } } return (NULL); } src/acpica/source/common/cmfsize.c000077500000000000000000000172201231470457100174720ustar00rootroot00000000000000/****************************************************************************** * * Module Name: cfsize - Common get file size function * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #include "acpi.h" #include "accommon.h" #include "acapps.h" #include #define _COMPONENT ACPI_TOOLS ACPI_MODULE_NAME ("cmfsize") /******************************************************************************* * * FUNCTION: CmGetFileSize * * PARAMETERS: File - Open file descriptor * * RETURN: File Size. On error, -1 (ACPI_UINT32_MAX) * * DESCRIPTION: Get the size of a file. Uses seek-to-EOF. File must be open. * Does not disturb the current file pointer. Uses perror for * error messages. * ******************************************************************************/ UINT32 CmGetFileSize ( FILE *File) { long FileSize; long CurrentOffset; /* Save the current file pointer, seek to EOF to obtain file size */ CurrentOffset = ftell (File); if (CurrentOffset < 0) { goto OffsetError; } if (fseek (File, 0, SEEK_END)) { goto SeekError; } FileSize = ftell (File); if (FileSize < 0) { goto OffsetError; } /* Restore original file pointer */ if (fseek (File, CurrentOffset, SEEK_SET)) { goto SeekError; } return ((UINT32) FileSize); OffsetError: perror ("Could not get file offset"); return (ACPI_UINT32_MAX); SeekError: perror ("Could not seek file"); return (ACPI_UINT32_MAX); } src/acpica/source/common/dmextern.c000066400000000000000000001302541231470457100176600ustar00rootroot00000000000000/****************************************************************************** * * Module Name: dmextern - Support for External() ASL statements * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #include "acpi.h" #include "accommon.h" #include "amlcode.h" #include "acnamesp.h" #include "acdisasm.h" #include "aslcompiler.h" #include #include /* * This module is used for application-level code (iASL disassembler) only. * * It contains the code to create and emit any necessary External() ASL * statements for the module being disassembled. */ #define _COMPONENT ACPI_CA_DISASSEMBLER ACPI_MODULE_NAME ("dmextern") /* * This table maps ACPI_OBJECT_TYPEs to the corresponding ASL * ObjectTypeKeyword. Used to generate typed external declarations */ static const char *AcpiGbl_DmTypeNames[] = { /* 00 */ ", UnknownObj", /* Type ANY */ /* 01 */ ", IntObj", /* 02 */ ", StrObj", /* 03 */ ", BuffObj", /* 04 */ ", PkgObj", /* 05 */ ", FieldUnitObj", /* 06 */ ", DeviceObj", /* 07 */ ", EventObj", /* 08 */ ", MethodObj", /* 09 */ ", MutexObj", /* 10 */ ", OpRegionObj", /* 11 */ ", PowerResObj", /* 12 */ ", ProcessorObj", /* 13 */ ", ThermalZoneObj", /* 14 */ ", BuffFieldObj", /* 15 */ ", DDBHandleObj", /* 16 */ "", /* Debug object */ /* 17 */ ", FieldUnitObj", /* 18 */ ", FieldUnitObj", /* 19 */ ", FieldUnitObj" }; #define METHOD_SEPARATORS " \t,()\n" /* Local prototypes */ static const char * AcpiDmGetObjectTypeName ( ACPI_OBJECT_TYPE Type); static char * AcpiDmNormalizeParentPrefix ( ACPI_PARSE_OBJECT *Op, char *Path); static void AcpiDmAddPathToExternalList ( char *Path, UINT8 Type, UINT32 Value, UINT16 Flags); static ACPI_STATUS AcpiDmCreateNewExternal ( char *ExternalPath, char *InternalPath, UINT8 Type, UINT32 Value, UINT16 Flags); /******************************************************************************* * * FUNCTION: AcpiDmGetObjectTypeName * * PARAMETERS: Type - An ACPI_OBJECT_TYPE * * RETURN: Pointer to a string * * DESCRIPTION: Map an object type to the ASL object type string. * ******************************************************************************/ static const char * AcpiDmGetObjectTypeName ( ACPI_OBJECT_TYPE Type) { if (Type == ACPI_TYPE_LOCAL_SCOPE) { Type = ACPI_TYPE_DEVICE; } else if (Type > ACPI_TYPE_LOCAL_INDEX_FIELD) { return (""); } return (AcpiGbl_DmTypeNames[Type]); } /******************************************************************************* * * FUNCTION: AcpiDmNormalizeParentPrefix * * PARAMETERS: Op - Parse op * Path - Path with parent prefix * * RETURN: The full pathname to the object (from the namespace root) * * DESCRIPTION: Returns the full pathname of a path with parent prefix * The caller must free the fullpath returned. * ******************************************************************************/ static char * AcpiDmNormalizeParentPrefix ( ACPI_PARSE_OBJECT *Op, char *Path) { ACPI_NAMESPACE_NODE *Node; char *Fullpath; char *ParentPath; ACPI_SIZE Length; UINT32 Index = 0; if (!Op) { return (NULL); } /* Search upwards in the parse tree until we reach the next namespace node */ Op = Op->Common.Parent; while (Op) { if (Op->Common.Node) { break; } Op = Op->Common.Parent; } if (!Op) { return (NULL); } /* * Find the actual parent node for the reference: * Remove all carat prefixes from the input path. * There may be multiple parent prefixes (For example, ^^^M000) */ Node = Op->Common.Node; while (Node && (*Path == (UINT8) AML_PARENT_PREFIX)) { Node = Node->Parent; Path++; } if (!Node) { return (NULL); } /* Get the full pathname for the parent node */ ParentPath = AcpiNsGetExternalPathname (Node); if (!ParentPath) { return (NULL); } 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++; /* For External() statements, we do not want a leading '\' */ if (*ParentPath == AML_ROOT_PREFIX) { Index = 1; } } Fullpath = ACPI_ALLOCATE_ZEROED (Length); if (!Fullpath) { goto Cleanup; } /* * Concatenate parent fullpath and path. For example, * parent fullpath "\_SB_", Path "^INIT", Fullpath "\_SB_.INIT" * * Copy the parent path */ ACPI_STRCPY (Fullpath, &ParentPath[Index]); /* * Add dot separator * (don't need dot if parent fullpath is a single backslash) */ if (ParentPath[1]) { ACPI_STRCAT (Fullpath, "."); } /* Copy child path (carat parent prefix(es) were skipped above) */ ACPI_STRCAT (Fullpath, Path); Cleanup: ACPI_FREE (ParentPath); return (Fullpath); } /******************************************************************************* * * FUNCTION: AcpiDmAddToExternalFileList * * PARAMETERS: PathList - Single path or list separated by comma * * RETURN: None * * DESCRIPTION: Add external files to global list * ******************************************************************************/ ACPI_STATUS AcpiDmAddToExternalFileList ( char *Pathname) { ACPI_EXTERNAL_FILE *ExternalFile; char *LocalPathname; if (!Pathname) { return (AE_OK); } LocalPathname = ACPI_ALLOCATE (strlen (Pathname) + 1); if (!LocalPathname) { return (AE_NO_MEMORY); } ExternalFile = ACPI_ALLOCATE_ZEROED (sizeof (ACPI_EXTERNAL_FILE)); if (!ExternalFile) { ACPI_FREE (LocalPathname); return (AE_NO_MEMORY); } /* Take a copy of the file pathname */ strcpy (LocalPathname, Pathname); ExternalFile->Path = LocalPathname; if (AcpiGbl_ExternalFileList) { ExternalFile->Next = AcpiGbl_ExternalFileList; } AcpiGbl_ExternalFileList = ExternalFile; return (AE_OK); } /******************************************************************************* * * FUNCTION: AcpiDmClearExternalFileList * * PARAMETERS: None * * RETURN: None * * DESCRIPTION: Clear the external file list * ******************************************************************************/ void AcpiDmClearExternalFileList ( void) { ACPI_EXTERNAL_FILE *NextExternal; while (AcpiGbl_ExternalFileList) { NextExternal = AcpiGbl_ExternalFileList->Next; ACPI_FREE (AcpiGbl_ExternalFileList->Path); ACPI_FREE (AcpiGbl_ExternalFileList); AcpiGbl_ExternalFileList = NextExternal; } } /******************************************************************************* * * FUNCTION: AcpiDmGetExternalsFromFile * * PARAMETERS: None * * RETURN: None * * DESCRIPTION: Process the optional external reference file. * * Each line in the file should be of the form: * External (, MethodObj, ) * * Example: * External (_SB_.PCI0.XHC_.PS0X, MethodObj, 4) * ******************************************************************************/ void AcpiDmGetExternalsFromFile ( void) { FILE *ExternalRefFile; char *Token; char *MethodName; UINT32 ArgCount; UINT32 ImportCount = 0; if (!Gbl_ExternalRefFilename) { return; } /* Open the file */ ExternalRefFile = fopen (Gbl_ExternalRefFilename, "r"); if (!ExternalRefFile) { fprintf (stderr, "Could not open external reference file \"%s\"\n", Gbl_ExternalRefFilename); AslAbort (); return; } /* Each line defines a method */ while (fgets (StringBuffer, ASL_MSG_BUFFER_SIZE, ExternalRefFile)) { Token = strtok (StringBuffer, METHOD_SEPARATORS); /* "External" */ if (!Token) continue; if (strcmp (Token, "External")) continue; MethodName = strtok (NULL, METHOD_SEPARATORS); /* Method namepath */ if (!MethodName) continue; Token = strtok (NULL, METHOD_SEPARATORS); /* "MethodObj" */ if (!Token) continue; if (strcmp (Token, "MethodObj")) continue; Token = strtok (NULL, METHOD_SEPARATORS); /* Arg count */ if (!Token) continue; /* Convert arg count string to an integer */ errno = 0; ArgCount = strtoul (Token, NULL, 0); if (errno) { fprintf (stderr, "Invalid argument count (%s)\n", Token); continue; } if (ArgCount > 7) { fprintf (stderr, "Invalid argument count (%u)\n", ArgCount); continue; } /* Add this external to the global list */ AcpiOsPrintf ("%s: Importing method external (%u arguments) %s\n", Gbl_ExternalRefFilename, ArgCount, MethodName); AcpiDmAddPathToExternalList (MethodName, ACPI_TYPE_METHOD, ArgCount, (ACPI_EXT_RESOLVED_REFERENCE | ACPI_EXT_ORIGIN_FROM_FILE)); ImportCount++; } if (!ImportCount) { fprintf (stderr, "Did not find any external methods in reference file \"%s\"\n", Gbl_ExternalRefFilename); } else { /* Add the external(s) to the namespace */ AcpiDmAddExternalsToNamespace (); AcpiOsPrintf ("%s: Imported %u external method definitions\n", Gbl_ExternalRefFilename, ImportCount); } fclose (ExternalRefFile); } /******************************************************************************* * * FUNCTION: AcpiDmAddOpToExternalList * * PARAMETERS: Op - Current parser Op * Path - Internal (AML) path to the object * Type - ACPI object type to be added * Value - Arg count if adding a Method object * Flags - To be passed to the external object * * RETURN: None * * DESCRIPTION: Insert a new name into the global list of Externals which * will in turn be later emitted as an External() declaration * in the disassembled output. * * This function handles the most common case where the referenced * name is simply not found in the constructed namespace. * ******************************************************************************/ void AcpiDmAddOpToExternalList ( ACPI_PARSE_OBJECT *Op, char *Path, UINT8 Type, UINT32 Value, UINT16 Flags) { char *ExternalPath; char *InternalPath = Path; char *Temp; ACPI_STATUS Status; ACPI_FUNCTION_TRACE (DmAddOpToExternalList); if (!Path) { return_VOID; } /* Remove a root backslash if present */ if ((*Path == AML_ROOT_PREFIX) && (Path[1])) { Path++; } /* Externalize the pathname */ Status = AcpiNsExternalizeName (ACPI_UINT32_MAX, Path, NULL, &ExternalPath); if (ACPI_FAILURE (Status)) { return_VOID; } /* * Get the full pathname from the root if "Path" has one or more * parent prefixes (^). Note: path will not contain a leading '\'. */ if (*Path == (UINT8) AML_PARENT_PREFIX) { Temp = AcpiDmNormalizeParentPrefix (Op, ExternalPath); /* Set new external path */ ACPI_FREE (ExternalPath); ExternalPath = Temp; if (!Temp) { return_VOID; } /* Create the new internal pathname */ Flags |= ACPI_EXT_INTERNAL_PATH_ALLOCATED; Status = AcpiNsInternalizeName (ExternalPath, &InternalPath); if (ACPI_FAILURE (Status)) { ACPI_FREE (ExternalPath); return_VOID; } } /* Create the new External() declaration node */ Status = AcpiDmCreateNewExternal (ExternalPath, InternalPath, Type, Value, Flags); if (ACPI_FAILURE (Status)) { ACPI_FREE (ExternalPath); if (Flags & ACPI_EXT_INTERNAL_PATH_ALLOCATED) { ACPI_FREE (InternalPath); } } return_VOID; } /******************************************************************************* * * FUNCTION: AcpiDmAddNodeToExternalList * * PARAMETERS: Node - Namespace node for object to be added * Type - ACPI object type to be added * Value - Arg count if adding a Method object * Flags - To be passed to the external object * * RETURN: None * * DESCRIPTION: Insert a new name into the global list of Externals which * will in turn be later emitted as an External() declaration * in the disassembled output. * * This function handles the case where the referenced name has * been found in the namespace, but the name originated in a * table other than the one that is being disassembled (such * as a table that is added via the iASL -e option). * ******************************************************************************/ void AcpiDmAddNodeToExternalList ( ACPI_NAMESPACE_NODE *Node, UINT8 Type, UINT32 Value, UINT16 Flags) { char *ExternalPath; char *InternalPath; char *Temp; ACPI_STATUS Status; ACPI_FUNCTION_TRACE (DmAddNodeToExternalList); if (!Node) { return_VOID; } /* Get the full external and internal pathnames to the node */ ExternalPath = AcpiNsGetExternalPathname (Node); if (!ExternalPath) { return_VOID; } Status = AcpiNsInternalizeName (ExternalPath, &InternalPath); if (ACPI_FAILURE (Status)) { ACPI_FREE (ExternalPath); return_VOID; } /* Remove the root backslash */ if ((*ExternalPath == AML_ROOT_PREFIX) && (ExternalPath[1])) { Temp = ACPI_ALLOCATE_ZEROED (ACPI_STRLEN (ExternalPath) + 1); if (!Temp) { return_VOID; } ACPI_STRCPY (Temp, &ExternalPath[1]); ACPI_FREE (ExternalPath); ExternalPath = Temp; } /* Create the new External() declaration node */ Status = AcpiDmCreateNewExternal (ExternalPath, InternalPath, Type, Value, (Flags | ACPI_EXT_INTERNAL_PATH_ALLOCATED)); if (ACPI_FAILURE (Status)) { ACPI_FREE (ExternalPath); ACPI_FREE (InternalPath); } return_VOID; } /******************************************************************************* * * FUNCTION: AcpiDmAddPathToExternalList * * PARAMETERS: Path - External name of the object to be added * Type - ACPI object type to be added * Value - Arg count if adding a Method object * Flags - To be passed to the external object * * RETURN: None * * DESCRIPTION: Insert a new name into the global list of Externals which * will in turn be later emitted as an External() declaration * in the disassembled output. * * This function currently is used to add externals via a * reference file (via the -fe iASL option). * ******************************************************************************/ static void AcpiDmAddPathToExternalList ( char *Path, UINT8 Type, UINT32 Value, UINT16 Flags) { char *InternalPath; char *ExternalPath; ACPI_STATUS Status; ACPI_FUNCTION_TRACE (DmAddPathToExternalList); if (!Path) { return_VOID; } /* Remove a root backslash if present */ if ((*Path == AML_ROOT_PREFIX) && (Path[1])) { Path++; } /* Create the internal and external pathnames */ Status = AcpiNsInternalizeName (Path, &InternalPath); if (ACPI_FAILURE (Status)) { return_VOID; } Status = AcpiNsExternalizeName (ACPI_UINT32_MAX, InternalPath, NULL, &ExternalPath); if (ACPI_FAILURE (Status)) { ACPI_FREE (InternalPath); return_VOID; } /* Create the new External() declaration node */ Status = AcpiDmCreateNewExternal (ExternalPath, InternalPath, Type, Value, (Flags | ACPI_EXT_INTERNAL_PATH_ALLOCATED)); if (ACPI_FAILURE (Status)) { ACPI_FREE (ExternalPath); ACPI_FREE (InternalPath); } return_VOID; } /******************************************************************************* * * FUNCTION: AcpiDmCreateNewExternal * * PARAMETERS: ExternalPath - External path to the object * InternalPath - Internal (AML) path to the object * Type - ACPI object type to be added * Value - Arg count if adding a Method object * Flags - To be passed to the external object * * RETURN: Status * * DESCRIPTION: Common low-level function to insert a new name into the global * list of Externals which will in turn be later emitted as * External() declarations in the disassembled output. * * Note: The external name should not include a root prefix * (backslash). We do not want External() statements to contain * a leading '\', as this prevents duplicate external statements * of the form: * * External (\ABCD) * External (ABCD) * * This would cause a compile time error when the disassembled * output file is recompiled. * * There are two cases that are handled here. For both, we emit * an External() statement: * 1) The name was simply not found in the namespace. * 2) The name was found, but it originated in a table other than * the table that is being disassembled. * ******************************************************************************/ static ACPI_STATUS AcpiDmCreateNewExternal ( char *ExternalPath, char *InternalPath, UINT8 Type, UINT32 Value, UINT16 Flags) { ACPI_EXTERNAL_LIST *NewExternal; ACPI_EXTERNAL_LIST *NextExternal; ACPI_EXTERNAL_LIST *PrevExternal = NULL; ACPI_FUNCTION_TRACE (DmCreateNewExternal); /* Check all existing externals to ensure no duplicates */ NextExternal = AcpiGbl_ExternalList; while (NextExternal) { if (!ACPI_STRCMP (ExternalPath, NextExternal->Path)) { /* Duplicate method, check that the Value (ArgCount) is the same */ if ((NextExternal->Type == ACPI_TYPE_METHOD) && (NextExternal->Value != Value) && (Value > 0)) { ACPI_ERROR ((AE_INFO, "External method arg count mismatch %s: Current %u, attempted %u", NextExternal->Path, NextExternal->Value, Value)); } /* Allow upgrade of type from ANY */ else if (NextExternal->Type == ACPI_TYPE_ANY) { NextExternal->Type = Type; NextExternal->Value = Value; } return_ACPI_STATUS (AE_ALREADY_EXISTS); } NextExternal = NextExternal->Next; } /* Allocate and init a new External() descriptor */ NewExternal = ACPI_ALLOCATE_ZEROED (sizeof (ACPI_EXTERNAL_LIST)); if (!NewExternal) { return_ACPI_STATUS (AE_NO_MEMORY); } ACPI_DEBUG_PRINT ((ACPI_DB_NAMES, "Adding external reference node (%s) type [%s]\n", ExternalPath, AcpiUtGetTypeName (Type))); NewExternal->Flags = Flags; NewExternal->Value = Value; NewExternal->Path = ExternalPath; NewExternal->Type = Type; NewExternal->Length = (UINT16) ACPI_STRLEN (ExternalPath); NewExternal->InternalPath = InternalPath; /* Link the new descriptor into the global list, alphabetically ordered */ NextExternal = AcpiGbl_ExternalList; while (NextExternal) { if (AcpiUtStricmp (NewExternal->Path, NextExternal->Path) < 0) { if (PrevExternal) { PrevExternal->Next = NewExternal; } else { AcpiGbl_ExternalList = NewExternal; } NewExternal->Next = NextExternal; return_ACPI_STATUS (AE_OK); } PrevExternal = NextExternal; NextExternal = NextExternal->Next; } if (PrevExternal) { PrevExternal->Next = NewExternal; } else { AcpiGbl_ExternalList = NewExternal; } return_ACPI_STATUS (AE_OK); } /******************************************************************************* * * FUNCTION: AcpiDmAddExternalsToNamespace * * PARAMETERS: None * * RETURN: None * * DESCRIPTION: Add all externals to the namespace. Allows externals to be * "resolved". * ******************************************************************************/ void AcpiDmAddExternalsToNamespace ( void) { ACPI_STATUS Status; ACPI_NAMESPACE_NODE *Node; ACPI_OPERAND_OBJECT *ObjDesc; ACPI_EXTERNAL_LIST *External = AcpiGbl_ExternalList; while (External) { /* Add the external name (object) into the namespace */ Status = AcpiNsLookup (NULL, External->InternalPath, External->Type, ACPI_IMODE_LOAD_PASS1, ACPI_NS_ERROR_IF_FOUND | ACPI_NS_EXTERNAL | ACPI_NS_DONT_OPEN_SCOPE, NULL, &Node); if (ACPI_FAILURE (Status)) { ACPI_EXCEPTION ((AE_INFO, Status, "while adding external to namespace [%s]", External->Path)); } else switch (External->Type) { case ACPI_TYPE_METHOD: /* For methods, we need to save the argument count */ ObjDesc = AcpiUtCreateInternalObject (ACPI_TYPE_METHOD); ObjDesc->Method.ParamCount = (UINT8) External->Value; Node->Object = ObjDesc; break; case ACPI_TYPE_REGION: /* Regions require a region sub-object */ ObjDesc = AcpiUtCreateInternalObject (ACPI_TYPE_REGION); ObjDesc->Region.Node = Node; Node->Object = ObjDesc; break; default: break; } External = External->Next; } } /******************************************************************************* * * FUNCTION: AcpiDmGetExternalMethodCount * * PARAMETERS: None * * RETURN: The number of control method externals in the external list * * DESCRIPTION: Return the number of method externals that have been generated. * If any control method externals have been found, we must * re-parse the entire definition block with the new information * (number of arguments for the methods.) This is limitation of * AML, we don't know the number of arguments from the control * method invocation itself. * ******************************************************************************/ UINT32 AcpiDmGetExternalMethodCount ( void) { ACPI_EXTERNAL_LIST *External = AcpiGbl_ExternalList; UINT32 Count = 0; while (External) { if (External->Type == ACPI_TYPE_METHOD) { Count++; } External = External->Next; } return (Count); } /******************************************************************************* * * FUNCTION: AcpiDmClearExternalList * * PARAMETERS: None * * RETURN: None * * DESCRIPTION: Free the entire External info list * ******************************************************************************/ void AcpiDmClearExternalList ( void) { ACPI_EXTERNAL_LIST *NextExternal; while (AcpiGbl_ExternalList) { NextExternal = AcpiGbl_ExternalList->Next; ACPI_FREE (AcpiGbl_ExternalList->Path); ACPI_FREE (AcpiGbl_ExternalList); AcpiGbl_ExternalList = NextExternal; } } /******************************************************************************* * * FUNCTION: AcpiDmEmitExternals * * PARAMETERS: None * * RETURN: None * * DESCRIPTION: Emit an External() ASL statement for each of the externals in * the global external info list. * ******************************************************************************/ void AcpiDmEmitExternals ( void) { ACPI_EXTERNAL_LIST *NextExternal; if (!AcpiGbl_ExternalList) { return; } /* * Determine the number of control methods in the external list, and * also how many of those externals were resolved via the namespace. */ NextExternal = AcpiGbl_ExternalList; while (NextExternal) { if (NextExternal->Type == ACPI_TYPE_METHOD) { AcpiGbl_NumExternalMethods++; if (NextExternal->Flags & ACPI_EXT_RESOLVED_REFERENCE) { AcpiGbl_ResolvedExternalMethods++; } } NextExternal = NextExternal->Next; } /* Check if any control methods were unresolved */ AcpiDmUnresolvedWarning (1); /* Emit any unresolved method externals in a single text block */ NextExternal = AcpiGbl_ExternalList; while (NextExternal) { if ((NextExternal->Type == ACPI_TYPE_METHOD) && (!(NextExternal->Flags & ACPI_EXT_RESOLVED_REFERENCE))) { AcpiOsPrintf (" External (%s%s", NextExternal->Path, AcpiDmGetObjectTypeName (NextExternal->Type)); AcpiOsPrintf (") // Warning: Unresolved method, " "guessing %u arguments\n", NextExternal->Value); NextExternal->Flags |= ACPI_EXT_EXTERNAL_EMITTED; } NextExternal = NextExternal->Next; } AcpiOsPrintf ("\n"); /* Emit externals that were imported from a file */ if (Gbl_ExternalRefFilename) { AcpiOsPrintf ( " /*\n * External declarations that were imported from\n" " * the reference file [%s]\n */\n", Gbl_ExternalRefFilename); NextExternal = AcpiGbl_ExternalList; while (NextExternal) { if (!(NextExternal->Flags & ACPI_EXT_EXTERNAL_EMITTED) && (NextExternal->Flags & ACPI_EXT_ORIGIN_FROM_FILE)) { AcpiOsPrintf (" External (%s%s", NextExternal->Path, AcpiDmGetObjectTypeName (NextExternal->Type)); if (NextExternal->Type == ACPI_TYPE_METHOD) { AcpiOsPrintf (") // %u Arguments\n", NextExternal->Value); } else { AcpiOsPrintf (")\n"); } NextExternal->Flags |= ACPI_EXT_EXTERNAL_EMITTED; } NextExternal = NextExternal->Next; } AcpiOsPrintf ("\n"); } /* * Walk the list of externals found during the AML parsing */ while (AcpiGbl_ExternalList) { if (!(AcpiGbl_ExternalList->Flags & ACPI_EXT_EXTERNAL_EMITTED)) { AcpiOsPrintf (" External (%s%s", AcpiGbl_ExternalList->Path, AcpiDmGetObjectTypeName (AcpiGbl_ExternalList->Type)); /* For methods, add a comment with the number of arguments */ if (AcpiGbl_ExternalList->Type == ACPI_TYPE_METHOD) { AcpiOsPrintf (") // %u Arguments\n", AcpiGbl_ExternalList->Value); } else { AcpiOsPrintf (")\n"); } } /* Free this external info block and move on to next external */ NextExternal = AcpiGbl_ExternalList->Next; if (AcpiGbl_ExternalList->Flags & ACPI_EXT_INTERNAL_PATH_ALLOCATED) { ACPI_FREE (AcpiGbl_ExternalList->InternalPath); } ACPI_FREE (AcpiGbl_ExternalList->Path); ACPI_FREE (AcpiGbl_ExternalList); AcpiGbl_ExternalList = NextExternal; } AcpiOsPrintf ("\n"); } /******************************************************************************* * * FUNCTION: AcpiDmUnresolvedWarning * * PARAMETERS: Type - Where to output the warning. * 0 means write to stderr * 1 means write to AcpiOsPrintf * * RETURN: None * * DESCRIPTION: Issue warning message if there are unresolved external control * methods within the disassembly. * ******************************************************************************/ #if 0 Summary of the external control method problem: When the -e option is used with disassembly, the various SSDTs are simply loaded into a global namespace for the disassembler to use in order to resolve control method references (invocations). The disassembler tracks any such references, and will emit an External() statement for these types of methods, with the proper number of arguments . Without the SSDTs, the AML does not contain enough information to properly disassemble the control method invocation -- because the disassembler does not know how many arguments to parse. An example: Assume we have two control methods. ABCD has one argument, and EFGH has zero arguments. Further, we have two additional control methods that invoke ABCD and EFGH, named T1 and T2: Method (ABCD, 1) { } Method (EFGH, 0) { } Method (T1) { ABCD (Add (2, 7, Local0)) } Method (T2) { EFGH () Add (2, 7, Local0) } Here is the AML code that is generated for T1 and T2: 185: Method (T1) 0000034C: 14 10 54 31 5F 5F 00 ... "..T1__." 186: { 187: ABCD (Add (2, 7, Local0)) 00000353: 41 42 43 44 ............ "ABCD" 00000357: 72 0A 02 0A 07 60 ...... "r....`" 188: } 190: Method (T2) 0000035D: 14 10 54 32 5F 5F 00 ... "..T2__." 191: { 192: EFGH () 00000364: 45 46 47 48 ............ "EFGH" 193: Add (2, 7, Local0) 00000368: 72 0A 02 0A 07 60 ...... "r....`" 194: } Note that the AML code for T1 and T2 is essentially identical. When disassembling this code, the methods ABCD and EFGH must be known to the disassembler, otherwise it does not know how to handle the method invocations. In other words, if ABCD and EFGH are actually external control methods appearing in an SSDT, the disassembler does not know what to do unless the owning SSDT has been loaded via the -e option. #endif void AcpiDmUnresolvedWarning ( UINT8 Type) { if (!AcpiGbl_NumExternalMethods) { return; } if (Type) { if (!AcpiGbl_ExternalFileList) { /* The -e option was not specified */ AcpiOsPrintf (" /*\n" " * iASL Warning: There were %u external control methods found during\n" " * disassembly, but additional ACPI tables to resolve these externals\n" " * were not specified. This resulting disassembler output file may not\n" " * compile because the disassembler did not know how many arguments\n" " * to assign to these methods. To specify the tables needed to resolve\n" " * external control method references, the -e option can be used to\n" " * specify the filenames. Example iASL invocations:\n" " * iasl -e ssdt1.aml ssdt2.aml ssdt3.aml -d dsdt.aml\n" " * iasl -e dsdt.aml ssdt2.aml -d ssdt1.aml\n" " * iasl -e ssdt*.aml -d dsdt.aml\n" " *\n" " * In addition, the -fe option can be used to specify a file containing\n" " * control method external declarations with the associated method\n" " * argument counts. Each line of the file must be of the form:\n" " * External (, MethodObj, )\n" " * Invocation:\n" " * iasl -fe refs.txt -d dsdt.aml\n" " *\n" " * The following methods were unresolved and many not compile properly\n" " * because the disassembler had to guess at the number of arguments\n" " * required for each:\n" " */\n", AcpiGbl_NumExternalMethods); } else if (AcpiGbl_NumExternalMethods != AcpiGbl_ResolvedExternalMethods) { /* The -e option was specified, but there are still some unresolved externals */ AcpiOsPrintf (" /*\n" " * iASL Warning: There were %u external control methods found during\n" " * disassembly, but only %u %s resolved (%u unresolved). Additional\n" " * ACPI tables may be required to properly disassemble the code. This\n" " * resulting disassembler output file may not compile because the\n" " * disassembler did not know how many arguments to assign to the\n" " * unresolved methods.\n" " *\n" " * If necessary, the -fe option can be used to specify a file containing\n" " * control method external declarations with the associated method\n" " * argument counts. Each line of the file must be of the form:\n" " * External (, MethodObj, )\n" " * Invocation:\n" " * iasl -fe refs.txt -d dsdt.aml\n" " *\n" " * The following methods were unresolved and many not compile properly\n" " * because the disassembler had to guess at the number of arguments\n" " * required for each:\n" " */\n", AcpiGbl_NumExternalMethods, AcpiGbl_ResolvedExternalMethods, (AcpiGbl_ResolvedExternalMethods > 1 ? "were" : "was"), (AcpiGbl_NumExternalMethods - AcpiGbl_ResolvedExternalMethods)); } } else { if (!AcpiGbl_ExternalFileList) { /* The -e option was not specified */ fprintf (stderr, "\n" "iASL Warning: There were %u external control methods found during\n" "disassembly, but additional ACPI tables to resolve these externals\n" "were not specified. The resulting disassembler output file may not\n" "compile because the disassembler did not know how many arguments\n" "to assign to these methods. To specify the tables needed to resolve\n" "external control method references, the -e option can be used to\n" "specify the filenames. Example iASL invocations:\n" " iasl -e ssdt1.aml ssdt2.aml ssdt3.aml -d dsdt.aml\n" " iasl -e dsdt.aml ssdt2.aml -d ssdt1.aml\n" " iasl -e ssdt*.aml -d dsdt.aml\n" "\n" "In addition, the -fe option can be used to specify a file containing\n" "control method external declarations with the associated method\n" "argument counts. Each line of the file must be of the form:\n" " External (, MethodObj, )\n" "Invocation:\n" " iasl -fe refs.txt -d dsdt.aml\n", AcpiGbl_NumExternalMethods); } else if (AcpiGbl_NumExternalMethods != AcpiGbl_ResolvedExternalMethods) { /* The -e option was specified, but there are still some unresolved externals */ fprintf (stderr, "\n" "iASL Warning: There were %u external control methods found during\n" "disassembly, but only %u %s resolved (%u unresolved). Additional\n" "ACPI tables may be required to properly disassemble the code. The\n" "resulting disassembler output file may not compile because the\n" "disassembler did not know how many arguments to assign to the\n" "unresolved methods.\n" "\n" "If necessary, the -fe option can be used to specify a file containing\n" "control method external declarations with the associated method\n" "argument counts. Each line of the file must be of the form:\n" " External (, MethodObj, )\n" "Invocation:\n" " iasl -fe refs.txt -d dsdt.aml\n", AcpiGbl_NumExternalMethods, AcpiGbl_ResolvedExternalMethods, (AcpiGbl_ResolvedExternalMethods > 1 ? "were" : "was"), (AcpiGbl_NumExternalMethods - AcpiGbl_ResolvedExternalMethods)); } } } src/acpica/source/common/dmrestag.c000066400000000000000000001113761231470457100176440ustar00rootroot00000000000000/****************************************************************************** * * Module Name: dmrestag - Add tags to resource descriptors (Application-level) * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #include "acpi.h" #include "accommon.h" #include "acparser.h" #include "acdisasm.h" #include "acnamesp.h" #include "amlcode.h" /* This module used for application-level code only */ #define _COMPONENT ACPI_CA_DISASSEMBLER ACPI_MODULE_NAME ("dmrestag") /* Local prototypes */ static void AcpiDmUpdateResourceName ( ACPI_NAMESPACE_NODE *ResourceNode); static char * AcpiDmSearchTagList ( UINT32 BitIndex, const ACPI_RESOURCE_TAG *TagList); static char * AcpiDmGetResourceTag ( UINT32 BitIndex, AML_RESOURCE *Resource, UINT8 ResourceIndex); static char * AcpiGetTagPathname ( ACPI_PARSE_OBJECT *Op, ACPI_NAMESPACE_NODE *BufferNode, ACPI_NAMESPACE_NODE *ResourceNode, UINT32 BitIndex); static ACPI_NAMESPACE_NODE * AcpiDmGetResourceNode ( ACPI_NAMESPACE_NODE *BufferNode, UINT32 BitIndex); static ACPI_STATUS AcpiDmAddResourceToNamespace ( UINT8 *Aml, UINT32 Length, UINT32 Offset, UINT8 ResourceIndex, void **Context); static void AcpiDmAddResourcesToNamespace ( ACPI_NAMESPACE_NODE *BufferNode, ACPI_PARSE_OBJECT *Op); /****************************************************************************** * * Resource Tag tables * * These are the predefined tags that refer to elements of a resource * descriptor. Each name and offset is defined in the ACPI specification. * * Each table entry contains the bit offset of the field and the associated * name. * ******************************************************************************/ static const ACPI_RESOURCE_TAG AcpiDmIrqTags[] = { {( 1 * 8), ACPI_RESTAG_INTERRUPT}, {( 3 * 8) + 0, ACPI_RESTAG_INTERRUPTTYPE}, {( 3 * 8) + 3, ACPI_RESTAG_INTERRUPTLEVEL}, {( 3 * 8) + 4, ACPI_RESTAG_INTERRUPTSHARE}, {0, NULL} }; static const ACPI_RESOURCE_TAG AcpiDmDmaTags[] = { {( 1 * 8), ACPI_RESTAG_DMA}, {( 2 * 8) + 0, ACPI_RESTAG_XFERTYPE}, {( 2 * 8) + 2, ACPI_RESTAG_BUSMASTER}, {( 2 * 8) + 5, ACPI_RESTAG_DMATYPE}, {0, NULL} }; static const ACPI_RESOURCE_TAG AcpiDmIoTags[] = { {( 1 * 8) + 0, ACPI_RESTAG_DECODE}, {( 2 * 8), ACPI_RESTAG_MINADDR}, {( 4 * 8), ACPI_RESTAG_MAXADDR}, {( 6 * 8), ACPI_RESTAG_ALIGNMENT}, {( 7 * 8), ACPI_RESTAG_LENGTH}, {0, NULL} }; static const ACPI_RESOURCE_TAG AcpiDmFixedIoTags[] = { {( 1 * 8), ACPI_RESTAG_BASEADDRESS}, {( 3 * 8), ACPI_RESTAG_LENGTH}, {0, NULL} }; static const ACPI_RESOURCE_TAG AcpiDmFixedDmaTags[] = { {( 1 * 8), ACPI_RESTAG_DMA}, {( 3 * 8), ACPI_RESTAG_DMATYPE}, {( 5 * 8), ACPI_RESTAG_XFERTYPE}, {0, NULL} }; static const ACPI_RESOURCE_TAG AcpiDmMemory24Tags[] = { {( 3 * 8) + 0, ACPI_RESTAG_READWRITETYPE}, {( 4 * 8), ACPI_RESTAG_MINADDR}, {( 6 * 8), ACPI_RESTAG_MAXADDR}, {( 8 * 8), ACPI_RESTAG_ALIGNMENT}, {(10 * 8), ACPI_RESTAG_LENGTH}, {0, NULL} }; static const ACPI_RESOURCE_TAG AcpiDmRegisterTags[] = { {( 3 * 8), ACPI_RESTAG_ADDRESSSPACE}, {( 4 * 8), ACPI_RESTAG_REGISTERBITWIDTH}, {( 5 * 8), ACPI_RESTAG_REGISTERBITOFFSET}, {( 6 * 8), ACPI_RESTAG_ACCESSSIZE}, {( 7 * 8), ACPI_RESTAG_ADDRESS}, {0, NULL} }; static const ACPI_RESOURCE_TAG AcpiDmMemory32Tags[] = { {( 3 * 8) + 0, ACPI_RESTAG_READWRITETYPE}, {( 4 * 8), ACPI_RESTAG_MINADDR}, {( 8 * 8), ACPI_RESTAG_MAXADDR}, {(12 * 8), ACPI_RESTAG_ALIGNMENT}, {(16 * 8), ACPI_RESTAG_LENGTH}, {0, NULL} }; static const ACPI_RESOURCE_TAG AcpiDmFixedMemory32Tags[] = { {( 3 * 8) + 0, ACPI_RESTAG_READWRITETYPE}, {( 4 * 8), ACPI_RESTAG_BASEADDRESS}, {( 8 * 8), ACPI_RESTAG_LENGTH}, {0, NULL} }; static const ACPI_RESOURCE_TAG AcpiDmInterruptTags[] = { {( 3 * 8) + 1, ACPI_RESTAG_INTERRUPTTYPE}, {( 3 * 8) + 2, ACPI_RESTAG_INTERRUPTLEVEL}, {( 3 * 8) + 3, ACPI_RESTAG_INTERRUPTSHARE}, {( 5 * 8), ACPI_RESTAG_INTERRUPT}, {0, NULL} }; static const ACPI_RESOURCE_TAG AcpiDmAddress16Tags[] = { {( 4 * 8) + 1, ACPI_RESTAG_DECODE}, {( 4 * 8) + 2, ACPI_RESTAG_MINTYPE}, {( 4 * 8) + 3, ACPI_RESTAG_MAXTYPE}, {( 6 * 8), ACPI_RESTAG_GRANULARITY}, {( 8 * 8), ACPI_RESTAG_MINADDR}, {(10 * 8), ACPI_RESTAG_MAXADDR}, {(12 * 8), ACPI_RESTAG_TRANSLATION}, {(14 * 8), ACPI_RESTAG_LENGTH}, {0, NULL} }; static const ACPI_RESOURCE_TAG AcpiDmAddress32Tags[] = { {( 4 * 8) + 1, ACPI_RESTAG_DECODE}, {( 4 * 8) + 2, ACPI_RESTAG_MINTYPE}, {( 4 * 8) + 3, ACPI_RESTAG_MAXTYPE}, {( 6 * 8), ACPI_RESTAG_GRANULARITY}, {(10 * 8), ACPI_RESTAG_MINADDR}, {(14 * 8), ACPI_RESTAG_MAXADDR}, {(18 * 8), ACPI_RESTAG_TRANSLATION}, {(22 * 8), ACPI_RESTAG_LENGTH}, {0, NULL} }; static const ACPI_RESOURCE_TAG AcpiDmAddress64Tags[] = { {( 4 * 8) + 1, ACPI_RESTAG_DECODE}, {( 4 * 8) + 2, ACPI_RESTAG_MINTYPE}, {( 4 * 8) + 3, ACPI_RESTAG_MAXTYPE}, {( 6 * 8), ACPI_RESTAG_GRANULARITY}, {(14 * 8), ACPI_RESTAG_MINADDR}, {(22 * 8), ACPI_RESTAG_MAXADDR}, {(30 * 8), ACPI_RESTAG_TRANSLATION}, {(38 * 8), ACPI_RESTAG_LENGTH}, {0, NULL} }; static const ACPI_RESOURCE_TAG AcpiDmExtendedAddressTags[] = { {( 4 * 8) + 1, ACPI_RESTAG_DECODE}, {( 4 * 8) + 2, ACPI_RESTAG_MINTYPE}, {( 4 * 8) + 3, ACPI_RESTAG_MAXTYPE}, {( 8 * 8), ACPI_RESTAG_GRANULARITY}, {(16 * 8), ACPI_RESTAG_MINADDR}, {(24 * 8), ACPI_RESTAG_MAXADDR}, {(32 * 8), ACPI_RESTAG_TRANSLATION}, {(40 * 8), ACPI_RESTAG_LENGTH}, {(48 * 8), ACPI_RESTAG_TYPESPECIFICATTRIBUTES}, {0, NULL} }; /* Subtype tables for GPIO descriptors */ static const ACPI_RESOURCE_TAG AcpiDmGpioIntTags[] = { {( 7 * 8) + 0, ACPI_RESTAG_MODE}, {( 7 * 8) + 1, ACPI_RESTAG_POLARITY}, {( 7 * 8) + 3, ACPI_RESTAG_INTERRUPTSHARE}, {( 9 * 8), ACPI_RESTAG_PINCONFIG}, {(10 * 8), ACPI_RESTAG_DRIVESTRENGTH}, {(12 * 8), ACPI_RESTAG_DEBOUNCETIME}, {0, NULL} }; static const ACPI_RESOURCE_TAG AcpiDmGpioIoTags[] = { {( 7 * 8) + 0, ACPI_RESTAG_IORESTRICTION}, {( 7 * 8) + 3, ACPI_RESTAG_INTERRUPTSHARE}, {( 9 * 8), ACPI_RESTAG_PINCONFIG}, {(10 * 8), ACPI_RESTAG_DRIVESTRENGTH}, {(12 * 8), ACPI_RESTAG_DEBOUNCETIME}, {0, NULL} }; /* Subtype tables for SerialBus descriptors */ static const ACPI_RESOURCE_TAG AcpiDmI2cSerialBusTags[] = { {( 6 * 8) + 0, ACPI_RESTAG_SLAVEMODE}, {( 7 * 8) + 0, ACPI_RESTAG_MODE}, {(12 * 8), ACPI_RESTAG_SPEED}, {(16 * 8), ACPI_RESTAG_ADDRESS}, {0, NULL} }; static const ACPI_RESOURCE_TAG AcpiDmSpiSerialBusTags[] = { {( 6 * 8) + 0, ACPI_RESTAG_SLAVEMODE}, {( 7 * 8) + 0, ACPI_RESTAG_MODE}, {( 7 * 8) + 1, ACPI_RESTAG_DEVICEPOLARITY}, {(12 * 8), ACPI_RESTAG_SPEED}, {(16 * 8), ACPI_RESTAG_LENGTH}, {(17 * 8), ACPI_RESTAG_PHASE}, {(18 * 8), ACPI_RESTAG_POLARITY}, {(19 * 8), ACPI_RESTAG_ADDRESS}, {0, NULL} }; static const ACPI_RESOURCE_TAG AcpiDmUartSerialBusTags[] = { {( 6 * 8) + 0, ACPI_RESTAG_SLAVEMODE}, /* Note: not part of original macro */ {( 7 * 8) + 0, ACPI_RESTAG_FLOWCONTROL}, {( 7 * 8) + 2, ACPI_RESTAG_STOPBITS}, {( 7 * 8) + 4, ACPI_RESTAG_LENGTH}, {( 7 * 8) + 7, ACPI_RESTAG_ENDIANNESS}, {(12 * 8), ACPI_RESTAG_SPEED}, {(16 * 8), ACPI_RESTAG_LENGTH_RX}, {(18 * 8), ACPI_RESTAG_LENGTH_TX}, {(20 * 8), ACPI_RESTAG_PARITY}, {(21 * 8), ACPI_RESTAG_LINE}, {0, NULL} }; /* Subtype tables for Address descriptor type-specific flags */ static const ACPI_RESOURCE_TAG AcpiDmMemoryFlagTags[] = { {( 5 * 8) + 0, ACPI_RESTAG_READWRITETYPE}, {( 5 * 8) + 1, ACPI_RESTAG_MEMTYPE}, {( 5 * 8) + 3, ACPI_RESTAG_MEMATTRIBUTES}, {( 5 * 8) + 5, ACPI_RESTAG_TYPE}, {0, NULL} }; static const ACPI_RESOURCE_TAG AcpiDmIoFlagTags[] = { {( 5 * 8) + 0, ACPI_RESTAG_RANGETYPE}, {( 5 * 8) + 4, ACPI_RESTAG_TYPE}, {( 5 * 8) + 5, ACPI_RESTAG_TRANSTYPE}, {0, NULL} }; /* * Dispatch table used to obtain the correct tag table for a descriptor. * * A NULL in this table means one of three things: * 1) The descriptor ID is reserved and invalid * 2) The descriptor has no tags associated with it * 3) The descriptor has subtypes and a separate table will be used. */ static const ACPI_RESOURCE_TAG *AcpiGbl_ResourceTags[] = { /* Small descriptors */ NULL, /* 0x00, Reserved */ NULL, /* 0x01, Reserved */ NULL, /* 0x02, Reserved */ NULL, /* 0x03, Reserved */ AcpiDmIrqTags, /* 0x04, ACPI_RESOURCE_NAME_IRQ_FORMAT */ AcpiDmDmaTags, /* 0x05, ACPI_RESOURCE_NAME_DMA_FORMAT */ NULL, /* 0x06, ACPI_RESOURCE_NAME_START_DEPENDENT */ NULL, /* 0x07, ACPI_RESOURCE_NAME_END_DEPENDENT */ AcpiDmIoTags, /* 0x08, ACPI_RESOURCE_NAME_IO_PORT */ AcpiDmFixedIoTags, /* 0x09, ACPI_RESOURCE_NAME_FIXED_IO_PORT */ AcpiDmFixedDmaTags, /* 0x0A, ACPI_RESOURCE_NAME_FIXED_DMA */ NULL, /* 0x0B, Reserved */ NULL, /* 0x0C, Reserved */ NULL, /* 0x0D, Reserved */ NULL, /* 0x0E, ACPI_RESOURCE_NAME_SMALL_VENDOR */ NULL, /* 0x0F, ACPI_RESOURCE_NAME_END_TAG (not used) */ /* Large descriptors */ NULL, /* 0x00, Reserved */ AcpiDmMemory24Tags, /* 0x01, ACPI_RESOURCE_NAME_MEMORY_24 */ AcpiDmRegisterTags, /* 0x02, ACPI_RESOURCE_NAME_GENERIC_REGISTER */ NULL, /* 0x03, Reserved */ NULL, /* 0x04, ACPI_RESOURCE_NAME_LARGE_VENDOR */ AcpiDmMemory32Tags, /* 0x05, ACPI_RESOURCE_NAME_MEMORY_32 */ AcpiDmFixedMemory32Tags, /* 0x06, ACPI_RESOURCE_NAME_FIXED_MEMORY_32 */ AcpiDmAddress32Tags, /* 0x07, ACPI_RESOURCE_NAME_DWORD_ADDRESS_SPACE */ AcpiDmAddress16Tags, /* 0x08, ACPI_RESOURCE_NAME_WORD_ADDRESS_SPACE */ AcpiDmInterruptTags, /* 0x09, ACPI_RESOURCE_NAME_EXTENDED_XRUPT */ AcpiDmAddress64Tags, /* 0x0A, ACPI_RESOURCE_NAME_QWORD_ADDRESS_SPACE */ AcpiDmExtendedAddressTags, /* 0x0B, ACPI_RESOURCE_NAME_EXTENDED_ADDRESS_SPACE */ NULL, /* 0x0C, ACPI_RESOURCE_NAME_GPIO - Use Subtype table below */ NULL, /* 0x0D, Reserved */ NULL /* 0x0E, ACPI_RESOURCE_NAME_SERIAL_BUS - Use Subtype table below */ }; /* GPIO Subtypes */ static const ACPI_RESOURCE_TAG *AcpiGbl_GpioResourceTags[] = { AcpiDmGpioIntTags, /* 0x00 Interrupt Connection */ AcpiDmGpioIoTags /* 0x01 I/O Connection */ }; /* Serial Bus Subtypes */ static const ACPI_RESOURCE_TAG *AcpiGbl_SerialResourceTags[] = { NULL, /* 0x00 Reserved */ AcpiDmI2cSerialBusTags, /* 0x01 I2C SerialBus */ AcpiDmSpiSerialBusTags, /* 0x02 SPI SerialBus */ AcpiDmUartSerialBusTags /* 0x03 UART SerialBus */ }; /* * Globals used to generate unique resource descriptor names. We use names that * start with underscore and a prefix letter that is not used by other ACPI * reserved names. To this, we append hex 0x00 through 0xFF. These 5 prefixes * allow for 5*256 = 1280 unique names, probably sufficient for any single ASL * file. If this becomes too small, we can use alpha+numerals for a total * of 5*36*36 = 6480. */ #define ACPI_NUM_RES_PREFIX 5 static UINT32 AcpiGbl_NextResourceId = 0; static UINT8 AcpiGbl_NextPrefix = 0; static char AcpiGbl_Prefix[ACPI_NUM_RES_PREFIX] = {'Y','Z','J','K','X'}; /******************************************************************************* * * FUNCTION: AcpiDmCheckResourceReference * * PARAMETERS: Op - Parse Op for the AML opcode * WalkState - Current walk state (with valid scope) * * RETURN: None * * DESCRIPTION: Convert a reference to a resource descriptor to a symbolic * reference if possible * * NOTE: Bit index is used to transparently handle both resource bit * fields and byte fields. * ******************************************************************************/ void AcpiDmCheckResourceReference ( ACPI_PARSE_OBJECT *Op, ACPI_WALK_STATE *WalkState) { ACPI_STATUS Status; ACPI_PARSE_OBJECT *BufferNameOp; ACPI_PARSE_OBJECT *IndexOp; ACPI_NAMESPACE_NODE *BufferNode; ACPI_NAMESPACE_NODE *ResourceNode; const ACPI_OPCODE_INFO *OpInfo; UINT32 BitIndex; /* We are only interested in the CreateXxxxField opcodes */ OpInfo = AcpiPsGetOpcodeInfo (Op->Common.AmlOpcode); if (OpInfo->Type != AML_TYPE_CREATE_FIELD) { return; } /* Get the buffer term operand */ BufferNameOp = AcpiPsGetDepthNext (NULL, Op); /* Must be a named buffer, not an arg or local or method call */ if (BufferNameOp->Common.AmlOpcode != AML_INT_NAMEPATH_OP) { return; } /* Get the Index term, must be an integer constant to convert */ IndexOp = BufferNameOp->Common.Next; /* Major cheat: The Node field is also used for the Tag ptr. Clear it now */ IndexOp->Common.Node = NULL; OpInfo = AcpiPsGetOpcodeInfo (IndexOp->Common.AmlOpcode); if (OpInfo->ObjectType != ACPI_TYPE_INTEGER) { return; } /* Get the bit offset of the descriptor within the buffer */ if ((Op->Common.AmlOpcode == AML_CREATE_BIT_FIELD_OP) || (Op->Common.AmlOpcode == AML_CREATE_FIELD_OP)) { /* Index operand is a bit offset */ BitIndex = (UINT32) IndexOp->Common.Value.Integer; } else { /* Index operand is a byte offset, convert to bits */ BitIndex = (UINT32) ACPI_MUL_8 (IndexOp->Common.Value.Integer); } /* Lookup the buffer in the namespace */ Status = AcpiNsLookup (WalkState->ScopeInfo, BufferNameOp->Common.Value.String, ACPI_TYPE_BUFFER, ACPI_IMODE_EXECUTE, ACPI_NS_SEARCH_PARENT, WalkState, &BufferNode); if (ACPI_FAILURE (Status)) { return; } /* Validate object type, we must have a buffer */ if (BufferNode->Type != ACPI_TYPE_BUFFER) { return; } /* Find the resource descriptor node corresponding to the index */ ResourceNode = AcpiDmGetResourceNode (BufferNode, BitIndex); if (!ResourceNode) { return; } /* Translate the Index to a resource tag pathname */ AcpiGetTagPathname (IndexOp, BufferNode, ResourceNode, BitIndex); } /******************************************************************************* * * FUNCTION: AcpiDmGetResourceNode * * PARAMETERS: BufferNode - Node for the parent buffer * BitIndex - Index into the resource descriptor * * RETURN: Namespace node for the resource descriptor. NULL if not found * * DESCRIPTION: Find a resource descriptor that corresponds to the bit index * ******************************************************************************/ static ACPI_NAMESPACE_NODE * AcpiDmGetResourceNode ( ACPI_NAMESPACE_NODE *BufferNode, UINT32 BitIndex) { ACPI_NAMESPACE_NODE *Node; UINT32 ByteIndex = ACPI_DIV_8 (BitIndex); /* * Child list contains an entry for each resource descriptor. Find * the descriptor that corresponds to the Index. * * If there are no children, this is not a resource template */ Node = BufferNode->Child; while (Node) { /* * Check if the Index falls within this resource. * * Value contains the resource offset, Object contains the resource * length (both in bytes) */ if ((ByteIndex >= Node->Value) && (ByteIndex < (Node->Value + Node->Length))) { return (Node); } Node = Node->Peer; } return (NULL); } /******************************************************************************* * * FUNCTION: AcpiGetTagPathname * * PARAMETERS: BufferNode - Node for the parent buffer * ResourceNode - Node for a resource descriptor * BitIndex - Index into the resource descriptor * * RETURN: Full pathname for a resource tag. NULL if no match. * Path is returned in AML (packed) format. * * DESCRIPTION: Convert a BitIndex into a symbolic resource tag (full pathname) * ******************************************************************************/ static char * AcpiGetTagPathname ( ACPI_PARSE_OBJECT *IndexOp, ACPI_NAMESPACE_NODE *BufferNode, ACPI_NAMESPACE_NODE *ResourceNode, UINT32 BitIndex) { ACPI_STATUS Status; UINT32 ResourceBitIndex; UINT8 ResourceTableIndex; ACPI_SIZE RequiredSize; char *Pathname; AML_RESOURCE *Aml; ACPI_PARSE_OBJECT *Op; char *InternalPath; char *Tag; /* Get the Op that contains the actual buffer data */ Op = BufferNode->Op->Common.Value.Arg; Op = Op->Common.Next; if (!Op) { return (NULL); } /* Get the individual resource descriptor and validate it */ Aml = ACPI_CAST_PTR (AML_RESOURCE, &Op->Named.Data[ResourceNode->Value]); Status = AcpiUtValidateResource (NULL, Aml, &ResourceTableIndex); if (ACPI_FAILURE (Status)) { return (NULL); } /* Get offset into this descriptor (from offset into entire buffer) */ ResourceBitIndex = BitIndex - ACPI_MUL_8 (ResourceNode->Value); /* Get the tag associated with this resource descriptor and offset */ Tag = AcpiDmGetResourceTag (ResourceBitIndex, Aml, ResourceTableIndex); if (!Tag) { return (NULL); } /* * Now that we know that we have a reference that can be converted to a * symbol, change the name of the resource to a unique name. */ AcpiDmUpdateResourceName (ResourceNode); /* Get the full pathname to the parent buffer */ RequiredSize = AcpiNsGetPathnameLength (BufferNode); if (!RequiredSize) { return (NULL); } Pathname = ACPI_ALLOCATE_ZEROED (RequiredSize + ACPI_PATH_SEGMENT_LENGTH); if (!Pathname) { return (NULL); } Status = AcpiNsBuildExternalPath (BufferNode, RequiredSize, Pathname); if (ACPI_FAILURE (Status)) { ACPI_FREE (Pathname); return (NULL); } /* * Create the full path to the resource and tag by: remove the buffer name, * append the resource descriptor name, append a dot, append the tag name. * * TBD: Always using the full path is a bit brute force, the path can be * often be optimized with carats (if the original buffer namepath is a * single nameseg). This doesn't really matter, because these paths do not * end up in the final compiled AML, it's just an appearance issue for the * disassembled code. */ Pathname[ACPI_STRLEN (Pathname) - ACPI_NAME_SIZE] = 0; ACPI_STRNCAT (Pathname, ResourceNode->Name.Ascii, ACPI_NAME_SIZE); ACPI_STRCAT (Pathname, "."); ACPI_STRNCAT (Pathname, Tag, ACPI_NAME_SIZE); /* Internalize the namepath to AML format */ AcpiNsInternalizeName (Pathname, &InternalPath); ACPI_FREE (Pathname); /* Update the Op with the symbol */ AcpiPsInitOp (IndexOp, AML_INT_NAMEPATH_OP); IndexOp->Common.Value.String = InternalPath; /* We will need the tag later. Cheat by putting it in the Node field */ IndexOp->Common.Node = ACPI_CAST_PTR (ACPI_NAMESPACE_NODE, Tag); return (InternalPath); } /******************************************************************************* * * FUNCTION: AcpiDmUpdateResourceName * * PARAMETERS: ResourceNode - Node for a resource descriptor * * RETURN: Stores new name in the ResourceNode * * DESCRIPTION: Create a new, unique name for a resource descriptor. Used by * both the disassembly of the descriptor itself and any symbolic * references to the descriptor. Ignored if a unique name has * already been assigned to the resource. * * NOTE: Single threaded, suitable for applications only! * ******************************************************************************/ static void AcpiDmUpdateResourceName ( ACPI_NAMESPACE_NODE *ResourceNode) { char Name[ACPI_NAME_SIZE]; /* Ignore if a unique name has already been assigned */ if (ResourceNode->Name.Integer != ACPI_DEFAULT_RESNAME) { return; } /* Generate a new ACPI name for the descriptor */ Name[0] = '_'; Name[1] = AcpiGbl_Prefix[AcpiGbl_NextPrefix]; Name[2] = AcpiUtHexToAsciiChar ((UINT64) AcpiGbl_NextResourceId, 4); Name[3] = AcpiUtHexToAsciiChar ((UINT64) AcpiGbl_NextResourceId, 0); /* Update globals for next name */ AcpiGbl_NextResourceId++; if (AcpiGbl_NextResourceId >= 256) { AcpiGbl_NextResourceId = 0; AcpiGbl_NextPrefix++; if (AcpiGbl_NextPrefix > ACPI_NUM_RES_PREFIX) { AcpiGbl_NextPrefix = 0; } } /* Change the resource descriptor name */ ResourceNode->Name.Integer = *ACPI_CAST_PTR (UINT32, &Name[0]); } /******************************************************************************* * * FUNCTION: AcpiDmGetResourceTag * * PARAMETERS: BitIndex - Index into the resource descriptor * Resource - Pointer to the raw resource data * ResourceIndex - Index correspoinding to the resource type * * RETURN: Pointer to the resource tag (ACPI_NAME). NULL if no match. * * DESCRIPTION: Convert a BitIndex into a symbolic resource tag. * * Note: ResourceIndex should be previously validated and guaranteed to ve * valid. * ******************************************************************************/ static char * AcpiDmGetResourceTag ( UINT32 BitIndex, AML_RESOURCE *Resource, UINT8 ResourceIndex) { const ACPI_RESOURCE_TAG *TagList; char *Tag = NULL; /* Get the tag list for this resource descriptor type */ TagList = AcpiGbl_ResourceTags[ResourceIndex]; /* * Handle descriptors that have multiple subtypes */ switch (Resource->DescriptorType) { case ACPI_RESOURCE_NAME_ADDRESS16: case ACPI_RESOURCE_NAME_ADDRESS32: case ACPI_RESOURCE_NAME_ADDRESS64: case ACPI_RESOURCE_NAME_EXTENDED_ADDRESS64: /* * Subtype differentiation is the flags. * Kindof brute force, but just blindly search for an index match */ if (Resource->Address.ResourceType == ACPI_ADDRESS_TYPE_MEMORY_RANGE) { Tag = AcpiDmSearchTagList (BitIndex, AcpiDmMemoryFlagTags); } else if (Resource->Address.ResourceType == ACPI_ADDRESS_TYPE_IO_RANGE) { Tag = AcpiDmSearchTagList (BitIndex, AcpiDmIoFlagTags); } /* If we found a match, all done. Else, drop to normal search below */ if (Tag) { return (Tag); } break; case ACPI_RESOURCE_NAME_GPIO: /* GPIO connection has 2 subtypes: Interrupt and I/O */ if (Resource->Gpio.ConnectionType > AML_RESOURCE_MAX_GPIOTYPE) { return (NULL); } TagList = AcpiGbl_GpioResourceTags[Resource->Gpio.ConnectionType]; break; case ACPI_RESOURCE_NAME_SERIAL_BUS: /* SerialBus has 3 subtypes: I2C, SPI, and UART */ if ((Resource->CommonSerialBus.Type == 0) || (Resource->CommonSerialBus.Type > AML_RESOURCE_MAX_SERIALBUSTYPE)) { return (NULL); } TagList = AcpiGbl_SerialResourceTags[Resource->CommonSerialBus.Type]; break; default: break; } /* Search for a match against the BitIndex */ if (TagList) { Tag = AcpiDmSearchTagList (BitIndex, TagList); } return (Tag); } /******************************************************************************* * * FUNCTION: AcpiDmSearchTagList * * PARAMETERS: BitIndex - Index into the resource descriptor * TagList - List to search * * RETURN: Pointer to a tag (ACPI_NAME). NULL if no match found. * * DESCRIPTION: Search a tag list for a match to the input BitIndex. Matches * a fixed offset to a symbolic resource tag name. * ******************************************************************************/ static char * AcpiDmSearchTagList ( UINT32 BitIndex, const ACPI_RESOURCE_TAG *TagList) { /* * Walk the null-terminated tag list to find a matching bit offset. * We are looking for an exact match. */ for ( ; TagList->Tag; TagList++) { if (BitIndex == TagList->BitIndex) { return (TagList->Tag); } } /* A matching offset was not found */ return (NULL); } /******************************************************************************* * * FUNCTION: AcpiDmFindResources * * PARAMETERS: Root - Root of the parse tree * * RETURN: None * * DESCRIPTION: Add all ResourceTemplate declarations to the namespace. Each * resource descriptor in each template is given a node -- used * for later conversion of resource references to symbolic refs. * ******************************************************************************/ void AcpiDmFindResources ( ACPI_PARSE_OBJECT *Root) { ACPI_PARSE_OBJECT *Op = Root; ACPI_PARSE_OBJECT *Parent; /* Walk the entire parse tree */ while (Op) { /* We are interested in Buffer() declarations */ if (Op->Common.AmlOpcode == AML_BUFFER_OP) { /* And only declarations of the form Name (XXXX, Buffer()... ) */ Parent = Op->Common.Parent; if (Parent->Common.AmlOpcode == AML_NAME_OP) { /* * If the buffer is a resource template, add the individual * resource descriptors to the namespace, as children of the * buffer node. */ if (ACPI_SUCCESS (AcpiDmIsResourceTemplate (NULL, Op))) { Op->Common.DisasmOpcode = ACPI_DASM_RESOURCE; AcpiDmAddResourcesToNamespace (Parent->Common.Node, Op); } } } Op = AcpiPsGetDepthNext (Root, Op); } } /******************************************************************************* * * FUNCTION: AcpiDmAddResourcesToNamespace * * PARAMETERS: BufferNode - Node for the parent buffer * Op - Parse op for the buffer * * RETURN: None * * DESCRIPTION: Add an entire resource template to the namespace. Each * resource descriptor is added as a namespace node. * ******************************************************************************/ static void AcpiDmAddResourcesToNamespace ( ACPI_NAMESPACE_NODE *BufferNode, ACPI_PARSE_OBJECT *Op) { ACPI_PARSE_OBJECT *NextOp; /* Get to the ByteData list */ NextOp = Op->Common.Value.Arg; NextOp = NextOp->Common.Next; if (!NextOp) { return; } /* Set Node and Op to point to each other */ BufferNode->Op = Op; Op->Common.Node = BufferNode; /* * Insert each resource into the namespace * NextOp contains the Aml pointer and the Aml length */ AcpiUtWalkAmlResources (NULL, (UINT8 *) NextOp->Named.Data, (ACPI_SIZE) NextOp->Common.Value.Integer, AcpiDmAddResourceToNamespace, (void **) BufferNode); } /******************************************************************************* * * FUNCTION: AcpiDmAddResourceToNamespace * * PARAMETERS: ACPI_WALK_AML_CALLBACK * BufferNode - Node for the parent buffer * * RETURN: Status * * DESCRIPTION: Add one resource descriptor to the namespace as a child of the * parent buffer. The same name is used for each descriptor. This * is changed later to a unique name if the resource is actually * referenced by an AML operator. * ******************************************************************************/ static ACPI_STATUS AcpiDmAddResourceToNamespace ( UINT8 *Aml, UINT32 Length, UINT32 Offset, UINT8 ResourceIndex, void **Context) { ACPI_STATUS Status; ACPI_GENERIC_STATE ScopeInfo; ACPI_NAMESPACE_NODE *Node; /* TBD: Don't need to add descriptors that have no tags defined? */ /* Add the resource to the namespace, as child of the buffer */ ScopeInfo.Scope.Node = ACPI_CAST_PTR (ACPI_NAMESPACE_NODE, Context); Status = AcpiNsLookup (&ScopeInfo, "_TMP", ACPI_TYPE_LOCAL_RESOURCE, ACPI_IMODE_LOAD_PASS2, ACPI_NS_NO_UPSEARCH | ACPI_NS_DONT_OPEN_SCOPE | ACPI_NS_PREFIX_IS_SCOPE, NULL, &Node); if (ACPI_FAILURE (Status)) { return (AE_OK); } /* Set the name to the default, changed later if resource is referenced */ Node->Name.Integer = ACPI_DEFAULT_RESNAME; /* Save the offset of the descriptor (within the original buffer) */ Node->Value = Offset; Node->Length = Length; return (AE_OK); } src/acpica/source/common/dmtable.c000066400000000000000000001262451231470457100174470ustar00rootroot00000000000000/****************************************************************************** * * Module Name: dmtable - Support for ACPI tables that contain no AML code * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #include "acpi.h" #include "accommon.h" #include "acdisasm.h" #include "actables.h" #include "aslcompiler.h" #include "dtcompiler.h" /* This module used for application-level code only */ #define _COMPONENT ACPI_CA_DISASSEMBLER ACPI_MODULE_NAME ("dmtable") /* Local Prototypes */ static void AcpiDmCheckAscii ( UINT8 *Target, char *RepairedName, UINT32 Count); /* Common format strings for commented values */ #define UINT8_FORMAT "%2.2X [%s]\n" #define UINT16_FORMAT "%4.4X [%s]\n" #define UINT32_FORMAT "%8.8X [%s]\n" #define STRING_FORMAT "[%s]\n" /* These tables map a subtable type to a description string */ static const char *AcpiDmAsfSubnames[] = { "ASF Information", "ASF Alerts", "ASF Remote Control", "ASF RMCP Boot Options", "ASF Address", "Unknown SubTable Type" /* Reserved */ }; static const char *AcpiDmDmarSubnames[] = { "Hardware Unit Definition", "Reserved Memory Region", "Root Port ATS Capability", "Remapping Hardware Static Affinity", "Unknown SubTable Type" /* Reserved */ }; static const char *AcpiDmEinjActions[] = { "Begin Operation", "Get Trigger Table", "Set Error Type", "Get Error Type", "End Operation", "Execute Operation", "Check Busy Status", "Get Command Status", "Set Error Type With Address", "Unknown Action" }; static const char *AcpiDmEinjInstructions[] = { "Read Register", "Read Register Value", "Write Register", "Write Register Value", "Noop", "Flush Cacheline", "Unknown Instruction" }; static const char *AcpiDmErstActions[] = { "Begin Write Operation", "Begin Read Operation", "Begin Clear Operation", "End Operation", "Set Record Offset", "Execute Operation", "Check Busy Status", "Get Command Status", "Get Record Identifier", "Set Record Identifier", "Get Record Count", "Begin Dummy Write", "Unused/Unknown Action", "Get Error Address Range", "Get Error Address Length", "Get Error Attributes", "Unknown Action" }; static const char *AcpiDmErstInstructions[] = { "Read Register", "Read Register Value", "Write Register", "Write Register Value", "Noop", "Load Var1", "Load Var2", "Store Var1", "Add", "Subtract", "Add Value", "Subtract Value", "Stall", "Stall While True", "Skip Next If True", "GoTo", "Set Source Address", "Set Destination Address", "Move Data", "Unknown Instruction" }; static const char *AcpiDmHestSubnames[] = { "IA-32 Machine Check Exception", "IA-32 Corrected Machine Check", "IA-32 Non-Maskable Interrupt", "Unknown SubTable Type", /* 3 - Reserved */ "Unknown SubTable Type", /* 4 - Reserved */ "Unknown SubTable Type", /* 5 - Reserved */ "PCI Express Root Port AER", "PCI Express AER (AER Endpoint)", "PCI Express/PCI-X Bridge AER", "Generic Hardware Error Source", "Unknown SubTable Type" /* Reserved */ }; static const char *AcpiDmHestNotifySubnames[] = { "Polled", "External Interrupt", "Local Interrupt", "SCI", "NMI", "CMCI", /* ACPI 5.0 */ "MCE", /* ACPI 5.0 */ "Unknown Notify Type" /* Reserved */ }; static const char *AcpiDmMadtSubnames[] = { "Processor Local APIC", /* ACPI_MADT_TYPE_LOCAL_APIC */ "I/O APIC", /* ACPI_MADT_TYPE_IO_APIC */ "Interrupt Source Override", /* ACPI_MADT_TYPE_INTERRUPT_OVERRIDE */ "NMI Source", /* ACPI_MADT_TYPE_NMI_SOURCE */ "Local APIC NMI", /* ACPI_MADT_TYPE_LOCAL_APIC_NMI */ "Local APIC Address Override", /* ACPI_MADT_TYPE_LOCAL_APIC_OVERRIDE */ "I/O SAPIC", /* ACPI_MADT_TYPE_IO_SAPIC */ "Local SAPIC", /* ACPI_MADT_TYPE_LOCAL_SAPIC */ "Platform Interrupt Sources", /* ACPI_MADT_TYPE_INTERRUPT_SOURCE */ "Processor Local x2APIC", /* ACPI_MADT_TYPE_LOCAL_X2APIC */ "Local x2APIC NMI", /* ACPI_MADT_TYPE_LOCAL_X2APIC_NMI */ "Generic Interrupt Controller", /* ACPI_MADT_GENERIC_INTERRUPT */ "Generic Interrupt Distributor",/* ACPI_MADT_GENERIC_DISTRIBUTOR */ "Unknown SubTable Type" /* Reserved */ }; static const char *AcpiDmPcctSubnames[] = { "Generic Communications Subspace", /* ACPI_PCCT_TYPE_GENERIC_SUBSPACE */ "Unknown SubTable Type" /* Reserved */ }; static const char *AcpiDmPmttSubnames[] = { "Socket", /* ACPI_PMTT_TYPE_SOCKET */ "Memory Controller", /* ACPI_PMTT_TYPE_CONTROLLER */ "Physical Component (DIMM)", /* ACPI_PMTT_TYPE_DIMM */ "Unknown SubTable Type" /* Reserved */ }; static const char *AcpiDmSlicSubnames[] = { "Public Key Structure", "Windows Marker Structure", "Unknown SubTable Type" /* Reserved */ }; static const char *AcpiDmSratSubnames[] = { "Processor Local APIC/SAPIC Affinity", "Memory Affinity", "Processor Local x2APIC Affinity", "Unknown SubTable Type" /* Reserved */ }; static const char *AcpiDmIvrsSubnames[] = { "Hardware Definition Block", "Memory Definition Block", "Unknown SubTable Type" /* Reserved */ }; #define ACPI_FADT_PM_RESERVED 9 static const char *AcpiDmFadtProfiles[] = { "Unspecified", "Desktop", "Mobile", "Workstation", "Enterprise Server", "SOHO Server", "Appliance PC", "Performance Server", "Tablet", "Unknown Profile Type" }; #define ACPI_GAS_WIDTH_RESERVED 5 static const char *AcpiDmGasAccessWidth[] = { "Undefined/Legacy", "Byte Access:8", "Word Access:16", "DWord Access:32", "QWord Access:64", "Unknown Width Encoding" }; /******************************************************************************* * * ACPI Table Data, indexed by signature. * * Each entry contains: Signature, Table Info, Handler, DtHandler, * Template, Description * * Simple tables have only a TableInfo structure, complex tables have a * handler. This table must be NULL terminated. RSDP and FACS are * special-cased elsewhere. * ******************************************************************************/ ACPI_DMTABLE_DATA AcpiDmTableData[] = { {ACPI_SIG_ASF, NULL, AcpiDmDumpAsf, DtCompileAsf, TemplateAsf, "Alert Standard Format table"}, {ACPI_SIG_BERT, AcpiDmTableInfoBert, NULL, NULL, TemplateBert, "Boot Error Record Table"}, {ACPI_SIG_BGRT, AcpiDmTableInfoBgrt, NULL, NULL, TemplateBgrt, "Boot Graphics Resource Table"}, {ACPI_SIG_BOOT, AcpiDmTableInfoBoot, NULL, NULL, TemplateBoot, "Simple Boot Flag Table"}, {ACPI_SIG_CPEP, NULL, AcpiDmDumpCpep, DtCompileCpep, TemplateCpep, "Corrected Platform Error Polling table"}, {ACPI_SIG_CSRT, NULL, AcpiDmDumpCsrt, DtCompileCsrt, TemplateCsrt, "Core System Resource Table"}, {ACPI_SIG_DBG2, AcpiDmTableInfoDbg2, AcpiDmDumpDbg2, DtCompileDbg2, TemplateDbg2, "Debug Port table type 2"}, {ACPI_SIG_DBGP, AcpiDmTableInfoDbgp, NULL, NULL, TemplateDbgp, "Debug Port table"}, {ACPI_SIG_DMAR, NULL, AcpiDmDumpDmar, DtCompileDmar, TemplateDmar, "DMA Remapping table"}, {ACPI_SIG_ECDT, AcpiDmTableInfoEcdt, NULL, NULL, TemplateEcdt, "Embedded Controller Boot Resources Table"}, {ACPI_SIG_EINJ, NULL, AcpiDmDumpEinj, DtCompileEinj, TemplateEinj, "Error Injection table"}, {ACPI_SIG_ERST, NULL, AcpiDmDumpErst, DtCompileErst, TemplateErst, "Error Record Serialization Table"}, {ACPI_SIG_FADT, NULL, AcpiDmDumpFadt, DtCompileFadt, TemplateFadt, "Fixed ACPI Description Table (FADT)"}, {ACPI_SIG_FPDT, NULL, AcpiDmDumpFpdt, DtCompileFpdt, TemplateFpdt, "Firmware Performance Data Table"}, {ACPI_SIG_GTDT, AcpiDmTableInfoGtdt, NULL, NULL, TemplateGtdt, "Generic Timer Description Table"}, {ACPI_SIG_HEST, NULL, AcpiDmDumpHest, DtCompileHest, TemplateHest, "Hardware Error Source Table"}, {ACPI_SIG_HPET, AcpiDmTableInfoHpet, NULL, NULL, TemplateHpet, "High Precision Event Timer table"}, {ACPI_SIG_IVRS, NULL, AcpiDmDumpIvrs, DtCompileIvrs, TemplateIvrs, "I/O Virtualization Reporting Structure"}, {ACPI_SIG_MADT, NULL, AcpiDmDumpMadt, DtCompileMadt, TemplateMadt, "Multiple APIC Description Table (MADT)"}, {ACPI_SIG_MCFG, NULL, AcpiDmDumpMcfg, DtCompileMcfg, TemplateMcfg, "Memory Mapped Configuration table"}, {ACPI_SIG_MCHI, AcpiDmTableInfoMchi, NULL, NULL, TemplateMchi, "Management Controller Host Interface table"}, {ACPI_SIG_MPST, AcpiDmTableInfoMpst, AcpiDmDumpMpst, DtCompileMpst, TemplateMpst, "Memory Power State Table"}, {ACPI_SIG_MSCT, NULL, AcpiDmDumpMsct, DtCompileMsct, TemplateMsct, "Maximum System Characteristics Table"}, {ACPI_SIG_MTMR, NULL, AcpiDmDumpMtmr, DtCompileMtmr, TemplateMtmr, "MID Timer Table"}, {ACPI_SIG_PCCT, AcpiDmTableInfoPcct, AcpiDmDumpPcct, DtCompilePcct, TemplatePcct, "Platform Communications Channel Table"}, {ACPI_SIG_PMTT, NULL, AcpiDmDumpPmtt, DtCompilePmtt, TemplatePmtt, "Platform Memory Topology Table"}, {ACPI_SIG_RSDT, NULL, AcpiDmDumpRsdt, DtCompileRsdt, TemplateRsdt, "Root System Description Table"}, {ACPI_SIG_S3PT, NULL, NULL, NULL, TemplateS3pt, "S3 Performance Table"}, {ACPI_SIG_SBST, AcpiDmTableInfoSbst, NULL, NULL, TemplateSbst, "Smart Battery Specification Table"}, {ACPI_SIG_SLIC, NULL, AcpiDmDumpSlic, DtCompileSlic, TemplateSlic, "Software Licensing Description Table"}, {ACPI_SIG_SLIT, NULL, AcpiDmDumpSlit, DtCompileSlit, TemplateSlit, "System Locality Information Table"}, {ACPI_SIG_SPCR, AcpiDmTableInfoSpcr, NULL, NULL, TemplateSpcr, "Serial Port Console Redirection table"}, {ACPI_SIG_SPMI, AcpiDmTableInfoSpmi, NULL, NULL, TemplateSpmi, "Server Platform Management Interface table"}, {ACPI_SIG_SRAT, NULL, AcpiDmDumpSrat, DtCompileSrat, TemplateSrat, "System Resource Affinity Table"}, {ACPI_SIG_TCPA, AcpiDmTableInfoTcpa, NULL, NULL, TemplateTcpa, "Trusted Computing Platform Alliance table"}, {ACPI_SIG_TPM2, AcpiDmTableInfoTpm2, NULL, NULL, TemplateTpm2, "Trusted Platform Module hardware interface table"}, {ACPI_SIG_UEFI, AcpiDmTableInfoUefi, NULL, DtCompileUefi, TemplateUefi, "UEFI Boot Optimization Table"}, {ACPI_SIG_VRTC, AcpiDmTableInfoVrtc, AcpiDmDumpVrtc, DtCompileVrtc, TemplateVrtc, "Virtual Real-Time Clock Table"}, {ACPI_SIG_WAET, AcpiDmTableInfoWaet, NULL, NULL, TemplateWaet, "Windows ACPI Emulated Devices Table"}, {ACPI_SIG_WDAT, NULL, AcpiDmDumpWdat, DtCompileWdat, TemplateWdat, "Watchdog Action Table"}, {ACPI_SIG_WDDT, AcpiDmTableInfoWddt, NULL, NULL, TemplateWddt, "Watchdog Description Table"}, {ACPI_SIG_WDRT, AcpiDmTableInfoWdrt, NULL, NULL, TemplateWdrt, "Watchdog Resource Table"}, {ACPI_SIG_XSDT, NULL, AcpiDmDumpXsdt, DtCompileXsdt, TemplateXsdt, "Extended System Description Table"}, {NULL, NULL, NULL, NULL, NULL, NULL} }; /******************************************************************************* * * FUNCTION: AcpiDmGenerateChecksum * * PARAMETERS: Table - Pointer to table to be checksummed * Length - Length of the table * OriginalChecksum - Value of the checksum field * * RETURN: 8 bit checksum of buffer * * DESCRIPTION: Computes an 8 bit checksum of the table. * ******************************************************************************/ UINT8 AcpiDmGenerateChecksum ( void *Table, UINT32 Length, UINT8 OriginalChecksum) { UINT8 Checksum; /* Sum the entire table as-is */ Checksum = AcpiTbChecksum ((UINT8 *) Table, Length); /* Subtract off the existing checksum value in the table */ Checksum = (UINT8) (Checksum - OriginalChecksum); /* Compute the final checksum */ Checksum = (UINT8) (0 - Checksum); return (Checksum); } /******************************************************************************* * * FUNCTION: AcpiDmGetTableData * * PARAMETERS: Signature - ACPI signature (4 chars) to match * * RETURN: Pointer to a valid ACPI_DMTABLE_DATA. Null if no match found. * * DESCRIPTION: Find a match in the global table of supported ACPI tables * ******************************************************************************/ ACPI_DMTABLE_DATA * AcpiDmGetTableData ( char *Signature) { ACPI_DMTABLE_DATA *TableData; for (TableData = AcpiDmTableData; TableData->Signature; TableData++) { if (ACPI_COMPARE_NAME (Signature, TableData->Signature)) { return (TableData); } } return (NULL); } /******************************************************************************* * * FUNCTION: AcpiDmDumpDataTable * * PARAMETERS: Table - An ACPI table * * RETURN: None. * * DESCRIPTION: Format the contents of an ACPI data table (any table other * than an SSDT or DSDT that does not contain executable AML code) * ******************************************************************************/ void AcpiDmDumpDataTable ( ACPI_TABLE_HEADER *Table) { ACPI_STATUS Status; ACPI_DMTABLE_DATA *TableData; UINT32 Length; /* Ignore tables that contain AML */ if (AcpiUtIsAmlTable (Table)) { if (Gbl_VerboseTemplates) { /* Dump the raw table data */ Length = Table->Length; AcpiOsPrintf ("\n/*\n%s: Length %d (0x%X)\n\n", ACPI_RAW_TABLE_DATA_HEADER, Length, Length); AcpiUtDumpBuffer (ACPI_CAST_PTR (UINT8, Table), Length, DB_BYTE_DISPLAY, 0); AcpiOsPrintf (" */\n"); } return; } /* * Handle tables that don't use the common ACPI table header structure. * Currently, these are the FACS, RSDP, and S3PT. */ if (ACPI_COMPARE_NAME (Table->Signature, ACPI_SIG_FACS)) { Length = Table->Length; AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoFacs); } else if (ACPI_VALIDATE_RSDP_SIG (Table->Signature)) { Length = AcpiDmDumpRsdp (Table); } else if (ACPI_COMPARE_NAME (Table->Signature, ACPI_SIG_S3PT)) { Length = AcpiDmDumpS3pt (Table); } else { /* * All other tables must use the common ACPI table header, dump it now */ Length = Table->Length; Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoHeader); if (ACPI_FAILURE (Status)) { return; } AcpiOsPrintf ("\n"); /* Match signature and dispatch appropriately */ TableData = AcpiDmGetTableData (Table->Signature); if (!TableData) { if (!ACPI_STRNCMP (Table->Signature, "OEM", 3)) { AcpiOsPrintf ("\n**** OEM-defined ACPI table [%4.4s], unknown contents\n\n", Table->Signature); } else { AcpiOsPrintf ("\n**** Unknown ACPI table type [%4.4s]\n\n", Table->Signature); fprintf (stderr, "Unknown ACPI table signature [%4.4s], decoding header only\n", Table->Signature); } } else if (TableData->TableHandler) { /* Complex table, has a handler */ TableData->TableHandler (Table); } else if (TableData->TableInfo) { /* Simple table, just walk the info table */ AcpiDmDumpTable (Length, 0, Table, 0, TableData->TableInfo); } } if (!Gbl_DoTemplates || Gbl_VerboseTemplates) { /* Dump the raw table data */ AcpiOsPrintf ("\n%s: Length %d (0x%X)\n\n", ACPI_RAW_TABLE_DATA_HEADER, Length, Length); AcpiUtDumpBuffer (ACPI_CAST_PTR (UINT8, Table), Length, DB_BYTE_DISPLAY, 0); } } /******************************************************************************* * * FUNCTION: AcpiDmLineHeader * * PARAMETERS: Offset - Current byte offset, from table start * ByteLength - Length of the field in bytes, 0 for flags * Name - Name of this field * Value - Optional value, displayed on left of ':' * * RETURN: None * * DESCRIPTION: Utility routines for formatting output lines. Displays the * current table offset in hex and decimal, the field length, * and the field name. * ******************************************************************************/ void AcpiDmLineHeader ( UINT32 Offset, UINT32 ByteLength, char *Name) { /* Allow a null name for fields that span multiple lines (large buffers) */ if (!Name) { Name = ""; } if (Gbl_DoTemplates && !Gbl_VerboseTemplates) /* Terse template */ { if (ByteLength) { AcpiOsPrintf ("[%.4d] %34s : ", ByteLength, Name); } else { if (*Name) { AcpiOsPrintf ("%41s : ", Name); } else { AcpiOsPrintf ("%41s ", Name); } } } else /* Normal disassembler or verbose template */ { if (ByteLength) { AcpiOsPrintf ("[%3.3Xh %4.4d% 4d] %28s : ", Offset, Offset, ByteLength, Name); } else { if (*Name) { AcpiOsPrintf ("%44s : ", Name); } else { AcpiOsPrintf ("%44s ", Name); } } } } void AcpiDmLineHeader2 ( UINT32 Offset, UINT32 ByteLength, char *Name, UINT32 Value) { if (Gbl_DoTemplates && !Gbl_VerboseTemplates) /* Terse template */ { if (ByteLength) { AcpiOsPrintf ("[%.4d] %30s %3d : ", ByteLength, Name, Value); } else { AcpiOsPrintf ("%36s % 3d : ", Name, Value); } } else /* Normal disassembler or verbose template */ { if (ByteLength) { AcpiOsPrintf ("[%3.3Xh %4.4d %3d] %24s %3d : ", Offset, Offset, ByteLength, Name, Value); } else { AcpiOsPrintf ("[%3.3Xh %4.4d ] %24s %3d : ", Offset, Offset, Name, Value); } } } /******************************************************************************* * * FUNCTION: AcpiDmDumpTable * * PARAMETERS: TableLength - Length of the entire ACPI table * TableOffset - Starting offset within the table for this * sub-descriptor (0 if main table) * Table - The ACPI table * SubtableLength - Length of this sub-descriptor * Info - Info table for this ACPI table * * RETURN: None * * DESCRIPTION: Display ACPI table contents by walking the Info table. * * Note: This function must remain in sync with DtGetFieldLength. * ******************************************************************************/ ACPI_STATUS AcpiDmDumpTable ( UINT32 TableLength, UINT32 TableOffset, void *Table, UINT32 SubtableLength, ACPI_DMTABLE_INFO *Info) { UINT8 *Target; UINT32 CurrentOffset; UINT32 ByteLength; UINT8 Temp8; UINT16 Temp16; UINT64 Value; ACPI_DMTABLE_DATA *TableData; const char *Name; BOOLEAN LastOutputBlankLine = FALSE; char RepairedName[8]; if (!Info) { AcpiOsPrintf ("Display not implemented\n"); return (AE_NOT_IMPLEMENTED); } /* Walk entire Info table; Null name terminates */ for (; Info->Name; Info++) { /* * Target points to the field within the ACPI Table. CurrentOffset is * the offset of the field from the start of the main table. */ Target = ACPI_ADD_PTR (UINT8, Table, Info->Offset); CurrentOffset = TableOffset + Info->Offset; /* Check for beyond EOT or beyond subtable end */ if ((CurrentOffset >= TableLength) || (SubtableLength && (Info->Offset >= SubtableLength))) { AcpiOsPrintf ("**** ACPI table terminates in the middle of a data structure!\n"); return (AE_BAD_DATA); } /* Generate the byte length for this field */ switch (Info->Opcode) { case ACPI_DMT_UINT8: case ACPI_DMT_CHKSUM: case ACPI_DMT_SPACEID: case ACPI_DMT_ACCWIDTH: case ACPI_DMT_IVRS: case ACPI_DMT_MADT: case ACPI_DMT_PCCT: case ACPI_DMT_PMTT: case ACPI_DMT_SRAT: case ACPI_DMT_ASF: case ACPI_DMT_HESTNTYP: case ACPI_DMT_FADTPM: case ACPI_DMT_EINJACT: case ACPI_DMT_EINJINST: case ACPI_DMT_ERSTACT: case ACPI_DMT_ERSTINST: ByteLength = 1; break; case ACPI_DMT_UINT16: case ACPI_DMT_DMAR: case ACPI_DMT_HEST: ByteLength = 2; break; case ACPI_DMT_UINT24: ByteLength = 3; break; case ACPI_DMT_UINT32: case ACPI_DMT_NAME4: case ACPI_DMT_SIG: case ACPI_DMT_SLIC: ByteLength = 4; break; case ACPI_DMT_UINT40: ByteLength = 5; break; case ACPI_DMT_UINT48: case ACPI_DMT_NAME6: ByteLength = 6; break; case ACPI_DMT_UINT56: case ACPI_DMT_BUF7: ByteLength = 7; break; case ACPI_DMT_UINT64: case ACPI_DMT_NAME8: ByteLength = 8; break; case ACPI_DMT_BUF10: ByteLength = 10; break; case ACPI_DMT_BUF16: case ACPI_DMT_UUID: ByteLength = 16; break; case ACPI_DMT_BUF128: ByteLength = 128; break; case ACPI_DMT_STRING: ByteLength = ACPI_STRLEN (ACPI_CAST_PTR (char, Target)) + 1; break; case ACPI_DMT_GAS: if (!LastOutputBlankLine) { AcpiOsPrintf ("\n"); LastOutputBlankLine = TRUE; } ByteLength = sizeof (ACPI_GENERIC_ADDRESS); break; case ACPI_DMT_HESTNTFY: if (!LastOutputBlankLine) { AcpiOsPrintf ("\n"); LastOutputBlankLine = TRUE; } ByteLength = sizeof (ACPI_HEST_NOTIFY); break; default: ByteLength = 0; break; } if (CurrentOffset + ByteLength > TableLength) { AcpiOsPrintf ("**** ACPI table terminates in the middle of a data structure!\n"); return (AE_BAD_DATA); } if (Info->Opcode == ACPI_DMT_EXTRA_TEXT) { AcpiOsPrintf ("%s", Info->Name); continue; } /* Start a new line and decode the opcode */ AcpiDmLineHeader (CurrentOffset, ByteLength, Info->Name); switch (Info->Opcode) { /* Single-bit Flag fields. Note: Opcode is the bit position */ case ACPI_DMT_FLAG0: case ACPI_DMT_FLAG1: case ACPI_DMT_FLAG2: case ACPI_DMT_FLAG3: case ACPI_DMT_FLAG4: case ACPI_DMT_FLAG5: case ACPI_DMT_FLAG6: case ACPI_DMT_FLAG7: AcpiOsPrintf ("%1.1X\n", (*Target >> Info->Opcode) & 0x01); break; /* 2-bit Flag fields */ case ACPI_DMT_FLAGS0: AcpiOsPrintf ("%1.1X\n", *Target & 0x03); break; case ACPI_DMT_FLAGS1: AcpiOsPrintf ("%1.1X\n", (*Target >> 1) & 0x03); break; case ACPI_DMT_FLAGS2: AcpiOsPrintf ("%1.1X\n", (*Target >> 2) & 0x03); break; case ACPI_DMT_FLAGS4: AcpiOsPrintf ("%1.1X\n", (*Target >> 4) & 0x03); break; /* Integer Data Types */ case ACPI_DMT_UINT8: case ACPI_DMT_UINT16: case ACPI_DMT_UINT24: case ACPI_DMT_UINT32: case ACPI_DMT_UINT40: case ACPI_DMT_UINT48: case ACPI_DMT_UINT56: case ACPI_DMT_UINT64: /* * Dump bytes - high byte first, low byte last. * Note: All ACPI tables are little-endian. */ Value = 0; for (Temp8 = (UINT8) ByteLength; Temp8 > 0; Temp8--) { AcpiOsPrintf ("%2.2X", Target[Temp8 - 1]); Value |= Target[Temp8 - 1]; Value <<= 8; } if (!Value && (Info->Flags & DT_DESCRIBES_OPTIONAL)) { AcpiOsPrintf (" [Optional field not present]"); } AcpiOsPrintf ("\n"); break; case ACPI_DMT_BUF7: case ACPI_DMT_BUF10: case ACPI_DMT_BUF16: case ACPI_DMT_BUF128: /* * Buffer: Size depends on the opcode and was set above. * Each hex byte is separated with a space. * Multiple lines are separated by line continuation char. */ for (Temp16 = 0; Temp16 < ByteLength; Temp16++) { AcpiOsPrintf ("%2.2X", Target[Temp16]); if ((UINT32) (Temp16 + 1) < ByteLength) { if ((Temp16 > 0) && (!((Temp16+1) % 16))) { AcpiOsPrintf (" \\\n"); /* Line continuation */ AcpiDmLineHeader (0, 0, NULL); } else { AcpiOsPrintf (" "); } } } AcpiOsPrintf ("\n"); break; case ACPI_DMT_UUID: /* Convert 16-byte UUID buffer to 36-byte formatted UUID string */ (void) AuConvertUuidToString ((char *) Target, MsgBuffer); AcpiOsPrintf ("%s\n", MsgBuffer); break; case ACPI_DMT_STRING: AcpiOsPrintf ("\"%s\"\n", ACPI_CAST_PTR (char, Target)); break; /* Fixed length ASCII name fields */ case ACPI_DMT_SIG: AcpiDmCheckAscii (Target, RepairedName, 4); AcpiOsPrintf ("\"%.4s\" ", RepairedName); TableData = AcpiDmGetTableData (ACPI_CAST_PTR (char, Target)); if (TableData) { AcpiOsPrintf (STRING_FORMAT, TableData->Name); } else { AcpiOsPrintf ("\n"); } break; case ACPI_DMT_NAME4: AcpiDmCheckAscii (Target, RepairedName, 4); AcpiOsPrintf ("\"%.4s\"\n", RepairedName); break; case ACPI_DMT_NAME6: AcpiDmCheckAscii (Target, RepairedName, 6); AcpiOsPrintf ("\"%.6s\"\n", RepairedName); break; case ACPI_DMT_NAME8: AcpiDmCheckAscii (Target, RepairedName, 8); AcpiOsPrintf ("\"%.8s\"\n", RepairedName); break; /* Special Data Types */ case ACPI_DMT_CHKSUM: /* Checksum, display and validate */ AcpiOsPrintf ("%2.2X", *Target); Temp8 = AcpiDmGenerateChecksum (Table, ACPI_CAST_PTR (ACPI_TABLE_HEADER, Table)->Length, ACPI_CAST_PTR (ACPI_TABLE_HEADER, Table)->Checksum); if (Temp8 != ACPI_CAST_PTR (ACPI_TABLE_HEADER, Table)->Checksum) { AcpiOsPrintf ( " /* Incorrect checksum, should be %2.2X */", Temp8); } AcpiOsPrintf ("\n"); break; case ACPI_DMT_SPACEID: /* Address Space ID */ AcpiOsPrintf (UINT8_FORMAT, *Target, AcpiUtGetRegionName (*Target)); break; case ACPI_DMT_ACCWIDTH: /* Encoded Access Width */ Temp8 = *Target; if (Temp8 > ACPI_GAS_WIDTH_RESERVED) { Temp8 = ACPI_GAS_WIDTH_RESERVED; } AcpiOsPrintf (UINT8_FORMAT, Temp8, AcpiDmGasAccessWidth[Temp8]); break; case ACPI_DMT_GAS: /* Generic Address Structure */ AcpiOsPrintf (STRING_FORMAT, "Generic Address Structure"); AcpiDmDumpTable (TableLength, CurrentOffset, Target, sizeof (ACPI_GENERIC_ADDRESS), AcpiDmTableInfoGas); AcpiOsPrintf ("\n"); LastOutputBlankLine = TRUE; break; case ACPI_DMT_ASF: /* ASF subtable types */ Temp16 = (UINT16) ((*Target) & 0x7F); /* Top bit can be zero or one */ if (Temp16 > ACPI_ASF_TYPE_RESERVED) { Temp16 = ACPI_ASF_TYPE_RESERVED; } AcpiOsPrintf (UINT8_FORMAT, *Target, AcpiDmAsfSubnames[Temp16]); break; case ACPI_DMT_DMAR: /* DMAR subtable types */ Temp16 = ACPI_GET16 (Target); if (Temp16 > ACPI_DMAR_TYPE_RESERVED) { Temp16 = ACPI_DMAR_TYPE_RESERVED; } AcpiOsPrintf (UINT16_FORMAT, ACPI_GET16 (Target), AcpiDmDmarSubnames[Temp16]); break; case ACPI_DMT_EINJACT: /* EINJ Action types */ Temp8 = *Target; if (Temp8 > ACPI_EINJ_ACTION_RESERVED) { Temp8 = ACPI_EINJ_ACTION_RESERVED; } AcpiOsPrintf (UINT8_FORMAT, *Target, AcpiDmEinjActions[Temp8]); break; case ACPI_DMT_EINJINST: /* EINJ Instruction types */ Temp8 = *Target; if (Temp8 > ACPI_EINJ_INSTRUCTION_RESERVED) { Temp8 = ACPI_EINJ_INSTRUCTION_RESERVED; } AcpiOsPrintf (UINT8_FORMAT, *Target, AcpiDmEinjInstructions[Temp8]); break; case ACPI_DMT_ERSTACT: /* ERST Action types */ Temp8 = *Target; if (Temp8 > ACPI_ERST_ACTION_RESERVED) { Temp8 = ACPI_ERST_ACTION_RESERVED; } AcpiOsPrintf (UINT8_FORMAT, *Target, AcpiDmErstActions[Temp8]); break; case ACPI_DMT_ERSTINST: /* ERST Instruction types */ Temp8 = *Target; if (Temp8 > ACPI_ERST_INSTRUCTION_RESERVED) { Temp8 = ACPI_ERST_INSTRUCTION_RESERVED; } AcpiOsPrintf (UINT8_FORMAT, *Target, AcpiDmErstInstructions[Temp8]); break; case ACPI_DMT_HEST: /* HEST subtable types */ Temp16 = ACPI_GET16 (Target); if (Temp16 > ACPI_HEST_TYPE_RESERVED) { Temp16 = ACPI_HEST_TYPE_RESERVED; } AcpiOsPrintf (UINT16_FORMAT, ACPI_GET16 (Target), AcpiDmHestSubnames[Temp16]); break; case ACPI_DMT_HESTNTFY: AcpiOsPrintf (STRING_FORMAT, "Hardware Error Notification Structure"); AcpiDmDumpTable (TableLength, CurrentOffset, Target, sizeof (ACPI_HEST_NOTIFY), AcpiDmTableInfoHestNotify); AcpiOsPrintf ("\n"); LastOutputBlankLine = TRUE; break; case ACPI_DMT_HESTNTYP: /* HEST Notify types */ Temp8 = *Target; if (Temp8 > ACPI_HEST_NOTIFY_RESERVED) { Temp8 = ACPI_HEST_NOTIFY_RESERVED; } AcpiOsPrintf (UINT8_FORMAT, *Target, AcpiDmHestNotifySubnames[Temp8]); break; case ACPI_DMT_MADT: /* MADT subtable types */ Temp8 = *Target; if (Temp8 > ACPI_MADT_TYPE_RESERVED) { Temp8 = ACPI_MADT_TYPE_RESERVED; } AcpiOsPrintf (UINT8_FORMAT, *Target, AcpiDmMadtSubnames[Temp8]); break; case ACPI_DMT_PCCT: /* PCCT subtable types */ Temp8 = *Target; if (Temp8 > ACPI_PCCT_TYPE_RESERVED) { Temp8 = ACPI_PCCT_TYPE_RESERVED; } AcpiOsPrintf (UINT8_FORMAT, *Target, AcpiDmPcctSubnames[Temp8]); break; case ACPI_DMT_PMTT: /* PMTT subtable types */ Temp8 = *Target; if (Temp8 > ACPI_PMTT_TYPE_RESERVED) { Temp8 = ACPI_PMTT_TYPE_RESERVED; } AcpiOsPrintf (UINT8_FORMAT, *Target, AcpiDmPmttSubnames[Temp8]); break; case ACPI_DMT_SLIC: /* SLIC subtable types */ Temp8 = *Target; if (Temp8 > ACPI_SLIC_TYPE_RESERVED) { Temp8 = ACPI_SLIC_TYPE_RESERVED; } AcpiOsPrintf (UINT32_FORMAT, *Target, AcpiDmSlicSubnames[Temp8]); break; case ACPI_DMT_SRAT: /* SRAT subtable types */ Temp8 = *Target; if (Temp8 > ACPI_SRAT_TYPE_RESERVED) { Temp8 = ACPI_SRAT_TYPE_RESERVED; } AcpiOsPrintf (UINT8_FORMAT, *Target, AcpiDmSratSubnames[Temp8]); break; case ACPI_DMT_FADTPM: /* FADT Preferred PM Profile names */ Temp8 = *Target; if (Temp8 > ACPI_FADT_PM_RESERVED) { Temp8 = ACPI_FADT_PM_RESERVED; } AcpiOsPrintf (UINT8_FORMAT, *Target, AcpiDmFadtProfiles[Temp8]); break; case ACPI_DMT_IVRS: /* IVRS subtable types */ Temp8 = *Target; switch (Temp8) { case ACPI_IVRS_TYPE_HARDWARE: Name = AcpiDmIvrsSubnames[0]; break; case ACPI_IVRS_TYPE_MEMORY1: case ACPI_IVRS_TYPE_MEMORY2: case ACPI_IVRS_TYPE_MEMORY3: Name = AcpiDmIvrsSubnames[1]; break; default: Name = AcpiDmIvrsSubnames[2]; break; } AcpiOsPrintf (UINT8_FORMAT, *Target, Name); break; case ACPI_DMT_EXIT: return (AE_OK); default: ACPI_ERROR ((AE_INFO, "**** Invalid table opcode [0x%X] ****\n", Info->Opcode)); return (AE_SUPPORT); } } if (TableOffset && !SubtableLength) { /* If this table is not the main table, subtable must have valid length */ AcpiOsPrintf ("Invalid zero length subtable\n"); return (AE_BAD_DATA); } return (AE_OK); } /******************************************************************************* * * FUNCTION: AcpiDmCheckAscii * * PARAMETERS: Name - Ascii string * Count - Number of characters to check * * RETURN: None * * DESCRIPTION: Ensure that the requested number of characters are printable * Ascii characters. Sets non-printable and null chars to . * ******************************************************************************/ static void AcpiDmCheckAscii ( UINT8 *Name, char *RepairedName, UINT32 Count) { UINT32 i; for (i = 0; i < Count; i++) { RepairedName[i] = (char) Name[i]; if (!Name[i]) { return; } if (!isprint (Name[i])) { RepairedName[i] = ' '; } } } src/acpica/source/common/dmtbdump.c000066400000000000000000002277471231470457100176640ustar00rootroot00000000000000/****************************************************************************** * * Module Name: dmtbdump - Dump ACPI data tables that contain no AML code * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #include "acpi.h" #include "accommon.h" #include "acdisasm.h" #include "actables.h" /* This module used for application-level code only */ #define _COMPONENT ACPI_CA_DISASSEMBLER ACPI_MODULE_NAME ("dmtbdump") /* Local prototypes */ static void AcpiDmValidateFadtLength ( UINT32 Revision, UINT32 Length); static void AcpiDmDumpBuffer ( void *Table, UINT32 BufferOffset, UINT32 Length, UINT32 AbsoluteOffset, char *Header); /******************************************************************************* * * FUNCTION: AcpiDmDumpBuffer * * PARAMETERS: Table - ACPI Table or subtable * BufferOffset - Offset of buffer from Table above * Length - Length of the buffer * AbsoluteOffset - Offset of buffer in the main ACPI table * Header - Name of the buffer field (printed on the * first line only.) * * RETURN: None * * DESCRIPTION: Format the contents of an arbitrary length data buffer (in the * disassembler output format.) * ******************************************************************************/ static void AcpiDmDumpBuffer ( void *Table, UINT32 BufferOffset, UINT32 Length, UINT32 AbsoluteOffset, char *Header) { UINT8 *Buffer; UINT32 i; if (!Length) { return; } Buffer = ACPI_CAST_PTR (UINT8, Table) + BufferOffset; i = 0; while (i < Length) { if (!(i % 16)) { AcpiOsPrintf ("\n"); AcpiDmLineHeader (AbsoluteOffset, ((Length - i) > 16) ? 16 : (Length - i), Header); Header = NULL; } AcpiOsPrintf ("%.02X ", *Buffer); i++; Buffer++; AbsoluteOffset++; } AcpiOsPrintf ("\n"); } /******************************************************************************* * * FUNCTION: AcpiDmDumpRsdp * * PARAMETERS: Table - A RSDP * * RETURN: Length of the table (there is not always a length field, * use revision or length if available (ACPI 2.0+)) * * DESCRIPTION: Format the contents of a RSDP * ******************************************************************************/ UINT32 AcpiDmDumpRsdp ( ACPI_TABLE_HEADER *Table) { ACPI_TABLE_RSDP *Rsdp = ACPI_CAST_PTR (ACPI_TABLE_RSDP, Table); UINT32 Length = sizeof (ACPI_RSDP_COMMON); UINT8 Checksum; /* Dump the common ACPI 1.0 portion */ AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoRsdp1); /* Validate the first checksum */ Checksum = AcpiDmGenerateChecksum (Rsdp, sizeof (ACPI_RSDP_COMMON), Rsdp->Checksum); if (Checksum != Rsdp->Checksum) { AcpiOsPrintf ("/* Incorrect Checksum above, should be 0x%2.2X */\n", Checksum); } /* The RSDP for ACPI 2.0+ contains more data and has a Length field */ if (Rsdp->Revision > 0) { Length = Rsdp->Length; AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoRsdp2); /* Validate the extended checksum over entire RSDP */ Checksum = AcpiDmGenerateChecksum (Rsdp, sizeof (ACPI_TABLE_RSDP), Rsdp->ExtendedChecksum); if (Checksum != Rsdp->ExtendedChecksum) { AcpiOsPrintf ( "/* Incorrect Extended Checksum above, should be 0x%2.2X */\n", Checksum); } } return (Length); } /******************************************************************************* * * FUNCTION: AcpiDmDumpRsdt * * PARAMETERS: Table - A RSDT * * RETURN: None * * DESCRIPTION: Format the contents of a RSDT * ******************************************************************************/ void AcpiDmDumpRsdt ( ACPI_TABLE_HEADER *Table) { UINT32 *Array; UINT32 Entries; UINT32 Offset; UINT32 i; /* Point to start of table pointer array */ Array = ACPI_CAST_PTR (ACPI_TABLE_RSDT, Table)->TableOffsetEntry; Offset = sizeof (ACPI_TABLE_HEADER); /* RSDT uses 32-bit pointers */ Entries = (Table->Length - sizeof (ACPI_TABLE_HEADER)) / sizeof (UINT32); for (i = 0; i < Entries; i++) { AcpiDmLineHeader2 (Offset, sizeof (UINT32), "ACPI Table Address", i); AcpiOsPrintf ("%8.8X\n", Array[i]); Offset += sizeof (UINT32); } } /******************************************************************************* * * FUNCTION: AcpiDmDumpXsdt * * PARAMETERS: Table - A XSDT * * RETURN: None * * DESCRIPTION: Format the contents of a XSDT * ******************************************************************************/ void AcpiDmDumpXsdt ( ACPI_TABLE_HEADER *Table) { UINT64 *Array; UINT32 Entries; UINT32 Offset; UINT32 i; /* Point to start of table pointer array */ Array = ACPI_CAST_PTR (ACPI_TABLE_XSDT, Table)->TableOffsetEntry; Offset = sizeof (ACPI_TABLE_HEADER); /* XSDT uses 64-bit pointers */ Entries = (Table->Length - sizeof (ACPI_TABLE_HEADER)) / sizeof (UINT64); for (i = 0; i < Entries; i++) { AcpiDmLineHeader2 (Offset, sizeof (UINT64), "ACPI Table Address", i); AcpiOsPrintf ("%8.8X%8.8X\n", ACPI_FORMAT_UINT64 (Array[i])); Offset += sizeof (UINT64); } } /******************************************************************************* * * FUNCTION: AcpiDmDumpFadt * * PARAMETERS: Table - A FADT * * RETURN: None * * DESCRIPTION: Format the contents of a FADT * * NOTE: We cannot depend on the FADT version to indicate the actual * contents of the FADT because of BIOS bugs. The table length * is the only reliable indicator. * ******************************************************************************/ void AcpiDmDumpFadt ( ACPI_TABLE_HEADER *Table) { /* Always dump the minimum FADT revision 1 fields (ACPI 1.0) */ AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoFadt1); /* Check for FADT revision 2 fields (ACPI 1.0B MS extensions) */ if ((Table->Length > ACPI_FADT_V1_SIZE) && (Table->Length <= ACPI_FADT_V2_SIZE)) { AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoFadt2); } /* Check for FADT revision 3/4 fields and up (ACPI 2.0+ extended data) */ else if (Table->Length > ACPI_FADT_V2_SIZE) { AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoFadt3); /* Check for FADT revision 5 fields and up (ACPI 5.0+) */ if (Table->Length > ACPI_FADT_V3_SIZE) { AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoFadt5); } } /* Validate various fields in the FADT, including length */ AcpiTbCreateLocalFadt (Table, Table->Length); /* Validate FADT length against the revision */ AcpiDmValidateFadtLength (Table->Revision, Table->Length); } /******************************************************************************* * * FUNCTION: AcpiDmValidateFadtLength * * PARAMETERS: Revision - FADT revision (Header->Revision) * Length - FADT length (Header->Length * * RETURN: None * * DESCRIPTION: Check the FADT revision against the expected table length for * that revision. Issue a warning if the length is not what was * expected. This seems to be such a common BIOS bug that the * FADT revision has been rendered virtually meaningless. * ******************************************************************************/ static void AcpiDmValidateFadtLength ( UINT32 Revision, UINT32 Length) { UINT32 ExpectedLength; switch (Revision) { case 0: AcpiOsPrintf ("// ACPI Warning: Invalid FADT revision: 0\n"); return; case 1: ExpectedLength = ACPI_FADT_V1_SIZE; break; case 2: ExpectedLength = ACPI_FADT_V2_SIZE; break; case 3: case 4: ExpectedLength = ACPI_FADT_V3_SIZE; break; case 5: ExpectedLength = ACPI_FADT_V5_SIZE; break; default: return; } if (Length == ExpectedLength) { return; } AcpiOsPrintf ( "\n// ACPI Warning: FADT revision %X does not match length: found %X expected %X\n", Revision, Length, ExpectedLength); } /******************************************************************************* * * FUNCTION: AcpiDmDumpAsf * * PARAMETERS: Table - A ASF table * * RETURN: None * * DESCRIPTION: Format the contents of a ASF table * ******************************************************************************/ void AcpiDmDumpAsf ( ACPI_TABLE_HEADER *Table) { ACPI_STATUS Status; UINT32 Offset = sizeof (ACPI_TABLE_HEADER); ACPI_ASF_INFO *SubTable; ACPI_DMTABLE_INFO *InfoTable; ACPI_DMTABLE_INFO *DataInfoTable = NULL; UINT8 *DataTable = NULL; UINT32 DataCount = 0; UINT32 DataLength = 0; UINT32 DataOffset = 0; UINT32 i; UINT8 Type; /* No main table, only sub-tables */ SubTable = ACPI_ADD_PTR (ACPI_ASF_INFO, Table, Offset); while (Offset < Table->Length) { /* Common sub-table header */ Status = AcpiDmDumpTable (Table->Length, Offset, SubTable, SubTable->Header.Length, AcpiDmTableInfoAsfHdr); if (ACPI_FAILURE (Status)) { return; } /* The actual type is the lower 7 bits of Type */ Type = (UINT8) (SubTable->Header.Type & 0x7F); switch (Type) { case ACPI_ASF_TYPE_INFO: InfoTable = AcpiDmTableInfoAsf0; break; case ACPI_ASF_TYPE_ALERT: InfoTable = AcpiDmTableInfoAsf1; DataInfoTable = AcpiDmTableInfoAsf1a; DataTable = ACPI_ADD_PTR (UINT8, SubTable, sizeof (ACPI_ASF_ALERT)); DataCount = ACPI_CAST_PTR (ACPI_ASF_ALERT, SubTable)->Alerts; DataLength = ACPI_CAST_PTR (ACPI_ASF_ALERT, SubTable)->DataLength; DataOffset = Offset + sizeof (ACPI_ASF_ALERT); break; case ACPI_ASF_TYPE_CONTROL: InfoTable = AcpiDmTableInfoAsf2; DataInfoTable = AcpiDmTableInfoAsf2a; DataTable = ACPI_ADD_PTR (UINT8, SubTable, sizeof (ACPI_ASF_REMOTE)); DataCount = ACPI_CAST_PTR (ACPI_ASF_REMOTE, SubTable)->Controls; DataLength = ACPI_CAST_PTR (ACPI_ASF_REMOTE, SubTable)->DataLength; DataOffset = Offset + sizeof (ACPI_ASF_REMOTE); break; case ACPI_ASF_TYPE_BOOT: InfoTable = AcpiDmTableInfoAsf3; break; case ACPI_ASF_TYPE_ADDRESS: InfoTable = AcpiDmTableInfoAsf4; DataTable = ACPI_ADD_PTR (UINT8, SubTable, sizeof (ACPI_ASF_ADDRESS)); DataLength = ACPI_CAST_PTR (ACPI_ASF_ADDRESS, SubTable)->Devices; DataOffset = Offset + sizeof (ACPI_ASF_ADDRESS); break; default: AcpiOsPrintf ("\n**** Unknown ASF sub-table type 0x%X\n", SubTable->Header.Type); return; } Status = AcpiDmDumpTable (Table->Length, Offset, SubTable, SubTable->Header.Length, InfoTable); if (ACPI_FAILURE (Status)) { return; } /* Dump variable-length extra data */ switch (Type) { case ACPI_ASF_TYPE_ALERT: case ACPI_ASF_TYPE_CONTROL: for (i = 0; i < DataCount; i++) { AcpiOsPrintf ("\n"); Status = AcpiDmDumpTable (Table->Length, DataOffset, DataTable, DataLength, DataInfoTable); if (ACPI_FAILURE (Status)) { return; } DataTable = ACPI_ADD_PTR (UINT8, DataTable, DataLength); DataOffset += DataLength; } break; case ACPI_ASF_TYPE_ADDRESS: for (i = 0; i < DataLength; i++) { if (!(i % 16)) { AcpiDmLineHeader (DataOffset, 1, "Addresses"); } AcpiOsPrintf ("%2.2X ", *DataTable); DataTable++; DataOffset++; if (DataOffset > Table->Length) { AcpiOsPrintf ("**** ACPI table terminates in the middle of a data structure!\n"); return; } } AcpiOsPrintf ("\n"); break; default: break; } AcpiOsPrintf ("\n"); /* Point to next sub-table */ if (!SubTable->Header.Length) { AcpiOsPrintf ("Invalid zero subtable header length\n"); return; } Offset += SubTable->Header.Length; SubTable = ACPI_ADD_PTR (ACPI_ASF_INFO, SubTable, SubTable->Header.Length); } } /******************************************************************************* * * FUNCTION: AcpiDmDumpCpep * * PARAMETERS: Table - A CPEP table * * RETURN: None * * DESCRIPTION: Format the contents of a CPEP. This table type consists * of an open-ended number of subtables. * ******************************************************************************/ void AcpiDmDumpCpep ( ACPI_TABLE_HEADER *Table) { ACPI_STATUS Status; ACPI_CPEP_POLLING *SubTable; UINT32 Length = Table->Length; UINT32 Offset = sizeof (ACPI_TABLE_CPEP); /* Main table */ Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoCpep); if (ACPI_FAILURE (Status)) { return; } /* Sub-tables */ SubTable = ACPI_ADD_PTR (ACPI_CPEP_POLLING, Table, Offset); while (Offset < Table->Length) { AcpiOsPrintf ("\n"); Status = AcpiDmDumpTable (Length, Offset, SubTable, SubTable->Header.Length, AcpiDmTableInfoCpep0); if (ACPI_FAILURE (Status)) { return; } /* Point to next sub-table */ Offset += SubTable->Header.Length; SubTable = ACPI_ADD_PTR (ACPI_CPEP_POLLING, SubTable, SubTable->Header.Length); } } /******************************************************************************* * * FUNCTION: AcpiDmDumpCsrt * * PARAMETERS: Table - A CSRT table * * RETURN: None * * DESCRIPTION: Format the contents of a CSRT. This table type consists * of an open-ended number of subtables. * ******************************************************************************/ void AcpiDmDumpCsrt ( ACPI_TABLE_HEADER *Table) { ACPI_STATUS Status; ACPI_CSRT_GROUP *SubTable; ACPI_CSRT_SHARED_INFO *SharedInfoTable; ACPI_CSRT_DESCRIPTOR *SubSubTable; UINT32 Length = Table->Length; UINT32 Offset = sizeof (ACPI_TABLE_CSRT); UINT32 SubOffset; UINT32 SubSubOffset; UINT32 InfoLength; /* The main table only contains the ACPI header, thus already handled */ /* Sub-tables (Resource Groups) */ SubTable = ACPI_ADD_PTR (ACPI_CSRT_GROUP, Table, Offset); while (Offset < Table->Length) { /* Resource group subtable */ AcpiOsPrintf ("\n"); Status = AcpiDmDumpTable (Length, Offset, SubTable, SubTable->Length, AcpiDmTableInfoCsrt0); if (ACPI_FAILURE (Status)) { return; } /* Shared info subtable (One per resource group) */ SubOffset = sizeof (ACPI_CSRT_GROUP); SharedInfoTable = ACPI_ADD_PTR (ACPI_CSRT_SHARED_INFO, Table, Offset + SubOffset); AcpiOsPrintf ("\n"); Status = AcpiDmDumpTable (Length, Offset + SubOffset, SharedInfoTable, sizeof (ACPI_CSRT_SHARED_INFO), AcpiDmTableInfoCsrt1); if (ACPI_FAILURE (Status)) { return; } SubOffset += SubTable->SharedInfoLength; /* Sub-Subtables (Resource Descriptors) */ SubSubTable = ACPI_ADD_PTR (ACPI_CSRT_DESCRIPTOR, Table, Offset + SubOffset); while ((SubOffset < SubTable->Length) && ((Offset + SubOffset) < Table->Length)) { AcpiOsPrintf ("\n"); Status = AcpiDmDumpTable (Length, Offset + SubOffset, SubSubTable, SubSubTable->Length, AcpiDmTableInfoCsrt2); if (ACPI_FAILURE (Status)) { return; } SubSubOffset = sizeof (ACPI_CSRT_DESCRIPTOR); /* Resource-specific info buffer */ InfoLength = SubSubTable->Length - SubSubOffset; AcpiDmDumpBuffer (SubSubTable, SubSubOffset, InfoLength, Offset + SubOffset + SubSubOffset, "ResourceInfo"); SubSubOffset += InfoLength; /* Point to next sub-subtable */ SubOffset += SubSubTable->Length; SubSubTable = ACPI_ADD_PTR (ACPI_CSRT_DESCRIPTOR, SubSubTable, SubSubTable->Length); } /* Point to next sub-table */ Offset += SubTable->Length; SubTable = ACPI_ADD_PTR (ACPI_CSRT_GROUP, SubTable, SubTable->Length); } } /******************************************************************************* * * FUNCTION: AcpiDmDumpDbg2 * * PARAMETERS: Table - A DBG2 table * * RETURN: None * * DESCRIPTION: Format the contents of a DBG2. This table type consists * of an open-ended number of subtables. * ******************************************************************************/ void AcpiDmDumpDbg2 ( ACPI_TABLE_HEADER *Table) { ACPI_STATUS Status; ACPI_DBG2_DEVICE *SubTable; UINT32 Length = Table->Length; UINT32 Offset = sizeof (ACPI_TABLE_DBG2); UINT32 i; UINT32 ArrayOffset; UINT32 AbsoluteOffset; UINT8 *Array; /* Main table */ Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoDbg2); if (ACPI_FAILURE (Status)) { return; } /* Sub-tables */ SubTable = ACPI_ADD_PTR (ACPI_DBG2_DEVICE, Table, Offset); while (Offset < Table->Length) { AcpiOsPrintf ("\n"); Status = AcpiDmDumpTable (Length, Offset, SubTable, SubTable->Length, AcpiDmTableInfoDbg2Device); if (ACPI_FAILURE (Status)) { return; } /* Dump the BaseAddress array */ for (i = 0; i < SubTable->RegisterCount; i++) { ArrayOffset = SubTable->BaseAddressOffset + (sizeof (ACPI_GENERIC_ADDRESS) * i); AbsoluteOffset = Offset + ArrayOffset; Array = (UINT8 *) SubTable + ArrayOffset; Status = AcpiDmDumpTable (Length, AbsoluteOffset, Array, SubTable->Length, AcpiDmTableInfoDbg2Addr); if (ACPI_FAILURE (Status)) { return; } } /* Dump the AddressSize array */ for (i = 0; i < SubTable->RegisterCount; i++) { ArrayOffset = SubTable->AddressSizeOffset + (sizeof (UINT32) * i); AbsoluteOffset = Offset + ArrayOffset; Array = (UINT8 *) SubTable + ArrayOffset; Status = AcpiDmDumpTable (Length, AbsoluteOffset, Array, SubTable->Length, AcpiDmTableInfoDbg2Size); if (ACPI_FAILURE (Status)) { return; } } /* Dump the Namestring (required) */ AcpiOsPrintf ("\n"); ArrayOffset = SubTable->NamepathOffset; AbsoluteOffset = Offset + ArrayOffset; Array = (UINT8 *) SubTable + ArrayOffset; Status = AcpiDmDumpTable (Length, AbsoluteOffset, Array, SubTable->Length, AcpiDmTableInfoDbg2Name); if (ACPI_FAILURE (Status)) { return; } /* Dump the OemData (optional) */ if (SubTable->OemDataOffset) { AcpiDmDumpBuffer (SubTable, SubTable->OemDataOffset, SubTable->OemDataLength, Offset + SubTable->OemDataOffset, "OEM Data"); } /* Point to next sub-table */ Offset += SubTable->Length; SubTable = ACPI_ADD_PTR (ACPI_DBG2_DEVICE, SubTable, SubTable->Length); } } /******************************************************************************* * * FUNCTION: AcpiDmDumpDmar * * PARAMETERS: Table - A DMAR table * * RETURN: None * * DESCRIPTION: Format the contents of a DMAR. This table type consists * of an open-ended number of subtables. * ******************************************************************************/ void AcpiDmDumpDmar ( ACPI_TABLE_HEADER *Table) { ACPI_STATUS Status; ACPI_DMAR_HEADER *SubTable; UINT32 Length = Table->Length; UINT32 Offset = sizeof (ACPI_TABLE_DMAR); ACPI_DMTABLE_INFO *InfoTable; ACPI_DMAR_DEVICE_SCOPE *ScopeTable; UINT32 ScopeOffset; UINT8 *PciPath; UINT32 PathOffset; /* Main table */ Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoDmar); if (ACPI_FAILURE (Status)) { return; } /* Sub-tables */ SubTable = ACPI_ADD_PTR (ACPI_DMAR_HEADER, Table, Offset); while (Offset < Table->Length) { /* Common sub-table header */ AcpiOsPrintf ("\n"); Status = AcpiDmDumpTable (Length, Offset, SubTable, SubTable->Length, AcpiDmTableInfoDmarHdr); if (ACPI_FAILURE (Status)) { return; } AcpiOsPrintf ("\n"); switch (SubTable->Type) { case ACPI_DMAR_TYPE_HARDWARE_UNIT: InfoTable = AcpiDmTableInfoDmar0; ScopeOffset = sizeof (ACPI_DMAR_HARDWARE_UNIT); break; case ACPI_DMAR_TYPE_RESERVED_MEMORY: InfoTable = AcpiDmTableInfoDmar1; ScopeOffset = sizeof (ACPI_DMAR_RESERVED_MEMORY); break; case ACPI_DMAR_TYPE_ATSR: InfoTable = AcpiDmTableInfoDmar2; ScopeOffset = sizeof (ACPI_DMAR_ATSR); break; case ACPI_DMAR_HARDWARE_AFFINITY: InfoTable = AcpiDmTableInfoDmar3; ScopeOffset = sizeof (ACPI_DMAR_RHSA); break; default: AcpiOsPrintf ("\n**** Unknown DMAR sub-table type 0x%X\n\n", SubTable->Type); return; } Status = AcpiDmDumpTable (Length, Offset, SubTable, SubTable->Length, InfoTable); if (ACPI_FAILURE (Status)) { return; } /* Dump the device scope entries (if any) */ ScopeTable = ACPI_ADD_PTR (ACPI_DMAR_DEVICE_SCOPE, SubTable, ScopeOffset); while (ScopeOffset < SubTable->Length) { AcpiOsPrintf ("\n"); Status = AcpiDmDumpTable (Length, Offset + ScopeOffset, ScopeTable, ScopeTable->Length, AcpiDmTableInfoDmarScope); if (ACPI_FAILURE (Status)) { return; } AcpiOsPrintf ("\n"); /* Dump the PCI Path entries for this device scope */ PathOffset = sizeof (ACPI_DMAR_DEVICE_SCOPE); /* Path entries start at this offset */ PciPath = ACPI_ADD_PTR (UINT8, ScopeTable, sizeof (ACPI_DMAR_DEVICE_SCOPE)); while (PathOffset < ScopeTable->Length) { AcpiDmLineHeader ((PathOffset + ScopeOffset + Offset), 2, "PCI Path"); AcpiOsPrintf ("%2.2X,%2.2X\n", PciPath[0], PciPath[1]); /* Point to next PCI Path entry */ PathOffset += 2; PciPath += 2; AcpiOsPrintf ("\n"); } /* Point to next device scope entry */ ScopeOffset += ScopeTable->Length; ScopeTable = ACPI_ADD_PTR (ACPI_DMAR_DEVICE_SCOPE, ScopeTable, ScopeTable->Length); } /* Point to next sub-table */ Offset += SubTable->Length; SubTable = ACPI_ADD_PTR (ACPI_DMAR_HEADER, SubTable, SubTable->Length); } } /******************************************************************************* * * FUNCTION: AcpiDmDumpEinj * * PARAMETERS: Table - A EINJ table * * RETURN: None * * DESCRIPTION: Format the contents of a EINJ. This table type consists * of an open-ended number of subtables. * ******************************************************************************/ void AcpiDmDumpEinj ( ACPI_TABLE_HEADER *Table) { ACPI_STATUS Status; ACPI_WHEA_HEADER *SubTable; UINT32 Length = Table->Length; UINT32 Offset = sizeof (ACPI_TABLE_EINJ); /* Main table */ Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoEinj); if (ACPI_FAILURE (Status)) { return; } /* Sub-tables */ SubTable = ACPI_ADD_PTR (ACPI_WHEA_HEADER, Table, Offset); while (Offset < Table->Length) { AcpiOsPrintf ("\n"); Status = AcpiDmDumpTable (Length, Offset, SubTable, sizeof (ACPI_WHEA_HEADER), AcpiDmTableInfoEinj0); if (ACPI_FAILURE (Status)) { return; } /* Point to next sub-table (each subtable is of fixed length) */ Offset += sizeof (ACPI_WHEA_HEADER); SubTable = ACPI_ADD_PTR (ACPI_WHEA_HEADER, SubTable, sizeof (ACPI_WHEA_HEADER)); } } /******************************************************************************* * * FUNCTION: AcpiDmDumpErst * * PARAMETERS: Table - A ERST table * * RETURN: None * * DESCRIPTION: Format the contents of a ERST. This table type consists * of an open-ended number of subtables. * ******************************************************************************/ void AcpiDmDumpErst ( ACPI_TABLE_HEADER *Table) { ACPI_STATUS Status; ACPI_WHEA_HEADER *SubTable; UINT32 Length = Table->Length; UINT32 Offset = sizeof (ACPI_TABLE_ERST); /* Main table */ Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoErst); if (ACPI_FAILURE (Status)) { return; } /* Sub-tables */ SubTable = ACPI_ADD_PTR (ACPI_WHEA_HEADER, Table, Offset); while (Offset < Table->Length) { AcpiOsPrintf ("\n"); Status = AcpiDmDumpTable (Length, Offset, SubTable, sizeof (ACPI_WHEA_HEADER), AcpiDmTableInfoErst0); if (ACPI_FAILURE (Status)) { return; } /* Point to next sub-table (each subtable is of fixed length) */ Offset += sizeof (ACPI_WHEA_HEADER); SubTable = ACPI_ADD_PTR (ACPI_WHEA_HEADER, SubTable, sizeof (ACPI_WHEA_HEADER)); } } /******************************************************************************* * * FUNCTION: AcpiDmDumpFpdt * * PARAMETERS: Table - A FPDT table * * RETURN: None * * DESCRIPTION: Format the contents of a FPDT. This table type consists * of an open-ended number of subtables. * ******************************************************************************/ void AcpiDmDumpFpdt ( ACPI_TABLE_HEADER *Table) { ACPI_STATUS Status; ACPI_FPDT_HEADER *SubTable; UINT32 Length = Table->Length; UINT32 Offset = sizeof (ACPI_TABLE_FPDT); ACPI_DMTABLE_INFO *InfoTable; /* There is no main table (other than the standard ACPI header) */ /* Sub-tables */ SubTable = ACPI_ADD_PTR (ACPI_FPDT_HEADER, Table, Offset); while (Offset < Table->Length) { /* Common sub-table header */ AcpiOsPrintf ("\n"); Status = AcpiDmDumpTable (Length, Offset, SubTable, SubTable->Length, AcpiDmTableInfoFpdtHdr); if (ACPI_FAILURE (Status)) { return; } switch (SubTable->Type) { case ACPI_FPDT_TYPE_BOOT: InfoTable = AcpiDmTableInfoFpdt0; break; case ACPI_FPDT_TYPE_S3PERF: InfoTable = AcpiDmTableInfoFpdt1; break; default: AcpiOsPrintf ("\n**** Unknown FPDT sub-table type 0x%X\n\n", SubTable->Type); /* Attempt to continue */ if (!SubTable->Length) { AcpiOsPrintf ("Invalid zero length subtable\n"); return; } goto NextSubTable; } Status = AcpiDmDumpTable (Length, Offset, SubTable, SubTable->Length, InfoTable); if (ACPI_FAILURE (Status)) { return; } NextSubTable: /* Point to next sub-table */ Offset += SubTable->Length; SubTable = ACPI_ADD_PTR (ACPI_FPDT_HEADER, SubTable, SubTable->Length); } } /******************************************************************************* * * FUNCTION: AcpiDmDumpHest * * PARAMETERS: Table - A HEST table * * RETURN: None * * DESCRIPTION: Format the contents of a HEST. This table type consists * of an open-ended number of subtables. * ******************************************************************************/ void AcpiDmDumpHest ( ACPI_TABLE_HEADER *Table) { ACPI_STATUS Status; ACPI_HEST_HEADER *SubTable; UINT32 Length = Table->Length; UINT32 Offset = sizeof (ACPI_TABLE_HEST); ACPI_DMTABLE_INFO *InfoTable; UINT32 SubTableLength; UINT32 BankCount; ACPI_HEST_IA_ERROR_BANK *BankTable; /* Main table */ Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoHest); if (ACPI_FAILURE (Status)) { return; } /* Sub-tables */ SubTable = ACPI_ADD_PTR (ACPI_HEST_HEADER, Table, Offset); while (Offset < Table->Length) { BankCount = 0; switch (SubTable->Type) { case ACPI_HEST_TYPE_IA32_CHECK: InfoTable = AcpiDmTableInfoHest0; SubTableLength = sizeof (ACPI_HEST_IA_MACHINE_CHECK); BankCount = (ACPI_CAST_PTR (ACPI_HEST_IA_MACHINE_CHECK, SubTable))->NumHardwareBanks; break; case ACPI_HEST_TYPE_IA32_CORRECTED_CHECK: InfoTable = AcpiDmTableInfoHest1; SubTableLength = sizeof (ACPI_HEST_IA_CORRECTED); BankCount = (ACPI_CAST_PTR (ACPI_HEST_IA_CORRECTED, SubTable))->NumHardwareBanks; break; case ACPI_HEST_TYPE_IA32_NMI: InfoTable = AcpiDmTableInfoHest2; SubTableLength = sizeof (ACPI_HEST_IA_NMI); break; case ACPI_HEST_TYPE_AER_ROOT_PORT: InfoTable = AcpiDmTableInfoHest6; SubTableLength = sizeof (ACPI_HEST_AER_ROOT); break; case ACPI_HEST_TYPE_AER_ENDPOINT: InfoTable = AcpiDmTableInfoHest7; SubTableLength = sizeof (ACPI_HEST_AER); break; case ACPI_HEST_TYPE_AER_BRIDGE: InfoTable = AcpiDmTableInfoHest8; SubTableLength = sizeof (ACPI_HEST_AER_BRIDGE); break; case ACPI_HEST_TYPE_GENERIC_ERROR: InfoTable = AcpiDmTableInfoHest9; SubTableLength = sizeof (ACPI_HEST_GENERIC); break; default: /* Cannot continue on unknown type - no length */ AcpiOsPrintf ("\n**** Unknown HEST sub-table type 0x%X\n", SubTable->Type); return; } AcpiOsPrintf ("\n"); Status = AcpiDmDumpTable (Length, Offset, SubTable, SubTableLength, InfoTable); if (ACPI_FAILURE (Status)) { return; } /* Point to end of current subtable (each subtable above is of fixed length) */ Offset += SubTableLength; /* If there are any (fixed-length) Error Banks from above, dump them now */ if (BankCount) { BankTable = ACPI_ADD_PTR (ACPI_HEST_IA_ERROR_BANK, SubTable, SubTableLength); SubTableLength += BankCount * sizeof (ACPI_HEST_IA_ERROR_BANK); while (BankCount) { AcpiOsPrintf ("\n"); Status = AcpiDmDumpTable (Length, Offset, BankTable, sizeof (ACPI_HEST_IA_ERROR_BANK), AcpiDmTableInfoHestBank); if (ACPI_FAILURE (Status)) { return; } Offset += sizeof (ACPI_HEST_IA_ERROR_BANK); BankTable++; BankCount--; } } /* Point to next sub-table */ SubTable = ACPI_ADD_PTR (ACPI_HEST_HEADER, SubTable, SubTableLength); } } /******************************************************************************* * * FUNCTION: AcpiDmDumpIvrs * * PARAMETERS: Table - A IVRS table * * RETURN: None * * DESCRIPTION: Format the contents of a IVRS * ******************************************************************************/ static UINT8 EntrySizes[] = {4,8,16,32}; void AcpiDmDumpIvrs ( ACPI_TABLE_HEADER *Table) { ACPI_STATUS Status; UINT32 Offset = sizeof (ACPI_TABLE_IVRS); UINT32 EntryOffset; UINT32 EntryLength; UINT32 EntryType; ACPI_IVRS_DE_HEADER *DeviceEntry; ACPI_IVRS_HEADER *SubTable; ACPI_DMTABLE_INFO *InfoTable; /* Main table */ Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoIvrs); if (ACPI_FAILURE (Status)) { return; } /* Sub-tables */ SubTable = ACPI_ADD_PTR (ACPI_IVRS_HEADER, Table, Offset); while (Offset < Table->Length) { /* Common sub-table header */ AcpiOsPrintf ("\n"); Status = AcpiDmDumpTable (Table->Length, Offset, SubTable, SubTable->Length, AcpiDmTableInfoIvrsHdr); if (ACPI_FAILURE (Status)) { return; } switch (SubTable->Type) { case ACPI_IVRS_TYPE_HARDWARE: InfoTable = AcpiDmTableInfoIvrs0; break; case ACPI_IVRS_TYPE_MEMORY1: case ACPI_IVRS_TYPE_MEMORY2: case ACPI_IVRS_TYPE_MEMORY3: InfoTable = AcpiDmTableInfoIvrs1; break; default: AcpiOsPrintf ("\n**** Unknown IVRS sub-table type 0x%X\n", SubTable->Type); /* Attempt to continue */ if (!SubTable->Length) { AcpiOsPrintf ("Invalid zero length subtable\n"); return; } goto NextSubTable; } /* Dump the subtable */ AcpiOsPrintf ("\n"); Status = AcpiDmDumpTable (Table->Length, Offset, SubTable, SubTable->Length, InfoTable); if (ACPI_FAILURE (Status)) { return; } /* The hardware subtable can contain multiple device entries */ if (SubTable->Type == ACPI_IVRS_TYPE_HARDWARE) { EntryOffset = Offset + sizeof (ACPI_IVRS_HARDWARE); DeviceEntry = ACPI_ADD_PTR (ACPI_IVRS_DE_HEADER, SubTable, sizeof (ACPI_IVRS_HARDWARE)); while (EntryOffset < (Offset + SubTable->Length)) { AcpiOsPrintf ("\n"); /* * Upper 2 bits of Type encode the length of the device entry * * 00 = 4 byte * 01 = 8 byte * 10 = 16 byte - currently no entries defined * 11 = 32 byte - currently no entries defined */ EntryType = DeviceEntry->Type; EntryLength = EntrySizes [EntryType >> 6]; switch (EntryType) { /* 4-byte device entries */ case ACPI_IVRS_TYPE_PAD4: case ACPI_IVRS_TYPE_ALL: case ACPI_IVRS_TYPE_SELECT: case ACPI_IVRS_TYPE_START: case ACPI_IVRS_TYPE_END: InfoTable = AcpiDmTableInfoIvrs4; break; /* 8-byte entries, type A */ case ACPI_IVRS_TYPE_ALIAS_SELECT: case ACPI_IVRS_TYPE_ALIAS_START: InfoTable = AcpiDmTableInfoIvrs8a; break; /* 8-byte entries, type B */ case ACPI_IVRS_TYPE_PAD8: case ACPI_IVRS_TYPE_EXT_SELECT: case ACPI_IVRS_TYPE_EXT_START: InfoTable = AcpiDmTableInfoIvrs8b; break; /* 8-byte entries, type C */ case ACPI_IVRS_TYPE_SPECIAL: InfoTable = AcpiDmTableInfoIvrs8c; break; default: InfoTable = AcpiDmTableInfoIvrs4; AcpiOsPrintf ( "\n**** Unknown IVRS device entry type/length: " "0x%.2X/0x%X at offset 0x%.4X: (header below)\n", EntryType, EntryLength, EntryOffset); break; } /* Dump the Device Entry */ Status = AcpiDmDumpTable (Table->Length, EntryOffset, DeviceEntry, EntryLength, InfoTable); EntryOffset += EntryLength; DeviceEntry = ACPI_ADD_PTR (ACPI_IVRS_DE_HEADER, DeviceEntry, EntryLength); } } NextSubTable: /* Point to next sub-table */ Offset += SubTable->Length; SubTable = ACPI_ADD_PTR (ACPI_IVRS_HEADER, SubTable, SubTable->Length); } } /******************************************************************************* * * FUNCTION: AcpiDmDumpMadt * * PARAMETERS: Table - A MADT table * * RETURN: None * * DESCRIPTION: Format the contents of a MADT. This table type consists * of an open-ended number of subtables. * ******************************************************************************/ void AcpiDmDumpMadt ( ACPI_TABLE_HEADER *Table) { ACPI_STATUS Status; ACPI_SUBTABLE_HEADER *SubTable; UINT32 Length = Table->Length; UINT32 Offset = sizeof (ACPI_TABLE_MADT); ACPI_DMTABLE_INFO *InfoTable; /* Main table */ Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoMadt); if (ACPI_FAILURE (Status)) { return; } /* Sub-tables */ SubTable = ACPI_ADD_PTR (ACPI_SUBTABLE_HEADER, Table, Offset); while (Offset < Table->Length) { /* Common sub-table header */ AcpiOsPrintf ("\n"); Status = AcpiDmDumpTable (Length, Offset, SubTable, SubTable->Length, AcpiDmTableInfoMadtHdr); if (ACPI_FAILURE (Status)) { return; } switch (SubTable->Type) { case ACPI_MADT_TYPE_LOCAL_APIC: InfoTable = AcpiDmTableInfoMadt0; break; case ACPI_MADT_TYPE_IO_APIC: InfoTable = AcpiDmTableInfoMadt1; break; case ACPI_MADT_TYPE_INTERRUPT_OVERRIDE: InfoTable = AcpiDmTableInfoMadt2; break; case ACPI_MADT_TYPE_NMI_SOURCE: InfoTable = AcpiDmTableInfoMadt3; break; case ACPI_MADT_TYPE_LOCAL_APIC_NMI: InfoTable = AcpiDmTableInfoMadt4; break; case ACPI_MADT_TYPE_LOCAL_APIC_OVERRIDE: InfoTable = AcpiDmTableInfoMadt5; break; case ACPI_MADT_TYPE_IO_SAPIC: InfoTable = AcpiDmTableInfoMadt6; break; case ACPI_MADT_TYPE_LOCAL_SAPIC: InfoTable = AcpiDmTableInfoMadt7; break; case ACPI_MADT_TYPE_INTERRUPT_SOURCE: InfoTable = AcpiDmTableInfoMadt8; break; case ACPI_MADT_TYPE_LOCAL_X2APIC: InfoTable = AcpiDmTableInfoMadt9; break; case ACPI_MADT_TYPE_LOCAL_X2APIC_NMI: InfoTable = AcpiDmTableInfoMadt10; break; case ACPI_MADT_TYPE_GENERIC_INTERRUPT: InfoTable = AcpiDmTableInfoMadt11; break; case ACPI_MADT_TYPE_GENERIC_DISTRIBUTOR: InfoTable = AcpiDmTableInfoMadt12; break; default: AcpiOsPrintf ("\n**** Unknown MADT sub-table type 0x%X\n\n", SubTable->Type); /* Attempt to continue */ if (!SubTable->Length) { AcpiOsPrintf ("Invalid zero length subtable\n"); return; } goto NextSubTable; } Status = AcpiDmDumpTable (Length, Offset, SubTable, SubTable->Length, InfoTable); if (ACPI_FAILURE (Status)) { return; } NextSubTable: /* Point to next sub-table */ Offset += SubTable->Length; SubTable = ACPI_ADD_PTR (ACPI_SUBTABLE_HEADER, SubTable, SubTable->Length); } } /******************************************************************************* * * FUNCTION: AcpiDmDumpMcfg * * PARAMETERS: Table - A MCFG Table * * RETURN: None * * DESCRIPTION: Format the contents of a MCFG table * ******************************************************************************/ void AcpiDmDumpMcfg ( ACPI_TABLE_HEADER *Table) { ACPI_STATUS Status; UINT32 Offset = sizeof (ACPI_TABLE_MCFG); ACPI_MCFG_ALLOCATION *SubTable; /* Main table */ Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoMcfg); if (ACPI_FAILURE (Status)) { return; } /* Sub-tables */ SubTable = ACPI_ADD_PTR (ACPI_MCFG_ALLOCATION, Table, Offset); while (Offset < Table->Length) { if (Offset + sizeof (ACPI_MCFG_ALLOCATION) > Table->Length) { AcpiOsPrintf ("Warning: there are %u invalid trailing bytes\n", sizeof (ACPI_MCFG_ALLOCATION) - (Offset - Table->Length)); return; } AcpiOsPrintf ("\n"); Status = AcpiDmDumpTable (Table->Length, Offset, SubTable, sizeof (ACPI_MCFG_ALLOCATION), AcpiDmTableInfoMcfg0); if (ACPI_FAILURE (Status)) { return; } /* Point to next sub-table (each subtable is of fixed length) */ Offset += sizeof (ACPI_MCFG_ALLOCATION); SubTable = ACPI_ADD_PTR (ACPI_MCFG_ALLOCATION, SubTable, sizeof (ACPI_MCFG_ALLOCATION)); } } /******************************************************************************* * * FUNCTION: AcpiDmDumpMpst * * PARAMETERS: Table - A MPST Table * * RETURN: None * * DESCRIPTION: Format the contents of a MPST table * ******************************************************************************/ void AcpiDmDumpMpst ( ACPI_TABLE_HEADER *Table) { ACPI_STATUS Status; UINT32 Offset = sizeof (ACPI_TABLE_MPST); ACPI_MPST_POWER_NODE *SubTable0; ACPI_MPST_POWER_STATE *SubTable0A; ACPI_MPST_COMPONENT *SubTable0B; ACPI_MPST_DATA_HDR *SubTable1; ACPI_MPST_POWER_DATA *SubTable2; UINT16 SubtableCount; UINT32 PowerStateCount; UINT32 ComponentCount; /* Main table */ Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoMpst); if (ACPI_FAILURE (Status)) { return; } /* Subtable: Memory Power Node(s) */ SubtableCount = (ACPI_CAST_PTR (ACPI_TABLE_MPST, Table))->PowerNodeCount; SubTable0 = ACPI_ADD_PTR (ACPI_MPST_POWER_NODE, Table, Offset); while ((Offset < Table->Length) && SubtableCount) { AcpiOsPrintf ("\n"); Status = AcpiDmDumpTable (Table->Length, Offset, SubTable0, sizeof (ACPI_MPST_POWER_NODE), AcpiDmTableInfoMpst0); if (ACPI_FAILURE (Status)) { return; } /* Extract the sub-subtable counts */ PowerStateCount = SubTable0->NumPowerStates; ComponentCount = SubTable0->NumPhysicalComponents; Offset += sizeof (ACPI_MPST_POWER_NODE); /* Sub-subtables - Memory Power State Structure(s) */ SubTable0A = ACPI_ADD_PTR (ACPI_MPST_POWER_STATE, SubTable0, sizeof (ACPI_MPST_POWER_NODE)); while (PowerStateCount) { AcpiOsPrintf ("\n"); Status = AcpiDmDumpTable (Table->Length, Offset, SubTable0A, sizeof (ACPI_MPST_POWER_STATE), AcpiDmTableInfoMpst0A); if (ACPI_FAILURE (Status)) { return; } SubTable0A++; PowerStateCount--; Offset += sizeof (ACPI_MPST_POWER_STATE); } /* Sub-subtables - Physical Component ID Structure(s) */ SubTable0B = ACPI_CAST_PTR (ACPI_MPST_COMPONENT, SubTable0A); if (ComponentCount) { AcpiOsPrintf ("\n"); } while (ComponentCount) { Status = AcpiDmDumpTable (Table->Length, Offset, SubTable0B, sizeof (ACPI_MPST_COMPONENT), AcpiDmTableInfoMpst0B); if (ACPI_FAILURE (Status)) { return; } SubTable0B++; ComponentCount--; Offset += sizeof (ACPI_MPST_COMPONENT); } /* Point to next Memory Power Node subtable */ SubtableCount--; SubTable0 = ACPI_ADD_PTR (ACPI_MPST_POWER_NODE, SubTable0, sizeof (ACPI_MPST_POWER_NODE) + (sizeof (ACPI_MPST_POWER_STATE) * SubTable0->NumPowerStates) + (sizeof (ACPI_MPST_COMPONENT) * SubTable0->NumPhysicalComponents)); } /* Subtable: Count of Memory Power State Characteristic structures */ AcpiOsPrintf ("\n"); SubTable1 = ACPI_CAST_PTR (ACPI_MPST_DATA_HDR, SubTable0); Status = AcpiDmDumpTable (Table->Length, Offset, SubTable1, sizeof (ACPI_MPST_DATA_HDR), AcpiDmTableInfoMpst1); if (ACPI_FAILURE (Status)) { return; } SubtableCount = SubTable1->CharacteristicsCount; Offset += sizeof (ACPI_MPST_DATA_HDR); /* Subtable: Memory Power State Characteristics structure(s) */ SubTable2 = ACPI_ADD_PTR (ACPI_MPST_POWER_DATA, SubTable1, sizeof (ACPI_MPST_DATA_HDR)); while ((Offset < Table->Length) && SubtableCount) { AcpiOsPrintf ("\n"); Status = AcpiDmDumpTable (Table->Length, Offset, SubTable2, sizeof (ACPI_MPST_POWER_DATA), AcpiDmTableInfoMpst2); if (ACPI_FAILURE (Status)) { return; } SubTable2++; SubtableCount--; Offset += sizeof (ACPI_MPST_POWER_DATA); } } /******************************************************************************* * * FUNCTION: AcpiDmDumpMsct * * PARAMETERS: Table - A MSCT table * * RETURN: None * * DESCRIPTION: Format the contents of a MSCT * ******************************************************************************/ void AcpiDmDumpMsct ( ACPI_TABLE_HEADER *Table) { ACPI_STATUS Status; UINT32 Offset = sizeof (ACPI_TABLE_MSCT); ACPI_MSCT_PROXIMITY *SubTable; /* Main table */ Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoMsct); if (ACPI_FAILURE (Status)) { return; } /* Sub-tables */ SubTable = ACPI_ADD_PTR (ACPI_MSCT_PROXIMITY, Table, Offset); while (Offset < Table->Length) { /* Common sub-table header */ AcpiOsPrintf ("\n"); Status = AcpiDmDumpTable (Table->Length, Offset, SubTable, sizeof (ACPI_MSCT_PROXIMITY), AcpiDmTableInfoMsct0); if (ACPI_FAILURE (Status)) { return; } /* Point to next sub-table */ Offset += sizeof (ACPI_MSCT_PROXIMITY); SubTable = ACPI_ADD_PTR (ACPI_MSCT_PROXIMITY, SubTable, sizeof (ACPI_MSCT_PROXIMITY)); } } /******************************************************************************* * * FUNCTION: AcpiDmDumpMtmr * * PARAMETERS: Table - A MTMR table * * RETURN: None * * DESCRIPTION: Format the contents of a MTMR * ******************************************************************************/ void AcpiDmDumpMtmr ( ACPI_TABLE_HEADER *Table) { ACPI_STATUS Status; UINT32 Offset = sizeof (ACPI_TABLE_MTMR); ACPI_MTMR_ENTRY *SubTable; /* Main table */ Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoMtmr); if (ACPI_FAILURE (Status)) { return; } /* Sub-tables */ SubTable = ACPI_ADD_PTR (ACPI_MTMR_ENTRY, Table, Offset); while (Offset < Table->Length) { /* Common sub-table header */ AcpiOsPrintf ("\n"); Status = AcpiDmDumpTable (Table->Length, Offset, SubTable, sizeof (ACPI_MTMR_ENTRY), AcpiDmTableInfoMtmr0); if (ACPI_FAILURE (Status)) { return; } /* Point to next sub-table */ Offset += sizeof (ACPI_MTMR_ENTRY); SubTable = ACPI_ADD_PTR (ACPI_MTMR_ENTRY, SubTable, sizeof (ACPI_MTMR_ENTRY)); } } /******************************************************************************* * * FUNCTION: AcpiDmDumpPcct * * PARAMETERS: Table - A PCCT table * * RETURN: None * * DESCRIPTION: Format the contents of a PCCT. This table type consists * of an open-ended number of subtables. * ******************************************************************************/ void AcpiDmDumpPcct ( ACPI_TABLE_HEADER *Table) { ACPI_STATUS Status; ACPI_PCCT_SUBSPACE *SubTable; UINT32 Length = Table->Length; UINT32 Offset = sizeof (ACPI_TABLE_PCCT); /* Main table */ Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoPcct); if (ACPI_FAILURE (Status)) { return; } /* Subtables */ SubTable = ACPI_ADD_PTR (ACPI_PCCT_SUBSPACE, Table, Offset); while (Offset < Table->Length) { /* Common subtable header */ AcpiOsPrintf ("\n"); Status = AcpiDmDumpTable (Length, Offset, SubTable, SubTable->Header.Length, AcpiDmTableInfoPcctHdr); if (ACPI_FAILURE (Status)) { return; } /* ACPI 5.0: Only one type of PCCT subtable is supported */ if (SubTable->Header.Type != ACPI_PCCT_TYPE_GENERIC_SUBSPACE) { AcpiOsPrintf ( "\n**** Unexpected or unknown PCCT subtable type 0x%X\n\n", SubTable->Header.Type); return; } AcpiOsPrintf ("\n"); Status = AcpiDmDumpTable (Length, Offset, SubTable, SubTable->Header.Length, AcpiDmTableInfoPcct0); if (ACPI_FAILURE (Status)) { return; } /* Point to next subtable */ Offset += SubTable->Header.Length; SubTable = ACPI_ADD_PTR (ACPI_PCCT_SUBSPACE, SubTable, SubTable->Header.Length); } } /******************************************************************************* * * FUNCTION: AcpiDmDumpPmtt * * PARAMETERS: Table - A PMTT table * * RETURN: None * * DESCRIPTION: Format the contents of a PMTT. This table type consists * of an open-ended number of subtables. * ******************************************************************************/ void AcpiDmDumpPmtt ( ACPI_TABLE_HEADER *Table) { ACPI_STATUS Status; ACPI_PMTT_HEADER *SubTable; ACPI_PMTT_HEADER *MemSubTable; ACPI_PMTT_HEADER *DimmSubTable; ACPI_PMTT_DOMAIN *DomainArray; UINT32 Length = Table->Length; UINT32 Offset = sizeof (ACPI_TABLE_PMTT); UINT32 MemOffset; UINT32 DimmOffset; UINT32 DomainOffset; UINT32 DomainCount; /* Main table */ Status = AcpiDmDumpTable (Length, 0, Table, 0, AcpiDmTableInfoPmtt); if (ACPI_FAILURE (Status)) { return; } /* Subtables */ SubTable = ACPI_ADD_PTR (ACPI_PMTT_HEADER, Table, Offset); while (Offset < Table->Length) { /* Common subtable header */ AcpiOsPrintf ("\n"); Status = AcpiDmDumpTable (Length, Offset, SubTable, SubTable->Length, AcpiDmTableInfoPmttHdr); if (ACPI_FAILURE (Status)) { return; } /* Only Socket subtables are expected at this level */ if (SubTable->Type != ACPI_PMTT_TYPE_SOCKET) { AcpiOsPrintf ( "\n**** Unexpected or unknown PMTT subtable type 0x%X\n\n", SubTable->Type); return; } /* Dump the fixed-length portion of the subtable */ Status = AcpiDmDumpTable (Length, Offset, SubTable, SubTable->Length, AcpiDmTableInfoPmtt0); if (ACPI_FAILURE (Status)) { return; } /* Walk the memory controller subtables */ MemOffset = sizeof (ACPI_PMTT_SOCKET); MemSubTable = ACPI_ADD_PTR (ACPI_PMTT_HEADER, SubTable, sizeof (ACPI_PMTT_SOCKET)); while (((Offset + MemOffset) < Table->Length) && (MemOffset < SubTable->Length)) { /* Common subtable header */ AcpiOsPrintf ("\n"); Status = AcpiDmDumpTable (Length, Offset + MemOffset, MemSubTable, MemSubTable->Length, AcpiDmTableInfoPmttHdr); if (ACPI_FAILURE (Status)) { return; } /* Only memory controller subtables are expected at this level */ if (MemSubTable->Type != ACPI_PMTT_TYPE_CONTROLLER) { AcpiOsPrintf ( "\n**** Unexpected or unknown PMTT subtable type 0x%X\n\n", MemSubTable->Type); return; } /* Dump the fixed-length portion of the controller subtable */ Status = AcpiDmDumpTable (Length, Offset + MemOffset, MemSubTable, MemSubTable->Length, AcpiDmTableInfoPmtt1); if (ACPI_FAILURE (Status)) { return; } /* Walk the variable count of proximity domains */ DomainCount = ((ACPI_PMTT_CONTROLLER *) MemSubTable)->DomainCount; DomainOffset = sizeof (ACPI_PMTT_CONTROLLER); DomainArray = ACPI_ADD_PTR (ACPI_PMTT_DOMAIN, MemSubTable, sizeof (ACPI_PMTT_CONTROLLER)); while (((Offset + MemOffset + DomainOffset) < Table->Length) && ((MemOffset + DomainOffset) < SubTable->Length) && DomainCount) { Status = AcpiDmDumpTable (Length, Offset + MemOffset + DomainOffset, DomainArray, sizeof (ACPI_PMTT_DOMAIN), AcpiDmTableInfoPmtt1a); if (ACPI_FAILURE (Status)) { return; } DomainOffset += sizeof (ACPI_PMTT_DOMAIN); DomainArray++; DomainCount--; } if (DomainCount) { AcpiOsPrintf ( "\n**** DomainCount exceeds subtable length\n\n", MemSubTable->Type); } /* Walk the physical component (DIMM) subtables */ DimmOffset = DomainOffset; DimmSubTable = ACPI_ADD_PTR (ACPI_PMTT_HEADER, MemSubTable, DomainOffset); while (((Offset + MemOffset + DimmOffset) < Table->Length) && (DimmOffset < MemSubTable->Length)) { /* Common subtable header */ AcpiOsPrintf ("\n"); Status = AcpiDmDumpTable (Length, Offset + MemOffset + DimmOffset, DimmSubTable, DimmSubTable->Length, AcpiDmTableInfoPmttHdr); if (ACPI_FAILURE (Status)) { return; } /* Only DIMM subtables are expected at this level */ if (DimmSubTable->Type != ACPI_PMTT_TYPE_DIMM) { AcpiOsPrintf ( "\n**** Unexpected or unknown PMTT subtable type 0x%X\n\n", DimmSubTable->Type); return; } /* Dump the fixed-length DIMM subtable */ Status = AcpiDmDumpTable (Length, Offset + MemOffset + DimmOffset, DimmSubTable, DimmSubTable->Length, AcpiDmTableInfoPmtt2); if (ACPI_FAILURE (Status)) { return; } /* Point to next DIMM subtable */ DimmOffset += DimmSubTable->Length; DimmSubTable = ACPI_ADD_PTR (ACPI_PMTT_HEADER, DimmSubTable, DimmSubTable->Length); } /* Point to next Controller subtable */ MemOffset += MemSubTable->Length; MemSubTable = ACPI_ADD_PTR (ACPI_PMTT_HEADER, MemSubTable, MemSubTable->Length); } /* Point to next Socket subtable */ Offset += SubTable->Length; SubTable = ACPI_ADD_PTR (ACPI_PMTT_HEADER, SubTable, SubTable->Length); } } /******************************************************************************* * * FUNCTION: AcpiDmDumpS3pt * * PARAMETERS: Table - A S3PT table * * RETURN: Length of the table * * DESCRIPTION: Format the contents of a S3PT * ******************************************************************************/ UINT32 AcpiDmDumpS3pt ( ACPI_TABLE_HEADER *Tables) { ACPI_STATUS Status; UINT32 Offset = sizeof (ACPI_TABLE_S3PT); ACPI_S3PT_HEADER *SubTable; ACPI_DMTABLE_INFO *InfoTable; ACPI_TABLE_S3PT *S3ptTable = ACPI_CAST_PTR (ACPI_TABLE_S3PT, Tables); /* Main table */ Status = AcpiDmDumpTable (Offset, 0, S3ptTable, 0, AcpiDmTableInfoS3pt); if (ACPI_FAILURE (Status)) { return 0; } SubTable = ACPI_ADD_PTR (ACPI_S3PT_HEADER, S3ptTable, Offset); while (Offset < S3ptTable->Length) { /* Common sub-table header */ AcpiOsPrintf ("\n"); Status = AcpiDmDumpTable (S3ptTable->Length, Offset, SubTable, SubTable->Length, AcpiDmTableInfoS3ptHdr); if (ACPI_FAILURE (Status)) { return 0; } switch (SubTable->Type) { case ACPI_S3PT_TYPE_RESUME: InfoTable = AcpiDmTableInfoS3pt0; break; case ACPI_S3PT_TYPE_SUSPEND: InfoTable = AcpiDmTableInfoS3pt1; break; default: AcpiOsPrintf ("\n**** Unknown S3PT sub-table type 0x%X\n", SubTable->Type); /* Attempt to continue */ if (!SubTable->Length) { AcpiOsPrintf ("Invalid zero length subtable\n"); return 0; } goto NextSubTable; } AcpiOsPrintf ("\n"); Status = AcpiDmDumpTable (S3ptTable->Length, Offset, SubTable, SubTable->Length, InfoTable); if (ACPI_FAILURE (Status)) { return 0; } NextSubTable: /* Point to next sub-table */ Offset += SubTable->Length; SubTable = ACPI_ADD_PTR (ACPI_S3PT_HEADER, SubTable, SubTable->Length); } return (S3ptTable->Length); } /******************************************************************************* * * FUNCTION: AcpiDmDumpSlic * * PARAMETERS: Table - A SLIC table * * RETURN: None * * DESCRIPTION: Format the contents of a SLIC * ******************************************************************************/ void AcpiDmDumpSlic ( ACPI_TABLE_HEADER *Table) { ACPI_STATUS Status; UINT32 Offset = sizeof (ACPI_TABLE_SLIC); ACPI_SLIC_HEADER *SubTable; ACPI_DMTABLE_INFO *InfoTable; /* There is no main SLIC table, only subtables */ SubTable = ACPI_ADD_PTR (ACPI_SLIC_HEADER, Table, Offset); while (Offset < Table->Length) { /* Common sub-table header */ AcpiOsPrintf ("\n"); Status = AcpiDmDumpTable (Table->Length, Offset, SubTable, SubTable->Length, AcpiDmTableInfoSlicHdr); if (ACPI_FAILURE (Status)) { return; } switch (SubTable->Type) { case ACPI_SLIC_TYPE_PUBLIC_KEY: InfoTable = AcpiDmTableInfoSlic0; break; case ACPI_SLIC_TYPE_WINDOWS_MARKER: InfoTable = AcpiDmTableInfoSlic1; break; default: AcpiOsPrintf ("\n**** Unknown SLIC sub-table type 0x%X\n", SubTable->Type); /* Attempt to continue */ if (!SubTable->Length) { AcpiOsPrintf ("Invalid zero length subtable\n"); return; } goto NextSubTable; } AcpiOsPrintf ("\n"); Status = AcpiDmDumpTable (Table->Length, Offset, SubTable, SubTable->Length, InfoTable); if (ACPI_FAILURE (Status)) { return; } NextSubTable: /* Point to next sub-table */ Offset += SubTable->Length; SubTable = ACPI_ADD_PTR (ACPI_SLIC_HEADER, SubTable, SubTable->Length); } } /******************************************************************************* * * FUNCTION: AcpiDmDumpSlit * * PARAMETERS: Table - An SLIT * * RETURN: None * * DESCRIPTION: Format the contents of a SLIT * ******************************************************************************/ void AcpiDmDumpSlit ( ACPI_TABLE_HEADER *Table) { ACPI_STATUS Status; UINT32 Offset; UINT8 *Row; UINT32 Localities; UINT32 i; UINT32 j; /* Main table */ Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoSlit); if (ACPI_FAILURE (Status)) { return; } /* Display the Locality NxN Matrix */ Localities = (UINT32) ACPI_CAST_PTR (ACPI_TABLE_SLIT, Table)->LocalityCount; Offset = ACPI_OFFSET (ACPI_TABLE_SLIT, Entry[0]); Row = (UINT8 *) ACPI_CAST_PTR (ACPI_TABLE_SLIT, Table)->Entry; for (i = 0; i < Localities; i++) { /* Display one row of the matrix */ AcpiDmLineHeader2 (Offset, Localities, "Locality", i); for (j = 0; j < Localities; j++) { /* Check for beyond EOT */ if (Offset >= Table->Length) { AcpiOsPrintf ("\n**** Not enough room in table for all localities\n"); return; } AcpiOsPrintf ("%2.2X", Row[j]); Offset++; /* Display up to 16 bytes per output row */ if ((j+1) < Localities) { AcpiOsPrintf (" "); if (j && (((j+1) % 16) == 0)) { AcpiOsPrintf ("\\\n"); /* With line continuation char */ AcpiDmLineHeader (Offset, 0, NULL); } } } /* Point to next row */ AcpiOsPrintf ("\n"); Row += Localities; } } /******************************************************************************* * * FUNCTION: AcpiDmDumpSrat * * PARAMETERS: Table - A SRAT table * * RETURN: None * * DESCRIPTION: Format the contents of a SRAT * ******************************************************************************/ void AcpiDmDumpSrat ( ACPI_TABLE_HEADER *Table) { ACPI_STATUS Status; UINT32 Offset = sizeof (ACPI_TABLE_SRAT); ACPI_SUBTABLE_HEADER *SubTable; ACPI_DMTABLE_INFO *InfoTable; /* Main table */ Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoSrat); if (ACPI_FAILURE (Status)) { return; } /* Sub-tables */ SubTable = ACPI_ADD_PTR (ACPI_SUBTABLE_HEADER, Table, Offset); while (Offset < Table->Length) { /* Common sub-table header */ AcpiOsPrintf ("\n"); Status = AcpiDmDumpTable (Table->Length, Offset, SubTable, SubTable->Length, AcpiDmTableInfoSratHdr); if (ACPI_FAILURE (Status)) { return; } switch (SubTable->Type) { case ACPI_SRAT_TYPE_CPU_AFFINITY: InfoTable = AcpiDmTableInfoSrat0; break; case ACPI_SRAT_TYPE_MEMORY_AFFINITY: InfoTable = AcpiDmTableInfoSrat1; break; case ACPI_SRAT_TYPE_X2APIC_CPU_AFFINITY: InfoTable = AcpiDmTableInfoSrat2; break; default: AcpiOsPrintf ("\n**** Unknown SRAT sub-table type 0x%X\n", SubTable->Type); /* Attempt to continue */ if (!SubTable->Length) { AcpiOsPrintf ("Invalid zero length subtable\n"); return; } goto NextSubTable; } AcpiOsPrintf ("\n"); Status = AcpiDmDumpTable (Table->Length, Offset, SubTable, SubTable->Length, InfoTable); if (ACPI_FAILURE (Status)) { return; } NextSubTable: /* Point to next sub-table */ Offset += SubTable->Length; SubTable = ACPI_ADD_PTR (ACPI_SUBTABLE_HEADER, SubTable, SubTable->Length); } } /******************************************************************************* * * FUNCTION: AcpiDmDumpVrtc * * PARAMETERS: Table - A VRTC table * * RETURN: None * * DESCRIPTION: Format the contents of a VRTC * ******************************************************************************/ void AcpiDmDumpVrtc ( ACPI_TABLE_HEADER *Table) { ACPI_STATUS Status; UINT32 Offset = sizeof (ACPI_TABLE_VRTC); ACPI_VRTC_ENTRY *SubTable; /* Main table */ Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoVrtc); if (ACPI_FAILURE (Status)) { return; } /* Sub-tables */ SubTable = ACPI_ADD_PTR (ACPI_VRTC_ENTRY, Table, Offset); while (Offset < Table->Length) { /* Common sub-table header */ AcpiOsPrintf ("\n"); Status = AcpiDmDumpTable (Table->Length, Offset, SubTable, sizeof (ACPI_VRTC_ENTRY), AcpiDmTableInfoVrtc0); if (ACPI_FAILURE (Status)) { return; } /* Point to next sub-table */ Offset += sizeof (ACPI_VRTC_ENTRY); SubTable = ACPI_ADD_PTR (ACPI_VRTC_ENTRY, SubTable, sizeof (ACPI_VRTC_ENTRY)); } } /******************************************************************************* * * FUNCTION: AcpiDmDumpWdat * * PARAMETERS: Table - A WDAT table * * RETURN: None * * DESCRIPTION: Format the contents of a WDAT * ******************************************************************************/ void AcpiDmDumpWdat ( ACPI_TABLE_HEADER *Table) { ACPI_STATUS Status; UINT32 Offset = sizeof (ACPI_TABLE_WDAT); ACPI_WDAT_ENTRY *SubTable; /* Main table */ Status = AcpiDmDumpTable (Table->Length, 0, Table, 0, AcpiDmTableInfoWdat); if (ACPI_FAILURE (Status)) { return; } /* Sub-tables */ SubTable = ACPI_ADD_PTR (ACPI_WDAT_ENTRY, Table, Offset); while (Offset < Table->Length) { /* Common sub-table header */ AcpiOsPrintf ("\n"); Status = AcpiDmDumpTable (Table->Length, Offset, SubTable, sizeof (ACPI_WDAT_ENTRY), AcpiDmTableInfoWdat0); if (ACPI_FAILURE (Status)) { return; } /* Point to next sub-table */ Offset += sizeof (ACPI_WDAT_ENTRY); SubTable = ACPI_ADD_PTR (ACPI_WDAT_ENTRY, SubTable, sizeof (ACPI_WDAT_ENTRY)); } } src/acpica/source/common/dmtbinfo.c000066400000000000000000003365621231470457100176460ustar00rootroot00000000000000/****************************************************************************** * * Module Name: dmtbinfo - Table info for non-AML tables * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #include "acpi.h" #include "accommon.h" #include "acdisasm.h" /* This module used for application-level code only */ #define _COMPONENT ACPI_CA_DISASSEMBLER ACPI_MODULE_NAME ("dmtbinfo") /* * How to add a new table: * * - Add the C table definition to the actbl1.h or actbl2.h header. * - Add ACPI_xxxx_OFFSET macro(s) for the table (and subtables) to list below. * - Define the table in this file (for the disassembler). If any * new data types are required (ACPI_DMT_*), see below. * - Add an external declaration for the new table definition (AcpiDmTableInfo*) * in acdisam.h * - Add new table definition to the dispatch table in dmtable.c (AcpiDmTableData) * If a simple table (with no subtables), no disassembly code is needed. * Otherwise, create the AcpiDmDump* function for to disassemble the table * and add it to the dmtbdump.c file. * - Add an external declaration for the new AcpiDmDump* function in acdisasm.h * - Add the new AcpiDmDump* function to the dispatch table in dmtable.c * - Create a template for the new table * - Add data table compiler support * * How to add a new data type (ACPI_DMT_*): * * - Add new type at the end of the ACPI_DMT list in acdisasm.h * - Add length and implementation cases in dmtable.c (disassembler) * - Add type and length cases in dtutils.c (DT compiler) */ /* * Macros used to generate offsets to specific table fields */ #define ACPI_FACS_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_FACS,f) #define ACPI_GAS_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_GENERIC_ADDRESS,f) #define ACPI_HDR_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_HEADER,f) #define ACPI_RSDP_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_RSDP,f) #define ACPI_BERT_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_BERT,f) #define ACPI_BGRT_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_BGRT,f) #define ACPI_BOOT_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_BOOT,f) #define ACPI_CPEP_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_CPEP,f) #define ACPI_DBG2_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_DBG2,f) #define ACPI_DBGP_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_DBGP,f) #define ACPI_DMAR_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_DMAR,f) #define ACPI_DRTM_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_DRTM,f) #define ACPI_ECDT_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_ECDT,f) #define ACPI_EINJ_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_EINJ,f) #define ACPI_ERST_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_ERST,f) #define ACPI_GTDT_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_GTDT,f) #define ACPI_HEST_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_HEST,f) #define ACPI_HPET_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_HPET,f) #define ACPI_IVRS_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_IVRS,f) #define ACPI_MADT_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_MADT,f) #define ACPI_MCFG_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_MCFG,f) #define ACPI_MCHI_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_MCHI,f) #define ACPI_MPST_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_MPST,f) #define ACPI_MSCT_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_MSCT,f) #define ACPI_PCCT_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_PCCT,f) #define ACPI_PMTT_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_PMTT,f) #define ACPI_S3PT_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_S3PT,f) #define ACPI_SBST_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_SBST,f) #define ACPI_SLIT_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_SLIT,f) #define ACPI_SPCR_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_SPCR,f) #define ACPI_SPMI_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_SPMI,f) #define ACPI_SRAT_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_SRAT,f) #define ACPI_TCPA_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_TCPA,f) #define ACPI_TPM2_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_TPM2,f) #define ACPI_UEFI_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_UEFI,f) #define ACPI_WAET_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_WAET,f) #define ACPI_WDAT_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_WDAT,f) #define ACPI_WDDT_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_WDDT,f) #define ACPI_WDRT_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_WDRT,f) /* Subtables */ #define ACPI_ASF0_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_ASF_INFO,f) #define ACPI_ASF1_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_ASF_ALERT,f) #define ACPI_ASF1a_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_ASF_ALERT_DATA,f) #define ACPI_ASF2_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_ASF_REMOTE,f) #define ACPI_ASF2a_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_ASF_CONTROL_DATA,f) #define ACPI_ASF3_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_ASF_RMCP,f) #define ACPI_ASF4_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_ASF_ADDRESS,f) #define ACPI_CPEP0_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_CPEP_POLLING,f) #define ACPI_CSRT0_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_CSRT_GROUP,f) #define ACPI_CSRT1_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_CSRT_SHARED_INFO,f) #define ACPI_CSRT2_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_CSRT_DESCRIPTOR,f) #define ACPI_DBG20_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_DBG2_DEVICE,f) #define ACPI_DMARS_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_DMAR_DEVICE_SCOPE,f) #define ACPI_DMAR0_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_DMAR_HARDWARE_UNIT,f) #define ACPI_DMAR1_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_DMAR_RESERVED_MEMORY,f) #define ACPI_DMAR2_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_DMAR_ATSR,f) #define ACPI_DMAR3_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_DMAR_RHSA,f) #define ACPI_EINJ0_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_WHEA_HEADER,f) #define ACPI_ERST0_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_WHEA_HEADER,f) #define ACPI_FPDTH_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_FPDT_HEADER,f) #define ACPI_FPDT0_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_FPDT_BOOT,f) #define ACPI_FPDT1_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_FPDT_S3PT_PTR,f) #define ACPI_HEST0_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_HEST_IA_MACHINE_CHECK,f) #define ACPI_HEST1_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_HEST_IA_CORRECTED,f) #define ACPI_HEST2_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_HEST_IA_NMI,f) #define ACPI_HEST6_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_HEST_AER_ROOT,f) #define ACPI_HEST7_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_HEST_AER,f) #define ACPI_HEST8_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_HEST_AER_BRIDGE,f) #define ACPI_HEST9_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_HEST_GENERIC,f) #define ACPI_HESTN_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_HEST_NOTIFY,f) #define ACPI_HESTB_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_HEST_IA_ERROR_BANK,f) #define ACPI_IVRSH_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_IVRS_HEADER,f) #define ACPI_IVRS0_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_IVRS_HARDWARE,f) #define ACPI_IVRS1_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_IVRS_MEMORY,f) #define ACPI_IVRSD_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_IVRS_DE_HEADER,f) #define ACPI_IVRS8A_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_IVRS_DEVICE8A,f) #define ACPI_IVRS8B_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_IVRS_DEVICE8B,f) #define ACPI_IVRS8C_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_IVRS_DEVICE8C,f) #define ACPI_MADT0_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_MADT_LOCAL_APIC,f) #define ACPI_MADT1_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_MADT_IO_APIC,f) #define ACPI_MADT2_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_MADT_INTERRUPT_OVERRIDE,f) #define ACPI_MADT3_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_MADT_NMI_SOURCE,f) #define ACPI_MADT4_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_MADT_LOCAL_APIC_NMI,f) #define ACPI_MADT5_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_MADT_LOCAL_APIC_OVERRIDE,f) #define ACPI_MADT6_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_MADT_IO_SAPIC,f) #define ACPI_MADT7_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_MADT_LOCAL_SAPIC,f) #define ACPI_MADT8_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_MADT_INTERRUPT_SOURCE,f) #define ACPI_MADT9_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_MADT_LOCAL_X2APIC,f) #define ACPI_MADT10_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_MADT_LOCAL_X2APIC_NMI,f) #define ACPI_MADT11_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_MADT_GENERIC_INTERRUPT,f) #define ACPI_MADT12_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_MADT_GENERIC_DISTRIBUTOR,f) #define ACPI_MADTH_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_SUBTABLE_HEADER,f) #define ACPI_MCFG0_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_MCFG_ALLOCATION,f) #define ACPI_MPST0_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_MPST_POWER_NODE,f) #define ACPI_MPST0A_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_MPST_POWER_STATE,f) #define ACPI_MPST0B_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_MPST_COMPONENT,f) #define ACPI_MPST1_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_MPST_DATA_HDR,f) #define ACPI_MPST2_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_MPST_POWER_DATA,f) #define ACPI_MSCT0_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_MSCT_PROXIMITY,f) #define ACPI_MTMR0_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_MTMR_ENTRY,f) #define ACPI_PCCT0_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_PCCT_SUBSPACE,f) #define ACPI_PMTT0_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_PMTT_SOCKET,f) #define ACPI_PMTT1_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_PMTT_CONTROLLER,f) #define ACPI_PMTT1A_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_PMTT_DOMAIN,f) #define ACPI_PMTT2_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_PMTT_PHYSICAL_COMPONENT,f) #define ACPI_PMTTH_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_PMTT_HEADER,f) #define ACPI_S3PTH_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_S3PT_HEADER,f) #define ACPI_S3PT0_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_S3PT_RESUME,f) #define ACPI_S3PT1_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_S3PT_SUSPEND,f) #define ACPI_SLICH_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_SLIC_HEADER,f) #define ACPI_SLIC0_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_SLIC_KEY,f) #define ACPI_SLIC1_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_SLIC_MARKER,f) #define ACPI_SRATH_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_SUBTABLE_HEADER,f) #define ACPI_SRAT0_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_SRAT_CPU_AFFINITY,f) #define ACPI_SRAT1_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_SRAT_MEM_AFFINITY,f) #define ACPI_SRAT2_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_SRAT_X2APIC_CPU_AFFINITY,f) #define ACPI_VRTC0_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_VRTC_ENTRY,f) #define ACPI_WDAT0_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_WDAT_ENTRY,f) /* * Simplify access to flag fields by breaking them up into bytes */ #define ACPI_FLAG_OFFSET(d,f,o) (UINT16) (ACPI_OFFSET (d,f) + o) /* Flags */ #define ACPI_FADT_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_TABLE_FADT,f,o) #define ACPI_FACS_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_TABLE_FACS,f,o) #define ACPI_HPET_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_TABLE_HPET,f,o) #define ACPI_SRAT0_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_SRAT_CPU_AFFINITY,f,o) #define ACPI_SRAT1_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_SRAT_MEM_AFFINITY,f,o) #define ACPI_SRAT2_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_SRAT_X2APIC_CPU_AFFINITY,f,o) #define ACPI_GTDT_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_TABLE_GTDT,f,o) #define ACPI_MADT_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_TABLE_MADT,f,o) #define ACPI_MADT0_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_MADT_LOCAL_APIC,f,o) #define ACPI_MADT2_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_MADT_INTERRUPT_OVERRIDE,f,o) #define ACPI_MADT3_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_MADT_NMI_SOURCE,f,o) #define ACPI_MADT4_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_MADT_LOCAL_APIC_NMI,f,o) #define ACPI_MADT7_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_MADT_LOCAL_SAPIC,f,o) #define ACPI_MADT8_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_MADT_INTERRUPT_SOURCE,f,o) #define ACPI_MADT9_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_MADT_LOCAL_X2APIC,f,o) #define ACPI_MADT10_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_MADT_LOCAL_X2APIC_NMI,f,o) #define ACPI_MADT11_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_MADT_GENERIC_INTERRUPT,f,o) #define ACPI_MPST0_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_MPST_POWER_NODE,f,o) #define ACPI_MPST2_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_MPST_POWER_DATA,f,o) #define ACPI_PCCT_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_TABLE_PCCT,f,o) #define ACPI_PMTTH_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_PMTT_HEADER,f,o) #define ACPI_WDDT_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_TABLE_WDDT,f,o) #define ACPI_EINJ0_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_WHEA_HEADER,f,o) #define ACPI_ERST0_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_WHEA_HEADER,f,o) #define ACPI_HEST0_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_HEST_IA_MACHINE_CHECK,f,o) #define ACPI_HEST1_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_HEST_IA_CORRECTED,f,o) #define ACPI_HEST6_FLAG_OFFSET(f,o) ACPI_FLAG_OFFSET (ACPI_HEST_AER_ROOT,f,o) /* * Required terminator for all tables below */ #define ACPI_DMT_TERMINATOR {ACPI_DMT_EXIT, 0, NULL, 0} #define ACPI_DMT_NEW_LINE {ACPI_DMT_EXTRA_TEXT, 0, "\n", 0} /* * ACPI Table Information, used to dump formatted ACPI tables * * Each entry is of the form: */ /******************************************************************************* * * Common ACPI table header * ******************************************************************************/ ACPI_DMTABLE_INFO AcpiDmTableInfoHeader[] = { {ACPI_DMT_SIG, ACPI_HDR_OFFSET (Signature[0]), "Signature", 0}, {ACPI_DMT_UINT32, ACPI_HDR_OFFSET (Length), "Table Length", DT_LENGTH}, {ACPI_DMT_UINT8, ACPI_HDR_OFFSET (Revision), "Revision", 0}, {ACPI_DMT_CHKSUM, ACPI_HDR_OFFSET (Checksum), "Checksum", 0}, {ACPI_DMT_NAME6, ACPI_HDR_OFFSET (OemId[0]), "Oem ID", 0}, {ACPI_DMT_NAME8, ACPI_HDR_OFFSET (OemTableId[0]), "Oem Table ID", 0}, {ACPI_DMT_UINT32, ACPI_HDR_OFFSET (OemRevision), "Oem Revision", 0}, {ACPI_DMT_NAME4, ACPI_HDR_OFFSET (AslCompilerId[0]), "Asl Compiler ID", 0}, {ACPI_DMT_UINT32, ACPI_HDR_OFFSET (AslCompilerRevision), "Asl Compiler Revision", 0}, ACPI_DMT_TERMINATOR }; /******************************************************************************* * * GAS - Generic Address Structure * ******************************************************************************/ ACPI_DMTABLE_INFO AcpiDmTableInfoGas[] = { {ACPI_DMT_SPACEID, ACPI_GAS_OFFSET (SpaceId), "Space ID", 0}, {ACPI_DMT_UINT8, ACPI_GAS_OFFSET (BitWidth), "Bit Width", 0}, {ACPI_DMT_UINT8, ACPI_GAS_OFFSET (BitOffset), "Bit Offset", 0}, {ACPI_DMT_ACCWIDTH, ACPI_GAS_OFFSET (AccessWidth), "Encoded Access Width", 0}, {ACPI_DMT_UINT64, ACPI_GAS_OFFSET (Address), "Address", 0}, ACPI_DMT_TERMINATOR }; /******************************************************************************* * * RSDP - Root System Description Pointer (Signature is "RSD PTR ") * ******************************************************************************/ ACPI_DMTABLE_INFO AcpiDmTableInfoRsdp1[] = { {ACPI_DMT_NAME8, ACPI_RSDP_OFFSET (Signature[0]), "Signature", 0}, {ACPI_DMT_UINT8, ACPI_RSDP_OFFSET (Checksum), "Checksum", 0}, {ACPI_DMT_NAME6, ACPI_RSDP_OFFSET (OemId[0]), "Oem ID", 0}, {ACPI_DMT_UINT8, ACPI_RSDP_OFFSET (Revision), "Revision", 0}, {ACPI_DMT_UINT32, ACPI_RSDP_OFFSET (RsdtPhysicalAddress), "RSDT Address", 0}, ACPI_DMT_TERMINATOR }; /* ACPI 2.0+ Extensions */ ACPI_DMTABLE_INFO AcpiDmTableInfoRsdp2[] = { {ACPI_DMT_UINT32, ACPI_RSDP_OFFSET (Length), "Length", DT_LENGTH}, {ACPI_DMT_UINT64, ACPI_RSDP_OFFSET (XsdtPhysicalAddress), "XSDT Address", 0}, {ACPI_DMT_UINT8, ACPI_RSDP_OFFSET (ExtendedChecksum), "Extended Checksum", 0}, {ACPI_DMT_UINT24, ACPI_RSDP_OFFSET (Reserved[0]), "Reserved", 0}, ACPI_DMT_TERMINATOR }; /******************************************************************************* * * FACS - Firmware ACPI Control Structure * ******************************************************************************/ ACPI_DMTABLE_INFO AcpiDmTableInfoFacs[] = { {ACPI_DMT_NAME4, ACPI_FACS_OFFSET (Signature[0]), "Signature", 0}, {ACPI_DMT_UINT32, ACPI_FACS_OFFSET (Length), "Length", DT_LENGTH}, {ACPI_DMT_UINT32, ACPI_FACS_OFFSET (HardwareSignature), "Hardware Signature", 0}, {ACPI_DMT_UINT32, ACPI_FACS_OFFSET (FirmwareWakingVector), "32 Firmware Waking Vector", 0}, {ACPI_DMT_UINT32, ACPI_FACS_OFFSET (GlobalLock), "Global Lock", 0}, {ACPI_DMT_UINT32, ACPI_FACS_OFFSET (Flags), "Flags (decoded below)", DT_FLAG}, {ACPI_DMT_FLAG0, ACPI_FACS_FLAG_OFFSET (Flags,0), "S4BIOS Support Present", 0}, {ACPI_DMT_FLAG1, ACPI_FACS_FLAG_OFFSET (Flags,0), "64-bit Wake Supported (V2)", 0}, {ACPI_DMT_UINT64, ACPI_FACS_OFFSET (XFirmwareWakingVector), "64 Firmware Waking Vector", 0}, {ACPI_DMT_UINT8, ACPI_FACS_OFFSET (Version), "Version", 0}, {ACPI_DMT_UINT24, ACPI_FACS_OFFSET (Reserved[0]), "Reserved", 0}, {ACPI_DMT_UINT32, ACPI_FACS_OFFSET (OspmFlags), "OspmFlags (decoded below)", DT_FLAG}, {ACPI_DMT_FLAG0, ACPI_FACS_FLAG_OFFSET (OspmFlags,0), "64-bit Wake Env Required (V2)", 0}, ACPI_DMT_TERMINATOR }; /******************************************************************************* * * FADT - Fixed ACPI Description Table (Signature is FACP) * ******************************************************************************/ /* ACPI 1.0 FADT (Version 1) */ ACPI_DMTABLE_INFO AcpiDmTableInfoFadt1[] = { {ACPI_DMT_UINT32, ACPI_FADT_OFFSET (Facs), "FACS Address", 0}, {ACPI_DMT_UINT32, ACPI_FADT_OFFSET (Dsdt), "DSDT Address", DT_NON_ZERO}, {ACPI_DMT_UINT8, ACPI_FADT_OFFSET (Model), "Model", 0}, {ACPI_DMT_FADTPM, ACPI_FADT_OFFSET (PreferredProfile), "PM Profile", 0}, {ACPI_DMT_UINT16, ACPI_FADT_OFFSET (SciInterrupt), "SCI Interrupt", 0}, {ACPI_DMT_UINT32, ACPI_FADT_OFFSET (SmiCommand), "SMI Command Port", 0}, {ACPI_DMT_UINT8, ACPI_FADT_OFFSET (AcpiEnable), "ACPI Enable Value", 0}, {ACPI_DMT_UINT8, ACPI_FADT_OFFSET (AcpiDisable), "ACPI Disable Value", 0}, {ACPI_DMT_UINT8, ACPI_FADT_OFFSET (S4BiosRequest), "S4BIOS Command", 0}, {ACPI_DMT_UINT8, ACPI_FADT_OFFSET (PstateControl), "P-State Control", 0}, {ACPI_DMT_UINT32, ACPI_FADT_OFFSET (Pm1aEventBlock), "PM1A Event Block Address", 0}, {ACPI_DMT_UINT32, ACPI_FADT_OFFSET (Pm1bEventBlock), "PM1B Event Block Address", 0}, {ACPI_DMT_UINT32, ACPI_FADT_OFFSET (Pm1aControlBlock), "PM1A Control Block Address", 0}, {ACPI_DMT_UINT32, ACPI_FADT_OFFSET (Pm1bControlBlock), "PM1B Control Block Address", 0}, {ACPI_DMT_UINT32, ACPI_FADT_OFFSET (Pm2ControlBlock), "PM2 Control Block Address", 0}, {ACPI_DMT_UINT32, ACPI_FADT_OFFSET (PmTimerBlock), "PM Timer Block Address", 0}, {ACPI_DMT_UINT32, ACPI_FADT_OFFSET (Gpe0Block), "GPE0 Block Address", 0}, {ACPI_DMT_UINT32, ACPI_FADT_OFFSET (Gpe1Block), "GPE1 Block Address", 0}, {ACPI_DMT_UINT8, ACPI_FADT_OFFSET (Pm1EventLength), "PM1 Event Block Length", 0}, {ACPI_DMT_UINT8, ACPI_FADT_OFFSET (Pm1ControlLength), "PM1 Control Block Length", 0}, {ACPI_DMT_UINT8, ACPI_FADT_OFFSET (Pm2ControlLength), "PM2 Control Block Length", 0}, {ACPI_DMT_UINT8, ACPI_FADT_OFFSET (PmTimerLength), "PM Timer Block Length", 0}, {ACPI_DMT_UINT8, ACPI_FADT_OFFSET (Gpe0BlockLength), "GPE0 Block Length", 0}, {ACPI_DMT_UINT8, ACPI_FADT_OFFSET (Gpe1BlockLength), "GPE1 Block Length", 0}, {ACPI_DMT_UINT8, ACPI_FADT_OFFSET (Gpe1Base), "GPE1 Base Offset", 0}, {ACPI_DMT_UINT8, ACPI_FADT_OFFSET (CstControl), "_CST Support", 0}, {ACPI_DMT_UINT16, ACPI_FADT_OFFSET (C2Latency), "C2 Latency", 0}, {ACPI_DMT_UINT16, ACPI_FADT_OFFSET (C3Latency), "C3 Latency", 0}, {ACPI_DMT_UINT16, ACPI_FADT_OFFSET (FlushSize), "CPU Cache Size", 0}, {ACPI_DMT_UINT16, ACPI_FADT_OFFSET (FlushStride), "Cache Flush Stride", 0}, {ACPI_DMT_UINT8, ACPI_FADT_OFFSET (DutyOffset), "Duty Cycle Offset", 0}, {ACPI_DMT_UINT8, ACPI_FADT_OFFSET (DutyWidth), "Duty Cycle Width", 0}, {ACPI_DMT_UINT8, ACPI_FADT_OFFSET (DayAlarm), "RTC Day Alarm Index", 0}, {ACPI_DMT_UINT8, ACPI_FADT_OFFSET (MonthAlarm), "RTC Month Alarm Index", 0}, {ACPI_DMT_UINT8, ACPI_FADT_OFFSET (Century), "RTC Century Index", 0}, {ACPI_DMT_UINT16, ACPI_FADT_OFFSET (BootFlags), "Boot Flags (decoded below)", DT_FLAG}, /* Boot Architecture Flags byte 0 */ {ACPI_DMT_FLAG0, ACPI_FADT_FLAG_OFFSET (BootFlags,0), "Legacy Devices Supported (V2)", 0}, {ACPI_DMT_FLAG1, ACPI_FADT_FLAG_OFFSET (BootFlags,0), "8042 Present on ports 60/64 (V2)", 0}, {ACPI_DMT_FLAG2, ACPI_FADT_FLAG_OFFSET (BootFlags,0), "VGA Not Present (V4)", 0}, {ACPI_DMT_FLAG3, ACPI_FADT_FLAG_OFFSET (BootFlags,0), "MSI Not Supported (V4)", 0}, {ACPI_DMT_FLAG4, ACPI_FADT_FLAG_OFFSET (BootFlags,0), "PCIe ASPM Not Supported (V4)", 0}, {ACPI_DMT_FLAG5, ACPI_FADT_FLAG_OFFSET (BootFlags,0), "CMOS RTC Not Present (V5)", 0}, {ACPI_DMT_UINT8, ACPI_FADT_OFFSET (Reserved), "Reserved", 0}, {ACPI_DMT_UINT32, ACPI_FADT_OFFSET (Flags), "Flags (decoded below)", DT_FLAG}, /* Flags byte 0 */ {ACPI_DMT_FLAG0, ACPI_FADT_FLAG_OFFSET (Flags,0), "WBINVD instruction is operational (V1)", 0}, {ACPI_DMT_FLAG1, ACPI_FADT_FLAG_OFFSET (Flags,0), "WBINVD flushes all caches (V1)", 0}, {ACPI_DMT_FLAG2, ACPI_FADT_FLAG_OFFSET (Flags,0), "All CPUs support C1 (V1)", 0}, {ACPI_DMT_FLAG3, ACPI_FADT_FLAG_OFFSET (Flags,0), "C2 works on MP system (V1)", 0}, {ACPI_DMT_FLAG4, ACPI_FADT_FLAG_OFFSET (Flags,0), "Control Method Power Button (V1)", 0}, {ACPI_DMT_FLAG5, ACPI_FADT_FLAG_OFFSET (Flags,0), "Control Method Sleep Button (V1)", 0}, {ACPI_DMT_FLAG6, ACPI_FADT_FLAG_OFFSET (Flags,0), "RTC wake not in fixed reg space (V1)", 0}, {ACPI_DMT_FLAG7, ACPI_FADT_FLAG_OFFSET (Flags,0), "RTC can wake system from S4 (V1)", 0}, /* Flags byte 1 */ {ACPI_DMT_FLAG0, ACPI_FADT_FLAG_OFFSET (Flags,1), "32-bit PM Timer (V1)", 0}, {ACPI_DMT_FLAG1, ACPI_FADT_FLAG_OFFSET (Flags,1), "Docking Supported (V1)", 0}, {ACPI_DMT_FLAG2, ACPI_FADT_FLAG_OFFSET (Flags,1), "Reset Register Supported (V2)", 0}, {ACPI_DMT_FLAG3, ACPI_FADT_FLAG_OFFSET (Flags,1), "Sealed Case (V3)", 0}, {ACPI_DMT_FLAG4, ACPI_FADT_FLAG_OFFSET (Flags,1), "Headless - No Video (V3)", 0}, {ACPI_DMT_FLAG5, ACPI_FADT_FLAG_OFFSET (Flags,1), "Use native instr after SLP_TYPx (V3)", 0}, {ACPI_DMT_FLAG6, ACPI_FADT_FLAG_OFFSET (Flags,1), "PCIEXP_WAK Bits Supported (V4)", 0}, {ACPI_DMT_FLAG7, ACPI_FADT_FLAG_OFFSET (Flags,1), "Use Platform Timer (V4)", 0}, /* Flags byte 2 */ {ACPI_DMT_FLAG0, ACPI_FADT_FLAG_OFFSET (Flags,2), "RTC_STS valid on S4 wake (V4)", 0}, {ACPI_DMT_FLAG1, ACPI_FADT_FLAG_OFFSET (Flags,2), "Remote Power-on capable (V4)", 0}, {ACPI_DMT_FLAG2, ACPI_FADT_FLAG_OFFSET (Flags,2), "Use APIC Cluster Model (V4)", 0}, {ACPI_DMT_FLAG3, ACPI_FADT_FLAG_OFFSET (Flags,2), "Use APIC Physical Destination Mode (V4)", 0}, {ACPI_DMT_FLAG4, ACPI_FADT_FLAG_OFFSET (Flags,2), "Hardware Reduced (V5)", 0}, {ACPI_DMT_FLAG5, ACPI_FADT_FLAG_OFFSET (Flags,2), "Low Power S0 Idle (V5)", 0}, ACPI_DMT_TERMINATOR }; /* ACPI 1.0 MS Extensions (FADT version 2) */ ACPI_DMTABLE_INFO AcpiDmTableInfoFadt2[] = { {ACPI_DMT_GAS, ACPI_FADT_OFFSET (ResetRegister), "Reset Register", 0}, {ACPI_DMT_UINT8, ACPI_FADT_OFFSET (ResetValue), "Value to cause reset", 0}, {ACPI_DMT_UINT24, ACPI_FADT_OFFSET (Reserved4[0]), "Reserved", 0}, ACPI_DMT_TERMINATOR }; /* ACPI 2.0+ Extensions (FADT version 3 and 4) */ ACPI_DMTABLE_INFO AcpiDmTableInfoFadt3[] = { {ACPI_DMT_GAS, ACPI_FADT_OFFSET (ResetRegister), "Reset Register", 0}, {ACPI_DMT_UINT8, ACPI_FADT_OFFSET (ResetValue), "Value to cause reset", 0}, {ACPI_DMT_UINT24, ACPI_FADT_OFFSET (Reserved4[0]), "Reserved", 0}, {ACPI_DMT_UINT64, ACPI_FADT_OFFSET (XFacs), "FACS Address", 0}, {ACPI_DMT_UINT64, ACPI_FADT_OFFSET (XDsdt), "DSDT Address", 0}, {ACPI_DMT_GAS, ACPI_FADT_OFFSET (XPm1aEventBlock), "PM1A Event Block", 0}, {ACPI_DMT_GAS, ACPI_FADT_OFFSET (XPm1bEventBlock), "PM1B Event Block", 0}, {ACPI_DMT_GAS, ACPI_FADT_OFFSET (XPm1aControlBlock), "PM1A Control Block", 0}, {ACPI_DMT_GAS, ACPI_FADT_OFFSET (XPm1bControlBlock), "PM1B Control Block", 0}, {ACPI_DMT_GAS, ACPI_FADT_OFFSET (XPm2ControlBlock), "PM2 Control Block", 0}, {ACPI_DMT_GAS, ACPI_FADT_OFFSET (XPmTimerBlock), "PM Timer Block", 0}, {ACPI_DMT_GAS, ACPI_FADT_OFFSET (XGpe0Block), "GPE0 Block", 0}, {ACPI_DMT_GAS, ACPI_FADT_OFFSET (XGpe1Block), "GPE1 Block", 0}, ACPI_DMT_TERMINATOR }; /* ACPI 5.0 Extensions (FADT version 5) */ ACPI_DMTABLE_INFO AcpiDmTableInfoFadt5[] = { {ACPI_DMT_GAS, ACPI_FADT_OFFSET (SleepControl), "Sleep Control Register", 0}, {ACPI_DMT_GAS, ACPI_FADT_OFFSET (SleepStatus), "Sleep Status Register", 0}, ACPI_DMT_TERMINATOR }; /* * Remaining tables are not consumed directly by the ACPICA subsystem */ /******************************************************************************* * * ASF - Alert Standard Format table (Signature "ASF!") * ******************************************************************************/ /* Common Subtable header (one per Subtable) */ ACPI_DMTABLE_INFO AcpiDmTableInfoAsfHdr[] = { {ACPI_DMT_ASF, ACPI_ASF0_OFFSET (Header.Type), "Subtable Type", 0}, {ACPI_DMT_UINT8, ACPI_ASF0_OFFSET (Header.Reserved), "Reserved", 0}, {ACPI_DMT_UINT16, ACPI_ASF0_OFFSET (Header.Length), "Length", DT_LENGTH}, ACPI_DMT_TERMINATOR }; /* 0: ASF Information */ ACPI_DMTABLE_INFO AcpiDmTableInfoAsf0[] = { {ACPI_DMT_UINT8, ACPI_ASF0_OFFSET (MinResetValue), "Minimum Reset Value", 0}, {ACPI_DMT_UINT8, ACPI_ASF0_OFFSET (MinPollInterval), "Minimum Polling Interval", 0}, {ACPI_DMT_UINT16, ACPI_ASF0_OFFSET (SystemId), "System ID", 0}, {ACPI_DMT_UINT32, ACPI_ASF0_OFFSET (MfgId), "Manufacturer ID", 0}, {ACPI_DMT_UINT8, ACPI_ASF0_OFFSET (Flags), "Flags", 0}, {ACPI_DMT_UINT24, ACPI_ASF0_OFFSET (Reserved2[0]), "Reserved", 0}, ACPI_DMT_TERMINATOR }; /* 1: ASF Alerts */ ACPI_DMTABLE_INFO AcpiDmTableInfoAsf1[] = { {ACPI_DMT_UINT8, ACPI_ASF1_OFFSET (AssertMask), "AssertMask", 0}, {ACPI_DMT_UINT8, ACPI_ASF1_OFFSET (DeassertMask), "DeassertMask", 0}, {ACPI_DMT_UINT8, ACPI_ASF1_OFFSET (Alerts), "Alert Count", 0}, {ACPI_DMT_UINT8, ACPI_ASF1_OFFSET (DataLength), "Alert Data Length", 0}, ACPI_DMT_TERMINATOR }; /* 1a: ASF Alert data */ ACPI_DMTABLE_INFO AcpiDmTableInfoAsf1a[] = { {ACPI_DMT_UINT8, ACPI_ASF1a_OFFSET (Address), "Address", 0}, {ACPI_DMT_UINT8, ACPI_ASF1a_OFFSET (Command), "Command", 0}, {ACPI_DMT_UINT8, ACPI_ASF1a_OFFSET (Mask), "Mask", 0}, {ACPI_DMT_UINT8, ACPI_ASF1a_OFFSET (Value), "Value", 0}, {ACPI_DMT_UINT8, ACPI_ASF1a_OFFSET (SensorType), "SensorType", 0}, {ACPI_DMT_UINT8, ACPI_ASF1a_OFFSET (Type), "Type", 0}, {ACPI_DMT_UINT8, ACPI_ASF1a_OFFSET (Offset), "Offset", 0}, {ACPI_DMT_UINT8, ACPI_ASF1a_OFFSET (SourceType), "SourceType", 0}, {ACPI_DMT_UINT8, ACPI_ASF1a_OFFSET (Severity), "Severity", 0}, {ACPI_DMT_UINT8, ACPI_ASF1a_OFFSET (SensorNumber), "SensorNumber", 0}, {ACPI_DMT_UINT8, ACPI_ASF1a_OFFSET (Entity), "Entity", 0}, {ACPI_DMT_UINT8, ACPI_ASF1a_OFFSET (Instance), "Instance", 0}, ACPI_DMT_TERMINATOR }; /* 2: ASF Remote Control */ ACPI_DMTABLE_INFO AcpiDmTableInfoAsf2[] = { {ACPI_DMT_UINT8, ACPI_ASF2_OFFSET (Controls), "Control Count", 0}, {ACPI_DMT_UINT8, ACPI_ASF2_OFFSET (DataLength), "Control Data Length", 0}, {ACPI_DMT_UINT16, ACPI_ASF2_OFFSET (Reserved2), "Reserved", 0}, ACPI_DMT_TERMINATOR }; /* 2a: ASF Control data */ ACPI_DMTABLE_INFO AcpiDmTableInfoAsf2a[] = { {ACPI_DMT_UINT8, ACPI_ASF2a_OFFSET (Function), "Function", 0}, {ACPI_DMT_UINT8, ACPI_ASF2a_OFFSET (Address), "Address", 0}, {ACPI_DMT_UINT8, ACPI_ASF2a_OFFSET (Command), "Command", 0}, {ACPI_DMT_UINT8, ACPI_ASF2a_OFFSET (Value), "Value", 0}, ACPI_DMT_TERMINATOR }; /* 3: ASF RMCP Boot Options */ ACPI_DMTABLE_INFO AcpiDmTableInfoAsf3[] = { {ACPI_DMT_BUF7, ACPI_ASF3_OFFSET (Capabilities[0]), "Capabilities", 0}, {ACPI_DMT_UINT8, ACPI_ASF3_OFFSET (CompletionCode), "Completion Code", 0}, {ACPI_DMT_UINT32, ACPI_ASF3_OFFSET (EnterpriseId), "Enterprise ID", 0}, {ACPI_DMT_UINT8, ACPI_ASF3_OFFSET (Command), "Command", 0}, {ACPI_DMT_UINT16, ACPI_ASF3_OFFSET (Parameter), "Parameter", 0}, {ACPI_DMT_UINT16, ACPI_ASF3_OFFSET (BootOptions), "Boot Options", 0}, {ACPI_DMT_UINT16, ACPI_ASF3_OFFSET (OemParameters), "Oem Parameters", 0}, ACPI_DMT_TERMINATOR }; /* 4: ASF Address */ ACPI_DMTABLE_INFO AcpiDmTableInfoAsf4[] = { {ACPI_DMT_UINT8, ACPI_ASF4_OFFSET (EpromAddress), "Eprom Address", 0}, {ACPI_DMT_UINT8, ACPI_ASF4_OFFSET (Devices), "Device Count", DT_COUNT}, ACPI_DMT_TERMINATOR }; /******************************************************************************* * * BERT - Boot Error Record table * ******************************************************************************/ ACPI_DMTABLE_INFO AcpiDmTableInfoBert[] = { {ACPI_DMT_UINT32, ACPI_BERT_OFFSET (RegionLength), "Boot Error Region Length", 0}, {ACPI_DMT_UINT64, ACPI_BERT_OFFSET (Address), "Boot Error Region Address", 0}, ACPI_DMT_TERMINATOR }; /******************************************************************************* * * BGRT - Boot Graphics Resource Table (ACPI 5.0) * ******************************************************************************/ ACPI_DMTABLE_INFO AcpiDmTableInfoBgrt[] = { {ACPI_DMT_UINT16, ACPI_BGRT_OFFSET (Version), "Version", 0}, {ACPI_DMT_UINT8, ACPI_BGRT_OFFSET (Status), "Status", 0}, {ACPI_DMT_UINT8, ACPI_BGRT_OFFSET (ImageType), "Image Type", 0}, {ACPI_DMT_UINT64, ACPI_BGRT_OFFSET (ImageAddress), "Image Address", 0}, {ACPI_DMT_UINT32, ACPI_BGRT_OFFSET (ImageOffsetX), "Image OffsetX", 0}, {ACPI_DMT_UINT32, ACPI_BGRT_OFFSET (ImageOffsetY), "Image OffsetY", 0}, ACPI_DMT_TERMINATOR }; /******************************************************************************* * * BOOT - Simple Boot Flag Table * ******************************************************************************/ ACPI_DMTABLE_INFO AcpiDmTableInfoBoot[] = { {ACPI_DMT_UINT8, ACPI_BOOT_OFFSET (CmosIndex), "Boot Register Index", 0}, {ACPI_DMT_UINT24, ACPI_BOOT_OFFSET (Reserved[0]), "Reserved", 0}, ACPI_DMT_TERMINATOR }; /******************************************************************************* * * CPEP - Corrected Platform Error Polling table * ******************************************************************************/ ACPI_DMTABLE_INFO AcpiDmTableInfoCpep[] = { {ACPI_DMT_UINT64, ACPI_CPEP_OFFSET (Reserved), "Reserved", 0}, ACPI_DMT_TERMINATOR }; ACPI_DMTABLE_INFO AcpiDmTableInfoCpep0[] = { {ACPI_DMT_UINT8, ACPI_CPEP0_OFFSET (Header.Type), "Subtable Type", 0}, {ACPI_DMT_UINT8, ACPI_CPEP0_OFFSET (Header.Length), "Length", DT_LENGTH}, {ACPI_DMT_UINT8, ACPI_CPEP0_OFFSET (Id), "Processor ID", 0}, {ACPI_DMT_UINT8, ACPI_CPEP0_OFFSET (Eid), "Processor EID", 0}, {ACPI_DMT_UINT32, ACPI_CPEP0_OFFSET (Interval), "Polling Interval", 0}, ACPI_DMT_TERMINATOR }; /******************************************************************************* * * CSRT - Core System Resource Table * ******************************************************************************/ /* Main table consists only of the standard ACPI table header */ /* Resource Group subtable */ ACPI_DMTABLE_INFO AcpiDmTableInfoCsrt0[] = { {ACPI_DMT_UINT32, ACPI_CSRT0_OFFSET (Length), "Length", 0}, {ACPI_DMT_UINT32, ACPI_CSRT0_OFFSET (VendorId), "Vendor ID", 0}, {ACPI_DMT_UINT32, ACPI_CSRT0_OFFSET (SubvendorId), "Subvendor ID", 0}, {ACPI_DMT_UINT16, ACPI_CSRT0_OFFSET (DeviceId), "Device ID", 0}, {ACPI_DMT_UINT16, ACPI_CSRT0_OFFSET (SubdeviceId), "Subdevice ID", 0}, {ACPI_DMT_UINT16, ACPI_CSRT0_OFFSET (Revision), "Revision", 0}, {ACPI_DMT_UINT16, ACPI_CSRT0_OFFSET (Reserved), "Reserved", 0}, {ACPI_DMT_UINT32, ACPI_CSRT0_OFFSET (SharedInfoLength), "Shared Info Length", 0}, ACPI_DMT_TERMINATOR }; /* Shared Info subtable */ ACPI_DMTABLE_INFO AcpiDmTableInfoCsrt1[] = { {ACPI_DMT_UINT16, ACPI_CSRT1_OFFSET (MajorVersion), "Major Version", 0}, {ACPI_DMT_UINT16, ACPI_CSRT1_OFFSET (MinorVersion), "Minor Version", 0}, {ACPI_DMT_UINT32, ACPI_CSRT1_OFFSET (MmioBaseLow), "MMIO Base Address Low", 0}, {ACPI_DMT_UINT32, ACPI_CSRT1_OFFSET (MmioBaseHigh), "MMIO Base Address High", 0}, {ACPI_DMT_UINT32, ACPI_CSRT1_OFFSET (GsiInterrupt), "GSI Interrupt", 0}, {ACPI_DMT_UINT8, ACPI_CSRT1_OFFSET (InterruptPolarity), "Interrupt Polarity", 0}, {ACPI_DMT_UINT8, ACPI_CSRT1_OFFSET (InterruptMode), "Interrupt Mode", 0}, {ACPI_DMT_UINT8, ACPI_CSRT1_OFFSET (NumChannels), "Num Channels", 0}, {ACPI_DMT_UINT8, ACPI_CSRT1_OFFSET (DmaAddressWidth), "DMA Address Width", 0}, {ACPI_DMT_UINT16, ACPI_CSRT1_OFFSET (BaseRequestLine), "Base Request Line", 0}, {ACPI_DMT_UINT16, ACPI_CSRT1_OFFSET (NumHandshakeSignals), "Num Handshake Signals", 0}, {ACPI_DMT_UINT32, ACPI_CSRT1_OFFSET (MaxBlockSize), "Max Block Size", 0}, ACPI_DMT_TERMINATOR }; /* Resource Descriptor subtable */ ACPI_DMTABLE_INFO AcpiDmTableInfoCsrt2[] = { {ACPI_DMT_UINT32, ACPI_CSRT2_OFFSET (Length), "Length", 0}, {ACPI_DMT_UINT16, ACPI_CSRT2_OFFSET (Type), "Type", 0}, {ACPI_DMT_UINT16, ACPI_CSRT2_OFFSET (Subtype), "Subtype", 0}, {ACPI_DMT_UINT32, ACPI_CSRT2_OFFSET (Uid), "UID", 0}, ACPI_DMT_TERMINATOR }; /******************************************************************************* * * DBG2 - Debug Port Table 2 * ******************************************************************************/ ACPI_DMTABLE_INFO AcpiDmTableInfoDbg2[] = { {ACPI_DMT_UINT32, ACPI_DBG2_OFFSET (InfoOffset), "Info Offset", 0}, {ACPI_DMT_UINT32, ACPI_DBG2_OFFSET (InfoCount), "Info Count", 0}, ACPI_DMT_TERMINATOR }; /* Debug Device Information Subtable */ ACPI_DMTABLE_INFO AcpiDmTableInfoDbg2Device[] = { {ACPI_DMT_UINT8, ACPI_DBG20_OFFSET (Revision), "Revision", 0}, {ACPI_DMT_UINT16, ACPI_DBG20_OFFSET (Length), "Length", DT_LENGTH}, {ACPI_DMT_UINT8, ACPI_DBG20_OFFSET (RegisterCount), "Register Count", 0}, {ACPI_DMT_UINT16, ACPI_DBG20_OFFSET (NamepathLength), "Namepath Length", 0}, {ACPI_DMT_UINT16, ACPI_DBG20_OFFSET (NamepathOffset), "Namepath Offset", 0}, {ACPI_DMT_UINT16, ACPI_DBG20_OFFSET (OemDataLength), "OEM Data Length", DT_DESCRIBES_OPTIONAL}, {ACPI_DMT_UINT16, ACPI_DBG20_OFFSET (OemDataOffset), "OEM Data Offset", DT_DESCRIBES_OPTIONAL}, {ACPI_DMT_UINT16, ACPI_DBG20_OFFSET (PortType), "Port Type", 0}, {ACPI_DMT_UINT16, ACPI_DBG20_OFFSET (PortSubtype), "Port Subtype", 0}, {ACPI_DMT_UINT16, ACPI_DBG20_OFFSET (Reserved), "Reserved", 0}, {ACPI_DMT_UINT16, ACPI_DBG20_OFFSET (BaseAddressOffset), "Base Address Offset", 0}, {ACPI_DMT_UINT16, ACPI_DBG20_OFFSET (AddressSizeOffset), "Address Size Offset", 0}, ACPI_DMT_TERMINATOR }; /* Variable-length data for the subtable */ ACPI_DMTABLE_INFO AcpiDmTableInfoDbg2Addr[] = { {ACPI_DMT_GAS, 0, "Base Address Register", 0}, ACPI_DMT_TERMINATOR }; ACPI_DMTABLE_INFO AcpiDmTableInfoDbg2Size[] = { {ACPI_DMT_UINT32, 0, "Address Size", 0}, ACPI_DMT_TERMINATOR }; ACPI_DMTABLE_INFO AcpiDmTableInfoDbg2Name[] = { {ACPI_DMT_STRING, 0, "Namepath", 0}, ACPI_DMT_TERMINATOR }; ACPI_DMTABLE_INFO AcpiDmTableInfoDbg2OemData[] = { {ACPI_DMT_BUFFER, 0, "OEM Data", DT_OPTIONAL}, ACPI_DMT_TERMINATOR }; /******************************************************************************* * * DBGP - Debug Port * ******************************************************************************/ ACPI_DMTABLE_INFO AcpiDmTableInfoDbgp[] = { {ACPI_DMT_UINT8, ACPI_DBGP_OFFSET (Type), "Interface Type", 0}, {ACPI_DMT_UINT24, ACPI_DBGP_OFFSET (Reserved[0]), "Reserved", 0}, {ACPI_DMT_GAS, ACPI_DBGP_OFFSET (DebugPort), "Debug Port Register", 0}, ACPI_DMT_TERMINATOR }; /******************************************************************************* * * DMAR - DMA Remapping table * ******************************************************************************/ ACPI_DMTABLE_INFO AcpiDmTableInfoDmar[] = { {ACPI_DMT_UINT8, ACPI_DMAR_OFFSET (Width), "Host Address Width", 0}, {ACPI_DMT_UINT8, ACPI_DMAR_OFFSET (Flags), "Flags", 0}, {ACPI_DMT_BUF10, ACPI_DMAR_OFFSET (Reserved[0]), "Reserved", 0}, ACPI_DMT_TERMINATOR }; /* Common Subtable header (one per Subtable) */ ACPI_DMTABLE_INFO AcpiDmTableInfoDmarHdr[] = { {ACPI_DMT_DMAR, ACPI_DMAR0_OFFSET (Header.Type), "Subtable Type", 0}, {ACPI_DMT_UINT16, ACPI_DMAR0_OFFSET (Header.Length), "Length", DT_LENGTH}, ACPI_DMT_TERMINATOR }; /* Common device scope entry */ ACPI_DMTABLE_INFO AcpiDmTableInfoDmarScope[] = { {ACPI_DMT_UINT8, ACPI_DMARS_OFFSET (EntryType), "Device Scope Entry Type", 0}, {ACPI_DMT_UINT8, ACPI_DMARS_OFFSET (Length), "Entry Length", DT_LENGTH}, {ACPI_DMT_UINT16, ACPI_DMARS_OFFSET (Reserved), "Reserved", 0}, {ACPI_DMT_UINT8, ACPI_DMARS_OFFSET (EnumerationId), "Enumeration ID", 0}, {ACPI_DMT_UINT8, ACPI_DMARS_OFFSET (Bus), "PCI Bus Number", 0}, ACPI_DMT_TERMINATOR }; /* DMAR Subtables */ /* 0: Hardware Unit Definition */ ACPI_DMTABLE_INFO AcpiDmTableInfoDmar0[] = { {ACPI_DMT_UINT8, ACPI_DMAR0_OFFSET (Flags), "Flags", 0}, {ACPI_DMT_UINT8, ACPI_DMAR0_OFFSET (Reserved), "Reserved", 0}, {ACPI_DMT_UINT16, ACPI_DMAR0_OFFSET (Segment), "PCI Segment Number", 0}, {ACPI_DMT_UINT64, ACPI_DMAR0_OFFSET (Address), "Register Base Address", 0}, ACPI_DMT_TERMINATOR }; /* 1: Reserved Memory Definition */ ACPI_DMTABLE_INFO AcpiDmTableInfoDmar1[] = { {ACPI_DMT_UINT16, ACPI_DMAR1_OFFSET (Reserved), "Reserved", 0}, {ACPI_DMT_UINT16, ACPI_DMAR1_OFFSET (Segment), "PCI Segment Number", 0}, {ACPI_DMT_UINT64, ACPI_DMAR1_OFFSET (BaseAddress), "Base Address", 0}, {ACPI_DMT_UINT64, ACPI_DMAR1_OFFSET (EndAddress), "End Address (limit)", 0}, ACPI_DMT_TERMINATOR }; /* 2: Root Port ATS Capability Definition */ ACPI_DMTABLE_INFO AcpiDmTableInfoDmar2[] = { {ACPI_DMT_UINT8, ACPI_DMAR2_OFFSET (Flags), "Flags", 0}, {ACPI_DMT_UINT8, ACPI_DMAR2_OFFSET (Reserved), "Reserved", 0}, {ACPI_DMT_UINT16, ACPI_DMAR2_OFFSET (Segment), "PCI Segment Number", 0}, ACPI_DMT_TERMINATOR }; /* 3: Remapping Hardware Static Affinity Structure */ ACPI_DMTABLE_INFO AcpiDmTableInfoDmar3[] = { {ACPI_DMT_UINT32, ACPI_DMAR3_OFFSET (Reserved), "Reserved", 0}, {ACPI_DMT_UINT64, ACPI_DMAR3_OFFSET (BaseAddress), "Base Address", 0}, {ACPI_DMT_UINT32, ACPI_DMAR3_OFFSET (ProximityDomain), "Proximity Domain", 0}, ACPI_DMT_TERMINATOR }; /******************************************************************************* * * DRTM - Dynamic Root of Trust for Measurement table * ******************************************************************************/ ACPI_DMTABLE_INFO AcpiDmTableInfoDrtm[] = { ACPI_DMT_TERMINATOR }; /******************************************************************************* * * ECDT - Embedded Controller Boot Resources Table * ******************************************************************************/ ACPI_DMTABLE_INFO AcpiDmTableInfoEcdt[] = { {ACPI_DMT_GAS, ACPI_ECDT_OFFSET (Control), "Command/Status Register", 0}, {ACPI_DMT_GAS, ACPI_ECDT_OFFSET (Data), "Data Register", 0}, {ACPI_DMT_UINT32, ACPI_ECDT_OFFSET (Uid), "UID", 0}, {ACPI_DMT_UINT8, ACPI_ECDT_OFFSET (Gpe), "GPE Number", 0}, {ACPI_DMT_STRING, ACPI_ECDT_OFFSET (Id[0]), "Namepath", 0}, ACPI_DMT_TERMINATOR }; /******************************************************************************* * * EINJ - Error Injection table * ******************************************************************************/ ACPI_DMTABLE_INFO AcpiDmTableInfoEinj[] = { {ACPI_DMT_UINT32, ACPI_EINJ_OFFSET (HeaderLength), "Injection Header Length", 0}, {ACPI_DMT_UINT8, ACPI_EINJ_OFFSET (Flags), "Flags", 0}, {ACPI_DMT_UINT24, ACPI_EINJ_OFFSET (Reserved[0]), "Reserved", 0}, {ACPI_DMT_UINT32, ACPI_EINJ_OFFSET (Entries), "Injection Entry Count", 0}, ACPI_DMT_TERMINATOR }; ACPI_DMTABLE_INFO AcpiDmTableInfoEinj0[] = { {ACPI_DMT_EINJACT, ACPI_EINJ0_OFFSET (Action), "Action", 0}, {ACPI_DMT_EINJINST, ACPI_EINJ0_OFFSET (Instruction), "Instruction", 0}, {ACPI_DMT_UINT8, ACPI_EINJ0_OFFSET (Flags), "Flags (decoded below)", DT_FLAG}, {ACPI_DMT_FLAG0, ACPI_EINJ0_FLAG_OFFSET (Flags,0), "Preserve Register Bits", 0}, {ACPI_DMT_UINT8, ACPI_EINJ0_OFFSET (Reserved), "Reserved", 0}, {ACPI_DMT_GAS, ACPI_EINJ0_OFFSET (RegisterRegion), "Register Region", 0}, {ACPI_DMT_UINT64, ACPI_EINJ0_OFFSET (Value), "Value", 0}, {ACPI_DMT_UINT64, ACPI_EINJ0_OFFSET (Mask), "Mask", 0}, ACPI_DMT_TERMINATOR }; /******************************************************************************* * * ERST - Error Record Serialization table * ******************************************************************************/ ACPI_DMTABLE_INFO AcpiDmTableInfoErst[] = { {ACPI_DMT_UINT32, ACPI_ERST_OFFSET (HeaderLength), "Serialization Header Length", 0}, {ACPI_DMT_UINT32, ACPI_ERST_OFFSET (Reserved), "Reserved", 0}, {ACPI_DMT_UINT32, ACPI_ERST_OFFSET (Entries), "Instruction Entry Count", 0}, ACPI_DMT_TERMINATOR }; ACPI_DMTABLE_INFO AcpiDmTableInfoErst0[] = { {ACPI_DMT_ERSTACT, ACPI_ERST0_OFFSET (Action), "Action", 0}, {ACPI_DMT_ERSTINST, ACPI_ERST0_OFFSET (Instruction), "Instruction", 0}, {ACPI_DMT_UINT8, ACPI_ERST0_OFFSET (Flags), "Flags (decoded below)", DT_FLAG}, {ACPI_DMT_FLAG0, ACPI_ERST0_FLAG_OFFSET (Flags,0), "Preserve Register Bits", 0}, {ACPI_DMT_UINT8, ACPI_ERST0_OFFSET (Reserved), "Reserved", 0}, {ACPI_DMT_GAS, ACPI_ERST0_OFFSET (RegisterRegion), "Register Region", 0}, {ACPI_DMT_UINT64, ACPI_ERST0_OFFSET (Value), "Value", 0}, {ACPI_DMT_UINT64, ACPI_ERST0_OFFSET (Mask), "Mask", 0}, ACPI_DMT_TERMINATOR }; /******************************************************************************* * * FPDT - Firmware Performance Data Table (ACPI 5.0) * ******************************************************************************/ /* Main table consists of only the standard ACPI header - subtables follow */ /* FPDT subtable header */ ACPI_DMTABLE_INFO AcpiDmTableInfoFpdtHdr[] = { {ACPI_DMT_UINT16, ACPI_FPDTH_OFFSET (Type), "Subtable Type", 0}, {ACPI_DMT_UINT8, ACPI_FPDTH_OFFSET (Length), "Length", DT_LENGTH}, {ACPI_DMT_UINT8, ACPI_FPDTH_OFFSET (Revision), "Revision", 0}, ACPI_DMT_TERMINATOR }; /* 0: Firmware Basic Boot Performance Record */ ACPI_DMTABLE_INFO AcpiDmTableInfoFpdt0[] = { {ACPI_DMT_UINT32, ACPI_FPDT0_OFFSET (Reserved), "Reserved", 0}, {ACPI_DMT_UINT64, ACPI_FPDT0_OFFSET (ResetEnd), "Reset End", 0}, {ACPI_DMT_UINT64, ACPI_FPDT0_OFFSET (LoadStart), "Load Image Start", 0}, {ACPI_DMT_UINT64, ACPI_FPDT0_OFFSET (StartupStart), "Start Image Start", 0}, {ACPI_DMT_UINT64, ACPI_FPDT0_OFFSET (ExitServicesEntry), "Exit Services Entry", 0}, {ACPI_DMT_UINT64, ACPI_FPDT0_OFFSET (ExitServicesExit), "Exit Services Exit", 0}, ACPI_DMT_TERMINATOR }; /* 1: S3 Performance Table Pointer Record */ ACPI_DMTABLE_INFO AcpiDmTableInfoFpdt1[] = { {ACPI_DMT_UINT32, ACPI_FPDT1_OFFSET (Reserved), "Reserved", 0}, {ACPI_DMT_UINT64, ACPI_FPDT1_OFFSET (Address), "S3PT Address", 0}, ACPI_DMT_TERMINATOR }; /******************************************************************************* * * GTDT - Generic Timer Description Table * ******************************************************************************/ ACPI_DMTABLE_INFO AcpiDmTableInfoGtdt[] = { {ACPI_DMT_UINT64, ACPI_GTDT_OFFSET (Address), "Timer Address", 0}, {ACPI_DMT_UINT32, ACPI_GTDT_OFFSET (Flags), "Flags (decoded below)", DT_FLAG}, {ACPI_DMT_FLAG0, ACPI_GTDT_FLAG_OFFSET (Flags,0), "Memory Present", 0}, ACPI_DMT_NEW_LINE, {ACPI_DMT_UINT32, ACPI_GTDT_OFFSET (SecurePl1Interrupt), "Secure PL1 Interrupt", 0}, {ACPI_DMT_UINT32, ACPI_GTDT_OFFSET (SecurePl1Flags), "SPL1 Flags (decoded below)", DT_FLAG}, {ACPI_DMT_FLAG0, ACPI_GTDT_FLAG_OFFSET (SecurePl1Flags,0), "Trigger Mode", 0}, {ACPI_DMT_FLAG1, ACPI_GTDT_FLAG_OFFSET (SecurePl1Flags,0), "Polarity", 0}, ACPI_DMT_NEW_LINE, {ACPI_DMT_UINT32, ACPI_GTDT_OFFSET (NonSecurePl1Interrupt), "Non-Secure PL1 Interrupt", 0}, {ACPI_DMT_UINT32, ACPI_GTDT_OFFSET (NonSecurePl1Flags), "NSPL1 Flags (decoded below)", DT_FLAG}, {ACPI_DMT_FLAG0, ACPI_GTDT_FLAG_OFFSET (NonSecurePl1Flags,0),"Trigger Mode", 0}, {ACPI_DMT_FLAG1, ACPI_GTDT_FLAG_OFFSET (NonSecurePl1Flags,0),"Polarity", 0}, ACPI_DMT_NEW_LINE, {ACPI_DMT_UINT32, ACPI_GTDT_OFFSET (VirtualTimerInterrupt), "Virtual Timer Interrupt", 0}, {ACPI_DMT_UINT32, ACPI_GTDT_OFFSET (VirtualTimerFlags), "VT Flags (decoded below)", DT_FLAG}, {ACPI_DMT_FLAG0, ACPI_GTDT_FLAG_OFFSET (VirtualTimerFlags,0),"Trigger Mode", 0}, {ACPI_DMT_FLAG1, ACPI_GTDT_FLAG_OFFSET (VirtualTimerFlags,0),"Polarity", 0}, ACPI_DMT_NEW_LINE, {ACPI_DMT_UINT32, ACPI_GTDT_OFFSET (NonSecurePl2Interrupt), "Non-Secure PL2 Interrupt", 0}, {ACPI_DMT_UINT32, ACPI_GTDT_OFFSET (NonSecurePl2Flags), "NSPL2 Flags (decoded below)", DT_FLAG}, {ACPI_DMT_FLAG0, ACPI_GTDT_FLAG_OFFSET (NonSecurePl2Flags,0),"Trigger Mode", 0}, {ACPI_DMT_FLAG1, ACPI_GTDT_FLAG_OFFSET (NonSecurePl2Flags,0),"Polarity", 0}, ACPI_DMT_TERMINATOR }; /******************************************************************************* * * HEST - Hardware Error Source table * ******************************************************************************/ ACPI_DMTABLE_INFO AcpiDmTableInfoHest[] = { {ACPI_DMT_UINT32, ACPI_HEST_OFFSET (ErrorSourceCount), "Error Source Count", 0}, ACPI_DMT_TERMINATOR }; /* Common HEST structures for subtables */ #define ACPI_DM_HEST_HEADER \ {ACPI_DMT_HEST, ACPI_HEST0_OFFSET (Header.Type), "Subtable Type", 0}, \ {ACPI_DMT_UINT16, ACPI_HEST0_OFFSET (Header.SourceId), "Source Id", 0} #define ACPI_DM_HEST_AER \ {ACPI_DMT_UINT16, ACPI_HEST6_OFFSET (Aer.Reserved1), "Reserved", 0}, \ {ACPI_DMT_UINT8, ACPI_HEST6_OFFSET (Aer.Flags), "Flags (decoded below)", DT_FLAG}, \ {ACPI_DMT_FLAG0, ACPI_HEST6_FLAG_OFFSET (Aer.Flags,0), "Firmware First", 0}, \ {ACPI_DMT_UINT8, ACPI_HEST6_OFFSET (Aer.Enabled), "Enabled", 0}, \ {ACPI_DMT_UINT32, ACPI_HEST6_OFFSET (Aer.RecordsToPreallocate), "Records To Preallocate", 0}, \ {ACPI_DMT_UINT32, ACPI_HEST6_OFFSET (Aer.MaxSectionsPerRecord), "Max Sections Per Record", 0}, \ {ACPI_DMT_UINT32, ACPI_HEST6_OFFSET (Aer.Bus), "Bus", 0}, \ {ACPI_DMT_UINT16, ACPI_HEST6_OFFSET (Aer.Device), "Device", 0}, \ {ACPI_DMT_UINT16, ACPI_HEST6_OFFSET (Aer.Function), "Function", 0}, \ {ACPI_DMT_UINT16, ACPI_HEST6_OFFSET (Aer.DeviceControl), "DeviceControl", 0}, \ {ACPI_DMT_UINT16, ACPI_HEST6_OFFSET (Aer.Reserved2), "Reserved", 0}, \ {ACPI_DMT_UINT32, ACPI_HEST6_OFFSET (Aer.UncorrectableMask), "Uncorrectable Mask", 0}, \ {ACPI_DMT_UINT32, ACPI_HEST6_OFFSET (Aer.UncorrectableSeverity), "Uncorrectable Severity", 0}, \ {ACPI_DMT_UINT32, ACPI_HEST6_OFFSET (Aer.CorrectableMask), "Correctable Mask", 0}, \ {ACPI_DMT_UINT32, ACPI_HEST6_OFFSET (Aer.AdvancedCapabilities), "Advanced Capabilities", 0} /* HEST Subtables */ /* 0: IA32 Machine Check Exception */ ACPI_DMTABLE_INFO AcpiDmTableInfoHest0[] = { ACPI_DM_HEST_HEADER, {ACPI_DMT_UINT16, ACPI_HEST0_OFFSET (Reserved1), "Reserved1", 0}, {ACPI_DMT_UINT8, ACPI_HEST0_OFFSET (Flags), "Flags (decoded below)", DT_FLAG}, {ACPI_DMT_FLAG0, ACPI_HEST0_FLAG_OFFSET (Flags,0), "Firmware First", 0}, {ACPI_DMT_UINT8, ACPI_HEST0_OFFSET (Enabled), "Enabled", 0}, {ACPI_DMT_UINT32, ACPI_HEST0_OFFSET (RecordsToPreallocate), "Records To Preallocate", 0}, {ACPI_DMT_UINT32, ACPI_HEST0_OFFSET (MaxSectionsPerRecord), "Max Sections Per Record", 0}, {ACPI_DMT_UINT64, ACPI_HEST0_OFFSET (GlobalCapabilityData), "Global Capability Data", 0}, {ACPI_DMT_UINT64, ACPI_HEST0_OFFSET (GlobalControlData), "Global Control Data", 0}, {ACPI_DMT_UINT8, ACPI_HEST0_OFFSET (NumHardwareBanks), "Num Hardware Banks", 0}, {ACPI_DMT_UINT56, ACPI_HEST0_OFFSET (Reserved3[0]), "Reserved2", 0}, ACPI_DMT_TERMINATOR }; /* 1: IA32 Corrected Machine Check */ ACPI_DMTABLE_INFO AcpiDmTableInfoHest1[] = { ACPI_DM_HEST_HEADER, {ACPI_DMT_UINT16, ACPI_HEST1_OFFSET (Reserved1), "Reserved1", 0}, {ACPI_DMT_UINT8, ACPI_HEST1_OFFSET (Flags), "Flags (decoded below)", DT_FLAG}, {ACPI_DMT_FLAG0, ACPI_HEST1_FLAG_OFFSET (Flags,0), "Firmware First", 0}, {ACPI_DMT_UINT8, ACPI_HEST1_OFFSET (Enabled), "Enabled", 0}, {ACPI_DMT_UINT32, ACPI_HEST1_OFFSET (RecordsToPreallocate), "Records To Preallocate", 0}, {ACPI_DMT_UINT32, ACPI_HEST1_OFFSET (MaxSectionsPerRecord), "Max Sections Per Record", 0}, {ACPI_DMT_HESTNTFY, ACPI_HEST1_OFFSET (Notify), "Notify", 0}, {ACPI_DMT_UINT8, ACPI_HEST1_OFFSET (NumHardwareBanks), "Num Hardware Banks", 0}, {ACPI_DMT_UINT24, ACPI_HEST1_OFFSET (Reserved2[0]), "Reserved2", 0}, ACPI_DMT_TERMINATOR }; /* 2: IA32 Non-Maskable Interrupt */ ACPI_DMTABLE_INFO AcpiDmTableInfoHest2[] = { ACPI_DM_HEST_HEADER, {ACPI_DMT_UINT32, ACPI_HEST2_OFFSET (Reserved), "Reserved", 0}, {ACPI_DMT_UINT32, ACPI_HEST2_OFFSET (RecordsToPreallocate), "Records To Preallocate", 0}, {ACPI_DMT_UINT32, ACPI_HEST2_OFFSET (MaxSectionsPerRecord), "Max Sections Per Record", 0}, {ACPI_DMT_UINT32, ACPI_HEST2_OFFSET (MaxRawDataLength), "Max Raw Data Length", 0}, ACPI_DMT_TERMINATOR }; /* 6: PCI Express Root Port AER */ ACPI_DMTABLE_INFO AcpiDmTableInfoHest6[] = { ACPI_DM_HEST_HEADER, ACPI_DM_HEST_AER, {ACPI_DMT_UINT32, ACPI_HEST6_OFFSET (RootErrorCommand), "Root Error Command", 0}, ACPI_DMT_TERMINATOR }; /* 7: PCI Express AER (AER Endpoint) */ ACPI_DMTABLE_INFO AcpiDmTableInfoHest7[] = { ACPI_DM_HEST_HEADER, ACPI_DM_HEST_AER, ACPI_DMT_TERMINATOR }; /* 8: PCI Express/PCI-X Bridge AER */ ACPI_DMTABLE_INFO AcpiDmTableInfoHest8[] = { ACPI_DM_HEST_HEADER, ACPI_DM_HEST_AER, {ACPI_DMT_UINT32, ACPI_HEST8_OFFSET (UncorrectableMask2), "2nd Uncorrectable Mask", 0}, {ACPI_DMT_UINT32, ACPI_HEST8_OFFSET (UncorrectableSeverity2), "2nd Uncorrectable Severity", 0}, {ACPI_DMT_UINT32, ACPI_HEST8_OFFSET (AdvancedCapabilities2), "2nd Advanced Capabilities", 0}, ACPI_DMT_TERMINATOR }; /* 9: Generic Hardware Error Source */ ACPI_DMTABLE_INFO AcpiDmTableInfoHest9[] = { ACPI_DM_HEST_HEADER, {ACPI_DMT_UINT16, ACPI_HEST9_OFFSET (RelatedSourceId), "Related Source Id", 0}, {ACPI_DMT_UINT8, ACPI_HEST9_OFFSET (Reserved), "Reserved", 0}, {ACPI_DMT_UINT8, ACPI_HEST9_OFFSET (Enabled), "Enabled", 0}, {ACPI_DMT_UINT32, ACPI_HEST9_OFFSET (RecordsToPreallocate), "Records To Preallocate", 0}, {ACPI_DMT_UINT32, ACPI_HEST9_OFFSET (MaxSectionsPerRecord), "Max Sections Per Record", 0}, {ACPI_DMT_UINT32, ACPI_HEST9_OFFSET (MaxRawDataLength), "Max Raw Data Length", 0}, {ACPI_DMT_GAS, ACPI_HEST9_OFFSET (ErrorStatusAddress), "Error Status Address", 0}, {ACPI_DMT_HESTNTFY, ACPI_HEST9_OFFSET (Notify), "Notify", 0}, {ACPI_DMT_UINT32, ACPI_HEST9_OFFSET (ErrorBlockLength), "Error Status Block Length", 0}, ACPI_DMT_TERMINATOR }; ACPI_DMTABLE_INFO AcpiDmTableInfoHestNotify[] = { {ACPI_DMT_HESTNTYP, ACPI_HESTN_OFFSET (Type), "Notify Type", 0}, {ACPI_DMT_UINT8, ACPI_HESTN_OFFSET (Length), "Notify Length", DT_LENGTH}, {ACPI_DMT_UINT16, ACPI_HESTN_OFFSET (ConfigWriteEnable), "Configuration Write Enable", 0}, {ACPI_DMT_UINT32, ACPI_HESTN_OFFSET (PollInterval), "PollInterval", 0}, {ACPI_DMT_UINT32, ACPI_HESTN_OFFSET (Vector), "Vector", 0}, {ACPI_DMT_UINT32, ACPI_HESTN_OFFSET (PollingThresholdValue), "Polling Threshold Value", 0}, {ACPI_DMT_UINT32, ACPI_HESTN_OFFSET (PollingThresholdWindow), "Polling Threshold Window", 0}, {ACPI_DMT_UINT32, ACPI_HESTN_OFFSET (ErrorThresholdValue), "Error Threshold Value", 0}, {ACPI_DMT_UINT32, ACPI_HESTN_OFFSET (ErrorThresholdWindow), "Error Threshold Window", 0}, ACPI_DMT_TERMINATOR }; /* * IA32 Error Bank(s) - Follows the ACPI_HEST_IA_MACHINE_CHECK and * ACPI_HEST_IA_CORRECTED structures. */ ACPI_DMTABLE_INFO AcpiDmTableInfoHestBank[] = { {ACPI_DMT_UINT8, ACPI_HESTB_OFFSET (BankNumber), "Bank Number", 0}, {ACPI_DMT_UINT8, ACPI_HESTB_OFFSET (ClearStatusOnInit), "Clear Status On Init", 0}, {ACPI_DMT_UINT8, ACPI_HESTB_OFFSET (StatusFormat), "Status Format", 0}, {ACPI_DMT_UINT8, ACPI_HESTB_OFFSET (Reserved), "Reserved", 0}, {ACPI_DMT_UINT32, ACPI_HESTB_OFFSET (ControlRegister), "Control Register", 0}, {ACPI_DMT_UINT64, ACPI_HESTB_OFFSET (ControlData), "Control Data", 0}, {ACPI_DMT_UINT32, ACPI_HESTB_OFFSET (StatusRegister), "Status Register", 0}, {ACPI_DMT_UINT32, ACPI_HESTB_OFFSET (AddressRegister), "Address Register", 0}, {ACPI_DMT_UINT32, ACPI_HESTB_OFFSET (MiscRegister), "Misc Register", 0}, ACPI_DMT_TERMINATOR }; /******************************************************************************* * * HPET - High Precision Event Timer table * ******************************************************************************/ ACPI_DMTABLE_INFO AcpiDmTableInfoHpet[] = { {ACPI_DMT_UINT32, ACPI_HPET_OFFSET (Id), "Hardware Block ID", 0}, {ACPI_DMT_GAS, ACPI_HPET_OFFSET (Address), "Timer Block Register", 0}, {ACPI_DMT_UINT8, ACPI_HPET_OFFSET (Sequence), "Sequence Number", 0}, {ACPI_DMT_UINT16, ACPI_HPET_OFFSET (MinimumTick), "Minimum Clock Ticks", 0}, {ACPI_DMT_UINT8, ACPI_HPET_OFFSET (Flags), "Flags (decoded below)", DT_FLAG}, {ACPI_DMT_FLAG0, ACPI_HPET_FLAG_OFFSET (Flags,0), "4K Page Protect", 0}, {ACPI_DMT_FLAG1, ACPI_HPET_FLAG_OFFSET (Flags,0), "64K Page Protect", 0}, ACPI_DMT_TERMINATOR }; /******************************************************************************* * * IVRS - I/O Virtualization Reporting Structure * ******************************************************************************/ ACPI_DMTABLE_INFO AcpiDmTableInfoIvrs[] = { {ACPI_DMT_UINT32, ACPI_IVRS_OFFSET (Info), "Virtualization Info", 0}, {ACPI_DMT_UINT64, ACPI_IVRS_OFFSET (Reserved), "Reserved", 0}, ACPI_DMT_TERMINATOR }; /* Common Subtable header (one per Subtable) */ ACPI_DMTABLE_INFO AcpiDmTableInfoIvrsHdr[] = { {ACPI_DMT_IVRS, ACPI_IVRSH_OFFSET (Type), "Subtable Type", 0}, {ACPI_DMT_UINT8, ACPI_IVRSH_OFFSET (Flags), "Flags", 0}, {ACPI_DMT_UINT16, ACPI_IVRSH_OFFSET (Length), "Length", DT_LENGTH}, {ACPI_DMT_UINT16, ACPI_IVRSH_OFFSET (DeviceId), "DeviceId", 0}, ACPI_DMT_TERMINATOR }; /* IVRS subtables */ /* 0x10: I/O Virtualization Hardware Definition (IVHD) Block */ ACPI_DMTABLE_INFO AcpiDmTableInfoIvrs0[] = { {ACPI_DMT_UINT16, ACPI_IVRS0_OFFSET (CapabilityOffset), "Capability Offset", 0}, {ACPI_DMT_UINT64, ACPI_IVRS0_OFFSET (BaseAddress), "Base Address", 0}, {ACPI_DMT_UINT16, ACPI_IVRS0_OFFSET (PciSegmentGroup), "PCI Segment Group", 0}, {ACPI_DMT_UINT16, ACPI_IVRS0_OFFSET (Info), "Virtualization Info", 0}, {ACPI_DMT_UINT32, ACPI_IVRS0_OFFSET (Reserved), "Reserved", 0}, ACPI_DMT_TERMINATOR }; /* 0x20, 0x21, 0x22: I/O Virtualization Memory Definition (IVMD) Block */ ACPI_DMTABLE_INFO AcpiDmTableInfoIvrs1[] = { {ACPI_DMT_UINT16, ACPI_IVRS1_OFFSET (AuxData), "Auxiliary Data", 0}, {ACPI_DMT_UINT64, ACPI_IVRS1_OFFSET (Reserved), "Reserved", 0}, {ACPI_DMT_UINT64, ACPI_IVRS1_OFFSET (StartAddress), "Start Address", 0}, {ACPI_DMT_UINT64, ACPI_IVRS1_OFFSET (MemoryLength), "Memory Length", 0}, ACPI_DMT_TERMINATOR }; /* Device entry header for IVHD block */ #define ACPI_DMT_IVRS_DE_HEADER \ {ACPI_DMT_UINT8, ACPI_IVRSD_OFFSET (Type), "Entry Type", 0}, \ {ACPI_DMT_UINT16, ACPI_IVRSD_OFFSET (Id), "Device ID", 0}, \ {ACPI_DMT_UINT8, ACPI_IVRSD_OFFSET (DataSetting), "Data Setting", 0} /* 4-byte device entry */ ACPI_DMTABLE_INFO AcpiDmTableInfoIvrs4[] = { ACPI_DMT_IVRS_DE_HEADER, {ACPI_DMT_EXIT, 0, NULL, 0}, }; /* 8-byte device entry */ ACPI_DMTABLE_INFO AcpiDmTableInfoIvrs8a[] = { ACPI_DMT_IVRS_DE_HEADER, {ACPI_DMT_UINT8, ACPI_IVRS8A_OFFSET (Reserved1), "Reserved", 0}, {ACPI_DMT_UINT16, ACPI_IVRS8A_OFFSET (UsedId), "Source Used Device ID", 0}, {ACPI_DMT_UINT8, ACPI_IVRS8A_OFFSET (Reserved2), "Reserved", 0}, ACPI_DMT_TERMINATOR }; /* 8-byte device entry */ ACPI_DMTABLE_INFO AcpiDmTableInfoIvrs8b[] = { ACPI_DMT_IVRS_DE_HEADER, {ACPI_DMT_UINT32, ACPI_IVRS8B_OFFSET (ExtendedData), "Extended Data", 0}, ACPI_DMT_TERMINATOR }; /* 8-byte device entry */ ACPI_DMTABLE_INFO AcpiDmTableInfoIvrs8c[] = { ACPI_DMT_IVRS_DE_HEADER, {ACPI_DMT_UINT8, ACPI_IVRS8C_OFFSET (Handle), "Handle", 0}, {ACPI_DMT_UINT16, ACPI_IVRS8C_OFFSET (UsedId), "Source Used Device ID", 0}, {ACPI_DMT_UINT8, ACPI_IVRS8C_OFFSET (Variety), "Variety", 0}, ACPI_DMT_TERMINATOR }; /******************************************************************************* * * MADT - Multiple APIC Description Table and subtables * ******************************************************************************/ ACPI_DMTABLE_INFO AcpiDmTableInfoMadt[] = { {ACPI_DMT_UINT32, ACPI_MADT_OFFSET (Address), "Local Apic Address", 0}, {ACPI_DMT_UINT32, ACPI_MADT_OFFSET (Flags), "Flags (decoded below)", DT_FLAG}, {ACPI_DMT_FLAG0, ACPI_MADT_FLAG_OFFSET (Flags,0), "PC-AT Compatibility", 0}, ACPI_DMT_TERMINATOR }; /* Common Subtable header (one per Subtable) */ ACPI_DMTABLE_INFO AcpiDmTableInfoMadtHdr[] = { {ACPI_DMT_MADT, ACPI_MADTH_OFFSET (Type), "Subtable Type", 0}, {ACPI_DMT_UINT8, ACPI_MADTH_OFFSET (Length), "Length", DT_LENGTH}, ACPI_DMT_TERMINATOR }; /* MADT Subtables */ /* 0: processor APIC */ ACPI_DMTABLE_INFO AcpiDmTableInfoMadt0[] = { {ACPI_DMT_UINT8, ACPI_MADT0_OFFSET (ProcessorId), "Processor ID", 0}, {ACPI_DMT_UINT8, ACPI_MADT0_OFFSET (Id), "Local Apic ID", 0}, {ACPI_DMT_UINT32, ACPI_MADT0_OFFSET (LapicFlags), "Flags (decoded below)", DT_FLAG}, {ACPI_DMT_FLAG0, ACPI_MADT0_FLAG_OFFSET (LapicFlags,0), "Processor Enabled", 0}, ACPI_DMT_TERMINATOR }; /* 1: IO APIC */ ACPI_DMTABLE_INFO AcpiDmTableInfoMadt1[] = { {ACPI_DMT_UINT8, ACPI_MADT1_OFFSET (Id), "I/O Apic ID", 0}, {ACPI_DMT_UINT8, ACPI_MADT1_OFFSET (Reserved), "Reserved", 0}, {ACPI_DMT_UINT32, ACPI_MADT1_OFFSET (Address), "Address", 0}, {ACPI_DMT_UINT32, ACPI_MADT1_OFFSET (GlobalIrqBase), "Interrupt", 0}, ACPI_DMT_TERMINATOR }; /* 2: Interrupt Override */ ACPI_DMTABLE_INFO AcpiDmTableInfoMadt2[] = { {ACPI_DMT_UINT8, ACPI_MADT2_OFFSET (Bus), "Bus", 0}, {ACPI_DMT_UINT8, ACPI_MADT2_OFFSET (SourceIrq), "Source", 0}, {ACPI_DMT_UINT32, ACPI_MADT2_OFFSET (GlobalIrq), "Interrupt", 0}, {ACPI_DMT_UINT16, ACPI_MADT2_OFFSET (IntiFlags), "Flags (decoded below)", DT_FLAG}, {ACPI_DMT_FLAGS0, ACPI_MADT2_FLAG_OFFSET (IntiFlags,0), "Polarity", 0}, {ACPI_DMT_FLAGS2, ACPI_MADT2_FLAG_OFFSET (IntiFlags,0), "Trigger Mode", 0}, ACPI_DMT_TERMINATOR }; /* 3: NMI Sources */ ACPI_DMTABLE_INFO AcpiDmTableInfoMadt3[] = { {ACPI_DMT_UINT16, ACPI_MADT3_OFFSET (IntiFlags), "Flags (decoded below)", DT_FLAG}, {ACPI_DMT_FLAGS0, ACPI_MADT3_FLAG_OFFSET (IntiFlags,0), "Polarity", 0}, {ACPI_DMT_FLAGS2, ACPI_MADT3_FLAG_OFFSET (IntiFlags,0), "Trigger Mode", 0}, {ACPI_DMT_UINT32, ACPI_MADT3_OFFSET (GlobalIrq), "Interrupt", 0}, ACPI_DMT_TERMINATOR }; /* 4: Local APIC NMI */ ACPI_DMTABLE_INFO AcpiDmTableInfoMadt4[] = { {ACPI_DMT_UINT8, ACPI_MADT4_OFFSET (ProcessorId), "Processor ID", 0}, {ACPI_DMT_UINT16, ACPI_MADT4_OFFSET (IntiFlags), "Flags (decoded below)", DT_FLAG}, {ACPI_DMT_FLAGS0, ACPI_MADT4_FLAG_OFFSET (IntiFlags,0), "Polarity", 0}, {ACPI_DMT_FLAGS2, ACPI_MADT4_FLAG_OFFSET (IntiFlags,0), "Trigger Mode", 0}, {ACPI_DMT_UINT8, ACPI_MADT4_OFFSET (Lint), "Interrupt Input LINT", 0}, ACPI_DMT_TERMINATOR }; /* 5: Address Override */ ACPI_DMTABLE_INFO AcpiDmTableInfoMadt5[] = { {ACPI_DMT_UINT16, ACPI_MADT5_OFFSET (Reserved), "Reserved", 0}, {ACPI_DMT_UINT64, ACPI_MADT5_OFFSET (Address), "APIC Address", 0}, ACPI_DMT_TERMINATOR }; /* 6: I/O Sapic */ ACPI_DMTABLE_INFO AcpiDmTableInfoMadt6[] = { {ACPI_DMT_UINT8, ACPI_MADT6_OFFSET (Id), "I/O Sapic ID", 0}, {ACPI_DMT_UINT8, ACPI_MADT6_OFFSET (Reserved), "Reserved", 0}, {ACPI_DMT_UINT32, ACPI_MADT6_OFFSET (GlobalIrqBase), "Interrupt Base", 0}, {ACPI_DMT_UINT64, ACPI_MADT6_OFFSET (Address), "Address", 0}, ACPI_DMT_TERMINATOR }; /* 7: Local Sapic */ ACPI_DMTABLE_INFO AcpiDmTableInfoMadt7[] = { {ACPI_DMT_UINT8, ACPI_MADT7_OFFSET (ProcessorId), "Processor ID", 0}, {ACPI_DMT_UINT8, ACPI_MADT7_OFFSET (Id), "Local Sapic ID", 0}, {ACPI_DMT_UINT8, ACPI_MADT7_OFFSET (Eid), "Local Sapic EID", 0}, {ACPI_DMT_UINT24, ACPI_MADT7_OFFSET (Reserved[0]), "Reserved", 0}, {ACPI_DMT_UINT32, ACPI_MADT7_OFFSET (LapicFlags), "Flags (decoded below)", DT_FLAG}, {ACPI_DMT_FLAG0, ACPI_MADT7_FLAG_OFFSET (LapicFlags,0), "Processor Enabled", 0}, {ACPI_DMT_UINT32, ACPI_MADT7_OFFSET (Uid), "Processor UID", 0}, {ACPI_DMT_STRING, ACPI_MADT7_OFFSET (UidString[0]), "Processor UID String", 0}, ACPI_DMT_TERMINATOR }; /* 8: Platform Interrupt Source */ ACPI_DMTABLE_INFO AcpiDmTableInfoMadt8[] = { {ACPI_DMT_UINT16, ACPI_MADT8_OFFSET (IntiFlags), "Flags (decoded below)", DT_FLAG}, {ACPI_DMT_FLAGS0, ACPI_MADT8_FLAG_OFFSET (IntiFlags,0), "Polarity", 0}, {ACPI_DMT_FLAGS2, ACPI_MADT8_FLAG_OFFSET (IntiFlags,0), "Trigger Mode", 0}, {ACPI_DMT_UINT8, ACPI_MADT8_OFFSET (Type), "InterruptType", 0}, {ACPI_DMT_UINT8, ACPI_MADT8_OFFSET (Id), "Processor ID", 0}, {ACPI_DMT_UINT8, ACPI_MADT8_OFFSET (Eid), "Processor EID", 0}, {ACPI_DMT_UINT8, ACPI_MADT8_OFFSET (IoSapicVector), "I/O Sapic Vector", 0}, {ACPI_DMT_UINT32, ACPI_MADT8_OFFSET (GlobalIrq), "Interrupt", 0}, {ACPI_DMT_UINT32, ACPI_MADT8_OFFSET (Flags), "Flags (decoded below)", DT_FLAG}, {ACPI_DMT_FLAG0, ACPI_MADT8_OFFSET (Flags), "CPEI Override", 0}, ACPI_DMT_TERMINATOR }; /* 9: Processor Local X2_APIC (ACPI 4.0) */ ACPI_DMTABLE_INFO AcpiDmTableInfoMadt9[] = { {ACPI_DMT_UINT16, ACPI_MADT9_OFFSET (Reserved), "Reserved", 0}, {ACPI_DMT_UINT32, ACPI_MADT9_OFFSET (LocalApicId), "Processor x2Apic ID", 0}, {ACPI_DMT_UINT32, ACPI_MADT9_OFFSET (LapicFlags), "Flags (decoded below)", DT_FLAG}, {ACPI_DMT_FLAG0, ACPI_MADT9_FLAG_OFFSET (LapicFlags,0), "Processor Enabled", 0}, {ACPI_DMT_UINT32, ACPI_MADT9_OFFSET (Uid), "Processor UID", 0}, ACPI_DMT_TERMINATOR }; /* 10: Local X2_APIC NMI (ACPI 4.0) */ ACPI_DMTABLE_INFO AcpiDmTableInfoMadt10[] = { {ACPI_DMT_UINT16, ACPI_MADT10_OFFSET (IntiFlags), "Flags (decoded below)", DT_FLAG}, {ACPI_DMT_FLAGS0, ACPI_MADT10_FLAG_OFFSET (IntiFlags,0), "Polarity", 0}, {ACPI_DMT_FLAGS2, ACPI_MADT10_FLAG_OFFSET (IntiFlags,0), "Trigger Mode", 0}, {ACPI_DMT_UINT32, ACPI_MADT10_OFFSET (Uid), "Processor UID", 0}, {ACPI_DMT_UINT8, ACPI_MADT10_OFFSET (Lint), "Interrupt Input LINT", 0}, {ACPI_DMT_UINT24, ACPI_MADT10_OFFSET (Reserved[0]), "Reserved", 0}, ACPI_DMT_TERMINATOR }; /* 11: Generic Interrupt Controller (ACPI 5.0) */ ACPI_DMTABLE_INFO AcpiDmTableInfoMadt11[] = { {ACPI_DMT_UINT16, ACPI_MADT11_OFFSET (Reserved), "Reserved", 0}, {ACPI_DMT_UINT32, ACPI_MADT11_OFFSET (GicId), "Local GIC Hardware ID", 0}, {ACPI_DMT_UINT32, ACPI_MADT11_OFFSET (Uid), "Processor UID", 0}, {ACPI_DMT_UINT32, ACPI_MADT11_OFFSET (Flags), "Flags (decoded below)", DT_FLAG}, {ACPI_DMT_FLAG0, ACPI_MADT11_FLAG_OFFSET (Flags,0), "Processor Enabled", 0}, {ACPI_DMT_UINT32, ACPI_MADT11_OFFSET (ParkingVersion), "Parking Protocol Version", 0}, {ACPI_DMT_UINT32, ACPI_MADT11_OFFSET (PerformanceInterrupt), "Performance Interrupt", 0}, {ACPI_DMT_UINT64, ACPI_MADT11_OFFSET (ParkedAddress), "Parked Address", 0}, {ACPI_DMT_UINT64, ACPI_MADT11_OFFSET (BaseAddress), "Base Address", 0}, ACPI_DMT_TERMINATOR }; /* 12: Generic Interrupt Distributor (ACPI 5.0) */ ACPI_DMTABLE_INFO AcpiDmTableInfoMadt12[] = { {ACPI_DMT_UINT16, ACPI_MADT12_OFFSET (Reserved), "Reserved", 0}, {ACPI_DMT_UINT32, ACPI_MADT12_OFFSET (GicId), "Local GIC Hardware ID", 0}, {ACPI_DMT_UINT64, ACPI_MADT12_OFFSET (BaseAddress), "Base Address", 0}, {ACPI_DMT_UINT32, ACPI_MADT12_OFFSET (GlobalIrqBase), "Interrupt Base", 0}, {ACPI_DMT_UINT32, ACPI_MADT12_OFFSET (Reserved2), "Reserved", 0}, ACPI_DMT_TERMINATOR }; /******************************************************************************* * * MCFG - PCI Memory Mapped Configuration table and Subtable * ******************************************************************************/ ACPI_DMTABLE_INFO AcpiDmTableInfoMcfg[] = { {ACPI_DMT_UINT64, ACPI_MCFG_OFFSET (Reserved[0]), "Reserved", 0}, ACPI_DMT_TERMINATOR }; ACPI_DMTABLE_INFO AcpiDmTableInfoMcfg0[] = { {ACPI_DMT_UINT64, ACPI_MCFG0_OFFSET (Address), "Base Address", 0}, {ACPI_DMT_UINT16, ACPI_MCFG0_OFFSET (PciSegment), "Segment Group Number", 0}, {ACPI_DMT_UINT8, ACPI_MCFG0_OFFSET (StartBusNumber), "Start Bus Number", 0}, {ACPI_DMT_UINT8, ACPI_MCFG0_OFFSET (EndBusNumber), "End Bus Number", 0}, {ACPI_DMT_UINT32, ACPI_MCFG0_OFFSET (Reserved), "Reserved", 0}, ACPI_DMT_TERMINATOR }; /******************************************************************************* * * MCHI - Management Controller Host Interface table * ******************************************************************************/ ACPI_DMTABLE_INFO AcpiDmTableInfoMchi[] = { {ACPI_DMT_UINT8, ACPI_MCHI_OFFSET (InterfaceType), "Interface Type", 0}, {ACPI_DMT_UINT8, ACPI_MCHI_OFFSET (Protocol), "Protocol", 0}, {ACPI_DMT_UINT64, ACPI_MCHI_OFFSET (ProtocolData), "Protocol Data", 0}, {ACPI_DMT_UINT8, ACPI_MCHI_OFFSET (InterruptType), "Interrupt Type", 0}, {ACPI_DMT_UINT8, ACPI_MCHI_OFFSET (Gpe), "Gpe", 0}, {ACPI_DMT_UINT8, ACPI_MCHI_OFFSET (PciDeviceFlag), "Pci Device Flag", 0}, {ACPI_DMT_UINT32, ACPI_MCHI_OFFSET (GlobalInterrupt), "Global Interrupt", 0}, {ACPI_DMT_GAS, ACPI_MCHI_OFFSET (ControlRegister), "Control Register", 0}, {ACPI_DMT_UINT8, ACPI_MCHI_OFFSET (PciSegment), "Pci Segment", 0}, {ACPI_DMT_UINT8, ACPI_MCHI_OFFSET (PciBus), "Pci Bus", 0}, {ACPI_DMT_UINT8, ACPI_MCHI_OFFSET (PciDevice), "Pci Device", 0}, {ACPI_DMT_UINT8, ACPI_MCHI_OFFSET (PciFunction), "Pci Function", 0}, ACPI_DMT_TERMINATOR }; /******************************************************************************* * * MPST - Memory Power State Table * ******************************************************************************/ ACPI_DMTABLE_INFO AcpiDmTableInfoMpst[] = { {ACPI_DMT_UINT8, ACPI_MPST_OFFSET (ChannelId), "Channel ID", 0}, {ACPI_DMT_UINT24, ACPI_MPST_OFFSET (Reserved1[0]), "Reserved", 0}, {ACPI_DMT_UINT16, ACPI_MPST_OFFSET (PowerNodeCount), "Power Node Count", 0}, {ACPI_DMT_UINT16, ACPI_MPST_OFFSET (Reserved2), "Reserved", 0}, ACPI_DMT_TERMINATOR }; /* MPST subtables */ /* 0: Memory Power Node Structure */ ACPI_DMTABLE_INFO AcpiDmTableInfoMpst0[] = { {ACPI_DMT_UINT8, ACPI_MPST0_OFFSET (Flags), "Flags (decoded below)", DT_FLAG}, {ACPI_DMT_FLAG0, ACPI_MPST0_FLAG_OFFSET (Flags,0), "Node Enabled", 0}, {ACPI_DMT_FLAG1, ACPI_MPST0_FLAG_OFFSET (Flags,0), "Power Managed", 0}, {ACPI_DMT_FLAG2, ACPI_MPST0_FLAG_OFFSET (Flags,0), "Hot Plug Capable", 0}, {ACPI_DMT_UINT8, ACPI_MPST0_OFFSET (Reserved1), "Reserved", 0}, {ACPI_DMT_UINT16, ACPI_MPST0_OFFSET (NodeId), "Node ID", 0}, {ACPI_DMT_UINT32, ACPI_MPST0_OFFSET (Length), "Length", 0}, {ACPI_DMT_UINT64, ACPI_MPST0_OFFSET (RangeAddress), "Range Address", 0}, {ACPI_DMT_UINT64, ACPI_MPST0_OFFSET (RangeLength), "Range Length", 0}, {ACPI_DMT_UINT32, ACPI_MPST0_OFFSET (NumPowerStates), "Num Power States", 0}, {ACPI_DMT_UINT32, ACPI_MPST0_OFFSET (NumPhysicalComponents), "Num Physical Components", 0}, ACPI_DMT_TERMINATOR }; /* 0A: Sub-subtable - Memory Power State Structure (follows Memory Power Node above) */ ACPI_DMTABLE_INFO AcpiDmTableInfoMpst0A[] = { {ACPI_DMT_UINT8, ACPI_MPST0A_OFFSET (PowerState), "Power State", 0}, {ACPI_DMT_UINT8, ACPI_MPST0A_OFFSET (InfoIndex), "InfoIndex", 0}, ACPI_DMT_TERMINATOR }; /* 0B: Sub-subtable - Physical Component ID Structure (follows Memory Power State(s) above) */ ACPI_DMTABLE_INFO AcpiDmTableInfoMpst0B[] = { {ACPI_DMT_UINT16, ACPI_MPST0B_OFFSET (ComponentId), "Component Id", 0}, ACPI_DMT_TERMINATOR }; /* 01: Power Characteristics Count (follows all Power Node(s) above) */ ACPI_DMTABLE_INFO AcpiDmTableInfoMpst1[] = { {ACPI_DMT_UINT16, ACPI_MPST1_OFFSET (CharacteristicsCount), "Characteristics Count", 0}, {ACPI_DMT_UINT16, ACPI_MPST1_OFFSET (Reserved), "Reserved", 0}, ACPI_DMT_TERMINATOR }; /* 02: Memory Power State Characteristics Structure */ ACPI_DMTABLE_INFO AcpiDmTableInfoMpst2[] = { {ACPI_DMT_UINT8, ACPI_MPST2_OFFSET (StructureId), "Structure ID", 0}, {ACPI_DMT_UINT8, ACPI_MPST2_OFFSET (Flags), "Flags (decoded below)", DT_FLAG}, {ACPI_DMT_FLAG0, ACPI_MPST2_FLAG_OFFSET (Flags,0), "Memory Preserved", 0}, {ACPI_DMT_FLAG1, ACPI_MPST2_FLAG_OFFSET (Flags,0), "Auto Entry", 0}, {ACPI_DMT_FLAG2, ACPI_MPST2_FLAG_OFFSET (Flags,0), "Auto Exit", 0}, {ACPI_DMT_UINT16, ACPI_MPST2_OFFSET (Reserved1), "Reserved", 0}, {ACPI_DMT_UINT32, ACPI_MPST2_OFFSET (AveragePower), "Average Power", 0}, {ACPI_DMT_UINT32, ACPI_MPST2_OFFSET (PowerSaving), "Power Saving", 0}, {ACPI_DMT_UINT64, ACPI_MPST2_OFFSET (ExitLatency), "Exit Latency", 0}, {ACPI_DMT_UINT64, ACPI_MPST2_OFFSET (Reserved2), "Reserved", 0}, ACPI_DMT_TERMINATOR }; /******************************************************************************* * * MSCT - Maximum System Characteristics Table (ACPI 4.0) * ******************************************************************************/ ACPI_DMTABLE_INFO AcpiDmTableInfoMsct[] = { {ACPI_DMT_UINT32, ACPI_MSCT_OFFSET (ProximityOffset), "Proximity Offset", 0}, {ACPI_DMT_UINT32, ACPI_MSCT_OFFSET (MaxProximityDomains), "Max Proximity Domains", 0}, {ACPI_DMT_UINT32, ACPI_MSCT_OFFSET (MaxClockDomains), "Max Clock Domains", 0}, {ACPI_DMT_UINT64, ACPI_MSCT_OFFSET (MaxAddress), "Max Physical Address", 0}, ACPI_DMT_TERMINATOR }; /* Subtable - Maximum Proximity Domain Information. Version 1 */ ACPI_DMTABLE_INFO AcpiDmTableInfoMsct0[] = { {ACPI_DMT_UINT8, ACPI_MSCT0_OFFSET (Revision), "Revision", 0}, {ACPI_DMT_UINT8, ACPI_MSCT0_OFFSET (Length), "Length", DT_LENGTH}, {ACPI_DMT_UINT32, ACPI_MSCT0_OFFSET (RangeStart), "Domain Range Start", 0}, {ACPI_DMT_UINT32, ACPI_MSCT0_OFFSET (RangeEnd), "Domain Range End", 0}, {ACPI_DMT_UINT32, ACPI_MSCT0_OFFSET (ProcessorCapacity), "Processor Capacity", 0}, {ACPI_DMT_UINT64, ACPI_MSCT0_OFFSET (MemoryCapacity), "Memory Capacity", 0}, ACPI_DMT_TERMINATOR }; /******************************************************************************* * * MTMR - MID Timer Table * ******************************************************************************/ ACPI_DMTABLE_INFO AcpiDmTableInfoMtmr[] = { ACPI_DMT_TERMINATOR }; /* MTMR Subtables - MTMR Entry */ ACPI_DMTABLE_INFO AcpiDmTableInfoMtmr0[] = { {ACPI_DMT_GAS, ACPI_MTMR0_OFFSET (PhysicalAddress), "PhysicalAddress", 0}, {ACPI_DMT_UINT32, ACPI_MTMR0_OFFSET (Frequency), "Frequency", 0}, {ACPI_DMT_UINT32, ACPI_MTMR0_OFFSET (Irq), "IRQ", 0}, ACPI_DMT_TERMINATOR }; /******************************************************************************* * * PCCT - Platform Communications Channel Table (ACPI 5.0) * ******************************************************************************/ ACPI_DMTABLE_INFO AcpiDmTableInfoPcct[] = { {ACPI_DMT_UINT32, ACPI_PCCT_OFFSET (Flags), "Flags (decoded below)", DT_FLAG}, {ACPI_DMT_FLAG0, ACPI_PCCT_FLAG_OFFSET (Flags,0), "Doorbell", 0}, {ACPI_DMT_UINT64, ACPI_PCCT_OFFSET (Reserved), "Reserved", 0}, ACPI_DMT_TERMINATOR }; /* PCCT subtables */ ACPI_DMTABLE_INFO AcpiDmTableInfoPcctHdr[] = { {ACPI_DMT_PCCT, ACPI_PCCT0_OFFSET (Header.Type), "Subtable Type", 0}, {ACPI_DMT_UINT8, ACPI_PCCT0_OFFSET (Header.Length), "Length", DT_LENGTH}, ACPI_DMT_TERMINATOR }; /* 0: Generic Communications Subspace */ ACPI_DMTABLE_INFO AcpiDmTableInfoPcct0[] = { {ACPI_DMT_UINT48, ACPI_PCCT0_OFFSET (Reserved[0]), "Reserved", 0}, {ACPI_DMT_UINT64, ACPI_PCCT0_OFFSET (BaseAddress), "Base Address", 0}, {ACPI_DMT_UINT64, ACPI_PCCT0_OFFSET (Length), "Address Length", 0}, {ACPI_DMT_GAS, ACPI_PCCT0_OFFSET (DoorbellRegister), "Doorbell Register", 0}, {ACPI_DMT_UINT64, ACPI_PCCT0_OFFSET (PreserveMask), "Preserve Mask", 0}, {ACPI_DMT_UINT64, ACPI_PCCT0_OFFSET (WriteMask), "Write Mask", 0}, {ACPI_DMT_UINT32, ACPI_PCCT0_OFFSET (Latency), "Command Latency", 0}, {ACPI_DMT_UINT32, ACPI_PCCT0_OFFSET (MaxAccessRate), "Maximum Access Rate", 0}, {ACPI_DMT_UINT16, ACPI_PCCT0_OFFSET (MinTurnaroundTime), "Minimum Turnaround Time", 0}, ACPI_DMT_TERMINATOR }; /******************************************************************************* * * PMTT - Platform Memory Topology Table * ******************************************************************************/ ACPI_DMTABLE_INFO AcpiDmTableInfoPmtt[] = { {ACPI_DMT_UINT32, ACPI_PMTT_OFFSET (Reserved), "Reserved", 0}, ACPI_DMT_TERMINATOR }; /* Common Subtable header (one per Subtable) */ ACPI_DMTABLE_INFO AcpiDmTableInfoPmttHdr[] = { {ACPI_DMT_PMTT, ACPI_PMTTH_OFFSET (Type), "Subtable Type", 0}, {ACPI_DMT_UINT8, ACPI_PMTTH_OFFSET (Reserved1), "Reserved", 0}, {ACPI_DMT_UINT16, ACPI_PMTTH_OFFSET (Length), "Length", DT_LENGTH}, {ACPI_DMT_UINT16, ACPI_PMTTH_OFFSET (Flags), "Flags (decoded below)", DT_FLAG}, {ACPI_DMT_FLAG0, ACPI_PMTTH_FLAG_OFFSET (Flags,0), "Top-level Device", 0}, {ACPI_DMT_FLAG1, ACPI_PMTTH_FLAG_OFFSET (Flags,0), "Physical Element", 0}, {ACPI_DMT_FLAGS2, ACPI_PMTTH_FLAG_OFFSET (Flags,0), "Memory Type", 0}, {ACPI_DMT_UINT16, ACPI_PMTTH_OFFSET (Reserved2), "Reserved", 0}, ACPI_DMT_TERMINATOR }; /* PMTT Subtables */ /* 0: Socket */ ACPI_DMTABLE_INFO AcpiDmTableInfoPmtt0[] = { {ACPI_DMT_UINT16, ACPI_PMTT0_OFFSET (SocketId), "Socket ID", 0}, {ACPI_DMT_UINT16, ACPI_PMTT0_OFFSET (Reserved), "Reserved", 0}, ACPI_DMT_TERMINATOR }; /* 1: Memory Controller */ ACPI_DMTABLE_INFO AcpiDmTableInfoPmtt1[] = { {ACPI_DMT_UINT32, ACPI_PMTT1_OFFSET (ReadLatency), "Read Latency", 0}, {ACPI_DMT_UINT32, ACPI_PMTT1_OFFSET (WriteLatency), "Write Latency", 0}, {ACPI_DMT_UINT32, ACPI_PMTT1_OFFSET (ReadBandwidth), "Read Bandwidth", 0}, {ACPI_DMT_UINT32, ACPI_PMTT1_OFFSET (WriteBandwidth), "Write Bandwidth", 0}, {ACPI_DMT_UINT16, ACPI_PMTT1_OFFSET (AccessWidth), "Access Width", 0}, {ACPI_DMT_UINT16, ACPI_PMTT1_OFFSET (Alignment), "Alignment", 0}, {ACPI_DMT_UINT16, ACPI_PMTT1_OFFSET (Reserved), "Reserved", 0}, {ACPI_DMT_UINT16, ACPI_PMTT1_OFFSET (DomainCount), "Domain Count", 0}, ACPI_DMT_TERMINATOR }; /* 1a: Proximity Domain */ ACPI_DMTABLE_INFO AcpiDmTableInfoPmtt1a[] = { {ACPI_DMT_UINT32, ACPI_PMTT1A_OFFSET (ProximityDomain), "Proximity Domain", 0}, ACPI_DMT_TERMINATOR }; /* 2: Physical Component */ ACPI_DMTABLE_INFO AcpiDmTableInfoPmtt2[] = { {ACPI_DMT_UINT16, ACPI_PMTT2_OFFSET (ComponentId), "Component ID", 0}, {ACPI_DMT_UINT16, ACPI_PMTT2_OFFSET (Reserved), "Reserved", 0}, {ACPI_DMT_UINT32, ACPI_PMTT2_OFFSET (MemorySize), "Memory Size", 0}, {ACPI_DMT_UINT32, ACPI_PMTT2_OFFSET (BiosHandle), "Bios Handle", 0}, ACPI_DMT_TERMINATOR }; /******************************************************************************* * * S3PT - S3 Performance Table * ******************************************************************************/ ACPI_DMTABLE_INFO AcpiDmTableInfoS3pt[] = { {ACPI_DMT_SIG, ACPI_S3PT_OFFSET (Signature[0]), "Signature", 0}, {ACPI_DMT_UINT32, ACPI_S3PT_OFFSET (Length), "Length", DT_LENGTH}, ACPI_DMT_TERMINATOR }; /* S3PT subtable header */ ACPI_DMTABLE_INFO AcpiDmTableInfoS3ptHdr[] = { {ACPI_DMT_UINT16, ACPI_S3PTH_OFFSET (Type), "Type", 0}, {ACPI_DMT_UINT8, ACPI_S3PTH_OFFSET (Length), "Length", DT_LENGTH}, {ACPI_DMT_UINT8, ACPI_S3PTH_OFFSET (Revision), "Revision", 0}, ACPI_DMT_TERMINATOR }; /* 0: Basic S3 Resume Performance Record */ ACPI_DMTABLE_INFO AcpiDmTableInfoS3pt0[] = { {ACPI_DMT_UINT32, ACPI_S3PT0_OFFSET (ResumeCount), "Resume Count", 0}, {ACPI_DMT_UINT64, ACPI_S3PT0_OFFSET (FullResume), "Full Resume", 0}, {ACPI_DMT_UINT64, ACPI_S3PT0_OFFSET (AverageResume), "Average Resume", 0}, ACPI_DMT_TERMINATOR }; /* 1: Basic S3 Suspend Performance Record */ ACPI_DMTABLE_INFO AcpiDmTableInfoS3pt1[] = { {ACPI_DMT_UINT64, ACPI_S3PT1_OFFSET (SuspendStart), "Suspend Start", 0}, {ACPI_DMT_UINT64, ACPI_S3PT1_OFFSET (SuspendEnd), "Suspend End", 0}, ACPI_DMT_TERMINATOR }; /******************************************************************************* * * SBST - Smart Battery Specification Table * ******************************************************************************/ ACPI_DMTABLE_INFO AcpiDmTableInfoSbst[] = { {ACPI_DMT_UINT32, ACPI_SBST_OFFSET (WarningLevel), "Warning Level", 0}, {ACPI_DMT_UINT32, ACPI_SBST_OFFSET (LowLevel), "Low Level", 0}, {ACPI_DMT_UINT32, ACPI_SBST_OFFSET (CriticalLevel), "Critical Level", 0}, ACPI_DMT_TERMINATOR }; /******************************************************************************* * * SLIC - Software Licensing Description Table. There is no common table, just * the standard ACPI header and then subtables. * ******************************************************************************/ /* Common Subtable header (one per Subtable) */ ACPI_DMTABLE_INFO AcpiDmTableInfoSlicHdr[] = { {ACPI_DMT_SLIC, ACPI_SLICH_OFFSET (Type), "Subtable Type", 0}, {ACPI_DMT_UINT32, ACPI_SLICH_OFFSET (Length), "Length", DT_LENGTH}, ACPI_DMT_TERMINATOR }; ACPI_DMTABLE_INFO AcpiDmTableInfoSlic0[] = { {ACPI_DMT_UINT8, ACPI_SLIC0_OFFSET (KeyType), "Key Type", 0}, {ACPI_DMT_UINT8, ACPI_SLIC0_OFFSET (Version), "Version", 0}, {ACPI_DMT_UINT16, ACPI_SLIC0_OFFSET (Reserved), "Reserved", 0}, {ACPI_DMT_UINT32, ACPI_SLIC0_OFFSET (Algorithm), "Algorithm", 0}, {ACPI_DMT_NAME4, ACPI_SLIC0_OFFSET (Magic), "Magic", 0}, {ACPI_DMT_UINT32, ACPI_SLIC0_OFFSET (BitLength), "BitLength", 0}, {ACPI_DMT_UINT32, ACPI_SLIC0_OFFSET (Exponent), "Exponent", 0}, {ACPI_DMT_BUF128, ACPI_SLIC0_OFFSET (Modulus[0]), "Modulus", 0}, ACPI_DMT_TERMINATOR }; ACPI_DMTABLE_INFO AcpiDmTableInfoSlic1[] = { {ACPI_DMT_UINT32, ACPI_SLIC1_OFFSET (Version), "Version", 0}, {ACPI_DMT_NAME6, ACPI_SLIC1_OFFSET (OemId[0]), "Oem ID", 0}, {ACPI_DMT_NAME8, ACPI_SLIC1_OFFSET (OemTableId[0]), "Oem Table ID", 0}, {ACPI_DMT_NAME8, ACPI_SLIC1_OFFSET (WindowsFlag[0]), "Windows Flag", 0}, {ACPI_DMT_UINT32, ACPI_SLIC1_OFFSET (SlicVersion), "SLIC Version", 0}, {ACPI_DMT_BUF16, ACPI_SLIC1_OFFSET (Reserved[0]), "Reserved", 0}, {ACPI_DMT_BUF128, ACPI_SLIC1_OFFSET (Signature[0]), "Signature", 0}, ACPI_DMT_TERMINATOR }; /******************************************************************************* * * SLIT - System Locality Information Table * ******************************************************************************/ ACPI_DMTABLE_INFO AcpiDmTableInfoSlit[] = { {ACPI_DMT_UINT64, ACPI_SLIT_OFFSET (LocalityCount), "Localities", 0}, ACPI_DMT_TERMINATOR }; /******************************************************************************* * * SPCR - Serial Port Console Redirection table * ******************************************************************************/ ACPI_DMTABLE_INFO AcpiDmTableInfoSpcr[] = { {ACPI_DMT_UINT8, ACPI_SPCR_OFFSET (InterfaceType), "Interface Type", 0}, {ACPI_DMT_UINT24, ACPI_SPCR_OFFSET (Reserved[0]), "Reserved", 0}, {ACPI_DMT_GAS, ACPI_SPCR_OFFSET (SerialPort), "Serial Port Register", 0}, {ACPI_DMT_UINT8, ACPI_SPCR_OFFSET (InterruptType), "Interrupt Type", 0}, {ACPI_DMT_UINT8, ACPI_SPCR_OFFSET (PcInterrupt), "PCAT-compatible IRQ", 0}, {ACPI_DMT_UINT32, ACPI_SPCR_OFFSET (Interrupt), "Interrupt", 0}, {ACPI_DMT_UINT8, ACPI_SPCR_OFFSET (BaudRate), "Baud Rate", 0}, {ACPI_DMT_UINT8, ACPI_SPCR_OFFSET (Parity), "Parity", 0}, {ACPI_DMT_UINT8, ACPI_SPCR_OFFSET (StopBits), "Stop Bits", 0}, {ACPI_DMT_UINT8, ACPI_SPCR_OFFSET (FlowControl), "Flow Control", 0}, {ACPI_DMT_UINT8, ACPI_SPCR_OFFSET (TerminalType), "Terminal Type", 0}, {ACPI_DMT_UINT8, ACPI_SPCR_OFFSET (Reserved2), "Reserved", 0}, {ACPI_DMT_UINT16, ACPI_SPCR_OFFSET (PciDeviceId), "PCI Device ID", 0}, {ACPI_DMT_UINT16, ACPI_SPCR_OFFSET (PciVendorId), "PCI Vendor ID", 0}, {ACPI_DMT_UINT8, ACPI_SPCR_OFFSET (PciBus), "PCI Bus", 0}, {ACPI_DMT_UINT8, ACPI_SPCR_OFFSET (PciDevice), "PCI Device", 0}, {ACPI_DMT_UINT8, ACPI_SPCR_OFFSET (PciFunction), "PCI Function", 0}, {ACPI_DMT_UINT32, ACPI_SPCR_OFFSET (PciFlags), "PCI Flags", 0}, {ACPI_DMT_UINT8, ACPI_SPCR_OFFSET (PciSegment), "PCI Segment", 0}, {ACPI_DMT_UINT32, ACPI_SPCR_OFFSET (Reserved2), "Reserved", 0}, ACPI_DMT_TERMINATOR }; /******************************************************************************* * * SPMI - Server Platform Management Interface table * ******************************************************************************/ ACPI_DMTABLE_INFO AcpiDmTableInfoSpmi[] = { {ACPI_DMT_UINT8, ACPI_SPMI_OFFSET (InterfaceType), "Interface Type", 0}, {ACPI_DMT_UINT8, ACPI_SPMI_OFFSET (Reserved), "Reserved", DT_NON_ZERO}, /* Value must be 1 */ {ACPI_DMT_UINT16, ACPI_SPMI_OFFSET (SpecRevision), "IPMI Spec Version", 0}, {ACPI_DMT_UINT8, ACPI_SPMI_OFFSET (InterruptType), "Interrupt Type", 0}, {ACPI_DMT_UINT8, ACPI_SPMI_OFFSET (GpeNumber), "GPE Number", 0}, {ACPI_DMT_UINT8, ACPI_SPMI_OFFSET (Reserved1), "Reserved", 0}, {ACPI_DMT_UINT8, ACPI_SPMI_OFFSET (PciDeviceFlag), "PCI Device Flag", 0}, {ACPI_DMT_UINT32, ACPI_SPMI_OFFSET (Interrupt), "Interrupt", 0}, {ACPI_DMT_GAS, ACPI_SPMI_OFFSET (IpmiRegister), "IPMI Register", 0}, {ACPI_DMT_UINT8, ACPI_SPMI_OFFSET (PciSegment), "PCI Segment", 0}, {ACPI_DMT_UINT8, ACPI_SPMI_OFFSET (PciBus), "PCI Bus", 0}, {ACPI_DMT_UINT8, ACPI_SPMI_OFFSET (PciDevice), "PCI Device", 0}, {ACPI_DMT_UINT8, ACPI_SPMI_OFFSET (PciFunction), "PCI Function", 0}, {ACPI_DMT_UINT8, ACPI_SPMI_OFFSET (Reserved2), "Reserved", 0}, ACPI_DMT_TERMINATOR }; /******************************************************************************* * * SRAT - System Resource Affinity Table and Subtables * ******************************************************************************/ ACPI_DMTABLE_INFO AcpiDmTableInfoSrat[] = { {ACPI_DMT_UINT32, ACPI_SRAT_OFFSET (TableRevision), "Table Revision", 0}, {ACPI_DMT_UINT64, ACPI_SRAT_OFFSET (Reserved), "Reserved", 0}, ACPI_DMT_TERMINATOR }; /* Common Subtable header (one per Subtable) */ ACPI_DMTABLE_INFO AcpiDmTableInfoSratHdr[] = { {ACPI_DMT_SRAT, ACPI_SRATH_OFFSET (Type), "Subtable Type", 0}, {ACPI_DMT_UINT8, ACPI_SRATH_OFFSET (Length), "Length", DT_LENGTH}, ACPI_DMT_TERMINATOR }; /* SRAT Subtables */ /* 0: Processor Local APIC/SAPIC Affinity */ ACPI_DMTABLE_INFO AcpiDmTableInfoSrat0[] = { {ACPI_DMT_UINT8, ACPI_SRAT0_OFFSET (ProximityDomainLo), "Proximity Domain Low(8)", 0}, {ACPI_DMT_UINT8, ACPI_SRAT0_OFFSET (ApicId), "Apic ID", 0}, {ACPI_DMT_UINT32, ACPI_SRAT0_OFFSET (Flags), "Flags (decoded below)", DT_FLAG}, {ACPI_DMT_FLAG0, ACPI_SRAT0_FLAG_OFFSET (Flags,0), "Enabled", 0}, {ACPI_DMT_UINT8, ACPI_SRAT0_OFFSET (LocalSapicEid), "Local Sapic EID", 0}, {ACPI_DMT_UINT24, ACPI_SRAT0_OFFSET (ProximityDomainHi[0]), "Proximity Domain High(24)", 0}, {ACPI_DMT_UINT32, ACPI_SRAT0_OFFSET (Reserved), "Reserved", 0}, ACPI_DMT_TERMINATOR }; /* 1: Memory Affinity */ ACPI_DMTABLE_INFO AcpiDmTableInfoSrat1[] = { {ACPI_DMT_UINT32, ACPI_SRAT1_OFFSET (ProximityDomain), "Proximity Domain", 0}, {ACPI_DMT_UINT16, ACPI_SRAT1_OFFSET (Reserved), "Reserved1", 0}, {ACPI_DMT_UINT64, ACPI_SRAT1_OFFSET (BaseAddress), "Base Address", 0}, {ACPI_DMT_UINT64, ACPI_SRAT1_OFFSET (Length), "Address Length", 0}, {ACPI_DMT_UINT32, ACPI_SRAT1_OFFSET (Reserved1), "Reserved2", 0}, {ACPI_DMT_UINT32, ACPI_SRAT1_OFFSET (Flags), "Flags (decoded below)", DT_FLAG}, {ACPI_DMT_FLAG0, ACPI_SRAT1_FLAG_OFFSET (Flags,0), "Enabled", 0}, {ACPI_DMT_FLAG1, ACPI_SRAT1_FLAG_OFFSET (Flags,0), "Hot Pluggable", 0}, {ACPI_DMT_FLAG2, ACPI_SRAT1_FLAG_OFFSET (Flags,0), "Non-Volatile", 0}, {ACPI_DMT_UINT64, ACPI_SRAT1_OFFSET (Reserved2), "Reserved3", 0}, ACPI_DMT_TERMINATOR }; /* 2: Processor Local X2_APIC Affinity (ACPI 4.0) */ ACPI_DMTABLE_INFO AcpiDmTableInfoSrat2[] = { {ACPI_DMT_UINT16, ACPI_SRAT2_OFFSET (Reserved), "Reserved1", 0}, {ACPI_DMT_UINT32, ACPI_SRAT2_OFFSET (ProximityDomain), "Proximity Domain", 0}, {ACPI_DMT_UINT32, ACPI_SRAT2_OFFSET (ApicId), "Apic ID", 0}, {ACPI_DMT_UINT32, ACPI_SRAT2_OFFSET (Flags), "Flags (decoded below)", DT_FLAG}, {ACPI_DMT_FLAG0, ACPI_SRAT2_FLAG_OFFSET (Flags,0), "Enabled", 0}, {ACPI_DMT_UINT32, ACPI_SRAT2_OFFSET (ClockDomain), "Clock Domain", 0}, {ACPI_DMT_UINT32, ACPI_SRAT2_OFFSET (Reserved2), "Reserved2", 0}, ACPI_DMT_TERMINATOR }; /******************************************************************************* * * TCPA - Trusted Computing Platform Alliance table * ******************************************************************************/ ACPI_DMTABLE_INFO AcpiDmTableInfoTcpa[] = { {ACPI_DMT_UINT16, ACPI_TCPA_OFFSET (Reserved), "Reserved", 0}, {ACPI_DMT_UINT32, ACPI_TCPA_OFFSET (MaxLogLength), "Max Event Log Length", 0}, {ACPI_DMT_UINT64, ACPI_TCPA_OFFSET (LogAddress), "Event Log Address", 0}, ACPI_DMT_TERMINATOR }; /******************************************************************************* * * TPM2 - Trusted Platform Module (TPM) 2.0 Hardware Interface Table * ******************************************************************************/ ACPI_DMTABLE_INFO AcpiDmTableInfoTpm2[] = { {ACPI_DMT_UINT32, ACPI_TPM2_OFFSET (Flags), "Flags", 0}, {ACPI_DMT_UINT64, ACPI_TPM2_OFFSET (ControlAddress), "Control Address", 0}, {ACPI_DMT_UINT32, ACPI_TPM2_OFFSET (StartMethod), "Start Method", 0}, ACPI_DMT_TERMINATOR }; /******************************************************************************* * * UEFI - UEFI Boot optimization Table * ******************************************************************************/ ACPI_DMTABLE_INFO AcpiDmTableInfoUefi[] = { {ACPI_DMT_UUID, ACPI_UEFI_OFFSET (Identifier[0]), "UUID Identifier", 0}, {ACPI_DMT_UINT16, ACPI_UEFI_OFFSET (DataOffset), "Data Offset", 0}, ACPI_DMT_TERMINATOR }; /******************************************************************************* * * VRTC - Virtual Real Time Clock Table * ******************************************************************************/ ACPI_DMTABLE_INFO AcpiDmTableInfoVrtc[] = { ACPI_DMT_TERMINATOR }; /* VRTC Subtables - VRTC Entry */ ACPI_DMTABLE_INFO AcpiDmTableInfoVrtc0[] = { {ACPI_DMT_GAS, ACPI_VRTC0_OFFSET (PhysicalAddress), "PhysicalAddress", 0}, {ACPI_DMT_UINT32, ACPI_VRTC0_OFFSET (Irq), "IRQ", 0}, ACPI_DMT_TERMINATOR }; /******************************************************************************* * * WAET - Windows ACPI Emulated devices Table * ******************************************************************************/ ACPI_DMTABLE_INFO AcpiDmTableInfoWaet[] = { {ACPI_DMT_UINT32, ACPI_WAET_OFFSET (Flags), "Flags (decoded below)", DT_FLAG}, {ACPI_DMT_FLAG0, ACPI_WAET_OFFSET (Flags), "RTC needs no INT ack", 0}, {ACPI_DMT_FLAG1, ACPI_WAET_OFFSET (Flags), "PM timer, one read only", 0}, ACPI_DMT_TERMINATOR }; /******************************************************************************* * * WDAT - Watchdog Action Table * ******************************************************************************/ ACPI_DMTABLE_INFO AcpiDmTableInfoWdat[] = { {ACPI_DMT_UINT32, ACPI_WDAT_OFFSET (HeaderLength), "Header Length", DT_LENGTH}, {ACPI_DMT_UINT16, ACPI_WDAT_OFFSET (PciSegment), "PCI Segment", 0}, {ACPI_DMT_UINT8, ACPI_WDAT_OFFSET (PciBus), "PCI Bus", 0}, {ACPI_DMT_UINT8, ACPI_WDAT_OFFSET (PciDevice), "PCI Device", 0}, {ACPI_DMT_UINT8, ACPI_WDAT_OFFSET (PciFunction), "PCI Function", 0}, {ACPI_DMT_UINT24, ACPI_WDAT_OFFSET (Reserved[0]), "Reserved", 0}, {ACPI_DMT_UINT32, ACPI_WDAT_OFFSET (TimerPeriod), "Timer Period", 0}, {ACPI_DMT_UINT32, ACPI_WDAT_OFFSET (MaxCount), "Max Count", 0}, {ACPI_DMT_UINT32, ACPI_WDAT_OFFSET (MinCount), "Min Count", 0}, {ACPI_DMT_UINT8, ACPI_WDAT_OFFSET (Flags), "Flags (decoded below)", DT_FLAG}, {ACPI_DMT_FLAG0, ACPI_WDAT_OFFSET (Flags), "Enabled", 0}, {ACPI_DMT_FLAG7, ACPI_WDAT_OFFSET (Flags), "Stopped When Asleep", 0}, {ACPI_DMT_UINT24, ACPI_WDAT_OFFSET (Reserved2[0]), "Reserved", 0}, {ACPI_DMT_UINT32, ACPI_WDAT_OFFSET (Entries), "Watchdog Entry Count", 0}, ACPI_DMT_TERMINATOR }; /* WDAT Subtables - Watchdog Instruction Entries */ ACPI_DMTABLE_INFO AcpiDmTableInfoWdat0[] = { {ACPI_DMT_UINT8, ACPI_WDAT0_OFFSET (Action), "Watchdog Action", 0}, {ACPI_DMT_UINT8, ACPI_WDAT0_OFFSET (Instruction), "Instruction", 0}, {ACPI_DMT_UINT16, ACPI_WDAT0_OFFSET (Reserved), "Reserved", 0}, {ACPI_DMT_GAS, ACPI_WDAT0_OFFSET (RegisterRegion), "Register Region", 0}, {ACPI_DMT_UINT32, ACPI_WDAT0_OFFSET (Value), "Value", 0}, {ACPI_DMT_UINT32, ACPI_WDAT0_OFFSET (Mask), "Register Mask", 0}, ACPI_DMT_TERMINATOR }; /******************************************************************************* * * WDDT - Watchdog Description Table * ******************************************************************************/ ACPI_DMTABLE_INFO AcpiDmTableInfoWddt[] = { {ACPI_DMT_UINT16, ACPI_WDDT_OFFSET (SpecVersion), "Specification Version", 0}, {ACPI_DMT_UINT16, ACPI_WDDT_OFFSET (TableVersion), "Table Version", 0}, {ACPI_DMT_UINT16, ACPI_WDDT_OFFSET (PciVendorId), "PCI Vendor ID", 0}, {ACPI_DMT_GAS, ACPI_WDDT_OFFSET (Address), "Timer Register", 0}, {ACPI_DMT_UINT16, ACPI_WDDT_OFFSET (MaxCount), "Max Count", 0}, {ACPI_DMT_UINT16, ACPI_WDDT_OFFSET (MinCount), "Min Count", 0}, {ACPI_DMT_UINT16, ACPI_WDDT_OFFSET (Period), "Period", 0}, {ACPI_DMT_UINT16, ACPI_WDDT_OFFSET (Status), "Status (decoded below)", 0}, /* Status Flags byte 0 */ {ACPI_DMT_FLAG0, ACPI_WDDT_FLAG_OFFSET (Status,0), "Available", 0}, {ACPI_DMT_FLAG1, ACPI_WDDT_FLAG_OFFSET (Status,0), "Active", 0}, {ACPI_DMT_FLAG2, ACPI_WDDT_FLAG_OFFSET (Status,0), "OS Owns", 0}, /* Status Flags byte 1 */ {ACPI_DMT_FLAG3, ACPI_WDDT_FLAG_OFFSET (Status,1), "User Reset", 0}, {ACPI_DMT_FLAG4, ACPI_WDDT_FLAG_OFFSET (Status,1), "Timeout Reset", 0}, {ACPI_DMT_FLAG5, ACPI_WDDT_FLAG_OFFSET (Status,1), "Power Fail Reset", 0}, {ACPI_DMT_FLAG6, ACPI_WDDT_FLAG_OFFSET (Status,1), "Unknown Reset", 0}, {ACPI_DMT_UINT16, ACPI_WDDT_OFFSET (Capability), "Capability (decoded below)", 0}, /* Capability Flags byte 0 */ {ACPI_DMT_FLAG0, ACPI_WDDT_FLAG_OFFSET (Capability,0), "Auto Reset", 0}, {ACPI_DMT_FLAG1, ACPI_WDDT_FLAG_OFFSET (Capability,0), "Timeout Alert", 0}, ACPI_DMT_TERMINATOR }; /******************************************************************************* * * WDRT - Watchdog Resource Table * ******************************************************************************/ ACPI_DMTABLE_INFO AcpiDmTableInfoWdrt[] = { {ACPI_DMT_GAS, ACPI_WDRT_OFFSET (ControlRegister), "Control Register", 0}, {ACPI_DMT_GAS, ACPI_WDRT_OFFSET (CountRegister), "Count Register", 0}, {ACPI_DMT_UINT16, ACPI_WDRT_OFFSET (PciDeviceId), "PCI Device ID", 0}, {ACPI_DMT_UINT16, ACPI_WDRT_OFFSET (PciVendorId), "PCI Vendor ID", 0}, {ACPI_DMT_UINT8, ACPI_WDRT_OFFSET (PciBus), "PCI Bus", 0}, {ACPI_DMT_UINT8, ACPI_WDRT_OFFSET (PciDevice), "PCI Device", 0}, {ACPI_DMT_UINT8, ACPI_WDRT_OFFSET (PciFunction), "PCI Function", 0}, {ACPI_DMT_UINT8, ACPI_WDRT_OFFSET (PciSegment), "PCI Segment", 0}, {ACPI_DMT_UINT16, ACPI_WDRT_OFFSET (MaxCount), "Max Count", 0}, {ACPI_DMT_UINT8, ACPI_WDRT_OFFSET (Units), "Counter Units", 0}, ACPI_DMT_TERMINATOR }; /*! [Begin] no source code translation */ /* * Generic types (used in UEFI and custom tables) * * Examples: * * Buffer : cc 04 ff bb * UINT8 : 11 * UINT16 : 1122 * UINT24 : 112233 * UINT32 : 11223344 * UINT56 : 11223344556677 * UINT64 : 1122334455667788 * * String : "This is string" * Unicode : "This string encoded to Unicode" * * GUID : 11223344-5566-7788-99aa-bbccddeeff00 * DevicePath : "\PciRoot(0)\Pci(0x1f,1)\Usb(0,0)" */ #define ACPI_DM_GENERIC_ENTRY(FieldType, FieldName) \ {{FieldType, 0, FieldName, 0}, ACPI_DMT_TERMINATOR} ACPI_DMTABLE_INFO AcpiDmTableInfoGeneric[][2] = { ACPI_DM_GENERIC_ENTRY (ACPI_DMT_UINT8, "UINT8"), ACPI_DM_GENERIC_ENTRY (ACPI_DMT_UINT16, "UINT16"), ACPI_DM_GENERIC_ENTRY (ACPI_DMT_UINT24, "UINT24"), ACPI_DM_GENERIC_ENTRY (ACPI_DMT_UINT32, "UINT32"), ACPI_DM_GENERIC_ENTRY (ACPI_DMT_UINT40, "UINT40"), ACPI_DM_GENERIC_ENTRY (ACPI_DMT_UINT48, "UINT48"), ACPI_DM_GENERIC_ENTRY (ACPI_DMT_UINT56, "UINT56"), ACPI_DM_GENERIC_ENTRY (ACPI_DMT_UINT64, "UINT64"), ACPI_DM_GENERIC_ENTRY (ACPI_DMT_STRING, "String"), ACPI_DM_GENERIC_ENTRY (ACPI_DMT_UNICODE, "Unicode"), ACPI_DM_GENERIC_ENTRY (ACPI_DMT_BUFFER, "Buffer"), ACPI_DM_GENERIC_ENTRY (ACPI_DMT_UUID, "GUID"), ACPI_DM_GENERIC_ENTRY (ACPI_DMT_STRING, "DevicePath"), ACPI_DM_GENERIC_ENTRY (ACPI_DMT_LABEL, "Label"), {ACPI_DMT_TERMINATOR} }; /*! [End] no source code translation !*/ src/acpica/source/compiler/000077500000000000000000000000001231470457100162035ustar00rootroot00000000000000src/acpica/source/compiler/Makefile.am000066400000000000000000000147111231470457100202430ustar00rootroot00000000000000# # We need to build this as a separate shared library with the iasl functionality built in. We # just export the fwts_* interface. # AUTOMAKE_OPTIONS = subdir-objects AM_CPPFLAGS = -Wall -Wstrict-prototypes -fno-strict-aliasing -D_LINUX \ -DACPI_ASL_COMPILER $(CFLAGS) -I$(top_srcdir)/src/acpica/source/include AM_YFLAGS = -v -d -y # # Case in-sensitive scanning # AM_LFLAGS = -i aslcompilerparse.c: aslcompiler.y ${YACC} ${AM_YFLAGS} -baslcompiler -pAslCompiler aslcompiler.y mv aslcompiler.tab.c aslcompilerparse.c mv aslcompiler.tab.h aslcompiler.y.h aslcompilerlex.c: aslcompiler.l ${LEX} ${AM_LFLAGS} -PAslCompiler -oaslcompilerlex.c aslcompiler.l dtparserparse.c: dtparser.y ${YACC} ${AM_YFLAGS} -bdtparser -pDtParser dtparser.y mv dtparser.tab.c dtparserparse.c mv dtparser.tab.h dtparser.y.h dtparserlex.c: dtparser.l ${LEX} ${AM_LFLAGS} -PDtParser -odtparserlex.c dtparser.l prparserparse.c: prparser.y ${YACC} ${AM_YFLAGS} -bprparser -pPrParser prparser.y mv prparser.tab.c prparserparse.c mv prparser.tab.h prparser.y.h prparserlex.c: prparser.l ${LEX} ${AM_LFLAGS} -PPrParser -oprparserlex.c prparser.l pkglib_LTLIBRARIES = libfwtsiasl.la BUILT_SOURCES = aslcompilerparse.c \ aslcompilerlex.c \ dtparserparse.c \ dtparserlex.c \ prparserparse.c \ prparserlex.c # # Just export fwts specific API so we don't clash with core ACPICA library # libfwtsiasl_la_LDFLAGS = -export-symbols-regex "fwts_.*" -lpthread -version-info 1:0:0 CLEANFILES = y.output y.tab.c y.tab.h aslcompiler.y.h \ aslcompilerparse.c aslcompilerlex.c \ dtparserparse.c dtparserlex.c libfwtsiasl_la_CPPFLAGS = $(AM_CPPFLAGS) libfwtsiasl_la_SOURCES = \ fwts_iasl_interface.c \ aslcompile.c \ aslcompilerlex.c \ aslcompilerparse.c \ aslanalyze.c \ aslcodegen.c \ aslerror.c \ aslfiles.c \ aslfold.c \ asllength.c \ asllisting.c \ aslload.c \ asllookup.c \ aslmap.c \ aslopcodes.c \ asloperands.c \ aslopt.c \ aslpredef.c \ aslresource.c \ aslrestype1.c \ aslrestype1i.c \ aslrestype2.c \ aslrestype2d.c \ aslrestype2e.c \ aslrestype2q.c \ aslrestype2w.c \ aslstartup.c \ aslstubs.c \ asltransform.c \ asltree.c \ aslutils.c \ aslbtypes.c \ aslwalks.c \ asluuid.c \ aslmethod.c \ aslhex.c \ aslnamesp.c \ aslfileio.c \ asllistsup.c \ asloffset.c \ aslxref.c \ aslprepkg.c \ dtfield.c \ dtio.c \ dtsubtable.c \ dttemplate.c \ dttable.c \ dtutils.c \ dtexpress.c \ dtcompile.c \ dtparserparse.c \ dtparserlex.c \ prparserparse.c \ prparserlex.c \ prscan.c \ aslrestype2s.c \ prmacros.c \ prutils.c \ prexpress.c \ ../components/utilities/utalloc.c \ ../components/utilities/utcache.c \ ../components/utilities/utcopy.c \ ../components/utilities/utdebug.c \ ../components/utilities/utdelete.c \ ../components/utilities/utglobal.c \ ../components/utilities/utinit.c \ ../components/utilities/utlock.c \ ../components/utilities/utobject.c \ ../components/utilities/utmisc.c \ ../components/utilities/utmath.c \ ../components/utilities/utmutex.c \ ../components/utilities/utresrc.c \ ../components/utilities/utstate.c \ ../components/utilities/utxface.c \ ../components/utilities/utxferror.c \ ../components/utilities/utdecode.c \ ../components/utilities/utpredef.c \ ../components/utilities/utstring.c \ ../components/utilities/utaddress.c \ ../components/utilities/utownerid.c \ ../components/utilities/utexcep.c \ ../components/namespace/nsaccess.c \ ../components/namespace/nsalloc.c \ ../components/namespace/nsdump.c \ ../components/namespace/nsnames.c \ ../components/namespace/nsobject.c \ ../components/namespace/nsparse.c \ ../components/namespace/nssearch.c \ ../components/namespace/nsutils.c \ ../components/namespace/nswalk.c \ ../components/namespace/nsxfobj.c \ ../components/parser/psargs.c \ ../components/parser/psloop.c \ ../components/parser/psopcode.c \ ../components/parser/psparse.c \ ../components/parser/psscope.c \ ../components/parser/pstree.c \ ../components/parser/psutils.c \ ../components/parser/pswalk.c \ ../components/parser/psobject.c \ ../components/parser/psopinfo.c \ ../components/dispatcher/dswscope.c \ ../components/dispatcher/dswstate.c \ ../components/dispatcher/dsfield.c \ ../components/dispatcher/dsobject.c \ ../components/dispatcher/dsopcode.c \ ../components/dispatcher/dsutils.c \ ../components/dispatcher/dswexec.c \ ../components/dispatcher/dswload.c \ ../components/dispatcher/dswload2.c \ ../components/dispatcher/dsargs.c \ ../components/dispatcher/dscontrol.c \ ../components/executer/exconvrt.c \ ../components/executer/excreate.c \ ../components/executer/exdump.c \ ../components/executer/exmisc.c \ ../components/executer/exmutex.c \ ../components/executer/exnames.c \ ../components/executer/exoparg1.c \ ../components/executer/exoparg2.c \ ../components/executer/exoparg3.c \ ../components/executer/exoparg6.c \ ../components/executer/exprep.c \ ../components/executer/exregion.c \ ../components/executer/exresnte.c \ ../components/executer/exresolv.c \ ../components/executer/exresop.c \ ../components/executer/exstore.c \ ../components/executer/exstoren.c \ ../components/executer/exstorob.c \ ../components/executer/exsystem.c \ ../components/executer/exutils.c \ ../common/adfile.c \ ../common/adisasm.c \ ../common/adwalk.c \ ../common/ahids.c \ ../common/ahpredef.c \ ../common/cmfsize.c \ ../common/dmextern.c \ ../common/dmrestag.c \ ../common/dmtable.c \ ../common/dmtbinfo.c \ ../common/dmtbdump.c \ ../components/debugger/dbfileio.c \ ../components/disassembler/dmbuffer.c \ ../components/disassembler/dmnames.c \ ../components/disassembler/dmopcode.c \ ../components/disassembler/dmobject.c \ ../components/disassembler/dmresrc.c \ ../components/disassembler/dmresrcl.c \ ../components/disassembler/dmresrcs.c \ ../components/disassembler/dmutils.c \ ../components/disassembler/dmwalk.c \ ../components/disassembler/dmdeferred.c \ ../components/disassembler/dmresrcl2.c \ ../components/tables/tbdata.c \ ../components/tables/tbfadt.c \ ../components/tables/tbinstal.c \ ../components/tables/tbutils.c \ ../components/tables/tbxface.c \ ../os_specific/service_layers/osunixxf.c src/acpica/source/compiler/aslanalyze.c000066400000000000000000000465661231470457100205330ustar00rootroot00000000000000/****************************************************************************** * * Module Name: aslanalyze.c - Support functions for parse tree walks * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #include "aslcompiler.h" #include "aslcompiler.y.h" #include #define _COMPONENT ACPI_COMPILER ACPI_MODULE_NAME ("aslanalyze") /******************************************************************************* * * FUNCTION: AnIsInternalMethod * * PARAMETERS: Op - Current op * * RETURN: Boolean * * DESCRIPTION: Check for an internal control method. * ******************************************************************************/ BOOLEAN AnIsInternalMethod ( ACPI_PARSE_OBJECT *Op) { if ((!ACPI_STRCMP (Op->Asl.ExternalName, "\\_OSI")) || (!ACPI_STRCMP (Op->Asl.ExternalName, "_OSI"))) { return (TRUE); } return (FALSE); } /******************************************************************************* * * FUNCTION: AnGetInternalMethodReturnType * * PARAMETERS: Op - Current op * * RETURN: Btype * * DESCRIPTION: Get the return type of an internal method * ******************************************************************************/ UINT32 AnGetInternalMethodReturnType ( ACPI_PARSE_OBJECT *Op) { if ((!ACPI_STRCMP (Op->Asl.ExternalName, "\\_OSI")) || (!ACPI_STRCMP (Op->Asl.ExternalName, "_OSI"))) { return (ACPI_BTYPE_STRING); } return (0); } /******************************************************************************* * * FUNCTION: AnCheckId * * PARAMETERS: Op - Current parse op * Type - HID or CID * * RETURN: None * * DESCRIPTION: Perform various checks on _HID and _CID strings. Only limited * checks can be performed on _CID strings. * ******************************************************************************/ void AnCheckId ( ACPI_PARSE_OBJECT *Op, ACPI_NAME Type) { UINT32 i; ACPI_SIZE Length; /* Only care about string versions of _HID/_CID (integers are legal) */ if (Op->Asl.ParseOpcode != PARSEOP_STRING_LITERAL) { return; } /* For both _HID and _CID, the string must be non-null */ Length = strlen (Op->Asl.Value.String); if (!Length) { AslError (ASL_ERROR, ASL_MSG_NULL_STRING, Op, NULL); return; } /* * One of the things we want to catch here is the use of a leading * asterisk in the string -- an odd construct that certain platform * manufacturers are fond of. Technically, a leading asterisk is OK * for _CID, but a valid use of this has not been seen. */ if (*Op->Asl.Value.String == '*') { AslError (ASL_ERROR, ASL_MSG_LEADING_ASTERISK, Op, Op->Asl.Value.String); return; } /* _CID strings are bus-specific, no more checks can be performed */ if (Type == ASL_TYPE_CID) { return; } /* For _HID, all characters must be alphanumeric */ for (i = 0; Op->Asl.Value.String[i]; i++) { if (!isalnum ((int) Op->Asl.Value.String[i])) { AslError (ASL_ERROR, ASL_MSG_ALPHANUMERIC_STRING, Op, Op->Asl.Value.String); return; } } /* * _HID String must be one of these forms: * * "AAA####" A is an uppercase letter and # is a hex digit * "ACPI####" # is a hex digit * "NNNN####" N is an uppercase letter or decimal digit (0-9) * # is a hex digit (ACPI 5.0) */ if ((Length < 7) || (Length > 8)) { AslError (ASL_ERROR, ASL_MSG_HID_LENGTH, Op, Op->Asl.Value.String); return; } /* _HID Length is valid (7 or 8), now check the prefix (first 3 or 4 chars) */ if (Length == 7) { /* AAA####: Ensure the alphabetic prefix is all uppercase */ for (i = 0; i < 3; i++) { if (!isupper ((int) Op->Asl.Value.String[i])) { AslError (ASL_ERROR, ASL_MSG_UPPER_CASE, Op, &Op->Asl.Value.String[i]); return; } } } else /* Length == 8 */ { /* * ACPI#### or NNNN####: * Ensure the prefix contains only uppercase alpha or decimal digits */ for (i = 0; i < 4; i++) { if (!isupper ((int) Op->Asl.Value.String[i]) && !isdigit ((int) Op->Asl.Value.String[i])) { AslError (ASL_ERROR, ASL_MSG_HID_PREFIX, Op, &Op->Asl.Value.String[i]); return; } } } /* Remaining characters (suffix) must be hex digits */ for (; i < Length; i++) { if (!isxdigit ((int) Op->Asl.Value.String[i])) { AslError (ASL_ERROR, ASL_MSG_HID_SUFFIX, Op, &Op->Asl.Value.String[i]); break; } } } /******************************************************************************* * * FUNCTION: AnLastStatementIsReturn * * PARAMETERS: Op - A method parse node * * RETURN: TRUE if last statement is an ASL RETURN. False otherwise * * DESCRIPTION: Walk down the list of top level statements within a method * to find the last one. Check if that last statement is in * fact a RETURN statement. * ******************************************************************************/ BOOLEAN AnLastStatementIsReturn ( ACPI_PARSE_OBJECT *Op) { ACPI_PARSE_OBJECT *Next; /* Check if last statement is a return */ Next = ASL_GET_CHILD_NODE (Op); while (Next) { if ((!Next->Asl.Next) && (Next->Asl.ParseOpcode == PARSEOP_RETURN)) { return (TRUE); } Next = ASL_GET_PEER_NODE (Next); } return (FALSE); } /******************************************************************************* * * FUNCTION: AnCheckMethodReturnValue * * PARAMETERS: Op - Parent * OpInfo - Parent info * ArgOp - Method invocation op * RequiredBtypes - What caller requires * ThisNodeBtype - What this node returns (if anything) * * RETURN: None * * DESCRIPTION: Check a method invocation for 1) A return value and if it does * in fact return a value, 2) check the type of the return value. * ******************************************************************************/ void AnCheckMethodReturnValue ( ACPI_PARSE_OBJECT *Op, const ACPI_OPCODE_INFO *OpInfo, ACPI_PARSE_OBJECT *ArgOp, UINT32 RequiredBtypes, UINT32 ThisNodeBtype) { ACPI_PARSE_OBJECT *OwningOp; ACPI_NAMESPACE_NODE *Node; Node = ArgOp->Asl.Node; /* Examine the parent op of this method */ OwningOp = Node->Op; if (OwningOp->Asl.CompileFlags & NODE_METHOD_NO_RETVAL) { /* Method NEVER returns a value */ AslError (ASL_ERROR, ASL_MSG_NO_RETVAL, Op, Op->Asl.ExternalName); } else if (OwningOp->Asl.CompileFlags & NODE_METHOD_SOME_NO_RETVAL) { /* Method SOMETIMES returns a value, SOMETIMES not */ AslError (ASL_WARNING, ASL_MSG_SOME_NO_RETVAL, Op, Op->Asl.ExternalName); } else if (!(ThisNodeBtype & RequiredBtypes)) { /* Method returns a value, but the type is wrong */ AnFormatBtype (StringBuffer, ThisNodeBtype); AnFormatBtype (StringBuffer2, RequiredBtypes); /* * The case where the method does not return any value at all * was already handled in the namespace cross reference * -- Only issue an error if the method in fact returns a value, * but it is of the wrong type */ if (ThisNodeBtype != 0) { sprintf (MsgBuffer, "Method returns [%s], %s operator requires [%s]", StringBuffer, OpInfo->Name, StringBuffer2); AslError (ASL_ERROR, ASL_MSG_INVALID_TYPE, ArgOp, MsgBuffer); } } } /******************************************************************************* * * FUNCTION: AnIsResultUsed * * PARAMETERS: Op - Parent op for the operator * * RETURN: TRUE if result from this operation is actually consumed * * DESCRIPTION: Determine if the function result value from an operator is * used. * ******************************************************************************/ BOOLEAN AnIsResultUsed ( ACPI_PARSE_OBJECT *Op) { ACPI_PARSE_OBJECT *Parent; switch (Op->Asl.ParseOpcode) { case PARSEOP_INCREMENT: case PARSEOP_DECREMENT: /* These are standalone operators, no return value */ return (TRUE); default: break; } /* Examine parent to determine if the return value is used */ Parent = Op->Asl.Parent; switch (Parent->Asl.ParseOpcode) { /* If/While - check if the operator is the predicate */ case PARSEOP_IF: case PARSEOP_WHILE: /* First child is the predicate */ if (Parent->Asl.Child == Op) { return (TRUE); } return (FALSE); /* Not used if one of these is the parent */ case PARSEOP_METHOD: case PARSEOP_DEFINITIONBLOCK: case PARSEOP_ELSE: return (FALSE); default: /* Any other type of parent means that the result is used */ return (TRUE); } } /******************************************************************************* * * FUNCTION: ApCheckForGpeNameConflict * * PARAMETERS: Op - Current parse op * * RETURN: None * * DESCRIPTION: Check for a conflict between GPE names within this scope. * Conflict means two GPE names with the same GPE number, but * different types -- such as _L1C and _E1C. * ******************************************************************************/ void ApCheckForGpeNameConflict ( ACPI_PARSE_OBJECT *Op) { ACPI_PARSE_OBJECT *NextOp; UINT32 GpeNumber; char Name[ACPI_NAME_SIZE + 1]; char Target[ACPI_NAME_SIZE]; /* Need a null-terminated string version of NameSeg */ ACPI_MOVE_32_TO_32 (Name, &Op->Asl.NameSeg); Name[ACPI_NAME_SIZE] = 0; /* * For a GPE method: * 1st char must be underscore * 2nd char must be L or E * 3rd/4th chars must be a hex number */ if ((Name[0] != '_') || ((Name[1] != 'L') && (Name[1] != 'E'))) { return; } /* Verify 3rd/4th chars are a valid hex value */ GpeNumber = ACPI_STRTOUL (&Name[2], NULL, 16); if (GpeNumber == ACPI_UINT32_MAX) { return; } /* * We are now sure we have an _Lxx or _Exx. * Create the target name that would cause collision (Flip E/L) */ ACPI_MOVE_32_TO_32 (Target, Name); /* Inject opposite letter ("L" versus "E") */ if (Name[1] == 'L') { Target[1] = 'E'; } else /* Name[1] == 'E' */ { Target[1] = 'L'; } /* Search all peers (objects within this scope) for target match */ NextOp = Op->Asl.Next; while (NextOp) { /* * We mostly care about methods, but check Name() constructs also, * even though they will get another error for not being a method. * All GPE names must be defined as control methods. */ if ((NextOp->Asl.ParseOpcode == PARSEOP_METHOD) || (NextOp->Asl.ParseOpcode == PARSEOP_NAME)) { if (ACPI_COMPARE_NAME (Target, NextOp->Asl.NameSeg)) { /* Found both _Exy and _Lxy in the same scope, error */ AslError (ASL_ERROR, ASL_MSG_GPE_NAME_CONFLICT, NextOp, Name); return; } } NextOp = NextOp->Asl.Next; } /* OK, no conflict found */ return; } /******************************************************************************* * * FUNCTION: ApCheckRegMethod * * PARAMETERS: Op - Current parse op * * RETURN: None * * DESCRIPTION: Ensure that a _REG method has a corresponding Operation * Region declaration within the same scope. Note: _REG is defined * to have two arguments and must therefore be defined as a * control method. * ******************************************************************************/ void ApCheckRegMethod ( ACPI_PARSE_OBJECT *Op) { ACPI_PARSE_OBJECT *Next; ACPI_PARSE_OBJECT *Parent; /* We are only interested in _REG methods */ if (!ACPI_COMPARE_NAME (METHOD_NAME__REG, &Op->Asl.NameSeg)) { return; } /* Get the start of the current scope */ Parent = Op->Asl.Parent; Next = Parent->Asl.Child; /* Search entire scope for an operation region declaration */ while (Next) { if (Next->Asl.ParseOpcode == PARSEOP_OPERATIONREGION) { return; /* Found region, OK */ } Next = Next->Asl.Next; } /* No region found, issue warning */ AslError (ASL_WARNING, ASL_MSG_NO_REGION, Op, NULL); } src/acpica/source/compiler/aslbtypes.c000066400000000000000000000440431231470457100203620ustar00rootroot00000000000000/****************************************************************************** * * Module Name: aslbtypes - Support for bitfield types * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #include "aslcompiler.h" #include "aslcompiler.y.h" #include "amlcode.h" #define _COMPONENT ACPI_COMPILER ACPI_MODULE_NAME ("aslbtypes") /* Local prototypes */ static UINT32 AnMapEtypeToBtype ( UINT32 Etype); /******************************************************************************* * * FUNCTION: AnMapArgTypeToBtype * * PARAMETERS: ArgType - The ARGI required type(s) for this * argument, from the opcode info table * * RETURN: The corresponding Bit-encoded types * * DESCRIPTION: Convert an encoded ARGI required argument type code into a * bitfield type code. Implements the implicit source conversion * rules. * ******************************************************************************/ UINT32 AnMapArgTypeToBtype ( UINT32 ArgType) { switch (ArgType) { /* Simple types */ case ARGI_ANYTYPE: return (ACPI_BTYPE_OBJECTS_AND_REFS); case ARGI_PACKAGE: return (ACPI_BTYPE_PACKAGE); case ARGI_EVENT: return (ACPI_BTYPE_EVENT); case ARGI_MUTEX: return (ACPI_BTYPE_MUTEX); case ARGI_DDBHANDLE: /* * DDBHandleObject := SuperName * ACPI_BTYPE_REFERENCE: Index reference as parameter of Load/Unload */ return (ACPI_BTYPE_DDB_HANDLE | ACPI_BTYPE_REFERENCE); /* Interchangeable types */ /* * Source conversion rules: * Integer, String, and Buffer are all interchangeable */ case ARGI_INTEGER: case ARGI_STRING: case ARGI_BUFFER: case ARGI_BUFFER_OR_STRING: case ARGI_COMPUTEDATA: return (ACPI_BTYPE_COMPUTE_DATA); /* References */ case ARGI_INTEGER_REF: return (ACPI_BTYPE_INTEGER); case ARGI_OBJECT_REF: return (ACPI_BTYPE_ALL_OBJECTS); case ARGI_DEVICE_REF: return (ACPI_BTYPE_DEVICE_OBJECTS); case ARGI_REFERENCE: return (ACPI_BTYPE_REFERENCE); case ARGI_TARGETREF: case ARGI_FIXED_TARGET: case ARGI_SIMPLE_TARGET: return (ACPI_BTYPE_OBJECTS_AND_REFS); /* Complex types */ case ARGI_DATAOBJECT: /* * Buffer, string, package or reference to a Op - * Used only by SizeOf operator */ return (ACPI_BTYPE_STRING | ACPI_BTYPE_BUFFER | ACPI_BTYPE_PACKAGE | ACPI_BTYPE_REFERENCE); case ARGI_COMPLEXOBJ: /* Buffer, String, or package */ return (ACPI_BTYPE_STRING | ACPI_BTYPE_BUFFER | ACPI_BTYPE_PACKAGE); case ARGI_REF_OR_STRING: return (ACPI_BTYPE_STRING | ACPI_BTYPE_REFERENCE); case ARGI_REGION_OR_BUFFER: /* Used by Load() only. Allow buffers in addition to regions/fields */ return (ACPI_BTYPE_REGION | ACPI_BTYPE_BUFFER | ACPI_BTYPE_FIELD_UNIT); case ARGI_DATAREFOBJ: return (ACPI_BTYPE_INTEGER |ACPI_BTYPE_STRING | ACPI_BTYPE_BUFFER | ACPI_BTYPE_PACKAGE | ACPI_BTYPE_REFERENCE | ACPI_BTYPE_DDB_HANDLE); default: break; } return (ACPI_BTYPE_OBJECTS_AND_REFS); } /******************************************************************************* * * FUNCTION: AnMapEtypeToBtype * * PARAMETERS: Etype - Encoded ACPI Type * * RETURN: Btype corresponding to the Etype * * DESCRIPTION: Convert an encoded ACPI type to a bitfield type applying the * operand conversion rules. In other words, returns the type(s) * this Etype is implicitly converted to during interpretation. * ******************************************************************************/ static UINT32 AnMapEtypeToBtype ( UINT32 Etype) { if (Etype == ACPI_TYPE_ANY) { return (ACPI_BTYPE_OBJECTS_AND_REFS); } /* Try the standard ACPI data types */ if (Etype <= ACPI_TYPE_EXTERNAL_MAX) { /* * This switch statement implements the allowed operand conversion * rules as per the "ASL Data Types" section of the ACPI * specification. */ switch (Etype) { case ACPI_TYPE_INTEGER: return (ACPI_BTYPE_COMPUTE_DATA | ACPI_BTYPE_DDB_HANDLE); case ACPI_TYPE_STRING: case ACPI_TYPE_BUFFER: return (ACPI_BTYPE_COMPUTE_DATA); case ACPI_TYPE_PACKAGE: return (ACPI_BTYPE_PACKAGE); case ACPI_TYPE_FIELD_UNIT: return (ACPI_BTYPE_COMPUTE_DATA | ACPI_BTYPE_FIELD_UNIT); case ACPI_TYPE_BUFFER_FIELD: return (ACPI_BTYPE_COMPUTE_DATA | ACPI_BTYPE_BUFFER_FIELD); case ACPI_TYPE_DDB_HANDLE: return (ACPI_BTYPE_INTEGER | ACPI_BTYPE_DDB_HANDLE); case ACPI_TYPE_DEBUG_OBJECT: /* Cannot be used as a source operand */ return (0); default: return (1 << (Etype - 1)); } } /* Try the internal data types */ switch (Etype) { case ACPI_TYPE_LOCAL_REGION_FIELD: case ACPI_TYPE_LOCAL_BANK_FIELD: case ACPI_TYPE_LOCAL_INDEX_FIELD: /* Named fields can be either Integer/Buffer/String */ return (ACPI_BTYPE_COMPUTE_DATA | ACPI_BTYPE_FIELD_UNIT); case ACPI_TYPE_LOCAL_ALIAS: return (ACPI_BTYPE_INTEGER); case ACPI_TYPE_LOCAL_RESOURCE: case ACPI_TYPE_LOCAL_RESOURCE_FIELD: return (ACPI_BTYPE_REFERENCE); default: printf ("Unhandled encoded type: %X\n", Etype); return (0); } } /******************************************************************************* * * FUNCTION: AnFormatBtype * * PARAMETERS: Btype - Bitfield of ACPI types * Buffer - Where to put the ascii string * * RETURN: None. * * DESCRIPTION: Convert a Btype to a string of ACPI types * ******************************************************************************/ void AnFormatBtype ( char *Buffer, UINT32 Btype) { UINT32 Type; BOOLEAN First = TRUE; *Buffer = 0; if (Btype == 0) { strcat (Buffer, "NoReturnValue"); return; } for (Type = 1; Type <= ACPI_TYPE_EXTERNAL_MAX; Type++) { if (Btype & 0x00000001) { if (!First) { strcat (Buffer, "|"); } First = FALSE; strcat (Buffer, AcpiUtGetTypeName (Type)); } Btype >>= 1; } if (Btype & 0x00000001) { if (!First) { strcat (Buffer, "|"); } First = FALSE; strcat (Buffer, "Reference"); } Btype >>= 1; if (Btype & 0x00000001) { if (!First) { strcat (Buffer, "|"); } First = FALSE; strcat (Buffer, "Resource"); } } /******************************************************************************* * * FUNCTION: AnGetBtype * * PARAMETERS: Op - Parse node whose type will be returned. * * RETURN: The Btype associated with the Op. * * DESCRIPTION: Get the (bitfield) ACPI type associated with the parse node. * Handles the case where the node is a name or method call and * the actual type must be obtained from the namespace node. * ******************************************************************************/ UINT32 AnGetBtype ( ACPI_PARSE_OBJECT *Op) { ACPI_NAMESPACE_NODE *Node; ACPI_PARSE_OBJECT *ReferencedNode; UINT32 ThisNodeBtype = 0; if ((Op->Asl.ParseOpcode == PARSEOP_NAMESEG) || (Op->Asl.ParseOpcode == PARSEOP_NAMESTRING) || (Op->Asl.ParseOpcode == PARSEOP_METHODCALL)) { Node = Op->Asl.Node; if (!Node) { DbgPrint (ASL_DEBUG_OUTPUT, "No attached Nsnode: [%s] at line %u name [%s], ignoring typecheck\n", Op->Asl.ParseOpName, Op->Asl.LineNumber, Op->Asl.ExternalName); return (ACPI_UINT32_MAX); } ThisNodeBtype = AnMapEtypeToBtype (Node->Type); if (!ThisNodeBtype) { AslError (ASL_ERROR, ASL_MSG_COMPILER_INTERNAL, Op, "could not map type"); } /* * Since it was a named reference, enable the * reference bit also */ ThisNodeBtype |= ACPI_BTYPE_REFERENCE; if (Op->Asl.ParseOpcode == PARSEOP_METHODCALL) { ReferencedNode = Node->Op; if (!ReferencedNode) { /* Check for an internal method */ if (AnIsInternalMethod (Op)) { return (AnGetInternalMethodReturnType (Op)); } AslError (ASL_ERROR, ASL_MSG_COMPILER_INTERNAL, Op, "null Op pointer"); return (ACPI_UINT32_MAX); } if (ReferencedNode->Asl.CompileFlags & NODE_METHOD_TYPED) { ThisNodeBtype = ReferencedNode->Asl.AcpiBtype; } else { return (ACPI_UINT32_MAX -1); } } } else { ThisNodeBtype = Op->Asl.AcpiBtype; } return (ThisNodeBtype); } /******************************************************************************* * * FUNCTION: AnMapObjTypeToBtype * * PARAMETERS: Op - A parse node * * RETURN: A Btype * * DESCRIPTION: Map object to the associated "Btype" * ******************************************************************************/ UINT32 AnMapObjTypeToBtype ( ACPI_PARSE_OBJECT *Op) { switch (Op->Asl.ParseOpcode) { case PARSEOP_OBJECTTYPE_BFF: /* "BuffFieldObj" */ return (ACPI_BTYPE_BUFFER_FIELD); case PARSEOP_OBJECTTYPE_BUF: /* "BuffObj" */ return (ACPI_BTYPE_BUFFER); case PARSEOP_OBJECTTYPE_DDB: /* "DDBHandleObj" */ return (ACPI_BTYPE_DDB_HANDLE); case PARSEOP_OBJECTTYPE_DEV: /* "DeviceObj" */ return (ACPI_BTYPE_DEVICE); case PARSEOP_OBJECTTYPE_EVT: /* "EventObj" */ return (ACPI_BTYPE_EVENT); case PARSEOP_OBJECTTYPE_FLD: /* "FieldUnitObj" */ return (ACPI_BTYPE_FIELD_UNIT); case PARSEOP_OBJECTTYPE_INT: /* "IntObj" */ return (ACPI_BTYPE_INTEGER); case PARSEOP_OBJECTTYPE_MTH: /* "MethodObj" */ return (ACPI_BTYPE_METHOD); case PARSEOP_OBJECTTYPE_MTX: /* "MutexObj" */ return (ACPI_BTYPE_MUTEX); case PARSEOP_OBJECTTYPE_OPR: /* "OpRegionObj" */ return (ACPI_BTYPE_REGION); case PARSEOP_OBJECTTYPE_PKG: /* "PkgObj" */ return (ACPI_BTYPE_PACKAGE); case PARSEOP_OBJECTTYPE_POW: /* "PowerResObj" */ return (ACPI_BTYPE_POWER); case PARSEOP_OBJECTTYPE_STR: /* "StrObj" */ return (ACPI_BTYPE_STRING); case PARSEOP_OBJECTTYPE_THZ: /* "ThermalZoneObj" */ return (ACPI_BTYPE_THERMAL); case PARSEOP_OBJECTTYPE_UNK: /* "UnknownObj" */ return (ACPI_BTYPE_OBJECTS_AND_REFS); default: return (0); } } #ifdef ACPI_OBSOLETE_FUNCTIONS /******************************************************************************* * * FUNCTION: AnMapBtypeToEtype * * PARAMETERS: Btype - Bitfield of ACPI types * * RETURN: The Etype corresponding the the Btype * * DESCRIPTION: Convert a bitfield type to an encoded type * ******************************************************************************/ UINT32 AnMapBtypeToEtype ( UINT32 Btype) { UINT32 i; UINT32 Etype; if (Btype == 0) { return (0); } Etype = 1; for (i = 1; i < Btype; i *= 2) { Etype++; } return (Etype); } #endif src/acpica/source/compiler/aslcodegen.c000066400000000000000000000460441231470457100204630ustar00rootroot00000000000000/****************************************************************************** * * Module Name: aslcodegen - AML code generation * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #include "aslcompiler.h" #include "aslcompiler.y.h" #include "amlcode.h" #define _COMPONENT ACPI_COMPILER ACPI_MODULE_NAME ("aslcodegen") /* Local prototypes */ static ACPI_STATUS CgAmlWriteWalk ( ACPI_PARSE_OBJECT *Op, UINT32 Level, void *Context); static void CgLocalWriteAmlData ( ACPI_PARSE_OBJECT *Op, void *Buffer, UINT32 Length); static void CgWriteAmlOpcode ( ACPI_PARSE_OBJECT *Op); static void CgWriteTableHeader ( ACPI_PARSE_OBJECT *Op); static void CgCloseTable ( void); static void CgWriteNode ( ACPI_PARSE_OBJECT *Op); /******************************************************************************* * * FUNCTION: CgGenerateAmlOutput * * PARAMETERS: None. * * RETURN: None * * DESCRIPTION: Generate AML code. Currently generates the listing file * simultaneously. * ******************************************************************************/ void CgGenerateAmlOutput ( void) { DbgPrint (ASL_DEBUG_OUTPUT, "\nWriting AML\n\n"); /* Generate the AML output file */ FlSeekFile (ASL_FILE_SOURCE_OUTPUT, 0); Gbl_SourceLine = 0; Gbl_NextError = Gbl_ErrorLog; TrWalkParseTree (RootNode, ASL_WALK_VISIT_DOWNWARD, CgAmlWriteWalk, NULL, NULL); CgCloseTable (); } /******************************************************************************* * * FUNCTION: CgAmlWriteWalk * * PARAMETERS: ASL_WALK_CALLBACK * * RETURN: Status * * DESCRIPTION: Parse tree walk to generate the AML code. * ******************************************************************************/ static ACPI_STATUS CgAmlWriteWalk ( ACPI_PARSE_OBJECT *Op, UINT32 Level, void *Context) { /* * Print header at level 0. Alignment assumes 32-bit pointers */ if (!Level) { DbgPrint (ASL_TREE_OUTPUT, "Final parse tree used for AML output:\n"); DbgPrint (ASL_TREE_OUTPUT, "%*s Value P_Op A_Op OpLen PByts Len SubLen PSubLen OpPtr Child Parent Flags AcTyp Final Col L\n", 76, " "); } /* Debug output */ DbgPrint (ASL_TREE_OUTPUT, "%5.5d [%2d]", Op->Asl.LogicalLineNumber, Level); UtPrintFormattedName (Op->Asl.ParseOpcode, Level); if (Op->Asl.ParseOpcode == PARSEOP_NAMESEG || Op->Asl.ParseOpcode == PARSEOP_NAMESTRING || Op->Asl.ParseOpcode == PARSEOP_METHODCALL) { DbgPrint (ASL_TREE_OUTPUT, "%10.32s ", Op->Asl.ExternalName); } else { DbgPrint (ASL_TREE_OUTPUT, " "); } DbgPrint (ASL_TREE_OUTPUT, "%08X %04X %04X %01X %04X %04X %04X %04X %08X %08X %08X %08X %08X %04X %02d %02d\n", /* 1 */ (UINT32) Op->Asl.Value.Integer, /* 2 */ Op->Asl.ParseOpcode, /* 3 */ Op->Asl.AmlOpcode, /* 4 */ Op->Asl.AmlOpcodeLength, /* 5 */ Op->Asl.AmlPkgLenBytes, /* 6 */ Op->Asl.AmlLength, /* 7 */ Op->Asl.AmlSubtreeLength, /* 8 */ Op->Asl.Parent ? Op->Asl.Parent->Asl.AmlSubtreeLength : 0, /* 9 */ Op, /* 10 */ Op->Asl.Child, /* 11 */ Op->Asl.Parent, /* 12 */ Op->Asl.CompileFlags, /* 13 */ Op->Asl.AcpiBtype, /* 14 */ Op->Asl.FinalAmlLength, /* 15 */ Op->Asl.Column, /* 16 */ Op->Asl.LineNumber); /* Generate the AML for this node */ CgWriteNode (Op); return (AE_OK); } /******************************************************************************* * * FUNCTION: CgLocalWriteAmlData * * PARAMETERS: Op - Current parse op * Buffer - Buffer to write * Length - Size of data in buffer * * RETURN: None * * DESCRIPTION: Write a buffer of AML data to the AML output file. * ******************************************************************************/ static void CgLocalWriteAmlData ( ACPI_PARSE_OBJECT *Op, void *Buffer, UINT32 Length) { /* Write the raw data to the AML file */ FlWriteFile (ASL_FILE_AML_OUTPUT, Buffer, Length); /* Update the final AML length for this node (used for listings) */ if (Op) { Op->Asl.FinalAmlLength += Length; } } /******************************************************************************* * * FUNCTION: CgWriteAmlOpcode * * PARAMETERS: Op - Parse node with an AML opcode * * RETURN: None. * * DESCRIPTION: Write the AML opcode corresponding to a parse node. * ******************************************************************************/ static void CgWriteAmlOpcode ( ACPI_PARSE_OBJECT *Op) { UINT8 PkgLenFirstByte; UINT32 i; union { UINT16 Opcode; UINT8 OpcodeBytes[2]; } Aml; union { UINT32 Len; UINT8 LenBytes[4]; } PkgLen; /* We expect some DEFAULT_ARGs, just ignore them */ if (Op->Asl.ParseOpcode == PARSEOP_DEFAULT_ARG) { return; } switch (Op->Asl.AmlOpcode) { case AML_UNASSIGNED_OPCODE: /* These opcodes should not get here */ printf ("Found a node with an unassigned AML opcode\n"); FlPrintFile (ASL_FILE_STDERR, "Found a node with an unassigned AML opcode\n"); return; case AML_INT_RESERVEDFIELD_OP: /* Special opcodes for within a field definition */ Aml.Opcode = AML_FIELD_OFFSET_OP; break; case AML_INT_ACCESSFIELD_OP: Aml.Opcode = AML_FIELD_ACCESS_OP; break; case AML_INT_CONNECTION_OP: Aml.Opcode = AML_FIELD_CONNECTION_OP; break; default: Aml.Opcode = Op->Asl.AmlOpcode; break; } switch (Aml.Opcode) { case AML_PACKAGE_LENGTH: /* Value is the length to be encoded (Used in field definitions) */ PkgLen.Len = (UINT32) Op->Asl.Value.Integer; break; default: /* Check for two-byte opcode */ if (Aml.Opcode > 0x00FF) { /* Write the high byte first */ CgLocalWriteAmlData (Op, &Aml.OpcodeBytes[1], 1); } CgLocalWriteAmlData (Op, &Aml.OpcodeBytes[0], 1); /* Subtreelength doesn't include length of package length bytes */ PkgLen.Len = Op->Asl.AmlSubtreeLength + Op->Asl.AmlPkgLenBytes; break; } /* Does this opcode have an associated "PackageLength" field? */ if (Op->Asl.CompileFlags & NODE_AML_PACKAGE) { if (Op->Asl.AmlPkgLenBytes == 1) { /* Simplest case -- no bytes to follow, just write the count */ CgLocalWriteAmlData (Op, &PkgLen.LenBytes[0], 1); } else if (Op->Asl.AmlPkgLenBytes != 0) { /* * Encode the "bytes to follow" in the first byte, top two bits. * The low-order nybble of the length is in the bottom 4 bits */ PkgLenFirstByte = (UINT8) (((UINT32) (Op->Asl.AmlPkgLenBytes - 1) << 6) | (PkgLen.LenBytes[0] & 0x0F)); CgLocalWriteAmlData (Op, &PkgLenFirstByte, 1); /* * Shift the length over by the 4 bits we just stuffed * in the first byte */ PkgLen.Len >>= 4; /* Now we can write the remaining bytes - either 1, 2, or 3 bytes */ for (i = 0; i < (UINT32) (Op->Asl.AmlPkgLenBytes - 1); i++) { CgLocalWriteAmlData (Op, &PkgLen.LenBytes[i], 1); } } } switch (Aml.Opcode) { case AML_BYTE_OP: CgLocalWriteAmlData (Op, &Op->Asl.Value.Integer, 1); break; case AML_WORD_OP: CgLocalWriteAmlData (Op, &Op->Asl.Value.Integer, 2); break; case AML_DWORD_OP: CgLocalWriteAmlData (Op, &Op->Asl.Value.Integer, 4); break; case AML_QWORD_OP: CgLocalWriteAmlData (Op, &Op->Asl.Value.Integer, 8); break; case AML_STRING_OP: CgLocalWriteAmlData (Op, Op->Asl.Value.String, Op->Asl.AmlLength); break; default: /* All data opcodes must appear above */ break; } } /******************************************************************************* * * FUNCTION: CgWriteTableHeader * * PARAMETERS: Op - The DEFINITIONBLOCK node * * RETURN: None * * DESCRIPTION: Write a table header corresponding to the DEFINITIONBLOCK * ******************************************************************************/ static void CgWriteTableHeader ( ACPI_PARSE_OBJECT *Op) { ACPI_PARSE_OBJECT *Child; /* AML filename */ Child = Op->Asl.Child; /* Signature */ Child = Child->Asl.Next; strncpy (TableHeader.Signature, Child->Asl.Value.String, 4); /* Revision */ Child = Child->Asl.Next; TableHeader.Revision = (UINT8) Child->Asl.Value.Integer; /* Command-line Revision override */ if (Gbl_RevisionOverride) { TableHeader.Revision = Gbl_RevisionOverride; } /* OEMID */ Child = Child->Asl.Next; strncpy (TableHeader.OemId, Child->Asl.Value.String, 6); /* OEM TableID */ Child = Child->Asl.Next; strncpy (TableHeader.OemTableId, Child->Asl.Value.String, 8); /* OEM Revision */ Child = Child->Asl.Next; TableHeader.OemRevision = (UINT32) Child->Asl.Value.Integer; /* Compiler ID */ ACPI_MOVE_NAME (TableHeader.AslCompilerId, ASL_CREATOR_ID); /* Compiler version */ TableHeader.AslCompilerRevision = ASL_REVISION; /* Table length. Checksum zero for now, will rewrite later */ TableHeader.Length = Gbl_TableLength; TableHeader.Checksum = 0; CgLocalWriteAmlData (Op, &TableHeader, sizeof (ACPI_TABLE_HEADER)); } /******************************************************************************* * * FUNCTION: CgCloseTable * * PARAMETERS: None. * * RETURN: None. * * DESCRIPTION: Complete the ACPI table by calculating the checksum and * re-writing the header. * ******************************************************************************/ static void CgCloseTable ( void) { signed char Sum; UINT8 FileByte; FlSeekFile (ASL_FILE_AML_OUTPUT, 0); Sum = 0; /* Calculate the checksum over the entire file */ while (FlReadFile (ASL_FILE_AML_OUTPUT, &FileByte, 1) == AE_OK) { Sum = (signed char) (Sum + FileByte); } /* Re-write the table header with the checksum */ TableHeader.Checksum = (UINT8) (0 - Sum); FlSeekFile (ASL_FILE_AML_OUTPUT, 0); CgLocalWriteAmlData (NULL, &TableHeader, sizeof (ACPI_TABLE_HEADER)); } /******************************************************************************* * * FUNCTION: CgWriteNode * * PARAMETERS: Op - Parse node to write. * * RETURN: None. * * DESCRIPTION: Write the AML that corresponds to a parse node. * ******************************************************************************/ static void CgWriteNode ( ACPI_PARSE_OBJECT *Op) { ASL_RESOURCE_NODE *Rnode; /* Always check for DEFAULT_ARG and other "Noop" nodes */ /* TBD: this may not be the best place for this check */ if ((Op->Asl.ParseOpcode == PARSEOP_DEFAULT_ARG) || (Op->Asl.ParseOpcode == PARSEOP_EXTERNAL) || (Op->Asl.ParseOpcode == PARSEOP_INCLUDE) || (Op->Asl.ParseOpcode == PARSEOP_INCLUDE_END)) { return; } Op->Asl.FinalAmlLength = 0; switch (Op->Asl.AmlOpcode) { case AML_RAW_DATA_BYTE: case AML_RAW_DATA_WORD: case AML_RAW_DATA_DWORD: case AML_RAW_DATA_QWORD: CgLocalWriteAmlData (Op, &Op->Asl.Value.Integer, Op->Asl.AmlLength); return; case AML_RAW_DATA_BUFFER: CgLocalWriteAmlData (Op, Op->Asl.Value.Buffer, Op->Asl.AmlLength); return; case AML_RAW_DATA_CHAIN: Rnode = ACPI_CAST_PTR (ASL_RESOURCE_NODE, Op->Asl.Value.Buffer); while (Rnode) { CgLocalWriteAmlData (Op, Rnode->Buffer, Rnode->BufferLength); Rnode = Rnode->Next; } return; default: /* Internal data opcodes must all appear above */ break; } switch (Op->Asl.ParseOpcode) { case PARSEOP_DEFAULT_ARG: break; case PARSEOP_DEFINITIONBLOCK: CgWriteTableHeader (Op); break; case PARSEOP_NAMESEG: case PARSEOP_NAMESTRING: case PARSEOP_METHODCALL: CgLocalWriteAmlData (Op, Op->Asl.Value.String, Op->Asl.AmlLength); break; default: CgWriteAmlOpcode (Op); break; } } src/acpica/source/compiler/aslcompile.c000066400000000000000000000746231231470457100205130ustar00rootroot00000000000000/****************************************************************************** * * Module Name: aslcompile - top level compile module * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #include "aslcompiler.h" #include "dtcompiler.h" #include #include #include #define _COMPONENT ACPI_COMPILER ACPI_MODULE_NAME ("aslcompile") /* * Main parser entry * External is here in case the parser emits the same external in the * generated header. (Newer versions of Bison) */ int AslCompilerparse( void); /* Local prototypes */ static void CmFlushSourceCode ( void); static void FlConsumeAnsiComment ( FILE *Handle, ASL_FILE_STATUS *Status); static void FlConsumeNewComment ( FILE *Handle, ASL_FILE_STATUS *Status); static void CmDumpAllEvents ( void); /******************************************************************************* * * FUNCTION: AslCompilerSignon * * PARAMETERS: FileId - ID of the output file * * RETURN: None * * DESCRIPTION: Display compiler signon * ******************************************************************************/ void AslCompilerSignon ( UINT32 FileId) { char *Prefix = ""; char *UtilityName; /* Set line prefix depending on the destination file type */ switch (FileId) { case ASL_FILE_ASM_SOURCE_OUTPUT: case ASL_FILE_ASM_INCLUDE_OUTPUT: Prefix = "; "; break; case ASL_FILE_HEX_OUTPUT: if (Gbl_HexOutputFlag == HEX_OUTPUT_ASM) { Prefix = "; "; } else if ((Gbl_HexOutputFlag == HEX_OUTPUT_C) || (Gbl_HexOutputFlag == HEX_OUTPUT_ASL)) { FlPrintFile (ASL_FILE_HEX_OUTPUT, "/*\n"); Prefix = " * "; } break; case ASL_FILE_C_SOURCE_OUTPUT: case ASL_FILE_C_OFFSET_OUTPUT: case ASL_FILE_C_INCLUDE_OUTPUT: Prefix = " * "; break; default: /* No other output types supported */ break; } /* Running compiler or disassembler? */ if (Gbl_DisasmFlag) { UtilityName = AML_DISASSEMBLER_NAME; } else { UtilityName = ASL_COMPILER_NAME; } /* Compiler signon with copyright */ FlPrintFile (FileId, "%s\n", Prefix); FlPrintFile (FileId, ACPI_COMMON_HEADER (UtilityName, Prefix)); } /******************************************************************************* * * FUNCTION: AslCompilerFileHeader * * PARAMETERS: FileId - ID of the output file * * RETURN: None * * DESCRIPTION: Header used at the beginning of output files * ******************************************************************************/ void AslCompilerFileHeader ( UINT32 FileId) { struct tm *NewTime; time_t Aclock; char *Prefix = ""; /* Set line prefix depending on the destination file type */ switch (FileId) { case ASL_FILE_ASM_SOURCE_OUTPUT: case ASL_FILE_ASM_INCLUDE_OUTPUT: Prefix = "; "; break; case ASL_FILE_HEX_OUTPUT: if (Gbl_HexOutputFlag == HEX_OUTPUT_ASM) { Prefix = "; "; } else if ((Gbl_HexOutputFlag == HEX_OUTPUT_C) || (Gbl_HexOutputFlag == HEX_OUTPUT_ASL)) { Prefix = " * "; } break; case ASL_FILE_C_SOURCE_OUTPUT: case ASL_FILE_C_OFFSET_OUTPUT: case ASL_FILE_C_INCLUDE_OUTPUT: Prefix = " * "; break; default: /* No other output types supported */ break; } /* Compilation header with timestamp */ (void) time (&Aclock); NewTime = localtime (&Aclock); FlPrintFile (FileId, "%sCompilation of \"%s\" - %s%s\n", Prefix, Gbl_Files[ASL_FILE_INPUT].Filename, asctime (NewTime), Prefix); switch (FileId) { case ASL_FILE_C_SOURCE_OUTPUT: case ASL_FILE_C_OFFSET_OUTPUT: case ASL_FILE_C_INCLUDE_OUTPUT: FlPrintFile (FileId, " */\n"); break; default: /* Nothing to do for other output types */ break; } } /******************************************************************************* * * FUNCTION: CmFlushSourceCode * * PARAMETERS: None * * RETURN: None * * DESCRIPTION: Read in any remaining source code after the parse tree * has been constructed. * ******************************************************************************/ static void CmFlushSourceCode ( void) { char Buffer; while (FlReadFile (ASL_FILE_INPUT, &Buffer, 1) != AE_ERROR) { AslInsertLineBuffer ((int) Buffer); } AslResetCurrentLineBuffer (); } /******************************************************************************* * * FUNCTION: FlConsume* * * PARAMETERS: Handle - Open input file * Status - File current status struct * * RETURN: Number of lines consumed * * DESCRIPTION: Step over both types of comment during check for ascii chars * ******************************************************************************/ static void FlConsumeAnsiComment ( FILE *Handle, ASL_FILE_STATUS *Status) { UINT8 Byte; BOOLEAN ClosingComment = FALSE; while (fread (&Byte, 1, 1, Handle) == 1) { /* Scan until comment close is found */ if (ClosingComment) { if (Byte == '/') { return; } if (Byte != '*') { /* Reset */ ClosingComment = FALSE; } } else if (Byte == '*') { ClosingComment = TRUE; } /* Maintain line count */ if (Byte == 0x0A) { Status->Line++; } Status->Offset++; } } static void FlConsumeNewComment ( FILE *Handle, ASL_FILE_STATUS *Status) { UINT8 Byte; while (fread (&Byte, 1, 1, Handle) == 1) { Status->Offset++; /* Comment ends at newline */ if (Byte == 0x0A) { Status->Line++; return; } } } /******************************************************************************* * * FUNCTION: FlCheckForAcpiTable * * PARAMETERS: Handle - Open input file * * RETURN: Status * * DESCRIPTION: Determine if a file seems to be a binary ACPI table, via the * following checks on what would be the table header: * 0) File must be at least as long as an ACPI_TABLE_HEADER * 1) The header length field must match the file size * 2) Signature, OemId, OemTableId, AslCompilerId must be ASCII * ******************************************************************************/ ACPI_STATUS FlCheckForAcpiTable ( FILE *Handle) { ACPI_TABLE_HEADER Table; UINT32 FileSize; size_t Actual; UINT32 i; /* Read a potential table header */ Actual = fread (&Table, 1, sizeof (ACPI_TABLE_HEADER), Handle); fseek (Handle, 0, SEEK_SET); if (Actual < sizeof (ACPI_TABLE_HEADER)) { return (AE_ERROR); } /* Header length field must match the file size */ FileSize = CmGetFileSize (Handle); if (Table.Length != FileSize) { return (AE_ERROR); } /* * These fields must be ASCII: * Signature, OemId, OemTableId, AslCompilerId. * We allow a NULL terminator in OemId and OemTableId. */ for (i = 0; i < ACPI_NAME_SIZE; i++) { if (!ACPI_IS_ASCII ((UINT8) Table.Signature[i])) { return (AE_ERROR); } if (!ACPI_IS_ASCII ((UINT8) Table.AslCompilerId[i])) { return (AE_ERROR); } } for (i = 0; (i < ACPI_OEM_ID_SIZE) && (Table.OemId[i]); i++) { if (!ACPI_IS_ASCII ((UINT8) Table.OemId[i])) { return (AE_ERROR); } } for (i = 0; (i < ACPI_OEM_TABLE_ID_SIZE) && (Table.OemTableId[i]); i++) { if (!ACPI_IS_ASCII ((UINT8) Table.OemTableId[i])) { return (AE_ERROR); } } printf ("Binary file appears to be a valid ACPI table, disassembling\n"); return (AE_OK); } /******************************************************************************* * * FUNCTION: FlCheckForAscii * * PARAMETERS: Handle - Open input file * Filename - Input filename * DisplayErrors - TRUE if error messages desired * * RETURN: Status * * DESCRIPTION: Verify that the input file is entirely ASCII. Ignores characters * within comments. Note: does not handle nested comments and does * not handle comment delimiters within string literals. However, * on the rare chance this happens and an invalid character is * missed, the parser will catch the error by failing in some * spectactular manner. * ******************************************************************************/ ACPI_STATUS FlCheckForAscii ( FILE *Handle, char *Filename, BOOLEAN DisplayErrors) { UINT8 Byte; ACPI_SIZE BadBytes = 0; BOOLEAN OpeningComment = FALSE; ASL_FILE_STATUS Status; Status.Line = 1; Status.Offset = 0; /* Read the entire file */ while (fread (&Byte, 1, 1, Handle) == 1) { /* Ignore comment fields (allow non-ascii within) */ if (OpeningComment) { /* Check for second comment open delimiter */ if (Byte == '*') { FlConsumeAnsiComment (Handle, &Status); } if (Byte == '/') { FlConsumeNewComment (Handle, &Status); } /* Reset */ OpeningComment = FALSE; } else if (Byte == '/') { OpeningComment = TRUE; } /* Check for an ASCII character */ if (!ACPI_IS_ASCII (Byte)) { if ((BadBytes < 10) && (DisplayErrors)) { AcpiOsPrintf ( "Non-ASCII character [0x%2.2X] found in line %u, file offset 0x%.2X\n", Byte, Status.Line, Status.Offset); } BadBytes++; } /* Update line counter */ else if (Byte == 0x0A) { Status.Line++; } Status.Offset++; } /* Seek back to the beginning of the source file */ fseek (Handle, 0, SEEK_SET); /* Were there any non-ASCII characters in the file? */ if (BadBytes) { if (DisplayErrors) { AcpiOsPrintf ( "%u non-ASCII characters found in input source text, could be a binary file\n", BadBytes); AslError (ASL_ERROR, ASL_MSG_NON_ASCII, NULL, Filename); } return (AE_BAD_CHARACTER); } /* File is OK (100% ASCII) */ return (AE_OK); } /******************************************************************************* * * FUNCTION: CmDoCompile * * PARAMETERS: None * * RETURN: Status (0 = OK) * * DESCRIPTION: This procedure performs the entire compile * ******************************************************************************/ int CmDoCompile ( void) { ACPI_STATUS Status; UINT8 FullCompile; UINT8 Event; FullCompile = UtBeginEvent ("*** Total Compile time ***"); Event = UtBeginEvent ("Open input and output files"); UtEndEvent (Event); Event = UtBeginEvent ("Preprocess input file"); if (Gbl_PreprocessFlag) { /* Preprocessor */ PrDoPreprocess (); if (Gbl_PreprocessOnly) { UtEndEvent (Event); CmCleanupAndExit (); return (0); } } UtEndEvent (Event); /* Build the parse tree */ Event = UtBeginEvent ("Parse source code and build parse tree"); AslCompilerparse(); UtEndEvent (Event); /* Check for parse errors */ Status = AslCheckForErrorExit (); if (ACPI_FAILURE (Status)) { fprintf (stderr, "Compiler aborting due to parser-detected syntax error(s)\n"); LsDumpParseTree (); goto ErrorExit; } /* Did the parse tree get successfully constructed? */ if (!RootNode) { /* * If there are no errors, then we have some sort of * internal problem. */ AslError (ASL_ERROR, ASL_MSG_COMPILER_INTERNAL, NULL, "- Could not resolve parse tree root node"); goto ErrorExit; } /* Flush out any remaining source after parse tree is complete */ Event = UtBeginEvent ("Flush source input"); CmFlushSourceCode (); /* Optional parse tree dump, compiler debug output only */ LsDumpParseTree (); OpcGetIntegerWidth (RootNode); UtEndEvent (Event); /* Pre-process parse tree for any operator transforms */ Event = UtBeginEvent ("Parse tree transforms"); DbgPrint (ASL_DEBUG_OUTPUT, "\nParse tree transforms\n\n"); TrWalkParseTree (RootNode, ASL_WALK_VISIT_DOWNWARD, TrAmlTransformWalk, NULL, NULL); UtEndEvent (Event); /* Generate AML opcodes corresponding to the parse tokens */ Event = UtBeginEvent ("Generate AML opcodes"); DbgPrint (ASL_DEBUG_OUTPUT, "\nGenerating AML opcodes\n\n"); TrWalkParseTree (RootNode, ASL_WALK_VISIT_UPWARD, NULL, OpcAmlOpcodeWalk, NULL); UtEndEvent (Event); /* * Now that the input is parsed, we can open the AML output file. * Note: by default, the name of this file comes from the table descriptor * within the input file. */ Event = UtBeginEvent ("Open AML output file"); Status = FlOpenAmlOutputFile (Gbl_OutputFilenamePrefix); UtEndEvent (Event); if (ACPI_FAILURE (Status)) { AePrintErrorLog (ASL_FILE_STDERR); return (-1); } /* Interpret and generate all compile-time constants */ Event = UtBeginEvent ("Constant folding via AML interpreter"); DbgPrint (ASL_DEBUG_OUTPUT, "\nInterpreting compile-time constant expressions\n\n"); TrWalkParseTree (RootNode, ASL_WALK_VISIT_DOWNWARD, OpcAmlConstantWalk, NULL, NULL); UtEndEvent (Event); /* Update AML opcodes if necessary, after constant folding */ Event = UtBeginEvent ("Updating AML opcodes after constant folding"); DbgPrint (ASL_DEBUG_OUTPUT, "\nUpdating AML opcodes after constant folding\n\n"); TrWalkParseTree (RootNode, ASL_WALK_VISIT_UPWARD, NULL, OpcAmlOpcodeUpdateWalk, NULL); UtEndEvent (Event); /* Calculate all AML package lengths */ Event = UtBeginEvent ("Generate AML package lengths"); DbgPrint (ASL_DEBUG_OUTPUT, "\nGenerating Package lengths\n\n"); TrWalkParseTree (RootNode, ASL_WALK_VISIT_UPWARD, NULL, LnPackageLengthWalk, NULL); UtEndEvent (Event); if (Gbl_ParseOnlyFlag) { AePrintErrorLog (ASL_FILE_STDERR); UtDisplaySummary (ASL_FILE_STDERR); if (Gbl_DebugFlag) { /* Print error summary to the stdout also */ AePrintErrorLog (ASL_FILE_STDOUT); UtDisplaySummary (ASL_FILE_STDOUT); } UtEndEvent (FullCompile); return (0); } /* * Create an internal namespace and use it as a symbol table */ /* Namespace loading */ Event = UtBeginEvent ("Create ACPI Namespace"); Status = LdLoadNamespace (RootNode); UtEndEvent (Event); if (ACPI_FAILURE (Status)) { goto ErrorExit; } /* Namespace cross-reference */ AslGbl_NamespaceEvent = UtBeginEvent ("Cross reference parse tree and Namespace"); Status = XfCrossReferenceNamespace (); if (ACPI_FAILURE (Status)) { goto ErrorExit; } /* Namespace - Check for non-referenced objects */ LkFindUnreferencedObjects (); UtEndEvent (AslGbl_NamespaceEvent); /* * Semantic analysis. This can happen only after the * namespace has been loaded and cross-referenced. * * part one - check control methods */ Event = UtBeginEvent ("Analyze control method return types"); AnalysisWalkInfo.MethodStack = NULL; DbgPrint (ASL_DEBUG_OUTPUT, "\nSemantic analysis - Method analysis\n\n"); TrWalkParseTree (RootNode, ASL_WALK_VISIT_TWICE, MtMethodAnalysisWalkBegin, MtMethodAnalysisWalkEnd, &AnalysisWalkInfo); UtEndEvent (Event); /* Semantic error checking part two - typing of method returns */ Event = UtBeginEvent ("Determine object types returned by methods"); DbgPrint (ASL_DEBUG_OUTPUT, "\nSemantic analysis - Method typing\n\n"); TrWalkParseTree (RootNode, ASL_WALK_VISIT_UPWARD, NULL, AnMethodTypingWalkEnd, NULL); UtEndEvent (Event); /* Semantic error checking part three - operand type checking */ Event = UtBeginEvent ("Analyze AML operand types"); DbgPrint (ASL_DEBUG_OUTPUT, "\nSemantic analysis - Operand type checking\n\n"); TrWalkParseTree (RootNode, ASL_WALK_VISIT_UPWARD, NULL, AnOperandTypecheckWalkEnd, &AnalysisWalkInfo); UtEndEvent (Event); /* Semantic error checking part four - other miscellaneous checks */ Event = UtBeginEvent ("Miscellaneous analysis"); DbgPrint (ASL_DEBUG_OUTPUT, "\nSemantic analysis - miscellaneous\n\n"); TrWalkParseTree (RootNode, ASL_WALK_VISIT_DOWNWARD, AnOtherSemanticAnalysisWalkBegin, NULL, &AnalysisWalkInfo); UtEndEvent (Event); /* Calculate all AML package lengths */ Event = UtBeginEvent ("Finish AML package length generation"); DbgPrint (ASL_DEBUG_OUTPUT, "\nGenerating Package lengths\n\n"); TrWalkParseTree (RootNode, ASL_WALK_VISIT_UPWARD, NULL, LnInitLengthsWalk, NULL); TrWalkParseTree (RootNode, ASL_WALK_VISIT_UPWARD, NULL, LnPackageLengthWalk, NULL); UtEndEvent (Event); /* Code generation - emit the AML */ Event = UtBeginEvent ("Generate AML code and write output files"); CgGenerateAmlOutput (); UtEndEvent (Event); Event = UtBeginEvent ("Write optional output files"); CmDoOutputFiles (); UtEndEvent (Event); UtEndEvent (FullCompile); CmCleanupAndExit (); return (0); ErrorExit: UtEndEvent (FullCompile); CmCleanupAndExit (); return (-1); } /******************************************************************************* * * FUNCTION: CmDoOutputFiles * * PARAMETERS: None * * RETURN: None. * * DESCRIPTION: Create all "listing" type files * ******************************************************************************/ void CmDoOutputFiles ( void) { /* Create listings and hex files */ LsDoListings (); HxDoHexOutput (); /* Dump the namespace to the .nsp file if requested */ (void) NsDisplayNamespace (); } /******************************************************************************* * * FUNCTION: CmDumpAllEvents * * PARAMETERS: None * * RETURN: None. * * DESCRIPTION: Dump all compiler events * ******************************************************************************/ static void CmDumpAllEvents ( void) { ASL_EVENT_INFO *Event; UINT32 Delta; UINT32 USec; UINT32 MSec; UINT32 i; Event = AslGbl_Events; DbgPrint (ASL_DEBUG_OUTPUT, "\n\nElapsed time for major events\n\n"); if (Gbl_CompileTimesFlag) { printf ("\nElapsed time for major events\n\n"); } for (i = 0; i < AslGbl_NextEvent; i++) { if (Event->Valid) { /* Delta will be in 100-nanosecond units */ Delta = (UINT32) (Event->EndTime - Event->StartTime); USec = Delta / ACPI_100NSEC_PER_USEC; MSec = Delta / ACPI_100NSEC_PER_MSEC; /* Round milliseconds up */ if ((USec - (MSec * ACPI_USEC_PER_MSEC)) >= 500) { MSec++; } DbgPrint (ASL_DEBUG_OUTPUT, "%8u usec %8u msec - %s\n", USec, MSec, Event->EventName); if (Gbl_CompileTimesFlag) { printf ("%8u usec %8u msec - %s\n", USec, MSec, Event->EventName); } } Event++; } } /******************************************************************************* * * FUNCTION: CmCleanupAndExit * * PARAMETERS: None * * RETURN: None. * * DESCRIPTION: Close all open files and exit the compiler * ******************************************************************************/ void CmCleanupAndExit ( void) { UINT32 i; BOOLEAN DeleteAmlFile = FALSE; AePrintErrorLog (ASL_FILE_STDERR); if (Gbl_DebugFlag) { /* Print error summary to stdout also */ AePrintErrorLog (ASL_FILE_STDOUT); } /* Emit compile times if enabled */ CmDumpAllEvents (); if (Gbl_CompileTimesFlag) { printf ("\nMiscellaneous compile statistics\n\n"); printf ("%11u : %s\n", TotalParseNodes, "Parse nodes"); printf ("%11u : %s\n", Gbl_NsLookupCount, "Namespace searches"); printf ("%11u : %s\n", TotalNamedObjects, "Named objects"); printf ("%11u : %s\n", TotalMethods, "Control methods"); printf ("%11u : %s\n", TotalAllocations, "Memory Allocations"); printf ("%11u : %s\n", TotalAllocated, "Total allocated memory"); printf ("%11u : %s\n", TotalFolds, "Constant subtrees folded"); printf ("\n"); } if (Gbl_NsLookupCount) { DbgPrint (ASL_DEBUG_OUTPUT, "\n\nMiscellaneous compile statistics\n\n"); DbgPrint (ASL_DEBUG_OUTPUT, "%32s : %u\n", "Total Namespace searches", Gbl_NsLookupCount); DbgPrint (ASL_DEBUG_OUTPUT, "%32s : %u usec\n", "Time per search", ((UINT32) (AslGbl_Events[AslGbl_NamespaceEvent].EndTime - AslGbl_Events[AslGbl_NamespaceEvent].StartTime) / 10) / Gbl_NsLookupCount); } if (Gbl_ExceptionCount[ASL_ERROR] > ASL_MAX_ERROR_COUNT) { printf ("\nMaximum error count (%u) exceeded\n", ASL_MAX_ERROR_COUNT); } UtDisplaySummary (ASL_FILE_STDOUT); /* * We will delete the AML file if there are errors and the * force AML output option has not been used. */ if ((Gbl_ExceptionCount[ASL_ERROR] > 0) && (!Gbl_IgnoreErrors) && Gbl_Files[ASL_FILE_AML_OUTPUT].Handle) { DeleteAmlFile = TRUE; } /* Close all open files */ /* * Take care with the preprocessor file (.i), it might be the same * as the "input" file, depending on where the compiler has terminated * or aborted. Prevent attempt to close the same file twice in * loop below. */ if (Gbl_Files[ASL_FILE_PREPROCESSOR].Handle == Gbl_Files[ASL_FILE_INPUT].Handle) { Gbl_Files[ASL_FILE_PREPROCESSOR].Handle = NULL; } /* Close the standard I/O files */ for (i = ASL_FILE_INPUT; i < ASL_MAX_FILE_TYPE; i++) { FlCloseFile (i); } /* Delete AML file if there are errors */ if (DeleteAmlFile) { FlDeleteFile (ASL_FILE_AML_OUTPUT); } /* Delete the preprocessor output file (.i) unless -li flag is set */ if (!Gbl_PreprocessorOutputFlag && Gbl_PreprocessFlag) { FlDeleteFile (ASL_FILE_PREPROCESSOR); } /* * Delete intermediate ("combined") source file (if -ls flag not set) * This file is created during normal ASL/AML compiles. It is not * created by the data table compiler. * * If the -ls flag is set, then the .SRC file should not be deleted. * In this case, Gbl_SourceOutputFlag is set to TRUE. * * Note: Handles are cleared by FlCloseFile above, so we look at the * filename instead, to determine if the .SRC file was actually * created. * * TBD: SourceOutput should be .TMP, then rename if we want to keep it? */ if (!Gbl_SourceOutputFlag) { FlDeleteFile (ASL_FILE_SOURCE_OUTPUT); } } src/acpica/source/compiler/aslcompiler.h000066400000000000000000000727751231470457100207100ustar00rootroot00000000000000/****************************************************************************** * * Module Name: aslcompiler.h - common include file for iASL * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #ifndef __ASLCOMPILER_H #define __ASLCOMPILER_H #include "acpi.h" #include "accommon.h" #include "amlresrc.h" #include "acdebug.h" /* Microsoft-specific */ #if (defined WIN32 || defined WIN64) /* warn : used #pragma pack */ #pragma warning(disable:4103) /* warn : named type definition in parentheses */ #pragma warning(disable:4115) #endif #include #include #include #include #include #include /* Compiler headers */ #include "asldefine.h" #include "asltypes.h" #include "aslmessages.h" #include "aslglobal.h" #include "preprocess.h" /******************************************************************************* * * Compiler prototypes * ******************************************************************************/ /* * Main ASL parser - generated from flex/bison, lex/yacc, etc. */ ACPI_PARSE_OBJECT * AslDoError ( void); int AslCompilerlex( void); void AslResetCurrentLineBuffer ( void); void AslInsertLineBuffer ( int SourceChar); int AslPopInputFileStack ( void); void AslPushInputFileStack ( FILE *InputFile, char *Filename); /* * aslstartup - entered from main() */ void AslInitializeGlobals ( void); typedef ACPI_STATUS (*ASL_PATHNAME_CALLBACK) ( char *); ACPI_STATUS AslDoOneFile ( char *Filename); ACPI_STATUS AslCheckForErrorExit ( void); /* * aslcompile - compile mainline */ void AslCompilerSignon ( UINT32 FileId); void AslCompilerFileHeader ( UINT32 FileId); int CmDoCompile ( void); void CmDoOutputFiles ( void); void CmCleanupAndExit ( void); ACPI_STATUS FlCheckForAcpiTable ( FILE *Handle); ACPI_STATUS FlCheckForAscii ( FILE *Handle, char *Filename, BOOLEAN DisplayErrors); /* * aslwalks - semantic analysis and parse tree walks */ ACPI_STATUS AnOtherSemanticAnalysisWalkBegin ( ACPI_PARSE_OBJECT *Op, UINT32 Level, void *Context); ACPI_STATUS AnOtherSemanticAnalysisWalkEnd ( ACPI_PARSE_OBJECT *Op, UINT32 Level, void *Context); ACPI_STATUS AnOperandTypecheckWalkEnd ( ACPI_PARSE_OBJECT *Op, UINT32 Level, void *Context); ACPI_STATUS AnMethodTypingWalkEnd ( ACPI_PARSE_OBJECT *Op, UINT32 Level, void *Context); /* * aslmethod - Control method analysis walk */ ACPI_STATUS MtMethodAnalysisWalkBegin ( ACPI_PARSE_OBJECT *Op, UINT32 Level, void *Context); ACPI_STATUS MtMethodAnalysisWalkEnd ( ACPI_PARSE_OBJECT *Op, UINT32 Level, void *Context); /* * aslbtypes - bitfield data types */ UINT32 AnMapObjTypeToBtype ( ACPI_PARSE_OBJECT *Op); UINT32 AnMapArgTypeToBtype ( UINT32 ArgType); UINT32 AnGetBtype ( ACPI_PARSE_OBJECT *Op); void AnFormatBtype ( char *Buffer, UINT32 Btype); /* * aslanalyze - Support functions for parse tree walks */ void AnCheckId ( ACPI_PARSE_OBJECT *Op, ACPI_NAME Type); /* Values for Type argument above */ #define ASL_TYPE_HID 0 #define ASL_TYPE_CID 1 BOOLEAN AnIsInternalMethod ( ACPI_PARSE_OBJECT *Op); UINT32 AnGetInternalMethodReturnType ( ACPI_PARSE_OBJECT *Op); BOOLEAN AnLastStatementIsReturn ( ACPI_PARSE_OBJECT *Op); void AnCheckMethodReturnValue ( ACPI_PARSE_OBJECT *Op, const ACPI_OPCODE_INFO *OpInfo, ACPI_PARSE_OBJECT *ArgOp, UINT32 RequiredBtypes, UINT32 ThisNodeBtype); BOOLEAN AnIsResultUsed ( ACPI_PARSE_OBJECT *Op); void ApCheckForGpeNameConflict ( ACPI_PARSE_OBJECT *Op); void ApCheckRegMethod ( ACPI_PARSE_OBJECT *Op); /* * aslerror - error handling/reporting */ void AslAbort ( void); void AslError ( UINT8 Level, UINT8 MessageId, ACPI_PARSE_OBJECT *Op, char *ExtraMessage); ACPI_STATUS AslDisableException ( char *MessageIdString); BOOLEAN AslIsExceptionDisabled ( UINT8 Level, UINT8 MessageId); void AslCoreSubsystemError ( ACPI_PARSE_OBJECT *Op, ACPI_STATUS Status, char *ExtraMessage, BOOLEAN Abort); int AslCompilererror( const char *s); void AslCommonError ( UINT8 Level, UINT8 MessageId, UINT32 CurrentLineNumber, UINT32 LogicalLineNumber, UINT32 LogicalByteOffset, UINT32 Column, char *Filename, char *ExtraMessage); void AslCommonError2 ( UINT8 Level, UINT8 MessageId, UINT32 LineNumber, UINT32 Column, char *SourceLine, char *Filename, char *ExtraMessage); void AePrintException ( UINT32 FileId, ASL_ERROR_MSG *Enode, char *Header); void AePrintErrorLog ( UINT32 FileId); void AeClearErrorLog ( void); ACPI_PHYSICAL_ADDRESS AeLocalGetRootPointer ( void); /* * asllisting - generate all "listing" type files */ void LsDoListings ( void); void LsWriteNodeToAsmListing ( ACPI_PARSE_OBJECT *Op); void LsWriteNode ( ACPI_PARSE_OBJECT *Op, UINT32 FileId); void LsDumpParseTree ( void); /* * asllistsup - Listing file support utilities */ void LsDumpAscii ( UINT32 FileId, UINT32 Count, UINT8 *Buffer); void LsDumpAsciiInComment ( UINT32 FileId, UINT32 Count, UINT8 *Buffer); void LsCheckException ( UINT32 LineNumber, UINT32 FileId); void LsFlushListingBuffer ( UINT32 FileId); void LsWriteListingHexBytes ( UINT8 *Buffer, UINT32 Length, UINT32 FileId); void LsWriteSourceLines ( UINT32 ToLineNumber, UINT32 ToLogicalLineNumber, UINT32 FileId); UINT32 LsWriteOneSourceLine ( UINT32 FileId); void LsPushNode ( char *Filename); ASL_LISTING_NODE * LsPopNode ( void); /* * aslhex - generate all "hex" output files (C, ASM, ASL) */ void HxDoHexOutput ( void); /* * aslfold - constant folding */ ACPI_STATUS OpcAmlConstantWalk ( ACPI_PARSE_OBJECT *Op, UINT32 Level, void *Context); /* * asloffset - generate C offset file for BIOS support */ ACPI_STATUS LsAmlOffsetWalk ( ACPI_PARSE_OBJECT *Op, UINT32 Level, void *Context); void LsDoOffsetTableHeader ( UINT32 FileId); void LsDoOffsetTableFooter ( UINT32 FileId); /* * aslopcodes - generate AML opcodes */ ACPI_STATUS OpcAmlOpcodeWalk ( ACPI_PARSE_OBJECT *Op, UINT32 Level, void *Context); ACPI_STATUS OpcAmlOpcodeUpdateWalk ( ACPI_PARSE_OBJECT *Op, UINT32 Level, void *Context); void OpcGenerateAmlOpcode ( ACPI_PARSE_OBJECT *Op); UINT32 OpcSetOptimalIntegerSize ( ACPI_PARSE_OBJECT *Op); void OpcGetIntegerWidth ( ACPI_PARSE_OBJECT *Op); /* * asloperands - generate AML operands for the AML opcodes */ ACPI_PARSE_OBJECT * UtGetArg ( ACPI_PARSE_OBJECT *Op, UINT32 Argn); void OpnGenerateAmlOperands ( ACPI_PARSE_OBJECT *Op); void OpnDoPackage ( ACPI_PARSE_OBJECT *Op); /* * aslopt - optmization */ void OptOptimizeNamePath ( ACPI_PARSE_OBJECT *Op, UINT32 Flags, ACPI_WALK_STATE *WalkState, char *AmlNameString, ACPI_NAMESPACE_NODE *TargetNode); /* * aslcodegen - code generation */ void CgGenerateAmlOutput ( void); /* * aslfile */ void FlOpenFile ( UINT32 FileId, char *Filename, char *Mode); /* * asllength - calculate/adjust AML package lengths */ ACPI_STATUS LnPackageLengthWalk ( ACPI_PARSE_OBJECT *Op, UINT32 Level, void *Context); ACPI_STATUS LnInitLengthsWalk ( ACPI_PARSE_OBJECT *Op, UINT32 Level, void *Context); void CgGenerateAmlLengths ( ACPI_PARSE_OBJECT *Op); /* * aslmap - opcode mappings and reserved method names */ ACPI_OBJECT_TYPE AslMapNamedOpcodeToDataType ( UINT16 Opcode); /* * aslpredef - ACPI predefined names support */ BOOLEAN 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, char *Name); void ApCheckForPredefinedObject ( ACPI_PARSE_OBJECT *Op, char *Name); ACPI_STATUS ApCheckObjectType ( const char *PredefinedName, ACPI_PARSE_OBJECT *Op, UINT32 ExpectedBtypes, UINT32 PackageIndex); void ApDisplayReservedNames ( void); /* * aslprepkg - ACPI predefined names support for packages */ void ApCheckPackage ( ACPI_PARSE_OBJECT *ParentOp, const ACPI_PREDEFINED_INFO *Predefined); /* * asltransform - parse tree transformations */ ACPI_STATUS TrAmlTransformWalk ( ACPI_PARSE_OBJECT *Op, UINT32 Level, void *Context); /* * asltree - parse tree support */ ACPI_STATUS TrWalkParseTree ( ACPI_PARSE_OBJECT *Op, UINT32 Visitation, ASL_WALK_CALLBACK DescendingCallback, ASL_WALK_CALLBACK AscendingCallback, void *Context); /* Values for "Visitation" parameter above */ #define ASL_WALK_VISIT_DOWNWARD 0x01 #define ASL_WALK_VISIT_UPWARD 0x02 #define ASL_WALK_VISIT_TWICE (ASL_WALK_VISIT_DOWNWARD | ASL_WALK_VISIT_UPWARD) ACPI_PARSE_OBJECT * TrAllocateNode ( UINT32 ParseOpcode); void TrReleaseNode ( ACPI_PARSE_OBJECT *Op); ACPI_PARSE_OBJECT * TrUpdateNode ( UINT32 ParseOpcode, ACPI_PARSE_OBJECT *Op); ACPI_PARSE_OBJECT * TrCreateNode ( UINT32 ParseOpcode, UINT32 NumChildren, ...); ACPI_PARSE_OBJECT * TrCreateLeafNode ( UINT32 ParseOpcode); ACPI_PARSE_OBJECT * TrCreateValuedLeafNode ( UINT32 ParseOpcode, UINT64 Value); ACPI_PARSE_OBJECT * TrCreateConstantLeafNode ( UINT32 ParseOpcode); ACPI_PARSE_OBJECT * TrLinkChildren ( ACPI_PARSE_OBJECT *Op, UINT32 NumChildren, ...); void TrSetEndLineNumber ( ACPI_PARSE_OBJECT *Op); void TrWalkTree ( void); ACPI_PARSE_OBJECT * TrLinkPeerNode ( ACPI_PARSE_OBJECT *Op1, ACPI_PARSE_OBJECT *Op2); ACPI_PARSE_OBJECT * TrLinkChildNode ( ACPI_PARSE_OBJECT *Op1, ACPI_PARSE_OBJECT *Op2); ACPI_PARSE_OBJECT * TrSetNodeFlags ( ACPI_PARSE_OBJECT *Op, UINT32 Flags); ACPI_PARSE_OBJECT * TrSetNodeAmlLength ( ACPI_PARSE_OBJECT *Op, UINT32 Length); ACPI_PARSE_OBJECT * TrLinkPeerNodes ( UINT32 NumPeers, ...); /* * aslfiles - File I/O support */ void FlAddIncludeDirectory ( char *Dir); char * FlMergePathnames ( char *PrefixDir, char *FilePathname); void FlOpenIncludeFile ( ACPI_PARSE_OBJECT *Op); void FlFileError ( UINT32 FileId, UINT8 ErrorId); UINT32 FlGetFileSize ( UINT32 FileId); ACPI_STATUS FlReadFile ( UINT32 FileId, void *Buffer, UINT32 Length); void FlWriteFile ( UINT32 FileId, void *Buffer, UINT32 Length); void FlSeekFile ( UINT32 FileId, long Offset); void FlCloseFile ( UINT32 FileId); void FlPrintFile ( UINT32 FileId, char *Format, ...); void FlDeleteFile ( UINT32 FileId); void FlSetLineNumber ( UINT32 LineNumber); void FlSetFilename ( char *Filename); ACPI_STATUS FlOpenInputFile ( char *InputFilename); ACPI_STATUS FlOpenAmlOutputFile ( char *InputFilename); ACPI_STATUS FlOpenMiscOutputFiles ( char *InputFilename); /* * asload - load namespace in prep for cross reference */ ACPI_STATUS LdLoadNamespace ( ACPI_PARSE_OBJECT *RootOp); /* * asllookup - namespace lookup functions */ void LkFindUnreferencedObjects ( void); /* * aslmain - startup */ void Usage ( void); void AslFilenameHelp ( void); /* * aslnamesp - namespace output file generation */ ACPI_STATUS NsDisplayNamespace ( void); void NsSetupNamespaceListing ( void *Handle); /* * asloptions - command line processing */ int AslCommandLine ( int argc, char **argv); /* * aslxref - namespace cross reference */ ACPI_STATUS XfCrossReferenceNamespace ( void); /* * aslutils - common compiler utilites */ void DbgPrint ( UINT32 Type, char *Format, ...); /* Type values for above */ #define ASL_DEBUG_OUTPUT 0 #define ASL_PARSE_OUTPUT 1 #define ASL_TREE_OUTPUT 2 void UtDisplaySupportedTables ( void); void UtDisplayConstantOpcodes ( void); UINT8 UtBeginEvent ( char *Name); void UtEndEvent ( UINT8 Event); void * UtLocalCalloc ( UINT32 Size); void UtPrintFormattedName ( UINT16 ParseOpcode, UINT32 Level); void UtDisplaySummary ( UINT32 FileId); UINT8 UtHexCharToValue ( int HexChar); void UtConvertByteToHex ( UINT8 RawByte, UINT8 *Buffer); void UtConvertByteToAsmHex ( UINT8 RawByte, UINT8 *Buffer); char * UtGetOpName ( UINT32 ParseOpcode); void UtSetParseOpName ( ACPI_PARSE_OBJECT *Op); char * UtGetStringBuffer ( UINT32 Length); void UtExpandLineBuffers ( void); ACPI_STATUS UtInternalizeName ( char *ExternalName, char **ConvertedName); void UtAttachNamepathToOwner ( ACPI_PARSE_OBJECT *Op, ACPI_PARSE_OBJECT *NameNode); ACPI_PARSE_OBJECT * UtCheckIntegerRange ( ACPI_PARSE_OBJECT *Op, UINT32 LowValue, UINT32 HighValue); UINT64 UtDoConstant ( char *String); ACPI_STATUS UtStrtoul64 ( char *String, UINT32 Base, UINT64 *RetInteger); /* * asluuid - UUID support */ ACPI_STATUS AuValidateUuid ( char *InString); ACPI_STATUS AuConvertStringToUuid ( char *InString, char *UuIdBuffer); ACPI_STATUS AuConvertUuidToString ( char *UuIdBuffer, char *OutString); /* * aslresource - Resource template generation utilities */ void RsSmallAddressCheck ( UINT8 Type, UINT32 Minimum, UINT32 Maximum, UINT32 Length, UINT32 Alignment, ACPI_PARSE_OBJECT *MinOp, ACPI_PARSE_OBJECT *MaxOp, ACPI_PARSE_OBJECT *LengthOp, ACPI_PARSE_OBJECT *AlignOp, ACPI_PARSE_OBJECT *Op); void RsLargeAddressCheck ( UINT64 Minimum, UINT64 Maximum, UINT64 Length, UINT64 Granularity, UINT8 Flags, ACPI_PARSE_OBJECT *MinOp, ACPI_PARSE_OBJECT *MaxOp, ACPI_PARSE_OBJECT *LengthOp, ACPI_PARSE_OBJECT *GranOp, ACPI_PARSE_OBJECT *Op); UINT16 RsGetStringDataLength ( ACPI_PARSE_OBJECT *InitializerOp); ASL_RESOURCE_NODE * RsAllocateResourceNode ( UINT32 Size); void RsCreateResourceField ( ACPI_PARSE_OBJECT *Op, char *Name, UINT32 ByteOffset, UINT32 BitOffset, UINT32 BitLength); void RsSetFlagBits ( UINT8 *Flags, ACPI_PARSE_OBJECT *Op, UINT8 Position, UINT8 DefaultBit); void RsSetFlagBits16 ( UINT16 *Flags, ACPI_PARSE_OBJECT *Op, UINT8 Position, UINT8 DefaultBit); ACPI_PARSE_OBJECT * RsCompleteNodeAndGetNext ( ACPI_PARSE_OBJECT *Op); void RsCheckListForDuplicates ( ACPI_PARSE_OBJECT *Op); ASL_RESOURCE_NODE * RsDoOneResourceDescriptor ( ACPI_PARSE_OBJECT *DescriptorTypeOp, UINT32 CurrentByteOffset, UINT8 *State); /* Values for State above */ #define ACPI_RSTATE_NORMAL 0 #define ACPI_RSTATE_START_DEPENDENT 1 #define ACPI_RSTATE_DEPENDENT_LIST 2 UINT32 RsLinkDescriptorChain ( ASL_RESOURCE_NODE **PreviousRnode, ASL_RESOURCE_NODE *Rnode); void RsDoResourceTemplate ( ACPI_PARSE_OBJECT *Op); /* * aslrestype1 - Miscellaneous Small descriptors */ ASL_RESOURCE_NODE * RsDoEndTagDescriptor ( ACPI_PARSE_OBJECT *Op, UINT32 CurrentByteOffset); ASL_RESOURCE_NODE * RsDoEndDependentDescriptor ( ACPI_PARSE_OBJECT *Op, UINT32 CurrentByteOffset); ASL_RESOURCE_NODE * RsDoMemory24Descriptor ( ACPI_PARSE_OBJECT *Op, UINT32 CurrentByteOffset); ASL_RESOURCE_NODE * RsDoMemory32Descriptor ( ACPI_PARSE_OBJECT *Op, UINT32 CurrentByteOffset); ASL_RESOURCE_NODE * RsDoMemory32FixedDescriptor ( ACPI_PARSE_OBJECT *Op, UINT32 CurrentByteOffset); ASL_RESOURCE_NODE * RsDoStartDependentDescriptor ( ACPI_PARSE_OBJECT *Op, UINT32 CurrentByteOffset); ASL_RESOURCE_NODE * RsDoStartDependentNoPriDescriptor ( ACPI_PARSE_OBJECT *Op, UINT32 CurrentByteOffset); ASL_RESOURCE_NODE * RsDoVendorSmallDescriptor ( ACPI_PARSE_OBJECT *Op, UINT32 CurrentByteOffset); /* * aslrestype1i - I/O-related Small descriptors */ ASL_RESOURCE_NODE * RsDoDmaDescriptor ( ACPI_PARSE_OBJECT *Op, UINT32 CurrentByteOffset); ASL_RESOURCE_NODE * RsDoFixedDmaDescriptor ( ACPI_PARSE_OBJECT *Op, UINT32 CurrentByteOffset); ASL_RESOURCE_NODE * RsDoFixedIoDescriptor ( ACPI_PARSE_OBJECT *Op, UINT32 CurrentByteOffset); ASL_RESOURCE_NODE * RsDoIoDescriptor ( ACPI_PARSE_OBJECT *Op, UINT32 CurrentByteOffset); ASL_RESOURCE_NODE * RsDoIrqDescriptor ( ACPI_PARSE_OBJECT *Op, UINT32 CurrentByteOffset); ASL_RESOURCE_NODE * RsDoIrqNoFlagsDescriptor ( ACPI_PARSE_OBJECT *Op, UINT32 CurrentByteOffset); /* * aslrestype2 - Large resource descriptors */ ASL_RESOURCE_NODE * RsDoInterruptDescriptor ( ACPI_PARSE_OBJECT *Op, UINT32 CurrentByteOffset); ASL_RESOURCE_NODE * RsDoVendorLargeDescriptor ( ACPI_PARSE_OBJECT *Op, UINT32 CurrentByteOffset); ASL_RESOURCE_NODE * RsDoGeneralRegisterDescriptor ( ACPI_PARSE_OBJECT *Op, UINT32 CurrentByteOffset); ASL_RESOURCE_NODE * RsDoGpioIntDescriptor ( ACPI_PARSE_OBJECT *Op, UINT32 CurrentByteOffset); ASL_RESOURCE_NODE * RsDoGpioIoDescriptor ( ACPI_PARSE_OBJECT *Op, UINT32 CurrentByteOffset); ASL_RESOURCE_NODE * RsDoI2cSerialBusDescriptor ( ACPI_PARSE_OBJECT *Op, UINT32 CurrentByteOffset); ASL_RESOURCE_NODE * RsDoSpiSerialBusDescriptor ( ACPI_PARSE_OBJECT *Op, UINT32 CurrentByteOffset); ASL_RESOURCE_NODE * RsDoUartSerialBusDescriptor ( ACPI_PARSE_OBJECT *Op, UINT32 CurrentByteOffset); /* * aslrestype2d - DWord address descriptors */ ASL_RESOURCE_NODE * RsDoDwordIoDescriptor ( ACPI_PARSE_OBJECT *Op, UINT32 CurrentByteOffset); ASL_RESOURCE_NODE * RsDoDwordMemoryDescriptor ( ACPI_PARSE_OBJECT *Op, UINT32 CurrentByteOffset); ASL_RESOURCE_NODE * RsDoDwordSpaceDescriptor ( ACPI_PARSE_OBJECT *Op, UINT32 CurrentByteOffset); /* * aslrestype2e - Extended address descriptors */ ASL_RESOURCE_NODE * RsDoExtendedIoDescriptor ( ACPI_PARSE_OBJECT *Op, UINT32 CurrentByteOffset); ASL_RESOURCE_NODE * RsDoExtendedMemoryDescriptor ( ACPI_PARSE_OBJECT *Op, UINT32 CurrentByteOffset); ASL_RESOURCE_NODE * RsDoExtendedSpaceDescriptor ( ACPI_PARSE_OBJECT *Op, UINT32 CurrentByteOffset); /* * aslrestype2q - QWord address descriptors */ ASL_RESOURCE_NODE * RsDoQwordIoDescriptor ( ACPI_PARSE_OBJECT *Op, UINT32 CurrentByteOffset); ASL_RESOURCE_NODE * RsDoQwordMemoryDescriptor ( ACPI_PARSE_OBJECT *Op, UINT32 CurrentByteOffset); ASL_RESOURCE_NODE * RsDoQwordSpaceDescriptor ( ACPI_PARSE_OBJECT *Op, UINT32 CurrentByteOffset); /* * aslrestype2w - Word address descriptors */ ASL_RESOURCE_NODE * RsDoWordIoDescriptor ( ACPI_PARSE_OBJECT *Op, UINT32 CurrentByteOffset); ASL_RESOURCE_NODE * RsDoWordSpaceDescriptor ( ACPI_PARSE_OBJECT *Op, UINT32 CurrentByteOffset); ASL_RESOURCE_NODE * RsDoWordBusNumberDescriptor ( ACPI_PARSE_OBJECT *Op, UINT32 CurrentByteOffset); /* * Entry to data table compiler subsystem */ ACPI_STATUS DtDoCompile( void); ACPI_STATUS DtCreateTemplates ( char *Signature); #endif /* __ASLCOMPILER_H */ src/acpica/source/compiler/aslcompiler.l000066400000000000000000001120311231470457100206700ustar00rootroot00000000000000%{ /****************************************************************************** * * Module Name: aslcompiler.l - Flex/lex input file * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #include "aslcompiler.h" #include "aslcompiler.y.h" #include #include YYSTYPE AslCompilerlval; /* * Generation: Use the following command line: * * flex.exe -PAslCompiler -i -o$(InputPath).c $(InputPath) * * -i: Scanner must be case-insensitive */ #define _COMPONENT ACPI_COMPILER ACPI_MODULE_NAME ("aslscanner") /* Local prototypes */ static void AslDoLineDirective (void); static char AslDoComment (void); static char AslDoCommentType2 (void); static char AslDoStringLiteral (void); static void count (int type); /*! [Begin] no source code translation */ %} /* Definitions */ LeadNameChar [A-Za-z_] DigitChar [0-9] HexDigitChar [A-Fa-f0-9] RootChar [\\] Nothing [] NameChar [A-Za-z_0-9] NameSeg1 {LeadNameChar}{NameChar} NameSeg2 {LeadNameChar}{NameChar}{NameChar} NameSeg3 {LeadNameChar}{NameChar}{NameChar}{NameChar} NameSeg {LeadNameChar}|{NameSeg1}|{NameSeg2}|{NameSeg3} NameString {RootChar}|{RootChar}{NamePath}|[\^]+{NamePath}|{NonEmptyNamePath} NamePath {NonEmptyNamePath}? NonEmptyNamePath {NameSeg}{NamePathTail}* NamePathTail [.]{NameSeg} %% /* Rules */ [ ] { count (0); } [\n] { count (0); } /* Handle files with both LF and CR/LF */ [\r] { count (0); } /* termination on both Unix and Windows */ [ \t] { count (0); } "/*" { if (!AslDoComment ()) yyterminate (); } "//" { if (!AslDoCommentType2 ()) yyterminate (); } "\"" { if (AslDoStringLiteral ()) return (PARSEOP_STRING_LITERAL); else yyterminate (); } ";" { count (0); return(';'); } 0[xX]{HexDigitChar}+ | {DigitChar}+ { AslCompilerlval.i = UtDoConstant ((char *) AslCompilertext); count (1); return (PARSEOP_INTEGER); } "Include" { count (1); return (PARSEOP_INCLUDE); } "External" { count (1); return (PARSEOP_EXTERNAL); } /* * The #line directive is emitted by the preprocessor and handled * here in the main iASL lexer - simply set the line number and * optionally the current filename. */ "#line" { AslDoLineDirective ();} /**************************************************************************** * * Main ASL operators * ****************************************************************************/ "AccessAs" { count (1); return (PARSEOP_ACCESSAS); } "Acquire" { count (3); return (PARSEOP_ACQUIRE); } "Add" { count (3); return (PARSEOP_ADD); } "Alias" { count (2); return (PARSEOP_ALIAS); } "And" { count (3); return (PARSEOP_AND); } "BankField" { count (2); return (PARSEOP_BANKFIELD); } "Break" { count (3); return (PARSEOP_BREAK); } "BreakPoint" { count (3); return (PARSEOP_BREAKPOINT); } "Buffer" { count (1); return (PARSEOP_BUFFER); } "Case" { count (3); return (PARSEOP_CASE); } "Concatenate" { count (3); return (PARSEOP_CONCATENATE); } "ConcatenateResTemplate" { count (3); return (PARSEOP_CONCATENATERESTEMPLATE); } "CondRefOf" { count (3); return (PARSEOP_CONDREFOF); } "Connection" { count (2); return (PARSEOP_CONNECTION); } "Continue" { count (3); return (PARSEOP_CONTINUE); } "CopyObject" { count (3); return (PARSEOP_COPYOBJECT); } "CreateBitField" { count (2); return (PARSEOP_CREATEBITFIELD); } "CreateByteField" { count (2); return (PARSEOP_CREATEBYTEFIELD); } "CreateDWordField" { count (2); return (PARSEOP_CREATEDWORDFIELD); } "CreateField" { count (2); return (PARSEOP_CREATEFIELD); } "CreateQWordField" { count (2); return (PARSEOP_CREATEQWORDFIELD); } "CreateWordField" { count (2); return (PARSEOP_CREATEWORDFIELD); } "DataTableRegion" { count (2); return (PARSEOP_DATATABLEREGION); } "Debug" { count (1); return (PARSEOP_DEBUG); } "Decrement" { count (3); return (PARSEOP_DECREMENT); } "Default" { count (3); return (PARSEOP_DEFAULT); } "DefinitionBlock" { count (1); return (PARSEOP_DEFINITIONBLOCK); } "DeRefOf" { count (3); return (PARSEOP_DEREFOF); } "Device" { count (2); return (PARSEOP_DEVICE); } "Divide" { count (3); return (PARSEOP_DIVIDE); } "Eisaid" { count (1); return (PARSEOP_EISAID); } "Else" { count (3); return (PARSEOP_ELSE); } "ElseIf" { count (3); return (PARSEOP_ELSEIF); } "Event" { count (2); return (PARSEOP_EVENT); } "Fatal" { count (3); return (PARSEOP_FATAL); } "Field" { count (2); return (PARSEOP_FIELD); } "FindSetLeftBit" { count (3); return (PARSEOP_FINDSETLEFTBIT); } "FindSetRightBit" { count (3); return (PARSEOP_FINDSETRIGHTBIT); } "FromBcd" { count (3); return (PARSEOP_FROMBCD); } "Function" { count (2); return (PARSEOP_FUNCTION); } "If" { count (3); return (PARSEOP_IF); } "Increment" { count (3); return (PARSEOP_INCREMENT); } "Index" { count (3); return (PARSEOP_INDEX); } "IndexField" { count (2); return (PARSEOP_INDEXFIELD); } "LAnd" { count (3); return (PARSEOP_LAND); } "LEqual" { count (3); return (PARSEOP_LEQUAL); } "LGreater" { count (3); return (PARSEOP_LGREATER); } "LGreaterEqual" { count (3); return (PARSEOP_LGREATEREQUAL); } "LLess" { count (3); return (PARSEOP_LLESS); } "LLessEqual" { count (3); return (PARSEOP_LLESSEQUAL); } "LNot" { count (3); return (PARSEOP_LNOT); } "LNotEqual" { count (3); return (PARSEOP_LNOTEQUAL); } "Load" { count (3); return (PARSEOP_LOAD); } "LoadTable" { count (3); return (PARSEOP_LOADTABLE); } "LOr" { count (3); return (PARSEOP_LOR); } "Match" { count (3); return (PARSEOP_MATCH); } "Method" { count (2); return (PARSEOP_METHOD); } "Mid" { count (3); return (PARSEOP_MID); } "Mod" { count (3); return (PARSEOP_MOD); } "Multiply" { count (3); return (PARSEOP_MULTIPLY); } "Mutex" { count (2); return (PARSEOP_MUTEX); } "Name" { count (2); return (PARSEOP_NAME); } "NAnd" { count (3); return (PARSEOP_NAND); } "Noop" { if (!AcpiGbl_IgnoreNoopOperator) {count (3); return (PARSEOP_NOOP);} } "NOr" { count (3); return (PARSEOP_NOR); } "Not" { count (3); return (PARSEOP_NOT); } "Notify" { count (3); return (PARSEOP_NOTIFY); } "ObjectType" { count (3); return (PARSEOP_OBJECTTYPE); } "Offset" { count (1); return (PARSEOP_OFFSET); } "One" { count (1); return (PARSEOP_ONE); } "Ones" { count (1); return (PARSEOP_ONES); } "OperationRegion" { count (2); return (PARSEOP_OPERATIONREGION); } "Or" { count (3); return (PARSEOP_OR); } "Package" { count (1); return (PARSEOP_PACKAGE); } "PowerResource" { count (2); return (PARSEOP_POWERRESOURCE); } "Processor" { count (2); return (PARSEOP_PROCESSOR); } "RefOf" { count (3); return (PARSEOP_REFOF); } "Release" { count (3); return (PARSEOP_RELEASE); } "Reset" { count (3); return (PARSEOP_RESET); } "Return" { count (3); return (PARSEOP_RETURN); } "Revision" { count (1); return (PARSEOP_REVISION); } "Scope" { count (2); return (PARSEOP_SCOPE); } "ShiftLeft" { count (3); return (PARSEOP_SHIFTLEFT); } "ShiftRight" { count (3); return (PARSEOP_SHIFTRIGHT); } "Signal" { count (3); return (PARSEOP_SIGNAL); } "SizeOf" { count (3); return (PARSEOP_SIZEOF); } "Sleep" { count (3); return (PARSEOP_SLEEP); } "Stall" { count (3); return (PARSEOP_STALL); } "Store" { count (3); return (PARSEOP_STORE); } "Subtract" { count (3); return (PARSEOP_SUBTRACT); } "Switch" { count (3); return (PARSEOP_SWITCH); } "ThermalZone" { count (2); return (PARSEOP_THERMALZONE); } "Timer" { count (3); return (PARSEOP_TIMER); } "ToBcd" { count (3); return (PARSEOP_TOBCD); } "ToBuffer" { count (3); return (PARSEOP_TOBUFFER); } "ToDecimalString" { count (3); return (PARSEOP_TODECIMALSTRING); } "ToHexString" { count (3); return (PARSEOP_TOHEXSTRING); } "ToInteger" { count (3); return (PARSEOP_TOINTEGER); } "ToString" { count (3); return (PARSEOP_TOSTRING); } "ToUuid" { count (1); return (PARSEOP_TOUUID); } "Unicode" { count (1); return (PARSEOP_UNICODE); } "Unload" { count (3); return (PARSEOP_UNLOAD); } "Wait" { count (3); return (PARSEOP_WAIT); } "While" { count (3); return (PARSEOP_WHILE); } "XOr" { count (3); return (PARSEOP_XOR); } "Zero" { count (1); return (PARSEOP_ZERO); } /* Control method arguments and locals */ "Arg0" { count (1); return (PARSEOP_ARG0); } "Arg1" { count (1); return (PARSEOP_ARG1); } "Arg2" { count (1); return (PARSEOP_ARG2); } "Arg3" { count (1); return (PARSEOP_ARG3); } "Arg4" { count (1); return (PARSEOP_ARG4); } "Arg5" { count (1); return (PARSEOP_ARG5); } "Arg6" { count (1); return (PARSEOP_ARG6); } "Local0" { count (1); return (PARSEOP_LOCAL0); } "Local1" { count (1); return (PARSEOP_LOCAL1); } "Local2" { count (1); return (PARSEOP_LOCAL2); } "Local3" { count (1); return (PARSEOP_LOCAL3); } "Local4" { count (1); return (PARSEOP_LOCAL4); } "Local5" { count (1); return (PARSEOP_LOCAL5); } "Local6" { count (1); return (PARSEOP_LOCAL6); } "Local7" { count (1); return (PARSEOP_LOCAL7); } /**************************************************************************** * * Resource Descriptor macros * ****************************************************************************/ "ResourceTemplate" { count (1); return (PARSEOP_RESOURCETEMPLATE); } "RawDataBuffer" { count (1); return (PARSEOP_DATABUFFER); } "DMA" { count (1); return (PARSEOP_DMA); } "DWordIO" { count (1); return (PARSEOP_DWORDIO); } "DWordMemory" { count (1); return (PARSEOP_DWORDMEMORY); } "DWordSpace" { count (1); return (PARSEOP_DWORDSPACE); } "EndDependentFn" { count (1); return (PARSEOP_ENDDEPENDENTFN); } "ExtendedIO" { count (1); return (PARSEOP_EXTENDEDIO); } "ExtendedMemory" { count (1); return (PARSEOP_EXTENDEDMEMORY); } "ExtendedSpace" { count (1); return (PARSEOP_EXTENDEDSPACE); } "FixedDma" { count (1); return (PARSEOP_FIXEDDMA); } "FixedIO" { count (1); return (PARSEOP_FIXEDIO); } "GpioInt" { count (1); return (PARSEOP_GPIO_INT); } "GpioIo" { count (1); return (PARSEOP_GPIO_IO); } "I2cSerialBus" { count (1); return (PARSEOP_I2C_SERIALBUS); } "Interrupt" { count (1); return (PARSEOP_INTERRUPT); } "IO" { count (1); return (PARSEOP_IO); } "IRQ" { count (1); return (PARSEOP_IRQ); } "IRQNoFlags" { count (1); return (PARSEOP_IRQNOFLAGS); } "Memory24" { count (1); return (PARSEOP_MEMORY24); } "Memory32" { count (1); return (PARSEOP_MEMORY32); } "Memory32Fixed" { count (1); return (PARSEOP_MEMORY32FIXED); } "QWordIO" { count (1); return (PARSEOP_QWORDIO); } "QWordMemory" { count (1); return (PARSEOP_QWORDMEMORY); } "QWordSpace" { count (1); return (PARSEOP_QWORDSPACE); } "Register" { count (1); return (PARSEOP_REGISTER); } "SpiSerialBus" { count (1); return (PARSEOP_SPI_SERIALBUS); } "StartDependentFn" { count (1); return (PARSEOP_STARTDEPENDENTFN); } "StartDependentFnNoPri" { count (1); return (PARSEOP_STARTDEPENDENTFN_NOPRI); } "UartSerialBus" { count (1); return (PARSEOP_UART_SERIALBUS); } "VendorLong" { count (1); return (PARSEOP_VENDORLONG); } "VendorShort" { count (1); return (PARSEOP_VENDORSHORT); } "WordBusNumber" { count (1); return (PARSEOP_WORDBUSNUMBER); } "WordIO" { count (1); return (PARSEOP_WORDIO); } "WordSpace" { count (1); return (PARSEOP_WORDSPACE); } /**************************************************************************** * * Keywords used as arguments to ASL operators and macros * ****************************************************************************/ /* AccessAttribKeyword: Serial Bus Attributes (ACPI 5.0) */ "AttribQuick" { count (0); return (PARSEOP_ACCESSATTRIB_QUICK); } "AttribSendReceive" { count (0); return (PARSEOP_ACCESSATTRIB_SND_RCV); } "AttribByte" { count (0); return (PARSEOP_ACCESSATTRIB_BYTE); } "AttribWord" { count (0); return (PARSEOP_ACCESSATTRIB_WORD); } "AttribBlock" { count (0); return (PARSEOP_ACCESSATTRIB_BLOCK); } "AttribProcessCall" { count (0); return (PARSEOP_ACCESSATTRIB_WORD_CALL); } "AttribBlockProcessCall" { count (0); return (PARSEOP_ACCESSATTRIB_BLOCK_CALL); } /* AccessAttribKeyword: Legacy synonyms for above (pre-ACPI 5.0) */ "SMBQuick" { count (0); return (PARSEOP_ACCESSATTRIB_QUICK); } "SMBSendReceive" { count (0); return (PARSEOP_ACCESSATTRIB_SND_RCV); } "SMBByte" { count (0); return (PARSEOP_ACCESSATTRIB_BYTE); } "SMBWord" { count (0); return (PARSEOP_ACCESSATTRIB_WORD); } "SMBBlock" { count (0); return (PARSEOP_ACCESSATTRIB_BLOCK); } "SMBProcessCall" { count (0); return (PARSEOP_ACCESSATTRIB_WORD_CALL); } "SMBBlockProcessCall" { count (0); return (PARSEOP_ACCESSATTRIB_BLOCK_CALL); } /* AccessTypeKeyword: Field Access Types */ "AnyAcc" { count (0); return (PARSEOP_ACCESSTYPE_ANY); } "ByteAcc" { count (0); return (PARSEOP_ACCESSTYPE_BYTE); } "WordAcc" { count (0); return (PARSEOP_ACCESSTYPE_WORD); } "DWordAcc" { count (0); return (PARSEOP_ACCESSTYPE_DWORD); } "QWordAcc" { count (0); return (PARSEOP_ACCESSTYPE_QWORD); } "BufferAcc" { count (0); return (PARSEOP_ACCESSTYPE_BUF); } /* AddressingModeKeyword: Mode - Resource Descriptors (ACPI 5.0) */ "AddressingMode7Bit" { count (0); return (PARSEOP_ADDRESSINGMODE_7BIT); } "AddressingMode10Bit" { count (0); return (PARSEOP_ADDRESSINGMODE_10BIT); } /* AddressKeyword: ACPI memory range types */ "AddressRangeMemory" { count (0); return (PARSEOP_ADDRESSTYPE_MEMORY); } "AddressRangeReserved" { count (0); return (PARSEOP_ADDRESSTYPE_RESERVED); } "AddressRangeNVS" { count (0); return (PARSEOP_ADDRESSTYPE_NVS); } "AddressRangeACPI" { count (0); return (PARSEOP_ADDRESSTYPE_ACPI); } /* BusMasterKeyword: DMA Bus Mastering */ "BusMaster" { count (0); return (PARSEOP_BUSMASTERTYPE_MASTER); } "NotBusMaster" { count (0); return (PARSEOP_BUSMASTERTYPE_NOTMASTER); } /* ByteLengthKeyword: Bits per Byte - Resource Descriptors (ACPI 5.0) */ "DataBitsFive" { count (0); return (PARSEOP_BITSPERBYTE_FIVE); } "DataBitsSix" { count (0); return (PARSEOP_BITSPERBYTE_SIX); } "DataBitsSeven" { count (0); return (PARSEOP_BITSPERBYTE_SEVEN); } "DataBitsEight" { count (0); return (PARSEOP_BITSPERBYTE_EIGHT); } "DataBitsNine" { count (0); return (PARSEOP_BITSPERBYTE_NINE); } /* ClockPhaseKeyword: Resource Descriptors (ACPI 5.0) */ "ClockPhaseFirst" { count (0); return (PARSEOP_CLOCKPHASE_FIRST); } "ClockPhaseSecond" { count (0); return (PARSEOP_CLOCKPHASE_SECOND); } /* ClockPolarityKeyword: Resource Descriptors (ACPI 5.0) */ "ClockPolarityLow" { count (0); return (PARSEOP_CLOCKPOLARITY_LOW); } "ClockPolarityHigh" { count (0); return (PARSEOP_CLOCKPOLARITY_HIGH); } /* DecodeKeyword: Type of Memory Decoding - Resource Descriptors */ "PosDecode" { count (0); return (PARSEOP_DECODETYPE_POS); } "SubDecode" { count (0); return (PARSEOP_DECODETYPE_SUB); } /* DmaTypeKeyword: DMA Types - DMA Resource Descriptor */ "Compatibility" { count (0); return (PARSEOP_DMATYPE_COMPATIBILITY); } "TypeA" { count (0); return (PARSEOP_DMATYPE_A); } "TypeB" { count (0); return (PARSEOP_DMATYPE_B); } "TypeF" { count (0); return (PARSEOP_DMATYPE_F); } /* EndianKeyword: Endian type - Resource Descriptor (ACPI 5.0) */ "LittleEndian" { count (0); return (PARSEOP_ENDIAN_LITTLE); } "BigEndian" { count (0); return (PARSEOP_ENDIAN_BIG); } /* ExtendedAttribKeyword: Bus attributes, AccessAs operator (ACPI 5.0) */ "AttribBytes" { count (0); return (PARSEOP_ACCESSATTRIB_MULTIBYTE); } "AttribRawBytes" { count (0); return (PARSEOP_ACCESSATTRIB_RAW_BYTES); } "AttribRawProcessBytes" { count (0); return (PARSEOP_ACCESSATTRIB_RAW_PROCESS); } /* FlowControlKeyword: Resource Descriptors (ACPI 5.0) */ "FlowControlHardware" { count (0); return (PARSEOP_FLOWCONTROL_HW); } "FlowControlNone" { count (0); return (PARSEOP_FLOWCONTROL_NONE); } "FlowControlXon" { count (0); return (PARSEOP_FLOWCONTROL_SW); } /* InterruptLevelKeyword: Interrupt Active Types */ "ActiveBoth" { count (0); return (PARSEOP_INTLEVEL_ACTIVEBOTH); } "ActiveHigh" { count (0); return (PARSEOP_INTLEVEL_ACTIVEHIGH); } "ActiveLow" { count (0); return (PARSEOP_INTLEVEL_ACTIVELOW); } /* InterruptTypeKeyword: Interrupt Types */ "Edge" { count (0); return (PARSEOP_INTTYPE_EDGE); } "Level" { count (0); return (PARSEOP_INTTYPE_LEVEL); } /* IoDecodeKeyword: Type of Memory Decoding - Resource Descriptors */ "Decode10" { count (0); return (PARSEOP_IODECODETYPE_10); } "Decode16" { count (0); return (PARSEOP_IODECODETYPE_16); } /* IoRestrictionKeyword: I/O Restriction - GPIO Resource Descriptors (ACPI 5.0) */ "IoRestrictionNone" { count (0); return (PARSEOP_IORESTRICT_NONE); } "IoRestrictionInputOnly" { count (0); return (PARSEOP_IORESTRICT_IN); } "IoRestrictionOutputOnly" { count (0); return (PARSEOP_IORESTRICT_OUT); } "IoRestrictionNoneAndPreserve" { count (0); return (PARSEOP_IORESTRICT_PRESERVE); } /* LockRuleKeyword: Global Lock use for Field Operator */ "Lock" { count (0); return (PARSEOP_LOCKRULE_LOCK); } "NoLock" { count (0); return (PARSEOP_LOCKRULE_NOLOCK); } /* MatchOpKeyword: Types for Match Operator */ "MTR" { count (0); return (PARSEOP_MATCHTYPE_MTR); } "MEQ" { count (0); return (PARSEOP_MATCHTYPE_MEQ); } "MLE" { count (0); return (PARSEOP_MATCHTYPE_MLE); } "MLT" { count (0); return (PARSEOP_MATCHTYPE_MLT); } "MGE" { count (0); return (PARSEOP_MATCHTYPE_MGE); } "MGT" { count (0); return (PARSEOP_MATCHTYPE_MGT); } /* MaxKeyword: Max Range Type - Resource Descriptors */ "MaxFixed" { count (0); return (PARSEOP_MAXTYPE_FIXED); } "MaxNotFixed" { count (0); return (PARSEOP_MAXTYPE_NOTFIXED); } /* MemTypeKeyword: Memory Types - Resource Descriptors */ "Cacheable" { count (0); return (PARSEOP_MEMTYPE_CACHEABLE); } "WriteCombining" { count (0); return (PARSEOP_MEMTYPE_WRITECOMBINING); } "Prefetchable" { count (0); return (PARSEOP_MEMTYPE_PREFETCHABLE); } "NonCacheable" { count (0); return (PARSEOP_MEMTYPE_NONCACHEABLE); } /* MinKeyword: Min Range Type - Resource Descriptors */ "MinFixed" { count (0); return (PARSEOP_MINTYPE_FIXED); } "MinNotFixed" { count (0); return (PARSEOP_MINTYPE_NOTFIXED); } /* ObjectTypeKeyword: ACPI Object Types */ "UnknownObj" { count (0); return (PARSEOP_OBJECTTYPE_UNK); } "IntObj" { count (0); return (PARSEOP_OBJECTTYPE_INT); } "StrObj" { count (0); return (PARSEOP_OBJECTTYPE_STR); } "BuffObj" { count (0); return (PARSEOP_OBJECTTYPE_BUF); } "PkgObj" { count (0); return (PARSEOP_OBJECTTYPE_PKG); } "FieldUnitObj" { count (0); return (PARSEOP_OBJECTTYPE_FLD); } "DeviceObj" { count (0); return (PARSEOP_OBJECTTYPE_DEV); } "EventObj" { count (0); return (PARSEOP_OBJECTTYPE_EVT); } "MethodObj" { count (0); return (PARSEOP_OBJECTTYPE_MTH); } "MutexObj" { count (0); return (PARSEOP_OBJECTTYPE_MTX); } "OpRegionObj" { count (0); return (PARSEOP_OBJECTTYPE_OPR); } "PowerResObj" { count (0); return (PARSEOP_OBJECTTYPE_POW); } "ProcessorObj" { count (0); return (PARSEOP_OBJECTTYPE_PRO); } "ThermalZoneObj" { count (0); return (PARSEOP_OBJECTTYPE_THZ); } "BuffFieldObj" { count (0); return (PARSEOP_OBJECTTYPE_BFF); } "DDBHandleObj" { count (0); return (PARSEOP_OBJECTTYPE_DDB); } /* ParityKeyword: Resource Descriptors (ACPI 5.0) */ "ParityTypeSpace" { count (0); return (PARSEOP_PARITYTYPE_SPACE); } "ParityTypeMark" { count (0); return (PARSEOP_PARITYTYPE_MARK); } "ParityTypeOdd" { count (0); return (PARSEOP_PARITYTYPE_ODD); } "ParityTypeEven" { count (0); return (PARSEOP_PARITYTYPE_EVEN); } "ParityTypeNone" { count (0); return (PARSEOP_PARITYTYPE_NONE); } /* PinConfigKeyword: Pin Configuration - GPIO Resource Descriptors (ACPI 5.0) */ "PullDefault" { count (0); return (PARSEOP_PIN_PULLDEFAULT); } "PullUp" { count (0); return (PARSEOP_PIN_PULLUP); } "PullDown" { count (0); return (PARSEOP_PIN_PULLDOWN); } "PullNone" { count (0); return (PARSEOP_PIN_NOPULL); } /* PolarityKeyword: Resource Descriptors (ACPI 5.0) */ "PolarityLow" { count (0); return (PARSEOP_DEVICEPOLARITY_LOW); } "PolarityHigh" { count (0); return (PARSEOP_DEVICEPOLARITY_HIGH); } /* RangeTypeKeyword: I/O Range Types - Resource Descriptors */ "ISAOnlyRanges" { count (0); return (PARSEOP_RANGETYPE_ISAONLY); } "NonISAOnlyRanges" { count (0); return (PARSEOP_RANGETYPE_NONISAONLY); } "EntireRange" { count (0); return (PARSEOP_RANGETYPE_ENTIRE); } /* ReadWriteKeyword: Memory Access Types - Resource Descriptors */ "ReadWrite" { count (0); return (PARSEOP_READWRITETYPE_BOTH); } "ReadOnly" { count (0); return (PARSEOP_READWRITETYPE_READONLY); } /* RegionSpaceKeyword: Operation Region Address Space Types */ "SystemIO" { count (0); return (PARSEOP_REGIONSPACE_IO); } "SystemMemory" { count (0); return (PARSEOP_REGIONSPACE_MEM); } "PCI_Config" { count (0); return (PARSEOP_REGIONSPACE_PCI); } "EmbeddedControl" { count (0); return (PARSEOP_REGIONSPACE_EC); } "SMBus" { count (0); return (PARSEOP_REGIONSPACE_SMBUS); } "SystemCMOS" { count (0); return (PARSEOP_REGIONSPACE_CMOS); } "PciBarTarget" { count (0); return (PARSEOP_REGIONSPACE_PCIBAR); } "IPMI" { count (0); return (PARSEOP_REGIONSPACE_IPMI); } "GeneralPurposeIo" { count (0); return (PARSEOP_REGIONSPACE_GPIO); } /* ACPI 5.0 */ "GenericSerialBus" { count (0); return (PARSEOP_REGIONSPACE_GSBUS); } /* ACPI 5.0 */ "PCC" { count (0); return (PARSEOP_REGIONSPACE_PCC); } /* ACPI 5.0 */ "FFixedHW" { count (0); return (PARSEOP_REGIONSPACE_FFIXEDHW); } /* ResourceTypeKeyword: Resource Usage - Resource Descriptors */ "ResourceConsumer" { count (0); return (PARSEOP_RESOURCETYPE_CONSUMER); } "ResourceProducer" { count (0); return (PARSEOP_RESOURCETYPE_PRODUCER); } /* SerializeRuleKeyword: Control Method Serialization */ "Serialized" { count (0); return (PARSEOP_SERIALIZERULE_SERIAL); } "NotSerialized" { count (0); return (PARSEOP_SERIALIZERULE_NOTSERIAL); } /* ShareTypeKeyword: Interrupt Sharing - Resource Descriptors */ "Shared" { count (0); return (PARSEOP_SHARETYPE_SHARED); } "Exclusive" { count (0); return (PARSEOP_SHARETYPE_EXCLUSIVE); } "SharedAndWake" { count (0); return (PARSEOP_SHARETYPE_SHAREDWAKE); } /* ACPI 5.0 */ "ExclusiveAndWake" { count (0); return (PARSEOP_SHARETYPE_EXCLUSIVEWAKE); } /* ACPI 5.0 */ /* SlaveModeKeyword: Resource Descriptors (ACPI 5.0) */ "ControllerInitiated" { count (0); return (PARSEOP_SLAVEMODE_CONTROLLERINIT); } "DeviceInitiated" { count (0); return (PARSEOP_SLAVEMODE_DEVICEINIT); } /* StopBitsKeyword: Resource Descriptors (ACPI 5.0) */ "StopBitsOne" { count (0); return (PARSEOP_STOPBITS_ONE); } "StopBitsOnePlusHalf" { count (0); return (PARSEOP_STOPBITS_ONEPLUSHALF); } "StopBitsTwo" { count (0); return (PARSEOP_STOPBITS_TWO); } "StopBitsZero" { count (0); return (PARSEOP_STOPBITS_ZERO); } /* TransferWidthKeyword: DMA Widths - Fixed DMA Resource Descriptor (ACPI 5.0) */ "Width8bit" { count (0); return (PARSEOP_XFERSIZE_8); } "Width16bit" { count (0); return (PARSEOP_XFERSIZE_16); } "Width32bit" { count (0); return (PARSEOP_XFERSIZE_32); } "Width64bit" { count (0); return (PARSEOP_XFERSIZE_64); } "Width128bit" { count (0); return (PARSEOP_XFERSIZE_128); } "Width256bit" { count (0); return (PARSEOP_XFERSIZE_256); } /* TranslationKeyword: Translation Density Types - Resource Descriptors */ "SparseTranslation" { count (0); return (PARSEOP_TRANSLATIONTYPE_SPARSE); } "DenseTranslation" { count (0); return (PARSEOP_TRANSLATIONTYPE_DENSE); } /* TypeKeyword: Translation Types - Resource Descriptors */ "TypeTranslation" { count (0); return (PARSEOP_TYPE_TRANSLATION); } "TypeStatic" { count (0); return (PARSEOP_TYPE_STATIC); } /* UpdateRuleKeyword: Field Update Rules */ "Preserve" { count (0); return (PARSEOP_UPDATERULE_PRESERVE); } "WriteAsOnes" { count (0); return (PARSEOP_UPDATERULE_ONES); } "WriteAsZeros" { count (0); return (PARSEOP_UPDATERULE_ZEROS); } /* WireModeKeyword: SPI Wire Mode - Resource Descriptors (ACPI 5.0) */ "FourWireMode" { count (0); return (PARSEOP_WIREMODE_FOUR); } "ThreeWireMode" { count (0); return (PARSEOP_WIREMODE_THREE); } /* XferTypeKeyword: DMA Transfer Types */ "Transfer8" { count (0); return (PARSEOP_XFERTYPE_8); } "Transfer8_16" { count (0); return (PARSEOP_XFERTYPE_8_16); } "Transfer16" { count (0); return (PARSEOP_XFERTYPE_16); } /* Predefined compiler names */ "__DATE__" { count (0); return (PARSEOP___DATE__); } "__FILE__" { count (0); return (PARSEOP___FILE__); } "__LINE__" { count (0); return (PARSEOP___LINE__); } "__PATH__" { count (0); return (PARSEOP___PATH__); } "{" { count (0); return('{'); } "}" { count (0); return('}'); } "," { count (0); return(','); } "(" { count (0); return('('); } ")" { count (0); return(')'); } {NameSeg} { char *s; count (0); s=malloc (ACPI_NAME_SIZE + 1); if (strcmp (AslCompilertext, "\\")) { strcpy (s, "____"); AcpiUtStrupr (AslCompilertext); } memcpy (s, AslCompilertext, strlen (AslCompilertext)); AslCompilerlval.s = s; DbgPrint (ASL_PARSE_OUTPUT, "NameSeg: %s\n", s); return (PARSEOP_NAMESEG); } {NameString} { char *s; count (0); s=malloc (strlen (AslCompilertext)+1); AcpiUtStrupr (AslCompilertext); strcpy (s, AslCompilertext); s[strlen (AslCompilertext)] = 0; AslCompilerlval.s = s; DbgPrint (ASL_PARSE_OUTPUT, "NameString: %s\n", s); return (PARSEOP_NAMESTRING); } "*" | "/" { count (1); AslCompilererror ("Parse error, expecting ASL keyword or name");} . { count (1); sprintf (MsgBuffer, "Invalid character (0x%2.2X), expecting ASL keyword or name", *AslCompilertext); AslCompilererror (MsgBuffer);} <> { if (AslPopInputFileStack ()) yyterminate(); else return (PARSEOP_INCLUDE_END);}; %% /*! [End] no source code translation !*/ /* * Bring in the scanner support routines */ #include "aslsupport.l" src/acpica/source/compiler/aslcompiler.y000066400000000000000000003766641231470457100207350ustar00rootroot00000000000000%{ /****************************************************************************** * * Module Name: aslcompiler.y - Bison/Yacc input file (ASL grammar and actions) * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #include "aslcompiler.h" #include #include #include #include "acpi.h" #include "accommon.h" #define _COMPONENT ACPI_COMPILER ACPI_MODULE_NAME ("aslparse") /* * Global Notes: * * October 2005: The following list terms have been optimized (from the * original ASL grammar in the ACPI specification) to force the immediate * reduction of each list item so that the parse stack use doesn't increase on * each list element and possibly overflow on very large lists (>4000 items). * This dramatically reduces use of the parse stack overall. * * ArgList, TermList, Objectlist, ByteList, DWordList, PackageList, * ResourceMacroList, and FieldUnitList */ void * AslLocalAllocate (unsigned int Size); /* Bison/yacc configuration */ #define static #undef alloca #define alloca AslLocalAllocate #define yytname AslCompilername #define YYINITDEPTH 600 /* State stack depth */ #define YYDEBUG 1 /* Enable debug output */ #define YYERROR_VERBOSE 1 /* Verbose error messages */ /* Define YYMALLOC/YYFREE to prevent redefinition errors */ #define YYMALLOC malloc #define YYFREE free /* * The windows version of bison defines this incorrectly as "32768" (Not negative). * We use a custom (edited binary) version of bison that defines YYFLAG as YYFBAD * instead (#define YYFBAD 32768), so we can define it correctly here. * * The problem is that if YYFLAG is positive, the extended syntax error messages * are disabled. */ #define YYFLAG -32768 %} /* * Declare the type of values in the grammar */ %union { UINT64 i; char *s; ACPI_PARSE_OBJECT *n; } /*! [Begin] no source code translation */ /* * These shift/reduce conflicts are expected. There should be zero * reduce/reduce conflicts. */ %expect 86 /****************************************************************************** * * Token types: These are returned by the lexer * * NOTE: This list MUST match the AslKeywordMapping table found * in aslmap.c EXACTLY! Double check any changes! * *****************************************************************************/ %token PARSEOP_ACCESSAS %token PARSEOP_ACCESSATTRIB_BLOCK %token PARSEOP_ACCESSATTRIB_BLOCK_CALL %token PARSEOP_ACCESSATTRIB_BYTE %token PARSEOP_ACCESSATTRIB_MULTIBYTE %token PARSEOP_ACCESSATTRIB_QUICK %token PARSEOP_ACCESSATTRIB_RAW_BYTES %token PARSEOP_ACCESSATTRIB_RAW_PROCESS %token PARSEOP_ACCESSATTRIB_SND_RCV %token PARSEOP_ACCESSATTRIB_WORD %token PARSEOP_ACCESSATTRIB_WORD_CALL %token PARSEOP_ACCESSTYPE_ANY %token PARSEOP_ACCESSTYPE_BUF %token PARSEOP_ACCESSTYPE_BYTE %token PARSEOP_ACCESSTYPE_DWORD %token PARSEOP_ACCESSTYPE_QWORD %token PARSEOP_ACCESSTYPE_WORD %token PARSEOP_ACQUIRE %token PARSEOP_ADD %token PARSEOP_ADDRESSINGMODE_7BIT %token PARSEOP_ADDRESSINGMODE_10BIT %token PARSEOP_ADDRESSTYPE_ACPI %token PARSEOP_ADDRESSTYPE_MEMORY %token PARSEOP_ADDRESSTYPE_NVS %token PARSEOP_ADDRESSTYPE_RESERVED %token PARSEOP_ALIAS %token PARSEOP_AND %token PARSEOP_ARG0 %token PARSEOP_ARG1 %token PARSEOP_ARG2 %token PARSEOP_ARG3 %token PARSEOP_ARG4 %token PARSEOP_ARG5 %token PARSEOP_ARG6 %token PARSEOP_BANKFIELD %token PARSEOP_BITSPERBYTE_EIGHT %token PARSEOP_BITSPERBYTE_FIVE %token PARSEOP_BITSPERBYTE_NINE %token PARSEOP_BITSPERBYTE_SEVEN %token PARSEOP_BITSPERBYTE_SIX %token PARSEOP_BREAK %token PARSEOP_BREAKPOINT %token PARSEOP_BUFFER %token PARSEOP_BUSMASTERTYPE_MASTER %token PARSEOP_BUSMASTERTYPE_NOTMASTER %token PARSEOP_BYTECONST %token PARSEOP_CASE %token PARSEOP_CLOCKPHASE_FIRST %token PARSEOP_CLOCKPHASE_SECOND %token PARSEOP_CLOCKPOLARITY_HIGH %token PARSEOP_CLOCKPOLARITY_LOW %token PARSEOP_CONCATENATE %token PARSEOP_CONCATENATERESTEMPLATE %token PARSEOP_CONDREFOF %token PARSEOP_CONNECTION %token PARSEOP_CONTINUE %token PARSEOP_COPYOBJECT %token PARSEOP_CREATEBITFIELD %token PARSEOP_CREATEBYTEFIELD %token PARSEOP_CREATEDWORDFIELD %token PARSEOP_CREATEFIELD %token PARSEOP_CREATEQWORDFIELD %token PARSEOP_CREATEWORDFIELD %token PARSEOP_DATABUFFER %token PARSEOP_DATATABLEREGION %token PARSEOP_DEBUG %token PARSEOP_DECODETYPE_POS %token PARSEOP_DECODETYPE_SUB %token PARSEOP_DECREMENT %token PARSEOP_DEFAULT %token PARSEOP_DEFAULT_ARG %token PARSEOP_DEFINITIONBLOCK %token PARSEOP_DEREFOF %token PARSEOP_DEVICE %token PARSEOP_DEVICEPOLARITY_HIGH %token PARSEOP_DEVICEPOLARITY_LOW %token PARSEOP_DIVIDE %token PARSEOP_DMA %token PARSEOP_DMATYPE_A %token PARSEOP_DMATYPE_COMPATIBILITY %token PARSEOP_DMATYPE_B %token PARSEOP_DMATYPE_F %token PARSEOP_DWORDCONST %token PARSEOP_DWORDIO %token PARSEOP_DWORDMEMORY %token PARSEOP_DWORDSPACE %token PARSEOP_EISAID %token PARSEOP_ELSE %token PARSEOP_ELSEIF %token PARSEOP_ENDDEPENDENTFN %token PARSEOP_ENDIAN_BIG %token PARSEOP_ENDIAN_LITTLE %token PARSEOP_ENDTAG %token PARSEOP_ERRORNODE %token PARSEOP_EVENT %token PARSEOP_EXTENDEDIO %token PARSEOP_EXTENDEDMEMORY %token PARSEOP_EXTENDEDSPACE %token PARSEOP_EXTERNAL %token PARSEOP_FATAL %token PARSEOP_FIELD %token PARSEOP_FINDSETLEFTBIT %token PARSEOP_FINDSETRIGHTBIT %token PARSEOP_FIXEDDMA %token PARSEOP_FIXEDIO %token PARSEOP_FLOWCONTROL_HW %token PARSEOP_FLOWCONTROL_NONE %token PARSEOP_FLOWCONTROL_SW %token PARSEOP_FROMBCD %token PARSEOP_FUNCTION %token PARSEOP_GPIO_INT %token PARSEOP_GPIO_IO %token PARSEOP_I2C_SERIALBUS %token PARSEOP_IF %token PARSEOP_INCLUDE %token PARSEOP_INCLUDE_END %token PARSEOP_INCREMENT %token PARSEOP_INDEX %token PARSEOP_INDEXFIELD %token PARSEOP_INTEGER %token PARSEOP_INTERRUPT %token PARSEOP_INTLEVEL_ACTIVEBOTH %token PARSEOP_INTLEVEL_ACTIVEHIGH %token PARSEOP_INTLEVEL_ACTIVELOW %token PARSEOP_INTTYPE_EDGE %token PARSEOP_INTTYPE_LEVEL %token PARSEOP_IO %token PARSEOP_IODECODETYPE_10 %token PARSEOP_IODECODETYPE_16 %token PARSEOP_IORESTRICT_IN %token PARSEOP_IORESTRICT_NONE %token PARSEOP_IORESTRICT_OUT %token PARSEOP_IORESTRICT_PRESERVE %token PARSEOP_IRQ %token PARSEOP_IRQNOFLAGS %token PARSEOP_LAND %token PARSEOP_LEQUAL %token PARSEOP_LGREATER %token PARSEOP_LGREATEREQUAL %token PARSEOP_LLESS %token PARSEOP_LLESSEQUAL %token PARSEOP_LNOT %token PARSEOP_LNOTEQUAL %token PARSEOP_LOAD %token PARSEOP_LOADTABLE %token PARSEOP_LOCAL0 %token PARSEOP_LOCAL1 %token PARSEOP_LOCAL2 %token PARSEOP_LOCAL3 %token PARSEOP_LOCAL4 %token PARSEOP_LOCAL5 %token PARSEOP_LOCAL6 %token PARSEOP_LOCAL7 %token PARSEOP_LOCKRULE_LOCK %token PARSEOP_LOCKRULE_NOLOCK %token PARSEOP_LOR %token PARSEOP_MATCH %token PARSEOP_MATCHTYPE_MEQ %token PARSEOP_MATCHTYPE_MGE %token PARSEOP_MATCHTYPE_MGT %token PARSEOP_MATCHTYPE_MLE %token PARSEOP_MATCHTYPE_MLT %token PARSEOP_MATCHTYPE_MTR %token PARSEOP_MAXTYPE_FIXED %token PARSEOP_MAXTYPE_NOTFIXED %token PARSEOP_MEMORY24 %token PARSEOP_MEMORY32 %token PARSEOP_MEMORY32FIXED %token PARSEOP_MEMTYPE_CACHEABLE %token PARSEOP_MEMTYPE_NONCACHEABLE %token PARSEOP_MEMTYPE_PREFETCHABLE %token PARSEOP_MEMTYPE_WRITECOMBINING %token PARSEOP_METHOD %token PARSEOP_METHODCALL %token PARSEOP_MID %token PARSEOP_MINTYPE_FIXED %token PARSEOP_MINTYPE_NOTFIXED %token PARSEOP_MOD %token PARSEOP_MULTIPLY %token PARSEOP_MUTEX %token PARSEOP_NAME %token PARSEOP_NAMESEG %token PARSEOP_NAMESTRING %token PARSEOP_NAND %token PARSEOP_NOOP %token PARSEOP_NOR %token PARSEOP_NOT %token PARSEOP_NOTIFY %token PARSEOP_OBJECTTYPE %token PARSEOP_OBJECTTYPE_BFF %token PARSEOP_OBJECTTYPE_BUF %token PARSEOP_OBJECTTYPE_DDB %token PARSEOP_OBJECTTYPE_DEV %token PARSEOP_OBJECTTYPE_EVT %token PARSEOP_OBJECTTYPE_FLD %token PARSEOP_OBJECTTYPE_INT %token PARSEOP_OBJECTTYPE_MTH %token PARSEOP_OBJECTTYPE_MTX %token PARSEOP_OBJECTTYPE_OPR %token PARSEOP_OBJECTTYPE_PKG %token PARSEOP_OBJECTTYPE_POW %token PARSEOP_OBJECTTYPE_PRO %token PARSEOP_OBJECTTYPE_STR %token PARSEOP_OBJECTTYPE_THZ %token PARSEOP_OBJECTTYPE_UNK %token PARSEOP_OFFSET %token PARSEOP_ONE %token PARSEOP_ONES %token PARSEOP_OPERATIONREGION %token PARSEOP_OR %token PARSEOP_PACKAGE %token PARSEOP_PACKAGE_LENGTH %token PARSEOP_PARITYTYPE_EVEN %token PARSEOP_PARITYTYPE_MARK %token PARSEOP_PARITYTYPE_NONE %token PARSEOP_PARITYTYPE_ODD %token PARSEOP_PARITYTYPE_SPACE %token PARSEOP_PIN_NOPULL %token PARSEOP_PIN_PULLDEFAULT %token PARSEOP_PIN_PULLDOWN %token PARSEOP_PIN_PULLUP %token PARSEOP_POWERRESOURCE %token PARSEOP_PROCESSOR %token PARSEOP_QWORDCONST %token PARSEOP_QWORDIO %token PARSEOP_QWORDMEMORY %token PARSEOP_QWORDSPACE %token PARSEOP_RANGETYPE_ENTIRE %token PARSEOP_RANGETYPE_ISAONLY %token PARSEOP_RANGETYPE_NONISAONLY %token PARSEOP_RAW_DATA %token PARSEOP_READWRITETYPE_BOTH %token PARSEOP_READWRITETYPE_READONLY %token PARSEOP_REFOF %token PARSEOP_REGIONSPACE_CMOS %token PARSEOP_REGIONSPACE_EC %token PARSEOP_REGIONSPACE_FFIXEDHW %token PARSEOP_REGIONSPACE_GPIO %token PARSEOP_REGIONSPACE_GSBUS %token PARSEOP_REGIONSPACE_IO %token PARSEOP_REGIONSPACE_IPMI %token PARSEOP_REGIONSPACE_MEM %token PARSEOP_REGIONSPACE_PCC %token PARSEOP_REGIONSPACE_PCI %token PARSEOP_REGIONSPACE_PCIBAR %token PARSEOP_REGIONSPACE_SMBUS %token PARSEOP_REGISTER %token PARSEOP_RELEASE %token PARSEOP_RESERVED_BYTES %token PARSEOP_RESET %token PARSEOP_RESOURCETEMPLATE %token PARSEOP_RESOURCETYPE_CONSUMER %token PARSEOP_RESOURCETYPE_PRODUCER %token PARSEOP_RETURN %token PARSEOP_REVISION %token PARSEOP_SCOPE %token PARSEOP_SERIALIZERULE_NOTSERIAL %token PARSEOP_SERIALIZERULE_SERIAL %token PARSEOP_SHARETYPE_EXCLUSIVE %token PARSEOP_SHARETYPE_EXCLUSIVEWAKE %token PARSEOP_SHARETYPE_SHARED %token PARSEOP_SHARETYPE_SHAREDWAKE %token PARSEOP_SHIFTLEFT %token PARSEOP_SHIFTRIGHT %token PARSEOP_SIGNAL %token PARSEOP_SIZEOF %token PARSEOP_SLAVEMODE_CONTROLLERINIT %token PARSEOP_SLAVEMODE_DEVICEINIT %token PARSEOP_SLEEP %token PARSEOP_SPI_SERIALBUS %token PARSEOP_STALL %token PARSEOP_STARTDEPENDENTFN %token PARSEOP_STARTDEPENDENTFN_NOPRI %token PARSEOP_STOPBITS_ONE %token PARSEOP_STOPBITS_ONEPLUSHALF %token PARSEOP_STOPBITS_TWO %token PARSEOP_STOPBITS_ZERO %token PARSEOP_STORE %token PARSEOP_STRING_LITERAL %token PARSEOP_SUBTRACT %token PARSEOP_SWITCH %token PARSEOP_THERMALZONE %token PARSEOP_TIMER %token PARSEOP_TOBCD %token PARSEOP_TOBUFFER %token PARSEOP_TODECIMALSTRING %token PARSEOP_TOHEXSTRING %token PARSEOP_TOINTEGER %token PARSEOP_TOSTRING %token PARSEOP_TOUUID %token PARSEOP_TRANSLATIONTYPE_DENSE %token PARSEOP_TRANSLATIONTYPE_SPARSE %token PARSEOP_TYPE_STATIC %token PARSEOP_TYPE_TRANSLATION %token PARSEOP_UART_SERIALBUS %token PARSEOP_UNICODE %token PARSEOP_UNLOAD %token PARSEOP_UPDATERULE_ONES %token PARSEOP_UPDATERULE_PRESERVE %token PARSEOP_UPDATERULE_ZEROS %token PARSEOP_VAR_PACKAGE %token PARSEOP_VENDORLONG %token PARSEOP_VENDORSHORT %token PARSEOP_WAIT %token PARSEOP_WHILE %token PARSEOP_WIREMODE_FOUR %token PARSEOP_WIREMODE_THREE %token PARSEOP_WORDBUSNUMBER %token PARSEOP_WORDCONST %token PARSEOP_WORDIO %token PARSEOP_WORDSPACE %token PARSEOP_XFERSIZE_8 %token PARSEOP_XFERSIZE_16 %token PARSEOP_XFERSIZE_32 %token PARSEOP_XFERSIZE_64 %token PARSEOP_XFERSIZE_128 %token PARSEOP_XFERSIZE_256 %token PARSEOP_XFERTYPE_8 %token PARSEOP_XFERTYPE_8_16 %token PARSEOP_XFERTYPE_16 %token PARSEOP_XOR %token PARSEOP_ZERO /* * Special functions. These should probably stay at the end of this * table. */ %token PARSEOP___DATE__ %token PARSEOP___FILE__ %token PARSEOP___LINE__ %token PARSEOP___PATH__ /****************************************************************************** * * Production names * *****************************************************************************/ %type ArgList %type ASLCode %type BufferData %type BufferTermData %type CompilerDirective %type DataObject %type DefinitionBlockTerm %type IntegerData %type NamedObject %type NameSpaceModifier %type Object %type ObjectList %type PackageData %type ParameterTypePackage %type ParameterTypePackageList %type ParameterTypesPackage %type ParameterTypesPackageList %type RequiredTarget %type SimpleTarget %type StringData %type Target %type Term %type TermArg %type TermList %type UserTerm /* Type4Opcode is obsolete */ %type Type1Opcode %type Type2BufferOpcode %type Type2BufferOrStringOpcode %type Type2IntegerOpcode %type Type2Opcode %type Type2StringOpcode %type Type3Opcode %type Type5Opcode %type Type6Opcode %type AccessAsTerm %type ExternalTerm %type FieldUnit %type FieldUnitEntry %type FieldUnitList %type IncludeTerm %type OffsetTerm %type OptionalAccessAttribTerm /* Named Objects */ %type BankFieldTerm %type CreateBitFieldTerm %type CreateByteFieldTerm %type CreateDWordFieldTerm %type CreateFieldTerm %type CreateQWordFieldTerm %type CreateWordFieldTerm %type DataRegionTerm %type DeviceTerm %type EventTerm %type FieldTerm %type FunctionTerm %type IndexFieldTerm %type MethodTerm %type MutexTerm %type OpRegionTerm %type OpRegionSpaceIdTerm %type PowerResTerm %type ProcessorTerm %type ThermalZoneTerm /* Namespace modifiers */ %type AliasTerm %type NameTerm %type ScopeTerm /* Type 1 opcodes */ %type BreakPointTerm %type BreakTerm %type CaseDefaultTermList %type CaseTerm %type ContinueTerm %type DefaultTerm %type ElseTerm %type FatalTerm %type IfElseTerm %type IfTerm %type LoadTerm %type NoOpTerm %type NotifyTerm %type ReleaseTerm %type ResetTerm %type ReturnTerm %type SignalTerm %type SleepTerm %type StallTerm %type SwitchTerm %type UnloadTerm %type WhileTerm /* %type CaseTermList */ /* Type 2 opcodes */ %type AcquireTerm %type AddTerm %type AndTerm %type ConcatResTerm %type ConcatTerm %type CondRefOfTerm %type CopyObjectTerm %type DecTerm %type DerefOfTerm %type DivideTerm %type FindSetLeftBitTerm %type FindSetRightBitTerm %type FromBCDTerm %type IncTerm %type IndexTerm %type LAndTerm %type LEqualTerm %type LGreaterEqualTerm %type LGreaterTerm %type LLessEqualTerm %type LLessTerm %type LNotEqualTerm %type LNotTerm %type LoadTableTerm %type LOrTerm %type MatchTerm %type MidTerm %type ModTerm %type MultiplyTerm %type NAndTerm %type NOrTerm %type NotTerm %type ObjectTypeTerm %type OrTerm %type RefOfTerm %type ShiftLeftTerm %type ShiftRightTerm %type SizeOfTerm %type StoreTerm %type SubtractTerm %type TimerTerm %type ToBCDTerm %type ToBufferTerm %type ToDecimalStringTerm %type ToHexStringTerm %type ToIntegerTerm %type ToStringTerm %type WaitTerm %type XOrTerm /* Keywords */ %type AccessAttribKeyword %type AccessTypeKeyword %type AddressingModeKeyword %type AddressKeyword %type AddressSpaceKeyword %type BitsPerByteKeyword %type ClockPhaseKeyword %type ClockPolarityKeyword %type DecodeKeyword %type DevicePolarityKeyword %type DMATypeKeyword %type EndianKeyword %type FlowControlKeyword %type InterruptLevel %type InterruptTypeKeyword %type IODecodeKeyword %type IoRestrictionKeyword %type LockRuleKeyword %type MatchOpKeyword %type MaxKeyword %type MemTypeKeyword %type MinKeyword %type ObjectTypeKeyword %type OptionalBusMasterKeyword %type OptionalReadWriteKeyword %type ParityTypeKeyword %type PinConfigByte %type PinConfigKeyword %type RangeTypeKeyword %type RegionSpaceKeyword %type ResourceTypeKeyword %type SerializeRuleKeyword %type ShareTypeKeyword %type SlaveModeKeyword %type StopBitsKeyword %type TranslationKeyword %type TypeKeyword %type UpdateRuleKeyword %type WireModeKeyword %type XferSizeKeyword %type XferTypeKeyword /* Types */ %type SuperName %type ObjectTypeName %type ArgTerm %type LocalTerm %type DebugTerm %type Integer %type ByteConst %type WordConst %type DWordConst %type QWordConst %type String %type ConstTerm %type ConstExprTerm %type ByteConstExpr %type WordConstExpr %type DWordConstExpr %type QWordConstExpr %type DWordList %type BufferTerm %type ByteList %type PackageElement %type PackageList %type PackageTerm %type VarPackageLengthTerm /* Macros */ %type EISAIDTerm %type ResourceMacroList %type ResourceMacroTerm %type ResourceTemplateTerm %type ToUUIDTerm %type UnicodeTerm /* Resource Descriptors */ %type ConnectionTerm %type DataBufferTerm %type DMATerm %type DWordIOTerm %type DWordMemoryTerm %type DWordSpaceTerm %type EndDependentFnTerm %type ExtendedIOTerm %type ExtendedMemoryTerm %type ExtendedSpaceTerm %type FixedDmaTerm %type FixedIOTerm %type GpioIntTerm %type GpioIoTerm %type I2cSerialBusTerm %type InterruptTerm %type IOTerm %type IRQNoFlagsTerm %type IRQTerm %type Memory24Term %type Memory32FixedTerm %type Memory32Term %type NameSeg %type NameString %type QWordIOTerm %type QWordMemoryTerm %type QWordSpaceTerm %type RegisterTerm %type SpiSerialBusTerm %type StartDependentFnNoPriTerm %type StartDependentFnTerm %type UartSerialBusTerm %type VendorLongTerm %type VendorShortTerm %type WordBusNumberTerm %type WordIOTerm %type WordSpaceTerm /* Local types that help construct the AML, not in ACPI spec */ %type AmlPackageLengthTerm %type IncludeEndTerm %type NameStringItem %type TermArgItem %type OptionalAccessSize %type OptionalAddressingMode %type OptionalAddressRange %type OptionalBitsPerByte %type OptionalBuffer_Last %type OptionalByteConstExpr %type OptionalCount %type OptionalDecodeType %type OptionalDevicePolarity %type OptionalDWordConstExpr %type OptionalEndian %type OptionalFlowControl %type OptionalIoRestriction %type OptionalListString %type OptionalMaxType %type OptionalMemType %type OptionalMinType %type OptionalNameString %type OptionalNameString_First %type OptionalNameString_Last %type OptionalObjectTypeKeyword %type OptionalParameterTypePackage %type OptionalParameterTypesPackage %type OptionalParityType %type OptionalQWordConstExpr %type OptionalRangeType %type OptionalReference %type OptionalResourceType %type OptionalResourceType_First %type OptionalReturnArg %type OptionalSerializeRuleKeyword %type OptionalShareType %type OptionalShareType_First %type OptionalSlaveMode %type OptionalStopBits %type OptionalStringData %type OptionalTermArg %type OptionalTranslationType_Last %type OptionalType %type OptionalType_Last %type OptionalWireMode %type OptionalWordConst %type OptionalWordConstExpr %type OptionalXferSize %% /******************************************************************************* * * Production rules start here * ******************************************************************************/ /* * ASL Names */ /* * Root rule. Allow multiple #line directives before the definition block * to handle output from preprocessors */ ASLCode : DefinitionBlockTerm | error {YYABORT; $$ = NULL;} ; /* * Blocks, Data, and Opcodes */ /* * Note concerning support for "module-level code". * * ACPI 1.0 allowed Type1 and Type2 executable opcodes outside of control * methods (the so-called module-level code.) This support was explicitly * removed in ACPI 2.0, but this type of code continues to be created by * BIOS vendors. In order to support the disassembly and recompilation of * such code (and the porting of ASL code to iASL), iASL supports this * code in violation of the current ACPI specification. * * The grammar change to support module-level code is to revert the * {ObjectList} portion of the DefinitionBlockTerm in ACPI 2.0 to the * original use of {TermList} instead (see below.) This allows the use * of Type1 and Type2 opcodes at module level. */ DefinitionBlockTerm : PARSEOP_DEFINITIONBLOCK '(' {$$ = TrCreateLeafNode (PARSEOP_DEFINITIONBLOCK);} String ',' String ',' ByteConst ',' String ',' String ',' DWordConst ')' {TrSetEndLineNumber ($3);} '{' TermList '}' {$$ = TrLinkChildren ($3,7,$4,$6,$8,$10,$12,$14,$18);} ; /* ACPI 3.0 -- allow semicolons between terms */ TermList : {$$ = NULL;} | TermList Term {$$ = TrLinkPeerNode (TrSetNodeFlags ($1, NODE_RESULT_NOT_USED),$2);} | TermList Term ';' {$$ = TrLinkPeerNode (TrSetNodeFlags ($1, NODE_RESULT_NOT_USED),$2);} | TermList ';' Term {$$ = TrLinkPeerNode (TrSetNodeFlags ($1, NODE_RESULT_NOT_USED),$3);} | TermList ';' Term ';' {$$ = TrLinkPeerNode (TrSetNodeFlags ($1, NODE_RESULT_NOT_USED),$3);} ; Term : Object {} | Type1Opcode {} | Type2Opcode {} | Type2IntegerOpcode {} | Type2StringOpcode {} | Type2BufferOpcode {} | Type2BufferOrStringOpcode {} | error {$$ = AslDoError(); yyclearin;} ; CompilerDirective : IncludeTerm {} | ExternalTerm {} ; ObjectList : {$$ = NULL;} | ObjectList Object {$$ = TrLinkPeerNode ($1,$2);} | error {$$ = AslDoError(); yyclearin;} ; Object : CompilerDirective {} | NamedObject {} | NameSpaceModifier {} ; DataObject : BufferData {} | PackageData {} | IntegerData {} | StringData {} ; BufferData : Type5Opcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);} | Type2BufferOrStringOpcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);} | Type2BufferOpcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);} | BufferTerm {} ; PackageData : PackageTerm {} ; IntegerData : Type2IntegerOpcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);} | Type3Opcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);} | Integer {} | ConstTerm {} ; StringData : Type2StringOpcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST);} | String {} ; NamedObject : BankFieldTerm {} | CreateBitFieldTerm {} | CreateByteFieldTerm {} | CreateDWordFieldTerm {} | CreateFieldTerm {} | CreateQWordFieldTerm {} | CreateWordFieldTerm {} | DataRegionTerm {} | DeviceTerm {} | EventTerm {} | FieldTerm {} | FunctionTerm {} | IndexFieldTerm {} | MethodTerm {} | MutexTerm {} | OpRegionTerm {} | PowerResTerm {} | ProcessorTerm {} | ThermalZoneTerm {} ; NameSpaceModifier : AliasTerm {} | NameTerm {} | ScopeTerm {} ; UserTerm : NameString '(' {TrUpdateNode (PARSEOP_METHODCALL, $1);} ArgList ')' {$$ = TrLinkChildNode ($1,$4);} ; ArgList : {$$ = NULL;} | TermArg | ArgList ',' /* Allows a trailing comma at list end */ | ArgList ',' TermArg {$$ = TrLinkPeerNode ($1,$3);} ; /* Removed from TermArg due to reduce/reduce conflicts | Type2IntegerOpcode {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);} | Type2StringOpcode {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);} | Type2BufferOpcode {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);} | Type2BufferOrStringOpcode {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);} */ TermArg : Type2Opcode {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);} | DataObject {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);} | NameString {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);} | ArgTerm {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);} | LocalTerm {$$ = TrSetNodeFlags ($1, NODE_IS_TERM_ARG);} ; Target : {$$ = TrSetNodeFlags (TrCreateLeafNode (PARSEOP_ZERO), NODE_IS_TARGET | NODE_COMPILE_TIME_CONST);} /* Placeholder is a ZeroOp object */ | ',' {$$ = TrSetNodeFlags (TrCreateLeafNode (PARSEOP_ZERO), NODE_IS_TARGET | NODE_COMPILE_TIME_CONST);} /* Placeholder is a ZeroOp object */ | ',' SuperName {$$ = TrSetNodeFlags ($2, NODE_IS_TARGET);} ; RequiredTarget : ',' SuperName {$$ = TrSetNodeFlags ($2, NODE_IS_TARGET);} ; SimpleTarget : NameString {} | LocalTerm {} | ArgTerm {} ; /* Rules for specifying the type of one method argument or return value */ ParameterTypePackage : {$$ = NULL;} | ObjectTypeKeyword {$$ = $1;} | ParameterTypePackage ',' ObjectTypeKeyword {$$ = TrLinkPeerNodes (2,$1,$3);} ; ParameterTypePackageList : {$$ = NULL;} | ObjectTypeKeyword {$$ = $1;} | '{' ParameterTypePackage '}' {$$ = $2;} ; OptionalParameterTypePackage : {$$ = TrCreateLeafNode (PARSEOP_DEFAULT_ARG);} | ',' ParameterTypePackageList {$$ = TrLinkChildren (TrCreateLeafNode (PARSEOP_DEFAULT_ARG),1,$2);} ; /* Rules for specifying the types for method arguments */ ParameterTypesPackage : ParameterTypePackageList {$$ = $1;} | ParameterTypesPackage ',' ParameterTypePackageList {$$ = TrLinkPeerNodes (2,$1,$3);} ; ParameterTypesPackageList : {$$ = NULL;} | ObjectTypeKeyword {$$ = $1;} | '{' ParameterTypesPackage '}' {$$ = $2;} ; OptionalParameterTypesPackage : {$$ = TrCreateLeafNode (PARSEOP_DEFAULT_ARG);} | ',' ParameterTypesPackageList {$$ = TrLinkChildren (TrCreateLeafNode (PARSEOP_DEFAULT_ARG),1,$2);} ; /* Opcode types */ Type1Opcode : BreakTerm {} | BreakPointTerm {} | ContinueTerm {} | FatalTerm {} | IfElseTerm {} | LoadTerm {} | NoOpTerm {} | NotifyTerm {} | ReleaseTerm {} | ResetTerm {} | ReturnTerm {} | SignalTerm {} | SleepTerm {} | StallTerm {} | SwitchTerm {} | UnloadTerm {} | WhileTerm {} ; Type2Opcode : AcquireTerm {} | CondRefOfTerm {} | CopyObjectTerm {} | DerefOfTerm {} | ObjectTypeTerm {} | RefOfTerm {} | SizeOfTerm {} | StoreTerm {} | TimerTerm {} | WaitTerm {} | UserTerm {} ; /* * Type 3/4/5 opcodes */ Type2IntegerOpcode /* "Type3" opcodes */ : AddTerm {} | AndTerm {} | DecTerm {} | DivideTerm {} | FindSetLeftBitTerm {} | FindSetRightBitTerm {} | FromBCDTerm {} | IncTerm {} | IndexTerm {} | LAndTerm {} | LEqualTerm {} | LGreaterTerm {} | LGreaterEqualTerm {} | LLessTerm {} | LLessEqualTerm {} | LNotTerm {} | LNotEqualTerm {} | LoadTableTerm {} | LOrTerm {} | MatchTerm {} | ModTerm {} | MultiplyTerm {} | NAndTerm {} | NOrTerm {} | NotTerm {} | OrTerm {} | ShiftLeftTerm {} | ShiftRightTerm {} | SubtractTerm {} | ToBCDTerm {} | ToIntegerTerm {} | XOrTerm {} ; Type2StringOpcode /* "Type4" Opcodes */ : ToDecimalStringTerm {} | ToHexStringTerm {} | ToStringTerm {} ; Type2BufferOpcode /* "Type5" Opcodes */ : ToBufferTerm {} | ConcatResTerm {} ; Type2BufferOrStringOpcode : ConcatTerm {} | MidTerm {} ; /* * A type 3 opcode evaluates to an Integer and cannot have a destination operand */ Type3Opcode : EISAIDTerm {} ; /* Obsolete Type4Opcode : ConcatTerm {} | ToDecimalStringTerm {} | ToHexStringTerm {} | MidTerm {} | ToStringTerm {} ; */ Type5Opcode : ResourceTemplateTerm {} | UnicodeTerm {} | ToUUIDTerm {} ; Type6Opcode : RefOfTerm {} | DerefOfTerm {} | IndexTerm {} | UserTerm {} ; IncludeTerm : PARSEOP_INCLUDE '(' {$$ = TrCreateLeafNode (PARSEOP_INCLUDE);} String ')' {TrLinkChildren ($3,1,$4);FlOpenIncludeFile ($4);} TermList IncludeEndTerm {$$ = TrLinkPeerNodes (3,$3,$7,$8);} ; IncludeEndTerm : PARSEOP_INCLUDE_END {$$ = TrCreateLeafNode (PARSEOP_INCLUDE_END);} ; ExternalTerm : PARSEOP_EXTERNAL '(' NameString OptionalObjectTypeKeyword OptionalParameterTypePackage OptionalParameterTypesPackage ')' {$$ = TrCreateNode (PARSEOP_EXTERNAL,4,$3,$4,$5,$6);} | PARSEOP_EXTERNAL '(' error ')' {$$ = AslDoError(); yyclearin;} ; /******* Named Objects *******************************************************/ BankFieldTerm : PARSEOP_BANKFIELD '(' {$$ = TrCreateLeafNode (PARSEOP_BANKFIELD);} NameString NameStringItem TermArgItem ',' AccessTypeKeyword ',' LockRuleKeyword ',' UpdateRuleKeyword ')' '{' FieldUnitList '}' {$$ = TrLinkChildren ($3,7,$4,$5,$6,$8,$10,$12,$15);} | PARSEOP_BANKFIELD '(' error ')' '{' error '}' {$$ = AslDoError(); yyclearin;} ; FieldUnitList : {$$ = NULL;} | FieldUnit | FieldUnitList ',' /* Allows a trailing comma at list end */ | FieldUnitList ',' FieldUnit {$$ = TrLinkPeerNode ($1,$3);} ; FieldUnit : FieldUnitEntry {} | OffsetTerm {} | AccessAsTerm {} | ConnectionTerm {} ; FieldUnitEntry : ',' AmlPackageLengthTerm {$$ = TrCreateNode (PARSEOP_RESERVED_BYTES,1,$2);} | NameSeg ',' AmlPackageLengthTerm {$$ = TrLinkChildNode ($1,$3);} ; OffsetTerm : PARSEOP_OFFSET '(' AmlPackageLengthTerm ')' {$$ = TrCreateNode (PARSEOP_OFFSET,1,$3);} | PARSEOP_OFFSET '(' error ')' {$$ = AslDoError(); yyclearin;} ; AccessAsTerm : PARSEOP_ACCESSAS '(' AccessTypeKeyword OptionalAccessAttribTerm ')' {$$ = TrCreateNode (PARSEOP_ACCESSAS,2,$3,$4);} | PARSEOP_ACCESSAS '(' error ')' {$$ = AslDoError(); yyclearin;} ; ConnectionTerm : PARSEOP_CONNECTION '(' NameString ')' {$$ = TrCreateNode (PARSEOP_CONNECTION,1,$3);} | PARSEOP_CONNECTION '(' {$$ = TrCreateLeafNode (PARSEOP_CONNECTION);} ResourceMacroTerm ')' {$$ = TrLinkChildren ($3, 1, TrLinkChildren (TrCreateLeafNode (PARSEOP_RESOURCETEMPLATE), 3, TrCreateLeafNode (PARSEOP_DEFAULT_ARG), TrCreateLeafNode (PARSEOP_DEFAULT_ARG), $4));} | PARSEOP_CONNECTION '(' error ')' {$$ = AslDoError(); yyclearin;} ; CreateBitFieldTerm : PARSEOP_CREATEBITFIELD '(' {$$ = TrCreateLeafNode (PARSEOP_CREATEBITFIELD);} TermArg TermArgItem NameStringItem ')' {$$ = TrLinkChildren ($3,3,$4,$5,TrSetNodeFlags ($6, NODE_IS_NAME_DECLARATION));} | PARSEOP_CREATEBITFIELD '(' error ')' {$$ = AslDoError(); yyclearin;} ; CreateByteFieldTerm : PARSEOP_CREATEBYTEFIELD '(' {$$ = TrCreateLeafNode (PARSEOP_CREATEBYTEFIELD);} TermArg TermArgItem NameStringItem ')' {$$ = TrLinkChildren ($3,3,$4,$5,TrSetNodeFlags ($6, NODE_IS_NAME_DECLARATION));} | PARSEOP_CREATEBYTEFIELD '(' error ')' {$$ = AslDoError(); yyclearin;} ; CreateDWordFieldTerm : PARSEOP_CREATEDWORDFIELD '(' {$$ = TrCreateLeafNode (PARSEOP_CREATEDWORDFIELD);} TermArg TermArgItem NameStringItem ')' {$$ = TrLinkChildren ($3,3,$4,$5,TrSetNodeFlags ($6, NODE_IS_NAME_DECLARATION));} | PARSEOP_CREATEDWORDFIELD '(' error ')' {$$ = AslDoError(); yyclearin;} ; CreateFieldTerm : PARSEOP_CREATEFIELD '(' {$$ = TrCreateLeafNode (PARSEOP_CREATEFIELD);} TermArg TermArgItem TermArgItem NameStringItem ')' {$$ = TrLinkChildren ($3,4,$4,$5,$6,TrSetNodeFlags ($7, NODE_IS_NAME_DECLARATION));} | PARSEOP_CREATEFIELD '(' error ')' {$$ = AslDoError(); yyclearin;} ; CreateQWordFieldTerm : PARSEOP_CREATEQWORDFIELD '(' {$$ = TrCreateLeafNode (PARSEOP_CREATEQWORDFIELD);} TermArg TermArgItem NameStringItem ')' {$$ = TrLinkChildren ($3,3,$4,$5,TrSetNodeFlags ($6, NODE_IS_NAME_DECLARATION));} | PARSEOP_CREATEQWORDFIELD '(' error ')' {$$ = AslDoError(); yyclearin;} ; CreateWordFieldTerm : PARSEOP_CREATEWORDFIELD '(' {$$ = TrCreateLeafNode (PARSEOP_CREATEWORDFIELD);} TermArg TermArgItem NameStringItem ')' {$$ = TrLinkChildren ($3,3,$4,$5,TrSetNodeFlags ($6, NODE_IS_NAME_DECLARATION));} | PARSEOP_CREATEWORDFIELD '(' error ')' {$$ = AslDoError(); yyclearin;} ; DataRegionTerm : PARSEOP_DATATABLEREGION '(' {$$ = TrCreateLeafNode (PARSEOP_DATATABLEREGION);} NameString TermArgItem TermArgItem TermArgItem ')' {$$ = TrLinkChildren ($3,4,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$5,$6,$7);} | PARSEOP_DATATABLEREGION '(' error ')' {$$ = AslDoError(); yyclearin;} ; DeviceTerm : PARSEOP_DEVICE '(' {$$ = TrCreateLeafNode (PARSEOP_DEVICE);} NameString ')' '{' ObjectList '}' {$$ = TrLinkChildren ($3,2,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$7);} | PARSEOP_DEVICE '(' error ')' {$$ = AslDoError(); yyclearin;} ; EventTerm : PARSEOP_EVENT '(' {$$ = TrCreateLeafNode (PARSEOP_EVENT);} NameString ')' {$$ = TrLinkChildren ($3,1,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION));} | PARSEOP_EVENT '(' error ')' {$$ = AslDoError(); yyclearin;} ; FieldTerm : PARSEOP_FIELD '(' {$$ = TrCreateLeafNode (PARSEOP_FIELD);} NameString ',' AccessTypeKeyword ',' LockRuleKeyword ',' UpdateRuleKeyword ')' '{' FieldUnitList '}' {$$ = TrLinkChildren ($3,5,$4,$6,$8,$10,$13);} | PARSEOP_FIELD '(' error ')' '{' error '}' {$$ = AslDoError(); yyclearin;} ; FunctionTerm : PARSEOP_FUNCTION '(' {$$ = TrCreateLeafNode (PARSEOP_METHOD);} NameString OptionalParameterTypePackage OptionalParameterTypesPackage ')' '{' TermList '}' {$$ = TrLinkChildren ($3,7,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION), TrCreateValuedLeafNode (PARSEOP_BYTECONST, 0), TrCreateLeafNode (PARSEOP_SERIALIZERULE_NOTSERIAL), TrCreateValuedLeafNode (PARSEOP_BYTECONST, 0),$5,$6,$9);} | PARSEOP_FUNCTION '(' error ')' {$$ = AslDoError(); yyclearin;} ; IndexFieldTerm : PARSEOP_INDEXFIELD '(' {$$ = TrCreateLeafNode (PARSEOP_INDEXFIELD);} NameString NameStringItem ',' AccessTypeKeyword ',' LockRuleKeyword ',' UpdateRuleKeyword ')' '{' FieldUnitList '}' {$$ = TrLinkChildren ($3,6,$4,$5,$7,$9,$11,$14);} | PARSEOP_INDEXFIELD '(' error ')' '{' error '}' {$$ = AslDoError(); yyclearin;} ; MethodTerm : PARSEOP_METHOD '(' {$$ = TrCreateLeafNode (PARSEOP_METHOD);} NameString OptionalByteConstExpr {UtCheckIntegerRange ($5, 0, 7);} OptionalSerializeRuleKeyword OptionalByteConstExpr OptionalParameterTypePackage OptionalParameterTypesPackage ')' '{' TermList '}' {$$ = TrLinkChildren ($3,7,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$5,$7,$8,$9,$10,$13);} | PARSEOP_METHOD '(' error ')' {$$ = AslDoError(); yyclearin;} ; MutexTerm : PARSEOP_MUTEX '(' {$$ = TrCreateLeafNode (PARSEOP_MUTEX);} NameString ',' ByteConstExpr ')' {$$ = TrLinkChildren ($3,2,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$6);} | PARSEOP_MUTEX '(' error ')' {$$ = AslDoError(); yyclearin;} ; OpRegionTerm : PARSEOP_OPERATIONREGION '(' {$$ = TrCreateLeafNode (PARSEOP_OPERATIONREGION);} NameString ',' OpRegionSpaceIdTerm TermArgItem TermArgItem ')' {$$ = TrLinkChildren ($3,4,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$6,$7,$8);} | PARSEOP_OPERATIONREGION '(' error ')' {$$ = AslDoError(); yyclearin;} ; OpRegionSpaceIdTerm : RegionSpaceKeyword {} | ByteConst {$$ = UtCheckIntegerRange ($1, 0x80, 0xFF);} ; PowerResTerm : PARSEOP_POWERRESOURCE '(' {$$ = TrCreateLeafNode (PARSEOP_POWERRESOURCE);} NameString ',' ByteConstExpr ',' WordConstExpr ')' '{' ObjectList '}' {$$ = TrLinkChildren ($3,4,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$6,$8,$11);} | PARSEOP_POWERRESOURCE '(' error ')' {$$ = AslDoError(); yyclearin;} ; ProcessorTerm : PARSEOP_PROCESSOR '(' {$$ = TrCreateLeafNode (PARSEOP_PROCESSOR);} NameString ',' ByteConstExpr OptionalDWordConstExpr OptionalByteConstExpr ')' '{' ObjectList '}' {$$ = TrLinkChildren ($3,5,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$6,$7,$8,$11);} | PARSEOP_PROCESSOR '(' error ')' {$$ = AslDoError(); yyclearin;} ; ThermalZoneTerm : PARSEOP_THERMALZONE '(' {$$ = TrCreateLeafNode (PARSEOP_THERMALZONE);} NameString ')' '{' ObjectList '}' {$$ = TrLinkChildren ($3,2,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$7);} | PARSEOP_THERMALZONE '(' error ')' {$$ = AslDoError(); yyclearin;} ; /******* Namespace modifiers *************************************************/ AliasTerm : PARSEOP_ALIAS '(' {$$ = TrCreateLeafNode (PARSEOP_ALIAS);} NameString NameStringItem ')' {$$ = TrLinkChildren ($3,2,$4,TrSetNodeFlags ($5, NODE_IS_NAME_DECLARATION));} | PARSEOP_ALIAS '(' error ')' {$$ = AslDoError(); yyclearin;} ; NameTerm : PARSEOP_NAME '(' {$$ = TrCreateLeafNode (PARSEOP_NAME);} NameString ',' DataObject ')' {$$ = TrLinkChildren ($3,2,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$6);} | PARSEOP_NAME '(' error ')' {$$ = AslDoError(); yyclearin;} ; ScopeTerm : PARSEOP_SCOPE '(' {$$ = TrCreateLeafNode (PARSEOP_SCOPE);} NameString ')' '{' ObjectList '}' {$$ = TrLinkChildren ($3,2,TrSetNodeFlags ($4, NODE_IS_NAME_DECLARATION),$7);} | PARSEOP_SCOPE '(' error ')' {$$ = AslDoError(); yyclearin;} ; /******* Type 1 opcodes *******************************************************/ BreakTerm : PARSEOP_BREAK {$$ = TrCreateNode (PARSEOP_BREAK, 0);} ; BreakPointTerm : PARSEOP_BREAKPOINT {$$ = TrCreateNode (PARSEOP_BREAKPOINT, 0);} ; ContinueTerm : PARSEOP_CONTINUE {$$ = TrCreateNode (PARSEOP_CONTINUE, 0);} ; FatalTerm : PARSEOP_FATAL '(' {$$ = TrCreateLeafNode (PARSEOP_FATAL);} ByteConstExpr ',' DWordConstExpr TermArgItem ')' {$$ = TrLinkChildren ($3,3,$4,$6,$7);} | PARSEOP_FATAL '(' error ')' {$$ = AslDoError(); yyclearin;} ; IfElseTerm : IfTerm ElseTerm {$$ = TrLinkPeerNode ($1,$2);} ; IfTerm : PARSEOP_IF '(' {$$ = TrCreateLeafNode (PARSEOP_IF);} TermArg ')' '{' TermList '}' {$$ = TrLinkChildren ($3,2,$4,$7);} | PARSEOP_IF '(' error ')' {$$ = AslDoError(); yyclearin;} ; ElseTerm : {$$ = NULL;} | PARSEOP_ELSE '{' {$$ = TrCreateLeafNode (PARSEOP_ELSE);} TermList '}' {$$ = TrLinkChildren ($3,1,$4);} | PARSEOP_ELSE '{' error '}' {$$ = AslDoError(); yyclearin;} | PARSEOP_ELSE error {$$ = AslDoError(); yyclearin;} | PARSEOP_ELSEIF '(' {$$ = TrCreateLeafNode (PARSEOP_ELSE);} TermArg {$$ = TrCreateLeafNode (PARSEOP_IF);} ')' '{' TermList '}' {TrLinkChildren ($5,2,$4,$8);} ElseTerm {TrLinkPeerNode ($5,$11);} {$$ = TrLinkChildren ($3,1,$5);} | PARSEOP_ELSEIF '(' error ')' {$$ = AslDoError(); yyclearin;} | PARSEOP_ELSEIF error {$$ = AslDoError(); yyclearin;} ; LoadTerm : PARSEOP_LOAD '(' {$$ = TrCreateLeafNode (PARSEOP_LOAD);} NameString RequiredTarget ')' {$$ = TrLinkChildren ($3,2,$4,$5);} | PARSEOP_LOAD '(' error ')' {$$ = AslDoError(); yyclearin;} ; NoOpTerm : PARSEOP_NOOP {$$ = TrCreateNode (PARSEOP_NOOP, 0);} ; NotifyTerm : PARSEOP_NOTIFY '(' {$$ = TrCreateLeafNode (PARSEOP_NOTIFY);} SuperName TermArgItem ')' {$$ = TrLinkChildren ($3,2,$4,$5);} | PARSEOP_NOTIFY '(' error ')' {$$ = AslDoError(); yyclearin;} ; ReleaseTerm : PARSEOP_RELEASE '(' {$$ = TrCreateLeafNode (PARSEOP_RELEASE);} SuperName ')' {$$ = TrLinkChildren ($3,1,$4);} | PARSEOP_RELEASE '(' error ')' {$$ = AslDoError(); yyclearin;} ; ResetTerm : PARSEOP_RESET '(' {$$ = TrCreateLeafNode (PARSEOP_RESET);} SuperName ')' {$$ = TrLinkChildren ($3,1,$4);} | PARSEOP_RESET '(' error ')' {$$ = AslDoError(); yyclearin;} ; ReturnTerm : PARSEOP_RETURN '(' {$$ = TrCreateLeafNode (PARSEOP_RETURN);} OptionalReturnArg ')' {$$ = TrLinkChildren ($3,1,$4);} | PARSEOP_RETURN {$$ = TrLinkChildren (TrCreateLeafNode (PARSEOP_RETURN),1,TrSetNodeFlags (TrCreateLeafNode (PARSEOP_ZERO), NODE_IS_NULL_RETURN));} | PARSEOP_RETURN '(' error ')' {$$ = AslDoError(); yyclearin;} ; SignalTerm : PARSEOP_SIGNAL '(' {$$ = TrCreateLeafNode (PARSEOP_SIGNAL);} SuperName ')' {$$ = TrLinkChildren ($3,1,$4);} | PARSEOP_SIGNAL '(' error ')' {$$ = AslDoError(); yyclearin;} ; SleepTerm : PARSEOP_SLEEP '(' {$$ = TrCreateLeafNode (PARSEOP_SLEEP);} TermArg ')' {$$ = TrLinkChildren ($3,1,$4);} | PARSEOP_SLEEP '(' error ')' {$$ = AslDoError(); yyclearin;} ; StallTerm : PARSEOP_STALL '(' {$$ = TrCreateLeafNode (PARSEOP_STALL);} TermArg ')' {$$ = TrLinkChildren ($3,1,$4);} | PARSEOP_STALL '(' error ')' {$$ = AslDoError(); yyclearin;} ; SwitchTerm : PARSEOP_SWITCH '(' {$$ = TrCreateLeafNode (PARSEOP_SWITCH);} TermArg ')' '{' CaseDefaultTermList '}' {$$ = TrLinkChildren ($3,2,$4,$7);} | PARSEOP_SWITCH '(' error ')' {$$ = AslDoError(); yyclearin;} ; /* * Case-Default list; allow only one Default term and unlimited Case terms */ CaseDefaultTermList : {$$ = NULL;} | CaseTerm {} | DefaultTerm {} | CaseDefaultTermList CaseTerm {$$ = TrLinkPeerNode ($1,$2);} | CaseDefaultTermList DefaultTerm {$$ = TrLinkPeerNode ($1,$2);} /* Original - attempts to force zero or one default term within the switch */ /* CaseDefaultTermList : {$$ = NULL;} | CaseTermList DefaultTerm CaseTermList {$$ = TrLinkPeerNode ($1,TrLinkPeerNode ($2, $3));} | CaseTermList CaseTerm {$$ = TrLinkPeerNode ($1,$2);} ; CaseTermList : {$$ = NULL;} | CaseTerm {} | CaseTermList CaseTerm {$$ = TrLinkPeerNode ($1,$2);} ; */ CaseTerm : PARSEOP_CASE '(' {$$ = TrCreateLeafNode (PARSEOP_CASE);} DataObject ')' '{' TermList '}' {$$ = TrLinkChildren ($3,2,$4,$7);} | PARSEOP_CASE '(' error ')' {$$ = AslDoError(); yyclearin;} ; DefaultTerm : PARSEOP_DEFAULT '{' {$$ = TrCreateLeafNode (PARSEOP_DEFAULT);} TermList '}' {$$ = TrLinkChildren ($3,1,$4);} | PARSEOP_DEFAULT '{' error '}' {$$ = AslDoError(); yyclearin;} ; UnloadTerm : PARSEOP_UNLOAD '(' {$$ = TrCreateLeafNode (PARSEOP_UNLOAD);} SuperName ')' {$$ = TrLinkChildren ($3,1,$4);} | PARSEOP_UNLOAD '(' error ')' {$$ = AslDoError(); yyclearin;} ; WhileTerm : PARSEOP_WHILE '(' {$$ = TrCreateLeafNode (PARSEOP_WHILE);} TermArg ')' '{' TermList '}' {$$ = TrLinkChildren ($3,2,$4,$7);} | PARSEOP_WHILE '(' error ')' {$$ = AslDoError(); yyclearin;} ; /******* Type 2 opcodes *******************************************************/ AcquireTerm : PARSEOP_ACQUIRE '(' {$$ = TrCreateLeafNode (PARSEOP_ACQUIRE);} SuperName ',' WordConstExpr ')' {$$ = TrLinkChildren ($3,2,$4,$6);} | PARSEOP_ACQUIRE '(' error ')' {$$ = AslDoError(); yyclearin;} ; AddTerm : PARSEOP_ADD '(' {$$ = TrCreateLeafNode (PARSEOP_ADD);} TermArg TermArgItem Target ')' {$$ = TrLinkChildren ($3,3,$4,$5,$6);} | PARSEOP_ADD '(' error ')' {$$ = AslDoError(); yyclearin;} ; AndTerm : PARSEOP_AND '(' {$$ = TrCreateLeafNode (PARSEOP_AND);} TermArg TermArgItem Target ')' {$$ = TrLinkChildren ($3,3,$4,$5,$6);} | PARSEOP_AND '(' error ')' {$$ = AslDoError(); yyclearin;} ; ConcatTerm : PARSEOP_CONCATENATE '(' {$$ = TrCreateLeafNode (PARSEOP_CONCATENATE);} TermArg TermArgItem Target ')' {$$ = TrLinkChildren ($3,3,$4,$5,$6);} | PARSEOP_CONCATENATE '(' error ')' {$$ = AslDoError(); yyclearin;} ; ConcatResTerm : PARSEOP_CONCATENATERESTEMPLATE '(' {$$ = TrCreateLeafNode (PARSEOP_CONCATENATERESTEMPLATE);} TermArg TermArgItem Target ')' {$$ = TrLinkChildren ($3,3,$4,$5,$6);} | PARSEOP_CONCATENATERESTEMPLATE '(' error ')' {$$ = AslDoError(); yyclearin;} ; CondRefOfTerm : PARSEOP_CONDREFOF '(' {$$ = TrCreateLeafNode (PARSEOP_CONDREFOF);} SuperName Target ')' {$$ = TrLinkChildren ($3,2,$4,$5);} | PARSEOP_CONDREFOF '(' error ')' {$$ = AslDoError(); yyclearin;} ; CopyObjectTerm : PARSEOP_COPYOBJECT '(' {$$ = TrCreateLeafNode (PARSEOP_COPYOBJECT);} TermArg ',' SimpleTarget ')' {$$ = TrLinkChildren ($3,2,$4,TrSetNodeFlags ($6, NODE_IS_TARGET));} | PARSEOP_COPYOBJECT '(' error ')' {$$ = AslDoError(); yyclearin;} ; DecTerm : PARSEOP_DECREMENT '(' {$$ = TrCreateLeafNode (PARSEOP_DECREMENT);} SuperName ')' {$$ = TrLinkChildren ($3,1,$4);} | PARSEOP_DECREMENT '(' error ')' {$$ = AslDoError(); yyclearin;} ; DerefOfTerm : PARSEOP_DEREFOF '(' {$$ = TrCreateLeafNode (PARSEOP_DEREFOF);} TermArg ')' {$$ = TrLinkChildren ($3,1,$4);} | PARSEOP_DEREFOF '(' error ')' {$$ = AslDoError(); yyclearin;} ; DivideTerm : PARSEOP_DIVIDE '(' {$$ = TrCreateLeafNode (PARSEOP_DIVIDE);} TermArg TermArgItem Target Target ')' {$$ = TrLinkChildren ($3,4,$4,$5,$6,$7);} | PARSEOP_DIVIDE '(' error ')' {$$ = AslDoError(); yyclearin;} ; FindSetLeftBitTerm : PARSEOP_FINDSETLEFTBIT '(' {$$ = TrCreateLeafNode (PARSEOP_FINDSETLEFTBIT);} TermArg Target ')' {$$ = TrLinkChildren ($3,2,$4,$5);} | PARSEOP_FINDSETLEFTBIT '(' error ')' {$$ = AslDoError(); yyclearin;} ; FindSetRightBitTerm : PARSEOP_FINDSETRIGHTBIT '(' {$$ = TrCreateLeafNode (PARSEOP_FINDSETRIGHTBIT);} TermArg Target ')' {$$ = TrLinkChildren ($3,2,$4,$5);} | PARSEOP_FINDSETRIGHTBIT '(' error ')' {$$ = AslDoError(); yyclearin;} ; FromBCDTerm : PARSEOP_FROMBCD '(' {$$ = TrCreateLeafNode (PARSEOP_FROMBCD);} TermArg Target ')' {$$ = TrLinkChildren ($3,2,$4,$5);} | PARSEOP_FROMBCD '(' error ')' {$$ = AslDoError(); yyclearin;} ; IncTerm : PARSEOP_INCREMENT '(' {$$ = TrCreateLeafNode (PARSEOP_INCREMENT);} SuperName ')' {$$ = TrLinkChildren ($3,1,$4);} | PARSEOP_INCREMENT '(' error ')' {$$ = AslDoError(); yyclearin;} ; IndexTerm : PARSEOP_INDEX '(' {$$ = TrCreateLeafNode (PARSEOP_INDEX);} TermArg TermArgItem Target ')' {$$ = TrLinkChildren ($3,3,$4,$5,$6);} | PARSEOP_INDEX '(' error ')' {$$ = AslDoError(); yyclearin;} ; LAndTerm : PARSEOP_LAND '(' {$$ = TrCreateLeafNode (PARSEOP_LAND);} TermArg TermArgItem ')' {$$ = TrLinkChildren ($3,2,$4,$5);} | PARSEOP_LAND '(' error ')' {$$ = AslDoError(); yyclearin;} ; LEqualTerm : PARSEOP_LEQUAL '(' {$$ = TrCreateLeafNode (PARSEOP_LEQUAL);} TermArg TermArgItem ')' {$$ = TrLinkChildren ($3,2,$4,$5);} | PARSEOP_LEQUAL '(' error ')' {$$ = AslDoError(); yyclearin;} ; LGreaterTerm : PARSEOP_LGREATER '(' {$$ = TrCreateLeafNode (PARSEOP_LGREATER);} TermArg TermArgItem ')' {$$ = TrLinkChildren ($3,2,$4,$5);} | PARSEOP_LGREATER '(' error ')' {$$ = AslDoError(); yyclearin;} ; LGreaterEqualTerm : PARSEOP_LGREATEREQUAL '(' {$$ = TrCreateLeafNode (PARSEOP_LLESS);} TermArg TermArgItem ')' {$$ = TrCreateNode (PARSEOP_LNOT, 1, TrLinkChildren ($3,2,$4,$5));} | PARSEOP_LGREATEREQUAL '(' error ')' {$$ = AslDoError(); yyclearin;} ; LLessTerm : PARSEOP_LLESS '(' {$$ = TrCreateLeafNode (PARSEOP_LLESS);} TermArg TermArgItem ')' {$$ = TrLinkChildren ($3,2,$4,$5);} | PARSEOP_LLESS '(' error ')' {$$ = AslDoError(); yyclearin;} ; LLessEqualTerm : PARSEOP_LLESSEQUAL '(' {$$ = TrCreateLeafNode (PARSEOP_LGREATER);} TermArg TermArgItem ')' {$$ = TrCreateNode (PARSEOP_LNOT, 1, TrLinkChildren ($3,2,$4,$5));} | PARSEOP_LLESSEQUAL '(' error ')' {$$ = AslDoError(); yyclearin;} ; LNotTerm : PARSEOP_LNOT '(' {$$ = TrCreateLeafNode (PARSEOP_LNOT);} TermArg ')' {$$ = TrLinkChildren ($3,1,$4);} | PARSEOP_LNOT '(' error ')' {$$ = AslDoError(); yyclearin;} ; LNotEqualTerm : PARSEOP_LNOTEQUAL '(' {$$ = TrCreateLeafNode (PARSEOP_LEQUAL);} TermArg TermArgItem ')' {$$ = TrCreateNode (PARSEOP_LNOT, 1, TrLinkChildren ($3,2,$4,$5));} | PARSEOP_LNOTEQUAL '(' error ')' {$$ = AslDoError(); yyclearin;} ; LoadTableTerm : PARSEOP_LOADTABLE '(' {$$ = TrCreateLeafNode (PARSEOP_LOADTABLE);} TermArg TermArgItem TermArgItem OptionalListString OptionalListString OptionalReference ')' {$$ = TrLinkChildren ($3,6,$4,$5,$6,$7,$8,$9);} | PARSEOP_LOADTABLE '(' error ')' {$$ = AslDoError(); yyclearin;} ; LOrTerm : PARSEOP_LOR '(' {$$ = TrCreateLeafNode (PARSEOP_LOR);} TermArg TermArgItem ')' {$$ = TrLinkChildren ($3,2,$4,$5);} | PARSEOP_LOR '(' error ')' {$$ = AslDoError(); yyclearin;} ; MatchTerm : PARSEOP_MATCH '(' {$$ = TrCreateLeafNode (PARSEOP_MATCH);} TermArg ',' MatchOpKeyword TermArgItem ',' MatchOpKeyword TermArgItem TermArgItem ')' {$$ = TrLinkChildren ($3,6,$4,$6,$7,$9,$10,$11);} | PARSEOP_MATCH '(' error ')' {$$ = AslDoError(); yyclearin;} ; MidTerm : PARSEOP_MID '(' {$$ = TrCreateLeafNode (PARSEOP_MID);} TermArg TermArgItem TermArgItem Target ')' {$$ = TrLinkChildren ($3,4,$4,$5,$6,$7);} | PARSEOP_MID '(' error ')' {$$ = AslDoError(); yyclearin;} ; ModTerm : PARSEOP_MOD '(' {$$ = TrCreateLeafNode (PARSEOP_MOD);} TermArg TermArgItem Target ')' {$$ = TrLinkChildren ($3,3,$4,$5,$6);} | PARSEOP_MOD '(' error ')' {$$ = AslDoError(); yyclearin;} ; MultiplyTerm : PARSEOP_MULTIPLY '(' {$$ = TrCreateLeafNode (PARSEOP_MULTIPLY);} TermArg TermArgItem Target ')' {$$ = TrLinkChildren ($3,3,$4,$5,$6);} | PARSEOP_MULTIPLY '(' error ')' {$$ = AslDoError(); yyclearin;} ; NAndTerm : PARSEOP_NAND '(' {$$ = TrCreateLeafNode (PARSEOP_NAND);} TermArg TermArgItem Target ')' {$$ = TrLinkChildren ($3,3,$4,$5,$6);} | PARSEOP_NAND '(' error ')' {$$ = AslDoError(); yyclearin;} ; NOrTerm : PARSEOP_NOR '(' {$$ = TrCreateLeafNode (PARSEOP_NOR);} TermArg TermArgItem Target ')' {$$ = TrLinkChildren ($3,3,$4,$5,$6);} | PARSEOP_NOR '(' error ')' {$$ = AslDoError(); yyclearin;} ; NotTerm : PARSEOP_NOT '(' {$$ = TrCreateLeafNode (PARSEOP_NOT);} TermArg Target ')' {$$ = TrLinkChildren ($3,2,$4,$5);} | PARSEOP_NOT '(' error ')' {$$ = AslDoError(); yyclearin;} ; ObjectTypeTerm : PARSEOP_OBJECTTYPE '(' {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE);} ObjectTypeName ')' {$$ = TrLinkChildren ($3,1,$4);} | PARSEOP_OBJECTTYPE '(' error ')' {$$ = AslDoError(); yyclearin;} ; OrTerm : PARSEOP_OR '(' {$$ = TrCreateLeafNode (PARSEOP_OR);} TermArg TermArgItem Target ')' {$$ = TrLinkChildren ($3,3,$4,$5,$6);} | PARSEOP_OR '(' error ')' {$$ = AslDoError(); yyclearin;} ; /* * In RefOf, the node isn't really a target, but we can't keep track of it after * we've taken a pointer to it. (hard to tell if a local becomes initialized this way.) */ RefOfTerm : PARSEOP_REFOF '(' {$$ = TrCreateLeafNode (PARSEOP_REFOF);} SuperName ')' {$$ = TrLinkChildren ($3,1,TrSetNodeFlags ($4, NODE_IS_TARGET));} | PARSEOP_REFOF '(' error ')' {$$ = AslDoError(); yyclearin;} ; ShiftLeftTerm : PARSEOP_SHIFTLEFT '(' {$$ = TrCreateLeafNode (PARSEOP_SHIFTLEFT);} TermArg TermArgItem Target ')' {$$ = TrLinkChildren ($3,3,$4,$5,$6);} | PARSEOP_SHIFTLEFT '(' error ')' {$$ = AslDoError(); yyclearin;} ; ShiftRightTerm : PARSEOP_SHIFTRIGHT '(' {$$ = TrCreateLeafNode (PARSEOP_SHIFTRIGHT);} TermArg TermArgItem Target ')' {$$ = TrLinkChildren ($3,3,$4,$5,$6);} | PARSEOP_SHIFTRIGHT '(' error ')' {$$ = AslDoError(); yyclearin;} ; SizeOfTerm : PARSEOP_SIZEOF '(' {$$ = TrCreateLeafNode (PARSEOP_SIZEOF);} SuperName ')' {$$ = TrLinkChildren ($3,1,$4);} | PARSEOP_SIZEOF '(' error ')' {$$ = AslDoError(); yyclearin;} ; StoreTerm : PARSEOP_STORE '(' {$$ = TrCreateLeafNode (PARSEOP_STORE);} TermArg ',' SuperName ')' {$$ = TrLinkChildren ($3,2,$4,TrSetNodeFlags ($6, NODE_IS_TARGET));} | PARSEOP_STORE '(' error ')' {$$ = AslDoError(); yyclearin;} ; SubtractTerm : PARSEOP_SUBTRACT '(' {$$ = TrCreateLeafNode (PARSEOP_SUBTRACT);} TermArg TermArgItem Target ')' {$$ = TrLinkChildren ($3,3,$4,$5,$6);} | PARSEOP_SUBTRACT '(' error ')' {$$ = AslDoError(); yyclearin;} ; TimerTerm : PARSEOP_TIMER '(' {$$ = TrCreateLeafNode (PARSEOP_TIMER);} ')' {$$ = TrLinkChildren ($3,0);} | PARSEOP_TIMER {$$ = TrLinkChildren (TrCreateLeafNode (PARSEOP_TIMER),0);} | PARSEOP_TIMER '(' error ')' {$$ = AslDoError(); yyclearin;} ; ToBCDTerm : PARSEOP_TOBCD '(' {$$ = TrCreateLeafNode (PARSEOP_TOBCD);} TermArg Target ')' {$$ = TrLinkChildren ($3,2,$4,$5);} | PARSEOP_TOBCD '(' error ')' {$$ = AslDoError(); yyclearin;} ; ToBufferTerm : PARSEOP_TOBUFFER '(' {$$ = TrCreateLeafNode (PARSEOP_TOBUFFER);} TermArg Target ')' {$$ = TrLinkChildren ($3,2,$4,$5);} | PARSEOP_TOBUFFER '(' error ')' {$$ = AslDoError(); yyclearin;} ; ToDecimalStringTerm : PARSEOP_TODECIMALSTRING '(' {$$ = TrCreateLeafNode (PARSEOP_TODECIMALSTRING);} TermArg Target ')' {$$ = TrLinkChildren ($3,2,$4,$5);} | PARSEOP_TODECIMALSTRING '(' error ')' {$$ = AslDoError(); yyclearin;} ; ToHexStringTerm : PARSEOP_TOHEXSTRING '(' {$$ = TrCreateLeafNode (PARSEOP_TOHEXSTRING);} TermArg Target ')' {$$ = TrLinkChildren ($3,2,$4,$5);} | PARSEOP_TOHEXSTRING '(' error ')' {$$ = AslDoError(); yyclearin;} ; ToIntegerTerm : PARSEOP_TOINTEGER '(' {$$ = TrCreateLeafNode (PARSEOP_TOINTEGER);} TermArg Target ')' {$$ = TrLinkChildren ($3,2,$4,$5);} | PARSEOP_TOINTEGER '(' error ')' {$$ = AslDoError(); yyclearin;} ; ToStringTerm : PARSEOP_TOSTRING '(' {$$ = TrCreateLeafNode (PARSEOP_TOSTRING);} TermArg OptionalCount Target ')' {$$ = TrLinkChildren ($3,3,$4,$5,$6);} | PARSEOP_TOSTRING '(' error ')' {$$ = AslDoError(); yyclearin;} ; ToUUIDTerm : PARSEOP_TOUUID '(' StringData ')' {$$ = TrUpdateNode (PARSEOP_TOUUID, $3);} | PARSEOP_TOUUID '(' error ')' {$$ = AslDoError(); yyclearin;} ; WaitTerm : PARSEOP_WAIT '(' {$$ = TrCreateLeafNode (PARSEOP_WAIT);} SuperName TermArgItem ')' {$$ = TrLinkChildren ($3,2,$4,$5);} | PARSEOP_WAIT '(' error ')' {$$ = AslDoError(); yyclearin;} ; XOrTerm : PARSEOP_XOR '(' {$$ = TrCreateLeafNode (PARSEOP_XOR);} TermArg TermArgItem Target ')' {$$ = TrLinkChildren ($3,3,$4,$5,$6);} | PARSEOP_XOR '(' error ')' {$$ = AslDoError(); yyclearin;} ; /******* Keywords *************************************************************/ AccessAttribKeyword : PARSEOP_ACCESSATTRIB_BLOCK {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_BLOCK);} | PARSEOP_ACCESSATTRIB_BLOCK_CALL {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_BLOCK_CALL);} | PARSEOP_ACCESSATTRIB_BYTE {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_BYTE);} | PARSEOP_ACCESSATTRIB_QUICK {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_QUICK );} | PARSEOP_ACCESSATTRIB_SND_RCV {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_SND_RCV);} | PARSEOP_ACCESSATTRIB_WORD {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_WORD);} | PARSEOP_ACCESSATTRIB_WORD_CALL {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_WORD_CALL);} | PARSEOP_ACCESSATTRIB_MULTIBYTE '(' {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_MULTIBYTE);} ByteConst ')' {$$ = TrLinkChildren ($3,1,$4);} | PARSEOP_ACCESSATTRIB_RAW_BYTES '(' {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_RAW_BYTES);} ByteConst ')' {$$ = TrLinkChildren ($3,1,$4);} | PARSEOP_ACCESSATTRIB_RAW_PROCESS '(' {$$ = TrCreateLeafNode (PARSEOP_ACCESSATTRIB_RAW_PROCESS);} ByteConst ')' {$$ = TrLinkChildren ($3,1,$4);} ; AccessTypeKeyword : PARSEOP_ACCESSTYPE_ANY {$$ = TrCreateLeafNode (PARSEOP_ACCESSTYPE_ANY);} | PARSEOP_ACCESSTYPE_BYTE {$$ = TrCreateLeafNode (PARSEOP_ACCESSTYPE_BYTE);} | PARSEOP_ACCESSTYPE_WORD {$$ = TrCreateLeafNode (PARSEOP_ACCESSTYPE_WORD);} | PARSEOP_ACCESSTYPE_DWORD {$$ = TrCreateLeafNode (PARSEOP_ACCESSTYPE_DWORD);} | PARSEOP_ACCESSTYPE_QWORD {$$ = TrCreateLeafNode (PARSEOP_ACCESSTYPE_QWORD);} | PARSEOP_ACCESSTYPE_BUF {$$ = TrCreateLeafNode (PARSEOP_ACCESSTYPE_BUF);} ; AddressingModeKeyword : PARSEOP_ADDRESSINGMODE_7BIT {$$ = TrCreateLeafNode (PARSEOP_ADDRESSINGMODE_7BIT);} | PARSEOP_ADDRESSINGMODE_10BIT {$$ = TrCreateLeafNode (PARSEOP_ADDRESSINGMODE_10BIT);} ; AddressKeyword : PARSEOP_ADDRESSTYPE_MEMORY {$$ = TrCreateLeafNode (PARSEOP_ADDRESSTYPE_MEMORY);} | PARSEOP_ADDRESSTYPE_RESERVED {$$ = TrCreateLeafNode (PARSEOP_ADDRESSTYPE_RESERVED);} | PARSEOP_ADDRESSTYPE_NVS {$$ = TrCreateLeafNode (PARSEOP_ADDRESSTYPE_NVS);} | PARSEOP_ADDRESSTYPE_ACPI {$$ = TrCreateLeafNode (PARSEOP_ADDRESSTYPE_ACPI);} ; AddressSpaceKeyword : ByteConst {$$ = UtCheckIntegerRange ($1, 0x0A, 0xFF);} | RegionSpaceKeyword {} ; BitsPerByteKeyword : PARSEOP_BITSPERBYTE_FIVE {$$ = TrCreateLeafNode (PARSEOP_BITSPERBYTE_FIVE);} | PARSEOP_BITSPERBYTE_SIX {$$ = TrCreateLeafNode (PARSEOP_BITSPERBYTE_SIX);} | PARSEOP_BITSPERBYTE_SEVEN {$$ = TrCreateLeafNode (PARSEOP_BITSPERBYTE_SEVEN);} | PARSEOP_BITSPERBYTE_EIGHT {$$ = TrCreateLeafNode (PARSEOP_BITSPERBYTE_EIGHT);} | PARSEOP_BITSPERBYTE_NINE {$$ = TrCreateLeafNode (PARSEOP_BITSPERBYTE_NINE);} ; ClockPhaseKeyword : PARSEOP_CLOCKPHASE_FIRST {$$ = TrCreateLeafNode (PARSEOP_CLOCKPHASE_FIRST);} | PARSEOP_CLOCKPHASE_SECOND {$$ = TrCreateLeafNode (PARSEOP_CLOCKPHASE_SECOND);} ; ClockPolarityKeyword : PARSEOP_CLOCKPOLARITY_LOW {$$ = TrCreateLeafNode (PARSEOP_CLOCKPOLARITY_LOW);} | PARSEOP_CLOCKPOLARITY_HIGH {$$ = TrCreateLeafNode (PARSEOP_CLOCKPOLARITY_HIGH);} ; DecodeKeyword : PARSEOP_DECODETYPE_POS {$$ = TrCreateLeafNode (PARSEOP_DECODETYPE_POS);} | PARSEOP_DECODETYPE_SUB {$$ = TrCreateLeafNode (PARSEOP_DECODETYPE_SUB);} ; DevicePolarityKeyword : PARSEOP_DEVICEPOLARITY_LOW {$$ = TrCreateLeafNode (PARSEOP_DEVICEPOLARITY_LOW);} | PARSEOP_DEVICEPOLARITY_HIGH {$$ = TrCreateLeafNode (PARSEOP_DEVICEPOLARITY_HIGH);} ; DMATypeKeyword : PARSEOP_DMATYPE_A {$$ = TrCreateLeafNode (PARSEOP_DMATYPE_A);} | PARSEOP_DMATYPE_COMPATIBILITY {$$ = TrCreateLeafNode (PARSEOP_DMATYPE_COMPATIBILITY);} | PARSEOP_DMATYPE_B {$$ = TrCreateLeafNode (PARSEOP_DMATYPE_B);} | PARSEOP_DMATYPE_F {$$ = TrCreateLeafNode (PARSEOP_DMATYPE_F);} ; EndianKeyword : PARSEOP_ENDIAN_LITTLE {$$ = TrCreateLeafNode (PARSEOP_ENDIAN_LITTLE);} | PARSEOP_ENDIAN_BIG {$$ = TrCreateLeafNode (PARSEOP_ENDIAN_BIG);} ; FlowControlKeyword : PARSEOP_FLOWCONTROL_HW {$$ = TrCreateLeafNode (PARSEOP_FLOWCONTROL_HW);} | PARSEOP_FLOWCONTROL_NONE {$$ = TrCreateLeafNode (PARSEOP_FLOWCONTROL_NONE);} | PARSEOP_FLOWCONTROL_SW {$$ = TrCreateLeafNode (PARSEOP_FLOWCONTROL_SW);} ; InterruptLevel : PARSEOP_INTLEVEL_ACTIVEBOTH {$$ = TrCreateLeafNode (PARSEOP_INTLEVEL_ACTIVEBOTH);} | PARSEOP_INTLEVEL_ACTIVEHIGH {$$ = TrCreateLeafNode (PARSEOP_INTLEVEL_ACTIVEHIGH);} | PARSEOP_INTLEVEL_ACTIVELOW {$$ = TrCreateLeafNode (PARSEOP_INTLEVEL_ACTIVELOW);} ; InterruptTypeKeyword : PARSEOP_INTTYPE_EDGE {$$ = TrCreateLeafNode (PARSEOP_INTTYPE_EDGE);} | PARSEOP_INTTYPE_LEVEL {$$ = TrCreateLeafNode (PARSEOP_INTTYPE_LEVEL);} ; IODecodeKeyword : PARSEOP_IODECODETYPE_16 {$$ = TrCreateLeafNode (PARSEOP_IODECODETYPE_16);} | PARSEOP_IODECODETYPE_10 {$$ = TrCreateLeafNode (PARSEOP_IODECODETYPE_10);} ; IoRestrictionKeyword : PARSEOP_IORESTRICT_IN {$$ = TrCreateLeafNode (PARSEOP_IORESTRICT_IN);} | PARSEOP_IORESTRICT_OUT {$$ = TrCreateLeafNode (PARSEOP_IORESTRICT_OUT);} | PARSEOP_IORESTRICT_NONE {$$ = TrCreateLeafNode (PARSEOP_IORESTRICT_NONE);} | PARSEOP_IORESTRICT_PRESERVE {$$ = TrCreateLeafNode (PARSEOP_IORESTRICT_PRESERVE);} ; LockRuleKeyword : PARSEOP_LOCKRULE_LOCK {$$ = TrCreateLeafNode (PARSEOP_LOCKRULE_LOCK);} | PARSEOP_LOCKRULE_NOLOCK {$$ = TrCreateLeafNode (PARSEOP_LOCKRULE_NOLOCK);} ; MatchOpKeyword : PARSEOP_MATCHTYPE_MTR {$$ = TrCreateLeafNode (PARSEOP_MATCHTYPE_MTR);} | PARSEOP_MATCHTYPE_MEQ {$$ = TrCreateLeafNode (PARSEOP_MATCHTYPE_MEQ);} | PARSEOP_MATCHTYPE_MLE {$$ = TrCreateLeafNode (PARSEOP_MATCHTYPE_MLE);} | PARSEOP_MATCHTYPE_MLT {$$ = TrCreateLeafNode (PARSEOP_MATCHTYPE_MLT);} | PARSEOP_MATCHTYPE_MGE {$$ = TrCreateLeafNode (PARSEOP_MATCHTYPE_MGE);} | PARSEOP_MATCHTYPE_MGT {$$ = TrCreateLeafNode (PARSEOP_MATCHTYPE_MGT);} ; MaxKeyword : PARSEOP_MAXTYPE_FIXED {$$ = TrCreateLeafNode (PARSEOP_MAXTYPE_FIXED);} | PARSEOP_MAXTYPE_NOTFIXED {$$ = TrCreateLeafNode (PARSEOP_MAXTYPE_NOTFIXED);} ; MemTypeKeyword : PARSEOP_MEMTYPE_CACHEABLE {$$ = TrCreateLeafNode (PARSEOP_MEMTYPE_CACHEABLE);} | PARSEOP_MEMTYPE_WRITECOMBINING {$$ = TrCreateLeafNode (PARSEOP_MEMTYPE_WRITECOMBINING);} | PARSEOP_MEMTYPE_PREFETCHABLE {$$ = TrCreateLeafNode (PARSEOP_MEMTYPE_PREFETCHABLE);} | PARSEOP_MEMTYPE_NONCACHEABLE {$$ = TrCreateLeafNode (PARSEOP_MEMTYPE_NONCACHEABLE);} ; MinKeyword : PARSEOP_MINTYPE_FIXED {$$ = TrCreateLeafNode (PARSEOP_MINTYPE_FIXED);} | PARSEOP_MINTYPE_NOTFIXED {$$ = TrCreateLeafNode (PARSEOP_MINTYPE_NOTFIXED);} ; ObjectTypeKeyword : PARSEOP_OBJECTTYPE_UNK {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_UNK);} | PARSEOP_OBJECTTYPE_INT {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_INT);} | PARSEOP_OBJECTTYPE_STR {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_STR);} | PARSEOP_OBJECTTYPE_BUF {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_BUF);} | PARSEOP_OBJECTTYPE_PKG {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_PKG);} | PARSEOP_OBJECTTYPE_FLD {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_FLD);} | PARSEOP_OBJECTTYPE_DEV {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_DEV);} | PARSEOP_OBJECTTYPE_EVT {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_EVT);} | PARSEOP_OBJECTTYPE_MTH {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_MTH);} | PARSEOP_OBJECTTYPE_MTX {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_MTX);} | PARSEOP_OBJECTTYPE_OPR {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_OPR);} | PARSEOP_OBJECTTYPE_POW {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_POW);} | PARSEOP_OBJECTTYPE_PRO {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_PRO);} | PARSEOP_OBJECTTYPE_THZ {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_THZ);} | PARSEOP_OBJECTTYPE_BFF {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_BFF);} | PARSEOP_OBJECTTYPE_DDB {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_DDB);} ; ParityTypeKeyword : PARSEOP_PARITYTYPE_SPACE {$$ = TrCreateLeafNode (PARSEOP_PARITYTYPE_SPACE);} | PARSEOP_PARITYTYPE_MARK {$$ = TrCreateLeafNode (PARSEOP_PARITYTYPE_MARK);} | PARSEOP_PARITYTYPE_ODD {$$ = TrCreateLeafNode (PARSEOP_PARITYTYPE_ODD);} | PARSEOP_PARITYTYPE_EVEN {$$ = TrCreateLeafNode (PARSEOP_PARITYTYPE_EVEN);} | PARSEOP_PARITYTYPE_NONE {$$ = TrCreateLeafNode (PARSEOP_PARITYTYPE_NONE);} ; PinConfigByte : PinConfigKeyword {$$ = $1;} | ByteConstExpr {$$ = UtCheckIntegerRange ($1, 0x80, 0xFF);} ; PinConfigKeyword : PARSEOP_PIN_NOPULL {$$ = TrCreateLeafNode (PARSEOP_PIN_NOPULL);} | PARSEOP_PIN_PULLDOWN {$$ = TrCreateLeafNode (PARSEOP_PIN_PULLDOWN);} | PARSEOP_PIN_PULLUP {$$ = TrCreateLeafNode (PARSEOP_PIN_PULLUP);} | PARSEOP_PIN_PULLDEFAULT {$$ = TrCreateLeafNode (PARSEOP_PIN_PULLDEFAULT);} ; RangeTypeKeyword : PARSEOP_RANGETYPE_ISAONLY {$$ = TrCreateLeafNode (PARSEOP_RANGETYPE_ISAONLY);} | PARSEOP_RANGETYPE_NONISAONLY {$$ = TrCreateLeafNode (PARSEOP_RANGETYPE_NONISAONLY);} | PARSEOP_RANGETYPE_ENTIRE {$$ = TrCreateLeafNode (PARSEOP_RANGETYPE_ENTIRE);} ; RegionSpaceKeyword : PARSEOP_REGIONSPACE_IO {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_IO);} | PARSEOP_REGIONSPACE_MEM {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_MEM);} | PARSEOP_REGIONSPACE_PCI {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_PCI);} | PARSEOP_REGIONSPACE_EC {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_EC);} | PARSEOP_REGIONSPACE_SMBUS {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_SMBUS);} | PARSEOP_REGIONSPACE_CMOS {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_CMOS);} | PARSEOP_REGIONSPACE_PCIBAR {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_PCIBAR);} | PARSEOP_REGIONSPACE_IPMI {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_IPMI);} | PARSEOP_REGIONSPACE_GPIO {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_GPIO);} | PARSEOP_REGIONSPACE_GSBUS {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_GSBUS);} | PARSEOP_REGIONSPACE_PCC {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_PCC);} | PARSEOP_REGIONSPACE_FFIXEDHW {$$ = TrCreateLeafNode (PARSEOP_REGIONSPACE_FFIXEDHW);} ; ResourceTypeKeyword : PARSEOP_RESOURCETYPE_CONSUMER {$$ = TrCreateLeafNode (PARSEOP_RESOURCETYPE_CONSUMER);} | PARSEOP_RESOURCETYPE_PRODUCER {$$ = TrCreateLeafNode (PARSEOP_RESOURCETYPE_PRODUCER);} ; SerializeRuleKeyword : PARSEOP_SERIALIZERULE_SERIAL {$$ = TrCreateLeafNode (PARSEOP_SERIALIZERULE_SERIAL);} | PARSEOP_SERIALIZERULE_NOTSERIAL {$$ = TrCreateLeafNode (PARSEOP_SERIALIZERULE_NOTSERIAL);} ; ShareTypeKeyword : PARSEOP_SHARETYPE_SHARED {$$ = TrCreateLeafNode (PARSEOP_SHARETYPE_SHARED);} | PARSEOP_SHARETYPE_EXCLUSIVE {$$ = TrCreateLeafNode (PARSEOP_SHARETYPE_EXCLUSIVE);} | PARSEOP_SHARETYPE_SHAREDWAKE {$$ = TrCreateLeafNode (PARSEOP_SHARETYPE_SHAREDWAKE);} | PARSEOP_SHARETYPE_EXCLUSIVEWAKE {$$ = TrCreateLeafNode (PARSEOP_SHARETYPE_EXCLUSIVEWAKE);} ; SlaveModeKeyword : PARSEOP_SLAVEMODE_CONTROLLERINIT {$$ = TrCreateLeafNode (PARSEOP_SLAVEMODE_CONTROLLERINIT);} | PARSEOP_SLAVEMODE_DEVICEINIT {$$ = TrCreateLeafNode (PARSEOP_SLAVEMODE_DEVICEINIT);} ; StopBitsKeyword : PARSEOP_STOPBITS_TWO {$$ = TrCreateLeafNode (PARSEOP_STOPBITS_TWO);} | PARSEOP_STOPBITS_ONEPLUSHALF {$$ = TrCreateLeafNode (PARSEOP_STOPBITS_ONEPLUSHALF);} | PARSEOP_STOPBITS_ONE {$$ = TrCreateLeafNode (PARSEOP_STOPBITS_ONE);} | PARSEOP_STOPBITS_ZERO {$$ = TrCreateLeafNode (PARSEOP_STOPBITS_ZERO);} ; TranslationKeyword : PARSEOP_TRANSLATIONTYPE_SPARSE {$$ = TrCreateLeafNode (PARSEOP_TRANSLATIONTYPE_SPARSE);} | PARSEOP_TRANSLATIONTYPE_DENSE {$$ = TrCreateLeafNode (PARSEOP_TRANSLATIONTYPE_DENSE);} ; TypeKeyword : PARSEOP_TYPE_TRANSLATION {$$ = TrCreateLeafNode (PARSEOP_TYPE_TRANSLATION);} | PARSEOP_TYPE_STATIC {$$ = TrCreateLeafNode (PARSEOP_TYPE_STATIC);} ; UpdateRuleKeyword : PARSEOP_UPDATERULE_PRESERVE {$$ = TrCreateLeafNode (PARSEOP_UPDATERULE_PRESERVE);} | PARSEOP_UPDATERULE_ONES {$$ = TrCreateLeafNode (PARSEOP_UPDATERULE_ONES);} | PARSEOP_UPDATERULE_ZEROS {$$ = TrCreateLeafNode (PARSEOP_UPDATERULE_ZEROS);} ; WireModeKeyword : PARSEOP_WIREMODE_FOUR {$$ = TrCreateLeafNode (PARSEOP_WIREMODE_FOUR);} | PARSEOP_WIREMODE_THREE {$$ = TrCreateLeafNode (PARSEOP_WIREMODE_THREE);} ; XferSizeKeyword : PARSEOP_XFERSIZE_8 {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_8, 0);} | PARSEOP_XFERSIZE_16 {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_16, 1);} | PARSEOP_XFERSIZE_32 {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_32, 2);} | PARSEOP_XFERSIZE_64 {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_64, 3);} | PARSEOP_XFERSIZE_128 {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_128, 4);} | PARSEOP_XFERSIZE_256 {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_256, 5);} ; XferTypeKeyword : PARSEOP_XFERTYPE_8 {$$ = TrCreateLeafNode (PARSEOP_XFERTYPE_8);} | PARSEOP_XFERTYPE_8_16 {$$ = TrCreateLeafNode (PARSEOP_XFERTYPE_8_16);} | PARSEOP_XFERTYPE_16 {$$ = TrCreateLeafNode (PARSEOP_XFERTYPE_16);} ; /******* Miscellaneous Types **************************************************/ SuperName : NameString {} | ArgTerm {} | LocalTerm {} | DebugTerm {} | Type6Opcode {} /* For ObjectType: SuperName except for UserTerm (method invocation) */ ObjectTypeName : NameString {} | ArgTerm {} | LocalTerm {} | DebugTerm {} | RefOfTerm {} | DerefOfTerm {} | IndexTerm {} /* | UserTerm {} */ /* Caused reduce/reduce with Type6Opcode->UserTerm */ ; ArgTerm : PARSEOP_ARG0 {$$ = TrCreateLeafNode (PARSEOP_ARG0);} | PARSEOP_ARG1 {$$ = TrCreateLeafNode (PARSEOP_ARG1);} | PARSEOP_ARG2 {$$ = TrCreateLeafNode (PARSEOP_ARG2);} | PARSEOP_ARG3 {$$ = TrCreateLeafNode (PARSEOP_ARG3);} | PARSEOP_ARG4 {$$ = TrCreateLeafNode (PARSEOP_ARG4);} | PARSEOP_ARG5 {$$ = TrCreateLeafNode (PARSEOP_ARG5);} | PARSEOP_ARG6 {$$ = TrCreateLeafNode (PARSEOP_ARG6);} ; LocalTerm : PARSEOP_LOCAL0 {$$ = TrCreateLeafNode (PARSEOP_LOCAL0);} | PARSEOP_LOCAL1 {$$ = TrCreateLeafNode (PARSEOP_LOCAL1);} | PARSEOP_LOCAL2 {$$ = TrCreateLeafNode (PARSEOP_LOCAL2);} | PARSEOP_LOCAL3 {$$ = TrCreateLeafNode (PARSEOP_LOCAL3);} | PARSEOP_LOCAL4 {$$ = TrCreateLeafNode (PARSEOP_LOCAL4);} | PARSEOP_LOCAL5 {$$ = TrCreateLeafNode (PARSEOP_LOCAL5);} | PARSEOP_LOCAL6 {$$ = TrCreateLeafNode (PARSEOP_LOCAL6);} | PARSEOP_LOCAL7 {$$ = TrCreateLeafNode (PARSEOP_LOCAL7);} ; DebugTerm : PARSEOP_DEBUG {$$ = TrCreateLeafNode (PARSEOP_DEBUG);} ; ByteConst : Integer {$$ = TrUpdateNode (PARSEOP_BYTECONST, $1);} ; WordConst : Integer {$$ = TrUpdateNode (PARSEOP_WORDCONST, $1);} ; DWordConst : Integer {$$ = TrUpdateNode (PARSEOP_DWORDCONST, $1);} ; QWordConst : Integer {$$ = TrUpdateNode (PARSEOP_QWORDCONST, $1);} ; Integer : PARSEOP_INTEGER {$$ = TrCreateValuedLeafNode (PARSEOP_INTEGER, AslCompilerlval.i);} ; String : PARSEOP_STRING_LITERAL {$$ = TrCreateValuedLeafNode (PARSEOP_STRING_LITERAL, (ACPI_NATIVE_INT) AslCompilerlval.s);} ; ConstTerm : ConstExprTerm {} | PARSEOP_REVISION {$$ = TrCreateLeafNode (PARSEOP_REVISION);} ; ConstExprTerm : PARSEOP_ZERO {$$ = TrCreateValuedLeafNode (PARSEOP_ZERO, 0);} | PARSEOP_ONE {$$ = TrCreateValuedLeafNode (PARSEOP_ONE, 1);} | PARSEOP_ONES {$$ = TrCreateValuedLeafNode (PARSEOP_ONES, ACPI_UINT64_MAX);} | PARSEOP___DATE__ {$$ = TrCreateConstantLeafNode (PARSEOP___DATE__);} | PARSEOP___FILE__ {$$ = TrCreateConstantLeafNode (PARSEOP___FILE__);} | PARSEOP___LINE__ {$$ = TrCreateConstantLeafNode (PARSEOP___LINE__);} | PARSEOP___PATH__ {$$ = TrCreateConstantLeafNode (PARSEOP___PATH__);} ; /* * The NODE_COMPILE_TIME_CONST flag in the following constant expressions * enables compile-time constant folding to reduce the Type3Opcodes/Type2IntegerOpcodes * to simple integers. It is an error if these types of expressions cannot be * reduced, since the AML grammar for ****ConstExpr requires a simple constant. * Note: The required byte length of the constant is passed through to the * constant folding code in the node AmlLength field. */ ByteConstExpr : Type3Opcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST); TrSetNodeAmlLength ($1, 1);} | Type2IntegerOpcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST); TrSetNodeAmlLength ($1, 1);} | ConstExprTerm {$$ = TrUpdateNode (PARSEOP_BYTECONST, $1);} | ByteConst {} ; WordConstExpr : Type3Opcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST); TrSetNodeAmlLength ($1, 2);} | Type2IntegerOpcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST); TrSetNodeAmlLength ($1, 2);} | ConstExprTerm {$$ = TrUpdateNode (PARSEOP_WORDCONST, $1);} | WordConst {} ; DWordConstExpr : Type3Opcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST); TrSetNodeAmlLength ($1, 4);} | Type2IntegerOpcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST); TrSetNodeAmlLength ($1, 4);} | ConstExprTerm {$$ = TrUpdateNode (PARSEOP_DWORDCONST, $1);} | DWordConst {} ; QWordConstExpr : Type3Opcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST); TrSetNodeAmlLength ($1, 8);} | Type2IntegerOpcode {$$ = TrSetNodeFlags ($1, NODE_COMPILE_TIME_CONST); TrSetNodeAmlLength ($1, 8);} | ConstExprTerm {$$ = TrUpdateNode (PARSEOP_QWORDCONST, $1);} | QWordConst {} ; /* OptionalCount must appear before ByteList or an incorrect reduction will result */ OptionalCount : {$$ = TrCreateLeafNode (PARSEOP_ONES);} /* Placeholder is a OnesOp object */ | ',' {$$ = TrCreateLeafNode (PARSEOP_ONES);} /* Placeholder is a OnesOp object */ | ',' TermArg {$$ = $2;} ; BufferTerm : PARSEOP_BUFFER '(' {$$ = TrCreateLeafNode (PARSEOP_BUFFER);} OptionalTermArg ')' '{' BufferTermData '}' {$$ = TrLinkChildren ($3,2,$4,$7);} | PARSEOP_BUFFER '(' error ')' {$$ = AslDoError(); yyclearin;} ; BufferTermData : ByteList {} | StringData {} ; ByteList : {$$ = NULL;} | ByteConstExpr | ByteList ',' /* Allows a trailing comma at list end */ | ByteList ',' ByteConstExpr {$$ = TrLinkPeerNode ($1,$3);} ; DataBufferTerm : PARSEOP_DATABUFFER '(' {$$ = TrCreateLeafNode (PARSEOP_DATABUFFER);} OptionalWordConst ')' '{' ByteList '}' {$$ = TrLinkChildren ($3,2,$4,$7);} | PARSEOP_DATABUFFER '(' error ')' {$$ = AslDoError(); yyclearin;} ; DWordList : {$$ = NULL;} | DWordConstExpr | DWordList ',' /* Allows a trailing comma at list end */ | DWordList ',' DWordConstExpr {$$ = TrLinkPeerNode ($1,$3);} ; PackageTerm : PARSEOP_PACKAGE '(' {$$ = TrCreateLeafNode (PARSEOP_VAR_PACKAGE);} VarPackageLengthTerm ')' '{' PackageList '}' {$$ = TrLinkChildren ($3,2,$4,$7);} | PARSEOP_PACKAGE '(' error ')' {$$ = AslDoError(); yyclearin;} ; PackageList : {$$ = NULL;} | PackageElement | PackageList ',' /* Allows a trailing comma at list end */ | PackageList ',' PackageElement {$$ = TrLinkPeerNode ($1,$3);} ; PackageElement : DataObject {} | NameString {} ; VarPackageLengthTerm : {$$ = TrCreateLeafNode (PARSEOP_DEFAULT_ARG);} | TermArg {$$ = $1;} ; /******* Macros ***********************************************/ EISAIDTerm : PARSEOP_EISAID '(' StringData ')' {$$ = TrUpdateNode (PARSEOP_EISAID, $3);} | PARSEOP_EISAID '(' error ')' {$$ = AslDoError(); yyclearin;} ; UnicodeTerm : PARSEOP_UNICODE '(' {$$ = TrCreateLeafNode (PARSEOP_UNICODE);} StringData ')' {$$ = TrLinkChildren ($3,2,0,$4);} | PARSEOP_UNICODE '(' error ')' {$$ = AslDoError(); yyclearin;} ; /******* Resources and Memory ***********************************************/ /* * Note: Create two default nodes to allow conversion to a Buffer AML opcode * Also, insert the EndTag at the end of the template. */ ResourceTemplateTerm : PARSEOP_RESOURCETEMPLATE '(' ')' '{' ResourceMacroList '}' {$$ = TrCreateNode (PARSEOP_RESOURCETEMPLATE,4, TrCreateLeafNode (PARSEOP_DEFAULT_ARG), TrCreateLeafNode (PARSEOP_DEFAULT_ARG), $5, TrCreateLeafNode (PARSEOP_ENDTAG));} ; ResourceMacroList : {$$ = NULL;} | ResourceMacroList ResourceMacroTerm {$$ = TrLinkPeerNode ($1,$2);} ; ResourceMacroTerm : DMATerm {} | DWordIOTerm {} | DWordMemoryTerm {} | DWordSpaceTerm {} | EndDependentFnTerm {} | ExtendedIOTerm {} | ExtendedMemoryTerm {} | ExtendedSpaceTerm {} | FixedDmaTerm {} | FixedIOTerm {} | GpioIntTerm {} | GpioIoTerm {} | I2cSerialBusTerm {} | InterruptTerm {} | IOTerm {} | IRQNoFlagsTerm {} | IRQTerm {} | Memory24Term {} | Memory32FixedTerm {} | Memory32Term {} | QWordIOTerm {} | QWordMemoryTerm {} | QWordSpaceTerm {} | RegisterTerm {} | SpiSerialBusTerm {} | StartDependentFnNoPriTerm {} | StartDependentFnTerm {} | UartSerialBusTerm {} | VendorLongTerm {} | VendorShortTerm {} | WordBusNumberTerm {} | WordIOTerm {} | WordSpaceTerm {} ; DMATerm : PARSEOP_DMA '(' {$$ = TrCreateLeafNode (PARSEOP_DMA);} DMATypeKeyword OptionalBusMasterKeyword ',' XferTypeKeyword OptionalNameString_Last ')' '{' ByteList '}' {$$ = TrLinkChildren ($3,5,$4,$5,$7,$8,$11);} | PARSEOP_DMA '(' error ')' {$$ = AslDoError(); yyclearin;} ; DWordIOTerm : PARSEOP_DWORDIO '(' {$$ = TrCreateLeafNode (PARSEOP_DWORDIO);} OptionalResourceType_First OptionalMinType OptionalMaxType OptionalDecodeType OptionalRangeType ',' DWordConstExpr ',' DWordConstExpr ',' DWordConstExpr ',' DWordConstExpr ',' DWordConstExpr OptionalByteConstExpr OptionalStringData OptionalNameString OptionalType OptionalTranslationType_Last ')' {$$ = TrLinkChildren ($3,15,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$19,$20,$21,$22,$23);} | PARSEOP_DWORDIO '(' error ')' {$$ = AslDoError(); yyclearin;} ; DWordMemoryTerm : PARSEOP_DWORDMEMORY '(' {$$ = TrCreateLeafNode (PARSEOP_DWORDMEMORY);} OptionalResourceType_First OptionalDecodeType OptionalMinType OptionalMaxType OptionalMemType ',' OptionalReadWriteKeyword ',' DWordConstExpr ',' DWordConstExpr ',' DWordConstExpr ',' DWordConstExpr ',' DWordConstExpr OptionalByteConstExpr OptionalStringData OptionalNameString OptionalAddressRange OptionalType_Last ')' {$$ = TrLinkChildren ($3,16,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$20,$21,$22,$23,$24,$25);} | PARSEOP_DWORDMEMORY '(' error ')' {$$ = AslDoError(); yyclearin;} ; DWordSpaceTerm : PARSEOP_DWORDSPACE '(' {$$ = TrCreateLeafNode (PARSEOP_DWORDSPACE);} ByteConstExpr {UtCheckIntegerRange ($4, 0xC0, 0xFF);} OptionalResourceType OptionalDecodeType OptionalMinType OptionalMaxType ',' ByteConstExpr ',' DWordConstExpr ',' DWordConstExpr ',' DWordConstExpr ',' DWordConstExpr ',' DWordConstExpr OptionalByteConstExpr OptionalStringData OptionalNameString_Last ')' {$$ = TrLinkChildren ($3,14,$4,$6,$7,$8,$9,$11,$13,$15,$17,$19,$21,$22,$23,$24);} | PARSEOP_DWORDSPACE '(' error ')' {$$ = AslDoError(); yyclearin;} ; EndDependentFnTerm : PARSEOP_ENDDEPENDENTFN '(' ')' {$$ = TrCreateLeafNode (PARSEOP_ENDDEPENDENTFN);} | PARSEOP_ENDDEPENDENTFN '(' error ')' {$$ = AslDoError(); yyclearin;} ; ExtendedIOTerm : PARSEOP_EXTENDEDIO '(' {$$ = TrCreateLeafNode (PARSEOP_EXTENDEDIO);} OptionalResourceType_First OptionalMinType OptionalMaxType OptionalDecodeType OptionalRangeType ',' QWordConstExpr ',' QWordConstExpr ',' QWordConstExpr ',' QWordConstExpr ',' QWordConstExpr OptionalQWordConstExpr OptionalNameString OptionalType OptionalTranslationType_Last ')' {$$ = TrLinkChildren ($3,14,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$19,$20,$21,$22);} | PARSEOP_EXTENDEDIO '(' error ')' {$$ = AslDoError(); yyclearin;} ; ExtendedMemoryTerm : PARSEOP_EXTENDEDMEMORY '(' {$$ = TrCreateLeafNode (PARSEOP_EXTENDEDMEMORY);} OptionalResourceType_First OptionalDecodeType OptionalMinType OptionalMaxType OptionalMemType ',' OptionalReadWriteKeyword ',' QWordConstExpr ',' QWordConstExpr ',' QWordConstExpr ',' QWordConstExpr ',' QWordConstExpr OptionalQWordConstExpr OptionalNameString OptionalAddressRange OptionalType_Last ')' {$$ = TrLinkChildren ($3,15,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$20,$21,$22,$23,$24);} | PARSEOP_EXTENDEDMEMORY '(' error ')' {$$ = AslDoError(); yyclearin;} ; ExtendedSpaceTerm : PARSEOP_EXTENDEDSPACE '(' {$$ = TrCreateLeafNode (PARSEOP_EXTENDEDSPACE);} ByteConstExpr {UtCheckIntegerRange ($4, 0xC0, 0xFF);} OptionalResourceType OptionalDecodeType OptionalMinType OptionalMaxType ',' ByteConstExpr ',' QWordConstExpr ',' QWordConstExpr ',' QWordConstExpr ',' QWordConstExpr ',' QWordConstExpr OptionalQWordConstExpr OptionalNameString_Last ')' {$$ = TrLinkChildren ($3,13,$4,$6,$7,$8,$9,$11,$13,$15,$17,$19,$21,$22,$23);} | PARSEOP_EXTENDEDSPACE '(' error ')' {$$ = AslDoError(); yyclearin;} ; FixedDmaTerm : PARSEOP_FIXEDDMA '(' {$$ = TrCreateLeafNode (PARSEOP_FIXEDDMA);} WordConstExpr /* 04: DMA RequestLines */ ',' WordConstExpr /* 06: DMA Channels */ OptionalXferSize /* 07: DMA TransferSize */ OptionalNameString /* 08: DescriptorName */ ')' {$$ = TrLinkChildren ($3,4,$4,$6,$7,$8);} | PARSEOP_FIXEDDMA '(' error ')' {$$ = AslDoError(); yyclearin;} ; FixedIOTerm : PARSEOP_FIXEDIO '(' {$$ = TrCreateLeafNode (PARSEOP_FIXEDIO);} WordConstExpr ',' ByteConstExpr OptionalNameString_Last ')' {$$ = TrLinkChildren ($3,3,$4,$6,$7);} | PARSEOP_FIXEDIO '(' error ')' {$$ = AslDoError(); yyclearin;} ; GpioIntTerm : PARSEOP_GPIO_INT '(' {$$ = TrCreateLeafNode (PARSEOP_GPIO_INT);} InterruptTypeKeyword /* 04: InterruptType */ ',' InterruptLevel /* 06: InterruptLevel */ OptionalShareType /* 07: SharedType */ ',' PinConfigByte /* 09: PinConfig */ OptionalWordConstExpr /* 10: DebounceTimeout */ ',' StringData /* 12: ResourceSource */ OptionalByteConstExpr /* 13: ResourceSourceIndex */ OptionalResourceType /* 14: ResourceType */ OptionalNameString /* 15: DescriptorName */ OptionalBuffer_Last /* 16: VendorData */ ')' '{' DWordConstExpr '}' {$$ = TrLinkChildren ($3,11,$4,$6,$7,$9,$10,$12,$13,$14,$15,$16,$19);} | PARSEOP_GPIO_INT '(' error ')' {$$ = AslDoError(); yyclearin;} ; GpioIoTerm : PARSEOP_GPIO_IO '(' {$$ = TrCreateLeafNode (PARSEOP_GPIO_IO);} OptionalShareType_First /* 04: SharedType */ ',' PinConfigByte /* 06: PinConfig */ OptionalWordConstExpr /* 07: DebounceTimeout */ OptionalWordConstExpr /* 08: DriveStrength */ OptionalIoRestriction /* 09: IoRestriction */ ',' StringData /* 11: ResourceSource */ OptionalByteConstExpr /* 12: ResourceSourceIndex */ OptionalResourceType /* 13: ResourceType */ OptionalNameString /* 14: DescriptorName */ OptionalBuffer_Last /* 15: VendorData */ ')' '{' DWordList '}' {$$ = TrLinkChildren ($3,11,$4,$6,$7,$8,$9,$11,$12,$13,$14,$15,$18);} | PARSEOP_GPIO_IO '(' error ')' {$$ = AslDoError(); yyclearin;} ; I2cSerialBusTerm : PARSEOP_I2C_SERIALBUS '(' {$$ = TrCreateLeafNode (PARSEOP_I2C_SERIALBUS);} WordConstExpr /* 04: SlaveAddress */ OptionalSlaveMode /* 05: SlaveMode */ ',' DWordConstExpr /* 07: ConnectionSpeed */ OptionalAddressingMode /* 08: AddressingMode */ ',' StringData /* 10: ResourceSource */ OptionalByteConstExpr /* 11: ResourceSourceIndex */ OptionalResourceType /* 12: ResourceType */ OptionalNameString /* 13: DescriptorName */ OptionalBuffer_Last /* 14: VendorData */ ')' {$$ = TrLinkChildren ($3,9,$4,$5,$7,$8,$10,$11,$12,$13,$14);} | PARSEOP_I2C_SERIALBUS '(' error ')' {$$ = AslDoError(); yyclearin;} ; InterruptTerm : PARSEOP_INTERRUPT '(' {$$ = TrCreateLeafNode (PARSEOP_INTERRUPT);} OptionalResourceType_First ',' InterruptTypeKeyword ',' InterruptLevel OptionalShareType OptionalByteConstExpr OptionalStringData OptionalNameString_Last ')' '{' DWordList '}' {$$ = TrLinkChildren ($3,8,$4,$6,$8,$9,$10,$11,$12,$15);} | PARSEOP_INTERRUPT '(' error ')' {$$ = AslDoError(); yyclearin;} ; IOTerm : PARSEOP_IO '(' {$$ = TrCreateLeafNode (PARSEOP_IO);} IODecodeKeyword ',' WordConstExpr ',' WordConstExpr ',' ByteConstExpr ',' ByteConstExpr OptionalNameString_Last ')' {$$ = TrLinkChildren ($3,6,$4,$6,$8,$10,$12,$13);} | PARSEOP_IO '(' error ')' {$$ = AslDoError(); yyclearin;} ; IRQNoFlagsTerm : PARSEOP_IRQNOFLAGS '(' {$$ = TrCreateLeafNode (PARSEOP_IRQNOFLAGS);} OptionalNameString_First ')' '{' ByteList '}' {$$ = TrLinkChildren ($3,2,$4,$7);} | PARSEOP_IRQNOFLAGS '(' error ')' {$$ = AslDoError(); yyclearin;} ; IRQTerm : PARSEOP_IRQ '(' {$$ = TrCreateLeafNode (PARSEOP_IRQ);} InterruptTypeKeyword ',' InterruptLevel OptionalShareType OptionalNameString_Last ')' '{' ByteList '}' {$$ = TrLinkChildren ($3,5,$4,$6,$7,$8,$11);} | PARSEOP_IRQ '(' error ')' {$$ = AslDoError(); yyclearin;} ; Memory24Term : PARSEOP_MEMORY24 '(' {$$ = TrCreateLeafNode (PARSEOP_MEMORY24);} OptionalReadWriteKeyword ',' WordConstExpr ',' WordConstExpr ',' WordConstExpr ',' WordConstExpr OptionalNameString_Last ')' {$$ = TrLinkChildren ($3,6,$4,$6,$8,$10,$12,$13);} | PARSEOP_MEMORY24 '(' error ')' {$$ = AslDoError(); yyclearin;} ; Memory32FixedTerm : PARSEOP_MEMORY32FIXED '(' {$$ = TrCreateLeafNode (PARSEOP_MEMORY32FIXED);} OptionalReadWriteKeyword ',' DWordConstExpr ',' DWordConstExpr OptionalNameString_Last ')' {$$ = TrLinkChildren ($3,4,$4,$6,$8,$9);} | PARSEOP_MEMORY32FIXED '(' error ')' {$$ = AslDoError(); yyclearin;} ; Memory32Term : PARSEOP_MEMORY32 '(' {$$ = TrCreateLeafNode (PARSEOP_MEMORY32);} OptionalReadWriteKeyword ',' DWordConstExpr ',' DWordConstExpr ',' DWordConstExpr ',' DWordConstExpr OptionalNameString_Last ')' {$$ = TrLinkChildren ($3,6,$4,$6,$8,$10,$12,$13);} | PARSEOP_MEMORY32 '(' error ')' {$$ = AslDoError(); yyclearin;} ; QWordIOTerm : PARSEOP_QWORDIO '(' {$$ = TrCreateLeafNode (PARSEOP_QWORDIO);} OptionalResourceType_First OptionalMinType OptionalMaxType OptionalDecodeType OptionalRangeType ',' QWordConstExpr ',' QWordConstExpr ',' QWordConstExpr ',' QWordConstExpr ',' QWordConstExpr OptionalByteConstExpr OptionalStringData OptionalNameString OptionalType OptionalTranslationType_Last ')' {$$ = TrLinkChildren ($3,15,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$19,$20,$21,$22,$23);} | PARSEOP_QWORDIO '(' error ')' {$$ = AslDoError(); yyclearin;} ; QWordMemoryTerm : PARSEOP_QWORDMEMORY '(' {$$ = TrCreateLeafNode (PARSEOP_QWORDMEMORY);} OptionalResourceType_First OptionalDecodeType OptionalMinType OptionalMaxType OptionalMemType ',' OptionalReadWriteKeyword ',' QWordConstExpr ',' QWordConstExpr ',' QWordConstExpr ',' QWordConstExpr ',' QWordConstExpr OptionalByteConstExpr OptionalStringData OptionalNameString OptionalAddressRange OptionalType_Last ')' {$$ = TrLinkChildren ($3,16,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$20,$21,$22,$23,$24,$25);} | PARSEOP_QWORDMEMORY '(' error ')' {$$ = AslDoError(); yyclearin;} ; QWordSpaceTerm : PARSEOP_QWORDSPACE '(' {$$ = TrCreateLeafNode (PARSEOP_QWORDSPACE);} ByteConstExpr {UtCheckIntegerRange ($4, 0xC0, 0xFF);} OptionalResourceType OptionalDecodeType OptionalMinType OptionalMaxType ',' ByteConstExpr ',' QWordConstExpr ',' QWordConstExpr ',' QWordConstExpr ',' QWordConstExpr ',' QWordConstExpr OptionalByteConstExpr OptionalStringData OptionalNameString_Last ')' {$$ = TrLinkChildren ($3,14,$4,$6,$7,$8,$9,$11,$13,$15,$17,$19,$21,$22,$23,$24);} | PARSEOP_QWORDSPACE '(' error ')' {$$ = AslDoError(); yyclearin;} ; RegisterTerm : PARSEOP_REGISTER '(' {$$ = TrCreateLeafNode (PARSEOP_REGISTER);} AddressSpaceKeyword ',' ByteConstExpr ',' ByteConstExpr ',' QWordConstExpr OptionalAccessSize OptionalNameString_Last ')' {$$ = TrLinkChildren ($3,6,$4,$6,$8,$10,$11,$12);} | PARSEOP_REGISTER '(' error ')' {$$ = AslDoError(); yyclearin;} ; SpiSerialBusTerm : PARSEOP_SPI_SERIALBUS '(' {$$ = TrCreateLeafNode (PARSEOP_SPI_SERIALBUS);} WordConstExpr /* 04: DeviceSelection */ OptionalDevicePolarity /* 05: DevicePolarity */ OptionalWireMode /* 06: WireMode */ ',' ByteConstExpr /* 08: DataBitLength */ OptionalSlaveMode /* 09: SlaveMode */ ',' DWordConstExpr /* 11: ConnectionSpeed */ ',' ClockPolarityKeyword /* 13: ClockPolarity */ ',' ClockPhaseKeyword /* 15: ClockPhase */ ',' StringData /* 17: ResourceSource */ OptionalByteConstExpr /* 18: ResourceSourceIndex */ OptionalResourceType /* 19: ResourceType */ OptionalNameString /* 20: DescriptorName */ OptionalBuffer_Last /* 21: VendorData */ ')' {$$ = TrLinkChildren ($3,13,$4,$5,$6,$8,$9,$11,$13,$15,$17,$18,$19,$20,$21);} | PARSEOP_SPI_SERIALBUS '(' error ')' {$$ = AslDoError(); yyclearin;} ; StartDependentFnNoPriTerm : PARSEOP_STARTDEPENDENTFN_NOPRI '(' {$$ = TrCreateLeafNode (PARSEOP_STARTDEPENDENTFN_NOPRI);} ')' '{' ResourceMacroList '}' {$$ = TrLinkChildren ($3,1,$6);} | PARSEOP_STARTDEPENDENTFN_NOPRI '(' error ')' {$$ = AslDoError(); yyclearin;} ; StartDependentFnTerm : PARSEOP_STARTDEPENDENTFN '(' {$$ = TrCreateLeafNode (PARSEOP_STARTDEPENDENTFN);} ByteConstExpr ',' ByteConstExpr ')' '{' ResourceMacroList '}' {$$ = TrLinkChildren ($3,3,$4,$6,$9);} | PARSEOP_STARTDEPENDENTFN '(' error ')' {$$ = AslDoError(); yyclearin;} ; UartSerialBusTerm : PARSEOP_UART_SERIALBUS '(' {$$ = TrCreateLeafNode (PARSEOP_UART_SERIALBUS);} DWordConstExpr /* 04: ConnectionSpeed */ OptionalBitsPerByte /* 05: BitsPerByte */ OptionalStopBits /* 06: StopBits */ ',' ByteConstExpr /* 08: LinesInUse */ OptionalEndian /* 09: Endianess */ OptionalParityType /* 10: Parity */ OptionalFlowControl /* 11: FlowControl */ ',' WordConstExpr /* 13: Rx BufferSize */ ',' WordConstExpr /* 15: Tx BufferSize */ ',' StringData /* 17: ResourceSource */ OptionalByteConstExpr /* 18: ResourceSourceIndex */ OptionalResourceType /* 19: ResourceType */ OptionalNameString /* 20: DescriptorName */ OptionalBuffer_Last /* 21: VendorData */ ')' {$$ = TrLinkChildren ($3,14,$4,$5,$6,$8,$9,$10,$11,$13,$15,$17,$18,$19,$20,$21);} | PARSEOP_UART_SERIALBUS '(' error ')' {$$ = AslDoError(); yyclearin;} ; VendorLongTerm : PARSEOP_VENDORLONG '(' {$$ = TrCreateLeafNode (PARSEOP_VENDORLONG);} OptionalNameString_First ')' '{' ByteList '}' {$$ = TrLinkChildren ($3,2,$4,$7);} | PARSEOP_VENDORLONG '(' error ')' {$$ = AslDoError(); yyclearin;} ; VendorShortTerm : PARSEOP_VENDORSHORT '(' {$$ = TrCreateLeafNode (PARSEOP_VENDORSHORT);} OptionalNameString_First ')' '{' ByteList '}' {$$ = TrLinkChildren ($3,2,$4,$7);} | PARSEOP_VENDORSHORT '(' error ')' {$$ = AslDoError(); yyclearin;} ; WordBusNumberTerm : PARSEOP_WORDBUSNUMBER '(' {$$ = TrCreateLeafNode (PARSEOP_WORDBUSNUMBER);} OptionalResourceType_First OptionalMinType OptionalMaxType OptionalDecodeType ',' WordConstExpr ',' WordConstExpr ',' WordConstExpr ',' WordConstExpr ',' WordConstExpr OptionalByteConstExpr OptionalStringData OptionalNameString_Last ')' {$$ = TrLinkChildren ($3,12,$4,$5,$6,$7,$9,$11,$13,$15,$17,$18,$19,$20);} | PARSEOP_WORDBUSNUMBER '(' error ')' {$$ = AslDoError(); yyclearin;} ; WordIOTerm : PARSEOP_WORDIO '(' {$$ = TrCreateLeafNode (PARSEOP_WORDIO);} OptionalResourceType_First OptionalMinType OptionalMaxType OptionalDecodeType OptionalRangeType ',' WordConstExpr ',' WordConstExpr ',' WordConstExpr ',' WordConstExpr ',' WordConstExpr OptionalByteConstExpr OptionalStringData OptionalNameString OptionalType OptionalTranslationType_Last ')' {$$ = TrLinkChildren ($3,15,$4,$5,$6,$7,$8,$10,$12,$14,$16,$18,$19,$20,$21,$22,$23);} | PARSEOP_WORDIO '(' error ')' {$$ = AslDoError(); yyclearin;} ; WordSpaceTerm : PARSEOP_WORDSPACE '(' {$$ = TrCreateLeafNode (PARSEOP_WORDSPACE);} ByteConstExpr {UtCheckIntegerRange ($4, 0xC0, 0xFF);} OptionalResourceType OptionalDecodeType OptionalMinType OptionalMaxType ',' ByteConstExpr ',' WordConstExpr ',' WordConstExpr ',' WordConstExpr ',' WordConstExpr ',' WordConstExpr OptionalByteConstExpr OptionalStringData OptionalNameString_Last ')' {$$ = TrLinkChildren ($3,14,$4,$6,$7,$8,$9,$11,$13,$15,$17,$19,$21,$22,$23,$24);} | PARSEOP_WORDSPACE '(' error ')' {$$ = AslDoError(); yyclearin;} ; /******* Object References ***********************************************/ /* Allow IO, DMA, IRQ Resource macro names to also be used as identifiers */ NameString : NameSeg {} | PARSEOP_NAMESTRING {$$ = TrCreateValuedLeafNode (PARSEOP_NAMESTRING, (ACPI_NATIVE_INT) AslCompilerlval.s);} | PARSEOP_IO {$$ = TrCreateValuedLeafNode (PARSEOP_NAMESTRING, (ACPI_NATIVE_INT) "IO");} | PARSEOP_DMA {$$ = TrCreateValuedLeafNode (PARSEOP_NAMESTRING, (ACPI_NATIVE_INT) "DMA");} | PARSEOP_IRQ {$$ = TrCreateValuedLeafNode (PARSEOP_NAMESTRING, (ACPI_NATIVE_INT) "IRQ");} ; NameSeg : PARSEOP_NAMESEG {$$ = TrCreateValuedLeafNode (PARSEOP_NAMESEG, (ACPI_NATIVE_INT) AslCompilerlval.s);} ; /******* Helper rules ****************************************************/ AmlPackageLengthTerm : Integer {$$ = TrUpdateNode (PARSEOP_PACKAGE_LENGTH,(ACPI_PARSE_OBJECT *) $1);} ; NameStringItem : ',' NameString {$$ = $2;} | ',' error {$$ = AslDoError (); yyclearin;} ; TermArgItem : ',' TermArg {$$ = $2;} | ',' error {$$ = AslDoError (); yyclearin;} ; OptionalBusMasterKeyword : ',' {$$ = TrCreateLeafNode (PARSEOP_BUSMASTERTYPE_MASTER);} | ',' PARSEOP_BUSMASTERTYPE_MASTER {$$ = TrCreateLeafNode (PARSEOP_BUSMASTERTYPE_MASTER);} | ',' PARSEOP_BUSMASTERTYPE_NOTMASTER {$$ = TrCreateLeafNode (PARSEOP_BUSMASTERTYPE_NOTMASTER);} ; OptionalAccessAttribTerm : {$$ = NULL;} | ',' {$$ = NULL;} | ',' ByteConstExpr {$$ = $2;} | ',' AccessAttribKeyword {$$ = $2;} ; OptionalAccessSize : {$$ = TrCreateValuedLeafNode (PARSEOP_BYTECONST, 0);} | ',' {$$ = TrCreateValuedLeafNode (PARSEOP_BYTECONST, 0);} | ',' ByteConstExpr {$$ = $2;} ; OptionalAddressingMode : ',' {$$ = NULL;} | ',' AddressingModeKeyword {$$ = $2;} ; OptionalAddressRange : {$$ = NULL;} | ',' {$$ = NULL;} | ',' AddressKeyword {$$ = $2;} ; OptionalBitsPerByte : ',' {$$ = NULL;} | ',' BitsPerByteKeyword {$$ = $2;} ; OptionalBuffer_Last : {$$ = NULL;} | ',' {$$ = NULL;} | ',' DataBufferTerm {$$ = $2;} ; OptionalByteConstExpr : {$$ = NULL;} | ',' {$$ = NULL;} | ',' ByteConstExpr {$$ = $2;} ; OptionalDecodeType : ',' {$$ = NULL;} | ',' DecodeKeyword {$$ = $2;} ; OptionalDevicePolarity : ',' {$$ = NULL;} | ',' DevicePolarityKeyword {$$ = $2;} ; OptionalDWordConstExpr : {$$ = NULL;} | ',' {$$ = NULL;} | ',' DWordConstExpr {$$ = $2;} ; OptionalEndian : ',' {$$ = NULL;} | ',' EndianKeyword {$$ = $2;} ; OptionalFlowControl : ',' {$$ = NULL;} | ',' FlowControlKeyword {$$ = $2;} ; OptionalIoRestriction : ',' {$$ = NULL;} | ',' IoRestrictionKeyword {$$ = $2;} ; OptionalListString : {$$ = TrCreateValuedLeafNode (PARSEOP_STRING_LITERAL, ACPI_TO_INTEGER (""));} /* Placeholder is a NULL string */ | ',' {$$ = TrCreateValuedLeafNode (PARSEOP_STRING_LITERAL, ACPI_TO_INTEGER (""));} /* Placeholder is a NULL string */ | ',' TermArg {$$ = $2;} ; OptionalMaxType : ',' {$$ = NULL;} | ',' MaxKeyword {$$ = $2;} ; OptionalMemType : ',' {$$ = NULL;} | ',' MemTypeKeyword {$$ = $2;} ; OptionalMinType : ',' {$$ = NULL;} | ',' MinKeyword {$$ = $2;} ; OptionalNameString : {$$ = NULL;} | ',' {$$ = NULL;} | ',' NameString {$$ = $2;} ; OptionalNameString_Last : {$$ = NULL;} | ',' {$$ = NULL;} | ',' NameString {$$ = $2;} ; OptionalNameString_First : {$$ = TrCreateLeafNode (PARSEOP_ZERO);} | NameString {$$ = $1;} ; OptionalObjectTypeKeyword : {$$ = TrCreateLeafNode (PARSEOP_OBJECTTYPE_UNK);} | ',' ObjectTypeKeyword {$$ = $2;} ; OptionalParityType : ',' {$$ = NULL;} | ',' ParityTypeKeyword {$$ = $2;} ; OptionalQWordConstExpr : {$$ = NULL;} | ',' {$$ = NULL;} | ',' QWordConstExpr {$$ = $2;} ; OptionalRangeType : ',' {$$ = NULL;} | ',' RangeTypeKeyword {$$ = $2;} ; OptionalReadWriteKeyword : {$$ = TrCreateLeafNode (PARSEOP_READWRITETYPE_BOTH);} | PARSEOP_READWRITETYPE_BOTH {$$ = TrCreateLeafNode (PARSEOP_READWRITETYPE_BOTH);} | PARSEOP_READWRITETYPE_READONLY {$$ = TrCreateLeafNode (PARSEOP_READWRITETYPE_READONLY);} ; OptionalReference : {$$ = TrCreateLeafNode (PARSEOP_ZERO);} /* Placeholder is a ZeroOp object */ | ',' {$$ = TrCreateLeafNode (PARSEOP_ZERO);} /* Placeholder is a ZeroOp object */ | ',' TermArg {$$ = $2;} ; OptionalResourceType_First : {$$ = TrCreateLeafNode (PARSEOP_RESOURCETYPE_CONSUMER);} | ResourceTypeKeyword {$$ = $1;} ; OptionalResourceType : {$$ = TrCreateLeafNode (PARSEOP_RESOURCETYPE_CONSUMER);} | ',' {$$ = TrCreateLeafNode (PARSEOP_RESOURCETYPE_CONSUMER);} | ',' ResourceTypeKeyword {$$ = $2;} ; OptionalReturnArg : {$$ = TrSetNodeFlags (TrCreateLeafNode (PARSEOP_ZERO), NODE_IS_NULL_RETURN);} /* Placeholder is a ZeroOp object */ | TermArg {$$ = $1;} ; OptionalSerializeRuleKeyword : {$$ = NULL;} | ',' {$$ = NULL;} | ',' SerializeRuleKeyword {$$ = $2;} ; OptionalSlaveMode : ',' {$$ = NULL;} | ',' SlaveModeKeyword {$$ = $2;} ; OptionalShareType : {$$ = NULL;} | ',' {$$ = NULL;} | ',' ShareTypeKeyword {$$ = $2;} ; OptionalShareType_First : {$$ = NULL;} | ShareTypeKeyword {$$ = $1;} ; OptionalStopBits : ',' {$$ = NULL;} | ',' StopBitsKeyword {$$ = $2;} ; OptionalStringData : {$$ = NULL;} | ',' {$$ = NULL;} | ',' StringData {$$ = $2;} ; OptionalTermArg : {$$ = NULL;} | TermArg {$$ = $1;} ; OptionalType : {$$ = NULL;} | ',' {$$ = NULL;} | ',' TypeKeyword {$$ = $2;} ; OptionalType_Last : {$$ = NULL;} | ',' {$$ = NULL;} | ',' TypeKeyword {$$ = $2;} ; OptionalTranslationType_Last : {$$ = NULL;} | ',' {$$ = NULL;} | ',' TranslationKeyword {$$ = $2;} ; OptionalWireMode : ',' {$$ = NULL;} | ',' WireModeKeyword {$$ = $2;} ; OptionalWordConst : {$$ = NULL;} | WordConst {$$ = $1;} ; OptionalWordConstExpr : ',' {$$ = NULL;} | ',' WordConstExpr {$$ = $2;} ; OptionalXferSize : {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_32, 2);} | ',' {$$ = TrCreateValuedLeafNode (PARSEOP_XFERSIZE_32, 2);} | ',' XferSizeKeyword {$$ = $2;} ; %% /****************************************************************************** * * Local support functions * *****************************************************************************/ int AslCompilerwrap(void) { return (1); } /*! [End] no source code translation !*/ void * AslLocalAllocate (unsigned int Size) { void *Mem; DbgPrint (ASL_PARSE_OUTPUT, "\nAslLocalAllocate: Expanding Stack to %u\n\n", Size); Mem = ACPI_ALLOCATE_ZEROED (Size); if (!Mem) { AslCommonError (ASL_ERROR, ASL_MSG_MEMORY_ALLOCATION, Gbl_CurrentLineNumber, Gbl_LogicalLineNumber, Gbl_InputByteCount, Gbl_CurrentColumn, Gbl_Files[ASL_FILE_INPUT].Filename, NULL); exit (1); } return (Mem); } ACPI_PARSE_OBJECT * AslDoError (void) { return (TrCreateLeafNode (PARSEOP_ERRORNODE)); } /******************************************************************************* * * FUNCTION: UtGetOpName * * PARAMETERS: ParseOpcode - Parser keyword ID * * RETURN: Pointer to the opcode name * * DESCRIPTION: Get the ascii name of the parse opcode * ******************************************************************************/ char * UtGetOpName ( UINT32 ParseOpcode) { #ifdef ASL_YYTNAME_START /* * First entries (ASL_YYTNAME_START) in yytname are special reserved names. * Ignore first 8 characters of the name */ return ((char *) yytname [(ParseOpcode - ASL_FIRST_PARSE_OPCODE) + ASL_YYTNAME_START] + 8); #else return ("[Unknown parser generator]"); #endif } src/acpica/source/compiler/asldefine.h000066400000000000000000000247331231470457100203170ustar00rootroot00000000000000/****************************************************************************** * * Module Name: asldefine.h - Common defines for the iASL compiler * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #ifndef __ASLDEFINE_H #define __ASLDEFINE_H /* * Compiler versions and names */ #define ASL_REVISION ACPI_CA_VERSION #define ASL_COMPILER_NAME "ASL Optimizing Compiler" #define AML_DISASSEMBLER_NAME "AML Disassembler" #define ASL_INVOCATION_NAME "iasl" #define ASL_CREATOR_ID "INTL" #define ASL_COMPLIANCE "Supports ACPI Specification Revision 5.0A" /* Configuration constants */ #define ASL_MAX_ERROR_COUNT 200 #define ASL_NODE_CACHE_SIZE 1024 #define ASL_STRING_CACHE_SIZE 32768 #define ASL_FIRST_PARSE_OPCODE PARSEOP_ACCESSAS #define ASL_PARSE_OPCODE_BASE PARSEOP_ACCESSAS /* First Lex type */ /* * Per-parser-generator configuration. These values are used to cheat and * directly access the bison/yacc token name table (yyname or yytname). * Note: These values are the index in yyname for the first lex token * (PARSEOP_ACCCESSAS). */ #if defined (YYBISON) #define ASL_YYTNAME_START 3 /* Bison */ #elif defined (YYBYACC) #define ASL_YYTNAME_START 257 /* Berkeley yacc */ #endif /* * Macros */ #define ASL_RESDESC_OFFSET(m) ACPI_OFFSET (AML_RESOURCE, m) #define ASL_PTR_DIFF(a,b) ((UINT8 *)(b) - (UINT8 *)(a)) #define ASL_PTR_ADD(a,b) ((UINT8 *)(a) = ((UINT8 *)(a) + (b))) #define ASL_GET_CHILD_NODE(a) (a)->Asl.Child #define ASL_GET_PEER_NODE(a) (a)->Asl.Next #define OP_TABLE_ENTRY(a,b,c,d) {b,d,a,c} /* Internal AML opcodes */ #define AML_RAW_DATA_BYTE (UINT16) 0xAA01 /* write one raw byte */ #define AML_RAW_DATA_WORD (UINT16) 0xAA02 /* write 2 raw bytes */ #define AML_RAW_DATA_DWORD (UINT16) 0xAA04 /* write 4 raw bytes */ #define AML_RAW_DATA_QWORD (UINT16) 0xAA08 /* write 8 raw bytes */ #define AML_RAW_DATA_BUFFER (UINT16) 0xAA0B /* raw buffer with length */ #define AML_RAW_DATA_CHAIN (UINT16) 0xAA0C /* chain of raw buffers */ #define AML_PACKAGE_LENGTH (UINT16) 0xAA10 #define AML_UNASSIGNED_OPCODE (UINT16) 0xEEEE #define AML_DEFAULT_ARG_OP (UINT16) 0xDDDD /* filename suffixes for output files */ #define FILE_SUFFIX_PREPROCESSOR "i" #define FILE_SUFFIX_AML_CODE "aml" #define FILE_SUFFIX_LISTING "lst" #define FILE_SUFFIX_HEX_DUMP "hex" #define FILE_SUFFIX_DEBUG "txt" #define FILE_SUFFIX_SOURCE "src" #define FILE_SUFFIX_NAMESPACE "nsp" #define FILE_SUFFIX_ASM_SOURCE "asm" #define FILE_SUFFIX_C_SOURCE "c" #define FILE_SUFFIX_DISASSEMBLY "dsl" #define FILE_SUFFIX_ASM_INCLUDE "inc" #define FILE_SUFFIX_C_INCLUDE "h" #define FILE_SUFFIX_ASL_CODE "asl" #define FILE_SUFFIX_C_OFFSET "offset.h" /* Types for input files */ #define ASL_INPUT_TYPE_BINARY 0 #define ASL_INPUT_TYPE_ACPI_TABLE 1 #define ASL_INPUT_TYPE_ASCII_ASL 2 #define ASL_INPUT_TYPE_ASCII_DATA 3 /* Misc */ #define ASL_EXTERNAL_METHOD 255 #define ASL_ABORT TRUE #define ASL_NO_ABORT FALSE #define ASL_EOF ACPI_UINT32_MAX /* Listings */ #define ASL_LISTING_LINE_PREFIX ": " /* Support for reserved method names */ #define ACPI_VALID_RESERVED_NAME_MAX 0x80000000 #define ACPI_NOT_RESERVED_NAME ACPI_UINT32_MAX #define ACPI_PREDEFINED_NAME (ACPI_UINT32_MAX - 1) #define ACPI_EVENT_RESERVED_NAME (ACPI_UINT32_MAX - 2) #define ACPI_COMPILER_RESERVED_NAME (ACPI_UINT32_MAX - 3) /* String to Integer conversion */ #define NEGATIVE 1 #define POSITIVE 0 /* Helper macros for resource tag creation */ #define RsCreateMultiBitField \ RsCreateResourceField #define RsCreateBitField(Op, Name, ByteOffset, BitOffset) \ RsCreateResourceField (Op, Name, ByteOffset, BitOffset, 1) #define RsCreateByteField(Op, Name, ByteOffset) \ RsCreateResourceField (Op, Name, ByteOffset, 0, 8); #define RsCreateWordField(Op, Name, ByteOffset) \ RsCreateResourceField (Op, Name, ByteOffset, 0, 16); #define RsCreateDwordField(Op, Name, ByteOffset) \ RsCreateResourceField (Op, Name, ByteOffset, 0, 32); #define RsCreateQwordField(Op, Name, ByteOffset) \ RsCreateResourceField (Op, Name, ByteOffset, 0, 64); #endif /* ASLDEFINE.H */ src/acpica/source/compiler/aslerror.c000066400000000000000000000753721231470457100202160ustar00rootroot00000000000000/****************************************************************************** * * Module Name: aslerror - Error handling and statistics * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #define ASL_EXCEPTIONS #include "aslcompiler.h" #define _COMPONENT ACPI_COMPILER ACPI_MODULE_NAME ("aslerror") /* Local prototypes */ static void AeAddToErrorLog ( ASL_ERROR_MSG *Enode); /******************************************************************************* * * FUNCTION: AslAbort * * PARAMETERS: None * * RETURN: None * * DESCRIPTION: Dump the error log and abort the compiler. Used for serious * I/O errors. * ******************************************************************************/ void AslAbort ( void) { AePrintErrorLog (ASL_FILE_STDERR); if (Gbl_DebugFlag) { /* Print error summary to stdout also */ AePrintErrorLog (ASL_FILE_STDOUT); } exit (1); } /******************************************************************************* * * FUNCTION: AeClearErrorLog * * PARAMETERS: None * * RETURN: None * * DESCRIPTION: Empty the error list * ******************************************************************************/ void AeClearErrorLog ( void) { ASL_ERROR_MSG *Enode = Gbl_ErrorLog; ASL_ERROR_MSG *Next; /* Walk the error node list */ while (Enode) { Next = Enode->Next; ACPI_FREE (Enode); Enode = Next; } Gbl_ErrorLog = NULL; } /******************************************************************************* * * FUNCTION: AeAddToErrorLog * * PARAMETERS: Enode - An error node to add to the log * * RETURN: None * * DESCRIPTION: Add a new error node to the error log. The error log is * ordered by the "logical" line number (cumulative line number * including all include files.) * ******************************************************************************/ static void AeAddToErrorLog ( ASL_ERROR_MSG *Enode) { ASL_ERROR_MSG *Next; ASL_ERROR_MSG *Prev; /* If Gbl_ErrorLog is null, this is the first error node */ if (!Gbl_ErrorLog) { Gbl_ErrorLog = Enode; return; } /* * Walk error list until we find a line number greater than ours. * List is sorted according to line number. */ Prev = NULL; Next = Gbl_ErrorLog; while ((Next) && (Next->LogicalLineNumber <= Enode->LogicalLineNumber)) { Prev = Next; Next = Next->Next; } /* Found our place in the list */ Enode->Next = Next; if (Prev) { Prev->Next = Enode; } else { Gbl_ErrorLog = Enode; } } /******************************************************************************* * * FUNCTION: AePrintException * * PARAMETERS: FileId - ID of output file * Enode - Error node to print * Header - Additional text before each message * * RETURN: None * * DESCRIPTION: Print the contents of an error node. * * NOTE: We don't use the FlxxxFile I/O functions here because on error * they abort the compiler and call this function! Since we * are reporting errors here, we ignore most output errors and * just try to get out as much as we can. * ******************************************************************************/ void AePrintException ( UINT32 FileId, ASL_ERROR_MSG *Enode, char *Header) { UINT8 SourceByte; int Actual; size_t RActual; UINT32 MsgLength; char *MainMessage; char *ExtraMessage; UINT32 SourceColumn; UINT32 ErrorColumn; FILE *OutputFile; FILE *SourceFile = NULL; long FileSize; BOOLEAN PrematureEOF = FALSE; UINT32 Total = 0; if (Gbl_NoErrors) { return; } /* * Only listing files have a header, and remarks/optimizations * are always output */ if (!Header) { /* Ignore remarks if requested */ switch (Enode->Level) { case ASL_WARNING: case ASL_WARNING2: case ASL_WARNING3: if (!Gbl_DisplayWarnings) { return; } break; case ASL_REMARK: if (!Gbl_DisplayRemarks) { return; } break; case ASL_OPTIMIZATION: if (!Gbl_DisplayOptimizations) { return; } break; default: break; } } /* Get the various required file handles */ OutputFile = Gbl_Files[FileId].Handle; if (!Enode->SourceLine) { /* Use the merged header/source file if present, otherwise use input file */ SourceFile = Gbl_Files[ASL_FILE_SOURCE_OUTPUT].Handle; if (!SourceFile) { SourceFile = Gbl_Files[ASL_FILE_INPUT].Handle; } if (SourceFile) { /* Determine if the error occurred at source file EOF */ fseek (SourceFile, 0, SEEK_END); FileSize = ftell (SourceFile); if ((long) Enode->LogicalByteOffset >= FileSize) { PrematureEOF = TRUE; } } } if (Header) { fprintf (OutputFile, "%s", Header); } /* Print filename and line number if present and valid */ if (Enode->Filename) { if (Gbl_VerboseErrors) { fprintf (OutputFile, "%-8s", Enode->Filename); if (Enode->LineNumber) { if (Enode->SourceLine) { fprintf (OutputFile, " %6u: %s", Enode->LineNumber, Enode->SourceLine); } else { fprintf (OutputFile, " %6u: ", Enode->LineNumber); /* * If not at EOF, get the corresponding source code line and * display it. Don't attempt this if we have a premature EOF * condition. */ if (!PrematureEOF) { /* * Seek to the offset in the combined source file, read * the source line, and write it to the output. */ Actual = fseek (SourceFile, (long) Enode->LogicalByteOffset, (int) SEEK_SET); if (Actual) { fprintf (OutputFile, "[*** iASL: Seek error on source code temp file %s ***]", Gbl_Files[ASL_FILE_SOURCE_OUTPUT].Filename); } else { RActual = fread (&SourceByte, 1, 1, SourceFile); if (RActual != 1) { fprintf (OutputFile, "[*** iASL: Read error on source code temp file %s ***]", Gbl_Files[ASL_FILE_SOURCE_OUTPUT].Filename); } else { /* Read/write the source line, up to the maximum line length */ while (RActual && SourceByte && (SourceByte != '\n')) { if (Total < 256) { /* After the max line length, we will just read the line, no write */ if (fwrite (&SourceByte, 1, 1, OutputFile) != 1) { printf ("[*** iASL: Write error on output file ***]\n"); return; } } else if (Total == 256) { fprintf (OutputFile, "\n[*** iASL: Very long input line, message below refers to column %u ***]", Enode->Column); } RActual = fread (&SourceByte, 1, 1, SourceFile); if (RActual != 1) { fprintf (OutputFile, "[*** iASL: Read error on source code temp file %s ***]", Gbl_Files[ASL_FILE_SOURCE_OUTPUT].Filename); return; } Total++; } } } } fprintf (OutputFile, "\n"); } } } else { /* * Less verbose version of the error message, enabled via the * -vi switch. The format is compatible with MS Visual Studio. */ fprintf (OutputFile, "%s", Enode->Filename); if (Enode->LineNumber) { fprintf (OutputFile, "(%u) : ", Enode->LineNumber); } } } /* NULL message ID, just print the raw message */ if (Enode->MessageId == 0) { fprintf (OutputFile, "%s\n", Enode->Message); } else { /* Decode the message ID */ if (Gbl_VerboseErrors) { fprintf (OutputFile, "%s %4.4d -", AslErrorLevel[Enode->Level], Enode->MessageId + ((Enode->Level+1) * 1000)); } else /* IDE case */ { fprintf (OutputFile, "%s %4.4d:", AslErrorLevelIde[Enode->Level], Enode->MessageId + ((Enode->Level+1) * 1000)); } MainMessage = AslMessages[Enode->MessageId]; ExtraMessage = Enode->Message; if (Enode->LineNumber) { /* Main message: try to use string from AslMessages first */ if (!MainMessage) { MainMessage = ""; } MsgLength = strlen (MainMessage); if (MsgLength == 0) { /* Use the secondary/extra message as main message */ MainMessage = Enode->Message; if (!MainMessage) { MainMessage = ""; } MsgLength = strlen (MainMessage); ExtraMessage = NULL; } if (Gbl_VerboseErrors && !PrematureEOF) { if (Total >= 256) { fprintf (OutputFile, " %s", MainMessage); } else { SourceColumn = Enode->Column + Enode->FilenameLength + 6 + 2; ErrorColumn = ASL_ERROR_LEVEL_LENGTH + 5 + 2 + 1; if ((MsgLength + ErrorColumn) < (SourceColumn - 1)) { fprintf (OutputFile, "%*s%s", (int) ((SourceColumn - 1) - ErrorColumn), MainMessage, " ^ "); } else { fprintf (OutputFile, "%*s %s", (int) ((SourceColumn - ErrorColumn) + 1), "^", MainMessage); } } } else { fprintf (OutputFile, " %s", MainMessage); } /* Print the extra info message if present */ if (ExtraMessage) { fprintf (OutputFile, " (%s)", ExtraMessage); } if (PrematureEOF) { fprintf (OutputFile, " and premature End-Of-File"); } fprintf (OutputFile, "\n"); if (Gbl_VerboseErrors) { fprintf (OutputFile, "\n"); } } else { fprintf (OutputFile, " %s %s\n\n", MainMessage, ExtraMessage); } } } /******************************************************************************* * * FUNCTION: AePrintErrorLog * * PARAMETERS: FileId - Where to output the error log * * RETURN: None * * DESCRIPTION: Print the entire contents of the error log * ******************************************************************************/ void AePrintErrorLog ( UINT32 FileId) { ASL_ERROR_MSG *Enode = Gbl_ErrorLog; /* Walk the error node list */ while (Enode) { AePrintException (FileId, Enode, NULL); Enode = Enode->Next; } } /******************************************************************************* * * FUNCTION: AslCommonError2 * * PARAMETERS: Level - Seriousness (Warning/error, etc.) * MessageId - Index into global message buffer * LineNumber - Actual file line number * Column - Column in current line * SourceLine - Actual source code line * Filename - source filename * ExtraMessage - additional error message * * RETURN: None * * DESCRIPTION: Create a new error node and add it to the error log * ******************************************************************************/ void AslCommonError2 ( UINT8 Level, UINT8 MessageId, UINT32 LineNumber, UINT32 Column, char *SourceLine, char *Filename, char *ExtraMessage) { char *MessageBuffer = NULL; char *LineBuffer; ASL_ERROR_MSG *Enode; Enode = UtLocalCalloc (sizeof (ASL_ERROR_MSG)); if (ExtraMessage) { /* Allocate a buffer for the message and a new error node */ MessageBuffer = UtLocalCalloc (strlen (ExtraMessage) + 1); /* Keep a copy of the extra message */ ACPI_STRCPY (MessageBuffer, ExtraMessage); } LineBuffer = UtLocalCalloc (strlen (SourceLine) + 1); ACPI_STRCPY (LineBuffer, SourceLine); /* Initialize the error node */ if (Filename) { Enode->Filename = Filename; Enode->FilenameLength = strlen (Filename); if (Enode->FilenameLength < 6) { Enode->FilenameLength = 6; } } Enode->MessageId = MessageId; Enode->Level = Level; Enode->LineNumber = LineNumber; Enode->LogicalLineNumber = LineNumber; Enode->LogicalByteOffset = 0; Enode->Column = Column; Enode->Message = MessageBuffer; Enode->SourceLine = LineBuffer; /* Add the new node to the error node list */ AeAddToErrorLog (Enode); if (Gbl_DebugFlag) { /* stderr is a file, send error to it immediately */ AePrintException (ASL_FILE_STDERR, Enode, NULL); } Gbl_ExceptionCount[Level]++; } /******************************************************************************* * * FUNCTION: AslCommonError * * PARAMETERS: Level - Seriousness (Warning/error, etc.) * MessageId - Index into global message buffer * CurrentLineNumber - Actual file line number * LogicalLineNumber - Cumulative line number * LogicalByteOffset - Byte offset in source file * Column - Column in current line * Filename - source filename * ExtraMessage - additional error message * * RETURN: None * * DESCRIPTION: Create a new error node and add it to the error log * ******************************************************************************/ void AslCommonError ( UINT8 Level, UINT8 MessageId, UINT32 CurrentLineNumber, UINT32 LogicalLineNumber, UINT32 LogicalByteOffset, UINT32 Column, char *Filename, char *ExtraMessage) { char *MessageBuffer = NULL; ASL_ERROR_MSG *Enode; Enode = UtLocalCalloc (sizeof (ASL_ERROR_MSG)); if (ExtraMessage) { /* Allocate a buffer for the message and a new error node */ MessageBuffer = UtLocalCalloc (strlen (ExtraMessage) + 1); /* Keep a copy of the extra message */ ACPI_STRCPY (MessageBuffer, ExtraMessage); } /* Initialize the error node */ if (Filename) { Enode->Filename = Filename; Enode->FilenameLength = strlen (Filename); if (Enode->FilenameLength < 6) { Enode->FilenameLength = 6; } } Enode->MessageId = MessageId; Enode->Level = Level; Enode->LineNumber = CurrentLineNumber; Enode->LogicalLineNumber = LogicalLineNumber; Enode->LogicalByteOffset = LogicalByteOffset; Enode->Column = Column; Enode->Message = MessageBuffer; Enode->SourceLine = NULL; /* Add the new node to the error node list */ AeAddToErrorLog (Enode); if (Gbl_DebugFlag) { /* stderr is a file, send error to it immediately */ AePrintException (ASL_FILE_STDERR, Enode, NULL); } Gbl_ExceptionCount[Level]++; if (Gbl_ExceptionCount[ASL_ERROR] > ASL_MAX_ERROR_COUNT) { printf ("\nMaximum error count (%u) exceeded\n", ASL_MAX_ERROR_COUNT); Gbl_SourceLine = 0; Gbl_NextError = Gbl_ErrorLog; CmCleanupAndExit (); exit(1); } return; } /******************************************************************************* * * FUNCTION: AslDisableException * * PARAMETERS: MessageIdString - ID to be disabled * * RETURN: Status * * DESCRIPTION: Enter a message ID into the global disabled messages table * ******************************************************************************/ ACPI_STATUS AslDisableException ( char *MessageIdString) { UINT32 MessageId; /* Convert argument to an integer and validate it */ MessageId = (UINT32) strtoul (MessageIdString, NULL, 0); if ((MessageId < 2000) || (MessageId > 5999)) { printf ("\"%s\" is not a valid warning/remark ID\n", MessageIdString); return (AE_BAD_PARAMETER); } /* Insert value into the global disabled message array */ if (Gbl_DisabledMessagesIndex >= ASL_MAX_DISABLED_MESSAGES) { printf ("Too many messages have been disabled (max %u)\n", ASL_MAX_DISABLED_MESSAGES); return (AE_LIMIT); } Gbl_DisabledMessages[Gbl_DisabledMessagesIndex] = MessageId; Gbl_DisabledMessagesIndex++; return (AE_OK); } /******************************************************************************* * * FUNCTION: AslIsExceptionDisabled * * PARAMETERS: Level - Seriousness (Warning/error, etc.) * MessageId - Index into global message buffer * * RETURN: TRUE if exception/message should be ignored * * DESCRIPTION: Check if the user has specified options such that this * exception should be ignored * ******************************************************************************/ BOOLEAN AslIsExceptionDisabled ( UINT8 Level, UINT8 MessageId) { UINT32 EncodedMessageId; UINT32 i; switch (Level) { case ASL_WARNING2: case ASL_WARNING3: /* Check for global disable via -w1/-w2/-w3 options */ if (Level > Gbl_WarningLevel) { return (TRUE); } /* Fall through */ case ASL_WARNING: case ASL_REMARK: /* * Ignore this warning/remark if it has been disabled by * the user (-vw option) */ EncodedMessageId = MessageId + ((Level + 1) * 1000); for (i = 0; i < Gbl_DisabledMessagesIndex; i++) { /* Simple implementation via fixed array */ if (EncodedMessageId == Gbl_DisabledMessages[i]) { return (TRUE); } } break; default: break; } return (FALSE); } /******************************************************************************* * * FUNCTION: AslError * * PARAMETERS: Level - Seriousness (Warning/error, etc.) * MessageId - Index into global message buffer * Op - Parse node where error happened * ExtraMessage - additional error message * * RETURN: None * * DESCRIPTION: Main error reporting routine for the ASL compiler (all code * except the parser.) * ******************************************************************************/ void AslError ( UINT8 Level, UINT8 MessageId, ACPI_PARSE_OBJECT *Op, char *ExtraMessage) { /* Check if user wants to ignore this exception */ if (Gbl_AllExceptionsDisabled || AslIsExceptionDisabled (Level, MessageId)) { return; } if (Op) { AslCommonError (Level, MessageId, Op->Asl.LineNumber, Op->Asl.LogicalLineNumber, Op->Asl.LogicalByteOffset, Op->Asl.Column, Op->Asl.Filename, ExtraMessage); } else { AslCommonError (Level, MessageId, 0, 0, 0, 0, NULL, ExtraMessage); } } /******************************************************************************* * * FUNCTION: AslCoreSubsystemError * * PARAMETERS: Op - Parse node where error happened * Status - The ACPICA Exception * ExtraMessage - additional error message * Abort - TRUE -> Abort compilation * * RETURN: None * * DESCRIPTION: Error reporting routine for exceptions returned by the ACPICA * core subsystem. * ******************************************************************************/ void AslCoreSubsystemError ( ACPI_PARSE_OBJECT *Op, ACPI_STATUS Status, char *ExtraMessage, BOOLEAN Abort) { sprintf (MsgBuffer, "%s %s", AcpiFormatException (Status), ExtraMessage); if (Op) { AslCommonError (ASL_ERROR, ASL_MSG_CORE_EXCEPTION, Op->Asl.LineNumber, Op->Asl.LogicalLineNumber, Op->Asl.LogicalByteOffset, Op->Asl.Column, Op->Asl.Filename, MsgBuffer); } else { AslCommonError (ASL_ERROR, ASL_MSG_CORE_EXCEPTION, 0, 0, 0, 0, NULL, MsgBuffer); } if (Abort) { AslAbort (); } } /******************************************************************************* * * FUNCTION: AslCompilererror * * PARAMETERS: CompilerMessage - Error message from the parser * * RETURN: Status (0 for now) * * DESCRIPTION: Report an error situation discovered in a production * NOTE: don't change the name of this function, it is called * from the auto-generated parser. * ******************************************************************************/ int AslCompilererror ( const char *CompilerMessage) { AslCommonError (ASL_ERROR, ASL_MSG_SYNTAX, Gbl_CurrentLineNumber, Gbl_LogicalLineNumber, Gbl_CurrentLineOffset, Gbl_CurrentColumn, Gbl_Files[ASL_FILE_INPUT].Filename, ACPI_CAST_PTR (char, CompilerMessage)); return (0); } src/acpica/source/compiler/aslfileio.c000066400000000000000000000327171231470457100203300ustar00rootroot00000000000000/****************************************************************************** * * Module Name: aslfileio - File I/O support * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #include "aslcompiler.h" #include "acapps.h" #define _COMPONENT ACPI_COMPILER ACPI_MODULE_NAME ("aslfileio") /******************************************************************************* * * FUNCTION: FlFileError * * PARAMETERS: FileId - Index into file info array * ErrorId - Index into error message array * * RETURN: None * * DESCRIPTION: Decode errno to an error message and add the entire error * to the error log. * ******************************************************************************/ void FlFileError ( UINT32 FileId, UINT8 ErrorId) { sprintf (MsgBuffer, "\"%s\" (%s)", Gbl_Files[FileId].Filename, strerror (errno)); AslCommonError (ASL_ERROR, ErrorId, 0, 0, 0, 0, NULL, MsgBuffer); } /******************************************************************************* * * FUNCTION: FlOpenFile * * PARAMETERS: FileId - Index into file info array * Filename - file pathname to open * Mode - Open mode for fopen * * RETURN: None * * DESCRIPTION: Open a file. * NOTE: Aborts compiler on any error. * ******************************************************************************/ void FlOpenFile ( UINT32 FileId, char *Filename, char *Mode) { FILE *File; File = fopen (Filename, Mode); if (!File) { FlFileError (FileId, ASL_MSG_OPEN); AslAbort (); } Gbl_Files[FileId].Filename = Filename; Gbl_Files[FileId].Handle = File; } /******************************************************************************* * * FUNCTION: FlGetFileSize * * PARAMETERS: FileId - Index into file info array * * RETURN: File Size * * DESCRIPTION: Get current file size. Uses common seek-to-EOF function. * File must be open. Aborts compiler on error. * ******************************************************************************/ UINT32 FlGetFileSize ( UINT32 FileId) { UINT32 FileSize; FileSize = CmGetFileSize (Gbl_Files[FileId].Handle); if (FileSize == ACPI_UINT32_MAX) { AslAbort(); } return (FileSize); } /******************************************************************************* * * FUNCTION: FlReadFile * * PARAMETERS: FileId - Index into file info array * Buffer - Where to place the data * Length - Amount to read * * RETURN: Status. AE_ERROR indicates EOF. * * DESCRIPTION: Read data from an open file. * NOTE: Aborts compiler on any error. * ******************************************************************************/ ACPI_STATUS FlReadFile ( UINT32 FileId, void *Buffer, UINT32 Length) { UINT32 Actual; /* Read and check for error */ Actual = fread (Buffer, 1, Length, Gbl_Files[FileId].Handle); if (Actual < Length) { if (feof (Gbl_Files[FileId].Handle)) { /* End-of-file, just return error */ return (AE_ERROR); } FlFileError (FileId, ASL_MSG_READ); AslAbort (); } return (AE_OK); } /******************************************************************************* * * FUNCTION: FlWriteFile * * PARAMETERS: FileId - Index into file info array * Buffer - Data to write * Length - Amount of data to write * * RETURN: None * * DESCRIPTION: Write data to an open file. * NOTE: Aborts compiler on any error. * ******************************************************************************/ void FlWriteFile ( UINT32 FileId, void *Buffer, UINT32 Length) { UINT32 Actual; /* Write and check for error */ Actual = fwrite ((char *) Buffer, 1, Length, Gbl_Files[FileId].Handle); if (Actual != Length) { FlFileError (FileId, ASL_MSG_WRITE); AslAbort (); } } /******************************************************************************* * * FUNCTION: FlPrintFile * * PARAMETERS: FileId - Index into file info array * Format - Printf format string * ... - Printf arguments * * RETURN: None * * DESCRIPTION: Formatted write to an open file. * NOTE: Aborts compiler on any error. * ******************************************************************************/ void FlPrintFile ( UINT32 FileId, char *Format, ...) { INT32 Actual; va_list Args; va_start (Args, Format); Actual = vfprintf (Gbl_Files[FileId].Handle, Format, Args); va_end (Args); if (Actual == -1) { FlFileError (FileId, ASL_MSG_WRITE); AslAbort (); } } /******************************************************************************* * * FUNCTION: FlSeekFile * * PARAMETERS: FileId - Index into file info array * Offset - Absolute byte offset in file * * RETURN: None * * DESCRIPTION: Seek to absolute offset. * NOTE: Aborts compiler on any error. * ******************************************************************************/ void FlSeekFile ( UINT32 FileId, long Offset) { int Error; Error = fseek (Gbl_Files[FileId].Handle, Offset, SEEK_SET); if (Error) { FlFileError (FileId, ASL_MSG_SEEK); AslAbort (); } } /******************************************************************************* * * FUNCTION: FlCloseFile * * PARAMETERS: FileId - Index into file info array * * RETURN: None * * DESCRIPTION: Close an open file. Aborts compiler on error * ******************************************************************************/ void FlCloseFile ( UINT32 FileId) { int Error; if (!Gbl_Files[FileId].Handle) { return; } Error = fclose (Gbl_Files[FileId].Handle); if (Error) { FlFileError (FileId, ASL_MSG_CLOSE); AslAbort (); } Gbl_Files[FileId].Handle = NULL; return; } /******************************************************************************* * * FUNCTION: FlDeleteFile * * PARAMETERS: FileId - Index into file info array * * RETURN: None * * DESCRIPTION: Delete a file. * ******************************************************************************/ void FlDeleteFile ( UINT32 FileId) { ASL_FILE_INFO *Info = &Gbl_Files[FileId]; if (!Info->Filename) { return; } if (remove (Info->Filename)) { printf ("%s (%s file) ", Info->Filename, Info->Description); perror ("Could not delete"); } Info->Filename = NULL; return; } src/acpica/source/compiler/aslfiles.c000066400000000000000000000660271231470457100201640ustar00rootroot00000000000000/****************************************************************************** * * Module Name: aslfiles - File support functions * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #include "aslcompiler.h" #include "acapps.h" #define _COMPONENT ACPI_COMPILER ACPI_MODULE_NAME ("aslfiles") /* Local prototypes */ FILE * FlOpenIncludeWithPrefix ( char *PrefixDir, char *Filename); #ifdef ACPI_OBSOLETE_FUNCTIONS ACPI_STATUS FlParseInputPathname ( char *InputFilename); #endif /******************************************************************************* * * FUNCTION: FlSetLineNumber * * PARAMETERS: Op - Parse node for the LINE asl statement * * RETURN: None. * * DESCRIPTION: Set the current line number * ******************************************************************************/ void FlSetLineNumber ( UINT32 LineNumber) { DbgPrint (ASL_PARSE_OUTPUT, "\n#line: New line number %u (old %u)\n", LineNumber, Gbl_LogicalLineNumber); Gbl_CurrentLineNumber = LineNumber; Gbl_LogicalLineNumber = LineNumber; } /******************************************************************************* * * FUNCTION: FlSetFilename * * PARAMETERS: Op - Parse node for the LINE asl statement * * RETURN: None. * * DESCRIPTION: Set the current filename * ******************************************************************************/ void FlSetFilename ( char *Filename) { DbgPrint (ASL_PARSE_OUTPUT, "\n#line: New filename %s (old %s)\n", Filename, Gbl_Files[ASL_FILE_INPUT].Filename); Gbl_Files[ASL_FILE_INPUT].Filename = Filename; } /******************************************************************************* * * FUNCTION: FlAddIncludeDirectory * * PARAMETERS: Dir - Directory pathname string * * RETURN: None * * DESCRIPTION: Add a directory the list of include prefix directories. * ******************************************************************************/ void FlAddIncludeDirectory ( char *Dir) { ASL_INCLUDE_DIR *NewDir; ASL_INCLUDE_DIR *NextDir; ASL_INCLUDE_DIR *PrevDir = NULL; UINT32 NeedsSeparator = 0; size_t DirLength; DirLength = strlen (Dir); if (!DirLength) { return; } /* Make sure that the pathname ends with a path separator */ if ((Dir[DirLength-1] != '/') && (Dir[DirLength-1] != '\\')) { NeedsSeparator = 1; } NewDir = ACPI_ALLOCATE_ZEROED (sizeof (ASL_INCLUDE_DIR)); NewDir->Dir = ACPI_ALLOCATE (DirLength + 1 + NeedsSeparator); strcpy (NewDir->Dir, Dir); if (NeedsSeparator) { strcat (NewDir->Dir, "/"); } /* * Preserve command line ordering of -I options by adding new elements * at the end of the list */ NextDir = Gbl_IncludeDirList; while (NextDir) { PrevDir = NextDir; NextDir = NextDir->Next; } if (PrevDir) { PrevDir->Next = NewDir; } else { Gbl_IncludeDirList = NewDir; } } /******************************************************************************* * * FUNCTION: FlMergePathnames * * PARAMETERS: PrefixDir - Prefix directory pathname. Can be NULL or * a zero length string. * FilePathname - The include filename from the source ASL. * * RETURN: Merged pathname string * * DESCRIPTION: Merge two pathnames that (probably) have common elements, to * arrive at a minimal length string. Merge can occur if the * FilePathname is relative to the PrefixDir. * ******************************************************************************/ char * FlMergePathnames ( char *PrefixDir, char *FilePathname) { char *CommonPath; char *Pathname; char *LastElement; DbgPrint (ASL_PARSE_OUTPUT, "Include: Prefix path - \"%s\"\n" "Include: FilePathname - \"%s\"\n", PrefixDir, FilePathname); /* * If there is no prefix directory or if the file pathname is absolute, * just return the original file pathname */ if (!PrefixDir || (!*PrefixDir) || (*FilePathname == '/') || (FilePathname[1] == ':')) { Pathname = ACPI_ALLOCATE (strlen (FilePathname) + 1); strcpy (Pathname, FilePathname); goto ConvertBackslashes; } /* Need a local copy of the prefix directory path */ CommonPath = ACPI_ALLOCATE (strlen (PrefixDir) + 1); strcpy (CommonPath, PrefixDir); /* * Walk forward through the file path, and simultaneously backward * through the prefix directory path until there are no more * relative references at the start of the file path. */ while (*FilePathname && (!strncmp (FilePathname, "../", 3))) { /* Remove last element of the prefix directory path */ LastElement = strrchr (CommonPath, '/'); if (!LastElement) { goto ConcatenatePaths; } *LastElement = 0; /* Terminate CommonPath string */ FilePathname += 3; /* Point to next path element */ } /* * Remove the last element of the prefix directory path (it is the same as * the first element of the file pathname), and build the final merged * pathname. */ LastElement = strrchr (CommonPath, '/'); if (LastElement) { *LastElement = 0; } /* Build the final merged pathname */ ConcatenatePaths: Pathname = ACPI_ALLOCATE_ZEROED (strlen (CommonPath) + strlen (FilePathname) + 2); if (LastElement && *CommonPath) { strcpy (Pathname, CommonPath); strcat (Pathname, "/"); } strcat (Pathname, FilePathname); ACPI_FREE (CommonPath); /* Convert all backslashes to normal slashes */ ConvertBackslashes: UtConvertBackslashes (Pathname); DbgPrint (ASL_PARSE_OUTPUT, "Include: Merged Pathname - \"%s\"\n", Pathname); return (Pathname); } /******************************************************************************* * * FUNCTION: FlOpenIncludeWithPrefix * * PARAMETERS: PrefixDir - Prefix directory pathname. Can be a zero * length string. * Filename - The include filename from the source ASL. * * RETURN: Valid file descriptor if successful. Null otherwise. * * DESCRIPTION: Open an include file and push it on the input file stack. * ******************************************************************************/ FILE * FlOpenIncludeWithPrefix ( char *PrefixDir, char *Filename) { FILE *IncludeFile; char *Pathname; /* Build the full pathname to the file */ Pathname = FlMergePathnames (PrefixDir, Filename); DbgPrint (ASL_PARSE_OUTPUT, "Include: Opening file - \"%s\"\n\n", Pathname); /* Attempt to open the file, push if successful */ IncludeFile = fopen (Pathname, "r"); if (!IncludeFile) { fprintf (stderr, "Could not open include file %s\n", Pathname); ACPI_FREE (Pathname); return (NULL); } /* Push the include file on the open input file stack */ AslPushInputFileStack (IncludeFile, Pathname); return (IncludeFile); } /******************************************************************************* * * FUNCTION: FlOpenIncludeFile * * PARAMETERS: Op - Parse node for the INCLUDE ASL statement * * RETURN: None. * * DESCRIPTION: Open an include file and push it on the input file stack. * ******************************************************************************/ void FlOpenIncludeFile ( ACPI_PARSE_OBJECT *Op) { FILE *IncludeFile; ASL_INCLUDE_DIR *NextDir; /* Op must be valid */ if (!Op) { AslCommonError (ASL_ERROR, ASL_MSG_INCLUDE_FILE_OPEN, Gbl_CurrentLineNumber, Gbl_LogicalLineNumber, Gbl_InputByteCount, Gbl_CurrentColumn, Gbl_Files[ASL_FILE_INPUT].Filename, " - Null parse node"); return; } /* * Flush out the "include ()" statement on this line, start * the actual include file on the next line */ AslResetCurrentLineBuffer (); FlPrintFile (ASL_FILE_SOURCE_OUTPUT, "\n"); Gbl_CurrentLineOffset++; /* Attempt to open the include file */ /* If the file specifies an absolute path, just open it */ if ((Op->Asl.Value.String[0] == '/') || (Op->Asl.Value.String[0] == '\\') || (Op->Asl.Value.String[1] == ':')) { IncludeFile = FlOpenIncludeWithPrefix ("", Op->Asl.Value.String); if (!IncludeFile) { goto ErrorExit; } return; } /* * The include filename is not an absolute path. * * First, search for the file within the "local" directory -- meaning * the same directory that contains the source file. * * Construct the file pathname from the global directory name. */ IncludeFile = FlOpenIncludeWithPrefix (Gbl_DirectoryPath, Op->Asl.Value.String); if (IncludeFile) { return; } /* * Second, search for the file within the (possibly multiple) directories * specified by the -I option on the command line. */ NextDir = Gbl_IncludeDirList; while (NextDir) { IncludeFile = FlOpenIncludeWithPrefix (NextDir->Dir, Op->Asl.Value.String); if (IncludeFile) { return; } NextDir = NextDir->Next; } /* We could not open the include file after trying very hard */ ErrorExit: sprintf (MsgBuffer, "%s, %s", Op->Asl.Value.String, strerror (errno)); AslError (ASL_ERROR, ASL_MSG_INCLUDE_FILE_OPEN, Op, MsgBuffer); } /******************************************************************************* * * FUNCTION: FlOpenInputFile * * PARAMETERS: InputFilename - The user-specified ASL source file to be * compiled * * RETURN: Status * * DESCRIPTION: Open the specified input file, and save the directory path to * the file so that include files can be opened in * the same directory. * ******************************************************************************/ ACPI_STATUS FlOpenInputFile ( char *InputFilename) { /* Open the input ASL file, text mode */ FlOpenFile (ASL_FILE_INPUT, InputFilename, "rt"); AslCompilerin = Gbl_Files[ASL_FILE_INPUT].Handle; return (AE_OK); } /******************************************************************************* * * FUNCTION: FlOpenAmlOutputFile * * PARAMETERS: FilenamePrefix - The user-specified ASL source file * * RETURN: Status * * DESCRIPTION: Create the output filename (*.AML) and open the file. The file * is created in the same directory as the parent input file. * ******************************************************************************/ ACPI_STATUS FlOpenAmlOutputFile ( char *FilenamePrefix) { char *Filename; /* Output filename usually comes from the ASL itself */ Filename = Gbl_Files[ASL_FILE_AML_OUTPUT].Filename; if (!Filename) { /* Create the output AML filename */ Filename = FlGenerateFilename (FilenamePrefix, FILE_SUFFIX_AML_CODE); if (!Filename) { AslCommonError (ASL_ERROR, ASL_MSG_OUTPUT_FILENAME, 0, 0, 0, 0, NULL, NULL); return (AE_ERROR); } } /* Open the output AML file in binary mode */ FlOpenFile (ASL_FILE_AML_OUTPUT, Filename, "w+b"); return (AE_OK); } /******************************************************************************* * * FUNCTION: FlOpenMiscOutputFiles * * PARAMETERS: FilenamePrefix - The user-specified ASL source file * * RETURN: Status * * DESCRIPTION: Create and open the various output files needed, depending on * the command line options * ******************************************************************************/ ACPI_STATUS FlOpenMiscOutputFiles ( char *FilenamePrefix) { char *Filename; /* All done for disassembler */ if (Gbl_FileType == ASL_INPUT_TYPE_ACPI_TABLE) { return (AE_OK); } /* Create/Open a hex output file if asked */ if (Gbl_HexOutputFlag) { Filename = FlGenerateFilename (FilenamePrefix, FILE_SUFFIX_HEX_DUMP); if (!Filename) { AslCommonError (ASL_ERROR, ASL_MSG_LISTING_FILENAME, 0, 0, 0, 0, NULL, NULL); return (AE_ERROR); } /* Open the hex file, text mode */ FlOpenFile (ASL_FILE_HEX_OUTPUT, Filename, "w+t"); AslCompilerSignon (ASL_FILE_HEX_OUTPUT); AslCompilerFileHeader (ASL_FILE_HEX_OUTPUT); } /* Create/Open a debug output file if asked */ if (Gbl_DebugFlag) { Filename = FlGenerateFilename (FilenamePrefix, FILE_SUFFIX_DEBUG); if (!Filename) { AslCommonError (ASL_ERROR, ASL_MSG_DEBUG_FILENAME, 0, 0, 0, 0, NULL, NULL); return (AE_ERROR); } /* Open the debug file as STDERR, text mode */ /* TBD: hide this behind a FlReopenFile function */ Gbl_Files[ASL_FILE_DEBUG_OUTPUT].Filename = Filename; Gbl_Files[ASL_FILE_DEBUG_OUTPUT].Handle = freopen (Filename, "w+t", stderr); if (!Gbl_Files[ASL_FILE_DEBUG_OUTPUT].Handle) { AslCommonError (ASL_ERROR, ASL_MSG_DEBUG_FILENAME, 0, 0, 0, 0, NULL, NULL); return (AE_ERROR); } AslCompilerSignon (ASL_FILE_DEBUG_OUTPUT); AslCompilerFileHeader (ASL_FILE_DEBUG_OUTPUT); } /* Create/Open a listing output file if asked */ if (Gbl_ListingFlag) { Filename = FlGenerateFilename (FilenamePrefix, FILE_SUFFIX_LISTING); if (!Filename) { AslCommonError (ASL_ERROR, ASL_MSG_LISTING_FILENAME, 0, 0, 0, 0, NULL, NULL); return (AE_ERROR); } /* Open the listing file, text mode */ FlOpenFile (ASL_FILE_LISTING_OUTPUT, Filename, "w+t"); AslCompilerSignon (ASL_FILE_LISTING_OUTPUT); AslCompilerFileHeader (ASL_FILE_LISTING_OUTPUT); } /* Create the preprocessor output file if preprocessor enabled */ if (Gbl_PreprocessFlag) { Filename = FlGenerateFilename (FilenamePrefix, FILE_SUFFIX_PREPROCESSOR); if (!Filename) { AslCommonError (ASL_ERROR, ASL_MSG_PREPROCESSOR_FILENAME, 0, 0, 0, 0, NULL, NULL); return (AE_ERROR); } FlOpenFile (ASL_FILE_PREPROCESSOR, Filename, "w+t"); } /* All done for data table compiler */ if (Gbl_FileType == ASL_INPUT_TYPE_ASCII_DATA) { return (AE_OK); } /* Create/Open a combined source output file */ Filename = FlGenerateFilename (FilenamePrefix, FILE_SUFFIX_SOURCE); if (!Filename) { AslCommonError (ASL_ERROR, ASL_MSG_LISTING_FILENAME, 0, 0, 0, 0, NULL, NULL); return (AE_ERROR); } /* * Open the source output file, binary mode (so that LF does not get * expanded to CR/LF on some systems, messing up our seek * calculations.) */ FlOpenFile (ASL_FILE_SOURCE_OUTPUT, Filename, "w+b"); /* // TBD: TEMP // AslCompilerin = Gbl_Files[ASL_FILE_SOURCE_OUTPUT].Handle; */ /* Create/Open a assembly code source output file if asked */ if (Gbl_AsmOutputFlag) { Filename = FlGenerateFilename (FilenamePrefix, FILE_SUFFIX_ASM_SOURCE); if (!Filename) { AslCommonError (ASL_ERROR, ASL_MSG_LISTING_FILENAME, 0, 0, 0, 0, NULL, NULL); return (AE_ERROR); } /* Open the assembly code source file, text mode */ FlOpenFile (ASL_FILE_ASM_SOURCE_OUTPUT, Filename, "w+t"); AslCompilerSignon (ASL_FILE_ASM_SOURCE_OUTPUT); AslCompilerFileHeader (ASL_FILE_ASM_SOURCE_OUTPUT); } /* Create/Open a C code source output file if asked */ if (Gbl_C_OutputFlag) { Filename = FlGenerateFilename (FilenamePrefix, FILE_SUFFIX_C_SOURCE); if (!Filename) { AslCommonError (ASL_ERROR, ASL_MSG_LISTING_FILENAME, 0, 0, 0, 0, NULL, NULL); return (AE_ERROR); } /* Open the C code source file, text mode */ FlOpenFile (ASL_FILE_C_SOURCE_OUTPUT, Filename, "w+t"); FlPrintFile (ASL_FILE_C_SOURCE_OUTPUT, "/*\n"); AslCompilerSignon (ASL_FILE_C_SOURCE_OUTPUT); AslCompilerFileHeader (ASL_FILE_C_SOURCE_OUTPUT); } /* Create/Open a C code source output file for the offset table if asked */ if (Gbl_C_OffsetTableFlag) { Filename = FlGenerateFilename (FilenamePrefix, FILE_SUFFIX_C_OFFSET); if (!Filename) { AslCommonError (ASL_ERROR, ASL_MSG_LISTING_FILENAME, 0, 0, 0, 0, NULL, NULL); return (AE_ERROR); } /* Open the C code source file, text mode */ FlOpenFile (ASL_FILE_C_OFFSET_OUTPUT, Filename, "w+t"); FlPrintFile (ASL_FILE_C_OFFSET_OUTPUT, "/*\n"); AslCompilerSignon (ASL_FILE_C_OFFSET_OUTPUT); AslCompilerFileHeader (ASL_FILE_C_OFFSET_OUTPUT); } /* Create/Open a assembly include output file if asked */ if (Gbl_AsmIncludeOutputFlag) { Filename = FlGenerateFilename (FilenamePrefix, FILE_SUFFIX_ASM_INCLUDE); if (!Filename) { AslCommonError (ASL_ERROR, ASL_MSG_LISTING_FILENAME, 0, 0, 0, 0, NULL, NULL); return (AE_ERROR); } /* Open the assembly include file, text mode */ FlOpenFile (ASL_FILE_ASM_INCLUDE_OUTPUT, Filename, "w+t"); AslCompilerSignon (ASL_FILE_ASM_INCLUDE_OUTPUT); AslCompilerFileHeader (ASL_FILE_ASM_INCLUDE_OUTPUT); } /* Create/Open a C include output file if asked */ if (Gbl_C_IncludeOutputFlag) { Filename = FlGenerateFilename (FilenamePrefix, FILE_SUFFIX_C_INCLUDE); if (!Filename) { AslCommonError (ASL_ERROR, ASL_MSG_LISTING_FILENAME, 0, 0, 0, 0, NULL, NULL); return (AE_ERROR); } /* Open the C include file, text mode */ FlOpenFile (ASL_FILE_C_INCLUDE_OUTPUT, Filename, "w+t"); FlPrintFile (ASL_FILE_C_INCLUDE_OUTPUT, "/*\n"); AslCompilerSignon (ASL_FILE_C_INCLUDE_OUTPUT); AslCompilerFileHeader (ASL_FILE_C_INCLUDE_OUTPUT); } /* Create a namespace output file if asked */ if (Gbl_NsOutputFlag) { Filename = FlGenerateFilename (FilenamePrefix, FILE_SUFFIX_NAMESPACE); if (!Filename) { AslCommonError (ASL_ERROR, ASL_MSG_LISTING_FILENAME, 0, 0, 0, 0, NULL, NULL); return (AE_ERROR); } /* Open the namespace file, text mode */ FlOpenFile (ASL_FILE_NAMESPACE_OUTPUT, Filename, "w+t"); AslCompilerSignon (ASL_FILE_NAMESPACE_OUTPUT); AslCompilerFileHeader (ASL_FILE_NAMESPACE_OUTPUT); } return (AE_OK); } #ifdef ACPI_OBSOLETE_FUNCTIONS /******************************************************************************* * * FUNCTION: FlParseInputPathname * * PARAMETERS: InputFilename - The user-specified ASL source file to be * compiled * * RETURN: Status * * DESCRIPTION: Split the input path into a directory and filename part * 1) Directory part used to open include files * 2) Filename part used to generate output filenames * ******************************************************************************/ ACPI_STATUS FlParseInputPathname ( char *InputFilename) { char *Substring; if (!InputFilename) { return (AE_OK); } /* Get the path to the input filename's directory */ Gbl_DirectoryPath = strdup (InputFilename); if (!Gbl_DirectoryPath) { return (AE_NO_MEMORY); } Substring = strrchr (Gbl_DirectoryPath, '\\'); if (!Substring) { Substring = strrchr (Gbl_DirectoryPath, '/'); if (!Substring) { Substring = strrchr (Gbl_DirectoryPath, ':'); } } if (!Substring) { Gbl_DirectoryPath[0] = 0; if (Gbl_UseDefaultAmlFilename) { Gbl_OutputFilenamePrefix = strdup (InputFilename); } } else { if (Gbl_UseDefaultAmlFilename) { Gbl_OutputFilenamePrefix = strdup (Substring + 1); } *(Substring+1) = 0; } UtConvertBackslashes (Gbl_OutputFilenamePrefix); return (AE_OK); } #endif src/acpica/source/compiler/aslfold.c000066400000000000000000000471341231470457100200040ustar00rootroot00000000000000/****************************************************************************** * * Module Name: aslfold - Constant folding * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #include "aslcompiler.h" #include "aslcompiler.y.h" #include "amlcode.h" #include "acdispat.h" #include "acparser.h" #define _COMPONENT ACPI_COMPILER ACPI_MODULE_NAME ("aslfold") /* Local prototypes */ static ACPI_STATUS OpcAmlEvaluationWalk1 ( ACPI_PARSE_OBJECT *Op, UINT32 Level, void *Context); static ACPI_STATUS OpcAmlEvaluationWalk2 ( ACPI_PARSE_OBJECT *Op, UINT32 Level, void *Context); static ACPI_STATUS OpcAmlCheckForConstant ( ACPI_PARSE_OBJECT *Op, UINT32 Level, void *Context); static void OpcUpdateIntegerNode ( ACPI_PARSE_OBJECT *Op, UINT64 Value); /******************************************************************************* * * FUNCTION: OpcAmlEvaluationWalk1 * * PARAMETERS: ASL_WALK_CALLBACK * * RETURN: Status * * DESCRIPTION: Descending callback for AML execution of constant subtrees * ******************************************************************************/ static ACPI_STATUS OpcAmlEvaluationWalk1 ( ACPI_PARSE_OBJECT *Op, UINT32 Level, void *Context) { ACPI_WALK_STATE *WalkState = Context; ACPI_STATUS Status; ACPI_PARSE_OBJECT *OutOp; WalkState->Op = Op; WalkState->Opcode = Op->Common.AmlOpcode; WalkState->OpInfo = AcpiPsGetOpcodeInfo (Op->Common.AmlOpcode); /* Copy child pointer to Arg for compatibility with Interpreter */ if (Op->Asl.Child) { Op->Common.Value.Arg = Op->Asl.Child; } /* Call AML dispatcher */ Status = AcpiDsExecBeginOp (WalkState, &OutOp); if (ACPI_FAILURE (Status)) { AcpiOsPrintf ("Constant interpretation failed - %s\n", AcpiFormatException (Status)); } return (Status); } /******************************************************************************* * * FUNCTION: OpcAmlEvaluationWalk2 * * PARAMETERS: ASL_WALK_CALLBACK * * RETURN: Status * * DESCRIPTION: Ascending callback for AML execution of constant subtrees * ******************************************************************************/ static ACPI_STATUS OpcAmlEvaluationWalk2 ( ACPI_PARSE_OBJECT *Op, UINT32 Level, void *Context) { ACPI_WALK_STATE *WalkState = Context; ACPI_STATUS Status; WalkState->Op = Op; WalkState->Opcode = Op->Common.AmlOpcode; WalkState->OpInfo = AcpiPsGetOpcodeInfo (Op->Common.AmlOpcode); /* Copy child pointer to Arg for compatibility with Interpreter */ if (Op->Asl.Child) { Op->Common.Value.Arg = Op->Asl.Child; } /* Call AML dispatcher */ Status = AcpiDsExecEndOp (WalkState); if (ACPI_FAILURE (Status)) { AcpiOsPrintf ("Constant interpretation failed - %s\n", AcpiFormatException (Status)); } return (Status); } /******************************************************************************* * * FUNCTION: OpcAmlCheckForConstant * * PARAMETERS: ASL_WALK_CALLBACK * * RETURN: Status * * DESCRIPTION: Check one Op for a type 3/4/5 AML opcode * ******************************************************************************/ static ACPI_STATUS OpcAmlCheckForConstant ( ACPI_PARSE_OBJECT *Op, UINT32 Level, void *Context) { ACPI_WALK_STATE *WalkState = Context; WalkState->Op = Op; WalkState->Opcode = Op->Common.AmlOpcode; WalkState->OpInfo = AcpiPsGetOpcodeInfo (Op->Common.AmlOpcode); DbgPrint (ASL_PARSE_OUTPUT, "[%.4d] Opcode: %12.12s ", Op->Asl.LogicalLineNumber, Op->Asl.ParseOpName); /* * These opcodes do not appear in the OpcodeInfo table, but * they represent constants, so abort the constant walk now. */ if ((WalkState->Opcode == AML_RAW_DATA_BYTE) || (WalkState->Opcode == AML_RAW_DATA_WORD) || (WalkState->Opcode == AML_RAW_DATA_DWORD) || (WalkState->Opcode == AML_RAW_DATA_QWORD)) { WalkState->WalkType = ACPI_WALK_CONST_OPTIONAL; return (AE_TYPE); } if (!(WalkState->OpInfo->Flags & AML_CONSTANT)) { /* The opcode is not a Type 3/4/5 opcode */ if (Op->Asl.CompileFlags & NODE_IS_TARGET) { DbgPrint (ASL_PARSE_OUTPUT, "**** Valid Target, cannot reduce ****\n"); } else { DbgPrint (ASL_PARSE_OUTPUT, "**** Not a Type 3/4/5 opcode ****\n"); } if (WalkState->WalkType == ACPI_WALK_CONST_OPTIONAL) { /* * We are looking at at normal expression to see if it can be * reduced. It can't. No error */ return (AE_TYPE); } /* * This is an expression that MUST reduce to a constant, and it * can't be reduced. This is an error */ if (Op->Asl.CompileFlags & NODE_IS_TARGET) { AslError (ASL_ERROR, ASL_MSG_INVALID_TARGET, Op, Op->Asl.ParseOpName); } else { AslError (ASL_ERROR, ASL_MSG_INVALID_CONSTANT_OP, Op, Op->Asl.ParseOpName); } return (AE_TYPE); } /* Debug output */ DbgPrint (ASL_PARSE_OUTPUT, "TYPE_345"); if (Op->Asl.CompileFlags & NODE_IS_TARGET) { DbgPrint (ASL_PARSE_OUTPUT, " TARGET"); } if (Op->Asl.CompileFlags & NODE_IS_TERM_ARG) { DbgPrint (ASL_PARSE_OUTPUT, " TERMARG"); } DbgPrint (ASL_PARSE_OUTPUT, "\n"); return (AE_OK); } /******************************************************************************* * * FUNCTION: OpcAmlConstantWalk * * PARAMETERS: ASL_WALK_CALLBACK * * RETURN: Status * * DESCRIPTION: Reduce an Op and its subtree to a constant if possible * ******************************************************************************/ ACPI_STATUS OpcAmlConstantWalk ( ACPI_PARSE_OBJECT *Op, UINT32 Level, void *Context) { ACPI_WALK_STATE *WalkState; ACPI_STATUS Status = AE_OK; ACPI_OPERAND_OBJECT *ObjDesc; ACPI_PARSE_OBJECT *RootOp; ACPI_PARSE_OBJECT *OriginalParentOp; UINT8 WalkType; /* * Only interested in subtrees that could possibly contain * expressions that can be evaluated at this time */ if ((!(Op->Asl.CompileFlags & NODE_COMPILE_TIME_CONST)) || (Op->Asl.CompileFlags & NODE_IS_TARGET)) { return (AE_OK); } /* Set the walk type based on the reduction used for this op */ if (Op->Asl.CompileFlags & NODE_IS_TERM_ARG) { /* Op is a TermArg, constant folding is merely optional */ if (!Gbl_FoldConstants) { return (AE_CTRL_DEPTH); } WalkType = ACPI_WALK_CONST_OPTIONAL; } else { /* Op is a DataObject, the expression MUST reduced to a constant */ WalkType = ACPI_WALK_CONST_REQUIRED; } /* Create a new walk state */ WalkState = AcpiDsCreateWalkState (0, NULL, NULL, NULL); if (!WalkState) { return (AE_NO_MEMORY); } WalkState->NextOp = NULL; WalkState->Params = NULL; WalkState->WalkType = WalkType; WalkState->CallerReturnDesc = &ObjDesc; /* * Examine the entire subtree -- all nodes must be constants * or type 3/4/5 opcodes */ Status = TrWalkParseTree (Op, ASL_WALK_VISIT_DOWNWARD, OpcAmlCheckForConstant, NULL, WalkState); /* * Did we find an entire subtree that contains all constants and type 3/4/5 * opcodes? (Only AE_OK or AE_TYPE returned from above) */ if (Status == AE_TYPE) { /* Subtree cannot be reduced to a constant */ if (WalkState->WalkType == ACPI_WALK_CONST_OPTIONAL) { AcpiDsDeleteWalkState (WalkState); return (AE_OK); } /* Don't descend any further, and use a default "constant" value */ Status = AE_CTRL_DEPTH; } else { /* Subtree can be reduced */ /* Allocate a new temporary root for this subtree */ RootOp = TrAllocateNode (PARSEOP_INTEGER); if (!RootOp) { return (AE_NO_MEMORY); } RootOp->Common.AmlOpcode = AML_INT_EVAL_SUBTREE_OP; OriginalParentOp = Op->Common.Parent; Op->Common.Parent = RootOp; /* Hand off the subtree to the AML interpreter */ Status = TrWalkParseTree (Op, ASL_WALK_VISIT_TWICE, OpcAmlEvaluationWalk1, OpcAmlEvaluationWalk2, WalkState); Op->Common.Parent = OriginalParentOp; /* TBD: we really *should* release the RootOp node */ if (ACPI_SUCCESS (Status)) { TotalFolds++; /* Get the final result */ Status = AcpiDsResultPop (&ObjDesc, WalkState); } /* Check for error from the ACPICA core */ if (ACPI_FAILURE (Status)) { AslCoreSubsystemError (Op, Status, "Failure during constant evaluation", FALSE); } } if (ACPI_FAILURE (Status)) { /* We could not resolve the subtree for some reason */ AslError (ASL_ERROR, ASL_MSG_CONSTANT_EVALUATION, Op, Op->Asl.ParseOpName); /* Set the subtree value to ZERO anyway. Eliminates further errors */ OpcUpdateIntegerNode (Op, 0); } else { AslError (ASL_OPTIMIZATION, ASL_MSG_CONSTANT_FOLDED, Op, Op->Asl.ParseOpName); /* * Because we know we executed type 3/4/5 opcodes above, we know that * the result must be either an Integer, String, or Buffer. */ switch (ObjDesc->Common.Type) { case ACPI_TYPE_INTEGER: OpcUpdateIntegerNode (Op, ObjDesc->Integer.Value); DbgPrint (ASL_PARSE_OUTPUT, "Constant expression reduced to (%s) %8.8X%8.8X\n", Op->Asl.ParseOpName, ACPI_FORMAT_UINT64 (Op->Common.Value.Integer)); break; case ACPI_TYPE_STRING: Op->Asl.ParseOpcode = PARSEOP_STRING_LITERAL; Op->Common.AmlOpcode = AML_STRING_OP; Op->Asl.AmlLength = ACPI_STRLEN (ObjDesc->String.Pointer) + 1; Op->Common.Value.String = ObjDesc->String.Pointer; DbgPrint (ASL_PARSE_OUTPUT, "Constant expression reduced to (STRING) %s\n", Op->Common.Value.String); break; case ACPI_TYPE_BUFFER: Op->Asl.ParseOpcode = PARSEOP_BUFFER; Op->Common.AmlOpcode = AML_BUFFER_OP; Op->Asl.CompileFlags = NODE_AML_PACKAGE; UtSetParseOpName (Op); /* Child node is the buffer length */ RootOp = TrAllocateNode (PARSEOP_INTEGER); RootOp->Asl.AmlOpcode = AML_DWORD_OP; RootOp->Asl.Value.Integer = ObjDesc->Buffer.Length; RootOp->Asl.Parent = Op; (void) OpcSetOptimalIntegerSize (RootOp); Op->Asl.Child = RootOp; Op = RootOp; UtSetParseOpName (Op); /* Peer to the child is the raw buffer data */ RootOp = TrAllocateNode (PARSEOP_RAW_DATA); RootOp->Asl.AmlOpcode = AML_RAW_DATA_BUFFER; RootOp->Asl.AmlLength = ObjDesc->Buffer.Length; RootOp->Asl.Value.String = (char *) ObjDesc->Buffer.Pointer; RootOp->Asl.Parent = Op->Asl.Parent; Op->Asl.Next = RootOp; Op = RootOp; DbgPrint (ASL_PARSE_OUTPUT, "Constant expression reduced to (BUFFER) length %X\n", ObjDesc->Buffer.Length); break; default: printf ("Unsupported return type: %s\n", AcpiUtGetObjectTypeName (ObjDesc)); break; } } UtSetParseOpName (Op); Op->Asl.Child = NULL; AcpiDsDeleteWalkState (WalkState); return (AE_CTRL_DEPTH); } /******************************************************************************* * * FUNCTION: OpcUpdateIntegerNode * * PARAMETERS: Op - Current parse object * * RETURN: None * * DESCRIPTION: Update node to the correct integer type. * ******************************************************************************/ static void OpcUpdateIntegerNode ( ACPI_PARSE_OBJECT *Op, UINT64 Value) { Op->Common.Value.Integer = Value; /* * The AmlLength is used by the parser to indicate a constant, * (if non-zero). Length is either (1/2/4/8) */ switch (Op->Asl.AmlLength) { case 1: TrUpdateNode (PARSEOP_BYTECONST, Op); Op->Asl.AmlOpcode = AML_RAW_DATA_BYTE; break; case 2: TrUpdateNode (PARSEOP_WORDCONST, Op); Op->Asl.AmlOpcode = AML_RAW_DATA_WORD; break; case 4: TrUpdateNode (PARSEOP_DWORDCONST, Op); Op->Asl.AmlOpcode = AML_RAW_DATA_DWORD; break; case 8: TrUpdateNode (PARSEOP_QWORDCONST, Op); Op->Asl.AmlOpcode = AML_RAW_DATA_QWORD; break; case 0: default: OpcSetOptimalIntegerSize (Op); TrUpdateNode (PARSEOP_INTEGER, Op); break; } Op->Asl.AmlLength = 0; } src/acpica/source/compiler/aslglobal.h000066400000000000000000000406721231470457100203250ustar00rootroot00000000000000/****************************************************************************** * * Module Name: aslglobal.h - Global variable definitions * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #ifndef __ASLGLOBAL_H #define __ASLGLOBAL_H /* * Global variables. Defined in aslmain.c only, externed in all other files */ #undef ASL_EXTERN #ifdef _DECLARE_GLOBALS #define ASL_EXTERN #define ASL_INIT_GLOBAL(a,b) (a)=(b) #else #define ASL_EXTERN extern #define ASL_INIT_GLOBAL(a,b) (a) #endif #ifdef _DECLARE_GLOBALS UINT32 Gbl_ExceptionCount[ASL_NUM_REPORT_LEVELS] = {0,0,0,0,0,0}; char AslHexLookup[] = { '0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F' }; /* Table below must match ASL_FILE_TYPES in asltypes.h */ ASL_FILE_INFO Gbl_Files [ASL_NUM_FILES] = { {NULL, NULL, "stdout: ", "Standard Output"}, {NULL, NULL, "stderr: ", "Standard Error"}, {NULL, NULL, "Table Input: ", "Source Input"}, {NULL, NULL, "Binary Output:", "AML Output"}, {NULL, NULL, "Source Output:", "Source Output"}, {NULL, NULL, "Preprocessor: ", "Preprocessor Output"}, {NULL, NULL, "Listing File: ", "Listing Output"}, {NULL, NULL, "Hex Dump: ", "Hex Table Output"}, {NULL, NULL, "Namespace: ", "Namespace Output"}, {NULL, NULL, "Debug File: ", "Debug Output"}, {NULL, NULL, "ASM Source: ", "Assembly Code Output"}, {NULL, NULL, "C Source: ", "C Code Output"}, {NULL, NULL, "ASM Include: ", "Assembly Header Output"}, {NULL, NULL, "C Include: ", "C Header Output"}, {NULL, NULL, "Offset Table: ", "C Offset Table Output"} }; #else extern UINT32 Gbl_ExceptionCount[ASL_NUM_REPORT_LEVELS]; extern char AslHexLookup[]; extern ASL_FILE_INFO Gbl_Files [ASL_NUM_FILES]; #endif /* * Parser and other externals */ extern int yydebug; extern FILE *AslCompilerin; extern int AslCompilerdebug; extern int DtParserdebug; extern int PrParserdebug; extern const ASL_MAPPING_ENTRY AslKeywordMapping[]; extern char *AslCompilertext; #define ASL_DEFAULT_LINE_BUFFER_SIZE (1024 * 32) /* 32K */ #define ASL_MSG_BUFFER_SIZE 4096 #define ASL_MAX_DISABLED_MESSAGES 32 #define HEX_TABLE_LINE_SIZE 8 #define HEX_LISTING_LINE_SIZE 8 /* Source code buffers and pointers for error reporting */ ASL_EXTERN char ASL_INIT_GLOBAL (*Gbl_CurrentLineBuffer, NULL); ASL_EXTERN char ASL_INIT_GLOBAL (*Gbl_LineBufPtr, NULL); ASL_EXTERN UINT32 ASL_INIT_GLOBAL (Gbl_LineBufferSize, ASL_DEFAULT_LINE_BUFFER_SIZE); ASL_EXTERN UINT32 ASL_INIT_GLOBAL (Gbl_CurrentColumn, 0); ASL_EXTERN UINT32 ASL_INIT_GLOBAL (Gbl_PreviousLineNumber, 0); ASL_EXTERN UINT32 ASL_INIT_GLOBAL (Gbl_CurrentLineNumber, 1); ASL_EXTERN UINT32 ASL_INIT_GLOBAL (Gbl_LogicalLineNumber, 1); ASL_EXTERN UINT32 ASL_INIT_GLOBAL (Gbl_CurrentLineOffset, 0); /* Exception reporting */ ASL_EXTERN ASL_ERROR_MSG ASL_INIT_GLOBAL (*Gbl_ErrorLog,NULL); ASL_EXTERN ASL_ERROR_MSG ASL_INIT_GLOBAL (*Gbl_NextError,NULL); /* Option flags */ ASL_EXTERN BOOLEAN ASL_INIT_GLOBAL (Gbl_DoCompile, TRUE); ASL_EXTERN BOOLEAN ASL_INIT_GLOBAL (Gbl_DoSignon, TRUE); ASL_EXTERN BOOLEAN ASL_INIT_GLOBAL (Gbl_PreprocessOnly, FALSE); ASL_EXTERN BOOLEAN ASL_INIT_GLOBAL (Gbl_PreprocessFlag, TRUE); ASL_EXTERN BOOLEAN ASL_INIT_GLOBAL (Gbl_DisassembleAll, FALSE); ASL_EXTERN BOOLEAN ASL_INIT_GLOBAL (Gbl_UseDefaultAmlFilename, TRUE); ASL_EXTERN BOOLEAN ASL_INIT_GLOBAL (Gbl_NsOutputFlag, FALSE); ASL_EXTERN BOOLEAN ASL_INIT_GLOBAL (Gbl_PreprocessorOutputFlag, FALSE); ASL_EXTERN BOOLEAN ASL_INIT_GLOBAL (Gbl_DebugFlag, FALSE); ASL_EXTERN BOOLEAN ASL_INIT_GLOBAL (Gbl_AsmOutputFlag, FALSE); ASL_EXTERN BOOLEAN ASL_INIT_GLOBAL (Gbl_C_OutputFlag, FALSE); ASL_EXTERN BOOLEAN ASL_INIT_GLOBAL (Gbl_C_OffsetTableFlag, FALSE); ASL_EXTERN BOOLEAN ASL_INIT_GLOBAL (Gbl_AsmIncludeOutputFlag, FALSE); ASL_EXTERN BOOLEAN ASL_INIT_GLOBAL (Gbl_C_IncludeOutputFlag, FALSE); ASL_EXTERN BOOLEAN ASL_INIT_GLOBAL (Gbl_ListingFlag, FALSE); ASL_EXTERN BOOLEAN ASL_INIT_GLOBAL (Gbl_IgnoreErrors, FALSE); ASL_EXTERN BOOLEAN ASL_INIT_GLOBAL (Gbl_SourceOutputFlag, FALSE); ASL_EXTERN BOOLEAN ASL_INIT_GLOBAL (Gbl_ParseOnlyFlag, FALSE); ASL_EXTERN BOOLEAN ASL_INIT_GLOBAL (Gbl_CompileTimesFlag, FALSE); ASL_EXTERN BOOLEAN ASL_INIT_GLOBAL (Gbl_FoldConstants, TRUE); ASL_EXTERN BOOLEAN ASL_INIT_GLOBAL (Gbl_VerboseErrors, TRUE); ASL_EXTERN BOOLEAN ASL_INIT_GLOBAL (Gbl_NoErrors, FALSE); ASL_EXTERN BOOLEAN ASL_INIT_GLOBAL (Gbl_WarningsAsErrors, FALSE); ASL_EXTERN BOOLEAN ASL_INIT_GLOBAL (Gbl_NoResourceChecking, FALSE); ASL_EXTERN BOOLEAN ASL_INIT_GLOBAL (Gbl_DisasmFlag, FALSE); ASL_EXTERN BOOLEAN ASL_INIT_GLOBAL (Gbl_IntegerOptimizationFlag, TRUE); ASL_EXTERN BOOLEAN ASL_INIT_GLOBAL (Gbl_ReferenceOptimizationFlag, TRUE); ASL_EXTERN BOOLEAN ASL_INIT_GLOBAL (Gbl_DisplayRemarks, TRUE); ASL_EXTERN BOOLEAN ASL_INIT_GLOBAL (Gbl_DisplayWarnings, TRUE); ASL_EXTERN BOOLEAN ASL_INIT_GLOBAL (Gbl_DisplayOptimizations, FALSE); ASL_EXTERN UINT8 ASL_INIT_GLOBAL (Gbl_WarningLevel, ASL_WARNING); ASL_EXTERN BOOLEAN ASL_INIT_GLOBAL (Gbl_UseOriginalCompilerId, FALSE); ASL_EXTERN BOOLEAN ASL_INIT_GLOBAL (Gbl_VerboseTemplates, FALSE); ASL_EXTERN BOOLEAN ASL_INIT_GLOBAL (Gbl_DoTemplates, FALSE); ASL_EXTERN BOOLEAN ASL_INIT_GLOBAL (Gbl_CompileGeneric, FALSE); ASL_EXTERN BOOLEAN ASL_INIT_GLOBAL (Gbl_AllExceptionsDisabled, FALSE); #define HEX_OUTPUT_NONE 0 #define HEX_OUTPUT_C 1 #define HEX_OUTPUT_ASM 2 #define HEX_OUTPUT_ASL 3 ASL_EXTERN BOOLEAN ASL_INIT_GLOBAL (Gbl_HexOutputFlag, HEX_OUTPUT_NONE); /* Files */ ASL_EXTERN char *Gbl_DirectoryPath; ASL_EXTERN char ASL_INIT_GLOBAL (*Gbl_IncludeFilename, NULL); ASL_EXTERN char ASL_INIT_GLOBAL (*Gbl_OutputFilenamePrefix, NULL); ASL_EXTERN ASL_INCLUDE_DIR ASL_INIT_GLOBAL (*Gbl_IncludeDirList, NULL); ASL_EXTERN char *Gbl_CurrentInputFilename; ASL_EXTERN char ASL_INIT_GLOBAL (*Gbl_ExternalRefFilename, NULL); ASL_EXTERN BOOLEAN ASL_INIT_GLOBAL (Gbl_HasIncludeFiles, FALSE); /* Statistics */ ASL_EXTERN UINT32 ASL_INIT_GLOBAL (Gbl_InputByteCount, 0); ASL_EXTERN UINT32 ASL_INIT_GLOBAL (Gbl_InputFieldCount, 0); ASL_EXTERN UINT32 ASL_INIT_GLOBAL (Gbl_NsLookupCount, 0); ASL_EXTERN UINT32 ASL_INIT_GLOBAL (TotalKeywords, 0); ASL_EXTERN UINT32 ASL_INIT_GLOBAL (TotalNamedObjects, 0); ASL_EXTERN UINT32 ASL_INIT_GLOBAL (TotalExecutableOpcodes, 0); ASL_EXTERN UINT32 ASL_INIT_GLOBAL (TotalParseNodes, 0); ASL_EXTERN UINT32 ASL_INIT_GLOBAL (TotalMethods, 0); ASL_EXTERN UINT32 ASL_INIT_GLOBAL (TotalAllocations, 0); ASL_EXTERN UINT32 ASL_INIT_GLOBAL (TotalAllocated, 0); ASL_EXTERN UINT32 ASL_INIT_GLOBAL (TotalFolds, 0); /* Misc */ ASL_EXTERN UINT8 ASL_INIT_GLOBAL (Gbl_RevisionOverride, 0); ASL_EXTERN UINT8 ASL_INIT_GLOBAL (Gbl_TempCount, 0); ASL_EXTERN ACPI_PARSE_OBJECT ASL_INIT_GLOBAL (*RootNode, NULL); ASL_EXTERN UINT32 ASL_INIT_GLOBAL (Gbl_TableLength, 0); ASL_EXTERN UINT32 ASL_INIT_GLOBAL (Gbl_SourceLine, 0); ASL_EXTERN ASL_LISTING_NODE ASL_INIT_GLOBAL (*Gbl_ListingNode, NULL); ASL_EXTERN ACPI_PARSE_OBJECT ASL_INIT_GLOBAL (*Gbl_NodeCacheNext, NULL); ASL_EXTERN ACPI_PARSE_OBJECT ASL_INIT_GLOBAL (*Gbl_NodeCacheLast, NULL); ASL_EXTERN char ASL_INIT_GLOBAL (*Gbl_StringCacheNext, NULL); ASL_EXTERN char ASL_INIT_GLOBAL (*Gbl_StringCacheLast, NULL); ASL_EXTERN ACPI_PARSE_OBJECT *Gbl_FirstLevelInsertionNode; ASL_EXTERN UINT8 ASL_INIT_GLOBAL (Gbl_FileType, 0); ASL_EXTERN char ASL_INIT_GLOBAL (*Gbl_Signature, NULL); ASL_EXTERN char *Gbl_TemplateSignature; ASL_EXTERN UINT32 ASL_INIT_GLOBAL (Gbl_CurrentHexColumn, 0); ASL_EXTERN UINT32 ASL_INIT_GLOBAL (Gbl_CurrentAmlOffset, 0); ASL_EXTERN UINT32 ASL_INIT_GLOBAL (Gbl_CurrentLine, 0); ASL_EXTERN UINT32 ASL_INIT_GLOBAL (Gbl_DisabledMessagesIndex, 0); ASL_EXTERN UINT8 ASL_INIT_GLOBAL (Gbl_HexBytesWereWritten, FALSE); ASL_EXTERN UINT32 ASL_INIT_GLOBAL (Gbl_NumNamespaceObjects, 0); ASL_EXTERN UINT32 ASL_INIT_GLOBAL (Gbl_ReservedMethods, 0); ASL_EXTERN char ASL_INIT_GLOBAL (*Gbl_TableSignature, "NO_SIG"); ASL_EXTERN char ASL_INIT_GLOBAL (*Gbl_TableId, "NO_ID"); /* Static structures */ ASL_EXTERN ASL_ANALYSIS_WALK_INFO AnalysisWalkInfo; ASL_EXTERN ACPI_TABLE_HEADER TableHeader; /* Event timing */ #define ASL_NUM_EVENTS 20 ASL_EXTERN ASL_EVENT_INFO AslGbl_Events[ASL_NUM_EVENTS]; ASL_EXTERN UINT8 AslGbl_NextEvent; ASL_EXTERN UINT8 AslGbl_NamespaceEvent; /* Scratch buffers */ ASL_EXTERN UINT8 Gbl_AmlBuffer[HEX_LISTING_LINE_SIZE]; ASL_EXTERN char MsgBuffer[ASL_MSG_BUFFER_SIZE]; ASL_EXTERN char StringBuffer[ASL_MSG_BUFFER_SIZE]; ASL_EXTERN char StringBuffer2[ASL_MSG_BUFFER_SIZE]; ASL_EXTERN UINT32 Gbl_DisabledMessages[ASL_MAX_DISABLED_MESSAGES]; #endif /* __ASLGLOBAL_H */ src/acpica/source/compiler/aslhex.c000066400000000000000000000366621231470457100176500ustar00rootroot00000000000000/****************************************************************************** * * Module Name: aslhex - ASCII hex output file generation (C, ASM, and ASL) * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #include "aslcompiler.h" #define _COMPONENT ACPI_COMPILER ACPI_MODULE_NAME ("ashex") /* * This module emits ASCII hex output files in either C, ASM, or ASL format */ /* Local prototypes */ static void HxDoHexOutputC ( void); static void HxDoHexOutputAsl ( void); static void HxDoHexOutputAsm ( void); static UINT32 HxReadAmlOutputFile ( UINT8 *Buffer); /******************************************************************************* * * FUNCTION: HxDoHexOutput * * PARAMETERS: None * * RETURN: None * * DESCRIPTION: Create the hex output file. Note: data is obtained by reading * the entire AML output file that was previously generated. * ******************************************************************************/ void HxDoHexOutput ( void) { switch (Gbl_HexOutputFlag) { case HEX_OUTPUT_C: HxDoHexOutputC (); break; case HEX_OUTPUT_ASM: HxDoHexOutputAsm (); break; case HEX_OUTPUT_ASL: HxDoHexOutputAsl (); break; default: /* No other output types supported */ break; } } /******************************************************************************* * * FUNCTION: HxReadAmlOutputFile * * PARAMETERS: Buffer - Where to return data * * RETURN: None * * DESCRIPTION: Read a line of the AML output prior to formatting the data * ******************************************************************************/ static UINT32 HxReadAmlOutputFile ( UINT8 *Buffer) { UINT32 Actual; Actual = fread (Buffer, 1, HEX_TABLE_LINE_SIZE, Gbl_Files[ASL_FILE_AML_OUTPUT].Handle); if (ferror (Gbl_Files[ASL_FILE_AML_OUTPUT].Handle)) { FlFileError (ASL_FILE_AML_OUTPUT, ASL_MSG_READ); AslAbort (); } return (Actual); } /******************************************************************************* * * FUNCTION: HxDoHexOutputC * * PARAMETERS: None * * RETURN: None * * DESCRIPTION: Create the hex output file. This is the same data as the AML * output file, but formatted into hex/ascii bytes suitable for * inclusion into a C source file. * ******************************************************************************/ static void HxDoHexOutputC ( void) { UINT8 FileData[HEX_TABLE_LINE_SIZE]; UINT32 LineLength; UINT32 Offset = 0; UINT32 AmlFileSize; UINT32 i; /* Get AML size, seek back to start */ AmlFileSize = FlGetFileSize (ASL_FILE_AML_OUTPUT); FlSeekFile (ASL_FILE_AML_OUTPUT, 0); FlPrintFile (ASL_FILE_HEX_OUTPUT, " * C source code output\n"); FlPrintFile (ASL_FILE_HEX_OUTPUT, " * AML code block contains 0x%X bytes\n *\n */\n", AmlFileSize); FlPrintFile (ASL_FILE_HEX_OUTPUT, "unsigned char AmlCode[] =\n{\n"); while (Offset < AmlFileSize) { /* Read enough bytes needed for one output line */ LineLength = HxReadAmlOutputFile (FileData); if (!LineLength) { break; } FlPrintFile (ASL_FILE_HEX_OUTPUT, " "); for (i = 0; i < LineLength; i++) { /* * Print each hex byte. * Add a comma until the very last byte of the AML file * (Some C compilers complain about a trailing comma) */ FlPrintFile (ASL_FILE_HEX_OUTPUT, "0x%2.2X", FileData[i]); if ((Offset + i + 1) < AmlFileSize) { FlPrintFile (ASL_FILE_HEX_OUTPUT, ","); } else { FlPrintFile (ASL_FILE_HEX_OUTPUT, " "); } } /* Add fill spaces if needed for last line */ if (LineLength < HEX_TABLE_LINE_SIZE) { FlPrintFile (ASL_FILE_HEX_OUTPUT, "%*s", 5 * (HEX_TABLE_LINE_SIZE - LineLength), " "); } /* Emit the offset and ascii dump for the entire line */ FlPrintFile (ASL_FILE_HEX_OUTPUT, " /* %8.8X", Offset); LsDumpAsciiInComment (ASL_FILE_HEX_OUTPUT, LineLength, FileData); FlPrintFile (ASL_FILE_HEX_OUTPUT, "%*s*/\n", HEX_TABLE_LINE_SIZE - LineLength + 1, " "); Offset += LineLength; } FlPrintFile (ASL_FILE_HEX_OUTPUT, "};\n"); } /******************************************************************************* * * FUNCTION: HxDoHexOutputAsl * * PARAMETERS: None * * RETURN: None * * DESCRIPTION: Create the hex output file. This is the same data as the AML * output file, but formatted into hex/ascii bytes suitable for * inclusion into a C source file. * ******************************************************************************/ static void HxDoHexOutputAsl ( void) { UINT8 FileData[HEX_TABLE_LINE_SIZE]; UINT32 LineLength; UINT32 Offset = 0; UINT32 AmlFileSize; UINT32 i; /* Get AML size, seek back to start */ AmlFileSize = FlGetFileSize (ASL_FILE_AML_OUTPUT); FlSeekFile (ASL_FILE_AML_OUTPUT, 0); FlPrintFile (ASL_FILE_HEX_OUTPUT, " * ASL source code output\n"); FlPrintFile (ASL_FILE_HEX_OUTPUT, " * AML code block contains 0x%X bytes\n *\n */\n", AmlFileSize); FlPrintFile (ASL_FILE_HEX_OUTPUT, " Name (BUF1, Buffer()\n {\n"); while (Offset < AmlFileSize) { /* Read enough bytes needed for one output line */ LineLength = HxReadAmlOutputFile (FileData); if (!LineLength) { break; } FlPrintFile (ASL_FILE_HEX_OUTPUT, " "); for (i = 0; i < LineLength; i++) { /* * Print each hex byte. * Add a comma until the very last byte of the AML file * (Some C compilers complain about a trailing comma) */ FlPrintFile (ASL_FILE_HEX_OUTPUT, "0x%2.2X", FileData[i]); if ((Offset + i + 1) < AmlFileSize) { FlPrintFile (ASL_FILE_HEX_OUTPUT, ","); } else { FlPrintFile (ASL_FILE_HEX_OUTPUT, " "); } } /* Add fill spaces if needed for last line */ if (LineLength < HEX_TABLE_LINE_SIZE) { FlPrintFile (ASL_FILE_HEX_OUTPUT, "%*s", 5 * (HEX_TABLE_LINE_SIZE - LineLength), " "); } /* Emit the offset and ascii dump for the entire line */ FlPrintFile (ASL_FILE_HEX_OUTPUT, " /* %8.8X", Offset); LsDumpAsciiInComment (ASL_FILE_HEX_OUTPUT, LineLength, FileData); FlPrintFile (ASL_FILE_HEX_OUTPUT, "%*s*/\n", HEX_TABLE_LINE_SIZE - LineLength + 1, " "); Offset += LineLength; } FlPrintFile (ASL_FILE_HEX_OUTPUT, " })\n"); } /******************************************************************************* * * FUNCTION: HxDoHexOutputAsm * * PARAMETERS: None * * RETURN: None * * DESCRIPTION: Create the hex output file. This is the same data as the AML * output file, but formatted into hex/ascii bytes suitable for * inclusion into a ASM source file. * ******************************************************************************/ static void HxDoHexOutputAsm ( void) { UINT8 FileData[HEX_TABLE_LINE_SIZE]; UINT32 LineLength; UINT32 Offset = 0; UINT32 AmlFileSize; UINT32 i; /* Get AML size, seek back to start */ AmlFileSize = FlGetFileSize (ASL_FILE_AML_OUTPUT); FlSeekFile (ASL_FILE_AML_OUTPUT, 0); FlPrintFile (ASL_FILE_HEX_OUTPUT, "; Assembly code source output\n"); FlPrintFile (ASL_FILE_HEX_OUTPUT, "; AML code block contains 0x%X bytes\n;\n", AmlFileSize); while (Offset < AmlFileSize) { /* Read enough bytes needed for one output line */ LineLength = HxReadAmlOutputFile (FileData); if (!LineLength) { break; } FlPrintFile (ASL_FILE_HEX_OUTPUT, " db "); for (i = 0; i < LineLength; i++) { /* * Print each hex byte. * Add a comma until the last byte of the line */ FlPrintFile (ASL_FILE_HEX_OUTPUT, "0%2.2Xh", FileData[i]); if ((i + 1) < LineLength) { FlPrintFile (ASL_FILE_HEX_OUTPUT, ","); } } FlPrintFile (ASL_FILE_HEX_OUTPUT, " "); /* Add fill spaces if needed for last line */ if (LineLength < HEX_TABLE_LINE_SIZE) { FlPrintFile (ASL_FILE_HEX_OUTPUT, "%*s", 5 * (HEX_TABLE_LINE_SIZE - LineLength), " "); } /* Emit the offset and ascii dump for the entire line */ FlPrintFile (ASL_FILE_HEX_OUTPUT, " ; %8.8X", Offset); LsDumpAsciiInComment (ASL_FILE_HEX_OUTPUT, LineLength, FileData); FlPrintFile (ASL_FILE_HEX_OUTPUT, "\n"); Offset += LineLength; } FlPrintFile (ASL_FILE_HEX_OUTPUT, "\n"); } src/acpica/source/compiler/asllength.c000066400000000000000000000376661231470457100203520ustar00rootroot00000000000000/****************************************************************************** * * Module Name: asllength - Tree walk to determine package and opcode lengths * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #include "aslcompiler.h" #include "aslcompiler.y.h" #include "amlcode.h" #define _COMPONENT ACPI_COMPILER ACPI_MODULE_NAME ("asllength") /* Local prototypes */ static UINT8 CgGetPackageLenByteCount ( ACPI_PARSE_OBJECT *Op, UINT32 PackageLength); static void CgGenerateAmlOpcodeLength ( ACPI_PARSE_OBJECT *Op); #ifdef ACPI_OBSOLETE_FUNCTIONS void LnAdjustLengthToRoot ( ACPI_PARSE_OBJECT *Op, UINT32 LengthDelta); #endif /******************************************************************************* * * FUNCTION: LnInitLengthsWalk * * PARAMETERS: ASL_WALK_CALLBACK * * RETURN: Status * * DESCRIPTION: Walk callback to initialize (and re-initialize) the node * subtree length(s) to zero. The Subtree lengths are bubbled * up to the root node in order to get a total AML length. * ******************************************************************************/ ACPI_STATUS LnInitLengthsWalk ( ACPI_PARSE_OBJECT *Op, UINT32 Level, void *Context) { Op->Asl.AmlSubtreeLength = 0; return (AE_OK); } /******************************************************************************* * * FUNCTION: LnPackageLengthWalk * * PARAMETERS: ASL_WALK_CALLBACK * * RETURN: Status * * DESCRIPTION: Walk callback to calculate the total AML length. * 1) Calculate the AML lengths (opcode, package length, etc.) for * THIS node. * 2) Bubbble up all of these lengths to the parent node by summing * them all into the parent subtree length. * * Note: The SubtreeLength represents the total AML length of all child nodes * in all subtrees under a given node. Therefore, once this walk is * complete, the Root Node subtree length is the AML length of the entire * tree (and thus, the entire ACPI table) * ******************************************************************************/ ACPI_STATUS LnPackageLengthWalk ( ACPI_PARSE_OBJECT *Op, UINT32 Level, void *Context) { /* Generate the AML lengths for this node */ CgGenerateAmlLengths (Op); /* Bubble up all lengths (this node and all below it) to the parent */ if ((Op->Asl.Parent) && (Op->Asl.ParseOpcode != PARSEOP_DEFAULT_ARG)) { Op->Asl.Parent->Asl.AmlSubtreeLength += (Op->Asl.AmlLength + Op->Asl.AmlOpcodeLength + Op->Asl.AmlPkgLenBytes + Op->Asl.AmlSubtreeLength); } return (AE_OK); } /******************************************************************************* * * FUNCTION: CgGetPackageLenByteCount * * PARAMETERS: Op - Parse node * PackageLength - Length to be encoded * * RETURN: Required length of the package length encoding * * DESCRIPTION: Calculate the number of bytes required to encode the given * package length. * ******************************************************************************/ static UINT8 CgGetPackageLenByteCount ( ACPI_PARSE_OBJECT *Op, UINT32 PackageLength) { /* * Determine the number of bytes required to encode the package length * Note: the package length includes the number of bytes used to encode * the package length, so we must account for this also. */ if (PackageLength <= (0x0000003F - 1)) { return (1); } else if (PackageLength <= (0x00000FFF - 2)) { return (2); } else if (PackageLength <= (0x000FFFFF - 3)) { return (3); } else if (PackageLength <= (0x0FFFFFFF - 4)) { return (4); } else { /* Fatal error - the package length is too large to encode */ AslError (ASL_ERROR, ASL_MSG_ENCODING_LENGTH, Op, NULL); } return (0); } /******************************************************************************* * * FUNCTION: CgGenerateAmlOpcodeLength * * PARAMETERS: Op - Parse node whose AML opcode lengths will be * calculated * * RETURN: None. * * DESCRIPTION: Calculate the AmlOpcodeLength, AmlPkgLenBytes, and AmlLength * fields for this node. * ******************************************************************************/ static void CgGenerateAmlOpcodeLength ( ACPI_PARSE_OBJECT *Op) { /* Check for two-byte opcode */ if (Op->Asl.AmlOpcode > 0x00FF) { Op->Asl.AmlOpcodeLength = 2; } else { Op->Asl.AmlOpcodeLength = 1; } /* Does this opcode have an associated "PackageLength" field? */ Op->Asl.AmlPkgLenBytes = 0; if (Op->Asl.CompileFlags & NODE_AML_PACKAGE) { Op->Asl.AmlPkgLenBytes = CgGetPackageLenByteCount ( Op, Op->Asl.AmlSubtreeLength); } /* Data opcode lengths are easy */ switch (Op->Asl.AmlOpcode) { case AML_BYTE_OP: Op->Asl.AmlLength = 1; break; case AML_WORD_OP: Op->Asl.AmlLength = 2; break; case AML_DWORD_OP: Op->Asl.AmlLength = 4; break; case AML_QWORD_OP: Op->Asl.AmlLength = 8; break; default: /* All data opcodes must be above */ break; } } /******************************************************************************* * * FUNCTION: CgGenerateAmlLengths * * PARAMETERS: Op - Parse node * * RETURN: None. * * DESCRIPTION: Generate internal length fields based on the AML opcode or * parse opcode. * ******************************************************************************/ void CgGenerateAmlLengths ( ACPI_PARSE_OBJECT *Op) { char *Buffer; ACPI_STATUS Status; switch (Op->Asl.AmlOpcode) { case AML_RAW_DATA_BYTE: Op->Asl.AmlOpcodeLength = 0; Op->Asl.AmlLength = 1; return; case AML_RAW_DATA_WORD: Op->Asl.AmlOpcodeLength = 0; Op->Asl.AmlLength = 2; return; case AML_RAW_DATA_DWORD: Op->Asl.AmlOpcodeLength = 0; Op->Asl.AmlLength = 4; return; case AML_RAW_DATA_QWORD: Op->Asl.AmlOpcodeLength = 0; Op->Asl.AmlLength = 8; return; case AML_RAW_DATA_BUFFER: /* Aml length is/was set by creator */ Op->Asl.AmlOpcodeLength = 0; return; case AML_RAW_DATA_CHAIN: /* Aml length is/was set by creator */ Op->Asl.AmlOpcodeLength = 0; return; default: break; } switch (Op->Asl.ParseOpcode) { case PARSEOP_DEFINITIONBLOCK: Gbl_TableLength = sizeof (ACPI_TABLE_HEADER) + Op->Asl.AmlSubtreeLength; break; case PARSEOP_NAMESEG: Op->Asl.AmlOpcodeLength = 0; Op->Asl.AmlLength = 4; Op->Asl.ExternalName = Op->Asl.Value.String; break; case PARSEOP_NAMESTRING: case PARSEOP_METHODCALL: if (Op->Asl.CompileFlags & NODE_NAME_INTERNALIZED) { break; } Op->Asl.AmlOpcodeLength = 0; Status = UtInternalizeName (Op->Asl.Value.String, &Buffer); if (ACPI_FAILURE (Status)) { DbgPrint (ASL_DEBUG_OUTPUT, "Failure from internalize name %X\n", Status); break; } Op->Asl.ExternalName = Op->Asl.Value.String; Op->Asl.Value.String = Buffer; Op->Asl.CompileFlags |= NODE_NAME_INTERNALIZED; Op->Asl.AmlLength = strlen (Buffer); /* * Check for single backslash reference to root, * make it a null terminated string in the AML */ if (Op->Asl.AmlLength == 1) { Op->Asl.AmlLength = 2; } break; case PARSEOP_STRING_LITERAL: Op->Asl.AmlOpcodeLength = 1; /* Get null terminator */ Op->Asl.AmlLength = strlen (Op->Asl.Value.String) + 1; break; case PARSEOP_PACKAGE_LENGTH: Op->Asl.AmlOpcodeLength = 0; Op->Asl.AmlPkgLenBytes = CgGetPackageLenByteCount (Op, (UINT32) Op->Asl.Value.Integer); break; case PARSEOP_RAW_DATA: Op->Asl.AmlOpcodeLength = 0; break; case PARSEOP_DEFAULT_ARG: case PARSEOP_EXTERNAL: case PARSEOP_INCLUDE: case PARSEOP_INCLUDE_END: /* Ignore the "default arg" nodes, they are extraneous at this point */ break; default: CgGenerateAmlOpcodeLength (Op); break; } } #ifdef ACPI_OBSOLETE_FUNCTIONS /******************************************************************************* * * FUNCTION: LnAdjustLengthToRoot * * PARAMETERS: Op - Node whose Length was changed * * RETURN: None. * * DESCRIPTION: Change the Subtree length of the given node, and bubble the * change all the way up to the root node. This allows for * last second changes to a package length (for example, if the * package length encoding gets shorter or longer.) * ******************************************************************************/ void LnAdjustLengthToRoot ( ACPI_PARSE_OBJECT *SubtreeOp, UINT32 LengthDelta) { ACPI_PARSE_OBJECT *Op; /* Adjust all subtree lengths up to the root */ Op = SubtreeOp->Asl.Parent; while (Op) { Op->Asl.AmlSubtreeLength -= LengthDelta; Op = Op->Asl.Parent; } /* Adjust the global table length */ Gbl_TableLength -= LengthDelta; } #endif src/acpica/source/compiler/asllisting.c000066400000000000000000000531541231470457100205300ustar00rootroot00000000000000/****************************************************************************** * * Module Name: asllisting - Listing file generation * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #include "aslcompiler.h" #include "aslcompiler.y.h" #include "amlcode.h" #include "acparser.h" #include "acnamesp.h" #define _COMPONENT ACPI_COMPILER ACPI_MODULE_NAME ("asllisting") /* Local prototypes */ static void LsGenerateListing ( UINT32 FileId); static ACPI_STATUS LsAmlListingWalk ( ACPI_PARSE_OBJECT *Op, UINT32 Level, void *Context); static ACPI_STATUS LsTreeWriteWalk ( ACPI_PARSE_OBJECT *Op, UINT32 Level, void *Context); static void LsWriteNodeToListing ( ACPI_PARSE_OBJECT *Op, UINT32 FileId); static void LsFinishSourceListing ( UINT32 FileId); /******************************************************************************* * * FUNCTION: LsDoListings * * PARAMETERS: None. Examines the various output file global flags. * * RETURN: None * * DESCRIPTION: Generate all requested listing files. * ******************************************************************************/ void LsDoListings ( void) { if (Gbl_C_OutputFlag) { LsGenerateListing (ASL_FILE_C_SOURCE_OUTPUT); } if (Gbl_ListingFlag) { LsGenerateListing (ASL_FILE_LISTING_OUTPUT); } if (Gbl_AsmOutputFlag) { LsGenerateListing (ASL_FILE_ASM_SOURCE_OUTPUT); } if (Gbl_C_IncludeOutputFlag) { LsGenerateListing (ASL_FILE_C_INCLUDE_OUTPUT); } if (Gbl_AsmIncludeOutputFlag) { LsGenerateListing (ASL_FILE_ASM_INCLUDE_OUTPUT); } if (Gbl_C_OffsetTableFlag) { LsGenerateListing (ASL_FILE_C_OFFSET_OUTPUT); } } /******************************************************************************* * * FUNCTION: LsGenerateListing * * PARAMETERS: FileId - ID of listing file * * RETURN: None * * DESCRIPTION: Generate a listing file. This can be one of the several types * of "listings" supported. * ******************************************************************************/ static void LsGenerateListing ( UINT32 FileId) { /* Start at the beginning of both the source and AML files */ FlSeekFile (ASL_FILE_SOURCE_OUTPUT, 0); FlSeekFile (ASL_FILE_AML_OUTPUT, 0); Gbl_SourceLine = 0; Gbl_CurrentHexColumn = 0; LsPushNode (Gbl_Files[ASL_FILE_INPUT].Filename); if (FileId == ASL_FILE_C_OFFSET_OUTPUT) { Gbl_CurrentAmlOffset = 0; /* Offset table file has a special header and footer */ LsDoOffsetTableHeader (FileId); TrWalkParseTree (RootNode, ASL_WALK_VISIT_DOWNWARD, LsAmlOffsetWalk, NULL, (void *) ACPI_TO_POINTER (FileId)); LsDoOffsetTableFooter (FileId); return; } /* Process all parse nodes */ TrWalkParseTree (RootNode, ASL_WALK_VISIT_DOWNWARD, LsAmlListingWalk, NULL, (void *) ACPI_TO_POINTER (FileId)); /* Final processing */ LsFinishSourceListing (FileId); } /******************************************************************************* * * FUNCTION: LsAmlListingWalk * * PARAMETERS: ASL_WALK_CALLBACK * * RETURN: Status * * DESCRIPTION: Process one node during a listing file generation. * ******************************************************************************/ static ACPI_STATUS LsAmlListingWalk ( ACPI_PARSE_OBJECT *Op, UINT32 Level, void *Context) { UINT8 FileByte; UINT32 i; UINT32 FileId = (UINT32) ACPI_TO_INTEGER (Context); LsWriteNodeToListing (Op, FileId); if (Op->Asl.CompileFlags & NODE_IS_RESOURCE_DATA) { /* Buffer is a resource template, don't dump the data all at once */ return (AE_OK); } /* Write the hex bytes to the listing file(s) (if requested) */ for (i = 0; i < Op->Asl.FinalAmlLength; i++) { if (ACPI_FAILURE (FlReadFile (ASL_FILE_AML_OUTPUT, &FileByte, 1))) { FlFileError (ASL_FILE_AML_OUTPUT, ASL_MSG_READ); AslAbort (); } LsWriteListingHexBytes (&FileByte, 1, FileId); } return (AE_OK); } /******************************************************************************* * * FUNCTION: LsDumpParseTree, LsTreeWriteWalk * * PARAMETERS: None * * RETURN: None * * DESCRIPTION: Dump entire parse tree, for compiler debug only * ******************************************************************************/ void LsDumpParseTree ( void) { if (!Gbl_DebugFlag) { return; } DbgPrint (ASL_TREE_OUTPUT, "\nOriginal parse tree from parser:\n\n"); TrWalkParseTree (RootNode, ASL_WALK_VISIT_DOWNWARD, LsTreeWriteWalk, NULL, NULL); } static ACPI_STATUS LsTreeWriteWalk ( ACPI_PARSE_OBJECT *Op, UINT32 Level, void *Context) { /* Debug output */ DbgPrint (ASL_TREE_OUTPUT, "%5.5d [%2d]", Op->Asl.LogicalLineNumber, Level); UtPrintFormattedName (Op->Asl.ParseOpcode, Level); DbgPrint (ASL_TREE_OUTPUT, " (%.4X)\n", Op->Asl.ParseOpcode); return (AE_OK); } /******************************************************************************* * * FUNCTION: LsWriteNodeToListing * * PARAMETERS: Op - Parse node to write to the listing file. * FileId - ID of current listing file * * RETURN: None. * * DESCRIPTION: Write "a node" to the listing file. This means to * 1) Write out all of the source text associated with the node * 2) Write out all of the AML bytes associated with the node * 3) Write any compiler exceptions associated with the node * ******************************************************************************/ static void LsWriteNodeToListing ( ACPI_PARSE_OBJECT *Op, UINT32 FileId) { const ACPI_OPCODE_INFO *OpInfo; UINT32 OpClass; char *Pathname; UINT32 Length; UINT32 i; OpInfo = AcpiPsGetOpcodeInfo (Op->Asl.AmlOpcode); OpClass = OpInfo->Class; /* TBD: clean this up with a single flag that says: * I start a named output block */ if (FileId == ASL_FILE_C_SOURCE_OUTPUT) { switch (Op->Asl.ParseOpcode) { case PARSEOP_DEFINITIONBLOCK: case PARSEOP_METHODCALL: case PARSEOP_INCLUDE: case PARSEOP_INCLUDE_END: case PARSEOP_DEFAULT_ARG: break; default: switch (OpClass) { case AML_CLASS_NAMED_OBJECT: switch (Op->Asl.AmlOpcode) { case AML_SCOPE_OP: case AML_ALIAS_OP: break; default: if (Op->Asl.ExternalName) { LsFlushListingBuffer (FileId); FlPrintFile (FileId, " };\n"); } break; } break; default: /* Don't care about other objects */ break; } break; } } /* These cases do not have a corresponding AML opcode */ switch (Op->Asl.ParseOpcode) { case PARSEOP_DEFINITIONBLOCK: LsWriteSourceLines (Op->Asl.EndLine, Op->Asl.EndLogicalLine, FileId); /* Use the table Signature and TableId to build a unique name */ if (FileId == ASL_FILE_ASM_SOURCE_OUTPUT) { FlPrintFile (FileId, "%s_%s_Header \\\n", Gbl_TableSignature, Gbl_TableId); } if (FileId == ASL_FILE_C_SOURCE_OUTPUT) { FlPrintFile (FileId, " unsigned char %s_%s_Header [] =\n {\n", Gbl_TableSignature, Gbl_TableId); } if (FileId == ASL_FILE_ASM_INCLUDE_OUTPUT) { FlPrintFile (FileId, "extrn %s_%s_Header : byte\n", Gbl_TableSignature, Gbl_TableId); } if (FileId == ASL_FILE_C_INCLUDE_OUTPUT) { FlPrintFile (FileId, "extern unsigned char %s_%s_Header [];\n", Gbl_TableSignature, Gbl_TableId); } return; case PARSEOP_METHODCALL: LsWriteSourceLines (Op->Asl.LineNumber, Op->Asl.LogicalLineNumber, FileId); return; case PARSEOP_INCLUDE: /* Flush everything up to and including the include source line */ LsWriteSourceLines (Op->Asl.LineNumber, Op->Asl.LogicalLineNumber, FileId); /* Create a new listing node and push it */ LsPushNode (Op->Asl.Child->Asl.Value.String); return; case PARSEOP_INCLUDE_END: /* Flush out the rest of the include file */ LsWriteSourceLines (Op->Asl.LineNumber, Op->Asl.LogicalLineNumber, FileId); /* Pop off this listing node and go back to the parent file */ (void) LsPopNode (); return; case PARSEOP_DEFAULT_ARG: if (Op->Asl.CompileFlags & NODE_IS_RESOURCE_DESC) { LsWriteSourceLines (Op->Asl.LineNumber, Op->Asl.EndLogicalLine, FileId); } return; default: /* All other opcodes have an AML opcode */ break; } /* * Otherwise, we look at the AML opcode because we can * switch on the opcode type, getting an entire class * at once */ switch (OpClass) { case AML_CLASS_ARGUMENT: /* argument type only */ case AML_CLASS_INTERNAL: break; case AML_CLASS_NAMED_OBJECT: switch (Op->Asl.AmlOpcode) { case AML_FIELD_OP: case AML_INDEX_FIELD_OP: case AML_BANK_FIELD_OP: /* * For fields, we want to dump all the AML after the * entire definition */ LsWriteSourceLines (Op->Asl.EndLine, Op->Asl.EndLogicalLine, FileId); break; case AML_NAME_OP: if (Op->Asl.CompileFlags & NODE_IS_RESOURCE_DESC) { LsWriteSourceLines (Op->Asl.LineNumber, Op->Asl.LogicalLineNumber, FileId); } else { /* * For fields, we want to dump all the AML after the * entire definition */ LsWriteSourceLines (Op->Asl.EndLine, Op->Asl.EndLogicalLine, FileId); } break; default: LsWriteSourceLines (Op->Asl.LineNumber, Op->Asl.LogicalLineNumber, FileId); break; } switch (Op->Asl.AmlOpcode) { case AML_SCOPE_OP: case AML_ALIAS_OP: /* These opcodes do not declare a new object, ignore them */ break; default: /* All other named object opcodes come here */ switch (FileId) { case ASL_FILE_ASM_SOURCE_OUTPUT: case ASL_FILE_C_SOURCE_OUTPUT: case ASL_FILE_ASM_INCLUDE_OUTPUT: case ASL_FILE_C_INCLUDE_OUTPUT: /* * For named objects, we will create a valid symbol so that the * AML code can be referenced from C or ASM */ if (Op->Asl.ExternalName) { /* Get the full pathname associated with this node */ Pathname = AcpiNsGetExternalPathname (Op->Asl.Node); Length = strlen (Pathname); if (Length >= 4) { /* Convert all dots in the path to underscores */ for (i = 0; i < Length; i++) { if (Pathname[i] == '.') { Pathname[i] = '_'; } } /* Create the appropriate symbol in the output file */ if (FileId == ASL_FILE_ASM_SOURCE_OUTPUT) { FlPrintFile (FileId, "%s_%s_%s \\\n", Gbl_TableSignature, Gbl_TableId, &Pathname[1]); } if (FileId == ASL_FILE_C_SOURCE_OUTPUT) { FlPrintFile (FileId, " unsigned char %s_%s_%s [] =\n {\n", Gbl_TableSignature, Gbl_TableId, &Pathname[1]); } if (FileId == ASL_FILE_ASM_INCLUDE_OUTPUT) { FlPrintFile (FileId, "extrn %s_%s_%s : byte\n", Gbl_TableSignature, Gbl_TableId, &Pathname[1]); } if (FileId == ASL_FILE_C_INCLUDE_OUTPUT) { FlPrintFile (FileId, "extern unsigned char %s_%s_%s [];\n", Gbl_TableSignature, Gbl_TableId, &Pathname[1]); } } ACPI_FREE (Pathname); } break; default: /* Nothing to do for listing file */ break; } } break; case AML_CLASS_EXECUTE: case AML_CLASS_CREATE: default: if ((Op->Asl.ParseOpcode == PARSEOP_BUFFER) && (Op->Asl.CompileFlags & NODE_IS_RESOURCE_DESC)) { return; } LsWriteSourceLines (Op->Asl.LineNumber, Op->Asl.LogicalLineNumber, FileId); break; case AML_CLASS_UNKNOWN: break; } } /******************************************************************************* * * FUNCTION: LsFinishSourceListing * * PARAMETERS: FileId - ID of current listing file. * * RETURN: None * * DESCRIPTION: Cleanup routine for the listing file. Flush the hex AML * listing buffer, and flush out any remaining lines in the * source input file. * ******************************************************************************/ static void LsFinishSourceListing ( UINT32 FileId) { if ((FileId == ASL_FILE_ASM_INCLUDE_OUTPUT) || (FileId == ASL_FILE_C_INCLUDE_OUTPUT)) { return; } LsFlushListingBuffer (FileId); Gbl_CurrentAmlOffset = 0; /* Flush any remaining text in the source file */ if (FileId == ASL_FILE_C_SOURCE_OUTPUT) { FlPrintFile (FileId, " /*\n"); } while (LsWriteOneSourceLine (FileId)) { ; } if (FileId == ASL_FILE_C_SOURCE_OUTPUT) { FlPrintFile (FileId, "\n */\n };\n"); } FlPrintFile (FileId, "\n"); if (FileId == ASL_FILE_LISTING_OUTPUT) { /* Print a summary of the compile exceptions */ FlPrintFile (FileId, "\n\nSummary of errors and warnings\n\n"); AePrintErrorLog (FileId); FlPrintFile (FileId, "\n"); UtDisplaySummary (FileId); FlPrintFile (FileId, "\n"); } } src/acpica/source/compiler/asllistsup.c000066400000000000000000000562041231470457100205610ustar00rootroot00000000000000/****************************************************************************** * * Module Name: asllistsup - Listing file support utilities * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #include "aslcompiler.h" #include "aslcompiler.y.h" #define _COMPONENT ACPI_COMPILER ACPI_MODULE_NAME ("aslistsup") /******************************************************************************* * * FUNCTION: LsDumpAscii * * PARAMETERS: FileId - ID of current listing file * Count - Number of bytes to convert * Buffer - Buffer of bytes to convert * * RETURN: None * * DESCRIPTION: Convert hex bytes to ascii * ******************************************************************************/ void LsDumpAscii ( UINT32 FileId, UINT32 Count, UINT8 *Buffer) { UINT8 BufChar; UINT32 i; FlPrintFile (FileId, " \""); for (i = 0; i < Count; i++) { BufChar = Buffer[i]; if (isprint (BufChar)) { FlPrintFile (FileId, "%c", BufChar); } else { /* Not a printable character, just put out a dot */ FlPrintFile (FileId, "."); } } FlPrintFile (FileId, "\""); } /******************************************************************************* * * FUNCTION: LsDumpAsciiInComment * * PARAMETERS: FileId - ID of current listing file * Count - Number of bytes to convert * Buffer - Buffer of bytes to convert * * RETURN: None * * DESCRIPTION: Convert hex bytes to ascii * ******************************************************************************/ void LsDumpAsciiInComment ( UINT32 FileId, UINT32 Count, UINT8 *Buffer) { UINT8 BufChar = 0; UINT8 LastChar; UINT32 i; FlPrintFile (FileId, " \""); for (i = 0; i < Count; i++) { LastChar = BufChar; BufChar = Buffer[i]; if (isprint (BufChar)) { /* Handle embedded C comment sequences */ if (((LastChar == '*') && (BufChar == '/')) || ((LastChar == '/') && (BufChar == '*'))) { /* Insert a space to break the sequence */ FlPrintFile (FileId, ".", BufChar); } FlPrintFile (FileId, "%c", BufChar); } else { /* Not a printable character, just put out a dot */ FlPrintFile (FileId, "."); } } FlPrintFile (FileId, "\""); } /******************************************************************************* * * FUNCTION: LsCheckException * * PARAMETERS: LineNumber - Current logical (cumulative) line # * FileId - ID of output listing file * * RETURN: None * * DESCRIPTION: Check if there is an exception for this line, and if there is, * put it in the listing immediately. Handles multiple errors * per line. Gbl_NextError points to the next error in the * sorted (by line #) list of compile errors/warnings. * ******************************************************************************/ void LsCheckException ( UINT32 LineNumber, UINT32 FileId) { if ((!Gbl_NextError) || (LineNumber < Gbl_NextError->LogicalLineNumber )) { return; } /* Handle multiple errors per line */ if (FileId == ASL_FILE_LISTING_OUTPUT) { while (Gbl_NextError && (LineNumber >= Gbl_NextError->LogicalLineNumber)) { AePrintException (FileId, Gbl_NextError, "\n[****iasl****]\n"); Gbl_NextError = Gbl_NextError->Next; } FlPrintFile (FileId, "\n"); } } /******************************************************************************* * * FUNCTION: LsWriteListingHexBytes * * PARAMETERS: Buffer - AML code buffer * Length - Number of AML bytes to write * FileId - ID of current listing file. * * RETURN: None * * DESCRIPTION: Write the contents of the AML buffer to the listing file via * the listing buffer. The listing buffer is flushed every 16 * AML bytes. * ******************************************************************************/ void LsWriteListingHexBytes ( UINT8 *Buffer, UINT32 Length, UINT32 FileId) { UINT32 i; /* Transfer all requested bytes */ for (i = 0; i < Length; i++) { /* Print line header when buffer is empty */ if (Gbl_CurrentHexColumn == 0) { if (Gbl_HasIncludeFiles) { FlPrintFile (FileId, "%*s", 10, " "); } switch (FileId) { case ASL_FILE_LISTING_OUTPUT: FlPrintFile (FileId, "%8.8X%s", Gbl_CurrentAmlOffset, ASL_LISTING_LINE_PREFIX); break; case ASL_FILE_ASM_SOURCE_OUTPUT: FlPrintFile (FileId, " db "); break; case ASL_FILE_C_SOURCE_OUTPUT: FlPrintFile (FileId, " "); break; default: /* No other types supported */ return; } } /* Transfer AML byte and update counts */ Gbl_AmlBuffer[Gbl_CurrentHexColumn] = Buffer[i]; Gbl_CurrentHexColumn++; Gbl_CurrentAmlOffset++; /* Flush buffer when it is full */ if (Gbl_CurrentHexColumn >= HEX_LISTING_LINE_SIZE) { LsFlushListingBuffer (FileId); } } } /******************************************************************************* * * FUNCTION: LsWriteSourceLines * * PARAMETERS: ToLineNumber - * ToLogicalLineNumber - Write up to this source line number * FileId - ID of current listing file * * RETURN: None * * DESCRIPTION: Read then write source lines to the listing file until we have * reached the specified logical (cumulative) line number. This * automatically echos out comment blocks and other non-AML * generating text until we get to the actual AML-generating line * of ASL code specified by the logical line number. * ******************************************************************************/ void LsWriteSourceLines ( UINT32 ToLineNumber, UINT32 ToLogicalLineNumber, UINT32 FileId) { /* Nothing to do for these file types */ if ((FileId == ASL_FILE_ASM_INCLUDE_OUTPUT) || (FileId == ASL_FILE_C_INCLUDE_OUTPUT)) { return; } Gbl_CurrentLine = ToLogicalLineNumber; /* Flush any hex bytes remaining from the last opcode */ LsFlushListingBuffer (FileId); /* Read lines and write them as long as we are not caught up */ if (Gbl_SourceLine < Gbl_CurrentLine) { /* * If we just completed writing some AML hex bytes, output a linefeed * to add some whitespace for readability. */ if (Gbl_HexBytesWereWritten) { FlPrintFile (FileId, "\n"); Gbl_HexBytesWereWritten = FALSE; } if (FileId == ASL_FILE_C_SOURCE_OUTPUT) { FlPrintFile (FileId, " /*\n"); } /* Write one line at a time until we have reached the target line # */ while ((Gbl_SourceLine < Gbl_CurrentLine) && LsWriteOneSourceLine (FileId)) { ; } if (FileId == ASL_FILE_C_SOURCE_OUTPUT) { FlPrintFile (FileId, " */"); } FlPrintFile (FileId, "\n"); } } /******************************************************************************* * * FUNCTION: LsWriteOneSourceLine * * PARAMETERS: FileId - ID of current listing file * * RETURN: FALSE on EOF (input source file), TRUE otherwise * * DESCRIPTION: Read one line from the input source file and echo it to the * listing file, prefixed with the line number, and if the source * file contains include files, prefixed with the current filename * ******************************************************************************/ UINT32 LsWriteOneSourceLine ( UINT32 FileId) { UINT8 FileByte; UINT32 Column = 0; UINT32 Index = 16; BOOLEAN StartOfLine = FALSE; BOOLEAN ProcessLongLine = FALSE; Gbl_SourceLine++; Gbl_ListingNode->LineNumber++; /* Ignore lines that are completely blank (but count the line above) */ if (FlReadFile (ASL_FILE_SOURCE_OUTPUT, &FileByte, 1) != AE_OK) { return (0); } if (FileByte == '\n') { return (1); } /* * This is a non-empty line, we will print the entire line with * the line number and possibly other prefixes and transforms. */ /* Line prefixes for special files, C and ASM output */ if (FileId == ASL_FILE_C_SOURCE_OUTPUT) { FlPrintFile (FileId, " *"); } if (FileId == ASL_FILE_ASM_SOURCE_OUTPUT) { FlPrintFile (FileId, "; "); } if (Gbl_HasIncludeFiles) { /* * This file contains "include" statements, print the current * filename and line number within the current file */ FlPrintFile (FileId, "%12s %5d%s", Gbl_ListingNode->Filename, Gbl_ListingNode->LineNumber, ASL_LISTING_LINE_PREFIX); } else { /* No include files, just print the line number */ FlPrintFile (FileId, "%8u%s", Gbl_SourceLine, ASL_LISTING_LINE_PREFIX); } /* Read the rest of this line (up to a newline or EOF) */ do { if (FileId == ASL_FILE_C_SOURCE_OUTPUT) { if (FileByte == '/') { FileByte = '*'; } } /* Split long input lines for readability in the listing */ Column++; if (Column >= 128) { if (!ProcessLongLine) { if ((FileByte != '}') && (FileByte != '{')) { goto WriteByte; } ProcessLongLine = TRUE; } if (FileByte == '{') { FlPrintFile (FileId, "\n%*s{\n", Index, " "); StartOfLine = TRUE; Index += 4; continue; } else if (FileByte == '}') { if (!StartOfLine) { FlPrintFile (FileId, "\n"); } StartOfLine = TRUE; Index -= 4; FlPrintFile (FileId, "%*s}\n", Index, " "); continue; } /* Ignore spaces/tabs at the start of line */ else if ((FileByte == ' ') && StartOfLine) { continue; } else if (StartOfLine) { StartOfLine = FALSE; FlPrintFile (FileId, "%*s", Index, " "); } WriteByte: FlWriteFile (FileId, &FileByte, 1); if (FileByte == '\n') { /* * This line has been completed. * Check if an error occurred on this source line during the compile. * If so, we print the error message after the source line. */ LsCheckException (Gbl_SourceLine, FileId); return (1); } } else { FlWriteFile (FileId, &FileByte, 1); if (FileByte == '\n') { /* * This line has been completed. * Check if an error occurred on this source line during the compile. * If so, we print the error message after the source line. */ LsCheckException (Gbl_SourceLine, FileId); return (1); } } } while (FlReadFile (ASL_FILE_SOURCE_OUTPUT, &FileByte, 1) == AE_OK); /* EOF on the input file was reached */ return (0); } /******************************************************************************* * * FUNCTION: LsFlushListingBuffer * * PARAMETERS: FileId - ID of the listing file * * RETURN: None * * DESCRIPTION: Flush out the current contents of the 16-byte hex AML code * buffer. Usually called at the termination of a single line * of source code or when the buffer is full. * ******************************************************************************/ void LsFlushListingBuffer ( UINT32 FileId) { UINT32 i; if (Gbl_CurrentHexColumn == 0) { return; } /* Write the hex bytes */ switch (FileId) { case ASL_FILE_LISTING_OUTPUT: for (i = 0; i < Gbl_CurrentHexColumn; i++) { FlPrintFile (FileId, "%2.2X ", Gbl_AmlBuffer[i]); } for (i = 0; i < ((HEX_LISTING_LINE_SIZE - Gbl_CurrentHexColumn) * 3); i++) { FlWriteFile (FileId, ".", 1); } /* Write the ASCII character associated with each of the bytes */ LsDumpAscii (FileId, Gbl_CurrentHexColumn, Gbl_AmlBuffer); break; case ASL_FILE_ASM_SOURCE_OUTPUT: for (i = 0; i < Gbl_CurrentHexColumn; i++) { if (i > 0) { FlPrintFile (FileId, ","); } FlPrintFile (FileId, "0%2.2Xh", Gbl_AmlBuffer[i]); } for (i = 0; i < ((HEX_LISTING_LINE_SIZE - Gbl_CurrentHexColumn) * 5); i++) { FlWriteFile (FileId, " ", 1); } FlPrintFile (FileId, " ;%8.8X", Gbl_CurrentAmlOffset - HEX_LISTING_LINE_SIZE); /* Write the ASCII character associated with each of the bytes */ LsDumpAscii (FileId, Gbl_CurrentHexColumn, Gbl_AmlBuffer); break; case ASL_FILE_C_SOURCE_OUTPUT: for (i = 0; i < Gbl_CurrentHexColumn; i++) { FlPrintFile (FileId, "0x%2.2X,", Gbl_AmlBuffer[i]); } /* Pad hex output with spaces if line is shorter than max line size */ for (i = 0; i < ((HEX_LISTING_LINE_SIZE - Gbl_CurrentHexColumn) * 5); i++) { FlWriteFile (FileId, " ", 1); } /* AML offset for the start of the line */ FlPrintFile (FileId, " /* %8.8X", Gbl_CurrentAmlOffset - Gbl_CurrentHexColumn); /* Write the ASCII character associated with each of the bytes */ LsDumpAsciiInComment (FileId, Gbl_CurrentHexColumn, Gbl_AmlBuffer); FlPrintFile (FileId, " */"); break; default: /* No other types supported */ return; } FlPrintFile (FileId, "\n"); Gbl_CurrentHexColumn = 0; Gbl_HexBytesWereWritten = TRUE; } /******************************************************************************* * * FUNCTION: LsPushNode * * PARAMETERS: Filename - Pointer to the include filename * * RETURN: None * * DESCRIPTION: Push a listing node on the listing/include file stack. This * stack enables tracking of include files (infinitely nested) * and resumption of the listing of the parent file when the * include file is finished. * ******************************************************************************/ void LsPushNode ( char *Filename) { ASL_LISTING_NODE *Lnode; /* Create a new node */ Lnode = UtLocalCalloc (sizeof (ASL_LISTING_NODE)); /* Initialize */ Lnode->Filename = Filename; Lnode->LineNumber = 0; /* Link (push) */ Lnode->Next = Gbl_ListingNode; Gbl_ListingNode = Lnode; } /******************************************************************************* * * FUNCTION: LsPopNode * * PARAMETERS: None * * RETURN: List head after current head is popped off * * DESCRIPTION: Pop the current head of the list, free it, and return the * next node on the stack (the new current node). * ******************************************************************************/ ASL_LISTING_NODE * LsPopNode ( void) { ASL_LISTING_NODE *Lnode; /* Just grab the node at the head of the list */ Lnode = Gbl_ListingNode; if ((!Lnode) || (!Lnode->Next)) { AslError (ASL_ERROR, ASL_MSG_COMPILER_INTERNAL, NULL, "Could not pop empty listing stack"); return (Gbl_ListingNode); } Gbl_ListingNode = Lnode->Next; ACPI_FREE (Lnode); /* New "Current" node is the new head */ return (Gbl_ListingNode); } src/acpica/source/compiler/aslload.c000066400000000000000000000745431231470457100200030ustar00rootroot00000000000000/****************************************************************************** * * Module Name: dswload - Dispatcher namespace load callbacks * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #define __ASLLOAD_C__ #include "aslcompiler.h" #include "amlcode.h" #include "acdispat.h" #include "acnamesp.h" #include "aslcompiler.y.h" #define _COMPONENT ACPI_COMPILER ACPI_MODULE_NAME ("aslload") /* Local prototypes */ static ACPI_STATUS LdLoadFieldElements ( ACPI_PARSE_OBJECT *Op, ACPI_WALK_STATE *WalkState); static ACPI_STATUS LdLoadResourceElements ( ACPI_PARSE_OBJECT *Op, ACPI_WALK_STATE *WalkState); static ACPI_STATUS LdNamespace1Begin ( ACPI_PARSE_OBJECT *Op, UINT32 Level, void *Context); static ACPI_STATUS LdNamespace2Begin ( ACPI_PARSE_OBJECT *Op, UINT32 Level, void *Context); static ACPI_STATUS LdCommonNamespaceEnd ( ACPI_PARSE_OBJECT *Op, UINT32 Level, void *Context); /******************************************************************************* * * FUNCTION: LdLoadNamespace * * PARAMETERS: RootOp - Root of the parse tree * * RETURN: Status * * DESCRIPTION: Perform a walk of the parse tree that in turn loads all of the * named ASL/AML objects into the namespace. The namespace is * constructed in order to resolve named references and references * to named fields within resource templates/descriptors. * ******************************************************************************/ ACPI_STATUS LdLoadNamespace ( ACPI_PARSE_OBJECT *RootOp) { ACPI_WALK_STATE *WalkState; DbgPrint (ASL_DEBUG_OUTPUT, "\nCreating namespace\n\n"); /* Create a new walk state */ WalkState = AcpiDsCreateWalkState (0, NULL, NULL, NULL); if (!WalkState) { return (AE_NO_MEMORY); } /* Walk the entire parse tree, first pass */ TrWalkParseTree (RootOp, ASL_WALK_VISIT_TWICE, LdNamespace1Begin, LdCommonNamespaceEnd, WalkState); /* Second pass to handle forward references */ TrWalkParseTree (RootOp, ASL_WALK_VISIT_TWICE, LdNamespace2Begin, LdCommonNamespaceEnd, WalkState); /* Dump the namespace if debug is enabled */ AcpiNsDumpTables (ACPI_NS_ALL, ACPI_UINT32_MAX); return (AE_OK); } /******************************************************************************* * * FUNCTION: LdLoadFieldElements * * PARAMETERS: Op - Parent node (Field) * WalkState - Current walk state * * RETURN: Status * * DESCRIPTION: Enter the named elements of the field (children of the parent) * into the namespace. * ******************************************************************************/ static ACPI_STATUS LdLoadFieldElements ( ACPI_PARSE_OBJECT *Op, ACPI_WALK_STATE *WalkState) { ACPI_PARSE_OBJECT *Child = NULL; ACPI_NAMESPACE_NODE *Node; ACPI_STATUS Status; /* Get the first named field element */ switch (Op->Asl.AmlOpcode) { case AML_BANK_FIELD_OP: Child = UtGetArg (Op, 6); break; case AML_INDEX_FIELD_OP: Child = UtGetArg (Op, 5); break; case AML_FIELD_OP: Child = UtGetArg (Op, 4); break; default: /* No other opcodes should arrive here */ return (AE_BAD_PARAMETER); } /* Enter all elements into the namespace */ while (Child) { switch (Child->Asl.AmlOpcode) { case AML_INT_RESERVEDFIELD_OP: case AML_INT_ACCESSFIELD_OP: case AML_INT_CONNECTION_OP: break; default: Status = AcpiNsLookup (WalkState->ScopeInfo, Child->Asl.Value.String, ACPI_TYPE_LOCAL_REGION_FIELD, ACPI_IMODE_LOAD_PASS1, ACPI_NS_NO_UPSEARCH | ACPI_NS_DONT_OPEN_SCOPE | ACPI_NS_ERROR_IF_FOUND, NULL, &Node); if (ACPI_FAILURE (Status)) { if (Status != AE_ALREADY_EXISTS) { AslError (ASL_ERROR, ASL_MSG_CORE_EXCEPTION, Child, Child->Asl.Value.String); return (Status); } /* * The name already exists in this scope * But continue processing the elements */ AslError (ASL_ERROR, ASL_MSG_NAME_EXISTS, Child, Child->Asl.Value.String); } else { Child->Asl.Node = Node; Node->Op = Child; } break; } Child = Child->Asl.Next; } return (AE_OK); } /******************************************************************************* * * FUNCTION: LdLoadResourceElements * * PARAMETERS: Op - Parent node (Resource Descriptor) * WalkState - Current walk state * * RETURN: Status * * DESCRIPTION: Enter the named elements of the resource descriptor (children * of the parent) into the namespace. * * NOTE: In the real AML namespace, these named elements never exist. But * we simply use the namespace here as a symbol table so we can look * them up as they are referenced. * ******************************************************************************/ static ACPI_STATUS LdLoadResourceElements ( ACPI_PARSE_OBJECT *Op, ACPI_WALK_STATE *WalkState) { ACPI_PARSE_OBJECT *InitializerOp = NULL; ACPI_NAMESPACE_NODE *Node; ACPI_STATUS Status; /* * Enter the resource name into the namespace. Name must not already exist. * This opens a scope, so later field names are guaranteed to be new/unique. */ Status = AcpiNsLookup (WalkState->ScopeInfo, Op->Asl.Namepath, ACPI_TYPE_LOCAL_RESOURCE, ACPI_IMODE_LOAD_PASS1, ACPI_NS_NO_UPSEARCH | ACPI_NS_ERROR_IF_FOUND, WalkState, &Node); if (ACPI_FAILURE (Status)) { if (Status == AE_ALREADY_EXISTS) { /* Actual node causing the error was saved in ParentMethod */ AslError (ASL_ERROR, ASL_MSG_NAME_EXISTS, (ACPI_PARSE_OBJECT *) Op->Asl.ParentMethod, Op->Asl.Namepath); return (AE_OK); } return (Status); } Node->Value = (UINT32) Op->Asl.Value.Integer; Node->Op = Op; Op->Asl.Node = Node; /* * Now enter the predefined fields, for easy lookup when referenced * by the source ASL */ InitializerOp = ASL_GET_CHILD_NODE (Op); while (InitializerOp) { if (InitializerOp->Asl.ExternalName) { Status = AcpiNsLookup (WalkState->ScopeInfo, InitializerOp->Asl.ExternalName, ACPI_TYPE_LOCAL_RESOURCE_FIELD, ACPI_IMODE_LOAD_PASS1, ACPI_NS_NO_UPSEARCH | ACPI_NS_DONT_OPEN_SCOPE, NULL, &Node); if (ACPI_FAILURE (Status)) { return (Status); } /* * Store the field offset and length in the namespace node * so it can be used when the field is referenced */ Node->Value = InitializerOp->Asl.Value.Tag.BitOffset; Node->Length = InitializerOp->Asl.Value.Tag.BitLength; InitializerOp->Asl.Node = Node; Node->Op = InitializerOp; } InitializerOp = ASL_GET_PEER_NODE (InitializerOp); } return (AE_OK); } /******************************************************************************* * * FUNCTION: LdNamespace1Begin * * PARAMETERS: ASL_WALK_CALLBACK * * RETURN: Status * * DESCRIPTION: Descending callback used during the parse tree walk. If this * is a named AML opcode, enter into the namespace * ******************************************************************************/ static ACPI_STATUS LdNamespace1Begin ( ACPI_PARSE_OBJECT *Op, UINT32 Level, void *Context) { ACPI_WALK_STATE *WalkState = (ACPI_WALK_STATE *) Context; ACPI_NAMESPACE_NODE *Node; ACPI_STATUS Status; ACPI_OBJECT_TYPE ObjectType; ACPI_OBJECT_TYPE ActualObjectType = ACPI_TYPE_ANY; char *Path; UINT32 Flags = ACPI_NS_NO_UPSEARCH; ACPI_PARSE_OBJECT *Arg; UINT32 i; BOOLEAN ForceNewScope = FALSE; ACPI_FUNCTION_NAME (LdNamespace1Begin); ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, "Op %p [%s]\n", Op, Op->Asl.ParseOpName)); /* * We are only interested in opcodes that have an associated name * (or multiple names) */ switch (Op->Asl.AmlOpcode) { case AML_BANK_FIELD_OP: case AML_INDEX_FIELD_OP: case AML_FIELD_OP: Status = LdLoadFieldElements (Op, WalkState); return (Status); default: /* All other opcodes go below */ break; } /* Check if this object has already been installed in the namespace */ if (Op->Asl.Node) { return (AE_OK); } Path = Op->Asl.Namepath; if (!Path) { return (AE_OK); } /* Map the raw opcode into an internal object type */ switch (Op->Asl.ParseOpcode) { case PARSEOP_NAME: Arg = Op->Asl.Child; /* Get the NameSeg/NameString node */ Arg = Arg->Asl.Next; /* First peer is the object to be associated with the name */ /* * If this name refers to a ResourceTemplate, we will need to open * a new scope so that the resource subfield names can be entered into * the namespace underneath this name */ if (Op->Asl.CompileFlags & NODE_IS_RESOURCE_DESC) { ForceNewScope = TRUE; } /* Get the data type associated with the named object, not the name itself */ /* Log2 loop to convert from Btype (binary) to Etype (encoded) */ ObjectType = 1; for (i = 1; i < Arg->Asl.AcpiBtype; i *= 2) { ObjectType++; } break; case PARSEOP_EXTERNAL: /* * "External" simply enters a name and type into the namespace. * We must be careful to not open a new scope, however, no matter * what type the external name refers to (e.g., a method) * * first child is name, next child is ObjectType */ ActualObjectType = (UINT8) Op->Asl.Child->Asl.Next->Asl.Value.Integer; ObjectType = ACPI_TYPE_ANY; /* * We will mark every new node along the path as "External". This * allows some or all of the nodes to be created later in the ASL * code. Handles cases like this: * * External (\_SB_.PCI0.ABCD, IntObj) * Scope (_SB_) * { * Device (PCI0) * { * } * } * Method (X) * { * Store (\_SB_.PCI0.ABCD, Local0) * } */ Flags |= ACPI_NS_EXTERNAL; break; case PARSEOP_DEFAULT_ARG: if (Op->Asl.CompileFlags == NODE_IS_RESOURCE_DESC) { Status = LdLoadResourceElements (Op, WalkState); return_ACPI_STATUS (Status); } ObjectType = AslMapNamedOpcodeToDataType (Op->Asl.AmlOpcode); break; case PARSEOP_SCOPE: /* * The name referenced by Scope(Name) must already exist at this point. * In other words, forward references for Scope() are not supported. * The only real reason for this is that the MS interpreter cannot * handle this case. Perhaps someday this case can go away. */ Status = AcpiNsLookup (WalkState->ScopeInfo, Path, ACPI_TYPE_ANY, ACPI_IMODE_EXECUTE, ACPI_NS_SEARCH_PARENT, WalkState, &(Node)); if (ACPI_FAILURE (Status)) { if (Status == AE_NOT_FOUND) { /* The name was not found, go ahead and create it */ Status = AcpiNsLookup (WalkState->ScopeInfo, Path, ACPI_TYPE_LOCAL_SCOPE, ACPI_IMODE_LOAD_PASS1, Flags, WalkState, &(Node)); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } /* * However, this is an error -- primarily because the MS * interpreter can't handle a forward reference from the * Scope() operator. */ AslError (ASL_ERROR, ASL_MSG_NOT_FOUND, Op, Op->Asl.ExternalName); AslError (ASL_ERROR, ASL_MSG_SCOPE_FWD_REF, Op, Op->Asl.ExternalName); goto FinishNode; } AslCoreSubsystemError (Op, Status, "Failure from namespace lookup", FALSE); return_ACPI_STATUS (Status); } /* We found a node with this name, now check the type */ switch (Node->Type) { case ACPI_TYPE_LOCAL_SCOPE: case ACPI_TYPE_DEVICE: case ACPI_TYPE_POWER: case ACPI_TYPE_PROCESSOR: case ACPI_TYPE_THERMAL: /* These are acceptable types - they all open a new scope */ break; case ACPI_TYPE_INTEGER: case ACPI_TYPE_STRING: case ACPI_TYPE_BUFFER: /* * These types we will allow, but we will change the type. * This enables some existing code of the form: * * Name (DEB, 0) * Scope (DEB) { ... } * * Which is used to workaround the fact that the MS interpreter * does not allow Scope() forward references. */ sprintf (MsgBuffer, "%s [%s], changing type to [Scope]", Op->Asl.ExternalName, AcpiUtGetTypeName (Node->Type)); AslError (ASL_REMARK, ASL_MSG_SCOPE_TYPE, Op, MsgBuffer); /* Switch the type to scope, open the new scope */ Node->Type = ACPI_TYPE_LOCAL_SCOPE; Status = AcpiDsScopeStackPush (Node, ACPI_TYPE_LOCAL_SCOPE, WalkState); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } break; default: /* All other types are an error */ sprintf (MsgBuffer, "%s [%s]", Op->Asl.ExternalName, AcpiUtGetTypeName (Node->Type)); AslError (ASL_ERROR, ASL_MSG_SCOPE_TYPE, Op, MsgBuffer); /* * However, switch the type to be an actual scope so * that compilation can continue without generating a whole * cascade of additional errors. Open the new scope. */ Node->Type = ACPI_TYPE_LOCAL_SCOPE; Status = AcpiDsScopeStackPush (Node, ACPI_TYPE_LOCAL_SCOPE, WalkState); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } break; } Status = AE_OK; goto FinishNode; default: ObjectType = AslMapNamedOpcodeToDataType (Op->Asl.AmlOpcode); break; } ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, "Loading name: %s, (%s)\n", Op->Asl.ExternalName, AcpiUtGetTypeName (ObjectType))); /* The name must not already exist */ Flags |= ACPI_NS_ERROR_IF_FOUND; /* * Enter the named type into the internal namespace. We enter the name * as we go downward in the parse tree. Any necessary subobjects that * involve arguments to the opcode must be created as we go back up the * parse tree later. */ Status = AcpiNsLookup (WalkState->ScopeInfo, Path, ObjectType, ACPI_IMODE_LOAD_PASS1, Flags, WalkState, &Node); if (ACPI_FAILURE (Status)) { if (Status == AE_ALREADY_EXISTS) { /* The name already exists in this scope */ if (Node->Type == ACPI_TYPE_LOCAL_SCOPE) { /* Allow multiple references to the same scope */ Node->Type = (UINT8) ObjectType; Status = AE_OK; } else if ((Node->Flags & ANOBJ_IS_EXTERNAL) && (Op->Asl.ParseOpcode != PARSEOP_EXTERNAL)) { /* * Allow one create on an object or segment that was * previously declared External */ Node->Flags &= ~ANOBJ_IS_EXTERNAL; Node->Type = (UINT8) ObjectType; /* Just retyped a node, probably will need to open a scope */ if (AcpiNsOpensScope (ObjectType)) { Status = AcpiDsScopeStackPush (Node, ObjectType, WalkState); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } } Status = AE_OK; } else { /* Valid error, object already exists */ AslError (ASL_ERROR, ASL_MSG_NAME_EXISTS, Op, Op->Asl.ExternalName); return_ACPI_STATUS (AE_OK); } } else { AslCoreSubsystemError (Op, Status, "Failure from namespace lookup", FALSE); return_ACPI_STATUS (Status); } } if (ForceNewScope) { Status = AcpiDsScopeStackPush (Node, ObjectType, WalkState); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } } FinishNode: /* * Point the parse node to the new namespace node, and point * the Node back to the original Parse node */ Op->Asl.Node = Node; Node->Op = Op; /* Set the actual data type if appropriate (EXTERNAL term only) */ if (ActualObjectType != ACPI_TYPE_ANY) { Node->Type = (UINT8) ActualObjectType; Node->Value = ASL_EXTERNAL_METHOD; } if (Op->Asl.ParseOpcode == PARSEOP_METHOD) { /* * Get the method argument count from "Extra" and save * it in the namespace node */ Node->Value = (UINT32) Op->Asl.Extra; } return_ACPI_STATUS (Status); } /******************************************************************************* * * FUNCTION: LdNamespace2Begin * * PARAMETERS: ASL_WALK_CALLBACK * * RETURN: Status * * DESCRIPTION: Descending callback used during the pass 2 parse tree walk. * Second pass resolves some forward references. * * Notes: * Currently only needs to handle the Alias operator. * Could be used to allow forward references from the Scope() operator, but * the MS interpreter does not allow this, so this compiler does not either. * ******************************************************************************/ static ACPI_STATUS LdNamespace2Begin ( ACPI_PARSE_OBJECT *Op, UINT32 Level, void *Context) { ACPI_WALK_STATE *WalkState = (ACPI_WALK_STATE *) Context; ACPI_STATUS Status; ACPI_NAMESPACE_NODE *Node; ACPI_OBJECT_TYPE ObjectType; BOOLEAN ForceNewScope = FALSE; ACPI_PARSE_OBJECT *Arg; char *Path; ACPI_NAMESPACE_NODE *TargetNode; ACPI_FUNCTION_NAME (LdNamespace2Begin); ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, "Op %p [%s]\n", Op, Op->Asl.ParseOpName)); /* Ignore Ops with no namespace node */ Node = Op->Asl.Node; if (!Node) { return (AE_OK); } /* Get the type to determine if we should push the scope */ if ((Op->Asl.ParseOpcode == PARSEOP_DEFAULT_ARG) && (Op->Asl.CompileFlags == NODE_IS_RESOURCE_DESC)) { ObjectType = ACPI_TYPE_LOCAL_RESOURCE; } else { ObjectType = AslMapNamedOpcodeToDataType (Op->Asl.AmlOpcode); } /* Push scope for Resource Templates */ if (Op->Asl.ParseOpcode == PARSEOP_NAME) { if (Op->Asl.CompileFlags & NODE_IS_RESOURCE_DESC) { ForceNewScope = TRUE; } } /* Push the scope stack */ if (ForceNewScope || AcpiNsOpensScope (ObjectType)) { Status = AcpiDsScopeStackPush (Node, ObjectType, WalkState); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } } if (Op->Asl.ParseOpcode == PARSEOP_ALIAS) { /* Complete the alias node by getting and saving the target node */ /* First child is the alias target */ Arg = Op->Asl.Child; /* Get the target pathname */ Path = Arg->Asl.Namepath; if (!Path) { Status = UtInternalizeName (Arg->Asl.ExternalName, &Path); if (ACPI_FAILURE (Status)) { return (Status); } } /* Get the NS node associated with the target. It must exist. */ Status = AcpiNsLookup (WalkState->ScopeInfo, Path, ACPI_TYPE_ANY, ACPI_IMODE_EXECUTE, ACPI_NS_SEARCH_PARENT | ACPI_NS_DONT_OPEN_SCOPE, WalkState, &TargetNode); if (ACPI_FAILURE (Status)) { if (Status == AE_NOT_FOUND) { AslError (ASL_ERROR, ASL_MSG_NOT_FOUND, Op, Op->Asl.ExternalName); /* * The name was not found, go ahead and create it. * This prevents more errors later. */ Status = AcpiNsLookup (WalkState->ScopeInfo, Path, ACPI_TYPE_ANY, ACPI_IMODE_LOAD_PASS1, ACPI_NS_NO_UPSEARCH, WalkState, &(Node)); return (AE_OK); } AslCoreSubsystemError (Op, Status, "Failure from namespace lookup", FALSE); return (AE_OK); } /* Save the target node within the alias node */ Node->Object = ACPI_CAST_PTR (ACPI_OPERAND_OBJECT, TargetNode); } return (AE_OK); } /******************************************************************************* * * FUNCTION: LdCommonNamespaceEnd * * PARAMETERS: ASL_WALK_CALLBACK * * RETURN: Status * * DESCRIPTION: Ascending callback used during the loading of the namespace, * We only need to worry about managing the scope stack here. * ******************************************************************************/ static ACPI_STATUS LdCommonNamespaceEnd ( ACPI_PARSE_OBJECT *Op, UINT32 Level, void *Context) { ACPI_WALK_STATE *WalkState = (ACPI_WALK_STATE *) Context; ACPI_OBJECT_TYPE ObjectType; BOOLEAN ForceNewScope = FALSE; ACPI_FUNCTION_NAME (LdCommonNamespaceEnd); /* We are only interested in opcodes that have an associated name */ if (!Op->Asl.Namepath) { return (AE_OK); } /* Get the type to determine if we should pop the scope */ if ((Op->Asl.ParseOpcode == PARSEOP_DEFAULT_ARG) && (Op->Asl.CompileFlags == NODE_IS_RESOURCE_DESC)) { /* TBD: Merge into AcpiDsMapNamedOpcodeToDataType */ ObjectType = ACPI_TYPE_LOCAL_RESOURCE; } else { ObjectType = AslMapNamedOpcodeToDataType (Op->Asl.AmlOpcode); } /* Pop scope that was pushed for Resource Templates */ if (Op->Asl.ParseOpcode == PARSEOP_NAME) { if (Op->Asl.CompileFlags & NODE_IS_RESOURCE_DESC) { ForceNewScope = TRUE; } } /* Pop the scope stack */ if (ForceNewScope || AcpiNsOpensScope (ObjectType)) { ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, "(%s): Popping scope for Op [%s] %p\n", AcpiUtGetTypeName (ObjectType), Op->Asl.ParseOpName, Op)); (void) AcpiDsScopeStackPop (WalkState); } return (AE_OK); } src/acpica/source/compiler/asllookup.c000066400000000000000000000267141231470457100203720ustar00rootroot00000000000000/****************************************************************************** * * Module Name: asllookup- Namespace lookup functions * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #include "aslcompiler.h" #include "aslcompiler.y.h" #include "acparser.h" #include "amlcode.h" #include "acnamesp.h" #include "acdispat.h" #define _COMPONENT ACPI_COMPILER ACPI_MODULE_NAME ("asllookup") /* Local prototypes */ static ACPI_STATUS LkIsObjectUsed ( ACPI_HANDLE ObjHandle, UINT32 Level, void *Context, void **ReturnValue); static ACPI_PARSE_OBJECT * LkGetNameOp ( ACPI_PARSE_OBJECT *Op); /******************************************************************************* * * FUNCTION: LkFindUnreferencedObjects * * PARAMETERS: None * * RETURN: None * * DESCRIPTION: Namespace walk to find objects that are not referenced in any * way. Must be called after the namespace has been cross * referenced. * ******************************************************************************/ void LkFindUnreferencedObjects ( void) { /* Walk entire namespace from the supplied root */ (void) AcpiNsWalkNamespace (ACPI_TYPE_ANY, ACPI_ROOT_OBJECT, ACPI_UINT32_MAX, FALSE, LkIsObjectUsed, NULL, NULL, NULL); } /******************************************************************************* * * FUNCTION: LkIsObjectUsed * * PARAMETERS: ACPI_WALK_CALLBACK * * RETURN: Status * * DESCRIPTION: Check for an unreferenced namespace object and emit a warning. * We have to be careful, because some types and names are * typically or always unreferenced, we don't want to issue * excessive warnings. Note: Names that are declared within a * control method are temporary, so we always issue a remark * if they are not referenced. * ******************************************************************************/ static ACPI_STATUS LkIsObjectUsed ( ACPI_HANDLE ObjHandle, UINT32 Level, void *Context, void **ReturnValue) { ACPI_NAMESPACE_NODE *Node = ACPI_CAST_PTR (ACPI_NAMESPACE_NODE, ObjHandle); ACPI_NAMESPACE_NODE *Next; /* Referenced flag is set during the namespace xref */ if (Node->Flags & ANOBJ_IS_REFERENCED) { return (AE_OK); } if (!Node->Op) { return (AE_OK); } /* These types are typically never directly referenced, ignore them */ switch (Node->Type) { case ACPI_TYPE_DEVICE: case ACPI_TYPE_PROCESSOR: case ACPI_TYPE_POWER: case ACPI_TYPE_THERMAL: case ACPI_TYPE_LOCAL_RESOURCE: return (AE_OK); default: break; } /* Determine if the name is within a control method */ Next = Node->Parent; while (Next) { if (Next->Type == ACPI_TYPE_METHOD) { /* * Name is within a method, therefore it is temporary. * Issue a remark even if it is a reserved name (starts * with an underscore). */ sprintf (MsgBuffer, "Name is within method [%4.4s]", Next->Name.Ascii); AslError (ASL_REMARK, ASL_MSG_NOT_REFERENCED, LkGetNameOp (Node->Op), MsgBuffer); return (AE_OK); } Next = Next->Parent; } /* The name is not within a control method */ /* * Ignore names that start with an underscore. These are the reserved * ACPI names and are typically not referenced since they are meant * to be called by the host OS. */ if (Node->Name.Ascii[0] == '_') { return (AE_OK); } /* * What remains is an unresolved user name that is not within a method. * However, the object could be referenced via another table, so issue * the warning at level 2. */ AslError (ASL_WARNING2, ASL_MSG_NOT_REFERENCED, LkGetNameOp (Node->Op), NULL); return (AE_OK); } /******************************************************************************* * * FUNCTION: LkGetNameOp * * PARAMETERS: Op - Current Op * * RETURN: NameOp associated with the input op * * DESCRIPTION: Find the name declaration op associated with the operator * ******************************************************************************/ static ACPI_PARSE_OBJECT * LkGetNameOp ( ACPI_PARSE_OBJECT *Op) { const ACPI_OPCODE_INFO *OpInfo; ACPI_PARSE_OBJECT *NameOp = Op; OpInfo = AcpiPsGetOpcodeInfo (Op->Asl.AmlOpcode); /* Get the NamePath from the appropriate place */ if (OpInfo->Flags & AML_NAMED) { /* For nearly all NAMED operators, the name reference is the first child */ NameOp = Op->Asl.Child; if (Op->Asl.AmlOpcode == AML_ALIAS_OP) { /* * ALIAS is the only oddball opcode, the name declaration * (alias name) is the second operand */ NameOp = Op->Asl.Child->Asl.Next; } } else if (OpInfo->Flags & AML_CREATE) { /* Name must appear as the last parameter */ NameOp = Op->Asl.Child; while (!(NameOp->Asl.CompileFlags & NODE_IS_NAME_DECLARATION)) { NameOp = NameOp->Asl.Next; } } return (NameOp); } src/acpica/source/compiler/aslmain.c000066400000000000000000000432711231470457100200020ustar00rootroot00000000000000/****************************************************************************** * * Module Name: aslmain - compiler main and utilities * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #define _DECLARE_GLOBALS #include "aslcompiler.h" #include "acapps.h" #include "acdisasm.h" #include #define _COMPONENT ACPI_COMPILER ACPI_MODULE_NAME ("aslmain") /* * Main routine for the iASL compiler. * * Portability note: The compiler depends upon the host for command-line * wildcard support - it is not implemented locally. For example: * * Linux/Unix systems: Shell expands wildcards automatically. * * Windows: The setargv.obj module must be linked in to automatically * expand wildcards. */ /* Local prototypes */ static void ACPI_SYSTEM_XFACE AslSignalHandler ( int Sig); static void AslInitialize ( void); UINT8 AcpiIsBigEndianMachine ( void); /******************************************************************************* * * FUNCTION: AcpiIsBigEndianMachine * * PARAMETERS: None * * RETURN: TRUE if machine is big endian * FALSE if machine is little endian * * DESCRIPTION: Detect whether machine is little endian or big endian. * ******************************************************************************/ UINT8 AcpiIsBigEndianMachine ( void) { union { UINT32 Integer; UINT8 Bytes[4]; } Overlay = {0xFF000000}; return (Overlay.Bytes[0]); /* Returns 0xFF (TRUE) for big endian */ } /******************************************************************************* * * FUNCTION: Usage * * PARAMETERS: None * * RETURN: None * * DESCRIPTION: Display option help message. * Optional items in square brackets. * ******************************************************************************/ void Usage ( void) { printf ("%s\n\n", ASL_COMPLIANCE); ACPI_USAGE_HEADER ("iasl [Options] [Files]"); printf ("\nGeneral:\n"); ACPI_OPTION ("-@ ", "Specify command file"); ACPI_OPTION ("-I ", "Specify additional include directory"); ACPI_OPTION ("-T |ALL|*", "Create table template file for ACPI "); ACPI_OPTION ("-p ", "Specify path/filename prefix for all output files"); ACPI_OPTION ("-v", "Display compiler version"); ACPI_OPTION ("-vo", "Enable optimization comments"); ACPI_OPTION ("-vs", "Disable signon"); printf ("\nHelp:\n"); ACPI_OPTION ("-h", "This message"); ACPI_OPTION ("-hc", "Display operators allowed in constant expressions"); ACPI_OPTION ("-hf", "Display help for output filename generation"); ACPI_OPTION ("-hr", "Display ACPI reserved method names"); ACPI_OPTION ("-ht", "Display currently supported ACPI table names"); printf ("\nPreprocessor:\n"); ACPI_OPTION ("-D ", "Define symbol for preprocessor use"); ACPI_OPTION ("-li", "Create preprocessed output file (*.i)"); ACPI_OPTION ("-P", "Preprocess only and create preprocessor output file (*.i)"); ACPI_OPTION ("-Pn", "Disable preprocessor"); printf ("\nErrors, Warnings, and Remarks:\n"); ACPI_OPTION ("-va", "Disable all errors/warnings/remarks"); ACPI_OPTION ("-ve", "Report only errors (ignore warnings and remarks)"); ACPI_OPTION ("-vi", "Less verbose errors and warnings for use with IDEs"); ACPI_OPTION ("-vr", "Disable remarks"); ACPI_OPTION ("-vw ", "Disable specific warning or remark"); ACPI_OPTION ("-w1 -w2 -w3", "Set warning reporting level"); ACPI_OPTION ("-we", "Report warnings as errors"); printf ("\nAML Code Generation (*.aml):\n"); ACPI_OPTION ("-oa", "Disable all optimizations (compatibility mode)"); ACPI_OPTION ("-of", "Disable constant folding"); ACPI_OPTION ("-oi", "Disable integer optimization to Zero/One/Ones"); ACPI_OPTION ("-on", "Disable named reference string optimization"); ACPI_OPTION ("-cr", "Disable Resource Descriptor error checking"); ACPI_OPTION ("-in", "Ignore NoOp operators"); ACPI_OPTION ("-r ", "Override table header Revision (1-255)"); printf ("\nOptional Source Code Output Files:\n"); ACPI_OPTION ("-sc -sa", "Create source file in C or assembler (*.c or *.asm)"); ACPI_OPTION ("-ic -ia", "Create include file in C or assembler (*.h or *.inc)"); ACPI_OPTION ("-tc -ta -ts", "Create hex AML table in C, assembler, or ASL (*.hex)"); ACPI_OPTION ("-so", "Create offset table in C (*.offset.h)"); printf ("\nOptional Listing Files:\n"); ACPI_OPTION ("-l", "Create mixed listing file (ASL source and AML) (*.lst)"); ACPI_OPTION ("-ln", "Create namespace file (*.nsp)"); ACPI_OPTION ("-ls", "Create combined source file (expanded includes) (*.src)"); printf ("\nData Table Compiler:\n"); ACPI_OPTION ("-G", "Compile custom table that contains generic operators"); ACPI_OPTION ("-vt", "Create verbose template files (full disassembly)"); printf ("\nAML Disassembler:\n"); ACPI_OPTION ("-d ", "Disassemble or decode binary ACPI tables to file (*.dsl)"); ACPI_OPTION ("", " (Optional, file type is automatically detected)"); ACPI_OPTION ("-da ", "Disassemble multiple tables from single namespace"); ACPI_OPTION ("-db", "Do not translate Buffers to Resource Templates"); ACPI_OPTION ("-dc ", "Disassemble AML and immediately compile it"); ACPI_OPTION ("", " (Obtain DSDT from current system if no input file)"); ACPI_OPTION ("-e ", "Include ACPI table(s) for external symbol resolution"); ACPI_OPTION ("-fe ", "Specify external symbol declaration file"); ACPI_OPTION ("-in", "Ignore NoOp opcodes"); ACPI_OPTION ("-vt", "Dump binary table data in hex format within output file"); printf ("\nDebug Options:\n"); ACPI_OPTION ("-bf -bt", "Create debug file (full or parse tree only) (*.txt)"); ACPI_OPTION ("-f", "Ignore errors, force creation of AML output file(s)"); ACPI_OPTION ("-m ", "Set internal line buffer size (in Kbytes)"); ACPI_OPTION ("-n", "Parse only, no output generation"); ACPI_OPTION ("-ot", "Display compile times and statistics"); ACPI_OPTION ("-x ", "Set debug level for trace output"); ACPI_OPTION ("-z", "Do not insert new compiler ID for DataTables"); } /******************************************************************************* * * FUNCTION: FilenameHelp * * PARAMETERS: None * * RETURN: None * * DESCRIPTION: Display help message for output filename generation * ******************************************************************************/ void AslFilenameHelp ( void) { printf ("\nAML output filename generation:\n"); printf (" Output filenames are generated by appending an extension to a common\n"); printf (" filename prefix. The filename prefix is obtained via one of the\n"); printf (" following methods (in priority order):\n"); printf (" 1) The -p option specifies the prefix\n"); printf (" 2) The prefix of the AMLFileName in the ASL Definition Block\n"); printf (" 3) The prefix of the input filename\n"); printf ("\n"); } /****************************************************************************** * * FUNCTION: AslSignalHandler * * PARAMETERS: Sig - Signal that invoked this handler * * RETURN: None * * DESCRIPTION: Control-C handler. Delete any intermediate files and any * output files that may be left in an indeterminate state. * *****************************************************************************/ static void ACPI_SYSTEM_XFACE AslSignalHandler ( int Sig) { UINT32 i; signal (Sig, SIG_IGN); printf ("Aborting\n\n"); /* Close all open files */ Gbl_Files[ASL_FILE_PREPROCESSOR].Handle = NULL; /* the .i file is same as source file */ for (i = ASL_FILE_INPUT; i < ASL_MAX_FILE_TYPE; i++) { FlCloseFile (i); } /* Delete any output files */ for (i = ASL_FILE_AML_OUTPUT; i < ASL_MAX_FILE_TYPE; i++) { FlDeleteFile (i); } exit (0); } /******************************************************************************* * * FUNCTION: AslInitialize * * PARAMETERS: None * * RETURN: None * * DESCRIPTION: Initialize compiler globals * ******************************************************************************/ static void AslInitialize ( void) { UINT32 i; for (i = 0; i < ASL_NUM_FILES; i++) { Gbl_Files[i].Handle = NULL; Gbl_Files[i].Filename = NULL; } Gbl_Files[ASL_FILE_STDOUT].Handle = stdout; Gbl_Files[ASL_FILE_STDOUT].Filename = "STDOUT"; Gbl_Files[ASL_FILE_STDERR].Handle = stderr; Gbl_Files[ASL_FILE_STDERR].Filename = "STDERR"; } /******************************************************************************* * * FUNCTION: main * * PARAMETERS: Standard argc/argv * * RETURN: Program termination code * * DESCRIPTION: C main routine for the Asl Compiler. Handle command line * options and begin the compile for each file on the command line * ******************************************************************************/ int ACPI_SYSTEM_XFACE main ( int argc, char **argv) { ACPI_STATUS Status; int Index1; int Index2; /* * Big-endian machines are not currently supported. ACPI tables must * be little-endian, and support for big-endian machines needs to * be implemented. */ if (AcpiIsBigEndianMachine ()) { fprintf (stderr, "iASL is not currently supported on big-endian machines.\n"); return (-1); } ACPI_DEBUG_INITIALIZE (); /* For debug version only */ /* Initialize preprocessor and compiler before command line processing */ signal (SIGINT, AslSignalHandler); AcpiGbl_ExternalFileList = NULL; AcpiDbgLevel = 0; PrInitializePreprocessor (); AslInitialize (); Index1 = Index2 = AslCommandLine (argc, argv); /* Allocate the line buffer(s), must be after command line */ Gbl_LineBufferSize /= 2; UtExpandLineBuffers (); /* Perform global actions first/only */ if (Gbl_DisassembleAll) { while (argv[Index1]) { Status = AcpiDmAddToExternalFileList (argv[Index1]); if (ACPI_FAILURE (Status)) { return (-1); } Index1++; } } /* Process each pathname/filename in the list, with possible wildcards */ while (argv[Index2]) { /* * If -p not specified, we will use the input filename as the * output filename prefix */ if (Gbl_UseDefaultAmlFilename) { Gbl_OutputFilenamePrefix = argv[Index2]; UtConvertBackslashes (Gbl_OutputFilenamePrefix); } Status = AslDoOneFile (argv[Index2]); if (ACPI_FAILURE (Status)) { return (-1); } Index2++; } if (AcpiGbl_ExternalFileList) { AcpiDmClearExternalFileList(); } return (0); } src/acpica/source/compiler/aslmap.c000066400000000000000000001467571231470457100176500ustar00rootroot00000000000000/****************************************************************************** * * Module Name: aslmap - parser to AML opcode mapping table * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #include "aslcompiler.h" #include "amlcode.h" #include "acparser.h" #define _COMPONENT ACPI_COMPILER ACPI_MODULE_NAME ("aslmap") /******************************************************************************* * * FUNCTION: AslMapNamedOpcodeToDataType * * PARAMETERS: Opcode - The Named AML opcode to map * * RETURN: The ACPI type associated with the named opcode * * DESCRIPTION: Convert a raw Named AML opcode to the associated data type. * Named opcodes are a subset of the AML opcodes. * ******************************************************************************/ ACPI_OBJECT_TYPE AslMapNamedOpcodeToDataType ( UINT16 Opcode) { const ACPI_OPCODE_INFO *OpInfo; /* * There are some differences from the opcode table types, we * catch them here. */ OpInfo = AcpiPsGetOpcodeInfo (Opcode); if (Opcode == AML_INT_NAMEPATH_OP) { return (ACPI_TYPE_ANY); } if (Opcode == AML_INT_METHODCALL_OP) { return (ACPI_TYPE_ANY); } if (OpInfo->Flags & AML_NSOBJECT) { return (OpInfo->ObjectType); } return (ACPI_TYPE_ANY); } /******************************************************************************* * * DATA STRUCTURE: AslKeywordMapping * * DESCRIPTION: Maps the ParseOpcode to the actual AML opcode. The parse * opcodes are generated from Bison, and this table must * track any additions to them. * * Each entry in the table contains the following items: * * AML opcode - Opcode that is written to the AML file * Value - Value of the object to be written (if applicable) * Flags - 1) Whether this opcode opens an AML "package". * ******************************************************************************/ /* * TBD: * AccessAttrib * AccessType * AMlop for DMA? * ObjectType keywords * Register */ const ASL_MAPPING_ENTRY AslKeywordMapping [] = { /*! [Begin] no source code translation (keep the table structure) */ /* ACCESSAS */ OP_TABLE_ENTRY (AML_INT_ACCESSFIELD_OP, 0, 0, 0), /* ACCESSATTRIB_BLOCK */ OP_TABLE_ENTRY (AML_BYTE_OP, AML_FIELD_ATTRIB_BLOCK, 0, 0), /* ACCESSATTRIB_BLOCK_CALL */ OP_TABLE_ENTRY (AML_BYTE_OP, AML_FIELD_ATTRIB_BLOCK_CALL, 0, 0), /* ACCESSATTRIB_BYTE */ OP_TABLE_ENTRY (AML_BYTE_OP, AML_FIELD_ATTRIB_BYTE, 0, 0), /* ACCESSATTRIB_MULTIBYTE */ OP_TABLE_ENTRY (AML_BYTE_OP, AML_FIELD_ATTRIB_MULTIBYTE, 0, 0), /* ACCESSATTRIB_QUICK */ OP_TABLE_ENTRY (AML_BYTE_OP, AML_FIELD_ATTRIB_QUICK, 0, 0), /* ACCESSATTRIB_RAW_BYTES */ OP_TABLE_ENTRY (AML_BYTE_OP, AML_FIELD_ATTRIB_RAW_BYTES, 0, 0), /* ACCESSATTRIB_RAW_PROCESS */ OP_TABLE_ENTRY (AML_BYTE_OP, AML_FIELD_ATTRIB_RAW_PROCESS, 0, 0), /* ACCESSATTRIB_SND_RCV */ OP_TABLE_ENTRY (AML_BYTE_OP, AML_FIELD_ATTRIB_SEND_RCV, 0, 0), /* ACCESSATTRIB_WORD */ OP_TABLE_ENTRY (AML_BYTE_OP, AML_FIELD_ATTRIB_WORD, 0, 0), /* ACCESSATTRIB_WORD_CALL */ OP_TABLE_ENTRY (AML_BYTE_OP, AML_FIELD_ATTRIB_WORD_CALL, 0, 0), /* ACCESSTYPE_ANY */ OP_TABLE_ENTRY (AML_BYTE_OP, AML_FIELD_ACCESS_ANY, 0, 0), /* ACCESSTYPE_BUF */ OP_TABLE_ENTRY (AML_BYTE_OP, AML_FIELD_ACCESS_BUFFER, 0, 0), /* ACCESSTYPE_BYTE */ OP_TABLE_ENTRY (AML_BYTE_OP, AML_FIELD_ACCESS_BYTE, 0, 0), /* ACCESSTYPE_DWORD */ OP_TABLE_ENTRY (AML_BYTE_OP, AML_FIELD_ACCESS_DWORD, 0, 0), /* ACCESSTYPE_QWORD */ OP_TABLE_ENTRY (AML_BYTE_OP, AML_FIELD_ACCESS_QWORD, 0, 0), /* ACCESSTYPE_WORD */ OP_TABLE_ENTRY (AML_BYTE_OP, AML_FIELD_ACCESS_WORD, 0, 0), /* ACQUIRE */ OP_TABLE_ENTRY (AML_ACQUIRE_OP, 0, 0, ACPI_BTYPE_INTEGER), /* ADD */ OP_TABLE_ENTRY (AML_ADD_OP, 0, 0, ACPI_BTYPE_INTEGER), /* ADDRESSINGMODE_7BIT */ OP_TABLE_ENTRY (AML_BYTE_OP, 0, 0, 0), /* ADDRESSINGMODE_10BIT */ OP_TABLE_ENTRY (AML_BYTE_OP, 1, 0, 0), /* ADDRESSTYPE_ACPI */ OP_TABLE_ENTRY (AML_BYTE_OP, 2, 0, 0), /* ADDRESSTYPE_MEMORY */ OP_TABLE_ENTRY (AML_BYTE_OP, 0, 0, 0), /* ADDRESSTYPE_NVS */ OP_TABLE_ENTRY (AML_BYTE_OP, 3, 0, 0), /* ADDRESSTYPE_RESERVED */ OP_TABLE_ENTRY (AML_BYTE_OP, 1, 0, 0), /* ALIAS */ OP_TABLE_ENTRY (AML_ALIAS_OP, 0, 0, 0), /* AND */ OP_TABLE_ENTRY (AML_BIT_AND_OP, 0, 0, ACPI_BTYPE_INTEGER), /* ARG0 */ OP_TABLE_ENTRY (AML_ARG0, 0, 0, ACPI_BTYPE_OBJECTS_AND_REFS), /* ARG1 */ OP_TABLE_ENTRY (AML_ARG1, 0, 0, ACPI_BTYPE_OBJECTS_AND_REFS), /* ARG2 */ OP_TABLE_ENTRY (AML_ARG2, 0, 0, ACPI_BTYPE_OBJECTS_AND_REFS), /* ARG3 */ OP_TABLE_ENTRY (AML_ARG3, 0, 0, ACPI_BTYPE_OBJECTS_AND_REFS), /* ARG4 */ OP_TABLE_ENTRY (AML_ARG4, 0, 0, ACPI_BTYPE_OBJECTS_AND_REFS), /* ARG5 */ OP_TABLE_ENTRY (AML_ARG5, 0, 0, ACPI_BTYPE_OBJECTS_AND_REFS), /* ARG6 */ OP_TABLE_ENTRY (AML_ARG6, 0, 0, ACPI_BTYPE_OBJECTS_AND_REFS), /* BANKFIELD */ OP_TABLE_ENTRY (AML_BANK_FIELD_OP, 0, NODE_AML_PACKAGE, 0), /* BITSPERBYTE_EIGHT */ OP_TABLE_ENTRY (AML_BYTE_OP, 3, 0, 0), /* BITSPERBYTE_FIVE */ OP_TABLE_ENTRY (AML_BYTE_OP, 0, 0, 0), /* BITSPERBYTE_NINE */ OP_TABLE_ENTRY (AML_BYTE_OP, 4, 0, 0), /* BITSPERBYTE_SEVEN */ OP_TABLE_ENTRY (AML_BYTE_OP, 2, 0, 0), /* BITSPERBYTE_SIX */ OP_TABLE_ENTRY (AML_BYTE_OP, 1, 0, 0), /* BREAK */ OP_TABLE_ENTRY (AML_BREAK_OP, 0, 0, 0), /* BREAKPOINT */ OP_TABLE_ENTRY (AML_BREAK_POINT_OP, 0, 0, 0), /* BUFFER */ OP_TABLE_ENTRY (AML_BUFFER_OP, 0, NODE_AML_PACKAGE, ACPI_BTYPE_BUFFER), /* BUSMASTERTYPE_MASTER */ OP_TABLE_ENTRY (AML_BYTE_OP, 1, 0, 0), /* BUSMASTERTYPE_NOTMASTER */ OP_TABLE_ENTRY (AML_BYTE_OP, 0, 0, 0), /* BYTECONST */ OP_TABLE_ENTRY (AML_RAW_DATA_BYTE, 0, 0, ACPI_BTYPE_INTEGER), /* CASE */ OP_TABLE_ENTRY (AML_DEFAULT_ARG_OP, 0, 0, 0), /* CLOCKPHASE_FIRST */ OP_TABLE_ENTRY (AML_BYTE_OP, 0, 0, 0), /* CLOCKPHASE_SECOND */ OP_TABLE_ENTRY (AML_BYTE_OP, 1, 0, 0), /* CLOCKPOLARITY_HIGH */ OP_TABLE_ENTRY (AML_BYTE_OP, 1, 0, 0), /* CLOCKPOLARITY_LOW */ OP_TABLE_ENTRY (AML_BYTE_OP, 0, 0, 0), /* CONCATENATE */ OP_TABLE_ENTRY (AML_CONCAT_OP, 0, 0, ACPI_BTYPE_COMPUTE_DATA), /* CONCATENATERESTEMPLATE */ OP_TABLE_ENTRY (AML_CONCAT_RES_OP, 0, 0, ACPI_BTYPE_BUFFER), /* CONDREFOF */ OP_TABLE_ENTRY (AML_COND_REF_OF_OP, 0, 0, ACPI_BTYPE_INTEGER), /* CONNECTION */ OP_TABLE_ENTRY (AML_INT_CONNECTION_OP, 0, 0, 0), /* CONTINUE */ OP_TABLE_ENTRY (AML_CONTINUE_OP, 0, 0, 0), /* COPY */ OP_TABLE_ENTRY (AML_COPY_OP, 0, 0, ACPI_BTYPE_DATA_REFERENCE), /* CREATEBITFIELD */ OP_TABLE_ENTRY (AML_CREATE_BIT_FIELD_OP, 0, 0, 0), /* CREATEBYTEFIELD */ OP_TABLE_ENTRY (AML_CREATE_BYTE_FIELD_OP, 0, 0, 0), /* CREATEDWORDFIELD */ OP_TABLE_ENTRY (AML_CREATE_DWORD_FIELD_OP, 0, 0, 0), /* CREATEFIELD */ OP_TABLE_ENTRY (AML_CREATE_FIELD_OP, 0, 0, 0), /* CREATEQWORDFIELD */ OP_TABLE_ENTRY (AML_CREATE_QWORD_FIELD_OP, 0, 0, 0), /* CREATEWORDFIELD */ OP_TABLE_ENTRY (AML_CREATE_WORD_FIELD_OP, 0, 0, 0), /* DATABUFFER */ OP_TABLE_ENTRY (AML_DEFAULT_ARG_OP, 0, 0, 0), /* DATATABLEREGION */ OP_TABLE_ENTRY (AML_DATA_REGION_OP, 0, 0, 0), /* DEBUG */ OP_TABLE_ENTRY (AML_DEBUG_OP, 0, 0, ACPI_BTYPE_DEBUG_OBJECT), /* DECODETYPE_POS */ OP_TABLE_ENTRY (AML_BYTE_OP, 0, 0, 0), /* DECODETYPE_SUB */ OP_TABLE_ENTRY (AML_BYTE_OP, 1, 0, 0), /* DECREMENT */ OP_TABLE_ENTRY (AML_DECREMENT_OP, 0, 0, ACPI_BTYPE_INTEGER), /* DEFAULT */ OP_TABLE_ENTRY (AML_DEFAULT_ARG_OP, 0, 0, 0), /* DEFAULT_ARG */ OP_TABLE_ENTRY (AML_DEFAULT_ARG_OP, 0, 0, 0), /* DEFINITIONBLOCK */ OP_TABLE_ENTRY (AML_DEFAULT_ARG_OP, 0, 0, 0), /* DEREFOF */ OP_TABLE_ENTRY (AML_DEREF_OF_OP, 0, 0, ACPI_BTYPE_DATA_REFERENCE | ACPI_BTYPE_STRING), /* DEVICE */ OP_TABLE_ENTRY (AML_DEVICE_OP, 0, NODE_AML_PACKAGE, 0), /* DEVICEPOLARITY_HIGH */ OP_TABLE_ENTRY (AML_BYTE_OP, 1, 0, 0), /* DEVICEPOLARITY_LOW */ OP_TABLE_ENTRY (AML_BYTE_OP, 0, 0, 0), /* DIVIDE */ OP_TABLE_ENTRY (AML_DIVIDE_OP, 0, 0, ACPI_BTYPE_INTEGER), /* DMA */ OP_TABLE_ENTRY (AML_DEFAULT_ARG_OP, 0, 0, 0), /* DMATYPE_A */ OP_TABLE_ENTRY (AML_BYTE_OP, 1, 0, 0), /* DMATYPE_COMPATIBILITY */ OP_TABLE_ENTRY (AML_BYTE_OP, 0, 0, 0), /* DMATYPE_B */ OP_TABLE_ENTRY (AML_BYTE_OP, 2, 0, 0), /* DMATYPE_F */ OP_TABLE_ENTRY (AML_BYTE_OP, 3, 0, 0), /* DWORDCONST */ OP_TABLE_ENTRY (AML_RAW_DATA_DWORD, 0, 0, ACPI_BTYPE_INTEGER), /* DWORDIO */ OP_TABLE_ENTRY (AML_DEFAULT_ARG_OP, 0, 0, 0), /* DWORDMEMORY */ OP_TABLE_ENTRY (AML_DEFAULT_ARG_OP, 0, 0, 0), /* DWORDSPACE */ OP_TABLE_ENTRY (AML_BYTE_OP, 0, 0, 0), /* EISAID */ OP_TABLE_ENTRY (AML_DWORD_OP, 0, 0, ACPI_BTYPE_INTEGER), /* ELSE */ OP_TABLE_ENTRY (AML_ELSE_OP, 0, NODE_AML_PACKAGE, 0), /* ELSEIF */ OP_TABLE_ENTRY (AML_DEFAULT_ARG_OP, 0, NODE_AML_PACKAGE, 0), /* ENDDEPENDENTFN */ OP_TABLE_ENTRY (AML_DEFAULT_ARG_OP, 0, 0, 0), /* ENDIAN_BIG */ OP_TABLE_ENTRY (AML_BYTE_OP, 1, 0, 0), /* ENDIAN_LITTLE */ OP_TABLE_ENTRY (AML_BYTE_OP, 0, 0, 0), /* ENDTAG */ OP_TABLE_ENTRY (AML_DEFAULT_ARG_OP, 0, 0, 0), /* ERRORNODE */ OP_TABLE_ENTRY (AML_NOOP_OP, 0, 0, 0), /* EVENT */ OP_TABLE_ENTRY (AML_EVENT_OP, 0, 0, 0), /* EXTENDEDIO */ OP_TABLE_ENTRY (AML_BYTE_OP, 0, 0, 0), /* EXTENDEDMEMORY */ OP_TABLE_ENTRY (AML_BYTE_OP, 0, 0, 0), /* EXTENDEDSPACE */ OP_TABLE_ENTRY (AML_RAW_DATA_QWORD, 0, 0, ACPI_BTYPE_INTEGER), /* EXTERNAL */ OP_TABLE_ENTRY (AML_DEFAULT_ARG_OP, 0, 0, 0), /* FATAL */ OP_TABLE_ENTRY (AML_FATAL_OP, 0, 0, 0), /* FIELD */ OP_TABLE_ENTRY (AML_FIELD_OP, 0, NODE_AML_PACKAGE, 0), /* FINDSETLEFTBIT */ OP_TABLE_ENTRY (AML_FIND_SET_LEFT_BIT_OP, 0, 0, ACPI_BTYPE_INTEGER), /* FINDSETRIGHTBIT */ OP_TABLE_ENTRY (AML_FIND_SET_RIGHT_BIT_OP, 0, 0, ACPI_BTYPE_INTEGER), /* FIXEDDMA */ OP_TABLE_ENTRY (AML_DEFAULT_ARG_OP, 0, 0, 0), /* FIXEDIO */ OP_TABLE_ENTRY (AML_DEFAULT_ARG_OP, 0, 0, 0), /* FLOWCONTROL_HW */ OP_TABLE_ENTRY (AML_BYTE_OP, 1, 0, 0), /* FLOWCONTROL_NONE */ OP_TABLE_ENTRY (AML_BYTE_OP, 0, 0, 0), /* FLOWCONTROL_SW */ OP_TABLE_ENTRY (AML_BYTE_OP, 2, 0, 0), /* FROMBCD */ OP_TABLE_ENTRY (AML_FROM_BCD_OP, 0, 0, ACPI_BTYPE_INTEGER), /* FUNCTION */ OP_TABLE_ENTRY (AML_METHOD_OP, 0, NODE_AML_PACKAGE, 0), /* GPIOINT */ OP_TABLE_ENTRY (AML_DEFAULT_ARG_OP, 0, 0, 0), /* GPIOIO */ OP_TABLE_ENTRY (AML_DEFAULT_ARG_OP, 0, 0, 0), /* I2CSERIALBUS */ OP_TABLE_ENTRY (AML_DEFAULT_ARG_OP, 0, 0, 0), /* IF */ OP_TABLE_ENTRY (AML_IF_OP, 0, NODE_AML_PACKAGE, 0), /* INCLUDE */ OP_TABLE_ENTRY (AML_DEFAULT_ARG_OP, 0, 0, 0), /* INCLUDE_END */ OP_TABLE_ENTRY (AML_DEFAULT_ARG_OP, 0, 0, 0), /* INCREMENT */ OP_TABLE_ENTRY (AML_INCREMENT_OP, 0, 0, ACPI_BTYPE_INTEGER), /* INDEX */ OP_TABLE_ENTRY (AML_INDEX_OP, 0, 0, ACPI_BTYPE_REFERENCE), /* INDEXFIELD */ OP_TABLE_ENTRY (AML_INDEX_FIELD_OP, 0, NODE_AML_PACKAGE, 0), /* INTEGER */ OP_TABLE_ENTRY (AML_BYTE_OP, 0, 0, ACPI_BTYPE_INTEGER), /* INTERRUPT */ OP_TABLE_ENTRY (AML_DEFAULT_ARG_OP, 0, 0, 0), /* INTLEVEL_ACTIVEBOTH */ OP_TABLE_ENTRY (AML_BYTE_OP, 2, 0, 0), /* INTLEVEL_ACTIVEHIGH */ OP_TABLE_ENTRY (AML_BYTE_OP, 0, 0, 0), /* INTLEVEL_ACTIVELOW */ OP_TABLE_ENTRY (AML_BYTE_OP, 1, 0, 0), /* INTTYPE_EDGE */ OP_TABLE_ENTRY (AML_BYTE_OP, 1, 0, 0), /* INTTYPE_LEVEL */ OP_TABLE_ENTRY (AML_BYTE_OP, 0, 0, 0), /* IO */ OP_TABLE_ENTRY (AML_DEFAULT_ARG_OP, 0, 0, 0), /* IODECODETYPE_10 */ OP_TABLE_ENTRY (AML_BYTE_OP, 0, 0, 0), /* IODECODETYPE_16 */ OP_TABLE_ENTRY (AML_BYTE_OP, 1, 0, 0), /* IORESTRICT_IN */ OP_TABLE_ENTRY (AML_BYTE_OP, 1, 0, 0), /* IORESTRICT_NONE */ OP_TABLE_ENTRY (AML_BYTE_OP, 0, 0, 0), /* IORESTRICT_OUT */ OP_TABLE_ENTRY (AML_BYTE_OP, 2, 0, 0), /* IORESTRICT_PRESERVE */ OP_TABLE_ENTRY (AML_BYTE_OP, 3, 0, 0), /* IRQ */ OP_TABLE_ENTRY (AML_DEFAULT_ARG_OP, 0, 0, 0), /* IRQNOFLAGS */ OP_TABLE_ENTRY (AML_DEFAULT_ARG_OP, 0, 0, 0), /* LAND */ OP_TABLE_ENTRY (AML_LAND_OP, 0, 0, ACPI_BTYPE_INTEGER), /* LEQUAL */ OP_TABLE_ENTRY (AML_LEQUAL_OP, 0, 0, ACPI_BTYPE_INTEGER), /* LGREATER */ OP_TABLE_ENTRY (AML_LGREATER_OP, 0, 0, ACPI_BTYPE_INTEGER), /* LGREATEREQUAL */ OP_TABLE_ENTRY (AML_LGREATEREQUAL_OP, 0, 0, ACPI_BTYPE_INTEGER), /* LLESS */ OP_TABLE_ENTRY (AML_LLESS_OP, 0, 0, ACPI_BTYPE_INTEGER), /* LLESSEQUAL */ OP_TABLE_ENTRY (AML_LLESSEQUAL_OP, 0, 0, ACPI_BTYPE_INTEGER), /* LNOT */ OP_TABLE_ENTRY (AML_LNOT_OP, 0, 0, ACPI_BTYPE_INTEGER), /* LNOTEQUAL */ OP_TABLE_ENTRY (AML_LNOTEQUAL_OP, 0, 0, ACPI_BTYPE_INTEGER), /* LOAD */ OP_TABLE_ENTRY (AML_LOAD_OP, 0, 0, 0), /* LOADTABLE */ OP_TABLE_ENTRY (AML_LOAD_TABLE_OP, 0, 0, ACPI_BTYPE_DDB_HANDLE), /* LOCAL0 */ OP_TABLE_ENTRY (AML_LOCAL0, 0, 0, ACPI_BTYPE_OBJECTS_AND_REFS), /* LOCAL1 */ OP_TABLE_ENTRY (AML_LOCAL1, 0, 0, ACPI_BTYPE_OBJECTS_AND_REFS), /* LOCAL2 */ OP_TABLE_ENTRY (AML_LOCAL2, 0, 0, ACPI_BTYPE_OBJECTS_AND_REFS), /* LOCAL3 */ OP_TABLE_ENTRY (AML_LOCAL3, 0, 0, ACPI_BTYPE_OBJECTS_AND_REFS), /* LOCAL4 */ OP_TABLE_ENTRY (AML_LOCAL4, 0, 0, ACPI_BTYPE_OBJECTS_AND_REFS), /* LOCAL5 */ OP_TABLE_ENTRY (AML_LOCAL5, 0, 0, ACPI_BTYPE_OBJECTS_AND_REFS), /* LOCAL6 */ OP_TABLE_ENTRY (AML_LOCAL6, 0, 0, ACPI_BTYPE_OBJECTS_AND_REFS), /* LOCAL7 */ OP_TABLE_ENTRY (AML_LOCAL7, 0, 0, ACPI_BTYPE_OBJECTS_AND_REFS), /* LOCKRULE_LOCK */ OP_TABLE_ENTRY (AML_BYTE_OP, AML_FIELD_LOCK_ALWAYS, 0, 0), /* LOCKRULE_NOLOCK */ OP_TABLE_ENTRY (AML_BYTE_OP, AML_FIELD_LOCK_NEVER, 0, 0), /* LOR */ OP_TABLE_ENTRY (AML_LOR_OP, 0, 0, ACPI_BTYPE_INTEGER), /* MATCH */ OP_TABLE_ENTRY (AML_MATCH_OP, 0, 0, ACPI_BTYPE_INTEGER), /* MATCHTYPE_MEQ */ OP_TABLE_ENTRY (AML_RAW_DATA_BYTE, MATCH_MEQ, 0, ACPI_BTYPE_INTEGER), /* MATCHTYPE_MGE */ OP_TABLE_ENTRY (AML_RAW_DATA_BYTE, MATCH_MGE, 0, ACPI_BTYPE_INTEGER), /* MATCHTYPE_MGT */ OP_TABLE_ENTRY (AML_RAW_DATA_BYTE, MATCH_MGT, 0, ACPI_BTYPE_INTEGER), /* MATCHTYPE_MLE */ OP_TABLE_ENTRY (AML_RAW_DATA_BYTE, MATCH_MLE, 0, ACPI_BTYPE_INTEGER), /* MATCHTYPE_MLT */ OP_TABLE_ENTRY (AML_RAW_DATA_BYTE, MATCH_MLT, 0, ACPI_BTYPE_INTEGER), /* MATCHTYPE_MTR */ OP_TABLE_ENTRY (AML_RAW_DATA_BYTE, MATCH_MTR, 0, ACPI_BTYPE_INTEGER), /* MAXTYPE_FIXED */ OP_TABLE_ENTRY (AML_BYTE_OP, 1, 0, 0), /* MAXTYPE_NOTFIXED */ OP_TABLE_ENTRY (AML_BYTE_OP, 0, 0, 0), /* MEMORY24 */ OP_TABLE_ENTRY (AML_DEFAULT_ARG_OP, 0, 0, 0), /* MEMORY32 */ OP_TABLE_ENTRY (AML_DEFAULT_ARG_OP, 0, 0, 0), /* MEMORY32FIXED */ OP_TABLE_ENTRY (AML_DEFAULT_ARG_OP, 0, 0, 0), /* MEMTYPE_CACHEABLE */ OP_TABLE_ENTRY (AML_BYTE_OP, 1, 0, 0), /* MEMTYPE_NONCACHEABLE */ OP_TABLE_ENTRY (AML_BYTE_OP, 0, 0, 0), /* MEMTYPE_PREFETCHABLE */ OP_TABLE_ENTRY (AML_BYTE_OP, 3, 0, 0), /* MEMTYPE_WRITECOMBINING */ OP_TABLE_ENTRY (AML_BYTE_OP, 2, 0, 0), /* METHOD */ OP_TABLE_ENTRY (AML_METHOD_OP, 0, NODE_AML_PACKAGE, 0), /* METHODCALL */ OP_TABLE_ENTRY (AML_INT_METHODCALL_OP, 0, 0, ACPI_BTYPE_OBJECTS_AND_REFS), /* MID */ OP_TABLE_ENTRY (AML_MID_OP, 0, 0, ACPI_BTYPE_STRING | ACPI_BTYPE_BUFFER), /* MINTYPE_FIXED */ OP_TABLE_ENTRY (AML_BYTE_OP, 1, 0, 0), /* MINTYPE_NOTFIXED */ OP_TABLE_ENTRY (AML_BYTE_OP, 0, 0, 0), /* MOD */ OP_TABLE_ENTRY (AML_MOD_OP, 0, 0, ACPI_BTYPE_INTEGER), /* MULTIPLY */ OP_TABLE_ENTRY (AML_MULTIPLY_OP, 0, 0, ACPI_BTYPE_INTEGER), /* MUTEX */ OP_TABLE_ENTRY (AML_MUTEX_OP, 0, 0, 0), /* NAME */ OP_TABLE_ENTRY (AML_NAME_OP, 0, 0, 0), /* NAMESEG */ OP_TABLE_ENTRY (AML_INT_NAMEPATH_OP, 0, 0, 0), /* NAMESTRING */ OP_TABLE_ENTRY (AML_INT_NAMEPATH_OP, 0, 0, 0), /* NAND */ OP_TABLE_ENTRY (AML_BIT_NAND_OP, 0, 0, ACPI_BTYPE_INTEGER), /* NOOP */ OP_TABLE_ENTRY (AML_NOOP_OP, 0, 0, 0), /* NOR */ OP_TABLE_ENTRY (AML_BIT_NOR_OP, 0, 0, ACPI_BTYPE_INTEGER), /* NOT */ OP_TABLE_ENTRY (AML_BIT_NOT_OP, 0, 0, ACPI_BTYPE_INTEGER), /* NOTIFY */ OP_TABLE_ENTRY (AML_NOTIFY_OP, 0, 0, 0), /* OBJECTTYPE */ OP_TABLE_ENTRY (AML_TYPE_OP, 0, 0, ACPI_BTYPE_INTEGER), /* OBJECTTYPE_BFF */ OP_TABLE_ENTRY (AML_BYTE_OP, ACPI_TYPE_BUFFER_FIELD, 0, 0), /* OBJECTTYPE_BUF */ OP_TABLE_ENTRY (AML_BYTE_OP, ACPI_TYPE_BUFFER, 0, 0), /* OBJECTTYPE_DDB */ OP_TABLE_ENTRY (AML_BYTE_OP, ACPI_TYPE_DDB_HANDLE, 0, 0), /* OBJECTTYPE_DEV */ OP_TABLE_ENTRY (AML_BYTE_OP, ACPI_TYPE_DEVICE, 0, 0), /* OBJECTTYPE_EVT */ OP_TABLE_ENTRY (AML_BYTE_OP, ACPI_TYPE_EVENT, 0, 0), /* OBJECTTYPE_FLD */ OP_TABLE_ENTRY (AML_BYTE_OP, ACPI_TYPE_FIELD_UNIT, 0, 0), /* OBJECTTYPE_INT */ OP_TABLE_ENTRY (AML_BYTE_OP, ACPI_TYPE_INTEGER, 0, 0), /* OBJECTTYPE_MTH */ OP_TABLE_ENTRY (AML_BYTE_OP, ACPI_TYPE_METHOD, 0, 0), /* OBJECTTYPE_MTX */ OP_TABLE_ENTRY (AML_BYTE_OP, ACPI_TYPE_MUTEX, 0, 0), /* OBJECTTYPE_OPR */ OP_TABLE_ENTRY (AML_BYTE_OP, ACPI_TYPE_REGION, 0, 0), /* OBJECTTYPE_PKG */ OP_TABLE_ENTRY (AML_BYTE_OP, ACPI_TYPE_PACKAGE, 0, 0), /* OBJECTTYPE_POW */ OP_TABLE_ENTRY (AML_BYTE_OP, ACPI_TYPE_POWER, 0, 0), /* OBJECTTYPE_PRO */ OP_TABLE_ENTRY (AML_BYTE_OP, ACPI_TYPE_PROCESSOR, 0, 0), /* OBJECTTYPE_STR */ OP_TABLE_ENTRY (AML_BYTE_OP, ACPI_TYPE_STRING, 0, 0), /* OBJECTTYPE_THZ */ OP_TABLE_ENTRY (AML_BYTE_OP, ACPI_TYPE_THERMAL, 0, 0), /* OBJECTTYPE_UNK */ OP_TABLE_ENTRY (AML_BYTE_OP, ACPI_TYPE_ANY, 0, 0), /* OFFSET */ OP_TABLE_ENTRY (AML_INT_RESERVEDFIELD_OP, 0, 0, 0), /* ONE */ OP_TABLE_ENTRY (AML_ONE_OP, 0, 0, ACPI_BTYPE_INTEGER), /* ONES */ OP_TABLE_ENTRY (AML_ONES_OP, 0, 0, ACPI_BTYPE_INTEGER), /* OPERATIONREGION */ OP_TABLE_ENTRY (AML_REGION_OP, 0, 0, 0), /* OR */ OP_TABLE_ENTRY (AML_BIT_OR_OP, 0, 0, ACPI_BTYPE_INTEGER), /* PACKAGE */ OP_TABLE_ENTRY (AML_PACKAGE_OP, 0, NODE_AML_PACKAGE, ACPI_BTYPE_PACKAGE), /* PACKAGEP_LENGTH */ OP_TABLE_ENTRY (AML_PACKAGE_LENGTH, 0, NODE_AML_PACKAGE, 0), /* PARITYTYPE_EVEN */ OP_TABLE_ENTRY (AML_BYTE_OP, 1, 0, 0), /* PARITYTYPE_MARK */ OP_TABLE_ENTRY (AML_BYTE_OP, 3, 0, 0), /* PARITYTYPE_NONE */ OP_TABLE_ENTRY (AML_BYTE_OP, 0, 0, 0), /* PARITYTYPE_ODD */ OP_TABLE_ENTRY (AML_BYTE_OP, 2, 0, 0), /* PARITYTYPE_SPACE */ OP_TABLE_ENTRY (AML_BYTE_OP, 4, 0, 0), /* PIN_NOPULL */ OP_TABLE_ENTRY (AML_BYTE_OP, 3, 0, 0), /* PIN_PULLDEFAULT */ OP_TABLE_ENTRY (AML_BYTE_OP, 0, 0, 0), /* PIN_PULLDOWN */ OP_TABLE_ENTRY (AML_BYTE_OP, 2, 0, 0), /* PIN_PULLUP */ OP_TABLE_ENTRY (AML_BYTE_OP, 1, 0, 0), /* POWERRESOURCE */ OP_TABLE_ENTRY (AML_POWER_RES_OP, 0, NODE_AML_PACKAGE, 0), /* PROCESSOR */ OP_TABLE_ENTRY (AML_PROCESSOR_OP, 0, NODE_AML_PACKAGE, 0), /* QWORDCONST */ OP_TABLE_ENTRY (AML_RAW_DATA_QWORD, 0, 0, ACPI_BTYPE_INTEGER), /* QWORDIO */ OP_TABLE_ENTRY (AML_BYTE_OP, 0, 0, 0), /* QWORDMEMORY */ OP_TABLE_ENTRY (AML_BYTE_OP, 0, 0, 0), /* QWORDSPACE */ OP_TABLE_ENTRY (AML_BYTE_OP, 0, 0, 0), /* RANGE_TYPE_ENTIRE */ OP_TABLE_ENTRY (AML_BYTE_OP, 3, 0, 0), /* RANGE_TYPE_ISAONLY */ OP_TABLE_ENTRY (AML_BYTE_OP, 2, 0, 0), /* RANGE_TYPE_NONISAONLY */ OP_TABLE_ENTRY (AML_BYTE_OP, 1, 0, 0), /* RAW_DATA */ OP_TABLE_ENTRY (AML_BYTE_OP, 0, 0, 0), /* READWRITETYPE_BOTH */ OP_TABLE_ENTRY (AML_BYTE_OP, 1, 0, 0), /* READWRITETYPE_READONLY */ OP_TABLE_ENTRY (AML_BYTE_OP, 0, 0, 0), /* REFOF */ OP_TABLE_ENTRY (AML_REF_OF_OP, 0, 0, ACPI_BTYPE_REFERENCE), /* REGIONSPACE_CMOS */ OP_TABLE_ENTRY (AML_RAW_DATA_BYTE, ACPI_ADR_SPACE_CMOS, 0, 0), /* REGIONSPACE_EC */ OP_TABLE_ENTRY (AML_RAW_DATA_BYTE, ACPI_ADR_SPACE_EC, 0, 0), /* REGIONSPACE_FFIXEDHW */ OP_TABLE_ENTRY (AML_RAW_DATA_BYTE, ACPI_ADR_SPACE_FIXED_HARDWARE, 0, 0), /* REGIONSPACE_GPIO */ OP_TABLE_ENTRY (AML_RAW_DATA_BYTE, ACPI_ADR_SPACE_GPIO, 0, 0), /* REGIONSPACE_GSBUS */ OP_TABLE_ENTRY (AML_RAW_DATA_BYTE, ACPI_ADR_SPACE_GSBUS, 0, 0), /* REGIONSPACE_IO */ OP_TABLE_ENTRY (AML_RAW_DATA_BYTE, ACPI_ADR_SPACE_SYSTEM_IO, 0, 0), /* REGIONSPACE_IPMI */ OP_TABLE_ENTRY (AML_RAW_DATA_BYTE, ACPI_ADR_SPACE_IPMI, 0, 0), /* REGIONSPACE_MEM */ OP_TABLE_ENTRY (AML_RAW_DATA_BYTE, ACPI_ADR_SPACE_SYSTEM_MEMORY, 0, 0), /* REGIONSPACE_PCC */ OP_TABLE_ENTRY (AML_RAW_DATA_BYTE, ACPI_ADR_SPACE_PLATFORM_COMM, 0, 0), /* REGIONSPACE_PCI */ OP_TABLE_ENTRY (AML_RAW_DATA_BYTE, ACPI_ADR_SPACE_PCI_CONFIG, 0, 0), /* REGIONSPACE_PCIBAR */ OP_TABLE_ENTRY (AML_RAW_DATA_BYTE, ACPI_ADR_SPACE_PCI_BAR_TARGET, 0, 0), /* REGIONSPACE_SMBUS */ OP_TABLE_ENTRY (AML_RAW_DATA_BYTE, ACPI_ADR_SPACE_SMBUS, 0, 0), /* REGISTER */ OP_TABLE_ENTRY (AML_BYTE_OP, 0, 0, 0), /* RELEASE */ OP_TABLE_ENTRY (AML_RELEASE_OP, 0, 0, 0), /* RESERVED_BYTES */ OP_TABLE_ENTRY (AML_INT_RESERVEDFIELD_OP, 0, 0, 0), /* RESET */ OP_TABLE_ENTRY (AML_RESET_OP, 0, 0, 0), /* RESOURCETEMPLATE */ OP_TABLE_ENTRY (AML_BUFFER_OP, 0, 0, ACPI_BTYPE_BUFFER), /* RESOURCETYPE_CONSUMER */ OP_TABLE_ENTRY (AML_BYTE_OP, 1, 0, 0), /* RESOURCETYPE_PRODUCER */ OP_TABLE_ENTRY (AML_BYTE_OP, 0, 0, 0), /* RETURN */ OP_TABLE_ENTRY (AML_RETURN_OP, 0, 0, 0), /* REVISION */ OP_TABLE_ENTRY (AML_REVISION_OP, 0, 0, ACPI_BTYPE_INTEGER), /* SCOPE */ OP_TABLE_ENTRY (AML_SCOPE_OP, 0, NODE_AML_PACKAGE, 0), /* SERIALIZERULE_NOTSERIAL */ OP_TABLE_ENTRY (AML_BYTE_OP, 0, 0, 0), /* SERIALIZERULE_SERIAL */ OP_TABLE_ENTRY (AML_BYTE_OP, 1, 0, 0), /* SHARETYPE_EXCLUSIVE */ OP_TABLE_ENTRY (AML_BYTE_OP, 0, 0, 0), /* SHARETYPE_EXCLUSIVEWAKE */ OP_TABLE_ENTRY (AML_BYTE_OP, 2, 0, 0), /* SHARETYPE_SHARED */ OP_TABLE_ENTRY (AML_BYTE_OP, 1, 0, 0), /* SHARETYPE_SHAREDWAKE */ OP_TABLE_ENTRY (AML_BYTE_OP, 3, 0, 0), /* SHIFTLEFT */ OP_TABLE_ENTRY (AML_SHIFT_LEFT_OP, 0, 0, ACPI_BTYPE_INTEGER), /* SHIFTRIGHT */ OP_TABLE_ENTRY (AML_SHIFT_RIGHT_OP, 0, 0, ACPI_BTYPE_INTEGER), /* SIGNAL */ OP_TABLE_ENTRY (AML_SIGNAL_OP, 0, 0, 0), /* SIZEOF */ OP_TABLE_ENTRY (AML_SIZE_OF_OP, 0, 0, ACPI_BTYPE_INTEGER), /* SLAVEMODE_CONTROLLERINIT */ OP_TABLE_ENTRY (AML_BYTE_OP, 0, 0, 0), /* SLAVEMODE_DEVICEINIT */ OP_TABLE_ENTRY (AML_BYTE_OP, 1, 0, 0), /* SLEEP */ OP_TABLE_ENTRY (AML_SLEEP_OP, 0, 0, 0), /* SPISERIALBUS */ OP_TABLE_ENTRY (AML_DEFAULT_ARG_OP, 0, 0, 0), /* STALL */ OP_TABLE_ENTRY (AML_STALL_OP, 0, 0, 0), /* STARTDEPENDENTFN */ OP_TABLE_ENTRY (AML_BYTE_OP, 0, 0, 0), /* STARTDEPENDENTFN_NOPRI */ OP_TABLE_ENTRY (AML_BYTE_OP, 0, 0, 0), /* STOPBITS_ONE */ OP_TABLE_ENTRY (AML_BYTE_OP, 1, 0, 0), /* STOPBITS_ONEPLUSHALF */ OP_TABLE_ENTRY (AML_BYTE_OP, 2, 0, 0), /* STOPBITS_TWO */ OP_TABLE_ENTRY (AML_BYTE_OP, 3, 0, 0), /* STOPBITS_ZERO */ OP_TABLE_ENTRY (AML_BYTE_OP, 0, 0, 0), /* STORE */ OP_TABLE_ENTRY (AML_STORE_OP, 0, 0, ACPI_BTYPE_DATA_REFERENCE), /* STRING_LITERAL */ OP_TABLE_ENTRY (AML_STRING_OP, 0, 0, ACPI_BTYPE_STRING), /* SUBTRACT */ OP_TABLE_ENTRY (AML_SUBTRACT_OP, 0, 0, ACPI_BTYPE_INTEGER), /* SWITCH */ OP_TABLE_ENTRY (AML_DEFAULT_ARG_OP, 0, 0, 0), /* THERMALZONE */ OP_TABLE_ENTRY (AML_THERMAL_ZONE_OP, 0, NODE_AML_PACKAGE, 0), /* TIMER */ OP_TABLE_ENTRY (AML_TIMER_OP, 0, 0, ACPI_BTYPE_INTEGER), /* TOBCD */ OP_TABLE_ENTRY (AML_TO_BCD_OP, 0, 0, ACPI_BTYPE_INTEGER), /* TOBUFFER */ OP_TABLE_ENTRY (AML_TO_BUFFER_OP, 0, 0, ACPI_BTYPE_BUFFER), /* TODECIMALSTRING */ OP_TABLE_ENTRY (AML_TO_DECSTRING_OP, 0, 0, ACPI_BTYPE_STRING), /* TOHEXSTRING */ OP_TABLE_ENTRY (AML_TO_HEXSTRING_OP, 0, 0, ACPI_BTYPE_STRING), /* TOINTEGER */ OP_TABLE_ENTRY (AML_TO_INTEGER_OP, 0, 0, ACPI_BTYPE_INTEGER), /* TOSTRING */ OP_TABLE_ENTRY (AML_TO_STRING_OP, 0, 0, ACPI_BTYPE_STRING), /* TOUUID */ OP_TABLE_ENTRY (AML_DWORD_OP, 0, NODE_AML_PACKAGE, ACPI_BTYPE_INTEGER), /* TRANSLATIONTYPE_DENSE */ OP_TABLE_ENTRY (AML_BYTE_OP, 0, 0, 0), /* TRANSLATIONTYPE_SPARSE */ OP_TABLE_ENTRY (AML_BYTE_OP, 1, 0, 0), /* TYPE_STATIC */ OP_TABLE_ENTRY (AML_BYTE_OP, 0, 0, 0), /* TYPE_TRANSLATION */ OP_TABLE_ENTRY (AML_BYTE_OP, 1, 0, 0), /* UART_SERIALBUS */ OP_TABLE_ENTRY (AML_DEFAULT_ARG_OP, 0, 0, 0), /* UNICODE */ OP_TABLE_ENTRY (AML_BUFFER_OP, 0, NODE_AML_PACKAGE, 0), /* UNLOAD */ OP_TABLE_ENTRY (AML_UNLOAD_OP, 0, 0, 0), /* UPDATERULE_ONES */ OP_TABLE_ENTRY (AML_BYTE_OP, AML_FIELD_UPDATE_WRITE_AS_ONES, 0, 0), /* UPDATERULE_PRESERVE */ OP_TABLE_ENTRY (AML_BYTE_OP, AML_FIELD_UPDATE_PRESERVE, 0, 0), /* UPDATERULE_ZEROS */ OP_TABLE_ENTRY (AML_BYTE_OP, AML_FIELD_UPDATE_WRITE_AS_ZEROS,0, 0), /* VAR_PACKAGE */ OP_TABLE_ENTRY (AML_VAR_PACKAGE_OP, 0, NODE_AML_PACKAGE, ACPI_BTYPE_PACKAGE), /* VENDORLONG */ OP_TABLE_ENTRY (AML_BYTE_OP, 0, 0, 0), /* VENDORSHORT */ OP_TABLE_ENTRY (AML_BYTE_OP, 0, 0, 0), /* WAIT */ OP_TABLE_ENTRY (AML_WAIT_OP, 0, 0, ACPI_BTYPE_INTEGER), /* WHILE */ OP_TABLE_ENTRY (AML_WHILE_OP, 0, NODE_AML_PACKAGE, 0), /* WIREMODE_FOUR */ OP_TABLE_ENTRY (AML_BYTE_OP, 0, 0, 0), /* WIREMODE_THREE */ OP_TABLE_ENTRY (AML_BYTE_OP, 1, 0, 0), /* WORDBUSNUMBER */ OP_TABLE_ENTRY (AML_BYTE_OP, 0, 0, 0), /* WORDCONST */ OP_TABLE_ENTRY (AML_RAW_DATA_WORD, 0, 0, ACPI_BTYPE_INTEGER), /* WORDIO */ OP_TABLE_ENTRY (AML_BYTE_OP, 0, 0, 0), /* WORDSPACE */ OP_TABLE_ENTRY (AML_BYTE_OP, 0, 0, 0), /* XFERSIZE_8 */ OP_TABLE_ENTRY (AML_BYTE_OP, 0, 0, 0), /* XFERSIZE_16 */ OP_TABLE_ENTRY (AML_BYTE_OP, 0, 0, 0), /* XFERSIZE_32 */ OP_TABLE_ENTRY (AML_BYTE_OP, 0, 0, 0), /* XFERSIZE_64 */ OP_TABLE_ENTRY (AML_BYTE_OP, 0, 0, 0), /* XFERSIZE_128 */ OP_TABLE_ENTRY (AML_BYTE_OP, 0, 0, 0), /* XFERSIZE_256 */ OP_TABLE_ENTRY (AML_BYTE_OP, 0, 0, 0), /* XFERTYPE_8 */ OP_TABLE_ENTRY (AML_BYTE_OP, 0, 0, 0), /* XFERTYPE_8_16 */ OP_TABLE_ENTRY (AML_BYTE_OP, 1, 0, 0), /* XFERTYPE_16 */ OP_TABLE_ENTRY (AML_BYTE_OP, 2, 0, 0), /* XOR */ OP_TABLE_ENTRY (AML_BIT_XOR_OP, 0, 0, ACPI_BTYPE_INTEGER), /* ZERO */ OP_TABLE_ENTRY (AML_ZERO_OP, 0, 0, ACPI_BTYPE_INTEGER), /*! [End] no source code translation !*/ }; src/acpica/source/compiler/aslmessages.h000066400000000000000000000627301231470457100206730ustar00rootroot00000000000000/****************************************************************************** * * Module Name: aslmessages.h - Compiler error/warning messages * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #ifndef __ASLMESSAGES_H #define __ASLMESSAGES_H typedef enum { ASL_OPTIMIZATION = 0, ASL_REMARK, ASL_WARNING, ASL_WARNING2, ASL_WARNING3, ASL_ERROR, ASL_NUM_REPORT_LEVELS } ASL_MESSAGE_TYPES; #ifdef ASL_EXCEPTIONS /* Strings for message reporting levels, must match values above */ const char *AslErrorLevel [ASL_NUM_REPORT_LEVELS] = { "Optimize", "Remark ", "Warning ", "Warning ", "Warning ", "Error " }; /* All lowercase versions for IDEs */ const char *AslErrorLevelIde [ASL_NUM_REPORT_LEVELS] = { "optimize", "remark ", "warning ", "warning ", "warning ", "error " }; #define ASL_ERROR_LEVEL_LENGTH 8 /* Length of strings above */ #endif /* * Values for all compiler messages. * * NOTE: With the introduction of the -vw option to disable specific messages, * new messages should only be added to the end of this list, so that values * for existing messages are not disturbed. */ typedef enum { ASL_MSG_RESERVED = 0, ASL_MSG_ALIGNMENT, ASL_MSG_ALPHANUMERIC_STRING, ASL_MSG_AML_NOT_IMPLEMENTED, ASL_MSG_ARG_COUNT_HI, ASL_MSG_ARG_COUNT_LO, ASL_MSG_ARG_INIT, ASL_MSG_BACKWARDS_OFFSET, ASL_MSG_BUFFER_LENGTH, ASL_MSG_CLOSE, ASL_MSG_COMPILER_INTERNAL, ASL_MSG_COMPILER_RESERVED, ASL_MSG_CONNECTION_MISSING, ASL_MSG_CONNECTION_INVALID, ASL_MSG_CONSTANT_EVALUATION, ASL_MSG_CONSTANT_FOLDED, ASL_MSG_CORE_EXCEPTION, ASL_MSG_DEBUG_FILE_OPEN, ASL_MSG_DEBUG_FILENAME, ASL_MSG_DEPENDENT_NESTING, ASL_MSG_DMA_CHANNEL, ASL_MSG_DMA_LIST, ASL_MSG_DUPLICATE_CASE, ASL_MSG_DUPLICATE_ITEM, ASL_MSG_EARLY_EOF, ASL_MSG_ENCODING_LENGTH, ASL_MSG_EX_INTERRUPT_LIST, ASL_MSG_EX_INTERRUPT_LIST_MIN, ASL_MSG_EX_INTERRUPT_NUMBER, ASL_MSG_FIELD_ACCESS_WIDTH, ASL_MSG_FIELD_UNIT_ACCESS_WIDTH, ASL_MSG_FIELD_UNIT_OFFSET, ASL_MSG_GPE_NAME_CONFLICT, ASL_MSG_HID_LENGTH, ASL_MSG_HID_PREFIX, ASL_MSG_HID_SUFFIX, ASL_MSG_INCLUDE_FILE_OPEN, ASL_MSG_INPUT_FILE_OPEN, ASL_MSG_INTEGER_LENGTH, ASL_MSG_INTEGER_OPTIMIZATION, ASL_MSG_INTERRUPT_LIST, ASL_MSG_INTERRUPT_NUMBER, ASL_MSG_INVALID_ACCESS_SIZE, ASL_MSG_INVALID_ADDR_FLAGS, ASL_MSG_INVALID_CONSTANT_OP, ASL_MSG_INVALID_EISAID, ASL_MSG_INVALID_ESCAPE, ASL_MSG_INVALID_GRAN_FIXED, ASL_MSG_INVALID_GRANULARITY, ASL_MSG_INVALID_LENGTH, ASL_MSG_INVALID_LENGTH_FIXED, ASL_MSG_INVALID_MIN_MAX, ASL_MSG_INVALID_OPERAND, ASL_MSG_INVALID_PERFORMANCE, ASL_MSG_INVALID_PRIORITY, ASL_MSG_INVALID_STRING, ASL_MSG_INVALID_TARGET, ASL_MSG_INVALID_TIME, ASL_MSG_INVALID_TYPE, ASL_MSG_INVALID_UUID, ASL_MSG_ISA_ADDRESS, ASL_MSG_LEADING_ASTERISK, ASL_MSG_LIST_LENGTH_LONG, ASL_MSG_LIST_LENGTH_SHORT, ASL_MSG_LISTING_FILE_OPEN, ASL_MSG_LISTING_FILENAME, ASL_MSG_LOCAL_INIT, ASL_MSG_LOCAL_OUTSIDE_METHOD, ASL_MSG_LONG_LINE, ASL_MSG_MEMORY_ALLOCATION, ASL_MSG_MISSING_ENDDEPENDENT, ASL_MSG_MISSING_STARTDEPENDENT, ASL_MSG_MULTIPLE_DEFAULT, ASL_MSG_MULTIPLE_TYPES, ASL_MSG_NAME_EXISTS, ASL_MSG_NAME_OPTIMIZATION, ASL_MSG_NAMED_OBJECT_IN_WHILE, ASL_MSG_NESTED_COMMENT, ASL_MSG_NO_CASES, ASL_MSG_NO_REGION, ASL_MSG_NO_RETVAL, ASL_MSG_NO_WHILE, ASL_MSG_NON_ASCII, ASL_MSG_NON_ZERO, ASL_MSG_NOT_EXIST, ASL_MSG_NOT_FOUND, ASL_MSG_NOT_METHOD, ASL_MSG_NOT_PARAMETER, ASL_MSG_NOT_REACHABLE, ASL_MSG_NOT_REFERENCED, ASL_MSG_NULL_DESCRIPTOR, ASL_MSG_NULL_STRING, ASL_MSG_OPEN, ASL_MSG_OUTPUT_FILE_OPEN, ASL_MSG_OUTPUT_FILENAME, ASL_MSG_PACKAGE_LENGTH, ASL_MSG_PREPROCESSOR_FILENAME, ASL_MSG_READ, ASL_MSG_RECURSION, ASL_MSG_REGION_BUFFER_ACCESS, ASL_MSG_REGION_BYTE_ACCESS, ASL_MSG_RESERVED_ARG_COUNT_HI, ASL_MSG_RESERVED_ARG_COUNT_LO, ASL_MSG_RESERVED_METHOD, ASL_MSG_RESERVED_NO_RETURN_VAL, ASL_MSG_RESERVED_OPERAND_TYPE, ASL_MSG_RESERVED_PACKAGE_LENGTH, ASL_MSG_RESERVED_RETURN_VALUE, ASL_MSG_RESERVED_USE, ASL_MSG_RESERVED_WORD, ASL_MSG_RESOURCE_FIELD, ASL_MSG_RESOURCE_INDEX, ASL_MSG_RESOURCE_LIST, ASL_MSG_RESOURCE_SOURCE, ASL_MSG_RESULT_NOT_USED, ASL_MSG_RETURN_TYPES, ASL_MSG_SCOPE_FWD_REF, ASL_MSG_SCOPE_TYPE, ASL_MSG_SEEK, ASL_MSG_SERIALIZED, ASL_MSG_SERIALIZED_REQUIRED, ASL_MSG_SINGLE_NAME_OPTIMIZATION, ASL_MSG_SOME_NO_RETVAL, ASL_MSG_STRING_LENGTH, ASL_MSG_SWITCH_TYPE, ASL_MSG_SYNC_LEVEL, ASL_MSG_SYNTAX, ASL_MSG_TABLE_SIGNATURE, ASL_MSG_TAG_LARGER, ASL_MSG_TAG_SMALLER, ASL_MSG_TIMEOUT, ASL_MSG_TOO_MANY_TEMPS, ASL_MSG_TRUNCATION, ASL_MSG_UNKNOWN_RESERVED_NAME, ASL_MSG_UNREACHABLE_CODE, ASL_MSG_UNSUPPORTED, ASL_MSG_UPPER_CASE, ASL_MSG_VENDOR_LIST, ASL_MSG_WRITE, ASL_MSG_RANGE, ASL_MSG_BUFFER_ALLOCATION, /* These messages are used by the Preprocessor only */ ASL_MSG_DIRECTIVE_SYNTAX, ASL_MSG_ENDIF_MISMATCH, ASL_MSG_ERROR_DIRECTIVE, ASL_MSG_EXISTING_NAME, ASL_MSG_INVALID_INVOCATION, ASL_MSG_MACRO_SYNTAX, ASL_MSG_TOO_MANY_ARGUMENTS, ASL_MSG_UNKNOWN_DIRECTIVE, ASL_MSG_UNKNOWN_PRAGMA, ASL_MSG_WARNING_DIRECTIVE, /* These messages are used by the data table compiler only */ ASL_MSG_BUFFER_ELEMENT, ASL_MSG_DIVIDE_BY_ZERO, ASL_MSG_FLAG_VALUE, ASL_MSG_INTEGER_SIZE, ASL_MSG_INVALID_EXPRESSION, ASL_MSG_INVALID_FIELD_NAME, ASL_MSG_INVALID_HEX_INTEGER, ASL_MSG_OEM_TABLE, ASL_MSG_RESERVED_VALUE, ASL_MSG_UNKNOWN_LABEL, ASL_MSG_UNKNOWN_SUBTABLE, ASL_MSG_UNKNOWN_TABLE, ASL_MSG_ZERO_VALUE } ASL_MESSAGE_IDS; #ifdef ASL_EXCEPTIONS /* * Actual message strings for each compiler message. * * NOTE: With the introduction of the -vw option to disable specific messages, * new messages should only be added to the end of this list, so that values * for existing messages are not disturbed. */ char *AslMessages [] = { /* The zeroth message is reserved */ "", /* ASL_MSG_ALIGNMENT */ "Must be a multiple of alignment/granularity value", /* ASL_MSG_ALPHANUMERIC_STRING */ "String must be entirely alphanumeric", /* ASL_MSG_AML_NOT_IMPLEMENTED */ "Opcode is not implemented in compiler AML code generator", /* ASL_MSG_ARG_COUNT_HI */ "Too many arguments", /* ASL_MSG_ARG_COUNT_LO */ "Too few arguments", /* ASL_MSG_ARG_INIT */ "Method argument is not initialized", /* ASL_MSG_BACKWARDS_OFFSET */ "Invalid backwards offset", /* ASL_MSG_BUFFER_LENGTH */ "Effective AML buffer length is zero", /* ASL_MSG_CLOSE */ "Could not close file", /* ASL_MSG_COMPILER_INTERNAL */ "Internal compiler error", /* ASL_MSG_COMPILER_RESERVED */ "Use of compiler reserved name", /* ASL_MSG_CONNECTION_MISSING */ "A Connection operator is required for this field SpaceId", /* ASL_MSG_CONNECTION_INVALID */ "Invalid OpRegion SpaceId for use of Connection operator", /* ASL_MSG_CONSTANT_EVALUATION */ "Could not evaluate constant expression", /* ASL_MSG_CONSTANT_FOLDED */ "Constant expression evaluated and reduced", /* ASL_MSG_CORE_EXCEPTION */ "From ACPICA Subsystem", /* ASL_MSG_DEBUG_FILE_OPEN */ "Could not open debug file", /* ASL_MSG_DEBUG_FILENAME */ "Could not create debug filename", /* ASL_MSG_DEPENDENT_NESTING */ "Dependent function macros cannot be nested",\ /* ASL_MSG_DMA_CHANNEL */ "Invalid DMA channel (must be 0-7)", /* ASL_MSG_DMA_LIST */ "Too many DMA channels (8 max)", /* ASL_MSG_DUPLICATE_CASE */ "Case value already specified", /* ASL_MSG_DUPLICATE_ITEM */ "Duplicate value in list", /* ASL_MSG_EARLY_EOF */ "Premature end-of-file reached", /* ASL_MSG_ENCODING_LENGTH */ "Package length too long to encode", /* ASL_MSG_EX_INTERRUPT_LIST */ "Too many interrupts (255 max)", /* ASL_MSG_EX_INTERRUPT_LIST_MIN */ "Too few interrupts (1 minimum required)", /* ASL_MSG_EX_INTERRUPT_NUMBER */ "Invalid interrupt number (must be 32 bits)", /* ASL_MSG_FIELD_ACCESS_WIDTH */ "Access width is greater than region size", /* ASL_MSG_FIELD_UNIT_ACCESS_WIDTH */ "Access width of Field Unit extends beyond region limit", /* ASL_MSG_FIELD_UNIT_OFFSET */ "Field Unit extends beyond region limit", /* ASL_MSG_GPE_NAME_CONFLICT */ "Name conflicts with a previous GPE method", /* ASL_MSG_HID_LENGTH */ "_HID string must be exactly 7 or 8 characters", /* ASL_MSG_HID_PREFIX */ "_HID prefix must be all uppercase or decimal digits", /* ASL_MSG_HID_SUFFIX */ "_HID suffix must be all hex digits", /* ASL_MSG_INCLUDE_FILE_OPEN */ "Could not open include file", /* ASL_MSG_INPUT_FILE_OPEN */ "Could not open input file", /* ASL_MSG_INTEGER_LENGTH */ "64-bit integer in 32-bit table, truncating (DSDT version < 2)", /* ASL_MSG_INTEGER_OPTIMIZATION */ "Integer optimized to single-byte AML opcode", /* ASL_MSG_INTERRUPT_LIST */ "Too many interrupts (16 max)", /* ASL_MSG_INTERRUPT_NUMBER */ "Invalid interrupt number (must be 0-15)", /* ASL_MSG_INVALID_ACCESS_SIZE */ "Invalid AccessSize (Maximum is 4 - QWord access)", /* ASL_MSG_INVALID_ADDR_FLAGS */ "Invalid combination of Length and Min/Max fixed flags", /* ASL_MSG_INVALID_CONSTANT_OP */ "Invalid operator in constant expression (not type 3/4/5)", /* ASL_MSG_INVALID_EISAID */ "EISAID string must be of the form \"UUUXXXX\" (3 uppercase, 4 hex digits)", /* ASL_MSG_INVALID_ESCAPE */ "Invalid or unknown escape sequence", /* ASL_MSG_INVALID_GRAN_FIXED */ "Granularity must be zero for fixed Min/Max", /* ASL_MSG_INVALID_GRANULARITY */ "Granularity must be zero or a power of two minus one", /* ASL_MSG_INVALID_LENGTH */ "Length is larger than Min/Max window", /* ASL_MSG_INVALID_LENGTH_FIXED */ "Length is not equal to fixed Min/Max window", /* ASL_MSG_INVALID_MIN_MAX */ "Address Min is greater than Address Max", /* ASL_MSG_INVALID_OPERAND */ "Invalid operand", /* ASL_MSG_INVALID_PERFORMANCE */ "Invalid performance/robustness value", /* ASL_MSG_INVALID_PRIORITY */ "Invalid priority value", /* ASL_MSG_INVALID_STRING */ "Invalid Hex/Octal Escape - Non-ASCII or NULL", /* ASL_MSG_INVALID_TARGET */ "Target operand not allowed in constant expression", /* ASL_MSG_INVALID_TIME */ "Time parameter too long (255 max)", /* ASL_MSG_INVALID_TYPE */ "Invalid type", /* ASL_MSG_INVALID_UUID */ "UUID string must be of the form \"aabbccdd-eeff-gghh-iijj-kkllmmnnoopp\"", /* ASL_MSG_ISA_ADDRESS */ "Maximum 10-bit ISA address (0x3FF)", /* ASL_MSG_LEADING_ASTERISK */ "Invalid leading asterisk", /* ASL_MSG_LIST_LENGTH_LONG */ "Initializer list longer than declared package length", /* ASL_MSG_LIST_LENGTH_SHORT */ "Initializer list shorter than declared package length", /* ASL_MSG_LISTING_FILE_OPEN */ "Could not open listing file", /* ASL_MSG_LISTING_FILENAME */ "Could not create listing filename", /* ASL_MSG_LOCAL_INIT */ "Method local variable is not initialized", /* ASL_MSG_LOCAL_OUTSIDE_METHOD */ "Local or Arg used outside a control method", /* ASL_MSG_LONG_LINE */ "Splitting long input line", /* ASL_MSG_MEMORY_ALLOCATION */ "Memory allocation failure", /* ASL_MSG_MISSING_ENDDEPENDENT */ "Missing EndDependentFn() macro in dependent resource list", /* ASL_MSG_MISSING_STARTDEPENDENT */ "Missing StartDependentFn() macro in dependent resource list", /* ASL_MSG_MULTIPLE_DEFAULT */ "More than one Default statement within Switch construct", /* ASL_MSG_MULTIPLE_TYPES */ "Multiple types", /* ASL_MSG_NAME_EXISTS */ "Name already exists in scope", /* ASL_MSG_NAME_OPTIMIZATION */ "NamePath optimized", /* ASL_MSG_NAMED_OBJECT_IN_WHILE */ "Creating a named object in a While loop", /* ASL_MSG_NESTED_COMMENT */ "Nested comment found", /* ASL_MSG_NO_CASES */ "No Case statements under Switch", /* ASL_MSG_NO_REGION */ "_REG has no corresponding Operation Region", /* ASL_MSG_NO_RETVAL */ "Called method returns no value", /* ASL_MSG_NO_WHILE */ "No enclosing While statement", /* ASL_MSG_NON_ASCII */ "Invalid characters found in file", /* ASL_MSG_NON_ZERO */ "Operand evaluates to zero", /* ASL_MSG_NOT_EXIST */ "Object does not exist", /* ASL_MSG_NOT_FOUND */ "Object not found or not accessible from scope", /* ASL_MSG_NOT_METHOD */ "Not a control method, cannot invoke", /* ASL_MSG_NOT_PARAMETER */ "Not a parameter, used as local only", /* ASL_MSG_NOT_REACHABLE */ "Object is not accessible from this scope", /* ASL_MSG_NOT_REFERENCED */ "Object is not referenced", /* ASL_MSG_NULL_DESCRIPTOR */ "Min/Max/Length/Gran are all zero, but no resource tag", /* ASL_MSG_NULL_STRING */ "Invalid zero-length (null) string", /* ASL_MSG_OPEN */ "Could not open file", /* ASL_MSG_OUTPUT_FILE_OPEN */ "Could not open output AML file", /* ASL_MSG_OUTPUT_FILENAME */ "Could not create output filename", /* ASL_MSG_PACKAGE_LENGTH */ "Effective AML package length is zero", /* ASL_MSG_PREPROCESSOR_FILENAME */ "Could not create preprocessor filename", /* ASL_MSG_READ */ "Could not read file", /* ASL_MSG_RECURSION */ "Recursive method call", /* ASL_MSG_REGION_BUFFER_ACCESS */ "Host Operation Region requires BufferAcc access", /* ASL_MSG_REGION_BYTE_ACCESS */ "Host Operation Region requires ByteAcc access", /* 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_NO_RETURN_VAL */ "Reserved method should not return a value", /* ASL_MSG_RESERVED_OPERAND_TYPE */ "Invalid object type for reserved name", /* ASL_MSG_RESERVED_PACKAGE_LENGTH */ "Invalid package length 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", /* ASL_MSG_RESOURCE_FIELD */ "Resource field name cannot be used as a target", /* ASL_MSG_RESOURCE_INDEX */ "Missing ResourceSourceIndex (required)", /* ASL_MSG_RESOURCE_LIST */ "Too many resource items (internal error)", /* ASL_MSG_RESOURCE_SOURCE */ "Missing ResourceSource string (required)", /* ASL_MSG_RESULT_NOT_USED */ "Result is not used, operator has no effect", /* ASL_MSG_RETURN_TYPES */ "Not all control paths return a value", /* ASL_MSG_SCOPE_FWD_REF */ "Forward references from Scope operator not allowed", /* ASL_MSG_SCOPE_TYPE */ "Existing object has invalid type for Scope operator", /* ASL_MSG_SEEK */ "Could not seek file", /* ASL_MSG_SERIALIZED */ "Control Method marked Serialized", /* ASL_MSG_SERIALIZED_REQUIRED */ "Control Method should be made Serialized", /* ASL_MSG_SINGLE_NAME_OPTIMIZATION */ "NamePath optimized to NameSeg (uses run-time search path)", /* ASL_MSG_SOME_NO_RETVAL */ "Called method may not always return a value", /* ASL_MSG_STRING_LENGTH */ "String literal too long", /* ASL_MSG_SWITCH_TYPE */ "Switch expression is not a static Integer/Buffer/String data type, defaulting to Integer", /* ASL_MSG_SYNC_LEVEL */ "SyncLevel must be in the range 0-15", /* ASL_MSG_SYNTAX */ "", /* ASL_MSG_TABLE_SIGNATURE */ "Invalid Table Signature", /* ASL_MSG_TAG_LARGER */ "ResourceTag larger than Field", /* ASL_MSG_TAG_SMALLER */ "ResourceTag smaller than Field", /* ASL_MSG_TIMEOUT */ "Result is not used, possible operator timeout will be missed", /* ASL_MSG_TOO_MANY_TEMPS */ "Method requires too many temporary variables (_T_x)", /* ASL_MSG_TRUNCATION */ "64-bit return value will be truncated to 32 bits (DSDT version < 2)", /* ASL_MSG_UNKNOWN_RESERVED_NAME */ "Unknown reserved name", /* ASL_MSG_UNREACHABLE_CODE */ "Statement is unreachable", /* ASL_MSG_UNSUPPORTED */ "Unsupported feature", /* ASL_MSG_UPPER_CASE */ "Non-hex letters must be upper case", /* ASL_MSG_VENDOR_LIST */ "Too many vendor data bytes (7 max)", /* ASL_MSG_WRITE */ "Could not write file", /* ASL_MSG_RANGE */ "Constant out of range", /* ASL_MSG_BUFFER_ALLOCATION */ "Could not allocate line buffer", /* Preprocessor */ /* ASL_MSG_DIRECTIVE_SYNTAX */ "Invalid directive syntax", /* ASL_MSG_ENDIF_MISMATCH */ "Mismatched #endif", /* ASL_MSG_ERROR_DIRECTIVE */ "#error", /* ASL_MSG_EXISTING_NAME */ "Name is already defined", /* ASL_MSG_INVALID_INVOCATION */ "Invalid macro invocation", /* ASL_MSG_MACRO_SYNTAX */ "Invalid macro syntax", /* ASL_MSG_TOO_MANY_ARGUMENTS */ "Too many macro arguments", /* ASL_MSG_UNKNOWN_DIRECTIVE */ "Unknown directive", /* ASL_MSG_UNKNOWN_PRAGMA */ "Unknown pragma", /* ASL_MSG_WARNING_DIRECTIVE */ "#warning", /* Table compiler */ /* ASL_MSG_BUFFER_ELEMENT */ "Invalid element in buffer initializer list", /* ASL_MSG_DIVIDE_BY_ZERO */ "Expression contains divide-by-zero", /* ASL_MSG_FLAG_VALUE */ "Flag value is too large", /* ASL_MSG_INTEGER_SIZE */ "Integer too large for target", /* ASL_MSG_INVALID_EXPRESSION */ "Invalid expression", /* ASL_MSG_INVALID_FIELD_NAME */ "Invalid Field Name", /* ASL_MSG_INVALID_HEX_INTEGER */ "Invalid hex integer constant", /* ASL_MSG_OEM_TABLE */ "OEM table - unknown contents", /* ASL_MSG_RESERVED_VALUE */ "Reserved field", /* ASL_MSG_UNKNOWN_LABEL */ "Label is undefined", /* ASL_MSG_UNKNOWN_SUBTABLE */ "Unknown subtable type", /* ASL_MSG_UNKNOWN_TABLE */ "Unknown ACPI table signature", /* ASL_MSG_ZERO_VALUE */ "Value must be non-zero" }; #endif /* ASL_EXCEPTIONS */ #endif /* __ASLMESSAGES_H */ src/acpica/source/compiler/aslmethod.c000066400000000000000000000605161231470457100203370ustar00rootroot00000000000000/****************************************************************************** * * Module Name: aslmethod.c - Control method analysis walk * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #include "aslcompiler.h" #include "aslcompiler.y.h" #include "acparser.h" #include "amlcode.h" #define _COMPONENT ACPI_COMPILER ACPI_MODULE_NAME ("aslmethod") /* Local prototypes */ void MtCheckNamedObjectInMethod ( ACPI_PARSE_OBJECT *Op, ASL_METHOD_INFO *MethodInfo); /******************************************************************************* * * FUNCTION: MtMethodAnalysisWalkBegin * * PARAMETERS: ASL_WALK_CALLBACK * * RETURN: Status * * DESCRIPTION: Descending callback for the analysis walk. Check methods for: * 1) Initialized local variables * 2) Valid arguments * 3) Return types * ******************************************************************************/ ACPI_STATUS MtMethodAnalysisWalkBegin ( ACPI_PARSE_OBJECT *Op, UINT32 Level, void *Context) { ASL_ANALYSIS_WALK_INFO *WalkInfo = (ASL_ANALYSIS_WALK_INFO *) Context; ASL_METHOD_INFO *MethodInfo = WalkInfo->MethodStack; ACPI_PARSE_OBJECT *Next; UINT32 RegisterNumber; UINT32 i; char LocalName[] = "Local0"; char ArgName[] = "Arg0"; ACPI_PARSE_OBJECT *ArgNode; ACPI_PARSE_OBJECT *NextType; ACPI_PARSE_OBJECT *NextParamType; UINT8 ActualArgs = 0; switch (Op->Asl.ParseOpcode) { case PARSEOP_METHOD: TotalMethods++; /* Create and init method info */ MethodInfo = UtLocalCalloc (sizeof (ASL_METHOD_INFO)); MethodInfo->Next = WalkInfo->MethodStack; MethodInfo->Op = Op; WalkInfo->MethodStack = MethodInfo; /* Get the name node, ignored here */ Next = Op->Asl.Child; /* Get the NumArguments node */ Next = Next->Asl.Next; MethodInfo->NumArguments = (UINT8) (((UINT8) Next->Asl.Value.Integer) & 0x07); /* Get the SerializeRule and SyncLevel nodes, ignored here */ Next = Next->Asl.Next; MethodInfo->ShouldBeSerialized = (UINT8) Next->Asl.Value.Integer; Next = Next->Asl.Next; ArgNode = Next; /* Get the ReturnType node */ Next = Next->Asl.Next; NextType = Next->Asl.Child; while (NextType) { /* Get and map each of the ReturnTypes */ MethodInfo->ValidReturnTypes |= AnMapObjTypeToBtype (NextType); NextType->Asl.ParseOpcode = PARSEOP_DEFAULT_ARG; NextType = NextType->Asl.Next; } /* Get the ParameterType node */ Next = Next->Asl.Next; NextType = Next->Asl.Child; while (NextType) { if (NextType->Asl.ParseOpcode == PARSEOP_DEFAULT_ARG) { NextParamType = NextType->Asl.Child; while (NextParamType) { MethodInfo->ValidArgTypes[ActualArgs] |= AnMapObjTypeToBtype (NextParamType); NextParamType->Asl.ParseOpcode = PARSEOP_DEFAULT_ARG; NextParamType = NextParamType->Asl.Next; } } else { MethodInfo->ValidArgTypes[ActualArgs] = AnMapObjTypeToBtype (NextType); NextType->Asl.ParseOpcode = PARSEOP_DEFAULT_ARG; ActualArgs++; } NextType = NextType->Asl.Next; } if ((MethodInfo->NumArguments) && (MethodInfo->NumArguments != ActualArgs)) { /* error: Param list did not match number of args */ } /* Allow numarguments == 0 for Function() */ if ((!MethodInfo->NumArguments) && (ActualArgs)) { MethodInfo->NumArguments = ActualArgs; ArgNode->Asl.Value.Integer |= ActualArgs; } /* * Actual arguments are initialized at method entry. * All other ArgX "registers" can be used as locals, so we * track their initialization. */ for (i = 0; i < MethodInfo->NumArguments; i++) { MethodInfo->ArgInitialized[i] = TRUE; } break; case PARSEOP_METHODCALL: if (MethodInfo && (Op->Asl.Node == MethodInfo->Op->Asl.Node)) { AslError (ASL_REMARK, ASL_MSG_RECURSION, Op, Op->Asl.ExternalName); } break; case PARSEOP_LOCAL0: case PARSEOP_LOCAL1: case PARSEOP_LOCAL2: case PARSEOP_LOCAL3: case PARSEOP_LOCAL4: case PARSEOP_LOCAL5: case PARSEOP_LOCAL6: case PARSEOP_LOCAL7: if (!MethodInfo) { /* * Local was used outside a control method, or there was an error * in the method declaration. */ AslError (ASL_REMARK, ASL_MSG_LOCAL_OUTSIDE_METHOD, Op, Op->Asl.ExternalName); return (AE_ERROR); } RegisterNumber = (Op->Asl.AmlOpcode & 0x000F); /* * If the local is being used as a target, mark the local * initialized */ if (Op->Asl.CompileFlags & NODE_IS_TARGET) { MethodInfo->LocalInitialized[RegisterNumber] = TRUE; } /* * Otherwise, this is a reference, check if the local * has been previously initialized. * * The only operator that accepts an uninitialized value is ObjectType() */ else if ((!MethodInfo->LocalInitialized[RegisterNumber]) && (Op->Asl.Parent->Asl.ParseOpcode != PARSEOP_OBJECTTYPE)) { LocalName[strlen (LocalName) -1] = (char) (RegisterNumber + 0x30); AslError (ASL_ERROR, ASL_MSG_LOCAL_INIT, Op, LocalName); } break; case PARSEOP_ARG0: case PARSEOP_ARG1: case PARSEOP_ARG2: case PARSEOP_ARG3: case PARSEOP_ARG4: case PARSEOP_ARG5: case PARSEOP_ARG6: if (!MethodInfo) { /* * Arg was used outside a control method, or there was an error * in the method declaration. */ AslError (ASL_REMARK, ASL_MSG_LOCAL_OUTSIDE_METHOD, Op, Op->Asl.ExternalName); return (AE_ERROR); } RegisterNumber = (Op->Asl.AmlOpcode & 0x000F) - 8; ArgName[strlen (ArgName) -1] = (char) (RegisterNumber + 0x30); /* * If the Arg is being used as a target, mark the local * initialized */ if (Op->Asl.CompileFlags & NODE_IS_TARGET) { MethodInfo->ArgInitialized[RegisterNumber] = TRUE; } /* * Otherwise, this is a reference, check if the Arg * has been previously initialized. * * The only operator that accepts an uninitialized value is ObjectType() */ else if ((!MethodInfo->ArgInitialized[RegisterNumber]) && (Op->Asl.Parent->Asl.ParseOpcode != PARSEOP_OBJECTTYPE)) { AslError (ASL_ERROR, ASL_MSG_ARG_INIT, Op, ArgName); } /* Flag this arg if it is not a "real" argument to the method */ if (RegisterNumber >= MethodInfo->NumArguments) { AslError (ASL_REMARK, ASL_MSG_NOT_PARAMETER, Op, ArgName); } break; case PARSEOP_RETURN: if (!MethodInfo) { /* * Probably was an error in the method declaration, * no additional error here */ ACPI_WARNING ((AE_INFO, "%p, No parent method", Op)); return (AE_ERROR); } /* * A child indicates a possible return value. A simple Return or * Return() is marked with NODE_IS_NULL_RETURN by the parser so * that it is not counted as a "real" return-with-value, although * the AML code that is actually emitted is Return(0). The AML * definition of Return has a required parameter, so we are * forced to convert a null return to Return(0). */ if ((Op->Asl.Child) && (Op->Asl.Child->Asl.ParseOpcode != PARSEOP_DEFAULT_ARG) && (!(Op->Asl.Child->Asl.CompileFlags & NODE_IS_NULL_RETURN))) { MethodInfo->NumReturnWithValue++; } else { MethodInfo->NumReturnNoValue++; } break; case PARSEOP_BREAK: case PARSEOP_CONTINUE: Next = Op->Asl.Parent; while (Next) { if (Next->Asl.ParseOpcode == PARSEOP_WHILE) { break; } Next = Next->Asl.Parent; } if (!Next) { AslError (ASL_ERROR, ASL_MSG_NO_WHILE, Op, NULL); } break; case PARSEOP_STALL: /* We can range check if the argument is an integer */ if ((Op->Asl.Child->Asl.ParseOpcode == PARSEOP_INTEGER) && (Op->Asl.Child->Asl.Value.Integer > ACPI_UINT8_MAX)) { AslError (ASL_ERROR, ASL_MSG_INVALID_TIME, Op, NULL); } break; case PARSEOP_DEVICE: case PARSEOP_EVENT: case PARSEOP_MUTEX: case PARSEOP_OPERATIONREGION: case PARSEOP_POWERRESOURCE: case PARSEOP_PROCESSOR: case PARSEOP_THERMALZONE: /* * The first operand is a name to be created in the namespace. * Check against the reserved list. */ i = ApCheckForPredefinedName (Op, Op->Asl.NameSeg); if (i < ACPI_VALID_RESERVED_NAME_MAX) { AslError (ASL_ERROR, ASL_MSG_RESERVED_USE, Op, Op->Asl.ExternalName); } break; case PARSEOP_NAME: /* Typecheck any predefined names statically defined with Name() */ ApCheckForPredefinedObject (Op, Op->Asl.NameSeg); /* Special typechecking for _HID */ if (!ACPI_STRCMP (METHOD_NAME__HID, Op->Asl.NameSeg)) { Next = Op->Asl.Child->Asl.Next; AnCheckId (Next, ASL_TYPE_HID); } /* Special typechecking for _CID */ else if (!ACPI_STRCMP (METHOD_NAME__CID, Op->Asl.NameSeg)) { Next = Op->Asl.Child->Asl.Next; if ((Next->Asl.ParseOpcode == PARSEOP_PACKAGE) || (Next->Asl.ParseOpcode == PARSEOP_VAR_PACKAGE)) { Next = Next->Asl.Child; while (Next) { AnCheckId (Next, ASL_TYPE_CID); Next = Next->Asl.Next; } } else { AnCheckId (Next, ASL_TYPE_CID); } } break; default: break; } /* Check for named object creation within a non-serialized method */ MtCheckNamedObjectInMethod (Op, MethodInfo); return (AE_OK); } /******************************************************************************* * * FUNCTION: MtCheckNamedObjectInMethod * * PARAMETERS: Op - Current parser op * MethodInfo - Info for method being parsed * * RETURN: None * * DESCRIPTION: Detect if a non-serialized method is creating a named object, * which could possibly cause problems if two threads execute * the method concurrently. Emit a remark in this case. * ******************************************************************************/ void MtCheckNamedObjectInMethod ( ACPI_PARSE_OBJECT *Op, ASL_METHOD_INFO *MethodInfo) { const ACPI_OPCODE_INFO *OpInfo; /* We don't care about actual method declarations */ if (Op->Asl.AmlOpcode == AML_METHOD_OP) { return; } /* Determine if we are creating a named object */ OpInfo = AcpiPsGetOpcodeInfo (Op->Asl.AmlOpcode); if (OpInfo->Class == AML_CLASS_NAMED_OBJECT) { /* * If we have a named object created within a non-serialized method, * emit a remark that the method should be serialized. * * Reason: If a thread blocks within the method for any reason, and * another thread enters the method, the method will fail because an * attempt will be made to create the same object twice. */ if (MethodInfo && !MethodInfo->ShouldBeSerialized) { AslError (ASL_REMARK, ASL_MSG_SERIALIZED_REQUIRED, MethodInfo->Op, "due to creation of named objects within"); /* Emit message only ONCE per method */ MethodInfo->ShouldBeSerialized = TRUE; } } } /******************************************************************************* * * FUNCTION: MtMethodAnalysisWalkEnd * * PARAMETERS: ASL_WALK_CALLBACK * * RETURN: Status * * DESCRIPTION: Ascending callback for analysis walk. Complete method * return analysis. * ******************************************************************************/ ACPI_STATUS MtMethodAnalysisWalkEnd ( ACPI_PARSE_OBJECT *Op, UINT32 Level, void *Context) { ASL_ANALYSIS_WALK_INFO *WalkInfo = (ASL_ANALYSIS_WALK_INFO *) Context; ASL_METHOD_INFO *MethodInfo = WalkInfo->MethodStack; switch (Op->Asl.ParseOpcode) { case PARSEOP_METHOD: case PARSEOP_RETURN: if (!MethodInfo) { printf ("No method info for method! [%s]\n", Op->Asl.Namepath); AslError (ASL_ERROR, ASL_MSG_COMPILER_INTERNAL, Op, "No method info for this method"); CmCleanupAndExit (); return (AE_AML_INTERNAL); } break; default: break; } switch (Op->Asl.ParseOpcode) { case PARSEOP_METHOD: WalkInfo->MethodStack = MethodInfo->Next; /* * Check if there is no return statement at the end of the * method AND we can actually get there -- i.e., the execution * of the method can possibly terminate without a return statement. */ if ((!AnLastStatementIsReturn (Op)) && (!(Op->Asl.CompileFlags & NODE_HAS_NO_EXIT))) { /* * No return statement, and execution can possibly exit * via this path. This is equivalent to Return () */ MethodInfo->NumReturnNoValue++; } /* * Check for case where some return statements have a return value * and some do not. Exit without a return statement is a return with * no value */ if (MethodInfo->NumReturnNoValue && MethodInfo->NumReturnWithValue) { AslError (ASL_WARNING, ASL_MSG_RETURN_TYPES, Op, Op->Asl.ExternalName); } /* * If there are any RETURN() statements with no value, or there is a * control path that allows the method to exit without a return value, * we mark the method as a method that does not return a value. This * knowledge can be used to check method invocations that expect a * returned value. */ if (MethodInfo->NumReturnNoValue) { if (MethodInfo->NumReturnWithValue) { Op->Asl.CompileFlags |= NODE_METHOD_SOME_NO_RETVAL; } else { Op->Asl.CompileFlags |= NODE_METHOD_NO_RETVAL; } } /* * Check predefined method names for correct return behavior * and correct number of arguments. Also, some special checks * For GPE and _REG methods. */ if (ApCheckForPredefinedMethod (Op, MethodInfo)) { /* Special check for two names like _L01 and _E01 in same scope */ ApCheckForGpeNameConflict (Op); /* * Special check for _REG: Must have an operation region definition * within the same scope! */ ApCheckRegMethod (Op); } ACPI_FREE (MethodInfo); break; case PARSEOP_NAME: /* Special check for two names like _L01 and _E01 in same scope */ ApCheckForGpeNameConflict (Op); break; 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. */ Op->Asl.Parent->Asl.CompileFlags |= NODE_HAS_NO_EXIT; /* Used in the "typing" pass later */ Op->Asl.ParentMethod = MethodInfo->Op; /* * If there is a peer node after the return statement, then this * node is unreachable code -- i.e., it won't be executed because of * the preceding Return() statement. */ if (Op->Asl.Next) { AslError (ASL_WARNING, ASL_MSG_UNREACHABLE_CODE, Op->Asl.Next, NULL); } break; case PARSEOP_IF: if ((Op->Asl.CompileFlags & NODE_HAS_NO_EXIT) && (Op->Asl.Next) && (Op->Asl.Next->Asl.ParseOpcode == PARSEOP_ELSE)) { /* * This IF has a corresponding ELSE. The IF block has no exit, * (it contains an unconditional Return) * mark the ELSE block to remember this fact. */ Op->Asl.Next->Asl.CompileFlags |= NODE_IF_HAS_NO_EXIT; } break; case PARSEOP_ELSE: if ((Op->Asl.CompileFlags & NODE_HAS_NO_EXIT) && (Op->Asl.CompileFlags & NODE_IF_HAS_NO_EXIT)) { /* * This ELSE block has no exit and the corresponding IF block * has no exit either. Therefore, the parent node has no exit. */ Op->Asl.Parent->Asl.CompileFlags |= NODE_HAS_NO_EXIT; } break; default: if ((Op->Asl.CompileFlags & NODE_HAS_NO_EXIT) && (Op->Asl.Parent)) { /* If this node has no exit, then the parent has no exit either */ Op->Asl.Parent->Asl.CompileFlags |= NODE_HAS_NO_EXIT; } break; } return (AE_OK); } src/acpica/source/compiler/aslnamesp.c000066400000000000000000000404021231470457100203320ustar00rootroot00000000000000/****************************************************************************** * * Module Name: aslnamesp - Namespace output file generation * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #include "aslcompiler.h" #include "aslcompiler.y.h" #include "acnamesp.h" #define _COMPONENT ACPI_COMPILER ACPI_MODULE_NAME ("aslnamesp") /* Local prototypes */ static ACPI_STATUS NsDoOneNamespaceObject ( ACPI_HANDLE ObjHandle, UINT32 Level, void *Context, void **ReturnValue); static ACPI_STATUS NsDoOnePathname ( ACPI_HANDLE ObjHandle, UINT32 Level, void *Context, void **ReturnValue); /******************************************************************************* * * FUNCTION: NsSetupNamespaceListing * * PARAMETERS: Handle - local file handle * * RETURN: None * * DESCRIPTION: Set the namespace output file to the input handle * ******************************************************************************/ void NsSetupNamespaceListing ( void *Handle) { Gbl_NsOutputFlag = TRUE; Gbl_Files[ASL_FILE_NAMESPACE_OUTPUT].Handle = Handle; } /******************************************************************************* * * FUNCTION: NsDisplayNamespace * * PARAMETERS: None * * RETURN: Status * * DESCRIPTION: Walk the namespace an display information about each node * in the tree. Information is written to the optional * namespace output file. * ******************************************************************************/ ACPI_STATUS NsDisplayNamespace ( void) { ACPI_STATUS Status; if (!Gbl_NsOutputFlag) { return (AE_OK); } Gbl_NumNamespaceObjects = 0; /* File header */ FlPrintFile (ASL_FILE_NAMESPACE_OUTPUT, "Contents of ACPI Namespace\n\n"); FlPrintFile (ASL_FILE_NAMESPACE_OUTPUT, "Count Depth Name - Type\n\n"); /* Walk entire namespace from the root */ Status = AcpiNsWalkNamespace (ACPI_TYPE_ANY, ACPI_ROOT_OBJECT, ACPI_UINT32_MAX, FALSE, NsDoOneNamespaceObject, NULL, NULL, NULL); /* Print the full pathname for each namespace node */ FlPrintFile (ASL_FILE_NAMESPACE_OUTPUT, "\nNamespace pathnames\n\n"); Status = AcpiNsWalkNamespace (ACPI_TYPE_ANY, ACPI_ROOT_OBJECT, ACPI_UINT32_MAX, FALSE, NsDoOnePathname, NULL, NULL, NULL); return (Status); } /******************************************************************************* * * FUNCTION: NsDoOneNamespaceObject * * PARAMETERS: ACPI_WALK_CALLBACK * * RETURN: Status * * DESCRIPTION: Dump a namespace object to the namespace output file. * Called during the walk of the namespace to dump all objects. * ******************************************************************************/ static ACPI_STATUS NsDoOneNamespaceObject ( ACPI_HANDLE ObjHandle, UINT32 Level, void *Context, void **ReturnValue) { ACPI_NAMESPACE_NODE *Node = (ACPI_NAMESPACE_NODE *) ObjHandle; ACPI_OPERAND_OBJECT *ObjDesc; ACPI_PARSE_OBJECT *Op; Gbl_NumNamespaceObjects++; FlPrintFile (ASL_FILE_NAMESPACE_OUTPUT, "%5u [%u] %*s %4.4s - %s", Gbl_NumNamespaceObjects, Level, (Level * 3), " ", &Node->Name, AcpiUtGetTypeName (Node->Type)); Op = Node->Op; ObjDesc = ACPI_CAST_PTR (ACPI_OPERAND_OBJECT, Node->Object); if (!Op) { FlPrintFile (ASL_FILE_NAMESPACE_OUTPUT, "\n"); return (AE_OK); } if ((ObjDesc) && (ACPI_GET_DESCRIPTOR_TYPE (ObjDesc) == ACPI_DESC_TYPE_OPERAND)) { switch (Node->Type) { case ACPI_TYPE_INTEGER: FlPrintFile (ASL_FILE_NAMESPACE_OUTPUT, " [Initial Value 0x%8.8X%8.8X]", ACPI_FORMAT_UINT64 (ObjDesc->Integer.Value)); break; case ACPI_TYPE_STRING: FlPrintFile (ASL_FILE_NAMESPACE_OUTPUT, " [Initial Value \"%s\"]", ObjDesc->String.Pointer); break; default: /* Nothing to do for other types */ break; } } else { switch (Node->Type) { case ACPI_TYPE_INTEGER: if (Op->Asl.ParseOpcode == PARSEOP_NAME) { Op = Op->Asl.Child; } if ((Op->Asl.ParseOpcode == PARSEOP_NAMESEG) || (Op->Asl.ParseOpcode == PARSEOP_NAMESTRING)) { Op = Op->Asl.Next; } FlPrintFile (ASL_FILE_NAMESPACE_OUTPUT, " [Initial Value 0x%8.8X%8.8X]", ACPI_FORMAT_UINT64 (Op->Asl.Value.Integer)); break; case ACPI_TYPE_STRING: if (Op->Asl.ParseOpcode == PARSEOP_NAME) { Op = Op->Asl.Child; } if ((Op->Asl.ParseOpcode == PARSEOP_NAMESEG) || (Op->Asl.ParseOpcode == PARSEOP_NAMESTRING)) { Op = Op->Asl.Next; } FlPrintFile (ASL_FILE_NAMESPACE_OUTPUT, " [Initial Value \"%s\"]", Op->Asl.Value.String); break; case ACPI_TYPE_LOCAL_REGION_FIELD: if ((Op->Asl.ParseOpcode == PARSEOP_NAMESEG) || (Op->Asl.ParseOpcode == PARSEOP_NAMESTRING)) { Op = Op->Asl.Child; } FlPrintFile (ASL_FILE_NAMESPACE_OUTPUT, " [Offset 0x%04X Length 0x%04X bits]", Op->Asl.Parent->Asl.ExtraValue, (UINT32) Op->Asl.Value.Integer); break; case ACPI_TYPE_BUFFER_FIELD: switch (Op->Asl.ParseOpcode) { case PARSEOP_CREATEBYTEFIELD: FlPrintFile (ASL_FILE_NAMESPACE_OUTPUT, " [BYTE ( 8 bit)]"); break; case PARSEOP_CREATEDWORDFIELD: FlPrintFile (ASL_FILE_NAMESPACE_OUTPUT, " [DWORD (32 bit)]"); break; case PARSEOP_CREATEQWORDFIELD: FlPrintFile (ASL_FILE_NAMESPACE_OUTPUT, " [QWORD (64 bit)]"); break; case PARSEOP_CREATEWORDFIELD: FlPrintFile (ASL_FILE_NAMESPACE_OUTPUT, " [WORD (16 bit)]"); break; case PARSEOP_CREATEBITFIELD: FlPrintFile (ASL_FILE_NAMESPACE_OUTPUT, " [BIT ( 1 bit)]"); break; case PARSEOP_CREATEFIELD: FlPrintFile (ASL_FILE_NAMESPACE_OUTPUT, " [Arbitrary Bit Field]"); break; default: break; } break; case ACPI_TYPE_PACKAGE: if (Op->Asl.ParseOpcode == PARSEOP_NAME) { Op = Op->Asl.Child; } if ((Op->Asl.ParseOpcode == PARSEOP_NAMESEG) || (Op->Asl.ParseOpcode == PARSEOP_NAMESTRING)) { Op = Op->Asl.Next; } Op = Op->Asl.Child; if ((Op->Asl.ParseOpcode == PARSEOP_BYTECONST) || (Op->Asl.ParseOpcode == PARSEOP_RAW_DATA)) { FlPrintFile (ASL_FILE_NAMESPACE_OUTPUT, " [Initial Length 0x%.2X elements]", Op->Asl.Value.Integer); } break; case ACPI_TYPE_BUFFER: if (Op->Asl.ParseOpcode == PARSEOP_NAME) { Op = Op->Asl.Child; } if ((Op->Asl.ParseOpcode == PARSEOP_NAMESEG) || (Op->Asl.ParseOpcode == PARSEOP_NAMESTRING)) { Op = Op->Asl.Next; } Op = Op->Asl.Child; if (Op && (Op->Asl.ParseOpcode == PARSEOP_INTEGER)) { FlPrintFile (ASL_FILE_NAMESPACE_OUTPUT, " [Initial Length 0x%.2X bytes]", Op->Asl.Value.Integer); } break; case ACPI_TYPE_METHOD: FlPrintFile (ASL_FILE_NAMESPACE_OUTPUT, " [Code Length 0x%.4X bytes]", Op->Asl.AmlSubtreeLength); break; case ACPI_TYPE_LOCAL_RESOURCE: FlPrintFile (ASL_FILE_NAMESPACE_OUTPUT, " [Desc Offset 0x%.4X Bytes]", Node->Value); break; case ACPI_TYPE_LOCAL_RESOURCE_FIELD: FlPrintFile (ASL_FILE_NAMESPACE_OUTPUT, " [Field Offset 0x%.4X Bits 0x%.4X Bytes] ", Node->Value, Node->Value / 8); if (Node->Flags & ANOBJ_IS_REFERENCED) { FlPrintFile (ASL_FILE_NAMESPACE_OUTPUT, "Referenced"); } else { FlPrintFile (ASL_FILE_NAMESPACE_OUTPUT, "Name not referenced"); } break; default: /* Nothing to do for other types */ break; } } FlPrintFile (ASL_FILE_NAMESPACE_OUTPUT, "\n"); return (AE_OK); } /******************************************************************************* * * FUNCTION: NsDoOnePathname * * PARAMETERS: ACPI_WALK_CALLBACK * * RETURN: Status * * DESCRIPTION: Print the full pathname for a namespace node. * ******************************************************************************/ static ACPI_STATUS NsDoOnePathname ( ACPI_HANDLE ObjHandle, UINT32 Level, void *Context, void **ReturnValue) { ACPI_NAMESPACE_NODE *Node = (ACPI_NAMESPACE_NODE *) ObjHandle; ACPI_STATUS Status; ACPI_BUFFER TargetPath; TargetPath.Length = ACPI_ALLOCATE_LOCAL_BUFFER; Status = AcpiNsHandleToPathname (Node, &TargetPath); if (ACPI_FAILURE (Status)) { return (Status); } FlPrintFile (ASL_FILE_NAMESPACE_OUTPUT, "%s\n", TargetPath.Pointer); ACPI_FREE (TargetPath.Pointer); return (AE_OK); } src/acpica/source/compiler/asloffset.c000066400000000000000000000461411231470457100203430ustar00rootroot00000000000000/****************************************************************************** * * Module Name: asloffset - Generate a C "offset table" for BIOS use. * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #include "aslcompiler.h" #include "aslcompiler.y.h" #include "amlcode.h" #include "acnamesp.h" #define _COMPONENT ACPI_COMPILER ACPI_MODULE_NAME ("asloffset") /* Local prototypes */ static void LsEmitOffsetTableEntry ( UINT32 FileId, ACPI_NAMESPACE_NODE *Node, UINT32 NamepathOffset, UINT32 Offset, char *OpName, UINT64 Value, UINT8 AmlOpcode, UINT16 ParentOpcode); /******************************************************************************* * * FUNCTION: LsAmlOffsetWalk * * PARAMETERS: ASL_WALK_CALLBACK * * RETURN: Status * * DESCRIPTION: Process one node during a offset table file generation. * * Three types of objects are currently emitted to the offset table: * 1) Tagged (named) resource descriptors * 2) Named integer objects with constant integer values * 3) Named package objects * 4) Operation Regions that have constant Offset (address) parameters * 5) Control methods * * The offset table allows the BIOS to dynamically update the values of these * objects at boot time. * ******************************************************************************/ ACPI_STATUS LsAmlOffsetWalk ( ACPI_PARSE_OBJECT *Op, UINT32 Level, void *Context) { UINT32 FileId = (UINT32) ACPI_TO_INTEGER (Context); ACPI_NAMESPACE_NODE *Node; UINT32 Length; UINT32 NamepathOffset; UINT32 DataOffset; ACPI_PARSE_OBJECT *NextOp; /* Ignore actual data blocks for resource descriptors */ if (Op->Asl.CompileFlags & NODE_IS_RESOURCE_DATA) { return (AE_OK); /* Do NOT update the global AML offset */ } /* We are only interested in named objects (have a namespace node) */ Node = Op->Asl.Node; if (!Node) { Gbl_CurrentAmlOffset += Op->Asl.FinalAmlLength; return (AE_OK); } /* Named resource descriptor (has a descriptor tag) */ if ((Node->Type == ACPI_TYPE_LOCAL_RESOURCE) && (Op->Asl.CompileFlags & NODE_IS_RESOURCE_DESC)) { LsEmitOffsetTableEntry (FileId, Node, 0, Gbl_CurrentAmlOffset, Op->Asl.ParseOpName, 0, Op->Asl.Extra, AML_BUFFER_OP); Gbl_CurrentAmlOffset += Op->Asl.FinalAmlLength; return (AE_OK); } switch (Op->Asl.AmlOpcode) { case AML_NAME_OP: /* Named object -- Name (NameString, DataRefObject) */ if (!Op->Asl.Child) { FlPrintFile (FileId, "%s NO CHILD!\n", MsgBuffer); return (AE_OK); } Length = Op->Asl.FinalAmlLength; NamepathOffset = Gbl_CurrentAmlOffset + Length; /* Get to the NameSeg/NamePath Op (and length of the name) */ Op = Op->Asl.Child; /* Get offset of last nameseg and the actual data */ NamepathOffset = Gbl_CurrentAmlOffset + Length + (Op->Asl.FinalAmlLength - ACPI_NAME_SIZE); DataOffset = Gbl_CurrentAmlOffset + Length + Op->Asl.FinalAmlLength; /* Get actual value associated with the name */ Op = Op->Asl.Next; switch (Op->Asl.AmlOpcode) { case AML_BYTE_OP: case AML_WORD_OP: case AML_DWORD_OP: case AML_QWORD_OP: /* The +1 is to handle the integer size prefix (opcode) */ LsEmitOffsetTableEntry (FileId, Node, NamepathOffset, (DataOffset + 1), Op->Asl.ParseOpName, Op->Asl.Value.Integer, (UINT8) Op->Asl.AmlOpcode, AML_NAME_OP); break; case AML_ONE_OP: case AML_ONES_OP: case AML_ZERO_OP: /* For these, offset will point to the opcode */ LsEmitOffsetTableEntry (FileId, Node, NamepathOffset, DataOffset, Op->Asl.ParseOpName, Op->Asl.Value.Integer, (UINT8) Op->Asl.AmlOpcode, AML_NAME_OP); break; case AML_PACKAGE_OP: case AML_VAR_PACKAGE_OP: /* Get the package element count */ NextOp = Op->Asl.Child; LsEmitOffsetTableEntry (FileId, Node, NamepathOffset, DataOffset, Op->Asl.ParseOpName, NextOp->Asl.Value.Integer, (UINT8) Op->Asl.AmlOpcode, AML_NAME_OP); break; default: break; } Gbl_CurrentAmlOffset += Length; return (AE_OK); case AML_REGION_OP: /* OperationRegion (NameString, RegionSpace, RegionOffset, RegionLength) */ Length = Op->Asl.FinalAmlLength; /* Get the name/namepath node */ NextOp = Op->Asl.Child; /* Get offset of last nameseg and the actual data */ NamepathOffset = Gbl_CurrentAmlOffset + Length + (NextOp->Asl.FinalAmlLength - ACPI_NAME_SIZE); DataOffset = Gbl_CurrentAmlOffset + Length + (NextOp->Asl.FinalAmlLength + 1); /* Get the SpaceId node, then the Offset (address) node */ NextOp = NextOp->Asl.Next; NextOp = NextOp->Asl.Next; switch (NextOp->Asl.AmlOpcode) { /* * We are only interested in integer constants that can be changed * at boot time. Note, the One/Ones/Zero opcodes are considered * non-changeable, so we ignore them here. */ case AML_BYTE_OP: case AML_WORD_OP: case AML_DWORD_OP: case AML_QWORD_OP: LsEmitOffsetTableEntry (FileId, Node, NamepathOffset, (DataOffset + 1), Op->Asl.ParseOpName, NextOp->Asl.Value.Integer, (UINT8) NextOp->Asl.AmlOpcode, AML_REGION_OP); Gbl_CurrentAmlOffset += Length; return (AE_OK); default: break; } break; case AML_METHOD_OP: /* Method (Namepath, ...) */ Length = Op->Asl.FinalAmlLength; /* Get the NameSeg/NamePath Op */ NextOp = Op->Asl.Child; /* Get offset of last nameseg and the actual data (flags byte) */ NamepathOffset = Gbl_CurrentAmlOffset + Length + (NextOp->Asl.FinalAmlLength - ACPI_NAME_SIZE); DataOffset = Gbl_CurrentAmlOffset + Length + NextOp->Asl.FinalAmlLength; /* Get the flags byte Op */ NextOp = NextOp->Asl.Next; LsEmitOffsetTableEntry (FileId, Node, NamepathOffset, DataOffset, Op->Asl.ParseOpName, NextOp->Asl.Value.Integer, (UINT8) Op->Asl.AmlOpcode, AML_METHOD_OP); break; case AML_PROCESSOR_OP: /* Processor (Namepath, ProcessorId, Address, Length) */ Length = Op->Asl.FinalAmlLength; NextOp = Op->Asl.Child; /* Get Namepath */ /* Get offset of last nameseg and the actual data (PBlock address) */ NamepathOffset = Gbl_CurrentAmlOffset + Length + (NextOp->Asl.FinalAmlLength - ACPI_NAME_SIZE); DataOffset = Gbl_CurrentAmlOffset + Length + (NextOp->Asl.FinalAmlLength + 1); NextOp = NextOp->Asl.Next; /* Get ProcessorID (BYTE) */ NextOp = NextOp->Asl.Next; /* Get Address (DWORD) */ LsEmitOffsetTableEntry (FileId, Node, NamepathOffset, DataOffset, Op->Asl.ParseOpName, NextOp->Asl.Value.Integer, (UINT8) AML_DWORD_OP, AML_PROCESSOR_OP); break; case AML_DEVICE_OP: case AML_SCOPE_OP: case AML_THERMAL_ZONE_OP: /* Device/Scope/ThermalZone (Namepath) */ Length = Op->Asl.FinalAmlLength; NextOp = Op->Asl.Child; /* Get Namepath */ /* Get offset of last nameseg */ NamepathOffset = Gbl_CurrentAmlOffset + Length + (NextOp->Asl.FinalAmlLength - ACPI_NAME_SIZE); LsEmitOffsetTableEntry (FileId, Node, NamepathOffset, 0, Op->Asl.ParseOpName, 0, (UINT8) 0, Op->Asl.AmlOpcode); break; default: break; } Gbl_CurrentAmlOffset += Op->Asl.FinalAmlLength; return (AE_OK); } /******************************************************************************* * * FUNCTION: LsEmitOffsetTableEntry * * PARAMETERS: FileId - ID of current listing file * Node - Namespace node associated with the name * Offset - Offset of the value within the AML table * OpName - Name of the AML opcode * Value - Current value of the AML field * AmlOpcode - Opcode associated with the field * ObjectType - ACPI object type * * RETURN: None * * DESCRIPTION: Emit a line of the offset table (-so option) * ******************************************************************************/ static void LsEmitOffsetTableEntry ( UINT32 FileId, ACPI_NAMESPACE_NODE *Node, UINT32 NamepathOffset, UINT32 Offset, char *OpName, UINT64 Value, UINT8 AmlOpcode, UINT16 ParentOpcode) { ACPI_BUFFER TargetPath; ACPI_STATUS Status; /* Get the full pathname to the namespace node */ TargetPath.Length = ACPI_ALLOCATE_LOCAL_BUFFER; Status = AcpiNsHandleToPathname (Node, &TargetPath); if (ACPI_FAILURE (Status)) { return; } /* [1] - Skip the opening backslash for the path */ strcpy (MsgBuffer, "\""); strcat (MsgBuffer, &((char *) TargetPath.Pointer)[1]); strcat (MsgBuffer, "\","); ACPI_FREE (TargetPath.Pointer); /* * Max offset is 4G, constrained by 32-bit ACPI table length. * Max Length for Integers is 8 bytes. */ FlPrintFile (FileId, " {%-29s 0x%4.4X, 0x%8.8X, 0x%2.2X, 0x%8.8X, 0x%8.8X%8.8X}, /* %s */\n", MsgBuffer, ParentOpcode, NamepathOffset, AmlOpcode, Offset, ACPI_FORMAT_UINT64 (Value), OpName); } /******************************************************************************* * * FUNCTION: LsDoOffsetTableHeader, LsDoOffsetTableFooter * * PARAMETERS: FileId - ID of current listing file * * RETURN: None * * DESCRIPTION: Header and footer for the offset table file. * ******************************************************************************/ void LsDoOffsetTableHeader ( UINT32 FileId) { FlPrintFile (FileId, "#ifndef __AML_OFFSET_TABLE_H\n" "#define __AML_OFFSET_TABLE_H\n\n"); FlPrintFile (FileId, "typedef struct {\n" " char *Pathname; /* Full pathname (from root) to the object */\n" " unsigned short ParentOpcode; /* AML opcode for the parent object */\n" " unsigned long NamesegOffset; /* Offset of last nameseg in the parent namepath */\n" " unsigned char Opcode; /* AML opcode for the data */\n" " unsigned long Offset; /* Offset for the data */\n" " unsigned long long Value; /* Original value of the data (as applicable) */\n" "} AML_OFFSET_TABLE_ENTRY;\n\n"); FlPrintFile (FileId, "#endif /* __AML_OFFSET_TABLE_H */\n\n"); FlPrintFile (FileId, "/*\n" " * Information specific to the supported object types:\n" " *\n" " * Integers:\n" " * Opcode is the integer prefix, indicates length of the data\n" " * (One of: BYTE, WORD, DWORD, QWORD, ZERO, ONE, ONES)\n" " * Offset points to the actual integer data\n" " * Value is the existing value in the AML\n" " *\n" " * Packages:\n" " * Opcode is the package or var_package opcode\n" " * Offset points to the package opcode\n" " * Value is the package element count\n" " *\n" " * Operation Regions:\n" " * Opcode is the address integer prefix, indicates length of the data\n" " * Offset points to the region address\n" " * Value is the existing address value in the AML\n" " *\n" " * Control Methods:\n" " * Offset points to the method flags byte\n" " * Value is the existing flags value in the AML\n" " *\n" " * Processors:\n" " * Offset points to the first byte of the PBlock Address\n" " *\n" " * Resource Descriptors:\n" " * Opcode is the descriptor type\n" " * Offset points to the start of the descriptor\n" " *\n" " * Scopes/Devices/ThermalZones:\n" " * Nameseg offset only\n" " */\n"); FlPrintFile (FileId, "AML_OFFSET_TABLE_ENTRY %s_%s_OffsetTable[] =\n{\n", Gbl_TableSignature, Gbl_TableId); } void LsDoOffsetTableFooter ( UINT32 FileId) { FlPrintFile (FileId, " {NULL,0,0,0,0,0} /* Table terminator */\n};\n\n"); Gbl_CurrentAmlOffset = 0; } src/acpica/source/compiler/aslopcodes.c000066400000000000000000000645131231470457100205140ustar00rootroot00000000000000/****************************************************************************** * * Module Name: aslopcode - AML opcode generation * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #include "aslcompiler.h" #include "aslcompiler.y.h" #include "amlcode.h" #define _COMPONENT ACPI_COMPILER ACPI_MODULE_NAME ("aslopcodes") /* Local prototypes */ static void OpcDoAccessAs ( ACPI_PARSE_OBJECT *Op); static void OpcDoConnection ( ACPI_PARSE_OBJECT *Op); static void OpcDoUnicode ( ACPI_PARSE_OBJECT *Op); static void OpcDoEisaId ( ACPI_PARSE_OBJECT *Op); static void OpcDoUuId ( ACPI_PARSE_OBJECT *Op); /******************************************************************************* * * FUNCTION: OpcAmlOpcodeUpdateWalk * * PARAMETERS: ASL_WALK_CALLBACK * * RETURN: Status * * DESCRIPTION: Opcode update walk, ascending callback * ******************************************************************************/ ACPI_STATUS OpcAmlOpcodeUpdateWalk ( ACPI_PARSE_OBJECT *Op, UINT32 Level, void *Context) { /* * Handle the Package() case where the actual opcode cannot be determined * until the PackageLength operand has been folded and minimized. * (PackageOp versus VarPackageOp) * * This is (as of ACPI 3.0) the only case where the AML opcode can change * based upon the value of a parameter. * * The parser always inserts a VarPackage opcode, which can possibly be * optimized to a Package opcode. */ if (Op->Asl.ParseOpcode == PARSEOP_VAR_PACKAGE) { OpnDoPackage (Op); } return (AE_OK); } /******************************************************************************* * * FUNCTION: OpcAmlOpcodeWalk * * PARAMETERS: ASL_WALK_CALLBACK * * RETURN: Status * * DESCRIPTION: Parse tree walk to generate both the AML opcodes and the AML * operands. * ******************************************************************************/ ACPI_STATUS OpcAmlOpcodeWalk ( ACPI_PARSE_OBJECT *Op, UINT32 Level, void *Context) { TotalParseNodes++; OpcGenerateAmlOpcode (Op); OpnGenerateAmlOperands (Op); return (AE_OK); } /******************************************************************************* * * FUNCTION: OpcGetIntegerWidth * * PARAMETERS: Op - DEFINITION BLOCK op * * RETURN: none * * DESCRIPTION: Extract integer width from the table revision * ******************************************************************************/ void OpcGetIntegerWidth ( ACPI_PARSE_OBJECT *Op) { ACPI_PARSE_OBJECT *Child; if (!Op) { return; } if (Gbl_RevisionOverride) { AcpiUtSetIntegerWidth (Gbl_RevisionOverride); } else { Child = Op->Asl.Child; Child = Child->Asl.Next; Child = Child->Asl.Next; /* Use the revision to set the integer width */ AcpiUtSetIntegerWidth ((UINT8) Child->Asl.Value.Integer); } } /******************************************************************************* * * FUNCTION: OpcSetOptimalIntegerSize * * PARAMETERS: Op - A parse tree node * * RETURN: Integer width, in bytes. Also sets the node AML opcode to the * optimal integer AML prefix opcode. * * DESCRIPTION: Determine the optimal AML encoding of an integer. All leading * zeros can be truncated to squeeze the integer into the * minimal number of AML bytes. * ******************************************************************************/ UINT32 OpcSetOptimalIntegerSize ( ACPI_PARSE_OBJECT *Op) { #if 0 /* * TBD: - we don't want to optimize integers in the block header, but the * code below does not work correctly. */ if (Op->Asl.Parent && Op->Asl.Parent->Asl.Parent && (Op->Asl.Parent->Asl.Parent->Asl.ParseOpcode == PARSEOP_DEFINITIONBLOCK)) { return (0); } #endif /* * Check for the special AML integers first - Zero, One, Ones. * These are single-byte opcodes that are the smallest possible * representation of an integer. * * This optimization is optional. */ if (Gbl_IntegerOptimizationFlag) { switch (Op->Asl.Value.Integer) { case 0: Op->Asl.AmlOpcode = AML_ZERO_OP; AslError (ASL_OPTIMIZATION, ASL_MSG_INTEGER_OPTIMIZATION, Op, "Zero"); return (1); case 1: Op->Asl.AmlOpcode = AML_ONE_OP; AslError (ASL_OPTIMIZATION, ASL_MSG_INTEGER_OPTIMIZATION, Op, "One"); return (1); case ACPI_UINT32_MAX: /* Check for table integer width (32 or 64) */ if (AcpiGbl_IntegerByteWidth == 4) { Op->Asl.AmlOpcode = AML_ONES_OP; AslError (ASL_OPTIMIZATION, ASL_MSG_INTEGER_OPTIMIZATION, Op, "Ones"); return (1); } break; case ACPI_UINT64_MAX: /* Check for table integer width (32 or 64) */ if (AcpiGbl_IntegerByteWidth == 8) { Op->Asl.AmlOpcode = AML_ONES_OP; AslError (ASL_OPTIMIZATION, ASL_MSG_INTEGER_OPTIMIZATION, Op, "Ones"); return (1); } break; default: break; } } /* Find the best fit using the various AML integer prefixes */ if (Op->Asl.Value.Integer <= ACPI_UINT8_MAX) { Op->Asl.AmlOpcode = AML_BYTE_OP; return (1); } if (Op->Asl.Value.Integer <= ACPI_UINT16_MAX) { Op->Asl.AmlOpcode = AML_WORD_OP; return (2); } if (Op->Asl.Value.Integer <= ACPI_UINT32_MAX) { Op->Asl.AmlOpcode = AML_DWORD_OP; return (4); } else { if (AcpiGbl_IntegerByteWidth == 4) { AslError (ASL_WARNING, ASL_MSG_INTEGER_LENGTH, Op, NULL); if (!Gbl_IgnoreErrors) { /* Truncate the integer to 32-bit */ Op->Asl.AmlOpcode = AML_DWORD_OP; return (4); } } Op->Asl.AmlOpcode = AML_QWORD_OP; return (8); } } /******************************************************************************* * * FUNCTION: OpcDoAccessAs * * PARAMETERS: Op - Parse node * * RETURN: None * * DESCRIPTION: Implement the ACCESS_AS ASL keyword. * ******************************************************************************/ static void OpcDoAccessAs ( ACPI_PARSE_OBJECT *Op) { ACPI_PARSE_OBJECT *TypeOp; ACPI_PARSE_OBJECT *AttribOp; ACPI_PARSE_OBJECT *LengthOp; UINT8 Attribute; Op->Asl.AmlOpcodeLength = 1; TypeOp = Op->Asl.Child; /* First child is the access type */ TypeOp->Asl.AmlOpcode = AML_RAW_DATA_BYTE; TypeOp->Asl.ParseOpcode = PARSEOP_RAW_DATA; /* Second child is the optional access attribute */ AttribOp = TypeOp->Asl.Next; if (AttribOp->Asl.ParseOpcode == PARSEOP_DEFAULT_ARG) { AttribOp->Asl.Value.Integer = 0; } AttribOp->Asl.AmlOpcode = AML_RAW_DATA_BYTE; AttribOp->Asl.ParseOpcode = PARSEOP_RAW_DATA; /* Only a few AccessAttributes support AccessLength */ Attribute = (UINT8) AttribOp->Asl.Value.Integer; if ((Attribute != AML_FIELD_ATTRIB_MULTIBYTE) && (Attribute != AML_FIELD_ATTRIB_RAW_BYTES) && (Attribute != AML_FIELD_ATTRIB_RAW_PROCESS)) { return; } Op->Asl.AmlOpcode = AML_FIELD_EXT_ACCESS_OP; /* * Child of Attributes is the AccessLength (required for Multibyte, * RawBytes, RawProcess.) */ LengthOp = AttribOp->Asl.Child; if (!LengthOp) { return; } /* TBD: probably can remove */ if (LengthOp->Asl.ParseOpcode == PARSEOP_DEFAULT_ARG) { LengthOp->Asl.Value.Integer = 16; } LengthOp->Asl.AmlOpcode = AML_RAW_DATA_BYTE; LengthOp->Asl.ParseOpcode = PARSEOP_RAW_DATA; } /******************************************************************************* * * FUNCTION: OpcDoConnection * * PARAMETERS: Op - Parse node * * RETURN: None * * DESCRIPTION: Implement the Connection ASL keyword. * ******************************************************************************/ static void OpcDoConnection ( ACPI_PARSE_OBJECT *Op) { ASL_RESOURCE_NODE *Rnode; ACPI_PARSE_OBJECT *BufferOp; ACPI_PARSE_OBJECT *BufferLengthOp; ACPI_PARSE_OBJECT *BufferDataOp; UINT8 State; Op->Asl.AmlOpcodeLength = 1; if (Op->Asl.Child->Asl.AmlOpcode == AML_INT_NAMEPATH_OP) { return; } BufferOp = Op->Asl.Child; BufferLengthOp = BufferOp->Asl.Child; BufferDataOp = BufferLengthOp->Asl.Next; State = ACPI_RSTATE_NORMAL; Rnode = RsDoOneResourceDescriptor (BufferDataOp->Asl.Next, 0, &State); if (!Rnode) { return; /* error */ } /* * Transform the nodes into the following * * Op -> AML_BUFFER_OP * First Child -> BufferLength * Second Child -> Descriptor Buffer (raw byte data) */ BufferOp->Asl.ParseOpcode = PARSEOP_BUFFER; BufferOp->Asl.AmlOpcode = AML_BUFFER_OP; BufferOp->Asl.CompileFlags = NODE_AML_PACKAGE | NODE_IS_RESOURCE_DESC; UtSetParseOpName (BufferOp); BufferLengthOp->Asl.ParseOpcode = PARSEOP_INTEGER; BufferLengthOp->Asl.Value.Integer = Rnode->BufferLength; (void) OpcSetOptimalIntegerSize (BufferLengthOp); UtSetParseOpName (BufferLengthOp); BufferDataOp->Asl.ParseOpcode = PARSEOP_RAW_DATA; BufferDataOp->Asl.AmlOpcode = AML_RAW_DATA_CHAIN; BufferDataOp->Asl.AmlOpcodeLength = 0; BufferDataOp->Asl.AmlLength = Rnode->BufferLength; BufferDataOp->Asl.Value.Buffer = (UINT8 *) Rnode; UtSetParseOpName (BufferDataOp); } /******************************************************************************* * * FUNCTION: OpcDoUnicode * * PARAMETERS: Op - Parse node * * RETURN: None * * DESCRIPTION: Implement the UNICODE ASL "macro". Convert the input string * to a unicode buffer. There is no Unicode AML opcode. * * Note: The Unicode string is 16 bits per character, no leading signature, * with a 16-bit terminating NULL. * ******************************************************************************/ static void OpcDoUnicode ( ACPI_PARSE_OBJECT *Op) { ACPI_PARSE_OBJECT *InitializerOp; UINT32 Length; UINT32 Count; UINT32 i; UINT8 *AsciiString; UINT16 *UnicodeString; ACPI_PARSE_OBJECT *BufferLengthOp; /* Change op into a buffer object */ Op->Asl.CompileFlags &= ~NODE_COMPILE_TIME_CONST; Op->Asl.ParseOpcode = PARSEOP_BUFFER; UtSetParseOpName (Op); /* Buffer Length is first, followed by the string */ BufferLengthOp = Op->Asl.Child; InitializerOp = BufferLengthOp->Asl.Next; AsciiString = (UINT8 *) InitializerOp->Asl.Value.String; /* Create a new buffer for the Unicode string */ Count = strlen (InitializerOp->Asl.Value.String) + 1; Length = Count * sizeof (UINT16); UnicodeString = UtLocalCalloc (Length); /* Convert to Unicode string (including null terminator) */ for (i = 0; i < Count; i++) { UnicodeString[i] = (UINT16) AsciiString[i]; } /* * Just set the buffer size node to be the buffer length, regardless * of whether it was previously an integer or a default_arg placeholder */ BufferLengthOp->Asl.ParseOpcode = PARSEOP_INTEGER; BufferLengthOp->Asl.AmlOpcode = AML_DWORD_OP; BufferLengthOp->Asl.Value.Integer = Length; UtSetParseOpName (BufferLengthOp); (void) OpcSetOptimalIntegerSize (BufferLengthOp); /* The Unicode string is a raw data buffer */ InitializerOp->Asl.Value.Buffer = (UINT8 *) UnicodeString; InitializerOp->Asl.AmlOpcode = AML_RAW_DATA_BUFFER; InitializerOp->Asl.AmlLength = Length; InitializerOp->Asl.ParseOpcode = PARSEOP_RAW_DATA; InitializerOp->Asl.Child = NULL; UtSetParseOpName (InitializerOp); } /******************************************************************************* * * FUNCTION: OpcDoEisaId * * PARAMETERS: Op - Parse node * * RETURN: None * * DESCRIPTION: Convert a string EISA ID to numeric representation. See the * Pnp BIOS Specification for details. Here is an excerpt: * * A seven character ASCII representation of the product * identifier compressed into a 32-bit identifier. The seven * character ID consists of a three character manufacturer code, * a three character hexadecimal product identifier, and a one * character hexadecimal revision number. The manufacturer code * is a 3 uppercase character code that is compressed into 3 5-bit * values as follows: * 1) Find hex ASCII value for each letter * 2) Subtract 40h from each ASCII value * 3) Retain 5 least significant bits for each letter by * discarding upper 3 bits because they are always 0. * 4) Compressed code = concatenate 0 and the 3 5-bit values * * The format of the compressed product identifier is as follows: * Byte 0: Bit 7 - Reserved (0) * Bits 6-2: - 1st character of compressed mfg code * Bits 1-0 - Upper 2 bits of 2nd character of mfg code * Byte 1: Bits 7-5 - Lower 3 bits of 2nd character of mfg code * Bits 4-0 - 3rd character of mfg code * Byte 2: Bits 7-4 - 1st hex digit of product number * Bits 3-0 - 2nd hex digit of product number * Byte 3: Bits 7-4 - 3st hex digit of product number * Bits 3-0 - Hex digit of the revision number * ******************************************************************************/ static void OpcDoEisaId ( ACPI_PARSE_OBJECT *Op) { UINT32 EisaId = 0; UINT32 BigEndianId; char *InString; ACPI_STATUS Status = AE_OK; UINT32 i; InString = (char *) Op->Asl.Value.String; /* * The EISAID string must be exactly 7 characters and of the form * "UUUXXXX" -- 3 uppercase letters and 4 hex digits (e.g., "PNP0001") */ if (ACPI_STRLEN (InString) != 7) { Status = AE_BAD_PARAMETER; } else { /* Check all 7 characters for correct format */ for (i = 0; i < 7; i++) { /* First 3 characters must be uppercase letters */ if (i < 3) { if (!isupper ((int) InString[i])) { Status = AE_BAD_PARAMETER; } } /* Last 4 characters must be hex digits */ else if (!isxdigit ((int) InString[i])) { Status = AE_BAD_PARAMETER; } } } if (ACPI_FAILURE (Status)) { AslError (ASL_ERROR, ASL_MSG_INVALID_EISAID, Op, Op->Asl.Value.String); } else { /* Create ID big-endian first (bits are contiguous) */ BigEndianId = (UINT32) ((UINT8) (InString[0] - 0x40)) << 26 | (UINT32) ((UINT8) (InString[1] - 0x40)) << 21 | (UINT32) ((UINT8) (InString[2] - 0x40)) << 16 | (UtHexCharToValue (InString[3])) << 12 | (UtHexCharToValue (InString[4])) << 8 | (UtHexCharToValue (InString[5])) << 4 | UtHexCharToValue (InString[6]); /* Swap to little-endian to get final ID (see function header) */ EisaId = AcpiUtDwordByteSwap (BigEndianId); } /* * Morph the Op into an integer, regardless of whether there * was an error in the EISAID string */ Op->Asl.Value.Integer = EisaId; Op->Asl.CompileFlags &= ~NODE_COMPILE_TIME_CONST; Op->Asl.ParseOpcode = PARSEOP_INTEGER; (void) OpcSetOptimalIntegerSize (Op); /* Op is now an integer */ UtSetParseOpName (Op); } /******************************************************************************* * * FUNCTION: OpcDoUuId * * PARAMETERS: Op - Parse node * * RETURN: None * * DESCRIPTION: Convert UUID string to 16-byte buffer * ******************************************************************************/ static void OpcDoUuId ( ACPI_PARSE_OBJECT *Op) { char *InString; char *Buffer; ACPI_STATUS Status = AE_OK; ACPI_PARSE_OBJECT *NewOp; InString = (char *) Op->Asl.Value.String; Buffer = UtLocalCalloc (16); Status = AuValidateUuid (InString); if (ACPI_FAILURE (Status)) { AslError (ASL_ERROR, ASL_MSG_INVALID_UUID, Op, Op->Asl.Value.String); } else { (void) AuConvertStringToUuid (InString, Buffer); } /* Change Op to a Buffer */ Op->Asl.ParseOpcode = PARSEOP_BUFFER; Op->Common.AmlOpcode = AML_BUFFER_OP; /* Disable further optimization */ Op->Asl.CompileFlags &= ~NODE_COMPILE_TIME_CONST; UtSetParseOpName (Op); /* Child node is the buffer length */ NewOp = TrAllocateNode (PARSEOP_INTEGER); NewOp->Asl.AmlOpcode = AML_BYTE_OP; NewOp->Asl.Value.Integer = 16; NewOp->Asl.Parent = Op; Op->Asl.Child = NewOp; Op = NewOp; /* Peer to the child is the raw buffer data */ NewOp = TrAllocateNode (PARSEOP_RAW_DATA); NewOp->Asl.AmlOpcode = AML_RAW_DATA_BUFFER; NewOp->Asl.AmlLength = 16; NewOp->Asl.Value.String = (char *) Buffer; NewOp->Asl.Parent = Op->Asl.Parent; Op->Asl.Next = NewOp; } /******************************************************************************* * * FUNCTION: OpcGenerateAmlOpcode * * PARAMETERS: Op - Parse node * * RETURN: None * * DESCRIPTION: Generate the AML opcode associated with the node and its * parse (lex/flex) keyword opcode. Essentially implements * a mapping between the parse opcodes and the actual AML opcodes. * ******************************************************************************/ void OpcGenerateAmlOpcode ( ACPI_PARSE_OBJECT *Op) { UINT16 Index; Index = (UINT16) (Op->Asl.ParseOpcode - ASL_PARSE_OPCODE_BASE); Op->Asl.AmlOpcode = AslKeywordMapping[Index].AmlOpcode; Op->Asl.AcpiBtype = AslKeywordMapping[Index].AcpiBtype; Op->Asl.CompileFlags |= AslKeywordMapping[Index].Flags; if (!Op->Asl.Value.Integer) { Op->Asl.Value.Integer = AslKeywordMapping[Index].Value; } /* Special handling for some opcodes */ switch (Op->Asl.ParseOpcode) { case PARSEOP_INTEGER: /* * Set the opcode based on the size of the integer */ (void) OpcSetOptimalIntegerSize (Op); break; case PARSEOP_OFFSET: Op->Asl.AmlOpcodeLength = 1; break; case PARSEOP_ACCESSAS: OpcDoAccessAs (Op); break; case PARSEOP_CONNECTION: OpcDoConnection (Op); break; case PARSEOP_EISAID: OpcDoEisaId (Op); break; case PARSEOP_TOUUID: OpcDoUuId (Op); break; case PARSEOP_UNICODE: OpcDoUnicode (Op); break; case PARSEOP_INCLUDE: Op->Asl.Child->Asl.ParseOpcode = PARSEOP_DEFAULT_ARG; Gbl_HasIncludeFiles = TRUE; break; case PARSEOP_EXTERNAL: Op->Asl.Child->Asl.ParseOpcode = PARSEOP_DEFAULT_ARG; Op->Asl.Child->Asl.Next->Asl.ParseOpcode = PARSEOP_DEFAULT_ARG; break; case PARSEOP_TIMER: if (AcpiGbl_IntegerBitWidth == 32) { AslError (ASL_REMARK, ASL_MSG_TRUNCATION, Op, NULL); } break; default: /* Nothing to do for other opcodes */ break; } return; } src/acpica/source/compiler/asloperands.c000066400000000000000000001062421231470457100206670ustar00rootroot00000000000000/****************************************************************************** * * Module Name: asloperands - AML operand processing * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #include "aslcompiler.h" #include "aslcompiler.y.h" #include "amlcode.h" #define _COMPONENT ACPI_COMPILER ACPI_MODULE_NAME ("asloperands") /* Local prototypes */ static void OpnDoField ( ACPI_PARSE_OBJECT *Op); static void OpnDoBankField ( ACPI_PARSE_OBJECT *Op); static void OpnDoBuffer ( ACPI_PARSE_OBJECT *Op); static void OpnDoDefinitionBlock ( ACPI_PARSE_OBJECT *Op); static void OpnDoFieldCommon ( ACPI_PARSE_OBJECT *FieldOp, ACPI_PARSE_OBJECT *Op); static void OpnDoIndexField ( ACPI_PARSE_OBJECT *Op); static void OpnDoLoadTable ( ACPI_PARSE_OBJECT *Op); static void OpnDoMethod ( ACPI_PARSE_OBJECT *Op); static void OpnDoMutex ( ACPI_PARSE_OBJECT *Op); static void OpnDoRegion ( ACPI_PARSE_OBJECT *Op); static void OpnAttachNameToNode ( ACPI_PARSE_OBJECT *Op); /******************************************************************************* * * FUNCTION: OpnDoMutex * * PARAMETERS: Op - The parent parse node * * RETURN: None * * DESCRIPTION: Construct the operands for the MUTEX ASL keyword. * ******************************************************************************/ static void OpnDoMutex ( ACPI_PARSE_OBJECT *Op) { ACPI_PARSE_OBJECT *Next; Next = Op->Asl.Child; Next = Next->Asl.Next; if (Next->Asl.Value.Integer > 15) { AslError (ASL_ERROR, ASL_MSG_SYNC_LEVEL, Next, NULL); } return; } /******************************************************************************* * * FUNCTION: OpnDoMethod * * PARAMETERS: Op - The parent parse node * * RETURN: None * * DESCRIPTION: Construct the operands for the METHOD ASL keyword. * ******************************************************************************/ static void OpnDoMethod ( ACPI_PARSE_OBJECT *Op) { ACPI_PARSE_OBJECT *Next; /* Optional arguments for this opcode with defaults */ UINT8 NumArgs = 0; UINT8 Serialized = 0; UINT8 Concurrency = 0; UINT8 MethodFlags; /* Opcode and package length first */ /* Method name */ Next = Op->Asl.Child; /* Num args */ Next = Next->Asl.Next; if (Next->Asl.ParseOpcode != PARSEOP_DEFAULT_ARG) { NumArgs = (UINT8) Next->Asl.Value.Integer; Next->Asl.ParseOpcode = PARSEOP_DEFAULT_ARG; } /* Serialized Flag */ Next = Next->Asl.Next; if (Next->Asl.ParseOpcode != PARSEOP_DEFAULT_ARG) { Serialized = (UINT8) Next->Asl.Value.Integer; Next->Asl.ParseOpcode = PARSEOP_DEFAULT_ARG; } /* Concurrency value (valid values are 0-15) */ Next = Next->Asl.Next; if (Next->Asl.ParseOpcode != PARSEOP_DEFAULT_ARG) { /* This is a ByteConstExpr, so eval the constant now */ OpcAmlConstantWalk (Next, 0, NULL); if (Next->Asl.Value.Integer > 15) { AslError (ASL_ERROR, ASL_MSG_SYNC_LEVEL, Next, NULL); } Concurrency = (UINT8) Next->Asl.Value.Integer; } /* Put the bits in their proper places */ MethodFlags = (UINT8) ((NumArgs & 0x7) | ((Serialized & 0x1) << 3) | ((Concurrency & 0xF) << 4)); /* Use the last node for the combined flags byte */ Next->Asl.Value.Integer = MethodFlags; Next->Asl.AmlOpcode = AML_RAW_DATA_BYTE; Next->Asl.AmlLength = 1; Next->Asl.ParseOpcode = PARSEOP_RAW_DATA; /* Save the arg count in the first node */ Op->Asl.Extra = NumArgs; } /******************************************************************************* * * FUNCTION: OpnDoFieldCommon * * PARAMETERS: FieldOp - Node for an ASL field * Op - The parent parse node * * RETURN: None * * DESCRIPTION: Construct the AML operands for the various field keywords, * FIELD, BANKFIELD, INDEXFIELD * ******************************************************************************/ static void OpnDoFieldCommon ( ACPI_PARSE_OBJECT *FieldOp, ACPI_PARSE_OBJECT *Op) { ACPI_PARSE_OBJECT *Next; ACPI_PARSE_OBJECT *PkgLengthNode; UINT32 CurrentBitOffset; UINT32 NewBitOffset; UINT8 AccessType; UINT8 LockRule; UINT8 UpdateRule; UINT8 FieldFlags; UINT32 MinimumLength; /* AccessType -- not optional, so no need to check for DEFAULT_ARG */ AccessType = (UINT8) Op->Asl.Value.Integer; Op->Asl.ParseOpcode = PARSEOP_DEFAULT_ARG; /* Set the access type in the parent (field) node for use later */ FieldOp->Asl.Value.Integer = AccessType; /* LockRule -- not optional, so no need to check for DEFAULT_ARG */ Next = Op->Asl.Next; LockRule = (UINT8) Next->Asl.Value.Integer; Next->Asl.ParseOpcode = PARSEOP_DEFAULT_ARG; /* UpdateRule -- not optional, so no need to check for DEFAULT_ARG */ Next = Next->Asl.Next; UpdateRule = (UINT8) Next->Asl.Value.Integer; /* * Generate the flags byte. The various fields are already * in the right bit position via translation from the * keywords by the parser. */ FieldFlags = (UINT8) (AccessType | LockRule | UpdateRule); /* Use the previous node to be the FieldFlags node */ /* Set the node to RAW_DATA */ Next->Asl.Value.Integer = FieldFlags; Next->Asl.AmlOpcode = AML_RAW_DATA_BYTE; Next->Asl.AmlLength = 1; Next->Asl.ParseOpcode = PARSEOP_RAW_DATA; /* Process the FieldUnitList */ Next = Next->Asl.Next; CurrentBitOffset = 0; while (Next) { /* Save the offset of this field unit */ Next->Asl.ExtraValue = CurrentBitOffset; switch (Next->Asl.ParseOpcode) { case PARSEOP_ACCESSAS: PkgLengthNode = Next->Asl.Child; AccessType = (UINT8) PkgLengthNode->Asl.Value.Integer; /* Nothing additional to do */ break; case PARSEOP_OFFSET: /* New offset into the field */ PkgLengthNode = Next->Asl.Child; NewBitOffset = ((UINT32) PkgLengthNode->Asl.Value.Integer) * 8; /* * Examine the specified offset in relation to the * current offset counter. */ if (NewBitOffset < CurrentBitOffset) { /* * Not allowed to specify a backwards offset! * Issue error and ignore this node. */ AslError (ASL_ERROR, ASL_MSG_BACKWARDS_OFFSET, PkgLengthNode, NULL); Next->Asl.ParseOpcode = PARSEOP_DEFAULT_ARG; PkgLengthNode->Asl.ParseOpcode = PARSEOP_DEFAULT_ARG; } else if (NewBitOffset == CurrentBitOffset) { /* * Offset is redundant; we don't need to output an * offset opcode. Just set these nodes to default */ Next->Asl.ParseOpcode = PARSEOP_DEFAULT_ARG; PkgLengthNode->Asl.ParseOpcode = PARSEOP_DEFAULT_ARG; } else { /* * Valid new offset - set the value to be inserted into the AML * and update the offset counter. */ PkgLengthNode->Asl.Value.Integer = NewBitOffset - CurrentBitOffset; CurrentBitOffset = NewBitOffset; } break; case PARSEOP_NAMESEG: case PARSEOP_RESERVED_BYTES: /* Named or reserved field entry */ PkgLengthNode = Next->Asl.Child; NewBitOffset = (UINT32) PkgLengthNode->Asl.Value.Integer; CurrentBitOffset += NewBitOffset; /* Save the current AccessAs value for error checking later */ switch (AccessType) { case AML_FIELD_ACCESS_ANY: case AML_FIELD_ACCESS_BYTE: case AML_FIELD_ACCESS_BUFFER: default: MinimumLength = 8; break; case AML_FIELD_ACCESS_WORD: MinimumLength = 16; break; case AML_FIELD_ACCESS_DWORD: MinimumLength = 32; break; case AML_FIELD_ACCESS_QWORD: MinimumLength = 64; break; } PkgLengthNode->Asl.ExtraValue = MinimumLength; break; default: /* All supported field opcodes must appear above */ break; } /* Move on to next entry in the field list */ Next = Next->Asl.Next; } } /******************************************************************************* * * FUNCTION: OpnDoField * * PARAMETERS: Op - The parent parse node * * RETURN: None * * DESCRIPTION: Construct the AML operands for the FIELD ASL keyword * ******************************************************************************/ static void OpnDoField ( ACPI_PARSE_OBJECT *Op) { ACPI_PARSE_OBJECT *Next; /* Opcode is parent node */ /* First child is field name */ Next = Op->Asl.Child; /* Second child is the AccessType */ OpnDoFieldCommon (Op, Next->Asl.Next); } /******************************************************************************* * * FUNCTION: OpnDoIndexField * * PARAMETERS: Op - The parent parse node * * RETURN: None * * DESCRIPTION: Construct the AML operands for the INDEXFIELD ASL keyword * ******************************************************************************/ static void OpnDoIndexField ( ACPI_PARSE_OBJECT *Op) { ACPI_PARSE_OBJECT *Next; /* Opcode is parent node */ /* First child is the index name */ Next = Op->Asl.Child; /* Second child is the data name */ Next = Next->Asl.Next; /* Third child is the AccessType */ OpnDoFieldCommon (Op, Next->Asl.Next); } /******************************************************************************* * * FUNCTION: OpnDoBankField * * PARAMETERS: Op - The parent parse node * * RETURN: None * * DESCRIPTION: Construct the AML operands for the BANKFIELD ASL keyword * ******************************************************************************/ static void OpnDoBankField ( ACPI_PARSE_OBJECT *Op) { ACPI_PARSE_OBJECT *Next; /* Opcode is parent node */ /* First child is the region name */ Next = Op->Asl.Child; /* Second child is the bank name */ Next = Next->Asl.Next; /* Third child is the bank value */ Next = Next->Asl.Next; /* Fourth child is the AccessType */ OpnDoFieldCommon (Op, Next->Asl.Next); } /******************************************************************************* * * FUNCTION: OpnDoRegion * * PARAMETERS: Op - The parent parse node * * RETURN: None * * DESCRIPTION: Tries to get the length of the region. Can only do this at * compile time if the length is a constant. * ******************************************************************************/ static void OpnDoRegion ( ACPI_PARSE_OBJECT *Op) { ACPI_PARSE_OBJECT *Next; /* Opcode is parent node */ /* First child is the region name */ Next = Op->Asl.Child; /* Second child is the space ID*/ Next = Next->Asl.Next; /* Third child is the region offset */ Next = Next->Asl.Next; /* Fourth child is the region length */ Next = Next->Asl.Next; if (Next->Asl.ParseOpcode == PARSEOP_INTEGER) { Op->Asl.Value.Integer = Next->Asl.Value.Integer; } else { Op->Asl.Value.Integer = ACPI_UINT64_MAX; } } /******************************************************************************* * * FUNCTION: OpnDoBuffer * * PARAMETERS: Op - The parent parse node * * RETURN: None * * DESCRIPTION: Construct the AML operands for the BUFFER ASL keyword. We * build a single raw byte buffer from the initialization nodes, * each parse node contains a buffer byte. * ******************************************************************************/ static void OpnDoBuffer ( ACPI_PARSE_OBJECT *Op) { ACPI_PARSE_OBJECT *InitializerOp; ACPI_PARSE_OBJECT *BufferLengthOp; /* Optional arguments for this opcode with defaults */ UINT32 BufferLength = 0; /* Opcode and package length first */ /* Buffer Length is next, followed by the initializer list */ BufferLengthOp = Op->Asl.Child; InitializerOp = BufferLengthOp->Asl.Next; /* * If the BufferLength is not an INTEGER or was not specified in the ASL * (DEFAULT_ARG), it is a TermArg that is * evaluated at run-time, and we are therefore finished. */ if ((BufferLengthOp->Asl.ParseOpcode != PARSEOP_INTEGER) && (BufferLengthOp->Asl.ParseOpcode != PARSEOP_DEFAULT_ARG)) { return; } /* * We want to count the number of items in the initializer list, because if * it is larger than the buffer length, we will define the buffer size * to be the size of the initializer list (as per the ACPI Specification) */ switch (InitializerOp->Asl.ParseOpcode) { case PARSEOP_INTEGER: case PARSEOP_BYTECONST: case PARSEOP_WORDCONST: case PARSEOP_DWORDCONST: /* The peer list contains the byte list (if any...) */ while (InitializerOp) { /* For buffers, this is a list of raw bytes */ InitializerOp->Asl.AmlOpcode = AML_RAW_DATA_BYTE; InitializerOp->Asl.AmlLength = 1; InitializerOp->Asl.ParseOpcode = PARSEOP_RAW_DATA; BufferLength++; InitializerOp = ASL_GET_PEER_NODE (InitializerOp); } break; case PARSEOP_STRING_LITERAL: /* * Only one initializer, the string. Buffer must be big enough to hold * the string plus the null termination byte */ BufferLength = strlen (InitializerOp->Asl.Value.String) + 1; InitializerOp->Asl.AmlOpcode = AML_RAW_DATA_BUFFER; InitializerOp->Asl.AmlLength = BufferLength; InitializerOp->Asl.ParseOpcode = PARSEOP_RAW_DATA; break; case PARSEOP_RAW_DATA: /* Buffer nodes are already initialized (e.g. Unicode operator) */ return; case PARSEOP_DEFAULT_ARG: break; default: AslError (ASL_ERROR, ASL_MSG_INVALID_OPERAND, InitializerOp, "Unknown buffer initializer opcode"); printf ("Unknown buffer initializer opcode [%s]\n", UtGetOpName (InitializerOp->Asl.ParseOpcode)); return; } /* Check if initializer list is longer than the buffer length */ if (BufferLengthOp->Asl.Value.Integer > BufferLength) { BufferLength = (UINT32) BufferLengthOp->Asl.Value.Integer; } if (!BufferLength) { /* No length AND no items -- issue notice */ AslError (ASL_REMARK, ASL_MSG_BUFFER_LENGTH, BufferLengthOp, NULL); /* But go ahead and put the buffer length of zero into the AML */ } /* * Just set the buffer size node to be the buffer length, regardless * of whether it was previously an integer or a default_arg placeholder */ BufferLengthOp->Asl.ParseOpcode = PARSEOP_INTEGER; BufferLengthOp->Asl.AmlOpcode = AML_DWORD_OP; BufferLengthOp->Asl.Value.Integer = BufferLength; (void) OpcSetOptimalIntegerSize (BufferLengthOp); /* Remaining nodes are handled via the tree walk */ } /******************************************************************************* * * FUNCTION: OpnDoPackage * * PARAMETERS: Op - The parent parse node * * RETURN: None * * DESCRIPTION: Construct the AML operands for the PACKAGE ASL keyword. NOTE: * can only be called after constants have been folded, to ensure * that the PackageLength operand has been fully reduced. * ******************************************************************************/ void OpnDoPackage ( ACPI_PARSE_OBJECT *Op) { ACPI_PARSE_OBJECT *InitializerOp; ACPI_PARSE_OBJECT *PackageLengthOp; UINT32 PackageLength = 0; /* Opcode and package length first, followed by the initializer list */ PackageLengthOp = Op->Asl.Child; InitializerOp = PackageLengthOp->Asl.Next; /* Count the number of items in the initializer list */ if (InitializerOp->Asl.ParseOpcode != PARSEOP_DEFAULT_ARG) { /* The peer list contains the byte list (if any...) */ while (InitializerOp) { PackageLength++; InitializerOp = InitializerOp->Asl.Next; } } /* If package length is a constant, compare to the initializer list */ if ((PackageLengthOp->Asl.ParseOpcode == PARSEOP_INTEGER) || (PackageLengthOp->Asl.ParseOpcode == PARSEOP_QWORDCONST)) { if (PackageLengthOp->Asl.Value.Integer > PackageLength) { /* * Allow package length to be longer than the initializer * list -- but if the length of initializer list is nonzero, * issue a message since this is probably a coding error, * even though technically legal. */ if (PackageLength > 0) { AslError (ASL_REMARK, ASL_MSG_LIST_LENGTH_SHORT, PackageLengthOp, NULL); } PackageLength = (UINT32) PackageLengthOp->Asl.Value.Integer; } else if (PackageLengthOp->Asl.Value.Integer < PackageLength) { /* * The package length is smaller than the length of the * initializer list. This is an error as per the ACPI spec. */ AslError (ASL_ERROR, ASL_MSG_LIST_LENGTH_LONG, PackageLengthOp, NULL); } } if (PackageLengthOp->Asl.ParseOpcode == PARSEOP_DEFAULT_ARG) { /* * This is the case if the PackageLength was left empty - Package() * The package length becomes the length of the initializer list */ Op->Asl.Child->Asl.ParseOpcode = PARSEOP_INTEGER; Op->Asl.Child->Asl.Value.Integer = PackageLength; /* Set the AML opcode */ (void) OpcSetOptimalIntegerSize (Op->Asl.Child); } /* If not a variable-length package, check for a zero package length */ if ((PackageLengthOp->Asl.ParseOpcode == PARSEOP_INTEGER) || (PackageLengthOp->Asl.ParseOpcode == PARSEOP_QWORDCONST) || (PackageLengthOp->Asl.ParseOpcode == PARSEOP_ZERO) || (PackageLengthOp->Asl.ParseOpcode == PARSEOP_DEFAULT_ARG)) { if (!PackageLength) { /* No length AND no initializer list -- issue a remark */ AslError (ASL_REMARK, ASL_MSG_PACKAGE_LENGTH, PackageLengthOp, NULL); /* But go ahead and put the buffer length of zero into the AML */ } } /* * If the PackageLength is a constant <= 255, we can change the * AML opcode from VarPackage to a simple (ACPI 1.0) Package opcode. */ if (((Op->Asl.Child->Asl.ParseOpcode == PARSEOP_INTEGER) && (Op->Asl.Child->Asl.Value.Integer <= 255)) || (Op->Asl.Child->Asl.ParseOpcode == PARSEOP_ONE) || (Op->Asl.Child->Asl.ParseOpcode == PARSEOP_ONES)|| (Op->Asl.Child->Asl.ParseOpcode == PARSEOP_ZERO)) { Op->Asl.AmlOpcode = AML_PACKAGE_OP; Op->Asl.ParseOpcode = PARSEOP_PACKAGE; /* * Just set the package size node to be the package length, regardless * of whether it was previously an integer or a default_arg placeholder */ PackageLengthOp->Asl.AmlOpcode = AML_RAW_DATA_BYTE; PackageLengthOp->Asl.AmlLength = 1; PackageLengthOp->Asl.ParseOpcode = PARSEOP_RAW_DATA; PackageLengthOp->Asl.Value.Integer = PackageLength; } /* Remaining nodes are handled via the tree walk */ } /******************************************************************************* * * FUNCTION: OpnDoLoadTable * * PARAMETERS: Op - The parent parse node * * RETURN: None * * DESCRIPTION: Construct the AML operands for the LOADTABLE ASL keyword. * ******************************************************************************/ static void OpnDoLoadTable ( ACPI_PARSE_OBJECT *Op) { ACPI_PARSE_OBJECT *Next; /* Opcode is parent node */ /* First child is the table signature */ Next = Op->Asl.Child; /* Second child is the OEM ID*/ Next = Next->Asl.Next; /* Third child is the OEM table ID */ Next = Next->Asl.Next; /* Fourth child is the RootPath string */ Next = Next->Asl.Next; if (Next->Asl.ParseOpcode == PARSEOP_ZERO) { Next->Asl.ParseOpcode = PARSEOP_STRING_LITERAL; Next->Asl.Value.String = "\\"; Next->Asl.AmlLength = 2; OpcGenerateAmlOpcode (Next); } #ifdef ASL_FUTURE_IMPLEMENTATION /* TBD: NOT IMPLEMENTED */ /* Fifth child is the [optional] ParameterPathString */ /* Sixth child is the [optional] ParameterData */ Next = Next->Asl.Next; if (Next->Asl.ParseOpcode == DEFAULT_ARG) { Next->Asl.AmlLength = 1; Next->Asl.ParseOpcode = ZERO; OpcGenerateAmlOpcode (Next); } Next = Next->Asl.Next; if (Next->Asl.ParseOpcode == DEFAULT_ARG) { Next->Asl.AmlLength = 1; Next->Asl.ParseOpcode = ZERO; OpcGenerateAmlOpcode (Next); } #endif } /******************************************************************************* * * FUNCTION: OpnDoDefinitionBlock * * PARAMETERS: Op - The parent parse node * * RETURN: None * * DESCRIPTION: Construct the AML operands for the DEFINITIONBLOCK ASL keyword * ******************************************************************************/ static void OpnDoDefinitionBlock ( ACPI_PARSE_OBJECT *Op) { ACPI_PARSE_OBJECT *Child; ACPI_SIZE Length; UINT32 i; char *Filename; /* * These nodes get stuffed into the table header. They are special * cased when the table is written to the output file. * * Mark all of these nodes as non-usable so they won't get output * as AML opcodes! */ /* Get AML filename. Use it if non-null */ Child = Op->Asl.Child; if (Child->Asl.Value.Buffer && *Child->Asl.Value.Buffer && (Gbl_UseDefaultAmlFilename)) { /* * We will use the AML filename that is embedded in the source file * for the output filename. */ Filename = ACPI_ALLOCATE (strlen (Gbl_DirectoryPath) + strlen ((char *) Child->Asl.Value.Buffer) + 1); /* Prepend the current directory path */ strcpy (Filename, Gbl_DirectoryPath); strcat (Filename, (char *) Child->Asl.Value.Buffer); Gbl_OutputFilenamePrefix = Filename; UtConvertBackslashes (Gbl_OutputFilenamePrefix); } Child->Asl.ParseOpcode = PARSEOP_DEFAULT_ARG; /* Signature */ Child = Child->Asl.Next; Child->Asl.ParseOpcode = PARSEOP_DEFAULT_ARG; if (Child->Asl.Value.String) { Gbl_TableSignature = Child->Asl.Value.String; if (ACPI_STRLEN (Gbl_TableSignature) != 4) { AslError (ASL_ERROR, ASL_MSG_TABLE_SIGNATURE, Child, "Length not exactly 4"); } for (i = 0; i < 4; i++) { if (!isalnum ((int) Gbl_TableSignature[i])) { AslError (ASL_ERROR, ASL_MSG_TABLE_SIGNATURE, Child, "Contains non-alphanumeric characters"); } } } /* Revision */ Child = Child->Asl.Next; Child->Asl.ParseOpcode = PARSEOP_DEFAULT_ARG; /* * We used the revision to set the integer width earlier */ /* OEMID */ Child = Child->Asl.Next; Child->Asl.ParseOpcode = PARSEOP_DEFAULT_ARG; /* OEM TableID */ Child = Child->Asl.Next; Child->Asl.ParseOpcode = PARSEOP_DEFAULT_ARG; if (Child->Asl.Value.String) { Length = ACPI_STRLEN (Child->Asl.Value.String); Gbl_TableId = AcpiOsAllocate (Length + 1); ACPI_STRCPY (Gbl_TableId, Child->Asl.Value.String); /* * Convert anything non-alphanumeric to an underscore. This * allows us to use the TableID to generate unique C symbols. */ for (i = 0; i < Length; i++) { if (!isalnum ((int) Gbl_TableId[i])) { Gbl_TableId[i] = '_'; } } } /* OEM Revision */ Child = Child->Asl.Next; Child->Asl.ParseOpcode = PARSEOP_DEFAULT_ARG; } /******************************************************************************* * * FUNCTION: UtGetArg * * PARAMETERS: Op - Get an argument for this op * Argn - Nth argument to get * * RETURN: The argument (as an Op object). NULL if argument does not exist * * DESCRIPTION: Get the specified op's argument (peer) * ******************************************************************************/ ACPI_PARSE_OBJECT * UtGetArg ( ACPI_PARSE_OBJECT *Op, UINT32 Argn) { ACPI_PARSE_OBJECT *Arg = NULL; /* Get the requested argument object */ Arg = Op->Asl.Child; while (Arg && Argn) { Argn--; Arg = Arg->Asl.Next; } return (Arg); } /******************************************************************************* * * FUNCTION: OpnAttachNameToNode * * PARAMETERS: Op - The parent parse node * * RETURN: None * * DESCRIPTION: For the named ASL/AML operators, get the actual name from the * argument list and attach it to the parent node so that we * can get to it quickly later. * ******************************************************************************/ static void OpnAttachNameToNode ( ACPI_PARSE_OBJECT *Op) { ACPI_PARSE_OBJECT *Child = NULL; if (Op->Asl.ParseOpcode == PARSEOP_EXTERNAL) { Child = UtGetArg (Op, 0); } else switch (Op->Asl.AmlOpcode) { case AML_DATA_REGION_OP: case AML_DEVICE_OP: case AML_EVENT_OP: case AML_METHOD_OP: case AML_MUTEX_OP: case AML_REGION_OP: case AML_POWER_RES_OP: case AML_PROCESSOR_OP: case AML_THERMAL_ZONE_OP: case AML_NAME_OP: case AML_SCOPE_OP: Child = UtGetArg (Op, 0); break; case AML_ALIAS_OP: Child = UtGetArg (Op, 1); break; case AML_CREATE_BIT_FIELD_OP: case AML_CREATE_BYTE_FIELD_OP: case AML_CREATE_WORD_FIELD_OP: case AML_CREATE_DWORD_FIELD_OP: case AML_CREATE_QWORD_FIELD_OP: Child = UtGetArg (Op, 2); break; case AML_CREATE_FIELD_OP: Child = UtGetArg (Op, 3); break; case AML_BANK_FIELD_OP: case AML_INDEX_FIELD_OP: case AML_FIELD_OP: return; default: return; } if (Child) { UtAttachNamepathToOwner (Op, Child); } } /******************************************************************************* * * FUNCTION: OpnGenerateAmlOperands * * PARAMETERS: Op - The parent parse node * * RETURN: None * * DESCRIPTION: Prepare nodes to be output as AML data and operands. The more * complex AML opcodes require processing of the child nodes * (arguments/operands). * ******************************************************************************/ void OpnGenerateAmlOperands ( ACPI_PARSE_OBJECT *Op) { if (Op->Asl.AmlOpcode == AML_RAW_DATA_BYTE) { return; } switch (Op->Asl.ParseOpcode) { case PARSEOP_DEFINITIONBLOCK: OpnDoDefinitionBlock (Op); break; case PARSEOP_METHOD: OpnDoMethod (Op); break; case PARSEOP_MUTEX: OpnDoMutex (Op); break; case PARSEOP_FIELD: OpnDoField (Op); break; case PARSEOP_INDEXFIELD: OpnDoIndexField (Op); break; case PARSEOP_BANKFIELD: OpnDoBankField (Op); break; case PARSEOP_BUFFER: OpnDoBuffer (Op); break; case PARSEOP_LOADTABLE: OpnDoLoadTable (Op); break; case PARSEOP_OPERATIONREGION: OpnDoRegion (Op); break; case PARSEOP_RESOURCETEMPLATE: RsDoResourceTemplate (Op); break; case PARSEOP_NAMESEG: case PARSEOP_NAMESTRING: case PARSEOP_METHODCALL: case PARSEOP_STRING_LITERAL: break; default: break; } /* TBD: move */ OpnAttachNameToNode (Op); } src/acpica/source/compiler/aslopt.c000066400000000000000000000744631231470457100176670ustar00rootroot00000000000000/****************************************************************************** * * Module Name: aslopt- Compiler optimizations * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #include "aslcompiler.h" #include "aslcompiler.y.h" #include "acparser.h" #include "amlcode.h" #include "acnamesp.h" #define _COMPONENT ACPI_COMPILER ACPI_MODULE_NAME ("aslopt") static UINT32 OptTotal = 0; /* Local prototypes */ static ACPI_STATUS OptSearchToRoot ( ACPI_PARSE_OBJECT *Op, ACPI_WALK_STATE *WalkState, ACPI_NAMESPACE_NODE *CurrentNode, ACPI_NAMESPACE_NODE *TargetNode, ACPI_BUFFER *TargetPath, char **NewPath); static ACPI_STATUS OptBuildShortestPath ( ACPI_PARSE_OBJECT *Op, ACPI_WALK_STATE *WalkState, ACPI_NAMESPACE_NODE *CurrentNode, ACPI_NAMESPACE_NODE *TargetNode, ACPI_BUFFER *CurrentPath, ACPI_BUFFER *TargetPath, ACPI_SIZE AmlNameStringLength, UINT8 IsDeclaration, char **ReturnNewPath); static ACPI_STATUS OptOptimizeNameDeclaration ( ACPI_PARSE_OBJECT *Op, ACPI_WALK_STATE *WalkState, ACPI_NAMESPACE_NODE *CurrentNode, ACPI_NAMESPACE_NODE *TargetNode, char *AmlNameString, char **NewPath); /******************************************************************************* * * FUNCTION: OptSearchToRoot * * PARAMETERS: Op - Current parser op * WalkState - Current state * CurrentNode - Where we are in the namespace * TargetNode - Node to which we are referring * TargetPath - External full path to the target node * NewPath - Where the optimized path is returned * * RETURN: Status * * DESCRIPTION: Attempt to optimize a reference to a single 4-character ACPI * name utilizing the search-to-root name resolution algorithm * that is used by AML interpreters. * ******************************************************************************/ static ACPI_STATUS OptSearchToRoot ( ACPI_PARSE_OBJECT *Op, ACPI_WALK_STATE *WalkState, ACPI_NAMESPACE_NODE *CurrentNode, ACPI_NAMESPACE_NODE *TargetNode, ACPI_BUFFER *TargetPath, char **NewPath) { ACPI_NAMESPACE_NODE *Node; ACPI_GENERIC_STATE ScopeInfo; ACPI_STATUS Status; char *Path; ACPI_FUNCTION_NAME (OptSearchToRoot); /* * Check if search-to-root can be utilized. Use the last NameSeg of * the NamePath and 1) See if can be found and 2) If found, make * sure that it is the same node that we want. If there is another * name in the search path before the one we want, the nodes will * not match, and we cannot use this optimization. */ Path = &(((char *) TargetPath->Pointer)[TargetPath->Length - ACPI_NAME_SIZE]), ScopeInfo.Scope.Node = CurrentNode; /* Lookup the NameSeg using SEARCH_PARENT (search-to-root) */ Status = AcpiNsLookup (&ScopeInfo, Path, ACPI_TYPE_ANY, ACPI_IMODE_EXECUTE, ACPI_NS_SEARCH_PARENT | ACPI_NS_DONT_OPEN_SCOPE, WalkState, &(Node)); if (ACPI_FAILURE (Status)) { return (Status); } /* * We found the name, but we must check to make sure that the node * matches. Otherwise, there is another identical name in the search * path that precludes the use of this optimization. */ if (Node != TargetNode) { /* * This means that another object with the same name was found first, * and we cannot use this optimization. */ return (AE_NOT_FOUND); } /* Found the node, we can use this optimization */ ACPI_DEBUG_PRINT_RAW ((ACPI_DB_OPTIMIZATIONS, "NAMESEG: %-24s", Path)); /* We must allocate a new string for the name (TargetPath gets deleted) */ *NewPath = ACPI_ALLOCATE_ZEROED (ACPI_NAME_SIZE + 1); ACPI_STRCPY (*NewPath, Path); if (ACPI_STRNCMP (*NewPath, "_T_", 3)) { AslError (ASL_OPTIMIZATION, ASL_MSG_SINGLE_NAME_OPTIMIZATION, Op, *NewPath); } return (AE_OK); } /******************************************************************************* * * FUNCTION: OptBuildShortestPath * * PARAMETERS: Op - Current parser op * WalkState - Current state * CurrentNode - Where we are in the namespace * TargetNode - Node to which we are referring * CurrentPath - External full path to the current node * TargetPath - External full path to the target node * AmlNameStringLength - Length of the original namepath * IsDeclaration - TRUE for declaration, FALSE for reference * ReturnNewPath - Where the optimized path is returned * * RETURN: Status * * DESCRIPTION: Build an optimal NamePath using carats * ******************************************************************************/ static ACPI_STATUS OptBuildShortestPath ( ACPI_PARSE_OBJECT *Op, ACPI_WALK_STATE *WalkState, ACPI_NAMESPACE_NODE *CurrentNode, ACPI_NAMESPACE_NODE *TargetNode, ACPI_BUFFER *CurrentPath, ACPI_BUFFER *TargetPath, ACPI_SIZE AmlNameStringLength, UINT8 IsDeclaration, char **ReturnNewPath) { UINT32 NumCommonSegments; UINT32 MaxCommonSegments; UINT32 Index; UINT32 NumCarats; UINT32 i; char *NewPath; char *NewPathExternal; ACPI_NAMESPACE_NODE *Node; ACPI_GENERIC_STATE ScopeInfo; ACPI_STATUS Status; BOOLEAN SubPath = FALSE; ACPI_FUNCTION_NAME (OptBuildShortestPath); ScopeInfo.Scope.Node = CurrentNode; /* * Determine the maximum number of NameSegs that the Target and Current paths * can possibly have in common. (To optimize, we have to have at least 1) * * Note: The external NamePath string lengths are always a multiple of 5 * (ACPI_NAME_SIZE + separator) */ MaxCommonSegments = TargetPath->Length / ACPI_PATH_SEGMENT_LENGTH; if (CurrentPath->Length < TargetPath->Length) { MaxCommonSegments = CurrentPath->Length / ACPI_PATH_SEGMENT_LENGTH; } /* * Determine how many NameSegs the two paths have in common. * (Starting from the root) */ for (NumCommonSegments = 0; NumCommonSegments < MaxCommonSegments; NumCommonSegments++) { /* Compare two single NameSegs */ if (!ACPI_COMPARE_NAME ( &((char *) TargetPath->Pointer)[ (NumCommonSegments * ACPI_PATH_SEGMENT_LENGTH) + 1], &((char *) CurrentPath->Pointer)[ (NumCommonSegments * ACPI_PATH_SEGMENT_LENGTH) + 1])) { /* Mismatch */ break; } } ACPI_DEBUG_PRINT_RAW ((ACPI_DB_OPTIMIZATIONS, " COMMON: %u", NumCommonSegments)); /* There must be at least 1 common NameSeg in order to optimize */ if (NumCommonSegments == 0) { return (AE_NOT_FOUND); } if (NumCommonSegments == MaxCommonSegments) { if (CurrentPath->Length == TargetPath->Length) { ACPI_DEBUG_PRINT_RAW ((ACPI_DB_OPTIMIZATIONS, " SAME PATH")); return (AE_NOT_FOUND); } else { ACPI_DEBUG_PRINT_RAW ((ACPI_DB_OPTIMIZATIONS, " SUBPATH")); SubPath = TRUE; } } /* Determine how many prefix Carats are required */ NumCarats = (CurrentPath->Length / ACPI_PATH_SEGMENT_LENGTH) - NumCommonSegments; /* * Construct a new target string */ NewPathExternal = ACPI_ALLOCATE_ZEROED ( TargetPath->Length + NumCarats + 1); /* Insert the Carats into the Target string */ for (i = 0; i < NumCarats; i++) { NewPathExternal[i] = AML_PARENT_PREFIX; } /* * Copy only the necessary (optimal) segments from the original * target string */ Index = (NumCommonSegments * ACPI_PATH_SEGMENT_LENGTH) + 1; /* Special handling for exact subpath in a name declaration */ if (IsDeclaration && SubPath && (CurrentPath->Length > TargetPath->Length)) { /* * The current path is longer than the target, and the target is a * subpath of the current path. We must include one more NameSeg of * the target path */ Index -= ACPI_PATH_SEGMENT_LENGTH; /* Special handling for Scope() operator */ if (Op->Asl.AmlOpcode == AML_SCOPE_OP) { NewPathExternal[i] = AML_PARENT_PREFIX; i++; ACPI_DEBUG_PRINT_RAW ((ACPI_DB_OPTIMIZATIONS, "(EXTRA ^)")); } } /* Make sure we haven't gone off the end of the target path */ if (Index > TargetPath->Length) { Index = TargetPath->Length; } ACPI_STRCPY (&NewPathExternal[i], &((char *) TargetPath->Pointer)[Index]); ACPI_DEBUG_PRINT_RAW ((ACPI_DB_OPTIMIZATIONS, " %-24s", NewPathExternal)); /* * Internalize the new target string and check it against the original * string to make sure that this is in fact an optimization. If the * original string is already optimal, there is no point in continuing. */ Status = AcpiNsInternalizeName (NewPathExternal, &NewPath); if (ACPI_FAILURE (Status)) { AslCoreSubsystemError (Op, Status, "Internalizing new NamePath", ASL_NO_ABORT); ACPI_FREE (NewPathExternal); return (Status); } if (ACPI_STRLEN (NewPath) >= AmlNameStringLength) { ACPI_DEBUG_PRINT_RAW ((ACPI_DB_OPTIMIZATIONS, " NOT SHORTER (New %u old %u)", (UINT32) ACPI_STRLEN (NewPath), (UINT32) AmlNameStringLength)); ACPI_FREE (NewPathExternal); return (AE_NOT_FOUND); } /* * Check to make sure that the optimization finds the node we are * looking for. This is simply a sanity check on the new * path that has been created. */ Status = AcpiNsLookup (&ScopeInfo, NewPath, ACPI_TYPE_ANY, ACPI_IMODE_EXECUTE, ACPI_NS_DONT_OPEN_SCOPE, WalkState, &(Node)); if (ACPI_SUCCESS (Status)) { /* Found the namepath, but make sure the node is correct */ if (Node == TargetNode) { /* The lookup matched the node, accept this optimization */ AslError (ASL_OPTIMIZATION, ASL_MSG_NAME_OPTIMIZATION, Op, NewPathExternal); *ReturnNewPath = NewPath; } else { /* Node is not correct, do not use this optimization */ Status = AE_NOT_FOUND; ACPI_DEBUG_PRINT_RAW ((ACPI_DB_OPTIMIZATIONS, " ***** WRONG NODE")); AslError (ASL_WARNING, ASL_MSG_COMPILER_INTERNAL, Op, "Not using optimized name - found wrong node"); } } else { /* The lookup failed, we obviously cannot use this optimization */ ACPI_DEBUG_PRINT_RAW ((ACPI_DB_OPTIMIZATIONS, " ***** NOT FOUND")); AslError (ASL_WARNING, ASL_MSG_COMPILER_INTERNAL, Op, "Not using optimized name - did not find node"); } ACPI_FREE (NewPathExternal); return (Status); } /******************************************************************************* * * FUNCTION: OptOptimizeNameDeclaration * * PARAMETERS: Op - Current parser op * WalkState - Current state * CurrentNode - Where we are in the namespace * AmlNameString - Unoptimized namepath * NewPath - Where the optimized path is returned * * RETURN: Status. AE_OK If path is optimized * * DESCRIPTION: Perform a simple optimization of removing an extraneous * backslash prefix if we are already at the root scope. * ******************************************************************************/ static ACPI_STATUS OptOptimizeNameDeclaration ( ACPI_PARSE_OBJECT *Op, ACPI_WALK_STATE *WalkState, ACPI_NAMESPACE_NODE *CurrentNode, ACPI_NAMESPACE_NODE *TargetNode, char *AmlNameString, char **NewPath) { ACPI_STATUS Status; char *NewPathExternal; ACPI_NAMESPACE_NODE *Node; ACPI_FUNCTION_TRACE (OptOptimizeNameDeclaration); if (((CurrentNode == AcpiGbl_RootNode) || (Op->Common.Parent->Asl.ParseOpcode == PARSEOP_DEFINITIONBLOCK)) && (ACPI_IS_ROOT_PREFIX (AmlNameString[0]))) { /* * The current scope is the root, and the namepath has a root prefix * that is therefore extraneous. Remove it. */ *NewPath = &AmlNameString[1]; /* Debug output */ Status = AcpiNsExternalizeName (ACPI_UINT32_MAX, *NewPath, NULL, &NewPathExternal); if (ACPI_FAILURE (Status)) { AslCoreSubsystemError (Op, Status, "Externalizing NamePath", ASL_NO_ABORT); return (Status); } /* * Check to make sure that the optimization finds the node we are * looking for. This is simply a sanity check on the new * path that has been created. * * We know that we are at the root, so NULL is used for the scope. */ Status = AcpiNsLookup (NULL, *NewPath, ACPI_TYPE_ANY, ACPI_IMODE_EXECUTE, ACPI_NS_DONT_OPEN_SCOPE, WalkState, &(Node)); if (ACPI_SUCCESS (Status)) { /* Found the namepath, but make sure the node is correct */ if (Node == TargetNode) { /* The lookup matched the node, accept this optimization */ AslError (ASL_OPTIMIZATION, ASL_MSG_NAME_OPTIMIZATION, Op, NewPathExternal); ACPI_DEBUG_PRINT_RAW ((ACPI_DB_OPTIMIZATIONS, "AT ROOT: %-24s", NewPathExternal)); } else { /* Node is not correct, do not use this optimization */ Status = AE_NOT_FOUND; ACPI_DEBUG_PRINT_RAW ((ACPI_DB_OPTIMIZATIONS, " ***** WRONG NODE")); AslError (ASL_WARNING, ASL_MSG_COMPILER_INTERNAL, Op, "Not using optimized name - found wrong node"); } } else { /* The lookup failed, we obviously cannot use this optimization */ ACPI_DEBUG_PRINT_RAW ((ACPI_DB_OPTIMIZATIONS, " ***** NOT FOUND")); AslError (ASL_WARNING, ASL_MSG_COMPILER_INTERNAL, Op, "Not using optimized name - did not find node"); } ACPI_FREE (NewPathExternal); return (Status); } /* Could not optimize */ return (AE_NOT_FOUND); } /******************************************************************************* * * FUNCTION: OptOptimizeNamePath * * PARAMETERS: Op - Current parser op * Flags - Opcode info flags * WalkState - Current state * AmlNameString - Unoptimized namepath * TargetNode - Node to which AmlNameString refers * * RETURN: None. If path is optimized, the Op is updated with new path * * DESCRIPTION: Optimize a Named Declaration or Reference to the minimal length. * Must take into account both the current location in the * namespace and the actual reference path. * ******************************************************************************/ void OptOptimizeNamePath ( ACPI_PARSE_OBJECT *Op, UINT32 Flags, ACPI_WALK_STATE *WalkState, char *AmlNameString, ACPI_NAMESPACE_NODE *TargetNode) { ACPI_STATUS Status; ACPI_BUFFER TargetPath; ACPI_BUFFER CurrentPath; ACPI_SIZE AmlNameStringLength; ACPI_NAMESPACE_NODE *CurrentNode; char *ExternalNameString; char *NewPath = NULL; ACPI_SIZE HowMuchShorter; ACPI_PARSE_OBJECT *NextOp; ACPI_FUNCTION_TRACE (OptOptimizeNamePath); /* This is an optional optimization */ if (!Gbl_ReferenceOptimizationFlag) { return_VOID; } /* Various required items */ if (!TargetNode || !WalkState || !AmlNameString || !Op->Common.Parent) { return_VOID; } ACPI_DEBUG_PRINT_RAW ((ACPI_DB_OPTIMIZATIONS, "PATH OPTIMIZE: Line %5d ParentOp [%12.12s] ThisOp [%12.12s] ", Op->Asl.LogicalLineNumber, AcpiPsGetOpcodeName (Op->Common.Parent->Common.AmlOpcode), AcpiPsGetOpcodeName (Op->Common.AmlOpcode))); if (!(Flags & (AML_NAMED | AML_CREATE))) { if (Op->Asl.CompileFlags & NODE_IS_NAME_DECLARATION) { /* We don't want to fuss with actual name declaration nodes here */ ACPI_DEBUG_PRINT_RAW ((ACPI_DB_OPTIMIZATIONS, "******* NAME DECLARATION\n")); return_VOID; } } /* * The original path must be longer than one NameSeg (4 chars) for there * to be any possibility that it can be optimized to a shorter string */ AmlNameStringLength = ACPI_STRLEN (AmlNameString); if (AmlNameStringLength <= ACPI_NAME_SIZE) { ACPI_DEBUG_PRINT_RAW ((ACPI_DB_OPTIMIZATIONS, "NAMESEG %4.4s\n", AmlNameString)); return_VOID; } /* * We need to obtain the node that represents the current scope -- where * we are right now in the namespace. We will compare this path * against the Namepath, looking for commonality. */ CurrentNode = AcpiGbl_RootNode; if (WalkState->ScopeInfo) { CurrentNode = WalkState->ScopeInfo->Scope.Node; } if (Flags & (AML_NAMED | AML_CREATE)) { /* This is the declaration of a new name */ ACPI_DEBUG_PRINT_RAW ((ACPI_DB_OPTIMIZATIONS, "NAME\n")); /* * The node of interest is the parent of this node (the containing * scope). The actual namespace node may be up more than one level * of parse op or it may not exist at all (if we traverse back * up to the root.) */ NextOp = Op->Asl.Parent; while (NextOp && (!NextOp->Asl.Node)) { NextOp = NextOp->Asl.Parent; } if (NextOp && NextOp->Asl.Node) { CurrentNode = NextOp->Asl.Node; } else { CurrentNode = AcpiGbl_RootNode; } } else { /* This is a reference to an existing named object */ ACPI_DEBUG_PRINT_RAW ((ACPI_DB_OPTIMIZATIONS, "REFERENCE\n")); } /* * Obtain the full paths to the two nodes that we are interested in * (Target and current namespace location) in external * format -- something we can easily manipulate */ TargetPath.Length = ACPI_ALLOCATE_LOCAL_BUFFER; Status = AcpiNsHandleToPathname (TargetNode, &TargetPath); if (ACPI_FAILURE (Status)) { AslCoreSubsystemError (Op, Status, "Getting Target NamePath", ASL_NO_ABORT); return_VOID; } TargetPath.Length--; /* Subtract one for null terminator */ /* CurrentPath is the path to this scope (where we are in the namespace) */ CurrentPath.Length = ACPI_ALLOCATE_LOCAL_BUFFER; Status = AcpiNsHandleToPathname (CurrentNode, &CurrentPath); if (ACPI_FAILURE (Status)) { AslCoreSubsystemError (Op, Status, "Getting Current NamePath", ASL_NO_ABORT); return_VOID; } CurrentPath.Length--; /* Subtract one for null terminator */ /* Debug output only */ Status = AcpiNsExternalizeName (ACPI_UINT32_MAX, AmlNameString, NULL, &ExternalNameString); if (ACPI_FAILURE (Status)) { AslCoreSubsystemError (Op, Status, "Externalizing NamePath", ASL_NO_ABORT); return_VOID; } ACPI_DEBUG_PRINT_RAW ((ACPI_DB_OPTIMIZATIONS, "CURRENT SCOPE: (%2u) %-37s FULL PATH TO NAME: (%2u) %-32s ACTUAL AML:%-32s\n", (UINT32) CurrentPath.Length, (char *) CurrentPath.Pointer, (UINT32) TargetPath.Length, (char *) TargetPath.Pointer, ExternalNameString)); ACPI_FREE (ExternalNameString); /* * Attempt an optmization depending on the type of namepath */ if (Flags & (AML_NAMED | AML_CREATE)) { /* * This is a named opcode and the namepath is a name declaration, not * a reference. */ Status = OptOptimizeNameDeclaration (Op, WalkState, CurrentNode, TargetNode, AmlNameString, &NewPath); if (ACPI_FAILURE (Status)) { /* * 2) now attempt to * optimize the namestring with carats (up-arrow) */ Status = OptBuildShortestPath (Op, WalkState, CurrentNode, TargetNode, &CurrentPath, &TargetPath, AmlNameStringLength, 1, &NewPath); } } else { /* * This is a reference to an existing named object * * 1) Check if search-to-root can be utilized using the last * NameSeg of the NamePath */ Status = OptSearchToRoot (Op, WalkState, CurrentNode, TargetNode, &TargetPath, &NewPath); if (ACPI_FAILURE (Status)) { /* * 2) Search-to-root could not be used, now attempt to * optimize the namestring with carats (up-arrow) */ Status = OptBuildShortestPath (Op, WalkState, CurrentNode, TargetNode, &CurrentPath, &TargetPath, AmlNameStringLength, 0, &NewPath); } } /* * Success from above indicates that the NamePath was successfully * optimized. We need to update the parse op with the new name */ if (ACPI_SUCCESS (Status)) { HowMuchShorter = (AmlNameStringLength - ACPI_STRLEN (NewPath)); OptTotal += HowMuchShorter; ACPI_DEBUG_PRINT_RAW ((ACPI_DB_OPTIMIZATIONS, " REDUCED BY %2u (TOTAL SAVED %2u)", (UINT32) HowMuchShorter, OptTotal)); if (Flags & AML_NAMED) { if (Op->Asl.AmlOpcode == AML_ALIAS_OP) { /* * ALIAS is the only oddball opcode, the name declaration * (alias name) is the second operand */ Op->Asl.Child->Asl.Next->Asl.Value.String = NewPath; Op->Asl.Child->Asl.Next->Asl.AmlLength = ACPI_STRLEN (NewPath); } else { Op->Asl.Child->Asl.Value.String = NewPath; Op->Asl.Child->Asl.AmlLength = ACPI_STRLEN (NewPath); } } else if (Flags & AML_CREATE) { /* Name must appear as the last parameter */ NextOp = Op->Asl.Child; while (!(NextOp->Asl.CompileFlags & NODE_IS_NAME_DECLARATION)) { NextOp = NextOp->Asl.Next; } /* Update the parse node with the new NamePath */ NextOp->Asl.Value.String = NewPath; NextOp->Asl.AmlLength = ACPI_STRLEN (NewPath); } else { /* Update the parse node with the new NamePath */ Op->Asl.Value.String = NewPath; Op->Asl.AmlLength = ACPI_STRLEN (NewPath); } } else { ACPI_DEBUG_PRINT_RAW ((ACPI_DB_OPTIMIZATIONS, " ALREADY OPTIMAL")); } /* Cleanup path buffers */ ACPI_FREE (TargetPath.Pointer); ACPI_FREE (CurrentPath.Pointer); ACPI_DEBUG_PRINT_RAW ((ACPI_DB_OPTIMIZATIONS, "\n")); return_VOID; } src/acpica/source/compiler/aslpredef.c000066400000000000000000000674651231470457100203360ustar00rootroot00000000000000/****************************************************************************** * * Module Name: aslpredef - support for ACPI predefined names * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #define ACPI_CREATE_PREDEFINED_TABLE #define ACPI_CREATE_RESOURCE_TABLE #include "aslcompiler.h" #include "aslcompiler.y.h" #include "acpredef.h" #include "acnamesp.h" #define _COMPONENT ACPI_COMPILER ACPI_MODULE_NAME ("aslpredef") /* Local prototypes */ static void ApCheckForUnexpectedReturnValue ( ACPI_PARSE_OBJECT *Op, ASL_METHOD_INFO *MethodInfo); static UINT32 ApCheckForSpecialName ( ACPI_PARSE_OBJECT *Op, char *Name); /******************************************************************************* * * FUNCTION: ApCheckForPredefinedMethod * * PARAMETERS: Op - A parse node of type "METHOD". * MethodInfo - Saved info about this method * * RETURN: None * * DESCRIPTION: If method is a predefined name, check that the number of * arguments and the return type (returns a value or not) * is correct. * ******************************************************************************/ BOOLEAN ApCheckForPredefinedMethod ( ACPI_PARSE_OBJECT *Op, ASL_METHOD_INFO *MethodInfo) { UINT32 Index; UINT32 RequiredArgCount; const ACPI_PREDEFINED_INFO *ThisName; /* Check for a match against the predefined name list */ Index = ApCheckForPredefinedName (Op, 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 */ /* Just return, nothing to do */ return (FALSE); case ACPI_EVENT_RESERVED_NAME: /* _Lxx/_Exx/_Wxx/_Qxx methods */ Gbl_ReservedMethods++; /* NumArguments must be zero for all _Lxx/_Exx/_Wxx/_Qxx methods */ if (MethodInfo->NumArguments != 0) { sprintf (MsgBuffer, "%s requires %u", Op->Asl.ExternalName, 0); AslError (ASL_WARNING, ASL_MSG_RESERVED_ARG_COUNT_HI, Op, MsgBuffer); } break; default: /* * Matched a predefined method name - validate the ASL-defined * argument count against the ACPI specification. * * Some methods are allowed to have a "minimum" number of args * (_SCP) because their definition in ACPI has changed over time. */ Gbl_ReservedMethods++; ThisName = &AcpiGbl_PredefinedMethods[Index]; RequiredArgCount = METHOD_GET_ARG_COUNT (ThisName->Info.ArgumentList); if (MethodInfo->NumArguments != RequiredArgCount) { sprintf (MsgBuffer, "%4.4s requires %u", ThisName->Info.Name, RequiredArgCount); if (MethodInfo->NumArguments < RequiredArgCount) { AslError (ASL_WARNING, ASL_MSG_RESERVED_ARG_COUNT_LO, Op, MsgBuffer); } else if ((MethodInfo->NumArguments > RequiredArgCount) && !(ThisName->Info.ArgumentList & ARG_COUNT_IS_MINIMUM)) { AslError (ASL_WARNING, ASL_MSG_RESERVED_ARG_COUNT_HI, Op, MsgBuffer); } } /* * Check if method returns no value, but the predefined name is * required to return a value */ if (MethodInfo->NumReturnNoValue && ThisName->Info.ExpectedBtypes) { AcpiUtGetExpectedReturnTypes (StringBuffer, ThisName->Info.ExpectedBtypes); sprintf (MsgBuffer, "%s required for %4.4s", StringBuffer, ThisName->Info.Name); AslError (ASL_WARNING, ASL_MSG_RESERVED_RETURN_VALUE, Op, MsgBuffer); } break; } return (TRUE); } /******************************************************************************* * * FUNCTION: ApCheckForUnexpectedReturnValue * * PARAMETERS: Op - A parse node of type "RETURN". * MethodInfo - Saved info about this method * * RETURN: None * * DESCRIPTION: Check for an unexpected return value from a predefined method. * Invoked for predefined methods that are defined to not return * any value. If there is a return value, issue a remark, since * the ASL writer may be confused as to the method definition * and/or functionality. * * Note: We ignore all return values of "Zero", since this is what a standalone * Return() statement will always generate -- so we ignore it here -- * i.e., there is no difference between Return() and Return(Zero). * Also, a null Return() will be disassembled to return(Zero) -- so, we * don't want to generate extraneous remarks/warnings for a disassembled * ASL file. * ******************************************************************************/ static void ApCheckForUnexpectedReturnValue ( ACPI_PARSE_OBJECT *Op, ASL_METHOD_INFO *MethodInfo) { ACPI_PARSE_OBJECT *ReturnValueOp; /* Ignore Return() and Return(Zero) (they are the same) */ ReturnValueOp = Op->Asl.Child; if (ReturnValueOp->Asl.ParseOpcode == PARSEOP_ZERO) { return; } /* We have a valid return value, but the reserved name did not expect it */ AslError (ASL_WARNING, ASL_MSG_RESERVED_NO_RETURN_VAL, Op, MethodInfo->Op->Asl.ExternalName); } /******************************************************************************* * * 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. Issue a warning if there is * a valid return value, but the reserved method defines no * return value. * ******************************************************************************/ void ApCheckPredefinedReturnValue ( ACPI_PARSE_OBJECT *Op, ASL_METHOD_INFO *MethodInfo) { UINT32 Index; ACPI_PARSE_OBJECT *ReturnValueOp; const ACPI_PREDEFINED_INFO *ThisName; /* * Check parent method for a match against the predefined name list. * * Note: Disable compiler errors/warnings because any errors will be * caught when analyzing the parent method. Eliminates duplicate errors. */ Gbl_AllExceptionsDisabled = TRUE; Index = ApCheckForPredefinedName (MethodInfo->Op, MethodInfo->Op->Asl.NameSeg); Gbl_AllExceptionsDisabled = FALSE; switch (Index) { case ACPI_EVENT_RESERVED_NAME: /* _Lxx/_Exx/_Wxx/_Qxx methods */ /* No return value expected, warn if there is one */ ApCheckForUnexpectedReturnValue (Op, MethodInfo); return; 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 */ /* Just return, nothing to do */ return; default: /* A standard predefined ACPI name */ ThisName = &AcpiGbl_PredefinedMethods[Index]; if (!ThisName->Info.ExpectedBtypes) { /* No return value expected, warn if there is one */ ApCheckForUnexpectedReturnValue (Op, MethodInfo); 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 (ThisName->Info.Name, ReturnValueOp, ThisName->Info.ExpectedBtypes, ACPI_NOT_PACKAGE_ELEMENT); /* For packages, check the individual package elements */ if (ReturnValueOp->Asl.ParseOpcode == PARSEOP_PACKAGE) { ApCheckPackage (ReturnValueOp, ThisName); } 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 * Name - The ACPI name to be checked * * RETURN: None * * DESCRIPTION: Check for a predefined name for a static object (created via * the ASL Name operator). If it is a predefined ACPI name, ensure * that the name does not require any arguments (which would * require a control method implemenation of the name), and that * the type of the object is one of the expected types for the * predefined name. * ******************************************************************************/ void ApCheckForPredefinedObject ( ACPI_PARSE_OBJECT *Op, char *Name) { UINT32 Index; ACPI_PARSE_OBJECT *ObjectOp; const ACPI_PREDEFINED_INFO *ThisName; /* * Check for a real predefined name -- not a resource descriptor name * or a predefined scope name */ Index = ApCheckForPredefinedName (Op, Name); 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 */ /* Nothing to do */ return; case ACPI_EVENT_RESERVED_NAME: /* _Lxx/_Exx/_Wxx/_Qxx methods */ /* * These names must be control methods, by definition in ACPI spec. * Also because they are defined to return no value. None of them * require any arguments. */ AslError (ASL_ERROR, ASL_MSG_RESERVED_METHOD, Op, "with zero arguments"); return; default: break; } /* A standard predefined ACPI name */ /* * If this predefined name requires input arguments, then * it must be implemented as a control method */ ThisName = &AcpiGbl_PredefinedMethods[Index]; if (METHOD_GET_ARG_COUNT (ThisName->Info.ArgumentList) > 0) { AslError (ASL_ERROR, ASL_MSG_RESERVED_METHOD, Op, "with arguments"); return; } /* * If no return value is expected from this predefined name, then * it follows that it must be implemented as a control method * (with zero args, because the args > 0 case was handled above) * Examples are: _DIS, _INI, _IRC, _OFF, _ON, _PSx */ if (!ThisName->Info.ExpectedBtypes) { AslError (ASL_ERROR, ASL_MSG_RESERVED_METHOD, Op, "with zero arguments"); return; } /* Typecheck the actual object, it is the next argument */ ObjectOp = Op->Asl.Child->Asl.Next; ApCheckObjectType (ThisName->Info.Name, Op->Asl.Child->Asl.Next, ThisName->Info.ExpectedBtypes, ACPI_NOT_PACKAGE_ELEMENT); /* For packages, check the individual package elements */ if (ObjectOp->Asl.ParseOpcode == PARSEOP_PACKAGE) { ApCheckPackage (ObjectOp, ThisName); } } /******************************************************************************* * * FUNCTION: ApCheckForPredefinedName * * PARAMETERS: Op - A parse node * Name - NameSeg to check * * RETURN: None * * DESCRIPTION: Check a NameSeg against the reserved list. * ******************************************************************************/ UINT32 ApCheckForPredefinedName ( ACPI_PARSE_OBJECT *Op, char *Name) { UINT32 i; const ACPI_PREDEFINED_INFO *ThisName; if (Name[0] == 0) { AcpiOsPrintf ("Found a null name, external = %s\n", Op->Asl.ExternalName); } /* All reserved names are prefixed with a single underscore */ if (Name[0] != '_') { return (ACPI_NOT_RESERVED_NAME); } /* Check for a standard predefined method name */ ThisName = AcpiGbl_PredefinedMethods; for (i = 0; ThisName->Info.Name[0]; i++) { if (ACPI_COMPARE_NAME (Name, ThisName->Info.Name)) { /* Return index into predefined array */ return (i); } ThisName++; /* Does not account for extra package data, but is OK */ } /* Check for resource names and predefined scope names */ ThisName = AcpiGbl_ResourceNames; while (ThisName->Info.Name[0]) { if (ACPI_COMPARE_NAME (Name, ThisName->Info.Name)) { return (ACPI_PREDEFINED_NAME); } ThisName++; } ThisName = AcpiGbl_ScopeNames; while (ThisName->Info.Name[0]) { if (ACPI_COMPARE_NAME (Name, ThisName->Info.Name)) { return (ACPI_PREDEFINED_NAME); } ThisName++; } /* Check for _Lxx/_Exx/_Wxx/_Qxx/_T_x. Warning if unknown predefined name */ return (ApCheckForSpecialName (Op, Name)); } /******************************************************************************* * * FUNCTION: ApCheckForSpecialName * * PARAMETERS: Op - A parse node * Name - NameSeg to check * * RETURN: None * * DESCRIPTION: Check for the "special" predefined names - * _Lxx, _Exx, _Qxx, _Wxx, and _T_x * ******************************************************************************/ static UINT32 ApCheckForSpecialName ( ACPI_PARSE_OBJECT *Op, char *Name) { /* * Check for the "special" predefined names. We already know that the * first character is an underscore. * GPE: _Lxx * GPE: _Exx * GPE: _Wxx * EC: _Qxx */ if ((Name[1] == 'L') || (Name[1] == 'E') || (Name[1] == 'W') || (Name[1] == 'Q')) { /* The next two characters must be hex digits */ if ((isxdigit ((int) Name[2])) && (isxdigit ((int) Name[3]))) { return (ACPI_EVENT_RESERVED_NAME); } } /* Check for the names reserved for the compiler itself: _T_x */ else if ((Op->Asl.ExternalName[1] == 'T') && (Op->Asl.ExternalName[2] == '_')) { /* Ignore if actually emitted by the compiler */ if (Op->Asl.CompileFlags & NODE_COMPILER_EMITTED) { return (ACPI_NOT_RESERVED_NAME); } /* * Was not actually emitted by the compiler. This is a special case, * however. If the ASL code being compiled was the result of a * dissasembly, it may possibly contain valid compiler-emitted names * of the form "_T_x". We don't want to issue an error or even a * warning and force the user to manually change the names. So, we * will issue a remark instead. */ AslError (ASL_REMARK, ASL_MSG_COMPILER_RESERVED, Op, Op->Asl.ExternalName); return (ACPI_COMPILER_RESERVED_NAME); } /* * The name didn't match any of the known predefined names. Flag it as a * warning, since the entire namespace starting with an underscore is * reserved by the ACPI spec. */ AslError (ASL_WARNING, ASL_MSG_UNKNOWN_RESERVED_NAME, Op, Op->Asl.ExternalName); return (ACPI_NOT_RESERVED_NAME); } /******************************************************************************* * * FUNCTION: ApCheckObjectType * * PARAMETERS: PredefinedName - Name of the predefined object we are checking * Op - Current parse node * ExpectedBtypes - Bitmap of expected return type(s) * PackageIndex - Index of object within parent package (if * applicable - ACPI_NOT_PACKAGE_ELEMENT * otherwise) * * RETURN: None * * DESCRIPTION: Check if the object type is one of the types that is expected * by the predefined name. Only a limited number of object types * can be returned by the predefined names. * ******************************************************************************/ ACPI_STATUS ApCheckObjectType ( const char *PredefinedName, ACPI_PARSE_OBJECT *Op, UINT32 ExpectedBtypes, UINT32 PackageIndex) { UINT32 ReturnBtype; char *TypeName; if (!Op) { return (AE_TYPE); } /* Map the parse opcode to a bitmapped return type (RTYPE) */ switch (Op->Asl.ParseOpcode) { case PARSEOP_ZERO: case PARSEOP_ONE: case PARSEOP_ONES: case PARSEOP_INTEGER: ReturnBtype = ACPI_RTYPE_INTEGER; TypeName = "Integer"; break; case PARSEOP_STRING_LITERAL: ReturnBtype = ACPI_RTYPE_STRING; TypeName = "String"; break; case PARSEOP_BUFFER: ReturnBtype = ACPI_RTYPE_BUFFER; TypeName = "Buffer"; break; case PARSEOP_PACKAGE: case PARSEOP_VAR_PACKAGE: ReturnBtype = ACPI_RTYPE_PACKAGE; TypeName = "Package"; break; case PARSEOP_NAMESEG: case PARSEOP_NAMESTRING: /* * Ignore any named references within a package object. * * For Package objects, references are allowed instead of any of the * standard data types (Integer/String/Buffer/Package). These * references are resolved at runtime. NAMESEG and NAMESTRING are * impossible to typecheck at compile time because the type of * any named object can be changed at runtime (for example, * CopyObject will change the type of the target object). */ if (PackageIndex != ACPI_NOT_PACKAGE_ELEMENT) { return (AE_OK); } ReturnBtype = ACPI_RTYPE_REFERENCE; TypeName = "Reference"; break; default: /* Not one of the supported object types */ TypeName = UtGetOpName (Op->Asl.ParseOpcode); goto TypeErrorExit; } /* Exit if the object is one of the expected types */ if (ReturnBtype & ExpectedBtypes) { return (AE_OK); } TypeErrorExit: /* Format the expected types and emit an error message */ AcpiUtGetExpectedReturnTypes (StringBuffer, ExpectedBtypes); if (PackageIndex == ACPI_NOT_PACKAGE_ELEMENT) { sprintf (MsgBuffer, "%4.4s: found %s, %s required", PredefinedName, TypeName, StringBuffer); } else { sprintf (MsgBuffer, "%4.4s: found %s at index %u, %s required", PredefinedName, TypeName, PackageIndex, StringBuffer); } AslError (ASL_ERROR, ASL_MSG_RESERVED_OPERAND_TYPE, Op, MsgBuffer); return (AE_TYPE); } /******************************************************************************* * * FUNCTION: ApDisplayReservedNames * * PARAMETERS: None * * RETURN: None * * DESCRIPTION: Dump information about the ACPI predefined names and predefined * resource descriptor names. * ******************************************************************************/ void ApDisplayReservedNames ( void) { const ACPI_PREDEFINED_INFO *ThisName; UINT32 Count; UINT32 NumTypes; /* * Predefined names/methods */ printf ("\nPredefined Name Information\n\n"); Count = 0; ThisName = AcpiGbl_PredefinedMethods; while (ThisName->Info.Name[0]) { AcpiUtDisplayPredefinedMethod (MsgBuffer, ThisName, FALSE); Count++; ThisName = AcpiUtGetNextPredefinedMethod (ThisName); } printf ("%u Predefined Names are recognized\n", Count); /* * Resource Descriptor names */ printf ("\nPredefined Names for Resource Descriptor Fields\n\n"); Count = 0; ThisName = AcpiGbl_ResourceNames; while (ThisName->Info.Name[0]) { NumTypes = AcpiUtGetResourceBitWidth (MsgBuffer, ThisName->Info.ArgumentList); printf ("%4.4s Field is %s bits wide%s\n", ThisName->Info.Name, MsgBuffer, (NumTypes > 1) ? " (depending on descriptor type)" : ""); Count++; ThisName++; } printf ("%u Resource Descriptor Field Names are recognized\n", Count); /* * Predefined scope names */ printf ("\nPredefined Scope/Device Names (automatically created at root)\n\n"); ThisName = AcpiGbl_ScopeNames; while (ThisName->Info.Name[0]) { printf ("%4.4s Scope/Device\n", ThisName->Info.Name); ThisName++; } } src/acpica/source/compiler/aslprepkg.c000066400000000000000000000622741231470457100203520ustar00rootroot00000000000000/****************************************************************************** * * Module Name: aslprepkg - support for ACPI predefined name package objects * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #include "aslcompiler.h" #include "aslcompiler.y.h" #include "acpredef.h" #define _COMPONENT ACPI_COMPILER ACPI_MODULE_NAME ("aslprepkg") /* Local prototypes */ static void ApCheckPackageElements ( const char *PredefinedName, ACPI_PARSE_OBJECT *Op, UINT8 Type1, UINT32 Count1, UINT8 Type2, UINT32 Count2); static void ApCheckPackageList ( const char *PredefinedName, ACPI_PARSE_OBJECT *ParentOp, const ACPI_PREDEFINED_INFO *Package, UINT32 StartIndex, UINT32 Count); static void ApPackageTooSmall ( const char *PredefinedName, ACPI_PARSE_OBJECT *Op, UINT32 Count, UINT32 ExpectedCount); static void ApZeroLengthPackage ( const char *PredefinedName, ACPI_PARSE_OBJECT *Op); static void ApPackageTooLarge ( const char *PredefinedName, ACPI_PARSE_OBJECT *Op, UINT32 Count, UINT32 ExpectedCount); /******************************************************************************* * * FUNCTION: ApCheckPackage * * PARAMETERS: ParentOp - Parser op for the package * Predefined - Pointer to package-specific info for * the method * * RETURN: None * * DESCRIPTION: Top-level validation for predefined name return package * objects. * ******************************************************************************/ void ApCheckPackage ( ACPI_PARSE_OBJECT *ParentOp, const ACPI_PREDEFINED_INFO *Predefined) { ACPI_PARSE_OBJECT *Op; const ACPI_PREDEFINED_INFO *Package; ACPI_STATUS Status; UINT32 ExpectedCount; UINT32 Count; UINT32 i; /* The package info for this name is in the next table entry */ Package = Predefined + 1; /* First child is the package length */ Op = ParentOp->Asl.Child; Count = (UINT32) Op->Asl.Value.Integer; /* * Many of the variable-length top-level packages are allowed to simply * have zero elements. This allows the BIOS to tell the host that even * though the predefined name/method exists, the feature is not supported. * Other package types require one or more elements. In any case, there * is no need to continue validation. */ if (!Count) { switch (Package->RetInfo.Type) { case ACPI_PTYPE1_FIXED: case ACPI_PTYPE1_OPTION: case ACPI_PTYPE2_PKG_COUNT: case ACPI_PTYPE2_REV_FIXED: ApZeroLengthPackage (Predefined->Info.Name, ParentOp); break; case ACPI_PTYPE1_VAR: case ACPI_PTYPE2: case ACPI_PTYPE2_COUNT: case ACPI_PTYPE2_FIXED: case ACPI_PTYPE2_MIN: case ACPI_PTYPE2_FIX_VAR: default: break; } return; } /* Get the first element of the package */ Op = Op->Asl.Next; /* Decode the package type */ switch (Package->RetInfo.Type) { case ACPI_PTYPE1_FIXED: /* * The package count is fixed and there are no subpackages * * If package is too small, exit. * If package is larger than expected, issue warning but continue */ ExpectedCount = Package->RetInfo.Count1 + Package->RetInfo.Count2; if (Count < ExpectedCount) { goto PackageTooSmall; } else if (Count > ExpectedCount) { ApPackageTooLarge (Predefined->Info.Name, ParentOp, Count, ExpectedCount); } /* Validate all elements of the package */ ApCheckPackageElements (Predefined->Info.Name, Op, Package->RetInfo.ObjectType1, Package->RetInfo.Count1, Package->RetInfo.ObjectType2, Package->RetInfo.Count2); break; case ACPI_PTYPE1_VAR: /* * The package count is variable, there are no subpackages, * and all elements must be of the same type */ for (i = 0; i < Count; i++) { ApCheckObjectType (Predefined->Info.Name, Op, Package->RetInfo.ObjectType1, i); Op = Op->Asl.Next; } break; case ACPI_PTYPE1_OPTION: /* * The package count is variable, there are no subpackages. * There are a fixed number of required elements, and a variable * number of optional elements. * * Check if package is at least as large as the minimum required */ ExpectedCount = Package->RetInfo3.Count; if (Count < ExpectedCount) { goto PackageTooSmall; } /* Variable number of sub-objects */ for (i = 0; i < Count; i++) { if (i < Package->RetInfo3.Count) { /* These are the required package elements (0, 1, or 2) */ ApCheckObjectType (Predefined->Info.Name, Op, Package->RetInfo3.ObjectType[i], i); } else { /* These are the optional package elements */ ApCheckObjectType (Predefined->Info.Name, Op, Package->RetInfo3.TailObjectType, i); } Op = Op->Asl.Next; } break; case ACPI_PTYPE2_REV_FIXED: /* First element is the (Integer) revision */ ApCheckObjectType (Predefined->Info.Name, Op, ACPI_RTYPE_INTEGER, 0); Op = Op->Asl.Next; Count--; /* Examine the subpackages */ ApCheckPackageList (Predefined->Info.Name, Op, Package, 1, Count); break; case ACPI_PTYPE2_PKG_COUNT: /* First element is the (Integer) count of subpackages to follow */ Status = ApCheckObjectType (Predefined->Info.Name, Op, ACPI_RTYPE_INTEGER, 0); /* We must have an integer count from above (otherwise, use Count) */ if (ACPI_SUCCESS (Status)) { /* * Count cannot be larger than the parent package length, but * allow it to be smaller. The >= accounts for the Integer above. */ ExpectedCount = (UINT32) Op->Asl.Value.Integer; if (ExpectedCount >= Count) { goto PackageTooSmall; } Count = ExpectedCount; } Op = Op->Asl.Next; /* Examine the subpackages */ ApCheckPackageList (Predefined->Info.Name, Op, Package, 1, Count); break; case ACPI_PTYPE2: case ACPI_PTYPE2_FIXED: case ACPI_PTYPE2_MIN: case ACPI_PTYPE2_COUNT: case ACPI_PTYPE2_FIX_VAR: /* * These types all return a single Package that consists of a * variable number of subpackages. */ /* Examine the subpackages */ ApCheckPackageList (Predefined->Info.Name, Op, Package, 0, Count); break; default: return; } return; PackageTooSmall: ApPackageTooSmall (Predefined->Info.Name, ParentOp, Count, ExpectedCount); } /******************************************************************************* * * FUNCTION: ApCheckPackageElements * * PARAMETERS: PredefinedName - Name of the predefined object * Op - Parser op for the package * Type1 - Object type for first group * Count1 - Count for first group * Type2 - Object type for second group * Count2 - Count for second group * * RETURN: None * * DESCRIPTION: Validate all elements of a package. Works with packages that * are defined to contain up to two groups of different object * types. * ******************************************************************************/ static void ApCheckPackageElements ( const char *PredefinedName, ACPI_PARSE_OBJECT *Op, UINT8 Type1, UINT32 Count1, UINT8 Type2, UINT32 Count2) { UINT32 i; /* * Up to two groups of package elements are supported by the data * structure. All elements in each group must be of the same type. * The second group can have a count of zero. * * Aborts check upon a NULL package element, as this means (at compile * time) that the remainder of the package elements are also NULL * (This is the only way to create NULL package elements.) */ for (i = 0; (i < Count1) && Op; i++) { ApCheckObjectType (PredefinedName, Op, Type1, i); Op = Op->Asl.Next; } for (i = 0; (i < Count2) && Op; i++) { ApCheckObjectType (PredefinedName, Op, Type2, (i + Count1)); Op = Op->Asl.Next; } } /******************************************************************************* * * FUNCTION: ApCheckPackageList * * PARAMETERS: PredefinedName - Name of the predefined object * ParentOp - Parser op of the parent package * Package - Package info for this predefined name * StartIndex - Index in parent package where list begins * ParentCount - Element count of parent package * * RETURN: None * * DESCRIPTION: Validate the individual package elements for a predefined name. * Handles the cases where the predefined name is defined as a * Package of Packages (subpackages). These are the types: * * ACPI_PTYPE2 * ACPI_PTYPE2_FIXED * ACPI_PTYPE2_MIN * ACPI_PTYPE2_COUNT * ACPI_PTYPE2_FIX_VAR * ******************************************************************************/ static void ApCheckPackageList ( const char *PredefinedName, ACPI_PARSE_OBJECT *ParentOp, const ACPI_PREDEFINED_INFO *Package, UINT32 StartIndex, UINT32 ParentCount) { ACPI_PARSE_OBJECT *SubPackageOp = ParentOp; ACPI_PARSE_OBJECT *Op; ACPI_STATUS Status; UINT32 Count; UINT32 ExpectedCount; UINT32 i; UINT32 j; /* * Validate each subpackage in the parent Package * * Note: We ignore NULL package elements on the assumption that * they will be initialized by the BIOS or other ASL code. */ for (i = 0; (i < ParentCount) && SubPackageOp; i++) { /* Each object in the list must be of type Package */ Status = ApCheckObjectType (PredefinedName, SubPackageOp, ACPI_RTYPE_PACKAGE, i + StartIndex); if (ACPI_FAILURE (Status)) { goto NextSubpackage; } /* Examine the different types of expected subpackages */ Op = SubPackageOp->Asl.Child; /* First child is the package length */ Count = (UINT32) Op->Asl.Value.Integer; Op = Op->Asl.Next; /* The subpackage must have at least one element */ if (!Count) { ApZeroLengthPackage (PredefinedName, SubPackageOp); goto NextSubpackage; } /* * Decode the package type. * PTYPE2 indicates that a "package of packages" is expected for * this name. The various flavors of PTYPE2 indicate the number * and format of the subpackages. */ switch (Package->RetInfo.Type) { case ACPI_PTYPE2: case ACPI_PTYPE2_PKG_COUNT: case ACPI_PTYPE2_REV_FIXED: /* Each subpackage has a fixed number of elements */ ExpectedCount = Package->RetInfo.Count1 + Package->RetInfo.Count2; if (Count < ExpectedCount) { ApPackageTooSmall (PredefinedName, SubPackageOp, Count, ExpectedCount); break; } ApCheckPackageElements (PredefinedName, Op, Package->RetInfo.ObjectType1, Package->RetInfo.Count1, Package->RetInfo.ObjectType2, Package->RetInfo.Count2); break; case ACPI_PTYPE2_FIX_VAR: /* * Each subpackage has a fixed number of elements and an * optional element */ ExpectedCount = Package->RetInfo.Count1 + Package->RetInfo.Count2; if (Count < ExpectedCount) { ApPackageTooSmall (PredefinedName, SubPackageOp, Count, ExpectedCount); break; } ApCheckPackageElements (PredefinedName, Op, Package->RetInfo.ObjectType1, Package->RetInfo.Count1, Package->RetInfo.ObjectType2, Count - Package->RetInfo.Count1); break; case ACPI_PTYPE2_FIXED: /* Each subpackage has a fixed length */ ExpectedCount = Package->RetInfo2.Count; if (Count < ExpectedCount) { ApPackageTooSmall (PredefinedName, SubPackageOp, Count, ExpectedCount); break; } /* Check each object/type combination */ for (j = 0; j < ExpectedCount; j++) { ApCheckObjectType (PredefinedName, Op, Package->RetInfo2.ObjectType[j], j); Op = Op->Asl.Next; } break; case ACPI_PTYPE2_MIN: /* Each subpackage has a variable but minimum length */ ExpectedCount = Package->RetInfo.Count1; if (Count < ExpectedCount) { ApPackageTooSmall (PredefinedName, SubPackageOp, Count, ExpectedCount); break; } /* Check the type of each subpackage element */ ApCheckPackageElements (PredefinedName, Op, Package->RetInfo.ObjectType1, Count, 0, 0); break; case ACPI_PTYPE2_COUNT: /* * First element is the (Integer) count of elements, including * the count field (the ACPI name is NumElements) */ Status = ApCheckObjectType (PredefinedName, Op, ACPI_RTYPE_INTEGER, 0); /* We must have an integer count from above (otherwise, use Count) */ if (ACPI_SUCCESS (Status)) { /* * Make sure package is large enough for the Count and is * is as large as the minimum size */ ExpectedCount = (UINT32) Op->Asl.Value.Integer; if (Count < ExpectedCount) { ApPackageTooSmall (PredefinedName, SubPackageOp, Count, ExpectedCount); break; } else if (Count > ExpectedCount) { ApPackageTooLarge (PredefinedName, SubPackageOp, Count, ExpectedCount); } /* Some names of this type have a minimum length */ if (Count < Package->RetInfo.Count1) { ExpectedCount = Package->RetInfo.Count1; ApPackageTooSmall (PredefinedName, SubPackageOp, Count, ExpectedCount); break; } Count = ExpectedCount; } /* Check the type of each subpackage element */ Op = Op->Asl.Next; ApCheckPackageElements (PredefinedName, Op, Package->RetInfo.ObjectType1, (Count - 1), 0, 0); break; default: break; } NextSubpackage: SubPackageOp = SubPackageOp->Asl.Next; } } /******************************************************************************* * * FUNCTION: ApPackageTooSmall * * PARAMETERS: PredefinedName - Name of the predefined object * Op - Current parser op * Count - Actual package element count * ExpectedCount - Expected package element count * * RETURN: None * * DESCRIPTION: Issue error message for a package that is smaller than * required. * ******************************************************************************/ static void ApPackageTooSmall ( const char *PredefinedName, ACPI_PARSE_OBJECT *Op, UINT32 Count, UINT32 ExpectedCount) { sprintf (MsgBuffer, "%s: length %u, required minimum is %u", PredefinedName, Count, ExpectedCount); AslError (ASL_ERROR, ASL_MSG_RESERVED_PACKAGE_LENGTH, Op, MsgBuffer); } /******************************************************************************* * * FUNCTION: ApZeroLengthPackage * * PARAMETERS: PredefinedName - Name of the predefined object * Op - Current parser op * * RETURN: None * * DESCRIPTION: Issue error message for a zero-length package (a package that * is required to have a non-zero length). Variable length * packages seem to be allowed to have zero length, however. * Even if not allowed, BIOS code does it. * ******************************************************************************/ static void ApZeroLengthPackage ( const char *PredefinedName, ACPI_PARSE_OBJECT *Op) { sprintf (MsgBuffer, "%s: length is zero", PredefinedName); AslError (ASL_ERROR, ASL_MSG_RESERVED_PACKAGE_LENGTH, Op, MsgBuffer); } /******************************************************************************* * * FUNCTION: ApPackageTooLarge * * PARAMETERS: PredefinedName - Name of the predefined object * Op - Current parser op * Count - Actual package element count * ExpectedCount - Expected package element count * * RETURN: None * * DESCRIPTION: Issue a remark for a package that is larger than expected. * ******************************************************************************/ static void ApPackageTooLarge ( const char *PredefinedName, ACPI_PARSE_OBJECT *Op, UINT32 Count, UINT32 ExpectedCount) { sprintf (MsgBuffer, "%s: length is %u, only %u required", PredefinedName, Count, ExpectedCount); AslError (ASL_REMARK, ASL_MSG_RESERVED_PACKAGE_LENGTH, Op, MsgBuffer); } src/acpica/source/compiler/aslresource.c000066400000000000000000001105471231470457100207060ustar00rootroot00000000000000/****************************************************************************** * * Module Name: aslresource - Resource template/descriptor utilities * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #include "aslcompiler.h" #include "aslcompiler.y.h" #include "amlcode.h" #define _COMPONENT ACPI_COMPILER ACPI_MODULE_NAME ("aslresource") /******************************************************************************* * * FUNCTION: RsSmallAddressCheck * * PARAMETERS: Minimum - Address Min value * Maximum - Address Max value * Length - Address range value * Alignment - Address alignment value * MinOp - Original Op for Address Min * MaxOp - Original Op for Address Max * LengthOp - Original Op for address range * AlignOp - Original Op for address alignment. If * NULL, means "zero value for alignment is * OK, and means 64K alignment" (for * Memory24 descriptor) * Op - Parent Op for entire construct * * RETURN: None. Adds error messages to error log if necessary * * DESCRIPTION: Perform common value checks for "small" address descriptors. * Currently: * Io, Memory24, Memory32 * ******************************************************************************/ void RsSmallAddressCheck ( UINT8 Type, UINT32 Minimum, UINT32 Maximum, UINT32 Length, UINT32 Alignment, ACPI_PARSE_OBJECT *MinOp, ACPI_PARSE_OBJECT *MaxOp, ACPI_PARSE_OBJECT *LengthOp, ACPI_PARSE_OBJECT *AlignOp, ACPI_PARSE_OBJECT *Op) { if (Gbl_NoResourceChecking) { return; } /* * Check for a so-called "null descriptor". These are descriptors that are * created with most fields set to zero. The intent is that the descriptor * will be updated/completed at runtime via a BufferField. * * If the descriptor does NOT have a resource tag, it cannot be referenced * by a BufferField and we will flag this as an error. Conversely, if * the descriptor has a resource tag, we will assume that a BufferField * will be used to dynamically update it, so no error. * * A possible enhancement to this check would be to verify that in fact * a BufferField is created using the resource tag, and perhaps even * verify that a Store is performed to the BufferField. * * Note: for these descriptors, Alignment is allowed to be zero */ if (!Minimum && !Maximum && !Length) { if (!Op->Asl.ExternalName) { /* No resource tag. Descriptor is fixed and is also illegal */ AslError (ASL_ERROR, ASL_MSG_NULL_DESCRIPTOR, Op, NULL); } return; } /* Special case for Memory24, values are compressed */ if (Type == ACPI_RESOURCE_NAME_MEMORY24) { if (!Alignment) /* Alignment==0 means 64K - no invalid alignment */ { Alignment = ACPI_UINT16_MAX + 1; } Minimum <<= 8; Maximum <<= 8; Length *= 256; } /* IO descriptor has different definition of min/max, don't check */ if (Type != ACPI_RESOURCE_NAME_IO) { /* Basic checks on Min/Max/Length */ if (Minimum > Maximum) { AslError (ASL_ERROR, ASL_MSG_INVALID_MIN_MAX, MinOp, NULL); } else if (Length > (Maximum - Minimum + 1)) { AslError (ASL_ERROR, ASL_MSG_INVALID_LENGTH, LengthOp, NULL); } } /* Alignment of zero is not in ACPI spec, but is used to mean byte acc */ if (!Alignment) { Alignment = 1; } /* Addresses must be an exact multiple of the alignment value */ if (Minimum % Alignment) { AslError (ASL_ERROR, ASL_MSG_ALIGNMENT, MinOp, NULL); } if (Maximum % Alignment) { AslError (ASL_ERROR, ASL_MSG_ALIGNMENT, MaxOp, NULL); } } /******************************************************************************* * * FUNCTION: RsLargeAddressCheck * * PARAMETERS: Minimum - Address Min value * Maximum - Address Max value * Length - Address range value * Granularity - Address granularity value * Flags - General flags for address descriptors: * _MIF, _MAF, _DEC * MinOp - Original Op for Address Min * MaxOp - Original Op for Address Max * LengthOp - Original Op for address range * GranOp - Original Op for address granularity * Op - Parent Op for entire construct * * RETURN: None. Adds error messages to error log if necessary * * DESCRIPTION: Perform common value checks for "large" address descriptors. * Currently: * WordIo, WordBusNumber, WordSpace * DWordIo, DWordMemory, DWordSpace * QWordIo, QWordMemory, QWordSpace * ExtendedIo, ExtendedMemory, ExtendedSpace * * _MIF flag set means that the minimum address is fixed and is not relocatable * _MAF flag set means that the maximum address is fixed and is not relocatable * Length of zero means that the record size is variable * * This function implements the LEN/MIF/MAF/MIN/MAX/GRA rules within Table 6-40 * of the ACPI 4.0a specification. Added 04/2010. * ******************************************************************************/ void RsLargeAddressCheck ( UINT64 Minimum, UINT64 Maximum, UINT64 Length, UINT64 Granularity, UINT8 Flags, ACPI_PARSE_OBJECT *MinOp, ACPI_PARSE_OBJECT *MaxOp, ACPI_PARSE_OBJECT *LengthOp, ACPI_PARSE_OBJECT *GranOp, ACPI_PARSE_OBJECT *Op) { if (Gbl_NoResourceChecking) { return; } /* * Check for a so-called "null descriptor". These are descriptors that are * created with most fields set to zero. The intent is that the descriptor * will be updated/completed at runtime via a BufferField. * * If the descriptor does NOT have a resource tag, it cannot be referenced * by a BufferField and we will flag this as an error. Conversely, if * the descriptor has a resource tag, we will assume that a BufferField * will be used to dynamically update it, so no error. * * A possible enhancement to this check would be to verify that in fact * a BufferField is created using the resource tag, and perhaps even * verify that a Store is performed to the BufferField. */ if (!Minimum && !Maximum && !Length && !Granularity) { if (!Op->Asl.ExternalName) { /* No resource tag. Descriptor is fixed and is also illegal */ AslError (ASL_ERROR, ASL_MSG_NULL_DESCRIPTOR, Op, NULL); } return; } /* Basic checks on Min/Max/Length */ if (Minimum > Maximum) { AslError (ASL_ERROR, ASL_MSG_INVALID_MIN_MAX, MinOp, NULL); return; } else if (Length > (Maximum - Minimum + 1)) { AslError (ASL_ERROR, ASL_MSG_INVALID_LENGTH, LengthOp, NULL); return; } /* If specified (non-zero), ensure granularity is a power-of-two minus one */ if (Granularity) { if ((Granularity + 1) & Granularity) { AslError (ASL_ERROR, ASL_MSG_INVALID_GRANULARITY, GranOp, NULL); return; } } /* * Check the various combinations of Length, MinFixed, and MaxFixed */ if (Length) { /* Fixed non-zero length */ switch (Flags & (ACPI_RESOURCE_FLAG_MIF | ACPI_RESOURCE_FLAG_MAF)) { case 0: /* * Fixed length, variable locations (both _MIN and _MAX). * Length must be a multiple of granularity */ if (Granularity & Length) { AslError (ASL_ERROR, ASL_MSG_ALIGNMENT, LengthOp, NULL); } break; case (ACPI_RESOURCE_FLAG_MIF | ACPI_RESOURCE_FLAG_MAF): /* Fixed length, fixed location. Granularity must be zero */ if (Granularity != 0) { AslError (ASL_ERROR, ASL_MSG_INVALID_GRAN_FIXED, GranOp, NULL); } /* Length must be exactly the size of the min/max window */ if (Length != (Maximum - Minimum + 1)) { AslError (ASL_ERROR, ASL_MSG_INVALID_LENGTH_FIXED, LengthOp, NULL); } break; /* All other combinations are invalid */ case ACPI_RESOURCE_FLAG_MIF: case ACPI_RESOURCE_FLAG_MAF: default: AslError (ASL_ERROR, ASL_MSG_INVALID_ADDR_FLAGS, LengthOp, NULL); } } else { /* Variable length (length==0) */ switch (Flags & (ACPI_RESOURCE_FLAG_MIF | ACPI_RESOURCE_FLAG_MAF)) { case 0: /* * Both _MIN and _MAX are variable. * No additional requirements, just exit */ break; case ACPI_RESOURCE_FLAG_MIF: /* _MIN is fixed. _MIN must be multiple of _GRA */ /* * The granularity is defined by the ACPI specification to be a * power-of-two minus one, therefore the granularity is a * bitmask which can be used to easily validate the addresses. */ if (Granularity & Minimum) { AslError (ASL_ERROR, ASL_MSG_ALIGNMENT, MinOp, NULL); } break; case ACPI_RESOURCE_FLAG_MAF: /* _MAX is fixed. (_MAX + 1) must be multiple of _GRA */ if (Granularity & (Maximum + 1)) { AslError (ASL_ERROR, ASL_MSG_ALIGNMENT, MaxOp, "-1"); } break; /* Both MIF/MAF set is invalid if length is zero */ case (ACPI_RESOURCE_FLAG_MIF | ACPI_RESOURCE_FLAG_MAF): default: AslError (ASL_ERROR, ASL_MSG_INVALID_ADDR_FLAGS, LengthOp, NULL); } } } /******************************************************************************* * * FUNCTION: RsGetStringDataLength * * PARAMETERS: InitializerOp - Start of a subtree of init nodes * * RETURN: Valid string length if a string node is found (otherwise 0) * * DESCRIPTION: In a list of peer nodes, find the first one that contains a * string and return the length of the string. * ******************************************************************************/ UINT16 RsGetStringDataLength ( ACPI_PARSE_OBJECT *InitializerOp) { while (InitializerOp) { if (InitializerOp->Asl.ParseOpcode == PARSEOP_STRING_LITERAL) { return ((UINT16) (strlen (InitializerOp->Asl.Value.String) + 1)); } InitializerOp = ASL_GET_PEER_NODE (InitializerOp); } return (0); } /******************************************************************************* * * FUNCTION: RsAllocateResourceNode * * PARAMETERS: Size - Size of node in bytes * * RETURN: The allocated node - aborts on allocation failure * * DESCRIPTION: Allocate a resource description node and the resource * descriptor itself (the nodes are used to link descriptors). * ******************************************************************************/ ASL_RESOURCE_NODE * RsAllocateResourceNode ( UINT32 Size) { ASL_RESOURCE_NODE *Rnode; /* Allocate the node */ Rnode = UtLocalCalloc (sizeof (ASL_RESOURCE_NODE)); /* Allocate the resource descriptor itself */ Rnode->Buffer = UtLocalCalloc (Size); Rnode->BufferLength = Size; return (Rnode); } /******************************************************************************* * * FUNCTION: RsCreateResourceField * * PARAMETERS: Op - Resource field node * Name - Name of the field (Used only to reference * the field in the ASL, not in the AML) * ByteOffset - Offset from the field start * BitOffset - Additional bit offset * BitLength - Number of bits in the field * * RETURN: None, sets fields within the input node * * DESCRIPTION: Utility function to generate a named bit field within a * resource descriptor. Mark a node as 1) a field in a resource * descriptor, and 2) set the value to be a BIT offset * ******************************************************************************/ void RsCreateResourceField ( ACPI_PARSE_OBJECT *Op, char *Name, UINT32 ByteOffset, UINT32 BitOffset, UINT32 BitLength) { Op->Asl.ExternalName = Name; Op->Asl.CompileFlags |= NODE_IS_RESOURCE_FIELD; Op->Asl.Value.Tag.BitOffset = (ByteOffset * 8) + BitOffset; Op->Asl.Value.Tag.BitLength = BitLength; } /******************************************************************************* * * FUNCTION: RsSetFlagBits * * PARAMETERS: *Flags - Pointer to the flag byte * Op - Flag initialization node * Position - Bit position within the flag byte * Default - Used if the node is DEFAULT. * * RETURN: Sets bits within the *Flags output byte. * * DESCRIPTION: Set a bit in a cumulative flags word from an initialization * node. Will use a default value if the node is DEFAULT, meaning * that no value was specified in the ASL. Used to merge multiple * keywords into a single flags byte. * ******************************************************************************/ void RsSetFlagBits ( UINT8 *Flags, ACPI_PARSE_OBJECT *Op, UINT8 Position, UINT8 DefaultBit) { if (Op->Asl.ParseOpcode == PARSEOP_DEFAULT_ARG) { /* Use the default bit */ *Flags |= (DefaultBit << Position); } else { /* Use the bit specified in the initialization node */ *Flags |= (((UINT8) Op->Asl.Value.Integer) << Position); } } void RsSetFlagBits16 ( UINT16 *Flags, ACPI_PARSE_OBJECT *Op, UINT8 Position, UINT8 DefaultBit) { if (Op->Asl.ParseOpcode == PARSEOP_DEFAULT_ARG) { /* Use the default bit */ *Flags |= (DefaultBit << Position); } else { /* Use the bit specified in the initialization node */ *Flags |= (((UINT16) Op->Asl.Value.Integer) << Position); } } /******************************************************************************* * * FUNCTION: RsCompleteNodeAndGetNext * * PARAMETERS: Op - Resource node to be completed * * RETURN: The next peer to the input node. * * DESCRIPTION: Mark the current node completed and return the next peer. * The node ParseOpcode is set to DEFAULT_ARG, meaning that * this node is to be ignored from now on. * ******************************************************************************/ ACPI_PARSE_OBJECT * RsCompleteNodeAndGetNext ( ACPI_PARSE_OBJECT *Op) { /* Mark this node unused */ Op->Asl.ParseOpcode = PARSEOP_DEFAULT_ARG; /* Move on to the next peer node in the initializer list */ return (ASL_GET_PEER_NODE (Op)); } /******************************************************************************* * * FUNCTION: RsCheckListForDuplicates * * PARAMETERS: Op - First op in the initializer list * * RETURN: None * * DESCRIPTION: Check an initializer list for duplicate values. Emits an error * if any duplicates are found. * ******************************************************************************/ void RsCheckListForDuplicates ( ACPI_PARSE_OBJECT *Op) { ACPI_PARSE_OBJECT *NextValueOp = Op; ACPI_PARSE_OBJECT *NextOp; UINT32 Value; if (!Op) { return; } /* Search list once for each value in the list */ while (NextValueOp) { Value = (UINT32) NextValueOp->Asl.Value.Integer; /* Compare this value to all remaining values in the list */ NextOp = ASL_GET_PEER_NODE (NextValueOp); while (NextOp) { if (NextOp->Asl.ParseOpcode != PARSEOP_DEFAULT_ARG) { /* Compare values */ if (Value == (UINT32) NextOp->Asl.Value.Integer) { /* Emit error only once per duplicate node */ if (!(NextOp->Asl.CompileFlags & NODE_IS_DUPLICATE)) { NextOp->Asl.CompileFlags |= NODE_IS_DUPLICATE; AslError (ASL_ERROR, ASL_MSG_DUPLICATE_ITEM, NextOp, NULL); } } } NextOp = ASL_GET_PEER_NODE (NextOp); } NextValueOp = ASL_GET_PEER_NODE (NextValueOp); } } /******************************************************************************* * * FUNCTION: RsDoOneResourceDescriptor * * PARAMETERS: DescriptorTypeOp - Parent parse node of the descriptor * CurrentByteOffset - Offset in the resource descriptor * buffer. * * RETURN: A valid resource node for the descriptor * * DESCRIPTION: Dispatches the processing of one resource descriptor * ******************************************************************************/ ASL_RESOURCE_NODE * RsDoOneResourceDescriptor ( ACPI_PARSE_OBJECT *DescriptorTypeOp, UINT32 CurrentByteOffset, UINT8 *State) { ASL_RESOURCE_NODE *Rnode = NULL; /* Construct the resource */ switch (DescriptorTypeOp->Asl.ParseOpcode) { case PARSEOP_DMA: Rnode = RsDoDmaDescriptor (DescriptorTypeOp, CurrentByteOffset); break; case PARSEOP_FIXEDDMA: Rnode = RsDoFixedDmaDescriptor (DescriptorTypeOp, CurrentByteOffset); break; case PARSEOP_DWORDIO: Rnode = RsDoDwordIoDescriptor (DescriptorTypeOp, CurrentByteOffset); break; case PARSEOP_DWORDMEMORY: Rnode = RsDoDwordMemoryDescriptor (DescriptorTypeOp, CurrentByteOffset); break; case PARSEOP_DWORDSPACE: Rnode = RsDoDwordSpaceDescriptor (DescriptorTypeOp, CurrentByteOffset); break; case PARSEOP_ENDDEPENDENTFN: switch (*State) { case ACPI_RSTATE_NORMAL: AslError (ASL_ERROR, ASL_MSG_MISSING_STARTDEPENDENT, DescriptorTypeOp, NULL); break; case ACPI_RSTATE_START_DEPENDENT: AslError (ASL_ERROR, ASL_MSG_DEPENDENT_NESTING, DescriptorTypeOp, NULL); break; case ACPI_RSTATE_DEPENDENT_LIST: default: break; } *State = ACPI_RSTATE_NORMAL; Rnode = RsDoEndDependentDescriptor (DescriptorTypeOp, CurrentByteOffset); break; case PARSEOP_ENDTAG: Rnode = RsDoEndTagDescriptor (DescriptorTypeOp, CurrentByteOffset); break; case PARSEOP_EXTENDEDIO: Rnode = RsDoExtendedIoDescriptor (DescriptorTypeOp, CurrentByteOffset); break; case PARSEOP_EXTENDEDMEMORY: Rnode = RsDoExtendedMemoryDescriptor (DescriptorTypeOp, CurrentByteOffset); break; case PARSEOP_EXTENDEDSPACE: Rnode = RsDoExtendedSpaceDescriptor (DescriptorTypeOp, CurrentByteOffset); break; case PARSEOP_FIXEDIO: Rnode = RsDoFixedIoDescriptor (DescriptorTypeOp, CurrentByteOffset); break; case PARSEOP_INTERRUPT: Rnode = RsDoInterruptDescriptor (DescriptorTypeOp, CurrentByteOffset); break; case PARSEOP_IO: Rnode = RsDoIoDescriptor (DescriptorTypeOp, CurrentByteOffset); break; case PARSEOP_IRQ: Rnode = RsDoIrqDescriptor (DescriptorTypeOp, CurrentByteOffset); break; case PARSEOP_IRQNOFLAGS: Rnode = RsDoIrqNoFlagsDescriptor (DescriptorTypeOp, CurrentByteOffset); break; case PARSEOP_MEMORY24: Rnode = RsDoMemory24Descriptor (DescriptorTypeOp, CurrentByteOffset); break; case PARSEOP_MEMORY32: Rnode = RsDoMemory32Descriptor (DescriptorTypeOp, CurrentByteOffset); break; case PARSEOP_MEMORY32FIXED: Rnode = RsDoMemory32FixedDescriptor (DescriptorTypeOp, CurrentByteOffset); break; case PARSEOP_QWORDIO: Rnode = RsDoQwordIoDescriptor (DescriptorTypeOp, CurrentByteOffset); break; case PARSEOP_QWORDMEMORY: Rnode = RsDoQwordMemoryDescriptor (DescriptorTypeOp, CurrentByteOffset); break; case PARSEOP_QWORDSPACE: Rnode = RsDoQwordSpaceDescriptor (DescriptorTypeOp, CurrentByteOffset); break; case PARSEOP_REGISTER: Rnode = RsDoGeneralRegisterDescriptor (DescriptorTypeOp, CurrentByteOffset); break; case PARSEOP_STARTDEPENDENTFN: switch (*State) { case ACPI_RSTATE_START_DEPENDENT: AslError (ASL_ERROR, ASL_MSG_DEPENDENT_NESTING, DescriptorTypeOp, NULL); break; case ACPI_RSTATE_NORMAL: case ACPI_RSTATE_DEPENDENT_LIST: default: break; } *State = ACPI_RSTATE_START_DEPENDENT; Rnode = RsDoStartDependentDescriptor (DescriptorTypeOp, CurrentByteOffset); *State = ACPI_RSTATE_DEPENDENT_LIST; break; case PARSEOP_STARTDEPENDENTFN_NOPRI: switch (*State) { case ACPI_RSTATE_START_DEPENDENT: AslError (ASL_ERROR, ASL_MSG_DEPENDENT_NESTING, DescriptorTypeOp, NULL); break; case ACPI_RSTATE_NORMAL: case ACPI_RSTATE_DEPENDENT_LIST: default: break; } *State = ACPI_RSTATE_START_DEPENDENT; Rnode = RsDoStartDependentNoPriDescriptor (DescriptorTypeOp, CurrentByteOffset); *State = ACPI_RSTATE_DEPENDENT_LIST; break; case PARSEOP_VENDORLONG: Rnode = RsDoVendorLargeDescriptor (DescriptorTypeOp, CurrentByteOffset); break; case PARSEOP_VENDORSHORT: Rnode = RsDoVendorSmallDescriptor (DescriptorTypeOp, CurrentByteOffset); break; case PARSEOP_WORDBUSNUMBER: Rnode = RsDoWordBusNumberDescriptor (DescriptorTypeOp, CurrentByteOffset); break; case PARSEOP_WORDIO: Rnode = RsDoWordIoDescriptor (DescriptorTypeOp, CurrentByteOffset); break; case PARSEOP_WORDSPACE: Rnode = RsDoWordSpaceDescriptor (DescriptorTypeOp, CurrentByteOffset); break; case PARSEOP_GPIO_INT: Rnode = RsDoGpioIntDescriptor (DescriptorTypeOp, CurrentByteOffset); break; case PARSEOP_GPIO_IO: Rnode = RsDoGpioIoDescriptor (DescriptorTypeOp, CurrentByteOffset); break; case PARSEOP_I2C_SERIALBUS: Rnode = RsDoI2cSerialBusDescriptor (DescriptorTypeOp, CurrentByteOffset); break; case PARSEOP_SPI_SERIALBUS: Rnode = RsDoSpiSerialBusDescriptor (DescriptorTypeOp, CurrentByteOffset); break; case PARSEOP_UART_SERIALBUS: Rnode = RsDoUartSerialBusDescriptor (DescriptorTypeOp, CurrentByteOffset); break; case PARSEOP_DEFAULT_ARG: /* Just ignore any of these, they are used as fillers/placeholders */ break; default: printf ("Unknown resource descriptor type [%s]\n", DescriptorTypeOp->Asl.ParseOpName); break; } /* * Mark original node as unused, but head of a resource descriptor. * This allows the resource to be installed in the namespace so that * references to the descriptor can be resolved. */ DescriptorTypeOp->Asl.ParseOpcode = PARSEOP_DEFAULT_ARG; DescriptorTypeOp->Asl.CompileFlags = NODE_IS_RESOURCE_DESC; DescriptorTypeOp->Asl.Value.Integer = CurrentByteOffset; if (Rnode) { DescriptorTypeOp->Asl.FinalAmlLength = Rnode->BufferLength; DescriptorTypeOp->Asl.Extra = ((AML_RESOURCE *) Rnode->Buffer)->DescriptorType; } return (Rnode); } /******************************************************************************* * * FUNCTION: RsLinkDescriptorChain * * PARAMETERS: PreviousRnode - Pointer to the node that will be previous * to the linked node, At exit, set to the * last node in the new chain. * Rnode - Resource node to link into the list * * RETURN: Cumulative buffer byte offset of the new segment of chain * * DESCRIPTION: Link a descriptor chain at the end of an existing chain. * ******************************************************************************/ UINT32 RsLinkDescriptorChain ( ASL_RESOURCE_NODE **PreviousRnode, ASL_RESOURCE_NODE *Rnode) { ASL_RESOURCE_NODE *LastRnode; UINT32 CurrentByteOffset; /* Anything to do? */ if (!Rnode) { return (0); } /* Point the previous node to the new node */ (*PreviousRnode)->Next = Rnode; CurrentByteOffset = Rnode->BufferLength; /* Walk to the end of the chain headed by Rnode */ LastRnode = Rnode; while (LastRnode->Next) { LastRnode = LastRnode->Next; CurrentByteOffset += LastRnode->BufferLength; } /* Previous node becomes the last node in the chain */ *PreviousRnode = LastRnode; return (CurrentByteOffset); } /******************************************************************************* * * FUNCTION: RsDoResourceTemplate * * PARAMETERS: Op - Parent of a resource template list * * RETURN: None. Sets input node to point to a list of AML code * * DESCRIPTION: Merge a list of resource descriptors into a single AML buffer, * in preparation for output to the AML output file. * ******************************************************************************/ void RsDoResourceTemplate ( ACPI_PARSE_OBJECT *Op) { ACPI_PARSE_OBJECT *BufferLengthOp; ACPI_PARSE_OBJECT *BufferOp; ACPI_PARSE_OBJECT *DescriptorTypeOp; ACPI_PARSE_OBJECT *LastOp = NULL; UINT32 CurrentByteOffset = 0; ASL_RESOURCE_NODE HeadRnode; ASL_RESOURCE_NODE *PreviousRnode; ASL_RESOURCE_NODE *Rnode; UINT8 State; /* Mark parent as containing a resource template */ if (Op->Asl.Parent) { Op->Asl.Parent->Asl.CompileFlags |= NODE_IS_RESOURCE_DESC; } /* ResourceTemplate Opcode is first (Op) */ /* Buffer Length node is first child */ BufferLengthOp = ASL_GET_CHILD_NODE (Op); /* Buffer Op is first peer */ BufferOp = ASL_GET_PEER_NODE (BufferLengthOp); /* First Descriptor type is next */ DescriptorTypeOp = ASL_GET_PEER_NODE (BufferOp); /* * Process all resource descriptors in the list * Note: It is assumed that the EndTag node has been automatically * inserted at the end of the template by the parser. */ State = ACPI_RSTATE_NORMAL; PreviousRnode = &HeadRnode; while (DescriptorTypeOp) { DescriptorTypeOp->Asl.CompileFlags |= NODE_IS_RESOURCE_DESC; Rnode = RsDoOneResourceDescriptor (DescriptorTypeOp, CurrentByteOffset, &State); /* * Update current byte offset to indicate the number of bytes from the * start of the buffer. Buffer can include multiple descriptors, we * must keep track of the offset of not only each descriptor, but each * element (field) within each descriptor as well. */ CurrentByteOffset += RsLinkDescriptorChain (&PreviousRnode, Rnode); /* Get the next descriptor in the list */ LastOp = DescriptorTypeOp; DescriptorTypeOp = ASL_GET_PEER_NODE (DescriptorTypeOp); } if (State == ACPI_RSTATE_DEPENDENT_LIST) { if (LastOp) { LastOp = LastOp->Asl.Parent; } AslError (ASL_ERROR, ASL_MSG_MISSING_ENDDEPENDENT, LastOp, NULL); } /* * Transform the nodes into the following * * Op -> AML_BUFFER_OP * First Child -> BufferLength * Second Child -> Descriptor Buffer (raw byte data) */ Op->Asl.ParseOpcode = PARSEOP_BUFFER; Op->Asl.AmlOpcode = AML_BUFFER_OP; Op->Asl.CompileFlags = NODE_AML_PACKAGE | NODE_IS_RESOURCE_DESC; UtSetParseOpName (Op); BufferLengthOp->Asl.ParseOpcode = PARSEOP_INTEGER; BufferLengthOp->Asl.Value.Integer = CurrentByteOffset; (void) OpcSetOptimalIntegerSize (BufferLengthOp); UtSetParseOpName (BufferLengthOp); BufferOp->Asl.ParseOpcode = PARSEOP_RAW_DATA; BufferOp->Asl.AmlOpcode = AML_RAW_DATA_CHAIN; BufferOp->Asl.AmlOpcodeLength = 0; BufferOp->Asl.AmlLength = CurrentByteOffset; BufferOp->Asl.Value.Buffer = (UINT8 *) HeadRnode.Next; BufferOp->Asl.CompileFlags |= NODE_IS_RESOURCE_DATA; UtSetParseOpName (BufferOp); return; } src/acpica/source/compiler/aslrestype1.c000066400000000000000000000623051231470457100206310ustar00rootroot00000000000000/****************************************************************************** * * Module Name: aslrestype1 - Miscellaneous small resource descriptors * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #include "aslcompiler.h" #include "aslcompiler.y.h" #define _COMPONENT ACPI_COMPILER ACPI_MODULE_NAME ("aslrestype1") /* * This module contains miscellaneous small resource descriptors: * * EndTag * EndDependentFn * Memory24 * Memory32 * Memory32Fixed * StartDependentFn * StartDependentFnNoPri * VendorShort */ /******************************************************************************* * * FUNCTION: RsDoEndTagDescriptor * * PARAMETERS: Op - Parent resource descriptor parse node * CurrentByteOffset - Offset into the resource template AML * buffer (to track references to the desc) * * RETURN: Completed resource node * * DESCRIPTION: Construct a short "EndDependentFn" descriptor * ******************************************************************************/ ASL_RESOURCE_NODE * RsDoEndTagDescriptor ( ACPI_PARSE_OBJECT *Op, UINT32 CurrentByteOffset) { AML_RESOURCE *Descriptor; ASL_RESOURCE_NODE *Rnode; Rnode = RsAllocateResourceNode (sizeof (AML_RESOURCE_END_TAG)); Descriptor = Rnode->Buffer; Descriptor->EndTag.DescriptorType = ACPI_RESOURCE_NAME_END_TAG | ASL_RDESC_END_TAG_SIZE; Descriptor->EndTag.Checksum = 0; return (Rnode); } /******************************************************************************* * * FUNCTION: RsDoEndDependentDescriptor * * PARAMETERS: Op - Parent resource descriptor parse node * CurrentByteOffset - Offset into the resource template AML * buffer (to track references to the desc) * * RETURN: Completed resource node * * DESCRIPTION: Construct a short "EndDependentFn" descriptor * ******************************************************************************/ ASL_RESOURCE_NODE * RsDoEndDependentDescriptor ( ACPI_PARSE_OBJECT *Op, UINT32 CurrentByteOffset) { AML_RESOURCE *Descriptor; ASL_RESOURCE_NODE *Rnode; Rnode = RsAllocateResourceNode (sizeof (AML_RESOURCE_END_DEPENDENT)); Descriptor = Rnode->Buffer; Descriptor->EndDpf.DescriptorType = ACPI_RESOURCE_NAME_END_DEPENDENT | ASL_RDESC_END_DEPEND_SIZE; return (Rnode); } /******************************************************************************* * * FUNCTION: RsDoMemory24Descriptor * * PARAMETERS: Op - Parent resource descriptor parse node * CurrentByteOffset - Offset into the resource template AML * buffer (to track references to the desc) * * RETURN: Completed resource node * * DESCRIPTION: Construct a short "Memory24" descriptor * ******************************************************************************/ ASL_RESOURCE_NODE * RsDoMemory24Descriptor ( ACPI_PARSE_OBJECT *Op, UINT32 CurrentByteOffset) { AML_RESOURCE *Descriptor; ACPI_PARSE_OBJECT *InitializerOp; ACPI_PARSE_OBJECT *MinOp = NULL; ACPI_PARSE_OBJECT *MaxOp = NULL; ACPI_PARSE_OBJECT *LengthOp = NULL; ASL_RESOURCE_NODE *Rnode; UINT32 i; InitializerOp = Op->Asl.Child; Rnode = RsAllocateResourceNode (sizeof (AML_RESOURCE_MEMORY24)); Descriptor = Rnode->Buffer; Descriptor->Memory24.DescriptorType = ACPI_RESOURCE_NAME_MEMORY24; Descriptor->Memory24.ResourceLength = 9; /* Process all child initialization nodes */ for (i = 0; InitializerOp; i++) { switch (i) { case 0: /* Read/Write type */ RsSetFlagBits (&Descriptor->Memory24.Flags, InitializerOp, 0, 1); RsCreateBitField (InitializerOp, ACPI_RESTAG_READWRITETYPE, CurrentByteOffset + ASL_RESDESC_OFFSET (Memory24.Flags), 0); break; case 1: /* Min Address */ Descriptor->Memory24.Minimum = (UINT16) InitializerOp->Asl.Value.Integer; RsCreateWordField (InitializerOp, ACPI_RESTAG_MINADDR, CurrentByteOffset + ASL_RESDESC_OFFSET (Memory24.Minimum)); MinOp = InitializerOp; break; case 2: /* Max Address */ Descriptor->Memory24.Maximum = (UINT16) InitializerOp->Asl.Value.Integer; RsCreateWordField (InitializerOp, ACPI_RESTAG_MAXADDR, CurrentByteOffset + ASL_RESDESC_OFFSET (Memory24.Maximum)); MaxOp = InitializerOp; break; case 3: /* Alignment */ Descriptor->Memory24.Alignment = (UINT16) InitializerOp->Asl.Value.Integer; RsCreateWordField (InitializerOp, ACPI_RESTAG_ALIGNMENT, CurrentByteOffset + ASL_RESDESC_OFFSET (Memory24.Alignment)); break; case 4: /* Length */ Descriptor->Memory24.AddressLength = (UINT16) InitializerOp->Asl.Value.Integer; RsCreateWordField (InitializerOp, ACPI_RESTAG_LENGTH, CurrentByteOffset + ASL_RESDESC_OFFSET (Memory24.AddressLength)); LengthOp = InitializerOp; break; case 5: /* Name */ UtAttachNamepathToOwner (Op, InitializerOp); break; default: AslError (ASL_ERROR, ASL_MSG_RESOURCE_LIST, InitializerOp, NULL); break; } InitializerOp = RsCompleteNodeAndGetNext (InitializerOp); } /* Validate the Min/Max/Len/Align values (Alignment==0 means 64K) */ RsSmallAddressCheck (ACPI_RESOURCE_NAME_MEMORY24, Descriptor->Memory24.Minimum, Descriptor->Memory24.Maximum, Descriptor->Memory24.AddressLength, Descriptor->Memory24.Alignment, MinOp, MaxOp, LengthOp, NULL, Op); return (Rnode); } /******************************************************************************* * * FUNCTION: RsDoMemory32Descriptor * * PARAMETERS: Op - Parent resource descriptor parse node * CurrentByteOffset - Offset into the resource template AML * buffer (to track references to the desc) * * RETURN: Completed resource node * * DESCRIPTION: Construct a short "Memory32" descriptor * ******************************************************************************/ ASL_RESOURCE_NODE * RsDoMemory32Descriptor ( ACPI_PARSE_OBJECT *Op, UINT32 CurrentByteOffset) { AML_RESOURCE *Descriptor; ACPI_PARSE_OBJECT *InitializerOp; ACPI_PARSE_OBJECT *MinOp = NULL; ACPI_PARSE_OBJECT *MaxOp = NULL; ACPI_PARSE_OBJECT *LengthOp = NULL; ACPI_PARSE_OBJECT *AlignOp = NULL; ASL_RESOURCE_NODE *Rnode; UINT32 i; InitializerOp = Op->Asl.Child; Rnode = RsAllocateResourceNode (sizeof (AML_RESOURCE_MEMORY32)); Descriptor = Rnode->Buffer; Descriptor->Memory32.DescriptorType = ACPI_RESOURCE_NAME_MEMORY32; Descriptor->Memory32.ResourceLength = 17; /* Process all child initialization nodes */ for (i = 0; InitializerOp; i++) { switch (i) { case 0: /* Read/Write type */ RsSetFlagBits (&Descriptor->Memory32.Flags, InitializerOp, 0, 1); RsCreateBitField (InitializerOp, ACPI_RESTAG_READWRITETYPE, CurrentByteOffset + ASL_RESDESC_OFFSET (Memory32.Flags), 0); break; case 1: /* Min Address */ Descriptor->Memory32.Minimum = (UINT32) InitializerOp->Asl.Value.Integer; RsCreateDwordField (InitializerOp, ACPI_RESTAG_MINADDR, CurrentByteOffset + ASL_RESDESC_OFFSET (Memory32.Minimum)); MinOp = InitializerOp; break; case 2: /* Max Address */ Descriptor->Memory32.Maximum = (UINT32) InitializerOp->Asl.Value.Integer; RsCreateDwordField (InitializerOp, ACPI_RESTAG_MAXADDR, CurrentByteOffset + ASL_RESDESC_OFFSET (Memory32.Maximum)); MaxOp = InitializerOp; break; case 3: /* Alignment */ Descriptor->Memory32.Alignment = (UINT32) InitializerOp->Asl.Value.Integer; RsCreateDwordField (InitializerOp, ACPI_RESTAG_ALIGNMENT, CurrentByteOffset + ASL_RESDESC_OFFSET (Memory32.Alignment)); AlignOp = InitializerOp; break; case 4: /* Length */ Descriptor->Memory32.AddressLength = (UINT32) InitializerOp->Asl.Value.Integer; RsCreateDwordField (InitializerOp, ACPI_RESTAG_LENGTH, CurrentByteOffset + ASL_RESDESC_OFFSET (Memory32.AddressLength)); LengthOp = InitializerOp; break; case 5: /* Name */ UtAttachNamepathToOwner (Op, InitializerOp); break; default: AslError (ASL_ERROR, ASL_MSG_RESOURCE_LIST, InitializerOp, NULL); break; } InitializerOp = RsCompleteNodeAndGetNext (InitializerOp); } /* Validate the Min/Max/Len/Align values */ RsSmallAddressCheck (ACPI_RESOURCE_NAME_MEMORY32, Descriptor->Memory32.Minimum, Descriptor->Memory32.Maximum, Descriptor->Memory32.AddressLength, Descriptor->Memory32.Alignment, MinOp, MaxOp, LengthOp, AlignOp, Op); return (Rnode); } /******************************************************************************* * * FUNCTION: RsDoMemory32FixedDescriptor * * PARAMETERS: Op - Parent resource descriptor parse node * CurrentByteOffset - Offset into the resource template AML * buffer (to track references to the desc) * * RETURN: Completed resource node * * DESCRIPTION: Construct a short "Memory32Fixed" descriptor * ******************************************************************************/ ASL_RESOURCE_NODE * RsDoMemory32FixedDescriptor ( ACPI_PARSE_OBJECT *Op, UINT32 CurrentByteOffset) { AML_RESOURCE *Descriptor; ACPI_PARSE_OBJECT *InitializerOp; ASL_RESOURCE_NODE *Rnode; UINT32 i; InitializerOp = Op->Asl.Child; Rnode = RsAllocateResourceNode (sizeof (AML_RESOURCE_FIXED_MEMORY32)); Descriptor = Rnode->Buffer; Descriptor->FixedMemory32.DescriptorType = ACPI_RESOURCE_NAME_FIXED_MEMORY32; Descriptor->FixedMemory32.ResourceLength = 9; /* Process all child initialization nodes */ for (i = 0; InitializerOp; i++) { switch (i) { case 0: /* Read/Write type */ RsSetFlagBits (&Descriptor->FixedMemory32.Flags, InitializerOp, 0, 1); RsCreateBitField (InitializerOp, ACPI_RESTAG_READWRITETYPE, CurrentByteOffset + ASL_RESDESC_OFFSET (FixedMemory32.Flags), 0); break; case 1: /* Address */ Descriptor->FixedMemory32.Address = (UINT32) InitializerOp->Asl.Value.Integer; RsCreateDwordField (InitializerOp, ACPI_RESTAG_BASEADDRESS, CurrentByteOffset + ASL_RESDESC_OFFSET (FixedMemory32.Address)); break; case 2: /* Length */ Descriptor->FixedMemory32.AddressLength = (UINT32) InitializerOp->Asl.Value.Integer; RsCreateDwordField (InitializerOp, ACPI_RESTAG_LENGTH, CurrentByteOffset + ASL_RESDESC_OFFSET (FixedMemory32.AddressLength)); break; case 3: /* Name */ UtAttachNamepathToOwner (Op, InitializerOp); break; default: AslError (ASL_ERROR, ASL_MSG_RESOURCE_LIST, InitializerOp, NULL); break; } InitializerOp = RsCompleteNodeAndGetNext (InitializerOp); } return (Rnode); } /******************************************************************************* * * FUNCTION: RsDoStartDependentDescriptor * * PARAMETERS: Op - Parent resource descriptor parse node * CurrentByteOffset - Offset into the resource template AML * buffer (to track references to the desc) * * RETURN: Completed resource node * * DESCRIPTION: Construct a short "StartDependentFn" descriptor * ******************************************************************************/ ASL_RESOURCE_NODE * RsDoStartDependentDescriptor ( ACPI_PARSE_OBJECT *Op, UINT32 CurrentByteOffset) { AML_RESOURCE *Descriptor; ACPI_PARSE_OBJECT *InitializerOp; ASL_RESOURCE_NODE *Rnode; ASL_RESOURCE_NODE *PreviousRnode; ASL_RESOURCE_NODE *NextRnode; UINT32 i; UINT8 State; InitializerOp = Op->Asl.Child; Rnode = RsAllocateResourceNode (sizeof (AML_RESOURCE_START_DEPENDENT)); PreviousRnode = Rnode; Descriptor = Rnode->Buffer; /* Increment offset past StartDependent descriptor */ CurrentByteOffset += sizeof (AML_RESOURCE_START_DEPENDENT); /* Descriptor has priority byte */ Descriptor->StartDpf.DescriptorType = ACPI_RESOURCE_NAME_START_DEPENDENT | (ASL_RDESC_ST_DEPEND_SIZE + 0x01); /* Process all child initialization nodes */ State = ACPI_RSTATE_START_DEPENDENT; for (i = 0; InitializerOp; i++) { switch (i) { case 0: /* Compatibility Priority */ if ((UINT8) InitializerOp->Asl.Value.Integer > 2) { AslError (ASL_ERROR, ASL_MSG_INVALID_PRIORITY, InitializerOp, NULL); } RsSetFlagBits (&Descriptor->StartDpf.Flags, InitializerOp, 0, 0); break; case 1: /* Performance/Robustness Priority */ if ((UINT8) InitializerOp->Asl.Value.Integer > 2) { AslError (ASL_ERROR, ASL_MSG_INVALID_PERFORMANCE, InitializerOp, NULL); } RsSetFlagBits (&Descriptor->StartDpf.Flags, InitializerOp, 2, 0); break; default: NextRnode = RsDoOneResourceDescriptor (InitializerOp, CurrentByteOffset, &State); /* * Update current byte offset to indicate the number of bytes from the * start of the buffer. Buffer can include multiple descriptors, we * must keep track of the offset of not only each descriptor, but each * element (field) within each descriptor as well. */ CurrentByteOffset += RsLinkDescriptorChain (&PreviousRnode, NextRnode); break; } InitializerOp = RsCompleteNodeAndGetNext (InitializerOp); } return (Rnode); } /******************************************************************************* * * FUNCTION: RsDoStartDependentNoPriDescriptor * * PARAMETERS: Op - Parent resource descriptor parse node * CurrentByteOffset - Offset into the resource template AML * buffer (to track references to the desc) * * RETURN: Completed resource node * * DESCRIPTION: Construct a short "StartDependentNoPri" descriptor * ******************************************************************************/ ASL_RESOURCE_NODE * RsDoStartDependentNoPriDescriptor ( ACPI_PARSE_OBJECT *Op, UINT32 CurrentByteOffset) { AML_RESOURCE *Descriptor; ACPI_PARSE_OBJECT *InitializerOp; ASL_RESOURCE_NODE *Rnode; ASL_RESOURCE_NODE *PreviousRnode; ASL_RESOURCE_NODE *NextRnode; UINT8 State; InitializerOp = Op->Asl.Child; Rnode = RsAllocateResourceNode (sizeof (AML_RESOURCE_START_DEPENDENT_NOPRIO)); Descriptor = Rnode->Buffer; Descriptor->StartDpf.DescriptorType = ACPI_RESOURCE_NAME_START_DEPENDENT | ASL_RDESC_ST_DEPEND_SIZE; PreviousRnode = Rnode; /* Increment offset past StartDependentNoPri descriptor */ CurrentByteOffset += sizeof (AML_RESOURCE_START_DEPENDENT_NOPRIO); /* Process all child initialization nodes */ State = ACPI_RSTATE_START_DEPENDENT; while (InitializerOp) { NextRnode = RsDoOneResourceDescriptor (InitializerOp, CurrentByteOffset, &State); /* * Update current byte offset to indicate the number of bytes from the * start of the buffer. Buffer can include multiple descriptors, we * must keep track of the offset of not only each descriptor, but each * element (field) within each descriptor as well. */ CurrentByteOffset += RsLinkDescriptorChain (&PreviousRnode, NextRnode); InitializerOp = RsCompleteNodeAndGetNext (InitializerOp); } return (Rnode); } /******************************************************************************* * * FUNCTION: RsDoVendorSmallDescriptor * * PARAMETERS: Op - Parent resource descriptor parse node * CurrentByteOffset - Offset into the resource template AML * buffer (to track references to the desc) * * RETURN: Completed resource node * * DESCRIPTION: Construct a short "VendorShort" descriptor * ******************************************************************************/ ASL_RESOURCE_NODE * RsDoVendorSmallDescriptor ( ACPI_PARSE_OBJECT *Op, UINT32 CurrentByteOffset) { AML_RESOURCE *Descriptor; ACPI_PARSE_OBJECT *InitializerOp; ASL_RESOURCE_NODE *Rnode; UINT8 *VendorData; UINT32 i; InitializerOp = Op->Asl.Child; /* Allocate worst case - 7 vendor bytes */ Rnode = RsAllocateResourceNode (sizeof (AML_RESOURCE_VENDOR_SMALL) + 7); Descriptor = Rnode->Buffer; Descriptor->VendorSmall.DescriptorType = ACPI_RESOURCE_NAME_VENDOR_SMALL; VendorData = ((UINT8 *) Descriptor) + sizeof (AML_RESOURCE_SMALL_HEADER); /* Process all child initialization nodes */ InitializerOp = RsCompleteNodeAndGetNext (InitializerOp); for (i = 0; InitializerOp; i++) { if (InitializerOp->Asl.ParseOpcode == PARSEOP_DEFAULT_ARG) { break; } /* Maximum 7 vendor data bytes allowed (0-6) */ if (i >= 7) { AslError (ASL_ERROR, ASL_MSG_VENDOR_LIST, InitializerOp, NULL); /* Eat the excess initializers */ while (InitializerOp) { InitializerOp = RsCompleteNodeAndGetNext (InitializerOp); } break; } VendorData[i] = (UINT8) InitializerOp->Asl.Value.Integer; InitializerOp = RsCompleteNodeAndGetNext (InitializerOp); } /* Adjust the Rnode buffer size, so correct number of bytes are emitted */ Rnode->BufferLength -= (7 - i); /* Set the length in the Type Tag */ Descriptor->VendorSmall.DescriptorType |= (UINT8) i; return (Rnode); } src/acpica/source/compiler/aslrestype1i.c000066400000000000000000000620631231470457100210030ustar00rootroot00000000000000/****************************************************************************** * * Module Name: aslrestype1i - Small I/O-related resource descriptors * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #include "aslcompiler.h" #include "aslcompiler.y.h" #define _COMPONENT ACPI_COMPILER ACPI_MODULE_NAME ("aslrestype1i") /* * This module contains the I/O-related small resource descriptors: * * DMA * FixedDMA * FixedIO * IO * IRQ * IRQNoFlags */ /******************************************************************************* * * FUNCTION: RsDoDmaDescriptor * * PARAMETERS: Op - Parent resource descriptor parse node * CurrentByteOffset - Offset into the resource template AML * buffer (to track references to the desc) * * RETURN: Completed resource node * * DESCRIPTION: Construct a short "DMA" descriptor * ******************************************************************************/ ASL_RESOURCE_NODE * RsDoDmaDescriptor ( ACPI_PARSE_OBJECT *Op, UINT32 CurrentByteOffset) { AML_RESOURCE *Descriptor; ACPI_PARSE_OBJECT *InitializerOp; ASL_RESOURCE_NODE *Rnode; UINT32 i; UINT8 DmaChannelMask = 0; UINT8 DmaChannels = 0; InitializerOp = Op->Asl.Child; Rnode = RsAllocateResourceNode (sizeof (AML_RESOURCE_DMA)); Descriptor = Rnode->Buffer; Descriptor->Dma.DescriptorType = ACPI_RESOURCE_NAME_DMA | ASL_RDESC_DMA_SIZE; /* Process all child initialization nodes */ for (i = 0; InitializerOp; i++) { switch (i) { case 0: /* DMA type */ RsSetFlagBits (&Descriptor->Dma.Flags, InitializerOp, 5, 0); RsCreateMultiBitField (InitializerOp, ACPI_RESTAG_DMATYPE, CurrentByteOffset + ASL_RESDESC_OFFSET (Dma.Flags), 5, 2); break; case 1: /* Bus Master */ RsSetFlagBits (&Descriptor->Dma.Flags, InitializerOp, 2, 0); RsCreateBitField (InitializerOp, ACPI_RESTAG_BUSMASTER, CurrentByteOffset + ASL_RESDESC_OFFSET (Dma.Flags), 2); break; case 2: /* Xfer Type (transfer width) */ RsSetFlagBits (&Descriptor->Dma.Flags, InitializerOp, 0, 0); RsCreateMultiBitField (InitializerOp, ACPI_RESTAG_XFERTYPE, CurrentByteOffset + ASL_RESDESC_OFFSET (Dma.Flags), 0, 2); break; case 3: /* Name */ UtAttachNamepathToOwner (Op, InitializerOp); break; default: /* All DMA channel bytes are handled here, after flags and name */ if (InitializerOp->Asl.ParseOpcode != PARSEOP_DEFAULT_ARG) { /* Up to 8 channels can be specified in the list */ DmaChannels++; if (DmaChannels > 8) { AslError (ASL_ERROR, ASL_MSG_DMA_LIST, InitializerOp, NULL); return (Rnode); } /* Only DMA channels 0-7 are allowed (mask is 8 bits) */ if (InitializerOp->Asl.Value.Integer > 7) { AslError (ASL_ERROR, ASL_MSG_DMA_CHANNEL, InitializerOp, NULL); } /* Build the mask */ DmaChannelMask |= (1 << ((UINT8) InitializerOp->Asl.Value.Integer)); } if (i == 4) /* case 4: First DMA byte */ { /* Check now for duplicates in list */ RsCheckListForDuplicates (InitializerOp); /* Create a named field at the start of the list */ RsCreateByteField (InitializerOp, ACPI_RESTAG_DMA, CurrentByteOffset + ASL_RESDESC_OFFSET (Dma.DmaChannelMask)); } break; } InitializerOp = RsCompleteNodeAndGetNext (InitializerOp); } /* Now we can set the channel mask */ Descriptor->Dma.DmaChannelMask = DmaChannelMask; return (Rnode); } /******************************************************************************* * * FUNCTION: RsDoFixedDmaDescriptor * * PARAMETERS: Op - Parent resource descriptor parse node * CurrentByteOffset - Offset into the resource template AML * buffer (to track references to the desc) * * RETURN: Completed resource node * * DESCRIPTION: Construct a short "FixedDMA" descriptor * ******************************************************************************/ ASL_RESOURCE_NODE * RsDoFixedDmaDescriptor ( ACPI_PARSE_OBJECT *Op, UINT32 CurrentByteOffset) { AML_RESOURCE *Descriptor; ACPI_PARSE_OBJECT *InitializerOp; ASL_RESOURCE_NODE *Rnode; UINT32 i; InitializerOp = Op->Asl.Child; Rnode = RsAllocateResourceNode (sizeof (AML_RESOURCE_FIXED_DMA)); Descriptor = Rnode->Buffer; Descriptor->FixedDma.DescriptorType = ACPI_RESOURCE_NAME_FIXED_DMA | ASL_RDESC_FIXED_DMA_SIZE; /* Process all child initialization nodes */ for (i = 0; InitializerOp; i++) { switch (i) { case 0: /* DMA Request Lines [WORD] (_DMA) */ Descriptor->FixedDma.RequestLines = (UINT16) InitializerOp->Asl.Value.Integer; RsCreateWordField (InitializerOp, ACPI_RESTAG_DMA, CurrentByteOffset + ASL_RESDESC_OFFSET (FixedDma.RequestLines)); break; case 1: /* DMA Channel [WORD] (_TYP) */ Descriptor->FixedDma.Channels = (UINT16) InitializerOp->Asl.Value.Integer; RsCreateWordField (InitializerOp, ACPI_RESTAG_DMATYPE, CurrentByteOffset + ASL_RESDESC_OFFSET (FixedDma.Channels)); break; case 2: /* Transfer Width [BYTE] (_SIZ) */ Descriptor->FixedDma.Width = (UINT8) InitializerOp->Asl.Value.Integer; RsCreateByteField (InitializerOp, ACPI_RESTAG_XFERTYPE, CurrentByteOffset + ASL_RESDESC_OFFSET (FixedDma.Width)); break; case 3: /* Descriptor Name (optional) */ UtAttachNamepathToOwner (Op, InitializerOp); break; default: /* Ignore any extra nodes */ break; } InitializerOp = RsCompleteNodeAndGetNext (InitializerOp); } return (Rnode); } /******************************************************************************* * * FUNCTION: RsDoFixedIoDescriptor * * PARAMETERS: Op - Parent resource descriptor parse node * CurrentByteOffset - Offset into the resource template AML * buffer (to track references to the desc) * * RETURN: Completed resource node * * DESCRIPTION: Construct a short "FixedIO" descriptor * ******************************************************************************/ ASL_RESOURCE_NODE * RsDoFixedIoDescriptor ( ACPI_PARSE_OBJECT *Op, UINT32 CurrentByteOffset) { AML_RESOURCE *Descriptor; ACPI_PARSE_OBJECT *InitializerOp; ACPI_PARSE_OBJECT *AddressOp = NULL; ASL_RESOURCE_NODE *Rnode; UINT32 i; InitializerOp = Op->Asl.Child; Rnode = RsAllocateResourceNode (sizeof (AML_RESOURCE_FIXED_IO)); Descriptor = Rnode->Buffer; Descriptor->Io.DescriptorType = ACPI_RESOURCE_NAME_FIXED_IO | ASL_RDESC_FIXED_IO_SIZE; /* Process all child initialization nodes */ for (i = 0; InitializerOp; i++) { switch (i) { case 0: /* Base Address */ Descriptor->FixedIo.Address = (UINT16) InitializerOp->Asl.Value.Integer; RsCreateWordField (InitializerOp, ACPI_RESTAG_BASEADDRESS, CurrentByteOffset + ASL_RESDESC_OFFSET (FixedIo.Address)); AddressOp = InitializerOp; break; case 1: /* Length */ Descriptor->FixedIo.AddressLength = (UINT8) InitializerOp->Asl.Value.Integer; RsCreateByteField (InitializerOp, ACPI_RESTAG_LENGTH, CurrentByteOffset + ASL_RESDESC_OFFSET (FixedIo.AddressLength)); break; case 2: /* Name */ UtAttachNamepathToOwner (Op, InitializerOp); break; default: AslError (ASL_ERROR, ASL_MSG_RESOURCE_LIST, InitializerOp, NULL); break; } InitializerOp = RsCompleteNodeAndGetNext (InitializerOp); } /* Error checks */ if (Descriptor->FixedIo.Address > 0x03FF) { AslError (ASL_WARNING, ASL_MSG_ISA_ADDRESS, AddressOp, NULL); } return (Rnode); } /******************************************************************************* * * FUNCTION: RsDoIoDescriptor * * PARAMETERS: Op - Parent resource descriptor parse node * CurrentByteOffset - Offset into the resource template AML * buffer (to track references to the desc) * * RETURN: Completed resource node * * DESCRIPTION: Construct a short "IO" descriptor * ******************************************************************************/ ASL_RESOURCE_NODE * RsDoIoDescriptor ( ACPI_PARSE_OBJECT *Op, UINT32 CurrentByteOffset) { AML_RESOURCE *Descriptor; ACPI_PARSE_OBJECT *InitializerOp; ACPI_PARSE_OBJECT *MinOp = NULL; ACPI_PARSE_OBJECT *MaxOp = NULL; ACPI_PARSE_OBJECT *LengthOp = NULL; ACPI_PARSE_OBJECT *AlignOp = NULL; ASL_RESOURCE_NODE *Rnode; UINT32 i; InitializerOp = Op->Asl.Child; Rnode = RsAllocateResourceNode (sizeof (AML_RESOURCE_IO)); Descriptor = Rnode->Buffer; Descriptor->Io.DescriptorType = ACPI_RESOURCE_NAME_IO | ASL_RDESC_IO_SIZE; /* Process all child initialization nodes */ for (i = 0; InitializerOp; i++) { switch (i) { case 0: /* Decode size */ RsSetFlagBits (&Descriptor->Io.Flags, InitializerOp, 0, 1); RsCreateBitField (InitializerOp, ACPI_RESTAG_DECODE, CurrentByteOffset + ASL_RESDESC_OFFSET (Io.Flags), 0); break; case 1: /* Min Address */ Descriptor->Io.Minimum = (UINT16) InitializerOp->Asl.Value.Integer; RsCreateWordField (InitializerOp, ACPI_RESTAG_MINADDR, CurrentByteOffset + ASL_RESDESC_OFFSET (Io.Minimum)); MinOp = InitializerOp; break; case 2: /* Max Address */ Descriptor->Io.Maximum = (UINT16) InitializerOp->Asl.Value.Integer; RsCreateWordField (InitializerOp, ACPI_RESTAG_MAXADDR, CurrentByteOffset + ASL_RESDESC_OFFSET (Io.Maximum)); MaxOp = InitializerOp; break; case 3: /* Alignment */ Descriptor->Io.Alignment = (UINT8) InitializerOp->Asl.Value.Integer; RsCreateByteField (InitializerOp, ACPI_RESTAG_ALIGNMENT, CurrentByteOffset + ASL_RESDESC_OFFSET (Io.Alignment)); AlignOp = InitializerOp; break; case 4: /* Length */ Descriptor->Io.AddressLength = (UINT8) InitializerOp->Asl.Value.Integer; RsCreateByteField (InitializerOp, ACPI_RESTAG_LENGTH, CurrentByteOffset + ASL_RESDESC_OFFSET (Io.AddressLength)); LengthOp = InitializerOp; break; case 5: /* Name */ UtAttachNamepathToOwner (Op, InitializerOp); break; default: AslError (ASL_ERROR, ASL_MSG_RESOURCE_LIST, InitializerOp, NULL); break; } InitializerOp = RsCompleteNodeAndGetNext (InitializerOp); } /* Validate the Min/Max/Len/Align values */ RsSmallAddressCheck (ACPI_RESOURCE_NAME_IO, Descriptor->Io.Minimum, Descriptor->Io.Maximum, Descriptor->Io.AddressLength, Descriptor->Io.Alignment, MinOp, MaxOp, LengthOp, AlignOp, Op); return (Rnode); } /******************************************************************************* * * FUNCTION: RsDoIrqDescriptor * * PARAMETERS: Op - Parent resource descriptor parse node * CurrentByteOffset - Offset into the resource template AML * buffer (to track references to the desc) * * RETURN: Completed resource node * * DESCRIPTION: Construct a short "IRQ" descriptor * ******************************************************************************/ ASL_RESOURCE_NODE * RsDoIrqDescriptor ( ACPI_PARSE_OBJECT *Op, UINT32 CurrentByteOffset) { AML_RESOURCE *Descriptor; ACPI_PARSE_OBJECT *InitializerOp; ASL_RESOURCE_NODE *Rnode; UINT32 Interrupts = 0; UINT16 IrqMask = 0; UINT32 i; InitializerOp = Op->Asl.Child; Rnode = RsAllocateResourceNode (sizeof (AML_RESOURCE_IRQ)); /* Length = 3 (with flag byte) */ Descriptor = Rnode->Buffer; Descriptor->Irq.DescriptorType = ACPI_RESOURCE_NAME_IRQ | (ASL_RDESC_IRQ_SIZE + 0x01); /* Process all child initialization nodes */ for (i = 0; InitializerOp; i++) { switch (i) { case 0: /* Interrupt Type (or Mode - edge/level) */ RsSetFlagBits (&Descriptor->Irq.Flags, InitializerOp, 0, 1); RsCreateBitField (InitializerOp, ACPI_RESTAG_INTERRUPTTYPE, CurrentByteOffset + ASL_RESDESC_OFFSET (Irq.Flags), 0); break; case 1: /* Interrupt Level (or Polarity - Active high/low) */ RsSetFlagBits (&Descriptor->Irq.Flags, InitializerOp, 3, 0); RsCreateBitField (InitializerOp, ACPI_RESTAG_INTERRUPTLEVEL, CurrentByteOffset + ASL_RESDESC_OFFSET (Irq.Flags), 3); break; case 2: /* Share Type - Default: exclusive (0) */ RsSetFlagBits (&Descriptor->Irq.Flags, InitializerOp, 4, 0); RsCreateBitField (InitializerOp, ACPI_RESTAG_INTERRUPTSHARE, CurrentByteOffset + ASL_RESDESC_OFFSET (Irq.Flags), 4); break; case 3: /* Name */ UtAttachNamepathToOwner (Op, InitializerOp); break; default: /* All IRQ bytes are handled here, after the flags and name */ if (InitializerOp->Asl.ParseOpcode != PARSEOP_DEFAULT_ARG) { /* Up to 16 interrupts can be specified in the list */ Interrupts++; if (Interrupts > 16) { AslError (ASL_ERROR, ASL_MSG_INTERRUPT_LIST, InitializerOp, NULL); return (Rnode); } /* Only interrupts 0-15 are allowed (mask is 16 bits) */ if (InitializerOp->Asl.Value.Integer > 15) { AslError (ASL_ERROR, ASL_MSG_INTERRUPT_NUMBER, InitializerOp, NULL); } else { IrqMask |= (1 << (UINT8) InitializerOp->Asl.Value.Integer); } } /* Case 4: First IRQ value in list */ if (i == 4) { /* Check now for duplicates in list */ RsCheckListForDuplicates (InitializerOp); /* Create a named field at the start of the list */ RsCreateWordField (InitializerOp, ACPI_RESTAG_INTERRUPT, CurrentByteOffset + ASL_RESDESC_OFFSET (Irq.IrqMask)); } break; } InitializerOp = RsCompleteNodeAndGetNext (InitializerOp); } /* Now we can set the channel mask */ Descriptor->Irq.IrqMask = IrqMask; return (Rnode); } /******************************************************************************* * * FUNCTION: RsDoIrqNoFlagsDescriptor * * PARAMETERS: Op - Parent resource descriptor parse node * CurrentByteOffset - Offset into the resource template AML * buffer (to track references to the desc) * * RETURN: Completed resource node * * DESCRIPTION: Construct a short "IRQNoFlags" descriptor * ******************************************************************************/ ASL_RESOURCE_NODE * RsDoIrqNoFlagsDescriptor ( ACPI_PARSE_OBJECT *Op, UINT32 CurrentByteOffset) { AML_RESOURCE *Descriptor; ACPI_PARSE_OBJECT *InitializerOp; ASL_RESOURCE_NODE *Rnode; UINT16 IrqMask = 0; UINT32 Interrupts = 0; UINT32 i; InitializerOp = Op->Asl.Child; Rnode = RsAllocateResourceNode (sizeof (AML_RESOURCE_IRQ_NOFLAGS)); Descriptor = Rnode->Buffer; Descriptor->Irq.DescriptorType = ACPI_RESOURCE_NAME_IRQ | ASL_RDESC_IRQ_SIZE; /* Process all child initialization nodes */ for (i = 0; InitializerOp; i++) { switch (i) { case 0: /* Name */ UtAttachNamepathToOwner (Op, InitializerOp); break; default: /* IRQ bytes are handled here, after the flags and name */ if (InitializerOp->Asl.ParseOpcode != PARSEOP_DEFAULT_ARG) { /* Up to 16 interrupts can be specified in the list */ Interrupts++; if (Interrupts > 16) { AslError (ASL_ERROR, ASL_MSG_INTERRUPT_LIST, InitializerOp, NULL); return (Rnode); } /* Only interrupts 0-15 are allowed (mask is 16 bits) */ if (InitializerOp->Asl.Value.Integer > 15) { AslError (ASL_ERROR, ASL_MSG_INTERRUPT_NUMBER, InitializerOp, NULL); } else { IrqMask |= (1 << ((UINT8) InitializerOp->Asl.Value.Integer)); } } /* Case 1: First IRQ value in list */ if (i == 1) { /* Check now for duplicates in list */ RsCheckListForDuplicates (InitializerOp); /* Create a named field at the start of the list */ RsCreateWordField (InitializerOp, ACPI_RESTAG_INTERRUPT, CurrentByteOffset + ASL_RESDESC_OFFSET (Irq.IrqMask)); } break; } InitializerOp = RsCompleteNodeAndGetNext (InitializerOp); } /* Now we can set the interrupt mask */ Descriptor->Irq.IrqMask = IrqMask; return (Rnode); } src/acpica/source/compiler/aslrestype2.c000066400000000000000000000464271231470457100206410ustar00rootroot00000000000000/****************************************************************************** * * Module Name: aslrestype2 - Miscellaneous Large resource descriptors * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #include "aslcompiler.h" #include "aslcompiler.y.h" #include "amlcode.h" #define _COMPONENT ACPI_COMPILER ACPI_MODULE_NAME ("aslrestype2") /* * This module contains miscellaneous large resource descriptors: * * Register * Interrupt * VendorLong */ /******************************************************************************* * * FUNCTION: RsDoGeneralRegisterDescriptor * * PARAMETERS: Op - Parent resource descriptor parse node * CurrentByteOffset - Offset into the resource template AML * buffer (to track references to the desc) * * RETURN: Completed resource node * * DESCRIPTION: Construct a long "Register" descriptor * ******************************************************************************/ ASL_RESOURCE_NODE * RsDoGeneralRegisterDescriptor ( ACPI_PARSE_OBJECT *Op, UINT32 CurrentByteOffset) { AML_RESOURCE *Descriptor; ACPI_PARSE_OBJECT *InitializerOp; ASL_RESOURCE_NODE *Rnode; UINT32 i; InitializerOp = Op->Asl.Child; Rnode = RsAllocateResourceNode (sizeof (AML_RESOURCE_GENERIC_REGISTER)); Descriptor = Rnode->Buffer; Descriptor->GenericReg.DescriptorType = ACPI_RESOURCE_NAME_GENERIC_REGISTER; Descriptor->GenericReg.ResourceLength = 12; /* Process all child initialization nodes */ for (i = 0; InitializerOp; i++) { switch (i) { case 0: /* Address space */ Descriptor->GenericReg.AddressSpaceId = (UINT8) InitializerOp->Asl.Value.Integer; RsCreateByteField (InitializerOp, ACPI_RESTAG_ADDRESSSPACE, CurrentByteOffset + ASL_RESDESC_OFFSET (GenericReg.AddressSpaceId)); break; case 1: /* Register Bit Width */ Descriptor->GenericReg.BitWidth = (UINT8) InitializerOp->Asl.Value.Integer; RsCreateByteField (InitializerOp, ACPI_RESTAG_REGISTERBITWIDTH, CurrentByteOffset + ASL_RESDESC_OFFSET (GenericReg.BitWidth)); break; case 2: /* Register Bit Offset */ Descriptor->GenericReg.BitOffset = (UINT8) InitializerOp->Asl.Value.Integer; RsCreateByteField (InitializerOp, ACPI_RESTAG_REGISTERBITOFFSET, CurrentByteOffset + ASL_RESDESC_OFFSET (GenericReg.BitOffset)); break; case 3: /* Register Address */ Descriptor->GenericReg.Address = InitializerOp->Asl.Value.Integer; RsCreateQwordField (InitializerOp, ACPI_RESTAG_ADDRESS, CurrentByteOffset + ASL_RESDESC_OFFSET (GenericReg.Address)); break; case 4: /* Access Size (ACPI 3.0) */ Descriptor->GenericReg.AccessSize = (UINT8) InitializerOp->Asl.Value.Integer; RsCreateByteField (InitializerOp, ACPI_RESTAG_ACCESSSIZE, CurrentByteOffset + ASL_RESDESC_OFFSET (GenericReg.AccessSize)); if (Descriptor->GenericReg.AccessSize > AML_FIELD_ACCESS_QWORD) { AslError (ASL_ERROR, ASL_MSG_INVALID_ACCESS_SIZE, InitializerOp, NULL); } break; case 5: /* ResourceTag (ACPI 3.0b) */ UtAttachNamepathToOwner (Op, InitializerOp); break; default: AslError (ASL_ERROR, ASL_MSG_RESOURCE_LIST, InitializerOp, NULL); break; } InitializerOp = RsCompleteNodeAndGetNext (InitializerOp); } return (Rnode); } /******************************************************************************* * * FUNCTION: RsDoInterruptDescriptor * * PARAMETERS: Op - Parent resource descriptor parse node * CurrentByteOffset - Offset into the resource template AML * buffer (to track references to the desc) * * RETURN: Completed resource node * * DESCRIPTION: Construct a long "Interrupt" descriptor * ******************************************************************************/ ASL_RESOURCE_NODE * RsDoInterruptDescriptor ( ACPI_PARSE_OBJECT *Op, UINT32 CurrentByteOffset) { AML_RESOURCE *Descriptor; AML_RESOURCE *Rover = NULL; ACPI_PARSE_OBJECT *InitializerOp; ASL_RESOURCE_NODE *Rnode; UINT16 StringLength = 0; UINT32 OptionIndex = 0; UINT32 i; BOOLEAN HasResSourceIndex = FALSE; UINT8 ResSourceIndex = 0; UINT8 *ResSourceString = NULL; InitializerOp = Op->Asl.Child; StringLength = RsGetStringDataLength (InitializerOp); /* Count the interrupt numbers */ for (i = 0; InitializerOp; i++) { InitializerOp = ASL_GET_PEER_NODE (InitializerOp); if (i <= 6) { if (i == 3 && InitializerOp->Asl.ParseOpcode != PARSEOP_DEFAULT_ARG) { /* * ResourceSourceIndex was specified, always make room for * it, even if the ResourceSource was omitted. */ OptionIndex++; } continue; } OptionIndex += 4; } InitializerOp = Op->Asl.Child; Rnode = RsAllocateResourceNode (sizeof (AML_RESOURCE_EXTENDED_IRQ) + 1 + OptionIndex + StringLength); Descriptor = Rnode->Buffer; Descriptor->ExtendedIrq.DescriptorType = ACPI_RESOURCE_NAME_EXTENDED_IRQ; /* * Initial descriptor length -- may be enlarged if there are * optional fields present */ Descriptor->ExtendedIrq.ResourceLength = 2; /* Flags and table length byte */ Descriptor->ExtendedIrq.InterruptCount = 0; Rover = ACPI_CAST_PTR (AML_RESOURCE, (&(Descriptor->ExtendedIrq.Interrupts[0]))); /* Process all child initialization nodes */ for (i = 0; InitializerOp; i++) { switch (i) { case 0: /* Resource Usage (Default: consumer (1) */ RsSetFlagBits (&Descriptor->ExtendedIrq.Flags, InitializerOp, 0, 1); break; case 1: /* Interrupt Type (or Mode - edge/level) */ RsSetFlagBits (&Descriptor->ExtendedIrq.Flags, InitializerOp, 1, 0); RsCreateBitField (InitializerOp, ACPI_RESTAG_INTERRUPTTYPE, CurrentByteOffset + ASL_RESDESC_OFFSET (ExtendedIrq.Flags), 1); break; case 2: /* Interrupt Level (or Polarity - Active high/low) */ RsSetFlagBits (&Descriptor->ExtendedIrq.Flags, InitializerOp, 2, 0); RsCreateBitField (InitializerOp, ACPI_RESTAG_INTERRUPTLEVEL, CurrentByteOffset + ASL_RESDESC_OFFSET (ExtendedIrq.Flags), 2); break; case 3: /* Share Type - Default: exclusive (0) */ RsSetFlagBits (&Descriptor->ExtendedIrq.Flags, InitializerOp, 3, 0); RsCreateBitField (InitializerOp, ACPI_RESTAG_INTERRUPTSHARE, CurrentByteOffset + ASL_RESDESC_OFFSET (ExtendedIrq.Flags), 3); break; case 4: /* ResSourceIndex [Optional Field - BYTE] */ if (InitializerOp->Asl.ParseOpcode != PARSEOP_DEFAULT_ARG) { HasResSourceIndex = TRUE; ResSourceIndex = (UINT8) InitializerOp->Asl.Value.Integer; } break; case 5: /* ResSource [Optional Field - STRING] */ if ((InitializerOp->Asl.ParseOpcode != PARSEOP_DEFAULT_ARG) && (InitializerOp->Asl.Value.String)) { if (StringLength) { ResSourceString = (UINT8 *) InitializerOp->Asl.Value.String; } /* ResourceSourceIndex must also be valid */ if (!HasResSourceIndex) { AslError (ASL_ERROR, ASL_MSG_RESOURCE_INDEX, InitializerOp, NULL); } } #if 0 /* * Not a valid ResourceSource, ResourceSourceIndex must also * be invalid */ else if (HasResSourceIndex) { AslError (ASL_ERROR, ASL_MSG_RESOURCE_SOURCE, InitializerOp, NULL); } #endif break; case 6: /* ResourceTag */ UtAttachNamepathToOwner (Op, InitializerOp); break; default: /* * Interrupt Numbers come through here, repeatedly */ /* Maximum 255 interrupts allowed for this descriptor */ if (Descriptor->ExtendedIrq.InterruptCount == 255) { AslError (ASL_ERROR, ASL_MSG_EX_INTERRUPT_LIST, InitializerOp, NULL); return (Rnode); } /* Each interrupt number must be a 32-bit value */ if (InitializerOp->Asl.Value.Integer > ACPI_UINT32_MAX) { AslError (ASL_ERROR, ASL_MSG_EX_INTERRUPT_NUMBER, InitializerOp, NULL); } /* Save the integer and move pointer to the next one */ Rover->DwordItem = (UINT32) InitializerOp->Asl.Value.Integer; Rover = ACPI_ADD_PTR (AML_RESOURCE, &(Rover->DwordItem), 4); Descriptor->ExtendedIrq.InterruptCount++; Descriptor->ExtendedIrq.ResourceLength += 4; /* Case 7: First interrupt number in list */ if (i == 7) { if (InitializerOp->Asl.ParseOpcode == PARSEOP_DEFAULT_ARG) { /* Must be at least one interrupt */ AslError (ASL_ERROR, ASL_MSG_EX_INTERRUPT_LIST_MIN, InitializerOp, NULL); } /* Check now for duplicates in list */ RsCheckListForDuplicates (InitializerOp); /* Create a named field at the start of the list */ RsCreateDwordField (InitializerOp, ACPI_RESTAG_INTERRUPT, CurrentByteOffset + ASL_RESDESC_OFFSET (ExtendedIrq.Interrupts[0])); } } InitializerOp = RsCompleteNodeAndGetNext (InitializerOp); } /* Add optional ResSourceIndex if present */ if (HasResSourceIndex) { Rover->ByteItem = ResSourceIndex; Rover = ACPI_ADD_PTR (AML_RESOURCE, &(Rover->ByteItem), 1); Descriptor->ExtendedIrq.ResourceLength += 1; } /* Add optional ResSource string if present */ if (StringLength && ResSourceString) { strcpy ((char *) Rover, (char *) ResSourceString); Rover = ACPI_ADD_PTR ( AML_RESOURCE, &(Rover->ByteItem), StringLength); Descriptor->ExtendedIrq.ResourceLength = (UINT16) (Descriptor->ExtendedIrq.ResourceLength + StringLength); } Rnode->BufferLength = (ASL_RESDESC_OFFSET (ExtendedIrq.Interrupts[0]) - ASL_RESDESC_OFFSET (ExtendedIrq.DescriptorType)) + OptionIndex + StringLength; return (Rnode); } /******************************************************************************* * * FUNCTION: RsDoVendorLargeDescriptor * * PARAMETERS: Op - Parent resource descriptor parse node * CurrentByteOffset - Offset into the resource template AML * buffer (to track references to the desc) * * RETURN: Completed resource node * * DESCRIPTION: Construct a long "VendorLong" descriptor * ******************************************************************************/ ASL_RESOURCE_NODE * RsDoVendorLargeDescriptor ( ACPI_PARSE_OBJECT *Op, UINT32 CurrentByteOffset) { AML_RESOURCE *Descriptor; ACPI_PARSE_OBJECT *InitializerOp; ASL_RESOURCE_NODE *Rnode; UINT8 *VendorData; UINT32 i; /* Count the number of data bytes */ InitializerOp = Op->Asl.Child; InitializerOp = RsCompleteNodeAndGetNext (InitializerOp); for (i = 0; InitializerOp; i++) { if (InitializerOp->Asl.ParseOpcode == PARSEOP_DEFAULT_ARG) { break; } InitializerOp = InitializerOp->Asl.Next; } InitializerOp = Op->Asl.Child; InitializerOp = RsCompleteNodeAndGetNext (InitializerOp); Rnode = RsAllocateResourceNode (sizeof (AML_RESOURCE_VENDOR_LARGE) + i); Descriptor = Rnode->Buffer; Descriptor->VendorLarge.DescriptorType = ACPI_RESOURCE_NAME_VENDOR_LARGE; Descriptor->VendorLarge.ResourceLength = (UINT16) i; /* Point to end-of-descriptor for vendor data */ VendorData = ((UINT8 *) Descriptor) + sizeof (AML_RESOURCE_LARGE_HEADER); /* Process all child initialization nodes */ for (i = 0; InitializerOp; i++) { if (InitializerOp->Asl.ParseOpcode == PARSEOP_DEFAULT_ARG) { break; } VendorData[i] = (UINT8) InitializerOp->Asl.Value.Integer; InitializerOp = RsCompleteNodeAndGetNext (InitializerOp); } return (Rnode); } src/acpica/source/compiler/aslrestype2d.c000066400000000000000000000732641231470457100210040ustar00rootroot00000000000000/****************************************************************************** * * Module Name: aslrestype2d - Large DWord address resource descriptors * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #include "aslcompiler.h" #include "aslcompiler.y.h" #define _COMPONENT ACPI_COMPILER ACPI_MODULE_NAME ("aslrestype2d") /* * This module contains the Dword (32-bit) address space descriptors: * * DwordIO * DwordMemory * DwordSpace */ /******************************************************************************* * * FUNCTION: RsDoDwordIoDescriptor * * PARAMETERS: Op - Parent resource descriptor parse node * CurrentByteOffset - Offset into the resource template AML * buffer (to track references to the desc) * * RETURN: Completed resource node * * DESCRIPTION: Construct a long "DwordIO" descriptor * ******************************************************************************/ ASL_RESOURCE_NODE * RsDoDwordIoDescriptor ( ACPI_PARSE_OBJECT *Op, UINT32 CurrentByteOffset) { AML_RESOURCE *Descriptor; ACPI_PARSE_OBJECT *InitializerOp; ACPI_PARSE_OBJECT *MinOp = NULL; ACPI_PARSE_OBJECT *MaxOp = NULL; ACPI_PARSE_OBJECT *LengthOp = NULL; ACPI_PARSE_OBJECT *GranOp = NULL; ASL_RESOURCE_NODE *Rnode; UINT16 StringLength = 0; UINT32 OptionIndex = 0; UINT8 *OptionalFields; UINT32 i; BOOLEAN ResSourceIndex = FALSE; InitializerOp = Op->Asl.Child; StringLength = RsGetStringDataLength (InitializerOp); Rnode = RsAllocateResourceNode ( sizeof (AML_RESOURCE_ADDRESS32) + 1 + StringLength); Descriptor = Rnode->Buffer; Descriptor->Address32.DescriptorType = ACPI_RESOURCE_NAME_ADDRESS32; Descriptor->Address32.ResourceType = ACPI_ADDRESS_TYPE_IO_RANGE; /* * Initial descriptor length -- may be enlarged if there are * optional fields present */ OptionalFields = ((UINT8 *) Descriptor) + sizeof (AML_RESOURCE_ADDRESS32); Descriptor->Address32.ResourceLength = (UINT16) (sizeof (AML_RESOURCE_ADDRESS32) - sizeof (AML_RESOURCE_LARGE_HEADER)); /* Process all child initialization nodes */ for (i = 0; InitializerOp; i++) { switch (i) { case 0: /* Resource Usage */ RsSetFlagBits (&Descriptor->Address32.Flags, InitializerOp, 0, 1); break; case 1: /* MinType */ RsSetFlagBits (&Descriptor->Address32.Flags, InitializerOp, 2, 0); RsCreateBitField (InitializerOp, ACPI_RESTAG_MINTYPE, CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.Flags), 2); break; case 2: /* MaxType */ RsSetFlagBits (&Descriptor->Address32.Flags, InitializerOp, 3, 0); RsCreateBitField (InitializerOp, ACPI_RESTAG_MAXTYPE, CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.Flags), 3); break; case 3: /* DecodeType */ RsSetFlagBits (&Descriptor->Address32.Flags, InitializerOp, 1, 0); RsCreateBitField (InitializerOp, ACPI_RESTAG_DECODE, CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.Flags), 1); break; case 4: /* Range Type */ RsSetFlagBits (&Descriptor->Address32.SpecificFlags, InitializerOp, 0, 3); RsCreateMultiBitField (InitializerOp, ACPI_RESTAG_RANGETYPE, CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.SpecificFlags), 0, 2); break; case 5: /* Address Granularity */ Descriptor->Address32.Granularity = (UINT32) InitializerOp->Asl.Value.Integer; RsCreateDwordField (InitializerOp, ACPI_RESTAG_GRANULARITY, CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.Granularity)); GranOp = InitializerOp; break; case 6: /* Address Min */ Descriptor->Address32.Minimum = (UINT32) InitializerOp->Asl.Value.Integer; RsCreateDwordField (InitializerOp, ACPI_RESTAG_MINADDR, CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.Minimum)); MinOp = InitializerOp; break; case 7: /* Address Max */ Descriptor->Address32.Maximum = (UINT32) InitializerOp->Asl.Value.Integer; RsCreateDwordField (InitializerOp, ACPI_RESTAG_MAXADDR, CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.Maximum)); MaxOp = InitializerOp; break; case 8: /* Translation Offset */ Descriptor->Address32.TranslationOffset = (UINT32) InitializerOp->Asl.Value.Integer; RsCreateDwordField (InitializerOp, ACPI_RESTAG_TRANSLATION, CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.TranslationOffset)); break; case 9: /* Address Length */ Descriptor->Address32.AddressLength = (UINT32) InitializerOp->Asl.Value.Integer; RsCreateDwordField (InitializerOp, ACPI_RESTAG_LENGTH, CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.AddressLength)); LengthOp = InitializerOp; break; case 10: /* ResSourceIndex [Optional Field - BYTE] */ if (InitializerOp->Asl.ParseOpcode != PARSEOP_DEFAULT_ARG) { /* Found a valid ResourceSourceIndex */ OptionalFields[0] = (UINT8) InitializerOp->Asl.Value.Integer; OptionIndex++; Descriptor->Address32.ResourceLength++; ResSourceIndex = TRUE; } break; case 11: /* ResSource [Optional Field - STRING] */ if ((InitializerOp->Asl.ParseOpcode != PARSEOP_DEFAULT_ARG) && (InitializerOp->Asl.Value.String)) { if (StringLength) { /* Found a valid ResourceSource */ Descriptor->Address32.ResourceLength = (UINT16) (Descriptor->Address32.ResourceLength + StringLength); strcpy ((char *) &OptionalFields[OptionIndex], InitializerOp->Asl.Value.String); /* ResourceSourceIndex must also be valid */ if (!ResSourceIndex) { AslError (ASL_ERROR, ASL_MSG_RESOURCE_INDEX, InitializerOp, NULL); } } } #if 0 /* * Not a valid ResourceSource, ResourceSourceIndex must also * be invalid */ else if (ResSourceIndex) { AslError (ASL_ERROR, ASL_MSG_RESOURCE_SOURCE, InitializerOp, NULL); } #endif break; case 12: /* ResourceTag */ UtAttachNamepathToOwner (Op, InitializerOp); break; case 13: /* Type */ RsSetFlagBits (&Descriptor->Address32.SpecificFlags, InitializerOp, 4, 0); RsCreateBitField (InitializerOp, ACPI_RESTAG_TYPE, CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.SpecificFlags), 4); break; case 14: /* Translation Type */ RsSetFlagBits (&Descriptor->Address32.SpecificFlags, InitializerOp, 5, 0); RsCreateBitField (InitializerOp, ACPI_RESTAG_TRANSTYPE, CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.SpecificFlags), 5); break; default: AslError (ASL_ERROR, ASL_MSG_RESOURCE_LIST, InitializerOp, NULL); break; } InitializerOp = RsCompleteNodeAndGetNext (InitializerOp); } /* Validate the Min/Max/Len/Gran values */ RsLargeAddressCheck ( (UINT64) Descriptor->Address32.Minimum, (UINT64) Descriptor->Address32.Maximum, (UINT64) Descriptor->Address32.AddressLength, (UINT64) Descriptor->Address32.Granularity, Descriptor->Address32.Flags, MinOp, MaxOp, LengthOp, GranOp, Op); Rnode->BufferLength = sizeof (AML_RESOURCE_ADDRESS32) + OptionIndex + StringLength; return (Rnode); } /******************************************************************************* * * FUNCTION: RsDoDwordMemoryDescriptor * * PARAMETERS: Op - Parent resource descriptor parse node * CurrentByteOffset - Offset into the resource template AML * buffer (to track references to the desc) * * RETURN: Completed resource node * * DESCRIPTION: Construct a long "DwordMemory" descriptor * ******************************************************************************/ ASL_RESOURCE_NODE * RsDoDwordMemoryDescriptor ( ACPI_PARSE_OBJECT *Op, UINT32 CurrentByteOffset) { AML_RESOURCE *Descriptor; ACPI_PARSE_OBJECT *InitializerOp; ACPI_PARSE_OBJECT *MinOp = NULL; ACPI_PARSE_OBJECT *MaxOp = NULL; ACPI_PARSE_OBJECT *LengthOp = NULL; ACPI_PARSE_OBJECT *GranOp = NULL; ASL_RESOURCE_NODE *Rnode; UINT8 *OptionalFields; UINT16 StringLength = 0; UINT32 OptionIndex = 0; UINT32 i; BOOLEAN ResSourceIndex = FALSE; InitializerOp = Op->Asl.Child; StringLength = RsGetStringDataLength (InitializerOp); Rnode = RsAllocateResourceNode ( sizeof (AML_RESOURCE_ADDRESS32) + 1 + StringLength); Descriptor = Rnode->Buffer; Descriptor->Address32.DescriptorType = ACPI_RESOURCE_NAME_ADDRESS32; Descriptor->Address32.ResourceType = ACPI_ADDRESS_TYPE_MEMORY_RANGE; /* * Initial descriptor length -- may be enlarged if there are * optional fields present */ OptionalFields = ((UINT8 *) Descriptor) + sizeof (AML_RESOURCE_ADDRESS32); Descriptor->Address32.ResourceLength = (UINT16) (sizeof (AML_RESOURCE_ADDRESS32) - sizeof (AML_RESOURCE_LARGE_HEADER)); /* Process all child initialization nodes */ for (i = 0; InitializerOp; i++) { switch (i) { case 0: /* Resource Usage */ RsSetFlagBits (&Descriptor->Address32.Flags, InitializerOp, 0, 1); break; case 1: /* DecodeType */ RsSetFlagBits (&Descriptor->Address32.Flags, InitializerOp, 1, 0); RsCreateBitField (InitializerOp, ACPI_RESTAG_DECODE, CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.Flags), 1); break; case 2: /* MinType */ RsSetFlagBits (&Descriptor->Address32.Flags, InitializerOp, 2, 0); RsCreateBitField (InitializerOp, ACPI_RESTAG_MINTYPE, CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.Flags), 2); break; case 3: /* MaxType */ RsSetFlagBits (&Descriptor->Address32.Flags, InitializerOp, 3, 0); RsCreateBitField (InitializerOp, ACPI_RESTAG_MAXTYPE, CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.Flags), 3); break; case 4: /* Memory Type */ RsSetFlagBits (&Descriptor->Address32.SpecificFlags, InitializerOp, 1, 0); RsCreateMultiBitField (InitializerOp, ACPI_RESTAG_MEMTYPE, CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.SpecificFlags), 1, 2); break; case 5: /* Read/Write Type */ RsSetFlagBits (&Descriptor->Address32.SpecificFlags, InitializerOp, 0, 1); RsCreateBitField (InitializerOp, ACPI_RESTAG_READWRITETYPE, CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.SpecificFlags), 0); break; case 6: /* Address Granularity */ Descriptor->Address32.Granularity = (UINT32) InitializerOp->Asl.Value.Integer; RsCreateDwordField (InitializerOp, ACPI_RESTAG_GRANULARITY, CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.Granularity)); GranOp = InitializerOp; break; case 7: /* Min Address */ Descriptor->Address32.Minimum = (UINT32) InitializerOp->Asl.Value.Integer; RsCreateDwordField (InitializerOp, ACPI_RESTAG_MINADDR, CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.Minimum)); MinOp = InitializerOp; break; case 8: /* Max Address */ Descriptor->Address32.Maximum = (UINT32) InitializerOp->Asl.Value.Integer; RsCreateDwordField (InitializerOp, ACPI_RESTAG_MAXADDR, CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.Maximum)); MaxOp = InitializerOp; break; case 9: /* Translation Offset */ Descriptor->Address32.TranslationOffset = (UINT32) InitializerOp->Asl.Value.Integer; RsCreateDwordField (InitializerOp, ACPI_RESTAG_TRANSLATION, CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.TranslationOffset)); break; case 10: /* Address Length */ Descriptor->Address32.AddressLength = (UINT32) InitializerOp->Asl.Value.Integer; RsCreateDwordField (InitializerOp, ACPI_RESTAG_LENGTH, CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.AddressLength)); LengthOp = InitializerOp; break; case 11: /* ResSourceIndex [Optional Field - BYTE] */ if (InitializerOp->Asl.ParseOpcode != PARSEOP_DEFAULT_ARG) { OptionalFields[0] = (UINT8) InitializerOp->Asl.Value.Integer; OptionIndex++; Descriptor->Address32.ResourceLength++; ResSourceIndex = TRUE; } break; case 12: /* ResSource [Optional Field - STRING] */ if ((InitializerOp->Asl.ParseOpcode != PARSEOP_DEFAULT_ARG) && (InitializerOp->Asl.Value.String)) { if (StringLength) { Descriptor->Address32.ResourceLength = (UINT16) (Descriptor->Address32.ResourceLength + StringLength); strcpy ((char *) &OptionalFields[OptionIndex], InitializerOp->Asl.Value.String); /* ResourceSourceIndex must also be valid */ if (!ResSourceIndex) { AslError (ASL_ERROR, ASL_MSG_RESOURCE_INDEX, InitializerOp, NULL); } } } #if 0 /* * Not a valid ResourceSource, ResourceSourceIndex must also * be invalid */ else if (ResSourceIndex) { AslError (ASL_ERROR, ASL_MSG_RESOURCE_SOURCE, InitializerOp, NULL); } #endif break; case 13: /* ResourceTag */ UtAttachNamepathToOwner (Op, InitializerOp); break; case 14: /* Address Range */ RsSetFlagBits (&Descriptor->Address32.SpecificFlags, InitializerOp, 3, 0); RsCreateMultiBitField (InitializerOp, ACPI_RESTAG_MEMATTRIBUTES, CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.SpecificFlags), 3, 2); break; case 15: /* Type */ RsSetFlagBits (&Descriptor->Address32.SpecificFlags, InitializerOp, 5, 0); RsCreateBitField (InitializerOp, ACPI_RESTAG_TYPE, CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.SpecificFlags), 5); break; default: AslError (ASL_ERROR, ASL_MSG_RESOURCE_LIST, InitializerOp, NULL); break; } InitializerOp = RsCompleteNodeAndGetNext (InitializerOp); } /* Validate the Min/Max/Len/Gran values */ RsLargeAddressCheck ( (UINT64) Descriptor->Address32.Minimum, (UINT64) Descriptor->Address32.Maximum, (UINT64) Descriptor->Address32.AddressLength, (UINT64) Descriptor->Address32.Granularity, Descriptor->Address32.Flags, MinOp, MaxOp, LengthOp, GranOp, Op); Rnode->BufferLength = sizeof (AML_RESOURCE_ADDRESS32) + OptionIndex + StringLength; return (Rnode); } /******************************************************************************* * * FUNCTION: RsDoDwordSpaceDescriptor * * PARAMETERS: Op - Parent resource descriptor parse node * CurrentByteOffset - Offset into the resource template AML * buffer (to track references to the desc) * * RETURN: Completed resource node * * DESCRIPTION: Construct a long "DwordSpace" descriptor * ******************************************************************************/ ASL_RESOURCE_NODE * RsDoDwordSpaceDescriptor ( ACPI_PARSE_OBJECT *Op, UINT32 CurrentByteOffset) { AML_RESOURCE *Descriptor; ACPI_PARSE_OBJECT *InitializerOp; ACPI_PARSE_OBJECT *MinOp = NULL; ACPI_PARSE_OBJECT *MaxOp = NULL; ACPI_PARSE_OBJECT *LengthOp = NULL; ACPI_PARSE_OBJECT *GranOp = NULL; ASL_RESOURCE_NODE *Rnode; UINT8 *OptionalFields; UINT16 StringLength = 0; UINT32 OptionIndex = 0; UINT32 i; BOOLEAN ResSourceIndex = FALSE; InitializerOp = Op->Asl.Child; StringLength = RsGetStringDataLength (InitializerOp); Rnode = RsAllocateResourceNode ( sizeof (AML_RESOURCE_ADDRESS32) + 1 + StringLength); Descriptor = Rnode->Buffer; Descriptor->Address32.DescriptorType = ACPI_RESOURCE_NAME_ADDRESS32; /* * Initial descriptor length -- may be enlarged if there are * optional fields present */ OptionalFields = ((UINT8 *) Descriptor) + sizeof (AML_RESOURCE_ADDRESS32); Descriptor->Address32.ResourceLength = (UINT16) (sizeof (AML_RESOURCE_ADDRESS32) - sizeof (AML_RESOURCE_LARGE_HEADER)); /* Process all child initialization nodes */ for (i = 0; InitializerOp; i++) { switch (i) { case 0: /* Resource Type */ Descriptor->Address32.ResourceType = (UINT8) InitializerOp->Asl.Value.Integer; break; case 1: /* Resource Usage */ RsSetFlagBits (&Descriptor->Address32.Flags, InitializerOp, 0, 1); break; case 2: /* DecodeType */ RsSetFlagBits (&Descriptor->Address32.Flags, InitializerOp, 1, 0); RsCreateBitField (InitializerOp, ACPI_RESTAG_DECODE, CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.Flags), 1); break; case 3: /* MinType */ RsSetFlagBits (&Descriptor->Address32.Flags, InitializerOp, 2, 0); RsCreateBitField (InitializerOp, ACPI_RESTAG_MINTYPE, CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.Flags), 2); break; case 4: /* MaxType */ RsSetFlagBits (&Descriptor->Address32.Flags, InitializerOp, 3, 0); RsCreateBitField (InitializerOp, ACPI_RESTAG_MAXTYPE, CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.Flags), 3); break; case 5: /* Type-Specific flags */ Descriptor->Address32.SpecificFlags = (UINT8) InitializerOp->Asl.Value.Integer; break; case 6: /* Address Granularity */ Descriptor->Address32.Granularity = (UINT32) InitializerOp->Asl.Value.Integer; RsCreateDwordField (InitializerOp, ACPI_RESTAG_GRANULARITY, CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.Granularity)); GranOp = InitializerOp; break; case 7: /* Min Address */ Descriptor->Address32.Minimum = (UINT32) InitializerOp->Asl.Value.Integer; RsCreateDwordField (InitializerOp, ACPI_RESTAG_MINADDR, CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.Minimum)); MinOp = InitializerOp; break; case 8: /* Max Address */ Descriptor->Address32.Maximum = (UINT32) InitializerOp->Asl.Value.Integer; RsCreateDwordField (InitializerOp, ACPI_RESTAG_MAXADDR, CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.Maximum)); MaxOp = InitializerOp; break; case 9: /* Translation Offset */ Descriptor->Address32.TranslationOffset = (UINT32) InitializerOp->Asl.Value.Integer; RsCreateDwordField (InitializerOp, ACPI_RESTAG_TRANSLATION, CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.TranslationOffset)); break; case 10: /* Address Length */ Descriptor->Address32.AddressLength = (UINT32) InitializerOp->Asl.Value.Integer; RsCreateDwordField (InitializerOp, ACPI_RESTAG_LENGTH, CurrentByteOffset + ASL_RESDESC_OFFSET (Address32.AddressLength)); LengthOp = InitializerOp; break; case 11: /* ResSourceIndex [Optional Field - BYTE] */ if (InitializerOp->Asl.ParseOpcode != PARSEOP_DEFAULT_ARG) { OptionalFields[0] = (UINT8) InitializerOp->Asl.Value.Integer; OptionIndex++; Descriptor->Address32.ResourceLength++; ResSourceIndex = TRUE; } break; case 12: /* ResSource [Optional Field - STRING] */ if ((InitializerOp->Asl.ParseOpcode != PARSEOP_DEFAULT_ARG) && (InitializerOp->Asl.Value.String)) { if (StringLength) { Descriptor->Address32.ResourceLength = (UINT16) (Descriptor->Address32.ResourceLength + StringLength); strcpy ((char *) &OptionalFields[OptionIndex], InitializerOp->Asl.Value.String); /* ResourceSourceIndex must also be valid */ if (!ResSourceIndex) { AslError (ASL_ERROR, ASL_MSG_RESOURCE_INDEX, InitializerOp, NULL); } } } #if 0 /* * Not a valid ResourceSource, ResourceSourceIndex must also * be invalid */ else if (ResSourceIndex) { AslError (ASL_ERROR, ASL_MSG_RESOURCE_SOURCE, InitializerOp, NULL); } #endif break; case 13: /* ResourceTag */ UtAttachNamepathToOwner (Op, InitializerOp); break; default: AslError (ASL_ERROR, ASL_MSG_RESOURCE_LIST, InitializerOp, NULL); break; } InitializerOp = RsCompleteNodeAndGetNext (InitializerOp); } /* Validate the Min/Max/Len/Gran values */ RsLargeAddressCheck ( (UINT64) Descriptor->Address32.Minimum, (UINT64) Descriptor->Address32.Maximum, (UINT64) Descriptor->Address32.AddressLength, (UINT64) Descriptor->Address32.Granularity, Descriptor->Address32.Flags, MinOp, MaxOp, LengthOp, GranOp, Op); Rnode->BufferLength = sizeof (AML_RESOURCE_ADDRESS32) + OptionIndex + StringLength; return (Rnode); } src/acpica/source/compiler/aslrestype2e.c000066400000000000000000000617421231470457100210030ustar00rootroot00000000000000/****************************************************************************** * * Module Name: aslrestype2e - Large Extended address resource descriptors * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #include "aslcompiler.h" #define _COMPONENT ACPI_COMPILER ACPI_MODULE_NAME ("aslrestype2e") /* * This module contains the Extended (64-bit) address space descriptors: * * ExtendedIO * ExtendedMemory * ExtendedSpace */ /******************************************************************************* * * FUNCTION: RsDoExtendedIoDescriptor * * PARAMETERS: Op - Parent resource descriptor parse node * CurrentByteOffset - Offset into the resource template AML * buffer (to track references to the desc) * * RETURN: Completed resource node * * DESCRIPTION: Construct a long "ExtendedIO" descriptor * ******************************************************************************/ ASL_RESOURCE_NODE * RsDoExtendedIoDescriptor ( ACPI_PARSE_OBJECT *Op, UINT32 CurrentByteOffset) { AML_RESOURCE *Descriptor; ACPI_PARSE_OBJECT *InitializerOp; ACPI_PARSE_OBJECT *MinOp = NULL; ACPI_PARSE_OBJECT *MaxOp = NULL; ACPI_PARSE_OBJECT *LengthOp = NULL; ACPI_PARSE_OBJECT *GranOp = NULL; ASL_RESOURCE_NODE *Rnode; UINT16 StringLength = 0; UINT32 i; InitializerOp = Op->Asl.Child; StringLength = RsGetStringDataLength (InitializerOp); Rnode = RsAllocateResourceNode ( sizeof (AML_RESOURCE_EXTENDED_ADDRESS64) + 1 + StringLength); Descriptor = Rnode->Buffer; Descriptor->ExtAddress64.DescriptorType = ACPI_RESOURCE_NAME_EXTENDED_ADDRESS64; Descriptor->ExtAddress64.ResourceType = ACPI_ADDRESS_TYPE_IO_RANGE; Descriptor->ExtAddress64.RevisionID = AML_RESOURCE_EXTENDED_ADDRESS_REVISION; Descriptor->ExtAddress64.ResourceLength = (UINT16) (sizeof (AML_RESOURCE_EXTENDED_ADDRESS64) - sizeof (AML_RESOURCE_LARGE_HEADER)); /* Process all child initialization nodes */ for (i = 0; InitializerOp; i++) { switch (i) { case 0: /* Resource Usage */ RsSetFlagBits (&Descriptor->ExtAddress64.Flags, InitializerOp, 0, 1); break; case 1: /* MinType */ RsSetFlagBits (&Descriptor->ExtAddress64.Flags, InitializerOp, 2, 0); RsCreateBitField (InitializerOp, ACPI_RESTAG_MINTYPE, CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.Flags), 2); break; case 2: /* MaxType */ RsSetFlagBits (&Descriptor->ExtAddress64.Flags, InitializerOp, 3, 0); RsCreateBitField (InitializerOp, ACPI_RESTAG_MAXTYPE, CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.Flags), 3); break; case 3: /* DecodeType */ RsSetFlagBits (&Descriptor->ExtAddress64.Flags, InitializerOp, 1, 0); RsCreateBitField (InitializerOp, ACPI_RESTAG_DECODE, CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.Flags), 1); break; case 4: /* Range Type */ RsSetFlagBits (&Descriptor->ExtAddress64.SpecificFlags, InitializerOp, 0, 3); RsCreateMultiBitField (InitializerOp, ACPI_RESTAG_RANGETYPE, CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.SpecificFlags), 0, 2); break; case 5: /* Address Granularity */ Descriptor->ExtAddress64.Granularity = InitializerOp->Asl.Value.Integer; RsCreateQwordField (InitializerOp, ACPI_RESTAG_GRANULARITY, CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.Granularity)); GranOp = InitializerOp; break; case 6: /* Address Min */ Descriptor->ExtAddress64.Minimum = InitializerOp->Asl.Value.Integer; RsCreateQwordField (InitializerOp, ACPI_RESTAG_MINADDR, CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.Minimum)); MinOp = InitializerOp; break; case 7: /* Address Max */ Descriptor->ExtAddress64.Maximum = InitializerOp->Asl.Value.Integer; RsCreateQwordField (InitializerOp, ACPI_RESTAG_MAXADDR, CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.Maximum)); MaxOp = InitializerOp; break; case 8: /* Translation Offset */ Descriptor->ExtAddress64.TranslationOffset = InitializerOp->Asl.Value.Integer; RsCreateQwordField (InitializerOp, ACPI_RESTAG_TRANSLATION, CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.TranslationOffset)); break; case 9: /* Address Length */ Descriptor->ExtAddress64.AddressLength = InitializerOp->Asl.Value.Integer; RsCreateQwordField (InitializerOp, ACPI_RESTAG_LENGTH, CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.AddressLength)); LengthOp = InitializerOp; break; case 10: /* Type-Specific Attributes */ Descriptor->ExtAddress64.TypeSpecific = InitializerOp->Asl.Value.Integer; RsCreateQwordField (InitializerOp, ACPI_RESTAG_TYPESPECIFICATTRIBUTES, CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.TypeSpecific)); break; case 11: /* ResourceTag */ UtAttachNamepathToOwner (Op, InitializerOp); break; case 12: /* Type */ RsSetFlagBits (&Descriptor->ExtAddress64.SpecificFlags, InitializerOp, 4, 0); RsCreateBitField (InitializerOp, ACPI_RESTAG_TYPE, CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.SpecificFlags), 4); break; case 13: /* Translation Type */ RsSetFlagBits (&Descriptor->ExtAddress64.SpecificFlags, InitializerOp, 5, 0); RsCreateBitField (InitializerOp, ACPI_RESTAG_TRANSTYPE, CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.SpecificFlags), 5); break; default: AslError (ASL_ERROR, ASL_MSG_RESOURCE_LIST, InitializerOp, NULL); break; } InitializerOp = RsCompleteNodeAndGetNext (InitializerOp); } /* Validate the Min/Max/Len/Gran values */ RsLargeAddressCheck ( Descriptor->ExtAddress64.Minimum, Descriptor->ExtAddress64.Maximum, Descriptor->ExtAddress64.AddressLength, Descriptor->ExtAddress64.Granularity, Descriptor->ExtAddress64.Flags, MinOp, MaxOp, LengthOp, GranOp, Op); Rnode->BufferLength = sizeof (AML_RESOURCE_EXTENDED_ADDRESS64) + StringLength; return (Rnode); } /******************************************************************************* * * FUNCTION: RsDoExtendedMemoryDescriptor * * PARAMETERS: Op - Parent resource descriptor parse node * CurrentByteOffset - Offset into the resource template AML * buffer (to track references to the desc) * * RETURN: Completed resource node * * DESCRIPTION: Construct a long "ExtendedMemory" descriptor * ******************************************************************************/ ASL_RESOURCE_NODE * RsDoExtendedMemoryDescriptor ( ACPI_PARSE_OBJECT *Op, UINT32 CurrentByteOffset) { AML_RESOURCE *Descriptor; ACPI_PARSE_OBJECT *InitializerOp; ACPI_PARSE_OBJECT *MinOp = NULL; ACPI_PARSE_OBJECT *MaxOp = NULL; ACPI_PARSE_OBJECT *LengthOp = NULL; ACPI_PARSE_OBJECT *GranOp = NULL; ASL_RESOURCE_NODE *Rnode; UINT16 StringLength = 0; UINT32 i; InitializerOp = Op->Asl.Child; StringLength = RsGetStringDataLength (InitializerOp); Rnode = RsAllocateResourceNode ( sizeof (AML_RESOURCE_EXTENDED_ADDRESS64) + 1 + StringLength); Descriptor = Rnode->Buffer; Descriptor->ExtAddress64.DescriptorType = ACPI_RESOURCE_NAME_EXTENDED_ADDRESS64; Descriptor->ExtAddress64.ResourceType = ACPI_ADDRESS_TYPE_MEMORY_RANGE; Descriptor->ExtAddress64.RevisionID = AML_RESOURCE_EXTENDED_ADDRESS_REVISION; Descriptor->ExtAddress64.ResourceLength = (UINT16) (sizeof (AML_RESOURCE_EXTENDED_ADDRESS64) - sizeof (AML_RESOURCE_LARGE_HEADER)); /* Process all child initialization nodes */ for (i = 0; InitializerOp; i++) { switch (i) { case 0: /* Resource Usage */ RsSetFlagBits (&Descriptor->ExtAddress64.Flags, InitializerOp, 0, 1); break; case 1: /* DecodeType */ RsSetFlagBits (&Descriptor->ExtAddress64.Flags, InitializerOp, 1, 0); RsCreateBitField (InitializerOp, ACPI_RESTAG_DECODE, CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.Flags), 1); break; case 2: /* MinType */ RsSetFlagBits (&Descriptor->ExtAddress64.Flags, InitializerOp, 2, 0); RsCreateBitField (InitializerOp, ACPI_RESTAG_MINTYPE, CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.Flags), 2); break; case 3: /* MaxType */ RsSetFlagBits (&Descriptor->ExtAddress64.Flags, InitializerOp, 3, 0); RsCreateBitField (InitializerOp, ACPI_RESTAG_MAXTYPE, CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.Flags), 3); break; case 4: /* Memory Type */ RsSetFlagBits (&Descriptor->ExtAddress64.SpecificFlags, InitializerOp, 1, 0); RsCreateMultiBitField (InitializerOp, ACPI_RESTAG_MEMTYPE, CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.SpecificFlags), 1, 2); break; case 5: /* Read/Write Type */ RsSetFlagBits (&Descriptor->ExtAddress64.SpecificFlags, InitializerOp, 0, 1); RsCreateBitField (InitializerOp, ACPI_RESTAG_READWRITETYPE, CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.SpecificFlags), 0); break; case 6: /* Address Granularity */ Descriptor->ExtAddress64.Granularity = InitializerOp->Asl.Value.Integer; RsCreateQwordField (InitializerOp, ACPI_RESTAG_GRANULARITY, CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.Granularity)); GranOp = InitializerOp; break; case 7: /* Min Address */ Descriptor->ExtAddress64.Minimum = InitializerOp->Asl.Value.Integer; RsCreateQwordField (InitializerOp, ACPI_RESTAG_MINADDR, CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.Minimum)); MinOp = InitializerOp; break; case 8: /* Max Address */ Descriptor->ExtAddress64.Maximum = InitializerOp->Asl.Value.Integer; RsCreateQwordField (InitializerOp, ACPI_RESTAG_MAXADDR, CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.Maximum)); MaxOp = InitializerOp; break; case 9: /* Translation Offset */ Descriptor->ExtAddress64.TranslationOffset = InitializerOp->Asl.Value.Integer; RsCreateQwordField (InitializerOp, ACPI_RESTAG_TRANSLATION, CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.TranslationOffset)); break; case 10: /* Address Length */ Descriptor->ExtAddress64.AddressLength = InitializerOp->Asl.Value.Integer; RsCreateQwordField (InitializerOp, ACPI_RESTAG_LENGTH, CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.AddressLength)); LengthOp = InitializerOp; break; case 11: /* Type-Specific Attributes */ Descriptor->ExtAddress64.TypeSpecific = InitializerOp->Asl.Value.Integer; RsCreateQwordField (InitializerOp, ACPI_RESTAG_TYPESPECIFICATTRIBUTES, CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.TypeSpecific)); break; case 12: /* ResourceTag */ UtAttachNamepathToOwner (Op, InitializerOp); break; case 13: /* Address Range */ RsSetFlagBits (&Descriptor->ExtAddress64.SpecificFlags, InitializerOp, 3, 0); RsCreateMultiBitField (InitializerOp, ACPI_RESTAG_MEMATTRIBUTES, CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.SpecificFlags), 3, 2); break; case 14: /* Type */ RsSetFlagBits (&Descriptor->ExtAddress64.SpecificFlags, InitializerOp, 5, 0); RsCreateBitField (InitializerOp, ACPI_RESTAG_TYPE, CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.SpecificFlags), 5); break; default: AslError (ASL_ERROR, ASL_MSG_RESOURCE_LIST, InitializerOp, NULL); break; } InitializerOp = RsCompleteNodeAndGetNext (InitializerOp); } /* Validate the Min/Max/Len/Gran values */ RsLargeAddressCheck ( Descriptor->ExtAddress64.Minimum, Descriptor->ExtAddress64.Maximum, Descriptor->ExtAddress64.AddressLength, Descriptor->ExtAddress64.Granularity, Descriptor->ExtAddress64.Flags, MinOp, MaxOp, LengthOp, GranOp, Op); Rnode->BufferLength = sizeof (AML_RESOURCE_EXTENDED_ADDRESS64) + StringLength; return (Rnode); } /******************************************************************************* * * FUNCTION: RsDoExtendedSpaceDescriptor * * PARAMETERS: Op - Parent resource descriptor parse node * CurrentByteOffset - Offset into the resource template AML * buffer (to track references to the desc) * * RETURN: Completed resource node * * DESCRIPTION: Construct a long "ExtendedSpace" descriptor * ******************************************************************************/ ASL_RESOURCE_NODE * RsDoExtendedSpaceDescriptor ( ACPI_PARSE_OBJECT *Op, UINT32 CurrentByteOffset) { AML_RESOURCE *Descriptor; ACPI_PARSE_OBJECT *InitializerOp; ACPI_PARSE_OBJECT *MinOp = NULL; ACPI_PARSE_OBJECT *MaxOp = NULL; ACPI_PARSE_OBJECT *LengthOp = NULL; ACPI_PARSE_OBJECT *GranOp = NULL; ASL_RESOURCE_NODE *Rnode; UINT16 StringLength = 0; UINT32 i; InitializerOp = Op->Asl.Child; StringLength = RsGetStringDataLength (InitializerOp); Rnode = RsAllocateResourceNode ( sizeof (AML_RESOURCE_EXTENDED_ADDRESS64) + 1 + StringLength); Descriptor = Rnode->Buffer; Descriptor->ExtAddress64.DescriptorType = ACPI_RESOURCE_NAME_EXTENDED_ADDRESS64; Descriptor->ExtAddress64.RevisionID = AML_RESOURCE_EXTENDED_ADDRESS_REVISION; Descriptor->ExtAddress64.ResourceLength = (UINT16) (sizeof (AML_RESOURCE_EXTENDED_ADDRESS64) - sizeof (AML_RESOURCE_LARGE_HEADER)); /* Process all child initialization nodes */ for (i = 0; InitializerOp; i++) { switch (i) { case 0: /* Resource Type */ Descriptor->ExtAddress64.ResourceType = (UINT8) InitializerOp->Asl.Value.Integer; break; case 1: /* Resource Usage */ RsSetFlagBits (&Descriptor->ExtAddress64.Flags, InitializerOp, 0, 1); break; case 2: /* DecodeType */ RsSetFlagBits (&Descriptor->ExtAddress64.Flags, InitializerOp, 1, 0); RsCreateBitField (InitializerOp, ACPI_RESTAG_DECODE, CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.Flags), 1); break; case 3: /* MinType */ RsSetFlagBits (&Descriptor->ExtAddress64.Flags, InitializerOp, 2, 0); RsCreateBitField (InitializerOp, ACPI_RESTAG_MINTYPE, CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.Flags), 2); break; case 4: /* MaxType */ RsSetFlagBits (&Descriptor->ExtAddress64.Flags, InitializerOp, 3, 0); RsCreateBitField (InitializerOp, ACPI_RESTAG_MAXTYPE, CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.Flags), 3); break; case 5: /* Type-Specific flags */ Descriptor->ExtAddress64.SpecificFlags = (UINT8) InitializerOp->Asl.Value.Integer; break; case 6: /* Address Granularity */ Descriptor->ExtAddress64.Granularity = InitializerOp->Asl.Value.Integer; RsCreateQwordField (InitializerOp, ACPI_RESTAG_GRANULARITY, CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.Granularity)); GranOp = InitializerOp; break; case 7: /* Min Address */ Descriptor->ExtAddress64.Minimum = InitializerOp->Asl.Value.Integer; RsCreateQwordField (InitializerOp, ACPI_RESTAG_MINADDR, CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.Minimum)); MinOp = InitializerOp; break; case 8: /* Max Address */ Descriptor->ExtAddress64.Maximum = InitializerOp->Asl.Value.Integer; RsCreateQwordField (InitializerOp, ACPI_RESTAG_MAXADDR, CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.Maximum)); MaxOp = InitializerOp; break; case 9: /* Translation Offset */ Descriptor->ExtAddress64.TranslationOffset = InitializerOp->Asl.Value.Integer; RsCreateQwordField (InitializerOp, ACPI_RESTAG_TRANSLATION, CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.TranslationOffset)); break; case 10: /* Address Length */ Descriptor->ExtAddress64.AddressLength = InitializerOp->Asl.Value.Integer; RsCreateQwordField (InitializerOp, ACPI_RESTAG_LENGTH, CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.AddressLength)); LengthOp = InitializerOp; break; case 11: /* Type-Specific Attributes */ Descriptor->ExtAddress64.TypeSpecific = InitializerOp->Asl.Value.Integer; RsCreateQwordField (InitializerOp, ACPI_RESTAG_TYPESPECIFICATTRIBUTES, CurrentByteOffset + ASL_RESDESC_OFFSET (ExtAddress64.TypeSpecific)); break; case 12: /* ResourceTag */ UtAttachNamepathToOwner (Op, InitializerOp); break; default: AslError (ASL_ERROR, ASL_MSG_RESOURCE_LIST, InitializerOp, NULL); break; } InitializerOp = RsCompleteNodeAndGetNext (InitializerOp); } /* Validate the Min/Max/Len/Gran values */ RsLargeAddressCheck ( Descriptor->ExtAddress64.Minimum, Descriptor->ExtAddress64.Maximum, Descriptor->ExtAddress64.AddressLength, Descriptor->ExtAddress64.Granularity, Descriptor->ExtAddress64.Flags, MinOp, MaxOp, LengthOp, GranOp, Op); Rnode->BufferLength = sizeof (AML_RESOURCE_EXTENDED_ADDRESS64) + StringLength; return (Rnode); } src/acpica/source/compiler/aslrestype2q.c000066400000000000000000000721221231470457100210110ustar00rootroot00000000000000/****************************************************************************** * * Module Name: aslrestype2q - Large QWord address resource descriptors * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #include "aslcompiler.h" #include "aslcompiler.y.h" #define _COMPONENT ACPI_COMPILER ACPI_MODULE_NAME ("aslrestype2q") /* * This module contains the QWord (64-bit) address space descriptors: * * QWordIO * QWordMemory * QWordSpace */ /******************************************************************************* * * FUNCTION: RsDoQwordIoDescriptor * * PARAMETERS: Op - Parent resource descriptor parse node * CurrentByteOffset - Offset into the resource template AML * buffer (to track references to the desc) * * RETURN: Completed resource node * * DESCRIPTION: Construct a long "QwordIO" descriptor * ******************************************************************************/ ASL_RESOURCE_NODE * RsDoQwordIoDescriptor ( ACPI_PARSE_OBJECT *Op, UINT32 CurrentByteOffset) { AML_RESOURCE *Descriptor; ACPI_PARSE_OBJECT *InitializerOp; ACPI_PARSE_OBJECT *MinOp = NULL; ACPI_PARSE_OBJECT *MaxOp = NULL; ACPI_PARSE_OBJECT *LengthOp = NULL; ACPI_PARSE_OBJECT *GranOp = NULL; ASL_RESOURCE_NODE *Rnode; UINT8 *OptionalFields; UINT16 StringLength = 0; UINT32 OptionIndex = 0; UINT32 i; BOOLEAN ResSourceIndex = FALSE; InitializerOp = Op->Asl.Child; StringLength = RsGetStringDataLength (InitializerOp); Rnode = RsAllocateResourceNode ( sizeof (AML_RESOURCE_ADDRESS64) + 1 + StringLength); Descriptor = Rnode->Buffer; Descriptor->Address64.DescriptorType = ACPI_RESOURCE_NAME_ADDRESS64; Descriptor->Address64.ResourceType = ACPI_ADDRESS_TYPE_IO_RANGE; /* * Initial descriptor length -- may be enlarged if there are * optional fields present */ OptionalFields = ((UINT8 *) Descriptor) + sizeof (AML_RESOURCE_ADDRESS64); Descriptor->Address64.ResourceLength = (UINT16) (sizeof (AML_RESOURCE_ADDRESS64) - sizeof (AML_RESOURCE_LARGE_HEADER)); /* Process all child initialization nodes */ for (i = 0; InitializerOp; i++) { switch (i) { case 0: /* Resource Usage */ RsSetFlagBits (&Descriptor->Address64.Flags, InitializerOp, 0, 1); break; case 1: /* MinType */ RsSetFlagBits (&Descriptor->Address64.Flags, InitializerOp, 2, 0); RsCreateBitField (InitializerOp, ACPI_RESTAG_MINTYPE, CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.Flags), 2); break; case 2: /* MaxType */ RsSetFlagBits (&Descriptor->Address64.Flags, InitializerOp, 3, 0); RsCreateBitField (InitializerOp, ACPI_RESTAG_MAXTYPE, CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.Flags), 3); break; case 3: /* DecodeType */ RsSetFlagBits (&Descriptor->Address64.Flags, InitializerOp, 1, 0); RsCreateBitField (InitializerOp, ACPI_RESTAG_DECODE, CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.Flags), 1); break; case 4: /* Range Type */ RsSetFlagBits (&Descriptor->Address64.SpecificFlags, InitializerOp, 0, 3); RsCreateMultiBitField (InitializerOp, ACPI_RESTAG_RANGETYPE, CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.SpecificFlags), 0, 2); break; case 5: /* Address Granularity */ Descriptor->Address64.Granularity = InitializerOp->Asl.Value.Integer; RsCreateQwordField (InitializerOp, ACPI_RESTAG_GRANULARITY, CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.Granularity)); GranOp = InitializerOp; break; case 6: /* Address Min */ Descriptor->Address64.Minimum = InitializerOp->Asl.Value.Integer; RsCreateQwordField (InitializerOp, ACPI_RESTAG_MINADDR, CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.Minimum)); MinOp = InitializerOp; break; case 7: /* Address Max */ Descriptor->Address64.Maximum = InitializerOp->Asl.Value.Integer; RsCreateQwordField (InitializerOp, ACPI_RESTAG_MAXADDR, CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.Maximum)); MaxOp = InitializerOp; break; case 8: /* Translation Offset */ Descriptor->Address64.TranslationOffset = InitializerOp->Asl.Value.Integer; RsCreateByteField (InitializerOp, ACPI_RESTAG_TRANSLATION, CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.TranslationOffset)); break; case 9: /* Address Length */ Descriptor->Address64.AddressLength = InitializerOp->Asl.Value.Integer; RsCreateQwordField (InitializerOp, ACPI_RESTAG_LENGTH, CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.AddressLength)); LengthOp = InitializerOp; break; case 10: /* ResSourceIndex [Optional Field - BYTE] */ if (InitializerOp->Asl.ParseOpcode != PARSEOP_DEFAULT_ARG) { OptionalFields[0] = (UINT8) InitializerOp->Asl.Value.Integer; OptionIndex++; Descriptor->Address64.ResourceLength++; ResSourceIndex = TRUE; } break; case 11: /* ResSource [Optional Field - STRING] */ if ((InitializerOp->Asl.ParseOpcode != PARSEOP_DEFAULT_ARG) && (InitializerOp->Asl.Value.String)) { if (StringLength) { Descriptor->Address64.ResourceLength = (UINT16) (Descriptor->Address64.ResourceLength + StringLength); strcpy ((char *) &OptionalFields[OptionIndex], InitializerOp->Asl.Value.String); /* ResourceSourceIndex must also be valid */ if (!ResSourceIndex) { AslError (ASL_ERROR, ASL_MSG_RESOURCE_INDEX, InitializerOp, NULL); } } } #if 0 /* * Not a valid ResourceSource, ResourceSourceIndex must also * be invalid */ else if (ResSourceIndex) { AslError (ASL_ERROR, ASL_MSG_RESOURCE_SOURCE, InitializerOp, NULL); } #endif break; case 12: /* ResourceTag */ UtAttachNamepathToOwner (Op, InitializerOp); break; case 13: /* Type */ RsSetFlagBits (&Descriptor->Address64.SpecificFlags, InitializerOp, 4, 0); RsCreateBitField (InitializerOp, ACPI_RESTAG_TYPE, CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.SpecificFlags), 4); break; case 14: /* Translation Type */ RsSetFlagBits (&Descriptor->Address64.SpecificFlags, InitializerOp, 5, 0); RsCreateBitField (InitializerOp, ACPI_RESTAG_TRANSTYPE, CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.SpecificFlags), 5); break; default: AslError (ASL_ERROR, ASL_MSG_RESOURCE_LIST, InitializerOp, NULL); break; } InitializerOp = RsCompleteNodeAndGetNext (InitializerOp); } /* Validate the Min/Max/Len/Gran values */ RsLargeAddressCheck ( Descriptor->Address64.Minimum, Descriptor->Address64.Maximum, Descriptor->Address64.AddressLength, Descriptor->Address64.Granularity, Descriptor->Address64.Flags, MinOp, MaxOp, LengthOp, GranOp, Op); Rnode->BufferLength = sizeof (AML_RESOURCE_ADDRESS64) + OptionIndex + StringLength; return (Rnode); } /******************************************************************************* * * FUNCTION: RsDoQwordMemoryDescriptor * * PARAMETERS: Op - Parent resource descriptor parse node * CurrentByteOffset - Offset into the resource template AML * buffer (to track references to the desc) * * RETURN: Completed resource node * * DESCRIPTION: Construct a long "QwordMemory" descriptor * ******************************************************************************/ ASL_RESOURCE_NODE * RsDoQwordMemoryDescriptor ( ACPI_PARSE_OBJECT *Op, UINT32 CurrentByteOffset) { AML_RESOURCE *Descriptor; ACPI_PARSE_OBJECT *InitializerOp; ACPI_PARSE_OBJECT *MinOp = NULL; ACPI_PARSE_OBJECT *MaxOp = NULL; ACPI_PARSE_OBJECT *LengthOp = NULL; ACPI_PARSE_OBJECT *GranOp = NULL; ASL_RESOURCE_NODE *Rnode; UINT8 *OptionalFields; UINT16 StringLength = 0; UINT32 OptionIndex = 0; UINT32 i; BOOLEAN ResSourceIndex = FALSE; InitializerOp = Op->Asl.Child; StringLength = RsGetStringDataLength (InitializerOp); Rnode = RsAllocateResourceNode ( sizeof (AML_RESOURCE_ADDRESS64) + 1 + StringLength); Descriptor = Rnode->Buffer; Descriptor->Address64.DescriptorType = ACPI_RESOURCE_NAME_ADDRESS64; Descriptor->Address64.ResourceType = ACPI_ADDRESS_TYPE_MEMORY_RANGE; /* * Initial descriptor length -- may be enlarged if there are * optional fields present */ OptionalFields = ((UINT8 *) Descriptor) + sizeof (AML_RESOURCE_ADDRESS64); Descriptor->Address64.ResourceLength = (UINT16) (sizeof (AML_RESOURCE_ADDRESS64) - sizeof (AML_RESOURCE_LARGE_HEADER)); /* Process all child initialization nodes */ for (i = 0; InitializerOp; i++) { switch (i) { case 0: /* Resource Usage */ RsSetFlagBits (&Descriptor->Address64.Flags, InitializerOp, 0, 1); break; case 1: /* DecodeType */ RsSetFlagBits (&Descriptor->Address64.Flags, InitializerOp, 1, 0); RsCreateBitField (InitializerOp, ACPI_RESTAG_DECODE, CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.Flags), 1); break; case 2: /* MinType */ RsSetFlagBits (&Descriptor->Address64.Flags, InitializerOp, 2, 0); RsCreateBitField (InitializerOp, ACPI_RESTAG_MINTYPE, CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.Flags), 2); break; case 3: /* MaxType */ RsSetFlagBits (&Descriptor->Address64.Flags, InitializerOp, 3, 0); RsCreateBitField (InitializerOp, ACPI_RESTAG_MAXTYPE, CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.Flags), 3); break; case 4: /* Memory Type */ RsSetFlagBits (&Descriptor->Address64.SpecificFlags, InitializerOp, 1, 0); RsCreateMultiBitField (InitializerOp, ACPI_RESTAG_MEMTYPE, CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.SpecificFlags), 1, 2); break; case 5: /* Read/Write Type */ RsSetFlagBits (&Descriptor->Address64.SpecificFlags, InitializerOp, 0, 1); RsCreateBitField (InitializerOp, ACPI_RESTAG_READWRITETYPE, CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.SpecificFlags), 0); break; case 6: /* Address Granularity */ Descriptor->Address64.Granularity = InitializerOp->Asl.Value.Integer; RsCreateQwordField (InitializerOp, ACPI_RESTAG_GRANULARITY, CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.Granularity)); GranOp = InitializerOp; break; case 7: /* Min Address */ Descriptor->Address64.Minimum = InitializerOp->Asl.Value.Integer; RsCreateQwordField (InitializerOp, ACPI_RESTAG_MINADDR, CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.Minimum)); MinOp = InitializerOp; break; case 8: /* Max Address */ Descriptor->Address64.Maximum = InitializerOp->Asl.Value.Integer; RsCreateQwordField (InitializerOp, ACPI_RESTAG_MAXADDR, CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.Maximum)); MaxOp = InitializerOp; break; case 9: /* Translation Offset */ Descriptor->Address64.TranslationOffset = InitializerOp->Asl.Value.Integer; RsCreateQwordField (InitializerOp, ACPI_RESTAG_TRANSLATION, CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.TranslationOffset)); break; case 10: /* Address Length */ Descriptor->Address64.AddressLength = InitializerOp->Asl.Value.Integer; RsCreateQwordField (InitializerOp, ACPI_RESTAG_LENGTH, CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.AddressLength)); LengthOp = InitializerOp; break; case 11: /* ResSourceIndex [Optional Field - BYTE] */ if (InitializerOp->Asl.ParseOpcode != PARSEOP_DEFAULT_ARG) { OptionalFields[0] = (UINT8) InitializerOp->Asl.Value.Integer; OptionIndex++; Descriptor->Address64.ResourceLength++; ResSourceIndex = TRUE; } break; case 12: /* ResSource [Optional Field - STRING] */ if ((InitializerOp->Asl.ParseOpcode != PARSEOP_DEFAULT_ARG) && (InitializerOp->Asl.Value.String)) { if (StringLength) { Descriptor->Address64.ResourceLength = (UINT16) (Descriptor->Address64.ResourceLength + StringLength); strcpy ((char *) &OptionalFields[OptionIndex], InitializerOp->Asl.Value.String); /* ResourceSourceIndex must also be valid */ if (!ResSourceIndex) { AslError (ASL_ERROR, ASL_MSG_RESOURCE_INDEX, InitializerOp, NULL); } } } #if 0 /* * Not a valid ResourceSource, ResourceSourceIndex must also * be invalid */ else if (ResSourceIndex) { AslError (ASL_ERROR, ASL_MSG_RESOURCE_SOURCE, InitializerOp, NULL); } #endif break; case 13: /* ResourceTag */ UtAttachNamepathToOwner (Op, InitializerOp); break; case 14: /* Address Range */ RsSetFlagBits (&Descriptor->Address64.SpecificFlags, InitializerOp, 3, 0); RsCreateMultiBitField (InitializerOp, ACPI_RESTAG_MEMATTRIBUTES, CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.SpecificFlags), 3, 2); break; case 15: /* Type */ RsSetFlagBits (&Descriptor->Address64.SpecificFlags, InitializerOp, 5, 0); RsCreateBitField (InitializerOp, ACPI_RESTAG_TYPE, CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.SpecificFlags), 5); break; default: AslError (ASL_ERROR, ASL_MSG_RESOURCE_LIST, InitializerOp, NULL); break; } InitializerOp = RsCompleteNodeAndGetNext (InitializerOp); } /* Validate the Min/Max/Len/Gran values */ RsLargeAddressCheck ( Descriptor->Address64.Minimum, Descriptor->Address64.Maximum, Descriptor->Address64.AddressLength, Descriptor->Address64.Granularity, Descriptor->Address64.Flags, MinOp, MaxOp, LengthOp, GranOp, Op); Rnode->BufferLength = sizeof (AML_RESOURCE_ADDRESS64) + OptionIndex + StringLength; return (Rnode); } /******************************************************************************* * * FUNCTION: RsDoQwordSpaceDescriptor * * PARAMETERS: Op - Parent resource descriptor parse node * CurrentByteOffset - Offset into the resource template AML * buffer (to track references to the desc) * * RETURN: Completed resource node * * DESCRIPTION: Construct a long "QwordSpace" descriptor * ******************************************************************************/ ASL_RESOURCE_NODE * RsDoQwordSpaceDescriptor ( ACPI_PARSE_OBJECT *Op, UINT32 CurrentByteOffset) { AML_RESOURCE *Descriptor; ACPI_PARSE_OBJECT *InitializerOp; ACPI_PARSE_OBJECT *MinOp = NULL; ACPI_PARSE_OBJECT *MaxOp = NULL; ACPI_PARSE_OBJECT *LengthOp = NULL; ACPI_PARSE_OBJECT *GranOp = NULL; ASL_RESOURCE_NODE *Rnode; UINT8 *OptionalFields; UINT16 StringLength = 0; UINT32 OptionIndex = 0; UINT32 i; BOOLEAN ResSourceIndex = FALSE; InitializerOp = Op->Asl.Child; StringLength = RsGetStringDataLength (InitializerOp); Rnode = RsAllocateResourceNode ( sizeof (AML_RESOURCE_ADDRESS64) + 1 + StringLength); Descriptor = Rnode->Buffer; Descriptor->Address64.DescriptorType = ACPI_RESOURCE_NAME_ADDRESS64; /* * Initial descriptor length -- may be enlarged if there are * optional fields present */ OptionalFields = ((UINT8 *) Descriptor) + sizeof (AML_RESOURCE_ADDRESS64); Descriptor->Address64.ResourceLength = (UINT16) (sizeof (AML_RESOURCE_ADDRESS64) - sizeof (AML_RESOURCE_LARGE_HEADER)); /* Process all child initialization nodes */ for (i = 0; InitializerOp; i++) { switch (i) { case 0: /* Resource Type */ Descriptor->Address64.ResourceType = (UINT8) InitializerOp->Asl.Value.Integer; break; case 1: /* Resource Usage */ RsSetFlagBits (&Descriptor->Address64.Flags, InitializerOp, 0, 1); break; case 2: /* DecodeType */ RsSetFlagBits (&Descriptor->Address64.Flags, InitializerOp, 1, 0); RsCreateBitField (InitializerOp, ACPI_RESTAG_DECODE, CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.Flags), 1); break; case 3: /* MinType */ RsSetFlagBits (&Descriptor->Address64.Flags, InitializerOp, 2, 0); RsCreateBitField (InitializerOp, ACPI_RESTAG_MINTYPE, CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.Flags), 2); break; case 4: /* MaxType */ RsSetFlagBits (&Descriptor->Address64.Flags, InitializerOp, 3, 0); RsCreateBitField (InitializerOp, ACPI_RESTAG_MAXTYPE, CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.Flags), 3); break; case 5: /* Type-Specific flags */ Descriptor->Address64.SpecificFlags = (UINT8) InitializerOp->Asl.Value.Integer; break; case 6: /* Address Granularity */ Descriptor->Address64.Granularity = InitializerOp->Asl.Value.Integer; RsCreateQwordField (InitializerOp, ACPI_RESTAG_GRANULARITY, CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.Granularity)); GranOp = InitializerOp; break; case 7: /* Min Address */ Descriptor->Address64.Minimum = InitializerOp->Asl.Value.Integer; RsCreateQwordField (InitializerOp, ACPI_RESTAG_MINADDR, CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.Minimum)); MinOp = InitializerOp; break; case 8: /* Max Address */ Descriptor->Address64.Maximum = InitializerOp->Asl.Value.Integer; RsCreateQwordField (InitializerOp, ACPI_RESTAG_MAXADDR, CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.Maximum)); MaxOp = InitializerOp; break; case 9: /* Translation Offset */ Descriptor->Address64.TranslationOffset = InitializerOp->Asl.Value.Integer; RsCreateQwordField (InitializerOp, ACPI_RESTAG_TRANSLATION, CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.TranslationOffset)); break; case 10: /* Address Length */ Descriptor->Address64.AddressLength = InitializerOp->Asl.Value.Integer; RsCreateQwordField (InitializerOp, ACPI_RESTAG_LENGTH, CurrentByteOffset + ASL_RESDESC_OFFSET (Address64.AddressLength)); LengthOp = InitializerOp; break; case 11: /* ResSourceIndex [Optional Field - BYTE] */ if (InitializerOp->Asl.ParseOpcode != PARSEOP_DEFAULT_ARG) { OptionalFields[0] = (UINT8) InitializerOp->Asl.Value.Integer; OptionIndex++; Descriptor->Address64.ResourceLength++; ResSourceIndex = TRUE; } break; case 12: /* ResSource [Optional Field - STRING] */ if ((InitializerOp->Asl.ParseOpcode != PARSEOP_DEFAULT_ARG) && (InitializerOp->Asl.Value.String)) { if (StringLength) { Descriptor->Address64.ResourceLength = (UINT16) (Descriptor->Address64.ResourceLength + StringLength); strcpy ((char *) &OptionalFields[OptionIndex], InitializerOp->Asl.Value.String); /* ResourceSourceIndex must also be valid */ if (!ResSourceIndex) { AslError (ASL_ERROR, ASL_MSG_RESOURCE_INDEX, InitializerOp, NULL); } } } #if 0 /* * Not a valid ResourceSource, ResourceSourceIndex must also * be invalid */ else if (ResSourceIndex) { AslError (ASL_ERROR, ASL_MSG_RESOURCE_SOURCE, InitializerOp, NULL); } #endif break; case 13: /* ResourceTag */ UtAttachNamepathToOwner (Op, InitializerOp); break; default: AslError (ASL_ERROR, ASL_MSG_RESOURCE_LIST, InitializerOp, NULL); break; } InitializerOp = RsCompleteNodeAndGetNext (InitializerOp); } /* Validate the Min/Max/Len/Gran values */ RsLargeAddressCheck ( Descriptor->Address64.Minimum, Descriptor->Address64.Maximum, Descriptor->Address64.AddressLength, Descriptor->Address64.Granularity, Descriptor->Address64.Flags, MinOp, MaxOp, LengthOp, GranOp, Op); Rnode->BufferLength = sizeof (AML_RESOURCE_ADDRESS64) + OptionIndex + StringLength; return (Rnode); } src/acpica/source/compiler/aslrestype2s.c000066400000000000000000001323251231470457100210150ustar00rootroot00000000000000/****************************************************************************** * * Module Name: aslrestype2s - Serial Large resource descriptors * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #include "aslcompiler.h" #include "aslcompiler.y.h" #include "amlcode.h" #define _COMPONENT ACPI_COMPILER ACPI_MODULE_NAME ("aslrestype2s") static UINT16 RsGetBufferDataLength ( ACPI_PARSE_OBJECT *InitializerOp); static UINT16 RsGetInterruptDataLength ( ACPI_PARSE_OBJECT *InitializerOp); static BOOLEAN RsGetVendorData ( ACPI_PARSE_OBJECT *InitializerOp, UINT8 *VendorData, ACPI_SIZE DescriptorOffset); /* * This module contains descriptors for serial buses and GPIO: * * GpioInt * GpioIo * I2cSerialBus * SpiSerialBus * UartSerialBus */ /******************************************************************************* * * FUNCTION: RsGetBufferDataLength * * PARAMETERS: InitializerOp - Current parse op, start of the resource * descriptor * * RETURN: Length of the data buffer * * DESCRIPTION: Get the length of a RawDataBuffer, used for vendor data. * ******************************************************************************/ static UINT16 RsGetBufferDataLength ( ACPI_PARSE_OBJECT *InitializerOp) { UINT16 ExtraDataSize = 0; ACPI_PARSE_OBJECT *DataList; /* Find the byte-initializer list */ while (InitializerOp) { if (InitializerOp->Asl.ParseOpcode == PARSEOP_DATABUFFER) { /* First child is the optional length (ignore it here) */ DataList = InitializerOp->Asl.Child; DataList = ASL_GET_PEER_NODE (DataList); /* Count the data items (each one is a byte of data) */ while (DataList) { ExtraDataSize++; DataList = ASL_GET_PEER_NODE (DataList); } return (ExtraDataSize); } InitializerOp = ASL_GET_PEER_NODE (InitializerOp); } return (ExtraDataSize); } /******************************************************************************* * * FUNCTION: RsGetInterruptDataLength * * PARAMETERS: InitializerOp - Current parse op, start of the resource * descriptor * * RETURN: Length of the interrupt data list * * DESCRIPTION: Get the length of a list of interrupt DWORDs for the GPIO * descriptors. * ******************************************************************************/ static UINT16 RsGetInterruptDataLength ( ACPI_PARSE_OBJECT *InitializerOp) { UINT16 InterruptLength; UINT32 i; /* Count the interrupt numbers */ InterruptLength = 0; for (i = 0; InitializerOp; i++) { InitializerOp = ASL_GET_PEER_NODE (InitializerOp); /* Interrupt list starts at offset 10 (Gpio descriptors) */ if (i >= 10) { InterruptLength += 2; } } return (InterruptLength); } /******************************************************************************* * * FUNCTION: RsGetVendorData * * PARAMETERS: InitializerOp - Current parse op, start of the resource * descriptor. * VendorData - Where the vendor data is returned * DescriptorOffset - Where vendor data begins in descriptor * * RETURN: TRUE if valid vendor data was returned, FALSE otherwise. * * DESCRIPTION: Extract the vendor data and construct a vendor data buffer. * ******************************************************************************/ static BOOLEAN RsGetVendorData ( ACPI_PARSE_OBJECT *InitializerOp, UINT8 *VendorData, ACPI_SIZE DescriptorOffset) { ACPI_PARSE_OBJECT *BufferOp; UINT32 SpecifiedLength = ACPI_UINT32_MAX; UINT16 ActualLength = 0; /* Vendor Data field is always optional */ if (InitializerOp->Asl.ParseOpcode == PARSEOP_DEFAULT_ARG) { return (FALSE); } BufferOp = InitializerOp->Asl.Child; if (!BufferOp) { AslError (ASL_ERROR, ASL_MSG_SYNTAX, InitializerOp, ""); return (FALSE); } /* First child is the optional buffer length (WORD) */ if (BufferOp->Asl.ParseOpcode != PARSEOP_DEFAULT_ARG) { SpecifiedLength = (UINT16) BufferOp->Asl.Value.Integer; } /* Insert field tag _VEN */ RsCreateByteField (InitializerOp, ACPI_RESTAG_VENDORDATA, (UINT16) DescriptorOffset); /* Walk the list of buffer initializers (each is one byte) */ BufferOp = RsCompleteNodeAndGetNext (BufferOp); if (BufferOp->Asl.ParseOpcode != PARSEOP_DEFAULT_ARG) { while (BufferOp) { *VendorData = (UINT8) BufferOp->Asl.Value.Integer; VendorData++; ActualLength++; BufferOp = RsCompleteNodeAndGetNext (BufferOp); } } /* Length validation. Buffer cannot be of zero length */ if ((SpecifiedLength == 0) || ((SpecifiedLength == ACPI_UINT32_MAX) && (ActualLength == 0))) { AslError (ASL_ERROR, ASL_MSG_BUFFER_LENGTH, InitializerOp, NULL); return (FALSE); } if (SpecifiedLength != ACPI_UINT32_MAX) { /* ActualLength > SpecifiedLength -> error */ if (ActualLength > SpecifiedLength) { AslError (ASL_ERROR, ASL_MSG_LIST_LENGTH_LONG, InitializerOp, NULL); return (FALSE); } /* ActualLength < SpecifiedLength -> remark */ else if (ActualLength < SpecifiedLength) { AslError (ASL_REMARK, ASL_MSG_LIST_LENGTH_SHORT, InitializerOp, NULL); return (FALSE); } } return (TRUE); } /******************************************************************************* * * FUNCTION: RsDoGpioIntDescriptor * * PARAMETERS: Op - Parent resource descriptor parse node * CurrentByteOffset - Offset into the resource template AML * buffer (to track references to the desc) * * RETURN: Completed resource node * * DESCRIPTION: Construct a long "GpioInt" descriptor * ******************************************************************************/ ASL_RESOURCE_NODE * RsDoGpioIntDescriptor ( ACPI_PARSE_OBJECT *Op, UINT32 CurrentByteOffset) { AML_RESOURCE *Descriptor; ACPI_PARSE_OBJECT *InitializerOp; ASL_RESOURCE_NODE *Rnode; char *ResourceSource = NULL; UINT8 *VendorData = NULL; UINT16 *InterruptList = NULL; UINT16 ResSourceLength; UINT16 VendorLength; UINT16 InterruptLength; UINT16 DescriptorSize; UINT32 i; InitializerOp = Op->Asl.Child; /* * Calculate lengths for fields that have variable length: * 1) Resource Source string * 2) Vendor Data buffer * 3) PIN (interrupt) list */ ResSourceLength = RsGetStringDataLength (InitializerOp); VendorLength = RsGetBufferDataLength (InitializerOp); InterruptLength = RsGetInterruptDataLength (InitializerOp); DescriptorSize = ACPI_AML_SIZE_LARGE (AML_RESOURCE_GPIO) + ResSourceLength + VendorLength + InterruptLength; /* Allocate the local resource node and initialize */ Rnode = RsAllocateResourceNode (DescriptorSize + sizeof (AML_RESOURCE_LARGE_HEADER)); Descriptor = Rnode->Buffer; Descriptor->Gpio.ResourceLength = DescriptorSize; Descriptor->Gpio.DescriptorType = ACPI_RESOURCE_NAME_GPIO; Descriptor->Gpio.RevisionId = AML_RESOURCE_GPIO_REVISION; Descriptor->Gpio.ConnectionType = AML_RESOURCE_GPIO_TYPE_INT; /* Build pointers to optional areas */ InterruptList = ACPI_ADD_PTR (UINT16, Descriptor, sizeof (AML_RESOURCE_GPIO)); ResourceSource = ACPI_ADD_PTR (char, InterruptList, InterruptLength); VendorData = ACPI_ADD_PTR (UINT8, ResourceSource, ResSourceLength); /* Setup offsets within the descriptor */ Descriptor->Gpio.PinTableOffset = (UINT16) ACPI_PTR_DIFF (InterruptList, Descriptor); Descriptor->Gpio.ResSourceOffset = (UINT16) ACPI_PTR_DIFF (ResourceSource, Descriptor); DbgPrint (ASL_DEBUG_OUTPUT, "%16s - Actual: %.2X, Base: %.2X, ResLen: %.2X, VendLen: %.2X, IntLen: %.2X\n", "GpioInt", Descriptor->Gpio.ResourceLength, (UINT16) sizeof (AML_RESOURCE_GPIO), ResSourceLength, VendorLength, InterruptLength); /* Process all child initialization nodes */ for (i = 0; InitializerOp; i++) { switch (i) { case 0: /* Interrupt Mode - edge/level [Flag] (_MOD) */ RsSetFlagBits16 (&Descriptor->Gpio.IntFlags, InitializerOp, 0, 0); RsCreateBitField (InitializerOp, ACPI_RESTAG_MODE, CurrentByteOffset + ASL_RESDESC_OFFSET (Gpio.IntFlags), 0); break; case 1: /* Interrupt Polarity - Active high/low [Flags] (_POL) */ RsSetFlagBits16 (&Descriptor->Gpio.IntFlags, InitializerOp, 1, 0); RsCreateMultiBitField (InitializerOp, ACPI_RESTAG_POLARITY, CurrentByteOffset + ASL_RESDESC_OFFSET (Gpio.IntFlags), 1, 2); break; case 2: /* Share Type - Default: exclusive (0) [Flags] (_SHR) */ RsSetFlagBits16 (&Descriptor->Gpio.IntFlags, InitializerOp, 3, 0); RsCreateMultiBitField (InitializerOp, ACPI_RESTAG_INTERRUPTSHARE, CurrentByteOffset + ASL_RESDESC_OFFSET (Gpio.IntFlags), 3, 2); break; case 3: /* Pin Config [BYTE] (_PPI) */ Descriptor->Gpio.PinConfig = (UINT8) InitializerOp->Asl.Value.Integer; RsCreateByteField (InitializerOp, ACPI_RESTAG_PINCONFIG, CurrentByteOffset + ASL_RESDESC_OFFSET (Gpio.PinConfig)); break; case 4: /* Debounce Timeout [WORD] (_DBT) */ Descriptor->Gpio.DebounceTimeout = (UINT16) InitializerOp->Asl.Value.Integer; RsCreateWordField (InitializerOp, ACPI_RESTAG_DEBOUNCETIME, CurrentByteOffset + ASL_RESDESC_OFFSET (Gpio.DebounceTimeout)); break; case 5: /* ResSource [Optional Field - STRING] */ if (ResSourceLength) { /* Copy string to the descriptor */ strcpy (ResourceSource, InitializerOp->Asl.Value.String); } break; case 6: /* Resource Index */ if (InitializerOp->Asl.ParseOpcode != PARSEOP_DEFAULT_ARG) { Descriptor->Gpio.ResSourceIndex = (UINT8) InitializerOp->Asl.Value.Integer; } break; case 7: /* Resource Usage (consumer/producer) */ RsSetFlagBits16 (&Descriptor->Gpio.Flags, InitializerOp, 0, 1); break; case 8: /* Resource Tag (Descriptor Name) */ UtAttachNamepathToOwner (Op, InitializerOp); break; case 9: /* Vendor Data (Optional - Buffer of BYTEs) (_VEN) */ /* * Always set the VendorOffset even if there is no Vendor Data. * This field is required in order to calculate the length * of the ResourceSource at runtime. */ Descriptor->Gpio.VendorOffset = (UINT16) ACPI_PTR_DIFF (VendorData, Descriptor); if (RsGetVendorData (InitializerOp, VendorData, (CurrentByteOffset + Descriptor->Gpio.VendorOffset))) { Descriptor->Gpio.VendorLength = VendorLength; } break; default: /* * PINs come through here, repeatedly. Each PIN must be a DWORD. * NOTE: there is no "length" field for this, so from ACPI spec: * The number of pins in the table can be calculated from: * PinCount = (Resource Source Name Offset - Pin Table Offset) / 2 * (implies resource source must immediately follow the pin list.) * Name: _PIN */ *InterruptList = (UINT16) InitializerOp->Asl.Value.Integer; InterruptList++; /* Case 10: First interrupt number in list */ if (i == 10) { if (InitializerOp->Asl.ParseOpcode == PARSEOP_DEFAULT_ARG) { /* Must be at least one interrupt */ AslError (ASL_ERROR, ASL_MSG_EX_INTERRUPT_LIST_MIN, InitializerOp, NULL); } /* Check now for duplicates in list */ RsCheckListForDuplicates (InitializerOp); /* Create a named field at the start of the list */ RsCreateDwordField (InitializerOp, ACPI_RESTAG_PIN, CurrentByteOffset + Descriptor->Gpio.PinTableOffset); } break; } InitializerOp = RsCompleteNodeAndGetNext (InitializerOp); } return (Rnode); } /******************************************************************************* * * FUNCTION: RsDoGpioIoDescriptor * * PARAMETERS: Op - Parent resource descriptor parse node * CurrentByteOffset - Offset into the resource template AML * buffer (to track references to the desc) * * RETURN: Completed resource node * * DESCRIPTION: Construct a long "GpioIo" descriptor * ******************************************************************************/ ASL_RESOURCE_NODE * RsDoGpioIoDescriptor ( ACPI_PARSE_OBJECT *Op, UINT32 CurrentByteOffset) { AML_RESOURCE *Descriptor; ACPI_PARSE_OBJECT *InitializerOp; ASL_RESOURCE_NODE *Rnode; char *ResourceSource = NULL; UINT8 *VendorData = NULL; UINT16 *InterruptList = NULL; UINT16 ResSourceLength; UINT16 VendorLength; UINT16 InterruptLength; UINT16 DescriptorSize; UINT32 i; InitializerOp = Op->Asl.Child; /* * Calculate lengths for fields that have variable length: * 1) Resource Source string * 2) Vendor Data buffer * 3) PIN (interrupt) list */ ResSourceLength = RsGetStringDataLength (InitializerOp); VendorLength = RsGetBufferDataLength (InitializerOp); InterruptLength = RsGetInterruptDataLength (InitializerOp); DescriptorSize = ACPI_AML_SIZE_LARGE (AML_RESOURCE_GPIO) + ResSourceLength + VendorLength + InterruptLength; /* Allocate the local resource node and initialize */ Rnode = RsAllocateResourceNode (DescriptorSize + sizeof (AML_RESOURCE_LARGE_HEADER)); Descriptor = Rnode->Buffer; Descriptor->Gpio.ResourceLength = DescriptorSize; Descriptor->Gpio.DescriptorType = ACPI_RESOURCE_NAME_GPIO; Descriptor->Gpio.RevisionId = AML_RESOURCE_GPIO_REVISION; Descriptor->Gpio.ConnectionType = AML_RESOURCE_GPIO_TYPE_IO; /* Build pointers to optional areas */ InterruptList = ACPI_ADD_PTR (UINT16, Descriptor, sizeof (AML_RESOURCE_GPIO)); ResourceSource = ACPI_ADD_PTR (char, InterruptList, InterruptLength); VendorData = ACPI_ADD_PTR (UINT8, ResourceSource, ResSourceLength); /* Setup offsets within the descriptor */ Descriptor->Gpio.PinTableOffset = (UINT16) ACPI_PTR_DIFF (InterruptList, Descriptor); Descriptor->Gpio.ResSourceOffset = (UINT16) ACPI_PTR_DIFF (ResourceSource, Descriptor); DbgPrint (ASL_DEBUG_OUTPUT, "%16s - Actual: %.2X, Base: %.2X, ResLen: %.2X, VendLen: %.2X, IntLen: %.2X\n", "GpioIo", Descriptor->Gpio.ResourceLength, (UINT16) sizeof (AML_RESOURCE_GPIO), ResSourceLength, VendorLength, InterruptLength); /* Process all child initialization nodes */ for (i = 0; InitializerOp; i++) { switch (i) { case 0: /* Share Type [Flags] (_SHR) */ RsSetFlagBits16 (&Descriptor->Gpio.IntFlags, InitializerOp, 3, 0); RsCreateBitField (InitializerOp, ACPI_RESTAG_INTERRUPTSHARE, CurrentByteOffset + ASL_RESDESC_OFFSET (Gpio.IntFlags), 3); break; case 1: /* Pin Config [BYTE] (_PPI) */ Descriptor->Gpio.PinConfig = (UINT8) InitializerOp->Asl.Value.Integer; RsCreateByteField (InitializerOp, ACPI_RESTAG_PINCONFIG, CurrentByteOffset + ASL_RESDESC_OFFSET (Gpio.PinConfig)); break; case 2: /* Debounce Timeout [WORD] (_DBT) */ Descriptor->Gpio.DebounceTimeout = (UINT16) InitializerOp->Asl.Value.Integer; RsCreateWordField (InitializerOp, ACPI_RESTAG_DEBOUNCETIME, CurrentByteOffset + ASL_RESDESC_OFFSET (Gpio.DebounceTimeout)); break; case 3: /* Drive Strength [WORD] (_DRS) */ Descriptor->Gpio.DriveStrength = (UINT16) InitializerOp->Asl.Value.Integer; RsCreateWordField (InitializerOp, ACPI_RESTAG_DRIVESTRENGTH, CurrentByteOffset + ASL_RESDESC_OFFSET (Gpio.DriveStrength)); break; case 4: /* I/O Restriction [Flag] (_IOR) */ RsSetFlagBits16 (&Descriptor->Gpio.IntFlags, InitializerOp, 0, 0); RsCreateMultiBitField (InitializerOp, ACPI_RESTAG_IORESTRICTION, CurrentByteOffset + ASL_RESDESC_OFFSET (Gpio.IntFlags), 0, 2); break; case 5: /* ResSource [Optional Field - STRING] */ if (ResSourceLength) { /* Copy string to the descriptor */ strcpy (ResourceSource, InitializerOp->Asl.Value.String); } break; case 6: /* Resource Index */ if (InitializerOp->Asl.ParseOpcode != PARSEOP_DEFAULT_ARG) { Descriptor->Gpio.ResSourceIndex = (UINT8) InitializerOp->Asl.Value.Integer; } break; case 7: /* Resource Usage (consumer/producer) */ RsSetFlagBits16 (&Descriptor->Gpio.Flags, InitializerOp, 0, 1); break; case 8: /* Resource Tag (Descriptor Name) */ UtAttachNamepathToOwner (Op, InitializerOp); break; case 9: /* Vendor Data (Optional - Buffer of BYTEs) (_VEN) */ /* * Always set the VendorOffset even if there is no Vendor Data. * This field is required in order to calculate the length * of the ResourceSource at runtime. */ Descriptor->Gpio.VendorOffset = (UINT16) ACPI_PTR_DIFF (VendorData, Descriptor); if (RsGetVendorData (InitializerOp, VendorData, (CurrentByteOffset + Descriptor->Gpio.VendorOffset))) { Descriptor->Gpio.VendorLength = VendorLength; } break; default: /* * PINs come through here, repeatedly. Each PIN must be a DWORD. * NOTE: there is no "length" field for this, so from ACPI spec: * The number of pins in the table can be calculated from: * PinCount = (Resource Source Name Offset - Pin Table Offset) / 2 * (implies resource source must immediately follow the pin list.) * Name: _PIN */ *InterruptList = (UINT16) InitializerOp->Asl.Value.Integer; InterruptList++; /* Case 10: First interrupt number in list */ if (i == 10) { if (InitializerOp->Asl.ParseOpcode == PARSEOP_DEFAULT_ARG) { /* Must be at least one interrupt */ AslError (ASL_ERROR, ASL_MSG_EX_INTERRUPT_LIST_MIN, InitializerOp, NULL); } /* Check now for duplicates in list */ RsCheckListForDuplicates (InitializerOp); /* Create a named field at the start of the list */ RsCreateDwordField (InitializerOp, ACPI_RESTAG_PIN, CurrentByteOffset + Descriptor->Gpio.PinTableOffset); } break; } InitializerOp = RsCompleteNodeAndGetNext (InitializerOp); } return (Rnode); } /******************************************************************************* * * FUNCTION: RsDoI2cSerialBusDescriptor * * PARAMETERS: Op - Parent resource descriptor parse node * CurrentByteOffset - Offset into the resource template AML * buffer (to track references to the desc) * * RETURN: Completed resource node * * DESCRIPTION: Construct a long "I2cSerialBus" descriptor * ******************************************************************************/ ASL_RESOURCE_NODE * RsDoI2cSerialBusDescriptor ( ACPI_PARSE_OBJECT *Op, UINT32 CurrentByteOffset) { AML_RESOURCE *Descriptor; ACPI_PARSE_OBJECT *InitializerOp; ASL_RESOURCE_NODE *Rnode; char *ResourceSource = NULL; UINT8 *VendorData = NULL; UINT16 ResSourceLength; UINT16 VendorLength; UINT16 DescriptorSize; UINT32 i; InitializerOp = Op->Asl.Child; /* * Calculate lengths for fields that have variable length: * 1) Resource Source string * 2) Vendor Data buffer */ ResSourceLength = RsGetStringDataLength (InitializerOp); VendorLength = RsGetBufferDataLength (InitializerOp); DescriptorSize = ACPI_AML_SIZE_LARGE (AML_RESOURCE_I2C_SERIALBUS) + ResSourceLength + VendorLength; /* Allocate the local resource node and initialize */ Rnode = RsAllocateResourceNode (DescriptorSize + sizeof (AML_RESOURCE_LARGE_HEADER)); Descriptor = Rnode->Buffer; Descriptor->I2cSerialBus.ResourceLength = DescriptorSize; Descriptor->I2cSerialBus.DescriptorType = ACPI_RESOURCE_NAME_SERIAL_BUS; Descriptor->I2cSerialBus.RevisionId = AML_RESOURCE_I2C_REVISION; Descriptor->I2cSerialBus.TypeRevisionId = AML_RESOURCE_I2C_TYPE_REVISION; Descriptor->I2cSerialBus.Type = AML_RESOURCE_I2C_SERIALBUSTYPE; Descriptor->I2cSerialBus.TypeDataLength = AML_RESOURCE_I2C_MIN_DATA_LEN + VendorLength; /* Build pointers to optional areas */ VendorData = ACPI_ADD_PTR (UINT8, Descriptor, sizeof (AML_RESOURCE_I2C_SERIALBUS)); ResourceSource = ACPI_ADD_PTR (char, VendorData, VendorLength); DbgPrint (ASL_DEBUG_OUTPUT, "%16s - Actual: %.2X, Base: %.2X, ResLen: %.2X, VendLen: %.2X, TypLen: %.2X\n", "I2cSerialBus", Descriptor->I2cSerialBus.ResourceLength, (UINT16) sizeof (AML_RESOURCE_I2C_SERIALBUS), ResSourceLength, VendorLength, Descriptor->I2cSerialBus.TypeDataLength); /* Process all child initialization nodes */ for (i = 0; InitializerOp; i++) { switch (i) { case 0: /* Slave Address [WORD] (_ADR) */ Descriptor->I2cSerialBus.SlaveAddress = (UINT16) InitializerOp->Asl.Value.Integer; RsCreateWordField (InitializerOp, ACPI_RESTAG_ADDRESS, CurrentByteOffset + ASL_RESDESC_OFFSET (I2cSerialBus.SlaveAddress)); break; case 1: /* Slave Mode [Flag] (_SLV) */ RsSetFlagBits (&Descriptor->I2cSerialBus.Flags, InitializerOp, 0, 0); RsCreateBitField (InitializerOp, ACPI_RESTAG_SLAVEMODE, CurrentByteOffset + ASL_RESDESC_OFFSET (I2cSerialBus.Flags), 0); break; case 2: /* Connection Speed [DWORD] (_SPE) */ Descriptor->I2cSerialBus.ConnectionSpeed = (UINT32) InitializerOp->Asl.Value.Integer; RsCreateDwordField (InitializerOp, ACPI_RESTAG_SPEED, CurrentByteOffset + ASL_RESDESC_OFFSET (I2cSerialBus.ConnectionSpeed)); break; case 3: /* Addressing Mode [Flag] (_MOD) */ RsSetFlagBits16 (&Descriptor->I2cSerialBus.TypeSpecificFlags, InitializerOp, 0, 0); RsCreateBitField (InitializerOp, ACPI_RESTAG_MODE, CurrentByteOffset + ASL_RESDESC_OFFSET (I2cSerialBus.TypeSpecificFlags), 0); break; case 4: /* ResSource [Optional Field - STRING] */ if (ResSourceLength) { /* Copy string to the descriptor */ strcpy (ResourceSource, InitializerOp->Asl.Value.String); } break; case 5: /* Resource Index */ if (InitializerOp->Asl.ParseOpcode != PARSEOP_DEFAULT_ARG) { Descriptor->I2cSerialBus.ResSourceIndex = (UINT8) InitializerOp->Asl.Value.Integer; } break; case 6: /* Resource Usage (consumer/producer) */ RsSetFlagBits (&Descriptor->I2cSerialBus.Flags, InitializerOp, 1, 1); break; case 7: /* Resource Tag (Descriptor Name) */ UtAttachNamepathToOwner (Op, InitializerOp); break; case 8: /* Vendor Data (Optional - Buffer of BYTEs) (_VEN) */ RsGetVendorData (InitializerOp, VendorData, CurrentByteOffset + sizeof (AML_RESOURCE_I2C_SERIALBUS)); break; default: /* Ignore any extra nodes */ break; } InitializerOp = RsCompleteNodeAndGetNext (InitializerOp); } return (Rnode); } /******************************************************************************* * * FUNCTION: RsDoSpiSerialBusDescriptor * * PARAMETERS: Op - Parent resource descriptor parse node * CurrentByteOffset - Offset into the resource template AML * buffer (to track references to the desc) * * RETURN: Completed resource node * * DESCRIPTION: Construct a long "SPI Serial Bus" descriptor * ******************************************************************************/ ASL_RESOURCE_NODE * RsDoSpiSerialBusDescriptor ( ACPI_PARSE_OBJECT *Op, UINT32 CurrentByteOffset) { AML_RESOURCE *Descriptor; ACPI_PARSE_OBJECT *InitializerOp; ASL_RESOURCE_NODE *Rnode; char *ResourceSource = NULL; UINT8 *VendorData = NULL; UINT16 ResSourceLength; UINT16 VendorLength; UINT16 DescriptorSize; UINT32 i; InitializerOp = Op->Asl.Child; /* * Calculate lengths for fields that have variable length: * 1) Resource Source string * 2) Vendor Data buffer */ ResSourceLength = RsGetStringDataLength (InitializerOp); VendorLength = RsGetBufferDataLength (InitializerOp); DescriptorSize = ACPI_AML_SIZE_LARGE (AML_RESOURCE_SPI_SERIALBUS) + ResSourceLength + VendorLength; /* Allocate the local resource node and initialize */ Rnode = RsAllocateResourceNode (DescriptorSize + sizeof (AML_RESOURCE_LARGE_HEADER)); Descriptor = Rnode->Buffer; Descriptor->SpiSerialBus.ResourceLength = DescriptorSize; Descriptor->SpiSerialBus.DescriptorType = ACPI_RESOURCE_NAME_SERIAL_BUS; Descriptor->SpiSerialBus.RevisionId = AML_RESOURCE_SPI_REVISION; Descriptor->SpiSerialBus.TypeRevisionId = AML_RESOURCE_SPI_TYPE_REVISION; Descriptor->SpiSerialBus.Type = AML_RESOURCE_SPI_SERIALBUSTYPE; Descriptor->SpiSerialBus.TypeDataLength = AML_RESOURCE_SPI_MIN_DATA_LEN + VendorLength; /* Build pointers to optional areas */ VendorData = ACPI_ADD_PTR (UINT8, Descriptor, sizeof (AML_RESOURCE_SPI_SERIALBUS)); ResourceSource = ACPI_ADD_PTR (char, VendorData, VendorLength); DbgPrint (ASL_DEBUG_OUTPUT, "%16s - Actual: %.2X, Base: %.2X, ResLen: %.2X, VendLen: %.2X, TypLen: %.2X\n", "SpiSerialBus", Descriptor->SpiSerialBus.ResourceLength, (UINT16) sizeof (AML_RESOURCE_SPI_SERIALBUS), ResSourceLength, VendorLength, Descriptor->SpiSerialBus.TypeDataLength); /* Process all child initialization nodes */ for (i = 0; InitializerOp; i++) { switch (i) { case 0: /* Device Selection [WORD] (_ADR) */ Descriptor->SpiSerialBus.DeviceSelection = (UINT16) InitializerOp->Asl.Value.Integer; RsCreateWordField (InitializerOp, ACPI_RESTAG_ADDRESS, CurrentByteOffset + ASL_RESDESC_OFFSET (SpiSerialBus.DeviceSelection)); break; case 1: /* Device Polarity [Flag] (_DPL) */ RsSetFlagBits16 (&Descriptor->SpiSerialBus.TypeSpecificFlags, InitializerOp, 1, 0); RsCreateBitField (InitializerOp, ACPI_RESTAG_DEVICEPOLARITY, CurrentByteOffset + ASL_RESDESC_OFFSET (SpiSerialBus.TypeSpecificFlags), 1); break; case 2: /* Wire Mode [Flag] (_MOD) */ RsSetFlagBits16 (&Descriptor->SpiSerialBus.TypeSpecificFlags, InitializerOp, 0, 0); RsCreateBitField (InitializerOp, ACPI_RESTAG_MODE, CurrentByteOffset + ASL_RESDESC_OFFSET (SpiSerialBus.TypeSpecificFlags), 0); break; case 3: /* Device Bit Length [BYTE] (_LEN) */ Descriptor->SpiSerialBus.DataBitLength = (UINT8) InitializerOp->Asl.Value.Integer; RsCreateByteField (InitializerOp, ACPI_RESTAG_LENGTH, CurrentByteOffset + ASL_RESDESC_OFFSET (SpiSerialBus.DataBitLength)); break; case 4: /* Slave Mode [Flag] (_SLV) */ RsSetFlagBits (&Descriptor->SpiSerialBus.Flags, InitializerOp, 0, 0); RsCreateBitField (InitializerOp, ACPI_RESTAG_SLAVEMODE, CurrentByteOffset + ASL_RESDESC_OFFSET (SpiSerialBus.Flags), 0); break; case 5: /* Connection Speed [DWORD] (_SPE) */ Descriptor->SpiSerialBus.ConnectionSpeed = (UINT32) InitializerOp->Asl.Value.Integer; RsCreateDwordField (InitializerOp, ACPI_RESTAG_SPEED, CurrentByteOffset + ASL_RESDESC_OFFSET (SpiSerialBus.ConnectionSpeed)); break; case 6: /* Clock Polarity [BYTE] (_POL) */ Descriptor->SpiSerialBus.ClockPolarity = (UINT8) InitializerOp->Asl.Value.Integer; RsCreateByteField (InitializerOp, ACPI_RESTAG_POLARITY, CurrentByteOffset + ASL_RESDESC_OFFSET (SpiSerialBus.ClockPolarity)); break; case 7: /* Clock Phase [BYTE] (_PHA) */ Descriptor->SpiSerialBus.ClockPhase = (UINT8) InitializerOp->Asl.Value.Integer; RsCreateByteField (InitializerOp, ACPI_RESTAG_PHASE, CurrentByteOffset + ASL_RESDESC_OFFSET (SpiSerialBus.ClockPhase)); break; case 8: /* ResSource [Optional Field - STRING] */ if (ResSourceLength) { /* Copy string to the descriptor */ strcpy (ResourceSource, InitializerOp->Asl.Value.String); } break; case 9: /* Resource Index */ if (InitializerOp->Asl.ParseOpcode != PARSEOP_DEFAULT_ARG) { Descriptor->SpiSerialBus.ResSourceIndex = (UINT8) InitializerOp->Asl.Value.Integer; } break; case 10: /* Resource Usage (consumer/producer) */ RsSetFlagBits (&Descriptor->SpiSerialBus.Flags, InitializerOp, 1, 1); break; case 11: /* Resource Tag (Descriptor Name) */ UtAttachNamepathToOwner (Op, InitializerOp); break; case 12: /* Vendor Data (Optional - Buffer of BYTEs) (_VEN) */ RsGetVendorData (InitializerOp, VendorData, CurrentByteOffset + sizeof (AML_RESOURCE_SPI_SERIALBUS)); break; default: /* Ignore any extra nodes */ break; } InitializerOp = RsCompleteNodeAndGetNext (InitializerOp); } return (Rnode); } /******************************************************************************* * * FUNCTION: RsDoUartSerialBusDescriptor * * PARAMETERS: Op - Parent resource descriptor parse node * CurrentByteOffset - Offset into the resource template AML * buffer (to track references to the desc) * * RETURN: Completed resource node * * DESCRIPTION: Construct a long "UART Serial Bus" descriptor * ******************************************************************************/ ASL_RESOURCE_NODE * RsDoUartSerialBusDescriptor ( ACPI_PARSE_OBJECT *Op, UINT32 CurrentByteOffset) { AML_RESOURCE *Descriptor; ACPI_PARSE_OBJECT *InitializerOp; ASL_RESOURCE_NODE *Rnode; char *ResourceSource = NULL; UINT8 *VendorData = NULL; UINT16 ResSourceLength; UINT16 VendorLength; UINT16 DescriptorSize; UINT32 i; InitializerOp = Op->Asl.Child; /* * Calculate lengths for fields that have variable length: * 1) Resource Source string * 2) Vendor Data buffer */ ResSourceLength = RsGetStringDataLength (InitializerOp); VendorLength = RsGetBufferDataLength (InitializerOp); DescriptorSize = ACPI_AML_SIZE_LARGE (AML_RESOURCE_UART_SERIALBUS) + ResSourceLength + VendorLength; /* Allocate the local resource node and initialize */ Rnode = RsAllocateResourceNode (DescriptorSize + sizeof (AML_RESOURCE_LARGE_HEADER)); Descriptor = Rnode->Buffer; Descriptor->UartSerialBus.ResourceLength = DescriptorSize; Descriptor->UartSerialBus.DescriptorType = ACPI_RESOURCE_NAME_SERIAL_BUS; Descriptor->UartSerialBus.RevisionId = AML_RESOURCE_UART_REVISION; Descriptor->UartSerialBus.TypeRevisionId = AML_RESOURCE_UART_TYPE_REVISION; Descriptor->UartSerialBus.Type = AML_RESOURCE_UART_SERIALBUSTYPE; Descriptor->UartSerialBus.TypeDataLength = AML_RESOURCE_UART_MIN_DATA_LEN + VendorLength; /* Build pointers to optional areas */ VendorData = ACPI_ADD_PTR (UINT8, Descriptor, sizeof (AML_RESOURCE_UART_SERIALBUS)); ResourceSource = ACPI_ADD_PTR (char, VendorData, VendorLength); DbgPrint (ASL_DEBUG_OUTPUT, "%16s - Actual: %.2X, Base: %.2X, ResLen: %.2X, VendLen: %.2X, TypLen: %.2X\n", "UartSerialBus", Descriptor->UartSerialBus.ResourceLength, (UINT16) sizeof (AML_RESOURCE_UART_SERIALBUS), ResSourceLength, VendorLength, Descriptor->UartSerialBus.TypeDataLength); /* Process all child initialization nodes */ for (i = 0; InitializerOp; i++) { switch (i) { case 0: /* Connection Speed (Baud Rate) [DWORD] (_SPE) */ Descriptor->UartSerialBus.DefaultBaudRate = (UINT32) InitializerOp->Asl.Value.Integer; RsCreateDwordField (InitializerOp, ACPI_RESTAG_SPEED, CurrentByteOffset + ASL_RESDESC_OFFSET (UartSerialBus.DefaultBaudRate)); break; case 1: /* Bits Per Byte [Flags] (_LEN) */ RsSetFlagBits16 (&Descriptor->UartSerialBus.TypeSpecificFlags, InitializerOp, 4, 3); RsCreateMultiBitField (InitializerOp, ACPI_RESTAG_LENGTH, CurrentByteOffset + ASL_RESDESC_OFFSET (UartSerialBus.TypeSpecificFlags), 4, 3); break; case 2: /* Stop Bits [Flags] (_STB) */ RsSetFlagBits16 (&Descriptor->UartSerialBus.TypeSpecificFlags, InitializerOp, 2, 1); RsCreateMultiBitField (InitializerOp, ACPI_RESTAG_STOPBITS, CurrentByteOffset + ASL_RESDESC_OFFSET (UartSerialBus.TypeSpecificFlags), 2, 2); break; case 3: /* Lines In Use [BYTE] (_LIN) */ Descriptor->UartSerialBus.LinesEnabled = (UINT8) InitializerOp->Asl.Value.Integer; RsCreateByteField (InitializerOp, ACPI_RESTAG_LINE, CurrentByteOffset + ASL_RESDESC_OFFSET (UartSerialBus.LinesEnabled)); break; case 4: /* Endianness [Flag] (_END) */ RsSetFlagBits16 (&Descriptor->UartSerialBus.TypeSpecificFlags, InitializerOp, 7, 0); RsCreateBitField (InitializerOp, ACPI_RESTAG_ENDIANNESS, CurrentByteOffset + ASL_RESDESC_OFFSET (UartSerialBus.TypeSpecificFlags), 7); break; case 5: /* Parity [BYTE] (_PAR) */ Descriptor->UartSerialBus.Parity = (UINT8) InitializerOp->Asl.Value.Integer; RsCreateByteField (InitializerOp, ACPI_RESTAG_PARITY, CurrentByteOffset + ASL_RESDESC_OFFSET (UartSerialBus.Parity)); break; case 6: /* Flow Control [Flags] (_FLC) */ RsSetFlagBits16 (&Descriptor->UartSerialBus.TypeSpecificFlags, InitializerOp, 0, 0); RsCreateMultiBitField (InitializerOp, ACPI_RESTAG_FLOWCONTROL, CurrentByteOffset + ASL_RESDESC_OFFSET (UartSerialBus.TypeSpecificFlags), 0, 2); break; case 7: /* Rx Buffer Size [WORD] (_RXL) */ Descriptor->UartSerialBus.RxFifoSize = (UINT16) InitializerOp->Asl.Value.Integer; RsCreateWordField (InitializerOp, ACPI_RESTAG_LENGTH_RX, CurrentByteOffset + ASL_RESDESC_OFFSET (UartSerialBus.RxFifoSize)); break; case 8: /* Tx Buffer Size [WORD] (_TXL) */ Descriptor->UartSerialBus.TxFifoSize = (UINT16) InitializerOp->Asl.Value.Integer; RsCreateWordField (InitializerOp, ACPI_RESTAG_LENGTH_TX, CurrentByteOffset + ASL_RESDESC_OFFSET (UartSerialBus.TxFifoSize)); break; case 9: /* ResSource [Optional Field - STRING] */ if (ResSourceLength) { /* Copy string to the descriptor */ strcpy (ResourceSource, InitializerOp->Asl.Value.String); } break; case 10: /* Resource Index */ if (InitializerOp->Asl.ParseOpcode != PARSEOP_DEFAULT_ARG) { Descriptor->UartSerialBus.ResSourceIndex = (UINT8) InitializerOp->Asl.Value.Integer; } break; case 11: /* Resource Usage (consumer/producer) */ RsSetFlagBits (&Descriptor->UartSerialBus.Flags, InitializerOp, 1, 1); /* * Slave Mode [Flag] (_SLV) * * Note: There is no SlaveMode argument to the UartSerialBus macro, but * we add this name anyway to allow the flag to be set by ASL in the * rare case where there is a slave mode associated with the UART. */ RsCreateBitField (InitializerOp, ACPI_RESTAG_SLAVEMODE, CurrentByteOffset + ASL_RESDESC_OFFSET (UartSerialBus.Flags), 0); break; case 12: /* Resource Tag (Descriptor Name) */ UtAttachNamepathToOwner (Op, InitializerOp); break; case 13: /* Vendor Data (Optional - Buffer of BYTEs) (_VEN) */ RsGetVendorData (InitializerOp, VendorData, CurrentByteOffset + sizeof (AML_RESOURCE_UART_SERIALBUS)); break; default: /* Ignore any extra nodes */ break; } InitializerOp = RsCompleteNodeAndGetNext (InitializerOp); } return (Rnode); } src/acpica/source/compiler/aslrestype2w.c000066400000000000000000000704441231470457100210240ustar00rootroot00000000000000/****************************************************************************** * * Module Name: aslrestype2w - Large Word address resource descriptors * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #include "aslcompiler.h" #include "aslcompiler.y.h" #define _COMPONENT ACPI_COMPILER ACPI_MODULE_NAME ("aslrestype2w") /* * This module contains the Word (16-bit) address space descriptors: * * WordIO * WordMemory * WordSpace */ /******************************************************************************* * * FUNCTION: RsDoWordIoDescriptor * * PARAMETERS: Op - Parent resource descriptor parse node * CurrentByteOffset - Offset into the resource template AML * buffer (to track references to the desc) * * RETURN: Completed resource node * * DESCRIPTION: Construct a long "WordIO" descriptor * ******************************************************************************/ ASL_RESOURCE_NODE * RsDoWordIoDescriptor ( ACPI_PARSE_OBJECT *Op, UINT32 CurrentByteOffset) { AML_RESOURCE *Descriptor; ACPI_PARSE_OBJECT *InitializerOp; ACPI_PARSE_OBJECT *MinOp = NULL; ACPI_PARSE_OBJECT *MaxOp = NULL; ACPI_PARSE_OBJECT *LengthOp = NULL; ACPI_PARSE_OBJECT *GranOp = NULL; ASL_RESOURCE_NODE *Rnode; UINT8 *OptionalFields; UINT16 StringLength = 0; UINT32 OptionIndex = 0; UINT32 i; BOOLEAN ResSourceIndex = FALSE; InitializerOp = Op->Asl.Child; StringLength = RsGetStringDataLength (InitializerOp); Rnode = RsAllocateResourceNode ( sizeof (AML_RESOURCE_ADDRESS16) + 1 + StringLength); Descriptor = Rnode->Buffer; Descriptor->Address16.DescriptorType = ACPI_RESOURCE_NAME_ADDRESS16; Descriptor->Address16.ResourceType = ACPI_ADDRESS_TYPE_IO_RANGE; /* * Initial descriptor length -- may be enlarged if there are * optional fields present */ OptionalFields = ((UINT8 *) Descriptor) + sizeof (AML_RESOURCE_ADDRESS16); Descriptor->Address16.ResourceLength = (UINT16) (sizeof (AML_RESOURCE_ADDRESS16) - sizeof (AML_RESOURCE_LARGE_HEADER)); /* Process all child initialization nodes */ for (i = 0; InitializerOp; i++) { switch (i) { case 0: /* Resource Usage */ RsSetFlagBits (&Descriptor->Address16.Flags, InitializerOp, 0, 1); break; case 1: /* MinType */ RsSetFlagBits (&Descriptor->Address16.Flags, InitializerOp, 2, 0); RsCreateBitField (InitializerOp, ACPI_RESTAG_MINTYPE, CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.Flags), 2); break; case 2: /* MaxType */ RsSetFlagBits (&Descriptor->Address16.Flags, InitializerOp, 3, 0); RsCreateBitField (InitializerOp, ACPI_RESTAG_MAXTYPE, CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.Flags), 3); break; case 3: /* DecodeType */ RsSetFlagBits (&Descriptor->Address16.Flags, InitializerOp, 1, 0); RsCreateBitField (InitializerOp, ACPI_RESTAG_DECODE, CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.Flags), 1); break; case 4: /* Range Type */ RsSetFlagBits (&Descriptor->Address16.SpecificFlags, InitializerOp, 0, 3); RsCreateMultiBitField (InitializerOp, ACPI_RESTAG_RANGETYPE, CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.SpecificFlags), 0, 2); break; case 5: /* Address Granularity */ Descriptor->Address16.Granularity = (UINT16) InitializerOp->Asl.Value.Integer; RsCreateWordField (InitializerOp, ACPI_RESTAG_GRANULARITY, CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.Granularity)); GranOp = InitializerOp; break; case 6: /* Address Min */ Descriptor->Address16.Minimum = (UINT16) InitializerOp->Asl.Value.Integer; RsCreateWordField (InitializerOp, ACPI_RESTAG_MINADDR, CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.Minimum)); MinOp = InitializerOp; break; case 7: /* Address Max */ Descriptor->Address16.Maximum = (UINT16) InitializerOp->Asl.Value.Integer; RsCreateWordField (InitializerOp, ACPI_RESTAG_MAXADDR, CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.Maximum)); MaxOp = InitializerOp; break; case 8: /* Translation Offset */ Descriptor->Address16.TranslationOffset = (UINT16) InitializerOp->Asl.Value.Integer; RsCreateWordField (InitializerOp, ACPI_RESTAG_TRANSLATION, CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.TranslationOffset)); break; case 9: /* Address Length */ Descriptor->Address16.AddressLength = (UINT16) InitializerOp->Asl.Value.Integer; RsCreateWordField (InitializerOp, ACPI_RESTAG_LENGTH, CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.AddressLength)); LengthOp = InitializerOp; break; case 10: /* ResSourceIndex [Optional Field - BYTE] */ if (InitializerOp->Asl.ParseOpcode != PARSEOP_DEFAULT_ARG) { OptionalFields[0] = (UINT8) InitializerOp->Asl.Value.Integer; OptionIndex++; Descriptor->Address16.ResourceLength++; ResSourceIndex = TRUE; } break; case 11: /* ResSource [Optional Field - STRING] */ if ((InitializerOp->Asl.ParseOpcode != PARSEOP_DEFAULT_ARG) && (InitializerOp->Asl.Value.String)) { if (StringLength) { Descriptor->Address16.ResourceLength = (UINT16) (Descriptor->Address16.ResourceLength + StringLength); strcpy ((char *) &OptionalFields[OptionIndex], InitializerOp->Asl.Value.String); /* ResourceSourceIndex must also be valid */ if (!ResSourceIndex) { AslError (ASL_ERROR, ASL_MSG_RESOURCE_INDEX, InitializerOp, NULL); } } } #if 0 /* * Not a valid ResourceSource, ResourceSourceIndex must also * be invalid */ else if (ResSourceIndex) { AslError (ASL_ERROR, ASL_MSG_RESOURCE_SOURCE, InitializerOp, NULL); } #endif break; case 12: /* ResourceTag */ UtAttachNamepathToOwner (Op, InitializerOp); break; case 13: /* Type */ RsSetFlagBits (&Descriptor->Address16.SpecificFlags, InitializerOp, 4, 0); RsCreateBitField (InitializerOp, ACPI_RESTAG_TYPE, CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.SpecificFlags), 4); break; case 14: /* Translation Type */ RsSetFlagBits (&Descriptor->Address16.SpecificFlags, InitializerOp, 5, 0); RsCreateBitField (InitializerOp, ACPI_RESTAG_TRANSTYPE, CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.SpecificFlags), 5); break; default: AslError (ASL_ERROR, ASL_MSG_RESOURCE_LIST, InitializerOp, NULL); break; } InitializerOp = RsCompleteNodeAndGetNext (InitializerOp); } /* Validate the Min/Max/Len/Gran values */ RsLargeAddressCheck ( (UINT64) Descriptor->Address16.Minimum, (UINT64) Descriptor->Address16.Maximum, (UINT64) Descriptor->Address16.AddressLength, (UINT64) Descriptor->Address16.Granularity, Descriptor->Address16.Flags, MinOp, MaxOp, LengthOp, GranOp, Op); Rnode->BufferLength = sizeof (AML_RESOURCE_ADDRESS16) + OptionIndex + StringLength; return (Rnode); } /******************************************************************************* * * FUNCTION: RsDoWordBusNumberDescriptor * * PARAMETERS: Op - Parent resource descriptor parse node * CurrentByteOffset - Offset into the resource template AML * buffer (to track references to the desc) * * RETURN: Completed resource node * * DESCRIPTION: Construct a long "WordBusNumber" descriptor * ******************************************************************************/ ASL_RESOURCE_NODE * RsDoWordBusNumberDescriptor ( ACPI_PARSE_OBJECT *Op, UINT32 CurrentByteOffset) { AML_RESOURCE *Descriptor; ACPI_PARSE_OBJECT *InitializerOp; ACPI_PARSE_OBJECT *MinOp = NULL; ACPI_PARSE_OBJECT *MaxOp = NULL; ACPI_PARSE_OBJECT *LengthOp = NULL; ACPI_PARSE_OBJECT *GranOp = NULL; ASL_RESOURCE_NODE *Rnode; UINT8 *OptionalFields; UINT16 StringLength = 0; UINT32 OptionIndex = 0; UINT32 i; BOOLEAN ResSourceIndex = FALSE; InitializerOp = Op->Asl.Child; StringLength = RsGetStringDataLength (InitializerOp); Rnode = RsAllocateResourceNode ( sizeof (AML_RESOURCE_ADDRESS16) + 1 + StringLength); Descriptor = Rnode->Buffer; Descriptor->Address16.DescriptorType = ACPI_RESOURCE_NAME_ADDRESS16; Descriptor->Address16.ResourceType = ACPI_ADDRESS_TYPE_BUS_NUMBER_RANGE; /* * Initial descriptor length -- may be enlarged if there are * optional fields present */ OptionalFields = ((UINT8 *) Descriptor) + sizeof (AML_RESOURCE_ADDRESS16); Descriptor->Address16.ResourceLength = (UINT16) (sizeof (AML_RESOURCE_ADDRESS16) - sizeof (AML_RESOURCE_LARGE_HEADER)); /* Process all child initialization nodes */ for (i = 0; InitializerOp; i++) { switch (i) { case 0: /* Resource Usage */ RsSetFlagBits (&Descriptor->Address16.Flags, InitializerOp, 0, 1); break; case 1: /* MinType */ RsSetFlagBits (&Descriptor->Address16.Flags, InitializerOp, 2, 0); RsCreateBitField (InitializerOp, ACPI_RESTAG_MINTYPE, CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.Flags), 2); break; case 2: /* MaxType */ RsSetFlagBits (&Descriptor->Address16.Flags, InitializerOp, 3, 0); RsCreateBitField (InitializerOp, ACPI_RESTAG_MAXTYPE, CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.Flags), 3); break; case 3: /* DecodeType */ RsSetFlagBits (&Descriptor->Address16.Flags, InitializerOp, 1, 0); RsCreateBitField (InitializerOp, ACPI_RESTAG_DECODE, CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.Flags), 1); break; case 4: /* Address Granularity */ Descriptor->Address16.Granularity = (UINT16) InitializerOp->Asl.Value.Integer; RsCreateWordField (InitializerOp, ACPI_RESTAG_GRANULARITY, CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.Granularity)); GranOp = InitializerOp; break; case 5: /* Min Address */ Descriptor->Address16.Minimum = (UINT16) InitializerOp->Asl.Value.Integer; RsCreateWordField (InitializerOp, ACPI_RESTAG_MINADDR, CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.Minimum)); MinOp = InitializerOp; break; case 6: /* Max Address */ Descriptor->Address16.Maximum = (UINT16) InitializerOp->Asl.Value.Integer; RsCreateWordField (InitializerOp, ACPI_RESTAG_MAXADDR, CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.Maximum)); MaxOp = InitializerOp; break; case 7: /* Translation Offset */ Descriptor->Address16.TranslationOffset = (UINT16) InitializerOp->Asl.Value.Integer; RsCreateWordField (InitializerOp, ACPI_RESTAG_TRANSLATION, CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.TranslationOffset)); break; case 8: /* Address Length */ Descriptor->Address16.AddressLength = (UINT16) InitializerOp->Asl.Value.Integer; RsCreateWordField (InitializerOp, ACPI_RESTAG_LENGTH, CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.AddressLength)); LengthOp = InitializerOp; break; case 9: /* ResSourceIndex [Optional Field - BYTE] */ if (InitializerOp->Asl.ParseOpcode != PARSEOP_DEFAULT_ARG) { OptionalFields[0] = (UINT8) InitializerOp->Asl.Value.Integer; OptionIndex++; Descriptor->Address16.ResourceLength++; ResSourceIndex = TRUE; } break; case 10: /* ResSource [Optional Field - STRING] */ if ((InitializerOp->Asl.ParseOpcode != PARSEOP_DEFAULT_ARG) && (InitializerOp->Asl.Value.String)) { if (StringLength) { Descriptor->Address16.ResourceLength = (UINT16) (Descriptor->Address16.ResourceLength + StringLength); strcpy ((char *) &OptionalFields[OptionIndex], InitializerOp->Asl.Value.String); /* ResourceSourceIndex must also be valid */ if (!ResSourceIndex) { AslError (ASL_ERROR, ASL_MSG_RESOURCE_INDEX, InitializerOp, NULL); } } } #if 0 /* * Not a valid ResourceSource, ResourceSourceIndex must also * be invalid */ else if (ResSourceIndex) { AslError (ASL_ERROR, ASL_MSG_RESOURCE_SOURCE, InitializerOp, NULL); } #endif break; case 11: /* ResourceTag */ UtAttachNamepathToOwner (Op, InitializerOp); break; default: AslError (ASL_ERROR, ASL_MSG_RESOURCE_LIST, InitializerOp, NULL); break; } InitializerOp = RsCompleteNodeAndGetNext (InitializerOp); } /* Validate the Min/Max/Len/Gran values */ RsLargeAddressCheck ( (UINT64) Descriptor->Address16.Minimum, (UINT64) Descriptor->Address16.Maximum, (UINT64) Descriptor->Address16.AddressLength, (UINT64) Descriptor->Address16.Granularity, Descriptor->Address16.Flags, MinOp, MaxOp, LengthOp, GranOp, Op); Rnode->BufferLength = sizeof (AML_RESOURCE_ADDRESS16) + OptionIndex + StringLength; return (Rnode); } /******************************************************************************* * * FUNCTION: RsDoWordSpaceDescriptor * * PARAMETERS: Op - Parent resource descriptor parse node * CurrentByteOffset - Offset into the resource template AML * buffer (to track references to the desc) * * RETURN: Completed resource node * * DESCRIPTION: Construct a long "WordSpace" descriptor * ******************************************************************************/ ASL_RESOURCE_NODE * RsDoWordSpaceDescriptor ( ACPI_PARSE_OBJECT *Op, UINT32 CurrentByteOffset) { AML_RESOURCE *Descriptor; ACPI_PARSE_OBJECT *InitializerOp; ACPI_PARSE_OBJECT *MinOp = NULL; ACPI_PARSE_OBJECT *MaxOp = NULL; ACPI_PARSE_OBJECT *LengthOp = NULL; ACPI_PARSE_OBJECT *GranOp = NULL; ASL_RESOURCE_NODE *Rnode; UINT8 *OptionalFields; UINT16 StringLength = 0; UINT32 OptionIndex = 0; UINT32 i; BOOLEAN ResSourceIndex = FALSE; InitializerOp = Op->Asl.Child; StringLength = RsGetStringDataLength (InitializerOp); Rnode = RsAllocateResourceNode ( sizeof (AML_RESOURCE_ADDRESS16) + 1 + StringLength); Descriptor = Rnode->Buffer; Descriptor->Address16.DescriptorType = ACPI_RESOURCE_NAME_ADDRESS16; /* * Initial descriptor length -- may be enlarged if there are * optional fields present */ OptionalFields = ((UINT8 *) Descriptor) + sizeof (AML_RESOURCE_ADDRESS16); Descriptor->Address16.ResourceLength = (UINT16) (sizeof (AML_RESOURCE_ADDRESS16) - sizeof (AML_RESOURCE_LARGE_HEADER)); /* Process all child initialization nodes */ for (i = 0; InitializerOp; i++) { switch (i) { case 0: /* Resource Type */ Descriptor->Address16.ResourceType = (UINT8) InitializerOp->Asl.Value.Integer; break; case 1: /* Resource Usage */ RsSetFlagBits (&Descriptor->Address16.Flags, InitializerOp, 0, 1); break; case 2: /* DecodeType */ RsSetFlagBits (&Descriptor->Address16.Flags, InitializerOp, 1, 0); RsCreateBitField (InitializerOp, ACPI_RESTAG_DECODE, CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.Flags), 1); break; case 3: /* MinType */ RsSetFlagBits (&Descriptor->Address16.Flags, InitializerOp, 2, 0); RsCreateBitField (InitializerOp, ACPI_RESTAG_MINTYPE, CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.Flags), 2); break; case 4: /* MaxType */ RsSetFlagBits (&Descriptor->Address16.Flags, InitializerOp, 3, 0); RsCreateBitField (InitializerOp, ACPI_RESTAG_MAXTYPE, CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.Flags), 3); break; case 5: /* Type-Specific flags */ Descriptor->Address16.SpecificFlags = (UINT8) InitializerOp->Asl.Value.Integer; break; case 6: /* Address Granularity */ Descriptor->Address16.Granularity = (UINT16) InitializerOp->Asl.Value.Integer; RsCreateWordField (InitializerOp, ACPI_RESTAG_GRANULARITY, CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.Granularity)); GranOp = InitializerOp; break; case 7: /* Min Address */ Descriptor->Address16.Minimum = (UINT16) InitializerOp->Asl.Value.Integer; RsCreateWordField (InitializerOp, ACPI_RESTAG_MINADDR, CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.Minimum)); MinOp = InitializerOp; break; case 8: /* Max Address */ Descriptor->Address16.Maximum = (UINT16) InitializerOp->Asl.Value.Integer; RsCreateWordField (InitializerOp, ACPI_RESTAG_MAXADDR, CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.Maximum)); MaxOp = InitializerOp; break; case 9: /* Translation Offset */ Descriptor->Address16.TranslationOffset = (UINT16) InitializerOp->Asl.Value.Integer; RsCreateWordField (InitializerOp, ACPI_RESTAG_TRANSLATION, CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.TranslationOffset)); break; case 10: /* Address Length */ Descriptor->Address16.AddressLength = (UINT16) InitializerOp->Asl.Value.Integer; RsCreateWordField (InitializerOp, ACPI_RESTAG_LENGTH, CurrentByteOffset + ASL_RESDESC_OFFSET (Address16.AddressLength)); LengthOp = InitializerOp; break; case 11: /* ResSourceIndex [Optional Field - BYTE] */ if (InitializerOp->Asl.ParseOpcode != PARSEOP_DEFAULT_ARG) { OptionalFields[0] = (UINT8) InitializerOp->Asl.Value.Integer; OptionIndex++; Descriptor->Address16.ResourceLength++; ResSourceIndex = TRUE; } break; case 12: /* ResSource [Optional Field - STRING] */ if ((InitializerOp->Asl.ParseOpcode != PARSEOP_DEFAULT_ARG) && (InitializerOp->Asl.Value.String)) { if (StringLength) { Descriptor->Address16.ResourceLength = (UINT16) (Descriptor->Address16.ResourceLength + StringLength); strcpy ((char *) &OptionalFields[OptionIndex], InitializerOp->Asl.Value.String); /* ResourceSourceIndex must also be valid */ if (!ResSourceIndex) { AslError (ASL_ERROR, ASL_MSG_RESOURCE_INDEX, InitializerOp, NULL); } } } #if 0 /* * Not a valid ResourceSource, ResourceSourceIndex must also * be invalid */ else if (ResSourceIndex) { AslError (ASL_ERROR, ASL_MSG_RESOURCE_SOURCE, InitializerOp, NULL); } #endif break; case 13: /* ResourceTag */ UtAttachNamepathToOwner (Op, InitializerOp); break; default: AslError (ASL_ERROR, ASL_MSG_RESOURCE_LIST, InitializerOp, NULL); break; } InitializerOp = RsCompleteNodeAndGetNext (InitializerOp); } /* Validate the Min/Max/Len/Gran values */ RsLargeAddressCheck ( (UINT64) Descriptor->Address16.Minimum, (UINT64) Descriptor->Address16.Maximum, (UINT64) Descriptor->Address16.AddressLength, (UINT64) Descriptor->Address16.Granularity, Descriptor->Address16.Flags, MinOp, MaxOp, LengthOp, GranOp, Op); Rnode->BufferLength = sizeof (AML_RESOURCE_ADDRESS16) + OptionIndex + StringLength; return (Rnode); } src/acpica/source/compiler/aslstartup.c000066400000000000000000000420221231470457100205510ustar00rootroot00000000000000/****************************************************************************** * * Module Name: aslstartup - Compiler startup routines, called from main * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #include "aslcompiler.h" #include "actables.h" #include "acdisasm.h" #include "acapps.h" #define _COMPONENT ACPI_COMPILER ACPI_MODULE_NAME ("aslstartup") /* Local prototypes */ static UINT8 AslDetectSourceFileType ( ASL_FILE_INFO *Info); static ACPI_STATUS AslDoDisassembly ( void); /* Globals */ static BOOLEAN AslToFile = TRUE; /******************************************************************************* * * FUNCTION: AslInitializeGlobals * * PARAMETERS: None * * RETURN: None * * DESCRIPTION: Re-initialize globals needed to restart the compiler. This * allows multiple files to be disassembled and/or compiled. * ******************************************************************************/ void AslInitializeGlobals ( void) { UINT32 i; /* Init compiler globals */ Gbl_CurrentColumn = 0; Gbl_CurrentLineNumber = 1; Gbl_LogicalLineNumber = 1; Gbl_CurrentLineOffset = 0; Gbl_InputFieldCount = 0; Gbl_InputByteCount = 0; Gbl_NsLookupCount = 0; Gbl_LineBufPtr = Gbl_CurrentLineBuffer; Gbl_ErrorLog = NULL; Gbl_NextError = NULL; Gbl_Signature = NULL; Gbl_FileType = 0; TotalExecutableOpcodes = 0; TotalNamedObjects = 0; TotalKeywords = 0; TotalParseNodes = 0; TotalMethods = 0; TotalAllocations = 0; TotalAllocated = 0; TotalFolds = 0; AslGbl_NextEvent = 0; for (i = 0; i < ASL_NUM_REPORT_LEVELS; i++) { Gbl_ExceptionCount[i] = 0; } for (i = ASL_FILE_INPUT; i <= ASL_MAX_FILE_TYPE; i++) { Gbl_Files[i].Handle = NULL; Gbl_Files[i].Filename = NULL; } } /******************************************************************************* * * FUNCTION: AslDetectSourceFileType * * PARAMETERS: Info - Name/Handle for the file (must be open) * * RETURN: File Type * * DESCRIPTION: Determine the type of the input file. Either binary (contains * non-ASCII characters), ASL file, or an ACPI Data Table file. * ******************************************************************************/ static UINT8 AslDetectSourceFileType ( ASL_FILE_INFO *Info) { char *FileChar; UINT8 Type; ACPI_STATUS Status; /* Check for a valid binary ACPI table */ Status = FlCheckForAcpiTable (Info->Handle); if (ACPI_SUCCESS (Status)) { Type = ASL_INPUT_TYPE_ACPI_TABLE; goto Cleanup; } /* Check for 100% ASCII source file (comments are ignored) */ Status = FlCheckForAscii (Info->Handle, Info->Filename, TRUE); if (ACPI_FAILURE (Status)) { printf ("Non-ascii input file - %s\n", Info->Filename); if (!Gbl_IgnoreErrors) { Type = ASL_INPUT_TYPE_BINARY; goto Cleanup; } } /* * File is ASCII. Determine if this is an ASL file or an ACPI data * table file. */ while (fgets (Gbl_CurrentLineBuffer, Gbl_LineBufferSize, Info->Handle)) { /* Uppercase the buffer for caseless compare */ FileChar = Gbl_CurrentLineBuffer; while (*FileChar) { *FileChar = (char) toupper ((int) *FileChar); FileChar++; } /* Presence of "DefinitionBlock" indicates actual ASL code */ if (strstr (Gbl_CurrentLineBuffer, "DEFINITIONBLOCK")) { /* Appears to be an ASL file */ Type = ASL_INPUT_TYPE_ASCII_ASL; goto Cleanup; } } /* Not an ASL source file, default to a data table source file */ Type = ASL_INPUT_TYPE_ASCII_DATA; Cleanup: /* Must seek back to the start of the file */ fseek (Info->Handle, 0, SEEK_SET); return (Type); } /******************************************************************************* * * FUNCTION: AslDoDisassembly * * PARAMETERS: None * * RETURN: Status * * DESCRIPTION: Initiate AML file disassembly. Uses ACPICA subsystem to build * namespace. * ******************************************************************************/ static ACPI_STATUS AslDoDisassembly ( void) { ACPI_STATUS Status; /* ACPICA subsystem initialization */ Status = AdInitialize (); if (ACPI_FAILURE (Status)) { return (Status); } Status = AcpiAllocateRootTable (4); if (ACPI_FAILURE (Status)) { AcpiOsPrintf ("Could not initialize ACPI Table Manager, %s\n", AcpiFormatException (Status)); return (Status); } /* This is where the disassembly happens */ AcpiGbl_DbOpt_disasm = TRUE; Status = AdAmlDisassemble (AslToFile, Gbl_Files[ASL_FILE_INPUT].Filename, Gbl_OutputFilenamePrefix, &Gbl_Files[ASL_FILE_INPUT].Filename); if (ACPI_FAILURE (Status)) { return (Status); } /* Check if any control methods were unresolved */ AcpiDmUnresolvedWarning (0); #if 0 /* TBD: Handle additional output files for disassembler */ Status = FlOpenMiscOutputFiles (Gbl_OutputFilenamePrefix); NsDisplayNamespace (); #endif /* Shutdown compiler and ACPICA subsystem */ AeClearErrorLog (); (void) AcpiTerminate (); /* * Gbl_Files[ASL_FILE_INPUT].Filename was replaced with the * .DSL disassembly file, which can now be compiled if requested */ if (Gbl_DoCompile) { AcpiOsPrintf ("\nCompiling \"%s\"\n", Gbl_Files[ASL_FILE_INPUT].Filename); return (AE_CTRL_CONTINUE); } ACPI_FREE (Gbl_Files[ASL_FILE_INPUT].Filename); Gbl_Files[ASL_FILE_INPUT].Filename = NULL; return (AE_OK); } /******************************************************************************* * * FUNCTION: AslDoOneFile * * PARAMETERS: Filename - Name of the file * * RETURN: Status * * DESCRIPTION: Process a single file - either disassemble, compile, or both * ******************************************************************************/ ACPI_STATUS AslDoOneFile ( char *Filename) { ACPI_STATUS Status; /* Re-initialize "some" compiler/preprocessor globals */ AslInitializeGlobals (); PrInitializeGlobals (); /* * Extract the directory path. This path is used for possible include * files and the optional AML filename embedded in the input file * DefinitionBlock declaration. */ Status = FlSplitInputPathname (Filename, &Gbl_DirectoryPath, NULL); if (ACPI_FAILURE (Status)) { return (Status); } Gbl_Files[ASL_FILE_INPUT].Filename = Filename; UtConvertBackslashes (Filename); /* * AML Disassembly (Optional) */ if (Gbl_DisasmFlag) { Status = AslDoDisassembly (); if (Status != AE_CTRL_CONTINUE) { return (Status); } } /* * Open the input file. Here, this should be an ASCII source file, * either an ASL file or a Data Table file */ Status = FlOpenInputFile (Gbl_Files[ASL_FILE_INPUT].Filename); if (ACPI_FAILURE (Status)) { AePrintErrorLog (ASL_FILE_STDERR); return (AE_ERROR); } /* Determine input file type */ Gbl_FileType = AslDetectSourceFileType (&Gbl_Files[ASL_FILE_INPUT]); if (Gbl_FileType == ASL_INPUT_TYPE_BINARY) { return (AE_ERROR); } /* * If -p not specified, we will use the input filename as the * output filename prefix */ if (Gbl_UseDefaultAmlFilename) { Gbl_OutputFilenamePrefix = Gbl_Files[ASL_FILE_INPUT].Filename; } /* Open the optional output files (listings, etc.) */ Status = FlOpenMiscOutputFiles (Gbl_OutputFilenamePrefix); if (ACPI_FAILURE (Status)) { AePrintErrorLog (ASL_FILE_STDERR); return (AE_ERROR); } /* * Compilation of ASL source versus DataTable source uses different * compiler subsystems */ switch (Gbl_FileType) { /* * Data Table Compilation */ case ASL_INPUT_TYPE_ASCII_DATA: Status = DtDoCompile (); if (ACPI_FAILURE (Status)) { return (Status); } if (Gbl_Signature) { ACPI_FREE (Gbl_Signature); Gbl_Signature = NULL; } /* Check if any errors occurred during compile */ Status = AslCheckForErrorExit (); if (ACPI_FAILURE (Status)) { return (Status); } /* Cleanup (for next source file) and exit */ AeClearErrorLog (); PrTerminatePreprocessor (); return (Status); /* * ASL Compilation */ case ASL_INPUT_TYPE_ASCII_ASL: /* ACPICA subsystem initialization */ Status = AdInitialize (); if (ACPI_FAILURE (Status)) { return (Status); } (void) CmDoCompile (); (void) AcpiTerminate (); /* Check if any errors occurred during compile */ Status = AslCheckForErrorExit (); if (ACPI_FAILURE (Status)) { return (Status); } /* Cleanup (for next source file) and exit */ AeClearErrorLog (); PrTerminatePreprocessor (); return (AE_OK); /* * Binary ACPI table was auto-detected, disassemble it */ case ASL_INPUT_TYPE_ACPI_TABLE: /* We have what appears to be an ACPI table, disassemble it */ FlCloseFile (ASL_FILE_INPUT); Gbl_DoCompile = FALSE; Gbl_DisasmFlag = TRUE; Status = AslDoDisassembly (); return (Status); /* Unknown binary table */ case ASL_INPUT_TYPE_BINARY: AePrintErrorLog (ASL_FILE_STDERR); return (AE_ERROR); default: printf ("Unknown file type %X\n", Gbl_FileType); return (AE_ERROR); } } /******************************************************************************* * * FUNCTION: AslCheckForErrorExit * * PARAMETERS: None. Examines global exception count array * * RETURN: Status * * DESCRIPTION: Determine if compiler should abort with error status * ******************************************************************************/ ACPI_STATUS AslCheckForErrorExit ( void) { /* * Return non-zero exit code if there have been errors, unless the * global ignore error flag has been set */ if (!Gbl_IgnoreErrors) { if (Gbl_ExceptionCount[ASL_ERROR] > 0) { return (AE_ERROR); } /* Optionally treat warnings as errors */ if (Gbl_WarningsAsErrors) { if ((Gbl_ExceptionCount[ASL_WARNING] > 0) || (Gbl_ExceptionCount[ASL_WARNING2] > 0) || (Gbl_ExceptionCount[ASL_WARNING3] > 0)) { return (AE_ERROR); } } } return (AE_OK); } src/acpica/source/compiler/aslstubs.c000066400000000000000000000235631231470457100202200ustar00rootroot00000000000000/****************************************************************************** * * Module Name: aslstubs - Stubs used to link to Aml interpreter * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #include "aslcompiler.h" #include "acdispat.h" #include "actables.h" #include "acevents.h" #include "acinterp.h" #include "acnamesp.h" #define _COMPONENT ACPI_COMPILER ACPI_MODULE_NAME ("aslstubs") /* * Stubs to simplify linkage to the ACPICA core subsystem. * Things like Events, Global Lock, etc. are not used * by the compiler, so they are stubbed out here. */ ACPI_PHYSICAL_ADDRESS AeLocalGetRootPointer ( void) { return (0); } void AcpiNsExecModuleCodeList ( void) { } ACPI_STATUS AcpiHwReadPort ( ACPI_IO_ADDRESS Address, UINT32 *Value, UINT32 Width) { return (AE_OK); } ACPI_STATUS AcpiHwWritePort ( ACPI_IO_ADDRESS Address, UINT32 Value, UINT32 Width) { return (AE_OK); } ACPI_STATUS AcpiDsMethodError ( ACPI_STATUS Status, ACPI_WALK_STATE *WalkState) { return (Status); } ACPI_STATUS AcpiDsMethodDataGetValue ( UINT8 Type, UINT32 Index, ACPI_WALK_STATE *WalkState, ACPI_OPERAND_OBJECT **DestDesc) { return (AE_OK); } ACPI_STATUS AcpiDsMethodDataGetNode ( UINT8 Type, UINT32 Index, ACPI_WALK_STATE *WalkState, ACPI_NAMESPACE_NODE **Node) { return (AE_OK); } ACPI_STATUS AcpiDsStoreObjectToLocal ( UINT8 Type, UINT32 Index, ACPI_OPERAND_OBJECT *SrcDesc, ACPI_WALK_STATE *WalkState) { return (AE_OK); } ACPI_STATUS AcpiEvQueueNotifyRequest ( ACPI_NAMESPACE_NODE *Node, UINT32 NotifyValue) { return (AE_OK); } BOOLEAN AcpiEvIsNotifyObject ( ACPI_NAMESPACE_NODE *Node) { return (FALSE); } #if (!ACPI_REDUCED_HARDWARE) ACPI_STATUS AcpiEvDeleteGpeBlock ( ACPI_GPE_BLOCK_INFO *GpeBlock) { return (AE_OK); } ACPI_STATUS AcpiEvAcquireGlobalLock ( UINT16 Timeout) { return (AE_OK); } ACPI_STATUS AcpiEvReleaseGlobalLock ( void) { return (AE_OK); } #endif /* !ACPI_REDUCED_HARDWARE */ ACPI_STATUS AcpiEvInitializeRegion ( ACPI_OPERAND_OBJECT *RegionObj, BOOLEAN AcpiNsLocked) { return (AE_OK); } void AcpiExDoDebugObject ( ACPI_OPERAND_OBJECT *SourceDesc, UINT32 Level, UINT32 Index) { return; } ACPI_STATUS AcpiExReadDataFromField ( ACPI_WALK_STATE *WalkState, ACPI_OPERAND_OBJECT *ObjDesc, ACPI_OPERAND_OBJECT **RetBufferDesc) { return (AE_SUPPORT); } ACPI_STATUS AcpiExWriteDataToField ( ACPI_OPERAND_OBJECT *SourceDesc, ACPI_OPERAND_OBJECT *ObjDesc, ACPI_OPERAND_OBJECT **ResultDesc) { return (AE_SUPPORT); } ACPI_STATUS AcpiExLoadTableOp ( ACPI_WALK_STATE *WalkState, ACPI_OPERAND_OBJECT **ReturnDesc) { return (AE_SUPPORT); } ACPI_STATUS AcpiExUnloadTable ( ACPI_OPERAND_OBJECT *DdbHandle) { return (AE_SUPPORT); } ACPI_STATUS AcpiExLoadOp ( ACPI_OPERAND_OBJECT *ObjDesc, ACPI_OPERAND_OBJECT *Target, ACPI_WALK_STATE *WalkState) { return (AE_SUPPORT); } ACPI_STATUS AcpiTbFindTable ( char *Signature, char *OemId, char *OemTableId, UINT32 *TableIndex) { return (AE_SUPPORT); } /* OSL interfaces */ ACPI_THREAD_ID AcpiOsGetThreadId ( void) { return (1); } ACPI_STATUS AcpiOsExecute ( ACPI_EXECUTE_TYPE Type, ACPI_OSD_EXEC_CALLBACK Function, void *Context) { return (AE_SUPPORT); } src/acpica/source/compiler/aslsupport.l000066400000000000000000000631321231470457100206010ustar00rootroot00000000000000/****************************************************************************** * * Module Name: aslsupport.l - Flex/lex scanner C support routines. * NOTE: Included into aslcompile.l, not compiled by itself. * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ /* Configuration */ #define ASL_SPACES_PER_TAB 4 #define ASL_NORMAL_CHAR 0 #define ASL_ESCAPE_SEQUENCE 1 #define ASL_OCTAL_CONSTANT 2 #define ASL_HEX_CONSTANT 3 /* File node - used for "Include" operator file stack */ typedef struct asl_file_node { FILE *File; UINT32 CurrentLineNumber; YY_BUFFER_STATE State; char *Filename; struct asl_file_node *Next; } ASL_FILE_NODE; /* File stack for the "Include" operator (NOT #include operator) */ ASL_FILE_NODE *Gbl_IncludeFileStack = NULL; /******************************************************************************* * * FUNCTION: AslDoLineDirective * * PARAMETERS: None. Uses input() to access current source code line * * RETURN: Updates global line number and filename * * DESCRIPTION: Handle #line directives emitted by the preprocessor. * * The #line directive is emitted by the preprocesser, and is used to * pass through line numbers from the original source code file to the * preprocessor output file (.i). This allows any compiler-generated * error messages to be displayed with the correct line number. * ******************************************************************************/ static void AslDoLineDirective ( void) { int c; char *Token; UINT32 LineNumber; char *Filename; UINT32 i; /* Eat the entire line that contains the #line directive */ Gbl_LineBufPtr = Gbl_CurrentLineBuffer; while ((c = input()) != '\n' && c != EOF) { *Gbl_LineBufPtr = c; Gbl_LineBufPtr++; } *Gbl_LineBufPtr = 0; /* First argument is the actual line number */ Token = strtok (Gbl_CurrentLineBuffer, " "); if (!Token) { goto ResetAndExit; } /* First argument is the line number */ LineNumber = (UINT32) UtDoConstant (Token); /* Emit the appropriate number of newlines */ Gbl_CurrentColumn = 0; if (LineNumber > Gbl_CurrentLineNumber) { for (i = 0; i < (LineNumber - Gbl_CurrentLineNumber); i++) { FlWriteFile (ASL_FILE_SOURCE_OUTPUT, "\n", 1); Gbl_CurrentColumn++; } } FlSetLineNumber (LineNumber); /* Second argument is the optional filename (in double quotes) */ Token = strtok (NULL, " \""); if (Token) { Filename = ACPI_ALLOCATE_ZEROED (strlen (Token) + 1); strcpy (Filename, Token); FlSetFilename (Filename); } /* Third argument is not supported at this time */ ResetAndExit: /* Reset globals for a new line */ Gbl_CurrentLineOffset += Gbl_CurrentColumn; Gbl_CurrentColumn = 0; Gbl_LineBufPtr = Gbl_CurrentLineBuffer; } /******************************************************************************* * * FUNCTION: AslPopInputFileStack * * PARAMETERS: None * * RETURN: 0 if a node was popped, -1 otherwise * * DESCRIPTION: Pop the top of the input file stack and point the parser to * the saved parse buffer contained in the fnode. Also, set the * global line counters to the saved values. This function is * called when an include file reaches EOF. * ******************************************************************************/ int AslPopInputFileStack ( void) { ASL_FILE_NODE *Fnode; Fnode = Gbl_IncludeFileStack; DbgPrint (ASL_PARSE_OUTPUT, "\nPop InputFile Stack, Fnode %p\n\n", Fnode); if (!Fnode) { return (-1); } /* Close the current include file */ fclose (yyin); /* Update the top-of-stack */ Gbl_IncludeFileStack = Fnode->Next; /* Reset global line counter and filename */ Gbl_Files[ASL_FILE_INPUT].Filename = Fnode->Filename; Gbl_CurrentLineNumber = Fnode->CurrentLineNumber; /* Point the parser to the popped file */ yy_delete_buffer (YY_CURRENT_BUFFER); yy_switch_to_buffer (Fnode->State); /* All done with this node */ ACPI_FREE (Fnode); return (0); } /******************************************************************************* * * FUNCTION: AslPushInputFileStack * * PARAMETERS: InputFile - Open file pointer * Filename - Name of the file * * RETURN: None * * DESCRIPTION: Push the InputFile onto the file stack, and point the parser * to this file. Called when an include file is successfully * opened. * ******************************************************************************/ void AslPushInputFileStack ( FILE *InputFile, char *Filename) { ASL_FILE_NODE *Fnode; YY_BUFFER_STATE State; /* Save the current state in an Fnode */ Fnode = UtLocalCalloc (sizeof (ASL_FILE_NODE)); Fnode->File = yyin; Fnode->Next = Gbl_IncludeFileStack; Fnode->State = YY_CURRENT_BUFFER; Fnode->CurrentLineNumber = Gbl_CurrentLineNumber; Fnode->Filename = Gbl_Files[ASL_FILE_INPUT].Filename; /* Push it on the stack */ Gbl_IncludeFileStack = Fnode; /* Point the parser to this file */ State = yy_create_buffer (InputFile, YY_BUF_SIZE); yy_switch_to_buffer (State); DbgPrint (ASL_PARSE_OUTPUT, "\nPush InputFile Stack, returning %p\n\n", InputFile); /* Reset the global line count and filename */ Gbl_Files[ASL_FILE_INPUT].Filename = Filename; Gbl_CurrentLineNumber = 1; yyin = InputFile; } /******************************************************************************* * * FUNCTION: AslResetCurrentLineBuffer * * PARAMETERS: None * * RETURN: None * * DESCRIPTION: Reset the Line Buffer to zero, increment global line numbers. * ******************************************************************************/ void AslResetCurrentLineBuffer ( void) { if (Gbl_Files[ASL_FILE_SOURCE_OUTPUT].Handle) { FlWriteFile (ASL_FILE_SOURCE_OUTPUT, Gbl_CurrentLineBuffer, Gbl_LineBufPtr - Gbl_CurrentLineBuffer); } Gbl_CurrentLineOffset += Gbl_CurrentColumn; Gbl_CurrentColumn = 0; Gbl_CurrentLineNumber++; Gbl_LogicalLineNumber++; Gbl_LineBufPtr = Gbl_CurrentLineBuffer; } /******************************************************************************* * * FUNCTION: AslInsertLineBuffer * * PARAMETERS: SourceChar - One char from the input ASL source file * * RETURN: None * * DESCRIPTION: Put one character of the source file into the temp line buffer * ******************************************************************************/ void AslInsertLineBuffer ( int SourceChar) { UINT32 i; UINT32 Count = 1; if (SourceChar == EOF) { return; } Gbl_InputByteCount++; /* Handle tabs. Convert to spaces */ if (SourceChar == '\t') { SourceChar = ' '; Count = ASL_SPACES_PER_TAB - (Gbl_CurrentColumn & (ASL_SPACES_PER_TAB-1)); } for (i = 0; i < Count; i++) { Gbl_CurrentColumn++; /* Insert the character into the line buffer */ *Gbl_LineBufPtr = (UINT8) SourceChar; Gbl_LineBufPtr++; if (Gbl_LineBufPtr > (Gbl_CurrentLineBuffer + (Gbl_LineBufferSize - 1))) { #if 0 /* * Warning if we have split a long source line. * */ sprintf (MsgBuffer, "Max %u", Gbl_LineBufferSize); AslCommonError (ASL_WARNING, ASL_MSG_LONG_LINE, Gbl_CurrentLineNumber, Gbl_LogicalLineNumber, Gbl_CurrentLineOffset, Gbl_CurrentColumn, Gbl_Files[ASL_FILE_INPUT].Filename, MsgBuffer); #endif AslResetCurrentLineBuffer (); } else if (SourceChar == '\n') { /* End of line */ AslResetCurrentLineBuffer (); } } } /******************************************************************************* * * FUNCTION: count * * PARAMETERS: yytext - Contains the matched keyword. * Type - Keyword/Character type: * 0 = anything except a keyword * 1 = pseudo-keywords * 2 = non-executable ASL keywords * 3 = executable ASL keywords * * RETURN: None * * DESCRIPTION: Count keywords and put them into the line buffer * ******************************************************************************/ static void count ( int Type) { int i; switch (Type) { case 2: TotalKeywords++; TotalNamedObjects++; break; case 3: TotalKeywords++; TotalExecutableOpcodes++; break; default: break; } for (i = 0; (yytext[i] != 0) && (yytext[i] != EOF); i++) { AslInsertLineBuffer (yytext[i]); *Gbl_LineBufPtr = 0; } } /******************************************************************************* * * FUNCTION: AslDoComment * * PARAMETERS: none * * RETURN: none * * DESCRIPTION: Process a standard comment. * ******************************************************************************/ static char AslDoComment ( void) { int c; int c1 = 0; AslInsertLineBuffer ('/'); AslInsertLineBuffer ('*'); loop: /* Eat chars until end-of-comment */ while ((c = input()) != '*' && c != EOF) { AslInsertLineBuffer (c); c1 = c; } if (c == EOF) { goto EarlyEOF; } /* * Check for nested comment -- can help catch cases where a previous * comment was accidently left unterminated */ if ((c1 == '/') && (c == '*')) { AslCommonError (ASL_WARNING, ASL_MSG_NESTED_COMMENT, Gbl_CurrentLineNumber, Gbl_LogicalLineNumber, Gbl_InputByteCount, Gbl_CurrentColumn, Gbl_Files[ASL_FILE_INPUT].Filename, NULL); } /* Comment is closed only if the NEXT character is a slash */ AslInsertLineBuffer (c); if ((c1 = input()) != '/' && c1 != EOF) { unput(c1); goto loop; } if (c1 == EOF) { goto EarlyEOF; } AslInsertLineBuffer (c1); return (TRUE); EarlyEOF: /* * Premature End-Of-File */ AslCommonError (ASL_ERROR, ASL_MSG_EARLY_EOF, Gbl_CurrentLineNumber, Gbl_LogicalLineNumber, Gbl_CurrentLineOffset, Gbl_CurrentColumn, Gbl_Files[ASL_FILE_INPUT].Filename, NULL); return (FALSE); } /******************************************************************************* * * FUNCTION: AslDoCommentType2 * * PARAMETERS: none * * RETURN: none * * DESCRIPTION: Process a new "//" comment. * ******************************************************************************/ static char AslDoCommentType2 ( void) { int c; AslInsertLineBuffer ('/'); AslInsertLineBuffer ('/'); while ((c = input()) != '\n' && c != EOF) { AslInsertLineBuffer (c); } if (c == EOF) { /* End of file is OK, change to newline. Let parser detect EOF later */ c = '\n'; } AslInsertLineBuffer (c); return (TRUE); } /******************************************************************************* * * FUNCTION: AslDoStringLiteral * * PARAMETERS: none * * RETURN: none * * DESCRIPTION: Process a string literal (surrounded by quotes) * ******************************************************************************/ static char AslDoStringLiteral ( void) { char *StringBuffer = MsgBuffer; char *EndBuffer = MsgBuffer + ASL_MSG_BUFFER_SIZE; char *CleanString; int StringChar; UINT32 State = ASL_NORMAL_CHAR; UINT32 i = 0; UINT8 Digit; char ConvertBuffer[4]; /* * Eat chars until end-of-literal. * NOTE: Put back the original surrounding quotes into the * source line buffer. */ AslInsertLineBuffer ('\"'); while ((StringChar = input()) != EOF) { AslInsertLineBuffer (StringChar); DoCharacter: switch (State) { case ASL_NORMAL_CHAR: switch (StringChar) { case '\\': /* * Special handling for backslash-escape sequence. We will * toss the backslash and translate the escape char(s). */ State = ASL_ESCAPE_SEQUENCE; continue; case '\"': /* String terminator */ goto CompletedString; default: break; } break; case ASL_ESCAPE_SEQUENCE: State = ASL_NORMAL_CHAR; switch (StringChar) { case 'a': StringChar = 0x07; /* BELL */ break; case 'b': StringChar = 0x08; /* BACKSPACE */ break; case 'f': StringChar = 0x0C; /* FORMFEED */ break; case 'n': StringChar = 0x0A; /* LINEFEED */ break; case 'r': StringChar = 0x0D; /* CARRIAGE RETURN*/ break; case 't': StringChar = 0x09; /* HORIZONTAL TAB */ break; case 'v': StringChar = 0x0B; /* VERTICAL TAB */ break; case 'x': State = ASL_HEX_CONSTANT; i = 0; continue; case '\'': /* Single Quote */ case '\"': /* Double Quote */ case '\\': /* Backslash */ break; default: /* Check for an octal digit (0-7) */ if (ACPI_IS_OCTAL_DIGIT (StringChar)) { State = ASL_OCTAL_CONSTANT; ConvertBuffer[0] = StringChar; i = 1; continue; } /* Unknown escape sequence issue warning, but use the character */ AslCommonError (ASL_WARNING, ASL_MSG_INVALID_ESCAPE, Gbl_CurrentLineNumber, Gbl_LogicalLineNumber, Gbl_CurrentLineOffset, Gbl_CurrentColumn, Gbl_Files[ASL_FILE_INPUT].Filename, NULL); break; } break; case ASL_OCTAL_CONSTANT: /* Up to three octal digits allowed */ if (!ACPI_IS_OCTAL_DIGIT (StringChar) || (i > 2)) { /* * Reached end of the constant. Convert the assembled ASCII * string and resume processing of the next character */ ConvertBuffer[i] = 0; Digit = (UINT8) ACPI_STRTOUL (ConvertBuffer, NULL, 8); /* Check for NULL or non-ascii character (ignore if so) */ if ((Digit == 0) || (Digit > ACPI_ASCII_MAX)) { AslCommonError (ASL_WARNING, ASL_MSG_INVALID_STRING, Gbl_CurrentLineNumber, Gbl_LogicalLineNumber, Gbl_CurrentLineOffset, Gbl_CurrentColumn, Gbl_Files[ASL_FILE_INPUT].Filename, NULL); } else { *StringBuffer = (char) Digit; StringBuffer++; if (StringBuffer >= EndBuffer) { goto BufferOverflow; } } State = ASL_NORMAL_CHAR; goto DoCharacter; break; } /* Append another digit of the constant */ ConvertBuffer[i] = StringChar; i++; continue; case ASL_HEX_CONSTANT: /* Up to two hex digits allowed */ if (!ACPI_IS_XDIGIT (StringChar) || (i > 1)) { /* * Reached end of the constant. Convert the assembled ASCII * string and resume processing of the next character */ ConvertBuffer[i] = 0; Digit = (UINT8) ACPI_STRTOUL (ConvertBuffer, NULL, 16); /* Check for NULL or non-ascii character (ignore if so) */ if ((Digit == 0) || (Digit > ACPI_ASCII_MAX)) { AslCommonError (ASL_WARNING, ASL_MSG_INVALID_STRING, Gbl_CurrentLineNumber, Gbl_LogicalLineNumber, Gbl_CurrentLineOffset, Gbl_CurrentColumn, Gbl_Files[ASL_FILE_INPUT].Filename, NULL); } else { *StringBuffer = (char) Digit; StringBuffer++; if (StringBuffer >= EndBuffer) { goto BufferOverflow; } } State = ASL_NORMAL_CHAR; goto DoCharacter; break; } /* Append another digit of the constant */ ConvertBuffer[i] = StringChar; i++; continue; default: break; } /* Save the finished character */ *StringBuffer = StringChar; StringBuffer++; if (StringBuffer >= EndBuffer) { goto BufferOverflow; } } /* * Premature End-Of-File */ AslCommonError (ASL_ERROR, ASL_MSG_EARLY_EOF, Gbl_CurrentLineNumber, Gbl_LogicalLineNumber, Gbl_CurrentLineOffset, Gbl_CurrentColumn, Gbl_Files[ASL_FILE_INPUT].Filename, NULL); return (FALSE); CompletedString: /* * Null terminate the input string and copy string to a new buffer */ *StringBuffer = 0; CleanString = UtGetStringBuffer (strlen (MsgBuffer) + 1); if (!CleanString) { AslCommonError (ASL_ERROR, ASL_MSG_MEMORY_ALLOCATION, Gbl_CurrentLineNumber, Gbl_LogicalLineNumber, Gbl_CurrentLineOffset, Gbl_CurrentColumn, Gbl_Files[ASL_FILE_INPUT].Filename, NULL); return (FALSE); } ACPI_STRCPY (CleanString, MsgBuffer); AslCompilerlval.s = CleanString; return (TRUE); BufferOverflow: /* Literal was too long */ AslCommonError (ASL_ERROR, ASL_MSG_STRING_LENGTH, Gbl_CurrentLineNumber, Gbl_LogicalLineNumber, Gbl_CurrentLineOffset, Gbl_CurrentColumn, Gbl_Files[ASL_FILE_INPUT].Filename, "Max length 4096"); return (FALSE); } src/acpica/source/compiler/asltransform.c000066400000000000000000000665721231470457100211020ustar00rootroot00000000000000/****************************************************************************** * * Module Name: asltransform - Parse tree transforms * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #include "aslcompiler.h" #include "aslcompiler.y.h" #define _COMPONENT ACPI_COMPILER ACPI_MODULE_NAME ("asltransform") /* Local prototypes */ static void TrTransformSubtree ( ACPI_PARSE_OBJECT *Op); static char * TrAmlGetNextTempName ( ACPI_PARSE_OBJECT *Op, UINT8 *TempCount); static void TrAmlInitLineNumbers ( ACPI_PARSE_OBJECT *Op, ACPI_PARSE_OBJECT *Neighbor); static void TrAmlInitNode ( ACPI_PARSE_OBJECT *Op, UINT16 ParseOpcode); static void TrAmlSetSubtreeParent ( ACPI_PARSE_OBJECT *Op, ACPI_PARSE_OBJECT *Parent); static void TrAmlInsertPeer ( ACPI_PARSE_OBJECT *Op, ACPI_PARSE_OBJECT *NewPeer); static void TrDoDefinitionBlock ( ACPI_PARSE_OBJECT *Op); static void TrDoSwitch ( ACPI_PARSE_OBJECT *StartNode); /******************************************************************************* * * FUNCTION: TrAmlGetNextTempName * * PARAMETERS: Op - Current parse op * TempCount - Current temporary counter. Was originally * per-module; Currently per method, could be * expanded to per-scope. * * RETURN: A pointer to name (allocated here). * * DESCRIPTION: Generate an ACPI name of the form _T_x. These names are * reserved for use by the ASL compiler. (_T_0 through _T_Z) * ******************************************************************************/ static char * TrAmlGetNextTempName ( ACPI_PARSE_OBJECT *Op, UINT8 *TempCount) { char *TempName; if (*TempCount >= (10+26)) /* 0-35 valid: 0-9 and A-Z for TempName[3] */ { /* Too many temps */ AslError (ASL_ERROR, ASL_MSG_TOO_MANY_TEMPS, Op, NULL); return (NULL); } TempName = UtLocalCalloc (5); if (*TempCount < 10) /* 0-9 */ { TempName[3] = (char) (*TempCount + '0'); } else /* 10-35: A-Z */ { TempName[3] = (char) (*TempCount + ('A' - 10)); } (*TempCount)++; /* First three characters are always "_T_" */ TempName[0] = '_'; TempName[1] = 'T'; TempName[2] = '_'; return (TempName); } /******************************************************************************* * * FUNCTION: TrAmlInitLineNumbers * * PARAMETERS: Op - Op to be initialized * Neighbor - Op used for initialization values * * RETURN: None * * DESCRIPTION: Initialized the various line numbers for a parse node. * ******************************************************************************/ static void TrAmlInitLineNumbers ( ACPI_PARSE_OBJECT *Op, ACPI_PARSE_OBJECT *Neighbor) { Op->Asl.EndLine = Neighbor->Asl.EndLine; Op->Asl.EndLogicalLine = Neighbor->Asl.EndLogicalLine; Op->Asl.LineNumber = Neighbor->Asl.LineNumber; Op->Asl.LogicalByteOffset = Neighbor->Asl.LogicalByteOffset; Op->Asl.LogicalLineNumber = Neighbor->Asl.LogicalLineNumber; } /******************************************************************************* * * FUNCTION: TrAmlInitNode * * PARAMETERS: Op - Op to be initialized * ParseOpcode - Opcode for this node * * RETURN: None * * DESCRIPTION: Initialize a node with the parse opcode and opcode name. * ******************************************************************************/ static void TrAmlInitNode ( ACPI_PARSE_OBJECT *Op, UINT16 ParseOpcode) { Op->Asl.ParseOpcode = ParseOpcode; UtSetParseOpName (Op); } /******************************************************************************* * * FUNCTION: TrAmlSetSubtreeParent * * PARAMETERS: Op - First node in a list of peer nodes * Parent - Parent of the subtree * * RETURN: None * * DESCRIPTION: Set the parent for all peer nodes in a subtree * ******************************************************************************/ static void TrAmlSetSubtreeParent ( ACPI_PARSE_OBJECT *Op, ACPI_PARSE_OBJECT *Parent) { ACPI_PARSE_OBJECT *Next; Next = Op; while (Next) { Next->Asl.Parent = Parent; Next = Next->Asl.Next; } } /******************************************************************************* * * FUNCTION: TrAmlInsertPeer * * PARAMETERS: Op - First node in a list of peer nodes * NewPeer - Peer node to insert * * RETURN: None * * DESCRIPTION: Insert a new peer node into a list of peers. * ******************************************************************************/ static void TrAmlInsertPeer ( ACPI_PARSE_OBJECT *Op, ACPI_PARSE_OBJECT *NewPeer) { NewPeer->Asl.Next = Op->Asl.Next; Op->Asl.Next = NewPeer; } /******************************************************************************* * * FUNCTION: TrAmlTransformWalk * * PARAMETERS: ASL_WALK_CALLBACK * * RETURN: None * * DESCRIPTION: Parse tree walk to generate both the AML opcodes and the AML * operands. * ******************************************************************************/ ACPI_STATUS TrAmlTransformWalk ( ACPI_PARSE_OBJECT *Op, UINT32 Level, void *Context) { TrTransformSubtree (Op); return (AE_OK); } /******************************************************************************* * * FUNCTION: TrTransformSubtree * * PARAMETERS: Op - The parent parse node * * RETURN: None * * DESCRIPTION: Prepare nodes to be output as AML data and operands. The more * complex AML opcodes require processing of the child nodes * (arguments/operands). * ******************************************************************************/ static void TrTransformSubtree ( ACPI_PARSE_OBJECT *Op) { if (Op->Asl.AmlOpcode == AML_RAW_DATA_BYTE) { return; } switch (Op->Asl.ParseOpcode) { case PARSEOP_DEFINITIONBLOCK: TrDoDefinitionBlock (Op); break; case PARSEOP_SWITCH: TrDoSwitch (Op); break; case PARSEOP_METHOD: /* * TBD: Zero the tempname (_T_x) count. Probably shouldn't be a global, * however */ Gbl_TempCount = 0; break; default: /* Nothing to do here for other opcodes */ break; } } /******************************************************************************* * * FUNCTION: TrDoDefinitionBlock * * PARAMETERS: Op - Parse node * * RETURN: None * * DESCRIPTION: Find the end of the definition block and set a global to this * node. It is used by the compiler to insert compiler-generated * names at the root level of the namespace. * ******************************************************************************/ static void TrDoDefinitionBlock ( ACPI_PARSE_OBJECT *Op) { ACPI_PARSE_OBJECT *Next; UINT32 i; Next = Op->Asl.Child; for (i = 0; i < 5; i++) { Next = Next->Asl.Next; if (i == 0) { /* * This is the table signature. Only the DSDT can be assumed * to be at the root of the namespace; Therefore, namepath * optimization can only be performed on the DSDT. */ if (!ACPI_COMPARE_NAME (Next->Asl.Value.String, ACPI_SIG_DSDT)) { Gbl_ReferenceOptimizationFlag = FALSE; } } } Gbl_FirstLevelInsertionNode = Next; } /******************************************************************************* * * FUNCTION: TrDoSwitch * * PARAMETERS: StartNode - Parse node for SWITCH * * RETURN: None * * * DESCRIPTION: Translate ASL SWITCH statement to if/else pairs. There is * no actual AML opcode for SWITCH -- it must be simulated. * ******************************************************************************/ static void TrDoSwitch ( ACPI_PARSE_OBJECT *StartNode) { ACPI_PARSE_OBJECT *Next; ACPI_PARSE_OBJECT *CaseOp = NULL; ACPI_PARSE_OBJECT *CaseBlock = NULL; ACPI_PARSE_OBJECT *DefaultOp = NULL; ACPI_PARSE_OBJECT *CurrentParentNode; ACPI_PARSE_OBJECT *Conditional = NULL; ACPI_PARSE_OBJECT *Predicate; ACPI_PARSE_OBJECT *Peer; ACPI_PARSE_OBJECT *NewOp; ACPI_PARSE_OBJECT *NewOp2; ACPI_PARSE_OBJECT *MethodOp; ACPI_PARSE_OBJECT *StoreOp; ACPI_PARSE_OBJECT *BreakOp; ACPI_PARSE_OBJECT *BufferOp; char *PredicateValueName; UINT16 Index; UINT32 Btype; /* Start node is the Switch() node */ CurrentParentNode = StartNode; /* Create a new temp name of the form _T_x */ PredicateValueName = TrAmlGetNextTempName (StartNode, &Gbl_TempCount); if (!PredicateValueName) { return; } /* First child is the Switch() predicate */ Next = StartNode->Asl.Child; /* * Examine the return type of the Switch Value - * must be Integer/Buffer/String */ Index = (UINT16) (Next->Asl.ParseOpcode - ASL_PARSE_OPCODE_BASE); Btype = AslKeywordMapping[Index].AcpiBtype; if ((Btype != ACPI_BTYPE_INTEGER) && (Btype != ACPI_BTYPE_STRING) && (Btype != ACPI_BTYPE_BUFFER)) { AslError (ASL_WARNING, ASL_MSG_SWITCH_TYPE, Next, NULL); Btype = ACPI_BTYPE_INTEGER; } /* CASE statements start at next child */ Peer = Next->Asl.Next; while (Peer) { Next = Peer; Peer = Next->Asl.Next; if (Next->Asl.ParseOpcode == PARSEOP_CASE) { if (CaseOp) { /* Add an ELSE to complete the previous CASE */ NewOp = TrCreateLeafNode (PARSEOP_ELSE); NewOp->Asl.Parent = Conditional->Asl.Parent; TrAmlInitLineNumbers (NewOp, NewOp->Asl.Parent); /* Link ELSE node as a peer to the previous IF */ TrAmlInsertPeer (Conditional, NewOp); CurrentParentNode = NewOp; } CaseOp = Next; Conditional = CaseOp; CaseBlock = CaseOp->Asl.Child->Asl.Next; Conditional->Asl.Child->Asl.Next = NULL; Predicate = CaseOp->Asl.Child; if ((Predicate->Asl.ParseOpcode == PARSEOP_PACKAGE) || (Predicate->Asl.ParseOpcode == PARSEOP_VAR_PACKAGE)) { /* * Convert the package declaration to this form: * * If (LNotEqual (Match (Package(){}, * MEQ, _T_x, MTR, Zero, Zero), Ones)) */ NewOp2 = TrCreateLeafNode (PARSEOP_MATCHTYPE_MEQ); Predicate->Asl.Next = NewOp2; TrAmlInitLineNumbers (NewOp2, Conditional); NewOp = NewOp2; NewOp2 = TrCreateValuedLeafNode (PARSEOP_NAMESTRING, (UINT64) ACPI_TO_INTEGER (PredicateValueName)); NewOp->Asl.Next = NewOp2; TrAmlInitLineNumbers (NewOp2, Predicate); NewOp = NewOp2; NewOp2 = TrCreateLeafNode (PARSEOP_MATCHTYPE_MTR); NewOp->Asl.Next = NewOp2; TrAmlInitLineNumbers (NewOp2, Predicate); NewOp = NewOp2; NewOp2 = TrCreateLeafNode (PARSEOP_ZERO); NewOp->Asl.Next = NewOp2; TrAmlInitLineNumbers (NewOp2, Predicate); NewOp = NewOp2; NewOp2 = TrCreateLeafNode (PARSEOP_ZERO); NewOp->Asl.Next = NewOp2; TrAmlInitLineNumbers (NewOp2, Predicate); NewOp2 = TrCreateLeafNode (PARSEOP_MATCH); NewOp2->Asl.Child = Predicate; /* PARSEOP_PACKAGE */ TrAmlInitLineNumbers (NewOp2, Conditional); TrAmlSetSubtreeParent (Predicate, NewOp2); NewOp = NewOp2; NewOp2 = TrCreateLeafNode (PARSEOP_ONES); NewOp->Asl.Next = NewOp2; TrAmlInitLineNumbers (NewOp2, Conditional); NewOp2 = TrCreateLeafNode (PARSEOP_LEQUAL); NewOp2->Asl.Child = NewOp; NewOp->Asl.Parent = NewOp2; TrAmlInitLineNumbers (NewOp2, Conditional); TrAmlSetSubtreeParent (NewOp, NewOp2); NewOp = NewOp2; NewOp2 = TrCreateLeafNode (PARSEOP_LNOT); NewOp2->Asl.Child = NewOp; NewOp2->Asl.Parent = Conditional; NewOp->Asl.Parent = NewOp2; TrAmlInitLineNumbers (NewOp2, Conditional); Conditional->Asl.Child = NewOp2; NewOp2->Asl.Next = CaseBlock; } else { /* * Integer and Buffer case. * * Change CaseOp() to: If (LEqual (SwitchValue, CaseValue)) {...} * Note: SwitchValue is first to allow the CaseValue to be implicitly * converted to the type of SwitchValue if necessary. * * CaseOp->Child is the case value * CaseOp->Child->Peer is the beginning of the case block */ NewOp = TrCreateValuedLeafNode (PARSEOP_NAMESTRING, (UINT64) ACPI_TO_INTEGER (PredicateValueName)); NewOp->Asl.Next = Predicate; TrAmlInitLineNumbers (NewOp, Predicate); NewOp2 = TrCreateLeafNode (PARSEOP_LEQUAL); NewOp2->Asl.Parent = Conditional; NewOp2->Asl.Child = NewOp; TrAmlInitLineNumbers (NewOp2, Conditional); TrAmlSetSubtreeParent (NewOp, NewOp2); Predicate = NewOp2; Predicate->Asl.Next = CaseBlock; TrAmlSetSubtreeParent (Predicate, Conditional); Conditional->Asl.Child = Predicate; } /* Reinitialize the CASE node to an IF node */ TrAmlInitNode (Conditional, PARSEOP_IF); /* * The first CASE(IF) is not nested under an ELSE. * All other CASEs are children of a parent ELSE. */ if (CurrentParentNode == StartNode) { Conditional->Asl.Next = NULL; } else { /* * The IF is a child of previous IF/ELSE. It * is therefore without peer. */ CurrentParentNode->Asl.Child = Conditional; Conditional->Asl.Parent = CurrentParentNode; Conditional->Asl.Next = NULL; } } else if (Next->Asl.ParseOpcode == PARSEOP_DEFAULT) { if (DefaultOp) { /* * More than one Default * (Parser does not catch this, must check here) */ AslError (ASL_ERROR, ASL_MSG_MULTIPLE_DEFAULT, Next, NULL); } else { /* Save the DEFAULT node for later, after CASEs */ DefaultOp = Next; } } else { /* Unknown peer opcode */ AcpiOsPrintf ("Unknown parse opcode for switch statement: %s (%u)\n", Next->Asl.ParseOpName, Next->Asl.ParseOpcode); } } /* Add the default case at the end of the if/else construct */ if (DefaultOp) { /* If no CASE statements, this is an error - see below */ if (CaseOp) { /* Convert the DEFAULT node to an ELSE */ TrAmlInitNode (DefaultOp, PARSEOP_ELSE); DefaultOp->Asl.Parent = Conditional->Asl.Parent; /* Link ELSE node as a peer to the previous IF */ TrAmlInsertPeer (Conditional, DefaultOp); } } if (!CaseOp) { AslError (ASL_ERROR, ASL_MSG_NO_CASES, StartNode, NULL); } /* * Create a Name(_T_x, ...) statement. This statement must appear at the * method level, in case a loop surrounds the switch statement and could * cause the name to be created twice (error). */ /* Create the Name node */ Predicate = StartNode->Asl.Child; NewOp = TrCreateLeafNode (PARSEOP_NAME); TrAmlInitLineNumbers (NewOp, StartNode); /* Find the parent method */ Next = StartNode; while ((Next->Asl.ParseOpcode != PARSEOP_METHOD) && (Next->Asl.ParseOpcode != PARSEOP_DEFINITIONBLOCK)) { Next = Next->Asl.Parent; } MethodOp = Next; NewOp->Asl.CompileFlags |= NODE_COMPILER_EMITTED; NewOp->Asl.Parent = Next; /* Insert name after the method name and arguments */ Next = Next->Asl.Child; /* Name */ Next = Next->Asl.Next; /* NumArgs */ Next = Next->Asl.Next; /* SerializeRule */ /* * If method is not Serialized, we must make is so, because of the way * that Switch() must be implemented -- we cannot allow multiple threads * to execute this method concurrently since we need to create local * temporary name(s). */ if (Next->Asl.ParseOpcode != PARSEOP_SERIALIZERULE_SERIAL) { AslError (ASL_REMARK, ASL_MSG_SERIALIZED, MethodOp, "Due to use of Switch operator"); Next->Asl.ParseOpcode = PARSEOP_SERIALIZERULE_SERIAL; } Next = Next->Asl.Next; /* SyncLevel */ Next = Next->Asl.Next; /* ReturnType */ Next = Next->Asl.Next; /* ParameterTypes */ TrAmlInsertPeer (Next, NewOp); TrAmlInitLineNumbers (NewOp, Next); /* Create the NameSeg child for the Name node */ NewOp2 = TrCreateValuedLeafNode (PARSEOP_NAMESEG, (UINT64) ACPI_TO_INTEGER (PredicateValueName)); TrAmlInitLineNumbers (NewOp2, NewOp); NewOp2->Asl.CompileFlags |= NODE_IS_NAME_DECLARATION; NewOp->Asl.Child = NewOp2; /* Create the initial value for the Name. Btype was already validated above */ switch (Btype) { case ACPI_BTYPE_INTEGER: NewOp2->Asl.Next = TrCreateValuedLeafNode (PARSEOP_ZERO, (UINT64) 0); TrAmlInitLineNumbers (NewOp2->Asl.Next, NewOp); break; case ACPI_BTYPE_STRING: NewOp2->Asl.Next = TrCreateValuedLeafNode (PARSEOP_STRING_LITERAL, (UINT64) ACPI_TO_INTEGER ("")); TrAmlInitLineNumbers (NewOp2->Asl.Next, NewOp); break; case ACPI_BTYPE_BUFFER: (void) TrLinkPeerNode (NewOp2, TrCreateValuedLeafNode (PARSEOP_BUFFER, (UINT64) 0)); Next = NewOp2->Asl.Next; TrAmlInitLineNumbers (Next, NewOp2); (void) TrLinkChildren (Next, 1, TrCreateValuedLeafNode (PARSEOP_ZERO, (UINT64) 1)); TrAmlInitLineNumbers (Next->Asl.Child, Next); BufferOp = TrCreateValuedLeafNode (PARSEOP_DEFAULT_ARG, (UINT64) 0); TrAmlInitLineNumbers (BufferOp, Next->Asl.Child); (void) TrLinkPeerNode (Next->Asl.Child, BufferOp); TrAmlSetSubtreeParent (Next->Asl.Child, Next); break; default: break; } TrAmlSetSubtreeParent (NewOp2, NewOp); /* * Transform the Switch() into a While(One)-Break node. * And create a Store() node which will be used to save the * Switch() value. The store is of the form: Store (Value, _T_x) * where _T_x is the temp variable. */ TrAmlInitNode (StartNode, PARSEOP_WHILE); NewOp = TrCreateLeafNode (PARSEOP_ONE); TrAmlInitLineNumbers (NewOp, StartNode); NewOp->Asl.Next = Predicate->Asl.Next; NewOp->Asl.Parent = StartNode; StartNode->Asl.Child = NewOp; /* Create a Store() node */ StoreOp = TrCreateLeafNode (PARSEOP_STORE); TrAmlInitLineNumbers (StoreOp, NewOp); StoreOp->Asl.Parent = StartNode; TrAmlInsertPeer (NewOp, StoreOp); /* Complete the Store subtree */ StoreOp->Asl.Child = Predicate; Predicate->Asl.Parent = StoreOp; NewOp = TrCreateValuedLeafNode (PARSEOP_NAMESEG, (UINT64) ACPI_TO_INTEGER (PredicateValueName)); TrAmlInitLineNumbers (NewOp, StoreOp); NewOp->Asl.Parent = StoreOp; Predicate->Asl.Next = NewOp; /* Create a Break() node and insert it into the end of While() */ Conditional = StartNode->Asl.Child; while (Conditional->Asl.Next) { Conditional = Conditional->Asl.Next; } BreakOp = TrCreateLeafNode (PARSEOP_BREAK); TrAmlInitLineNumbers (BreakOp, NewOp); BreakOp->Asl.Parent = StartNode; TrAmlInsertPeer (Conditional, BreakOp); } src/acpica/source/compiler/asltree.c000066400000000000000000001077061231470457100200210ustar00rootroot00000000000000/****************************************************************************** * * Module Name: asltree - parse tree management * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #include "aslcompiler.h" #include "aslcompiler.y.h" #include "acapps.h" #include #define _COMPONENT ACPI_COMPILER ACPI_MODULE_NAME ("asltree") /* Local prototypes */ static ACPI_PARSE_OBJECT * TrGetNextNode ( void); static char * TrGetNodeFlagName ( UINT32 Flags); /******************************************************************************* * * FUNCTION: TrGetNextNode * * PARAMETERS: None * * RETURN: New parse node. Aborts on allocation failure * * DESCRIPTION: Allocate a new parse node for the parse tree. Bypass the local * dynamic memory manager for performance reasons (This has a * major impact on the speed of the compiler.) * ******************************************************************************/ static ACPI_PARSE_OBJECT * TrGetNextNode ( void) { if (Gbl_NodeCacheNext >= Gbl_NodeCacheLast) { Gbl_NodeCacheNext = UtLocalCalloc (sizeof (ACPI_PARSE_OBJECT) * ASL_NODE_CACHE_SIZE); Gbl_NodeCacheLast = Gbl_NodeCacheNext + ASL_NODE_CACHE_SIZE; } return (Gbl_NodeCacheNext++); } /******************************************************************************* * * FUNCTION: TrAllocateNode * * PARAMETERS: ParseOpcode - Opcode to be assigned to the node * * RETURN: New parse node. Aborts on allocation failure * * DESCRIPTION: Allocate and initialize a new parse node for the parse tree * ******************************************************************************/ ACPI_PARSE_OBJECT * TrAllocateNode ( UINT32 ParseOpcode) { ACPI_PARSE_OBJECT *Op; Op = TrGetNextNode (); Op->Asl.ParseOpcode = (UINT16) ParseOpcode; Op->Asl.Filename = Gbl_Files[ASL_FILE_INPUT].Filename; Op->Asl.LineNumber = Gbl_CurrentLineNumber; Op->Asl.LogicalLineNumber = Gbl_LogicalLineNumber; Op->Asl.LogicalByteOffset = Gbl_CurrentLineOffset; Op->Asl.Column = Gbl_CurrentColumn; UtSetParseOpName (Op); return (Op); } /******************************************************************************* * * FUNCTION: TrReleaseNode * * PARAMETERS: Op - Op to be released * * RETURN: None * * DESCRIPTION: "release" a node. In truth, nothing is done since the node * is part of a larger buffer * ******************************************************************************/ void TrReleaseNode ( ACPI_PARSE_OBJECT *Op) { return; } /******************************************************************************* * * FUNCTION: TrUpdateNode * * PARAMETERS: ParseOpcode - New opcode to be assigned to the node * Op - An existing parse node * * RETURN: The updated node * * DESCRIPTION: Change the parse opcode assigned to a node. Usually used to * change an opcode to DEFAULT_ARG so that the node is ignored * during the code generation. Also used to set generic integers * to a specific size (8, 16, 32, or 64 bits) * ******************************************************************************/ ACPI_PARSE_OBJECT * TrUpdateNode ( UINT32 ParseOpcode, ACPI_PARSE_OBJECT *Op) { if (!Op) { return (NULL); } DbgPrint (ASL_PARSE_OUTPUT, "\nUpdateNode: Old - %s, New - %s\n\n", UtGetOpName (Op->Asl.ParseOpcode), UtGetOpName (ParseOpcode)); /* Assign new opcode and name */ if (Op->Asl.ParseOpcode == PARSEOP_ONES) { switch (ParseOpcode) { case PARSEOP_BYTECONST: Op->Asl.Value.Integer = ACPI_UINT8_MAX; break; case PARSEOP_WORDCONST: Op->Asl.Value.Integer = ACPI_UINT16_MAX; break; case PARSEOP_DWORDCONST: Op->Asl.Value.Integer = ACPI_UINT32_MAX; break; /* Don't need to do the QWORD case */ default: /* Don't care about others */ break; } } Op->Asl.ParseOpcode = (UINT16) ParseOpcode; UtSetParseOpName (Op); /* * For the BYTE, WORD, and DWORD constants, make sure that the integer * that was passed in will actually fit into the data type */ switch (ParseOpcode) { case PARSEOP_BYTECONST: UtCheckIntegerRange (Op, 0x00, ACPI_UINT8_MAX); Op->Asl.Value.Integer &= ACPI_UINT8_MAX; break; case PARSEOP_WORDCONST: UtCheckIntegerRange (Op, 0x00, ACPI_UINT16_MAX); Op->Asl.Value.Integer &= ACPI_UINT16_MAX; break; case PARSEOP_DWORDCONST: UtCheckIntegerRange (Op, 0x00, ACPI_UINT32_MAX); Op->Asl.Value.Integer &= ACPI_UINT32_MAX; break; default: /* Don't care about others, don't need to check QWORD */ break; } return (Op); } /******************************************************************************* * * FUNCTION: TrGetNodeFlagName * * PARAMETERS: Flags - Flags word to be decoded * * RETURN: Name string. Always returns a valid string pointer. * * DESCRIPTION: Decode a flags word * ******************************************************************************/ static char * TrGetNodeFlagName ( UINT32 Flags) { switch (Flags) { case NODE_VISITED: return ("NODE_VISITED"); case NODE_AML_PACKAGE: return ("NODE_AML_PACKAGE"); case NODE_IS_TARGET: return ("NODE_IS_TARGET"); case NODE_IS_RESOURCE_DESC: return ("NODE_IS_RESOURCE_DESC"); case NODE_IS_RESOURCE_FIELD: return ("NODE_IS_RESOURCE_FIELD"); case NODE_HAS_NO_EXIT: return ("NODE_HAS_NO_EXIT"); case NODE_IF_HAS_NO_EXIT: return ("NODE_IF_HAS_NO_EXIT"); case NODE_NAME_INTERNALIZED: return ("NODE_NAME_INTERNALIZED"); case NODE_METHOD_NO_RETVAL: return ("NODE_METHOD_NO_RETVAL"); case NODE_METHOD_SOME_NO_RETVAL: return ("NODE_METHOD_SOME_NO_RETVAL"); case NODE_RESULT_NOT_USED: return ("NODE_RESULT_NOT_USED"); case NODE_METHOD_TYPED: return ("NODE_METHOD_TYPED"); case NODE_COMPILE_TIME_CONST: return ("NODE_COMPILE_TIME_CONST"); case NODE_IS_TERM_ARG: return ("NODE_IS_TERM_ARG"); case NODE_WAS_ONES_OP: return ("NODE_WAS_ONES_OP"); case NODE_IS_NAME_DECLARATION: return ("NODE_IS_NAME_DECLARATION"); default: return ("Multiple Flags (or unknown flag) set"); } } /******************************************************************************* * * FUNCTION: TrSetNodeFlags * * PARAMETERS: Op - An existing parse node * Flags - New flags word * * RETURN: The updated parser op * * DESCRIPTION: Set bits in the node flags word. Will not clear bits, only set * ******************************************************************************/ ACPI_PARSE_OBJECT * TrSetNodeFlags ( ACPI_PARSE_OBJECT *Op, UINT32 Flags) { DbgPrint (ASL_PARSE_OUTPUT, "\nSetNodeFlags: Op %p, %8.8X %s\n\n", Op, Flags, TrGetNodeFlagName (Flags)); if (!Op) { return (NULL); } Op->Asl.CompileFlags |= Flags; return (Op); } /******************************************************************************* * * FUNCTION: TrSetNodeAmlLength * * PARAMETERS: Op - An existing parse node * Length - AML Length * * RETURN: The updated parser op * * DESCRIPTION: Set the AML Length in a node. Used by the parser to indicate * the presence of a node that must be reduced to a fixed length * constant. * ******************************************************************************/ ACPI_PARSE_OBJECT * TrSetNodeAmlLength ( ACPI_PARSE_OBJECT *Op, UINT32 Length) { DbgPrint (ASL_PARSE_OUTPUT, "\nSetNodeAmlLength: Op %p, %8.8X\n", Op, Length); if (!Op) { return (NULL); } Op->Asl.AmlLength = Length; return (Op); } /******************************************************************************* * * FUNCTION: TrSetEndLineNumber * * PARAMETERS: Op - An existing parse node * * RETURN: None. * * DESCRIPTION: Set the ending line numbers (file line and logical line) of a * parse node to the current line numbers. * ******************************************************************************/ void TrSetEndLineNumber ( ACPI_PARSE_OBJECT *Op) { /* If the end line # is already set, just return */ if (Op->Asl.EndLine) { return; } Op->Asl.EndLine = Gbl_CurrentLineNumber; Op->Asl.EndLogicalLine = Gbl_LogicalLineNumber; } /******************************************************************************* * * FUNCTION: TrCreateLeafNode * * PARAMETERS: ParseOpcode - New opcode to be assigned to the node * * RETURN: Pointer to the new node. Aborts on allocation failure * * DESCRIPTION: Create a simple leaf node (no children or peers, and no value * assigned to the node) * ******************************************************************************/ ACPI_PARSE_OBJECT * TrCreateLeafNode ( UINT32 ParseOpcode) { ACPI_PARSE_OBJECT *Op; Op = TrAllocateNode (ParseOpcode); DbgPrint (ASL_PARSE_OUTPUT, "\nCreateLeafNode Ln/Col %u/%u NewNode %p Op %s\n\n", Op->Asl.LineNumber, Op->Asl.Column, Op, UtGetOpName(ParseOpcode)); return (Op); } /******************************************************************************* * * FUNCTION: TrCreateConstantLeafNode * * PARAMETERS: ParseOpcode - The constant opcode * * RETURN: Pointer to the new node. Aborts on allocation failure * * DESCRIPTION: Create a leaf node (no children or peers) for one of the * special constants - __LINE__, __FILE__, and __DATE__. * * Note: An implemenation of __FUNC__ cannot happen here because we don't * have a full parse tree at this time and cannot find the parent control * method. If it is ever needed, __FUNC__ must be implemented later, after * the parse tree has been fully constructed. * ******************************************************************************/ ACPI_PARSE_OBJECT * TrCreateConstantLeafNode ( UINT32 ParseOpcode) { ACPI_PARSE_OBJECT *Op = NULL; time_t CurrentTime; char *StaticTimeString; char *TimeString; char *Path; char *Filename; switch (ParseOpcode) { case PARSEOP___LINE__: Op = TrAllocateNode (PARSEOP_INTEGER); Op->Asl.Value.Integer = Op->Asl.LineNumber; break; case PARSEOP___PATH__: Op = TrAllocateNode (PARSEOP_STRING_LITERAL); /* Op.Asl.Filename contains the full pathname to the file */ Op->Asl.Value.String = Op->Asl.Filename; break; case PARSEOP___FILE__: Op = TrAllocateNode (PARSEOP_STRING_LITERAL); /* Get the simple filename from the full path */ FlSplitInputPathname (Op->Asl.Filename, &Path, &Filename); ACPI_FREE (Path); Op->Asl.Value.String = Filename; break; case PARSEOP___DATE__: Op = TrAllocateNode (PARSEOP_STRING_LITERAL); /* Get a copy of the current time */ CurrentTime = time (NULL); StaticTimeString = ctime (&CurrentTime); TimeString = UtLocalCalloc (strlen (StaticTimeString) + 1); strcpy (TimeString, StaticTimeString); TimeString[strlen(TimeString) -1] = 0; /* Remove trailing newline */ Op->Asl.Value.String = TimeString; break; default: /* This would be an internal error */ return (NULL); } DbgPrint (ASL_PARSE_OUTPUT, "\nCreateConstantLeafNode Ln/Col %u/%u NewNode %p Op %s Value %8.8X%8.8X ", Op->Asl.LineNumber, Op->Asl.Column, Op, UtGetOpName (ParseOpcode), ACPI_FORMAT_UINT64 (Op->Asl.Value.Integer)); return (Op); } /******************************************************************************* * * FUNCTION: TrCreateValuedLeafNode * * PARAMETERS: ParseOpcode - New opcode to be assigned to the node * Value - Value to be assigned to the node * * RETURN: Pointer to the new node. Aborts on allocation failure * * DESCRIPTION: Create a leaf node (no children or peers) with a value * assigned to it * ******************************************************************************/ ACPI_PARSE_OBJECT * TrCreateValuedLeafNode ( UINT32 ParseOpcode, UINT64 Value) { ACPI_PARSE_OBJECT *Op; Op = TrAllocateNode (ParseOpcode); DbgPrint (ASL_PARSE_OUTPUT, "\nCreateValuedLeafNode Ln/Col %u/%u NewNode %p Op %s Value %8.8X%8.8X ", Op->Asl.LineNumber, Op->Asl.Column, Op, UtGetOpName(ParseOpcode), ACPI_FORMAT_UINT64 (Value)); Op->Asl.Value.Integer = Value; switch (ParseOpcode) { case PARSEOP_STRING_LITERAL: DbgPrint (ASL_PARSE_OUTPUT, "STRING->%s", Value); break; case PARSEOP_NAMESEG: DbgPrint (ASL_PARSE_OUTPUT, "NAMESEG->%s", Value); break; case PARSEOP_NAMESTRING: DbgPrint (ASL_PARSE_OUTPUT, "NAMESTRING->%s", Value); break; case PARSEOP_EISAID: DbgPrint (ASL_PARSE_OUTPUT, "EISAID->%s", Value); break; case PARSEOP_METHOD: DbgPrint (ASL_PARSE_OUTPUT, "METHOD"); break; case PARSEOP_INTEGER: DbgPrint (ASL_PARSE_OUTPUT, "INTEGER"); break; default: break; } DbgPrint (ASL_PARSE_OUTPUT, "\n\n"); return (Op); } /******************************************************************************* * * FUNCTION: TrCreateNode * * PARAMETERS: ParseOpcode - Opcode to be assigned to the node * NumChildren - Number of children to follow * ... - A list of child nodes to link to the new * node. NumChildren long. * * RETURN: Pointer to the new node. Aborts on allocation failure * * DESCRIPTION: Create a new parse node and link together a list of child * nodes underneath the new node. * ******************************************************************************/ ACPI_PARSE_OBJECT * TrCreateNode ( UINT32 ParseOpcode, UINT32 NumChildren, ...) { ACPI_PARSE_OBJECT *Op; ACPI_PARSE_OBJECT *Child; ACPI_PARSE_OBJECT *PrevChild; va_list ap; UINT32 i; BOOLEAN FirstChild; va_start (ap, NumChildren); /* Allocate one new node */ Op = TrAllocateNode (ParseOpcode); DbgPrint (ASL_PARSE_OUTPUT, "\nCreateNode Ln/Col %u/%u NewParent %p Child %u Op %s ", Op->Asl.LineNumber, Op->Asl.Column, Op, NumChildren, UtGetOpName(ParseOpcode)); /* Some extra debug output based on the parse opcode */ switch (ParseOpcode) { case PARSEOP_DEFINITIONBLOCK: RootNode = Op; DbgPrint (ASL_PARSE_OUTPUT, "DEFINITION_BLOCK (Tree Completed)->"); break; case PARSEOP_OPERATIONREGION: DbgPrint (ASL_PARSE_OUTPUT, "OPREGION->"); break; case PARSEOP_OR: DbgPrint (ASL_PARSE_OUTPUT, "OR->"); break; default: /* Nothing to do for other opcodes */ break; } /* Link the new node to its children */ PrevChild = NULL; FirstChild = TRUE; for (i = 0; i < NumChildren; i++) { /* Get the next child */ Child = va_arg (ap, ACPI_PARSE_OBJECT *); DbgPrint (ASL_PARSE_OUTPUT, "%p, ", Child); /* * If child is NULL, this means that an optional argument * was omitted. We must create a placeholder with a special * opcode (DEFAULT_ARG) so that the code generator will know * that it must emit the correct default for this argument */ if (!Child) { Child = TrAllocateNode (PARSEOP_DEFAULT_ARG); } /* Link first child to parent */ if (FirstChild) { FirstChild = FALSE; Op->Asl.Child = Child; } /* Point all children to parent */ Child->Asl.Parent = Op; /* Link children in a peer list */ if (PrevChild) { PrevChild->Asl.Next = Child; }; /* * This child might be a list, point all nodes in the list * to the same parent */ while (Child->Asl.Next) { Child = Child->Asl.Next; Child->Asl.Parent = Op; } PrevChild = Child; } va_end(ap); DbgPrint (ASL_PARSE_OUTPUT, "\n\n"); return (Op); } /******************************************************************************* * * FUNCTION: TrLinkChildren * * PARAMETERS: Op - An existing parse node * NumChildren - Number of children to follow * ... - A list of child nodes to link to the new * node. NumChildren long. * * RETURN: The updated (linked) node * * DESCRIPTION: Link a group of nodes to an existing parse node * ******************************************************************************/ ACPI_PARSE_OBJECT * TrLinkChildren ( ACPI_PARSE_OBJECT *Op, UINT32 NumChildren, ...) { ACPI_PARSE_OBJECT *Child; ACPI_PARSE_OBJECT *PrevChild; va_list ap; UINT32 i; BOOLEAN FirstChild; va_start (ap, NumChildren); TrSetEndLineNumber (Op); DbgPrint (ASL_PARSE_OUTPUT, "\nLinkChildren Line [%u to %u] NewParent %p Child %u Op %s ", Op->Asl.LineNumber, Op->Asl.EndLine, Op, NumChildren, UtGetOpName(Op->Asl.ParseOpcode)); switch (Op->Asl.ParseOpcode) { case PARSEOP_DEFINITIONBLOCK: RootNode = Op; DbgPrint (ASL_PARSE_OUTPUT, "DEFINITION_BLOCK (Tree Completed)->"); break; case PARSEOP_OPERATIONREGION: DbgPrint (ASL_PARSE_OUTPUT, "OPREGION->"); break; case PARSEOP_OR: DbgPrint (ASL_PARSE_OUTPUT, "OR->"); break; default: /* Nothing to do for other opcodes */ break; } /* Link the new node to it's children */ PrevChild = NULL; FirstChild = TRUE; for (i = 0; i < NumChildren; i++) { Child = va_arg (ap, ACPI_PARSE_OBJECT *); if ((Child == PrevChild) && (Child != NULL)) { AslError (ASL_WARNING, ASL_MSG_COMPILER_INTERNAL, Child, "Child node list invalid"); va_end(ap); return (Op); } DbgPrint (ASL_PARSE_OUTPUT, "%p, ", Child); /* * If child is NULL, this means that an optional argument * was omitted. We must create a placeholder with a special * opcode (DEFAULT_ARG) so that the code generator will know * that it must emit the correct default for this argument */ if (!Child) { Child = TrAllocateNode (PARSEOP_DEFAULT_ARG); } /* Link first child to parent */ if (FirstChild) { FirstChild = FALSE; Op->Asl.Child = Child; } /* Point all children to parent */ Child->Asl.Parent = Op; /* Link children in a peer list */ if (PrevChild) { PrevChild->Asl.Next = Child; }; /* * This child might be a list, point all nodes in the list * to the same parent */ while (Child->Asl.Next) { Child = Child->Asl.Next; Child->Asl.Parent = Op; } PrevChild = Child; } va_end(ap); DbgPrint (ASL_PARSE_OUTPUT, "\n\n"); return (Op); } /******************************************************************************* * * FUNCTION: TrLinkPeerNode * * PARAMETERS: Op1 - First peer * Op2 - Second peer * * RETURN: Op1 or the non-null node. * * DESCRIPTION: Link two nodes as peers. Handles cases where one peer is null. * ******************************************************************************/ ACPI_PARSE_OBJECT * TrLinkPeerNode ( ACPI_PARSE_OBJECT *Op1, ACPI_PARSE_OBJECT *Op2) { ACPI_PARSE_OBJECT *Next; DbgPrint (ASL_PARSE_OUTPUT, "\nLinkPeerNode: 1=%p (%s), 2=%p (%s)\n\n", Op1, Op1 ? UtGetOpName(Op1->Asl.ParseOpcode) : NULL, Op2, Op2 ? UtGetOpName(Op2->Asl.ParseOpcode) : NULL); if ((!Op1) && (!Op2)) { DbgPrint (ASL_PARSE_OUTPUT, "\nTwo Null nodes!\n"); return (Op1); } /* If one of the nodes is null, just return the non-null node */ if (!Op2) { return (Op1); } if (!Op1) { return (Op2); } if (Op1 == Op2) { DbgPrint (ASL_DEBUG_OUTPUT, "\n\n************* Internal error, linking node to itself %p\n\n\n", Op1); AslError (ASL_WARNING, ASL_MSG_COMPILER_INTERNAL, Op1, "Linking node to itself"); return (Op1); } Op1->Asl.Parent = Op2->Asl.Parent; /* * Op 1 may already have a peer list (such as an IF/ELSE pair), * so we must walk to the end of the list and attach the new * peer at the end */ Next = Op1; while (Next->Asl.Next) { Next = Next->Asl.Next; } Next->Asl.Next = Op2; return (Op1); } /******************************************************************************* * * FUNCTION: TrLinkPeerNodes * * PARAMETERS: NumPeers - The number of nodes in the list to follow * ... - A list of nodes to link together as peers * * RETURN: The first node in the list (head of the peer list) * * DESCRIPTION: Link together an arbitrary number of peer nodes. * ******************************************************************************/ ACPI_PARSE_OBJECT * TrLinkPeerNodes ( UINT32 NumPeers, ...) { ACPI_PARSE_OBJECT *This; ACPI_PARSE_OBJECT *Next; va_list ap; UINT32 i; ACPI_PARSE_OBJECT *Start; DbgPrint (ASL_PARSE_OUTPUT, "\nLinkPeerNodes: (%u) ", NumPeers); va_start (ap, NumPeers); This = va_arg (ap, ACPI_PARSE_OBJECT *); Start = This; /* * Link all peers */ for (i = 0; i < (NumPeers -1); i++) { DbgPrint (ASL_PARSE_OUTPUT, "%u=%p ", (i+1), This); while (This->Asl.Next) { This = This->Asl.Next; } /* Get another peer node */ Next = va_arg (ap, ACPI_PARSE_OBJECT *); if (!Next) { Next = TrAllocateNode (PARSEOP_DEFAULT_ARG); } /* link new node to the current node */ This->Asl.Next = Next; This = Next; } va_end (ap); DbgPrint (ASL_PARSE_OUTPUT,"\n\n"); return (Start); } /******************************************************************************* * * FUNCTION: TrLinkChildNode * * PARAMETERS: Op1 - Parent node * Op2 - Op to become a child * * RETURN: The parent node * * DESCRIPTION: Link two nodes together as a parent and child * ******************************************************************************/ ACPI_PARSE_OBJECT * TrLinkChildNode ( ACPI_PARSE_OBJECT *Op1, ACPI_PARSE_OBJECT *Op2) { ACPI_PARSE_OBJECT *Next; DbgPrint (ASL_PARSE_OUTPUT, "\nLinkChildNode: Parent=%p (%s), Child=%p (%s)\n\n", Op1, Op1 ? UtGetOpName(Op1->Asl.ParseOpcode): NULL, Op2, Op2 ? UtGetOpName(Op2->Asl.ParseOpcode): NULL); if (!Op1 || !Op2) { return (Op1); } Op1->Asl.Child = Op2; /* Set the child and all peers of the child to point to the parent */ Next = Op2; while (Next) { Next->Asl.Parent = Op1; Next = Next->Asl.Next; } return (Op1); } /******************************************************************************* * * FUNCTION: TrWalkParseTree * * PARAMETERS: Visitation - Type of walk * DescendingCallback - Called during tree descent * AscendingCallback - Called during tree ascent * Context - To be passed to the callbacks * * RETURN: Status from callback(s) * * DESCRIPTION: Walk the entire parse tree. * ******************************************************************************/ ACPI_STATUS TrWalkParseTree ( ACPI_PARSE_OBJECT *Op, UINT32 Visitation, ASL_WALK_CALLBACK DescendingCallback, ASL_WALK_CALLBACK AscendingCallback, void *Context) { UINT32 Level; BOOLEAN NodePreviouslyVisited; ACPI_PARSE_OBJECT *StartOp = Op; ACPI_STATUS Status; if (!RootNode) { return (AE_OK); } Level = 0; NodePreviouslyVisited = FALSE; switch (Visitation) { case ASL_WALK_VISIT_DOWNWARD: while (Op) { if (!NodePreviouslyVisited) { /* Let the callback process the node. */ Status = DescendingCallback (Op, Level, Context); if (ACPI_SUCCESS (Status)) { /* Visit children first, once */ if (Op->Asl.Child) { Level++; Op = Op->Asl.Child; continue; } } else if (Status != AE_CTRL_DEPTH) { /* Exit immediately on any error */ return (Status); } } /* Terminate walk at start op */ if (Op == StartOp) { break; } /* No more children, visit peers */ if (Op->Asl.Next) { Op = Op->Asl.Next; NodePreviouslyVisited = FALSE; } else { /* No children or peers, re-visit parent */ if (Level != 0 ) { Level--; } Op = Op->Asl.Parent; NodePreviouslyVisited = TRUE; } } break; case ASL_WALK_VISIT_UPWARD: while (Op) { /* Visit leaf node (no children) or parent node on return trip */ if ((!Op->Asl.Child) || (NodePreviouslyVisited)) { /* Let the callback process the node. */ Status = AscendingCallback (Op, Level, Context); if (ACPI_FAILURE (Status)) { return (Status); } } else { /* Visit children first, once */ Level++; Op = Op->Asl.Child; continue; } /* Terminate walk at start op */ if (Op == StartOp) { break; } /* No more children, visit peers */ if (Op->Asl.Next) { Op = Op->Asl.Next; NodePreviouslyVisited = FALSE; } else { /* No children or peers, re-visit parent */ if (Level != 0 ) { Level--; } Op = Op->Asl.Parent; NodePreviouslyVisited = TRUE; } } break; case ASL_WALK_VISIT_TWICE: while (Op) { if (NodePreviouslyVisited) { Status = AscendingCallback (Op, Level, Context); if (ACPI_FAILURE (Status)) { return (Status); } } else { /* Let the callback process the node. */ Status = DescendingCallback (Op, Level, Context); if (ACPI_SUCCESS (Status)) { /* Visit children first, once */ if (Op->Asl.Child) { Level++; Op = Op->Asl.Child; continue; } } else if (Status != AE_CTRL_DEPTH) { /* Exit immediately on any error */ return (Status); } } /* Terminate walk at start op */ if (Op == StartOp) { break; } /* No more children, visit peers */ if (Op->Asl.Next) { Op = Op->Asl.Next; NodePreviouslyVisited = FALSE; } else { /* No children or peers, re-visit parent */ if (Level != 0 ) { Level--; } Op = Op->Asl.Parent; NodePreviouslyVisited = TRUE; } } break; default: /* No other types supported */ break; } /* If we get here, the walk completed with no errors */ return (AE_OK); } src/acpica/source/compiler/asltypes.h000066400000000000000000000265211231470457100202260ustar00rootroot00000000000000/****************************************************************************** * * Module Name: asltypes.h - compiler data types and struct definitions * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #ifndef __ASLTYPES_H #define __ASLTYPES_H /******************************************************************************* * * Structure definitions * ******************************************************************************/ /* Op flags for the ACPI_PARSE_OBJECT */ #define NODE_VISITED 0x00000001 #define NODE_AML_PACKAGE 0x00000002 #define NODE_IS_TARGET 0x00000004 #define NODE_IS_RESOURCE_DESC 0x00000008 #define NODE_IS_RESOURCE_FIELD 0x00000010 #define NODE_HAS_NO_EXIT 0x00000020 #define NODE_IF_HAS_NO_EXIT 0x00000040 #define NODE_NAME_INTERNALIZED 0x00000080 #define NODE_METHOD_NO_RETVAL 0x00000100 #define NODE_METHOD_SOME_NO_RETVAL 0x00000200 #define NODE_RESULT_NOT_USED 0x00000400 #define NODE_METHOD_TYPED 0x00000800 #define NODE_UNUSED_FLAG 0x00001000 #define NODE_COMPILE_TIME_CONST 0x00002000 #define NODE_IS_TERM_ARG 0x00004000 #define NODE_WAS_ONES_OP 0x00008000 #define NODE_IS_NAME_DECLARATION 0x00010000 #define NODE_COMPILER_EMITTED 0x00020000 #define NODE_IS_DUPLICATE 0x00040000 #define NODE_IS_RESOURCE_DATA 0x00080000 #define NODE_IS_NULL_RETURN 0x00100000 /* Keeps information about individual control methods */ typedef struct asl_method_info { ACPI_PARSE_OBJECT *Op; struct asl_method_info *Next; UINT32 ValidArgTypes[ACPI_METHOD_NUM_ARGS]; UINT32 ValidReturnTypes; UINT32 NumReturnNoValue; UINT32 NumReturnWithValue; UINT8 NumArguments; UINT8 LocalInitialized[ACPI_METHOD_NUM_LOCALS]; UINT8 ArgInitialized[ACPI_METHOD_NUM_ARGS]; UINT8 HasBeenTyped; UINT8 ShouldBeSerialized; } ASL_METHOD_INFO; /* Parse tree walk info for control method analysis */ typedef struct asl_analysis_walk_info { ASL_METHOD_INFO *MethodStack; } ASL_ANALYSIS_WALK_INFO; /* An entry in the ParseOpcode to AmlOpcode mapping table */ typedef struct asl_mapping_entry { UINT32 Value; UINT32 AcpiBtype; /* Object type or return type */ UINT16 AmlOpcode; UINT8 Flags; } ASL_MAPPING_ENTRY; /* Parse tree walk info structure */ typedef struct asl_walk_info { ACPI_PARSE_OBJECT **NodePtr; UINT32 *LevelPtr; } ASL_WALK_INFO; /* File info */ typedef struct asl_file_info { FILE *Handle; char *Filename; const char *ShortDescription; const char *Description; } ASL_FILE_INFO; typedef struct asl_file_status { UINT32 Line; UINT32 Offset; } ASL_FILE_STATUS; /* * File types. Note: Any changes to this table must also be reflected * in the Gbl_Files array. */ typedef enum { ASL_FILE_STDOUT = 0, ASL_FILE_STDERR, ASL_FILE_INPUT, ASL_FILE_AML_OUTPUT, /* Don't move these first 4 file types */ ASL_FILE_SOURCE_OUTPUT, ASL_FILE_PREPROCESSOR, ASL_FILE_LISTING_OUTPUT, ASL_FILE_HEX_OUTPUT, ASL_FILE_NAMESPACE_OUTPUT, ASL_FILE_DEBUG_OUTPUT, ASL_FILE_ASM_SOURCE_OUTPUT, ASL_FILE_C_SOURCE_OUTPUT, ASL_FILE_ASM_INCLUDE_OUTPUT, ASL_FILE_C_INCLUDE_OUTPUT, ASL_FILE_C_OFFSET_OUTPUT } ASL_FILE_TYPES; #define ASL_MAX_FILE_TYPE 14 #define ASL_NUM_FILES (ASL_MAX_FILE_TYPE + 1) typedef struct asl_include_dir { char *Dir; struct asl_include_dir *Next; } ASL_INCLUDE_DIR; /* An entry in the exception list, one for each error/warning */ typedef struct asl_error_msg { UINT32 LineNumber; UINT32 LogicalLineNumber; UINT32 LogicalByteOffset; UINT32 Column; char *Message; struct asl_error_msg *Next; char *Filename; char *SourceLine; UINT32 FilenameLength; UINT8 MessageId; UINT8 Level; } ASL_ERROR_MSG; /* An entry in the listing file stack (for include files) */ typedef struct asl_listing_node { char *Filename; UINT32 LineNumber; struct asl_listing_node *Next; } ASL_LISTING_NODE; /* Callback interface for a parse tree walk */ /* * TBD - another copy of this is in adisasm.h, fix */ #ifndef ASL_WALK_CALLBACK_DEFINED typedef ACPI_STATUS (*ASL_WALK_CALLBACK) ( ACPI_PARSE_OBJECT *Op, UINT32 Level, void *Context); #define ASL_WALK_CALLBACK_DEFINED #endif typedef struct asl_event_info { UINT64 StartTime; UINT64 EndTime; char *EventName; BOOLEAN Valid; } ASL_EVENT_INFO; #endif /* __ASLTYPES_H */ src/acpica/source/compiler/aslutils.c000066400000000000000000000774401231470457100202230ustar00rootroot00000000000000/****************************************************************************** * * Module Name: aslutils -- compiler utilities * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #include "aslcompiler.h" #include "aslcompiler.y.h" #include "acdisasm.h" #include "acnamesp.h" #include "amlcode.h" #include #define _COMPONENT ACPI_COMPILER ACPI_MODULE_NAME ("aslutils") /* Local prototypes */ static void UtPadNameWithUnderscores ( char *NameSeg, char *PaddedNameSeg); static void UtAttachNameseg ( ACPI_PARSE_OBJECT *Op, char *Name); /******************************************************************************* * * FUNCTION: UtDisplaySupportedTables * * PARAMETERS: None * * RETURN: None * * DESCRIPTION: Print all supported ACPI table names. * ******************************************************************************/ #define ACPI_TABLE_HELP_FORMAT "%8u) %s %s\n" void UtDisplaySupportedTables ( void) { ACPI_DMTABLE_DATA *TableData; UINT32 i; printf ("\nACPI tables supported by iASL version %8.8X:\n" " (Compiler, Disassembler, Template Generator)\n\n", ACPI_CA_VERSION); /* Special tables */ printf (" Special tables and AML tables:\n"); printf (ACPI_TABLE_HELP_FORMAT, 1, ACPI_RSDP_NAME, "Root System Description Pointer"); printf (ACPI_TABLE_HELP_FORMAT, 2, ACPI_SIG_FACS, "Firmware ACPI Control Structure"); printf (ACPI_TABLE_HELP_FORMAT, 3, ACPI_SIG_DSDT, "Differentiated System Description Table"); printf (ACPI_TABLE_HELP_FORMAT, 4, ACPI_SIG_SSDT, "Secondary System Description Table"); /* All data tables with common table header */ printf ("\n Standard ACPI data tables:\n"); for (TableData = AcpiDmTableData, i = 5; TableData->Signature; TableData++, i++) { printf (ACPI_TABLE_HELP_FORMAT, i, TableData->Signature, TableData->Name); } } /******************************************************************************* * * FUNCTION: UtDisplayConstantOpcodes * * PARAMETERS: None * * RETURN: None * * DESCRIPTION: Print AML opcodes that can be used in constant expressions. * ******************************************************************************/ void UtDisplayConstantOpcodes ( void) { UINT32 i; printf ("Constant expression opcode information\n\n"); for (i = 0; i < sizeof (AcpiGbl_AmlOpInfo) / sizeof (ACPI_OPCODE_INFO); i++) { if (AcpiGbl_AmlOpInfo[i].Flags & AML_CONSTANT) { printf ("%s\n", AcpiGbl_AmlOpInfo[i].Name); } } } /******************************************************************************* * * FUNCTION: UtLocalCalloc * * PARAMETERS: Size - Bytes to be allocated * * RETURN: Pointer to the allocated memory. Guaranteed to be valid. * * DESCRIPTION: Allocate zero-initialized memory. Aborts the compile on an * allocation failure, on the assumption that nothing more can be * accomplished. * ******************************************************************************/ void * UtLocalCalloc ( UINT32 Size) { void *Allocated; Allocated = ACPI_ALLOCATE_ZEROED (Size); if (!Allocated) { AslCommonError (ASL_ERROR, ASL_MSG_MEMORY_ALLOCATION, Gbl_CurrentLineNumber, Gbl_LogicalLineNumber, Gbl_InputByteCount, Gbl_CurrentColumn, Gbl_Files[ASL_FILE_INPUT].Filename, NULL); CmCleanupAndExit (); exit (1); } TotalAllocations++; TotalAllocated += Size; return (Allocated); } /******************************************************************************* * * FUNCTION: UtBeginEvent * * PARAMETERS: Name - Ascii name of this event * * RETURN: Event number (integer index) * * DESCRIPTION: Saves the current time with this event * ******************************************************************************/ UINT8 UtBeginEvent ( char *Name) { if (AslGbl_NextEvent >= ASL_NUM_EVENTS) { AcpiOsPrintf ("Ran out of compiler event structs!\n"); return (AslGbl_NextEvent); } /* Init event with current (start) time */ AslGbl_Events[AslGbl_NextEvent].StartTime = AcpiOsGetTimer (); AslGbl_Events[AslGbl_NextEvent].EventName = Name; AslGbl_Events[AslGbl_NextEvent].Valid = TRUE; return (AslGbl_NextEvent++); } /******************************************************************************* * * FUNCTION: UtEndEvent * * PARAMETERS: Event - Event number (integer index) * * RETURN: None * * DESCRIPTION: Saves the current time (end time) with this event * ******************************************************************************/ void UtEndEvent ( UINT8 Event) { if (Event >= ASL_NUM_EVENTS) { return; } /* Insert end time for event */ AslGbl_Events[Event].EndTime = AcpiOsGetTimer (); } /******************************************************************************* * * FUNCTION: UtHexCharToValue * * PARAMETERS: HexChar - Hex character in Ascii * * RETURN: The binary value of the hex character * * DESCRIPTION: Perform ascii-to-hex translation * ******************************************************************************/ UINT8 UtHexCharToValue ( int HexChar) { if (HexChar <= 0x39) { return ((UINT8) (HexChar - 0x30)); } if (HexChar <= 0x46) { return ((UINT8) (HexChar - 0x37)); } return ((UINT8) (HexChar - 0x57)); } /******************************************************************************* * * FUNCTION: UtConvertByteToHex * * PARAMETERS: RawByte - Binary data * Buffer - Pointer to where the hex bytes will be * stored * * RETURN: Ascii hex byte is stored in Buffer. * * DESCRIPTION: Perform hex-to-ascii translation. The return data is prefixed * with "0x" * ******************************************************************************/ void UtConvertByteToHex ( UINT8 RawByte, UINT8 *Buffer) { Buffer[0] = '0'; Buffer[1] = 'x'; Buffer[2] = (UINT8) AslHexLookup[(RawByte >> 4) & 0xF]; Buffer[3] = (UINT8) AslHexLookup[RawByte & 0xF]; } /******************************************************************************* * * FUNCTION: UtConvertByteToAsmHex * * PARAMETERS: RawByte - Binary data * Buffer - Pointer to where the hex bytes will be * stored * * RETURN: Ascii hex byte is stored in Buffer. * * DESCRIPTION: Perform hex-to-ascii translation. The return data is prefixed * with "0x" * ******************************************************************************/ void UtConvertByteToAsmHex ( UINT8 RawByte, UINT8 *Buffer) { Buffer[0] = '0'; Buffer[1] = (UINT8) AslHexLookup[(RawByte >> 4) & 0xF]; Buffer[2] = (UINT8) AslHexLookup[RawByte & 0xF]; Buffer[3] = 'h'; } /******************************************************************************* * * FUNCTION: DbgPrint * * PARAMETERS: Type - Type of output * Fmt - Printf format string * ... - variable printf list * * RETURN: None * * DESCRIPTION: Conditional print statement. Prints to stderr only if the * debug flag is set. * ******************************************************************************/ void DbgPrint ( UINT32 Type, char *Fmt, ...) { va_list Args; if (!Gbl_DebugFlag) { return; } if ((Type == ASL_PARSE_OUTPUT) && (!(AslCompilerdebug))) { return; } va_start (Args, Fmt); (void) vfprintf (stderr, Fmt, Args); va_end (Args); return; } /******************************************************************************* * * FUNCTION: UtPrintFormattedName * * PARAMETERS: ParseOpcode - Parser keyword ID * Level - Indentation level * * RETURN: None * * DESCRIPTION: Print the ascii name of the parse opcode. * ******************************************************************************/ #define TEXT_OFFSET 10 void UtPrintFormattedName ( UINT16 ParseOpcode, UINT32 Level) { if (Level) { DbgPrint (ASL_TREE_OUTPUT, "%*s", (3 * Level), " "); } DbgPrint (ASL_TREE_OUTPUT, " %-20.20s", UtGetOpName (ParseOpcode)); if (Level < TEXT_OFFSET) { DbgPrint (ASL_TREE_OUTPUT, "%*s", (TEXT_OFFSET - Level) * 3, " "); } } /******************************************************************************* * * FUNCTION: UtSetParseOpName * * PARAMETERS: Op - Parse op to be named. * * RETURN: None * * DESCRIPTION: Insert the ascii name of the parse opcode * ******************************************************************************/ void UtSetParseOpName ( ACPI_PARSE_OBJECT *Op) { strncpy (Op->Asl.ParseOpName, UtGetOpName (Op->Asl.ParseOpcode), ACPI_MAX_PARSEOP_NAME); } /******************************************************************************* * * FUNCTION: UtDisplaySummary * * PARAMETERS: FileID - ID of outpout file * * RETURN: None * * DESCRIPTION: Display compilation statistics * ******************************************************************************/ void UtDisplaySummary ( UINT32 FileId) { UINT32 i; if (FileId != ASL_FILE_STDOUT) { /* Compiler name and version number */ FlPrintFile (FileId, "%s version %X%s [%s]\n\n", ASL_COMPILER_NAME, (UINT32) ACPI_CA_VERSION, ACPI_WIDTH, __DATE__); } /* Summary of main input and output files */ if (Gbl_FileType == ASL_INPUT_TYPE_ASCII_DATA) { FlPrintFile (FileId, "%-14s %s - %u lines, %u bytes, %u fields\n", "Table Input:", Gbl_Files[ASL_FILE_INPUT].Filename, Gbl_CurrentLineNumber, Gbl_InputByteCount, Gbl_InputFieldCount); if ((Gbl_ExceptionCount[ASL_ERROR] == 0) || (Gbl_IgnoreErrors)) { FlPrintFile (FileId, "%-14s %s - %u bytes\n", "Binary Output:", Gbl_Files[ASL_FILE_AML_OUTPUT].Filename, Gbl_TableLength); } } else { FlPrintFile (FileId, "%-14s %s - %u lines, %u bytes, %u keywords\n", "ASL Input:", Gbl_Files[ASL_FILE_INPUT].Filename, Gbl_CurrentLineNumber, Gbl_InputByteCount, TotalKeywords); /* AML summary */ if ((Gbl_ExceptionCount[ASL_ERROR] == 0) || (Gbl_IgnoreErrors)) { FlPrintFile (FileId, "%-14s %s - %u bytes, %u named objects, %u executable opcodes\n", "AML Output:", Gbl_Files[ASL_FILE_AML_OUTPUT].Filename, Gbl_TableLength, TotalNamedObjects, TotalExecutableOpcodes); } } /* Display summary of any optional files */ for (i = ASL_FILE_SOURCE_OUTPUT; i <= ASL_MAX_FILE_TYPE; i++) { if (!Gbl_Files[i].Filename || !Gbl_Files[i].Handle) { continue; } /* .SRC is a temp file unless specifically requested */ if ((i == ASL_FILE_SOURCE_OUTPUT) && (!Gbl_SourceOutputFlag)) { continue; } /* .I is a temp file unless specifically requested */ if ((i == ASL_FILE_PREPROCESSOR) && (!Gbl_PreprocessorOutputFlag)) { continue; } FlPrintFile (FileId, "%14s %s - %u bytes\n", Gbl_Files[i].ShortDescription, Gbl_Files[i].Filename, FlGetFileSize (i)); } /* Error summary */ FlPrintFile (FileId, "\nCompilation complete. %u Errors, %u Warnings, %u Remarks", Gbl_ExceptionCount[ASL_ERROR], Gbl_ExceptionCount[ASL_WARNING] + Gbl_ExceptionCount[ASL_WARNING2] + Gbl_ExceptionCount[ASL_WARNING3], Gbl_ExceptionCount[ASL_REMARK]); if (Gbl_FileType != ASL_INPUT_TYPE_ASCII_DATA) { FlPrintFile (FileId, ", %u Optimizations", Gbl_ExceptionCount[ASL_OPTIMIZATION]); } FlPrintFile (FileId, "\n"); } /******************************************************************************* * * FUNCTION: UtCheckIntegerRange * * PARAMETERS: Op - Integer parse node * LowValue - Smallest allowed value * HighValue - Largest allowed value * * RETURN: Op if OK, otherwise NULL * * DESCRIPTION: Check integer for an allowable range * ******************************************************************************/ ACPI_PARSE_OBJECT * UtCheckIntegerRange ( ACPI_PARSE_OBJECT *Op, UINT32 LowValue, UINT32 HighValue) { if (!Op) { return (NULL); } if ((Op->Asl.Value.Integer < LowValue) || (Op->Asl.Value.Integer > HighValue)) { sprintf (MsgBuffer, "0x%X, allowable: 0x%X-0x%X", (UINT32) Op->Asl.Value.Integer, LowValue, HighValue); AslError (ASL_ERROR, ASL_MSG_RANGE, Op, MsgBuffer); return (NULL); } return (Op); } /******************************************************************************* * * FUNCTION: UtGetStringBuffer * * PARAMETERS: Length - Size of buffer requested * * RETURN: Pointer to the buffer. Aborts on allocation failure * * DESCRIPTION: Allocate a string buffer. Bypass the local * dynamic memory manager for performance reasons (This has a * major impact on the speed of the compiler.) * ******************************************************************************/ char * UtGetStringBuffer ( UINT32 Length) { char *Buffer; if ((Gbl_StringCacheNext + Length) >= Gbl_StringCacheLast) { Gbl_StringCacheNext = UtLocalCalloc (ASL_STRING_CACHE_SIZE + Length); Gbl_StringCacheLast = Gbl_StringCacheNext + ASL_STRING_CACHE_SIZE + Length; } Buffer = Gbl_StringCacheNext; Gbl_StringCacheNext += Length; return (Buffer); } /****************************************************************************** * * FUNCTION: UtExpandLineBuffers * * PARAMETERS: None. Updates global line buffer pointers. * * RETURN: None. Reallocates the global line buffers * * DESCRIPTION: Called if the current line buffer becomes filled. Reallocates * all global line buffers and updates Gbl_LineBufferSize. NOTE: * Also used for the initial allocation of the buffers, when * all of the buffer pointers are NULL. Initial allocations are * of size ASL_DEFAULT_LINE_BUFFER_SIZE * *****************************************************************************/ void UtExpandLineBuffers ( void) { UINT32 NewSize; /* Attempt to double the size of all line buffers */ NewSize = Gbl_LineBufferSize * 2; if (Gbl_CurrentLineBuffer) { DbgPrint (ASL_DEBUG_OUTPUT,"Increasing line buffer size from %u to %u\n", Gbl_LineBufferSize, NewSize); } Gbl_CurrentLineBuffer = realloc (Gbl_CurrentLineBuffer, NewSize); Gbl_LineBufPtr = Gbl_CurrentLineBuffer; if (!Gbl_CurrentLineBuffer) { goto ErrorExit; } Gbl_MainTokenBuffer = realloc (Gbl_MainTokenBuffer, NewSize); if (!Gbl_MainTokenBuffer) { goto ErrorExit; } Gbl_MacroTokenBuffer = realloc (Gbl_MacroTokenBuffer, NewSize); if (!Gbl_MacroTokenBuffer) { goto ErrorExit; } Gbl_ExpressionTokenBuffer = realloc (Gbl_ExpressionTokenBuffer, NewSize); if (!Gbl_ExpressionTokenBuffer) { goto ErrorExit; } Gbl_LineBufferSize = NewSize; return; /* On error above, simply issue error messages and abort, cannot continue */ ErrorExit: printf ("Could not increase line buffer size from %u to %u\n", Gbl_LineBufferSize, Gbl_LineBufferSize * 2); AslError (ASL_ERROR, ASL_MSG_BUFFER_ALLOCATION, NULL, NULL); AslAbort (); } /******************************************************************************* * * FUNCTION: UtInternalizeName * * PARAMETERS: ExternalName - Name to convert * ConvertedName - Where the converted name is returned * * RETURN: Status * * DESCRIPTION: Convert an external (ASL) name to an internal (AML) name * ******************************************************************************/ ACPI_STATUS UtInternalizeName ( char *ExternalName, char **ConvertedName) { ACPI_NAMESTRING_INFO Info; ACPI_STATUS Status; if (!ExternalName) { return (AE_OK); } /* Get the length of the new internal name */ Info.ExternalName = ExternalName; AcpiNsGetInternalNameLength (&Info); /* We need a segment to store the internal name */ Info.InternalName = UtGetStringBuffer (Info.Length); if (!Info.InternalName) { return (AE_NO_MEMORY); } /* Build the name */ Status = AcpiNsBuildInternalName (&Info); if (ACPI_FAILURE (Status)) { return (Status); } *ConvertedName = Info.InternalName; return (AE_OK); } /******************************************************************************* * * FUNCTION: UtPadNameWithUnderscores * * PARAMETERS: NameSeg - Input nameseg * PaddedNameSeg - Output padded nameseg * * RETURN: Padded nameseg. * * DESCRIPTION: Pads a NameSeg with underscores if necessary to form a full * ACPI_NAME. * ******************************************************************************/ static void UtPadNameWithUnderscores ( char *NameSeg, char *PaddedNameSeg) { UINT32 i; for (i = 0; (i < ACPI_NAME_SIZE); i++) { if (*NameSeg) { *PaddedNameSeg = *NameSeg; NameSeg++; } else { *PaddedNameSeg = '_'; } PaddedNameSeg++; } } /******************************************************************************* * * FUNCTION: UtAttachNameseg * * PARAMETERS: Op - Parent parse node * Name - Full ExternalName * * RETURN: None; Sets the NameSeg field in parent node * * DESCRIPTION: Extract the last nameseg of the ExternalName and store it * in the NameSeg field of the Op. * ******************************************************************************/ static void UtAttachNameseg ( ACPI_PARSE_OBJECT *Op, char *Name) { char *NameSeg; char PaddedNameSeg[4]; if (!Name) { return; } /* Look for the last dot in the namepath */ NameSeg = strrchr (Name, '.'); if (NameSeg) { /* Found last dot, we have also found the final nameseg */ NameSeg++; UtPadNameWithUnderscores (NameSeg, PaddedNameSeg); } else { /* No dots in the namepath, there is only a single nameseg. */ /* Handle prefixes */ while (ACPI_IS_ROOT_PREFIX (*Name) || ACPI_IS_PARENT_PREFIX (*Name)) { Name++; } /* Remaining string should be one single nameseg */ UtPadNameWithUnderscores (Name, PaddedNameSeg); } ACPI_MOVE_NAME (Op->Asl.NameSeg, PaddedNameSeg); } /******************************************************************************* * * FUNCTION: UtAttachNamepathToOwner * * PARAMETERS: Op - Parent parse node * NameOp - Node that contains the name * * RETURN: Sets the ExternalName and Namepath in the parent node * * DESCRIPTION: Store the name in two forms in the parent node: The original * (external) name, and the internalized name that is used within * the ACPI namespace manager. * ******************************************************************************/ void UtAttachNamepathToOwner ( ACPI_PARSE_OBJECT *Op, ACPI_PARSE_OBJECT *NameOp) { ACPI_STATUS Status; /* Full external path */ Op->Asl.ExternalName = NameOp->Asl.Value.String; /* Save the NameOp for possible error reporting later */ Op->Asl.ParentMethod = (void *) NameOp; /* Last nameseg of the path */ UtAttachNameseg (Op, Op->Asl.ExternalName); /* Create internalized path */ Status = UtInternalizeName (NameOp->Asl.Value.String, &Op->Asl.Namepath); if (ACPI_FAILURE (Status)) { /* TBD: abort on no memory */ } } /******************************************************************************* * * FUNCTION: UtDoConstant * * PARAMETERS: String - Hex, Octal, or Decimal string * * RETURN: Converted Integer * * DESCRIPTION: Convert a string to an integer, with error checking. * ******************************************************************************/ UINT64 UtDoConstant ( char *String) { ACPI_STATUS Status; UINT64 Converted; char ErrBuf[64]; Status = UtStrtoul64 (String, 0, &Converted); if (ACPI_FAILURE (Status)) { sprintf (ErrBuf, "%s %s\n", "Conversion error:", AcpiFormatException (Status)); AslCompilererror (ErrBuf); } return (Converted); } /* TBD: use version in ACPICA main code base? */ /******************************************************************************* * * FUNCTION: UtStrtoul64 * * PARAMETERS: String - Null terminated string * Terminater - Where a pointer to the terminating byte * is returned * Base - Radix of the string * * RETURN: Converted value * * DESCRIPTION: Convert a string into an unsigned value. * ******************************************************************************/ ACPI_STATUS UtStrtoul64 ( char *String, UINT32 Base, UINT64 *RetInteger) { UINT32 Index; UINT32 Sign; UINT64 ReturnValue = 0; ACPI_STATUS Status = AE_OK; *RetInteger = 0; switch (Base) { case 0: case 8: case 10: case 16: break; default: /* * The specified Base parameter is not in the domain of * this function: */ return (AE_BAD_PARAMETER); } /* Skip over any white space in the buffer: */ while (isspace ((int) *String) || *String == '\t') { ++String; } /* * The buffer may contain an optional plus or minus sign. * If it does, then skip over it but remember what is was: */ if (*String == '-') { Sign = NEGATIVE; ++String; } else if (*String == '+') { ++String; Sign = POSITIVE; } else { Sign = POSITIVE; } /* * If the input parameter Base is zero, then we need to * determine if it is octal, decimal, or hexadecimal: */ if (Base == 0) { if (*String == '0') { if (tolower ((int) *(++String)) == 'x') { Base = 16; ++String; } else { Base = 8; } } else { Base = 10; } } /* * For octal and hexadecimal bases, skip over the leading * 0 or 0x, if they are present. */ if (Base == 8 && *String == '0') { String++; } if (Base == 16 && *String == '0' && tolower ((int) *(++String)) == 'x') { String++; } /* Main loop: convert the string to an unsigned long */ while (*String) { if (isdigit ((int) *String)) { Index = ((UINT8) *String) - '0'; } else { Index = (UINT8) toupper ((int) *String); if (isupper ((int) Index)) { Index = Index - 'A' + 10; } else { goto ErrorExit; } } if (Index >= Base) { goto ErrorExit; } /* Check to see if value is out of range: */ if (ReturnValue > ((ACPI_UINT64_MAX - (UINT64) Index) / (UINT64) Base)) { goto ErrorExit; } else { ReturnValue *= Base; ReturnValue += Index; } ++String; } /* If a minus sign was present, then "the conversion is negated": */ if (Sign == NEGATIVE) { ReturnValue = (ACPI_UINT32_MAX - ReturnValue) + 1; } *RetInteger = ReturnValue; return (Status); ErrorExit: switch (Base) { case 8: Status = AE_BAD_OCTAL_CONSTANT; break; case 10: Status = AE_BAD_DECIMAL_CONSTANT; break; case 16: Status = AE_BAD_HEX_CONSTANT; break; default: /* Base validated above */ break; } return (Status); } src/acpica/source/compiler/asluuid.c000066400000000000000000000252511231470457100200220ustar00rootroot00000000000000/****************************************************************************** * * Module Name: asluuid-- compiler UUID support * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #include "aslcompiler.h" #define _COMPONENT ACPI_COMPILER ACPI_MODULE_NAME ("asluuid") /* * UUID support functions. * * This table is used to convert an input UUID ascii string to a 16 byte * buffer and the reverse. The table maps a UUID buffer index 0-15 to * the index within the 36-byte UUID string where the associated 2-byte * hex value can be found. * * 36-byte UUID strings are of the form: * aabbccdd-eeff-gghh-iijj-kkllmmnnoopp * Where aa-pp are one byte hex numbers, made up of two hex digits * * Note: This table is basically the inverse of the string-to-offset table * found in the ACPI spec in the description of the ToUUID macro. */ static UINT8 Gbl_MapToUuidOffset[16] = { 6,4,2,0,11,9,16,14,19,21,24,26,28,30,32,34 }; #define UUID_BUFFER_LENGTH 16 #define UUID_STRING_LENGTH 36 /* Positions for required hyphens (dashes) in UUID strings */ #define UUID_HYPHEN1_OFFSET 8 #define UUID_HYPHEN2_OFFSET 13 #define UUID_HYPHEN3_OFFSET 18 #define UUID_HYPHEN4_OFFSET 23 /******************************************************************************* * * FUNCTION: AuValiduateUuid * * PARAMETERS: InString - 36-byte formatted UUID string * * RETURN: Status * * DESCRIPTION: Check all 36 characters for correct format * ******************************************************************************/ ACPI_STATUS AuValidateUuid ( char *InString) { UINT32 i; if (!InString || (ACPI_STRLEN (InString) != UUID_STRING_LENGTH)) { return (AE_BAD_PARAMETER); } /* Check all 36 characters for correct format */ for (i = 0; i < UUID_STRING_LENGTH; i++) { /* Must have 4 hyphens (dashes) in these positions: */ if ((i == UUID_HYPHEN1_OFFSET) || (i == UUID_HYPHEN2_OFFSET) || (i == UUID_HYPHEN3_OFFSET) || (i == UUID_HYPHEN4_OFFSET)) { if (InString[i] != '-') { return (AE_BAD_PARAMETER); } } /* All other positions must contain hex digits */ else { if (!isxdigit ((int) InString[i])) { return (AE_BAD_PARAMETER); } } } return (AE_OK); } /******************************************************************************* * * FUNCTION: AuConvertStringToUuid * * PARAMETERS: InString - 36-byte formatted UUID string * UuidBuffer - 16-byte UUID buffer * * RETURN: Status * * DESCRIPTION: Convert 36-byte formatted UUID string to 16-byte UUID buffer * ******************************************************************************/ ACPI_STATUS AuConvertStringToUuid ( char *InString, char *UuidBuffer) { UINT32 i; if (!InString || !UuidBuffer) { return (AE_BAD_PARAMETER); } for (i = 0; i < UUID_BUFFER_LENGTH; i++) { UuidBuffer[i] = (char) (UtHexCharToValue (InString[Gbl_MapToUuidOffset[i]]) << 4); UuidBuffer[i] |= (char) UtHexCharToValue (InString[Gbl_MapToUuidOffset[i] + 1]); } return (AE_OK); } /******************************************************************************* * * FUNCTION: AuConvertUuidToString * * PARAMETERS: UuidBuffer - 16-byte UUID buffer * OutString - 36-byte formatted UUID string * * RETURN: Status * * DESCRIPTION: Convert 16-byte UUID buffer to 36-byte formatted UUID string * OutString must be 37 bytes to include null terminator. * ******************************************************************************/ ACPI_STATUS AuConvertUuidToString ( char *UuidBuffer, char *OutString) { UINT32 i; if (!UuidBuffer || !OutString) { return (AE_BAD_PARAMETER); } for (i = 0; i < UUID_BUFFER_LENGTH; i++) { OutString[Gbl_MapToUuidOffset[i]] = (UINT8) AslHexLookup[(UuidBuffer[i] >> 4) & 0xF]; OutString[Gbl_MapToUuidOffset[i] + 1] = (UINT8) AslHexLookup[UuidBuffer[i] & 0xF]; } /* Insert required hyphens (dashes) */ OutString[UUID_HYPHEN1_OFFSET] = OutString[UUID_HYPHEN2_OFFSET] = OutString[UUID_HYPHEN3_OFFSET] = OutString[UUID_HYPHEN4_OFFSET] = '-'; OutString[UUID_STRING_LENGTH] = 0; /* Null terminate */ return (AE_OK); } src/acpica/source/compiler/aslwalks.c000066400000000000000000000612411231470457100201740ustar00rootroot00000000000000/****************************************************************************** * * Module Name: aslwalks.c - Miscellaneous analytical parse tree walks * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #include "aslcompiler.h" #include "aslcompiler.y.h" #include "acparser.h" #include "amlcode.h" #define _COMPONENT ACPI_COMPILER ACPI_MODULE_NAME ("aslwalks") /******************************************************************************* * * FUNCTION: AnMethodTypingWalkEnd * * PARAMETERS: ASL_WALK_CALLBACK * * RETURN: Status * * DESCRIPTION: Ascending callback for typing walk. Complete the method * return analysis. Check methods for: * 1) Initialized local variables * 2) Valid arguments * 3) Return types * ******************************************************************************/ ACPI_STATUS AnMethodTypingWalkEnd ( ACPI_PARSE_OBJECT *Op, UINT32 Level, void *Context) { UINT32 ThisNodeBtype; switch (Op->Asl.ParseOpcode) { case PARSEOP_METHOD: Op->Asl.CompileFlags |= NODE_METHOD_TYPED; break; case PARSEOP_RETURN: if ((Op->Asl.Child) && (Op->Asl.Child->Asl.ParseOpcode != PARSEOP_DEFAULT_ARG)) { ThisNodeBtype = AnGetBtype (Op->Asl.Child); if ((Op->Asl.Child->Asl.ParseOpcode == PARSEOP_METHODCALL) && (ThisNodeBtype == (ACPI_UINT32_MAX -1))) { /* * The called method is untyped at this time (typically a * forward reference). * * Check for a recursive method call first. */ if (Op->Asl.ParentMethod != Op->Asl.Child->Asl.Node->Op) { /* We must type the method here */ TrWalkParseTree (Op->Asl.Child->Asl.Node->Op, ASL_WALK_VISIT_UPWARD, NULL, AnMethodTypingWalkEnd, NULL); ThisNodeBtype = AnGetBtype (Op->Asl.Child); } } /* Returns a value, save the value type */ if (Op->Asl.ParentMethod) { Op->Asl.ParentMethod->Asl.AcpiBtype |= ThisNodeBtype; } } break; default: break; } return (AE_OK); } /******************************************************************************* * * FUNCTION: AnOperandTypecheckWalkEnd * * PARAMETERS: ASL_WALK_CALLBACK * * RETURN: Status * * DESCRIPTION: Ascending callback for analysis walk. Complete method * return analysis. * ******************************************************************************/ ACPI_STATUS AnOperandTypecheckWalkEnd ( ACPI_PARSE_OBJECT *Op, UINT32 Level, void *Context) { const ACPI_OPCODE_INFO *OpInfo; UINT32 RuntimeArgTypes; UINT32 RuntimeArgTypes2; UINT32 RequiredBtypes; UINT32 ThisNodeBtype; UINT32 CommonBtypes; UINT32 OpcodeClass; ACPI_PARSE_OBJECT *ArgOp; UINT32 ArgType; switch (Op->Asl.AmlOpcode) { case AML_RAW_DATA_BYTE: case AML_RAW_DATA_WORD: case AML_RAW_DATA_DWORD: case AML_RAW_DATA_QWORD: case AML_RAW_DATA_BUFFER: case AML_RAW_DATA_CHAIN: case AML_PACKAGE_LENGTH: case AML_UNASSIGNED_OPCODE: case AML_DEFAULT_ARG_OP: /* Ignore the internal (compiler-only) AML opcodes */ return (AE_OK); default: break; } OpInfo = AcpiPsGetOpcodeInfo (Op->Asl.AmlOpcode); if (!OpInfo) { return (AE_OK); } ArgOp = Op->Asl.Child; RuntimeArgTypes = OpInfo->RuntimeArgs; OpcodeClass = OpInfo->Class; #ifdef ASL_ERROR_NAMED_OBJECT_IN_WHILE /* * Update 11/2008: In practice, we can't perform this check. A simple * analysis is not sufficient. Also, it can cause errors when compiling * disassembled code because of the way Switch operators are implemented * (a While(One) loop with a named temp variable created within.) */ /* * If we are creating a named object, check if we are within a while loop * by checking if the parent is a WHILE op. This is a simple analysis, but * probably sufficient for many cases. * * Allow Scope(), Buffer(), and Package(). */ if (((OpcodeClass == AML_CLASS_NAMED_OBJECT) && (Op->Asl.AmlOpcode != AML_SCOPE_OP)) || ((OpcodeClass == AML_CLASS_CREATE) && (OpInfo->Flags & AML_NSNODE))) { if (Op->Asl.Parent->Asl.AmlOpcode == AML_WHILE_OP) { AslError (ASL_ERROR, ASL_MSG_NAMED_OBJECT_IN_WHILE, Op, NULL); } } #endif /* * Special case for control opcodes IF/RETURN/WHILE since they * have no runtime arg list (at this time) */ switch (Op->Asl.AmlOpcode) { case AML_IF_OP: case AML_WHILE_OP: case AML_RETURN_OP: if (ArgOp->Asl.ParseOpcode == PARSEOP_METHODCALL) { /* Check for an internal method */ if (AnIsInternalMethod (ArgOp)) { return (AE_OK); } /* The lone arg is a method call, check it */ RequiredBtypes = AnMapArgTypeToBtype (ARGI_INTEGER); if (Op->Asl.AmlOpcode == AML_RETURN_OP) { RequiredBtypes = 0xFFFFFFFF; } ThisNodeBtype = AnGetBtype (ArgOp); if (ThisNodeBtype == ACPI_UINT32_MAX) { return (AE_OK); } AnCheckMethodReturnValue (Op, OpInfo, ArgOp, RequiredBtypes, ThisNodeBtype); } return (AE_OK); default: break; } /* Ignore the non-executable opcodes */ if (RuntimeArgTypes == ARGI_INVALID_OPCODE) { return (AE_OK); } switch (OpcodeClass) { case AML_CLASS_EXECUTE: case AML_CLASS_CREATE: case AML_CLASS_CONTROL: case AML_CLASS_RETURN_VALUE: /* TBD: Change class or fix typechecking for these */ if ((Op->Asl.AmlOpcode == AML_BUFFER_OP) || (Op->Asl.AmlOpcode == AML_PACKAGE_OP) || (Op->Asl.AmlOpcode == AML_VAR_PACKAGE_OP)) { break; } /* Reverse the runtime argument list */ RuntimeArgTypes2 = 0; while ((ArgType = GET_CURRENT_ARG_TYPE (RuntimeArgTypes))) { RuntimeArgTypes2 <<= ARG_TYPE_WIDTH; RuntimeArgTypes2 |= ArgType; INCREMENT_ARG_LIST (RuntimeArgTypes); } while ((ArgType = GET_CURRENT_ARG_TYPE (RuntimeArgTypes2))) { RequiredBtypes = AnMapArgTypeToBtype (ArgType); ThisNodeBtype = AnGetBtype (ArgOp); if (ThisNodeBtype == ACPI_UINT32_MAX) { goto NextArgument; } /* Examine the arg based on the required type of the arg */ switch (ArgType) { case ARGI_TARGETREF: if (ArgOp->Asl.ParseOpcode == PARSEOP_ZERO) { /* ZERO is the placeholder for "don't store result" */ ThisNodeBtype = RequiredBtypes; break; } if (ArgOp->Asl.ParseOpcode == PARSEOP_INTEGER) { /* * This is the case where an original reference to a resource * descriptor field has been replaced by an (Integer) offset. * These named fields are supported at compile-time only; * the names are not passed to the interpreter (via the AML). */ if ((ArgOp->Asl.Node->Type == ACPI_TYPE_LOCAL_RESOURCE_FIELD) || (ArgOp->Asl.Node->Type == ACPI_TYPE_LOCAL_RESOURCE)) { AslError (ASL_ERROR, ASL_MSG_RESOURCE_FIELD, ArgOp, NULL); } else { AslError (ASL_ERROR, ASL_MSG_INVALID_TYPE, ArgOp, NULL); } break; } if ((ArgOp->Asl.ParseOpcode == PARSEOP_METHODCALL) || (ArgOp->Asl.ParseOpcode == PARSEOP_DEREFOF)) { break; } ThisNodeBtype = RequiredBtypes; break; case ARGI_REFERENCE: /* References */ case ARGI_INTEGER_REF: case ARGI_OBJECT_REF: case ARGI_DEVICE_REF: switch (ArgOp->Asl.ParseOpcode) { case PARSEOP_LOCAL0: case PARSEOP_LOCAL1: case PARSEOP_LOCAL2: case PARSEOP_LOCAL3: case PARSEOP_LOCAL4: case PARSEOP_LOCAL5: case PARSEOP_LOCAL6: case PARSEOP_LOCAL7: /* TBD: implement analysis of current value (type) of the local */ /* For now, just treat any local as a typematch */ /*ThisNodeBtype = RequiredBtypes;*/ break; case PARSEOP_ARG0: case PARSEOP_ARG1: case PARSEOP_ARG2: case PARSEOP_ARG3: case PARSEOP_ARG4: case PARSEOP_ARG5: case PARSEOP_ARG6: /* Hard to analyze argument types, sow we won't */ /* For now, just treat any arg as a typematch */ /* ThisNodeBtype = RequiredBtypes; */ break; case PARSEOP_DEBUG: break; case PARSEOP_REFOF: case PARSEOP_INDEX: default: break; } break; case ARGI_INTEGER: default: break; } CommonBtypes = ThisNodeBtype & RequiredBtypes; if (ArgOp->Asl.ParseOpcode == PARSEOP_METHODCALL) { if (AnIsInternalMethod (ArgOp)) { return (AE_OK); } /* Check a method call for a valid return value */ AnCheckMethodReturnValue (Op, OpInfo, ArgOp, RequiredBtypes, ThisNodeBtype); } /* * Now check if the actual type(s) match at least one * bit to the required type */ else if (!CommonBtypes) { /* No match -- this is a type mismatch error */ AnFormatBtype (StringBuffer, ThisNodeBtype); AnFormatBtype (StringBuffer2, RequiredBtypes); sprintf (MsgBuffer, "[%s] found, %s operator requires [%s]", StringBuffer, OpInfo->Name, StringBuffer2); AslError (ASL_ERROR, ASL_MSG_INVALID_TYPE, ArgOp, MsgBuffer); } NextArgument: ArgOp = ArgOp->Asl.Next; INCREMENT_ARG_LIST (RuntimeArgTypes2); } break; default: break; } return (AE_OK); } /******************************************************************************* * * FUNCTION: AnOtherSemanticAnalysisWalkBegin * * PARAMETERS: ASL_WALK_CALLBACK * * RETURN: Status * * DESCRIPTION: Descending callback for the analysis walk. Checks for * miscellaneous issues in the code. * ******************************************************************************/ ACPI_STATUS AnOtherSemanticAnalysisWalkBegin ( ACPI_PARSE_OBJECT *Op, UINT32 Level, void *Context) { ACPI_PARSE_OBJECT *ArgNode; ACPI_PARSE_OBJECT *PrevArgNode = NULL; const ACPI_OPCODE_INFO *OpInfo; ACPI_NAMESPACE_NODE *Node; OpInfo = AcpiPsGetOpcodeInfo (Op->Asl.AmlOpcode); /* * Determine if an execution class operator actually does something by * checking if it has a target and/or the function return value is used. * (Target is optional, so a standalone statement can actually do nothing.) */ if ((OpInfo->Class == AML_CLASS_EXECUTE) && (OpInfo->Flags & AML_HAS_RETVAL) && (!AnIsResultUsed (Op))) { if (OpInfo->Flags & AML_HAS_TARGET) { /* * Find the target node, it is always the last child. If the traget * is not specified in the ASL, a default node of type Zero was * created by the parser. */ ArgNode = Op->Asl.Child; while (ArgNode->Asl.Next) { PrevArgNode = ArgNode; ArgNode = ArgNode->Asl.Next; } /* Divide() is the only weird case, it has two targets */ if (Op->Asl.AmlOpcode == AML_DIVIDE_OP) { if ((ArgNode->Asl.ParseOpcode == PARSEOP_ZERO) && (PrevArgNode) && (PrevArgNode->Asl.ParseOpcode == PARSEOP_ZERO)) { AslError (ASL_ERROR, ASL_MSG_RESULT_NOT_USED, Op, Op->Asl.ExternalName); } } else if (ArgNode->Asl.ParseOpcode == PARSEOP_ZERO) { AslError (ASL_ERROR, ASL_MSG_RESULT_NOT_USED, Op, Op->Asl.ExternalName); } } else { /* * Has no target and the result is not used. Only a couple opcodes * can have this combination. */ switch (Op->Asl.ParseOpcode) { case PARSEOP_ACQUIRE: case PARSEOP_WAIT: case PARSEOP_LOADTABLE: break; default: AslError (ASL_ERROR, ASL_MSG_RESULT_NOT_USED, Op, Op->Asl.ExternalName); break; } } } /* * Semantic checks for individual ASL operators */ switch (Op->Asl.ParseOpcode) { case PARSEOP_ACQUIRE: case PARSEOP_WAIT: /* * Emit a warning if the timeout parameter for these operators is not * ACPI_WAIT_FOREVER, and the result value from the operator is not * checked, meaning that a timeout could happen, but the code * would not know about it. */ /* First child is the namepath, 2nd child is timeout */ ArgNode = Op->Asl.Child; ArgNode = ArgNode->Asl.Next; /* * Check for the WAIT_FOREVER case - defined by the ACPI spec to be * 0xFFFF or greater */ if (((ArgNode->Asl.ParseOpcode == PARSEOP_WORDCONST) || (ArgNode->Asl.ParseOpcode == PARSEOP_INTEGER)) && (ArgNode->Asl.Value.Integer >= (UINT64) ACPI_WAIT_FOREVER)) { break; } /* * The operation could timeout. If the return value is not used * (indicates timeout occurred), issue a warning */ if (!AnIsResultUsed (Op)) { AslError (ASL_WARNING, ASL_MSG_TIMEOUT, ArgNode, Op->Asl.ExternalName); } break; case PARSEOP_CREATEFIELD: /* * Check for a zero Length (NumBits) operand. NumBits is the 3rd operand */ ArgNode = Op->Asl.Child; ArgNode = ArgNode->Asl.Next; ArgNode = ArgNode->Asl.Next; if ((ArgNode->Asl.ParseOpcode == PARSEOP_ZERO) || ((ArgNode->Asl.ParseOpcode == PARSEOP_INTEGER) && (ArgNode->Asl.Value.Integer == 0))) { AslError (ASL_ERROR, ASL_MSG_NON_ZERO, ArgNode, NULL); } break; case PARSEOP_CONNECTION: /* * Ensure that the referenced operation region has the correct SPACE_ID. * From the grammar/parser, we know the parent is a FIELD definition. */ ArgNode = Op->Asl.Parent; /* Field definition */ ArgNode = ArgNode->Asl.Child; /* First child is the OpRegion Name */ Node = ArgNode->Asl.Node; /* OpRegion namespace node */ if (!Node) { break; } ArgNode = Node->Op; /* OpRegion definition */ ArgNode = ArgNode->Asl.Child; /* First child is the OpRegion Name */ ArgNode = ArgNode->Asl.Next; /* Next peer is the SPACE_ID (what we want) */ /* * The Connection() operator is only valid for the following operation * region SpaceIds: GeneralPurposeIo and GenericSerialBus. */ if ((ArgNode->Asl.Value.Integer != ACPI_ADR_SPACE_GPIO) && (ArgNode->Asl.Value.Integer != ACPI_ADR_SPACE_GSBUS)) { AslError (ASL_ERROR, ASL_MSG_CONNECTION_INVALID, Op, NULL); } break; case PARSEOP_FIELD: /* * Ensure that fields for GeneralPurposeIo and GenericSerialBus * contain at least one Connection() operator */ ArgNode = Op->Asl.Child; /* 1st child is the OpRegion Name */ Node = ArgNode->Asl.Node; /* OpRegion namespace node */ if (!Node) { break; } ArgNode = Node->Op; /* OpRegion definition */ ArgNode = ArgNode->Asl.Child; /* First child is the OpRegion Name */ ArgNode = ArgNode->Asl.Next; /* Next peer is the SPACE_ID (what we want) */ /* We are only interested in GeneralPurposeIo and GenericSerialBus */ if ((ArgNode->Asl.Value.Integer != ACPI_ADR_SPACE_GPIO) && (ArgNode->Asl.Value.Integer != ACPI_ADR_SPACE_GSBUS)) { break; } ArgNode = Op->Asl.Child; /* 1st child is the OpRegion Name */ ArgNode = ArgNode->Asl.Next; /* AccessType */ ArgNode = ArgNode->Asl.Next; /* LockRule */ ArgNode = ArgNode->Asl.Next; /* UpdateRule */ ArgNode = ArgNode->Asl.Next; /* Start of FieldUnitList */ /* Walk the FieldUnitList */ while (ArgNode) { if (ArgNode->Asl.ParseOpcode == PARSEOP_CONNECTION) { break; } else if (ArgNode->Asl.ParseOpcode == PARSEOP_NAMESEG) { AslError (ASL_ERROR, ASL_MSG_CONNECTION_MISSING, ArgNode, NULL); break; } ArgNode = ArgNode->Asl.Next; } break; default: break; } return (AE_OK); } src/acpica/source/compiler/aslxref.c000066400000000000000000000762331231470457100200260ustar00rootroot00000000000000/****************************************************************************** * * Module Name: aslxref - Namespace cross-reference * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #include "aslcompiler.h" #include "aslcompiler.y.h" #include "acparser.h" #include "amlcode.h" #include "acnamesp.h" #include "acdispat.h" #define _COMPONENT ACPI_COMPILER ACPI_MODULE_NAME ("aslxref") /* Local prototypes */ static ACPI_STATUS XfNamespaceLocateBegin ( ACPI_PARSE_OBJECT *Op, UINT32 Level, void *Context); static ACPI_STATUS XfNamespaceLocateEnd ( ACPI_PARSE_OBJECT *Op, UINT32 Level, void *Context); static BOOLEAN XfObjectExists ( char *Name); static ACPI_STATUS XfCompareOneNamespaceObject ( ACPI_HANDLE ObjHandle, UINT32 Level, void *Context, void **ReturnValue); static void XfCheckFieldRange ( ACPI_PARSE_OBJECT *Op, UINT32 RegionBitLength, UINT32 FieldBitOffset, UINT32 FieldBitLength, UINT32 AccessBitWidth); /******************************************************************************* * * FUNCTION: XfCrossReferenceNamespace * * PARAMETERS: None * * RETURN: Status * * DESCRIPTION: Perform a cross reference check of the parse tree against the * namespace. Every named referenced within the parse tree * should be get resolved with a namespace lookup. If not, the * original reference in the ASL code is invalid -- i.e., refers * to a non-existent object. * * NOTE: The ASL "External" operator causes the name to be inserted into the * namespace so that references to the external name will be resolved * correctly here. * ******************************************************************************/ ACPI_STATUS XfCrossReferenceNamespace ( void) { ACPI_WALK_STATE *WalkState; DbgPrint (ASL_DEBUG_OUTPUT, "\nCross referencing namespace\n\n"); /* * Create a new walk state for use when looking up names * within the namespace (Passed as context to the callbacks) */ WalkState = AcpiDsCreateWalkState (0, NULL, NULL, NULL); if (!WalkState) { return (AE_NO_MEMORY); } /* Walk the entire parse tree */ TrWalkParseTree (RootNode, ASL_WALK_VISIT_TWICE, XfNamespaceLocateBegin, XfNamespaceLocateEnd, WalkState); return (AE_OK); } /******************************************************************************* * * FUNCTION: XfObjectExists * * PARAMETERS: Name - 4 char ACPI name * * RETURN: TRUE if name exists in namespace * * DESCRIPTION: Walk the namespace to find an object * ******************************************************************************/ static BOOLEAN XfObjectExists ( char *Name) { ACPI_STATUS Status; /* Walk entire namespace from the supplied root */ Status = AcpiNsWalkNamespace (ACPI_TYPE_ANY, ACPI_ROOT_OBJECT, ACPI_UINT32_MAX, FALSE, XfCompareOneNamespaceObject, NULL, Name, NULL); if (Status == AE_CTRL_TRUE) { /* At least one instance of the name was found */ return (TRUE); } return (FALSE); } /******************************************************************************* * * FUNCTION: XfCompareOneNamespaceObject * * PARAMETERS: ACPI_WALK_CALLBACK * * RETURN: Status * * DESCRIPTION: Compare name of one object. * ******************************************************************************/ static ACPI_STATUS XfCompareOneNamespaceObject ( ACPI_HANDLE ObjHandle, UINT32 Level, void *Context, void **ReturnValue) { ACPI_NAMESPACE_NODE *Node = (ACPI_NAMESPACE_NODE *) ObjHandle; /* Simply check the name */ if (*((UINT32 *) (Context)) == Node->Name.Integer) { /* Abort walk if we found one instance */ return (AE_CTRL_TRUE); } return (AE_OK); } /******************************************************************************* * * FUNCTION: XfCheckFieldRange * * PARAMETERS: RegionBitLength - Length of entire parent region * FieldBitOffset - Start of the field unit (within region) * FieldBitLength - Entire length of field unit * AccessBitWidth - Access width of the field unit * * RETURN: None * * DESCRIPTION: Check one field unit to make sure it fits in the parent * op region. * * Note: AccessBitWidth must be either 8,16,32, or 64 * ******************************************************************************/ static void XfCheckFieldRange ( ACPI_PARSE_OBJECT *Op, UINT32 RegionBitLength, UINT32 FieldBitOffset, UINT32 FieldBitLength, UINT32 AccessBitWidth) { UINT32 FieldEndBitOffset; /* * Check each field unit against the region size. The entire * field unit (start offset plus length) must fit within the * region. */ FieldEndBitOffset = FieldBitOffset + FieldBitLength; if (FieldEndBitOffset > RegionBitLength) { /* Field definition itself is beyond the end-of-region */ AslError (ASL_ERROR, ASL_MSG_FIELD_UNIT_OFFSET, Op, NULL); return; } /* * Now check that the field plus AccessWidth doesn't go beyond * the end-of-region. Assumes AccessBitWidth is a power of 2 */ FieldEndBitOffset = ACPI_ROUND_UP (FieldEndBitOffset, AccessBitWidth); if (FieldEndBitOffset > RegionBitLength) { /* Field definition combined with the access is beyond EOR */ AslError (ASL_ERROR, ASL_MSG_FIELD_UNIT_ACCESS_WIDTH, Op, NULL); } } /******************************************************************************* * * FUNCTION: XfNamespaceLocateBegin * * PARAMETERS: ASL_WALK_CALLBACK * * RETURN: Status * * DESCRIPTION: Descending callback used during cross-reference. For named * object references, attempt to locate the name in the * namespace. * * NOTE: ASL references to named fields within resource descriptors are * resolved to integer values here. Therefore, this step is an * important part of the code generation. We don't know that the * name refers to a resource descriptor until now. * ******************************************************************************/ static ACPI_STATUS XfNamespaceLocateBegin ( ACPI_PARSE_OBJECT *Op, UINT32 Level, void *Context) { ACPI_WALK_STATE *WalkState = (ACPI_WALK_STATE *) Context; ACPI_NAMESPACE_NODE *Node; ACPI_STATUS Status; ACPI_OBJECT_TYPE ObjectType; char *Path; UINT8 PassedArgs; ACPI_PARSE_OBJECT *NextOp; ACPI_PARSE_OBJECT *OwningOp; ACPI_PARSE_OBJECT *SpaceIdOp; UINT32 MinimumLength; UINT32 Offset; UINT32 FieldBitLength; UINT32 TagBitLength; UINT8 Message = 0; const ACPI_OPCODE_INFO *OpInfo; UINT32 Flags; ACPI_FUNCTION_TRACE_PTR (XfNamespaceLocateBegin, Op); /* * If this node is the actual declaration of a name * [such as the XXXX name in "Method (XXXX)"], * we are not interested in it here. We only care about names that are * references to other objects within the namespace and the parent objects * of name declarations */ if (Op->Asl.CompileFlags & NODE_IS_NAME_DECLARATION) { return_ACPI_STATUS (AE_OK); } /* We are only interested in opcodes that have an associated name */ OpInfo = AcpiPsGetOpcodeInfo (Op->Asl.AmlOpcode); if ((!(OpInfo->Flags & AML_NAMED)) && (!(OpInfo->Flags & AML_CREATE)) && (Op->Asl.ParseOpcode != PARSEOP_NAMESTRING) && (Op->Asl.ParseOpcode != PARSEOP_NAMESEG) && (Op->Asl.ParseOpcode != PARSEOP_METHODCALL)) { return_ACPI_STATUS (AE_OK); } /* * One special case: CondRefOf operator - we don't care if the name exists * or not at this point, just ignore it, the point of the operator is to * determine if the name exists at runtime. */ if ((Op->Asl.Parent) && (Op->Asl.Parent->Asl.ParseOpcode == PARSEOP_CONDREFOF)) { return_ACPI_STATUS (AE_OK); } /* * We must enable the "search-to-root" for single NameSegs, but * we have to be very careful about opening up scopes */ Flags = ACPI_NS_SEARCH_PARENT; if ((Op->Asl.ParseOpcode == PARSEOP_NAMESTRING) || (Op->Asl.ParseOpcode == PARSEOP_NAMESEG) || (Op->Asl.ParseOpcode == PARSEOP_METHODCALL)) { /* * These are name references, do not push the scope stack * for them. */ Flags |= ACPI_NS_DONT_OPEN_SCOPE; } /* Get the NamePath from the appropriate place */ if (OpInfo->Flags & AML_NAMED) { /* For nearly all NAMED operators, the name reference is the first child */ Path = Op->Asl.Child->Asl.Value.String; if (Op->Asl.AmlOpcode == AML_ALIAS_OP) { /* * ALIAS is the only oddball opcode, the name declaration * (alias name) is the second operand */ Path = Op->Asl.Child->Asl.Next->Asl.Value.String; } } else if (OpInfo->Flags & AML_CREATE) { /* Name must appear as the last parameter */ NextOp = Op->Asl.Child; while (!(NextOp->Asl.CompileFlags & NODE_IS_NAME_DECLARATION)) { NextOp = NextOp->Asl.Next; } Path = NextOp->Asl.Value.String; } else { Path = Op->Asl.Value.String; } ObjectType = AslMapNamedOpcodeToDataType (Op->Asl.AmlOpcode); ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, "Type=%s\n", AcpiUtGetTypeName (ObjectType))); /* * Lookup the name in the namespace. Name must exist at this point, or it * is an invalid reference. * * The namespace is also used as a lookup table for references to resource * descriptors and the fields within them. */ Gbl_NsLookupCount++; Status = AcpiNsLookup (WalkState->ScopeInfo, Path, ObjectType, ACPI_IMODE_EXECUTE, Flags, WalkState, &(Node)); if (ACPI_FAILURE (Status)) { if (Status == AE_NOT_FOUND) { /* * We didn't find the name reference by path -- we can qualify this * a little better before we print an error message */ if (strlen (Path) == ACPI_NAME_SIZE) { /* A simple, one-segment ACPI name */ if (XfObjectExists (Path)) { /* * There exists such a name, but we couldn't get to it * from this scope */ AslError (ASL_ERROR, ASL_MSG_NOT_REACHABLE, Op, Op->Asl.ExternalName); } else { /* The name doesn't exist, period */ AslError (ASL_ERROR, ASL_MSG_NOT_EXIST, Op, Op->Asl.ExternalName); } } else { /* Check for a fully qualified path */ if (Path[0] == AML_ROOT_PREFIX) { /* Gave full path, the object does not exist */ AslError (ASL_ERROR, ASL_MSG_NOT_EXIST, Op, Op->Asl.ExternalName); } else { /* * We can't tell whether it doesn't exist or just * can't be reached. */ AslError (ASL_ERROR, ASL_MSG_NOT_FOUND, Op, Op->Asl.ExternalName); } } Status = AE_OK; } return_ACPI_STATUS (Status); } /* Check for a reference vs. name declaration */ if (!(OpInfo->Flags & AML_NAMED) && !(OpInfo->Flags & AML_CREATE)) { /* This node has been referenced, mark it for reference check */ Node->Flags |= ANOBJ_IS_REFERENCED; } /* Attempt to optimize the NamePath */ OptOptimizeNamePath (Op, OpInfo->Flags, WalkState, Path, Node); /* * 1) Dereference an alias (A name reference that is an alias) * Aliases are not nested, the alias always points to the final object */ if ((Op->Asl.ParseOpcode != PARSEOP_ALIAS) && (Node->Type == ACPI_TYPE_LOCAL_ALIAS)) { /* This node points back to the original PARSEOP_ALIAS */ NextOp = Node->Op; /* The first child is the alias target op */ NextOp = NextOp->Asl.Child; /* That in turn points back to original target alias node */ if (NextOp->Asl.Node) { Node = NextOp->Asl.Node; } /* Else - forward reference to alias, will be resolved later */ } /* 2) Check for a reference to a resource descriptor */ if ((Node->Type == ACPI_TYPE_LOCAL_RESOURCE_FIELD) || (Node->Type == ACPI_TYPE_LOCAL_RESOURCE)) { /* * This was a reference to a field within a resource descriptor. * Extract the associated field offset (either a bit or byte * offset depending on the field type) and change the named * reference into an integer for AML code generation */ Offset = Node->Value; TagBitLength = Node->Length; /* * If a field is being created, generate the length (in bits) of * the field. Note: Opcodes other than CreateXxxField and Index * can come through here. For other opcodes, we just need to * convert the resource tag reference to an integer offset. */ switch (Op->Asl.Parent->Asl.AmlOpcode) { case AML_CREATE_FIELD_OP: /* Variable "Length" field, in bits */ /* * We know the length operand is an integer constant because * we know that it contains a reference to a resource * descriptor tag. */ FieldBitLength = (UINT32) Op->Asl.Next->Asl.Value.Integer; break; case AML_CREATE_BIT_FIELD_OP: FieldBitLength = 1; break; case AML_CREATE_BYTE_FIELD_OP: case AML_INDEX_OP: FieldBitLength = 8; break; case AML_CREATE_WORD_FIELD_OP: FieldBitLength = 16; break; case AML_CREATE_DWORD_FIELD_OP: FieldBitLength = 32; break; case AML_CREATE_QWORD_FIELD_OP: FieldBitLength = 64; break; default: FieldBitLength = 0; break; } /* Check the field length against the length of the resource tag */ if (FieldBitLength) { if (TagBitLength < FieldBitLength) { Message = ASL_MSG_TAG_SMALLER; } else if (TagBitLength > FieldBitLength) { Message = ASL_MSG_TAG_LARGER; } if (Message) { sprintf (MsgBuffer, "Size mismatch, Tag: %u bit%s, Field: %u bit%s", TagBitLength, (TagBitLength > 1) ? "s" : "", FieldBitLength, (FieldBitLength > 1) ? "s" : ""); AslError (ASL_WARNING, Message, Op, MsgBuffer); } } /* Convert the BitOffset to a ByteOffset for certain opcodes */ switch (Op->Asl.Parent->Asl.AmlOpcode) { case AML_CREATE_BYTE_FIELD_OP: case AML_CREATE_WORD_FIELD_OP: case AML_CREATE_DWORD_FIELD_OP: case AML_CREATE_QWORD_FIELD_OP: case AML_INDEX_OP: Offset = ACPI_DIV_8 (Offset); break; default: break; } /* Now convert this node to an integer whose value is the field offset */ Op->Asl.AmlLength = 0; Op->Asl.ParseOpcode = PARSEOP_INTEGER; Op->Asl.Value.Integer = (UINT64) Offset; Op->Asl.CompileFlags |= NODE_IS_RESOURCE_FIELD; OpcGenerateAmlOpcode (Op); } /* 3) Check for a method invocation */ else if ((((Op->Asl.ParseOpcode == PARSEOP_NAMESTRING) || (Op->Asl.ParseOpcode == PARSEOP_NAMESEG)) && (Node->Type == ACPI_TYPE_METHOD) && (Op->Asl.Parent) && (Op->Asl.Parent->Asl.ParseOpcode != PARSEOP_METHOD)) || (Op->Asl.ParseOpcode == PARSEOP_METHODCALL)) { /* * A reference to a method within one of these opcodes is not an * invocation of the method, it is simply a reference to the method. */ if ((Op->Asl.Parent) && ((Op->Asl.Parent->Asl.ParseOpcode == PARSEOP_REFOF) || (Op->Asl.Parent->Asl.ParseOpcode == PARSEOP_DEREFOF) || (Op->Asl.Parent->Asl.ParseOpcode == PARSEOP_OBJECTTYPE))) { return_ACPI_STATUS (AE_OK); } /* * There are two types of method invocation: * 1) Invocation with arguments -- the parser recognizes this * as a METHODCALL. * 2) Invocation with no arguments --the parser cannot determine that * this is a method invocation, therefore we have to figure it out * here. */ if (Node->Type != ACPI_TYPE_METHOD) { sprintf (MsgBuffer, "%s is a %s", Op->Asl.ExternalName, AcpiUtGetTypeName (Node->Type)); AslError (ASL_ERROR, ASL_MSG_NOT_METHOD, Op, MsgBuffer); return_ACPI_STATUS (AE_OK); } /* Save the method node in the caller's op */ Op->Asl.Node = Node; if (Op->Asl.Parent->Asl.ParseOpcode == PARSEOP_CONDREFOF) { return_ACPI_STATUS (AE_OK); } /* * This is a method invocation, with or without arguments. * Count the number of arguments, each appears as a child * under the parent node */ Op->Asl.ParseOpcode = PARSEOP_METHODCALL; UtSetParseOpName (Op); PassedArgs = 0; NextOp = Op->Asl.Child; while (NextOp) { PassedArgs++; NextOp = NextOp->Asl.Next; } if (Node->Value != ASL_EXTERNAL_METHOD) { /* * Check the parsed arguments with the number expected by the * method declaration itself */ if (PassedArgs != Node->Value) { sprintf (MsgBuffer, "%s requires %u", Op->Asl.ExternalName, Node->Value); if (PassedArgs < Node->Value) { AslError (ASL_ERROR, ASL_MSG_ARG_COUNT_LO, Op, MsgBuffer); } else { AslError (ASL_ERROR, ASL_MSG_ARG_COUNT_HI, Op, MsgBuffer); } } } } /* 4) Check for an ASL Field definition */ else if ((Op->Asl.Parent) && ((Op->Asl.Parent->Asl.ParseOpcode == PARSEOP_FIELD) || (Op->Asl.Parent->Asl.ParseOpcode == PARSEOP_BANKFIELD))) { /* * Offset checking for fields. If the parent operation region has a * constant length (known at compile time), we can check fields * defined in that region against the region length. This will catch * fields and field units that cannot possibly fit within the region. * * Note: Index fields do not directly reference an operation region, * thus they are not included in this check. */ if (Op == Op->Asl.Parent->Asl.Child) { /* * This is the first child of the field node, which is * the name of the region. Get the parse node for the * region -- which contains the length of the region. */ OwningOp = Node->Op; Op->Asl.Parent->Asl.ExtraValue = ACPI_MUL_8 ((UINT32) OwningOp->Asl.Value.Integer); /* Examine the field access width */ switch ((UINT8) Op->Asl.Parent->Asl.Value.Integer) { case AML_FIELD_ACCESS_ANY: case AML_FIELD_ACCESS_BYTE: case AML_FIELD_ACCESS_BUFFER: default: MinimumLength = 1; break; case AML_FIELD_ACCESS_WORD: MinimumLength = 2; break; case AML_FIELD_ACCESS_DWORD: MinimumLength = 4; break; case AML_FIELD_ACCESS_QWORD: MinimumLength = 8; break; } /* * Is the region at least as big as the access width? * Note: DataTableRegions have 0 length */ if (((UINT32) OwningOp->Asl.Value.Integer) && ((UINT32) OwningOp->Asl.Value.Integer < MinimumLength)) { AslError (ASL_ERROR, ASL_MSG_FIELD_ACCESS_WIDTH, Op, NULL); } /* * Check EC/CMOS/SMBUS fields to make sure that the correct * access type is used (BYTE for EC/CMOS, BUFFER for SMBUS) */ SpaceIdOp = OwningOp->Asl.Child->Asl.Next; switch ((UINT32) SpaceIdOp->Asl.Value.Integer) { case ACPI_ADR_SPACE_EC: case ACPI_ADR_SPACE_CMOS: case ACPI_ADR_SPACE_GPIO: if ((UINT8) Op->Asl.Parent->Asl.Value.Integer != AML_FIELD_ACCESS_BYTE) { AslError (ASL_ERROR, ASL_MSG_REGION_BYTE_ACCESS, Op, NULL); } break; case ACPI_ADR_SPACE_SMBUS: case ACPI_ADR_SPACE_IPMI: case ACPI_ADR_SPACE_GSBUS: if ((UINT8) Op->Asl.Parent->Asl.Value.Integer != AML_FIELD_ACCESS_BUFFER) { AslError (ASL_ERROR, ASL_MSG_REGION_BUFFER_ACCESS, Op, NULL); } break; default: /* Nothing to do for other address spaces */ break; } } else { /* * This is one element of the field list. Check to make sure * that it does not go beyond the end of the parent operation region. * * In the code below: * Op->Asl.Parent->Asl.ExtraValue - Region Length (bits) * Op->Asl.ExtraValue - Field start offset (bits) * Op->Asl.Child->Asl.Value.Integer32 - Field length (bits) * Op->Asl.Child->Asl.ExtraValue - Field access width (bits) */ if (Op->Asl.Parent->Asl.ExtraValue && Op->Asl.Child) { XfCheckFieldRange (Op, Op->Asl.Parent->Asl.ExtraValue, Op->Asl.ExtraValue, (UINT32) Op->Asl.Child->Asl.Value.Integer, Op->Asl.Child->Asl.ExtraValue); } } } Op->Asl.Node = Node; return_ACPI_STATUS (Status); } /******************************************************************************* * * FUNCTION: XfNamespaceLocateEnd * * PARAMETERS: ASL_WALK_CALLBACK * * RETURN: Status * * DESCRIPTION: Ascending callback used during cross reference. We only * need to worry about scope management here. * ******************************************************************************/ static ACPI_STATUS XfNamespaceLocateEnd ( ACPI_PARSE_OBJECT *Op, UINT32 Level, void *Context) { ACPI_WALK_STATE *WalkState = (ACPI_WALK_STATE *) Context; const ACPI_OPCODE_INFO *OpInfo; ACPI_FUNCTION_TRACE (XfNamespaceLocateEnd); /* We are only interested in opcodes that have an associated name */ OpInfo = AcpiPsGetOpcodeInfo (Op->Asl.AmlOpcode); if (!(OpInfo->Flags & AML_NAMED)) { return_ACPI_STATUS (AE_OK); } /* Not interested in name references, we did not open a scope for them */ if ((Op->Asl.ParseOpcode == PARSEOP_NAMESTRING) || (Op->Asl.ParseOpcode == PARSEOP_NAMESEG) || (Op->Asl.ParseOpcode == PARSEOP_METHODCALL)) { return_ACPI_STATUS (AE_OK); } /* Pop the scope stack if necessary */ if (AcpiNsOpensScope (AslMapNamedOpcodeToDataType (Op->Asl.AmlOpcode))) { ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, "%s: Popping scope for Op %p\n", AcpiUtGetTypeName (OpInfo->ObjectType), Op)); (void) AcpiDsScopeStackPop (WalkState); } return_ACPI_STATUS (AE_OK); } src/acpica/source/compiler/dtcompile.c000066400000000000000000000503151231470457100203330ustar00rootroot00000000000000/****************************************************************************** * * Module Name: dtcompile.c - Front-end for data table compiler * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #define __DTCOMPILE_C__ #define _DECLARE_DT_GLOBALS #include "aslcompiler.h" #include "dtcompiler.h" #define _COMPONENT DT_COMPILER ACPI_MODULE_NAME ("dtcompile") static char VersionString[9]; /* Local prototypes */ static ACPI_STATUS DtInitialize ( void); static ACPI_STATUS DtCompileDataTable ( DT_FIELD **Field); static void DtInsertCompilerIds ( DT_FIELD *FieldList); /****************************************************************************** * * FUNCTION: DtDoCompile * * PARAMETERS: None * * RETURN: Status * * DESCRIPTION: Main entry point for the data table compiler. * * Note: Assumes Gbl_Files[ASL_FILE_INPUT] is initialized and the file is * open at seek offset zero. * *****************************************************************************/ ACPI_STATUS DtDoCompile ( void) { ACPI_STATUS Status; UINT8 Event; DT_FIELD *FieldList; /* Initialize globals */ Status = DtInitialize (); if (ACPI_FAILURE (Status)) { printf ("Error during compiler initialization, 0x%X\n", Status); return (Status); } /* Preprocessor */ Event = UtBeginEvent ("Preprocess input file"); PrDoPreprocess (); UtEndEvent (Event); if (Gbl_PreprocessOnly) { return (AE_OK); } /* * Scan the input file (file is already open) and * build the parse tree */ Event = UtBeginEvent ("Scan and parse input file"); FieldList = DtScanFile (Gbl_Files[ASL_FILE_INPUT].Handle); UtEndEvent (Event); /* Did the parse tree get successfully constructed? */ if (!FieldList) { /* TBD: temporary error message. Msgs should come from function above */ DtError (ASL_ERROR, ASL_MSG_SYNTAX, NULL, "Input file does not appear to be an ASL or data table source file"); Status = AE_ERROR; goto CleanupAndExit; } Event = UtBeginEvent ("Compile parse tree"); /* * Compile the parse tree */ Status = DtCompileDataTable (&FieldList); UtEndEvent (Event); DtFreeFieldList (); if (ACPI_FAILURE (Status)) { /* TBD: temporary error message. Msgs should come from function above */ DtError (ASL_ERROR, ASL_MSG_SYNTAX, NULL, "Could not compile input file"); goto CleanupAndExit; } /* Create/open the binary output file */ Gbl_Files[ASL_FILE_AML_OUTPUT].Filename = NULL; Status = FlOpenAmlOutputFile (Gbl_OutputFilenamePrefix); if (ACPI_FAILURE (Status)) { goto CleanupAndExit; } /* Write the binary, then the optional hex file */ DtOutputBinary (Gbl_RootTable); HxDoHexOutput (); DtWriteTableToListing (); CleanupAndExit: CmCleanupAndExit (); return (Status); } /****************************************************************************** * * FUNCTION: DtInitialize * * PARAMETERS: None * * RETURN: Status * * DESCRIPTION: Initialize data table compiler globals. Enables multiple * compiles per invocation. * *****************************************************************************/ static ACPI_STATUS DtInitialize ( void) { ACPI_STATUS Status; Status = AcpiOsInitialize (); if (ACPI_FAILURE (Status)) { return (Status); } Status = AcpiUtInitGlobals (); if (ACPI_FAILURE (Status)) { return (Status); } Gbl_FieldList = NULL; Gbl_RootTable = NULL; Gbl_SubtableStack = NULL; sprintf (VersionString, "%X", (UINT32) ACPI_CA_VERSION); return (AE_OK); } /****************************************************************************** * * FUNCTION: DtInsertCompilerIds * * PARAMETERS: FieldList - Current field list pointer * * RETURN: None * * DESCRIPTION: Insert the IDs (Name, Version) of the current compiler into * the original ACPI table header. * *****************************************************************************/ static void DtInsertCompilerIds ( DT_FIELD *FieldList) { DT_FIELD *Next; UINT32 i; /* * Don't insert current compiler ID if requested. Used for compiler * debug/validation only. */ if (Gbl_UseOriginalCompilerId) { return; } /* Walk to the Compiler fields at the end of the header */ Next = FieldList; for (i = 0; i < 7; i++) { Next = Next->Next; } Next->Value = ASL_CREATOR_ID; Next->Flags = DT_FIELD_NOT_ALLOCATED; Next = Next->Next; Next->Value = VersionString; Next->Flags = DT_FIELD_NOT_ALLOCATED; } /****************************************************************************** * * FUNCTION: DtCompileDataTable * * PARAMETERS: FieldList - Current field list pointer * * RETURN: Status * * DESCRIPTION: Entry point to compile one data table * *****************************************************************************/ static ACPI_STATUS DtCompileDataTable ( DT_FIELD **FieldList) { ACPI_DMTABLE_DATA *TableData; DT_SUBTABLE *Subtable; char *Signature; ACPI_TABLE_HEADER *AcpiTableHeader; ACPI_STATUS Status; DT_FIELD *RootField = *FieldList; /* Verify that we at least have a table signature and save it */ Signature = DtGetFieldValue (*FieldList); if (!Signature) { sprintf (MsgBuffer, "Expected \"%s\"", "Signature"); DtNameError (ASL_ERROR, ASL_MSG_INVALID_FIELD_NAME, *FieldList, MsgBuffer); return (AE_ERROR); } Gbl_Signature = UtLocalCalloc (ACPI_STRLEN (Signature) + 1); strcpy (Gbl_Signature, Signature); /* * Handle tables that don't use the common ACPI table header structure. * Currently, these are the FACS and RSDP. Also check for an OEMx table, * these tables have user-defined contents. */ if (ACPI_COMPARE_NAME (Signature, ACPI_SIG_FACS)) { Status = DtCompileFacs (FieldList); if (ACPI_FAILURE (Status)) { return (Status); } DtSetTableLength (); return (Status); } else if (ACPI_VALIDATE_RSDP_SIG (Signature)) { Status = DtCompileRsdp (FieldList); return (Status); } else if (ACPI_COMPARE_NAME (Signature, ACPI_SIG_S3PT)) { Status = DtCompileS3pt (FieldList); if (ACPI_FAILURE (Status)) { return (Status); } DtSetTableLength (); return (Status); } /* * All other tables must use the common ACPI table header. Insert the * current iASL IDs (name, version), and compile the header now. */ DtInsertCompilerIds (*FieldList); Status = DtCompileTable (FieldList, AcpiDmTableInfoHeader, &Gbl_RootTable, TRUE); if (ACPI_FAILURE (Status)) { return (Status); } DtPushSubtable (Gbl_RootTable); /* Validate the signature via the ACPI table list */ TableData = AcpiDmGetTableData (Signature); if (!TableData || Gbl_CompileGeneric) { DtCompileGeneric ((void **) FieldList); goto FinishHeader; } /* Dispatch to per-table compile */ if (TableData->CmTableHandler) { /* Complex table, has a handler */ Status = TableData->CmTableHandler ((void **) FieldList); if (ACPI_FAILURE (Status)) { return (Status); } } else if (TableData->TableInfo) { /* Simple table, just walk the info table */ Subtable = NULL; Status = DtCompileTable (FieldList, TableData->TableInfo, &Subtable, TRUE); if (ACPI_FAILURE (Status)) { return (Status); } DtInsertSubtable (Gbl_RootTable, Subtable); DtPopSubtable (); } else { DtFatal (ASL_MSG_COMPILER_INTERNAL, *FieldList, "Missing table dispatch info"); return (AE_ERROR); } FinishHeader: /* Set the final table length and then the checksum */ DtSetTableLength (); AcpiTableHeader = ACPI_CAST_PTR ( ACPI_TABLE_HEADER, Gbl_RootTable->Buffer); DtSetTableChecksum (&AcpiTableHeader->Checksum); DtDumpFieldList (RootField); DtDumpSubtableList (); return (AE_OK); } /****************************************************************************** * * FUNCTION: DtCompileTable * * PARAMETERS: Field - Current field list pointer * Info - Info table for this ACPI table * RetSubtable - Compile result of table * Required - If this subtable must exist * * RETURN: Status * * DESCRIPTION: Compile a subtable * *****************************************************************************/ ACPI_STATUS DtCompileTable ( DT_FIELD **Field, ACPI_DMTABLE_INFO *Info, DT_SUBTABLE **RetSubtable, BOOLEAN Required) { DT_FIELD *LocalField; UINT32 Length; DT_SUBTABLE *Subtable; DT_SUBTABLE *InlineSubtable; UINT32 FieldLength = 0; UINT8 FieldType; UINT8 *Buffer; UINT8 *FlagBuffer = NULL; UINT32 CurrentFlagByteOffset = 0; ACPI_STATUS Status; if (!Field || !*Field) { return (AE_BAD_PARAMETER); } /* Ignore optional subtable if name does not match */ if ((Info->Flags & DT_OPTIONAL) && ACPI_STRCMP ((*Field)->Name, Info->Name)) { *RetSubtable = NULL; return (AE_OK); } Length = DtGetSubtableLength (*Field, Info); if (Length == ASL_EOF) { return (AE_ERROR); } Subtable = UtLocalCalloc (sizeof (DT_SUBTABLE)); if (Length > 0) { Subtable->Buffer = UtLocalCalloc (Length); } Subtable->Length = Length; Subtable->TotalLength = Length; Buffer = Subtable->Buffer; LocalField = *Field; /* * Main loop walks the info table for this ACPI table or subtable */ for (; Info->Name; Info++) { if (Info->Opcode == ACPI_DMT_EXTRA_TEXT) { continue; } if (!LocalField) { sprintf (MsgBuffer, "Found NULL field - Field name \"%s\" needed", Info->Name); DtFatal (ASL_MSG_COMPILER_INTERNAL, NULL, MsgBuffer); Status = AE_BAD_DATA; goto Error; } /* Maintain table offsets */ LocalField->TableOffset = Gbl_CurrentTableOffset; FieldLength = DtGetFieldLength (LocalField, Info); Gbl_CurrentTableOffset += FieldLength; FieldType = DtGetFieldType (Info); Gbl_InputFieldCount++; switch (FieldType) { case DT_FIELD_TYPE_FLAGS_INTEGER: /* * Start of the definition of a flags field. * This master flags integer starts at value zero, in preparation * to compile and insert the flag fields from the individual bits */ LocalField = LocalField->Next; *Field = LocalField; FlagBuffer = Buffer; CurrentFlagByteOffset = Info->Offset; break; case DT_FIELD_TYPE_FLAG: /* Individual Flag field, can be multiple bits */ if (FlagBuffer) { /* * We must increment the FlagBuffer when we have crossed * into the next flags byte within the flags field * of type DT_FIELD_TYPE_FLAGS_INTEGER. */ FlagBuffer += (Info->Offset - CurrentFlagByteOffset); CurrentFlagByteOffset = Info->Offset; DtCompileFlag (FlagBuffer, LocalField, Info); } else { /* TBD - this is an internal error */ } LocalField = LocalField->Next; *Field = LocalField; break; case DT_FIELD_TYPE_INLINE_SUBTABLE: /* * Recursion (one level max): compile GAS (Generic Address) * or Notify in-line subtable */ *Field = LocalField; if (Info->Opcode == ACPI_DMT_GAS) { Status = DtCompileTable (Field, AcpiDmTableInfoGas, &InlineSubtable, TRUE); } else { Status = DtCompileTable (Field, AcpiDmTableInfoHestNotify, &InlineSubtable, TRUE); } if (ACPI_FAILURE (Status)) { goto Error; } DtSetSubtableLength (InlineSubtable); ACPI_MEMCPY (Buffer, InlineSubtable->Buffer, FieldLength); ACPI_FREE (InlineSubtable->Buffer); ACPI_FREE (InlineSubtable); LocalField = *Field; break; case DT_FIELD_TYPE_LABEL: DtWriteFieldToListing (Buffer, LocalField, 0); LocalField = LocalField->Next; break; default: /* Normal case for most field types (Integer, String, etc.) */ DtCompileOneField (Buffer, LocalField, FieldLength, FieldType, Info->Flags); DtWriteFieldToListing (Buffer, LocalField, FieldLength); LocalField = LocalField->Next; if (Info->Flags & DT_LENGTH) { /* Field is an Integer that will contain a subtable length */ Subtable->LengthField = Buffer; Subtable->SizeOfLengthField = FieldLength; } break; } Buffer += FieldLength; } *Field = LocalField; *RetSubtable = Subtable; return (AE_OK); Error: ACPI_FREE (Subtable->Buffer); ACPI_FREE (Subtable); return (Status); } src/acpica/source/compiler/dtcompiler.h000066400000000000000000000426361231470457100205310ustar00rootroot00000000000000/****************************************************************************** * * Module Name: dtcompiler.h - header for data table compiler * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #define __DTCOMPILER_H__ #ifndef _DTCOMPILER #define _DTCOMPILER #include #include "acdisasm.h" #undef DT_EXTERN #ifdef _DECLARE_DT_GLOBALS #define DT_EXTERN #define DT_INIT_GLOBAL(a,b) (a)=(b) #else #define DT_EXTERN extern #define DT_INIT_GLOBAL(a,b) (a) #endif /* Types for individual fields (one per input line) */ #define DT_FIELD_TYPE_STRING 0 #define DT_FIELD_TYPE_INTEGER 1 #define DT_FIELD_TYPE_BUFFER 2 #define DT_FIELD_TYPE_PCI_PATH 3 #define DT_FIELD_TYPE_FLAG 4 #define DT_FIELD_TYPE_FLAGS_INTEGER 5 #define DT_FIELD_TYPE_INLINE_SUBTABLE 6 #define DT_FIELD_TYPE_UUID 7 #define DT_FIELD_TYPE_UNICODE 8 #define DT_FIELD_TYPE_DEVICE_PATH 9 #define DT_FIELD_TYPE_LABEL 10 /* * Structure used for each individual field within an ACPI table */ typedef struct dt_field { char *Name; /* Field name (from name : value) */ char *Value; /* Field value (from name : value) */ struct dt_field *Next; /* Next field */ struct dt_field *NextLabel; /* If field is a label, next label */ UINT32 Line; /* Line number for this field */ UINT32 ByteOffset; /* Offset in source file for field */ UINT32 NameColumn; /* Start column for field name */ UINT32 Column; /* Start column for field value */ UINT32 TableOffset;/* Binary offset within ACPI table */ UINT8 Flags; } DT_FIELD; /* Flags for above */ #define DT_FIELD_NOT_ALLOCATED 1 /* * Structure used for individual subtables within an ACPI table */ typedef struct dt_subtable { struct dt_subtable *Parent; struct dt_subtable *Child; struct dt_subtable *Peer; struct dt_subtable *StackTop; UINT8 *Buffer; UINT8 *LengthField; UINT32 Length; UINT32 TotalLength; UINT32 SizeOfLengthField; UINT16 Depth; UINT8 Flags; } DT_SUBTABLE; /* * Globals */ /* List of all field names and values from the input source */ DT_EXTERN DT_FIELD DT_INIT_GLOBAL (*Gbl_FieldList, NULL); /* List of all compiled tables and subtables */ DT_EXTERN DT_SUBTABLE DT_INIT_GLOBAL (*Gbl_RootTable, NULL); /* Stack for subtables */ DT_EXTERN DT_SUBTABLE DT_INIT_GLOBAL (*Gbl_SubtableStack, NULL); /* List for defined labels */ DT_EXTERN DT_FIELD DT_INIT_GLOBAL (*Gbl_LabelList, NULL); /* Current offset within the binary output table */ DT_EXTERN UINT32 DT_INIT_GLOBAL (Gbl_CurrentTableOffset, 0); /* dtcompiler - main module */ ACPI_STATUS DtCompileTable ( DT_FIELD **Field, ACPI_DMTABLE_INFO *Info, DT_SUBTABLE **RetSubtable, BOOLEAN Required); /* dtio - binary and text input/output */ UINT32 DtGetNextLine ( FILE *Handle); DT_FIELD * DtScanFile ( FILE *Handle); void DtOutputBinary ( DT_SUBTABLE *RootTable); void DtDumpSubtableList ( void); void DtDumpFieldList ( DT_FIELD *Field); void DtWriteFieldToListing ( UINT8 *Buffer, DT_FIELD *Field, UINT32 Length); void DtWriteTableToListing ( void); /* dtsubtable - compile subtables */ void DtCreateSubtable ( UINT8 *Buffer, UINT32 Length, DT_SUBTABLE **RetSubtable); UINT32 DtGetSubtableLength ( DT_FIELD *Field, ACPI_DMTABLE_INFO *Info); void DtSetSubtableLength ( DT_SUBTABLE *Subtable); void DtPushSubtable ( DT_SUBTABLE *Subtable); void DtPopSubtable ( void); DT_SUBTABLE * DtPeekSubtable ( void); void DtInsertSubtable ( DT_SUBTABLE *ParentTable, DT_SUBTABLE *Subtable); DT_SUBTABLE * DtGetNextSubtable ( DT_SUBTABLE *ParentTable, DT_SUBTABLE *ChildTable); DT_SUBTABLE * DtGetParentSubtable ( DT_SUBTABLE *Subtable); /* dtexpress - Integer expressions and labels */ ACPI_STATUS DtResolveIntegerExpression ( DT_FIELD *Field, UINT64 *ReturnValue); UINT64 DtDoOperator ( UINT64 LeftValue, UINT32 Operator, UINT64 RightValue); UINT64 DtResolveLabel ( char *LabelString); void DtDetectAllLabels ( DT_FIELD *FieldList); /* dtfield - Compile individual fields within a table */ void DtCompileOneField ( UINT8 *Buffer, DT_FIELD *Field, UINT32 ByteLength, UINT8 Type, UINT8 Flags); void DtCompileInteger ( UINT8 *Buffer, DT_FIELD *Field, UINT32 ByteLength, UINT8 Flags); UINT32 DtCompileBuffer ( UINT8 *Buffer, char *Value, DT_FIELD *Field, UINT32 ByteLength); void DtCompileFlag ( UINT8 *Buffer, DT_FIELD *Field, ACPI_DMTABLE_INFO *Info); /* dtparser - lex/yacc files */ UINT64 DtEvaluateExpression ( char *ExprString); int DtInitLexer ( char *String); void DtTerminateLexer ( void); char * DtGetOpName ( UINT32 ParseOpcode); /* dtutils - Miscellaneous utilities */ typedef void (*DT_WALK_CALLBACK) ( DT_SUBTABLE *Subtable, void *Context, void *ReturnValue); void DtWalkTableTree ( DT_SUBTABLE *StartTable, DT_WALK_CALLBACK UserFunction, void *Context, void *ReturnValue); void DtError ( UINT8 Level, UINT8 MessageId, DT_FIELD *FieldObject, char *ExtraMessage); void DtNameError ( UINT8 Level, UINT8 MessageId, DT_FIELD *FieldObject, char *ExtraMessage); void DtFatal ( UINT8 MessageId, DT_FIELD *FieldObject, char *ExtraMessage); ACPI_STATUS DtStrtoul64 ( char *String, UINT64 *ReturnInteger); char* DtGetFieldValue ( DT_FIELD *Field); UINT8 DtGetFieldType ( ACPI_DMTABLE_INFO *Info); UINT32 DtGetBufferLength ( char *Buffer); UINT32 DtGetFieldLength ( DT_FIELD *Field, ACPI_DMTABLE_INFO *Info); void DtSetTableChecksum ( UINT8 *ChecksumPointer); void DtSetTableLength( void); void DtFreeFieldList ( void); /* dttable - individual table compilation */ ACPI_STATUS DtCompileFacs ( DT_FIELD **PFieldList); ACPI_STATUS DtCompileRsdp ( DT_FIELD **PFieldList); ACPI_STATUS DtCompileAsf ( void **PFieldList); ACPI_STATUS DtCompileCpep ( void **PFieldList); ACPI_STATUS DtCompileCsrt ( void **PFieldList); ACPI_STATUS DtCompileDbg2 ( void **PFieldList); ACPI_STATUS DtCompileDmar ( void **PFieldList); ACPI_STATUS DtCompileEinj ( void **PFieldList); ACPI_STATUS DtCompileErst ( void **PFieldList); ACPI_STATUS DtCompileFadt ( void **PFieldList); ACPI_STATUS DtCompileFpdt ( void **PFieldList); ACPI_STATUS DtCompileHest ( void **PFieldList); ACPI_STATUS DtCompileIvrs ( void **PFieldList); ACPI_STATUS DtCompileMadt ( void **PFieldList); ACPI_STATUS DtCompileMcfg ( void **PFieldList); ACPI_STATUS DtCompileMpst ( void **PFieldList); ACPI_STATUS DtCompileMsct ( void **PFieldList); ACPI_STATUS DtCompileMtmr ( void **PFieldList); ACPI_STATUS DtCompilePmtt ( void **PFieldList); ACPI_STATUS DtCompilePcct ( void **PFieldList); ACPI_STATUS DtCompileRsdt ( void **PFieldList); ACPI_STATUS DtCompileS3pt ( DT_FIELD **PFieldList); ACPI_STATUS DtCompileSlic ( void **PFieldList); ACPI_STATUS DtCompileSlit ( void **PFieldList); ACPI_STATUS DtCompileSrat ( void **PFieldList); ACPI_STATUS DtCompileUefi ( void **PFieldList); ACPI_STATUS DtCompileVrtc ( void **PFieldList); ACPI_STATUS DtCompileWdat ( void **PFieldList); ACPI_STATUS DtCompileXsdt ( void **PFieldList); ACPI_STATUS DtCompileGeneric ( void **PFieldList); ACPI_DMTABLE_INFO * DtGetGenericTableInfo ( char *Name); /* ACPI Table templates */ extern const unsigned char TemplateAsf[]; extern const unsigned char TemplateBoot[]; extern const unsigned char TemplateBert[]; extern const unsigned char TemplateBgrt[]; extern const unsigned char TemplateCpep[]; extern const unsigned char TemplateCsrt[]; extern const unsigned char TemplateDbg2[]; extern const unsigned char TemplateDbgp[]; extern const unsigned char TemplateDmar[]; extern const unsigned char TemplateEcdt[]; extern const unsigned char TemplateEinj[]; extern const unsigned char TemplateErst[]; extern const unsigned char TemplateFadt[]; extern const unsigned char TemplateFpdt[]; extern const unsigned char TemplateGtdt[]; extern const unsigned char TemplateHest[]; extern const unsigned char TemplateHpet[]; extern const unsigned char TemplateIvrs[]; extern const unsigned char TemplateMadt[]; extern const unsigned char TemplateMcfg[]; extern const unsigned char TemplateMchi[]; extern const unsigned char TemplateMpst[]; extern const unsigned char TemplateMsct[]; extern const unsigned char TemplateMtmr[]; extern const unsigned char TemplatePcct[]; extern const unsigned char TemplatePmtt[]; extern const unsigned char TemplateRsdt[]; extern const unsigned char TemplateS3pt[]; extern const unsigned char TemplateSbst[]; extern const unsigned char TemplateSlic[]; extern const unsigned char TemplateSlit[]; extern const unsigned char TemplateSpcr[]; extern const unsigned char TemplateSpmi[]; extern const unsigned char TemplateSrat[]; extern const unsigned char TemplateTcpa[]; extern const unsigned char TemplateTpm2[]; extern const unsigned char TemplateUefi[]; extern const unsigned char TemplateVrtc[]; extern const unsigned char TemplateWaet[]; extern const unsigned char TemplateWdat[]; extern const unsigned char TemplateWddt[]; extern const unsigned char TemplateWdrt[]; extern const unsigned char TemplateXsdt[]; #endif src/acpica/source/compiler/dtexpress.c000066400000000000000000000354561231470457100204050ustar00rootroot00000000000000/****************************************************************************** * * Module Name: dtexpress.c - Support for integer expressions and labels * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #define __DTEXPRESS_C__ #include "aslcompiler.h" #include "dtcompiler.h" #include "dtparser.y.h" #define _COMPONENT DT_COMPILER ACPI_MODULE_NAME ("dtexpress") /* Local prototypes */ static void DtInsertLabelField ( DT_FIELD *Field); static DT_FIELD * DtLookupLabel ( char *Name); /* Global used for errors during parse and related functions */ DT_FIELD *Gbl_CurrentField; /****************************************************************************** * * FUNCTION: DtResolveIntegerExpression * * PARAMETERS: Field - Field object with Integer expression * ReturnValue - Where the integer is returned * * RETURN: Status, and the resolved 64-bit integer value * * DESCRIPTION: Resolve an integer expression to a single value. Supports * both integer constants and labels. * *****************************************************************************/ ACPI_STATUS DtResolveIntegerExpression ( DT_FIELD *Field, UINT64 *ReturnValue) { UINT64 Result; DbgPrint (ASL_DEBUG_OUTPUT, "Full Integer expression: %s\n", Field->Value); Gbl_CurrentField = Field; Result = DtEvaluateExpression (Field->Value); *ReturnValue = Result; return (AE_OK); } /****************************************************************************** * * FUNCTION: DtDoOperator * * PARAMETERS: LeftValue - First 64-bit operand * Operator - Parse token for the operator (EXPOP_*) * RightValue - Second 64-bit operand * * RETURN: 64-bit result of the requested operation * * DESCRIPTION: Perform the various 64-bit integer math functions * *****************************************************************************/ UINT64 DtDoOperator ( UINT64 LeftValue, UINT32 Operator, UINT64 RightValue) { UINT64 Result; /* Perform the requested operation */ switch (Operator) { case EXPOP_ONES_COMPLIMENT: Result = ~RightValue; break; case EXPOP_LOGICAL_NOT: Result = !RightValue; break; case EXPOP_MULTIPLY: Result = LeftValue * RightValue; break; case EXPOP_DIVIDE: if (!RightValue) { DtError (ASL_ERROR, ASL_MSG_DIVIDE_BY_ZERO, Gbl_CurrentField, NULL); return (0); } Result = LeftValue / RightValue; break; case EXPOP_MODULO: if (!RightValue) { DtError (ASL_ERROR, ASL_MSG_DIVIDE_BY_ZERO, Gbl_CurrentField, NULL); return (0); } Result = LeftValue % RightValue; break; case EXPOP_ADD: Result = LeftValue + RightValue; break; case EXPOP_SUBTRACT: Result = LeftValue - RightValue; break; case EXPOP_SHIFT_RIGHT: Result = LeftValue >> RightValue; break; case EXPOP_SHIFT_LEFT: Result = LeftValue << RightValue; break; case EXPOP_LESS: Result = LeftValue < RightValue; break; case EXPOP_GREATER: Result = LeftValue > RightValue; break; case EXPOP_LESS_EQUAL: Result = LeftValue <= RightValue; break; case EXPOP_GREATER_EQUAL: Result = LeftValue >= RightValue; break; case EXPOP_EQUAL: Result = LeftValue == RightValue; break; case EXPOP_NOT_EQUAL: Result = LeftValue != RightValue; break; case EXPOP_AND: Result = LeftValue & RightValue; break; case EXPOP_XOR: Result = LeftValue ^ RightValue; break; case EXPOP_OR: Result = LeftValue | RightValue; break; case EXPOP_LOGICAL_AND: Result = LeftValue && RightValue; break; case EXPOP_LOGICAL_OR: Result = LeftValue || RightValue; break; default: /* Unknown operator */ DtFatal (ASL_MSG_INVALID_EXPRESSION, Gbl_CurrentField, NULL); return (0); } DbgPrint (ASL_DEBUG_OUTPUT, "IntegerEval: (%8.8X%8.8X %s %8.8X%8.8X) = %8.8X%8.8X\n", ACPI_FORMAT_UINT64 (LeftValue), DtGetOpName (Operator), ACPI_FORMAT_UINT64 (RightValue), ACPI_FORMAT_UINT64 (Result)); return (Result); } /****************************************************************************** * * FUNCTION: DtResolveLabel * * PARAMETERS: LabelString - Contains the label * * RETURN: Table offset associated with the label * * DESCRIPTION: Lookup a lable and return its value. * *****************************************************************************/ UINT64 DtResolveLabel ( char *LabelString) { DT_FIELD *LabelField; DbgPrint (ASL_DEBUG_OUTPUT, "Resolve Label: %s\n", LabelString); /* Resolve a label reference to an integer (table offset) */ if (*LabelString != '$') { return (0); } LabelField = DtLookupLabel (LabelString); if (!LabelField) { DtError (ASL_ERROR, ASL_MSG_UNKNOWN_LABEL, Gbl_CurrentField, LabelString); return (0); } /* All we need from the label is the offset in the table */ DbgPrint (ASL_DEBUG_OUTPUT, "Resolved Label: 0x%8.8X\n", LabelField->TableOffset); return (LabelField->TableOffset); } /****************************************************************************** * * FUNCTION: DtDetectAllLabels * * PARAMETERS: FieldList - Field object at start of generic list * * RETURN: None * * DESCRIPTION: Detect all labels in a list of "generic" opcodes (such as * a UEFI table.) and insert them into the global label list. * *****************************************************************************/ void DtDetectAllLabels ( DT_FIELD *FieldList) { ACPI_DMTABLE_INFO *Info; DT_FIELD *GenericField; UINT32 TableOffset; TableOffset = Gbl_CurrentTableOffset; GenericField = FieldList; /* * Process all "Label:" fields within the parse tree. We need * to know the offsets for all labels before we can compile * the parse tree in order to handle forward references. Traverse * tree and get/set all field lengths of all operators in order to * determine the label offsets. */ while (GenericField) { Info = DtGetGenericTableInfo (GenericField->Name); if (Info) { /* Maintain table offsets */ GenericField->TableOffset = TableOffset; TableOffset += DtGetFieldLength (GenericField, Info); /* Insert all labels in the global label list */ if (Info->Opcode == ACPI_DMT_LABEL) { DtInsertLabelField (GenericField); } } GenericField = GenericField->Next; } } /****************************************************************************** * * FUNCTION: DtInsertLabelField * * PARAMETERS: Field - Field object with Label to be inserted * * RETURN: None * * DESCRIPTION: Insert a label field into the global label list * *****************************************************************************/ static void DtInsertLabelField ( DT_FIELD *Field) { DbgPrint (ASL_DEBUG_OUTPUT, "DtInsertLabelField: Found Label : %s at output table offset %X\n", Field->Value, Field->TableOffset); Field->NextLabel = Gbl_LabelList; Gbl_LabelList = Field; } /****************************************************************************** * * FUNCTION: DtLookupLabel * * PARAMETERS: Name - Label to be resolved * * RETURN: Field object associated with the label * * DESCRIPTION: Lookup a label in the global label list. Used during the * resolution of integer expressions. * *****************************************************************************/ static DT_FIELD * DtLookupLabel ( char *Name) { DT_FIELD *LabelField; /* Skip a leading $ */ if (*Name == '$') { Name++; } /* Search global list */ LabelField = Gbl_LabelList; while (LabelField) { if (!ACPI_STRCMP (Name, LabelField->Value)) { return (LabelField); } LabelField = LabelField->NextLabel; } return (NULL); } src/acpica/source/compiler/dtfield.c000066400000000000000000000467011231470457100177720ustar00rootroot00000000000000/****************************************************************************** * * Module Name: dtfield.c - Code generation for individual source fields * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #define __DTFIELD_C__ #include "aslcompiler.h" #include "dtcompiler.h" #define _COMPONENT DT_COMPILER ACPI_MODULE_NAME ("dtfield") /* Local prototypes */ static void DtCompileString ( UINT8 *Buffer, DT_FIELD *Field, UINT32 ByteLength); static void DtCompileUnicode ( UINT8 *Buffer, DT_FIELD *Field, UINT32 ByteLength); static ACPI_STATUS DtCompileUuid ( UINT8 *Buffer, DT_FIELD *Field, UINT32 ByteLength); static char * DtNormalizeBuffer ( char *Buffer, UINT32 *Count); /****************************************************************************** * * FUNCTION: DtCompileOneField * * PARAMETERS: Buffer - Output buffer * Field - Field to be compiled * ByteLength - Byte length of the field * Type - Field type * * RETURN: None * * DESCRIPTION: Compile a field value to binary * *****************************************************************************/ void DtCompileOneField ( UINT8 *Buffer, DT_FIELD *Field, UINT32 ByteLength, UINT8 Type, UINT8 Flags) { ACPI_STATUS Status; switch (Type) { case DT_FIELD_TYPE_INTEGER: DtCompileInteger (Buffer, Field, ByteLength, Flags); break; case DT_FIELD_TYPE_STRING: DtCompileString (Buffer, Field, ByteLength); break; case DT_FIELD_TYPE_UUID: Status = DtCompileUuid (Buffer, Field, ByteLength); if (ACPI_SUCCESS (Status)) { break; } /* Fall through. */ case DT_FIELD_TYPE_BUFFER: DtCompileBuffer (Buffer, Field->Value, Field, ByteLength); break; case DT_FIELD_TYPE_UNICODE: DtCompileUnicode (Buffer, Field, ByteLength); break; case DT_FIELD_TYPE_DEVICE_PATH: break; default: DtFatal (ASL_MSG_COMPILER_INTERNAL, Field, "Invalid field type"); break; } } /****************************************************************************** * * FUNCTION: DtCompileString * * PARAMETERS: Buffer - Output buffer * Field - String to be copied to buffer * ByteLength - Maximum length of string * * RETURN: None * * DESCRIPTION: Copy string to the buffer * *****************************************************************************/ static void DtCompileString ( UINT8 *Buffer, DT_FIELD *Field, UINT32 ByteLength) { UINT32 Length; Length = ACPI_STRLEN (Field->Value); /* Check if the string is too long for the field */ if (Length > ByteLength) { sprintf (MsgBuffer, "Maximum %u characters", ByteLength); DtError (ASL_ERROR, ASL_MSG_STRING_LENGTH, Field, MsgBuffer); Length = ByteLength; } ACPI_MEMCPY (Buffer, Field->Value, Length); } /****************************************************************************** * * FUNCTION: DtCompileUnicode * * PARAMETERS: Buffer - Output buffer * Field - String to be copied to buffer * ByteLength - Maximum length of string * * RETURN: None * * DESCRIPTION: Convert ASCII string to Unicode string * * Note: The Unicode string is 16 bits per character, no leading signature, * with a 16-bit terminating NULL. * *****************************************************************************/ static void DtCompileUnicode ( UINT8 *Buffer, DT_FIELD *Field, UINT32 ByteLength) { UINT32 Count; UINT32 i; char *AsciiString; UINT16 *UnicodeString; AsciiString = Field->Value; UnicodeString = (UINT16 *) Buffer; Count = ACPI_STRLEN (AsciiString) + 1; /* Convert to Unicode string (including null terminator) */ for (i = 0; i < Count; i++) { UnicodeString[i] = (UINT16) AsciiString[i]; } } /******************************************************************************* * * FUNCTION: DtCompileUuid * * PARAMETERS: Buffer - Output buffer * Field - String to be copied to buffer * ByteLength - Maximum length of string * * RETURN: None * * DESCRIPTION: Convert UUID string to 16-byte buffer * ******************************************************************************/ static ACPI_STATUS DtCompileUuid ( UINT8 *Buffer, DT_FIELD *Field, UINT32 ByteLength) { char *InString; ACPI_STATUS Status; InString = Field->Value; Status = AuValidateUuid (InString); if (ACPI_FAILURE (Status)) { sprintf (MsgBuffer, "%s", Field->Value); DtNameError (ASL_ERROR, ASL_MSG_INVALID_UUID, Field, MsgBuffer); } else { Status = AuConvertStringToUuid (InString, (char *) Buffer); } return (Status); } /****************************************************************************** * * FUNCTION: DtCompileInteger * * PARAMETERS: Buffer - Output buffer * Field - Field obj with Integer to be compiled * ByteLength - Byte length of the integer * Flags - Additional compile info * * RETURN: None * * DESCRIPTION: Compile an integer. Supports integer expressions with C-style * operators. * *****************************************************************************/ void DtCompileInteger ( UINT8 *Buffer, DT_FIELD *Field, UINT32 ByteLength, UINT8 Flags) { UINT64 Value; UINT64 MaxValue; ACPI_STATUS Status; /* Output buffer byte length must be in range 1-8 */ if ((ByteLength > 8) || (ByteLength == 0)) { DtFatal (ASL_MSG_COMPILER_INTERNAL, Field, "Invalid internal Byte length"); return; } /* Resolve integer expression to a single integer value */ Status = DtResolveIntegerExpression (Field, &Value); if (ACPI_FAILURE (Status)) { return; } /* * Ensure that reserved fields are set properly. Note: uses * the DT_NON_ZERO flag to indicate that the reserved value * must be exactly one. Otherwise, the value must be zero. * This is sufficient for now. */ /* TBD: Should use a flag rather than compare "Reserved" */ if (!ACPI_STRCMP (Field->Name, "Reserved")) { if (Flags & DT_NON_ZERO) { if (Value != 1) { DtError (ASL_WARNING, ASL_MSG_RESERVED_VALUE, Field, "Must be one, setting to one"); Value = 1; } } else if (Value != 0) { DtError (ASL_WARNING, ASL_MSG_RESERVED_VALUE, Field, "Must be zero, setting to zero"); Value = 0; } } /* Check if the value must be non-zero */ else if ((Flags & DT_NON_ZERO) && (Value == 0)) { DtError (ASL_ERROR, ASL_MSG_ZERO_VALUE, Field, NULL); } /* * Generate the maximum value for the data type (ByteLength) * Note: construct chosen for maximum portability */ MaxValue = ((UINT64) (-1)) >> (64 - (ByteLength * 8)); /* Validate that the input value is within range of the target */ if (Value > MaxValue) { sprintf (MsgBuffer, "%8.8X%8.8X - max %u bytes", ACPI_FORMAT_UINT64 (Value), ByteLength); DtError (ASL_ERROR, ASL_MSG_INTEGER_SIZE, Field, MsgBuffer); } ACPI_MEMCPY (Buffer, &Value, ByteLength); return; } /****************************************************************************** * * FUNCTION: DtNormalizeBuffer * * PARAMETERS: Buffer - Input buffer * Count - Output the count of hex number in * the Buffer * * RETURN: The normalized buffer, freed by caller * * DESCRIPTION: [1A,2B,3C,4D] or 1A, 2B, 3C, 4D will be normalized * to 1A 2B 3C 4D * *****************************************************************************/ static char * DtNormalizeBuffer ( char *Buffer, UINT32 *Count) { char *NewBuffer; char *TmpBuffer; UINT32 BufferCount = 0; BOOLEAN Separator = TRUE; char c; NewBuffer = UtLocalCalloc (ACPI_STRLEN (Buffer) + 1); TmpBuffer = NewBuffer; while ((c = *Buffer++)) { switch (c) { /* Valid separators */ case '[': case ']': case ' ': case ',': Separator = TRUE; break; default: if (Separator) { /* Insert blank as the standard separator */ if (NewBuffer[0]) { *TmpBuffer++ = ' '; BufferCount++; } Separator = FALSE; } *TmpBuffer++ = c; break; } } *Count = BufferCount + 1; return (NewBuffer); } /****************************************************************************** * * FUNCTION: DtCompileBuffer * * PARAMETERS: Buffer - Output buffer * StringValue - Integer list to be compiled * Field - Current field object * ByteLength - Byte length of the integer list * * RETURN: Count of remaining data in the input list * * DESCRIPTION: Compile and pack an integer list, for example * "AA 1F 20 3B" ==> Buffer[] = {0xAA,0x1F,0x20,0x3B} * *****************************************************************************/ UINT32 DtCompileBuffer ( UINT8 *Buffer, char *StringValue, DT_FIELD *Field, UINT32 ByteLength) { ACPI_STATUS Status; char Hex[3]; UINT64 Value; UINT32 i; UINT32 Count; /* Allow several different types of value separators */ StringValue = DtNormalizeBuffer (StringValue, &Count); Hex[2] = 0; for (i = 0; i < Count; i++) { /* Each element of StringValue is three chars */ Hex[0] = StringValue[(3 * i)]; Hex[1] = StringValue[(3 * i) + 1]; /* Convert one hex byte */ Value = 0; Status = DtStrtoul64 (Hex, &Value); if (ACPI_FAILURE (Status)) { DtError (ASL_ERROR, ASL_MSG_BUFFER_ELEMENT, Field, MsgBuffer); goto Exit; } Buffer[i] = (UINT8) Value; } Exit: ACPI_FREE (StringValue); return (ByteLength - Count); } /****************************************************************************** * * FUNCTION: DtCompileFlag * * PARAMETERS: Buffer - Output buffer * Field - Field to be compiled * Info - Flag info * * RETURN: * * DESCRIPTION: Compile a flag * *****************************************************************************/ void DtCompileFlag ( UINT8 *Buffer, DT_FIELD *Field, ACPI_DMTABLE_INFO *Info) { UINT64 Value = 0; UINT32 BitLength = 1; UINT8 BitPosition = 0; ACPI_STATUS Status; Status = DtStrtoul64 (Field->Value, &Value); if (ACPI_FAILURE (Status)) { DtError (ASL_ERROR, ASL_MSG_INVALID_HEX_INTEGER, Field, NULL); } switch (Info->Opcode) { case ACPI_DMT_FLAG0: case ACPI_DMT_FLAG1: case ACPI_DMT_FLAG2: case ACPI_DMT_FLAG3: case ACPI_DMT_FLAG4: case ACPI_DMT_FLAG5: case ACPI_DMT_FLAG6: case ACPI_DMT_FLAG7: BitPosition = Info->Opcode; BitLength = 1; break; case ACPI_DMT_FLAGS0: BitPosition = 0; BitLength = 2; break; case ACPI_DMT_FLAGS1: BitPosition = 1; BitLength = 2; break; case ACPI_DMT_FLAGS2: BitPosition = 2; BitLength = 2; break; case ACPI_DMT_FLAGS4: BitPosition = 4; BitLength = 2; break; default: DtFatal (ASL_MSG_COMPILER_INTERNAL, Field, "Invalid flag opcode"); break; } /* Check range of the input flag value */ if (Value >= ((UINT64) 1 << BitLength)) { sprintf (MsgBuffer, "Maximum %u bit", BitLength); DtError (ASL_ERROR, ASL_MSG_FLAG_VALUE, Field, MsgBuffer); Value = 0; } *Buffer |= (UINT8) (Value << BitPosition); } src/acpica/source/compiler/dtio.c000066400000000000000000001002101231470457100173000ustar00rootroot00000000000000/****************************************************************************** * * Module Name: dtio.c - File I/O support for data table compiler * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #define __DTIO_C__ #include "aslcompiler.h" #include "dtcompiler.h" #include "acapps.h" #define _COMPONENT DT_COMPILER ACPI_MODULE_NAME ("dtio") /* Local prototypes */ static char * DtTrim ( char *String); static void DtLinkField ( DT_FIELD *Field); static ACPI_STATUS DtParseLine ( char *LineBuffer, UINT32 Line, UINT32 Offset); static void DtWriteBinary ( DT_SUBTABLE *Subtable, void *Context, void *ReturnValue); static void DtDumpBuffer ( UINT32 FileId, UINT8 *Buffer, UINT32 Offset, UINT32 Length); static void DtDumpSubtableInfo ( DT_SUBTABLE *Subtable, void *Context, void *ReturnValue); static void DtDumpSubtableTree ( DT_SUBTABLE *Subtable, void *Context, void *ReturnValue); /* States for DtGetNextLine */ #define DT_NORMAL_TEXT 0 #define DT_START_QUOTED_STRING 1 #define DT_START_COMMENT 2 #define DT_SLASH_ASTERISK_COMMENT 3 #define DT_SLASH_SLASH_COMMENT 4 #define DT_END_COMMENT 5 #define DT_MERGE_LINES 6 #define DT_ESCAPE_SEQUENCE 7 static UINT32 Gbl_NextLineOffset; /****************************************************************************** * * FUNCTION: DtTrim * * PARAMETERS: String - Current source code line to trim * * RETURN: Trimmed line. Must be freed by caller. * * DESCRIPTION: Trim left and right spaces * *****************************************************************************/ static char * DtTrim ( char *String) { char *Start; char *End; char *ReturnString; ACPI_SIZE Length; /* Skip lines that start with a space */ if (!ACPI_STRCMP (String, " ")) { ReturnString = UtLocalCalloc (1); return (ReturnString); } /* Setup pointers to start and end of input string */ Start = String; End = String + ACPI_STRLEN (String) - 1; /* Find first non-whitespace character */ while ((Start <= End) && ((*Start == ' ') || (*Start == '\t'))) { Start++; } /* Find last non-space character */ while (End >= Start) { if (*End == '\r' || *End == '\n') { End--; continue; } if (*End != ' ') { break; } End--; } /* Remove any quotes around the string */ if (*Start == '\"') { Start++; } if (*End == '\"') { End--; } /* Create the trimmed return string */ Length = ACPI_PTR_DIFF (End, Start) + 1; ReturnString = UtLocalCalloc (Length + 1); if (ACPI_STRLEN (Start)) { ACPI_STRNCPY (ReturnString, Start, Length); } ReturnString[Length] = 0; return (ReturnString); } /****************************************************************************** * * FUNCTION: DtLinkField * * PARAMETERS: Field - New field object to link * * RETURN: None * * DESCRIPTION: Link one field name and value to the list * *****************************************************************************/ static void DtLinkField ( DT_FIELD *Field) { DT_FIELD *Prev; DT_FIELD *Next; Prev = Next = Gbl_FieldList; while (Next) { Prev = Next; Next = Next->Next; } if (Prev) { Prev->Next = Field; } else { Gbl_FieldList = Field; } } /****************************************************************************** * * FUNCTION: DtParseLine * * PARAMETERS: LineBuffer - Current source code line * Line - Current line number in the source * Offset - Current byte offset of the line * * RETURN: Status * * DESCRIPTION: Parse one source line * *****************************************************************************/ static ACPI_STATUS DtParseLine ( char *LineBuffer, UINT32 Line, UINT32 Offset) { char *Start; char *End; char *TmpName; char *TmpValue; char *Name; char *Value; char *Colon; UINT32 Length; DT_FIELD *Field; UINT32 Column; UINT32 NameColumn; BOOLEAN IsNullString = FALSE; if (!LineBuffer) { return (AE_OK); } /* All lines after "Raw Table Data" are ingored */ if (strstr (LineBuffer, ACPI_RAW_TABLE_DATA_HEADER)) { return (AE_NOT_FOUND); } Colon = strchr (LineBuffer, ':'); if (!Colon) { return (AE_OK); } Start = LineBuffer; End = Colon; while (Start < Colon) { if (*Start == '[') { /* Found left bracket, go to the right bracket */ while (Start < Colon && *Start != ']') { Start++; } } else if (*Start != ' ') { break; } Start++; } /* * There are two column values. One for the field name, * and one for the field value. */ Column = ACPI_PTR_DIFF (Colon, LineBuffer) + 3; NameColumn = ACPI_PTR_DIFF (Start, LineBuffer) + 1; Length = ACPI_PTR_DIFF (End, Start); TmpName = UtLocalCalloc (Length + 1); ACPI_STRNCPY (TmpName, Start, Length); Name = DtTrim (TmpName); ACPI_FREE (TmpName); Start = End = (Colon + 1); while (*End) { /* Found left quotation, go to the right quotation and break */ if (*End == '"') { End++; /* Check for an explicit null string */ if (*End == '"') { IsNullString = TRUE; } while (*End && (*End != '"')) { End++; } End++; break; } /* * Special "comment" fields at line end, ignore them. * Note: normal slash-slash and slash-asterisk comments are * stripped already by the DtGetNextLine parser. * * TBD: Perhaps DtGetNextLine should parse the following type * of comments also. */ if (*End == '[') { End--; break; } End++; } Length = ACPI_PTR_DIFF (End, Start); TmpValue = UtLocalCalloc (Length + 1); ACPI_STRNCPY (TmpValue, Start, Length); Value = DtTrim (TmpValue); ACPI_FREE (TmpValue); /* Create a new field object only if we have a valid value field */ if ((Value && *Value) || IsNullString) { Field = UtLocalCalloc (sizeof (DT_FIELD)); Field->Name = Name; Field->Value = Value; Field->Line = Line; Field->ByteOffset = Offset; Field->NameColumn = NameColumn; Field->Column = Column; DtLinkField (Field); } else /* Ignore this field, it has no valid data */ { ACPI_FREE (Name); ACPI_FREE (Value); } return (AE_OK); } /****************************************************************************** * * FUNCTION: DtGetNextLine * * PARAMETERS: Handle - Open file handle for the source file * * RETURN: Filled line buffer and offset of start-of-line (ASL_EOF on EOF) * * DESCRIPTION: Get the next valid source line. Removes all comments. * Ignores empty lines. * * Handles both slash-asterisk and slash-slash comments. * Also, quoted strings, but no escapes within. * * Line is returned in Gbl_CurrentLineBuffer. * Line number in original file is returned in Gbl_CurrentLineNumber. * *****************************************************************************/ UINT32 DtGetNextLine ( FILE *Handle) { BOOLEAN LineNotAllBlanks = FALSE; UINT32 State = DT_NORMAL_TEXT; UINT32 CurrentLineOffset; UINT32 i; int c; for (i = 0; ;) { /* * If line is too long, expand the line buffers. Also increases * Gbl_LineBufferSize. */ if (i >= Gbl_LineBufferSize) { UtExpandLineBuffers (); } c = getc (Handle); if (c == EOF) { switch (State) { case DT_START_QUOTED_STRING: case DT_SLASH_ASTERISK_COMMENT: AcpiOsPrintf ("**** EOF within comment/string %u\n", State); break; default: break; } /* Standalone EOF is OK */ if (i == 0) { return (ASL_EOF); } /* * Received an EOF in the middle of a line. Terminate the * line with a newline. The next call to this function will * return a standalone EOF. Thus, the upper parsing software * never has to deal with an EOF within a valid line (or * the last line does not get tossed on the floor.) */ c = '\n'; State = DT_NORMAL_TEXT; } switch (State) { case DT_NORMAL_TEXT: /* Normal text, insert char into line buffer */ Gbl_CurrentLineBuffer[i] = (char) c; switch (c) { case '/': State = DT_START_COMMENT; break; case '"': State = DT_START_QUOTED_STRING; LineNotAllBlanks = TRUE; i++; break; case '\\': /* * The continuation char MUST be last char on this line. * Otherwise, it will be assumed to be a valid ASL char. */ State = DT_MERGE_LINES; break; case '\n': CurrentLineOffset = Gbl_NextLineOffset; Gbl_NextLineOffset = (UINT32) ftell (Handle); Gbl_CurrentLineNumber++; /* * Exit if line is complete. Ignore empty lines (only \n) * or lines that contain nothing but blanks. */ if ((i != 0) && LineNotAllBlanks) { if ((i + 1) >= Gbl_LineBufferSize) { UtExpandLineBuffers (); } Gbl_CurrentLineBuffer[i+1] = 0; /* Terminate string */ return (CurrentLineOffset); } /* Toss this line and start a new one */ i = 0; LineNotAllBlanks = FALSE; break; default: if (c != ' ') { LineNotAllBlanks = TRUE; } i++; break; } break; case DT_START_QUOTED_STRING: /* Insert raw chars until end of quoted string */ Gbl_CurrentLineBuffer[i] = (char) c; i++; switch (c) { case '"': State = DT_NORMAL_TEXT; break; case '\\': State = DT_ESCAPE_SEQUENCE; break; case '\n': AcpiOsPrintf ("ERROR at line %u: Unterminated quoted string\n", Gbl_CurrentLineNumber++); State = DT_NORMAL_TEXT; break; default: /* Get next character */ break; } break; case DT_ESCAPE_SEQUENCE: /* Just copy the escaped character. TBD: sufficient for table compiler? */ Gbl_CurrentLineBuffer[i] = (char) c; i++; State = DT_START_QUOTED_STRING; break; case DT_START_COMMENT: /* Open comment if this character is an asterisk or slash */ switch (c) { case '*': State = DT_SLASH_ASTERISK_COMMENT; break; case '/': State = DT_SLASH_SLASH_COMMENT; break; default: /* Not a comment */ i++; /* Save the preceding slash */ if (i >= Gbl_LineBufferSize) { UtExpandLineBuffers (); } Gbl_CurrentLineBuffer[i] = (char) c; i++; State = DT_NORMAL_TEXT; break; } break; case DT_SLASH_ASTERISK_COMMENT: /* Ignore chars until an asterisk-slash is found */ switch (c) { case '\n': Gbl_NextLineOffset = (UINT32) ftell (Handle); Gbl_CurrentLineNumber++; break; case '*': State = DT_END_COMMENT; break; default: break; } break; case DT_SLASH_SLASH_COMMENT: /* Ignore chars until end-of-line */ if (c == '\n') { /* We will exit via the NORMAL_TEXT path */ ungetc (c, Handle); State = DT_NORMAL_TEXT; } break; case DT_END_COMMENT: /* End comment if this char is a slash */ switch (c) { case '/': State = DT_NORMAL_TEXT; break; case '\n': CurrentLineOffset = Gbl_NextLineOffset; Gbl_NextLineOffset = (UINT32) ftell (Handle); Gbl_CurrentLineNumber++; break; case '*': /* Consume all adjacent asterisks */ break; default: State = DT_SLASH_ASTERISK_COMMENT; break; } break; case DT_MERGE_LINES: if (c != '\n') { /* * This is not a continuation backslash, it is a normal * normal ASL backslash - for example: Scope(\_SB_) */ i++; /* Keep the backslash that is already in the buffer */ ungetc (c, Handle); State = DT_NORMAL_TEXT; } else { /* * This is a continuation line -- a backlash followed * immediately by a newline. Insert a space between the * lines (overwrite the backslash) */ Gbl_CurrentLineBuffer[i] = ' '; i++; /* Ignore newline, this will merge the lines */ CurrentLineOffset = Gbl_NextLineOffset; Gbl_NextLineOffset = (UINT32) ftell (Handle); Gbl_CurrentLineNumber++; State = DT_NORMAL_TEXT; } break; default: DtFatal (ASL_MSG_COMPILER_INTERNAL, NULL, "Unknown input state"); return (ASL_EOF); } } } /****************************************************************************** * * FUNCTION: DtScanFile * * PARAMETERS: Handle - Open file handle for the source file * * RETURN: Pointer to start of the constructed parse tree. * * DESCRIPTION: Scan source file, link all field names and values * to the global parse tree: Gbl_FieldList * *****************************************************************************/ DT_FIELD * DtScanFile ( FILE *Handle) { ACPI_STATUS Status; UINT32 Offset; ACPI_FUNCTION_NAME (DtScanFile); /* Get the file size */ Gbl_InputByteCount = CmGetFileSize (Handle); if (Gbl_InputByteCount == ACPI_UINT32_MAX) { AslAbort (); } Gbl_CurrentLineNumber = 0; Gbl_CurrentLineOffset = 0; Gbl_NextLineOffset = 0; /* Scan line-by-line */ while ((Offset = DtGetNextLine (Handle)) != ASL_EOF) { ACPI_DEBUG_PRINT ((ACPI_DB_PARSE, "Line %2.2u/%4.4X - %s", Gbl_CurrentLineNumber, Offset, Gbl_CurrentLineBuffer)); Status = DtParseLine (Gbl_CurrentLineBuffer, Gbl_CurrentLineNumber, Offset); if (Status == AE_NOT_FOUND) { break; } } /* Dump the parse tree if debug enabled */ DtDumpFieldList (Gbl_FieldList); return (Gbl_FieldList); } /* * Output functions */ /****************************************************************************** * * FUNCTION: DtWriteBinary * * PARAMETERS: DT_WALK_CALLBACK * * RETURN: Status * * DESCRIPTION: Write one subtable of a binary ACPI table * *****************************************************************************/ static void DtWriteBinary ( DT_SUBTABLE *Subtable, void *Context, void *ReturnValue) { FlWriteFile (ASL_FILE_AML_OUTPUT, Subtable->Buffer, Subtable->Length); } /****************************************************************************** * * FUNCTION: DtOutputBinary * * PARAMETERS: * * RETURN: Status * * DESCRIPTION: Write entire binary ACPI table (result of compilation) * *****************************************************************************/ void DtOutputBinary ( DT_SUBTABLE *RootTable) { if (!RootTable) { return; } /* Walk the entire parse tree, emitting the binary data */ DtWalkTableTree (RootTable, DtWriteBinary, NULL, NULL); Gbl_TableLength = CmGetFileSize (Gbl_Files[ASL_FILE_AML_OUTPUT].Handle); if (Gbl_TableLength == ACPI_UINT32_MAX) { AslAbort (); } } /* * Listing support */ /****************************************************************************** * * FUNCTION: DtDumpBuffer * * PARAMETERS: FileID - Where to write buffer data * Buffer - Buffer to dump * Offset - Offset in current table * Length - Buffer Length * * RETURN: None * * DESCRIPTION: Another copy of DumpBuffer routine (unfortunately). * * TBD: merge dump buffer routines * *****************************************************************************/ static void DtDumpBuffer ( UINT32 FileId, UINT8 *Buffer, UINT32 Offset, UINT32 Length) { UINT32 i; UINT32 j; UINT8 BufChar; FlPrintFile (FileId, "Output: [%3.3Xh %4.4d %3d] ", Offset, Offset, Length); i = 0; while (i < Length) { if (i >= 16) { FlPrintFile (FileId, "%24s", ""); } /* Print 16 hex chars */ for (j = 0; j < 16;) { if (i + j >= Length) { /* Dump fill spaces */ FlPrintFile (FileId, " "); j++; continue; } FlPrintFile (FileId, "%02X ", Buffer[i+j]); j++; } FlPrintFile (FileId, " "); for (j = 0; j < 16; j++) { if (i + j >= Length) { FlPrintFile (FileId, "\n\n"); return; } BufChar = Buffer[(ACPI_SIZE) i + j]; if (ACPI_IS_PRINT (BufChar)) { FlPrintFile (FileId, "%c", BufChar); } else { FlPrintFile (FileId, "."); } } /* Done with that line. */ FlPrintFile (FileId, "\n"); i += 16; } FlPrintFile (FileId, "\n\n"); } /****************************************************************************** * * FUNCTION: DtDumpFieldList * * PARAMETERS: Field - Root field * * RETURN: None * * DESCRIPTION: Dump the entire field list * *****************************************************************************/ void DtDumpFieldList ( DT_FIELD *Field) { if (!Gbl_DebugFlag || !Field) { return; } DbgPrint (ASL_DEBUG_OUTPUT, "\nField List:\n" "LineNo ByteOff NameCol Column TableOff " "Flags %32s : %s\n\n", "Name", "Value"); while (Field) { DbgPrint (ASL_DEBUG_OUTPUT, "%.08X %.08X %.08X %.08X %.08X %.08X %32s : %s\n", Field->Line, Field->ByteOffset, Field->NameColumn, Field->Column, Field->TableOffset, Field->Flags, Field->Name, Field->Value); Field = Field->Next; } DbgPrint (ASL_DEBUG_OUTPUT, "\n\n"); } /****************************************************************************** * * FUNCTION: DtDumpSubtableInfo, DtDumpSubtableTree * * PARAMETERS: DT_WALK_CALLBACK * * RETURN: None * * DESCRIPTION: Info - dump a subtable tree entry with extra information. * Tree - dump a subtable tree formatted by depth indentation. * *****************************************************************************/ static void DtDumpSubtableInfo ( DT_SUBTABLE *Subtable, void *Context, void *ReturnValue) { DbgPrint (ASL_DEBUG_OUTPUT, "[%.04X] %.08X %.08X %.08X %.08X %.08X %p %p %p\n", Subtable->Depth, Subtable->Length, Subtable->TotalLength, Subtable->SizeOfLengthField, Subtable->Flags, Subtable, Subtable->Parent, Subtable->Child, Subtable->Peer); } static void DtDumpSubtableTree ( DT_SUBTABLE *Subtable, void *Context, void *ReturnValue) { DbgPrint (ASL_DEBUG_OUTPUT, "[%.04X] %*s%08X (%.02X) - (%.02X)\n", Subtable->Depth, (4 * Subtable->Depth), " ", Subtable, Subtable->Length, Subtable->TotalLength); } /****************************************************************************** * * FUNCTION: DtDumpSubtableList * * PARAMETERS: None * * RETURN: None * * DESCRIPTION: Dump the raw list of subtables with information, and also * dump the subtable list in formatted tree format. Assists with * the development of new table code. * *****************************************************************************/ void DtDumpSubtableList ( void) { if (!Gbl_DebugFlag || !Gbl_RootTable) { return; } DbgPrint (ASL_DEBUG_OUTPUT, "Subtable Info:\n" "Depth Length TotalLen LenSize Flags " "This Parent Child Peer\n\n"); DtWalkTableTree (Gbl_RootTable, DtDumpSubtableInfo, NULL, NULL); DbgPrint (ASL_DEBUG_OUTPUT, "\nSubtable Tree: (Depth, Subtable, Length, TotalLength)\n\n"); DtWalkTableTree (Gbl_RootTable, DtDumpSubtableTree, NULL, NULL); } /****************************************************************************** * * FUNCTION: DtWriteFieldToListing * * PARAMETERS: Buffer - Contains the compiled data * Field - Field node for the input line * Length - Length of the output data * * RETURN: None * * DESCRIPTION: Write one field to the listing file (if listing is enabled). * *****************************************************************************/ void DtWriteFieldToListing ( UINT8 *Buffer, DT_FIELD *Field, UINT32 Length) { UINT8 FileByte; if (!Gbl_ListingFlag || !Field) { return; } /* Dump the original source line */ FlPrintFile (ASL_FILE_LISTING_OUTPUT, "Input: "); FlSeekFile (ASL_FILE_INPUT, Field->ByteOffset); while (FlReadFile (ASL_FILE_INPUT, &FileByte, 1) == AE_OK) { FlWriteFile (ASL_FILE_LISTING_OUTPUT, &FileByte, 1); if (FileByte == '\n') { break; } } /* Dump the line as parsed and represented internally */ FlPrintFile (ASL_FILE_LISTING_OUTPUT, "Parsed: %*s : %.64s", Field->Column-4, Field->Name, Field->Value); if (strlen (Field->Value) > 64) { FlPrintFile (ASL_FILE_LISTING_OUTPUT, "...Additional data, length 0x%X\n", strlen (Field->Value)); } FlPrintFile (ASL_FILE_LISTING_OUTPUT, "\n"); /* Dump the hex data that will be output for this field */ DtDumpBuffer (ASL_FILE_LISTING_OUTPUT, Buffer, Field->TableOffset, Length); } /****************************************************************************** * * FUNCTION: DtWriteTableToListing * * PARAMETERS: None * * RETURN: None * * DESCRIPTION: Write the entire compiled table to the listing file * in hex format * *****************************************************************************/ void DtWriteTableToListing ( void) { UINT8 *Buffer; if (!Gbl_ListingFlag) { return; } /* Read the entire table from the output file */ Buffer = UtLocalCalloc (Gbl_TableLength); FlSeekFile (ASL_FILE_AML_OUTPUT, 0); FlReadFile (ASL_FILE_AML_OUTPUT, Buffer, Gbl_TableLength); /* Dump the raw table data */ AcpiOsRedirectOutput (Gbl_Files[ASL_FILE_LISTING_OUTPUT].Handle); AcpiOsPrintf ("\n%s: Length %d (0x%X)\n\n", ACPI_RAW_TABLE_DATA_HEADER, Gbl_TableLength, Gbl_TableLength); AcpiUtDumpBuffer (Buffer, Gbl_TableLength, DB_BYTE_DISPLAY, 0); AcpiOsRedirectOutput (stdout); ACPI_FREE (Buffer); } src/acpica/source/compiler/dtparser.l000066400000000000000000000210021231470457100201770ustar00rootroot00000000000000%{ /****************************************************************************** * * Module Name: dtparser.l - Flex input file for table compiler lexer * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #include "aslcompiler.h" #include "dtparser.y.h" #define YY_NO_INPUT /* No file input, we use strings only */ #define _COMPONENT ACPI_COMPILER ACPI_MODULE_NAME ("dtscanner") %} %option noyywrap %option nounput Number [0-9a-fA-F]+ HexNumber 0[xX][0-9a-fA-F]+ DecimalNumber 0[dD][0-9]+ LabelRef $[a-zA-Z][0-9a-zA-Z]* WhiteSpace [ \t\v\r]+ NewLine [\n] %% \( return (EXPOP_PAREN_OPEN); \) return (EXPOP_PAREN_CLOSE); \~ return (EXPOP_ONES_COMPLIMENT); \! return (EXPOP_LOGICAL_NOT); \* return (EXPOP_MULTIPLY); \/ return (EXPOP_DIVIDE); \% return (EXPOP_MODULO); \+ return (EXPOP_ADD); \- return (EXPOP_SUBTRACT); ">>" return (EXPOP_SHIFT_RIGHT); "<<" return (EXPOP_SHIFT_LEFT); \< return (EXPOP_LESS); \> return (EXPOP_GREATER); "<=" return (EXPOP_LESS_EQUAL); ">=" return (EXPOP_GREATER_EQUAL); "==" return (EXPOP_EQUAL); "!=" return (EXPOP_NOT_EQUAL); \& return (EXPOP_AND); \^ return (EXPOP_XOR); \| return (EXPOP_OR); "&&" return (EXPOP_LOGICAL_AND); "||" return (EXPOP_LOGICAL_OR); <> return (EXPOP_EOF); /* null end-of-string */ {LabelRef} return (EXPOP_LABEL); {Number} return (EXPOP_NUMBER); {HexNumber} return (EXPOP_HEX_NUMBER); {NewLine} return (EXPOP_NEW_LINE); {WhiteSpace} /* Ignore */ . return (EXPOP_EOF); %% /* * Local support functions */ YY_BUFFER_STATE LexBuffer; /****************************************************************************** * * FUNCTION: DtInitLexer, DtTerminateLexer * * PARAMETERS: String - Input string to be parsed * * RETURN: None * * DESCRIPTION: Initialization and termination routines for lexer. Lexer needs * a buffer to handle strings instead of a file. * *****************************************************************************/ int DtInitLexer ( char *String) { LexBuffer = yy_scan_string (String); return (LexBuffer == NULL); } void DtTerminateLexer ( void) { yy_delete_buffer (LexBuffer); } src/acpica/source/compiler/dtparser.y000066400000000000000000000337221231470457100202300ustar00rootroot00000000000000%{ /****************************************************************************** * * Module Name: dtparser.y - Bison input file for table compiler parser * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #include "aslcompiler.h" #include "dtcompiler.h" #define _COMPONENT DT_COMPILER ACPI_MODULE_NAME ("dtparser") int DtParserlex (void); int DtParserparse (void); void DtParsererror (char const *msg); extern char *DtParsertext; extern DT_FIELD *Gbl_CurrentField; UINT64 DtParserResult; /* Expression return value */ /* Bison/yacc configuration */ #define yytname DtParsername #define YYDEBUG 1 /* Enable debug output */ #define YYERROR_VERBOSE 1 /* Verbose error messages */ #define YYFLAG -32768 /* Define YYMALLOC/YYFREE to prevent redefinition errors */ #define YYMALLOC malloc #define YYFREE free %} %union { UINT64 value; UINT32 op; } /*! [Begin] no source code translation */ %type Expression %token EXPOP_EOF %token EXPOP_NEW_LINE %token EXPOP_NUMBER %token EXPOP_HEX_NUMBER %token EXPOP_DECIMAL_NUMBER %token EXPOP_LABEL %token EXPOP_PAREN_OPEN %token EXPOP_PAREN_CLOSE %left EXPOP_LOGICAL_OR %left EXPOP_LOGICAL_AND %left EXPOP_OR %left EXPOP_XOR %left EXPOP_AND %left EXPOP_EQUAL EXPOP_NOT_EQUAL %left EXPOP_GREATER EXPOP_LESS EXPOP_GREATER_EQUAL EXPOP_LESS_EQUAL %left EXPOP_SHIFT_RIGHT EXPOP_SHIFT_LEFT %left EXPOP_ADD EXPOP_SUBTRACT %left EXPOP_MULTIPLY EXPOP_DIVIDE EXPOP_MODULO %right EXPOP_ONES_COMPLIMENT EXPOP_LOGICAL_NOT %% /* * Operator precedence rules (from K&R) * * 1) ( ) * 2) ! ~ (unary operators that are supported here) * 3) * / % * 4) + - * 5) >> << * 6) < > <= >= * 7) == != * 8) & * 9) ^ * 10) | * 11) && * 12) || */ Value : Expression EXPOP_NEW_LINE { DtParserResult=$1; return 0; } /* End of line (newline) */ | Expression EXPOP_EOF { DtParserResult=$1; return 0; } /* End of string (0) */ ; Expression /* Unary operators */ : EXPOP_LOGICAL_NOT Expression { $$ = DtDoOperator ($2, EXPOP_LOGICAL_NOT, $2);} | EXPOP_ONES_COMPLIMENT Expression { $$ = DtDoOperator ($2, EXPOP_ONES_COMPLIMENT, $2);} /* Binary operators */ | Expression EXPOP_MULTIPLY Expression { $$ = DtDoOperator ($1, EXPOP_MULTIPLY, $3);} | Expression EXPOP_DIVIDE Expression { $$ = DtDoOperator ($1, EXPOP_DIVIDE, $3);} | Expression EXPOP_MODULO Expression { $$ = DtDoOperator ($1, EXPOP_MODULO, $3);} | Expression EXPOP_ADD Expression { $$ = DtDoOperator ($1, EXPOP_ADD, $3);} | Expression EXPOP_SUBTRACT Expression { $$ = DtDoOperator ($1, EXPOP_SUBTRACT, $3);} | Expression EXPOP_SHIFT_RIGHT Expression { $$ = DtDoOperator ($1, EXPOP_SHIFT_RIGHT, $3);} | Expression EXPOP_SHIFT_LEFT Expression { $$ = DtDoOperator ($1, EXPOP_SHIFT_LEFT, $3);} | Expression EXPOP_GREATER Expression { $$ = DtDoOperator ($1, EXPOP_GREATER, $3);} | Expression EXPOP_LESS Expression { $$ = DtDoOperator ($1, EXPOP_LESS, $3);} | Expression EXPOP_GREATER_EQUAL Expression { $$ = DtDoOperator ($1, EXPOP_GREATER_EQUAL, $3);} | Expression EXPOP_LESS_EQUAL Expression { $$ = DtDoOperator ($1, EXPOP_LESS_EQUAL, $3);} | Expression EXPOP_EQUAL Expression { $$ = DtDoOperator ($1, EXPOP_EQUAL, $3);} | Expression EXPOP_NOT_EQUAL Expression { $$ = DtDoOperator ($1, EXPOP_NOT_EQUAL, $3);} | Expression EXPOP_AND Expression { $$ = DtDoOperator ($1, EXPOP_AND, $3);} | Expression EXPOP_XOR Expression { $$ = DtDoOperator ($1, EXPOP_XOR, $3);} | Expression EXPOP_OR Expression { $$ = DtDoOperator ($1, EXPOP_OR, $3);} | Expression EXPOP_LOGICAL_AND Expression { $$ = DtDoOperator ($1, EXPOP_LOGICAL_AND, $3);} | Expression EXPOP_LOGICAL_OR Expression { $$ = DtDoOperator ($1, EXPOP_LOGICAL_OR, $3);} /* Parentheses: '(' Expression ')' */ | EXPOP_PAREN_OPEN Expression EXPOP_PAREN_CLOSE { $$ = $2;} /* Label references (prefixed with $) */ | EXPOP_LABEL { $$ = DtResolveLabel (DtParsertext);} /* Default base for a non-prefixed integer is 16 */ | EXPOP_NUMBER { UtStrtoul64 (DtParsertext, 16, &$$);} /* Standard hex number (0x1234) */ | EXPOP_HEX_NUMBER { UtStrtoul64 (DtParsertext, 16, &$$);} /* TBD: Decimal number with prefix (0d1234) - Not supported by UtStrtoul64 at this time */ | EXPOP_DECIMAL_NUMBER { UtStrtoul64 (DtParsertext, 10, &$$);} ; %% /*! [End] no source code translation !*/ /* * Local support functions, including parser entry point */ #define PR_FIRST_PARSE_OPCODE EXPOP_EOF #define PR_YYTNAME_START 3 /****************************************************************************** * * FUNCTION: DtParsererror * * PARAMETERS: Message - Parser-generated error message * * RETURN: None * * DESCRIPTION: Handler for parser errors * *****************************************************************************/ void DtParsererror ( char const *Message) { DtError (ASL_ERROR, ASL_MSG_SYNTAX, Gbl_CurrentField, (char *) Message); } /****************************************************************************** * * FUNCTION: DtGetOpName * * PARAMETERS: ParseOpcode - Parser token (EXPOP_*) * * RETURN: Pointer to the opcode name * * DESCRIPTION: Get the ascii name of the parse opcode for debug output * *****************************************************************************/ char * DtGetOpName ( UINT32 ParseOpcode) { #ifdef ASL_YYTNAME_START /* * First entries (PR_YYTNAME_START) in yytname are special reserved names. * Ignore first 6 characters of name (EXPOP_) */ return ((char *) yytname [(ParseOpcode - PR_FIRST_PARSE_OPCODE) + PR_YYTNAME_START] + 6); #else return ("[Unknown parser generator]"); #endif } /****************************************************************************** * * FUNCTION: DtEvaluateExpression * * PARAMETERS: ExprString - Expression to be evaluated. Must be * terminated by either a newline or a NUL * string terminator * * RETURN: 64-bit value for the expression * * DESCRIPTION: Main entry point for the DT expression parser * *****************************************************************************/ UINT64 DtEvaluateExpression ( char *ExprString) { DbgPrint (ASL_DEBUG_OUTPUT, "**** Input expression: %s (Base 16)\n", ExprString); /* Point lexer to the input string */ if (DtInitLexer (ExprString)) { DtError (ASL_ERROR, ASL_MSG_COMPILER_INTERNAL, Gbl_CurrentField, "Could not initialize lexer"); return (0); } /* Parse/Evaluate the input string (value returned in DtParserResult) */ DtParserparse (); DtTerminateLexer (); DbgPrint (ASL_DEBUG_OUTPUT, "**** Parser returned value: %u (%8.8X%8.8X)\n", (UINT32) DtParserResult, ACPI_FORMAT_UINT64 (DtParserResult)); return (DtParserResult); } src/acpica/source/compiler/dtsubtable.c000066400000000000000000000331011231470457100204760ustar00rootroot00000000000000/****************************************************************************** * * Module Name: dtsubtable.c - handling of subtables within ACPI tables * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #define __DTSUBTABLE_C__ #include "aslcompiler.h" #include "dtcompiler.h" #define _COMPONENT DT_COMPILER ACPI_MODULE_NAME ("dtsubtable") /****************************************************************************** * * FUNCTION: DtCreateSubtable * * PARAMETERS: Buffer - Input buffer * Length - Buffer length * RetSubtable - Returned newly created subtable * * RETURN: None * * DESCRIPTION: Create a subtable that is not listed with ACPI_DMTABLE_INFO * For example, FACS has 24 bytes reserved at the end * and it's not listed at AcpiDmTableInfoFacs * *****************************************************************************/ void DtCreateSubtable ( UINT8 *Buffer, UINT32 Length, DT_SUBTABLE **RetSubtable) { DT_SUBTABLE *Subtable; Subtable = UtLocalCalloc (sizeof (DT_SUBTABLE)); /* Create a new buffer for the subtable data */ Subtable->Buffer = UtLocalCalloc (Length); ACPI_MEMCPY (Subtable->Buffer, Buffer, Length); Subtable->Length = Length; Subtable->TotalLength = Length; *RetSubtable = Subtable; } /****************************************************************************** * * FUNCTION: DtInsertSubtable * * PARAMETERS: ParentTable - The Parent of the new subtable * Subtable - The new subtable to insert * * RETURN: None * * DESCRIPTION: Insert the new subtable to the parent table * *****************************************************************************/ void DtInsertSubtable ( DT_SUBTABLE *ParentTable, DT_SUBTABLE *Subtable) { DT_SUBTABLE *ChildTable; Subtable->Peer = NULL; Subtable->Parent = ParentTable; Subtable->Depth = ParentTable->Depth + 1; /* Link the new entry into the child list */ if (!ParentTable->Child) { ParentTable->Child = Subtable; } else { /* Walk to the end of the child list */ ChildTable = ParentTable->Child; while (ChildTable->Peer) { ChildTable = ChildTable->Peer; } /* Add new subtable at the end of the child list */ ChildTable->Peer = Subtable; } } /****************************************************************************** * * FUNCTION: DtPushSubtable * * PARAMETERS: Subtable - Subtable to push * * RETURN: None * * DESCRIPTION: Push a subtable onto a subtable stack * *****************************************************************************/ void DtPushSubtable ( DT_SUBTABLE *Subtable) { Subtable->StackTop = Gbl_SubtableStack; Gbl_SubtableStack = Subtable; } /****************************************************************************** * * FUNCTION: DtPopSubtable * * PARAMETERS: None * * RETURN: None * * DESCRIPTION: Pop a subtable from a subtable stack. Uses global SubtableStack * *****************************************************************************/ void DtPopSubtable ( void) { DT_SUBTABLE *Subtable; Subtable = Gbl_SubtableStack; if (Subtable) { Gbl_SubtableStack = Subtable->StackTop; } } /****************************************************************************** * * FUNCTION: DtPeekSubtable * * PARAMETERS: None * * RETURN: The subtable on top of stack * * DESCRIPTION: Get the subtable on top of stack * *****************************************************************************/ DT_SUBTABLE * DtPeekSubtable ( void) { return (Gbl_SubtableStack); } /****************************************************************************** * * FUNCTION: DtGetNextSubtable * * PARAMETERS: ParentTable - Parent table whose children we are * getting * ChildTable - Previous child that was found. * The NEXT child will be returned * * RETURN: Pointer to the NEXT child or NULL if none is found. * * DESCRIPTION: Return the next peer subtable within the tree. * *****************************************************************************/ DT_SUBTABLE * DtGetNextSubtable ( DT_SUBTABLE *ParentTable, DT_SUBTABLE *ChildTable) { ACPI_FUNCTION_ENTRY (); if (!ChildTable) { /* It's really the parent's _scope_ that we want */ return (ParentTable->Child); } /* Otherwise just return the next peer (NULL if at end-of-list) */ return (ChildTable->Peer); } /****************************************************************************** * * FUNCTION: DtGetParentSubtable * * PARAMETERS: Subtable - Current subtable * * RETURN: Parent of the given subtable * * DESCRIPTION: Get the parent of the given subtable in the tree * *****************************************************************************/ DT_SUBTABLE * DtGetParentSubtable ( DT_SUBTABLE *Subtable) { if (!Subtable) { return (NULL); } return (Subtable->Parent); } /****************************************************************************** * * FUNCTION: DtGetSubtableLength * * PARAMETERS: Field - Current field list pointer * Info - Data table info * * RETURN: Subtable length * * DESCRIPTION: Get length of bytes needed to compile the subtable * *****************************************************************************/ UINT32 DtGetSubtableLength ( DT_FIELD *Field, ACPI_DMTABLE_INFO *Info) { UINT32 ByteLength = 0; UINT8 Step; UINT8 i; /* Walk entire Info table; Null name terminates */ for (; Info->Name; Info++) { if (Info->Opcode == ACPI_DMT_EXTRA_TEXT) { continue; } if (!Field) { goto Error; } ByteLength += DtGetFieldLength (Field, Info); switch (Info->Opcode) { case ACPI_DMT_GAS: Step = 5; break; case ACPI_DMT_HESTNTFY: Step = 9; break; default: Step = 1; break; } for (i = 0; i < Step; i++) { if (!Field) { goto Error; } Field = Field->Next; } } return (ByteLength); Error: if (!Field) { sprintf (MsgBuffer, "Found NULL field - Field name \"%s\" needed", Info->Name); DtFatal (ASL_MSG_COMPILER_INTERNAL, NULL, MsgBuffer); } return (ASL_EOF); } /****************************************************************************** * * FUNCTION: DtSetSubtableLength * * PARAMETERS: Subtable - Subtable * * RETURN: None * * DESCRIPTION: Set length of the subtable into its length field * *****************************************************************************/ void DtSetSubtableLength ( DT_SUBTABLE *Subtable) { if (!Subtable->LengthField) { return; } ACPI_MEMCPY (Subtable->LengthField, &Subtable->TotalLength, Subtable->SizeOfLengthField); } src/acpica/source/compiler/dttable.c000066400000000000000000002063511231470457100177750ustar00rootroot00000000000000/****************************************************************************** * * Module Name: dttable.c - handling for specific ACPI tables * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #define __DTTABLE_C__ /* Compile all complex data tables */ #include "aslcompiler.h" #include "dtcompiler.h" #define _COMPONENT DT_COMPILER ACPI_MODULE_NAME ("dttable") /* TBD: merge these into dmtbinfo.c? */ static ACPI_DMTABLE_INFO TableInfoAsfAddress[] = { {ACPI_DMT_BUFFER, 0, "Addresses", 0}, {ACPI_DMT_EXIT, 0, NULL, 0} }; static ACPI_DMTABLE_INFO TableInfoDmarPciPath[] = { {ACPI_DMT_PCI_PATH, 0, "PCI Path", 0}, {ACPI_DMT_EXIT, 0, NULL, 0} }; /* TBD: move to acmacros.h */ #define ACPI_SUB_PTR(t, a, b) \ ACPI_CAST_PTR (t, (ACPI_CAST_PTR (UINT8, (a)) - (ACPI_SIZE)(b))) /* Local prototypes */ static ACPI_STATUS DtCompileTwoSubtables ( void **List, ACPI_DMTABLE_INFO *TableInfo1, ACPI_DMTABLE_INFO *TableInfo2); /****************************************************************************** * * FUNCTION: DtCompileTwoSubtables * * PARAMETERS: List - Current field list pointer * TableInfo1 - Info table 1 * TableInfo1 - Info table 2 * * RETURN: Status * * DESCRIPTION: Compile tables with a header and one or more same subtables. * Include CPEP, EINJ, ERST, MCFG, MSCT, WDAT * *****************************************************************************/ static ACPI_STATUS DtCompileTwoSubtables ( void **List, ACPI_DMTABLE_INFO *TableInfo1, ACPI_DMTABLE_INFO *TableInfo2) { ACPI_STATUS Status; DT_SUBTABLE *Subtable; DT_SUBTABLE *ParentTable; DT_FIELD **PFieldList = (DT_FIELD **) List; Status = DtCompileTable (PFieldList, TableInfo1, &Subtable, TRUE); if (ACPI_FAILURE (Status)) { return (Status); } ParentTable = DtPeekSubtable (); DtInsertSubtable (ParentTable, Subtable); while (*PFieldList) { Status = DtCompileTable (PFieldList, TableInfo2, &Subtable, FALSE); if (ACPI_FAILURE (Status)) { return (Status); } DtInsertSubtable (ParentTable, Subtable); } return (AE_OK); } /****************************************************************************** * * FUNCTION: DtCompileFacs * * PARAMETERS: PFieldList - Current field list pointer * * RETURN: Status * * DESCRIPTION: Compile FACS. * *****************************************************************************/ ACPI_STATUS DtCompileFacs ( DT_FIELD **PFieldList) { DT_SUBTABLE *Subtable; UINT8 *ReservedBuffer; ACPI_STATUS Status; UINT32 ReservedSize; Status = DtCompileTable (PFieldList, AcpiDmTableInfoFacs, &Gbl_RootTable, TRUE); if (ACPI_FAILURE (Status)) { return (Status); } /* Large FACS reserved area at the end of the table */ ReservedSize = (UINT32) sizeof (((ACPI_TABLE_FACS *) NULL)->Reserved1); ReservedBuffer = UtLocalCalloc (ReservedSize); DtCreateSubtable (ReservedBuffer, ReservedSize, &Subtable); ACPI_FREE (ReservedBuffer); DtInsertSubtable (Gbl_RootTable, Subtable); return (AE_OK); } /****************************************************************************** * * FUNCTION: DtCompileRsdp * * PARAMETERS: PFieldList - Current field list pointer * * RETURN: Status * * DESCRIPTION: Compile RSDP. * *****************************************************************************/ ACPI_STATUS DtCompileRsdp ( DT_FIELD **PFieldList) { DT_SUBTABLE *Subtable; ACPI_TABLE_RSDP *Rsdp; ACPI_RSDP_EXTENSION *RsdpExtension; ACPI_STATUS Status; /* Compile the "common" RSDP (ACPI 1.0) */ Status = DtCompileTable (PFieldList, AcpiDmTableInfoRsdp1, &Gbl_RootTable, TRUE); if (ACPI_FAILURE (Status)) { return (Status); } Rsdp = ACPI_CAST_PTR (ACPI_TABLE_RSDP, Gbl_RootTable->Buffer); DtSetTableChecksum (&Rsdp->Checksum); if (Rsdp->Revision > 0) { /* Compile the "extended" part of the RSDP as a subtable */ Status = DtCompileTable (PFieldList, AcpiDmTableInfoRsdp2, &Subtable, TRUE); if (ACPI_FAILURE (Status)) { return (Status); } DtInsertSubtable (Gbl_RootTable, Subtable); /* Set length and extended checksum for entire RSDP */ RsdpExtension = ACPI_CAST_PTR (ACPI_RSDP_EXTENSION, Subtable->Buffer); RsdpExtension->Length = Gbl_RootTable->Length + Subtable->Length; DtSetTableChecksum (&RsdpExtension->ExtendedChecksum); } return (AE_OK); } /****************************************************************************** * * FUNCTION: DtCompileAsf * * PARAMETERS: List - Current field list pointer * * RETURN: Status * * DESCRIPTION: Compile ASF!. * *****************************************************************************/ ACPI_STATUS DtCompileAsf ( void **List) { ACPI_ASF_INFO *AsfTable; DT_SUBTABLE *Subtable; DT_SUBTABLE *ParentTable; ACPI_DMTABLE_INFO *InfoTable; ACPI_DMTABLE_INFO *DataInfoTable = NULL; UINT32 DataCount = 0; ACPI_STATUS Status; UINT32 i; DT_FIELD **PFieldList = (DT_FIELD **) List; DT_FIELD *SubtableStart; while (*PFieldList) { SubtableStart = *PFieldList; Status = DtCompileTable (PFieldList, AcpiDmTableInfoAsfHdr, &Subtable, TRUE); if (ACPI_FAILURE (Status)) { return (Status); } ParentTable = DtPeekSubtable (); DtInsertSubtable (ParentTable, Subtable); DtPushSubtable (Subtable); AsfTable = ACPI_CAST_PTR (ACPI_ASF_INFO, Subtable->Buffer); switch (AsfTable->Header.Type & 0x7F) /* Mask off top bit */ { case ACPI_ASF_TYPE_INFO: InfoTable = AcpiDmTableInfoAsf0; break; case ACPI_ASF_TYPE_ALERT: InfoTable = AcpiDmTableInfoAsf1; break; case ACPI_ASF_TYPE_CONTROL: InfoTable = AcpiDmTableInfoAsf2; break; case ACPI_ASF_TYPE_BOOT: InfoTable = AcpiDmTableInfoAsf3; break; case ACPI_ASF_TYPE_ADDRESS: InfoTable = AcpiDmTableInfoAsf4; break; default: DtFatal (ASL_MSG_UNKNOWN_SUBTABLE, SubtableStart, "ASF!"); return (AE_ERROR); } Status = DtCompileTable (PFieldList, InfoTable, &Subtable, TRUE); if (ACPI_FAILURE (Status)) { return (Status); } ParentTable = DtPeekSubtable (); DtInsertSubtable (ParentTable, Subtable); switch (AsfTable->Header.Type & 0x7F) /* Mask off top bit */ { case ACPI_ASF_TYPE_INFO: DataInfoTable = NULL; break; case ACPI_ASF_TYPE_ALERT: DataInfoTable = AcpiDmTableInfoAsf1a; DataCount = ACPI_CAST_PTR (ACPI_ASF_ALERT, ACPI_SUB_PTR (UINT8, Subtable->Buffer, sizeof (ACPI_ASF_HEADER)))->Alerts; break; case ACPI_ASF_TYPE_CONTROL: DataInfoTable = AcpiDmTableInfoAsf2a; DataCount = ACPI_CAST_PTR (ACPI_ASF_REMOTE, ACPI_SUB_PTR (UINT8, Subtable->Buffer, sizeof (ACPI_ASF_HEADER)))->Controls; break; case ACPI_ASF_TYPE_BOOT: DataInfoTable = NULL; break; case ACPI_ASF_TYPE_ADDRESS: DataInfoTable = TableInfoAsfAddress; DataCount = ACPI_CAST_PTR (ACPI_ASF_ADDRESS, ACPI_SUB_PTR (UINT8, Subtable->Buffer, sizeof (ACPI_ASF_HEADER)))->Devices; break; default: DtFatal (ASL_MSG_UNKNOWN_SUBTABLE, SubtableStart, "ASF!"); return (AE_ERROR); } if (DataInfoTable) { switch (AsfTable->Header.Type & 0x7F) { case ACPI_ASF_TYPE_ADDRESS: while (DataCount > 0) { Status = DtCompileTable (PFieldList, DataInfoTable, &Subtable, TRUE); if (ACPI_FAILURE (Status)) { return (Status); } DtInsertSubtable (ParentTable, Subtable); DataCount = DataCount - Subtable->Length; } break; default: for (i = 0; i < DataCount; i++) { Status = DtCompileTable (PFieldList, DataInfoTable, &Subtable, TRUE); if (ACPI_FAILURE (Status)) { return (Status); } DtInsertSubtable (ParentTable, Subtable); } break; } } DtPopSubtable (); } return (AE_OK); } /****************************************************************************** * * FUNCTION: DtCompileCpep * * PARAMETERS: List - Current field list pointer * * RETURN: Status * * DESCRIPTION: Compile CPEP. * *****************************************************************************/ ACPI_STATUS DtCompileCpep ( void **List) { ACPI_STATUS Status; Status = DtCompileTwoSubtables (List, AcpiDmTableInfoCpep, AcpiDmTableInfoCpep0); return (Status); } /****************************************************************************** * * FUNCTION: DtCompileCsrt * * PARAMETERS: List - Current field list pointer * * RETURN: Status * * DESCRIPTION: Compile CSRT. * *****************************************************************************/ ACPI_STATUS DtCompileCsrt ( void **List) { ACPI_STATUS Status = AE_OK; DT_SUBTABLE *Subtable; DT_SUBTABLE *ParentTable; DT_FIELD **PFieldList = (DT_FIELD **) List; UINT32 DescriptorCount; UINT32 GroupLength; /* Sub-tables (Resource Groups) */ while (*PFieldList) { /* Resource group subtable */ Status = DtCompileTable (PFieldList, AcpiDmTableInfoCsrt0, &Subtable, TRUE); if (ACPI_FAILURE (Status)) { return (Status); } /* Compute the number of resource descriptors */ GroupLength = (ACPI_CAST_PTR (ACPI_CSRT_GROUP, Subtable->Buffer))->Length - (ACPI_CAST_PTR (ACPI_CSRT_GROUP, Subtable->Buffer))->SharedInfoLength - sizeof (ACPI_CSRT_GROUP); DescriptorCount = (GroupLength / sizeof (ACPI_CSRT_DESCRIPTOR)); ParentTable = DtPeekSubtable (); DtInsertSubtable (ParentTable, Subtable); DtPushSubtable (Subtable); /* Shared info subtable (One per resource group) */ Status = DtCompileTable (PFieldList, AcpiDmTableInfoCsrt1, &Subtable, TRUE); if (ACPI_FAILURE (Status)) { return (Status); } ParentTable = DtPeekSubtable (); DtInsertSubtable (ParentTable, Subtable); /* Sub-Subtables (Resource Descriptors) */ while (*PFieldList && DescriptorCount) { Status = DtCompileTable (PFieldList, AcpiDmTableInfoCsrt2, &Subtable, TRUE); if (ACPI_FAILURE (Status)) { return (Status); } ParentTable = DtPeekSubtable (); DtInsertSubtable (ParentTable, Subtable); DescriptorCount--; } DtPopSubtable (); } return (Status); } /****************************************************************************** * * FUNCTION: DtCompileDbg2 * * PARAMETERS: List - Current field list pointer * * RETURN: Status * * DESCRIPTION: Compile DBG2. * *****************************************************************************/ ACPI_STATUS DtCompileDbg2 ( void **List) { ACPI_STATUS Status; DT_SUBTABLE *Subtable; DT_SUBTABLE *ParentTable; DT_FIELD **PFieldList = (DT_FIELD **) List; UINT32 SubtableCount; ACPI_DBG2_HEADER *Dbg2Header; ACPI_DBG2_DEVICE *DeviceInfo; UINT16 CurrentOffset; UINT32 i; /* Main table */ Status = DtCompileTable (PFieldList, AcpiDmTableInfoDbg2, &Subtable, TRUE); if (ACPI_FAILURE (Status)) { return (Status); } ParentTable = DtPeekSubtable (); DtInsertSubtable (ParentTable, Subtable); /* Main table fields */ Dbg2Header = ACPI_CAST_PTR (ACPI_DBG2_HEADER, Subtable->Buffer); Dbg2Header->InfoOffset = sizeof (ACPI_TABLE_HEADER) + ACPI_PTR_DIFF ( ACPI_ADD_PTR (UINT8, Dbg2Header, sizeof (ACPI_DBG2_HEADER)), Dbg2Header); SubtableCount = Dbg2Header->InfoCount; DtPushSubtable (Subtable); /* Process all Device Information subtables (Count = InfoCount) */ while (*PFieldList && SubtableCount) { /* Subtable: Debug Device Information */ Status = DtCompileTable (PFieldList, AcpiDmTableInfoDbg2Device, &Subtable, TRUE); if (ACPI_FAILURE (Status)) { return (Status); } DeviceInfo = ACPI_CAST_PTR (ACPI_DBG2_DEVICE, Subtable->Buffer); CurrentOffset = (UINT16) sizeof (ACPI_DBG2_DEVICE); ParentTable = DtPeekSubtable (); DtInsertSubtable (ParentTable, Subtable); DtPushSubtable (Subtable); ParentTable = DtPeekSubtable (); /* BaseAddressRegister GAS array (Required, size is RegisterCount) */ DeviceInfo->BaseAddressOffset = CurrentOffset; for (i = 0; *PFieldList && (i < DeviceInfo->RegisterCount); i++) { Status = DtCompileTable (PFieldList, AcpiDmTableInfoDbg2Addr, &Subtable, TRUE); if (ACPI_FAILURE (Status)) { return (Status); } CurrentOffset += (UINT16) sizeof (ACPI_GENERIC_ADDRESS); DtInsertSubtable (ParentTable, Subtable); } /* AddressSize array (Required, size = RegisterCount) */ DeviceInfo->AddressSizeOffset = CurrentOffset; for (i = 0; *PFieldList && (i < DeviceInfo->RegisterCount); i++) { Status = DtCompileTable (PFieldList, AcpiDmTableInfoDbg2Size, &Subtable, TRUE); if (ACPI_FAILURE (Status)) { return (Status); } CurrentOffset += (UINT16) sizeof (UINT32); DtInsertSubtable (ParentTable, Subtable); } /* NamespaceString device identifier (Required, size = NamePathLength) */ DeviceInfo->NamepathOffset = CurrentOffset; Status = DtCompileTable (PFieldList, AcpiDmTableInfoDbg2Name, &Subtable, TRUE); if (ACPI_FAILURE (Status)) { return (Status); } /* Update the device info header */ DeviceInfo->NamepathLength = (UINT16) Subtable->Length; CurrentOffset += (UINT16) DeviceInfo->NamepathLength; DtInsertSubtable (ParentTable, Subtable); /* OemData - Variable-length data (Optional, size = OemDataLength) */ Status = DtCompileTable (PFieldList, AcpiDmTableInfoDbg2OemData, &Subtable, TRUE); if (ACPI_FAILURE (Status)) { return (Status); } /* Update the device info header (zeros if no OEM data present) */ DeviceInfo->OemDataOffset = 0; DeviceInfo->OemDataLength = 0; /* Optional subtable (OemData) */ if (Subtable && Subtable->Length) { DeviceInfo->OemDataOffset = CurrentOffset; DeviceInfo->OemDataLength = (UINT16) Subtable->Length; DtInsertSubtable (ParentTable, Subtable); } SubtableCount--; DtPopSubtable (); /* Get next Device Information subtable */ } DtPopSubtable (); return (AE_OK); } /****************************************************************************** * * FUNCTION: DtCompileDmar * * PARAMETERS: List - Current field list pointer * * RETURN: Status * * DESCRIPTION: Compile DMAR. * *****************************************************************************/ ACPI_STATUS DtCompileDmar ( void **List) { ACPI_STATUS Status; DT_SUBTABLE *Subtable; DT_SUBTABLE *ParentTable; DT_FIELD **PFieldList = (DT_FIELD **) List; DT_FIELD *SubtableStart; ACPI_DMTABLE_INFO *InfoTable; ACPI_DMAR_HEADER *DmarHeader; ACPI_DMAR_DEVICE_SCOPE *DmarDeviceScope; UINT32 DeviceScopeLength; UINT32 PciPathLength; Status = DtCompileTable (PFieldList, AcpiDmTableInfoDmar, &Subtable, TRUE); if (ACPI_FAILURE (Status)) { return (Status); } ParentTable = DtPeekSubtable (); DtInsertSubtable (ParentTable, Subtable); DtPushSubtable (Subtable); while (*PFieldList) { /* DMAR Header */ SubtableStart = *PFieldList; Status = DtCompileTable (PFieldList, AcpiDmTableInfoDmarHdr, &Subtable, TRUE); if (ACPI_FAILURE (Status)) { return (Status); } ParentTable = DtPeekSubtable (); DtInsertSubtable (ParentTable, Subtable); DtPushSubtable (Subtable); DmarHeader = ACPI_CAST_PTR (ACPI_DMAR_HEADER, Subtable->Buffer); switch (DmarHeader->Type) { case ACPI_DMAR_TYPE_HARDWARE_UNIT: InfoTable = AcpiDmTableInfoDmar0; break; case ACPI_DMAR_TYPE_RESERVED_MEMORY: InfoTable = AcpiDmTableInfoDmar1; break; case ACPI_DMAR_TYPE_ATSR: InfoTable = AcpiDmTableInfoDmar2; break; case ACPI_DMAR_HARDWARE_AFFINITY: InfoTable = AcpiDmTableInfoDmar3; break; default: DtFatal (ASL_MSG_UNKNOWN_SUBTABLE, SubtableStart, "DMAR"); return (AE_ERROR); } /* DMAR Subtable */ Status = DtCompileTable (PFieldList, InfoTable, &Subtable, TRUE); if (ACPI_FAILURE (Status)) { return (Status); } ParentTable = DtPeekSubtable (); DtInsertSubtable (ParentTable, Subtable); DtPushSubtable (Subtable); /* Optional Device Scope subtables */ DeviceScopeLength = DmarHeader->Length - Subtable->Length - ParentTable->Length; while (DeviceScopeLength) { Status = DtCompileTable (PFieldList, AcpiDmTableInfoDmarScope, &Subtable, FALSE); if (Status == AE_NOT_FOUND) { break; } ParentTable = DtPeekSubtable (); DtInsertSubtable (ParentTable, Subtable); DtPushSubtable (Subtable); DmarDeviceScope = ACPI_CAST_PTR (ACPI_DMAR_DEVICE_SCOPE, Subtable->Buffer); /* Optional PCI Paths */ PciPathLength = DmarDeviceScope->Length - Subtable->Length; while (PciPathLength) { Status = DtCompileTable (PFieldList, TableInfoDmarPciPath, &Subtable, FALSE); if (Status == AE_NOT_FOUND) { DtPopSubtable (); break; } ParentTable = DtPeekSubtable (); DtInsertSubtable (ParentTable, Subtable); PciPathLength -= Subtable->Length; } DtPopSubtable (); DeviceScopeLength -= DmarDeviceScope->Length; } DtPopSubtable (); DtPopSubtable (); } return (AE_OK); } /****************************************************************************** * * FUNCTION: DtCompileEinj * * PARAMETERS: List - Current field list pointer * * RETURN: Status * * DESCRIPTION: Compile EINJ. * *****************************************************************************/ ACPI_STATUS DtCompileEinj ( void **List) { ACPI_STATUS Status; Status = DtCompileTwoSubtables (List, AcpiDmTableInfoEinj, AcpiDmTableInfoEinj0); return (Status); } /****************************************************************************** * * FUNCTION: DtCompileErst * * PARAMETERS: List - Current field list pointer * * RETURN: Status * * DESCRIPTION: Compile ERST. * *****************************************************************************/ ACPI_STATUS DtCompileErst ( void **List) { ACPI_STATUS Status; Status = DtCompileTwoSubtables (List, AcpiDmTableInfoErst, AcpiDmTableInfoEinj0); return (Status); } /****************************************************************************** * * FUNCTION: DtCompileFadt * * PARAMETERS: List - Current field list pointer * * RETURN: Status * * DESCRIPTION: Compile FADT. * *****************************************************************************/ ACPI_STATUS DtCompileFadt ( void **List) { ACPI_STATUS Status; DT_SUBTABLE *Subtable; DT_SUBTABLE *ParentTable; DT_FIELD **PFieldList = (DT_FIELD **) List; ACPI_TABLE_HEADER *Table; UINT8 Revision; Status = DtCompileTable (PFieldList, AcpiDmTableInfoFadt1, &Subtable, TRUE); if (ACPI_FAILURE (Status)) { return (Status); } ParentTable = DtPeekSubtable (); DtInsertSubtable (ParentTable, Subtable); Table = ACPI_CAST_PTR (ACPI_TABLE_HEADER, ParentTable->Buffer); Revision = Table->Revision; if (Revision == 2) { Status = DtCompileTable (PFieldList, AcpiDmTableInfoFadt2, &Subtable, TRUE); if (ACPI_FAILURE (Status)) { return (Status); } DtInsertSubtable (ParentTable, Subtable); } else if (Revision >= 2) { Status = DtCompileTable (PFieldList, AcpiDmTableInfoFadt3, &Subtable, TRUE); if (ACPI_FAILURE (Status)) { return (Status); } DtInsertSubtable (ParentTable, Subtable); if (Revision >= 5) { Status = DtCompileTable (PFieldList, AcpiDmTableInfoFadt5, &Subtable, TRUE); if (ACPI_FAILURE (Status)) { return (Status); } DtInsertSubtable (ParentTable, Subtable); } } return (AE_OK); } /****************************************************************************** * * FUNCTION: DtCompileFpdt * * PARAMETERS: List - Current field list pointer * * RETURN: Status * * DESCRIPTION: Compile FPDT. * *****************************************************************************/ ACPI_STATUS DtCompileFpdt ( void **List) { ACPI_STATUS Status; ACPI_FPDT_HEADER *FpdtHeader; DT_SUBTABLE *Subtable; DT_SUBTABLE *ParentTable; ACPI_DMTABLE_INFO *InfoTable; DT_FIELD **PFieldList = (DT_FIELD **) List; DT_FIELD *SubtableStart; while (*PFieldList) { SubtableStart = *PFieldList; Status = DtCompileTable (PFieldList, AcpiDmTableInfoFpdtHdr, &Subtable, TRUE); if (ACPI_FAILURE (Status)) { return (Status); } ParentTable = DtPeekSubtable (); DtInsertSubtable (ParentTable, Subtable); DtPushSubtable (Subtable); FpdtHeader = ACPI_CAST_PTR (ACPI_FPDT_HEADER, Subtable->Buffer); switch (FpdtHeader->Type) { case ACPI_FPDT_TYPE_BOOT: InfoTable = AcpiDmTableInfoFpdt0; break; case ACPI_FPDT_TYPE_S3PERF: InfoTable = AcpiDmTableInfoFpdt1; break; default: DtFatal (ASL_MSG_UNKNOWN_SUBTABLE, SubtableStart, "FPDT"); return (AE_ERROR); break; } Status = DtCompileTable (PFieldList, InfoTable, &Subtable, TRUE); if (ACPI_FAILURE (Status)) { return (Status); } ParentTable = DtPeekSubtable (); DtInsertSubtable (ParentTable, Subtable); DtPopSubtable (); } return (AE_OK); } /****************************************************************************** * * FUNCTION: DtCompileHest * * PARAMETERS: List - Current field list pointer * * RETURN: Status * * DESCRIPTION: Compile HEST. * *****************************************************************************/ ACPI_STATUS DtCompileHest ( void **List) { ACPI_STATUS Status; DT_SUBTABLE *Subtable; DT_SUBTABLE *ParentTable; DT_FIELD **PFieldList = (DT_FIELD **) List; DT_FIELD *SubtableStart; ACPI_DMTABLE_INFO *InfoTable; UINT16 Type; UINT32 BankCount; Status = DtCompileTable (PFieldList, AcpiDmTableInfoHest, &Subtable, TRUE); if (ACPI_FAILURE (Status)) { return (Status); } ParentTable = DtPeekSubtable (); DtInsertSubtable (ParentTable, Subtable); while (*PFieldList) { /* Get subtable type */ SubtableStart = *PFieldList; DtCompileInteger ((UINT8 *) &Type, *PFieldList, 2, 0); switch (Type) { case ACPI_HEST_TYPE_IA32_CHECK: InfoTable = AcpiDmTableInfoHest0; break; case ACPI_HEST_TYPE_IA32_CORRECTED_CHECK: InfoTable = AcpiDmTableInfoHest1; break; case ACPI_HEST_TYPE_IA32_NMI: InfoTable = AcpiDmTableInfoHest2; break; case ACPI_HEST_TYPE_AER_ROOT_PORT: InfoTable = AcpiDmTableInfoHest6; break; case ACPI_HEST_TYPE_AER_ENDPOINT: InfoTable = AcpiDmTableInfoHest7; break; case ACPI_HEST_TYPE_AER_BRIDGE: InfoTable = AcpiDmTableInfoHest8; break; case ACPI_HEST_TYPE_GENERIC_ERROR: InfoTable = AcpiDmTableInfoHest9; break; default: /* Cannot continue on unknown type */ DtFatal (ASL_MSG_UNKNOWN_SUBTABLE, SubtableStart, "HEST"); return (AE_ERROR); } Status = DtCompileTable (PFieldList, InfoTable, &Subtable, TRUE); if (ACPI_FAILURE (Status)) { return (Status); } DtInsertSubtable (ParentTable, Subtable); /* * Additional subtable data - IA32 Error Bank(s) */ BankCount = 0; switch (Type) { case ACPI_HEST_TYPE_IA32_CHECK: BankCount = (ACPI_CAST_PTR (ACPI_HEST_IA_MACHINE_CHECK, Subtable->Buffer))->NumHardwareBanks; break; case ACPI_HEST_TYPE_IA32_CORRECTED_CHECK: BankCount = (ACPI_CAST_PTR (ACPI_HEST_IA_CORRECTED, Subtable->Buffer))->NumHardwareBanks; break; default: break; } while (BankCount) { Status = DtCompileTable (PFieldList, AcpiDmTableInfoHestBank, &Subtable, TRUE); if (ACPI_FAILURE (Status)) { return (Status); } DtInsertSubtable (ParentTable, Subtable); BankCount--; } } return (AE_OK); } /****************************************************************************** * * FUNCTION: DtCompileIvrs * * PARAMETERS: List - Current field list pointer * * RETURN: Status * * DESCRIPTION: Compile IVRS. * *****************************************************************************/ ACPI_STATUS DtCompileIvrs ( void **List) { ACPI_STATUS Status; DT_SUBTABLE *Subtable; DT_SUBTABLE *ParentTable; DT_FIELD **PFieldList = (DT_FIELD **) List; DT_FIELD *SubtableStart; ACPI_DMTABLE_INFO *InfoTable; ACPI_IVRS_HEADER *IvrsHeader; UINT8 EntryType; Status = DtCompileTable (PFieldList, AcpiDmTableInfoIvrs, &Subtable, TRUE); if (ACPI_FAILURE (Status)) { return (Status); } ParentTable = DtPeekSubtable (); DtInsertSubtable (ParentTable, Subtable); while (*PFieldList) { SubtableStart = *PFieldList; Status = DtCompileTable (PFieldList, AcpiDmTableInfoIvrsHdr, &Subtable, TRUE); if (ACPI_FAILURE (Status)) { return (Status); } ParentTable = DtPeekSubtable (); DtInsertSubtable (ParentTable, Subtable); DtPushSubtable (Subtable); IvrsHeader = ACPI_CAST_PTR (ACPI_IVRS_HEADER, Subtable->Buffer); switch (IvrsHeader->Type) { case ACPI_IVRS_TYPE_HARDWARE: InfoTable = AcpiDmTableInfoIvrs0; break; case ACPI_IVRS_TYPE_MEMORY1: case ACPI_IVRS_TYPE_MEMORY2: case ACPI_IVRS_TYPE_MEMORY3: InfoTable = AcpiDmTableInfoIvrs1; break; default: DtFatal (ASL_MSG_UNKNOWN_SUBTABLE, SubtableStart, "IVRS"); return (AE_ERROR); } Status = DtCompileTable (PFieldList, InfoTable, &Subtable, TRUE); if (ACPI_FAILURE (Status)) { return (Status); } ParentTable = DtPeekSubtable (); DtInsertSubtable (ParentTable, Subtable); if (IvrsHeader->Type == ACPI_IVRS_TYPE_HARDWARE) { while (*PFieldList && !ACPI_STRCMP ((*PFieldList)->Name, "Entry Type")) { SubtableStart = *PFieldList; DtCompileInteger (&EntryType, *PFieldList, 1, 0); switch (EntryType) { /* 4-byte device entries */ case ACPI_IVRS_TYPE_PAD4: case ACPI_IVRS_TYPE_ALL: case ACPI_IVRS_TYPE_SELECT: case ACPI_IVRS_TYPE_START: case ACPI_IVRS_TYPE_END: InfoTable = AcpiDmTableInfoIvrs4; break; /* 8-byte entries, type A */ case ACPI_IVRS_TYPE_ALIAS_SELECT: case ACPI_IVRS_TYPE_ALIAS_START: InfoTable = AcpiDmTableInfoIvrs8a; break; /* 8-byte entries, type B */ case ACPI_IVRS_TYPE_PAD8: case ACPI_IVRS_TYPE_EXT_SELECT: case ACPI_IVRS_TYPE_EXT_START: InfoTable = AcpiDmTableInfoIvrs8b; break; /* 8-byte entries, type C */ case ACPI_IVRS_TYPE_SPECIAL: InfoTable = AcpiDmTableInfoIvrs8c; break; default: DtFatal (ASL_MSG_UNKNOWN_SUBTABLE, SubtableStart, "IVRS Device Entry"); return (AE_ERROR); } Status = DtCompileTable (PFieldList, InfoTable, &Subtable, TRUE); if (ACPI_FAILURE (Status)) { return (Status); } DtInsertSubtable (ParentTable, Subtable); } } DtPopSubtable (); } return (AE_OK); } /****************************************************************************** * * FUNCTION: DtCompileMadt * * PARAMETERS: List - Current field list pointer * * RETURN: Status * * DESCRIPTION: Compile MADT. * *****************************************************************************/ ACPI_STATUS DtCompileMadt ( void **List) { ACPI_STATUS Status; DT_SUBTABLE *Subtable; DT_SUBTABLE *ParentTable; DT_FIELD **PFieldList = (DT_FIELD **) List; DT_FIELD *SubtableStart; ACPI_SUBTABLE_HEADER *MadtHeader; ACPI_DMTABLE_INFO *InfoTable; Status = DtCompileTable (PFieldList, AcpiDmTableInfoMadt, &Subtable, TRUE); if (ACPI_FAILURE (Status)) { return (Status); } ParentTable = DtPeekSubtable (); DtInsertSubtable (ParentTable, Subtable); while (*PFieldList) { SubtableStart = *PFieldList; Status = DtCompileTable (PFieldList, AcpiDmTableInfoMadtHdr, &Subtable, TRUE); if (ACPI_FAILURE (Status)) { return (Status); } ParentTable = DtPeekSubtable (); DtInsertSubtable (ParentTable, Subtable); DtPushSubtable (Subtable); MadtHeader = ACPI_CAST_PTR (ACPI_SUBTABLE_HEADER, Subtable->Buffer); switch (MadtHeader->Type) { case ACPI_MADT_TYPE_LOCAL_APIC: InfoTable = AcpiDmTableInfoMadt0; break; case ACPI_MADT_TYPE_IO_APIC: InfoTable = AcpiDmTableInfoMadt1; break; case ACPI_MADT_TYPE_INTERRUPT_OVERRIDE: InfoTable = AcpiDmTableInfoMadt2; break; case ACPI_MADT_TYPE_NMI_SOURCE: InfoTable = AcpiDmTableInfoMadt3; break; case ACPI_MADT_TYPE_LOCAL_APIC_NMI: InfoTable = AcpiDmTableInfoMadt4; break; case ACPI_MADT_TYPE_LOCAL_APIC_OVERRIDE: InfoTable = AcpiDmTableInfoMadt5; break; case ACPI_MADT_TYPE_IO_SAPIC: InfoTable = AcpiDmTableInfoMadt6; break; case ACPI_MADT_TYPE_LOCAL_SAPIC: InfoTable = AcpiDmTableInfoMadt7; break; case ACPI_MADT_TYPE_INTERRUPT_SOURCE: InfoTable = AcpiDmTableInfoMadt8; break; case ACPI_MADT_TYPE_LOCAL_X2APIC: InfoTable = AcpiDmTableInfoMadt9; break; case ACPI_MADT_TYPE_LOCAL_X2APIC_NMI: InfoTable = AcpiDmTableInfoMadt10; break; case ACPI_MADT_TYPE_GENERIC_INTERRUPT: InfoTable = AcpiDmTableInfoMadt11; break; case ACPI_MADT_TYPE_GENERIC_DISTRIBUTOR: InfoTable = AcpiDmTableInfoMadt12; break; default: DtFatal (ASL_MSG_UNKNOWN_SUBTABLE, SubtableStart, "MADT"); return (AE_ERROR); } Status = DtCompileTable (PFieldList, InfoTable, &Subtable, TRUE); if (ACPI_FAILURE (Status)) { return (Status); } ParentTable = DtPeekSubtable (); DtInsertSubtable (ParentTable, Subtable); DtPopSubtable (); } return (AE_OK); } /****************************************************************************** * * FUNCTION: DtCompileMcfg * * PARAMETERS: List - Current field list pointer * * RETURN: Status * * DESCRIPTION: Compile MCFG. * *****************************************************************************/ ACPI_STATUS DtCompileMcfg ( void **List) { ACPI_STATUS Status; Status = DtCompileTwoSubtables (List, AcpiDmTableInfoMcfg, AcpiDmTableInfoMcfg0); return (Status); } /****************************************************************************** * * FUNCTION: DtCompileMpst * * PARAMETERS: List - Current field list pointer * * RETURN: Status * * DESCRIPTION: Compile MPST. * *****************************************************************************/ ACPI_STATUS DtCompileMpst ( void **List) { ACPI_STATUS Status; DT_SUBTABLE *Subtable; DT_SUBTABLE *ParentTable; DT_FIELD **PFieldList = (DT_FIELD **) List; ACPI_MPST_CHANNEL *MpstChannelInfo; ACPI_MPST_POWER_NODE *MpstPowerNode; ACPI_MPST_DATA_HDR *MpstDataHeader; UINT16 SubtableCount; UINT32 PowerStateCount; UINT32 ComponentCount; /* Main table */ Status = DtCompileTable (PFieldList, AcpiDmTableInfoMpst, &Subtable, TRUE); if (ACPI_FAILURE (Status)) { return (Status); } ParentTable = DtPeekSubtable (); DtInsertSubtable (ParentTable, Subtable); DtPushSubtable (Subtable); MpstChannelInfo = ACPI_CAST_PTR (ACPI_MPST_CHANNEL, Subtable->Buffer); SubtableCount = MpstChannelInfo->PowerNodeCount; while (*PFieldList && SubtableCount) { /* Subtable: Memory Power Node(s) */ Status = DtCompileTable (PFieldList, AcpiDmTableInfoMpst0, &Subtable, TRUE); if (ACPI_FAILURE (Status)) { return (Status); } ParentTable = DtPeekSubtable (); DtInsertSubtable (ParentTable, Subtable); DtPushSubtable (Subtable); MpstPowerNode = ACPI_CAST_PTR (ACPI_MPST_POWER_NODE, Subtable->Buffer); PowerStateCount = MpstPowerNode->NumPowerStates; ComponentCount = MpstPowerNode->NumPhysicalComponents; ParentTable = DtPeekSubtable (); /* Sub-subtables - Memory Power State Structure(s) */ while (*PFieldList && PowerStateCount) { Status = DtCompileTable (PFieldList, AcpiDmTableInfoMpst0A, &Subtable, TRUE); if (ACPI_FAILURE (Status)) { return (Status); } DtInsertSubtable (ParentTable, Subtable); PowerStateCount--; } /* Sub-subtables - Physical Component ID Structure(s) */ while (*PFieldList && ComponentCount) { Status = DtCompileTable (PFieldList, AcpiDmTableInfoMpst0B, &Subtable, TRUE); if (ACPI_FAILURE (Status)) { return (Status); } DtInsertSubtable (ParentTable, Subtable); ComponentCount--; } SubtableCount--; DtPopSubtable (); } /* Subtable: Count of Memory Power State Characteristic structures */ DtPopSubtable (); Status = DtCompileTable (PFieldList, AcpiDmTableInfoMpst1, &Subtable, TRUE); if (ACPI_FAILURE (Status)) { return (Status); } ParentTable = DtPeekSubtable (); DtInsertSubtable (ParentTable, Subtable); DtPushSubtable (Subtable); MpstDataHeader = ACPI_CAST_PTR (ACPI_MPST_DATA_HDR, Subtable->Buffer); SubtableCount = MpstDataHeader->CharacteristicsCount; ParentTable = DtPeekSubtable (); /* Subtable: Memory Power State Characteristics structure(s) */ while (*PFieldList && SubtableCount) { Status = DtCompileTable (PFieldList, AcpiDmTableInfoMpst2, &Subtable, TRUE); if (ACPI_FAILURE (Status)) { return (Status); } DtInsertSubtable (ParentTable, Subtable); SubtableCount--; } DtPopSubtable (); return (AE_OK); } /****************************************************************************** * * FUNCTION: DtCompileMsct * * PARAMETERS: List - Current field list pointer * * RETURN: Status * * DESCRIPTION: Compile MSCT. * *****************************************************************************/ ACPI_STATUS DtCompileMsct ( void **List) { ACPI_STATUS Status; Status = DtCompileTwoSubtables (List, AcpiDmTableInfoMsct, AcpiDmTableInfoMsct0); return (Status); } /****************************************************************************** * * FUNCTION: DtCompileMtmr * * PARAMETERS: List - Current field list pointer * * RETURN: Status * * DESCRIPTION: Compile MTMR. * *****************************************************************************/ ACPI_STATUS DtCompileMtmr ( void **List) { ACPI_STATUS Status; Status = DtCompileTwoSubtables (List, AcpiDmTableInfoMtmr, AcpiDmTableInfoMtmr0); return (Status); } /****************************************************************************** * * FUNCTION: DtCompilePcct * * PARAMETERS: List - Current field list pointer * * RETURN: Status * * DESCRIPTION: Compile PCCT. * *****************************************************************************/ ACPI_STATUS DtCompilePcct ( void **List) { ACPI_STATUS Status; DT_SUBTABLE *Subtable; DT_SUBTABLE *ParentTable; DT_FIELD **PFieldList = (DT_FIELD **) List; DT_FIELD *SubtableStart; ACPI_SUBTABLE_HEADER *PcctHeader; ACPI_DMTABLE_INFO *InfoTable; Status = DtCompileTable (PFieldList, AcpiDmTableInfoPcct, &Subtable, TRUE); if (ACPI_FAILURE (Status)) { return (Status); } ParentTable = DtPeekSubtable (); DtInsertSubtable (ParentTable, Subtable); while (*PFieldList) { SubtableStart = *PFieldList; Status = DtCompileTable (PFieldList, AcpiDmTableInfoPcctHdr, &Subtable, TRUE); if (ACPI_FAILURE (Status)) { return (Status); } ParentTable = DtPeekSubtable (); DtInsertSubtable (ParentTable, Subtable); DtPushSubtable (Subtable); PcctHeader = ACPI_CAST_PTR (ACPI_SUBTABLE_HEADER, Subtable->Buffer); switch (PcctHeader->Type) { case ACPI_PCCT_TYPE_GENERIC_SUBSPACE: InfoTable = AcpiDmTableInfoPcct0; break; default: DtFatal (ASL_MSG_UNKNOWN_SUBTABLE, SubtableStart, "PCCT"); return (AE_ERROR); } Status = DtCompileTable (PFieldList, InfoTable, &Subtable, TRUE); if (ACPI_FAILURE (Status)) { return (Status); } ParentTable = DtPeekSubtable (); DtInsertSubtable (ParentTable, Subtable); DtPopSubtable (); } return (AE_OK); } /****************************************************************************** * * FUNCTION: DtCompilePmtt * * PARAMETERS: List - Current field list pointer * * RETURN: Status * * DESCRIPTION: Compile PMTT. * *****************************************************************************/ ACPI_STATUS DtCompilePmtt ( void **List) { ACPI_STATUS Status; DT_SUBTABLE *Subtable; DT_SUBTABLE *ParentTable; DT_FIELD **PFieldList = (DT_FIELD **) List; DT_FIELD *SubtableStart; ACPI_PMTT_HEADER *PmttHeader; ACPI_PMTT_CONTROLLER *PmttController; UINT16 DomainCount; UINT8 PrevType = ACPI_PMTT_TYPE_SOCKET; /* Main table */ Status = DtCompileTable (PFieldList, AcpiDmTableInfoPmtt, &Subtable, TRUE); if (ACPI_FAILURE (Status)) { return (Status); } ParentTable = DtPeekSubtable (); DtInsertSubtable (ParentTable, Subtable); DtPushSubtable (Subtable); while (*PFieldList) { SubtableStart = *PFieldList; Status = DtCompileTable (PFieldList, AcpiDmTableInfoPmttHdr, &Subtable, TRUE); if (ACPI_FAILURE (Status)) { return (Status); } PmttHeader = ACPI_CAST_PTR (ACPI_PMTT_HEADER, Subtable->Buffer); while (PrevType >= PmttHeader->Type) { DtPopSubtable (); if (PrevType == ACPI_PMTT_TYPE_SOCKET) { break; } PrevType--; } PrevType = PmttHeader->Type; ParentTable = DtPeekSubtable (); DtInsertSubtable (ParentTable, Subtable); DtPushSubtable (Subtable); switch (PmttHeader->Type) { case ACPI_PMTT_TYPE_SOCKET: /* Subtable: Socket Structure */ Status = DtCompileTable (PFieldList, AcpiDmTableInfoPmtt0, &Subtable, TRUE); if (ACPI_FAILURE (Status)) { return (Status); } ParentTable = DtPeekSubtable (); DtInsertSubtable (ParentTable, Subtable); break; case ACPI_PMTT_TYPE_CONTROLLER: /* Subtable: Memory Controller Structure */ Status = DtCompileTable (PFieldList, AcpiDmTableInfoPmtt1, &Subtable, TRUE); if (ACPI_FAILURE (Status)) { return (Status); } ParentTable = DtPeekSubtable (); DtInsertSubtable (ParentTable, Subtable); PmttController = ACPI_CAST_PTR (ACPI_PMTT_CONTROLLER, (Subtable->Buffer - sizeof (ACPI_PMTT_HEADER))); DomainCount = PmttController->DomainCount; while (DomainCount) { Status = DtCompileTable (PFieldList, AcpiDmTableInfoPmtt1a, &Subtable, TRUE); if (ACPI_FAILURE (Status)) { return (Status); } DtInsertSubtable (ParentTable, Subtable); DomainCount--; } break; case ACPI_PMTT_TYPE_DIMM: /* Subtable: Physical Component Structure */ Status = DtCompileTable (PFieldList, AcpiDmTableInfoPmtt2, &Subtable, TRUE); if (ACPI_FAILURE (Status)) { return (Status); } ParentTable = DtPeekSubtable (); DtInsertSubtable (ParentTable, Subtable); break; default: DtFatal (ASL_MSG_UNKNOWN_SUBTABLE, SubtableStart, "PMTT"); return (AE_ERROR); } } return (Status); } /****************************************************************************** * * FUNCTION: DtCompileRsdt * * PARAMETERS: List - Current field list pointer * * RETURN: Status * * DESCRIPTION: Compile RSDT. * *****************************************************************************/ ACPI_STATUS DtCompileRsdt ( void **List) { DT_SUBTABLE *Subtable; DT_SUBTABLE *ParentTable; DT_FIELD *FieldList = *(DT_FIELD **) List; UINT32 Address; ParentTable = DtPeekSubtable (); while (FieldList) { DtCompileInteger ((UINT8 *) &Address, FieldList, 4, DT_NON_ZERO); DtCreateSubtable ((UINT8 *) &Address, 4, &Subtable); DtInsertSubtable (ParentTable, Subtable); FieldList = FieldList->Next; } return (AE_OK); } /****************************************************************************** * * FUNCTION: DtCompileS3pt * * PARAMETERS: PFieldList - Current field list pointer * * RETURN: Status * * DESCRIPTION: Compile S3PT (Pointed to by FPDT) * *****************************************************************************/ ACPI_STATUS DtCompileS3pt ( DT_FIELD **PFieldList) { ACPI_STATUS Status; ACPI_S3PT_HEADER *S3ptHeader; DT_SUBTABLE *Subtable; DT_SUBTABLE *ParentTable; ACPI_DMTABLE_INFO *InfoTable; DT_FIELD *SubtableStart; Status = DtCompileTable (PFieldList, AcpiDmTableInfoS3pt, &Gbl_RootTable, TRUE); if (ACPI_FAILURE (Status)) { return (Status); } DtPushSubtable (Gbl_RootTable); while (*PFieldList) { SubtableStart = *PFieldList; Status = DtCompileTable (PFieldList, AcpiDmTableInfoS3ptHdr, &Subtable, TRUE); if (ACPI_FAILURE (Status)) { return (Status); } ParentTable = DtPeekSubtable (); DtInsertSubtable (ParentTable, Subtable); DtPushSubtable (Subtable); S3ptHeader = ACPI_CAST_PTR (ACPI_S3PT_HEADER, Subtable->Buffer); switch (S3ptHeader->Type) { case ACPI_S3PT_TYPE_RESUME: InfoTable = AcpiDmTableInfoS3pt0; break; case ACPI_S3PT_TYPE_SUSPEND: InfoTable = AcpiDmTableInfoS3pt1; break; default: DtFatal (ASL_MSG_UNKNOWN_SUBTABLE, SubtableStart, "S3PT"); return (AE_ERROR); } Status = DtCompileTable (PFieldList, InfoTable, &Subtable, TRUE); if (ACPI_FAILURE (Status)) { return (Status); } ParentTable = DtPeekSubtable (); DtInsertSubtable (ParentTable, Subtable); DtPopSubtable (); } return (AE_OK); } /****************************************************************************** * * FUNCTION: DtCompileSlic * * PARAMETERS: List - Current field list pointer * * RETURN: Status * * DESCRIPTION: Compile SLIC. * *****************************************************************************/ ACPI_STATUS DtCompileSlic ( void **List) { ACPI_STATUS Status; DT_SUBTABLE *Subtable; DT_SUBTABLE *ParentTable; DT_FIELD **PFieldList = (DT_FIELD **) List; DT_FIELD *SubtableStart; ACPI_SLIC_HEADER *SlicHeader; ACPI_DMTABLE_INFO *InfoTable; while (*PFieldList) { SubtableStart = *PFieldList; Status = DtCompileTable (PFieldList, AcpiDmTableInfoSlicHdr, &Subtable, TRUE); if (ACPI_FAILURE (Status)) { return (Status); } ParentTable = DtPeekSubtable (); DtInsertSubtable (ParentTable, Subtable); DtPushSubtable (Subtable); SlicHeader = ACPI_CAST_PTR (ACPI_SLIC_HEADER, Subtable->Buffer); switch (SlicHeader->Type) { case ACPI_SLIC_TYPE_PUBLIC_KEY: InfoTable = AcpiDmTableInfoSlic0; break; case ACPI_SLIC_TYPE_WINDOWS_MARKER: InfoTable = AcpiDmTableInfoSlic1; break; default: DtFatal (ASL_MSG_UNKNOWN_SUBTABLE, SubtableStart, "SLIC"); return (AE_ERROR); } Status = DtCompileTable (PFieldList, InfoTable, &Subtable, TRUE); if (ACPI_FAILURE (Status)) { return (Status); } ParentTable = DtPeekSubtable (); DtInsertSubtable (ParentTable, Subtable); DtPopSubtable (); } return (AE_OK); } /****************************************************************************** * * FUNCTION: DtCompileSlit * * PARAMETERS: List - Current field list pointer * * RETURN: Status * * DESCRIPTION: Compile SLIT. * *****************************************************************************/ ACPI_STATUS DtCompileSlit ( void **List) { ACPI_STATUS Status; DT_SUBTABLE *Subtable; DT_SUBTABLE *ParentTable; DT_FIELD **PFieldList = (DT_FIELD **) List; DT_FIELD *FieldList; UINT32 Localities; UINT8 *LocalityBuffer; Status = DtCompileTable (PFieldList, AcpiDmTableInfoSlit, &Subtable, TRUE); if (ACPI_FAILURE (Status)) { return (Status); } ParentTable = DtPeekSubtable (); DtInsertSubtable (ParentTable, Subtable); Localities = *ACPI_CAST_PTR (UINT32, Subtable->Buffer); LocalityBuffer = UtLocalCalloc (Localities); /* Compile each locality buffer */ FieldList = *PFieldList; while (FieldList) { DtCompileBuffer (LocalityBuffer, FieldList->Value, FieldList, Localities); DtCreateSubtable (LocalityBuffer, Localities, &Subtable); DtInsertSubtable (ParentTable, Subtable); FieldList = FieldList->Next; } ACPI_FREE (LocalityBuffer); return (AE_OK); } /****************************************************************************** * * FUNCTION: DtCompileSrat * * PARAMETERS: List - Current field list pointer * * RETURN: Status * * DESCRIPTION: Compile SRAT. * *****************************************************************************/ ACPI_STATUS DtCompileSrat ( void **List) { ACPI_STATUS Status; DT_SUBTABLE *Subtable; DT_SUBTABLE *ParentTable; DT_FIELD **PFieldList = (DT_FIELD **) List; DT_FIELD *SubtableStart; ACPI_SUBTABLE_HEADER *SratHeader; ACPI_DMTABLE_INFO *InfoTable; Status = DtCompileTable (PFieldList, AcpiDmTableInfoSrat, &Subtable, TRUE); if (ACPI_FAILURE (Status)) { return (Status); } ParentTable = DtPeekSubtable (); DtInsertSubtable (ParentTable, Subtable); while (*PFieldList) { SubtableStart = *PFieldList; Status = DtCompileTable (PFieldList, AcpiDmTableInfoSratHdr, &Subtable, TRUE); if (ACPI_FAILURE (Status)) { return (Status); } ParentTable = DtPeekSubtable (); DtInsertSubtable (ParentTable, Subtable); DtPushSubtable (Subtable); SratHeader = ACPI_CAST_PTR (ACPI_SUBTABLE_HEADER, Subtable->Buffer); switch (SratHeader->Type) { case ACPI_SRAT_TYPE_CPU_AFFINITY: InfoTable = AcpiDmTableInfoSrat0; break; case ACPI_SRAT_TYPE_MEMORY_AFFINITY: InfoTable = AcpiDmTableInfoSrat1; break; case ACPI_SRAT_TYPE_X2APIC_CPU_AFFINITY: InfoTable = AcpiDmTableInfoSrat2; break; default: DtFatal (ASL_MSG_UNKNOWN_SUBTABLE, SubtableStart, "SRAT"); return (AE_ERROR); } Status = DtCompileTable (PFieldList, InfoTable, &Subtable, TRUE); if (ACPI_FAILURE (Status)) { return (Status); } ParentTable = DtPeekSubtable (); DtInsertSubtable (ParentTable, Subtable); DtPopSubtable (); } return (AE_OK); } /****************************************************************************** * * FUNCTION: DtGetGenericTableInfo * * PARAMETERS: Name - Generic type name * * RETURN: Info entry * * DESCRIPTION: Obtain table info for a generic name entry * *****************************************************************************/ ACPI_DMTABLE_INFO * DtGetGenericTableInfo ( char *Name) { ACPI_DMTABLE_INFO *Info; UINT32 i; if (!Name) { return (NULL); } /* Search info table for name match */ for (i = 0; ; i++) { Info = AcpiDmTableInfoGeneric[i]; if (Info->Opcode == ACPI_DMT_EXIT) { Info = NULL; break; } /* Use caseless compare for generic keywords */ if (!AcpiUtStricmp (Name, Info->Name)) { break; } } return (Info); } /****************************************************************************** * * FUNCTION: DtCompileUefi * * PARAMETERS: List - Current field list pointer * * RETURN: Status * * DESCRIPTION: Compile UEFI. * *****************************************************************************/ ACPI_STATUS DtCompileUefi ( void **List) { ACPI_STATUS Status; DT_SUBTABLE *Subtable; DT_SUBTABLE *ParentTable; DT_FIELD **PFieldList = (DT_FIELD **) List; UINT16 *DataOffset; /* Compile the predefined portion of the UEFI table */ Status = DtCompileTable (PFieldList, AcpiDmTableInfoUefi, &Subtable, TRUE); if (ACPI_FAILURE (Status)) { return (Status); } DataOffset = (UINT16 *) (Subtable->Buffer + 16); *DataOffset = sizeof (ACPI_TABLE_UEFI); ParentTable = DtPeekSubtable (); DtInsertSubtable (ParentTable, Subtable); /* * Compile the "generic" portion of the UEFI table. This * part of the table is not predefined and any of the generic * operators may be used. */ DtCompileGeneric ((void **) PFieldList); return (AE_OK); } /****************************************************************************** * * FUNCTION: DtCompileVrtc * * PARAMETERS: List - Current field list pointer * * RETURN: Status * * DESCRIPTION: Compile VRTC. * *****************************************************************************/ ACPI_STATUS DtCompileVrtc ( void **List) { ACPI_STATUS Status; Status = DtCompileTwoSubtables (List, AcpiDmTableInfoVrtc, AcpiDmTableInfoVrtc0); return (Status); } /****************************************************************************** * * FUNCTION: DtCompileWdat * * PARAMETERS: List - Current field list pointer * * RETURN: Status * * DESCRIPTION: Compile WDAT. * *****************************************************************************/ ACPI_STATUS DtCompileWdat ( void **List) { ACPI_STATUS Status; Status = DtCompileTwoSubtables (List, AcpiDmTableInfoWdat, AcpiDmTableInfoWdat0); return (Status); } /****************************************************************************** * * FUNCTION: DtCompileXsdt * * PARAMETERS: List - Current field list pointer * * RETURN: Status * * DESCRIPTION: Compile XSDT. * *****************************************************************************/ ACPI_STATUS DtCompileXsdt ( void **List) { DT_SUBTABLE *Subtable; DT_SUBTABLE *ParentTable; DT_FIELD *FieldList = *(DT_FIELD **) List; UINT64 Address; ParentTable = DtPeekSubtable (); while (FieldList) { DtCompileInteger ((UINT8 *) &Address, FieldList, 8, DT_NON_ZERO); DtCreateSubtable ((UINT8 *) &Address, 8, &Subtable); DtInsertSubtable (ParentTable, Subtable); FieldList = FieldList->Next; } return (AE_OK); } /****************************************************************************** * * FUNCTION: DtCompileGeneric * * PARAMETERS: List - Current field list pointer * * RETURN: Status * * DESCRIPTION: Compile generic unknown table. * *****************************************************************************/ ACPI_STATUS DtCompileGeneric ( void **List) { ACPI_STATUS Status; DT_SUBTABLE *Subtable; DT_SUBTABLE *ParentTable; DT_FIELD **PFieldList = (DT_FIELD **) List; ACPI_DMTABLE_INFO *Info; ParentTable = DtPeekSubtable (); /* * Compile the "generic" portion of the table. This * part of the table is not predefined and any of the generic * operators may be used. */ /* Find any and all labels in the entire generic portion */ DtDetectAllLabels (*PFieldList); /* Now we can actually compile the parse tree */ while (*PFieldList) { Info = DtGetGenericTableInfo ((*PFieldList)->Name); if (!Info) { sprintf (MsgBuffer, "Generic data type \"%s\" not found", (*PFieldList)->Name); DtNameError (ASL_ERROR, ASL_MSG_INVALID_FIELD_NAME, (*PFieldList), MsgBuffer); *PFieldList = (*PFieldList)->Next; continue; } Status = DtCompileTable (PFieldList, Info, &Subtable, TRUE); if (ACPI_SUCCESS (Status)) { DtInsertSubtable (ParentTable, Subtable); } else { *PFieldList = (*PFieldList)->Next; if (Status == AE_NOT_FOUND) { sprintf (MsgBuffer, "Generic data type \"%s\" not found", (*PFieldList)->Name); DtNameError (ASL_ERROR, ASL_MSG_INVALID_FIELD_NAME, (*PFieldList), MsgBuffer); } } } return (AE_OK); } src/acpica/source/compiler/dttemplate.c000066400000000000000000000363721231470457100205250ustar00rootroot00000000000000/****************************************************************************** * * Module Name: dttemplate - ACPI table template generation * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #include "aslcompiler.h" #include "acapps.h" #include "dtcompiler.h" #include "dttemplate.h" /* Contains the hex ACPI table templates */ #define _COMPONENT DT_COMPILER ACPI_MODULE_NAME ("dttemplate") /* Local prototypes */ static BOOLEAN AcpiUtIsSpecialTable ( char *Signature); static ACPI_STATUS DtCreateOneTemplate ( char *Signature, ACPI_DMTABLE_DATA *TableData); static ACPI_STATUS DtCreateAllTemplates ( void); /******************************************************************************* * * FUNCTION: AcpiUtIsSpecialTable * * PARAMETERS: Signature - ACPI table signature * * RETURN: TRUE if signature is a special ACPI table * * DESCRIPTION: Check for valid ACPI tables that are not in the main ACPI * table data structure (AcpiDmTableData). * ******************************************************************************/ static BOOLEAN AcpiUtIsSpecialTable ( char *Signature) { if (ACPI_COMPARE_NAME (Signature, ACPI_SIG_DSDT) || ACPI_COMPARE_NAME (Signature, ACPI_SIG_SSDT) || ACPI_COMPARE_NAME (Signature, ACPI_SIG_FACS) || ACPI_COMPARE_NAME (Signature, ACPI_RSDP_NAME)) { return (TRUE); } return (FALSE); } /******************************************************************************* * * FUNCTION: DtCreateTemplates * * PARAMETERS: Signature - ACPI table signature * * RETURN: Status * * DESCRIPTION: Create one or more template files. * ******************************************************************************/ ACPI_STATUS DtCreateTemplates ( char *Signature) { ACPI_DMTABLE_DATA *TableData; ACPI_STATUS Status; AslInitializeGlobals (); /* Default (no signature) is DSDT */ if (!Signature) { Signature = "DSDT"; goto GetTemplate; } AcpiUtStrupr (Signature); if (!ACPI_STRCMP (Signature, "ALL") || !ACPI_STRCMP (Signature, "*")) { /* Create all available/known templates */ Status = DtCreateAllTemplates (); return (Status); } /* * Validate signature and get the template data: * 1) Signature must be 4 characters * 2) Signature must be a recognized ACPI table * 3) There must be a template associated with the signature */ if (strlen (Signature) != ACPI_NAME_SIZE) { fprintf (stderr, "%s: Invalid ACPI table signature (length must be 4 characters)\n", Signature); return (AE_ERROR); } /* * Some slack for the two strange tables whose name is different than * their signatures: MADT->APIC and FADT->FACP. */ if (!strcmp (Signature, "MADT")) { Signature = "APIC"; } else if (!strcmp (Signature, "FADT")) { Signature = "FACP"; } GetTemplate: TableData = AcpiDmGetTableData (Signature); if (TableData) { if (!TableData->Template) { fprintf (stderr, "%4.4s: No template available\n", Signature); return (AE_ERROR); } } else if (!AcpiUtIsSpecialTable (Signature)) { fprintf (stderr, "%4.4s: Unrecognized ACPI table signature\n", Signature); return (AE_ERROR); } Status = AdInitialize (); if (ACPI_FAILURE (Status)) { return (Status); } Status = DtCreateOneTemplate (Signature, TableData); return (Status); } /******************************************************************************* * * FUNCTION: DtCreateAllTemplates * * PARAMETERS: None * * RETURN: Status * * DESCRIPTION: Create all currently defined template files * ******************************************************************************/ static ACPI_STATUS DtCreateAllTemplates ( void) { ACPI_DMTABLE_DATA *TableData; ACPI_STATUS Status; Status = AdInitialize (); if (ACPI_FAILURE (Status)) { return (Status); } fprintf (stderr, "Creating all supported Template files\n"); /* Walk entire ACPI table data structure */ for (TableData = AcpiDmTableData; TableData->Signature; TableData++) { /* If table has a template, create the template file */ if (TableData->Template) { Status = DtCreateOneTemplate (TableData->Signature, TableData); if (ACPI_FAILURE (Status)) { return (Status); } } } /* * Create the special ACPI tables: * 1) DSDT/SSDT are AML tables, not data tables * 2) FACS and RSDP have non-standard headers */ Status = DtCreateOneTemplate (ACPI_SIG_DSDT, NULL); if (ACPI_FAILURE (Status)) { return (Status); } Status = DtCreateOneTemplate (ACPI_SIG_SSDT, NULL); if (ACPI_FAILURE (Status)) { return (Status); } Status = DtCreateOneTemplate (ACPI_SIG_FACS, NULL); if (ACPI_FAILURE (Status)) { return (Status); } Status = DtCreateOneTemplate (ACPI_RSDP_NAME, NULL); if (ACPI_FAILURE (Status)) { return (Status); } return (AE_OK); } /******************************************************************************* * * FUNCTION: DtCreateOneTemplate * * PARAMETERS: Signature - ACPI signature, NULL terminated. * TableData - Entry in ACPI table data structure. * NULL if a special ACPI table. * * RETURN: Status * * DESCRIPTION: Create one template source file for the requested ACPI table. * ******************************************************************************/ static ACPI_STATUS DtCreateOneTemplate ( char *Signature, ACPI_DMTABLE_DATA *TableData) { char *DisasmFilename; FILE *File; ACPI_STATUS Status = AE_OK; ACPI_SIZE Actual; /* New file will have a .asl suffix */ DisasmFilename = FlGenerateFilename ( Signature, FILE_SUFFIX_ASL_CODE); if (!DisasmFilename) { fprintf (stderr, "Could not generate output filename\n"); return (AE_ERROR); } /* Probably should prompt to overwrite the file */ AcpiUtStrlwr (DisasmFilename); File = fopen (DisasmFilename, "w+"); if (!File) { fprintf (stderr, "Could not open output file %s\n", DisasmFilename); return (AE_ERROR); } /* Emit the common file header */ AcpiOsRedirectOutput (File); AcpiOsPrintf ("/*\n"); AcpiOsPrintf (ACPI_COMMON_HEADER ("iASL Compiler/Disassembler", " * ")); AcpiOsPrintf (" * Template for [%4.4s] ACPI Table\n", Signature); /* Dump the actual ACPI table */ if (TableData) { /* Normal case, tables that appear in AcpiDmTableData */ if (Gbl_VerboseTemplates) { AcpiOsPrintf (" * Format: [HexOffset DecimalOffset ByteLength]" " FieldName : HexFieldValue\n */\n\n"); } else { AcpiOsPrintf (" * Format: [ByteLength]" " FieldName : HexFieldValue\n */\n\n"); } AcpiDmDumpDataTable (ACPI_CAST_PTR (ACPI_TABLE_HEADER, TableData->Template)); } else { /* Special ACPI tables - DSDT, SSDT, FADT, RSDP */ AcpiOsPrintf (" */\n\n"); if (ACPI_COMPARE_NAME (Signature, ACPI_SIG_DSDT)) { Actual = fwrite (TemplateDsdt, 1, sizeof (TemplateDsdt) -1, File); if (Actual != sizeof (TemplateDsdt) -1) { fprintf (stderr, "Could not write to output file %s\n", DisasmFilename); Status = AE_ERROR; goto Cleanup; } } else if (ACPI_COMPARE_NAME (Signature, ACPI_SIG_SSDT)) { Actual = fwrite (TemplateSsdt, 1, sizeof (TemplateSsdt) -1, File); if (Actual != sizeof (TemplateSsdt) -1) { fprintf (stderr, "Could not write to output file %s\n", DisasmFilename); Status = AE_ERROR; goto Cleanup; } } else if (ACPI_COMPARE_NAME (Signature, ACPI_SIG_FACS)) /* FADT */ { AcpiDmDumpDataTable (ACPI_CAST_PTR (ACPI_TABLE_HEADER, TemplateFacs)); } else if (ACPI_COMPARE_NAME (Signature, ACPI_RSDP_NAME)) { AcpiDmDumpDataTable (ACPI_CAST_PTR (ACPI_TABLE_HEADER, TemplateRsdp)); } else { fprintf (stderr, "%4.4s, Unrecognized ACPI table signature\n", Signature); Status = AE_ERROR; goto Cleanup; } } fprintf (stderr, "Created ACPI table template for [%4.4s], written to \"%s\"\n", Signature, DisasmFilename); Cleanup: fclose (File); AcpiOsRedirectOutput (stdout); ACPI_FREE (DisasmFilename); return (Status); } src/acpica/source/compiler/dttemplate.h000066400000000000000000002047751231470457100205360ustar00rootroot00000000000000/****************************************************************************** * * Module Name: dttemplate.h - ACPI table template definitions * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #ifndef __DTTEMPLATE_H #define __DTTEMPLATE_H /* Special templates for DSDT and SSDT (AML byte-code tables) */ const char TemplateDsdt[] = "DefinitionBlock (\"dsdt.aml\", \"DSDT\", 2, \"Intel\", \"Template\", 0x00000001)\n" "{\n" " Method (MAIN, 0, NotSerialized)\n" " {\n" " Return (Zero)\n" " }\n" "}\n\n"; const char TemplateSsdt[] = "DefinitionBlock (\"ssdt.aml\", \"SSDT\", 2, \"Intel\", \"Template\", 0x00000001)\n" "{\n" " Method (MAIN, 0, NotSerialized)\n" " {\n" " Return (Zero)\n" " }\n" "}\n\n"; /* Templates for ACPI data tables */ const unsigned char TemplateAsf[] = { 0x41,0x53,0x46,0x21,0x72,0x00,0x00,0x00, /* 00000000 "ASF!r..." */ 0x10,0x0B,0x49,0x4E,0x54,0x45,0x4C,0x20, /* 00000008 "..INTEL " */ 0x54,0x45,0x4D,0x50,0x4C,0x41,0x54,0x45, /* 00000010 "TEMPLATE" */ 0x01,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C, /* 00000018 "....INTL" */ 0x28,0x05,0x10,0x20,0x00,0x00,0x10,0x00, /* 00000020 "(.. ...." */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000028 "........" */ 0x00,0x00,0x00,0x00,0x01,0x00,0x14,0x00, /* 00000030 "........" */ 0x00,0x00,0x01,0x0C,0x00,0x00,0x00,0x00, /* 00000038 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000040 "........" */ 0x02,0x00,0x0C,0x00,0x01,0x04,0x00,0x00, /* 00000048 "........" */ 0x00,0x00,0x00,0x00,0x03,0x00,0x17,0x00, /* 00000050 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000058 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000060 "........" */ 0x00,0x00,0x00,0x84,0x00,0x07,0x00,0x00, /* 00000068 "........" */ 0x01,0x00 /* 00000070 ".." */ }; const unsigned char TemplateBgrt[] = { 0x42,0x47,0x52,0x54,0x38,0x00,0x00,0x00, /* 00000000 "BGRT8..." */ 0x01,0x0D,0x49,0x4E,0x54,0x45,0x4C,0x20, /* 00000008 "..INTEL " */ 0x54,0x45,0x4D,0x50,0x4C,0x41,0x54,0x45, /* 00000010 "TEMPLATE" */ 0x01,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C, /* 00000018 "....INTL" */ 0x23,0x06,0x11,0x20,0x01,0x00,0x00,0x00, /* 00000020 "#.. ...." */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000028 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 /* 00000030 "........" */ }; const unsigned char TemplateBert[] = { 0x42,0x45,0x52,0x54,0x30,0x00,0x00,0x00, /* 00000000 "BERT0..." */ 0x01,0x15,0x49,0x4E,0x54,0x45,0x4C,0x20, /* 00000008 "..INTEL " */ 0x54,0x45,0x4D,0x50,0x4C,0x41,0x54,0x45, /* 00000010 "TEMPLATE" */ 0x01,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C, /* 00000018 "....INTL" */ 0x28,0x05,0x10,0x20,0x00,0x00,0x00,0x00, /* 00000020 "(.. ...." */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 /* 00000028 "........" */ }; const unsigned char TemplateBoot[] = { 0x42,0x4F,0x4F,0x54,0x28,0x00,0x00,0x00, /* 00000000 "BOOT(..." */ 0x01,0x0D,0x49,0x4E,0x54,0x45,0x4C,0x20, /* 00000008 "..INTEL " */ 0x54,0x45,0x4D,0x50,0x4C,0x41,0x54,0x45, /* 00000010 "TEMPLATE" */ 0x00,0x00,0x04,0x06,0x49,0x4E,0x54,0x4C, /* 00000018 "....INTL" */ 0x28,0x05,0x10,0x20,0x00,0x00,0x00,0x00 /* 00000020 "(.. ...." */ }; const unsigned char TemplateCpep[] = { 0x43,0x50,0x45,0x50,0x34,0x00,0x00,0x00, /* 00000000 "CPEP4..." */ 0x01,0x0F,0x49,0x4E,0x54,0x45,0x4C,0x20, /* 00000008 "..INTEL " */ 0x54,0x45,0x4D,0x50,0x4C,0x41,0x54,0x45, /* 00000010 "TEMPLATE" */ 0x00,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C, /* 00000018 "....INTL" */ 0x28,0x05,0x10,0x20,0x00,0x00,0x00,0x00, /* 00000020 "(.. ...." */ 0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00, /* 00000028 "........" */ 0x00,0x00,0x00,0x00 /* 00000030 "...." */ }; const unsigned char TemplateCsrt[] = { 0x43,0x53,0x52,0x54,0x4C,0x01,0x00,0x00, /* 00000000 "CSRTL..." */ 0x01,0x0D,0x49,0x4E,0x54,0x45,0x4C,0x20, /* 00000008 "..INTEL " */ 0x54,0x45,0x4D,0x50,0x4C,0x41,0x54,0x45, /* 00000010 "TEMPLATE" */ 0x01,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C, /* 00000018 "....INTL" */ 0x14,0x11,0x12,0x20,0x88,0x00,0x00,0x00, /* 00000020 "... ...." */ 0x49,0x4E,0x54,0x4C,0x00,0x00,0x00,0x00, /* 00000028 "INTL...." */ 0x60,0x9C,0x00,0x00,0x02,0x00,0x00,0x00, /* 00000030 "`......." */ 0x1C,0x00,0x00,0x00,0x01,0x00,0x00,0x00, /* 00000038 "........" */ 0x00,0x00,0xA0,0xB3,0x00,0x00,0x00,0x00, /* 00000040 "........" */ 0x2A,0x00,0x00,0x00,0x02,0x00,0x06,0x20, /* 00000048 "*...... " */ 0x00,0x00,0x10,0x00,0xFF,0x0F,0x00,0x00, /* 00000050 "........" */ 0x0C,0x00,0x00,0x00,0x03,0x00,0x01,0x00, /* 00000058 "........" */ 0x53,0x50,0x49,0x20,0x0C,0x00,0x00,0x00, /* 00000060 "SPI ...." */ 0x03,0x00,0x00,0x00,0x43,0x48,0x41,0x30, /* 00000068 "....CHA0" */ 0x0C,0x00,0x00,0x00,0x03,0x00,0x00,0x00, /* 00000070 "........" */ 0x43,0x48,0x41,0x31,0x0C,0x00,0x00,0x00, /* 00000078 "CHA1...." */ 0x03,0x00,0x00,0x00,0x43,0x48,0x41,0x32, /* 00000080 "....CHA2" */ 0x0C,0x00,0x00,0x00,0x03,0x00,0x00,0x00, /* 00000088 "........" */ 0x43,0x48,0x41,0x33,0x0C,0x00,0x00,0x00, /* 00000090 "CHA3...." */ 0x03,0x00,0x00,0x00,0x43,0x48,0x41,0x34, /* 00000098 "....CHA4" */ 0x0C,0x00,0x00,0x00,0x03,0x00,0x00,0x00, /* 000000A0 "........" */ 0x43,0x48,0x41,0x35,0xA0,0x00,0x00,0x00, /* 000000A8 "CHA5...." */ 0x49,0x4E,0x54,0x4C,0x00,0x00,0x00,0x00, /* 000000B0 "INTL...." */ 0x60,0x9C,0x00,0x00,0x03,0x00,0x00,0x00, /* 000000B8 "`......." */ 0x1C,0x00,0x00,0x00,0x01,0x00,0x00,0x00, /* 000000C0 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000C8 "........" */ 0x2B,0x00,0x00,0x00,0x02,0x00,0x08,0x20, /* 000000D0 "+...... " */ 0x10,0x00,0x10,0x00,0xFF,0x0F,0x00,0x00, /* 000000D8 "........" */ 0x0C,0x00,0x00,0x00,0x03,0x00,0x01,0x00, /* 000000E0 "........" */ 0x49,0x32,0x43,0x20,0x0C,0x00,0x00,0x00, /* 000000E8 "I2C ...." */ 0x03,0x00,0x00,0x00,0x43,0x48,0x41,0x30, /* 000000F0 "....CHA0" */ 0x0C,0x00,0x00,0x00,0x03,0x00,0x00,0x00, /* 000000F8 "........" */ 0x43,0x48,0x41,0x31,0x0C,0x00,0x00,0x00, /* 00000100 "CHA1...." */ 0x03,0x00,0x00,0x00,0x43,0x48,0x41,0x32, /* 00000108 "....CHA2" */ 0x0C,0x00,0x00,0x00,0x03,0x00,0x00,0x00, /* 00000110 "........" */ 0x43,0x48,0x41,0x33,0x0C,0x00,0x00,0x00, /* 00000118 "CHA3...." */ 0x03,0x00,0x00,0x00,0x43,0x48,0x41,0x34, /* 00000120 "....CHA4" */ 0x0C,0x00,0x00,0x00,0x03,0x00,0x00,0x00, /* 00000128 "........" */ 0x43,0x48,0x41,0x35,0x0C,0x00,0x00,0x00, /* 00000130 "CHA5...." */ 0x03,0x00,0x00,0x00,0x43,0x48,0x41,0x36, /* 00000138 "....CHA6" */ 0x0C,0x00,0x00,0x00,0x03,0x00,0x00,0x00, /* 00000140 "........" */ 0x43,0x48,0x41,0x37 /* 00000148 "CHA7" */ }; const unsigned char TemplateDbg2[] = { 0x44,0x42,0x47,0x32,0xB2,0x00,0x00,0x00, /* 00000000 "DBG2...." */ 0x01,0xBA,0x49,0x4E,0x54,0x45,0x4C,0x20, /* 00000008 "..INTEL " */ 0x54,0x45,0x4D,0x50,0x4C,0x41,0x54,0x45, /* 00000010 "TEMPLATE" */ 0x00,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C, /* 00000018 "....INTL" */ 0x15,0x11,0x13,0x20,0x2C,0x00,0x00,0x00, /* 00000020 "... ,..." */ 0x02,0x00,0x00,0x00,0xEE,0x3F,0x00,0x02, /* 00000028 ".....?.." */ 0x09,0x00,0x36,0x00,0x00,0x00,0x00,0x00, /* 00000030 "..6....." */ 0x00,0x80,0x00,0x00,0x00,0x00,0x16,0x00, /* 00000038 "........" */ 0x2E,0x00,0x01,0x32,0x00,0x03,0x88,0x77, /* 00000040 "...2...w" */ 0x66,0x55,0x44,0x33,0x22,0x11,0x01,0x64, /* 00000048 "fUD3"..d" */ 0x00,0x04,0x11,0x00,0xFF,0xEE,0xDD,0xCC, /* 00000050 "........" */ 0xBB,0xAA,0x10,0x32,0x54,0x76,0x98,0xBA, /* 00000058 "...2Tv.." */ 0xDC,0xFE,0x4D,0x79,0x44,0x65,0x76,0x69, /* 00000060 "..MyDevi" */ 0x63,0x65,0x00,0xEE,0x47,0x00,0x01,0x11, /* 00000068 "ce..G..." */ 0x00,0x26,0x00,0x10,0x00,0x37,0x00,0x00, /* 00000070 ".&...7.." */ 0x80,0x00,0x00,0x00,0x00,0x16,0x00,0x22, /* 00000078 "......."" */ 0x00,0x01,0x64,0x00,0x04,0x11,0x00,0xFF, /* 00000080 "..d....." */ 0xEE,0xDD,0xCC,0xBB,0xAA,0x98,0xBA,0xDC, /* 00000088 "........" */ 0xFE,0x5C,0x5C,0x5F,0x53,0x42,0x5F,0x2E, /* 00000090 ".\\_SB_." */ 0x50,0x43,0x49,0x30,0x2E,0x44,0x42,0x47, /* 00000098 "PCI0.DBG" */ 0x50,0x00,0x41,0x42,0x43,0x44,0x45,0x46, /* 000000A0 "P.ABCDEF" */ 0x47,0x48,0x49,0x50,0x51,0x52,0x53,0x54, /* 000000A8 "GHIPQRST" */ 0x55,0x56 /* 000000B0 "UV" */ }; const unsigned char TemplateDbgp[] = { 0x44,0x42,0x47,0x50,0x34,0x00,0x00,0x00, /* 00000000 "DBGP4..." */ 0x01,0x1A,0x49,0x4E,0x54,0x45,0x4C,0x20, /* 00000008 "..INTEL " */ 0x54,0x45,0x4D,0x50,0x4C,0x41,0x54,0x45, /* 00000010 "TEMPLATE" */ 0x00,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C, /* 00000018 "....INTL" */ 0x28,0x05,0x10,0x20,0x00,0x00,0x00,0x00, /* 00000020 "(.. ...." */ 0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000028 "........" */ 0x00,0x00,0x00,0x00 /* 00000030 "...." */ }; const unsigned char TemplateDmar[] = { 0x44,0x4D,0x41,0x52,0x8C,0x00,0x00,0x00, /* 00000000 "DMAR...." */ 0x01,0x03,0x49,0x4E,0x54,0x45,0x4C,0x20, /* 00000008 "..INTEL " */ 0x54,0x45,0x4D,0x50,0x4C,0x41,0x54,0x45, /* 00000010 "TEMPLATE" */ 0x01,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C, /* 00000018 "....INTL" */ 0x17,0x05,0x13,0x20,0x2F,0x01,0x00,0x00, /* 00000020 "... /..." */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000028 "........" */ 0x00,0x00,0x18,0x00,0x01,0x00,0x00,0x00, /* 00000030 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000038 "........" */ 0x03,0x08,0x00,0x00,0x08,0x00,0x00,0x01, /* 00000040 "........" */ 0x01,0x00,0x20,0x00,0x00,0x00,0x00,0x00, /* 00000048 ".. ....." */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000050 "........" */ 0xFF,0x0F,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000058 "........" */ 0x01,0x08,0x00,0x00,0x00,0x00,0x00,0x02, /* 00000060 "........" */ 0x02,0x00,0x10,0x00,0x00,0x00,0x00,0x00, /* 00000068 "........" */ 0x02,0x08,0x00,0x00,0x00,0x00,0x00,0x03, /* 00000070 "........" */ 0x03,0x00,0x14,0x00,0x00,0x00,0x00,0x00, /* 00000078 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000080 "........" */ 0x00,0x00,0x00,0x00 /* 00000088 "...." */ }; const unsigned char TemplateEcdt[] = { 0x45,0x43,0x44,0x54,0x42,0x00,0x00,0x00, /* 00000000 "ECDTB..." */ 0x01,0x2D,0x49,0x4E,0x54,0x45,0x4C,0x20, /* 00000008 ".-INTEL " */ 0x54,0x45,0x4D,0x50,0x4C,0x41,0x54,0x45, /* 00000010 "TEMPLATE" */ 0x01,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C, /* 00000018 "....INTL" */ 0x28,0x05,0x10,0x20,0x01,0x08,0x00,0x00, /* 00000020 "(.. ...." */ 0x66,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000028 "f......." */ 0x01,0x08,0x00,0x00,0x62,0x00,0x00,0x00, /* 00000030 "....b..." */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000038 "........" */ 0x09,0x00 /* 00000040 ".." */ }; const unsigned char TemplateEinj[] = { 0x45,0x49,0x4E,0x4A,0x30,0x01,0x00,0x00, /* 00000000 "EINJ0..." */ 0x01,0x09,0x49,0x4E,0x54,0x45,0x4C,0x20, /* 00000008 "..INTEL " */ 0x54,0x45,0x4D,0x50,0x4C,0x41,0x54,0x45, /* 00000010 "TEMPLATE" */ 0x01,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C, /* 00000018 "....INTL" */ 0x28,0x05,0x10,0x20,0x30,0x00,0x00,0x00, /* 00000020 "(.. 0..." */ 0x00,0x00,0x00,0x00,0x0A,0x00,0x00,0x00, /* 00000028 "........" */ 0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x04, /* 00000030 ".....@.." */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000038 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000040 "........" */ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, /* 00000048 "........" */ 0x01,0x00,0x00,0x00,0x00,0x40,0x00,0x04, /* 00000050 ".....@.." */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000058 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000060 "........" */ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, /* 00000068 "........" */ 0x02,0x02,0x01,0x00,0x00,0x40,0x00,0x04, /* 00000070 ".....@.." */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000078 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000080 "........" */ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, /* 00000088 "........" */ 0x03,0x00,0x00,0x00,0x00,0x40,0x00,0x04, /* 00000090 ".....@.." */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000098 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000A0 "........" */ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, /* 000000A8 "........" */ 0x04,0x03,0x01,0x00,0x00,0x40,0x00,0x04, /* 000000B0 ".....@.." */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000B8 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000C0 "........" */ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, /* 000000C8 "........" */ 0x05,0x03,0x01,0x00,0x01,0x10,0x00,0x02, /* 000000D0 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000D8 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000E0 "........" */ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, /* 000000E8 "........" */ 0x06,0x01,0x00,0x00,0x00,0x40,0x00,0x04, /* 000000F0 ".....@.." */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000F8 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000100 "........" */ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, /* 00000108 "........" */ 0x07,0x00,0x01,0x00,0x00,0x40,0x00,0x04, /* 00000110 ".....@.." */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000118 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000120 "........" */ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF /* 00000128 "........" */ }; const unsigned char TemplateErst[] = { 0x45,0x52,0x53,0x54,0x30,0x02,0x00,0x00, /* 00000000 "ERST0..." */ 0x01,0xAB,0x49,0x4E,0x54,0x45,0x4C,0x20, /* 00000008 "..INTEL " */ 0x54,0x45,0x4D,0x50,0x4C,0x41,0x54,0x45, /* 00000010 "TEMPLATE" */ 0x01,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C, /* 00000018 "....INTL" */ 0x28,0x05,0x10,0x20,0x30,0x00,0x00,0x00, /* 00000020 "(.. 0..." */ 0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00, /* 00000028 "........" */ 0x00,0x03,0x00,0x00,0x00,0x40,0x00,0x04, /* 00000030 ".....@.." */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000038 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000040 "........" */ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, /* 00000048 "........" */ 0x01,0x03,0x00,0x00,0x00,0x40,0x00,0x04, /* 00000050 ".....@.." */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000058 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000060 "........" */ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, /* 00000068 "........" */ 0x02,0x03,0x00,0x00,0x00,0x40,0x00,0x04, /* 00000070 ".....@.." */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000078 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000080 "........" */ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, /* 00000088 "........" */ 0x03,0x04,0x01,0x00,0x00,0x40,0x00,0x04, /* 00000090 ".....@.." */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000098 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000A0 "........" */ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, /* 000000A8 "........" */ 0x04,0x02,0x00,0x00,0x00,0x40,0x00,0x04, /* 000000B0 ".....@.." */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000B8 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000C0 "........" */ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, /* 000000C8 "........" */ 0x05,0x03,0x00,0x00,0x01,0x08,0x00,0x01, /* 000000D0 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000D8 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000E0 "........" */ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, /* 000000E8 "........" */ 0x06,0x01,0x00,0x00,0x00,0x40,0x00,0x04, /* 000000F0 ".....@.." */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000F8 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000100 "........" */ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, /* 00000108 "........" */ 0x07,0x00,0x00,0x00,0x00,0x40,0x00,0x04, /* 00000110 ".....@.." */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000118 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000120 "........" */ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, /* 00000128 "........" */ 0x08,0x00,0x00,0x00,0x00,0x40,0x00,0x04, /* 00000130 ".....@.." */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000138 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000140 "........" */ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, /* 00000148 "........" */ 0x09,0x02,0x00,0x00,0x00,0x40,0x00,0x04, /* 00000150 ".....@.." */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000158 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000160 "........" */ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, /* 00000168 "........" */ 0x0A,0x00,0x00,0x00,0x00,0x40,0x00,0x04, /* 00000170 ".....@.." */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000178 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000180 "........" */ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, /* 00000188 "........" */ 0x0B,0x03,0x00,0x00,0x00,0x40,0x00,0x04, /* 00000190 ".....@.." */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000198 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000001A0 "........" */ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, /* 000001A8 "........" */ 0x0C,0x00,0x00,0x00,0x00,0x40,0x00,0x04, /* 000001B0 ".....@.." */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000001B8 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000001C0 "........" */ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, /* 000001C8 "........" */ 0x0D,0x00,0x00,0x00,0x00,0x40,0x00,0x04, /* 000001D0 ".....@.." */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000001D8 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000001E0 "........" */ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, /* 000001E8 "........" */ 0x0E,0x00,0x00,0x00,0x00,0x40,0x00,0x04, /* 000001F0 ".....@.." */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000001F8 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000200 "........" */ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF, /* 00000208 "........" */ 0x0F,0x00,0x00,0x00,0x00,0x40,0x00,0x04, /* 00000210 ".....@.." */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000218 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000220 "........" */ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF /* 00000228 "........" */ }; const unsigned char TemplateFacs[] = { 0x46,0x41,0x43,0x53,0x40,0x00,0x00,0x00, /* 00000000 "FACS@..." */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000008 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000010 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000018 "........" */ 0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000020 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000028 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000030 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 /* 00000038 "........" */ }; /* Version 5 FADT */ const unsigned char TemplateFadt[] = { 0x46,0x41,0x43,0x50,0x0C,0x01,0x00,0x00, /* 00000000 "FACP...." */ 0x05,0x64,0x49,0x4E,0x54,0x45,0x4C,0x20, /* 00000008 ".dINTEL " */ 0x54,0x45,0x4D,0x50,0x4C,0x41,0x54,0x45, /* 00000010 "TEMPLATE" */ 0x00,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C, /* 00000018 "....INTL" */ 0x15,0x11,0x13,0x20,0x01,0x00,0x00,0x00, /* 00000020 "... ...." */ 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000028 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000030 "........" */ 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000038 "........" */ 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000040 "........" */ 0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00, /* 00000048 "........" */ 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000050 "........" */ 0x04,0x02,0x01,0x04,0x08,0x00,0x00,0x00, /* 00000058 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000060 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000068 "........" */ 0x00,0x00,0x00,0x00,0x01,0x08,0x00,0x01, /* 00000070 "........" */ 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000078 "........" */ 0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00, /* 00000080 "........" */ 0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00, /* 00000088 "........" */ 0x00,0x00,0x00,0x00,0x01,0x20,0x00,0x02, /* 00000090 "..... .." */ 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000098 "........" */ 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000A0 "........" */ 0x00,0x00,0x00,0x00,0x01,0x10,0x00,0x02, /* 000000A8 "........" */ 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000B0 "........" */ 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000B8 "........" */ 0x00,0x00,0x00,0x00,0x01,0x08,0x00,0x00, /* 000000C0 "........" */ 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000C8 "........" */ 0x01,0x20,0x00,0x03,0x01,0x00,0x00,0x00, /* 000000D0 ". ......" */ 0x00,0x00,0x00,0x00,0x01,0x40,0x00,0x01, /* 000000D8 ".....@.." */ 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000E0 "........" */ 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000E8 "........" */ 0x00,0x00,0x00,0x00,0x01,0x08,0x00,0x01, /* 000000F0 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000F8 "........" */ 0x01,0x08,0x00,0x01,0x00,0x00,0x00,0x00, /* 00000100 "........" */ 0x00,0x00,0x00,0x00 /* 00000108 "...." */ }; const unsigned char TemplateFpdt[] = { 0x46,0x50,0x44,0x54,0x64,0x00,0x00,0x00, /* 00000000 "FPDTd..." */ 0x01,0xBD,0x49,0x4E,0x54,0x45,0x4C,0x20, /* 00000008 "..INTEL " */ 0x54,0x45,0x4D,0x50,0x4C,0x41,0x54,0x45, /* 00000010 "TEMPLATE" */ 0x01,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C, /* 00000018 "....INTL" */ 0x04,0x08,0x11,0x20,0x00,0x00,0x30,0x01, /* 00000020 "... ..0." */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000028 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000030 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000038 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000040 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000048 "........" */ 0x00,0x00,0x00,0x00,0x01,0x00,0x10,0x01, /* 00000050 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000058 "........" */ 0x00,0x00,0x00,0x00 /* 00000060 "...." */ }; const unsigned char TemplateGtdt[] = { 0x47,0x54,0x44,0x54,0x50,0x00,0x00,0x00, /* 00000000 "GTDTP..." */ 0x01,0xF1,0x49,0x4E,0x54,0x45,0x4C,0x20, /* 00000008 "..INTEL " */ 0x54,0x45,0x4D,0x50,0x4C,0x41,0x54,0x45, /* 00000010 "TEMPLATE" */ 0x01,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C, /* 00000018 "....INTL" */ 0x23,0x06,0x11,0x20,0x00,0x00,0x00,0x00, /* 00000020 "#.. ...." */ 0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00, /* 00000028 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000030 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000038 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000040 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 /* 00000048 "........" */ }; const unsigned char TemplateHest[] = { 0x48,0x45,0x53,0x54,0xD4,0x01,0x00,0x00, /* 00000000 "HEST...." */ 0x01,0x20,0x49,0x4E,0x54,0x45,0x4C,0x20, /* 00000008 ". INTEL " */ 0x54,0x45,0x4D,0x50,0x4C,0x41,0x54,0x45, /* 00000010 "TEMPLATE" */ 0x01,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C, /* 00000018 "....INTL" */ 0x28,0x05,0x10,0x20,0x04,0x00,0x00,0x00, /* 00000020 "(.. ...." */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01, /* 00000028 "........" */ 0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00, /* 00000030 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000038 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000040 "........" */ 0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000048 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000050 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000058 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000060 "........" */ 0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00, /* 00000068 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000070 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000078 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000080 "........" */ 0x01,0x00,0x01,0x00,0x00,0x00,0x00,0x01, /* 00000088 "........" */ 0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00, /* 00000090 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000098 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000A0 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000A8 "........" */ 0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00, /* 000000B0 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000B8 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000C0 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000C8 "........" */ 0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00, /* 000000D0 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000D8 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000E0 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000E8 "........" */ 0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x01, /* 000000F0 "........" */ 0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00, /* 000000F8 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000100 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000108 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000110 "........" */ 0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00, /* 00000118 "........" */ 0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00, /* 00000120 "........" */ 0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000128 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000130 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000138 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000140 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000148 "........" */ 0x00,0x00,0x00,0x00,0x09,0x00,0x02,0x00, /* 00000150 "........" */ 0xFF,0xFF,0x00,0x01,0x01,0x00,0x00,0x00, /* 00000158 "........" */ 0x01,0x00,0x00,0x00,0x00,0x10,0x00,0x00, /* 00000160 "........" */ 0x00,0x40,0x00,0x04,0x00,0x00,0x00,0x00, /* 00000168 ".@......" */ 0x00,0x00,0x00,0x00,0x03,0x1C,0x00,0x00, /* 00000170 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000178 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000180 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000188 "........" */ 0x00,0x10,0x00,0x00,0x09,0x00,0x03,0x00, /* 00000190 "........" */ 0x00,0x00,0x00,0x01,0x01,0x00,0x00,0x00, /* 00000198 "........" */ 0x01,0x00,0x00,0x00,0x00,0x10,0x00,0x00, /* 000001A0 "........" */ 0x00,0x40,0x00,0x04,0x00,0x00,0x00,0x00, /* 000001A8 ".@......" */ 0x00,0x00,0x00,0x00,0x04,0x1C,0x00,0x00, /* 000001B0 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000001B8 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000001C0 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000001C8 "........" */ 0x00,0x10,0x00,0x00 /* 000001D0 "...." */ }; const unsigned char TemplateHpet[] = { 0x48,0x50,0x45,0x54,0x38,0x00,0x00,0x00, /* 00000000 "HPET8..." */ 0x01,0x09,0x49,0x4E,0x54,0x45,0x4C,0x20, /* 00000008 "..INTEL " */ 0x54,0x45,0x4D,0x50,0x4C,0x41,0x54,0x45, /* 00000010 "TEMPLATE" */ 0x01,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C, /* 00000018 "....INTL" */ 0x28,0x05,0x10,0x20,0x00,0x00,0x00,0x00, /* 00000020 "(.. ...." */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000028 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 /* 00000030 "........" */ }; const unsigned char TemplateIvrs[] = { 0x49,0x56,0x52,0x53,0xBC,0x00,0x00,0x00, /* 00000000 "IVRS...." */ 0x01,0x87,0x49,0x4E,0x54,0x45,0x4C,0x20, /* 00000008 "..INTEL " */ 0x54,0x45,0x4D,0x50,0x4C,0x41,0x54,0x45, /* 00000010 "TEMPLATE" */ 0x01,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C, /* 00000018 "....INTL" */ 0x28,0x05,0x10,0x20,0x00,0x00,0x00,0x00, /* 00000020 "(.. ...." */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000028 "........" */ 0x10,0x14,0x34,0x00,0x00,0x00,0x00,0x00, /* 00000030 "..4....." */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000038 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000040 "........" */ 0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00, /* 00000048 "....@..." */ 0x00,0x00,0x00,0x00,0x42,0x00,0x00,0x00, /* 00000050 "....B..." */ 0x00,0x00,0x00,0x00,0x48,0x00,0x00,0x00, /* 00000058 "....H..." */ 0x00,0x00,0x00,0x00,0x20,0x08,0x20,0x00, /* 00000060 ".... . ." */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000068 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000070 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000078 "........" */ 0x00,0x00,0x00,0x00,0x21,0x04,0x20,0x00, /* 00000080 "....!. ." */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000088 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000090 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000098 "........" */ 0x00,0x00,0x00,0x00,0x10,0x14,0x18,0x00, /* 000000A0 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000A8 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000B0 "........" */ 0x00,0x00,0x00,0x00 /* 000000B8 "...." */ }; /* MADT with ACPI 5.0 subtables */ const unsigned char TemplateMadt[] = { 0x41,0x50,0x49,0x43,0xF6,0x00,0x00,0x00, /* 00000000 "APIC...." */ 0x01,0xB0,0x49,0x4E,0x54,0x45,0x4C,0x20, /* 00000008 "..INTEL " */ 0x54,0x45,0x4D,0x50,0x4C,0x41,0x54,0x45, /* 00000010 "TEMPLATE" */ 0x01,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C, /* 00000018 "....INTL" */ 0x23,0x06,0x11,0x20,0x00,0x00,0x00,0x00, /* 00000020 "#.. ...." */ 0x01,0x00,0x00,0x00,0x00,0x08,0x00,0x00, /* 00000028 "........" */ 0x01,0x00,0x00,0x00,0x01,0x0C,0x01,0x00, /* 00000030 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000038 "........" */ 0x02,0x0A,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000040 "........" */ 0x00,0x00,0x03,0x08,0x0D,0x00,0x01,0x00, /* 00000048 "........" */ 0x00,0x00,0x04,0x06,0x00,0x05,0x00,0x01, /* 00000050 "........" */ 0x05,0x0C,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000058 "........" */ 0x00,0x00,0x00,0x00,0x06,0x10,0x00,0x00, /* 00000060 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000068 "........" */ 0x00,0x00,0x00,0x00,0x07,0x16,0x00,0x00, /* 00000070 "........" */ 0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00, /* 00000078 "........" */ 0x00,0x00,0x00,0x00,0x5C,0x43,0x50,0x55, /* 00000080 "....\CPU" */ 0x30,0x00,0x08,0x10,0x05,0x00,0x00,0x00, /* 00000088 "0......." */ 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00, /* 00000090 "........" */ 0x00,0x00,0x09,0x10,0x00,0x00,0x00,0x00, /* 00000098 "........" */ 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00, /* 000000A0 "........" */ 0x00,0x00,0x0A,0x0C,0x05,0x00,0x00,0x00, /* 000000A8 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x0B,0x28, /* 000000B0 ".......(" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000B8 "........" */ 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00, /* 000000C0 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000C8 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000D0 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x0C,0x18, /* 000000D8 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000E0 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000E8 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00 /* 000000F0 "......" */ }; const unsigned char TemplateMcfg[] = { 0x4D,0x43,0x46,0x47,0x3C,0x00,0x00,0x00, /* 00000000 "MCFG<..." */ 0x01,0x19,0x49,0x4E,0x54,0x45,0x4C,0x20, /* 00000008 "..INTEL " */ 0x54,0x45,0x4D,0x50,0x4C,0x41,0x54,0x45, /* 00000010 "TEMPLATE" */ 0x01,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C, /* 00000018 "....INTL" */ 0x28,0x05,0x10,0x20,0x00,0x00,0x00,0x00, /* 00000020 "(.. ...." */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000028 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000030 "........" */ 0x00,0x00,0x00,0x00 /* 00000038 "...." */ }; const unsigned char TemplateMchi[] = { 0x4D,0x43,0x48,0x49,0x45,0x00,0x00,0x00, /* 00000000 "MCHIE..." */ 0x01,0xE4,0x49,0x4E,0x54,0x45,0x4C,0x20, /* 00000008 "..INTEL " */ 0x54,0x45,0x4D,0x50,0x4C,0x41,0x54,0x45, /* 00000010 "TEMPLATE" */ 0x15,0x07,0x00,0x02,0x49,0x4E,0x54,0x4C, /* 00000018 "....INTL" */ 0x28,0x05,0x10,0x20,0x01,0x00,0x00,0x00, /* 00000020 "(.. ...." */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000028 "........" */ 0x00,0x00,0x00,0x00,0x00,0x02,0x08,0x00, /* 00000030 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000038 "........" */ 0x00,0x00,0x00,0x00,0x00 /* 00000040 "....." */ }; const unsigned char TemplateMpst[] = { 0x4D,0x50,0x53,0x54,0xB6,0x00,0x00,0x00, /* 00000000 "MPST...." */ 0x01,0x77,0x49,0x4E,0x54,0x45,0x4C,0x20, /* 00000008 ".wINTEL " */ 0x54,0x45,0x4D,0x50,0x4C,0x41,0x54,0x45, /* 00000010 "TEMPLATE" */ 0x01,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C, /* 00000018 "....INTL" */ 0x13,0x09,0x12,0x20,0x00,0x00,0x00,0x00, /* 00000020 "... ...." */ 0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000028 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000030 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000038 "........" */ 0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00, /* 00000040 "........" */ 0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000048 "........" */ 0x00,0x00,0x01,0x00,0x02,0x00,0x00,0x00, /* 00000050 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000058 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000060 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00, /* 00000068 "........" */ 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00, /* 00000070 "........" */ 0x00,0x00,0x02,0x00,0x00,0x00,0x01,0x00, /* 00000078 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000080 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000088 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000090 "........" */ 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00, /* 00000098 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000A0 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000A8 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00 /* 000000B0 "......" */ }; const unsigned char TemplateMsct[] = { 0x4D,0x53,0x43,0x54,0x90,0x00,0x00,0x00, /* 00000000 "MSCT...." */ 0x01,0xB7,0x49,0x4E,0x54,0x45,0x4C,0x20, /* 00000008 "..INTEL " */ 0x54,0x45,0x4D,0x50,0x4C,0x41,0x54,0x45, /* 00000010 "TEMPLATE" */ 0x01,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C, /* 00000018 "....INTL" */ 0x28,0x05,0x10,0x20,0x38,0x00,0x00,0x00, /* 00000020 "(.. 8..." */ 0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000028 "........" */ 0xFF,0xFF,0xFF,0xFF,0xFF,0x0F,0x00,0x00, /* 00000030 "........" */ 0x01,0x16,0x00,0x00,0x00,0x00,0x03,0x00, /* 00000038 "........" */ 0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00, /* 00000040 "........" */ 0x00,0x00,0x40,0x00,0x00,0x00,0x01,0x16, /* 00000048 "..@....." */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000050 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000058 "........" */ 0x00,0x00,0x00,0x00,0x01,0x16,0x00,0x00, /* 00000060 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000068 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000070 "........" */ 0x00,0x00,0x01,0x16,0x00,0x00,0x00,0x00, /* 00000078 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000080 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 /* 00000088 "........" */ }; const unsigned char TemplateMtmr[] = { 0x4D,0x54,0x4D,0x52,0x4C,0x00,0x00,0x00, /* 00000000 "MTMRL..." */ 0x01,0xB0,0x49,0x4E,0x54,0x45,0x4C,0x20, /* 00000008 "..INTEL " */ 0x54,0x45,0x4D,0x50,0x4C,0x41,0x54,0x45, /* 00000010 "TEMPLATE" */ 0x03,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C, /* 00000018 "....INTL" */ 0x17,0x01,0x13,0x20,0x00,0x20,0x00,0x03, /* 00000020 "... . .." */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000028 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000030 "........" */ 0x00,0x20,0x00,0x03,0x00,0x00,0x00,0x00, /* 00000038 ". ......" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000040 "........" */ 0x00,0x00,0x00,0x00 /* 00000048 "...." */ }; const unsigned char TemplatePcct[] = { 0x50,0x43,0x43,0x54,0xAC,0x00,0x00,0x00, /* 00000000 "PCCT...." */ 0x01,0x97,0x49,0x4E,0x54,0x45,0x4C,0x20, /* 00000008 "..INTEL " */ 0x54,0x45,0x4D,0x50,0x4C,0x41,0x54,0x45, /* 00000010 "TEMPLATE" */ 0x01,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C, /* 00000018 "....INTL" */ 0x15,0x11,0x13,0x20,0x01,0x00,0x00,0x00, /* 00000020 "... ...." */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000028 "........" */ 0x00,0x3E,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000030 ".>......" */ 0x11,0x11,0x11,0x11,0x11,0x11,0x11,0x11, /* 00000038 "........" */ 0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x22, /* 00000040 """""""""" */ 0x01,0x32,0x00,0x03,0x33,0x33,0x33,0x33, /* 00000048 ".2..3333" */ 0x33,0x33,0x33,0x33,0x44,0x44,0x44,0x44, /* 00000050 "3333DDDD" */ 0x44,0x44,0x44,0x44,0x55,0x55,0x55,0x55, /* 00000058 "DDDDUUUU" */ 0x55,0x55,0x55,0x55,0x66,0x66,0x66,0x66, /* 00000060 "UUUUffff" */ 0x77,0x77,0x77,0x77,0x88,0x88,0x00,0x3E, /* 00000068 "wwww...>" */ 0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF, /* 00000070 "........" */ 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xEE,0xEE, /* 00000078 "........" */ 0xEE,0xEE,0xEE,0xEE,0xEE,0xEE,0x01,0x32, /* 00000080 ".......2" */ 0x00,0x03,0xDD,0xDD,0xDD,0xDD,0xDD,0xDD, /* 00000088 "........" */ 0xDD,0xDD,0xCC,0xCC,0xCC,0xCC,0xCC,0xCC, /* 00000090 "........" */ 0xCC,0xCC,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB, /* 00000098 "........" */ 0xBB,0xBB,0xAA,0xAA,0xAA,0xAA,0x99,0x99, /* 000000A0 "........" */ 0x99,0x99,0x88,0x88 /* 000000A8 "...." */ }; const unsigned char TemplatePmtt[] = { 0x50,0x4D,0x54,0x54,0xB4,0x00,0x00,0x00, /* 00000000 "PMTT...." */ 0x01,0x3A,0x49,0x4E,0x54,0x45,0x4C,0x20, /* 00000008 ".:INTEL " */ 0x54,0x45,0x4D,0x50,0x4C,0x41,0x54,0x45, /* 00000010 "TEMPLATE" */ 0x01,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C, /* 00000018 "....INTL" */ 0x26,0x08,0x11,0x20,0x00,0x00,0x00,0x00, /* 00000020 "&.. ...." */ 0x00,0x00,0x80,0x00,0x01,0x00,0x00,0x00, /* 00000028 "........" */ 0x00,0x00,0x00,0x00,0x01,0x00,0x54,0x00, /* 00000030 "......T." */ 0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000038 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000040 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000048 "........" */ 0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00, /* 00000050 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000058 "........" */ 0x02,0x00,0x14,0x00,0x02,0x00,0x00,0x00, /* 00000060 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000068 "........" */ 0x00,0x00,0x00,0x00,0x02,0x00,0x14,0x00, /* 00000070 "........" */ 0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000078 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000080 "........" */ 0x01,0x00,0x20,0x00,0x01,0x00,0x00,0x00, /* 00000088 ".. ....." */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000090 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000098 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000A0 "........" */ 0x00,0x00,0x0C,0x00,0x01,0x00,0x00,0x00, /* 000000A8 "........" */ 0x00,0x00,0x00,0x00 /* 000000B0 "...." */ }; const unsigned char TemplateRsdp[] = { 0x52,0x53,0x44,0x20,0x50,0x54,0x52,0x20, /* 00000000 "RSD PTR " */ 0x43,0x49,0x4E,0x54,0x45,0x4C,0x20,0x02, /* 00000008 "CINTEL ." */ 0x00,0x00,0x00,0x00,0x24,0x00,0x00,0x00, /* 00000010 "....$..." */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000018 "........" */ 0xDC,0x00,0x00,0x00 /* 00000020 "...." */ }; const unsigned char TemplateRsdt[] = { 0x52,0x53,0x44,0x54,0x44,0x00,0x00,0x00, /* 00000000 "RSDTD..." */ 0x01,0xB1,0x49,0x4E,0x54,0x45,0x4C,0x20, /* 00000008 "..INTEL " */ 0x54,0x45,0x4D,0x50,0x4C,0x41,0x54,0x45, /* 00000010 "TEMPLATE" */ 0x01,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C, /* 00000018 "....INTL" */ 0x28,0x05,0x10,0x20,0x10,0x00,0x00,0x00, /* 00000020 "(.. ...." */ 0x20,0x00,0x00,0x00,0x30,0x00,0x00,0x00, /* 00000028 " ...0..." */ 0x40,0x00,0x00,0x00,0x50,0x00,0x00,0x00, /* 00000030 "@...P..." */ 0x60,0x00,0x00,0x00,0x70,0x00,0x00,0x00, /* 00000038 "`...p..." */ 0x80,0x00,0x00,0x00 /* 00000040 "...." */ }; const unsigned char TemplateS3pt[] = { 0x53,0x33,0x50,0x54,0x34,0x00,0x00,0x00, /* 00000000 "S3PT4..." */ 0x00,0x00,0x18,0x01,0x00,0x00,0x00,0x00, /* 00000008 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000010 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000018 "........" */ 0x01,0x00,0x14,0x01,0x00,0x00,0x00,0x00, /* 00000020 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000028 "........" */ 0x00,0x00,0x00,0x00 /* 00000030 "...." */ }; const unsigned char TemplateSbst[] = { 0x53,0x42,0x53,0x54,0x30,0x00,0x00,0x00, /* 00000000 "SBST0..." */ 0x01,0x06,0x49,0x4E,0x54,0x45,0x4C,0x20, /* 00000008 "..INTEL " */ 0x54,0x45,0x4D,0x50,0x4C,0x41,0x54,0x45, /* 00000010 "TEMPLATE" */ 0x01,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C, /* 00000018 "....INTL" */ 0x28,0x05,0x10,0x20,0x00,0x00,0x00,0x00, /* 00000020 "(.. ...." */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 /* 00000028 "........" */ }; const unsigned char TemplateSlic[] = { 0x53,0x4C,0x49,0x43,0x76,0x01,0x00,0x00, /* 00000000 "SLICv..." */ 0x01,0x07,0x49,0x4E,0x54,0x45,0x4C,0x20, /* 00000008 "..INTEL " */ 0x54,0x45,0x4D,0x50,0x4C,0x41,0x54,0x45, /* 00000010 "TEMPLATE" */ 0x01,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C, /* 00000018 "....INTL" */ 0x11,0x02,0x11,0x20,0x00,0x00,0x00,0x00, /* 00000020 "... ...." */ 0x9C,0x00,0x00,0x00,0x06,0x02,0x00,0x00, /* 00000028 "........" */ 0x00,0x24,0x00,0x00,0x52,0x53,0x41,0x31, /* 00000030 ".$..RSA1" */ 0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000038 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000040 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000048 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000050 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000058 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000060 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000068 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000070 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000078 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000080 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000088 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000090 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000098 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000A0 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000A8 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000B0 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000B8 "........" */ 0x01,0x00,0x00,0x00,0xB6,0x00,0x00,0x00, /* 000000C0 "........" */ 0x00,0x00,0x02,0x00,0x49,0x4E,0x54,0x45, /* 000000C8 "....INTE" */ 0x4C,0x20,0x54,0x45,0x4D,0x50,0x4C,0x41, /* 000000D0 "L TEMPLA" */ 0x54,0x45,0x57,0x49,0x4E,0x44,0x4F,0x57, /* 000000D8 "TEWINDOW" */ 0x53,0x20,0x01,0x00,0x02,0x00,0x00,0x00, /* 000000E0 "S ......" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000E8 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000F0 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 000000F8 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000100 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000108 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000110 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000118 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000120 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000128 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000130 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000138 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000140 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000148 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000150 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000158 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000160 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000168 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00 /* 00000170 "......" */ }; const unsigned char TemplateSlit[] = { 0x53,0x4C,0x49,0x54,0xBC,0x01,0x00,0x00, /* 00000000 "SLIT...." */ 0x01,0x00,0x49,0x4E,0x54,0x45,0x4C,0x20, /* 00000008 "..INTEL " */ 0x54,0x45,0x4D,0x50,0x4C,0x41,0x54,0x45, /* 00000010 "TEMPLATE" */ 0x01,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C, /* 00000018 "....INTL" */ 0x16,0x03,0x11,0x20,0x14,0x00,0x00,0x00, /* 00000020 "... ...." */ 0x00,0x00,0x00,0x00,0x0A,0x10,0x16,0x17, /* 00000028 "........" */ 0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F, /* 00000030 "........" */ 0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27, /* 00000038 " !"#$%&'" */ 0x10,0x0A,0x15,0x16,0x17,0x18,0x19,0x1A, /* 00000040 "........" */ 0x1B,0x1C,0x1D,0x1E,0x1F,0x20,0x21,0x22, /* 00000048 "..... !"" */ 0x23,0x24,0x25,0x26,0x16,0x15,0x0A,0x10, /* 00000050 "#$%&...." */ 0x16,0x17,0x18,0x19,0x1A,0x1B,0x1C,0x1D, /* 00000058 "........" */ 0x1E,0x1F,0x20,0x21,0x22,0x23,0x24,0x25, /* 00000060 ".. !"#$%" */ 0x17,0x16,0x10,0x0A,0x15,0x16,0x17,0x18, /* 00000068 "........" */ 0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F,0x20, /* 00000070 "....... " */ 0x21,0x22,0x23,0x24,0x18,0x17,0x16,0x15, /* 00000078 "!"#$...." */ 0x0A,0x10,0x16,0x17,0x18,0x19,0x1A,0x1B, /* 00000080 "........" */ 0x1C,0x1D,0x1E,0x1F,0x20,0x21,0x22,0x23, /* 00000088 ".... !"#" */ 0x19,0x18,0x17,0x16,0x10,0x0A,0x15,0x16, /* 00000090 "........" */ 0x17,0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E, /* 00000098 "........" */ 0x1F,0x20,0x21,0x22,0x1A,0x19,0x18,0x17, /* 000000A0 ". !"...." */ 0x16,0x15,0x0A,0x10,0x16,0x17,0x18,0x19, /* 000000A8 "........" */ 0x1A,0x1B,0x1C,0x1D,0x1E,0x1F,0x20,0x21, /* 000000B0 "...... !" */ 0x1B,0x1A,0x19,0x18,0x17,0x16,0x10,0x0A, /* 000000B8 "........" */ 0x15,0x16,0x17,0x18,0x19,0x1A,0x1B,0x1C, /* 000000C0 "........" */ 0x1D,0x1E,0x1F,0x20,0x1C,0x1B,0x1A,0x19, /* 000000C8 "... ...." */ 0x18,0x17,0x16,0x15,0x0A,0x10,0x16,0x17, /* 000000D0 "........" */ 0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F, /* 000000D8 "........" */ 0x1D,0x1C,0x1B,0x1A,0x19,0x18,0x17,0x16, /* 000000E0 "........" */ 0x10,0x0A,0x15,0x16,0x17,0x18,0x19,0x1A, /* 000000E8 "........" */ 0x1B,0x1C,0x1D,0x1E,0x1E,0x1D,0x1C,0x1B, /* 000000F0 "........" */ 0x1A,0x19,0x18,0x17,0x16,0x15,0x0A,0x10, /* 000000F8 "........" */ 0x16,0x17,0x18,0x19,0x1A,0x1B,0x1C,0x1D, /* 00000100 "........" */ 0x1F,0x1E,0x1D,0x1C,0x1B,0x1A,0x19,0x18, /* 00000108 "........" */ 0x17,0x16,0x10,0x0A,0x15,0x16,0x17,0x18, /* 00000110 "........" */ 0x19,0x1A,0x1B,0x1C,0x20,0x1F,0x1E,0x1D, /* 00000118 ".... ..." */ 0x1C,0x1B,0x1A,0x19,0x18,0x17,0x16,0x15, /* 00000120 "........" */ 0x0A,0x10,0x16,0x17,0x18,0x19,0x1A,0x1B, /* 00000128 "........" */ 0x21,0x20,0x1F,0x1E,0x1D,0x1C,0x1B,0x1A, /* 00000130 "! ......" */ 0x19,0x18,0x17,0x16,0x10,0x0A,0x15,0x16, /* 00000138 "........" */ 0x17,0x18,0x19,0x1A,0x22,0x21,0x20,0x1F, /* 00000140 "...."! ." */ 0x1E,0x1D,0x1C,0x1B,0x1A,0x19,0x18,0x17, /* 00000148 "........" */ 0x16,0x15,0x0A,0x10,0x16,0x17,0x18,0x19, /* 00000150 "........" */ 0x23,0x22,0x21,0x20,0x1F,0x1E,0x1D,0x1C, /* 00000158 "#"! ...." */ 0x1B,0x1A,0x19,0x18,0x17,0x16,0x10,0x0A, /* 00000160 "........" */ 0x15,0x16,0x17,0x18,0x24,0x23,0x22,0x21, /* 00000168 "....$#"!" */ 0x20,0x1F,0x1E,0x1D,0x1C,0x1B,0x1A,0x19, /* 00000170 " ......." */ 0x18,0x17,0x16,0x15,0x0A,0x10,0x16,0x17, /* 00000178 "........" */ 0x25,0x24,0x23,0x22,0x21,0x20,0x1F,0x1E, /* 00000180 "%$#"! .." */ 0x1D,0x1C,0x1B,0x1A,0x19,0x18,0x17,0x16, /* 00000188 "........" */ 0x10,0x0A,0x15,0x16,0x26,0x25,0x24,0x23, /* 00000190 "....&%$#" */ 0x22,0x21,0x20,0x1F,0x1E,0x1D,0x1C,0x1B, /* 00000198 ""! ....." */ 0x1A,0x19,0x18,0x17,0x16,0x15,0x0A,0x10, /* 000001A0 "........" */ 0x27,0x26,0x25,0x24,0x23,0x22,0x21,0x20, /* 000001A8 "'&%$#"! " */ 0x1F,0x1E,0x1D,0x1C,0x1B,0x1A,0x19,0x18, /* 000001B0 "........" */ 0x17,0x16,0x10,0x0A /* 000001B8 "...." */ }; const unsigned char TemplateSpcr[] = { 0x53,0x50,0x43,0x52,0x50,0x00,0x00,0x00, /* 00000000 "SPCRP..." */ 0x01,0xE3,0x49,0x4E,0x54,0x45,0x4C,0x20, /* 00000008 "..INTEL " */ 0x54,0x45,0x4D,0x50,0x4C,0x41,0x54,0x45, /* 00000010 "TEMPLATE" */ 0x00,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C, /* 00000018 "....INTL" */ 0x28,0x05,0x10,0x20,0x00,0x00,0x00,0x00, /* 00000020 "(.. ...." */ 0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000028 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000030 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000038 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000040 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 /* 00000048 "........" */ }; const unsigned char TemplateSpmi[] = { 0x53,0x50,0x4D,0x49,0x41,0x00,0x00,0x00, /* 00000000 "SPMIA..." */ 0x04,0x00,0x49,0x4E,0x54,0x45,0x4C,0x20, /* 00000008 "..INTEL " */ 0x54,0x45,0x4D,0x50,0x4C,0x41,0x54,0x45, /* 00000010 "TEMPLATE" */ 0x00,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C, /* 00000018 "....INTL" */ 0x14,0x01,0x14,0x20,0x00,0x01,0x00,0x00, /* 00000020 "... ...." */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000028 "........" */ 0x00,0x08,0x00,0x01,0x00,0x00,0x00,0x00, /* 00000030 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000038 "........" */ 0x00 /* 00000040 "." */ }; const unsigned char TemplateSrat[] = { 0x53,0x52,0x41,0x54,0x80,0x00,0x00,0x00, /* 00000000 "SRAT...." */ 0x03,0x5A,0x49,0x4E,0x54,0x45,0x4C,0x20, /* 00000008 ".ZINTEL " */ 0x54,0x45,0x4D,0x50,0x4C,0x41,0x54,0x45, /* 00000010 "TEMPLATE" */ 0x01,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C, /* 00000018 "....INTL" */ 0x28,0x05,0x10,0x20,0x01,0x00,0x00,0x00, /* 00000020 "(.. ...." */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000028 "........" */ 0x00,0x10,0x00,0x00,0x01,0x00,0x00,0x00, /* 00000030 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000038 "........" */ 0x01,0x28,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000040 ".(......" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000048 "........" */ 0x00,0xFC,0x09,0x00,0x00,0x00,0x00,0x00, /* 00000050 "........" */ 0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00, /* 00000058 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000060 "........" */ 0x02,0x18,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000068 "........" */ 0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00, /* 00000070 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 /* 00000078 "........" */ }; const unsigned char TemplateTcpa[] = { 0x54,0x43,0x50,0x41,0x32,0x00,0x00,0x00, /* 00000000 "TCPA2..." */ 0x01,0x67,0x49,0x4E,0x54,0x45,0x4C,0x20, /* 00000008 ".gINTEL " */ 0x54,0x45,0x4D,0x50,0x4C,0x41,0x54,0x45, /* 00000010 "TEMPLATE" */ 0x80,0x31,0x00,0x00,0x49,0x4E,0x54,0x4C, /* 00000018 ".1..INTL" */ 0x28,0x05,0x10,0x20,0x00,0x00,0x00,0x00, /* 00000020 "(.. ...." */ 0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00, /* 00000028 "........" */ 0x00,0x00 /* 00000030 ".." */ }; const unsigned char TemplateTpm2[] = { 0x54,0x50,0x4D,0x32,0x34,0x00,0x00,0x00, /* 00000000 "TPM24..." */ 0x03,0x42,0x49,0x4E,0x54,0x45,0x4C,0x20, /* 00000008 ".BINTEL " */ 0x54,0x45,0x4D,0x50,0x4C,0x41,0x54,0x45, /* 00000010 "TEMPLATE" */ 0x01,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C, /* 00000018 "....INTL" */ 0x14,0x11,0x12,0x20,0x00,0x00,0x00,0x00, /* 00000020 "... ...." */ 0x77,0x66,0x55,0x44,0x33,0x22,0x11,0x00, /* 00000028 "wfUD3".." */ 0x01,0x00,0x00,0x00 /* 00000030 "...." */ }; const unsigned char TemplateUefi[] = { 0x55,0x45,0x46,0x49,0x36,0x00,0x00,0x00, /* 00000000 "UEFI6..." */ 0x01,0x9B,0x49,0x4E,0x54,0x45,0x4C,0x20, /* 00000008 "..INTEL " */ 0x54,0x45,0x4D,0x50,0x4C,0x41,0x54,0x45, /* 00000010 "TEMPLATE" */ 0x01,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C, /* 00000018 "....INTL" */ 0x28,0x05,0x10,0x20,0x00,0x01,0x02,0x03, /* 00000020 "(.. ...." */ 0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B, /* 00000028 "........" */ 0x0C,0x0D,0x0E,0x0F,0x00,0x00 /* 00000030 "......" */ }; const unsigned char TemplateVrtc[] = { 0x56,0x52,0x54,0x43,0x44,0x00,0x00,0x00, /* 00000000 "VRTCD..." */ 0x01,0xEF,0x49,0x4E,0x54,0x45,0x4C,0x20, /* 00000008 "..INTEL " */ 0x54,0x45,0x4D,0x50,0x4C,0x41,0x54,0x45, /* 00000010 "TEMPLATE" */ 0x03,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C, /* 00000018 "....INTL" */ 0x17,0x01,0x13,0x20,0x00,0x08,0x00,0x00, /* 00000020 "... ...." */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000028 "........" */ 0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00, /* 00000030 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000038 "........" */ 0x00,0x00,0x00,0x00 /* 00000040 "...." */ }; const unsigned char TemplateWaet[] = { 0x57,0x41,0x45,0x54,0x28,0x00,0x00,0x00, /* 00000000 "WAET(..." */ 0x01,0x19,0x49,0x4E,0x54,0x45,0x4C,0x20, /* 00000008 "..INTEL " */ 0x54,0x45,0x4D,0x50,0x4C,0x41,0x54,0x45, /* 00000010 "TEMPLATE" */ 0x01,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C, /* 00000018 "....INTL" */ 0x28,0x05,0x10,0x20,0x00,0x00,0x00,0x00 /* 00000020 "(.. ...." */ }; const unsigned char TemplateWdat[] = { 0x57,0x44,0x41,0x54,0x5C,0x00,0x00,0x00, /* 00000000 "WDAT\..." */ 0x01,0xE3,0x49,0x4E,0x54,0x45,0x4C,0x20, /* 00000008 "..INTEL " */ 0x54,0x45,0x4D,0x50,0x4C,0x41,0x54,0x45, /* 00000010 "TEMPLATE" */ 0x00,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C, /* 00000018 "....INTL" */ 0x28,0x05,0x10,0x20,0x20,0x00,0x00,0x00, /* 00000020 "(.. ..." */ 0xFF,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00, /* 00000028 "........" */ 0x58,0x02,0x00,0x00,0xFF,0x03,0x00,0x00, /* 00000030 "X......." */ 0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000038 "........" */ 0x0E,0x00,0x00,0x00,0x01,0x02,0x00,0x00, /* 00000040 "........" */ 0x01,0x10,0x00,0x02,0x60,0x04,0x00,0x00, /* 00000048 "....`..." */ 0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00, /* 00000050 "........" */ 0x01,0x00,0x00,0x00 /* 00000058 "...." */ }; const unsigned char TemplateWddt[] = { 0x57,0x44,0x44,0x54,0x40,0x00,0x00,0x00, /* 00000000 "WDDT@..." */ 0x01,0x00,0x49,0x4E,0x54,0x45,0x4C,0x20, /* 00000008 "..INTEL " */ 0x54,0x45,0x4D,0x50,0x4C,0x41,0x54,0x45, /* 00000010 "TEMPLATE" */ 0x00,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C, /* 00000018 "....INTL" */ 0x28,0x05,0x10,0x20,0x00,0x00,0x00,0x00, /* 00000020 "(.. ...." */ 0x00,0x00,0x01,0xFF,0x00,0x00,0x00,0x00, /* 00000028 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000030 "........" */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 /* 00000038 "........" */ }; const unsigned char TemplateWdrt[] = { 0x57,0x44,0x52,0x54,0x47,0x00,0x00,0x00, /* 00000000 "WDRTG..." */ 0x01,0xB0,0x49,0x4E,0x54,0x45,0x4C,0x20, /* 00000008 "..INTEL " */ 0x54,0x45,0x4D,0x50,0x4C,0x41,0x54,0x45, /* 00000010 "TEMPLATE" */ 0x01,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C, /* 00000018 "....INTL" */ 0x28,0x05,0x10,0x20,0x00,0x20,0x00,0x00, /* 00000020 "(.. . .." */ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000028 "........" */ 0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00, /* 00000030 ". ......" */ 0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0xFF, /* 00000038 "........" */ 0x00,0x00,0x00,0x00,0xFF,0xFF,0x00 /* 00000040 "......." */ }; const unsigned char TemplateXsdt[] = { 0x58,0x53,0x44,0x54,0x64,0x00,0x00,0x00, /* 00000000 "XSDTd..." */ 0x01,0x8B,0x49,0x4E,0x54,0x45,0x4C,0x20, /* 00000008 "..INTEL " */ 0x54,0x45,0x4D,0x50,0x4C,0x41,0x54,0x45, /* 00000010 "TEMPLATE" */ 0x01,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C, /* 00000018 "....INTL" */ 0x28,0x05,0x10,0x20,0x10,0x00,0x00,0x00, /* 00000020 "(.. ...." */ 0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00, /* 00000028 ".... ..." */ 0x00,0x00,0x00,0x00,0x30,0x00,0x00,0x00, /* 00000030 "....0..." */ 0x00,0x00,0x00,0x00,0x40,0x00,0x00,0x00, /* 00000038 "....@..." */ 0x00,0x00,0x00,0x00,0x50,0x00,0x00,0x00, /* 00000040 "....P..." */ 0x00,0x00,0x00,0x00,0x60,0x00,0x00,0x00, /* 00000048 "....`..." */ 0x00,0x00,0x00,0x00,0x70,0x00,0x00,0x00, /* 00000050 "....p..." */ 0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00, /* 00000058 "........" */ 0x00,0x00,0x00,0x00 /* 00000060 "...." */ }; #endif src/acpica/source/compiler/dtutils.c000066400000000000000000000607051231470457100200470ustar00rootroot00000000000000/****************************************************************************** * * Module Name: dtutils.c - Utility routines for the data table compiler * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #define __DTUTILS_C__ #include "aslcompiler.h" #include "dtcompiler.h" #include "actables.h" #define _COMPONENT DT_COMPILER ACPI_MODULE_NAME ("dtutils") /* Local prototypes */ static void DtSum ( DT_SUBTABLE *Subtable, void *Context, void *ReturnValue); /****************************************************************************** * * FUNCTION: DtError * * PARAMETERS: Level - Seriousness (Warning/error, etc.) * MessageId - Index into global message buffer * Op - Parse node where error happened * ExtraMessage - additional error message * * RETURN: None * * DESCRIPTION: Common error interface for data table compiler * *****************************************************************************/ void DtError ( UINT8 Level, UINT8 MessageId, DT_FIELD *FieldObject, char *ExtraMessage) { /* Check if user wants to ignore this exception */ if (AslIsExceptionDisabled (Level, MessageId)) { return; } if (FieldObject) { AslCommonError (Level, MessageId, FieldObject->Line, FieldObject->Line, FieldObject->ByteOffset, FieldObject->Column, Gbl_Files[ASL_FILE_INPUT].Filename, ExtraMessage); } else { AslCommonError (Level, MessageId, 0, 0, 0, 0, 0, ExtraMessage); } } /****************************************************************************** * * FUNCTION: DtNameError * * PARAMETERS: Level - Seriousness (Warning/error, etc.) * MessageId - Index into global message buffer * Op - Parse node where error happened * ExtraMessage - additional error message * * RETURN: None * * DESCRIPTION: Error interface for named objects * *****************************************************************************/ void DtNameError ( UINT8 Level, UINT8 MessageId, DT_FIELD *FieldObject, char *ExtraMessage) { switch (Level) { case ASL_WARNING2: case ASL_WARNING3: if (Gbl_WarningLevel < Level) { return; } break; default: break; } if (FieldObject) { AslCommonError (Level, MessageId, FieldObject->Line, FieldObject->Line, FieldObject->ByteOffset, FieldObject->NameColumn, Gbl_Files[ASL_FILE_INPUT].Filename, ExtraMessage); } else { AslCommonError (Level, MessageId, 0, 0, 0, 0, 0, ExtraMessage); } } /******************************************************************************* * * FUNCTION: DtFatal * * PARAMETERS: None * * RETURN: None * * DESCRIPTION: Dump the error log and abort the compiler. Used for serious * compile or I/O errors * ******************************************************************************/ void DtFatal ( UINT8 MessageId, DT_FIELD *FieldObject, char *ExtraMessage) { DtError (ASL_ERROR, MessageId, FieldObject, ExtraMessage); /* * TBD: remove this entire function, DtFatal * * We cannot abort the compiler on error, because we may be compiling a * list of files. We must move on to the next file. */ #ifdef __OBSOLETE CmCleanupAndExit (); exit (1); #endif } /****************************************************************************** * * FUNCTION: DtStrtoul64 * * PARAMETERS: String - Null terminated string * ReturnInteger - Where the converted integer is returned * * RETURN: Status * * DESCRIPTION: Simple conversion of a string hex integer constant to unsigned * value. Assumes no leading "0x" for the constant. * * Portability note: The reason this function exists is because a 64-bit * sscanf is not available in all environments. * *****************************************************************************/ ACPI_STATUS DtStrtoul64 ( char *String, UINT64 *ReturnInteger) { char *ThisChar = String; UINT32 ThisDigit; UINT64 ReturnValue = 0; int DigitCount = 0; /* Skip over any white space in the buffer */ while ((*ThisChar == ' ') || (*ThisChar == '\t')) { ThisChar++; } /* Skip leading zeros */ while ((*ThisChar) == '0') { ThisChar++; } /* Convert character-by-character */ while (*ThisChar) { if (ACPI_IS_DIGIT (*ThisChar)) { /* Convert ASCII 0-9 to Decimal value */ ThisDigit = ((UINT8) *ThisChar) - '0'; } else /* Letter */ { ThisDigit = (UINT32) ACPI_TOUPPER (*ThisChar); if (!ACPI_IS_XDIGIT ((char) ThisDigit)) { /* Not A-F */ return (AE_BAD_CHARACTER); } /* Convert ASCII Hex char (A-F) to value */ ThisDigit = (ThisDigit - 'A') + 10; } /* Insert the 4-bit hex digit */ ReturnValue <<= 4; ReturnValue += ThisDigit; ThisChar++; DigitCount++; if (DigitCount > 16) { /* Value is too large (> 64 bits/8 bytes/16 hex digits) */ return (AE_LIMIT); } } *ReturnInteger = ReturnValue; return (AE_OK); } /****************************************************************************** * * FUNCTION: DtGetFieldValue * * PARAMETERS: Field - Current field list pointer * * RETURN: Field value * * DESCRIPTION: Get field value * *****************************************************************************/ char * DtGetFieldValue ( DT_FIELD *Field) { if (!Field) { return (NULL); } return (Field->Value); } /****************************************************************************** * * FUNCTION: DtGetFieldType * * PARAMETERS: Info - Data table info * * RETURN: Field type * * DESCRIPTION: Get field type * *****************************************************************************/ UINT8 DtGetFieldType ( ACPI_DMTABLE_INFO *Info) { UINT8 Type; /* DT_FLAG means that this is the start of a block of flag bits */ /* TBD - we can make these a separate opcode later */ if (Info->Flags & DT_FLAG) { return (DT_FIELD_TYPE_FLAGS_INTEGER); } /* Type is based upon the opcode for this field in the info table */ switch (Info->Opcode) { case ACPI_DMT_FLAG0: case ACPI_DMT_FLAG1: case ACPI_DMT_FLAG2: case ACPI_DMT_FLAG3: case ACPI_DMT_FLAG4: case ACPI_DMT_FLAG5: case ACPI_DMT_FLAG6: case ACPI_DMT_FLAG7: case ACPI_DMT_FLAGS0: case ACPI_DMT_FLAGS1: case ACPI_DMT_FLAGS2: case ACPI_DMT_FLAGS4: Type = DT_FIELD_TYPE_FLAG; break; case ACPI_DMT_NAME4: case ACPI_DMT_SIG: case ACPI_DMT_NAME6: case ACPI_DMT_NAME8: case ACPI_DMT_STRING: Type = DT_FIELD_TYPE_STRING; break; case ACPI_DMT_BUFFER: case ACPI_DMT_BUF7: case ACPI_DMT_BUF10: case ACPI_DMT_BUF16: case ACPI_DMT_BUF128: case ACPI_DMT_PCI_PATH: Type = DT_FIELD_TYPE_BUFFER; break; case ACPI_DMT_GAS: case ACPI_DMT_HESTNTFY: Type = DT_FIELD_TYPE_INLINE_SUBTABLE; break; case ACPI_DMT_UNICODE: Type = DT_FIELD_TYPE_UNICODE; break; case ACPI_DMT_UUID: Type = DT_FIELD_TYPE_UUID; break; case ACPI_DMT_DEVICE_PATH: Type = DT_FIELD_TYPE_DEVICE_PATH; break; case ACPI_DMT_LABEL: Type = DT_FIELD_TYPE_LABEL; break; default: Type = DT_FIELD_TYPE_INTEGER; break; } return (Type); } /****************************************************************************** * * FUNCTION: DtGetBufferLength * * PARAMETERS: Buffer - List of integers, * for example "10 3A 4F 2E" * * RETURN: Count of integer * * DESCRIPTION: Get length of bytes needed to store the integers * *****************************************************************************/ UINT32 DtGetBufferLength ( char *Buffer) { UINT32 ByteLength = 0; while (*Buffer) { if (*Buffer == ' ') { ByteLength++; while (*Buffer == ' ') { Buffer++; } } Buffer++; } return (++ByteLength); } /****************************************************************************** * * FUNCTION: DtGetFieldLength * * PARAMETERS: Field - Current field * Info - Data table info * * RETURN: Field length * * DESCRIPTION: Get length of bytes needed to compile the field * * Note: This function must remain in sync with AcpiDmDumpTable. * *****************************************************************************/ UINT32 DtGetFieldLength ( DT_FIELD *Field, ACPI_DMTABLE_INFO *Info) { UINT32 ByteLength = 0; char *Value; /* Length is based upon the opcode for this field in the info table */ switch (Info->Opcode) { case ACPI_DMT_FLAG0: case ACPI_DMT_FLAG1: case ACPI_DMT_FLAG2: case ACPI_DMT_FLAG3: case ACPI_DMT_FLAG4: case ACPI_DMT_FLAG5: case ACPI_DMT_FLAG6: case ACPI_DMT_FLAG7: case ACPI_DMT_FLAGS0: case ACPI_DMT_FLAGS1: case ACPI_DMT_FLAGS2: case ACPI_DMT_FLAGS4: case ACPI_DMT_LABEL: case ACPI_DMT_EXTRA_TEXT: ByteLength = 0; break; case ACPI_DMT_UINT8: case ACPI_DMT_CHKSUM: case ACPI_DMT_SPACEID: case ACPI_DMT_ACCWIDTH: case ACPI_DMT_IVRS: case ACPI_DMT_MADT: case ACPI_DMT_PCCT: case ACPI_DMT_PMTT: case ACPI_DMT_SRAT: case ACPI_DMT_ASF: case ACPI_DMT_HESTNTYP: case ACPI_DMT_FADTPM: case ACPI_DMT_EINJACT: case ACPI_DMT_EINJINST: case ACPI_DMT_ERSTACT: case ACPI_DMT_ERSTINST: ByteLength = 1; break; case ACPI_DMT_UINT16: case ACPI_DMT_DMAR: case ACPI_DMT_HEST: case ACPI_DMT_PCI_PATH: ByteLength = 2; break; case ACPI_DMT_UINT24: ByteLength = 3; break; case ACPI_DMT_UINT32: case ACPI_DMT_NAME4: case ACPI_DMT_SLIC: case ACPI_DMT_SIG: ByteLength = 4; break; case ACPI_DMT_UINT40: ByteLength = 5; break; case ACPI_DMT_UINT48: case ACPI_DMT_NAME6: ByteLength = 6; break; case ACPI_DMT_UINT56: case ACPI_DMT_BUF7: ByteLength = 7; break; case ACPI_DMT_UINT64: case ACPI_DMT_NAME8: ByteLength = 8; break; case ACPI_DMT_STRING: Value = DtGetFieldValue (Field); if (Value) { ByteLength = ACPI_STRLEN (Value) + 1; } else { /* At this point, this is a fatal error */ sprintf (MsgBuffer, "Expected \"%s\"", Info->Name); DtFatal (ASL_MSG_COMPILER_INTERNAL, NULL, MsgBuffer); return (0); } break; case ACPI_DMT_GAS: ByteLength = sizeof (ACPI_GENERIC_ADDRESS); break; case ACPI_DMT_HESTNTFY: ByteLength = sizeof (ACPI_HEST_NOTIFY); break; case ACPI_DMT_BUFFER: Value = DtGetFieldValue (Field); if (Value) { ByteLength = DtGetBufferLength (Value); } else { /* At this point, this is a fatal error */ sprintf (MsgBuffer, "Expected \"%s\"", Info->Name); DtFatal (ASL_MSG_COMPILER_INTERNAL, NULL, MsgBuffer); return (0); } break; case ACPI_DMT_BUF10: ByteLength = 10; break; case ACPI_DMT_BUF16: case ACPI_DMT_UUID: ByteLength = 16; break; case ACPI_DMT_BUF128: ByteLength = 128; break; case ACPI_DMT_UNICODE: Value = DtGetFieldValue (Field); /* TBD: error if Value is NULL? (as below?) */ ByteLength = (ACPI_STRLEN (Value) + 1) * sizeof(UINT16); break; default: DtFatal (ASL_MSG_COMPILER_INTERNAL, Field, "Invalid table opcode"); return (0); } return (ByteLength); } /****************************************************************************** * * FUNCTION: DtSum * * PARAMETERS: DT_WALK_CALLBACK: * Subtable - Subtable * Context - Unused * ReturnValue - Store the checksum of subtable * * RETURN: Status * * DESCRIPTION: Get the checksum of subtable * *****************************************************************************/ static void DtSum ( DT_SUBTABLE *Subtable, void *Context, void *ReturnValue) { UINT8 Checksum; UINT8 *Sum = ReturnValue; Checksum = AcpiTbChecksum (Subtable->Buffer, Subtable->Length); *Sum = (UINT8) (*Sum + Checksum); } /****************************************************************************** * * FUNCTION: DtSetTableChecksum * * PARAMETERS: ChecksumPointer - Where to return the checksum * * RETURN: None * * DESCRIPTION: Set checksum of the whole data table into the checksum field * *****************************************************************************/ void DtSetTableChecksum ( UINT8 *ChecksumPointer) { UINT8 Checksum = 0; UINT8 OldSum; DtWalkTableTree (Gbl_RootTable, DtSum, NULL, &Checksum); OldSum = *ChecksumPointer; Checksum = (UINT8) (Checksum - OldSum); /* Compute the final checksum */ Checksum = (UINT8) (0 - Checksum); *ChecksumPointer = Checksum; } /****************************************************************************** * * FUNCTION: DtSetTableLength * * PARAMETERS: None * * RETURN: None * * DESCRIPTION: Walk the subtables and set all the length fields * *****************************************************************************/ void DtSetTableLength ( void) { DT_SUBTABLE *ParentTable; DT_SUBTABLE *ChildTable; ParentTable = Gbl_RootTable; ChildTable = NULL; if (!ParentTable) { return; } DtSetSubtableLength (ParentTable); while (1) { ChildTable = DtGetNextSubtable (ParentTable, ChildTable); if (ChildTable) { if (ChildTable->LengthField) { DtSetSubtableLength (ChildTable); } if (ChildTable->Child) { ParentTable = ChildTable; ChildTable = NULL; } else { ParentTable->TotalLength += ChildTable->TotalLength; if (ParentTable->LengthField) { DtSetSubtableLength (ParentTable); } } } else { ChildTable = ParentTable; if (ChildTable == Gbl_RootTable) { break; } ParentTable = DtGetParentSubtable (ParentTable); ParentTable->TotalLength += ChildTable->TotalLength; if (ParentTable->LengthField) { DtSetSubtableLength (ParentTable); } } } } /****************************************************************************** * * FUNCTION: DtWalkTableTree * * PARAMETERS: StartTable - Subtable in the tree where walking begins * UserFunction - Called during the walk * Context - Passed to user function * ReturnValue - The return value of UserFunction * * RETURN: None * * DESCRIPTION: Performs a depth-first walk of the subtable tree * *****************************************************************************/ void DtWalkTableTree ( DT_SUBTABLE *StartTable, DT_WALK_CALLBACK UserFunction, void *Context, void *ReturnValue) { DT_SUBTABLE *ParentTable; DT_SUBTABLE *ChildTable; ParentTable = StartTable; ChildTable = NULL; if (!ParentTable) { return; } UserFunction (ParentTable, Context, ReturnValue); while (1) { ChildTable = DtGetNextSubtable (ParentTable, ChildTable); if (ChildTable) { UserFunction (ChildTable, Context, ReturnValue); if (ChildTable->Child) { ParentTable = ChildTable; ChildTable = NULL; } } else { ChildTable = ParentTable; if (ChildTable == Gbl_RootTable) { break; } ParentTable = DtGetParentSubtable (ParentTable); if (ChildTable->Peer == StartTable) { break; } } } } /****************************************************************************** * * FUNCTION: DtFreeFieldList * * PARAMETERS: None * * RETURN: None * * DESCRIPTION: Free the field list * *****************************************************************************/ void DtFreeFieldList ( void) { DT_FIELD *Field = Gbl_FieldList; DT_FIELD *NextField; /* Walk and free entire field list */ while (Field) { NextField = Field->Next; /* Save link */ if (!(Field->Flags & DT_FIELD_NOT_ALLOCATED)) { ACPI_FREE (Field->Name); ACPI_FREE (Field->Value); } ACPI_FREE (Field); Field = NextField; } } src/acpica/source/compiler/fwts_iasl_interface.c000066400000000000000000000112441231470457100223640ustar00rootroot00000000000000/* * Copyright (C) 2011-2012 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #define _DECLARE_GLOBALS #include #include #include #include #include "fwts_iasl_interface.h" #include "aslcompiler.h" #include "acapps.h" /* * init_asl_core() * initialize iasl */ static void init_asl_core(void) { int i; AcpiGbl_ExternalFileList = NULL; AcpiDbgLevel = 0; PrInitializePreprocessor (); for (i = 0; i < ASL_NUM_FILES; i++) { Gbl_Files[i].Handle = NULL; Gbl_Files[i].Filename = NULL; } Gbl_Files[ASL_FILE_STDOUT].Handle = stdout; Gbl_Files[ASL_FILE_STDOUT].Filename = "STDOUT"; Gbl_Files[ASL_FILE_STDERR].Handle = stdout; Gbl_Files[ASL_FILE_STDERR].Filename = "STDOUT"; Gbl_LineBufferSize = 16384; Gbl_CurrentLineBuffer = NULL; Gbl_MainTokenBuffer = NULL; UtExpandLineBuffers(); } /* * fwts_iasl_disassemble_aml() * invoke iasl to disassemble AML */ int fwts_iasl_disassemble_aml(const char *aml, const char *outputfile) { pid_t pid; int status; pid = fork(); switch (pid) { case -1: return -1; case 0: /* Child */ init_asl_core(); /* Setup ACPICA disassembler globals */ Gbl_WarningLevel = ASL_WARNING3; Gbl_IgnoreErrors = TRUE; Gbl_DisasmFlag = TRUE; Gbl_DoCompile = FALSE; Gbl_OutputFilenamePrefix = (char*)outputfile; Gbl_UseDefaultAmlFilename = FALSE; UtConvertBackslashes (Gbl_OutputFilenamePrefix); /* Throw away noisy errors */ if (freopen("/dev/null", "w", stderr) != NULL) AslDoOneFile((char *)aml); _exit(0); break; default: /* Parent */ (void)waitpid(pid, &status, WUNTRACED | WCONTINUED); } return 0; } /* * fwts_iasl_read_output() * consume output from iasl. */ static int fwts_iasl_read_output(const int fd, char **data, size_t *len, bool *eof) { char buffer[8192]; ssize_t n; if (*eof) return 0; while ((n = read(fd, buffer, sizeof(buffer))) > 0) { if ((*data = realloc(*data, *len + n + 1)) == NULL) return -1; memcpy(*data + *len, buffer, n); *len += n; (*data)[*len] = '\0'; } if (n <= 0) *eof = true; return 0; } /* * fwts_iasl_assemble_aml() * invoke iasl and assemble some source, stdout into * stdout_output, stderr into stderr_output */ int fwts_iasl_assemble_aml(const char *source, char **stdout_output, char **stderr_output) { int stdout_fds[2], stderr_fds[2]; int status, ret = 0; size_t stdout_len = 0, stderr_len = 0; pid_t pid; bool stdout_eof = false, stderr_eof = false; if (pipe(stdout_fds) < 0) return -1; if (pipe(stderr_fds) < 0) return -1; pid = fork(); switch (pid) { case -1: (void)close(stdout_fds[0]); (void)close(stdout_fds[1]); (void)close(stderr_fds[0]); (void)close(stderr_fds[1]); return -1; case 0: /* Child */ init_asl_core(); /* stdout to be redirected down the writer end of pipe */ if (stdout_fds[1] != STDOUT_FILENO) if (dup2(stdout_fds[1], STDOUT_FILENO) < 0) _exit(EXIT_FAILURE); if (stderr_fds[1] != STDERR_FILENO) if (dup2(stderr_fds[1], STDERR_FILENO) < 0) _exit(EXIT_FAILURE); /* Close reader end */ (void)close(stdout_fds[0]); (void)close(stderr_fds[0]); /* Setup ACPICA compiler globals */ Gbl_DisasmFlag = FALSE; Gbl_DoCompile = TRUE; Gbl_PreprocessFlag = TRUE; Gbl_UseDefaultAmlFilename = FALSE; Gbl_OutputFilenamePrefix = (char*)source; UtConvertBackslashes (Gbl_OutputFilenamePrefix); (void)AslDoOneFile((char *)source); /* * We need to flush buffered I/O on IASL stdout * before we exit */ (void)fflush(stdout); (void)fflush(stderr); _exit(0); break; default: /* Parent */ /* Close writer end */ (void)close(stdout_fds[1]); (void)close(stderr_fds[1]); while (!stdout_eof && !stderr_eof) { if (fwts_iasl_read_output(stdout_fds[0], stdout_output, &stdout_len, &stdout_eof) < 0) break; if (fwts_iasl_read_output(stderr_fds[0], stderr_output, &stderr_len, &stderr_eof) < 0) break; } (void)waitpid(pid, &status, WUNTRACED | WCONTINUED); (void)close(stdout_fds[0]); (void)close(stderr_fds[0]); break; } return ret; } src/acpica/source/compiler/fwts_iasl_interface.h000066400000000000000000000017561231470457100224000ustar00rootroot00000000000000/* * Copyright (C) 2011-2012 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #ifndef __FWTS_IASL_INTERFACE__ #define __FWTS_IASL_INTERFACE__ int fwts_iasl_disassemble_aml(const char *aml, const char *outputfile); int fwts_iasl_assemble_aml(const char *source, char **stdout_output, char **stderr_output); #endif src/acpica/source/compiler/preprocess.h000066400000000000000000000274411231470457100205510ustar00rootroot00000000000000/****************************************************************************** * * Module Name: preprocess.h - header for iASL Preprocessor * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #define __PREPROCESS_H__ #ifndef _PREPROCESS #define _PREPROCESS #undef PR_EXTERN #ifdef _DECLARE_PR_GLOBALS #define PR_EXTERN #define PR_INIT_GLOBAL(a,b) (a)=(b) #else #define PR_EXTERN extern #define PR_INIT_GLOBAL(a,b) (a) #endif /* * Configuration */ #define PR_MAX_MACRO_ARGS 32 /* Max number of macro args */ #define PR_MAX_ARG_INSTANCES 24 /* Max instances of any one arg */ #define PR_LINES_PER_BLOCK 4096 /* Max input source lines per block */ /* * Local defines and macros */ #define PR_TOKEN_SEPARATORS " ,(){}\t\n" #define PR_MACRO_SEPARATORS " ,(){}~!*/%+-<>=&^|\"\t\n" #define PR_MACRO_ARGUMENTS " ,\t\n" #define PR_EXPR_SEPARATORS " ,(){}~!*/%+-<>=&^|\"\t\n" #define PR_PREFIX_ID "Pr(%.4u) - " /* Used for debug output */ #define THIS_TOKEN_OFFSET(t) ((t-Gbl_MainTokenBuffer) + 1) /* * Preprocessor structures */ typedef struct pr_macro_arg { char *Name; UINT32 Offset[PR_MAX_ARG_INSTANCES]; UINT16 UseCount; } PR_MACRO_ARG; typedef struct pr_define_info { struct pr_define_info *Previous; struct pr_define_info *Next; char *Identifier; char *Replacement; char *Body; /* Macro body */ PR_MACRO_ARG *Args; /* Macro arg list */ UINT16 ArgCount; /* Macro arg count */ BOOLEAN Persist; /* Keep for entire compiler run */ } PR_DEFINE_INFO; typedef struct pr_directive_info { char *Name; /* Directive name */ UINT8 ArgCount; /* Required # of args */ } PR_DIRECTIVE_INFO; typedef struct pr_operator_info { char *Op; } PR_OPERATOR_INFO; typedef struct pr_file_node { struct pr_file_node *Next; FILE *File; char *Filename; UINT32 CurrentLineNumber; } PR_FILE_NODE; #define MAX_ARGUMENT_LENGTH 24 typedef struct directive_info { struct directive_info *Next; char Argument[MAX_ARGUMENT_LENGTH]; int Directive; BOOLEAN IgnoringThisCodeBlock; } DIRECTIVE_INFO; /* * Globals */ #if 0 /* TBD for macros */ PR_EXTERN char PR_INIT_GLOBAL (*XXXEvalBuffer, NULL); /* [ASL_LINE_BUFFER_SIZE]; */ #endif PR_EXTERN char PR_INIT_GLOBAL (*Gbl_MainTokenBuffer, NULL); /* [ASL_LINE_BUFFER_SIZE]; */ PR_EXTERN char PR_INIT_GLOBAL (*Gbl_MacroTokenBuffer, NULL); /* [ASL_LINE_BUFFER_SIZE]; */ PR_EXTERN char PR_INIT_GLOBAL (*Gbl_ExpressionTokenBuffer, NULL); /* [ASL_LINE_BUFFER_SIZE]; */ PR_EXTERN UINT32 Gbl_PreprocessorLineNumber; PR_EXTERN int Gbl_IfDepth; PR_EXTERN PR_FILE_NODE *Gbl_InputFileList; PR_EXTERN PR_DEFINE_INFO PR_INIT_GLOBAL (*Gbl_DefineList, NULL); PR_EXTERN BOOLEAN PR_INIT_GLOBAL (Gbl_PreprocessorError, FALSE); PR_EXTERN BOOLEAN PR_INIT_GLOBAL (Gbl_IgnoringThisCodeBlock, FALSE); PR_EXTERN DIRECTIVE_INFO PR_INIT_GLOBAL (*Gbl_DirectiveStack, NULL); /* * prscan - Preprocessor entry */ void PrInitializePreprocessor ( void); void PrInitializeGlobals ( void); void PrTerminatePreprocessor ( void); void PrDoPreprocess ( void); UINT64 PrIsDefined ( char *Identifier); UINT64 PrResolveDefine ( char *Identifier); int PrInitLexer ( char *String); void PrTerminateLexer ( void); /* * prmacros - Support for #defines and macros */ void PrDumpPredefinedNames ( void); PR_DEFINE_INFO * PrAddDefine ( char *Token, char *Token2, BOOLEAN Persist); void PrRemoveDefine ( char *DefineName); PR_DEFINE_INFO * PrMatchDefine ( char *MatchString); void PrAddMacro ( char *Name, char **Next); void PrDoMacroInvocation ( char *TokenBuffer, char *MacroStart, PR_DEFINE_INFO *DefineInfo, char **Next); /* * prexpress - #if expression support */ ACPI_STATUS PrResolveIntegerExpression ( char *Line, UINT64 *ReturnValue); char * PrPrioritizeExpression ( char *OriginalLine); /* * prparser - lex/yacc expression parser */ UINT64 PrEvaluateExpression ( char *ExprString); /* * prutils - Preprocesor utilities */ char * PrGetNextToken ( char *Buffer, char *MatchString, char **Next); void PrError ( UINT8 Level, UINT8 MessageId, UINT32 Column); void PrReplaceData ( char *Buffer, UINT32 LengthToRemove, char *BufferToAdd, UINT32 LengthToAdd); void PrOpenIncludeFile ( char *Filename); FILE * PrOpenIncludeWithPrefix ( char *PrefixDir, char *Filename); void PrPushInputFileStack ( FILE *InputFile, char *Filename); BOOLEAN PrPopInputFileStack ( void); #endif src/acpica/source/compiler/prexpress.c000066400000000000000000000323721231470457100204110ustar00rootroot00000000000000/****************************************************************************** * * Module Name: prexpress - Preprocessor #if expression support * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #include "aslcompiler.h" #include "dtcompiler.h" #define _COMPONENT ASL_PREPROCESSOR ACPI_MODULE_NAME ("prexpress") /* Local prototypes */ static char * PrExpandMacros ( char *Line); #ifdef _UNDER_DEVELOPMENT /****************************************************************************** * * FUNCTION: PrUnTokenize * * PARAMETERS: Buffer - Token Buffer * Next - "Next" buffer from GetNextToken * * RETURN: None * * DESCRIPTION: Un-tokenized the current token buffer. The implementation is * to simply set the null inserted by GetNextToken to a blank. * If Next is NULL, there were no tokens found in the Buffer, * so there is nothing to do. * *****************************************************************************/ static void PrUnTokenize ( char *Buffer, char *Next) { UINT32 Length = strlen (Buffer); if (!Next) { return; } if (Buffer[Length] != '\n') { Buffer[strlen(Buffer)] = ' '; } } #endif /****************************************************************************** * * FUNCTION: PrExpandMacros * * PARAMETERS: Line - Pointer into the current line * * RETURN: Updated pointer into the current line * * DESCRIPTION: Expand any macros found in the current line buffer. * *****************************************************************************/ static char * PrExpandMacros ( char *Line) { char *Token; char *ReplaceString; PR_DEFINE_INFO *DefineInfo; ACPI_SIZE TokenOffset; char *Next; int OffsetAdjust; strcpy (Gbl_ExpressionTokenBuffer, Gbl_CurrentLineBuffer); Token = PrGetNextToken (Gbl_ExpressionTokenBuffer, PR_EXPR_SEPARATORS, &Next); OffsetAdjust = 0; while (Token) { DefineInfo = PrMatchDefine (Token); if (DefineInfo) { if (DefineInfo->Body) { /* This is a macro. TBD: Is this allowed? */ DbgPrint (ASL_DEBUG_OUTPUT, PR_PREFIX_ID "Matched Macro: %s->%s\n", Gbl_CurrentLineNumber, DefineInfo->Identifier, DefineInfo->Replacement); PrDoMacroInvocation (Gbl_ExpressionTokenBuffer, Token, DefineInfo, &Next); } else { ReplaceString = DefineInfo->Replacement; /* Replace the name in the original line buffer */ TokenOffset = Token - Gbl_ExpressionTokenBuffer + OffsetAdjust; PrReplaceData ( &Gbl_CurrentLineBuffer[TokenOffset], strlen (Token), ReplaceString, strlen (ReplaceString)); /* Adjust for length difference between old and new name length */ OffsetAdjust += strlen (ReplaceString) - strlen (Token); DbgPrint (ASL_DEBUG_OUTPUT, PR_PREFIX_ID "Matched #define within expression: %s->%s\n", Gbl_CurrentLineNumber, Token, *ReplaceString ? ReplaceString : "(NULL STRING)"); } } Token = PrGetNextToken (NULL, PR_EXPR_SEPARATORS, &Next); } return (Line); } /****************************************************************************** * * FUNCTION: PrIsDefined * * PARAMETERS: Identifier - Name to be resolved * * RETURN: 64-bit boolean integer value * * DESCRIPTION: Returns TRUE if the name is defined, FALSE otherwise (0). * *****************************************************************************/ UINT64 PrIsDefined ( char *Identifier) { UINT64 Value; PR_DEFINE_INFO *DefineInfo; DbgPrint (ASL_DEBUG_OUTPUT, PR_PREFIX_ID "**** Is defined?: %s\n", Gbl_CurrentLineNumber, Identifier); Value = 0; /* Default is "Not defined" -- FALSE */ DefineInfo = PrMatchDefine (Identifier); if (DefineInfo) { Value = ACPI_UINT64_MAX; /* TRUE */ } DbgPrint (ASL_DEBUG_OUTPUT, PR_PREFIX_ID "[#if defined %s] resolved to: %8.8X%8.8X\n", Gbl_CurrentLineNumber, Identifier, ACPI_FORMAT_UINT64 (Value)); return (Value); } /****************************************************************************** * * FUNCTION: PrResolveDefine * * PARAMETERS: Identifier - Name to be resolved * * RETURN: A 64-bit boolean integer value * * DESCRIPTION: Returns TRUE if the name is defined, FALSE otherwise (0). * *****************************************************************************/ UINT64 PrResolveDefine ( char *Identifier) { UINT64 Value; PR_DEFINE_INFO *DefineInfo; DbgPrint (ASL_DEBUG_OUTPUT, PR_PREFIX_ID "**** Resolve #define: %s\n", Gbl_CurrentLineNumber, Identifier); Value = 0; /* Default is "Not defined" -- FALSE */ DefineInfo = PrMatchDefine (Identifier); if (DefineInfo) { Value = ACPI_UINT64_MAX; /* TRUE */ } DbgPrint (ASL_DEBUG_OUTPUT, PR_PREFIX_ID "[#if defined %s] resolved to: %8.8X%8.8X\n", Gbl_CurrentLineNumber, Identifier, ACPI_FORMAT_UINT64 (Value)); return (Value); } /****************************************************************************** * * FUNCTION: PrResolveIntegerExpression * * PARAMETERS: Line - Pointer to integer expression * ReturnValue - Where the resolved 64-bit integer is * returned. * * RETURN: Status * * DESCRIPTION: Resolve an integer expression to a single value. Supports * both integer constants and labels. * *****************************************************************************/ ACPI_STATUS PrResolveIntegerExpression ( char *Line, UINT64 *ReturnValue) { UINT64 Result; char *ExpandedLine; DbgPrint (ASL_DEBUG_OUTPUT, PR_PREFIX_ID "**** Resolve #if: %s\n", Gbl_CurrentLineNumber, Line); /* Expand all macros within the expression first */ ExpandedLine = PrExpandMacros (Line); /* Now we can evaluate the expression */ Result = PrEvaluateExpression (ExpandedLine); DbgPrint (ASL_DEBUG_OUTPUT, PR_PREFIX_ID "**** Expression Resolved to: %8.8X%8.8X\n", Gbl_CurrentLineNumber, ACPI_FORMAT_UINT64 (Result)); *ReturnValue = Result; return (AE_OK); #if 0 InvalidExpression: ACPI_FREE (EvalBuffer); PrError (ASL_ERROR, ASL_MSG_INVALID_EXPRESSION, 0); return (AE_ERROR); NormalExit: DbgPrint (ASL_DEBUG_OUTPUT, PR_PREFIX_ID "**** Expression Resolved to: %8.8X%8.8X\n", Gbl_CurrentLineNumber, ACPI_FORMAT_UINT64 (Value1)); *ReturnValue = Value1; return (AE_OK); #endif } src/acpica/source/compiler/prmacros.c000066400000000000000000000500111231470457100201720ustar00rootroot00000000000000/****************************************************************************** * * Module Name: prmacros - Preprocessor #define macro support * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #include "aslcompiler.h" #include "dtcompiler.h" #define _COMPONENT ASL_PREPROCESSOR ACPI_MODULE_NAME ("prmacros") /******************************************************************************* * * FUNCTION: PrDumpPredefinedNames * * PARAMETERS: None * * RETURN: None * * DESCRIPTION: Dump the list of #defines. Used as the preprocessor starts, to * display the names that were defined on the command line. * Debug information only. * ******************************************************************************/ void PrDumpPredefinedNames ( void) { PR_DEFINE_INFO *DefineInfo; DefineInfo = Gbl_DefineList; while (DefineInfo) { DbgPrint (ASL_DEBUG_OUTPUT, PR_PREFIX_ID "Predefined #define: %s->%s\n", 0, DefineInfo->Identifier, DefineInfo->Replacement); DefineInfo = DefineInfo->Next; } } /******************************************************************************* * * FUNCTION: PrAddDefine * * PARAMETERS: Identifier - Name to be replaced * Replacement - Replacement for Identifier * Persist - Keep define across multiple compiles? * * RETURN: A new define_info struct. NULL on error. * * DESCRIPTION: Add a new #define to the global list * ******************************************************************************/ PR_DEFINE_INFO * PrAddDefine ( char *Identifier, char *Replacement, BOOLEAN Persist) { char *IdentifierString; char *ReplacementString; PR_DEFINE_INFO *DefineInfo; if (!Replacement) { Replacement = ""; } /* Check for already-defined first */ DefineInfo = PrMatchDefine (Identifier); if (DefineInfo) { DbgPrint (ASL_DEBUG_OUTPUT, PR_PREFIX_ID, "#define: name already exists: %s\n", Gbl_CurrentLineNumber, Identifier); /* * Name already exists. This is only an error if the target name * is different. */ if (strcmp (Replacement, DefineInfo->Replacement)) { PrError (ASL_ERROR, ASL_MSG_EXISTING_NAME, THIS_TOKEN_OFFSET (Identifier)); return (NULL); } return (DefineInfo); } /* Copy input strings */ IdentifierString = UtLocalCalloc (strlen (Identifier) + 1); strcpy (IdentifierString, Identifier); ReplacementString = UtLocalCalloc (strlen (Replacement) + 1); strcpy (ReplacementString, Replacement); /* Init and link new define info struct */ DefineInfo = UtLocalCalloc (sizeof (PR_DEFINE_INFO)); DefineInfo->Replacement = ReplacementString; DefineInfo->Identifier = IdentifierString; DefineInfo->Persist = Persist; if (Gbl_DefineList) { Gbl_DefineList->Previous = DefineInfo; } DefineInfo->Next = Gbl_DefineList; Gbl_DefineList = DefineInfo; return (DefineInfo); } /******************************************************************************* * * FUNCTION: PrRemoveDefine * * PARAMETERS: DefineName - Name of define to be removed * * RETURN: None * * DESCRIPTION: Implements #undef. Remove a #define if found in the global * list. No error if the target of the #undef does not exist, * as per the C #undef definition. * ******************************************************************************/ void PrRemoveDefine ( char *DefineName) { PR_DEFINE_INFO *DefineInfo; /* Match name and delete the node */ DefineInfo = Gbl_DefineList; while (DefineInfo) { if (!strcmp (DefineName, DefineInfo->Identifier)) { /* Remove from linked list */ if (DefineInfo->Previous) { (DefineInfo->Previous)->Next = DefineInfo->Next; } else { Gbl_DefineList = DefineInfo->Next; } if (DefineInfo->Next) { (DefineInfo->Next)->Previous = DefineInfo->Previous; } free (DefineInfo); return; } DefineInfo = DefineInfo->Next; } /* * Name was not found. By definition of #undef, this is not * an error, however. */ DbgPrint (ASL_DEBUG_OUTPUT, PR_PREFIX_ID "#undef: could not find %s\n", Gbl_CurrentLineNumber, DefineName); } /******************************************************************************* * * FUNCTION: PrMatchDefine * * PARAMETERS: MatchString - Name associated with the #define * * RETURN: Matched string if found. NULL otherwise. * * DESCRIPTION: Find a name in global #define list * ******************************************************************************/ PR_DEFINE_INFO * PrMatchDefine ( char *MatchString) { PR_DEFINE_INFO *DefineInfo; DefineInfo = Gbl_DefineList; while (DefineInfo) { if (!strcmp (MatchString, DefineInfo->Identifier)) { return (DefineInfo); } DefineInfo = DefineInfo->Next; } return (NULL); } /******************************************************************************* * * FUNCTION: PrAddMacro * * PARAMETERS: Name - Start of the macro definition * Next - "Next" buffer from GetNextToken * * RETURN: None * * DESCRIPTION: Add a new macro to the list of #defines. Handles argument * processing. * ******************************************************************************/ void PrAddMacro ( char *Name, char **Next) { char *Token = NULL; ACPI_SIZE TokenOffset; ACPI_SIZE MacroBodyOffset; PR_DEFINE_INFO *DefineInfo; PR_MACRO_ARG *Args; char *Body; char *BodyInSource; UINT32 i; UINT16 UseCount = 0; UINT16 ArgCount = 0; UINT32 Depth = 1; UINT32 EndOfArgList; char BufferChar; /* Find the end of the arguments list */ TokenOffset = Name - Gbl_MainTokenBuffer + strlen (Name) + 1; while (1) { BufferChar = Gbl_CurrentLineBuffer[TokenOffset]; if (BufferChar == '(') { Depth++; } else if (BufferChar == ')') { Depth--; } else if (BufferChar == 0) { PrError (ASL_ERROR, ASL_MSG_MACRO_SYNTAX, TokenOffset); return; } if (Depth == 0) { /* Found arg list end */ EndOfArgList = TokenOffset; break; } TokenOffset++; } /* At this point, we know that we have a reasonable argument list */ Args = UtLocalCalloc (sizeof (PR_MACRO_ARG) * PR_MAX_MACRO_ARGS); /* Get the macro argument names */ for (i = 0; i < PR_MAX_MACRO_ARGS; i++) { Token = PrGetNextToken (NULL, PR_MACRO_SEPARATORS, Next); if (!Token) { /* This is the case for a NULL macro body */ BodyInSource = ""; goto AddMacroToList; } /* Don't go beyond the argument list */ TokenOffset = Token - Gbl_MainTokenBuffer + strlen (Token); if (TokenOffset > EndOfArgList) { break; } DbgPrint (ASL_DEBUG_OUTPUT, PR_PREFIX_ID "Macro arg: %s \n", Gbl_CurrentLineNumber, Token); Args[i].Name = UtLocalCalloc (strlen (Token) + 1); strcpy (Args[i].Name, Token); Args[i].UseCount = 0; ArgCount++; if (ArgCount >= PR_MAX_MACRO_ARGS) { PrError (ASL_ERROR, ASL_MSG_TOO_MANY_ARGUMENTS, TokenOffset); goto ErrorExit; } } /* Get the macro body. Token now points to start of body */ MacroBodyOffset = Token - Gbl_MainTokenBuffer; /* Match each method arg in the macro body for later use */ Token = PrGetNextToken (NULL, PR_MACRO_SEPARATORS, Next); while (Token) { /* Search the macro arg list for matching arg */ for (i = 0; Args[i].Name && (i < PR_MAX_MACRO_ARGS); i++) { /* * Save argument offset within macro body. This is the mechanism * used to expand the macro upon invocation. * * Handles multiple instances of the same argument */ if (!strcmp (Token, Args[i].Name)) { UseCount = Args[i].UseCount; Args[i].Offset[UseCount] = (Token - Gbl_MainTokenBuffer) - MacroBodyOffset; DbgPrint (ASL_DEBUG_OUTPUT, PR_PREFIX_ID "Macro Arg #%u: %s UseCount %u Offset %u \n", Gbl_CurrentLineNumber, i, Token, UseCount+1, Args[i].Offset[UseCount]); Args[i].UseCount++; if (Args[i].UseCount >= PR_MAX_ARG_INSTANCES) { PrError (ASL_ERROR, ASL_MSG_TOO_MANY_ARGUMENTS, THIS_TOKEN_OFFSET (Token)); goto ErrorExit; } break; } } Token = PrGetNextToken (NULL, PR_MACRO_SEPARATORS, Next); } BodyInSource = &Gbl_CurrentLineBuffer[MacroBodyOffset]; AddMacroToList: /* Check if name is already defined first */ DefineInfo = PrMatchDefine (Name); if (DefineInfo) { DbgPrint (ASL_DEBUG_OUTPUT, PR_PREFIX_ID "#define: macro name already exists: %s\n", Gbl_CurrentLineNumber, Name); /* Error only if not exactly the same macro */ if (strcmp (DefineInfo->Body, BodyInSource) || (DefineInfo->ArgCount != ArgCount)) { PrError (ASL_ERROR, ASL_MSG_EXISTING_NAME, THIS_TOKEN_OFFSET (Name)); } goto ErrorExit; } DbgPrint (ASL_DEBUG_OUTPUT, PR_PREFIX_ID "Macro body: %s \n", Gbl_CurrentLineNumber, BodyInSource); /* Add macro to the #define list */ DefineInfo = PrAddDefine (Name, BodyInSource, FALSE); if (DefineInfo) { Body = UtLocalCalloc (strlen (BodyInSource) + 1); strcpy (Body, BodyInSource); DefineInfo->Body = Body; DefineInfo->Args = Args; DefineInfo->ArgCount = ArgCount; } return; ErrorExit: ACPI_FREE (Args); return; } /******************************************************************************* * * FUNCTION: PrDoMacroInvocation * * PARAMETERS: TokenBuffer - Current line buffer * MacroStart - Start of the macro invocation within * the token buffer * DefineInfo - Info for this macro * Next - "Next" buffer from GetNextToken * * RETURN: None * * DESCRIPTION: Expand a macro invocation * ******************************************************************************/ void PrDoMacroInvocation ( char *TokenBuffer, char *MacroStart, PR_DEFINE_INFO *DefineInfo, char **Next) { PR_MACRO_ARG *Args; char *Token = NULL; UINT32 TokenOffset; UINT32 Length; UINT32 i; /* Take a copy of the macro body for expansion */ strcpy (Gbl_MacroTokenBuffer, DefineInfo->Body); /* Replace each argument within the prototype body */ Args = DefineInfo->Args; if (!Args->Name) { /* This macro has no arguments */ Token = PrGetNextToken (NULL, PR_MACRO_ARGUMENTS, Next); if (!Token) { goto BadInvocation; } TokenOffset = (MacroStart - TokenBuffer); Length = Token - MacroStart + strlen (Token) + 1; PrReplaceData ( &Gbl_CurrentLineBuffer[TokenOffset], Length, Gbl_MacroTokenBuffer, strlen (Gbl_MacroTokenBuffer)); return; } while (Args->Name) { /* Get the next argument from macro invocation */ Token = PrGetNextToken (NULL, PR_MACRO_SEPARATORS, Next); if (!Token) { goto BadInvocation; } /* Replace all instances of this argument */ for (i = 0; i < Args->UseCount; i++) { /* Offset zero indicates "arg not used" */ /* TBD: Not really needed now, with UseCount available */ if (Args->Offset[i] == 0) { break; } PrReplaceData ( &Gbl_MacroTokenBuffer[Args->Offset[i]], strlen (Args->Name), Token, strlen (Token)); DbgPrint (ASL_DEBUG_OUTPUT, PR_PREFIX_ID "ExpandArg: %s \n", Gbl_CurrentLineNumber, Gbl_MacroTokenBuffer); } Args++; } /* TBD: need to make sure macro was not invoked with too many arguments */ if (!Token) { return; } /* Replace the entire macro invocation with the expanded macro */ TokenOffset = (MacroStart - TokenBuffer); Length = Token - MacroStart + strlen (Token) + 1; PrReplaceData ( &Gbl_CurrentLineBuffer[TokenOffset], Length, Gbl_MacroTokenBuffer, strlen (Gbl_MacroTokenBuffer)); return; BadInvocation: PrError (ASL_ERROR, ASL_MSG_INVALID_INVOCATION, THIS_TOKEN_OFFSET (MacroStart)); DbgPrint (ASL_DEBUG_OUTPUT, PR_PREFIX_ID "Bad macro invocation: %s \n", Gbl_CurrentLineNumber, Gbl_MacroTokenBuffer); return; } src/acpica/source/compiler/prparser.l000066400000000000000000000217501231470457100202230ustar00rootroot00000000000000%{ /****************************************************************************** * * Module Name: prparser.l - Flex input file for preprocessor lexer * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #include "aslcompiler.h" #include "prparser.y.h" /* Buffer to pass strings to the parser */ #define STRING_SETUP strcpy (StringBuffer, PrParsertext);\ PrParserlval.str = StringBuffer #define YY_NO_INPUT /* No file input, we use strings only */ #define _COMPONENT ACPI_COMPILER ACPI_MODULE_NAME ("prscanner") %} %option noyywrap %option nounput Number [0-9a-fA-F]+ HexNumber 0[xX][0-9a-fA-F]+ WhiteSpace [ \t\v\r]+ NewLine [\n] Identifier [a-zA-Z][0-9a-zA-Z]* %% \( return (EXPOP_PAREN_OPEN); \) return (EXPOP_PAREN_CLOSE); \~ return (EXPOP_ONES_COMPLIMENT); \! return (EXPOP_LOGICAL_NOT); \* return (EXPOP_MULTIPLY); \/ return (EXPOP_DIVIDE); \% return (EXPOP_MODULO); \+ return (EXPOP_ADD); \- return (EXPOP_SUBTRACT); ">>" return (EXPOP_SHIFT_RIGHT); "<<" return (EXPOP_SHIFT_LEFT); \< return (EXPOP_LESS); \> return (EXPOP_GREATER); "<=" return (EXPOP_LESS_EQUAL); ">=" return (EXPOP_GREATER_EQUAL); "==" return (EXPOP_EQUAL); "!=" return (EXPOP_NOT_EQUAL); \& return (EXPOP_AND); \^ return (EXPOP_XOR); \| return (EXPOP_OR); "&&" return (EXPOP_LOGICAL_AND); "||" return (EXPOP_LOGICAL_OR); "defined" return (EXPOP_DEFINE); {Identifier} {STRING_SETUP; return (EXPOP_IDENTIFIER);} <> return (EXPOP_EOF); /* null end-of-string */ {Number} return (EXPOP_NUMBER); {HexNumber} return (EXPOP_HEX_NUMBER); {NewLine} return (EXPOP_NEW_LINE); {WhiteSpace} /* Ignore */ . return (EXPOP_EOF); %% /* * Local support functions */ YY_BUFFER_STATE LexBuffer; /****************************************************************************** * * FUNCTION: PrInitLexer * * PARAMETERS: String - Input string to be parsed * * RETURN: TRUE if parser returns NULL. FALSE otherwise. * * DESCRIPTION: Initialization routine for lexer. The lexer needs * a buffer to handle strings instead of a file. * *****************************************************************************/ int PrInitLexer ( char *String) { LexBuffer = yy_scan_string (String); return (LexBuffer == NULL); } /****************************************************************************** * * FUNCTION: PrTerminateLexer * * PARAMETERS: None * * RETURN: None * * DESCRIPTION: Termination routine for thelexer. * *****************************************************************************/ void PrTerminateLexer ( void) { yy_delete_buffer (LexBuffer); } src/acpica/source/compiler/prparser.y000066400000000000000000000341231231470457100202360ustar00rootroot00000000000000%{ /****************************************************************************** * * Module Name: prparser.y - Bison input file for preprocessor parser * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #include "aslcompiler.h" #include "dtcompiler.h" #define _COMPONENT ASL_PREPROCESSOR ACPI_MODULE_NAME ("prparser") int PrParserlex (void); int PrParserparse (void); void PrParsererror (char const *msg); extern char *PrParsertext; UINT64 PrParserResult; /* Expression return value */ /* Bison/yacc configuration */ #define yytname PrParsername #define YYDEBUG 1 /* Enable debug output */ #define YYERROR_VERBOSE 1 /* Verbose error messages */ #define YYFLAG -32768 /* Define YYMALLOC/YYFREE to prevent redefinition errors */ #define YYMALLOC malloc #define YYFREE free %} %union { UINT64 value; UINT32 op; char *str; } /*! [Begin] no source code translation */ %type Expression %token EXPOP_EOF %token EXPOP_NEW_LINE %token EXPOP_NUMBER %token EXPOP_HEX_NUMBER %token EXPOP_RESERVED1 %token EXPOP_RESERVED2 %token EXPOP_PAREN_OPEN %token EXPOP_PAREN_CLOSE %left EXPOP_LOGICAL_OR %left EXPOP_LOGICAL_AND %left EXPOP_OR %left EXPOP_XOR %left EXPOP_AND %left EXPOP_EQUAL EXPOP_NOT_EQUAL %left EXPOP_GREATER EXPOP_LESS EXPOP_GREATER_EQUAL EXPOP_LESS_EQUAL %left EXPOP_SHIFT_RIGHT EXPOP_SHIFT_LEFT %left EXPOP_ADD EXPOP_SUBTRACT %left EXPOP_MULTIPLY EXPOP_DIVIDE EXPOP_MODULO %right EXPOP_ONES_COMPLIMENT EXPOP_LOGICAL_NOT /* Tokens above must be kept in synch with dtparser.y */ %token EXPOP_DEFINE %token EXPOP_IDENTIFIER %% /* * Operator precedence rules (from K&R) * * 1) ( ) * 2) ! ~ (unary operators that are supported here) * 3) * / % * 4) + - * 5) >> << * 6) < > <= >= * 7) == != * 8) & * 9) ^ * 10) | * 11) && * 12) || */ /*! [End] no source code translation !*/ Value : Expression EXPOP_NEW_LINE { PrParserResult=$1; return 0; } /* End of line (newline) */ | Expression EXPOP_EOF { PrParserResult=$1; return 0; } /* End of string (0) */ ; Expression /* Unary operators */ : EXPOP_LOGICAL_NOT Expression { $$ = DtDoOperator ($2, EXPOP_LOGICAL_NOT, $2);} | EXPOP_ONES_COMPLIMENT Expression { $$ = DtDoOperator ($2, EXPOP_ONES_COMPLIMENT, $2);} /* Binary operators */ | Expression EXPOP_MULTIPLY Expression { $$ = DtDoOperator ($1, EXPOP_MULTIPLY, $3);} | Expression EXPOP_DIVIDE Expression { $$ = DtDoOperator ($1, EXPOP_DIVIDE, $3);} | Expression EXPOP_MODULO Expression { $$ = DtDoOperator ($1, EXPOP_MODULO, $3);} | Expression EXPOP_ADD Expression { $$ = DtDoOperator ($1, EXPOP_ADD, $3);} | Expression EXPOP_SUBTRACT Expression { $$ = DtDoOperator ($1, EXPOP_SUBTRACT, $3);} | Expression EXPOP_SHIFT_RIGHT Expression { $$ = DtDoOperator ($1, EXPOP_SHIFT_RIGHT, $3);} | Expression EXPOP_SHIFT_LEFT Expression { $$ = DtDoOperator ($1, EXPOP_SHIFT_LEFT, $3);} | Expression EXPOP_GREATER Expression { $$ = DtDoOperator ($1, EXPOP_GREATER, $3);} | Expression EXPOP_LESS Expression { $$ = DtDoOperator ($1, EXPOP_LESS, $3);} | Expression EXPOP_GREATER_EQUAL Expression { $$ = DtDoOperator ($1, EXPOP_GREATER_EQUAL, $3);} | Expression EXPOP_LESS_EQUAL Expression { $$ = DtDoOperator ($1, EXPOP_LESS_EQUAL, $3);} | Expression EXPOP_EQUAL Expression { $$ = DtDoOperator ($1, EXPOP_EQUAL, $3);} | Expression EXPOP_NOT_EQUAL Expression { $$ = DtDoOperator ($1, EXPOP_NOT_EQUAL, $3);} | Expression EXPOP_AND Expression { $$ = DtDoOperator ($1, EXPOP_AND, $3);} | Expression EXPOP_XOR Expression { $$ = DtDoOperator ($1, EXPOP_XOR, $3);} | Expression EXPOP_OR Expression { $$ = DtDoOperator ($1, EXPOP_OR, $3);} | Expression EXPOP_LOGICAL_AND Expression { $$ = DtDoOperator ($1, EXPOP_LOGICAL_AND, $3);} | Expression EXPOP_LOGICAL_OR Expression { $$ = DtDoOperator ($1, EXPOP_LOGICAL_OR, $3);} /* Parentheses: '(' Expression ')' */ | EXPOP_PAREN_OPEN Expression EXPOP_PAREN_CLOSE { $$ = $2;} /* #if defined (ID) or #if defined ID */ | EXPOP_DEFINE EXPOP_PAREN_OPEN EXPOP_IDENTIFIER EXPOP_PAREN_CLOSE { $$ = PrIsDefined (PrParserlval.str);} | EXPOP_DEFINE EXPOP_IDENTIFIER { $$ = PrIsDefined (PrParserlval.str);} | EXPOP_IDENTIFIER { $$ = PrResolveDefine (PrParserlval.str);} /* Default base for a non-prefixed integer is 10 */ | EXPOP_NUMBER { UtStrtoul64 (PrParsertext, 10, &$$);} /* Standard hex number (0x1234) */ | EXPOP_HEX_NUMBER { UtStrtoul64 (PrParsertext, 16, &$$);} ; %% /* * Local support functions, including parser entry point */ #define PR_FIRST_PARSE_OPCODE EXPOP_EOF #define PR_YYTNAME_START 3 /****************************************************************************** * * FUNCTION: PrParsererror * * PARAMETERS: Message - Parser-generated error message * * RETURN: None * * DESCRIPTION: Handler for parser errors * *****************************************************************************/ void PrParsererror ( char const *Message) { DtError (ASL_ERROR, ASL_MSG_SYNTAX, NULL, (char *) Message); } /****************************************************************************** * * FUNCTION: PrGetOpName * * PARAMETERS: ParseOpcode - Parser token (EXPOP_*) * * RETURN: Pointer to the opcode name * * DESCRIPTION: Get the ascii name of the parse opcode for debug output * *****************************************************************************/ char * PrGetOpName ( UINT32 ParseOpcode) { #ifdef ASL_YYTNAME_START /* * First entries (PR_YYTNAME_START) in yytname are special reserved names. * Ignore first 6 characters of name (EXPOP_) */ return ((char *) yytname [(ParseOpcode - PR_FIRST_PARSE_OPCODE) + PR_YYTNAME_START] + 6); #else return ("[Unknown parser generator]"); #endif } /****************************************************************************** * * FUNCTION: PrEvaluateExpression * * PARAMETERS: ExprString - Expression to be evaluated. Must be * terminated by either a newline or a NUL * string terminator * * RETURN: 64-bit value for the expression * * DESCRIPTION: Main entry point for the DT expression parser * *****************************************************************************/ UINT64 PrEvaluateExpression ( char *ExprString) { DbgPrint (ASL_DEBUG_OUTPUT, "**** Input expression: %s\n", ExprString); /* Point lexer to the input string */ if (PrInitLexer (ExprString)) { DtError (ASL_ERROR, ASL_MSG_COMPILER_INTERNAL, NULL, "Could not initialize lexer"); return (0); } /* Parse/Evaluate the input string (value returned in PrParserResult) */ PrParserparse (); PrTerminateLexer (); DbgPrint (ASL_DEBUG_OUTPUT, "**** Parser returned value: %u (%8.8X%8.8X)\n", (UINT32) PrParserResult, ACPI_FORMAT_UINT64 (PrParserResult)); return (PrParserResult); } src/acpica/source/compiler/prscan.c000066400000000000000000000740121231470457100176410ustar00rootroot00000000000000/****************************************************************************** * * Module Name: prscan - Preprocessor start-up and file scan module * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #define _DECLARE_PR_GLOBALS #include "aslcompiler.h" #include "dtcompiler.h" /* * TBDs: * * No nested macros, maybe never * Implement ASL "Include" as well as "#include" here? */ #define _COMPONENT ASL_PREPROCESSOR ACPI_MODULE_NAME ("prscan") /* Local prototypes */ static void PrPreprocessInputFile ( void); static void PrDoDirective ( char *DirectiveToken, char **Next); static int PrMatchDirective ( char *Directive); static void PrPushDirective ( int Directive, char *Argument); static ACPI_STATUS PrPopDirective ( void); static void PrDbgPrint ( char *Action, char *DirectiveName); /* * Supported preprocessor directives */ static const PR_DIRECTIVE_INFO Gbl_DirectiveInfo[] = { {"define", 1}, {"elif", 0}, /* Converted to #else..#if internally */ {"else", 0}, {"endif", 0}, {"error", 1}, {"if", 1}, {"ifdef", 1}, {"ifndef", 1}, {"include", 0}, /* Argument is not standard format, so 0 */ {"line", 1}, {"pragma", 1}, {"undef", 1}, {"warning", 1}, {NULL, 0} }; enum Gbl_DirectiveIndexes { PR_DIRECTIVE_DEFINE = 0, PR_DIRECTIVE_ELIF, PR_DIRECTIVE_ELSE, PR_DIRECTIVE_ENDIF, PR_DIRECTIVE_ERROR, PR_DIRECTIVE_IF, PR_DIRECTIVE_IFDEF, PR_DIRECTIVE_IFNDEF, PR_DIRECTIVE_INCLUDE, PR_DIRECTIVE_LINE, PR_DIRECTIVE_PRAGMA, PR_DIRECTIVE_UNDEF, PR_DIRECTIVE_WARNING, }; #define ASL_DIRECTIVE_NOT_FOUND -1 /******************************************************************************* * * FUNCTION: PrInitializePreprocessor * * PARAMETERS: None * * RETURN: None * * DESCRIPTION: Startup initialization for the Preprocessor. * ******************************************************************************/ void PrInitializePreprocessor ( void) { /* Init globals and the list of #defines */ PrInitializeGlobals (); Gbl_DefineList = NULL; } /******************************************************************************* * * FUNCTION: PrInitializeGlobals * * PARAMETERS: None * * RETURN: None * * DESCRIPTION: Initialize globals for the Preprocessor. Used for startuup * initialization and re-initialization between compiles during * a multiple source file compile. * ******************************************************************************/ void PrInitializeGlobals ( void) { /* Init globals */ Gbl_InputFileList = NULL; Gbl_CurrentLineNumber = 0; Gbl_PreprocessorLineNumber = 1; Gbl_PreprocessorError = FALSE; /* These are used to track #if/#else blocks (possibly nested) */ Gbl_IfDepth = 0; Gbl_IgnoringThisCodeBlock = FALSE; Gbl_DirectiveStack = NULL; } /******************************************************************************* * * FUNCTION: PrTerminatePreprocessor * * PARAMETERS: None * * RETURN: None * * DESCRIPTION: Termination of the preprocessor. Delete lists. Keep any * defines that were specified on the command line, in order to * support multiple compiles with a single compiler invocation. * ******************************************************************************/ void PrTerminatePreprocessor ( void) { PR_DEFINE_INFO *DefineInfo; /* * The persistent defines (created on the command line) are always at the * end of the list. We save them. */ while ((Gbl_DefineList) && (!Gbl_DefineList->Persist)) { DefineInfo = Gbl_DefineList; Gbl_DefineList = DefineInfo->Next; ACPI_FREE (DefineInfo->Replacement); ACPI_FREE (DefineInfo->Identifier); ACPI_FREE (DefineInfo); } } /******************************************************************************* * * FUNCTION: PrDoPreprocess * * PARAMETERS: None * * RETURN: None * * DESCRIPTION: Main entry point for the iASL Preprocessor. Input file must * be already open. Handles multiple input files via the * #include directive. * ******************************************************************************/ void PrDoPreprocess ( void) { BOOLEAN MoreInputFiles; DbgPrint (ASL_DEBUG_OUTPUT, "Starting preprocessing phase\n\n"); FlSeekFile (ASL_FILE_INPUT, 0); PrDumpPredefinedNames (); /* Main preprocessor loop, handles include files */ do { PrPreprocessInputFile (); MoreInputFiles = PrPopInputFileStack (); } while (MoreInputFiles); /* Point compiler input to the new preprocessor output file (.i) */ FlCloseFile (ASL_FILE_INPUT); Gbl_Files[ASL_FILE_INPUT].Handle = Gbl_Files[ASL_FILE_PREPROCESSOR].Handle; AslCompilerin = Gbl_Files[ASL_FILE_INPUT].Handle; /* Reset globals to allow compiler to run */ FlSeekFile (ASL_FILE_INPUT, 0); Gbl_CurrentLineNumber = 1; DbgPrint (ASL_DEBUG_OUTPUT, "Preprocessing phase complete \n\n"); } /******************************************************************************* * * FUNCTION: PrPreprocessInputFile * * PARAMETERS: None * * RETURN: None * * DESCRIPTION: Preprocess one entire file, line-by-line. * * Input: Raw user ASL from ASL_FILE_INPUT * Output: Preprocessed file written to ASL_FILE_PREPROCESSOR * ******************************************************************************/ static void PrPreprocessInputFile ( void) { UINT32 Offset; char *Token; char *ReplaceString; PR_DEFINE_INFO *DefineInfo; ACPI_SIZE TokenOffset; char *Next; int OffsetAdjust; /* Scan line-by-line. Comments and blank lines are skipped by this function */ while ((Offset = DtGetNextLine (Gbl_Files[ASL_FILE_INPUT].Handle)) != ASL_EOF) { /* Need a copy of the input line for strok() */ strcpy (Gbl_MainTokenBuffer, Gbl_CurrentLineBuffer); Token = PrGetNextToken (Gbl_MainTokenBuffer, PR_TOKEN_SEPARATORS, &Next); OffsetAdjust = 0; /* All preprocessor directives must begin with '#' */ if (Token && (*Token == '#')) { if (strlen (Token) == 1) { Token = PrGetNextToken (NULL, PR_TOKEN_SEPARATORS, &Next); } else { Token++; /* Skip leading # */ } /* Execute the directive, do not write line to output file */ PrDoDirective (Token, &Next); continue; } /* * If we are currently within the part of an IF/ELSE block that is * FALSE, ignore the line and do not write it to the output file. * This continues until an #else or #endif is encountered. */ if (Gbl_IgnoringThisCodeBlock) { continue; } /* Match and replace all #defined names within this source line */ while (Token) { DefineInfo = PrMatchDefine (Token); if (DefineInfo) { if (DefineInfo->Body) { /* This is a macro */ DbgPrint (ASL_DEBUG_OUTPUT, PR_PREFIX_ID "Matched Macro: %s->%s\n", Gbl_CurrentLineNumber, DefineInfo->Identifier, DefineInfo->Replacement); PrDoMacroInvocation (Gbl_MainTokenBuffer, Token, DefineInfo, &Next); } else { ReplaceString = DefineInfo->Replacement; /* Replace the name in the original line buffer */ TokenOffset = Token - Gbl_MainTokenBuffer + OffsetAdjust; PrReplaceData ( &Gbl_CurrentLineBuffer[TokenOffset], strlen (Token), ReplaceString, strlen (ReplaceString)); /* Adjust for length difference between old and new name length */ OffsetAdjust += strlen (ReplaceString) - strlen (Token); DbgPrint (ASL_DEBUG_OUTPUT, PR_PREFIX_ID "Matched #define: %s->%s\n", Gbl_CurrentLineNumber, Token, *ReplaceString ? ReplaceString : "(NULL STRING)"); } } Token = PrGetNextToken (NULL, PR_TOKEN_SEPARATORS, &Next); } #if 0 /* Line prefix */ FlPrintFile (ASL_FILE_PREPROCESSOR, "/* %14s %.5u i:%.5u */ ", Gbl_Files[ASL_FILE_INPUT].Filename, Gbl_CurrentLineNumber, Gbl_PreprocessorLineNumber); #endif /* * Emit a #line directive if necessary, to keep the line numbers in * the (.i) file synchronized with the original source code file, so * that the correct line number appears in any error messages * generated by the actual compiler. */ if (Gbl_CurrentLineNumber > (Gbl_PreviousLineNumber + 1)) { FlPrintFile (ASL_FILE_PREPROCESSOR, "#line %u\n", Gbl_CurrentLineNumber); } Gbl_PreviousLineNumber = Gbl_CurrentLineNumber; Gbl_PreprocessorLineNumber++; /* * Now we can write the possibly modified source line to the * preprocessor (.i) file */ FlWriteFile (ASL_FILE_PREPROCESSOR, Gbl_CurrentLineBuffer, strlen (Gbl_CurrentLineBuffer)); } } /******************************************************************************* * * FUNCTION: PrDoDirective * * PARAMETERS: Directive - Pointer to directive name token * Next - "Next" buffer from GetNextToken * * RETURN: None. * * DESCRIPTION: Main processing for all preprocessor directives * ******************************************************************************/ static void PrDoDirective ( char *DirectiveToken, char **Next) { char *Token = Gbl_MainTokenBuffer; char *Token2; char *End; UINT64 Value; ACPI_SIZE TokenOffset; int Directive; ACPI_STATUS Status; if (!DirectiveToken) { goto SyntaxError; } Directive = PrMatchDirective (DirectiveToken); if (Directive == ASL_DIRECTIVE_NOT_FOUND) { PrError (ASL_ERROR, ASL_MSG_UNKNOWN_DIRECTIVE, THIS_TOKEN_OFFSET (DirectiveToken)); DbgPrint (ASL_DEBUG_OUTPUT, PR_PREFIX_ID "#%s: Unknown directive\n", Gbl_CurrentLineNumber, DirectiveToken); return; } /* * If we are currently ignoring this block and we encounter a #else or * #elif, we must ignore their blocks also if the parent block is also * being ignored. */ if (Gbl_IgnoringThisCodeBlock) { switch (Directive) { case PR_DIRECTIVE_ELSE: case PR_DIRECTIVE_ELIF: if (Gbl_DirectiveStack && Gbl_DirectiveStack->IgnoringThisCodeBlock) { PrDbgPrint ("Ignoring", Gbl_DirectiveInfo[Directive].Name); return; } break; default: break; } } /* * Need to always check for #else, #elif, #endif regardless of * whether we are ignoring the current code block, since these * are conditional code block terminators. */ switch (Directive) { case PR_DIRECTIVE_ELSE: Gbl_IgnoringThisCodeBlock = !(Gbl_IgnoringThisCodeBlock); PrDbgPrint ("Executing", "else block"); return; case PR_DIRECTIVE_ELIF: Gbl_IgnoringThisCodeBlock = !(Gbl_IgnoringThisCodeBlock); Directive = PR_DIRECTIVE_IF; if (Gbl_IgnoringThisCodeBlock == TRUE) { /* Not executing the ELSE part -- all done here */ PrDbgPrint ("Ignoring", "elif block"); return; } /* * After this, we will execute the IF part further below. * First, however, pop off the original #if directive. */ if (ACPI_FAILURE (PrPopDirective ())) { PrError (ASL_ERROR, ASL_MSG_COMPILER_INTERNAL, THIS_TOKEN_OFFSET (DirectiveToken)); } PrDbgPrint ("Executing", "elif block"); break; case PR_DIRECTIVE_ENDIF: PrDbgPrint ("Executing", "endif"); /* Pop the owning #if/#ifdef/#ifndef */ if (ACPI_FAILURE (PrPopDirective ())) { PrError (ASL_ERROR, ASL_MSG_ENDIF_MISMATCH, THIS_TOKEN_OFFSET (DirectiveToken)); } return; default: break; } /* Most directives have at least one argument */ if (Gbl_DirectiveInfo[Directive].ArgCount == 1) { Token = PrGetNextToken (NULL, PR_TOKEN_SEPARATORS, Next); if (!Token) { goto SyntaxError; } } /* * At this point, if we are ignoring the current code block, * do not process any more directives (i.e., ignore them also.) * For "if" style directives, open/push a new block anyway. We * must do this to keep track of #endif directives */ if (Gbl_IgnoringThisCodeBlock) { switch (Directive) { case PR_DIRECTIVE_IF: case PR_DIRECTIVE_IFDEF: case PR_DIRECTIVE_IFNDEF: PrPushDirective (Directive, Token); PrDbgPrint ("Ignoring", Gbl_DirectiveInfo[Directive].Name); break; default: break; } return; } /* * Execute the directive */ PrDbgPrint ("Begin execution", Gbl_DirectiveInfo[Directive].Name); switch (Directive) { case PR_DIRECTIVE_IF: TokenOffset = Token - Gbl_MainTokenBuffer; /* Need to expand #define macros in the expression string first */ Status = PrResolveIntegerExpression ( &Gbl_CurrentLineBuffer[TokenOffset-1], &Value); if (ACPI_FAILURE (Status)) { return; } PrPushDirective (Directive, Token); if (!Value) { Gbl_IgnoringThisCodeBlock = TRUE; } DbgPrint (ASL_DEBUG_OUTPUT, PR_PREFIX_ID "Resolved #if: %8.8X%8.8X %s\n", Gbl_CurrentLineNumber, ACPI_FORMAT_UINT64 (Value), Gbl_IgnoringThisCodeBlock ? "" : ""); break; case PR_DIRECTIVE_IFDEF: PrPushDirective (Directive, Token); if (!PrMatchDefine (Token)) { Gbl_IgnoringThisCodeBlock = TRUE; } PrDbgPrint ("Evaluated", "ifdef"); break; case PR_DIRECTIVE_IFNDEF: PrPushDirective (Directive, Token); if (PrMatchDefine (Token)) { Gbl_IgnoringThisCodeBlock = TRUE; } PrDbgPrint ("Evaluated", "ifndef"); break; case PR_DIRECTIVE_DEFINE: /* * By definition, if first char after the name is a paren, * this is a function macro. */ TokenOffset = Token - Gbl_MainTokenBuffer + strlen (Token); if (*(&Gbl_CurrentLineBuffer[TokenOffset]) == '(') { #ifndef MACROS_SUPPORTED AcpiOsPrintf ("%s ERROR - line %u: #define macros are not supported yet\n", Gbl_CurrentLineBuffer, Gbl_CurrentLineNumber); exit(1); #else PrAddMacro (Token, Next); #endif } else { /* Use the remainder of the line for the #define */ Token2 = *Next; if (Token2) { while ((*Token2 == ' ') || (*Token2 == '\t')) { Token2++; } End = Token2; while (*End != '\n') { End++; } *End = 0; } else { Token2 = ""; } #if 0 Token2 = PrGetNextToken (NULL, "\n", /*PR_TOKEN_SEPARATORS,*/ Next); if (!Token2) { Token2 = ""; } #endif DbgPrint (ASL_DEBUG_OUTPUT, PR_PREFIX_ID "New #define: %s->%s\n", Gbl_CurrentLineNumber, Token, Token2); PrAddDefine (Token, Token2, FALSE); } break; case PR_DIRECTIVE_ERROR: /* Note: No macro expansion */ PrError (ASL_ERROR, ASL_MSG_ERROR_DIRECTIVE, THIS_TOKEN_OFFSET (Token)); Gbl_SourceLine = 0; Gbl_NextError = Gbl_ErrorLog; CmCleanupAndExit (); exit(1); case PR_DIRECTIVE_INCLUDE: Token = PrGetNextToken (NULL, " \"<>", Next); if (!Token) { goto SyntaxError; } DbgPrint (ASL_DEBUG_OUTPUT, PR_PREFIX_ID "Start #include file \"%s\"\n", Gbl_CurrentLineNumber, Token, Gbl_CurrentLineNumber); PrOpenIncludeFile (Token); break; case PR_DIRECTIVE_LINE: TokenOffset = Token - Gbl_MainTokenBuffer; Status = PrResolveIntegerExpression ( &Gbl_CurrentLineBuffer[TokenOffset-1], &Value); if (ACPI_FAILURE (Status)) { return; } DbgPrint (ASL_DEBUG_OUTPUT, PR_PREFIX_ID "User #line invocation %s\n", Gbl_CurrentLineNumber, Token); /* Update local line numbers */ Gbl_CurrentLineNumber = (UINT32) Value; Gbl_PreviousLineNumber = 0; /* Emit #line into the preprocessor file */ FlPrintFile (ASL_FILE_PREPROCESSOR, "#line %u \"%s\"\n", Gbl_CurrentLineNumber, Gbl_Files[ASL_FILE_INPUT].Filename); break; case PR_DIRECTIVE_PRAGMA: if (!strcmp (Token, "disable")) { Token = PrGetNextToken (NULL, PR_TOKEN_SEPARATORS, Next); if (!Token) { goto SyntaxError; } TokenOffset = Token - Gbl_MainTokenBuffer; AslDisableException (&Gbl_CurrentLineBuffer[TokenOffset]); } else if (!strcmp (Token, "message")) { Token = PrGetNextToken (NULL, PR_TOKEN_SEPARATORS, Next); if (!Token) { goto SyntaxError; } TokenOffset = Token - Gbl_MainTokenBuffer; AcpiOsPrintf ("%s\n", &Gbl_CurrentLineBuffer[TokenOffset]); } else { PrError (ASL_ERROR, ASL_MSG_UNKNOWN_PRAGMA, THIS_TOKEN_OFFSET (Token)); return; } break; case PR_DIRECTIVE_UNDEF: DbgPrint (ASL_DEBUG_OUTPUT, PR_PREFIX_ID "#undef: %s\n", Gbl_CurrentLineNumber, Token); PrRemoveDefine (Token); break; case PR_DIRECTIVE_WARNING: PrError (ASL_WARNING, ASL_MSG_WARNING_DIRECTIVE, THIS_TOKEN_OFFSET (Token)); break; default: /* Should never get here */ DbgPrint (ASL_DEBUG_OUTPUT, PR_PREFIX_ID "Unrecognized directive: %u\n", Gbl_CurrentLineNumber, Directive); break; } return; SyntaxError: PrError (ASL_ERROR, ASL_MSG_DIRECTIVE_SYNTAX, THIS_TOKEN_OFFSET (DirectiveToken)); return; } /******************************************************************************* * * FUNCTION: PrMatchDirective * * PARAMETERS: Directive - Pointer to directive name token * * RETURN: Index into command array, -1 if not found * * DESCRIPTION: Lookup the incoming directive in the known directives table. * ******************************************************************************/ static int PrMatchDirective ( char *Directive) { int i; if (!Directive || Directive[0] == 0) { return (ASL_DIRECTIVE_NOT_FOUND); } for (i = 0; Gbl_DirectiveInfo[i].Name; i++) { if (!strcmp (Gbl_DirectiveInfo[i].Name, Directive)) { return (i); } } return (ASL_DIRECTIVE_NOT_FOUND); /* Command not recognized */ } /******************************************************************************* * * FUNCTION: PrPushDirective * * PARAMETERS: Directive - Encoded directive ID * Argument - String containing argument to the * directive * * RETURN: None * * DESCRIPTION: Push an item onto the directive stack. Used for processing * nested #if/#else type conditional compilation directives. * Specifically: Used on detection of #if/#ifdef/#ifndef to open * a block. * ******************************************************************************/ static void PrPushDirective ( int Directive, char *Argument) { DIRECTIVE_INFO *Info; /* Allocate and populate a stack info item */ Info = ACPI_ALLOCATE (sizeof (DIRECTIVE_INFO)); Info->Next = Gbl_DirectiveStack; Info->Directive = Directive; Info->IgnoringThisCodeBlock = Gbl_IgnoringThisCodeBlock; strncpy (Info->Argument, Argument, MAX_ARGUMENT_LENGTH); DbgPrint (ASL_DEBUG_OUTPUT, "Pr(%.4u) - [%u %s] %*s Pushed [#%s %s]: IgnoreFlag = %s\n", Gbl_CurrentLineNumber, Gbl_IfDepth, Gbl_IgnoringThisCodeBlock ? "I" : "E", Gbl_IfDepth * 4, " ", Gbl_DirectiveInfo[Directive].Name, Argument, Gbl_IgnoringThisCodeBlock ? "TRUE" : "FALSE"); /* Push new item */ Gbl_DirectiveStack = Info; Gbl_IfDepth++; } /******************************************************************************* * * FUNCTION: PrPopDirective * * PARAMETERS: None * * RETURN: Status. Error if the stack is empty. * * DESCRIPTION: Pop an item off the directive stack. Used for processing * nested #if/#else type conditional compilation directives. * Specifically: Used on detection of #elif and #endif to remove * the original #if/#ifdef/#ifndef from the stack and close * the block. * ******************************************************************************/ static ACPI_STATUS PrPopDirective ( void) { DIRECTIVE_INFO *Info; /* Check for empty stack */ Info = Gbl_DirectiveStack; if (!Info) { return (AE_ERROR); } /* Pop one item, keep globals up-to-date */ Gbl_IfDepth--; Gbl_IgnoringThisCodeBlock = Info->IgnoringThisCodeBlock; Gbl_DirectiveStack = Info->Next; DbgPrint (ASL_DEBUG_OUTPUT, "Pr(%.4u) - [%u %s] %*s Popped [#%s %s]: IgnoreFlag now = %s\n", Gbl_CurrentLineNumber, Gbl_IfDepth, Gbl_IgnoringThisCodeBlock ? "I" : "E", Gbl_IfDepth * 4, " ", Gbl_DirectiveInfo[Info->Directive].Name, Info->Argument, Gbl_IgnoringThisCodeBlock ? "TRUE" : "FALSE"); ACPI_FREE (Info); return (AE_OK); } /******************************************************************************* * * FUNCTION: PrDbgPrint * * PARAMETERS: Action - Action being performed * DirectiveName - Directive being processed * * RETURN: None * * DESCRIPTION: Special debug print for directive processing. * ******************************************************************************/ static void PrDbgPrint ( char *Action, char *DirectiveName) { DbgPrint (ASL_DEBUG_OUTPUT, "Pr(%.4u) - [%u %s] " "%*s %s #%s, Depth %u\n", Gbl_CurrentLineNumber, Gbl_IfDepth, Gbl_IgnoringThisCodeBlock ? "I" : "E", Gbl_IfDepth * 4, " ", Action, DirectiveName, Gbl_IfDepth); } src/acpica/source/compiler/prutils.c000066400000000000000000000416351231470457100200620ustar00rootroot00000000000000/****************************************************************************** * * Module Name: prutils - Preprocessor utilities * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #include "aslcompiler.h" #include "dtcompiler.h" #define _COMPONENT ASL_PREPROCESSOR ACPI_MODULE_NAME ("prutils") /****************************************************************************** * * FUNCTION: PrGetNextToken * * PARAMETERS: Buffer - Current line buffer * MatchString - String with valid token delimiters * Next - Set to next possible token in buffer * * RETURN: Next token (null-terminated). Modifies the input line. * Remainder of line is stored in *Next. * * DESCRIPTION: Local implementation of strtok() with local storage for the * next pointer. Not only thread-safe, but allows multiple * parsing of substrings such as expressions. * *****************************************************************************/ char * PrGetNextToken ( char *Buffer, char *MatchString, char **Next) { char *TokenStart; if (!Buffer) { /* Use Next if it is valid */ Buffer = *Next; if (!(*Next)) { return (NULL); } } /* Skip any leading delimiters */ while (*Buffer) { if (strchr (MatchString, *Buffer)) { Buffer++; } else { break; } } /* Anything left on the line? */ if (!(*Buffer)) { *Next = NULL; return (NULL); } TokenStart = Buffer; /* Find the end of this token */ while (*Buffer) { if (strchr (MatchString, *Buffer)) { *Buffer = 0; *Next = Buffer+1; if (!**Next) { *Next = NULL; } return (TokenStart); } Buffer++; } *Next = NULL; return (TokenStart); } /******************************************************************************* * * FUNCTION: PrError * * PARAMETERS: Level - Seriousness (Warning/error, etc.) * MessageId - Index into global message buffer * Column - Column in current line * * RETURN: None * * DESCRIPTION: Preprocessor error reporting. Front end to AslCommonError2 * ******************************************************************************/ void PrError ( UINT8 Level, UINT8 MessageId, UINT32 Column) { #if 0 AcpiOsPrintf ("%s (%u) : %s", Gbl_Files[ASL_FILE_INPUT].Filename, Gbl_CurrentLineNumber, Gbl_CurrentLineBuffer); #endif if (Column > 120) { Column = 0; } /* TBD: Need Logical line number? */ AslCommonError2 (Level, MessageId, Gbl_CurrentLineNumber, Column, Gbl_CurrentLineBuffer, Gbl_Files[ASL_FILE_INPUT].Filename, "Preprocessor"); Gbl_PreprocessorError = TRUE; } /******************************************************************************* * * FUNCTION: PrReplaceData * * PARAMETERS: Buffer - Original(target) buffer pointer * LengthToRemove - Length to be removed from target buffer * BufferToAdd - Data to be inserted into target buffer * LengthToAdd - Length of BufferToAdd * * RETURN: None * * DESCRIPTION: Generic buffer data replacement. * ******************************************************************************/ void PrReplaceData ( char *Buffer, UINT32 LengthToRemove, char *BufferToAdd, UINT32 LengthToAdd) { UINT32 BufferLength; /* Buffer is a string, so the length must include the terminating zero */ BufferLength = strlen (Buffer) + 1; if (LengthToRemove != LengthToAdd) { /* * Move some of the existing data * 1) If adding more bytes than removing, make room for the new data * 2) if removing more bytes than adding, delete the extra space */ if (LengthToRemove > 0) { memmove ((Buffer + LengthToAdd), (Buffer + LengthToRemove), (BufferLength - LengthToRemove)); } } /* Now we can move in the new data */ if (LengthToAdd > 0) { memmove (Buffer, BufferToAdd, LengthToAdd); } } /******************************************************************************* * * FUNCTION: PrOpenIncludeFile * * PARAMETERS: Filename - Filename or pathname for include file * * RETURN: None. * * DESCRIPTION: Open an include file and push it on the input file stack. * ******************************************************************************/ void PrOpenIncludeFile ( char *Filename) { FILE *IncludeFile; ASL_INCLUDE_DIR *NextDir; /* Start the actual include file on the next line */ Gbl_CurrentLineOffset++; /* Attempt to open the include file */ /* If the file specifies an absolute path, just open it */ if ((Filename[0] == '/') || (Filename[0] == '\\') || (Filename[1] == ':')) { IncludeFile = PrOpenIncludeWithPrefix ("", Filename); if (!IncludeFile) { goto ErrorExit; } return; } /* * The include filename is not an absolute path. * * First, search for the file within the "local" directory -- meaning * the same directory that contains the source file. * * Construct the file pathname from the global directory name. */ IncludeFile = PrOpenIncludeWithPrefix (Gbl_DirectoryPath, Filename); if (IncludeFile) { return; } /* * Second, search for the file within the (possibly multiple) * directories specified by the -I option on the command line. */ NextDir = Gbl_IncludeDirList; while (NextDir) { IncludeFile = PrOpenIncludeWithPrefix (NextDir->Dir, Filename); if (IncludeFile) { return; } NextDir = NextDir->Next; } /* We could not open the include file after trying very hard */ ErrorExit: sprintf (Gbl_MainTokenBuffer, "%s, %s", Filename, strerror (errno)); PrError (ASL_ERROR, ASL_MSG_INCLUDE_FILE_OPEN, 0); } /******************************************************************************* * * FUNCTION: FlOpenIncludeWithPrefix * * PARAMETERS: PrefixDir - Prefix directory pathname. Can be a zero * length string. * Filename - The include filename from the source ASL. * * RETURN: Valid file descriptor if successful. Null otherwise. * * DESCRIPTION: Open an include file and push it on the input file stack. * ******************************************************************************/ FILE * PrOpenIncludeWithPrefix ( char *PrefixDir, char *Filename) { FILE *IncludeFile; char *Pathname; /* Build the full pathname to the file */ Pathname = FlMergePathnames (PrefixDir, Filename); DbgPrint (ASL_PARSE_OUTPUT, PR_PREFIX_ID "Include: Opening file - \"%s\"\n", Gbl_CurrentLineNumber, Pathname); /* Attempt to open the file, push if successful */ IncludeFile = fopen (Pathname, "r"); if (!IncludeFile) { fprintf (stderr, "Could not open include file %s\n", Pathname); ACPI_FREE (Pathname); return (NULL); } /* Push the include file on the open input file stack */ PrPushInputFileStack (IncludeFile, Pathname); return (IncludeFile); } /******************************************************************************* * * FUNCTION: AslPushInputFileStack * * PARAMETERS: InputFile - Open file pointer * Filename - Name of the file * * RETURN: None * * DESCRIPTION: Push the InputFile onto the file stack, and point the parser * to this file. Called when an include file is successfully * opened. * ******************************************************************************/ void PrPushInputFileStack ( FILE *InputFile, char *Filename) { PR_FILE_NODE *Fnode; /* Save the current state in an Fnode */ Fnode = UtLocalCalloc (sizeof (PR_FILE_NODE)); Fnode->File = Gbl_Files[ASL_FILE_INPUT].Handle; Fnode->Next = Gbl_InputFileList; Fnode->Filename = Gbl_Files[ASL_FILE_INPUT].Filename; Fnode->CurrentLineNumber = Gbl_CurrentLineNumber; /* Push it on the stack */ Gbl_InputFileList = Fnode; DbgPrint (ASL_PARSE_OUTPUT, PR_PREFIX_ID "Push InputFile Stack: handle %p\n\n", Gbl_CurrentLineNumber, InputFile); /* Reset the global line count and filename */ Gbl_Files[ASL_FILE_INPUT].Filename = Filename; Gbl_Files[ASL_FILE_INPUT].Handle = InputFile; Gbl_PreviousLineNumber = 0; Gbl_CurrentLineNumber = 0; /* Emit a new #line directive for the include file */ FlPrintFile (ASL_FILE_PREPROCESSOR, "#line %u \"%s\"\n", 1, Filename); } /******************************************************************************* * * FUNCTION: AslPopInputFileStack * * PARAMETERS: None * * RETURN: 0 if a node was popped, -1 otherwise * * DESCRIPTION: Pop the top of the input file stack and point the parser to * the saved parse buffer contained in the fnode. Also, set the * global line counters to the saved values. This function is * called when an include file reaches EOF. * ******************************************************************************/ BOOLEAN PrPopInputFileStack ( void) { PR_FILE_NODE *Fnode; Fnode = Gbl_InputFileList; DbgPrint (ASL_PARSE_OUTPUT, "\n" PR_PREFIX_ID "Pop InputFile Stack, Fnode %p\n\n", Gbl_CurrentLineNumber, Fnode); if (!Fnode) { return (FALSE); } /* Close the current include file */ fclose (Gbl_Files[ASL_FILE_INPUT].Handle); /* Update the top-of-stack */ Gbl_InputFileList = Fnode->Next; /* Reset global line counter and filename */ Gbl_Files[ASL_FILE_INPUT].Filename = Fnode->Filename; Gbl_Files[ASL_FILE_INPUT].Handle = Fnode->File; Gbl_CurrentLineNumber = Fnode->CurrentLineNumber; Gbl_PreviousLineNumber = 0; /* Emit a new #line directive after the include file */ FlPrintFile (ASL_FILE_PREPROCESSOR, "#line %u \"%s\"\n", Gbl_CurrentLineNumber + 1, Fnode->Filename); /* All done with this node */ ACPI_FREE (Fnode); return (TRUE); } src/acpica/source/components/000077500000000000000000000000001231470457100165565ustar00rootroot00000000000000src/acpica/source/components/debugger/000077500000000000000000000000001231470457100203425ustar00rootroot00000000000000src/acpica/source/components/debugger/dbcmds.c000066400000000000000000001122711231470457100217460ustar00rootroot00000000000000/******************************************************************************* * * Module Name: dbcmds - Miscellaneous debug commands and output routines * ******************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #include "acpi.h" #include "accommon.h" #include "acevents.h" #include "acdebug.h" #include "acnamesp.h" #include "acresrc.h" #include "actables.h" #ifdef ACPI_DEBUGGER #define _COMPONENT ACPI_CA_DEBUGGER ACPI_MODULE_NAME ("dbcmds") /* Local prototypes */ static void AcpiDmCompareAmlResources ( UINT8 *Aml1Buffer, ACPI_RSDESC_SIZE Aml1BufferLength, UINT8 *Aml2Buffer, ACPI_RSDESC_SIZE Aml2BufferLength); static ACPI_STATUS AcpiDmTestResourceConversion ( ACPI_NAMESPACE_NODE *Node, char *Name); static ACPI_STATUS AcpiDbResourceCallback ( ACPI_RESOURCE *Resource, void *Context); static ACPI_STATUS AcpiDbDeviceResources ( ACPI_HANDLE ObjHandle, UINT32 NestingLevel, void *Context, void **ReturnValue); static void AcpiDbDoOneSleepState ( UINT8 SleepState); /******************************************************************************* * * FUNCTION: AcpiDbConvertToNode * * PARAMETERS: InString - String to convert * * RETURN: Pointer to a NS node * * DESCRIPTION: Convert a string to a valid NS pointer. Handles numeric or * alphanumeric strings. * ******************************************************************************/ ACPI_NAMESPACE_NODE * AcpiDbConvertToNode ( char *InString) { ACPI_NAMESPACE_NODE *Node; ACPI_SIZE Address; if ((*InString >= 0x30) && (*InString <= 0x39)) { /* Numeric argument, convert */ Address = ACPI_STRTOUL (InString, NULL, 16); Node = ACPI_TO_POINTER (Address); if (!AcpiOsReadable (Node, sizeof (ACPI_NAMESPACE_NODE))) { AcpiOsPrintf ("Address %p is invalid", Node); return (NULL); } /* Make sure pointer is valid NS node */ if (ACPI_GET_DESCRIPTOR_TYPE (Node) != ACPI_DESC_TYPE_NAMED) { AcpiOsPrintf ("Address %p is not a valid namespace node [%s]\n", Node, AcpiUtGetDescriptorName (Node)); return (NULL); } } else { /* * Alpha argument: The parameter is a name string that must be * resolved to a Namespace object. */ Node = AcpiDbLocalNsLookup (InString); if (!Node) { AcpiOsPrintf ("Could not find [%s] in namespace, defaulting to root node\n", InString); Node = AcpiGbl_RootNode; } } return (Node); } /******************************************************************************* * * FUNCTION: AcpiDbSleep * * PARAMETERS: ObjectArg - Desired sleep state (0-5). NULL means * invoke all possible sleep states. * * RETURN: Status * * DESCRIPTION: Simulate sleep/wake sequences * ******************************************************************************/ ACPI_STATUS AcpiDbSleep ( char *ObjectArg) { UINT8 SleepState; UINT32 i; ACPI_FUNCTION_TRACE (AcpiDbSleep); /* Null input (no arguments) means to invoke all sleep states */ if (!ObjectArg) { AcpiOsPrintf ("Invoking all possible sleep states, 0-%d\n", ACPI_S_STATES_MAX); for (i = 0; i <= ACPI_S_STATES_MAX; i++) { AcpiDbDoOneSleepState ((UINT8) i); } return_ACPI_STATUS (AE_OK); } /* Convert argument to binary and invoke the sleep state */ SleepState = (UINT8) ACPI_STRTOUL (ObjectArg, NULL, 0); AcpiDbDoOneSleepState (SleepState); return_ACPI_STATUS (AE_OK); } /******************************************************************************* * * FUNCTION: AcpiDbDoOneSleepState * * PARAMETERS: SleepState - Desired sleep state (0-5) * * RETURN: Status * * DESCRIPTION: Simulate a sleep/wake sequence * ******************************************************************************/ static void AcpiDbDoOneSleepState ( UINT8 SleepState) { ACPI_STATUS Status; UINT8 SleepTypeA; UINT8 SleepTypeB; /* Validate parameter */ if (SleepState > ACPI_S_STATES_MAX) { AcpiOsPrintf ("Sleep state %d out of range (%d max)\n", SleepState, ACPI_S_STATES_MAX); return; } AcpiOsPrintf ("\n---- Invoking sleep state S%d (%s):\n", SleepState, AcpiGbl_SleepStateNames[SleepState]); /* Get the values for the sleep type registers (for display only) */ Status = AcpiGetSleepTypeData (SleepState, &SleepTypeA, &SleepTypeB); if (ACPI_FAILURE (Status)) { AcpiOsPrintf ("Could not evaluate [%s] method, %s\n", AcpiGbl_SleepStateNames[SleepState], AcpiFormatException (Status)); return; } AcpiOsPrintf ( "Register values for sleep state S%d: Sleep-A: %.2X, Sleep-B: %.2X\n", SleepState, SleepTypeA, SleepTypeB); /* Invoke the various sleep/wake interfaces */ AcpiOsPrintf ("**** Sleep: Prepare to sleep (S%d) ****\n", SleepState); Status = AcpiEnterSleepStatePrep (SleepState); if (ACPI_FAILURE (Status)) { goto ErrorExit; } AcpiOsPrintf ("**** Sleep: Going to sleep (S%d) ****\n", SleepState); Status = AcpiEnterSleepState (SleepState); if (ACPI_FAILURE (Status)) { goto ErrorExit; } AcpiOsPrintf ("**** Wake: Prepare to return from sleep (S%d) ****\n", SleepState); Status = AcpiLeaveSleepStatePrep (SleepState); if (ACPI_FAILURE (Status)) { goto ErrorExit; } AcpiOsPrintf ("**** Wake: Return from sleep (S%d) ****\n", SleepState); Status = AcpiLeaveSleepState (SleepState); if (ACPI_FAILURE (Status)) { goto ErrorExit; } return; ErrorExit: ACPI_EXCEPTION ((AE_INFO, Status, "During invocation of sleep state S%d", SleepState)); } /******************************************************************************* * * FUNCTION: AcpiDbDisplayLocks * * PARAMETERS: None * * RETURN: None * * DESCRIPTION: Display information about internal mutexes. * ******************************************************************************/ void AcpiDbDisplayLocks ( void) { UINT32 i; for (i = 0; i < ACPI_MAX_MUTEX; i++) { AcpiOsPrintf ("%26s : %s\n", AcpiUtGetMutexName (i), AcpiGbl_MutexInfo[i].ThreadId == ACPI_MUTEX_NOT_ACQUIRED ? "Locked" : "Unlocked"); } } /******************************************************************************* * * FUNCTION: AcpiDbDisplayTableInfo * * PARAMETERS: TableArg - Name of table to be displayed * * RETURN: None * * DESCRIPTION: Display information about loaded tables. Current * implementation displays all loaded tables. * ******************************************************************************/ void AcpiDbDisplayTableInfo ( char *TableArg) { UINT32 i; ACPI_TABLE_DESC *TableDesc; ACPI_STATUS Status; /* Header */ AcpiOsPrintf ("Idx ID Status Type Sig Address Len Header\n"); /* Walk the entire root table list */ for (i = 0; i < AcpiGbl_RootTableList.CurrentTableCount; i++) { TableDesc = &AcpiGbl_RootTableList.Tables[i]; /* Index and Table ID */ AcpiOsPrintf ("%3u %.2u ", i, TableDesc->OwnerId); /* Decode the table flags */ if (!(TableDesc->Flags & ACPI_TABLE_IS_LOADED)) { AcpiOsPrintf ("NotLoaded "); } else { AcpiOsPrintf (" Loaded "); } switch (TableDesc->Flags & ACPI_TABLE_ORIGIN_MASK) { case ACPI_TABLE_ORIGIN_EXTERNAL_VIRTUAL: AcpiOsPrintf ("External virtual "); break; case ACPI_TABLE_ORIGIN_INTERNAL_PHYSICAL: AcpiOsPrintf ("Internal physical "); break; case ACPI_TABLE_ORIGIN_INTERNAL_VIRTUAL: AcpiOsPrintf ("Internal virtual "); break; default: AcpiOsPrintf ("INVALID "); break; } /* Make sure that the table is mapped */ Status = AcpiTbValidateTable (TableDesc); if (ACPI_FAILURE (Status)) { return; } /* Dump the table header */ if (TableDesc->Pointer) { AcpiTbPrintTableHeader (TableDesc->Address, TableDesc->Pointer); } else { /* If the pointer is null, the table has been unloaded */ ACPI_INFO ((AE_INFO, "%4.4s - Table has been unloaded", TableDesc->Signature.Ascii)); } } } /******************************************************************************* * * FUNCTION: AcpiDbUnloadAcpiTable * * PARAMETERS: ObjectName - Namespace pathname for an object that * is owned by the table to be unloaded * * RETURN: None * * DESCRIPTION: Unload an ACPI table, via any namespace node that is owned * by the table. * ******************************************************************************/ void AcpiDbUnloadAcpiTable ( char *ObjectName) { ACPI_NAMESPACE_NODE *Node; ACPI_STATUS Status; /* Translate name to an Named object */ Node = AcpiDbConvertToNode (ObjectName); if (!Node) { return; } Status = AcpiUnloadParentTable (ACPI_CAST_PTR (ACPI_HANDLE, Node)); if (ACPI_SUCCESS (Status)) { AcpiOsPrintf ("Parent of [%s] (%p) unloaded and uninstalled\n", ObjectName, Node); } else { AcpiOsPrintf ("%s, while unloading parent table of [%s]\n", AcpiFormatException (Status), ObjectName); } } /******************************************************************************* * * FUNCTION: AcpiDbSendNotify * * PARAMETERS: Name - Name of ACPI object where to send notify * Value - Value of the notify to send. * * RETURN: None * * DESCRIPTION: Send an ACPI notification. The value specified is sent to the * named object as an ACPI notify. * ******************************************************************************/ void AcpiDbSendNotify ( char *Name, UINT32 Value) { ACPI_NAMESPACE_NODE *Node; ACPI_STATUS Status; /* Translate name to an Named object */ Node = AcpiDbConvertToNode (Name); if (!Node) { return; } /* Dispatch the notify if legal */ if (AcpiEvIsNotifyObject (Node)) { Status = AcpiEvQueueNotifyRequest (Node, Value); if (ACPI_FAILURE (Status)) { AcpiOsPrintf ("Could not queue notify\n"); } } else { AcpiOsPrintf ( "Named object [%4.4s] Type %s, must be Device/Thermal/Processor type\n", AcpiUtGetNodeName (Node), AcpiUtGetTypeName (Node->Type)); } } /******************************************************************************* * * FUNCTION: AcpiDbDisplayInterfaces * * PARAMETERS: ActionArg - Null, "install", or "remove" * InterfaceNameArg - Name for install/remove options * * RETURN: None * * DESCRIPTION: Display or modify the global _OSI interface list * ******************************************************************************/ void AcpiDbDisplayInterfaces ( char *ActionArg, char *InterfaceNameArg) { ACPI_INTERFACE_INFO *NextInterface; char *SubString; ACPI_STATUS Status; /* If no arguments, just display current interface list */ if (!ActionArg) { (void) AcpiOsAcquireMutex (AcpiGbl_OsiMutex, ACPI_WAIT_FOREVER); NextInterface = AcpiGbl_SupportedInterfaces; while (NextInterface) { if (!(NextInterface->Flags & ACPI_OSI_INVALID)) { AcpiOsPrintf ("%s\n", NextInterface->Name); } NextInterface = NextInterface->Next; } AcpiOsReleaseMutex (AcpiGbl_OsiMutex); return; } /* If ActionArg exists, so must InterfaceNameArg */ if (!InterfaceNameArg) { AcpiOsPrintf ("Missing Interface Name argument\n"); return; } /* Uppercase the action for match below */ AcpiUtStrupr (ActionArg); /* Install - install an interface */ SubString = ACPI_STRSTR ("INSTALL", ActionArg); if (SubString) { Status = AcpiInstallInterface (InterfaceNameArg); if (ACPI_FAILURE (Status)) { AcpiOsPrintf ("%s, while installing \"%s\"\n", AcpiFormatException (Status), InterfaceNameArg); } return; } /* Remove - remove an interface */ SubString = ACPI_STRSTR ("REMOVE", ActionArg); if (SubString) { Status = AcpiRemoveInterface (InterfaceNameArg); if (ACPI_FAILURE (Status)) { AcpiOsPrintf ("%s, while removing \"%s\"\n", AcpiFormatException (Status), InterfaceNameArg); } return; } /* Invalid ActionArg */ AcpiOsPrintf ("Invalid action argument: %s\n", ActionArg); return; } /******************************************************************************* * * FUNCTION: AcpiDbDisplayTemplate * * PARAMETERS: BufferArg - Buffer name or address * * RETURN: None * * DESCRIPTION: Dump a buffer that contains a resource template * ******************************************************************************/ void AcpiDbDisplayTemplate ( char *BufferArg) { ACPI_NAMESPACE_NODE *Node; ACPI_STATUS Status; ACPI_BUFFER ReturnBuffer; /* Translate BufferArg to an Named object */ Node = AcpiDbConvertToNode (BufferArg); if (!Node || (Node == AcpiGbl_RootNode)) { AcpiOsPrintf ("Invalid argument: %s\n", BufferArg); return; } /* We must have a buffer object */ if (Node->Type != ACPI_TYPE_BUFFER) { AcpiOsPrintf ("Not a Buffer object, cannot be a template: %s\n", BufferArg); return; } ReturnBuffer.Length = ACPI_DEBUG_BUFFER_SIZE; ReturnBuffer.Pointer = AcpiGbl_DbBuffer; /* Attempt to convert the raw buffer to a resource list */ Status = AcpiRsCreateResourceList (Node->Object, &ReturnBuffer); AcpiDbSetOutputDestination (ACPI_DB_REDIRECTABLE_OUTPUT); AcpiDbgLevel |= ACPI_LV_RESOURCES; if (ACPI_FAILURE (Status)) { AcpiOsPrintf ("Could not convert Buffer to a resource list: %s, %s\n", BufferArg, AcpiFormatException (Status)); goto DumpBuffer; } /* Now we can dump the resource list */ AcpiRsDumpResourceList (ACPI_CAST_PTR (ACPI_RESOURCE, ReturnBuffer.Pointer)); DumpBuffer: AcpiOsPrintf ("\nRaw data buffer:\n"); AcpiUtDebugDumpBuffer ((UINT8 *) Node->Object->Buffer.Pointer, Node->Object->Buffer.Length, DB_BYTE_DISPLAY, ACPI_UINT32_MAX); AcpiDbSetOutputDestination (ACPI_DB_CONSOLE_OUTPUT); return; } /******************************************************************************* * * FUNCTION: AcpiDmCompareAmlResources * * PARAMETERS: Aml1Buffer - Contains first resource list * Aml1BufferLength - Length of first resource list * Aml2Buffer - Contains second resource list * Aml2BufferLength - Length of second resource list * * RETURN: None * * DESCRIPTION: Compare two AML resource lists, descriptor by descriptor (in * order to isolate a miscompare to an individual resource) * ******************************************************************************/ static void AcpiDmCompareAmlResources ( UINT8 *Aml1Buffer, ACPI_RSDESC_SIZE Aml1BufferLength, UINT8 *Aml2Buffer, ACPI_RSDESC_SIZE Aml2BufferLength) { UINT8 *Aml1; UINT8 *Aml2; UINT8 *Aml1End; UINT8 *Aml2End; ACPI_RSDESC_SIZE Aml1Length; ACPI_RSDESC_SIZE Aml2Length; ACPI_RSDESC_SIZE Offset = 0; UINT8 ResourceType; UINT32 Count = 0; UINT32 i; /* Compare overall buffer sizes (may be different due to size rounding) */ if (Aml1BufferLength != Aml2BufferLength) { AcpiOsPrintf ( "**** Buffer length mismatch in converted AML: Original %X, New %X ****\n", Aml1BufferLength, Aml2BufferLength); } Aml1 = Aml1Buffer; Aml2 = Aml2Buffer; Aml1End = Aml1Buffer + Aml1BufferLength; Aml2End = Aml2Buffer + Aml2BufferLength; /* Walk the descriptor lists, comparing each descriptor */ while ((Aml1 < Aml1End) && (Aml2 < Aml2End)) { /* Get the lengths of each descriptor */ Aml1Length = AcpiUtGetDescriptorLength (Aml1); Aml2Length = AcpiUtGetDescriptorLength (Aml2); ResourceType = AcpiUtGetResourceType (Aml1); /* Check for descriptor length match */ if (Aml1Length != Aml2Length) { AcpiOsPrintf ( "**** Length mismatch in descriptor [%.2X] type %2.2X, Offset %8.8X Len1 %X, Len2 %X ****\n", Count, ResourceType, Offset, Aml1Length, Aml2Length); } /* Check for descriptor byte match */ else if (ACPI_MEMCMP (Aml1, Aml2, Aml1Length)) { AcpiOsPrintf ( "**** Data mismatch in descriptor [%.2X] type %2.2X, Offset %8.8X ****\n", Count, ResourceType, Offset); for (i = 0; i < Aml1Length; i++) { if (Aml1[i] != Aml2[i]) { AcpiOsPrintf ( "Mismatch at byte offset %.2X: is %2.2X, should be %2.2X\n", i, Aml2[i], Aml1[i]); } } } /* Exit on EndTag descriptor */ if (ResourceType == ACPI_RESOURCE_NAME_END_TAG) { return; } /* Point to next descriptor in each buffer */ Count++; Offset += Aml1Length; Aml1 += Aml1Length; Aml2 += Aml2Length; } } /******************************************************************************* * * FUNCTION: AcpiDmTestResourceConversion * * PARAMETERS: Node - Parent device node * Name - resource method name (_CRS) * * RETURN: Status * * DESCRIPTION: Compare the original AML with a conversion of the AML to * internal resource list, then back to AML. * ******************************************************************************/ static ACPI_STATUS AcpiDmTestResourceConversion ( ACPI_NAMESPACE_NODE *Node, char *Name) { ACPI_STATUS Status; ACPI_BUFFER ReturnBuffer; ACPI_BUFFER ResourceBuffer; ACPI_BUFFER NewAml; ACPI_OBJECT *OriginalAml; AcpiOsPrintf ("Resource Conversion Comparison:\n"); NewAml.Length = ACPI_ALLOCATE_LOCAL_BUFFER; ReturnBuffer.Length = ACPI_ALLOCATE_LOCAL_BUFFER; ResourceBuffer.Length = ACPI_ALLOCATE_LOCAL_BUFFER; /* Get the original _CRS AML resource template */ Status = AcpiEvaluateObject (Node, Name, NULL, &ReturnBuffer); if (ACPI_FAILURE (Status)) { AcpiOsPrintf ("Could not obtain %s: %s\n", Name, AcpiFormatException (Status)); return (Status); } /* Get the AML resource template, converted to internal resource structs */ Status = AcpiGetCurrentResources (Node, &ResourceBuffer); if (ACPI_FAILURE (Status)) { AcpiOsPrintf ("AcpiGetCurrentResources failed: %s\n", AcpiFormatException (Status)); goto Exit1; } /* Convert internal resource list to external AML resource template */ Status = AcpiRsCreateAmlResources (&ResourceBuffer, &NewAml); if (ACPI_FAILURE (Status)) { AcpiOsPrintf ("AcpiRsCreateAmlResources failed: %s\n", AcpiFormatException (Status)); goto Exit2; } /* Compare original AML to the newly created AML resource list */ OriginalAml = ReturnBuffer.Pointer; AcpiDmCompareAmlResources (OriginalAml->Buffer.Pointer, (ACPI_RSDESC_SIZE) OriginalAml->Buffer.Length, NewAml.Pointer, (ACPI_RSDESC_SIZE) NewAml.Length); /* Cleanup and exit */ ACPI_FREE (NewAml.Pointer); Exit2: ACPI_FREE (ResourceBuffer.Pointer); Exit1: ACPI_FREE (ReturnBuffer.Pointer); return (Status); } /******************************************************************************* * * FUNCTION: AcpiDbResourceCallback * * PARAMETERS: ACPI_WALK_RESOURCE_CALLBACK * * RETURN: Status * * DESCRIPTION: Simple callback to exercise AcpiWalkResources and * AcpiWalkResourceBuffer. * ******************************************************************************/ static ACPI_STATUS AcpiDbResourceCallback ( ACPI_RESOURCE *Resource, void *Context) { return (AE_OK); } /******************************************************************************* * * FUNCTION: AcpiDbDeviceResources * * PARAMETERS: ACPI_WALK_CALLBACK * * RETURN: Status * * DESCRIPTION: Display the _PRT/_CRS/_PRS resources for a device object. * ******************************************************************************/ static ACPI_STATUS AcpiDbDeviceResources ( ACPI_HANDLE ObjHandle, UINT32 NestingLevel, void *Context, void **ReturnValue) { ACPI_NAMESPACE_NODE *Node; ACPI_NAMESPACE_NODE *PrtNode = NULL; ACPI_NAMESPACE_NODE *CrsNode = NULL; ACPI_NAMESPACE_NODE *PrsNode = NULL; ACPI_NAMESPACE_NODE *AeiNode = NULL; char *ParentPath; ACPI_BUFFER ReturnBuffer; ACPI_STATUS Status; Node = ACPI_CAST_PTR (ACPI_NAMESPACE_NODE, ObjHandle); ParentPath = AcpiNsGetExternalPathname (Node); if (!ParentPath) { return (AE_NO_MEMORY); } /* Get handles to the resource methods for this device */ (void) AcpiGetHandle (Node, METHOD_NAME__PRT, ACPI_CAST_PTR (ACPI_HANDLE, &PrtNode)); (void) AcpiGetHandle (Node, METHOD_NAME__CRS, ACPI_CAST_PTR (ACPI_HANDLE, &CrsNode)); (void) AcpiGetHandle (Node, METHOD_NAME__PRS, ACPI_CAST_PTR (ACPI_HANDLE, &PrsNode)); (void) AcpiGetHandle (Node, METHOD_NAME__AEI, ACPI_CAST_PTR (ACPI_HANDLE, &AeiNode)); if (!PrtNode && !CrsNode && !PrsNode && !AeiNode) { goto Cleanup; /* Nothing to do */ } AcpiOsPrintf ("\nDevice: %s\n", ParentPath); /* Prepare for a return object of arbitrary size */ ReturnBuffer.Pointer = AcpiGbl_DbBuffer; ReturnBuffer.Length = ACPI_DEBUG_BUFFER_SIZE; /* _PRT */ if (PrtNode) { AcpiOsPrintf ("Evaluating _PRT\n"); Status = AcpiEvaluateObject (PrtNode, NULL, NULL, &ReturnBuffer); if (ACPI_FAILURE (Status)) { AcpiOsPrintf ("Could not evaluate _PRT: %s\n", AcpiFormatException (Status)); goto GetCrs; } ReturnBuffer.Pointer = AcpiGbl_DbBuffer; ReturnBuffer.Length = ACPI_DEBUG_BUFFER_SIZE; Status = AcpiGetIrqRoutingTable (Node, &ReturnBuffer); if (ACPI_FAILURE (Status)) { AcpiOsPrintf ("GetIrqRoutingTable failed: %s\n", AcpiFormatException (Status)); goto GetCrs; } AcpiRsDumpIrqList (ACPI_CAST_PTR (UINT8, AcpiGbl_DbBuffer)); } /* _CRS */ GetCrs: if (CrsNode) { AcpiOsPrintf ("Evaluating _CRS\n"); ReturnBuffer.Pointer = AcpiGbl_DbBuffer; ReturnBuffer.Length = ACPI_DEBUG_BUFFER_SIZE; Status = AcpiEvaluateObject (CrsNode, NULL, NULL, &ReturnBuffer); if (ACPI_FAILURE (Status)) { AcpiOsPrintf ("Could not evaluate _CRS: %s\n", AcpiFormatException (Status)); goto GetPrs; } /* This code exercises the AcpiWalkResources interface */ Status = AcpiWalkResources (Node, METHOD_NAME__CRS, AcpiDbResourceCallback, NULL); if (ACPI_FAILURE (Status)) { AcpiOsPrintf ("AcpiWalkResources failed: %s\n", AcpiFormatException (Status)); goto GetPrs; } /* Get the _CRS resource list (test ALLOCATE buffer) */ ReturnBuffer.Pointer = NULL; ReturnBuffer.Length = ACPI_ALLOCATE_LOCAL_BUFFER; Status = AcpiGetCurrentResources (Node, &ReturnBuffer); if (ACPI_FAILURE (Status)) { AcpiOsPrintf ("AcpiGetCurrentResources failed: %s\n", AcpiFormatException (Status)); goto GetPrs; } /* This code exercises the AcpiWalkResourceBuffer interface */ Status = AcpiWalkResourceBuffer (&ReturnBuffer, AcpiDbResourceCallback, NULL); if (ACPI_FAILURE (Status)) { AcpiOsPrintf ("AcpiWalkResourceBuffer failed: %s\n", AcpiFormatException (Status)); goto EndCrs; } /* Dump the _CRS resource list */ AcpiRsDumpResourceList (ACPI_CAST_PTR (ACPI_RESOURCE, ReturnBuffer.Pointer)); /* * Perform comparison of original AML to newly created AML. This * tests both the AML->Resource conversion and the Resource->AML * conversion. */ (void) AcpiDmTestResourceConversion (Node, METHOD_NAME__CRS); /* Execute _SRS with the resource list */ AcpiOsPrintf ("Evaluating _SRS\n"); Status = AcpiSetCurrentResources (Node, &ReturnBuffer); if (ACPI_FAILURE (Status)) { AcpiOsPrintf ("AcpiSetCurrentResources failed: %s\n", AcpiFormatException (Status)); goto EndCrs; } EndCrs: ACPI_FREE (ReturnBuffer.Pointer); } /* _PRS */ GetPrs: if (PrsNode) { AcpiOsPrintf ("Evaluating _PRS\n"); ReturnBuffer.Pointer = AcpiGbl_DbBuffer; ReturnBuffer.Length = ACPI_DEBUG_BUFFER_SIZE; Status = AcpiEvaluateObject (PrsNode, NULL, NULL, &ReturnBuffer); if (ACPI_FAILURE (Status)) { AcpiOsPrintf ("Could not evaluate _PRS: %s\n", AcpiFormatException (Status)); goto GetAei; } ReturnBuffer.Pointer = AcpiGbl_DbBuffer; ReturnBuffer.Length = ACPI_DEBUG_BUFFER_SIZE; Status = AcpiGetPossibleResources (Node, &ReturnBuffer); if (ACPI_FAILURE (Status)) { AcpiOsPrintf ("AcpiGetPossibleResources failed: %s\n", AcpiFormatException (Status)); goto GetAei; } AcpiRsDumpResourceList (ACPI_CAST_PTR (ACPI_RESOURCE, AcpiGbl_DbBuffer)); } /* _AEI */ GetAei: if (AeiNode) { AcpiOsPrintf ("Evaluating _AEI\n"); ReturnBuffer.Pointer = AcpiGbl_DbBuffer; ReturnBuffer.Length = ACPI_DEBUG_BUFFER_SIZE; Status = AcpiEvaluateObject (AeiNode, NULL, NULL, &ReturnBuffer); if (ACPI_FAILURE (Status)) { AcpiOsPrintf ("Could not evaluate _AEI: %s\n", AcpiFormatException (Status)); goto Cleanup; } ReturnBuffer.Pointer = AcpiGbl_DbBuffer; ReturnBuffer.Length = ACPI_DEBUG_BUFFER_SIZE; Status = AcpiGetEventResources (Node, &ReturnBuffer); if (ACPI_FAILURE (Status)) { AcpiOsPrintf ("AcpiGetEventResources failed: %s\n", AcpiFormatException (Status)); goto Cleanup; } AcpiRsDumpResourceList (ACPI_CAST_PTR (ACPI_RESOURCE, AcpiGbl_DbBuffer)); } Cleanup: ACPI_FREE (ParentPath); return (AE_OK); } /******************************************************************************* * * FUNCTION: AcpiDbDisplayResources * * PARAMETERS: ObjectArg - String object name or object pointer. * NULL or "*" means "display resources for * all devices" * * RETURN: None * * DESCRIPTION: Display the resource objects associated with a device. * ******************************************************************************/ void AcpiDbDisplayResources ( char *ObjectArg) { ACPI_NAMESPACE_NODE *Node; AcpiDbSetOutputDestination (ACPI_DB_REDIRECTABLE_OUTPUT); AcpiDbgLevel |= ACPI_LV_RESOURCES; /* Asterisk means "display resources for all devices" */ if (!ObjectArg || (!ACPI_STRCMP (ObjectArg, "*"))) { (void) AcpiWalkNamespace (ACPI_TYPE_DEVICE, ACPI_ROOT_OBJECT, ACPI_UINT32_MAX, AcpiDbDeviceResources, NULL, NULL, NULL); } else { /* Convert string to object pointer */ Node = AcpiDbConvertToNode (ObjectArg); if (Node) { if (Node->Type != ACPI_TYPE_DEVICE) { AcpiOsPrintf ("%4.4s: Name is not a device object (%s)\n", Node->Name.Ascii, AcpiUtGetTypeName (Node->Type)); } else { (void) AcpiDbDeviceResources (Node, 0, NULL, NULL); } } } AcpiDbSetOutputDestination (ACPI_DB_CONSOLE_OUTPUT); } #if (!ACPI_REDUCED_HARDWARE) /******************************************************************************* * * FUNCTION: AcpiDbGenerateGpe * * PARAMETERS: GpeArg - Raw GPE number, ascii string * BlockArg - GPE block number, ascii string * 0 or 1 for FADT GPE blocks * * RETURN: None * * DESCRIPTION: Simulate firing of a GPE * ******************************************************************************/ void AcpiDbGenerateGpe ( char *GpeArg, char *BlockArg) { UINT32 BlockNumber; UINT32 GpeNumber; ACPI_GPE_EVENT_INFO *GpeEventInfo; GpeNumber = ACPI_STRTOUL (GpeArg, NULL, 0); BlockNumber = ACPI_STRTOUL (BlockArg, NULL, 0); GpeEventInfo = AcpiEvGetGpeEventInfo (ACPI_TO_POINTER (BlockNumber), GpeNumber); if (!GpeEventInfo) { AcpiOsPrintf ("Invalid GPE\n"); return; } (void) AcpiEvGpeDispatch (NULL, GpeEventInfo, GpeNumber); } void AcpiDbGenerateSci ( void) { AcpiEvSciDispatch (); } #endif /* !ACPI_REDUCED_HARDWARE */ #endif /* ACPI_DEBUGGER */ src/acpica/source/components/debugger/dbconvert.c000066400000000000000000000471401231470457100225020ustar00rootroot00000000000000/******************************************************************************* * * Module Name: dbconvert - debugger miscellaneous conversion routines * ******************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #include "acpi.h" #include "accommon.h" #include "acdebug.h" #ifdef ACPI_DEBUGGER #define _COMPONENT ACPI_CA_DEBUGGER ACPI_MODULE_NAME ("dbconvert") #define DB_DEFAULT_PKG_ELEMENTS 33 /******************************************************************************* * * FUNCTION: AcpiDbHexCharToValue * * PARAMETERS: HexChar - Ascii Hex digit, 0-9|a-f|A-F * ReturnValue - Where the converted value is returned * * RETURN: Status * * DESCRIPTION: Convert a single hex character to a 4-bit number (0-16). * ******************************************************************************/ ACPI_STATUS AcpiDbHexCharToValue ( int HexChar, UINT8 *ReturnValue) { UINT8 Value; /* Digit must be ascii [0-9a-fA-F] */ if (!ACPI_IS_XDIGIT (HexChar)) { return (AE_BAD_HEX_CONSTANT); } if (HexChar <= 0x39) { Value = (UINT8) (HexChar - 0x30); } else { Value = (UINT8) (ACPI_TOUPPER (HexChar) - 0x37); } *ReturnValue = Value; return (AE_OK); } /******************************************************************************* * * FUNCTION: AcpiDbHexByteToBinary * * PARAMETERS: HexByte - Double hex digit (0x00 - 0xFF) in format: * HiByte then LoByte. * ReturnValue - Where the converted value is returned * * RETURN: Status * * DESCRIPTION: Convert two hex characters to an 8 bit number (0 - 255). * ******************************************************************************/ static ACPI_STATUS AcpiDbHexByteToBinary ( char *HexByte, UINT8 *ReturnValue) { UINT8 Local0; UINT8 Local1; ACPI_STATUS Status; /* High byte */ Status = AcpiDbHexCharToValue (HexByte[0], &Local0); if (ACPI_FAILURE (Status)) { return (Status); } /* Low byte */ Status = AcpiDbHexCharToValue (HexByte[1], &Local1); if (ACPI_FAILURE (Status)) { return (Status); } *ReturnValue = (UINT8) ((Local0 << 4) | Local1); return (AE_OK); } /******************************************************************************* * * FUNCTION: AcpiDbConvertToBuffer * * PARAMETERS: String - Input string to be converted * Object - Where the buffer object is returned * * RETURN: Status * * DESCRIPTION: Convert a string to a buffer object. String is treated a list * of buffer elements, each separated by a space or comma. * ******************************************************************************/ static ACPI_STATUS AcpiDbConvertToBuffer ( char *String, ACPI_OBJECT *Object) { UINT32 i; UINT32 j; UINT32 Length; UINT8 *Buffer; ACPI_STATUS Status; /* Generate the final buffer length */ for (i = 0, Length = 0; String[i];) { i+=2; Length++; while (String[i] && ((String[i] == ',') || (String[i] == ' '))) { i++; } } Buffer = ACPI_ALLOCATE (Length); if (!Buffer) { return (AE_NO_MEMORY); } /* Convert the command line bytes to the buffer */ for (i = 0, j = 0; String[i];) { Status = AcpiDbHexByteToBinary (&String[i], &Buffer[j]); if (ACPI_FAILURE (Status)) { ACPI_FREE (Buffer); return (Status); } j++; i+=2; while (String[i] && ((String[i] == ',') || (String[i] == ' '))) { i++; } } Object->Type = ACPI_TYPE_BUFFER; Object->Buffer.Pointer = Buffer; Object->Buffer.Length = Length; return (AE_OK); } /******************************************************************************* * * FUNCTION: AcpiDbConvertToPackage * * PARAMETERS: String - Input string to be converted * Object - Where the package object is returned * * RETURN: Status * * DESCRIPTION: Convert a string to a package object. Handles nested packages * via recursion with AcpiDbConvertToObject. * ******************************************************************************/ ACPI_STATUS AcpiDbConvertToPackage ( char *String, ACPI_OBJECT *Object) { char *This; char *Next; UINT32 i; ACPI_OBJECT_TYPE Type; ACPI_OBJECT *Elements; ACPI_STATUS Status; Elements = ACPI_ALLOCATE_ZEROED ( DB_DEFAULT_PKG_ELEMENTS * sizeof (ACPI_OBJECT)); This = String; for (i = 0; i < (DB_DEFAULT_PKG_ELEMENTS - 1); i++) { This = AcpiDbGetNextToken (This, &Next, &Type); if (!This) { break; } /* Recursive call to convert each package element */ Status = AcpiDbConvertToObject (Type, This, &Elements[i]); if (ACPI_FAILURE (Status)) { AcpiDbDeleteObjects (i + 1, Elements); ACPI_FREE (Elements); return (Status); } This = Next; } Object->Type = ACPI_TYPE_PACKAGE; Object->Package.Count = i; Object->Package.Elements = Elements; return (AE_OK); } /******************************************************************************* * * FUNCTION: AcpiDbConvertToObject * * PARAMETERS: Type - Object type as determined by parser * String - Input string to be converted * Object - Where the new object is returned * * RETURN: Status * * DESCRIPTION: Convert a typed and tokenized string to an ACPI_OBJECT. Typing: * 1) String objects were surrounded by quotes. * 2) Buffer objects were surrounded by parentheses. * 3) Package objects were surrounded by brackets "[]". * 4) All standalone tokens are treated as integers. * ******************************************************************************/ ACPI_STATUS AcpiDbConvertToObject ( ACPI_OBJECT_TYPE Type, char *String, ACPI_OBJECT *Object) { ACPI_STATUS Status = AE_OK; switch (Type) { case ACPI_TYPE_STRING: Object->Type = ACPI_TYPE_STRING; Object->String.Pointer = String; Object->String.Length = (UINT32) ACPI_STRLEN (String); break; case ACPI_TYPE_BUFFER: Status = AcpiDbConvertToBuffer (String, Object); break; case ACPI_TYPE_PACKAGE: Status = AcpiDbConvertToPackage (String, Object); break; default: Object->Type = ACPI_TYPE_INTEGER; Status = AcpiUtStrtoul64 (String, 16, &Object->Integer.Value); break; } return (Status); } /******************************************************************************* * * FUNCTION: AcpiDbEncodePldBuffer * * PARAMETERS: PldInfo - _PLD buffer struct (Using local struct) * * RETURN: Encode _PLD buffer suitable for return value from _PLD * * DESCRIPTION: Bit-packs a _PLD buffer struct. Used to test the _PLD macros * ******************************************************************************/ UINT8 * AcpiDbEncodePldBuffer ( ACPI_PLD_INFO *PldInfo) { UINT32 *Buffer; UINT32 Dword; Buffer = ACPI_ALLOCATE_ZEROED (ACPI_PLD_BUFFER_SIZE); if (!Buffer) { return (NULL); } /* First 32 bits */ Dword = 0; ACPI_PLD_SET_REVISION (&Dword, PldInfo->Revision); ACPI_PLD_SET_IGNORE_COLOR (&Dword, PldInfo->IgnoreColor); ACPI_PLD_SET_COLOR (&Dword, PldInfo->Color); ACPI_MOVE_32_TO_32 (&Buffer[0], &Dword); /* Second 32 bits */ Dword = 0; ACPI_PLD_SET_WIDTH (&Dword, PldInfo->Width); ACPI_PLD_SET_HEIGHT (&Dword, PldInfo->Height); ACPI_MOVE_32_TO_32 (&Buffer[1], &Dword); /* Third 32 bits */ Dword = 0; ACPI_PLD_SET_USER_VISIBLE (&Dword, PldInfo->UserVisible); ACPI_PLD_SET_DOCK (&Dword, PldInfo->Dock); ACPI_PLD_SET_LID (&Dword, PldInfo->Lid); ACPI_PLD_SET_PANEL (&Dword, PldInfo->Panel); ACPI_PLD_SET_VERTICAL (&Dword, PldInfo->VerticalPosition); ACPI_PLD_SET_HORIZONTAL (&Dword, PldInfo->HorizontalPosition); ACPI_PLD_SET_SHAPE (&Dword, PldInfo->Shape); ACPI_PLD_SET_ORIENTATION (&Dword, PldInfo->GroupOrientation); ACPI_PLD_SET_TOKEN (&Dword, PldInfo->GroupToken); ACPI_PLD_SET_POSITION (&Dword, PldInfo->GroupPosition); ACPI_PLD_SET_BAY (&Dword, PldInfo->Bay); ACPI_MOVE_32_TO_32 (&Buffer[2], &Dword); /* Fourth 32 bits */ Dword = 0; ACPI_PLD_SET_EJECTABLE (&Dword, PldInfo->Ejectable); ACPI_PLD_SET_OSPM_EJECT (&Dword, PldInfo->OspmEjectRequired); ACPI_PLD_SET_CABINET (&Dword, PldInfo->CabinetNumber); ACPI_PLD_SET_CARD_CAGE (&Dword, PldInfo->CardCageNumber); ACPI_PLD_SET_REFERENCE (&Dword, PldInfo->Reference); ACPI_PLD_SET_ROTATION (&Dword, PldInfo->Rotation); ACPI_PLD_SET_ORDER (&Dword, PldInfo->Order); ACPI_MOVE_32_TO_32 (&Buffer[3], &Dword); if (PldInfo->Revision >= 2) { /* Fifth 32 bits */ Dword = 0; ACPI_PLD_SET_VERT_OFFSET (&Dword, PldInfo->VerticalOffset); ACPI_PLD_SET_HORIZ_OFFSET (&Dword, PldInfo->HorizontalOffset); ACPI_MOVE_32_TO_32 (&Buffer[4], &Dword); } return (ACPI_CAST_PTR (UINT8, Buffer)); } /******************************************************************************* * * FUNCTION: AcpiDbDumpPldBuffer * * PARAMETERS: ObjDesc - Object returned from _PLD method * * RETURN: None. * * DESCRIPTION: Dumps formatted contents of a _PLD return buffer. * ******************************************************************************/ #define ACPI_PLD_OUTPUT "%20s : %-6X\n" void AcpiDbDumpPldBuffer ( ACPI_OBJECT *ObjDesc) { ACPI_OBJECT *BufferDesc; ACPI_PLD_INFO *PldInfo; UINT8 *NewBuffer; ACPI_STATUS Status; /* Object must be of type Package with at least one Buffer element */ if (ObjDesc->Type != ACPI_TYPE_PACKAGE) { return; } BufferDesc = &ObjDesc->Package.Elements[0]; if (BufferDesc->Type != ACPI_TYPE_BUFFER) { return; } /* Convert _PLD buffer to local _PLD struct */ Status = AcpiDecodePldBuffer (BufferDesc->Buffer.Pointer, BufferDesc->Buffer.Length, &PldInfo); if (ACPI_FAILURE (Status)) { return; } /* Encode local _PLD struct back to a _PLD buffer */ NewBuffer = AcpiDbEncodePldBuffer (PldInfo); if (!NewBuffer) { return; } /* The two bit-packed buffers should match */ if (ACPI_MEMCMP (NewBuffer, BufferDesc->Buffer.Pointer, BufferDesc->Buffer.Length)) { AcpiOsPrintf ("Converted _PLD buffer does not compare. New:\n"); AcpiUtDumpBuffer (NewBuffer, BufferDesc->Buffer.Length, DB_BYTE_DISPLAY, 0); } /* First 32-bit dword */ AcpiOsPrintf (ACPI_PLD_OUTPUT, "Revision", PldInfo->Revision); AcpiOsPrintf (ACPI_PLD_OUTPUT, "IgnoreColor", PldInfo->IgnoreColor); AcpiOsPrintf (ACPI_PLD_OUTPUT, "Color", PldInfo->Color); /* Second 32-bit dword */ AcpiOsPrintf (ACPI_PLD_OUTPUT, "Width", PldInfo->Width); AcpiOsPrintf (ACPI_PLD_OUTPUT, "Height", PldInfo->Height); /* Third 32-bit dword */ AcpiOsPrintf (ACPI_PLD_OUTPUT, "UserVisible", PldInfo->UserVisible); AcpiOsPrintf (ACPI_PLD_OUTPUT, "Dock", PldInfo->Dock); AcpiOsPrintf (ACPI_PLD_OUTPUT, "Lid", PldInfo->Lid); AcpiOsPrintf (ACPI_PLD_OUTPUT, "Panel", PldInfo->Panel); AcpiOsPrintf (ACPI_PLD_OUTPUT, "VerticalPosition", PldInfo->VerticalPosition); AcpiOsPrintf (ACPI_PLD_OUTPUT, "HorizontalPosition", PldInfo->HorizontalPosition); AcpiOsPrintf (ACPI_PLD_OUTPUT, "Shape", PldInfo->Shape); AcpiOsPrintf (ACPI_PLD_OUTPUT, "GroupOrientation", PldInfo->GroupOrientation); AcpiOsPrintf (ACPI_PLD_OUTPUT, "GroupToken", PldInfo->GroupToken); AcpiOsPrintf (ACPI_PLD_OUTPUT, "GroupPosition", PldInfo->GroupPosition); AcpiOsPrintf (ACPI_PLD_OUTPUT, "Bay", PldInfo->Bay); /* Fourth 32-bit dword */ AcpiOsPrintf (ACPI_PLD_OUTPUT, "Ejectable", PldInfo->Ejectable); AcpiOsPrintf (ACPI_PLD_OUTPUT, "OspmEjectRequired", PldInfo->OspmEjectRequired); AcpiOsPrintf (ACPI_PLD_OUTPUT, "CabinetNumber", PldInfo->CabinetNumber); AcpiOsPrintf (ACPI_PLD_OUTPUT, "CardCageNumber", PldInfo->CardCageNumber); AcpiOsPrintf (ACPI_PLD_OUTPUT, "Reference", PldInfo->Reference); AcpiOsPrintf (ACPI_PLD_OUTPUT, "Rotation", PldInfo->Rotation); AcpiOsPrintf (ACPI_PLD_OUTPUT, "Order", PldInfo->Order); /* Fifth 32-bit dword */ if (BufferDesc->Buffer.Length > 16) { AcpiOsPrintf (ACPI_PLD_OUTPUT, "VerticalOffset", PldInfo->VerticalOffset); AcpiOsPrintf (ACPI_PLD_OUTPUT, "HorizontalOffset", PldInfo->HorizontalOffset); } ACPI_FREE (PldInfo); ACPI_FREE (NewBuffer); } #endif /* ACPI_DEBUGGER */ src/acpica/source/components/debugger/dbdisply.c000066400000000000000000001106311231470457100223220ustar00rootroot00000000000000/******************************************************************************* * * Module Name: dbdisply - debug display commands * ******************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #include "acpi.h" #include "accommon.h" #include "amlcode.h" #include "acdispat.h" #include "acnamesp.h" #include "acparser.h" #include "acinterp.h" #include "acdebug.h" #include "acdisasm.h" #ifdef ACPI_DEBUGGER #define _COMPONENT ACPI_CA_DEBUGGER ACPI_MODULE_NAME ("dbdisply") /* Local prototypes */ static void AcpiDbDumpParserDescriptor ( ACPI_PARSE_OBJECT *Op); static void * AcpiDbGetPointer ( void *Target); static ACPI_STATUS AcpiDbDisplayNonRootHandlers ( ACPI_HANDLE ObjHandle, UINT32 NestingLevel, void *Context, void **ReturnValue); /* * System handler information. * Used for Handlers command, in AcpiDbDisplayHandlers. */ #define ACPI_PREDEFINED_PREFIX "%25s (%.2X) : " #define ACPI_HANDLER_NAME_STRING "%30s : " #define ACPI_HANDLER_PRESENT_STRING "%-9s (%p)\n" #define ACPI_HANDLER_PRESENT_STRING2 "%-9s (%p)" #define ACPI_HANDLER_NOT_PRESENT_STRING "%-9s\n" /* All predefined Address Space IDs */ static ACPI_ADR_SPACE_TYPE AcpiGbl_SpaceIdList[] = { ACPI_ADR_SPACE_SYSTEM_MEMORY, ACPI_ADR_SPACE_SYSTEM_IO, ACPI_ADR_SPACE_PCI_CONFIG, ACPI_ADR_SPACE_EC, ACPI_ADR_SPACE_SMBUS, ACPI_ADR_SPACE_CMOS, ACPI_ADR_SPACE_PCI_BAR_TARGET, ACPI_ADR_SPACE_IPMI, ACPI_ADR_SPACE_GPIO, ACPI_ADR_SPACE_GSBUS, ACPI_ADR_SPACE_DATA_TABLE, ACPI_ADR_SPACE_FIXED_HARDWARE }; /* Global handler information */ typedef struct acpi_handler_info { void *Handler; char *Name; } ACPI_HANDLER_INFO; static ACPI_HANDLER_INFO AcpiGbl_HandlerList[] = { {&AcpiGbl_GlobalNotify[0].Handler, "System Notifications"}, {&AcpiGbl_GlobalNotify[1].Handler, "Device Notifications"}, {&AcpiGbl_TableHandler, "ACPI Table Events"}, {&AcpiGbl_ExceptionHandler, "Control Method Exceptions"}, {&AcpiGbl_InterfaceHandler, "OSI Invocations"} }; /******************************************************************************* * * FUNCTION: AcpiDbGetPointer * * PARAMETERS: Target - Pointer to string to be converted * * RETURN: Converted pointer * * DESCRIPTION: Convert an ascii pointer value to a real value * ******************************************************************************/ static void * AcpiDbGetPointer ( void *Target) { void *ObjPtr; ACPI_SIZE Address; Address = ACPI_STRTOUL (Target, NULL, 16); ObjPtr = ACPI_TO_POINTER (Address); return (ObjPtr); } /******************************************************************************* * * FUNCTION: AcpiDbDumpParserDescriptor * * PARAMETERS: Op - A parser Op descriptor * * RETURN: None * * DESCRIPTION: Display a formatted parser object * ******************************************************************************/ static void AcpiDbDumpParserDescriptor ( ACPI_PARSE_OBJECT *Op) { const ACPI_OPCODE_INFO *Info; Info = AcpiPsGetOpcodeInfo (Op->Common.AmlOpcode); AcpiOsPrintf ("Parser Op Descriptor:\n"); AcpiOsPrintf ("%20.20s : %4.4X\n", "Opcode", Op->Common.AmlOpcode); ACPI_DEBUG_ONLY_MEMBERS (AcpiOsPrintf ("%20.20s : %s\n", "Opcode Name", Info->Name)); AcpiOsPrintf ("%20.20s : %p\n", "Value/ArgList", Op->Common.Value.Arg); AcpiOsPrintf ("%20.20s : %p\n", "Parent", Op->Common.Parent); AcpiOsPrintf ("%20.20s : %p\n", "NextOp", Op->Common.Next); } /******************************************************************************* * * FUNCTION: AcpiDbDecodeAndDisplayObject * * PARAMETERS: Target - String with object to be displayed. Names * and hex pointers are supported. * OutputType - Byte, Word, Dword, or Qword (B|W|D|Q) * * RETURN: None * * DESCRIPTION: Display a formatted ACPI object * ******************************************************************************/ void AcpiDbDecodeAndDisplayObject ( char *Target, char *OutputType) { void *ObjPtr; ACPI_NAMESPACE_NODE *Node; ACPI_OPERAND_OBJECT *ObjDesc; UINT32 Display = DB_BYTE_DISPLAY; char Buffer[80]; ACPI_BUFFER RetBuf; ACPI_STATUS Status; UINT32 Size; if (!Target) { return; } /* Decode the output type */ if (OutputType) { AcpiUtStrupr (OutputType); if (OutputType[0] == 'W') { Display = DB_WORD_DISPLAY; } else if (OutputType[0] == 'D') { Display = DB_DWORD_DISPLAY; } else if (OutputType[0] == 'Q') { Display = DB_QWORD_DISPLAY; } } RetBuf.Length = sizeof (Buffer); RetBuf.Pointer = Buffer; /* Differentiate between a number and a name */ if ((Target[0] >= 0x30) && (Target[0] <= 0x39)) { ObjPtr = AcpiDbGetPointer (Target); if (!AcpiOsReadable (ObjPtr, 16)) { AcpiOsPrintf ("Address %p is invalid in this address space\n", ObjPtr); return; } /* Decode the object type */ switch (ACPI_GET_DESCRIPTOR_TYPE (ObjPtr)) { case ACPI_DESC_TYPE_NAMED: /* This is a namespace Node */ if (!AcpiOsReadable (ObjPtr, sizeof (ACPI_NAMESPACE_NODE))) { AcpiOsPrintf ( "Cannot read entire Named object at address %p\n", ObjPtr); return; } Node = ObjPtr; goto DumpNode; case ACPI_DESC_TYPE_OPERAND: /* This is a ACPI OPERAND OBJECT */ if (!AcpiOsReadable (ObjPtr, sizeof (ACPI_OPERAND_OBJECT))) { AcpiOsPrintf ("Cannot read entire ACPI object at address %p\n", ObjPtr); return; } AcpiUtDebugDumpBuffer (ObjPtr, sizeof (ACPI_OPERAND_OBJECT), Display, ACPI_UINT32_MAX); AcpiExDumpObjectDescriptor (ObjPtr, 1); break; case ACPI_DESC_TYPE_PARSER: /* This is a Parser Op object */ if (!AcpiOsReadable (ObjPtr, sizeof (ACPI_PARSE_OBJECT))) { AcpiOsPrintf ( "Cannot read entire Parser object at address %p\n", ObjPtr); return; } AcpiUtDebugDumpBuffer (ObjPtr, sizeof (ACPI_PARSE_OBJECT), Display, ACPI_UINT32_MAX); AcpiDbDumpParserDescriptor ((ACPI_PARSE_OBJECT *) ObjPtr); break; default: /* Is not a recognizeable object */ AcpiOsPrintf ( "Not a known ACPI internal object, descriptor type %2.2X\n", ACPI_GET_DESCRIPTOR_TYPE (ObjPtr)); Size = 16; if (AcpiOsReadable (ObjPtr, 64)) { Size = 64; } /* Just dump some memory */ AcpiUtDebugDumpBuffer (ObjPtr, Size, Display, ACPI_UINT32_MAX); break; } return; } /* The parameter is a name string that must be resolved to a Named obj */ Node = AcpiDbLocalNsLookup (Target); if (!Node) { return; } DumpNode: /* Now dump the NS node */ Status = AcpiGetName (Node, ACPI_FULL_PATHNAME, &RetBuf); if (ACPI_FAILURE (Status)) { AcpiOsPrintf ("Could not convert name to pathname\n"); } else { AcpiOsPrintf ("Object (%p) Pathname: %s\n", Node, (char *) RetBuf.Pointer); } if (!AcpiOsReadable (Node, sizeof (ACPI_NAMESPACE_NODE))) { AcpiOsPrintf ("Invalid Named object at address %p\n", Node); return; } AcpiUtDebugDumpBuffer ((void *) Node, sizeof (ACPI_NAMESPACE_NODE), Display, ACPI_UINT32_MAX); AcpiExDumpNamespaceNode (Node, 1); ObjDesc = AcpiNsGetAttachedObject (Node); if (ObjDesc) { AcpiOsPrintf ("\nAttached Object (%p):\n", ObjDesc); if (!AcpiOsReadable (ObjDesc, sizeof (ACPI_OPERAND_OBJECT))) { AcpiOsPrintf ("Invalid internal ACPI Object at address %p\n", ObjDesc); return; } AcpiUtDebugDumpBuffer ((void *) ObjDesc, sizeof (ACPI_OPERAND_OBJECT), Display, ACPI_UINT32_MAX); AcpiExDumpObjectDescriptor (ObjDesc, 1); } } /******************************************************************************* * * FUNCTION: AcpiDbDisplayMethodInfo * * PARAMETERS: StartOp - Root of the control method parse tree * * RETURN: None * * DESCRIPTION: Display information about the current method * ******************************************************************************/ void AcpiDbDisplayMethodInfo ( ACPI_PARSE_OBJECT *StartOp) { ACPI_WALK_STATE *WalkState; ACPI_OPERAND_OBJECT *ObjDesc; ACPI_NAMESPACE_NODE *Node; ACPI_PARSE_OBJECT *RootOp; ACPI_PARSE_OBJECT *Op; const ACPI_OPCODE_INFO *OpInfo; UINT32 NumOps = 0; UINT32 NumOperands = 0; UINT32 NumOperators = 0; UINT32 NumRemainingOps = 0; UINT32 NumRemainingOperands = 0; UINT32 NumRemainingOperators = 0; BOOLEAN CountRemaining = FALSE; WalkState = AcpiDsGetCurrentWalkState (AcpiGbl_CurrentWalkList); if (!WalkState) { AcpiOsPrintf ("There is no method currently executing\n"); return; } ObjDesc = WalkState->MethodDesc; Node = WalkState->MethodNode; AcpiOsPrintf ("Currently executing control method is [%4.4s]\n", AcpiUtGetNodeName (Node)); AcpiOsPrintf ("%X Arguments, SyncLevel = %X\n", (UINT32) ObjDesc->Method.ParamCount, (UINT32) ObjDesc->Method.SyncLevel); RootOp = StartOp; while (RootOp->Common.Parent) { RootOp = RootOp->Common.Parent; } Op = RootOp; while (Op) { if (Op == StartOp) { CountRemaining = TRUE; } NumOps++; if (CountRemaining) { NumRemainingOps++; } /* Decode the opcode */ OpInfo = AcpiPsGetOpcodeInfo (Op->Common.AmlOpcode); switch (OpInfo->Class) { case AML_CLASS_ARGUMENT: if (CountRemaining) { NumRemainingOperands++; } NumOperands++; break; case AML_CLASS_UNKNOWN: /* Bad opcode or ASCII character */ continue; default: if (CountRemaining) { NumRemainingOperators++; } NumOperators++; break; } Op = AcpiPsGetDepthNext (StartOp, Op); } AcpiOsPrintf ( "Method contains: %X AML Opcodes - %X Operators, %X Operands\n", NumOps, NumOperators, NumOperands); AcpiOsPrintf ( "Remaining to execute: %X AML Opcodes - %X Operators, %X Operands\n", NumRemainingOps, NumRemainingOperators, NumRemainingOperands); } /******************************************************************************* * * FUNCTION: AcpiDbDisplayLocals * * PARAMETERS: None * * RETURN: None * * DESCRIPTION: Display all locals for the currently running control method * ******************************************************************************/ void AcpiDbDisplayLocals ( void) { ACPI_WALK_STATE *WalkState; WalkState = AcpiDsGetCurrentWalkState (AcpiGbl_CurrentWalkList); if (!WalkState) { AcpiOsPrintf ("There is no method currently executing\n"); return; } AcpiDmDisplayLocals (WalkState); } /******************************************************************************* * * FUNCTION: AcpiDbDisplayArguments * * PARAMETERS: None * * RETURN: None * * DESCRIPTION: Display all arguments for the currently running control method * ******************************************************************************/ void AcpiDbDisplayArguments ( void) { ACPI_WALK_STATE *WalkState; WalkState = AcpiDsGetCurrentWalkState (AcpiGbl_CurrentWalkList); if (!WalkState) { AcpiOsPrintf ("There is no method currently executing\n"); return; } AcpiDmDisplayArguments (WalkState); } /******************************************************************************* * * FUNCTION: AcpiDbDisplayResults * * PARAMETERS: None * * RETURN: None * * DESCRIPTION: Display current contents of a method result stack * ******************************************************************************/ void AcpiDbDisplayResults ( void) { UINT32 i; ACPI_WALK_STATE *WalkState; ACPI_OPERAND_OBJECT *ObjDesc; UINT32 ResultCount = 0; ACPI_NAMESPACE_NODE *Node; ACPI_GENERIC_STATE *Frame; UINT32 Index; /* Index onto current frame */ WalkState = AcpiDsGetCurrentWalkState (AcpiGbl_CurrentWalkList); if (!WalkState) { AcpiOsPrintf ("There is no method currently executing\n"); return; } ObjDesc = WalkState->MethodDesc; Node = WalkState->MethodNode; if (WalkState->Results) { ResultCount = WalkState->ResultCount; } AcpiOsPrintf ("Method [%4.4s] has %X stacked result objects\n", AcpiUtGetNodeName (Node), ResultCount); /* From the top element of result stack */ Frame = WalkState->Results; Index = (ResultCount - 1) % ACPI_RESULTS_FRAME_OBJ_NUM; for (i = 0; i < ResultCount; i++) { ObjDesc = Frame->Results.ObjDesc[Index]; AcpiOsPrintf ("Result%u: ", i); AcpiDmDisplayInternalObject (ObjDesc, WalkState); if (Index == 0) { Frame = Frame->Results.Next; Index = ACPI_RESULTS_FRAME_OBJ_NUM; } Index--; } } /******************************************************************************* * * FUNCTION: AcpiDbDisplayCallingTree * * PARAMETERS: None * * RETURN: None * * DESCRIPTION: Display current calling tree of nested control methods * ******************************************************************************/ void AcpiDbDisplayCallingTree ( void) { ACPI_WALK_STATE *WalkState; ACPI_NAMESPACE_NODE *Node; WalkState = AcpiDsGetCurrentWalkState (AcpiGbl_CurrentWalkList); if (!WalkState) { AcpiOsPrintf ("There is no method currently executing\n"); return; } Node = WalkState->MethodNode; AcpiOsPrintf ("Current Control Method Call Tree\n"); while (WalkState) { Node = WalkState->MethodNode; AcpiOsPrintf (" [%4.4s]\n", AcpiUtGetNodeName (Node)); WalkState = WalkState->Next; } } /******************************************************************************* * * FUNCTION: AcpiDbDisplayObjectType * * PARAMETERS: Name - User entered NS node handle or name * * RETURN: None * * DESCRIPTION: Display type of an arbitrary NS node * ******************************************************************************/ void AcpiDbDisplayObjectType ( char *Name) { ACPI_NAMESPACE_NODE *Node; ACPI_DEVICE_INFO *Info; ACPI_STATUS Status; UINT32 i; Node = AcpiDbConvertToNode (Name); if (!Node) { return; } Status = AcpiGetObjectInfo (ACPI_CAST_PTR (ACPI_HANDLE, Node), &Info); if (ACPI_FAILURE (Status)) { AcpiOsPrintf ("Could not get object info, %s\n", AcpiFormatException (Status)); return; } if (Info->Valid & ACPI_VALID_ADR) { AcpiOsPrintf ("ADR: %8.8X%8.8X, STA: %8.8X, Flags: %X\n", ACPI_FORMAT_UINT64 (Info->Address), Info->CurrentStatus, Info->Flags); } if (Info->Valid & ACPI_VALID_SXDS) { AcpiOsPrintf ("S1D-%2.2X S2D-%2.2X S3D-%2.2X S4D-%2.2X\n", Info->HighestDstates[0], Info->HighestDstates[1], Info->HighestDstates[2], Info->HighestDstates[3]); } if (Info->Valid & ACPI_VALID_SXWS) { AcpiOsPrintf ("S0W-%2.2X S1W-%2.2X S2W-%2.2X S3W-%2.2X S4W-%2.2X\n", Info->LowestDstates[0], Info->LowestDstates[1], Info->LowestDstates[2], Info->LowestDstates[3], Info->LowestDstates[4]); } if (Info->Valid & ACPI_VALID_HID) { AcpiOsPrintf ("HID: %s\n", Info->HardwareId.String); } if (Info->Valid & ACPI_VALID_UID) { AcpiOsPrintf ("UID: %s\n", Info->UniqueId.String); } if (Info->Valid & ACPI_VALID_SUB) { AcpiOsPrintf ("SUB: %s\n", Info->SubsystemId.String); } if (Info->Valid & ACPI_VALID_CID) { for (i = 0; i < Info->CompatibleIdList.Count; i++) { AcpiOsPrintf ("CID %u: %s\n", i, Info->CompatibleIdList.Ids[i].String); } } ACPI_FREE (Info); } /******************************************************************************* * * FUNCTION: AcpiDbDisplayResultObject * * PARAMETERS: ObjDesc - Object to be displayed * WalkState - Current walk state * * RETURN: None * * DESCRIPTION: Display the result of an AML opcode * * Note: Curently only displays the result object if we are single stepping. * However, this output may be useful in other contexts and could be enabled * to do so if needed. * ******************************************************************************/ void AcpiDbDisplayResultObject ( ACPI_OPERAND_OBJECT *ObjDesc, ACPI_WALK_STATE *WalkState) { /* Only display if single stepping */ if (!AcpiGbl_CmSingleStep) { return; } AcpiOsPrintf ("ResultObj: "); AcpiDmDisplayInternalObject (ObjDesc, WalkState); AcpiOsPrintf ("\n"); } /******************************************************************************* * * FUNCTION: AcpiDbDisplayArgumentObject * * PARAMETERS: ObjDesc - Object to be displayed * WalkState - Current walk state * * RETURN: None * * DESCRIPTION: Display the result of an AML opcode * ******************************************************************************/ void AcpiDbDisplayArgumentObject ( ACPI_OPERAND_OBJECT *ObjDesc, ACPI_WALK_STATE *WalkState) { if (!AcpiGbl_CmSingleStep) { return; } AcpiOsPrintf ("ArgObj: "); AcpiDmDisplayInternalObject (ObjDesc, WalkState); } #if (!ACPI_REDUCED_HARDWARE) /******************************************************************************* * * FUNCTION: AcpiDbDisplayGpes * * PARAMETERS: None * * RETURN: None * * DESCRIPTION: Display the current GPE structures * ******************************************************************************/ void AcpiDbDisplayGpes ( void) { ACPI_GPE_BLOCK_INFO *GpeBlock; ACPI_GPE_XRUPT_INFO *GpeXruptInfo; ACPI_GPE_EVENT_INFO *GpeEventInfo; ACPI_GPE_REGISTER_INFO *GpeRegisterInfo; char *GpeType; ACPI_GPE_NOTIFY_INFO *Notify; UINT32 GpeIndex; UINT32 Block = 0; UINT32 i; UINT32 j; UINT32 Count; char Buffer[80]; ACPI_BUFFER RetBuf; ACPI_STATUS Status; RetBuf.Length = sizeof (Buffer); RetBuf.Pointer = Buffer; Block = 0; /* Walk the GPE lists */ GpeXruptInfo = AcpiGbl_GpeXruptListHead; while (GpeXruptInfo) { GpeBlock = GpeXruptInfo->GpeBlockListHead; while (GpeBlock) { Status = AcpiGetName (GpeBlock->Node, ACPI_FULL_PATHNAME, &RetBuf); if (ACPI_FAILURE (Status)) { AcpiOsPrintf ("Could not convert name to pathname\n"); } if (GpeBlock->Node == AcpiGbl_FadtGpeDevice) { GpeType = "FADT-defined GPE block"; } else { GpeType = "GPE Block Device"; } AcpiOsPrintf ("\nBlock %u - Info %p DeviceNode %p [%s] - %s\n", Block, GpeBlock, GpeBlock->Node, Buffer, GpeType); AcpiOsPrintf (" Registers: %u (%u GPEs)\n", GpeBlock->RegisterCount, GpeBlock->GpeCount); AcpiOsPrintf (" GPE range: 0x%X to 0x%X on interrupt %u\n", GpeBlock->BlockBaseNumber, GpeBlock->BlockBaseNumber + (GpeBlock->GpeCount - 1), GpeXruptInfo->InterruptNumber); AcpiOsPrintf ( " RegisterInfo: %p Status %8.8X%8.8X Enable %8.8X%8.8X\n", GpeBlock->RegisterInfo, ACPI_FORMAT_UINT64 (GpeBlock->RegisterInfo->StatusAddress.Address), ACPI_FORMAT_UINT64 (GpeBlock->RegisterInfo->EnableAddress.Address)); AcpiOsPrintf (" EventInfo: %p\n", GpeBlock->EventInfo); /* Examine each GPE Register within the block */ for (i = 0; i < GpeBlock->RegisterCount; i++) { GpeRegisterInfo = &GpeBlock->RegisterInfo[i]; AcpiOsPrintf ( " 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)); /* Now look at the individual GPEs in this byte register */ for (j = 0; j < ACPI_GPE_REGISTER_WIDTH; j++) { GpeIndex = (i * ACPI_GPE_REGISTER_WIDTH) + j; GpeEventInfo = &GpeBlock->EventInfo[GpeIndex]; if ((GpeEventInfo->Flags & ACPI_GPE_DISPATCH_MASK) == ACPI_GPE_DISPATCH_NONE) { /* This GPE is not used (no method or handler), ignore it */ continue; } AcpiOsPrintf ( " GPE %.2X: %p RunRefs %2.2X Flags %2.2X (", GpeBlock->BlockBaseNumber + GpeIndex, GpeEventInfo, GpeEventInfo->RuntimeCount, GpeEventInfo->Flags); /* Decode the flags byte */ if (GpeEventInfo->Flags & ACPI_GPE_LEVEL_TRIGGERED) { AcpiOsPrintf ("Level, "); } else { AcpiOsPrintf ("Edge, "); } if (GpeEventInfo->Flags & ACPI_GPE_CAN_WAKE) { AcpiOsPrintf ("CanWake, "); } else { AcpiOsPrintf ("RunOnly, "); } switch (GpeEventInfo->Flags & ACPI_GPE_DISPATCH_MASK) { case ACPI_GPE_DISPATCH_NONE: AcpiOsPrintf ("NotUsed"); break; case ACPI_GPE_DISPATCH_METHOD: AcpiOsPrintf ("Method"); break; case ACPI_GPE_DISPATCH_HANDLER: AcpiOsPrintf ("Handler"); break; case ACPI_GPE_DISPATCH_NOTIFY: Count = 0; Notify = GpeEventInfo->Dispatch.NotifyList; while (Notify) { Count++; Notify = Notify->Next; } AcpiOsPrintf ("Implicit Notify on %u devices", Count); break; default: AcpiOsPrintf ("UNKNOWN: %X", GpeEventInfo->Flags & ACPI_GPE_DISPATCH_MASK); break; } AcpiOsPrintf (")\n"); } } Block++; GpeBlock = GpeBlock->Next; } GpeXruptInfo = GpeXruptInfo->Next; } } #endif /* !ACPI_REDUCED_HARDWARE */ /******************************************************************************* * * FUNCTION: AcpiDbDisplayHandlers * * PARAMETERS: None * * RETURN: None * * DESCRIPTION: Display the currently installed global handlers * ******************************************************************************/ void AcpiDbDisplayHandlers ( void) { ACPI_OPERAND_OBJECT *ObjDesc; ACPI_OPERAND_OBJECT *HandlerObj; ACPI_ADR_SPACE_TYPE SpaceId; UINT32 i; /* Operation region handlers */ AcpiOsPrintf ("\nOperation Region Handlers at the namespace root:\n"); ObjDesc = AcpiNsGetAttachedObject (AcpiGbl_RootNode); if (ObjDesc) { for (i = 0; i < ACPI_ARRAY_LENGTH (AcpiGbl_SpaceIdList); i++) { SpaceId = AcpiGbl_SpaceIdList[i]; HandlerObj = ObjDesc->Device.Handler; AcpiOsPrintf (ACPI_PREDEFINED_PREFIX, AcpiUtGetRegionName ((UINT8) SpaceId), SpaceId); while (HandlerObj) { if (AcpiGbl_SpaceIdList[i] == HandlerObj->AddressSpace.SpaceId) { AcpiOsPrintf (ACPI_HANDLER_PRESENT_STRING, (HandlerObj->AddressSpace.HandlerFlags & ACPI_ADDR_HANDLER_DEFAULT_INSTALLED) ? "Default" : "User", HandlerObj->AddressSpace.Handler); goto FoundHandler; } HandlerObj = HandlerObj->AddressSpace.Next; } /* There is no handler for this SpaceId */ AcpiOsPrintf ("None\n"); FoundHandler:; } /* Find all handlers for user-defined SpaceIDs */ HandlerObj = ObjDesc->Device.Handler; while (HandlerObj) { if (HandlerObj->AddressSpace.SpaceId >= ACPI_USER_REGION_BEGIN) { AcpiOsPrintf (ACPI_PREDEFINED_PREFIX, "User-defined ID", HandlerObj->AddressSpace.SpaceId); AcpiOsPrintf (ACPI_HANDLER_PRESENT_STRING, (HandlerObj->AddressSpace.HandlerFlags & ACPI_ADDR_HANDLER_DEFAULT_INSTALLED) ? "Default" : "User", HandlerObj->AddressSpace.Handler); } HandlerObj = HandlerObj->AddressSpace.Next; } } #if (!ACPI_REDUCED_HARDWARE) /* Fixed event handlers */ AcpiOsPrintf ("\nFixed Event Handlers:\n"); for (i = 0; i < ACPI_NUM_FIXED_EVENTS; i++) { AcpiOsPrintf (ACPI_PREDEFINED_PREFIX, AcpiUtGetEventName (i), i); if (AcpiGbl_FixedEventHandlers[i].Handler) { AcpiOsPrintf (ACPI_HANDLER_PRESENT_STRING, "User", AcpiGbl_FixedEventHandlers[i].Handler); } else { AcpiOsPrintf (ACPI_HANDLER_NOT_PRESENT_STRING, "None"); } } #endif /* !ACPI_REDUCED_HARDWARE */ /* Miscellaneous global handlers */ AcpiOsPrintf ("\nMiscellaneous Global Handlers:\n"); for (i = 0; i < ACPI_ARRAY_LENGTH (AcpiGbl_HandlerList); i++) { AcpiOsPrintf (ACPI_HANDLER_NAME_STRING, AcpiGbl_HandlerList[i].Name); if (AcpiGbl_HandlerList[i].Handler) { AcpiOsPrintf (ACPI_HANDLER_PRESENT_STRING, "User", AcpiGbl_HandlerList[i].Handler); } else { AcpiOsPrintf (ACPI_HANDLER_NOT_PRESENT_STRING, "None"); } } /* Other handlers that are installed throughout the namespace */ AcpiOsPrintf ("\nOperation Region Handlers for specific devices:\n"); (void) AcpiWalkNamespace (ACPI_TYPE_DEVICE, ACPI_ROOT_OBJECT, ACPI_UINT32_MAX, AcpiDbDisplayNonRootHandlers, NULL, NULL, NULL); } /******************************************************************************* * * FUNCTION: AcpiDbDisplayNonRootHandlers * * PARAMETERS: ACPI_WALK_CALLBACK * * RETURN: Status * * DESCRIPTION: Display information about all handlers installed for a * device object. * ******************************************************************************/ static ACPI_STATUS AcpiDbDisplayNonRootHandlers ( ACPI_HANDLE ObjHandle, UINT32 NestingLevel, void *Context, void **ReturnValue) { ACPI_NAMESPACE_NODE *Node = ACPI_CAST_PTR (ACPI_NAMESPACE_NODE, ObjHandle); ACPI_OPERAND_OBJECT *ObjDesc; ACPI_OPERAND_OBJECT *HandlerObj; char *Pathname; ObjDesc = AcpiNsGetAttachedObject (Node); if (!ObjDesc) { return (AE_OK); } Pathname = AcpiNsGetExternalPathname (Node); if (!Pathname) { return (AE_OK); } /* Display all handlers associated with this device */ HandlerObj = ObjDesc->Device.Handler; while (HandlerObj) { AcpiOsPrintf (ACPI_PREDEFINED_PREFIX, AcpiUtGetRegionName ((UINT8) HandlerObj->AddressSpace.SpaceId), HandlerObj->AddressSpace.SpaceId); AcpiOsPrintf (ACPI_HANDLER_PRESENT_STRING2, (HandlerObj->AddressSpace.HandlerFlags & ACPI_ADDR_HANDLER_DEFAULT_INSTALLED) ? "Default" : "User", HandlerObj->AddressSpace.Handler); AcpiOsPrintf (" Device Name: %s (%p)\n", Pathname, Node); HandlerObj = HandlerObj->AddressSpace.Next; } ACPI_FREE (Pathname); return (AE_OK); } #endif /* ACPI_DEBUGGER */ src/acpica/source/components/debugger/dbexec.c000066400000000000000000000663771231470457100217630ustar00rootroot00000000000000/******************************************************************************* * * Module Name: dbexec - debugger control method execution * ******************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #include "acpi.h" #include "accommon.h" #include "acdebug.h" #include "acnamesp.h" #ifdef ACPI_DEBUGGER #define _COMPONENT ACPI_CA_DEBUGGER ACPI_MODULE_NAME ("dbexec") static ACPI_DB_METHOD_INFO AcpiGbl_DbMethodInfo; /* Local prototypes */ static ACPI_STATUS AcpiDbExecuteMethod ( ACPI_DB_METHOD_INFO *Info, ACPI_BUFFER *ReturnObj); static ACPI_STATUS AcpiDbExecuteSetup ( ACPI_DB_METHOD_INFO *Info); static UINT32 AcpiDbGetOutstandingAllocations ( void); static void ACPI_SYSTEM_XFACE AcpiDbMethodThread ( void *Context); static ACPI_STATUS AcpiDbExecutionWalk ( ACPI_HANDLE ObjHandle, UINT32 NestingLevel, void *Context, void **ReturnValue); /******************************************************************************* * * FUNCTION: AcpiDbDeleteObjects * * PARAMETERS: Count - Count of objects in the list * Objects - Array of ACPI_OBJECTs to be deleted * * RETURN: None * * DESCRIPTION: Delete a list of ACPI_OBJECTS. Handles packages and nested * packages via recursion. * ******************************************************************************/ void AcpiDbDeleteObjects ( UINT32 Count, ACPI_OBJECT *Objects) { UINT32 i; for (i = 0; i < Count; i++) { switch (Objects[i].Type) { case ACPI_TYPE_BUFFER: ACPI_FREE (Objects[i].Buffer.Pointer); break; case ACPI_TYPE_PACKAGE: /* Recursive call to delete package elements */ AcpiDbDeleteObjects (Objects[i].Package.Count, Objects[i].Package.Elements); /* Free the elements array */ ACPI_FREE (Objects[i].Package.Elements); break; default: break; } } } /******************************************************************************* * * FUNCTION: AcpiDbExecuteMethod * * PARAMETERS: Info - Valid info segment * ReturnObj - Where to put return object * * RETURN: Status * * DESCRIPTION: Execute a control method. * ******************************************************************************/ static ACPI_STATUS AcpiDbExecuteMethod ( ACPI_DB_METHOD_INFO *Info, ACPI_BUFFER *ReturnObj) { ACPI_STATUS Status; ACPI_OBJECT_LIST ParamObjects; ACPI_OBJECT Params[ACPI_DEBUGGER_MAX_ARGS + 1]; UINT32 i; ACPI_FUNCTION_TRACE (DbExecuteMethod); if (AcpiGbl_DbOutputToFile && !AcpiDbgLevel) { AcpiOsPrintf ("Warning: debug output is not enabled!\n"); } ParamObjects.Count = 0; ParamObjects.Pointer = NULL; /* Pass through any command-line arguments */ if (Info->Args && Info->Args[0]) { /* Get arguments passed on the command line */ for (i = 0; (Info->Args[i] && *(Info->Args[i])); i++) { /* Convert input string (token) to an actual ACPI_OBJECT */ Status = AcpiDbConvertToObject (Info->Types[i], Info->Args[i], &Params[i]); if (ACPI_FAILURE (Status)) { ACPI_EXCEPTION ((AE_INFO, Status, "While parsing method arguments")); goto Cleanup; } } ParamObjects.Count = i; ParamObjects.Pointer = Params; } /* Prepare for a return object of arbitrary size */ ReturnObj->Pointer = AcpiGbl_DbBuffer; ReturnObj->Length = ACPI_DEBUG_BUFFER_SIZE; /* Do the actual method execution */ AcpiGbl_MethodExecuting = TRUE; Status = AcpiEvaluateObject (NULL, Info->Pathname, &ParamObjects, ReturnObj); AcpiGbl_CmSingleStep = FALSE; AcpiGbl_MethodExecuting = FALSE; if (ACPI_FAILURE (Status)) { ACPI_EXCEPTION ((AE_INFO, Status, "while executing %s from debugger", Info->Pathname)); if (Status == AE_BUFFER_OVERFLOW) { ACPI_ERROR ((AE_INFO, "Possible overflow of internal debugger buffer (size 0x%X needed 0x%X)", ACPI_DEBUG_BUFFER_SIZE, (UINT32) ReturnObj->Length)); } } Cleanup: AcpiDbDeleteObjects (ParamObjects.Count, Params); return_ACPI_STATUS (Status); } /******************************************************************************* * * FUNCTION: AcpiDbExecuteSetup * * PARAMETERS: Info - Valid method info * * RETURN: None * * DESCRIPTION: Setup info segment prior to method execution * ******************************************************************************/ static ACPI_STATUS AcpiDbExecuteSetup ( ACPI_DB_METHOD_INFO *Info) { ACPI_STATUS Status; ACPI_FUNCTION_NAME (DbExecuteSetup); /* Catenate the current scope to the supplied name */ Info->Pathname[0] = 0; if ((Info->Name[0] != '\\') && (Info->Name[0] != '/')) { if (AcpiUtSafeStrcat (Info->Pathname, sizeof (Info->Pathname), AcpiGbl_DbScopeBuf)) { Status = AE_BUFFER_OVERFLOW; goto ErrorExit; } } if (AcpiUtSafeStrcat (Info->Pathname, sizeof (Info->Pathname), Info->Name)) { Status = AE_BUFFER_OVERFLOW; goto ErrorExit; } AcpiDbPrepNamestring (Info->Pathname); AcpiDbSetOutputDestination (ACPI_DB_DUPLICATE_OUTPUT); AcpiOsPrintf ("Evaluating %s\n", Info->Pathname); if (Info->Flags & EX_SINGLE_STEP) { AcpiGbl_CmSingleStep = TRUE; AcpiDbSetOutputDestination (ACPI_DB_CONSOLE_OUTPUT); } else { /* No single step, allow redirection to a file */ AcpiDbSetOutputDestination (ACPI_DB_REDIRECTABLE_OUTPUT); } return (AE_OK); ErrorExit: ACPI_EXCEPTION ((AE_INFO, Status, "During setup for method execution")); return (Status); } #ifdef ACPI_DBG_TRACK_ALLOCATIONS UINT32 AcpiDbGetCacheInfo ( ACPI_MEMORY_LIST *Cache) { return (Cache->TotalAllocated - Cache->TotalFreed - Cache->CurrentDepth); } #endif /******************************************************************************* * * FUNCTION: AcpiDbGetOutstandingAllocations * * PARAMETERS: None * * RETURN: Current global allocation count minus cache entries * * DESCRIPTION: Determine the current number of "outstanding" allocations -- * those allocations that have not been freed and also are not * in one of the various object caches. * ******************************************************************************/ static UINT32 AcpiDbGetOutstandingAllocations ( void) { UINT32 Outstanding = 0; #ifdef ACPI_DBG_TRACK_ALLOCATIONS Outstanding += AcpiDbGetCacheInfo (AcpiGbl_StateCache); Outstanding += AcpiDbGetCacheInfo (AcpiGbl_PsNodeCache); Outstanding += AcpiDbGetCacheInfo (AcpiGbl_PsNodeExtCache); Outstanding += AcpiDbGetCacheInfo (AcpiGbl_OperandCache); #endif return (Outstanding); } /******************************************************************************* * * FUNCTION: AcpiDbExecutionWalk * * PARAMETERS: WALK_CALLBACK * * RETURN: Status * * DESCRIPTION: Execute a control method. Name is relative to the current * scope. * ******************************************************************************/ static ACPI_STATUS AcpiDbExecutionWalk ( ACPI_HANDLE ObjHandle, UINT32 NestingLevel, void *Context, void **ReturnValue) { ACPI_OPERAND_OBJECT *ObjDesc; ACPI_NAMESPACE_NODE *Node = (ACPI_NAMESPACE_NODE *) ObjHandle; ACPI_BUFFER ReturnObj; ACPI_STATUS Status; ObjDesc = AcpiNsGetAttachedObject (Node); if (ObjDesc->Method.ParamCount) { return (AE_OK); } ReturnObj.Pointer = NULL; ReturnObj.Length = ACPI_ALLOCATE_BUFFER; AcpiNsPrintNodePathname (Node, "Evaluating"); /* Do the actual method execution */ AcpiOsPrintf ("\n"); AcpiGbl_MethodExecuting = TRUE; Status = AcpiEvaluateObject (Node, NULL, NULL, &ReturnObj); AcpiOsPrintf ("Evaluation of [%4.4s] returned %s\n", AcpiUtGetNodeName (Node), AcpiFormatException (Status)); AcpiGbl_MethodExecuting = FALSE; return (AE_OK); } /******************************************************************************* * * FUNCTION: AcpiDbExecute * * PARAMETERS: Name - Name of method to execute * Args - Parameters to the method * Flags - single step/no single step * * RETURN: None * * DESCRIPTION: Execute a control method. Name is relative to the current * scope. * ******************************************************************************/ void AcpiDbExecute ( char *Name, char **Args, ACPI_OBJECT_TYPE *Types, UINT32 Flags) { ACPI_STATUS Status; ACPI_BUFFER ReturnObj; char *NameString; #ifdef ACPI_DEBUG_OUTPUT UINT32 PreviousAllocations; UINT32 Allocations; /* Memory allocation tracking */ PreviousAllocations = AcpiDbGetOutstandingAllocations (); #endif if (*Name == '*') { (void) AcpiWalkNamespace (ACPI_TYPE_METHOD, ACPI_ROOT_OBJECT, ACPI_UINT32_MAX, AcpiDbExecutionWalk, NULL, NULL, NULL); return; } else { NameString = ACPI_ALLOCATE (ACPI_STRLEN (Name) + 1); if (!NameString) { return; } ACPI_MEMSET (&AcpiGbl_DbMethodInfo, 0, sizeof (ACPI_DB_METHOD_INFO)); ACPI_STRCPY (NameString, Name); AcpiUtStrupr (NameString); AcpiGbl_DbMethodInfo.Name = NameString; AcpiGbl_DbMethodInfo.Args = Args; AcpiGbl_DbMethodInfo.Types = Types; AcpiGbl_DbMethodInfo.Flags = Flags; ReturnObj.Pointer = NULL; ReturnObj.Length = ACPI_ALLOCATE_BUFFER; Status = AcpiDbExecuteSetup (&AcpiGbl_DbMethodInfo); if (ACPI_FAILURE (Status)) { ACPI_FREE (NameString); return; } /* Get the NS node, determines existence also */ Status = AcpiGetHandle (NULL, AcpiGbl_DbMethodInfo.Pathname, &AcpiGbl_DbMethodInfo.Method); if (ACPI_SUCCESS (Status)) { Status = AcpiDbExecuteMethod (&AcpiGbl_DbMethodInfo, &ReturnObj); } ACPI_FREE (NameString); } /* * Allow any handlers in separate threads to complete. * (Such as Notify handlers invoked from AML executed above). */ AcpiOsSleep ((UINT64) 10); #ifdef ACPI_DEBUG_OUTPUT /* Memory allocation tracking */ Allocations = AcpiDbGetOutstandingAllocations () - PreviousAllocations; AcpiDbSetOutputDestination (ACPI_DB_DUPLICATE_OUTPUT); if (Allocations > 0) { AcpiOsPrintf ("0x%X Outstanding allocations after evaluation of %s\n", Allocations, AcpiGbl_DbMethodInfo.Pathname); } #endif if (ACPI_FAILURE (Status)) { AcpiOsPrintf ("Evaluation of %s failed with status %s\n", AcpiGbl_DbMethodInfo.Pathname, AcpiFormatException (Status)); } else { /* Display a return object, if any */ if (ReturnObj.Length) { AcpiOsPrintf ( "Evaluation of %s returned object %p, external buffer length %X\n", AcpiGbl_DbMethodInfo.Pathname, ReturnObj.Pointer, (UINT32) ReturnObj.Length); AcpiDbDumpExternalObject (ReturnObj.Pointer, 1); /* Dump a _PLD buffer if present */ if (ACPI_COMPARE_NAME ((ACPI_CAST_PTR (ACPI_NAMESPACE_NODE, AcpiGbl_DbMethodInfo.Method)->Name.Ascii), METHOD_NAME__PLD)) { AcpiDbDumpPldBuffer (ReturnObj.Pointer); } } else { AcpiOsPrintf ("No object was returned from evaluation of %s\n", AcpiGbl_DbMethodInfo.Pathname); } } AcpiDbSetOutputDestination (ACPI_DB_CONSOLE_OUTPUT); } /******************************************************************************* * * FUNCTION: AcpiDbMethodThread * * PARAMETERS: Context - Execution info segment * * RETURN: None * * DESCRIPTION: Debugger execute thread. Waits for a command line, then * simply dispatches it. * ******************************************************************************/ static void ACPI_SYSTEM_XFACE AcpiDbMethodThread ( void *Context) { ACPI_STATUS Status; ACPI_DB_METHOD_INFO *Info = Context; ACPI_DB_METHOD_INFO LocalInfo; UINT32 i; UINT8 Allow; ACPI_BUFFER ReturnObj; /* * AcpiGbl_DbMethodInfo.Arguments will be passed as method arguments. * Prevent AcpiGbl_DbMethodInfo from being modified by multiple threads * concurrently. * * Note: The arguments we are passing are used by the ASL test suite * (aslts). Do not change them without updating the tests. */ (void) AcpiOsWaitSemaphore (Info->InfoGate, 1, ACPI_WAIT_FOREVER); if (Info->InitArgs) { AcpiDbUint32ToHexString (Info->NumCreated, Info->IndexOfThreadStr); AcpiDbUint32ToHexString ((UINT32) AcpiOsGetThreadId (), Info->IdOfThreadStr); } if (Info->Threads && (Info->NumCreated < Info->NumThreads)) { Info->Threads[Info->NumCreated++] = AcpiOsGetThreadId(); } LocalInfo = *Info; LocalInfo.Args = LocalInfo.Arguments; LocalInfo.Arguments[0] = LocalInfo.NumThreadsStr; LocalInfo.Arguments[1] = LocalInfo.IdOfThreadStr; LocalInfo.Arguments[2] = LocalInfo.IndexOfThreadStr; LocalInfo.Arguments[3] = NULL; LocalInfo.Types = LocalInfo.ArgTypes; (void) AcpiOsSignalSemaphore (Info->InfoGate, 1); for (i = 0; i < Info->NumLoops; i++) { Status = AcpiDbExecuteMethod (&LocalInfo, &ReturnObj); if (ACPI_FAILURE (Status)) { AcpiOsPrintf ("%s During evaluation of %s at iteration %X\n", AcpiFormatException (Status), Info->Pathname, i); if (Status == AE_ABORT_METHOD) { break; } } #if 0 if ((i % 100) == 0) { AcpiOsPrintf ("%u loops, Thread 0x%x\n", i, AcpiOsGetThreadId ()); } if (ReturnObj.Length) { AcpiOsPrintf ("Evaluation of %s returned object %p Buflen %X\n", Info->Pathname, ReturnObj.Pointer, (UINT32) ReturnObj.Length); AcpiDbDumpExternalObject (ReturnObj.Pointer, 1); } #endif } /* Signal our completion */ Allow = 0; (void) AcpiOsWaitSemaphore (Info->ThreadCompleteGate, 1, ACPI_WAIT_FOREVER); Info->NumCompleted++; if (Info->NumCompleted == Info->NumThreads) { /* Do signal for main thread once only */ Allow = 1; } (void) AcpiOsSignalSemaphore (Info->ThreadCompleteGate, 1); if (Allow) { Status = AcpiOsSignalSemaphore (Info->MainThreadGate, 1); if (ACPI_FAILURE (Status)) { AcpiOsPrintf ("Could not signal debugger thread sync semaphore, %s\n", AcpiFormatException (Status)); } } } /******************************************************************************* * * FUNCTION: AcpiDbCreateExecutionThreads * * PARAMETERS: NumThreadsArg - Number of threads to create * NumLoopsArg - Loop count for the thread(s) * MethodNameArg - Control method to execute * * RETURN: None * * DESCRIPTION: Create threads to execute method(s) * ******************************************************************************/ void AcpiDbCreateExecutionThreads ( char *NumThreadsArg, char *NumLoopsArg, char *MethodNameArg) { ACPI_STATUS Status; UINT32 NumThreads; UINT32 NumLoops; UINT32 i; UINT32 Size; ACPI_MUTEX MainThreadGate; ACPI_MUTEX ThreadCompleteGate; ACPI_MUTEX InfoGate; /* Get the arguments */ NumThreads = ACPI_STRTOUL (NumThreadsArg, NULL, 0); NumLoops = ACPI_STRTOUL (NumLoopsArg, NULL, 0); if (!NumThreads || !NumLoops) { AcpiOsPrintf ("Bad argument: Threads %X, Loops %X\n", NumThreads, NumLoops); return; } /* * Create the semaphore for synchronization of * the created threads with the main thread. */ Status = AcpiOsCreateSemaphore (1, 0, &MainThreadGate); if (ACPI_FAILURE (Status)) { AcpiOsPrintf ("Could not create semaphore for synchronization with the main thread, %s\n", AcpiFormatException (Status)); return; } /* * Create the semaphore for synchronization * between the created threads. */ Status = AcpiOsCreateSemaphore (1, 1, &ThreadCompleteGate); if (ACPI_FAILURE (Status)) { AcpiOsPrintf ("Could not create semaphore for synchronization between the created threads, %s\n", AcpiFormatException (Status)); (void) AcpiOsDeleteSemaphore (MainThreadGate); return; } Status = AcpiOsCreateSemaphore (1, 1, &InfoGate); if (ACPI_FAILURE (Status)) { AcpiOsPrintf ("Could not create semaphore for synchronization of AcpiGbl_DbMethodInfo, %s\n", AcpiFormatException (Status)); (void) AcpiOsDeleteSemaphore (ThreadCompleteGate); (void) AcpiOsDeleteSemaphore (MainThreadGate); return; } ACPI_MEMSET (&AcpiGbl_DbMethodInfo, 0, sizeof (ACPI_DB_METHOD_INFO)); /* Array to store IDs of threads */ AcpiGbl_DbMethodInfo.NumThreads = NumThreads; Size = sizeof (ACPI_THREAD_ID) * AcpiGbl_DbMethodInfo.NumThreads; AcpiGbl_DbMethodInfo.Threads = AcpiOsAllocate (Size); if (AcpiGbl_DbMethodInfo.Threads == NULL) { AcpiOsPrintf ("No memory for thread IDs array\n"); (void) AcpiOsDeleteSemaphore (MainThreadGate); (void) AcpiOsDeleteSemaphore (ThreadCompleteGate); (void) AcpiOsDeleteSemaphore (InfoGate); return; } ACPI_MEMSET (AcpiGbl_DbMethodInfo.Threads, 0, Size); /* Setup the context to be passed to each thread */ AcpiGbl_DbMethodInfo.Name = MethodNameArg; AcpiGbl_DbMethodInfo.Flags = 0; AcpiGbl_DbMethodInfo.NumLoops = NumLoops; AcpiGbl_DbMethodInfo.MainThreadGate = MainThreadGate; AcpiGbl_DbMethodInfo.ThreadCompleteGate = ThreadCompleteGate; AcpiGbl_DbMethodInfo.InfoGate = InfoGate; /* Init arguments to be passed to method */ AcpiGbl_DbMethodInfo.InitArgs = 1; AcpiGbl_DbMethodInfo.Args = AcpiGbl_DbMethodInfo.Arguments; AcpiGbl_DbMethodInfo.Arguments[0] = AcpiGbl_DbMethodInfo.NumThreadsStr; AcpiGbl_DbMethodInfo.Arguments[1] = AcpiGbl_DbMethodInfo.IdOfThreadStr; AcpiGbl_DbMethodInfo.Arguments[2] = AcpiGbl_DbMethodInfo.IndexOfThreadStr; AcpiGbl_DbMethodInfo.Arguments[3] = NULL; AcpiGbl_DbMethodInfo.Types = AcpiGbl_DbMethodInfo.ArgTypes; AcpiGbl_DbMethodInfo.ArgTypes[0] = ACPI_TYPE_INTEGER; AcpiGbl_DbMethodInfo.ArgTypes[1] = ACPI_TYPE_INTEGER; AcpiGbl_DbMethodInfo.ArgTypes[2] = ACPI_TYPE_INTEGER; AcpiDbUint32ToHexString (NumThreads, AcpiGbl_DbMethodInfo.NumThreadsStr); Status = AcpiDbExecuteSetup (&AcpiGbl_DbMethodInfo); if (ACPI_FAILURE (Status)) { goto CleanupAndExit; } /* Get the NS node, determines existence also */ Status = AcpiGetHandle (NULL, AcpiGbl_DbMethodInfo.Pathname, &AcpiGbl_DbMethodInfo.Method); if (ACPI_FAILURE (Status)) { AcpiOsPrintf ("%s Could not get handle for %s\n", AcpiFormatException (Status), AcpiGbl_DbMethodInfo.Pathname); goto CleanupAndExit; } /* Create the threads */ AcpiOsPrintf ("Creating %X threads to execute %X times each\n", NumThreads, NumLoops); for (i = 0; i < (NumThreads); i++) { Status = AcpiOsExecute (OSL_DEBUGGER_THREAD, AcpiDbMethodThread, &AcpiGbl_DbMethodInfo); if (ACPI_FAILURE (Status)) { break; } } /* Wait for all threads to complete */ (void) AcpiOsWaitSemaphore (MainThreadGate, 1, ACPI_WAIT_FOREVER); AcpiDbSetOutputDestination (ACPI_DB_DUPLICATE_OUTPUT); AcpiOsPrintf ("All threads (%X) have completed\n", NumThreads); AcpiDbSetOutputDestination (ACPI_DB_CONSOLE_OUTPUT); CleanupAndExit: /* Cleanup and exit */ (void) AcpiOsDeleteSemaphore (MainThreadGate); (void) AcpiOsDeleteSemaphore (ThreadCompleteGate); (void) AcpiOsDeleteSemaphore (InfoGate); AcpiOsFree (AcpiGbl_DbMethodInfo.Threads); AcpiGbl_DbMethodInfo.Threads = NULL; } #endif /* ACPI_DEBUGGER */ src/acpica/source/components/debugger/dbfileio.c000066400000000000000000000477101231470457100222740ustar00rootroot00000000000000/******************************************************************************* * * Module Name: dbfileio - Debugger file I/O commands. These can't usually * be used when running the debugger in Ring 0 (Kernel mode) * ******************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #include "acpi.h" #include "accommon.h" #include "acdebug.h" #ifdef ACPI_APPLICATION #include "actables.h" #endif #ifdef ACPI_ASL_COMPILER #include "aslcompiler.h" #endif #if (defined ACPI_DEBUGGER || defined ACPI_DISASSEMBLER) #define _COMPONENT ACPI_CA_DEBUGGER ACPI_MODULE_NAME ("dbfileio") #ifdef ACPI_DEBUGGER /* Local prototypes */ #ifdef ACPI_APPLICATION static ACPI_STATUS AcpiDbCheckTextModeCorruption ( UINT8 *Table, UINT32 TableLength, UINT32 FileLength); #endif /******************************************************************************* * * FUNCTION: AcpiDbCloseDebugFile * * PARAMETERS: None * * RETURN: None * * DESCRIPTION: If open, close the current debug output file * ******************************************************************************/ void AcpiDbCloseDebugFile ( void) { #ifdef ACPI_APPLICATION if (AcpiGbl_DebugFile) { fclose (AcpiGbl_DebugFile); AcpiGbl_DebugFile = NULL; AcpiGbl_DbOutputToFile = FALSE; AcpiOsPrintf ("Debug output file %s closed\n", AcpiGbl_DbDebugFilename); } #endif } /******************************************************************************* * * FUNCTION: AcpiDbOpenDebugFile * * PARAMETERS: Name - Filename to open * * RETURN: None * * DESCRIPTION: Open a file where debug output will be directed. * ******************************************************************************/ void AcpiDbOpenDebugFile ( char *Name) { #ifdef ACPI_APPLICATION AcpiDbCloseDebugFile (); AcpiGbl_DebugFile = fopen (Name, "w+"); if (!AcpiGbl_DebugFile) { AcpiOsPrintf ("Could not open debug file %s\n", Name); return; } AcpiOsPrintf ("Debug output file %s opened\n", Name); ACPI_STRNCPY (AcpiGbl_DbDebugFilename, Name, sizeof (AcpiGbl_DbDebugFilename)); AcpiGbl_DbOutputToFile = TRUE; #endif } #endif #ifdef ACPI_APPLICATION #include "acapps.h" /******************************************************************************* * * FUNCTION: AcpiDbCheckTextModeCorruption * * PARAMETERS: Table - Table buffer * TableLength - Length of table from the table header * FileLength - Length of the file that contains the table * * RETURN: Status * * DESCRIPTION: Check table for text mode file corruption where all linefeed * characters (LF) have been replaced by carriage return linefeed * pairs (CR/LF). * ******************************************************************************/ static ACPI_STATUS AcpiDbCheckTextModeCorruption ( UINT8 *Table, UINT32 TableLength, UINT32 FileLength) { UINT32 i; UINT32 Pairs = 0; if (TableLength != FileLength) { ACPI_WARNING ((AE_INFO, "File length (0x%X) is not the same as the table length (0x%X)", FileLength, TableLength)); } /* Scan entire table to determine if each LF has been prefixed with a CR */ for (i = 1; i < FileLength; i++) { if (Table[i] == 0x0A) { if (Table[i - 1] != 0x0D) { /* The LF does not have a preceding CR, table not corrupted */ return (AE_OK); } else { /* Found a CR/LF pair */ Pairs++; } i++; } } if (!Pairs) { return (AE_OK); } /* * Entire table scanned, each CR is part of a CR/LF pair -- * meaning that the table was treated as a text file somewhere. * * NOTE: We can't "fix" the table, because any existing CR/LF pairs in the * original table are left untouched by the text conversion process -- * meaning that we cannot simply replace CR/LF pairs with LFs. */ AcpiOsPrintf ("Table has been corrupted by text mode conversion\n"); AcpiOsPrintf ("All LFs (%u) were changed to CR/LF pairs\n", Pairs); AcpiOsPrintf ("Table cannot be repaired!\n"); return (AE_BAD_VALUE); } /******************************************************************************* * * FUNCTION: AcpiDbReadTable * * PARAMETERS: fp - File that contains table * Table - Return value, buffer with table * TableLength - Return value, length of table * * RETURN: Status * * DESCRIPTION: Load the DSDT from the file pointer * ******************************************************************************/ static ACPI_STATUS AcpiDbReadTable ( FILE *fp, ACPI_TABLE_HEADER **Table, UINT32 *TableLength) { ACPI_TABLE_HEADER TableHeader; UINT32 Actual; ACPI_STATUS Status; UINT32 FileSize; BOOLEAN StandardHeader = TRUE; /* Get the file size */ FileSize = CmGetFileSize (fp); if (FileSize == ACPI_UINT32_MAX) { return (AE_ERROR); } if (FileSize < 4) { return (AE_BAD_HEADER); } /* Read the signature */ if (fread (&TableHeader, 1, 4, fp) != 4) { AcpiOsPrintf ("Could not read the table signature\n"); return (AE_BAD_HEADER); } fseek (fp, 0, SEEK_SET); /* The RSDP table does not have standard ACPI header */ if (ACPI_COMPARE_NAME (TableHeader.Signature, "RSD ")) { *TableLength = FileSize; StandardHeader = FALSE; } else { /* Read the table header */ if (fread (&TableHeader, 1, sizeof (ACPI_TABLE_HEADER), fp) != sizeof (ACPI_TABLE_HEADER)) { AcpiOsPrintf ("Could not read the table header\n"); return (AE_BAD_HEADER); } #if 0 /* Validate the table header/length */ Status = AcpiTbValidateTableHeader (&TableHeader); if (ACPI_FAILURE (Status)) { AcpiOsPrintf ("Table header is invalid!\n"); return (Status); } #endif /* File size must be at least as long as the Header-specified length */ if (TableHeader.Length > FileSize) { AcpiOsPrintf ( "TableHeader length [0x%X] greater than the input file size [0x%X]\n", TableHeader.Length, FileSize); #ifdef ACPI_ASL_COMPILER Status = FlCheckForAscii (fp, NULL, FALSE); if (ACPI_SUCCESS (Status)) { AcpiOsPrintf ("File appears to be ASCII only, must be binary\n", TableHeader.Length, FileSize); } #endif return (AE_BAD_HEADER); } #ifdef ACPI_OBSOLETE_CODE /* We only support a limited number of table types */ if (!ACPI_COMPARE_NAME ((char *) TableHeader.Signature, ACPI_SIG_DSDT) && !ACPI_COMPARE_NAME ((char *) TableHeader.Signature, ACPI_SIG_PSDT) && !ACPI_COMPARE_NAME ((char *) TableHeader.Signature, ACPI_SIG_SSDT)) { AcpiOsPrintf ("Table signature [%4.4s] is invalid or not supported\n", (char *) TableHeader.Signature); ACPI_DUMP_BUFFER (&TableHeader, sizeof (ACPI_TABLE_HEADER)); return (AE_ERROR); } #endif *TableLength = TableHeader.Length; } /* Allocate a buffer for the table */ *Table = AcpiOsAllocate ((size_t) FileSize); if (!*Table) { AcpiOsPrintf ( "Could not allocate memory for ACPI table %4.4s (size=0x%X)\n", TableHeader.Signature, *TableLength); return (AE_NO_MEMORY); } /* Get the rest of the table */ fseek (fp, 0, SEEK_SET); Actual = fread (*Table, 1, (size_t) FileSize, fp); if (Actual == FileSize) { if (StandardHeader) { /* Now validate the checksum */ Status = AcpiTbVerifyChecksum ((void *) *Table, ACPI_CAST_PTR (ACPI_TABLE_HEADER, *Table)->Length); if (Status == AE_BAD_CHECKSUM) { Status = AcpiDbCheckTextModeCorruption ((UINT8 *) *Table, FileSize, (*Table)->Length); return (Status); } } return (AE_OK); } if (Actual > 0) { AcpiOsPrintf ("Warning - reading table, asked for %X got %X\n", FileSize, Actual); return (AE_OK); } AcpiOsPrintf ("Error - could not read the table file\n"); AcpiOsFree (*Table); *Table = NULL; *TableLength = 0; return (AE_ERROR); } /******************************************************************************* * * FUNCTION: AeLocalLoadTable * * PARAMETERS: Table - pointer to a buffer containing the entire * table to be loaded * * RETURN: Status * * DESCRIPTION: This function is called to load a table from the caller's * buffer. The buffer must contain an entire ACPI Table including * a valid header. The header fields will be verified, and if it * is determined that the table is invalid, the call will fail. * ******************************************************************************/ static ACPI_STATUS AeLocalLoadTable ( ACPI_TABLE_HEADER *Table) { ACPI_STATUS Status = AE_OK; /* ACPI_TABLE_DESC TableInfo; */ ACPI_FUNCTION_TRACE (AeLocalLoadTable); #if 0 if (!Table) { return_ACPI_STATUS (AE_BAD_PARAMETER); } TableInfo.Pointer = Table; Status = AcpiTbRecognizeTable (&TableInfo, ACPI_TABLE_ALL); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } /* Install the new table into the local data structures */ Status = AcpiTbInitTableDescriptor (&TableInfo); if (ACPI_FAILURE (Status)) { if (Status == AE_ALREADY_EXISTS) { /* Table already exists, no error */ Status = AE_OK; } /* Free table allocated by AcpiTbGetTable */ AcpiTbDeleteSingleTable (&TableInfo); return_ACPI_STATUS (Status); } #if (!defined (ACPI_NO_METHOD_EXECUTION) && !defined (ACPI_CONSTANT_EVAL_ONLY)) Status = AcpiNsLoadTable (TableInfo.InstalledDesc, AcpiGbl_RootNode); if (ACPI_FAILURE (Status)) { /* Uninstall table and free the buffer */ AcpiTbDeleteTablesByType (ACPI_TABLE_ID_DSDT); return_ACPI_STATUS (Status); } #endif #endif return_ACPI_STATUS (Status); } /******************************************************************************* * * FUNCTION: AcpiDbReadTableFromFile * * PARAMETERS: Filename - File where table is located * Table - Where a pointer to the table is returned * * RETURN: Status * * DESCRIPTION: Get an ACPI table from a file * ******************************************************************************/ ACPI_STATUS AcpiDbReadTableFromFile ( char *Filename, ACPI_TABLE_HEADER **Table) { FILE *File; UINT32 FileSize; UINT32 TableLength; ACPI_STATUS Status = AE_ERROR; /* Open the file, get current size */ File = fopen (Filename, "rb"); if (!File) { perror ("Could not open input file"); return (Status); } FileSize = CmGetFileSize (File); if (FileSize == ACPI_UINT32_MAX) { goto Exit; } /* Get the entire file */ fprintf (stderr, "Loading Acpi table from file %10s - Length %.8u (%06X)\n", Filename, FileSize, FileSize); Status = AcpiDbReadTable (File, Table, &TableLength); if (ACPI_FAILURE (Status)) { AcpiOsPrintf ("Could not get table from the file\n"); } Exit: fclose(File); return (Status); } #endif /******************************************************************************* * * FUNCTION: AcpiDbGetTableFromFile * * PARAMETERS: Filename - File where table is located * ReturnTable - Where a pointer to the table is returned * * RETURN: Status * * DESCRIPTION: Load an ACPI table from a file * ******************************************************************************/ ACPI_STATUS AcpiDbGetTableFromFile ( char *Filename, ACPI_TABLE_HEADER **ReturnTable) { #ifdef ACPI_APPLICATION ACPI_STATUS Status; ACPI_TABLE_HEADER *Table; BOOLEAN IsAmlTable = TRUE; Status = AcpiDbReadTableFromFile (Filename, &Table); if (ACPI_FAILURE (Status)) { return (Status); } #ifdef ACPI_DATA_TABLE_DISASSEMBLY IsAmlTable = AcpiUtIsAmlTable (Table); #endif if (IsAmlTable) { /* Attempt to recognize and install the table */ Status = AeLocalLoadTable (Table); if (ACPI_FAILURE (Status)) { if (Status == AE_ALREADY_EXISTS) { AcpiOsPrintf ("Table %4.4s is already installed\n", Table->Signature); } else { AcpiOsPrintf ("Could not install table, %s\n", AcpiFormatException (Status)); } return (Status); } AcpiTbPrintTableHeader (0, Table); fprintf (stderr, "Acpi table [%4.4s] successfully installed and loaded\n", Table->Signature); } AcpiGbl_AcpiHardwarePresent = FALSE; if (ReturnTable) { *ReturnTable = Table; } #endif /* ACPI_APPLICATION */ return (AE_OK); } #endif /* ACPI_DEBUGGER */ src/acpica/source/components/debugger/dbhistry.c000066400000000000000000000272151231470457100223450ustar00rootroot00000000000000/****************************************************************************** * * Module Name: dbhistry - debugger HISTORY command * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #include "acpi.h" #include "accommon.h" #include "acdebug.h" #ifdef ACPI_DEBUGGER #define _COMPONENT ACPI_CA_DEBUGGER ACPI_MODULE_NAME ("dbhistry") #define HI_NO_HISTORY 0 #define HI_RECORD_HISTORY 1 #define HISTORY_SIZE 40 typedef struct HistoryInfo { char *Command; UINT32 CmdNum; } HISTORY_INFO; static HISTORY_INFO AcpiGbl_HistoryBuffer[HISTORY_SIZE]; static UINT16 AcpiGbl_LoHistory = 0; static UINT16 AcpiGbl_NumHistory = 0; static UINT16 AcpiGbl_NextHistoryIndex = 0; UINT32 AcpiGbl_NextCmdNum = 1; /******************************************************************************* * * FUNCTION: AcpiDbAddToHistory * * PARAMETERS: CommandLine - Command to add * * RETURN: None * * DESCRIPTION: Add a command line to the history buffer. * ******************************************************************************/ void AcpiDbAddToHistory ( char *CommandLine) { UINT16 CmdLen; UINT16 BufferLen; /* Put command into the next available slot */ CmdLen = (UINT16) ACPI_STRLEN (CommandLine); if (!CmdLen) { return; } if (AcpiGbl_HistoryBuffer[AcpiGbl_NextHistoryIndex].Command != NULL) { BufferLen = (UINT16) ACPI_STRLEN ( AcpiGbl_HistoryBuffer[AcpiGbl_NextHistoryIndex].Command); if (CmdLen > BufferLen) { AcpiOsFree (AcpiGbl_HistoryBuffer[AcpiGbl_NextHistoryIndex]. Command); AcpiGbl_HistoryBuffer[AcpiGbl_NextHistoryIndex].Command = AcpiOsAllocate (CmdLen + 1); } } else { AcpiGbl_HistoryBuffer[AcpiGbl_NextHistoryIndex].Command = AcpiOsAllocate (CmdLen + 1); } ACPI_STRCPY (AcpiGbl_HistoryBuffer[AcpiGbl_NextHistoryIndex].Command, CommandLine); AcpiGbl_HistoryBuffer[AcpiGbl_NextHistoryIndex].CmdNum = AcpiGbl_NextCmdNum; /* Adjust indexes */ if ((AcpiGbl_NumHistory == HISTORY_SIZE) && (AcpiGbl_NextHistoryIndex == AcpiGbl_LoHistory)) { AcpiGbl_LoHistory++; if (AcpiGbl_LoHistory >= HISTORY_SIZE) { AcpiGbl_LoHistory = 0; } } AcpiGbl_NextHistoryIndex++; if (AcpiGbl_NextHistoryIndex >= HISTORY_SIZE) { AcpiGbl_NextHistoryIndex = 0; } AcpiGbl_NextCmdNum++; if (AcpiGbl_NumHistory < HISTORY_SIZE) { AcpiGbl_NumHistory++; } } /******************************************************************************* * * FUNCTION: AcpiDbDisplayHistory * * PARAMETERS: None * * RETURN: None * * DESCRIPTION: Display the contents of the history buffer * ******************************************************************************/ void AcpiDbDisplayHistory ( void) { UINT32 i; UINT16 HistoryIndex; HistoryIndex = AcpiGbl_LoHistory; /* Dump entire history buffer */ for (i = 0; i < AcpiGbl_NumHistory; i++) { if (AcpiGbl_HistoryBuffer[HistoryIndex].Command) { AcpiOsPrintf ("%3ld %s\n", AcpiGbl_HistoryBuffer[HistoryIndex].CmdNum, AcpiGbl_HistoryBuffer[HistoryIndex].Command); } HistoryIndex++; if (HistoryIndex >= HISTORY_SIZE) { HistoryIndex = 0; } } } /******************************************************************************* * * FUNCTION: AcpiDbGetFromHistory * * PARAMETERS: CommandNumArg - String containing the number of the * command to be retrieved * * RETURN: Pointer to the retrieved command. Null on error. * * DESCRIPTION: Get a command from the history buffer * ******************************************************************************/ char * AcpiDbGetFromHistory ( char *CommandNumArg) { UINT32 CmdNum; if (CommandNumArg == NULL) { CmdNum = AcpiGbl_NextCmdNum - 1; } else { CmdNum = ACPI_STRTOUL (CommandNumArg, NULL, 0); } return (AcpiDbGetHistoryByIndex (CmdNum)); } /******************************************************************************* * * FUNCTION: AcpiDbGetHistoryByIndex * * PARAMETERS: CmdNum - Index of the desired history entry. * Values are 0...(AcpiGbl_NextCmdNum - 1) * * RETURN: Pointer to the retrieved command. Null on error. * * DESCRIPTION: Get a command from the history buffer * ******************************************************************************/ char * AcpiDbGetHistoryByIndex ( UINT32 CmdNum) { UINT32 i; UINT16 HistoryIndex; /* Search history buffer */ HistoryIndex = AcpiGbl_LoHistory; for (i = 0; i < AcpiGbl_NumHistory; i++) { if (AcpiGbl_HistoryBuffer[HistoryIndex].CmdNum == CmdNum) { /* Found the command, return it */ return (AcpiGbl_HistoryBuffer[HistoryIndex].Command); } /* History buffer is circular */ HistoryIndex++; if (HistoryIndex >= HISTORY_SIZE) { HistoryIndex = 0; } } AcpiOsPrintf ("Invalid history number: %u\n", HistoryIndex); return (NULL); } #endif /* ACPI_DEBUGGER */ src/acpica/source/components/debugger/dbinput.c000066400000000000000000001151131231470457100221550ustar00rootroot00000000000000/******************************************************************************* * * Module Name: dbinput - user front-end to the AML debugger * ******************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #include "acpi.h" #include "accommon.h" #include "acdebug.h" #ifdef ACPI_DEBUGGER #define _COMPONENT ACPI_CA_DEBUGGER ACPI_MODULE_NAME ("dbinput") /* Local prototypes */ static UINT32 AcpiDbGetLine ( char *InputBuffer); static UINT32 AcpiDbMatchCommand ( char *UserCommand); static void AcpiDbSingleThread ( void); static void AcpiDbDisplayCommandInfo ( char *Command, BOOLEAN DisplayAll); static void AcpiDbDisplayHelp ( char *Command); static BOOLEAN AcpiDbMatchCommandHelp ( char *Command, const ACPI_DB_COMMAND_HELP *Help); /* * Top-level debugger commands. * * This list of commands must match the string table below it */ enum AcpiExDebuggerCommands { CMD_NOT_FOUND = 0, CMD_NULL, CMD_ALLOCATIONS, CMD_ARGS, CMD_ARGUMENTS, CMD_BREAKPOINT, CMD_BUSINFO, CMD_CALL, CMD_CLOSE, CMD_DEBUG, CMD_DISASSEMBLE, CMD_DISASM, CMD_DUMP, CMD_ENABLEACPI, CMD_EVALUATE, CMD_EVENT, CMD_EXECUTE, CMD_EXIT, CMD_FIND, CMD_GO, CMD_GPE, CMD_GPES, CMD_HANDLERS, CMD_HELP, CMD_HELP2, CMD_HISTORY, CMD_HISTORY_EXE, CMD_HISTORY_LAST, CMD_INFORMATION, CMD_INTEGRITY, CMD_INTO, CMD_LEVEL, CMD_LIST, CMD_LOAD, CMD_LOCALS, CMD_LOCKS, CMD_METHODS, CMD_NAMESPACE, CMD_NOTIFY, CMD_OBJECTS, CMD_OPEN, CMD_OSI, CMD_OWNER, CMD_PATHS, CMD_PREDEFINED, CMD_PREFIX, CMD_QUIT, CMD_REFERENCES, CMD_RESOURCES, CMD_RESULTS, CMD_SCI, CMD_SET, CMD_SLEEP, CMD_STATS, CMD_STOP, CMD_TABLES, CMD_TEMPLATE, CMD_TERMINATE, CMD_TEST, CMD_THREADS, CMD_TRACE, CMD_TREE, CMD_TYPE, CMD_UNLOAD }; #define CMD_FIRST_VALID 2 /* Second parameter is the required argument count */ static const ACPI_DB_COMMAND_INFO AcpiGbl_DbCommands[] = { {"", 0}, {"", 0}, {"ALLOCATIONS", 0}, {"ARGS", 0}, {"ARGUMENTS", 0}, {"BREAKPOINT", 1}, {"BUSINFO", 0}, {"CALL", 0}, {"CLOSE", 0}, {"DEBUG", 1}, {"DISASSEMBLE", 1}, {"DISASM", 1}, {"DUMP", 1}, {"ENABLEACPI", 0}, {"EVALUATE", 1}, {"EVENT", 1}, {"EXECUTE", 1}, {"EXIT", 0}, {"FIND", 1}, {"GO", 0}, {"GPE", 2}, {"GPES", 0}, {"HANDLERS", 0}, {"HELP", 0}, {"?", 0}, {"HISTORY", 0}, {"!", 1}, {"!!", 0}, {"INFORMATION", 0}, {"INTEGRITY", 0}, {"INTO", 0}, {"LEVEL", 0}, {"LIST", 0}, {"LOAD", 1}, {"LOCALS", 0}, {"LOCKS", 0}, {"METHODS", 0}, {"NAMESPACE", 0}, {"NOTIFY", 2}, {"OBJECTS", 1}, {"OPEN", 1}, {"OSI", 0}, {"OWNER", 1}, {"PATHS", 0}, {"PREDEFINED", 0}, {"PREFIX", 0}, {"QUIT", 0}, {"REFERENCES", 1}, {"RESOURCES", 0}, {"RESULTS", 0}, {"SCI", 0}, {"SET", 3}, {"SLEEP", 0}, {"STATS", 1}, {"STOP", 0}, {"TABLES", 0}, {"TEMPLATE", 1}, {"TERMINATE", 0}, {"TEST", 1}, {"THREADS", 3}, {"TRACE", 1}, {"TREE", 0}, {"TYPE", 1}, {"UNLOAD", 1}, {NULL, 0} }; /* * Help for all debugger commands. First argument is the number of lines * of help to output for the command. */ static const ACPI_DB_COMMAND_HELP AcpiGbl_DbCommandHelp[] = { {0, "\nGeneral-Purpose Commands:", "\n"}, {1, " Allocations", "Display list of current memory allocations\n"}, {2, " Dump
|", "\n"}, {0, " [Byte|Word|Dword|Qword]", "Display ACPI objects or memory\n"}, {1, " EnableAcpi", "Enable ACPI (hardware) mode\n"}, {1, " Handlers", "Info about global handlers\n"}, {1, " Help [Command]", "This help screen or individual command\n"}, {1, " History", "Display command history buffer\n"}, {1, " Level ] [console]", "Get/Set debug level for file or console\n"}, {1, " Locks", "Current status of internal mutexes\n"}, {1, " Osi [Install|Remove ]", "Display or modify global _OSI list\n"}, {1, " Quit or Exit", "Exit this command\n"}, {8, " Stats ", "Display namespace and memory statistics\n"}, {1, " Allocations", "Display list of current memory allocations\n"}, {1, " Memory", "Dump internal memory lists\n"}, {1, " Misc", "Namespace search and mutex stats\n"}, {1, " Objects", "Summary of namespace objects\n"}, {1, " Sizes", "Sizes for each of the internal objects\n"}, {1, " Stack", "Display CPU stack usage\n"}, {1, " Tables", "Info about current ACPI table(s)\n"}, {1, " Tables", "Display info about loaded ACPI tables\n"}, {1, " Unload ", "Unload an ACPI table via namespace object\n"}, {1, " ! ", "Execute command from history buffer\n"}, {1, " !!", "Execute last command again\n"}, {0, "\nNamespace Access Commands:", "\n"}, {1, " Businfo", "Display system bus info\n"}, {1, " Disassemble ", "Disassemble a control method\n"}, {1, " Find (? is wildcard)", "Find ACPI name(s) with wildcards\n"}, {1, " Integrity", "Validate namespace integrity\n"}, {1, " Methods", "Display list of loaded control methods\n"}, {1, " Namespace [Object] [Depth]", "Display loaded namespace tree/subtree\n"}, {1, " Notify ", "Send a notification on Object\n"}, {1, " Objects ", "Display all objects of the given type\n"}, {1, " Owner [Depth]", "Display loaded namespace by object owner\n"}, {1, " Paths", "Display full pathnames of namespace objects\n"}, {1, " Predefined", "Check all predefined names\n"}, {1, " Prefix []", "Set or Get current execution prefix\n"}, {1, " References ", "Find all references to object at addr\n"}, {1, " Resources [DeviceName]", "Display Device resources (no arg = all devices)\n"}, {1, " Set N ", "Set value for named integer\n"}, {1, " Template ", "Format/dump a Buffer/ResourceTemplate\n"}, {1, " Terminate", "Delete namespace and all internal objects\n"}, {1, " Type ", "Display object type\n"}, {0, "\nControl Method Execution Commands:","\n"}, {1, " Arguments (or Args)", "Display method arguments\n"}, {1, " Breakpoint ", "Set an AML execution breakpoint\n"}, {1, " Call", "Run to next control method invocation\n"}, {1, " Debug [Arguments]", "Single Step a control method\n"}, {6, " Evaluate", "Synonym for Execute\n"}, {5, " Execute [Arguments]", "Execute control method\n"}, {1, " Hex Integer", "Integer method argument\n"}, {1, " \"Ascii String\"", "String method argument\n"}, {1, " (Hex Byte List)", "Buffer method argument\n"}, {1, " [Package Element List]", "Package method argument\n"}, {1, " Go", "Allow method to run to completion\n"}, {1, " Information", "Display info about the current method\n"}, {1, " Into", "Step into (not over) a method call\n"}, {1, " List [# of Aml Opcodes]", "Display method ASL statements\n"}, {1, " Locals", "Display method local variables\n"}, {1, " Results", "Display method result stack\n"}, {1, " Set <#> ", "Set method data (Arguments/Locals)\n"}, {1, " Stop", "Terminate control method\n"}, {1, " Thread ", "Spawn threads to execute method(s)\n"}, {1, " Trace ", "Trace method execution\n"}, {1, " Tree", "Display control method calling tree\n"}, {1, " ", "Single step next AML opcode (over calls)\n"}, {0, "\nHardware Related Commands:", "\n"}, {1, " Event ", "Generate AcpiEvent (Fixed/GPE)\n"}, {1, " Gpe ", "Simulate a GPE\n"}, {1, " Gpes", "Display info on all GPEs\n"}, {1, " Sci", "Generate an SCI\n"}, {1, " Sleep [SleepState]", "Simulate sleep/wake sequence(s) (0-5)\n"}, {0, "\nFile I/O Commands:", "\n"}, {1, " Close", "Close debug output file\n"}, {1, " Load ", "Load ACPI table from a file\n"}, {1, " Open ", "Open a file for debug output\n"}, {0, "\nDebug Test Commands:", "\n"}, {3, " Test ", "Invoke a debug test\n"}, {1, " Objects", "Read/write/compare all namespace data objects\n"}, {1, " Predefined", "Execute all ACPI predefined names (_STA, etc.)\n"}, {0, NULL, NULL} }; /******************************************************************************* * * FUNCTION: AcpiDbMatchCommandHelp * * PARAMETERS: Command - Command string to match * Help - Help table entry to attempt match * * RETURN: TRUE if command matched, FALSE otherwise * * DESCRIPTION: Attempt to match a command in the help table in order to * print help information for a single command. * ******************************************************************************/ static BOOLEAN AcpiDbMatchCommandHelp ( char *Command, const ACPI_DB_COMMAND_HELP *Help) { char *Invocation = Help->Invocation; UINT32 LineCount; /* Valid commands in the help table begin with a couple of spaces */ if (*Invocation != ' ') { return (FALSE); } while (*Invocation == ' ') { Invocation++; } /* Match command name (full command or substring) */ while ((*Command) && (*Invocation) && (*Invocation != ' ')) { if (ACPI_TOLOWER (*Command) != ACPI_TOLOWER (*Invocation)) { return (FALSE); } Invocation++; Command++; } /* Print the appropriate number of help lines */ LineCount = Help->LineCount; while (LineCount) { AcpiOsPrintf ("%-38s : %s", Help->Invocation, Help->Description); Help++; LineCount--; } return (TRUE); } /******************************************************************************* * * FUNCTION: AcpiDbDisplayCommandInfo * * PARAMETERS: Command - Command string to match * DisplayAll - Display all matching commands, or just * the first one (substring match) * * RETURN: None * * DESCRIPTION: Display help information for a Debugger command. * ******************************************************************************/ static void AcpiDbDisplayCommandInfo ( char *Command, BOOLEAN DisplayAll) { const ACPI_DB_COMMAND_HELP *Next; BOOLEAN Matched; Next = AcpiGbl_DbCommandHelp; while (Next->Invocation) { Matched = AcpiDbMatchCommandHelp (Command, Next); if (!DisplayAll && Matched) { return; } Next++; } } /******************************************************************************* * * FUNCTION: AcpiDbDisplayHelp * * PARAMETERS: Command - Optional command string to display help. * if not specified, all debugger command * help strings are displayed * * RETURN: None * * DESCRIPTION: Display help for a single debugger command, or all of them. * ******************************************************************************/ static void AcpiDbDisplayHelp ( char *Command) { const ACPI_DB_COMMAND_HELP *Next = AcpiGbl_DbCommandHelp; if (!Command) { /* No argument to help, display help for all commands */ while (Next->Invocation) { AcpiOsPrintf ("%-38s%s", Next->Invocation, Next->Description); Next++; } } else { /* Display help for all commands that match the subtring */ AcpiDbDisplayCommandInfo (Command, TRUE); } } /******************************************************************************* * * FUNCTION: AcpiDbGetNextToken * * PARAMETERS: String - Command buffer * Next - Return value, end of next token * * RETURN: Pointer to the start of the next token. * * DESCRIPTION: Command line parsing. Get the next token on the command line * ******************************************************************************/ char * AcpiDbGetNextToken ( char *String, char **Next, ACPI_OBJECT_TYPE *ReturnType) { char *Start; UINT32 Depth; ACPI_OBJECT_TYPE Type = ACPI_TYPE_INTEGER; /* At end of buffer? */ if (!String || !(*String)) { return (NULL); } /* Remove any spaces at the beginning */ if (*String == ' ') { while (*String && (*String == ' ')) { String++; } if (!(*String)) { return (NULL); } } switch (*String) { case '"': /* This is a quoted string, scan until closing quote */ String++; Start = String; Type = ACPI_TYPE_STRING; /* Find end of string */ while (*String && (*String != '"')) { String++; } break; case '(': /* This is the start of a buffer, scan until closing paren */ String++; Start = String; Type = ACPI_TYPE_BUFFER; /* Find end of buffer */ while (*String && (*String != ')')) { String++; } break; case '[': /* This is the start of a package, scan until closing bracket */ String++; Depth = 1; Start = String; Type = ACPI_TYPE_PACKAGE; /* Find end of package (closing bracket) */ while (*String) { /* Handle String package elements */ if (*String == '"') { /* Find end of string */ String++; while (*String && (*String != '"')) { String++; } if (!(*String)) { break; } } else if (*String == '[') { Depth++; /* A nested package declaration */ } else if (*String == ']') { Depth--; if (Depth == 0) /* Found final package closing bracket */ { break; } } String++; } break; default: Start = String; /* Find end of token */ while (*String && (*String != ' ')) { String++; } break; } if (!(*String)) { *Next = NULL; } else { *String = 0; *Next = String + 1; } *ReturnType = Type; return (Start); } /******************************************************************************* * * FUNCTION: AcpiDbGetLine * * PARAMETERS: InputBuffer - Command line buffer * * RETURN: Count of arguments to the command * * DESCRIPTION: Get the next command line from the user. Gets entire line * up to the next newline * ******************************************************************************/ static UINT32 AcpiDbGetLine ( char *InputBuffer) { UINT32 i; UINT32 Count; char *Next; char *This; if (AcpiUtSafeStrcpy (AcpiGbl_DbParsedBuf, sizeof (AcpiGbl_DbParsedBuf), InputBuffer)) { AcpiOsPrintf ("Buffer overflow while parsing input line (max %u characters)\n", sizeof (AcpiGbl_DbParsedBuf)); return (0); } This = AcpiGbl_DbParsedBuf; for (i = 0; i < ACPI_DEBUGGER_MAX_ARGS; i++) { AcpiGbl_DbArgs[i] = AcpiDbGetNextToken (This, &Next, &AcpiGbl_DbArgTypes[i]); if (!AcpiGbl_DbArgs[i]) { break; } This = Next; } /* Uppercase the actual command */ if (AcpiGbl_DbArgs[0]) { AcpiUtStrupr (AcpiGbl_DbArgs[0]); } Count = i; if (Count) { Count--; /* Number of args only */ } return (Count); } /******************************************************************************* * * FUNCTION: AcpiDbMatchCommand * * PARAMETERS: UserCommand - User command line * * RETURN: Index into command array, -1 if not found * * DESCRIPTION: Search command array for a command match * ******************************************************************************/ static UINT32 AcpiDbMatchCommand ( char *UserCommand) { UINT32 i; if (!UserCommand || UserCommand[0] == 0) { return (CMD_NULL); } for (i = CMD_FIRST_VALID; AcpiGbl_DbCommands[i].Name; i++) { if (ACPI_STRSTR (AcpiGbl_DbCommands[i].Name, UserCommand) == AcpiGbl_DbCommands[i].Name) { return (i); } } /* Command not recognized */ return (CMD_NOT_FOUND); } /******************************************************************************* * * FUNCTION: AcpiDbCommandDispatch * * PARAMETERS: InputBuffer - Command line buffer * WalkState - Current walk * Op - Current (executing) parse op * * RETURN: Status * * DESCRIPTION: Command dispatcher. * ******************************************************************************/ ACPI_STATUS AcpiDbCommandDispatch ( char *InputBuffer, ACPI_WALK_STATE *WalkState, ACPI_PARSE_OBJECT *Op) { UINT32 Temp; UINT32 CommandIndex; UINT32 ParamCount; char *CommandLine; ACPI_STATUS Status = AE_CTRL_TRUE; /* If AcpiTerminate has been called, terminate this thread */ if (AcpiGbl_DbTerminateThreads) { return (AE_CTRL_TERMINATE); } /* Add all commands that come here to the history buffer */ AcpiDbAddToHistory (InputBuffer); ParamCount = AcpiDbGetLine (InputBuffer); CommandIndex = AcpiDbMatchCommand (AcpiGbl_DbArgs[0]); Temp = 0; /* Verify that we have the minimum number of params */ if (ParamCount < AcpiGbl_DbCommands[CommandIndex].MinArgs) { AcpiOsPrintf ("%u parameters entered, [%s] requires %u parameters\n", ParamCount, AcpiGbl_DbCommands[CommandIndex].Name, AcpiGbl_DbCommands[CommandIndex].MinArgs); AcpiDbDisplayCommandInfo (AcpiGbl_DbCommands[CommandIndex].Name, FALSE); return (AE_CTRL_TRUE); } /* Decode and dispatch the command */ switch (CommandIndex) { case CMD_NULL: if (Op) { return (AE_OK); } break; case CMD_ALLOCATIONS: #ifdef ACPI_DBG_TRACK_ALLOCATIONS AcpiUtDumpAllocations ((UINT32) -1, NULL); #endif break; case CMD_ARGS: case CMD_ARGUMENTS: AcpiDbDisplayArguments (); break; case CMD_BREAKPOINT: AcpiDbSetMethodBreakpoint (AcpiGbl_DbArgs[1], WalkState, Op); break; case CMD_BUSINFO: AcpiDbGetBusInfo (); break; case CMD_CALL: AcpiDbSetMethodCallBreakpoint (Op); Status = AE_OK; break; case CMD_CLOSE: AcpiDbCloseDebugFile (); break; case CMD_DEBUG: AcpiDbExecute (AcpiGbl_DbArgs[1], &AcpiGbl_DbArgs[2], &AcpiGbl_DbArgTypes[2], EX_SINGLE_STEP); break; case CMD_DISASSEMBLE: case CMD_DISASM: (void) AcpiDbDisassembleMethod (AcpiGbl_DbArgs[1]); break; case CMD_DUMP: AcpiDbDecodeAndDisplayObject (AcpiGbl_DbArgs[1], AcpiGbl_DbArgs[2]); break; case CMD_ENABLEACPI: #if (!ACPI_REDUCED_HARDWARE) Status = AcpiEnable(); if (ACPI_FAILURE(Status)) { AcpiOsPrintf("AcpiEnable failed (Status=%X)\n", Status); return (Status); } #endif /* !ACPI_REDUCED_HARDWARE */ break; case CMD_EVENT: AcpiOsPrintf ("Event command not implemented\n"); break; case CMD_EVALUATE: case CMD_EXECUTE: AcpiDbExecute (AcpiGbl_DbArgs[1], &AcpiGbl_DbArgs[2], &AcpiGbl_DbArgTypes[2], EX_NO_SINGLE_STEP); break; case CMD_FIND: Status = AcpiDbFindNameInNamespace (AcpiGbl_DbArgs[1]); break; case CMD_GO: AcpiGbl_CmSingleStep = FALSE; return (AE_OK); case CMD_GPE: AcpiDbGenerateGpe (AcpiGbl_DbArgs[1], AcpiGbl_DbArgs[2]); break; case CMD_GPES: AcpiDbDisplayGpes (); break; case CMD_HANDLERS: AcpiDbDisplayHandlers (); break; case CMD_HELP: case CMD_HELP2: AcpiDbDisplayHelp (AcpiGbl_DbArgs[1]); break; case CMD_HISTORY: AcpiDbDisplayHistory (); break; case CMD_HISTORY_EXE: /* ! command */ CommandLine = AcpiDbGetFromHistory (AcpiGbl_DbArgs[1]); if (!CommandLine) { return (AE_CTRL_TRUE); } Status = AcpiDbCommandDispatch (CommandLine, WalkState, Op); return (Status); case CMD_HISTORY_LAST: /* !! command */ CommandLine = AcpiDbGetFromHistory (NULL); if (!CommandLine) { return (AE_CTRL_TRUE); } Status = AcpiDbCommandDispatch (CommandLine, WalkState, Op); return (Status); case CMD_INFORMATION: AcpiDbDisplayMethodInfo (Op); break; case CMD_INTEGRITY: AcpiDbCheckIntegrity (); break; case CMD_INTO: if (Op) { AcpiGbl_CmSingleStep = TRUE; return (AE_OK); } break; case CMD_LEVEL: if (ParamCount == 0) { AcpiOsPrintf ("Current debug level for file output is: %8.8lX\n", AcpiGbl_DbDebugLevel); AcpiOsPrintf ("Current debug level for console output is: %8.8lX\n", AcpiGbl_DbConsoleDebugLevel); } else if (ParamCount == 2) { Temp = AcpiGbl_DbConsoleDebugLevel; AcpiGbl_DbConsoleDebugLevel = ACPI_STRTOUL (AcpiGbl_DbArgs[1], NULL, 16); AcpiOsPrintf ( "Debug Level for console output was %8.8lX, now %8.8lX\n", Temp, AcpiGbl_DbConsoleDebugLevel); } else { Temp = AcpiGbl_DbDebugLevel; AcpiGbl_DbDebugLevel = ACPI_STRTOUL (AcpiGbl_DbArgs[1], NULL, 16); AcpiOsPrintf ( "Debug Level for file output was %8.8lX, now %8.8lX\n", Temp, AcpiGbl_DbDebugLevel); } break; case CMD_LIST: AcpiDbDisassembleAml (AcpiGbl_DbArgs[1], Op); break; case CMD_LOAD: Status = AcpiDbGetTableFromFile (AcpiGbl_DbArgs[1], NULL); break; case CMD_LOCKS: AcpiDbDisplayLocks (); break; case CMD_LOCALS: AcpiDbDisplayLocals (); break; case CMD_METHODS: Status = AcpiDbDisplayObjects ("METHOD", AcpiGbl_DbArgs[1]); break; case CMD_NAMESPACE: AcpiDbDumpNamespace (AcpiGbl_DbArgs[1], AcpiGbl_DbArgs[2]); break; case CMD_NOTIFY: Temp = ACPI_STRTOUL (AcpiGbl_DbArgs[2], NULL, 0); AcpiDbSendNotify (AcpiGbl_DbArgs[1], Temp); break; case CMD_OBJECTS: AcpiUtStrupr (AcpiGbl_DbArgs[1]); Status = AcpiDbDisplayObjects (AcpiGbl_DbArgs[1], AcpiGbl_DbArgs[2]); break; case CMD_OPEN: AcpiDbOpenDebugFile (AcpiGbl_DbArgs[1]); break; case CMD_OSI: AcpiDbDisplayInterfaces (AcpiGbl_DbArgs[1], AcpiGbl_DbArgs[2]); break; case CMD_OWNER: AcpiDbDumpNamespaceByOwner (AcpiGbl_DbArgs[1], AcpiGbl_DbArgs[2]); break; case CMD_PATHS: AcpiDbDumpNamespacePaths (); break; case CMD_PREDEFINED: AcpiDbCheckPredefinedNames (); break; case CMD_PREFIX: AcpiDbSetScope (AcpiGbl_DbArgs[1]); break; case CMD_REFERENCES: AcpiDbFindReferences (AcpiGbl_DbArgs[1]); break; case CMD_RESOURCES: AcpiDbDisplayResources (AcpiGbl_DbArgs[1]); break; case CMD_RESULTS: AcpiDbDisplayResults (); break; case CMD_SCI: AcpiDbGenerateSci (); break; case CMD_SET: AcpiDbSetMethodData (AcpiGbl_DbArgs[1], AcpiGbl_DbArgs[2], AcpiGbl_DbArgs[3]); break; case CMD_SLEEP: Status = AcpiDbSleep (AcpiGbl_DbArgs[1]); break; case CMD_STATS: Status = AcpiDbDisplayStatistics (AcpiGbl_DbArgs[1]); break; case CMD_STOP: return (AE_NOT_IMPLEMENTED); case CMD_TABLES: AcpiDbDisplayTableInfo (AcpiGbl_DbArgs[1]); break; case CMD_TEMPLATE: AcpiDbDisplayTemplate (AcpiGbl_DbArgs[1]); break; case CMD_TERMINATE: AcpiDbSetOutputDestination (ACPI_DB_REDIRECTABLE_OUTPUT); AcpiUtSubsystemShutdown (); /* * TBD: [Restructure] Need some way to re-initialize without * re-creating the semaphores! */ /* AcpiInitialize (NULL); */ break; case CMD_TEST: AcpiDbExecuteTest (AcpiGbl_DbArgs[1]); break; case CMD_THREADS: AcpiDbCreateExecutionThreads (AcpiGbl_DbArgs[1], AcpiGbl_DbArgs[2], AcpiGbl_DbArgs[3]); break; case CMD_TRACE: (void) AcpiDebugTrace (AcpiGbl_DbArgs[1],0,0,1); break; case CMD_TREE: AcpiDbDisplayCallingTree (); break; case CMD_TYPE: AcpiDbDisplayObjectType (AcpiGbl_DbArgs[1]); break; case CMD_UNLOAD: AcpiDbUnloadAcpiTable (AcpiGbl_DbArgs[1]); break; case CMD_EXIT: case CMD_QUIT: if (Op) { AcpiOsPrintf ("Method execution terminated\n"); return (AE_CTRL_TERMINATE); } if (!AcpiGbl_DbOutputToFile) { AcpiDbgLevel = ACPI_DEBUG_DEFAULT; } AcpiDbCloseDebugFile (); AcpiGbl_DbTerminateThreads = TRUE; return (AE_CTRL_TERMINATE); case CMD_NOT_FOUND: default: AcpiOsPrintf ("%s: unknown command\n", AcpiGbl_DbArgs[0]); return (AE_CTRL_TRUE); } if (ACPI_SUCCESS (Status)) { Status = AE_CTRL_TRUE; } return (Status); } /******************************************************************************* * * FUNCTION: AcpiDbExecuteThread * * PARAMETERS: Context - Not used * * RETURN: None * * DESCRIPTION: Debugger execute thread. Waits for a command line, then * simply dispatches it. * ******************************************************************************/ void ACPI_SYSTEM_XFACE AcpiDbExecuteThread ( void *Context) { ACPI_STATUS Status = AE_OK; ACPI_STATUS MStatus; while (Status != AE_CTRL_TERMINATE) { AcpiGbl_MethodExecuting = FALSE; AcpiGbl_StepToNextCall = FALSE; MStatus = AcpiUtAcquireMutex (ACPI_MTX_DEBUG_CMD_READY); if (ACPI_FAILURE (MStatus)) { return; } Status = AcpiDbCommandDispatch (AcpiGbl_DbLineBuf, NULL, NULL); MStatus = AcpiUtReleaseMutex (ACPI_MTX_DEBUG_CMD_COMPLETE); if (ACPI_FAILURE (MStatus)) { return; } } } /******************************************************************************* * * FUNCTION: AcpiDbSingleThread * * PARAMETERS: None * * RETURN: None * * DESCRIPTION: Debugger execute thread. Waits for a command line, then * simply dispatches it. * ******************************************************************************/ static void AcpiDbSingleThread ( void) { AcpiGbl_MethodExecuting = FALSE; AcpiGbl_StepToNextCall = FALSE; (void) AcpiDbCommandDispatch (AcpiGbl_DbLineBuf, NULL, NULL); } /******************************************************************************* * * FUNCTION: AcpiDbUserCommands * * PARAMETERS: Prompt - User prompt (depends on mode) * Op - Current executing parse op * * RETURN: None * * DESCRIPTION: Command line execution for the AML debugger. Commands are * matched and dispatched here. * ******************************************************************************/ ACPI_STATUS AcpiDbUserCommands ( char Prompt, ACPI_PARSE_OBJECT *Op) { ACPI_STATUS Status = AE_OK; AcpiOsPrintf ("\n"); /* TBD: [Restructure] Need a separate command line buffer for step mode */ while (!AcpiGbl_DbTerminateThreads) { /* Force output to console until a command is entered */ AcpiDbSetOutputDestination (ACPI_DB_CONSOLE_OUTPUT); /* Different prompt if method is executing */ if (!AcpiGbl_MethodExecuting) { AcpiOsPrintf ("%1c ", ACPI_DEBUGGER_COMMAND_PROMPT); } else { AcpiOsPrintf ("%1c ", ACPI_DEBUGGER_EXECUTE_PROMPT); } /* Get the user input line */ Status = AcpiOsGetLine (AcpiGbl_DbLineBuf, ACPI_DB_LINE_BUFFER_SIZE, NULL); if (ACPI_FAILURE (Status)) { ACPI_EXCEPTION ((AE_INFO, Status, "While parsing command line")); return (Status); } /* Check for single or multithreaded debug */ if (AcpiGbl_DebuggerConfiguration & DEBUGGER_MULTI_THREADED) { /* * Signal the debug thread that we have a command to execute, * and wait for the command to complete. */ Status = AcpiUtReleaseMutex (ACPI_MTX_DEBUG_CMD_READY); if (ACPI_FAILURE (Status)) { return (Status); } Status = AcpiUtAcquireMutex (ACPI_MTX_DEBUG_CMD_COMPLETE); if (ACPI_FAILURE (Status)) { return (Status); } } else { /* Just call to the command line interpreter */ AcpiDbSingleThread (); } } /* * Only this thread (the original thread) should actually terminate the * subsystem, because all the semaphores are deleted during termination */ Status = AcpiTerminate (); return (Status); } #endif /* ACPI_DEBUGGER */ src/acpica/source/components/debugger/dbmethod.c000066400000000000000000000357141231470457100223060ustar00rootroot00000000000000/******************************************************************************* * * Module Name: dbmethod - Debug commands for control methods * ******************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #include "acpi.h" #include "accommon.h" #include "acdispat.h" #include "acnamesp.h" #include "acdebug.h" #include "acdisasm.h" #include "acparser.h" #include "acpredef.h" #ifdef ACPI_DEBUGGER #define _COMPONENT ACPI_CA_DEBUGGER ACPI_MODULE_NAME ("dbmethod") /******************************************************************************* * * FUNCTION: AcpiDbSetMethodBreakpoint * * PARAMETERS: Location - AML offset of breakpoint * WalkState - Current walk info * Op - Current Op (from parse walk) * * RETURN: None * * DESCRIPTION: Set a breakpoint in a control method at the specified * AML offset * ******************************************************************************/ void AcpiDbSetMethodBreakpoint ( char *Location, ACPI_WALK_STATE *WalkState, ACPI_PARSE_OBJECT *Op) { UINT32 Address; if (!Op) { AcpiOsPrintf ("There is no method currently executing\n"); return; } /* Get and verify the breakpoint address */ Address = ACPI_STRTOUL (Location, NULL, 16); if (Address <= Op->Common.AmlOffset) { AcpiOsPrintf ("Breakpoint %X is beyond current address %X\n", Address, Op->Common.AmlOffset); } /* Save breakpoint in current walk */ WalkState->UserBreakpoint = Address; AcpiOsPrintf ("Breakpoint set at AML offset %X\n", Address); } /******************************************************************************* * * FUNCTION: AcpiDbSetMethodCallBreakpoint * * PARAMETERS: Op - Current Op (from parse walk) * * RETURN: None * * DESCRIPTION: Set a breakpoint in a control method at the specified * AML offset * ******************************************************************************/ void AcpiDbSetMethodCallBreakpoint ( ACPI_PARSE_OBJECT *Op) { if (!Op) { AcpiOsPrintf ("There is no method currently executing\n"); return; } AcpiGbl_StepToNextCall = TRUE; } /******************************************************************************* * * FUNCTION: AcpiDbSetMethodData * * PARAMETERS: TypeArg - L for local, A for argument * IndexArg - which one * ValueArg - Value to set. * * RETURN: None * * DESCRIPTION: Set a local or argument for the running control method. * NOTE: only object supported is Number. * ******************************************************************************/ void AcpiDbSetMethodData ( char *TypeArg, char *IndexArg, char *ValueArg) { char Type; UINT32 Index; UINT32 Value; ACPI_WALK_STATE *WalkState; ACPI_OPERAND_OBJECT *ObjDesc; ACPI_STATUS Status; ACPI_NAMESPACE_NODE *Node; /* Validate TypeArg */ AcpiUtStrupr (TypeArg); Type = TypeArg[0]; if ((Type != 'L') && (Type != 'A') && (Type != 'N')) { AcpiOsPrintf ("Invalid SET operand: %s\n", TypeArg); return; } Value = ACPI_STRTOUL (ValueArg, NULL, 16); if (Type == 'N') { Node = AcpiDbConvertToNode (IndexArg); if (!Node) { return; } if (Node->Type != ACPI_TYPE_INTEGER) { AcpiOsPrintf ("Can only set Integer nodes\n"); return; } ObjDesc = Node->Object; ObjDesc->Integer.Value = Value; return; } /* Get the index and value */ Index = ACPI_STRTOUL (IndexArg, NULL, 16); WalkState = AcpiDsGetCurrentWalkState (AcpiGbl_CurrentWalkList); if (!WalkState) { AcpiOsPrintf ("There is no method currently executing\n"); return; } /* Create and initialize the new object */ ObjDesc = AcpiUtCreateIntegerObject ((UINT64) Value); if (!ObjDesc) { AcpiOsPrintf ("Could not create an internal object\n"); return; } /* Store the new object into the target */ switch (Type) { case 'A': /* Set a method argument */ if (Index > ACPI_METHOD_MAX_ARG) { AcpiOsPrintf ("Arg%u - Invalid argument name\n", Index); goto Cleanup; } Status = AcpiDsStoreObjectToLocal (ACPI_REFCLASS_ARG, Index, ObjDesc, WalkState); if (ACPI_FAILURE (Status)) { goto Cleanup; } ObjDesc = WalkState->Arguments[Index].Object; AcpiOsPrintf ("Arg%u: ", Index); AcpiDmDisplayInternalObject (ObjDesc, WalkState); break; case 'L': /* Set a method local */ if (Index > ACPI_METHOD_MAX_LOCAL) { AcpiOsPrintf ("Local%u - Invalid local variable name\n", Index); goto Cleanup; } Status = AcpiDsStoreObjectToLocal (ACPI_REFCLASS_LOCAL, Index, ObjDesc, WalkState); if (ACPI_FAILURE (Status)) { goto Cleanup; } ObjDesc = WalkState->LocalVariables[Index].Object; AcpiOsPrintf ("Local%u: ", Index); AcpiDmDisplayInternalObject (ObjDesc, WalkState); break; default: break; } Cleanup: AcpiUtRemoveReference (ObjDesc); } /******************************************************************************* * * FUNCTION: AcpiDbDisassembleAml * * PARAMETERS: Statements - Number of statements to disassemble * Op - Current Op (from parse walk) * * RETURN: None * * DESCRIPTION: Display disassembled AML (ASL) starting from Op for the number * of statements specified. * ******************************************************************************/ void AcpiDbDisassembleAml ( char *Statements, ACPI_PARSE_OBJECT *Op) { UINT32 NumStatements = 8; if (!Op) { AcpiOsPrintf ("There is no method currently executing\n"); return; } if (Statements) { NumStatements = ACPI_STRTOUL (Statements, NULL, 0); } AcpiDmDisassemble (NULL, Op, NumStatements); } /******************************************************************************* * * FUNCTION: AcpiDbDisassembleMethod * * PARAMETERS: Name - Name of control method * * RETURN: None * * DESCRIPTION: Display disassembled AML (ASL) starting from Op for the number * of statements specified. * ******************************************************************************/ ACPI_STATUS AcpiDbDisassembleMethod ( char *Name) { ACPI_STATUS Status; ACPI_PARSE_OBJECT *Op; ACPI_WALK_STATE *WalkState; ACPI_OPERAND_OBJECT *ObjDesc; ACPI_NAMESPACE_NODE *Method; Method = AcpiDbConvertToNode (Name); if (!Method) { return (AE_BAD_PARAMETER); } if (Method->Type != ACPI_TYPE_METHOD) { ACPI_ERROR ((AE_INFO, "%s (%s): Object must be a control method", Name, AcpiUtGetTypeName (Method->Type))); return (AE_BAD_PARAMETER); } ObjDesc = Method->Object; Op = AcpiPsCreateScopeOp (); if (!Op) { return (AE_NO_MEMORY); } /* Create and initialize a new walk state */ WalkState = AcpiDsCreateWalkState (0, Op, NULL, NULL); if (!WalkState) { return (AE_NO_MEMORY); } Status = AcpiDsInitAmlWalk (WalkState, Op, NULL, ObjDesc->Method.AmlStart, ObjDesc->Method.AmlLength, NULL, ACPI_IMODE_LOAD_PASS1); if (ACPI_FAILURE (Status)) { return (Status); } Status = AcpiUtAllocateOwnerId (&ObjDesc->Method.OwnerId); WalkState->OwnerId = ObjDesc->Method.OwnerId; /* Push start scope on scope stack and make it current */ Status = AcpiDsScopeStackPush (Method, Method->Type, WalkState); if (ACPI_FAILURE (Status)) { return (Status); } /* Parse the entire method AML including deferred operators */ WalkState->ParseFlags &= ~ACPI_PARSE_DELETE_TREE; WalkState->ParseFlags |= ACPI_PARSE_DISASSEMBLE; Status = AcpiPsParseAml (WalkState); (void) AcpiDmParseDeferredOps (Op); /* Now we can disassemble the method */ AcpiGbl_DbOpt_verbose = FALSE; AcpiDmDisassemble (NULL, Op, 0); AcpiGbl_DbOpt_verbose = TRUE; AcpiPsDeleteParseTree (Op); /* Method cleanup */ AcpiNsDeleteNamespaceSubtree (Method); AcpiNsDeleteNamespaceByOwner (ObjDesc->Method.OwnerId); AcpiUtReleaseOwnerId (&ObjDesc->Method.OwnerId); return (AE_OK); } #endif /* ACPI_DEBUGGER */ src/acpica/source/components/debugger/dbnames.c000066400000000000000000000747661231470457100221430ustar00rootroot00000000000000/******************************************************************************* * * Module Name: dbnames - Debugger commands for the acpi namespace * ******************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #include "acpi.h" #include "accommon.h" #include "acnamesp.h" #include "acdebug.h" #include "acpredef.h" #ifdef ACPI_DEBUGGER #define _COMPONENT ACPI_CA_DEBUGGER ACPI_MODULE_NAME ("dbnames") /* Local prototypes */ static ACPI_STATUS AcpiDbWalkAndMatchName ( ACPI_HANDLE ObjHandle, UINT32 NestingLevel, void *Context, void **ReturnValue); static ACPI_STATUS AcpiDbWalkForPredefinedNames ( ACPI_HANDLE ObjHandle, UINT32 NestingLevel, void *Context, void **ReturnValue); static ACPI_STATUS AcpiDbWalkForSpecificObjects ( ACPI_HANDLE ObjHandle, UINT32 NestingLevel, void *Context, void **ReturnValue); static ACPI_STATUS AcpiDbIntegrityWalk ( ACPI_HANDLE ObjHandle, UINT32 NestingLevel, void *Context, void **ReturnValue); static ACPI_STATUS AcpiDbWalkForReferences ( ACPI_HANDLE ObjHandle, UINT32 NestingLevel, void *Context, void **ReturnValue); static ACPI_STATUS AcpiDbBusWalk ( ACPI_HANDLE ObjHandle, UINT32 NestingLevel, void *Context, void **ReturnValue); /* * Arguments for the Objects command * These object types map directly to the ACPI_TYPES */ static ACPI_DB_ARGUMENT_INFO AcpiDbObjectTypes [] = { {"ANY"}, {"INTEGERS"}, {"STRINGS"}, {"BUFFERS"}, {"PACKAGES"}, {"FIELDS"}, {"DEVICES"}, {"EVENTS"}, {"METHODS"}, {"MUTEXES"}, {"REGIONS"}, {"POWERRESOURCES"}, {"PROCESSORS"}, {"THERMALZONES"}, {"BUFFERFIELDS"}, {"DDBHANDLES"}, {"DEBUG"}, {"REGIONFIELDS"}, {"BANKFIELDS"}, {"INDEXFIELDS"}, {"REFERENCES"}, {"ALIAS"}, {NULL} /* Must be null terminated */ }; /******************************************************************************* * * FUNCTION: AcpiDbSetScope * * PARAMETERS: Name - New scope path * * RETURN: Status * * DESCRIPTION: Set the "current scope" as maintained by this utility. * The scope is used as a prefix to ACPI paths. * ******************************************************************************/ void AcpiDbSetScope ( char *Name) { ACPI_STATUS Status; ACPI_NAMESPACE_NODE *Node; if (!Name || Name[0] == 0) { AcpiOsPrintf ("Current scope: %s\n", AcpiGbl_DbScopeBuf); return; } AcpiDbPrepNamestring (Name); if (ACPI_IS_ROOT_PREFIX (Name[0])) { /* Validate new scope from the root */ Status = AcpiNsGetNode (AcpiGbl_RootNode, Name, ACPI_NS_NO_UPSEARCH, &Node); if (ACPI_FAILURE (Status)) { goto ErrorExit; } AcpiGbl_DbScopeBuf[0] = 0; } else { /* Validate new scope relative to old scope */ Status = AcpiNsGetNode (AcpiGbl_DbScopeNode, Name, ACPI_NS_NO_UPSEARCH, &Node); if (ACPI_FAILURE (Status)) { goto ErrorExit; } } /* Build the final pathname */ if (AcpiUtSafeStrcat (AcpiGbl_DbScopeBuf, sizeof (AcpiGbl_DbScopeBuf), Name)) { Status = AE_BUFFER_OVERFLOW; goto ErrorExit; } if (AcpiUtSafeStrcat (AcpiGbl_DbScopeBuf, sizeof (AcpiGbl_DbScopeBuf), "\\")) { Status = AE_BUFFER_OVERFLOW; goto ErrorExit; } AcpiGbl_DbScopeNode = Node; AcpiOsPrintf ("New scope: %s\n", AcpiGbl_DbScopeBuf); return; ErrorExit: AcpiOsPrintf ("Could not attach scope: %s, %s\n", Name, AcpiFormatException (Status)); } /******************************************************************************* * * FUNCTION: AcpiDbDumpNamespace * * PARAMETERS: StartArg - Node to begin namespace dump * DepthArg - Maximum tree depth to be dumped * * RETURN: None * * DESCRIPTION: Dump entire namespace or a subtree. Each node is displayed * with type and other information. * ******************************************************************************/ void AcpiDbDumpNamespace ( char *StartArg, char *DepthArg) { ACPI_HANDLE SubtreeEntry = AcpiGbl_RootNode; UINT32 MaxDepth = ACPI_UINT32_MAX; /* No argument given, just start at the root and dump entire namespace */ if (StartArg) { SubtreeEntry = AcpiDbConvertToNode (StartArg); if (!SubtreeEntry) { return; } /* Now we can check for the depth argument */ if (DepthArg) { MaxDepth = ACPI_STRTOUL (DepthArg, NULL, 0); } } AcpiDbSetOutputDestination (ACPI_DB_DUPLICATE_OUTPUT); AcpiOsPrintf ("ACPI Namespace (from %4.4s (%p) subtree):\n", ((ACPI_NAMESPACE_NODE *) SubtreeEntry)->Name.Ascii, SubtreeEntry); /* Display the subtree */ AcpiDbSetOutputDestination (ACPI_DB_REDIRECTABLE_OUTPUT); AcpiNsDumpObjects (ACPI_TYPE_ANY, ACPI_DISPLAY_SUMMARY, MaxDepth, ACPI_OWNER_ID_MAX, SubtreeEntry); AcpiDbSetOutputDestination (ACPI_DB_CONSOLE_OUTPUT); } /******************************************************************************* * * FUNCTION: AcpiDbDumpNamespacePaths * * PARAMETERS: None * * RETURN: None * * DESCRIPTION: Dump entire namespace with full object pathnames and object * type information. Alternative to "namespace" command. * ******************************************************************************/ void AcpiDbDumpNamespacePaths ( void) { AcpiDbSetOutputDestination (ACPI_DB_DUPLICATE_OUTPUT); AcpiOsPrintf ("ACPI Namespace (from root):\n"); /* Display the entire namespace */ AcpiDbSetOutputDestination (ACPI_DB_REDIRECTABLE_OUTPUT); AcpiNsDumpObjectPaths (ACPI_TYPE_ANY, ACPI_DISPLAY_SUMMARY, ACPI_UINT32_MAX, ACPI_OWNER_ID_MAX, AcpiGbl_RootNode); AcpiDbSetOutputDestination (ACPI_DB_CONSOLE_OUTPUT); } /******************************************************************************* * * FUNCTION: AcpiDbDumpNamespaceByOwner * * PARAMETERS: OwnerArg - Owner ID whose nodes will be displayed * DepthArg - Maximum tree depth to be dumped * * RETURN: None * * DESCRIPTION: Dump elements of the namespace that are owned by the OwnerId. * ******************************************************************************/ void AcpiDbDumpNamespaceByOwner ( char *OwnerArg, char *DepthArg) { ACPI_HANDLE SubtreeEntry = AcpiGbl_RootNode; UINT32 MaxDepth = ACPI_UINT32_MAX; ACPI_OWNER_ID OwnerId; OwnerId = (ACPI_OWNER_ID) ACPI_STRTOUL (OwnerArg, NULL, 0); /* Now we can check for the depth argument */ if (DepthArg) { MaxDepth = ACPI_STRTOUL (DepthArg, NULL, 0); } AcpiDbSetOutputDestination (ACPI_DB_DUPLICATE_OUTPUT); AcpiOsPrintf ("ACPI Namespace by owner %X:\n", OwnerId); /* Display the subtree */ AcpiDbSetOutputDestination (ACPI_DB_REDIRECTABLE_OUTPUT); AcpiNsDumpObjects (ACPI_TYPE_ANY, ACPI_DISPLAY_SUMMARY, MaxDepth, OwnerId, SubtreeEntry); AcpiDbSetOutputDestination (ACPI_DB_CONSOLE_OUTPUT); } /******************************************************************************* * * FUNCTION: AcpiDbWalkAndMatchName * * PARAMETERS: Callback from WalkNamespace * * RETURN: Status * * DESCRIPTION: Find a particular name/names within the namespace. Wildcards * are supported -- '?' matches any character. * ******************************************************************************/ static ACPI_STATUS AcpiDbWalkAndMatchName ( ACPI_HANDLE ObjHandle, UINT32 NestingLevel, void *Context, void **ReturnValue) { ACPI_STATUS Status; char *RequestedName = (char *) Context; UINT32 i; ACPI_BUFFER Buffer; ACPI_WALK_INFO Info; /* Check for a name match */ for (i = 0; i < 4; i++) { /* Wildcard support */ if ((RequestedName[i] != '?') && (RequestedName[i] != ((ACPI_NAMESPACE_NODE *) ObjHandle)->Name.Ascii[i])) { /* No match, just exit */ return (AE_OK); } } /* Get the full pathname to this object */ Buffer.Length = ACPI_ALLOCATE_LOCAL_BUFFER; Status = AcpiNsHandleToPathname (ObjHandle, &Buffer); if (ACPI_FAILURE (Status)) { AcpiOsPrintf ("Could Not get pathname for object %p\n", ObjHandle); } else { Info.OwnerId = ACPI_OWNER_ID_MAX; Info.DebugLevel = ACPI_UINT32_MAX; Info.DisplayType = ACPI_DISPLAY_SUMMARY | ACPI_DISPLAY_SHORT; AcpiOsPrintf ("%32s", (char *) Buffer.Pointer); (void) AcpiNsDumpOneObject (ObjHandle, NestingLevel, &Info, NULL); ACPI_FREE (Buffer.Pointer); } return (AE_OK); } /******************************************************************************* * * FUNCTION: AcpiDbFindNameInNamespace * * PARAMETERS: NameArg - The 4-character ACPI name to find. * wildcards are supported. * * RETURN: None * * DESCRIPTION: Search the namespace for a given name (with wildcards) * ******************************************************************************/ ACPI_STATUS AcpiDbFindNameInNamespace ( char *NameArg) { char AcpiName[5] = "____"; char *AcpiNamePtr = AcpiName; if (ACPI_STRLEN (NameArg) > 4) { AcpiOsPrintf ("Name must be no longer than 4 characters\n"); return (AE_OK); } /* Pad out name with underscores as necessary to create a 4-char name */ AcpiUtStrupr (NameArg); while (*NameArg) { *AcpiNamePtr = *NameArg; AcpiNamePtr++; NameArg++; } /* Walk the namespace from the root */ (void) AcpiWalkNamespace (ACPI_TYPE_ANY, ACPI_ROOT_OBJECT, ACPI_UINT32_MAX, AcpiDbWalkAndMatchName, NULL, AcpiName, NULL); AcpiDbSetOutputDestination (ACPI_DB_CONSOLE_OUTPUT); return (AE_OK); } /******************************************************************************* * * FUNCTION: AcpiDbWalkForPredefinedNames * * PARAMETERS: Callback from WalkNamespace * * RETURN: Status * * DESCRIPTION: Detect and display predefined ACPI names (names that start with * an underscore) * ******************************************************************************/ static ACPI_STATUS AcpiDbWalkForPredefinedNames ( ACPI_HANDLE ObjHandle, UINT32 NestingLevel, void *Context, void **ReturnValue) { ACPI_NAMESPACE_NODE *Node = (ACPI_NAMESPACE_NODE *) ObjHandle; UINT32 *Count = (UINT32 *) Context; const ACPI_PREDEFINED_INFO *Predefined; const ACPI_PREDEFINED_INFO *Package = NULL; char *Pathname; char StringBuffer[48]; Predefined = AcpiUtMatchPredefinedMethod (Node->Name.Ascii); if (!Predefined) { return (AE_OK); } Pathname = AcpiNsGetExternalPathname (Node); if (!Pathname) { return (AE_OK); } /* If method returns a package, the info is in the next table entry */ if (Predefined->Info.ExpectedBtypes & ACPI_RTYPE_PACKAGE) { Package = Predefined + 1; } AcpiUtGetExpectedReturnTypes (StringBuffer, Predefined->Info.ExpectedBtypes); AcpiOsPrintf ("%-32s Arguments %X, Return Types: %s", Pathname, METHOD_GET_ARG_COUNT (Predefined->Info.ArgumentList), StringBuffer); if (Package) { AcpiOsPrintf (" (PkgType %2.2X, ObjType %2.2X, Count %2.2X)", Package->RetInfo.Type, Package->RetInfo.ObjectType1, Package->RetInfo.Count1); } AcpiOsPrintf("\n"); /* Check that the declared argument count matches the ACPI spec */ AcpiNsCheckAcpiCompliance (Pathname, Node, Predefined); ACPI_FREE (Pathname); (*Count)++; return (AE_OK); } /******************************************************************************* * * FUNCTION: AcpiDbCheckPredefinedNames * * PARAMETERS: None * * RETURN: None * * DESCRIPTION: Validate all predefined names in the namespace * ******************************************************************************/ void AcpiDbCheckPredefinedNames ( void) { UINT32 Count = 0; /* Search all nodes in namespace */ (void) AcpiWalkNamespace (ACPI_TYPE_ANY, ACPI_ROOT_OBJECT, ACPI_UINT32_MAX, AcpiDbWalkForPredefinedNames, NULL, (void *) &Count, NULL); AcpiOsPrintf ("Found %u predefined names in the namespace\n", Count); } /******************************************************************************* * * FUNCTION: AcpiDbWalkForSpecificObjects * * PARAMETERS: Callback from WalkNamespace * * RETURN: Status * * DESCRIPTION: Display short info about objects in the namespace * ******************************************************************************/ static ACPI_STATUS AcpiDbWalkForSpecificObjects ( ACPI_HANDLE ObjHandle, UINT32 NestingLevel, void *Context, void **ReturnValue) { ACPI_WALK_INFO *Info = (ACPI_WALK_INFO *) Context; ACPI_BUFFER Buffer; ACPI_STATUS Status; Info->Count++; /* Get and display the full pathname to this object */ Buffer.Length = ACPI_ALLOCATE_LOCAL_BUFFER; Status = AcpiNsHandleToPathname (ObjHandle, &Buffer); if (ACPI_FAILURE (Status)) { AcpiOsPrintf ("Could Not get pathname for object %p\n", ObjHandle); return (AE_OK); } AcpiOsPrintf ("%32s", (char *) Buffer.Pointer); ACPI_FREE (Buffer.Pointer); /* Dump short info about the object */ (void) AcpiNsDumpOneObject (ObjHandle, NestingLevel, Info, NULL); return (AE_OK); } /******************************************************************************* * * FUNCTION: AcpiDbDisplayObjects * * PARAMETERS: ObjTypeArg - Type of object to display * DisplayCountArg - Max depth to display * * RETURN: None * * DESCRIPTION: Display objects in the namespace of the requested type * ******************************************************************************/ ACPI_STATUS AcpiDbDisplayObjects ( char *ObjTypeArg, char *DisplayCountArg) { ACPI_WALK_INFO Info; ACPI_OBJECT_TYPE Type; /* Get the object type */ Type = AcpiDbMatchArgument (ObjTypeArg, AcpiDbObjectTypes); if (Type == ACPI_TYPE_NOT_FOUND) { AcpiOsPrintf ("Invalid or unsupported argument\n"); return (AE_OK); } AcpiDbSetOutputDestination (ACPI_DB_DUPLICATE_OUTPUT); AcpiOsPrintf ( "Objects of type [%s] defined in the current ACPI Namespace:\n", AcpiUtGetTypeName (Type)); AcpiDbSetOutputDestination (ACPI_DB_REDIRECTABLE_OUTPUT); Info.Count = 0; Info.OwnerId = ACPI_OWNER_ID_MAX; Info.DebugLevel = ACPI_UINT32_MAX; Info.DisplayType = ACPI_DISPLAY_SUMMARY | ACPI_DISPLAY_SHORT; /* Walk the namespace from the root */ (void) AcpiWalkNamespace (Type, ACPI_ROOT_OBJECT, ACPI_UINT32_MAX, AcpiDbWalkForSpecificObjects, NULL, (void *) &Info, NULL); AcpiOsPrintf ( "\nFound %u objects of type [%s] in the current ACPI Namespace\n", Info.Count, AcpiUtGetTypeName (Type)); AcpiDbSetOutputDestination (ACPI_DB_CONSOLE_OUTPUT); return (AE_OK); } /******************************************************************************* * * FUNCTION: AcpiDbIntegrityWalk * * PARAMETERS: Callback from WalkNamespace * * RETURN: Status * * DESCRIPTION: Examine one NS node for valid values. * ******************************************************************************/ static ACPI_STATUS AcpiDbIntegrityWalk ( ACPI_HANDLE ObjHandle, UINT32 NestingLevel, void *Context, void **ReturnValue) { ACPI_INTEGRITY_INFO *Info = (ACPI_INTEGRITY_INFO *) Context; ACPI_NAMESPACE_NODE *Node = (ACPI_NAMESPACE_NODE *) ObjHandle; ACPI_OPERAND_OBJECT *Object; BOOLEAN Alias = TRUE; Info->Nodes++; /* Verify the NS node, and dereference aliases */ while (Alias) { if (ACPI_GET_DESCRIPTOR_TYPE (Node) != ACPI_DESC_TYPE_NAMED) { AcpiOsPrintf ("Invalid Descriptor Type for Node %p [%s] - is %2.2X should be %2.2X\n", Node, AcpiUtGetDescriptorName (Node), ACPI_GET_DESCRIPTOR_TYPE (Node), ACPI_DESC_TYPE_NAMED); return (AE_OK); } if ((Node->Type == ACPI_TYPE_LOCAL_ALIAS) || (Node->Type == ACPI_TYPE_LOCAL_METHOD_ALIAS)) { Node = (ACPI_NAMESPACE_NODE *) Node->Object; } else { Alias = FALSE; } } if (Node->Type > ACPI_TYPE_LOCAL_MAX) { AcpiOsPrintf ("Invalid Object Type for Node %p, Type = %X\n", Node, Node->Type); return (AE_OK); } if (!AcpiUtValidAcpiName (Node->Name.Ascii)) { AcpiOsPrintf ("Invalid AcpiName for Node %p\n", Node); return (AE_OK); } Object = AcpiNsGetAttachedObject (Node); if (Object) { Info->Objects++; if (ACPI_GET_DESCRIPTOR_TYPE (Object) != ACPI_DESC_TYPE_OPERAND) { AcpiOsPrintf ("Invalid Descriptor Type for Object %p [%s]\n", Object, AcpiUtGetDescriptorName (Object)); } } return (AE_OK); } /******************************************************************************* * * FUNCTION: AcpiDbCheckIntegrity * * PARAMETERS: None * * RETURN: None * * DESCRIPTION: Check entire namespace for data structure integrity * ******************************************************************************/ void AcpiDbCheckIntegrity ( void) { ACPI_INTEGRITY_INFO Info = {0,0}; /* Search all nodes in namespace */ (void) AcpiWalkNamespace (ACPI_TYPE_ANY, ACPI_ROOT_OBJECT, ACPI_UINT32_MAX, AcpiDbIntegrityWalk, NULL, (void *) &Info, NULL); AcpiOsPrintf ("Verified %u namespace nodes with %u Objects\n", Info.Nodes, Info.Objects); } /******************************************************************************* * * FUNCTION: AcpiDbWalkForReferences * * PARAMETERS: Callback from WalkNamespace * * RETURN: Status * * DESCRIPTION: Check if this namespace object refers to the target object * that is passed in as the context value. * * Note: Currently doesn't check subobjects within the Node's object * ******************************************************************************/ static ACPI_STATUS AcpiDbWalkForReferences ( ACPI_HANDLE ObjHandle, UINT32 NestingLevel, void *Context, void **ReturnValue) { ACPI_OPERAND_OBJECT *ObjDesc = (ACPI_OPERAND_OBJECT *) Context; ACPI_NAMESPACE_NODE *Node = (ACPI_NAMESPACE_NODE *) ObjHandle; /* Check for match against the namespace node itself */ if (Node == (void *) ObjDesc) { AcpiOsPrintf ("Object is a Node [%4.4s]\n", AcpiUtGetNodeName (Node)); } /* Check for match against the object attached to the node */ if (AcpiNsGetAttachedObject (Node) == ObjDesc) { AcpiOsPrintf ("Reference at Node->Object %p [%4.4s]\n", Node, AcpiUtGetNodeName (Node)); } return (AE_OK); } /******************************************************************************* * * FUNCTION: AcpiDbFindReferences * * PARAMETERS: ObjectArg - String with hex value of the object * * RETURN: None * * DESCRIPTION: Search namespace for all references to the input object * ******************************************************************************/ void AcpiDbFindReferences ( char *ObjectArg) { ACPI_OPERAND_OBJECT *ObjDesc; ACPI_SIZE Address; /* Convert string to object pointer */ Address = ACPI_STRTOUL (ObjectArg, NULL, 16); ObjDesc = ACPI_TO_POINTER (Address); /* Search all nodes in namespace */ (void) AcpiWalkNamespace (ACPI_TYPE_ANY, ACPI_ROOT_OBJECT, ACPI_UINT32_MAX, AcpiDbWalkForReferences, NULL, (void *) ObjDesc, NULL); } /******************************************************************************* * * FUNCTION: AcpiDbBusWalk * * PARAMETERS: Callback from WalkNamespace * * RETURN: Status * * DESCRIPTION: Display info about device objects that have a corresponding * _PRT method. * ******************************************************************************/ static ACPI_STATUS AcpiDbBusWalk ( ACPI_HANDLE ObjHandle, UINT32 NestingLevel, void *Context, void **ReturnValue) { ACPI_NAMESPACE_NODE *Node = (ACPI_NAMESPACE_NODE *) ObjHandle; ACPI_STATUS Status; ACPI_BUFFER Buffer; ACPI_NAMESPACE_NODE *TempNode; ACPI_DEVICE_INFO *Info; UINT32 i; if ((Node->Type != ACPI_TYPE_DEVICE) && (Node->Type != ACPI_TYPE_PROCESSOR)) { return (AE_OK); } /* Exit if there is no _PRT under this device */ Status = AcpiGetHandle (Node, METHOD_NAME__PRT, ACPI_CAST_PTR (ACPI_HANDLE, &TempNode)); if (ACPI_FAILURE (Status)) { return (AE_OK); } /* Get the full path to this device object */ Buffer.Length = ACPI_ALLOCATE_LOCAL_BUFFER; Status = AcpiNsHandleToPathname (ObjHandle, &Buffer); if (ACPI_FAILURE (Status)) { AcpiOsPrintf ("Could Not get pathname for object %p\n", ObjHandle); return (AE_OK); } Status = AcpiGetObjectInfo (ObjHandle, &Info); if (ACPI_FAILURE (Status)) { return (AE_OK); } /* Display the full path */ AcpiOsPrintf ("%-32s Type %X", (char *) Buffer.Pointer, Node->Type); ACPI_FREE (Buffer.Pointer); if (Info->Flags & ACPI_PCI_ROOT_BRIDGE) { AcpiOsPrintf (" - Is PCI Root Bridge"); } AcpiOsPrintf ("\n"); /* _PRT info */ AcpiOsPrintf ("_PRT: %p\n", TempNode); /* Dump _ADR, _HID, _UID, _CID */ if (Info->Valid & ACPI_VALID_ADR) { AcpiOsPrintf ("_ADR: %8.8X%8.8X\n", ACPI_FORMAT_UINT64 (Info->Address)); } else { AcpiOsPrintf ("_ADR: \n"); } if (Info->Valid & ACPI_VALID_HID) { AcpiOsPrintf ("_HID: %s\n", Info->HardwareId.String); } else { AcpiOsPrintf ("_HID: \n"); } if (Info->Valid & ACPI_VALID_UID) { AcpiOsPrintf ("_UID: %s\n", Info->UniqueId.String); } else { AcpiOsPrintf ("_UID: \n"); } if (Info->Valid & ACPI_VALID_CID) { for (i = 0; i < Info->CompatibleIdList.Count; i++) { AcpiOsPrintf ("_CID: %s\n", Info->CompatibleIdList.Ids[i].String); } } else { AcpiOsPrintf ("_CID: \n"); } ACPI_FREE (Info); return (AE_OK); } /******************************************************************************* * * FUNCTION: AcpiDbGetBusInfo * * PARAMETERS: None * * RETURN: None * * DESCRIPTION: Display info about system busses. * ******************************************************************************/ void AcpiDbGetBusInfo ( void) { /* Search all nodes in namespace */ (void) AcpiWalkNamespace (ACPI_TYPE_ANY, ACPI_ROOT_OBJECT, ACPI_UINT32_MAX, AcpiDbBusWalk, NULL, NULL, NULL); } #endif /* ACPI_DEBUGGER */ src/acpica/source/components/debugger/dbstats.c000066400000000000000000000515001231470457100221530ustar00rootroot00000000000000/******************************************************************************* * * Module Name: dbstats - Generation and display of ACPI table statistics * ******************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #include "acpi.h" #include "accommon.h" #include "acdebug.h" #include "acnamesp.h" #ifdef ACPI_DEBUGGER #define _COMPONENT ACPI_CA_DEBUGGER ACPI_MODULE_NAME ("dbstats") /* Local prototypes */ static void AcpiDbCountNamespaceObjects ( void); static void AcpiDbEnumerateObject ( ACPI_OPERAND_OBJECT *ObjDesc); static ACPI_STATUS AcpiDbClassifyOneObject ( ACPI_HANDLE ObjHandle, UINT32 NestingLevel, void *Context, void **ReturnValue); #if defined ACPI_DBG_TRACK_ALLOCATIONS || defined ACPI_USE_LOCAL_CACHE static void AcpiDbListInfo ( ACPI_MEMORY_LIST *List); #endif /* * Statistics subcommands */ static ACPI_DB_ARGUMENT_INFO AcpiDbStatTypes [] = { {"ALLOCATIONS"}, {"OBJECTS"}, {"MEMORY"}, {"MISC"}, {"TABLES"}, {"SIZES"}, {"STACK"}, {NULL} /* Must be null terminated */ }; #define CMD_STAT_ALLOCATIONS 0 #define CMD_STAT_OBJECTS 1 #define CMD_STAT_MEMORY 2 #define CMD_STAT_MISC 3 #define CMD_STAT_TABLES 4 #define CMD_STAT_SIZES 5 #define CMD_STAT_STACK 6 #if defined ACPI_DBG_TRACK_ALLOCATIONS || defined ACPI_USE_LOCAL_CACHE /******************************************************************************* * * FUNCTION: AcpiDbListInfo * * PARAMETERS: List - Memory list/cache to be displayed * * RETURN: None * * DESCRIPTION: Display information about the input memory list or cache. * ******************************************************************************/ static void AcpiDbListInfo ( ACPI_MEMORY_LIST *List) { #ifdef ACPI_DBG_TRACK_ALLOCATIONS UINT32 Outstanding; #endif AcpiOsPrintf ("\n%s\n", List->ListName); /* MaxDepth > 0 indicates a cache object */ if (List->MaxDepth > 0) { AcpiOsPrintf ( " Cache: [Depth MaxD Avail Size] %8.2X %8.2X %8.2X %8.2X\n", List->CurrentDepth, List->MaxDepth, List->MaxDepth - List->CurrentDepth, (List->CurrentDepth * List->ObjectSize)); } #ifdef ACPI_DBG_TRACK_ALLOCATIONS if (List->MaxDepth > 0) { AcpiOsPrintf ( " Cache: [Requests Hits Misses ObjSize] %8.2X %8.2X %8.2X %8.2X\n", List->Requests, List->Hits, List->Requests - List->Hits, List->ObjectSize); } Outstanding = AcpiDbGetCacheInfo (List); if (List->ObjectSize) { AcpiOsPrintf ( " Mem: [Alloc Free Max CurSize Outstanding] %8.2X %8.2X %8.2X %8.2X %8.2X\n", List->TotalAllocated, List->TotalFreed, List->MaxOccupied, Outstanding * List->ObjectSize, Outstanding); } else { AcpiOsPrintf ( " Mem: [Alloc Free Max CurSize Outstanding Total] %8.2X %8.2X %8.2X %8.2X %8.2X %8.2X\n", List->TotalAllocated, List->TotalFreed, List->MaxOccupied, List->CurrentTotalSize, Outstanding, List->TotalSize); } #endif } #endif /******************************************************************************* * * FUNCTION: AcpiDbEnumerateObject * * PARAMETERS: ObjDesc - Object to be counted * * RETURN: None * * DESCRIPTION: Add this object to the global counts, by object type. * Limited recursion handles subobjects and packages, and this * is probably acceptable within the AML debugger only. * ******************************************************************************/ static void AcpiDbEnumerateObject ( ACPI_OPERAND_OBJECT *ObjDesc) { UINT32 i; if (!ObjDesc) { return; } /* Enumerate this object first */ AcpiGbl_NumObjects++; if (ObjDesc->Common.Type > ACPI_TYPE_NS_NODE_MAX) { AcpiGbl_ObjTypeCountMisc++; } else { AcpiGbl_ObjTypeCount [ObjDesc->Common.Type]++; } /* Count the sub-objects */ switch (ObjDesc->Common.Type) { case ACPI_TYPE_PACKAGE: for (i = 0; i < ObjDesc->Package.Count; i++) { AcpiDbEnumerateObject (ObjDesc->Package.Elements[i]); } break; case ACPI_TYPE_DEVICE: AcpiDbEnumerateObject (ObjDesc->Device.NotifyList[0]); AcpiDbEnumerateObject (ObjDesc->Device.NotifyList[1]); AcpiDbEnumerateObject (ObjDesc->Device.Handler); break; case ACPI_TYPE_BUFFER_FIELD: if (AcpiNsGetSecondaryObject (ObjDesc)) { AcpiGbl_ObjTypeCount [ACPI_TYPE_BUFFER_FIELD]++; } break; case ACPI_TYPE_REGION: AcpiGbl_ObjTypeCount [ACPI_TYPE_LOCAL_REGION_FIELD ]++; AcpiDbEnumerateObject (ObjDesc->Region.Handler); break; case ACPI_TYPE_POWER: AcpiDbEnumerateObject (ObjDesc->PowerResource.NotifyList[0]); AcpiDbEnumerateObject (ObjDesc->PowerResource.NotifyList[1]); break; case ACPI_TYPE_PROCESSOR: AcpiDbEnumerateObject (ObjDesc->Processor.NotifyList[0]); AcpiDbEnumerateObject (ObjDesc->Processor.NotifyList[1]); AcpiDbEnumerateObject (ObjDesc->Processor.Handler); break; case ACPI_TYPE_THERMAL: AcpiDbEnumerateObject (ObjDesc->ThermalZone.NotifyList[0]); AcpiDbEnumerateObject (ObjDesc->ThermalZone.NotifyList[1]); AcpiDbEnumerateObject (ObjDesc->ThermalZone.Handler); break; default: break; } } /******************************************************************************* * * FUNCTION: AcpiDbClassifyOneObject * * PARAMETERS: Callback for WalkNamespace * * RETURN: Status * * DESCRIPTION: Enumerate both the object descriptor (including subobjects) and * the parent namespace node. * ******************************************************************************/ static ACPI_STATUS AcpiDbClassifyOneObject ( ACPI_HANDLE ObjHandle, UINT32 NestingLevel, void *Context, void **ReturnValue) { ACPI_NAMESPACE_NODE *Node; ACPI_OPERAND_OBJECT *ObjDesc; UINT32 Type; AcpiGbl_NumNodes++; Node = (ACPI_NAMESPACE_NODE *) ObjHandle; ObjDesc = AcpiNsGetAttachedObject (Node); AcpiDbEnumerateObject (ObjDesc); Type = Node->Type; if (Type > ACPI_TYPE_NS_NODE_MAX) { AcpiGbl_NodeTypeCountMisc++; } else { AcpiGbl_NodeTypeCount [Type]++; } return (AE_OK); #ifdef ACPI_FUTURE_IMPLEMENTATION /* TBD: These need to be counted during the initial parsing phase */ if (AcpiPsIsNamedOp (Op->Opcode)) { NumNodes++; } if (IsMethod) { NumMethodElements++; } NumGrammarElements++; Op = AcpiPsGetDepthNext (Root, Op); SizeOfParseTree = (NumGrammarElements - NumMethodElements) * (UINT32) sizeof (ACPI_PARSE_OBJECT); SizeOfMethodTrees = NumMethodElements * (UINT32) sizeof (ACPI_PARSE_OBJECT); SizeOfNodeEntries = NumNodes * (UINT32) sizeof (ACPI_NAMESPACE_NODE); SizeOfAcpiObjects = NumNodes * (UINT32) sizeof (ACPI_OPERAND_OBJECT); #endif } /******************************************************************************* * * FUNCTION: AcpiDbCountNamespaceObjects * * PARAMETERS: None * * RETURN: None * * DESCRIPTION: Count and classify the entire namespace, including all * namespace nodes and attached objects. * ******************************************************************************/ static void AcpiDbCountNamespaceObjects ( void) { UINT32 i; AcpiGbl_NumNodes = 0; AcpiGbl_NumObjects = 0; AcpiGbl_ObjTypeCountMisc = 0; for (i = 0; i < (ACPI_TYPE_NS_NODE_MAX -1); i++) { AcpiGbl_ObjTypeCount [i] = 0; AcpiGbl_NodeTypeCount [i] = 0; } (void) AcpiNsWalkNamespace (ACPI_TYPE_ANY, ACPI_ROOT_OBJECT, ACPI_UINT32_MAX, FALSE, AcpiDbClassifyOneObject, NULL, NULL, NULL); } /******************************************************************************* * * FUNCTION: AcpiDbDisplayStatistics * * PARAMETERS: TypeArg - Subcommand * * RETURN: Status * * DESCRIPTION: Display various statistics * ******************************************************************************/ ACPI_STATUS AcpiDbDisplayStatistics ( char *TypeArg) { UINT32 i; UINT32 Temp; AcpiUtStrupr (TypeArg); Temp = AcpiDbMatchArgument (TypeArg, AcpiDbStatTypes); if (Temp == ACPI_TYPE_NOT_FOUND) { AcpiOsPrintf ("Invalid or unsupported argument\n"); return (AE_OK); } switch (Temp) { case CMD_STAT_ALLOCATIONS: #ifdef ACPI_DBG_TRACK_ALLOCATIONS AcpiUtDumpAllocationInfo (); #endif break; case CMD_STAT_TABLES: AcpiOsPrintf ("ACPI Table Information (not implemented):\n\n"); break; case CMD_STAT_OBJECTS: AcpiDbCountNamespaceObjects (); AcpiOsPrintf ("\nObjects defined in the current namespace:\n\n"); AcpiOsPrintf ("%16.16s %10.10s %10.10s\n", "ACPI_TYPE", "NODES", "OBJECTS"); for (i = 0; i < ACPI_TYPE_NS_NODE_MAX; i++) { AcpiOsPrintf ("%16.16s % 10ld% 10ld\n", AcpiUtGetTypeName (i), AcpiGbl_NodeTypeCount [i], AcpiGbl_ObjTypeCount [i]); } AcpiOsPrintf ("%16.16s % 10ld% 10ld\n", "Misc/Unknown", AcpiGbl_NodeTypeCountMisc, AcpiGbl_ObjTypeCountMisc); AcpiOsPrintf ("%16.16s % 10ld% 10ld\n", "TOTALS:", AcpiGbl_NumNodes, AcpiGbl_NumObjects); break; case CMD_STAT_MEMORY: #ifdef ACPI_DBG_TRACK_ALLOCATIONS AcpiOsPrintf ("\n----Object Statistics (all in hex)---------\n"); AcpiDbListInfo (AcpiGbl_GlobalList); AcpiDbListInfo (AcpiGbl_NsNodeList); #endif #ifdef ACPI_USE_LOCAL_CACHE AcpiOsPrintf ("\n----Cache Statistics (all in hex)---------\n"); AcpiDbListInfo (AcpiGbl_OperandCache); AcpiDbListInfo (AcpiGbl_PsNodeCache); AcpiDbListInfo (AcpiGbl_PsNodeExtCache); AcpiDbListInfo (AcpiGbl_StateCache); #endif break; case CMD_STAT_MISC: AcpiOsPrintf ("\nMiscellaneous Statistics:\n\n"); AcpiOsPrintf ("Calls to AcpiPsFind:.. ........% 7ld\n", AcpiGbl_PsFindCount); AcpiOsPrintf ("Calls to AcpiNsLookup:..........% 7ld\n", AcpiGbl_NsLookupCount); AcpiOsPrintf ("\n"); AcpiOsPrintf ("Mutex usage:\n\n"); for (i = 0; i < ACPI_NUM_MUTEX; i++) { AcpiOsPrintf ("%-28s: % 7ld\n", AcpiUtGetMutexName (i), AcpiGbl_MutexInfo[i].UseCount); } break; case CMD_STAT_SIZES: AcpiOsPrintf ("\nInternal object sizes:\n\n"); AcpiOsPrintf ("Common %3d\n", sizeof (ACPI_OBJECT_COMMON)); AcpiOsPrintf ("Number %3d\n", sizeof (ACPI_OBJECT_INTEGER)); AcpiOsPrintf ("String %3d\n", sizeof (ACPI_OBJECT_STRING)); AcpiOsPrintf ("Buffer %3d\n", sizeof (ACPI_OBJECT_BUFFER)); AcpiOsPrintf ("Package %3d\n", sizeof (ACPI_OBJECT_PACKAGE)); AcpiOsPrintf ("BufferField %3d\n", sizeof (ACPI_OBJECT_BUFFER_FIELD)); AcpiOsPrintf ("Device %3d\n", sizeof (ACPI_OBJECT_DEVICE)); AcpiOsPrintf ("Event %3d\n", sizeof (ACPI_OBJECT_EVENT)); AcpiOsPrintf ("Method %3d\n", sizeof (ACPI_OBJECT_METHOD)); AcpiOsPrintf ("Mutex %3d\n", sizeof (ACPI_OBJECT_MUTEX)); AcpiOsPrintf ("Region %3d\n", sizeof (ACPI_OBJECT_REGION)); AcpiOsPrintf ("PowerResource %3d\n", sizeof (ACPI_OBJECT_POWER_RESOURCE)); AcpiOsPrintf ("Processor %3d\n", sizeof (ACPI_OBJECT_PROCESSOR)); AcpiOsPrintf ("ThermalZone %3d\n", sizeof (ACPI_OBJECT_THERMAL_ZONE)); AcpiOsPrintf ("RegionField %3d\n", sizeof (ACPI_OBJECT_REGION_FIELD)); AcpiOsPrintf ("BankField %3d\n", sizeof (ACPI_OBJECT_BANK_FIELD)); AcpiOsPrintf ("IndexField %3d\n", sizeof (ACPI_OBJECT_INDEX_FIELD)); AcpiOsPrintf ("Reference %3d\n", sizeof (ACPI_OBJECT_REFERENCE)); AcpiOsPrintf ("Notify %3d\n", sizeof (ACPI_OBJECT_NOTIFY_HANDLER)); AcpiOsPrintf ("AddressSpace %3d\n", sizeof (ACPI_OBJECT_ADDR_HANDLER)); AcpiOsPrintf ("Extra %3d\n", sizeof (ACPI_OBJECT_EXTRA)); AcpiOsPrintf ("Data %3d\n", sizeof (ACPI_OBJECT_DATA)); AcpiOsPrintf ("\n"); AcpiOsPrintf ("ParseObject %3d\n", sizeof (ACPI_PARSE_OBJ_COMMON)); AcpiOsPrintf ("ParseObjectNamed %3d\n", sizeof (ACPI_PARSE_OBJ_NAMED)); AcpiOsPrintf ("ParseObjectAsl %3d\n", sizeof (ACPI_PARSE_OBJ_ASL)); AcpiOsPrintf ("OperandObject %3d\n", sizeof (ACPI_OPERAND_OBJECT)); AcpiOsPrintf ("NamespaceNode %3d\n", sizeof (ACPI_NAMESPACE_NODE)); AcpiOsPrintf ("AcpiObject %3d\n", sizeof (ACPI_OBJECT)); AcpiOsPrintf ("\n"); AcpiOsPrintf ("Generic State %3d\n", sizeof (ACPI_GENERIC_STATE)); AcpiOsPrintf ("Common State %3d\n", sizeof (ACPI_COMMON_STATE)); AcpiOsPrintf ("Control State %3d\n", sizeof (ACPI_CONTROL_STATE)); AcpiOsPrintf ("Update State %3d\n", sizeof (ACPI_UPDATE_STATE)); AcpiOsPrintf ("Scope State %3d\n", sizeof (ACPI_SCOPE_STATE)); AcpiOsPrintf ("Parse Scope %3d\n", sizeof (ACPI_PSCOPE_STATE)); AcpiOsPrintf ("Package State %3d\n", sizeof (ACPI_PKG_STATE)); AcpiOsPrintf ("Thread State %3d\n", sizeof (ACPI_THREAD_STATE)); AcpiOsPrintf ("Result Values %3d\n", sizeof (ACPI_RESULT_VALUES)); AcpiOsPrintf ("Notify Info %3d\n", sizeof (ACPI_NOTIFY_INFO)); break; case CMD_STAT_STACK: #if defined(ACPI_DEBUG_OUTPUT) Temp = (UINT32) ACPI_PTR_DIFF (AcpiGbl_EntryStackPointer, AcpiGbl_LowestStackPointer); AcpiOsPrintf ("\nSubsystem Stack Usage:\n\n"); AcpiOsPrintf ("Entry Stack Pointer %p\n", AcpiGbl_EntryStackPointer); AcpiOsPrintf ("Lowest Stack Pointer %p\n", AcpiGbl_LowestStackPointer); AcpiOsPrintf ("Stack Use %X (%u)\n", Temp, Temp); AcpiOsPrintf ("Deepest Procedure Nesting %u\n", AcpiGbl_DeepestNesting); #endif break; default: break; } AcpiOsPrintf ("\n"); return (AE_OK); } #endif /* ACPI_DEBUGGER */ src/acpica/source/components/debugger/dbtest.c000077500000000000000000001065461231470457100220120ustar00rootroot00000000000000/******************************************************************************* * * Module Name: dbtest - Various debug-related tests * ******************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #include "acpi.h" #include "accommon.h" #include "acdebug.h" #include "acnamesp.h" #include "acpredef.h" #ifdef ACPI_DEBUGGER #define _COMPONENT ACPI_CA_DEBUGGER ACPI_MODULE_NAME ("dbtest") /* Local prototypes */ static void AcpiDbTestAllObjects ( void); static ACPI_STATUS AcpiDbTestOneObject ( ACPI_HANDLE ObjHandle, UINT32 NestingLevel, void *Context, void **ReturnValue); static ACPI_STATUS AcpiDbTestIntegerType ( ACPI_NAMESPACE_NODE *Node, UINT32 BitLength); static ACPI_STATUS AcpiDbTestBufferType ( ACPI_NAMESPACE_NODE *Node, UINT32 BitLength); static ACPI_STATUS AcpiDbTestStringType ( ACPI_NAMESPACE_NODE *Node, UINT32 ByteLength); static ACPI_STATUS AcpiDbReadFromObject ( ACPI_NAMESPACE_NODE *Node, ACPI_OBJECT_TYPE ExpectedType, ACPI_OBJECT **Value); static ACPI_STATUS AcpiDbWriteToObject ( ACPI_NAMESPACE_NODE *Node, ACPI_OBJECT *Value); static void AcpiDbEvaluateAllPredefinedNames ( char *CountArg); static ACPI_STATUS AcpiDbEvaluateOnePredefinedName ( ACPI_HANDLE ObjHandle, UINT32 NestingLevel, void *Context, void **ReturnValue); /* * Test subcommands */ static ACPI_DB_ARGUMENT_INFO AcpiDbTestTypes [] = { {"OBJECTS"}, {"PREDEFINED"}, {NULL} /* Must be null terminated */ }; #define CMD_TEST_OBJECTS 0 #define CMD_TEST_PREDEFINED 1 #define BUFFER_FILL_VALUE 0xFF /* * Support for the special debugger read/write control methods. * These methods are installed into the current namespace and are * used to read and write the various namespace objects. The point * is to force the AML interpreter do all of the work. */ #define ACPI_DB_READ_METHOD "\\_T98" #define ACPI_DB_WRITE_METHOD "\\_T99" static ACPI_HANDLE ReadHandle = NULL; static ACPI_HANDLE WriteHandle = NULL; /* ASL Definitions of the debugger read/write control methods */ #if 0 DefinitionBlock ("ssdt.aml", "SSDT", 2, "Intel", "DEBUG", 0x00000001) { Method (_T98, 1, NotSerialized) /* Read */ { Return (DeRefOf (Arg0)) } } DefinitionBlock ("ssdt2.aml", "SSDT", 2, "Intel", "DEBUG", 0x00000001) { Method (_T99, 2, NotSerialized) /* Write */ { Store (Arg1, Arg0) } } #endif static unsigned char ReadMethodCode[] = { 0x53,0x53,0x44,0x54,0x2E,0x00,0x00,0x00, /* 00000000 "SSDT...." */ 0x02,0xC9,0x49,0x6E,0x74,0x65,0x6C,0x00, /* 00000008 "..Intel." */ 0x44,0x45,0x42,0x55,0x47,0x00,0x00,0x00, /* 00000010 "DEBUG..." */ 0x01,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C, /* 00000018 "....INTL" */ 0x18,0x12,0x13,0x20,0x14,0x09,0x5F,0x54, /* 00000020 "... .._T" */ 0x39,0x38,0x01,0xA4,0x83,0x68 /* 00000028 "98...h" */ }; static unsigned char WriteMethodCode[] = { 0x53,0x53,0x44,0x54,0x2E,0x00,0x00,0x00, /* 00000000 "SSDT...." */ 0x02,0x15,0x49,0x6E,0x74,0x65,0x6C,0x00, /* 00000008 "..Intel." */ 0x44,0x45,0x42,0x55,0x47,0x00,0x00,0x00, /* 00000010 "DEBUG..." */ 0x01,0x00,0x00,0x00,0x49,0x4E,0x54,0x4C, /* 00000018 "....INTL" */ 0x18,0x12,0x13,0x20,0x14,0x09,0x5F,0x54, /* 00000020 "... .._T" */ 0x39,0x39,0x02,0x70,0x69,0x68 /* 00000028 "99.pih" */ }; /******************************************************************************* * * FUNCTION: AcpiDbExecuteTest * * PARAMETERS: TypeArg - Subcommand * * RETURN: None * * DESCRIPTION: Execute various debug tests. * * Note: Code is prepared for future expansion of the TEST command. * ******************************************************************************/ void AcpiDbExecuteTest ( char *TypeArg) { UINT32 Temp; AcpiUtStrupr (TypeArg); Temp = AcpiDbMatchArgument (TypeArg, AcpiDbTestTypes); if (Temp == ACPI_TYPE_NOT_FOUND) { AcpiOsPrintf ("Invalid or unsupported argument\n"); return; } switch (Temp) { case CMD_TEST_OBJECTS: AcpiDbTestAllObjects (); break; case CMD_TEST_PREDEFINED: AcpiDbEvaluateAllPredefinedNames (NULL); break; default: break; } } /******************************************************************************* * * FUNCTION: AcpiDbTestAllObjects * * PARAMETERS: None * * RETURN: None * * DESCRIPTION: This test implements the OBJECTS subcommand. It exercises the * namespace by reading/writing/comparing all data objects such * as integers, strings, buffers, fields, buffer fields, etc. * ******************************************************************************/ static void AcpiDbTestAllObjects ( void) { ACPI_STATUS Status; /* Install the debugger read-object control method if necessary */ if (!ReadHandle) { Status = AcpiInstallMethod (ReadMethodCode); if (ACPI_FAILURE (Status)) { AcpiOsPrintf ("%s, Could not install debugger read method\n", AcpiFormatException (Status)); return; } Status = AcpiGetHandle (NULL, ACPI_DB_READ_METHOD, &ReadHandle); if (ACPI_FAILURE (Status)) { AcpiOsPrintf ("Could not obtain handle for debug method %s\n", ACPI_DB_READ_METHOD); return; } } /* Install the debugger write-object control method if necessary */ if (!WriteHandle) { Status = AcpiInstallMethod (WriteMethodCode); if (ACPI_FAILURE (Status)) { AcpiOsPrintf ("%s, Could not install debugger write method\n", AcpiFormatException (Status)); return; } Status = AcpiGetHandle (NULL, ACPI_DB_WRITE_METHOD, &WriteHandle); if (ACPI_FAILURE (Status)) { AcpiOsPrintf ("Could not obtain handle for debug method %s\n", ACPI_DB_WRITE_METHOD); return; } } /* Walk the entire namespace, testing each supported named data object */ (void) AcpiWalkNamespace (ACPI_TYPE_ANY, ACPI_ROOT_OBJECT, ACPI_UINT32_MAX, AcpiDbTestOneObject, NULL, NULL, NULL); } /******************************************************************************* * * FUNCTION: AcpiDbTestOneObject * * PARAMETERS: ACPI_WALK_CALLBACK * * RETURN: Status * * DESCRIPTION: Test one namespace object. Supported types are Integer, * String, Buffer, BufferField, and FieldUnit. All other object * types are simply ignored. * * Note: Support for Packages is not implemented. * ******************************************************************************/ static ACPI_STATUS AcpiDbTestOneObject ( ACPI_HANDLE ObjHandle, UINT32 NestingLevel, void *Context, void **ReturnValue) { ACPI_NAMESPACE_NODE *Node; ACPI_OPERAND_OBJECT *ObjDesc; ACPI_OPERAND_OBJECT *RegionObj; ACPI_OBJECT_TYPE LocalType; UINT32 BitLength = 0; UINT32 ByteLength = 0; ACPI_STATUS Status = AE_OK; Node = ACPI_CAST_PTR (ACPI_NAMESPACE_NODE, ObjHandle); ObjDesc = Node->Object; /* * For the supported types, get the actual bit length or * byte length. Map the type to one of Integer/String/Buffer. */ switch (Node->Type) { case ACPI_TYPE_INTEGER: /* Integer width is either 32 or 64 */ LocalType = ACPI_TYPE_INTEGER; BitLength = AcpiGbl_IntegerBitWidth; break; case ACPI_TYPE_STRING: LocalType = ACPI_TYPE_STRING; ByteLength = ObjDesc->String.Length; break; case ACPI_TYPE_BUFFER: LocalType = ACPI_TYPE_BUFFER; ByteLength = ObjDesc->Buffer.Length; BitLength = ByteLength * 8; break; case ACPI_TYPE_FIELD_UNIT: case ACPI_TYPE_BUFFER_FIELD: case ACPI_TYPE_LOCAL_REGION_FIELD: case ACPI_TYPE_LOCAL_INDEX_FIELD: case ACPI_TYPE_LOCAL_BANK_FIELD: LocalType = ACPI_TYPE_INTEGER; if (ObjDesc) { /* * Returned object will be a Buffer if the field length * is larger than the size of an Integer (32 or 64 bits * depending on the DSDT version). */ BitLength = ObjDesc->CommonField.BitLength; ByteLength = ACPI_ROUND_BITS_UP_TO_BYTES (BitLength); if (BitLength > AcpiGbl_IntegerBitWidth) { LocalType = ACPI_TYPE_BUFFER; } } break; default: /* Ignore all other types */ return (AE_OK); } /* Emit the common prefix: Type:Name */ AcpiOsPrintf ("%14s: %4.4s", AcpiUtGetTypeName (Node->Type), Node->Name.Ascii); if (!ObjDesc) { AcpiOsPrintf (" Ignoring, no attached object\n"); return (AE_OK); } /* * Check for unsupported region types. Note: AcpiExec simulates * access to SystemMemory, SystemIO, PCI_Config, and EC. */ switch (Node->Type) { case ACPI_TYPE_LOCAL_REGION_FIELD: RegionObj = ObjDesc->Field.RegionObj; switch (RegionObj->Region.SpaceId) { case ACPI_ADR_SPACE_SYSTEM_MEMORY: case ACPI_ADR_SPACE_SYSTEM_IO: case ACPI_ADR_SPACE_PCI_CONFIG: case ACPI_ADR_SPACE_EC: break; default: AcpiOsPrintf (" %s space is not supported [%4.4s]\n", AcpiUtGetRegionName (RegionObj->Region.SpaceId), RegionObj->Region.Node->Name.Ascii); return (AE_OK); } break; default: break; } /* At this point, we have resolved the object to one of the major types */ switch (LocalType) { case ACPI_TYPE_INTEGER: Status = AcpiDbTestIntegerType (Node, BitLength); break; case ACPI_TYPE_STRING: Status = AcpiDbTestStringType (Node, ByteLength); break; case ACPI_TYPE_BUFFER: Status = AcpiDbTestBufferType (Node, BitLength); break; default: AcpiOsPrintf (" Ignoring, type not implemented (%2.2X)", LocalType); break; } switch (Node->Type) { case ACPI_TYPE_LOCAL_REGION_FIELD: RegionObj = ObjDesc->Field.RegionObj; AcpiOsPrintf (" (%s)", AcpiUtGetRegionName (RegionObj->Region.SpaceId)); break; default: break; } AcpiOsPrintf ("\n"); return (Status); } /******************************************************************************* * * FUNCTION: AcpiDbTestIntegerType * * PARAMETERS: Node - Parent NS node for the object * BitLength - Actual length of the object. Used for * support of arbitrary length FieldUnit * and BufferField objects. * * RETURN: Status * * DESCRIPTION: Test read/write for an Integer-valued object. Performs a * write/read/compare of an arbitrary new value, then performs * a write/read/compare of the original value. * ******************************************************************************/ static ACPI_STATUS AcpiDbTestIntegerType ( ACPI_NAMESPACE_NODE *Node, UINT32 BitLength) { ACPI_OBJECT *Temp1 = NULL; ACPI_OBJECT *Temp2 = NULL; ACPI_OBJECT *Temp3 = NULL; ACPI_OBJECT WriteValue; UINT64 ValueToWrite; ACPI_STATUS Status; if (BitLength > 64) { AcpiOsPrintf (" Invalid length for an Integer: %u", BitLength); return (AE_OK); } /* Read the original value */ Status = AcpiDbReadFromObject (Node, ACPI_TYPE_INTEGER, &Temp1); if (ACPI_FAILURE (Status)) { return (Status); } AcpiOsPrintf (" (%4.4X/%3.3X) %8.8X%8.8X", BitLength, ACPI_ROUND_BITS_UP_TO_BYTES (BitLength), ACPI_FORMAT_UINT64 (Temp1->Integer.Value)); ValueToWrite = ACPI_UINT64_MAX >> (64 - BitLength); if (Temp1->Integer.Value == ValueToWrite) { ValueToWrite = 0; } /* Write a new value */ WriteValue.Type = ACPI_TYPE_INTEGER; WriteValue.Integer.Value = ValueToWrite; Status = AcpiDbWriteToObject (Node, &WriteValue); if (ACPI_FAILURE (Status)) { goto Exit; } /* Ensure that we can read back the new value */ Status = AcpiDbReadFromObject (Node, ACPI_TYPE_INTEGER, &Temp2); if (ACPI_FAILURE (Status)) { goto Exit; } if (Temp2->Integer.Value != ValueToWrite) { AcpiOsPrintf (" MISMATCH 2: %8.8X%8.8X, expecting %8.8X%8.8X", ACPI_FORMAT_UINT64 (Temp2->Integer.Value), ACPI_FORMAT_UINT64 (ValueToWrite)); } /* Write back the original value */ WriteValue.Integer.Value = Temp1->Integer.Value; Status = AcpiDbWriteToObject (Node, &WriteValue); if (ACPI_FAILURE (Status)) { goto Exit; } /* Ensure that we can read back the original value */ Status = AcpiDbReadFromObject (Node, ACPI_TYPE_INTEGER, &Temp3); if (ACPI_FAILURE (Status)) { goto Exit; } if (Temp3->Integer.Value != Temp1->Integer.Value) { AcpiOsPrintf (" MISMATCH 3: %8.8X%8.8X, expecting %8.8X%8.8X", ACPI_FORMAT_UINT64 (Temp3->Integer.Value), ACPI_FORMAT_UINT64 (Temp1->Integer.Value)); } Exit: if (Temp1) {AcpiOsFree (Temp1);} if (Temp2) {AcpiOsFree (Temp2);} if (Temp3) {AcpiOsFree (Temp3);} return (AE_OK); } /******************************************************************************* * * FUNCTION: AcpiDbTestBufferType * * PARAMETERS: Node - Parent NS node for the object * BitLength - Actual length of the object. * * RETURN: Status * * DESCRIPTION: Test read/write for an Buffer-valued object. Performs a * write/read/compare of an arbitrary new value, then performs * a write/read/compare of the original value. * ******************************************************************************/ static ACPI_STATUS AcpiDbTestBufferType ( ACPI_NAMESPACE_NODE *Node, UINT32 BitLength) { ACPI_OBJECT *Temp1 = NULL; ACPI_OBJECT *Temp2 = NULL; ACPI_OBJECT *Temp3 = NULL; UINT8 *Buffer; ACPI_OBJECT WriteValue; ACPI_STATUS Status; UINT32 ByteLength; UINT32 i; UINT8 ExtraBits; ByteLength = ACPI_ROUND_BITS_UP_TO_BYTES (BitLength); if (ByteLength == 0) { AcpiOsPrintf (" Ignoring zero length buffer"); return (AE_OK); } /* Allocate a local buffer */ Buffer = ACPI_ALLOCATE_ZEROED (ByteLength); if (!Buffer) { return (AE_NO_MEMORY); } /* Read the original value */ Status = AcpiDbReadFromObject (Node, ACPI_TYPE_BUFFER, &Temp1); if (ACPI_FAILURE (Status)) { goto Exit; } /* Emit a few bytes of the buffer */ AcpiOsPrintf (" (%4.4X/%3.3X)", BitLength, Temp1->Buffer.Length); for (i = 0; ((i < 4) && (i < ByteLength)); i++) { AcpiOsPrintf (" %2.2X", Temp1->Buffer.Pointer[i]); } AcpiOsPrintf ("... "); /* * Write a new value. * * Handle possible extra bits at the end of the buffer. Can * happen for FieldUnits larger than an integer, but the bit * count is not an integral number of bytes. Zero out the * unused bits. */ ACPI_MEMSET (Buffer, BUFFER_FILL_VALUE, ByteLength); ExtraBits = BitLength % 8; if (ExtraBits) { Buffer [ByteLength - 1] = ACPI_MASK_BITS_ABOVE (ExtraBits); } WriteValue.Type = ACPI_TYPE_BUFFER; WriteValue.Buffer.Length = ByteLength; WriteValue.Buffer.Pointer = Buffer; Status = AcpiDbWriteToObject (Node, &WriteValue); if (ACPI_FAILURE (Status)) { goto Exit; } /* Ensure that we can read back the new value */ Status = AcpiDbReadFromObject (Node, ACPI_TYPE_BUFFER, &Temp2); if (ACPI_FAILURE (Status)) { goto Exit; } if (ACPI_MEMCMP (Temp2->Buffer.Pointer, Buffer, ByteLength)) { AcpiOsPrintf (" MISMATCH 2: New buffer value"); } /* Write back the original value */ WriteValue.Buffer.Length = ByteLength; WriteValue.Buffer.Pointer = Temp1->Buffer.Pointer; Status = AcpiDbWriteToObject (Node, &WriteValue); if (ACPI_FAILURE (Status)) { goto Exit; } /* Ensure that we can read back the original value */ Status = AcpiDbReadFromObject (Node, ACPI_TYPE_BUFFER, &Temp3); if (ACPI_FAILURE (Status)) { goto Exit; } if (ACPI_MEMCMP (Temp1->Buffer.Pointer, Temp3->Buffer.Pointer, ByteLength)) { AcpiOsPrintf (" MISMATCH 3: While restoring original buffer"); } Exit: ACPI_FREE (Buffer); if (Temp1) {AcpiOsFree (Temp1);} if (Temp2) {AcpiOsFree (Temp2);} if (Temp3) {AcpiOsFree (Temp3);} return (Status); } /******************************************************************************* * * FUNCTION: AcpiDbTestStringType * * PARAMETERS: Node - Parent NS node for the object * ByteLength - Actual length of the object. * * RETURN: Status * * DESCRIPTION: Test read/write for an String-valued object. Performs a * write/read/compare of an arbitrary new value, then performs * a write/read/compare of the original value. * ******************************************************************************/ static ACPI_STATUS AcpiDbTestStringType ( ACPI_NAMESPACE_NODE *Node, UINT32 ByteLength) { ACPI_OBJECT *Temp1 = NULL; ACPI_OBJECT *Temp2 = NULL; ACPI_OBJECT *Temp3 = NULL; char *ValueToWrite = "Test String from AML Debugger"; ACPI_OBJECT WriteValue; ACPI_STATUS Status; /* Read the original value */ Status = AcpiDbReadFromObject (Node, ACPI_TYPE_STRING, &Temp1); if (ACPI_FAILURE (Status)) { return (Status); } AcpiOsPrintf (" (%4.4X/%3.3X) \"%s\"", (Temp1->String.Length * 8), Temp1->String.Length, Temp1->String.Pointer); /* Write a new value */ WriteValue.Type = ACPI_TYPE_STRING; WriteValue.String.Length = ACPI_STRLEN (ValueToWrite); WriteValue.String.Pointer = ValueToWrite; Status = AcpiDbWriteToObject (Node, &WriteValue); if (ACPI_FAILURE (Status)) { goto Exit; } /* Ensure that we can read back the new value */ Status = AcpiDbReadFromObject (Node, ACPI_TYPE_STRING, &Temp2); if (ACPI_FAILURE (Status)) { goto Exit; } if (ACPI_STRCMP (Temp2->String.Pointer, ValueToWrite)) { AcpiOsPrintf (" MISMATCH 2: %s, expecting %s", Temp2->String.Pointer, ValueToWrite); } /* Write back the original value */ WriteValue.String.Length = ACPI_STRLEN (Temp1->String.Pointer); WriteValue.String.Pointer = Temp1->String.Pointer; Status = AcpiDbWriteToObject (Node, &WriteValue); if (ACPI_FAILURE (Status)) { goto Exit; } /* Ensure that we can read back the original value */ Status = AcpiDbReadFromObject (Node, ACPI_TYPE_STRING, &Temp3); if (ACPI_FAILURE (Status)) { goto Exit; } if (ACPI_STRCMP (Temp1->String.Pointer, Temp3->String.Pointer)) { AcpiOsPrintf (" MISMATCH 3: %s, expecting %s", Temp3->String.Pointer, Temp1->String.Pointer); } Exit: if (Temp1) {AcpiOsFree (Temp1);} if (Temp2) {AcpiOsFree (Temp2);} if (Temp3) {AcpiOsFree (Temp3);} return (Status); } /******************************************************************************* * * FUNCTION: AcpiDbReadFromObject * * PARAMETERS: Node - Parent NS node for the object * ExpectedType - Object type expected from the read * Value - Where the value read is returned * * RETURN: Status * * DESCRIPTION: Performs a read from the specified object by invoking the * special debugger control method that reads the object. Thus, * the AML interpreter is doing all of the work, increasing the * validity of the test. * ******************************************************************************/ static ACPI_STATUS AcpiDbReadFromObject ( ACPI_NAMESPACE_NODE *Node, ACPI_OBJECT_TYPE ExpectedType, ACPI_OBJECT **Value) { ACPI_OBJECT *RetValue; ACPI_OBJECT_LIST ParamObjects; ACPI_OBJECT Params[2]; ACPI_BUFFER ReturnObj; ACPI_STATUS Status; Params[0].Type = ACPI_TYPE_LOCAL_REFERENCE; Params[0].Reference.ActualType = Node->Type; Params[0].Reference.Handle = ACPI_CAST_PTR (ACPI_HANDLE, Node); ParamObjects.Count = 1; ParamObjects.Pointer = Params; ReturnObj.Length = ACPI_ALLOCATE_BUFFER; AcpiGbl_MethodExecuting = TRUE; Status = AcpiEvaluateObject (ReadHandle, NULL, &ParamObjects, &ReturnObj); AcpiGbl_MethodExecuting = FALSE; if (ACPI_FAILURE (Status)) { AcpiOsPrintf ("Could not read from object, %s", AcpiFormatException (Status)); return (Status); } RetValue = (ACPI_OBJECT *) ReturnObj.Pointer; switch (RetValue->Type) { case ACPI_TYPE_INTEGER: case ACPI_TYPE_BUFFER: case ACPI_TYPE_STRING: /* * Did we receive the type we wanted? Most important for the * Integer/Buffer case (when a field is larger than an Integer, * it should return a Buffer). */ if (RetValue->Type != ExpectedType) { AcpiOsPrintf (" Type mismatch: Expected %s, Received %s", AcpiUtGetTypeName (ExpectedType), AcpiUtGetTypeName (RetValue->Type)); return (AE_TYPE); } *Value = RetValue; break; default: AcpiOsPrintf (" Unsupported return object type, %s", AcpiUtGetTypeName (RetValue->Type)); AcpiOsFree (ReturnObj.Pointer); return (AE_TYPE); } return (Status); } /******************************************************************************* * * FUNCTION: AcpiDbWriteToObject * * PARAMETERS: Node - Parent NS node for the object * Value - Value to be written * * RETURN: Status * * DESCRIPTION: Performs a write to the specified object by invoking the * special debugger control method that writes the object. Thus, * the AML interpreter is doing all of the work, increasing the * validity of the test. * ******************************************************************************/ static ACPI_STATUS AcpiDbWriteToObject ( ACPI_NAMESPACE_NODE *Node, ACPI_OBJECT *Value) { ACPI_OBJECT_LIST ParamObjects; ACPI_OBJECT Params[2]; ACPI_STATUS Status; Params[0].Type = ACPI_TYPE_LOCAL_REFERENCE; Params[0].Reference.ActualType = Node->Type; Params[0].Reference.Handle = ACPI_CAST_PTR (ACPI_HANDLE, Node); /* Copy the incoming user parameter */ ACPI_MEMCPY (&Params[1], Value, sizeof (ACPI_OBJECT)); ParamObjects.Count = 2; ParamObjects.Pointer = Params; AcpiGbl_MethodExecuting = TRUE; Status = AcpiEvaluateObject (WriteHandle, NULL, &ParamObjects, NULL); AcpiGbl_MethodExecuting = FALSE; if (ACPI_FAILURE (Status)) { AcpiOsPrintf ("Could not write to object, %s", AcpiFormatException (Status)); } return (Status); } /******************************************************************************* * * FUNCTION: AcpiDbEvaluateAllPredefinedNames * * PARAMETERS: CountArg - Max number of methods to execute * * RETURN: None * * DESCRIPTION: Namespace batch execution. Execute predefined names in the * namespace, up to the max count, if specified. * ******************************************************************************/ static void AcpiDbEvaluateAllPredefinedNames ( char *CountArg) { ACPI_DB_EXECUTE_WALK Info; Info.Count = 0; Info.MaxCount = ACPI_UINT32_MAX; if (CountArg) { Info.MaxCount = ACPI_STRTOUL (CountArg, NULL, 0); } /* Search all nodes in namespace */ (void) AcpiWalkNamespace (ACPI_TYPE_ANY, ACPI_ROOT_OBJECT, ACPI_UINT32_MAX, AcpiDbEvaluateOnePredefinedName, NULL, (void *) &Info, NULL); AcpiOsPrintf ("Evaluated %u predefined names in the namespace\n", Info.Count); } /******************************************************************************* * * FUNCTION: AcpiDbEvaluateOnePredefinedName * * PARAMETERS: Callback from WalkNamespace * * RETURN: Status * * DESCRIPTION: Batch execution module. Currently only executes predefined * ACPI names. * ******************************************************************************/ static ACPI_STATUS AcpiDbEvaluateOnePredefinedName ( ACPI_HANDLE ObjHandle, UINT32 NestingLevel, void *Context, void **ReturnValue) { ACPI_NAMESPACE_NODE *Node = (ACPI_NAMESPACE_NODE *) ObjHandle; ACPI_DB_EXECUTE_WALK *Info = (ACPI_DB_EXECUTE_WALK *) Context; char *Pathname; const ACPI_PREDEFINED_INFO *Predefined; ACPI_DEVICE_INFO *ObjInfo; ACPI_OBJECT_LIST ParamObjects; ACPI_OBJECT Params[ACPI_METHOD_NUM_ARGS]; ACPI_OBJECT *ThisParam; ACPI_BUFFER ReturnObj; ACPI_STATUS Status; UINT16 ArgTypeList; UINT8 ArgCount; UINT8 ArgType; UINT32 i; /* The name must be a predefined ACPI name */ Predefined = AcpiUtMatchPredefinedMethod (Node->Name.Ascii); if (!Predefined) { return (AE_OK); } if (Node->Type == ACPI_TYPE_LOCAL_SCOPE) { return (AE_OK); } Pathname = AcpiNsGetExternalPathname (Node); if (!Pathname) { return (AE_OK); } /* Get the object info for number of method parameters */ Status = AcpiGetObjectInfo (ObjHandle, &ObjInfo); if (ACPI_FAILURE (Status)) { return (Status); } ParamObjects.Count = 0; ParamObjects.Pointer = NULL; if (ObjInfo->Type == ACPI_TYPE_METHOD) { /* Setup default parameters (with proper types) */ ArgTypeList = Predefined->Info.ArgumentList; ArgCount = METHOD_GET_ARG_COUNT (ArgTypeList); /* * Setup the ACPI-required number of arguments, regardless of what * the actual method defines. If there is a difference, then the * method is wrong and a warning will be issued during execution. */ ThisParam = Params; for (i = 0; i < ArgCount; i++) { ArgType = METHOD_GET_NEXT_TYPE (ArgTypeList); ThisParam->Type = ArgType; switch (ArgType) { case ACPI_TYPE_INTEGER: ThisParam->Integer.Value = 1; break; case ACPI_TYPE_STRING: ThisParam->String.Pointer = "This is the default argument string"; ThisParam->String.Length = ACPI_STRLEN (ThisParam->String.Pointer); break; case ACPI_TYPE_BUFFER: ThisParam->Buffer.Pointer = (UINT8 *) Params; /* just a garbage buffer */ ThisParam->Buffer.Length = 48; break; case ACPI_TYPE_PACKAGE: ThisParam->Package.Elements = NULL; ThisParam->Package.Count = 0; break; default: AcpiOsPrintf ("%s: Unsupported argument type: %u\n", Pathname, ArgType); break; } ThisParam++; } ParamObjects.Count = ArgCount; ParamObjects.Pointer = Params; } ACPI_FREE (ObjInfo); ReturnObj.Pointer = NULL; ReturnObj.Length = ACPI_ALLOCATE_BUFFER; /* Do the actual method execution */ AcpiGbl_MethodExecuting = TRUE; Status = AcpiEvaluateObject (Node, NULL, &ParamObjects, &ReturnObj); AcpiOsPrintf ("%-32s returned %s\n", Pathname, AcpiFormatException (Status)); AcpiGbl_MethodExecuting = FALSE; ACPI_FREE (Pathname); /* Ignore status from method execution */ Status = AE_OK; /* Update count, check if we have executed enough methods */ Info->Count++; if (Info->Count >= Info->MaxCount) { Status = AE_CTRL_TERMINATE; } return (Status); } #endif /* ACPI_DEBUGGER */ src/acpica/source/components/debugger/dbutils.c000066400000000000000000000424361231470457100221650ustar00rootroot00000000000000/******************************************************************************* * * Module Name: dbutils - AML debugger utilities * ******************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #include "acpi.h" #include "accommon.h" #include "acnamesp.h" #include "acdebug.h" #include "acdisasm.h" #ifdef ACPI_DEBUGGER #define _COMPONENT ACPI_CA_DEBUGGER ACPI_MODULE_NAME ("dbutils") /* Local prototypes */ #ifdef ACPI_OBSOLETE_FUNCTIONS ACPI_STATUS AcpiDbSecondPassParse ( ACPI_PARSE_OBJECT *Root); void AcpiDbDumpBuffer ( UINT32 Address); #endif static char *Converter = "0123456789ABCDEF"; /******************************************************************************* * * FUNCTION: AcpiDbMatchArgument * * PARAMETERS: UserArgument - User command line * Arguments - Array of commands to match against * * RETURN: Index into command array or ACPI_TYPE_NOT_FOUND if not found * * DESCRIPTION: Search command array for a command match * ******************************************************************************/ ACPI_OBJECT_TYPE AcpiDbMatchArgument ( char *UserArgument, ACPI_DB_ARGUMENT_INFO *Arguments) { UINT32 i; if (!UserArgument || UserArgument[0] == 0) { return (ACPI_TYPE_NOT_FOUND); } for (i = 0; Arguments[i].Name; i++) { if (ACPI_STRSTR (Arguments[i].Name, UserArgument) == Arguments[i].Name) { return (i); } } /* Argument not recognized */ return (ACPI_TYPE_NOT_FOUND); } /******************************************************************************* * * FUNCTION: AcpiDbSetOutputDestination * * PARAMETERS: OutputFlags - Current flags word * * RETURN: None * * DESCRIPTION: Set the current destination for debugger output. Also sets * the debug output level accordingly. * ******************************************************************************/ void AcpiDbSetOutputDestination ( UINT32 OutputFlags) { AcpiGbl_DbOutputFlags = (UINT8) OutputFlags; if ((OutputFlags & ACPI_DB_REDIRECTABLE_OUTPUT) && AcpiGbl_DbOutputToFile) { AcpiDbgLevel = AcpiGbl_DbDebugLevel; } else { AcpiDbgLevel = AcpiGbl_DbConsoleDebugLevel; } } /******************************************************************************* * * FUNCTION: AcpiDbDumpExternalObject * * PARAMETERS: ObjDesc - External ACPI object to dump * Level - Nesting level. * * RETURN: None * * DESCRIPTION: Dump the contents of an ACPI external object * ******************************************************************************/ void AcpiDbDumpExternalObject ( ACPI_OBJECT *ObjDesc, UINT32 Level) { UINT32 i; if (!ObjDesc) { AcpiOsPrintf ("[Null Object]\n"); return; } for (i = 0; i < Level; i++) { AcpiOsPrintf (" "); } switch (ObjDesc->Type) { case ACPI_TYPE_ANY: AcpiOsPrintf ("[Null Object] (Type=0)\n"); break; case ACPI_TYPE_INTEGER: AcpiOsPrintf ("[Integer] = %8.8X%8.8X\n", ACPI_FORMAT_UINT64 (ObjDesc->Integer.Value)); break; case ACPI_TYPE_STRING: AcpiOsPrintf ("[String] Length %.2X = ", ObjDesc->String.Length); AcpiUtPrintString (ObjDesc->String.Pointer, ACPI_UINT8_MAX); AcpiOsPrintf ("\n"); break; case ACPI_TYPE_BUFFER: AcpiOsPrintf ("[Buffer] Length %.2X = ", ObjDesc->Buffer.Length); if (ObjDesc->Buffer.Length) { if (ObjDesc->Buffer.Length > 16) { AcpiOsPrintf ("\n"); } AcpiUtDebugDumpBuffer (ACPI_CAST_PTR (UINT8, ObjDesc->Buffer.Pointer), ObjDesc->Buffer.Length, DB_BYTE_DISPLAY, _COMPONENT); } else { AcpiOsPrintf ("\n"); } break; case ACPI_TYPE_PACKAGE: AcpiOsPrintf ("[Package] Contains %u Elements:\n", ObjDesc->Package.Count); for (i = 0; i < ObjDesc->Package.Count; i++) { AcpiDbDumpExternalObject (&ObjDesc->Package.Elements[i], Level+1); } break; case ACPI_TYPE_LOCAL_REFERENCE: AcpiOsPrintf ("[Object Reference] = "); AcpiDmDisplayInternalObject (ObjDesc->Reference.Handle, NULL); break; case ACPI_TYPE_PROCESSOR: AcpiOsPrintf ("[Processor]\n"); break; case ACPI_TYPE_POWER: AcpiOsPrintf ("[Power Resource]\n"); break; default: AcpiOsPrintf ("[Unknown Type] %X\n", ObjDesc->Type); break; } } /******************************************************************************* * * FUNCTION: AcpiDbPrepNamestring * * PARAMETERS: Name - String to prepare * * RETURN: None * * DESCRIPTION: Translate all forward slashes and dots to backslashes. * ******************************************************************************/ void AcpiDbPrepNamestring ( char *Name) { if (!Name) { return; } AcpiUtStrupr (Name); /* Convert a leading forward slash to a backslash */ if (*Name == '/') { *Name = '\\'; } /* Ignore a leading backslash, this is the root prefix */ if (ACPI_IS_ROOT_PREFIX (*Name)) { Name++; } /* Convert all slash path separators to dots */ while (*Name) { if ((*Name == '/') || (*Name == '\\')) { *Name = '.'; } Name++; } } /******************************************************************************* * * FUNCTION: AcpiDbLocalNsLookup * * PARAMETERS: Name - Name to lookup * * RETURN: Pointer to a namespace node, null on failure * * DESCRIPTION: Lookup a name in the ACPI namespace * * Note: Currently begins search from the root. Could be enhanced to use * the current prefix (scope) node as the search beginning point. * ******************************************************************************/ ACPI_NAMESPACE_NODE * AcpiDbLocalNsLookup ( char *Name) { char *InternalPath; ACPI_STATUS Status; ACPI_NAMESPACE_NODE *Node = NULL; AcpiDbPrepNamestring (Name); /* Build an internal namestring */ Status = AcpiNsInternalizeName (Name, &InternalPath); if (ACPI_FAILURE (Status)) { AcpiOsPrintf ("Invalid namestring: %s\n", Name); return (NULL); } /* * Lookup the name. * (Uses root node as the search starting point) */ Status = AcpiNsLookup (NULL, InternalPath, ACPI_TYPE_ANY, ACPI_IMODE_EXECUTE, ACPI_NS_NO_UPSEARCH | ACPI_NS_DONT_OPEN_SCOPE, NULL, &Node); if (ACPI_FAILURE (Status)) { AcpiOsPrintf ("Could not locate name: %s, %s\n", Name, AcpiFormatException (Status)); } ACPI_FREE (InternalPath); return (Node); } /******************************************************************************* * * FUNCTION: AcpiDbUint32ToHexString * * PARAMETERS: Value - The value to be converted to string * Buffer - Buffer for result (not less than 11 bytes) * * RETURN: None * * DESCRIPTION: Convert the unsigned 32-bit value to the hexadecimal image * * NOTE: It is the caller's responsibility to ensure that the length of buffer * is sufficient. * ******************************************************************************/ void AcpiDbUint32ToHexString ( UINT32 Value, char *Buffer) { int i; if (Value == 0) { ACPI_STRCPY (Buffer, "0"); return; } Buffer[8] = '\0'; for (i = 7; i >= 0; i--) { Buffer[i] = Converter [Value & 0x0F]; Value = Value >> 4; } } #ifdef ACPI_OBSOLETE_FUNCTIONS /******************************************************************************* * * FUNCTION: AcpiDbSecondPassParse * * PARAMETERS: Root - Root of the parse tree * * RETURN: Status * * DESCRIPTION: Second pass parse of the ACPI tables. We need to wait until * second pass to parse the control methods * ******************************************************************************/ ACPI_STATUS AcpiDbSecondPassParse ( ACPI_PARSE_OBJECT *Root) { ACPI_PARSE_OBJECT *Op = Root; ACPI_PARSE_OBJECT *Method; ACPI_PARSE_OBJECT *SearchOp; ACPI_PARSE_OBJECT *StartOp; ACPI_STATUS Status = AE_OK; UINT32 BaseAmlOffset; ACPI_WALK_STATE *WalkState; ACPI_FUNCTION_ENTRY (); AcpiOsPrintf ("Pass two parse ....\n"); while (Op) { if (Op->Common.AmlOpcode == AML_METHOD_OP) { Method = Op; /* Create a new walk state for the parse */ WalkState = AcpiDsCreateWalkState (0, NULL, NULL, NULL); if (!WalkState) { return (AE_NO_MEMORY); } /* Init the Walk State */ WalkState->ParserState.Aml = WalkState->ParserState.AmlStart = Method->Named.Data; WalkState->ParserState.AmlEnd = WalkState->ParserState.PkgEnd = Method->Named.Data + Method->Named.Length; WalkState->ParserState.StartScope = Op; WalkState->DescendingCallback = AcpiDsLoad1BeginOp; WalkState->AscendingCallback = AcpiDsLoad1EndOp; /* Perform the AML parse */ Status = AcpiPsParseAml (WalkState); BaseAmlOffset = (Method->Common.Value.Arg)->Common.AmlOffset + 1; StartOp = (Method->Common.Value.Arg)->Common.Next; SearchOp = StartOp; while (SearchOp) { SearchOp->Common.AmlOffset += BaseAmlOffset; SearchOp = AcpiPsGetDepthNext (StartOp, SearchOp); } } if (Op->Common.AmlOpcode == AML_REGION_OP) { /* TBD: [Investigate] this isn't quite the right thing to do! */ /* * * Method = (ACPI_DEFERRED_OP *) Op; * Status = AcpiPsParseAml (Op, Method->Body, Method->BodyLength); */ } if (ACPI_FAILURE (Status)) { break; } Op = AcpiPsGetDepthNext (Root, Op); } return (Status); } /******************************************************************************* * * FUNCTION: AcpiDbDumpBuffer * * PARAMETERS: Address - Pointer to the buffer * * RETURN: None * * DESCRIPTION: Print a portion of a buffer * ******************************************************************************/ void AcpiDbDumpBuffer ( UINT32 Address) { AcpiOsPrintf ("\nLocation %X:\n", Address); AcpiDbgLevel |= ACPI_LV_TABLES; AcpiUtDebugDumpBuffer (ACPI_TO_POINTER (Address), 64, DB_BYTE_DISPLAY, ACPI_UINT32_MAX); } #endif #endif /* ACPI_DEBUGGER */ src/acpica/source/components/debugger/dbxface.c000066400000000000000000000466321231470457100221150ustar00rootroot00000000000000/******************************************************************************* * * Module Name: dbxface - AML Debugger external interfaces * ******************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #include "acpi.h" #include "accommon.h" #include "amlcode.h" #include "acdebug.h" #include "acdisasm.h" #ifdef ACPI_DEBUGGER #define _COMPONENT ACPI_CA_DEBUGGER ACPI_MODULE_NAME ("dbxface") /* Local prototypes */ static ACPI_STATUS AcpiDbStartCommand ( ACPI_WALK_STATE *WalkState, ACPI_PARSE_OBJECT *Op); #ifdef ACPI_OBSOLETE_FUNCTIONS void AcpiDbMethodEnd ( ACPI_WALK_STATE *WalkState); #endif /******************************************************************************* * * FUNCTION: AcpiDbStartCommand * * PARAMETERS: WalkState - Current walk * Op - Current executing Op, from AML interpreter * * RETURN: Status * * DESCRIPTION: Enter debugger command loop * ******************************************************************************/ static ACPI_STATUS AcpiDbStartCommand ( ACPI_WALK_STATE *WalkState, ACPI_PARSE_OBJECT *Op) { ACPI_STATUS Status; /* TBD: [Investigate] are there namespace locking issues here? */ /* AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); */ /* Go into the command loop and await next user command */ AcpiGbl_MethodExecuting = TRUE; Status = AE_CTRL_TRUE; while (Status == AE_CTRL_TRUE) { if (AcpiGbl_DebuggerConfiguration == DEBUGGER_MULTI_THREADED) { /* Handshake with the front-end that gets user command lines */ Status = AcpiUtReleaseMutex (ACPI_MTX_DEBUG_CMD_COMPLETE); if (ACPI_FAILURE (Status)) { return (Status); } Status = AcpiUtAcquireMutex (ACPI_MTX_DEBUG_CMD_READY); if (ACPI_FAILURE (Status)) { return (Status); } } else { /* Single threaded, we must get a command line ourselves */ /* Force output to console until a command is entered */ AcpiDbSetOutputDestination (ACPI_DB_CONSOLE_OUTPUT); /* Different prompt if method is executing */ if (!AcpiGbl_MethodExecuting) { AcpiOsPrintf ("%1c ", ACPI_DEBUGGER_COMMAND_PROMPT); } else { AcpiOsPrintf ("%1c ", ACPI_DEBUGGER_EXECUTE_PROMPT); } /* Get the user input line */ Status = AcpiOsGetLine (AcpiGbl_DbLineBuf, ACPI_DB_LINE_BUFFER_SIZE, NULL); if (ACPI_FAILURE (Status)) { ACPI_EXCEPTION ((AE_INFO, Status, "While parsing command line")); return (Status); } } Status = AcpiDbCommandDispatch (AcpiGbl_DbLineBuf, WalkState, Op); } /* AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); */ return (Status); } /******************************************************************************* * * FUNCTION: AcpiDbSingleStep * * PARAMETERS: WalkState - Current walk * Op - Current executing op (from aml interpreter) * OpcodeClass - Class of the current AML Opcode * * RETURN: Status * * DESCRIPTION: Called just before execution of an AML opcode. * ******************************************************************************/ ACPI_STATUS AcpiDbSingleStep ( ACPI_WALK_STATE *WalkState, ACPI_PARSE_OBJECT *Op, UINT32 OpcodeClass) { ACPI_PARSE_OBJECT *Next; ACPI_STATUS Status = AE_OK; UINT32 OriginalDebugLevel; ACPI_PARSE_OBJECT *DisplayOp; ACPI_PARSE_OBJECT *ParentOp; ACPI_FUNCTION_ENTRY (); /* Check the abort flag */ if (AcpiGbl_AbortMethod) { AcpiGbl_AbortMethod = FALSE; return (AE_ABORT_METHOD); } /* Check for single-step breakpoint */ if (WalkState->MethodBreakpoint && (WalkState->MethodBreakpoint <= Op->Common.AmlOffset)) { /* Check if the breakpoint has been reached or passed */ /* Hit the breakpoint, resume single step, reset breakpoint */ AcpiOsPrintf ("***Break*** at AML offset %X\n", Op->Common.AmlOffset); AcpiGbl_CmSingleStep = TRUE; AcpiGbl_StepToNextCall = FALSE; WalkState->MethodBreakpoint = 0; } /* Check for user breakpoint (Must be on exact Aml offset) */ else if (WalkState->UserBreakpoint && (WalkState->UserBreakpoint == Op->Common.AmlOffset)) { AcpiOsPrintf ("***UserBreakpoint*** at AML offset %X\n", Op->Common.AmlOffset); AcpiGbl_CmSingleStep = TRUE; AcpiGbl_StepToNextCall = FALSE; WalkState->MethodBreakpoint = 0; } /* * Check if this is an opcode that we are interested in -- * namely, opcodes that have arguments */ if (Op->Common.AmlOpcode == AML_INT_NAMEDFIELD_OP) { return (AE_OK); } switch (OpcodeClass) { case AML_CLASS_UNKNOWN: case AML_CLASS_ARGUMENT: /* constants, literals, etc. do nothing */ return (AE_OK); default: /* All other opcodes -- continue */ break; } /* * Under certain debug conditions, display this opcode and its operands */ if ((AcpiGbl_DbOutputToFile) || (AcpiGbl_CmSingleStep) || (AcpiDbgLevel & ACPI_LV_PARSE)) { if ((AcpiGbl_DbOutputToFile) || (AcpiDbgLevel & ACPI_LV_PARSE)) { AcpiOsPrintf ("\n[AmlDebug] Next AML Opcode to execute:\n"); } /* * Display this op (and only this op - zero out the NEXT field * temporarily, and disable parser trace output for the duration of * the display because we don't want the extraneous debug output) */ OriginalDebugLevel = AcpiDbgLevel; AcpiDbgLevel &= ~(ACPI_LV_PARSE | ACPI_LV_FUNCTIONS); Next = Op->Common.Next; Op->Common.Next = NULL; DisplayOp = Op; ParentOp = Op->Common.Parent; if (ParentOp) { if ((WalkState->ControlState) && (WalkState->ControlState->Common.State == ACPI_CONTROL_PREDICATE_EXECUTING)) { /* * We are executing the predicate of an IF or WHILE statement * Search upwards for the containing IF or WHILE so that the * entire predicate can be displayed. */ while (ParentOp) { if ((ParentOp->Common.AmlOpcode == AML_IF_OP) || (ParentOp->Common.AmlOpcode == AML_WHILE_OP)) { DisplayOp = ParentOp; break; } ParentOp = ParentOp->Common.Parent; } } else { while (ParentOp) { if ((ParentOp->Common.AmlOpcode == AML_IF_OP) || (ParentOp->Common.AmlOpcode == AML_ELSE_OP) || (ParentOp->Common.AmlOpcode == AML_SCOPE_OP) || (ParentOp->Common.AmlOpcode == AML_METHOD_OP) || (ParentOp->Common.AmlOpcode == AML_WHILE_OP)) { break; } DisplayOp = ParentOp; ParentOp = ParentOp->Common.Parent; } } } /* Now we can display it */ AcpiDmDisassemble (WalkState, DisplayOp, ACPI_UINT32_MAX); if ((Op->Common.AmlOpcode == AML_IF_OP) || (Op->Common.AmlOpcode == AML_WHILE_OP)) { if (WalkState->ControlState->Common.Value) { AcpiOsPrintf ("Predicate = [True], IF block was executed\n"); } else { AcpiOsPrintf ("Predicate = [False], Skipping IF block\n"); } } else if (Op->Common.AmlOpcode == AML_ELSE_OP) { AcpiOsPrintf ("Predicate = [False], ELSE block was executed\n"); } /* Restore everything */ Op->Common.Next = Next; AcpiOsPrintf ("\n"); if ((AcpiGbl_DbOutputToFile) || (AcpiDbgLevel & ACPI_LV_PARSE)) { AcpiOsPrintf ("\n"); } AcpiDbgLevel = OriginalDebugLevel; } /* If we are not single stepping, just continue executing the method */ if (!AcpiGbl_CmSingleStep) { return (AE_OK); } /* * If we are executing a step-to-call command, * Check if this is a method call. */ if (AcpiGbl_StepToNextCall) { if (Op->Common.AmlOpcode != AML_INT_METHODCALL_OP) { /* Not a method call, just keep executing */ return (AE_OK); } /* Found a method call, stop executing */ AcpiGbl_StepToNextCall = FALSE; } /* * If the next opcode is a method call, we will "step over" it * by default. */ if (Op->Common.AmlOpcode == AML_INT_METHODCALL_OP) { /* Force no more single stepping while executing called method */ AcpiGbl_CmSingleStep = FALSE; /* * Set the breakpoint on/before the call, it will stop execution * as soon as we return */ WalkState->MethodBreakpoint = 1; /* Must be non-zero! */ } Status = AcpiDbStartCommand (WalkState, Op); /* User commands complete, continue execution of the interrupted method */ return (Status); } /******************************************************************************* * * FUNCTION: AcpiDbInitialize * * PARAMETERS: None * * RETURN: Status * * DESCRIPTION: Init and start debugger * ******************************************************************************/ ACPI_STATUS AcpiDbInitialize ( void) { ACPI_STATUS Status; ACPI_FUNCTION_TRACE (DbInitialize); /* Init globals */ AcpiGbl_DbBuffer = NULL; AcpiGbl_DbFilename = NULL; AcpiGbl_DbOutputToFile = FALSE; AcpiGbl_DbDebugLevel = ACPI_LV_VERBOSITY2; AcpiGbl_DbConsoleDebugLevel = ACPI_NORMAL_DEFAULT | ACPI_LV_TABLES; AcpiGbl_DbOutputFlags = ACPI_DB_CONSOLE_OUTPUT; AcpiGbl_DbOpt_tables = FALSE; AcpiGbl_DbOpt_disasm = FALSE; AcpiGbl_DbOpt_stats = FALSE; AcpiGbl_DbOpt_verbose = TRUE; AcpiGbl_DbOpt_ini_methods = TRUE; AcpiGbl_DbBuffer = AcpiOsAllocate (ACPI_DEBUG_BUFFER_SIZE); if (!AcpiGbl_DbBuffer) { return_ACPI_STATUS (AE_NO_MEMORY); } ACPI_MEMSET (AcpiGbl_DbBuffer, 0, ACPI_DEBUG_BUFFER_SIZE); /* Initial scope is the root */ AcpiGbl_DbScopeBuf [0] = AML_ROOT_PREFIX; AcpiGbl_DbScopeBuf [1] = 0; AcpiGbl_DbScopeNode = AcpiGbl_RootNode; /* * If configured for multi-thread support, the debug executor runs in * a separate thread so that the front end can be in another address * space, environment, or even another machine. */ if (AcpiGbl_DebuggerConfiguration & DEBUGGER_MULTI_THREADED) { /* These were created with one unit, grab it */ Status = AcpiUtAcquireMutex (ACPI_MTX_DEBUG_CMD_COMPLETE); if (ACPI_FAILURE (Status)) { AcpiOsPrintf ("Could not get debugger mutex\n"); return_ACPI_STATUS (Status); } Status = AcpiUtAcquireMutex (ACPI_MTX_DEBUG_CMD_READY); if (ACPI_FAILURE (Status)) { AcpiOsPrintf ("Could not get debugger mutex\n"); return_ACPI_STATUS (Status); } /* Create the debug execution thread to execute commands */ Status = AcpiOsExecute (OSL_DEBUGGER_THREAD, AcpiDbExecuteThread, NULL); if (ACPI_FAILURE (Status)) { ACPI_EXCEPTION ((AE_INFO, Status, "Could not start debugger thread")); return_ACPI_STATUS (Status); } } if (!AcpiGbl_DbOpt_verbose) { AcpiGbl_DbOpt_disasm = TRUE; AcpiGbl_DbOpt_stats = FALSE; } return_ACPI_STATUS (AE_OK); } /******************************************************************************* * * FUNCTION: AcpiDbTerminate * * PARAMETERS: None * * RETURN: None * * DESCRIPTION: Stop debugger * ******************************************************************************/ void AcpiDbTerminate ( void) { if (AcpiGbl_DbBuffer) { AcpiOsFree (AcpiGbl_DbBuffer); AcpiGbl_DbBuffer = NULL; } /* Ensure that debug output is now disabled */ AcpiGbl_DbOutputFlags = ACPI_DB_DISABLE_OUTPUT; } #ifdef ACPI_OBSOLETE_FUNCTIONS /******************************************************************************* * * FUNCTION: AcpiDbMethodEnd * * PARAMETERS: WalkState - Current walk * * RETURN: Status * * DESCRIPTION: Called at method termination * ******************************************************************************/ void AcpiDbMethodEnd ( ACPI_WALK_STATE *WalkState) { if (!AcpiGbl_CmSingleStep) { return; } AcpiOsPrintf ("\n"); AcpiDbStartCommand (WalkState, NULL); } #endif #endif /* ACPI_DEBUGGER */ src/acpica/source/components/disassembler/000077500000000000000000000000001231470457100212335ustar00rootroot00000000000000src/acpica/source/components/disassembler/dmbuffer.c000066400000000000000000000556611231470457100232060ustar00rootroot00000000000000/******************************************************************************* * * Module Name: dmbuffer - AML disassembler, buffer and string support * ******************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #include "acpi.h" #include "accommon.h" #include "acdisasm.h" #include "acparser.h" #include "amlcode.h" #include "acinterp.h" #ifdef ACPI_DISASSEMBLER #define _COMPONENT ACPI_CA_DEBUGGER ACPI_MODULE_NAME ("dmbuffer") /* Local prototypes */ static void AcpiDmUnicode ( ACPI_PARSE_OBJECT *Op); static void AcpiDmGetHardwareIdType ( ACPI_PARSE_OBJECT *Op); static void AcpiDmPldBuffer ( UINT32 Level, UINT8 *ByteData, UINT32 ByteCount); /******************************************************************************* * * FUNCTION: AcpiDmDisasmByteList * * PARAMETERS: Level - Current source code indentation level * ByteData - Pointer to the byte list * ByteCount - Length of the byte list * * RETURN: None * * DESCRIPTION: Dump an AML "ByteList" in Hex format. 8 bytes per line, prefixed * with the hex buffer offset. * ******************************************************************************/ void AcpiDmDisasmByteList ( UINT32 Level, UINT8 *ByteData, UINT32 ByteCount) { UINT32 i; if (!ByteCount) { return; } /* Dump the byte list */ for (i = 0; i < ByteCount; i++) { /* New line every 8 bytes */ if (((i % 8) == 0) && (i < ByteCount)) { if (i > 0) { AcpiOsPrintf ("\n"); } AcpiDmIndent (Level); if (ByteCount > 8) { AcpiOsPrintf ("/* %04X */ ", i); } } AcpiOsPrintf (" 0x%2.2X", (UINT32) ByteData[i]); /* Add comma if there are more bytes to display */ if (i < (ByteCount -1)) { AcpiOsPrintf (","); } } if (Level) { AcpiOsPrintf ("\n"); } } /******************************************************************************* * * FUNCTION: AcpiDmByteList * * PARAMETERS: Info - Parse tree walk info * Op - Byte list op * * RETURN: None * * DESCRIPTION: Dump a buffer byte list, handling the various types of buffers. * Buffer type must be already set in the Op DisasmOpcode. * ******************************************************************************/ void AcpiDmByteList ( ACPI_OP_WALK_INFO *Info, ACPI_PARSE_OBJECT *Op) { UINT8 *ByteData; UINT32 ByteCount; ByteData = Op->Named.Data; ByteCount = (UINT32) Op->Common.Value.Integer; /* * The byte list belongs to a buffer, and can be produced by either * a ResourceTemplate, Unicode, quoted string, or a plain byte list. */ switch (Op->Common.Parent->Common.DisasmOpcode) { case ACPI_DASM_RESOURCE: AcpiDmResourceTemplate (Info, Op->Common.Parent, ByteData, ByteCount); break; case ACPI_DASM_STRING: AcpiDmIndent (Info->Level); AcpiUtPrintString ((char *) ByteData, ACPI_UINT16_MAX); AcpiOsPrintf ("\n"); break; case ACPI_DASM_UNICODE: AcpiDmUnicode (Op); break; case ACPI_DASM_PLD_METHOD: AcpiDmDisasmByteList (Info->Level, ByteData, ByteCount); AcpiDmPldBuffer (Info->Level, ByteData, ByteCount); break; case ACPI_DASM_BUFFER: default: /* * Not a resource, string, or unicode string. * Just dump the buffer */ AcpiDmDisasmByteList (Info->Level, ByteData, ByteCount); break; } } /******************************************************************************* * * FUNCTION: AcpiDmIsUnicodeBuffer * * PARAMETERS: Op - Buffer Object to be examined * * RETURN: TRUE if buffer contains a UNICODE string * * DESCRIPTION: Determine if a buffer Op contains a Unicode string * ******************************************************************************/ BOOLEAN AcpiDmIsUnicodeBuffer ( ACPI_PARSE_OBJECT *Op) { UINT8 *ByteData; UINT32 ByteCount; UINT32 WordCount; ACPI_PARSE_OBJECT *SizeOp; ACPI_PARSE_OBJECT *NextOp; UINT32 i; /* Buffer size is the buffer argument */ SizeOp = Op->Common.Value.Arg; /* Next, the initializer byte list to examine */ NextOp = SizeOp->Common.Next; if (!NextOp) { return (FALSE); } /* Extract the byte list info */ ByteData = NextOp->Named.Data; ByteCount = (UINT32) NextOp->Common.Value.Integer; WordCount = ACPI_DIV_2 (ByteCount); /* * Unicode string must have an even number of bytes and last * word must be zero */ if ((!ByteCount) || (ByteCount < 4) || (ByteCount & 1) || ((UINT16 *) (void *) ByteData)[WordCount - 1] != 0) { return (FALSE); } /* For each word, 1st byte must be ascii, 2nd byte must be zero */ for (i = 0; i < (ByteCount - 2); i += 2) { if ((!ACPI_IS_PRINT (ByteData[i])) || (ByteData[(ACPI_SIZE) i + 1] != 0)) { return (FALSE); } } /* Ignore the Size argument in the disassembly of this buffer op */ SizeOp->Common.DisasmFlags |= ACPI_PARSEOP_IGNORE; return (TRUE); } /******************************************************************************* * * FUNCTION: AcpiDmIsStringBuffer * * PARAMETERS: Op - Buffer Object to be examined * * RETURN: TRUE if buffer contains a ASCII string, FALSE otherwise * * DESCRIPTION: Determine if a buffer Op contains a ASCII string * ******************************************************************************/ BOOLEAN AcpiDmIsStringBuffer ( ACPI_PARSE_OBJECT *Op) { UINT8 *ByteData; UINT32 ByteCount; ACPI_PARSE_OBJECT *SizeOp; ACPI_PARSE_OBJECT *NextOp; UINT32 i; /* Buffer size is the buffer argument */ SizeOp = Op->Common.Value.Arg; /* Next, the initializer byte list to examine */ NextOp = SizeOp->Common.Next; if (!NextOp) { return (FALSE); } /* Extract the byte list info */ ByteData = NextOp->Named.Data; ByteCount = (UINT32) NextOp->Common.Value.Integer; /* Last byte must be the null terminator */ if ((!ByteCount) || (ByteCount < 2) || (ByteData[ByteCount-1] != 0)) { return (FALSE); } for (i = 0; i < (ByteCount - 1); i++) { /* TBD: allow some escapes (non-ascii chars). * they will be handled in the string output routine */ if (!ACPI_IS_PRINT (ByteData[i])) { return (FALSE); } } return (TRUE); } /******************************************************************************* * * FUNCTION: AcpiDmIsPldBuffer * * PARAMETERS: Op - Buffer Object to be examined * * RETURN: TRUE if buffer contains a ASCII string, FALSE otherwise * * DESCRIPTION: Determine if a buffer Op contains a _PLD structure * ******************************************************************************/ BOOLEAN AcpiDmIsPldBuffer ( ACPI_PARSE_OBJECT *Op) { ACPI_NAMESPACE_NODE *Node; ACPI_PARSE_OBJECT *ParentOp; ParentOp = Op->Common.Parent; if (!ParentOp) { return (FALSE); } /* Check for form: Name(_PLD, Buffer() {}). Not legal, however */ if (ParentOp->Common.AmlOpcode == AML_NAME_OP) { Node = ParentOp->Common.Node; if (ACPI_COMPARE_NAME (Node->Name.Ascii, METHOD_NAME__PLD)) { return (TRUE); } return (FALSE); } /* Check for proper form: Name(_PLD, Package() {Buffer() {}}) */ if (ParentOp->Common.AmlOpcode == AML_PACKAGE_OP) { ParentOp = ParentOp->Common.Parent; if (!ParentOp) { return (FALSE); } if (ParentOp->Common.AmlOpcode == AML_NAME_OP) { Node = ParentOp->Common.Node; if (ACPI_COMPARE_NAME (Node->Name.Ascii, METHOD_NAME__PLD)) { return (TRUE); } } } return (FALSE); } /******************************************************************************* * * FUNCTION: AcpiDmPldBuffer * * PARAMETERS: Level - Current source code indentation level * ByteData - Pointer to the byte list * ByteCount - Length of the byte list * * RETURN: None * * DESCRIPTION: Dump and format the contents of a _PLD buffer object * ******************************************************************************/ #define ACPI_PLD_OUTPUT08 "%*.s/* %18s : %-6.2X */\n", ACPI_MUL_4 (Level), " " #define ACPI_PLD_OUTPUT16 "%*.s/* %18s : %-6.4X */\n", ACPI_MUL_4 (Level), " " #define ACPI_PLD_OUTPUT24 "%*.s/* %18s : %-6.6X */\n", ACPI_MUL_4 (Level), " " static void AcpiDmPldBuffer ( UINT32 Level, UINT8 *ByteData, UINT32 ByteCount) { ACPI_PLD_INFO *PldInfo; ACPI_STATUS Status; /* Check for valid byte count */ if (ByteCount < ACPI_PLD_REV1_BUFFER_SIZE) { return; } /* Convert _PLD buffer to local _PLD struct */ Status = AcpiDecodePldBuffer (ByteData, ByteCount, &PldInfo); if (ACPI_FAILURE (Status)) { return; } /* First 32-bit dword */ AcpiOsPrintf (ACPI_PLD_OUTPUT08, "Revision", PldInfo->Revision); AcpiOsPrintf (ACPI_PLD_OUTPUT08, "IgnoreColor", PldInfo->IgnoreColor); AcpiOsPrintf (ACPI_PLD_OUTPUT24,"Color", PldInfo->Color); /* Second 32-bit dword */ AcpiOsPrintf (ACPI_PLD_OUTPUT16,"Width", PldInfo->Width); AcpiOsPrintf (ACPI_PLD_OUTPUT16,"Height", PldInfo->Height); /* Third 32-bit dword */ AcpiOsPrintf (ACPI_PLD_OUTPUT08, "UserVisible", PldInfo->UserVisible); AcpiOsPrintf (ACPI_PLD_OUTPUT08, "Dock", PldInfo->Dock); AcpiOsPrintf (ACPI_PLD_OUTPUT08, "Lid", PldInfo->Lid); AcpiOsPrintf (ACPI_PLD_OUTPUT08, "Panel", PldInfo->Panel); AcpiOsPrintf (ACPI_PLD_OUTPUT08, "VerticalPosition", PldInfo->VerticalPosition); AcpiOsPrintf (ACPI_PLD_OUTPUT08, "HorizontalPosition", PldInfo->HorizontalPosition); AcpiOsPrintf (ACPI_PLD_OUTPUT08, "Shape", PldInfo->Shape); AcpiOsPrintf (ACPI_PLD_OUTPUT08, "GroupOrientation", PldInfo->GroupOrientation); AcpiOsPrintf (ACPI_PLD_OUTPUT08, "GroupToken", PldInfo->GroupToken); AcpiOsPrintf (ACPI_PLD_OUTPUT08, "GroupPosition", PldInfo->GroupPosition); AcpiOsPrintf (ACPI_PLD_OUTPUT08, "Bay", PldInfo->Bay); /* Fourth 32-bit dword */ AcpiOsPrintf (ACPI_PLD_OUTPUT08, "Ejectable", PldInfo->Ejectable); AcpiOsPrintf (ACPI_PLD_OUTPUT08, "OspmEjectRequired", PldInfo->OspmEjectRequired); AcpiOsPrintf (ACPI_PLD_OUTPUT08, "CabinetNumber", PldInfo->CabinetNumber); AcpiOsPrintf (ACPI_PLD_OUTPUT08, "CardCageNumber", PldInfo->CardCageNumber); AcpiOsPrintf (ACPI_PLD_OUTPUT08, "Reference", PldInfo->Reference); AcpiOsPrintf (ACPI_PLD_OUTPUT08, "Rotation", PldInfo->Rotation); AcpiOsPrintf (ACPI_PLD_OUTPUT08, "Order", PldInfo->Order); /* Fifth 32-bit dword */ if (ByteCount >= ACPI_PLD_REV1_BUFFER_SIZE) { AcpiOsPrintf (ACPI_PLD_OUTPUT16,"VerticalOffset", PldInfo->VerticalOffset); AcpiOsPrintf (ACPI_PLD_OUTPUT16,"HorizontalOffset", PldInfo->HorizontalOffset); } ACPI_FREE (PldInfo); } /******************************************************************************* * * FUNCTION: AcpiDmUnicode * * PARAMETERS: Op - Byte List op containing Unicode string * * RETURN: None * * DESCRIPTION: Dump Unicode string as a standard ASCII string. (Remove * the extra zero bytes). * ******************************************************************************/ static void AcpiDmUnicode ( ACPI_PARSE_OBJECT *Op) { UINT16 *WordData; UINT32 WordCount; UINT32 i; /* Extract the buffer info as a WORD buffer */ WordData = ACPI_CAST_PTR (UINT16, Op->Named.Data); WordCount = ACPI_DIV_2 (((UINT32) Op->Common.Value.Integer)); /* Write every other byte as an ASCII character */ AcpiOsPrintf ("\""); for (i = 0; i < (WordCount - 1); i++) { AcpiOsPrintf ("%c", (int) WordData[i]); } AcpiOsPrintf ("\")"); } /******************************************************************************* * * FUNCTION: AcpiDmGetHardwareIdType * * PARAMETERS: Op - Op to be examined * * RETURN: None * * DESCRIPTION: Determine the type of the argument to a _HID or _CID * 1) Strings are allowed * 2) If Integer, determine if it is a valid EISAID * ******************************************************************************/ static void AcpiDmGetHardwareIdType ( ACPI_PARSE_OBJECT *Op) { UINT32 BigEndianId; UINT32 Prefix[3]; UINT32 i; switch (Op->Common.AmlOpcode) { case AML_STRING_OP: /* Mark this string as an _HID/_CID string */ Op->Common.DisasmOpcode = ACPI_DASM_HID_STRING; break; case AML_WORD_OP: case AML_DWORD_OP: /* Determine if a Word/Dword is a valid encoded EISAID */ /* Swap from little-endian to big-endian to simplify conversion */ BigEndianId = AcpiUtDwordByteSwap ((UINT32) Op->Common.Value.Integer); /* Create the 3 leading ASCII letters */ Prefix[0] = ((BigEndianId >> 26) & 0x1F) + 0x40; Prefix[1] = ((BigEndianId >> 21) & 0x1F) + 0x40; Prefix[2] = ((BigEndianId >> 16) & 0x1F) + 0x40; /* Verify that all 3 are ascii and alpha */ for (i = 0; i < 3; i++) { if (!ACPI_IS_ASCII (Prefix[i]) || !ACPI_IS_ALPHA (Prefix[i])) { return; } } /* Mark this node as convertable to an EISA ID string */ Op->Common.DisasmOpcode = ACPI_DASM_EISAID; break; default: break; } } /******************************************************************************* * * FUNCTION: AcpiDmCheckForHardwareId * * PARAMETERS: Op - Op to be examined * * RETURN: None * * DESCRIPTION: Determine if a Name() Op is a _HID/_CID. * ******************************************************************************/ void AcpiDmCheckForHardwareId ( ACPI_PARSE_OBJECT *Op) { UINT32 Name; ACPI_PARSE_OBJECT *NextOp; /* Get the NameSegment */ Name = AcpiPsGetName (Op); if (!Name) { return; } NextOp = AcpiPsGetDepthNext (NULL, Op); if (!NextOp) { return; } /* Check for _HID - has one argument */ if (ACPI_COMPARE_NAME (&Name, METHOD_NAME__HID)) { AcpiDmGetHardwareIdType (NextOp); return; } /* Exit if not _CID */ if (!ACPI_COMPARE_NAME (&Name, METHOD_NAME__CID)) { return; } /* _CID can contain a single argument or a package */ if (NextOp->Common.AmlOpcode != AML_PACKAGE_OP) { AcpiDmGetHardwareIdType (NextOp); return; } /* _CID with Package: get the package length, check all elements */ NextOp = AcpiPsGetDepthNext (NULL, NextOp); /* Don't need to use the length, just walk the peer list */ NextOp = NextOp->Common.Next; while (NextOp) { AcpiDmGetHardwareIdType (NextOp); NextOp = NextOp->Common.Next; } } /******************************************************************************* * * FUNCTION: AcpiDmDecompressEisaId * * PARAMETERS: EncodedId - Raw encoded EISA ID. * * RETURN: None * * DESCRIPTION: Convert an encoded EISAID back to the original ASCII String * and emit the correct ASL statement. If the ID is known, emit * a description of the ID as a comment. * ******************************************************************************/ void AcpiDmDecompressEisaId ( UINT32 EncodedId) { char IdBuffer[ACPI_EISAID_STRING_SIZE]; const AH_DEVICE_ID *Info; /* Convert EISAID to a string an emit the statement */ AcpiExEisaIdToString (IdBuffer, EncodedId); AcpiOsPrintf ("EisaId (\"%s\")", IdBuffer); /* If we know about the ID, emit the description */ Info = AcpiAhMatchHardwareId (IdBuffer); if (Info) { AcpiOsPrintf (" /* %s */", Info->Description); } } #endif src/acpica/source/components/disassembler/dmdeferred.c000066400000000000000000000276061231470457100235130ustar00rootroot00000000000000/****************************************************************************** * * Module Name: dmdeferred - Disassembly of deferred AML opcodes * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #include "acpi.h" #include "accommon.h" #include "acdispat.h" #include "amlcode.h" #include "acdisasm.h" #include "acparser.h" #define _COMPONENT ACPI_CA_DISASSEMBLER ACPI_MODULE_NAME ("dmdeferred") /* Local prototypes */ static ACPI_STATUS AcpiDmDeferredParse ( ACPI_PARSE_OBJECT *Op, UINT8 *Aml, UINT32 AmlLength); /****************************************************************************** * * FUNCTION: AcpiDmParseDeferredOps * * PARAMETERS: Root - Root of the parse tree * * RETURN: Status * * DESCRIPTION: Parse the deferred opcodes (Methods, regions, etc.) * *****************************************************************************/ ACPI_STATUS AcpiDmParseDeferredOps ( ACPI_PARSE_OBJECT *Root) { const ACPI_OPCODE_INFO *OpInfo; ACPI_PARSE_OBJECT *Op = Root; ACPI_STATUS Status; ACPI_FUNCTION_ENTRY (); /* Traverse the entire parse tree */ while (Op) { OpInfo = AcpiPsGetOpcodeInfo (Op->Common.AmlOpcode); if (!(OpInfo->Flags & AML_DEFER)) { Op = AcpiPsGetDepthNext (Root, Op); continue; } /* Now we know we have a deferred opcode */ switch (Op->Common.AmlOpcode) { case AML_METHOD_OP: case AML_BUFFER_OP: case AML_PACKAGE_OP: case AML_VAR_PACKAGE_OP: Status = AcpiDmDeferredParse (Op, Op->Named.Data, Op->Named.Length); if (ACPI_FAILURE (Status)) { return (Status); } break; /* We don't need to do anything for these deferred opcodes */ case AML_REGION_OP: case AML_DATA_REGION_OP: case AML_CREATE_QWORD_FIELD_OP: case AML_CREATE_DWORD_FIELD_OP: case AML_CREATE_WORD_FIELD_OP: case AML_CREATE_BYTE_FIELD_OP: case AML_CREATE_BIT_FIELD_OP: case AML_CREATE_FIELD_OP: case AML_BANK_FIELD_OP: break; default: ACPI_ERROR ((AE_INFO, "Unhandled deferred AML opcode [0x%.4X]", Op->Common.AmlOpcode)); break; } Op = AcpiPsGetDepthNext (Root, Op); } return (AE_OK); } /****************************************************************************** * * FUNCTION: AcpiDmDeferredParse * * PARAMETERS: Op - Root Op of the deferred opcode * Aml - Pointer to the raw AML * AmlLength - Length of the AML * * RETURN: Status * * DESCRIPTION: Parse one deferred opcode * (Methods, operation regions, etc.) * *****************************************************************************/ static ACPI_STATUS AcpiDmDeferredParse ( ACPI_PARSE_OBJECT *Op, UINT8 *Aml, UINT32 AmlLength) { ACPI_WALK_STATE *WalkState; ACPI_STATUS Status; ACPI_PARSE_OBJECT *SearchOp; ACPI_PARSE_OBJECT *StartOp; UINT32 BaseAmlOffset; ACPI_PARSE_OBJECT *NewRootOp; ACPI_PARSE_OBJECT *ExtraOp; ACPI_FUNCTION_TRACE (DmDeferredParse); if (!Aml || !AmlLength) { return_ACPI_STATUS (AE_OK); } ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Parsing deferred opcode %s [%4.4s]\n", Op->Common.AmlOpName, (char *) &Op->Named.Name)); /* Need a new walk state to parse the AML */ WalkState = AcpiDsCreateWalkState (0, Op, NULL, NULL); if (!WalkState) { return_ACPI_STATUS (AE_NO_MEMORY); } Status = AcpiDsInitAmlWalk (WalkState, Op, NULL, Aml, AmlLength, NULL, ACPI_IMODE_LOAD_PASS1); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } /* Parse the AML for this deferred opcode */ WalkState->ParseFlags &= ~ACPI_PARSE_DELETE_TREE; WalkState->ParseFlags |= ACPI_PARSE_DISASSEMBLE; Status = AcpiPsParseAml (WalkState); /* * We need to update all of the AML offsets, since the parser thought * that the method began at offset zero. In reality, it began somewhere * within the ACPI table, at the BaseAmlOffset. Walk the entire tree that * was just created and update the AmlOffset in each Op. */ BaseAmlOffset = (Op->Common.Value.Arg)->Common.AmlOffset + 1; StartOp = (Op->Common.Value.Arg)->Common.Next; SearchOp = StartOp; while (SearchOp) { SearchOp->Common.AmlOffset += BaseAmlOffset; SearchOp = AcpiPsGetDepthNext (StartOp, SearchOp); } /* * For Buffer and Package opcodes, link the newly parsed subtree * into the main parse tree */ switch (Op->Common.AmlOpcode) { case AML_BUFFER_OP: case AML_PACKAGE_OP: case AML_VAR_PACKAGE_OP: switch (Op->Common.AmlOpcode) { case AML_PACKAGE_OP: ExtraOp = Op->Common.Value.Arg; NewRootOp = ExtraOp->Common.Next; ACPI_FREE (ExtraOp); break; case AML_VAR_PACKAGE_OP: case AML_BUFFER_OP: default: NewRootOp = Op->Common.Value.Arg; break; } Op->Common.Value.Arg = NewRootOp->Common.Value.Arg; /* Must point all parents to the main tree */ StartOp = Op; SearchOp = StartOp; while (SearchOp) { if (SearchOp->Common.Parent == NewRootOp) { SearchOp->Common.Parent = Op; } SearchOp = AcpiPsGetDepthNext (StartOp, SearchOp); } ACPI_FREE (NewRootOp); break; default: break; } return_ACPI_STATUS (AE_OK); } src/acpica/source/components/disassembler/dmnames.c000066400000000000000000000373431231470457100230350ustar00rootroot00000000000000/******************************************************************************* * * Module Name: dmnames - AML disassembler, names, namestrings, pathnames * ******************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #include "acpi.h" #include "accommon.h" #include "amlcode.h" #include "acnamesp.h" #include "acdisasm.h" #ifdef ACPI_DISASSEMBLER #define _COMPONENT ACPI_CA_DEBUGGER ACPI_MODULE_NAME ("dmnames") /* Local prototypes */ #ifdef ACPI_OBSOLETE_FUNCTIONS void AcpiDmDisplayPath ( ACPI_PARSE_OBJECT *Op); #endif /******************************************************************************* * * FUNCTION: AcpiDmDumpName * * PARAMETERS: Name - 4 character ACPI name * * RETURN: Final length of name * * DESCRIPTION: Dump an ACPI name, minus any trailing underscores. * ******************************************************************************/ UINT32 AcpiDmDumpName ( UINT32 Name) { UINT32 i; UINT32 Length; char NewName[4]; /* Copy name locally in case the original name is not writeable */ *ACPI_CAST_PTR (UINT32, &NewName[0]) = Name; /* Ensure that the name is printable, even if we have to fix it */ AcpiUtRepairName (NewName); /* Remove all trailing underscores from the name */ Length = ACPI_NAME_SIZE; for (i = (ACPI_NAME_SIZE - 1); i != 0; i--) { if (NewName[i] == '_') { Length--; } else { break; } } /* Dump the name, up to the start of the trailing underscores */ for (i = 0; i < Length; i++) { AcpiOsPrintf ("%c", NewName[i]); } return (Length); } /******************************************************************************* * * FUNCTION: AcpiPsDisplayObjectPathname * * PARAMETERS: WalkState - Current walk state * Op - Object whose pathname is to be obtained * * RETURN: Status * * DESCRIPTION: Diplay the pathname associated with a named object. Two * versions. One searches the parse tree (for parser-only * applications suchas AcpiDump), and the other searches the * ACPI namespace (the parse tree is probably deleted) * ******************************************************************************/ ACPI_STATUS AcpiPsDisplayObjectPathname ( ACPI_WALK_STATE *WalkState, ACPI_PARSE_OBJECT *Op) { ACPI_STATUS Status; ACPI_NAMESPACE_NODE *Node; ACPI_BUFFER Buffer; UINT32 DebugLevel; /* Save current debug level so we don't get extraneous debug output */ DebugLevel = AcpiDbgLevel; AcpiDbgLevel = 0; /* Just get the Node out of the Op object */ Node = Op->Common.Node; if (!Node) { /* Node not defined in this scope, look it up */ Status = AcpiNsLookup (WalkState->ScopeInfo, Op->Common.Value.String, ACPI_TYPE_ANY, ACPI_IMODE_EXECUTE, ACPI_NS_SEARCH_PARENT, WalkState, &(Node)); if (ACPI_FAILURE (Status)) { /* * We can't get the pathname since the object * is not in the namespace. This can happen during single * stepping where a dynamic named object is *about* to be created. */ AcpiOsPrintf (" [Path not found]"); goto Exit; } /* Save it for next time. */ Op->Common.Node = Node; } /* Convert NamedDesc/handle to a full pathname */ Buffer.Length = ACPI_ALLOCATE_LOCAL_BUFFER; Status = AcpiNsHandleToPathname (Node, &Buffer); if (ACPI_FAILURE (Status)) { AcpiOsPrintf ("****Could not get pathname****)"); goto Exit; } AcpiOsPrintf (" (Path %s)", (char *) Buffer.Pointer); ACPI_FREE (Buffer.Pointer); Exit: /* Restore the debug level */ AcpiDbgLevel = DebugLevel; return (Status); } /******************************************************************************* * * FUNCTION: AcpiDmNamestring * * PARAMETERS: Name - ACPI Name string to store * * RETURN: None * * DESCRIPTION: Decode and dump an ACPI namestring. Handles prefix characters * ******************************************************************************/ void AcpiDmNamestring ( char *Name) { UINT32 SegCount; if (!Name) { return; } /* Handle all Scope Prefix operators */ while (ACPI_IS_ROOT_PREFIX (ACPI_GET8 (Name)) || ACPI_IS_PARENT_PREFIX (ACPI_GET8 (Name))) { /* Append prefix character */ AcpiOsPrintf ("%1c", ACPI_GET8 (Name)); Name++; } switch (ACPI_GET8 (Name)) { case 0: SegCount = 0; break; case AML_DUAL_NAME_PREFIX: SegCount = 2; Name++; break; case AML_MULTI_NAME_PREFIX_OP: SegCount = (UINT32) ACPI_GET8 (Name + 1); Name += 2; break; default: SegCount = 1; break; } while (SegCount) { /* Append Name segment */ AcpiDmDumpName (*ACPI_CAST_PTR (UINT32, Name)); SegCount--; if (SegCount) { /* Not last name, append dot separator */ AcpiOsPrintf ("."); } Name += ACPI_NAME_SIZE; } } #ifdef ACPI_OBSOLETE_FUNCTIONS /******************************************************************************* * * FUNCTION: AcpiDmDisplayPath * * PARAMETERS: Op - Named Op whose path is to be constructed * * RETURN: None * * DESCRIPTION: Walk backwards from current scope and display the name * of each previous level of scope up to the root scope * (like "pwd" does with file systems) * ******************************************************************************/ void AcpiDmDisplayPath ( ACPI_PARSE_OBJECT *Op) { ACPI_PARSE_OBJECT *Prev; ACPI_PARSE_OBJECT *Search; UINT32 Name; BOOLEAN DoDot = FALSE; ACPI_PARSE_OBJECT *NamePath; const ACPI_OPCODE_INFO *OpInfo; /* We are only interested in named objects */ OpInfo = AcpiPsGetOpcodeInfo (Op->Common.AmlOpcode); if (!(OpInfo->Flags & AML_NSNODE)) { return; } if (OpInfo->Flags & AML_CREATE) { /* Field creation - check for a fully qualified namepath */ if (Op->Common.AmlOpcode == AML_CREATE_FIELD_OP) { NamePath = AcpiPsGetArg (Op, 3); } else { NamePath = AcpiPsGetArg (Op, 2); } if ((NamePath) && (NamePath->Common.Value.String) && (ACPI_IS_ROOT_PREFIX (NamePath->Common.Value.String[0]))) { AcpiDmNamestring (NamePath->Common.Value.String); return; } } Prev = NULL; /* Start with Root Node */ while (Prev != Op) { /* Search upwards in the tree to find scope with "prev" as its parent */ Search = Op; for (; ;) { if (Search->Common.Parent == Prev) { break; } /* Go up one level */ Search = Search->Common.Parent; } if (Prev) { OpInfo = AcpiPsGetOpcodeInfo (Search->Common.AmlOpcode); if (!(OpInfo->Flags & AML_FIELD)) { /* Below root scope, append scope name */ if (DoDot) { /* Append dot */ AcpiOsPrintf ("."); } if (OpInfo->Flags & AML_CREATE) { if (Op->Common.AmlOpcode == AML_CREATE_FIELD_OP) { NamePath = AcpiPsGetArg (Op, 3); } else { NamePath = AcpiPsGetArg (Op, 2); } if ((NamePath) && (NamePath->Common.Value.String)) { AcpiDmDumpName (NamePath->Common.Value.String); } } else { Name = AcpiPsGetName (Search); AcpiDmDumpName ((char *) &Name); } DoDot = TRUE; } } Prev = Search; } } /******************************************************************************* * * FUNCTION: AcpiDmValidateName * * PARAMETERS: Name - 4 character ACPI name * * RETURN: None * * DESCRIPTION: Lookup the name * ******************************************************************************/ void AcpiDmValidateName ( char *Name, ACPI_PARSE_OBJECT *Op) { if ((!Name) || (!Op->Common.Parent)) { return; } if (!Op->Common.Node) { AcpiOsPrintf ( " /**** Name not found or not accessible from this scope ****/ "); } ACPI_PARSE_OBJECT *TargetOp; if ((!Name) || (!Op->Common.Parent)) { return; } TargetOp = AcpiPsFind (Op, Name, 0, 0); if (!TargetOp) { /* * Didn't find the name in the parse tree. This may be * a problem, or it may simply be one of the predefined names * (such as _OS_). Rather than worry about looking up all * the predefined names, just display the name as given */ AcpiOsPrintf ( " /**** Name not found or not accessible from this scope ****/ "); } } #endif #endif src/acpica/source/components/disassembler/dmobject.c000066400000000000000000000467451231470457100232060ustar00rootroot00000000000000/******************************************************************************* * * Module Name: dmobject - ACPI object decode and display * ******************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #include "acpi.h" #include "accommon.h" #include "acnamesp.h" #include "acdisasm.h" #ifdef ACPI_DISASSEMBLER #define _COMPONENT ACPI_CA_DEBUGGER ACPI_MODULE_NAME ("dmnames") /* Local prototypes */ static void AcpiDmDecodeNode ( ACPI_NAMESPACE_NODE *Node); /******************************************************************************* * * FUNCTION: AcpiDmDumpMethodInfo * * PARAMETERS: Status - Method execution status * WalkState - Current state of the parse tree walk * Op - Executing parse op * * RETURN: None * * DESCRIPTION: Called when a method has been aborted because of an error. * Dumps the method execution stack, and the method locals/args, * and disassembles the AML opcode that failed. * ******************************************************************************/ void AcpiDmDumpMethodInfo ( ACPI_STATUS Status, ACPI_WALK_STATE *WalkState, ACPI_PARSE_OBJECT *Op) { ACPI_PARSE_OBJECT *Next; ACPI_THREAD_STATE *Thread; ACPI_WALK_STATE *NextWalkState; ACPI_NAMESPACE_NODE *PreviousMethod = NULL; /* Ignore control codes, they are not errors */ if ((Status & AE_CODE_MASK) == AE_CODE_CONTROL) { return; } /* We may be executing a deferred opcode */ if (WalkState->DeferredNode) { AcpiOsPrintf ("Executing subtree for Buffer/Package/Region\n"); return; } /* * If there is no Thread, we are not actually executing a method. * This can happen when the iASL compiler calls the interpreter * to perform constant folding. */ Thread = WalkState->Thread; if (!Thread) { return; } /* Display exception and method name */ AcpiOsPrintf ("\n**** Exception %s during execution of method ", AcpiFormatException (Status)); AcpiNsPrintNodePathname (WalkState->MethodNode, NULL); /* Display stack of executing methods */ AcpiOsPrintf ("\n\nMethod Execution Stack:\n"); NextWalkState = Thread->WalkStateList; /* Walk list of linked walk states */ while (NextWalkState) { AcpiOsPrintf (" Method [%4.4s] executing: ", AcpiUtGetNodeName (NextWalkState->MethodNode)); /* First method is the currently executing method */ if (NextWalkState == WalkState) { if (Op) { /* Display currently executing ASL statement */ Next = Op->Common.Next; Op->Common.Next = NULL; AcpiDmDisassemble (NextWalkState, Op, ACPI_UINT32_MAX); Op->Common.Next = Next; } } else { /* * This method has called another method * NOTE: the method call parse subtree is already deleted at this * point, so we cannot disassemble the method invocation. */ AcpiOsPrintf ("Call to method "); AcpiNsPrintNodePathname (PreviousMethod, NULL); } PreviousMethod = NextWalkState->MethodNode; NextWalkState = NextWalkState->Next; AcpiOsPrintf ("\n"); } /* Display the method locals and arguments */ AcpiOsPrintf ("\n"); AcpiDmDisplayLocals (WalkState); AcpiOsPrintf ("\n"); AcpiDmDisplayArguments (WalkState); AcpiOsPrintf ("\n"); } /******************************************************************************* * * FUNCTION: AcpiDmDecodeInternalObject * * PARAMETERS: ObjDesc - Object to be displayed * * RETURN: None * * DESCRIPTION: Short display of an internal object. Numbers/Strings/Buffers. * ******************************************************************************/ void AcpiDmDecodeInternalObject ( ACPI_OPERAND_OBJECT *ObjDesc) { UINT32 i; if (!ObjDesc) { AcpiOsPrintf (" Uninitialized"); return; } if (ACPI_GET_DESCRIPTOR_TYPE (ObjDesc) != ACPI_DESC_TYPE_OPERAND) { AcpiOsPrintf (" %p [%s]", ObjDesc, AcpiUtGetDescriptorName (ObjDesc)); return; } AcpiOsPrintf (" %s", AcpiUtGetObjectTypeName (ObjDesc)); switch (ObjDesc->Common.Type) { case ACPI_TYPE_INTEGER: AcpiOsPrintf (" %8.8X%8.8X", ACPI_FORMAT_UINT64 (ObjDesc->Integer.Value)); break; case ACPI_TYPE_STRING: AcpiOsPrintf ("(%u) \"%.24s", ObjDesc->String.Length, ObjDesc->String.Pointer); if (ObjDesc->String.Length > 24) { AcpiOsPrintf ("..."); } else { AcpiOsPrintf ("\""); } break; case ACPI_TYPE_BUFFER: AcpiOsPrintf ("(%u)", ObjDesc->Buffer.Length); for (i = 0; (i < 8) && (i < ObjDesc->Buffer.Length); i++) { AcpiOsPrintf (" %2.2X", ObjDesc->Buffer.Pointer[i]); } break; default: AcpiOsPrintf (" %p", ObjDesc); break; } } /******************************************************************************* * * FUNCTION: AcpiDmDecodeNode * * PARAMETERS: Node - Object to be displayed * * RETURN: None * * DESCRIPTION: Short display of a namespace node * ******************************************************************************/ static void AcpiDmDecodeNode ( ACPI_NAMESPACE_NODE *Node) { AcpiOsPrintf (" Name %4.4s", AcpiUtGetNodeName (Node)); if (Node->Flags & ANOBJ_METHOD_ARG) { AcpiOsPrintf (" [Method Arg]"); } if (Node->Flags & ANOBJ_METHOD_LOCAL) { AcpiOsPrintf (" [Method Local]"); } switch (Node->Type) { /* These types have no attached object */ case ACPI_TYPE_DEVICE: AcpiOsPrintf (" Device"); break; case ACPI_TYPE_THERMAL: AcpiOsPrintf (" Thermal Zone"); break; default: AcpiDmDecodeInternalObject (AcpiNsGetAttachedObject (Node)); break; } } /******************************************************************************* * * FUNCTION: AcpiDmDisplayInternalObject * * PARAMETERS: ObjDesc - Object to be displayed * WalkState - Current walk state * * RETURN: None * * DESCRIPTION: Short display of an internal object * ******************************************************************************/ void AcpiDmDisplayInternalObject ( ACPI_OPERAND_OBJECT *ObjDesc, ACPI_WALK_STATE *WalkState) { UINT8 Type; AcpiOsPrintf ("%p ", ObjDesc); if (!ObjDesc) { AcpiOsPrintf ("\n"); return; } /* Decode the object type */ switch (ACPI_GET_DESCRIPTOR_TYPE (ObjDesc)) { case ACPI_DESC_TYPE_PARSER: AcpiOsPrintf (" "); break; case ACPI_DESC_TYPE_NAMED: AcpiDmDecodeNode ((ACPI_NAMESPACE_NODE *) ObjDesc); break; case ACPI_DESC_TYPE_OPERAND: Type = ObjDesc->Common.Type; if (Type > ACPI_TYPE_LOCAL_MAX) { AcpiOsPrintf (" Type %X [Invalid Type]", (UINT32) Type); return; } /* Decode the ACPI object type */ switch (ObjDesc->Common.Type) { case ACPI_TYPE_LOCAL_REFERENCE: AcpiOsPrintf ("[%s] ", AcpiUtGetReferenceName (ObjDesc)); /* Decode the refererence */ switch (ObjDesc->Reference.Class) { case ACPI_REFCLASS_LOCAL: AcpiOsPrintf ("%X ", ObjDesc->Reference.Value); if (WalkState) { ObjDesc = WalkState->LocalVariables [ObjDesc->Reference.Value].Object; AcpiOsPrintf ("%p", ObjDesc); AcpiDmDecodeInternalObject (ObjDesc); } break; case ACPI_REFCLASS_ARG: AcpiOsPrintf ("%X ", ObjDesc->Reference.Value); if (WalkState) { ObjDesc = WalkState->Arguments [ObjDesc->Reference.Value].Object; AcpiOsPrintf ("%p", ObjDesc); AcpiDmDecodeInternalObject (ObjDesc); } break; case ACPI_REFCLASS_INDEX: switch (ObjDesc->Reference.TargetType) { case ACPI_TYPE_BUFFER_FIELD: AcpiOsPrintf ("%p", ObjDesc->Reference.Object); AcpiDmDecodeInternalObject (ObjDesc->Reference.Object); break; case ACPI_TYPE_PACKAGE: AcpiOsPrintf ("%p", ObjDesc->Reference.Where); if (!ObjDesc->Reference.Where) { AcpiOsPrintf (" Uninitialized WHERE pointer"); } else { AcpiDmDecodeInternalObject ( *(ObjDesc->Reference.Where)); } break; default: AcpiOsPrintf ("Unknown index target type"); break; } break; case ACPI_REFCLASS_REFOF: if (!ObjDesc->Reference.Object) { AcpiOsPrintf ("Uninitialized reference subobject pointer"); break; } /* Reference can be to a Node or an Operand object */ switch (ACPI_GET_DESCRIPTOR_TYPE (ObjDesc->Reference.Object)) { case ACPI_DESC_TYPE_NAMED: AcpiDmDecodeNode (ObjDesc->Reference.Object); break; case ACPI_DESC_TYPE_OPERAND: AcpiDmDecodeInternalObject (ObjDesc->Reference.Object); break; default: break; } break; case ACPI_REFCLASS_NAME: AcpiDmDecodeNode (ObjDesc->Reference.Node); break; case ACPI_REFCLASS_DEBUG: case ACPI_REFCLASS_TABLE: AcpiOsPrintf ("\n"); break; default: /* Unknown reference class */ AcpiOsPrintf ("%2.2X\n", ObjDesc->Reference.Class); break; } break; default: AcpiOsPrintf (" "); AcpiDmDecodeInternalObject (ObjDesc); break; } break; default: AcpiOsPrintf (" [%s]", AcpiUtGetDescriptorName (ObjDesc)); break; } AcpiOsPrintf ("\n"); } /******************************************************************************* * * FUNCTION: AcpiDmDisplayLocals * * PARAMETERS: WalkState - State for current method * * RETURN: None * * DESCRIPTION: Display all locals for the currently running control method * ******************************************************************************/ void AcpiDmDisplayLocals ( ACPI_WALK_STATE *WalkState) { UINT32 i; ACPI_OPERAND_OBJECT *ObjDesc; ACPI_NAMESPACE_NODE *Node; ObjDesc = WalkState->MethodDesc; Node = WalkState->MethodNode; if (!Node) { AcpiOsPrintf ( "No method node (Executing subtree for buffer or opregion)\n"); return; } if (Node->Type != ACPI_TYPE_METHOD) { AcpiOsPrintf ("Executing subtree for Buffer/Package/Region\n"); return; } AcpiOsPrintf ("Local Variables for method [%4.4s]:\n", AcpiUtGetNodeName (Node)); for (i = 0; i < ACPI_METHOD_NUM_LOCALS; i++) { ObjDesc = WalkState->LocalVariables[i].Object; AcpiOsPrintf (" Local%X: ", i); AcpiDmDisplayInternalObject (ObjDesc, WalkState); } } /******************************************************************************* * * FUNCTION: AcpiDmDisplayArguments * * PARAMETERS: WalkState - State for current method * * RETURN: None * * DESCRIPTION: Display all arguments for the currently running control method * ******************************************************************************/ void AcpiDmDisplayArguments ( ACPI_WALK_STATE *WalkState) { UINT32 i; ACPI_OPERAND_OBJECT *ObjDesc; ACPI_NAMESPACE_NODE *Node; ObjDesc = WalkState->MethodDesc; Node = WalkState->MethodNode; if (!Node) { AcpiOsPrintf ( "No method node (Executing subtree for buffer or opregion)\n"); return; } if (Node->Type != ACPI_TYPE_METHOD) { AcpiOsPrintf ("Executing subtree for Buffer/Package/Region\n"); return; } AcpiOsPrintf ( "Arguments for Method [%4.4s]: (%X arguments defined, max concurrency = %X)\n", AcpiUtGetNodeName (Node), ObjDesc->Method.ParamCount, ObjDesc->Method.SyncLevel); for (i = 0; i < ACPI_METHOD_NUM_ARGS; i++) { ObjDesc = WalkState->Arguments[i].Object; AcpiOsPrintf (" Arg%u: ", i); AcpiDmDisplayInternalObject (ObjDesc, WalkState); } } #endif src/acpica/source/components/disassembler/dmopcode.c000066400000000000000000000674341231470457100232070ustar00rootroot00000000000000/******************************************************************************* * * Module Name: dmopcode - AML disassembler, specific AML opcodes * ******************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #include "acpi.h" #include "accommon.h" #include "acparser.h" #include "amlcode.h" #include "acdisasm.h" #include "acinterp.h" #include "acnamesp.h" #ifdef ACPI_DISASSEMBLER #define _COMPONENT ACPI_CA_DEBUGGER ACPI_MODULE_NAME ("dmopcode") /* Local prototypes */ static void AcpiDmMatchKeyword ( ACPI_PARSE_OBJECT *Op); /******************************************************************************* * * FUNCTION: AcpiDmDisplayTargetPathname * * PARAMETERS: Op - Parse object * * RETURN: None * * DESCRIPTION: For AML opcodes that have a target operand, display the full * pathname for the target, in a comment field. Handles Return() * statements also. * ******************************************************************************/ void AcpiDmDisplayTargetPathname ( ACPI_PARSE_OBJECT *Op) { ACPI_PARSE_OBJECT *NextOp; ACPI_PARSE_OBJECT *PrevOp = NULL; char *Pathname; const ACPI_OPCODE_INFO *OpInfo; if (Op->Common.AmlOpcode == AML_RETURN_OP) { PrevOp = Op->Asl.Value.Arg; } else { OpInfo = AcpiPsGetOpcodeInfo (Op->Common.AmlOpcode); if (!(OpInfo->Flags & AML_HAS_TARGET)) { return; } /* Target is the last Op in the arg list */ NextOp = Op->Asl.Value.Arg; while (NextOp) { PrevOp = NextOp; NextOp = PrevOp->Asl.Next; } } if (!PrevOp) { return; } /* We must have a namepath AML opcode */ if (PrevOp->Asl.AmlOpcode != AML_INT_NAMEPATH_OP) { return; } /* A null string is the "no target specified" case */ if (!PrevOp->Asl.Value.String) { return; } /* No node means "unresolved external reference" */ if (!PrevOp->Asl.Node) { AcpiOsPrintf (" /* External reference */"); return; } /* Ignore if path is already from the root */ if (*PrevOp->Asl.Value.String == '\\') { return; } /* Now: we can get the full pathname */ Pathname = AcpiNsGetExternalPathname (PrevOp->Asl.Node); if (!Pathname) { return; } AcpiOsPrintf (" /* %s */", Pathname); ACPI_FREE (Pathname); } /******************************************************************************* * * FUNCTION: AcpiDmNotifyDescription * * PARAMETERS: Op - Name() parse object * * RETURN: None * * DESCRIPTION: Emit a description comment for the value associated with a * Notify() operator. * ******************************************************************************/ void AcpiDmNotifyDescription ( ACPI_PARSE_OBJECT *Op) { ACPI_PARSE_OBJECT *NextOp; ACPI_NAMESPACE_NODE *Node; UINT8 NotifyValue; UINT8 Type = ACPI_TYPE_ANY; /* The notify value is the second argument */ NextOp = Op->Asl.Value.Arg; NextOp = NextOp->Asl.Next; switch (NextOp->Common.AmlOpcode) { case AML_ZERO_OP: case AML_ONE_OP: NotifyValue = (UINT8) NextOp->Common.AmlOpcode; break; case AML_BYTE_OP: NotifyValue = (UINT8) NextOp->Asl.Value.Integer; break; default: return; } /* * Attempt to get the namespace node so we can determine the object type. * Some notify values are dependent on the object type (Device, Thermal, * or Processor). */ Node = Op->Asl.Node; if (Node) { Type = Node->Type; } AcpiOsPrintf (" // %s", AcpiUtGetNotifyName (NotifyValue, Type)); } /******************************************************************************* * * FUNCTION: AcpiDmPredefinedDescription * * PARAMETERS: Op - Name() parse object * * RETURN: None * * DESCRIPTION: Emit a description comment for a predefined ACPI name. * Used for iASL compiler only. * ******************************************************************************/ void AcpiDmPredefinedDescription ( ACPI_PARSE_OBJECT *Op) { #ifdef ACPI_ASL_COMPILER const AH_PREDEFINED_NAME *Info; char *NameString; int LastCharIsDigit; int LastCharsAreHex; if (!Op) { return; } /* Ensure that the comment field is emitted only once */ if (Op->Common.DisasmFlags & ACPI_PARSEOP_PREDEF_CHECKED) { return; } Op->Common.DisasmFlags |= ACPI_PARSEOP_PREDEF_CHECKED; /* Predefined name must start with an underscore */ NameString = ACPI_CAST_PTR (char, &Op->Named.Name); if (NameString[0] != '_') { return; } /* * Check for the special ACPI names: * _ACd, _ALd, _EJd, _Exx, _Lxx, _Qxx, _Wxx, _T_a * (where d=decimal_digit, x=hex_digit, a=anything) * * Convert these to the generic name for table lookup. * Note: NameString is guaranteed to be upper case here. */ LastCharIsDigit = (ACPI_IS_DIGIT (NameString[3])); /* d */ LastCharsAreHex = (ACPI_IS_XDIGIT (NameString[2]) && /* xx */ ACPI_IS_XDIGIT (NameString[3])); switch (NameString[1]) { case 'A': if ((NameString[2] == 'C') && (LastCharIsDigit)) { NameString = "_ACx"; } else if ((NameString[2] == 'L') && (LastCharIsDigit)) { NameString = "_ALx"; } break; case 'E': if ((NameString[2] == 'J') && (LastCharIsDigit)) { NameString = "_EJx"; } else if (LastCharsAreHex) { NameString = "_Exx"; } break; case 'L': if (LastCharsAreHex) { NameString = "_Lxx"; } break; case 'Q': if (LastCharsAreHex) { NameString = "_Qxx"; } break; case 'T': if (NameString[2] == '_') { NameString = "_T_x"; } break; case 'W': if (LastCharsAreHex) { NameString = "_Wxx"; } break; default: break; } /* Match the name in the info table */ Info = AcpiAhMatchPredefinedName (NameString); if (Info) { AcpiOsPrintf (" // %4.4s: %s", NameString, ACPI_CAST_PTR (char, Info->Description)); } #endif return; } /******************************************************************************* * * FUNCTION: AcpiDmFieldPredefinedDescription * * PARAMETERS: Op - Parse object * * RETURN: None * * DESCRIPTION: Emit a description comment for a resource descriptor tag * (which is a predefined ACPI name.) Used for iASL compiler only. * ******************************************************************************/ void AcpiDmFieldPredefinedDescription ( ACPI_PARSE_OBJECT *Op) { #ifdef ACPI_ASL_COMPILER ACPI_PARSE_OBJECT *IndexOp; char *Tag; const ACPI_OPCODE_INFO *OpInfo; const AH_PREDEFINED_NAME *Info; if (!Op) { return; } /* Ensure that the comment field is emitted only once */ if (Op->Common.DisasmFlags & ACPI_PARSEOP_PREDEF_CHECKED) { return; } Op->Common.DisasmFlags |= ACPI_PARSEOP_PREDEF_CHECKED; /* * Op must be one of the Create* operators: CreateField, CreateBitField, * CreateByteField, CreateWordField, CreateDwordField, CreateQwordField */ OpInfo = AcpiPsGetOpcodeInfo (Op->Common.AmlOpcode); if (!(OpInfo->Flags & AML_CREATE)) { return; } /* Second argument is the Index argument */ IndexOp = Op->Common.Value.Arg; IndexOp = IndexOp->Common.Next; /* Index argument must be a namepath */ if (IndexOp->Common.AmlOpcode != AML_INT_NAMEPATH_OP) { return; } /* Major cheat: We previously put the Tag ptr in the Node field */ Tag = ACPI_CAST_PTR (char, IndexOp->Common.Node); if (!Tag) { return; } /* Match the name in the info table */ Info = AcpiAhMatchPredefinedName (Tag); if (Info) { AcpiOsPrintf (" // %4.4s: %s", Tag, ACPI_CAST_PTR (char, Info->Description)); } #endif return; } /******************************************************************************* * * FUNCTION: AcpiDmMethodFlags * * PARAMETERS: Op - Method Object to be examined * * RETURN: None * * DESCRIPTION: Decode control method flags * ******************************************************************************/ void AcpiDmMethodFlags ( ACPI_PARSE_OBJECT *Op) { UINT32 Flags; UINT32 Args; /* The next Op contains the flags */ Op = AcpiPsGetDepthNext (NULL, Op); Flags = (UINT8) Op->Common.Value.Integer; Args = Flags & 0x07; /* Mark the Op as completed */ Op->Common.DisasmFlags |= ACPI_PARSEOP_IGNORE; /* 1) Method argument count */ AcpiOsPrintf (", %u, ", Args); /* 2) Serialize rule */ if (!(Flags & 0x08)) { AcpiOsPrintf ("Not"); } AcpiOsPrintf ("Serialized"); /* 3) SyncLevel */ if (Flags & 0xF0) { AcpiOsPrintf (", %u", Flags >> 4); } } /******************************************************************************* * * FUNCTION: AcpiDmFieldFlags * * PARAMETERS: Op - Field Object to be examined * * RETURN: None * * DESCRIPTION: Decode Field definition flags * ******************************************************************************/ void AcpiDmFieldFlags ( ACPI_PARSE_OBJECT *Op) { UINT32 Flags; Op = Op->Common.Next; Flags = (UINT8) Op->Common.Value.Integer; /* Mark the Op as completed */ Op->Common.DisasmFlags |= ACPI_PARSEOP_IGNORE; AcpiOsPrintf ("%s, ", AcpiGbl_AccessTypes [Flags & 0x07]); AcpiOsPrintf ("%s, ", AcpiGbl_LockRule [(Flags & 0x10) >> 4]); AcpiOsPrintf ("%s)", AcpiGbl_UpdateRules [(Flags & 0x60) >> 5]); } /******************************************************************************* * * FUNCTION: AcpiDmAddressSpace * * PARAMETERS: SpaceId - ID to be translated * * RETURN: None * * DESCRIPTION: Decode a SpaceId to an AddressSpaceKeyword * ******************************************************************************/ void AcpiDmAddressSpace ( UINT8 SpaceId) { if (SpaceId >= ACPI_NUM_PREDEFINED_REGIONS) { if (SpaceId == 0x7F) { AcpiOsPrintf ("FFixedHW, "); } else { AcpiOsPrintf ("0x%.2X, ", SpaceId); } } else { AcpiOsPrintf ("%s, ", AcpiGbl_RegionTypes [SpaceId]); } } /******************************************************************************* * * FUNCTION: AcpiDmRegionFlags * * PARAMETERS: Op - Object to be examined * * RETURN: None * * DESCRIPTION: Decode OperationRegion flags * ******************************************************************************/ void AcpiDmRegionFlags ( ACPI_PARSE_OBJECT *Op) { /* The next Op contains the SpaceId */ Op = AcpiPsGetDepthNext (NULL, Op); /* Mark the Op as completed */ Op->Common.DisasmFlags |= ACPI_PARSEOP_IGNORE; AcpiOsPrintf (", "); AcpiDmAddressSpace ((UINT8) Op->Common.Value.Integer); } /******************************************************************************* * * FUNCTION: AcpiDmMatchOp * * PARAMETERS: Op - Match Object to be examined * * RETURN: None * * DESCRIPTION: Decode Match opcode operands * ******************************************************************************/ void AcpiDmMatchOp ( ACPI_PARSE_OBJECT *Op) { ACPI_PARSE_OBJECT *NextOp; NextOp = AcpiPsGetDepthNext (NULL, Op); NextOp = NextOp->Common.Next; if (!NextOp) { /* Handle partial tree during single-step */ return; } /* Mark the two nodes that contain the encoding for the match keywords */ NextOp->Common.DisasmOpcode = ACPI_DASM_MATCHOP; NextOp = NextOp->Common.Next; NextOp = NextOp->Common.Next; NextOp->Common.DisasmOpcode = ACPI_DASM_MATCHOP; } /******************************************************************************* * * FUNCTION: AcpiDmMatchKeyword * * PARAMETERS: Op - Match Object to be examined * * RETURN: None * * DESCRIPTION: Decode Match opcode operands * ******************************************************************************/ static void AcpiDmMatchKeyword ( ACPI_PARSE_OBJECT *Op) { if (((UINT32) Op->Common.Value.Integer) > ACPI_MAX_MATCH_OPCODE) { AcpiOsPrintf ("/* Unknown Match Keyword encoding */"); } else { AcpiOsPrintf ("%s", ACPI_CAST_PTR (char, AcpiGbl_MatchOps[(ACPI_SIZE) Op->Common.Value.Integer])); } } /******************************************************************************* * * FUNCTION: AcpiDmDisassembleOneOp * * PARAMETERS: WalkState - Current walk info * Info - Parse tree walk info * Op - Op that is to be printed * * RETURN: None * * DESCRIPTION: Disassemble a single AML opcode * ******************************************************************************/ void AcpiDmDisassembleOneOp ( ACPI_WALK_STATE *WalkState, ACPI_OP_WALK_INFO *Info, ACPI_PARSE_OBJECT *Op) { const ACPI_OPCODE_INFO *OpInfo = NULL; UINT32 Offset; UINT32 Length; ACPI_PARSE_OBJECT *Child; ACPI_STATUS Status; UINT8 *Aml; const AH_DEVICE_ID *IdInfo; if (!Op) { AcpiOsPrintf (""); return; } switch (Op->Common.DisasmOpcode) { case ACPI_DASM_MATCHOP: AcpiDmMatchKeyword (Op); return; case ACPI_DASM_LNOT_SUFFIX: switch (Op->Common.AmlOpcode) { case AML_LEQUAL_OP: AcpiOsPrintf ("LNotEqual"); break; case AML_LGREATER_OP: AcpiOsPrintf ("LLessEqual"); break; case AML_LLESS_OP: AcpiOsPrintf ("LGreaterEqual"); break; default: break; } Op->Common.DisasmOpcode = 0; Op->Common.DisasmFlags |= ACPI_PARSEOP_IGNORE; return; default: break; } OpInfo = AcpiPsGetOpcodeInfo (Op->Common.AmlOpcode); /* The op and arguments */ switch (Op->Common.AmlOpcode) { case AML_LNOT_OP: Child = Op->Common.Value.Arg; if ((Child->Common.AmlOpcode == AML_LEQUAL_OP) || (Child->Common.AmlOpcode == AML_LGREATER_OP) || (Child->Common.AmlOpcode == AML_LLESS_OP)) { Child->Common.DisasmOpcode = ACPI_DASM_LNOT_SUFFIX; Op->Common.DisasmOpcode = ACPI_DASM_LNOT_PREFIX; } else { AcpiOsPrintf ("%s", OpInfo->Name); } break; case AML_BYTE_OP: AcpiOsPrintf ("0x%2.2X", (UINT32) Op->Common.Value.Integer); break; case AML_WORD_OP: if (Op->Common.DisasmOpcode == ACPI_DASM_EISAID) { AcpiDmDecompressEisaId ((UINT32) Op->Common.Value.Integer); } else { AcpiOsPrintf ("0x%4.4X", (UINT32) Op->Common.Value.Integer); } break; case AML_DWORD_OP: if (Op->Common.DisasmOpcode == ACPI_DASM_EISAID) { AcpiDmDecompressEisaId ((UINT32) Op->Common.Value.Integer); } else { AcpiOsPrintf ("0x%8.8X", (UINT32) Op->Common.Value.Integer); } break; case AML_QWORD_OP: AcpiOsPrintf ("0x%8.8X%8.8X", ACPI_FORMAT_UINT64 (Op->Common.Value.Integer)); break; case AML_STRING_OP: AcpiUtPrintString (Op->Common.Value.String, ACPI_UINT16_MAX); /* For _HID/_CID strings, attempt to output a descriptive comment */ if (Op->Common.DisasmOpcode == ACPI_DASM_HID_STRING) { /* If we know about the ID, emit the description */ IdInfo = AcpiAhMatchHardwareId (Op->Common.Value.String); if (IdInfo) { AcpiOsPrintf (" /* %s */", IdInfo->Description); } } break; case AML_BUFFER_OP: /* * Determine the type of buffer. We can have one of the following: * * 1) ResourceTemplate containing Resource Descriptors. * 2) Unicode String buffer * 3) ASCII String buffer * 4) Raw data buffer (if none of the above) * * Since there are no special AML opcodes to differentiate these * types of buffers, we have to closely look at the data in the * buffer to determine the type. */ if (!AcpiGbl_NoResourceDisassembly) { Status = AcpiDmIsResourceTemplate (WalkState, Op); if (ACPI_SUCCESS (Status)) { Op->Common.DisasmOpcode = ACPI_DASM_RESOURCE; AcpiOsPrintf ("ResourceTemplate"); break; } else if (Status == AE_AML_NO_RESOURCE_END_TAG) { AcpiOsPrintf ("/**** Is ResourceTemplate, but EndTag not at buffer end ****/ "); } } if (AcpiDmIsUnicodeBuffer (Op)) { Op->Common.DisasmOpcode = ACPI_DASM_UNICODE; AcpiOsPrintf ("Unicode ("); } else if (AcpiDmIsStringBuffer (Op)) { Op->Common.DisasmOpcode = ACPI_DASM_STRING; AcpiOsPrintf ("Buffer"); } else if (AcpiDmIsPldBuffer (Op)) { Op->Common.DisasmOpcode = ACPI_DASM_PLD_METHOD; AcpiOsPrintf ("Buffer"); } else { Op->Common.DisasmOpcode = ACPI_DASM_BUFFER; AcpiOsPrintf ("Buffer"); } break; case AML_INT_STATICSTRING_OP: if (Op->Common.Value.String) { AcpiOsPrintf ("%s", Op->Common.Value.String); } else { AcpiOsPrintf ("\"\""); } break; case AML_INT_NAMEPATH_OP: AcpiDmNamestring (Op->Common.Value.Name); break; case AML_INT_NAMEDFIELD_OP: Length = AcpiDmDumpName (Op->Named.Name); AcpiOsPrintf (",%*.s %u", (unsigned) (5 - Length), " ", (UINT32) Op->Common.Value.Integer); AcpiDmCommaIfFieldMember (Op); Info->BitOffset += (UINT32) Op->Common.Value.Integer; break; case AML_INT_RESERVEDFIELD_OP: /* Offset() -- Must account for previous offsets */ Offset = (UINT32) Op->Common.Value.Integer; Info->BitOffset += Offset; if (Info->BitOffset % 8 == 0) { AcpiOsPrintf ("Offset (0x%.2X)", ACPI_DIV_8 (Info->BitOffset)); } else { AcpiOsPrintf (" , %u", Offset); } AcpiDmCommaIfFieldMember (Op); break; case AML_INT_ACCESSFIELD_OP: case AML_INT_EXTACCESSFIELD_OP: AcpiOsPrintf ("AccessAs (%s, ", AcpiGbl_AccessTypes [(UINT32) (Op->Common.Value.Integer & 0x7)]); AcpiDmDecodeAttribute ((UINT8) (Op->Common.Value.Integer >> 8)); if (Op->Common.AmlOpcode == AML_INT_EXTACCESSFIELD_OP) { AcpiOsPrintf (" (0x%2.2X)", (unsigned) ((Op->Common.Value.Integer >> 16) & 0xFF)); } AcpiOsPrintf (")"); AcpiDmCommaIfFieldMember (Op); break; case AML_INT_CONNECTION_OP: /* * Two types of Connection() - one with a buffer object, the * other with a namestring that points to a buffer object. */ AcpiOsPrintf ("Connection ("); Child = Op->Common.Value.Arg; if (Child->Common.AmlOpcode == AML_INT_BYTELIST_OP) { AcpiOsPrintf ("\n"); Aml = Child->Named.Data; Length = (UINT32) Child->Common.Value.Integer; Info->Level += 1; Op->Common.DisasmOpcode = ACPI_DASM_RESOURCE; AcpiDmResourceTemplate (Info, Op->Common.Parent, Aml, Length); Info->Level -= 1; AcpiDmIndent (Info->Level); } else { AcpiDmNamestring (Child->Common.Value.Name); } AcpiOsPrintf (")"); AcpiDmCommaIfFieldMember (Op); AcpiOsPrintf ("\n"); Op->Common.DisasmFlags |= ACPI_PARSEOP_IGNORE; /* for now, ignore in AcpiDmAscendingOp */ Child->Common.DisasmFlags |= ACPI_PARSEOP_IGNORE; break; case AML_INT_BYTELIST_OP: AcpiDmByteList (Info, Op); break; case AML_INT_METHODCALL_OP: Op = AcpiPsGetDepthNext (NULL, Op); Op->Common.DisasmFlags |= ACPI_PARSEOP_IGNORE; AcpiDmNamestring (Op->Common.Value.Name); break; default: /* Just get the opcode name and print it */ AcpiOsPrintf ("%s", OpInfo->Name); #ifdef ACPI_DEBUGGER if ((Op->Common.AmlOpcode == AML_INT_RETURN_VALUE_OP) && (WalkState) && (WalkState->Results) && (WalkState->ResultCount)) { AcpiDmDecodeInternalObject ( WalkState->Results->Results.ObjDesc [ (WalkState->ResultCount - 1) % ACPI_RESULTS_FRAME_OBJ_NUM]); } #endif break; } } #endif /* ACPI_DISASSEMBLER */ src/acpica/source/components/disassembler/dmresrc.c000066400000000000000000000425331231470457100230450ustar00rootroot00000000000000/******************************************************************************* * * Module Name: dmresrc.c - Resource Descriptor disassembly * ******************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #include "acpi.h" #include "accommon.h" #include "amlcode.h" #include "acdisasm.h" #ifdef ACPI_DISASSEMBLER #define _COMPONENT ACPI_CA_DEBUGGER ACPI_MODULE_NAME ("dbresrc") /* Dispatch tables for Resource disassembly functions */ static ACPI_RESOURCE_HANDLER AcpiGbl_DmResourceDispatch [] = { /* Small descriptors */ NULL, /* 0x00, Reserved */ NULL, /* 0x01, Reserved */ NULL, /* 0x02, Reserved */ NULL, /* 0x03, Reserved */ AcpiDmIrqDescriptor, /* 0x04, ACPI_RESOURCE_NAME_IRQ_FORMAT */ AcpiDmDmaDescriptor, /* 0x05, ACPI_RESOURCE_NAME_DMA_FORMAT */ AcpiDmStartDependentDescriptor, /* 0x06, ACPI_RESOURCE_NAME_START_DEPENDENT */ AcpiDmEndDependentDescriptor, /* 0x07, ACPI_RESOURCE_NAME_END_DEPENDENT */ AcpiDmIoDescriptor, /* 0x08, ACPI_RESOURCE_NAME_IO_PORT */ AcpiDmFixedIoDescriptor, /* 0x09, ACPI_RESOURCE_NAME_FIXED_IO_PORT */ AcpiDmFixedDmaDescriptor, /* 0x0A, ACPI_RESOURCE_NAME_FIXED_DMA */ NULL, /* 0x0B, Reserved */ NULL, /* 0x0C, Reserved */ NULL, /* 0x0D, Reserved */ AcpiDmVendorSmallDescriptor, /* 0x0E, ACPI_RESOURCE_NAME_SMALL_VENDOR */ NULL, /* 0x0F, ACPI_RESOURCE_NAME_END_TAG (not used) */ /* Large descriptors */ NULL, /* 0x00, Reserved */ AcpiDmMemory24Descriptor, /* 0x01, ACPI_RESOURCE_NAME_MEMORY_24 */ AcpiDmGenericRegisterDescriptor,/* 0x02, ACPI_RESOURCE_NAME_GENERIC_REGISTER */ NULL, /* 0x03, Reserved */ AcpiDmVendorLargeDescriptor, /* 0x04, ACPI_RESOURCE_NAME_LARGE_VENDOR */ AcpiDmMemory32Descriptor, /* 0x05, ACPI_RESOURCE_NAME_MEMORY_32 */ AcpiDmFixedMemory32Descriptor, /* 0x06, ACPI_RESOURCE_NAME_FIXED_MEMORY_32 */ AcpiDmDwordDescriptor, /* 0x07, ACPI_RESOURCE_NAME_DWORD_ADDRESS_SPACE */ AcpiDmWordDescriptor, /* 0x08, ACPI_RESOURCE_NAME_WORD_ADDRESS_SPACE */ AcpiDmInterruptDescriptor, /* 0x09, ACPI_RESOURCE_NAME_EXTENDED_XRUPT */ AcpiDmQwordDescriptor, /* 0x0A, ACPI_RESOURCE_NAME_QWORD_ADDRESS_SPACE */ AcpiDmExtendedDescriptor, /* 0x0B, ACPI_RESOURCE_NAME_EXTENDED_ADDRESS_SPACE */ AcpiDmGpioDescriptor, /* 0x0C, ACPI_RESOURCE_NAME_GPIO */ NULL, /* 0x0D, Reserved */ AcpiDmSerialBusDescriptor /* 0x0E, ACPI_RESOURCE_NAME_SERIAL_BUS */ }; /* Only used for single-threaded applications */ /* TBD: remove when name is passed as parameter to the dump functions */ static UINT32 ResourceName; /******************************************************************************* * * FUNCTION: AcpiDmDescriptorName * * PARAMETERS: None * * RETURN: None * * DESCRIPTION: Emit a name for the descriptor if one is present (indicated * by the name being changed from the default name.) A name is only * emitted if a reference to the descriptor has been made somewhere * in the original ASL code. * ******************************************************************************/ void AcpiDmDescriptorName ( void) { if (ResourceName == ACPI_DEFAULT_RESNAME) { return; } AcpiOsPrintf ("%4.4s", (char *) &ResourceName); } /******************************************************************************* * * FUNCTION: AcpiDmDumpInteger* * * PARAMETERS: Value - Value to emit * Name - Associated name (emitted as a comment) * * RETURN: None * * DESCRIPTION: Integer output helper functions * ******************************************************************************/ void AcpiDmDumpInteger8 ( UINT8 Value, char *Name) { AcpiOsPrintf ("0x%2.2X, // %s\n", Value, Name); } void AcpiDmDumpInteger16 ( UINT16 Value, char *Name) { AcpiOsPrintf ("0x%4.4X, // %s\n", Value, Name); } void AcpiDmDumpInteger32 ( UINT32 Value, char *Name) { AcpiOsPrintf ("0x%8.8X, // %s\n", Value, Name); } void AcpiDmDumpInteger64 ( UINT64 Value, char *Name) { AcpiOsPrintf ("0x%8.8X%8.8X, // %s\n", ACPI_FORMAT_UINT64 (Value), Name); } /******************************************************************************* * * FUNCTION: AcpiDmBitList * * PARAMETERS: Mask - 16-bit value corresponding to 16 interrupt * or DMA values * * RETURN: None * * DESCRIPTION: Dump a bit mask as a list of individual interrupt/DMA levels. * ******************************************************************************/ void AcpiDmBitList ( UINT16 Mask) { UINT32 i; BOOLEAN Previous = FALSE; /* Open the initializer list */ AcpiOsPrintf ("{"); /* Examine each bit */ for (i = 0; i < 16; i++) { /* Only interested in bits that are set to 1 */ if (Mask & 1) { if (Previous) { AcpiOsPrintf (","); } Previous = TRUE; AcpiOsPrintf ("%u", i); } Mask >>= 1; } /* Close list */ AcpiOsPrintf ("}\n"); } /******************************************************************************* * * FUNCTION: AcpiDmResourceTemplate * * PARAMETERS: Info - Curent parse tree walk info * ByteData - Pointer to the byte list data * ByteCount - Length of the byte list * * RETURN: None * * DESCRIPTION: Dump the contents of a Resource Template containing a set of * Resource Descriptors. * ******************************************************************************/ void AcpiDmResourceTemplate ( ACPI_OP_WALK_INFO *Info, ACPI_PARSE_OBJECT *Op, UINT8 *ByteData, UINT32 ByteCount) { ACPI_STATUS Status; UINT32 CurrentByteOffset; UINT8 ResourceType; UINT32 ResourceLength; void *Aml; UINT32 Level; BOOLEAN DependentFns = FALSE; UINT8 ResourceIndex; ACPI_NAMESPACE_NODE *Node; Level = Info->Level; ResourceName = ACPI_DEFAULT_RESNAME; Node = Op->Common.Node; if (Node) { Node = Node->Child; } for (CurrentByteOffset = 0; CurrentByteOffset < ByteCount;) { Aml = &ByteData[CurrentByteOffset]; /* Get the descriptor type and length */ ResourceType = AcpiUtGetResourceType (Aml); ResourceLength = AcpiUtGetResourceLength (Aml); /* Validate the Resource Type and Resource Length */ Status = AcpiUtValidateResource (NULL, Aml, &ResourceIndex); if (ACPI_FAILURE (Status)) { AcpiOsPrintf ("/*** Could not validate Resource, type (%X) %s***/\n", ResourceType, AcpiFormatException (Status)); return; } /* Point to next descriptor */ CurrentByteOffset += AcpiUtGetDescriptorLength (Aml); /* Descriptor pre-processing */ switch (ResourceType) { case ACPI_RESOURCE_NAME_START_DEPENDENT: /* Finish a previous StartDependentFns */ if (DependentFns) { Level--; AcpiDmIndent (Level); AcpiOsPrintf ("}\n"); } break; case ACPI_RESOURCE_NAME_END_DEPENDENT: Level--; DependentFns = FALSE; break; case ACPI_RESOURCE_NAME_END_TAG: /* Normal exit, the resource list is finished */ if (DependentFns) { /* * Close an open StartDependentDescriptor. This indicates a * missing EndDependentDescriptor. */ Level--; DependentFns = FALSE; /* Go ahead and insert EndDependentFn() */ AcpiDmEndDependentDescriptor (Aml, ResourceLength, Level); AcpiDmIndent (Level); AcpiOsPrintf ( "/*** Disassembler: inserted missing EndDependentFn () ***/\n"); } return; default: break; } /* Disassemble the resource structure */ if (Node) { ResourceName = Node->Name.Integer; Node = Node->Peer; } AcpiGbl_DmResourceDispatch [ResourceIndex] ( Aml, ResourceLength, Level); /* Descriptor post-processing */ if (ResourceType == ACPI_RESOURCE_NAME_START_DEPENDENT) { DependentFns = TRUE; Level++; } } } /******************************************************************************* * * FUNCTION: AcpiDmIsResourceTemplate * * PARAMETERS: WalkState - Current walk info * Op - Buffer Op to be examined * * RETURN: Status. AE_OK if valid template * * DESCRIPTION: Walk a byte list to determine if it consists of a valid set * of resource descriptors. Nothing is output. * ******************************************************************************/ ACPI_STATUS AcpiDmIsResourceTemplate ( ACPI_WALK_STATE *WalkState, ACPI_PARSE_OBJECT *Op) { ACPI_STATUS Status; ACPI_PARSE_OBJECT *NextOp; UINT8 *Aml; UINT8 *EndAml; ACPI_SIZE Length; /* This op must be a buffer */ if (Op->Common.AmlOpcode != AML_BUFFER_OP) { return (AE_TYPE); } /* Get the ByteData list and length */ NextOp = Op->Common.Value.Arg; if (!NextOp) { AcpiOsPrintf ("NULL byte list in buffer\n"); return (AE_TYPE); } NextOp = NextOp->Common.Next; if (!NextOp) { return (AE_TYPE); } Aml = NextOp->Named.Data; Length = (ACPI_SIZE) NextOp->Common.Value.Integer; /* Walk the byte list, abort on any invalid descriptor type or length */ Status = AcpiUtWalkAmlResources (WalkState, Aml, Length, NULL, ACPI_CAST_INDIRECT_PTR (void, &EndAml)); if (ACPI_FAILURE (Status)) { return (AE_TYPE); } /* * For the resource template to be valid, one EndTag must appear * at the very end of the ByteList, not before. (For proper disassembly * of a ResourceTemplate, the buffer must not have any extra data after * the EndTag.) */ if ((Aml + Length - sizeof (AML_RESOURCE_END_TAG)) != EndAml) { return (AE_AML_NO_RESOURCE_END_TAG); } /* * All resource descriptors are valid, therefore this list appears * to be a valid resource template */ return (AE_OK); } #endif src/acpica/source/components/disassembler/dmresrcl.c000066400000000000000000001013321231470457100232120ustar00rootroot00000000000000/******************************************************************************* * * Module Name: dmresrcl.c - "Large" Resource Descriptor disassembly * ******************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #include "acpi.h" #include "accommon.h" #include "acdisasm.h" #ifdef ACPI_DISASSEMBLER #define _COMPONENT ACPI_CA_DEBUGGER ACPI_MODULE_NAME ("dbresrcl") /* Common names for address and memory descriptors */ static char *AcpiDmAddressNames[] = { "Granularity", "Range Minimum", "Range Maximum", "Translation Offset", "Length" }; static char *AcpiDmMemoryNames[] = { "Range Minimum", "Range Maximum", "Alignment", "Length" }; /* Local prototypes */ static void AcpiDmSpaceFlags ( UINT8 Flags); static void AcpiDmIoFlags ( UINT8 Flags); static void AcpiDmIoFlags2 ( UINT8 SpecificFlags); static void AcpiDmMemoryFlags ( UINT8 Flags, UINT8 SpecificFlags); static void AcpiDmMemoryFlags2 ( UINT8 SpecificFlags); static void AcpiDmResourceSource ( AML_RESOURCE *Resource, ACPI_SIZE MinimumLength, UINT32 Length); static void AcpiDmAddressFields ( void *Source, UINT8 Type, UINT32 Level); static void AcpiDmAddressPrefix ( UINT8 Type); static void AcpiDmAddressCommon ( AML_RESOURCE *Resource, UINT8 Type, UINT32 Level); static void AcpiDmAddressFlags ( AML_RESOURCE *Resource); /******************************************************************************* * * FUNCTION: AcpiDmMemoryFields * * PARAMETERS: Source - Pointer to the contiguous data fields * Type - 16 or 32 (bit) * Level - Current source code indentation level * * RETURN: None * * DESCRIPTION: Decode fields common to Memory24 and Memory32 descriptors * ******************************************************************************/ static void AcpiDmMemoryFields ( void *Source, UINT8 Type, UINT32 Level) { UINT32 i; for (i = 0; i < 4; i++) { AcpiDmIndent (Level + 1); switch (Type) { case 16: AcpiDmDumpInteger16 (ACPI_CAST_PTR (UINT16, Source)[i], AcpiDmMemoryNames[i]); break; case 32: AcpiDmDumpInteger32 (ACPI_CAST_PTR (UINT32, Source)[i], AcpiDmMemoryNames[i]); break; default: return; } } } /******************************************************************************* * * FUNCTION: AcpiDmAddressFields * * PARAMETERS: Source - Pointer to the contiguous data fields * Type - 16, 32, or 64 (bit) * Level - Current source code indentation level * * RETURN: None * * DESCRIPTION: Decode fields common to address descriptors * ******************************************************************************/ static void AcpiDmAddressFields ( void *Source, UINT8 Type, UINT32 Level) { UINT32 i; AcpiOsPrintf ("\n"); for (i = 0; i < 5; i++) { AcpiDmIndent (Level + 1); switch (Type) { case 16: AcpiDmDumpInteger16 (ACPI_CAST_PTR (UINT16, Source)[i], AcpiDmAddressNames[i]); break; case 32: AcpiDmDumpInteger32 (ACPI_CAST_PTR (UINT32, Source)[i], AcpiDmAddressNames[i]); break; case 64: AcpiDmDumpInteger64 (ACPI_CAST_PTR (UINT64, Source)[i], AcpiDmAddressNames[i]); break; default: return; } } } /******************************************************************************* * * FUNCTION: AcpiDmAddressPrefix * * PARAMETERS: Type - Descriptor type * * RETURN: None * * DESCRIPTION: Emit name prefix representing the address descriptor type * ******************************************************************************/ static void AcpiDmAddressPrefix ( UINT8 Type) { switch (Type) { case ACPI_RESOURCE_TYPE_ADDRESS16: AcpiOsPrintf ("Word"); break; case ACPI_RESOURCE_TYPE_ADDRESS32: AcpiOsPrintf ("DWord"); break; case ACPI_RESOURCE_TYPE_ADDRESS64: AcpiOsPrintf ("QWord"); break; case ACPI_RESOURCE_TYPE_EXTENDED_ADDRESS64: AcpiOsPrintf ("Extended"); break; default: return; } } /******************************************************************************* * * FUNCTION: AcpiDmAddressCommon * * PARAMETERS: Resource - Raw AML descriptor * Type - Descriptor type * Level - Current source code indentation level * * RETURN: None * * DESCRIPTION: Emit common name and flag fields common to address descriptors * ******************************************************************************/ static void AcpiDmAddressCommon ( AML_RESOURCE *Resource, UINT8 Type, UINT32 Level) { UINT8 ResourceType; UINT8 SpecificFlags; UINT8 Flags; ResourceType = Resource->Address.ResourceType; SpecificFlags = Resource->Address.SpecificFlags; Flags = Resource->Address.Flags; AcpiDmIndent (Level); /* Validate ResourceType */ if ((ResourceType > 2) && (ResourceType < 0xC0)) { AcpiOsPrintf ("/**** Invalid Resource Type: 0x%X ****/", ResourceType); return; } /* Prefix is either Word, DWord, QWord, or Extended */ AcpiDmAddressPrefix (Type); /* Resource Types above 0xC0 are vendor-defined */ if (ResourceType > 2) { AcpiOsPrintf ("Space (0x%2.2X, ", ResourceType); AcpiDmSpaceFlags (Flags); AcpiOsPrintf (" 0x%2.2X,", SpecificFlags); return; } /* This is either a Memory, IO, or BusNumber descriptor (0,1,2) */ AcpiOsPrintf ("%s (", AcpiGbl_WordDecode [ACPI_GET_2BIT_FLAG (ResourceType)]); /* Decode the general and type-specific flags */ if (ResourceType == ACPI_MEMORY_RANGE) { AcpiDmMemoryFlags (Flags, SpecificFlags); } else /* IO range or BusNumberRange */ { AcpiDmIoFlags (Flags); if (ResourceType == ACPI_IO_RANGE) { AcpiOsPrintf (" %s,", AcpiGbl_RngDecode [ACPI_GET_2BIT_FLAG (SpecificFlags)]); } } } /******************************************************************************* * * FUNCTION: AcpiDmAddressFlags * * PARAMETERS: Resource - Raw AML descriptor * * RETURN: None * * DESCRIPTION: Emit flags common to address descriptors * ******************************************************************************/ static void AcpiDmAddressFlags ( AML_RESOURCE *Resource) { if (Resource->Address.ResourceType == ACPI_IO_RANGE) { AcpiDmIoFlags2 (Resource->Address.SpecificFlags); } else if (Resource->Address.ResourceType == ACPI_MEMORY_RANGE) { AcpiDmMemoryFlags2 (Resource->Address.SpecificFlags); } } /******************************************************************************* * * FUNCTION: AcpiDmSpaceFlags * * PARAMETERS: Flags - Flag byte to be decoded * * RETURN: None * * DESCRIPTION: Decode the flags specific to Space Address space descriptors * ******************************************************************************/ static void AcpiDmSpaceFlags ( UINT8 Flags) { AcpiOsPrintf ("%s, %s, %s, %s,", AcpiGbl_ConsumeDecode [ACPI_GET_1BIT_FLAG (Flags)], AcpiGbl_DecDecode [ACPI_EXTRACT_1BIT_FLAG (Flags, 1)], AcpiGbl_MinDecode [ACPI_EXTRACT_1BIT_FLAG (Flags, 2)], AcpiGbl_MaxDecode [ACPI_EXTRACT_1BIT_FLAG (Flags, 3)]); } /******************************************************************************* * * FUNCTION: AcpiDmIoFlags * * PARAMETERS: Flags - Flag byte to be decoded * * RETURN: None * * DESCRIPTION: Decode the flags specific to IO Address space descriptors * ******************************************************************************/ static void AcpiDmIoFlags ( UINT8 Flags) { AcpiOsPrintf ("%s, %s, %s, %s,", AcpiGbl_ConsumeDecode [ACPI_GET_1BIT_FLAG (Flags)], AcpiGbl_MinDecode [ACPI_EXTRACT_1BIT_FLAG (Flags, 2)], AcpiGbl_MaxDecode [ACPI_EXTRACT_1BIT_FLAG (Flags, 3)], AcpiGbl_DecDecode [ACPI_EXTRACT_1BIT_FLAG (Flags, 1)]); } /******************************************************************************* * * FUNCTION: AcpiDmIoFlags2 * * PARAMETERS: SpecificFlags - "Specific" flag byte to be decoded * * RETURN: None * * DESCRIPTION: Decode the flags specific to IO Address space descriptors * ******************************************************************************/ static void AcpiDmIoFlags2 ( UINT8 SpecificFlags) { AcpiOsPrintf (", %s", AcpiGbl_TtpDecode [ACPI_EXTRACT_1BIT_FLAG (SpecificFlags, 4)]); /* TRS is only used if TTP is TypeTranslation */ if (SpecificFlags & 0x10) { AcpiOsPrintf (", %s", AcpiGbl_TrsDecode [ACPI_EXTRACT_1BIT_FLAG (SpecificFlags, 5)]); } } /******************************************************************************* * * FUNCTION: AcpiDmMemoryFlags * * PARAMETERS: Flags - Flag byte to be decoded * SpecificFlags - "Specific" flag byte to be decoded * * RETURN: None * * DESCRIPTION: Decode flags specific to Memory Address Space descriptors * ******************************************************************************/ static void AcpiDmMemoryFlags ( UINT8 Flags, UINT8 SpecificFlags) { AcpiOsPrintf ("%s, %s, %s, %s, %s, %s,", AcpiGbl_ConsumeDecode [ACPI_GET_1BIT_FLAG (Flags)], AcpiGbl_DecDecode [ACPI_EXTRACT_1BIT_FLAG (Flags, 1)], AcpiGbl_MinDecode [ACPI_EXTRACT_1BIT_FLAG (Flags, 2)], AcpiGbl_MaxDecode [ACPI_EXTRACT_1BIT_FLAG (Flags, 3)], AcpiGbl_MemDecode [ACPI_EXTRACT_2BIT_FLAG (SpecificFlags, 1)], AcpiGbl_RwDecode [ACPI_GET_1BIT_FLAG (SpecificFlags)]); } /******************************************************************************* * * FUNCTION: AcpiDmMemoryFlags2 * * PARAMETERS: SpecificFlags - "Specific" flag byte to be decoded * * RETURN: None * * DESCRIPTION: Decode flags specific to Memory Address Space descriptors * ******************************************************************************/ static void AcpiDmMemoryFlags2 ( UINT8 SpecificFlags) { AcpiOsPrintf (", %s, %s", AcpiGbl_MtpDecode [ACPI_EXTRACT_2BIT_FLAG (SpecificFlags, 3)], AcpiGbl_TtpDecode [ACPI_EXTRACT_1BIT_FLAG (SpecificFlags, 5)]); } /******************************************************************************* * * FUNCTION: AcpiDmResourceSource * * PARAMETERS: Resource - Raw AML descriptor * MinimumLength - descriptor length without optional fields * ResourceLength * * RETURN: None * * DESCRIPTION: Dump optional ResourceSource fields of an address descriptor * ******************************************************************************/ static void AcpiDmResourceSource ( AML_RESOURCE *Resource, ACPI_SIZE MinimumTotalLength, UINT32 ResourceLength) { UINT8 *AmlResourceSource; UINT32 TotalLength; TotalLength = ResourceLength + sizeof (AML_RESOURCE_LARGE_HEADER); /* Check if the optional ResourceSource fields are present */ if (TotalLength <= MinimumTotalLength) { /* The two optional fields are not used */ AcpiOsPrintf (",, "); return; } /* Get a pointer to the ResourceSource */ AmlResourceSource = ACPI_ADD_PTR (UINT8, Resource, MinimumTotalLength); /* * Always emit the ResourceSourceIndex (Byte) * * NOTE: Some ASL compilers always create a 0 byte (in the AML) for the * Index even if the String does not exist. Although this is in violation * of the ACPI specification, it is very important to emit ASL code that * can be compiled back to the identical AML. There may be fields and/or * indexes into the resource template buffer that are compiled to absolute * offsets, and these will be broken if the AML length is changed. */ AcpiOsPrintf ("0x%2.2X,", (UINT32) AmlResourceSource[0]); /* Make sure that the ResourceSource string exists before dumping it */ if (TotalLength > (MinimumTotalLength + 1)) { AcpiOsPrintf (" "); AcpiUtPrintString ((char *) &AmlResourceSource[1], ACPI_UINT16_MAX); } AcpiOsPrintf (", "); } /******************************************************************************* * * FUNCTION: AcpiDmWordDescriptor * * PARAMETERS: Resource - Pointer to the resource descriptor * Length - Length of the descriptor in bytes * Level - Current source code indentation level * * RETURN: None * * DESCRIPTION: Decode a Word Address Space descriptor * ******************************************************************************/ void AcpiDmWordDescriptor ( AML_RESOURCE *Resource, UINT32 Length, UINT32 Level) { /* Dump resource name and flags */ AcpiDmAddressCommon (Resource, ACPI_RESOURCE_TYPE_ADDRESS16, Level); /* Dump the 5 contiguous WORD values */ AcpiDmAddressFields (&Resource->Address16.Granularity, 16, Level); /* The ResourceSource fields are optional */ AcpiDmIndent (Level + 1); AcpiDmResourceSource (Resource, sizeof (AML_RESOURCE_ADDRESS16), Length); /* Insert a descriptor name */ AcpiDmDescriptorName (); /* Type-specific flags */ AcpiDmAddressFlags (Resource); AcpiOsPrintf (")\n"); } /******************************************************************************* * * FUNCTION: AcpiDmDwordDescriptor * * PARAMETERS: Resource - Pointer to the resource descriptor * Length - Length of the descriptor in bytes * Level - Current source code indentation level * * RETURN: None * * DESCRIPTION: Decode a DWord Address Space descriptor * ******************************************************************************/ void AcpiDmDwordDescriptor ( AML_RESOURCE *Resource, UINT32 Length, UINT32 Level) { /* Dump resource name and flags */ AcpiDmAddressCommon (Resource, ACPI_RESOURCE_TYPE_ADDRESS32, Level); /* Dump the 5 contiguous DWORD values */ AcpiDmAddressFields (&Resource->Address32.Granularity, 32, Level); /* The ResourceSource fields are optional */ AcpiDmIndent (Level + 1); AcpiDmResourceSource (Resource, sizeof (AML_RESOURCE_ADDRESS32), Length); /* Insert a descriptor name */ AcpiDmDescriptorName (); /* Type-specific flags */ AcpiDmAddressFlags (Resource); AcpiOsPrintf (")\n"); } /******************************************************************************* * * FUNCTION: AcpiDmQwordDescriptor * * PARAMETERS: Resource - Pointer to the resource descriptor * Length - Length of the descriptor in bytes * Level - Current source code indentation level * * RETURN: None * * DESCRIPTION: Decode a QWord Address Space descriptor * ******************************************************************************/ void AcpiDmQwordDescriptor ( AML_RESOURCE *Resource, UINT32 Length, UINT32 Level) { /* Dump resource name and flags */ AcpiDmAddressCommon (Resource, ACPI_RESOURCE_TYPE_ADDRESS64, Level); /* Dump the 5 contiguous QWORD values */ AcpiDmAddressFields (&Resource->Address64.Granularity, 64, Level); /* The ResourceSource fields are optional */ AcpiDmIndent (Level + 1); AcpiDmResourceSource (Resource, sizeof (AML_RESOURCE_ADDRESS64), Length); /* Insert a descriptor name */ AcpiDmDescriptorName (); /* Type-specific flags */ AcpiDmAddressFlags (Resource); AcpiOsPrintf (")\n"); } /******************************************************************************* * * FUNCTION: AcpiDmExtendedDescriptor * * PARAMETERS: Resource - Pointer to the resource descriptor * Length - Length of the descriptor in bytes * Level - Current source code indentation level * * RETURN: None * * DESCRIPTION: Decode a Extended Address Space descriptor * ******************************************************************************/ void AcpiDmExtendedDescriptor ( AML_RESOURCE *Resource, UINT32 Length, UINT32 Level) { /* Dump resource name and flags */ AcpiDmAddressCommon (Resource, ACPI_RESOURCE_TYPE_EXTENDED_ADDRESS64, Level); /* Dump the 5 contiguous QWORD values */ AcpiDmAddressFields (&Resource->ExtAddress64.Granularity, 64, Level); /* Extra field for this descriptor only */ AcpiDmIndent (Level + 1); AcpiDmDumpInteger64 (Resource->ExtAddress64.TypeSpecific, "Type-Specific Attributes"); /* Insert a descriptor name */ AcpiDmIndent (Level + 1); AcpiDmDescriptorName (); /* Type-specific flags */ AcpiDmAddressFlags (Resource); AcpiOsPrintf (")\n"); } /******************************************************************************* * * FUNCTION: AcpiDmMemory24Descriptor * * PARAMETERS: Resource - Pointer to the resource descriptor * Length - Length of the descriptor in bytes * Level - Current source code indentation level * * RETURN: None * * DESCRIPTION: Decode a Memory24 descriptor * ******************************************************************************/ void AcpiDmMemory24Descriptor ( AML_RESOURCE *Resource, UINT32 Length, UINT32 Level) { /* Dump name and read/write flag */ AcpiDmIndent (Level); AcpiOsPrintf ("Memory24 (%s,\n", AcpiGbl_RwDecode [ACPI_GET_1BIT_FLAG (Resource->Memory24.Flags)]); /* Dump the 4 contiguous WORD values */ AcpiDmMemoryFields (&Resource->Memory24.Minimum, 16, Level); /* Insert a descriptor name */ AcpiDmIndent (Level + 1); AcpiDmDescriptorName (); AcpiOsPrintf (")\n"); } /******************************************************************************* * * FUNCTION: AcpiDmMemory32Descriptor * * PARAMETERS: Resource - Pointer to the resource descriptor * Length - Length of the descriptor in bytes * Level - Current source code indentation level * * RETURN: None * * DESCRIPTION: Decode a Memory32 descriptor * ******************************************************************************/ void AcpiDmMemory32Descriptor ( AML_RESOURCE *Resource, UINT32 Length, UINT32 Level) { /* Dump name and read/write flag */ AcpiDmIndent (Level); AcpiOsPrintf ("Memory32 (%s,\n", AcpiGbl_RwDecode [ACPI_GET_1BIT_FLAG (Resource->Memory32.Flags)]); /* Dump the 4 contiguous DWORD values */ AcpiDmMemoryFields (&Resource->Memory32.Minimum, 32, Level); /* Insert a descriptor name */ AcpiDmIndent (Level + 1); AcpiDmDescriptorName (); AcpiOsPrintf (")\n"); } /******************************************************************************* * * FUNCTION: AcpiDmFixedMemory32Descriptor * * PARAMETERS: Resource - Pointer to the resource descriptor * Length - Length of the descriptor in bytes * Level - Current source code indentation level * * RETURN: None * * DESCRIPTION: Decode a Fixed Memory32 descriptor * ******************************************************************************/ void AcpiDmFixedMemory32Descriptor ( AML_RESOURCE *Resource, UINT32 Length, UINT32 Level) { /* Dump name and read/write flag */ AcpiDmIndent (Level); AcpiOsPrintf ("Memory32Fixed (%s,\n", AcpiGbl_RwDecode [ACPI_GET_1BIT_FLAG (Resource->FixedMemory32.Flags)]); AcpiDmIndent (Level + 1); AcpiDmDumpInteger32 (Resource->FixedMemory32.Address, "Address Base"); AcpiDmIndent (Level + 1); AcpiDmDumpInteger32 (Resource->FixedMemory32.AddressLength, "Address Length"); /* Insert a descriptor name */ AcpiDmIndent (Level + 1); AcpiDmDescriptorName (); AcpiOsPrintf (")\n"); } /******************************************************************************* * * FUNCTION: AcpiDmGenericRegisterDescriptor * * PARAMETERS: Resource - Pointer to the resource descriptor * Length - Length of the descriptor in bytes * Level - Current source code indentation level * * RETURN: None * * DESCRIPTION: Decode a Generic Register descriptor * ******************************************************************************/ void AcpiDmGenericRegisterDescriptor ( AML_RESOURCE *Resource, UINT32 Length, UINT32 Level) { AcpiDmIndent (Level); AcpiOsPrintf ("Register ("); AcpiDmAddressSpace (Resource->GenericReg.AddressSpaceId); AcpiOsPrintf ("\n"); AcpiDmIndent (Level + 1); AcpiDmDumpInteger8 (Resource->GenericReg.BitWidth, "Bit Width"); AcpiDmIndent (Level + 1); AcpiDmDumpInteger8 (Resource->GenericReg.BitOffset, "Bit Offset"); AcpiDmIndent (Level + 1); AcpiDmDumpInteger64 (Resource->GenericReg.Address, "Address"); /* Optional field for ACPI 3.0 */ AcpiDmIndent (Level + 1); if (Resource->GenericReg.AccessSize) { AcpiOsPrintf ("0x%2.2X, // %s\n", Resource->GenericReg.AccessSize, "Access Size"); AcpiDmIndent (Level + 1); } else { AcpiOsPrintf (","); } /* DescriptorName was added for ACPI 3.0+ */ AcpiDmDescriptorName (); AcpiOsPrintf (")\n"); } /******************************************************************************* * * FUNCTION: AcpiDmInterruptDescriptor * * PARAMETERS: Resource - Pointer to the resource descriptor * Length - Length of the descriptor in bytes * Level - Current source code indentation level * * RETURN: None * * DESCRIPTION: Decode a extended Interrupt descriptor * ******************************************************************************/ void AcpiDmInterruptDescriptor ( AML_RESOURCE *Resource, UINT32 Length, UINT32 Level) { UINT32 i; AcpiDmIndent (Level); AcpiOsPrintf ("Interrupt (%s, %s, %s, %s, ", AcpiGbl_ConsumeDecode [ACPI_GET_1BIT_FLAG (Resource->ExtendedIrq.Flags)], AcpiGbl_HeDecode [ACPI_EXTRACT_1BIT_FLAG (Resource->ExtendedIrq.Flags, 1)], AcpiGbl_LlDecode [ACPI_EXTRACT_1BIT_FLAG (Resource->ExtendedIrq.Flags, 2)], AcpiGbl_ShrDecode [ACPI_EXTRACT_2BIT_FLAG (Resource->ExtendedIrq.Flags, 3)]); /* * The ResourceSource fields are optional and appear after the interrupt * list. Must compute length based on length of the list. First xrupt * is included in the struct (reason for -1 below) */ AcpiDmResourceSource (Resource, sizeof (AML_RESOURCE_EXTENDED_IRQ) + ((UINT32) Resource->ExtendedIrq.InterruptCount - 1) * sizeof (UINT32), Resource->ExtendedIrq.ResourceLength); /* Insert a descriptor name */ AcpiDmDescriptorName (); AcpiOsPrintf (")\n"); /* Dump the interrupt list */ AcpiDmIndent (Level); AcpiOsPrintf ("{\n"); for (i = 0; i < Resource->ExtendedIrq.InterruptCount; i++) { AcpiDmIndent (Level + 1); AcpiOsPrintf ("0x%8.8X,\n", (UINT32) Resource->ExtendedIrq.Interrupts[i]); } AcpiDmIndent (Level); AcpiOsPrintf ("}\n"); } /******************************************************************************* * * FUNCTION: AcpiDmVendorCommon * * PARAMETERS: Name - Descriptor name suffix * ByteData - Pointer to the vendor byte data * Length - Length of the byte data * Level - Current source code indentation level * * RETURN: None * * DESCRIPTION: Decode a Vendor descriptor, both Large and Small * ******************************************************************************/ void AcpiDmVendorCommon ( char *Name, UINT8 *ByteData, UINT32 Length, UINT32 Level) { /* Dump macro name */ AcpiDmIndent (Level); AcpiOsPrintf ("Vendor%s (", Name); /* Insert a descriptor name */ AcpiDmDescriptorName (); AcpiOsPrintf (") // Length = 0x%.2X\n", Length); /* Dump the vendor bytes */ AcpiDmIndent (Level); AcpiOsPrintf ("{\n"); AcpiDmDisasmByteList (Level + 1, ByteData, Length); AcpiDmIndent (Level); AcpiOsPrintf ("}\n"); } /******************************************************************************* * * FUNCTION: AcpiDmVendorLargeDescriptor * * PARAMETERS: Resource - Pointer to the resource descriptor * Length - Length of the descriptor in bytes * Level - Current source code indentation level * * RETURN: None * * DESCRIPTION: Decode a Vendor Large descriptor * ******************************************************************************/ void AcpiDmVendorLargeDescriptor ( AML_RESOURCE *Resource, UINT32 Length, UINT32 Level) { AcpiDmVendorCommon ("Long ", ACPI_ADD_PTR (UINT8, Resource, sizeof (AML_RESOURCE_LARGE_HEADER)), Length, Level); } #endif src/acpica/source/components/disassembler/dmresrcl2.c000066400000000000000000000605201231470457100232770ustar00rootroot00000000000000/******************************************************************************* * * Module Name: dmresrcl2.c - "Large" Resource Descriptor disassembly (#2) * ******************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #include "acpi.h" #include "accommon.h" #include "acdisasm.h" #ifdef ACPI_DISASSEMBLER #define _COMPONENT ACPI_CA_DEBUGGER ACPI_MODULE_NAME ("dbresrcl2") /* Local prototypes */ static void AcpiDmI2cSerialBusDescriptor ( AML_RESOURCE *Resource, UINT32 Length, UINT32 Level); static void AcpiDmSpiSerialBusDescriptor ( AML_RESOURCE *Resource, UINT32 Length, UINT32 Level); static void AcpiDmUartSerialBusDescriptor ( AML_RESOURCE *Resource, UINT32 Length, UINT32 Level); static void AcpiDmGpioCommon ( AML_RESOURCE *Resource, UINT32 Level); static void AcpiDmDumpRawDataBuffer ( UINT8 *Buffer, UINT32 Length, UINT32 Level); /* Dispatch table for the serial bus descriptors */ static ACPI_RESOURCE_HANDLER SerialBusResourceDispatch [] = { NULL, AcpiDmI2cSerialBusDescriptor, AcpiDmSpiSerialBusDescriptor, AcpiDmUartSerialBusDescriptor }; /******************************************************************************* * * FUNCTION: AcpiDmDumpRawDataBuffer * * PARAMETERS: Buffer - Pointer to the data bytes * Length - Length of the descriptor in bytes * Level - Current source code indentation level * * RETURN: None * * DESCRIPTION: Dump a data buffer as a RawDataBuffer() object. Used for * vendor data bytes. * ******************************************************************************/ static void AcpiDmDumpRawDataBuffer ( UINT8 *Buffer, UINT32 Length, UINT32 Level) { UINT32 Index; UINT32 i; UINT32 j; if (!Length) { return; } AcpiOsPrintf ("RawDataBuffer (0x%.2X) // Vendor Data", Length); AcpiOsPrintf ("\n"); AcpiDmIndent (Level + 1); AcpiOsPrintf ("{\n"); AcpiDmIndent (Level + 2); for (i = 0; i < Length;) { for (j = 0; j < 8; j++) { Index = i + j; if (Index >= Length) { goto Finish; } AcpiOsPrintf ("0x%2.2X", Buffer[Index]); if ((Index + 1) >= Length) { goto Finish; } AcpiOsPrintf (", "); } AcpiOsPrintf ("\n"); AcpiDmIndent (Level + 2); i += 8; } Finish: AcpiOsPrintf ("\n"); AcpiDmIndent (Level + 1); AcpiOsPrintf ("}"); } /******************************************************************************* * * FUNCTION: AcpiDmGpioCommon * * PARAMETERS: Resource - Pointer to the resource descriptor * Level - Current source code indentation level * * RETURN: None * * DESCRIPTION: Decode common parts of a GPIO Interrupt descriptor * ******************************************************************************/ static void AcpiDmGpioCommon ( AML_RESOURCE *Resource, UINT32 Level) { UINT32 PinCount; UINT16 *PinList; UINT8 *VendorData; UINT32 i; /* ResourceSource, ResourceSourceIndex, ResourceType */ AcpiDmIndent (Level + 1); if (Resource->Gpio.ResSourceOffset) { AcpiUtPrintString ( ACPI_ADD_PTR (char, Resource, Resource->Gpio.ResSourceOffset), ACPI_UINT16_MAX); } AcpiOsPrintf (", "); AcpiOsPrintf ("0x%2.2X, ", Resource->Gpio.ResSourceIndex); AcpiOsPrintf ("%s, ", AcpiGbl_ConsumeDecode [ACPI_GET_1BIT_FLAG (Resource->Gpio.Flags)]); /* Insert a descriptor name */ AcpiDmDescriptorName (); AcpiOsPrintf (","); /* Dump the vendor data */ if (Resource->Gpio.VendorOffset) { AcpiOsPrintf ("\n"); AcpiDmIndent (Level + 1); VendorData = ACPI_ADD_PTR (UINT8, Resource, Resource->Gpio.VendorOffset); AcpiDmDumpRawDataBuffer (VendorData, Resource->Gpio.VendorLength, Level); } AcpiOsPrintf (")\n"); /* Dump the interrupt list */ AcpiDmIndent (Level + 1); AcpiOsPrintf ("{ // Pin list\n"); PinCount = ((UINT32) (Resource->Gpio.ResSourceOffset - Resource->Gpio.PinTableOffset)) / sizeof (UINT16); PinList = (UINT16 *) ACPI_ADD_PTR (char, Resource, Resource->Gpio.PinTableOffset); for (i = 0; i < PinCount; i++) { AcpiDmIndent (Level + 2); AcpiOsPrintf ("0x%4.4X%s\n", PinList[i], ((i + 1) < PinCount) ? "," : ""); } AcpiDmIndent (Level + 1); AcpiOsPrintf ("}\n"); } /******************************************************************************* * * FUNCTION: AcpiDmGpioIntDescriptor * * PARAMETERS: Resource - Pointer to the resource descriptor * Length - Length of the descriptor in bytes * Level - Current source code indentation level * * RETURN: None * * DESCRIPTION: Decode a GPIO Interrupt descriptor * ******************************************************************************/ static void AcpiDmGpioIntDescriptor ( AML_RESOURCE *Resource, UINT32 Length, UINT32 Level) { /* Dump the GpioInt-specific portion of the descriptor */ /* EdgeLevel, ActiveLevel, Shared */ AcpiDmIndent (Level); AcpiOsPrintf ("GpioInt (%s, %s, %s, ", AcpiGbl_HeDecode [ACPI_GET_1BIT_FLAG (Resource->Gpio.IntFlags)], AcpiGbl_LlDecode [ACPI_EXTRACT_1BIT_FLAG (Resource->Gpio.IntFlags, 1)], AcpiGbl_ShrDecode [ACPI_EXTRACT_2BIT_FLAG (Resource->Gpio.IntFlags, 3)]); /* PinConfig, DebounceTimeout */ if (Resource->Gpio.PinConfig <= 3) { AcpiOsPrintf ("%s, ", AcpiGbl_PpcDecode[Resource->Gpio.PinConfig]); } else { AcpiOsPrintf ("0x%2.2X, ", Resource->Gpio.PinConfig); } AcpiOsPrintf ("0x%4.4X,\n", Resource->Gpio.DebounceTimeout); /* Dump the GpioInt/GpioIo common portion of the descriptor */ AcpiDmGpioCommon (Resource, Level); } /******************************************************************************* * * FUNCTION: AcpiDmGpioIoDescriptor * * PARAMETERS: Resource - Pointer to the resource descriptor * Length - Length of the descriptor in bytes * Level - Current source code indentation level * * RETURN: None * * DESCRIPTION: Decode a GPIO I/O descriptor * ******************************************************************************/ static void AcpiDmGpioIoDescriptor ( AML_RESOURCE *Resource, UINT32 Length, UINT32 Level) { /* Dump the GpioIo-specific portion of the descriptor */ /* Shared, PinConfig */ AcpiDmIndent (Level); AcpiOsPrintf ("GpioIo (%s, ", AcpiGbl_ShrDecode [ACPI_EXTRACT_2BIT_FLAG (Resource->Gpio.IntFlags, 3)]); if (Resource->Gpio.PinConfig <= 3) { AcpiOsPrintf ("%s, ", AcpiGbl_PpcDecode[Resource->Gpio.PinConfig]); } else { AcpiOsPrintf ("0x%2.2X, ", Resource->Gpio.PinConfig); } /* DebounceTimeout, DriveStrength, IoRestriction */ AcpiOsPrintf ("0x%4.4X, ", Resource->Gpio.DebounceTimeout); AcpiOsPrintf ("0x%4.4X, ", Resource->Gpio.DriveStrength); AcpiOsPrintf ("%s,\n", AcpiGbl_IorDecode [ACPI_GET_2BIT_FLAG (Resource->Gpio.IntFlags)]); /* Dump the GpioInt/GpioIo common portion of the descriptor */ AcpiDmGpioCommon (Resource, Level); } /******************************************************************************* * * FUNCTION: AcpiDmGpioDescriptor * * PARAMETERS: Resource - Pointer to the resource descriptor * Length - Length of the descriptor in bytes * Level - Current source code indentation level * * RETURN: None * * DESCRIPTION: Decode a GpioInt/GpioIo GPIO Interrupt/IO descriptor * ******************************************************************************/ void AcpiDmGpioDescriptor ( AML_RESOURCE *Resource, UINT32 Length, UINT32 Level) { UINT8 ConnectionType; ConnectionType = Resource->Gpio.ConnectionType; switch (ConnectionType) { case AML_RESOURCE_GPIO_TYPE_INT: AcpiDmGpioIntDescriptor (Resource, Length, Level); break; case AML_RESOURCE_GPIO_TYPE_IO: AcpiDmGpioIoDescriptor (Resource, Length, Level); break; default: AcpiOsPrintf ("Unknown GPIO type\n"); break; } } /******************************************************************************* * * FUNCTION: AcpiDmDumpSerialBusVendorData * * PARAMETERS: Resource - Pointer to the resource descriptor * * RETURN: None * * DESCRIPTION: Dump optional serial bus vendor data * ******************************************************************************/ static void AcpiDmDumpSerialBusVendorData ( AML_RESOURCE *Resource, UINT32 Level) { UINT8 *VendorData; UINT32 VendorLength; /* Get the (optional) vendor data and length */ switch (Resource->CommonSerialBus.Type) { case AML_RESOURCE_I2C_SERIALBUSTYPE: VendorLength = Resource->CommonSerialBus.TypeDataLength - AML_RESOURCE_I2C_MIN_DATA_LEN; VendorData = ACPI_ADD_PTR (UINT8, Resource, sizeof (AML_RESOURCE_I2C_SERIALBUS)); break; case AML_RESOURCE_SPI_SERIALBUSTYPE: VendorLength = Resource->CommonSerialBus.TypeDataLength - AML_RESOURCE_SPI_MIN_DATA_LEN; VendorData = ACPI_ADD_PTR (UINT8, Resource, sizeof (AML_RESOURCE_SPI_SERIALBUS)); break; case AML_RESOURCE_UART_SERIALBUSTYPE: VendorLength = Resource->CommonSerialBus.TypeDataLength - AML_RESOURCE_UART_MIN_DATA_LEN; VendorData = ACPI_ADD_PTR (UINT8, Resource, sizeof (AML_RESOURCE_UART_SERIALBUS)); break; default: return; } /* Dump the vendor bytes as a RawDataBuffer object */ AcpiDmDumpRawDataBuffer (VendorData, VendorLength, Level); } /******************************************************************************* * * FUNCTION: AcpiDmI2cSerialBusDescriptor * * PARAMETERS: Resource - Pointer to the resource descriptor * Length - Length of the descriptor in bytes * Level - Current source code indentation level * * RETURN: None * * DESCRIPTION: Decode a I2C serial bus descriptor * ******************************************************************************/ static void AcpiDmI2cSerialBusDescriptor ( AML_RESOURCE *Resource, UINT32 Length, UINT32 Level) { UINT32 ResourceSourceOffset; /* SlaveAddress, SlaveMode, ConnectionSpeed, AddressingMode */ AcpiDmIndent (Level); AcpiOsPrintf ("I2cSerialBus (0x%4.4X, %s, 0x%8.8X,\n", Resource->I2cSerialBus.SlaveAddress, AcpiGbl_SmDecode [ACPI_GET_1BIT_FLAG (Resource->I2cSerialBus.Flags)], Resource->I2cSerialBus.ConnectionSpeed); AcpiDmIndent (Level + 1); AcpiOsPrintf ("%s, ", AcpiGbl_AmDecode [ACPI_GET_1BIT_FLAG (Resource->I2cSerialBus.TypeSpecificFlags)]); /* ResourceSource is a required field */ ResourceSourceOffset = sizeof (AML_RESOURCE_COMMON_SERIALBUS) + Resource->CommonSerialBus.TypeDataLength; AcpiUtPrintString ( ACPI_ADD_PTR (char, Resource, ResourceSourceOffset), ACPI_UINT16_MAX); /* ResourceSourceIndex, ResourceUsage */ AcpiOsPrintf (",\n"); AcpiDmIndent (Level + 1); AcpiOsPrintf ("0x%2.2X, ", Resource->I2cSerialBus.ResSourceIndex); AcpiOsPrintf ("%s, ", AcpiGbl_ConsumeDecode [ACPI_EXTRACT_1BIT_FLAG (Resource->I2cSerialBus.Flags, 1)]); /* Insert a descriptor name */ AcpiDmDescriptorName (); AcpiOsPrintf (",\n"); /* Dump the vendor data */ AcpiDmIndent (Level + 1); AcpiDmDumpSerialBusVendorData (Resource, Level); AcpiOsPrintf (")\n"); } /******************************************************************************* * * FUNCTION: AcpiDmSpiSerialBusDescriptor * * PARAMETERS: Resource - Pointer to the resource descriptor * Length - Length of the descriptor in bytes * Level - Current source code indentation level * * RETURN: None * * DESCRIPTION: Decode a SPI serial bus descriptor * ******************************************************************************/ static void AcpiDmSpiSerialBusDescriptor ( AML_RESOURCE *Resource, UINT32 Length, UINT32 Level) { UINT32 ResourceSourceOffset; /* DeviceSelection, DeviceSelectionPolarity, WireMode, DataBitLength */ AcpiDmIndent (Level); AcpiOsPrintf ("SpiSerialBus (0x%4.4X, %s, %s, 0x%2.2X,\n", Resource->SpiSerialBus.DeviceSelection, AcpiGbl_DpDecode [ACPI_EXTRACT_1BIT_FLAG (Resource->SpiSerialBus.TypeSpecificFlags, 1)], AcpiGbl_WmDecode [ACPI_GET_1BIT_FLAG (Resource->SpiSerialBus.TypeSpecificFlags)], Resource->SpiSerialBus.DataBitLength); /* SlaveMode, ConnectionSpeed, ClockPolarity, ClockPhase */ AcpiDmIndent (Level + 1); AcpiOsPrintf ("%s, 0x%8.8X, %s,\n", AcpiGbl_SmDecode [ACPI_GET_1BIT_FLAG (Resource->SpiSerialBus.Flags)], Resource->SpiSerialBus.ConnectionSpeed, AcpiGbl_CpoDecode [ACPI_GET_1BIT_FLAG (Resource->SpiSerialBus.ClockPolarity)]); AcpiDmIndent (Level + 1); AcpiOsPrintf ("%s, ", AcpiGbl_CphDecode [ACPI_GET_1BIT_FLAG (Resource->SpiSerialBus.ClockPhase)]); /* ResourceSource is a required field */ ResourceSourceOffset = sizeof (AML_RESOURCE_COMMON_SERIALBUS) + Resource->CommonSerialBus.TypeDataLength; AcpiUtPrintString ( ACPI_ADD_PTR (char, Resource, ResourceSourceOffset), ACPI_UINT16_MAX); /* ResourceSourceIndex, ResourceUsage */ AcpiOsPrintf (",\n"); AcpiDmIndent (Level + 1); AcpiOsPrintf ("0x%2.2X, ", Resource->SpiSerialBus.ResSourceIndex); AcpiOsPrintf ("%s, ", AcpiGbl_ConsumeDecode [ACPI_EXTRACT_1BIT_FLAG (Resource->SpiSerialBus.Flags, 1)]); /* Insert a descriptor name */ AcpiDmDescriptorName (); AcpiOsPrintf (",\n"); /* Dump the vendor data */ AcpiDmIndent (Level + 1); AcpiDmDumpSerialBusVendorData (Resource, Level); AcpiOsPrintf (")\n"); } /******************************************************************************* * * FUNCTION: AcpiDmUartSerialBusDescriptor * * PARAMETERS: Resource - Pointer to the resource descriptor * Length - Length of the descriptor in bytes * Level - Current source code indentation level * * RETURN: None * * DESCRIPTION: Decode a UART serial bus descriptor * ******************************************************************************/ static void AcpiDmUartSerialBusDescriptor ( AML_RESOURCE *Resource, UINT32 Length, UINT32 Level) { UINT32 ResourceSourceOffset; /* ConnectionSpeed, BitsPerByte, StopBits */ AcpiDmIndent (Level); AcpiOsPrintf ("UartSerialBus (0x%8.8X, %s, %s,\n", Resource->UartSerialBus.DefaultBaudRate, AcpiGbl_BpbDecode [ACPI_EXTRACT_3BIT_FLAG (Resource->UartSerialBus.TypeSpecificFlags, 4)], AcpiGbl_SbDecode [ACPI_EXTRACT_2BIT_FLAG (Resource->UartSerialBus.TypeSpecificFlags, 2)]); /* LinesInUse, IsBigEndian, Parity, FlowControl */ AcpiDmIndent (Level + 1); AcpiOsPrintf ("0x%2.2X, %s, %s, %s,\n", Resource->UartSerialBus.LinesEnabled, AcpiGbl_EdDecode [ACPI_EXTRACT_1BIT_FLAG (Resource->UartSerialBus.TypeSpecificFlags, 7)], AcpiGbl_PtDecode [ACPI_GET_3BIT_FLAG (Resource->UartSerialBus.Parity)], AcpiGbl_FcDecode [ACPI_GET_2BIT_FLAG (Resource->UartSerialBus.TypeSpecificFlags)]); /* ReceiveBufferSize, TransmitBufferSize */ AcpiDmIndent (Level + 1); AcpiOsPrintf ("0x%4.4X, 0x%4.4X, ", Resource->UartSerialBus.RxFifoSize, Resource->UartSerialBus.TxFifoSize); /* ResourceSource is a required field */ ResourceSourceOffset = sizeof (AML_RESOURCE_COMMON_SERIALBUS) + Resource->CommonSerialBus.TypeDataLength; AcpiUtPrintString ( ACPI_ADD_PTR (char, Resource, ResourceSourceOffset), ACPI_UINT16_MAX); /* ResourceSourceIndex, ResourceUsage */ AcpiOsPrintf (",\n"); AcpiDmIndent (Level + 1); AcpiOsPrintf ("0x%2.2X, ", Resource->UartSerialBus.ResSourceIndex); AcpiOsPrintf ("%s, ", AcpiGbl_ConsumeDecode [ACPI_EXTRACT_1BIT_FLAG (Resource->UartSerialBus.Flags, 1)]); /* Insert a descriptor name */ AcpiDmDescriptorName (); AcpiOsPrintf (",\n"); /* Dump the vendor data */ AcpiDmIndent (Level + 1); AcpiDmDumpSerialBusVendorData (Resource, Level); AcpiOsPrintf (")\n"); } /******************************************************************************* * * FUNCTION: AcpiDmSerialBusDescriptor * * PARAMETERS: Resource - Pointer to the resource descriptor * Length - Length of the descriptor in bytes * Level - Current source code indentation level * * RETURN: None * * DESCRIPTION: Decode a I2C/SPI/UART serial bus descriptor * ******************************************************************************/ void AcpiDmSerialBusDescriptor ( AML_RESOURCE *Resource, UINT32 Length, UINT32 Level) { SerialBusResourceDispatch [Resource->CommonSerialBus.Type] ( Resource, Length, Level); } #endif src/acpica/source/components/disassembler/dmresrcs.c000066400000000000000000000353231231470457100232270ustar00rootroot00000000000000/******************************************************************************* * * Module Name: dmresrcs.c - "Small" Resource Descriptor disassembly * ******************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #include "acpi.h" #include "accommon.h" #include "acdisasm.h" #ifdef ACPI_DISASSEMBLER #define _COMPONENT ACPI_CA_DEBUGGER ACPI_MODULE_NAME ("dbresrcs") /******************************************************************************* * * FUNCTION: AcpiDmIrqDescriptor * * PARAMETERS: Resource - Pointer to the resource descriptor * Length - Length of the descriptor in bytes * Level - Current source code indentation level * * RETURN: None * * DESCRIPTION: Decode a IRQ descriptor, either Irq() or IrqNoFlags() * ******************************************************************************/ void AcpiDmIrqDescriptor ( AML_RESOURCE *Resource, UINT32 Length, UINT32 Level) { AcpiDmIndent (Level); AcpiOsPrintf ("%s (", AcpiGbl_IrqDecode [ACPI_GET_1BIT_FLAG (Length)]); /* Decode flags byte if present */ if (Length & 1) { AcpiOsPrintf ("%s, %s, %s, ", AcpiGbl_HeDecode [ACPI_GET_1BIT_FLAG (Resource->Irq.Flags)], AcpiGbl_LlDecode [ACPI_EXTRACT_1BIT_FLAG (Resource->Irq.Flags, 3)], AcpiGbl_ShrDecode [ACPI_EXTRACT_2BIT_FLAG (Resource->Irq.Flags, 4)]); } /* Insert a descriptor name */ AcpiDmDescriptorName (); AcpiOsPrintf (")\n"); AcpiDmIndent (Level + 1); AcpiDmBitList (Resource->Irq.IrqMask); } /******************************************************************************* * * FUNCTION: AcpiDmDmaDescriptor * * PARAMETERS: Resource - Pointer to the resource descriptor * Length - Length of the descriptor in bytes * Level - Current source code indentation level * * RETURN: None * * DESCRIPTION: Decode a DMA descriptor * ******************************************************************************/ void AcpiDmDmaDescriptor ( AML_RESOURCE *Resource, UINT32 Length, UINT32 Level) { AcpiDmIndent (Level); AcpiOsPrintf ("DMA (%s, %s, %s, ", AcpiGbl_TypDecode [ACPI_EXTRACT_2BIT_FLAG (Resource->Dma.Flags, 5)], AcpiGbl_BmDecode [ACPI_EXTRACT_1BIT_FLAG (Resource->Dma.Flags, 2)], AcpiGbl_SizDecode [ACPI_GET_2BIT_FLAG (Resource->Dma.Flags)]); /* Insert a descriptor name */ AcpiDmDescriptorName (); AcpiOsPrintf (")\n"); AcpiDmIndent (Level + 1); AcpiDmBitList (Resource->Dma.DmaChannelMask); } /******************************************************************************* * * FUNCTION: AcpiDmFixedDmaDescriptor * * PARAMETERS: Resource - Pointer to the resource descriptor * Length - Length of the descriptor in bytes * Level - Current source code indentation level * * RETURN: None * * DESCRIPTION: Decode a FixedDMA descriptor * ******************************************************************************/ void AcpiDmFixedDmaDescriptor ( AML_RESOURCE *Resource, UINT32 Length, UINT32 Level) { AcpiDmIndent (Level); AcpiOsPrintf ("FixedDMA (0x%4.4X, 0x%4.4X, ", Resource->FixedDma.RequestLines, Resource->FixedDma.Channels); if (Resource->FixedDma.Width <= 5) { AcpiOsPrintf ("%s, ", AcpiGbl_DtsDecode [Resource->FixedDma.Width]); } else { AcpiOsPrintf ("%X /* INVALID DMA WIDTH */, ", Resource->FixedDma.Width); } /* Insert a descriptor name */ AcpiDmDescriptorName (); AcpiOsPrintf (")\n"); } /******************************************************************************* * * FUNCTION: AcpiDmIoDescriptor * * PARAMETERS: Resource - Pointer to the resource descriptor * Length - Length of the descriptor in bytes * Level - Current source code indentation level * * RETURN: None * * DESCRIPTION: Decode an IO descriptor * ******************************************************************************/ void AcpiDmIoDescriptor ( AML_RESOURCE *Resource, UINT32 Length, UINT32 Level) { AcpiDmIndent (Level); AcpiOsPrintf ("IO (%s,\n", AcpiGbl_IoDecode [ACPI_GET_1BIT_FLAG (Resource->Io.Flags)]); AcpiDmIndent (Level + 1); AcpiDmDumpInteger16 (Resource->Io.Minimum, "Range Minimum"); AcpiDmIndent (Level + 1); AcpiDmDumpInteger16 (Resource->Io.Maximum, "Range Maximum"); AcpiDmIndent (Level + 1); AcpiDmDumpInteger8 (Resource->Io.Alignment, "Alignment"); AcpiDmIndent (Level + 1); AcpiDmDumpInteger8 (Resource->Io.AddressLength, "Length"); /* Insert a descriptor name */ AcpiDmIndent (Level + 1); AcpiDmDescriptorName (); AcpiOsPrintf (")\n"); } /******************************************************************************* * * FUNCTION: AcpiDmFixedIoDescriptor * * PARAMETERS: Resource - Pointer to the resource descriptor * Length - Length of the descriptor in bytes * Level - Current source code indentation level * * RETURN: None * * DESCRIPTION: Decode a Fixed IO descriptor * ******************************************************************************/ void AcpiDmFixedIoDescriptor ( AML_RESOURCE *Resource, UINT32 Length, UINT32 Level) { AcpiDmIndent (Level); AcpiOsPrintf ("FixedIO (\n"); AcpiDmIndent (Level + 1); AcpiDmDumpInteger16 (Resource->FixedIo.Address, "Address"); AcpiDmIndent (Level + 1); AcpiDmDumpInteger8 (Resource->FixedIo.AddressLength, "Length"); /* Insert a descriptor name */ AcpiDmIndent (Level + 1); AcpiDmDescriptorName (); AcpiOsPrintf (")\n"); } /******************************************************************************* * * FUNCTION: AcpiDmStartDependentDescriptor * * PARAMETERS: Resource - Pointer to the resource descriptor * Length - Length of the descriptor in bytes * Level - Current source code indentation level * * RETURN: None * * DESCRIPTION: Decode a Start Dependendent functions descriptor * ******************************************************************************/ void AcpiDmStartDependentDescriptor ( AML_RESOURCE *Resource, UINT32 Length, UINT32 Level) { AcpiDmIndent (Level); if (Length & 1) { AcpiOsPrintf ("StartDependentFn (0x%2.2X, 0x%2.2X)\n", (UINT32) ACPI_GET_2BIT_FLAG (Resource->StartDpf.Flags), (UINT32) ACPI_EXTRACT_2BIT_FLAG (Resource->StartDpf.Flags, 2)); } else { AcpiOsPrintf ("StartDependentFnNoPri ()\n"); } AcpiDmIndent (Level); AcpiOsPrintf ("{\n"); } /******************************************************************************* * * FUNCTION: AcpiDmEndDependentDescriptor * * PARAMETERS: Resource - Pointer to the resource descriptor * Length - Length of the descriptor in bytes * Level - Current source code indentation level * * RETURN: None * * DESCRIPTION: Decode an End Dependent functions descriptor * ******************************************************************************/ void AcpiDmEndDependentDescriptor ( AML_RESOURCE *Resource, UINT32 Length, UINT32 Level) { AcpiDmIndent (Level); AcpiOsPrintf ("}\n"); AcpiDmIndent (Level); AcpiOsPrintf ("EndDependentFn ()\n"); } /******************************************************************************* * * FUNCTION: AcpiDmVendorSmallDescriptor * * PARAMETERS: Resource - Pointer to the resource descriptor * Length - Length of the descriptor in bytes * Level - Current source code indentation level * * RETURN: None * * DESCRIPTION: Decode a Vendor Small Descriptor * ******************************************************************************/ void AcpiDmVendorSmallDescriptor ( AML_RESOURCE *Resource, UINT32 Length, UINT32 Level) { AcpiDmVendorCommon ("Short", ACPI_ADD_PTR (UINT8, Resource, sizeof (AML_RESOURCE_SMALL_HEADER)), Length, Level); } #endif src/acpica/source/components/disassembler/dmutils.c000066400000000000000000000274141231470457100230700ustar00rootroot00000000000000/******************************************************************************* * * Module Name: dmutils - AML disassembler utilities * ******************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #include "acpi.h" #include "accommon.h" #include "amlcode.h" #include "acdisasm.h" #ifdef ACPI_ASL_COMPILER #include #endif #ifdef ACPI_DISASSEMBLER #define _COMPONENT ACPI_CA_DEBUGGER ACPI_MODULE_NAME ("dmutils") /* Data used in keeping track of fields */ #if 0 const char *AcpiGbl_FENames[] = { "skip", "?access?" }; /* FE = Field Element */ #endif /* Operators for Match() */ const char *AcpiGbl_MatchOps[] = { "MTR", "MEQ", "MLE", "MLT", "MGE", "MGT" }; /* Access type decoding */ const char *AcpiGbl_AccessTypes[] = { "AnyAcc", "ByteAcc", "WordAcc", "DWordAcc", "QWordAcc", "BufferAcc", "InvalidAccType", "InvalidAccType" }; /* Lock rule decoding */ const char *AcpiGbl_LockRule[] = { "NoLock", "Lock" }; /* Update rule decoding */ const char *AcpiGbl_UpdateRules[] = { "Preserve", "WriteAsOnes", "WriteAsZeros", "InvalidUpdateRule" }; /* Strings used to decode resource descriptors */ const char *AcpiGbl_WordDecode[] = { "Memory", "IO", "BusNumber", "UnknownResourceType" }; const char *AcpiGbl_IrqDecode[] = { "IRQNoFlags", "IRQ" }; /******************************************************************************* * * FUNCTION: AcpiDmDecodeAttribute * * PARAMETERS: Attribute - Attribute field of AccessAs keyword * * RETURN: None * * DESCRIPTION: Decode the AccessAs attribute byte. (Mostly SMBus and * GenericSerialBus stuff.) * ******************************************************************************/ void AcpiDmDecodeAttribute ( UINT8 Attribute) { switch (Attribute) { case AML_FIELD_ATTRIB_QUICK: AcpiOsPrintf ("AttribQuick"); break; case AML_FIELD_ATTRIB_SEND_RCV: AcpiOsPrintf ("AttribSendReceive"); break; case AML_FIELD_ATTRIB_BYTE: AcpiOsPrintf ("AttribByte"); break; case AML_FIELD_ATTRIB_WORD: AcpiOsPrintf ("AttribWord"); break; case AML_FIELD_ATTRIB_BLOCK: AcpiOsPrintf ("AttribBlock"); break; case AML_FIELD_ATTRIB_MULTIBYTE: AcpiOsPrintf ("AttribBytes"); break; case AML_FIELD_ATTRIB_WORD_CALL: AcpiOsPrintf ("AttribProcessCall"); break; case AML_FIELD_ATTRIB_BLOCK_CALL: AcpiOsPrintf ("AttribBlockProcessCall"); break; case AML_FIELD_ATTRIB_RAW_BYTES: AcpiOsPrintf ("AttribRawBytes"); break; case AML_FIELD_ATTRIB_RAW_PROCESS: AcpiOsPrintf ("AttribRawProcessBytes"); break; default: /* A ByteConst is allowed by the grammar */ AcpiOsPrintf ("0x%2.2X", Attribute); break; } } /******************************************************************************* * * FUNCTION: AcpiDmIndent * * PARAMETERS: Level - Current source code indentation level * * RETURN: None * * DESCRIPTION: Indent 4 spaces per indentation level. * ******************************************************************************/ void AcpiDmIndent ( UINT32 Level) { if (!Level) { return; } AcpiOsPrintf ("%*.s", ACPI_MUL_4 (Level), " "); } /******************************************************************************* * * FUNCTION: AcpiDmCommaIfListMember * * PARAMETERS: Op - Current operator/operand * * RETURN: TRUE if a comma was inserted * * DESCRIPTION: Insert a comma if this Op is a member of an argument list. * ******************************************************************************/ BOOLEAN AcpiDmCommaIfListMember ( ACPI_PARSE_OBJECT *Op) { if (!Op->Common.Next) { return (FALSE); } if (AcpiDmListType (Op->Common.Parent) & BLOCK_COMMA_LIST) { /* Check for a NULL target operand */ if ((Op->Common.Next->Common.AmlOpcode == AML_INT_NAMEPATH_OP) && (!Op->Common.Next->Common.Value.String)) { /* * To handle the Divide() case where there are two optional * targets, look ahead one more op. If null, this null target * is the one and only target -- no comma needed. Otherwise, * we need a comma to prepare for the next target. */ if (!Op->Common.Next->Common.Next) { return (FALSE); } } if ((Op->Common.DisasmFlags & ACPI_PARSEOP_PARAMLIST) && (!(Op->Common.Next->Common.DisasmFlags & ACPI_PARSEOP_PARAMLIST))) { return (FALSE); } AcpiOsPrintf (", "); return (TRUE); } else if ((Op->Common.DisasmFlags & ACPI_PARSEOP_PARAMLIST) && (Op->Common.Next->Common.DisasmFlags & ACPI_PARSEOP_PARAMLIST)) { AcpiOsPrintf (", "); return (TRUE); } return (FALSE); } /******************************************************************************* * * FUNCTION: AcpiDmCommaIfFieldMember * * PARAMETERS: Op - Current operator/operand * * RETURN: None * * DESCRIPTION: Insert a comma if this Op is a member of a Field argument list. * ******************************************************************************/ void AcpiDmCommaIfFieldMember ( ACPI_PARSE_OBJECT *Op) { if (Op->Common.Next) { AcpiOsPrintf (", "); } } #endif src/acpica/source/components/disassembler/dmwalk.c000066400000000000000000000742121231470457100226640ustar00rootroot00000000000000/******************************************************************************* * * Module Name: dmwalk - AML disassembly tree walk * ******************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #include "acpi.h" #include "accommon.h" #include "acparser.h" #include "amlcode.h" #include "acdisasm.h" #include "acdebug.h" #ifdef ACPI_DISASSEMBLER #define _COMPONENT ACPI_CA_DEBUGGER ACPI_MODULE_NAME ("dmwalk") #define DB_FULL_OP_INFO "[%4.4s] @%5.5X #%4.4X: " /* Stub for non-compiler code */ #ifndef ACPI_ASL_COMPILER void AcpiDmEmitExternals ( void) { return; } #endif /* Local prototypes */ static ACPI_STATUS AcpiDmDescendingOp ( ACPI_PARSE_OBJECT *Op, UINT32 Level, void *Context); static ACPI_STATUS AcpiDmAscendingOp ( ACPI_PARSE_OBJECT *Op, UINT32 Level, void *Context); static UINT32 AcpiDmBlockType ( ACPI_PARSE_OBJECT *Op); /******************************************************************************* * * FUNCTION: AcpiDmDisassemble * * PARAMETERS: WalkState - Current state * Origin - Starting object * NumOpcodes - Max number of opcodes to be displayed * * RETURN: None * * DESCRIPTION: Disassemble parser object and its children. This is the * main entry point of the disassembler. * ******************************************************************************/ void AcpiDmDisassemble ( ACPI_WALK_STATE *WalkState, ACPI_PARSE_OBJECT *Origin, UINT32 NumOpcodes) { ACPI_PARSE_OBJECT *Op = Origin; ACPI_OP_WALK_INFO Info; if (!Op) { return; } Info.Flags = 0; Info.Level = 0; Info.Count = 0; Info.WalkState = WalkState; AcpiDmWalkParseTree (Op, AcpiDmDescendingOp, AcpiDmAscendingOp, &Info); return; } /******************************************************************************* * * FUNCTION: AcpiDmWalkParseTree * * PARAMETERS: Op - Root Op object * DescendingCallback - Called during tree descent * AscendingCallback - Called during tree ascent * Context - To be passed to the callbacks * * RETURN: Status from callback(s) * * DESCRIPTION: Walk the entire parse tree. * ******************************************************************************/ void AcpiDmWalkParseTree ( ACPI_PARSE_OBJECT *Op, ASL_WALK_CALLBACK DescendingCallback, ASL_WALK_CALLBACK AscendingCallback, void *Context) { BOOLEAN NodePreviouslyVisited; ACPI_PARSE_OBJECT *StartOp = Op; ACPI_STATUS Status; ACPI_PARSE_OBJECT *Next; ACPI_OP_WALK_INFO *Info = Context; Info->Level = 0; NodePreviouslyVisited = FALSE; while (Op) { if (NodePreviouslyVisited) { if (AscendingCallback) { Status = AscendingCallback (Op, Info->Level, Context); if (ACPI_FAILURE (Status)) { return; } } } else { /* Let the callback process the node */ Status = DescendingCallback (Op, Info->Level, Context); if (ACPI_SUCCESS (Status)) { /* Visit children first, once */ Next = AcpiPsGetArg (Op, 0); if (Next) { Info->Level++; Op = Next; continue; } } else if (Status != AE_CTRL_DEPTH) { /* Exit immediately on any error */ return; } } /* Terminate walk at start op */ if (Op == StartOp) { break; } /* No more children, re-visit this node */ if (!NodePreviouslyVisited) { NodePreviouslyVisited = TRUE; continue; } /* No more children, visit peers */ if (Op->Common.Next) { Op = Op->Common.Next; NodePreviouslyVisited = FALSE; } else { /* No peers, re-visit parent */ if (Info->Level != 0 ) { Info->Level--; } Op = Op->Common.Parent; NodePreviouslyVisited = TRUE; } } /* If we get here, the walk completed with no errors */ return; } /******************************************************************************* * * FUNCTION: AcpiDmBlockType * * PARAMETERS: Op - Object to be examined * * RETURN: BlockType - not a block, parens, braces, or even both. * * DESCRIPTION: Type of block for this op (parens or braces) * ******************************************************************************/ static UINT32 AcpiDmBlockType ( ACPI_PARSE_OBJECT *Op) { const ACPI_OPCODE_INFO *OpInfo; if (!Op) { return (BLOCK_NONE); } switch (Op->Common.AmlOpcode) { case AML_ELSE_OP: return (BLOCK_BRACE); case AML_METHOD_OP: case AML_DEVICE_OP: case AML_SCOPE_OP: case AML_PROCESSOR_OP: case AML_POWER_RES_OP: case AML_THERMAL_ZONE_OP: case AML_IF_OP: case AML_WHILE_OP: case AML_FIELD_OP: case AML_INDEX_FIELD_OP: case AML_BANK_FIELD_OP: return (BLOCK_PAREN | BLOCK_BRACE); case AML_BUFFER_OP: if (Op->Common.DisasmOpcode == ACPI_DASM_UNICODE) { return (BLOCK_NONE); } /*lint -fallthrough */ case AML_PACKAGE_OP: case AML_VAR_PACKAGE_OP: return (BLOCK_PAREN | BLOCK_BRACE); case AML_EVENT_OP: return (BLOCK_PAREN); default: OpInfo = AcpiPsGetOpcodeInfo (Op->Common.AmlOpcode); if (OpInfo->Flags & AML_HAS_ARGS) { return (BLOCK_PAREN); } return (BLOCK_NONE); } } /******************************************************************************* * * FUNCTION: AcpiDmListType * * PARAMETERS: Op - Object to be examined * * RETURN: ListType - has commas or not. * * DESCRIPTION: Type of block for this op (parens or braces) * ******************************************************************************/ UINT32 AcpiDmListType ( ACPI_PARSE_OBJECT *Op) { const ACPI_OPCODE_INFO *OpInfo; if (!Op) { return (BLOCK_NONE); } switch (Op->Common.AmlOpcode) { case AML_ELSE_OP: case AML_METHOD_OP: case AML_DEVICE_OP: case AML_SCOPE_OP: case AML_POWER_RES_OP: case AML_PROCESSOR_OP: case AML_THERMAL_ZONE_OP: case AML_IF_OP: case AML_WHILE_OP: case AML_FIELD_OP: case AML_INDEX_FIELD_OP: case AML_BANK_FIELD_OP: return (BLOCK_NONE); case AML_BUFFER_OP: case AML_PACKAGE_OP: case AML_VAR_PACKAGE_OP: return (BLOCK_COMMA_LIST); default: OpInfo = AcpiPsGetOpcodeInfo (Op->Common.AmlOpcode); if (OpInfo->Flags & AML_HAS_ARGS) { return (BLOCK_COMMA_LIST); } return (BLOCK_NONE); } } /******************************************************************************* * * FUNCTION: AcpiDmDescendingOp * * PARAMETERS: ASL_WALK_CALLBACK * * RETURN: Status * * DESCRIPTION: First visitation of a parse object during tree descent. * Decode opcode name and begin parameter list(s), if any. * ******************************************************************************/ static ACPI_STATUS AcpiDmDescendingOp ( ACPI_PARSE_OBJECT *Op, UINT32 Level, void *Context) { ACPI_OP_WALK_INFO *Info = Context; const ACPI_OPCODE_INFO *OpInfo; UINT32 Name; ACPI_PARSE_OBJECT *NextOp; if (Op->Common.DisasmFlags & ACPI_PARSEOP_IGNORE) { /* Ignore this op -- it was handled elsewhere */ return (AE_CTRL_DEPTH); } /* Level 0 is at the Definition Block level */ if (Level == 0) { /* In verbose mode, print the AML offset, opcode and depth count */ if (Info->WalkState) { VERBOSE_PRINT ((DB_FULL_OP_INFO, (Info->WalkState->MethodNode ? Info->WalkState->MethodNode->Name.Ascii : " "), Op->Common.AmlOffset, (UINT32) Op->Common.AmlOpcode)); } if (Op->Common.AmlOpcode == AML_SCOPE_OP) { /* This is the beginning of the Definition Block */ AcpiOsPrintf ("{\n"); /* Emit all External() declarations here */ AcpiDmEmitExternals (); return (AE_OK); } } else if ((AcpiDmBlockType (Op->Common.Parent) & BLOCK_BRACE) && (!(Op->Common.DisasmFlags & ACPI_PARSEOP_PARAMLIST)) && (Op->Common.AmlOpcode != AML_INT_BYTELIST_OP)) { /* * This is a first-level element of a term list, * indent a new line */ switch (Op->Common.AmlOpcode) { case AML_NOOP_OP: /* * Optionally just ignore this opcode. Some tables use * NoOp opcodes for "padding" out packages that the BIOS * changes dynamically. This can leave hundreds or * thousands of NoOp opcodes that if disassembled, * cannot be compiled because they are syntactically * incorrect. */ if (AcpiGbl_IgnoreNoopOperator) { Op->Common.DisasmFlags |= ACPI_PARSEOP_IGNORE; return (AE_OK); } /* Fallthrough */ default: AcpiDmIndent (Level); break; } Info->LastLevel = Level; Info->Count = 0; } /* * This is an inexpensive mechanism to try and keep lines from getting * too long. When the limit is hit, start a new line at the previous * indent plus one. A better but more expensive mechanism would be to * keep track of the current column. */ Info->Count++; if (Info->Count /* +Info->LastLevel */ > 10) { Info->Count = 0; AcpiOsPrintf ("\n"); AcpiDmIndent (Info->LastLevel + 1); } /* Print the opcode name */ AcpiDmDisassembleOneOp (NULL, Info, Op); if ((Op->Common.DisasmOpcode == ACPI_DASM_LNOT_PREFIX) || (Op->Common.AmlOpcode == AML_INT_CONNECTION_OP)) { return (AE_OK); } if ((Op->Common.AmlOpcode == AML_NAME_OP) || (Op->Common.AmlOpcode == AML_RETURN_OP)) { Info->Level--; } /* Start the opcode argument list if necessary */ OpInfo = AcpiPsGetOpcodeInfo (Op->Common.AmlOpcode); if ((OpInfo->Flags & AML_HAS_ARGS) || (Op->Common.AmlOpcode == AML_EVENT_OP)) { /* This opcode has an argument list */ if (AcpiDmBlockType (Op) & BLOCK_PAREN) { AcpiOsPrintf (" ("); } /* If this is a named opcode, print the associated name value */ if (OpInfo->Flags & AML_NAMED) { switch (Op->Common.AmlOpcode) { case AML_ALIAS_OP: NextOp = AcpiPsGetDepthNext (NULL, Op); NextOp->Common.DisasmFlags |= ACPI_PARSEOP_IGNORE; AcpiDmNamestring (NextOp->Common.Value.Name); AcpiOsPrintf (", "); /*lint -fallthrough */ default: Name = AcpiPsGetName (Op); if (Op->Named.Path) { AcpiDmNamestring ((char *) Op->Named.Path); } else { AcpiDmDumpName (Name); } if (Op->Common.AmlOpcode != AML_INT_NAMEDFIELD_OP) { if (AcpiGbl_DbOpt_verbose) { (void) AcpiPsDisplayObjectPathname (NULL, Op); } } break; } switch (Op->Common.AmlOpcode) { case AML_METHOD_OP: AcpiDmMethodFlags (Op); AcpiOsPrintf (")"); /* Emit description comment for Method() with a predefined ACPI name */ AcpiDmPredefinedDescription (Op); break; case AML_NAME_OP: /* Check for _HID and related EISAID() */ AcpiDmCheckForHardwareId (Op); AcpiOsPrintf (", "); break; case AML_REGION_OP: AcpiDmRegionFlags (Op); break; case AML_POWER_RES_OP: /* Mark the next two Ops as part of the parameter list */ AcpiOsPrintf (", "); NextOp = AcpiPsGetDepthNext (NULL, Op); NextOp->Common.DisasmFlags |= ACPI_PARSEOP_PARAMLIST; NextOp = NextOp->Common.Next; NextOp->Common.DisasmFlags |= ACPI_PARSEOP_PARAMLIST; return (AE_OK); case AML_PROCESSOR_OP: /* Mark the next three Ops as part of the parameter list */ AcpiOsPrintf (", "); NextOp = AcpiPsGetDepthNext (NULL, Op); NextOp->Common.DisasmFlags |= ACPI_PARSEOP_PARAMLIST; NextOp = NextOp->Common.Next; NextOp->Common.DisasmFlags |= ACPI_PARSEOP_PARAMLIST; NextOp = NextOp->Common.Next; NextOp->Common.DisasmFlags |= ACPI_PARSEOP_PARAMLIST; return (AE_OK); case AML_MUTEX_OP: case AML_DATA_REGION_OP: AcpiOsPrintf (", "); return (AE_OK); case AML_EVENT_OP: case AML_ALIAS_OP: return (AE_OK); case AML_SCOPE_OP: case AML_DEVICE_OP: case AML_THERMAL_ZONE_OP: AcpiOsPrintf (")"); break; default: AcpiOsPrintf ("*** Unhandled named opcode %X\n", Op->Common.AmlOpcode); break; } } else switch (Op->Common.AmlOpcode) { case AML_FIELD_OP: case AML_BANK_FIELD_OP: case AML_INDEX_FIELD_OP: Info->BitOffset = 0; /* Name of the parent OperationRegion */ NextOp = AcpiPsGetDepthNext (NULL, Op); AcpiDmNamestring (NextOp->Common.Value.Name); AcpiOsPrintf (", "); NextOp->Common.DisasmFlags |= ACPI_PARSEOP_IGNORE; switch (Op->Common.AmlOpcode) { case AML_BANK_FIELD_OP: /* Namestring - Bank Name */ NextOp = AcpiPsGetDepthNext (NULL, NextOp); AcpiDmNamestring (NextOp->Common.Value.Name); NextOp->Common.DisasmFlags |= ACPI_PARSEOP_IGNORE; AcpiOsPrintf (", "); /* * Bank Value. This is a TermArg in the middle of the parameter * list, must handle it here. * * Disassemble the TermArg parse tree. ACPI_PARSEOP_PARAMLIST * eliminates newline in the output. */ NextOp = NextOp->Common.Next; Info->Flags = ACPI_PARSEOP_PARAMLIST; AcpiDmWalkParseTree (NextOp, AcpiDmDescendingOp, AcpiDmAscendingOp, Info); Info->Flags = 0; Info->Level = Level; NextOp->Common.DisasmFlags |= ACPI_PARSEOP_IGNORE; AcpiOsPrintf (", "); break; case AML_INDEX_FIELD_OP: /* Namestring - Data Name */ NextOp = AcpiPsGetDepthNext (NULL, NextOp); AcpiDmNamestring (NextOp->Common.Value.Name); AcpiOsPrintf (", "); NextOp->Common.DisasmFlags |= ACPI_PARSEOP_IGNORE; break; default: break; } AcpiDmFieldFlags (NextOp); break; case AML_BUFFER_OP: /* The next op is the size parameter */ NextOp = AcpiPsGetDepthNext (NULL, Op); if (!NextOp) { /* Single-step support */ return (AE_OK); } if (Op->Common.DisasmOpcode == ACPI_DASM_RESOURCE) { /* * We have a resource list. Don't need to output * the buffer size Op. Open up a new block */ NextOp->Common.DisasmFlags |= ACPI_PARSEOP_IGNORE; NextOp = NextOp->Common.Next; AcpiOsPrintf (")"); /* Emit description comment for Name() with a predefined ACPI name */ AcpiDmPredefinedDescription (Op->Asl.Parent); AcpiOsPrintf ("\n"); AcpiDmIndent (Info->Level); AcpiOsPrintf ("{\n"); return (AE_OK); } /* Normal Buffer, mark size as in the parameter list */ NextOp->Common.DisasmFlags |= ACPI_PARSEOP_PARAMLIST; return (AE_OK); case AML_VAR_PACKAGE_OP: case AML_IF_OP: case AML_WHILE_OP: /* The next op is the size or predicate parameter */ NextOp = AcpiPsGetDepthNext (NULL, Op); if (NextOp) { NextOp->Common.DisasmFlags |= ACPI_PARSEOP_PARAMLIST; } return (AE_OK); case AML_PACKAGE_OP: /* The next op is the size parameter */ NextOp = AcpiPsGetDepthNext (NULL, Op); if (NextOp) { NextOp->Common.DisasmFlags |= ACPI_PARSEOP_PARAMLIST; } return (AE_OK); case AML_MATCH_OP: AcpiDmMatchOp (Op); break; default: break; } if (AcpiDmBlockType (Op) & BLOCK_BRACE) { AcpiOsPrintf ("\n"); AcpiDmIndent (Level); AcpiOsPrintf ("{\n"); } } return (AE_OK); } /******************************************************************************* * * FUNCTION: AcpiDmAscendingOp * * PARAMETERS: ASL_WALK_CALLBACK * * RETURN: Status * * DESCRIPTION: Second visitation of a parse object, during ascent of parse * tree. Close out any parameter lists and complete the opcode. * ******************************************************************************/ static ACPI_STATUS AcpiDmAscendingOp ( ACPI_PARSE_OBJECT *Op, UINT32 Level, void *Context) { ACPI_OP_WALK_INFO *Info = Context; ACPI_PARSE_OBJECT *ParentOp; if (Op->Common.DisasmFlags & ACPI_PARSEOP_IGNORE) { /* Ignore this op -- it was handled elsewhere */ return (AE_OK); } if ((Level == 0) && (Op->Common.AmlOpcode == AML_SCOPE_OP)) { /* Indicates the end of the current descriptor block (table) */ AcpiOsPrintf ("}\n\n"); return (AE_OK); } switch (AcpiDmBlockType (Op)) { case BLOCK_PAREN: /* Completed an op that has arguments, add closing paren */ AcpiOsPrintf (")"); if (Op->Common.AmlOpcode == AML_NAME_OP) { /* Emit description comment for Name() with a predefined ACPI name */ AcpiDmPredefinedDescription (Op); } else { /* For Create* operators, attempt to emit resource tag description */ AcpiDmFieldPredefinedDescription (Op); } /* Decode Notify() values */ if (Op->Common.AmlOpcode == AML_NOTIFY_OP) { AcpiDmNotifyDescription (Op); } AcpiDmDisplayTargetPathname (Op); /* Could be a nested operator, check if comma required */ if (!AcpiDmCommaIfListMember (Op)) { if ((AcpiDmBlockType (Op->Common.Parent) & BLOCK_BRACE) && (!(Op->Common.DisasmFlags & ACPI_PARSEOP_PARAMLIST)) && (Op->Common.AmlOpcode != AML_INT_BYTELIST_OP)) { /* * This is a first-level element of a term list * start a new line */ if (!(Info->Flags & ACPI_PARSEOP_PARAMLIST)) { AcpiOsPrintf ("\n"); } } } break; case BLOCK_BRACE: case (BLOCK_BRACE | BLOCK_PAREN): /* Completed an op that has a term list, add closing brace */ if (Op->Common.DisasmFlags & ACPI_PARSEOP_EMPTY_TERMLIST) { AcpiOsPrintf ("}"); } else { AcpiDmIndent (Level); AcpiOsPrintf ("}"); } AcpiDmCommaIfListMember (Op); if (AcpiDmBlockType (Op->Common.Parent) != BLOCK_PAREN) { AcpiOsPrintf ("\n"); if (!(Op->Common.DisasmFlags & ACPI_PARSEOP_EMPTY_TERMLIST)) { if ((Op->Common.AmlOpcode == AML_IF_OP) && (Op->Common.Next) && (Op->Common.Next->Common.AmlOpcode == AML_ELSE_OP)) { break; } if ((AcpiDmBlockType (Op->Common.Parent) & BLOCK_BRACE) && (!Op->Common.Next)) { break; } AcpiOsPrintf ("\n"); } } break; case BLOCK_NONE: default: /* Could be a nested operator, check if comma required */ if (!AcpiDmCommaIfListMember (Op)) { if ((AcpiDmBlockType (Op->Common.Parent) & BLOCK_BRACE) && (!(Op->Common.DisasmFlags & ACPI_PARSEOP_PARAMLIST)) && (Op->Common.AmlOpcode != AML_INT_BYTELIST_OP)) { /* * This is a first-level element of a term list * start a new line */ AcpiOsPrintf ("\n"); } } else if (Op->Common.Parent) { switch (Op->Common.Parent->Common.AmlOpcode) { case AML_PACKAGE_OP: case AML_VAR_PACKAGE_OP: if (!(Op->Common.DisasmFlags & ACPI_PARSEOP_PARAMLIST)) { AcpiOsPrintf ("\n"); } break; default: break; } } break; } if (Op->Common.DisasmFlags & ACPI_PARSEOP_PARAMLIST) { if ((Op->Common.Next) && (Op->Common.Next->Common.DisasmFlags & ACPI_PARSEOP_PARAMLIST)) { return (AE_OK); } /* * Just completed a parameter node for something like "Buffer (param)". * Close the paren and open up the term list block with a brace */ if (Op->Common.Next) { AcpiOsPrintf (")"); /* Emit description comment for Name() with a predefined ACPI name */ ParentOp = Op->Common.Parent; if (ParentOp) { ParentOp = ParentOp->Common.Parent; if (ParentOp && ParentOp->Asl.AmlOpcode == AML_NAME_OP) { AcpiDmPredefinedDescription (ParentOp); } } AcpiOsPrintf ("\n"); AcpiDmIndent (Level - 1); AcpiOsPrintf ("{\n"); } else { Op->Common.Parent->Common.DisasmFlags |= ACPI_PARSEOP_EMPTY_TERMLIST; AcpiOsPrintf (") {"); } } if ((Op->Common.AmlOpcode == AML_NAME_OP) || (Op->Common.AmlOpcode == AML_RETURN_OP)) { Info->Level++; } return (AE_OK); } #endif /* ACPI_DISASSEMBLER */ src/acpica/source/components/dispatcher/000077500000000000000000000000001231470457100207045ustar00rootroot00000000000000src/acpica/source/components/dispatcher/dsargs.c000066400000000000000000000405251231470457100223410ustar00rootroot00000000000000/****************************************************************************** * * Module Name: dsargs - Support for execution of dynamic arguments for static * objects (regions, fields, buffer fields, etc.) * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #define __DSARGS_C__ #include "acpi.h" #include "accommon.h" #include "acparser.h" #include "amlcode.h" #include "acdispat.h" #include "acnamesp.h" #define _COMPONENT ACPI_DISPATCHER ACPI_MODULE_NAME ("dsargs") /* Local prototypes */ static ACPI_STATUS AcpiDsExecuteArguments ( ACPI_NAMESPACE_NODE *Node, ACPI_NAMESPACE_NODE *ScopeNode, UINT32 AmlLength, UINT8 *AmlStart); /******************************************************************************* * * FUNCTION: AcpiDsExecuteArguments * * PARAMETERS: Node - Object NS node * ScopeNode - Parent NS node * AmlLength - Length of executable AML * AmlStart - Pointer to the AML * * RETURN: Status. * * DESCRIPTION: Late (deferred) execution of region or field arguments * ******************************************************************************/ static ACPI_STATUS AcpiDsExecuteArguments ( ACPI_NAMESPACE_NODE *Node, ACPI_NAMESPACE_NODE *ScopeNode, UINT32 AmlLength, UINT8 *AmlStart) { ACPI_STATUS Status; ACPI_PARSE_OBJECT *Op; ACPI_WALK_STATE *WalkState; ACPI_FUNCTION_TRACE (DsExecuteArguments); /* Allocate a new parser op to be the root of the parsed tree */ Op = AcpiPsAllocOp (AML_INT_EVAL_SUBTREE_OP); if (!Op) { return_ACPI_STATUS (AE_NO_MEMORY); } /* Save the Node for use in AcpiPsParseAml */ Op->Common.Node = ScopeNode; /* Create and initialize a new parser state */ WalkState = AcpiDsCreateWalkState (0, NULL, NULL, NULL); if (!WalkState) { Status = AE_NO_MEMORY; goto Cleanup; } Status = AcpiDsInitAmlWalk (WalkState, Op, NULL, AmlStart, AmlLength, NULL, ACPI_IMODE_LOAD_PASS1); if (ACPI_FAILURE (Status)) { AcpiDsDeleteWalkState (WalkState); goto Cleanup; } /* Mark this parse as a deferred opcode */ WalkState->ParseFlags = ACPI_PARSE_DEFERRED_OP; WalkState->DeferredNode = Node; /* Pass1: Parse the entire declaration */ Status = AcpiPsParseAml (WalkState); if (ACPI_FAILURE (Status)) { goto Cleanup; } /* Get and init the Op created above */ Op->Common.Node = Node; AcpiPsDeleteParseTree (Op); /* Evaluate the deferred arguments */ Op = AcpiPsAllocOp (AML_INT_EVAL_SUBTREE_OP); if (!Op) { return_ACPI_STATUS (AE_NO_MEMORY); } Op->Common.Node = ScopeNode; /* Create and initialize a new parser state */ WalkState = AcpiDsCreateWalkState (0, NULL, NULL, NULL); if (!WalkState) { Status = AE_NO_MEMORY; goto Cleanup; } /* Execute the opcode and arguments */ Status = AcpiDsInitAmlWalk (WalkState, Op, NULL, AmlStart, AmlLength, NULL, ACPI_IMODE_EXECUTE); if (ACPI_FAILURE (Status)) { AcpiDsDeleteWalkState (WalkState); goto Cleanup; } /* Mark this execution as a deferred opcode */ WalkState->DeferredNode = Node; Status = AcpiPsParseAml (WalkState); Cleanup: AcpiPsDeleteParseTree (Op); return_ACPI_STATUS (Status); } /******************************************************************************* * * FUNCTION: AcpiDsGetBufferFieldArguments * * PARAMETERS: ObjDesc - A valid BufferField object * * RETURN: Status. * * DESCRIPTION: Get BufferField Buffer and Index. This implements the late * evaluation of these field attributes. * ******************************************************************************/ ACPI_STATUS AcpiDsGetBufferFieldArguments ( ACPI_OPERAND_OBJECT *ObjDesc) { ACPI_OPERAND_OBJECT *ExtraDesc; ACPI_NAMESPACE_NODE *Node; ACPI_STATUS Status; ACPI_FUNCTION_TRACE_PTR (DsGetBufferFieldArguments, ObjDesc); if (ObjDesc->Common.Flags & AOPOBJ_DATA_VALID) { return_ACPI_STATUS (AE_OK); } /* Get the AML pointer (method object) and BufferField node */ ExtraDesc = AcpiNsGetSecondaryObject (ObjDesc); Node = ObjDesc->BufferField.Node; ACPI_DEBUG_EXEC (AcpiUtDisplayInitPathname (ACPI_TYPE_BUFFER_FIELD, Node, NULL)); ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "[%4.4s] BufferField Arg Init\n", AcpiUtGetNodeName (Node))); /* Execute the AML code for the TermArg arguments */ Status = AcpiDsExecuteArguments (Node, Node->Parent, ExtraDesc->Extra.AmlLength, ExtraDesc->Extra.AmlStart); return_ACPI_STATUS (Status); } /******************************************************************************* * * FUNCTION: AcpiDsGetBankFieldArguments * * PARAMETERS: ObjDesc - A valid BankField object * * RETURN: Status. * * DESCRIPTION: Get BankField BankValue. This implements the late * evaluation of these field attributes. * ******************************************************************************/ ACPI_STATUS AcpiDsGetBankFieldArguments ( ACPI_OPERAND_OBJECT *ObjDesc) { ACPI_OPERAND_OBJECT *ExtraDesc; ACPI_NAMESPACE_NODE *Node; ACPI_STATUS Status; ACPI_FUNCTION_TRACE_PTR (DsGetBankFieldArguments, ObjDesc); if (ObjDesc->Common.Flags & AOPOBJ_DATA_VALID) { return_ACPI_STATUS (AE_OK); } /* Get the AML pointer (method object) and BankField node */ ExtraDesc = AcpiNsGetSecondaryObject (ObjDesc); Node = ObjDesc->BankField.Node; ACPI_DEBUG_EXEC (AcpiUtDisplayInitPathname (ACPI_TYPE_LOCAL_BANK_FIELD, Node, NULL)); ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "[%4.4s] BankField Arg Init\n", AcpiUtGetNodeName (Node))); /* Execute the AML code for the TermArg arguments */ Status = AcpiDsExecuteArguments (Node, Node->Parent, ExtraDesc->Extra.AmlLength, ExtraDesc->Extra.AmlStart); return_ACPI_STATUS (Status); } /******************************************************************************* * * FUNCTION: AcpiDsGetBufferArguments * * PARAMETERS: ObjDesc - A valid Buffer object * * RETURN: Status. * * DESCRIPTION: Get Buffer length and initializer byte list. This implements * the late evaluation of these attributes. * ******************************************************************************/ ACPI_STATUS AcpiDsGetBufferArguments ( ACPI_OPERAND_OBJECT *ObjDesc) { ACPI_NAMESPACE_NODE *Node; ACPI_STATUS Status; ACPI_FUNCTION_TRACE_PTR (DsGetBufferArguments, ObjDesc); if (ObjDesc->Common.Flags & AOPOBJ_DATA_VALID) { return_ACPI_STATUS (AE_OK); } /* Get the Buffer node */ Node = ObjDesc->Buffer.Node; if (!Node) { ACPI_ERROR ((AE_INFO, "No pointer back to namespace node in buffer object %p", ObjDesc)); return_ACPI_STATUS (AE_AML_INTERNAL); } ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Buffer Arg Init\n")); /* Execute the AML code for the TermArg arguments */ Status = AcpiDsExecuteArguments (Node, Node, ObjDesc->Buffer.AmlLength, ObjDesc->Buffer.AmlStart); return_ACPI_STATUS (Status); } /******************************************************************************* * * FUNCTION: AcpiDsGetPackageArguments * * PARAMETERS: ObjDesc - A valid Package object * * RETURN: Status. * * DESCRIPTION: Get Package length and initializer byte list. This implements * the late evaluation of these attributes. * ******************************************************************************/ ACPI_STATUS AcpiDsGetPackageArguments ( ACPI_OPERAND_OBJECT *ObjDesc) { ACPI_NAMESPACE_NODE *Node; ACPI_STATUS Status; ACPI_FUNCTION_TRACE_PTR (DsGetPackageArguments, ObjDesc); if (ObjDesc->Common.Flags & AOPOBJ_DATA_VALID) { return_ACPI_STATUS (AE_OK); } /* Get the Package node */ Node = ObjDesc->Package.Node; if (!Node) { ACPI_ERROR ((AE_INFO, "No pointer back to namespace node in package %p", ObjDesc)); return_ACPI_STATUS (AE_AML_INTERNAL); } ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Package Arg Init\n")); /* Execute the AML code for the TermArg arguments */ Status = AcpiDsExecuteArguments (Node, Node, ObjDesc->Package.AmlLength, ObjDesc->Package.AmlStart); return_ACPI_STATUS (Status); } /******************************************************************************* * * FUNCTION: AcpiDsGetRegionArguments * * PARAMETERS: ObjDesc - A valid region object * * RETURN: Status. * * DESCRIPTION: Get region address and length. This implements the late * evaluation of these region attributes. * ******************************************************************************/ ACPI_STATUS AcpiDsGetRegionArguments ( ACPI_OPERAND_OBJECT *ObjDesc) { ACPI_NAMESPACE_NODE *Node; ACPI_STATUS Status; ACPI_OPERAND_OBJECT *ExtraDesc; ACPI_FUNCTION_TRACE_PTR (DsGetRegionArguments, ObjDesc); if (ObjDesc->Region.Flags & AOPOBJ_DATA_VALID) { return_ACPI_STATUS (AE_OK); } ExtraDesc = AcpiNsGetSecondaryObject (ObjDesc); if (!ExtraDesc) { return_ACPI_STATUS (AE_NOT_EXIST); } /* Get the Region node */ Node = ObjDesc->Region.Node; ACPI_DEBUG_EXEC (AcpiUtDisplayInitPathname (ACPI_TYPE_REGION, Node, NULL)); ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "[%4.4s] OpRegion Arg Init at AML %p\n", AcpiUtGetNodeName (Node), ExtraDesc->Extra.AmlStart)); /* Execute the argument AML */ Status = AcpiDsExecuteArguments (Node, ExtraDesc->Extra.ScopeNode, ExtraDesc->Extra.AmlLength, ExtraDesc->Extra.AmlStart); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } Status = AcpiUtAddAddressRange (ObjDesc->Region.SpaceId, ObjDesc->Region.Address, ObjDesc->Region.Length, Node); return_ACPI_STATUS (Status); } src/acpica/source/components/dispatcher/dscontrol.c000066400000000000000000000414571231470457100230720ustar00rootroot00000000000000/****************************************************************************** * * Module Name: dscontrol - Support for execution control opcodes - * if/else/while/return * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #define __DSCONTROL_C__ #include "acpi.h" #include "accommon.h" #include "amlcode.h" #include "acdispat.h" #include "acinterp.h" #define _COMPONENT ACPI_DISPATCHER ACPI_MODULE_NAME ("dscontrol") /******************************************************************************* * * FUNCTION: AcpiDsExecBeginControlOp * * PARAMETERS: WalkList - The list that owns the walk stack * Op - The control Op * * RETURN: Status * * DESCRIPTION: Handles all control ops encountered during control method * execution. * ******************************************************************************/ ACPI_STATUS AcpiDsExecBeginControlOp ( ACPI_WALK_STATE *WalkState, ACPI_PARSE_OBJECT *Op) { ACPI_STATUS Status = AE_OK; ACPI_GENERIC_STATE *ControlState; ACPI_FUNCTION_NAME (DsExecBeginControlOp); ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, "Op=%p Opcode=%2.2X State=%p\n", Op, Op->Common.AmlOpcode, WalkState)); switch (Op->Common.AmlOpcode) { case AML_WHILE_OP: /* * If this is an additional iteration of a while loop, continue. * There is no need to allocate a new control state. */ if (WalkState->ControlState) { if (WalkState->ControlState->Control.AmlPredicateStart == (WalkState->ParserState.Aml - 1)) { /* Reset the state to start-of-loop */ WalkState->ControlState->Common.State = ACPI_CONTROL_CONDITIONAL_EXECUTING; break; } } /*lint -fallthrough */ case AML_IF_OP: /* * IF/WHILE: Create a new control state to manage these * constructs. We need to manage these as a stack, in order * to handle nesting. */ ControlState = AcpiUtCreateControlState (); if (!ControlState) { Status = AE_NO_MEMORY; break; } /* * Save a pointer to the predicate for multiple executions * of a loop */ ControlState->Control.AmlPredicateStart = WalkState->ParserState.Aml - 1; ControlState->Control.PackageEnd = WalkState->ParserState.PkgEnd; ControlState->Control.Opcode = Op->Common.AmlOpcode; /* Push the control state on this walk's control stack */ AcpiUtPushGenericState (&WalkState->ControlState, ControlState); break; case AML_ELSE_OP: /* Predicate is in the state object */ /* If predicate is true, the IF was executed, ignore ELSE part */ if (WalkState->LastPredicate) { Status = AE_CTRL_TRUE; } break; case AML_RETURN_OP: break; default: break; } return (Status); } /******************************************************************************* * * FUNCTION: AcpiDsExecEndControlOp * * PARAMETERS: WalkList - The list that owns the walk stack * Op - The control Op * * RETURN: Status * * DESCRIPTION: Handles all control ops encountered during control method * execution. * ******************************************************************************/ ACPI_STATUS AcpiDsExecEndControlOp ( ACPI_WALK_STATE *WalkState, ACPI_PARSE_OBJECT *Op) { ACPI_STATUS Status = AE_OK; ACPI_GENERIC_STATE *ControlState; ACPI_FUNCTION_NAME (DsExecEndControlOp); switch (Op->Common.AmlOpcode) { case AML_IF_OP: ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, "[IF_OP] Op=%p\n", Op)); /* * Save the result of the predicate in case there is an * ELSE to come */ WalkState->LastPredicate = (BOOLEAN) WalkState->ControlState->Common.Value; /* * Pop the control state that was created at the start * of the IF and free it */ ControlState = AcpiUtPopGenericState (&WalkState->ControlState); AcpiUtDeleteGenericState (ControlState); break; case AML_ELSE_OP: break; case AML_WHILE_OP: ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, "[WHILE_OP] Op=%p\n", Op)); ControlState = WalkState->ControlState; if (ControlState->Common.Value) { /* Predicate was true, the body of the loop was just executed */ /* * This loop counter mechanism allows the interpreter to escape * possibly infinite loops. This can occur in poorly written AML * when the hardware does not respond within a while loop and the * loop does not implement a timeout. */ ControlState->Control.LoopCount++; if (ControlState->Control.LoopCount > ACPI_MAX_LOOP_ITERATIONS) { Status = AE_AML_INFINITE_LOOP; break; } /* * Go back and evaluate the predicate and maybe execute the loop * another time */ Status = AE_CTRL_PENDING; WalkState->AmlLastWhile = ControlState->Control.AmlPredicateStart; break; } /* Predicate was false, terminate this while loop */ ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, "[WHILE_OP] termination! Op=%p\n",Op)); /* Pop this control state and free it */ ControlState = AcpiUtPopGenericState (&WalkState->ControlState); AcpiUtDeleteGenericState (ControlState); break; case AML_RETURN_OP: ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, "[RETURN_OP] Op=%p Arg=%p\n",Op, Op->Common.Value.Arg)); /* * One optional operand -- the return value * It can be either an immediate operand or a result that * has been bubbled up the tree */ if (Op->Common.Value.Arg) { /* Since we have a real Return(), delete any implicit return */ AcpiDsClearImplicitReturn (WalkState); /* Return statement has an immediate operand */ Status = AcpiDsCreateOperands (WalkState, Op->Common.Value.Arg); if (ACPI_FAILURE (Status)) { return (Status); } /* * If value being returned is a Reference (such as * an arg or local), resolve it now because it may * cease to exist at the end of the method. */ Status = AcpiExResolveToValue (&WalkState->Operands [0], WalkState); if (ACPI_FAILURE (Status)) { return (Status); } /* * Get the return value and save as the last result * value. This is the only place where WalkState->ReturnDesc * is set to anything other than zero! */ WalkState->ReturnDesc = WalkState->Operands[0]; } else if (WalkState->ResultCount) { /* Since we have a real Return(), delete any implicit return */ AcpiDsClearImplicitReturn (WalkState); /* * The return value has come from a previous calculation. * * If value being returned is a Reference (such as * an arg or local), resolve it now because it may * cease to exist at the end of the method. * * Allow references created by the Index operator to return * unchanged. */ if ((ACPI_GET_DESCRIPTOR_TYPE (WalkState->Results->Results.ObjDesc[0]) == ACPI_DESC_TYPE_OPERAND) && ((WalkState->Results->Results.ObjDesc [0])->Common.Type == ACPI_TYPE_LOCAL_REFERENCE) && ((WalkState->Results->Results.ObjDesc [0])->Reference.Class != ACPI_REFCLASS_INDEX)) { Status = AcpiExResolveToValue (&WalkState->Results->Results.ObjDesc [0], WalkState); if (ACPI_FAILURE (Status)) { return (Status); } } WalkState->ReturnDesc = WalkState->Results->Results.ObjDesc [0]; } else { /* No return operand */ if (WalkState->NumOperands) { AcpiUtRemoveReference (WalkState->Operands [0]); } WalkState->Operands [0] = NULL; WalkState->NumOperands = 0; WalkState->ReturnDesc = NULL; } ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, "Completed RETURN_OP State=%p, RetVal=%p\n", WalkState, WalkState->ReturnDesc)); /* End the control method execution right now */ Status = AE_CTRL_TERMINATE; break; case AML_NOOP_OP: /* Just do nothing! */ break; case AML_BREAK_POINT_OP: /* * Set the single-step flag. This will cause the debugger (if present) * to break to the console within the AML debugger at the start of the * next AML instruction. */ ACPI_DEBUGGER_EXEC ( AcpiGbl_CmSingleStep = TRUE); ACPI_DEBUGGER_EXEC ( AcpiOsPrintf ("**break** Executed AML BreakPoint opcode\n")); /* Call to the OSL in case OS wants a piece of the action */ Status = AcpiOsSignal (ACPI_SIGNAL_BREAKPOINT, "Executed AML Breakpoint opcode"); break; case AML_BREAK_OP: case AML_CONTINUE_OP: /* ACPI 2.0 */ /* Pop and delete control states until we find a while */ while (WalkState->ControlState && (WalkState->ControlState->Control.Opcode != AML_WHILE_OP)) { ControlState = AcpiUtPopGenericState (&WalkState->ControlState); AcpiUtDeleteGenericState (ControlState); } /* No while found? */ if (!WalkState->ControlState) { return (AE_AML_NO_WHILE); } /* Was: WalkState->AmlLastWhile = WalkState->ControlState->Control.AmlPredicateStart; */ WalkState->AmlLastWhile = WalkState->ControlState->Control.PackageEnd; /* Return status depending on opcode */ if (Op->Common.AmlOpcode == AML_BREAK_OP) { Status = AE_CTRL_BREAK; } else { Status = AE_CTRL_CONTINUE; } break; default: ACPI_ERROR ((AE_INFO, "Unknown control opcode=0x%X Op=%p", Op->Common.AmlOpcode, Op)); Status = AE_AML_BAD_OPCODE; break; } return (Status); } src/acpica/source/components/dispatcher/dsfield.c000066400000000000000000000731241231470457100224710ustar00rootroot00000000000000/****************************************************************************** * * Module Name: dsfield - Dispatcher field routines * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #define __DSFIELD_C__ #include "acpi.h" #include "accommon.h" #include "amlcode.h" #include "acdispat.h" #include "acinterp.h" #include "acnamesp.h" #include "acparser.h" #define _COMPONENT ACPI_DISPATCHER ACPI_MODULE_NAME ("dsfield") /* Local prototypes */ #ifdef ACPI_ASL_COMPILER #include "acdisasm.h" static ACPI_STATUS AcpiDsCreateExternalRegion ( ACPI_STATUS LookupStatus, ACPI_PARSE_OBJECT *Op, char *Path, ACPI_WALK_STATE *WalkState, ACPI_NAMESPACE_NODE **Node); #endif static ACPI_STATUS AcpiDsGetFieldNames ( ACPI_CREATE_FIELD_INFO *Info, ACPI_WALK_STATE *WalkState, ACPI_PARSE_OBJECT *Arg); #ifdef ACPI_ASL_COMPILER /******************************************************************************* * * FUNCTION: AcpiDsCreateExternalRegion (iASL Disassembler only) * * PARAMETERS: LookupStatus - Status from NsLookup operation * Op - Op containing the Field definition and args * Path - Pathname of the region * ` WalkState - Current method state * Node - Where the new region node is returned * * RETURN: Status * * DESCRIPTION: Add region to the external list if NOT_FOUND. Create a new * region node/object. * ******************************************************************************/ static ACPI_STATUS AcpiDsCreateExternalRegion ( ACPI_STATUS LookupStatus, ACPI_PARSE_OBJECT *Op, char *Path, ACPI_WALK_STATE *WalkState, ACPI_NAMESPACE_NODE **Node) { ACPI_STATUS Status; ACPI_OPERAND_OBJECT *ObjDesc; if (LookupStatus != AE_NOT_FOUND) { return (LookupStatus); } /* * Table disassembly: * OperationRegion not found. Generate an External for it, and * insert the name into the namespace. */ AcpiDmAddOpToExternalList (Op, Path, ACPI_TYPE_REGION, 0, 0); Status = AcpiNsLookup (WalkState->ScopeInfo, Path, ACPI_TYPE_REGION, ACPI_IMODE_LOAD_PASS1, ACPI_NS_SEARCH_PARENT, WalkState, Node); if (ACPI_FAILURE (Status)) { return (Status); } /* Must create and install a region object for the new node */ ObjDesc = AcpiUtCreateInternalObject (ACPI_TYPE_REGION); if (!ObjDesc) { return (AE_NO_MEMORY); } ObjDesc->Region.Node = *Node; Status = AcpiNsAttachObject (*Node, ObjDesc, ACPI_TYPE_REGION); return (Status); } #endif /******************************************************************************* * * FUNCTION: AcpiDsCreateBufferField * * PARAMETERS: Op - Current parse op (CreateXXField) * WalkState - Current state * * RETURN: Status * * DESCRIPTION: Execute the CreateField operators: * CreateBitFieldOp, * CreateByteFieldOp, * CreateWordFieldOp, * CreateDwordFieldOp, * CreateQwordFieldOp, * CreateFieldOp (all of which define a field in a buffer) * ******************************************************************************/ ACPI_STATUS AcpiDsCreateBufferField ( ACPI_PARSE_OBJECT *Op, ACPI_WALK_STATE *WalkState) { ACPI_PARSE_OBJECT *Arg; ACPI_NAMESPACE_NODE *Node; ACPI_STATUS Status; ACPI_OPERAND_OBJECT *ObjDesc; ACPI_OPERAND_OBJECT *SecondDesc = NULL; UINT32 Flags; ACPI_FUNCTION_TRACE (DsCreateBufferField); /* * Get the NameString argument (name of the new BufferField) */ if (Op->Common.AmlOpcode == AML_CREATE_FIELD_OP) { /* For CreateField, name is the 4th argument */ Arg = AcpiPsGetArg (Op, 3); } else { /* For all other CreateXXXField operators, name is the 3rd argument */ Arg = AcpiPsGetArg (Op, 2); } if (!Arg) { return_ACPI_STATUS (AE_AML_NO_OPERAND); } if (WalkState->DeferredNode) { Node = WalkState->DeferredNode; Status = AE_OK; } else { /* Execute flag should always be set when this function is entered */ if (!(WalkState->ParseFlags & ACPI_PARSE_EXECUTE)) { return_ACPI_STATUS (AE_AML_INTERNAL); } /* Creating new namespace node, should not already exist */ Flags = ACPI_NS_NO_UPSEARCH | ACPI_NS_DONT_OPEN_SCOPE | ACPI_NS_ERROR_IF_FOUND; /* * Mark node temporary if we are executing a normal control * method. (Don't mark if this is a module-level code method) */ if (WalkState->MethodNode && !(WalkState->ParseFlags & ACPI_PARSE_MODULE_LEVEL)) { Flags |= ACPI_NS_TEMPORARY; } /* Enter the NameString into the namespace */ Status = AcpiNsLookup (WalkState->ScopeInfo, Arg->Common.Value.String, ACPI_TYPE_ANY, ACPI_IMODE_LOAD_PASS1, Flags, WalkState, &Node); if (ACPI_FAILURE (Status)) { ACPI_ERROR_NAMESPACE (Arg->Common.Value.String, Status); return_ACPI_STATUS (Status); } } /* * We could put the returned object (Node) on the object stack for later, * but for now, we will put it in the "op" object that the parser uses, * so we can get it again at the end of this scope. */ Op->Common.Node = Node; /* * If there is no object attached to the node, this node was just created * and we need to create the field object. Otherwise, this was a lookup * of an existing node and we don't want to create the field object again. */ ObjDesc = AcpiNsGetAttachedObject (Node); if (ObjDesc) { return_ACPI_STATUS (AE_OK); } /* * The Field definition is not fully parsed at this time. * (We must save the address of the AML for the buffer and index operands) */ /* Create the buffer field object */ ObjDesc = AcpiUtCreateInternalObject (ACPI_TYPE_BUFFER_FIELD); if (!ObjDesc) { Status = AE_NO_MEMORY; goto Cleanup; } /* * Remember location in AML stream of the field unit opcode and operands -- * since the buffer and index operands must be evaluated. */ SecondDesc = ObjDesc->Common.NextObject; SecondDesc->Extra.AmlStart = Op->Named.Data; SecondDesc->Extra.AmlLength = Op->Named.Length; ObjDesc->BufferField.Node = Node; /* Attach constructed field descriptors to parent node */ Status = AcpiNsAttachObject (Node, ObjDesc, ACPI_TYPE_BUFFER_FIELD); if (ACPI_FAILURE (Status)) { goto Cleanup; } Cleanup: /* Remove local reference to the object */ AcpiUtRemoveReference (ObjDesc); return_ACPI_STATUS (Status); } /******************************************************************************* * * FUNCTION: AcpiDsGetFieldNames * * PARAMETERS: Info - CreateField info structure * ` WalkState - Current method state * Arg - First parser arg for the field name list * * RETURN: Status * * DESCRIPTION: Process all named fields in a field declaration. Names are * entered into the namespace. * ******************************************************************************/ static ACPI_STATUS AcpiDsGetFieldNames ( ACPI_CREATE_FIELD_INFO *Info, ACPI_WALK_STATE *WalkState, ACPI_PARSE_OBJECT *Arg) { ACPI_STATUS Status; UINT64 Position; ACPI_PARSE_OBJECT *Child; ACPI_FUNCTION_TRACE_PTR (DsGetFieldNames, Info); /* First field starts at bit zero */ Info->FieldBitPosition = 0; /* Process all elements in the field list (of parse nodes) */ while (Arg) { /* * Four types of field elements are handled: * 1) Name - Enters a new named field into the namespace * 2) Offset - specifies a bit offset * 3) AccessAs - changes the access mode/attributes * 4) Connection - Associate a resource template with the field */ switch (Arg->Common.AmlOpcode) { case AML_INT_RESERVEDFIELD_OP: Position = (UINT64) Info->FieldBitPosition + (UINT64) Arg->Common.Value.Size; if (Position > ACPI_UINT32_MAX) { ACPI_ERROR ((AE_INFO, "Bit offset within field too large (> 0xFFFFFFFF)")); return_ACPI_STATUS (AE_SUPPORT); } Info->FieldBitPosition = (UINT32) Position; break; case AML_INT_ACCESSFIELD_OP: case AML_INT_EXTACCESSFIELD_OP: /* * Get new AccessType, AccessAttribute, and AccessLength fields * -- to be used for all field units that follow, until the * end-of-field or another AccessAs keyword is encountered. * NOTE. These three bytes are encoded in the integer value * of the parseop for convenience. * * In FieldFlags, preserve the flag bits other than the * ACCESS_TYPE bits. */ /* AccessType (ByteAcc, WordAcc, etc.) */ Info->FieldFlags = (UINT8) ((Info->FieldFlags & ~(AML_FIELD_ACCESS_TYPE_MASK)) | ((UINT8) ((UINT32) (Arg->Common.Value.Integer & 0x07)))); /* AccessAttribute (AttribQuick, AttribByte, etc.) */ Info->Attribute = (UINT8) ((Arg->Common.Value.Integer >> 8) & 0xFF); /* AccessLength (for serial/buffer protocols) */ Info->AccessLength = (UINT8) ((Arg->Common.Value.Integer >> 16) & 0xFF); break; case AML_INT_CONNECTION_OP: /* * Clear any previous connection. New connection is used for all * fields that follow, similar to AccessAs */ Info->ResourceBuffer = NULL; Info->ConnectionNode = NULL; /* * A Connection() is either an actual resource descriptor (buffer) * or a named reference to a resource template */ Child = Arg->Common.Value.Arg; if (Child->Common.AmlOpcode == AML_INT_BYTELIST_OP) { Info->ResourceBuffer = Child->Named.Data; Info->ResourceLength = (UINT16) Child->Named.Value.Integer; } else { /* Lookup the Connection() namepath, it should already exist */ Status = AcpiNsLookup (WalkState->ScopeInfo, Child->Common.Value.Name, ACPI_TYPE_ANY, ACPI_IMODE_EXECUTE, ACPI_NS_DONT_OPEN_SCOPE, WalkState, &Info->ConnectionNode); if (ACPI_FAILURE (Status)) { ACPI_ERROR_NAMESPACE (Child->Common.Value.Name, Status); return_ACPI_STATUS (Status); } } break; case AML_INT_NAMEDFIELD_OP: /* Lookup the name, it should already exist */ Status = AcpiNsLookup (WalkState->ScopeInfo, (char *) &Arg->Named.Name, Info->FieldType, ACPI_IMODE_EXECUTE, ACPI_NS_DONT_OPEN_SCOPE, WalkState, &Info->FieldNode); if (ACPI_FAILURE (Status)) { ACPI_ERROR_NAMESPACE ((char *) &Arg->Named.Name, Status); return_ACPI_STATUS (Status); } else { Arg->Common.Node = Info->FieldNode; Info->FieldBitLength = Arg->Common.Value.Size; /* * If there is no object attached to the node, this node was * just created and we need to create the field object. * Otherwise, this was a lookup of an existing node and we * don't want to create the field object again. */ if (!AcpiNsGetAttachedObject (Info->FieldNode)) { Status = AcpiExPrepFieldValue (Info); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } } } /* Keep track of bit position for the next field */ Position = (UINT64) Info->FieldBitPosition + (UINT64) Arg->Common.Value.Size; if (Position > ACPI_UINT32_MAX) { ACPI_ERROR ((AE_INFO, "Field [%4.4s] bit offset too large (> 0xFFFFFFFF)", ACPI_CAST_PTR (char, &Info->FieldNode->Name))); return_ACPI_STATUS (AE_SUPPORT); } Info->FieldBitPosition += Info->FieldBitLength; break; default: ACPI_ERROR ((AE_INFO, "Invalid opcode in field list: 0x%X", Arg->Common.AmlOpcode)); return_ACPI_STATUS (AE_AML_BAD_OPCODE); } Arg = Arg->Common.Next; } return_ACPI_STATUS (AE_OK); } /******************************************************************************* * * FUNCTION: AcpiDsCreateField * * PARAMETERS: Op - Op containing the Field definition and args * RegionNode - Object for the containing Operation Region * ` WalkState - Current method state * * RETURN: Status * * DESCRIPTION: Create a new field in the specified operation region * ******************************************************************************/ ACPI_STATUS AcpiDsCreateField ( ACPI_PARSE_OBJECT *Op, ACPI_NAMESPACE_NODE *RegionNode, ACPI_WALK_STATE *WalkState) { ACPI_STATUS Status; ACPI_PARSE_OBJECT *Arg; ACPI_CREATE_FIELD_INFO Info; ACPI_FUNCTION_TRACE_PTR (DsCreateField, Op); /* First arg is the name of the parent OpRegion (must already exist) */ Arg = Op->Common.Value.Arg; if (!RegionNode) { Status = AcpiNsLookup (WalkState->ScopeInfo, Arg->Common.Value.Name, ACPI_TYPE_REGION, ACPI_IMODE_EXECUTE, ACPI_NS_SEARCH_PARENT, WalkState, &RegionNode); #ifdef ACPI_ASL_COMPILER Status = AcpiDsCreateExternalRegion (Status, Arg, Arg->Common.Value.Name, WalkState, &RegionNode); #endif if (ACPI_FAILURE (Status)) { ACPI_ERROR_NAMESPACE (Arg->Common.Value.Name, Status); return_ACPI_STATUS (Status); } } ACPI_MEMSET (&Info, 0, sizeof (ACPI_CREATE_FIELD_INFO)); /* Second arg is the field flags */ Arg = Arg->Common.Next; Info.FieldFlags = (UINT8) Arg->Common.Value.Integer; Info.Attribute = 0; /* Each remaining arg is a Named Field */ Info.FieldType = ACPI_TYPE_LOCAL_REGION_FIELD; Info.RegionNode = RegionNode; Status = AcpiDsGetFieldNames (&Info, WalkState, Arg->Common.Next); return_ACPI_STATUS (Status); } /******************************************************************************* * * FUNCTION: AcpiDsInitFieldObjects * * PARAMETERS: Op - Op containing the Field definition and args * ` WalkState - Current method state * * RETURN: Status * * DESCRIPTION: For each "Field Unit" name in the argument list that is * part of the field declaration, enter the name into the * namespace. * ******************************************************************************/ ACPI_STATUS AcpiDsInitFieldObjects ( ACPI_PARSE_OBJECT *Op, ACPI_WALK_STATE *WalkState) { ACPI_STATUS Status; ACPI_PARSE_OBJECT *Arg = NULL; ACPI_NAMESPACE_NODE *Node; UINT8 Type = 0; UINT32 Flags; ACPI_FUNCTION_TRACE_PTR (DsInitFieldObjects, Op); /* Execute flag should always be set when this function is entered */ if (!(WalkState->ParseFlags & ACPI_PARSE_EXECUTE)) { if (WalkState->ParseFlags & ACPI_PARSE_DEFERRED_OP) { /* BankField Op is deferred, just return OK */ return_ACPI_STATUS (AE_OK); } return_ACPI_STATUS (AE_AML_INTERNAL); } /* * Get the FieldList argument for this opcode. This is the start of the * list of field elements. */ switch (WalkState->Opcode) { case AML_FIELD_OP: Arg = AcpiPsGetArg (Op, 2); Type = ACPI_TYPE_LOCAL_REGION_FIELD; break; case AML_BANK_FIELD_OP: Arg = AcpiPsGetArg (Op, 4); Type = ACPI_TYPE_LOCAL_BANK_FIELD; break; case AML_INDEX_FIELD_OP: Arg = AcpiPsGetArg (Op, 3); Type = ACPI_TYPE_LOCAL_INDEX_FIELD; break; default: return_ACPI_STATUS (AE_BAD_PARAMETER); } /* Creating new namespace node(s), should not already exist */ Flags = ACPI_NS_NO_UPSEARCH | ACPI_NS_DONT_OPEN_SCOPE | ACPI_NS_ERROR_IF_FOUND; /* * Mark node(s) temporary if we are executing a normal control * method. (Don't mark if this is a module-level code method) */ if (WalkState->MethodNode && !(WalkState->ParseFlags & ACPI_PARSE_MODULE_LEVEL)) { Flags |= ACPI_NS_TEMPORARY; } /* * Walk the list of entries in the FieldList * Note: FieldList can be of zero length. In this case, Arg will be NULL. */ while (Arg) { /* * Ignore OFFSET/ACCESSAS/CONNECTION terms here; we are only interested * in the field names in order to enter them into the namespace. */ if (Arg->Common.AmlOpcode == AML_INT_NAMEDFIELD_OP) { Status = AcpiNsLookup (WalkState->ScopeInfo, (char *) &Arg->Named.Name, Type, ACPI_IMODE_LOAD_PASS1, Flags, WalkState, &Node); if (ACPI_FAILURE (Status)) { ACPI_ERROR_NAMESPACE ((char *) &Arg->Named.Name, Status); if (Status != AE_ALREADY_EXISTS) { return_ACPI_STATUS (Status); } /* Name already exists, just ignore this error */ Status = AE_OK; } Arg->Common.Node = Node; } /* Get the next field element in the list */ Arg = Arg->Common.Next; } return_ACPI_STATUS (AE_OK); } /******************************************************************************* * * FUNCTION: AcpiDsCreateBankField * * PARAMETERS: Op - Op containing the Field definition and args * RegionNode - Object for the containing Operation Region * WalkState - Current method state * * RETURN: Status * * DESCRIPTION: Create a new bank field in the specified operation region * ******************************************************************************/ ACPI_STATUS AcpiDsCreateBankField ( ACPI_PARSE_OBJECT *Op, ACPI_NAMESPACE_NODE *RegionNode, ACPI_WALK_STATE *WalkState) { ACPI_STATUS Status; ACPI_PARSE_OBJECT *Arg; ACPI_CREATE_FIELD_INFO Info; ACPI_FUNCTION_TRACE_PTR (DsCreateBankField, Op); /* First arg is the name of the parent OpRegion (must already exist) */ Arg = Op->Common.Value.Arg; if (!RegionNode) { Status = AcpiNsLookup (WalkState->ScopeInfo, Arg->Common.Value.Name, ACPI_TYPE_REGION, ACPI_IMODE_EXECUTE, ACPI_NS_SEARCH_PARENT, WalkState, &RegionNode); #ifdef ACPI_ASL_COMPILER Status = AcpiDsCreateExternalRegion (Status, Arg, Arg->Common.Value.Name, WalkState, &RegionNode); #endif if (ACPI_FAILURE (Status)) { ACPI_ERROR_NAMESPACE (Arg->Common.Value.Name, Status); return_ACPI_STATUS (Status); } } /* Second arg is the Bank Register (Field) (must already exist) */ Arg = Arg->Common.Next; Status = AcpiNsLookup (WalkState->ScopeInfo, Arg->Common.Value.String, ACPI_TYPE_ANY, ACPI_IMODE_EXECUTE, ACPI_NS_SEARCH_PARENT, WalkState, &Info.RegisterNode); if (ACPI_FAILURE (Status)) { ACPI_ERROR_NAMESPACE (Arg->Common.Value.String, Status); return_ACPI_STATUS (Status); } /* * Third arg is the BankValue * This arg is a TermArg, not a constant * It will be evaluated later, by AcpiDsEvalBankFieldOperands */ Arg = Arg->Common.Next; /* Fourth arg is the field flags */ Arg = Arg->Common.Next; Info.FieldFlags = (UINT8) Arg->Common.Value.Integer; /* Each remaining arg is a Named Field */ Info.FieldType = ACPI_TYPE_LOCAL_BANK_FIELD; Info.RegionNode = RegionNode; /* * Use Info.DataRegisterNode to store BankField Op * It's safe because DataRegisterNode will never be used when create bank field * We store AmlStart and AmlLength in the BankField Op for late evaluation * Used in AcpiExPrepFieldValue(Info) * * TBD: Or, should we add a field in ACPI_CREATE_FIELD_INFO, like "void *ParentOp"? */ Info.DataRegisterNode = (ACPI_NAMESPACE_NODE*) Op; Status = AcpiDsGetFieldNames (&Info, WalkState, Arg->Common.Next); return_ACPI_STATUS (Status); } /******************************************************************************* * * FUNCTION: AcpiDsCreateIndexField * * PARAMETERS: Op - Op containing the Field definition and args * RegionNode - Object for the containing Operation Region * ` WalkState - Current method state * * RETURN: Status * * DESCRIPTION: Create a new index field in the specified operation region * ******************************************************************************/ ACPI_STATUS AcpiDsCreateIndexField ( ACPI_PARSE_OBJECT *Op, ACPI_NAMESPACE_NODE *RegionNode, ACPI_WALK_STATE *WalkState) { ACPI_STATUS Status; ACPI_PARSE_OBJECT *Arg; ACPI_CREATE_FIELD_INFO Info; ACPI_FUNCTION_TRACE_PTR (DsCreateIndexField, Op); /* First arg is the name of the Index register (must already exist) */ Arg = Op->Common.Value.Arg; Status = AcpiNsLookup (WalkState->ScopeInfo, Arg->Common.Value.String, ACPI_TYPE_ANY, ACPI_IMODE_EXECUTE, ACPI_NS_SEARCH_PARENT, WalkState, &Info.RegisterNode); if (ACPI_FAILURE (Status)) { ACPI_ERROR_NAMESPACE (Arg->Common.Value.String, Status); return_ACPI_STATUS (Status); } /* Second arg is the data register (must already exist) */ Arg = Arg->Common.Next; Status = AcpiNsLookup (WalkState->ScopeInfo, Arg->Common.Value.String, ACPI_TYPE_ANY, ACPI_IMODE_EXECUTE, ACPI_NS_SEARCH_PARENT, WalkState, &Info.DataRegisterNode); if (ACPI_FAILURE (Status)) { ACPI_ERROR_NAMESPACE (Arg->Common.Value.String, Status); return_ACPI_STATUS (Status); } /* Next arg is the field flags */ Arg = Arg->Common.Next; Info.FieldFlags = (UINT8) Arg->Common.Value.Integer; /* Each remaining arg is a Named Field */ Info.FieldType = ACPI_TYPE_LOCAL_INDEX_FIELD; Info.RegionNode = RegionNode; Status = AcpiDsGetFieldNames (&Info, WalkState, Arg->Common.Next); return_ACPI_STATUS (Status); } src/acpica/source/components/dispatcher/dsinit.c000066400000000000000000000307071231470457100223510ustar00rootroot00000000000000/****************************************************************************** * * Module Name: dsinit - Object initialization namespace walk * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #define __DSINIT_C__ #include "acpi.h" #include "accommon.h" #include "acdispat.h" #include "acnamesp.h" #include "actables.h" #define _COMPONENT ACPI_DISPATCHER ACPI_MODULE_NAME ("dsinit") /* Local prototypes */ static ACPI_STATUS AcpiDsInitOneObject ( ACPI_HANDLE ObjHandle, UINT32 Level, void *Context, void **ReturnValue); /******************************************************************************* * * FUNCTION: AcpiDsInitOneObject * * PARAMETERS: ObjHandle - Node for the object * Level - Current nesting level * Context - Points to a init info struct * ReturnValue - Not used * * RETURN: Status * * DESCRIPTION: Callback from AcpiWalkNamespace. Invoked for every object * within the namespace. * * Currently, the only objects that require initialization are: * 1) Methods * 2) Operation Regions * ******************************************************************************/ static ACPI_STATUS AcpiDsInitOneObject ( ACPI_HANDLE ObjHandle, UINT32 Level, void *Context, void **ReturnValue) { ACPI_INIT_WALK_INFO *Info = (ACPI_INIT_WALK_INFO *) Context; ACPI_NAMESPACE_NODE *Node = (ACPI_NAMESPACE_NODE *) ObjHandle; ACPI_STATUS Status; ACPI_OPERAND_OBJECT *ObjDesc; ACPI_FUNCTION_ENTRY (); /* * We are only interested in NS nodes owned by the table that * was just loaded */ if (Node->OwnerId != Info->OwnerId) { return (AE_OK); } Info->ObjectCount++; /* And even then, we are only interested in a few object types */ switch (AcpiNsGetType (ObjHandle)) { case ACPI_TYPE_REGION: Status = AcpiDsInitializeRegion (ObjHandle); if (ACPI_FAILURE (Status)) { ACPI_EXCEPTION ((AE_INFO, Status, "During Region initialization %p [%4.4s]", ObjHandle, AcpiUtGetNodeName (ObjHandle))); } Info->OpRegionCount++; break; case ACPI_TYPE_METHOD: /* * Auto-serialization support. We will examine each method that is * NotSerialized to determine if it creates any Named objects. If * it does, it will be marked serialized to prevent problems if * the method is entered by two or more threads and an attempt is * made to create the same named object twice -- which results in * an AE_ALREADY_EXISTS exception and method abort. */ Info->MethodCount++; ObjDesc = AcpiNsGetAttachedObject (Node); if (!ObjDesc) { break; } /* Ignore if already serialized */ if (ObjDesc->Method.InfoFlags & ACPI_METHOD_SERIALIZED) { Info->SerialMethodCount++; break; } if (AcpiGbl_AutoSerializeMethods) { /* Parse/scan method and serialize it if necessary */ AcpiDsAutoSerializeMethod (Node, ObjDesc); if (ObjDesc->Method.InfoFlags & ACPI_METHOD_SERIALIZED) { /* Method was just converted to Serialized */ Info->SerialMethodCount++; Info->SerializedMethodCount++; break; } } Info->NonSerialMethodCount++; break; case ACPI_TYPE_DEVICE: Info->DeviceCount++; break; default: break; } /* * We ignore errors from above, and always return OK, since * we don't want to abort the walk on a single error. */ return (AE_OK); } /******************************************************************************* * * FUNCTION: AcpiDsInitializeObjects * * PARAMETERS: TableDesc - Descriptor for parent ACPI table * StartNode - Root of subtree to be initialized. * * RETURN: Status * * DESCRIPTION: Walk the namespace starting at "StartNode" and perform any * necessary initialization on the objects found therein * ******************************************************************************/ ACPI_STATUS AcpiDsInitializeObjects ( UINT32 TableIndex, ACPI_NAMESPACE_NODE *StartNode) { ACPI_STATUS Status; ACPI_INIT_WALK_INFO Info; ACPI_TABLE_HEADER *Table; ACPI_OWNER_ID OwnerId; ACPI_FUNCTION_TRACE (DsInitializeObjects); Status = AcpiTbGetOwnerId (TableIndex, &OwnerId); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, "**** Starting initialization of namespace objects ****\n")); /* Set all init info to zero */ ACPI_MEMSET (&Info, 0, sizeof (ACPI_INIT_WALK_INFO)); Info.OwnerId = OwnerId; Info.TableIndex = TableIndex; /* Walk entire namespace from the supplied root */ Status = AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } /* * We don't use AcpiWalkNamespace since we do not want to acquire * the namespace reader lock. */ Status = AcpiNsWalkNamespace (ACPI_TYPE_ANY, StartNode, ACPI_UINT32_MAX, ACPI_NS_WALK_UNLOCK, AcpiDsInitOneObject, NULL, &Info, NULL); if (ACPI_FAILURE (Status)) { ACPI_EXCEPTION ((AE_INFO, Status, "During WalkNamespace")); } (void) AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); Status = AcpiGetTableByIndex (TableIndex, &Table); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } ACPI_DEBUG_PRINT_RAW ((ACPI_DB_INIT, "Table [%4.4s] (id %4.4X) - %4u Objects with %3u Devices, " "%3u Regions, %3u Methods (%u/%u/%u Serial/Non/Cvt)\n", Table->Signature, OwnerId, Info.ObjectCount, Info.DeviceCount, Info.OpRegionCount, Info.MethodCount, Info.SerialMethodCount, Info.NonSerialMethodCount, Info.SerializedMethodCount)); ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, "%u Methods, %u Regions\n", Info.MethodCount, Info.OpRegionCount)); return_ACPI_STATUS (AE_OK); } src/acpica/source/components/dispatcher/dsmethod.c000066400000000000000000000767221231470457100226750ustar00rootroot00000000000000/****************************************************************************** * * Module Name: dsmethod - Parser/Interpreter interface - control method parsing * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #define __DSMETHOD_C__ #include "acpi.h" #include "accommon.h" #include "acdispat.h" #include "acinterp.h" #include "acnamesp.h" #include "acdisasm.h" #include "acparser.h" #include "amlcode.h" #define _COMPONENT ACPI_DISPATCHER ACPI_MODULE_NAME ("dsmethod") /* Local prototypes */ static ACPI_STATUS AcpiDsDetectNamedOpcodes ( ACPI_WALK_STATE *WalkState, ACPI_PARSE_OBJECT **OutOp); static ACPI_STATUS AcpiDsCreateMethodMutex ( ACPI_OPERAND_OBJECT *MethodDesc); /******************************************************************************* * * FUNCTION: AcpiDsAutoSerializeMethod * * PARAMETERS: Node - Namespace Node of the method * ObjDesc - Method object attached to node * * RETURN: Status * * DESCRIPTION: Parse a control method AML to scan for control methods that * need serialization due to the creation of named objects. * * NOTE: It is a bit of overkill to mark all such methods serialized, since * there is only a problem if the method actually blocks during execution. * A blocking operation is, for example, a Sleep() operation, or any access * to an operation region. However, it is probably not possible to easily * detect whether a method will block or not, so we simply mark all suspicious * methods as serialized. * * NOTE2: This code is essentially a generic routine for parsing a single * control method. * ******************************************************************************/ ACPI_STATUS AcpiDsAutoSerializeMethod ( ACPI_NAMESPACE_NODE *Node, ACPI_OPERAND_OBJECT *ObjDesc) { ACPI_STATUS Status; ACPI_PARSE_OBJECT *Op = NULL; ACPI_WALK_STATE *WalkState; ACPI_FUNCTION_TRACE_PTR (DsAutoSerializeMethod, Node); ACPI_DEBUG_PRINT ((ACPI_DB_PARSE, "Method auto-serialization parse [%4.4s] %p\n", AcpiUtGetNodeName (Node), Node)); /* Create/Init a root op for the method parse tree */ Op = AcpiPsAllocOp (AML_METHOD_OP); if (!Op) { return_ACPI_STATUS (AE_NO_MEMORY); } AcpiPsSetName (Op, Node->Name.Integer); Op->Common.Node = Node; /* Create and initialize a new walk state */ WalkState = AcpiDsCreateWalkState (Node->OwnerId, NULL, NULL, NULL); if (!WalkState) { return_ACPI_STATUS (AE_NO_MEMORY); } Status = AcpiDsInitAmlWalk (WalkState, Op, Node, ObjDesc->Method.AmlStart, ObjDesc->Method.AmlLength, NULL, 0); if (ACPI_FAILURE (Status)) { AcpiDsDeleteWalkState (WalkState); return_ACPI_STATUS (Status); } WalkState->DescendingCallback = AcpiDsDetectNamedOpcodes; /* Parse the method, scan for creation of named objects */ Status = AcpiPsParseAml (WalkState); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } AcpiPsDeleteParseTree (Op); return_ACPI_STATUS (Status); } /******************************************************************************* * * FUNCTION: AcpiDsDetectNamedOpcodes * * PARAMETERS: WalkState - Current state of the parse tree walk * OutOp - Unused, required for parser interface * * RETURN: Status * * DESCRIPTION: Descending callback used during the loading of ACPI tables. * Currently used to detect methods that must be marked serialized * in order to avoid problems with the creation of named objects. * ******************************************************************************/ static ACPI_STATUS AcpiDsDetectNamedOpcodes ( ACPI_WALK_STATE *WalkState, ACPI_PARSE_OBJECT **OutOp) { ACPI_FUNCTION_NAME (AcpiDsDetectNamedOpcodes); /* We are only interested in opcodes that create a new name */ if (!(WalkState->OpInfo->Flags & (AML_NAMED | AML_CREATE | AML_FIELD))) { return (AE_OK); } /* * At this point, we know we have a Named object opcode. * Mark the method as serialized. Later code will create a mutex for * this method to enforce serialization. * * Note, ACPI_METHOD_IGNORE_SYNC_LEVEL flag means that we will ignore the * Sync Level mechanism for this method, even though it is now serialized. * Otherwise, there can be conflicts with existing ASL code that actually * uses sync levels. */ WalkState->MethodDesc->Method.SyncLevel = 0; WalkState->MethodDesc->Method.InfoFlags |= (ACPI_METHOD_SERIALIZED | ACPI_METHOD_IGNORE_SYNC_LEVEL); ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Method serialized [%4.4s] %p - [%s] (%4.4X)\n", WalkState->MethodNode->Name.Ascii, WalkState->MethodNode, WalkState->OpInfo->Name, WalkState->Opcode)); /* Abort the parse, no need to examine this method any further */ return (AE_CTRL_TERMINATE); } /******************************************************************************* * * FUNCTION: AcpiDsMethodError * * PARAMETERS: Status - Execution status * WalkState - Current state * * RETURN: Status * * DESCRIPTION: Called on method error. Invoke the global exception handler if * present, dump the method data if the disassembler is configured * * Note: Allows the exception handler to change the status code * ******************************************************************************/ ACPI_STATUS AcpiDsMethodError ( ACPI_STATUS Status, ACPI_WALK_STATE *WalkState) { ACPI_FUNCTION_ENTRY (); /* Ignore AE_OK and control exception codes */ if (ACPI_SUCCESS (Status) || (Status & AE_CODE_CONTROL)) { return (Status); } /* Invoke the global exception handler */ if (AcpiGbl_ExceptionHandler) { /* Exit the interpreter, allow handler to execute methods */ AcpiExExitInterpreter (); /* * Handler can map the exception code to anything it wants, including * AE_OK, in which case the executing method will not be aborted. */ Status = AcpiGbl_ExceptionHandler (Status, WalkState->MethodNode ? WalkState->MethodNode->Name.Integer : 0, WalkState->Opcode, WalkState->AmlOffset, NULL); AcpiExEnterInterpreter (); } AcpiDsClearImplicitReturn (WalkState); #ifdef ACPI_DISASSEMBLER if (ACPI_FAILURE (Status)) { /* Display method locals/args if disassembler is present */ AcpiDmDumpMethodInfo (Status, WalkState, WalkState->Op); } #endif return (Status); } /******************************************************************************* * * FUNCTION: AcpiDsCreateMethodMutex * * PARAMETERS: ObjDesc - The method object * * RETURN: Status * * DESCRIPTION: Create a mutex object for a serialized control method * ******************************************************************************/ static ACPI_STATUS AcpiDsCreateMethodMutex ( ACPI_OPERAND_OBJECT *MethodDesc) { ACPI_OPERAND_OBJECT *MutexDesc; ACPI_STATUS Status; ACPI_FUNCTION_TRACE (DsCreateMethodMutex); /* Create the new mutex object */ MutexDesc = AcpiUtCreateInternalObject (ACPI_TYPE_MUTEX); if (!MutexDesc) { return_ACPI_STATUS (AE_NO_MEMORY); } /* Create the actual OS Mutex */ Status = AcpiOsCreateMutex (&MutexDesc->Mutex.OsMutex); if (ACPI_FAILURE (Status)) { AcpiUtDeleteObjectDesc (MutexDesc); return_ACPI_STATUS (Status); } MutexDesc->Mutex.SyncLevel = MethodDesc->Method.SyncLevel; MethodDesc->Method.Mutex = MutexDesc; return_ACPI_STATUS (AE_OK); } /******************************************************************************* * * FUNCTION: AcpiDsBeginMethodExecution * * PARAMETERS: MethodNode - Node of the method * ObjDesc - The method object * WalkState - current state, NULL if not yet executing * a method. * * RETURN: Status * * DESCRIPTION: Prepare a method for execution. Parses the method if necessary, * increments the thread count, and waits at the method semaphore * for clearance to execute. * ******************************************************************************/ ACPI_STATUS AcpiDsBeginMethodExecution ( ACPI_NAMESPACE_NODE *MethodNode, ACPI_OPERAND_OBJECT *ObjDesc, ACPI_WALK_STATE *WalkState) { ACPI_STATUS Status = AE_OK; ACPI_FUNCTION_TRACE_PTR (DsBeginMethodExecution, MethodNode); if (!MethodNode) { return_ACPI_STATUS (AE_NULL_ENTRY); } /* Prevent wraparound of thread count */ if (ObjDesc->Method.ThreadCount == ACPI_UINT8_MAX) { ACPI_ERROR ((AE_INFO, "Method reached maximum reentrancy limit (255)")); return_ACPI_STATUS (AE_AML_METHOD_LIMIT); } /* * If this method is serialized, we need to acquire the method mutex. */ if (ObjDesc->Method.InfoFlags & ACPI_METHOD_SERIALIZED) { /* * Create a mutex for the method if it is defined to be Serialized * and a mutex has not already been created. We defer the mutex creation * until a method is actually executed, to minimize the object count */ if (!ObjDesc->Method.Mutex) { Status = AcpiDsCreateMethodMutex (ObjDesc); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } } /* * The CurrentSyncLevel (per-thread) must be less than or equal to * the sync level of the method. This mechanism provides some * deadlock prevention. * * If the method was auto-serialized, we just ignore the sync level * mechanism, because auto-serialization of methods can interfere * with ASL code that actually uses sync levels. * * Top-level method invocation has no walk state at this point */ if (WalkState && (!(ObjDesc->Method.InfoFlags & ACPI_METHOD_IGNORE_SYNC_LEVEL)) && (WalkState->Thread->CurrentSyncLevel > ObjDesc->Method.Mutex->Mutex.SyncLevel)) { ACPI_ERROR ((AE_INFO, "Cannot acquire Mutex for method [%4.4s], current SyncLevel is too large (%u)", AcpiUtGetNodeName (MethodNode), WalkState->Thread->CurrentSyncLevel)); return_ACPI_STATUS (AE_AML_MUTEX_ORDER); } /* * Obtain the method mutex if necessary. Do not acquire mutex for a * recursive call. */ if (!WalkState || !ObjDesc->Method.Mutex->Mutex.ThreadId || (WalkState->Thread->ThreadId != ObjDesc->Method.Mutex->Mutex.ThreadId)) { /* * Acquire the method mutex. This releases the interpreter if we * block (and reacquires it before it returns) */ Status = AcpiExSystemWaitMutex (ObjDesc->Method.Mutex->Mutex.OsMutex, ACPI_WAIT_FOREVER); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } /* Update the mutex and walk info and save the original SyncLevel */ if (WalkState) { ObjDesc->Method.Mutex->Mutex.OriginalSyncLevel = WalkState->Thread->CurrentSyncLevel; ObjDesc->Method.Mutex->Mutex.ThreadId = WalkState->Thread->ThreadId; WalkState->Thread->CurrentSyncLevel = ObjDesc->Method.SyncLevel; } else { ObjDesc->Method.Mutex->Mutex.OriginalSyncLevel = ObjDesc->Method.Mutex->Mutex.SyncLevel; } } /* Always increase acquisition depth */ ObjDesc->Method.Mutex->Mutex.AcquisitionDepth++; } /* * Allocate an Owner ID for this method, only if this is the first thread * to begin concurrent execution. We only need one OwnerId, even if the * method is invoked recursively. */ if (!ObjDesc->Method.OwnerId) { Status = AcpiUtAllocateOwnerId (&ObjDesc->Method.OwnerId); if (ACPI_FAILURE (Status)) { goto Cleanup; } } /* * Increment the method parse tree thread count since it has been * reentered one more time (even if it is the same thread) */ ObjDesc->Method.ThreadCount++; AcpiMethodCount++; return_ACPI_STATUS (Status); Cleanup: /* On error, must release the method mutex (if present) */ if (ObjDesc->Method.Mutex) { AcpiOsReleaseMutex (ObjDesc->Method.Mutex->Mutex.OsMutex); } return_ACPI_STATUS (Status); } /******************************************************************************* * * FUNCTION: AcpiDsCallControlMethod * * PARAMETERS: Thread - Info for this thread * ThisWalkState - Current walk state * Op - Current Op to be walked * * RETURN: Status * * DESCRIPTION: Transfer execution to a called control method * ******************************************************************************/ ACPI_STATUS AcpiDsCallControlMethod ( ACPI_THREAD_STATE *Thread, ACPI_WALK_STATE *ThisWalkState, ACPI_PARSE_OBJECT *Op) { ACPI_STATUS Status; ACPI_NAMESPACE_NODE *MethodNode; ACPI_WALK_STATE *NextWalkState = NULL; ACPI_OPERAND_OBJECT *ObjDesc; ACPI_EVALUATE_INFO *Info; UINT32 i; ACPI_FUNCTION_TRACE_PTR (DsCallControlMethod, ThisWalkState); ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, "Calling method %p, currentstate=%p\n", ThisWalkState->PrevOp, ThisWalkState)); /* * Get the namespace entry for the control method we are about to call */ MethodNode = ThisWalkState->MethodCallNode; if (!MethodNode) { return_ACPI_STATUS (AE_NULL_ENTRY); } ObjDesc = AcpiNsGetAttachedObject (MethodNode); if (!ObjDesc) { return_ACPI_STATUS (AE_NULL_OBJECT); } /* Init for new method, possibly wait on method mutex */ Status = AcpiDsBeginMethodExecution (MethodNode, ObjDesc, ThisWalkState); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } /* Begin method parse/execution. Create a new walk state */ NextWalkState = AcpiDsCreateWalkState (ObjDesc->Method.OwnerId, NULL, ObjDesc, Thread); if (!NextWalkState) { Status = AE_NO_MEMORY; goto Cleanup; } /* * The resolved arguments were put on the previous walk state's operand * stack. Operands on the previous walk state stack always * start at index 0. Also, null terminate the list of arguments */ ThisWalkState->Operands [ThisWalkState->NumOperands] = NULL; /* * Allocate and initialize the evaluation information block * TBD: this is somewhat inefficient, should change interface to * DsInitAmlWalk. For now, keeps this struct off the CPU stack */ Info = ACPI_ALLOCATE_ZEROED (sizeof (ACPI_EVALUATE_INFO)); if (!Info) { Status = AE_NO_MEMORY; goto Cleanup; } Info->Parameters = &ThisWalkState->Operands[0]; Status = AcpiDsInitAmlWalk (NextWalkState, NULL, MethodNode, ObjDesc->Method.AmlStart, ObjDesc->Method.AmlLength, Info, ACPI_IMODE_EXECUTE); ACPI_FREE (Info); if (ACPI_FAILURE (Status)) { goto Cleanup; } /* * Delete the operands on the previous walkstate operand stack * (they were copied to new objects) */ for (i = 0; i < ObjDesc->Method.ParamCount; i++) { AcpiUtRemoveReference (ThisWalkState->Operands [i]); ThisWalkState->Operands [i] = NULL; } /* Clear the operand stack */ ThisWalkState->NumOperands = 0; ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, "**** Begin nested execution of [%4.4s] **** WalkState=%p\n", MethodNode->Name.Ascii, NextWalkState)); /* Invoke an internal method if necessary */ if (ObjDesc->Method.InfoFlags & ACPI_METHOD_INTERNAL_ONLY) { Status = ObjDesc->Method.Dispatch.Implementation (NextWalkState); if (Status == AE_OK) { Status = AE_CTRL_TERMINATE; } } return_ACPI_STATUS (Status); Cleanup: /* On error, we must terminate the method properly */ AcpiDsTerminateControlMethod (ObjDesc, NextWalkState); if (NextWalkState) { AcpiDsDeleteWalkState (NextWalkState); } return_ACPI_STATUS (Status); } /******************************************************************************* * * FUNCTION: AcpiDsRestartControlMethod * * PARAMETERS: WalkState - State for preempted method (caller) * ReturnDesc - Return value from the called method * * RETURN: Status * * DESCRIPTION: Restart a method that was preempted by another (nested) method * invocation. Handle the return value (if any) from the callee. * ******************************************************************************/ ACPI_STATUS AcpiDsRestartControlMethod ( ACPI_WALK_STATE *WalkState, ACPI_OPERAND_OBJECT *ReturnDesc) { ACPI_STATUS Status; int SameAsImplicitReturn; ACPI_FUNCTION_TRACE_PTR (DsRestartControlMethod, WalkState); ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, "****Restart [%4.4s] Op %p ReturnValueFromCallee %p\n", AcpiUtGetNodeName (WalkState->MethodNode), WalkState->MethodCallOp, ReturnDesc)); ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, " ReturnFromThisMethodUsed?=%X ResStack %p Walk %p\n", WalkState->ReturnUsed, WalkState->Results, WalkState)); /* Did the called method return a value? */ if (ReturnDesc) { /* Is the implicit return object the same as the return desc? */ SameAsImplicitReturn = (WalkState->ImplicitReturnObj == ReturnDesc); /* Are we actually going to use the return value? */ if (WalkState->ReturnUsed) { /* Save the return value from the previous method */ Status = AcpiDsResultPush (ReturnDesc, WalkState); if (ACPI_FAILURE (Status)) { AcpiUtRemoveReference (ReturnDesc); return_ACPI_STATUS (Status); } /* * Save as THIS method's return value in case it is returned * immediately to yet another method */ WalkState->ReturnDesc = ReturnDesc; } /* * The following code is the optional support for the so-called * "implicit return". Some AML code assumes that the last value of the * method is "implicitly" returned to the caller, in the absence of an * explicit return value. * * Just save the last result of the method as the return value. * * NOTE: this is optional because the ASL language does not actually * support this behavior. */ else if (!AcpiDsDoImplicitReturn (ReturnDesc, WalkState, FALSE) || SameAsImplicitReturn) { /* * Delete the return value if it will not be used by the * calling method or remove one reference if the explicit return * is the same as the implicit return value. */ AcpiUtRemoveReference (ReturnDesc); } } return_ACPI_STATUS (AE_OK); } /******************************************************************************* * * FUNCTION: AcpiDsTerminateControlMethod * * PARAMETERS: MethodDesc - Method object * WalkState - State associated with the method * * RETURN: None * * DESCRIPTION: Terminate a control method. Delete everything that the method * created, delete all locals and arguments, and delete the parse * tree if requested. * * MUTEX: Interpreter is locked * ******************************************************************************/ void AcpiDsTerminateControlMethod ( ACPI_OPERAND_OBJECT *MethodDesc, ACPI_WALK_STATE *WalkState) { ACPI_FUNCTION_TRACE_PTR (DsTerminateControlMethod, WalkState); /* MethodDesc is required, WalkState is optional */ if (!MethodDesc) { return_VOID; } if (WalkState) { /* Delete all arguments and locals */ AcpiDsMethodDataDeleteAll (WalkState); /* * If method is serialized, release the mutex and restore the * current sync level for this thread */ if (MethodDesc->Method.Mutex) { /* Acquisition Depth handles recursive calls */ MethodDesc->Method.Mutex->Mutex.AcquisitionDepth--; if (!MethodDesc->Method.Mutex->Mutex.AcquisitionDepth) { WalkState->Thread->CurrentSyncLevel = MethodDesc->Method.Mutex->Mutex.OriginalSyncLevel; AcpiOsReleaseMutex (MethodDesc->Method.Mutex->Mutex.OsMutex); MethodDesc->Method.Mutex->Mutex.ThreadId = 0; } } /* * Delete any namespace objects created anywhere within the * namespace by the execution of this method. Unless: * 1) This method is a module-level executable code method, in which * case we want make the objects permanent. * 2) There are other threads executing the method, in which case we * will wait until the last thread has completed. */ if (!(MethodDesc->Method.InfoFlags & ACPI_METHOD_MODULE_LEVEL) && (MethodDesc->Method.ThreadCount == 1)) { /* Delete any direct children of (created by) this method */ AcpiNsDeleteNamespaceSubtree (WalkState->MethodNode); /* * Delete any objects that were created by this method * elsewhere in the namespace (if any were created). * Use of the ACPI_METHOD_MODIFIED_NAMESPACE optimizes the * deletion such that we don't have to perform an entire * namespace walk for every control method execution. */ if (MethodDesc->Method.InfoFlags & ACPI_METHOD_MODIFIED_NAMESPACE) { AcpiNsDeleteNamespaceByOwner (MethodDesc->Method.OwnerId); MethodDesc->Method.InfoFlags &= ~ACPI_METHOD_MODIFIED_NAMESPACE; } } } /* Decrement the thread count on the method */ if (MethodDesc->Method.ThreadCount) { MethodDesc->Method.ThreadCount--; } else { ACPI_ERROR ((AE_INFO, "Invalid zero thread count in method")); } /* Are there any other threads currently executing this method? */ if (MethodDesc->Method.ThreadCount) { /* * Additional threads. Do not release the OwnerId in this case, * we immediately reuse it for the next thread executing this method */ ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, "*** Completed execution of one thread, %u threads remaining\n", MethodDesc->Method.ThreadCount)); } else { /* This is the only executing thread for this method */ /* * Support to dynamically change a method from NotSerialized to * Serialized if it appears that the method is incorrectly written and * does not support multiple thread execution. The best example of this * is if such a method creates namespace objects and blocks. A second * thread will fail with an AE_ALREADY_EXISTS exception. * * This code is here because we must wait until the last thread exits * before marking the method as serialized. */ if (MethodDesc->Method.InfoFlags & ACPI_METHOD_SERIALIZED_PENDING) { if (WalkState) { ACPI_INFO ((AE_INFO, "Marking method %4.4s as Serialized because of AE_ALREADY_EXISTS error", WalkState->MethodNode->Name.Ascii)); } /* * Method tried to create an object twice and was marked as * "pending serialized". The probable cause is that the method * cannot handle reentrancy. * * The method was created as NotSerialized, but it tried to create * a named object and then blocked, causing the second thread * entrance to begin and then fail. Workaround this problem by * marking the method permanently as Serialized when the last * thread exits here. */ MethodDesc->Method.InfoFlags &= ~ACPI_METHOD_SERIALIZED_PENDING; MethodDesc->Method.InfoFlags |= (ACPI_METHOD_SERIALIZED | ACPI_METHOD_IGNORE_SYNC_LEVEL); MethodDesc->Method.SyncLevel = 0; } /* No more threads, we can free the OwnerId */ if (!(MethodDesc->Method.InfoFlags & ACPI_METHOD_MODULE_LEVEL)) { AcpiUtReleaseOwnerId (&MethodDesc->Method.OwnerId); } } return_VOID; } src/acpica/source/components/dispatcher/dsmthdat.c000066400000000000000000000660771231470457100227000ustar00rootroot00000000000000/******************************************************************************* * * Module Name: dsmthdat - control method arguments and local variables * ******************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #define __DSMTHDAT_C__ #include "acpi.h" #include "accommon.h" #include "acdispat.h" #include "acnamesp.h" #include "acinterp.h" #define _COMPONENT ACPI_DISPATCHER ACPI_MODULE_NAME ("dsmthdat") /* Local prototypes */ static void AcpiDsMethodDataDeleteValue ( UINT8 Type, UINT32 Index, ACPI_WALK_STATE *WalkState); static ACPI_STATUS AcpiDsMethodDataSetValue ( UINT8 Type, UINT32 Index, ACPI_OPERAND_OBJECT *Object, ACPI_WALK_STATE *WalkState); #ifdef ACPI_OBSOLETE_FUNCTIONS ACPI_OBJECT_TYPE AcpiDsMethodDataGetType ( UINT16 Opcode, UINT32 Index, ACPI_WALK_STATE *WalkState); #endif /******************************************************************************* * * FUNCTION: AcpiDsMethodDataInit * * PARAMETERS: WalkState - Current walk state object * * RETURN: Status * * DESCRIPTION: Initialize the data structures that hold the method's arguments * and locals. The data struct is an array of namespace nodes for * each - this allows RefOf and DeRefOf to work properly for these * special data types. * * NOTES: WalkState fields are initialized to zero by the * ACPI_ALLOCATE_ZEROED(). * * A pseudo-Namespace Node is assigned to each argument and local * so that RefOf() can return a pointer to the Node. * ******************************************************************************/ void AcpiDsMethodDataInit ( ACPI_WALK_STATE *WalkState) { UINT32 i; ACPI_FUNCTION_TRACE (DsMethodDataInit); /* Init the method arguments */ for (i = 0; i < ACPI_METHOD_NUM_ARGS; i++) { ACPI_MOVE_32_TO_32 (&WalkState->Arguments[i].Name, NAMEOF_ARG_NTE); WalkState->Arguments[i].Name.Integer |= (i << 24); WalkState->Arguments[i].DescriptorType = ACPI_DESC_TYPE_NAMED; WalkState->Arguments[i].Type = ACPI_TYPE_ANY; WalkState->Arguments[i].Flags = ANOBJ_METHOD_ARG; } /* Init the method locals */ for (i = 0; i < ACPI_METHOD_NUM_LOCALS; i++) { ACPI_MOVE_32_TO_32 (&WalkState->LocalVariables[i].Name, NAMEOF_LOCAL_NTE); WalkState->LocalVariables[i].Name.Integer |= (i << 24); WalkState->LocalVariables[i].DescriptorType = ACPI_DESC_TYPE_NAMED; WalkState->LocalVariables[i].Type = ACPI_TYPE_ANY; WalkState->LocalVariables[i].Flags = ANOBJ_METHOD_LOCAL; } return_VOID; } /******************************************************************************* * * FUNCTION: AcpiDsMethodDataDeleteAll * * PARAMETERS: WalkState - Current walk state object * * RETURN: None * * DESCRIPTION: Delete method locals and arguments. Arguments are only * deleted if this method was called from another method. * ******************************************************************************/ void AcpiDsMethodDataDeleteAll ( ACPI_WALK_STATE *WalkState) { UINT32 Index; ACPI_FUNCTION_TRACE (DsMethodDataDeleteAll); /* Detach the locals */ for (Index = 0; Index < ACPI_METHOD_NUM_LOCALS; Index++) { if (WalkState->LocalVariables[Index].Object) { ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Deleting Local%u=%p\n", Index, WalkState->LocalVariables[Index].Object)); /* Detach object (if present) and remove a reference */ AcpiNsDetachObject (&WalkState->LocalVariables[Index]); } } /* Detach the arguments */ for (Index = 0; Index < ACPI_METHOD_NUM_ARGS; Index++) { if (WalkState->Arguments[Index].Object) { ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Deleting Arg%u=%p\n", Index, WalkState->Arguments[Index].Object)); /* Detach object (if present) and remove a reference */ AcpiNsDetachObject (&WalkState->Arguments[Index]); } } return_VOID; } /******************************************************************************* * * FUNCTION: AcpiDsMethodDataInitArgs * * PARAMETERS: *Params - Pointer to a parameter list for the method * MaxParamCount - The arg count for this method * WalkState - Current walk state object * * RETURN: Status * * DESCRIPTION: Initialize arguments for a method. The parameter list is a list * of ACPI operand objects, either null terminated or whose length * is defined by MaxParamCount. * ******************************************************************************/ ACPI_STATUS AcpiDsMethodDataInitArgs ( ACPI_OPERAND_OBJECT **Params, UINT32 MaxParamCount, ACPI_WALK_STATE *WalkState) { ACPI_STATUS Status; UINT32 Index = 0; ACPI_FUNCTION_TRACE_PTR (DsMethodDataInitArgs, Params); if (!Params) { ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "No param list passed to method\n")); return_ACPI_STATUS (AE_OK); } /* Copy passed parameters into the new method stack frame */ while ((Index < ACPI_METHOD_NUM_ARGS) && (Index < MaxParamCount) && Params[Index]) { /* * A valid parameter. * Store the argument in the method/walk descriptor. * Do not copy the arg in order to implement call by reference */ Status = AcpiDsMethodDataSetValue (ACPI_REFCLASS_ARG, Index, Params[Index], WalkState); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } Index++; } ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "%u args passed to method\n", Index)); return_ACPI_STATUS (AE_OK); } /******************************************************************************* * * FUNCTION: AcpiDsMethodDataGetNode * * PARAMETERS: Type - Either ACPI_REFCLASS_LOCAL or * ACPI_REFCLASS_ARG * Index - Which Local or Arg whose type to get * WalkState - Current walk state object * Node - Where the node is returned. * * RETURN: Status and node * * DESCRIPTION: Get the Node associated with a local or arg. * ******************************************************************************/ ACPI_STATUS AcpiDsMethodDataGetNode ( UINT8 Type, UINT32 Index, ACPI_WALK_STATE *WalkState, ACPI_NAMESPACE_NODE **Node) { ACPI_FUNCTION_TRACE (DsMethodDataGetNode); /* * Method Locals and Arguments are supported */ switch (Type) { case ACPI_REFCLASS_LOCAL: if (Index > ACPI_METHOD_MAX_LOCAL) { ACPI_ERROR ((AE_INFO, "Local index %u is invalid (max %u)", Index, ACPI_METHOD_MAX_LOCAL)); return_ACPI_STATUS (AE_AML_INVALID_INDEX); } /* Return a pointer to the pseudo-node */ *Node = &WalkState->LocalVariables[Index]; break; case ACPI_REFCLASS_ARG: if (Index > ACPI_METHOD_MAX_ARG) { ACPI_ERROR ((AE_INFO, "Arg index %u is invalid (max %u)", Index, ACPI_METHOD_MAX_ARG)); return_ACPI_STATUS (AE_AML_INVALID_INDEX); } /* Return a pointer to the pseudo-node */ *Node = &WalkState->Arguments[Index]; break; default: ACPI_ERROR ((AE_INFO, "Type %u is invalid", Type)); return_ACPI_STATUS (AE_TYPE); } return_ACPI_STATUS (AE_OK); } /******************************************************************************* * * FUNCTION: AcpiDsMethodDataSetValue * * PARAMETERS: Type - Either ACPI_REFCLASS_LOCAL or * ACPI_REFCLASS_ARG * Index - Which Local or Arg to get * Object - Object to be inserted into the stack entry * WalkState - Current walk state object * * RETURN: Status * * DESCRIPTION: Insert an object onto the method stack at entry Opcode:Index. * Note: There is no "implicit conversion" for locals. * ******************************************************************************/ static ACPI_STATUS AcpiDsMethodDataSetValue ( UINT8 Type, UINT32 Index, ACPI_OPERAND_OBJECT *Object, ACPI_WALK_STATE *WalkState) { ACPI_STATUS Status; ACPI_NAMESPACE_NODE *Node; ACPI_FUNCTION_TRACE (DsMethodDataSetValue); ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "NewObj %p Type %2.2X, Refs=%u [%s]\n", Object, Type, Object->Common.ReferenceCount, AcpiUtGetTypeName (Object->Common.Type))); /* Get the namespace node for the arg/local */ Status = AcpiDsMethodDataGetNode (Type, Index, WalkState, &Node); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } /* * Increment ref count so object can't be deleted while installed. * NOTE: We do not copy the object in order to preserve the call by * reference semantics of ACPI Control Method invocation. * (See ACPI Specification 2.0C) */ AcpiUtAddReference (Object); /* Install the object */ Node->Object = Object; return_ACPI_STATUS (Status); } /******************************************************************************* * * FUNCTION: AcpiDsMethodDataGetValue * * PARAMETERS: Type - Either ACPI_REFCLASS_LOCAL or * ACPI_REFCLASS_ARG * Index - Which localVar or argument to get * WalkState - Current walk state object * DestDesc - Where Arg or Local value is returned * * RETURN: Status * * DESCRIPTION: Retrieve value of selected Arg or Local for this method * Used only in AcpiExResolveToValue(). * ******************************************************************************/ ACPI_STATUS AcpiDsMethodDataGetValue ( UINT8 Type, UINT32 Index, ACPI_WALK_STATE *WalkState, ACPI_OPERAND_OBJECT **DestDesc) { ACPI_STATUS Status; ACPI_NAMESPACE_NODE *Node; ACPI_OPERAND_OBJECT *Object; ACPI_FUNCTION_TRACE (DsMethodDataGetValue); /* Validate the object descriptor */ if (!DestDesc) { ACPI_ERROR ((AE_INFO, "Null object descriptor pointer")); return_ACPI_STATUS (AE_BAD_PARAMETER); } /* Get the namespace node for the arg/local */ Status = AcpiDsMethodDataGetNode (Type, Index, WalkState, &Node); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } /* Get the object from the node */ Object = Node->Object; /* Examine the returned object, it must be valid. */ if (!Object) { /* * Index points to uninitialized object. * This means that either 1) The expected argument was * not passed to the method, or 2) A local variable * was referenced by the method (via the ASL) * before it was initialized. Either case is an error. */ /* If slack enabled, init the LocalX/ArgX to an Integer of value zero */ if (AcpiGbl_EnableInterpreterSlack) { Object = AcpiUtCreateIntegerObject ((UINT64) 0); if (!Object) { return_ACPI_STATUS (AE_NO_MEMORY); } Node->Object = Object; } /* Otherwise, return the error */ else switch (Type) { case ACPI_REFCLASS_ARG: ACPI_ERROR ((AE_INFO, "Uninitialized Arg[%u] at node %p", Index, Node)); return_ACPI_STATUS (AE_AML_UNINITIALIZED_ARG); case ACPI_REFCLASS_LOCAL: /* * No error message for this case, will be trapped again later to * detect and ignore cases of Store(LocalX,LocalX) */ return_ACPI_STATUS (AE_AML_UNINITIALIZED_LOCAL); default: ACPI_ERROR ((AE_INFO, "Not a Arg/Local opcode: 0x%X", Type)); return_ACPI_STATUS (AE_AML_INTERNAL); } } /* * The Index points to an initialized and valid object. * Return an additional reference to the object */ *DestDesc = Object; AcpiUtAddReference (Object); return_ACPI_STATUS (AE_OK); } /******************************************************************************* * * FUNCTION: AcpiDsMethodDataDeleteValue * * PARAMETERS: Type - Either ACPI_REFCLASS_LOCAL or * ACPI_REFCLASS_ARG * Index - Which localVar or argument to delete * WalkState - Current walk state object * * RETURN: None * * DESCRIPTION: Delete the entry at Opcode:Index. Inserts * a null into the stack slot after the object is deleted. * ******************************************************************************/ static void AcpiDsMethodDataDeleteValue ( UINT8 Type, UINT32 Index, ACPI_WALK_STATE *WalkState) { ACPI_STATUS Status; ACPI_NAMESPACE_NODE *Node; ACPI_OPERAND_OBJECT *Object; ACPI_FUNCTION_TRACE (DsMethodDataDeleteValue); /* Get the namespace node for the arg/local */ Status = AcpiDsMethodDataGetNode (Type, Index, WalkState, &Node); if (ACPI_FAILURE (Status)) { return_VOID; } /* Get the associated object */ Object = AcpiNsGetAttachedObject (Node); /* * Undefine the Arg or Local by setting its descriptor * pointer to NULL. Locals/Args can contain both * ACPI_OPERAND_OBJECTS and ACPI_NAMESPACE_NODEs */ Node->Object = NULL; if ((Object) && (ACPI_GET_DESCRIPTOR_TYPE (Object) == ACPI_DESC_TYPE_OPERAND)) { /* * There is a valid object. * Decrement the reference count by one to balance the * increment when the object was stored. */ AcpiUtRemoveReference (Object); } return_VOID; } /******************************************************************************* * * FUNCTION: AcpiDsStoreObjectToLocal * * PARAMETERS: Type - Either ACPI_REFCLASS_LOCAL or * ACPI_REFCLASS_ARG * Index - Which Local or Arg to set * ObjDesc - Value to be stored * WalkState - Current walk state * * RETURN: Status * * DESCRIPTION: Store a value in an Arg or Local. The ObjDesc is installed * as the new value for the Arg or Local and the reference count * for ObjDesc is incremented. * ******************************************************************************/ ACPI_STATUS AcpiDsStoreObjectToLocal ( UINT8 Type, UINT32 Index, ACPI_OPERAND_OBJECT *ObjDesc, ACPI_WALK_STATE *WalkState) { ACPI_STATUS Status; ACPI_NAMESPACE_NODE *Node; ACPI_OPERAND_OBJECT *CurrentObjDesc; ACPI_OPERAND_OBJECT *NewObjDesc; ACPI_FUNCTION_TRACE (DsStoreObjectToLocal); ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Type=%2.2X Index=%u Obj=%p\n", Type, Index, ObjDesc)); /* Parameter validation */ if (!ObjDesc) { return_ACPI_STATUS (AE_BAD_PARAMETER); } /* Get the namespace node for the arg/local */ Status = AcpiDsMethodDataGetNode (Type, Index, WalkState, &Node); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } CurrentObjDesc = AcpiNsGetAttachedObject (Node); if (CurrentObjDesc == ObjDesc) { ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Obj=%p already installed!\n", ObjDesc)); return_ACPI_STATUS (Status); } /* * If the reference count on the object is more than one, we must * take a copy of the object before we store. A reference count * of exactly 1 means that the object was just created during the * evaluation of an expression, and we can safely use it since it * is not used anywhere else. */ NewObjDesc = ObjDesc; if (ObjDesc->Common.ReferenceCount > 1) { Status = AcpiUtCopyIobjectToIobject (ObjDesc, &NewObjDesc, WalkState); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } } /* * If there is an object already in this slot, we either * have to delete it, or if this is an argument and there * is an object reference stored there, we have to do * an indirect store! */ if (CurrentObjDesc) { /* * Check for an indirect store if an argument * contains an object reference (stored as an Node). * We don't allow this automatic dereferencing for * locals, since a store to a local should overwrite * anything there, including an object reference. * * If both Arg0 and Local0 contain RefOf (Local4): * * Store (1, Arg0) - Causes indirect store to local4 * Store (1, Local0) - Stores 1 in local0, overwriting * the reference to local4 * Store (1, DeRefof (Local0)) - Causes indirect store to local4 * * Weird, but true. */ if (Type == ACPI_REFCLASS_ARG) { /* * If we have a valid reference object that came from RefOf(), * do the indirect store */ if ((ACPI_GET_DESCRIPTOR_TYPE (CurrentObjDesc) == ACPI_DESC_TYPE_OPERAND) && (CurrentObjDesc->Common.Type == ACPI_TYPE_LOCAL_REFERENCE) && (CurrentObjDesc->Reference.Class == ACPI_REFCLASS_REFOF)) { ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Arg (%p) is an ObjRef(Node), storing in node %p\n", NewObjDesc, CurrentObjDesc)); /* * Store this object to the Node (perform the indirect store) * NOTE: No implicit conversion is performed, as per the ACPI * specification rules on storing to Locals/Args. */ Status = AcpiExStoreObjectToNode (NewObjDesc, CurrentObjDesc->Reference.Object, WalkState, ACPI_NO_IMPLICIT_CONVERSION); /* Remove local reference if we copied the object above */ if (NewObjDesc != ObjDesc) { AcpiUtRemoveReference (NewObjDesc); } return_ACPI_STATUS (Status); } } /* Delete the existing object before storing the new one */ AcpiDsMethodDataDeleteValue (Type, Index, WalkState); } /* * Install the Obj descriptor (*NewObjDesc) into * the descriptor for the Arg or Local. * (increments the object reference count by one) */ Status = AcpiDsMethodDataSetValue (Type, Index, NewObjDesc, WalkState); /* Remove local reference if we copied the object above */ if (NewObjDesc != ObjDesc) { AcpiUtRemoveReference (NewObjDesc); } return_ACPI_STATUS (Status); } #ifdef ACPI_OBSOLETE_FUNCTIONS /******************************************************************************* * * FUNCTION: AcpiDsMethodDataGetType * * PARAMETERS: Opcode - Either AML_LOCAL_OP or AML_ARG_OP * Index - Which Local or Arg whose type to get * WalkState - Current walk state object * * RETURN: Data type of current value of the selected Arg or Local * * DESCRIPTION: Get the type of the object stored in the Local or Arg * ******************************************************************************/ ACPI_OBJECT_TYPE AcpiDsMethodDataGetType ( UINT16 Opcode, UINT32 Index, ACPI_WALK_STATE *WalkState) { ACPI_STATUS Status; ACPI_NAMESPACE_NODE *Node; ACPI_OPERAND_OBJECT *Object; ACPI_FUNCTION_TRACE (DsMethodDataGetType); /* Get the namespace node for the arg/local */ Status = AcpiDsMethodDataGetNode (Opcode, Index, WalkState, &Node); if (ACPI_FAILURE (Status)) { return_VALUE ((ACPI_TYPE_NOT_FOUND)); } /* Get the object */ Object = AcpiNsGetAttachedObject (Node); if (!Object) { /* Uninitialized local/arg, return TYPE_ANY */ return_VALUE (ACPI_TYPE_ANY); } /* Get the object type */ return_VALUE (Object->Type); } #endif src/acpica/source/components/dispatcher/dsobject.c000066400000000000000000000775131231470457100226620ustar00rootroot00000000000000/****************************************************************************** * * Module Name: dsobject - Dispatcher object management routines * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #define __DSOBJECT_C__ #include "acpi.h" #include "accommon.h" #include "acparser.h" #include "amlcode.h" #include "acdispat.h" #include "acnamesp.h" #include "acinterp.h" #define _COMPONENT ACPI_DISPATCHER ACPI_MODULE_NAME ("dsobject") /* Local prototypes */ static ACPI_STATUS AcpiDsBuildInternalObject ( ACPI_WALK_STATE *WalkState, ACPI_PARSE_OBJECT *Op, ACPI_OPERAND_OBJECT **ObjDescPtr); #ifndef ACPI_NO_METHOD_EXECUTION /******************************************************************************* * * FUNCTION: AcpiDsBuildInternalObject * * PARAMETERS: WalkState - Current walk state * Op - Parser object to be translated * ObjDescPtr - Where the ACPI internal object is returned * * RETURN: Status * * DESCRIPTION: Translate a parser Op object to the equivalent namespace object * Simple objects are any objects other than a package object! * ******************************************************************************/ static ACPI_STATUS AcpiDsBuildInternalObject ( ACPI_WALK_STATE *WalkState, ACPI_PARSE_OBJECT *Op, ACPI_OPERAND_OBJECT **ObjDescPtr) { ACPI_OPERAND_OBJECT *ObjDesc; ACPI_STATUS Status; ACPI_OBJECT_TYPE Type; ACPI_FUNCTION_TRACE (DsBuildInternalObject); *ObjDescPtr = NULL; if (Op->Common.AmlOpcode == AML_INT_NAMEPATH_OP) { /* * This is a named object reference. If this name was * previously looked up in the namespace, it was stored in this op. * Otherwise, go ahead and look it up now */ if (!Op->Common.Node) { Status = AcpiNsLookup (WalkState->ScopeInfo, Op->Common.Value.String, ACPI_TYPE_ANY, ACPI_IMODE_EXECUTE, ACPI_NS_SEARCH_PARENT | ACPI_NS_DONT_OPEN_SCOPE, NULL, ACPI_CAST_INDIRECT_PTR (ACPI_NAMESPACE_NODE, &(Op->Common.Node))); if (ACPI_FAILURE (Status)) { /* Check if we are resolving a named reference within a package */ if ((Status == AE_NOT_FOUND) && (AcpiGbl_EnableInterpreterSlack) && ((Op->Common.Parent->Common.AmlOpcode == AML_PACKAGE_OP) || (Op->Common.Parent->Common.AmlOpcode == AML_VAR_PACKAGE_OP))) { /* * We didn't find the target and we are populating elements * of a package - ignore if slack enabled. Some ASL code * contains dangling invalid references in packages and * expects that no exception will be issued. Leave the * element as a null element. It cannot be used, but it * can be overwritten by subsequent ASL code - this is * typically the case. */ ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Ignoring unresolved reference in package [%4.4s]\n", WalkState->ScopeInfo->Scope.Node->Name.Ascii)); return_ACPI_STATUS (AE_OK); } else { ACPI_ERROR_NAMESPACE (Op->Common.Value.String, Status); } return_ACPI_STATUS (Status); } } /* Special object resolution for elements of a package */ if ((Op->Common.Parent->Common.AmlOpcode == AML_PACKAGE_OP) || (Op->Common.Parent->Common.AmlOpcode == AML_VAR_PACKAGE_OP)) { /* * Attempt to resolve the node to a value before we insert it into * the package. If this is a reference to a common data type, * resolve it immediately. According to the ACPI spec, package * elements can only be "data objects" or method references. * Attempt to resolve to an Integer, Buffer, String or Package. * If cannot, return the named reference (for things like Devices, * Methods, etc.) Buffer Fields and Fields will resolve to simple * objects (int/buf/str/pkg). * * NOTE: References to things like Devices, Methods, Mutexes, etc. * will remain as named references. This behavior is not described * in the ACPI spec, but it appears to be an oversight. */ ObjDesc = ACPI_CAST_PTR (ACPI_OPERAND_OBJECT, Op->Common.Node); Status = AcpiExResolveNodeToValue ( ACPI_CAST_INDIRECT_PTR (ACPI_NAMESPACE_NODE, &ObjDesc), WalkState); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } /* * Special handling for Alias objects. We need to setup the type * and the Op->Common.Node to point to the Alias target. Note, * Alias has at most one level of indirection internally. */ Type = Op->Common.Node->Type; if (Type == ACPI_TYPE_LOCAL_ALIAS) { Type = ObjDesc->Common.Type; Op->Common.Node = ACPI_CAST_PTR (ACPI_NAMESPACE_NODE, Op->Common.Node->Object); } switch (Type) { /* * For these types, we need the actual node, not the subobject. * However, the subobject did not get an extra reference count above. * * TBD: should ExResolveNodeToValue be changed to fix this? */ case ACPI_TYPE_DEVICE: case ACPI_TYPE_THERMAL: AcpiUtAddReference (Op->Common.Node->Object); /*lint -fallthrough */ /* * For these types, we need the actual node, not the subobject. * The subobject got an extra reference count in ExResolveNodeToValue. */ case ACPI_TYPE_MUTEX: case ACPI_TYPE_METHOD: case ACPI_TYPE_POWER: case ACPI_TYPE_PROCESSOR: case ACPI_TYPE_EVENT: case ACPI_TYPE_REGION: /* We will create a reference object for these types below */ break; default: /* * All other types - the node was resolved to an actual * object, we are done. */ goto Exit; } } } /* Create and init a new internal ACPI object */ ObjDesc = AcpiUtCreateInternalObject ( (AcpiPsGetOpcodeInfo (Op->Common.AmlOpcode))->ObjectType); if (!ObjDesc) { return_ACPI_STATUS (AE_NO_MEMORY); } Status = AcpiDsInitObjectFromOp (WalkState, Op, Op->Common.AmlOpcode, &ObjDesc); if (ACPI_FAILURE (Status)) { AcpiUtRemoveReference (ObjDesc); return_ACPI_STATUS (Status); } Exit: *ObjDescPtr = ObjDesc; return_ACPI_STATUS (Status); } /******************************************************************************* * * FUNCTION: AcpiDsBuildInternalBufferObj * * PARAMETERS: WalkState - Current walk state * Op - Parser object to be translated * BufferLength - Length of the buffer * ObjDescPtr - Where the ACPI internal object is returned * * RETURN: Status * * DESCRIPTION: Translate a parser Op package object to the equivalent * namespace object * ******************************************************************************/ ACPI_STATUS AcpiDsBuildInternalBufferObj ( ACPI_WALK_STATE *WalkState, ACPI_PARSE_OBJECT *Op, UINT32 BufferLength, ACPI_OPERAND_OBJECT **ObjDescPtr) { ACPI_PARSE_OBJECT *Arg; ACPI_OPERAND_OBJECT *ObjDesc; ACPI_PARSE_OBJECT *ByteList; UINT32 ByteListLength = 0; ACPI_FUNCTION_TRACE (DsBuildInternalBufferObj); /* * If we are evaluating a Named buffer object "Name (xxxx, Buffer)". * The buffer object already exists (from the NS node), otherwise it must * be created. */ ObjDesc = *ObjDescPtr; if (!ObjDesc) { /* Create a new buffer object */ ObjDesc = AcpiUtCreateInternalObject (ACPI_TYPE_BUFFER); *ObjDescPtr = ObjDesc; if (!ObjDesc) { return_ACPI_STATUS (AE_NO_MEMORY); } } /* * Second arg is the buffer data (optional) ByteList can be either * individual bytes or a string initializer. In either case, a * ByteList appears in the AML. */ Arg = Op->Common.Value.Arg; /* skip first arg */ ByteList = Arg->Named.Next; if (ByteList) { if (ByteList->Common.AmlOpcode != AML_INT_BYTELIST_OP) { ACPI_ERROR ((AE_INFO, "Expecting bytelist, found AML opcode 0x%X in op %p", ByteList->Common.AmlOpcode, ByteList)); AcpiUtRemoveReference (ObjDesc); return (AE_TYPE); } ByteListLength = (UINT32) ByteList->Common.Value.Integer; } /* * The buffer length (number of bytes) will be the larger of: * 1) The specified buffer length and * 2) The length of the initializer byte list */ ObjDesc->Buffer.Length = BufferLength; if (ByteListLength > BufferLength) { ObjDesc->Buffer.Length = ByteListLength; } /* Allocate the buffer */ if (ObjDesc->Buffer.Length == 0) { ObjDesc->Buffer.Pointer = NULL; ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Buffer defined with zero length in AML, creating\n")); } else { ObjDesc->Buffer.Pointer = ACPI_ALLOCATE_ZEROED ( ObjDesc->Buffer.Length); if (!ObjDesc->Buffer.Pointer) { AcpiUtDeleteObjectDesc (ObjDesc); return_ACPI_STATUS (AE_NO_MEMORY); } /* Initialize buffer from the ByteList (if present) */ if (ByteList) { ACPI_MEMCPY (ObjDesc->Buffer.Pointer, ByteList->Named.Data, ByteListLength); } } ObjDesc->Buffer.Flags |= AOPOBJ_DATA_VALID; Op->Common.Node = ACPI_CAST_PTR (ACPI_NAMESPACE_NODE, ObjDesc); return_ACPI_STATUS (AE_OK); } /******************************************************************************* * * FUNCTION: AcpiDsBuildInternalPackageObj * * PARAMETERS: WalkState - Current walk state * Op - Parser object to be translated * ElementCount - Number of elements in the package - this is * the NumElements argument to Package() * ObjDescPtr - Where the ACPI internal object is returned * * RETURN: Status * * DESCRIPTION: Translate a parser Op package object to the equivalent * namespace object * * NOTE: The number of elements in the package will be always be the NumElements * count, regardless of the number of elements in the package list. If * NumElements is smaller, only that many package list elements are used. * if NumElements is larger, the Package object is padded out with * objects of type Uninitialized (as per ACPI spec.) * * Even though the ASL compilers do not allow NumElements to be smaller * than the Package list length (for the fixed length package opcode), some * BIOS code modifies the AML on the fly to adjust the NumElements, and * this code compensates for that. This also provides compatibility with * other AML interpreters. * ******************************************************************************/ ACPI_STATUS AcpiDsBuildInternalPackageObj ( ACPI_WALK_STATE *WalkState, ACPI_PARSE_OBJECT *Op, UINT32 ElementCount, ACPI_OPERAND_OBJECT **ObjDescPtr) { ACPI_PARSE_OBJECT *Arg; ACPI_PARSE_OBJECT *Parent; ACPI_OPERAND_OBJECT *ObjDesc = NULL; ACPI_STATUS Status = AE_OK; UINT32 i; UINT16 Index; UINT16 ReferenceCount; ACPI_FUNCTION_TRACE (DsBuildInternalPackageObj); /* Find the parent of a possibly nested package */ Parent = Op->Common.Parent; while ((Parent->Common.AmlOpcode == AML_PACKAGE_OP) || (Parent->Common.AmlOpcode == AML_VAR_PACKAGE_OP)) { Parent = Parent->Common.Parent; } /* * If we are evaluating a Named package object "Name (xxxx, Package)", * the package object already exists, otherwise it must be created. */ ObjDesc = *ObjDescPtr; if (!ObjDesc) { ObjDesc = AcpiUtCreateInternalObject (ACPI_TYPE_PACKAGE); *ObjDescPtr = ObjDesc; if (!ObjDesc) { return_ACPI_STATUS (AE_NO_MEMORY); } ObjDesc->Package.Node = Parent->Common.Node; } /* * Allocate the element array (array of pointers to the individual * objects) based on the NumElements parameter. Add an extra pointer slot * so that the list is always null terminated. */ ObjDesc->Package.Elements = ACPI_ALLOCATE_ZEROED ( ((ACPI_SIZE) ElementCount + 1) * sizeof (void *)); if (!ObjDesc->Package.Elements) { AcpiUtDeleteObjectDesc (ObjDesc); return_ACPI_STATUS (AE_NO_MEMORY); } ObjDesc->Package.Count = ElementCount; /* * Initialize the elements of the package, up to the NumElements count. * Package is automatically padded with uninitialized (NULL) elements * if NumElements is greater than the package list length. Likewise, * Package is truncated if NumElements is less than the list length. */ Arg = Op->Common.Value.Arg; Arg = Arg->Common.Next; for (i = 0; Arg && (i < ElementCount); i++) { if (Arg->Common.AmlOpcode == AML_INT_RETURN_VALUE_OP) { if (Arg->Common.Node->Type == ACPI_TYPE_METHOD) { /* * A method reference "looks" to the parser to be a method * invocation, so we special case it here */ Arg->Common.AmlOpcode = AML_INT_NAMEPATH_OP; Status = AcpiDsBuildInternalObject (WalkState, Arg, &ObjDesc->Package.Elements[i]); } else { /* This package element is already built, just get it */ ObjDesc->Package.Elements[i] = ACPI_CAST_PTR (ACPI_OPERAND_OBJECT, Arg->Common.Node); } } else { Status = AcpiDsBuildInternalObject (WalkState, Arg, &ObjDesc->Package.Elements[i]); } if (*ObjDescPtr) { /* Existing package, get existing reference count */ ReferenceCount = (*ObjDescPtr)->Common.ReferenceCount; if (ReferenceCount > 1) { /* Make new element ref count match original ref count */ for (Index = 0; Index < (ReferenceCount - 1); Index++) { AcpiUtAddReference ((ObjDesc->Package.Elements[i])); } } } Arg = Arg->Common.Next; } /* Check for match between NumElements and actual length of PackageList */ if (Arg) { /* * NumElements was exhausted, but there are remaining elements in the * PackageList. Truncate the package to NumElements. * * Note: technically, this is an error, from ACPI spec: "It is an error * for NumElements to be less than the number of elements in the * PackageList". However, we just print a message and * no exception is returned. This provides Windows compatibility. Some * BIOSs will alter the NumElements on the fly, creating this type * of ill-formed package object. */ while (Arg) { /* * We must delete any package elements that were created earlier * and are not going to be used because of the package truncation. */ if (Arg->Common.Node) { AcpiUtRemoveReference ( ACPI_CAST_PTR (ACPI_OPERAND_OBJECT, Arg->Common.Node)); Arg->Common.Node = NULL; } /* Find out how many elements there really are */ i++; Arg = Arg->Common.Next; } ACPI_INFO ((AE_INFO, "Actual Package length (%u) is larger than NumElements field (%u), truncated", i, ElementCount)); } else if (i < ElementCount) { /* * Arg list (elements) was exhausted, but we did not reach NumElements count. * Note: this is not an error, the package is padded out with NULLs. */ ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Package List length (%u) smaller than NumElements count (%u), padded with null elements\n", i, ElementCount)); } ObjDesc->Package.Flags |= AOPOBJ_DATA_VALID; Op->Common.Node = ACPI_CAST_PTR (ACPI_NAMESPACE_NODE, ObjDesc); return_ACPI_STATUS (Status); } /******************************************************************************* * * FUNCTION: AcpiDsCreateNode * * PARAMETERS: WalkState - Current walk state * Node - NS Node to be initialized * Op - Parser object to be translated * * RETURN: Status * * DESCRIPTION: Create the object to be associated with a namespace node * ******************************************************************************/ ACPI_STATUS AcpiDsCreateNode ( ACPI_WALK_STATE *WalkState, ACPI_NAMESPACE_NODE *Node, ACPI_PARSE_OBJECT *Op) { ACPI_STATUS Status; ACPI_OPERAND_OBJECT *ObjDesc; ACPI_FUNCTION_TRACE_PTR (DsCreateNode, Op); /* * Because of the execution pass through the non-control-method * parts of the table, we can arrive here twice. Only init * the named object node the first time through */ if (AcpiNsGetAttachedObject (Node)) { return_ACPI_STATUS (AE_OK); } if (!Op->Common.Value.Arg) { /* No arguments, there is nothing to do */ return_ACPI_STATUS (AE_OK); } /* Build an internal object for the argument(s) */ Status = AcpiDsBuildInternalObject (WalkState, Op->Common.Value.Arg, &ObjDesc); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } /* Re-type the object according to its argument */ Node->Type = ObjDesc->Common.Type; /* Attach obj to node */ Status = AcpiNsAttachObject (Node, ObjDesc, Node->Type); /* Remove local reference to the object */ AcpiUtRemoveReference (ObjDesc); return_ACPI_STATUS (Status); } #endif /* ACPI_NO_METHOD_EXECUTION */ /******************************************************************************* * * FUNCTION: AcpiDsInitObjectFromOp * * PARAMETERS: WalkState - Current walk state * Op - Parser op used to init the internal object * Opcode - AML opcode associated with the object * RetObjDesc - Namespace object to be initialized * * RETURN: Status * * DESCRIPTION: Initialize a namespace object from a parser Op and its * associated arguments. The namespace object is a more compact * representation of the Op and its arguments. * ******************************************************************************/ ACPI_STATUS AcpiDsInitObjectFromOp ( ACPI_WALK_STATE *WalkState, ACPI_PARSE_OBJECT *Op, UINT16 Opcode, ACPI_OPERAND_OBJECT **RetObjDesc) { const ACPI_OPCODE_INFO *OpInfo; ACPI_OPERAND_OBJECT *ObjDesc; ACPI_STATUS Status = AE_OK; ACPI_FUNCTION_TRACE (DsInitObjectFromOp); ObjDesc = *RetObjDesc; OpInfo = AcpiPsGetOpcodeInfo (Opcode); if (OpInfo->Class == AML_CLASS_UNKNOWN) { /* Unknown opcode */ return_ACPI_STATUS (AE_TYPE); } /* Perform per-object initialization */ switch (ObjDesc->Common.Type) { case ACPI_TYPE_BUFFER: /* * Defer evaluation of Buffer TermArg operand */ ObjDesc->Buffer.Node = ACPI_CAST_PTR (ACPI_NAMESPACE_NODE, WalkState->Operands[0]); ObjDesc->Buffer.AmlStart = Op->Named.Data; ObjDesc->Buffer.AmlLength = Op->Named.Length; break; case ACPI_TYPE_PACKAGE: /* * Defer evaluation of Package TermArg operand */ ObjDesc->Package.Node = ACPI_CAST_PTR (ACPI_NAMESPACE_NODE, WalkState->Operands[0]); ObjDesc->Package.AmlStart = Op->Named.Data; ObjDesc->Package.AmlLength = Op->Named.Length; break; case ACPI_TYPE_INTEGER: switch (OpInfo->Type) { case AML_TYPE_CONSTANT: /* * Resolve AML Constants here - AND ONLY HERE! * All constants are integers. * We mark the integer with a flag that indicates that it started * life as a constant -- so that stores to constants will perform * as expected (noop). ZeroOp is used as a placeholder for optional * target operands. */ ObjDesc->Common.Flags = AOPOBJ_AML_CONSTANT; switch (Opcode) { case AML_ZERO_OP: ObjDesc->Integer.Value = 0; break; case AML_ONE_OP: ObjDesc->Integer.Value = 1; break; case AML_ONES_OP: ObjDesc->Integer.Value = ACPI_UINT64_MAX; /* Truncate value if we are executing from a 32-bit ACPI table */ #ifndef ACPI_NO_METHOD_EXECUTION (void) AcpiExTruncateFor32bitTable (ObjDesc); #endif break; case AML_REVISION_OP: ObjDesc->Integer.Value = ACPI_CA_VERSION; break; default: ACPI_ERROR ((AE_INFO, "Unknown constant opcode 0x%X", Opcode)); Status = AE_AML_OPERAND_TYPE; break; } break; case AML_TYPE_LITERAL: ObjDesc->Integer.Value = Op->Common.Value.Integer; #ifndef ACPI_NO_METHOD_EXECUTION if (AcpiExTruncateFor32bitTable (ObjDesc)) { /* Warn if we found a 64-bit constant in a 32-bit table */ ACPI_WARNING ((AE_INFO, "Truncated 64-bit constant found in 32-bit table: %8.8X%8.8X => %8.8X", ACPI_FORMAT_UINT64 (Op->Common.Value.Integer), (UINT32) ObjDesc->Integer.Value)); } #endif break; default: ACPI_ERROR ((AE_INFO, "Unknown Integer type 0x%X", OpInfo->Type)); Status = AE_AML_OPERAND_TYPE; break; } break; case ACPI_TYPE_STRING: ObjDesc->String.Pointer = Op->Common.Value.String; ObjDesc->String.Length = (UINT32) ACPI_STRLEN (Op->Common.Value.String); /* * The string is contained in the ACPI table, don't ever try * to delete it */ ObjDesc->Common.Flags |= AOPOBJ_STATIC_POINTER; break; case ACPI_TYPE_METHOD: break; case ACPI_TYPE_LOCAL_REFERENCE: switch (OpInfo->Type) { case AML_TYPE_LOCAL_VARIABLE: /* Local ID (0-7) is (AML opcode - base AML_LOCAL_OP) */ ObjDesc->Reference.Value = ((UINT32) Opcode) - AML_LOCAL_OP; ObjDesc->Reference.Class = ACPI_REFCLASS_LOCAL; #ifndef ACPI_NO_METHOD_EXECUTION Status = AcpiDsMethodDataGetNode (ACPI_REFCLASS_LOCAL, ObjDesc->Reference.Value, WalkState, ACPI_CAST_INDIRECT_PTR (ACPI_NAMESPACE_NODE, &ObjDesc->Reference.Object)); #endif break; case AML_TYPE_METHOD_ARGUMENT: /* Arg ID (0-6) is (AML opcode - base AML_ARG_OP) */ ObjDesc->Reference.Value = ((UINT32) Opcode) - AML_ARG_OP; ObjDesc->Reference.Class = ACPI_REFCLASS_ARG; #ifndef ACPI_NO_METHOD_EXECUTION Status = AcpiDsMethodDataGetNode (ACPI_REFCLASS_ARG, ObjDesc->Reference.Value, WalkState, ACPI_CAST_INDIRECT_PTR (ACPI_NAMESPACE_NODE, &ObjDesc->Reference.Object)); #endif break; default: /* Object name or Debug object */ switch (Op->Common.AmlOpcode) { case AML_INT_NAMEPATH_OP: /* Node was saved in Op */ ObjDesc->Reference.Node = Op->Common.Node; ObjDesc->Reference.Object = Op->Common.Node->Object; ObjDesc->Reference.Class = ACPI_REFCLASS_NAME; break; case AML_DEBUG_OP: ObjDesc->Reference.Class = ACPI_REFCLASS_DEBUG; break; default: ACPI_ERROR ((AE_INFO, "Unimplemented reference type for AML opcode: 0x%4.4X", Opcode)); return_ACPI_STATUS (AE_AML_OPERAND_TYPE); } break; } break; default: ACPI_ERROR ((AE_INFO, "Unimplemented data type: 0x%X", ObjDesc->Common.Type)); Status = AE_AML_OPERAND_TYPE; break; } return_ACPI_STATUS (Status); } src/acpica/source/components/dispatcher/dsopcode.c000066400000000000000000000641561231470457100226640ustar00rootroot00000000000000/****************************************************************************** * * Module Name: dsopcode - Dispatcher support for regions and fields * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #define __DSOPCODE_C__ #include "acpi.h" #include "accommon.h" #include "acparser.h" #include "amlcode.h" #include "acdispat.h" #include "acinterp.h" #include "acnamesp.h" #include "acevents.h" #include "actables.h" #define _COMPONENT ACPI_DISPATCHER ACPI_MODULE_NAME ("dsopcode") /* Local prototypes */ static ACPI_STATUS AcpiDsInitBufferField ( UINT16 AmlOpcode, ACPI_OPERAND_OBJECT *ObjDesc, ACPI_OPERAND_OBJECT *BufferDesc, ACPI_OPERAND_OBJECT *OffsetDesc, ACPI_OPERAND_OBJECT *LengthDesc, ACPI_OPERAND_OBJECT *ResultDesc); /******************************************************************************* * * FUNCTION: AcpiDsInitializeRegion * * PARAMETERS: ObjHandle - Region namespace node * * RETURN: Status * * DESCRIPTION: Front end to EvInitializeRegion * ******************************************************************************/ ACPI_STATUS AcpiDsInitializeRegion ( ACPI_HANDLE ObjHandle) { ACPI_OPERAND_OBJECT *ObjDesc; ACPI_STATUS Status; ObjDesc = AcpiNsGetAttachedObject (ObjHandle); /* Namespace is NOT locked */ Status = AcpiEvInitializeRegion (ObjDesc, FALSE); return (Status); } /******************************************************************************* * * FUNCTION: AcpiDsInitBufferField * * PARAMETERS: AmlOpcode - CreateXxxField * ObjDesc - BufferField object * BufferDesc - Host Buffer * OffsetDesc - Offset into buffer * LengthDesc - Length of field (CREATE_FIELD_OP only) * ResultDesc - Where to store the result * * RETURN: Status * * DESCRIPTION: Perform actual initialization of a buffer field * ******************************************************************************/ static ACPI_STATUS AcpiDsInitBufferField ( UINT16 AmlOpcode, ACPI_OPERAND_OBJECT *ObjDesc, ACPI_OPERAND_OBJECT *BufferDesc, ACPI_OPERAND_OBJECT *OffsetDesc, ACPI_OPERAND_OBJECT *LengthDesc, ACPI_OPERAND_OBJECT *ResultDesc) { UINT32 Offset; UINT32 BitOffset; UINT32 BitCount; UINT8 FieldFlags; ACPI_STATUS Status; ACPI_FUNCTION_TRACE_PTR (DsInitBufferField, ObjDesc); /* Host object must be a Buffer */ if (BufferDesc->Common.Type != ACPI_TYPE_BUFFER) { ACPI_ERROR ((AE_INFO, "Target of Create Field is not a Buffer object - %s", AcpiUtGetObjectTypeName (BufferDesc))); Status = AE_AML_OPERAND_TYPE; goto Cleanup; } /* * The last parameter to all of these opcodes (ResultDesc) started * out as a NameString, and should therefore now be a NS node * after resolution in AcpiExResolveOperands(). */ if (ACPI_GET_DESCRIPTOR_TYPE (ResultDesc) != ACPI_DESC_TYPE_NAMED) { ACPI_ERROR ((AE_INFO, "(%s) destination not a NS Node [%s]", AcpiPsGetOpcodeName (AmlOpcode), AcpiUtGetDescriptorName (ResultDesc))); Status = AE_AML_OPERAND_TYPE; goto Cleanup; } Offset = (UINT32) OffsetDesc->Integer.Value; /* * Setup the Bit offsets and counts, according to the opcode */ switch (AmlOpcode) { case AML_CREATE_FIELD_OP: /* Offset is in bits, count is in bits */ FieldFlags = AML_FIELD_ACCESS_BYTE; BitOffset = Offset; BitCount = (UINT32) LengthDesc->Integer.Value; /* Must have a valid (>0) bit count */ if (BitCount == 0) { ACPI_ERROR ((AE_INFO, "Attempt to CreateField of length zero")); Status = AE_AML_OPERAND_VALUE; goto Cleanup; } break; case AML_CREATE_BIT_FIELD_OP: /* Offset is in bits, Field is one bit */ BitOffset = Offset; BitCount = 1; FieldFlags = AML_FIELD_ACCESS_BYTE; break; case AML_CREATE_BYTE_FIELD_OP: /* Offset is in bytes, field is one byte */ BitOffset = 8 * Offset; BitCount = 8; FieldFlags = AML_FIELD_ACCESS_BYTE; break; case AML_CREATE_WORD_FIELD_OP: /* Offset is in bytes, field is one word */ BitOffset = 8 * Offset; BitCount = 16; FieldFlags = AML_FIELD_ACCESS_WORD; break; case AML_CREATE_DWORD_FIELD_OP: /* Offset is in bytes, field is one dword */ BitOffset = 8 * Offset; BitCount = 32; FieldFlags = AML_FIELD_ACCESS_DWORD; break; case AML_CREATE_QWORD_FIELD_OP: /* Offset is in bytes, field is one qword */ BitOffset = 8 * Offset; BitCount = 64; FieldFlags = AML_FIELD_ACCESS_QWORD; break; default: ACPI_ERROR ((AE_INFO, "Unknown field creation opcode 0x%02X", AmlOpcode)); Status = AE_AML_BAD_OPCODE; goto Cleanup; } /* Entire field must fit within the current length of the buffer */ if ((BitOffset + BitCount) > (8 * (UINT32) BufferDesc->Buffer.Length)) { ACPI_ERROR ((AE_INFO, "Field [%4.4s] at %u exceeds Buffer [%4.4s] size %u (bits)", AcpiUtGetNodeName (ResultDesc), BitOffset + BitCount, AcpiUtGetNodeName (BufferDesc->Buffer.Node), 8 * (UINT32) BufferDesc->Buffer.Length)); Status = AE_AML_BUFFER_LIMIT; goto Cleanup; } /* * Initialize areas of the field object that are common to all fields * For FieldFlags, use LOCK_RULE = 0 (NO_LOCK), * UPDATE_RULE = 0 (UPDATE_PRESERVE) */ Status = AcpiExPrepCommonFieldObject (ObjDesc, FieldFlags, 0, BitOffset, BitCount); if (ACPI_FAILURE (Status)) { goto Cleanup; } ObjDesc->BufferField.BufferObj = BufferDesc; /* Reference count for BufferDesc inherits ObjDesc count */ BufferDesc->Common.ReferenceCount = (UINT16) (BufferDesc->Common.ReferenceCount + ObjDesc->Common.ReferenceCount); Cleanup: /* Always delete the operands */ AcpiUtRemoveReference (OffsetDesc); AcpiUtRemoveReference (BufferDesc); if (AmlOpcode == AML_CREATE_FIELD_OP) { AcpiUtRemoveReference (LengthDesc); } /* On failure, delete the result descriptor */ if (ACPI_FAILURE (Status)) { AcpiUtRemoveReference (ResultDesc); /* Result descriptor */ } else { /* Now the address and length are valid for this BufferField */ ObjDesc->BufferField.Flags |= AOPOBJ_DATA_VALID; } return_ACPI_STATUS (Status); } /******************************************************************************* * * FUNCTION: AcpiDsEvalBufferFieldOperands * * PARAMETERS: WalkState - Current walk * Op - A valid BufferField Op object * * RETURN: Status * * DESCRIPTION: Get BufferField Buffer and Index * Called from AcpiDsExecEndOp during BufferField parse tree walk * ******************************************************************************/ ACPI_STATUS AcpiDsEvalBufferFieldOperands ( ACPI_WALK_STATE *WalkState, ACPI_PARSE_OBJECT *Op) { ACPI_STATUS Status; ACPI_OPERAND_OBJECT *ObjDesc; ACPI_NAMESPACE_NODE *Node; ACPI_PARSE_OBJECT *NextOp; ACPI_FUNCTION_TRACE_PTR (DsEvalBufferFieldOperands, Op); /* * This is where we evaluate the address and length fields of the * CreateXxxField declaration */ Node = Op->Common.Node; /* NextOp points to the op that holds the Buffer */ NextOp = Op->Common.Value.Arg; /* Evaluate/create the address and length operands */ Status = AcpiDsCreateOperands (WalkState, NextOp); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } ObjDesc = AcpiNsGetAttachedObject (Node); if (!ObjDesc) { return_ACPI_STATUS (AE_NOT_EXIST); } /* Resolve the operands */ Status = AcpiExResolveOperands (Op->Common.AmlOpcode, ACPI_WALK_OPERANDS, WalkState); if (ACPI_FAILURE (Status)) { ACPI_ERROR ((AE_INFO, "(%s) bad operand(s), status 0x%X", AcpiPsGetOpcodeName (Op->Common.AmlOpcode), Status)); return_ACPI_STATUS (Status); } /* Initialize the Buffer Field */ if (Op->Common.AmlOpcode == AML_CREATE_FIELD_OP) { /* NOTE: Slightly different operands for this opcode */ Status = AcpiDsInitBufferField (Op->Common.AmlOpcode, ObjDesc, WalkState->Operands[0], WalkState->Operands[1], WalkState->Operands[2], WalkState->Operands[3]); } else { /* All other, CreateXxxField opcodes */ Status = AcpiDsInitBufferField (Op->Common.AmlOpcode, ObjDesc, WalkState->Operands[0], WalkState->Operands[1], NULL, WalkState->Operands[2]); } return_ACPI_STATUS (Status); } /******************************************************************************* * * FUNCTION: AcpiDsEvalRegionOperands * * PARAMETERS: WalkState - Current walk * Op - A valid region Op object * * RETURN: Status * * DESCRIPTION: Get region address and length * Called from AcpiDsExecEndOp during OpRegion parse tree walk * ******************************************************************************/ ACPI_STATUS AcpiDsEvalRegionOperands ( ACPI_WALK_STATE *WalkState, ACPI_PARSE_OBJECT *Op) { ACPI_STATUS Status; ACPI_OPERAND_OBJECT *ObjDesc; ACPI_OPERAND_OBJECT *OperandDesc; ACPI_NAMESPACE_NODE *Node; ACPI_PARSE_OBJECT *NextOp; ACPI_FUNCTION_TRACE_PTR (DsEvalRegionOperands, Op); /* * This is where we evaluate the address and length fields of the * OpRegion declaration */ Node = Op->Common.Node; /* NextOp points to the op that holds the SpaceID */ NextOp = Op->Common.Value.Arg; /* NextOp points to address op */ NextOp = NextOp->Common.Next; /* Evaluate/create the address and length operands */ Status = AcpiDsCreateOperands (WalkState, NextOp); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } /* Resolve the length and address operands to numbers */ Status = AcpiExResolveOperands (Op->Common.AmlOpcode, ACPI_WALK_OPERANDS, WalkState); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } ObjDesc = AcpiNsGetAttachedObject (Node); if (!ObjDesc) { return_ACPI_STATUS (AE_NOT_EXIST); } /* * Get the length operand and save it * (at Top of stack) */ OperandDesc = WalkState->Operands[WalkState->NumOperands - 1]; ObjDesc->Region.Length = (UINT32) OperandDesc->Integer.Value; AcpiUtRemoveReference (OperandDesc); /* * Get the address and save it * (at top of stack - 1) */ OperandDesc = WalkState->Operands[WalkState->NumOperands - 2]; ObjDesc->Region.Address = (ACPI_PHYSICAL_ADDRESS) OperandDesc->Integer.Value; AcpiUtRemoveReference (OperandDesc); ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "RgnObj %p Addr %8.8X%8.8X Len %X\n", ObjDesc, ACPI_FORMAT_NATIVE_UINT (ObjDesc->Region.Address), ObjDesc->Region.Length)); /* Now the address and length are valid for this opregion */ ObjDesc->Region.Flags |= AOPOBJ_DATA_VALID; return_ACPI_STATUS (Status); } /******************************************************************************* * * FUNCTION: AcpiDsEvalTableRegionOperands * * PARAMETERS: WalkState - Current walk * Op - A valid region Op object * * RETURN: Status * * DESCRIPTION: Get region address and length. * Called from AcpiDsExecEndOp during DataTableRegion parse * tree walk. * ******************************************************************************/ ACPI_STATUS AcpiDsEvalTableRegionOperands ( ACPI_WALK_STATE *WalkState, ACPI_PARSE_OBJECT *Op) { ACPI_STATUS Status; ACPI_OPERAND_OBJECT *ObjDesc; ACPI_OPERAND_OBJECT **Operand; ACPI_NAMESPACE_NODE *Node; ACPI_PARSE_OBJECT *NextOp; UINT32 TableIndex; ACPI_TABLE_HEADER *Table; ACPI_FUNCTION_TRACE_PTR (DsEvalTableRegionOperands, Op); /* * This is where we evaluate the Signature string, OemId string, * and OemTableId string of the Data Table Region declaration */ Node = Op->Common.Node; /* NextOp points to Signature string op */ NextOp = Op->Common.Value.Arg; /* * Evaluate/create the Signature string, OemId string, * and OemTableId string operands */ Status = AcpiDsCreateOperands (WalkState, NextOp); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } /* * Resolve the Signature string, OemId string, * and OemTableId string operands */ Status = AcpiExResolveOperands (Op->Common.AmlOpcode, ACPI_WALK_OPERANDS, WalkState); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } Operand = &WalkState->Operands[0]; /* Find the ACPI table */ Status = AcpiTbFindTable (Operand[0]->String.Pointer, Operand[1]->String.Pointer, Operand[2]->String.Pointer, &TableIndex); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } AcpiUtRemoveReference (Operand[0]); AcpiUtRemoveReference (Operand[1]); AcpiUtRemoveReference (Operand[2]); Status = AcpiGetTableByIndex (TableIndex, &Table); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } ObjDesc = AcpiNsGetAttachedObject (Node); if (!ObjDesc) { return_ACPI_STATUS (AE_NOT_EXIST); } ObjDesc->Region.Address = (ACPI_PHYSICAL_ADDRESS) ACPI_TO_INTEGER (Table); ObjDesc->Region.Length = Table->Length; ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "RgnObj %p Addr %8.8X%8.8X Len %X\n", ObjDesc, ACPI_FORMAT_NATIVE_UINT (ObjDesc->Region.Address), ObjDesc->Region.Length)); /* Now the address and length are valid for this opregion */ ObjDesc->Region.Flags |= AOPOBJ_DATA_VALID; return_ACPI_STATUS (Status); } /******************************************************************************* * * FUNCTION: AcpiDsEvalDataObjectOperands * * PARAMETERS: WalkState - Current walk * Op - A valid DataObject Op object * ObjDesc - DataObject * * RETURN: Status * * DESCRIPTION: Get the operands and complete the following data object types: * Buffer, Package. * ******************************************************************************/ ACPI_STATUS AcpiDsEvalDataObjectOperands ( ACPI_WALK_STATE *WalkState, ACPI_PARSE_OBJECT *Op, ACPI_OPERAND_OBJECT *ObjDesc) { ACPI_STATUS Status; ACPI_OPERAND_OBJECT *ArgDesc; UINT32 Length; ACPI_FUNCTION_TRACE (DsEvalDataObjectOperands); /* The first operand (for all of these data objects) is the length */ /* * Set proper index into operand stack for AcpiDsObjStackPush * invoked inside AcpiDsCreateOperand. */ WalkState->OperandIndex = WalkState->NumOperands; Status = AcpiDsCreateOperand (WalkState, Op->Common.Value.Arg, 1); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } Status = AcpiExResolveOperands (WalkState->Opcode, &(WalkState->Operands [WalkState->NumOperands -1]), WalkState); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } /* Extract length operand */ ArgDesc = WalkState->Operands [WalkState->NumOperands - 1]; Length = (UINT32) ArgDesc->Integer.Value; /* Cleanup for length operand */ Status = AcpiDsObjStackPop (1, WalkState); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } AcpiUtRemoveReference (ArgDesc); /* * Create the actual data object */ switch (Op->Common.AmlOpcode) { case AML_BUFFER_OP: Status = AcpiDsBuildInternalBufferObj (WalkState, Op, Length, &ObjDesc); break; case AML_PACKAGE_OP: case AML_VAR_PACKAGE_OP: Status = AcpiDsBuildInternalPackageObj (WalkState, Op, Length, &ObjDesc); break; default: return_ACPI_STATUS (AE_AML_BAD_OPCODE); } if (ACPI_SUCCESS (Status)) { /* * Return the object in the WalkState, unless the parent is a package - * in this case, the return object will be stored in the parse tree * for the package. */ if ((!Op->Common.Parent) || ((Op->Common.Parent->Common.AmlOpcode != AML_PACKAGE_OP) && (Op->Common.Parent->Common.AmlOpcode != AML_VAR_PACKAGE_OP) && (Op->Common.Parent->Common.AmlOpcode != AML_NAME_OP))) { WalkState->ResultObj = ObjDesc; } } return_ACPI_STATUS (Status); } /******************************************************************************* * * FUNCTION: AcpiDsEvalBankFieldOperands * * PARAMETERS: WalkState - Current walk * Op - A valid BankField Op object * * RETURN: Status * * DESCRIPTION: Get BankField BankValue * Called from AcpiDsExecEndOp during BankField parse tree walk * ******************************************************************************/ ACPI_STATUS AcpiDsEvalBankFieldOperands ( ACPI_WALK_STATE *WalkState, ACPI_PARSE_OBJECT *Op) { ACPI_STATUS Status; ACPI_OPERAND_OBJECT *ObjDesc; ACPI_OPERAND_OBJECT *OperandDesc; ACPI_NAMESPACE_NODE *Node; ACPI_PARSE_OBJECT *NextOp; ACPI_PARSE_OBJECT *Arg; ACPI_FUNCTION_TRACE_PTR (DsEvalBankFieldOperands, Op); /* * This is where we evaluate the BankValue field of the * BankField declaration */ /* NextOp points to the op that holds the Region */ NextOp = Op->Common.Value.Arg; /* NextOp points to the op that holds the Bank Register */ NextOp = NextOp->Common.Next; /* NextOp points to the op that holds the Bank Value */ NextOp = NextOp->Common.Next; /* * Set proper index into operand stack for AcpiDsObjStackPush * invoked inside AcpiDsCreateOperand. * * We use WalkState->Operands[0] to store the evaluated BankValue */ WalkState->OperandIndex = 0; Status = AcpiDsCreateOperand (WalkState, NextOp, 0); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } Status = AcpiExResolveToValue (&WalkState->Operands[0], WalkState); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } ACPI_DUMP_OPERANDS (ACPI_WALK_OPERANDS, AcpiPsGetOpcodeName (Op->Common.AmlOpcode), 1); /* * Get the BankValue operand and save it * (at Top of stack) */ OperandDesc = WalkState->Operands[0]; /* Arg points to the start Bank Field */ Arg = AcpiPsGetArg (Op, 4); while (Arg) { /* Ignore OFFSET and ACCESSAS terms here */ if (Arg->Common.AmlOpcode == AML_INT_NAMEDFIELD_OP) { Node = Arg->Common.Node; ObjDesc = AcpiNsGetAttachedObject (Node); if (!ObjDesc) { return_ACPI_STATUS (AE_NOT_EXIST); } ObjDesc->BankField.Value = (UINT32) OperandDesc->Integer.Value; } /* Move to next field in the list */ Arg = Arg->Common.Next; } AcpiUtRemoveReference (OperandDesc); return_ACPI_STATUS (Status); } src/acpica/source/components/dispatcher/dsutils.c000066400000000000000000000777401231470457100225560ustar00rootroot00000000000000/******************************************************************************* * * Module Name: dsutils - Dispatcher utilities * ******************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #define __DSUTILS_C__ #include "acpi.h" #include "accommon.h" #include "acparser.h" #include "amlcode.h" #include "acdispat.h" #include "acinterp.h" #include "acnamesp.h" #include "acdebug.h" #define _COMPONENT ACPI_DISPATCHER ACPI_MODULE_NAME ("dsutils") /******************************************************************************* * * FUNCTION: AcpiDsClearImplicitReturn * * PARAMETERS: WalkState - Current State * * RETURN: None. * * DESCRIPTION: Clear and remove a reference on an implicit return value. Used * to delete "stale" return values (if enabled, the return value * from every operator is saved at least momentarily, in case the * parent method exits.) * ******************************************************************************/ void AcpiDsClearImplicitReturn ( ACPI_WALK_STATE *WalkState) { ACPI_FUNCTION_NAME (DsClearImplicitReturn); /* * Slack must be enabled for this feature */ if (!AcpiGbl_EnableInterpreterSlack) { return; } if (WalkState->ImplicitReturnObj) { /* * Delete any "stale" implicit return. However, in * complex statements, the implicit return value can be * bubbled up several levels. */ ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, "Removing reference on stale implicit return obj %p\n", WalkState->ImplicitReturnObj)); AcpiUtRemoveReference (WalkState->ImplicitReturnObj); WalkState->ImplicitReturnObj = NULL; } } #ifndef ACPI_NO_METHOD_EXECUTION /******************************************************************************* * * FUNCTION: AcpiDsDoImplicitReturn * * PARAMETERS: ReturnDesc - The return value * WalkState - Current State * AddReference - True if a reference should be added to the * return object * * RETURN: TRUE if implicit return enabled, FALSE otherwise * * DESCRIPTION: Implements the optional "implicit return". We save the result * of every ASL operator and control method invocation in case the * parent method exit. Before storing a new return value, we * delete the previous return value. * ******************************************************************************/ BOOLEAN AcpiDsDoImplicitReturn ( ACPI_OPERAND_OBJECT *ReturnDesc, ACPI_WALK_STATE *WalkState, BOOLEAN AddReference) { ACPI_FUNCTION_NAME (DsDoImplicitReturn); /* * Slack must be enabled for this feature, and we must * have a valid return object */ if ((!AcpiGbl_EnableInterpreterSlack) || (!ReturnDesc)) { return (FALSE); } ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, "Result %p will be implicitly returned; Prev=%p\n", ReturnDesc, WalkState->ImplicitReturnObj)); /* * Delete any "stale" implicit return value first. However, in * complex statements, the implicit return value can be * bubbled up several levels, so we don't clear the value if it * is the same as the ReturnDesc. */ if (WalkState->ImplicitReturnObj) { if (WalkState->ImplicitReturnObj == ReturnDesc) { return (TRUE); } AcpiDsClearImplicitReturn (WalkState); } /* Save the implicit return value, add a reference if requested */ WalkState->ImplicitReturnObj = ReturnDesc; if (AddReference) { AcpiUtAddReference (ReturnDesc); } return (TRUE); } /******************************************************************************* * * FUNCTION: AcpiDsIsResultUsed * * PARAMETERS: Op - Current Op * WalkState - Current State * * RETURN: TRUE if result is used, FALSE otherwise * * DESCRIPTION: Check if a result object will be used by the parent * ******************************************************************************/ BOOLEAN AcpiDsIsResultUsed ( ACPI_PARSE_OBJECT *Op, ACPI_WALK_STATE *WalkState) { const ACPI_OPCODE_INFO *ParentInfo; ACPI_FUNCTION_TRACE_PTR (DsIsResultUsed, Op); /* Must have both an Op and a Result Object */ if (!Op) { ACPI_ERROR ((AE_INFO, "Null Op")); return_UINT8 (TRUE); } /* * We know that this operator is not a * Return() operator (would not come here.) The following code is the * optional support for a so-called "implicit return". Some AML code * assumes that the last value of the method is "implicitly" returned * to the caller. Just save the last result as the return value. * NOTE: this is optional because the ASL language does not actually * support this behavior. */ (void) AcpiDsDoImplicitReturn (WalkState->ResultObj, WalkState, TRUE); /* * Now determine if the parent will use the result * * If there is no parent, or the parent is a ScopeOp, we are executing * at the method level. An executing method typically has no parent, * since each method is parsed separately. A method invoked externally * via ExecuteControlMethod has a ScopeOp as the parent. */ if ((!Op->Common.Parent) || (Op->Common.Parent->Common.AmlOpcode == AML_SCOPE_OP)) { /* No parent, the return value cannot possibly be used */ ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, "At Method level, result of [%s] not used\n", AcpiPsGetOpcodeName (Op->Common.AmlOpcode))); return_UINT8 (FALSE); } /* Get info on the parent. The RootOp is AML_SCOPE */ ParentInfo = AcpiPsGetOpcodeInfo (Op->Common.Parent->Common.AmlOpcode); if (ParentInfo->Class == AML_CLASS_UNKNOWN) { ACPI_ERROR ((AE_INFO, "Unknown parent opcode Op=%p", Op)); return_UINT8 (FALSE); } /* * Decide what to do with the result based on the parent. If * the parent opcode will not use the result, delete the object. * Otherwise leave it as is, it will be deleted when it is used * as an operand later. */ switch (ParentInfo->Class) { case AML_CLASS_CONTROL: switch (Op->Common.Parent->Common.AmlOpcode) { case AML_RETURN_OP: /* Never delete the return value associated with a return opcode */ goto ResultUsed; case AML_IF_OP: case AML_WHILE_OP: /* * If we are executing the predicate AND this is the predicate op, * we will use the return value */ if ((WalkState->ControlState->Common.State == ACPI_CONTROL_PREDICATE_EXECUTING) && (WalkState->ControlState->Control.PredicateOp == Op)) { goto ResultUsed; } break; default: /* Ignore other control opcodes */ break; } /* The general control opcode returns no result */ goto ResultNotUsed; case AML_CLASS_CREATE: /* * These opcodes allow TermArg(s) as operands and therefore * the operands can be method calls. The result is used. */ goto ResultUsed; case AML_CLASS_NAMED_OBJECT: if ((Op->Common.Parent->Common.AmlOpcode == AML_REGION_OP) || (Op->Common.Parent->Common.AmlOpcode == AML_DATA_REGION_OP) || (Op->Common.Parent->Common.AmlOpcode == AML_PACKAGE_OP) || (Op->Common.Parent->Common.AmlOpcode == AML_VAR_PACKAGE_OP) || (Op->Common.Parent->Common.AmlOpcode == AML_BUFFER_OP) || (Op->Common.Parent->Common.AmlOpcode == AML_INT_EVAL_SUBTREE_OP) || (Op->Common.Parent->Common.AmlOpcode == AML_BANK_FIELD_OP)) { /* * These opcodes allow TermArg(s) as operands and therefore * the operands can be method calls. The result is used. */ goto ResultUsed; } goto ResultNotUsed; default: /* * In all other cases. the parent will actually use the return * object, so keep it. */ goto ResultUsed; } ResultUsed: ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, "Result of [%s] used by Parent [%s] Op=%p\n", AcpiPsGetOpcodeName (Op->Common.AmlOpcode), AcpiPsGetOpcodeName (Op->Common.Parent->Common.AmlOpcode), Op)); return_UINT8 (TRUE); ResultNotUsed: ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, "Result of [%s] not used by Parent [%s] Op=%p\n", AcpiPsGetOpcodeName (Op->Common.AmlOpcode), AcpiPsGetOpcodeName (Op->Common.Parent->Common.AmlOpcode), Op)); return_UINT8 (FALSE); } /******************************************************************************* * * FUNCTION: AcpiDsDeleteResultIfNotUsed * * PARAMETERS: Op - Current parse Op * ResultObj - Result of the operation * WalkState - Current state * * RETURN: Status * * DESCRIPTION: Used after interpretation of an opcode. If there is an internal * result descriptor, check if the parent opcode will actually use * this result. If not, delete the result now so that it will * not become orphaned. * ******************************************************************************/ void AcpiDsDeleteResultIfNotUsed ( ACPI_PARSE_OBJECT *Op, ACPI_OPERAND_OBJECT *ResultObj, ACPI_WALK_STATE *WalkState) { ACPI_OPERAND_OBJECT *ObjDesc; ACPI_STATUS Status; ACPI_FUNCTION_TRACE_PTR (DsDeleteResultIfNotUsed, ResultObj); if (!Op) { ACPI_ERROR ((AE_INFO, "Null Op")); return_VOID; } if (!ResultObj) { return_VOID; } if (!AcpiDsIsResultUsed (Op, WalkState)) { /* Must pop the result stack (ObjDesc should be equal to ResultObj) */ Status = AcpiDsResultPop (&ObjDesc, WalkState); if (ACPI_SUCCESS (Status)) { AcpiUtRemoveReference (ResultObj); } } return_VOID; } /******************************************************************************* * * FUNCTION: AcpiDsResolveOperands * * PARAMETERS: WalkState - Current walk state with operands on stack * * RETURN: Status * * DESCRIPTION: Resolve all operands to their values. Used to prepare * arguments to a control method invocation (a call from one * method to another.) * ******************************************************************************/ ACPI_STATUS AcpiDsResolveOperands ( ACPI_WALK_STATE *WalkState) { UINT32 i; ACPI_STATUS Status = AE_OK; ACPI_FUNCTION_TRACE_PTR (DsResolveOperands, WalkState); /* * Attempt to resolve each of the valid operands * Method arguments are passed by reference, not by value. This means * that the actual objects are passed, not copies of the objects. */ for (i = 0; i < WalkState->NumOperands; i++) { Status = AcpiExResolveToValue (&WalkState->Operands[i], WalkState); if (ACPI_FAILURE (Status)) { break; } } return_ACPI_STATUS (Status); } /******************************************************************************* * * FUNCTION: AcpiDsClearOperands * * PARAMETERS: WalkState - Current walk state with operands on stack * * RETURN: None * * DESCRIPTION: Clear all operands on the current walk state operand stack. * ******************************************************************************/ void AcpiDsClearOperands ( ACPI_WALK_STATE *WalkState) { UINT32 i; ACPI_FUNCTION_TRACE_PTR (DsClearOperands, WalkState); /* Remove a reference on each operand on the stack */ for (i = 0; i < WalkState->NumOperands; i++) { /* * Remove a reference to all operands, including both * "Arguments" and "Targets". */ AcpiUtRemoveReference (WalkState->Operands[i]); WalkState->Operands[i] = NULL; } WalkState->NumOperands = 0; return_VOID; } #endif /******************************************************************************* * * FUNCTION: AcpiDsCreateOperand * * PARAMETERS: WalkState - Current walk state * Arg - Parse object for the argument * ArgIndex - Which argument (zero based) * * RETURN: Status * * DESCRIPTION: Translate a parse tree object that is an argument to an AML * opcode to the equivalent interpreter object. This may include * looking up a name or entering a new name into the internal * namespace. * ******************************************************************************/ ACPI_STATUS AcpiDsCreateOperand ( ACPI_WALK_STATE *WalkState, ACPI_PARSE_OBJECT *Arg, UINT32 ArgIndex) { ACPI_STATUS Status = AE_OK; char *NameString; UINT32 NameLength; ACPI_OPERAND_OBJECT *ObjDesc; ACPI_PARSE_OBJECT *ParentOp; UINT16 Opcode; ACPI_INTERPRETER_MODE InterpreterMode; const ACPI_OPCODE_INFO *OpInfo; ACPI_FUNCTION_TRACE_PTR (DsCreateOperand, Arg); /* A valid name must be looked up in the namespace */ if ((Arg->Common.AmlOpcode == AML_INT_NAMEPATH_OP) && (Arg->Common.Value.String) && !(Arg->Common.Flags & ACPI_PARSEOP_IN_STACK)) { ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, "Getting a name: Arg=%p\n", Arg)); /* Get the entire name string from the AML stream */ Status = AcpiExGetNameString (ACPI_TYPE_ANY, Arg->Common.Value.Buffer, &NameString, &NameLength); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } /* All prefixes have been handled, and the name is in NameString */ /* * Special handling for BufferField declarations. This is a deferred * opcode that unfortunately defines the field name as the last * parameter instead of the first. We get here when we are performing * the deferred execution, so the actual name of the field is already * in the namespace. We don't want to attempt to look it up again * because we may be executing in a different scope than where the * actual opcode exists. */ if ((WalkState->DeferredNode) && (WalkState->DeferredNode->Type == ACPI_TYPE_BUFFER_FIELD) && (ArgIndex == (UINT32) ((WalkState->Opcode == AML_CREATE_FIELD_OP) ? 3 : 2))) { ObjDesc = ACPI_CAST_PTR ( ACPI_OPERAND_OBJECT, WalkState->DeferredNode); Status = AE_OK; } else /* All other opcodes */ { /* * Differentiate between a namespace "create" operation * versus a "lookup" operation (IMODE_LOAD_PASS2 vs. * IMODE_EXECUTE) in order to support the creation of * namespace objects during the execution of control methods. */ ParentOp = Arg->Common.Parent; OpInfo = AcpiPsGetOpcodeInfo (ParentOp->Common.AmlOpcode); if ((OpInfo->Flags & AML_NSNODE) && (ParentOp->Common.AmlOpcode != AML_INT_METHODCALL_OP) && (ParentOp->Common.AmlOpcode != AML_REGION_OP) && (ParentOp->Common.AmlOpcode != AML_INT_NAMEPATH_OP)) { /* Enter name into namespace if not found */ InterpreterMode = ACPI_IMODE_LOAD_PASS2; } else { /* Return a failure if name not found */ InterpreterMode = ACPI_IMODE_EXECUTE; } Status = AcpiNsLookup (WalkState->ScopeInfo, NameString, ACPI_TYPE_ANY, InterpreterMode, ACPI_NS_SEARCH_PARENT | ACPI_NS_DONT_OPEN_SCOPE, WalkState, ACPI_CAST_INDIRECT_PTR (ACPI_NAMESPACE_NODE, &ObjDesc)); /* * The only case where we pass through (ignore) a NOT_FOUND * error is for the CondRefOf opcode. */ if (Status == AE_NOT_FOUND) { if (ParentOp->Common.AmlOpcode == AML_COND_REF_OF_OP) { /* * For the Conditional Reference op, it's OK if * the name is not found; We just need a way to * indicate this to the interpreter, set the * object to the root */ ObjDesc = ACPI_CAST_PTR ( ACPI_OPERAND_OBJECT, AcpiGbl_RootNode); Status = AE_OK; } else { /* * We just plain didn't find it -- which is a * very serious error at this point */ Status = AE_AML_NAME_NOT_FOUND; } } if (ACPI_FAILURE (Status)) { ACPI_ERROR_NAMESPACE (NameString, Status); } } /* Free the namestring created above */ ACPI_FREE (NameString); /* Check status from the lookup */ if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } /* Put the resulting object onto the current object stack */ Status = AcpiDsObjStackPush (ObjDesc, WalkState); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } ACPI_DEBUGGER_EXEC (AcpiDbDisplayArgumentObject (ObjDesc, WalkState)); } else { /* Check for null name case */ if ((Arg->Common.AmlOpcode == AML_INT_NAMEPATH_OP) && !(Arg->Common.Flags & ACPI_PARSEOP_IN_STACK)) { /* * If the name is null, this means that this is an * optional result parameter that was not specified * in the original ASL. Create a Zero Constant for a * placeholder. (Store to a constant is a Noop.) */ Opcode = AML_ZERO_OP; /* Has no arguments! */ ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, "Null namepath: Arg=%p\n", Arg)); } else { Opcode = Arg->Common.AmlOpcode; } /* Get the object type of the argument */ OpInfo = AcpiPsGetOpcodeInfo (Opcode); if (OpInfo->ObjectType == ACPI_TYPE_INVALID) { return_ACPI_STATUS (AE_NOT_IMPLEMENTED); } if ((OpInfo->Flags & AML_HAS_RETVAL) || (Arg->Common.Flags & ACPI_PARSEOP_IN_STACK)) { ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, "Argument previously created, already stacked\n")); ACPI_DEBUGGER_EXEC (AcpiDbDisplayArgumentObject ( WalkState->Operands [WalkState->NumOperands - 1], WalkState)); /* * Use value that was already previously returned * by the evaluation of this argument */ Status = AcpiDsResultPop (&ObjDesc, WalkState); if (ACPI_FAILURE (Status)) { /* * Only error is underflow, and this indicates * a missing or null operand! */ ACPI_EXCEPTION ((AE_INFO, Status, "Missing or null operand")); return_ACPI_STATUS (Status); } } else { /* Create an ACPI_INTERNAL_OBJECT for the argument */ ObjDesc = AcpiUtCreateInternalObject (OpInfo->ObjectType); if (!ObjDesc) { return_ACPI_STATUS (AE_NO_MEMORY); } /* Initialize the new object */ Status = AcpiDsInitObjectFromOp ( WalkState, Arg, Opcode, &ObjDesc); if (ACPI_FAILURE (Status)) { AcpiUtDeleteObjectDesc (ObjDesc); return_ACPI_STATUS (Status); } } /* Put the operand object on the object stack */ Status = AcpiDsObjStackPush (ObjDesc, WalkState); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } ACPI_DEBUGGER_EXEC (AcpiDbDisplayArgumentObject (ObjDesc, WalkState)); } return_ACPI_STATUS (AE_OK); } /******************************************************************************* * * FUNCTION: AcpiDsCreateOperands * * PARAMETERS: WalkState - Current state * FirstArg - First argument of a parser argument tree * * RETURN: Status * * DESCRIPTION: Convert an operator's arguments from a parse tree format to * namespace objects and place those argument object on the object * stack in preparation for evaluation by the interpreter. * ******************************************************************************/ ACPI_STATUS AcpiDsCreateOperands ( ACPI_WALK_STATE *WalkState, ACPI_PARSE_OBJECT *FirstArg) { ACPI_STATUS Status = AE_OK; ACPI_PARSE_OBJECT *Arg; ACPI_PARSE_OBJECT *Arguments[ACPI_OBJ_NUM_OPERANDS]; UINT32 ArgCount = 0; UINT32 Index = WalkState->NumOperands; UINT32 i; ACPI_FUNCTION_TRACE_PTR (DsCreateOperands, FirstArg); /* Get all arguments in the list */ Arg = FirstArg; while (Arg) { if (Index >= ACPI_OBJ_NUM_OPERANDS) { return_ACPI_STATUS (AE_BAD_DATA); } Arguments[Index] = Arg; WalkState->Operands [Index] = NULL; /* Move on to next argument, if any */ Arg = Arg->Common.Next; ArgCount++; Index++; } ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, "NumOperands %d, ArgCount %d, Index %d\n", WalkState->NumOperands, ArgCount, Index)); /* Create the interpreter arguments, in reverse order */ Index--; for (i = 0; i < ArgCount; i++) { Arg = Arguments[Index]; WalkState->OperandIndex = (UINT8) Index; Status = AcpiDsCreateOperand (WalkState, Arg, Index); if (ACPI_FAILURE (Status)) { goto Cleanup; } ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, "Created Arg #%u (%p) %u args total\n", Index, Arg, ArgCount)); Index--; } return_ACPI_STATUS (Status); Cleanup: /* * We must undo everything done above; meaning that we must * pop everything off of the operand stack and delete those * objects */ AcpiDsObjStackPopAndDelete (ArgCount, WalkState); ACPI_EXCEPTION ((AE_INFO, Status, "While creating Arg %u", Index)); return_ACPI_STATUS (Status); } /***************************************************************************** * * FUNCTION: AcpiDsEvaluateNamePath * * PARAMETERS: WalkState - Current state of the parse tree walk, * the opcode of current operation should be * AML_INT_NAMEPATH_OP * * RETURN: Status * * DESCRIPTION: Translate the -NamePath- parse tree object to the equivalent * interpreter object, convert it to value, if needed, duplicate * it, if needed, and push it onto the current result stack. * ****************************************************************************/ ACPI_STATUS AcpiDsEvaluateNamePath ( ACPI_WALK_STATE *WalkState) { ACPI_STATUS Status = AE_OK; ACPI_PARSE_OBJECT *Op = WalkState->Op; ACPI_OPERAND_OBJECT **Operand = &WalkState->Operands[0]; ACPI_OPERAND_OBJECT *NewObjDesc; UINT8 Type; ACPI_FUNCTION_TRACE_PTR (DsEvaluateNamePath, WalkState); if (!Op->Common.Parent) { /* This happens after certain exception processing */ goto Exit; } if ((Op->Common.Parent->Common.AmlOpcode == AML_PACKAGE_OP) || (Op->Common.Parent->Common.AmlOpcode == AML_VAR_PACKAGE_OP) || (Op->Common.Parent->Common.AmlOpcode == AML_REF_OF_OP)) { /* TBD: Should we specify this feature as a bit of OpInfo->Flags of these opcodes? */ goto Exit; } Status = AcpiDsCreateOperand (WalkState, Op, 0); if (ACPI_FAILURE (Status)) { goto Exit; } if (Op->Common.Flags & ACPI_PARSEOP_TARGET) { NewObjDesc = *Operand; goto PushResult; } Type = (*Operand)->Common.Type; Status = AcpiExResolveToValue (Operand, WalkState); if (ACPI_FAILURE (Status)) { goto Exit; } if (Type == ACPI_TYPE_INTEGER) { /* It was incremented by AcpiExResolveToValue */ AcpiUtRemoveReference (*Operand); Status = AcpiUtCopyIobjectToIobject (*Operand, &NewObjDesc, WalkState); if (ACPI_FAILURE (Status)) { goto Exit; } } else { /* * The object either was anew created or is * a Namespace node - don't decrement it. */ NewObjDesc = *Operand; } /* Cleanup for name-path operand */ Status = AcpiDsObjStackPop (1, WalkState); if (ACPI_FAILURE (Status)) { WalkState->ResultObj = NewObjDesc; goto Exit; } PushResult: WalkState->ResultObj = NewObjDesc; Status = AcpiDsResultPush (WalkState->ResultObj, WalkState); if (ACPI_SUCCESS (Status)) { /* Force to take it from stack */ Op->Common.Flags |= ACPI_PARSEOP_IN_STACK; } Exit: return_ACPI_STATUS (Status); } src/acpica/source/components/dispatcher/dswexec.c000066400000000000000000000655651231470457100225330ustar00rootroot00000000000000/****************************************************************************** * * Module Name: dswexec - Dispatcher method execution callbacks; * dispatch to interpreter. * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #define __DSWEXEC_C__ #include "acpi.h" #include "accommon.h" #include "acparser.h" #include "amlcode.h" #include "acdispat.h" #include "acinterp.h" #include "acnamesp.h" #include "acdebug.h" #define _COMPONENT ACPI_DISPATCHER ACPI_MODULE_NAME ("dswexec") /* * Dispatch table for opcode classes */ static ACPI_EXECUTE_OP AcpiGbl_OpTypeDispatch [] = { AcpiExOpcode_0A_0T_1R, AcpiExOpcode_1A_0T_0R, AcpiExOpcode_1A_0T_1R, AcpiExOpcode_1A_1T_0R, AcpiExOpcode_1A_1T_1R, AcpiExOpcode_2A_0T_0R, AcpiExOpcode_2A_0T_1R, AcpiExOpcode_2A_1T_1R, AcpiExOpcode_2A_2T_1R, AcpiExOpcode_3A_0T_0R, AcpiExOpcode_3A_1T_1R, AcpiExOpcode_6A_0T_1R }; /***************************************************************************** * * FUNCTION: AcpiDsGetPredicateValue * * PARAMETERS: WalkState - Current state of the parse tree walk * ResultObj - if non-zero, pop result from result stack * * RETURN: Status * * DESCRIPTION: Get the result of a predicate evaluation * ****************************************************************************/ ACPI_STATUS AcpiDsGetPredicateValue ( ACPI_WALK_STATE *WalkState, ACPI_OPERAND_OBJECT *ResultObj) { ACPI_STATUS Status = AE_OK; ACPI_OPERAND_OBJECT *ObjDesc; ACPI_OPERAND_OBJECT *LocalObjDesc = NULL; ACPI_FUNCTION_TRACE_PTR (DsGetPredicateValue, WalkState); WalkState->ControlState->Common.State = 0; if (ResultObj) { Status = AcpiDsResultPop (&ObjDesc, WalkState); if (ACPI_FAILURE (Status)) { ACPI_EXCEPTION ((AE_INFO, Status, "Could not get result from predicate evaluation")); return_ACPI_STATUS (Status); } } else { Status = AcpiDsCreateOperand (WalkState, WalkState->Op, 0); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } Status = AcpiExResolveToValue (&WalkState->Operands [0], WalkState); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } ObjDesc = WalkState->Operands [0]; } if (!ObjDesc) { ACPI_ERROR ((AE_INFO, "No predicate ObjDesc=%p State=%p", ObjDesc, WalkState)); return_ACPI_STATUS (AE_AML_NO_OPERAND); } /* * Result of predicate evaluation must be an Integer * object. Implicitly convert the argument if necessary. */ Status = AcpiExConvertToInteger (ObjDesc, &LocalObjDesc, 16); if (ACPI_FAILURE (Status)) { goto Cleanup; } if (LocalObjDesc->Common.Type != ACPI_TYPE_INTEGER) { ACPI_ERROR ((AE_INFO, "Bad predicate (not an integer) ObjDesc=%p State=%p Type=0x%X", ObjDesc, WalkState, ObjDesc->Common.Type)); Status = AE_AML_OPERAND_TYPE; goto Cleanup; } /* Truncate the predicate to 32-bits if necessary */ (void) AcpiExTruncateFor32bitTable (LocalObjDesc); /* * Save the result of the predicate evaluation on * the control stack */ if (LocalObjDesc->Integer.Value) { WalkState->ControlState->Common.Value = TRUE; } else { /* * Predicate is FALSE, we will just toss the * rest of the package */ WalkState->ControlState->Common.Value = FALSE; Status = AE_CTRL_FALSE; } /* Predicate can be used for an implicit return value */ (void) AcpiDsDoImplicitReturn (LocalObjDesc, WalkState, TRUE); Cleanup: ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Completed a predicate eval=%X Op=%p\n", WalkState->ControlState->Common.Value, WalkState->Op)); /* Break to debugger to display result */ ACPI_DEBUGGER_EXEC (AcpiDbDisplayResultObject (LocalObjDesc, WalkState)); /* * Delete the predicate result object (we know that * we don't need it anymore) */ if (LocalObjDesc != ObjDesc) { AcpiUtRemoveReference (LocalObjDesc); } AcpiUtRemoveReference (ObjDesc); WalkState->ControlState->Common.State = ACPI_CONTROL_NORMAL; return_ACPI_STATUS (Status); } /***************************************************************************** * * FUNCTION: AcpiDsExecBeginOp * * PARAMETERS: WalkState - Current state of the parse tree walk * OutOp - Where to return op if a new one is created * * RETURN: Status * * DESCRIPTION: Descending callback used during the execution of control * methods. This is where most operators and operands are * dispatched to the interpreter. * ****************************************************************************/ ACPI_STATUS AcpiDsExecBeginOp ( ACPI_WALK_STATE *WalkState, ACPI_PARSE_OBJECT **OutOp) { ACPI_PARSE_OBJECT *Op; ACPI_STATUS Status = AE_OK; UINT32 OpcodeClass; ACPI_FUNCTION_TRACE_PTR (DsExecBeginOp, WalkState); Op = WalkState->Op; if (!Op) { Status = AcpiDsLoad2BeginOp (WalkState, OutOp); if (ACPI_FAILURE (Status)) { goto ErrorExit; } Op = *OutOp; WalkState->Op = Op; WalkState->Opcode = Op->Common.AmlOpcode; WalkState->OpInfo = AcpiPsGetOpcodeInfo (Op->Common.AmlOpcode); if (AcpiNsOpensScope (WalkState->OpInfo->ObjectType)) { ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, "(%s) Popping scope for Op %p\n", AcpiUtGetTypeName (WalkState->OpInfo->ObjectType), Op)); Status = AcpiDsScopeStackPop (WalkState); if (ACPI_FAILURE (Status)) { goto ErrorExit; } } } if (Op == WalkState->Origin) { if (OutOp) { *OutOp = Op; } return_ACPI_STATUS (AE_OK); } /* * If the previous opcode was a conditional, this opcode * must be the beginning of the associated predicate. * Save this knowledge in the current scope descriptor */ if ((WalkState->ControlState) && (WalkState->ControlState->Common.State == ACPI_CONTROL_CONDITIONAL_EXECUTING)) { ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Exec predicate Op=%p State=%p\n", Op, WalkState)); WalkState->ControlState->Common.State = ACPI_CONTROL_PREDICATE_EXECUTING; /* Save start of predicate */ WalkState->ControlState->Control.PredicateOp = Op; } OpcodeClass = WalkState->OpInfo->Class; /* We want to send namepaths to the load code */ if (Op->Common.AmlOpcode == AML_INT_NAMEPATH_OP) { OpcodeClass = AML_CLASS_NAMED_OBJECT; } /* * Handle the opcode based upon the opcode type */ switch (OpcodeClass) { case AML_CLASS_CONTROL: Status = AcpiDsExecBeginControlOp (WalkState, Op); break; case AML_CLASS_NAMED_OBJECT: if (WalkState->WalkType & ACPI_WALK_METHOD) { /* * Found a named object declaration during method execution; * we must enter this object into the namespace. The created * object is temporary and will be deleted upon completion of * the execution of this method. * * Note 10/2010: Except for the Scope() op. This opcode does * not actually create a new object, it refers to an existing * object. However, for Scope(), we want to indeed open a * new scope. */ if (Op->Common.AmlOpcode != AML_SCOPE_OP) { Status = AcpiDsLoad2BeginOp (WalkState, NULL); } else { Status = AcpiDsScopeStackPush (Op->Named.Node, Op->Named.Node->Type, WalkState); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } } } break; case AML_CLASS_EXECUTE: case AML_CLASS_CREATE: break; default: break; } /* Nothing to do here during method execution */ return_ACPI_STATUS (Status); ErrorExit: Status = AcpiDsMethodError (Status, WalkState); return_ACPI_STATUS (Status); } /***************************************************************************** * * FUNCTION: AcpiDsExecEndOp * * PARAMETERS: WalkState - Current state of the parse tree walk * * RETURN: Status * * DESCRIPTION: Ascending callback used during the execution of control * methods. The only thing we really need to do here is to * notice the beginning of IF, ELSE, and WHILE blocks. * ****************************************************************************/ ACPI_STATUS AcpiDsExecEndOp ( ACPI_WALK_STATE *WalkState) { ACPI_PARSE_OBJECT *Op; ACPI_STATUS Status = AE_OK; UINT32 OpType; UINT32 OpClass; ACPI_PARSE_OBJECT *NextOp; ACPI_PARSE_OBJECT *FirstArg; ACPI_FUNCTION_TRACE_PTR (DsExecEndOp, WalkState); Op = WalkState->Op; OpType = WalkState->OpInfo->Type; OpClass = WalkState->OpInfo->Class; if (OpClass == AML_CLASS_UNKNOWN) { ACPI_ERROR ((AE_INFO, "Unknown opcode 0x%X", Op->Common.AmlOpcode)); return_ACPI_STATUS (AE_NOT_IMPLEMENTED); } FirstArg = Op->Common.Value.Arg; /* Init the walk state */ WalkState->NumOperands = 0; WalkState->OperandIndex = 0; WalkState->ReturnDesc = NULL; WalkState->ResultObj = NULL; /* Call debugger for single step support (DEBUG build only) */ ACPI_DEBUGGER_EXEC (Status = AcpiDbSingleStep (WalkState, Op, OpClass)); ACPI_DEBUGGER_EXEC (if (ACPI_FAILURE (Status)) {return_ACPI_STATUS (Status);}); /* Decode the Opcode Class */ switch (OpClass) { case AML_CLASS_ARGUMENT: /* Constants, literals, etc. */ if (WalkState->Opcode == AML_INT_NAMEPATH_OP) { Status = AcpiDsEvaluateNamePath (WalkState); if (ACPI_FAILURE (Status)) { goto Cleanup; } } break; case AML_CLASS_EXECUTE: /* Most operators with arguments */ /* Build resolved operand stack */ Status = AcpiDsCreateOperands (WalkState, FirstArg); if (ACPI_FAILURE (Status)) { goto Cleanup; } /* * All opcodes require operand resolution, with the only exceptions * being the ObjectType and SizeOf operators. */ if (!(WalkState->OpInfo->Flags & AML_NO_OPERAND_RESOLVE)) { /* Resolve all operands */ Status = AcpiExResolveOperands (WalkState->Opcode, &(WalkState->Operands [WalkState->NumOperands -1]), WalkState); } if (ACPI_SUCCESS (Status)) { /* * Dispatch the request to the appropriate interpreter handler * routine. There is one routine per opcode "type" based upon the * number of opcode arguments and return type. */ Status = AcpiGbl_OpTypeDispatch[OpType] (WalkState); } else { /* * Treat constructs of the form "Store(LocalX,LocalX)" as noops when the * Local is uninitialized. */ if ((Status == AE_AML_UNINITIALIZED_LOCAL) && (WalkState->Opcode == AML_STORE_OP) && (WalkState->Operands[0]->Common.Type == ACPI_TYPE_LOCAL_REFERENCE) && (WalkState->Operands[1]->Common.Type == ACPI_TYPE_LOCAL_REFERENCE) && (WalkState->Operands[0]->Reference.Class == WalkState->Operands[1]->Reference.Class) && (WalkState->Operands[0]->Reference.Value == WalkState->Operands[1]->Reference.Value)) { Status = AE_OK; } else { ACPI_EXCEPTION ((AE_INFO, Status, "While resolving operands for [%s]", AcpiPsGetOpcodeName (WalkState->Opcode))); } } /* Always delete the argument objects and clear the operand stack */ AcpiDsClearOperands (WalkState); /* * If a result object was returned from above, push it on the * current result stack */ if (ACPI_SUCCESS (Status) && WalkState->ResultObj) { Status = AcpiDsResultPush (WalkState->ResultObj, WalkState); } break; default: switch (OpType) { case AML_TYPE_CONTROL: /* Type 1 opcode, IF/ELSE/WHILE/NOOP */ /* 1 Operand, 0 ExternalResult, 0 InternalResult */ Status = AcpiDsExecEndControlOp (WalkState, Op); break; case AML_TYPE_METHOD_CALL: /* * If the method is referenced from within a package * declaration, it is not a invocation of the method, just * a reference to it. */ if ((Op->Asl.Parent) && ((Op->Asl.Parent->Asl.AmlOpcode == AML_PACKAGE_OP) || (Op->Asl.Parent->Asl.AmlOpcode == AML_VAR_PACKAGE_OP))) { ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, "Method Reference in a Package, Op=%p\n", Op)); Op->Common.Node = (ACPI_NAMESPACE_NODE *) Op->Asl.Value.Arg->Asl.Node; AcpiUtAddReference (Op->Asl.Value.Arg->Asl.Node->Object); return_ACPI_STATUS (AE_OK); } ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, "Method invocation, Op=%p\n", Op)); /* * (AML_METHODCALL) Op->Asl.Value.Arg->Asl.Node contains * the method Node pointer */ /* NextOp points to the op that holds the method name */ NextOp = FirstArg; /* NextOp points to first argument op */ NextOp = NextOp->Common.Next; /* * Get the method's arguments and put them on the operand stack */ Status = AcpiDsCreateOperands (WalkState, NextOp); if (ACPI_FAILURE (Status)) { break; } /* * Since the operands will be passed to another control method, * we must resolve all local references here (Local variables, * arguments to *this* method, etc.) */ Status = AcpiDsResolveOperands (WalkState); if (ACPI_FAILURE (Status)) { /* On error, clear all resolved operands */ AcpiDsClearOperands (WalkState); break; } /* * Tell the walk loop to preempt this running method and * execute the new method */ Status = AE_CTRL_TRANSFER; /* * Return now; we don't want to disturb anything, * especially the operand count! */ return_ACPI_STATUS (Status); case AML_TYPE_CREATE_FIELD: ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Executing CreateField Buffer/Index Op=%p\n", Op)); Status = AcpiDsLoad2EndOp (WalkState); if (ACPI_FAILURE (Status)) { break; } Status = AcpiDsEvalBufferFieldOperands (WalkState, Op); break; case AML_TYPE_CREATE_OBJECT: ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Executing CreateObject (Buffer/Package) Op=%p\n", Op)); switch (Op->Common.Parent->Common.AmlOpcode) { case AML_NAME_OP: /* * Put the Node on the object stack (Contains the ACPI Name * of this object) */ WalkState->Operands[0] = (void *) Op->Common.Parent->Common.Node; WalkState->NumOperands = 1; Status = AcpiDsCreateNode (WalkState, Op->Common.Parent->Common.Node, Op->Common.Parent); if (ACPI_FAILURE (Status)) { break; } /* Fall through */ /*lint -fallthrough */ case AML_INT_EVAL_SUBTREE_OP: Status = AcpiDsEvalDataObjectOperands (WalkState, Op, AcpiNsGetAttachedObject (Op->Common.Parent->Common.Node)); break; default: Status = AcpiDsEvalDataObjectOperands (WalkState, Op, NULL); break; } /* * If a result object was returned from above, push it on the * current result stack */ if (WalkState->ResultObj) { Status = AcpiDsResultPush (WalkState->ResultObj, WalkState); } break; case AML_TYPE_NAMED_FIELD: case AML_TYPE_NAMED_COMPLEX: case AML_TYPE_NAMED_SIMPLE: case AML_TYPE_NAMED_NO_OBJ: Status = AcpiDsLoad2EndOp (WalkState); if (ACPI_FAILURE (Status)) { break; } if (Op->Common.AmlOpcode == AML_REGION_OP) { ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Executing OpRegion Address/Length Op=%p\n", Op)); Status = AcpiDsEvalRegionOperands (WalkState, Op); if (ACPI_FAILURE (Status)) { break; } } else if (Op->Common.AmlOpcode == AML_DATA_REGION_OP) { ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Executing DataTableRegion Strings Op=%p\n", Op)); Status = AcpiDsEvalTableRegionOperands (WalkState, Op); if (ACPI_FAILURE (Status)) { break; } } else if (Op->Common.AmlOpcode == AML_BANK_FIELD_OP) { ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Executing BankField Op=%p\n", Op)); Status = AcpiDsEvalBankFieldOperands (WalkState, Op); if (ACPI_FAILURE (Status)) { break; } } break; case AML_TYPE_UNDEFINED: ACPI_ERROR ((AE_INFO, "Undefined opcode type Op=%p", Op)); return_ACPI_STATUS (AE_NOT_IMPLEMENTED); case AML_TYPE_BOGUS: ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, "Internal opcode=%X type Op=%p\n", WalkState->Opcode, Op)); break; default: ACPI_ERROR ((AE_INFO, "Unimplemented opcode, class=0x%X type=0x%X Opcode=0x%X Op=%p", OpClass, OpType, Op->Common.AmlOpcode, Op)); Status = AE_NOT_IMPLEMENTED; break; } } /* * ACPI 2.0 support for 64-bit integers: Truncate numeric * result value if we are executing from a 32-bit ACPI table */ (void) AcpiExTruncateFor32bitTable (WalkState->ResultObj); /* * Check if we just completed the evaluation of a * conditional predicate */ if ((ACPI_SUCCESS (Status)) && (WalkState->ControlState) && (WalkState->ControlState->Common.State == ACPI_CONTROL_PREDICATE_EXECUTING) && (WalkState->ControlState->Control.PredicateOp == Op)) { Status = AcpiDsGetPredicateValue (WalkState, WalkState->ResultObj); WalkState->ResultObj = NULL; } Cleanup: if (WalkState->ResultObj) { /* Break to debugger to display result */ ACPI_DEBUGGER_EXEC (AcpiDbDisplayResultObject (WalkState->ResultObj, WalkState)); /* * Delete the result op if and only if: * Parent will not use the result -- such as any * non-nested type2 op in a method (parent will be method) */ AcpiDsDeleteResultIfNotUsed (Op, WalkState->ResultObj, WalkState); } #ifdef _UNDER_DEVELOPMENT if (WalkState->ParserState.Aml == WalkState->ParserState.AmlEnd) { AcpiDbMethodEnd (WalkState); } #endif /* Invoke exception handler on error */ if (ACPI_FAILURE (Status)) { Status = AcpiDsMethodError (Status, WalkState); } /* Always clear the object stack */ WalkState->NumOperands = 0; return_ACPI_STATUS (Status); } src/acpica/source/components/dispatcher/dswload.c000066400000000000000000000541571231470457100225210ustar00rootroot00000000000000/****************************************************************************** * * Module Name: dswload - Dispatcher first pass namespace load callbacks * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #define __DSWLOAD_C__ #include "acpi.h" #include "accommon.h" #include "acparser.h" #include "amlcode.h" #include "acdispat.h" #include "acinterp.h" #include "acnamesp.h" #ifdef ACPI_ASL_COMPILER #include "acdisasm.h" #endif #define _COMPONENT ACPI_DISPATCHER ACPI_MODULE_NAME ("dswload") /******************************************************************************* * * FUNCTION: AcpiDsInitCallbacks * * PARAMETERS: WalkState - Current state of the parse tree walk * PassNumber - 1, 2, or 3 * * RETURN: Status * * DESCRIPTION: Init walk state callbacks * ******************************************************************************/ ACPI_STATUS AcpiDsInitCallbacks ( ACPI_WALK_STATE *WalkState, UINT32 PassNumber) { switch (PassNumber) { case 0: /* Parse only - caller will setup callbacks */ WalkState->ParseFlags = ACPI_PARSE_LOAD_PASS1 | ACPI_PARSE_DELETE_TREE | ACPI_PARSE_DISASSEMBLE; WalkState->DescendingCallback = NULL; WalkState->AscendingCallback = NULL; break; case 1: /* Load pass 1 */ WalkState->ParseFlags = ACPI_PARSE_LOAD_PASS1 | ACPI_PARSE_DELETE_TREE; WalkState->DescendingCallback = AcpiDsLoad1BeginOp; WalkState->AscendingCallback = AcpiDsLoad1EndOp; break; case 2: /* Load pass 2 */ WalkState->ParseFlags = ACPI_PARSE_LOAD_PASS1 | ACPI_PARSE_DELETE_TREE; WalkState->DescendingCallback = AcpiDsLoad2BeginOp; WalkState->AscendingCallback = AcpiDsLoad2EndOp; break; case 3: /* Execution pass */ #ifndef ACPI_NO_METHOD_EXECUTION WalkState->ParseFlags |= ACPI_PARSE_EXECUTE | ACPI_PARSE_DELETE_TREE; WalkState->DescendingCallback = AcpiDsExecBeginOp; WalkState->AscendingCallback = AcpiDsExecEndOp; #endif break; default: return (AE_BAD_PARAMETER); } return (AE_OK); } /******************************************************************************* * * FUNCTION: AcpiDsLoad1BeginOp * * PARAMETERS: WalkState - Current state of the parse tree walk * OutOp - Where to return op if a new one is created * * RETURN: Status * * DESCRIPTION: Descending callback used during the loading of ACPI tables. * ******************************************************************************/ ACPI_STATUS AcpiDsLoad1BeginOp ( ACPI_WALK_STATE *WalkState, ACPI_PARSE_OBJECT **OutOp) { ACPI_PARSE_OBJECT *Op; ACPI_NAMESPACE_NODE *Node; ACPI_STATUS Status; ACPI_OBJECT_TYPE ObjectType; char *Path; UINT32 Flags; ACPI_FUNCTION_TRACE (DsLoad1BeginOp); Op = WalkState->Op; ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, "Op=%p State=%p\n", Op, WalkState)); /* We are only interested in opcodes that have an associated name */ if (Op) { if (!(WalkState->OpInfo->Flags & AML_NAMED)) { *OutOp = Op; return_ACPI_STATUS (AE_OK); } /* Check if this object has already been installed in the namespace */ if (Op->Common.Node) { *OutOp = Op; return_ACPI_STATUS (AE_OK); } } Path = AcpiPsGetNextNamestring (&WalkState->ParserState); /* Map the raw opcode into an internal object type */ ObjectType = WalkState->OpInfo->ObjectType; ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, "State=%p Op=%p [%s]\n", WalkState, Op, AcpiUtGetTypeName (ObjectType))); switch (WalkState->Opcode) { case AML_SCOPE_OP: /* * The target name of the Scope() operator must exist at this point so * that we can actually open the scope to enter new names underneath it. * Allow search-to-root for single namesegs. */ Status = AcpiNsLookup (WalkState->ScopeInfo, Path, ObjectType, ACPI_IMODE_EXECUTE, ACPI_NS_SEARCH_PARENT, WalkState, &(Node)); #ifdef ACPI_ASL_COMPILER if (Status == AE_NOT_FOUND) { /* * Table disassembly: * Target of Scope() not found. Generate an External for it, and * insert the name into the namespace. */ AcpiDmAddOpToExternalList (Op, Path, ACPI_TYPE_DEVICE, 0, 0); Status = AcpiNsLookup (WalkState->ScopeInfo, Path, ObjectType, ACPI_IMODE_LOAD_PASS1, ACPI_NS_SEARCH_PARENT, WalkState, &Node); } #endif if (ACPI_FAILURE (Status)) { ACPI_ERROR_NAMESPACE (Path, Status); return_ACPI_STATUS (Status); } /* * Check to make sure that the target is * one of the opcodes that actually opens a scope */ switch (Node->Type) { case ACPI_TYPE_ANY: case ACPI_TYPE_LOCAL_SCOPE: /* Scope */ case ACPI_TYPE_DEVICE: case ACPI_TYPE_POWER: case ACPI_TYPE_PROCESSOR: case ACPI_TYPE_THERMAL: /* These are acceptable types */ break; case ACPI_TYPE_INTEGER: case ACPI_TYPE_STRING: case ACPI_TYPE_BUFFER: /* * These types we will allow, but we will change the type. * This enables some existing code of the form: * * Name (DEB, 0) * Scope (DEB) { ... } * * Note: silently change the type here. On the second pass, * we will report a warning */ ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Type override - [%4.4s] had invalid type (%s) " "for Scope operator, changed to type ANY\n", AcpiUtGetNodeName (Node), AcpiUtGetTypeName (Node->Type))); Node->Type = ACPI_TYPE_ANY; WalkState->ScopeInfo->Common.Value = ACPI_TYPE_ANY; break; case ACPI_TYPE_METHOD: /* * Allow scope change to root during execution of module-level * code. Root is typed METHOD during this time. */ if ((Node == AcpiGbl_RootNode) && (WalkState->ParseFlags & ACPI_PARSE_MODULE_LEVEL)) { break; } /*lint -fallthrough */ default: /* All other types are an error */ ACPI_ERROR ((AE_INFO, "Invalid type (%s) for target of " "Scope operator [%4.4s] (Cannot override)", AcpiUtGetTypeName (Node->Type), AcpiUtGetNodeName (Node))); return_ACPI_STATUS (AE_AML_OPERAND_TYPE); } break; default: /* * For all other named opcodes, we will enter the name into * the namespace. * * Setup the search flags. * Since we are entering a name into the namespace, we do not want to * enable the search-to-root upsearch. * * There are only two conditions where it is acceptable that the name * already exists: * 1) the Scope() operator can reopen a scoping object that was * previously defined (Scope, Method, Device, etc.) * 2) Whenever we are parsing a deferred opcode (OpRegion, Buffer, * BufferField, or Package), the name of the object is already * in the namespace. */ if (WalkState->DeferredNode) { /* This name is already in the namespace, get the node */ Node = WalkState->DeferredNode; Status = AE_OK; break; } /* * If we are executing a method, do not create any namespace objects * during the load phase, only during execution. */ if (WalkState->MethodNode) { Node = NULL; Status = AE_OK; break; } Flags = ACPI_NS_NO_UPSEARCH; if ((WalkState->Opcode != AML_SCOPE_OP) && (!(WalkState->ParseFlags & ACPI_PARSE_DEFERRED_OP))) { Flags |= ACPI_NS_ERROR_IF_FOUND; ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, "[%s] Cannot already exist\n", AcpiUtGetTypeName (ObjectType))); } else { ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, "[%s] Both Find or Create allowed\n", AcpiUtGetTypeName (ObjectType))); } /* * Enter the named type into the internal namespace. We enter the name * as we go downward in the parse tree. Any necessary subobjects that * involve arguments to the opcode must be created as we go back up the * parse tree later. */ Status = AcpiNsLookup (WalkState->ScopeInfo, Path, ObjectType, ACPI_IMODE_LOAD_PASS1, Flags, WalkState, &Node); if (ACPI_FAILURE (Status)) { if (Status == AE_ALREADY_EXISTS) { /* The name already exists in this scope */ if (Node->Flags & ANOBJ_IS_EXTERNAL) { /* * Allow one create on an object or segment that was * previously declared External */ Node->Flags &= ~ANOBJ_IS_EXTERNAL; Node->Type = (UINT8) ObjectType; /* Just retyped a node, probably will need to open a scope */ if (AcpiNsOpensScope (ObjectType)) { Status = AcpiDsScopeStackPush (Node, ObjectType, WalkState); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } } Status = AE_OK; } } if (ACPI_FAILURE (Status)) { ACPI_ERROR_NAMESPACE (Path, Status); return_ACPI_STATUS (Status); } } break; } /* Common exit */ if (!Op) { /* Create a new op */ Op = AcpiPsAllocOp (WalkState->Opcode); if (!Op) { return_ACPI_STATUS (AE_NO_MEMORY); } } /* Initialize the op */ #if (defined (ACPI_NO_METHOD_EXECUTION) || defined (ACPI_CONSTANT_EVAL_ONLY)) Op->Named.Path = ACPI_CAST_PTR (UINT8, Path); #endif if (Node) { /* * Put the Node in the "op" object that the parser uses, so we * can get it again quickly when this scope is closed */ Op->Common.Node = Node; Op->Named.Name = Node->Name.Integer; } AcpiPsAppendArg (AcpiPsGetParentScope (&WalkState->ParserState), Op); *OutOp = Op; return_ACPI_STATUS (Status); } /******************************************************************************* * * FUNCTION: AcpiDsLoad1EndOp * * PARAMETERS: WalkState - Current state of the parse tree walk * * RETURN: Status * * DESCRIPTION: Ascending callback used during the loading of the namespace, * both control methods and everything else. * ******************************************************************************/ ACPI_STATUS AcpiDsLoad1EndOp ( ACPI_WALK_STATE *WalkState) { ACPI_PARSE_OBJECT *Op; ACPI_OBJECT_TYPE ObjectType; ACPI_STATUS Status = AE_OK; ACPI_FUNCTION_TRACE (DsLoad1EndOp); Op = WalkState->Op; ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, "Op=%p State=%p\n", Op, WalkState)); /* We are only interested in opcodes that have an associated name */ if (!(WalkState->OpInfo->Flags & (AML_NAMED | AML_FIELD))) { return_ACPI_STATUS (AE_OK); } /* Get the object type to determine if we should pop the scope */ ObjectType = WalkState->OpInfo->ObjectType; #ifndef ACPI_NO_METHOD_EXECUTION if (WalkState->OpInfo->Flags & AML_FIELD) { /* * If we are executing a method, do not create any namespace objects * during the load phase, only during execution. */ if (!WalkState->MethodNode) { if (WalkState->Opcode == AML_FIELD_OP || WalkState->Opcode == AML_BANK_FIELD_OP || WalkState->Opcode == AML_INDEX_FIELD_OP) { Status = AcpiDsInitFieldObjects (Op, WalkState); } } return_ACPI_STATUS (Status); } /* * If we are executing a method, do not create any namespace objects * during the load phase, only during execution. */ if (!WalkState->MethodNode) { if (Op->Common.AmlOpcode == AML_REGION_OP) { Status = AcpiExCreateRegion (Op->Named.Data, Op->Named.Length, (ACPI_ADR_SPACE_TYPE) ((Op->Common.Value.Arg)->Common.Value.Integer), WalkState); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } } else if (Op->Common.AmlOpcode == AML_DATA_REGION_OP) { Status = AcpiExCreateRegion (Op->Named.Data, Op->Named.Length, ACPI_ADR_SPACE_DATA_TABLE, WalkState); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } } } #endif if (Op->Common.AmlOpcode == AML_NAME_OP) { /* For Name opcode, get the object type from the argument */ if (Op->Common.Value.Arg) { ObjectType = (AcpiPsGetOpcodeInfo ( (Op->Common.Value.Arg)->Common.AmlOpcode))->ObjectType; /* Set node type if we have a namespace node */ if (Op->Common.Node) { Op->Common.Node->Type = (UINT8) ObjectType; } } } /* * If we are executing a method, do not create any namespace objects * during the load phase, only during execution. */ if (!WalkState->MethodNode) { if (Op->Common.AmlOpcode == AML_METHOD_OP) { /* * MethodOp PkgLength NameString MethodFlags TermList * * Note: We must create the method node/object pair as soon as we * see the method declaration. This allows later pass1 parsing * of invocations of the method (need to know the number of * arguments.) */ ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, "LOADING-Method: State=%p Op=%p NamedObj=%p\n", WalkState, Op, Op->Named.Node)); if (!AcpiNsGetAttachedObject (Op->Named.Node)) { WalkState->Operands[0] = ACPI_CAST_PTR (void, Op->Named.Node); WalkState->NumOperands = 1; Status = AcpiDsCreateOperands (WalkState, Op->Common.Value.Arg); if (ACPI_SUCCESS (Status)) { Status = AcpiExCreateMethod (Op->Named.Data, Op->Named.Length, WalkState); } WalkState->Operands[0] = NULL; WalkState->NumOperands = 0; if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } } } } /* Pop the scope stack (only if loading a table) */ if (!WalkState->MethodNode && AcpiNsOpensScope (ObjectType)) { ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, "(%s): Popping scope for Op %p\n", AcpiUtGetTypeName (ObjectType), Op)); Status = AcpiDsScopeStackPop (WalkState); } return_ACPI_STATUS (Status); } src/acpica/source/components/dispatcher/dswload2.c000066400000000000000000000630771231470457100226040ustar00rootroot00000000000000/****************************************************************************** * * Module Name: dswload2 - Dispatcher second pass namespace load callbacks * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #define __DSWLOAD2_C__ #include "acpi.h" #include "accommon.h" #include "acparser.h" #include "amlcode.h" #include "acdispat.h" #include "acinterp.h" #include "acnamesp.h" #include "acevents.h" #define _COMPONENT ACPI_DISPATCHER ACPI_MODULE_NAME ("dswload2") /******************************************************************************* * * FUNCTION: AcpiDsLoad2BeginOp * * PARAMETERS: WalkState - Current state of the parse tree walk * OutOp - Wher to return op if a new one is created * * RETURN: Status * * DESCRIPTION: Descending callback used during the loading of ACPI tables. * ******************************************************************************/ ACPI_STATUS AcpiDsLoad2BeginOp ( ACPI_WALK_STATE *WalkState, ACPI_PARSE_OBJECT **OutOp) { ACPI_PARSE_OBJECT *Op; ACPI_NAMESPACE_NODE *Node; ACPI_STATUS Status; ACPI_OBJECT_TYPE ObjectType; char *BufferPtr; UINT32 Flags; ACPI_FUNCTION_TRACE (DsLoad2BeginOp); Op = WalkState->Op; ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, "Op=%p State=%p\n", Op, WalkState)); if (Op) { if ((WalkState->ControlState) && (WalkState->ControlState->Common.State == ACPI_CONTROL_CONDITIONAL_EXECUTING)) { /* We are executing a while loop outside of a method */ Status = AcpiDsExecBeginOp (WalkState, OutOp); return_ACPI_STATUS (Status); } /* We only care about Namespace opcodes here */ if ((!(WalkState->OpInfo->Flags & AML_NSOPCODE) && (WalkState->Opcode != AML_INT_NAMEPATH_OP)) || (!(WalkState->OpInfo->Flags & AML_NAMED))) { return_ACPI_STATUS (AE_OK); } /* Get the name we are going to enter or lookup in the namespace */ if (WalkState->Opcode == AML_INT_NAMEPATH_OP) { /* For Namepath op, get the path string */ BufferPtr = Op->Common.Value.String; if (!BufferPtr) { /* No name, just exit */ return_ACPI_STATUS (AE_OK); } } else { /* Get name from the op */ BufferPtr = ACPI_CAST_PTR (char, &Op->Named.Name); } } else { /* Get the namestring from the raw AML */ BufferPtr = AcpiPsGetNextNamestring (&WalkState->ParserState); } /* Map the opcode into an internal object type */ ObjectType = WalkState->OpInfo->ObjectType; ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, "State=%p Op=%p Type=%X\n", WalkState, Op, ObjectType)); switch (WalkState->Opcode) { case AML_FIELD_OP: case AML_BANK_FIELD_OP: case AML_INDEX_FIELD_OP: Node = NULL; Status = AE_OK; break; case AML_INT_NAMEPATH_OP: /* * The NamePath is an object reference to an existing object. * Don't enter the name into the namespace, but look it up * for use later. */ Status = AcpiNsLookup (WalkState->ScopeInfo, BufferPtr, ObjectType, ACPI_IMODE_EXECUTE, ACPI_NS_SEARCH_PARENT, WalkState, &(Node)); break; case AML_SCOPE_OP: /* Special case for Scope(\) -> refers to the Root node */ if (Op && (Op->Named.Node == AcpiGbl_RootNode)) { Node = Op->Named.Node; Status = AcpiDsScopeStackPush (Node, ObjectType, WalkState); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } } else { /* * The Path is an object reference to an existing object. * Don't enter the name into the namespace, but look it up * for use later. */ Status = AcpiNsLookup (WalkState->ScopeInfo, BufferPtr, ObjectType, ACPI_IMODE_EXECUTE, ACPI_NS_SEARCH_PARENT, WalkState, &(Node)); if (ACPI_FAILURE (Status)) { #ifdef ACPI_ASL_COMPILER if (Status == AE_NOT_FOUND) { Status = AE_OK; } else { ACPI_ERROR_NAMESPACE (BufferPtr, Status); } #else ACPI_ERROR_NAMESPACE (BufferPtr, Status); #endif return_ACPI_STATUS (Status); } } /* * We must check to make sure that the target is * one of the opcodes that actually opens a scope */ switch (Node->Type) { case ACPI_TYPE_ANY: case ACPI_TYPE_LOCAL_SCOPE: /* Scope */ case ACPI_TYPE_DEVICE: case ACPI_TYPE_POWER: case ACPI_TYPE_PROCESSOR: case ACPI_TYPE_THERMAL: /* These are acceptable types */ break; case ACPI_TYPE_INTEGER: case ACPI_TYPE_STRING: case ACPI_TYPE_BUFFER: /* * These types we will allow, but we will change the type. * This enables some existing code of the form: * * Name (DEB, 0) * Scope (DEB) { ... } */ ACPI_WARNING ((AE_INFO, "Type override - [%4.4s] had invalid type (%s) " "for Scope operator, changed to type ANY", AcpiUtGetNodeName (Node), AcpiUtGetTypeName (Node->Type))); Node->Type = ACPI_TYPE_ANY; WalkState->ScopeInfo->Common.Value = ACPI_TYPE_ANY; break; case ACPI_TYPE_METHOD: /* * Allow scope change to root during execution of module-level * code. Root is typed METHOD during this time. */ if ((Node == AcpiGbl_RootNode) && (WalkState->ParseFlags & ACPI_PARSE_MODULE_LEVEL)) { break; } /*lint -fallthrough */ default: /* All other types are an error */ ACPI_ERROR ((AE_INFO, "Invalid type (%s) for target of " "Scope operator [%4.4s] (Cannot override)", AcpiUtGetTypeName (Node->Type), AcpiUtGetNodeName (Node))); return_ACPI_STATUS (AE_AML_OPERAND_TYPE); } break; default: /* All other opcodes */ if (Op && Op->Common.Node) { /* This op/node was previously entered into the namespace */ Node = Op->Common.Node; if (AcpiNsOpensScope (ObjectType)) { Status = AcpiDsScopeStackPush (Node, ObjectType, WalkState); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } } return_ACPI_STATUS (AE_OK); } /* * Enter the named type into the internal namespace. We enter the name * as we go downward in the parse tree. Any necessary subobjects that * involve arguments to the opcode must be created as we go back up the * parse tree later. * * Note: Name may already exist if we are executing a deferred opcode. */ if (WalkState->DeferredNode) { /* This name is already in the namespace, get the node */ Node = WalkState->DeferredNode; Status = AE_OK; break; } Flags = ACPI_NS_NO_UPSEARCH; if (WalkState->PassNumber == ACPI_IMODE_EXECUTE) { /* Execution mode, node cannot already exist, node is temporary */ Flags |= ACPI_NS_ERROR_IF_FOUND; if (!(WalkState->ParseFlags & ACPI_PARSE_MODULE_LEVEL)) { Flags |= ACPI_NS_TEMPORARY; } } /* Add new entry or lookup existing entry */ Status = AcpiNsLookup (WalkState->ScopeInfo, BufferPtr, ObjectType, ACPI_IMODE_LOAD_PASS2, Flags, WalkState, &Node); if (ACPI_SUCCESS (Status) && (Flags & ACPI_NS_TEMPORARY)) { ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, "***New Node [%4.4s] %p is temporary\n", AcpiUtGetNodeName (Node), Node)); } break; } if (ACPI_FAILURE (Status)) { ACPI_ERROR_NAMESPACE (BufferPtr, Status); return_ACPI_STATUS (Status); } if (!Op) { /* Create a new op */ Op = AcpiPsAllocOp (WalkState->Opcode); if (!Op) { return_ACPI_STATUS (AE_NO_MEMORY); } /* Initialize the new op */ if (Node) { Op->Named.Name = Node->Name.Integer; } *OutOp = Op; } /* * Put the Node in the "op" object that the parser uses, so we * can get it again quickly when this scope is closed */ Op->Common.Node = Node; return_ACPI_STATUS (Status); } /******************************************************************************* * * FUNCTION: AcpiDsLoad2EndOp * * PARAMETERS: WalkState - Current state of the parse tree walk * * RETURN: Status * * DESCRIPTION: Ascending callback used during the loading of the namespace, * both control methods and everything else. * ******************************************************************************/ ACPI_STATUS AcpiDsLoad2EndOp ( ACPI_WALK_STATE *WalkState) { ACPI_PARSE_OBJECT *Op; ACPI_STATUS Status = AE_OK; ACPI_OBJECT_TYPE ObjectType; ACPI_NAMESPACE_NODE *Node; ACPI_PARSE_OBJECT *Arg; ACPI_NAMESPACE_NODE *NewNode; #ifndef ACPI_NO_METHOD_EXECUTION UINT32 i; UINT8 RegionSpace; #endif ACPI_FUNCTION_TRACE (DsLoad2EndOp); Op = WalkState->Op; ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, "Opcode [%s] Op %p State %p\n", WalkState->OpInfo->Name, Op, WalkState)); /* Check if opcode had an associated namespace object */ if (!(WalkState->OpInfo->Flags & AML_NSOBJECT)) { return_ACPI_STATUS (AE_OK); } if (Op->Common.AmlOpcode == AML_SCOPE_OP) { ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, "Ending scope Op=%p State=%p\n", Op, WalkState)); } ObjectType = WalkState->OpInfo->ObjectType; /* * Get the Node/name from the earlier lookup * (It was saved in the *op structure) */ Node = Op->Common.Node; /* * Put the Node on the object stack (Contains the ACPI Name of * this object) */ WalkState->Operands[0] = (void *) Node; WalkState->NumOperands = 1; /* Pop the scope stack */ if (AcpiNsOpensScope (ObjectType) && (Op->Common.AmlOpcode != AML_INT_METHODCALL_OP)) { ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, "(%s) Popping scope for Op %p\n", AcpiUtGetTypeName (ObjectType), Op)); Status = AcpiDsScopeStackPop (WalkState); if (ACPI_FAILURE (Status)) { goto Cleanup; } } /* * Named operations are as follows: * * AML_ALIAS * AML_BANKFIELD * AML_CREATEBITFIELD * AML_CREATEBYTEFIELD * AML_CREATEDWORDFIELD * AML_CREATEFIELD * AML_CREATEQWORDFIELD * AML_CREATEWORDFIELD * AML_DATA_REGION * AML_DEVICE * AML_EVENT * AML_FIELD * AML_INDEXFIELD * AML_METHOD * AML_METHODCALL * AML_MUTEX * AML_NAME * AML_NAMEDFIELD * AML_OPREGION * AML_POWERRES * AML_PROCESSOR * AML_SCOPE * AML_THERMALZONE */ ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, "Create-Load [%s] State=%p Op=%p NamedObj=%p\n", AcpiPsGetOpcodeName (Op->Common.AmlOpcode), WalkState, Op, Node)); /* Decode the opcode */ Arg = Op->Common.Value.Arg; switch (WalkState->OpInfo->Type) { #ifndef ACPI_NO_METHOD_EXECUTION case AML_TYPE_CREATE_FIELD: /* * Create the field object, but the field buffer and index must * be evaluated later during the execution phase */ Status = AcpiDsCreateBufferField (Op, WalkState); break; case AML_TYPE_NAMED_FIELD: /* * If we are executing a method, initialize the field */ if (WalkState->MethodNode) { Status = AcpiDsInitFieldObjects (Op, WalkState); } switch (Op->Common.AmlOpcode) { case AML_INDEX_FIELD_OP: Status = AcpiDsCreateIndexField (Op, (ACPI_HANDLE) Arg->Common.Node, WalkState); break; case AML_BANK_FIELD_OP: Status = AcpiDsCreateBankField (Op, Arg->Common.Node, WalkState); break; case AML_FIELD_OP: Status = AcpiDsCreateField (Op, Arg->Common.Node, WalkState); break; default: /* All NAMED_FIELD opcodes must be handled above */ break; } break; case AML_TYPE_NAMED_SIMPLE: Status = AcpiDsCreateOperands (WalkState, Arg); if (ACPI_FAILURE (Status)) { goto Cleanup; } switch (Op->Common.AmlOpcode) { case AML_PROCESSOR_OP: Status = AcpiExCreateProcessor (WalkState); break; case AML_POWER_RES_OP: Status = AcpiExCreatePowerResource (WalkState); break; case AML_MUTEX_OP: Status = AcpiExCreateMutex (WalkState); break; case AML_EVENT_OP: Status = AcpiExCreateEvent (WalkState); break; case AML_ALIAS_OP: Status = AcpiExCreateAlias (WalkState); break; default: /* Unknown opcode */ Status = AE_OK; goto Cleanup; } /* Delete operands */ for (i = 1; i < WalkState->NumOperands; i++) { AcpiUtRemoveReference (WalkState->Operands[i]); WalkState->Operands[i] = NULL; } break; #endif /* ACPI_NO_METHOD_EXECUTION */ case AML_TYPE_NAMED_COMPLEX: switch (Op->Common.AmlOpcode) { #ifndef ACPI_NO_METHOD_EXECUTION case AML_REGION_OP: case AML_DATA_REGION_OP: if (Op->Common.AmlOpcode == AML_REGION_OP) { RegionSpace = (ACPI_ADR_SPACE_TYPE) ((Op->Common.Value.Arg)->Common.Value.Integer); } else { RegionSpace = ACPI_ADR_SPACE_DATA_TABLE; } /* * The OpRegion is not fully parsed at this time. The only valid * argument is the SpaceId. (We must save the address of the * AML of the address and length operands) * * If we have a valid region, initialize it. The namespace is * unlocked at this point. * * Need to unlock interpreter if it is locked (if we are running * a control method), in order to allow _REG methods to be run * during AcpiEvInitializeRegion. */ if (WalkState->MethodNode) { /* * Executing a method: initialize the region and unlock * the interpreter */ Status = AcpiExCreateRegion (Op->Named.Data, Op->Named.Length, RegionSpace, WalkState); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } AcpiExExitInterpreter (); } Status = AcpiEvInitializeRegion (AcpiNsGetAttachedObject (Node), FALSE); if (WalkState->MethodNode) { AcpiExEnterInterpreter (); } if (ACPI_FAILURE (Status)) { /* * If AE_NOT_EXIST is returned, it is not fatal * because many regions get created before a handler * is installed for said region. */ if (AE_NOT_EXIST == Status) { Status = AE_OK; } } break; case AML_NAME_OP: Status = AcpiDsCreateNode (WalkState, Node, Op); break; case AML_METHOD_OP: /* * MethodOp PkgLength NameString MethodFlags TermList * * Note: We must create the method node/object pair as soon as we * see the method declaration. This allows later pass1 parsing * of invocations of the method (need to know the number of * arguments.) */ ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, "LOADING-Method: State=%p Op=%p NamedObj=%p\n", WalkState, Op, Op->Named.Node)); if (!AcpiNsGetAttachedObject (Op->Named.Node)) { WalkState->Operands[0] = ACPI_CAST_PTR (void, Op->Named.Node); WalkState->NumOperands = 1; Status = AcpiDsCreateOperands (WalkState, Op->Common.Value.Arg); if (ACPI_SUCCESS (Status)) { Status = AcpiExCreateMethod (Op->Named.Data, Op->Named.Length, WalkState); } WalkState->Operands[0] = NULL; WalkState->NumOperands = 0; if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } } break; #endif /* ACPI_NO_METHOD_EXECUTION */ default: /* All NAMED_COMPLEX opcodes must be handled above */ break; } break; case AML_CLASS_INTERNAL: /* case AML_INT_NAMEPATH_OP: */ break; case AML_CLASS_METHOD_CALL: ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, "RESOLVING-MethodCall: State=%p Op=%p NamedObj=%p\n", WalkState, Op, Node)); /* * Lookup the method name and save the Node */ Status = AcpiNsLookup (WalkState->ScopeInfo, Arg->Common.Value.String, ACPI_TYPE_ANY, ACPI_IMODE_LOAD_PASS2, ACPI_NS_SEARCH_PARENT | ACPI_NS_DONT_OPEN_SCOPE, WalkState, &(NewNode)); if (ACPI_SUCCESS (Status)) { /* * Make sure that what we found is indeed a method * We didn't search for a method on purpose, to see if the name * would resolve */ if (NewNode->Type != ACPI_TYPE_METHOD) { Status = AE_AML_OPERAND_TYPE; } /* We could put the returned object (Node) on the object stack for * later, but for now, we will put it in the "op" object that the * parser uses, so we can get it again at the end of this scope */ Op->Common.Node = NewNode; } else { ACPI_ERROR_NAMESPACE (Arg->Common.Value.String, Status); } break; default: break; } Cleanup: /* Remove the Node pushed at the very beginning */ WalkState->Operands[0] = NULL; WalkState->NumOperands = 0; return_ACPI_STATUS (Status); } src/acpica/source/components/dispatcher/dswscope.c000066400000000000000000000257271231470457100227140ustar00rootroot00000000000000/****************************************************************************** * * Module Name: dswscope - Scope stack manipulation * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #define __DSWSCOPE_C__ #include "acpi.h" #include "accommon.h" #include "acdispat.h" #define _COMPONENT ACPI_DISPATCHER ACPI_MODULE_NAME ("dswscope") /**************************************************************************** * * FUNCTION: AcpiDsScopeStackClear * * PARAMETERS: WalkState - Current state * * RETURN: None * * DESCRIPTION: Pop (and free) everything on the scope stack except the * root scope object (which remains at the stack top.) * ***************************************************************************/ void AcpiDsScopeStackClear ( ACPI_WALK_STATE *WalkState) { ACPI_GENERIC_STATE *ScopeInfo; ACPI_FUNCTION_NAME (DsScopeStackClear); while (WalkState->ScopeInfo) { /* Pop a scope off the stack */ ScopeInfo = WalkState->ScopeInfo; WalkState->ScopeInfo = ScopeInfo->Scope.Next; ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Popped object type (%s)\n", AcpiUtGetTypeName (ScopeInfo->Common.Value))); AcpiUtDeleteGenericState (ScopeInfo); } } /**************************************************************************** * * FUNCTION: AcpiDsScopeStackPush * * PARAMETERS: Node - Name to be made current * Type - Type of frame being pushed * WalkState - Current state * * RETURN: Status * * DESCRIPTION: Push the current scope on the scope stack, and make the * passed Node current. * ***************************************************************************/ ACPI_STATUS AcpiDsScopeStackPush ( ACPI_NAMESPACE_NODE *Node, ACPI_OBJECT_TYPE Type, ACPI_WALK_STATE *WalkState) { ACPI_GENERIC_STATE *ScopeInfo; ACPI_GENERIC_STATE *OldScopeInfo; ACPI_FUNCTION_TRACE (DsScopeStackPush); if (!Node) { /* Invalid scope */ ACPI_ERROR ((AE_INFO, "Null scope parameter")); return_ACPI_STATUS (AE_BAD_PARAMETER); } /* Make sure object type is valid */ if (!AcpiUtValidObjectType (Type)) { ACPI_WARNING ((AE_INFO, "Invalid object type: 0x%X", Type)); } /* Allocate a new scope object */ ScopeInfo = AcpiUtCreateGenericState (); if (!ScopeInfo) { return_ACPI_STATUS (AE_NO_MEMORY); } /* Init new scope object */ ScopeInfo->Common.DescriptorType = ACPI_DESC_TYPE_STATE_WSCOPE; ScopeInfo->Scope.Node = Node; ScopeInfo->Common.Value = (UINT16) Type; WalkState->ScopeDepth++; ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "[%.2d] Pushed scope ", (UINT32) WalkState->ScopeDepth)); OldScopeInfo = WalkState->ScopeInfo; if (OldScopeInfo) { ACPI_DEBUG_PRINT_RAW ((ACPI_DB_EXEC, "[%4.4s] (%s)", AcpiUtGetNodeName (OldScopeInfo->Scope.Node), AcpiUtGetTypeName (OldScopeInfo->Common.Value))); } else { ACPI_DEBUG_PRINT_RAW ((ACPI_DB_EXEC, "[\\___] (%s)", "ROOT")); } ACPI_DEBUG_PRINT_RAW ((ACPI_DB_EXEC, ", New scope -> [%4.4s] (%s)\n", AcpiUtGetNodeName (ScopeInfo->Scope.Node), AcpiUtGetTypeName (ScopeInfo->Common.Value))); /* Push new scope object onto stack */ AcpiUtPushGenericState (&WalkState->ScopeInfo, ScopeInfo); return_ACPI_STATUS (AE_OK); } /**************************************************************************** * * FUNCTION: AcpiDsScopeStackPop * * PARAMETERS: WalkState - Current state * * RETURN: Status * * DESCRIPTION: Pop the scope stack once. * ***************************************************************************/ ACPI_STATUS AcpiDsScopeStackPop ( ACPI_WALK_STATE *WalkState) { ACPI_GENERIC_STATE *ScopeInfo; ACPI_GENERIC_STATE *NewScopeInfo; ACPI_FUNCTION_TRACE (DsScopeStackPop); /* * Pop scope info object off the stack. */ ScopeInfo = AcpiUtPopGenericState (&WalkState->ScopeInfo); if (!ScopeInfo) { return_ACPI_STATUS (AE_STACK_UNDERFLOW); } WalkState->ScopeDepth--; ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "[%.2d] Popped scope [%4.4s] (%s), New scope -> ", (UINT32) WalkState->ScopeDepth, AcpiUtGetNodeName (ScopeInfo->Scope.Node), AcpiUtGetTypeName (ScopeInfo->Common.Value))); NewScopeInfo = WalkState->ScopeInfo; if (NewScopeInfo) { ACPI_DEBUG_PRINT_RAW ((ACPI_DB_EXEC, "[%4.4s] (%s)\n", AcpiUtGetNodeName (NewScopeInfo->Scope.Node), AcpiUtGetTypeName (NewScopeInfo->Common.Value))); } else { ACPI_DEBUG_PRINT_RAW ((ACPI_DB_EXEC, "[\\___] (ROOT)\n")); } AcpiUtDeleteGenericState (ScopeInfo); return_ACPI_STATUS (AE_OK); } src/acpica/source/components/dispatcher/dswstate.c000066400000000000000000000647101231470457100227160ustar00rootroot00000000000000/****************************************************************************** * * Module Name: dswstate - Dispatcher parse tree walk management routines * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #define __DSWSTATE_C__ #include "acpi.h" #include "accommon.h" #include "acparser.h" #include "acdispat.h" #include "acnamesp.h" #define _COMPONENT ACPI_DISPATCHER ACPI_MODULE_NAME ("dswstate") /* Local prototypes */ static ACPI_STATUS AcpiDsResultStackPush ( ACPI_WALK_STATE *WalkState); static ACPI_STATUS AcpiDsResultStackPop ( ACPI_WALK_STATE *WalkState); /******************************************************************************* * * FUNCTION: AcpiDsResultPop * * PARAMETERS: Object - Where to return the popped object * WalkState - Current Walk state * * RETURN: Status * * DESCRIPTION: Pop an object off the top of this walk's result stack * ******************************************************************************/ ACPI_STATUS AcpiDsResultPop ( ACPI_OPERAND_OBJECT **Object, ACPI_WALK_STATE *WalkState) { UINT32 Index; ACPI_GENERIC_STATE *State; ACPI_STATUS Status; ACPI_FUNCTION_NAME (DsResultPop); State = WalkState->Results; /* Incorrect state of result stack */ if (State && !WalkState->ResultCount) { ACPI_ERROR ((AE_INFO, "No results on result stack")); return (AE_AML_INTERNAL); } if (!State && WalkState->ResultCount) { ACPI_ERROR ((AE_INFO, "No result state for result stack")); return (AE_AML_INTERNAL); } /* Empty result stack */ if (!State) { ACPI_ERROR ((AE_INFO, "Result stack is empty! State=%p", WalkState)); return (AE_AML_NO_RETURN_VALUE); } /* Return object of the top element and clean that top element result stack */ WalkState->ResultCount--; Index = (UINT32) WalkState->ResultCount % ACPI_RESULTS_FRAME_OBJ_NUM; *Object = State->Results.ObjDesc [Index]; if (!*Object) { ACPI_ERROR ((AE_INFO, "No result objects on result stack, State=%p", WalkState)); return (AE_AML_NO_RETURN_VALUE); } State->Results.ObjDesc [Index] = NULL; if (Index == 0) { Status = AcpiDsResultStackPop (WalkState); if (ACPI_FAILURE (Status)) { return (Status); } } ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Obj=%p [%s] Index=%X State=%p Num=%X\n", *Object, AcpiUtGetObjectTypeName (*Object), Index, WalkState, WalkState->ResultCount)); return (AE_OK); } /******************************************************************************* * * FUNCTION: AcpiDsResultPush * * PARAMETERS: Object - Where to return the popped object * WalkState - Current Walk state * * RETURN: Status * * DESCRIPTION: Push an object onto the current result stack * ******************************************************************************/ ACPI_STATUS AcpiDsResultPush ( ACPI_OPERAND_OBJECT *Object, ACPI_WALK_STATE *WalkState) { ACPI_GENERIC_STATE *State; ACPI_STATUS Status; UINT32 Index; ACPI_FUNCTION_NAME (DsResultPush); if (WalkState->ResultCount > WalkState->ResultSize) { ACPI_ERROR ((AE_INFO, "Result stack is full")); return (AE_AML_INTERNAL); } else if (WalkState->ResultCount == WalkState->ResultSize) { /* Extend the result stack */ Status = AcpiDsResultStackPush (WalkState); if (ACPI_FAILURE (Status)) { ACPI_ERROR ((AE_INFO, "Failed to extend the result stack")); return (Status); } } if (!(WalkState->ResultCount < WalkState->ResultSize)) { ACPI_ERROR ((AE_INFO, "No free elements in result stack")); return (AE_AML_INTERNAL); } State = WalkState->Results; if (!State) { ACPI_ERROR ((AE_INFO, "No result stack frame during push")); return (AE_AML_INTERNAL); } if (!Object) { ACPI_ERROR ((AE_INFO, "Null Object! Obj=%p State=%p Num=%u", Object, WalkState, WalkState->ResultCount)); return (AE_BAD_PARAMETER); } /* Assign the address of object to the top free element of result stack */ Index = (UINT32) WalkState->ResultCount % ACPI_RESULTS_FRAME_OBJ_NUM; State->Results.ObjDesc [Index] = Object; WalkState->ResultCount++; ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Obj=%p [%s] State=%p Num=%X Cur=%X\n", Object, AcpiUtGetObjectTypeName ((ACPI_OPERAND_OBJECT *) Object), WalkState, WalkState->ResultCount, WalkState->CurrentResult)); return (AE_OK); } /******************************************************************************* * * FUNCTION: AcpiDsResultStackPush * * PARAMETERS: WalkState - Current Walk state * * RETURN: Status * * DESCRIPTION: Push an object onto the WalkState result stack * ******************************************************************************/ static ACPI_STATUS AcpiDsResultStackPush ( ACPI_WALK_STATE *WalkState) { ACPI_GENERIC_STATE *State; ACPI_FUNCTION_NAME (DsResultStackPush); /* Check for stack overflow */ if (((UINT32) WalkState->ResultSize + ACPI_RESULTS_FRAME_OBJ_NUM) > ACPI_RESULTS_OBJ_NUM_MAX) { ACPI_ERROR ((AE_INFO, "Result stack overflow: State=%p Num=%u", WalkState, WalkState->ResultSize)); return (AE_STACK_OVERFLOW); } State = AcpiUtCreateGenericState (); if (!State) { return (AE_NO_MEMORY); } State->Common.DescriptorType = ACPI_DESC_TYPE_STATE_RESULT; AcpiUtPushGenericState (&WalkState->Results, State); /* Increase the length of the result stack by the length of frame */ WalkState->ResultSize += ACPI_RESULTS_FRAME_OBJ_NUM; ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Results=%p State=%p\n", State, WalkState)); return (AE_OK); } /******************************************************************************* * * FUNCTION: AcpiDsResultStackPop * * PARAMETERS: WalkState - Current Walk state * * RETURN: Status * * DESCRIPTION: Pop an object off of the WalkState result stack * ******************************************************************************/ static ACPI_STATUS AcpiDsResultStackPop ( ACPI_WALK_STATE *WalkState) { ACPI_GENERIC_STATE *State; ACPI_FUNCTION_NAME (DsResultStackPop); /* Check for stack underflow */ if (WalkState->Results == NULL) { ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Result stack underflow - State=%p\n", WalkState)); return (AE_AML_NO_OPERAND); } if (WalkState->ResultSize < ACPI_RESULTS_FRAME_OBJ_NUM) { ACPI_ERROR ((AE_INFO, "Insufficient result stack size")); return (AE_AML_INTERNAL); } State = AcpiUtPopGenericState (&WalkState->Results); AcpiUtDeleteGenericState (State); /* Decrease the length of result stack by the length of frame */ WalkState->ResultSize -= ACPI_RESULTS_FRAME_OBJ_NUM; ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Result=%p RemainingResults=%X State=%p\n", State, WalkState->ResultCount, WalkState)); return (AE_OK); } /******************************************************************************* * * FUNCTION: AcpiDsObjStackPush * * PARAMETERS: Object - Object to push * WalkState - Current Walk state * * RETURN: Status * * DESCRIPTION: Push an object onto this walk's object/operand stack * ******************************************************************************/ ACPI_STATUS AcpiDsObjStackPush ( void *Object, ACPI_WALK_STATE *WalkState) { ACPI_FUNCTION_NAME (DsObjStackPush); /* Check for stack overflow */ if (WalkState->NumOperands >= ACPI_OBJ_NUM_OPERANDS) { ACPI_ERROR ((AE_INFO, "Object stack overflow! Obj=%p State=%p #Ops=%u", Object, WalkState, WalkState->NumOperands)); return (AE_STACK_OVERFLOW); } /* Put the object onto the stack */ WalkState->Operands [WalkState->OperandIndex] = Object; WalkState->NumOperands++; /* For the usual order of filling the operand stack */ WalkState->OperandIndex++; ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Obj=%p [%s] State=%p #Ops=%X\n", Object, AcpiUtGetObjectTypeName ((ACPI_OPERAND_OBJECT *) Object), WalkState, WalkState->NumOperands)); return (AE_OK); } /******************************************************************************* * * FUNCTION: AcpiDsObjStackPop * * PARAMETERS: PopCount - Number of objects/entries to pop * WalkState - Current Walk state * * RETURN: Status * * DESCRIPTION: Pop this walk's object stack. Objects on the stack are NOT * deleted by this routine. * ******************************************************************************/ ACPI_STATUS AcpiDsObjStackPop ( UINT32 PopCount, ACPI_WALK_STATE *WalkState) { UINT32 i; ACPI_FUNCTION_NAME (DsObjStackPop); for (i = 0; i < PopCount; i++) { /* Check for stack underflow */ if (WalkState->NumOperands == 0) { ACPI_ERROR ((AE_INFO, "Object stack underflow! Count=%X State=%p #Ops=%u", PopCount, WalkState, WalkState->NumOperands)); return (AE_STACK_UNDERFLOW); } /* Just set the stack entry to null */ WalkState->NumOperands--; WalkState->Operands [WalkState->NumOperands] = NULL; } ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Count=%X State=%p #Ops=%u\n", PopCount, WalkState, WalkState->NumOperands)); return (AE_OK); } /******************************************************************************* * * FUNCTION: AcpiDsObjStackPopAndDelete * * PARAMETERS: PopCount - Number of objects/entries to pop * WalkState - Current Walk state * * RETURN: Status * * DESCRIPTION: Pop this walk's object stack and delete each object that is * popped off. * ******************************************************************************/ void AcpiDsObjStackPopAndDelete ( UINT32 PopCount, ACPI_WALK_STATE *WalkState) { INT32 i; ACPI_OPERAND_OBJECT *ObjDesc; ACPI_FUNCTION_NAME (DsObjStackPopAndDelete); if (PopCount == 0) { return; } for (i = (INT32) PopCount - 1; i >= 0; i--) { if (WalkState->NumOperands == 0) { return; } /* Pop the stack and delete an object if present in this stack entry */ WalkState->NumOperands--; ObjDesc = WalkState->Operands [i]; if (ObjDesc) { AcpiUtRemoveReference (WalkState->Operands [i]); WalkState->Operands [i] = NULL; } } ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Count=%X State=%p #Ops=%X\n", PopCount, WalkState, WalkState->NumOperands)); } /******************************************************************************* * * FUNCTION: AcpiDsGetCurrentWalkState * * PARAMETERS: Thread - Get current active state for this Thread * * RETURN: Pointer to the current walk state * * DESCRIPTION: Get the walk state that is at the head of the list (the "current" * walk state.) * ******************************************************************************/ ACPI_WALK_STATE * AcpiDsGetCurrentWalkState ( ACPI_THREAD_STATE *Thread) { ACPI_FUNCTION_NAME (DsGetCurrentWalkState); if (!Thread) { return (NULL); } ACPI_DEBUG_PRINT ((ACPI_DB_PARSE, "Current WalkState %p\n", Thread->WalkStateList)); return (Thread->WalkStateList); } /******************************************************************************* * * FUNCTION: AcpiDsPushWalkState * * PARAMETERS: WalkState - State to push * Thread - Thread state object * * RETURN: None * * DESCRIPTION: Place the Thread state at the head of the state list * ******************************************************************************/ void AcpiDsPushWalkState ( ACPI_WALK_STATE *WalkState, ACPI_THREAD_STATE *Thread) { ACPI_FUNCTION_TRACE (DsPushWalkState); WalkState->Next = Thread->WalkStateList; Thread->WalkStateList = WalkState; return_VOID; } /******************************************************************************* * * FUNCTION: AcpiDsPopWalkState * * PARAMETERS: Thread - Current thread state * * RETURN: A WalkState object popped from the thread's stack * * DESCRIPTION: Remove and return the walkstate object that is at the head of * the walk stack for the given walk list. NULL indicates that * the list is empty. * ******************************************************************************/ ACPI_WALK_STATE * AcpiDsPopWalkState ( ACPI_THREAD_STATE *Thread) { ACPI_WALK_STATE *WalkState; ACPI_FUNCTION_TRACE (DsPopWalkState); WalkState = Thread->WalkStateList; if (WalkState) { /* Next walk state becomes the current walk state */ Thread->WalkStateList = WalkState->Next; /* * Don't clear the NEXT field, this serves as an indicator * that there is a parent WALK STATE * Do Not: WalkState->Next = NULL; */ } return_PTR (WalkState); } /******************************************************************************* * * FUNCTION: AcpiDsCreateWalkState * * PARAMETERS: OwnerId - ID for object creation * Origin - Starting point for this walk * MethodDesc - Method object * Thread - Current thread state * * RETURN: Pointer to the new walk state. * * DESCRIPTION: Allocate and initialize a new walk state. The current walk * state is set to this new state. * ******************************************************************************/ ACPI_WALK_STATE * AcpiDsCreateWalkState ( ACPI_OWNER_ID OwnerId, ACPI_PARSE_OBJECT *Origin, ACPI_OPERAND_OBJECT *MethodDesc, ACPI_THREAD_STATE *Thread) { ACPI_WALK_STATE *WalkState; ACPI_FUNCTION_TRACE (DsCreateWalkState); WalkState = ACPI_ALLOCATE_ZEROED (sizeof (ACPI_WALK_STATE)); if (!WalkState) { return_PTR (NULL); } WalkState->DescriptorType = ACPI_DESC_TYPE_WALK; WalkState->MethodDesc = MethodDesc; WalkState->OwnerId = OwnerId; WalkState->Origin = Origin; WalkState->Thread = Thread; WalkState->ParserState.StartOp = Origin; /* Init the method args/local */ #if (!defined (ACPI_NO_METHOD_EXECUTION) && !defined (ACPI_CONSTANT_EVAL_ONLY)) AcpiDsMethodDataInit (WalkState); #endif /* Put the new state at the head of the walk list */ if (Thread) { AcpiDsPushWalkState (WalkState, Thread); } return_PTR (WalkState); } /******************************************************************************* * * FUNCTION: AcpiDsInitAmlWalk * * PARAMETERS: WalkState - New state to be initialized * Op - Current parse op * MethodNode - Control method NS node, if any * AmlStart - Start of AML * AmlLength - Length of AML * Info - Method info block (params, etc.) * PassNumber - 1, 2, or 3 * * RETURN: Status * * DESCRIPTION: Initialize a walk state for a pass 1 or 2 parse tree walk * ******************************************************************************/ ACPI_STATUS AcpiDsInitAmlWalk ( ACPI_WALK_STATE *WalkState, ACPI_PARSE_OBJECT *Op, ACPI_NAMESPACE_NODE *MethodNode, UINT8 *AmlStart, UINT32 AmlLength, ACPI_EVALUATE_INFO *Info, UINT8 PassNumber) { ACPI_STATUS Status; ACPI_PARSE_STATE *ParserState = &WalkState->ParserState; ACPI_PARSE_OBJECT *ExtraOp; ACPI_FUNCTION_TRACE (DsInitAmlWalk); WalkState->ParserState.Aml = WalkState->ParserState.AmlStart = AmlStart; WalkState->ParserState.AmlEnd = WalkState->ParserState.PkgEnd = AmlStart + AmlLength; /* The NextOp of the NextWalk will be the beginning of the method */ WalkState->NextOp = NULL; WalkState->PassNumber = PassNumber; if (Info) { WalkState->Params = Info->Parameters; WalkState->CallerReturnDesc = &Info->ReturnObject; } Status = AcpiPsInitScope (&WalkState->ParserState, Op); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } if (MethodNode) { WalkState->ParserState.StartNode = MethodNode; WalkState->WalkType = ACPI_WALK_METHOD; WalkState->MethodNode = MethodNode; WalkState->MethodDesc = AcpiNsGetAttachedObject (MethodNode); /* Push start scope on scope stack and make it current */ Status = AcpiDsScopeStackPush (MethodNode, ACPI_TYPE_METHOD, WalkState); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } /* Init the method arguments */ Status = AcpiDsMethodDataInitArgs (WalkState->Params, ACPI_METHOD_NUM_ARGS, WalkState); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } } else { /* * Setup the current scope. * Find a Named Op that has a namespace node associated with it. * search upwards from this Op. Current scope is the first * Op with a namespace node. */ ExtraOp = ParserState->StartOp; while (ExtraOp && !ExtraOp->Common.Node) { ExtraOp = ExtraOp->Common.Parent; } if (!ExtraOp) { ParserState->StartNode = NULL; } else { ParserState->StartNode = ExtraOp->Common.Node; } if (ParserState->StartNode) { /* Push start scope on scope stack and make it current */ Status = AcpiDsScopeStackPush (ParserState->StartNode, ParserState->StartNode->Type, WalkState); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } } } Status = AcpiDsInitCallbacks (WalkState, PassNumber); return_ACPI_STATUS (Status); } /******************************************************************************* * * FUNCTION: AcpiDsDeleteWalkState * * PARAMETERS: WalkState - State to delete * * RETURN: Status * * DESCRIPTION: Delete a walk state including all internal data structures * ******************************************************************************/ void AcpiDsDeleteWalkState ( ACPI_WALK_STATE *WalkState) { ACPI_GENERIC_STATE *State; ACPI_FUNCTION_TRACE_PTR (DsDeleteWalkState, WalkState); if (!WalkState) { return_VOID; } if (WalkState->DescriptorType != ACPI_DESC_TYPE_WALK) { ACPI_ERROR ((AE_INFO, "%p is not a valid walk state", WalkState)); return_VOID; } /* There should not be any open scopes */ if (WalkState->ParserState.Scope) { ACPI_ERROR ((AE_INFO, "%p walk still has a scope list", WalkState)); AcpiPsCleanupScope (&WalkState->ParserState); } /* Always must free any linked control states */ while (WalkState->ControlState) { State = WalkState->ControlState; WalkState->ControlState = State->Common.Next; AcpiUtDeleteGenericState (State); } /* Always must free any linked parse states */ while (WalkState->ScopeInfo) { State = WalkState->ScopeInfo; WalkState->ScopeInfo = State->Common.Next; AcpiUtDeleteGenericState (State); } /* Always must free any stacked result states */ while (WalkState->Results) { State = WalkState->Results; WalkState->Results = State->Common.Next; AcpiUtDeleteGenericState (State); } ACPI_FREE (WalkState); return_VOID; } src/acpica/source/components/events/000077500000000000000000000000001231470457100200625ustar00rootroot00000000000000src/acpica/source/components/events/evevent.c000066400000000000000000000331631231470457100217100ustar00rootroot00000000000000/****************************************************************************** * * Module Name: evevent - Fixed Event handling and dispatch * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #include "acpi.h" #include "accommon.h" #include "acevents.h" #define _COMPONENT ACPI_EVENTS ACPI_MODULE_NAME ("evevent") #if (!ACPI_REDUCED_HARDWARE) /* Entire module */ /* Local prototypes */ static ACPI_STATUS AcpiEvFixedEventInitialize ( void); static UINT32 AcpiEvFixedEventDispatch ( UINT32 Event); /******************************************************************************* * * FUNCTION: AcpiEvInitializeEvents * * PARAMETERS: None * * RETURN: Status * * DESCRIPTION: Initialize global data structures for ACPI events (Fixed, GPE) * ******************************************************************************/ ACPI_STATUS AcpiEvInitializeEvents ( void) { ACPI_STATUS Status; ACPI_FUNCTION_TRACE (EvInitializeEvents); /* If Hardware Reduced flag is set, there are no fixed events */ if (AcpiGbl_ReducedHardware) { return_ACPI_STATUS (AE_OK); } /* * Initialize the Fixed and General Purpose Events. This is done prior to * enabling SCIs to prevent interrupts from occurring before the handlers * are installed. */ Status = AcpiEvFixedEventInitialize (); if (ACPI_FAILURE (Status)) { ACPI_EXCEPTION ((AE_INFO, Status, "Unable to initialize fixed events")); return_ACPI_STATUS (Status); } Status = AcpiEvGpeInitialize (); if (ACPI_FAILURE (Status)) { ACPI_EXCEPTION ((AE_INFO, Status, "Unable to initialize general purpose events")); return_ACPI_STATUS (Status); } return_ACPI_STATUS (Status); } /******************************************************************************* * * FUNCTION: AcpiEvInstallXruptHandlers * * PARAMETERS: None * * RETURN: Status * * DESCRIPTION: Install interrupt handlers for the SCI and Global Lock * ******************************************************************************/ ACPI_STATUS AcpiEvInstallXruptHandlers ( void) { ACPI_STATUS Status; ACPI_FUNCTION_TRACE (EvInstallXruptHandlers); /* If Hardware Reduced flag is set, there is no ACPI h/w */ if (AcpiGbl_ReducedHardware) { return_ACPI_STATUS (AE_OK); } /* Install the SCI handler */ Status = AcpiEvInstallSciHandler (); if (ACPI_FAILURE (Status)) { ACPI_EXCEPTION ((AE_INFO, Status, "Unable to install System Control Interrupt handler")); return_ACPI_STATUS (Status); } /* Install the handler for the Global Lock */ Status = AcpiEvInitGlobalLockHandler (); if (ACPI_FAILURE (Status)) { ACPI_EXCEPTION ((AE_INFO, Status, "Unable to initialize Global Lock handler")); return_ACPI_STATUS (Status); } AcpiGbl_EventsInitialized = TRUE; return_ACPI_STATUS (Status); } /******************************************************************************* * * FUNCTION: AcpiEvFixedEventInitialize * * PARAMETERS: None * * RETURN: Status * * DESCRIPTION: Install the fixed event handlers and disable all fixed events. * ******************************************************************************/ static ACPI_STATUS AcpiEvFixedEventInitialize ( void) { UINT32 i; ACPI_STATUS Status; /* * Initialize the structure that keeps track of fixed event handlers and * enable the fixed events. */ for (i = 0; i < ACPI_NUM_FIXED_EVENTS; i++) { AcpiGbl_FixedEventHandlers[i].Handler = NULL; AcpiGbl_FixedEventHandlers[i].Context = NULL; /* Disable the fixed event */ if (AcpiGbl_FixedEventInfo[i].EnableRegisterId != 0xFF) { Status = AcpiWriteBitRegister ( AcpiGbl_FixedEventInfo[i].EnableRegisterId, ACPI_DISABLE_EVENT); if (ACPI_FAILURE (Status)) { return (Status); } } } return (AE_OK); } /******************************************************************************* * * FUNCTION: AcpiEvFixedEventDetect * * PARAMETERS: None * * RETURN: INTERRUPT_HANDLED or INTERRUPT_NOT_HANDLED * * DESCRIPTION: Checks the PM status register for active fixed events * ******************************************************************************/ UINT32 AcpiEvFixedEventDetect ( void) { UINT32 IntStatus = ACPI_INTERRUPT_NOT_HANDLED; UINT32 FixedStatus; UINT32 FixedEnable; UINT32 i; ACPI_FUNCTION_NAME (EvFixedEventDetect); /* * Read the fixed feature status and enable registers, as all the cases * depend on their values. Ignore errors here. */ (void) AcpiHwRegisterRead (ACPI_REGISTER_PM1_STATUS, &FixedStatus); (void) AcpiHwRegisterRead (ACPI_REGISTER_PM1_ENABLE, &FixedEnable); ACPI_DEBUG_PRINT ((ACPI_DB_INTERRUPTS, "Fixed Event Block: Enable %08X Status %08X\n", FixedEnable, FixedStatus)); /* * Check for all possible Fixed Events and dispatch those that are active */ for (i = 0; i < ACPI_NUM_FIXED_EVENTS; i++) { /* Both the status and enable bits must be on for this event */ if ((FixedStatus & AcpiGbl_FixedEventInfo[i].StatusBitMask) && (FixedEnable & AcpiGbl_FixedEventInfo[i].EnableBitMask)) { /* * Found an active (signalled) event. Invoke global event * handler if present. */ AcpiFixedEventCount[i]++; if (AcpiGbl_GlobalEventHandler) { AcpiGbl_GlobalEventHandler (ACPI_EVENT_TYPE_FIXED, NULL, i, AcpiGbl_GlobalEventHandlerContext); } IntStatus |= AcpiEvFixedEventDispatch (i); } } return (IntStatus); } /******************************************************************************* * * FUNCTION: AcpiEvFixedEventDispatch * * PARAMETERS: Event - Event type * * RETURN: INTERRUPT_HANDLED or INTERRUPT_NOT_HANDLED * * DESCRIPTION: Clears the status bit for the requested event, calls the * handler that previously registered for the event. * NOTE: If there is no handler for the event, the event is * disabled to prevent further interrupts. * ******************************************************************************/ static UINT32 AcpiEvFixedEventDispatch ( UINT32 Event) { ACPI_FUNCTION_ENTRY (); /* Clear the status bit */ (void) AcpiWriteBitRegister ( AcpiGbl_FixedEventInfo[Event].StatusRegisterId, ACPI_CLEAR_STATUS); /* * Make sure that a handler exists. If not, report an error * and disable the event to prevent further interrupts. */ if (!AcpiGbl_FixedEventHandlers[Event].Handler) { (void) AcpiWriteBitRegister ( AcpiGbl_FixedEventInfo[Event].EnableRegisterId, ACPI_DISABLE_EVENT); ACPI_ERROR ((AE_INFO, "No installed handler for fixed event - %s (%u), disabling", AcpiUtGetEventName (Event), Event)); return (ACPI_INTERRUPT_NOT_HANDLED); } /* Invoke the Fixed Event handler */ return ((AcpiGbl_FixedEventHandlers[Event].Handler)( AcpiGbl_FixedEventHandlers[Event].Context)); } #endif /* !ACPI_REDUCED_HARDWARE */ src/acpica/source/components/events/evglock.c000066400000000000000000000364661231470457100216770ustar00rootroot00000000000000/****************************************************************************** * * Module Name: evglock - Global Lock support * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #include "acpi.h" #include "accommon.h" #include "acevents.h" #include "acinterp.h" #define _COMPONENT ACPI_EVENTS ACPI_MODULE_NAME ("evglock") #if (!ACPI_REDUCED_HARDWARE) /* Entire module */ /* Local prototypes */ static UINT32 AcpiEvGlobalLockHandler ( void *Context); /******************************************************************************* * * FUNCTION: AcpiEvInitGlobalLockHandler * * PARAMETERS: None * * RETURN: Status * * DESCRIPTION: Install a handler for the global lock release event * ******************************************************************************/ ACPI_STATUS AcpiEvInitGlobalLockHandler ( void) { ACPI_STATUS Status; ACPI_FUNCTION_TRACE (EvInitGlobalLockHandler); /* If Hardware Reduced flag is set, there is no global lock */ if (AcpiGbl_ReducedHardware) { return_ACPI_STATUS (AE_OK); } /* Attempt installation of the global lock handler */ Status = AcpiInstallFixedEventHandler (ACPI_EVENT_GLOBAL, AcpiEvGlobalLockHandler, NULL); /* * If the global lock does not exist on this platform, the attempt to * enable GBL_STATUS will fail (the GBL_ENABLE bit will not stick). * Map to AE_OK, but mark global lock as not present. Any attempt to * actually use the global lock will be flagged with an error. */ AcpiGbl_GlobalLockPresent = FALSE; if (Status == AE_NO_HARDWARE_RESPONSE) { ACPI_ERROR ((AE_INFO, "No response from Global Lock hardware, disabling lock")); return_ACPI_STATUS (AE_OK); } Status = AcpiOsCreateLock (&AcpiGbl_GlobalLockPendingLock); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } AcpiGbl_GlobalLockPending = FALSE; AcpiGbl_GlobalLockPresent = TRUE; return_ACPI_STATUS (Status); } /******************************************************************************* * * FUNCTION: AcpiEvRemoveGlobalLockHandler * * PARAMETERS: None * * RETURN: Status * * DESCRIPTION: Remove the handler for the Global Lock * ******************************************************************************/ ACPI_STATUS AcpiEvRemoveGlobalLockHandler ( void) { ACPI_STATUS Status; ACPI_FUNCTION_TRACE (EvRemoveGlobalLockHandler); AcpiGbl_GlobalLockPresent = FALSE; Status = AcpiRemoveFixedEventHandler (ACPI_EVENT_GLOBAL, AcpiEvGlobalLockHandler); AcpiOsDeleteLock (AcpiGbl_GlobalLockPendingLock); return_ACPI_STATUS (Status); } /******************************************************************************* * * FUNCTION: AcpiEvGlobalLockHandler * * PARAMETERS: Context - From thread interface, not used * * RETURN: ACPI_INTERRUPT_HANDLED * * DESCRIPTION: Invoked directly from the SCI handler when a global lock * release interrupt occurs. If there is actually a pending * request for the lock, signal the waiting thread. * ******************************************************************************/ static UINT32 AcpiEvGlobalLockHandler ( void *Context) { ACPI_STATUS Status; ACPI_CPU_FLAGS Flags; Flags = AcpiOsAcquireLock (AcpiGbl_GlobalLockPendingLock); /* * If a request for the global lock is not actually pending, * we are done. This handles "spurious" global lock interrupts * which are possible (and have been seen) with bad BIOSs. */ if (!AcpiGbl_GlobalLockPending) { goto CleanupAndExit; } /* * Send a unit to the global lock semaphore. The actual acquisition * of the global lock will be performed by the waiting thread. */ Status = AcpiOsSignalSemaphore (AcpiGbl_GlobalLockSemaphore, 1); if (ACPI_FAILURE (Status)) { ACPI_ERROR ((AE_INFO, "Could not signal Global Lock semaphore")); } AcpiGbl_GlobalLockPending = FALSE; CleanupAndExit: AcpiOsReleaseLock (AcpiGbl_GlobalLockPendingLock, Flags); return (ACPI_INTERRUPT_HANDLED); } /****************************************************************************** * * FUNCTION: AcpiEvAcquireGlobalLock * * PARAMETERS: Timeout - Max time to wait for the lock, in millisec. * * RETURN: Status * * DESCRIPTION: Attempt to gain ownership of the Global Lock. * * MUTEX: Interpreter must be locked * * Note: The original implementation allowed multiple threads to "acquire" the * Global Lock, and the OS would hold the lock until the last thread had * released it. However, this could potentially starve the BIOS out of the * lock, especially in the case where there is a tight handshake between the * Embedded Controller driver and the BIOS. Therefore, this implementation * allows only one thread to acquire the HW Global Lock at a time, and makes * the global lock appear as a standard mutex on the OS side. * *****************************************************************************/ ACPI_STATUS AcpiEvAcquireGlobalLock ( UINT16 Timeout) { ACPI_CPU_FLAGS Flags; ACPI_STATUS Status; BOOLEAN Acquired = FALSE; ACPI_FUNCTION_TRACE (EvAcquireGlobalLock); /* * Only one thread can acquire the GL at a time, the GlobalLockMutex * enforces this. This interface releases the interpreter if we must wait. */ Status = AcpiExSystemWaitMutex (AcpiGbl_GlobalLockMutex->Mutex.OsMutex, Timeout); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } /* * Update the global lock handle and check for wraparound. The handle is * only used for the external global lock interfaces, but it is updated * here to properly handle the case where a single thread may acquire the * lock via both the AML and the AcpiAcquireGlobalLock interfaces. The * handle is therefore updated on the first acquire from a given thread * regardless of where the acquisition request originated. */ AcpiGbl_GlobalLockHandle++; if (AcpiGbl_GlobalLockHandle == 0) { AcpiGbl_GlobalLockHandle = 1; } /* * Make sure that a global lock actually exists. If not, just * treat the lock as a standard mutex. */ if (!AcpiGbl_GlobalLockPresent) { AcpiGbl_GlobalLockAcquired = TRUE; return_ACPI_STATUS (AE_OK); } Flags = AcpiOsAcquireLock (AcpiGbl_GlobalLockPendingLock); do { /* Attempt to acquire the actual hardware lock */ ACPI_ACQUIRE_GLOBAL_LOCK (AcpiGbl_FACS, Acquired); if (Acquired) { AcpiGbl_GlobalLockAcquired = TRUE; ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Acquired hardware Global Lock\n")); break; } /* * Did not get the lock. The pending bit was set above, and * we must now wait until we receive the global lock * released interrupt. */ AcpiGbl_GlobalLockPending = TRUE; AcpiOsReleaseLock (AcpiGbl_GlobalLockPendingLock, Flags); ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Waiting for hardware Global Lock\n")); /* * Wait for handshake with the global lock interrupt handler. * This interface releases the interpreter if we must wait. */ Status = AcpiExSystemWaitSemaphore (AcpiGbl_GlobalLockSemaphore, ACPI_WAIT_FOREVER); Flags = AcpiOsAcquireLock (AcpiGbl_GlobalLockPendingLock); } while (ACPI_SUCCESS (Status)); AcpiGbl_GlobalLockPending = FALSE; AcpiOsReleaseLock (AcpiGbl_GlobalLockPendingLock, Flags); return_ACPI_STATUS (Status); } /******************************************************************************* * * FUNCTION: AcpiEvReleaseGlobalLock * * PARAMETERS: None * * RETURN: Status * * DESCRIPTION: Releases ownership of the Global Lock. * ******************************************************************************/ ACPI_STATUS AcpiEvReleaseGlobalLock ( void) { BOOLEAN Pending = FALSE; ACPI_STATUS Status = AE_OK; ACPI_FUNCTION_TRACE (EvReleaseGlobalLock); /* Lock must be already acquired */ if (!AcpiGbl_GlobalLockAcquired) { ACPI_WARNING ((AE_INFO, "Cannot release the ACPI Global Lock, it has not been acquired")); return_ACPI_STATUS (AE_NOT_ACQUIRED); } if (AcpiGbl_GlobalLockPresent) { /* Allow any thread to release the lock */ ACPI_RELEASE_GLOBAL_LOCK (AcpiGbl_FACS, Pending); /* * If the pending bit was set, we must write GBL_RLS to the control * register */ if (Pending) { Status = AcpiWriteBitRegister ( ACPI_BITREG_GLOBAL_LOCK_RELEASE, ACPI_ENABLE_EVENT); } ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Released hardware Global Lock\n")); } AcpiGbl_GlobalLockAcquired = FALSE; /* Release the local GL mutex */ AcpiOsReleaseMutex (AcpiGbl_GlobalLockMutex->Mutex.OsMutex); return_ACPI_STATUS (Status); } #endif /* !ACPI_REDUCED_HARDWARE */ src/acpica/source/components/events/evgpe.c000066400000000000000000000713631231470457100213460ustar00rootroot00000000000000/****************************************************************************** * * Module Name: evgpe - General Purpose Event handling and dispatch * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #include "acpi.h" #include "accommon.h" #include "acevents.h" #include "acnamesp.h" #define _COMPONENT ACPI_EVENTS ACPI_MODULE_NAME ("evgpe") #if (!ACPI_REDUCED_HARDWARE) /* Entire module */ /* Local prototypes */ static void ACPI_SYSTEM_XFACE AcpiEvAsynchExecuteGpeMethod ( void *Context); static void ACPI_SYSTEM_XFACE AcpiEvAsynchEnableGpe ( void *Context); /******************************************************************************* * * FUNCTION: AcpiEvUpdateGpeEnableMask * * PARAMETERS: GpeEventInfo - GPE to update * * RETURN: Status * * DESCRIPTION: Updates GPE register enable mask based upon whether there are * runtime references to this GPE * ******************************************************************************/ ACPI_STATUS AcpiEvUpdateGpeEnableMask ( ACPI_GPE_EVENT_INFO *GpeEventInfo) { ACPI_GPE_REGISTER_INFO *GpeRegisterInfo; UINT32 RegisterBit; ACPI_FUNCTION_TRACE (EvUpdateGpeEnableMask); GpeRegisterInfo = GpeEventInfo->RegisterInfo; if (!GpeRegisterInfo) { return_ACPI_STATUS (AE_NOT_EXIST); } RegisterBit = AcpiHwGetGpeRegisterBit (GpeEventInfo); /* Clear the run bit up front */ ACPI_CLEAR_BIT (GpeRegisterInfo->EnableForRun, RegisterBit); /* Set the mask bit only if there are references to this GPE */ if (GpeEventInfo->RuntimeCount) { ACPI_SET_BIT (GpeRegisterInfo->EnableForRun, (UINT8) RegisterBit); } return_ACPI_STATUS (AE_OK); } /******************************************************************************* * * FUNCTION: AcpiEvEnableGpe * * PARAMETERS: GpeEventInfo - GPE to enable * * RETURN: Status * * DESCRIPTION: Clear a GPE of stale events and enable it. * ******************************************************************************/ ACPI_STATUS AcpiEvEnableGpe ( ACPI_GPE_EVENT_INFO *GpeEventInfo) { ACPI_STATUS Status; ACPI_FUNCTION_TRACE (EvEnableGpe); /* * We will only allow a GPE to be enabled if it has either an associated * method (_Lxx/_Exx) or a handler, or is using the implicit notify * feature. Otherwise, the GPE will be immediately disabled by * AcpiEvGpeDispatch the first time it fires. */ if ((GpeEventInfo->Flags & ACPI_GPE_DISPATCH_MASK) == ACPI_GPE_DISPATCH_NONE) { return_ACPI_STATUS (AE_NO_HANDLER); } /* Clear the GPE (of stale events) */ Status = AcpiHwClearGpe (GpeEventInfo); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } /* Enable the requested GPE */ Status = AcpiHwLowSetGpe (GpeEventInfo, ACPI_GPE_ENABLE); return_ACPI_STATUS (Status); } /******************************************************************************* * * FUNCTION: AcpiEvAddGpeReference * * PARAMETERS: GpeEventInfo - Add a reference to this GPE * * RETURN: Status * * DESCRIPTION: Add a reference to a GPE. On the first reference, the GPE is * hardware-enabled. * ******************************************************************************/ ACPI_STATUS AcpiEvAddGpeReference ( ACPI_GPE_EVENT_INFO *GpeEventInfo) { ACPI_STATUS Status = AE_OK; ACPI_FUNCTION_TRACE (EvAddGpeReference); if (GpeEventInfo->RuntimeCount == ACPI_UINT8_MAX) { return_ACPI_STATUS (AE_LIMIT); } GpeEventInfo->RuntimeCount++; if (GpeEventInfo->RuntimeCount == 1) { /* Enable on first reference */ Status = AcpiEvUpdateGpeEnableMask (GpeEventInfo); if (ACPI_SUCCESS (Status)) { Status = AcpiEvEnableGpe (GpeEventInfo); } if (ACPI_FAILURE (Status)) { GpeEventInfo->RuntimeCount--; } } return_ACPI_STATUS (Status); } /******************************************************************************* * * FUNCTION: AcpiEvRemoveGpeReference * * PARAMETERS: GpeEventInfo - Remove a reference to this GPE * * RETURN: Status * * DESCRIPTION: Remove a reference to a GPE. When the last reference is * removed, the GPE is hardware-disabled. * ******************************************************************************/ ACPI_STATUS AcpiEvRemoveGpeReference ( ACPI_GPE_EVENT_INFO *GpeEventInfo) { ACPI_STATUS Status = AE_OK; ACPI_FUNCTION_TRACE (EvRemoveGpeReference); if (!GpeEventInfo->RuntimeCount) { return_ACPI_STATUS (AE_LIMIT); } GpeEventInfo->RuntimeCount--; if (!GpeEventInfo->RuntimeCount) { /* Disable on last reference */ Status = AcpiEvUpdateGpeEnableMask (GpeEventInfo); if (ACPI_SUCCESS (Status)) { Status = AcpiHwLowSetGpe (GpeEventInfo, ACPI_GPE_DISABLE); } if (ACPI_FAILURE (Status)) { GpeEventInfo->RuntimeCount++; } } return_ACPI_STATUS (Status); } /******************************************************************************* * * FUNCTION: AcpiEvLowGetGpeInfo * * PARAMETERS: GpeNumber - Raw GPE number * GpeBlock - A GPE info block * * RETURN: A GPE EventInfo struct. NULL if not a valid GPE (The GpeNumber * is not within the specified GPE block) * * DESCRIPTION: Returns the EventInfo struct associated with this GPE. This is * the low-level implementation of EvGetGpeEventInfo. * ******************************************************************************/ ACPI_GPE_EVENT_INFO * AcpiEvLowGetGpeInfo ( UINT32 GpeNumber, ACPI_GPE_BLOCK_INFO *GpeBlock) { UINT32 GpeIndex; /* * Validate that the GpeNumber is within the specified GpeBlock. * (Two steps) */ if (!GpeBlock || (GpeNumber < GpeBlock->BlockBaseNumber)) { return (NULL); } GpeIndex = GpeNumber - GpeBlock->BlockBaseNumber; if (GpeIndex >= GpeBlock->GpeCount) { return (NULL); } return (&GpeBlock->EventInfo[GpeIndex]); } /******************************************************************************* * * FUNCTION: AcpiEvGetGpeEventInfo * * PARAMETERS: GpeDevice - Device node. NULL for GPE0/GPE1 * GpeNumber - Raw GPE number * * RETURN: A GPE EventInfo struct. NULL if not a valid GPE * * DESCRIPTION: Returns the EventInfo struct associated with this GPE. * Validates the GpeBlock and the GpeNumber * * Should be called only when the GPE lists are semaphore locked * and not subject to change. * ******************************************************************************/ ACPI_GPE_EVENT_INFO * AcpiEvGetGpeEventInfo ( ACPI_HANDLE GpeDevice, UINT32 GpeNumber) { ACPI_OPERAND_OBJECT *ObjDesc; ACPI_GPE_EVENT_INFO *GpeInfo; UINT32 i; ACPI_FUNCTION_ENTRY (); /* A NULL GpeDevice means use the FADT-defined GPE block(s) */ if (!GpeDevice) { /* Examine GPE Block 0 and 1 (These blocks are permanent) */ for (i = 0; i < ACPI_MAX_GPE_BLOCKS; i++) { GpeInfo = AcpiEvLowGetGpeInfo (GpeNumber, AcpiGbl_GpeFadtBlocks[i]); if (GpeInfo) { return (GpeInfo); } } /* The GpeNumber was not in the range of either FADT GPE block */ return (NULL); } /* A Non-NULL GpeDevice means this is a GPE Block Device */ ObjDesc = AcpiNsGetAttachedObject ((ACPI_NAMESPACE_NODE *) GpeDevice); if (!ObjDesc || !ObjDesc->Device.GpeBlock) { return (NULL); } return (AcpiEvLowGetGpeInfo (GpeNumber, ObjDesc->Device.GpeBlock)); } /******************************************************************************* * * FUNCTION: AcpiEvGpeDetect * * PARAMETERS: GpeXruptList - Interrupt block for this interrupt. * Can have multiple GPE blocks attached. * * RETURN: INTERRUPT_HANDLED or INTERRUPT_NOT_HANDLED * * DESCRIPTION: Detect if any GP events have occurred. This function is * executed at interrupt level. * ******************************************************************************/ UINT32 AcpiEvGpeDetect ( ACPI_GPE_XRUPT_INFO *GpeXruptList) { ACPI_STATUS Status; ACPI_GPE_BLOCK_INFO *GpeBlock; ACPI_GPE_REGISTER_INFO *GpeRegisterInfo; UINT32 IntStatus = ACPI_INTERRUPT_NOT_HANDLED; UINT8 EnabledStatusByte; UINT32 StatusReg; UINT32 EnableReg; ACPI_CPU_FLAGS Flags; UINT32 i; UINT32 j; ACPI_FUNCTION_NAME (EvGpeDetect); /* Check for the case where there are no GPEs */ if (!GpeXruptList) { return (IntStatus); } /* * We need to obtain the GPE lock for both the data structs and registers * Note: Not necessary to obtain the hardware lock, since the GPE * registers are owned by the GpeLock. */ Flags = AcpiOsAcquireLock (AcpiGbl_GpeLock); /* Examine all GPE blocks attached to this interrupt level */ GpeBlock = GpeXruptList->GpeBlockListHead; while (GpeBlock) { /* * Read all of the 8-bit GPE status and enable registers in this GPE * block, saving all of them. Find all currently active GP events. */ for (i = 0; i < GpeBlock->RegisterCount; i++) { /* Get the next status/enable pair */ GpeRegisterInfo = &GpeBlock->RegisterInfo[i]; /* * Optimization: If there are no GPEs enabled within this * register, we can safely ignore the entire register. */ if (!(GpeRegisterInfo->EnableForRun | GpeRegisterInfo->EnableForWake)) { ACPI_DEBUG_PRINT ((ACPI_DB_INTERRUPTS, "Ignore disabled registers for GPE%02X-GPE%02X: " "RunEnable=%02X, WakeEnable=%02X\n", GpeRegisterInfo->BaseGpeNumber, GpeRegisterInfo->BaseGpeNumber + (ACPI_GPE_REGISTER_WIDTH - 1), GpeRegisterInfo->EnableForRun, GpeRegisterInfo->EnableForWake)); continue; } /* Read the Status Register */ Status = AcpiHwRead (&StatusReg, &GpeRegisterInfo->StatusAddress); if (ACPI_FAILURE (Status)) { goto UnlockAndExit; } /* Read the Enable Register */ Status = AcpiHwRead (&EnableReg, &GpeRegisterInfo->EnableAddress); if (ACPI_FAILURE (Status)) { goto UnlockAndExit; } ACPI_DEBUG_PRINT ((ACPI_DB_INTERRUPTS, "Read registers for GPE%02X-GPE%02X: Status=%02X, Enable=%02X, " "RunEnable=%02X, WakeEnable=%02X\n", GpeRegisterInfo->BaseGpeNumber, GpeRegisterInfo->BaseGpeNumber + (ACPI_GPE_REGISTER_WIDTH - 1), StatusReg, EnableReg, GpeRegisterInfo->EnableForRun, GpeRegisterInfo->EnableForWake)); /* Check if there is anything active at all in this register */ EnabledStatusByte = (UINT8) (StatusReg & EnableReg); if (!EnabledStatusByte) { /* No active GPEs in this register, move on */ continue; } /* Now look at the individual GPEs in this byte register */ for (j = 0; j < ACPI_GPE_REGISTER_WIDTH; j++) { /* Examine one GPE bit */ if (EnabledStatusByte & (1 << j)) { /* * Found an active GPE. Dispatch the event to a handler * or method. */ IntStatus |= AcpiEvGpeDispatch (GpeBlock->Node, &GpeBlock->EventInfo[((ACPI_SIZE) i * ACPI_GPE_REGISTER_WIDTH) + j], j + GpeRegisterInfo->BaseGpeNumber); } } } GpeBlock = GpeBlock->Next; } UnlockAndExit: AcpiOsReleaseLock (AcpiGbl_GpeLock, Flags); return (IntStatus); } /******************************************************************************* * * FUNCTION: AcpiEvAsynchExecuteGpeMethod * * PARAMETERS: Context (GpeEventInfo) - Info for this GPE * * RETURN: None * * DESCRIPTION: Perform the actual execution of a GPE control method. This * function is called from an invocation of AcpiOsExecute and * therefore does NOT execute at interrupt level - so that * the control method itself is not executed in the context of * an interrupt handler. * ******************************************************************************/ static void ACPI_SYSTEM_XFACE AcpiEvAsynchExecuteGpeMethod ( void *Context) { ACPI_GPE_EVENT_INFO *GpeEventInfo = Context; ACPI_STATUS Status; ACPI_GPE_EVENT_INFO *LocalGpeEventInfo; ACPI_EVALUATE_INFO *Info; ACPI_GPE_NOTIFY_INFO *Notify; ACPI_FUNCTION_TRACE (EvAsynchExecuteGpeMethod); /* Allocate a local GPE block */ LocalGpeEventInfo = ACPI_ALLOCATE_ZEROED (sizeof (ACPI_GPE_EVENT_INFO)); if (!LocalGpeEventInfo) { ACPI_EXCEPTION ((AE_INFO, AE_NO_MEMORY, "while handling a GPE")); return_VOID; } Status = AcpiUtAcquireMutex (ACPI_MTX_EVENTS); if (ACPI_FAILURE (Status)) { ACPI_FREE (LocalGpeEventInfo); return_VOID; } /* Must revalidate the GpeNumber/GpeBlock */ if (!AcpiEvValidGpeEvent (GpeEventInfo)) { Status = AcpiUtReleaseMutex (ACPI_MTX_EVENTS); ACPI_FREE (LocalGpeEventInfo); return_VOID; } /* * Take a snapshot of the GPE info for this level - we copy the info to * prevent a race condition with RemoveHandler/RemoveBlock. */ ACPI_MEMCPY (LocalGpeEventInfo, GpeEventInfo, sizeof (ACPI_GPE_EVENT_INFO)); Status = AcpiUtReleaseMutex (ACPI_MTX_EVENTS); if (ACPI_FAILURE (Status)) { ACPI_FREE (LocalGpeEventInfo); return_VOID; } /* Do the correct dispatch - normal method or implicit notify */ switch (LocalGpeEventInfo->Flags & ACPI_GPE_DISPATCH_MASK) { case ACPI_GPE_DISPATCH_NOTIFY: /* * Implicit notify. * Dispatch a DEVICE_WAKE notify to the appropriate handler. * NOTE: the request is queued for execution after this method * completes. The notify handlers are NOT invoked synchronously * from this thread -- because handlers may in turn run other * control methods. * * June 2012: Expand implicit notify mechanism to support * notifies on multiple device objects. */ Notify = LocalGpeEventInfo->Dispatch.NotifyList; while (ACPI_SUCCESS (Status) && Notify) { Status = AcpiEvQueueNotifyRequest (Notify->DeviceNode, ACPI_NOTIFY_DEVICE_WAKE); Notify = Notify->Next; } break; case ACPI_GPE_DISPATCH_METHOD: /* Allocate the evaluation information block */ Info = ACPI_ALLOCATE_ZEROED (sizeof (ACPI_EVALUATE_INFO)); if (!Info) { Status = AE_NO_MEMORY; } else { /* * Invoke the GPE Method (_Lxx, _Exx) i.e., evaluate the * _Lxx/_Exx control method that corresponds to this GPE */ Info->PrefixNode = LocalGpeEventInfo->Dispatch.MethodNode; Info->Flags = ACPI_IGNORE_RETURN_VALUE; Status = AcpiNsEvaluate (Info); ACPI_FREE (Info); } if (ACPI_FAILURE (Status)) { ACPI_EXCEPTION ((AE_INFO, Status, "while evaluating GPE method [%4.4s]", AcpiUtGetNodeName (LocalGpeEventInfo->Dispatch.MethodNode))); } break; default: return_VOID; /* Should never happen */ } /* Defer enabling of GPE until all notify handlers are done */ Status = AcpiOsExecute (OSL_NOTIFY_HANDLER, AcpiEvAsynchEnableGpe, LocalGpeEventInfo); if (ACPI_FAILURE (Status)) { ACPI_FREE (LocalGpeEventInfo); } return_VOID; } /******************************************************************************* * * FUNCTION: AcpiEvAsynchEnableGpe * * PARAMETERS: Context (GpeEventInfo) - Info for this GPE * Callback from AcpiOsExecute * * RETURN: None * * DESCRIPTION: Asynchronous clear/enable for GPE. This allows the GPE to * complete (i.e., finish execution of Notify) * ******************************************************************************/ static void ACPI_SYSTEM_XFACE AcpiEvAsynchEnableGpe ( void *Context) { ACPI_GPE_EVENT_INFO *GpeEventInfo = Context; (void) AcpiEvFinishGpe (GpeEventInfo); ACPI_FREE (GpeEventInfo); return; } /******************************************************************************* * * FUNCTION: AcpiEvFinishGpe * * PARAMETERS: GpeEventInfo - Info for this GPE * * RETURN: Status * * DESCRIPTION: Clear/Enable a GPE. Common code that is used after execution * of a GPE method or a synchronous or asynchronous GPE handler. * ******************************************************************************/ ACPI_STATUS AcpiEvFinishGpe ( ACPI_GPE_EVENT_INFO *GpeEventInfo) { ACPI_STATUS Status; if ((GpeEventInfo->Flags & ACPI_GPE_XRUPT_TYPE_MASK) == ACPI_GPE_LEVEL_TRIGGERED) { /* * GPE is level-triggered, we clear the GPE status bit after * handling the event. */ Status = AcpiHwClearGpe (GpeEventInfo); if (ACPI_FAILURE (Status)) { return (Status); } } /* * Enable this GPE, conditionally. This means that the GPE will * only be physically enabled if the EnableForRun bit is set * in the EventInfo. */ (void) AcpiHwLowSetGpe (GpeEventInfo, ACPI_GPE_CONDITIONAL_ENABLE); return (AE_OK); } /******************************************************************************* * * FUNCTION: AcpiEvGpeDispatch * * PARAMETERS: GpeDevice - Device node. NULL for GPE0/GPE1 * GpeEventInfo - Info for this GPE * GpeNumber - Number relative to the parent GPE block * * RETURN: INTERRUPT_HANDLED or INTERRUPT_NOT_HANDLED * * DESCRIPTION: Dispatch a General Purpose Event to either a function (e.g. EC) * or method (e.g. _Lxx/_Exx) handler. * * This function executes at interrupt level. * ******************************************************************************/ UINT32 AcpiEvGpeDispatch ( ACPI_NAMESPACE_NODE *GpeDevice, ACPI_GPE_EVENT_INFO *GpeEventInfo, UINT32 GpeNumber) { ACPI_STATUS Status; UINT32 ReturnValue; ACPI_FUNCTION_TRACE (EvGpeDispatch); /* Invoke global event handler if present */ AcpiGpeCount++; if (AcpiGbl_GlobalEventHandler) { AcpiGbl_GlobalEventHandler (ACPI_EVENT_TYPE_GPE, GpeDevice, GpeNumber, AcpiGbl_GlobalEventHandlerContext); } /* * If edge-triggered, clear the GPE status bit now. Note that * level-triggered events are cleared after the GPE is serviced. */ if ((GpeEventInfo->Flags & ACPI_GPE_XRUPT_TYPE_MASK) == ACPI_GPE_EDGE_TRIGGERED) { Status = AcpiHwClearGpe (GpeEventInfo); if (ACPI_FAILURE (Status)) { ACPI_EXCEPTION ((AE_INFO, Status, "Unable to clear GPE%02X", GpeNumber)); return_UINT32 (ACPI_INTERRUPT_NOT_HANDLED); } } /* * Always disable the GPE so that it does not keep firing before * any asynchronous activity completes (either from the execution * of a GPE method or an asynchronous GPE handler.) * * If there is no handler or method to run, just disable the * GPE and leave it disabled permanently to prevent further such * pointless events from firing. */ Status = AcpiHwLowSetGpe (GpeEventInfo, ACPI_GPE_DISABLE); if (ACPI_FAILURE (Status)) { ACPI_EXCEPTION ((AE_INFO, Status, "Unable to disable GPE%02X", GpeNumber)); return_UINT32 (ACPI_INTERRUPT_NOT_HANDLED); } /* * Dispatch the GPE to either an installed handler or the control * method associated with this GPE (_Lxx or _Exx). If a handler * exists, we invoke it and do not attempt to run the method. * If there is neither a handler nor a method, leave the GPE * disabled. */ switch (GpeEventInfo->Flags & ACPI_GPE_DISPATCH_MASK) { case ACPI_GPE_DISPATCH_HANDLER: /* Invoke the installed handler (at interrupt level) */ ReturnValue = GpeEventInfo->Dispatch.Handler->Address ( GpeDevice, GpeNumber, GpeEventInfo->Dispatch.Handler->Context); /* If requested, clear (if level-triggered) and reenable the GPE */ if (ReturnValue & ACPI_REENABLE_GPE) { (void) AcpiEvFinishGpe (GpeEventInfo); } break; case ACPI_GPE_DISPATCH_METHOD: case ACPI_GPE_DISPATCH_NOTIFY: /* * Execute the method associated with the GPE * NOTE: Level-triggered GPEs are cleared after the method completes. */ Status = AcpiOsExecute (OSL_GPE_HANDLER, AcpiEvAsynchExecuteGpeMethod, GpeEventInfo); if (ACPI_FAILURE (Status)) { ACPI_EXCEPTION ((AE_INFO, Status, "Unable to queue handler for GPE%02X - event disabled", GpeNumber)); } break; default: /* * No handler or method to run! * 03/2010: This case should no longer be possible. We will not allow * a GPE to be enabled if it has no handler or method. */ ACPI_ERROR ((AE_INFO, "No handler or method for GPE%02X, disabling event", GpeNumber)); break; } return_UINT32 (ACPI_INTERRUPT_HANDLED); } #endif /* !ACPI_REDUCED_HARDWARE */ src/acpica/source/components/events/evgpeblk.c000066400000000000000000000505011231470457100220260ustar00rootroot00000000000000/****************************************************************************** * * Module Name: evgpeblk - GPE block creation and initialization. * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #include "acpi.h" #include "accommon.h" #include "acevents.h" #include "acnamesp.h" #define _COMPONENT ACPI_EVENTS ACPI_MODULE_NAME ("evgpeblk") #if (!ACPI_REDUCED_HARDWARE) /* Entire module */ /* Local prototypes */ static ACPI_STATUS AcpiEvInstallGpeBlock ( ACPI_GPE_BLOCK_INFO *GpeBlock, UINT32 InterruptNumber); static ACPI_STATUS AcpiEvCreateGpeInfoBlocks ( ACPI_GPE_BLOCK_INFO *GpeBlock); /******************************************************************************* * * FUNCTION: AcpiEvInstallGpeBlock * * PARAMETERS: GpeBlock - New GPE block * InterruptNumber - Xrupt to be associated with this * GPE block * * RETURN: Status * * DESCRIPTION: Install new GPE block with mutex support * ******************************************************************************/ static ACPI_STATUS AcpiEvInstallGpeBlock ( ACPI_GPE_BLOCK_INFO *GpeBlock, UINT32 InterruptNumber) { ACPI_GPE_BLOCK_INFO *NextGpeBlock; ACPI_GPE_XRUPT_INFO *GpeXruptBlock; ACPI_STATUS Status; ACPI_CPU_FLAGS Flags; ACPI_FUNCTION_TRACE (EvInstallGpeBlock); Status = AcpiUtAcquireMutex (ACPI_MTX_EVENTS); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } Status = AcpiEvGetGpeXruptBlock (InterruptNumber, &GpeXruptBlock); if (ACPI_FAILURE (Status)) { goto UnlockAndExit; } /* Install the new block at the end of the list with lock */ Flags = AcpiOsAcquireLock (AcpiGbl_GpeLock); if (GpeXruptBlock->GpeBlockListHead) { NextGpeBlock = GpeXruptBlock->GpeBlockListHead; while (NextGpeBlock->Next) { NextGpeBlock = NextGpeBlock->Next; } NextGpeBlock->Next = GpeBlock; GpeBlock->Previous = NextGpeBlock; } else { GpeXruptBlock->GpeBlockListHead = GpeBlock; } GpeBlock->XruptBlock = GpeXruptBlock; AcpiOsReleaseLock (AcpiGbl_GpeLock, Flags); UnlockAndExit: (void) AcpiUtReleaseMutex (ACPI_MTX_EVENTS); return_ACPI_STATUS (Status); } /******************************************************************************* * * FUNCTION: AcpiEvDeleteGpeBlock * * PARAMETERS: GpeBlock - Existing GPE block * * RETURN: Status * * DESCRIPTION: Remove a GPE block * ******************************************************************************/ ACPI_STATUS AcpiEvDeleteGpeBlock ( ACPI_GPE_BLOCK_INFO *GpeBlock) { ACPI_STATUS Status; ACPI_CPU_FLAGS Flags; ACPI_FUNCTION_TRACE (EvInstallGpeBlock); Status = AcpiUtAcquireMutex (ACPI_MTX_EVENTS); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } /* Disable all GPEs in this block */ Status = AcpiHwDisableGpeBlock (GpeBlock->XruptBlock, GpeBlock, NULL); if (!GpeBlock->Previous && !GpeBlock->Next) { /* This is the last GpeBlock on this interrupt */ Status = AcpiEvDeleteGpeXrupt (GpeBlock->XruptBlock); if (ACPI_FAILURE (Status)) { goto UnlockAndExit; } } else { /* Remove the block on this interrupt with lock */ Flags = AcpiOsAcquireLock (AcpiGbl_GpeLock); if (GpeBlock->Previous) { GpeBlock->Previous->Next = GpeBlock->Next; } else { GpeBlock->XruptBlock->GpeBlockListHead = GpeBlock->Next; } if (GpeBlock->Next) { GpeBlock->Next->Previous = GpeBlock->Previous; } AcpiOsReleaseLock (AcpiGbl_GpeLock, Flags); } AcpiCurrentGpeCount -= GpeBlock->GpeCount; /* Free the GpeBlock */ ACPI_FREE (GpeBlock->RegisterInfo); ACPI_FREE (GpeBlock->EventInfo); ACPI_FREE (GpeBlock); UnlockAndExit: Status = AcpiUtReleaseMutex (ACPI_MTX_EVENTS); return_ACPI_STATUS (Status); } /******************************************************************************* * * FUNCTION: AcpiEvCreateGpeInfoBlocks * * PARAMETERS: GpeBlock - New GPE block * * RETURN: Status * * DESCRIPTION: Create the RegisterInfo and EventInfo blocks for this GPE block * ******************************************************************************/ static ACPI_STATUS AcpiEvCreateGpeInfoBlocks ( ACPI_GPE_BLOCK_INFO *GpeBlock) { ACPI_GPE_REGISTER_INFO *GpeRegisterInfo = NULL; ACPI_GPE_EVENT_INFO *GpeEventInfo = NULL; ACPI_GPE_EVENT_INFO *ThisEvent; ACPI_GPE_REGISTER_INFO *ThisRegister; UINT32 i; UINT32 j; ACPI_STATUS Status; ACPI_FUNCTION_TRACE (EvCreateGpeInfoBlocks); /* Allocate the GPE register information block */ GpeRegisterInfo = ACPI_ALLOCATE_ZEROED ( (ACPI_SIZE) GpeBlock->RegisterCount * sizeof (ACPI_GPE_REGISTER_INFO)); if (!GpeRegisterInfo) { ACPI_ERROR ((AE_INFO, "Could not allocate the GpeRegisterInfo table")); return_ACPI_STATUS (AE_NO_MEMORY); } /* * Allocate the GPE EventInfo block. There are eight distinct GPEs * per register. Initialization to zeros is sufficient. */ GpeEventInfo = ACPI_ALLOCATE_ZEROED ((ACPI_SIZE) GpeBlock->GpeCount * sizeof (ACPI_GPE_EVENT_INFO)); if (!GpeEventInfo) { ACPI_ERROR ((AE_INFO, "Could not allocate the GpeEventInfo table")); Status = AE_NO_MEMORY; goto ErrorExit; } /* Save the new Info arrays in the GPE block */ GpeBlock->RegisterInfo = GpeRegisterInfo; GpeBlock->EventInfo = GpeEventInfo; /* * Initialize the GPE Register and Event structures. A goal of these * tables is to hide the fact that there are two separate GPE register * sets in a given GPE hardware block, the status registers occupy the * first half, and the enable registers occupy the second half. */ ThisRegister = GpeRegisterInfo; ThisEvent = GpeEventInfo; for (i = 0; i < GpeBlock->RegisterCount; i++) { /* Init the RegisterInfo for this GPE register (8 GPEs) */ ThisRegister->BaseGpeNumber = (UINT8) (GpeBlock->BlockBaseNumber + (i * ACPI_GPE_REGISTER_WIDTH)); ThisRegister->StatusAddress.Address = GpeBlock->BlockAddress.Address + i; ThisRegister->EnableAddress.Address = GpeBlock->BlockAddress.Address + i + GpeBlock->RegisterCount; ThisRegister->StatusAddress.SpaceId = GpeBlock->BlockAddress.SpaceId; ThisRegister->EnableAddress.SpaceId = GpeBlock->BlockAddress.SpaceId; ThisRegister->StatusAddress.BitWidth = ACPI_GPE_REGISTER_WIDTH; ThisRegister->EnableAddress.BitWidth = ACPI_GPE_REGISTER_WIDTH; ThisRegister->StatusAddress.BitOffset = 0; ThisRegister->EnableAddress.BitOffset = 0; /* Init the EventInfo for each GPE within this register */ for (j = 0; j < ACPI_GPE_REGISTER_WIDTH; j++) { ThisEvent->GpeNumber = (UINT8) (ThisRegister->BaseGpeNumber + j); ThisEvent->RegisterInfo = ThisRegister; ThisEvent++; } /* Disable all GPEs within this register */ Status = AcpiHwWrite (0x00, &ThisRegister->EnableAddress); if (ACPI_FAILURE (Status)) { goto ErrorExit; } /* Clear any pending GPE events within this register */ Status = AcpiHwWrite (0xFF, &ThisRegister->StatusAddress); if (ACPI_FAILURE (Status)) { goto ErrorExit; } ThisRegister++; } return_ACPI_STATUS (AE_OK); ErrorExit: if (GpeRegisterInfo) { ACPI_FREE (GpeRegisterInfo); } if (GpeEventInfo) { ACPI_FREE (GpeEventInfo); } return_ACPI_STATUS (Status); } /******************************************************************************* * * FUNCTION: AcpiEvCreateGpeBlock * * PARAMETERS: GpeDevice - Handle to the parent GPE block * GpeBlockAddress - Address and SpaceID * RegisterCount - Number of GPE register pairs in the block * GpeBlockBaseNumber - Starting GPE number for the block * InterruptNumber - H/W interrupt for the block * ReturnGpeBlock - Where the new block descriptor is returned * * RETURN: Status * * DESCRIPTION: Create and Install a block of GPE registers. All GPEs within * the block are disabled at exit. * Note: Assumes namespace is locked. * ******************************************************************************/ ACPI_STATUS AcpiEvCreateGpeBlock ( ACPI_NAMESPACE_NODE *GpeDevice, ACPI_GENERIC_ADDRESS *GpeBlockAddress, UINT32 RegisterCount, UINT8 GpeBlockBaseNumber, UINT32 InterruptNumber, ACPI_GPE_BLOCK_INFO **ReturnGpeBlock) { ACPI_STATUS Status; ACPI_GPE_BLOCK_INFO *GpeBlock; ACPI_GPE_WALK_INFO WalkInfo; ACPI_FUNCTION_TRACE (EvCreateGpeBlock); if (!RegisterCount) { return_ACPI_STATUS (AE_OK); } /* Allocate a new GPE block */ GpeBlock = ACPI_ALLOCATE_ZEROED (sizeof (ACPI_GPE_BLOCK_INFO)); if (!GpeBlock) { return_ACPI_STATUS (AE_NO_MEMORY); } /* Initialize the new GPE block */ GpeBlock->Node = GpeDevice; GpeBlock->GpeCount = (UINT16) (RegisterCount * ACPI_GPE_REGISTER_WIDTH); GpeBlock->Initialized = FALSE; GpeBlock->RegisterCount = RegisterCount; GpeBlock->BlockBaseNumber = GpeBlockBaseNumber; ACPI_MEMCPY (&GpeBlock->BlockAddress, GpeBlockAddress, sizeof (ACPI_GENERIC_ADDRESS)); /* * Create the RegisterInfo and EventInfo sub-structures * Note: disables and clears all GPEs in the block */ Status = AcpiEvCreateGpeInfoBlocks (GpeBlock); if (ACPI_FAILURE (Status)) { ACPI_FREE (GpeBlock); return_ACPI_STATUS (Status); } /* Install the new block in the global lists */ Status = AcpiEvInstallGpeBlock (GpeBlock, InterruptNumber); if (ACPI_FAILURE (Status)) { ACPI_FREE (GpeBlock->RegisterInfo); ACPI_FREE (GpeBlock->EventInfo); ACPI_FREE (GpeBlock); return_ACPI_STATUS (Status); } AcpiGbl_AllGpesInitialized = FALSE; /* Find all GPE methods (_Lxx or_Exx) for this block */ WalkInfo.GpeBlock = GpeBlock; WalkInfo.GpeDevice = GpeDevice; WalkInfo.ExecuteByOwnerId = FALSE; Status = AcpiNsWalkNamespace (ACPI_TYPE_METHOD, GpeDevice, ACPI_UINT32_MAX, ACPI_NS_WALK_NO_UNLOCK, AcpiEvMatchGpeMethod, NULL, &WalkInfo, NULL); /* Return the new block */ if (ReturnGpeBlock) { (*ReturnGpeBlock) = GpeBlock; } ACPI_DEBUG_PRINT_RAW ((ACPI_DB_INIT, " Initialized GPE %02X to %02X [%4.4s] %u regs on interrupt 0x%X\n", (UINT32) GpeBlock->BlockBaseNumber, (UINT32) (GpeBlock->BlockBaseNumber + (GpeBlock->GpeCount - 1)), GpeDevice->Name.Ascii, GpeBlock->RegisterCount, InterruptNumber)); /* Update global count of currently available GPEs */ AcpiCurrentGpeCount += GpeBlock->GpeCount; return_ACPI_STATUS (AE_OK); } /******************************************************************************* * * FUNCTION: AcpiEvInitializeGpeBlock * * PARAMETERS: ACPI_GPE_CALLBACK * * RETURN: Status * * DESCRIPTION: Initialize and enable a GPE block. Enable GPEs that have * associated methods. * Note: Assumes namespace is locked. * ******************************************************************************/ ACPI_STATUS AcpiEvInitializeGpeBlock ( ACPI_GPE_XRUPT_INFO *GpeXruptInfo, ACPI_GPE_BLOCK_INFO *GpeBlock, void *Ignored) { ACPI_STATUS Status; ACPI_GPE_EVENT_INFO *GpeEventInfo; UINT32 GpeEnabledCount; UINT32 GpeIndex; UINT32 i; UINT32 j; ACPI_FUNCTION_TRACE (EvInitializeGpeBlock); /* * Ignore a null GPE block (e.g., if no GPE block 1 exists), and * any GPE blocks that have been initialized already. */ if (!GpeBlock || GpeBlock->Initialized) { return_ACPI_STATUS (AE_OK); } /* * Enable all GPEs that have a corresponding method and have the * ACPI_GPE_CAN_WAKE flag unset. Any other GPEs within this block * must be enabled via the acpi_enable_gpe() interface. */ GpeEnabledCount = 0; for (i = 0; i < GpeBlock->RegisterCount; i++) { for (j = 0; j < ACPI_GPE_REGISTER_WIDTH; j++) { /* Get the info block for this particular GPE */ GpeIndex = (i * ACPI_GPE_REGISTER_WIDTH) + j; GpeEventInfo = &GpeBlock->EventInfo[GpeIndex]; /* * Ignore GPEs that have no corresponding _Lxx/_Exx method * and GPEs that are used to wake the system */ if (((GpeEventInfo->Flags & ACPI_GPE_DISPATCH_MASK) == ACPI_GPE_DISPATCH_NONE) || ((GpeEventInfo->Flags & ACPI_GPE_DISPATCH_MASK) == ACPI_GPE_DISPATCH_HANDLER) || (GpeEventInfo->Flags & ACPI_GPE_CAN_WAKE)) { continue; } Status = AcpiEvAddGpeReference (GpeEventInfo); if (ACPI_FAILURE (Status)) { ACPI_EXCEPTION ((AE_INFO, Status, "Could not enable GPE 0x%02X", GpeIndex + GpeBlock->BlockBaseNumber)); continue; } GpeEnabledCount++; } } if (GpeEnabledCount) { ACPI_INFO ((AE_INFO, "Enabled %u GPEs in block %02X to %02X", GpeEnabledCount, (UINT32) GpeBlock->BlockBaseNumber, (UINT32) (GpeBlock->BlockBaseNumber + (GpeBlock->GpeCount - 1)))); } GpeBlock->Initialized = TRUE; return_ACPI_STATUS (AE_OK); } #endif /* !ACPI_REDUCED_HARDWARE */ src/acpica/source/components/events/evgpeinit.c000066400000000000000000000454401231470457100222270ustar00rootroot00000000000000/****************************************************************************** * * Module Name: evgpeinit - System GPE initialization and update * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #include "acpi.h" #include "accommon.h" #include "acevents.h" #include "acnamesp.h" #define _COMPONENT ACPI_EVENTS ACPI_MODULE_NAME ("evgpeinit") #if (!ACPI_REDUCED_HARDWARE) /* Entire module */ /* * Note: History of _PRW support in ACPICA * * Originally (2000 - 2010), the GPE initialization code performed a walk of * the entire namespace to execute the _PRW methods and detect all GPEs * capable of waking the system. * * As of 10/2010, the _PRW method execution has been removed since it is * actually unnecessary. The host OS must in fact execute all _PRW methods * in order to identify the device/power-resource dependencies. We now put * the onus on the host OS to identify the wake GPEs as part of this process * and to inform ACPICA of these GPEs via the AcpiSetupGpeForWake interface. This * not only reduces the complexity of the ACPICA initialization code, but in * some cases (on systems with very large namespaces) it should reduce the * kernel boot time as well. */ /******************************************************************************* * * FUNCTION: AcpiEvGpeInitialize * * PARAMETERS: None * * RETURN: Status * * DESCRIPTION: Initialize the GPE data structures and the FADT GPE 0/1 blocks * ******************************************************************************/ ACPI_STATUS AcpiEvGpeInitialize ( void) { UINT32 RegisterCount0 = 0; UINT32 RegisterCount1 = 0; UINT32 GpeNumberMax = 0; ACPI_STATUS Status; ACPI_FUNCTION_TRACE (EvGpeInitialize); ACPI_DEBUG_PRINT_RAW ((ACPI_DB_INIT, "Initializing General Purpose Events (GPEs):\n")); Status = AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } /* * Initialize the GPE Block(s) defined in the FADT * * Why the GPE register block lengths are divided by 2: From the ACPI * Spec, section "General-Purpose Event Registers", we have: * * "Each register block contains two registers of equal length * GPEx_STS and GPEx_EN (where x is 0 or 1). The length of the * GPE0_STS and GPE0_EN registers is equal to half the GPE0_LEN * The length of the GPE1_STS and GPE1_EN registers is equal to * half the GPE1_LEN. If a generic register block is not supported * then its respective block pointer and block length values in the * FADT table contain zeros. The GPE0_LEN and GPE1_LEN do not need * to be the same size." */ /* * Determine the maximum GPE number for this machine. * * Note: both GPE0 and GPE1 are optional, and either can exist without * the other. * * If EITHER the register length OR the block address are zero, then that * particular block is not supported. */ if (AcpiGbl_FADT.Gpe0BlockLength && AcpiGbl_FADT.XGpe0Block.Address) { /* GPE block 0 exists (has both length and address > 0) */ RegisterCount0 = (UINT16) (AcpiGbl_FADT.Gpe0BlockLength / 2); GpeNumberMax = (RegisterCount0 * ACPI_GPE_REGISTER_WIDTH) - 1; /* Install GPE Block 0 */ Status = AcpiEvCreateGpeBlock (AcpiGbl_FadtGpeDevice, &AcpiGbl_FADT.XGpe0Block, RegisterCount0, 0, AcpiGbl_FADT.SciInterrupt, &AcpiGbl_GpeFadtBlocks[0]); if (ACPI_FAILURE (Status)) { ACPI_EXCEPTION ((AE_INFO, Status, "Could not create GPE Block 0")); } } if (AcpiGbl_FADT.Gpe1BlockLength && AcpiGbl_FADT.XGpe1Block.Address) { /* GPE block 1 exists (has both length and address > 0) */ RegisterCount1 = (UINT16) (AcpiGbl_FADT.Gpe1BlockLength / 2); /* Check for GPE0/GPE1 overlap (if both banks exist) */ if ((RegisterCount0) && (GpeNumberMax >= AcpiGbl_FADT.Gpe1Base)) { ACPI_ERROR ((AE_INFO, "GPE0 block (GPE 0 to %u) overlaps the GPE1 block " "(GPE %u to %u) - Ignoring GPE1", GpeNumberMax, AcpiGbl_FADT.Gpe1Base, AcpiGbl_FADT.Gpe1Base + ((RegisterCount1 * ACPI_GPE_REGISTER_WIDTH) - 1))); /* Ignore GPE1 block by setting the register count to zero */ RegisterCount1 = 0; } else { /* Install GPE Block 1 */ Status = AcpiEvCreateGpeBlock (AcpiGbl_FadtGpeDevice, &AcpiGbl_FADT.XGpe1Block, RegisterCount1, AcpiGbl_FADT.Gpe1Base, AcpiGbl_FADT.SciInterrupt, &AcpiGbl_GpeFadtBlocks[1]); if (ACPI_FAILURE (Status)) { ACPI_EXCEPTION ((AE_INFO, Status, "Could not create GPE Block 1")); } /* * GPE0 and GPE1 do not have to be contiguous in the GPE number * space. However, GPE0 always starts at GPE number zero. */ GpeNumberMax = AcpiGbl_FADT.Gpe1Base + ((RegisterCount1 * ACPI_GPE_REGISTER_WIDTH) - 1); } } /* Exit if there are no GPE registers */ if ((RegisterCount0 + RegisterCount1) == 0) { /* GPEs are not required by ACPI, this is OK */ ACPI_DEBUG_PRINT ((ACPI_DB_INIT, "There are no GPE blocks defined in the FADT\n")); Status = AE_OK; goto Cleanup; } Cleanup: (void) AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); return_ACPI_STATUS (AE_OK); } /******************************************************************************* * * FUNCTION: AcpiEvUpdateGpes * * PARAMETERS: TableOwnerId - ID of the newly-loaded ACPI table * * RETURN: None * * DESCRIPTION: Check for new GPE methods (_Lxx/_Exx) made available as a * result of a Load() or LoadTable() operation. If new GPE * methods have been installed, register the new methods. * ******************************************************************************/ void AcpiEvUpdateGpes ( ACPI_OWNER_ID TableOwnerId) { ACPI_GPE_XRUPT_INFO *GpeXruptInfo; ACPI_GPE_BLOCK_INFO *GpeBlock; ACPI_GPE_WALK_INFO WalkInfo; ACPI_STATUS Status = AE_OK; /* * Find any _Lxx/_Exx GPE methods that have just been loaded. * * Any GPEs that correspond to new _Lxx/_Exx methods are immediately * enabled. * * Examine the namespace underneath each GpeDevice within the * GpeBlock lists. */ Status = AcpiUtAcquireMutex (ACPI_MTX_EVENTS); if (ACPI_FAILURE (Status)) { return; } WalkInfo.Count = 0; WalkInfo.OwnerId = TableOwnerId; WalkInfo.ExecuteByOwnerId = TRUE; /* Walk the interrupt level descriptor list */ GpeXruptInfo = AcpiGbl_GpeXruptListHead; while (GpeXruptInfo) { /* Walk all Gpe Blocks attached to this interrupt level */ GpeBlock = GpeXruptInfo->GpeBlockListHead; while (GpeBlock) { WalkInfo.GpeBlock = GpeBlock; WalkInfo.GpeDevice = GpeBlock->Node; Status = AcpiNsWalkNamespace (ACPI_TYPE_METHOD, WalkInfo.GpeDevice, ACPI_UINT32_MAX, ACPI_NS_WALK_NO_UNLOCK, AcpiEvMatchGpeMethod, NULL, &WalkInfo, NULL); if (ACPI_FAILURE (Status)) { ACPI_EXCEPTION ((AE_INFO, Status, "While decoding _Lxx/_Exx methods")); } GpeBlock = GpeBlock->Next; } GpeXruptInfo = GpeXruptInfo->Next; } if (WalkInfo.Count) { ACPI_INFO ((AE_INFO, "Enabled %u new GPEs", WalkInfo.Count)); } (void) AcpiUtReleaseMutex (ACPI_MTX_EVENTS); return; } /******************************************************************************* * * FUNCTION: AcpiEvMatchGpeMethod * * PARAMETERS: Callback from WalkNamespace * * RETURN: Status * * DESCRIPTION: Called from AcpiWalkNamespace. Expects each object to be a * control method under the _GPE portion of the namespace. * Extract the name and GPE type from the object, saving this * information for quick lookup during GPE dispatch. Allows a * per-OwnerId evaluation if ExecuteByOwnerId is TRUE in the * WalkInfo parameter block. * * The name of each GPE control method is of the form: * "_Lxx" or "_Exx", where: * L - means that the GPE is level triggered * E - means that the GPE is edge triggered * xx - is the GPE number [in HEX] * * If WalkInfo->ExecuteByOwnerId is TRUE, we only execute examine GPE methods * with that owner. * ******************************************************************************/ ACPI_STATUS AcpiEvMatchGpeMethod ( ACPI_HANDLE ObjHandle, UINT32 Level, void *Context, void **ReturnValue) { ACPI_NAMESPACE_NODE *MethodNode = ACPI_CAST_PTR (ACPI_NAMESPACE_NODE, ObjHandle); ACPI_GPE_WALK_INFO *WalkInfo = ACPI_CAST_PTR (ACPI_GPE_WALK_INFO, Context); ACPI_GPE_EVENT_INFO *GpeEventInfo; UINT32 GpeNumber; char Name[ACPI_NAME_SIZE + 1]; UINT8 Type; ACPI_FUNCTION_TRACE (EvMatchGpeMethod); /* Check if requested OwnerId matches this OwnerId */ if ((WalkInfo->ExecuteByOwnerId) && (MethodNode->OwnerId != WalkInfo->OwnerId)) { return_ACPI_STATUS (AE_OK); } /* * Match and decode the _Lxx and _Exx GPE method names * * 1) Extract the method name and null terminate it */ ACPI_MOVE_32_TO_32 (Name, &MethodNode->Name.Integer); Name[ACPI_NAME_SIZE] = 0; /* 2) Name must begin with an underscore */ if (Name[0] != '_') { return_ACPI_STATUS (AE_OK); /* Ignore this method */ } /* * 3) Edge/Level determination is based on the 2nd character * of the method name */ switch (Name[1]) { case 'L': Type = ACPI_GPE_LEVEL_TRIGGERED; break; case 'E': Type = ACPI_GPE_EDGE_TRIGGERED; break; default: /* Unknown method type, just ignore it */ ACPI_DEBUG_PRINT ((ACPI_DB_LOAD, "Ignoring unknown GPE method type: %s " "(name not of form _Lxx or _Exx)", Name)); return_ACPI_STATUS (AE_OK); } /* 4) The last two characters of the name are the hex GPE Number */ GpeNumber = ACPI_STRTOUL (&Name[2], NULL, 16); if (GpeNumber == ACPI_UINT32_MAX) { /* Conversion failed; invalid method, just ignore it */ ACPI_DEBUG_PRINT ((ACPI_DB_LOAD, "Could not extract GPE number from name: %s " "(name is not of form _Lxx or _Exx)", Name)); return_ACPI_STATUS (AE_OK); } /* Ensure that we have a valid GPE number for this GPE block */ GpeEventInfo = AcpiEvLowGetGpeInfo (GpeNumber, WalkInfo->GpeBlock); if (!GpeEventInfo) { /* * This GpeNumber is not valid for this GPE block, just ignore it. * However, it may be valid for a different GPE block, since GPE0 * and GPE1 methods both appear under \_GPE. */ return_ACPI_STATUS (AE_OK); } if ((GpeEventInfo->Flags & ACPI_GPE_DISPATCH_MASK) == ACPI_GPE_DISPATCH_HANDLER) { /* If there is already a handler, ignore this GPE method */ return_ACPI_STATUS (AE_OK); } if ((GpeEventInfo->Flags & ACPI_GPE_DISPATCH_MASK) == ACPI_GPE_DISPATCH_METHOD) { /* * If there is already a method, ignore this method. But check * for a type mismatch (if both the _Lxx AND _Exx exist) */ if (Type != (GpeEventInfo->Flags & ACPI_GPE_XRUPT_TYPE_MASK)) { ACPI_ERROR ((AE_INFO, "For GPE 0x%.2X, found both _L%2.2X and _E%2.2X methods", GpeNumber, GpeNumber, GpeNumber)); } return_ACPI_STATUS (AE_OK); } /* * Add the GPE information from above to the GpeEventInfo block for * use during dispatch of this GPE. */ GpeEventInfo->Flags &= ~(ACPI_GPE_DISPATCH_MASK); GpeEventInfo->Flags |= (UINT8) (Type | ACPI_GPE_DISPATCH_METHOD); GpeEventInfo->Dispatch.MethodNode = MethodNode; ACPI_DEBUG_PRINT ((ACPI_DB_LOAD, "Registered GPE method %s as GPE number 0x%.2X\n", Name, GpeNumber)); return_ACPI_STATUS (AE_OK); } #endif /* !ACPI_REDUCED_HARDWARE */ src/acpica/source/components/events/evgpeutil.c000066400000000000000000000414551231470457100222430ustar00rootroot00000000000000/****************************************************************************** * * Module Name: evgpeutil - GPE utilities * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #include "acpi.h" #include "accommon.h" #include "acevents.h" #define _COMPONENT ACPI_EVENTS ACPI_MODULE_NAME ("evgpeutil") #if (!ACPI_REDUCED_HARDWARE) /* Entire module */ /******************************************************************************* * * FUNCTION: AcpiEvWalkGpeList * * PARAMETERS: GpeWalkCallback - Routine called for each GPE block * Context - Value passed to callback * * RETURN: Status * * DESCRIPTION: Walk the GPE lists. * ******************************************************************************/ ACPI_STATUS AcpiEvWalkGpeList ( ACPI_GPE_CALLBACK GpeWalkCallback, void *Context) { ACPI_GPE_BLOCK_INFO *GpeBlock; ACPI_GPE_XRUPT_INFO *GpeXruptInfo; ACPI_STATUS Status = AE_OK; ACPI_CPU_FLAGS Flags; ACPI_FUNCTION_TRACE (EvWalkGpeList); Flags = AcpiOsAcquireLock (AcpiGbl_GpeLock); /* Walk the interrupt level descriptor list */ GpeXruptInfo = AcpiGbl_GpeXruptListHead; while (GpeXruptInfo) { /* Walk all Gpe Blocks attached to this interrupt level */ GpeBlock = GpeXruptInfo->GpeBlockListHead; while (GpeBlock) { /* One callback per GPE block */ Status = GpeWalkCallback (GpeXruptInfo, GpeBlock, Context); if (ACPI_FAILURE (Status)) { if (Status == AE_CTRL_END) /* Callback abort */ { Status = AE_OK; } goto UnlockAndExit; } GpeBlock = GpeBlock->Next; } GpeXruptInfo = GpeXruptInfo->Next; } UnlockAndExit: AcpiOsReleaseLock (AcpiGbl_GpeLock, Flags); return_ACPI_STATUS (Status); } /******************************************************************************* * * FUNCTION: AcpiEvValidGpeEvent * * PARAMETERS: GpeEventInfo - Info for this GPE * * RETURN: TRUE if the GpeEvent is valid * * DESCRIPTION: Validate a GPE event. DO NOT CALL FROM INTERRUPT LEVEL. * Should be called only when the GPE lists are semaphore locked * and not subject to change. * ******************************************************************************/ BOOLEAN AcpiEvValidGpeEvent ( ACPI_GPE_EVENT_INFO *GpeEventInfo) { ACPI_GPE_XRUPT_INFO *GpeXruptBlock; ACPI_GPE_BLOCK_INFO *GpeBlock; ACPI_FUNCTION_ENTRY (); /* No need for spin lock since we are not changing any list elements */ /* Walk the GPE interrupt levels */ GpeXruptBlock = AcpiGbl_GpeXruptListHead; while (GpeXruptBlock) { GpeBlock = GpeXruptBlock->GpeBlockListHead; /* Walk the GPE blocks on this interrupt level */ while (GpeBlock) { if ((&GpeBlock->EventInfo[0] <= GpeEventInfo) && (&GpeBlock->EventInfo[GpeBlock->GpeCount] > GpeEventInfo)) { return (TRUE); } GpeBlock = GpeBlock->Next; } GpeXruptBlock = GpeXruptBlock->Next; } return (FALSE); } /******************************************************************************* * * FUNCTION: AcpiEvGetGpeDevice * * PARAMETERS: GPE_WALK_CALLBACK * * RETURN: Status * * DESCRIPTION: Matches the input GPE index (0-CurrentGpeCount) with a GPE * block device. NULL if the GPE is one of the FADT-defined GPEs. * ******************************************************************************/ ACPI_STATUS AcpiEvGetGpeDevice ( ACPI_GPE_XRUPT_INFO *GpeXruptInfo, ACPI_GPE_BLOCK_INFO *GpeBlock, void *Context) { ACPI_GPE_DEVICE_INFO *Info = Context; /* Increment Index by the number of GPEs in this block */ Info->NextBlockBaseIndex += GpeBlock->GpeCount; if (Info->Index < Info->NextBlockBaseIndex) { /* * The GPE index is within this block, get the node. Leave the node * NULL for the FADT-defined GPEs */ if ((GpeBlock->Node)->Type == ACPI_TYPE_DEVICE) { Info->GpeDevice = GpeBlock->Node; } Info->Status = AE_OK; return (AE_CTRL_END); } return (AE_OK); } /******************************************************************************* * * FUNCTION: AcpiEvGetGpeXruptBlock * * PARAMETERS: InterruptNumber - Interrupt for a GPE block * GpeXruptBlock - Where the block is returned * * RETURN: Status * * DESCRIPTION: Get or Create a GPE interrupt block. There is one interrupt * block per unique interrupt level used for GPEs. Should be * called only when the GPE lists are semaphore locked and not * subject to change. * ******************************************************************************/ ACPI_STATUS AcpiEvGetGpeXruptBlock ( UINT32 InterruptNumber, ACPI_GPE_XRUPT_INFO **GpeXruptBlock) { ACPI_GPE_XRUPT_INFO *NextGpeXrupt; ACPI_GPE_XRUPT_INFO *GpeXrupt; ACPI_STATUS Status; ACPI_CPU_FLAGS Flags; ACPI_FUNCTION_TRACE (EvGetGpeXruptBlock); /* No need for lock since we are not changing any list elements here */ NextGpeXrupt = AcpiGbl_GpeXruptListHead; while (NextGpeXrupt) { if (NextGpeXrupt->InterruptNumber == InterruptNumber) { *GpeXruptBlock = NextGpeXrupt; return_ACPI_STATUS (AE_OK); } NextGpeXrupt = NextGpeXrupt->Next; } /* Not found, must allocate a new xrupt descriptor */ GpeXrupt = ACPI_ALLOCATE_ZEROED (sizeof (ACPI_GPE_XRUPT_INFO)); if (!GpeXrupt) { return_ACPI_STATUS (AE_NO_MEMORY); } GpeXrupt->InterruptNumber = InterruptNumber; /* Install new interrupt descriptor with spin lock */ Flags = AcpiOsAcquireLock (AcpiGbl_GpeLock); if (AcpiGbl_GpeXruptListHead) { NextGpeXrupt = AcpiGbl_GpeXruptListHead; while (NextGpeXrupt->Next) { NextGpeXrupt = NextGpeXrupt->Next; } NextGpeXrupt->Next = GpeXrupt; GpeXrupt->Previous = NextGpeXrupt; } else { AcpiGbl_GpeXruptListHead = GpeXrupt; } AcpiOsReleaseLock (AcpiGbl_GpeLock, Flags); /* Install new interrupt handler if not SCI_INT */ if (InterruptNumber != AcpiGbl_FADT.SciInterrupt) { Status = AcpiOsInstallInterruptHandler (InterruptNumber, AcpiEvGpeXruptHandler, GpeXrupt); if (ACPI_FAILURE (Status)) { ACPI_EXCEPTION ((AE_INFO, Status, "Could not install GPE interrupt handler at level 0x%X", InterruptNumber)); return_ACPI_STATUS (Status); } } *GpeXruptBlock = GpeXrupt; return_ACPI_STATUS (AE_OK); } /******************************************************************************* * * FUNCTION: AcpiEvDeleteGpeXrupt * * PARAMETERS: GpeXrupt - A GPE interrupt info block * * RETURN: Status * * DESCRIPTION: Remove and free a GpeXrupt block. Remove an associated * interrupt handler if not the SCI interrupt. * ******************************************************************************/ ACPI_STATUS AcpiEvDeleteGpeXrupt ( ACPI_GPE_XRUPT_INFO *GpeXrupt) { ACPI_STATUS Status; ACPI_CPU_FLAGS Flags; ACPI_FUNCTION_TRACE (EvDeleteGpeXrupt); /* We never want to remove the SCI interrupt handler */ if (GpeXrupt->InterruptNumber == AcpiGbl_FADT.SciInterrupt) { GpeXrupt->GpeBlockListHead = NULL; return_ACPI_STATUS (AE_OK); } /* Disable this interrupt */ Status = AcpiOsRemoveInterruptHandler ( GpeXrupt->InterruptNumber, AcpiEvGpeXruptHandler); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } /* Unlink the interrupt block with lock */ Flags = AcpiOsAcquireLock (AcpiGbl_GpeLock); if (GpeXrupt->Previous) { GpeXrupt->Previous->Next = GpeXrupt->Next; } else { /* No previous, update list head */ AcpiGbl_GpeXruptListHead = GpeXrupt->Next; } if (GpeXrupt->Next) { GpeXrupt->Next->Previous = GpeXrupt->Previous; } AcpiOsReleaseLock (AcpiGbl_GpeLock, Flags); /* Free the block */ ACPI_FREE (GpeXrupt); return_ACPI_STATUS (AE_OK); } /******************************************************************************* * * FUNCTION: AcpiEvDeleteGpeHandlers * * PARAMETERS: GpeXruptInfo - GPE Interrupt info * GpeBlock - Gpe Block info * * RETURN: Status * * DESCRIPTION: Delete all Handler objects found in the GPE data structs. * Used only prior to termination. * ******************************************************************************/ ACPI_STATUS AcpiEvDeleteGpeHandlers ( ACPI_GPE_XRUPT_INFO *GpeXruptInfo, ACPI_GPE_BLOCK_INFO *GpeBlock, void *Context) { ACPI_GPE_EVENT_INFO *GpeEventInfo; ACPI_GPE_NOTIFY_INFO *Notify; ACPI_GPE_NOTIFY_INFO *Next; UINT32 i; UINT32 j; ACPI_FUNCTION_TRACE (EvDeleteGpeHandlers); /* Examine each GPE Register within the block */ for (i = 0; i < GpeBlock->RegisterCount; i++) { /* Now look at the individual GPEs in this byte register */ for (j = 0; j < ACPI_GPE_REGISTER_WIDTH; j++) { GpeEventInfo = &GpeBlock->EventInfo[((ACPI_SIZE) i * ACPI_GPE_REGISTER_WIDTH) + j]; if ((GpeEventInfo->Flags & ACPI_GPE_DISPATCH_MASK) == ACPI_GPE_DISPATCH_HANDLER) { /* Delete an installed handler block */ ACPI_FREE (GpeEventInfo->Dispatch.Handler); GpeEventInfo->Dispatch.Handler = NULL; GpeEventInfo->Flags &= ~ACPI_GPE_DISPATCH_MASK; } else if ((GpeEventInfo->Flags & ACPI_GPE_DISPATCH_MASK) == ACPI_GPE_DISPATCH_NOTIFY) { /* Delete the implicit notification device list */ Notify = GpeEventInfo->Dispatch.NotifyList; while (Notify) { Next = Notify->Next; ACPI_FREE (Notify); Notify = Next; } GpeEventInfo->Dispatch.NotifyList = NULL; GpeEventInfo->Flags &= ~ACPI_GPE_DISPATCH_MASK; } } } return_ACPI_STATUS (AE_OK); } #endif /* !ACPI_REDUCED_HARDWARE */ src/acpica/source/components/events/evhandler.c000066400000000000000000000520111231470457100221750ustar00rootroot00000000000000/****************************************************************************** * * Module Name: evhandler - Support for Address Space handlers * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #define __EVHANDLER_C__ #include "acpi.h" #include "accommon.h" #include "acevents.h" #include "acnamesp.h" #include "acinterp.h" #define _COMPONENT ACPI_EVENTS ACPI_MODULE_NAME ("evhandler") /* Local prototypes */ static ACPI_STATUS AcpiEvInstallHandler ( ACPI_HANDLE ObjHandle, UINT32 Level, void *Context, void **ReturnValue); /* These are the address spaces that will get default handlers */ UINT8 AcpiGbl_DefaultAddressSpaces[ACPI_NUM_DEFAULT_SPACES] = { ACPI_ADR_SPACE_SYSTEM_MEMORY, ACPI_ADR_SPACE_SYSTEM_IO, ACPI_ADR_SPACE_PCI_CONFIG, ACPI_ADR_SPACE_DATA_TABLE }; /******************************************************************************* * * FUNCTION: AcpiEvInstallRegionHandlers * * PARAMETERS: None * * RETURN: Status * * DESCRIPTION: Installs the core subsystem default address space handlers. * ******************************************************************************/ ACPI_STATUS AcpiEvInstallRegionHandlers ( void) { ACPI_STATUS Status; UINT32 i; ACPI_FUNCTION_TRACE (EvInstallRegionHandlers); Status = AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } /* * All address spaces (PCI Config, EC, SMBus) are scope dependent and * registration must occur for a specific device. * * In the case of the system memory and IO address spaces there is * currently no device associated with the address space. For these we * use the root. * * We install the default PCI config space handler at the root so that * this space is immediately available even though the we have not * enumerated all the PCI Root Buses yet. This is to conform to the ACPI * specification which states that the PCI config space must be always * available -- even though we are nowhere near ready to find the PCI root * buses at this point. * * NOTE: We ignore AE_ALREADY_EXISTS because this means that a handler * has already been installed (via AcpiInstallAddressSpaceHandler). * Similar for AE_SAME_HANDLER. */ for (i = 0; i < ACPI_NUM_DEFAULT_SPACES; i++) { Status = AcpiEvInstallSpaceHandler (AcpiGbl_RootNode, AcpiGbl_DefaultAddressSpaces[i], ACPI_DEFAULT_HANDLER, NULL, NULL); switch (Status) { case AE_OK: case AE_SAME_HANDLER: case AE_ALREADY_EXISTS: /* These exceptions are all OK */ Status = AE_OK; break; default: goto UnlockAndExit; } } UnlockAndExit: (void) AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); return_ACPI_STATUS (Status); } /******************************************************************************* * * FUNCTION: AcpiEvHasDefaultHandler * * PARAMETERS: Node - Namespace node for the device * SpaceId - The address space ID * * RETURN: TRUE if default handler is installed, FALSE otherwise * * DESCRIPTION: Check if the default handler is installed for the requested * space ID. * ******************************************************************************/ BOOLEAN AcpiEvHasDefaultHandler ( ACPI_NAMESPACE_NODE *Node, ACPI_ADR_SPACE_TYPE SpaceId) { ACPI_OPERAND_OBJECT *ObjDesc; ACPI_OPERAND_OBJECT *HandlerObj; /* Must have an existing internal object */ ObjDesc = AcpiNsGetAttachedObject (Node); if (ObjDesc) { HandlerObj = ObjDesc->Device.Handler; /* Walk the linked list of handlers for this object */ while (HandlerObj) { if (HandlerObj->AddressSpace.SpaceId == SpaceId) { if (HandlerObj->AddressSpace.HandlerFlags & ACPI_ADDR_HANDLER_DEFAULT_INSTALLED) { return (TRUE); } } HandlerObj = HandlerObj->AddressSpace.Next; } } return (FALSE); } /******************************************************************************* * * FUNCTION: AcpiEvInstallHandler * * PARAMETERS: WalkNamespace callback * * DESCRIPTION: This routine installs an address handler into objects that are * of type Region or Device. * * If the Object is a Device, and the device has a handler of * the same type then the search is terminated in that branch. * * This is because the existing handler is closer in proximity * to any more regions than the one we are trying to install. * ******************************************************************************/ static ACPI_STATUS AcpiEvInstallHandler ( ACPI_HANDLE ObjHandle, UINT32 Level, void *Context, void **ReturnValue) { ACPI_OPERAND_OBJECT *HandlerObj; ACPI_OPERAND_OBJECT *NextHandlerObj; ACPI_OPERAND_OBJECT *ObjDesc; ACPI_NAMESPACE_NODE *Node; ACPI_STATUS Status; ACPI_FUNCTION_NAME (EvInstallHandler); HandlerObj = (ACPI_OPERAND_OBJECT *) Context; /* Parameter validation */ if (!HandlerObj) { return (AE_OK); } /* Convert and validate the device handle */ Node = AcpiNsValidateHandle (ObjHandle); if (!Node) { return (AE_BAD_PARAMETER); } /* * We only care about regions and objects that are allowed to have * address space handlers */ if ((Node->Type != ACPI_TYPE_DEVICE) && (Node->Type != ACPI_TYPE_REGION) && (Node != AcpiGbl_RootNode)) { return (AE_OK); } /* Check for an existing internal object */ ObjDesc = AcpiNsGetAttachedObject (Node); if (!ObjDesc) { /* No object, just exit */ return (AE_OK); } /* Devices are handled different than regions */ if (ObjDesc->Common.Type == ACPI_TYPE_DEVICE) { /* Check if this Device already has a handler for this address space */ NextHandlerObj = ObjDesc->Device.Handler; while (NextHandlerObj) { /* Found a handler, is it for the same address space? */ if (NextHandlerObj->AddressSpace.SpaceId == HandlerObj->AddressSpace.SpaceId) { ACPI_DEBUG_PRINT ((ACPI_DB_OPREGION, "Found handler for region [%s] in device %p(%p) " "handler %p\n", AcpiUtGetRegionName (HandlerObj->AddressSpace.SpaceId), ObjDesc, NextHandlerObj, HandlerObj)); /* * Since the object we found it on was a device, then it * means that someone has already installed a handler for * the branch of the namespace from this device on. Just * bail out telling the walk routine to not traverse this * branch. This preserves the scoping rule for handlers. */ return (AE_CTRL_DEPTH); } /* Walk the linked list of handlers attached to this device */ NextHandlerObj = NextHandlerObj->AddressSpace.Next; } /* * As long as the device didn't have a handler for this space we * don't care about it. We just ignore it and proceed. */ return (AE_OK); } /* Object is a Region */ if (ObjDesc->Region.SpaceId != HandlerObj->AddressSpace.SpaceId) { /* This region is for a different address space, just ignore it */ return (AE_OK); } /* * Now we have a region and it is for the handler's address space type. * * First disconnect region for any previous handler (if any) */ AcpiEvDetachRegion (ObjDesc, FALSE); /* Connect the region to the new handler */ Status = AcpiEvAttachRegion (HandlerObj, ObjDesc, FALSE); return (Status); } /******************************************************************************* * * FUNCTION: AcpiEvInstallSpaceHandler * * PARAMETERS: Node - Namespace node for the device * SpaceId - The address space ID * Handler - Address of the handler * Setup - Address of the setup function * Context - Value passed to the handler on each access * * RETURN: Status * * DESCRIPTION: Install a handler for all OpRegions of a given SpaceId. * Assumes namespace is locked * ******************************************************************************/ ACPI_STATUS AcpiEvInstallSpaceHandler ( ACPI_NAMESPACE_NODE *Node, ACPI_ADR_SPACE_TYPE SpaceId, ACPI_ADR_SPACE_HANDLER Handler, ACPI_ADR_SPACE_SETUP Setup, void *Context) { ACPI_OPERAND_OBJECT *ObjDesc; ACPI_OPERAND_OBJECT *HandlerObj; ACPI_STATUS Status; ACPI_OBJECT_TYPE Type; UINT8 Flags = 0; ACPI_FUNCTION_TRACE (EvInstallSpaceHandler); /* * This registration is valid for only the types below and the root. This * is where the default handlers get placed. */ if ((Node->Type != ACPI_TYPE_DEVICE) && (Node->Type != ACPI_TYPE_PROCESSOR) && (Node->Type != ACPI_TYPE_THERMAL) && (Node != AcpiGbl_RootNode)) { Status = AE_BAD_PARAMETER; goto UnlockAndExit; } if (Handler == ACPI_DEFAULT_HANDLER) { Flags = ACPI_ADDR_HANDLER_DEFAULT_INSTALLED; switch (SpaceId) { case ACPI_ADR_SPACE_SYSTEM_MEMORY: Handler = AcpiExSystemMemorySpaceHandler; Setup = AcpiEvSystemMemoryRegionSetup; break; case ACPI_ADR_SPACE_SYSTEM_IO: Handler = AcpiExSystemIoSpaceHandler; Setup = AcpiEvIoSpaceRegionSetup; break; case ACPI_ADR_SPACE_PCI_CONFIG: Handler = AcpiExPciConfigSpaceHandler; Setup = AcpiEvPciConfigRegionSetup; break; case ACPI_ADR_SPACE_CMOS: Handler = AcpiExCmosSpaceHandler; Setup = AcpiEvCmosRegionSetup; break; case ACPI_ADR_SPACE_PCI_BAR_TARGET: Handler = AcpiExPciBarSpaceHandler; Setup = AcpiEvPciBarRegionSetup; break; case ACPI_ADR_SPACE_DATA_TABLE: Handler = AcpiExDataTableSpaceHandler; Setup = NULL; break; default: Status = AE_BAD_PARAMETER; goto UnlockAndExit; } } /* If the caller hasn't specified a setup routine, use the default */ if (!Setup) { Setup = AcpiEvDefaultRegionSetup; } /* Check for an existing internal object */ ObjDesc = AcpiNsGetAttachedObject (Node); if (ObjDesc) { /* * The attached device object already exists. Make sure the handler * is not already installed. */ HandlerObj = ObjDesc->Device.Handler; /* Walk the handler list for this device */ while (HandlerObj) { /* Same SpaceId indicates a handler already installed */ if (HandlerObj->AddressSpace.SpaceId == SpaceId) { if (HandlerObj->AddressSpace.Handler == Handler) { /* * It is (relatively) OK to attempt to install the SAME * handler twice. This can easily happen with the * PCI_Config space. */ Status = AE_SAME_HANDLER; goto UnlockAndExit; } else { /* A handler is already installed */ Status = AE_ALREADY_EXISTS; } goto UnlockAndExit; } /* Walk the linked list of handlers */ HandlerObj = HandlerObj->AddressSpace.Next; } } else { ACPI_DEBUG_PRINT ((ACPI_DB_OPREGION, "Creating object on Device %p while installing handler\n", Node)); /* ObjDesc does not exist, create one */ if (Node->Type == ACPI_TYPE_ANY) { Type = ACPI_TYPE_DEVICE; } else { Type = Node->Type; } ObjDesc = AcpiUtCreateInternalObject (Type); if (!ObjDesc) { Status = AE_NO_MEMORY; goto UnlockAndExit; } /* Init new descriptor */ ObjDesc->Common.Type = (UINT8) Type; /* Attach the new object to the Node */ Status = AcpiNsAttachObject (Node, ObjDesc, Type); /* Remove local reference to the object */ AcpiUtRemoveReference (ObjDesc); if (ACPI_FAILURE (Status)) { goto UnlockAndExit; } } ACPI_DEBUG_PRINT ((ACPI_DB_OPREGION, "Installing address handler for region %s(%X) on Device %4.4s %p(%p)\n", AcpiUtGetRegionName (SpaceId), SpaceId, AcpiUtGetNodeName (Node), Node, ObjDesc)); /* * Install the handler * * At this point there is no existing handler. Just allocate the object * for the handler and link it into the list. */ HandlerObj = AcpiUtCreateInternalObject (ACPI_TYPE_LOCAL_ADDRESS_HANDLER); if (!HandlerObj) { Status = AE_NO_MEMORY; goto UnlockAndExit; } /* Init handler obj */ HandlerObj->AddressSpace.SpaceId = (UINT8) SpaceId; HandlerObj->AddressSpace.HandlerFlags = Flags; HandlerObj->AddressSpace.RegionList = NULL; HandlerObj->AddressSpace.Node = Node; HandlerObj->AddressSpace.Handler = Handler; HandlerObj->AddressSpace.Context = Context; HandlerObj->AddressSpace.Setup = Setup; /* Install at head of Device.AddressSpace list */ HandlerObj->AddressSpace.Next = ObjDesc->Device.Handler; /* * The Device object is the first reference on the HandlerObj. * Each region that uses the handler adds a reference. */ ObjDesc->Device.Handler = HandlerObj; /* * Walk the namespace finding all of the regions this * handler will manage. * * Start at the device and search the branch toward * the leaf nodes until either the leaf is encountered or * a device is detected that has an address handler of the * same type. * * In either case, back up and search down the remainder * of the branch */ Status = AcpiNsWalkNamespace (ACPI_TYPE_ANY, Node, ACPI_UINT32_MAX, ACPI_NS_WALK_UNLOCK, AcpiEvInstallHandler, NULL, HandlerObj, NULL); UnlockAndExit: return_ACPI_STATUS (Status); } src/acpica/source/components/events/evmisc.c000066400000000000000000000325571231470457100215300ustar00rootroot00000000000000/****************************************************************************** * * Module Name: evmisc - Miscellaneous event manager support functions * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #include "acpi.h" #include "accommon.h" #include "acevents.h" #include "acnamesp.h" #define _COMPONENT ACPI_EVENTS ACPI_MODULE_NAME ("evmisc") /* Local prototypes */ static void ACPI_SYSTEM_XFACE AcpiEvNotifyDispatch ( void *Context); /******************************************************************************* * * FUNCTION: AcpiEvIsNotifyObject * * PARAMETERS: Node - Node to check * * RETURN: TRUE if notifies allowed on this object * * DESCRIPTION: Check type of node for a object that supports notifies. * * TBD: This could be replaced by a flag bit in the node. * ******************************************************************************/ BOOLEAN AcpiEvIsNotifyObject ( ACPI_NAMESPACE_NODE *Node) { switch (Node->Type) { case ACPI_TYPE_DEVICE: case ACPI_TYPE_PROCESSOR: case ACPI_TYPE_THERMAL: /* * These are the ONLY objects that can receive ACPI notifications */ return (TRUE); default: return (FALSE); } } /******************************************************************************* * * FUNCTION: AcpiEvQueueNotifyRequest * * PARAMETERS: Node - NS node for the notified object * NotifyValue - Value from the Notify() request * * RETURN: Status * * DESCRIPTION: Dispatch a device notification event to a previously * installed handler. * ******************************************************************************/ ACPI_STATUS AcpiEvQueueNotifyRequest ( ACPI_NAMESPACE_NODE *Node, UINT32 NotifyValue) { ACPI_OPERAND_OBJECT *ObjDesc; ACPI_OPERAND_OBJECT *HandlerListHead = NULL; ACPI_GENERIC_STATE *Info; UINT8 HandlerListId = 0; ACPI_STATUS Status = AE_OK; ACPI_FUNCTION_NAME (EvQueueNotifyRequest); /* Are Notifies allowed on this object? */ if (!AcpiEvIsNotifyObject (Node)) { return (AE_TYPE); } /* Get the correct notify list type (System or Device) */ if (NotifyValue <= ACPI_MAX_SYS_NOTIFY) { HandlerListId = ACPI_SYSTEM_HANDLER_LIST; } else { HandlerListId = ACPI_DEVICE_HANDLER_LIST; } /* Get the notify object attached to the namespace Node */ ObjDesc = AcpiNsGetAttachedObject (Node); if (ObjDesc) { /* We have an attached object, Get the correct handler list */ HandlerListHead = ObjDesc->CommonNotify.NotifyList[HandlerListId]; } /* * If there is no notify handler (Global or Local) * for this object, just ignore the notify */ if (!AcpiGbl_GlobalNotify[HandlerListId].Handler && !HandlerListHead) { ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "No notify handler for Notify, ignoring (%4.4s, %X) node %p\n", AcpiUtGetNodeName (Node), NotifyValue, Node)); return (AE_OK); } /* Setup notify info and schedule the notify dispatcher */ Info = AcpiUtCreateGenericState (); if (!Info) { return (AE_NO_MEMORY); } Info->Common.DescriptorType = ACPI_DESC_TYPE_STATE_NOTIFY; Info->Notify.Node = Node; Info->Notify.Value = (UINT16) NotifyValue; Info->Notify.HandlerListId = HandlerListId; Info->Notify.HandlerListHead = HandlerListHead; Info->Notify.Global = &AcpiGbl_GlobalNotify[HandlerListId]; ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Dispatching Notify on [%4.4s] (%s) Value 0x%2.2X (%s) Node %p\n", AcpiUtGetNodeName (Node), AcpiUtGetTypeName (Node->Type), NotifyValue, AcpiUtGetNotifyName (NotifyValue, ACPI_TYPE_ANY), Node)); Status = AcpiOsExecute (OSL_NOTIFY_HANDLER, AcpiEvNotifyDispatch, Info); if (ACPI_FAILURE (Status)) { AcpiUtDeleteGenericState (Info); } return (Status); } /******************************************************************************* * * FUNCTION: AcpiEvNotifyDispatch * * PARAMETERS: Context - To be passed to the notify handler * * RETURN: None. * * DESCRIPTION: Dispatch a device notification event to a previously * installed handler. * ******************************************************************************/ static void ACPI_SYSTEM_XFACE AcpiEvNotifyDispatch ( void *Context) { ACPI_GENERIC_STATE *Info = (ACPI_GENERIC_STATE *) Context; ACPI_OPERAND_OBJECT *HandlerObj; ACPI_FUNCTION_ENTRY (); /* Invoke a global notify handler if installed */ if (Info->Notify.Global->Handler) { Info->Notify.Global->Handler (Info->Notify.Node, Info->Notify.Value, Info->Notify.Global->Context); } /* Now invoke the local notify handler(s) if any are installed */ HandlerObj = Info->Notify.HandlerListHead; while (HandlerObj) { HandlerObj->Notify.Handler (Info->Notify.Node, Info->Notify.Value, HandlerObj->Notify.Context); HandlerObj = HandlerObj->Notify.Next[Info->Notify.HandlerListId]; } /* All done with the info object */ AcpiUtDeleteGenericState (Info); } #if (!ACPI_REDUCED_HARDWARE) /****************************************************************************** * * FUNCTION: AcpiEvTerminate * * PARAMETERS: none * * RETURN: none * * DESCRIPTION: Disable events and free memory allocated for table storage. * ******************************************************************************/ void AcpiEvTerminate ( void) { UINT32 i; ACPI_STATUS Status; ACPI_FUNCTION_TRACE (EvTerminate); if (AcpiGbl_EventsInitialized) { /* * Disable all event-related functionality. In all cases, on error, * print a message but obviously we don't abort. */ /* Disable all fixed events */ for (i = 0; i < ACPI_NUM_FIXED_EVENTS; i++) { Status = AcpiDisableEvent (i, 0); if (ACPI_FAILURE (Status)) { ACPI_ERROR ((AE_INFO, "Could not disable fixed event %u", (UINT32) i)); } } /* Disable all GPEs in all GPE blocks */ Status = AcpiEvWalkGpeList (AcpiHwDisableGpeBlock, NULL); Status = AcpiEvRemoveGlobalLockHandler (); if (ACPI_FAILURE(Status)) { ACPI_ERROR ((AE_INFO, "Could not remove Global Lock handler")); } AcpiGbl_EventsInitialized = FALSE; } /* Remove SCI handlers */ Status = AcpiEvRemoveAllSciHandlers (); if (ACPI_FAILURE(Status)) { ACPI_ERROR ((AE_INFO, "Could not remove SCI handler")); } /* Deallocate all handler objects installed within GPE info structs */ Status = AcpiEvWalkGpeList (AcpiEvDeleteGpeHandlers, NULL); /* Return to original mode if necessary */ if (AcpiGbl_OriginalMode == ACPI_SYS_MODE_LEGACY) { Status = AcpiDisable (); if (ACPI_FAILURE (Status)) { ACPI_WARNING ((AE_INFO, "AcpiDisable failed")); } } return_VOID; } #endif /* !ACPI_REDUCED_HARDWARE */ src/acpica/source/components/events/evregion.c000066400000000000000000000714301231470457100220510ustar00rootroot00000000000000/****************************************************************************** * * Module Name: evregion - Operation Region support * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #define __EVREGION_C__ #include "acpi.h" #include "accommon.h" #include "acevents.h" #include "acnamesp.h" #include "acinterp.h" #define _COMPONENT ACPI_EVENTS ACPI_MODULE_NAME ("evregion") extern UINT8 AcpiGbl_DefaultAddressSpaces[]; /* Local prototypes */ static void AcpiEvOrphanEcRegMethod ( ACPI_NAMESPACE_NODE *EcDeviceNode); static ACPI_STATUS AcpiEvRegRun ( ACPI_HANDLE ObjHandle, UINT32 Level, void *Context, void **ReturnValue); /******************************************************************************* * * FUNCTION: AcpiEvInitializeOpRegions * * PARAMETERS: None * * RETURN: Status * * DESCRIPTION: Execute _REG methods for all Operation Regions that have * an installed default region handler. * ******************************************************************************/ ACPI_STATUS AcpiEvInitializeOpRegions ( void) { ACPI_STATUS Status; UINT32 i; ACPI_FUNCTION_TRACE (EvInitializeOpRegions); Status = AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } /* Run the _REG methods for OpRegions in each default address space */ for (i = 0; i < ACPI_NUM_DEFAULT_SPACES; i++) { /* * Make sure the installed handler is the DEFAULT handler. If not the * default, the _REG methods will have already been run (when the * handler was installed) */ if (AcpiEvHasDefaultHandler (AcpiGbl_RootNode, AcpiGbl_DefaultAddressSpaces[i])) { Status = AcpiEvExecuteRegMethods (AcpiGbl_RootNode, AcpiGbl_DefaultAddressSpaces[i]); } } AcpiGbl_RegMethodsExecuted = TRUE; (void) AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); return_ACPI_STATUS (Status); } /******************************************************************************* * * FUNCTION: AcpiEvAddressSpaceDispatch * * PARAMETERS: RegionObj - Internal region object * FieldObj - Corresponding field. Can be NULL. * Function - Read or Write operation * RegionOffset - Where in the region to read or write * BitWidth - Field width in bits (8, 16, 32, or 64) * Value - Pointer to in or out value, must be * a full 64-bit integer * * RETURN: Status * * DESCRIPTION: Dispatch an address space or operation region access to * a previously installed handler. * ******************************************************************************/ ACPI_STATUS AcpiEvAddressSpaceDispatch ( ACPI_OPERAND_OBJECT *RegionObj, ACPI_OPERAND_OBJECT *FieldObj, UINT32 Function, UINT32 RegionOffset, UINT32 BitWidth, UINT64 *Value) { ACPI_STATUS Status; ACPI_ADR_SPACE_HANDLER Handler; ACPI_ADR_SPACE_SETUP RegionSetup; ACPI_OPERAND_OBJECT *HandlerDesc; ACPI_OPERAND_OBJECT *RegionObj2; void *RegionContext = NULL; ACPI_CONNECTION_INFO *Context; ACPI_FUNCTION_TRACE (EvAddressSpaceDispatch); RegionObj2 = AcpiNsGetSecondaryObject (RegionObj); if (!RegionObj2) { return_ACPI_STATUS (AE_NOT_EXIST); } /* Ensure that there is a handler associated with this region */ HandlerDesc = RegionObj->Region.Handler; if (!HandlerDesc) { ACPI_ERROR ((AE_INFO, "No handler for Region [%4.4s] (%p) [%s]", AcpiUtGetNodeName (RegionObj->Region.Node), RegionObj, AcpiUtGetRegionName (RegionObj->Region.SpaceId))); return_ACPI_STATUS (AE_NOT_EXIST); } Context = HandlerDesc->AddressSpace.Context; /* * It may be the case that the region has never been initialized. * Some types of regions require special init code */ if (!(RegionObj->Region.Flags & AOPOBJ_SETUP_COMPLETE)) { /* This region has not been initialized yet, do it */ RegionSetup = HandlerDesc->AddressSpace.Setup; if (!RegionSetup) { /* No initialization routine, exit with error */ ACPI_ERROR ((AE_INFO, "No init routine for region(%p) [%s]", RegionObj, AcpiUtGetRegionName (RegionObj->Region.SpaceId))); return_ACPI_STATUS (AE_NOT_EXIST); } /* * We must exit the interpreter because the region setup will * potentially execute control methods (for example, the _REG method * for this region) */ AcpiExExitInterpreter (); Status = RegionSetup (RegionObj, ACPI_REGION_ACTIVATE, Context, &RegionContext); /* Re-enter the interpreter */ AcpiExEnterInterpreter (); /* Check for failure of the Region Setup */ if (ACPI_FAILURE (Status)) { ACPI_EXCEPTION ((AE_INFO, Status, "During region initialization: [%s]", AcpiUtGetRegionName (RegionObj->Region.SpaceId))); return_ACPI_STATUS (Status); } /* Region initialization may have been completed by RegionSetup */ if (!(RegionObj->Region.Flags & AOPOBJ_SETUP_COMPLETE)) { RegionObj->Region.Flags |= AOPOBJ_SETUP_COMPLETE; /* * Save the returned context for use in all accesses to * the handler for this particular region */ if (!(RegionObj2->Extra.RegionContext)) { RegionObj2->Extra.RegionContext = RegionContext; } } } /* We have everything we need, we can invoke the address space handler */ Handler = HandlerDesc->AddressSpace.Handler; ACPI_DEBUG_PRINT ((ACPI_DB_OPREGION, "Handler %p (@%p) Address %8.8X%8.8X [%s]\n", &RegionObj->Region.Handler->AddressSpace, Handler, ACPI_FORMAT_NATIVE_UINT (RegionObj->Region.Address + RegionOffset), AcpiUtGetRegionName (RegionObj->Region.SpaceId))); /* * Special handling for GenericSerialBus and GeneralPurposeIo: * There are three extra parameters that must be passed to the * handler via the context: * 1) Connection buffer, a resource template from Connection() op. * 2) Length of the above buffer. * 3) Actual access length from the AccessAs() op. */ if (((RegionObj->Region.SpaceId == ACPI_ADR_SPACE_GSBUS) || (RegionObj->Region.SpaceId == ACPI_ADR_SPACE_GPIO)) && Context && FieldObj) { /* Get the Connection (ResourceTemplate) buffer */ Context->Connection = FieldObj->Field.ResourceBuffer; Context->Length = FieldObj->Field.ResourceLength; Context->AccessLength = FieldObj->Field.AccessLength; } if (!(HandlerDesc->AddressSpace.HandlerFlags & ACPI_ADDR_HANDLER_DEFAULT_INSTALLED)) { /* * For handlers other than the default (supplied) handlers, we must * exit the interpreter because the handler *might* block -- we don't * know what it will do, so we can't hold the lock on the intepreter. */ AcpiExExitInterpreter(); } /* Call the handler */ Status = Handler (Function, (RegionObj->Region.Address + RegionOffset), BitWidth, Value, Context, RegionObj2->Extra.RegionContext); if (ACPI_FAILURE (Status)) { ACPI_EXCEPTION ((AE_INFO, Status, "Returned by Handler for [%s]", AcpiUtGetRegionName (RegionObj->Region.SpaceId))); } if (!(HandlerDesc->AddressSpace.HandlerFlags & ACPI_ADDR_HANDLER_DEFAULT_INSTALLED)) { /* * We just returned from a non-default handler, we must re-enter the * interpreter */ AcpiExEnterInterpreter (); } return_ACPI_STATUS (Status); } /******************************************************************************* * * FUNCTION: AcpiEvDetachRegion * * PARAMETERS: RegionObj - Region Object * AcpiNsIsLocked - Namespace Region Already Locked? * * RETURN: None * * DESCRIPTION: Break the association between the handler and the region * this is a two way association. * ******************************************************************************/ void AcpiEvDetachRegion( ACPI_OPERAND_OBJECT *RegionObj, BOOLEAN AcpiNsIsLocked) { ACPI_OPERAND_OBJECT *HandlerObj; ACPI_OPERAND_OBJECT *ObjDesc; ACPI_OPERAND_OBJECT *StartDesc; ACPI_OPERAND_OBJECT **LastObjPtr; ACPI_ADR_SPACE_SETUP RegionSetup; void **RegionContext; ACPI_OPERAND_OBJECT *RegionObj2; ACPI_STATUS Status; ACPI_FUNCTION_TRACE (EvDetachRegion); RegionObj2 = AcpiNsGetSecondaryObject (RegionObj); if (!RegionObj2) { return_VOID; } RegionContext = &RegionObj2->Extra.RegionContext; /* Get the address handler from the region object */ HandlerObj = RegionObj->Region.Handler; if (!HandlerObj) { /* This region has no handler, all done */ return_VOID; } /* Find this region in the handler's list */ ObjDesc = HandlerObj->AddressSpace.RegionList; StartDesc = ObjDesc; LastObjPtr = &HandlerObj->AddressSpace.RegionList; while (ObjDesc) { /* Is this the correct Region? */ if (ObjDesc == RegionObj) { ACPI_DEBUG_PRINT ((ACPI_DB_OPREGION, "Removing Region %p from address handler %p\n", RegionObj, HandlerObj)); /* This is it, remove it from the handler's list */ *LastObjPtr = ObjDesc->Region.Next; ObjDesc->Region.Next = NULL; /* Must clear field */ if (AcpiNsIsLocked) { Status = AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); if (ACPI_FAILURE (Status)) { return_VOID; } } /* Now stop region accesses by executing the _REG method */ Status = AcpiEvExecuteRegMethod (RegionObj, ACPI_REG_DISCONNECT); if (ACPI_FAILURE (Status)) { ACPI_EXCEPTION ((AE_INFO, Status, "from region _REG, [%s]", AcpiUtGetRegionName (RegionObj->Region.SpaceId))); } if (AcpiNsIsLocked) { Status = AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); if (ACPI_FAILURE (Status)) { return_VOID; } } /* * If the region has been activated, call the setup handler with * the deactivate notification */ if (RegionObj->Region.Flags & AOPOBJ_SETUP_COMPLETE) { RegionSetup = HandlerObj->AddressSpace.Setup; Status = RegionSetup (RegionObj, ACPI_REGION_DEACTIVATE, HandlerObj->AddressSpace.Context, RegionContext); /* * RegionContext should have been released by the deactivate * operation. We don't need access to it anymore here. */ if (RegionContext) { *RegionContext = NULL; } /* Init routine may fail, Just ignore errors */ if (ACPI_FAILURE (Status)) { ACPI_EXCEPTION ((AE_INFO, Status, "from region handler - deactivate, [%s]", AcpiUtGetRegionName (RegionObj->Region.SpaceId))); } RegionObj->Region.Flags &= ~(AOPOBJ_SETUP_COMPLETE); } /* * Remove handler reference in the region * * NOTE: this doesn't mean that the region goes away, the region * is just inaccessible as indicated to the _REG method * * If the region is on the handler's list, this must be the * region's handler */ RegionObj->Region.Handler = NULL; AcpiUtRemoveReference (HandlerObj); return_VOID; } /* Walk the linked list of handlers */ LastObjPtr = &ObjDesc->Region.Next; ObjDesc = ObjDesc->Region.Next; /* Prevent infinite loop if list is corrupted */ if (ObjDesc == StartDesc) { ACPI_ERROR ((AE_INFO, "Circular handler list in region object %p", RegionObj)); return_VOID; } } /* If we get here, the region was not in the handler's region list */ ACPI_DEBUG_PRINT ((ACPI_DB_OPREGION, "Cannot remove region %p from address handler %p\n", RegionObj, HandlerObj)); return_VOID; } /******************************************************************************* * * FUNCTION: AcpiEvAttachRegion * * PARAMETERS: HandlerObj - Handler Object * RegionObj - Region Object * AcpiNsIsLocked - Namespace Region Already Locked? * * RETURN: None * * DESCRIPTION: Create the association between the handler and the region * this is a two way association. * ******************************************************************************/ ACPI_STATUS AcpiEvAttachRegion ( ACPI_OPERAND_OBJECT *HandlerObj, ACPI_OPERAND_OBJECT *RegionObj, BOOLEAN AcpiNsIsLocked) { ACPI_FUNCTION_TRACE (EvAttachRegion); ACPI_DEBUG_PRINT ((ACPI_DB_OPREGION, "Adding Region [%4.4s] %p to address handler %p [%s]\n", AcpiUtGetNodeName (RegionObj->Region.Node), RegionObj, HandlerObj, AcpiUtGetRegionName (RegionObj->Region.SpaceId))); /* Link this region to the front of the handler's list */ RegionObj->Region.Next = HandlerObj->AddressSpace.RegionList; HandlerObj->AddressSpace.RegionList = RegionObj; /* Install the region's handler */ if (RegionObj->Region.Handler) { return_ACPI_STATUS (AE_ALREADY_EXISTS); } RegionObj->Region.Handler = HandlerObj; AcpiUtAddReference (HandlerObj); return_ACPI_STATUS (AE_OK); } /******************************************************************************* * * FUNCTION: AcpiEvExecuteRegMethod * * PARAMETERS: RegionObj - Region object * Function - Passed to _REG: On (1) or Off (0) * * RETURN: Status * * DESCRIPTION: Execute _REG method for a region * ******************************************************************************/ ACPI_STATUS AcpiEvExecuteRegMethod ( ACPI_OPERAND_OBJECT *RegionObj, UINT32 Function) { ACPI_EVALUATE_INFO *Info; ACPI_OPERAND_OBJECT *Args[3]; ACPI_OPERAND_OBJECT *RegionObj2; ACPI_STATUS Status; ACPI_FUNCTION_TRACE (EvExecuteRegMethod); RegionObj2 = AcpiNsGetSecondaryObject (RegionObj); if (!RegionObj2) { return_ACPI_STATUS (AE_NOT_EXIST); } if (RegionObj2->Extra.Method_REG == NULL) { return_ACPI_STATUS (AE_OK); } /* Allocate and initialize the evaluation information block */ Info = ACPI_ALLOCATE_ZEROED (sizeof (ACPI_EVALUATE_INFO)); if (!Info) { return_ACPI_STATUS (AE_NO_MEMORY); } Info->PrefixNode = RegionObj2->Extra.Method_REG; Info->RelativePathname = NULL; Info->Parameters = Args; Info->Flags = ACPI_IGNORE_RETURN_VALUE; /* * The _REG method has two arguments: * * Arg0 - Integer: * Operation region space ID Same value as RegionObj->Region.SpaceId * * Arg1 - Integer: * connection status 1 for connecting the handler, 0 for disconnecting * the handler (Passed as a parameter) */ Args[0] = AcpiUtCreateIntegerObject ((UINT64) RegionObj->Region.SpaceId); if (!Args[0]) { Status = AE_NO_MEMORY; goto Cleanup1; } Args[1] = AcpiUtCreateIntegerObject ((UINT64) Function); if (!Args[1]) { Status = AE_NO_MEMORY; goto Cleanup2; } Args[2] = NULL; /* Terminate list */ /* Execute the method, no return value */ ACPI_DEBUG_EXEC ( AcpiUtDisplayInitPathname (ACPI_TYPE_METHOD, Info->PrefixNode, NULL)); Status = AcpiNsEvaluate (Info); AcpiUtRemoveReference (Args[1]); Cleanup2: AcpiUtRemoveReference (Args[0]); Cleanup1: ACPI_FREE (Info); return_ACPI_STATUS (Status); } /******************************************************************************* * * FUNCTION: AcpiEvExecuteRegMethods * * PARAMETERS: Node - Namespace node for the device * SpaceId - The address space ID * * RETURN: Status * * DESCRIPTION: Run all _REG methods for the input Space ID; * Note: assumes namespace is locked, or system init time. * ******************************************************************************/ ACPI_STATUS AcpiEvExecuteRegMethods ( ACPI_NAMESPACE_NODE *Node, ACPI_ADR_SPACE_TYPE SpaceId) { ACPI_STATUS Status; ACPI_FUNCTION_TRACE (EvExecuteRegMethods); /* * Run all _REG methods for all Operation Regions for this space ID. This * is a separate walk in order to handle any interdependencies between * regions and _REG methods. (i.e. handlers must be installed for all * regions of this Space ID before we can run any _REG methods) */ Status = AcpiNsWalkNamespace (ACPI_TYPE_ANY, Node, ACPI_UINT32_MAX, ACPI_NS_WALK_UNLOCK, AcpiEvRegRun, NULL, &SpaceId, NULL); /* Special case for EC: handle "orphan" _REG methods with no region */ if (SpaceId == ACPI_ADR_SPACE_EC) { AcpiEvOrphanEcRegMethod (Node); } return_ACPI_STATUS (Status); } /******************************************************************************* * * FUNCTION: AcpiEvRegRun * * PARAMETERS: WalkNamespace callback * * DESCRIPTION: Run _REG method for region objects of the requested spaceID * ******************************************************************************/ static ACPI_STATUS AcpiEvRegRun ( ACPI_HANDLE ObjHandle, UINT32 Level, void *Context, void **ReturnValue) { ACPI_OPERAND_OBJECT *ObjDesc; ACPI_NAMESPACE_NODE *Node; ACPI_ADR_SPACE_TYPE SpaceId; ACPI_STATUS Status; SpaceId = *ACPI_CAST_PTR (ACPI_ADR_SPACE_TYPE, Context); /* Convert and validate the device handle */ Node = AcpiNsValidateHandle (ObjHandle); if (!Node) { return (AE_BAD_PARAMETER); } /* * We only care about regions.and objects that are allowed to have address * space handlers */ if ((Node->Type != ACPI_TYPE_REGION) && (Node != AcpiGbl_RootNode)) { return (AE_OK); } /* Check for an existing internal object */ ObjDesc = AcpiNsGetAttachedObject (Node); if (!ObjDesc) { /* No object, just exit */ return (AE_OK); } /* Object is a Region */ if (ObjDesc->Region.SpaceId != SpaceId) { /* This region is for a different address space, just ignore it */ return (AE_OK); } Status = AcpiEvExecuteRegMethod (ObjDesc, ACPI_REG_CONNECT); return (Status); } /******************************************************************************* * * FUNCTION: AcpiEvOrphanEcRegMethod * * PARAMETERS: EcDeviceNode - Namespace node for an EC device * * RETURN: None * * DESCRIPTION: Execute an "orphan" _REG method that appears under the EC * device. This is a _REG method that has no corresponding region * within the EC device scope. The orphan _REG method appears to * have been enabled by the description of the ECDT in the ACPI * specification: "The availability of the region space can be * detected by providing a _REG method object underneath the * Embedded Controller device." * * To quickly access the EC device, we use the EcDeviceNode used * during EC handler installation. Otherwise, we would need to * perform a time consuming namespace walk, executing _HID * methods to find the EC device. * * MUTEX: Assumes the namespace is locked * ******************************************************************************/ static void AcpiEvOrphanEcRegMethod ( ACPI_NAMESPACE_NODE *EcDeviceNode) { ACPI_HANDLE RegMethod; ACPI_NAMESPACE_NODE *NextNode; ACPI_STATUS Status; ACPI_OBJECT_LIST Args; ACPI_OBJECT Objects[2]; ACPI_FUNCTION_TRACE (EvOrphanEcRegMethod); if (!EcDeviceNode) { return_VOID; } /* Namespace is currently locked, must release */ (void) AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); /* Get a handle to a _REG method immediately under the EC device */ Status = AcpiGetHandle (EcDeviceNode, METHOD_NAME__REG, &RegMethod); if (ACPI_FAILURE (Status)) { goto Exit; /* There is no _REG method present */ } /* * Execute the _REG method only if there is no Operation Region in * this scope with the Embedded Controller space ID. Otherwise, it * will already have been executed. Note, this allows for Regions * with other space IDs to be present; but the code below will then * execute the _REG method with the EmbeddedControl SpaceID argument. */ NextNode = AcpiNsGetNextNode (EcDeviceNode, NULL); while (NextNode) { if ((NextNode->Type == ACPI_TYPE_REGION) && (NextNode->Object) && (NextNode->Object->Region.SpaceId == ACPI_ADR_SPACE_EC)) { goto Exit; /* Do not execute the _REG */ } NextNode = AcpiNsGetNextNode (EcDeviceNode, NextNode); } /* Evaluate the _REG(EmbeddedControl,Connect) method */ Args.Count = 2; Args.Pointer = Objects; Objects[0].Type = ACPI_TYPE_INTEGER; Objects[0].Integer.Value = ACPI_ADR_SPACE_EC; Objects[1].Type = ACPI_TYPE_INTEGER; Objects[1].Integer.Value = ACPI_REG_CONNECT; Status = AcpiEvaluateObject (RegMethod, NULL, &Args, NULL); Exit: /* We ignore all errors from above, don't care */ Status = AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); return_VOID; } src/acpica/source/components/events/evrgnini.c000066400000000000000000000632311231470457100220540ustar00rootroot00000000000000/****************************************************************************** * * Module Name: evrgnini- ACPI AddressSpace (OpRegion) init * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #define __EVRGNINI_C__ #include "acpi.h" #include "accommon.h" #include "acevents.h" #include "acnamesp.h" #define _COMPONENT ACPI_EVENTS ACPI_MODULE_NAME ("evrgnini") /* Local prototypes */ static BOOLEAN AcpiEvIsPciRootBridge ( ACPI_NAMESPACE_NODE *Node); /******************************************************************************* * * FUNCTION: AcpiEvSystemMemoryRegionSetup * * PARAMETERS: Handle - Region we are interested in * Function - Start or stop * HandlerContext - Address space handler context * RegionContext - Region specific context * * RETURN: Status * * DESCRIPTION: Setup a SystemMemory operation region * ******************************************************************************/ ACPI_STATUS AcpiEvSystemMemoryRegionSetup ( ACPI_HANDLE Handle, UINT32 Function, void *HandlerContext, void **RegionContext) { ACPI_OPERAND_OBJECT *RegionDesc = (ACPI_OPERAND_OBJECT *) Handle; ACPI_MEM_SPACE_CONTEXT *LocalRegionContext; ACPI_FUNCTION_TRACE (EvSystemMemoryRegionSetup); if (Function == ACPI_REGION_DEACTIVATE) { if (*RegionContext) { LocalRegionContext = (ACPI_MEM_SPACE_CONTEXT *) *RegionContext; /* Delete a cached mapping if present */ if (LocalRegionContext->MappedLength) { AcpiOsUnmapMemory (LocalRegionContext->MappedLogicalAddress, LocalRegionContext->MappedLength); } ACPI_FREE (LocalRegionContext); *RegionContext = NULL; } return_ACPI_STATUS (AE_OK); } /* Create a new context */ LocalRegionContext = ACPI_ALLOCATE_ZEROED (sizeof (ACPI_MEM_SPACE_CONTEXT)); if (!(LocalRegionContext)) { return_ACPI_STATUS (AE_NO_MEMORY); } /* Save the region length and address for use in the handler */ LocalRegionContext->Length = RegionDesc->Region.Length; LocalRegionContext->Address = RegionDesc->Region.Address; *RegionContext = LocalRegionContext; return_ACPI_STATUS (AE_OK); } /******************************************************************************* * * FUNCTION: AcpiEvIoSpaceRegionSetup * * PARAMETERS: Handle - Region we are interested in * Function - Start or stop * HandlerContext - Address space handler context * RegionContext - Region specific context * * RETURN: Status * * DESCRIPTION: Setup a IO operation region * ******************************************************************************/ ACPI_STATUS AcpiEvIoSpaceRegionSetup ( ACPI_HANDLE Handle, UINT32 Function, void *HandlerContext, void **RegionContext) { ACPI_FUNCTION_TRACE (EvIoSpaceRegionSetup); if (Function == ACPI_REGION_DEACTIVATE) { *RegionContext = NULL; } else { *RegionContext = HandlerContext; } return_ACPI_STATUS (AE_OK); } /******************************************************************************* * * FUNCTION: AcpiEvPciConfigRegionSetup * * PARAMETERS: Handle - Region we are interested in * Function - Start or stop * HandlerContext - Address space handler context * RegionContext - Region specific context * * RETURN: Status * * DESCRIPTION: Setup a PCI_Config operation region * * MUTEX: Assumes namespace is not locked * ******************************************************************************/ ACPI_STATUS AcpiEvPciConfigRegionSetup ( ACPI_HANDLE Handle, UINT32 Function, void *HandlerContext, void **RegionContext) { ACPI_STATUS Status = AE_OK; UINT64 PciValue; ACPI_PCI_ID *PciId = *RegionContext; ACPI_OPERAND_OBJECT *HandlerObj; ACPI_NAMESPACE_NODE *ParentNode; ACPI_NAMESPACE_NODE *PciRootNode; ACPI_NAMESPACE_NODE *PciDeviceNode; ACPI_OPERAND_OBJECT *RegionObj = (ACPI_OPERAND_OBJECT *) Handle; ACPI_FUNCTION_TRACE (EvPciConfigRegionSetup); HandlerObj = RegionObj->Region.Handler; if (!HandlerObj) { /* * No installed handler. This shouldn't happen because the dispatch * routine checks before we get here, but we check again just in case. */ ACPI_DEBUG_PRINT ((ACPI_DB_OPREGION, "Attempting to init a region %p, with no handler\n", RegionObj)); return_ACPI_STATUS (AE_NOT_EXIST); } *RegionContext = NULL; if (Function == ACPI_REGION_DEACTIVATE) { if (PciId) { ACPI_FREE (PciId); } return_ACPI_STATUS (Status); } ParentNode = RegionObj->Region.Node->Parent; /* * Get the _SEG and _BBN values from the device upon which the handler * is installed. * * We need to get the _SEG and _BBN objects relative to the PCI BUS device. * This is the device the handler has been registered to handle. */ /* * If the AddressSpace.Node is still pointing to the root, we need * to scan upward for a PCI Root bridge and re-associate the OpRegion * handlers with that device. */ if (HandlerObj->AddressSpace.Node == AcpiGbl_RootNode) { /* Start search from the parent object */ PciRootNode = ParentNode; while (PciRootNode != AcpiGbl_RootNode) { /* Get the _HID/_CID in order to detect a RootBridge */ if (AcpiEvIsPciRootBridge (PciRootNode)) { /* Install a handler for this PCI root bridge */ Status = AcpiInstallAddressSpaceHandler ( (ACPI_HANDLE) PciRootNode, ACPI_ADR_SPACE_PCI_CONFIG, ACPI_DEFAULT_HANDLER, NULL, NULL); if (ACPI_FAILURE (Status)) { if (Status == AE_SAME_HANDLER) { /* * It is OK if the handler is already installed on the * root bridge. Still need to return a context object * for the new PCI_Config operation region, however. */ Status = AE_OK; } else { ACPI_EXCEPTION ((AE_INFO, Status, "Could not install PciConfig handler " "for Root Bridge %4.4s", AcpiUtGetNodeName (PciRootNode))); } } break; } PciRootNode = PciRootNode->Parent; } /* PCI root bridge not found, use namespace root node */ } else { PciRootNode = HandlerObj->AddressSpace.Node; } /* * If this region is now initialized, we are done. * (InstallAddressSpaceHandler could have initialized it) */ if (RegionObj->Region.Flags & AOPOBJ_SETUP_COMPLETE) { return_ACPI_STATUS (AE_OK); } /* Region is still not initialized. Create a new context */ PciId = ACPI_ALLOCATE_ZEROED (sizeof (ACPI_PCI_ID)); if (!PciId) { return_ACPI_STATUS (AE_NO_MEMORY); } /* * For PCI_Config space access, we need the segment, bus, device and * function numbers. Acquire them here. * * Find the parent device object. (This allows the operation region to be * within a subscope under the device, such as a control method.) */ PciDeviceNode = RegionObj->Region.Node; while (PciDeviceNode && (PciDeviceNode->Type != ACPI_TYPE_DEVICE)) { PciDeviceNode = PciDeviceNode->Parent; } if (!PciDeviceNode) { ACPI_FREE (PciId); return_ACPI_STATUS (AE_AML_OPERAND_TYPE); } /* * Get the PCI device and function numbers from the _ADR object * contained in the parent's scope. */ Status = AcpiUtEvaluateNumericObject (METHOD_NAME__ADR, PciDeviceNode, &PciValue); /* * The default is zero, and since the allocation above zeroed the data, * just do nothing on failure. */ if (ACPI_SUCCESS (Status)) { PciId->Device = ACPI_HIWORD (ACPI_LODWORD (PciValue)); PciId->Function = ACPI_LOWORD (ACPI_LODWORD (PciValue)); } /* The PCI segment number comes from the _SEG method */ Status = AcpiUtEvaluateNumericObject (METHOD_NAME__SEG, PciRootNode, &PciValue); if (ACPI_SUCCESS (Status)) { PciId->Segment = ACPI_LOWORD (PciValue); } /* The PCI bus number comes from the _BBN method */ Status = AcpiUtEvaluateNumericObject (METHOD_NAME__BBN, PciRootNode, &PciValue); if (ACPI_SUCCESS (Status)) { PciId->Bus = ACPI_LOWORD (PciValue); } /* Complete/update the PCI ID for this device */ Status = AcpiHwDerivePciId (PciId, PciRootNode, RegionObj->Region.Node); if (ACPI_FAILURE (Status)) { ACPI_FREE (PciId); return_ACPI_STATUS (Status); } *RegionContext = PciId; return_ACPI_STATUS (AE_OK); } /******************************************************************************* * * FUNCTION: AcpiEvIsPciRootBridge * * PARAMETERS: Node - Device node being examined * * RETURN: TRUE if device is a PCI/PCI-Express Root Bridge * * DESCRIPTION: Determine if the input device represents a PCI Root Bridge by * examining the _HID and _CID for the device. * ******************************************************************************/ static BOOLEAN AcpiEvIsPciRootBridge ( ACPI_NAMESPACE_NODE *Node) { ACPI_STATUS Status; ACPI_PNP_DEVICE_ID *Hid; ACPI_PNP_DEVICE_ID_LIST *Cid; UINT32 i; BOOLEAN Match; /* Get the _HID and check for a PCI Root Bridge */ Status = AcpiUtExecute_HID (Node, &Hid); if (ACPI_FAILURE (Status)) { return (FALSE); } Match = AcpiUtIsPciRootBridge (Hid->String); ACPI_FREE (Hid); if (Match) { return (TRUE); } /* The _HID did not match. Get the _CID and check for a PCI Root Bridge */ Status = AcpiUtExecute_CID (Node, &Cid); if (ACPI_FAILURE (Status)) { return (FALSE); } /* Check all _CIDs in the returned list */ for (i = 0; i < Cid->Count; i++) { if (AcpiUtIsPciRootBridge (Cid->Ids[i].String)) { ACPI_FREE (Cid); return (TRUE); } } ACPI_FREE (Cid); return (FALSE); } /******************************************************************************* * * FUNCTION: AcpiEvPciBarRegionSetup * * PARAMETERS: Handle - Region we are interested in * Function - Start or stop * HandlerContext - Address space handler context * RegionContext - Region specific context * * RETURN: Status * * DESCRIPTION: Setup a PciBAR operation region * * MUTEX: Assumes namespace is not locked * ******************************************************************************/ ACPI_STATUS AcpiEvPciBarRegionSetup ( ACPI_HANDLE Handle, UINT32 Function, void *HandlerContext, void **RegionContext) { ACPI_FUNCTION_TRACE (EvPciBarRegionSetup); return_ACPI_STATUS (AE_OK); } /******************************************************************************* * * FUNCTION: AcpiEvCmosRegionSetup * * PARAMETERS: Handle - Region we are interested in * Function - Start or stop * HandlerContext - Address space handler context * RegionContext - Region specific context * * RETURN: Status * * DESCRIPTION: Setup a CMOS operation region * * MUTEX: Assumes namespace is not locked * ******************************************************************************/ ACPI_STATUS AcpiEvCmosRegionSetup ( ACPI_HANDLE Handle, UINT32 Function, void *HandlerContext, void **RegionContext) { ACPI_FUNCTION_TRACE (EvCmosRegionSetup); return_ACPI_STATUS (AE_OK); } /******************************************************************************* * * FUNCTION: AcpiEvDefaultRegionSetup * * PARAMETERS: Handle - Region we are interested in * Function - Start or stop * HandlerContext - Address space handler context * RegionContext - Region specific context * * RETURN: Status * * DESCRIPTION: Default region initialization * ******************************************************************************/ ACPI_STATUS AcpiEvDefaultRegionSetup ( ACPI_HANDLE Handle, UINT32 Function, void *HandlerContext, void **RegionContext) { ACPI_FUNCTION_TRACE (EvDefaultRegionSetup); if (Function == ACPI_REGION_DEACTIVATE) { *RegionContext = NULL; } else { *RegionContext = HandlerContext; } return_ACPI_STATUS (AE_OK); } /******************************************************************************* * * FUNCTION: AcpiEvInitializeRegion * * PARAMETERS: RegionObj - Region we are initializing * AcpiNsLocked - Is namespace locked? * * RETURN: Status * * DESCRIPTION: Initializes the region, finds any _REG methods and saves them * for execution at a later time * * Get the appropriate address space handler for a newly * created region. * * This also performs address space specific initialization. For * example, PCI regions must have an _ADR object that contains * a PCI address in the scope of the definition. This address is * required to perform an access to PCI config space. * * MUTEX: Interpreter should be unlocked, because we may run the _REG * method for this region. * ******************************************************************************/ ACPI_STATUS AcpiEvInitializeRegion ( ACPI_OPERAND_OBJECT *RegionObj, BOOLEAN AcpiNsLocked) { ACPI_OPERAND_OBJECT *HandlerObj; ACPI_OPERAND_OBJECT *ObjDesc; ACPI_ADR_SPACE_TYPE SpaceId; ACPI_NAMESPACE_NODE *Node; ACPI_STATUS Status; ACPI_NAMESPACE_NODE *MethodNode; ACPI_NAME *RegNamePtr = (ACPI_NAME *) METHOD_NAME__REG; ACPI_OPERAND_OBJECT *RegionObj2; ACPI_FUNCTION_TRACE_U32 (EvInitializeRegion, AcpiNsLocked); if (!RegionObj) { return_ACPI_STATUS (AE_BAD_PARAMETER); } if (RegionObj->Common.Flags & AOPOBJ_OBJECT_INITIALIZED) { return_ACPI_STATUS (AE_OK); } RegionObj2 = AcpiNsGetSecondaryObject (RegionObj); if (!RegionObj2) { return_ACPI_STATUS (AE_NOT_EXIST); } Node = RegionObj->Region.Node->Parent; SpaceId = RegionObj->Region.SpaceId; /* Setup defaults */ RegionObj->Region.Handler = NULL; RegionObj2->Extra.Method_REG = NULL; RegionObj->Common.Flags &= ~(AOPOBJ_SETUP_COMPLETE); RegionObj->Common.Flags |= AOPOBJ_OBJECT_INITIALIZED; /* Find any "_REG" method associated with this region definition */ Status = AcpiNsSearchOneScope ( *RegNamePtr, Node, ACPI_TYPE_METHOD, &MethodNode); if (ACPI_SUCCESS (Status)) { /* * The _REG method is optional and there can be only one per region * definition. This will be executed when the handler is attached * or removed */ RegionObj2->Extra.Method_REG = MethodNode; } /* * The following loop depends upon the root Node having no parent * ie: AcpiGbl_RootNode->ParentEntry being set to NULL */ while (Node) { /* Check to see if a handler exists */ HandlerObj = NULL; ObjDesc = AcpiNsGetAttachedObject (Node); if (ObjDesc) { /* Can only be a handler if the object exists */ switch (Node->Type) { case ACPI_TYPE_DEVICE: HandlerObj = ObjDesc->Device.Handler; break; case ACPI_TYPE_PROCESSOR: HandlerObj = ObjDesc->Processor.Handler; break; case ACPI_TYPE_THERMAL: HandlerObj = ObjDesc->ThermalZone.Handler; break; case ACPI_TYPE_METHOD: /* * If we are executing module level code, the original * Node's object was replaced by this Method object and we * saved the handler in the method object. * * See AcpiNsExecModuleCode */ if (ObjDesc->Method.InfoFlags & ACPI_METHOD_MODULE_LEVEL) { HandlerObj = ObjDesc->Method.Dispatch.Handler; } break; default: /* Ignore other objects */ break; } while (HandlerObj) { /* Is this handler of the correct type? */ if (HandlerObj->AddressSpace.SpaceId == SpaceId) { /* Found correct handler */ ACPI_DEBUG_PRINT ((ACPI_DB_OPREGION, "Found handler %p for region %p in obj %p\n", HandlerObj, RegionObj, ObjDesc)); Status = AcpiEvAttachRegion (HandlerObj, RegionObj, AcpiNsLocked); /* * Tell all users that this region is usable by * running the _REG method */ if (AcpiNsLocked) { Status = AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } } Status = AcpiEvExecuteRegMethod (RegionObj, ACPI_REG_CONNECT); if (AcpiNsLocked) { Status = AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } } return_ACPI_STATUS (AE_OK); } /* Try next handler in the list */ HandlerObj = HandlerObj->AddressSpace.Next; } } /* This node does not have the handler we need; Pop up one level */ Node = Node->Parent; } /* If we get here, there is no handler for this region */ ACPI_DEBUG_PRINT ((ACPI_DB_OPREGION, "No handler for RegionType %s(%X) (RegionObj %p)\n", AcpiUtGetRegionName (SpaceId), SpaceId, RegionObj)); return_ACPI_STATUS (AE_NOT_EXIST); } src/acpica/source/components/events/evsci.c000066400000000000000000000303021231470457100213350ustar00rootroot00000000000000/******************************************************************************* * * Module Name: evsci - System Control Interrupt configuration and * legacy to ACPI mode state transition functions * ******************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #include "acpi.h" #include "accommon.h" #include "acevents.h" #define _COMPONENT ACPI_EVENTS ACPI_MODULE_NAME ("evsci") #if (!ACPI_REDUCED_HARDWARE) /* Entire module */ /* Local prototypes */ static UINT32 ACPI_SYSTEM_XFACE AcpiEvSciXruptHandler ( void *Context); /******************************************************************************* * * FUNCTION: AcpiEvSciDispatch * * PARAMETERS: None * * RETURN: Status code indicates whether interrupt was handled. * * DESCRIPTION: Dispatch the SCI to all host-installed SCI handlers. * ******************************************************************************/ UINT32 AcpiEvSciDispatch ( void) { ACPI_SCI_HANDLER_INFO *SciHandler; ACPI_CPU_FLAGS Flags; UINT32 IntStatus = ACPI_INTERRUPT_NOT_HANDLED; ACPI_FUNCTION_NAME (EvSciDispatch); /* Are there any host-installed SCI handlers? */ if (!AcpiGbl_SciHandlerList) { return (IntStatus); } Flags = AcpiOsAcquireLock (AcpiGbl_GpeLock); /* Invoke all host-installed SCI handlers */ SciHandler = AcpiGbl_SciHandlerList; while (SciHandler) { /* Invoke the installed handler (at interrupt level) */ IntStatus |= SciHandler->Address ( SciHandler->Context); SciHandler = SciHandler->Next; } AcpiOsReleaseLock (AcpiGbl_GpeLock, Flags); return (IntStatus); } /******************************************************************************* * * FUNCTION: AcpiEvSciXruptHandler * * PARAMETERS: Context - Calling Context * * RETURN: Status code indicates whether interrupt was handled. * * DESCRIPTION: Interrupt handler that will figure out what function or * control method to call to deal with a SCI. * ******************************************************************************/ static UINT32 ACPI_SYSTEM_XFACE AcpiEvSciXruptHandler ( void *Context) { ACPI_GPE_XRUPT_INFO *GpeXruptList = Context; UINT32 InterruptHandled = ACPI_INTERRUPT_NOT_HANDLED; ACPI_FUNCTION_TRACE (EvSciXruptHandler); /* * We are guaranteed by the ACPICA initialization/shutdown code that * if this interrupt handler is installed, ACPI is enabled. */ /* * Fixed Events: * Check for and dispatch any Fixed Events that have occurred */ InterruptHandled |= AcpiEvFixedEventDetect (); /* * General Purpose Events: * Check for and dispatch any GPEs that have occurred */ InterruptHandled |= AcpiEvGpeDetect (GpeXruptList); /* Invoke all host-installed SCI handlers */ InterruptHandled |= AcpiEvSciDispatch (); AcpiSciCount++; return_UINT32 (InterruptHandled); } /******************************************************************************* * * FUNCTION: AcpiEvGpeXruptHandler * * PARAMETERS: Context - Calling Context * * RETURN: Status code indicates whether interrupt was handled. * * DESCRIPTION: Handler for GPE Block Device interrupts * ******************************************************************************/ UINT32 ACPI_SYSTEM_XFACE AcpiEvGpeXruptHandler ( void *Context) { ACPI_GPE_XRUPT_INFO *GpeXruptList = Context; UINT32 InterruptHandled = ACPI_INTERRUPT_NOT_HANDLED; ACPI_FUNCTION_TRACE (EvGpeXruptHandler); /* * We are guaranteed by the ACPICA initialization/shutdown code that * if this interrupt handler is installed, ACPI is enabled. */ /* GPEs: Check for and dispatch any GPEs that have occurred */ InterruptHandled |= AcpiEvGpeDetect (GpeXruptList); return_UINT32 (InterruptHandled); } /****************************************************************************** * * FUNCTION: AcpiEvInstallSciHandler * * PARAMETERS: none * * RETURN: Status * * DESCRIPTION: Installs SCI handler. * ******************************************************************************/ UINT32 AcpiEvInstallSciHandler ( void) { UINT32 Status = AE_OK; ACPI_FUNCTION_TRACE (EvInstallSciHandler); Status = AcpiOsInstallInterruptHandler ((UINT32) AcpiGbl_FADT.SciInterrupt, AcpiEvSciXruptHandler, AcpiGbl_GpeXruptListHead); return_ACPI_STATUS (Status); } /****************************************************************************** * * FUNCTION: AcpiEvRemoveAllSciHandlers * * PARAMETERS: none * * RETURN: AE_OK if handler uninstalled, AE_ERROR if handler was not * installed to begin with * * DESCRIPTION: Remove the SCI interrupt handler. No further SCIs will be * taken. Remove all host-installed SCI handlers. * * Note: It doesn't seem important to disable all events or set the event * enable registers to their original values. The OS should disable * the SCI interrupt level when the handler is removed, so no more * events will come in. * ******************************************************************************/ ACPI_STATUS AcpiEvRemoveAllSciHandlers ( void) { ACPI_SCI_HANDLER_INFO *SciHandler; ACPI_CPU_FLAGS Flags; ACPI_STATUS Status; ACPI_FUNCTION_TRACE (EvRemoveAllSciHandlers); /* Just let the OS remove the handler and disable the level */ Status = AcpiOsRemoveInterruptHandler ((UINT32) AcpiGbl_FADT.SciInterrupt, AcpiEvSciXruptHandler); if (!AcpiGbl_SciHandlerList) { return (Status); } Flags = AcpiOsAcquireLock (AcpiGbl_GpeLock); /* Free all host-installed SCI handlers */ while (AcpiGbl_SciHandlerList) { SciHandler = AcpiGbl_SciHandlerList; AcpiGbl_SciHandlerList = SciHandler->Next; ACPI_FREE (SciHandler); } AcpiOsReleaseLock (AcpiGbl_GpeLock, Flags); return_ACPI_STATUS (Status); } #endif /* !ACPI_REDUCED_HARDWARE */ src/acpica/source/components/events/evxface.c000066400000000000000000001061621231470457100216550ustar00rootroot00000000000000/****************************************************************************** * * Module Name: evxface - External interfaces for ACPI events * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #define __EVXFACE_C__ #define EXPORT_ACPI_INTERFACES #include "acpi.h" #include "accommon.h" #include "acnamesp.h" #include "acevents.h" #include "acinterp.h" #define _COMPONENT ACPI_EVENTS ACPI_MODULE_NAME ("evxface") /******************************************************************************* * * FUNCTION: AcpiInstallNotifyHandler * * PARAMETERS: Device - The device for which notifies will be handled * HandlerType - The type of handler: * ACPI_SYSTEM_NOTIFY: System Handler (00-7F) * ACPI_DEVICE_NOTIFY: Device Handler (80-FF) * ACPI_ALL_NOTIFY: Both System and Device * Handler - Address of the handler * Context - Value passed to the handler on each GPE * * RETURN: Status * * DESCRIPTION: Install a handler for notifications on an ACPI Device, * ThermalZone, or Processor object. * * NOTES: The Root namespace object may have only one handler for each * type of notify (System/Device). Device/Thermal/Processor objects * may have one device notify handler, and multiple system notify * handlers. * ******************************************************************************/ ACPI_STATUS AcpiInstallNotifyHandler ( ACPI_HANDLE Device, UINT32 HandlerType, ACPI_NOTIFY_HANDLER Handler, void *Context) { ACPI_NAMESPACE_NODE *Node = ACPI_CAST_PTR (ACPI_NAMESPACE_NODE, Device); ACPI_OPERAND_OBJECT *ObjDesc; ACPI_OPERAND_OBJECT *HandlerObj; ACPI_STATUS Status; UINT32 i; ACPI_FUNCTION_TRACE (AcpiInstallNotifyHandler); /* Parameter validation */ if ((!Device) || (!Handler) || (!HandlerType) || (HandlerType > ACPI_MAX_NOTIFY_HANDLER_TYPE)) { return_ACPI_STATUS (AE_BAD_PARAMETER); } Status = AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } /* * Root Object: * Registering a notify handler on the root object indicates that the * caller wishes to receive notifications for all objects. Note that * only one global handler can be registered per notify type. * Ensure that a handler is not already installed. */ if (Device == ACPI_ROOT_OBJECT) { for (i = 0; i < ACPI_NUM_NOTIFY_TYPES; i++) { if (HandlerType & (i+1)) { if (AcpiGbl_GlobalNotify[i].Handler) { Status = AE_ALREADY_EXISTS; goto UnlockAndExit; } AcpiGbl_GlobalNotify[i].Handler = Handler; AcpiGbl_GlobalNotify[i].Context = Context; } } goto UnlockAndExit; /* Global notify handler installed, all done */ } /* * All Other Objects: * Caller will only receive notifications specific to the target * object. Note that only certain object types are allowed to * receive notifications. */ /* Are Notifies allowed on this object? */ if (!AcpiEvIsNotifyObject (Node)) { Status = AE_TYPE; goto UnlockAndExit; } /* Check for an existing internal object, might not exist */ ObjDesc = AcpiNsGetAttachedObject (Node); if (!ObjDesc) { /* Create a new object */ ObjDesc = AcpiUtCreateInternalObject (Node->Type); if (!ObjDesc) { Status = AE_NO_MEMORY; goto UnlockAndExit; } /* Attach new object to the Node, remove local reference */ Status = AcpiNsAttachObject (Device, ObjDesc, Node->Type); AcpiUtRemoveReference (ObjDesc); if (ACPI_FAILURE (Status)) { goto UnlockAndExit; } } /* Ensure that the handler is not already installed in the lists */ for (i = 0; i < ACPI_NUM_NOTIFY_TYPES; i++) { if (HandlerType & (i+1)) { HandlerObj = ObjDesc->CommonNotify.NotifyList[i]; while (HandlerObj) { if (HandlerObj->Notify.Handler == Handler) { Status = AE_ALREADY_EXISTS; goto UnlockAndExit; } HandlerObj = HandlerObj->Notify.Next[i]; } } } /* Create and populate a new notify handler object */ HandlerObj = AcpiUtCreateInternalObject (ACPI_TYPE_LOCAL_NOTIFY); if (!HandlerObj) { Status = AE_NO_MEMORY; goto UnlockAndExit; } HandlerObj->Notify.Node = Node; HandlerObj->Notify.HandlerType = HandlerType; HandlerObj->Notify.Handler = Handler; HandlerObj->Notify.Context = Context; /* Install the handler at the list head(s) */ for (i = 0; i < ACPI_NUM_NOTIFY_TYPES; i++) { if (HandlerType & (i+1)) { HandlerObj->Notify.Next[i] = ObjDesc->CommonNotify.NotifyList[i]; ObjDesc->CommonNotify.NotifyList[i] = HandlerObj; } } /* Add an extra reference if handler was installed in both lists */ if (HandlerType == ACPI_ALL_NOTIFY) { AcpiUtAddReference (HandlerObj); } UnlockAndExit: (void) AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); return_ACPI_STATUS (Status); } ACPI_EXPORT_SYMBOL (AcpiInstallNotifyHandler) /******************************************************************************* * * FUNCTION: AcpiRemoveNotifyHandler * * PARAMETERS: Device - The device for which the handler is installed * HandlerType - The type of handler: * ACPI_SYSTEM_NOTIFY: System Handler (00-7F) * ACPI_DEVICE_NOTIFY: Device Handler (80-FF) * ACPI_ALL_NOTIFY: Both System and Device * Handler - Address of the handler * * RETURN: Status * * DESCRIPTION: Remove a handler for notifies on an ACPI device * ******************************************************************************/ ACPI_STATUS AcpiRemoveNotifyHandler ( ACPI_HANDLE Device, UINT32 HandlerType, ACPI_NOTIFY_HANDLER Handler) { ACPI_NAMESPACE_NODE *Node = ACPI_CAST_PTR (ACPI_NAMESPACE_NODE, Device); ACPI_OPERAND_OBJECT *ObjDesc; ACPI_OPERAND_OBJECT *HandlerObj; ACPI_OPERAND_OBJECT *PreviousHandlerObj; ACPI_STATUS Status = AE_OK; UINT32 i; ACPI_FUNCTION_TRACE (AcpiRemoveNotifyHandler); /* Parameter validation */ if ((!Device) || (!Handler) || (!HandlerType) || (HandlerType > ACPI_MAX_NOTIFY_HANDLER_TYPE)) { return_ACPI_STATUS (AE_BAD_PARAMETER); } /* Root Object. Global handlers are removed here */ if (Device == ACPI_ROOT_OBJECT) { for (i = 0; i < ACPI_NUM_NOTIFY_TYPES; i++) { if (HandlerType & (i+1)) { Status = AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } if (!AcpiGbl_GlobalNotify[i].Handler || (AcpiGbl_GlobalNotify[i].Handler != Handler)) { Status = AE_NOT_EXIST; goto UnlockAndExit; } ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Removing global notify handler\n")); AcpiGbl_GlobalNotify[i].Handler = NULL; AcpiGbl_GlobalNotify[i].Context = NULL; (void) AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); /* Make sure all deferred notify tasks are completed */ AcpiOsWaitEventsComplete (); } } return_ACPI_STATUS (AE_OK); } /* All other objects: Are Notifies allowed on this object? */ if (!AcpiEvIsNotifyObject (Node)) { return_ACPI_STATUS (AE_TYPE); } /* Must have an existing internal object */ ObjDesc = AcpiNsGetAttachedObject (Node); if (!ObjDesc) { return_ACPI_STATUS (AE_NOT_EXIST); } /* Internal object exists. Find the handler and remove it */ for (i = 0; i < ACPI_NUM_NOTIFY_TYPES; i++) { if (HandlerType & (i+1)) { Status = AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } HandlerObj = ObjDesc->CommonNotify.NotifyList[i]; PreviousHandlerObj = NULL; /* Attempt to find the handler in the handler list */ while (HandlerObj && (HandlerObj->Notify.Handler != Handler)) { PreviousHandlerObj = HandlerObj; HandlerObj = HandlerObj->Notify.Next[i]; } if (!HandlerObj) { Status = AE_NOT_EXIST; goto UnlockAndExit; } /* Remove the handler object from the list */ if (PreviousHandlerObj) /* Handler is not at the list head */ { PreviousHandlerObj->Notify.Next[i] = HandlerObj->Notify.Next[i]; } else /* Handler is at the list head */ { ObjDesc->CommonNotify.NotifyList[i] = HandlerObj->Notify.Next[i]; } (void) AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); /* Make sure all deferred notify tasks are completed */ AcpiOsWaitEventsComplete (); AcpiUtRemoveReference (HandlerObj); } } return_ACPI_STATUS (Status); UnlockAndExit: (void) AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); return_ACPI_STATUS (Status); } ACPI_EXPORT_SYMBOL (AcpiRemoveNotifyHandler) /******************************************************************************* * * FUNCTION: AcpiInstallExceptionHandler * * PARAMETERS: Handler - Pointer to the handler function for the * event * * RETURN: Status * * DESCRIPTION: Saves the pointer to the handler function * ******************************************************************************/ ACPI_STATUS AcpiInstallExceptionHandler ( ACPI_EXCEPTION_HANDLER Handler) { ACPI_STATUS Status; ACPI_FUNCTION_TRACE (AcpiInstallExceptionHandler); Status = AcpiUtAcquireMutex (ACPI_MTX_EVENTS); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } /* Don't allow two handlers. */ if (AcpiGbl_ExceptionHandler) { Status = AE_ALREADY_EXISTS; goto Cleanup; } /* Install the handler */ AcpiGbl_ExceptionHandler = Handler; Cleanup: (void) AcpiUtReleaseMutex (ACPI_MTX_EVENTS); return_ACPI_STATUS (Status); } ACPI_EXPORT_SYMBOL (AcpiInstallExceptionHandler) #if (!ACPI_REDUCED_HARDWARE) /******************************************************************************* * * FUNCTION: AcpiInstallSciHandler * * PARAMETERS: Address - Address of the handler * Context - Value passed to the handler on each SCI * * RETURN: Status * * DESCRIPTION: Install a handler for a System Control Interrupt. * ******************************************************************************/ ACPI_STATUS AcpiInstallSciHandler ( ACPI_SCI_HANDLER Address, void *Context) { ACPI_SCI_HANDLER_INFO *NewSciHandler; ACPI_SCI_HANDLER_INFO *SciHandler; ACPI_CPU_FLAGS Flags; ACPI_STATUS Status; ACPI_FUNCTION_TRACE (AcpiInstallSciHandler); if (!Address) { return_ACPI_STATUS (AE_BAD_PARAMETER); } /* Allocate and init a handler object */ NewSciHandler = ACPI_ALLOCATE (sizeof (ACPI_SCI_HANDLER_INFO)); if (!NewSciHandler) { return_ACPI_STATUS (AE_NO_MEMORY); } NewSciHandler->Address = Address; NewSciHandler->Context = Context; Status = AcpiUtAcquireMutex (ACPI_MTX_EVENTS); if (ACPI_FAILURE (Status)) { goto Exit; } /* Lock list during installation */ Flags = AcpiOsAcquireLock (AcpiGbl_GpeLock); SciHandler = AcpiGbl_SciHandlerList; /* Ensure handler does not already exist */ while (SciHandler) { if (Address == SciHandler->Address) { Status = AE_ALREADY_EXISTS; goto UnlockAndExit; } SciHandler = SciHandler->Next; } /* Install the new handler into the global list (at head) */ NewSciHandler->Next = AcpiGbl_SciHandlerList; AcpiGbl_SciHandlerList = NewSciHandler; UnlockAndExit: AcpiOsReleaseLock (AcpiGbl_GpeLock, Flags); (void) AcpiUtReleaseMutex (ACPI_MTX_EVENTS); Exit: if (ACPI_FAILURE (Status)) { ACPI_FREE (NewSciHandler); } return_ACPI_STATUS (Status); } ACPI_EXPORT_SYMBOL (AcpiInstallSciHandler) /******************************************************************************* * * FUNCTION: AcpiRemoveSciHandler * * PARAMETERS: Address - Address of the handler * * RETURN: Status * * DESCRIPTION: Remove a handler for a System Control Interrupt. * ******************************************************************************/ ACPI_STATUS AcpiRemoveSciHandler ( ACPI_SCI_HANDLER Address) { ACPI_SCI_HANDLER_INFO *PrevSciHandler; ACPI_SCI_HANDLER_INFO *NextSciHandler; ACPI_CPU_FLAGS Flags; ACPI_STATUS Status; ACPI_FUNCTION_TRACE (AcpiRemoveSciHandler); if (!Address) { return_ACPI_STATUS (AE_BAD_PARAMETER); } Status = AcpiUtAcquireMutex (ACPI_MTX_EVENTS); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } /* Remove the SCI handler with lock */ Flags = AcpiOsAcquireLock (AcpiGbl_GpeLock); PrevSciHandler = NULL; NextSciHandler = AcpiGbl_SciHandlerList; while (NextSciHandler) { if (NextSciHandler->Address == Address) { /* Unlink and free the SCI handler info block */ if (PrevSciHandler) { PrevSciHandler->Next = NextSciHandler->Next; } else { AcpiGbl_SciHandlerList = NextSciHandler->Next; } AcpiOsReleaseLock (AcpiGbl_GpeLock, Flags); ACPI_FREE (NextSciHandler); goto UnlockAndExit; } PrevSciHandler = NextSciHandler; NextSciHandler = NextSciHandler->Next; } AcpiOsReleaseLock (AcpiGbl_GpeLock, Flags); Status = AE_NOT_EXIST; UnlockAndExit: (void) AcpiUtReleaseMutex (ACPI_MTX_EVENTS); return_ACPI_STATUS (Status); } ACPI_EXPORT_SYMBOL (AcpiRemoveSciHandler) /******************************************************************************* * * FUNCTION: AcpiInstallGlobalEventHandler * * PARAMETERS: Handler - Pointer to the global event handler function * Context - Value passed to the handler on each event * * RETURN: Status * * DESCRIPTION: Saves the pointer to the handler function. The global handler * is invoked upon each incoming GPE and Fixed Event. It is * invoked at interrupt level at the time of the event dispatch. * Can be used to update event counters, etc. * ******************************************************************************/ ACPI_STATUS AcpiInstallGlobalEventHandler ( ACPI_GBL_EVENT_HANDLER Handler, void *Context) { ACPI_STATUS Status; ACPI_FUNCTION_TRACE (AcpiInstallGlobalEventHandler); /* Parameter validation */ if (!Handler) { return_ACPI_STATUS (AE_BAD_PARAMETER); } Status = AcpiUtAcquireMutex (ACPI_MTX_EVENTS); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } /* Don't allow two handlers. */ if (AcpiGbl_GlobalEventHandler) { Status = AE_ALREADY_EXISTS; goto Cleanup; } AcpiGbl_GlobalEventHandler = Handler; AcpiGbl_GlobalEventHandlerContext = Context; Cleanup: (void) AcpiUtReleaseMutex (ACPI_MTX_EVENTS); return_ACPI_STATUS (Status); } ACPI_EXPORT_SYMBOL (AcpiInstallGlobalEventHandler) /******************************************************************************* * * FUNCTION: AcpiInstallFixedEventHandler * * PARAMETERS: Event - Event type to enable. * Handler - Pointer to the handler function for the * event * Context - Value passed to the handler on each GPE * * RETURN: Status * * DESCRIPTION: Saves the pointer to the handler function and then enables the * event. * ******************************************************************************/ ACPI_STATUS AcpiInstallFixedEventHandler ( UINT32 Event, ACPI_EVENT_HANDLER Handler, void *Context) { ACPI_STATUS Status; ACPI_FUNCTION_TRACE (AcpiInstallFixedEventHandler); /* Parameter validation */ if (Event > ACPI_EVENT_MAX) { return_ACPI_STATUS (AE_BAD_PARAMETER); } Status = AcpiUtAcquireMutex (ACPI_MTX_EVENTS); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } /* Do not allow multiple handlers */ if (AcpiGbl_FixedEventHandlers[Event].Handler) { Status = AE_ALREADY_EXISTS; goto Cleanup; } /* Install the handler before enabling the event */ AcpiGbl_FixedEventHandlers[Event].Handler = Handler; AcpiGbl_FixedEventHandlers[Event].Context = Context; Status = AcpiEnableEvent (Event, 0); if (ACPI_FAILURE (Status)) { ACPI_WARNING ((AE_INFO, "Could not enable fixed event - %s (%u)", AcpiUtGetEventName (Event), Event)); /* Remove the handler */ AcpiGbl_FixedEventHandlers[Event].Handler = NULL; AcpiGbl_FixedEventHandlers[Event].Context = NULL; } else { ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Enabled fixed event %s (%X), Handler=%p\n", AcpiUtGetEventName (Event), Event, Handler)); } Cleanup: (void) AcpiUtReleaseMutex (ACPI_MTX_EVENTS); return_ACPI_STATUS (Status); } ACPI_EXPORT_SYMBOL (AcpiInstallFixedEventHandler) /******************************************************************************* * * FUNCTION: AcpiRemoveFixedEventHandler * * PARAMETERS: Event - Event type to disable. * Handler - Address of the handler * * RETURN: Status * * DESCRIPTION: Disables the event and unregisters the event handler. * ******************************************************************************/ ACPI_STATUS AcpiRemoveFixedEventHandler ( UINT32 Event, ACPI_EVENT_HANDLER Handler) { ACPI_STATUS Status = AE_OK; ACPI_FUNCTION_TRACE (AcpiRemoveFixedEventHandler); /* Parameter validation */ if (Event > ACPI_EVENT_MAX) { return_ACPI_STATUS (AE_BAD_PARAMETER); } Status = AcpiUtAcquireMutex (ACPI_MTX_EVENTS); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } /* Disable the event before removing the handler */ Status = AcpiDisableEvent (Event, 0); /* Always Remove the handler */ AcpiGbl_FixedEventHandlers[Event].Handler = NULL; AcpiGbl_FixedEventHandlers[Event].Context = NULL; if (ACPI_FAILURE (Status)) { ACPI_WARNING ((AE_INFO, "Could not disable fixed event - %s (%u)", AcpiUtGetEventName (Event), Event)); } else { ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Disabled fixed event - %s (%X)\n", AcpiUtGetEventName (Event), Event)); } (void) AcpiUtReleaseMutex (ACPI_MTX_EVENTS); return_ACPI_STATUS (Status); } ACPI_EXPORT_SYMBOL (AcpiRemoveFixedEventHandler) /******************************************************************************* * * FUNCTION: AcpiInstallGpeHandler * * PARAMETERS: GpeDevice - Namespace node for the GPE (NULL for FADT * defined GPEs) * GpeNumber - The GPE number within the GPE block * Type - Whether this GPE should be treated as an * edge- or level-triggered interrupt. * Address - Address of the handler * Context - Value passed to the handler on each GPE * * RETURN: Status * * DESCRIPTION: Install a handler for a General Purpose Event. * ******************************************************************************/ ACPI_STATUS AcpiInstallGpeHandler ( ACPI_HANDLE GpeDevice, UINT32 GpeNumber, UINT32 Type, ACPI_GPE_HANDLER Address, void *Context) { ACPI_GPE_EVENT_INFO *GpeEventInfo; ACPI_GPE_HANDLER_INFO *Handler; ACPI_STATUS Status; ACPI_CPU_FLAGS Flags; ACPI_FUNCTION_TRACE (AcpiInstallGpeHandler); /* Parameter validation */ if ((!Address) || (Type & ~ACPI_GPE_XRUPT_TYPE_MASK)) { return_ACPI_STATUS (AE_BAD_PARAMETER); } Status = AcpiUtAcquireMutex (ACPI_MTX_EVENTS); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } /* Allocate and init handler object (before lock) */ Handler = ACPI_ALLOCATE_ZEROED (sizeof (ACPI_GPE_HANDLER_INFO)); if (!Handler) { Status = AE_NO_MEMORY; goto UnlockAndExit; } Flags = AcpiOsAcquireLock (AcpiGbl_GpeLock); /* Ensure that we have a valid GPE number */ GpeEventInfo = AcpiEvGetGpeEventInfo (GpeDevice, GpeNumber); if (!GpeEventInfo) { Status = AE_BAD_PARAMETER; goto FreeAndExit; } /* Make sure that there isn't a handler there already */ if ((GpeEventInfo->Flags & ACPI_GPE_DISPATCH_MASK) == ACPI_GPE_DISPATCH_HANDLER) { Status = AE_ALREADY_EXISTS; goto FreeAndExit; } Handler->Address = Address; Handler->Context = Context; Handler->MethodNode = GpeEventInfo->Dispatch.MethodNode; Handler->OriginalFlags = (UINT8) (GpeEventInfo->Flags & (ACPI_GPE_XRUPT_TYPE_MASK | ACPI_GPE_DISPATCH_MASK)); /* * If the GPE is associated with a method, it may have been enabled * automatically during initialization, in which case it has to be * disabled now to avoid spurious execution of the handler. */ if (((Handler->OriginalFlags & ACPI_GPE_DISPATCH_METHOD) || (Handler->OriginalFlags & ACPI_GPE_DISPATCH_NOTIFY)) && GpeEventInfo->RuntimeCount) { Handler->OriginallyEnabled = TRUE; (void) AcpiEvRemoveGpeReference (GpeEventInfo); /* Sanity check of original type against new type */ if (Type != (UINT32) (GpeEventInfo->Flags & ACPI_GPE_XRUPT_TYPE_MASK)) { ACPI_WARNING ((AE_INFO, "GPE type mismatch (level/edge)")); } } /* Install the handler */ GpeEventInfo->Dispatch.Handler = Handler; /* Setup up dispatch flags to indicate handler (vs. method/notify) */ GpeEventInfo->Flags &= ~(ACPI_GPE_XRUPT_TYPE_MASK | ACPI_GPE_DISPATCH_MASK); GpeEventInfo->Flags |= (UINT8) (Type | ACPI_GPE_DISPATCH_HANDLER); AcpiOsReleaseLock (AcpiGbl_GpeLock, Flags); UnlockAndExit: (void) AcpiUtReleaseMutex (ACPI_MTX_EVENTS); return_ACPI_STATUS (Status); FreeAndExit: AcpiOsReleaseLock (AcpiGbl_GpeLock, Flags); ACPI_FREE (Handler); goto UnlockAndExit; } ACPI_EXPORT_SYMBOL (AcpiInstallGpeHandler) /******************************************************************************* * * FUNCTION: AcpiRemoveGpeHandler * * PARAMETERS: GpeDevice - Namespace node for the GPE (NULL for FADT * defined GPEs) * GpeNumber - The event to remove a handler * Address - Address of the handler * * RETURN: Status * * DESCRIPTION: Remove a handler for a General Purpose AcpiEvent. * ******************************************************************************/ ACPI_STATUS AcpiRemoveGpeHandler ( ACPI_HANDLE GpeDevice, UINT32 GpeNumber, ACPI_GPE_HANDLER Address) { ACPI_GPE_EVENT_INFO *GpeEventInfo; ACPI_GPE_HANDLER_INFO *Handler; ACPI_STATUS Status; ACPI_CPU_FLAGS Flags; ACPI_FUNCTION_TRACE (AcpiRemoveGpeHandler); /* Parameter validation */ if (!Address) { return_ACPI_STATUS (AE_BAD_PARAMETER); } Status = AcpiUtAcquireMutex (ACPI_MTX_EVENTS); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } Flags = AcpiOsAcquireLock (AcpiGbl_GpeLock); /* Ensure that we have a valid GPE number */ GpeEventInfo = AcpiEvGetGpeEventInfo (GpeDevice, GpeNumber); if (!GpeEventInfo) { Status = AE_BAD_PARAMETER; goto UnlockAndExit; } /* Make sure that a handler is indeed installed */ if ((GpeEventInfo->Flags & ACPI_GPE_DISPATCH_MASK) != ACPI_GPE_DISPATCH_HANDLER) { Status = AE_NOT_EXIST; goto UnlockAndExit; } /* Make sure that the installed handler is the same */ if (GpeEventInfo->Dispatch.Handler->Address != Address) { Status = AE_BAD_PARAMETER; goto UnlockAndExit; } /* Remove the handler */ Handler = GpeEventInfo->Dispatch.Handler; /* Restore Method node (if any), set dispatch flags */ GpeEventInfo->Dispatch.MethodNode = Handler->MethodNode; GpeEventInfo->Flags &= ~(ACPI_GPE_XRUPT_TYPE_MASK | ACPI_GPE_DISPATCH_MASK); GpeEventInfo->Flags |= Handler->OriginalFlags; /* * If the GPE was previously associated with a method and it was * enabled, it should be enabled at this point to restore the * post-initialization configuration. */ if ((Handler->OriginalFlags & ACPI_GPE_DISPATCH_METHOD) && Handler->OriginallyEnabled) { (void) AcpiEvAddGpeReference (GpeEventInfo); } AcpiOsReleaseLock (AcpiGbl_GpeLock, Flags); (void) AcpiUtReleaseMutex (ACPI_MTX_EVENTS); /* Make sure all deferred GPE tasks are completed */ AcpiOsWaitEventsComplete (); /* Now we can free the handler object */ ACPI_FREE (Handler); return_ACPI_STATUS (Status); UnlockAndExit: AcpiOsReleaseLock (AcpiGbl_GpeLock, Flags); (void) AcpiUtReleaseMutex (ACPI_MTX_EVENTS); return_ACPI_STATUS (Status); } ACPI_EXPORT_SYMBOL (AcpiRemoveGpeHandler) /******************************************************************************* * * FUNCTION: AcpiAcquireGlobalLock * * PARAMETERS: Timeout - How long the caller is willing to wait * Handle - Where the handle to the lock is returned * (if acquired) * * RETURN: Status * * DESCRIPTION: Acquire the ACPI Global Lock * * Note: Allows callers with the same thread ID to acquire the global lock * multiple times. In other words, externally, the behavior of the global lock * is identical to an AML mutex. On the first acquire, a new handle is * returned. On any subsequent calls to acquire by the same thread, the same * handle is returned. * ******************************************************************************/ ACPI_STATUS AcpiAcquireGlobalLock ( UINT16 Timeout, UINT32 *Handle) { ACPI_STATUS Status; if (!Handle) { return (AE_BAD_PARAMETER); } /* Must lock interpreter to prevent race conditions */ AcpiExEnterInterpreter (); Status = AcpiExAcquireMutexObject (Timeout, AcpiGbl_GlobalLockMutex, AcpiOsGetThreadId ()); if (ACPI_SUCCESS (Status)) { /* Return the global lock handle (updated in AcpiEvAcquireGlobalLock) */ *Handle = AcpiGbl_GlobalLockHandle; } AcpiExExitInterpreter (); return (Status); } ACPI_EXPORT_SYMBOL (AcpiAcquireGlobalLock) /******************************************************************************* * * FUNCTION: AcpiReleaseGlobalLock * * PARAMETERS: Handle - Returned from AcpiAcquireGlobalLock * * RETURN: Status * * DESCRIPTION: Release the ACPI Global Lock. The handle must be valid. * ******************************************************************************/ ACPI_STATUS AcpiReleaseGlobalLock ( UINT32 Handle) { ACPI_STATUS Status; if (!Handle || (Handle != AcpiGbl_GlobalLockHandle)) { return (AE_NOT_ACQUIRED); } Status = AcpiExReleaseMutexObject (AcpiGbl_GlobalLockMutex); return (Status); } ACPI_EXPORT_SYMBOL (AcpiReleaseGlobalLock) #endif /* !ACPI_REDUCED_HARDWARE */ src/acpica/source/components/events/evxfevnt.c000066400000000000000000000340441231470457100221000ustar00rootroot00000000000000/****************************************************************************** * * Module Name: evxfevnt - External Interfaces, ACPI event disable/enable * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #define __EVXFEVNT_C__ #define EXPORT_ACPI_INTERFACES #include "acpi.h" #include "accommon.h" #include "actables.h" #define _COMPONENT ACPI_EVENTS ACPI_MODULE_NAME ("evxfevnt") #if (!ACPI_REDUCED_HARDWARE) /* Entire module */ /******************************************************************************* * * FUNCTION: AcpiEnable * * PARAMETERS: None * * RETURN: Status * * DESCRIPTION: Transfers the system into ACPI mode. * ******************************************************************************/ ACPI_STATUS AcpiEnable ( void) { ACPI_STATUS Status = AE_OK; ACPI_FUNCTION_TRACE (AcpiEnable); /* ACPI tables must be present */ if (!AcpiTbTablesLoaded ()) { return_ACPI_STATUS (AE_NO_ACPI_TABLES); } /* If the Hardware Reduced flag is set, machine is always in acpi mode */ if (AcpiGbl_ReducedHardware) { return_ACPI_STATUS (AE_OK); } /* Check current mode */ if (AcpiHwGetMode() == ACPI_SYS_MODE_ACPI) { ACPI_DEBUG_PRINT ((ACPI_DB_INIT, "System is already in ACPI mode\n")); } else { /* Transition to ACPI mode */ Status = AcpiHwSetMode (ACPI_SYS_MODE_ACPI); if (ACPI_FAILURE (Status)) { ACPI_ERROR ((AE_INFO, "Could not transition to ACPI mode")); return_ACPI_STATUS (Status); } ACPI_DEBUG_PRINT ((ACPI_DB_INIT, "Transition to ACPI mode successful\n")); } return_ACPI_STATUS (Status); } ACPI_EXPORT_SYMBOL (AcpiEnable) /******************************************************************************* * * FUNCTION: AcpiDisable * * PARAMETERS: None * * RETURN: Status * * DESCRIPTION: Transfers the system into LEGACY (non-ACPI) mode. * ******************************************************************************/ ACPI_STATUS AcpiDisable ( void) { ACPI_STATUS Status = AE_OK; ACPI_FUNCTION_TRACE (AcpiDisable); /* If the Hardware Reduced flag is set, machine is always in acpi mode */ if (AcpiGbl_ReducedHardware) { return_ACPI_STATUS (AE_OK); } if (AcpiHwGetMode() == ACPI_SYS_MODE_LEGACY) { ACPI_DEBUG_PRINT ((ACPI_DB_INIT, "System is already in legacy (non-ACPI) mode\n")); } else { /* Transition to LEGACY mode */ Status = AcpiHwSetMode (ACPI_SYS_MODE_LEGACY); if (ACPI_FAILURE (Status)) { ACPI_ERROR ((AE_INFO, "Could not exit ACPI mode to legacy mode")); return_ACPI_STATUS (Status); } ACPI_DEBUG_PRINT ((ACPI_DB_INIT, "ACPI mode disabled\n")); } return_ACPI_STATUS (Status); } ACPI_EXPORT_SYMBOL (AcpiDisable) /******************************************************************************* * * FUNCTION: AcpiEnableEvent * * PARAMETERS: Event - The fixed eventto be enabled * Flags - Reserved * * RETURN: Status * * DESCRIPTION: Enable an ACPI event (fixed) * ******************************************************************************/ ACPI_STATUS AcpiEnableEvent ( UINT32 Event, UINT32 Flags) { ACPI_STATUS Status = AE_OK; UINT32 Value; ACPI_FUNCTION_TRACE (AcpiEnableEvent); /* Decode the Fixed Event */ if (Event > ACPI_EVENT_MAX) { return_ACPI_STATUS (AE_BAD_PARAMETER); } /* * Enable the requested fixed event (by writing a one to the enable * register bit) */ Status = AcpiWriteBitRegister ( AcpiGbl_FixedEventInfo[Event].EnableRegisterId, ACPI_ENABLE_EVENT); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } /* Make sure that the hardware responded */ Status = AcpiReadBitRegister ( AcpiGbl_FixedEventInfo[Event].EnableRegisterId, &Value); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } if (Value != 1) { ACPI_ERROR ((AE_INFO, "Could not enable %s event", AcpiUtGetEventName (Event))); return_ACPI_STATUS (AE_NO_HARDWARE_RESPONSE); } return_ACPI_STATUS (Status); } ACPI_EXPORT_SYMBOL (AcpiEnableEvent) /******************************************************************************* * * FUNCTION: AcpiDisableEvent * * PARAMETERS: Event - The fixed event to be disabled * Flags - Reserved * * RETURN: Status * * DESCRIPTION: Disable an ACPI event (fixed) * ******************************************************************************/ ACPI_STATUS AcpiDisableEvent ( UINT32 Event, UINT32 Flags) { ACPI_STATUS Status = AE_OK; UINT32 Value; ACPI_FUNCTION_TRACE (AcpiDisableEvent); /* Decode the Fixed Event */ if (Event > ACPI_EVENT_MAX) { return_ACPI_STATUS (AE_BAD_PARAMETER); } /* * Disable the requested fixed event (by writing a zero to the enable * register bit) */ Status = AcpiWriteBitRegister ( AcpiGbl_FixedEventInfo[Event].EnableRegisterId, ACPI_DISABLE_EVENT); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } Status = AcpiReadBitRegister ( AcpiGbl_FixedEventInfo[Event].EnableRegisterId, &Value); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } if (Value != 0) { ACPI_ERROR ((AE_INFO, "Could not disable %s events", AcpiUtGetEventName (Event))); return_ACPI_STATUS (AE_NO_HARDWARE_RESPONSE); } return_ACPI_STATUS (Status); } ACPI_EXPORT_SYMBOL (AcpiDisableEvent) /******************************************************************************* * * FUNCTION: AcpiClearEvent * * PARAMETERS: Event - The fixed event to be cleared * * RETURN: Status * * DESCRIPTION: Clear an ACPI event (fixed) * ******************************************************************************/ ACPI_STATUS AcpiClearEvent ( UINT32 Event) { ACPI_STATUS Status = AE_OK; ACPI_FUNCTION_TRACE (AcpiClearEvent); /* Decode the Fixed Event */ if (Event > ACPI_EVENT_MAX) { return_ACPI_STATUS (AE_BAD_PARAMETER); } /* * Clear the requested fixed event (By writing a one to the status * register bit) */ Status = AcpiWriteBitRegister ( AcpiGbl_FixedEventInfo[Event].StatusRegisterId, ACPI_CLEAR_STATUS); return_ACPI_STATUS (Status); } ACPI_EXPORT_SYMBOL (AcpiClearEvent) /******************************************************************************* * * FUNCTION: AcpiGetEventStatus * * PARAMETERS: Event - The fixed event * EventStatus - Where the current status of the event will * be returned * * RETURN: Status * * DESCRIPTION: Obtains and returns the current status of the event * ******************************************************************************/ ACPI_STATUS AcpiGetEventStatus ( UINT32 Event, ACPI_EVENT_STATUS *EventStatus) { ACPI_STATUS Status = AE_OK; ACPI_FUNCTION_TRACE (AcpiGetEventStatus); if (!EventStatus) { return_ACPI_STATUS (AE_BAD_PARAMETER); } /* Decode the Fixed Event */ if (Event > ACPI_EVENT_MAX) { return_ACPI_STATUS (AE_BAD_PARAMETER); } /* Get the status of the requested fixed event */ Status = AcpiReadBitRegister ( AcpiGbl_FixedEventInfo[Event].StatusRegisterId, EventStatus); return_ACPI_STATUS (Status); } ACPI_EXPORT_SYMBOL (AcpiGetEventStatus) #endif /* !ACPI_REDUCED_HARDWARE */ src/acpica/source/components/events/evxfgpe.c000066400000000000000000000737741231470457100217140ustar00rootroot00000000000000/****************************************************************************** * * Module Name: evxfgpe - External Interfaces for General Purpose Events (GPEs) * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #define __EVXFGPE_C__ #define EXPORT_ACPI_INTERFACES #include "acpi.h" #include "accommon.h" #include "acevents.h" #include "acnamesp.h" #define _COMPONENT ACPI_EVENTS ACPI_MODULE_NAME ("evxfgpe") #if (!ACPI_REDUCED_HARDWARE) /* Entire module */ /******************************************************************************* * * FUNCTION: AcpiUpdateAllGpes * * PARAMETERS: None * * RETURN: Status * * DESCRIPTION: Complete GPE initialization and enable all GPEs that have * associated _Lxx or _Exx methods and are not pointed to by any * device _PRW methods (this indicates that these GPEs are * generally intended for system or device wakeup. Such GPEs * have to be enabled directly when the devices whose _PRW * methods point to them are set up for wakeup signaling.) * * NOTE: Should be called after any GPEs are added to the system. Primarily, * after the system _PRW methods have been run, but also after a GPE Block * Device has been added or if any new GPE methods have been added via a * dynamic table load. * ******************************************************************************/ ACPI_STATUS AcpiUpdateAllGpes ( void) { ACPI_STATUS Status; ACPI_FUNCTION_TRACE (AcpiUpdateAllGpes); Status = AcpiUtAcquireMutex (ACPI_MTX_EVENTS); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } if (AcpiGbl_AllGpesInitialized) { goto UnlockAndExit; } Status = AcpiEvWalkGpeList (AcpiEvInitializeGpeBlock, NULL); if (ACPI_SUCCESS (Status)) { AcpiGbl_AllGpesInitialized = TRUE; } UnlockAndExit: (void) AcpiUtReleaseMutex (ACPI_MTX_EVENTS); return_ACPI_STATUS (Status); } ACPI_EXPORT_SYMBOL (AcpiUpdateAllGpes) /******************************************************************************* * * FUNCTION: AcpiEnableGpe * * PARAMETERS: GpeDevice - Parent GPE Device. NULL for GPE0/GPE1 * GpeNumber - GPE level within the GPE block * * RETURN: Status * * DESCRIPTION: Add a reference to a GPE. On the first reference, the GPE is * hardware-enabled. * ******************************************************************************/ ACPI_STATUS AcpiEnableGpe ( ACPI_HANDLE GpeDevice, UINT32 GpeNumber) { ACPI_STATUS Status = AE_BAD_PARAMETER; ACPI_GPE_EVENT_INFO *GpeEventInfo; ACPI_CPU_FLAGS Flags; ACPI_FUNCTION_TRACE (AcpiEnableGpe); Flags = AcpiOsAcquireLock (AcpiGbl_GpeLock); /* Ensure that we have a valid GPE number */ GpeEventInfo = AcpiEvGetGpeEventInfo (GpeDevice, GpeNumber); if (GpeEventInfo) { Status = AcpiEvAddGpeReference (GpeEventInfo); } AcpiOsReleaseLock (AcpiGbl_GpeLock, Flags); return_ACPI_STATUS (Status); } ACPI_EXPORT_SYMBOL (AcpiEnableGpe) /******************************************************************************* * * FUNCTION: AcpiDisableGpe * * PARAMETERS: GpeDevice - Parent GPE Device. NULL for GPE0/GPE1 * GpeNumber - GPE level within the GPE block * * RETURN: Status * * DESCRIPTION: Remove a reference to a GPE. When the last reference is * removed, only then is the GPE disabled (for runtime GPEs), or * the GPE mask bit disabled (for wake GPEs) * ******************************************************************************/ ACPI_STATUS AcpiDisableGpe ( ACPI_HANDLE GpeDevice, UINT32 GpeNumber) { ACPI_STATUS Status = AE_BAD_PARAMETER; ACPI_GPE_EVENT_INFO *GpeEventInfo; ACPI_CPU_FLAGS Flags; ACPI_FUNCTION_TRACE (AcpiDisableGpe); Flags = AcpiOsAcquireLock (AcpiGbl_GpeLock); /* Ensure that we have a valid GPE number */ GpeEventInfo = AcpiEvGetGpeEventInfo (GpeDevice, GpeNumber); if (GpeEventInfo) { Status = AcpiEvRemoveGpeReference (GpeEventInfo); } AcpiOsReleaseLock (AcpiGbl_GpeLock, Flags); return_ACPI_STATUS (Status); } ACPI_EXPORT_SYMBOL (AcpiDisableGpe) /******************************************************************************* * * FUNCTION: AcpiSetGpe * * PARAMETERS: GpeDevice - Parent GPE Device. NULL for GPE0/GPE1 * GpeNumber - GPE level within the GPE block * Action - ACPI_GPE_ENABLE or ACPI_GPE_DISABLE * * RETURN: Status * * DESCRIPTION: Enable or disable an individual GPE. This function bypasses * the reference count mechanism used in the AcpiEnableGpe and * AcpiDisableGpe interfaces -- and should be used with care. * * Note: Typically used to disable a runtime GPE for short period of time, * then re-enable it, without disturbing the existing reference counts. This * is useful, for example, in the Embedded Controller (EC) driver. * ******************************************************************************/ ACPI_STATUS AcpiSetGpe ( ACPI_HANDLE GpeDevice, UINT32 GpeNumber, UINT8 Action) { ACPI_GPE_EVENT_INFO *GpeEventInfo; ACPI_STATUS Status; ACPI_CPU_FLAGS Flags; ACPI_FUNCTION_TRACE (AcpiSetGpe); Flags = AcpiOsAcquireLock (AcpiGbl_GpeLock); /* Ensure that we have a valid GPE number */ GpeEventInfo = AcpiEvGetGpeEventInfo (GpeDevice, GpeNumber); if (!GpeEventInfo) { Status = AE_BAD_PARAMETER; goto UnlockAndExit; } /* Perform the action */ switch (Action) { case ACPI_GPE_ENABLE: Status = AcpiEvEnableGpe (GpeEventInfo); break; case ACPI_GPE_DISABLE: Status = AcpiHwLowSetGpe (GpeEventInfo, ACPI_GPE_DISABLE); break; default: Status = AE_BAD_PARAMETER; break; } UnlockAndExit: AcpiOsReleaseLock (AcpiGbl_GpeLock, Flags); return_ACPI_STATUS (Status); } ACPI_EXPORT_SYMBOL (AcpiSetGpe) /******************************************************************************* * * FUNCTION: AcpiSetupGpeForWake * * PARAMETERS: WakeDevice - Device associated with the GPE (via _PRW) * GpeDevice - Parent GPE Device. NULL for GPE0/GPE1 * GpeNumber - GPE level within the GPE block * * RETURN: Status * * DESCRIPTION: Mark a GPE as having the ability to wake the system. This * interface is intended to be used as the host executes the * _PRW methods (Power Resources for Wake) in the system tables. * Each _PRW appears under a Device Object (The WakeDevice), and * contains the info for the wake GPE associated with the * WakeDevice. * ******************************************************************************/ ACPI_STATUS AcpiSetupGpeForWake ( ACPI_HANDLE WakeDevice, ACPI_HANDLE GpeDevice, UINT32 GpeNumber) { ACPI_STATUS Status; ACPI_GPE_EVENT_INFO *GpeEventInfo; ACPI_NAMESPACE_NODE *DeviceNode; ACPI_GPE_NOTIFY_INFO *Notify; ACPI_GPE_NOTIFY_INFO *NewNotify; ACPI_CPU_FLAGS Flags; ACPI_FUNCTION_TRACE (AcpiSetupGpeForWake); /* Parameter Validation */ if (!WakeDevice) { /* * By forcing WakeDevice to be valid, we automatically enable the * implicit notify feature on all hosts. */ return_ACPI_STATUS (AE_BAD_PARAMETER); } /* Handle root object case */ if (WakeDevice == ACPI_ROOT_OBJECT) { DeviceNode = AcpiGbl_RootNode; } else { DeviceNode = ACPI_CAST_PTR (ACPI_NAMESPACE_NODE, WakeDevice); } /* Validate WakeDevice is of type Device */ if (DeviceNode->Type != ACPI_TYPE_DEVICE) { return_ACPI_STATUS (AE_BAD_PARAMETER); } /* * Allocate a new notify object up front, in case it is needed. * Memory allocation while holding a spinlock is a big no-no * on some hosts. */ NewNotify = ACPI_ALLOCATE_ZEROED (sizeof (ACPI_GPE_NOTIFY_INFO)); if (!NewNotify) { return_ACPI_STATUS (AE_NO_MEMORY); } Flags = AcpiOsAcquireLock (AcpiGbl_GpeLock); /* Ensure that we have a valid GPE number */ GpeEventInfo = AcpiEvGetGpeEventInfo (GpeDevice, GpeNumber); if (!GpeEventInfo) { Status = AE_BAD_PARAMETER; goto UnlockAndExit; } /* * If there is no method or handler for this GPE, then the * WakeDevice will be notified whenever this GPE fires. This is * known as an "implicit notify". Note: The GPE is assumed to be * level-triggered (for windows compatibility). */ if ((GpeEventInfo->Flags & ACPI_GPE_DISPATCH_MASK) == ACPI_GPE_DISPATCH_NONE) { /* * This is the first device for implicit notify on this GPE. * Just set the flags here, and enter the NOTIFY block below. */ GpeEventInfo->Flags = (ACPI_GPE_DISPATCH_NOTIFY | ACPI_GPE_LEVEL_TRIGGERED); } /* * If we already have an implicit notify on this GPE, add * this device to the notify list. */ if ((GpeEventInfo->Flags & ACPI_GPE_DISPATCH_MASK) == ACPI_GPE_DISPATCH_NOTIFY) { /* Ensure that the device is not already in the list */ Notify = GpeEventInfo->Dispatch.NotifyList; while (Notify) { if (Notify->DeviceNode == DeviceNode) { Status = AE_ALREADY_EXISTS; goto UnlockAndExit; } Notify = Notify->Next; } /* Add this device to the notify list for this GPE */ NewNotify->DeviceNode = DeviceNode; NewNotify->Next = GpeEventInfo->Dispatch.NotifyList; GpeEventInfo->Dispatch.NotifyList = NewNotify; NewNotify = NULL; } /* Mark the GPE as a possible wake event */ GpeEventInfo->Flags |= ACPI_GPE_CAN_WAKE; Status = AE_OK; UnlockAndExit: AcpiOsReleaseLock (AcpiGbl_GpeLock, Flags); /* Delete the notify object if it was not used above */ if (NewNotify) { ACPI_FREE (NewNotify); } return_ACPI_STATUS (Status); } ACPI_EXPORT_SYMBOL (AcpiSetupGpeForWake) /******************************************************************************* * * FUNCTION: AcpiSetGpeWakeMask * * PARAMETERS: GpeDevice - Parent GPE Device. NULL for GPE0/GPE1 * GpeNumber - GPE level within the GPE block * Action - Enable or Disable * * RETURN: Status * * DESCRIPTION: Set or clear the GPE's wakeup enable mask bit. The GPE must * already be marked as a WAKE GPE. * ******************************************************************************/ ACPI_STATUS AcpiSetGpeWakeMask ( ACPI_HANDLE GpeDevice, UINT32 GpeNumber, UINT8 Action) { ACPI_STATUS Status = AE_OK; ACPI_GPE_EVENT_INFO *GpeEventInfo; ACPI_GPE_REGISTER_INFO *GpeRegisterInfo; ACPI_CPU_FLAGS Flags; UINT32 RegisterBit; ACPI_FUNCTION_TRACE (AcpiSetGpeWakeMask); Flags = AcpiOsAcquireLock (AcpiGbl_GpeLock); /* * Ensure that we have a valid GPE number and that this GPE is in * fact a wake GPE */ GpeEventInfo = AcpiEvGetGpeEventInfo (GpeDevice, GpeNumber); if (!GpeEventInfo) { Status = AE_BAD_PARAMETER; goto UnlockAndExit; } if (!(GpeEventInfo->Flags & ACPI_GPE_CAN_WAKE)) { Status = AE_TYPE; goto UnlockAndExit; } GpeRegisterInfo = GpeEventInfo->RegisterInfo; if (!GpeRegisterInfo) { Status = AE_NOT_EXIST; goto UnlockAndExit; } RegisterBit = AcpiHwGetGpeRegisterBit (GpeEventInfo); /* Perform the action */ switch (Action) { case ACPI_GPE_ENABLE: ACPI_SET_BIT (GpeRegisterInfo->EnableForWake, (UINT8) RegisterBit); break; case ACPI_GPE_DISABLE: ACPI_CLEAR_BIT (GpeRegisterInfo->EnableForWake, (UINT8) RegisterBit); break; default: ACPI_ERROR ((AE_INFO, "%u, Invalid action", Action)); Status = AE_BAD_PARAMETER; break; } UnlockAndExit: AcpiOsReleaseLock (AcpiGbl_GpeLock, Flags); return_ACPI_STATUS (Status); } ACPI_EXPORT_SYMBOL (AcpiSetGpeWakeMask) /******************************************************************************* * * FUNCTION: AcpiClearGpe * * PARAMETERS: GpeDevice - Parent GPE Device. NULL for GPE0/GPE1 * GpeNumber - GPE level within the GPE block * * RETURN: Status * * DESCRIPTION: Clear an ACPI event (general purpose) * ******************************************************************************/ ACPI_STATUS AcpiClearGpe ( ACPI_HANDLE GpeDevice, UINT32 GpeNumber) { ACPI_STATUS Status = AE_OK; ACPI_GPE_EVENT_INFO *GpeEventInfo; ACPI_CPU_FLAGS Flags; ACPI_FUNCTION_TRACE (AcpiClearGpe); Flags = AcpiOsAcquireLock (AcpiGbl_GpeLock); /* Ensure that we have a valid GPE number */ GpeEventInfo = AcpiEvGetGpeEventInfo (GpeDevice, GpeNumber); if (!GpeEventInfo) { Status = AE_BAD_PARAMETER; goto UnlockAndExit; } Status = AcpiHwClearGpe (GpeEventInfo); UnlockAndExit: AcpiOsReleaseLock (AcpiGbl_GpeLock, Flags); return_ACPI_STATUS (Status); } ACPI_EXPORT_SYMBOL (AcpiClearGpe) /******************************************************************************* * * FUNCTION: AcpiGetGpeStatus * * PARAMETERS: GpeDevice - Parent GPE Device. NULL for GPE0/GPE1 * GpeNumber - GPE level within the GPE block * EventStatus - Where the current status of the event * will be returned * * RETURN: Status * * DESCRIPTION: Get the current status of a GPE (signalled/not_signalled) * ******************************************************************************/ ACPI_STATUS AcpiGetGpeStatus ( ACPI_HANDLE GpeDevice, UINT32 GpeNumber, ACPI_EVENT_STATUS *EventStatus) { ACPI_STATUS Status = AE_OK; ACPI_GPE_EVENT_INFO *GpeEventInfo; ACPI_CPU_FLAGS Flags; ACPI_FUNCTION_TRACE (AcpiGetGpeStatus); Flags = AcpiOsAcquireLock (AcpiGbl_GpeLock); /* Ensure that we have a valid GPE number */ GpeEventInfo = AcpiEvGetGpeEventInfo (GpeDevice, GpeNumber); if (!GpeEventInfo) { Status = AE_BAD_PARAMETER; goto UnlockAndExit; } /* Obtain status on the requested GPE number */ Status = AcpiHwGetGpeStatus (GpeEventInfo, EventStatus); UnlockAndExit: AcpiOsReleaseLock (AcpiGbl_GpeLock, Flags); return_ACPI_STATUS (Status); } ACPI_EXPORT_SYMBOL (AcpiGetGpeStatus) /******************************************************************************* * * FUNCTION: AcpiFinishGpe * * PARAMETERS: GpeDevice - Namespace node for the GPE Block * (NULL for FADT defined GPEs) * GpeNumber - GPE level within the GPE block * * RETURN: Status * * DESCRIPTION: Clear and conditionally reenable a GPE. This completes the GPE * processing. Intended for use by asynchronous host-installed * GPE handlers. The GPE is only reenabled if the EnableForRun bit * is set in the GPE info. * ******************************************************************************/ ACPI_STATUS AcpiFinishGpe ( ACPI_HANDLE GpeDevice, UINT32 GpeNumber) { ACPI_GPE_EVENT_INFO *GpeEventInfo; ACPI_STATUS Status; ACPI_CPU_FLAGS Flags; ACPI_FUNCTION_TRACE (AcpiFinishGpe); Flags = AcpiOsAcquireLock (AcpiGbl_GpeLock); /* Ensure that we have a valid GPE number */ GpeEventInfo = AcpiEvGetGpeEventInfo (GpeDevice, GpeNumber); if (!GpeEventInfo) { Status = AE_BAD_PARAMETER; goto UnlockAndExit; } Status = AcpiEvFinishGpe (GpeEventInfo); UnlockAndExit: AcpiOsReleaseLock (AcpiGbl_GpeLock, Flags); return_ACPI_STATUS (Status); } ACPI_EXPORT_SYMBOL (AcpiFinishGpe) /****************************************************************************** * * FUNCTION: AcpiDisableAllGpes * * PARAMETERS: None * * RETURN: Status * * DESCRIPTION: Disable and clear all GPEs in all GPE blocks * ******************************************************************************/ ACPI_STATUS AcpiDisableAllGpes ( void) { ACPI_STATUS Status; ACPI_FUNCTION_TRACE (AcpiDisableAllGpes); Status = AcpiUtAcquireMutex (ACPI_MTX_EVENTS); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } Status = AcpiHwDisableAllGpes (); (void) AcpiUtReleaseMutex (ACPI_MTX_EVENTS); return_ACPI_STATUS (Status); } ACPI_EXPORT_SYMBOL (AcpiDisableAllGpes) /****************************************************************************** * * FUNCTION: AcpiEnableAllRuntimeGpes * * PARAMETERS: None * * RETURN: Status * * DESCRIPTION: Enable all "runtime" GPEs, in all GPE blocks * ******************************************************************************/ ACPI_STATUS AcpiEnableAllRuntimeGpes ( void) { ACPI_STATUS Status; ACPI_FUNCTION_TRACE (AcpiEnableAllRuntimeGpes); Status = AcpiUtAcquireMutex (ACPI_MTX_EVENTS); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } Status = AcpiHwEnableAllRuntimeGpes (); (void) AcpiUtReleaseMutex (ACPI_MTX_EVENTS); return_ACPI_STATUS (Status); } ACPI_EXPORT_SYMBOL (AcpiEnableAllRuntimeGpes) /******************************************************************************* * * FUNCTION: AcpiInstallGpeBlock * * PARAMETERS: GpeDevice - Handle to the parent GPE Block Device * GpeBlockAddress - Address and SpaceID * RegisterCount - Number of GPE register pairs in the block * InterruptNumber - H/W interrupt for the block * * RETURN: Status * * DESCRIPTION: Create and Install a block of GPE registers. The GPEs are not * enabled here. * ******************************************************************************/ ACPI_STATUS AcpiInstallGpeBlock ( ACPI_HANDLE GpeDevice, ACPI_GENERIC_ADDRESS *GpeBlockAddress, UINT32 RegisterCount, UINT32 InterruptNumber) { ACPI_STATUS Status; ACPI_OPERAND_OBJECT *ObjDesc; ACPI_NAMESPACE_NODE *Node; ACPI_GPE_BLOCK_INFO *GpeBlock; ACPI_FUNCTION_TRACE (AcpiInstallGpeBlock); if ((!GpeDevice) || (!GpeBlockAddress) || (!RegisterCount)) { return_ACPI_STATUS (AE_BAD_PARAMETER); } Status = AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } Node = AcpiNsValidateHandle (GpeDevice); if (!Node) { Status = AE_BAD_PARAMETER; goto UnlockAndExit; } /* Validate the parent device */ if (Node->Type != ACPI_TYPE_DEVICE) { Status = AE_TYPE; goto UnlockAndExit; } if (Node->Object) { Status = AE_ALREADY_EXISTS; goto UnlockAndExit; } /* * For user-installed GPE Block Devices, the GpeBlockBaseNumber * is always zero */ Status = AcpiEvCreateGpeBlock (Node, GpeBlockAddress, RegisterCount, 0, InterruptNumber, &GpeBlock); if (ACPI_FAILURE (Status)) { goto UnlockAndExit; } /* Install block in the DeviceObject attached to the node */ ObjDesc = AcpiNsGetAttachedObject (Node); if (!ObjDesc) { /* * No object, create a new one (Device nodes do not always have * an attached object) */ ObjDesc = AcpiUtCreateInternalObject (ACPI_TYPE_DEVICE); if (!ObjDesc) { Status = AE_NO_MEMORY; goto UnlockAndExit; } Status = AcpiNsAttachObject (Node, ObjDesc, ACPI_TYPE_DEVICE); /* Remove local reference to the object */ AcpiUtRemoveReference (ObjDesc); if (ACPI_FAILURE (Status)) { goto UnlockAndExit; } } /* Now install the GPE block in the DeviceObject */ ObjDesc->Device.GpeBlock = GpeBlock; UnlockAndExit: (void) AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); return_ACPI_STATUS (Status); } ACPI_EXPORT_SYMBOL (AcpiInstallGpeBlock) /******************************************************************************* * * FUNCTION: AcpiRemoveGpeBlock * * PARAMETERS: GpeDevice - Handle to the parent GPE Block Device * * RETURN: Status * * DESCRIPTION: Remove a previously installed block of GPE registers * ******************************************************************************/ ACPI_STATUS AcpiRemoveGpeBlock ( ACPI_HANDLE GpeDevice) { ACPI_OPERAND_OBJECT *ObjDesc; ACPI_STATUS Status; ACPI_NAMESPACE_NODE *Node; ACPI_FUNCTION_TRACE (AcpiRemoveGpeBlock); if (!GpeDevice) { return_ACPI_STATUS (AE_BAD_PARAMETER); } Status = AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } Node = AcpiNsValidateHandle (GpeDevice); if (!Node) { Status = AE_BAD_PARAMETER; goto UnlockAndExit; } /* Validate the parent device */ if (Node->Type != ACPI_TYPE_DEVICE) { Status = AE_TYPE; goto UnlockAndExit; } /* Get the DeviceObject attached to the node */ ObjDesc = AcpiNsGetAttachedObject (Node); if (!ObjDesc || !ObjDesc->Device.GpeBlock) { return_ACPI_STATUS (AE_NULL_OBJECT); } /* Delete the GPE block (but not the DeviceObject) */ Status = AcpiEvDeleteGpeBlock (ObjDesc->Device.GpeBlock); if (ACPI_SUCCESS (Status)) { ObjDesc->Device.GpeBlock = NULL; } UnlockAndExit: (void) AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); return_ACPI_STATUS (Status); } ACPI_EXPORT_SYMBOL (AcpiRemoveGpeBlock) /******************************************************************************* * * FUNCTION: AcpiGetGpeDevice * * PARAMETERS: Index - System GPE index (0-CurrentGpeCount) * GpeDevice - Where the parent GPE Device is returned * * RETURN: Status * * DESCRIPTION: Obtain the GPE device associated with the input index. A NULL * gpe device indicates that the gpe number is contained in one of * the FADT-defined gpe blocks. Otherwise, the GPE block device. * ******************************************************************************/ ACPI_STATUS AcpiGetGpeDevice ( UINT32 Index, ACPI_HANDLE *GpeDevice) { ACPI_GPE_DEVICE_INFO Info; ACPI_STATUS Status; ACPI_FUNCTION_TRACE (AcpiGetGpeDevice); if (!GpeDevice) { return_ACPI_STATUS (AE_BAD_PARAMETER); } if (Index >= AcpiCurrentGpeCount) { return_ACPI_STATUS (AE_NOT_EXIST); } /* Setup and walk the GPE list */ Info.Index = Index; Info.Status = AE_NOT_EXIST; Info.GpeDevice = NULL; Info.NextBlockBaseIndex = 0; Status = AcpiEvWalkGpeList (AcpiEvGetGpeDevice, &Info); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } *GpeDevice = ACPI_CAST_PTR (ACPI_HANDLE, Info.GpeDevice); return_ACPI_STATUS (Info.Status); } ACPI_EXPORT_SYMBOL (AcpiGetGpeDevice) #endif /* !ACPI_REDUCED_HARDWARE */ src/acpica/source/components/events/evxfregn.c000066400000000000000000000337261231470457100220650ustar00rootroot00000000000000/****************************************************************************** * * Module Name: evxfregn - External Interfaces, ACPI Operation Regions and * Address Spaces. * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #define __EVXFREGN_C__ #define EXPORT_ACPI_INTERFACES #include "acpi.h" #include "accommon.h" #include "acnamesp.h" #include "acevents.h" #define _COMPONENT ACPI_EVENTS ACPI_MODULE_NAME ("evxfregn") /******************************************************************************* * * FUNCTION: AcpiInstallAddressSpaceHandler * * PARAMETERS: Device - Handle for the device * SpaceId - The address space ID * Handler - Address of the handler * Setup - Address of the setup function * Context - Value passed to the handler on each access * * RETURN: Status * * DESCRIPTION: Install a handler for all OpRegions of a given SpaceId. * * NOTE: This function should only be called after AcpiEnableSubsystem has * been called. This is because any _REG methods associated with the Space ID * are executed here, and these methods can only be safely executed after * the default handlers have been installed and the hardware has been * initialized (via AcpiEnableSubsystem.) * ******************************************************************************/ ACPI_STATUS AcpiInstallAddressSpaceHandler ( ACPI_HANDLE Device, ACPI_ADR_SPACE_TYPE SpaceId, ACPI_ADR_SPACE_HANDLER Handler, ACPI_ADR_SPACE_SETUP Setup, void *Context) { ACPI_NAMESPACE_NODE *Node; ACPI_STATUS Status; ACPI_FUNCTION_TRACE (AcpiInstallAddressSpaceHandler); /* Parameter validation */ if (!Device) { return_ACPI_STATUS (AE_BAD_PARAMETER); } Status = AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } /* Convert and validate the device handle */ Node = AcpiNsValidateHandle (Device); if (!Node) { Status = AE_BAD_PARAMETER; goto UnlockAndExit; } /* Install the handler for all Regions for this Space ID */ Status = AcpiEvInstallSpaceHandler (Node, SpaceId, Handler, Setup, Context); if (ACPI_FAILURE (Status)) { goto UnlockAndExit; } /* * For the default SpaceIDs, (the IDs for which there are default region handlers * installed) Only execute the _REG methods if the global initialization _REG * methods have already been run (via AcpiInitializeObjects). In other words, * we will defer the execution of the _REG methods for these SpaceIDs until * execution of AcpiInitializeObjects. This is done because we need the handlers * for the default spaces (mem/io/pci/table) to be installed before we can run * any control methods (or _REG methods). There is known BIOS code that depends * on this. * * For all other SpaceIDs, we can safely execute the _REG methods immediately. * This means that for IDs like EmbeddedController, this function should be called * only after AcpiEnableSubsystem has been called. */ switch (SpaceId) { case ACPI_ADR_SPACE_SYSTEM_MEMORY: case ACPI_ADR_SPACE_SYSTEM_IO: case ACPI_ADR_SPACE_PCI_CONFIG: case ACPI_ADR_SPACE_DATA_TABLE: if (!AcpiGbl_RegMethodsExecuted) { /* We will defer execution of the _REG methods for this space */ goto UnlockAndExit; } break; default: break; } /* Run all _REG methods for this address space */ Status = AcpiEvExecuteRegMethods (Node, SpaceId); UnlockAndExit: (void) AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); return_ACPI_STATUS (Status); } ACPI_EXPORT_SYMBOL (AcpiInstallAddressSpaceHandler) /******************************************************************************* * * FUNCTION: AcpiRemoveAddressSpaceHandler * * PARAMETERS: Device - Handle for the device * SpaceId - The address space ID * Handler - Address of the handler * * RETURN: Status * * DESCRIPTION: Remove a previously installed handler. * ******************************************************************************/ ACPI_STATUS AcpiRemoveAddressSpaceHandler ( ACPI_HANDLE Device, ACPI_ADR_SPACE_TYPE SpaceId, ACPI_ADR_SPACE_HANDLER Handler) { ACPI_OPERAND_OBJECT *ObjDesc; ACPI_OPERAND_OBJECT *HandlerObj; ACPI_OPERAND_OBJECT *RegionObj; ACPI_OPERAND_OBJECT **LastObjPtr; ACPI_NAMESPACE_NODE *Node; ACPI_STATUS Status; ACPI_FUNCTION_TRACE (AcpiRemoveAddressSpaceHandler); /* Parameter validation */ if (!Device) { return_ACPI_STATUS (AE_BAD_PARAMETER); } Status = AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } /* Convert and validate the device handle */ Node = AcpiNsValidateHandle (Device); if (!Node || ((Node->Type != ACPI_TYPE_DEVICE) && (Node->Type != ACPI_TYPE_PROCESSOR) && (Node->Type != ACPI_TYPE_THERMAL) && (Node != AcpiGbl_RootNode))) { Status = AE_BAD_PARAMETER; goto UnlockAndExit; } /* Make sure the internal object exists */ ObjDesc = AcpiNsGetAttachedObject (Node); if (!ObjDesc) { Status = AE_NOT_EXIST; goto UnlockAndExit; } /* Find the address handler the user requested */ HandlerObj = ObjDesc->Device.Handler; LastObjPtr = &ObjDesc->Device.Handler; while (HandlerObj) { /* We have a handler, see if user requested this one */ if (HandlerObj->AddressSpace.SpaceId == SpaceId) { /* Handler must be the same as the installed handler */ if (HandlerObj->AddressSpace.Handler != Handler) { Status = AE_BAD_PARAMETER; goto UnlockAndExit; } /* Matched SpaceId, first dereference this in the Regions */ ACPI_DEBUG_PRINT ((ACPI_DB_OPREGION, "Removing address handler %p(%p) for region %s " "on Device %p(%p)\n", HandlerObj, Handler, AcpiUtGetRegionName (SpaceId), Node, ObjDesc)); RegionObj = HandlerObj->AddressSpace.RegionList; /* Walk the handler's region list */ while (RegionObj) { /* * First disassociate the handler from the region. * * NOTE: this doesn't mean that the region goes away * The region is just inaccessible as indicated to * the _REG method */ AcpiEvDetachRegion (RegionObj, TRUE); /* * Walk the list: Just grab the head because the * DetachRegion removed the previous head. */ RegionObj = HandlerObj->AddressSpace.RegionList; } /* Remove this Handler object from the list */ *LastObjPtr = HandlerObj->AddressSpace.Next; /* Now we can delete the handler object */ AcpiUtRemoveReference (HandlerObj); goto UnlockAndExit; } /* Walk the linked list of handlers */ LastObjPtr = &HandlerObj->AddressSpace.Next; HandlerObj = HandlerObj->AddressSpace.Next; } /* The handler does not exist */ ACPI_DEBUG_PRINT ((ACPI_DB_OPREGION, "Unable to remove address handler %p for %s(%X), DevNode %p, obj %p\n", Handler, AcpiUtGetRegionName (SpaceId), SpaceId, Node, ObjDesc)); Status = AE_NOT_EXIST; UnlockAndExit: (void) AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); return_ACPI_STATUS (Status); } ACPI_EXPORT_SYMBOL (AcpiRemoveAddressSpaceHandler) src/acpica/source/components/executer/000077500000000000000000000000001231470457100204025ustar00rootroot00000000000000src/acpica/source/components/executer/exconfig.c000066400000000000000000000603231231470457100223540ustar00rootroot00000000000000/****************************************************************************** * * Module Name: exconfig - Namespace reconfiguration (Load/Unload opcodes) * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #define __EXCONFIG_C__ #include "acpi.h" #include "accommon.h" #include "acinterp.h" #include "acnamesp.h" #include "actables.h" #include "acdispat.h" #include "acevents.h" #include "amlcode.h" #define _COMPONENT ACPI_EXECUTER ACPI_MODULE_NAME ("exconfig") /* Local prototypes */ static ACPI_STATUS AcpiExAddTable ( UINT32 TableIndex, ACPI_NAMESPACE_NODE *ParentNode, ACPI_OPERAND_OBJECT **DdbHandle); static ACPI_STATUS AcpiExRegionRead ( ACPI_OPERAND_OBJECT *ObjDesc, UINT32 Length, UINT8 *Buffer); /******************************************************************************* * * FUNCTION: AcpiExAddTable * * PARAMETERS: Table - Pointer to raw table * ParentNode - Where to load the table (scope) * DdbHandle - Where to return the table handle. * * RETURN: Status * * DESCRIPTION: Common function to Install and Load an ACPI table with a * returned table handle. * ******************************************************************************/ static ACPI_STATUS AcpiExAddTable ( UINT32 TableIndex, ACPI_NAMESPACE_NODE *ParentNode, ACPI_OPERAND_OBJECT **DdbHandle) { ACPI_OPERAND_OBJECT *ObjDesc; ACPI_STATUS Status; ACPI_OWNER_ID OwnerId; ACPI_FUNCTION_TRACE (ExAddTable); /* Create an object to be the table handle */ ObjDesc = AcpiUtCreateInternalObject (ACPI_TYPE_LOCAL_REFERENCE); if (!ObjDesc) { return_ACPI_STATUS (AE_NO_MEMORY); } /* Init the table handle */ ObjDesc->Common.Flags |= AOPOBJ_DATA_VALID; ObjDesc->Reference.Class = ACPI_REFCLASS_TABLE; *DdbHandle = ObjDesc; /* Install the new table into the local data structures */ ObjDesc->Reference.Value = TableIndex; /* Add the table to the namespace */ Status = AcpiNsLoadTable (TableIndex, ParentNode); if (ACPI_FAILURE (Status)) { AcpiUtRemoveReference (ObjDesc); *DdbHandle = NULL; return_ACPI_STATUS (Status); } /* Execute any module-level code that was found in the table */ AcpiExExitInterpreter (); AcpiNsExecModuleCodeList (); AcpiExEnterInterpreter (); /* * Update GPEs for any new _Lxx/_Exx methods. Ignore errors. The host is * responsible for discovering any new wake GPEs by running _PRW methods * that may have been loaded by this table. */ Status = AcpiTbGetOwnerId (TableIndex, &OwnerId); if (ACPI_SUCCESS (Status)) { AcpiEvUpdateGpes (OwnerId); } return_ACPI_STATUS (AE_OK); } /******************************************************************************* * * FUNCTION: AcpiExLoadTableOp * * PARAMETERS: WalkState - Current state with operands * ReturnDesc - Where to store the return object * * RETURN: Status * * DESCRIPTION: Load an ACPI table from the RSDT/XSDT * ******************************************************************************/ ACPI_STATUS AcpiExLoadTableOp ( ACPI_WALK_STATE *WalkState, ACPI_OPERAND_OBJECT **ReturnDesc) { ACPI_STATUS Status; ACPI_OPERAND_OBJECT **Operand = &WalkState->Operands[0]; ACPI_NAMESPACE_NODE *ParentNode; ACPI_NAMESPACE_NODE *StartNode; ACPI_NAMESPACE_NODE *ParameterNode = NULL; ACPI_OPERAND_OBJECT *DdbHandle; ACPI_TABLE_HEADER *Table; UINT32 TableIndex; ACPI_FUNCTION_TRACE (ExLoadTableOp); /* Validate lengths for the Signature, OemId, and OemTableId strings */ if ((Operand[0]->String.Length > ACPI_NAME_SIZE) || (Operand[1]->String.Length > ACPI_OEM_ID_SIZE) || (Operand[2]->String.Length > ACPI_OEM_TABLE_ID_SIZE)) { return_ACPI_STATUS (AE_AML_STRING_LIMIT); } /* Find the ACPI table in the RSDT/XSDT */ Status = AcpiTbFindTable ( Operand[0]->String.Pointer, Operand[1]->String.Pointer, Operand[2]->String.Pointer, &TableIndex); if (ACPI_FAILURE (Status)) { if (Status != AE_NOT_FOUND) { return_ACPI_STATUS (Status); } /* Table not found, return an Integer=0 and AE_OK */ DdbHandle = AcpiUtCreateIntegerObject ((UINT64) 0); if (!DdbHandle) { return_ACPI_STATUS (AE_NO_MEMORY); } *ReturnDesc = DdbHandle; return_ACPI_STATUS (AE_OK); } /* Default nodes */ StartNode = WalkState->ScopeInfo->Scope.Node; ParentNode = AcpiGbl_RootNode; /* RootPath (optional parameter) */ if (Operand[3]->String.Length > 0) { /* * Find the node referenced by the RootPathString. This is the * location within the namespace where the table will be loaded. */ Status = AcpiNsGetNode (StartNode, Operand[3]->String.Pointer, ACPI_NS_SEARCH_PARENT, &ParentNode); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } } /* ParameterPath (optional parameter) */ if (Operand[4]->String.Length > 0) { if ((Operand[4]->String.Pointer[0] != AML_ROOT_PREFIX) && (Operand[4]->String.Pointer[0] != AML_PARENT_PREFIX)) { /* * Path is not absolute, so it will be relative to the node * referenced by the RootPathString (or the NS root if omitted) */ StartNode = ParentNode; } /* Find the node referenced by the ParameterPathString */ Status = AcpiNsGetNode (StartNode, Operand[4]->String.Pointer, ACPI_NS_SEARCH_PARENT, &ParameterNode); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } } /* Load the table into the namespace */ Status = AcpiExAddTable (TableIndex, ParentNode, &DdbHandle); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } /* Parameter Data (optional) */ if (ParameterNode) { /* Store the parameter data into the optional parameter object */ Status = AcpiExStore (Operand[5], ACPI_CAST_PTR (ACPI_OPERAND_OBJECT, ParameterNode), WalkState); if (ACPI_FAILURE (Status)) { (void) AcpiExUnloadTable (DdbHandle); AcpiUtRemoveReference (DdbHandle); return_ACPI_STATUS (Status); } } Status = AcpiGetTableByIndex (TableIndex, &Table); if (ACPI_SUCCESS (Status)) { ACPI_INFO ((AE_INFO, "Dynamic OEM Table Load:")); AcpiTbPrintTableHeader (0, Table); } /* Invoke table handler if present */ if (AcpiGbl_TableHandler) { (void) AcpiGbl_TableHandler (ACPI_TABLE_EVENT_LOAD, Table, AcpiGbl_TableHandlerContext); } *ReturnDesc = DdbHandle; return_ACPI_STATUS (Status); } /******************************************************************************* * * FUNCTION: AcpiExRegionRead * * PARAMETERS: ObjDesc - Region descriptor * Length - Number of bytes to read * Buffer - Pointer to where to put the data * * RETURN: Status * * DESCRIPTION: Read data from an operation region. The read starts from the * beginning of the region. * ******************************************************************************/ static ACPI_STATUS AcpiExRegionRead ( ACPI_OPERAND_OBJECT *ObjDesc, UINT32 Length, UINT8 *Buffer) { ACPI_STATUS Status; UINT64 Value; UINT32 RegionOffset = 0; UINT32 i; /* Bytewise reads */ for (i = 0; i < Length; i++) { Status = AcpiEvAddressSpaceDispatch (ObjDesc, NULL, ACPI_READ, RegionOffset, 8, &Value); if (ACPI_FAILURE (Status)) { return (Status); } *Buffer = (UINT8) Value; Buffer++; RegionOffset++; } return (AE_OK); } /******************************************************************************* * * FUNCTION: AcpiExLoadOp * * PARAMETERS: ObjDesc - Region or Buffer/Field where the table will be * obtained * Target - Where a handle to the table will be stored * WalkState - Current state * * RETURN: Status * * DESCRIPTION: Load an ACPI table from a field or operation region * * NOTE: Region Fields (Field, BankField, IndexFields) are resolved to buffer * objects before this code is reached. * * If source is an operation region, it must refer to SystemMemory, as * per the ACPI specification. * ******************************************************************************/ ACPI_STATUS AcpiExLoadOp ( ACPI_OPERAND_OBJECT *ObjDesc, ACPI_OPERAND_OBJECT *Target, ACPI_WALK_STATE *WalkState) { ACPI_OPERAND_OBJECT *DdbHandle; ACPI_TABLE_HEADER *TableHeader; ACPI_TABLE_HEADER *Table; UINT32 TableIndex; ACPI_STATUS Status; UINT32 Length; ACPI_FUNCTION_TRACE (ExLoadOp); /* Source Object can be either an OpRegion or a Buffer/Field */ switch (ObjDesc->Common.Type) { case ACPI_TYPE_REGION: ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Load table from Region %p\n", ObjDesc)); /* Region must be SystemMemory (from ACPI spec) */ if (ObjDesc->Region.SpaceId != ACPI_ADR_SPACE_SYSTEM_MEMORY) { return_ACPI_STATUS (AE_AML_OPERAND_TYPE); } /* * If the Region Address and Length have not been previously evaluated, * evaluate them now and save the results. */ if (!(ObjDesc->Common.Flags & AOPOBJ_DATA_VALID)) { Status = AcpiDsGetRegionArguments (ObjDesc); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } } /* Get the table header first so we can get the table length */ TableHeader = ACPI_ALLOCATE (sizeof (ACPI_TABLE_HEADER)); if (!TableHeader) { return_ACPI_STATUS (AE_NO_MEMORY); } Status = AcpiExRegionRead (ObjDesc, sizeof (ACPI_TABLE_HEADER), ACPI_CAST_PTR (UINT8, TableHeader)); Length = TableHeader->Length; ACPI_FREE (TableHeader); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } /* Must have at least an ACPI table header */ if (Length < sizeof (ACPI_TABLE_HEADER)) { return_ACPI_STATUS (AE_INVALID_TABLE_LENGTH); } /* * The original implementation simply mapped the table, with no copy. * However, the memory region is not guaranteed to remain stable and * we must copy the table to a local buffer. For example, the memory * region is corrupted after suspend on some machines. Dynamically * loaded tables are usually small, so this overhead is minimal. * * The latest implementation (5/2009) does not use a mapping at all. * We use the low-level operation region interface to read the table * instead of the obvious optimization of using a direct mapping. * This maintains a consistent use of operation regions across the * entire subsystem. This is important if additional processing must * be performed in the (possibly user-installed) operation region * handler. For example, AcpiExec and ASLTS depend on this. */ /* Allocate a buffer for the table */ Table = ACPI_ALLOCATE (Length); if (!Table) { return_ACPI_STATUS (AE_NO_MEMORY); } /* Read the entire table */ Status = AcpiExRegionRead (ObjDesc, Length, ACPI_CAST_PTR (UINT8, Table)); if (ACPI_FAILURE (Status)) { ACPI_FREE (Table); return_ACPI_STATUS (Status); } break; case ACPI_TYPE_BUFFER: /* Buffer or resolved RegionField */ ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Load table from Buffer or Field %p\n", ObjDesc)); /* Must have at least an ACPI table header */ if (ObjDesc->Buffer.Length < sizeof (ACPI_TABLE_HEADER)) { return_ACPI_STATUS (AE_INVALID_TABLE_LENGTH); } /* Get the actual table length from the table header */ TableHeader = ACPI_CAST_PTR (ACPI_TABLE_HEADER, ObjDesc->Buffer.Pointer); Length = TableHeader->Length; /* Table cannot extend beyond the buffer */ if (Length > ObjDesc->Buffer.Length) { return_ACPI_STATUS (AE_AML_BUFFER_LIMIT); } if (Length < sizeof (ACPI_TABLE_HEADER)) { return_ACPI_STATUS (AE_INVALID_TABLE_LENGTH); } /* * Copy the table from the buffer because the buffer could be modified * or even deleted in the future */ Table = ACPI_ALLOCATE (Length); if (!Table) { return_ACPI_STATUS (AE_NO_MEMORY); } ACPI_MEMCPY (Table, TableHeader, Length); break; default: return_ACPI_STATUS (AE_AML_OPERAND_TYPE); } /* Install the new table into the local data structures */ ACPI_INFO ((AE_INFO, "Dynamic OEM Table Load:")); (void) AcpiUtAcquireMutex (ACPI_MTX_TABLES); Status = AcpiTbInstallStandardTable (ACPI_PTR_TO_PHYSADDR (Table), ACPI_TABLE_ORIGIN_INTERNAL_VIRTUAL, TRUE, TRUE, &TableIndex); (void) AcpiUtReleaseMutex (ACPI_MTX_TABLES); if (ACPI_FAILURE (Status)) { /* Delete allocated table buffer */ ACPI_FREE (Table); return_ACPI_STATUS (Status); } /* * Note: Now table is "INSTALLED", it must be validated before * loading. */ Status = AcpiTbValidateTable (&AcpiGbl_RootTableList.Tables[TableIndex]); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } /* * Add the table to the namespace. * * Note: Load the table objects relative to the root of the namespace. * This appears to go against the ACPI specification, but we do it for * compatibility with other ACPI implementations. */ Status = AcpiExAddTable (TableIndex, AcpiGbl_RootNode, &DdbHandle); if (ACPI_FAILURE (Status)) { /* On error, TablePtr was deallocated above */ return_ACPI_STATUS (Status); } /* Store the DdbHandle into the Target operand */ Status = AcpiExStore (DdbHandle, Target, WalkState); if (ACPI_FAILURE (Status)) { (void) AcpiExUnloadTable (DdbHandle); /* TablePtr was deallocated above */ AcpiUtRemoveReference (DdbHandle); return_ACPI_STATUS (Status); } /* Remove the reference by added by AcpiExStore above */ AcpiUtRemoveReference (DdbHandle); /* Invoke table handler if present */ if (AcpiGbl_TableHandler) { (void) AcpiGbl_TableHandler (ACPI_TABLE_EVENT_LOAD, Table, AcpiGbl_TableHandlerContext); } return_ACPI_STATUS (Status); } /******************************************************************************* * * FUNCTION: AcpiExUnloadTable * * PARAMETERS: DdbHandle - Handle to a previously loaded table * * RETURN: Status * * DESCRIPTION: Unload an ACPI table * ******************************************************************************/ ACPI_STATUS AcpiExUnloadTable ( ACPI_OPERAND_OBJECT *DdbHandle) { ACPI_STATUS Status = AE_OK; ACPI_OPERAND_OBJECT *TableDesc = DdbHandle; UINT32 TableIndex; ACPI_TABLE_HEADER *Table; ACPI_FUNCTION_TRACE (ExUnloadTable); /* * Temporarily emit a warning so that the ASL for the machine can be * hopefully obtained. This is to say that the Unload() operator is * extremely rare if not completely unused. */ ACPI_WARNING ((AE_INFO, "Received request to unload an ACPI table")); /* * Validate the handle * Although the handle is partially validated in AcpiExReconfiguration() * when it calls AcpiExResolveOperands(), the handle is more completely * validated here. * * Handle must be a valid operand object of type reference. Also, the * DdbHandle must still be marked valid (table has not been previously * unloaded) */ if ((!DdbHandle) || (ACPI_GET_DESCRIPTOR_TYPE (DdbHandle) != ACPI_DESC_TYPE_OPERAND) || (DdbHandle->Common.Type != ACPI_TYPE_LOCAL_REFERENCE) || (!(DdbHandle->Common.Flags & AOPOBJ_DATA_VALID))) { return_ACPI_STATUS (AE_AML_OPERAND_TYPE); } /* Get the table index from the DdbHandle */ TableIndex = TableDesc->Reference.Value; /* Ensure the table is still loaded */ if (!AcpiTbIsTableLoaded (TableIndex)) { return_ACPI_STATUS (AE_NOT_EXIST); } /* Invoke table handler if present */ if (AcpiGbl_TableHandler) { Status = AcpiGetTableByIndex (TableIndex, &Table); if (ACPI_SUCCESS (Status)) { (void) AcpiGbl_TableHandler (ACPI_TABLE_EVENT_UNLOAD, Table, AcpiGbl_TableHandlerContext); } } /* Delete the portion of the namespace owned by this table */ Status = AcpiTbDeleteNamespaceByOwner (TableIndex); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } (void) AcpiTbReleaseOwnerId (TableIndex); AcpiTbSetTableLoadedFlag (TableIndex, FALSE); /* * Invalidate the handle. We do this because the handle may be stored * in a named object and may not be actually deleted until much later. */ DdbHandle->Common.Flags &= ~AOPOBJ_DATA_VALID; return_ACPI_STATUS (AE_OK); } src/acpica/source/components/executer/exconvrt.c000066400000000000000000000613411231470457100224230ustar00rootroot00000000000000/****************************************************************************** * * Module Name: exconvrt - Object conversion routines * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #define __EXCONVRT_C__ #include "acpi.h" #include "accommon.h" #include "acinterp.h" #include "amlcode.h" #define _COMPONENT ACPI_EXECUTER ACPI_MODULE_NAME ("exconvrt") /* Local prototypes */ static UINT32 AcpiExConvertToAscii ( UINT64 Integer, UINT16 Base, UINT8 *String, UINT8 MaxLength); /******************************************************************************* * * FUNCTION: AcpiExConvertToInteger * * PARAMETERS: ObjDesc - Object to be converted. Must be an * Integer, Buffer, or String * ResultDesc - Where the new Integer object is returned * Flags - Used for string conversion * * RETURN: Status * * DESCRIPTION: Convert an ACPI Object to an integer. * ******************************************************************************/ ACPI_STATUS AcpiExConvertToInteger ( ACPI_OPERAND_OBJECT *ObjDesc, ACPI_OPERAND_OBJECT **ResultDesc, UINT32 Flags) { ACPI_OPERAND_OBJECT *ReturnDesc; UINT8 *Pointer; UINT64 Result; UINT32 i; UINT32 Count; ACPI_STATUS Status; ACPI_FUNCTION_TRACE_PTR (ExConvertToInteger, ObjDesc); switch (ObjDesc->Common.Type) { case ACPI_TYPE_INTEGER: /* No conversion necessary */ *ResultDesc = ObjDesc; return_ACPI_STATUS (AE_OK); case ACPI_TYPE_BUFFER: case ACPI_TYPE_STRING: /* Note: Takes advantage of common buffer/string fields */ Pointer = ObjDesc->Buffer.Pointer; Count = ObjDesc->Buffer.Length; break; default: return_ACPI_STATUS (AE_TYPE); } /* * Convert the buffer/string to an integer. Note that both buffers and * strings are treated as raw data - we don't convert ascii to hex for * strings. * * There are two terminating conditions for the loop: * 1) The size of an integer has been reached, or * 2) The end of the buffer or string has been reached */ Result = 0; /* String conversion is different than Buffer conversion */ switch (ObjDesc->Common.Type) { case ACPI_TYPE_STRING: /* * Convert string to an integer - for most cases, the string must be * hexadecimal as per the ACPI specification. The only exception (as * of ACPI 3.0) is that the ToInteger() operator allows both decimal * and hexadecimal strings (hex prefixed with "0x"). */ Status = AcpiUtStrtoul64 ((char *) Pointer, Flags, &Result); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } break; case ACPI_TYPE_BUFFER: /* Check for zero-length buffer */ if (!Count) { return_ACPI_STATUS (AE_AML_BUFFER_LIMIT); } /* Transfer no more than an integer's worth of data */ if (Count > AcpiGbl_IntegerByteWidth) { Count = AcpiGbl_IntegerByteWidth; } /* * Convert buffer to an integer - we simply grab enough raw data * from the buffer to fill an integer */ for (i = 0; i < Count; i++) { /* * Get next byte and shift it into the Result. * Little endian is used, meaning that the first byte of the buffer * is the LSB of the integer */ Result |= (((UINT64) Pointer[i]) << (i * 8)); } break; default: /* No other types can get here */ break; } /* Create a new integer */ ReturnDesc = AcpiUtCreateIntegerObject (Result); if (!ReturnDesc) { return_ACPI_STATUS (AE_NO_MEMORY); } ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Converted value: %8.8X%8.8X\n", ACPI_FORMAT_UINT64 (Result))); /* Save the Result */ (void) AcpiExTruncateFor32bitTable (ReturnDesc); *ResultDesc = ReturnDesc; return_ACPI_STATUS (AE_OK); } /******************************************************************************* * * FUNCTION: AcpiExConvertToBuffer * * PARAMETERS: ObjDesc - Object to be converted. Must be an * Integer, Buffer, or String * ResultDesc - Where the new buffer object is returned * * RETURN: Status * * DESCRIPTION: Convert an ACPI Object to a Buffer * ******************************************************************************/ ACPI_STATUS AcpiExConvertToBuffer ( ACPI_OPERAND_OBJECT *ObjDesc, ACPI_OPERAND_OBJECT **ResultDesc) { ACPI_OPERAND_OBJECT *ReturnDesc; UINT8 *NewBuf; ACPI_FUNCTION_TRACE_PTR (ExConvertToBuffer, ObjDesc); switch (ObjDesc->Common.Type) { case ACPI_TYPE_BUFFER: /* No conversion necessary */ *ResultDesc = ObjDesc; return_ACPI_STATUS (AE_OK); case ACPI_TYPE_INTEGER: /* * Create a new Buffer object. * Need enough space for one integer */ ReturnDesc = AcpiUtCreateBufferObject (AcpiGbl_IntegerByteWidth); if (!ReturnDesc) { return_ACPI_STATUS (AE_NO_MEMORY); } /* Copy the integer to the buffer, LSB first */ NewBuf = ReturnDesc->Buffer.Pointer; ACPI_MEMCPY (NewBuf, &ObjDesc->Integer.Value, AcpiGbl_IntegerByteWidth); break; case ACPI_TYPE_STRING: /* * Create a new Buffer object * Size will be the string length * * NOTE: Add one to the string length to include the null terminator. * The ACPI spec is unclear on this subject, but there is existing * ASL/AML code that depends on the null being transferred to the new * buffer. */ ReturnDesc = AcpiUtCreateBufferObject ( (ACPI_SIZE) ObjDesc->String.Length + 1); if (!ReturnDesc) { return_ACPI_STATUS (AE_NO_MEMORY); } /* Copy the string to the buffer */ NewBuf = ReturnDesc->Buffer.Pointer; ACPI_STRNCPY ((char *) NewBuf, (char *) ObjDesc->String.Pointer, ObjDesc->String.Length); break; default: return_ACPI_STATUS (AE_TYPE); } /* Mark buffer initialized */ ReturnDesc->Common.Flags |= AOPOBJ_DATA_VALID; *ResultDesc = ReturnDesc; return_ACPI_STATUS (AE_OK); } /******************************************************************************* * * FUNCTION: AcpiExConvertToAscii * * PARAMETERS: Integer - Value to be converted * Base - ACPI_STRING_DECIMAL or ACPI_STRING_HEX * String - Where the string is returned * DataWidth - Size of data item to be converted, in bytes * * RETURN: Actual string length * * DESCRIPTION: Convert an ACPI Integer to a hex or decimal string * ******************************************************************************/ static UINT32 AcpiExConvertToAscii ( UINT64 Integer, UINT16 Base, UINT8 *String, UINT8 DataWidth) { UINT64 Digit; UINT32 i; UINT32 j; UINT32 k = 0; UINT32 HexLength; UINT32 DecimalLength; UINT32 Remainder; BOOLEAN SupressZeros; ACPI_FUNCTION_ENTRY (); switch (Base) { case 10: /* Setup max length for the decimal number */ switch (DataWidth) { case 1: DecimalLength = ACPI_MAX8_DECIMAL_DIGITS; break; case 4: DecimalLength = ACPI_MAX32_DECIMAL_DIGITS; break; case 8: default: DecimalLength = ACPI_MAX64_DECIMAL_DIGITS; break; } SupressZeros = TRUE; /* No leading zeros */ Remainder = 0; for (i = DecimalLength; i > 0; i--) { /* Divide by nth factor of 10 */ Digit = Integer; for (j = 0; j < i; j++) { (void) AcpiUtShortDivide (Digit, 10, &Digit, &Remainder); } /* Handle leading zeros */ if (Remainder != 0) { SupressZeros = FALSE; } if (!SupressZeros) { String[k] = (UINT8) (ACPI_ASCII_ZERO + Remainder); k++; } } break; case 16: /* HexLength: 2 ascii hex chars per data byte */ HexLength = ACPI_MUL_2 (DataWidth); for (i = 0, j = (HexLength-1); i < HexLength; i++, j--) { /* Get one hex digit, most significant digits first */ String[k] = (UINT8) AcpiUtHexToAsciiChar (Integer, ACPI_MUL_4 (j)); k++; } break; default: return (0); } /* * Since leading zeros are suppressed, we must check for the case where * the integer equals 0 * * Finally, null terminate the string and return the length */ if (!k) { String [0] = ACPI_ASCII_ZERO; k = 1; } String [k] = 0; return ((UINT32) k); } /******************************************************************************* * * FUNCTION: AcpiExConvertToString * * PARAMETERS: ObjDesc - Object to be converted. Must be an * Integer, Buffer, or String * ResultDesc - Where the string object is returned * Type - String flags (base and conversion type) * * RETURN: Status * * DESCRIPTION: Convert an ACPI Object to a string * ******************************************************************************/ ACPI_STATUS AcpiExConvertToString ( ACPI_OPERAND_OBJECT *ObjDesc, ACPI_OPERAND_OBJECT **ResultDesc, UINT32 Type) { ACPI_OPERAND_OBJECT *ReturnDesc; UINT8 *NewBuf; UINT32 i; UINT32 StringLength = 0; UINT16 Base = 16; UINT8 Separator = ','; ACPI_FUNCTION_TRACE_PTR (ExConvertToString, ObjDesc); switch (ObjDesc->Common.Type) { case ACPI_TYPE_STRING: /* No conversion necessary */ *ResultDesc = ObjDesc; return_ACPI_STATUS (AE_OK); case ACPI_TYPE_INTEGER: switch (Type) { case ACPI_EXPLICIT_CONVERT_DECIMAL: /* Make room for maximum decimal number */ StringLength = ACPI_MAX_DECIMAL_DIGITS; Base = 10; break; default: /* Two hex string characters for each integer byte */ StringLength = ACPI_MUL_2 (AcpiGbl_IntegerByteWidth); break; } /* * Create a new String * Need enough space for one ASCII integer (plus null terminator) */ ReturnDesc = AcpiUtCreateStringObject ((ACPI_SIZE) StringLength); if (!ReturnDesc) { return_ACPI_STATUS (AE_NO_MEMORY); } NewBuf = ReturnDesc->Buffer.Pointer; /* Convert integer to string */ StringLength = AcpiExConvertToAscii (ObjDesc->Integer.Value, Base, NewBuf, AcpiGbl_IntegerByteWidth); /* Null terminate at the correct place */ ReturnDesc->String.Length = StringLength; NewBuf [StringLength] = 0; break; case ACPI_TYPE_BUFFER: /* Setup string length, base, and separator */ switch (Type) { case ACPI_EXPLICIT_CONVERT_DECIMAL: /* Used by ToDecimalString */ /* * From ACPI: "If Data is a buffer, it is converted to a string of * decimal values separated by commas." */ Base = 10; /* * Calculate the final string length. Individual string values * are variable length (include separator for each) */ for (i = 0; i < ObjDesc->Buffer.Length; i++) { if (ObjDesc->Buffer.Pointer[i] >= 100) { StringLength += 4; } else if (ObjDesc->Buffer.Pointer[i] >= 10) { StringLength += 3; } else { StringLength += 2; } } break; case ACPI_IMPLICIT_CONVERT_HEX: /* * From the ACPI spec: *"The entire contents of the buffer are converted to a string of * two-character hexadecimal numbers, each separated by a space." */ Separator = ' '; StringLength = (ObjDesc->Buffer.Length * 3); break; case ACPI_EXPLICIT_CONVERT_HEX: /* Used by ToHexString */ /* * From ACPI: "If Data is a buffer, it is converted to a string of * hexadecimal values separated by commas." */ StringLength = (ObjDesc->Buffer.Length * 3); break; default: return_ACPI_STATUS (AE_BAD_PARAMETER); } /* * Create a new string object and string buffer * (-1 because of extra separator included in StringLength from above) * Allow creation of zero-length strings from zero-length buffers. */ if (StringLength) { StringLength--; } ReturnDesc = AcpiUtCreateStringObject ((ACPI_SIZE) StringLength); if (!ReturnDesc) { return_ACPI_STATUS (AE_NO_MEMORY); } NewBuf = ReturnDesc->Buffer.Pointer; /* * Convert buffer bytes to hex or decimal values * (separated by commas or spaces) */ for (i = 0; i < ObjDesc->Buffer.Length; i++) { NewBuf += AcpiExConvertToAscii ( (UINT64) ObjDesc->Buffer.Pointer[i], Base, NewBuf, 1); *NewBuf++ = Separator; /* each separated by a comma or space */ } /* * Null terminate the string * (overwrites final comma/space from above) */ if (ObjDesc->Buffer.Length) { NewBuf--; } *NewBuf = 0; break; default: return_ACPI_STATUS (AE_TYPE); } *ResultDesc = ReturnDesc; return_ACPI_STATUS (AE_OK); } /******************************************************************************* * * FUNCTION: AcpiExConvertToTargetType * * PARAMETERS: DestinationType - Current type of the destination * SourceDesc - Source object to be converted. * ResultDesc - Where the converted object is returned * WalkState - Current method state * * RETURN: Status * * DESCRIPTION: Implements "implicit conversion" rules for storing an object. * ******************************************************************************/ ACPI_STATUS AcpiExConvertToTargetType ( ACPI_OBJECT_TYPE DestinationType, ACPI_OPERAND_OBJECT *SourceDesc, ACPI_OPERAND_OBJECT **ResultDesc, ACPI_WALK_STATE *WalkState) { ACPI_STATUS Status = AE_OK; ACPI_FUNCTION_TRACE (ExConvertToTargetType); /* Default behavior */ *ResultDesc = SourceDesc; /* * If required by the target, * perform implicit conversion on the source before we store it. */ switch (GET_CURRENT_ARG_TYPE (WalkState->OpInfo->RuntimeArgs)) { case ARGI_SIMPLE_TARGET: case ARGI_FIXED_TARGET: case ARGI_INTEGER_REF: /* Handles Increment, Decrement cases */ switch (DestinationType) { case ACPI_TYPE_LOCAL_REGION_FIELD: /* * Named field can always handle conversions */ break; default: /* No conversion allowed for these types */ if (DestinationType != SourceDesc->Common.Type) { ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Explicit operator, will store (%s) over existing type (%s)\n", AcpiUtGetObjectTypeName (SourceDesc), AcpiUtGetTypeName (DestinationType))); Status = AE_TYPE; } } break; case ARGI_TARGETREF: switch (DestinationType) { case ACPI_TYPE_INTEGER: case ACPI_TYPE_BUFFER_FIELD: case ACPI_TYPE_LOCAL_BANK_FIELD: case ACPI_TYPE_LOCAL_INDEX_FIELD: /* * These types require an Integer operand. We can convert * a Buffer or a String to an Integer if necessary. */ Status = AcpiExConvertToInteger (SourceDesc, ResultDesc, 16); break; case ACPI_TYPE_STRING: /* * The operand must be a String. We can convert an * Integer or Buffer if necessary */ Status = AcpiExConvertToString (SourceDesc, ResultDesc, ACPI_IMPLICIT_CONVERT_HEX); break; case ACPI_TYPE_BUFFER: /* * The operand must be a Buffer. We can convert an * Integer or String if necessary */ Status = AcpiExConvertToBuffer (SourceDesc, ResultDesc); break; default: ACPI_ERROR ((AE_INFO, "Bad destination type during conversion: 0x%X", DestinationType)); Status = AE_AML_INTERNAL; break; } break; case ARGI_REFERENCE: /* * CreateXxxxField cases - we are storing the field object into the name */ break; default: ACPI_ERROR ((AE_INFO, "Unknown Target type ID 0x%X AmlOpcode 0x%X DestType %s", GET_CURRENT_ARG_TYPE (WalkState->OpInfo->RuntimeArgs), WalkState->Opcode, AcpiUtGetTypeName (DestinationType))); Status = AE_AML_INTERNAL; } /* * Source-to-Target conversion semantics: * * If conversion to the target type cannot be performed, then simply * overwrite the target with the new object and type. */ if (Status == AE_TYPE) { Status = AE_OK; } return_ACPI_STATUS (Status); } src/acpica/source/components/executer/excreate.c000066400000000000000000000503571231470457100223600ustar00rootroot00000000000000/****************************************************************************** * * Module Name: excreate - Named object creation * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #define __EXCREATE_C__ #include "acpi.h" #include "accommon.h" #include "acinterp.h" #include "amlcode.h" #include "acnamesp.h" #define _COMPONENT ACPI_EXECUTER ACPI_MODULE_NAME ("excreate") #ifndef ACPI_NO_METHOD_EXECUTION /******************************************************************************* * * FUNCTION: AcpiExCreateAlias * * PARAMETERS: WalkState - Current state, contains operands * * RETURN: Status * * DESCRIPTION: Create a new named alias * ******************************************************************************/ ACPI_STATUS AcpiExCreateAlias ( ACPI_WALK_STATE *WalkState) { ACPI_NAMESPACE_NODE *TargetNode; ACPI_NAMESPACE_NODE *AliasNode; ACPI_STATUS Status = AE_OK; ACPI_FUNCTION_TRACE (ExCreateAlias); /* Get the source/alias operands (both namespace nodes) */ AliasNode = (ACPI_NAMESPACE_NODE *) WalkState->Operands[0]; TargetNode = (ACPI_NAMESPACE_NODE *) WalkState->Operands[1]; if ((TargetNode->Type == ACPI_TYPE_LOCAL_ALIAS) || (TargetNode->Type == ACPI_TYPE_LOCAL_METHOD_ALIAS)) { /* * Dereference an existing alias so that we don't create a chain * of aliases. With this code, we guarantee that an alias is * always exactly one level of indirection away from the * actual aliased name. */ TargetNode = ACPI_CAST_PTR (ACPI_NAMESPACE_NODE, TargetNode->Object); } /* * For objects that can never change (i.e., the NS node will * permanently point to the same object), we can simply attach * the object to the new NS node. For other objects (such as * Integers, buffers, etc.), we have to point the Alias node * to the original Node. */ switch (TargetNode->Type) { /* For these types, the sub-object can change dynamically via a Store */ case ACPI_TYPE_INTEGER: case ACPI_TYPE_STRING: case ACPI_TYPE_BUFFER: case ACPI_TYPE_PACKAGE: case ACPI_TYPE_BUFFER_FIELD: /* * These types open a new scope, so we need the NS node in order to access * any children. */ case ACPI_TYPE_DEVICE: case ACPI_TYPE_POWER: case ACPI_TYPE_PROCESSOR: case ACPI_TYPE_THERMAL: case ACPI_TYPE_LOCAL_SCOPE: /* * The new alias has the type ALIAS and points to the original * NS node, not the object itself. */ AliasNode->Type = ACPI_TYPE_LOCAL_ALIAS; AliasNode->Object = ACPI_CAST_PTR (ACPI_OPERAND_OBJECT, TargetNode); break; case ACPI_TYPE_METHOD: /* * Control method aliases need to be differentiated */ AliasNode->Type = ACPI_TYPE_LOCAL_METHOD_ALIAS; AliasNode->Object = ACPI_CAST_PTR (ACPI_OPERAND_OBJECT, TargetNode); break; default: /* Attach the original source object to the new Alias Node */ /* * The new alias assumes the type of the target, and it points * to the same object. The reference count of the object has an * additional reference to prevent deletion out from under either the * target node or the alias Node */ Status = AcpiNsAttachObject (AliasNode, AcpiNsGetAttachedObject (TargetNode), TargetNode->Type); break; } /* Since both operands are Nodes, we don't need to delete them */ return_ACPI_STATUS (Status); } /******************************************************************************* * * FUNCTION: AcpiExCreateEvent * * PARAMETERS: WalkState - Current state * * RETURN: Status * * DESCRIPTION: Create a new event object * ******************************************************************************/ ACPI_STATUS AcpiExCreateEvent ( ACPI_WALK_STATE *WalkState) { ACPI_STATUS Status; ACPI_OPERAND_OBJECT *ObjDesc; ACPI_FUNCTION_TRACE (ExCreateEvent); ObjDesc = AcpiUtCreateInternalObject (ACPI_TYPE_EVENT); if (!ObjDesc) { Status = AE_NO_MEMORY; goto Cleanup; } /* * Create the actual OS semaphore, with zero initial units -- meaning * that the event is created in an unsignalled state */ Status = AcpiOsCreateSemaphore (ACPI_NO_UNIT_LIMIT, 0, &ObjDesc->Event.OsSemaphore); if (ACPI_FAILURE (Status)) { goto Cleanup; } /* Attach object to the Node */ Status = AcpiNsAttachObject ((ACPI_NAMESPACE_NODE *) WalkState->Operands[0], ObjDesc, ACPI_TYPE_EVENT); Cleanup: /* * Remove local reference to the object (on error, will cause deletion * of both object and semaphore if present.) */ AcpiUtRemoveReference (ObjDesc); return_ACPI_STATUS (Status); } /******************************************************************************* * * FUNCTION: AcpiExCreateMutex * * PARAMETERS: WalkState - Current state * * RETURN: Status * * DESCRIPTION: Create a new mutex object * * Mutex (Name[0], SyncLevel[1]) * ******************************************************************************/ ACPI_STATUS AcpiExCreateMutex ( ACPI_WALK_STATE *WalkState) { ACPI_STATUS Status = AE_OK; ACPI_OPERAND_OBJECT *ObjDesc; ACPI_FUNCTION_TRACE_PTR (ExCreateMutex, ACPI_WALK_OPERANDS); /* Create the new mutex object */ ObjDesc = AcpiUtCreateInternalObject (ACPI_TYPE_MUTEX); if (!ObjDesc) { Status = AE_NO_MEMORY; goto Cleanup; } /* Create the actual OS Mutex */ Status = AcpiOsCreateMutex (&ObjDesc->Mutex.OsMutex); if (ACPI_FAILURE (Status)) { goto Cleanup; } /* Init object and attach to NS node */ ObjDesc->Mutex.SyncLevel = (UINT8) WalkState->Operands[1]->Integer.Value; ObjDesc->Mutex.Node = (ACPI_NAMESPACE_NODE *) WalkState->Operands[0]; Status = AcpiNsAttachObject (ObjDesc->Mutex.Node, ObjDesc, ACPI_TYPE_MUTEX); Cleanup: /* * Remove local reference to the object (on error, will cause deletion * of both object and semaphore if present.) */ AcpiUtRemoveReference (ObjDesc); return_ACPI_STATUS (Status); } /******************************************************************************* * * FUNCTION: AcpiExCreateRegion * * PARAMETERS: AmlStart - Pointer to the region declaration AML * AmlLength - Max length of the declaration AML * SpaceId - Address space ID for the region * WalkState - Current state * * RETURN: Status * * DESCRIPTION: Create a new operation region object * ******************************************************************************/ ACPI_STATUS AcpiExCreateRegion ( UINT8 *AmlStart, UINT32 AmlLength, UINT8 SpaceId, ACPI_WALK_STATE *WalkState) { ACPI_STATUS Status; ACPI_OPERAND_OBJECT *ObjDesc; ACPI_NAMESPACE_NODE *Node; ACPI_OPERAND_OBJECT *RegionObj2; ACPI_FUNCTION_TRACE (ExCreateRegion); /* Get the Namespace Node */ Node = WalkState->Op->Common.Node; /* * If the region object is already attached to this node, * just return */ if (AcpiNsGetAttachedObject (Node)) { return_ACPI_STATUS (AE_OK); } /* * Space ID must be one of the predefined IDs, or in the user-defined * range */ if (!AcpiIsValidSpaceId (SpaceId)) { /* * Print an error message, but continue. We don't want to abort * a table load for this exception. Instead, if the region is * actually used at runtime, abort the executing method. */ ACPI_ERROR ((AE_INFO, "Invalid/unknown Address Space ID: 0x%2.2X", SpaceId)); } ACPI_DEBUG_PRINT ((ACPI_DB_LOAD, "Region Type - %s (0x%X)\n", AcpiUtGetRegionName (SpaceId), SpaceId)); /* Create the region descriptor */ ObjDesc = AcpiUtCreateInternalObject (ACPI_TYPE_REGION); if (!ObjDesc) { Status = AE_NO_MEMORY; goto Cleanup; } /* * Remember location in AML stream of address & length * operands since they need to be evaluated at run time. */ RegionObj2 = ObjDesc->Common.NextObject; RegionObj2->Extra.AmlStart = AmlStart; RegionObj2->Extra.AmlLength = AmlLength; if (WalkState->ScopeInfo) { RegionObj2->Extra.ScopeNode = WalkState->ScopeInfo->Scope.Node; } else { RegionObj2->Extra.ScopeNode = Node; } /* Init the region from the operands */ ObjDesc->Region.SpaceId = SpaceId; ObjDesc->Region.Address = 0; ObjDesc->Region.Length = 0; ObjDesc->Region.Node = Node; /* Install the new region object in the parent Node */ Status = AcpiNsAttachObject (Node, ObjDesc, ACPI_TYPE_REGION); Cleanup: /* Remove local reference to the object */ AcpiUtRemoveReference (ObjDesc); return_ACPI_STATUS (Status); } /******************************************************************************* * * FUNCTION: AcpiExCreateProcessor * * PARAMETERS: WalkState - Current state * * RETURN: Status * * DESCRIPTION: Create a new processor object and populate the fields * * Processor (Name[0], CpuID[1], PblockAddr[2], PblockLength[3]) * ******************************************************************************/ ACPI_STATUS AcpiExCreateProcessor ( ACPI_WALK_STATE *WalkState) { ACPI_OPERAND_OBJECT **Operand = &WalkState->Operands[0]; ACPI_OPERAND_OBJECT *ObjDesc; ACPI_STATUS Status; ACPI_FUNCTION_TRACE_PTR (ExCreateProcessor, WalkState); /* Create the processor object */ ObjDesc = AcpiUtCreateInternalObject (ACPI_TYPE_PROCESSOR); if (!ObjDesc) { return_ACPI_STATUS (AE_NO_MEMORY); } /* Initialize the processor object from the operands */ ObjDesc->Processor.ProcId = (UINT8) Operand[1]->Integer.Value; ObjDesc->Processor.Length = (UINT8) Operand[3]->Integer.Value; ObjDesc->Processor.Address = (ACPI_IO_ADDRESS) Operand[2]->Integer.Value; /* Install the processor object in the parent Node */ Status = AcpiNsAttachObject ((ACPI_NAMESPACE_NODE *) Operand[0], ObjDesc, ACPI_TYPE_PROCESSOR); /* Remove local reference to the object */ AcpiUtRemoveReference (ObjDesc); return_ACPI_STATUS (Status); } /******************************************************************************* * * FUNCTION: AcpiExCreatePowerResource * * PARAMETERS: WalkState - Current state * * RETURN: Status * * DESCRIPTION: Create a new PowerResource object and populate the fields * * PowerResource (Name[0], SystemLevel[1], ResourceOrder[2]) * ******************************************************************************/ ACPI_STATUS AcpiExCreatePowerResource ( ACPI_WALK_STATE *WalkState) { ACPI_OPERAND_OBJECT **Operand = &WalkState->Operands[0]; ACPI_STATUS Status; ACPI_OPERAND_OBJECT *ObjDesc; ACPI_FUNCTION_TRACE_PTR (ExCreatePowerResource, WalkState); /* Create the power resource object */ ObjDesc = AcpiUtCreateInternalObject (ACPI_TYPE_POWER); if (!ObjDesc) { return_ACPI_STATUS (AE_NO_MEMORY); } /* Initialize the power object from the operands */ ObjDesc->PowerResource.SystemLevel = (UINT8) Operand[1]->Integer.Value; ObjDesc->PowerResource.ResourceOrder = (UINT16) Operand[2]->Integer.Value; /* Install the power resource object in the parent Node */ Status = AcpiNsAttachObject ((ACPI_NAMESPACE_NODE *) Operand[0], ObjDesc, ACPI_TYPE_POWER); /* Remove local reference to the object */ AcpiUtRemoveReference (ObjDesc); return_ACPI_STATUS (Status); } #endif /******************************************************************************* * * FUNCTION: AcpiExCreateMethod * * PARAMETERS: AmlStart - First byte of the method's AML * AmlLength - AML byte count for this method * WalkState - Current state * * RETURN: Status * * DESCRIPTION: Create a new method object * ******************************************************************************/ ACPI_STATUS AcpiExCreateMethod ( UINT8 *AmlStart, UINT32 AmlLength, ACPI_WALK_STATE *WalkState) { ACPI_OPERAND_OBJECT **Operand = &WalkState->Operands[0]; ACPI_OPERAND_OBJECT *ObjDesc; ACPI_STATUS Status; UINT8 MethodFlags; ACPI_FUNCTION_TRACE_PTR (ExCreateMethod, WalkState); /* Create a new method object */ ObjDesc = AcpiUtCreateInternalObject (ACPI_TYPE_METHOD); if (!ObjDesc) { Status = AE_NO_MEMORY; goto Exit; } /* Save the method's AML pointer and length */ ObjDesc->Method.AmlStart = AmlStart; ObjDesc->Method.AmlLength = AmlLength; /* * Disassemble the method flags. Split off the ArgCount, Serialized * flag, and SyncLevel for efficiency. */ MethodFlags = (UINT8) Operand[1]->Integer.Value; ObjDesc->Method.ParamCount = (UINT8) (MethodFlags & AML_METHOD_ARG_COUNT); /* * Get the SyncLevel. If method is serialized, a mutex will be * created for this method when it is parsed. */ if (MethodFlags & AML_METHOD_SERIALIZED) { ObjDesc->Method.InfoFlags = ACPI_METHOD_SERIALIZED; /* * ACPI 1.0: SyncLevel = 0 * ACPI 2.0: SyncLevel = SyncLevel in method declaration */ ObjDesc->Method.SyncLevel = (UINT8) ((MethodFlags & AML_METHOD_SYNC_LEVEL) >> 4); } /* Attach the new object to the method Node */ Status = AcpiNsAttachObject ((ACPI_NAMESPACE_NODE *) Operand[0], ObjDesc, ACPI_TYPE_METHOD); /* Remove local reference to the object */ AcpiUtRemoveReference (ObjDesc); Exit: /* Remove a reference to the operand */ AcpiUtRemoveReference (Operand[1]); return_ACPI_STATUS (Status); } src/acpica/source/components/executer/exdebug.c000066400000000000000000000305131231470457100221730ustar00rootroot00000000000000/****************************************************************************** * * Module Name: exdebug - Support for stores to the AML Debug Object * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #define __EXDEBUG_C__ #include "acpi.h" #include "accommon.h" #include "acinterp.h" #define _COMPONENT ACPI_EXECUTER ACPI_MODULE_NAME ("exdebug") #ifndef ACPI_NO_ERROR_MESSAGES /******************************************************************************* * * FUNCTION: AcpiExDoDebugObject * * PARAMETERS: SourceDesc - Object to be output to "Debug Object" * Level - Indentation level (used for packages) * Index - Current package element, zero if not pkg * * RETURN: None * * DESCRIPTION: Handles stores to the AML Debug Object. For example: * Store(INT1, Debug) * * This function is not compiled if ACPI_NO_ERROR_MESSAGES is set. * * This function is only enabled if AcpiGbl_EnableAmlDebugObject is set, or * if ACPI_LV_DEBUG_OBJECT is set in the AcpiDbgLevel. Thus, in the normal * operational case, stores to the debug object are ignored but can be easily * enabled if necessary. * ******************************************************************************/ void AcpiExDoDebugObject ( ACPI_OPERAND_OBJECT *SourceDesc, UINT32 Level, UINT32 Index) { UINT32 i; ACPI_FUNCTION_TRACE_PTR (ExDoDebugObject, SourceDesc); /* Output must be enabled via the DebugObject global or the DbgLevel */ if (!AcpiGbl_EnableAmlDebugObject && !(AcpiDbgLevel & ACPI_LV_DEBUG_OBJECT)) { return_VOID; } /* * Print line header as long as we are not in the middle of an * object display */ if (!((Level > 0) && Index == 0)) { AcpiOsPrintf ("[ACPI Debug] %*s", Level, " "); } /* Display the index for package output only */ if (Index > 0) { AcpiOsPrintf ("(%.2u) ", Index-1); } if (!SourceDesc) { AcpiOsPrintf ("[Null Object]\n"); return_VOID; } if (ACPI_GET_DESCRIPTOR_TYPE (SourceDesc) == ACPI_DESC_TYPE_OPERAND) { AcpiOsPrintf ("%s ", AcpiUtGetObjectTypeName (SourceDesc)); if (!AcpiUtValidInternalObject (SourceDesc)) { AcpiOsPrintf ("%p, Invalid Internal Object!\n", SourceDesc); return_VOID; } } else if (ACPI_GET_DESCRIPTOR_TYPE (SourceDesc) == ACPI_DESC_TYPE_NAMED) { AcpiOsPrintf ("%s: %p\n", AcpiUtGetTypeName (((ACPI_NAMESPACE_NODE *) SourceDesc)->Type), SourceDesc); return_VOID; } else { return_VOID; } /* SourceDesc is of type ACPI_DESC_TYPE_OPERAND */ switch (SourceDesc->Common.Type) { case ACPI_TYPE_INTEGER: /* Output correct integer width */ if (AcpiGbl_IntegerByteWidth == 4) { AcpiOsPrintf ("0x%8.8X\n", (UINT32) SourceDesc->Integer.Value); } else { AcpiOsPrintf ("0x%8.8X%8.8X\n", ACPI_FORMAT_UINT64 (SourceDesc->Integer.Value)); } break; case ACPI_TYPE_BUFFER: AcpiOsPrintf ("[0x%.2X]\n", (UINT32) SourceDesc->Buffer.Length); AcpiUtDumpBuffer (SourceDesc->Buffer.Pointer, (SourceDesc->Buffer.Length < 256) ? SourceDesc->Buffer.Length : 256, DB_BYTE_DISPLAY, 0); break; case ACPI_TYPE_STRING: AcpiOsPrintf ("[0x%.2X] \"%s\"\n", SourceDesc->String.Length, SourceDesc->String.Pointer); break; case ACPI_TYPE_PACKAGE: AcpiOsPrintf ("[Contains 0x%.2X Elements]\n", SourceDesc->Package.Count); /* Output the entire contents of the package */ for (i = 0; i < SourceDesc->Package.Count; i++) { AcpiExDoDebugObject (SourceDesc->Package.Elements[i], Level+4, i+1); } break; case ACPI_TYPE_LOCAL_REFERENCE: AcpiOsPrintf ("[%s] ", AcpiUtGetReferenceName (SourceDesc)); /* Decode the reference */ switch (SourceDesc->Reference.Class) { case ACPI_REFCLASS_INDEX: AcpiOsPrintf ("0x%X\n", SourceDesc->Reference.Value); break; case ACPI_REFCLASS_TABLE: /* Case for DdbHandle */ AcpiOsPrintf ("Table Index 0x%X\n", SourceDesc->Reference.Value); return_VOID; default: break; } AcpiOsPrintf (" "); /* Check for valid node first, then valid object */ if (SourceDesc->Reference.Node) { if (ACPI_GET_DESCRIPTOR_TYPE (SourceDesc->Reference.Node) != ACPI_DESC_TYPE_NAMED) { AcpiOsPrintf (" %p - Not a valid namespace node\n", SourceDesc->Reference.Node); } else { AcpiOsPrintf ("Node %p [%4.4s] ", SourceDesc->Reference.Node, (SourceDesc->Reference.Node)->Name.Ascii); switch ((SourceDesc->Reference.Node)->Type) { /* These types have no attached object */ case ACPI_TYPE_DEVICE: AcpiOsPrintf ("Device\n"); break; case ACPI_TYPE_THERMAL: AcpiOsPrintf ("Thermal Zone\n"); break; default: AcpiExDoDebugObject ((SourceDesc->Reference.Node)->Object, Level+4, 0); break; } } } else if (SourceDesc->Reference.Object) { if (ACPI_GET_DESCRIPTOR_TYPE (SourceDesc->Reference.Object) == ACPI_DESC_TYPE_NAMED) { AcpiExDoDebugObject (((ACPI_NAMESPACE_NODE *) SourceDesc->Reference.Object)->Object, Level+4, 0); } else { AcpiExDoDebugObject (SourceDesc->Reference.Object, Level+4, 0); } } break; default: AcpiOsPrintf ("%p\n", SourceDesc); break; } ACPI_DEBUG_PRINT_RAW ((ACPI_DB_EXEC, "\n")); return_VOID; } #endif src/acpica/source/components/executer/exdump.c000066400000000000000000001264311231470457100220570ustar00rootroot00000000000000/****************************************************************************** * * Module Name: exdump - Interpreter debug output routines * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #define __EXDUMP_C__ #include "acpi.h" #include "accommon.h" #include "acinterp.h" #include "amlcode.h" #include "acnamesp.h" #define _COMPONENT ACPI_EXECUTER ACPI_MODULE_NAME ("exdump") /* * The following routines are used for debug output only */ #if defined(ACPI_DEBUG_OUTPUT) || defined(ACPI_DEBUGGER) /* Local prototypes */ static void AcpiExOutString ( char *Title, char *Value); static void AcpiExOutPointer ( char *Title, void *Value); static void AcpiExDumpObject ( ACPI_OPERAND_OBJECT *ObjDesc, ACPI_EXDUMP_INFO *Info); static void AcpiExDumpReferenceObj ( ACPI_OPERAND_OBJECT *ObjDesc); static void AcpiExDumpPackageObj ( ACPI_OPERAND_OBJECT *ObjDesc, UINT32 Level, UINT32 Index); /******************************************************************************* * * Object Descriptor info tables * * Note: The first table entry must be an INIT opcode and must contain * the table length (number of table entries) * ******************************************************************************/ static ACPI_EXDUMP_INFO AcpiExDumpInteger[2] = { {ACPI_EXD_INIT, ACPI_EXD_TABLE_SIZE (AcpiExDumpInteger), NULL}, {ACPI_EXD_UINT64, ACPI_EXD_OFFSET (Integer.Value), "Value"} }; static ACPI_EXDUMP_INFO AcpiExDumpString[4] = { {ACPI_EXD_INIT, ACPI_EXD_TABLE_SIZE (AcpiExDumpString), NULL}, {ACPI_EXD_UINT32, ACPI_EXD_OFFSET (String.Length), "Length"}, {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (String.Pointer), "Pointer"}, {ACPI_EXD_STRING, 0, NULL} }; static ACPI_EXDUMP_INFO AcpiExDumpBuffer[5] = { {ACPI_EXD_INIT, ACPI_EXD_TABLE_SIZE (AcpiExDumpBuffer), NULL}, {ACPI_EXD_UINT32, ACPI_EXD_OFFSET (Buffer.Length), "Length"}, {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (Buffer.Pointer), "Pointer"}, {ACPI_EXD_NODE, ACPI_EXD_OFFSET (Buffer.Node), "Parent Node"}, {ACPI_EXD_BUFFER, 0, NULL} }; static ACPI_EXDUMP_INFO AcpiExDumpPackage[6] = { {ACPI_EXD_INIT, ACPI_EXD_TABLE_SIZE (AcpiExDumpPackage), NULL}, {ACPI_EXD_NODE, ACPI_EXD_OFFSET (Package.Node), "Parent Node"}, {ACPI_EXD_UINT8, ACPI_EXD_OFFSET (Package.Flags), "Flags"}, {ACPI_EXD_UINT32, ACPI_EXD_OFFSET (Package.Count), "Elements"}, {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (Package.Elements), "Element List"}, {ACPI_EXD_PACKAGE, 0, NULL} }; static ACPI_EXDUMP_INFO AcpiExDumpDevice[4] = { {ACPI_EXD_INIT, ACPI_EXD_TABLE_SIZE (AcpiExDumpDevice), NULL}, {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (Device.NotifyList[0]), "System Notify"}, {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (Device.NotifyList[1]), "Device Notify"}, {ACPI_EXD_HDLR_LIST,ACPI_EXD_OFFSET (Device.Handler), "Handler"} }; static ACPI_EXDUMP_INFO AcpiExDumpEvent[2] = { {ACPI_EXD_INIT, ACPI_EXD_TABLE_SIZE (AcpiExDumpEvent), NULL}, {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (Event.OsSemaphore), "OsSemaphore"} }; static ACPI_EXDUMP_INFO AcpiExDumpMethod[9] = { {ACPI_EXD_INIT, ACPI_EXD_TABLE_SIZE (AcpiExDumpMethod), NULL}, {ACPI_EXD_UINT8, ACPI_EXD_OFFSET (Method.InfoFlags), "Info Flags"}, {ACPI_EXD_UINT8, ACPI_EXD_OFFSET (Method.ParamCount), "Parameter Count"}, {ACPI_EXD_UINT8, ACPI_EXD_OFFSET (Method.SyncLevel), "Sync Level"}, {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (Method.Mutex), "Mutex"}, {ACPI_EXD_UINT8, ACPI_EXD_OFFSET (Method.OwnerId), "Owner Id"}, {ACPI_EXD_UINT8, ACPI_EXD_OFFSET (Method.ThreadCount), "Thread Count"}, {ACPI_EXD_UINT32, ACPI_EXD_OFFSET (Method.AmlLength), "Aml Length"}, {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (Method.AmlStart), "Aml Start"} }; static ACPI_EXDUMP_INFO AcpiExDumpMutex[6] = { {ACPI_EXD_INIT, ACPI_EXD_TABLE_SIZE (AcpiExDumpMutex), NULL}, {ACPI_EXD_UINT8, ACPI_EXD_OFFSET (Mutex.SyncLevel), "Sync Level"}, {ACPI_EXD_UINT8, ACPI_EXD_OFFSET (Mutex.OriginalSyncLevel), "Original Sync Level"}, {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (Mutex.OwnerThread), "Owner Thread"}, {ACPI_EXD_UINT16, ACPI_EXD_OFFSET (Mutex.AcquisitionDepth), "Acquire Depth"}, {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (Mutex.OsMutex), "OsMutex"} }; static ACPI_EXDUMP_INFO AcpiExDumpRegion[8] = { {ACPI_EXD_INIT, ACPI_EXD_TABLE_SIZE (AcpiExDumpRegion), NULL}, {ACPI_EXD_UINT8, ACPI_EXD_OFFSET (Region.SpaceId), "Space Id"}, {ACPI_EXD_UINT8, ACPI_EXD_OFFSET (Region.Flags), "Flags"}, {ACPI_EXD_NODE, ACPI_EXD_OFFSET (Region.Node), "Parent Node"}, {ACPI_EXD_ADDRESS, ACPI_EXD_OFFSET (Region.Address), "Address"}, {ACPI_EXD_UINT32, ACPI_EXD_OFFSET (Region.Length), "Length"}, {ACPI_EXD_HDLR_LIST,ACPI_EXD_OFFSET (Region.Handler), "Handler"}, {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (Region.Next), "Next"} }; static ACPI_EXDUMP_INFO AcpiExDumpPower[6] = { {ACPI_EXD_INIT, ACPI_EXD_TABLE_SIZE (AcpiExDumpPower), NULL}, {ACPI_EXD_UINT32, ACPI_EXD_OFFSET (PowerResource.SystemLevel), "System Level"}, {ACPI_EXD_UINT32, ACPI_EXD_OFFSET (PowerResource.ResourceOrder), "Resource Order"}, {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (PowerResource.NotifyList[0]), "System Notify"}, {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (PowerResource.NotifyList[1]), "Device Notify"}, {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (PowerResource.Handler), "Handler"} }; static ACPI_EXDUMP_INFO AcpiExDumpProcessor[7] = { {ACPI_EXD_INIT, ACPI_EXD_TABLE_SIZE (AcpiExDumpProcessor), NULL}, {ACPI_EXD_UINT8, ACPI_EXD_OFFSET (Processor.ProcId), "Processor ID"}, {ACPI_EXD_UINT8 , ACPI_EXD_OFFSET (Processor.Length), "Length"}, {ACPI_EXD_ADDRESS, ACPI_EXD_OFFSET (Processor.Address), "Address"}, {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (Processor.NotifyList[0]), "System Notify"}, {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (Processor.NotifyList[1]), "Device Notify"}, {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (Processor.Handler), "Handler"} }; static ACPI_EXDUMP_INFO AcpiExDumpThermal[4] = { {ACPI_EXD_INIT, ACPI_EXD_TABLE_SIZE (AcpiExDumpThermal), NULL}, {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (ThermalZone.NotifyList[0]), "System Notify"}, {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (ThermalZone.NotifyList[1]), "Device Notify"}, {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (ThermalZone.Handler), "Handler"} }; static ACPI_EXDUMP_INFO AcpiExDumpBufferField[3] = { {ACPI_EXD_INIT, ACPI_EXD_TABLE_SIZE (AcpiExDumpBufferField), NULL}, {ACPI_EXD_FIELD, 0, NULL}, {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (BufferField.BufferObj), "Buffer Object"} }; static ACPI_EXDUMP_INFO AcpiExDumpRegionField[5] = { {ACPI_EXD_INIT, ACPI_EXD_TABLE_SIZE (AcpiExDumpRegionField), NULL}, {ACPI_EXD_FIELD, 0, NULL}, {ACPI_EXD_UINT8, ACPI_EXD_OFFSET (Field.AccessLength), "AccessLength"}, {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (Field.RegionObj), "Region Object"}, {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (Field.ResourceBuffer), "ResourceBuffer"} }; static ACPI_EXDUMP_INFO AcpiExDumpBankField[5] = { {ACPI_EXD_INIT, ACPI_EXD_TABLE_SIZE (AcpiExDumpBankField), NULL}, {ACPI_EXD_FIELD, 0, NULL}, {ACPI_EXD_UINT32, ACPI_EXD_OFFSET (BankField.Value), "Value"}, {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (BankField.RegionObj), "Region Object"}, {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (BankField.BankObj), "Bank Object"} }; static ACPI_EXDUMP_INFO AcpiExDumpIndexField[5] = { {ACPI_EXD_INIT, ACPI_EXD_TABLE_SIZE (AcpiExDumpBankField), NULL}, {ACPI_EXD_FIELD, 0, NULL}, {ACPI_EXD_UINT32, ACPI_EXD_OFFSET (IndexField.Value), "Value"}, {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (IndexField.IndexObj), "Index Object"}, {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (IndexField.DataObj), "Data Object"} }; static ACPI_EXDUMP_INFO AcpiExDumpReference[8] = { {ACPI_EXD_INIT, ACPI_EXD_TABLE_SIZE (AcpiExDumpReference), NULL}, {ACPI_EXD_UINT8, ACPI_EXD_OFFSET (Reference.Class), "Class"}, {ACPI_EXD_UINT8, ACPI_EXD_OFFSET (Reference.TargetType), "Target Type"}, {ACPI_EXD_UINT32, ACPI_EXD_OFFSET (Reference.Value), "Value"}, {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (Reference.Object), "Object Desc"}, {ACPI_EXD_NODE, ACPI_EXD_OFFSET (Reference.Node), "Node"}, {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (Reference.Where), "Where"}, {ACPI_EXD_REFERENCE,0, NULL} }; static ACPI_EXDUMP_INFO AcpiExDumpAddressHandler[6] = { {ACPI_EXD_INIT, ACPI_EXD_TABLE_SIZE (AcpiExDumpAddressHandler), NULL}, {ACPI_EXD_UINT8, ACPI_EXD_OFFSET (AddressSpace.SpaceId), "Space Id"}, {ACPI_EXD_HDLR_LIST,ACPI_EXD_OFFSET (AddressSpace.Next), "Next"}, {ACPI_EXD_RGN_LIST, ACPI_EXD_OFFSET (AddressSpace.RegionList), "Region List"}, {ACPI_EXD_NODE, ACPI_EXD_OFFSET (AddressSpace.Node), "Node"}, {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (AddressSpace.Context), "Context"} }; static ACPI_EXDUMP_INFO AcpiExDumpNotify[7] = { {ACPI_EXD_INIT, ACPI_EXD_TABLE_SIZE (AcpiExDumpNotify), NULL}, {ACPI_EXD_NODE, ACPI_EXD_OFFSET (Notify.Node), "Node"}, {ACPI_EXD_UINT32, ACPI_EXD_OFFSET (Notify.HandlerType), "Handler Type"}, {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (Notify.Handler), "Handler"}, {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (Notify.Context), "Context"}, {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (Notify.Next[0]), "Next System Notify"}, {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (Notify.Next[1]), "Next Device Notify"} }; static ACPI_EXDUMP_INFO AcpiExDumpExtra[6] = { {ACPI_EXD_INIT, ACPI_EXD_TABLE_SIZE (AcpiExDumpExtra), NULL}, {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (Extra.Method_REG), "_REG Method"}, {ACPI_EXD_NODE, ACPI_EXD_OFFSET (Extra.ScopeNode), "Scope Node"}, {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (Extra.RegionContext), "Region Context"}, {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (Extra.AmlStart), "Aml Start"}, {ACPI_EXD_UINT32, ACPI_EXD_OFFSET (Extra.AmlLength), "Aml Length"} }; static ACPI_EXDUMP_INFO AcpiExDumpData[3] = { {ACPI_EXD_INIT, ACPI_EXD_TABLE_SIZE (AcpiExDumpData), NULL}, {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (Data.Handler), "Handler"}, {ACPI_EXD_POINTER, ACPI_EXD_OFFSET (Data.Pointer), "Raw Data"} }; /* Miscellaneous tables */ static ACPI_EXDUMP_INFO AcpiExDumpCommon[5] = { {ACPI_EXD_INIT, ACPI_EXD_TABLE_SIZE (AcpiExDumpCommon), NULL}, {ACPI_EXD_TYPE , 0, NULL}, {ACPI_EXD_UINT16, ACPI_EXD_OFFSET (Common.ReferenceCount), "Reference Count"}, {ACPI_EXD_UINT8, ACPI_EXD_OFFSET (Common.Flags), "Flags"}, {ACPI_EXD_LIST, ACPI_EXD_OFFSET (Common.NextObject), "Object List"} }; static ACPI_EXDUMP_INFO AcpiExDumpFieldCommon[7] = { {ACPI_EXD_INIT, ACPI_EXD_TABLE_SIZE (AcpiExDumpFieldCommon), NULL}, {ACPI_EXD_UINT8, ACPI_EXD_OFFSET (CommonField.FieldFlags), "Field Flags"}, {ACPI_EXD_UINT8, ACPI_EXD_OFFSET (CommonField.AccessByteWidth), "Access Byte Width"}, {ACPI_EXD_UINT32, ACPI_EXD_OFFSET (CommonField.BitLength), "Bit Length"}, {ACPI_EXD_UINT8, ACPI_EXD_OFFSET (CommonField.StartFieldBitOffset),"Field Bit Offset"}, {ACPI_EXD_UINT32, ACPI_EXD_OFFSET (CommonField.BaseByteOffset), "Base Byte Offset"}, {ACPI_EXD_NODE, ACPI_EXD_OFFSET (CommonField.Node), "Parent Node"} }; static ACPI_EXDUMP_INFO AcpiExDumpNode[7] = { {ACPI_EXD_INIT, ACPI_EXD_TABLE_SIZE (AcpiExDumpNode), NULL}, {ACPI_EXD_UINT8, ACPI_EXD_NSOFFSET (Flags), "Flags"}, {ACPI_EXD_UINT8, ACPI_EXD_NSOFFSET (OwnerId), "Owner Id"}, {ACPI_EXD_LIST, ACPI_EXD_NSOFFSET (Object), "Object List"}, {ACPI_EXD_NODE, ACPI_EXD_NSOFFSET (Parent), "Parent"}, {ACPI_EXD_NODE, ACPI_EXD_NSOFFSET (Child), "Child"}, {ACPI_EXD_NODE, ACPI_EXD_NSOFFSET (Peer), "Peer"} }; /* Dispatch table, indexed by object type */ static ACPI_EXDUMP_INFO *AcpiExDumpInfo[] = { NULL, AcpiExDumpInteger, AcpiExDumpString, AcpiExDumpBuffer, AcpiExDumpPackage, NULL, AcpiExDumpDevice, AcpiExDumpEvent, AcpiExDumpMethod, AcpiExDumpMutex, AcpiExDumpRegion, AcpiExDumpPower, AcpiExDumpProcessor, AcpiExDumpThermal, AcpiExDumpBufferField, NULL, NULL, AcpiExDumpRegionField, AcpiExDumpBankField, AcpiExDumpIndexField, AcpiExDumpReference, NULL, NULL, AcpiExDumpNotify, AcpiExDumpAddressHandler, NULL, NULL, NULL, AcpiExDumpExtra, AcpiExDumpData }; /******************************************************************************* * * FUNCTION: AcpiExDumpObject * * PARAMETERS: ObjDesc - Descriptor to dump * Info - Info table corresponding to this object * type * * RETURN: None * * DESCRIPTION: Walk the info table for this object * ******************************************************************************/ static void AcpiExDumpObject ( ACPI_OPERAND_OBJECT *ObjDesc, ACPI_EXDUMP_INFO *Info) { UINT8 *Target; char *Name; const char *ReferenceName; UINT8 Count; ACPI_OPERAND_OBJECT *Start; ACPI_OPERAND_OBJECT *Data = NULL; ACPI_OPERAND_OBJECT *Next; ACPI_NAMESPACE_NODE *Node; if (!Info) { AcpiOsPrintf ( "ExDumpObject: Display not implemented for object type %s\n", AcpiUtGetObjectTypeName (ObjDesc)); return; } /* First table entry must contain the table length (# of table entries) */ Count = Info->Offset; while (Count) { Target = ACPI_ADD_PTR (UINT8, ObjDesc, Info->Offset); Name = Info->Name; switch (Info->Opcode) { case ACPI_EXD_INIT: break; case ACPI_EXD_TYPE: AcpiOsPrintf ("%20s : %2.2X [%s]\n", "Type", ObjDesc->Common.Type, AcpiUtGetObjectTypeName (ObjDesc)); break; case ACPI_EXD_UINT8: AcpiOsPrintf ("%20s : %2.2X\n", Name, *Target); break; case ACPI_EXD_UINT16: AcpiOsPrintf ("%20s : %4.4X\n", Name, ACPI_GET16 (Target)); break; case ACPI_EXD_UINT32: AcpiOsPrintf ("%20s : %8.8X\n", Name, ACPI_GET32 (Target)); break; case ACPI_EXD_UINT64: AcpiOsPrintf ("%20s : %8.8X%8.8X\n", "Value", ACPI_FORMAT_UINT64 (ACPI_GET64 (Target))); break; case ACPI_EXD_POINTER: case ACPI_EXD_ADDRESS: AcpiExOutPointer (Name, *ACPI_CAST_PTR (void *, Target)); break; case ACPI_EXD_STRING: AcpiUtPrintString (ObjDesc->String.Pointer, ACPI_UINT8_MAX); AcpiOsPrintf ("\n"); break; case ACPI_EXD_BUFFER: ACPI_DUMP_BUFFER (ObjDesc->Buffer.Pointer, ObjDesc->Buffer.Length); break; case ACPI_EXD_PACKAGE: /* Dump the package contents */ AcpiOsPrintf ("\nPackage Contents:\n"); AcpiExDumpPackageObj (ObjDesc, 0, 0); break; case ACPI_EXD_FIELD: AcpiExDumpObject (ObjDesc, AcpiExDumpFieldCommon); break; case ACPI_EXD_REFERENCE: ReferenceName = AcpiUtGetReferenceName (ObjDesc); AcpiExOutString ("Class Name", ACPI_CAST_PTR (char, ReferenceName)); AcpiExDumpReferenceObj (ObjDesc); break; case ACPI_EXD_LIST: Start = *ACPI_CAST_PTR (void *, Target); Next = Start; AcpiOsPrintf ("%20s : %p", Name, Next); if (Next) { AcpiOsPrintf ("(%s %2.2X)", AcpiUtGetObjectTypeName (Next), Next->Common.Type); while (Next->Common.NextObject) { if ((Next->Common.Type == ACPI_TYPE_LOCAL_DATA) && !Data) { Data = Next; } Next = Next->Common.NextObject; AcpiOsPrintf ("->%p(%s %2.2X)", Next, AcpiUtGetObjectTypeName (Next), Next->Common.Type); if ((Next == Start) || (Next == Data)) { AcpiOsPrintf ("\n**** Error: Object list appears to be circular linked"); break; } } } AcpiOsPrintf ("\n", Next); break; case ACPI_EXD_HDLR_LIST: Start = *ACPI_CAST_PTR (void *, Target); Next = Start; AcpiOsPrintf ("%20s : %p", Name, Next); if (Next) { AcpiOsPrintf ("(%s %2.2X)", AcpiUtGetObjectTypeName (Next), Next->Common.Type); while (Next->AddressSpace.Next) { if ((Next->Common.Type == ACPI_TYPE_LOCAL_DATA) && !Data) { Data = Next; } Next = Next->AddressSpace.Next; AcpiOsPrintf ("->%p(%s %2.2X)", Next, AcpiUtGetObjectTypeName (Next), Next->Common.Type); if ((Next == Start) || (Next == Data)) { AcpiOsPrintf ("\n**** Error: Handler list appears to be circular linked"); break; } } } AcpiOsPrintf ("\n", Next); break; case ACPI_EXD_RGN_LIST: Start = *ACPI_CAST_PTR (void *, Target); Next = Start; AcpiOsPrintf ("%20s : %p", Name, Next); if (Next) { AcpiOsPrintf ("(%s %2.2X)", AcpiUtGetObjectTypeName (Next), Next->Common.Type); while (Next->Region.Next) { if ((Next->Common.Type == ACPI_TYPE_LOCAL_DATA) && !Data) { Data = Next; } Next = Next->Region.Next; AcpiOsPrintf ("->%p(%s %2.2X)", Next, AcpiUtGetObjectTypeName (Next), Next->Common.Type); if ((Next == Start) || (Next == Data)) { AcpiOsPrintf ("\n**** Error: Region list appears to be circular linked"); break; } } } AcpiOsPrintf ("\n", Next); break; case ACPI_EXD_NODE: Node = *ACPI_CAST_PTR (ACPI_NAMESPACE_NODE *, Target); AcpiOsPrintf ("%20s : %p", Name, Node); if (Node) { AcpiOsPrintf (" [%4.4s]", Node->Name.Ascii); } AcpiOsPrintf ("\n"); break; default: AcpiOsPrintf ("**** Invalid table opcode [%X] ****\n", Info->Opcode); return; } Info++; Count--; } } /******************************************************************************* * * FUNCTION: AcpiExDumpOperand * * PARAMETERS: *ObjDesc - Pointer to entry to be dumped * Depth - Current nesting depth * * RETURN: None * * DESCRIPTION: Dump an operand object * ******************************************************************************/ void AcpiExDumpOperand ( ACPI_OPERAND_OBJECT *ObjDesc, UINT32 Depth) { UINT32 Length; UINT32 Index; ACPI_FUNCTION_NAME (ExDumpOperand) /* Check if debug output enabled */ if (!ACPI_IS_DEBUG_ENABLED (ACPI_LV_EXEC, _COMPONENT)) { return; } if (!ObjDesc) { /* This could be a null element of a package */ ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Null Object Descriptor\n")); return; } if (ACPI_GET_DESCRIPTOR_TYPE (ObjDesc) == ACPI_DESC_TYPE_NAMED) { ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "%p Namespace Node: ", ObjDesc)); ACPI_DUMP_ENTRY (ObjDesc, ACPI_LV_EXEC); return; } if (ACPI_GET_DESCRIPTOR_TYPE (ObjDesc) != ACPI_DESC_TYPE_OPERAND) { ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "%p is not a node or operand object: [%s]\n", ObjDesc, AcpiUtGetDescriptorName (ObjDesc))); ACPI_DUMP_BUFFER (ObjDesc, sizeof (ACPI_OPERAND_OBJECT)); return; } /* ObjDesc is a valid object */ if (Depth > 0) { ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "%*s[%u] %p ", Depth, " ", Depth, ObjDesc)); } else { ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "%p ", ObjDesc)); } /* Decode object type */ switch (ObjDesc->Common.Type) { case ACPI_TYPE_LOCAL_REFERENCE: AcpiOsPrintf ("Reference: [%s] ", AcpiUtGetReferenceName (ObjDesc)); switch (ObjDesc->Reference.Class) { case ACPI_REFCLASS_DEBUG: AcpiOsPrintf ("\n"); break; case ACPI_REFCLASS_INDEX: AcpiOsPrintf ("%p\n", ObjDesc->Reference.Object); break; case ACPI_REFCLASS_TABLE: AcpiOsPrintf ("Table Index %X\n", ObjDesc->Reference.Value); break; case ACPI_REFCLASS_REFOF: AcpiOsPrintf ("%p [%s]\n", ObjDesc->Reference.Object, AcpiUtGetTypeName (((ACPI_OPERAND_OBJECT *) ObjDesc->Reference.Object)->Common.Type)); break; case ACPI_REFCLASS_NAME: AcpiOsPrintf ("- [%4.4s]\n", ObjDesc->Reference.Node->Name.Ascii); break; case ACPI_REFCLASS_ARG: case ACPI_REFCLASS_LOCAL: AcpiOsPrintf ("%X\n", ObjDesc->Reference.Value); break; default: /* Unknown reference class */ AcpiOsPrintf ("%2.2X\n", ObjDesc->Reference.Class); break; } break; case ACPI_TYPE_BUFFER: AcpiOsPrintf ("Buffer length %.2X @ %p\n", ObjDesc->Buffer.Length, ObjDesc->Buffer.Pointer); /* Debug only -- dump the buffer contents */ if (ObjDesc->Buffer.Pointer) { Length = ObjDesc->Buffer.Length; if (Length > 128) { Length = 128; } AcpiOsPrintf ("Buffer Contents: (displaying length 0x%.2X)\n", Length); ACPI_DUMP_BUFFER (ObjDesc->Buffer.Pointer, Length); } break; case ACPI_TYPE_INTEGER: AcpiOsPrintf ("Integer %8.8X%8.8X\n", ACPI_FORMAT_UINT64 (ObjDesc->Integer.Value)); break; case ACPI_TYPE_PACKAGE: AcpiOsPrintf ("Package [Len %X] ElementArray %p\n", ObjDesc->Package.Count, ObjDesc->Package.Elements); /* * If elements exist, package element pointer is valid, * and debug_level exceeds 1, dump package's elements. */ if (ObjDesc->Package.Count && ObjDesc->Package.Elements && AcpiDbgLevel > 1) { for (Index = 0; Index < ObjDesc->Package.Count; Index++) { AcpiExDumpOperand (ObjDesc->Package.Elements[Index], Depth+1); } } break; case ACPI_TYPE_REGION: AcpiOsPrintf ("Region %s (%X)", AcpiUtGetRegionName (ObjDesc->Region.SpaceId), ObjDesc->Region.SpaceId); /* * If the address and length have not been evaluated, * don't print them. */ if (!(ObjDesc->Region.Flags & AOPOBJ_DATA_VALID)) { AcpiOsPrintf ("\n"); } else { AcpiOsPrintf (" base %8.8X%8.8X Length %X\n", ACPI_FORMAT_NATIVE_UINT (ObjDesc->Region.Address), ObjDesc->Region.Length); } break; case ACPI_TYPE_STRING: AcpiOsPrintf ("String length %X @ %p ", ObjDesc->String.Length, ObjDesc->String.Pointer); AcpiUtPrintString (ObjDesc->String.Pointer, ACPI_UINT8_MAX); AcpiOsPrintf ("\n"); break; case ACPI_TYPE_LOCAL_BANK_FIELD: AcpiOsPrintf ("BankField\n"); break; case ACPI_TYPE_LOCAL_REGION_FIELD: AcpiOsPrintf ("RegionField: Bits=%X AccWidth=%X Lock=%X Update=%X at " "byte=%X bit=%X of below:\n", ObjDesc->Field.BitLength, ObjDesc->Field.AccessByteWidth, ObjDesc->Field.FieldFlags & AML_FIELD_LOCK_RULE_MASK, ObjDesc->Field.FieldFlags & AML_FIELD_UPDATE_RULE_MASK, ObjDesc->Field.BaseByteOffset, ObjDesc->Field.StartFieldBitOffset); AcpiExDumpOperand (ObjDesc->Field.RegionObj, Depth+1); break; case ACPI_TYPE_LOCAL_INDEX_FIELD: AcpiOsPrintf ("IndexField\n"); break; case ACPI_TYPE_BUFFER_FIELD: AcpiOsPrintf ("BufferField: %X bits at byte %X bit %X of\n", ObjDesc->BufferField.BitLength, ObjDesc->BufferField.BaseByteOffset, ObjDesc->BufferField.StartFieldBitOffset); if (!ObjDesc->BufferField.BufferObj) { ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "*NULL*\n")); } else if ((ObjDesc->BufferField.BufferObj)->Common.Type != ACPI_TYPE_BUFFER) { AcpiOsPrintf ("*not a Buffer*\n"); } else { AcpiExDumpOperand (ObjDesc->BufferField.BufferObj, Depth+1); } break; case ACPI_TYPE_EVENT: AcpiOsPrintf ("Event\n"); break; case ACPI_TYPE_METHOD: AcpiOsPrintf ("Method(%X) @ %p:%X\n", ObjDesc->Method.ParamCount, ObjDesc->Method.AmlStart, ObjDesc->Method.AmlLength); break; case ACPI_TYPE_MUTEX: AcpiOsPrintf ("Mutex\n"); break; case ACPI_TYPE_DEVICE: AcpiOsPrintf ("Device\n"); break; case ACPI_TYPE_POWER: AcpiOsPrintf ("Power\n"); break; case ACPI_TYPE_PROCESSOR: AcpiOsPrintf ("Processor\n"); break; case ACPI_TYPE_THERMAL: AcpiOsPrintf ("Thermal\n"); break; default: /* Unknown Type */ AcpiOsPrintf ("Unknown Type %X\n", ObjDesc->Common.Type); break; } return; } /******************************************************************************* * * FUNCTION: AcpiExDumpOperands * * PARAMETERS: Operands - A list of Operand objects * OpcodeName - AML opcode name * NumOperands - Operand count for this opcode * * DESCRIPTION: Dump the operands associated with the opcode * ******************************************************************************/ void AcpiExDumpOperands ( ACPI_OPERAND_OBJECT **Operands, const char *OpcodeName, UINT32 NumOperands) { ACPI_FUNCTION_NAME (ExDumpOperands); if (!OpcodeName) { OpcodeName = "UNKNOWN"; } ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "**** Start operand dump for opcode [%s], %u operands\n", OpcodeName, NumOperands)); if (NumOperands == 0) { NumOperands = 1; } /* Dump the individual operands */ while (NumOperands) { AcpiExDumpOperand (*Operands, 0); Operands++; NumOperands--; } ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "**** End operand dump for [%s]\n", OpcodeName)); return; } /******************************************************************************* * * FUNCTION: AcpiExOut* functions * * PARAMETERS: Title - Descriptive text * Value - Value to be displayed * * DESCRIPTION: Object dump output formatting functions. These functions * reduce the number of format strings required and keeps them * all in one place for easy modification. * ******************************************************************************/ static void AcpiExOutString ( char *Title, char *Value) { AcpiOsPrintf ("%20s : %s\n", Title, Value); } static void AcpiExOutPointer ( char *Title, void *Value) { AcpiOsPrintf ("%20s : %p\n", Title, Value); } /******************************************************************************* * * FUNCTION: AcpiExDumpNamespaceNode * * PARAMETERS: Node - Descriptor to dump * Flags - Force display if TRUE * * DESCRIPTION: Dumps the members of the given.Node * ******************************************************************************/ void AcpiExDumpNamespaceNode ( ACPI_NAMESPACE_NODE *Node, UINT32 Flags) { ACPI_FUNCTION_ENTRY (); if (!Flags) { /* Check if debug output enabled */ if (!ACPI_IS_DEBUG_ENABLED (ACPI_LV_OBJECTS, _COMPONENT)) { return; } } AcpiOsPrintf ("%20s : %4.4s\n", "Name", AcpiUtGetNodeName (Node)); AcpiOsPrintf ("%20s : %2.2X [%s]\n", "Type", Node->Type, AcpiUtGetTypeName (Node->Type)); AcpiExDumpObject (ACPI_CAST_PTR (ACPI_OPERAND_OBJECT, Node), AcpiExDumpNode); } /******************************************************************************* * * FUNCTION: AcpiExDumpReferenceObj * * PARAMETERS: Object - Descriptor to dump * * DESCRIPTION: Dumps a reference object * ******************************************************************************/ static void AcpiExDumpReferenceObj ( ACPI_OPERAND_OBJECT *ObjDesc) { ACPI_BUFFER RetBuf; ACPI_STATUS Status; RetBuf.Length = ACPI_ALLOCATE_LOCAL_BUFFER; if (ObjDesc->Reference.Class == ACPI_REFCLASS_NAME) { AcpiOsPrintf (" %p ", ObjDesc->Reference.Node); Status = AcpiNsHandleToPathname (ObjDesc->Reference.Node, &RetBuf); if (ACPI_FAILURE (Status)) { AcpiOsPrintf (" Could not convert name to pathname\n"); } else { AcpiOsPrintf ("%s\n", (char *) RetBuf.Pointer); ACPI_FREE (RetBuf.Pointer); } } else if (ObjDesc->Reference.Object) { if (ACPI_GET_DESCRIPTOR_TYPE (ObjDesc) == ACPI_DESC_TYPE_OPERAND) { AcpiOsPrintf (" Target: %p", ObjDesc->Reference.Object); if (ObjDesc->Reference.Class == ACPI_REFCLASS_TABLE) { AcpiOsPrintf (" Table Index: %X\n", ObjDesc->Reference.Value); } else { AcpiOsPrintf (" Target: %p [%s]\n", ObjDesc->Reference.Object, AcpiUtGetTypeName (((ACPI_OPERAND_OBJECT *) ObjDesc->Reference.Object)->Common.Type)); } } else { AcpiOsPrintf (" Target: %p\n", ObjDesc->Reference.Object); } } } /******************************************************************************* * * FUNCTION: AcpiExDumpPackageObj * * PARAMETERS: ObjDesc - Descriptor to dump * Level - Indentation Level * Index - Package index for this object * * DESCRIPTION: Dumps the elements of the package * ******************************************************************************/ static void AcpiExDumpPackageObj ( ACPI_OPERAND_OBJECT *ObjDesc, UINT32 Level, UINT32 Index) { UINT32 i; /* Indentation and index output */ if (Level > 0) { for (i = 0; i < Level; i++) { AcpiOsPrintf (" "); } AcpiOsPrintf ("[%.2d] ", Index); } AcpiOsPrintf ("%p ", ObjDesc); /* Null package elements are allowed */ if (!ObjDesc) { AcpiOsPrintf ("[Null Object]\n"); return; } /* Packages may only contain a few object types */ switch (ObjDesc->Common.Type) { case ACPI_TYPE_INTEGER: AcpiOsPrintf ("[Integer] = %8.8X%8.8X\n", ACPI_FORMAT_UINT64 (ObjDesc->Integer.Value)); break; case ACPI_TYPE_STRING: AcpiOsPrintf ("[String] Value: "); AcpiUtPrintString (ObjDesc->String.Pointer, ACPI_UINT8_MAX); AcpiOsPrintf ("\n"); break; case ACPI_TYPE_BUFFER: AcpiOsPrintf ("[Buffer] Length %.2X = ", ObjDesc->Buffer.Length); if (ObjDesc->Buffer.Length) { AcpiUtDebugDumpBuffer (ACPI_CAST_PTR (UINT8, ObjDesc->Buffer.Pointer), ObjDesc->Buffer.Length, DB_DWORD_DISPLAY, _COMPONENT); } else { AcpiOsPrintf ("\n"); } break; case ACPI_TYPE_PACKAGE: AcpiOsPrintf ("[Package] Contains %u Elements:\n", ObjDesc->Package.Count); for (i = 0; i < ObjDesc->Package.Count; i++) { AcpiExDumpPackageObj (ObjDesc->Package.Elements[i], Level+1, i); } break; case ACPI_TYPE_LOCAL_REFERENCE: AcpiOsPrintf ("[Object Reference] Type [%s] %2.2X", AcpiUtGetReferenceName (ObjDesc), ObjDesc->Reference.Class); AcpiExDumpReferenceObj (ObjDesc); break; default: AcpiOsPrintf ("[Unknown Type] %X\n", ObjDesc->Common.Type); break; } } /******************************************************************************* * * FUNCTION: AcpiExDumpObjectDescriptor * * PARAMETERS: ObjDesc - Descriptor to dump * Flags - Force display if TRUE * * DESCRIPTION: Dumps the members of the object descriptor given. * ******************************************************************************/ void AcpiExDumpObjectDescriptor ( ACPI_OPERAND_OBJECT *ObjDesc, UINT32 Flags) { ACPI_FUNCTION_TRACE (ExDumpObjectDescriptor); if (!ObjDesc) { return_VOID; } if (!Flags) { /* Check if debug output enabled */ if (!ACPI_IS_DEBUG_ENABLED (ACPI_LV_OBJECTS, _COMPONENT)) { return_VOID; } } if (ACPI_GET_DESCRIPTOR_TYPE (ObjDesc) == ACPI_DESC_TYPE_NAMED) { AcpiExDumpNamespaceNode ((ACPI_NAMESPACE_NODE *) ObjDesc, Flags); AcpiOsPrintf ("\nAttached Object (%p):\n", ((ACPI_NAMESPACE_NODE *) ObjDesc)->Object); ObjDesc = ((ACPI_NAMESPACE_NODE *) ObjDesc)->Object; goto DumpObject; } if (ACPI_GET_DESCRIPTOR_TYPE (ObjDesc) != ACPI_DESC_TYPE_OPERAND) { AcpiOsPrintf ( "%p is not an ACPI operand object: [%s]\n", ObjDesc, AcpiUtGetDescriptorName (ObjDesc)); return_VOID; } /* Validate the object type */ if (ObjDesc->Common.Type > ACPI_TYPE_LOCAL_MAX) { AcpiOsPrintf ("Not a known object type: %2.2X\n", ObjDesc->Common.Type); return_VOID; } DumpObject: /* Common Fields */ AcpiExDumpObject (ObjDesc, AcpiExDumpCommon); /* Object-specific fields */ AcpiExDumpObject (ObjDesc, AcpiExDumpInfo[ObjDesc->Common.Type]); if (ObjDesc->Common.Type == ACPI_TYPE_REGION) { ObjDesc = ObjDesc->Common.NextObject; if (ObjDesc->Common.Type > ACPI_TYPE_LOCAL_MAX) { AcpiOsPrintf ("Secondary object is not a known object type: %2.2X\n", ObjDesc->Common.Type); return_VOID; } AcpiOsPrintf ("\nExtra attached Object (%p):\n", ObjDesc); AcpiExDumpObject (ObjDesc, AcpiExDumpInfo[ObjDesc->Common.Type]); } return_VOID; } #endif src/acpica/source/components/executer/exfield.c000066400000000000000000000424111231470457100221700ustar00rootroot00000000000000/****************************************************************************** * * Module Name: exfield - ACPI AML (p-code) execution - field manipulation * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #define __EXFIELD_C__ #include "acpi.h" #include "accommon.h" #include "acdispat.h" #include "acinterp.h" #define _COMPONENT ACPI_EXECUTER ACPI_MODULE_NAME ("exfield") /******************************************************************************* * * FUNCTION: AcpiExReadDataFromField * * PARAMETERS: WalkState - Current execution state * ObjDesc - The named field * RetBufferDesc - Where the return data object is stored * * RETURN: Status * * DESCRIPTION: Read from a named field. Returns either an Integer or a * Buffer, depending on the size of the field. * ******************************************************************************/ ACPI_STATUS AcpiExReadDataFromField ( ACPI_WALK_STATE *WalkState, ACPI_OPERAND_OBJECT *ObjDesc, ACPI_OPERAND_OBJECT **RetBufferDesc) { ACPI_STATUS Status; ACPI_OPERAND_OBJECT *BufferDesc; ACPI_SIZE Length; void *Buffer; UINT32 Function; ACPI_FUNCTION_TRACE_PTR (ExReadDataFromField, ObjDesc); /* Parameter validation */ if (!ObjDesc) { return_ACPI_STATUS (AE_AML_NO_OPERAND); } if (!RetBufferDesc) { return_ACPI_STATUS (AE_BAD_PARAMETER); } if (ObjDesc->Common.Type == ACPI_TYPE_BUFFER_FIELD) { /* * If the BufferField arguments have not been previously evaluated, * evaluate them now and save the results. */ if (!(ObjDesc->Common.Flags & AOPOBJ_DATA_VALID)) { Status = AcpiDsGetBufferFieldArguments (ObjDesc); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } } } else if ((ObjDesc->Common.Type == ACPI_TYPE_LOCAL_REGION_FIELD) && (ObjDesc->Field.RegionObj->Region.SpaceId == ACPI_ADR_SPACE_SMBUS || ObjDesc->Field.RegionObj->Region.SpaceId == ACPI_ADR_SPACE_GSBUS || ObjDesc->Field.RegionObj->Region.SpaceId == ACPI_ADR_SPACE_IPMI)) { /* * This is an SMBus, GSBus or IPMI read. We must create a buffer to hold * the data and then directly access the region handler. * * Note: SMBus and GSBus protocol value is passed in upper 16-bits of Function */ if (ObjDesc->Field.RegionObj->Region.SpaceId == ACPI_ADR_SPACE_SMBUS) { Length = ACPI_SMBUS_BUFFER_SIZE; Function = ACPI_READ | (ObjDesc->Field.Attribute << 16); } else if (ObjDesc->Field.RegionObj->Region.SpaceId == ACPI_ADR_SPACE_GSBUS) { Length = ACPI_GSBUS_BUFFER_SIZE; Function = ACPI_READ | (ObjDesc->Field.Attribute << 16); } else /* IPMI */ { Length = ACPI_IPMI_BUFFER_SIZE; Function = ACPI_READ; } BufferDesc = AcpiUtCreateBufferObject (Length); if (!BufferDesc) { return_ACPI_STATUS (AE_NO_MEMORY); } /* Lock entire transaction if requested */ AcpiExAcquireGlobalLock (ObjDesc->CommonField.FieldFlags); /* Call the region handler for the read */ Status = AcpiExAccessRegion (ObjDesc, 0, ACPI_CAST_PTR (UINT64, BufferDesc->Buffer.Pointer), Function); AcpiExReleaseGlobalLock (ObjDesc->CommonField.FieldFlags); goto Exit; } /* * Allocate a buffer for the contents of the field. * * If the field is larger than the current integer width, create * a BUFFER to hold it. Otherwise, use an INTEGER. This allows * the use of arithmetic operators on the returned value if the * field size is equal or smaller than an Integer. * * Note: Field.length is in bits. */ Length = (ACPI_SIZE) ACPI_ROUND_BITS_UP_TO_BYTES (ObjDesc->Field.BitLength); if (Length > AcpiGbl_IntegerByteWidth) { /* Field is too large for an Integer, create a Buffer instead */ BufferDesc = AcpiUtCreateBufferObject (Length); if (!BufferDesc) { return_ACPI_STATUS (AE_NO_MEMORY); } Buffer = BufferDesc->Buffer.Pointer; } else { /* Field will fit within an Integer (normal case) */ BufferDesc = AcpiUtCreateIntegerObject ((UINT64) 0); if (!BufferDesc) { return_ACPI_STATUS (AE_NO_MEMORY); } Length = AcpiGbl_IntegerByteWidth; Buffer = &BufferDesc->Integer.Value; } ACPI_DEBUG_PRINT ((ACPI_DB_BFIELD, "FieldRead [TO]: Obj %p, Type %X, Buf %p, ByteLen %X\n", ObjDesc, ObjDesc->Common.Type, Buffer, (UINT32) Length)); ACPI_DEBUG_PRINT ((ACPI_DB_BFIELD, "FieldRead [FROM]: BitLen %X, BitOff %X, ByteOff %X\n", ObjDesc->CommonField.BitLength, ObjDesc->CommonField.StartFieldBitOffset, ObjDesc->CommonField.BaseByteOffset)); /* Lock entire transaction if requested */ AcpiExAcquireGlobalLock (ObjDesc->CommonField.FieldFlags); /* Read from the field */ Status = AcpiExExtractFromField (ObjDesc, Buffer, (UINT32) Length); AcpiExReleaseGlobalLock (ObjDesc->CommonField.FieldFlags); Exit: if (ACPI_FAILURE (Status)) { AcpiUtRemoveReference (BufferDesc); } else { *RetBufferDesc = BufferDesc; } return_ACPI_STATUS (Status); } /******************************************************************************* * * FUNCTION: AcpiExWriteDataToField * * PARAMETERS: SourceDesc - Contains data to write * ObjDesc - The named field * ResultDesc - Where the return value is returned, if any * * RETURN: Status * * DESCRIPTION: Write to a named field * ******************************************************************************/ ACPI_STATUS AcpiExWriteDataToField ( ACPI_OPERAND_OBJECT *SourceDesc, ACPI_OPERAND_OBJECT *ObjDesc, ACPI_OPERAND_OBJECT **ResultDesc) { ACPI_STATUS Status; UINT32 Length; void *Buffer; ACPI_OPERAND_OBJECT *BufferDesc; UINT32 Function; ACPI_FUNCTION_TRACE_PTR (ExWriteDataToField, ObjDesc); /* Parameter validation */ if (!SourceDesc || !ObjDesc) { return_ACPI_STATUS (AE_AML_NO_OPERAND); } if (ObjDesc->Common.Type == ACPI_TYPE_BUFFER_FIELD) { /* * If the BufferField arguments have not been previously evaluated, * evaluate them now and save the results. */ if (!(ObjDesc->Common.Flags & AOPOBJ_DATA_VALID)) { Status = AcpiDsGetBufferFieldArguments (ObjDesc); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } } } else if ((ObjDesc->Common.Type == ACPI_TYPE_LOCAL_REGION_FIELD) && (ObjDesc->Field.RegionObj->Region.SpaceId == ACPI_ADR_SPACE_SMBUS || ObjDesc->Field.RegionObj->Region.SpaceId == ACPI_ADR_SPACE_GSBUS || ObjDesc->Field.RegionObj->Region.SpaceId == ACPI_ADR_SPACE_IPMI)) { /* * This is an SMBus, GSBus or IPMI write. We will bypass the entire field * mechanism and handoff the buffer directly to the handler. For * these address spaces, the buffer is bi-directional; on a write, * return data is returned in the same buffer. * * Source must be a buffer of sufficient size: * ACPI_SMBUS_BUFFER_SIZE, ACPI_GSBUS_BUFFER_SIZE, or ACPI_IPMI_BUFFER_SIZE. * * Note: SMBus and GSBus protocol type is passed in upper 16-bits of Function */ if (SourceDesc->Common.Type != ACPI_TYPE_BUFFER) { ACPI_ERROR ((AE_INFO, "SMBus/IPMI/GenericSerialBus write requires Buffer, found type %s", AcpiUtGetObjectTypeName (SourceDesc))); return_ACPI_STATUS (AE_AML_OPERAND_TYPE); } if (ObjDesc->Field.RegionObj->Region.SpaceId == ACPI_ADR_SPACE_SMBUS) { Length = ACPI_SMBUS_BUFFER_SIZE; Function = ACPI_WRITE | (ObjDesc->Field.Attribute << 16); } else if (ObjDesc->Field.RegionObj->Region.SpaceId == ACPI_ADR_SPACE_GSBUS) { Length = ACPI_GSBUS_BUFFER_SIZE; Function = ACPI_WRITE | (ObjDesc->Field.Attribute << 16); } else /* IPMI */ { Length = ACPI_IPMI_BUFFER_SIZE; Function = ACPI_WRITE; } if (SourceDesc->Buffer.Length < Length) { ACPI_ERROR ((AE_INFO, "SMBus/IPMI/GenericSerialBus write requires Buffer of length %u, found length %u", Length, SourceDesc->Buffer.Length)); return_ACPI_STATUS (AE_AML_BUFFER_LIMIT); } /* Create the bi-directional buffer */ BufferDesc = AcpiUtCreateBufferObject (Length); if (!BufferDesc) { return_ACPI_STATUS (AE_NO_MEMORY); } Buffer = BufferDesc->Buffer.Pointer; ACPI_MEMCPY (Buffer, SourceDesc->Buffer.Pointer, Length); /* Lock entire transaction if requested */ AcpiExAcquireGlobalLock (ObjDesc->CommonField.FieldFlags); /* * Perform the write (returns status and perhaps data in the * same buffer) */ Status = AcpiExAccessRegion (ObjDesc, 0, (UINT64 *) Buffer, Function); AcpiExReleaseGlobalLock (ObjDesc->CommonField.FieldFlags); *ResultDesc = BufferDesc; return_ACPI_STATUS (Status); } /* Get a pointer to the data to be written */ switch (SourceDesc->Common.Type) { case ACPI_TYPE_INTEGER: Buffer = &SourceDesc->Integer.Value; Length = sizeof (SourceDesc->Integer.Value); break; case ACPI_TYPE_BUFFER: Buffer = SourceDesc->Buffer.Pointer; Length = SourceDesc->Buffer.Length; break; case ACPI_TYPE_STRING: Buffer = SourceDesc->String.Pointer; Length = SourceDesc->String.Length; break; default: return_ACPI_STATUS (AE_AML_OPERAND_TYPE); } ACPI_DEBUG_PRINT ((ACPI_DB_BFIELD, "FieldWrite [FROM]: Obj %p (%s:%X), Buf %p, ByteLen %X\n", SourceDesc, AcpiUtGetTypeName (SourceDesc->Common.Type), SourceDesc->Common.Type, Buffer, Length)); ACPI_DEBUG_PRINT ((ACPI_DB_BFIELD, "FieldWrite [TO]: Obj %p (%s:%X), BitLen %X, BitOff %X, ByteOff %X\n", ObjDesc, AcpiUtGetTypeName (ObjDesc->Common.Type), ObjDesc->Common.Type, ObjDesc->CommonField.BitLength, ObjDesc->CommonField.StartFieldBitOffset, ObjDesc->CommonField.BaseByteOffset)); /* Lock entire transaction if requested */ AcpiExAcquireGlobalLock (ObjDesc->CommonField.FieldFlags); /* Write to the field */ Status = AcpiExInsertIntoField (ObjDesc, Buffer, Length); AcpiExReleaseGlobalLock (ObjDesc->CommonField.FieldFlags); return_ACPI_STATUS (Status); } src/acpica/source/components/executer/exfldio.c000066400000000000000000001113771231470457100222120ustar00rootroot00000000000000/****************************************************************************** * * Module Name: exfldio - Aml Field I/O * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #define __EXFLDIO_C__ #include "acpi.h" #include "accommon.h" #include "acinterp.h" #include "amlcode.h" #include "acevents.h" #include "acdispat.h" #define _COMPONENT ACPI_EXECUTER ACPI_MODULE_NAME ("exfldio") /* Local prototypes */ static ACPI_STATUS AcpiExFieldDatumIo ( ACPI_OPERAND_OBJECT *ObjDesc, UINT32 FieldDatumByteOffset, UINT64 *Value, UINT32 ReadWrite); static BOOLEAN AcpiExRegisterOverflow ( ACPI_OPERAND_OBJECT *ObjDesc, UINT64 Value); static ACPI_STATUS AcpiExSetupRegion ( ACPI_OPERAND_OBJECT *ObjDesc, UINT32 FieldDatumByteOffset); /******************************************************************************* * * FUNCTION: AcpiExSetupRegion * * PARAMETERS: ObjDesc - Field to be read or written * FieldDatumByteOffset - Byte offset of this datum within the * parent field * * RETURN: Status * * DESCRIPTION: Common processing for AcpiExExtractFromField and * AcpiExInsertIntoField. Initialize the Region if necessary and * validate the request. * ******************************************************************************/ static ACPI_STATUS AcpiExSetupRegion ( ACPI_OPERAND_OBJECT *ObjDesc, UINT32 FieldDatumByteOffset) { ACPI_STATUS Status = AE_OK; ACPI_OPERAND_OBJECT *RgnDesc; UINT8 SpaceId; ACPI_FUNCTION_TRACE_U32 (ExSetupRegion, FieldDatumByteOffset); RgnDesc = ObjDesc->CommonField.RegionObj; /* We must have a valid region */ if (RgnDesc->Common.Type != ACPI_TYPE_REGION) { ACPI_ERROR ((AE_INFO, "Needed Region, found type 0x%X (%s)", RgnDesc->Common.Type, AcpiUtGetObjectTypeName (RgnDesc))); return_ACPI_STATUS (AE_AML_OPERAND_TYPE); } SpaceId = RgnDesc->Region.SpaceId; /* Validate the Space ID */ if (!AcpiIsValidSpaceId (SpaceId)) { ACPI_ERROR ((AE_INFO, "Invalid/unknown Address Space ID: 0x%2.2X", SpaceId)); return_ACPI_STATUS (AE_AML_INVALID_SPACE_ID); } /* * If the Region Address and Length have not been previously evaluated, * evaluate them now and save the results. */ if (!(RgnDesc->Common.Flags & AOPOBJ_DATA_VALID)) { Status = AcpiDsGetRegionArguments (RgnDesc); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } } /* * Exit now for SMBus, GSBus or IPMI address space, it has a non-linear * address space and the request cannot be directly validated */ if (SpaceId == ACPI_ADR_SPACE_SMBUS || SpaceId == ACPI_ADR_SPACE_GSBUS || SpaceId == ACPI_ADR_SPACE_IPMI) { /* SMBus or IPMI has a non-linear address space */ return_ACPI_STATUS (AE_OK); } #ifdef ACPI_UNDER_DEVELOPMENT /* * If the Field access is AnyAcc, we can now compute the optimal * access (because we know know the length of the parent region) */ if (!(ObjDesc->Common.Flags & AOPOBJ_DATA_VALID)) { if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } } #endif /* * Validate the request. The entire request from the byte offset for a * length of one field datum (access width) must fit within the region. * (Region length is specified in bytes) */ if (RgnDesc->Region.Length < (ObjDesc->CommonField.BaseByteOffset + FieldDatumByteOffset + ObjDesc->CommonField.AccessByteWidth)) { if (AcpiGbl_EnableInterpreterSlack) { /* * Slack mode only: We will go ahead and allow access to this * field if it is within the region length rounded up to the next * access width boundary. ACPI_SIZE cast for 64-bit compile. */ if (ACPI_ROUND_UP (RgnDesc->Region.Length, ObjDesc->CommonField.AccessByteWidth) >= ((ACPI_SIZE) ObjDesc->CommonField.BaseByteOffset + ObjDesc->CommonField.AccessByteWidth + FieldDatumByteOffset)) { return_ACPI_STATUS (AE_OK); } } if (RgnDesc->Region.Length < ObjDesc->CommonField.AccessByteWidth) { /* * This is the case where the AccessType (AccWord, etc.) is wider * than the region itself. For example, a region of length one * byte, and a field with Dword access specified. */ ACPI_ERROR ((AE_INFO, "Field [%4.4s] access width (%u bytes) too large for region [%4.4s] (length %u)", AcpiUtGetNodeName (ObjDesc->CommonField.Node), ObjDesc->CommonField.AccessByteWidth, AcpiUtGetNodeName (RgnDesc->Region.Node), RgnDesc->Region.Length)); } /* * Offset rounded up to next multiple of field width * exceeds region length, indicate an error */ ACPI_ERROR ((AE_INFO, "Field [%4.4s] Base+Offset+Width %u+%u+%u is beyond end of region [%4.4s] (length %u)", AcpiUtGetNodeName (ObjDesc->CommonField.Node), ObjDesc->CommonField.BaseByteOffset, FieldDatumByteOffset, ObjDesc->CommonField.AccessByteWidth, AcpiUtGetNodeName (RgnDesc->Region.Node), RgnDesc->Region.Length)); return_ACPI_STATUS (AE_AML_REGION_LIMIT); } return_ACPI_STATUS (AE_OK); } /******************************************************************************* * * FUNCTION: AcpiExAccessRegion * * PARAMETERS: ObjDesc - Field to be read * FieldDatumByteOffset - Byte offset of this datum within the * parent field * Value - Where to store value (must at least * 64 bits) * Function - Read or Write flag plus other region- * dependent flags * * RETURN: Status * * DESCRIPTION: Read or Write a single field datum to an Operation Region. * ******************************************************************************/ ACPI_STATUS AcpiExAccessRegion ( ACPI_OPERAND_OBJECT *ObjDesc, UINT32 FieldDatumByteOffset, UINT64 *Value, UINT32 Function) { ACPI_STATUS Status; ACPI_OPERAND_OBJECT *RgnDesc; UINT32 RegionOffset; ACPI_FUNCTION_TRACE (ExAccessRegion); /* * Ensure that the region operands are fully evaluated and verify * the validity of the request */ Status = AcpiExSetupRegion (ObjDesc, FieldDatumByteOffset); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } /* * The physical address of this field datum is: * * 1) The base of the region, plus * 2) The base offset of the field, plus * 3) The current offset into the field */ RgnDesc = ObjDesc->CommonField.RegionObj; RegionOffset = ObjDesc->CommonField.BaseByteOffset + FieldDatumByteOffset; if ((Function & ACPI_IO_MASK) == ACPI_READ) { ACPI_DEBUG_PRINT ((ACPI_DB_BFIELD, "[READ]")); } else { ACPI_DEBUG_PRINT ((ACPI_DB_BFIELD, "[WRITE]")); } ACPI_DEBUG_PRINT_RAW ((ACPI_DB_BFIELD, " Region [%s:%X], Width %X, ByteBase %X, Offset %X at %p\n", AcpiUtGetRegionName (RgnDesc->Region.SpaceId), RgnDesc->Region.SpaceId, ObjDesc->CommonField.AccessByteWidth, ObjDesc->CommonField.BaseByteOffset, FieldDatumByteOffset, ACPI_CAST_PTR (void, (RgnDesc->Region.Address + RegionOffset)))); /* Invoke the appropriate AddressSpace/OpRegion handler */ Status = AcpiEvAddressSpaceDispatch (RgnDesc, ObjDesc, Function, RegionOffset, ACPI_MUL_8 (ObjDesc->CommonField.AccessByteWidth), Value); if (ACPI_FAILURE (Status)) { if (Status == AE_NOT_IMPLEMENTED) { ACPI_ERROR ((AE_INFO, "Region %s (ID=%u) not implemented", AcpiUtGetRegionName (RgnDesc->Region.SpaceId), RgnDesc->Region.SpaceId)); } else if (Status == AE_NOT_EXIST) { ACPI_ERROR ((AE_INFO, "Region %s (ID=%u) has no handler", AcpiUtGetRegionName (RgnDesc->Region.SpaceId), RgnDesc->Region.SpaceId)); } } return_ACPI_STATUS (Status); } /******************************************************************************* * * FUNCTION: AcpiExRegisterOverflow * * PARAMETERS: ObjDesc - Register(Field) to be written * Value - Value to be stored * * RETURN: TRUE if value overflows the field, FALSE otherwise * * DESCRIPTION: Check if a value is out of range of the field being written. * Used to check if the values written to Index and Bank registers * are out of range. Normally, the value is simply truncated * to fit the field, but this case is most likely a serious * coding error in the ASL. * ******************************************************************************/ static BOOLEAN AcpiExRegisterOverflow ( ACPI_OPERAND_OBJECT *ObjDesc, UINT64 Value) { if (ObjDesc->CommonField.BitLength >= ACPI_INTEGER_BIT_SIZE) { /* * The field is large enough to hold the maximum integer, so we can * never overflow it. */ return (FALSE); } if (Value >= ((UINT64) 1 << ObjDesc->CommonField.BitLength)) { /* * The Value is larger than the maximum value that can fit into * the register. */ ACPI_ERROR ((AE_INFO, "Index value 0x%8.8X%8.8X overflows field width 0x%X", ACPI_FORMAT_UINT64 (Value), ObjDesc->CommonField.BitLength)); return (TRUE); } /* The Value will fit into the field with no truncation */ return (FALSE); } /******************************************************************************* * * FUNCTION: AcpiExFieldDatumIo * * PARAMETERS: ObjDesc - Field to be read * FieldDatumByteOffset - Byte offset of this datum within the * parent field * Value - Where to store value (must be 64 bits) * ReadWrite - Read or Write flag * * RETURN: Status * * DESCRIPTION: Read or Write a single datum of a field. The FieldType is * demultiplexed here to handle the different types of fields * (BufferField, RegionField, IndexField, BankField) * ******************************************************************************/ static ACPI_STATUS AcpiExFieldDatumIo ( ACPI_OPERAND_OBJECT *ObjDesc, UINT32 FieldDatumByteOffset, UINT64 *Value, UINT32 ReadWrite) { ACPI_STATUS Status; UINT64 LocalValue; ACPI_FUNCTION_TRACE_U32 (ExFieldDatumIo, FieldDatumByteOffset); if (ReadWrite == ACPI_READ) { if (!Value) { LocalValue = 0; /* To support reads without saving return value */ Value = &LocalValue; } /* Clear the entire return buffer first, [Very Important!] */ *Value = 0; } /* * The four types of fields are: * * BufferField - Read/write from/to a Buffer * RegionField - Read/write from/to a Operation Region. * BankField - Write to a Bank Register, then read/write from/to an * OperationRegion * IndexField - Write to an Index Register, then read/write from/to a * Data Register */ switch (ObjDesc->Common.Type) { case ACPI_TYPE_BUFFER_FIELD: /* * If the BufferField arguments have not been previously evaluated, * evaluate them now and save the results. */ if (!(ObjDesc->Common.Flags & AOPOBJ_DATA_VALID)) { Status = AcpiDsGetBufferFieldArguments (ObjDesc); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } } if (ReadWrite == ACPI_READ) { /* * Copy the data from the source buffer. * Length is the field width in bytes. */ ACPI_MEMCPY (Value, (ObjDesc->BufferField.BufferObj)->Buffer.Pointer + ObjDesc->BufferField.BaseByteOffset + FieldDatumByteOffset, ObjDesc->CommonField.AccessByteWidth); } else { /* * Copy the data to the target buffer. * Length is the field width in bytes. */ ACPI_MEMCPY ((ObjDesc->BufferField.BufferObj)->Buffer.Pointer + ObjDesc->BufferField.BaseByteOffset + FieldDatumByteOffset, Value, ObjDesc->CommonField.AccessByteWidth); } Status = AE_OK; break; case ACPI_TYPE_LOCAL_BANK_FIELD: /* * Ensure that the BankValue is not beyond the capacity of * the register */ if (AcpiExRegisterOverflow (ObjDesc->BankField.BankObj, (UINT64) ObjDesc->BankField.Value)) { return_ACPI_STATUS (AE_AML_REGISTER_LIMIT); } /* * For BankFields, we must write the BankValue to the BankRegister * (itself a RegionField) before we can access the data. */ Status = AcpiExInsertIntoField (ObjDesc->BankField.BankObj, &ObjDesc->BankField.Value, sizeof (ObjDesc->BankField.Value)); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } /* * Now that the Bank has been selected, fall through to the * RegionField case and write the datum to the Operation Region */ /*lint -fallthrough */ case ACPI_TYPE_LOCAL_REGION_FIELD: /* * For simple RegionFields, we just directly access the owning * Operation Region. */ Status = AcpiExAccessRegion (ObjDesc, FieldDatumByteOffset, Value, ReadWrite); break; case ACPI_TYPE_LOCAL_INDEX_FIELD: /* * Ensure that the IndexValue is not beyond the capacity of * the register */ if (AcpiExRegisterOverflow (ObjDesc->IndexField.IndexObj, (UINT64) ObjDesc->IndexField.Value)) { return_ACPI_STATUS (AE_AML_REGISTER_LIMIT); } /* Write the index value to the IndexRegister (itself a RegionField) */ FieldDatumByteOffset += ObjDesc->IndexField.Value; ACPI_DEBUG_PRINT ((ACPI_DB_BFIELD, "Write to Index Register: Value %8.8X\n", FieldDatumByteOffset)); Status = AcpiExInsertIntoField (ObjDesc->IndexField.IndexObj, &FieldDatumByteOffset, sizeof (FieldDatumByteOffset)); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } if (ReadWrite == ACPI_READ) { /* Read the datum from the DataRegister */ ACPI_DEBUG_PRINT ((ACPI_DB_BFIELD, "Read from Data Register\n")); Status = AcpiExExtractFromField (ObjDesc->IndexField.DataObj, Value, sizeof (UINT64)); } else { /* Write the datum to the DataRegister */ ACPI_DEBUG_PRINT ((ACPI_DB_BFIELD, "Write to Data Register: Value %8.8X%8.8X\n", ACPI_FORMAT_UINT64 (*Value))); Status = AcpiExInsertIntoField (ObjDesc->IndexField.DataObj, Value, sizeof (UINT64)); } break; default: ACPI_ERROR ((AE_INFO, "Wrong object type in field I/O %u", ObjDesc->Common.Type)); Status = AE_AML_INTERNAL; break; } if (ACPI_SUCCESS (Status)) { if (ReadWrite == ACPI_READ) { ACPI_DEBUG_PRINT ((ACPI_DB_BFIELD, "Value Read %8.8X%8.8X, Width %u\n", ACPI_FORMAT_UINT64 (*Value), ObjDesc->CommonField.AccessByteWidth)); } else { ACPI_DEBUG_PRINT ((ACPI_DB_BFIELD, "Value Written %8.8X%8.8X, Width %u\n", ACPI_FORMAT_UINT64 (*Value), ObjDesc->CommonField.AccessByteWidth)); } } return_ACPI_STATUS (Status); } /******************************************************************************* * * FUNCTION: AcpiExWriteWithUpdateRule * * PARAMETERS: ObjDesc - Field to be written * Mask - bitmask within field datum * FieldValue - Value to write * FieldDatumByteOffset - Offset of datum within field * * RETURN: Status * * DESCRIPTION: Apply the field update rule to a field write * ******************************************************************************/ ACPI_STATUS AcpiExWriteWithUpdateRule ( ACPI_OPERAND_OBJECT *ObjDesc, UINT64 Mask, UINT64 FieldValue, UINT32 FieldDatumByteOffset) { ACPI_STATUS Status = AE_OK; UINT64 MergedValue; UINT64 CurrentValue; ACPI_FUNCTION_TRACE_U32 (ExWriteWithUpdateRule, Mask); /* Start with the new bits */ MergedValue = FieldValue; /* If the mask is all ones, we don't need to worry about the update rule */ if (Mask != ACPI_UINT64_MAX) { /* Decode the update rule */ switch (ObjDesc->CommonField.FieldFlags & AML_FIELD_UPDATE_RULE_MASK) { case AML_FIELD_UPDATE_PRESERVE: /* * Check if update rule needs to be applied (not if mask is all * ones) The left shift drops the bits we want to ignore. */ if ((~Mask << (ACPI_MUL_8 (sizeof (Mask)) - ACPI_MUL_8 (ObjDesc->CommonField.AccessByteWidth))) != 0) { /* * Read the current contents of the byte/word/dword containing * the field, and merge with the new field value. */ Status = AcpiExFieldDatumIo (ObjDesc, FieldDatumByteOffset, &CurrentValue, ACPI_READ); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } MergedValue |= (CurrentValue & ~Mask); } break; case AML_FIELD_UPDATE_WRITE_AS_ONES: /* Set positions outside the field to all ones */ MergedValue |= ~Mask; break; case AML_FIELD_UPDATE_WRITE_AS_ZEROS: /* Set positions outside the field to all zeros */ MergedValue &= Mask; break; default: ACPI_ERROR ((AE_INFO, "Unknown UpdateRule value: 0x%X", (ObjDesc->CommonField.FieldFlags & AML_FIELD_UPDATE_RULE_MASK))); return_ACPI_STATUS (AE_AML_OPERAND_VALUE); } } ACPI_DEBUG_PRINT ((ACPI_DB_BFIELD, "Mask %8.8X%8.8X, DatumOffset %X, Width %X, Value %8.8X%8.8X, MergedValue %8.8X%8.8X\n", ACPI_FORMAT_UINT64 (Mask), FieldDatumByteOffset, ObjDesc->CommonField.AccessByteWidth, ACPI_FORMAT_UINT64 (FieldValue), ACPI_FORMAT_UINT64 (MergedValue))); /* Write the merged value */ Status = AcpiExFieldDatumIo (ObjDesc, FieldDatumByteOffset, &MergedValue, ACPI_WRITE); return_ACPI_STATUS (Status); } /******************************************************************************* * * FUNCTION: AcpiExExtractFromField * * PARAMETERS: ObjDesc - Field to be read * Buffer - Where to store the field data * BufferLength - Length of Buffer * * RETURN: Status * * DESCRIPTION: Retrieve the current value of the given field * ******************************************************************************/ ACPI_STATUS AcpiExExtractFromField ( ACPI_OPERAND_OBJECT *ObjDesc, void *Buffer, UINT32 BufferLength) { ACPI_STATUS Status; UINT64 RawDatum; UINT64 MergedDatum; UINT32 FieldOffset = 0; UINT32 BufferOffset = 0; UINT32 BufferTailBits; UINT32 DatumCount; UINT32 FieldDatumCount; UINT32 AccessBitWidth; UINT32 i; ACPI_FUNCTION_TRACE (ExExtractFromField); /* Validate target buffer and clear it */ if (BufferLength < ACPI_ROUND_BITS_UP_TO_BYTES (ObjDesc->CommonField.BitLength)) { ACPI_ERROR ((AE_INFO, "Field size %u (bits) is too large for buffer (%u)", ObjDesc->CommonField.BitLength, BufferLength)); return_ACPI_STATUS (AE_BUFFER_OVERFLOW); } ACPI_MEMSET (Buffer, 0, BufferLength); AccessBitWidth = ACPI_MUL_8 (ObjDesc->CommonField.AccessByteWidth); /* Handle the simple case here */ if ((ObjDesc->CommonField.StartFieldBitOffset == 0) && (ObjDesc->CommonField.BitLength == AccessBitWidth)) { if (BufferLength >= sizeof (UINT64)) { Status = AcpiExFieldDatumIo (ObjDesc, 0, Buffer, ACPI_READ); } else { /* Use RawDatum (UINT64) to handle buffers < 64 bits */ Status = AcpiExFieldDatumIo (ObjDesc, 0, &RawDatum, ACPI_READ); ACPI_MEMCPY (Buffer, &RawDatum, BufferLength); } return_ACPI_STATUS (Status); } /* TBD: Move to common setup code */ /* Field algorithm is limited to sizeof(UINT64), truncate if needed */ if (ObjDesc->CommonField.AccessByteWidth > sizeof (UINT64)) { ObjDesc->CommonField.AccessByteWidth = sizeof (UINT64); AccessBitWidth = sizeof (UINT64) * 8; } /* Compute the number of datums (access width data items) */ DatumCount = ACPI_ROUND_UP_TO ( ObjDesc->CommonField.BitLength, AccessBitWidth); FieldDatumCount = ACPI_ROUND_UP_TO ( ObjDesc->CommonField.BitLength + ObjDesc->CommonField.StartFieldBitOffset, AccessBitWidth); /* Priming read from the field */ Status = AcpiExFieldDatumIo (ObjDesc, FieldOffset, &RawDatum, ACPI_READ); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } MergedDatum = RawDatum >> ObjDesc->CommonField.StartFieldBitOffset; /* Read the rest of the field */ for (i = 1; i < FieldDatumCount; i++) { /* Get next input datum from the field */ FieldOffset += ObjDesc->CommonField.AccessByteWidth; Status = AcpiExFieldDatumIo (ObjDesc, FieldOffset, &RawDatum, ACPI_READ); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } /* * Merge with previous datum if necessary. * * Note: Before the shift, check if the shift value will be larger than * the integer size. If so, there is no need to perform the operation. * This avoids the differences in behavior between different compilers * concerning shift values larger than the target data width. */ if (AccessBitWidth - ObjDesc->CommonField.StartFieldBitOffset < ACPI_INTEGER_BIT_SIZE) { MergedDatum |= RawDatum << (AccessBitWidth - ObjDesc->CommonField.StartFieldBitOffset); } if (i == DatumCount) { break; } /* Write merged datum to target buffer */ ACPI_MEMCPY (((char *) Buffer) + BufferOffset, &MergedDatum, ACPI_MIN(ObjDesc->CommonField.AccessByteWidth, BufferLength - BufferOffset)); BufferOffset += ObjDesc->CommonField.AccessByteWidth; MergedDatum = RawDatum >> ObjDesc->CommonField.StartFieldBitOffset; } /* Mask off any extra bits in the last datum */ BufferTailBits = ObjDesc->CommonField.BitLength % AccessBitWidth; if (BufferTailBits) { MergedDatum &= ACPI_MASK_BITS_ABOVE (BufferTailBits); } /* Write the last datum to the buffer */ ACPI_MEMCPY (((char *) Buffer) + BufferOffset, &MergedDatum, ACPI_MIN(ObjDesc->CommonField.AccessByteWidth, BufferLength - BufferOffset)); return_ACPI_STATUS (AE_OK); } /******************************************************************************* * * FUNCTION: AcpiExInsertIntoField * * PARAMETERS: ObjDesc - Field to be written * Buffer - Data to be written * BufferLength - Length of Buffer * * RETURN: Status * * DESCRIPTION: Store the Buffer contents into the given field * ******************************************************************************/ ACPI_STATUS AcpiExInsertIntoField ( ACPI_OPERAND_OBJECT *ObjDesc, void *Buffer, UINT32 BufferLength) { void *NewBuffer; ACPI_STATUS Status; UINT64 Mask; UINT64 WidthMask; UINT64 MergedDatum; UINT64 RawDatum = 0; UINT32 FieldOffset = 0; UINT32 BufferOffset = 0; UINT32 BufferTailBits; UINT32 DatumCount; UINT32 FieldDatumCount; UINT32 AccessBitWidth; UINT32 RequiredLength; UINT32 i; ACPI_FUNCTION_TRACE (ExInsertIntoField); /* Validate input buffer */ NewBuffer = NULL; RequiredLength = ACPI_ROUND_BITS_UP_TO_BYTES ( ObjDesc->CommonField.BitLength); /* * We must have a buffer that is at least as long as the field * we are writing to. This is because individual fields are * indivisible and partial writes are not supported -- as per * the ACPI specification. */ if (BufferLength < RequiredLength) { /* We need to create a new buffer */ NewBuffer = ACPI_ALLOCATE_ZEROED (RequiredLength); if (!NewBuffer) { return_ACPI_STATUS (AE_NO_MEMORY); } /* * Copy the original data to the new buffer, starting * at Byte zero. All unused (upper) bytes of the * buffer will be 0. */ ACPI_MEMCPY ((char *) NewBuffer, (char *) Buffer, BufferLength); Buffer = NewBuffer; BufferLength = RequiredLength; } /* TBD: Move to common setup code */ /* Algo is limited to sizeof(UINT64), so cut the AccessByteWidth */ if (ObjDesc->CommonField.AccessByteWidth > sizeof (UINT64)) { ObjDesc->CommonField.AccessByteWidth = sizeof (UINT64); } AccessBitWidth = ACPI_MUL_8 (ObjDesc->CommonField.AccessByteWidth); /* * Create the bitmasks used for bit insertion. * Note: This if/else is used to bypass compiler differences with the * shift operator */ if (AccessBitWidth == ACPI_INTEGER_BIT_SIZE) { WidthMask = ACPI_UINT64_MAX; } else { WidthMask = ACPI_MASK_BITS_ABOVE (AccessBitWidth); } Mask = WidthMask & ACPI_MASK_BITS_BELOW (ObjDesc->CommonField.StartFieldBitOffset); /* Compute the number of datums (access width data items) */ DatumCount = ACPI_ROUND_UP_TO (ObjDesc->CommonField.BitLength, AccessBitWidth); FieldDatumCount = ACPI_ROUND_UP_TO (ObjDesc->CommonField.BitLength + ObjDesc->CommonField.StartFieldBitOffset, AccessBitWidth); /* Get initial Datum from the input buffer */ ACPI_MEMCPY (&RawDatum, Buffer, ACPI_MIN(ObjDesc->CommonField.AccessByteWidth, BufferLength - BufferOffset)); MergedDatum = RawDatum << ObjDesc->CommonField.StartFieldBitOffset; /* Write the entire field */ for (i = 1; i < FieldDatumCount; i++) { /* Write merged datum to the target field */ MergedDatum &= Mask; Status = AcpiExWriteWithUpdateRule (ObjDesc, Mask, MergedDatum, FieldOffset); if (ACPI_FAILURE (Status)) { goto Exit; } FieldOffset += ObjDesc->CommonField.AccessByteWidth; /* * Start new output datum by merging with previous input datum * if necessary. * * Note: Before the shift, check if the shift value will be larger than * the integer size. If so, there is no need to perform the operation. * This avoids the differences in behavior between different compilers * concerning shift values larger than the target data width. */ if ((AccessBitWidth - ObjDesc->CommonField.StartFieldBitOffset) < ACPI_INTEGER_BIT_SIZE) { MergedDatum = RawDatum >> (AccessBitWidth - ObjDesc->CommonField.StartFieldBitOffset); } else { MergedDatum = 0; } Mask = WidthMask; if (i == DatumCount) { break; } /* Get the next input datum from the buffer */ BufferOffset += ObjDesc->CommonField.AccessByteWidth; ACPI_MEMCPY (&RawDatum, ((char *) Buffer) + BufferOffset, ACPI_MIN(ObjDesc->CommonField.AccessByteWidth, BufferLength - BufferOffset)); MergedDatum |= RawDatum << ObjDesc->CommonField.StartFieldBitOffset; } /* Mask off any extra bits in the last datum */ BufferTailBits = (ObjDesc->CommonField.BitLength + ObjDesc->CommonField.StartFieldBitOffset) % AccessBitWidth; if (BufferTailBits) { Mask &= ACPI_MASK_BITS_ABOVE (BufferTailBits); } /* Write the last datum to the field */ MergedDatum &= Mask; Status = AcpiExWriteWithUpdateRule (ObjDesc, Mask, MergedDatum, FieldOffset); Exit: /* Free temporary buffer if we used one */ if (NewBuffer) { ACPI_FREE (NewBuffer); } return_ACPI_STATUS (Status); } src/acpica/source/components/executer/exmisc.c000066400000000000000000000652711231470457100220510ustar00rootroot00000000000000/****************************************************************************** * * Module Name: exmisc - ACPI AML (p-code) execution - specific opcodes * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #define __EXMISC_C__ #include "acpi.h" #include "accommon.h" #include "acinterp.h" #include "amlcode.h" #include "amlresrc.h" #define _COMPONENT ACPI_EXECUTER ACPI_MODULE_NAME ("exmisc") /******************************************************************************* * * FUNCTION: AcpiExGetObjectReference * * PARAMETERS: ObjDesc - Create a reference to this object * ReturnDesc - Where to store the reference * WalkState - Current state * * RETURN: Status * * DESCRIPTION: Obtain and return a "reference" to the target object * Common code for the RefOfOp and the CondRefOfOp. * ******************************************************************************/ ACPI_STATUS AcpiExGetObjectReference ( ACPI_OPERAND_OBJECT *ObjDesc, ACPI_OPERAND_OBJECT **ReturnDesc, ACPI_WALK_STATE *WalkState) { ACPI_OPERAND_OBJECT *ReferenceObj; ACPI_OPERAND_OBJECT *ReferencedObj; ACPI_FUNCTION_TRACE_PTR (ExGetObjectReference, ObjDesc); *ReturnDesc = NULL; switch (ACPI_GET_DESCRIPTOR_TYPE (ObjDesc)) { case ACPI_DESC_TYPE_OPERAND: if (ObjDesc->Common.Type != ACPI_TYPE_LOCAL_REFERENCE) { return_ACPI_STATUS (AE_AML_OPERAND_TYPE); } /* * Must be a reference to a Local or Arg */ switch (ObjDesc->Reference.Class) { case ACPI_REFCLASS_LOCAL: case ACPI_REFCLASS_ARG: case ACPI_REFCLASS_DEBUG: /* The referenced object is the pseudo-node for the local/arg */ ReferencedObj = ObjDesc->Reference.Object; break; default: ACPI_ERROR ((AE_INFO, "Unknown Reference Class 0x%2.2X", ObjDesc->Reference.Class)); return_ACPI_STATUS (AE_AML_INTERNAL); } break; case ACPI_DESC_TYPE_NAMED: /* * A named reference that has already been resolved to a Node */ ReferencedObj = ObjDesc; break; default: ACPI_ERROR ((AE_INFO, "Invalid descriptor type 0x%X", ACPI_GET_DESCRIPTOR_TYPE (ObjDesc))); return_ACPI_STATUS (AE_TYPE); } /* Create a new reference object */ ReferenceObj = AcpiUtCreateInternalObject (ACPI_TYPE_LOCAL_REFERENCE); if (!ReferenceObj) { return_ACPI_STATUS (AE_NO_MEMORY); } ReferenceObj->Reference.Class = ACPI_REFCLASS_REFOF; ReferenceObj->Reference.Object = ReferencedObj; *ReturnDesc = ReferenceObj; ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Object %p Type [%s], returning Reference %p\n", ObjDesc, AcpiUtGetObjectTypeName (ObjDesc), *ReturnDesc)); return_ACPI_STATUS (AE_OK); } /******************************************************************************* * * FUNCTION: AcpiExConcatTemplate * * PARAMETERS: Operand0 - First source object * Operand1 - Second source object * ActualReturnDesc - Where to place the return object * WalkState - Current walk state * * RETURN: Status * * DESCRIPTION: Concatenate two resource templates * ******************************************************************************/ ACPI_STATUS AcpiExConcatTemplate ( ACPI_OPERAND_OBJECT *Operand0, ACPI_OPERAND_OBJECT *Operand1, ACPI_OPERAND_OBJECT **ActualReturnDesc, ACPI_WALK_STATE *WalkState) { ACPI_STATUS Status; ACPI_OPERAND_OBJECT *ReturnDesc; UINT8 *NewBuf; UINT8 *EndTag; ACPI_SIZE Length0; ACPI_SIZE Length1; ACPI_SIZE NewLength; ACPI_FUNCTION_TRACE (ExConcatTemplate); /* * Find the EndTag descriptor in each resource template. * Note1: returned pointers point TO the EndTag, not past it. * Note2: zero-length buffers are allowed; treated like one EndTag */ /* Get the length of the first resource template */ Status = AcpiUtGetResourceEndTag (Operand0, &EndTag); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } Length0 = ACPI_PTR_DIFF (EndTag, Operand0->Buffer.Pointer); /* Get the length of the second resource template */ Status = AcpiUtGetResourceEndTag (Operand1, &EndTag); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } Length1 = ACPI_PTR_DIFF (EndTag, Operand1->Buffer.Pointer); /* Combine both lengths, minimum size will be 2 for EndTag */ NewLength = Length0 + Length1 + sizeof (AML_RESOURCE_END_TAG); /* Create a new buffer object for the result (with one EndTag) */ ReturnDesc = AcpiUtCreateBufferObject (NewLength); if (!ReturnDesc) { return_ACPI_STATUS (AE_NO_MEMORY); } /* * Copy the templates to the new buffer, 0 first, then 1 follows. One * EndTag descriptor is copied from Operand1. */ NewBuf = ReturnDesc->Buffer.Pointer; ACPI_MEMCPY (NewBuf, Operand0->Buffer.Pointer, Length0); ACPI_MEMCPY (NewBuf + Length0, Operand1->Buffer.Pointer, Length1); /* Insert EndTag and set the checksum to zero, means "ignore checksum" */ NewBuf[NewLength - 1] = 0; NewBuf[NewLength - 2] = ACPI_RESOURCE_NAME_END_TAG | 1; /* Return the completed resource template */ *ActualReturnDesc = ReturnDesc; return_ACPI_STATUS (AE_OK); } /******************************************************************************* * * FUNCTION: AcpiExDoConcatenate * * PARAMETERS: Operand0 - First source object * Operand1 - Second source object * ActualReturnDesc - Where to place the return object * WalkState - Current walk state * * RETURN: Status * * DESCRIPTION: Concatenate two objects OF THE SAME TYPE. * ******************************************************************************/ ACPI_STATUS AcpiExDoConcatenate ( ACPI_OPERAND_OBJECT *Operand0, ACPI_OPERAND_OBJECT *Operand1, ACPI_OPERAND_OBJECT **ActualReturnDesc, ACPI_WALK_STATE *WalkState) { ACPI_OPERAND_OBJECT *LocalOperand1 = Operand1; ACPI_OPERAND_OBJECT *ReturnDesc; char *NewBuf; ACPI_STATUS Status; ACPI_FUNCTION_TRACE (ExDoConcatenate); /* * Convert the second operand if necessary. The first operand * determines the type of the second operand, (See the Data Types * section of the ACPI specification.) Both object types are * guaranteed to be either Integer/String/Buffer by the operand * resolution mechanism. */ switch (Operand0->Common.Type) { case ACPI_TYPE_INTEGER: Status = AcpiExConvertToInteger (Operand1, &LocalOperand1, 16); break; case ACPI_TYPE_STRING: Status = AcpiExConvertToString (Operand1, &LocalOperand1, ACPI_IMPLICIT_CONVERT_HEX); break; case ACPI_TYPE_BUFFER: Status = AcpiExConvertToBuffer (Operand1, &LocalOperand1); break; default: ACPI_ERROR ((AE_INFO, "Invalid object type: 0x%X", Operand0->Common.Type)); Status = AE_AML_INTERNAL; } if (ACPI_FAILURE (Status)) { goto Cleanup; } /* * Both operands are now known to be the same object type * (Both are Integer, String, or Buffer), and we can now perform the * concatenation. */ /* * There are three cases to handle: * * 1) Two Integers concatenated to produce a new Buffer * 2) Two Strings concatenated to produce a new String * 3) Two Buffers concatenated to produce a new Buffer */ switch (Operand0->Common.Type) { case ACPI_TYPE_INTEGER: /* Result of two Integers is a Buffer */ /* Need enough buffer space for two integers */ ReturnDesc = AcpiUtCreateBufferObject ((ACPI_SIZE) ACPI_MUL_2 (AcpiGbl_IntegerByteWidth)); if (!ReturnDesc) { Status = AE_NO_MEMORY; goto Cleanup; } NewBuf = (char *) ReturnDesc->Buffer.Pointer; /* Copy the first integer, LSB first */ ACPI_MEMCPY (NewBuf, &Operand0->Integer.Value, AcpiGbl_IntegerByteWidth); /* Copy the second integer (LSB first) after the first */ ACPI_MEMCPY (NewBuf + AcpiGbl_IntegerByteWidth, &LocalOperand1->Integer.Value, AcpiGbl_IntegerByteWidth); break; case ACPI_TYPE_STRING: /* Result of two Strings is a String */ ReturnDesc = AcpiUtCreateStringObject ( ((ACPI_SIZE) Operand0->String.Length + LocalOperand1->String.Length)); if (!ReturnDesc) { Status = AE_NO_MEMORY; goto Cleanup; } NewBuf = ReturnDesc->String.Pointer; /* Concatenate the strings */ ACPI_STRCPY (NewBuf, Operand0->String.Pointer); ACPI_STRCPY (NewBuf + Operand0->String.Length, LocalOperand1->String.Pointer); break; case ACPI_TYPE_BUFFER: /* Result of two Buffers is a Buffer */ ReturnDesc = AcpiUtCreateBufferObject ( ((ACPI_SIZE) Operand0->Buffer.Length + LocalOperand1->Buffer.Length)); if (!ReturnDesc) { Status = AE_NO_MEMORY; goto Cleanup; } NewBuf = (char *) ReturnDesc->Buffer.Pointer; /* Concatenate the buffers */ ACPI_MEMCPY (NewBuf, Operand0->Buffer.Pointer, Operand0->Buffer.Length); ACPI_MEMCPY (NewBuf + Operand0->Buffer.Length, LocalOperand1->Buffer.Pointer, LocalOperand1->Buffer.Length); break; default: /* Invalid object type, should not happen here */ ACPI_ERROR ((AE_INFO, "Invalid object type: 0x%X", Operand0->Common.Type)); Status =AE_AML_INTERNAL; goto Cleanup; } *ActualReturnDesc = ReturnDesc; Cleanup: if (LocalOperand1 != Operand1) { AcpiUtRemoveReference (LocalOperand1); } return_ACPI_STATUS (Status); } /******************************************************************************* * * FUNCTION: AcpiExDoMathOp * * PARAMETERS: Opcode - AML opcode * Integer0 - Integer operand #0 * Integer1 - Integer operand #1 * * RETURN: Integer result of the operation * * DESCRIPTION: Execute a math AML opcode. The purpose of having all of the * math functions here is to prevent a lot of pointer dereferencing * to obtain the operands. * ******************************************************************************/ UINT64 AcpiExDoMathOp ( UINT16 Opcode, UINT64 Integer0, UINT64 Integer1) { ACPI_FUNCTION_ENTRY (); switch (Opcode) { case AML_ADD_OP: /* Add (Integer0, Integer1, Result) */ return (Integer0 + Integer1); case AML_BIT_AND_OP: /* And (Integer0, Integer1, Result) */ return (Integer0 & Integer1); case AML_BIT_NAND_OP: /* NAnd (Integer0, Integer1, Result) */ return (~(Integer0 & Integer1)); case AML_BIT_OR_OP: /* Or (Integer0, Integer1, Result) */ return (Integer0 | Integer1); case AML_BIT_NOR_OP: /* NOr (Integer0, Integer1, Result) */ return (~(Integer0 | Integer1)); case AML_BIT_XOR_OP: /* XOr (Integer0, Integer1, Result) */ return (Integer0 ^ Integer1); case AML_MULTIPLY_OP: /* Multiply (Integer0, Integer1, Result) */ return (Integer0 * Integer1); case AML_SHIFT_LEFT_OP: /* ShiftLeft (Operand, ShiftCount, Result)*/ /* * We need to check if the shiftcount is larger than the integer bit * width since the behavior of this is not well-defined in the C language. */ if (Integer1 >= AcpiGbl_IntegerBitWidth) { return (0); } return (Integer0 << Integer1); case AML_SHIFT_RIGHT_OP: /* ShiftRight (Operand, ShiftCount, Result) */ /* * We need to check if the shiftcount is larger than the integer bit * width since the behavior of this is not well-defined in the C language. */ if (Integer1 >= AcpiGbl_IntegerBitWidth) { return (0); } return (Integer0 >> Integer1); case AML_SUBTRACT_OP: /* Subtract (Integer0, Integer1, Result) */ return (Integer0 - Integer1); default: return (0); } } /******************************************************************************* * * FUNCTION: AcpiExDoLogicalNumericOp * * PARAMETERS: Opcode - AML opcode * Integer0 - Integer operand #0 * Integer1 - Integer operand #1 * LogicalResult - TRUE/FALSE result of the operation * * RETURN: Status * * DESCRIPTION: Execute a logical "Numeric" AML opcode. For these Numeric * operators (LAnd and LOr), both operands must be integers. * * Note: cleanest machine code seems to be produced by the code * below, rather than using statements of the form: * Result = (Integer0 && Integer1); * ******************************************************************************/ ACPI_STATUS AcpiExDoLogicalNumericOp ( UINT16 Opcode, UINT64 Integer0, UINT64 Integer1, BOOLEAN *LogicalResult) { ACPI_STATUS Status = AE_OK; BOOLEAN LocalResult = FALSE; ACPI_FUNCTION_TRACE (ExDoLogicalNumericOp); switch (Opcode) { case AML_LAND_OP: /* LAnd (Integer0, Integer1) */ if (Integer0 && Integer1) { LocalResult = TRUE; } break; case AML_LOR_OP: /* LOr (Integer0, Integer1) */ if (Integer0 || Integer1) { LocalResult = TRUE; } break; default: Status = AE_AML_INTERNAL; break; } /* Return the logical result and status */ *LogicalResult = LocalResult; return_ACPI_STATUS (Status); } /******************************************************************************* * * FUNCTION: AcpiExDoLogicalOp * * PARAMETERS: Opcode - AML opcode * Operand0 - operand #0 * Operand1 - operand #1 * LogicalResult - TRUE/FALSE result of the operation * * RETURN: Status * * DESCRIPTION: Execute a logical AML opcode. The purpose of having all of the * functions here is to prevent a lot of pointer dereferencing * to obtain the operands and to simplify the generation of the * logical value. For the Numeric operators (LAnd and LOr), both * operands must be integers. For the other logical operators, * operands can be any combination of Integer/String/Buffer. The * first operand determines the type to which the second operand * will be converted. * * Note: cleanest machine code seems to be produced by the code * below, rather than using statements of the form: * Result = (Operand0 == Operand1); * ******************************************************************************/ ACPI_STATUS AcpiExDoLogicalOp ( UINT16 Opcode, ACPI_OPERAND_OBJECT *Operand0, ACPI_OPERAND_OBJECT *Operand1, BOOLEAN *LogicalResult) { ACPI_OPERAND_OBJECT *LocalOperand1 = Operand1; UINT64 Integer0; UINT64 Integer1; UINT32 Length0; UINT32 Length1; ACPI_STATUS Status = AE_OK; BOOLEAN LocalResult = FALSE; int Compare; ACPI_FUNCTION_TRACE (ExDoLogicalOp); /* * Convert the second operand if necessary. The first operand * determines the type of the second operand, (See the Data Types * section of the ACPI 3.0+ specification.) Both object types are * guaranteed to be either Integer/String/Buffer by the operand * resolution mechanism. */ switch (Operand0->Common.Type) { case ACPI_TYPE_INTEGER: Status = AcpiExConvertToInteger (Operand1, &LocalOperand1, 16); break; case ACPI_TYPE_STRING: Status = AcpiExConvertToString (Operand1, &LocalOperand1, ACPI_IMPLICIT_CONVERT_HEX); break; case ACPI_TYPE_BUFFER: Status = AcpiExConvertToBuffer (Operand1, &LocalOperand1); break; default: Status = AE_AML_INTERNAL; break; } if (ACPI_FAILURE (Status)) { goto Cleanup; } /* * Two cases: 1) Both Integers, 2) Both Strings or Buffers */ if (Operand0->Common.Type == ACPI_TYPE_INTEGER) { /* * 1) Both operands are of type integer * Note: LocalOperand1 may have changed above */ Integer0 = Operand0->Integer.Value; Integer1 = LocalOperand1->Integer.Value; switch (Opcode) { case AML_LEQUAL_OP: /* LEqual (Operand0, Operand1) */ if (Integer0 == Integer1) { LocalResult = TRUE; } break; case AML_LGREATER_OP: /* LGreater (Operand0, Operand1) */ if (Integer0 > Integer1) { LocalResult = TRUE; } break; case AML_LLESS_OP: /* LLess (Operand0, Operand1) */ if (Integer0 < Integer1) { LocalResult = TRUE; } break; default: Status = AE_AML_INTERNAL; break; } } else { /* * 2) Both operands are Strings or both are Buffers * Note: Code below takes advantage of common Buffer/String * object fields. LocalOperand1 may have changed above. Use * memcmp to handle nulls in buffers. */ Length0 = Operand0->Buffer.Length; Length1 = LocalOperand1->Buffer.Length; /* Lexicographic compare: compare the data bytes */ Compare = ACPI_MEMCMP (Operand0->Buffer.Pointer, LocalOperand1->Buffer.Pointer, (Length0 > Length1) ? Length1 : Length0); switch (Opcode) { case AML_LEQUAL_OP: /* LEqual (Operand0, Operand1) */ /* Length and all bytes must be equal */ if ((Length0 == Length1) && (Compare == 0)) { /* Length and all bytes match ==> TRUE */ LocalResult = TRUE; } break; case AML_LGREATER_OP: /* LGreater (Operand0, Operand1) */ if (Compare > 0) { LocalResult = TRUE; goto Cleanup; /* TRUE */ } if (Compare < 0) { goto Cleanup; /* FALSE */ } /* Bytes match (to shortest length), compare lengths */ if (Length0 > Length1) { LocalResult = TRUE; } break; case AML_LLESS_OP: /* LLess (Operand0, Operand1) */ if (Compare > 0) { goto Cleanup; /* FALSE */ } if (Compare < 0) { LocalResult = TRUE; goto Cleanup; /* TRUE */ } /* Bytes match (to shortest length), compare lengths */ if (Length0 < Length1) { LocalResult = TRUE; } break; default: Status = AE_AML_INTERNAL; break; } } Cleanup: /* New object was created if implicit conversion performed - delete */ if (LocalOperand1 != Operand1) { AcpiUtRemoveReference (LocalOperand1); } /* Return the logical result and status */ *LogicalResult = LocalResult; return_ACPI_STATUS (Status); } src/acpica/source/components/executer/exmutex.c000066400000000000000000000501501231470457100222460ustar00rootroot00000000000000/****************************************************************************** * * Module Name: exmutex - ASL Mutex Acquire/Release functions * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #define __EXMUTEX_C__ #include "acpi.h" #include "accommon.h" #include "acinterp.h" #include "acevents.h" #define _COMPONENT ACPI_EXECUTER ACPI_MODULE_NAME ("exmutex") /* Local prototypes */ static void AcpiExLinkMutex ( ACPI_OPERAND_OBJECT *ObjDesc, ACPI_THREAD_STATE *Thread); /******************************************************************************* * * FUNCTION: AcpiExUnlinkMutex * * PARAMETERS: ObjDesc - The mutex to be unlinked * * RETURN: None * * DESCRIPTION: Remove a mutex from the "AcquiredMutex" list * ******************************************************************************/ void AcpiExUnlinkMutex ( ACPI_OPERAND_OBJECT *ObjDesc) { ACPI_THREAD_STATE *Thread = ObjDesc->Mutex.OwnerThread; if (!Thread) { return; } /* Doubly linked list */ if (ObjDesc->Mutex.Next) { (ObjDesc->Mutex.Next)->Mutex.Prev = ObjDesc->Mutex.Prev; } if (ObjDesc->Mutex.Prev) { (ObjDesc->Mutex.Prev)->Mutex.Next = ObjDesc->Mutex.Next; /* * Migrate the previous sync level associated with this mutex to * the previous mutex on the list so that it may be preserved. * This handles the case where several mutexes have been acquired * at the same level, but are not released in opposite order. */ (ObjDesc->Mutex.Prev)->Mutex.OriginalSyncLevel = ObjDesc->Mutex.OriginalSyncLevel; } else { Thread->AcquiredMutexList = ObjDesc->Mutex.Next; } } /******************************************************************************* * * FUNCTION: AcpiExLinkMutex * * PARAMETERS: ObjDesc - The mutex to be linked * Thread - Current executing thread object * * RETURN: None * * DESCRIPTION: Add a mutex to the "AcquiredMutex" list for this walk * ******************************************************************************/ static void AcpiExLinkMutex ( ACPI_OPERAND_OBJECT *ObjDesc, ACPI_THREAD_STATE *Thread) { ACPI_OPERAND_OBJECT *ListHead; ListHead = Thread->AcquiredMutexList; /* This object will be the first object in the list */ ObjDesc->Mutex.Prev = NULL; ObjDesc->Mutex.Next = ListHead; /* Update old first object to point back to this object */ if (ListHead) { ListHead->Mutex.Prev = ObjDesc; } /* Update list head */ Thread->AcquiredMutexList = ObjDesc; } /******************************************************************************* * * FUNCTION: AcpiExAcquireMutexObject * * PARAMETERS: Timeout - Timeout in milliseconds * ObjDesc - Mutex object * ThreadId - Current thread state * * RETURN: Status * * DESCRIPTION: Acquire an AML mutex, low-level interface. Provides a common * path that supports multiple acquires by the same thread. * * MUTEX: Interpreter must be locked * * NOTE: This interface is called from three places: * 1) From AcpiExAcquireMutex, via an AML Acquire() operator * 2) From AcpiExAcquireGlobalLock when an AML Field access requires the * global lock * 3) From the external interface, AcpiAcquireGlobalLock * ******************************************************************************/ ACPI_STATUS AcpiExAcquireMutexObject ( UINT16 Timeout, ACPI_OPERAND_OBJECT *ObjDesc, ACPI_THREAD_ID ThreadId) { ACPI_STATUS Status; ACPI_FUNCTION_TRACE_PTR (ExAcquireMutexObject, ObjDesc); if (!ObjDesc) { return_ACPI_STATUS (AE_BAD_PARAMETER); } /* Support for multiple acquires by the owning thread */ if (ObjDesc->Mutex.ThreadId == ThreadId) { /* * The mutex is already owned by this thread, just increment the * acquisition depth */ ObjDesc->Mutex.AcquisitionDepth++; return_ACPI_STATUS (AE_OK); } /* Acquire the mutex, wait if necessary. Special case for Global Lock */ if (ObjDesc == AcpiGbl_GlobalLockMutex) { Status = AcpiEvAcquireGlobalLock (Timeout); } else { Status = AcpiExSystemWaitMutex (ObjDesc->Mutex.OsMutex, Timeout); } if (ACPI_FAILURE (Status)) { /* Includes failure from a timeout on TimeDesc */ return_ACPI_STATUS (Status); } /* Acquired the mutex: update mutex object */ ObjDesc->Mutex.ThreadId = ThreadId; ObjDesc->Mutex.AcquisitionDepth = 1; ObjDesc->Mutex.OriginalSyncLevel = 0; ObjDesc->Mutex.OwnerThread = NULL; /* Used only for AML Acquire() */ return_ACPI_STATUS (AE_OK); } /******************************************************************************* * * FUNCTION: AcpiExAcquireMutex * * PARAMETERS: TimeDesc - Timeout integer * ObjDesc - Mutex object * WalkState - Current method execution state * * RETURN: Status * * DESCRIPTION: Acquire an AML mutex * ******************************************************************************/ ACPI_STATUS AcpiExAcquireMutex ( ACPI_OPERAND_OBJECT *TimeDesc, ACPI_OPERAND_OBJECT *ObjDesc, ACPI_WALK_STATE *WalkState) { ACPI_STATUS Status; ACPI_FUNCTION_TRACE_PTR (ExAcquireMutex, ObjDesc); if (!ObjDesc) { return_ACPI_STATUS (AE_BAD_PARAMETER); } /* Must have a valid thread state struct */ if (!WalkState->Thread) { ACPI_ERROR ((AE_INFO, "Cannot acquire Mutex [%4.4s], null thread info", AcpiUtGetNodeName (ObjDesc->Mutex.Node))); return_ACPI_STATUS (AE_AML_INTERNAL); } /* * Current sync level must be less than or equal to the sync level of the * mutex. This mechanism provides some deadlock prevention */ if (WalkState->Thread->CurrentSyncLevel > ObjDesc->Mutex.SyncLevel) { ACPI_ERROR ((AE_INFO, "Cannot acquire Mutex [%4.4s], current SyncLevel is too large (%u)", AcpiUtGetNodeName (ObjDesc->Mutex.Node), WalkState->Thread->CurrentSyncLevel)); return_ACPI_STATUS (AE_AML_MUTEX_ORDER); } Status = AcpiExAcquireMutexObject ((UINT16) TimeDesc->Integer.Value, ObjDesc, WalkState->Thread->ThreadId); if (ACPI_SUCCESS (Status) && ObjDesc->Mutex.AcquisitionDepth == 1) { /* Save Thread object, original/current sync levels */ ObjDesc->Mutex.OwnerThread = WalkState->Thread; ObjDesc->Mutex.OriginalSyncLevel = WalkState->Thread->CurrentSyncLevel; WalkState->Thread->CurrentSyncLevel = ObjDesc->Mutex.SyncLevel; /* Link the mutex to the current thread for force-unlock at method exit */ AcpiExLinkMutex (ObjDesc, WalkState->Thread); } return_ACPI_STATUS (Status); } /******************************************************************************* * * FUNCTION: AcpiExReleaseMutexObject * * PARAMETERS: ObjDesc - The object descriptor for this op * * RETURN: Status * * DESCRIPTION: Release a previously acquired Mutex, low level interface. * Provides a common path that supports multiple releases (after * previous multiple acquires) by the same thread. * * MUTEX: Interpreter must be locked * * NOTE: This interface is called from three places: * 1) From AcpiExReleaseMutex, via an AML Acquire() operator * 2) From AcpiExReleaseGlobalLock when an AML Field access requires the * global lock * 3) From the external interface, AcpiReleaseGlobalLock * ******************************************************************************/ ACPI_STATUS AcpiExReleaseMutexObject ( ACPI_OPERAND_OBJECT *ObjDesc) { ACPI_STATUS Status = AE_OK; ACPI_FUNCTION_TRACE (ExReleaseMutexObject); if (ObjDesc->Mutex.AcquisitionDepth == 0) { return_ACPI_STATUS (AE_NOT_ACQUIRED); } /* Match multiple Acquires with multiple Releases */ ObjDesc->Mutex.AcquisitionDepth--; if (ObjDesc->Mutex.AcquisitionDepth != 0) { /* Just decrement the depth and return */ return_ACPI_STATUS (AE_OK); } if (ObjDesc->Mutex.OwnerThread) { /* Unlink the mutex from the owner's list */ AcpiExUnlinkMutex (ObjDesc); ObjDesc->Mutex.OwnerThread = NULL; } /* Release the mutex, special case for Global Lock */ if (ObjDesc == AcpiGbl_GlobalLockMutex) { Status = AcpiEvReleaseGlobalLock (); } else { AcpiOsReleaseMutex (ObjDesc->Mutex.OsMutex); } /* Clear mutex info */ ObjDesc->Mutex.ThreadId = 0; return_ACPI_STATUS (Status); } /******************************************************************************* * * FUNCTION: AcpiExReleaseMutex * * PARAMETERS: ObjDesc - The object descriptor for this op * WalkState - Current method execution state * * RETURN: Status * * DESCRIPTION: Release a previously acquired Mutex. * ******************************************************************************/ ACPI_STATUS AcpiExReleaseMutex ( ACPI_OPERAND_OBJECT *ObjDesc, ACPI_WALK_STATE *WalkState) { ACPI_STATUS Status = AE_OK; UINT8 PreviousSyncLevel; ACPI_THREAD_STATE *OwnerThread; ACPI_FUNCTION_TRACE (ExReleaseMutex); if (!ObjDesc) { return_ACPI_STATUS (AE_BAD_PARAMETER); } OwnerThread = ObjDesc->Mutex.OwnerThread; /* The mutex must have been previously acquired in order to release it */ if (!OwnerThread) { ACPI_ERROR ((AE_INFO, "Cannot release Mutex [%4.4s], not acquired", AcpiUtGetNodeName (ObjDesc->Mutex.Node))); return_ACPI_STATUS (AE_AML_MUTEX_NOT_ACQUIRED); } /* Must have a valid thread ID */ if (!WalkState->Thread) { ACPI_ERROR ((AE_INFO, "Cannot release Mutex [%4.4s], null thread info", AcpiUtGetNodeName (ObjDesc->Mutex.Node))); return_ACPI_STATUS (AE_AML_INTERNAL); } /* * The Mutex is owned, but this thread must be the owner. * Special case for Global Lock, any thread can release */ if ((OwnerThread->ThreadId != WalkState->Thread->ThreadId) && (ObjDesc != AcpiGbl_GlobalLockMutex)) { ACPI_ERROR ((AE_INFO, "Thread %u cannot release Mutex [%4.4s] acquired by thread %u", (UINT32) WalkState->Thread->ThreadId, AcpiUtGetNodeName (ObjDesc->Mutex.Node), (UINT32) OwnerThread->ThreadId)); return_ACPI_STATUS (AE_AML_NOT_OWNER); } /* * The sync level of the mutex must be equal to the current sync level. In * other words, the current level means that at least one mutex at that * level is currently being held. Attempting to release a mutex of a * different level can only mean that the mutex ordering rule is being * violated. This behavior is clarified in ACPI 4.0 specification. */ if (ObjDesc->Mutex.SyncLevel != OwnerThread->CurrentSyncLevel) { ACPI_ERROR ((AE_INFO, "Cannot release Mutex [%4.4s], SyncLevel mismatch: mutex %u current %u", AcpiUtGetNodeName (ObjDesc->Mutex.Node), ObjDesc->Mutex.SyncLevel, WalkState->Thread->CurrentSyncLevel)); return_ACPI_STATUS (AE_AML_MUTEX_ORDER); } /* * Get the previous SyncLevel from the head of the acquired mutex list. * This handles the case where several mutexes at the same level have been * acquired, but are not released in reverse order. */ PreviousSyncLevel = OwnerThread->AcquiredMutexList->Mutex.OriginalSyncLevel; Status = AcpiExReleaseMutexObject (ObjDesc); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } if (ObjDesc->Mutex.AcquisitionDepth == 0) { /* Restore the previous SyncLevel */ OwnerThread->CurrentSyncLevel = PreviousSyncLevel; } return_ACPI_STATUS (Status); } /******************************************************************************* * * FUNCTION: AcpiExReleaseAllMutexes * * PARAMETERS: Thread - Current executing thread object * * RETURN: Status * * DESCRIPTION: Release all mutexes held by this thread * * NOTE: This function is called as the thread is exiting the interpreter. * Mutexes are not released when an individual control method is exited, but * only when the parent thread actually exits the interpreter. This allows one * method to acquire a mutex, and a different method to release it, as long as * this is performed underneath a single parent control method. * ******************************************************************************/ void AcpiExReleaseAllMutexes ( ACPI_THREAD_STATE *Thread) { ACPI_OPERAND_OBJECT *Next = Thread->AcquiredMutexList; ACPI_OPERAND_OBJECT *ObjDesc; ACPI_FUNCTION_NAME (ExReleaseAllMutexes); /* Traverse the list of owned mutexes, releasing each one */ while (Next) { ObjDesc = Next; Next = ObjDesc->Mutex.Next; ObjDesc->Mutex.Prev = NULL; ObjDesc->Mutex.Next = NULL; ObjDesc->Mutex.AcquisitionDepth = 0; ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Force-releasing held mutex: %p\n", ObjDesc)); /* Release the mutex, special case for Global Lock */ if (ObjDesc == AcpiGbl_GlobalLockMutex) { /* Ignore errors */ (void) AcpiEvReleaseGlobalLock (); } else { AcpiOsReleaseMutex (ObjDesc->Mutex.OsMutex); } /* Mark mutex unowned */ ObjDesc->Mutex.OwnerThread = NULL; ObjDesc->Mutex.ThreadId = 0; /* Update Thread SyncLevel (Last mutex is the important one) */ Thread->CurrentSyncLevel = ObjDesc->Mutex.OriginalSyncLevel; } } src/acpica/source/components/executer/exnames.c000066400000000000000000000427361231470457100222220ustar00rootroot00000000000000/****************************************************************************** * * Module Name: exnames - interpreter/scanner name load/execute * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #define __EXNAMES_C__ #include "acpi.h" #include "accommon.h" #include "acinterp.h" #include "amlcode.h" #define _COMPONENT ACPI_EXECUTER ACPI_MODULE_NAME ("exnames") /* Local prototypes */ static char * AcpiExAllocateNameString ( UINT32 PrefixCount, UINT32 NumNameSegs); static ACPI_STATUS AcpiExNameSegment ( UINT8 **InAmlAddress, char *NameString); /******************************************************************************* * * FUNCTION: AcpiExAllocateNameString * * PARAMETERS: PrefixCount - Count of parent levels. Special cases: * (-1)==root, 0==none * NumNameSegs - count of 4-character name segments * * RETURN: A pointer to the allocated string segment. This segment must * be deleted by the caller. * * DESCRIPTION: Allocate a buffer for a name string. Ensure allocated name * string is long enough, and set up prefix if any. * ******************************************************************************/ static char * AcpiExAllocateNameString ( UINT32 PrefixCount, UINT32 NumNameSegs) { char *TempPtr; char *NameString; UINT32 SizeNeeded; ACPI_FUNCTION_TRACE (ExAllocateNameString); /* * Allow room for all \ and ^ prefixes, all segments and a MultiNamePrefix. * Also, one byte for the null terminator. * This may actually be somewhat longer than needed. */ if (PrefixCount == ACPI_UINT32_MAX) { /* Special case for root */ SizeNeeded = 1 + (ACPI_NAME_SIZE * NumNameSegs) + 2 + 1; } else { SizeNeeded = PrefixCount + (ACPI_NAME_SIZE * NumNameSegs) + 2 + 1; } /* * Allocate a buffer for the name. * This buffer must be deleted by the caller! */ NameString = ACPI_ALLOCATE (SizeNeeded); if (!NameString) { ACPI_ERROR ((AE_INFO, "Could not allocate size %u", SizeNeeded)); return_PTR (NULL); } TempPtr = NameString; /* Set up Root or Parent prefixes if needed */ if (PrefixCount == ACPI_UINT32_MAX) { *TempPtr++ = AML_ROOT_PREFIX; } else { while (PrefixCount--) { *TempPtr++ = AML_PARENT_PREFIX; } } /* Set up Dual or Multi prefixes if needed */ if (NumNameSegs > 2) { /* Set up multi prefixes */ *TempPtr++ = AML_MULTI_NAME_PREFIX_OP; *TempPtr++ = (char) NumNameSegs; } else if (2 == NumNameSegs) { /* Set up dual prefixes */ *TempPtr++ = AML_DUAL_NAME_PREFIX; } /* * Terminate string following prefixes. AcpiExNameSegment() will * append the segment(s) */ *TempPtr = 0; return_PTR (NameString); } /******************************************************************************* * * FUNCTION: AcpiExNameSegment * * PARAMETERS: InAmlAddress - Pointer to the name in the AML code * NameString - Where to return the name. The name is appended * to any existing string to form a namepath * * RETURN: Status * * DESCRIPTION: Extract an ACPI name (4 bytes) from the AML byte stream * ******************************************************************************/ static ACPI_STATUS AcpiExNameSegment ( UINT8 **InAmlAddress, char *NameString) { char *AmlAddress = (void *) *InAmlAddress; ACPI_STATUS Status = AE_OK; UINT32 Index; char CharBuf[5]; ACPI_FUNCTION_TRACE (ExNameSegment); /* * If first character is a digit, then we know that we aren't looking at a * valid name segment */ CharBuf[0] = *AmlAddress; if ('0' <= CharBuf[0] && CharBuf[0] <= '9') { ACPI_ERROR ((AE_INFO, "Invalid leading digit: %c", CharBuf[0])); return_ACPI_STATUS (AE_CTRL_PENDING); } ACPI_DEBUG_PRINT ((ACPI_DB_LOAD, "Bytes from stream:\n")); for (Index = 0; (Index < ACPI_NAME_SIZE) && (AcpiUtValidAcpiChar (*AmlAddress, 0)); Index++) { CharBuf[Index] = *AmlAddress++; ACPI_DEBUG_PRINT ((ACPI_DB_LOAD, "%c\n", CharBuf[Index])); } /* Valid name segment */ if (Index == 4) { /* Found 4 valid characters */ CharBuf[4] = '\0'; if (NameString) { ACPI_STRCAT (NameString, CharBuf); ACPI_DEBUG_PRINT ((ACPI_DB_NAMES, "Appended to - %s\n", NameString)); } else { ACPI_DEBUG_PRINT ((ACPI_DB_NAMES, "No Name string - %s\n", CharBuf)); } } else if (Index == 0) { /* * First character was not a valid name character, * so we are looking at something other than a name. */ ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Leading character is not alpha: %02Xh (not a name)\n", CharBuf[0])); Status = AE_CTRL_PENDING; } else { /* * Segment started with one or more valid characters, but fewer than * the required 4 */ Status = AE_AML_BAD_NAME; ACPI_ERROR ((AE_INFO, "Bad character 0x%02x in name, at %p", *AmlAddress, AmlAddress)); } *InAmlAddress = ACPI_CAST_PTR (UINT8, AmlAddress); return_ACPI_STATUS (Status); } /******************************************************************************* * * FUNCTION: AcpiExGetNameString * * PARAMETERS: DataType - Object type to be associated with this * name * InAmlAddress - Pointer to the namestring in the AML code * OutNameString - Where the namestring is returned * OutNameLength - Length of the returned string * * RETURN: Status, namestring and length * * DESCRIPTION: Extract a full namepath from the AML byte stream, * including any prefixes. * ******************************************************************************/ ACPI_STATUS AcpiExGetNameString ( ACPI_OBJECT_TYPE DataType, UINT8 *InAmlAddress, char **OutNameString, UINT32 *OutNameLength) { ACPI_STATUS Status = AE_OK; UINT8 *AmlAddress = InAmlAddress; char *NameString = NULL; UINT32 NumSegments; UINT32 PrefixCount = 0; BOOLEAN HasPrefix = FALSE; ACPI_FUNCTION_TRACE_PTR (ExGetNameString, AmlAddress); if (ACPI_TYPE_LOCAL_REGION_FIELD == DataType || ACPI_TYPE_LOCAL_BANK_FIELD == DataType || ACPI_TYPE_LOCAL_INDEX_FIELD == DataType) { /* Disallow prefixes for types associated with FieldUnit names */ NameString = AcpiExAllocateNameString (0, 1); if (!NameString) { Status = AE_NO_MEMORY; } else { Status = AcpiExNameSegment (&AmlAddress, NameString); } } else { /* * DataType is not a field name. * Examine first character of name for root or parent prefix operators */ switch (*AmlAddress) { case AML_ROOT_PREFIX: ACPI_DEBUG_PRINT ((ACPI_DB_LOAD, "RootPrefix(\\) at %p\n", AmlAddress)); /* * Remember that we have a RootPrefix -- * see comment in AcpiExAllocateNameString() */ AmlAddress++; PrefixCount = ACPI_UINT32_MAX; HasPrefix = TRUE; break; case AML_PARENT_PREFIX: /* Increment past possibly multiple parent prefixes */ do { ACPI_DEBUG_PRINT ((ACPI_DB_LOAD, "ParentPrefix (^) at %p\n", AmlAddress)); AmlAddress++; PrefixCount++; } while (*AmlAddress == AML_PARENT_PREFIX); HasPrefix = TRUE; break; default: /* Not a prefix character */ break; } /* Examine first character of name for name segment prefix operator */ switch (*AmlAddress) { case AML_DUAL_NAME_PREFIX: ACPI_DEBUG_PRINT ((ACPI_DB_LOAD, "DualNamePrefix at %p\n", AmlAddress)); AmlAddress++; NameString = AcpiExAllocateNameString (PrefixCount, 2); if (!NameString) { Status = AE_NO_MEMORY; break; } /* Indicate that we processed a prefix */ HasPrefix = TRUE; Status = AcpiExNameSegment (&AmlAddress, NameString); if (ACPI_SUCCESS (Status)) { Status = AcpiExNameSegment (&AmlAddress, NameString); } break; case AML_MULTI_NAME_PREFIX_OP: ACPI_DEBUG_PRINT ((ACPI_DB_LOAD, "MultiNamePrefix at %p\n", AmlAddress)); /* Fetch count of segments remaining in name path */ AmlAddress++; NumSegments = *AmlAddress; NameString = AcpiExAllocateNameString (PrefixCount, NumSegments); if (!NameString) { Status = AE_NO_MEMORY; break; } /* Indicate that we processed a prefix */ AmlAddress++; HasPrefix = TRUE; while (NumSegments && (Status = AcpiExNameSegment (&AmlAddress, NameString)) == AE_OK) { NumSegments--; } break; case 0: /* NullName valid as of 8-12-98 ASL/AML Grammar Update */ if (PrefixCount == ACPI_UINT32_MAX) { ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "NameSeg is \"\\\" followed by NULL\n")); } /* Consume the NULL byte */ AmlAddress++; NameString = AcpiExAllocateNameString (PrefixCount, 0); if (!NameString) { Status = AE_NO_MEMORY; break; } break; default: /* Name segment string */ NameString = AcpiExAllocateNameString (PrefixCount, 1); if (!NameString) { Status = AE_NO_MEMORY; break; } Status = AcpiExNameSegment (&AmlAddress, NameString); break; } } if (AE_CTRL_PENDING == Status && HasPrefix) { /* Ran out of segments after processing a prefix */ ACPI_ERROR ((AE_INFO, "Malformed Name at %p", NameString)); Status = AE_AML_BAD_NAME; } if (ACPI_FAILURE (Status)) { if (NameString) { ACPI_FREE (NameString); } return_ACPI_STATUS (Status); } *OutNameString = NameString; *OutNameLength = (UINT32) (AmlAddress - InAmlAddress); return_ACPI_STATUS (Status); } src/acpica/source/components/executer/exoparg1.c000066400000000000000000001132711231470457100223010ustar00rootroot00000000000000/****************************************************************************** * * Module Name: exoparg1 - AML execution - opcodes with 1 argument * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #define __EXOPARG1_C__ #include "acpi.h" #include "accommon.h" #include "acparser.h" #include "acdispat.h" #include "acinterp.h" #include "amlcode.h" #include "acnamesp.h" #define _COMPONENT ACPI_EXECUTER ACPI_MODULE_NAME ("exoparg1") /*! * Naming convention for AML interpreter execution routines. * * The routines that begin execution of AML opcodes are named with a common * convention based upon the number of arguments, the number of target operands, * and whether or not a value is returned: * * AcpiExOpcode_xA_yT_zR * * Where: * * xA - ARGUMENTS: The number of arguments (input operands) that are * required for this opcode type (0 through 6 args). * yT - TARGETS: The number of targets (output operands) that are required * for this opcode type (0, 1, or 2 targets). * zR - RETURN VALUE: Indicates whether this opcode type returns a value * as the function return (0 or 1). * * The AcpiExOpcode* functions are called via the Dispatcher component with * fully resolved operands. !*/ /******************************************************************************* * * FUNCTION: AcpiExOpcode_0A_0T_1R * * PARAMETERS: WalkState - Current state (contains AML opcode) * * RETURN: Status * * DESCRIPTION: Execute operator with no operands, one return value * ******************************************************************************/ ACPI_STATUS AcpiExOpcode_0A_0T_1R ( ACPI_WALK_STATE *WalkState) { ACPI_STATUS Status = AE_OK; ACPI_OPERAND_OBJECT *ReturnDesc = NULL; ACPI_FUNCTION_TRACE_STR (ExOpcode_0A_0T_1R, AcpiPsGetOpcodeName (WalkState->Opcode)); /* Examine the AML opcode */ switch (WalkState->Opcode) { case AML_TIMER_OP: /* Timer () */ /* Create a return object of type Integer */ ReturnDesc = AcpiUtCreateIntegerObject (AcpiOsGetTimer ()); if (!ReturnDesc) { Status = AE_NO_MEMORY; goto Cleanup; } break; default: /* Unknown opcode */ ACPI_ERROR ((AE_INFO, "Unknown AML opcode 0x%X", WalkState->Opcode)); Status = AE_AML_BAD_OPCODE; break; } Cleanup: /* Delete return object on error */ if ((ACPI_FAILURE (Status)) || WalkState->ResultObj) { AcpiUtRemoveReference (ReturnDesc); WalkState->ResultObj = NULL; } else { /* Save the return value */ WalkState->ResultObj = ReturnDesc; } return_ACPI_STATUS (Status); } /******************************************************************************* * * FUNCTION: AcpiExOpcode_1A_0T_0R * * PARAMETERS: WalkState - Current state (contains AML opcode) * * RETURN: Status * * DESCRIPTION: Execute Type 1 monadic operator with numeric operand on * object stack * ******************************************************************************/ ACPI_STATUS AcpiExOpcode_1A_0T_0R ( ACPI_WALK_STATE *WalkState) { ACPI_OPERAND_OBJECT **Operand = &WalkState->Operands[0]; ACPI_STATUS Status = AE_OK; ACPI_FUNCTION_TRACE_STR (ExOpcode_1A_0T_0R, AcpiPsGetOpcodeName (WalkState->Opcode)); /* Examine the AML opcode */ switch (WalkState->Opcode) { case AML_RELEASE_OP: /* Release (MutexObject) */ Status = AcpiExReleaseMutex (Operand[0], WalkState); break; case AML_RESET_OP: /* Reset (EventObject) */ Status = AcpiExSystemResetEvent (Operand[0]); break; case AML_SIGNAL_OP: /* Signal (EventObject) */ Status = AcpiExSystemSignalEvent (Operand[0]); break; case AML_SLEEP_OP: /* Sleep (MsecTime) */ Status = AcpiExSystemDoSleep (Operand[0]->Integer.Value); break; case AML_STALL_OP: /* Stall (UsecTime) */ Status = AcpiExSystemDoStall ((UINT32) Operand[0]->Integer.Value); break; case AML_UNLOAD_OP: /* Unload (Handle) */ Status = AcpiExUnloadTable (Operand[0]); break; default: /* Unknown opcode */ ACPI_ERROR ((AE_INFO, "Unknown AML opcode 0x%X", WalkState->Opcode)); Status = AE_AML_BAD_OPCODE; break; } return_ACPI_STATUS (Status); } /******************************************************************************* * * FUNCTION: AcpiExOpcode_1A_1T_0R * * PARAMETERS: WalkState - Current state (contains AML opcode) * * RETURN: Status * * DESCRIPTION: Execute opcode with one argument, one target, and no * return value. * ******************************************************************************/ ACPI_STATUS AcpiExOpcode_1A_1T_0R ( ACPI_WALK_STATE *WalkState) { ACPI_STATUS Status = AE_OK; ACPI_OPERAND_OBJECT **Operand = &WalkState->Operands[0]; ACPI_FUNCTION_TRACE_STR (ExOpcode_1A_1T_0R, AcpiPsGetOpcodeName (WalkState->Opcode)); /* Examine the AML opcode */ switch (WalkState->Opcode) { case AML_LOAD_OP: Status = AcpiExLoadOp (Operand[0], Operand[1], WalkState); break; default: /* Unknown opcode */ ACPI_ERROR ((AE_INFO, "Unknown AML opcode 0x%X", WalkState->Opcode)); Status = AE_AML_BAD_OPCODE; goto Cleanup; } Cleanup: return_ACPI_STATUS (Status); } /******************************************************************************* * * FUNCTION: AcpiExOpcode_1A_1T_1R * * PARAMETERS: WalkState - Current state (contains AML opcode) * * RETURN: Status * * DESCRIPTION: Execute opcode with one argument, one target, and a * return value. * ******************************************************************************/ ACPI_STATUS AcpiExOpcode_1A_1T_1R ( ACPI_WALK_STATE *WalkState) { ACPI_STATUS Status = AE_OK; ACPI_OPERAND_OBJECT **Operand = &WalkState->Operands[0]; ACPI_OPERAND_OBJECT *ReturnDesc = NULL; ACPI_OPERAND_OBJECT *ReturnDesc2 = NULL; UINT32 Temp32; UINT32 i; UINT64 PowerOfTen; UINT64 Digit; ACPI_FUNCTION_TRACE_STR (ExOpcode_1A_1T_1R, AcpiPsGetOpcodeName (WalkState->Opcode)); /* Examine the AML opcode */ switch (WalkState->Opcode) { case AML_BIT_NOT_OP: case AML_FIND_SET_LEFT_BIT_OP: case AML_FIND_SET_RIGHT_BIT_OP: case AML_FROM_BCD_OP: case AML_TO_BCD_OP: case AML_COND_REF_OF_OP: /* Create a return object of type Integer for these opcodes */ ReturnDesc = AcpiUtCreateInternalObject (ACPI_TYPE_INTEGER); if (!ReturnDesc) { Status = AE_NO_MEMORY; goto Cleanup; } switch (WalkState->Opcode) { case AML_BIT_NOT_OP: /* Not (Operand, Result) */ ReturnDesc->Integer.Value = ~Operand[0]->Integer.Value; break; case AML_FIND_SET_LEFT_BIT_OP: /* FindSetLeftBit (Operand, Result) */ ReturnDesc->Integer.Value = Operand[0]->Integer.Value; /* * Acpi specification describes Integer type as a little * endian unsigned value, so this boundary condition is valid. */ for (Temp32 = 0; ReturnDesc->Integer.Value && Temp32 < ACPI_INTEGER_BIT_SIZE; ++Temp32) { ReturnDesc->Integer.Value >>= 1; } ReturnDesc->Integer.Value = Temp32; break; case AML_FIND_SET_RIGHT_BIT_OP: /* FindSetRightBit (Operand, Result) */ ReturnDesc->Integer.Value = Operand[0]->Integer.Value; /* * The Acpi specification describes Integer type as a little * endian unsigned value, so this boundary condition is valid. */ for (Temp32 = 0; ReturnDesc->Integer.Value && Temp32 < ACPI_INTEGER_BIT_SIZE; ++Temp32) { ReturnDesc->Integer.Value <<= 1; } /* Since the bit position is one-based, subtract from 33 (65) */ ReturnDesc->Integer.Value = Temp32 == 0 ? 0 : (ACPI_INTEGER_BIT_SIZE + 1) - Temp32; break; case AML_FROM_BCD_OP: /* FromBcd (BCDValue, Result) */ /* * The 64-bit ACPI integer can hold 16 4-bit BCD characters * (if table is 32-bit, integer can hold 8 BCD characters) * Convert each 4-bit BCD value */ PowerOfTen = 1; ReturnDesc->Integer.Value = 0; Digit = Operand[0]->Integer.Value; /* Convert each BCD digit (each is one nybble wide) */ for (i = 0; (i < AcpiGbl_IntegerNybbleWidth) && (Digit > 0); i++) { /* Get the least significant 4-bit BCD digit */ Temp32 = ((UINT32) Digit) & 0xF; /* Check the range of the digit */ if (Temp32 > 9) { ACPI_ERROR ((AE_INFO, "BCD digit too large (not decimal): 0x%X", Temp32)); Status = AE_AML_NUMERIC_OVERFLOW; goto Cleanup; } /* Sum the digit into the result with the current power of 10 */ ReturnDesc->Integer.Value += (((UINT64) Temp32) * PowerOfTen); /* Shift to next BCD digit */ Digit >>= 4; /* Next power of 10 */ PowerOfTen *= 10; } break; case AML_TO_BCD_OP: /* ToBcd (Operand, Result) */ ReturnDesc->Integer.Value = 0; Digit = Operand[0]->Integer.Value; /* Each BCD digit is one nybble wide */ for (i = 0; (i < AcpiGbl_IntegerNybbleWidth) && (Digit > 0); i++) { (void) AcpiUtShortDivide (Digit, 10, &Digit, &Temp32); /* * Insert the BCD digit that resides in the * remainder from above */ ReturnDesc->Integer.Value |= (((UINT64) Temp32) << ACPI_MUL_4 (i)); } /* Overflow if there is any data left in Digit */ if (Digit > 0) { ACPI_ERROR ((AE_INFO, "Integer too large to convert to BCD: 0x%8.8X%8.8X", ACPI_FORMAT_UINT64 (Operand[0]->Integer.Value))); Status = AE_AML_NUMERIC_OVERFLOW; goto Cleanup; } break; case AML_COND_REF_OF_OP: /* CondRefOf (SourceObject, Result) */ /* * This op is a little strange because the internal return value is * different than the return value stored in the result descriptor * (There are really two return values) */ if ((ACPI_NAMESPACE_NODE *) Operand[0] == AcpiGbl_RootNode) { /* * This means that the object does not exist in the namespace, * return FALSE */ ReturnDesc->Integer.Value = 0; goto Cleanup; } /* Get the object reference, store it, and remove our reference */ Status = AcpiExGetObjectReference (Operand[0], &ReturnDesc2, WalkState); if (ACPI_FAILURE (Status)) { goto Cleanup; } Status = AcpiExStore (ReturnDesc2, Operand[1], WalkState); AcpiUtRemoveReference (ReturnDesc2); /* The object exists in the namespace, return TRUE */ ReturnDesc->Integer.Value = ACPI_UINT64_MAX; goto Cleanup; default: /* No other opcodes get here */ break; } break; case AML_STORE_OP: /* Store (Source, Target) */ /* * A store operand is typically a number, string, buffer or lvalue * Be careful about deleting the source object, * since the object itself may have been stored. */ Status = AcpiExStore (Operand[0], Operand[1], WalkState); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } /* It is possible that the Store already produced a return object */ if (!WalkState->ResultObj) { /* * Normally, we would remove a reference on the Operand[0] * parameter; But since it is being used as the internal return * object (meaning we would normally increment it), the two * cancel out, and we simply don't do anything. */ WalkState->ResultObj = Operand[0]; WalkState->Operands[0] = NULL; /* Prevent deletion */ } return_ACPI_STATUS (Status); /* * ACPI 2.0 Opcodes */ case AML_COPY_OP: /* Copy (Source, Target) */ Status = AcpiUtCopyIobjectToIobject (Operand[0], &ReturnDesc, WalkState); break; case AML_TO_DECSTRING_OP: /* ToDecimalString (Data, Result) */ Status = AcpiExConvertToString (Operand[0], &ReturnDesc, ACPI_EXPLICIT_CONVERT_DECIMAL); if (ReturnDesc == Operand[0]) { /* No conversion performed, add ref to handle return value */ AcpiUtAddReference (ReturnDesc); } break; case AML_TO_HEXSTRING_OP: /* ToHexString (Data, Result) */ Status = AcpiExConvertToString (Operand[0], &ReturnDesc, ACPI_EXPLICIT_CONVERT_HEX); if (ReturnDesc == Operand[0]) { /* No conversion performed, add ref to handle return value */ AcpiUtAddReference (ReturnDesc); } break; case AML_TO_BUFFER_OP: /* ToBuffer (Data, Result) */ Status = AcpiExConvertToBuffer (Operand[0], &ReturnDesc); if (ReturnDesc == Operand[0]) { /* No conversion performed, add ref to handle return value */ AcpiUtAddReference (ReturnDesc); } break; case AML_TO_INTEGER_OP: /* ToInteger (Data, Result) */ Status = AcpiExConvertToInteger (Operand[0], &ReturnDesc, ACPI_ANY_BASE); if (ReturnDesc == Operand[0]) { /* No conversion performed, add ref to handle return value */ AcpiUtAddReference (ReturnDesc); } break; case AML_SHIFT_LEFT_BIT_OP: /* ShiftLeftBit (Source, BitNum) */ case AML_SHIFT_RIGHT_BIT_OP: /* ShiftRightBit (Source, BitNum) */ /* These are two obsolete opcodes */ ACPI_ERROR ((AE_INFO, "%s is obsolete and not implemented", AcpiPsGetOpcodeName (WalkState->Opcode))); Status = AE_SUPPORT; goto Cleanup; default: /* Unknown opcode */ ACPI_ERROR ((AE_INFO, "Unknown AML opcode 0x%X", WalkState->Opcode)); Status = AE_AML_BAD_OPCODE; goto Cleanup; } if (ACPI_SUCCESS (Status)) { /* Store the return value computed above into the target object */ Status = AcpiExStore (ReturnDesc, Operand[1], WalkState); } Cleanup: /* Delete return object on error */ if (ACPI_FAILURE (Status)) { AcpiUtRemoveReference (ReturnDesc); } /* Save return object on success */ else if (!WalkState->ResultObj) { WalkState->ResultObj = ReturnDesc; } return_ACPI_STATUS (Status); } /******************************************************************************* * * FUNCTION: AcpiExOpcode_1A_0T_1R * * PARAMETERS: WalkState - Current state (contains AML opcode) * * RETURN: Status * * DESCRIPTION: Execute opcode with one argument, no target, and a return value * ******************************************************************************/ ACPI_STATUS AcpiExOpcode_1A_0T_1R ( ACPI_WALK_STATE *WalkState) { ACPI_OPERAND_OBJECT **Operand = &WalkState->Operands[0]; ACPI_OPERAND_OBJECT *TempDesc; ACPI_OPERAND_OBJECT *ReturnDesc = NULL; ACPI_STATUS Status = AE_OK; UINT32 Type; UINT64 Value; ACPI_FUNCTION_TRACE_STR (ExOpcode_1A_0T_1R, AcpiPsGetOpcodeName (WalkState->Opcode)); /* Examine the AML opcode */ switch (WalkState->Opcode) { case AML_LNOT_OP: /* LNot (Operand) */ ReturnDesc = AcpiUtCreateIntegerObject ((UINT64) 0); if (!ReturnDesc) { Status = AE_NO_MEMORY; goto Cleanup; } /* * Set result to ONES (TRUE) if Value == 0. Note: * ReturnDesc->Integer.Value is initially == 0 (FALSE) from above. */ if (!Operand[0]->Integer.Value) { ReturnDesc->Integer.Value = ACPI_UINT64_MAX; } break; case AML_DECREMENT_OP: /* Decrement (Operand) */ case AML_INCREMENT_OP: /* Increment (Operand) */ /* * Create a new integer. Can't just get the base integer and * increment it because it may be an Arg or Field. */ ReturnDesc = AcpiUtCreateInternalObject (ACPI_TYPE_INTEGER); if (!ReturnDesc) { Status = AE_NO_MEMORY; goto Cleanup; } /* * Since we are expecting a Reference operand, it can be either a * NS Node or an internal object. */ TempDesc = Operand[0]; if (ACPI_GET_DESCRIPTOR_TYPE (TempDesc) == ACPI_DESC_TYPE_OPERAND) { /* Internal reference object - prevent deletion */ AcpiUtAddReference (TempDesc); } /* * Convert the Reference operand to an Integer (This removes a * reference on the Operand[0] object) * * NOTE: We use LNOT_OP here in order to force resolution of the * reference operand to an actual integer. */ Status = AcpiExResolveOperands (AML_LNOT_OP, &TempDesc, WalkState); if (ACPI_FAILURE (Status)) { ACPI_EXCEPTION ((AE_INFO, Status, "While resolving operands for [%s]", AcpiPsGetOpcodeName (WalkState->Opcode))); goto Cleanup; } /* * TempDesc is now guaranteed to be an Integer object -- * Perform the actual increment or decrement */ if (WalkState->Opcode == AML_INCREMENT_OP) { ReturnDesc->Integer.Value = TempDesc->Integer.Value +1; } else { ReturnDesc->Integer.Value = TempDesc->Integer.Value -1; } /* Finished with this Integer object */ AcpiUtRemoveReference (TempDesc); /* * Store the result back (indirectly) through the original * Reference object */ Status = AcpiExStore (ReturnDesc, Operand[0], WalkState); break; case AML_TYPE_OP: /* ObjectType (SourceObject) */ /* * Note: The operand is not resolved at this point because we want to * get the associated object, not its value. For example, we don't * want to resolve a FieldUnit to its value, we want the actual * FieldUnit object. */ /* Get the type of the base object */ Status = AcpiExResolveMultiple (WalkState, Operand[0], &Type, NULL); if (ACPI_FAILURE (Status)) { goto Cleanup; } /* Allocate a descriptor to hold the type. */ ReturnDesc = AcpiUtCreateIntegerObject ((UINT64) Type); if (!ReturnDesc) { Status = AE_NO_MEMORY; goto Cleanup; } break; case AML_SIZE_OF_OP: /* SizeOf (SourceObject) */ /* * Note: The operand is not resolved at this point because we want to * get the associated object, not its value. */ /* Get the base object */ Status = AcpiExResolveMultiple (WalkState, Operand[0], &Type, &TempDesc); if (ACPI_FAILURE (Status)) { goto Cleanup; } /* * The type of the base object must be integer, buffer, string, or * package. All others are not supported. * * NOTE: Integer is not specifically supported by the ACPI spec, * but is supported implicitly via implicit operand conversion. * rather than bother with conversion, we just use the byte width * global (4 or 8 bytes). */ switch (Type) { case ACPI_TYPE_INTEGER: Value = AcpiGbl_IntegerByteWidth; break; case ACPI_TYPE_STRING: Value = TempDesc->String.Length; break; case ACPI_TYPE_BUFFER: /* Buffer arguments may not be evaluated at this point */ Status = AcpiDsGetBufferArguments (TempDesc); Value = TempDesc->Buffer.Length; break; case ACPI_TYPE_PACKAGE: /* Package arguments may not be evaluated at this point */ Status = AcpiDsGetPackageArguments (TempDesc); Value = TempDesc->Package.Count; break; default: ACPI_ERROR ((AE_INFO, "Operand must be Buffer/Integer/String/Package - found type %s", AcpiUtGetTypeName (Type))); Status = AE_AML_OPERAND_TYPE; goto Cleanup; } if (ACPI_FAILURE (Status)) { goto Cleanup; } /* * Now that we have the size of the object, create a result * object to hold the value */ ReturnDesc = AcpiUtCreateIntegerObject (Value); if (!ReturnDesc) { Status = AE_NO_MEMORY; goto Cleanup; } break; case AML_REF_OF_OP: /* RefOf (SourceObject) */ Status = AcpiExGetObjectReference (Operand[0], &ReturnDesc, WalkState); if (ACPI_FAILURE (Status)) { goto Cleanup; } break; case AML_DEREF_OF_OP: /* DerefOf (ObjReference | String) */ /* Check for a method local or argument, or standalone String */ if (ACPI_GET_DESCRIPTOR_TYPE (Operand[0]) == ACPI_DESC_TYPE_NAMED) { TempDesc = AcpiNsGetAttachedObject ( (ACPI_NAMESPACE_NODE *) Operand[0]); if (TempDesc && ((TempDesc->Common.Type == ACPI_TYPE_STRING) || (TempDesc->Common.Type == ACPI_TYPE_LOCAL_REFERENCE))) { Operand[0] = TempDesc; AcpiUtAddReference (TempDesc); } else { Status = AE_AML_OPERAND_TYPE; goto Cleanup; } } else { switch ((Operand[0])->Common.Type) { case ACPI_TYPE_LOCAL_REFERENCE: /* * This is a DerefOf (LocalX | ArgX) * * Must resolve/dereference the local/arg reference first */ switch (Operand[0]->Reference.Class) { case ACPI_REFCLASS_LOCAL: case ACPI_REFCLASS_ARG: /* Set Operand[0] to the value of the local/arg */ Status = AcpiDsMethodDataGetValue ( Operand[0]->Reference.Class, Operand[0]->Reference.Value, WalkState, &TempDesc); if (ACPI_FAILURE (Status)) { goto Cleanup; } /* * Delete our reference to the input object and * point to the object just retrieved */ AcpiUtRemoveReference (Operand[0]); Operand[0] = TempDesc; break; case ACPI_REFCLASS_REFOF: /* Get the object to which the reference refers */ TempDesc = Operand[0]->Reference.Object; AcpiUtRemoveReference (Operand[0]); Operand[0] = TempDesc; break; default: /* Must be an Index op - handled below */ break; } break; case ACPI_TYPE_STRING: break; default: Status = AE_AML_OPERAND_TYPE; goto Cleanup; } } if (ACPI_GET_DESCRIPTOR_TYPE (Operand[0]) != ACPI_DESC_TYPE_NAMED) { if ((Operand[0])->Common.Type == ACPI_TYPE_STRING) { /* * This is a DerefOf (String). The string is a reference * to a named ACPI object. * * 1) Find the owning Node * 2) Dereference the node to an actual object. Could be a * Field, so we need to resolve the node to a value. */ Status = AcpiNsGetNode (WalkState->ScopeInfo->Scope.Node, Operand[0]->String.Pointer, ACPI_NS_SEARCH_PARENT, ACPI_CAST_INDIRECT_PTR ( ACPI_NAMESPACE_NODE, &ReturnDesc)); if (ACPI_FAILURE (Status)) { goto Cleanup; } Status = AcpiExResolveNodeToValue ( ACPI_CAST_INDIRECT_PTR ( ACPI_NAMESPACE_NODE, &ReturnDesc), WalkState); goto Cleanup; } } /* Operand[0] may have changed from the code above */ if (ACPI_GET_DESCRIPTOR_TYPE (Operand[0]) == ACPI_DESC_TYPE_NAMED) { /* * This is a DerefOf (ObjectReference) * Get the actual object from the Node (This is the dereference). * This case may only happen when a LocalX or ArgX is * dereferenced above. */ ReturnDesc = AcpiNsGetAttachedObject ( (ACPI_NAMESPACE_NODE *) Operand[0]); AcpiUtAddReference (ReturnDesc); } else { /* * This must be a reference object produced by either the * Index() or RefOf() operator */ switch (Operand[0]->Reference.Class) { case ACPI_REFCLASS_INDEX: /* * The target type for the Index operator must be * either a Buffer or a Package */ switch (Operand[0]->Reference.TargetType) { case ACPI_TYPE_BUFFER_FIELD: TempDesc = Operand[0]->Reference.Object; /* * Create a new object that contains one element of the * buffer -- the element pointed to by the index. * * NOTE: index into a buffer is NOT a pointer to a * sub-buffer of the main buffer, it is only a pointer to a * single element (byte) of the buffer! * * Since we are returning the value of the buffer at the * indexed location, we don't need to add an additional * reference to the buffer itself. */ ReturnDesc = AcpiUtCreateIntegerObject ((UINT64) TempDesc->Buffer.Pointer[Operand[0]->Reference.Value]); if (!ReturnDesc) { Status = AE_NO_MEMORY; goto Cleanup; } break; case ACPI_TYPE_PACKAGE: /* * Return the referenced element of the package. We must * add another reference to the referenced object, however. */ ReturnDesc = *(Operand[0]->Reference.Where); if (!ReturnDesc) { /* * Element is NULL, do not allow the dereference. * This provides compatibility with other ACPI * implementations. */ return_ACPI_STATUS (AE_AML_UNINITIALIZED_ELEMENT); } AcpiUtAddReference (ReturnDesc); break; default: ACPI_ERROR ((AE_INFO, "Unknown Index TargetType 0x%X in reference object %p", Operand[0]->Reference.TargetType, Operand[0])); Status = AE_AML_OPERAND_TYPE; goto Cleanup; } break; case ACPI_REFCLASS_REFOF: ReturnDesc = Operand[0]->Reference.Object; if (ACPI_GET_DESCRIPTOR_TYPE (ReturnDesc) == ACPI_DESC_TYPE_NAMED) { ReturnDesc = AcpiNsGetAttachedObject ( (ACPI_NAMESPACE_NODE *) ReturnDesc); if (!ReturnDesc) { break; } /* * June 2013: * BufferFields/FieldUnits require additional resolution */ switch (ReturnDesc->Common.Type) { case ACPI_TYPE_BUFFER_FIELD: case ACPI_TYPE_LOCAL_REGION_FIELD: case ACPI_TYPE_LOCAL_BANK_FIELD: case ACPI_TYPE_LOCAL_INDEX_FIELD: Status = AcpiExReadDataFromField (WalkState, ReturnDesc, &TempDesc); if (ACPI_FAILURE (Status)) { goto Cleanup; } ReturnDesc = TempDesc; break; default: /* Add another reference to the object */ AcpiUtAddReference (ReturnDesc); break; } } break; default: ACPI_ERROR ((AE_INFO, "Unknown class in reference(%p) - 0x%2.2X", Operand[0], Operand[0]->Reference.Class)); Status = AE_TYPE; goto Cleanup; } } break; default: ACPI_ERROR ((AE_INFO, "Unknown AML opcode 0x%X", WalkState->Opcode)); Status = AE_AML_BAD_OPCODE; goto Cleanup; } Cleanup: /* Delete return object on error */ if (ACPI_FAILURE (Status)) { AcpiUtRemoveReference (ReturnDesc); } /* Save return object on success */ else { WalkState->ResultObj = ReturnDesc; } return_ACPI_STATUS (Status); } src/acpica/source/components/executer/exoparg2.c000066400000000000000000000532351231470457100223050ustar00rootroot00000000000000/****************************************************************************** * * Module Name: exoparg2 - AML execution - opcodes with 2 arguments * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #define __EXOPARG2_C__ #include "acpi.h" #include "accommon.h" #include "acparser.h" #include "acinterp.h" #include "acevents.h" #include "amlcode.h" #define _COMPONENT ACPI_EXECUTER ACPI_MODULE_NAME ("exoparg2") /*! * Naming convention for AML interpreter execution routines. * * The routines that begin execution of AML opcodes are named with a common * convention based upon the number of arguments, the number of target operands, * and whether or not a value is returned: * * AcpiExOpcode_xA_yT_zR * * Where: * * xA - ARGUMENTS: The number of arguments (input operands) that are * required for this opcode type (1 through 6 args). * yT - TARGETS: The number of targets (output operands) that are required * for this opcode type (0, 1, or 2 targets). * zR - RETURN VALUE: Indicates whether this opcode type returns a value * as the function return (0 or 1). * * The AcpiExOpcode* functions are called via the Dispatcher component with * fully resolved operands. !*/ /******************************************************************************* * * FUNCTION: AcpiExOpcode_2A_0T_0R * * PARAMETERS: WalkState - Current walk state * * RETURN: Status * * DESCRIPTION: Execute opcode with two arguments, no target, and no return * value. * * ALLOCATION: Deletes both operands * ******************************************************************************/ ACPI_STATUS AcpiExOpcode_2A_0T_0R ( ACPI_WALK_STATE *WalkState) { ACPI_OPERAND_OBJECT **Operand = &WalkState->Operands[0]; ACPI_NAMESPACE_NODE *Node; UINT32 Value; ACPI_STATUS Status = AE_OK; ACPI_FUNCTION_TRACE_STR (ExOpcode_2A_0T_0R, AcpiPsGetOpcodeName (WalkState->Opcode)); /* Examine the opcode */ switch (WalkState->Opcode) { case AML_NOTIFY_OP: /* Notify (NotifyObject, NotifyValue) */ /* The first operand is a namespace node */ Node = (ACPI_NAMESPACE_NODE *) Operand[0]; /* Second value is the notify value */ Value = (UINT32) Operand[1]->Integer.Value; /* Are notifies allowed on this object? */ if (!AcpiEvIsNotifyObject (Node)) { ACPI_ERROR ((AE_INFO, "Unexpected notify object type [%s]", AcpiUtGetTypeName (Node->Type))); Status = AE_AML_OPERAND_TYPE; break; } /* * Dispatch the notify to the appropriate handler * NOTE: the request is queued for execution after this method * completes. The notify handlers are NOT invoked synchronously * from this thread -- because handlers may in turn run other * control methods. */ Status = AcpiEvQueueNotifyRequest (Node, Value); break; default: ACPI_ERROR ((AE_INFO, "Unknown AML opcode 0x%X", WalkState->Opcode)); Status = AE_AML_BAD_OPCODE; } return_ACPI_STATUS (Status); } /******************************************************************************* * * FUNCTION: AcpiExOpcode_2A_2T_1R * * PARAMETERS: WalkState - Current walk state * * RETURN: Status * * DESCRIPTION: Execute a dyadic operator (2 operands) with 2 output targets * and one implicit return value. * ******************************************************************************/ ACPI_STATUS AcpiExOpcode_2A_2T_1R ( ACPI_WALK_STATE *WalkState) { ACPI_OPERAND_OBJECT **Operand = &WalkState->Operands[0]; ACPI_OPERAND_OBJECT *ReturnDesc1 = NULL; ACPI_OPERAND_OBJECT *ReturnDesc2 = NULL; ACPI_STATUS Status; ACPI_FUNCTION_TRACE_STR (ExOpcode_2A_2T_1R, AcpiPsGetOpcodeName (WalkState->Opcode)); /* Execute the opcode */ switch (WalkState->Opcode) { case AML_DIVIDE_OP: /* Divide (Dividend, Divisor, RemainderResult QuotientResult) */ ReturnDesc1 = AcpiUtCreateInternalObject (ACPI_TYPE_INTEGER); if (!ReturnDesc1) { Status = AE_NO_MEMORY; goto Cleanup; } ReturnDesc2 = AcpiUtCreateInternalObject (ACPI_TYPE_INTEGER); if (!ReturnDesc2) { Status = AE_NO_MEMORY; goto Cleanup; } /* Quotient to ReturnDesc1, remainder to ReturnDesc2 */ Status = AcpiUtDivide (Operand[0]->Integer.Value, Operand[1]->Integer.Value, &ReturnDesc1->Integer.Value, &ReturnDesc2->Integer.Value); if (ACPI_FAILURE (Status)) { goto Cleanup; } break; default: ACPI_ERROR ((AE_INFO, "Unknown AML opcode 0x%X", WalkState->Opcode)); Status = AE_AML_BAD_OPCODE; goto Cleanup; } /* Store the results to the target reference operands */ Status = AcpiExStore (ReturnDesc2, Operand[2], WalkState); if (ACPI_FAILURE (Status)) { goto Cleanup; } Status = AcpiExStore (ReturnDesc1, Operand[3], WalkState); if (ACPI_FAILURE (Status)) { goto Cleanup; } Cleanup: /* * Since the remainder is not returned indirectly, remove a reference to * it. Only the quotient is returned indirectly. */ AcpiUtRemoveReference (ReturnDesc2); if (ACPI_FAILURE (Status)) { /* Delete the return object */ AcpiUtRemoveReference (ReturnDesc1); } /* Save return object (the remainder) on success */ else { WalkState->ResultObj = ReturnDesc1; } return_ACPI_STATUS (Status); } /******************************************************************************* * * FUNCTION: AcpiExOpcode_2A_1T_1R * * PARAMETERS: WalkState - Current walk state * * RETURN: Status * * DESCRIPTION: Execute opcode with two arguments, one target, and a return * value. * ******************************************************************************/ ACPI_STATUS AcpiExOpcode_2A_1T_1R ( ACPI_WALK_STATE *WalkState) { ACPI_OPERAND_OBJECT **Operand = &WalkState->Operands[0]; ACPI_OPERAND_OBJECT *ReturnDesc = NULL; UINT64 Index; ACPI_STATUS Status = AE_OK; ACPI_SIZE Length = 0; ACPI_FUNCTION_TRACE_STR (ExOpcode_2A_1T_1R, AcpiPsGetOpcodeName (WalkState->Opcode)); /* Execute the opcode */ if (WalkState->OpInfo->Flags & AML_MATH) { /* All simple math opcodes (add, etc.) */ ReturnDesc = AcpiUtCreateInternalObject (ACPI_TYPE_INTEGER); if (!ReturnDesc) { Status = AE_NO_MEMORY; goto Cleanup; } ReturnDesc->Integer.Value = AcpiExDoMathOp (WalkState->Opcode, Operand[0]->Integer.Value, Operand[1]->Integer.Value); goto StoreResultToTarget; } switch (WalkState->Opcode) { case AML_MOD_OP: /* Mod (Dividend, Divisor, RemainderResult (ACPI 2.0) */ ReturnDesc = AcpiUtCreateInternalObject (ACPI_TYPE_INTEGER); if (!ReturnDesc) { Status = AE_NO_MEMORY; goto Cleanup; } /* ReturnDesc will contain the remainder */ Status = AcpiUtDivide (Operand[0]->Integer.Value, Operand[1]->Integer.Value, NULL, &ReturnDesc->Integer.Value); break; case AML_CONCAT_OP: /* Concatenate (Data1, Data2, Result) */ Status = AcpiExDoConcatenate (Operand[0], Operand[1], &ReturnDesc, WalkState); break; case AML_TO_STRING_OP: /* ToString (Buffer, Length, Result) (ACPI 2.0) */ /* * Input object is guaranteed to be a buffer at this point (it may have * been converted.) Copy the raw buffer data to a new object of * type String. */ /* * Get the length of the new string. It is the smallest of: * 1) Length of the input buffer * 2) Max length as specified in the ToString operator * 3) Length of input buffer up to a zero byte (null terminator) * * NOTE: A length of zero is ok, and will create a zero-length, null * terminated string. */ while ((Length < Operand[0]->Buffer.Length) && (Length < Operand[1]->Integer.Value) && (Operand[0]->Buffer.Pointer[Length])) { Length++; } /* Allocate a new string object */ ReturnDesc = AcpiUtCreateStringObject (Length); if (!ReturnDesc) { Status = AE_NO_MEMORY; goto Cleanup; } /* * Copy the raw buffer data with no transform. * (NULL terminated already) */ ACPI_MEMCPY (ReturnDesc->String.Pointer, Operand[0]->Buffer.Pointer, Length); break; case AML_CONCAT_RES_OP: /* ConcatenateResTemplate (Buffer, Buffer, Result) (ACPI 2.0) */ Status = AcpiExConcatTemplate (Operand[0], Operand[1], &ReturnDesc, WalkState); break; case AML_INDEX_OP: /* Index (Source Index Result) */ /* Create the internal return object */ ReturnDesc = AcpiUtCreateInternalObject (ACPI_TYPE_LOCAL_REFERENCE); if (!ReturnDesc) { Status = AE_NO_MEMORY; goto Cleanup; } /* Initialize the Index reference object */ Index = Operand[1]->Integer.Value; ReturnDesc->Reference.Value = (UINT32) Index; ReturnDesc->Reference.Class = ACPI_REFCLASS_INDEX; /* * At this point, the Source operand is a String, Buffer, or Package. * Verify that the index is within range. */ switch ((Operand[0])->Common.Type) { case ACPI_TYPE_STRING: if (Index >= Operand[0]->String.Length) { Length = Operand[0]->String.Length; Status = AE_AML_STRING_LIMIT; } ReturnDesc->Reference.TargetType = ACPI_TYPE_BUFFER_FIELD; break; case ACPI_TYPE_BUFFER: if (Index >= Operand[0]->Buffer.Length) { Length = Operand[0]->Buffer.Length; Status = AE_AML_BUFFER_LIMIT; } ReturnDesc->Reference.TargetType = ACPI_TYPE_BUFFER_FIELD; break; case ACPI_TYPE_PACKAGE: if (Index >= Operand[0]->Package.Count) { Length = Operand[0]->Package.Count; Status = AE_AML_PACKAGE_LIMIT; } ReturnDesc->Reference.TargetType = ACPI_TYPE_PACKAGE; ReturnDesc->Reference.Where = &Operand[0]->Package.Elements [Index]; break; default: Status = AE_AML_INTERNAL; goto Cleanup; } /* Failure means that the Index was beyond the end of the object */ if (ACPI_FAILURE (Status)) { ACPI_EXCEPTION ((AE_INFO, Status, "Index (0x%X%8.8X) is beyond end of object (length 0x%X)", ACPI_FORMAT_UINT64 (Index), (UINT32) Length)); goto Cleanup; } /* * Save the target object and add a reference to it for the life * of the index */ ReturnDesc->Reference.Object = Operand[0]; AcpiUtAddReference (Operand[0]); /* Store the reference to the Target */ Status = AcpiExStore (ReturnDesc, Operand[2], WalkState); /* Return the reference */ WalkState->ResultObj = ReturnDesc; goto Cleanup; default: ACPI_ERROR ((AE_INFO, "Unknown AML opcode 0x%X", WalkState->Opcode)); Status = AE_AML_BAD_OPCODE; break; } StoreResultToTarget: if (ACPI_SUCCESS (Status)) { /* * Store the result of the operation (which is now in ReturnDesc) into * the Target descriptor. */ Status = AcpiExStore (ReturnDesc, Operand[2], WalkState); if (ACPI_FAILURE (Status)) { goto Cleanup; } if (!WalkState->ResultObj) { WalkState->ResultObj = ReturnDesc; } } Cleanup: /* Delete return object on error */ if (ACPI_FAILURE (Status)) { AcpiUtRemoveReference (ReturnDesc); WalkState->ResultObj = NULL; } return_ACPI_STATUS (Status); } /******************************************************************************* * * FUNCTION: AcpiExOpcode_2A_0T_1R * * PARAMETERS: WalkState - Current walk state * * RETURN: Status * * DESCRIPTION: Execute opcode with 2 arguments, no target, and a return value * ******************************************************************************/ ACPI_STATUS AcpiExOpcode_2A_0T_1R ( ACPI_WALK_STATE *WalkState) { ACPI_OPERAND_OBJECT **Operand = &WalkState->Operands[0]; ACPI_OPERAND_OBJECT *ReturnDesc = NULL; ACPI_STATUS Status = AE_OK; BOOLEAN LogicalResult = FALSE; ACPI_FUNCTION_TRACE_STR (ExOpcode_2A_0T_1R, AcpiPsGetOpcodeName (WalkState->Opcode)); /* Create the internal return object */ ReturnDesc = AcpiUtCreateInternalObject (ACPI_TYPE_INTEGER); if (!ReturnDesc) { Status = AE_NO_MEMORY; goto Cleanup; } /* Execute the Opcode */ if (WalkState->OpInfo->Flags & AML_LOGICAL_NUMERIC) { /* LogicalOp (Operand0, Operand1) */ Status = AcpiExDoLogicalNumericOp (WalkState->Opcode, Operand[0]->Integer.Value, Operand[1]->Integer.Value, &LogicalResult); goto StoreLogicalResult; } else if (WalkState->OpInfo->Flags & AML_LOGICAL) { /* LogicalOp (Operand0, Operand1) */ Status = AcpiExDoLogicalOp (WalkState->Opcode, Operand[0], Operand[1], &LogicalResult); goto StoreLogicalResult; } switch (WalkState->Opcode) { case AML_ACQUIRE_OP: /* Acquire (MutexObject, Timeout) */ Status = AcpiExAcquireMutex (Operand[1], Operand[0], WalkState); if (Status == AE_TIME) { LogicalResult = TRUE; /* TRUE = Acquire timed out */ Status = AE_OK; } break; case AML_WAIT_OP: /* Wait (EventObject, Timeout) */ Status = AcpiExSystemWaitEvent (Operand[1], Operand[0]); if (Status == AE_TIME) { LogicalResult = TRUE; /* TRUE, Wait timed out */ Status = AE_OK; } break; default: ACPI_ERROR ((AE_INFO, "Unknown AML opcode 0x%X", WalkState->Opcode)); Status = AE_AML_BAD_OPCODE; goto Cleanup; } StoreLogicalResult: /* * Set return value to according to LogicalResult. logical TRUE (all ones) * Default is FALSE (zero) */ if (LogicalResult) { ReturnDesc->Integer.Value = ACPI_UINT64_MAX; } Cleanup: /* Delete return object on error */ if (ACPI_FAILURE (Status)) { AcpiUtRemoveReference (ReturnDesc); } /* Save return object on success */ else { WalkState->ResultObj = ReturnDesc; } return_ACPI_STATUS (Status); } src/acpica/source/components/executer/exoparg3.c000066400000000000000000000317361231470457100223100ustar00rootroot00000000000000/****************************************************************************** * * Module Name: exoparg3 - AML execution - opcodes with 3 arguments * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #define __EXOPARG3_C__ #include "acpi.h" #include "accommon.h" #include "acinterp.h" #include "acparser.h" #include "amlcode.h" #define _COMPONENT ACPI_EXECUTER ACPI_MODULE_NAME ("exoparg3") /*! * Naming convention for AML interpreter execution routines. * * The routines that begin execution of AML opcodes are named with a common * convention based upon the number of arguments, the number of target operands, * and whether or not a value is returned: * * AcpiExOpcode_xA_yT_zR * * Where: * * xA - ARGUMENTS: The number of arguments (input operands) that are * required for this opcode type (1 through 6 args). * yT - TARGETS: The number of targets (output operands) that are required * for this opcode type (0, 1, or 2 targets). * zR - RETURN VALUE: Indicates whether this opcode type returns a value * as the function return (0 or 1). * * The AcpiExOpcode* functions are called via the Dispatcher component with * fully resolved operands. !*/ /******************************************************************************* * * FUNCTION: AcpiExOpcode_3A_0T_0R * * PARAMETERS: WalkState - Current walk state * * RETURN: Status * * DESCRIPTION: Execute Triadic operator (3 operands) * ******************************************************************************/ ACPI_STATUS AcpiExOpcode_3A_0T_0R ( ACPI_WALK_STATE *WalkState) { ACPI_OPERAND_OBJECT **Operand = &WalkState->Operands[0]; ACPI_SIGNAL_FATAL_INFO *Fatal; ACPI_STATUS Status = AE_OK; ACPI_FUNCTION_TRACE_STR (ExOpcode_3A_0T_0R, AcpiPsGetOpcodeName (WalkState->Opcode)); switch (WalkState->Opcode) { case AML_FATAL_OP: /* Fatal (FatalType FatalCode FatalArg) */ ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "FatalOp: Type %X Code %X Arg %X <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<\n", (UINT32) Operand[0]->Integer.Value, (UINT32) Operand[1]->Integer.Value, (UINT32) Operand[2]->Integer.Value)); Fatal = ACPI_ALLOCATE (sizeof (ACPI_SIGNAL_FATAL_INFO)); if (Fatal) { Fatal->Type = (UINT32) Operand[0]->Integer.Value; Fatal->Code = (UINT32) Operand[1]->Integer.Value; Fatal->Argument = (UINT32) Operand[2]->Integer.Value; } /* Always signal the OS! */ Status = AcpiOsSignal (ACPI_SIGNAL_FATAL, Fatal); /* Might return while OS is shutting down, just continue */ ACPI_FREE (Fatal); break; default: ACPI_ERROR ((AE_INFO, "Unknown AML opcode 0x%X", WalkState->Opcode)); Status = AE_AML_BAD_OPCODE; goto Cleanup; } Cleanup: return_ACPI_STATUS (Status); } /******************************************************************************* * * FUNCTION: AcpiExOpcode_3A_1T_1R * * PARAMETERS: WalkState - Current walk state * * RETURN: Status * * DESCRIPTION: Execute Triadic operator (3 operands) * ******************************************************************************/ ACPI_STATUS AcpiExOpcode_3A_1T_1R ( ACPI_WALK_STATE *WalkState) { ACPI_OPERAND_OBJECT **Operand = &WalkState->Operands[0]; ACPI_OPERAND_OBJECT *ReturnDesc = NULL; char *Buffer = NULL; ACPI_STATUS Status = AE_OK; UINT64 Index; ACPI_SIZE Length; ACPI_FUNCTION_TRACE_STR (ExOpcode_3A_1T_1R, AcpiPsGetOpcodeName (WalkState->Opcode)); switch (WalkState->Opcode) { case AML_MID_OP: /* Mid (Source[0], Index[1], Length[2], Result[3]) */ /* * Create the return object. The Source operand is guaranteed to be * either a String or a Buffer, so just use its type. */ ReturnDesc = AcpiUtCreateInternalObject ( (Operand[0])->Common.Type); if (!ReturnDesc) { Status = AE_NO_MEMORY; goto Cleanup; } /* Get the Integer values from the objects */ Index = Operand[1]->Integer.Value; Length = (ACPI_SIZE) Operand[2]->Integer.Value; /* * If the index is beyond the length of the String/Buffer, or if the * requested length is zero, return a zero-length String/Buffer */ if (Index >= Operand[0]->String.Length) { Length = 0; } /* Truncate request if larger than the actual String/Buffer */ else if ((Index + Length) > Operand[0]->String.Length) { Length = (ACPI_SIZE) Operand[0]->String.Length - (ACPI_SIZE) Index; } /* Strings always have a sub-pointer, not so for buffers */ switch ((Operand[0])->Common.Type) { case ACPI_TYPE_STRING: /* Always allocate a new buffer for the String */ Buffer = ACPI_ALLOCATE_ZEROED ((ACPI_SIZE) Length + 1); if (!Buffer) { Status = AE_NO_MEMORY; goto Cleanup; } break; case ACPI_TYPE_BUFFER: /* If the requested length is zero, don't allocate a buffer */ if (Length > 0) { /* Allocate a new buffer for the Buffer */ Buffer = ACPI_ALLOCATE_ZEROED (Length); if (!Buffer) { Status = AE_NO_MEMORY; goto Cleanup; } } break; default: /* Should not happen */ Status = AE_AML_OPERAND_TYPE; goto Cleanup; } if (Buffer) { /* We have a buffer, copy the portion requested */ ACPI_MEMCPY (Buffer, Operand[0]->String.Pointer + Index, Length); } /* Set the length of the new String/Buffer */ ReturnDesc->String.Pointer = Buffer; ReturnDesc->String.Length = (UINT32) Length; /* Mark buffer initialized */ ReturnDesc->Buffer.Flags |= AOPOBJ_DATA_VALID; break; default: ACPI_ERROR ((AE_INFO, "Unknown AML opcode 0x%X", WalkState->Opcode)); Status = AE_AML_BAD_OPCODE; goto Cleanup; } /* Store the result in the target */ Status = AcpiExStore (ReturnDesc, Operand[3], WalkState); Cleanup: /* Delete return object on error */ if (ACPI_FAILURE (Status) || WalkState->ResultObj) { AcpiUtRemoveReference (ReturnDesc); WalkState->ResultObj = NULL; } /* Set the return object and exit */ else { WalkState->ResultObj = ReturnDesc; } return_ACPI_STATUS (Status); } src/acpica/source/components/executer/exoparg6.c000066400000000000000000000360251231470457100223070ustar00rootroot00000000000000/****************************************************************************** * * Module Name: exoparg6 - AML execution - opcodes with 6 arguments * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #define __EXOPARG6_C__ #include "acpi.h" #include "accommon.h" #include "acinterp.h" #include "acparser.h" #include "amlcode.h" #define _COMPONENT ACPI_EXECUTER ACPI_MODULE_NAME ("exoparg6") /*! * Naming convention for AML interpreter execution routines. * * The routines that begin execution of AML opcodes are named with a common * convention based upon the number of arguments, the number of target operands, * and whether or not a value is returned: * * AcpiExOpcode_xA_yT_zR * * Where: * * xA - ARGUMENTS: The number of arguments (input operands) that are * required for this opcode type (1 through 6 args). * yT - TARGETS: The number of targets (output operands) that are required * for this opcode type (0, 1, or 2 targets). * zR - RETURN VALUE: Indicates whether this opcode type returns a value * as the function return (0 or 1). * * The AcpiExOpcode* functions are called via the Dispatcher component with * fully resolved operands. !*/ /* Local prototypes */ static BOOLEAN AcpiExDoMatch ( UINT32 MatchOp, ACPI_OPERAND_OBJECT *PackageObj, ACPI_OPERAND_OBJECT *MatchObj); /******************************************************************************* * * FUNCTION: AcpiExDoMatch * * PARAMETERS: MatchOp - The AML match operand * PackageObj - Object from the target package * MatchObj - Object to be matched * * RETURN: TRUE if the match is successful, FALSE otherwise * * DESCRIPTION: Implements the low-level match for the ASL Match operator. * Package elements will be implicitly converted to the type of * the match object (Integer/Buffer/String). * ******************************************************************************/ static BOOLEAN AcpiExDoMatch ( UINT32 MatchOp, ACPI_OPERAND_OBJECT *PackageObj, ACPI_OPERAND_OBJECT *MatchObj) { BOOLEAN LogicalResult = TRUE; ACPI_STATUS Status; /* * Note: Since the PackageObj/MatchObj ordering is opposite to that of * the standard logical operators, we have to reverse them when we call * DoLogicalOp in order to make the implicit conversion rules work * correctly. However, this means we have to flip the entire equation * also. A bit ugly perhaps, but overall, better than fussing the * parameters around at runtime, over and over again. * * Below, P[i] refers to the package element, M refers to the Match object. */ switch (MatchOp) { case MATCH_MTR: /* Always true */ break; case MATCH_MEQ: /* * True if equal: (P[i] == M) * Change to: (M == P[i]) */ Status = AcpiExDoLogicalOp (AML_LEQUAL_OP, MatchObj, PackageObj, &LogicalResult); if (ACPI_FAILURE (Status)) { return (FALSE); } break; case MATCH_MLE: /* * True if less than or equal: (P[i] <= M) (P[i] NotGreater than M) * Change to: (M >= P[i]) (M NotLess than P[i]) */ Status = AcpiExDoLogicalOp (AML_LLESS_OP, MatchObj, PackageObj, &LogicalResult); if (ACPI_FAILURE (Status)) { return (FALSE); } LogicalResult = (BOOLEAN) !LogicalResult; break; case MATCH_MLT: /* * True if less than: (P[i] < M) * Change to: (M > P[i]) */ Status = AcpiExDoLogicalOp (AML_LGREATER_OP, MatchObj, PackageObj, &LogicalResult); if (ACPI_FAILURE (Status)) { return (FALSE); } break; case MATCH_MGE: /* * True if greater than or equal: (P[i] >= M) (P[i] NotLess than M) * Change to: (M <= P[i]) (M NotGreater than P[i]) */ Status = AcpiExDoLogicalOp (AML_LGREATER_OP, MatchObj, PackageObj, &LogicalResult); if (ACPI_FAILURE (Status)) { return (FALSE); } LogicalResult = (BOOLEAN)!LogicalResult; break; case MATCH_MGT: /* * True if greater than: (P[i] > M) * Change to: (M < P[i]) */ Status = AcpiExDoLogicalOp (AML_LLESS_OP, MatchObj, PackageObj, &LogicalResult); if (ACPI_FAILURE (Status)) { return (FALSE); } break; default: /* Undefined */ return (FALSE); } return (LogicalResult); } /******************************************************************************* * * FUNCTION: AcpiExOpcode_6A_0T_1R * * PARAMETERS: WalkState - Current walk state * * RETURN: Status * * DESCRIPTION: Execute opcode with 6 arguments, no target, and a return value * ******************************************************************************/ ACPI_STATUS AcpiExOpcode_6A_0T_1R ( ACPI_WALK_STATE *WalkState) { ACPI_OPERAND_OBJECT **Operand = &WalkState->Operands[0]; ACPI_OPERAND_OBJECT *ReturnDesc = NULL; ACPI_STATUS Status = AE_OK; UINT64 Index; ACPI_OPERAND_OBJECT *ThisElement; ACPI_FUNCTION_TRACE_STR (ExOpcode_6A_0T_1R, AcpiPsGetOpcodeName (WalkState->Opcode)); switch (WalkState->Opcode) { case AML_MATCH_OP: /* * Match (SearchPkg[0], MatchOp1[1], MatchObj1[2], * MatchOp2[3], MatchObj2[4], StartIndex[5]) */ /* Validate both Match Term Operators (MTR, MEQ, etc.) */ if ((Operand[1]->Integer.Value > MAX_MATCH_OPERATOR) || (Operand[3]->Integer.Value > MAX_MATCH_OPERATOR)) { ACPI_ERROR ((AE_INFO, "Match operator out of range")); Status = AE_AML_OPERAND_VALUE; goto Cleanup; } /* Get the package StartIndex, validate against the package length */ Index = Operand[5]->Integer.Value; if (Index >= Operand[0]->Package.Count) { ACPI_ERROR ((AE_INFO, "Index (0x%8.8X%8.8X) beyond package end (0x%X)", ACPI_FORMAT_UINT64 (Index), Operand[0]->Package.Count)); Status = AE_AML_PACKAGE_LIMIT; goto Cleanup; } /* Create an integer for the return value */ /* Default return value is ACPI_UINT64_MAX if no match found */ ReturnDesc = AcpiUtCreateIntegerObject (ACPI_UINT64_MAX); if (!ReturnDesc) { Status = AE_NO_MEMORY; goto Cleanup; } /* * Examine each element until a match is found. Both match conditions * must be satisfied for a match to occur. Within the loop, * "continue" signifies that the current element does not match * and the next should be examined. * * Upon finding a match, the loop will terminate via "break" at * the bottom. If it terminates "normally", MatchValue will be * ACPI_UINT64_MAX (Ones) (its initial value) indicating that no * match was found. */ for ( ; Index < Operand[0]->Package.Count; Index++) { /* Get the current package element */ ThisElement = Operand[0]->Package.Elements[Index]; /* Treat any uninitialized (NULL) elements as non-matching */ if (!ThisElement) { continue; } /* * Both match conditions must be satisfied. Execution of a continue * (proceed to next iteration of enclosing for loop) signifies a * non-match. */ if (!AcpiExDoMatch ((UINT32) Operand[1]->Integer.Value, ThisElement, Operand[2])) { continue; } if (!AcpiExDoMatch ((UINT32) Operand[3]->Integer.Value, ThisElement, Operand[4])) { continue; } /* Match found: Index is the return value */ ReturnDesc->Integer.Value = Index; break; } break; case AML_LOAD_TABLE_OP: Status = AcpiExLoadTableOp (WalkState, &ReturnDesc); break; default: ACPI_ERROR ((AE_INFO, "Unknown AML opcode 0x%X", WalkState->Opcode)); Status = AE_AML_BAD_OPCODE; goto Cleanup; } Cleanup: /* Delete return object on error */ if (ACPI_FAILURE (Status)) { AcpiUtRemoveReference (ReturnDesc); } /* Save return object on success */ else { WalkState->ResultObj = ReturnDesc; } return_ACPI_STATUS (Status); } src/acpica/source/components/executer/exprep.c000066400000000000000000000635701231470457100220640ustar00rootroot00000000000000/****************************************************************************** * * Module Name: exprep - ACPI AML (p-code) execution - field prep utilities * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #define __EXPREP_C__ #include "acpi.h" #include "accommon.h" #include "acinterp.h" #include "amlcode.h" #include "acnamesp.h" #include "acdispat.h" #define _COMPONENT ACPI_EXECUTER ACPI_MODULE_NAME ("exprep") /* Local prototypes */ static UINT32 AcpiExDecodeFieldAccess ( ACPI_OPERAND_OBJECT *ObjDesc, UINT8 FieldFlags, UINT32 *ReturnByteAlignment); #ifdef ACPI_UNDER_DEVELOPMENT static UINT32 AcpiExGenerateAccess ( UINT32 FieldBitOffset, UINT32 FieldBitLength, UINT32 RegionLength); /******************************************************************************* * * FUNCTION: AcpiExGenerateAccess * * PARAMETERS: FieldBitOffset - Start of field within parent region/buffer * FieldBitLength - Length of field in bits * RegionLength - Length of parent in bytes * * RETURN: Field granularity (8, 16, 32 or 64) and * ByteAlignment (1, 2, 3, or 4) * * DESCRIPTION: Generate an optimal access width for fields defined with the * AnyAcc keyword. * * NOTE: Need to have the RegionLength in order to check for boundary * conditions (end-of-region). However, the RegionLength is a deferred * operation. Therefore, to complete this implementation, the generation * of this access width must be deferred until the region length has * been evaluated. * ******************************************************************************/ static UINT32 AcpiExGenerateAccess ( UINT32 FieldBitOffset, UINT32 FieldBitLength, UINT32 RegionLength) { UINT32 FieldByteLength; UINT32 FieldByteOffset; UINT32 FieldByteEndOffset; UINT32 AccessByteWidth; UINT32 FieldStartOffset; UINT32 FieldEndOffset; UINT32 MinimumAccessWidth = 0xFFFFFFFF; UINT32 MinimumAccesses = 0xFFFFFFFF; UINT32 Accesses; ACPI_FUNCTION_TRACE (ExGenerateAccess); /* Round Field start offset and length to "minimal" byte boundaries */ FieldByteOffset = ACPI_DIV_8 (ACPI_ROUND_DOWN (FieldBitOffset, 8)); FieldByteEndOffset = ACPI_DIV_8 (ACPI_ROUND_UP (FieldBitLength + FieldBitOffset, 8)); FieldByteLength = FieldByteEndOffset - FieldByteOffset; ACPI_DEBUG_PRINT ((ACPI_DB_BFIELD, "Bit length %u, Bit offset %u\n", FieldBitLength, FieldBitOffset)); ACPI_DEBUG_PRINT ((ACPI_DB_BFIELD, "Byte Length %u, Byte Offset %u, End Offset %u\n", FieldByteLength, FieldByteOffset, FieldByteEndOffset)); /* * Iterative search for the maximum access width that is both aligned * and does not go beyond the end of the region * * Start at ByteAcc and work upwards to QwordAcc max. (1,2,4,8 bytes) */ for (AccessByteWidth = 1; AccessByteWidth <= 8; AccessByteWidth <<= 1) { /* * 1) Round end offset up to next access boundary and make sure that * this does not go beyond the end of the parent region. * 2) When the Access width is greater than the FieldByteLength, we * are done. (This does not optimize for the perfectly aligned * case yet). */ if (ACPI_ROUND_UP (FieldByteEndOffset, AccessByteWidth) <= RegionLength) { FieldStartOffset = ACPI_ROUND_DOWN (FieldByteOffset, AccessByteWidth) / AccessByteWidth; FieldEndOffset = ACPI_ROUND_UP ((FieldByteLength + FieldByteOffset), AccessByteWidth) / AccessByteWidth; Accesses = FieldEndOffset - FieldStartOffset; ACPI_DEBUG_PRINT ((ACPI_DB_BFIELD, "AccessWidth %u end is within region\n", AccessByteWidth)); ACPI_DEBUG_PRINT ((ACPI_DB_BFIELD, "Field Start %u, Field End %u -- requires %u accesses\n", FieldStartOffset, FieldEndOffset, Accesses)); /* Single access is optimal */ if (Accesses <= 1) { ACPI_DEBUG_PRINT ((ACPI_DB_BFIELD, "Entire field can be accessed with one operation of size %u\n", AccessByteWidth)); return_VALUE (AccessByteWidth); } /* * Fits in the region, but requires more than one read/write. * try the next wider access on next iteration */ if (Accesses < MinimumAccesses) { MinimumAccesses = Accesses; MinimumAccessWidth = AccessByteWidth; } } else { ACPI_DEBUG_PRINT ((ACPI_DB_BFIELD, "AccessWidth %u end is NOT within region\n", AccessByteWidth)); if (AccessByteWidth == 1) { ACPI_DEBUG_PRINT ((ACPI_DB_BFIELD, "Field goes beyond end-of-region!\n")); /* Field does not fit in the region at all */ return_VALUE (0); } /* * This width goes beyond the end-of-region, back off to * previous access */ ACPI_DEBUG_PRINT ((ACPI_DB_BFIELD, "Backing off to previous optimal access width of %u\n", MinimumAccessWidth)); return_VALUE (MinimumAccessWidth); } } /* * Could not read/write field with one operation, * just use max access width */ ACPI_DEBUG_PRINT ((ACPI_DB_BFIELD, "Cannot access field in one operation, using width 8\n")); return_VALUE (8); } #endif /* ACPI_UNDER_DEVELOPMENT */ /******************************************************************************* * * FUNCTION: AcpiExDecodeFieldAccess * * PARAMETERS: ObjDesc - Field object * FieldFlags - Encoded fieldflags (contains access bits) * ReturnByteAlignment - Where the byte alignment is returned * * RETURN: Field granularity (8, 16, 32 or 64) and * ByteAlignment (1, 2, 3, or 4) * * DESCRIPTION: Decode the AccessType bits of a field definition. * ******************************************************************************/ static UINT32 AcpiExDecodeFieldAccess ( ACPI_OPERAND_OBJECT *ObjDesc, UINT8 FieldFlags, UINT32 *ReturnByteAlignment) { UINT32 Access; UINT32 ByteAlignment; UINT32 BitLength; ACPI_FUNCTION_TRACE (ExDecodeFieldAccess); Access = (FieldFlags & AML_FIELD_ACCESS_TYPE_MASK); switch (Access) { case AML_FIELD_ACCESS_ANY: #ifdef ACPI_UNDER_DEVELOPMENT ByteAlignment = AcpiExGenerateAccess (ObjDesc->CommonField.StartFieldBitOffset, ObjDesc->CommonField.BitLength, 0xFFFFFFFF /* Temp until we pass RegionLength as parameter */); BitLength = ByteAlignment * 8; #endif ByteAlignment = 1; BitLength = 8; break; case AML_FIELD_ACCESS_BYTE: case AML_FIELD_ACCESS_BUFFER: /* ACPI 2.0 (SMBus Buffer) */ ByteAlignment = 1; BitLength = 8; break; case AML_FIELD_ACCESS_WORD: ByteAlignment = 2; BitLength = 16; break; case AML_FIELD_ACCESS_DWORD: ByteAlignment = 4; BitLength = 32; break; case AML_FIELD_ACCESS_QWORD: /* ACPI 2.0 */ ByteAlignment = 8; BitLength = 64; break; default: /* Invalid field access type */ ACPI_ERROR ((AE_INFO, "Unknown field access type 0x%X", Access)); return_UINT32 (0); } if (ObjDesc->Common.Type == ACPI_TYPE_BUFFER_FIELD) { /* * BufferField access can be on any byte boundary, so the * ByteAlignment is always 1 byte -- regardless of any ByteAlignment * implied by the field access type. */ ByteAlignment = 1; } *ReturnByteAlignment = ByteAlignment; return_UINT32 (BitLength); } /******************************************************************************* * * FUNCTION: AcpiExPrepCommonFieldObject * * PARAMETERS: ObjDesc - The field object * FieldFlags - Access, LockRule, and UpdateRule. * The format of a FieldFlag is described * in the ACPI specification * FieldAttribute - Special attributes (not used) * FieldBitPosition - Field start position * FieldBitLength - Field length in number of bits * * RETURN: Status * * DESCRIPTION: Initialize the areas of the field object that are common * to the various types of fields. Note: This is very "sensitive" * code because we are solving the general case for field * alignment. * ******************************************************************************/ ACPI_STATUS AcpiExPrepCommonFieldObject ( ACPI_OPERAND_OBJECT *ObjDesc, UINT8 FieldFlags, UINT8 FieldAttribute, UINT32 FieldBitPosition, UINT32 FieldBitLength) { UINT32 AccessBitWidth; UINT32 ByteAlignment; UINT32 NearestByteAddress; ACPI_FUNCTION_TRACE (ExPrepCommonFieldObject); /* * Note: the structure being initialized is the * ACPI_COMMON_FIELD_INFO; No structure fields outside of the common * area are initialized by this procedure. */ ObjDesc->CommonField.FieldFlags = FieldFlags; ObjDesc->CommonField.Attribute = FieldAttribute; ObjDesc->CommonField.BitLength = FieldBitLength; /* * Decode the access type so we can compute offsets. The access type gives * two pieces of information - the width of each field access and the * necessary ByteAlignment (address granularity) of the access. * * For AnyAcc, the AccessBitWidth is the largest width that is both * necessary and possible in an attempt to access the whole field in one * I/O operation. However, for AnyAcc, the ByteAlignment is always one * byte. * * For all Buffer Fields, the ByteAlignment is always one byte. * * For all other access types (Byte, Word, Dword, Qword), the Bitwidth is * the same (equivalent) as the ByteAlignment. */ AccessBitWidth = AcpiExDecodeFieldAccess (ObjDesc, FieldFlags, &ByteAlignment); if (!AccessBitWidth) { return_ACPI_STATUS (AE_AML_OPERAND_VALUE); } /* Setup width (access granularity) fields (values are: 1, 2, 4, 8) */ ObjDesc->CommonField.AccessByteWidth = (UINT8) ACPI_DIV_8 (AccessBitWidth); /* * BaseByteOffset is the address of the start of the field within the * region. It is the byte address of the first *datum* (field-width data * unit) of the field. (i.e., the first datum that contains at least the * first *bit* of the field.) * * Note: ByteAlignment is always either equal to the AccessBitWidth or 8 * (Byte access), and it defines the addressing granularity of the parent * region or buffer. */ NearestByteAddress = ACPI_ROUND_BITS_DOWN_TO_BYTES (FieldBitPosition); ObjDesc->CommonField.BaseByteOffset = (UINT32) ACPI_ROUND_DOWN (NearestByteAddress, ByteAlignment); /* * StartFieldBitOffset is the offset of the first bit of the field within * a field datum. */ ObjDesc->CommonField.StartFieldBitOffset = (UINT8) (FieldBitPosition - ACPI_MUL_8 (ObjDesc->CommonField.BaseByteOffset)); return_ACPI_STATUS (AE_OK); } /******************************************************************************* * * FUNCTION: AcpiExPrepFieldValue * * PARAMETERS: Info - Contains all field creation info * * RETURN: Status * * DESCRIPTION: Construct an object of type ACPI_OPERAND_OBJECT with a * subtype of DefField and connect it to the parent Node. * ******************************************************************************/ ACPI_STATUS AcpiExPrepFieldValue ( ACPI_CREATE_FIELD_INFO *Info) { ACPI_OPERAND_OBJECT *ObjDesc; ACPI_OPERAND_OBJECT *SecondDesc = NULL; ACPI_STATUS Status; UINT32 AccessByteWidth; UINT32 Type; ACPI_FUNCTION_TRACE (ExPrepFieldValue); /* Parameter validation */ if (Info->FieldType != ACPI_TYPE_LOCAL_INDEX_FIELD) { if (!Info->RegionNode) { ACPI_ERROR ((AE_INFO, "Null RegionNode")); return_ACPI_STATUS (AE_AML_NO_OPERAND); } Type = AcpiNsGetType (Info->RegionNode); if (Type != ACPI_TYPE_REGION) { ACPI_ERROR ((AE_INFO, "Needed Region, found type 0x%X (%s)", Type, AcpiUtGetTypeName (Type))); return_ACPI_STATUS (AE_AML_OPERAND_TYPE); } } /* Allocate a new field object */ ObjDesc = AcpiUtCreateInternalObject (Info->FieldType); if (!ObjDesc) { return_ACPI_STATUS (AE_NO_MEMORY); } /* Initialize areas of the object that are common to all fields */ ObjDesc->CommonField.Node = Info->FieldNode; Status = AcpiExPrepCommonFieldObject (ObjDesc, Info->FieldFlags, Info->Attribute, Info->FieldBitPosition, Info->FieldBitLength); if (ACPI_FAILURE (Status)) { AcpiUtDeleteObjectDesc (ObjDesc); return_ACPI_STATUS (Status); } /* Initialize areas of the object that are specific to the field type */ switch (Info->FieldType) { case ACPI_TYPE_LOCAL_REGION_FIELD: ObjDesc->Field.RegionObj = AcpiNsGetAttachedObject (Info->RegionNode); /* Fields specific to GenericSerialBus fields */ ObjDesc->Field.AccessLength = Info->AccessLength; if (Info->ConnectionNode) { SecondDesc = Info->ConnectionNode->Object; if (!(SecondDesc->Common.Flags & AOPOBJ_DATA_VALID)) { Status = AcpiDsGetBufferArguments (SecondDesc); if (ACPI_FAILURE (Status)) { AcpiUtDeleteObjectDesc (ObjDesc); return_ACPI_STATUS (Status); } } ObjDesc->Field.ResourceBuffer = SecondDesc->Buffer.Pointer; ObjDesc->Field.ResourceLength = (UINT16) SecondDesc->Buffer.Length; } else if (Info->ResourceBuffer) { ObjDesc->Field.ResourceBuffer = Info->ResourceBuffer; ObjDesc->Field.ResourceLength = Info->ResourceLength; } /* Allow full data read from EC address space */ if ((ObjDesc->Field.RegionObj->Region.SpaceId == ACPI_ADR_SPACE_EC) && (ObjDesc->CommonField.BitLength > 8)) { AccessByteWidth = ACPI_ROUND_BITS_UP_TO_BYTES ( ObjDesc->CommonField.BitLength); /* Maximum byte width supported is 255 */ if (AccessByteWidth < 256) { ObjDesc->CommonField.AccessByteWidth = (UINT8) AccessByteWidth; } } /* An additional reference for the container */ AcpiUtAddReference (ObjDesc->Field.RegionObj); ACPI_DEBUG_PRINT ((ACPI_DB_BFIELD, "RegionField: BitOff %X, Off %X, Gran %X, Region %p\n", ObjDesc->Field.StartFieldBitOffset, ObjDesc->Field.BaseByteOffset, ObjDesc->Field.AccessByteWidth, ObjDesc->Field.RegionObj)); break; case ACPI_TYPE_LOCAL_BANK_FIELD: ObjDesc->BankField.Value = Info->BankValue; ObjDesc->BankField.RegionObj = AcpiNsGetAttachedObject (Info->RegionNode); ObjDesc->BankField.BankObj = AcpiNsGetAttachedObject (Info->RegisterNode); /* An additional reference for the attached objects */ AcpiUtAddReference (ObjDesc->BankField.RegionObj); AcpiUtAddReference (ObjDesc->BankField.BankObj); ACPI_DEBUG_PRINT ((ACPI_DB_BFIELD, "Bank Field: BitOff %X, Off %X, Gran %X, Region %p, BankReg %p\n", ObjDesc->BankField.StartFieldBitOffset, ObjDesc->BankField.BaseByteOffset, ObjDesc->Field.AccessByteWidth, ObjDesc->BankField.RegionObj, ObjDesc->BankField.BankObj)); /* * Remember location in AML stream of the field unit * opcode and operands -- since the BankValue * operands must be evaluated. */ SecondDesc = ObjDesc->Common.NextObject; SecondDesc->Extra.AmlStart = ACPI_CAST_PTR (ACPI_PARSE_OBJECT, Info->DataRegisterNode)->Named.Data; SecondDesc->Extra.AmlLength = ACPI_CAST_PTR (ACPI_PARSE_OBJECT, Info->DataRegisterNode)->Named.Length; break; case ACPI_TYPE_LOCAL_INDEX_FIELD: /* Get the Index and Data registers */ ObjDesc->IndexField.IndexObj = AcpiNsGetAttachedObject (Info->RegisterNode); ObjDesc->IndexField.DataObj = AcpiNsGetAttachedObject (Info->DataRegisterNode); if (!ObjDesc->IndexField.DataObj || !ObjDesc->IndexField.IndexObj) { ACPI_ERROR ((AE_INFO, "Null Index Object during field prep")); AcpiUtDeleteObjectDesc (ObjDesc); return_ACPI_STATUS (AE_AML_INTERNAL); } /* An additional reference for the attached objects */ AcpiUtAddReference (ObjDesc->IndexField.DataObj); AcpiUtAddReference (ObjDesc->IndexField.IndexObj); /* * April 2006: Changed to match MS behavior * * The value written to the Index register is the byte offset of the * target field in units of the granularity of the IndexField * * Previously, the value was calculated as an index in terms of the * width of the Data register, as below: * * ObjDesc->IndexField.Value = (UINT32) * (Info->FieldBitPosition / ACPI_MUL_8 ( * ObjDesc->Field.AccessByteWidth)); * * February 2006: Tried value as a byte offset: * ObjDesc->IndexField.Value = (UINT32) * ACPI_DIV_8 (Info->FieldBitPosition); */ ObjDesc->IndexField.Value = (UINT32) ACPI_ROUND_DOWN ( ACPI_DIV_8 (Info->FieldBitPosition), ObjDesc->IndexField.AccessByteWidth); ACPI_DEBUG_PRINT ((ACPI_DB_BFIELD, "IndexField: BitOff %X, Off %X, Value %X, Gran %X, Index %p, Data %p\n", ObjDesc->IndexField.StartFieldBitOffset, ObjDesc->IndexField.BaseByteOffset, ObjDesc->IndexField.Value, ObjDesc->Field.AccessByteWidth, ObjDesc->IndexField.IndexObj, ObjDesc->IndexField.DataObj)); break; default: /* No other types should get here */ break; } /* * Store the constructed descriptor (ObjDesc) into the parent Node, * preserving the current type of that NamedObj. */ Status = AcpiNsAttachObject (Info->FieldNode, ObjDesc, AcpiNsGetType (Info->FieldNode)); ACPI_DEBUG_PRINT ((ACPI_DB_BFIELD, "Set NamedObj %p [%4.4s], ObjDesc %p\n", Info->FieldNode, AcpiUtGetNodeName (Info->FieldNode), ObjDesc)); /* Remove local reference to the object */ AcpiUtRemoveReference (ObjDesc); return_ACPI_STATUS (Status); } src/acpica/source/components/executer/exregion.c000066400000000000000000000522701231470457100223740ustar00rootroot00000000000000/****************************************************************************** * * Module Name: exregion - ACPI default OpRegion (address space) handlers * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #define __EXREGION_C__ #include "acpi.h" #include "accommon.h" #include "acinterp.h" #define _COMPONENT ACPI_EXECUTER ACPI_MODULE_NAME ("exregion") /******************************************************************************* * * FUNCTION: AcpiExSystemMemorySpaceHandler * * PARAMETERS: Function - Read or Write operation * Address - Where in the space to read or write * BitWidth - Field width in bits (8, 16, or 32) * Value - Pointer to in or out value * HandlerContext - Pointer to Handler's context * RegionContext - Pointer to context specific to the * accessed region * * RETURN: Status * * DESCRIPTION: Handler for the System Memory address space (Op Region) * ******************************************************************************/ ACPI_STATUS AcpiExSystemMemorySpaceHandler ( UINT32 Function, ACPI_PHYSICAL_ADDRESS Address, UINT32 BitWidth, UINT64 *Value, void *HandlerContext, void *RegionContext) { ACPI_STATUS Status = AE_OK; void *LogicalAddrPtr = NULL; ACPI_MEM_SPACE_CONTEXT *MemInfo = RegionContext; UINT32 Length; ACPI_SIZE MapLength; ACPI_SIZE PageBoundaryMapLength; #ifdef ACPI_MISALIGNMENT_NOT_SUPPORTED UINT32 Remainder; #endif ACPI_FUNCTION_TRACE (ExSystemMemorySpaceHandler); /* Validate and translate the bit width */ switch (BitWidth) { case 8: Length = 1; break; case 16: Length = 2; break; case 32: Length = 4; break; case 64: Length = 8; break; default: ACPI_ERROR ((AE_INFO, "Invalid SystemMemory width %u", BitWidth)); return_ACPI_STATUS (AE_AML_OPERAND_VALUE); } #ifdef ACPI_MISALIGNMENT_NOT_SUPPORTED /* * Hardware does not support non-aligned data transfers, we must verify * the request. */ (void) AcpiUtShortDivide ((UINT64) Address, Length, NULL, &Remainder); if (Remainder != 0) { return_ACPI_STATUS (AE_AML_ALIGNMENT); } #endif /* * Does the request fit into the cached memory mapping? * Is 1) Address below the current mapping? OR * 2) Address beyond the current mapping? */ if ((Address < MemInfo->MappedPhysicalAddress) || (((UINT64) Address + Length) > ((UINT64) MemInfo->MappedPhysicalAddress + MemInfo->MappedLength))) { /* * The request cannot be resolved by the current memory mapping; * Delete the existing mapping and create a new one. */ if (MemInfo->MappedLength) { /* Valid mapping, delete it */ AcpiOsUnmapMemory (MemInfo->MappedLogicalAddress, MemInfo->MappedLength); } /* * October 2009: Attempt to map from the requested address to the * end of the region. However, we will never map more than one * page, nor will we cross a page boundary. */ MapLength = (ACPI_SIZE) ((MemInfo->Address + MemInfo->Length) - Address); /* * If mapping the entire remaining portion of the region will cross * a page boundary, just map up to the page boundary, do not cross. * On some systems, crossing a page boundary while mapping regions * can cause warnings if the pages have different attributes * due to resource management. * * This has the added benefit of constraining a single mapping to * one page, which is similar to the original code that used a 4k * maximum window. */ PageBoundaryMapLength = ACPI_ROUND_UP (Address, ACPI_DEFAULT_PAGE_SIZE) - Address; if (PageBoundaryMapLength == 0) { PageBoundaryMapLength = ACPI_DEFAULT_PAGE_SIZE; } if (MapLength > PageBoundaryMapLength) { MapLength = PageBoundaryMapLength; } /* Create a new mapping starting at the address given */ MemInfo->MappedLogicalAddress = AcpiOsMapMemory ( (ACPI_PHYSICAL_ADDRESS) Address, MapLength); if (!MemInfo->MappedLogicalAddress) { ACPI_ERROR ((AE_INFO, "Could not map memory at 0x%8.8X%8.8X, size %u", ACPI_FORMAT_NATIVE_UINT (Address), (UINT32) MapLength)); MemInfo->MappedLength = 0; return_ACPI_STATUS (AE_NO_MEMORY); } /* Save the physical address and mapping size */ MemInfo->MappedPhysicalAddress = Address; MemInfo->MappedLength = MapLength; } /* * Generate a logical pointer corresponding to the address we want to * access */ LogicalAddrPtr = MemInfo->MappedLogicalAddress + ((UINT64) Address - (UINT64) MemInfo->MappedPhysicalAddress); ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "System-Memory (width %u) R/W %u Address=%8.8X%8.8X\n", BitWidth, Function, ACPI_FORMAT_NATIVE_UINT (Address))); /* * Perform the memory read or write * * Note: For machines that do not support non-aligned transfers, the target * address was checked for alignment above. We do not attempt to break the * transfer up into smaller (byte-size) chunks because the AML specifically * asked for a transfer width that the hardware may require. */ switch (Function) { case ACPI_READ: *Value = 0; switch (BitWidth) { case 8: *Value = (UINT64) ACPI_GET8 (LogicalAddrPtr); break; case 16: *Value = (UINT64) ACPI_GET16 (LogicalAddrPtr); break; case 32: *Value = (UINT64) ACPI_GET32 (LogicalAddrPtr); break; case 64: *Value = (UINT64) ACPI_GET64 (LogicalAddrPtr); break; default: /* BitWidth was already validated */ break; } break; case ACPI_WRITE: switch (BitWidth) { case 8: ACPI_SET8 (LogicalAddrPtr, *Value); break; case 16: ACPI_SET16 (LogicalAddrPtr, *Value); break; case 32: ACPI_SET32 (LogicalAddrPtr, *Value); break; case 64: ACPI_SET64 (LogicalAddrPtr, *Value); break; default: /* BitWidth was already validated */ break; } break; default: Status = AE_BAD_PARAMETER; break; } return_ACPI_STATUS (Status); } /******************************************************************************* * * FUNCTION: AcpiExSystemIoSpaceHandler * * PARAMETERS: Function - Read or Write operation * Address - Where in the space to read or write * BitWidth - Field width in bits (8, 16, or 32) * Value - Pointer to in or out value * HandlerContext - Pointer to Handler's context * RegionContext - Pointer to context specific to the * accessed region * * RETURN: Status * * DESCRIPTION: Handler for the System IO address space (Op Region) * ******************************************************************************/ ACPI_STATUS AcpiExSystemIoSpaceHandler ( UINT32 Function, ACPI_PHYSICAL_ADDRESS Address, UINT32 BitWidth, UINT64 *Value, void *HandlerContext, void *RegionContext) { ACPI_STATUS Status = AE_OK; UINT32 Value32; ACPI_FUNCTION_TRACE (ExSystemIoSpaceHandler); ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "System-IO (width %u) R/W %u Address=%8.8X%8.8X\n", BitWidth, Function, ACPI_FORMAT_NATIVE_UINT (Address))); /* Decode the function parameter */ switch (Function) { case ACPI_READ: Status = AcpiHwReadPort ((ACPI_IO_ADDRESS) Address, &Value32, BitWidth); *Value = Value32; break; case ACPI_WRITE: Status = AcpiHwWritePort ((ACPI_IO_ADDRESS) Address, (UINT32) *Value, BitWidth); break; default: Status = AE_BAD_PARAMETER; break; } return_ACPI_STATUS (Status); } /******************************************************************************* * * FUNCTION: AcpiExPciConfigSpaceHandler * * PARAMETERS: Function - Read or Write operation * Address - Where in the space to read or write * BitWidth - Field width in bits (8, 16, or 32) * Value - Pointer to in or out value * HandlerContext - Pointer to Handler's context * RegionContext - Pointer to context specific to the * accessed region * * RETURN: Status * * DESCRIPTION: Handler for the PCI Config address space (Op Region) * ******************************************************************************/ ACPI_STATUS AcpiExPciConfigSpaceHandler ( UINT32 Function, ACPI_PHYSICAL_ADDRESS Address, UINT32 BitWidth, UINT64 *Value, void *HandlerContext, void *RegionContext) { ACPI_STATUS Status = AE_OK; ACPI_PCI_ID *PciId; UINT16 PciRegister; ACPI_FUNCTION_TRACE (ExPciConfigSpaceHandler); /* * The arguments to AcpiOs(Read|Write)PciConfiguration are: * * PciSegment is the PCI bus segment range 0-31 * PciBus is the PCI bus number range 0-255 * PciDevice is the PCI device number range 0-31 * PciFunction is the PCI device function number * PciRegister is the Config space register range 0-255 bytes * * Value - input value for write, output address for read * */ PciId = (ACPI_PCI_ID *) RegionContext; PciRegister = (UINT16) (UINT32) Address; ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Pci-Config %u (%u) Seg(%04x) Bus(%04x) Dev(%04x) Func(%04x) Reg(%04x)\n", Function, BitWidth, PciId->Segment, PciId->Bus, PciId->Device, PciId->Function, PciRegister)); switch (Function) { case ACPI_READ: *Value = 0; Status = AcpiOsReadPciConfiguration (PciId, PciRegister, Value, BitWidth); break; case ACPI_WRITE: Status = AcpiOsWritePciConfiguration (PciId, PciRegister, *Value, BitWidth); break; default: Status = AE_BAD_PARAMETER; break; } return_ACPI_STATUS (Status); } /******************************************************************************* * * FUNCTION: AcpiExCmosSpaceHandler * * PARAMETERS: Function - Read or Write operation * Address - Where in the space to read or write * BitWidth - Field width in bits (8, 16, or 32) * Value - Pointer to in or out value * HandlerContext - Pointer to Handler's context * RegionContext - Pointer to context specific to the * accessed region * * RETURN: Status * * DESCRIPTION: Handler for the CMOS address space (Op Region) * ******************************************************************************/ ACPI_STATUS AcpiExCmosSpaceHandler ( UINT32 Function, ACPI_PHYSICAL_ADDRESS Address, UINT32 BitWidth, UINT64 *Value, void *HandlerContext, void *RegionContext) { ACPI_STATUS Status = AE_OK; ACPI_FUNCTION_TRACE (ExCmosSpaceHandler); return_ACPI_STATUS (Status); } /******************************************************************************* * * FUNCTION: AcpiExPciBarSpaceHandler * * PARAMETERS: Function - Read or Write operation * Address - Where in the space to read or write * BitWidth - Field width in bits (8, 16, or 32) * Value - Pointer to in or out value * HandlerContext - Pointer to Handler's context * RegionContext - Pointer to context specific to the * accessed region * * RETURN: Status * * DESCRIPTION: Handler for the PCI BarTarget address space (Op Region) * ******************************************************************************/ ACPI_STATUS AcpiExPciBarSpaceHandler ( UINT32 Function, ACPI_PHYSICAL_ADDRESS Address, UINT32 BitWidth, UINT64 *Value, void *HandlerContext, void *RegionContext) { ACPI_STATUS Status = AE_OK; ACPI_FUNCTION_TRACE (ExPciBarSpaceHandler); return_ACPI_STATUS (Status); } /******************************************************************************* * * FUNCTION: AcpiExDataTableSpaceHandler * * PARAMETERS: Function - Read or Write operation * Address - Where in the space to read or write * BitWidth - Field width in bits (8, 16, or 32) * Value - Pointer to in or out value * HandlerContext - Pointer to Handler's context * RegionContext - Pointer to context specific to the * accessed region * * RETURN: Status * * DESCRIPTION: Handler for the Data Table address space (Op Region) * ******************************************************************************/ ACPI_STATUS AcpiExDataTableSpaceHandler ( UINT32 Function, ACPI_PHYSICAL_ADDRESS Address, UINT32 BitWidth, UINT64 *Value, void *HandlerContext, void *RegionContext) { ACPI_FUNCTION_TRACE (ExDataTableSpaceHandler); /* * Perform the memory read or write. The BitWidth was already * validated. */ switch (Function) { case ACPI_READ: ACPI_MEMCPY (ACPI_CAST_PTR (char, Value), ACPI_PHYSADDR_TO_PTR (Address), ACPI_DIV_8 (BitWidth)); break; case ACPI_WRITE: ACPI_MEMCPY (ACPI_PHYSADDR_TO_PTR (Address), ACPI_CAST_PTR (char, Value), ACPI_DIV_8 (BitWidth)); break; default: return_ACPI_STATUS (AE_BAD_PARAMETER); } return_ACPI_STATUS (AE_OK); } src/acpica/source/components/executer/exresnte.c000066400000000000000000000324531231470457100224120ustar00rootroot00000000000000/****************************************************************************** * * Module Name: exresnte - AML Interpreter object resolution * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #define __EXRESNTE_C__ #include "acpi.h" #include "accommon.h" #include "acdispat.h" #include "acinterp.h" #include "acnamesp.h" #define _COMPONENT ACPI_EXECUTER ACPI_MODULE_NAME ("exresnte") /******************************************************************************* * * FUNCTION: AcpiExResolveNodeToValue * * PARAMETERS: ObjectPtr - Pointer to a location that contains * a pointer to a NS node, and will receive a * pointer to the resolved object. * WalkState - Current state. Valid only if executing AML * code. NULL if simply resolving an object * * RETURN: Status * * DESCRIPTION: Resolve a Namespace node to a valued object * * Note: for some of the data types, the pointer attached to the Node * can be either a pointer to an actual internal object or a pointer into the * AML stream itself. These types are currently: * * ACPI_TYPE_INTEGER * ACPI_TYPE_STRING * ACPI_TYPE_BUFFER * ACPI_TYPE_MUTEX * ACPI_TYPE_PACKAGE * ******************************************************************************/ ACPI_STATUS AcpiExResolveNodeToValue ( ACPI_NAMESPACE_NODE **ObjectPtr, ACPI_WALK_STATE *WalkState) { ACPI_STATUS Status = AE_OK; ACPI_OPERAND_OBJECT *SourceDesc; ACPI_OPERAND_OBJECT *ObjDesc = NULL; ACPI_NAMESPACE_NODE *Node; ACPI_OBJECT_TYPE EntryType; ACPI_FUNCTION_TRACE (ExResolveNodeToValue); /* * The stack pointer points to a ACPI_NAMESPACE_NODE (Node). Get the * object that is attached to the Node. */ Node = *ObjectPtr; SourceDesc = AcpiNsGetAttachedObject (Node); EntryType = AcpiNsGetType ((ACPI_HANDLE) Node); ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Entry=%p SourceDesc=%p [%s]\n", Node, SourceDesc, AcpiUtGetTypeName (EntryType))); if ((EntryType == ACPI_TYPE_LOCAL_ALIAS) || (EntryType == ACPI_TYPE_LOCAL_METHOD_ALIAS)) { /* There is always exactly one level of indirection */ Node = ACPI_CAST_PTR (ACPI_NAMESPACE_NODE, Node->Object); SourceDesc = AcpiNsGetAttachedObject (Node); EntryType = AcpiNsGetType ((ACPI_HANDLE) Node); *ObjectPtr = Node; } /* * Several object types require no further processing: * 1) Device/Thermal objects don't have a "real" subobject, return the Node * 2) Method locals and arguments have a pseudo-Node * 3) 10/2007: Added method type to assist with Package construction. */ if ((EntryType == ACPI_TYPE_DEVICE) || (EntryType == ACPI_TYPE_THERMAL) || (EntryType == ACPI_TYPE_METHOD) || (Node->Flags & (ANOBJ_METHOD_ARG | ANOBJ_METHOD_LOCAL))) { return_ACPI_STATUS (AE_OK); } if (!SourceDesc) { ACPI_ERROR ((AE_INFO, "No object attached to node [%4.4s] %p", Node->Name.Ascii, Node)); return_ACPI_STATUS (AE_AML_NO_OPERAND); } /* * Action is based on the type of the Node, which indicates the type * of the attached object or pointer */ switch (EntryType) { case ACPI_TYPE_PACKAGE: if (SourceDesc->Common.Type != ACPI_TYPE_PACKAGE) { ACPI_ERROR ((AE_INFO, "Object not a Package, type %s", AcpiUtGetObjectTypeName (SourceDesc))); return_ACPI_STATUS (AE_AML_OPERAND_TYPE); } Status = AcpiDsGetPackageArguments (SourceDesc); if (ACPI_SUCCESS (Status)) { /* Return an additional reference to the object */ ObjDesc = SourceDesc; AcpiUtAddReference (ObjDesc); } break; case ACPI_TYPE_BUFFER: if (SourceDesc->Common.Type != ACPI_TYPE_BUFFER) { ACPI_ERROR ((AE_INFO, "Object not a Buffer, type %s", AcpiUtGetObjectTypeName (SourceDesc))); return_ACPI_STATUS (AE_AML_OPERAND_TYPE); } Status = AcpiDsGetBufferArguments (SourceDesc); if (ACPI_SUCCESS (Status)) { /* Return an additional reference to the object */ ObjDesc = SourceDesc; AcpiUtAddReference (ObjDesc); } break; case ACPI_TYPE_STRING: if (SourceDesc->Common.Type != ACPI_TYPE_STRING) { ACPI_ERROR ((AE_INFO, "Object not a String, type %s", AcpiUtGetObjectTypeName (SourceDesc))); return_ACPI_STATUS (AE_AML_OPERAND_TYPE); } /* Return an additional reference to the object */ ObjDesc = SourceDesc; AcpiUtAddReference (ObjDesc); break; case ACPI_TYPE_INTEGER: if (SourceDesc->Common.Type != ACPI_TYPE_INTEGER) { ACPI_ERROR ((AE_INFO, "Object not a Integer, type %s", AcpiUtGetObjectTypeName (SourceDesc))); return_ACPI_STATUS (AE_AML_OPERAND_TYPE); } /* Return an additional reference to the object */ ObjDesc = SourceDesc; AcpiUtAddReference (ObjDesc); break; case ACPI_TYPE_BUFFER_FIELD: case ACPI_TYPE_LOCAL_REGION_FIELD: case ACPI_TYPE_LOCAL_BANK_FIELD: case ACPI_TYPE_LOCAL_INDEX_FIELD: ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "FieldRead Node=%p SourceDesc=%p Type=%X\n", Node, SourceDesc, EntryType)); Status = AcpiExReadDataFromField (WalkState, SourceDesc, &ObjDesc); break; /* For these objects, just return the object attached to the Node */ case ACPI_TYPE_MUTEX: case ACPI_TYPE_POWER: case ACPI_TYPE_PROCESSOR: case ACPI_TYPE_EVENT: case ACPI_TYPE_REGION: /* Return an additional reference to the object */ ObjDesc = SourceDesc; AcpiUtAddReference (ObjDesc); break; /* TYPE_ANY is untyped, and thus there is no object associated with it */ case ACPI_TYPE_ANY: ACPI_ERROR ((AE_INFO, "Untyped entry %p, no attached object!", Node)); return_ACPI_STATUS (AE_AML_OPERAND_TYPE); /* Cannot be AE_TYPE */ case ACPI_TYPE_LOCAL_REFERENCE: switch (SourceDesc->Reference.Class) { case ACPI_REFCLASS_TABLE: /* This is a DdbHandle */ case ACPI_REFCLASS_REFOF: case ACPI_REFCLASS_INDEX: /* Return an additional reference to the object */ ObjDesc = SourceDesc; AcpiUtAddReference (ObjDesc); break; default: /* No named references are allowed here */ ACPI_ERROR ((AE_INFO, "Unsupported Reference type 0x%X", SourceDesc->Reference.Class)); return_ACPI_STATUS (AE_AML_OPERAND_TYPE); } break; default: /* Default case is for unknown types */ ACPI_ERROR ((AE_INFO, "Node %p - Unknown object type 0x%X", Node, EntryType)); return_ACPI_STATUS (AE_AML_OPERAND_TYPE); } /* switch (EntryType) */ /* Return the object descriptor */ *ObjectPtr = (void *) ObjDesc; return_ACPI_STATUS (Status); } src/acpica/source/components/executer/exresolv.c000066400000000000000000000514551231470457100224270ustar00rootroot00000000000000/****************************************************************************** * * Module Name: exresolv - AML Interpreter object resolution * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #define __EXRESOLV_C__ #include "acpi.h" #include "accommon.h" #include "amlcode.h" #include "acdispat.h" #include "acinterp.h" #include "acnamesp.h" #define _COMPONENT ACPI_EXECUTER ACPI_MODULE_NAME ("exresolv") /* Local prototypes */ static ACPI_STATUS AcpiExResolveObjectToValue ( ACPI_OPERAND_OBJECT **StackPtr, ACPI_WALK_STATE *WalkState); /******************************************************************************* * * FUNCTION: AcpiExResolveToValue * * PARAMETERS: **StackPtr - Points to entry on ObjStack, which can * be either an (ACPI_OPERAND_OBJECT *) * or an ACPI_HANDLE. * WalkState - Current method state * * RETURN: Status * * DESCRIPTION: Convert Reference objects to values * ******************************************************************************/ ACPI_STATUS AcpiExResolveToValue ( ACPI_OPERAND_OBJECT **StackPtr, ACPI_WALK_STATE *WalkState) { ACPI_STATUS Status; ACPI_FUNCTION_TRACE_PTR (ExResolveToValue, StackPtr); if (!StackPtr || !*StackPtr) { ACPI_ERROR ((AE_INFO, "Internal - null pointer")); return_ACPI_STATUS (AE_AML_NO_OPERAND); } /* * The entity pointed to by the StackPtr can be either * 1) A valid ACPI_OPERAND_OBJECT, or * 2) A ACPI_NAMESPACE_NODE (NamedObj) */ if (ACPI_GET_DESCRIPTOR_TYPE (*StackPtr) == ACPI_DESC_TYPE_OPERAND) { Status = AcpiExResolveObjectToValue (StackPtr, WalkState); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } if (!*StackPtr) { ACPI_ERROR ((AE_INFO, "Internal - null pointer")); return_ACPI_STATUS (AE_AML_NO_OPERAND); } } /* * Object on the stack may have changed if AcpiExResolveObjectToValue() * was called (i.e., we can't use an _else_ here.) */ if (ACPI_GET_DESCRIPTOR_TYPE (*StackPtr) == ACPI_DESC_TYPE_NAMED) { Status = AcpiExResolveNodeToValue ( ACPI_CAST_INDIRECT_PTR (ACPI_NAMESPACE_NODE, StackPtr), WalkState); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } } ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Resolved object %p\n", *StackPtr)); return_ACPI_STATUS (AE_OK); } /******************************************************************************* * * FUNCTION: AcpiExResolveObjectToValue * * PARAMETERS: StackPtr - Pointer to an internal object * WalkState - Current method state * * RETURN: Status * * DESCRIPTION: Retrieve the value from an internal object. The Reference type * uses the associated AML opcode to determine the value. * ******************************************************************************/ static ACPI_STATUS AcpiExResolveObjectToValue ( ACPI_OPERAND_OBJECT **StackPtr, ACPI_WALK_STATE *WalkState) { ACPI_STATUS Status = AE_OK; ACPI_OPERAND_OBJECT *StackDesc; ACPI_OPERAND_OBJECT *ObjDesc = NULL; UINT8 RefType; ACPI_FUNCTION_TRACE (ExResolveObjectToValue); StackDesc = *StackPtr; /* This is an object of type ACPI_OPERAND_OBJECT */ switch (StackDesc->Common.Type) { case ACPI_TYPE_LOCAL_REFERENCE: RefType = StackDesc->Reference.Class; switch (RefType) { case ACPI_REFCLASS_LOCAL: case ACPI_REFCLASS_ARG: /* * Get the local from the method's state info * Note: this increments the local's object reference count */ Status = AcpiDsMethodDataGetValue (RefType, StackDesc->Reference.Value, WalkState, &ObjDesc); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "[Arg/Local %X] ValueObj is %p\n", StackDesc->Reference.Value, ObjDesc)); /* * Now we can delete the original Reference Object and * replace it with the resolved value */ AcpiUtRemoveReference (StackDesc); *StackPtr = ObjDesc; break; case ACPI_REFCLASS_INDEX: switch (StackDesc->Reference.TargetType) { case ACPI_TYPE_BUFFER_FIELD: /* Just return - do not dereference */ break; case ACPI_TYPE_PACKAGE: /* If method call or CopyObject - do not dereference */ if ((WalkState->Opcode == AML_INT_METHODCALL_OP) || (WalkState->Opcode == AML_COPY_OP)) { break; } /* Otherwise, dereference the PackageIndex to a package element */ ObjDesc = *StackDesc->Reference.Where; if (ObjDesc) { /* * Valid object descriptor, copy pointer to return value * (i.e., dereference the package index) * Delete the ref object, increment the returned object */ AcpiUtRemoveReference (StackDesc); AcpiUtAddReference (ObjDesc); *StackPtr = ObjDesc; } else { /* * A NULL object descriptor means an uninitialized element of * the package, can't dereference it */ ACPI_ERROR ((AE_INFO, "Attempt to dereference an Index to NULL package element Idx=%p", StackDesc)); Status = AE_AML_UNINITIALIZED_ELEMENT; } break; default: /* Invalid reference object */ ACPI_ERROR ((AE_INFO, "Unknown TargetType 0x%X in Index/Reference object %p", StackDesc->Reference.TargetType, StackDesc)); Status = AE_AML_INTERNAL; break; } break; case ACPI_REFCLASS_REFOF: case ACPI_REFCLASS_DEBUG: case ACPI_REFCLASS_TABLE: /* Just leave the object as-is, do not dereference */ break; case ACPI_REFCLASS_NAME: /* Reference to a named object */ /* Dereference the name */ if ((StackDesc->Reference.Node->Type == ACPI_TYPE_DEVICE) || (StackDesc->Reference.Node->Type == ACPI_TYPE_THERMAL)) { /* These node types do not have 'real' subobjects */ *StackPtr = (void *) StackDesc->Reference.Node; } else { /* Get the object pointed to by the namespace node */ *StackPtr = (StackDesc->Reference.Node)->Object; AcpiUtAddReference (*StackPtr); } AcpiUtRemoveReference (StackDesc); break; default: ACPI_ERROR ((AE_INFO, "Unknown Reference type 0x%X in %p", RefType, StackDesc)); Status = AE_AML_INTERNAL; break; } break; case ACPI_TYPE_BUFFER: Status = AcpiDsGetBufferArguments (StackDesc); break; case ACPI_TYPE_PACKAGE: Status = AcpiDsGetPackageArguments (StackDesc); break; case ACPI_TYPE_BUFFER_FIELD: case ACPI_TYPE_LOCAL_REGION_FIELD: case ACPI_TYPE_LOCAL_BANK_FIELD: case ACPI_TYPE_LOCAL_INDEX_FIELD: ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "FieldRead SourceDesc=%p Type=%X\n", StackDesc, StackDesc->Common.Type)); Status = AcpiExReadDataFromField (WalkState, StackDesc, &ObjDesc); /* Remove a reference to the original operand, then override */ AcpiUtRemoveReference (*StackPtr); *StackPtr = (void *) ObjDesc; break; default: break; } return_ACPI_STATUS (Status); } /******************************************************************************* * * FUNCTION: AcpiExResolveMultiple * * PARAMETERS: WalkState - Current state (contains AML opcode) * Operand - Starting point for resolution * ReturnType - Where the object type is returned * ReturnDesc - Where the resolved object is returned * * RETURN: Status * * DESCRIPTION: Return the base object and type. Traverse a reference list if * necessary to get to the base object. * ******************************************************************************/ ACPI_STATUS AcpiExResolveMultiple ( ACPI_WALK_STATE *WalkState, ACPI_OPERAND_OBJECT *Operand, ACPI_OBJECT_TYPE *ReturnType, ACPI_OPERAND_OBJECT **ReturnDesc) { ACPI_OPERAND_OBJECT *ObjDesc = (void *) Operand; ACPI_NAMESPACE_NODE *Node; ACPI_OBJECT_TYPE Type; ACPI_STATUS Status; ACPI_FUNCTION_TRACE (AcpiExResolveMultiple); /* Operand can be either a namespace node or an operand descriptor */ switch (ACPI_GET_DESCRIPTOR_TYPE (ObjDesc)) { case ACPI_DESC_TYPE_OPERAND: Type = ObjDesc->Common.Type; break; case ACPI_DESC_TYPE_NAMED: Type = ((ACPI_NAMESPACE_NODE *) ObjDesc)->Type; ObjDesc = AcpiNsGetAttachedObject ((ACPI_NAMESPACE_NODE *) ObjDesc); /* If we had an Alias node, use the attached object for type info */ if (Type == ACPI_TYPE_LOCAL_ALIAS) { Type = ((ACPI_NAMESPACE_NODE *) ObjDesc)->Type; ObjDesc = AcpiNsGetAttachedObject ((ACPI_NAMESPACE_NODE *) ObjDesc); } break; default: return_ACPI_STATUS (AE_AML_OPERAND_TYPE); } /* If type is anything other than a reference, we are done */ if (Type != ACPI_TYPE_LOCAL_REFERENCE) { goto Exit; } /* * For reference objects created via the RefOf, Index, or Load/LoadTable * operators, we need to get to the base object (as per the ACPI * specification of the ObjectType and SizeOf operators). This means * traversing the list of possibly many nested references. */ while (ObjDesc->Common.Type == ACPI_TYPE_LOCAL_REFERENCE) { switch (ObjDesc->Reference.Class) { case ACPI_REFCLASS_REFOF: case ACPI_REFCLASS_NAME: /* Dereference the reference pointer */ if (ObjDesc->Reference.Class == ACPI_REFCLASS_REFOF) { Node = ObjDesc->Reference.Object; } else /* AML_INT_NAMEPATH_OP */ { Node = ObjDesc->Reference.Node; } /* All "References" point to a NS node */ if (ACPI_GET_DESCRIPTOR_TYPE (Node) != ACPI_DESC_TYPE_NAMED) { ACPI_ERROR ((AE_INFO, "Not a namespace node %p [%s]", Node, AcpiUtGetDescriptorName (Node))); return_ACPI_STATUS (AE_AML_INTERNAL); } /* Get the attached object */ ObjDesc = AcpiNsGetAttachedObject (Node); if (!ObjDesc) { /* No object, use the NS node type */ Type = AcpiNsGetType (Node); goto Exit; } /* Check for circular references */ if (ObjDesc == Operand) { return_ACPI_STATUS (AE_AML_CIRCULAR_REFERENCE); } break; case ACPI_REFCLASS_INDEX: /* Get the type of this reference (index into another object) */ Type = ObjDesc->Reference.TargetType; if (Type != ACPI_TYPE_PACKAGE) { goto Exit; } /* * The main object is a package, we want to get the type * of the individual package element that is referenced by * the index. * * This could of course in turn be another reference object. */ ObjDesc = *(ObjDesc->Reference.Where); if (!ObjDesc) { /* NULL package elements are allowed */ Type = 0; /* Uninitialized */ goto Exit; } break; case ACPI_REFCLASS_TABLE: Type = ACPI_TYPE_DDB_HANDLE; goto Exit; case ACPI_REFCLASS_LOCAL: case ACPI_REFCLASS_ARG: if (ReturnDesc) { Status = AcpiDsMethodDataGetValue (ObjDesc->Reference.Class, ObjDesc->Reference.Value, WalkState, &ObjDesc); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } AcpiUtRemoveReference (ObjDesc); } else { Status = AcpiDsMethodDataGetNode (ObjDesc->Reference.Class, ObjDesc->Reference.Value, WalkState, &Node); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } ObjDesc = AcpiNsGetAttachedObject (Node); if (!ObjDesc) { Type = ACPI_TYPE_ANY; goto Exit; } } break; case ACPI_REFCLASS_DEBUG: /* The Debug Object is of type "DebugObject" */ Type = ACPI_TYPE_DEBUG_OBJECT; goto Exit; default: ACPI_ERROR ((AE_INFO, "Unknown Reference Class 0x%2.2X", ObjDesc->Reference.Class)); return_ACPI_STATUS (AE_AML_INTERNAL); } } /* * Now we are guaranteed to have an object that has not been created * via the RefOf or Index operators. */ Type = ObjDesc->Common.Type; Exit: /* Convert internal types to external types */ switch (Type) { case ACPI_TYPE_LOCAL_REGION_FIELD: case ACPI_TYPE_LOCAL_BANK_FIELD: case ACPI_TYPE_LOCAL_INDEX_FIELD: Type = ACPI_TYPE_FIELD_UNIT; break; case ACPI_TYPE_LOCAL_SCOPE: /* Per ACPI Specification, Scope is untyped */ Type = ACPI_TYPE_ANY; break; default: /* No change to Type required */ break; } *ReturnType = Type; if (ReturnDesc) { *ReturnDesc = ObjDesc; } return_ACPI_STATUS (AE_OK); } src/acpica/source/components/executer/exresop.c000066400000000000000000000635331231470457100222450ustar00rootroot00000000000000/****************************************************************************** * * Module Name: exresop - AML Interpreter operand/object resolution * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #define __EXRESOP_C__ #include "acpi.h" #include "accommon.h" #include "amlcode.h" #include "acparser.h" #include "acinterp.h" #include "acnamesp.h" #define _COMPONENT ACPI_EXECUTER ACPI_MODULE_NAME ("exresop") /* Local prototypes */ static ACPI_STATUS AcpiExCheckObjectType ( ACPI_OBJECT_TYPE TypeNeeded, ACPI_OBJECT_TYPE ThisType, void *Object); /******************************************************************************* * * FUNCTION: AcpiExCheckObjectType * * PARAMETERS: TypeNeeded Object type needed * ThisType Actual object type * Object Object pointer * * RETURN: Status * * DESCRIPTION: Check required type against actual type * ******************************************************************************/ static ACPI_STATUS AcpiExCheckObjectType ( ACPI_OBJECT_TYPE TypeNeeded, ACPI_OBJECT_TYPE ThisType, void *Object) { ACPI_FUNCTION_ENTRY (); if (TypeNeeded == ACPI_TYPE_ANY) { /* All types OK, so we don't perform any typechecks */ return (AE_OK); } if (TypeNeeded == ACPI_TYPE_LOCAL_REFERENCE) { /* * Allow the AML "Constant" opcodes (Zero, One, etc.) to be reference * objects and thus allow them to be targets. (As per the ACPI * specification, a store to a constant is a noop.) */ if ((ThisType == ACPI_TYPE_INTEGER) && (((ACPI_OPERAND_OBJECT *) Object)->Common.Flags & AOPOBJ_AML_CONSTANT)) { return (AE_OK); } } if (TypeNeeded != ThisType) { ACPI_ERROR ((AE_INFO, "Needed type [%s], found [%s] %p", AcpiUtGetTypeName (TypeNeeded), AcpiUtGetTypeName (ThisType), Object)); return (AE_AML_OPERAND_TYPE); } return (AE_OK); } /******************************************************************************* * * FUNCTION: AcpiExResolveOperands * * PARAMETERS: Opcode - Opcode being interpreted * StackPtr - Pointer to the operand stack to be * resolved * WalkState - Current state * * RETURN: Status * * DESCRIPTION: Convert multiple input operands to the types required by the * target operator. * * Each 5-bit group in ArgTypes represents one required * operand and indicates the required Type. The corresponding operand * will be converted to the required type if possible, otherwise we * abort with an exception. * ******************************************************************************/ ACPI_STATUS AcpiExResolveOperands ( UINT16 Opcode, ACPI_OPERAND_OBJECT **StackPtr, ACPI_WALK_STATE *WalkState) { ACPI_OPERAND_OBJECT *ObjDesc; ACPI_STATUS Status = AE_OK; UINT8 ObjectType; UINT32 ArgTypes; const ACPI_OPCODE_INFO *OpInfo; UINT32 ThisArgType; ACPI_OBJECT_TYPE TypeNeeded; UINT16 TargetOp = 0; ACPI_FUNCTION_TRACE_U32 (ExResolveOperands, Opcode); OpInfo = AcpiPsGetOpcodeInfo (Opcode); if (OpInfo->Class == AML_CLASS_UNKNOWN) { return_ACPI_STATUS (AE_AML_BAD_OPCODE); } ArgTypes = OpInfo->RuntimeArgs; if (ArgTypes == ARGI_INVALID_OPCODE) { ACPI_ERROR ((AE_INFO, "Unknown AML opcode 0x%X", Opcode)); return_ACPI_STATUS (AE_AML_INTERNAL); } ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Opcode %X [%s] RequiredOperandTypes=%8.8X\n", Opcode, OpInfo->Name, ArgTypes)); /* * Normal exit is with (ArgTypes == 0) at end of argument list. * Function will return an exception from within the loop upon * finding an entry which is not (or cannot be converted * to) the required type; if stack underflows; or upon * finding a NULL stack entry (which should not happen). */ while (GET_CURRENT_ARG_TYPE (ArgTypes)) { if (!StackPtr || !*StackPtr) { ACPI_ERROR ((AE_INFO, "Null stack entry at %p", StackPtr)); return_ACPI_STATUS (AE_AML_INTERNAL); } /* Extract useful items */ ObjDesc = *StackPtr; /* Decode the descriptor type */ switch (ACPI_GET_DESCRIPTOR_TYPE (ObjDesc)) { case ACPI_DESC_TYPE_NAMED: /* Namespace Node */ ObjectType = ((ACPI_NAMESPACE_NODE *) ObjDesc)->Type; /* * Resolve an alias object. The construction of these objects * guarantees that there is only one level of alias indirection; * thus, the attached object is always the aliased namespace node */ if (ObjectType == ACPI_TYPE_LOCAL_ALIAS) { ObjDesc = AcpiNsGetAttachedObject ((ACPI_NAMESPACE_NODE *) ObjDesc); *StackPtr = ObjDesc; ObjectType = ((ACPI_NAMESPACE_NODE *) ObjDesc)->Type; } break; case ACPI_DESC_TYPE_OPERAND: /* ACPI internal object */ ObjectType = ObjDesc->Common.Type; /* Check for bad ACPI_OBJECT_TYPE */ if (!AcpiUtValidObjectType (ObjectType)) { ACPI_ERROR ((AE_INFO, "Bad operand object type [0x%X]", ObjectType)); return_ACPI_STATUS (AE_AML_OPERAND_TYPE); } if (ObjectType == (UINT8) ACPI_TYPE_LOCAL_REFERENCE) { /* Validate the Reference */ switch (ObjDesc->Reference.Class) { case ACPI_REFCLASS_DEBUG: TargetOp = AML_DEBUG_OP; /*lint -fallthrough */ case ACPI_REFCLASS_ARG: case ACPI_REFCLASS_LOCAL: case ACPI_REFCLASS_INDEX: case ACPI_REFCLASS_REFOF: case ACPI_REFCLASS_TABLE: /* DdbHandle from LOAD_OP or LOAD_TABLE_OP */ case ACPI_REFCLASS_NAME: /* Reference to a named object */ ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Operand is a Reference, Class [%s] %2.2X\n", AcpiUtGetReferenceName (ObjDesc), ObjDesc->Reference.Class)); break; default: ACPI_ERROR ((AE_INFO, "Unknown Reference Class 0x%2.2X in %p", ObjDesc->Reference.Class, ObjDesc)); return_ACPI_STATUS (AE_AML_OPERAND_TYPE); } } break; default: /* Invalid descriptor */ ACPI_ERROR ((AE_INFO, "Invalid descriptor %p [%s]", ObjDesc, AcpiUtGetDescriptorName (ObjDesc))); return_ACPI_STATUS (AE_AML_OPERAND_TYPE); } /* Get one argument type, point to the next */ ThisArgType = GET_CURRENT_ARG_TYPE (ArgTypes); INCREMENT_ARG_LIST (ArgTypes); /* * Handle cases where the object does not need to be * resolved to a value */ switch (ThisArgType) { case ARGI_REF_OR_STRING: /* Can be a String or Reference */ if ((ACPI_GET_DESCRIPTOR_TYPE (ObjDesc) == ACPI_DESC_TYPE_OPERAND) && (ObjDesc->Common.Type == ACPI_TYPE_STRING)) { /* * String found - the string references a named object and * must be resolved to a node */ goto NextOperand; } /* * Else not a string - fall through to the normal Reference * case below */ /*lint -fallthrough */ case ARGI_REFERENCE: /* References: */ case ARGI_INTEGER_REF: case ARGI_OBJECT_REF: case ARGI_DEVICE_REF: case ARGI_TARGETREF: /* Allows implicit conversion rules before store */ case ARGI_FIXED_TARGET: /* No implicit conversion before store to target */ case ARGI_SIMPLE_TARGET: /* Name, Local, or Arg - no implicit conversion */ /* * Need an operand of type ACPI_TYPE_LOCAL_REFERENCE * A Namespace Node is OK as-is */ if (ACPI_GET_DESCRIPTOR_TYPE (ObjDesc) == ACPI_DESC_TYPE_NAMED) { goto NextOperand; } Status = AcpiExCheckObjectType (ACPI_TYPE_LOCAL_REFERENCE, ObjectType, ObjDesc); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } goto NextOperand; case ARGI_DATAREFOBJ: /* Store operator only */ /* * We don't want to resolve IndexOp reference objects during * a store because this would be an implicit DeRefOf operation. * Instead, we just want to store the reference object. * -- All others must be resolved below. */ if ((Opcode == AML_STORE_OP) && ((*StackPtr)->Common.Type == ACPI_TYPE_LOCAL_REFERENCE) && ((*StackPtr)->Reference.Class == ACPI_REFCLASS_INDEX)) { goto NextOperand; } break; default: /* All cases covered above */ break; } /* * Resolve this object to a value */ Status = AcpiExResolveToValue (StackPtr, WalkState); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } /* Get the resolved object */ ObjDesc = *StackPtr; /* * Check the resulting object (value) type */ switch (ThisArgType) { /* * For the simple cases, only one type of resolved object * is allowed */ case ARGI_MUTEX: /* Need an operand of type ACPI_TYPE_MUTEX */ TypeNeeded = ACPI_TYPE_MUTEX; break; case ARGI_EVENT: /* Need an operand of type ACPI_TYPE_EVENT */ TypeNeeded = ACPI_TYPE_EVENT; break; case ARGI_PACKAGE: /* Package */ /* Need an operand of type ACPI_TYPE_PACKAGE */ TypeNeeded = ACPI_TYPE_PACKAGE; break; case ARGI_ANYTYPE: /* Any operand type will do */ TypeNeeded = ACPI_TYPE_ANY; break; case ARGI_DDBHANDLE: /* Need an operand of type ACPI_TYPE_DDB_HANDLE */ TypeNeeded = ACPI_TYPE_LOCAL_REFERENCE; break; /* * The more complex cases allow multiple resolved object types */ case ARGI_INTEGER: /* * Need an operand of type ACPI_TYPE_INTEGER, * But we can implicitly convert from a STRING or BUFFER * Aka - "Implicit Source Operand Conversion" */ Status = AcpiExConvertToInteger (ObjDesc, StackPtr, 16); if (ACPI_FAILURE (Status)) { if (Status == AE_TYPE) { ACPI_ERROR ((AE_INFO, "Needed [Integer/String/Buffer], found [%s] %p", AcpiUtGetObjectTypeName (ObjDesc), ObjDesc)); return_ACPI_STATUS (AE_AML_OPERAND_TYPE); } return_ACPI_STATUS (Status); } if (ObjDesc != *StackPtr) { AcpiUtRemoveReference (ObjDesc); } goto NextOperand; case ARGI_BUFFER: /* * Need an operand of type ACPI_TYPE_BUFFER, * But we can implicitly convert from a STRING or INTEGER * Aka - "Implicit Source Operand Conversion" */ Status = AcpiExConvertToBuffer (ObjDesc, StackPtr); if (ACPI_FAILURE (Status)) { if (Status == AE_TYPE) { ACPI_ERROR ((AE_INFO, "Needed [Integer/String/Buffer], found [%s] %p", AcpiUtGetObjectTypeName (ObjDesc), ObjDesc)); return_ACPI_STATUS (AE_AML_OPERAND_TYPE); } return_ACPI_STATUS (Status); } if (ObjDesc != *StackPtr) { AcpiUtRemoveReference (ObjDesc); } goto NextOperand; case ARGI_STRING: /* * Need an operand of type ACPI_TYPE_STRING, * But we can implicitly convert from a BUFFER or INTEGER * Aka - "Implicit Source Operand Conversion" */ Status = AcpiExConvertToString (ObjDesc, StackPtr, ACPI_IMPLICIT_CONVERT_HEX); if (ACPI_FAILURE (Status)) { if (Status == AE_TYPE) { ACPI_ERROR ((AE_INFO, "Needed [Integer/String/Buffer], found [%s] %p", AcpiUtGetObjectTypeName (ObjDesc), ObjDesc)); return_ACPI_STATUS (AE_AML_OPERAND_TYPE); } return_ACPI_STATUS (Status); } if (ObjDesc != *StackPtr) { AcpiUtRemoveReference (ObjDesc); } goto NextOperand; case ARGI_COMPUTEDATA: /* Need an operand of type INTEGER, STRING or BUFFER */ switch (ObjDesc->Common.Type) { case ACPI_TYPE_INTEGER: case ACPI_TYPE_STRING: case ACPI_TYPE_BUFFER: /* Valid operand */ break; default: ACPI_ERROR ((AE_INFO, "Needed [Integer/String/Buffer], found [%s] %p", AcpiUtGetObjectTypeName (ObjDesc), ObjDesc)); return_ACPI_STATUS (AE_AML_OPERAND_TYPE); } goto NextOperand; case ARGI_BUFFER_OR_STRING: /* Need an operand of type STRING or BUFFER */ switch (ObjDesc->Common.Type) { case ACPI_TYPE_STRING: case ACPI_TYPE_BUFFER: /* Valid operand */ break; case ACPI_TYPE_INTEGER: /* Highest priority conversion is to type Buffer */ Status = AcpiExConvertToBuffer (ObjDesc, StackPtr); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } if (ObjDesc != *StackPtr) { AcpiUtRemoveReference (ObjDesc); } break; default: ACPI_ERROR ((AE_INFO, "Needed [Integer/String/Buffer], found [%s] %p", AcpiUtGetObjectTypeName (ObjDesc), ObjDesc)); return_ACPI_STATUS (AE_AML_OPERAND_TYPE); } goto NextOperand; case ARGI_DATAOBJECT: /* * ARGI_DATAOBJECT is only used by the SizeOf operator. * Need a buffer, string, package, or RefOf reference. * * The only reference allowed here is a direct reference to * a namespace node. */ switch (ObjDesc->Common.Type) { case ACPI_TYPE_PACKAGE: case ACPI_TYPE_STRING: case ACPI_TYPE_BUFFER: case ACPI_TYPE_LOCAL_REFERENCE: /* Valid operand */ break; default: ACPI_ERROR ((AE_INFO, "Needed [Buffer/String/Package/Reference], found [%s] %p", AcpiUtGetObjectTypeName (ObjDesc), ObjDesc)); return_ACPI_STATUS (AE_AML_OPERAND_TYPE); } goto NextOperand; case ARGI_COMPLEXOBJ: /* Need a buffer or package or (ACPI 2.0) String */ switch (ObjDesc->Common.Type) { case ACPI_TYPE_PACKAGE: case ACPI_TYPE_STRING: case ACPI_TYPE_BUFFER: /* Valid operand */ break; default: ACPI_ERROR ((AE_INFO, "Needed [Buffer/String/Package], found [%s] %p", AcpiUtGetObjectTypeName (ObjDesc), ObjDesc)); return_ACPI_STATUS (AE_AML_OPERAND_TYPE); } goto NextOperand; case ARGI_REGION_OR_BUFFER: /* Used by Load() only */ /* Need an operand of type REGION or a BUFFER (which could be a resolved region field) */ switch (ObjDesc->Common.Type) { case ACPI_TYPE_BUFFER: case ACPI_TYPE_REGION: /* Valid operand */ break; default: ACPI_ERROR ((AE_INFO, "Needed [Region/Buffer], found [%s] %p", AcpiUtGetObjectTypeName (ObjDesc), ObjDesc)); return_ACPI_STATUS (AE_AML_OPERAND_TYPE); } goto NextOperand; case ARGI_DATAREFOBJ: /* Used by the Store() operator only */ switch (ObjDesc->Common.Type) { case ACPI_TYPE_INTEGER: case ACPI_TYPE_PACKAGE: case ACPI_TYPE_STRING: case ACPI_TYPE_BUFFER: case ACPI_TYPE_BUFFER_FIELD: case ACPI_TYPE_LOCAL_REFERENCE: case ACPI_TYPE_LOCAL_REGION_FIELD: case ACPI_TYPE_LOCAL_BANK_FIELD: case ACPI_TYPE_LOCAL_INDEX_FIELD: case ACPI_TYPE_DDB_HANDLE: /* Valid operand */ break; default: if (AcpiGbl_EnableInterpreterSlack) { /* * Enable original behavior of Store(), allowing any and all * objects as the source operand. The ACPI spec does not * allow this, however. */ break; } if (TargetOp == AML_DEBUG_OP) { /* Allow store of any object to the Debug object */ break; } ACPI_ERROR ((AE_INFO, "Needed Integer/Buffer/String/Package/Ref/Ddb], found [%s] %p", AcpiUtGetObjectTypeName (ObjDesc), ObjDesc)); return_ACPI_STATUS (AE_AML_OPERAND_TYPE); } goto NextOperand; default: /* Unknown type */ ACPI_ERROR ((AE_INFO, "Internal - Unknown ARGI (required operand) type 0x%X", ThisArgType)); return_ACPI_STATUS (AE_BAD_PARAMETER); } /* * Make sure that the original object was resolved to the * required object type (Simple cases only). */ Status = AcpiExCheckObjectType (TypeNeeded, (*StackPtr)->Common.Type, *StackPtr); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } NextOperand: /* * If more operands needed, decrement StackPtr to point * to next operand on stack */ if (GET_CURRENT_ARG_TYPE (ArgTypes)) { StackPtr--; } } ACPI_DUMP_OPERANDS (WalkState->Operands, AcpiPsGetOpcodeName (Opcode), WalkState->NumOperands); return_ACPI_STATUS (Status); } src/acpica/source/components/executer/exstore.c000066400000000000000000000546231231470457100222510ustar00rootroot00000000000000/****************************************************************************** * * Module Name: exstore - AML Interpreter object store support * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #define __EXSTORE_C__ #include "acpi.h" #include "accommon.h" #include "acdispat.h" #include "acinterp.h" #include "amlcode.h" #include "acnamesp.h" #define _COMPONENT ACPI_EXECUTER ACPI_MODULE_NAME ("exstore") /* Local prototypes */ static ACPI_STATUS AcpiExStoreObjectToIndex ( ACPI_OPERAND_OBJECT *ValDesc, ACPI_OPERAND_OBJECT *DestDesc, ACPI_WALK_STATE *WalkState); static ACPI_STATUS AcpiExStoreDirectToNode ( ACPI_OPERAND_OBJECT *SourceDesc, ACPI_NAMESPACE_NODE *Node, ACPI_WALK_STATE *WalkState); /******************************************************************************* * * FUNCTION: AcpiExStore * * PARAMETERS: *SourceDesc - Value to be stored * *DestDesc - Where to store it. Must be an NS node * or ACPI_OPERAND_OBJECT of type * Reference; * WalkState - Current walk state * * RETURN: Status * * DESCRIPTION: Store the value described by SourceDesc into the location * described by DestDesc. Called by various interpreter * functions to store the result of an operation into * the destination operand -- not just simply the actual "Store" * ASL operator. * ******************************************************************************/ ACPI_STATUS AcpiExStore ( ACPI_OPERAND_OBJECT *SourceDesc, ACPI_OPERAND_OBJECT *DestDesc, ACPI_WALK_STATE *WalkState) { ACPI_STATUS Status = AE_OK; ACPI_OPERAND_OBJECT *RefDesc = DestDesc; ACPI_FUNCTION_TRACE_PTR (ExStore, DestDesc); /* Validate parameters */ if (!SourceDesc || !DestDesc) { ACPI_ERROR ((AE_INFO, "Null parameter")); return_ACPI_STATUS (AE_AML_NO_OPERAND); } /* DestDesc can be either a namespace node or an ACPI object */ if (ACPI_GET_DESCRIPTOR_TYPE (DestDesc) == ACPI_DESC_TYPE_NAMED) { /* * Dest is a namespace node, * Storing an object into a Named node. */ Status = AcpiExStoreObjectToNode (SourceDesc, (ACPI_NAMESPACE_NODE *) DestDesc, WalkState, ACPI_IMPLICIT_CONVERSION); return_ACPI_STATUS (Status); } /* Destination object must be a Reference or a Constant object */ switch (DestDesc->Common.Type) { case ACPI_TYPE_LOCAL_REFERENCE: break; case ACPI_TYPE_INTEGER: /* Allow stores to Constants -- a Noop as per ACPI spec */ if (DestDesc->Common.Flags & AOPOBJ_AML_CONSTANT) { return_ACPI_STATUS (AE_OK); } /*lint -fallthrough */ default: /* Destination is not a Reference object */ ACPI_ERROR ((AE_INFO, "Target is not a Reference or Constant object - %s [%p]", AcpiUtGetObjectTypeName (DestDesc), DestDesc)); return_ACPI_STATUS (AE_AML_OPERAND_TYPE); } /* * Examine the Reference class. These cases are handled: * * 1) Store to Name (Change the object associated with a name) * 2) Store to an indexed area of a Buffer or Package * 3) Store to a Method Local or Arg * 4) Store to the debug object */ switch (RefDesc->Reference.Class) { case ACPI_REFCLASS_REFOF: /* Storing an object into a Name "container" */ Status = AcpiExStoreObjectToNode (SourceDesc, RefDesc->Reference.Object, WalkState, ACPI_IMPLICIT_CONVERSION); break; case ACPI_REFCLASS_INDEX: /* Storing to an Index (pointer into a packager or buffer) */ Status = AcpiExStoreObjectToIndex (SourceDesc, RefDesc, WalkState); break; case ACPI_REFCLASS_LOCAL: case ACPI_REFCLASS_ARG: /* Store to a method local/arg */ Status = AcpiDsStoreObjectToLocal (RefDesc->Reference.Class, RefDesc->Reference.Value, SourceDesc, WalkState); break; case ACPI_REFCLASS_DEBUG: /* * Storing to the Debug object causes the value stored to be * displayed and otherwise has no effect -- see ACPI Specification */ ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "**** Write to Debug Object: Object %p %s ****:\n\n", SourceDesc, AcpiUtGetObjectTypeName (SourceDesc))); ACPI_DEBUG_OBJECT (SourceDesc, 0, 0); break; default: ACPI_ERROR ((AE_INFO, "Unknown Reference Class 0x%2.2X", RefDesc->Reference.Class)); ACPI_DUMP_ENTRY (RefDesc, ACPI_LV_INFO); Status = AE_AML_INTERNAL; break; } return_ACPI_STATUS (Status); } /******************************************************************************* * * FUNCTION: AcpiExStoreObjectToIndex * * PARAMETERS: *SourceDesc - Value to be stored * *DestDesc - Named object to receive the value * WalkState - Current walk state * * RETURN: Status * * DESCRIPTION: Store the object to indexed Buffer or Package element * ******************************************************************************/ static ACPI_STATUS AcpiExStoreObjectToIndex ( ACPI_OPERAND_OBJECT *SourceDesc, ACPI_OPERAND_OBJECT *IndexDesc, ACPI_WALK_STATE *WalkState) { ACPI_STATUS Status = AE_OK; ACPI_OPERAND_OBJECT *ObjDesc; ACPI_OPERAND_OBJECT *NewDesc; UINT8 Value = 0; UINT32 i; ACPI_FUNCTION_TRACE (ExStoreObjectToIndex); /* * Destination must be a reference pointer, and * must point to either a buffer or a package */ switch (IndexDesc->Reference.TargetType) { case ACPI_TYPE_PACKAGE: /* * Storing to a package element. Copy the object and replace * any existing object with the new object. No implicit * conversion is performed. * * The object at *(IndexDesc->Reference.Where) is the * element within the package that is to be modified. * The parent package object is at IndexDesc->Reference.Object */ ObjDesc = *(IndexDesc->Reference.Where); if (SourceDesc->Common.Type == ACPI_TYPE_LOCAL_REFERENCE && SourceDesc->Reference.Class == ACPI_REFCLASS_TABLE) { /* This is a DDBHandle, just add a reference to it */ AcpiUtAddReference (SourceDesc); NewDesc = SourceDesc; } else { /* Normal object, copy it */ Status = AcpiUtCopyIobjectToIobject (SourceDesc, &NewDesc, WalkState); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } } if (ObjDesc) { /* Decrement reference count by the ref count of the parent package */ for (i = 0; i < ((ACPI_OPERAND_OBJECT *) IndexDesc->Reference.Object)->Common.ReferenceCount; i++) { AcpiUtRemoveReference (ObjDesc); } } *(IndexDesc->Reference.Where) = NewDesc; /* Increment ref count by the ref count of the parent package-1 */ for (i = 1; i < ((ACPI_OPERAND_OBJECT *) IndexDesc->Reference.Object)->Common.ReferenceCount; i++) { AcpiUtAddReference (NewDesc); } break; case ACPI_TYPE_BUFFER_FIELD: /* * Store into a Buffer or String (not actually a real BufferField) * at a location defined by an Index. * * The first 8-bit element of the source object is written to the * 8-bit Buffer location defined by the Index destination object, * according to the ACPI 2.0 specification. */ /* * Make sure the target is a Buffer or String. An error should * not happen here, since the ReferenceObject was constructed * by the INDEX_OP code. */ ObjDesc = IndexDesc->Reference.Object; if ((ObjDesc->Common.Type != ACPI_TYPE_BUFFER) && (ObjDesc->Common.Type != ACPI_TYPE_STRING)) { return_ACPI_STATUS (AE_AML_OPERAND_TYPE); } /* * The assignment of the individual elements will be slightly * different for each source type. */ switch (SourceDesc->Common.Type) { case ACPI_TYPE_INTEGER: /* Use the least-significant byte of the integer */ Value = (UINT8) (SourceDesc->Integer.Value); break; case ACPI_TYPE_BUFFER: case ACPI_TYPE_STRING: /* Note: Takes advantage of common string/buffer fields */ Value = SourceDesc->Buffer.Pointer[0]; break; default: /* All other types are invalid */ ACPI_ERROR ((AE_INFO, "Source must be Integer/Buffer/String type, not %s", AcpiUtGetObjectTypeName (SourceDesc))); return_ACPI_STATUS (AE_AML_OPERAND_TYPE); } /* Store the source value into the target buffer byte */ ObjDesc->Buffer.Pointer[IndexDesc->Reference.Value] = Value; break; default: ACPI_ERROR ((AE_INFO, "Target is not a Package or BufferField")); Status = AE_AML_OPERAND_TYPE; break; } return_ACPI_STATUS (Status); } /******************************************************************************* * * FUNCTION: AcpiExStoreObjectToNode * * PARAMETERS: SourceDesc - Value to be stored * Node - Named object to receive the value * WalkState - Current walk state * ImplicitConversion - Perform implicit conversion (yes/no) * * RETURN: Status * * DESCRIPTION: Store the object to the named object. * * The Assignment of an object to a named object is handled here * The value passed in will replace the current value (if any) * with the input value. * * When storing into an object the data is converted to the * target object type then stored in the object. This means * that the target object type (for an initialized target) will * not be changed by a store operation. A CopyObject can change * the target type, however. * * The ImplicitConversion flag is set to NO/FALSE only when * storing to an ArgX -- as per the rules of the ACPI spec. * * Assumes parameters are already validated. * ******************************************************************************/ ACPI_STATUS AcpiExStoreObjectToNode ( ACPI_OPERAND_OBJECT *SourceDesc, ACPI_NAMESPACE_NODE *Node, ACPI_WALK_STATE *WalkState, UINT8 ImplicitConversion) { ACPI_STATUS Status = AE_OK; ACPI_OPERAND_OBJECT *TargetDesc; ACPI_OPERAND_OBJECT *NewDesc; ACPI_OBJECT_TYPE TargetType; ACPI_FUNCTION_TRACE_PTR (ExStoreObjectToNode, SourceDesc); /* Get current type of the node, and object attached to Node */ TargetType = AcpiNsGetType (Node); TargetDesc = AcpiNsGetAttachedObject (Node); ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Storing %p (%s) to node %p (%s)\n", SourceDesc, AcpiUtGetObjectTypeName (SourceDesc), Node, AcpiUtGetTypeName (TargetType))); /* * Resolve the source object to an actual value * (If it is a reference object) */ Status = AcpiExResolveObject (&SourceDesc, TargetType, WalkState); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } /* Do the actual store operation */ switch (TargetType) { case ACPI_TYPE_INTEGER: case ACPI_TYPE_STRING: case ACPI_TYPE_BUFFER: /* * The simple data types all support implicit source operand * conversion before the store. */ if ((WalkState->Opcode == AML_COPY_OP) || !ImplicitConversion) { /* * However, CopyObject and Stores to ArgX do not perform * an implicit conversion, as per the ACPI specification. * A direct store is performed instead. */ Status = AcpiExStoreDirectToNode (SourceDesc, Node, WalkState); break; } /* Store with implicit source operand conversion support */ Status = AcpiExStoreObjectToObject (SourceDesc, TargetDesc, &NewDesc, WalkState); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } if (NewDesc != TargetDesc) { /* * Store the new NewDesc as the new value of the Name, and set * the Name's type to that of the value being stored in it. * SourceDesc reference count is incremented by AttachObject. * * Note: This may change the type of the node if an explicit * store has been performed such that the node/object type * has been changed. */ Status = AcpiNsAttachObject (Node, NewDesc, NewDesc->Common.Type); ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Store %s into %s via Convert/Attach\n", AcpiUtGetObjectTypeName (SourceDesc), AcpiUtGetObjectTypeName (NewDesc))); } break; case ACPI_TYPE_BUFFER_FIELD: case ACPI_TYPE_LOCAL_REGION_FIELD: case ACPI_TYPE_LOCAL_BANK_FIELD: case ACPI_TYPE_LOCAL_INDEX_FIELD: /* * For all fields, always write the source data to the target * field. Any required implicit source operand conversion is * performed in the function below as necessary. Note, field * objects must retain their original type permanently. */ Status = AcpiExWriteDataToField (SourceDesc, TargetDesc, &WalkState->ResultObj); break; default: /* * No conversions for all other types. Directly store a copy of * the source object. This is the ACPI spec-defined behavior for * the CopyObject operator. * * NOTE: For the Store operator, this is a departure from the * ACPI spec, which states "If conversion is impossible, abort * the running control method". Instead, this code implements * "If conversion is impossible, treat the Store operation as * a CopyObject". */ Status = AcpiExStoreDirectToNode (SourceDesc, Node, WalkState); break; } return_ACPI_STATUS (Status); } /******************************************************************************* * * FUNCTION: AcpiExStoreDirectToNode * * PARAMETERS: SourceDesc - Value to be stored * Node - Named object to receive the value * WalkState - Current walk state * * RETURN: Status * * DESCRIPTION: "Store" an object directly to a node. This involves a copy * and an attach. * ******************************************************************************/ static ACPI_STATUS AcpiExStoreDirectToNode ( ACPI_OPERAND_OBJECT *SourceDesc, ACPI_NAMESPACE_NODE *Node, ACPI_WALK_STATE *WalkState) { ACPI_STATUS Status; ACPI_OPERAND_OBJECT *NewDesc; ACPI_FUNCTION_TRACE (ExStoreDirectToNode); ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Storing [%s] (%p) directly into node [%s] (%p)" " with no implicit conversion\n", AcpiUtGetObjectTypeName (SourceDesc), SourceDesc, AcpiUtGetTypeName (Node->Type), Node)); /* Copy the source object to a new object */ Status = AcpiUtCopyIobjectToIobject (SourceDesc, &NewDesc, WalkState); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } /* Attach the new object to the node */ Status = AcpiNsAttachObject (Node, NewDesc, NewDesc->Common.Type); AcpiUtRemoveReference (NewDesc); return_ACPI_STATUS (Status); } src/acpica/source/components/executer/exstoren.c000066400000000000000000000342761231470457100224310ustar00rootroot00000000000000/****************************************************************************** * * Module Name: exstoren - AML Interpreter object store support, * Store to Node (namespace object) * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #define __EXSTOREN_C__ #include "acpi.h" #include "accommon.h" #include "acinterp.h" #include "amlcode.h" #define _COMPONENT ACPI_EXECUTER ACPI_MODULE_NAME ("exstoren") /******************************************************************************* * * FUNCTION: AcpiExResolveObject * * PARAMETERS: SourceDescPtr - Pointer to the source object * TargetType - Current type of the target * WalkState - Current walk state * * RETURN: Status, resolved object in SourceDescPtr. * * DESCRIPTION: Resolve an object. If the object is a reference, dereference * it and return the actual object in the SourceDescPtr. * ******************************************************************************/ ACPI_STATUS AcpiExResolveObject ( ACPI_OPERAND_OBJECT **SourceDescPtr, ACPI_OBJECT_TYPE TargetType, ACPI_WALK_STATE *WalkState) { ACPI_OPERAND_OBJECT *SourceDesc = *SourceDescPtr; ACPI_STATUS Status = AE_OK; ACPI_FUNCTION_TRACE (ExResolveObject); /* Ensure we have a Target that can be stored to */ switch (TargetType) { case ACPI_TYPE_BUFFER_FIELD: case ACPI_TYPE_LOCAL_REGION_FIELD: case ACPI_TYPE_LOCAL_BANK_FIELD: case ACPI_TYPE_LOCAL_INDEX_FIELD: /* * These cases all require only Integers or values that * can be converted to Integers (Strings or Buffers) */ case ACPI_TYPE_INTEGER: case ACPI_TYPE_STRING: case ACPI_TYPE_BUFFER: /* * Stores into a Field/Region or into a Integer/Buffer/String * are all essentially the same. This case handles the * "interchangeable" types Integer, String, and Buffer. */ if (SourceDesc->Common.Type == ACPI_TYPE_LOCAL_REFERENCE) { /* Resolve a reference object first */ Status = AcpiExResolveToValue (SourceDescPtr, WalkState); if (ACPI_FAILURE (Status)) { break; } } /* For CopyObject, no further validation necessary */ if (WalkState->Opcode == AML_COPY_OP) { break; } /* Must have a Integer, Buffer, or String */ if ((SourceDesc->Common.Type != ACPI_TYPE_INTEGER) && (SourceDesc->Common.Type != ACPI_TYPE_BUFFER) && (SourceDesc->Common.Type != ACPI_TYPE_STRING) && !((SourceDesc->Common.Type == ACPI_TYPE_LOCAL_REFERENCE) && (SourceDesc->Reference.Class== ACPI_REFCLASS_TABLE))) { /* Conversion successful but still not a valid type */ ACPI_ERROR ((AE_INFO, "Cannot assign type %s to %s (must be type Int/Str/Buf)", AcpiUtGetObjectTypeName (SourceDesc), AcpiUtGetTypeName (TargetType))); Status = AE_AML_OPERAND_TYPE; } break; case ACPI_TYPE_LOCAL_ALIAS: case ACPI_TYPE_LOCAL_METHOD_ALIAS: /* * All aliases should have been resolved earlier, during the * operand resolution phase. */ ACPI_ERROR ((AE_INFO, "Store into an unresolved Alias object")); Status = AE_AML_INTERNAL; break; case ACPI_TYPE_PACKAGE: default: /* * All other types than Alias and the various Fields come here, * including the untyped case - ACPI_TYPE_ANY. */ break; } return_ACPI_STATUS (Status); } /******************************************************************************* * * FUNCTION: AcpiExStoreObjectToObject * * PARAMETERS: SourceDesc - Object to store * DestDesc - Object to receive a copy of the source * NewDesc - New object if DestDesc is obsoleted * WalkState - Current walk state * * RETURN: Status * * DESCRIPTION: "Store" an object to another object. This may include * converting the source type to the target type (implicit * conversion), and a copy of the value of the source to * the target. * * The Assignment of an object to another (not named) object * is handled here. * The Source passed in will replace the current value (if any) * with the input value. * * When storing into an object the data is converted to the * target object type then stored in the object. This means * that the target object type (for an initialized target) will * not be changed by a store operation. * * This module allows destination types of Number, String, * Buffer, and Package. * * Assumes parameters are already validated. NOTE: SourceDesc * resolution (from a reference object) must be performed by * the caller if necessary. * ******************************************************************************/ ACPI_STATUS AcpiExStoreObjectToObject ( ACPI_OPERAND_OBJECT *SourceDesc, ACPI_OPERAND_OBJECT *DestDesc, ACPI_OPERAND_OBJECT **NewDesc, ACPI_WALK_STATE *WalkState) { ACPI_OPERAND_OBJECT *ActualSrcDesc; ACPI_STATUS Status = AE_OK; ACPI_FUNCTION_TRACE_PTR (ExStoreObjectToObject, SourceDesc); ActualSrcDesc = SourceDesc; if (!DestDesc) { /* * There is no destination object (An uninitialized node or * package element), so we can simply copy the source object * creating a new destination object */ Status = AcpiUtCopyIobjectToIobject (ActualSrcDesc, NewDesc, WalkState); return_ACPI_STATUS (Status); } if (SourceDesc->Common.Type != DestDesc->Common.Type) { /* * The source type does not match the type of the destination. * Perform the "implicit conversion" of the source to the current type * of the target as per the ACPI specification. * * If no conversion performed, ActualSrcDesc = SourceDesc. * Otherwise, ActualSrcDesc is a temporary object to hold the * converted object. */ Status = AcpiExConvertToTargetType (DestDesc->Common.Type, SourceDesc, &ActualSrcDesc, WalkState); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } if (SourceDesc == ActualSrcDesc) { /* * No conversion was performed. Return the SourceDesc as the * new object. */ *NewDesc = SourceDesc; return_ACPI_STATUS (AE_OK); } } /* * We now have two objects of identical types, and we can perform a * copy of the *value* of the source object. */ switch (DestDesc->Common.Type) { case ACPI_TYPE_INTEGER: DestDesc->Integer.Value = ActualSrcDesc->Integer.Value; /* Truncate value if we are executing from a 32-bit ACPI table */ (void) AcpiExTruncateFor32bitTable (DestDesc); break; case ACPI_TYPE_STRING: Status = AcpiExStoreStringToString (ActualSrcDesc, DestDesc); break; case ACPI_TYPE_BUFFER: Status = AcpiExStoreBufferToBuffer (ActualSrcDesc, DestDesc); break; case ACPI_TYPE_PACKAGE: Status = AcpiUtCopyIobjectToIobject (ActualSrcDesc, &DestDesc, WalkState); break; default: /* * All other types come here. */ ACPI_WARNING ((AE_INFO, "Store into type %s not implemented", AcpiUtGetObjectTypeName (DestDesc))); Status = AE_NOT_IMPLEMENTED; break; } if (ActualSrcDesc != SourceDesc) { /* Delete the intermediate (temporary) source object */ AcpiUtRemoveReference (ActualSrcDesc); } *NewDesc = DestDesc; return_ACPI_STATUS (Status); } src/acpica/source/components/executer/exstorob.c000066400000000000000000000274721231470457100224270ustar00rootroot00000000000000/****************************************************************************** * * Module Name: exstorob - AML Interpreter object store support, store to object * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #define __EXSTOROB_C__ #include "acpi.h" #include "accommon.h" #include "acinterp.h" #define _COMPONENT ACPI_EXECUTER ACPI_MODULE_NAME ("exstorob") /******************************************************************************* * * FUNCTION: AcpiExStoreBufferToBuffer * * PARAMETERS: SourceDesc - Source object to copy * TargetDesc - Destination object of the copy * * RETURN: Status * * DESCRIPTION: Copy a buffer object to another buffer object. * ******************************************************************************/ ACPI_STATUS AcpiExStoreBufferToBuffer ( ACPI_OPERAND_OBJECT *SourceDesc, ACPI_OPERAND_OBJECT *TargetDesc) { UINT32 Length; UINT8 *Buffer; ACPI_FUNCTION_TRACE_PTR (ExStoreBufferToBuffer, SourceDesc); /* If Source and Target are the same, just return */ if (SourceDesc == TargetDesc) { return_ACPI_STATUS (AE_OK); } /* We know that SourceDesc is a buffer by now */ Buffer = ACPI_CAST_PTR (UINT8, SourceDesc->Buffer.Pointer); Length = SourceDesc->Buffer.Length; /* * If target is a buffer of length zero or is a static buffer, * allocate a new buffer of the proper length */ if ((TargetDesc->Buffer.Length == 0) || (TargetDesc->Common.Flags & AOPOBJ_STATIC_POINTER)) { TargetDesc->Buffer.Pointer = ACPI_ALLOCATE (Length); if (!TargetDesc->Buffer.Pointer) { return_ACPI_STATUS (AE_NO_MEMORY); } TargetDesc->Buffer.Length = Length; } /* Copy source buffer to target buffer */ if (Length <= TargetDesc->Buffer.Length) { /* Clear existing buffer and copy in the new one */ ACPI_MEMSET (TargetDesc->Buffer.Pointer, 0, TargetDesc->Buffer.Length); ACPI_MEMCPY (TargetDesc->Buffer.Pointer, Buffer, Length); #ifdef ACPI_OBSOLETE_BEHAVIOR /* * NOTE: ACPI versions up to 3.0 specified that the buffer must be * truncated if the string is smaller than the buffer. However, "other" * implementations of ACPI never did this and thus became the defacto * standard. ACPI 3.0A changes this behavior such that the buffer * is no longer truncated. */ /* * OBSOLETE BEHAVIOR: * If the original source was a string, we must truncate the buffer, * according to the ACPI spec. Integer-to-Buffer and Buffer-to-Buffer * copy must not truncate the original buffer. */ if (OriginalSrcType == ACPI_TYPE_STRING) { /* Set the new length of the target */ TargetDesc->Buffer.Length = Length; } #endif } else { /* Truncate the source, copy only what will fit */ ACPI_MEMCPY (TargetDesc->Buffer.Pointer, Buffer, TargetDesc->Buffer.Length); ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Truncating source buffer from %X to %X\n", Length, TargetDesc->Buffer.Length)); } /* Copy flags */ TargetDesc->Buffer.Flags = SourceDesc->Buffer.Flags; TargetDesc->Common.Flags &= ~AOPOBJ_STATIC_POINTER; return_ACPI_STATUS (AE_OK); } /******************************************************************************* * * FUNCTION: AcpiExStoreStringToString * * PARAMETERS: SourceDesc - Source object to copy * TargetDesc - Destination object of the copy * * RETURN: Status * * DESCRIPTION: Copy a String object to another String object * ******************************************************************************/ ACPI_STATUS AcpiExStoreStringToString ( ACPI_OPERAND_OBJECT *SourceDesc, ACPI_OPERAND_OBJECT *TargetDesc) { UINT32 Length; UINT8 *Buffer; ACPI_FUNCTION_TRACE_PTR (ExStoreStringToString, SourceDesc); /* If Source and Target are the same, just return */ if (SourceDesc == TargetDesc) { return_ACPI_STATUS (AE_OK); } /* We know that SourceDesc is a string by now */ Buffer = ACPI_CAST_PTR (UINT8, SourceDesc->String.Pointer); Length = SourceDesc->String.Length; /* * Replace existing string value if it will fit and the string * pointer is not a static pointer (part of an ACPI table) */ if ((Length < TargetDesc->String.Length) && (!(TargetDesc->Common.Flags & AOPOBJ_STATIC_POINTER))) { /* * String will fit in existing non-static buffer. * Clear old string and copy in the new one */ ACPI_MEMSET (TargetDesc->String.Pointer, 0, (ACPI_SIZE) TargetDesc->String.Length + 1); ACPI_MEMCPY (TargetDesc->String.Pointer, Buffer, Length); } else { /* * Free the current buffer, then allocate a new buffer * large enough to hold the value */ if (TargetDesc->String.Pointer && (!(TargetDesc->Common.Flags & AOPOBJ_STATIC_POINTER))) { /* Only free if not a pointer into the DSDT */ ACPI_FREE (TargetDesc->String.Pointer); } TargetDesc->String.Pointer = ACPI_ALLOCATE_ZEROED ( (ACPI_SIZE) Length + 1); if (!TargetDesc->String.Pointer) { return_ACPI_STATUS (AE_NO_MEMORY); } TargetDesc->Common.Flags &= ~AOPOBJ_STATIC_POINTER; ACPI_MEMCPY (TargetDesc->String.Pointer, Buffer, Length); } /* Set the new target length */ TargetDesc->String.Length = Length; return_ACPI_STATUS (AE_OK); } src/acpica/source/components/executer/exsystem.c000066400000000000000000000334371231470457100224410ustar00rootroot00000000000000/****************************************************************************** * * Module Name: exsystem - Interface to OS services * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #define __EXSYSTEM_C__ #include "acpi.h" #include "accommon.h" #include "acinterp.h" #define _COMPONENT ACPI_EXECUTER ACPI_MODULE_NAME ("exsystem") /******************************************************************************* * * FUNCTION: AcpiExSystemWaitSemaphore * * PARAMETERS: Semaphore - Semaphore to wait on * Timeout - Max time to wait * * RETURN: Status * * DESCRIPTION: Implements a semaphore wait with a check to see if the * semaphore is available immediately. If it is not, the * interpreter is released before waiting. * ******************************************************************************/ ACPI_STATUS AcpiExSystemWaitSemaphore ( ACPI_SEMAPHORE Semaphore, UINT16 Timeout) { ACPI_STATUS Status; ACPI_FUNCTION_TRACE (ExSystemWaitSemaphore); Status = AcpiOsWaitSemaphore (Semaphore, 1, ACPI_DO_NOT_WAIT); if (ACPI_SUCCESS (Status)) { return_ACPI_STATUS (Status); } if (Status == AE_TIME) { /* We must wait, so unlock the interpreter */ AcpiExExitInterpreter (); Status = AcpiOsWaitSemaphore (Semaphore, 1, Timeout); ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "*** Thread awake after blocking, %s\n", AcpiFormatException (Status))); /* Reacquire the interpreter */ AcpiExEnterInterpreter (); } return_ACPI_STATUS (Status); } /******************************************************************************* * * FUNCTION: AcpiExSystemWaitMutex * * PARAMETERS: Mutex - Mutex to wait on * Timeout - Max time to wait * * RETURN: Status * * DESCRIPTION: Implements a mutex wait with a check to see if the * mutex is available immediately. If it is not, the * interpreter is released before waiting. * ******************************************************************************/ ACPI_STATUS AcpiExSystemWaitMutex ( ACPI_MUTEX Mutex, UINT16 Timeout) { ACPI_STATUS Status; ACPI_FUNCTION_TRACE (ExSystemWaitMutex); Status = AcpiOsAcquireMutex (Mutex, ACPI_DO_NOT_WAIT); if (ACPI_SUCCESS (Status)) { return_ACPI_STATUS (Status); } if (Status == AE_TIME) { /* We must wait, so unlock the interpreter */ AcpiExExitInterpreter (); Status = AcpiOsAcquireMutex (Mutex, Timeout); ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "*** Thread awake after blocking, %s\n", AcpiFormatException (Status))); /* Reacquire the interpreter */ AcpiExEnterInterpreter (); } return_ACPI_STATUS (Status); } /******************************************************************************* * * FUNCTION: AcpiExSystemDoStall * * PARAMETERS: HowLong - The amount of time to stall, * in microseconds * * RETURN: Status * * DESCRIPTION: Suspend running thread for specified amount of time. * Note: ACPI specification requires that Stall() does not * relinquish the processor, and delays longer than 100 usec * should use Sleep() instead. We allow stalls up to 255 usec * for compatibility with other interpreters and existing BIOSs. * ******************************************************************************/ ACPI_STATUS AcpiExSystemDoStall ( UINT32 HowLong) { ACPI_STATUS Status = AE_OK; ACPI_FUNCTION_ENTRY (); if (HowLong > 255) /* 255 microseconds */ { /* * Longer than 255 usec, this is an error * * (ACPI specifies 100 usec as max, but this gives some slack in * order to support existing BIOSs) */ ACPI_ERROR ((AE_INFO, "Time parameter is too large (%u)", HowLong)); Status = AE_AML_OPERAND_VALUE; } else { AcpiOsStall (HowLong); } return (Status); } /******************************************************************************* * * FUNCTION: AcpiExSystemDoSleep * * PARAMETERS: HowLong - The amount of time to sleep, * in milliseconds * * RETURN: None * * DESCRIPTION: Sleep the running thread for specified amount of time. * ******************************************************************************/ ACPI_STATUS AcpiExSystemDoSleep ( UINT64 HowLong) { ACPI_FUNCTION_ENTRY (); /* Since this thread will sleep, we must release the interpreter */ AcpiExExitInterpreter (); /* * For compatibility with other ACPI implementations and to prevent * accidental deep sleeps, limit the sleep time to something reasonable. */ if (HowLong > ACPI_MAX_SLEEP) { HowLong = ACPI_MAX_SLEEP; } AcpiOsSleep (HowLong); /* And now we must get the interpreter again */ AcpiExEnterInterpreter (); return (AE_OK); } /******************************************************************************* * * FUNCTION: AcpiExSystemSignalEvent * * PARAMETERS: ObjDesc - The object descriptor for this op * * RETURN: Status * * DESCRIPTION: Provides an access point to perform synchronization operations * within the AML. * ******************************************************************************/ ACPI_STATUS AcpiExSystemSignalEvent ( ACPI_OPERAND_OBJECT *ObjDesc) { ACPI_STATUS Status = AE_OK; ACPI_FUNCTION_TRACE (ExSystemSignalEvent); if (ObjDesc) { Status = AcpiOsSignalSemaphore (ObjDesc->Event.OsSemaphore, 1); } return_ACPI_STATUS (Status); } /******************************************************************************* * * FUNCTION: AcpiExSystemWaitEvent * * PARAMETERS: TimeDesc - The 'time to delay' object descriptor * ObjDesc - The object descriptor for this op * * RETURN: Status * * DESCRIPTION: Provides an access point to perform synchronization operations * within the AML. This operation is a request to wait for an * event. * ******************************************************************************/ ACPI_STATUS AcpiExSystemWaitEvent ( ACPI_OPERAND_OBJECT *TimeDesc, ACPI_OPERAND_OBJECT *ObjDesc) { ACPI_STATUS Status = AE_OK; ACPI_FUNCTION_TRACE (ExSystemWaitEvent); if (ObjDesc) { Status = AcpiExSystemWaitSemaphore (ObjDesc->Event.OsSemaphore, (UINT16) TimeDesc->Integer.Value); } return_ACPI_STATUS (Status); } /******************************************************************************* * * FUNCTION: AcpiExSystemResetEvent * * PARAMETERS: ObjDesc - The object descriptor for this op * * RETURN: Status * * DESCRIPTION: Reset an event to a known state. * ******************************************************************************/ ACPI_STATUS AcpiExSystemResetEvent ( ACPI_OPERAND_OBJECT *ObjDesc) { ACPI_STATUS Status = AE_OK; ACPI_SEMAPHORE TempSemaphore; ACPI_FUNCTION_ENTRY (); /* * We are going to simply delete the existing semaphore and * create a new one! */ Status = AcpiOsCreateSemaphore (ACPI_NO_UNIT_LIMIT, 0, &TempSemaphore); if (ACPI_SUCCESS (Status)) { (void) AcpiOsDeleteSemaphore (ObjDesc->Event.OsSemaphore); ObjDesc->Event.OsSemaphore = TempSemaphore; } return (Status); } src/acpica/source/components/executer/exutils.c000066400000000000000000000425271231470457100222550ustar00rootroot00000000000000/****************************************************************************** * * Module Name: exutils - interpreter/scanner utilities * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #define __EXUTILS_C__ /* * DEFINE_AML_GLOBALS is tested in amlcode.h * to determine whether certain global names should be "defined" or only * "declared" in the current compilation. This enhances maintainability * by enabling a single header file to embody all knowledge of the names * in question. * * Exactly one module of any executable should #define DEFINE_GLOBALS * before #including the header files which use this convention. The * names in question will be defined and initialized in that module, * and declared as extern in all other modules which #include those * header files. */ #define DEFINE_AML_GLOBALS #include "acpi.h" #include "accommon.h" #include "acinterp.h" #include "amlcode.h" #define _COMPONENT ACPI_EXECUTER ACPI_MODULE_NAME ("exutils") /* Local prototypes */ static UINT32 AcpiExDigitsNeeded ( UINT64 Value, UINT32 Base); #ifndef ACPI_NO_METHOD_EXECUTION /******************************************************************************* * * FUNCTION: AcpiExEnterInterpreter * * PARAMETERS: None * * RETURN: None * * DESCRIPTION: Enter the interpreter execution region. Failure to enter * the interpreter region is a fatal system error. Used in * conjunction with ExitInterpreter. * ******************************************************************************/ void AcpiExEnterInterpreter ( void) { ACPI_STATUS Status; ACPI_FUNCTION_TRACE (ExEnterInterpreter); Status = AcpiUtAcquireMutex (ACPI_MTX_INTERPRETER); if (ACPI_FAILURE (Status)) { ACPI_ERROR ((AE_INFO, "Could not acquire AML Interpreter mutex")); } return_VOID; } /******************************************************************************* * * FUNCTION: AcpiExExitInterpreter * * PARAMETERS: None * * RETURN: None * * DESCRIPTION: Exit the interpreter execution region. This is the top level * routine used to exit the interpreter when all processing has * been completed, or when the method blocks. * * Cases where the interpreter is unlocked internally: * 1) Method will be blocked on a Sleep() AML opcode * 2) Method will be blocked on an Acquire() AML opcode * 3) Method will be blocked on a Wait() AML opcode * 4) Method will be blocked to acquire the global lock * 5) Method will be blocked waiting to execute a serialized control * method that is currently executing * 6) About to invoke a user-installed opregion handler * ******************************************************************************/ void AcpiExExitInterpreter ( void) { ACPI_STATUS Status; ACPI_FUNCTION_TRACE (ExExitInterpreter); Status = AcpiUtReleaseMutex (ACPI_MTX_INTERPRETER); if (ACPI_FAILURE (Status)) { ACPI_ERROR ((AE_INFO, "Could not release AML Interpreter mutex")); } return_VOID; } /******************************************************************************* * * FUNCTION: AcpiExTruncateFor32bitTable * * PARAMETERS: ObjDesc - Object to be truncated * * RETURN: TRUE if a truncation was performed, FALSE otherwise. * * DESCRIPTION: Truncate an ACPI Integer to 32 bits if the execution mode is * 32-bit, as determined by the revision of the DSDT. * ******************************************************************************/ BOOLEAN AcpiExTruncateFor32bitTable ( ACPI_OPERAND_OBJECT *ObjDesc) { ACPI_FUNCTION_ENTRY (); /* * Object must be a valid number and we must be executing * a control method. Object could be NS node for AML_INT_NAMEPATH_OP. */ if ((!ObjDesc) || (ACPI_GET_DESCRIPTOR_TYPE (ObjDesc) != ACPI_DESC_TYPE_OPERAND) || (ObjDesc->Common.Type != ACPI_TYPE_INTEGER)) { return (FALSE); } if ((AcpiGbl_IntegerByteWidth == 4) && (ObjDesc->Integer.Value > (UINT64) ACPI_UINT32_MAX)) { /* * We are executing in a 32-bit ACPI table. * Truncate the value to 32 bits by zeroing out the upper 32-bit field */ ObjDesc->Integer.Value &= (UINT64) ACPI_UINT32_MAX; return (TRUE); } return (FALSE); } /******************************************************************************* * * FUNCTION: AcpiExAcquireGlobalLock * * PARAMETERS: FieldFlags - Flags with Lock rule: * AlwaysLock or NeverLock * * RETURN: None * * DESCRIPTION: Obtain the ACPI hardware Global Lock, only if the field * flags specifiy that it is to be obtained before field access. * ******************************************************************************/ void AcpiExAcquireGlobalLock ( UINT32 FieldFlags) { ACPI_STATUS Status; ACPI_FUNCTION_TRACE (ExAcquireGlobalLock); /* Only use the lock if the AlwaysLock bit is set */ if (!(FieldFlags & AML_FIELD_LOCK_RULE_MASK)) { return_VOID; } /* Attempt to get the global lock, wait forever */ Status = AcpiExAcquireMutexObject (ACPI_WAIT_FOREVER, AcpiGbl_GlobalLockMutex, AcpiOsGetThreadId ()); if (ACPI_FAILURE (Status)) { ACPI_EXCEPTION ((AE_INFO, Status, "Could not acquire Global Lock")); } return_VOID; } /******************************************************************************* * * FUNCTION: AcpiExReleaseGlobalLock * * PARAMETERS: FieldFlags - Flags with Lock rule: * AlwaysLock or NeverLock * * RETURN: None * * DESCRIPTION: Release the ACPI hardware Global Lock * ******************************************************************************/ void AcpiExReleaseGlobalLock ( UINT32 FieldFlags) { ACPI_STATUS Status; ACPI_FUNCTION_TRACE (ExReleaseGlobalLock); /* Only use the lock if the AlwaysLock bit is set */ if (!(FieldFlags & AML_FIELD_LOCK_RULE_MASK)) { return_VOID; } /* Release the global lock */ Status = AcpiExReleaseMutexObject (AcpiGbl_GlobalLockMutex); if (ACPI_FAILURE (Status)) { /* Report the error, but there isn't much else we can do */ ACPI_EXCEPTION ((AE_INFO, Status, "Could not release Global Lock")); } return_VOID; } /******************************************************************************* * * FUNCTION: AcpiExDigitsNeeded * * PARAMETERS: Value - Value to be represented * Base - Base of representation * * RETURN: The number of digits. * * DESCRIPTION: Calculate the number of digits needed to represent the Value * in the given Base (Radix) * ******************************************************************************/ static UINT32 AcpiExDigitsNeeded ( UINT64 Value, UINT32 Base) { UINT32 NumDigits; UINT64 CurrentValue; ACPI_FUNCTION_TRACE (ExDigitsNeeded); /* UINT64 is unsigned, so we don't worry about a '-' prefix */ if (Value == 0) { return_UINT32 (1); } CurrentValue = Value; NumDigits = 0; /* Count the digits in the requested base */ while (CurrentValue) { (void) AcpiUtShortDivide (CurrentValue, Base, &CurrentValue, NULL); NumDigits++; } return_UINT32 (NumDigits); } /******************************************************************************* * * FUNCTION: AcpiExEisaIdToString * * PARAMETERS: CompressedId - EISAID to be converted * OutString - Where to put the converted string (8 bytes) * * RETURN: None * * DESCRIPTION: Convert a numeric EISAID to string representation. Return * buffer must be large enough to hold the string. The string * returned is always exactly of length ACPI_EISAID_STRING_SIZE * (includes null terminator). The EISAID is always 32 bits. * ******************************************************************************/ void AcpiExEisaIdToString ( char *OutString, UINT64 CompressedId) { UINT32 SwappedId; ACPI_FUNCTION_ENTRY (); /* The EISAID should be a 32-bit integer */ if (CompressedId > ACPI_UINT32_MAX) { ACPI_WARNING ((AE_INFO, "Expected EISAID is larger than 32 bits: 0x%8.8X%8.8X, truncating", ACPI_FORMAT_UINT64 (CompressedId))); } /* Swap ID to big-endian to get contiguous bits */ SwappedId = AcpiUtDwordByteSwap ((UINT32) CompressedId); /* First 3 bytes are uppercase letters. Next 4 bytes are hexadecimal */ OutString[0] = (char) (0x40 + (((unsigned long) SwappedId >> 26) & 0x1F)); OutString[1] = (char) (0x40 + ((SwappedId >> 21) & 0x1F)); OutString[2] = (char) (0x40 + ((SwappedId >> 16) & 0x1F)); OutString[3] = AcpiUtHexToAsciiChar ((UINT64) SwappedId, 12); OutString[4] = AcpiUtHexToAsciiChar ((UINT64) SwappedId, 8); OutString[5] = AcpiUtHexToAsciiChar ((UINT64) SwappedId, 4); OutString[6] = AcpiUtHexToAsciiChar ((UINT64) SwappedId, 0); OutString[7] = 0; } /******************************************************************************* * * FUNCTION: AcpiExIntegerToString * * PARAMETERS: OutString - Where to put the converted string. At least * 21 bytes are needed to hold the largest * possible 64-bit integer. * Value - Value to be converted * * RETURN: None, string * * DESCRIPTION: Convert a 64-bit integer to decimal string representation. * Assumes string buffer is large enough to hold the string. The * largest string is (ACPI_MAX64_DECIMAL_DIGITS + 1). * ******************************************************************************/ void AcpiExIntegerToString ( char *OutString, UINT64 Value) { UINT32 Count; UINT32 DigitsNeeded; UINT32 Remainder; ACPI_FUNCTION_ENTRY (); DigitsNeeded = AcpiExDigitsNeeded (Value, 10); OutString[DigitsNeeded] = 0; for (Count = DigitsNeeded; Count > 0; Count--) { (void) AcpiUtShortDivide (Value, 10, &Value, &Remainder); OutString[Count-1] = (char) ('0' + Remainder);\ } } /******************************************************************************* * * FUNCTION: AcpiIsValidSpaceId * * PARAMETERS: SpaceId - ID to be validated * * RETURN: TRUE if valid/supported ID. * * DESCRIPTION: Validate an operation region SpaceID. * ******************************************************************************/ BOOLEAN AcpiIsValidSpaceId ( UINT8 SpaceId) { if ((SpaceId >= ACPI_NUM_PREDEFINED_REGIONS) && (SpaceId < ACPI_USER_REGION_BEGIN) && (SpaceId != ACPI_ADR_SPACE_DATA_TABLE) && (SpaceId != ACPI_ADR_SPACE_FIXED_HARDWARE)) { return (FALSE); } return (TRUE); } #endif src/acpica/source/components/hardware/000077500000000000000000000000001231470457100203535ustar00rootroot00000000000000src/acpica/source/components/hardware/hwacpi.c000066400000000000000000000253011231470457100217730ustar00rootroot00000000000000/****************************************************************************** * * Module Name: hwacpi - ACPI Hardware Initialization/Mode Interface * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #define __HWACPI_C__ #include "acpi.h" #include "accommon.h" #define _COMPONENT ACPI_HARDWARE ACPI_MODULE_NAME ("hwacpi") #if (!ACPI_REDUCED_HARDWARE) /* Entire module */ /****************************************************************************** * * FUNCTION: AcpiHwSetMode * * PARAMETERS: Mode - SYS_MODE_ACPI or SYS_MODE_LEGACY * * RETURN: Status * * DESCRIPTION: Transitions the system into the requested mode. * ******************************************************************************/ ACPI_STATUS AcpiHwSetMode ( UINT32 Mode) { ACPI_STATUS Status; UINT32 Retry; ACPI_FUNCTION_TRACE (HwSetMode); /* If the Hardware Reduced flag is set, machine is always in acpi mode */ if (AcpiGbl_ReducedHardware) { return_ACPI_STATUS (AE_OK); } /* * ACPI 2.0 clarified that if SMI_CMD in FADT is zero, * system does not support mode transition. */ if (!AcpiGbl_FADT.SmiCommand) { ACPI_ERROR ((AE_INFO, "No SMI_CMD in FADT, mode transition failed")); return_ACPI_STATUS (AE_NO_HARDWARE_RESPONSE); } /* * ACPI 2.0 clarified the meaning of ACPI_ENABLE and ACPI_DISABLE * in FADT: If it is zero, enabling or disabling is not supported. * As old systems may have used zero for mode transition, * we make sure both the numbers are zero to determine these * transitions are not supported. */ if (!AcpiGbl_FADT.AcpiEnable && !AcpiGbl_FADT.AcpiDisable) { ACPI_ERROR ((AE_INFO, "No ACPI mode transition supported in this system " "(enable/disable both zero)")); return_ACPI_STATUS (AE_OK); } switch (Mode) { case ACPI_SYS_MODE_ACPI: /* BIOS should have disabled ALL fixed and GP events */ Status = AcpiHwWritePort (AcpiGbl_FADT.SmiCommand, (UINT32) AcpiGbl_FADT.AcpiEnable, 8); ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Attempting to enable ACPI mode\n")); break; case ACPI_SYS_MODE_LEGACY: /* * BIOS should clear all fixed status bits and restore fixed event * enable bits to default */ Status = AcpiHwWritePort (AcpiGbl_FADT.SmiCommand, (UINT32) AcpiGbl_FADT.AcpiDisable, 8); ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Attempting to enable Legacy (non-ACPI) mode\n")); break; default: return_ACPI_STATUS (AE_BAD_PARAMETER); } if (ACPI_FAILURE (Status)) { ACPI_EXCEPTION ((AE_INFO, Status, "Could not write ACPI mode change")); return_ACPI_STATUS (Status); } /* * Some hardware takes a LONG time to switch modes. Give them 3 sec to * do so, but allow faster systems to proceed more quickly. */ Retry = 3000; while (Retry) { if (AcpiHwGetMode () == Mode) { ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Mode %X successfully enabled\n", Mode)); return_ACPI_STATUS (AE_OK); } AcpiOsStall (ACPI_USEC_PER_MSEC); Retry--; } ACPI_ERROR ((AE_INFO, "Hardware did not change modes")); return_ACPI_STATUS (AE_NO_HARDWARE_RESPONSE); } /******************************************************************************* * * FUNCTION: AcpiHwGetMode * * PARAMETERS: none * * RETURN: SYS_MODE_ACPI or SYS_MODE_LEGACY * * DESCRIPTION: Return current operating state of system. Determined by * querying the SCI_EN bit. * ******************************************************************************/ UINT32 AcpiHwGetMode ( void) { ACPI_STATUS Status; UINT32 Value; ACPI_FUNCTION_TRACE (HwGetMode); /* If the Hardware Reduced flag is set, machine is always in acpi mode */ if (AcpiGbl_ReducedHardware) { return_UINT32 (ACPI_SYS_MODE_ACPI); } /* * ACPI 2.0 clarified that if SMI_CMD in FADT is zero, * system does not support mode transition. */ if (!AcpiGbl_FADT.SmiCommand) { return_UINT32 (ACPI_SYS_MODE_ACPI); } Status = AcpiReadBitRegister (ACPI_BITREG_SCI_ENABLE, &Value); if (ACPI_FAILURE (Status)) { return_UINT32 (ACPI_SYS_MODE_LEGACY); } if (Value) { return_UINT32 (ACPI_SYS_MODE_ACPI); } else { return_UINT32 (ACPI_SYS_MODE_LEGACY); } } #endif /* !ACPI_REDUCED_HARDWARE */ src/acpica/source/components/hardware/hwesleep.c000066400000000000000000000277621231470457100223510ustar00rootroot00000000000000/****************************************************************************** * * Name: hwesleep.c - ACPI Hardware Sleep/Wake Support functions for the * extended FADT-V5 sleep registers. * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #include "acpi.h" #include "accommon.h" #define _COMPONENT ACPI_HARDWARE ACPI_MODULE_NAME ("hwesleep") /******************************************************************************* * * FUNCTION: AcpiHwExecuteSleepMethod * * PARAMETERS: MethodPathname - Pathname of method to execute * IntegerArgument - Argument to pass to the method * * RETURN: None * * DESCRIPTION: Execute a sleep/wake related method with one integer argument * and no return value. * ******************************************************************************/ void AcpiHwExecuteSleepMethod ( char *MethodPathname, UINT32 IntegerArgument) { ACPI_OBJECT_LIST ArgList; ACPI_OBJECT Arg; ACPI_STATUS Status; ACPI_FUNCTION_TRACE (HwExecuteSleepMethod); /* One argument, IntegerArgument; No return value expected */ ArgList.Count = 1; ArgList.Pointer = &Arg; Arg.Type = ACPI_TYPE_INTEGER; Arg.Integer.Value = (UINT64) IntegerArgument; Status = AcpiEvaluateObject (NULL, MethodPathname, &ArgList, NULL); if (ACPI_FAILURE (Status) && Status != AE_NOT_FOUND) { ACPI_EXCEPTION ((AE_INFO, Status, "While executing method %s", MethodPathname)); } return_VOID; } /******************************************************************************* * * FUNCTION: AcpiHwExtendedSleep * * PARAMETERS: SleepState - Which sleep state to enter * * RETURN: Status * * DESCRIPTION: Enter a system sleep state via the extended FADT sleep * registers (V5 FADT). * THIS FUNCTION MUST BE CALLED WITH INTERRUPTS DISABLED * ******************************************************************************/ ACPI_STATUS AcpiHwExtendedSleep ( UINT8 SleepState) { ACPI_STATUS Status; UINT8 SleepTypeValue; UINT64 SleepStatus; ACPI_FUNCTION_TRACE (HwExtendedSleep); /* Extended sleep registers must be valid */ if (!AcpiGbl_FADT.SleepControl.Address || !AcpiGbl_FADT.SleepStatus.Address) { return_ACPI_STATUS (AE_NOT_EXIST); } /* Clear wake status (WAK_STS) */ Status = AcpiWrite ((UINT64) ACPI_X_WAKE_STATUS, &AcpiGbl_FADT.SleepStatus); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } AcpiGbl_SystemAwakeAndRunning = FALSE; /* Flush caches, as per ACPI specification */ ACPI_FLUSH_CPU_CACHE (); /* * Set the SLP_TYP and SLP_EN bits. * * Note: We only use the first value returned by the \_Sx method * (AcpiGbl_SleepTypeA) - As per ACPI specification. */ ACPI_DEBUG_PRINT ((ACPI_DB_INIT, "Entering sleep state [S%u]\n", SleepState)); SleepTypeValue = ((AcpiGbl_SleepTypeA << ACPI_X_SLEEP_TYPE_POSITION) & ACPI_X_SLEEP_TYPE_MASK); Status = AcpiWrite ((UINT64) (SleepTypeValue | ACPI_X_SLEEP_ENABLE), &AcpiGbl_FADT.SleepControl); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } /* Wait for transition back to Working State */ do { Status = AcpiRead (&SleepStatus, &AcpiGbl_FADT.SleepStatus); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } } while (!(((UINT8) SleepStatus) & ACPI_X_WAKE_STATUS)); return_ACPI_STATUS (AE_OK); } /******************************************************************************* * * FUNCTION: AcpiHwExtendedWakePrep * * PARAMETERS: SleepState - Which sleep state we just exited * * RETURN: Status * * DESCRIPTION: Perform first part of OS-independent ACPI cleanup after * a sleep. Called with interrupts ENABLED. * ******************************************************************************/ ACPI_STATUS AcpiHwExtendedWakePrep ( UINT8 SleepState) { ACPI_STATUS Status; UINT8 SleepTypeValue; ACPI_FUNCTION_TRACE (HwExtendedWakePrep); Status = AcpiGetSleepTypeData (ACPI_STATE_S0, &AcpiGbl_SleepTypeA, &AcpiGbl_SleepTypeB); if (ACPI_SUCCESS (Status)) { SleepTypeValue = ((AcpiGbl_SleepTypeA << ACPI_X_SLEEP_TYPE_POSITION) & ACPI_X_SLEEP_TYPE_MASK); (void) AcpiWrite ((UINT64) (SleepTypeValue | ACPI_X_SLEEP_ENABLE), &AcpiGbl_FADT.SleepControl); } return_ACPI_STATUS (AE_OK); } /******************************************************************************* * * FUNCTION: AcpiHwExtendedWake * * PARAMETERS: SleepState - Which sleep state we just exited * * RETURN: Status * * DESCRIPTION: Perform OS-independent ACPI cleanup after a sleep * Called with interrupts ENABLED. * ******************************************************************************/ ACPI_STATUS AcpiHwExtendedWake ( UINT8 SleepState) { ACPI_FUNCTION_TRACE (HwExtendedWake); /* Ensure EnterSleepStatePrep -> EnterSleepState ordering */ AcpiGbl_SleepTypeA = ACPI_SLEEP_TYPE_INVALID; /* Execute the wake methods */ AcpiHwExecuteSleepMethod (METHOD_PATHNAME__SST, ACPI_SST_WAKING); AcpiHwExecuteSleepMethod (METHOD_PATHNAME__WAK, SleepState); /* * Some BIOS code assumes that WAK_STS will be cleared on resume * and use it to determine whether the system is rebooting or * resuming. Clear WAK_STS for compatibility. */ (void) AcpiWrite ((UINT64) ACPI_X_WAKE_STATUS, &AcpiGbl_FADT.SleepStatus); AcpiGbl_SystemAwakeAndRunning = TRUE; AcpiHwExecuteSleepMethod (METHOD_PATHNAME__SST, ACPI_SST_WORKING); return_ACPI_STATUS (AE_OK); } src/acpica/source/components/hardware/hwgpe.c000066400000000000000000000441171231470457100216400ustar00rootroot00000000000000/****************************************************************************** * * Module Name: hwgpe - Low level GPE enable/disable/clear functions * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #include "acpi.h" #include "accommon.h" #include "acevents.h" #define _COMPONENT ACPI_HARDWARE ACPI_MODULE_NAME ("hwgpe") #if (!ACPI_REDUCED_HARDWARE) /* Entire module */ /* Local prototypes */ static ACPI_STATUS AcpiHwEnableWakeupGpeBlock ( ACPI_GPE_XRUPT_INFO *GpeXruptInfo, ACPI_GPE_BLOCK_INFO *GpeBlock, void *Context); /****************************************************************************** * * FUNCTION: AcpiHwGetGpeRegisterBit * * PARAMETERS: GpeEventInfo - Info block for the GPE * * RETURN: Register mask with a one in the GPE bit position * * DESCRIPTION: Compute the register mask for this GPE. One bit is set in the * correct position for the input GPE. * ******************************************************************************/ UINT32 AcpiHwGetGpeRegisterBit ( ACPI_GPE_EVENT_INFO *GpeEventInfo) { return ((UINT32) 1 << (GpeEventInfo->GpeNumber - GpeEventInfo->RegisterInfo->BaseGpeNumber)); } /****************************************************************************** * * FUNCTION: AcpiHwLowSetGpe * * PARAMETERS: GpeEventInfo - Info block for the GPE to be disabled * Action - Enable or disable * * RETURN: Status * * DESCRIPTION: Enable or disable a single GPE in the parent enable register. * ******************************************************************************/ ACPI_STATUS AcpiHwLowSetGpe ( ACPI_GPE_EVENT_INFO *GpeEventInfo, UINT32 Action) { ACPI_GPE_REGISTER_INFO *GpeRegisterInfo; ACPI_STATUS Status; UINT32 EnableMask; UINT32 RegisterBit; ACPI_FUNCTION_ENTRY (); /* Get the info block for the entire GPE register */ GpeRegisterInfo = GpeEventInfo->RegisterInfo; if (!GpeRegisterInfo) { return (AE_NOT_EXIST); } /* Get current value of the enable register that contains this GPE */ Status = AcpiHwRead (&EnableMask, &GpeRegisterInfo->EnableAddress); if (ACPI_FAILURE (Status)) { return (Status); } /* Set or clear just the bit that corresponds to this GPE */ RegisterBit = AcpiHwGetGpeRegisterBit (GpeEventInfo); switch (Action) { case ACPI_GPE_CONDITIONAL_ENABLE: /* Only enable if the EnableForRun bit is set */ if (!(RegisterBit & GpeRegisterInfo->EnableForRun)) { return (AE_BAD_PARAMETER); } /*lint -fallthrough */ case ACPI_GPE_ENABLE: ACPI_SET_BIT (EnableMask, RegisterBit); break; case ACPI_GPE_DISABLE: ACPI_CLEAR_BIT (EnableMask, RegisterBit); break; default: ACPI_ERROR ((AE_INFO, "Invalid GPE Action, %u", Action)); return (AE_BAD_PARAMETER); } /* Write the updated enable mask */ Status = AcpiHwWrite (EnableMask, &GpeRegisterInfo->EnableAddress); return (Status); } /****************************************************************************** * * FUNCTION: AcpiHwClearGpe * * PARAMETERS: GpeEventInfo - Info block for the GPE to be cleared * * RETURN: Status * * DESCRIPTION: Clear the status bit for a single GPE. * ******************************************************************************/ ACPI_STATUS AcpiHwClearGpe ( ACPI_GPE_EVENT_INFO *GpeEventInfo) { ACPI_GPE_REGISTER_INFO *GpeRegisterInfo; ACPI_STATUS Status; UINT32 RegisterBit; ACPI_FUNCTION_ENTRY (); /* Get the info block for the entire GPE register */ GpeRegisterInfo = GpeEventInfo->RegisterInfo; if (!GpeRegisterInfo) { return (AE_NOT_EXIST); } /* * Write a one to the appropriate bit in the status register to * clear this GPE. */ RegisterBit = AcpiHwGetGpeRegisterBit (GpeEventInfo); Status = AcpiHwWrite (RegisterBit, &GpeRegisterInfo->StatusAddress); return (Status); } /****************************************************************************** * * FUNCTION: AcpiHwGetGpeStatus * * PARAMETERS: GpeEventInfo - Info block for the GPE to queried * EventStatus - Where the GPE status is returned * * RETURN: Status * * DESCRIPTION: Return the status of a single GPE. * ******************************************************************************/ ACPI_STATUS AcpiHwGetGpeStatus ( ACPI_GPE_EVENT_INFO *GpeEventInfo, ACPI_EVENT_STATUS *EventStatus) { UINT32 InByte; UINT32 RegisterBit; ACPI_GPE_REGISTER_INFO *GpeRegisterInfo; ACPI_EVENT_STATUS LocalEventStatus = 0; ACPI_STATUS Status; ACPI_FUNCTION_ENTRY (); if (!EventStatus) { return (AE_BAD_PARAMETER); } /* Get the info block for the entire GPE register */ GpeRegisterInfo = GpeEventInfo->RegisterInfo; /* Get the register bitmask for this GPE */ RegisterBit = AcpiHwGetGpeRegisterBit (GpeEventInfo); /* GPE currently enabled? (enabled for runtime?) */ if (RegisterBit & GpeRegisterInfo->EnableForRun) { LocalEventStatus |= ACPI_EVENT_FLAG_ENABLED; } /* GPE enabled for wake? */ if (RegisterBit & GpeRegisterInfo->EnableForWake) { LocalEventStatus |= ACPI_EVENT_FLAG_WAKE_ENABLED; } /* GPE currently active (status bit == 1)? */ Status = AcpiHwRead (&InByte, &GpeRegisterInfo->StatusAddress); if (ACPI_FAILURE (Status)) { return (Status); } if (RegisterBit & InByte) { LocalEventStatus |= ACPI_EVENT_FLAG_SET; } /* Set return value */ (*EventStatus) = LocalEventStatus; return (AE_OK); } /****************************************************************************** * * FUNCTION: AcpiHwDisableGpeBlock * * PARAMETERS: GpeXruptInfo - GPE Interrupt info * GpeBlock - Gpe Block info * * RETURN: Status * * DESCRIPTION: Disable all GPEs within a single GPE block * ******************************************************************************/ ACPI_STATUS AcpiHwDisableGpeBlock ( ACPI_GPE_XRUPT_INFO *GpeXruptInfo, ACPI_GPE_BLOCK_INFO *GpeBlock, void *Context) { UINT32 i; ACPI_STATUS Status; /* Examine each GPE Register within the block */ for (i = 0; i < GpeBlock->RegisterCount; i++) { /* Disable all GPEs in this register */ Status = AcpiHwWrite (0x00, &GpeBlock->RegisterInfo[i].EnableAddress); if (ACPI_FAILURE (Status)) { return (Status); } } return (AE_OK); } /****************************************************************************** * * FUNCTION: AcpiHwClearGpeBlock * * PARAMETERS: GpeXruptInfo - GPE Interrupt info * GpeBlock - Gpe Block info * * RETURN: Status * * DESCRIPTION: Clear status bits for all GPEs within a single GPE block * ******************************************************************************/ ACPI_STATUS AcpiHwClearGpeBlock ( ACPI_GPE_XRUPT_INFO *GpeXruptInfo, ACPI_GPE_BLOCK_INFO *GpeBlock, void *Context) { UINT32 i; ACPI_STATUS Status; /* Examine each GPE Register within the block */ for (i = 0; i < GpeBlock->RegisterCount; i++) { /* Clear status on all GPEs in this register */ Status = AcpiHwWrite (0xFF, &GpeBlock->RegisterInfo[i].StatusAddress); if (ACPI_FAILURE (Status)) { return (Status); } } return (AE_OK); } /****************************************************************************** * * FUNCTION: AcpiHwEnableRuntimeGpeBlock * * PARAMETERS: GpeXruptInfo - GPE Interrupt info * GpeBlock - Gpe Block info * * RETURN: Status * * DESCRIPTION: Enable all "runtime" GPEs within a single GPE block. Includes * combination wake/run GPEs. * ******************************************************************************/ ACPI_STATUS AcpiHwEnableRuntimeGpeBlock ( ACPI_GPE_XRUPT_INFO *GpeXruptInfo, ACPI_GPE_BLOCK_INFO *GpeBlock, void *Context) { UINT32 i; ACPI_STATUS Status; /* NOTE: assumes that all GPEs are currently disabled */ /* Examine each GPE Register within the block */ for (i = 0; i < GpeBlock->RegisterCount; i++) { if (!GpeBlock->RegisterInfo[i].EnableForRun) { continue; } /* Enable all "runtime" GPEs in this register */ Status = AcpiHwWrite (GpeBlock->RegisterInfo[i].EnableForRun, &GpeBlock->RegisterInfo[i].EnableAddress); if (ACPI_FAILURE (Status)) { return (Status); } } return (AE_OK); } /****************************************************************************** * * FUNCTION: AcpiHwEnableWakeupGpeBlock * * PARAMETERS: GpeXruptInfo - GPE Interrupt info * GpeBlock - Gpe Block info * * RETURN: Status * * DESCRIPTION: Enable all "wake" GPEs within a single GPE block. Includes * combination wake/run GPEs. * ******************************************************************************/ static ACPI_STATUS AcpiHwEnableWakeupGpeBlock ( ACPI_GPE_XRUPT_INFO *GpeXruptInfo, ACPI_GPE_BLOCK_INFO *GpeBlock, void *Context) { UINT32 i; ACPI_STATUS Status; /* Examine each GPE Register within the block */ for (i = 0; i < GpeBlock->RegisterCount; i++) { if (!GpeBlock->RegisterInfo[i].EnableForWake) { continue; } /* Enable all "wake" GPEs in this register */ Status = AcpiHwWrite (GpeBlock->RegisterInfo[i].EnableForWake, &GpeBlock->RegisterInfo[i].EnableAddress); if (ACPI_FAILURE (Status)) { return (Status); } } return (AE_OK); } /****************************************************************************** * * FUNCTION: AcpiHwDisableAllGpes * * PARAMETERS: None * * RETURN: Status * * DESCRIPTION: Disable and clear all GPEs in all GPE blocks * ******************************************************************************/ ACPI_STATUS AcpiHwDisableAllGpes ( void) { ACPI_STATUS Status; ACPI_FUNCTION_TRACE (HwDisableAllGpes); Status = AcpiEvWalkGpeList (AcpiHwDisableGpeBlock, NULL); Status = AcpiEvWalkGpeList (AcpiHwClearGpeBlock, NULL); return_ACPI_STATUS (Status); } /****************************************************************************** * * FUNCTION: AcpiHwEnableAllRuntimeGpes * * PARAMETERS: None * * RETURN: Status * * DESCRIPTION: Enable all "runtime" GPEs, in all GPE blocks * ******************************************************************************/ ACPI_STATUS AcpiHwEnableAllRuntimeGpes ( void) { ACPI_STATUS Status; ACPI_FUNCTION_TRACE (HwEnableAllRuntimeGpes); Status = AcpiEvWalkGpeList (AcpiHwEnableRuntimeGpeBlock, NULL); return_ACPI_STATUS (Status); } /****************************************************************************** * * FUNCTION: AcpiHwEnableAllWakeupGpes * * PARAMETERS: None * * RETURN: Status * * DESCRIPTION: Enable all "wakeup" GPEs, in all GPE blocks * ******************************************************************************/ ACPI_STATUS AcpiHwEnableAllWakeupGpes ( void) { ACPI_STATUS Status; ACPI_FUNCTION_TRACE (HwEnableAllWakeupGpes); Status = AcpiEvWalkGpeList (AcpiHwEnableWakeupGpeBlock, NULL); return_ACPI_STATUS (Status); } #endif /* !ACPI_REDUCED_HARDWARE */ src/acpica/source/components/hardware/hwpci.c000066400000000000000000000444501231470457100216400ustar00rootroot00000000000000/******************************************************************************* * * Module Name: hwpci - Obtain PCI bus, device, and function numbers * ******************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #define __HWPCI_C__ #include "acpi.h" #include "accommon.h" #define _COMPONENT ACPI_NAMESPACE ACPI_MODULE_NAME ("hwpci") /* PCI configuration space values */ #define PCI_CFG_HEADER_TYPE_REG 0x0E #define PCI_CFG_PRIMARY_BUS_NUMBER_REG 0x18 #define PCI_CFG_SECONDARY_BUS_NUMBER_REG 0x19 /* PCI header values */ #define PCI_HEADER_TYPE_MASK 0x7F #define PCI_TYPE_BRIDGE 0x01 #define PCI_TYPE_CARDBUS_BRIDGE 0x02 typedef struct acpi_pci_device { ACPI_HANDLE Device; struct acpi_pci_device *Next; } ACPI_PCI_DEVICE; /* Local prototypes */ static ACPI_STATUS AcpiHwBuildPciList ( ACPI_HANDLE RootPciDevice, ACPI_HANDLE PciRegion, ACPI_PCI_DEVICE **ReturnListHead); static ACPI_STATUS AcpiHwProcessPciList ( ACPI_PCI_ID *PciId, ACPI_PCI_DEVICE *ListHead); static void AcpiHwDeletePciList ( ACPI_PCI_DEVICE *ListHead); static ACPI_STATUS AcpiHwGetPciDeviceInfo ( ACPI_PCI_ID *PciId, ACPI_HANDLE PciDevice, UINT16 *BusNumber, BOOLEAN *IsBridge); /******************************************************************************* * * FUNCTION: AcpiHwDerivePciId * * PARAMETERS: PciId - Initial values for the PCI ID. May be * modified by this function. * RootPciDevice - A handle to a PCI device object. This * object must be a PCI Root Bridge having a * _HID value of either PNP0A03 or PNP0A08 * PciRegion - A handle to a PCI configuration space * Operation Region being initialized * * RETURN: Status * * DESCRIPTION: This function derives a full PCI ID for a PCI device, * consisting of a Segment number, Bus number, Device number, * and function code. * * The PCI hardware dynamically configures PCI bus numbers * depending on the bus topology discovered during system * initialization. This function is invoked during configuration * of a PCI_Config Operation Region in order to (possibly) update * the Bus/Device/Function numbers in the PciId with the actual * values as determined by the hardware and operating system * configuration. * * The PciId parameter is initially populated during the Operation * Region initialization. This function is then called, and is * will make any necessary modifications to the Bus, Device, or * Function number PCI ID subfields as appropriate for the * current hardware and OS configuration. * * NOTE: Created 08/2010. Replaces the previous OSL AcpiOsDerivePciId * interface since this feature is OS-independent. This module * specifically avoids any use of recursion by building a local * temporary device list. * ******************************************************************************/ ACPI_STATUS AcpiHwDerivePciId ( ACPI_PCI_ID *PciId, ACPI_HANDLE RootPciDevice, ACPI_HANDLE PciRegion) { ACPI_STATUS Status; ACPI_PCI_DEVICE *ListHead = NULL; ACPI_FUNCTION_TRACE (HwDerivePciId); if (!PciId) { return_ACPI_STATUS (AE_BAD_PARAMETER); } /* Build a list of PCI devices, from PciRegion up to RootPciDevice */ Status = AcpiHwBuildPciList (RootPciDevice, PciRegion, &ListHead); if (ACPI_SUCCESS (Status)) { /* Walk the list, updating the PCI device/function/bus numbers */ Status = AcpiHwProcessPciList (PciId, ListHead); } /* Always delete the list */ AcpiHwDeletePciList (ListHead); return_ACPI_STATUS (Status); } /******************************************************************************* * * FUNCTION: AcpiHwBuildPciList * * PARAMETERS: RootPciDevice - A handle to a PCI device object. This * object is guaranteed to be a PCI Root * Bridge having a _HID value of either * PNP0A03 or PNP0A08 * PciRegion - A handle to the PCI configuration space * Operation Region * ReturnListHead - Where the PCI device list is returned * * RETURN: Status * * DESCRIPTION: Builds a list of devices from the input PCI region up to the * Root PCI device for this namespace subtree. * ******************************************************************************/ static ACPI_STATUS AcpiHwBuildPciList ( ACPI_HANDLE RootPciDevice, ACPI_HANDLE PciRegion, ACPI_PCI_DEVICE **ReturnListHead) { ACPI_HANDLE CurrentDevice; ACPI_HANDLE ParentDevice; ACPI_STATUS Status; ACPI_PCI_DEVICE *ListElement; ACPI_PCI_DEVICE *ListHead = NULL; /* * Ascend namespace branch until the RootPciDevice is reached, building * a list of device nodes. Loop will exit when either the PCI device is * found, or the root of the namespace is reached. */ CurrentDevice = PciRegion; while (1) { Status = AcpiGetParent (CurrentDevice, &ParentDevice); if (ACPI_FAILURE (Status)) { return (Status); } /* Finished when we reach the PCI root device (PNP0A03 or PNP0A08) */ if (ParentDevice == RootPciDevice) { *ReturnListHead = ListHead; return (AE_OK); } ListElement = ACPI_ALLOCATE (sizeof (ACPI_PCI_DEVICE)); if (!ListElement) { return (AE_NO_MEMORY); } /* Put new element at the head of the list */ ListElement->Next = ListHead; ListElement->Device = ParentDevice; ListHead = ListElement; CurrentDevice = ParentDevice; } } /******************************************************************************* * * FUNCTION: AcpiHwProcessPciList * * PARAMETERS: PciId - Initial values for the PCI ID. May be * modified by this function. * ListHead - Device list created by * AcpiHwBuildPciList * * RETURN: Status * * DESCRIPTION: Walk downward through the PCI device list, getting the device * info for each, via the PCI configuration space and updating * the PCI ID as necessary. Deletes the list during traversal. * ******************************************************************************/ static ACPI_STATUS AcpiHwProcessPciList ( ACPI_PCI_ID *PciId, ACPI_PCI_DEVICE *ListHead) { ACPI_STATUS Status = AE_OK; ACPI_PCI_DEVICE *Info; UINT16 BusNumber; BOOLEAN IsBridge = TRUE; ACPI_FUNCTION_NAME (HwProcessPciList); ACPI_DEBUG_PRINT ((ACPI_DB_OPREGION, "Input PciId: Seg %4.4X Bus %4.4X Dev %4.4X Func %4.4X\n", PciId->Segment, PciId->Bus, PciId->Device, PciId->Function)); BusNumber = PciId->Bus; /* * Descend down the namespace tree, collecting PCI device, function, * and bus numbers. BusNumber is only important for PCI bridges. * Algorithm: As we descend the tree, use the last valid PCI device, * function, and bus numbers that are discovered, and assign them * to the PCI ID for the target device. */ Info = ListHead; while (Info) { Status = AcpiHwGetPciDeviceInfo (PciId, Info->Device, &BusNumber, &IsBridge); if (ACPI_FAILURE (Status)) { return (Status); } Info = Info->Next; } ACPI_DEBUG_PRINT ((ACPI_DB_OPREGION, "Output PciId: Seg %4.4X Bus %4.4X Dev %4.4X Func %4.4X " "Status %X BusNumber %X IsBridge %X\n", PciId->Segment, PciId->Bus, PciId->Device, PciId->Function, Status, BusNumber, IsBridge)); return (AE_OK); } /******************************************************************************* * * FUNCTION: AcpiHwDeletePciList * * PARAMETERS: ListHead - Device list created by * AcpiHwBuildPciList * * RETURN: None * * DESCRIPTION: Free the entire PCI list. * ******************************************************************************/ static void AcpiHwDeletePciList ( ACPI_PCI_DEVICE *ListHead) { ACPI_PCI_DEVICE *Next; ACPI_PCI_DEVICE *Previous; Next = ListHead; while (Next) { Previous = Next; Next = Previous->Next; ACPI_FREE (Previous); } } /******************************************************************************* * * FUNCTION: AcpiHwGetPciDeviceInfo * * PARAMETERS: PciId - Initial values for the PCI ID. May be * modified by this function. * PciDevice - Handle for the PCI device object * BusNumber - Where a PCI bridge bus number is returned * IsBridge - Return value, indicates if this PCI * device is a PCI bridge * * RETURN: Status * * DESCRIPTION: Get the device info for a single PCI device object. Get the * _ADR (contains PCI device and function numbers), and for PCI * bridge devices, get the bus number from PCI configuration * space. * ******************************************************************************/ static ACPI_STATUS AcpiHwGetPciDeviceInfo ( ACPI_PCI_ID *PciId, ACPI_HANDLE PciDevice, UINT16 *BusNumber, BOOLEAN *IsBridge) { ACPI_STATUS Status; ACPI_OBJECT_TYPE ObjectType; UINT64 ReturnValue; UINT64 PciValue; /* We only care about objects of type Device */ Status = AcpiGetType (PciDevice, &ObjectType); if (ACPI_FAILURE (Status)) { return (Status); } if (ObjectType != ACPI_TYPE_DEVICE) { return (AE_OK); } /* We need an _ADR. Ignore device if not present */ Status = AcpiUtEvaluateNumericObject (METHOD_NAME__ADR, PciDevice, &ReturnValue); if (ACPI_FAILURE (Status)) { return (AE_OK); } /* * From _ADR, get the PCI Device and Function and * update the PCI ID. */ PciId->Device = ACPI_HIWORD (ACPI_LODWORD (ReturnValue)); PciId->Function = ACPI_LOWORD (ACPI_LODWORD (ReturnValue)); /* * If the previous device was a bridge, use the previous * device bus number */ if (*IsBridge) { PciId->Bus = *BusNumber; } /* * Get the bus numbers from PCI Config space: * * First, get the PCI HeaderType */ *IsBridge = FALSE; Status = AcpiOsReadPciConfiguration (PciId, PCI_CFG_HEADER_TYPE_REG, &PciValue, 8); if (ACPI_FAILURE (Status)) { return (Status); } /* We only care about bridges (1=PciBridge, 2=CardBusBridge) */ PciValue &= PCI_HEADER_TYPE_MASK; if ((PciValue != PCI_TYPE_BRIDGE) && (PciValue != PCI_TYPE_CARDBUS_BRIDGE)) { return (AE_OK); } /* Bridge: Get the Primary BusNumber */ Status = AcpiOsReadPciConfiguration (PciId, PCI_CFG_PRIMARY_BUS_NUMBER_REG, &PciValue, 8); if (ACPI_FAILURE (Status)) { return (Status); } *IsBridge = TRUE; PciId->Bus = (UINT16) PciValue; /* Bridge: Get the Secondary BusNumber */ Status = AcpiOsReadPciConfiguration (PciId, PCI_CFG_SECONDARY_BUS_NUMBER_REG, &PciValue, 8); if (ACPI_FAILURE (Status)) { return (Status); } *BusNumber = (UINT16) PciValue; return (AE_OK); } src/acpica/source/components/hardware/hwregs.c000066400000000000000000000624561231470457100220330ustar00rootroot00000000000000/******************************************************************************* * * Module Name: hwregs - Read/write access functions for the various ACPI * control and status registers. * ******************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #define __HWREGS_C__ #include "acpi.h" #include "accommon.h" #include "acevents.h" #define _COMPONENT ACPI_HARDWARE ACPI_MODULE_NAME ("hwregs") #if (!ACPI_REDUCED_HARDWARE) /* Local Prototypes */ static ACPI_STATUS AcpiHwReadMultiple ( UINT32 *Value, ACPI_GENERIC_ADDRESS *RegisterA, ACPI_GENERIC_ADDRESS *RegisterB); static ACPI_STATUS AcpiHwWriteMultiple ( UINT32 Value, ACPI_GENERIC_ADDRESS *RegisterA, ACPI_GENERIC_ADDRESS *RegisterB); #endif /* !ACPI_REDUCED_HARDWARE */ /****************************************************************************** * * FUNCTION: AcpiHwValidateRegister * * PARAMETERS: Reg - GAS register structure * MaxBitWidth - Max BitWidth supported (32 or 64) * Address - Pointer to where the gas->address * is returned * * RETURN: Status * * DESCRIPTION: Validate the contents of a GAS register. Checks the GAS * pointer, Address, SpaceId, BitWidth, and BitOffset. * ******************************************************************************/ ACPI_STATUS AcpiHwValidateRegister ( ACPI_GENERIC_ADDRESS *Reg, UINT8 MaxBitWidth, UINT64 *Address) { /* Must have a valid pointer to a GAS structure */ if (!Reg) { return (AE_BAD_PARAMETER); } /* * Copy the target address. This handles possible alignment issues. * Address must not be null. A null address also indicates an optional * ACPI register that is not supported, so no error message. */ ACPI_MOVE_64_TO_64 (Address, &Reg->Address); if (!(*Address)) { return (AE_BAD_ADDRESS); } /* Validate the SpaceID */ if ((Reg->SpaceId != ACPI_ADR_SPACE_SYSTEM_MEMORY) && (Reg->SpaceId != ACPI_ADR_SPACE_SYSTEM_IO)) { ACPI_ERROR ((AE_INFO, "Unsupported address space: 0x%X", Reg->SpaceId)); return (AE_SUPPORT); } /* Validate the BitWidth */ if ((Reg->BitWidth != 8) && (Reg->BitWidth != 16) && (Reg->BitWidth != 32) && (Reg->BitWidth != MaxBitWidth)) { ACPI_ERROR ((AE_INFO, "Unsupported register bit width: 0x%X", Reg->BitWidth)); return (AE_SUPPORT); } /* Validate the BitOffset. Just a warning for now. */ if (Reg->BitOffset != 0) { ACPI_WARNING ((AE_INFO, "Unsupported register bit offset: 0x%X", Reg->BitOffset)); } return (AE_OK); } /****************************************************************************** * * FUNCTION: AcpiHwRead * * PARAMETERS: Value - Where the value is returned * Reg - GAS register structure * * RETURN: Status * * DESCRIPTION: Read from either memory or IO space. This is a 32-bit max * version of AcpiRead, used internally since the overhead of * 64-bit values is not needed. * * LIMITATIONS: * BitWidth must be exactly 8, 16, or 32. * SpaceID must be SystemMemory or SystemIO. * BitOffset and AccessWidth are currently ignored, as there has * not been a need to implement these. * ******************************************************************************/ ACPI_STATUS AcpiHwRead ( UINT32 *Value, ACPI_GENERIC_ADDRESS *Reg) { UINT64 Address; UINT64 Value64; ACPI_STATUS Status; ACPI_FUNCTION_NAME (HwRead); /* Validate contents of the GAS register */ Status = AcpiHwValidateRegister (Reg, 32, &Address); if (ACPI_FAILURE (Status)) { return (Status); } /* Initialize entire 32-bit return value to zero */ *Value = 0; /* * Two address spaces supported: Memory or IO. PCI_Config is * not supported here because the GAS structure is insufficient */ if (Reg->SpaceId == ACPI_ADR_SPACE_SYSTEM_MEMORY) { Status = AcpiOsReadMemory ((ACPI_PHYSICAL_ADDRESS) Address, &Value64, Reg->BitWidth); *Value = (UINT32) Value64; } else /* ACPI_ADR_SPACE_SYSTEM_IO, validated earlier */ { Status = AcpiHwReadPort ((ACPI_IO_ADDRESS) Address, Value, Reg->BitWidth); } ACPI_DEBUG_PRINT ((ACPI_DB_IO, "Read: %8.8X width %2d from %8.8X%8.8X (%s)\n", *Value, Reg->BitWidth, ACPI_FORMAT_UINT64 (Address), AcpiUtGetRegionName (Reg->SpaceId))); return (Status); } /****************************************************************************** * * FUNCTION: AcpiHwWrite * * PARAMETERS: Value - Value to be written * Reg - GAS register structure * * RETURN: Status * * DESCRIPTION: Write to either memory or IO space. This is a 32-bit max * version of AcpiWrite, used internally since the overhead of * 64-bit values is not needed. * ******************************************************************************/ ACPI_STATUS AcpiHwWrite ( UINT32 Value, ACPI_GENERIC_ADDRESS *Reg) { UINT64 Address; ACPI_STATUS Status; ACPI_FUNCTION_NAME (HwWrite); /* Validate contents of the GAS register */ Status = AcpiHwValidateRegister (Reg, 32, &Address); if (ACPI_FAILURE (Status)) { return (Status); } /* * Two address spaces supported: Memory or IO. PCI_Config is * not supported here because the GAS structure is insufficient */ if (Reg->SpaceId == ACPI_ADR_SPACE_SYSTEM_MEMORY) { Status = AcpiOsWriteMemory ((ACPI_PHYSICAL_ADDRESS) Address, (UINT64) Value, Reg->BitWidth); } else /* ACPI_ADR_SPACE_SYSTEM_IO, validated earlier */ { Status = AcpiHwWritePort ((ACPI_IO_ADDRESS) Address, Value, Reg->BitWidth); } ACPI_DEBUG_PRINT ((ACPI_DB_IO, "Wrote: %8.8X width %2d to %8.8X%8.8X (%s)\n", Value, Reg->BitWidth, ACPI_FORMAT_UINT64 (Address), AcpiUtGetRegionName (Reg->SpaceId))); return (Status); } #if (!ACPI_REDUCED_HARDWARE) /******************************************************************************* * * FUNCTION: AcpiHwClearAcpiStatus * * PARAMETERS: None * * RETURN: Status * * DESCRIPTION: Clears all fixed and general purpose status bits * ******************************************************************************/ ACPI_STATUS AcpiHwClearAcpiStatus ( void) { ACPI_STATUS Status; ACPI_CPU_FLAGS LockFlags = 0; ACPI_FUNCTION_TRACE (HwClearAcpiStatus); ACPI_DEBUG_PRINT ((ACPI_DB_IO, "About to write %04X to %8.8X%8.8X\n", ACPI_BITMASK_ALL_FIXED_STATUS, ACPI_FORMAT_UINT64 (AcpiGbl_XPm1aStatus.Address))); LockFlags = AcpiOsAcquireLock (AcpiGbl_HardwareLock); /* Clear the fixed events in PM1 A/B */ Status = AcpiHwRegisterWrite (ACPI_REGISTER_PM1_STATUS, ACPI_BITMASK_ALL_FIXED_STATUS); if (ACPI_FAILURE (Status)) { goto UnlockAndExit; } /* Clear the GPE Bits in all GPE registers in all GPE blocks */ Status = AcpiEvWalkGpeList (AcpiHwClearGpeBlock, NULL); UnlockAndExit: AcpiOsReleaseLock (AcpiGbl_HardwareLock, LockFlags); return_ACPI_STATUS (Status); } /******************************************************************************* * * FUNCTION: AcpiHwGetBitRegisterInfo * * PARAMETERS: RegisterId - Index of ACPI Register to access * * RETURN: The bitmask to be used when accessing the register * * DESCRIPTION: Map RegisterId into a register bitmask. * ******************************************************************************/ ACPI_BIT_REGISTER_INFO * AcpiHwGetBitRegisterInfo ( UINT32 RegisterId) { ACPI_FUNCTION_ENTRY (); if (RegisterId > ACPI_BITREG_MAX) { ACPI_ERROR ((AE_INFO, "Invalid BitRegister ID: 0x%X", RegisterId)); return (NULL); } return (&AcpiGbl_BitRegisterInfo[RegisterId]); } /****************************************************************************** * * FUNCTION: AcpiHwWritePm1Control * * PARAMETERS: Pm1aControl - Value to be written to PM1A control * Pm1bControl - Value to be written to PM1B control * * RETURN: Status * * DESCRIPTION: Write the PM1 A/B control registers. These registers are * different than than the PM1 A/B status and enable registers * in that different values can be written to the A/B registers. * Most notably, the SLP_TYP bits can be different, as per the * values returned from the _Sx predefined methods. * ******************************************************************************/ ACPI_STATUS AcpiHwWritePm1Control ( UINT32 Pm1aControl, UINT32 Pm1bControl) { ACPI_STATUS Status; ACPI_FUNCTION_TRACE (HwWritePm1Control); Status = AcpiHwWrite (Pm1aControl, &AcpiGbl_FADT.XPm1aControlBlock); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } if (AcpiGbl_FADT.XPm1bControlBlock.Address) { Status = AcpiHwWrite (Pm1bControl, &AcpiGbl_FADT.XPm1bControlBlock); } return_ACPI_STATUS (Status); } /****************************************************************************** * * FUNCTION: AcpiHwRegisterRead * * PARAMETERS: RegisterId - ACPI Register ID * ReturnValue - Where the register value is returned * * RETURN: Status and the value read. * * DESCRIPTION: Read from the specified ACPI register * ******************************************************************************/ ACPI_STATUS AcpiHwRegisterRead ( UINT32 RegisterId, UINT32 *ReturnValue) { UINT32 Value = 0; ACPI_STATUS Status; ACPI_FUNCTION_TRACE (HwRegisterRead); switch (RegisterId) { case ACPI_REGISTER_PM1_STATUS: /* PM1 A/B: 16-bit access each */ Status = AcpiHwReadMultiple (&Value, &AcpiGbl_XPm1aStatus, &AcpiGbl_XPm1bStatus); break; case ACPI_REGISTER_PM1_ENABLE: /* PM1 A/B: 16-bit access each */ Status = AcpiHwReadMultiple (&Value, &AcpiGbl_XPm1aEnable, &AcpiGbl_XPm1bEnable); break; case ACPI_REGISTER_PM1_CONTROL: /* PM1 A/B: 16-bit access each */ Status = AcpiHwReadMultiple (&Value, &AcpiGbl_FADT.XPm1aControlBlock, &AcpiGbl_FADT.XPm1bControlBlock); /* * Zero the write-only bits. From the ACPI specification, "Hardware * Write-Only Bits": "Upon reads to registers with write-only bits, * software masks out all write-only bits." */ Value &= ~ACPI_PM1_CONTROL_WRITEONLY_BITS; break; case ACPI_REGISTER_PM2_CONTROL: /* 8-bit access */ Status = AcpiHwRead (&Value, &AcpiGbl_FADT.XPm2ControlBlock); break; case ACPI_REGISTER_PM_TIMER: /* 32-bit access */ Status = AcpiHwRead (&Value, &AcpiGbl_FADT.XPmTimerBlock); break; case ACPI_REGISTER_SMI_COMMAND_BLOCK: /* 8-bit access */ Status = AcpiHwReadPort (AcpiGbl_FADT.SmiCommand, &Value, 8); break; default: ACPI_ERROR ((AE_INFO, "Unknown Register ID: 0x%X", RegisterId)); Status = AE_BAD_PARAMETER; break; } if (ACPI_SUCCESS (Status)) { *ReturnValue = Value; } return_ACPI_STATUS (Status); } /****************************************************************************** * * FUNCTION: AcpiHwRegisterWrite * * PARAMETERS: RegisterId - ACPI Register ID * Value - The value to write * * RETURN: Status * * DESCRIPTION: Write to the specified ACPI register * * NOTE: In accordance with the ACPI specification, this function automatically * preserves the value of the following bits, meaning that these bits cannot be * changed via this interface: * * PM1_CONTROL[0] = SCI_EN * PM1_CONTROL[9] * PM1_STATUS[11] * * ACPI References: * 1) Hardware Ignored Bits: When software writes to a register with ignored * bit fields, it preserves the ignored bit fields * 2) SCI_EN: OSPM always preserves this bit position * ******************************************************************************/ ACPI_STATUS AcpiHwRegisterWrite ( UINT32 RegisterId, UINT32 Value) { ACPI_STATUS Status; UINT32 ReadValue; ACPI_FUNCTION_TRACE (HwRegisterWrite); switch (RegisterId) { case ACPI_REGISTER_PM1_STATUS: /* PM1 A/B: 16-bit access each */ /* * Handle the "ignored" bit in PM1 Status. According to the ACPI * specification, ignored bits are to be preserved when writing. * Normally, this would mean a read/modify/write sequence. However, * preserving a bit in the status register is different. Writing a * one clears the status, and writing a zero preserves the status. * Therefore, we must always write zero to the ignored bit. * * This behavior is clarified in the ACPI 4.0 specification. */ Value &= ~ACPI_PM1_STATUS_PRESERVED_BITS; Status = AcpiHwWriteMultiple (Value, &AcpiGbl_XPm1aStatus, &AcpiGbl_XPm1bStatus); break; case ACPI_REGISTER_PM1_ENABLE: /* PM1 A/B: 16-bit access each */ Status = AcpiHwWriteMultiple (Value, &AcpiGbl_XPm1aEnable, &AcpiGbl_XPm1bEnable); break; case ACPI_REGISTER_PM1_CONTROL: /* PM1 A/B: 16-bit access each */ /* * Perform a read first to preserve certain bits (per ACPI spec) * Note: This includes SCI_EN, we never want to change this bit */ Status = AcpiHwReadMultiple (&ReadValue, &AcpiGbl_FADT.XPm1aControlBlock, &AcpiGbl_FADT.XPm1bControlBlock); if (ACPI_FAILURE (Status)) { goto Exit; } /* Insert the bits to be preserved */ ACPI_INSERT_BITS (Value, ACPI_PM1_CONTROL_PRESERVED_BITS, ReadValue); /* Now we can write the data */ Status = AcpiHwWriteMultiple (Value, &AcpiGbl_FADT.XPm1aControlBlock, &AcpiGbl_FADT.XPm1bControlBlock); break; case ACPI_REGISTER_PM2_CONTROL: /* 8-bit access */ /* * For control registers, all reserved bits must be preserved, * as per the ACPI spec. */ Status = AcpiHwRead (&ReadValue, &AcpiGbl_FADT.XPm2ControlBlock); if (ACPI_FAILURE (Status)) { goto Exit; } /* Insert the bits to be preserved */ ACPI_INSERT_BITS (Value, ACPI_PM2_CONTROL_PRESERVED_BITS, ReadValue); Status = AcpiHwWrite (Value, &AcpiGbl_FADT.XPm2ControlBlock); break; case ACPI_REGISTER_PM_TIMER: /* 32-bit access */ Status = AcpiHwWrite (Value, &AcpiGbl_FADT.XPmTimerBlock); break; case ACPI_REGISTER_SMI_COMMAND_BLOCK: /* 8-bit access */ /* SMI_CMD is currently always in IO space */ Status = AcpiHwWritePort (AcpiGbl_FADT.SmiCommand, Value, 8); break; default: ACPI_ERROR ((AE_INFO, "Unknown Register ID: 0x%X", RegisterId)); Status = AE_BAD_PARAMETER; break; } Exit: return_ACPI_STATUS (Status); } /****************************************************************************** * * FUNCTION: AcpiHwReadMultiple * * PARAMETERS: Value - Where the register value is returned * RegisterA - First ACPI register (required) * RegisterB - Second ACPI register (optional) * * RETURN: Status * * DESCRIPTION: Read from the specified two-part ACPI register (such as PM1 A/B) * ******************************************************************************/ static ACPI_STATUS AcpiHwReadMultiple ( UINT32 *Value, ACPI_GENERIC_ADDRESS *RegisterA, ACPI_GENERIC_ADDRESS *RegisterB) { UINT32 ValueA = 0; UINT32 ValueB = 0; ACPI_STATUS Status; /* The first register is always required */ Status = AcpiHwRead (&ValueA, RegisterA); if (ACPI_FAILURE (Status)) { return (Status); } /* Second register is optional */ if (RegisterB->Address) { Status = AcpiHwRead (&ValueB, RegisterB); if (ACPI_FAILURE (Status)) { return (Status); } } /* * OR the two return values together. No shifting or masking is necessary, * because of how the PM1 registers are defined in the ACPI specification: * * "Although the bits can be split between the two register blocks (each * register block has a unique pointer within the FADT), the bit positions * are maintained. The register block with unimplemented bits (that is, * those implemented in the other register block) always returns zeros, * and writes have no side effects" */ *Value = (ValueA | ValueB); return (AE_OK); } /****************************************************************************** * * FUNCTION: AcpiHwWriteMultiple * * PARAMETERS: Value - The value to write * RegisterA - First ACPI register (required) * RegisterB - Second ACPI register (optional) * * RETURN: Status * * DESCRIPTION: Write to the specified two-part ACPI register (such as PM1 A/B) * ******************************************************************************/ static ACPI_STATUS AcpiHwWriteMultiple ( UINT32 Value, ACPI_GENERIC_ADDRESS *RegisterA, ACPI_GENERIC_ADDRESS *RegisterB) { ACPI_STATUS Status; /* The first register is always required */ Status = AcpiHwWrite (Value, RegisterA); if (ACPI_FAILURE (Status)) { return (Status); } /* * Second register is optional * * No bit shifting or clearing is necessary, because of how the PM1 * registers are defined in the ACPI specification: * * "Although the bits can be split between the two register blocks (each * register block has a unique pointer within the FADT), the bit positions * are maintained. The register block with unimplemented bits (that is, * those implemented in the other register block) always returns zeros, * and writes have no side effects" */ if (RegisterB->Address) { Status = AcpiHwWrite (Value, RegisterB); } return (Status); } #endif /* !ACPI_REDUCED_HARDWARE */ src/acpica/source/components/hardware/hwsleep.c000066400000000000000000000354051231470457100221750ustar00rootroot00000000000000/****************************************************************************** * * Name: hwsleep.c - ACPI Hardware Sleep/Wake Support functions for the * original/legacy sleep/PM registers. * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #include "acpi.h" #include "accommon.h" #define _COMPONENT ACPI_HARDWARE ACPI_MODULE_NAME ("hwsleep") #if (!ACPI_REDUCED_HARDWARE) /* Entire module */ /******************************************************************************* * * FUNCTION: AcpiHwLegacySleep * * PARAMETERS: SleepState - Which sleep state to enter * * RETURN: Status * * DESCRIPTION: Enter a system sleep state via the legacy FADT PM registers * THIS FUNCTION MUST BE CALLED WITH INTERRUPTS DISABLED * ******************************************************************************/ ACPI_STATUS AcpiHwLegacySleep ( UINT8 SleepState) { ACPI_BIT_REGISTER_INFO *SleepTypeRegInfo; ACPI_BIT_REGISTER_INFO *SleepEnableRegInfo; UINT32 Pm1aControl; UINT32 Pm1bControl; UINT32 InValue; ACPI_STATUS Status; ACPI_FUNCTION_TRACE (HwLegacySleep); SleepTypeRegInfo = AcpiHwGetBitRegisterInfo (ACPI_BITREG_SLEEP_TYPE); SleepEnableRegInfo = AcpiHwGetBitRegisterInfo (ACPI_BITREG_SLEEP_ENABLE); /* Clear wake status */ Status = AcpiWriteBitRegister (ACPI_BITREG_WAKE_STATUS, ACPI_CLEAR_STATUS); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } /* Clear all fixed and general purpose status bits */ Status = AcpiHwClearAcpiStatus (); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } /* * 1) Disable/Clear all GPEs * 2) Enable all wakeup GPEs */ Status = AcpiHwDisableAllGpes (); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } AcpiGbl_SystemAwakeAndRunning = FALSE; Status = AcpiHwEnableAllWakeupGpes (); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } /* Get current value of PM1A control */ Status = AcpiHwRegisterRead (ACPI_REGISTER_PM1_CONTROL, &Pm1aControl); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } ACPI_DEBUG_PRINT ((ACPI_DB_INIT, "Entering sleep state [S%u]\n", SleepState)); /* Clear the SLP_EN and SLP_TYP fields */ Pm1aControl &= ~(SleepTypeRegInfo->AccessBitMask | SleepEnableRegInfo->AccessBitMask); Pm1bControl = Pm1aControl; /* Insert the SLP_TYP bits */ Pm1aControl |= (AcpiGbl_SleepTypeA << SleepTypeRegInfo->BitPosition); Pm1bControl |= (AcpiGbl_SleepTypeB << SleepTypeRegInfo->BitPosition); /* * We split the writes of SLP_TYP and SLP_EN to workaround * poorly implemented hardware. */ /* Write #1: write the SLP_TYP data to the PM1 Control registers */ Status = AcpiHwWritePm1Control (Pm1aControl, Pm1bControl); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } /* Insert the sleep enable (SLP_EN) bit */ Pm1aControl |= SleepEnableRegInfo->AccessBitMask; Pm1bControl |= SleepEnableRegInfo->AccessBitMask; /* Flush caches, as per ACPI specification */ ACPI_FLUSH_CPU_CACHE (); /* Write #2: Write both SLP_TYP + SLP_EN */ Status = AcpiHwWritePm1Control (Pm1aControl, Pm1bControl); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } if (SleepState > ACPI_STATE_S3) { /* * We wanted to sleep > S3, but it didn't happen (by virtue of the * fact that we are still executing!) * * Wait ten seconds, then try again. This is to get S4/S5 to work on * all machines. * * We wait so long to allow chipsets that poll this reg very slowly * to still read the right value. Ideally, this block would go * away entirely. */ AcpiOsStall (10 * ACPI_USEC_PER_SEC); Status = AcpiHwRegisterWrite (ACPI_REGISTER_PM1_CONTROL, SleepEnableRegInfo->AccessBitMask); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } } /* Wait for transition back to Working State */ do { Status = AcpiReadBitRegister (ACPI_BITREG_WAKE_STATUS, &InValue); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } } while (!InValue); return_ACPI_STATUS (AE_OK); } /******************************************************************************* * * FUNCTION: AcpiHwLegacyWakePrep * * PARAMETERS: SleepState - Which sleep state we just exited * * RETURN: Status * * DESCRIPTION: Perform the first state of OS-independent ACPI cleanup after a * sleep. * Called with interrupts ENABLED. * ******************************************************************************/ ACPI_STATUS AcpiHwLegacyWakePrep ( UINT8 SleepState) { ACPI_STATUS Status; ACPI_BIT_REGISTER_INFO *SleepTypeRegInfo; ACPI_BIT_REGISTER_INFO *SleepEnableRegInfo; UINT32 Pm1aControl; UINT32 Pm1bControl; ACPI_FUNCTION_TRACE (HwLegacyWakePrep); /* * Set SLP_TYPE and SLP_EN to state S0. * This is unclear from the ACPI Spec, but it is required * by some machines. */ Status = AcpiGetSleepTypeData (ACPI_STATE_S0, &AcpiGbl_SleepTypeA, &AcpiGbl_SleepTypeB); if (ACPI_SUCCESS (Status)) { SleepTypeRegInfo = AcpiHwGetBitRegisterInfo (ACPI_BITREG_SLEEP_TYPE); SleepEnableRegInfo = AcpiHwGetBitRegisterInfo (ACPI_BITREG_SLEEP_ENABLE); /* Get current value of PM1A control */ Status = AcpiHwRegisterRead (ACPI_REGISTER_PM1_CONTROL, &Pm1aControl); if (ACPI_SUCCESS (Status)) { /* Clear the SLP_EN and SLP_TYP fields */ Pm1aControl &= ~(SleepTypeRegInfo->AccessBitMask | SleepEnableRegInfo->AccessBitMask); Pm1bControl = Pm1aControl; /* Insert the SLP_TYP bits */ Pm1aControl |= (AcpiGbl_SleepTypeA << SleepTypeRegInfo->BitPosition); Pm1bControl |= (AcpiGbl_SleepTypeB << SleepTypeRegInfo->BitPosition); /* Write the control registers and ignore any errors */ (void) AcpiHwWritePm1Control (Pm1aControl, Pm1bControl); } } return_ACPI_STATUS (Status); } /******************************************************************************* * * FUNCTION: AcpiHwLegacyWake * * PARAMETERS: SleepState - Which sleep state we just exited * * RETURN: Status * * DESCRIPTION: Perform OS-independent ACPI cleanup after a sleep * Called with interrupts ENABLED. * ******************************************************************************/ ACPI_STATUS AcpiHwLegacyWake ( UINT8 SleepState) { ACPI_STATUS Status; ACPI_FUNCTION_TRACE (HwLegacyWake); /* Ensure EnterSleepStatePrep -> EnterSleepState ordering */ AcpiGbl_SleepTypeA = ACPI_SLEEP_TYPE_INVALID; AcpiHwExecuteSleepMethod (METHOD_PATHNAME__SST, ACPI_SST_WAKING); /* * GPEs must be enabled before _WAK is called as GPEs * might get fired there * * Restore the GPEs: * 1) Disable/Clear all GPEs * 2) Enable all runtime GPEs */ Status = AcpiHwDisableAllGpes (); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } Status = AcpiHwEnableAllRuntimeGpes (); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } /* * Now we can execute _WAK, etc. Some machines require that the GPEs * are enabled before the wake methods are executed. */ AcpiHwExecuteSleepMethod (METHOD_PATHNAME__WAK, SleepState); /* * Some BIOS code assumes that WAK_STS will be cleared on resume * and use it to determine whether the system is rebooting or * resuming. Clear WAK_STS for compatibility. */ (void) AcpiWriteBitRegister (ACPI_BITREG_WAKE_STATUS, ACPI_CLEAR_STATUS); AcpiGbl_SystemAwakeAndRunning = TRUE; /* Enable power button */ (void) AcpiWriteBitRegister( AcpiGbl_FixedEventInfo[ACPI_EVENT_POWER_BUTTON].EnableRegisterId, ACPI_ENABLE_EVENT); (void) AcpiWriteBitRegister( AcpiGbl_FixedEventInfo[ACPI_EVENT_POWER_BUTTON].StatusRegisterId, ACPI_CLEAR_STATUS); AcpiHwExecuteSleepMethod (METHOD_PATHNAME__SST, ACPI_SST_WORKING); return_ACPI_STATUS (Status); } #endif /* !ACPI_REDUCED_HARDWARE */ src/acpica/source/components/hardware/hwvalid.c000066400000000000000000000367341231470457100221720ustar00rootroot00000000000000/****************************************************************************** * * Module Name: hwvalid - I/O request validation * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #define __HWVALID_C__ #include "acpi.h" #include "accommon.h" #define _COMPONENT ACPI_HARDWARE ACPI_MODULE_NAME ("hwvalid") /* Local prototypes */ static ACPI_STATUS AcpiHwValidateIoRequest ( ACPI_IO_ADDRESS Address, UINT32 BitWidth); /* * Protected I/O ports. Some ports are always illegal, and some are * conditionally illegal. This table must remain ordered by port address. * * The table is used to implement the Microsoft port access rules that * first appeared in Windows XP. Some ports are always illegal, and some * ports are only illegal if the BIOS calls _OSI with a WinXP string or * later (meaning that the BIOS itelf is post-XP.) * * This provides ACPICA with the desired port protections and * Microsoft compatibility. * * Description of port entries: * DMA: DMA controller * PIC0: Programmable Interrupt Controller (8259A) * PIT1: System Timer 1 * PIT2: System Timer 2 failsafe * RTC: Real-time clock * CMOS: Extended CMOS * DMA1: DMA 1 page registers * DMA1L: DMA 1 Ch 0 low page * DMA2: DMA 2 page registers * DMA2L: DMA 2 low page refresh * ARBC: Arbitration control * SETUP: Reserved system board setup * POS: POS channel select * PIC1: Cascaded PIC * IDMA: ISA DMA * ELCR: PIC edge/level registers * PCI: PCI configuration space */ static const ACPI_PORT_INFO AcpiProtectedPorts[] = { {"DMA", 0x0000, 0x000F, ACPI_OSI_WIN_XP}, {"PIC0", 0x0020, 0x0021, ACPI_ALWAYS_ILLEGAL}, {"PIT1", 0x0040, 0x0043, ACPI_OSI_WIN_XP}, {"PIT2", 0x0048, 0x004B, ACPI_OSI_WIN_XP}, {"RTC", 0x0070, 0x0071, ACPI_OSI_WIN_XP}, {"CMOS", 0x0074, 0x0076, ACPI_OSI_WIN_XP}, {"DMA1", 0x0081, 0x0083, ACPI_OSI_WIN_XP}, {"DMA1L", 0x0087, 0x0087, ACPI_OSI_WIN_XP}, {"DMA2", 0x0089, 0x008B, ACPI_OSI_WIN_XP}, {"DMA2L", 0x008F, 0x008F, ACPI_OSI_WIN_XP}, {"ARBC", 0x0090, 0x0091, ACPI_OSI_WIN_XP}, {"SETUP", 0x0093, 0x0094, ACPI_OSI_WIN_XP}, {"POS", 0x0096, 0x0097, ACPI_OSI_WIN_XP}, {"PIC1", 0x00A0, 0x00A1, ACPI_ALWAYS_ILLEGAL}, {"IDMA", 0x00C0, 0x00DF, ACPI_OSI_WIN_XP}, {"ELCR", 0x04D0, 0x04D1, ACPI_ALWAYS_ILLEGAL}, {"PCI", 0x0CF8, 0x0CFF, ACPI_OSI_WIN_XP} }; #define ACPI_PORT_INFO_ENTRIES ACPI_ARRAY_LENGTH (AcpiProtectedPorts) /****************************************************************************** * * FUNCTION: AcpiHwValidateIoRequest * * PARAMETERS: Address Address of I/O port/register * BitWidth Number of bits (8,16,32) * * RETURN: Status * * DESCRIPTION: Validates an I/O request (address/length). Certain ports are * always illegal and some ports are only illegal depending on * the requests the BIOS AML code makes to the predefined * _OSI method. * ******************************************************************************/ static ACPI_STATUS AcpiHwValidateIoRequest ( ACPI_IO_ADDRESS Address, UINT32 BitWidth) { UINT32 i; UINT32 ByteWidth; ACPI_IO_ADDRESS LastAddress; const ACPI_PORT_INFO *PortInfo; ACPI_FUNCTION_TRACE (HwValidateIoRequest); /* Supported widths are 8/16/32 */ if ((BitWidth != 8) && (BitWidth != 16) && (BitWidth != 32)) { ACPI_ERROR ((AE_INFO, "Bad BitWidth parameter: %8.8X", BitWidth)); return (AE_BAD_PARAMETER); } PortInfo = AcpiProtectedPorts; ByteWidth = ACPI_DIV_8 (BitWidth); LastAddress = Address + ByteWidth - 1; ACPI_DEBUG_PRINT ((ACPI_DB_IO, "Address %p LastAddress %p Length %X", ACPI_CAST_PTR (void, Address), ACPI_CAST_PTR (void, LastAddress), ByteWidth)); /* Maximum 16-bit address in I/O space */ if (LastAddress > ACPI_UINT16_MAX) { ACPI_ERROR ((AE_INFO, "Illegal I/O port address/length above 64K: %p/0x%X", ACPI_CAST_PTR (void, Address), ByteWidth)); return_ACPI_STATUS (AE_LIMIT); } /* Exit if requested address is not within the protected port table */ if (Address > AcpiProtectedPorts[ACPI_PORT_INFO_ENTRIES - 1].End) { return_ACPI_STATUS (AE_OK); } /* Check request against the list of protected I/O ports */ for (i = 0; i < ACPI_PORT_INFO_ENTRIES; i++, PortInfo++) { /* * Check if the requested address range will write to a reserved * port. Four cases to consider: * * 1) Address range is contained completely in the port address range * 2) Address range overlaps port range at the port range start * 3) Address range overlaps port range at the port range end * 4) Address range completely encompasses the port range */ if ((Address <= PortInfo->End) && (LastAddress >= PortInfo->Start)) { /* Port illegality may depend on the _OSI calls made by the BIOS */ if (AcpiGbl_OsiData >= PortInfo->OsiDependency) { ACPI_DEBUG_PRINT ((ACPI_DB_IO, "Denied AML access to port 0x%p/%X (%s 0x%.4X-0x%.4X)", ACPI_CAST_PTR (void, Address), ByteWidth, PortInfo->Name, PortInfo->Start, PortInfo->End)); return_ACPI_STATUS (AE_AML_ILLEGAL_ADDRESS); } } /* Finished if address range ends before the end of this port */ if (LastAddress <= PortInfo->End) { break; } } return_ACPI_STATUS (AE_OK); } /****************************************************************************** * * FUNCTION: AcpiHwReadPort * * PARAMETERS: Address Address of I/O port/register to read * Value Where value is placed * Width Number of bits * * RETURN: Status and value read from port * * DESCRIPTION: Read data from an I/O port or register. This is a front-end * to AcpiOsReadPort that performs validation on both the port * address and the length. * *****************************************************************************/ ACPI_STATUS AcpiHwReadPort ( ACPI_IO_ADDRESS Address, UINT32 *Value, UINT32 Width) { ACPI_STATUS Status; UINT32 OneByte; UINT32 i; /* Truncate address to 16 bits if requested */ if (AcpiGbl_TruncateIoAddresses) { Address &= ACPI_UINT16_MAX; } /* Validate the entire request and perform the I/O */ Status = AcpiHwValidateIoRequest (Address, Width); if (ACPI_SUCCESS (Status)) { Status = AcpiOsReadPort (Address, Value, Width); return (Status); } if (Status != AE_AML_ILLEGAL_ADDRESS) { return (Status); } /* * There has been a protection violation within the request. Fall * back to byte granularity port I/O and ignore the failing bytes. * This provides Windows compatibility. */ for (i = 0, *Value = 0; i < Width; i += 8) { /* Validate and read one byte */ if (AcpiHwValidateIoRequest (Address, 8) == AE_OK) { Status = AcpiOsReadPort (Address, &OneByte, 8); if (ACPI_FAILURE (Status)) { return (Status); } *Value |= (OneByte << i); } Address++; } return (AE_OK); } /****************************************************************************** * * FUNCTION: AcpiHwWritePort * * PARAMETERS: Address Address of I/O port/register to write * Value Value to write * Width Number of bits * * RETURN: Status * * DESCRIPTION: Write data to an I/O port or register. This is a front-end * to AcpiOsWritePort that performs validation on both the port * address and the length. * *****************************************************************************/ ACPI_STATUS AcpiHwWritePort ( ACPI_IO_ADDRESS Address, UINT32 Value, UINT32 Width) { ACPI_STATUS Status; UINT32 i; /* Truncate address to 16 bits if requested */ if (AcpiGbl_TruncateIoAddresses) { Address &= ACPI_UINT16_MAX; } /* Validate the entire request and perform the I/O */ Status = AcpiHwValidateIoRequest (Address, Width); if (ACPI_SUCCESS (Status)) { Status = AcpiOsWritePort (Address, Value, Width); return (Status); } if (Status != AE_AML_ILLEGAL_ADDRESS) { return (Status); } /* * There has been a protection violation within the request. Fall * back to byte granularity port I/O and ignore the failing bytes. * This provides Windows compatibility. */ for (i = 0; i < Width; i += 8) { /* Validate and write one byte */ if (AcpiHwValidateIoRequest (Address, 8) == AE_OK) { Status = AcpiOsWritePort (Address, (Value >> i) & 0xFF, 8); if (ACPI_FAILURE (Status)) { return (Status); } } Address++; } return (AE_OK); } src/acpica/source/components/hardware/hwxface.c000066400000000000000000000564661231470457100221650ustar00rootroot00000000000000/****************************************************************************** * * Module Name: hwxface - Public ACPICA hardware interfaces * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #define EXPORT_ACPI_INTERFACES #include "acpi.h" #include "accommon.h" #include "acnamesp.h" #define _COMPONENT ACPI_HARDWARE ACPI_MODULE_NAME ("hwxface") /****************************************************************************** * * FUNCTION: AcpiReset * * PARAMETERS: None * * RETURN: Status * * DESCRIPTION: Set reset register in memory or IO space. Note: Does not * support reset register in PCI config space, this must be * handled separately. * ******************************************************************************/ ACPI_STATUS AcpiReset ( void) { ACPI_GENERIC_ADDRESS *ResetReg; ACPI_STATUS Status; ACPI_FUNCTION_TRACE (AcpiReset); ResetReg = &AcpiGbl_FADT.ResetRegister; /* Check if the reset register is supported */ if (!(AcpiGbl_FADT.Flags & ACPI_FADT_RESET_REGISTER) || !ResetReg->Address) { return_ACPI_STATUS (AE_NOT_EXIST); } if (ResetReg->SpaceId == ACPI_ADR_SPACE_SYSTEM_IO) { /* * For I/O space, write directly to the OSL. This bypasses the port * validation mechanism, which may block a valid write to the reset * register. * * NOTE: * The ACPI spec requires the reset register width to be 8, so we * hardcode it here and ignore the FADT value. This maintains * compatibility with other ACPI implementations that have allowed * BIOS code with bad register width values to go unnoticed. */ Status = AcpiOsWritePort ((ACPI_IO_ADDRESS) ResetReg->Address, AcpiGbl_FADT.ResetValue, ACPI_RESET_REGISTER_WIDTH); } else { /* Write the reset value to the reset register */ Status = AcpiHwWrite (AcpiGbl_FADT.ResetValue, ResetReg); } return_ACPI_STATUS (Status); } ACPI_EXPORT_SYMBOL (AcpiReset) /****************************************************************************** * * FUNCTION: AcpiRead * * PARAMETERS: Value - Where the value is returned * Reg - GAS register structure * * RETURN: Status * * DESCRIPTION: Read from either memory or IO space. * * LIMITATIONS: * BitWidth must be exactly 8, 16, 32, or 64. * SpaceID must be SystemMemory or SystemIO. * BitOffset and AccessWidth are currently ignored, as there has * not been a need to implement these. * ******************************************************************************/ ACPI_STATUS AcpiRead ( UINT64 *ReturnValue, ACPI_GENERIC_ADDRESS *Reg) { UINT32 ValueLo; UINT32 ValueHi; UINT32 Width; UINT64 Address; ACPI_STATUS Status; ACPI_FUNCTION_NAME (AcpiRead); if (!ReturnValue) { return (AE_BAD_PARAMETER); } /* Validate contents of the GAS register. Allow 64-bit transfers */ Status = AcpiHwValidateRegister (Reg, 64, &Address); if (ACPI_FAILURE (Status)) { return (Status); } /* * Two address spaces supported: Memory or I/O. PCI_Config is * not supported here because the GAS structure is insufficient */ if (Reg->SpaceId == ACPI_ADR_SPACE_SYSTEM_MEMORY) { Status = AcpiOsReadMemory ((ACPI_PHYSICAL_ADDRESS) Address, ReturnValue, Reg->BitWidth); if (ACPI_FAILURE (Status)) { return (Status); } } else /* ACPI_ADR_SPACE_SYSTEM_IO, validated earlier */ { ValueLo = 0; ValueHi = 0; Width = Reg->BitWidth; if (Width == 64) { Width = 32; /* Break into two 32-bit transfers */ } Status = AcpiHwReadPort ((ACPI_IO_ADDRESS) Address, &ValueLo, Width); if (ACPI_FAILURE (Status)) { return (Status); } if (Reg->BitWidth == 64) { /* Read the top 32 bits */ Status = AcpiHwReadPort ((ACPI_IO_ADDRESS) (Address + 4), &ValueHi, 32); if (ACPI_FAILURE (Status)) { return (Status); } } /* Set the return value only if status is AE_OK */ *ReturnValue = (ValueLo | ((UINT64) ValueHi << 32)); } ACPI_DEBUG_PRINT ((ACPI_DB_IO, "Read: %8.8X%8.8X width %2d from %8.8X%8.8X (%s)\n", ACPI_FORMAT_UINT64 (*ReturnValue), Reg->BitWidth, ACPI_FORMAT_UINT64 (Address), AcpiUtGetRegionName (Reg->SpaceId))); return (AE_OK); } ACPI_EXPORT_SYMBOL (AcpiRead) /****************************************************************************** * * FUNCTION: AcpiWrite * * PARAMETERS: Value - Value to be written * Reg - GAS register structure * * RETURN: Status * * DESCRIPTION: Write to either memory or IO space. * ******************************************************************************/ ACPI_STATUS AcpiWrite ( UINT64 Value, ACPI_GENERIC_ADDRESS *Reg) { UINT32 Width; UINT64 Address; ACPI_STATUS Status; ACPI_FUNCTION_NAME (AcpiWrite); /* Validate contents of the GAS register. Allow 64-bit transfers */ Status = AcpiHwValidateRegister (Reg, 64, &Address); if (ACPI_FAILURE (Status)) { return (Status); } /* * Two address spaces supported: Memory or IO. PCI_Config is * not supported here because the GAS structure is insufficient */ if (Reg->SpaceId == ACPI_ADR_SPACE_SYSTEM_MEMORY) { Status = AcpiOsWriteMemory ((ACPI_PHYSICAL_ADDRESS) Address, Value, Reg->BitWidth); if (ACPI_FAILURE (Status)) { return (Status); } } else /* ACPI_ADR_SPACE_SYSTEM_IO, validated earlier */ { Width = Reg->BitWidth; if (Width == 64) { Width = 32; /* Break into two 32-bit transfers */ } Status = AcpiHwWritePort ((ACPI_IO_ADDRESS) Address, ACPI_LODWORD (Value), Width); if (ACPI_FAILURE (Status)) { return (Status); } if (Reg->BitWidth == 64) { Status = AcpiHwWritePort ((ACPI_IO_ADDRESS) (Address + 4), ACPI_HIDWORD (Value), 32); if (ACPI_FAILURE (Status)) { return (Status); } } } ACPI_DEBUG_PRINT ((ACPI_DB_IO, "Wrote: %8.8X%8.8X width %2d to %8.8X%8.8X (%s)\n", ACPI_FORMAT_UINT64 (Value), Reg->BitWidth, ACPI_FORMAT_UINT64 (Address), AcpiUtGetRegionName (Reg->SpaceId))); return (Status); } ACPI_EXPORT_SYMBOL (AcpiWrite) #if (!ACPI_REDUCED_HARDWARE) /******************************************************************************* * * FUNCTION: AcpiReadBitRegister * * PARAMETERS: RegisterId - ID of ACPI Bit Register to access * ReturnValue - Value that was read from the register, * normalized to bit position zero. * * RETURN: Status and the value read from the specified Register. Value * returned is normalized to bit0 (is shifted all the way right) * * DESCRIPTION: ACPI BitRegister read function. Does not acquire the HW lock. * * SUPPORTS: Bit fields in PM1 Status, PM1 Enable, PM1 Control, and * PM2 Control. * * Note: The hardware lock is not required when reading the ACPI bit registers * since almost all of them are single bit and it does not matter that * the parent hardware register can be split across two physical * registers. The only multi-bit field is SLP_TYP in the PM1 control * register, but this field does not cross an 8-bit boundary (nor does * it make much sense to actually read this field.) * ******************************************************************************/ ACPI_STATUS AcpiReadBitRegister ( UINT32 RegisterId, UINT32 *ReturnValue) { ACPI_BIT_REGISTER_INFO *BitRegInfo; UINT32 RegisterValue; UINT32 Value; ACPI_STATUS Status; ACPI_FUNCTION_TRACE_U32 (AcpiReadBitRegister, RegisterId); /* Get the info structure corresponding to the requested ACPI Register */ BitRegInfo = AcpiHwGetBitRegisterInfo (RegisterId); if (!BitRegInfo) { return_ACPI_STATUS (AE_BAD_PARAMETER); } /* Read the entire parent register */ Status = AcpiHwRegisterRead (BitRegInfo->ParentRegister, &RegisterValue); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } /* Normalize the value that was read, mask off other bits */ Value = ((RegisterValue & BitRegInfo->AccessBitMask) >> BitRegInfo->BitPosition); ACPI_DEBUG_PRINT ((ACPI_DB_IO, "BitReg %X, ParentReg %X, Actual %8.8X, ReturnValue %8.8X\n", RegisterId, BitRegInfo->ParentRegister, RegisterValue, Value)); *ReturnValue = Value; return_ACPI_STATUS (AE_OK); } ACPI_EXPORT_SYMBOL (AcpiReadBitRegister) /******************************************************************************* * * FUNCTION: AcpiWriteBitRegister * * PARAMETERS: RegisterId - ID of ACPI Bit Register to access * Value - Value to write to the register, in bit * position zero. The bit is automatically * shifted to the correct position. * * RETURN: Status * * DESCRIPTION: ACPI Bit Register write function. Acquires the hardware lock * since most operations require a read/modify/write sequence. * * SUPPORTS: Bit fields in PM1 Status, PM1 Enable, PM1 Control, and * PM2 Control. * * Note that at this level, the fact that there may be actually two * hardware registers (A and B - and B may not exist) is abstracted. * ******************************************************************************/ ACPI_STATUS AcpiWriteBitRegister ( UINT32 RegisterId, UINT32 Value) { ACPI_BIT_REGISTER_INFO *BitRegInfo; ACPI_CPU_FLAGS LockFlags; UINT32 RegisterValue; ACPI_STATUS Status = AE_OK; ACPI_FUNCTION_TRACE_U32 (AcpiWriteBitRegister, RegisterId); /* Get the info structure corresponding to the requested ACPI Register */ BitRegInfo = AcpiHwGetBitRegisterInfo (RegisterId); if (!BitRegInfo) { return_ACPI_STATUS (AE_BAD_PARAMETER); } LockFlags = AcpiOsAcquireLock (AcpiGbl_HardwareLock); /* * At this point, we know that the parent register is one of the * following: PM1 Status, PM1 Enable, PM1 Control, or PM2 Control */ if (BitRegInfo->ParentRegister != ACPI_REGISTER_PM1_STATUS) { /* * 1) Case for PM1 Enable, PM1 Control, and PM2 Control * * Perform a register read to preserve the bits that we are not * interested in */ Status = AcpiHwRegisterRead (BitRegInfo->ParentRegister, &RegisterValue); if (ACPI_FAILURE (Status)) { goto UnlockAndExit; } /* * Insert the input bit into the value that was just read * and write the register */ ACPI_REGISTER_INSERT_VALUE (RegisterValue, BitRegInfo->BitPosition, BitRegInfo->AccessBitMask, Value); Status = AcpiHwRegisterWrite (BitRegInfo->ParentRegister, RegisterValue); } else { /* * 2) Case for PM1 Status * * The Status register is different from the rest. Clear an event * by writing 1, writing 0 has no effect. So, the only relevant * information is the single bit we're interested in, all others * should be written as 0 so they will be left unchanged. */ RegisterValue = ACPI_REGISTER_PREPARE_BITS (Value, BitRegInfo->BitPosition, BitRegInfo->AccessBitMask); /* No need to write the register if value is all zeros */ if (RegisterValue) { Status = AcpiHwRegisterWrite (ACPI_REGISTER_PM1_STATUS, RegisterValue); } } ACPI_DEBUG_PRINT ((ACPI_DB_IO, "BitReg %X, ParentReg %X, Value %8.8X, Actual %8.8X\n", RegisterId, BitRegInfo->ParentRegister, Value, RegisterValue)); UnlockAndExit: AcpiOsReleaseLock (AcpiGbl_HardwareLock, LockFlags); return_ACPI_STATUS (Status); } ACPI_EXPORT_SYMBOL (AcpiWriteBitRegister) #endif /* !ACPI_REDUCED_HARDWARE */ /******************************************************************************* * * FUNCTION: AcpiGetSleepTypeData * * PARAMETERS: SleepState - Numeric sleep state * *SleepTypeA - Where SLP_TYPa is returned * *SleepTypeB - Where SLP_TYPb is returned * * RETURN: Status * * DESCRIPTION: Obtain the SLP_TYPa and SLP_TYPb values for the requested * sleep state via the appropriate \_Sx object. * * The sleep state package returned from the corresponding \_Sx_ object * must contain at least one integer. * * March 2005: * Added support for a package that contains two integers. This * goes against the ACPI specification which defines this object as a * package with one encoded DWORD integer. However, existing practice * by many BIOS vendors is to return a package with 2 or more integer * elements, at least one per sleep type (A/B). * * January 2013: * Therefore, we must be prepared to accept a package with either a * single integer or multiple integers. * * The single integer DWORD format is as follows: * BYTE 0 - Value for the PM1A SLP_TYP register * BYTE 1 - Value for the PM1B SLP_TYP register * BYTE 2-3 - Reserved * * The dual integer format is as follows: * Integer 0 - Value for the PM1A SLP_TYP register * Integer 1 - Value for the PM1A SLP_TYP register * ******************************************************************************/ ACPI_STATUS AcpiGetSleepTypeData ( UINT8 SleepState, UINT8 *SleepTypeA, UINT8 *SleepTypeB) { ACPI_STATUS Status; ACPI_EVALUATE_INFO *Info; ACPI_OPERAND_OBJECT **Elements; ACPI_FUNCTION_TRACE (AcpiGetSleepTypeData); /* Validate parameters */ if ((SleepState > ACPI_S_STATES_MAX) || !SleepTypeA || !SleepTypeB) { return_ACPI_STATUS (AE_BAD_PARAMETER); } /* Allocate the evaluation information block */ Info = ACPI_ALLOCATE_ZEROED (sizeof (ACPI_EVALUATE_INFO)); if (!Info) { return_ACPI_STATUS (AE_NO_MEMORY); } /* * Evaluate the \_Sx namespace object containing the register values * for this state */ Info->RelativePathname = ACPI_CAST_PTR ( char, AcpiGbl_SleepStateNames[SleepState]); Status = AcpiNsEvaluate (Info); if (ACPI_FAILURE (Status)) { goto Cleanup; } /* Must have a return object */ if (!Info->ReturnObject) { ACPI_ERROR ((AE_INFO, "No Sleep State object returned from [%s]", Info->RelativePathname)); Status = AE_AML_NO_RETURN_VALUE; goto Cleanup; } /* Return object must be of type Package */ if (Info->ReturnObject->Common.Type != ACPI_TYPE_PACKAGE) { ACPI_ERROR ((AE_INFO, "Sleep State return object is not a Package")); Status = AE_AML_OPERAND_TYPE; goto Cleanup1; } /* * Any warnings about the package length or the object types have * already been issued by the predefined name module -- there is no * need to repeat them here. */ Elements = Info->ReturnObject->Package.Elements; switch (Info->ReturnObject->Package.Count) { case 0: Status = AE_AML_PACKAGE_LIMIT; break; case 1: if (Elements[0]->Common.Type != ACPI_TYPE_INTEGER) { Status = AE_AML_OPERAND_TYPE; break; } /* A valid _Sx_ package with one integer */ *SleepTypeA = (UINT8) Elements[0]->Integer.Value; *SleepTypeB = (UINT8) (Elements[0]->Integer.Value >> 8); break; case 2: default: if ((Elements[0]->Common.Type != ACPI_TYPE_INTEGER) || (Elements[1]->Common.Type != ACPI_TYPE_INTEGER)) { Status = AE_AML_OPERAND_TYPE; break; } /* A valid _Sx_ package with two integers */ *SleepTypeA = (UINT8) Elements[0]->Integer.Value; *SleepTypeB = (UINT8) Elements[1]->Integer.Value; break; } Cleanup1: AcpiUtRemoveReference (Info->ReturnObject); Cleanup: if (ACPI_FAILURE (Status)) { ACPI_EXCEPTION ((AE_INFO, Status, "While evaluating Sleep State [%s]", Info->RelativePathname)); } ACPI_FREE (Info); return_ACPI_STATUS (Status); } ACPI_EXPORT_SYMBOL (AcpiGetSleepTypeData) src/acpica/source/components/hardware/hwxfsleep.c000066400000000000000000000434731231470457100225370ustar00rootroot00000000000000/****************************************************************************** * * Name: hwxfsleep.c - ACPI Hardware Sleep/Wake External Interfaces * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #define EXPORT_ACPI_INTERFACES #include "acpi.h" #include "accommon.h" #define _COMPONENT ACPI_HARDWARE ACPI_MODULE_NAME ("hwxfsleep") /* Local prototypes */ static ACPI_STATUS AcpiHwSleepDispatch ( UINT8 SleepState, UINT32 FunctionId); /* * Dispatch table used to efficiently branch to the various sleep * functions. */ #define ACPI_SLEEP_FUNCTION_ID 0 #define ACPI_WAKE_PREP_FUNCTION_ID 1 #define ACPI_WAKE_FUNCTION_ID 2 /* Legacy functions are optional, based upon ACPI_REDUCED_HARDWARE */ static ACPI_SLEEP_FUNCTIONS AcpiSleepDispatch[] = { {ACPI_HW_OPTIONAL_FUNCTION (AcpiHwLegacySleep), AcpiHwExtendedSleep}, {ACPI_HW_OPTIONAL_FUNCTION (AcpiHwLegacyWakePrep), AcpiHwExtendedWakePrep}, {ACPI_HW_OPTIONAL_FUNCTION (AcpiHwLegacyWake), AcpiHwExtendedWake} }; /* * These functions are removed for the ACPI_REDUCED_HARDWARE case: * AcpiSetFirmwareWakingVector * AcpiSetFirmwareWakingVector64 * AcpiEnterSleepStateS4bios */ #if (!ACPI_REDUCED_HARDWARE) /******************************************************************************* * * FUNCTION: AcpiSetFirmwareWakingVector * * PARAMETERS: PhysicalAddress - 32-bit physical address of ACPI real mode * entry point. * * RETURN: Status * * DESCRIPTION: Sets the 32-bit FirmwareWakingVector field of the FACS * ******************************************************************************/ ACPI_STATUS AcpiSetFirmwareWakingVector ( UINT32 PhysicalAddress) { ACPI_FUNCTION_TRACE (AcpiSetFirmwareWakingVector); /* * According to the ACPI specification 2.0c and later, the 64-bit * waking vector should be cleared and the 32-bit waking vector should * be used, unless we want the wake-up code to be called by the BIOS in * Protected Mode. Some systems (for example HP dv5-1004nr) are known * to fail to resume if the 64-bit vector is used. */ /* Set the 32-bit vector */ AcpiGbl_FACS->FirmwareWakingVector = PhysicalAddress; /* Clear the 64-bit vector if it exists */ if ((AcpiGbl_FACS->Length > 32) && (AcpiGbl_FACS->Version >= 1)) { AcpiGbl_FACS->XFirmwareWakingVector = 0; } return_ACPI_STATUS (AE_OK); } ACPI_EXPORT_SYMBOL (AcpiSetFirmwareWakingVector) #if ACPI_MACHINE_WIDTH == 64 /******************************************************************************* * * FUNCTION: AcpiSetFirmwareWakingVector64 * * PARAMETERS: PhysicalAddress - 64-bit physical address of ACPI protected * mode entry point. * * RETURN: Status * * DESCRIPTION: Sets the 64-bit X_FirmwareWakingVector field of the FACS, if * it exists in the table. This function is intended for use with * 64-bit host operating systems. * ******************************************************************************/ ACPI_STATUS AcpiSetFirmwareWakingVector64 ( UINT64 PhysicalAddress) { ACPI_FUNCTION_TRACE (AcpiSetFirmwareWakingVector64); /* Determine if the 64-bit vector actually exists */ if ((AcpiGbl_FACS->Length <= 32) || (AcpiGbl_FACS->Version < 1)) { return_ACPI_STATUS (AE_NOT_EXIST); } /* Clear 32-bit vector, set the 64-bit X_ vector */ AcpiGbl_FACS->FirmwareWakingVector = 0; AcpiGbl_FACS->XFirmwareWakingVector = PhysicalAddress; return_ACPI_STATUS (AE_OK); } ACPI_EXPORT_SYMBOL (AcpiSetFirmwareWakingVector64) #endif /******************************************************************************* * * FUNCTION: AcpiEnterSleepStateS4bios * * PARAMETERS: None * * RETURN: Status * * DESCRIPTION: Perform a S4 bios request. * THIS FUNCTION MUST BE CALLED WITH INTERRUPTS DISABLED * ******************************************************************************/ ACPI_STATUS AcpiEnterSleepStateS4bios ( void) { UINT32 InValue; ACPI_STATUS Status; ACPI_FUNCTION_TRACE (AcpiEnterSleepStateS4bios); /* Clear the wake status bit (PM1) */ Status = AcpiWriteBitRegister (ACPI_BITREG_WAKE_STATUS, ACPI_CLEAR_STATUS); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } Status = AcpiHwClearAcpiStatus (); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } /* * 1) Disable/Clear all GPEs * 2) Enable all wakeup GPEs */ Status = AcpiHwDisableAllGpes (); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } AcpiGbl_SystemAwakeAndRunning = FALSE; Status = AcpiHwEnableAllWakeupGpes (); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } ACPI_FLUSH_CPU_CACHE (); Status = AcpiHwWritePort (AcpiGbl_FADT.SmiCommand, (UINT32) AcpiGbl_FADT.S4BiosRequest, 8); do { AcpiOsStall (ACPI_USEC_PER_MSEC); Status = AcpiReadBitRegister (ACPI_BITREG_WAKE_STATUS, &InValue); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } } while (!InValue); return_ACPI_STATUS (AE_OK); } ACPI_EXPORT_SYMBOL (AcpiEnterSleepStateS4bios) #endif /* !ACPI_REDUCED_HARDWARE */ /******************************************************************************* * * FUNCTION: AcpiHwSleepDispatch * * PARAMETERS: SleepState - Which sleep state to enter/exit * FunctionId - Sleep, WakePrep, or Wake * * RETURN: Status from the invoked sleep handling function. * * DESCRIPTION: Dispatch a sleep/wake request to the appropriate handling * function. * ******************************************************************************/ static ACPI_STATUS AcpiHwSleepDispatch ( UINT8 SleepState, UINT32 FunctionId) { ACPI_STATUS Status; ACPI_SLEEP_FUNCTIONS *SleepFunctions = &AcpiSleepDispatch[FunctionId]; #if (!ACPI_REDUCED_HARDWARE) /* * If the Hardware Reduced flag is set (from the FADT), we must * use the extended sleep registers (FADT). Note: As per the ACPI * specification, these extended registers are to be used for HW-reduced * platforms only. They are not general-purpose replacements for the * legacy PM register sleep support. */ if (AcpiGbl_ReducedHardware) { Status = SleepFunctions->ExtendedFunction (SleepState); } else { /* Legacy sleep */ Status = SleepFunctions->LegacyFunction (SleepState); } return (Status); #else /* * For the case where reduced-hardware-only code is being generated, * we know that only the extended sleep registers are available */ Status = SleepFunctions->ExtendedFunction (SleepState); return (Status); #endif /* !ACPI_REDUCED_HARDWARE */ } /******************************************************************************* * * FUNCTION: AcpiEnterSleepStatePrep * * PARAMETERS: SleepState - Which sleep state to enter * * RETURN: Status * * DESCRIPTION: Prepare to enter a system sleep state. * This function must execute with interrupts enabled. * We break sleeping into 2 stages so that OSPM can handle * various OS-specific tasks between the two steps. * ******************************************************************************/ ACPI_STATUS AcpiEnterSleepStatePrep ( UINT8 SleepState) { ACPI_STATUS Status; ACPI_OBJECT_LIST ArgList; ACPI_OBJECT Arg; UINT32 SstValue; ACPI_FUNCTION_TRACE (AcpiEnterSleepStatePrep); Status = AcpiGetSleepTypeData (SleepState, &AcpiGbl_SleepTypeA, &AcpiGbl_SleepTypeB); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } /* Execute the _PTS method (Prepare To Sleep) */ ArgList.Count = 1; ArgList.Pointer = &Arg; Arg.Type = ACPI_TYPE_INTEGER; Arg.Integer.Value = SleepState; Status = AcpiEvaluateObject (NULL, METHOD_PATHNAME__PTS, &ArgList, NULL); if (ACPI_FAILURE (Status) && Status != AE_NOT_FOUND) { return_ACPI_STATUS (Status); } /* Setup the argument to the _SST method (System STatus) */ switch (SleepState) { case ACPI_STATE_S0: SstValue = ACPI_SST_WORKING; break; case ACPI_STATE_S1: case ACPI_STATE_S2: case ACPI_STATE_S3: SstValue = ACPI_SST_SLEEPING; break; case ACPI_STATE_S4: SstValue = ACPI_SST_SLEEP_CONTEXT; break; default: SstValue = ACPI_SST_INDICATOR_OFF; /* Default is off */ break; } /* * Set the system indicators to show the desired sleep state. * _SST is an optional method (return no error if not found) */ AcpiHwExecuteSleepMethod (METHOD_PATHNAME__SST, SstValue); return_ACPI_STATUS (AE_OK); } ACPI_EXPORT_SYMBOL (AcpiEnterSleepStatePrep) /******************************************************************************* * * FUNCTION: AcpiEnterSleepState * * PARAMETERS: SleepState - Which sleep state to enter * * RETURN: Status * * DESCRIPTION: Enter a system sleep state * THIS FUNCTION MUST BE CALLED WITH INTERRUPTS DISABLED * ******************************************************************************/ ACPI_STATUS AcpiEnterSleepState ( UINT8 SleepState) { ACPI_STATUS Status; ACPI_FUNCTION_TRACE (AcpiEnterSleepState); if ((AcpiGbl_SleepTypeA > ACPI_SLEEP_TYPE_MAX) || (AcpiGbl_SleepTypeB > ACPI_SLEEP_TYPE_MAX)) { ACPI_ERROR ((AE_INFO, "Sleep values out of range: A=0x%X B=0x%X", AcpiGbl_SleepTypeA, AcpiGbl_SleepTypeB)); return_ACPI_STATUS (AE_AML_OPERAND_VALUE); } Status = AcpiHwSleepDispatch (SleepState, ACPI_SLEEP_FUNCTION_ID); return_ACPI_STATUS (Status); } ACPI_EXPORT_SYMBOL (AcpiEnterSleepState) /******************************************************************************* * * FUNCTION: AcpiLeaveSleepStatePrep * * PARAMETERS: SleepState - Which sleep state we are exiting * * RETURN: Status * * DESCRIPTION: Perform the first state of OS-independent ACPI cleanup after a * sleep. Called with interrupts DISABLED. * We break wake/resume into 2 stages so that OSPM can handle * various OS-specific tasks between the two steps. * ******************************************************************************/ ACPI_STATUS AcpiLeaveSleepStatePrep ( UINT8 SleepState) { ACPI_STATUS Status; ACPI_FUNCTION_TRACE (AcpiLeaveSleepStatePrep); Status = AcpiHwSleepDispatch (SleepState, ACPI_WAKE_PREP_FUNCTION_ID); return_ACPI_STATUS (Status); } ACPI_EXPORT_SYMBOL (AcpiLeaveSleepStatePrep) /******************************************************************************* * * FUNCTION: AcpiLeaveSleepState * * PARAMETERS: SleepState - Which sleep state we are exiting * * RETURN: Status * * DESCRIPTION: Perform OS-independent ACPI cleanup after a sleep * Called with interrupts ENABLED. * ******************************************************************************/ ACPI_STATUS AcpiLeaveSleepState ( UINT8 SleepState) { ACPI_STATUS Status; ACPI_FUNCTION_TRACE (AcpiLeaveSleepState); Status = AcpiHwSleepDispatch (SleepState, ACPI_WAKE_FUNCTION_ID); return_ACPI_STATUS (Status); } ACPI_EXPORT_SYMBOL (AcpiLeaveSleepState) src/acpica/source/components/namespace/000077500000000000000000000000001231470457100205125ustar00rootroot00000000000000src/acpica/source/components/namespace/nsaccess.c000066400000000000000000000643041231470457100224670ustar00rootroot00000000000000/******************************************************************************* * * Module Name: nsaccess - Top-level functions for accessing ACPI namespace * ******************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #define __NSACCESS_C__ #include "acpi.h" #include "accommon.h" #include "amlcode.h" #include "acnamesp.h" #include "acdispat.h" #define _COMPONENT ACPI_NAMESPACE ACPI_MODULE_NAME ("nsaccess") /******************************************************************************* * * FUNCTION: AcpiNsRootInitialize * * PARAMETERS: None * * RETURN: Status * * DESCRIPTION: Allocate and initialize the default root named objects * * MUTEX: Locks namespace for entire execution * ******************************************************************************/ ACPI_STATUS AcpiNsRootInitialize ( void) { ACPI_STATUS Status; const ACPI_PREDEFINED_NAMES *InitVal = NULL; ACPI_NAMESPACE_NODE *NewNode; ACPI_OPERAND_OBJECT *ObjDesc; ACPI_STRING Val = NULL; ACPI_FUNCTION_TRACE (NsRootInitialize); Status = AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } /* * The global root ptr is initially NULL, so a non-NULL value indicates * that AcpiNsRootInitialize() has already been called; just return. */ if (AcpiGbl_RootNode) { Status = AE_OK; goto UnlockAndExit; } /* * Tell the rest of the subsystem that the root is initialized * (This is OK because the namespace is locked) */ AcpiGbl_RootNode = &AcpiGbl_RootNodeStruct; /* Enter the pre-defined names in the name table */ ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Entering predefined entries into namespace\n")); for (InitVal = AcpiGbl_PreDefinedNames; InitVal->Name; InitVal++) { /* _OSI is optional for now, will be permanent later */ if (!ACPI_STRCMP (InitVal->Name, "_OSI") && !AcpiGbl_CreateOsiMethod) { continue; } Status = AcpiNsLookup (NULL, InitVal->Name, InitVal->Type, ACPI_IMODE_LOAD_PASS2, ACPI_NS_NO_UPSEARCH, NULL, &NewNode); if (ACPI_FAILURE (Status)) { ACPI_EXCEPTION ((AE_INFO, Status, "Could not create predefined name %s", InitVal->Name)); continue; } /* * Name entered successfully. If entry in PreDefinedNames[] specifies * an initial value, create the initial value. */ if (InitVal->Val) { Status = AcpiOsPredefinedOverride (InitVal, &Val); if (ACPI_FAILURE (Status)) { ACPI_ERROR ((AE_INFO, "Could not override predefined %s", InitVal->Name)); } if (!Val) { Val = InitVal->Val; } /* * Entry requests an initial value, allocate a * descriptor for it. */ ObjDesc = AcpiUtCreateInternalObject (InitVal->Type); if (!ObjDesc) { Status = AE_NO_MEMORY; goto UnlockAndExit; } /* * Convert value string from table entry to * internal representation. Only types actually * used for initial values are implemented here. */ switch (InitVal->Type) { case ACPI_TYPE_METHOD: ObjDesc->Method.ParamCount = (UINT8) ACPI_TO_INTEGER (Val); ObjDesc->Common.Flags |= AOPOBJ_DATA_VALID; #if defined (ACPI_ASL_COMPILER) /* Save the parameter count for the iASL compiler */ NewNode->Value = ObjDesc->Method.ParamCount; #else /* Mark this as a very SPECIAL method */ ObjDesc->Method.InfoFlags = ACPI_METHOD_INTERNAL_ONLY; ObjDesc->Method.Dispatch.Implementation = AcpiUtOsiImplementation; #endif break; case ACPI_TYPE_INTEGER: ObjDesc->Integer.Value = ACPI_TO_INTEGER (Val); break; case ACPI_TYPE_STRING: /* Build an object around the static string */ ObjDesc->String.Length = (UINT32) ACPI_STRLEN (Val); ObjDesc->String.Pointer = Val; ObjDesc->Common.Flags |= AOPOBJ_STATIC_POINTER; break; case ACPI_TYPE_MUTEX: ObjDesc->Mutex.Node = NewNode; ObjDesc->Mutex.SyncLevel = (UINT8) (ACPI_TO_INTEGER (Val) - 1); /* Create a mutex */ Status = AcpiOsCreateMutex (&ObjDesc->Mutex.OsMutex); if (ACPI_FAILURE (Status)) { AcpiUtRemoveReference (ObjDesc); goto UnlockAndExit; } /* Special case for ACPI Global Lock */ if (ACPI_STRCMP (InitVal->Name, "_GL_") == 0) { AcpiGbl_GlobalLockMutex = ObjDesc; /* Create additional counting semaphore for global lock */ Status = AcpiOsCreateSemaphore ( 1, 0, &AcpiGbl_GlobalLockSemaphore); if (ACPI_FAILURE (Status)) { AcpiUtRemoveReference (ObjDesc); goto UnlockAndExit; } } break; default: ACPI_ERROR ((AE_INFO, "Unsupported initial type value 0x%X", InitVal->Type)); AcpiUtRemoveReference (ObjDesc); ObjDesc = NULL; continue; } /* Store pointer to value descriptor in the Node */ Status = AcpiNsAttachObject (NewNode, ObjDesc, ObjDesc->Common.Type); /* Remove local reference to the object */ AcpiUtRemoveReference (ObjDesc); } } UnlockAndExit: (void) AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); /* Save a handle to "_GPE", it is always present */ if (ACPI_SUCCESS (Status)) { Status = AcpiNsGetNode (NULL, "\\_GPE", ACPI_NS_NO_UPSEARCH, &AcpiGbl_FadtGpeDevice); } return_ACPI_STATUS (Status); } /******************************************************************************* * * FUNCTION: AcpiNsLookup * * PARAMETERS: ScopeInfo - Current scope info block * Pathname - Search pathname, in internal format * (as represented in the AML stream) * Type - Type associated with name * InterpreterMode - IMODE_LOAD_PASS2 => add name if not found * Flags - Flags describing the search restrictions * WalkState - Current state of the walk * ReturnNode - Where the Node is placed (if found * or created successfully) * * RETURN: Status * * DESCRIPTION: Find or enter the passed name in the name space. * Log an error if name not found in Exec mode. * * MUTEX: Assumes namespace is locked. * ******************************************************************************/ ACPI_STATUS AcpiNsLookup ( ACPI_GENERIC_STATE *ScopeInfo, char *Pathname, ACPI_OBJECT_TYPE Type, ACPI_INTERPRETER_MODE InterpreterMode, UINT32 Flags, ACPI_WALK_STATE *WalkState, ACPI_NAMESPACE_NODE **ReturnNode) { ACPI_STATUS Status; char *Path = Pathname; ACPI_NAMESPACE_NODE *PrefixNode; ACPI_NAMESPACE_NODE *CurrentNode = NULL; ACPI_NAMESPACE_NODE *ThisNode = NULL; UINT32 NumSegments; UINT32 NumCarats; ACPI_NAME SimpleName; ACPI_OBJECT_TYPE TypeToCheckFor; ACPI_OBJECT_TYPE ThisSearchType; UINT32 SearchParentFlag = ACPI_NS_SEARCH_PARENT; UINT32 LocalFlags; ACPI_FUNCTION_TRACE (NsLookup); if (!ReturnNode) { return_ACPI_STATUS (AE_BAD_PARAMETER); } LocalFlags = Flags & ~(ACPI_NS_ERROR_IF_FOUND | ACPI_NS_SEARCH_PARENT); *ReturnNode = ACPI_ENTRY_NOT_FOUND; AcpiGbl_NsLookupCount++; if (!AcpiGbl_RootNode) { return_ACPI_STATUS (AE_NO_NAMESPACE); } /* Get the prefix scope. A null scope means use the root scope */ if ((!ScopeInfo) || (!ScopeInfo->Scope.Node)) { ACPI_DEBUG_PRINT ((ACPI_DB_NAMES, "Null scope prefix, using root node (%p)\n", AcpiGbl_RootNode)); PrefixNode = AcpiGbl_RootNode; } else { PrefixNode = ScopeInfo->Scope.Node; if (ACPI_GET_DESCRIPTOR_TYPE (PrefixNode) != ACPI_DESC_TYPE_NAMED) { ACPI_ERROR ((AE_INFO, "%p is not a namespace node [%s]", PrefixNode, AcpiUtGetDescriptorName (PrefixNode))); return_ACPI_STATUS (AE_AML_INTERNAL); } if (!(Flags & ACPI_NS_PREFIX_IS_SCOPE)) { /* * This node might not be a actual "scope" node (such as a * Device/Method, etc.) It could be a Package or other object * node. Backup up the tree to find the containing scope node. */ while (!AcpiNsOpensScope (PrefixNode->Type) && PrefixNode->Type != ACPI_TYPE_ANY) { PrefixNode = PrefixNode->Parent; } } } /* Save type. TBD: may be no longer necessary */ TypeToCheckFor = Type; /* * Begin examination of the actual pathname */ if (!Pathname) { /* A Null NamePath is allowed and refers to the root */ NumSegments = 0; ThisNode = AcpiGbl_RootNode; Path = ""; ACPI_DEBUG_PRINT ((ACPI_DB_NAMES, "Null Pathname (Zero segments), Flags=%X\n", Flags)); } else { /* * Name pointer is valid (and must be in internal name format) * * Check for scope prefixes: * * As represented in the AML stream, a namepath consists of an * optional scope prefix followed by a name segment part. * * If present, the scope prefix is either a Root Prefix (in * which case the name is fully qualified), or one or more * Parent Prefixes (in which case the name's scope is relative * to the current scope). */ if (*Path == (UINT8) AML_ROOT_PREFIX) { /* Pathname is fully qualified, start from the root */ ThisNode = AcpiGbl_RootNode; SearchParentFlag = ACPI_NS_NO_UPSEARCH; /* Point to name segment part */ Path++; ACPI_DEBUG_PRINT ((ACPI_DB_NAMES, "Path is absolute from root [%p]\n", ThisNode)); } else { /* Pathname is relative to current scope, start there */ ACPI_DEBUG_PRINT ((ACPI_DB_NAMES, "Searching relative to prefix scope [%4.4s] (%p)\n", AcpiUtGetNodeName (PrefixNode), PrefixNode)); /* * Handle multiple Parent Prefixes (carat) by just getting * the parent node for each prefix instance. */ ThisNode = PrefixNode; NumCarats = 0; while (*Path == (UINT8) AML_PARENT_PREFIX) { /* Name is fully qualified, no search rules apply */ SearchParentFlag = ACPI_NS_NO_UPSEARCH; /* * Point past this prefix to the name segment * part or the next Parent Prefix */ Path++; /* Backup to the parent node */ NumCarats++; ThisNode = ThisNode->Parent; if (!ThisNode) { /* Current scope has no parent scope */ ACPI_ERROR ((AE_INFO, "%s: Path has too many parent prefixes (^) " "- reached beyond root node", Pathname)); return_ACPI_STATUS (AE_NOT_FOUND); } } if (SearchParentFlag == ACPI_NS_NO_UPSEARCH) { ACPI_DEBUG_PRINT ((ACPI_DB_NAMES, "Search scope is [%4.4s], path has %u carat(s)\n", AcpiUtGetNodeName (ThisNode), NumCarats)); } } /* * Determine the number of ACPI name segments in this pathname. * * The segment part consists of either: * - A Null name segment (0) * - A DualNamePrefix followed by two 4-byte name segments * - A MultiNamePrefix followed by a byte indicating the * number of segments and the segments themselves. * - A single 4-byte name segment * * Examine the name prefix opcode, if any, to determine the number of * segments. */ switch (*Path) { case 0: /* * Null name after a root or parent prefixes. We already * have the correct target node and there are no name segments. */ NumSegments = 0; Type = ThisNode->Type; ACPI_DEBUG_PRINT ((ACPI_DB_NAMES, "Prefix-only Pathname (Zero name segments), Flags=%X\n", Flags)); break; case AML_DUAL_NAME_PREFIX: /* More than one NameSeg, search rules do not apply */ SearchParentFlag = ACPI_NS_NO_UPSEARCH; /* Two segments, point to first name segment */ NumSegments = 2; Path++; ACPI_DEBUG_PRINT ((ACPI_DB_NAMES, "Dual Pathname (2 segments, Flags=%X)\n", Flags)); break; case AML_MULTI_NAME_PREFIX_OP: /* More than one NameSeg, search rules do not apply */ SearchParentFlag = ACPI_NS_NO_UPSEARCH; /* Extract segment count, point to first name segment */ Path++; NumSegments = (UINT32) (UINT8) *Path; Path++; ACPI_DEBUG_PRINT ((ACPI_DB_NAMES, "Multi Pathname (%u Segments, Flags=%X)\n", NumSegments, Flags)); break; default: /* * Not a Null name, no Dual or Multi prefix, hence there is * only one name segment and Pathname is already pointing to it. */ NumSegments = 1; ACPI_DEBUG_PRINT ((ACPI_DB_NAMES, "Simple Pathname (1 segment, Flags=%X)\n", Flags)); break; } ACPI_DEBUG_EXEC (AcpiNsPrintPathname (NumSegments, Path)); } /* * Search namespace for each segment of the name. Loop through and * verify (or add to the namespace) each name segment. * * The object type is significant only at the last name * segment. (We don't care about the types along the path, only * the type of the final target object.) */ ThisSearchType = ACPI_TYPE_ANY; CurrentNode = ThisNode; while (NumSegments && CurrentNode) { NumSegments--; if (!NumSegments) { /* This is the last segment, enable typechecking */ ThisSearchType = Type; /* * Only allow automatic parent search (search rules) if the caller * requested it AND we have a single, non-fully-qualified NameSeg */ if ((SearchParentFlag != ACPI_NS_NO_UPSEARCH) && (Flags & ACPI_NS_SEARCH_PARENT)) { LocalFlags |= ACPI_NS_SEARCH_PARENT; } /* Set error flag according to caller */ if (Flags & ACPI_NS_ERROR_IF_FOUND) { LocalFlags |= ACPI_NS_ERROR_IF_FOUND; } } /* Extract one ACPI name from the front of the pathname */ ACPI_MOVE_32_TO_32 (&SimpleName, Path); /* Try to find the single (4 character) ACPI name */ Status = AcpiNsSearchAndEnter (SimpleName, WalkState, CurrentNode, InterpreterMode, ThisSearchType, LocalFlags, &ThisNode); if (ACPI_FAILURE (Status)) { if (Status == AE_NOT_FOUND) { /* Name not found in ACPI namespace */ ACPI_DEBUG_PRINT ((ACPI_DB_NAMES, "Name [%4.4s] not found in scope [%4.4s] %p\n", (char *) &SimpleName, (char *) &CurrentNode->Name, CurrentNode)); } *ReturnNode = ThisNode; return_ACPI_STATUS (Status); } /* More segments to follow? */ if (NumSegments > 0) { /* * If we have an alias to an object that opens a scope (such as a * device or processor), we need to dereference the alias here so * that we can access any children of the original node (via the * remaining segments). */ if (ThisNode->Type == ACPI_TYPE_LOCAL_ALIAS) { if (!ThisNode->Object) { return_ACPI_STATUS (AE_NOT_EXIST); } if (AcpiNsOpensScope (((ACPI_NAMESPACE_NODE *) ThisNode->Object)->Type)) { ThisNode = (ACPI_NAMESPACE_NODE *) ThisNode->Object; } } } /* Special handling for the last segment (NumSegments == 0) */ else { /* * Sanity typecheck of the target object: * * If 1) This is the last segment (NumSegments == 0) * 2) And we are looking for a specific type * (Not checking for TYPE_ANY) * 3) Which is not an alias * 4) Which is not a local type (TYPE_SCOPE) * 5) And the type of target object is known (not TYPE_ANY) * 6) And target object does not match what we are looking for * * Then we have a type mismatch. Just warn and ignore it. */ if ((TypeToCheckFor != ACPI_TYPE_ANY) && (TypeToCheckFor != ACPI_TYPE_LOCAL_ALIAS) && (TypeToCheckFor != ACPI_TYPE_LOCAL_METHOD_ALIAS) && (TypeToCheckFor != ACPI_TYPE_LOCAL_SCOPE) && (ThisNode->Type != ACPI_TYPE_ANY) && (ThisNode->Type != TypeToCheckFor)) { /* Complain about a type mismatch */ ACPI_WARNING ((AE_INFO, "NsLookup: Type mismatch on %4.4s (%s), searching for (%s)", ACPI_CAST_PTR (char, &SimpleName), AcpiUtGetTypeName (ThisNode->Type), AcpiUtGetTypeName (TypeToCheckFor))); } /* * If this is the last name segment and we are not looking for a * specific type, but the type of found object is known, use that * type to (later) see if it opens a scope. */ if (Type == ACPI_TYPE_ANY) { Type = ThisNode->Type; } } /* Point to next name segment and make this node current */ Path += ACPI_NAME_SIZE; CurrentNode = ThisNode; } /* Always check if we need to open a new scope */ if (!(Flags & ACPI_NS_DONT_OPEN_SCOPE) && (WalkState)) { /* * If entry is a type which opens a scope, push the new scope on the * scope stack. */ if (AcpiNsOpensScope (Type)) { Status = AcpiDsScopeStackPush (ThisNode, Type, WalkState); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } } } *ReturnNode = ThisNode; return_ACPI_STATUS (AE_OK); } src/acpica/source/components/namespace/nsalloc.c000066400000000000000000000476351231470457100223300ustar00rootroot00000000000000/******************************************************************************* * * Module Name: nsalloc - Namespace allocation and deletion utilities * ******************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #define __NSALLOC_C__ #include "acpi.h" #include "accommon.h" #include "acnamesp.h" #define _COMPONENT ACPI_NAMESPACE ACPI_MODULE_NAME ("nsalloc") /******************************************************************************* * * FUNCTION: AcpiNsCreateNode * * PARAMETERS: Name - Name of the new node (4 char ACPI name) * * RETURN: New namespace node (Null on failure) * * DESCRIPTION: Create a namespace node * ******************************************************************************/ ACPI_NAMESPACE_NODE * AcpiNsCreateNode ( UINT32 Name) { ACPI_NAMESPACE_NODE *Node; #ifdef ACPI_DBG_TRACK_ALLOCATIONS UINT32 Temp; #endif ACPI_FUNCTION_TRACE (NsCreateNode); Node = AcpiOsAcquireObject (AcpiGbl_NamespaceCache); if (!Node) { return_PTR (NULL); } ACPI_MEM_TRACKING (AcpiGbl_NsNodeList->TotalAllocated++); #ifdef ACPI_DBG_TRACK_ALLOCATIONS Temp = AcpiGbl_NsNodeList->TotalAllocated - AcpiGbl_NsNodeList->TotalFreed; if (Temp > AcpiGbl_NsNodeList->MaxOccupied) { AcpiGbl_NsNodeList->MaxOccupied = Temp; } #endif Node->Name.Integer = Name; ACPI_SET_DESCRIPTOR_TYPE (Node, ACPI_DESC_TYPE_NAMED); return_PTR (Node); } /******************************************************************************* * * FUNCTION: AcpiNsDeleteNode * * PARAMETERS: Node - Node to be deleted * * RETURN: None * * DESCRIPTION: Delete a namespace node. All node deletions must come through * here. Detaches any attached objects, including any attached * data. If a handler is associated with attached data, it is * invoked before the node is deleted. * ******************************************************************************/ void AcpiNsDeleteNode ( ACPI_NAMESPACE_NODE *Node) { ACPI_OPERAND_OBJECT *ObjDesc; ACPI_OPERAND_OBJECT *NextDesc; ACPI_FUNCTION_NAME (NsDeleteNode); /* Detach an object if there is one */ AcpiNsDetachObject (Node); /* * Delete an attached data object list if present (objects that were * attached via AcpiAttachData). Note: After any normal object is * detached above, the only possible remaining object(s) are data * objects, in a linked list. */ ObjDesc = Node->Object; while (ObjDesc && (ObjDesc->Common.Type == ACPI_TYPE_LOCAL_DATA)) { /* Invoke the attached data deletion handler if present */ if (ObjDesc->Data.Handler) { ObjDesc->Data.Handler (Node, ObjDesc->Data.Pointer); } NextDesc = ObjDesc->Common.NextObject; AcpiUtRemoveReference (ObjDesc); ObjDesc = NextDesc; } /* Special case for the statically allocated root node */ if (Node == AcpiGbl_RootNode) { return; } /* Now we can delete the node */ (void) AcpiOsReleaseObject (AcpiGbl_NamespaceCache, Node); ACPI_MEM_TRACKING (AcpiGbl_NsNodeList->TotalFreed++); ACPI_DEBUG_PRINT ((ACPI_DB_ALLOCATIONS, "Node %p, Remaining %X\n", Node, AcpiGbl_CurrentNodeCount)); } /******************************************************************************* * * FUNCTION: AcpiNsRemoveNode * * PARAMETERS: Node - Node to be removed/deleted * * RETURN: None * * DESCRIPTION: Remove (unlink) and delete a namespace node * ******************************************************************************/ void AcpiNsRemoveNode ( ACPI_NAMESPACE_NODE *Node) { ACPI_NAMESPACE_NODE *ParentNode; ACPI_NAMESPACE_NODE *PrevNode; ACPI_NAMESPACE_NODE *NextNode; ACPI_FUNCTION_TRACE_PTR (NsRemoveNode, Node); ParentNode = Node->Parent; PrevNode = NULL; NextNode = ParentNode->Child; /* Find the node that is the previous peer in the parent's child list */ while (NextNode != Node) { PrevNode = NextNode; NextNode = NextNode->Peer; } if (PrevNode) { /* Node is not first child, unlink it */ PrevNode->Peer = Node->Peer; } else { /* * Node is first child (has no previous peer). * Link peer list to parent */ ParentNode->Child = Node->Peer; } /* Delete the node and any attached objects */ AcpiNsDeleteNode (Node); return_VOID; } /******************************************************************************* * * FUNCTION: AcpiNsInstallNode * * PARAMETERS: WalkState - Current state of the walk * ParentNode - The parent of the new Node * Node - The new Node to install * Type - ACPI object type of the new Node * * RETURN: None * * DESCRIPTION: Initialize a new namespace node and install it amongst * its peers. * * Note: Current namespace lookup is linear search. This appears * to be sufficient as namespace searches consume only a small * fraction of the execution time of the ACPI subsystem. * ******************************************************************************/ void AcpiNsInstallNode ( ACPI_WALK_STATE *WalkState, ACPI_NAMESPACE_NODE *ParentNode, /* Parent */ ACPI_NAMESPACE_NODE *Node, /* New Child*/ ACPI_OBJECT_TYPE Type) { ACPI_OWNER_ID OwnerId = 0; ACPI_NAMESPACE_NODE *ChildNode; ACPI_FUNCTION_TRACE (NsInstallNode); if (WalkState) { /* * Get the owner ID from the Walk state. The owner ID is used to * track table deletion and deletion of objects created by methods. */ OwnerId = WalkState->OwnerId; if ((WalkState->MethodDesc) && (ParentNode != WalkState->MethodNode)) { /* * A method is creating a new node that is not a child of the * method (it is non-local). Mark the executing method as having * modified the namespace. This is used for cleanup when the * method exits. */ WalkState->MethodDesc->Method.InfoFlags |= ACPI_METHOD_MODIFIED_NAMESPACE; } } /* Link the new entry into the parent and existing children */ Node->Peer = NULL; Node->Parent = ParentNode; ChildNode = ParentNode->Child; if (!ChildNode) { ParentNode->Child = Node; } else { /* Add node to the end of the peer list */ while (ChildNode->Peer) { ChildNode = ChildNode->Peer; } ChildNode->Peer = Node; } /* Init the new entry */ Node->OwnerId = OwnerId; Node->Type = (UINT8) Type; ACPI_DEBUG_PRINT ((ACPI_DB_NAMES, "%4.4s (%s) [Node %p Owner %X] added to %4.4s (%s) [Node %p]\n", AcpiUtGetNodeName (Node), AcpiUtGetTypeName (Node->Type), Node, OwnerId, AcpiUtGetNodeName (ParentNode), AcpiUtGetTypeName (ParentNode->Type), ParentNode)); return_VOID; } /******************************************************************************* * * FUNCTION: AcpiNsDeleteChildren * * PARAMETERS: ParentNode - Delete this objects children * * RETURN: None. * * DESCRIPTION: Delete all children of the parent object. In other words, * deletes a "scope". * ******************************************************************************/ void AcpiNsDeleteChildren ( ACPI_NAMESPACE_NODE *ParentNode) { ACPI_NAMESPACE_NODE *NextNode; ACPI_NAMESPACE_NODE *NodeToDelete; ACPI_FUNCTION_TRACE_PTR (NsDeleteChildren, ParentNode); if (!ParentNode) { return_VOID; } /* Deallocate all children at this level */ NextNode = ParentNode->Child; while (NextNode) { /* Grandchildren should have all been deleted already */ if (NextNode->Child) { ACPI_ERROR ((AE_INFO, "Found a grandchild! P=%p C=%p", ParentNode, NextNode)); } /* * Delete this child node and move on to the next child in the list. * No need to unlink the node since we are deleting the entire branch. */ NodeToDelete = NextNode; NextNode = NextNode->Peer; AcpiNsDeleteNode (NodeToDelete); }; /* Clear the parent's child pointer */ ParentNode->Child = NULL; return_VOID; } /******************************************************************************* * * FUNCTION: AcpiNsDeleteNamespaceSubtree * * PARAMETERS: ParentNode - Root of the subtree to be deleted * * RETURN: None. * * DESCRIPTION: Delete a subtree of the namespace. This includes all objects * stored within the subtree. * ******************************************************************************/ void AcpiNsDeleteNamespaceSubtree ( ACPI_NAMESPACE_NODE *ParentNode) { ACPI_NAMESPACE_NODE *ChildNode = NULL; UINT32 Level = 1; ACPI_STATUS Status; ACPI_FUNCTION_TRACE (NsDeleteNamespaceSubtree); if (!ParentNode) { return_VOID; } /* Lock namespace for possible update */ Status = AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); if (ACPI_FAILURE (Status)) { return_VOID; } /* * Traverse the tree of objects until we bubble back up * to where we started. */ while (Level > 0) { /* Get the next node in this scope (NULL if none) */ ChildNode = AcpiNsGetNextNode (ParentNode, ChildNode); if (ChildNode) { /* Found a child node - detach any attached object */ AcpiNsDetachObject (ChildNode); /* Check if this node has any children */ if (ChildNode->Child) { /* * There is at least one child of this node, * visit the node */ Level++; ParentNode = ChildNode; ChildNode = NULL; } } else { /* * No more children of this parent node. * Move up to the grandparent. */ Level--; /* * Now delete all of the children of this parent * all at the same time. */ AcpiNsDeleteChildren (ParentNode); /* New "last child" is this parent node */ ChildNode = ParentNode; /* Move up the tree to the grandparent */ ParentNode = ParentNode->Parent; } } (void) AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); return_VOID; } /******************************************************************************* * * FUNCTION: AcpiNsDeleteNamespaceByOwner * * PARAMETERS: OwnerId - All nodes with this owner will be deleted * * RETURN: Status * * DESCRIPTION: Delete entries within the namespace that are owned by a * specific ID. Used to delete entire ACPI tables. All * reference counts are updated. * * MUTEX: Locks namespace during deletion walk. * ******************************************************************************/ void AcpiNsDeleteNamespaceByOwner ( ACPI_OWNER_ID OwnerId) { ACPI_NAMESPACE_NODE *ChildNode; ACPI_NAMESPACE_NODE *DeletionNode; ACPI_NAMESPACE_NODE *ParentNode; UINT32 Level; ACPI_STATUS Status; ACPI_FUNCTION_TRACE_U32 (NsDeleteNamespaceByOwner, OwnerId); if (OwnerId == 0) { return_VOID; } /* Lock namespace for possible update */ Status = AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); if (ACPI_FAILURE (Status)) { return_VOID; } DeletionNode = NULL; ParentNode = AcpiGbl_RootNode; ChildNode = NULL; Level = 1; /* * Traverse the tree of nodes until we bubble back up * to where we started. */ while (Level > 0) { /* * Get the next child of this parent node. When ChildNode is NULL, * the first child of the parent is returned */ ChildNode = AcpiNsGetNextNode (ParentNode, ChildNode); if (DeletionNode) { AcpiNsDeleteChildren (DeletionNode); AcpiNsRemoveNode (DeletionNode); DeletionNode = NULL; } if (ChildNode) { if (ChildNode->OwnerId == OwnerId) { /* Found a matching child node - detach any attached object */ AcpiNsDetachObject (ChildNode); } /* Check if this node has any children */ if (ChildNode->Child) { /* * There is at least one child of this node, * visit the node */ Level++; ParentNode = ChildNode; ChildNode = NULL; } else if (ChildNode->OwnerId == OwnerId) { DeletionNode = ChildNode; } } else { /* * No more children of this parent node. * Move up to the grandparent. */ Level--; if (Level != 0) { if (ParentNode->OwnerId == OwnerId) { DeletionNode = ParentNode; } } /* New "last child" is this parent node */ ChildNode = ParentNode; /* Move up the tree to the grandparent */ ParentNode = ParentNode->Parent; } } (void) AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); return_VOID; } src/acpica/source/components/namespace/nsarguments.c000066400000000000000000000355001231470457100232270ustar00rootroot00000000000000/****************************************************************************** * * Module Name: nsarguments - Validation of args for ACPI predefined methods * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #include "acpi.h" #include "accommon.h" #include "acnamesp.h" #include "acpredef.h" #define _COMPONENT ACPI_NAMESPACE ACPI_MODULE_NAME ("nsarguments") /******************************************************************************* * * FUNCTION: AcpiNsCheckArgumentTypes * * PARAMETERS: Info - Method execution information block * * RETURN: None * * DESCRIPTION: Check the incoming argument count and all argument types * against the argument type list for a predefined name. * ******************************************************************************/ void AcpiNsCheckArgumentTypes ( ACPI_EVALUATE_INFO *Info) { UINT16 ArgTypeList; UINT8 ArgCount; UINT8 ArgType; UINT8 UserArgType; UINT32 i; /* If not a predefined name, cannot typecheck args */ if (!Info->Predefined) { return; } ArgTypeList = Info->Predefined->Info.ArgumentList; ArgCount = METHOD_GET_ARG_COUNT (ArgTypeList); /* Typecheck all arguments */ for (i = 0; ((i < ArgCount) && (i < Info->ParamCount)); i++) { ArgType = METHOD_GET_NEXT_TYPE (ArgTypeList); UserArgType = Info->Parameters[i]->Common.Type; if (UserArgType != ArgType) { ACPI_WARN_PREDEFINED ((AE_INFO, Info->FullPathname, ACPI_WARN_ALWAYS, "Argument #%u type mismatch - " "Found [%s], ACPI requires [%s]", (i + 1), AcpiUtGetTypeName (UserArgType), AcpiUtGetTypeName (ArgType))); } } } /******************************************************************************* * * FUNCTION: AcpiNsCheckAcpiCompliance * * PARAMETERS: Pathname - Full pathname to the node (for error msgs) * Node - Namespace node for the method/object * Predefined - Pointer to entry in predefined name table * * RETURN: None * * DESCRIPTION: Check that the declared parameter count (in ASL/AML) for a * predefined name is what is expected (matches what is defined in * the ACPI specification for this predefined name.) * ******************************************************************************/ void AcpiNsCheckAcpiCompliance ( char *Pathname, ACPI_NAMESPACE_NODE *Node, const ACPI_PREDEFINED_INFO *Predefined) { UINT32 AmlParamCount; UINT32 RequiredParamCount; if (!Predefined) { return; } /* Get the ACPI-required arg count from the predefined info table */ RequiredParamCount = METHOD_GET_ARG_COUNT (Predefined->Info.ArgumentList); /* * If this object is not a control method, we can check if the ACPI * spec requires that it be a method. */ if (Node->Type != ACPI_TYPE_METHOD) { if (RequiredParamCount > 0) { /* Object requires args, must be implemented as a method */ ACPI_BIOS_ERROR_PREDEFINED ((AE_INFO, Pathname, ACPI_WARN_ALWAYS, "Object (%s) must be a control method with %u arguments", AcpiUtGetTypeName (Node->Type), RequiredParamCount)); } else if (!RequiredParamCount && !Predefined->Info.ExpectedBtypes) { /* Object requires no args and no return value, must be a method */ ACPI_BIOS_ERROR_PREDEFINED ((AE_INFO, Pathname, ACPI_WARN_ALWAYS, "Object (%s) must be a control method " "with no arguments and no return value", AcpiUtGetTypeName (Node->Type))); } return; } /* * This is a control method. * Check that the ASL/AML-defined parameter count for this method * matches the ACPI-required parameter count * * Some methods are allowed to have a "minimum" number of args (_SCP) * because their definition in ACPI has changed over time. * * Note: These are BIOS errors in the declaration of the object */ AmlParamCount = Node->Object->Method.ParamCount; if (AmlParamCount < RequiredParamCount) { ACPI_BIOS_ERROR_PREDEFINED ((AE_INFO, Pathname, ACPI_WARN_ALWAYS, "Insufficient arguments - " "ASL declared %u, ACPI requires %u", AmlParamCount, RequiredParamCount)); } else if ((AmlParamCount > RequiredParamCount) && !(Predefined->Info.ArgumentList & ARG_COUNT_IS_MINIMUM)) { ACPI_BIOS_ERROR_PREDEFINED ((AE_INFO, Pathname, ACPI_WARN_ALWAYS, "Excess arguments - " "ASL declared %u, ACPI requires %u", AmlParamCount, RequiredParamCount)); } } /******************************************************************************* * * FUNCTION: AcpiNsCheckArgumentCount * * PARAMETERS: Pathname - Full pathname to the node (for error msgs) * Node - Namespace node for the method/object * UserParamCount - Number of args passed in by the caller * Predefined - Pointer to entry in predefined name table * * RETURN: None * * DESCRIPTION: Check that incoming argument count matches the declared * parameter count (in the ASL/AML) for an object. * ******************************************************************************/ void AcpiNsCheckArgumentCount ( char *Pathname, ACPI_NAMESPACE_NODE *Node, UINT32 UserParamCount, const ACPI_PREDEFINED_INFO *Predefined) { UINT32 AmlParamCount; UINT32 RequiredParamCount; if (!Predefined) { /* * Not a predefined name. Check the incoming user argument count * against the count that is specified in the method/object. */ if (Node->Type != ACPI_TYPE_METHOD) { if (UserParamCount) { ACPI_INFO_PREDEFINED ((AE_INFO, Pathname, ACPI_WARN_ALWAYS, "%u arguments were passed to a non-method ACPI object (%s)", UserParamCount, AcpiUtGetTypeName (Node->Type))); } return; } /* * This is a control method. Check the parameter count. * We can only check the incoming argument count against the * argument count declared for the method in the ASL/AML. * * Emit a message if too few or too many arguments have been passed * by the caller. * * Note: Too many arguments will not cause the method to * fail. However, the method will fail if there are too few * arguments and the method attempts to use one of the missing ones. */ AmlParamCount = Node->Object->Method.ParamCount; if (UserParamCount < AmlParamCount) { ACPI_WARN_PREDEFINED ((AE_INFO, Pathname, ACPI_WARN_ALWAYS, "Insufficient arguments - " "Caller passed %u, method requires %u", UserParamCount, AmlParamCount)); } else if (UserParamCount > AmlParamCount) { ACPI_INFO_PREDEFINED ((AE_INFO, Pathname, ACPI_WARN_ALWAYS, "Excess arguments - " "Caller passed %u, method requires %u", UserParamCount, AmlParamCount)); } return; } /* * This is a predefined name. Validate the user-supplied parameter * count against the ACPI specification. We don't validate against * the method itself because what is important here is that the * caller is in conformance with the spec. (The arg count for the * method was checked against the ACPI spec earlier.) * * Some methods are allowed to have a "minimum" number of args (_SCP) * because their definition in ACPI has changed over time. */ RequiredParamCount = METHOD_GET_ARG_COUNT (Predefined->Info.ArgumentList); if (UserParamCount < RequiredParamCount) { ACPI_WARN_PREDEFINED ((AE_INFO, Pathname, ACPI_WARN_ALWAYS, "Insufficient arguments - " "Caller passed %u, ACPI requires %u", UserParamCount, RequiredParamCount)); } else if ((UserParamCount > RequiredParamCount) && !(Predefined->Info.ArgumentList & ARG_COUNT_IS_MINIMUM)) { ACPI_INFO_PREDEFINED ((AE_INFO, Pathname, ACPI_WARN_ALWAYS, "Excess arguments - " "Caller passed %u, ACPI requires %u", UserParamCount, RequiredParamCount)); } } src/acpica/source/components/namespace/nsconvert.c000066400000000000000000000436301231470457100227050ustar00rootroot00000000000000/****************************************************************************** * * Module Name: nsconvert - Object conversions for objects returned by * predefined methods * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #define __NSCONVERT_C__ #include "acpi.h" #include "accommon.h" #include "acnamesp.h" #include "acinterp.h" #include "acpredef.h" #include "amlresrc.h" #define _COMPONENT ACPI_NAMESPACE ACPI_MODULE_NAME ("nsconvert") /******************************************************************************* * * FUNCTION: AcpiNsConvertToInteger * * PARAMETERS: OriginalObject - Object to be converted * ReturnObject - Where the new converted object is returned * * RETURN: Status. AE_OK if conversion was successful. * * DESCRIPTION: Attempt to convert a String/Buffer object to an Integer. * ******************************************************************************/ ACPI_STATUS AcpiNsConvertToInteger ( ACPI_OPERAND_OBJECT *OriginalObject, ACPI_OPERAND_OBJECT **ReturnObject) { ACPI_OPERAND_OBJECT *NewObject; ACPI_STATUS Status; UINT64 Value = 0; UINT32 i; switch (OriginalObject->Common.Type) { case ACPI_TYPE_STRING: /* String-to-Integer conversion */ Status = AcpiUtStrtoul64 (OriginalObject->String.Pointer, ACPI_ANY_BASE, &Value); if (ACPI_FAILURE (Status)) { return (Status); } break; case ACPI_TYPE_BUFFER: /* Buffer-to-Integer conversion. Max buffer size is 64 bits. */ if (OriginalObject->Buffer.Length > 8) { return (AE_AML_OPERAND_TYPE); } /* Extract each buffer byte to create the integer */ for (i = 0; i < OriginalObject->Buffer.Length; i++) { Value |= ((UINT64) OriginalObject->Buffer.Pointer[i] << (i * 8)); } break; default: return (AE_AML_OPERAND_TYPE); } NewObject = AcpiUtCreateIntegerObject (Value); if (!NewObject) { return (AE_NO_MEMORY); } *ReturnObject = NewObject; return (AE_OK); } /******************************************************************************* * * FUNCTION: AcpiNsConvertToString * * PARAMETERS: OriginalObject - Object to be converted * ReturnObject - Where the new converted object is returned * * RETURN: Status. AE_OK if conversion was successful. * * DESCRIPTION: Attempt to convert a Integer/Buffer object to a String. * ******************************************************************************/ ACPI_STATUS AcpiNsConvertToString ( ACPI_OPERAND_OBJECT *OriginalObject, ACPI_OPERAND_OBJECT **ReturnObject) { ACPI_OPERAND_OBJECT *NewObject; ACPI_SIZE Length; ACPI_STATUS Status; switch (OriginalObject->Common.Type) { case ACPI_TYPE_INTEGER: /* * Integer-to-String conversion. Commonly, convert * an integer of value 0 to a NULL string. The last element of * _BIF and _BIX packages occasionally need this fix. */ if (OriginalObject->Integer.Value == 0) { /* Allocate a new NULL string object */ NewObject = AcpiUtCreateStringObject (0); if (!NewObject) { return (AE_NO_MEMORY); } } else { Status = AcpiExConvertToString (OriginalObject, &NewObject, ACPI_IMPLICIT_CONVERT_HEX); if (ACPI_FAILURE (Status)) { return (Status); } } break; case ACPI_TYPE_BUFFER: /* * Buffer-to-String conversion. Use a ToString * conversion, no transform performed on the buffer data. The best * example of this is the _BIF method, where the string data from * the battery is often (incorrectly) returned as buffer object(s). */ Length = 0; while ((Length < OriginalObject->Buffer.Length) && (OriginalObject->Buffer.Pointer[Length])) { Length++; } /* Allocate a new string object */ NewObject = AcpiUtCreateStringObject (Length); if (!NewObject) { return (AE_NO_MEMORY); } /* * Copy the raw buffer data with no transform. String is already NULL * terminated at Length+1. */ ACPI_MEMCPY (NewObject->String.Pointer, OriginalObject->Buffer.Pointer, Length); break; default: return (AE_AML_OPERAND_TYPE); } *ReturnObject = NewObject; return (AE_OK); } /******************************************************************************* * * FUNCTION: AcpiNsConvertToBuffer * * PARAMETERS: OriginalObject - Object to be converted * ReturnObject - Where the new converted object is returned * * RETURN: Status. AE_OK if conversion was successful. * * DESCRIPTION: Attempt to convert a Integer/String/Package object to a Buffer. * ******************************************************************************/ ACPI_STATUS AcpiNsConvertToBuffer ( ACPI_OPERAND_OBJECT *OriginalObject, ACPI_OPERAND_OBJECT **ReturnObject) { ACPI_OPERAND_OBJECT *NewObject; ACPI_STATUS Status; ACPI_OPERAND_OBJECT **Elements; UINT32 *DwordBuffer; UINT32 Count; UINT32 i; switch (OriginalObject->Common.Type) { case ACPI_TYPE_INTEGER: /* * Integer-to-Buffer conversion. * Convert the Integer to a packed-byte buffer. _MAT and other * objects need this sometimes, if a read has been performed on a * Field object that is less than or equal to the global integer * size (32 or 64 bits). */ Status = AcpiExConvertToBuffer (OriginalObject, &NewObject); if (ACPI_FAILURE (Status)) { return (Status); } break; case ACPI_TYPE_STRING: /* String-to-Buffer conversion. Simple data copy */ NewObject = AcpiUtCreateBufferObject (OriginalObject->String.Length); if (!NewObject) { return (AE_NO_MEMORY); } ACPI_MEMCPY (NewObject->Buffer.Pointer, OriginalObject->String.Pointer, OriginalObject->String.Length); break; case ACPI_TYPE_PACKAGE: /* * This case is often seen for predefined names that must return a * Buffer object with multiple DWORD integers within. For example, * _FDE and _GTM. The Package can be converted to a Buffer. */ /* All elements of the Package must be integers */ Elements = OriginalObject->Package.Elements; Count = OriginalObject->Package.Count; for (i = 0; i < Count; i++) { if ((!*Elements) || ((*Elements)->Common.Type != ACPI_TYPE_INTEGER)) { return (AE_AML_OPERAND_TYPE); } Elements++; } /* Create the new buffer object to replace the Package */ NewObject = AcpiUtCreateBufferObject (ACPI_MUL_4 (Count)); if (!NewObject) { return (AE_NO_MEMORY); } /* Copy the package elements (integers) to the buffer as DWORDs */ Elements = OriginalObject->Package.Elements; DwordBuffer = ACPI_CAST_PTR (UINT32, NewObject->Buffer.Pointer); for (i = 0; i < Count; i++) { *DwordBuffer = (UINT32) (*Elements)->Integer.Value; DwordBuffer++; Elements++; } break; default: return (AE_AML_OPERAND_TYPE); } *ReturnObject = NewObject; return (AE_OK); } /******************************************************************************* * * FUNCTION: AcpiNsConvertToUnicode * * PARAMETERS: OriginalObject - ASCII String Object to be converted * ReturnObject - Where the new converted object is returned * * RETURN: Status. AE_OK if conversion was successful. * * DESCRIPTION: Attempt to convert a String object to a Unicode string Buffer. * ******************************************************************************/ ACPI_STATUS AcpiNsConvertToUnicode ( ACPI_OPERAND_OBJECT *OriginalObject, ACPI_OPERAND_OBJECT **ReturnObject) { ACPI_OPERAND_OBJECT *NewObject; char *AsciiString; UINT16 *UnicodeBuffer; UINT32 UnicodeLength; UINT32 i; if (!OriginalObject) { return (AE_OK); } /* If a Buffer was returned, it must be at least two bytes long */ if (OriginalObject->Common.Type == ACPI_TYPE_BUFFER) { if (OriginalObject->Buffer.Length < 2) { return (AE_AML_OPERAND_VALUE); } *ReturnObject = NULL; return (AE_OK); } /* * The original object is an ASCII string. Convert this string to * a unicode buffer. */ AsciiString = OriginalObject->String.Pointer; UnicodeLength = (OriginalObject->String.Length * 2) + 2; /* Create a new buffer object for the Unicode data */ NewObject = AcpiUtCreateBufferObject (UnicodeLength); if (!NewObject) { return (AE_NO_MEMORY); } UnicodeBuffer = ACPI_CAST_PTR (UINT16, NewObject->Buffer.Pointer); /* Convert ASCII to Unicode */ for (i = 0; i < OriginalObject->String.Length; i++) { UnicodeBuffer[i] = (UINT16) AsciiString[i]; } *ReturnObject = NewObject; return (AE_OK); } /******************************************************************************* * * FUNCTION: AcpiNsConvertToResource * * PARAMETERS: OriginalObject - Object to be converted * ReturnObject - Where the new converted object is returned * * RETURN: Status. AE_OK if conversion was successful * * DESCRIPTION: Attempt to convert a Integer object to a ResourceTemplate * Buffer. * ******************************************************************************/ ACPI_STATUS AcpiNsConvertToResource ( ACPI_OPERAND_OBJECT *OriginalObject, ACPI_OPERAND_OBJECT **ReturnObject) { ACPI_OPERAND_OBJECT *NewObject; UINT8 *Buffer; /* * We can fix the following cases for an expected resource template: * 1. No return value (interpreter slack mode is disabled) * 2. A "Return (Zero)" statement * 3. A "Return empty buffer" statement * * We will return a buffer containing a single EndTag * resource descriptor. */ if (OriginalObject) { switch (OriginalObject->Common.Type) { case ACPI_TYPE_INTEGER: /* We can only repair an Integer==0 */ if (OriginalObject->Integer.Value) { return (AE_AML_OPERAND_TYPE); } break; case ACPI_TYPE_BUFFER: if (OriginalObject->Buffer.Length) { /* Additional checks can be added in the future */ *ReturnObject = NULL; return (AE_OK); } break; case ACPI_TYPE_STRING: default: return (AE_AML_OPERAND_TYPE); } } /* Create the new buffer object for the resource descriptor */ NewObject = AcpiUtCreateBufferObject (2); if (!NewObject) { return (AE_NO_MEMORY); } Buffer = ACPI_CAST_PTR (UINT8, NewObject->Buffer.Pointer); /* Initialize the Buffer with a single EndTag descriptor */ Buffer[0] = (ACPI_RESOURCE_NAME_END_TAG | ASL_RDESC_END_TAG_SIZE); Buffer[1] = 0x00; *ReturnObject = NewObject; return (AE_OK); } src/acpica/source/components/namespace/nsdump.c000066400000000000000000000735111231470457100221730ustar00rootroot00000000000000/****************************************************************************** * * Module Name: nsdump - table dumping routines for debug * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #define __NSDUMP_C__ #include "acpi.h" #include "accommon.h" #include "acnamesp.h" #include "acoutput.h" #define _COMPONENT ACPI_NAMESPACE ACPI_MODULE_NAME ("nsdump") /* Local prototypes */ #ifdef ACPI_OBSOLETE_FUNCTIONS void AcpiNsDumpRootDevices ( void); static ACPI_STATUS AcpiNsDumpOneDevice ( ACPI_HANDLE ObjHandle, UINT32 Level, void *Context, void **ReturnValue); #endif #if defined(ACPI_DEBUG_OUTPUT) || defined(ACPI_DEBUGGER) static ACPI_STATUS AcpiNsDumpOneObjectPath ( ACPI_HANDLE ObjHandle, UINT32 Level, void *Context, void **ReturnValue); static ACPI_STATUS AcpiNsGetMaxDepth ( ACPI_HANDLE ObjHandle, UINT32 Level, void *Context, void **ReturnValue); /******************************************************************************* * * FUNCTION: AcpiNsPrintPathname * * PARAMETERS: NumSegments - Number of ACPI name segments * Pathname - The compressed (internal) path * * RETURN: None * * DESCRIPTION: Print an object's full namespace pathname * ******************************************************************************/ void AcpiNsPrintPathname ( UINT32 NumSegments, char *Pathname) { UINT32 i; ACPI_FUNCTION_NAME (NsPrintPathname); /* Check if debug output enabled */ if (!ACPI_IS_DEBUG_ENABLED (ACPI_LV_NAMES, ACPI_NAMESPACE)) { return; } /* Print the entire name */ ACPI_DEBUG_PRINT ((ACPI_DB_NAMES, "[")); while (NumSegments) { for (i = 0; i < 4; i++) { ACPI_IS_PRINT (Pathname[i]) ? AcpiOsPrintf ("%c", Pathname[i]) : AcpiOsPrintf ("?"); } Pathname += ACPI_NAME_SIZE; NumSegments--; if (NumSegments) { AcpiOsPrintf ("."); } } AcpiOsPrintf ("]\n"); } /******************************************************************************* * * FUNCTION: AcpiNsDumpPathname * * PARAMETERS: Handle - Object * Msg - Prefix message * Level - Desired debug level * Component - Caller's component ID * * RETURN: None * * DESCRIPTION: Print an object's full namespace pathname * Manages allocation/freeing of a pathname buffer * ******************************************************************************/ void AcpiNsDumpPathname ( ACPI_HANDLE Handle, char *Msg, UINT32 Level, UINT32 Component) { ACPI_FUNCTION_TRACE (NsDumpPathname); /* Do this only if the requested debug level and component are enabled */ if (!ACPI_IS_DEBUG_ENABLED (Level, Component)) { return_VOID; } /* Convert handle to a full pathname and print it (with supplied message) */ AcpiNsPrintNodePathname (Handle, Msg); AcpiOsPrintf ("\n"); return_VOID; } /******************************************************************************* * * FUNCTION: AcpiNsDumpOneObject * * PARAMETERS: ObjHandle - Node to be dumped * Level - Nesting level of the handle * Context - Passed into WalkNamespace * ReturnValue - Not used * * RETURN: Status * * DESCRIPTION: Dump a single Node * This procedure is a UserFunction called by AcpiNsWalkNamespace. * ******************************************************************************/ ACPI_STATUS AcpiNsDumpOneObject ( ACPI_HANDLE ObjHandle, UINT32 Level, void *Context, void **ReturnValue) { ACPI_WALK_INFO *Info = (ACPI_WALK_INFO *) Context; ACPI_NAMESPACE_NODE *ThisNode; ACPI_OPERAND_OBJECT *ObjDesc = NULL; ACPI_OBJECT_TYPE ObjType; ACPI_OBJECT_TYPE Type; UINT32 BytesToDump; UINT32 DbgLevel; UINT32 i; ACPI_FUNCTION_NAME (NsDumpOneObject); /* Is output enabled? */ if (!(AcpiDbgLevel & Info->DebugLevel)) { return (AE_OK); } if (!ObjHandle) { ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Null object handle\n")); return (AE_OK); } ThisNode = AcpiNsValidateHandle (ObjHandle); if (!ThisNode) { ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Invalid object handle %p\n", ObjHandle)); return (AE_OK); } Type = ThisNode->Type; /* Check if the owner matches */ if ((Info->OwnerId != ACPI_OWNER_ID_MAX) && (Info->OwnerId != ThisNode->OwnerId)) { return (AE_OK); } if (!(Info->DisplayType & ACPI_DISPLAY_SHORT)) { /* Indent the object according to the level */ AcpiOsPrintf ("%2d%*s", (UINT32) Level - 1, (int) Level * 2, " "); /* Check the node type and name */ if (Type > ACPI_TYPE_LOCAL_MAX) { ACPI_WARNING ((AE_INFO, "Invalid ACPI Object Type 0x%08X", Type)); } AcpiOsPrintf ("%4.4s", AcpiUtGetNodeName (ThisNode)); } /* Now we can print out the pertinent information */ AcpiOsPrintf (" %-12s %p %2.2X ", AcpiUtGetTypeName (Type), ThisNode, ThisNode->OwnerId); DbgLevel = AcpiDbgLevel; AcpiDbgLevel = 0; ObjDesc = AcpiNsGetAttachedObject (ThisNode); AcpiDbgLevel = DbgLevel; /* Temp nodes are those nodes created by a control method */ if (ThisNode->Flags & ANOBJ_TEMPORARY) { AcpiOsPrintf ("(T) "); } switch (Info->DisplayType & ACPI_DISPLAY_MASK) { case ACPI_DISPLAY_SUMMARY: if (!ObjDesc) { /* No attached object. Some types should always have an object */ switch (Type) { case ACPI_TYPE_INTEGER: case ACPI_TYPE_PACKAGE: case ACPI_TYPE_BUFFER: case ACPI_TYPE_STRING: case ACPI_TYPE_METHOD: AcpiOsPrintf (""); break; default: break; } AcpiOsPrintf ("\n"); return (AE_OK); } switch (Type) { case ACPI_TYPE_PROCESSOR: AcpiOsPrintf ("ID %02X Len %02X Addr %p\n", ObjDesc->Processor.ProcId, ObjDesc->Processor.Length, ACPI_CAST_PTR (void, ObjDesc->Processor.Address)); break; case ACPI_TYPE_DEVICE: AcpiOsPrintf ("Notify Object: %p\n", ObjDesc); break; case ACPI_TYPE_METHOD: AcpiOsPrintf ("Args %X Len %.4X Aml %p\n", (UINT32) ObjDesc->Method.ParamCount, ObjDesc->Method.AmlLength, ObjDesc->Method.AmlStart); break; case ACPI_TYPE_INTEGER: AcpiOsPrintf ("= %8.8X%8.8X\n", ACPI_FORMAT_UINT64 (ObjDesc->Integer.Value)); break; case ACPI_TYPE_PACKAGE: if (ObjDesc->Common.Flags & AOPOBJ_DATA_VALID) { AcpiOsPrintf ("Elements %.2X\n", ObjDesc->Package.Count); } else { AcpiOsPrintf ("[Length not yet evaluated]\n"); } break; case ACPI_TYPE_BUFFER: if (ObjDesc->Common.Flags & AOPOBJ_DATA_VALID) { AcpiOsPrintf ("Len %.2X", ObjDesc->Buffer.Length); /* Dump some of the buffer */ if (ObjDesc->Buffer.Length > 0) { AcpiOsPrintf (" ="); for (i = 0; (i < ObjDesc->Buffer.Length && i < 12); i++) { AcpiOsPrintf (" %.2hX", ObjDesc->Buffer.Pointer[i]); } } AcpiOsPrintf ("\n"); } else { AcpiOsPrintf ("[Length not yet evaluated]\n"); } break; case ACPI_TYPE_STRING: AcpiOsPrintf ("Len %.2X ", ObjDesc->String.Length); AcpiUtPrintString (ObjDesc->String.Pointer, 32); AcpiOsPrintf ("\n"); break; case ACPI_TYPE_REGION: AcpiOsPrintf ("[%s]", AcpiUtGetRegionName (ObjDesc->Region.SpaceId)); if (ObjDesc->Region.Flags & AOPOBJ_DATA_VALID) { AcpiOsPrintf (" Addr %8.8X%8.8X Len %.4X\n", ACPI_FORMAT_NATIVE_UINT (ObjDesc->Region.Address), ObjDesc->Region.Length); } else { AcpiOsPrintf (" [Address/Length not yet evaluated]\n"); } break; case ACPI_TYPE_LOCAL_REFERENCE: AcpiOsPrintf ("[%s]\n", AcpiUtGetReferenceName (ObjDesc)); break; case ACPI_TYPE_BUFFER_FIELD: if (ObjDesc->BufferField.BufferObj && ObjDesc->BufferField.BufferObj->Buffer.Node) { AcpiOsPrintf ("Buf [%4.4s]", AcpiUtGetNodeName ( ObjDesc->BufferField.BufferObj->Buffer.Node)); } break; case ACPI_TYPE_LOCAL_REGION_FIELD: AcpiOsPrintf ("Rgn [%4.4s]", AcpiUtGetNodeName ( ObjDesc->CommonField.RegionObj->Region.Node)); break; case ACPI_TYPE_LOCAL_BANK_FIELD: AcpiOsPrintf ("Rgn [%4.4s] Bnk [%4.4s]", AcpiUtGetNodeName ( ObjDesc->CommonField.RegionObj->Region.Node), AcpiUtGetNodeName ( ObjDesc->BankField.BankObj->CommonField.Node)); break; case ACPI_TYPE_LOCAL_INDEX_FIELD: AcpiOsPrintf ("Idx [%4.4s] Dat [%4.4s]", AcpiUtGetNodeName ( ObjDesc->IndexField.IndexObj->CommonField.Node), AcpiUtGetNodeName ( ObjDesc->IndexField.DataObj->CommonField.Node)); break; case ACPI_TYPE_LOCAL_ALIAS: case ACPI_TYPE_LOCAL_METHOD_ALIAS: AcpiOsPrintf ("Target %4.4s (%p)\n", AcpiUtGetNodeName (ObjDesc), ObjDesc); break; default: AcpiOsPrintf ("Object %p\n", ObjDesc); break; } /* Common field handling */ switch (Type) { case ACPI_TYPE_BUFFER_FIELD: case ACPI_TYPE_LOCAL_REGION_FIELD: case ACPI_TYPE_LOCAL_BANK_FIELD: case ACPI_TYPE_LOCAL_INDEX_FIELD: AcpiOsPrintf (" Off %.3X Len %.2X Acc %.2hd\n", (ObjDesc->CommonField.BaseByteOffset * 8) + ObjDesc->CommonField.StartFieldBitOffset, ObjDesc->CommonField.BitLength, ObjDesc->CommonField.AccessByteWidth); break; default: break; } break; case ACPI_DISPLAY_OBJECTS: AcpiOsPrintf ("O:%p", ObjDesc); if (!ObjDesc) { /* No attached object, we are done */ AcpiOsPrintf ("\n"); return (AE_OK); } AcpiOsPrintf ("(R%u)", ObjDesc->Common.ReferenceCount); switch (Type) { case ACPI_TYPE_METHOD: /* Name is a Method and its AML offset/length are set */ AcpiOsPrintf (" M:%p-%X\n", ObjDesc->Method.AmlStart, ObjDesc->Method.AmlLength); break; case ACPI_TYPE_INTEGER: AcpiOsPrintf (" I:%8.8X8.8%X\n", ACPI_FORMAT_UINT64 (ObjDesc->Integer.Value)); break; case ACPI_TYPE_STRING: AcpiOsPrintf (" S:%p-%X\n", ObjDesc->String.Pointer, ObjDesc->String.Length); break; case ACPI_TYPE_BUFFER: AcpiOsPrintf (" B:%p-%X\n", ObjDesc->Buffer.Pointer, ObjDesc->Buffer.Length); break; default: AcpiOsPrintf ("\n"); break; } break; default: AcpiOsPrintf ("\n"); break; } /* If debug turned off, done */ if (!(AcpiDbgLevel & ACPI_LV_VALUES)) { return (AE_OK); } /* If there is an attached object, display it */ DbgLevel = AcpiDbgLevel; AcpiDbgLevel = 0; ObjDesc = AcpiNsGetAttachedObject (ThisNode); AcpiDbgLevel = DbgLevel; /* Dump attached objects */ while (ObjDesc) { ObjType = ACPI_TYPE_INVALID; AcpiOsPrintf ("Attached Object %p: ", ObjDesc); /* Decode the type of attached object and dump the contents */ switch (ACPI_GET_DESCRIPTOR_TYPE (ObjDesc)) { case ACPI_DESC_TYPE_NAMED: AcpiOsPrintf ("(Ptr to Node)\n"); BytesToDump = sizeof (ACPI_NAMESPACE_NODE); ACPI_DUMP_BUFFER (ObjDesc, BytesToDump); break; case ACPI_DESC_TYPE_OPERAND: ObjType = ObjDesc->Common.Type; if (ObjType > ACPI_TYPE_LOCAL_MAX) { AcpiOsPrintf ("(Pointer to ACPI Object type %.2X [UNKNOWN])\n", ObjType); BytesToDump = 32; } else { AcpiOsPrintf ("(Pointer to ACPI Object type %.2X [%s])\n", ObjType, AcpiUtGetTypeName (ObjType)); BytesToDump = sizeof (ACPI_OPERAND_OBJECT); } ACPI_DUMP_BUFFER (ObjDesc, BytesToDump); break; default: break; } /* If value is NOT an internal object, we are done */ if (ACPI_GET_DESCRIPTOR_TYPE (ObjDesc) != ACPI_DESC_TYPE_OPERAND) { goto Cleanup; } /* Valid object, get the pointer to next level, if any */ switch (ObjType) { case ACPI_TYPE_BUFFER: case ACPI_TYPE_STRING: /* * NOTE: takes advantage of common fields between string/buffer */ BytesToDump = ObjDesc->String.Length; ObjDesc = (void *) ObjDesc->String.Pointer; AcpiOsPrintf ( "(Buffer/String pointer %p length %X)\n", ObjDesc, BytesToDump); ACPI_DUMP_BUFFER (ObjDesc, BytesToDump); goto Cleanup; case ACPI_TYPE_BUFFER_FIELD: ObjDesc = (ACPI_OPERAND_OBJECT *) ObjDesc->BufferField.BufferObj; break; case ACPI_TYPE_PACKAGE: ObjDesc = (void *) ObjDesc->Package.Elements; break; case ACPI_TYPE_METHOD: ObjDesc = (void *) ObjDesc->Method.AmlStart; break; case ACPI_TYPE_LOCAL_REGION_FIELD: ObjDesc = (void *) ObjDesc->Field.RegionObj; break; case ACPI_TYPE_LOCAL_BANK_FIELD: ObjDesc = (void *) ObjDesc->BankField.RegionObj; break; case ACPI_TYPE_LOCAL_INDEX_FIELD: ObjDesc = (void *) ObjDesc->IndexField.IndexObj; break; default: goto Cleanup; } ObjType = ACPI_TYPE_INVALID; /* Terminate loop after next pass */ } Cleanup: AcpiOsPrintf ("\n"); return (AE_OK); } /******************************************************************************* * * FUNCTION: AcpiNsDumpObjects * * PARAMETERS: Type - Object type to be dumped * DisplayType - 0 or ACPI_DISPLAY_SUMMARY * MaxDepth - Maximum depth of dump. Use ACPI_UINT32_MAX * for an effectively unlimited depth. * OwnerId - Dump only objects owned by this ID. Use * ACPI_UINT32_MAX to match all owners. * StartHandle - Where in namespace to start/end search * * RETURN: None * * DESCRIPTION: Dump typed objects within the loaded namespace. Uses * AcpiNsWalkNamespace in conjunction with AcpiNsDumpOneObject. * ******************************************************************************/ void AcpiNsDumpObjects ( ACPI_OBJECT_TYPE Type, UINT8 DisplayType, UINT32 MaxDepth, ACPI_OWNER_ID OwnerId, ACPI_HANDLE StartHandle) { ACPI_WALK_INFO Info; ACPI_STATUS Status; ACPI_FUNCTION_ENTRY (); /* * Just lock the entire namespace for the duration of the dump. * We don't want any changes to the namespace during this time, * especially the temporary nodes since we are going to display * them also. */ Status = AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); if (ACPI_FAILURE (Status)) { AcpiOsPrintf ("Could not acquire namespace mutex\n"); return; } Info.DebugLevel = ACPI_LV_TABLES; Info.OwnerId = OwnerId; Info.DisplayType = DisplayType; (void) AcpiNsWalkNamespace (Type, StartHandle, MaxDepth, ACPI_NS_WALK_NO_UNLOCK | ACPI_NS_WALK_TEMP_NODES, AcpiNsDumpOneObject, NULL, (void *) &Info, NULL); (void) AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); } /******************************************************************************* * * FUNCTION: AcpiNsDumpOneObjectPath, AcpiNsGetMaxDepth * * PARAMETERS: ObjHandle - Node to be dumped * Level - Nesting level of the handle * Context - Passed into WalkNamespace * ReturnValue - Not used * * RETURN: Status * * DESCRIPTION: Dump the full pathname to a namespace object. AcpNsGetMaxDepth * computes the maximum nesting depth in the namespace tree, in * order to simplify formatting in AcpiNsDumpOneObjectPath. * These procedures are UserFunctions called by AcpiNsWalkNamespace. * ******************************************************************************/ static ACPI_STATUS AcpiNsDumpOneObjectPath ( ACPI_HANDLE ObjHandle, UINT32 Level, void *Context, void **ReturnValue) { UINT32 MaxLevel = *((UINT32 *) Context); char *Pathname; ACPI_NAMESPACE_NODE *Node; int PathIndent; if (!ObjHandle) { return (AE_OK); } Node = AcpiNsValidateHandle (ObjHandle); if (!Node) { /* Ignore bad node during namespace walk */ return (AE_OK); } Pathname = AcpiNsGetExternalPathname (Node); PathIndent = 1; if (Level <= MaxLevel) { PathIndent = MaxLevel - Level + 1; } AcpiOsPrintf ("%2d%*s%-12s%*s", Level, Level, " ", AcpiUtGetTypeName (Node->Type), PathIndent, " "); AcpiOsPrintf ("%s\n", &Pathname[1]); ACPI_FREE (Pathname); return (AE_OK); } static ACPI_STATUS AcpiNsGetMaxDepth ( ACPI_HANDLE ObjHandle, UINT32 Level, void *Context, void **ReturnValue) { UINT32 *MaxLevel = (UINT32 *) Context; if (Level > *MaxLevel) { *MaxLevel = Level; } return (AE_OK); } /******************************************************************************* * * FUNCTION: AcpiNsDumpObjectPaths * * PARAMETERS: Type - Object type to be dumped * DisplayType - 0 or ACPI_DISPLAY_SUMMARY * MaxDepth - Maximum depth of dump. Use ACPI_UINT32_MAX * for an effectively unlimited depth. * OwnerId - Dump only objects owned by this ID. Use * ACPI_UINT32_MAX to match all owners. * StartHandle - Where in namespace to start/end search * * RETURN: None * * DESCRIPTION: Dump full object pathnames within the loaded namespace. Uses * AcpiNsWalkNamespace in conjunction with AcpiNsDumpOneObjectPath. * ******************************************************************************/ void AcpiNsDumpObjectPaths ( ACPI_OBJECT_TYPE Type, UINT8 DisplayType, UINT32 MaxDepth, ACPI_OWNER_ID OwnerId, ACPI_HANDLE StartHandle) { ACPI_STATUS Status; UINT32 MaxLevel = 0; ACPI_FUNCTION_ENTRY (); /* * Just lock the entire namespace for the duration of the dump. * We don't want any changes to the namespace during this time, * especially the temporary nodes since we are going to display * them also. */ Status = AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); if (ACPI_FAILURE (Status)) { AcpiOsPrintf ("Could not acquire namespace mutex\n"); return; } /* Get the max depth of the namespace tree, for formatting later */ (void) AcpiNsWalkNamespace (Type, StartHandle, MaxDepth, ACPI_NS_WALK_NO_UNLOCK | ACPI_NS_WALK_TEMP_NODES, AcpiNsGetMaxDepth, NULL, (void *) &MaxLevel, NULL); /* Now dump the entire namespace */ (void) AcpiNsWalkNamespace (Type, StartHandle, MaxDepth, ACPI_NS_WALK_NO_UNLOCK | ACPI_NS_WALK_TEMP_NODES, AcpiNsDumpOneObjectPath, NULL, (void *) &MaxLevel, NULL); (void) AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); } /******************************************************************************* * * FUNCTION: AcpiNsDumpEntry * * PARAMETERS: Handle - Node to be dumped * DebugLevel - Output level * * RETURN: None * * DESCRIPTION: Dump a single Node * ******************************************************************************/ void AcpiNsDumpEntry ( ACPI_HANDLE Handle, UINT32 DebugLevel) { ACPI_WALK_INFO Info; ACPI_FUNCTION_ENTRY (); Info.DebugLevel = DebugLevel; Info.OwnerId = ACPI_OWNER_ID_MAX; Info.DisplayType = ACPI_DISPLAY_SUMMARY; (void) AcpiNsDumpOneObject (Handle, 1, &Info, NULL); } #ifdef ACPI_ASL_COMPILER /******************************************************************************* * * FUNCTION: AcpiNsDumpTables * * PARAMETERS: SearchBase - Root of subtree to be dumped, or * NS_ALL to dump the entire namespace * MaxDepth - Maximum depth of dump. Use INT_MAX * for an effectively unlimited depth. * * RETURN: None * * DESCRIPTION: Dump the name space, or a portion of it. * ******************************************************************************/ void AcpiNsDumpTables ( ACPI_HANDLE SearchBase, UINT32 MaxDepth) { ACPI_HANDLE SearchHandle = SearchBase; ACPI_FUNCTION_TRACE (NsDumpTables); if (!AcpiGbl_RootNode) { /* * If the name space has not been initialized, * there is nothing to dump. */ ACPI_DEBUG_PRINT ((ACPI_DB_TABLES, "namespace not initialized!\n")); return_VOID; } if (ACPI_NS_ALL == SearchBase) { /* Entire namespace */ SearchHandle = AcpiGbl_RootNode; ACPI_DEBUG_PRINT ((ACPI_DB_TABLES, "\\\n")); } AcpiNsDumpObjects (ACPI_TYPE_ANY, ACPI_DISPLAY_OBJECTS, MaxDepth, ACPI_OWNER_ID_MAX, SearchHandle); return_VOID; } #endif #endif src/acpica/source/components/namespace/nsdumpdv.c000066400000000000000000000221351231470457100225210ustar00rootroot00000000000000/****************************************************************************** * * Module Name: nsdump - table dumping routines for debug * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #define __NSDUMPDV_C__ #include "acpi.h" /* TBD: This entire module is apparently obsolete and should be removed */ #define _COMPONENT ACPI_NAMESPACE ACPI_MODULE_NAME ("nsdumpdv") #ifdef ACPI_OBSOLETE_FUNCTIONS #if defined(ACPI_DEBUG_OUTPUT) || defined(ACPI_DEBUGGER) #include "acnamesp.h" /******************************************************************************* * * FUNCTION: AcpiNsDumpOneDevice * * PARAMETERS: Handle - Node to be dumped * Level - Nesting level of the handle * Context - Passed into WalkNamespace * ReturnValue - Not used * * RETURN: Status * * DESCRIPTION: Dump a single Node that represents a device * This procedure is a UserFunction called by AcpiNsWalkNamespace. * ******************************************************************************/ static ACPI_STATUS AcpiNsDumpOneDevice ( ACPI_HANDLE ObjHandle, UINT32 Level, void *Context, void **ReturnValue) { ACPI_BUFFER Buffer; ACPI_DEVICE_INFO *Info; ACPI_STATUS Status; UINT32 i; ACPI_FUNCTION_NAME (NsDumpOneDevice); Status = AcpiNsDumpOneObject (ObjHandle, Level, Context, ReturnValue); Buffer.Length = ACPI_ALLOCATE_LOCAL_BUFFER; Status = AcpiGetObjectInfo (ObjHandle, &Buffer); if (ACPI_SUCCESS (Status)) { Info = Buffer.Pointer; for (i = 0; i < Level; i++) { ACPI_DEBUG_PRINT_RAW ((ACPI_DB_TABLES, " ")); } ACPI_DEBUG_PRINT_RAW ((ACPI_DB_TABLES, " HID: %s, ADR: %8.8X%8.8X, Status: %X\n", Info->HardwareId.Value, ACPI_FORMAT_UINT64 (Info->Address), Info->CurrentStatus)); ACPI_FREE (Info); } return (Status); } /******************************************************************************* * * FUNCTION: AcpiNsDumpRootDevices * * PARAMETERS: None * * RETURN: None * * DESCRIPTION: Dump all objects of type "device" * ******************************************************************************/ void AcpiNsDumpRootDevices ( void) { ACPI_HANDLE SysBusHandle; ACPI_STATUS Status; ACPI_FUNCTION_NAME (NsDumpRootDevices); /* Only dump the table if tracing is enabled */ if (!(ACPI_LV_TABLES & AcpiDbgLevel)) { return; } Status = AcpiGetHandle (NULL, METHOD_NAME__SB_, &SysBusHandle); if (ACPI_FAILURE (Status)) { return; } ACPI_DEBUG_PRINT ((ACPI_DB_TABLES, "Display of all devices in the namespace:\n")); Status = AcpiNsWalkNamespace (ACPI_TYPE_DEVICE, SysBusHandle, ACPI_UINT32_MAX, ACPI_NS_WALK_NO_UNLOCK, AcpiNsDumpOneDevice, NULL, NULL, NULL); } #endif #endif src/acpica/source/components/namespace/nseval.c000066400000000000000000000502361231470457100221540ustar00rootroot00000000000000/******************************************************************************* * * Module Name: nseval - Object evaluation, includes control method execution * ******************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #define __NSEVAL_C__ #include "acpi.h" #include "accommon.h" #include "acparser.h" #include "acinterp.h" #include "acnamesp.h" #define _COMPONENT ACPI_NAMESPACE ACPI_MODULE_NAME ("nseval") /* Local prototypes */ static void AcpiNsExecModuleCode ( ACPI_OPERAND_OBJECT *MethodObj, ACPI_EVALUATE_INFO *Info); /******************************************************************************* * * FUNCTION: AcpiNsEvaluate * * PARAMETERS: Info - Evaluation info block, contains: * PrefixNode - Prefix or Method/Object Node to execute * RelativePath - Name of method to execute, If NULL, the * Node is the object to execute * Parameters - List of parameters to pass to the method, * terminated by NULL. Params itself may be * NULL if no parameters are being passed. * ReturnObject - Where to put method's return value (if * any). If NULL, no value is returned. * ParameterType - Type of Parameter list * ReturnObject - Where to put method's return value (if * any). If NULL, no value is returned. * Flags - ACPI_IGNORE_RETURN_VALUE to delete return * * RETURN: Status * * DESCRIPTION: Execute a control method or return the current value of an * ACPI namespace object. * * MUTEX: Locks interpreter * ******************************************************************************/ ACPI_STATUS AcpiNsEvaluate ( ACPI_EVALUATE_INFO *Info) { ACPI_STATUS Status; ACPI_FUNCTION_TRACE (NsEvaluate); if (!Info) { return_ACPI_STATUS (AE_BAD_PARAMETER); } if (!Info->Node) { /* * Get the actual namespace node for the target object if we * need to. Handles these cases: * * 1) Null node, valid pathname from root (absolute path) * 2) Node and valid pathname (path relative to Node) * 3) Node, Null pathname */ Status = AcpiNsGetNode (Info->PrefixNode, Info->RelativePathname, ACPI_NS_NO_UPSEARCH, &Info->Node); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } } /* * For a method alias, we must grab the actual method node so that * proper scoping context will be established before execution. */ if (AcpiNsGetType (Info->Node) == ACPI_TYPE_LOCAL_METHOD_ALIAS) { Info->Node = ACPI_CAST_PTR ( ACPI_NAMESPACE_NODE, Info->Node->Object); } /* Complete the info block initialization */ Info->ReturnObject = NULL; Info->NodeFlags = Info->Node->Flags; Info->ObjDesc = AcpiNsGetAttachedObject (Info->Node); ACPI_DEBUG_PRINT ((ACPI_DB_NAMES, "%s [%p] Value %p\n", Info->RelativePathname, Info->Node, AcpiNsGetAttachedObject (Info->Node))); /* Get info if we have a predefined name (_HID, etc.) */ Info->Predefined = AcpiUtMatchPredefinedMethod (Info->Node->Name.Ascii); /* Get the full pathname to the object, for use in warning messages */ Info->FullPathname = AcpiNsGetExternalPathname (Info->Node); if (!Info->FullPathname) { return_ACPI_STATUS (AE_NO_MEMORY); } /* Count the number of arguments being passed in */ Info->ParamCount = 0; if (Info->Parameters) { while (Info->Parameters[Info->ParamCount]) { Info->ParamCount++; } /* Warn on impossible argument count */ if (Info->ParamCount > ACPI_METHOD_NUM_ARGS) { ACPI_WARN_PREDEFINED ((AE_INFO, Info->FullPathname, ACPI_WARN_ALWAYS, "Excess arguments (%u) - using only %u", Info->ParamCount, ACPI_METHOD_NUM_ARGS)); Info->ParamCount = ACPI_METHOD_NUM_ARGS; } } /* * For predefined names: Check that the declared argument count * matches the ACPI spec -- otherwise this is a BIOS error. */ AcpiNsCheckAcpiCompliance (Info->FullPathname, Info->Node, Info->Predefined); /* * For all names: Check that the incoming argument count for * this method/object matches the actual ASL/AML definition. */ AcpiNsCheckArgumentCount (Info->FullPathname, Info->Node, Info->ParamCount, Info->Predefined); /* For predefined names: Typecheck all incoming arguments */ AcpiNsCheckArgumentTypes (Info); /* * Three major evaluation cases: * * 1) Object types that cannot be evaluated by definition * 2) The object is a control method -- execute it * 3) The object is not a method -- just return it's current value */ switch (AcpiNsGetType (Info->Node)) { case ACPI_TYPE_DEVICE: case ACPI_TYPE_EVENT: case ACPI_TYPE_MUTEX: case ACPI_TYPE_REGION: case ACPI_TYPE_THERMAL: case ACPI_TYPE_LOCAL_SCOPE: /* * 1) Disallow evaluation of certain object types. For these, * object evaluation is undefined and not supported. */ ACPI_ERROR ((AE_INFO, "%s: Evaluation of object type [%s] is not supported", Info->FullPathname, AcpiUtGetTypeName (Info->Node->Type))); Status = AE_TYPE; goto Cleanup; case ACPI_TYPE_METHOD: /* * 2) Object is a control method - execute it */ /* Verify that there is a method object associated with this node */ if (!Info->ObjDesc) { ACPI_ERROR ((AE_INFO, "%s: Method has no attached sub-object", Info->FullPathname)); Status = AE_NULL_OBJECT; goto Cleanup; } ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "**** Execute method [%s] at AML address %p length %X\n", Info->FullPathname, Info->ObjDesc->Method.AmlStart + 1, Info->ObjDesc->Method.AmlLength - 1)); /* * Any namespace deletion must acquire both the namespace and * interpreter locks to ensure that no thread is using the portion of * the namespace that is being deleted. * * Execute the method via the interpreter. The interpreter is locked * here before calling into the AML parser */ AcpiExEnterInterpreter (); Status = AcpiPsExecuteMethod (Info); AcpiExExitInterpreter (); break; default: /* * 3) All other non-method objects -- get the current object value */ /* * Some objects require additional resolution steps (e.g., the Node * may be a field that must be read, etc.) -- we can't just grab * the object out of the node. * * Use ResolveNodeToValue() to get the associated value. * * NOTE: we can get away with passing in NULL for a walk state because * the Node is guaranteed to not be a reference to either a method * local or a method argument (because this interface is never called * from a running method.) * * Even though we do not directly invoke the interpreter for object * resolution, we must lock it because we could access an OpRegion. * The OpRegion access code assumes that the interpreter is locked. */ AcpiExEnterInterpreter (); /* TBD: ResolveNodeToValue has a strange interface, fix */ Info->ReturnObject = ACPI_CAST_PTR (ACPI_OPERAND_OBJECT, Info->Node); Status = AcpiExResolveNodeToValue (ACPI_CAST_INDIRECT_PTR ( ACPI_NAMESPACE_NODE, &Info->ReturnObject), NULL); AcpiExExitInterpreter (); if (ACPI_FAILURE (Status)) { goto Cleanup; } ACPI_DEBUG_PRINT ((ACPI_DB_NAMES, "Returned object %p [%s]\n", Info->ReturnObject, AcpiUtGetObjectTypeName (Info->ReturnObject))); Status = AE_CTRL_RETURN_VALUE; /* Always has a "return value" */ break; } /* * For predefined names, check the return value against the ACPI * specification. Some incorrect return value types are repaired. */ (void) AcpiNsCheckReturnValue (Info->Node, Info, Info->ParamCount, Status, &Info->ReturnObject); /* Check if there is a return value that must be dealt with */ if (Status == AE_CTRL_RETURN_VALUE) { /* If caller does not want the return value, delete it */ if (Info->Flags & ACPI_IGNORE_RETURN_VALUE) { AcpiUtRemoveReference (Info->ReturnObject); Info->ReturnObject = NULL; } /* Map AE_CTRL_RETURN_VALUE to AE_OK, we are done with it */ Status = AE_OK; } ACPI_DEBUG_PRINT ((ACPI_DB_NAMES, "*** Completed evaluation of object %s ***\n", Info->RelativePathname)); Cleanup: /* * Namespace was unlocked by the handling AcpiNs* function, so we * just free the pathname and return */ ACPI_FREE (Info->FullPathname); Info->FullPathname = NULL; return_ACPI_STATUS (Status); } /******************************************************************************* * * FUNCTION: AcpiNsExecModuleCodeList * * PARAMETERS: None * * RETURN: None. Exceptions during method execution are ignored, since * we cannot abort a table load. * * DESCRIPTION: Execute all elements of the global module-level code list. * Each element is executed as a single control method. * ******************************************************************************/ void AcpiNsExecModuleCodeList ( void) { ACPI_OPERAND_OBJECT *Prev; ACPI_OPERAND_OBJECT *Next; ACPI_EVALUATE_INFO *Info; UINT32 MethodCount = 0; ACPI_FUNCTION_TRACE (NsExecModuleCodeList); /* Exit now if the list is empty */ Next = AcpiGbl_ModuleCodeList; if (!Next) { return_VOID; } /* Allocate the evaluation information block */ Info = ACPI_ALLOCATE (sizeof (ACPI_EVALUATE_INFO)); if (!Info) { return_VOID; } /* Walk the list, executing each "method" */ while (Next) { Prev = Next; Next = Next->Method.Mutex; /* Clear the link field and execute the method */ Prev->Method.Mutex = NULL; AcpiNsExecModuleCode (Prev, Info); MethodCount++; /* Delete the (temporary) method object */ AcpiUtRemoveReference (Prev); } ACPI_INFO ((AE_INFO, "Executed %u blocks of module-level executable AML code", MethodCount)); ACPI_FREE (Info); AcpiGbl_ModuleCodeList = NULL; return_VOID; } /******************************************************************************* * * FUNCTION: AcpiNsExecModuleCode * * PARAMETERS: MethodObj - Object container for the module-level code * Info - Info block for method evaluation * * RETURN: None. Exceptions during method execution are ignored, since * we cannot abort a table load. * * DESCRIPTION: Execute a control method containing a block of module-level * executable AML code. The control method is temporarily * installed to the root node, then evaluated. * ******************************************************************************/ static void AcpiNsExecModuleCode ( ACPI_OPERAND_OBJECT *MethodObj, ACPI_EVALUATE_INFO *Info) { ACPI_OPERAND_OBJECT *ParentObj; ACPI_NAMESPACE_NODE *ParentNode; ACPI_OBJECT_TYPE Type; ACPI_STATUS Status; ACPI_FUNCTION_TRACE (NsExecModuleCode); /* * Get the parent node. We cheat by using the NextObject field * of the method object descriptor. */ ParentNode = ACPI_CAST_PTR (ACPI_NAMESPACE_NODE, MethodObj->Method.NextObject); Type = AcpiNsGetType (ParentNode); /* * Get the region handler and save it in the method object. We may need * this if an operation region declaration causes a _REG method to be run. * * We can't do this in AcpiPsLinkModuleCode because * AcpiGbl_RootNode->Object is NULL at PASS1. */ if ((Type == ACPI_TYPE_DEVICE) && ParentNode->Object) { MethodObj->Method.Dispatch.Handler = ParentNode->Object->Device.Handler; } /* Must clear NextObject (AcpiNsAttachObject needs the field) */ MethodObj->Method.NextObject = NULL; /* Initialize the evaluation information block */ ACPI_MEMSET (Info, 0, sizeof (ACPI_EVALUATE_INFO)); Info->PrefixNode = ParentNode; /* * Get the currently attached parent object. Add a reference, because the * ref count will be decreased when the method object is installed to * the parent node. */ ParentObj = AcpiNsGetAttachedObject (ParentNode); if (ParentObj) { AcpiUtAddReference (ParentObj); } /* Install the method (module-level code) in the parent node */ Status = AcpiNsAttachObject (ParentNode, MethodObj, ACPI_TYPE_METHOD); if (ACPI_FAILURE (Status)) { goto Exit; } /* Execute the parent node as a control method */ Status = AcpiNsEvaluate (Info); ACPI_DEBUG_PRINT ((ACPI_DB_INIT, "Executed module-level code at %p\n", MethodObj->Method.AmlStart)); /* Delete a possible implicit return value (in slack mode) */ if (Info->ReturnObject) { AcpiUtRemoveReference (Info->ReturnObject); } /* Detach the temporary method object */ AcpiNsDetachObject (ParentNode); /* Restore the original parent object */ if (ParentObj) { Status = AcpiNsAttachObject (ParentNode, ParentObj, Type); } else { ParentNode->Type = (UINT8) Type; } Exit: if (ParentObj) { AcpiUtRemoveReference (ParentObj); } return_VOID; } src/acpica/source/components/namespace/nsinit.c000066400000000000000000000563061231470457100221740ustar00rootroot00000000000000/****************************************************************************** * * Module Name: nsinit - namespace initialization * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #define __NSXFINIT_C__ #include "acpi.h" #include "accommon.h" #include "acnamesp.h" #include "acdispat.h" #include "acinterp.h" #define _COMPONENT ACPI_NAMESPACE ACPI_MODULE_NAME ("nsinit") /* Local prototypes */ static ACPI_STATUS AcpiNsInitOneObject ( ACPI_HANDLE ObjHandle, UINT32 Level, void *Context, void **ReturnValue); static ACPI_STATUS AcpiNsInitOneDevice ( ACPI_HANDLE ObjHandle, UINT32 NestingLevel, void *Context, void **ReturnValue); static ACPI_STATUS AcpiNsFindIniMethods ( ACPI_HANDLE ObjHandle, UINT32 NestingLevel, void *Context, void **ReturnValue); /******************************************************************************* * * FUNCTION: AcpiNsInitializeObjects * * PARAMETERS: None * * RETURN: Status * * DESCRIPTION: Walk the entire namespace and perform any necessary * initialization on the objects found therein * ******************************************************************************/ ACPI_STATUS AcpiNsInitializeObjects ( void) { ACPI_STATUS Status; ACPI_INIT_WALK_INFO Info; ACPI_FUNCTION_TRACE (NsInitializeObjects); ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, "**** Starting initialization of namespace objects ****\n")); ACPI_DEBUG_PRINT_RAW ((ACPI_DB_INIT, "Completing Region/Field/Buffer/Package initialization:\n")); /* Set all init info to zero */ ACPI_MEMSET (&Info, 0, sizeof (ACPI_INIT_WALK_INFO)); /* Walk entire namespace from the supplied root */ Status = AcpiWalkNamespace (ACPI_TYPE_ANY, ACPI_ROOT_OBJECT, ACPI_UINT32_MAX, AcpiNsInitOneObject, NULL, &Info, NULL); if (ACPI_FAILURE (Status)) { ACPI_EXCEPTION ((AE_INFO, Status, "During WalkNamespace")); } ACPI_DEBUG_PRINT_RAW ((ACPI_DB_INIT, " Initialized %u/%u Regions %u/%u Fields %u/%u " "Buffers %u/%u Packages (%u nodes)\n", Info.OpRegionInit, Info.OpRegionCount, Info.FieldInit, Info.FieldCount, Info.BufferInit, Info.BufferCount, Info.PackageInit, Info.PackageCount, Info.ObjectCount)); ACPI_DEBUG_PRINT ((ACPI_DB_DISPATCH, "%u Control Methods found\n%u Op Regions found\n", Info.MethodCount, Info.OpRegionCount)); return_ACPI_STATUS (AE_OK); } /******************************************************************************* * * FUNCTION: AcpiNsInitializeDevices * * PARAMETERS: None * * RETURN: ACPI_STATUS * * DESCRIPTION: Walk the entire namespace and initialize all ACPI devices. * This means running _INI on all present devices. * * Note: We install PCI config space handler on region access, * not here. * ******************************************************************************/ ACPI_STATUS AcpiNsInitializeDevices ( void) { ACPI_STATUS Status; ACPI_DEVICE_WALK_INFO Info; ACPI_FUNCTION_TRACE (NsInitializeDevices); /* Init counters */ Info.DeviceCount = 0; Info.Num_STA = 0; Info.Num_INI = 0; ACPI_DEBUG_PRINT_RAW ((ACPI_DB_INIT, "Initializing Device/Processor/Thermal objects " "and executing _INI/_STA methods:\n")); /* Tree analysis: find all subtrees that contain _INI methods */ Status = AcpiNsWalkNamespace (ACPI_TYPE_ANY, ACPI_ROOT_OBJECT, ACPI_UINT32_MAX, FALSE, AcpiNsFindIniMethods, NULL, &Info, NULL); if (ACPI_FAILURE (Status)) { goto ErrorExit; } /* Allocate the evaluation information block */ Info.EvaluateInfo = ACPI_ALLOCATE_ZEROED (sizeof (ACPI_EVALUATE_INFO)); if (!Info.EvaluateInfo) { Status = AE_NO_MEMORY; goto ErrorExit; } /* * Execute the "global" _INI method that may appear at the root. This * support is provided for Windows compatibility (Vista+) and is not * part of the ACPI specification. */ Info.EvaluateInfo->PrefixNode = AcpiGbl_RootNode; Info.EvaluateInfo->RelativePathname = METHOD_NAME__INI; Info.EvaluateInfo->Parameters = NULL; Info.EvaluateInfo->Flags = ACPI_IGNORE_RETURN_VALUE; Status = AcpiNsEvaluate (Info.EvaluateInfo); if (ACPI_SUCCESS (Status)) { Info.Num_INI++; } /* Walk namespace to execute all _INIs on present devices */ Status = AcpiNsWalkNamespace (ACPI_TYPE_ANY, ACPI_ROOT_OBJECT, ACPI_UINT32_MAX, FALSE, AcpiNsInitOneDevice, NULL, &Info, NULL); /* * Any _OSI requests should be completed by now. If the BIOS has * requested any Windows OSI strings, we will always truncate * I/O addresses to 16 bits -- for Windows compatibility. */ if (AcpiGbl_OsiData >= ACPI_OSI_WIN_2000) { AcpiGbl_TruncateIoAddresses = TRUE; } ACPI_FREE (Info.EvaluateInfo); if (ACPI_FAILURE (Status)) { goto ErrorExit; } ACPI_DEBUG_PRINT_RAW ((ACPI_DB_INIT, " Executed %u _INI methods requiring %u _STA executions " "(examined %u objects)\n", Info.Num_INI, Info.Num_STA, Info.DeviceCount)); return_ACPI_STATUS (Status); ErrorExit: ACPI_EXCEPTION ((AE_INFO, Status, "During device initialization")); return_ACPI_STATUS (Status); } /******************************************************************************* * * FUNCTION: AcpiNsInitOneObject * * PARAMETERS: ObjHandle - Node * Level - Current nesting level * Context - Points to a init info struct * ReturnValue - Not used * * RETURN: Status * * DESCRIPTION: Callback from AcpiWalkNamespace. Invoked for every object * within the namespace. * * Currently, the only objects that require initialization are: * 1) Methods * 2) Op Regions * ******************************************************************************/ static ACPI_STATUS AcpiNsInitOneObject ( ACPI_HANDLE ObjHandle, UINT32 Level, void *Context, void **ReturnValue) { ACPI_OBJECT_TYPE Type; ACPI_STATUS Status = AE_OK; ACPI_INIT_WALK_INFO *Info = (ACPI_INIT_WALK_INFO *) Context; ACPI_NAMESPACE_NODE *Node = (ACPI_NAMESPACE_NODE *) ObjHandle; ACPI_OPERAND_OBJECT *ObjDesc; ACPI_FUNCTION_NAME (NsInitOneObject); Info->ObjectCount++; /* And even then, we are only interested in a few object types */ Type = AcpiNsGetType (ObjHandle); ObjDesc = AcpiNsGetAttachedObject (Node); if (!ObjDesc) { return (AE_OK); } /* Increment counters for object types we are looking for */ switch (Type) { case ACPI_TYPE_REGION: Info->OpRegionCount++; break; case ACPI_TYPE_BUFFER_FIELD: Info->FieldCount++; break; case ACPI_TYPE_LOCAL_BANK_FIELD: Info->FieldCount++; break; case ACPI_TYPE_BUFFER: Info->BufferCount++; break; case ACPI_TYPE_PACKAGE: Info->PackageCount++; break; default: /* No init required, just exit now */ return (AE_OK); } /* If the object is already initialized, nothing else to do */ if (ObjDesc->Common.Flags & AOPOBJ_DATA_VALID) { return (AE_OK); } /* Must lock the interpreter before executing AML code */ AcpiExEnterInterpreter (); /* * Each of these types can contain executable AML code within the * declaration. */ switch (Type) { case ACPI_TYPE_REGION: Info->OpRegionInit++; Status = AcpiDsGetRegionArguments (ObjDesc); break; case ACPI_TYPE_BUFFER_FIELD: Info->FieldInit++; Status = AcpiDsGetBufferFieldArguments (ObjDesc); break; case ACPI_TYPE_LOCAL_BANK_FIELD: Info->FieldInit++; Status = AcpiDsGetBankFieldArguments (ObjDesc); break; case ACPI_TYPE_BUFFER: Info->BufferInit++; Status = AcpiDsGetBufferArguments (ObjDesc); break; case ACPI_TYPE_PACKAGE: Info->PackageInit++; Status = AcpiDsGetPackageArguments (ObjDesc); break; default: /* No other types can get here */ break; } if (ACPI_FAILURE (Status)) { ACPI_EXCEPTION ((AE_INFO, Status, "Could not execute arguments for [%4.4s] (%s)", AcpiUtGetNodeName (Node), AcpiUtGetTypeName (Type))); } /* * We ignore errors from above, and always return OK, since we don't want * to abort the walk on any single error. */ AcpiExExitInterpreter (); return (AE_OK); } /******************************************************************************* * * FUNCTION: AcpiNsFindIniMethods * * PARAMETERS: ACPI_WALK_CALLBACK * * RETURN: ACPI_STATUS * * DESCRIPTION: Called during namespace walk. Finds objects named _INI under * device/processor/thermal objects, and marks the entire subtree * with a SUBTREE_HAS_INI flag. This flag is used during the * subsequent device initialization walk to avoid entire subtrees * that do not contain an _INI. * ******************************************************************************/ static ACPI_STATUS AcpiNsFindIniMethods ( ACPI_HANDLE ObjHandle, UINT32 NestingLevel, void *Context, void **ReturnValue) { ACPI_DEVICE_WALK_INFO *Info = ACPI_CAST_PTR (ACPI_DEVICE_WALK_INFO, Context); ACPI_NAMESPACE_NODE *Node; ACPI_NAMESPACE_NODE *ParentNode; /* Keep count of device/processor/thermal objects */ Node = ACPI_CAST_PTR (ACPI_NAMESPACE_NODE, ObjHandle); if ((Node->Type == ACPI_TYPE_DEVICE) || (Node->Type == ACPI_TYPE_PROCESSOR) || (Node->Type == ACPI_TYPE_THERMAL)) { Info->DeviceCount++; return (AE_OK); } /* We are only looking for methods named _INI */ if (!ACPI_COMPARE_NAME (Node->Name.Ascii, METHOD_NAME__INI)) { return (AE_OK); } /* * The only _INI methods that we care about are those that are * present under Device, Processor, and Thermal objects. */ ParentNode = Node->Parent; switch (ParentNode->Type) { case ACPI_TYPE_DEVICE: case ACPI_TYPE_PROCESSOR: case ACPI_TYPE_THERMAL: /* Mark parent and bubble up the INI present flag to the root */ while (ParentNode) { ParentNode->Flags |= ANOBJ_SUBTREE_HAS_INI; ParentNode = ParentNode->Parent; } break; default: break; } return (AE_OK); } /******************************************************************************* * * FUNCTION: AcpiNsInitOneDevice * * PARAMETERS: ACPI_WALK_CALLBACK * * RETURN: ACPI_STATUS * * DESCRIPTION: This is called once per device soon after ACPI is enabled * to initialize each device. It determines if the device is * present, and if so, calls _INI. * ******************************************************************************/ static ACPI_STATUS AcpiNsInitOneDevice ( ACPI_HANDLE ObjHandle, UINT32 NestingLevel, void *Context, void **ReturnValue) { ACPI_DEVICE_WALK_INFO *WalkInfo = ACPI_CAST_PTR (ACPI_DEVICE_WALK_INFO, Context); ACPI_EVALUATE_INFO *Info = WalkInfo->EvaluateInfo; UINT32 Flags; ACPI_STATUS Status; ACPI_NAMESPACE_NODE *DeviceNode; ACPI_FUNCTION_TRACE (NsInitOneDevice); /* We are interested in Devices, Processors and ThermalZones only */ DeviceNode = ACPI_CAST_PTR (ACPI_NAMESPACE_NODE, ObjHandle); if ((DeviceNode->Type != ACPI_TYPE_DEVICE) && (DeviceNode->Type != ACPI_TYPE_PROCESSOR) && (DeviceNode->Type != ACPI_TYPE_THERMAL)) { return_ACPI_STATUS (AE_OK); } /* * Because of an earlier namespace analysis, all subtrees that contain an * _INI method are tagged. * * If this device subtree does not contain any _INI methods, we * can exit now and stop traversing this entire subtree. */ if (!(DeviceNode->Flags & ANOBJ_SUBTREE_HAS_INI)) { return_ACPI_STATUS (AE_CTRL_DEPTH); } /* * Run _STA to determine if this device is present and functioning. We * must know this information for two important reasons (from ACPI spec): * * 1) We can only run _INI if the device is present. * 2) We must abort the device tree walk on this subtree if the device is * not present and is not functional (we will not examine the children) * * The _STA method is not required to be present under the device, we * assume the device is present if _STA does not exist. */ ACPI_DEBUG_EXEC (AcpiUtDisplayInitPathname ( ACPI_TYPE_METHOD, DeviceNode, METHOD_NAME__STA)); Status = AcpiUtExecute_STA (DeviceNode, &Flags); if (ACPI_FAILURE (Status)) { /* Ignore error and move on to next device */ return_ACPI_STATUS (AE_OK); } /* * Flags == -1 means that _STA was not found. In this case, we assume that * the device is both present and functional. * * From the ACPI spec, description of _STA: * * "If a device object (including the processor object) does not have an * _STA object, then OSPM assumes that all of the above bits are set (in * other words, the device is present, ..., and functioning)" */ if (Flags != ACPI_UINT32_MAX) { WalkInfo->Num_STA++; } /* * Examine the PRESENT and FUNCTIONING status bits * * Note: ACPI spec does not seem to specify behavior for the present but * not functioning case, so we assume functioning if present. */ if (!(Flags & ACPI_STA_DEVICE_PRESENT)) { /* Device is not present, we must examine the Functioning bit */ if (Flags & ACPI_STA_DEVICE_FUNCTIONING) { /* * Device is not present but is "functioning". In this case, * we will not run _INI, but we continue to examine the children * of this device. * * From the ACPI spec, description of _STA: (Note - no mention * of whether to run _INI or not on the device in question) * * "_STA may return bit 0 clear (not present) with bit 3 set * (device is functional). This case is used to indicate a valid * device for which no device driver should be loaded (for example, * a bridge device.) Children of this device may be present and * valid. OSPM should continue enumeration below a device whose * _STA returns this bit combination" */ return_ACPI_STATUS (AE_OK); } else { /* * Device is not present and is not functioning. We must abort the * walk of this subtree immediately -- don't look at the children * of such a device. * * From the ACPI spec, description of _INI: * * "If the _STA method indicates that the device is not present, * OSPM will not run the _INI and will not examine the children * of the device for _INI methods" */ return_ACPI_STATUS (AE_CTRL_DEPTH); } } /* * The device is present or is assumed present if no _STA exists. * Run the _INI if it exists (not required to exist) * * Note: We know there is an _INI within this subtree, but it may not be * under this particular device, it may be lower in the branch. */ ACPI_DEBUG_EXEC (AcpiUtDisplayInitPathname ( ACPI_TYPE_METHOD, DeviceNode, METHOD_NAME__INI)); ACPI_MEMSET (Info, 0, sizeof (ACPI_EVALUATE_INFO)); Info->PrefixNode = DeviceNode; Info->RelativePathname = METHOD_NAME__INI; Info->Parameters = NULL; Info->Flags = ACPI_IGNORE_RETURN_VALUE; Status = AcpiNsEvaluate (Info); if (ACPI_SUCCESS (Status)) { WalkInfo->Num_INI++; } #ifdef ACPI_DEBUG_OUTPUT else if (Status != AE_NOT_FOUND) { /* Ignore error and move on to next device */ char *ScopeName = AcpiNsGetExternalPathname (Info->Node); ACPI_EXCEPTION ((AE_INFO, Status, "during %s._INI execution", ScopeName)); ACPI_FREE (ScopeName); } #endif /* Ignore errors from above */ Status = AE_OK; /* * The _INI method has been run if present; call the Global Initialization * Handler for this device. */ if (AcpiGbl_InitHandler) { Status = AcpiGbl_InitHandler (DeviceNode, ACPI_INIT_DEVICE_INI); } return_ACPI_STATUS (Status); } src/acpica/source/components/namespace/nsload.c000066400000000000000000000336111231470457100221420ustar00rootroot00000000000000/****************************************************************************** * * Module Name: nsload - namespace loading/expanding/contracting procedures * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #define __NSLOAD_C__ #include "acpi.h" #include "accommon.h" #include "acnamesp.h" #include "acdispat.h" #include "actables.h" #define _COMPONENT ACPI_NAMESPACE ACPI_MODULE_NAME ("nsload") /* Local prototypes */ #ifdef ACPI_FUTURE_IMPLEMENTATION ACPI_STATUS AcpiNsUnloadNamespace ( ACPI_HANDLE Handle); static ACPI_STATUS AcpiNsDeleteSubtree ( ACPI_HANDLE StartHandle); #endif #ifndef ACPI_NO_METHOD_EXECUTION /******************************************************************************* * * FUNCTION: AcpiNsLoadTable * * PARAMETERS: TableIndex - Index for table to be loaded * Node - Owning NS node * * RETURN: Status * * DESCRIPTION: Load one ACPI table into the namespace * ******************************************************************************/ ACPI_STATUS AcpiNsLoadTable ( UINT32 TableIndex, ACPI_NAMESPACE_NODE *Node) { ACPI_STATUS Status; ACPI_FUNCTION_TRACE (NsLoadTable); /* * Parse the table and load the namespace with all named * objects found within. Control methods are NOT parsed * at this time. In fact, the control methods cannot be * parsed until the entire namespace is loaded, because * if a control method makes a forward reference (call) * to another control method, we can't continue parsing * because we don't know how many arguments to parse next! */ Status = AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } /* If table already loaded into namespace, just return */ if (AcpiTbIsTableLoaded (TableIndex)) { Status = AE_ALREADY_EXISTS; goto Unlock; } ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "**** Loading table into namespace ****\n")); Status = AcpiTbAllocateOwnerId (TableIndex); if (ACPI_FAILURE (Status)) { goto Unlock; } Status = AcpiNsParseTable (TableIndex, Node); if (ACPI_SUCCESS (Status)) { AcpiTbSetTableLoadedFlag (TableIndex, TRUE); } else { (void) AcpiTbReleaseOwnerId (TableIndex); } Unlock: (void) AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } /* * Now we can parse the control methods. We always parse * them here for a sanity check, and if configured for * just-in-time parsing, we delete the control method * parse trees. */ ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "**** Begin Table Object Initialization\n")); Status = AcpiDsInitializeObjects (TableIndex, Node); ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "**** Completed Table Object Initialization\n")); return_ACPI_STATUS (Status); } #ifdef ACPI_OBSOLETE_FUNCTIONS /******************************************************************************* * * FUNCTION: AcpiLoadNamespace * * PARAMETERS: None * * RETURN: Status * * DESCRIPTION: Load the name space from what ever is pointed to by DSDT. * (DSDT points to either the BIOS or a buffer.) * ******************************************************************************/ ACPI_STATUS AcpiNsLoadNamespace ( void) { ACPI_STATUS Status; ACPI_FUNCTION_TRACE (AcpiLoadNameSpace); /* There must be at least a DSDT installed */ if (AcpiGbl_DSDT == NULL) { ACPI_ERROR ((AE_INFO, "DSDT is not in memory")); return_ACPI_STATUS (AE_NO_ACPI_TABLES); } /* * Load the namespace. The DSDT is required, * but the SSDT and PSDT tables are optional. */ Status = AcpiNsLoadTableByType (ACPI_TABLE_ID_DSDT); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } /* Ignore exceptions from these */ (void) AcpiNsLoadTableByType (ACPI_TABLE_ID_SSDT); (void) AcpiNsLoadTableByType (ACPI_TABLE_ID_PSDT); ACPI_DEBUG_PRINT_RAW ((ACPI_DB_INIT, "ACPI Namespace successfully loaded at root %p\n", AcpiGbl_RootNode)); return_ACPI_STATUS (Status); } #endif #ifdef ACPI_FUTURE_IMPLEMENTATION /******************************************************************************* * * FUNCTION: AcpiNsDeleteSubtree * * PARAMETERS: StartHandle - Handle in namespace where search begins * * RETURNS Status * * DESCRIPTION: Walks the namespace starting at the given handle and deletes * all objects, entries, and scopes in the entire subtree. * * Namespace/Interpreter should be locked or the subsystem should * be in shutdown before this routine is called. * ******************************************************************************/ static ACPI_STATUS AcpiNsDeleteSubtree ( ACPI_HANDLE StartHandle) { ACPI_STATUS Status; ACPI_HANDLE ChildHandle; ACPI_HANDLE ParentHandle; ACPI_HANDLE NextChildHandle; ACPI_HANDLE Dummy; UINT32 Level; ACPI_FUNCTION_TRACE (NsDeleteSubtree); ParentHandle = StartHandle; ChildHandle = NULL; Level = 1; /* * Traverse the tree of objects until we bubble back up * to where we started. */ while (Level > 0) { /* Attempt to get the next object in this scope */ Status = AcpiGetNextObject (ACPI_TYPE_ANY, ParentHandle, ChildHandle, &NextChildHandle); ChildHandle = NextChildHandle; /* Did we get a new object? */ if (ACPI_SUCCESS (Status)) { /* Check if this object has any children */ if (ACPI_SUCCESS (AcpiGetNextObject (ACPI_TYPE_ANY, ChildHandle, NULL, &Dummy))) { /* * There is at least one child of this object, * visit the object */ Level++; ParentHandle = ChildHandle; ChildHandle = NULL; } } else { /* * No more children in this object, go back up to * the object's parent */ Level--; /* Delete all children now */ AcpiNsDeleteChildren (ChildHandle); ChildHandle = ParentHandle; Status = AcpiGetParent (ParentHandle, &ParentHandle); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } } } /* Now delete the starting object, and we are done */ AcpiNsRemoveNode (ChildHandle); return_ACPI_STATUS (AE_OK); } /******************************************************************************* * * FUNCTION: AcpiNsUnloadNameSpace * * PARAMETERS: Handle - Root of namespace subtree to be deleted * * RETURN: Status * * DESCRIPTION: Shrinks the namespace, typically in response to an undocking * event. Deletes an entire subtree starting from (and * including) the given handle. * ******************************************************************************/ ACPI_STATUS AcpiNsUnloadNamespace ( ACPI_HANDLE Handle) { ACPI_STATUS Status; ACPI_FUNCTION_TRACE (NsUnloadNameSpace); /* Parameter validation */ if (!AcpiGbl_RootNode) { return_ACPI_STATUS (AE_NO_NAMESPACE); } if (!Handle) { return_ACPI_STATUS (AE_BAD_PARAMETER); } /* This function does the real work */ Status = AcpiNsDeleteSubtree (Handle); return_ACPI_STATUS (Status); } #endif #endif src/acpica/source/components/namespace/nsnames.c000066400000000000000000000312121231470457100223210ustar00rootroot00000000000000/******************************************************************************* * * Module Name: nsnames - Name manipulation and search * ******************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #define __NSNAMES_C__ #include "acpi.h" #include "accommon.h" #include "amlcode.h" #include "acnamesp.h" #define _COMPONENT ACPI_NAMESPACE ACPI_MODULE_NAME ("nsnames") /******************************************************************************* * * FUNCTION: AcpiNsBuildExternalPath * * PARAMETERS: Node - NS node whose pathname is needed * Size - Size of the pathname * *NameBuffer - Where to return the pathname * * RETURN: Status * Places the pathname into the NameBuffer, in external format * (name segments separated by path separators) * * DESCRIPTION: Generate a full pathaname * ******************************************************************************/ ACPI_STATUS AcpiNsBuildExternalPath ( ACPI_NAMESPACE_NODE *Node, ACPI_SIZE Size, char *NameBuffer) { ACPI_SIZE Index; ACPI_NAMESPACE_NODE *ParentNode; ACPI_FUNCTION_ENTRY (); /* Special case for root */ Index = Size - 1; if (Index < ACPI_NAME_SIZE) { NameBuffer[0] = AML_ROOT_PREFIX; NameBuffer[1] = 0; return (AE_OK); } /* Store terminator byte, then build name backwards */ ParentNode = Node; NameBuffer[Index] = 0; while ((Index > ACPI_NAME_SIZE) && (ParentNode != AcpiGbl_RootNode)) { Index -= ACPI_NAME_SIZE; /* Put the name into the buffer */ ACPI_MOVE_32_TO_32 ((NameBuffer + Index), &ParentNode->Name); ParentNode = ParentNode->Parent; /* Prefix name with the path separator */ Index--; NameBuffer[Index] = ACPI_PATH_SEPARATOR; } /* Overwrite final separator with the root prefix character */ NameBuffer[Index] = AML_ROOT_PREFIX; if (Index != 0) { ACPI_ERROR ((AE_INFO, "Could not construct external pathname; index=%u, size=%u, Path=%s", (UINT32) Index, (UINT32) Size, &NameBuffer[Size])); return (AE_BAD_PARAMETER); } return (AE_OK); } /******************************************************************************* * * FUNCTION: AcpiNsGetExternalPathname * * PARAMETERS: Node - Namespace node whose pathname is needed * * RETURN: Pointer to storage containing the fully qualified name of * the node, In external format (name segments separated by path * separators.) * * DESCRIPTION: Used to obtain the full pathname to a namespace node, usually * for error and debug statements. * ******************************************************************************/ char * AcpiNsGetExternalPathname ( ACPI_NAMESPACE_NODE *Node) { ACPI_STATUS Status; char *NameBuffer; ACPI_SIZE Size; ACPI_FUNCTION_TRACE_PTR (NsGetExternalPathname, Node); /* Calculate required buffer size based on depth below root */ Size = AcpiNsGetPathnameLength (Node); if (!Size) { return_PTR (NULL); } /* Allocate a buffer to be returned to caller */ NameBuffer = ACPI_ALLOCATE_ZEROED (Size); if (!NameBuffer) { ACPI_ERROR ((AE_INFO, "Could not allocate %u bytes", (UINT32) Size)); return_PTR (NULL); } /* Build the path in the allocated buffer */ Status = AcpiNsBuildExternalPath (Node, Size, NameBuffer); if (ACPI_FAILURE (Status)) { ACPI_FREE (NameBuffer); return_PTR (NULL); } return_PTR (NameBuffer); } /******************************************************************************* * * FUNCTION: AcpiNsGetPathnameLength * * PARAMETERS: Node - Namespace node * * RETURN: Length of path, including prefix * * DESCRIPTION: Get the length of the pathname string for this node * ******************************************************************************/ ACPI_SIZE AcpiNsGetPathnameLength ( ACPI_NAMESPACE_NODE *Node) { ACPI_SIZE Size; ACPI_NAMESPACE_NODE *NextNode; ACPI_FUNCTION_ENTRY (); /* * Compute length of pathname as 5 * number of name segments. * Go back up the parent tree to the root */ Size = 0; NextNode = Node; while (NextNode && (NextNode != AcpiGbl_RootNode)) { if (ACPI_GET_DESCRIPTOR_TYPE (NextNode) != ACPI_DESC_TYPE_NAMED) { ACPI_ERROR ((AE_INFO, "Invalid Namespace Node (%p) while traversing namespace", NextNode)); return (0); } Size += ACPI_PATH_SEGMENT_LENGTH; NextNode = NextNode->Parent; } if (!Size) { Size = 1; /* Root node case */ } return (Size + 1); /* +1 for null string terminator */ } /******************************************************************************* * * FUNCTION: AcpiNsHandleToPathname * * PARAMETERS: TargetHandle - Handle of named object whose name is * to be found * Buffer - Where the pathname is returned * * RETURN: Status, Buffer is filled with pathname if status is AE_OK * * DESCRIPTION: Build and return a full namespace pathname * ******************************************************************************/ ACPI_STATUS AcpiNsHandleToPathname ( ACPI_HANDLE TargetHandle, ACPI_BUFFER *Buffer) { ACPI_STATUS Status; ACPI_NAMESPACE_NODE *Node; ACPI_SIZE RequiredSize; ACPI_FUNCTION_TRACE_PTR (NsHandleToPathname, TargetHandle); Node = AcpiNsValidateHandle (TargetHandle); if (!Node) { return_ACPI_STATUS (AE_BAD_PARAMETER); } /* Determine size required for the caller buffer */ RequiredSize = AcpiNsGetPathnameLength (Node); if (!RequiredSize) { return_ACPI_STATUS (AE_BAD_PARAMETER); } /* Validate/Allocate/Clear caller buffer */ Status = AcpiUtInitializeBuffer (Buffer, RequiredSize); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } /* Build the path in the caller buffer */ Status = AcpiNsBuildExternalPath (Node, RequiredSize, Buffer->Pointer); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "%s [%X]\n", (char *) Buffer->Pointer, (UINT32) RequiredSize)); return_ACPI_STATUS (AE_OK); } src/acpica/source/components/namespace/nsobject.c000066400000000000000000000435721231470457100225000ustar00rootroot00000000000000/******************************************************************************* * * Module Name: nsobject - Utilities for objects attached to namespace * table entries * ******************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #define __NSOBJECT_C__ #include "acpi.h" #include "accommon.h" #include "acnamesp.h" #define _COMPONENT ACPI_NAMESPACE ACPI_MODULE_NAME ("nsobject") /******************************************************************************* * * FUNCTION: AcpiNsAttachObject * * PARAMETERS: Node - Parent Node * Object - Object to be attached * Type - Type of object, or ACPI_TYPE_ANY if not * known * * RETURN: Status * * DESCRIPTION: Record the given object as the value associated with the * name whose ACPI_HANDLE is passed. If Object is NULL * and Type is ACPI_TYPE_ANY, set the name as having no value. * Note: Future may require that the Node->Flags field be passed * as a parameter. * * MUTEX: Assumes namespace is locked * ******************************************************************************/ ACPI_STATUS AcpiNsAttachObject ( ACPI_NAMESPACE_NODE *Node, ACPI_OPERAND_OBJECT *Object, ACPI_OBJECT_TYPE Type) { ACPI_OPERAND_OBJECT *ObjDesc; ACPI_OPERAND_OBJECT *LastObjDesc; ACPI_OBJECT_TYPE ObjectType = ACPI_TYPE_ANY; ACPI_FUNCTION_TRACE (NsAttachObject); /* * Parameter validation */ if (!Node) { /* Invalid handle */ ACPI_ERROR ((AE_INFO, "Null NamedObj handle")); return_ACPI_STATUS (AE_BAD_PARAMETER); } if (!Object && (ACPI_TYPE_ANY != Type)) { /* Null object */ ACPI_ERROR ((AE_INFO, "Null object, but type not ACPI_TYPE_ANY")); return_ACPI_STATUS (AE_BAD_PARAMETER); } if (ACPI_GET_DESCRIPTOR_TYPE (Node) != ACPI_DESC_TYPE_NAMED) { /* Not a name handle */ ACPI_ERROR ((AE_INFO, "Invalid handle %p [%s]", Node, AcpiUtGetDescriptorName (Node))); return_ACPI_STATUS (AE_BAD_PARAMETER); } /* Check if this object is already attached */ if (Node->Object == Object) { ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Obj %p already installed in NameObj %p\n", Object, Node)); return_ACPI_STATUS (AE_OK); } /* If null object, we will just install it */ if (!Object) { ObjDesc = NULL; ObjectType = ACPI_TYPE_ANY; } /* * If the source object is a namespace Node with an attached object, * we will use that (attached) object */ else if ((ACPI_GET_DESCRIPTOR_TYPE (Object) == ACPI_DESC_TYPE_NAMED) && ((ACPI_NAMESPACE_NODE *) Object)->Object) { /* * Value passed is a name handle and that name has a * non-null value. Use that name's value and type. */ ObjDesc = ((ACPI_NAMESPACE_NODE *) Object)->Object; ObjectType = ((ACPI_NAMESPACE_NODE *) Object)->Type; } /* * Otherwise, we will use the parameter object, but we must type * it first */ else { ObjDesc = (ACPI_OPERAND_OBJECT *) Object; /* Use the given type */ ObjectType = Type; } ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Installing %p into Node %p [%4.4s]\n", ObjDesc, Node, AcpiUtGetNodeName (Node))); /* Detach an existing attached object if present */ if (Node->Object) { AcpiNsDetachObject (Node); } if (ObjDesc) { /* * Must increment the new value's reference count * (if it is an internal object) */ AcpiUtAddReference (ObjDesc); /* * Handle objects with multiple descriptors - walk * to the end of the descriptor list */ LastObjDesc = ObjDesc; while (LastObjDesc->Common.NextObject) { LastObjDesc = LastObjDesc->Common.NextObject; } /* Install the object at the front of the object list */ LastObjDesc->Common.NextObject = Node->Object; } Node->Type = (UINT8) ObjectType; Node->Object = ObjDesc; return_ACPI_STATUS (AE_OK); } /******************************************************************************* * * FUNCTION: AcpiNsDetachObject * * PARAMETERS: Node - A Namespace node whose object will be detached * * RETURN: None. * * DESCRIPTION: Detach/delete an object associated with a namespace node. * if the object is an allocated object, it is freed. * Otherwise, the field is simply cleared. * ******************************************************************************/ void AcpiNsDetachObject ( ACPI_NAMESPACE_NODE *Node) { ACPI_OPERAND_OBJECT *ObjDesc; ACPI_FUNCTION_TRACE (NsDetachObject); ObjDesc = Node->Object; if (!ObjDesc || (ObjDesc->Common.Type == ACPI_TYPE_LOCAL_DATA)) { return_VOID; } if (Node->Flags & ANOBJ_ALLOCATED_BUFFER) { /* Free the dynamic aml buffer */ if (ObjDesc->Common.Type == ACPI_TYPE_METHOD) { ACPI_FREE (ObjDesc->Method.AmlStart); } } /* Clear the Node entry in all cases */ Node->Object = NULL; if (ACPI_GET_DESCRIPTOR_TYPE (ObjDesc) == ACPI_DESC_TYPE_OPERAND) { /* Unlink object from front of possible object list */ Node->Object = ObjDesc->Common.NextObject; /* Handle possible 2-descriptor object */ if (Node->Object && (Node->Object->Common.Type != ACPI_TYPE_LOCAL_DATA)) { Node->Object = Node->Object->Common.NextObject; } } /* Reset the node type to untyped */ Node->Type = ACPI_TYPE_ANY; ACPI_DEBUG_PRINT ((ACPI_DB_NAMES, "Node %p [%4.4s] Object %p\n", Node, AcpiUtGetNodeName (Node), ObjDesc)); /* Remove one reference on the object (and all subobjects) */ AcpiUtRemoveReference (ObjDesc); return_VOID; } /******************************************************************************* * * FUNCTION: AcpiNsGetAttachedObject * * PARAMETERS: Node - Namespace node * * RETURN: Current value of the object field from the Node whose * handle is passed * * DESCRIPTION: Obtain the object attached to a namespace node. * ******************************************************************************/ ACPI_OPERAND_OBJECT * AcpiNsGetAttachedObject ( ACPI_NAMESPACE_NODE *Node) { ACPI_FUNCTION_TRACE_PTR (NsGetAttachedObject, Node); if (!Node) { ACPI_WARNING ((AE_INFO, "Null Node ptr")); return_PTR (NULL); } if (!Node->Object || ((ACPI_GET_DESCRIPTOR_TYPE (Node->Object) != ACPI_DESC_TYPE_OPERAND) && (ACPI_GET_DESCRIPTOR_TYPE (Node->Object) != ACPI_DESC_TYPE_NAMED)) || ((Node->Object)->Common.Type == ACPI_TYPE_LOCAL_DATA)) { return_PTR (NULL); } return_PTR (Node->Object); } /******************************************************************************* * * FUNCTION: AcpiNsGetSecondaryObject * * PARAMETERS: Node - Namespace node * * RETURN: Current value of the object field from the Node whose * handle is passed. * * DESCRIPTION: Obtain a secondary object associated with a namespace node. * ******************************************************************************/ ACPI_OPERAND_OBJECT * AcpiNsGetSecondaryObject ( ACPI_OPERAND_OBJECT *ObjDesc) { ACPI_FUNCTION_TRACE_PTR (NsGetSecondaryObject, ObjDesc); if ((!ObjDesc) || (ObjDesc->Common.Type== ACPI_TYPE_LOCAL_DATA) || (!ObjDesc->Common.NextObject) || ((ObjDesc->Common.NextObject)->Common.Type == ACPI_TYPE_LOCAL_DATA)) { return_PTR (NULL); } return_PTR (ObjDesc->Common.NextObject); } /******************************************************************************* * * FUNCTION: AcpiNsAttachData * * PARAMETERS: Node - Namespace node * Handler - Handler to be associated with the data * Data - Data to be attached * * RETURN: Status * * DESCRIPTION: Low-level attach data. Create and attach a Data object. * ******************************************************************************/ ACPI_STATUS AcpiNsAttachData ( ACPI_NAMESPACE_NODE *Node, ACPI_OBJECT_HANDLER Handler, void *Data) { ACPI_OPERAND_OBJECT *PrevObjDesc; ACPI_OPERAND_OBJECT *ObjDesc; ACPI_OPERAND_OBJECT *DataDesc; /* We only allow one attachment per handler */ PrevObjDesc = NULL; ObjDesc = Node->Object; while (ObjDesc) { if ((ObjDesc->Common.Type == ACPI_TYPE_LOCAL_DATA) && (ObjDesc->Data.Handler == Handler)) { return (AE_ALREADY_EXISTS); } PrevObjDesc = ObjDesc; ObjDesc = ObjDesc->Common.NextObject; } /* Create an internal object for the data */ DataDesc = AcpiUtCreateInternalObject (ACPI_TYPE_LOCAL_DATA); if (!DataDesc) { return (AE_NO_MEMORY); } DataDesc->Data.Handler = Handler; DataDesc->Data.Pointer = Data; /* Install the data object */ if (PrevObjDesc) { PrevObjDesc->Common.NextObject = DataDesc; } else { Node->Object = DataDesc; } return (AE_OK); } /******************************************************************************* * * FUNCTION: AcpiNsDetachData * * PARAMETERS: Node - Namespace node * Handler - Handler associated with the data * * RETURN: Status * * DESCRIPTION: Low-level detach data. Delete the data node, but the caller * is responsible for the actual data. * ******************************************************************************/ ACPI_STATUS AcpiNsDetachData ( ACPI_NAMESPACE_NODE *Node, ACPI_OBJECT_HANDLER Handler) { ACPI_OPERAND_OBJECT *ObjDesc; ACPI_OPERAND_OBJECT *PrevObjDesc; PrevObjDesc = NULL; ObjDesc = Node->Object; while (ObjDesc) { if ((ObjDesc->Common.Type == ACPI_TYPE_LOCAL_DATA) && (ObjDesc->Data.Handler == Handler)) { if (PrevObjDesc) { PrevObjDesc->Common.NextObject = ObjDesc->Common.NextObject; } else { Node->Object = ObjDesc->Common.NextObject; } AcpiUtRemoveReference (ObjDesc); return (AE_OK); } PrevObjDesc = ObjDesc; ObjDesc = ObjDesc->Common.NextObject; } return (AE_NOT_FOUND); } /******************************************************************************* * * FUNCTION: AcpiNsGetAttachedData * * PARAMETERS: Node - Namespace node * Handler - Handler associated with the data * Data - Where the data is returned * * RETURN: Status * * DESCRIPTION: Low level interface to obtain data previously associated with * a namespace node. * ******************************************************************************/ ACPI_STATUS AcpiNsGetAttachedData ( ACPI_NAMESPACE_NODE *Node, ACPI_OBJECT_HANDLER Handler, void **Data) { ACPI_OPERAND_OBJECT *ObjDesc; ObjDesc = Node->Object; while (ObjDesc) { if ((ObjDesc->Common.Type == ACPI_TYPE_LOCAL_DATA) && (ObjDesc->Data.Handler == Handler)) { *Data = ObjDesc->Data.Pointer; return (AE_OK); } ObjDesc = ObjDesc->Common.NextObject; } return (AE_NOT_FOUND); } src/acpica/source/components/namespace/nsparse.c000066400000000000000000000260421231470457100223350ustar00rootroot00000000000000/****************************************************************************** * * Module Name: nsparse - namespace interface to AML parser * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #define __NSPARSE_C__ #include "acpi.h" #include "accommon.h" #include "acnamesp.h" #include "acparser.h" #include "acdispat.h" #include "actables.h" #define _COMPONENT ACPI_NAMESPACE ACPI_MODULE_NAME ("nsparse") /******************************************************************************* * * FUNCTION: NsOneCompleteParse * * PARAMETERS: PassNumber - 1 or 2 * TableDesc - The table to be parsed. * * RETURN: Status * * DESCRIPTION: Perform one complete parse of an ACPI/AML table. * ******************************************************************************/ ACPI_STATUS AcpiNsOneCompleteParse ( UINT32 PassNumber, UINT32 TableIndex, ACPI_NAMESPACE_NODE *StartNode) { ACPI_PARSE_OBJECT *ParseRoot; ACPI_STATUS Status; UINT32 AmlLength; UINT8 *AmlStart; ACPI_WALK_STATE *WalkState; ACPI_TABLE_HEADER *Table; ACPI_OWNER_ID OwnerId; ACPI_FUNCTION_TRACE (NsOneCompleteParse); Status = AcpiTbGetOwnerId (TableIndex, &OwnerId); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } /* Create and init a Root Node */ ParseRoot = AcpiPsCreateScopeOp (); if (!ParseRoot) { return_ACPI_STATUS (AE_NO_MEMORY); } /* Create and initialize a new walk state */ WalkState = AcpiDsCreateWalkState (OwnerId, NULL, NULL, NULL); if (!WalkState) { AcpiPsFreeOp (ParseRoot); return_ACPI_STATUS (AE_NO_MEMORY); } Status = AcpiGetTableByIndex (TableIndex, &Table); if (ACPI_FAILURE (Status)) { AcpiDsDeleteWalkState (WalkState); AcpiPsFreeOp (ParseRoot); return_ACPI_STATUS (Status); } /* Table must consist of at least a complete header */ if (Table->Length < sizeof (ACPI_TABLE_HEADER)) { Status = AE_BAD_HEADER; } else { AmlStart = (UINT8 *) Table + sizeof (ACPI_TABLE_HEADER); AmlLength = Table->Length - sizeof (ACPI_TABLE_HEADER); Status = AcpiDsInitAmlWalk (WalkState, ParseRoot, NULL, AmlStart, AmlLength, NULL, (UINT8) PassNumber); } if (ACPI_FAILURE (Status)) { AcpiDsDeleteWalkState (WalkState); goto Cleanup; } /* StartNode is the default location to load the table */ if (StartNode && StartNode != AcpiGbl_RootNode) { Status = AcpiDsScopeStackPush (StartNode, ACPI_TYPE_METHOD, WalkState); if (ACPI_FAILURE (Status)) { AcpiDsDeleteWalkState (WalkState); goto Cleanup; } } /* Parse the AML */ ACPI_DEBUG_PRINT ((ACPI_DB_PARSE, "*PARSE* pass %u parse\n", PassNumber)); Status = AcpiPsParseAml (WalkState); Cleanup: AcpiPsDeleteParseTree (ParseRoot); return_ACPI_STATUS (Status); } /******************************************************************************* * * FUNCTION: AcpiNsParseTable * * PARAMETERS: TableDesc - An ACPI table descriptor for table to parse * StartNode - Where to enter the table into the namespace * * RETURN: Status * * DESCRIPTION: Parse AML within an ACPI table and return a tree of ops * ******************************************************************************/ ACPI_STATUS AcpiNsParseTable ( UINT32 TableIndex, ACPI_NAMESPACE_NODE *StartNode) { ACPI_STATUS Status; ACPI_FUNCTION_TRACE (NsParseTable); /* * AML Parse, pass 1 * * In this pass, we load most of the namespace. Control methods * are not parsed until later. A parse tree is not created. Instead, * each Parser Op subtree is deleted when it is finished. This saves * a great deal of memory, and allows a small cache of parse objects * to service the entire parse. The second pass of the parse then * performs another complete parse of the AML. */ ACPI_DEBUG_PRINT ((ACPI_DB_PARSE, "**** Start pass 1\n")); Status = AcpiNsOneCompleteParse (ACPI_IMODE_LOAD_PASS1, TableIndex, StartNode); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } /* * AML Parse, pass 2 * * In this pass, we resolve forward references and other things * that could not be completed during the first pass. * Another complete parse of the AML is performed, but the * overhead of this is compensated for by the fact that the * parse objects are all cached. */ ACPI_DEBUG_PRINT ((ACPI_DB_PARSE, "**** Start pass 2\n")); Status = AcpiNsOneCompleteParse (ACPI_IMODE_LOAD_PASS2, TableIndex, StartNode); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } return_ACPI_STATUS (Status); } src/acpica/source/components/namespace/nspredef.c000066400000000000000000000441731231470457100224750ustar00rootroot00000000000000/****************************************************************************** * * Module Name: nspredef - Validation of ACPI predefined methods and objects * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #define ACPI_CREATE_PREDEFINED_TABLE #include "acpi.h" #include "accommon.h" #include "acnamesp.h" #include "acpredef.h" #define _COMPONENT ACPI_NAMESPACE ACPI_MODULE_NAME ("nspredef") /******************************************************************************* * * This module validates predefined ACPI objects that appear in the namespace, * at the time they are evaluated (via AcpiEvaluateObject). The purpose of this * validation is to detect problems with BIOS-exposed predefined ACPI objects * before the results are returned to the ACPI-related drivers. * * There are several areas that are validated: * * 1) The number of input arguments as defined by the method/object in the * ASL is validated against the ACPI specification. * 2) The type of the return object (if any) is validated against the ACPI * specification. * 3) For returned package objects, the count of package elements is * validated, as well as the type of each package element. Nested * packages are supported. * * For any problems found, a warning message is issued. * ******************************************************************************/ /* Local prototypes */ static ACPI_STATUS AcpiNsCheckReference ( ACPI_EVALUATE_INFO *Info, ACPI_OPERAND_OBJECT *ReturnObject); static UINT32 AcpiNsGetBitmappedType ( ACPI_OPERAND_OBJECT *ReturnObject); /******************************************************************************* * * FUNCTION: AcpiNsCheckReturnValue * * PARAMETERS: Node - Namespace node for the method/object * Info - Method execution information block * UserParamCount - Number of parameters actually passed * ReturnStatus - Status from the object evaluation * ReturnObjectPtr - Pointer to the object returned from the * evaluation of a method or object * * RETURN: Status * * DESCRIPTION: Check the value returned from a predefined name. * ******************************************************************************/ ACPI_STATUS AcpiNsCheckReturnValue ( ACPI_NAMESPACE_NODE *Node, ACPI_EVALUATE_INFO *Info, UINT32 UserParamCount, ACPI_STATUS ReturnStatus, ACPI_OPERAND_OBJECT **ReturnObjectPtr) { ACPI_STATUS Status; const ACPI_PREDEFINED_INFO *Predefined; /* If not a predefined name, we cannot validate the return object */ Predefined = Info->Predefined; if (!Predefined) { return (AE_OK); } /* * If the method failed or did not actually return an object, we cannot * validate the return object */ if ((ReturnStatus != AE_OK) && (ReturnStatus != AE_CTRL_RETURN_VALUE)) { return (AE_OK); } /* * Return value validation and possible repair. * * 1) Don't perform return value validation/repair if this feature * has been disabled via a global option. * * 2) We have a return value, but if one wasn't expected, just exit, * this is not a problem. For example, if the "Implicit Return" * feature is enabled, methods will always return a value. * * 3) If the return value can be of any type, then we cannot perform * any validation, just exit. */ if (AcpiGbl_DisableAutoRepair || (!Predefined->Info.ExpectedBtypes) || (Predefined->Info.ExpectedBtypes == ACPI_RTYPE_ALL)) { return (AE_OK); } /* * Check that the type of the main return object is what is expected * for this predefined name */ Status = AcpiNsCheckObjectType (Info, ReturnObjectPtr, Predefined->Info.ExpectedBtypes, ACPI_NOT_PACKAGE_ELEMENT); if (ACPI_FAILURE (Status)) { goto Exit; } /* * * 4) If there is no return value and it is optional, just return * AE_OK (_WAK). */ if (!(*ReturnObjectPtr)) { goto Exit; } /* * For returned Package objects, check the type of all sub-objects. * Note: Package may have been newly created by call above. */ if ((*ReturnObjectPtr)->Common.Type == ACPI_TYPE_PACKAGE) { Info->ParentPackage = *ReturnObjectPtr; Status = AcpiNsCheckPackage (Info, ReturnObjectPtr); if (ACPI_FAILURE (Status)) { /* We might be able to fix some errors */ if ((Status != AE_AML_OPERAND_TYPE) && (Status != AE_AML_OPERAND_VALUE)) { goto Exit; } } } /* * The return object was OK, or it was successfully repaired above. * Now make some additional checks such as verifying that package * objects are sorted correctly (if required) or buffer objects have * the correct data width (bytes vs. dwords). These repairs are * performed on a per-name basis, i.e., the code is specific to * particular predefined names. */ Status = AcpiNsComplexRepairs (Info, Node, Status, ReturnObjectPtr); Exit: /* * If the object validation failed or if we successfully repaired one * or more objects, mark the parent node to suppress further warning * messages during the next evaluation of the same method/object. */ if (ACPI_FAILURE (Status) || (Info->ReturnFlags & ACPI_OBJECT_REPAIRED)) { Node->Flags |= ANOBJ_EVALUATED; } return (Status); } /******************************************************************************* * * FUNCTION: AcpiNsCheckObjectType * * PARAMETERS: Info - Method execution information block * ReturnObjectPtr - Pointer to the object returned from the * evaluation of a method or object * ExpectedBtypes - Bitmap of expected return type(s) * PackageIndex - Index of object within parent package (if * applicable - ACPI_NOT_PACKAGE_ELEMENT * otherwise) * * RETURN: Status * * DESCRIPTION: Check the type of the return object against the expected object * type(s). Use of Btype allows multiple expected object types. * ******************************************************************************/ ACPI_STATUS AcpiNsCheckObjectType ( ACPI_EVALUATE_INFO *Info, ACPI_OPERAND_OBJECT **ReturnObjectPtr, UINT32 ExpectedBtypes, UINT32 PackageIndex) { ACPI_OPERAND_OBJECT *ReturnObject = *ReturnObjectPtr; ACPI_STATUS Status = AE_OK; char TypeBuffer[48]; /* Room for 5 types */ /* A Namespace node should not get here, but make sure */ if (ReturnObject && ACPI_GET_DESCRIPTOR_TYPE (ReturnObject) == ACPI_DESC_TYPE_NAMED) { ACPI_WARN_PREDEFINED ((AE_INFO, Info->FullPathname, Info->NodeFlags, "Invalid return type - Found a Namespace node [%4.4s] type %s", ReturnObject->Node.Name.Ascii, AcpiUtGetTypeName (ReturnObject->Node.Type))); return (AE_AML_OPERAND_TYPE); } /* * Convert the object type (ACPI_TYPE_xxx) to a bitmapped object type. * The bitmapped type allows multiple possible return types. * * Note, the cases below must handle all of the possible types returned * from all of the predefined names (including elements of returned * packages) */ Info->ReturnBtype = AcpiNsGetBitmappedType (ReturnObject); if (Info->ReturnBtype == ACPI_RTYPE_ANY) { /* Not one of the supported objects, must be incorrect */ goto TypeErrorExit; } /* For reference objects, check that the reference type is correct */ if ((Info->ReturnBtype & ExpectedBtypes) == ACPI_RTYPE_REFERENCE) { Status = AcpiNsCheckReference (Info, ReturnObject); return (Status); } /* Attempt simple repair of the returned object if necessary */ Status = AcpiNsSimpleRepair (Info, ExpectedBtypes, PackageIndex, ReturnObjectPtr); if (ACPI_SUCCESS (Status)) { return (AE_OK); /* Successful repair */ } TypeErrorExit: /* Create a string with all expected types for this predefined object */ AcpiUtGetExpectedReturnTypes (TypeBuffer, ExpectedBtypes); if (!ReturnObject) { ACPI_WARN_PREDEFINED ((AE_INFO, Info->FullPathname, Info->NodeFlags, "Expected return object of type %s", TypeBuffer)); } else if (PackageIndex == ACPI_NOT_PACKAGE_ELEMENT) { ACPI_WARN_PREDEFINED ((AE_INFO, Info->FullPathname, Info->NodeFlags, "Return type mismatch - found %s, expected %s", AcpiUtGetObjectTypeName (ReturnObject), TypeBuffer)); } else { ACPI_WARN_PREDEFINED ((AE_INFO, Info->FullPathname, Info->NodeFlags, "Return Package type mismatch at index %u - " "found %s, expected %s", PackageIndex, AcpiUtGetObjectTypeName (ReturnObject), TypeBuffer)); } return (AE_AML_OPERAND_TYPE); } /******************************************************************************* * * FUNCTION: AcpiNsCheckReference * * PARAMETERS: Info - Method execution information block * ReturnObject - Object returned from the evaluation of a * method or object * * RETURN: Status * * DESCRIPTION: Check a returned reference object for the correct reference * type. The only reference type that can be returned from a * predefined method is a named reference. All others are invalid. * ******************************************************************************/ static ACPI_STATUS AcpiNsCheckReference ( ACPI_EVALUATE_INFO *Info, ACPI_OPERAND_OBJECT *ReturnObject) { /* * Check the reference object for the correct reference type (opcode). * The only type of reference that can be converted to an ACPI_OBJECT is * a reference to a named object (reference class: NAME) */ if (ReturnObject->Reference.Class == ACPI_REFCLASS_NAME) { return (AE_OK); } ACPI_WARN_PREDEFINED ((AE_INFO, Info->FullPathname, Info->NodeFlags, "Return type mismatch - unexpected reference object type [%s] %2.2X", AcpiUtGetReferenceName (ReturnObject), ReturnObject->Reference.Class)); return (AE_AML_OPERAND_TYPE); } /******************************************************************************* * * FUNCTION: AcpiNsGetBitmappedType * * PARAMETERS: ReturnObject - Object returned from method/obj evaluation * * RETURN: Object return type. ACPI_RTYPE_ANY indicates that the object * type is not supported. ACPI_RTYPE_NONE indicates that no * object was returned (ReturnObject is NULL). * * DESCRIPTION: Convert object type into a bitmapped object return type. * ******************************************************************************/ static UINT32 AcpiNsGetBitmappedType ( ACPI_OPERAND_OBJECT *ReturnObject) { UINT32 ReturnBtype; if (!ReturnObject) { return (ACPI_RTYPE_NONE); } /* Map ACPI_OBJECT_TYPE to internal bitmapped type */ switch (ReturnObject->Common.Type) { case ACPI_TYPE_INTEGER: ReturnBtype = ACPI_RTYPE_INTEGER; break; case ACPI_TYPE_BUFFER: ReturnBtype = ACPI_RTYPE_BUFFER; break; case ACPI_TYPE_STRING: ReturnBtype = ACPI_RTYPE_STRING; break; case ACPI_TYPE_PACKAGE: ReturnBtype = ACPI_RTYPE_PACKAGE; break; case ACPI_TYPE_LOCAL_REFERENCE: ReturnBtype = ACPI_RTYPE_REFERENCE; break; default: /* Not one of the supported objects, must be incorrect */ ReturnBtype = ACPI_RTYPE_ANY; break; } return (ReturnBtype); } src/acpica/source/components/namespace/nsprepkg.c000066400000000000000000000600721231470457100225140ustar00rootroot00000000000000/****************************************************************************** * * Module Name: nsprepkg - Validation of package objects for predefined names * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #include "acpi.h" #include "accommon.h" #include "acnamesp.h" #include "acpredef.h" #define _COMPONENT ACPI_NAMESPACE ACPI_MODULE_NAME ("nsprepkg") /* Local prototypes */ static ACPI_STATUS AcpiNsCheckPackageList ( ACPI_EVALUATE_INFO *Info, const ACPI_PREDEFINED_INFO *Package, ACPI_OPERAND_OBJECT **Elements, UINT32 Count); static ACPI_STATUS AcpiNsCheckPackageElements ( ACPI_EVALUATE_INFO *Info, ACPI_OPERAND_OBJECT **Elements, UINT8 Type1, UINT32 Count1, UINT8 Type2, UINT32 Count2, UINT32 StartIndex); /******************************************************************************* * * FUNCTION: AcpiNsCheckPackage * * PARAMETERS: Info - Method execution information block * ReturnObjectPtr - Pointer to the object returned from the * evaluation of a method or object * * RETURN: Status * * DESCRIPTION: Check a returned package object for the correct count and * correct type of all sub-objects. * ******************************************************************************/ ACPI_STATUS AcpiNsCheckPackage ( ACPI_EVALUATE_INFO *Info, ACPI_OPERAND_OBJECT **ReturnObjectPtr) { ACPI_OPERAND_OBJECT *ReturnObject = *ReturnObjectPtr; const ACPI_PREDEFINED_INFO *Package; ACPI_OPERAND_OBJECT **Elements; ACPI_STATUS Status = AE_OK; UINT32 ExpectedCount; UINT32 Count; UINT32 i; ACPI_FUNCTION_NAME (NsCheckPackage); /* The package info for this name is in the next table entry */ Package = Info->Predefined + 1; ACPI_DEBUG_PRINT ((ACPI_DB_NAMES, "%s Validating return Package of Type %X, Count %X\n", Info->FullPathname, Package->RetInfo.Type, ReturnObject->Package.Count)); /* * For variable-length Packages, we can safely remove all embedded * and trailing NULL package elements */ AcpiNsRemoveNullElements (Info, Package->RetInfo.Type, ReturnObject); /* Extract package count and elements array */ Elements = ReturnObject->Package.Elements; Count = ReturnObject->Package.Count; /* * Most packages must have at least one element. The only exception * is the variable-length package (ACPI_PTYPE1_VAR). */ if (!Count) { if (Package->RetInfo.Type == ACPI_PTYPE1_VAR) { return (AE_OK); } ACPI_WARN_PREDEFINED ((AE_INFO, Info->FullPathname, Info->NodeFlags, "Return Package has no elements (empty)")); return (AE_AML_OPERAND_VALUE); } /* * Decode the type of the expected package contents * * PTYPE1 packages contain no subpackages * PTYPE2 packages contain subpackages */ switch (Package->RetInfo.Type) { case ACPI_PTYPE1_FIXED: /* * The package count is fixed and there are no subpackages * * If package is too small, exit. * If package is larger than expected, issue warning but continue */ ExpectedCount = Package->RetInfo.Count1 + Package->RetInfo.Count2; if (Count < ExpectedCount) { goto PackageTooSmall; } else if (Count > ExpectedCount) { ACPI_DEBUG_PRINT ((ACPI_DB_REPAIR, "%s: Return Package is larger than needed - " "found %u, expected %u\n", Info->FullPathname, Count, ExpectedCount)); } /* Validate all elements of the returned package */ Status = AcpiNsCheckPackageElements (Info, Elements, Package->RetInfo.ObjectType1, Package->RetInfo.Count1, Package->RetInfo.ObjectType2, Package->RetInfo.Count2, 0); break; case ACPI_PTYPE1_VAR: /* * The package count is variable, there are no subpackages, and all * elements must be of the same type */ for (i = 0; i < Count; i++) { Status = AcpiNsCheckObjectType (Info, Elements, Package->RetInfo.ObjectType1, i); if (ACPI_FAILURE (Status)) { return (Status); } Elements++; } break; case ACPI_PTYPE1_OPTION: /* * The package count is variable, there are no subpackages. There are * a fixed number of required elements, and a variable number of * optional elements. * * Check if package is at least as large as the minimum required */ ExpectedCount = Package->RetInfo3.Count; if (Count < ExpectedCount) { goto PackageTooSmall; } /* Variable number of sub-objects */ for (i = 0; i < Count; i++) { if (i < Package->RetInfo3.Count) { /* These are the required package elements (0, 1, or 2) */ Status = AcpiNsCheckObjectType (Info, Elements, Package->RetInfo3.ObjectType[i], i); if (ACPI_FAILURE (Status)) { return (Status); } } else { /* These are the optional package elements */ Status = AcpiNsCheckObjectType (Info, Elements, Package->RetInfo3.TailObjectType, i); if (ACPI_FAILURE (Status)) { return (Status); } } Elements++; } break; case ACPI_PTYPE2_REV_FIXED: /* First element is the (Integer) revision */ Status = AcpiNsCheckObjectType (Info, Elements, ACPI_RTYPE_INTEGER, 0); if (ACPI_FAILURE (Status)) { return (Status); } Elements++; Count--; /* Examine the subpackages */ Status = AcpiNsCheckPackageList (Info, Package, Elements, Count); break; case ACPI_PTYPE2_PKG_COUNT: /* First element is the (Integer) count of subpackages to follow */ Status = AcpiNsCheckObjectType (Info, Elements, ACPI_RTYPE_INTEGER, 0); if (ACPI_FAILURE (Status)) { return (Status); } /* * Count cannot be larger than the parent package length, but allow it * to be smaller. The >= accounts for the Integer above. */ ExpectedCount = (UINT32) (*Elements)->Integer.Value; if (ExpectedCount >= Count) { goto PackageTooSmall; } Count = ExpectedCount; Elements++; /* Examine the subpackages */ Status = AcpiNsCheckPackageList (Info, Package, Elements, Count); break; case ACPI_PTYPE2: case ACPI_PTYPE2_FIXED: case ACPI_PTYPE2_MIN: case ACPI_PTYPE2_COUNT: case ACPI_PTYPE2_FIX_VAR: /* * These types all return a single Package that consists of a * variable number of subpackages. * * First, ensure that the first element is a subpackage. If not, * the BIOS may have incorrectly returned the object as a single * package instead of a Package of Packages (a common error if * there is only one entry). We may be able to repair this by * wrapping the returned Package with a new outer Package. */ if (*Elements && ((*Elements)->Common.Type != ACPI_TYPE_PACKAGE)) { /* Create the new outer package and populate it */ Status = AcpiNsWrapWithPackage (Info, ReturnObject, ReturnObjectPtr); if (ACPI_FAILURE (Status)) { return (Status); } /* Update locals to point to the new package (of 1 element) */ ReturnObject = *ReturnObjectPtr; Elements = ReturnObject->Package.Elements; Count = 1; } /* Examine the subpackages */ Status = AcpiNsCheckPackageList (Info, Package, Elements, Count); break; default: /* Should not get here if predefined info table is correct */ ACPI_WARN_PREDEFINED ((AE_INFO, Info->FullPathname, Info->NodeFlags, "Invalid internal return type in table entry: %X", Package->RetInfo.Type)); return (AE_AML_INTERNAL); } return (Status); PackageTooSmall: /* Error exit for the case with an incorrect package count */ ACPI_WARN_PREDEFINED ((AE_INFO, Info->FullPathname, Info->NodeFlags, "Return Package is too small - found %u elements, expected %u", Count, ExpectedCount)); return (AE_AML_OPERAND_VALUE); } /******************************************************************************* * * FUNCTION: AcpiNsCheckPackageList * * PARAMETERS: Info - Method execution information block * Package - Pointer to package-specific info for method * Elements - Element list of parent package. All elements * of this list should be of type Package. * Count - Count of subpackages * * RETURN: Status * * DESCRIPTION: Examine a list of subpackages * ******************************************************************************/ static ACPI_STATUS AcpiNsCheckPackageList ( ACPI_EVALUATE_INFO *Info, const ACPI_PREDEFINED_INFO *Package, ACPI_OPERAND_OBJECT **Elements, UINT32 Count) { ACPI_OPERAND_OBJECT *SubPackage; ACPI_OPERAND_OBJECT **SubElements; ACPI_STATUS Status; UINT32 ExpectedCount; UINT32 i; UINT32 j; /* * Validate each subpackage in the parent Package * * NOTE: assumes list of subpackages contains no NULL elements. * Any NULL elements should have been removed by earlier call * to AcpiNsRemoveNullElements. */ for (i = 0; i < Count; i++) { SubPackage = *Elements; SubElements = SubPackage->Package.Elements; Info->ParentPackage = SubPackage; /* Each sub-object must be of type Package */ Status = AcpiNsCheckObjectType (Info, &SubPackage, ACPI_RTYPE_PACKAGE, i); if (ACPI_FAILURE (Status)) { return (Status); } /* Examine the different types of expected subpackages */ Info->ParentPackage = SubPackage; switch (Package->RetInfo.Type) { case ACPI_PTYPE2: case ACPI_PTYPE2_PKG_COUNT: case ACPI_PTYPE2_REV_FIXED: /* Each subpackage has a fixed number of elements */ ExpectedCount = Package->RetInfo.Count1 + Package->RetInfo.Count2; if (SubPackage->Package.Count < ExpectedCount) { goto PackageTooSmall; } Status = AcpiNsCheckPackageElements (Info, SubElements, Package->RetInfo.ObjectType1, Package->RetInfo.Count1, Package->RetInfo.ObjectType2, Package->RetInfo.Count2, 0); if (ACPI_FAILURE (Status)) { return (Status); } break; case ACPI_PTYPE2_FIX_VAR: /* * Each subpackage has a fixed number of elements and an * optional element */ ExpectedCount = Package->RetInfo.Count1 + Package->RetInfo.Count2; if (SubPackage->Package.Count < ExpectedCount) { goto PackageTooSmall; } Status = AcpiNsCheckPackageElements (Info, SubElements, Package->RetInfo.ObjectType1, Package->RetInfo.Count1, Package->RetInfo.ObjectType2, SubPackage->Package.Count - Package->RetInfo.Count1, 0); if (ACPI_FAILURE (Status)) { return (Status); } break; case ACPI_PTYPE2_FIXED: /* Each subpackage has a fixed length */ ExpectedCount = Package->RetInfo2.Count; if (SubPackage->Package.Count < ExpectedCount) { goto PackageTooSmall; } /* Check the type of each subpackage element */ for (j = 0; j < ExpectedCount; j++) { Status = AcpiNsCheckObjectType (Info, &SubElements[j], Package->RetInfo2.ObjectType[j], j); if (ACPI_FAILURE (Status)) { return (Status); } } break; case ACPI_PTYPE2_MIN: /* Each subpackage has a variable but minimum length */ ExpectedCount = Package->RetInfo.Count1; if (SubPackage->Package.Count < ExpectedCount) { goto PackageTooSmall; } /* Check the type of each subpackage element */ Status = AcpiNsCheckPackageElements (Info, SubElements, Package->RetInfo.ObjectType1, SubPackage->Package.Count, 0, 0, 0); if (ACPI_FAILURE (Status)) { return (Status); } break; case ACPI_PTYPE2_COUNT: /* * First element is the (Integer) count of elements, including * the count field (the ACPI name is NumElements) */ Status = AcpiNsCheckObjectType (Info, SubElements, ACPI_RTYPE_INTEGER, 0); if (ACPI_FAILURE (Status)) { return (Status); } /* * Make sure package is large enough for the Count and is * is as large as the minimum size */ ExpectedCount = (UINT32) (*SubElements)->Integer.Value; if (SubPackage->Package.Count < ExpectedCount) { goto PackageTooSmall; } if (SubPackage->Package.Count < Package->RetInfo.Count1) { ExpectedCount = Package->RetInfo.Count1; goto PackageTooSmall; } if (ExpectedCount == 0) { /* * Either the NumEntries element was originally zero or it was * a NULL element and repaired to an Integer of value zero. * In either case, repair it by setting NumEntries to be the * actual size of the subpackage. */ ExpectedCount = SubPackage->Package.Count; (*SubElements)->Integer.Value = ExpectedCount; } /* Check the type of each subpackage element */ Status = AcpiNsCheckPackageElements (Info, (SubElements + 1), Package->RetInfo.ObjectType1, (ExpectedCount - 1), 0, 0, 1); if (ACPI_FAILURE (Status)) { return (Status); } break; default: /* Should not get here, type was validated by caller */ return (AE_AML_INTERNAL); } Elements++; } return (AE_OK); PackageTooSmall: /* The subpackage count was smaller than required */ ACPI_WARN_PREDEFINED ((AE_INFO, Info->FullPathname, Info->NodeFlags, "Return SubPackage[%u] is too small - found %u elements, expected %u", i, SubPackage->Package.Count, ExpectedCount)); return (AE_AML_OPERAND_VALUE); } /******************************************************************************* * * FUNCTION: AcpiNsCheckPackageElements * * PARAMETERS: Info - Method execution information block * Elements - Pointer to the package elements array * Type1 - Object type for first group * Count1 - Count for first group * Type2 - Object type for second group * Count2 - Count for second group * StartIndex - Start of the first group of elements * * RETURN: Status * * DESCRIPTION: Check that all elements of a package are of the correct object * type. Supports up to two groups of different object types. * ******************************************************************************/ static ACPI_STATUS AcpiNsCheckPackageElements ( ACPI_EVALUATE_INFO *Info, ACPI_OPERAND_OBJECT **Elements, UINT8 Type1, UINT32 Count1, UINT8 Type2, UINT32 Count2, UINT32 StartIndex) { ACPI_OPERAND_OBJECT **ThisElement = Elements; ACPI_STATUS Status; UINT32 i; /* * Up to two groups of package elements are supported by the data * structure. All elements in each group must be of the same type. * The second group can have a count of zero. */ for (i = 0; i < Count1; i++) { Status = AcpiNsCheckObjectType (Info, ThisElement, Type1, i + StartIndex); if (ACPI_FAILURE (Status)) { return (Status); } ThisElement++; } for (i = 0; i < Count2; i++) { Status = AcpiNsCheckObjectType (Info, ThisElement, Type2, (i + Count1 + StartIndex)); if (ACPI_FAILURE (Status)) { return (Status); } ThisElement++; } return (AE_OK); } src/acpica/source/components/namespace/nsrepair.c000066400000000000000000000606731231470457100225150ustar00rootroot00000000000000/****************************************************************************** * * Module Name: nsrepair - Repair for objects returned by predefined methods * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #define __NSREPAIR_C__ #include "acpi.h" #include "accommon.h" #include "acnamesp.h" #include "acinterp.h" #include "acpredef.h" #include "amlresrc.h" #define _COMPONENT ACPI_NAMESPACE ACPI_MODULE_NAME ("nsrepair") /******************************************************************************* * * This module attempts to repair or convert objects returned by the * predefined methods to an object type that is expected, as per the ACPI * specification. The need for this code is dictated by the many machines that * return incorrect types for the standard predefined methods. Performing these * conversions here, in one place, eliminates the need for individual ACPI * device drivers to do the same. Note: Most of these conversions are different * than the internal object conversion routines used for implicit object * conversion. * * The following conversions can be performed as necessary: * * Integer -> String * Integer -> Buffer * String -> Integer * String -> Buffer * Buffer -> Integer * Buffer -> String * Buffer -> Package of Integers * Package -> Package of one Package * * Additional conversions that are available: * Convert a null return or zero return value to an EndTag descriptor * Convert an ASCII string to a Unicode buffer * * An incorrect standalone object is wrapped with required outer package * * Additional possible repairs: * Required package elements that are NULL replaced by Integer/String/Buffer * ******************************************************************************/ /* Local prototypes */ static const ACPI_SIMPLE_REPAIR_INFO * AcpiNsMatchSimpleRepair ( ACPI_NAMESPACE_NODE *Node, UINT32 ReturnBtype, UINT32 PackageIndex); /* * Special but simple repairs for some names. * * 2nd argument: Unexpected types that can be repaired */ static const ACPI_SIMPLE_REPAIR_INFO AcpiObjectRepairInfo[] = { /* Resource descriptor conversions */ { "_CRS", ACPI_RTYPE_INTEGER | ACPI_RTYPE_STRING | ACPI_RTYPE_BUFFER | ACPI_RTYPE_NONE, ACPI_NOT_PACKAGE_ELEMENT, AcpiNsConvertToResource }, { "_DMA", ACPI_RTYPE_INTEGER | ACPI_RTYPE_STRING | ACPI_RTYPE_BUFFER | ACPI_RTYPE_NONE, ACPI_NOT_PACKAGE_ELEMENT, AcpiNsConvertToResource }, { "_PRS", ACPI_RTYPE_INTEGER | ACPI_RTYPE_STRING | ACPI_RTYPE_BUFFER | ACPI_RTYPE_NONE, ACPI_NOT_PACKAGE_ELEMENT, AcpiNsConvertToResource }, /* Unicode conversions */ { "_MLS", ACPI_RTYPE_STRING, 1, AcpiNsConvertToUnicode }, { "_STR", ACPI_RTYPE_STRING | ACPI_RTYPE_BUFFER, ACPI_NOT_PACKAGE_ELEMENT, AcpiNsConvertToUnicode }, { {0,0,0,0}, 0, 0, NULL } /* Table terminator */ }; /******************************************************************************* * * FUNCTION: AcpiNsSimpleRepair * * PARAMETERS: Info - Method execution information block * ExpectedBtypes - Object types expected * PackageIndex - Index of object within parent package (if * applicable - ACPI_NOT_PACKAGE_ELEMENT * otherwise) * ReturnObjectPtr - Pointer to the object returned from the * evaluation of a method or object * * RETURN: Status. AE_OK if repair was successful. * * DESCRIPTION: Attempt to repair/convert a return object of a type that was * not expected. * ******************************************************************************/ ACPI_STATUS AcpiNsSimpleRepair ( ACPI_EVALUATE_INFO *Info, UINT32 ExpectedBtypes, UINT32 PackageIndex, ACPI_OPERAND_OBJECT **ReturnObjectPtr) { ACPI_OPERAND_OBJECT *ReturnObject = *ReturnObjectPtr; ACPI_OPERAND_OBJECT *NewObject = NULL; ACPI_STATUS Status; const ACPI_SIMPLE_REPAIR_INFO *Predefined; ACPI_FUNCTION_NAME (NsSimpleRepair); /* * Special repairs for certain names that are in the repair table. * Check if this name is in the list of repairable names. */ Predefined = AcpiNsMatchSimpleRepair (Info->Node, Info->ReturnBtype, PackageIndex); if (Predefined) { if (!ReturnObject) { ACPI_WARN_PREDEFINED ((AE_INFO, Info->FullPathname, ACPI_WARN_ALWAYS, "Missing expected return value")); } Status = Predefined->ObjectConverter (ReturnObject, &NewObject); if (ACPI_FAILURE (Status)) { /* A fatal error occurred during a conversion */ ACPI_EXCEPTION ((AE_INFO, Status, "During return object analysis")); return (Status); } if (NewObject) { goto ObjectRepaired; } } /* * Do not perform simple object repair unless the return type is not * expected. */ if (Info->ReturnBtype & ExpectedBtypes) { return (AE_OK); } /* * At this point, we know that the type of the returned object was not * one of the expected types for this predefined name. Attempt to * repair the object by converting it to one of the expected object * types for this predefined name. */ /* * If there is no return value, check if we require a return value for * this predefined name. Either one return value is expected, or none, * for both methods and other objects. * * Try to fix if there was no return object. Warning if failed to fix. */ if (!ReturnObject) { if (ExpectedBtypes && (!(ExpectedBtypes & ACPI_RTYPE_NONE))) { if (PackageIndex != ACPI_NOT_PACKAGE_ELEMENT) { ACPI_WARN_PREDEFINED ((AE_INFO, Info->FullPathname, ACPI_WARN_ALWAYS, "Found unexpected NULL package element")); Status = AcpiNsRepairNullElement (Info, ExpectedBtypes, PackageIndex, ReturnObjectPtr); if (ACPI_SUCCESS (Status)) { return (AE_OK); /* Repair was successful */ } } else { ACPI_WARN_PREDEFINED ((AE_INFO, Info->FullPathname, ACPI_WARN_ALWAYS, "Missing expected return value")); } return (AE_AML_NO_RETURN_VALUE); } } if (ExpectedBtypes & ACPI_RTYPE_INTEGER) { Status = AcpiNsConvertToInteger (ReturnObject, &NewObject); if (ACPI_SUCCESS (Status)) { goto ObjectRepaired; } } if (ExpectedBtypes & ACPI_RTYPE_STRING) { Status = AcpiNsConvertToString (ReturnObject, &NewObject); if (ACPI_SUCCESS (Status)) { goto ObjectRepaired; } } if (ExpectedBtypes & ACPI_RTYPE_BUFFER) { Status = AcpiNsConvertToBuffer (ReturnObject, &NewObject); if (ACPI_SUCCESS (Status)) { goto ObjectRepaired; } } if (ExpectedBtypes & ACPI_RTYPE_PACKAGE) { /* * A package is expected. We will wrap the existing object with a * new package object. It is often the case that if a variable-length * package is required, but there is only a single object needed, the * BIOS will return that object instead of wrapping it with a Package * object. Note: after the wrapping, the package will be validated * for correct contents (expected object type or types). */ Status = AcpiNsWrapWithPackage (Info, ReturnObject, &NewObject); if (ACPI_SUCCESS (Status)) { /* * The original object just had its reference count * incremented for being inserted into the new package. */ *ReturnObjectPtr = NewObject; /* New Package object */ Info->ReturnFlags |= ACPI_OBJECT_REPAIRED; return (AE_OK); } } /* We cannot repair this object */ return (AE_AML_OPERAND_TYPE); ObjectRepaired: /* Object was successfully repaired */ if (PackageIndex != ACPI_NOT_PACKAGE_ELEMENT) { /* * The original object is a package element. We need to * decrement the reference count of the original object, * for removing it from the package. * * However, if the original object was just wrapped with a * package object as part of the repair, we don't need to * change the reference count. */ if (!(Info->ReturnFlags & ACPI_OBJECT_WRAPPED)) { NewObject->Common.ReferenceCount = ReturnObject->Common.ReferenceCount; if (ReturnObject->Common.ReferenceCount > 1) { ReturnObject->Common.ReferenceCount--; } } ACPI_DEBUG_PRINT ((ACPI_DB_REPAIR, "%s: Converted %s to expected %s at Package index %u\n", Info->FullPathname, AcpiUtGetObjectTypeName (ReturnObject), AcpiUtGetObjectTypeName (NewObject), PackageIndex)); } else { ACPI_DEBUG_PRINT ((ACPI_DB_REPAIR, "%s: Converted %s to expected %s\n", Info->FullPathname, AcpiUtGetObjectTypeName (ReturnObject), AcpiUtGetObjectTypeName (NewObject))); } /* Delete old object, install the new return object */ AcpiUtRemoveReference (ReturnObject); *ReturnObjectPtr = NewObject; Info->ReturnFlags |= ACPI_OBJECT_REPAIRED; return (AE_OK); } /****************************************************************************** * * FUNCTION: AcpiNsMatchSimpleRepair * * PARAMETERS: Node - Namespace node for the method/object * ReturnBtype - Object type that was returned * PackageIndex - Index of object within parent package (if * applicable - ACPI_NOT_PACKAGE_ELEMENT * otherwise) * * RETURN: Pointer to entry in repair table. NULL indicates not found. * * DESCRIPTION: Check an object name against the repairable object list. * *****************************************************************************/ static const ACPI_SIMPLE_REPAIR_INFO * AcpiNsMatchSimpleRepair ( ACPI_NAMESPACE_NODE *Node, UINT32 ReturnBtype, UINT32 PackageIndex) { const ACPI_SIMPLE_REPAIR_INFO *ThisName; /* Search info table for a repairable predefined method/object name */ ThisName = AcpiObjectRepairInfo; while (ThisName->ObjectConverter) { if (ACPI_COMPARE_NAME (Node->Name.Ascii, ThisName->Name)) { /* Check if we can actually repair this name/type combination */ if ((ReturnBtype & ThisName->UnexpectedBtypes) && (PackageIndex == ThisName->PackageIndex)) { return (ThisName); } return (NULL); } ThisName++; } return (NULL); /* Name was not found in the repair table */ } /******************************************************************************* * * FUNCTION: AcpiNsRepairNullElement * * PARAMETERS: Info - Method execution information block * ExpectedBtypes - Object types expected * PackageIndex - Index of object within parent package (if * applicable - ACPI_NOT_PACKAGE_ELEMENT * otherwise) * ReturnObjectPtr - Pointer to the object returned from the * evaluation of a method or object * * RETURN: Status. AE_OK if repair was successful. * * DESCRIPTION: Attempt to repair a NULL element of a returned Package object. * ******************************************************************************/ ACPI_STATUS AcpiNsRepairNullElement ( ACPI_EVALUATE_INFO *Info, UINT32 ExpectedBtypes, UINT32 PackageIndex, ACPI_OPERAND_OBJECT **ReturnObjectPtr) { ACPI_OPERAND_OBJECT *ReturnObject = *ReturnObjectPtr; ACPI_OPERAND_OBJECT *NewObject; ACPI_FUNCTION_NAME (NsRepairNullElement); /* No repair needed if return object is non-NULL */ if (ReturnObject) { return (AE_OK); } /* * Attempt to repair a NULL element of a Package object. This applies to * predefined names that return a fixed-length package and each element * is required. It does not apply to variable-length packages where NULL * elements are allowed, especially at the end of the package. */ if (ExpectedBtypes & ACPI_RTYPE_INTEGER) { /* Need an Integer - create a zero-value integer */ NewObject = AcpiUtCreateIntegerObject ((UINT64) 0); } else if (ExpectedBtypes & ACPI_RTYPE_STRING) { /* Need a String - create a NULL string */ NewObject = AcpiUtCreateStringObject (0); } else if (ExpectedBtypes & ACPI_RTYPE_BUFFER) { /* Need a Buffer - create a zero-length buffer */ NewObject = AcpiUtCreateBufferObject (0); } else { /* Error for all other expected types */ return (AE_AML_OPERAND_TYPE); } if (!NewObject) { return (AE_NO_MEMORY); } /* Set the reference count according to the parent Package object */ NewObject->Common.ReferenceCount = Info->ParentPackage->Common.ReferenceCount; ACPI_DEBUG_PRINT ((ACPI_DB_REPAIR, "%s: Converted NULL package element to expected %s at index %u\n", Info->FullPathname, AcpiUtGetObjectTypeName (NewObject), PackageIndex)); *ReturnObjectPtr = NewObject; Info->ReturnFlags |= ACPI_OBJECT_REPAIRED; return (AE_OK); } /****************************************************************************** * * FUNCTION: AcpiNsRemoveNullElements * * PARAMETERS: Info - Method execution information block * PackageType - An AcpiReturnPackageTypes value * ObjDesc - A Package object * * RETURN: None. * * DESCRIPTION: Remove all NULL package elements from packages that contain * a variable number of subpackages. For these types of * packages, NULL elements can be safely removed. * *****************************************************************************/ void AcpiNsRemoveNullElements ( ACPI_EVALUATE_INFO *Info, UINT8 PackageType, ACPI_OPERAND_OBJECT *ObjDesc) { ACPI_OPERAND_OBJECT **Source; ACPI_OPERAND_OBJECT **Dest; UINT32 Count; UINT32 NewCount; UINT32 i; ACPI_FUNCTION_NAME (NsRemoveNullElements); /* * We can safely remove all NULL elements from these package types: * PTYPE1_VAR packages contain a variable number of simple data types. * PTYPE2 packages contain a variable number of subpackages. */ switch (PackageType) { case ACPI_PTYPE1_VAR: case ACPI_PTYPE2: case ACPI_PTYPE2_COUNT: case ACPI_PTYPE2_PKG_COUNT: case ACPI_PTYPE2_FIXED: case ACPI_PTYPE2_MIN: case ACPI_PTYPE2_REV_FIXED: case ACPI_PTYPE2_FIX_VAR: break; default: case ACPI_PTYPE1_FIXED: case ACPI_PTYPE1_OPTION: return; } Count = ObjDesc->Package.Count; NewCount = Count; Source = ObjDesc->Package.Elements; Dest = Source; /* Examine all elements of the package object, remove nulls */ for (i = 0; i < Count; i++) { if (!*Source) { NewCount--; } else { *Dest = *Source; Dest++; } Source++; } /* Update parent package if any null elements were removed */ if (NewCount < Count) { ACPI_DEBUG_PRINT ((ACPI_DB_REPAIR, "%s: Found and removed %u NULL elements\n", Info->FullPathname, (Count - NewCount))); /* NULL terminate list and update the package count */ *Dest = NULL; ObjDesc->Package.Count = NewCount; } } /******************************************************************************* * * FUNCTION: AcpiNsWrapWithPackage * * PARAMETERS: Info - Method execution information block * OriginalObject - Pointer to the object to repair. * ObjDescPtr - The new package object is returned here * * RETURN: Status, new object in *ObjDescPtr * * DESCRIPTION: Repair a common problem with objects that are defined to * return a variable-length Package of sub-objects. If there is * only one sub-object, some BIOS code mistakenly simply declares * the single object instead of a Package with one sub-object. * This function attempts to repair this error by wrapping a * Package object around the original object, creating the * correct and expected Package with one sub-object. * * Names that can be repaired in this manner include: * _ALR, _CSD, _HPX, _MLS, _PLD, _PRT, _PSS, _TRT, _TSS, * _BCL, _DOD, _FIX, _Sx * ******************************************************************************/ ACPI_STATUS AcpiNsWrapWithPackage ( ACPI_EVALUATE_INFO *Info, ACPI_OPERAND_OBJECT *OriginalObject, ACPI_OPERAND_OBJECT **ObjDescPtr) { ACPI_OPERAND_OBJECT *PkgObjDesc; ACPI_FUNCTION_NAME (NsWrapWithPackage); /* * Create the new outer package and populate it. The new package will * have a single element, the lone sub-object. */ PkgObjDesc = AcpiUtCreatePackageObject (1); if (!PkgObjDesc) { return (AE_NO_MEMORY); } PkgObjDesc->Package.Elements[0] = OriginalObject; ACPI_DEBUG_PRINT ((ACPI_DB_REPAIR, "%s: Wrapped %s with expected Package object\n", Info->FullPathname, AcpiUtGetObjectTypeName (OriginalObject))); /* Return the new object in the object pointer */ *ObjDescPtr = PkgObjDesc; Info->ReturnFlags |= ACPI_OBJECT_REPAIRED | ACPI_OBJECT_WRAPPED; return (AE_OK); } src/acpica/source/components/namespace/nsrepair2.c000066400000000000000000001117411231470457100225700ustar00rootroot00000000000000/****************************************************************************** * * Module Name: nsrepair2 - Repair for objects returned by specific * predefined methods * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #define __NSREPAIR2_C__ #include "acpi.h" #include "accommon.h" #include "acnamesp.h" #define _COMPONENT ACPI_NAMESPACE ACPI_MODULE_NAME ("nsrepair2") /* * Information structure and handler for ACPI predefined names that can * be repaired on a per-name basis. */ typedef ACPI_STATUS (*ACPI_REPAIR_FUNCTION) ( ACPI_EVALUATE_INFO *Info, ACPI_OPERAND_OBJECT **ReturnObjectPtr); typedef struct acpi_repair_info { char Name[ACPI_NAME_SIZE]; ACPI_REPAIR_FUNCTION RepairFunction; } ACPI_REPAIR_INFO; /* Local prototypes */ static const ACPI_REPAIR_INFO * AcpiNsMatchComplexRepair ( ACPI_NAMESPACE_NODE *Node); static ACPI_STATUS AcpiNsRepair_ALR ( ACPI_EVALUATE_INFO *Info, ACPI_OPERAND_OBJECT **ReturnObjectPtr); static ACPI_STATUS AcpiNsRepair_CID ( ACPI_EVALUATE_INFO *Info, ACPI_OPERAND_OBJECT **ReturnObjectPtr); static ACPI_STATUS AcpiNsRepair_CST ( ACPI_EVALUATE_INFO *Info, ACPI_OPERAND_OBJECT **ReturnObjectPtr); static ACPI_STATUS AcpiNsRepair_FDE ( ACPI_EVALUATE_INFO *Info, ACPI_OPERAND_OBJECT **ReturnObjectPtr); static ACPI_STATUS AcpiNsRepair_HID ( ACPI_EVALUATE_INFO *Info, ACPI_OPERAND_OBJECT **ReturnObjectPtr); static ACPI_STATUS AcpiNsRepair_PRT ( ACPI_EVALUATE_INFO *Info, ACPI_OPERAND_OBJECT **ReturnObjectPtr); static ACPI_STATUS AcpiNsRepair_PSS ( ACPI_EVALUATE_INFO *Info, ACPI_OPERAND_OBJECT **ReturnObjectPtr); static ACPI_STATUS AcpiNsRepair_TSS ( ACPI_EVALUATE_INFO *Info, ACPI_OPERAND_OBJECT **ReturnObjectPtr); static ACPI_STATUS AcpiNsCheckSortedList ( ACPI_EVALUATE_INFO *Info, ACPI_OPERAND_OBJECT *ReturnObject, UINT32 StartIndex, UINT32 ExpectedCount, UINT32 SortIndex, UINT8 SortDirection, char *SortKeyName); /* Values for SortDirection above */ #define ACPI_SORT_ASCENDING 0 #define ACPI_SORT_DESCENDING 1 static void AcpiNsRemoveElement ( ACPI_OPERAND_OBJECT *ObjDesc, UINT32 Index); static void AcpiNsSortList ( ACPI_OPERAND_OBJECT **Elements, UINT32 Count, UINT32 Index, UINT8 SortDirection); /* * This table contains the names of the predefined methods for which we can * perform more complex repairs. * * As necessary: * * _ALR: Sort the list ascending by AmbientIlluminance * _CID: Strings: uppercase all, remove any leading asterisk * _CST: Sort the list ascending by C state type * _FDE: Convert Buffer of BYTEs to a Buffer of DWORDs * _GTM: Convert Buffer of BYTEs to a Buffer of DWORDs * _HID: Strings: uppercase all, remove any leading asterisk * _PRT: Fix reversed SourceName and SourceIndex * _PSS: Sort the list descending by Power * _TSS: Sort the list descending by Power * * Names that must be packages, but cannot be sorted: * * _BCL: Values are tied to the Package index where they appear, and cannot * be moved or sorted. These index values are used for _BQC and _BCM. * However, we can fix the case where a buffer is returned, by converting * it to a Package of integers. */ static const ACPI_REPAIR_INFO AcpiNsRepairableNames[] = { {"_ALR", AcpiNsRepair_ALR}, {"_CID", AcpiNsRepair_CID}, {"_CST", AcpiNsRepair_CST}, {"_FDE", AcpiNsRepair_FDE}, {"_GTM", AcpiNsRepair_FDE}, /* _GTM has same repair as _FDE */ {"_HID", AcpiNsRepair_HID}, {"_PRT", AcpiNsRepair_PRT}, {"_PSS", AcpiNsRepair_PSS}, {"_TSS", AcpiNsRepair_TSS}, {{0,0,0,0}, NULL} /* Table terminator */ }; #define ACPI_FDE_FIELD_COUNT 5 #define ACPI_FDE_BYTE_BUFFER_SIZE 5 #define ACPI_FDE_DWORD_BUFFER_SIZE (ACPI_FDE_FIELD_COUNT * sizeof (UINT32)) /****************************************************************************** * * FUNCTION: AcpiNsComplexRepairs * * PARAMETERS: Info - Method execution information block * Node - Namespace node for the method/object * ValidateStatus - Original status of earlier validation * ReturnObjectPtr - Pointer to the object returned from the * evaluation of a method or object * * RETURN: Status. AE_OK if repair was successful. If name is not * matched, ValidateStatus is returned. * * DESCRIPTION: Attempt to repair/convert a return object of a type that was * not expected. * *****************************************************************************/ ACPI_STATUS AcpiNsComplexRepairs ( ACPI_EVALUATE_INFO *Info, ACPI_NAMESPACE_NODE *Node, ACPI_STATUS ValidateStatus, ACPI_OPERAND_OBJECT **ReturnObjectPtr) { const ACPI_REPAIR_INFO *Predefined; ACPI_STATUS Status; /* Check if this name is in the list of repairable names */ Predefined = AcpiNsMatchComplexRepair (Node); if (!Predefined) { return (ValidateStatus); } Status = Predefined->RepairFunction (Info, ReturnObjectPtr); return (Status); } /****************************************************************************** * * FUNCTION: AcpiNsMatchComplexRepair * * PARAMETERS: Node - Namespace node for the method/object * * RETURN: Pointer to entry in repair table. NULL indicates not found. * * DESCRIPTION: Check an object name against the repairable object list. * *****************************************************************************/ static const ACPI_REPAIR_INFO * AcpiNsMatchComplexRepair ( ACPI_NAMESPACE_NODE *Node) { const ACPI_REPAIR_INFO *ThisName; /* Search info table for a repairable predefined method/object name */ ThisName = AcpiNsRepairableNames; while (ThisName->RepairFunction) { if (ACPI_COMPARE_NAME (Node->Name.Ascii, ThisName->Name)) { return (ThisName); } ThisName++; } return (NULL); /* Not found */ } /****************************************************************************** * * FUNCTION: AcpiNsRepair_ALR * * PARAMETERS: Info - Method execution information block * ReturnObjectPtr - Pointer to the object returned from the * evaluation of a method or object * * RETURN: Status. AE_OK if object is OK or was repaired successfully * * DESCRIPTION: Repair for the _ALR object. If necessary, sort the object list * ascending by the ambient illuminance values. * *****************************************************************************/ static ACPI_STATUS AcpiNsRepair_ALR ( ACPI_EVALUATE_INFO *Info, ACPI_OPERAND_OBJECT **ReturnObjectPtr) { ACPI_OPERAND_OBJECT *ReturnObject = *ReturnObjectPtr; ACPI_STATUS Status; Status = AcpiNsCheckSortedList (Info, ReturnObject, 0, 2, 1, ACPI_SORT_ASCENDING, "AmbientIlluminance"); return (Status); } /****************************************************************************** * * FUNCTION: AcpiNsRepair_FDE * * PARAMETERS: Info - Method execution information block * ReturnObjectPtr - Pointer to the object returned from the * evaluation of a method or object * * RETURN: Status. AE_OK if object is OK or was repaired successfully * * DESCRIPTION: Repair for the _FDE and _GTM objects. The expected return * value is a Buffer of 5 DWORDs. This function repairs a common * problem where the return value is a Buffer of BYTEs, not * DWORDs. * *****************************************************************************/ static ACPI_STATUS AcpiNsRepair_FDE ( ACPI_EVALUATE_INFO *Info, ACPI_OPERAND_OBJECT **ReturnObjectPtr) { ACPI_OPERAND_OBJECT *ReturnObject = *ReturnObjectPtr; ACPI_OPERAND_OBJECT *BufferObject; UINT8 *ByteBuffer; UINT32 *DwordBuffer; UINT32 i; ACPI_FUNCTION_NAME (NsRepair_FDE); switch (ReturnObject->Common.Type) { case ACPI_TYPE_BUFFER: /* This is the expected type. Length should be (at least) 5 DWORDs */ if (ReturnObject->Buffer.Length >= ACPI_FDE_DWORD_BUFFER_SIZE) { return (AE_OK); } /* We can only repair if we have exactly 5 BYTEs */ if (ReturnObject->Buffer.Length != ACPI_FDE_BYTE_BUFFER_SIZE) { ACPI_WARN_PREDEFINED ((AE_INFO, Info->FullPathname, Info->NodeFlags, "Incorrect return buffer length %u, expected %u", ReturnObject->Buffer.Length, ACPI_FDE_DWORD_BUFFER_SIZE)); return (AE_AML_OPERAND_TYPE); } /* Create the new (larger) buffer object */ BufferObject = AcpiUtCreateBufferObject (ACPI_FDE_DWORD_BUFFER_SIZE); if (!BufferObject) { return (AE_NO_MEMORY); } /* Expand each byte to a DWORD */ ByteBuffer = ReturnObject->Buffer.Pointer; DwordBuffer = ACPI_CAST_PTR (UINT32, BufferObject->Buffer.Pointer); for (i = 0; i < ACPI_FDE_FIELD_COUNT; i++) { *DwordBuffer = (UINT32) *ByteBuffer; DwordBuffer++; ByteBuffer++; } ACPI_DEBUG_PRINT ((ACPI_DB_REPAIR, "%s Expanded Byte Buffer to expected DWord Buffer\n", Info->FullPathname)); break; default: return (AE_AML_OPERAND_TYPE); } /* Delete the original return object, return the new buffer object */ AcpiUtRemoveReference (ReturnObject); *ReturnObjectPtr = BufferObject; Info->ReturnFlags |= ACPI_OBJECT_REPAIRED; return (AE_OK); } /****************************************************************************** * * FUNCTION: AcpiNsRepair_CID * * PARAMETERS: Info - Method execution information block * ReturnObjectPtr - Pointer to the object returned from the * evaluation of a method or object * * RETURN: Status. AE_OK if object is OK or was repaired successfully * * DESCRIPTION: Repair for the _CID object. If a string, ensure that all * letters are uppercase and that there is no leading asterisk. * If a Package, ensure same for all string elements. * *****************************************************************************/ static ACPI_STATUS AcpiNsRepair_CID ( ACPI_EVALUATE_INFO *Info, ACPI_OPERAND_OBJECT **ReturnObjectPtr) { ACPI_STATUS Status; ACPI_OPERAND_OBJECT *ReturnObject = *ReturnObjectPtr; ACPI_OPERAND_OBJECT **ElementPtr; ACPI_OPERAND_OBJECT *OriginalElement; UINT16 OriginalRefCount; UINT32 i; /* Check for _CID as a simple string */ if (ReturnObject->Common.Type == ACPI_TYPE_STRING) { Status = AcpiNsRepair_HID (Info, ReturnObjectPtr); return (Status); } /* Exit if not a Package */ if (ReturnObject->Common.Type != ACPI_TYPE_PACKAGE) { return (AE_OK); } /* Examine each element of the _CID package */ ElementPtr = ReturnObject->Package.Elements; for (i = 0; i < ReturnObject->Package.Count; i++) { OriginalElement = *ElementPtr; OriginalRefCount = OriginalElement->Common.ReferenceCount; Status = AcpiNsRepair_HID (Info, ElementPtr); if (ACPI_FAILURE (Status)) { return (Status); } /* Take care with reference counts */ if (OriginalElement != *ElementPtr) { /* Element was replaced */ (*ElementPtr)->Common.ReferenceCount = OriginalRefCount; AcpiUtRemoveReference (OriginalElement); } ElementPtr++; } return (AE_OK); } /****************************************************************************** * * FUNCTION: AcpiNsRepair_CST * * PARAMETERS: Info - Method execution information block * ReturnObjectPtr - Pointer to the object returned from the * evaluation of a method or object * * RETURN: Status. AE_OK if object is OK or was repaired successfully * * DESCRIPTION: Repair for the _CST object: * 1. Sort the list ascending by C state type * 2. Ensure type cannot be zero * 3. A subpackage count of zero means _CST is meaningless * 4. Count must match the number of C state subpackages * *****************************************************************************/ static ACPI_STATUS AcpiNsRepair_CST ( ACPI_EVALUATE_INFO *Info, ACPI_OPERAND_OBJECT **ReturnObjectPtr) { ACPI_OPERAND_OBJECT *ReturnObject = *ReturnObjectPtr; ACPI_OPERAND_OBJECT **OuterElements; UINT32 OuterElementCount; ACPI_OPERAND_OBJECT *ObjDesc; ACPI_STATUS Status; BOOLEAN Removing; UINT32 i; ACPI_FUNCTION_NAME (NsRepair_CST); /* * Check if the C-state type values are proportional. */ OuterElementCount = ReturnObject->Package.Count - 1; i = 0; while (i < OuterElementCount) { OuterElements = &ReturnObject->Package.Elements[i + 1]; Removing = FALSE; if ((*OuterElements)->Package.Count == 0) { ACPI_WARN_PREDEFINED ((AE_INFO, Info->FullPathname, Info->NodeFlags, "SubPackage[%u] - removing entry due to zero count", i)); Removing = TRUE; goto RemoveElement; } ObjDesc = (*OuterElements)->Package.Elements[1]; /* Index1 = Type */ if ((UINT32) ObjDesc->Integer.Value == 0) { ACPI_WARN_PREDEFINED ((AE_INFO, Info->FullPathname, Info->NodeFlags, "SubPackage[%u] - removing entry due to invalid Type(0)", i)); Removing = TRUE; } RemoveElement: if (Removing) { AcpiNsRemoveElement (ReturnObject, i + 1); OuterElementCount--; } else { i++; } } /* Update top-level package count, Type "Integer" checked elsewhere */ ObjDesc = ReturnObject->Package.Elements[0]; ObjDesc->Integer.Value = OuterElementCount; /* * Entries (subpackages) in the _CST Package must be sorted by the * C-state type, in ascending order. */ Status = AcpiNsCheckSortedList (Info, ReturnObject, 1, 4, 1, ACPI_SORT_ASCENDING, "C-State Type"); if (ACPI_FAILURE (Status)) { return (Status); } return (AE_OK); } /****************************************************************************** * * FUNCTION: AcpiNsRepair_HID * * PARAMETERS: Info - Method execution information block * ReturnObjectPtr - Pointer to the object returned from the * evaluation of a method or object * * RETURN: Status. AE_OK if object is OK or was repaired successfully * * DESCRIPTION: Repair for the _HID object. If a string, ensure that all * letters are uppercase and that there is no leading asterisk. * *****************************************************************************/ static ACPI_STATUS AcpiNsRepair_HID ( ACPI_EVALUATE_INFO *Info, ACPI_OPERAND_OBJECT **ReturnObjectPtr) { ACPI_OPERAND_OBJECT *ReturnObject = *ReturnObjectPtr; ACPI_OPERAND_OBJECT *NewString; char *Source; char *Dest; ACPI_FUNCTION_NAME (NsRepair_HID); /* We only care about string _HID objects (not integers) */ if (ReturnObject->Common.Type != ACPI_TYPE_STRING) { return (AE_OK); } if (ReturnObject->String.Length == 0) { ACPI_WARN_PREDEFINED ((AE_INFO, Info->FullPathname, Info->NodeFlags, "Invalid zero-length _HID or _CID string")); /* Return AE_OK anyway, let driver handle it */ Info->ReturnFlags |= ACPI_OBJECT_REPAIRED; return (AE_OK); } /* It is simplest to always create a new string object */ NewString = AcpiUtCreateStringObject (ReturnObject->String.Length); if (!NewString) { return (AE_NO_MEMORY); } /* * Remove a leading asterisk if present. For some unknown reason, there * are many machines in the field that contains IDs like this. * * Examples: "*PNP0C03", "*ACPI0003" */ Source = ReturnObject->String.Pointer; if (*Source == '*') { Source++; NewString->String.Length--; ACPI_DEBUG_PRINT ((ACPI_DB_REPAIR, "%s: Removed invalid leading asterisk\n", Info->FullPathname)); } /* * Copy and uppercase the string. From the ACPI 5.0 specification: * * A valid PNP ID must be of the form "AAA####" where A is an uppercase * letter and # is a hex digit. A valid ACPI ID must be of the form * "NNNN####" where N is an uppercase letter or decimal digit, and * # is a hex digit. */ for (Dest = NewString->String.Pointer; *Source; Dest++, Source++) { *Dest = (char) ACPI_TOUPPER (*Source); } AcpiUtRemoveReference (ReturnObject); *ReturnObjectPtr = NewString; return (AE_OK); } /****************************************************************************** * * FUNCTION: AcpiNsRepair_PRT * * PARAMETERS: Info - Method execution information block * ReturnObjectPtr - Pointer to the object returned from the * evaluation of a method or object * * RETURN: Status. AE_OK if object is OK or was repaired successfully * * DESCRIPTION: Repair for the _PRT object. If necessary, fix reversed * SourceName and SourceIndex field, a common BIOS bug. * *****************************************************************************/ static ACPI_STATUS AcpiNsRepair_PRT ( ACPI_EVALUATE_INFO *Info, ACPI_OPERAND_OBJECT **ReturnObjectPtr) { ACPI_OPERAND_OBJECT *PackageObject = *ReturnObjectPtr; ACPI_OPERAND_OBJECT **TopObjectList; ACPI_OPERAND_OBJECT **SubObjectList; ACPI_OPERAND_OBJECT *ObjDesc; ACPI_OPERAND_OBJECT *SubPackage; UINT32 ElementCount; UINT32 Index; /* Each element in the _PRT package is a subpackage */ TopObjectList = PackageObject->Package.Elements; ElementCount = PackageObject->Package.Count; /* Examine each subpackage */ for (Index = 0; Index < ElementCount; Index++, TopObjectList++) { SubPackage = *TopObjectList; SubObjectList = SubPackage->Package.Elements; /* Check for minimum required element count */ if (SubPackage->Package.Count < 4) { continue; } /* * If the BIOS has erroneously reversed the _PRT SourceName (index 2) * and the SourceIndex (index 3), fix it. _PRT is important enough to * workaround this BIOS error. This also provides compatibility with * other ACPI implementations. */ ObjDesc = SubObjectList[3]; if (!ObjDesc || (ObjDesc->Common.Type != ACPI_TYPE_INTEGER)) { SubObjectList[3] = SubObjectList[2]; SubObjectList[2] = ObjDesc; Info->ReturnFlags |= ACPI_OBJECT_REPAIRED; ACPI_WARN_PREDEFINED ((AE_INFO, Info->FullPathname, Info->NodeFlags, "PRT[%X]: Fixed reversed SourceName and SourceIndex", Index)); } } return (AE_OK); } /****************************************************************************** * * FUNCTION: AcpiNsRepair_PSS * * PARAMETERS: Info - Method execution information block * ReturnObjectPtr - Pointer to the object returned from the * evaluation of a method or object * * RETURN: Status. AE_OK if object is OK or was repaired successfully * * DESCRIPTION: Repair for the _PSS object. If necessary, sort the object list * by the CPU frequencies. Check that the power dissipation values * are all proportional to CPU frequency (i.e., sorting by * frequency should be the same as sorting by power.) * *****************************************************************************/ static ACPI_STATUS AcpiNsRepair_PSS ( ACPI_EVALUATE_INFO *Info, ACPI_OPERAND_OBJECT **ReturnObjectPtr) { ACPI_OPERAND_OBJECT *ReturnObject = *ReturnObjectPtr; ACPI_OPERAND_OBJECT **OuterElements; UINT32 OuterElementCount; ACPI_OPERAND_OBJECT **Elements; ACPI_OPERAND_OBJECT *ObjDesc; UINT32 PreviousValue; ACPI_STATUS Status; UINT32 i; /* * Entries (subpackages) in the _PSS Package must be sorted by power * dissipation, in descending order. If it appears that the list is * incorrectly sorted, sort it. We sort by CpuFrequency, since this * should be proportional to the power. */ Status =AcpiNsCheckSortedList (Info, ReturnObject, 0, 6, 0, ACPI_SORT_DESCENDING, "CpuFrequency"); if (ACPI_FAILURE (Status)) { return (Status); } /* * We now know the list is correctly sorted by CPU frequency. Check if * the power dissipation values are proportional. */ PreviousValue = ACPI_UINT32_MAX; OuterElements = ReturnObject->Package.Elements; OuterElementCount = ReturnObject->Package.Count; for (i = 0; i < OuterElementCount; i++) { Elements = (*OuterElements)->Package.Elements; ObjDesc = Elements[1]; /* Index1 = PowerDissipation */ if ((UINT32) ObjDesc->Integer.Value > PreviousValue) { ACPI_WARN_PREDEFINED ((AE_INFO, Info->FullPathname, Info->NodeFlags, "SubPackage[%u,%u] - suspicious power dissipation values", i-1, i)); } PreviousValue = (UINT32) ObjDesc->Integer.Value; OuterElements++; } return (AE_OK); } /****************************************************************************** * * FUNCTION: AcpiNsRepair_TSS * * PARAMETERS: Info - Method execution information block * ReturnObjectPtr - Pointer to the object returned from the * evaluation of a method or object * * RETURN: Status. AE_OK if object is OK or was repaired successfully * * DESCRIPTION: Repair for the _TSS object. If necessary, sort the object list * descending by the power dissipation values. * *****************************************************************************/ static ACPI_STATUS AcpiNsRepair_TSS ( ACPI_EVALUATE_INFO *Info, ACPI_OPERAND_OBJECT **ReturnObjectPtr) { ACPI_OPERAND_OBJECT *ReturnObject = *ReturnObjectPtr; ACPI_STATUS Status; ACPI_NAMESPACE_NODE *Node; /* * We can only sort the _TSS return package if there is no _PSS in the * same scope. This is because if _PSS is present, the ACPI specification * dictates that the _TSS Power Dissipation field is to be ignored, and * therefore some BIOSs leave garbage values in the _TSS Power field(s). * In this case, it is best to just return the _TSS package as-is. * (May, 2011) */ Status = AcpiNsGetNode (Info->Node, "^_PSS", ACPI_NS_NO_UPSEARCH, &Node); if (ACPI_SUCCESS (Status)) { return (AE_OK); } Status = AcpiNsCheckSortedList (Info, ReturnObject, 0, 5, 1, ACPI_SORT_DESCENDING, "PowerDissipation"); return (Status); } /****************************************************************************** * * FUNCTION: AcpiNsCheckSortedList * * PARAMETERS: Info - Method execution information block * ReturnObject - Pointer to the top-level returned object * StartIndex - Index of the first subpackage * ExpectedCount - Minimum length of each subpackage * SortIndex - Subpackage entry to sort on * SortDirection - Ascending or descending * SortKeyName - Name of the SortIndex field * * RETURN: Status. AE_OK if the list is valid and is sorted correctly or * has been repaired by sorting the list. * * DESCRIPTION: Check if the package list is valid and sorted correctly by the * SortIndex. If not, then sort the list. * *****************************************************************************/ static ACPI_STATUS AcpiNsCheckSortedList ( ACPI_EVALUATE_INFO *Info, ACPI_OPERAND_OBJECT *ReturnObject, UINT32 StartIndex, UINT32 ExpectedCount, UINT32 SortIndex, UINT8 SortDirection, char *SortKeyName) { UINT32 OuterElementCount; ACPI_OPERAND_OBJECT **OuterElements; ACPI_OPERAND_OBJECT **Elements; ACPI_OPERAND_OBJECT *ObjDesc; UINT32 i; UINT32 PreviousValue; ACPI_FUNCTION_NAME (NsCheckSortedList); /* The top-level object must be a package */ if (ReturnObject->Common.Type != ACPI_TYPE_PACKAGE) { return (AE_AML_OPERAND_TYPE); } /* * NOTE: assumes list of subpackages contains no NULL elements. * Any NULL elements should have been removed by earlier call * to AcpiNsRemoveNullElements. */ OuterElementCount = ReturnObject->Package.Count; if (!OuterElementCount || StartIndex >= OuterElementCount) { return (AE_AML_PACKAGE_LIMIT); } OuterElements = &ReturnObject->Package.Elements[StartIndex]; OuterElementCount -= StartIndex; PreviousValue = 0; if (SortDirection == ACPI_SORT_DESCENDING) { PreviousValue = ACPI_UINT32_MAX; } /* Examine each subpackage */ for (i = 0; i < OuterElementCount; i++) { /* Each element of the top-level package must also be a package */ if ((*OuterElements)->Common.Type != ACPI_TYPE_PACKAGE) { return (AE_AML_OPERAND_TYPE); } /* Each subpackage must have the minimum length */ if ((*OuterElements)->Package.Count < ExpectedCount) { return (AE_AML_PACKAGE_LIMIT); } Elements = (*OuterElements)->Package.Elements; ObjDesc = Elements[SortIndex]; if (ObjDesc->Common.Type != ACPI_TYPE_INTEGER) { return (AE_AML_OPERAND_TYPE); } /* * The list must be sorted in the specified order. If we detect a * discrepancy, sort the entire list. */ if (((SortDirection == ACPI_SORT_ASCENDING) && (ObjDesc->Integer.Value < PreviousValue)) || ((SortDirection == ACPI_SORT_DESCENDING) && (ObjDesc->Integer.Value > PreviousValue))) { AcpiNsSortList (&ReturnObject->Package.Elements[StartIndex], OuterElementCount, SortIndex, SortDirection); Info->ReturnFlags |= ACPI_OBJECT_REPAIRED; ACPI_DEBUG_PRINT ((ACPI_DB_REPAIR, "%s: Repaired unsorted list - now sorted by %s\n", Info->FullPathname, SortKeyName)); return (AE_OK); } PreviousValue = (UINT32) ObjDesc->Integer.Value; OuterElements++; } return (AE_OK); } /****************************************************************************** * * FUNCTION: AcpiNsSortList * * PARAMETERS: Elements - Package object element list * Count - Element count for above * Index - Sort by which package element * SortDirection - Ascending or Descending sort * * RETURN: None * * DESCRIPTION: Sort the objects that are in a package element list. * * NOTE: Assumes that all NULL elements have been removed from the package, * and that all elements have been verified to be of type Integer. * *****************************************************************************/ static void AcpiNsSortList ( ACPI_OPERAND_OBJECT **Elements, UINT32 Count, UINT32 Index, UINT8 SortDirection) { ACPI_OPERAND_OBJECT *ObjDesc1; ACPI_OPERAND_OBJECT *ObjDesc2; ACPI_OPERAND_OBJECT *TempObj; UINT32 i; UINT32 j; /* Simple bubble sort */ for (i = 1; i < Count; i++) { for (j = (Count - 1); j >= i; j--) { ObjDesc1 = Elements[j-1]->Package.Elements[Index]; ObjDesc2 = Elements[j]->Package.Elements[Index]; if (((SortDirection == ACPI_SORT_ASCENDING) && (ObjDesc1->Integer.Value > ObjDesc2->Integer.Value)) || ((SortDirection == ACPI_SORT_DESCENDING) && (ObjDesc1->Integer.Value < ObjDesc2->Integer.Value))) { TempObj = Elements[j-1]; Elements[j-1] = Elements[j]; Elements[j] = TempObj; } } } } /****************************************************************************** * * FUNCTION: AcpiNsRemoveElement * * PARAMETERS: ObjDesc - Package object element list * Index - Index of element to remove * * RETURN: None * * DESCRIPTION: Remove the requested element of a package and delete it. * *****************************************************************************/ static void AcpiNsRemoveElement ( ACPI_OPERAND_OBJECT *ObjDesc, UINT32 Index) { ACPI_OPERAND_OBJECT **Source; ACPI_OPERAND_OBJECT **Dest; UINT32 Count; UINT32 NewCount; UINT32 i; ACPI_FUNCTION_NAME (NsRemoveElement); Count = ObjDesc->Package.Count; NewCount = Count - 1; Source = ObjDesc->Package.Elements; Dest = Source; /* Examine all elements of the package object, remove matched index */ for (i = 0; i < Count; i++) { if (i == Index) { AcpiUtRemoveReference (*Source); /* Remove one ref for being in pkg */ AcpiUtRemoveReference (*Source); } else { *Dest = *Source; Dest++; } Source++; } /* NULL terminate list and update the package count */ *Dest = NULL; ObjDesc->Package.Count = NewCount; } src/acpica/source/components/namespace/nssearch.c000066400000000000000000000443041231470457100224710ustar00rootroot00000000000000/******************************************************************************* * * Module Name: nssearch - Namespace search * ******************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #define __NSSEARCH_C__ #include "acpi.h" #include "accommon.h" #include "acnamesp.h" #ifdef ACPI_ASL_COMPILER #include "amlcode.h" #endif #define _COMPONENT ACPI_NAMESPACE ACPI_MODULE_NAME ("nssearch") /* Local prototypes */ static ACPI_STATUS AcpiNsSearchParentTree ( UINT32 TargetName, ACPI_NAMESPACE_NODE *Node, ACPI_OBJECT_TYPE Type, ACPI_NAMESPACE_NODE **ReturnNode); /******************************************************************************* * * FUNCTION: AcpiNsSearchOneScope * * PARAMETERS: TargetName - Ascii ACPI name to search for * ParentNode - Starting node where search will begin * Type - Object type to match * ReturnNode - Where the matched Named obj is returned * * RETURN: Status * * DESCRIPTION: Search a single level of the namespace. Performs a * simple search of the specified level, and does not add * entries or search parents. * * * Named object lists are built (and subsequently dumped) in the * order in which the names are encountered during the namespace load; * * All namespace searching is linear in this implementation, but * could be easily modified to support any improved search * algorithm. However, the linear search was chosen for simplicity * and because the trees are small and the other interpreter * execution overhead is relatively high. * * Note: CPU execution analysis has shown that the AML interpreter spends * a very small percentage of its time searching the namespace. Therefore, * the linear search seems to be sufficient, as there would seem to be * little value in improving the search. * ******************************************************************************/ ACPI_STATUS AcpiNsSearchOneScope ( UINT32 TargetName, ACPI_NAMESPACE_NODE *ParentNode, ACPI_OBJECT_TYPE Type, ACPI_NAMESPACE_NODE **ReturnNode) { ACPI_NAMESPACE_NODE *Node; ACPI_FUNCTION_TRACE (NsSearchOneScope); #ifdef ACPI_DEBUG_OUTPUT if (ACPI_LV_NAMES & AcpiDbgLevel) { char *ScopeName; ScopeName = AcpiNsGetExternalPathname (ParentNode); if (ScopeName) { ACPI_DEBUG_PRINT ((ACPI_DB_NAMES, "Searching %s (%p) For [%4.4s] (%s)\n", ScopeName, ParentNode, ACPI_CAST_PTR (char, &TargetName), AcpiUtGetTypeName (Type))); ACPI_FREE (ScopeName); } } #endif /* * Search for name at this namespace level, which is to say that we * must search for the name among the children of this object */ Node = ParentNode->Child; while (Node) { /* Check for match against the name */ if (Node->Name.Integer == TargetName) { /* Resolve a control method alias if any */ if (AcpiNsGetType (Node) == ACPI_TYPE_LOCAL_METHOD_ALIAS) { Node = ACPI_CAST_PTR (ACPI_NAMESPACE_NODE, Node->Object); } /* Found matching entry */ ACPI_DEBUG_PRINT ((ACPI_DB_NAMES, "Name [%4.4s] (%s) %p found in scope [%4.4s] %p\n", ACPI_CAST_PTR (char, &TargetName), AcpiUtGetTypeName (Node->Type), Node, AcpiUtGetNodeName (ParentNode), ParentNode)); *ReturnNode = Node; return_ACPI_STATUS (AE_OK); } /* Didn't match name, move on to the next peer object */ Node = Node->Peer; } /* Searched entire namespace level, not found */ ACPI_DEBUG_PRINT ((ACPI_DB_NAMES, "Name [%4.4s] (%s) not found in search in scope [%4.4s] " "%p first child %p\n", ACPI_CAST_PTR (char, &TargetName), AcpiUtGetTypeName (Type), AcpiUtGetNodeName (ParentNode), ParentNode, ParentNode->Child)); return_ACPI_STATUS (AE_NOT_FOUND); } /******************************************************************************* * * FUNCTION: AcpiNsSearchParentTree * * PARAMETERS: TargetName - Ascii ACPI name to search for * Node - Starting node where search will begin * Type - Object type to match * ReturnNode - Where the matched Node is returned * * RETURN: Status * * DESCRIPTION: Called when a name has not been found in the current namespace * level. Before adding it or giving up, ACPI scope rules require * searching enclosing scopes in cases identified by AcpiNsLocal(). * * "A name is located by finding the matching name in the current * name space, and then in the parent name space. If the parent * name space does not contain the name, the search continues * recursively until either the name is found or the name space * does not have a parent (the root of the name space). This * indicates that the name is not found" (From ACPI Specification, * section 5.3) * ******************************************************************************/ static ACPI_STATUS AcpiNsSearchParentTree ( UINT32 TargetName, ACPI_NAMESPACE_NODE *Node, ACPI_OBJECT_TYPE Type, ACPI_NAMESPACE_NODE **ReturnNode) { ACPI_STATUS Status; ACPI_NAMESPACE_NODE *ParentNode; ACPI_FUNCTION_TRACE (NsSearchParentTree); ParentNode = Node->Parent; /* * If there is no parent (i.e., we are at the root) or type is "local", * we won't be searching the parent tree. */ if (!ParentNode) { ACPI_DEBUG_PRINT ((ACPI_DB_NAMES, "[%4.4s] has no parent\n", ACPI_CAST_PTR (char, &TargetName))); return_ACPI_STATUS (AE_NOT_FOUND); } if (AcpiNsLocal (Type)) { ACPI_DEBUG_PRINT ((ACPI_DB_NAMES, "[%4.4s] type [%s] must be local to this scope (no parent search)\n", ACPI_CAST_PTR (char, &TargetName), AcpiUtGetTypeName (Type))); return_ACPI_STATUS (AE_NOT_FOUND); } /* Search the parent tree */ ACPI_DEBUG_PRINT ((ACPI_DB_NAMES, "Searching parent [%4.4s] for [%4.4s]\n", AcpiUtGetNodeName (ParentNode), ACPI_CAST_PTR (char, &TargetName))); /* Search parents until target is found or we have backed up to the root */ while (ParentNode) { /* * Search parent scope. Use TYPE_ANY because we don't care about the * object type at this point, we only care about the existence of * the actual name we are searching for. Typechecking comes later. */ Status = AcpiNsSearchOneScope ( TargetName, ParentNode, ACPI_TYPE_ANY, ReturnNode); if (ACPI_SUCCESS (Status)) { return_ACPI_STATUS (Status); } /* Not found here, go up another level (until we reach the root) */ ParentNode = ParentNode->Parent; } /* Not found in parent tree */ return_ACPI_STATUS (AE_NOT_FOUND); } /******************************************************************************* * * FUNCTION: AcpiNsSearchAndEnter * * PARAMETERS: TargetName - Ascii ACPI name to search for (4 chars) * WalkState - Current state of the walk * Node - Starting node where search will begin * InterpreterMode - Add names only in ACPI_MODE_LOAD_PASS_x. * Otherwise,search only. * Type - Object type to match * Flags - Flags describing the search restrictions * ReturnNode - Where the Node is returned * * RETURN: Status * * DESCRIPTION: Search for a name segment in a single namespace level, * optionally adding it if it is not found. If the passed * Type is not Any and the type previously stored in the * entry was Any (i.e. unknown), update the stored type. * * In ACPI_IMODE_EXECUTE, search only. * In other modes, search and add if not found. * ******************************************************************************/ ACPI_STATUS AcpiNsSearchAndEnter ( UINT32 TargetName, ACPI_WALK_STATE *WalkState, ACPI_NAMESPACE_NODE *Node, ACPI_INTERPRETER_MODE InterpreterMode, ACPI_OBJECT_TYPE Type, UINT32 Flags, ACPI_NAMESPACE_NODE **ReturnNode) { ACPI_STATUS Status; ACPI_NAMESPACE_NODE *NewNode; ACPI_FUNCTION_TRACE (NsSearchAndEnter); /* Parameter validation */ if (!Node || !TargetName || !ReturnNode) { ACPI_ERROR ((AE_INFO, "Null parameter: Node %p Name 0x%X ReturnNode %p", Node, TargetName, ReturnNode)); return_ACPI_STATUS (AE_BAD_PARAMETER); } /* * Name must consist of valid ACPI characters. We will repair the name if * necessary because we don't want to abort because of this, but we want * all namespace names to be printable. A warning message is appropriate. * * This issue came up because there are in fact machines that exhibit * this problem, and we want to be able to enable ACPI support for them, * even though there are a few bad names. */ AcpiUtRepairName (ACPI_CAST_PTR (char, &TargetName)); /* Try to find the name in the namespace level specified by the caller */ *ReturnNode = ACPI_ENTRY_NOT_FOUND; Status = AcpiNsSearchOneScope (TargetName, Node, Type, ReturnNode); if (Status != AE_NOT_FOUND) { /* * If we found it AND the request specifies that a find is an error, * return the error */ if ((Status == AE_OK) && (Flags & ACPI_NS_ERROR_IF_FOUND)) { Status = AE_ALREADY_EXISTS; } #ifdef ACPI_ASL_COMPILER if (*ReturnNode && (*ReturnNode)->Type == ACPI_TYPE_ANY) { (*ReturnNode)->Flags |= ANOBJ_IS_EXTERNAL; } #endif /* Either found it or there was an error: finished either way */ return_ACPI_STATUS (Status); } /* * The name was not found. If we are NOT performing the first pass * (name entry) of loading the namespace, search the parent tree (all the * way to the root if necessary.) We don't want to perform the parent * search when the namespace is actually being loaded. We want to perform * the search when namespace references are being resolved (load pass 2) * and during the execution phase. */ if ((InterpreterMode != ACPI_IMODE_LOAD_PASS1) && (Flags & ACPI_NS_SEARCH_PARENT)) { /* * Not found at this level - search parent tree according to the * ACPI specification */ Status = AcpiNsSearchParentTree (TargetName, Node, Type, ReturnNode); if (ACPI_SUCCESS (Status)) { return_ACPI_STATUS (Status); } } /* In execute mode, just search, never add names. Exit now */ if (InterpreterMode == ACPI_IMODE_EXECUTE) { ACPI_DEBUG_PRINT ((ACPI_DB_NAMES, "%4.4s Not found in %p [Not adding]\n", ACPI_CAST_PTR (char, &TargetName), Node)); return_ACPI_STATUS (AE_NOT_FOUND); } /* Create the new named object */ NewNode = AcpiNsCreateNode (TargetName); if (!NewNode) { return_ACPI_STATUS (AE_NO_MEMORY); } #ifdef ACPI_ASL_COMPILER /* Node is an object defined by an External() statement */ if (Flags & ACPI_NS_EXTERNAL || (WalkState && WalkState->Opcode == AML_SCOPE_OP)) { NewNode->Flags |= ANOBJ_IS_EXTERNAL; } #endif if (Flags & ACPI_NS_TEMPORARY) { NewNode->Flags |= ANOBJ_TEMPORARY; } /* Install the new object into the parent's list of children */ AcpiNsInstallNode (WalkState, Node, NewNode, Type); *ReturnNode = NewNode; return_ACPI_STATUS (AE_OK); } src/acpica/source/components/namespace/nsutils.c000066400000000000000000000646721231470457100223760ustar00rootroot00000000000000/****************************************************************************** * * Module Name: nsutils - Utilities for accessing ACPI namespace, accessing * parents and siblings and Scope manipulation * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #define __NSUTILS_C__ #include "acpi.h" #include "accommon.h" #include "acnamesp.h" #include "amlcode.h" #define _COMPONENT ACPI_NAMESPACE ACPI_MODULE_NAME ("nsutils") /* Local prototypes */ #ifdef ACPI_OBSOLETE_FUNCTIONS ACPI_NAME AcpiNsFindParentName ( ACPI_NAMESPACE_NODE *NodeToSearch); #endif /******************************************************************************* * * FUNCTION: AcpiNsPrintNodePathname * * PARAMETERS: Node - Object * Message - Prefix message * * DESCRIPTION: Print an object's full namespace pathname * Manages allocation/freeing of a pathname buffer * ******************************************************************************/ void AcpiNsPrintNodePathname ( ACPI_NAMESPACE_NODE *Node, const char *Message) { ACPI_BUFFER Buffer; ACPI_STATUS Status; if (!Node) { AcpiOsPrintf ("[NULL NAME]"); return; } /* Convert handle to full pathname and print it (with supplied message) */ Buffer.Length = ACPI_ALLOCATE_LOCAL_BUFFER; Status = AcpiNsHandleToPathname (Node, &Buffer); if (ACPI_SUCCESS (Status)) { if (Message) { AcpiOsPrintf ("%s ", Message); } AcpiOsPrintf ("[%s] (Node %p)", (char *) Buffer.Pointer, Node); ACPI_FREE (Buffer.Pointer); } } /******************************************************************************* * * FUNCTION: AcpiNsGetType * * PARAMETERS: Node - Parent Node to be examined * * RETURN: Type field from Node whose handle is passed * * DESCRIPTION: Return the type of a Namespace node * ******************************************************************************/ ACPI_OBJECT_TYPE AcpiNsGetType ( ACPI_NAMESPACE_NODE *Node) { ACPI_FUNCTION_TRACE (NsGetType); if (!Node) { ACPI_WARNING ((AE_INFO, "Null Node parameter")); return_UINT8 (ACPI_TYPE_ANY); } return_UINT8 (Node->Type); } /******************************************************************************* * * FUNCTION: AcpiNsLocal * * PARAMETERS: Type - A namespace object type * * RETURN: LOCAL if names must be found locally in objects of the * passed type, 0 if enclosing scopes should be searched * * DESCRIPTION: Returns scope rule for the given object type. * ******************************************************************************/ UINT32 AcpiNsLocal ( ACPI_OBJECT_TYPE Type) { ACPI_FUNCTION_TRACE (NsLocal); if (!AcpiUtValidObjectType (Type)) { /* Type code out of range */ ACPI_WARNING ((AE_INFO, "Invalid Object Type 0x%X", Type)); return_UINT32 (ACPI_NS_NORMAL); } return_UINT32 (AcpiGbl_NsProperties[Type] & ACPI_NS_LOCAL); } /******************************************************************************* * * FUNCTION: AcpiNsGetInternalNameLength * * PARAMETERS: Info - Info struct initialized with the * external name pointer. * * RETURN: None * * DESCRIPTION: Calculate the length of the internal (AML) namestring * corresponding to the external (ASL) namestring. * ******************************************************************************/ void AcpiNsGetInternalNameLength ( ACPI_NAMESTRING_INFO *Info) { const char *NextExternalChar; UINT32 i; ACPI_FUNCTION_ENTRY (); NextExternalChar = Info->ExternalName; Info->NumCarats = 0; Info->NumSegments = 0; Info->FullyQualified = FALSE; /* * For the internal name, the required length is 4 bytes per segment, plus * 1 each for RootPrefix, MultiNamePrefixOp, segment count, trailing null * (which is not really needed, but no there's harm in putting it there) * * strlen() + 1 covers the first NameSeg, which has no path separator */ if (ACPI_IS_ROOT_PREFIX (*NextExternalChar)) { Info->FullyQualified = TRUE; NextExternalChar++; /* Skip redundant RootPrefix, like \\_SB.PCI0.SBRG.EC0 */ while (ACPI_IS_ROOT_PREFIX (*NextExternalChar)) { NextExternalChar++; } } else { /* Handle Carat prefixes */ while (ACPI_IS_PARENT_PREFIX (*NextExternalChar)) { Info->NumCarats++; NextExternalChar++; } } /* * Determine the number of ACPI name "segments" by counting the number of * path separators within the string. Start with one segment since the * segment count is [(# separators) + 1], and zero separators is ok. */ if (*NextExternalChar) { Info->NumSegments = 1; for (i = 0; NextExternalChar[i]; i++) { if (ACPI_IS_PATH_SEPARATOR (NextExternalChar[i])) { Info->NumSegments++; } } } Info->Length = (ACPI_NAME_SIZE * Info->NumSegments) + 4 + Info->NumCarats; Info->NextExternalChar = NextExternalChar; } /******************************************************************************* * * FUNCTION: AcpiNsBuildInternalName * * PARAMETERS: Info - Info struct fully initialized * * RETURN: Status * * DESCRIPTION: Construct the internal (AML) namestring * corresponding to the external (ASL) namestring. * ******************************************************************************/ ACPI_STATUS AcpiNsBuildInternalName ( ACPI_NAMESTRING_INFO *Info) { UINT32 NumSegments = Info->NumSegments; char *InternalName = Info->InternalName; const char *ExternalName = Info->NextExternalChar; char *Result = NULL; UINT32 i; ACPI_FUNCTION_TRACE (NsBuildInternalName); /* Setup the correct prefixes, counts, and pointers */ if (Info->FullyQualified) { InternalName[0] = AML_ROOT_PREFIX; if (NumSegments <= 1) { Result = &InternalName[1]; } else if (NumSegments == 2) { InternalName[1] = AML_DUAL_NAME_PREFIX; Result = &InternalName[2]; } else { InternalName[1] = AML_MULTI_NAME_PREFIX_OP; InternalName[2] = (char) NumSegments; Result = &InternalName[3]; } } else { /* * Not fully qualified. * Handle Carats first, then append the name segments */ i = 0; if (Info->NumCarats) { for (i = 0; i < Info->NumCarats; i++) { InternalName[i] = AML_PARENT_PREFIX; } } if (NumSegments <= 1) { Result = &InternalName[i]; } else if (NumSegments == 2) { InternalName[i] = AML_DUAL_NAME_PREFIX; Result = &InternalName[(ACPI_SIZE) i+1]; } else { InternalName[i] = AML_MULTI_NAME_PREFIX_OP; InternalName[(ACPI_SIZE) i+1] = (char) NumSegments; Result = &InternalName[(ACPI_SIZE) i+2]; } } /* Build the name (minus path separators) */ for (; NumSegments; NumSegments--) { for (i = 0; i < ACPI_NAME_SIZE; i++) { if (ACPI_IS_PATH_SEPARATOR (*ExternalName) || (*ExternalName == 0)) { /* Pad the segment with underscore(s) if segment is short */ Result[i] = '_'; } else { /* Convert the character to uppercase and save it */ Result[i] = (char) ACPI_TOUPPER ((int) *ExternalName); ExternalName++; } } /* Now we must have a path separator, or the pathname is bad */ if (!ACPI_IS_PATH_SEPARATOR (*ExternalName) && (*ExternalName != 0)) { return_ACPI_STATUS (AE_BAD_PATHNAME); } /* Move on the next segment */ ExternalName++; Result += ACPI_NAME_SIZE; } /* Terminate the string */ *Result = 0; if (Info->FullyQualified) { ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Returning [%p] (abs) \"\\%s\"\n", InternalName, InternalName)); } else { ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Returning [%p] (rel) \"%s\"\n", InternalName, InternalName)); } return_ACPI_STATUS (AE_OK); } /******************************************************************************* * * FUNCTION: AcpiNsInternalizeName * * PARAMETERS: *ExternalName - External representation of name * **Converted Name - Where to return the resulting * internal represention of the name * * RETURN: Status * * DESCRIPTION: Convert an external representation (e.g. "\_PR_.CPU0") * to internal form (e.g. 5c 2f 02 5f 50 52 5f 43 50 55 30) * *******************************************************************************/ ACPI_STATUS AcpiNsInternalizeName ( const char *ExternalName, char **ConvertedName) { char *InternalName; ACPI_NAMESTRING_INFO Info; ACPI_STATUS Status; ACPI_FUNCTION_TRACE (NsInternalizeName); if ((!ExternalName) || (*ExternalName == 0) || (!ConvertedName)) { return_ACPI_STATUS (AE_BAD_PARAMETER); } /* Get the length of the new internal name */ Info.ExternalName = ExternalName; AcpiNsGetInternalNameLength (&Info); /* We need a segment to store the internal name */ InternalName = ACPI_ALLOCATE_ZEROED (Info.Length); if (!InternalName) { return_ACPI_STATUS (AE_NO_MEMORY); } /* Build the name */ Info.InternalName = InternalName; Status = AcpiNsBuildInternalName (&Info); if (ACPI_FAILURE (Status)) { ACPI_FREE (InternalName); return_ACPI_STATUS (Status); } *ConvertedName = InternalName; return_ACPI_STATUS (AE_OK); } /******************************************************************************* * * FUNCTION: AcpiNsExternalizeName * * PARAMETERS: InternalNameLength - Lenth of the internal name below * InternalName - Internal representation of name * ConvertedNameLength - Where the length is returned * ConvertedName - Where the resulting external name * is returned * * RETURN: Status * * DESCRIPTION: Convert internal name (e.g. 5c 2f 02 5f 50 52 5f 43 50 55 30) * to its external (printable) form (e.g. "\_PR_.CPU0") * ******************************************************************************/ ACPI_STATUS AcpiNsExternalizeName ( UINT32 InternalNameLength, const char *InternalName, UINT32 *ConvertedNameLength, char **ConvertedName) { UINT32 NamesIndex = 0; UINT32 NumSegments = 0; UINT32 RequiredLength; UINT32 PrefixLength = 0; UINT32 i = 0; UINT32 j = 0; ACPI_FUNCTION_TRACE (NsExternalizeName); if (!InternalNameLength || !InternalName || !ConvertedName) { return_ACPI_STATUS (AE_BAD_PARAMETER); } /* Check for a prefix (one '\' | one or more '^') */ switch (InternalName[0]) { case AML_ROOT_PREFIX: PrefixLength = 1; break; case AML_PARENT_PREFIX: for (i = 0; i < InternalNameLength; i++) { if (ACPI_IS_PARENT_PREFIX (InternalName[i])) { PrefixLength = i + 1; } else { break; } } if (i == InternalNameLength) { PrefixLength = i; } break; default: break; } /* * Check for object names. Note that there could be 0-255 of these * 4-byte elements. */ if (PrefixLength < InternalNameLength) { switch (InternalName[PrefixLength]) { case AML_MULTI_NAME_PREFIX_OP: /* 4-byte names */ NamesIndex = PrefixLength + 2; NumSegments = (UINT8) InternalName[(ACPI_SIZE) PrefixLength + 1]; break; case AML_DUAL_NAME_PREFIX: /* Two 4-byte names */ NamesIndex = PrefixLength + 1; NumSegments = 2; break; case 0: /* NullName */ NamesIndex = 0; NumSegments = 0; break; default: /* one 4-byte name */ NamesIndex = PrefixLength; NumSegments = 1; break; } } /* * Calculate the length of ConvertedName, which equals the length * of the prefix, length of all object names, length of any required * punctuation ('.') between object names, plus the NULL terminator. */ RequiredLength = PrefixLength + (4 * NumSegments) + ((NumSegments > 0) ? (NumSegments - 1) : 0) + 1; /* * Check to see if we're still in bounds. If not, there's a problem * with InternalName (invalid format). */ if (RequiredLength > InternalNameLength) { ACPI_ERROR ((AE_INFO, "Invalid internal name")); return_ACPI_STATUS (AE_BAD_PATHNAME); } /* Build the ConvertedName */ *ConvertedName = ACPI_ALLOCATE_ZEROED (RequiredLength); if (!(*ConvertedName)) { return_ACPI_STATUS (AE_NO_MEMORY); } j = 0; for (i = 0; i < PrefixLength; i++) { (*ConvertedName)[j++] = InternalName[i]; } if (NumSegments > 0) { for (i = 0; i < NumSegments; i++) { if (i > 0) { (*ConvertedName)[j++] = '.'; } /* Copy and validate the 4-char name segment */ ACPI_MOVE_NAME (&(*ConvertedName)[j], &InternalName[NamesIndex]); AcpiUtRepairName (&(*ConvertedName)[j]); j += ACPI_NAME_SIZE; NamesIndex += ACPI_NAME_SIZE; } } if (ConvertedNameLength) { *ConvertedNameLength = (UINT32) RequiredLength; } return_ACPI_STATUS (AE_OK); } /******************************************************************************* * * FUNCTION: AcpiNsValidateHandle * * PARAMETERS: Handle - Handle to be validated and typecast to a * namespace node. * * RETURN: A pointer to a namespace node * * DESCRIPTION: Convert a namespace handle to a namespace node. Handles special * cases for the root node. * * NOTE: Real integer handles would allow for more verification * and keep all pointers within this subsystem - however this introduces * more overhead and has not been necessary to this point. Drivers * holding handles are typically notified before a node becomes invalid * due to a table unload. * ******************************************************************************/ ACPI_NAMESPACE_NODE * AcpiNsValidateHandle ( ACPI_HANDLE Handle) { ACPI_FUNCTION_ENTRY (); /* Parameter validation */ if ((!Handle) || (Handle == ACPI_ROOT_OBJECT)) { return (AcpiGbl_RootNode); } /* We can at least attempt to verify the handle */ if (ACPI_GET_DESCRIPTOR_TYPE (Handle) != ACPI_DESC_TYPE_NAMED) { return (NULL); } return (ACPI_CAST_PTR (ACPI_NAMESPACE_NODE, Handle)); } /******************************************************************************* * * FUNCTION: AcpiNsTerminate * * PARAMETERS: none * * RETURN: none * * DESCRIPTION: free memory allocated for namespace and ACPI table storage. * ******************************************************************************/ void AcpiNsTerminate ( void) { ACPI_STATUS Status; ACPI_FUNCTION_TRACE (NsTerminate); /* * Free the entire namespace -- all nodes and all objects * attached to the nodes */ AcpiNsDeleteNamespaceSubtree (AcpiGbl_RootNode); /* Delete any objects attached to the root node */ Status = AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); if (ACPI_FAILURE (Status)) { return_VOID; } AcpiNsDeleteNode (AcpiGbl_RootNode); (void) AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Namespace freed\n")); return_VOID; } /******************************************************************************* * * FUNCTION: AcpiNsOpensScope * * PARAMETERS: Type - A valid namespace type * * RETURN: NEWSCOPE if the passed type "opens a name scope" according * to the ACPI specification, else 0 * ******************************************************************************/ UINT32 AcpiNsOpensScope ( ACPI_OBJECT_TYPE Type) { ACPI_FUNCTION_ENTRY (); if (Type > ACPI_TYPE_LOCAL_MAX) { /* type code out of range */ ACPI_WARNING ((AE_INFO, "Invalid Object Type 0x%X", Type)); return (ACPI_NS_NORMAL); } return (((UINT32) AcpiGbl_NsProperties[Type]) & ACPI_NS_NEWSCOPE); } /******************************************************************************* * * FUNCTION: AcpiNsGetNode * * PARAMETERS: *Pathname - Name to be found, in external (ASL) format. The * \ (backslash) and ^ (carat) prefixes, and the * . (period) to separate segments are supported. * PrefixNode - Root of subtree to be searched, or NS_ALL for the * root of the name space. If Name is fully * qualified (first INT8 is '\'), the passed value * of Scope will not be accessed. * Flags - Used to indicate whether to perform upsearch or * not. * ReturnNode - Where the Node is returned * * DESCRIPTION: Look up a name relative to a given scope and return the * corresponding Node. NOTE: Scope can be null. * * MUTEX: Locks namespace * ******************************************************************************/ ACPI_STATUS AcpiNsGetNode ( ACPI_NAMESPACE_NODE *PrefixNode, const char *Pathname, UINT32 Flags, ACPI_NAMESPACE_NODE **ReturnNode) { ACPI_GENERIC_STATE ScopeInfo; ACPI_STATUS Status; char *InternalPath; ACPI_FUNCTION_TRACE_PTR (NsGetNode, ACPI_CAST_PTR (char, Pathname)); /* Simplest case is a null pathname */ if (!Pathname) { *ReturnNode = PrefixNode; if (!PrefixNode) { *ReturnNode = AcpiGbl_RootNode; } return_ACPI_STATUS (AE_OK); } /* Quick check for a reference to the root */ if (ACPI_IS_ROOT_PREFIX (Pathname[0]) && (!Pathname[1])) { *ReturnNode = AcpiGbl_RootNode; return_ACPI_STATUS (AE_OK); } /* Convert path to internal representation */ Status = AcpiNsInternalizeName (Pathname, &InternalPath); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } /* Must lock namespace during lookup */ Status = AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); if (ACPI_FAILURE (Status)) { goto Cleanup; } /* Setup lookup scope (search starting point) */ ScopeInfo.Scope.Node = PrefixNode; /* Lookup the name in the namespace */ Status = AcpiNsLookup (&ScopeInfo, InternalPath, ACPI_TYPE_ANY, ACPI_IMODE_EXECUTE, (Flags | ACPI_NS_DONT_OPEN_SCOPE), NULL, ReturnNode); if (ACPI_FAILURE (Status)) { ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "%s, %s\n", Pathname, AcpiFormatException (Status))); } (void) AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); Cleanup: ACPI_FREE (InternalPath); return_ACPI_STATUS (Status); } src/acpica/source/components/namespace/nswalk.c000066400000000000000000000406631231470457100221660ustar00rootroot00000000000000/****************************************************************************** * * Module Name: nswalk - Functions for walking the ACPI namespace * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #define __NSWALK_C__ #include "acpi.h" #include "accommon.h" #include "acnamesp.h" #define _COMPONENT ACPI_NAMESPACE ACPI_MODULE_NAME ("nswalk") /******************************************************************************* * * FUNCTION: AcpiNsGetNextNode * * PARAMETERS: ParentNode - Parent node whose children we are * getting * ChildNode - Previous child that was found. * The NEXT child will be returned * * RETURN: ACPI_NAMESPACE_NODE - Pointer to the NEXT child or NULL if * none is found. * * DESCRIPTION: Return the next peer node within the namespace. If Handle * is valid, Scope is ignored. Otherwise, the first node * within Scope is returned. * ******************************************************************************/ ACPI_NAMESPACE_NODE * AcpiNsGetNextNode ( ACPI_NAMESPACE_NODE *ParentNode, ACPI_NAMESPACE_NODE *ChildNode) { ACPI_FUNCTION_ENTRY (); if (!ChildNode) { /* It's really the parent's _scope_ that we want */ return (ParentNode->Child); } /* Otherwise just return the next peer */ return (ChildNode->Peer); } /******************************************************************************* * * FUNCTION: AcpiNsGetNextNodeTyped * * PARAMETERS: Type - Type of node to be searched for * ParentNode - Parent node whose children we are * getting * ChildNode - Previous child that was found. * The NEXT child will be returned * * RETURN: ACPI_NAMESPACE_NODE - Pointer to the NEXT child or NULL if * none is found. * * DESCRIPTION: Return the next peer node within the namespace. If Handle * is valid, Scope is ignored. Otherwise, the first node * within Scope is returned. * ******************************************************************************/ ACPI_NAMESPACE_NODE * AcpiNsGetNextNodeTyped ( ACPI_OBJECT_TYPE Type, ACPI_NAMESPACE_NODE *ParentNode, ACPI_NAMESPACE_NODE *ChildNode) { ACPI_NAMESPACE_NODE *NextNode = NULL; ACPI_FUNCTION_ENTRY (); NextNode = AcpiNsGetNextNode (ParentNode, ChildNode); /* If any type is OK, we are done */ if (Type == ACPI_TYPE_ANY) { /* NextNode is NULL if we are at the end-of-list */ return (NextNode); } /* Must search for the node -- but within this scope only */ while (NextNode) { /* If type matches, we are done */ if (NextNode->Type == Type) { return (NextNode); } /* Otherwise, move on to the next peer node */ NextNode = NextNode->Peer; } /* Not found */ return (NULL); } /******************************************************************************* * * FUNCTION: AcpiNsWalkNamespace * * PARAMETERS: Type - ACPI_OBJECT_TYPE to search for * StartNode - Handle in namespace where search begins * MaxDepth - Depth to which search is to reach * Flags - Whether to unlock the NS before invoking * the callback routine * DescendingCallback - Called during tree descent * when an object of "Type" is found * AscendingCallback - Called during tree ascent * when an object of "Type" is found * Context - Passed to user function(s) above * ReturnValue - from the UserFunction if terminated * early. Otherwise, returns NULL. * RETURNS: Status * * DESCRIPTION: Performs a modified depth-first walk of the namespace tree, * starting (and ending) at the node specified by StartHandle. * The callback function is called whenever a node that matches * the type parameter is found. If the callback function returns * a non-zero value, the search is terminated immediately and * this value is returned to the caller. * * The point of this procedure is to provide a generic namespace * walk routine that can be called from multiple places to * provide multiple services; the callback function(s) can be * tailored to each task, whether it is a print function, * a compare function, etc. * ******************************************************************************/ ACPI_STATUS AcpiNsWalkNamespace ( ACPI_OBJECT_TYPE Type, ACPI_HANDLE StartNode, UINT32 MaxDepth, UINT32 Flags, ACPI_WALK_CALLBACK DescendingCallback, ACPI_WALK_CALLBACK AscendingCallback, void *Context, void **ReturnValue) { ACPI_STATUS Status; ACPI_STATUS MutexStatus; ACPI_NAMESPACE_NODE *ChildNode; ACPI_NAMESPACE_NODE *ParentNode; ACPI_OBJECT_TYPE ChildType; UINT32 Level; BOOLEAN NodePreviouslyVisited = FALSE; ACPI_FUNCTION_TRACE (NsWalkNamespace); /* Special case for the namespace Root Node */ if (StartNode == ACPI_ROOT_OBJECT) { StartNode = AcpiGbl_RootNode; } /* Null child means "get first node" */ ParentNode = StartNode; ChildNode = AcpiNsGetNextNode (ParentNode, NULL); ChildType = ACPI_TYPE_ANY; Level = 1; /* * Traverse the tree of nodes until we bubble back up to where we * started. When Level is zero, the loop is done because we have * bubbled up to (and passed) the original parent handle (StartEntry) */ while (Level > 0 && ChildNode) { Status = AE_OK; /* Found next child, get the type if we are not searching for ANY */ if (Type != ACPI_TYPE_ANY) { ChildType = ChildNode->Type; } /* * Ignore all temporary namespace nodes (created during control * method execution) unless told otherwise. These temporary nodes * can cause a race condition because they can be deleted during * the execution of the user function (if the namespace is * unlocked before invocation of the user function.) Only the * debugger namespace dump will examine the temporary nodes. */ if ((ChildNode->Flags & ANOBJ_TEMPORARY) && !(Flags & ACPI_NS_WALK_TEMP_NODES)) { Status = AE_CTRL_DEPTH; } /* Type must match requested type */ else if (ChildType == Type) { /* * Found a matching node, invoke the user callback function. * Unlock the namespace if flag is set. */ if (Flags & ACPI_NS_WALK_UNLOCK) { MutexStatus = AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); if (ACPI_FAILURE (MutexStatus)) { return_ACPI_STATUS (MutexStatus); } } /* * Invoke the user function, either descending, ascending, * or both. */ if (!NodePreviouslyVisited) { if (DescendingCallback) { Status = DescendingCallback (ChildNode, Level, Context, ReturnValue); } } else { if (AscendingCallback) { Status = AscendingCallback (ChildNode, Level, Context, ReturnValue); } } if (Flags & ACPI_NS_WALK_UNLOCK) { MutexStatus = AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); if (ACPI_FAILURE (MutexStatus)) { return_ACPI_STATUS (MutexStatus); } } switch (Status) { case AE_OK: case AE_CTRL_DEPTH: /* Just keep going */ break; case AE_CTRL_TERMINATE: /* Exit now, with OK status */ return_ACPI_STATUS (AE_OK); default: /* All others are valid exceptions */ return_ACPI_STATUS (Status); } } /* * Depth first search: Attempt to go down another level in the * namespace if we are allowed to. Don't go any further if we have * reached the caller specified maximum depth or if the user * function has specified that the maximum depth has been reached. */ if (!NodePreviouslyVisited && (Level < MaxDepth) && (Status != AE_CTRL_DEPTH)) { if (ChildNode->Child) { /* There is at least one child of this node, visit it */ Level++; ParentNode = ChildNode; ChildNode = AcpiNsGetNextNode (ParentNode, NULL); continue; } } /* No more children, re-visit this node */ if (!NodePreviouslyVisited) { NodePreviouslyVisited = TRUE; continue; } /* No more children, visit peers */ ChildNode = AcpiNsGetNextNode (ParentNode, ChildNode); if (ChildNode) { NodePreviouslyVisited = FALSE; } /* No peers, re-visit parent */ else { /* * No more children of this node (AcpiNsGetNextNode failed), go * back upwards in the namespace tree to the node's parent. */ Level--; ChildNode = ParentNode; ParentNode = ParentNode->Parent; NodePreviouslyVisited = TRUE; } } /* Complete walk, not terminated by user function */ return_ACPI_STATUS (AE_OK); } src/acpica/source/components/namespace/nsxfeval.c000066400000000000000000001074571231470457100225220ustar00rootroot00000000000000/******************************************************************************* * * Module Name: nsxfeval - Public interfaces to the ACPI subsystem * ACPI Object evaluation interfaces * ******************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #define __NSXFEVAL_C__ #define EXPORT_ACPI_INTERFACES #include "acpi.h" #include "accommon.h" #include "acnamesp.h" #include "acinterp.h" #define _COMPONENT ACPI_NAMESPACE ACPI_MODULE_NAME ("nsxfeval") /* Local prototypes */ static void AcpiNsResolveReferences ( ACPI_EVALUATE_INFO *Info); /******************************************************************************* * * FUNCTION: AcpiEvaluateObjectTyped * * PARAMETERS: Handle - Object handle (optional) * Pathname - Object pathname (optional) * ExternalParams - List of parameters to pass to method, * terminated by NULL. May be NULL * if no parameters are being passed. * ReturnBuffer - Where to put method's return value (if * any). If NULL, no value is returned. * ReturnType - Expected type of return object * * RETURN: Status * * DESCRIPTION: Find and evaluate the given object, passing the given * parameters if necessary. One of "Handle" or "Pathname" must * be valid (non-null) * ******************************************************************************/ ACPI_STATUS AcpiEvaluateObjectTyped ( ACPI_HANDLE Handle, ACPI_STRING Pathname, ACPI_OBJECT_LIST *ExternalParams, ACPI_BUFFER *ReturnBuffer, ACPI_OBJECT_TYPE ReturnType) { ACPI_STATUS Status; BOOLEAN FreeBufferOnError = FALSE; ACPI_FUNCTION_TRACE (AcpiEvaluateObjectTyped); /* Return buffer must be valid */ if (!ReturnBuffer) { return_ACPI_STATUS (AE_BAD_PARAMETER); } if (ReturnBuffer->Length == ACPI_ALLOCATE_BUFFER) { FreeBufferOnError = TRUE; } /* Evaluate the object */ Status = AcpiEvaluateObject (Handle, Pathname, ExternalParams, ReturnBuffer); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } /* Type ANY means "don't care" */ if (ReturnType == ACPI_TYPE_ANY) { return_ACPI_STATUS (AE_OK); } if (ReturnBuffer->Length == 0) { /* Error because caller specifically asked for a return value */ ACPI_ERROR ((AE_INFO, "No return value")); return_ACPI_STATUS (AE_NULL_OBJECT); } /* Examine the object type returned from EvaluateObject */ if (((ACPI_OBJECT *) ReturnBuffer->Pointer)->Type == ReturnType) { return_ACPI_STATUS (AE_OK); } /* Return object type does not match requested type */ ACPI_ERROR ((AE_INFO, "Incorrect return type [%s] requested [%s]", AcpiUtGetTypeName (((ACPI_OBJECT *) ReturnBuffer->Pointer)->Type), AcpiUtGetTypeName (ReturnType))); if (FreeBufferOnError) { /* * Free a buffer created via ACPI_ALLOCATE_BUFFER. * Note: We use AcpiOsFree here because AcpiOsAllocate was used * to allocate the buffer. This purposefully bypasses the * (optionally enabled) allocation tracking mechanism since we * only want to track internal allocations. */ AcpiOsFree (ReturnBuffer->Pointer); ReturnBuffer->Pointer = NULL; } ReturnBuffer->Length = 0; return_ACPI_STATUS (AE_TYPE); } ACPI_EXPORT_SYMBOL (AcpiEvaluateObjectTyped) /******************************************************************************* * * FUNCTION: AcpiEvaluateObject * * PARAMETERS: Handle - Object handle (optional) * Pathname - Object pathname (optional) * ExternalParams - List of parameters to pass to method, * terminated by NULL. May be NULL * if no parameters are being passed. * ReturnBuffer - Where to put method's return value (if * any). If NULL, no value is returned. * * RETURN: Status * * DESCRIPTION: Find and evaluate the given object, passing the given * parameters if necessary. One of "Handle" or "Pathname" must * be valid (non-null) * ******************************************************************************/ ACPI_STATUS AcpiEvaluateObject ( ACPI_HANDLE Handle, ACPI_STRING Pathname, ACPI_OBJECT_LIST *ExternalParams, ACPI_BUFFER *ReturnBuffer) { ACPI_STATUS Status; ACPI_EVALUATE_INFO *Info; ACPI_SIZE BufferSpaceNeeded; UINT32 i; ACPI_FUNCTION_TRACE (AcpiEvaluateObject); /* Allocate and initialize the evaluation information block */ Info = ACPI_ALLOCATE_ZEROED (sizeof (ACPI_EVALUATE_INFO)); if (!Info) { return_ACPI_STATUS (AE_NO_MEMORY); } /* Convert and validate the device handle */ Info->PrefixNode = AcpiNsValidateHandle (Handle); if (!Info->PrefixNode) { Status = AE_BAD_PARAMETER; goto Cleanup; } /* * Get the actual namespace node for the target object. * Handles these cases: * * 1) Null node, valid pathname from root (absolute path) * 2) Node and valid pathname (path relative to Node) * 3) Node, Null pathname */ if ((Pathname) && (ACPI_IS_ROOT_PREFIX (Pathname[0]))) { /* The path is fully qualified, just evaluate by name */ Info->PrefixNode = NULL; } else if (!Handle) { /* * A handle is optional iff a fully qualified pathname is specified. * Since we've already handled fully qualified names above, this is * an error. */ if (!Pathname) { ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Both Handle and Pathname are NULL")); } else { ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Null Handle with relative pathname [%s]", Pathname)); } Status = AE_BAD_PARAMETER; goto Cleanup; } Info->RelativePathname = Pathname; /* * Convert all external objects passed as arguments to the * internal version(s). */ if (ExternalParams && ExternalParams->Count) { Info->ParamCount = (UINT16) ExternalParams->Count; /* Warn on impossible argument count */ if (Info->ParamCount > ACPI_METHOD_NUM_ARGS) { ACPI_WARN_PREDEFINED ((AE_INFO, Pathname, ACPI_WARN_ALWAYS, "Excess arguments (%u) - using only %u", Info->ParamCount, ACPI_METHOD_NUM_ARGS)); Info->ParamCount = ACPI_METHOD_NUM_ARGS; } /* * Allocate a new parameter block for the internal objects * Add 1 to count to allow for null terminated internal list */ Info->Parameters = ACPI_ALLOCATE_ZEROED ( ((ACPI_SIZE) Info->ParamCount + 1) * sizeof (void *)); if (!Info->Parameters) { Status = AE_NO_MEMORY; goto Cleanup; } /* Convert each external object in the list to an internal object */ for (i = 0; i < Info->ParamCount; i++) { Status = AcpiUtCopyEobjectToIobject ( &ExternalParams->Pointer[i], &Info->Parameters[i]); if (ACPI_FAILURE (Status)) { goto Cleanup; } } Info->Parameters[Info->ParamCount] = NULL; } #if 0 /* * Begin incoming argument count analysis. Check for too few args * and too many args. */ switch (AcpiNsGetType (Info->Node)) { case ACPI_TYPE_METHOD: /* Check incoming argument count against the method definition */ if (Info->ObjDesc->Method.ParamCount > Info->ParamCount) { ACPI_ERROR ((AE_INFO, "Insufficient arguments (%u) - %u are required", Info->ParamCount, Info->ObjDesc->Method.ParamCount)); Status = AE_MISSING_ARGUMENTS; goto Cleanup; } else if (Info->ObjDesc->Method.ParamCount < Info->ParamCount) { ACPI_WARNING ((AE_INFO, "Excess arguments (%u) - only %u are required", Info->ParamCount, Info->ObjDesc->Method.ParamCount)); /* Just pass the required number of arguments */ Info->ParamCount = Info->ObjDesc->Method.ParamCount; } /* * Any incoming external objects to be passed as arguments to the * method must be converted to internal objects */ if (Info->ParamCount) { /* * Allocate a new parameter block for the internal objects * Add 1 to count to allow for null terminated internal list */ Info->Parameters = ACPI_ALLOCATE_ZEROED ( ((ACPI_SIZE) Info->ParamCount + 1) * sizeof (void *)); if (!Info->Parameters) { Status = AE_NO_MEMORY; goto Cleanup; } /* Convert each external object in the list to an internal object */ for (i = 0; i < Info->ParamCount; i++) { Status = AcpiUtCopyEobjectToIobject ( &ExternalParams->Pointer[i], &Info->Parameters[i]); if (ACPI_FAILURE (Status)) { goto Cleanup; } } Info->Parameters[Info->ParamCount] = NULL; } break; default: /* Warn if arguments passed to an object that is not a method */ if (Info->ParamCount) { ACPI_WARNING ((AE_INFO, "%u arguments were passed to a non-method ACPI object", Info->ParamCount)); } break; } #endif /* Now we can evaluate the object */ Status = AcpiNsEvaluate (Info); /* * If we are expecting a return value, and all went well above, * copy the return value to an external object. */ if (ReturnBuffer) { if (!Info->ReturnObject) { ReturnBuffer->Length = 0; } else { if (ACPI_GET_DESCRIPTOR_TYPE (Info->ReturnObject) == ACPI_DESC_TYPE_NAMED) { /* * If we received a NS Node as a return object, this means that * the object we are evaluating has nothing interesting to * return (such as a mutex, etc.) We return an error because * these types are essentially unsupported by this interface. * We don't check up front because this makes it easier to add * support for various types at a later date if necessary. */ Status = AE_TYPE; Info->ReturnObject = NULL; /* No need to delete a NS Node */ ReturnBuffer->Length = 0; } if (ACPI_SUCCESS (Status)) { /* Dereference Index and RefOf references */ AcpiNsResolveReferences (Info); /* Get the size of the returned object */ Status = AcpiUtGetObjectSize (Info->ReturnObject, &BufferSpaceNeeded); if (ACPI_SUCCESS (Status)) { /* Validate/Allocate/Clear caller buffer */ Status = AcpiUtInitializeBuffer (ReturnBuffer, BufferSpaceNeeded); if (ACPI_FAILURE (Status)) { /* * Caller's buffer is too small or a new one can't * be allocated */ ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Needed buffer size %X, %s\n", (UINT32) BufferSpaceNeeded, AcpiFormatException (Status))); } else { /* We have enough space for the object, build it */ Status = AcpiUtCopyIobjectToEobject (Info->ReturnObject, ReturnBuffer); } } } } } if (Info->ReturnObject) { /* * Delete the internal return object. NOTE: Interpreter must be * locked to avoid race condition. */ AcpiExEnterInterpreter (); /* Remove one reference on the return object (should delete it) */ AcpiUtRemoveReference (Info->ReturnObject); AcpiExExitInterpreter (); } Cleanup: /* Free the input parameter list (if we created one) */ if (Info->Parameters) { /* Free the allocated parameter block */ AcpiUtDeleteInternalObjectList (Info->Parameters); } ACPI_FREE (Info); return_ACPI_STATUS (Status); } ACPI_EXPORT_SYMBOL (AcpiEvaluateObject) /******************************************************************************* * * FUNCTION: AcpiNsResolveReferences * * PARAMETERS: Info - Evaluation info block * * RETURN: Info->ReturnObject is replaced with the dereferenced object * * DESCRIPTION: Dereference certain reference objects. Called before an * internal return object is converted to an external ACPI_OBJECT. * * Performs an automatic dereference of Index and RefOf reference objects. * These reference objects are not supported by the ACPI_OBJECT, so this is a * last resort effort to return something useful. Also, provides compatibility * with other ACPI implementations. * * NOTE: does not handle references within returned package objects or nested * references, but this support could be added later if found to be necessary. * ******************************************************************************/ static void AcpiNsResolveReferences ( ACPI_EVALUATE_INFO *Info) { ACPI_OPERAND_OBJECT *ObjDesc = NULL; ACPI_NAMESPACE_NODE *Node; /* We are interested in reference objects only */ if ((Info->ReturnObject)->Common.Type != ACPI_TYPE_LOCAL_REFERENCE) { return; } /* * Two types of references are supported - those created by Index and * RefOf operators. A name reference (AML_NAMEPATH_OP) can be converted * to an ACPI_OBJECT, so it is not dereferenced here. A DdbHandle * (AML_LOAD_OP) cannot be dereferenced, nor can it be converted to * an ACPI_OBJECT. */ switch (Info->ReturnObject->Reference.Class) { case ACPI_REFCLASS_INDEX: ObjDesc = *(Info->ReturnObject->Reference.Where); break; case ACPI_REFCLASS_REFOF: Node = Info->ReturnObject->Reference.Object; if (Node) { ObjDesc = Node->Object; } break; default: return; } /* Replace the existing reference object */ if (ObjDesc) { AcpiUtAddReference (ObjDesc); AcpiUtRemoveReference (Info->ReturnObject); Info->ReturnObject = ObjDesc; } return; } /******************************************************************************* * * FUNCTION: AcpiWalkNamespace * * PARAMETERS: Type - ACPI_OBJECT_TYPE to search for * StartObject - Handle in namespace where search begins * MaxDepth - Depth to which search is to reach * DescendingCallback - Called during tree descent * when an object of "Type" is found * AscendingCallback - Called during tree ascent * when an object of "Type" is found * Context - Passed to user function(s) above * ReturnValue - Location where return value of * UserFunction is put if terminated early * * RETURNS Return value from the UserFunction if terminated early. * Otherwise, returns NULL. * * DESCRIPTION: Performs a modified depth-first walk of the namespace tree, * starting (and ending) at the object specified by StartHandle. * The callback function is called whenever an object that matches * the type parameter is found. If the callback function returns * a non-zero value, the search is terminated immediately and this * value is returned to the caller. * * The point of this procedure is to provide a generic namespace * walk routine that can be called from multiple places to * provide multiple services; the callback function(s) can be * tailored to each task, whether it is a print function, * a compare function, etc. * ******************************************************************************/ ACPI_STATUS AcpiWalkNamespace ( ACPI_OBJECT_TYPE Type, ACPI_HANDLE StartObject, UINT32 MaxDepth, ACPI_WALK_CALLBACK DescendingCallback, ACPI_WALK_CALLBACK AscendingCallback, void *Context, void **ReturnValue) { ACPI_STATUS Status; ACPI_FUNCTION_TRACE (AcpiWalkNamespace); /* Parameter validation */ if ((Type > ACPI_TYPE_LOCAL_MAX) || (!MaxDepth) || (!DescendingCallback && !AscendingCallback)) { return_ACPI_STATUS (AE_BAD_PARAMETER); } /* * Need to acquire the namespace reader lock to prevent interference * with any concurrent table unloads (which causes the deletion of * namespace objects). We cannot allow the deletion of a namespace node * while the user function is using it. The exception to this are the * nodes created and deleted during control method execution -- these * nodes are marked as temporary nodes and are ignored by the namespace * walk. Thus, control methods can be executed while holding the * namespace deletion lock (and the user function can execute control * methods.) */ Status = AcpiUtAcquireReadLock (&AcpiGbl_NamespaceRwLock); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } /* * Lock the namespace around the walk. The namespace will be * unlocked/locked around each call to the user function - since the user * function must be allowed to make ACPICA calls itself (for example, it * will typically execute control methods during device enumeration.) */ Status = AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); if (ACPI_FAILURE (Status)) { goto UnlockAndExit; } /* Now we can validate the starting node */ if (!AcpiNsValidateHandle (StartObject)) { Status = AE_BAD_PARAMETER; goto UnlockAndExit2; } Status = AcpiNsWalkNamespace (Type, StartObject, MaxDepth, ACPI_NS_WALK_UNLOCK, DescendingCallback, AscendingCallback, Context, ReturnValue); UnlockAndExit2: (void) AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); UnlockAndExit: (void) AcpiUtReleaseReadLock (&AcpiGbl_NamespaceRwLock); return_ACPI_STATUS (Status); } ACPI_EXPORT_SYMBOL (AcpiWalkNamespace) /******************************************************************************* * * FUNCTION: AcpiNsGetDeviceCallback * * PARAMETERS: Callback from AcpiGetDevice * * RETURN: Status * * DESCRIPTION: Takes callbacks from WalkNamespace and filters out all non- * present devices, or if they specified a HID, it filters based * on that. * ******************************************************************************/ static ACPI_STATUS AcpiNsGetDeviceCallback ( ACPI_HANDLE ObjHandle, UINT32 NestingLevel, void *Context, void **ReturnValue) { ACPI_GET_DEVICES_INFO *Info = Context; ACPI_STATUS Status; ACPI_NAMESPACE_NODE *Node; UINT32 Flags; ACPI_PNP_DEVICE_ID *Hid; ACPI_PNP_DEVICE_ID_LIST *Cid; UINT32 i; BOOLEAN Found; int NoMatch; Status = AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); if (ACPI_FAILURE (Status)) { return (Status); } Node = AcpiNsValidateHandle (ObjHandle); Status = AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); if (ACPI_FAILURE (Status)) { return (Status); } if (!Node) { return (AE_BAD_PARAMETER); } /* * First, filter based on the device HID and CID. * * 01/2010: For this case where a specific HID is requested, we don't * want to run _STA until we have an actual HID match. Thus, we will * not unnecessarily execute _STA on devices for which the caller * doesn't care about. Previously, _STA was executed unconditionally * on all devices found here. * * A side-effect of this change is that now we will continue to search * for a matching HID even under device trees where the parent device * would have returned a _STA that indicates it is not present or * not functioning (thus aborting the search on that branch). */ if (Info->Hid != NULL) { Status = AcpiUtExecute_HID (Node, &Hid); if (Status == AE_NOT_FOUND) { return (AE_OK); } else if (ACPI_FAILURE (Status)) { return (AE_CTRL_DEPTH); } NoMatch = ACPI_STRCMP (Hid->String, Info->Hid); ACPI_FREE (Hid); if (NoMatch) { /* * HID does not match, attempt match within the * list of Compatible IDs (CIDs) */ Status = AcpiUtExecute_CID (Node, &Cid); if (Status == AE_NOT_FOUND) { return (AE_OK); } else if (ACPI_FAILURE (Status)) { return (AE_CTRL_DEPTH); } /* Walk the CID list */ Found = FALSE; for (i = 0; i < Cid->Count; i++) { if (ACPI_STRCMP (Cid->Ids[i].String, Info->Hid) == 0) { /* Found a matching CID */ Found = TRUE; break; } } ACPI_FREE (Cid); if (!Found) { return (AE_OK); } } } /* Run _STA to determine if device is present */ Status = AcpiUtExecute_STA (Node, &Flags); if (ACPI_FAILURE (Status)) { return (AE_CTRL_DEPTH); } if (!(Flags & ACPI_STA_DEVICE_PRESENT) && !(Flags & ACPI_STA_DEVICE_FUNCTIONING)) { /* * Don't examine the children of the device only when the * device is neither present nor functional. See ACPI spec, * description of _STA for more information. */ return (AE_CTRL_DEPTH); } /* We have a valid device, invoke the user function */ Status = Info->UserFunction (ObjHandle, NestingLevel, Info->Context, ReturnValue); return (Status); } /******************************************************************************* * * FUNCTION: AcpiGetDevices * * PARAMETERS: HID - HID to search for. Can be NULL. * UserFunction - Called when a matching object is found * Context - Passed to user function * ReturnValue - Location where return value of * UserFunction is put if terminated early * * RETURNS Return value from the UserFunction if terminated early. * Otherwise, returns NULL. * * DESCRIPTION: Performs a modified depth-first walk of the namespace tree, * starting (and ending) at the object specified by StartHandle. * The UserFunction is called whenever an object of type * Device is found. If the user function returns * a non-zero value, the search is terminated immediately and this * value is returned to the caller. * * This is a wrapper for WalkNamespace, but the callback performs * additional filtering. Please see AcpiNsGetDeviceCallback. * ******************************************************************************/ ACPI_STATUS AcpiGetDevices ( char *HID, ACPI_WALK_CALLBACK UserFunction, void *Context, void **ReturnValue) { ACPI_STATUS Status; ACPI_GET_DEVICES_INFO Info; ACPI_FUNCTION_TRACE (AcpiGetDevices); /* Parameter validation */ if (!UserFunction) { return_ACPI_STATUS (AE_BAD_PARAMETER); } /* * We're going to call their callback from OUR callback, so we need * to know what it is, and their context parameter. */ Info.Hid = HID; Info.Context = Context; Info.UserFunction = UserFunction; /* * Lock the namespace around the walk. * The namespace will be unlocked/locked around each call * to the user function - since this function * must be allowed to make Acpi calls itself. */ Status = AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } Status = AcpiNsWalkNamespace (ACPI_TYPE_DEVICE, ACPI_ROOT_OBJECT, ACPI_UINT32_MAX, ACPI_NS_WALK_UNLOCK, AcpiNsGetDeviceCallback, NULL, &Info, ReturnValue); (void) AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); return_ACPI_STATUS (Status); } ACPI_EXPORT_SYMBOL (AcpiGetDevices) /******************************************************************************* * * FUNCTION: AcpiAttachData * * PARAMETERS: ObjHandle - Namespace node * Handler - Handler for this attachment * Data - Pointer to data to be attached * * RETURN: Status * * DESCRIPTION: Attach arbitrary data and handler to a namespace node. * ******************************************************************************/ ACPI_STATUS AcpiAttachData ( ACPI_HANDLE ObjHandle, ACPI_OBJECT_HANDLER Handler, void *Data) { ACPI_NAMESPACE_NODE *Node; ACPI_STATUS Status; /* Parameter validation */ if (!ObjHandle || !Handler || !Data) { return (AE_BAD_PARAMETER); } Status = AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); if (ACPI_FAILURE (Status)) { return (Status); } /* Convert and validate the handle */ Node = AcpiNsValidateHandle (ObjHandle); if (!Node) { Status = AE_BAD_PARAMETER; goto UnlockAndExit; } Status = AcpiNsAttachData (Node, Handler, Data); UnlockAndExit: (void) AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); return (Status); } ACPI_EXPORT_SYMBOL (AcpiAttachData) /******************************************************************************* * * FUNCTION: AcpiDetachData * * PARAMETERS: ObjHandle - Namespace node handle * Handler - Handler used in call to AcpiAttachData * * RETURN: Status * * DESCRIPTION: Remove data that was previously attached to a node. * ******************************************************************************/ ACPI_STATUS AcpiDetachData ( ACPI_HANDLE ObjHandle, ACPI_OBJECT_HANDLER Handler) { ACPI_NAMESPACE_NODE *Node; ACPI_STATUS Status; /* Parameter validation */ if (!ObjHandle || !Handler) { return (AE_BAD_PARAMETER); } Status = AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); if (ACPI_FAILURE (Status)) { return (Status); } /* Convert and validate the handle */ Node = AcpiNsValidateHandle (ObjHandle); if (!Node) { Status = AE_BAD_PARAMETER; goto UnlockAndExit; } Status = AcpiNsDetachData (Node, Handler); UnlockAndExit: (void) AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); return (Status); } ACPI_EXPORT_SYMBOL (AcpiDetachData) /******************************************************************************* * * FUNCTION: AcpiGetData * * PARAMETERS: ObjHandle - Namespace node * Handler - Handler used in call to AttachData * Data - Where the data is returned * * RETURN: Status * * DESCRIPTION: Retrieve data that was previously attached to a namespace node. * ******************************************************************************/ ACPI_STATUS AcpiGetData ( ACPI_HANDLE ObjHandle, ACPI_OBJECT_HANDLER Handler, void **Data) { ACPI_NAMESPACE_NODE *Node; ACPI_STATUS Status; /* Parameter validation */ if (!ObjHandle || !Handler || !Data) { return (AE_BAD_PARAMETER); } Status = AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); if (ACPI_FAILURE (Status)) { return (Status); } /* Convert and validate the handle */ Node = AcpiNsValidateHandle (ObjHandle); if (!Node) { Status = AE_BAD_PARAMETER; goto UnlockAndExit; } Status = AcpiNsGetAttachedData (Node, Handler, Data); UnlockAndExit: (void) AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); return (Status); } ACPI_EXPORT_SYMBOL (AcpiGetData) src/acpica/source/components/namespace/nsxfname.c000066400000000000000000000604141231470457100225020ustar00rootroot00000000000000/****************************************************************************** * * Module Name: nsxfname - Public interfaces to the ACPI subsystem * ACPI Namespace oriented interfaces * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #define __NSXFNAME_C__ #define EXPORT_ACPI_INTERFACES #include "acpi.h" #include "accommon.h" #include "acnamesp.h" #include "acparser.h" #include "amlcode.h" #define _COMPONENT ACPI_NAMESPACE ACPI_MODULE_NAME ("nsxfname") /* Local prototypes */ static char * AcpiNsCopyDeviceId ( ACPI_PNP_DEVICE_ID *Dest, ACPI_PNP_DEVICE_ID *Source, char *StringArea); /****************************************************************************** * * FUNCTION: AcpiGetHandle * * PARAMETERS: Parent - Object to search under (search scope). * Pathname - Pointer to an asciiz string containing the * name * RetHandle - Where the return handle is returned * * RETURN: Status * * DESCRIPTION: This routine will search for a caller specified name in the * name space. The caller can restrict the search region by * specifying a non NULL parent. The parent value is itself a * namespace handle. * ******************************************************************************/ ACPI_STATUS AcpiGetHandle ( ACPI_HANDLE Parent, ACPI_STRING Pathname, ACPI_HANDLE *RetHandle) { ACPI_STATUS Status; ACPI_NAMESPACE_NODE *Node = NULL; ACPI_NAMESPACE_NODE *PrefixNode = NULL; ACPI_FUNCTION_ENTRY (); /* Parameter Validation */ if (!RetHandle || !Pathname) { return (AE_BAD_PARAMETER); } /* Convert a parent handle to a prefix node */ if (Parent) { PrefixNode = AcpiNsValidateHandle (Parent); if (!PrefixNode) { return (AE_BAD_PARAMETER); } } /* * Valid cases are: * 1) Fully qualified pathname * 2) Parent + Relative pathname * * Error for */ if (ACPI_IS_ROOT_PREFIX (Pathname[0])) { /* Pathname is fully qualified (starts with '\') */ /* Special case for root-only, since we can't search for it */ if (!ACPI_STRCMP (Pathname, ACPI_NS_ROOT_PATH)) { *RetHandle = ACPI_CAST_PTR (ACPI_HANDLE, AcpiGbl_RootNode); return (AE_OK); } } else if (!PrefixNode) { /* Relative path with null prefix is disallowed */ return (AE_BAD_PARAMETER); } /* Find the Node and convert to a handle */ Status = AcpiNsGetNode (PrefixNode, Pathname, ACPI_NS_NO_UPSEARCH, &Node); if (ACPI_SUCCESS (Status)) { *RetHandle = ACPI_CAST_PTR (ACPI_HANDLE, Node); } return (Status); } ACPI_EXPORT_SYMBOL (AcpiGetHandle) /****************************************************************************** * * FUNCTION: AcpiGetName * * PARAMETERS: Handle - Handle to be converted to a pathname * NameType - Full pathname or single segment * Buffer - Buffer for returned path * * RETURN: Pointer to a string containing the fully qualified Name. * * DESCRIPTION: This routine returns the fully qualified name associated with * the Handle parameter. This and the AcpiPathnameToHandle are * complementary functions. * ******************************************************************************/ ACPI_STATUS AcpiGetName ( ACPI_HANDLE Handle, UINT32 NameType, ACPI_BUFFER *Buffer) { ACPI_STATUS Status; ACPI_NAMESPACE_NODE *Node; char *NodeName; /* Parameter validation */ if (NameType > ACPI_NAME_TYPE_MAX) { return (AE_BAD_PARAMETER); } Status = AcpiUtValidateBuffer (Buffer); if (ACPI_FAILURE (Status)) { return (Status); } if (NameType == ACPI_FULL_PATHNAME) { /* Get the full pathname (From the namespace root) */ Status = AcpiNsHandleToPathname (Handle, Buffer); return (Status); } /* * Wants the single segment ACPI name. * Validate handle and convert to a namespace Node */ Status = AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); if (ACPI_FAILURE (Status)) { return (Status); } Node = AcpiNsValidateHandle (Handle); if (!Node) { Status = AE_BAD_PARAMETER; goto UnlockAndExit; } /* Validate/Allocate/Clear caller buffer */ Status = AcpiUtInitializeBuffer (Buffer, ACPI_PATH_SEGMENT_LENGTH); if (ACPI_FAILURE (Status)) { goto UnlockAndExit; } /* Just copy the ACPI name from the Node and zero terminate it */ NodeName = AcpiUtGetNodeName (Node); ACPI_MOVE_NAME (Buffer->Pointer, NodeName); ((char *) Buffer->Pointer) [ACPI_NAME_SIZE] = 0; Status = AE_OK; UnlockAndExit: (void) AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); return (Status); } ACPI_EXPORT_SYMBOL (AcpiGetName) /****************************************************************************** * * FUNCTION: AcpiNsCopyDeviceId * * PARAMETERS: Dest - Pointer to the destination PNP_DEVICE_ID * Source - Pointer to the source PNP_DEVICE_ID * StringArea - Pointer to where to copy the dest string * * RETURN: Pointer to the next string area * * DESCRIPTION: Copy a single PNP_DEVICE_ID, including the string data. * ******************************************************************************/ static char * AcpiNsCopyDeviceId ( ACPI_PNP_DEVICE_ID *Dest, ACPI_PNP_DEVICE_ID *Source, char *StringArea) { /* Create the destination PNP_DEVICE_ID */ Dest->String = StringArea; Dest->Length = Source->Length; /* Copy actual string and return a pointer to the next string area */ ACPI_MEMCPY (StringArea, Source->String, Source->Length); return (StringArea + Source->Length); } /****************************************************************************** * * FUNCTION: AcpiGetObjectInfo * * PARAMETERS: Handle - Object Handle * ReturnBuffer - Where the info is returned * * RETURN: Status * * DESCRIPTION: Returns information about an object as gleaned from the * namespace node and possibly by running several standard * control methods (Such as in the case of a device.) * * For Device and Processor objects, run the Device _HID, _UID, _CID, _SUB, * _STA, _ADR, _SxW, and _SxD methods. * * Note: Allocates the return buffer, must be freed by the caller. * ******************************************************************************/ ACPI_STATUS AcpiGetObjectInfo ( ACPI_HANDLE Handle, ACPI_DEVICE_INFO **ReturnBuffer) { ACPI_NAMESPACE_NODE *Node; ACPI_DEVICE_INFO *Info; ACPI_PNP_DEVICE_ID_LIST *CidList = NULL; ACPI_PNP_DEVICE_ID *Hid = NULL; ACPI_PNP_DEVICE_ID *Uid = NULL; ACPI_PNP_DEVICE_ID *Sub = NULL; char *NextIdString; ACPI_OBJECT_TYPE Type; ACPI_NAME Name; UINT8 ParamCount= 0; UINT8 Valid = 0; UINT32 InfoSize; UINT32 i; ACPI_STATUS Status; /* Parameter validation */ if (!Handle || !ReturnBuffer) { return (AE_BAD_PARAMETER); } Status = AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); if (ACPI_FAILURE (Status)) { return (Status); } Node = AcpiNsValidateHandle (Handle); if (!Node) { (void) AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); return (AE_BAD_PARAMETER); } /* Get the namespace node data while the namespace is locked */ InfoSize = sizeof (ACPI_DEVICE_INFO); Type = Node->Type; Name = Node->Name.Integer; if (Node->Type == ACPI_TYPE_METHOD) { ParamCount = Node->Object->Method.ParamCount; } Status = AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); if (ACPI_FAILURE (Status)) { return (Status); } if ((Type == ACPI_TYPE_DEVICE) || (Type == ACPI_TYPE_PROCESSOR)) { /* * Get extra info for ACPI Device/Processor objects only: * Run the Device _HID, _UID, _SUB, and _CID methods. * * Note: none of these methods are required, so they may or may * not be present for this device. The Info->Valid bitfield is used * to indicate which methods were found and run successfully. */ /* Execute the Device._HID method */ Status = AcpiUtExecute_HID (Node, &Hid); if (ACPI_SUCCESS (Status)) { InfoSize += Hid->Length; Valid |= ACPI_VALID_HID; } /* Execute the Device._UID method */ Status = AcpiUtExecute_UID (Node, &Uid); if (ACPI_SUCCESS (Status)) { InfoSize += Uid->Length; Valid |= ACPI_VALID_UID; } /* Execute the Device._SUB method */ Status = AcpiUtExecute_SUB (Node, &Sub); if (ACPI_SUCCESS (Status)) { InfoSize += Sub->Length; Valid |= ACPI_VALID_SUB; } /* Execute the Device._CID method */ Status = AcpiUtExecute_CID (Node, &CidList); if (ACPI_SUCCESS (Status)) { /* Add size of CID strings and CID pointer array */ InfoSize += (CidList->ListSize - sizeof (ACPI_PNP_DEVICE_ID_LIST)); Valid |= ACPI_VALID_CID; } } /* * Now that we have the variable-length data, we can allocate the * return buffer */ Info = ACPI_ALLOCATE_ZEROED (InfoSize); if (!Info) { Status = AE_NO_MEMORY; goto Cleanup; } /* Get the fixed-length data */ if ((Type == ACPI_TYPE_DEVICE) || (Type == ACPI_TYPE_PROCESSOR)) { /* * Get extra info for ACPI Device/Processor objects only: * Run the _STA, _ADR and, SxW, and _SxD methods. * * Notes: none of these methods are required, so they may or may * not be present for this device. The Info->Valid bitfield is used * to indicate which methods were found and run successfully. * * For _STA, if the method does not exist, then (as per the ACPI * specification), the returned CurrentStatus flags will indicate * that the device is present/functional/enabled. Otherwise, the * CurrentStatus flags reflect the value returned from _STA. */ /* Execute the Device._STA method */ Status = AcpiUtExecute_STA (Node, &Info->CurrentStatus); if (ACPI_SUCCESS (Status)) { Valid |= ACPI_VALID_STA; } /* Execute the Device._ADR method */ Status = AcpiUtEvaluateNumericObject (METHOD_NAME__ADR, Node, &Info->Address); if (ACPI_SUCCESS (Status)) { Valid |= ACPI_VALID_ADR; } /* Execute the Device._SxW methods */ Status = AcpiUtExecutePowerMethods (Node, AcpiGbl_LowestDstateNames, ACPI_NUM_SxW_METHODS, Info->LowestDstates); if (ACPI_SUCCESS (Status)) { Valid |= ACPI_VALID_SXWS; } /* Execute the Device._SxD methods */ Status = AcpiUtExecutePowerMethods (Node, AcpiGbl_HighestDstateNames, ACPI_NUM_SxD_METHODS, Info->HighestDstates); if (ACPI_SUCCESS (Status)) { Valid |= ACPI_VALID_SXDS; } } /* * Create a pointer to the string area of the return buffer. * Point to the end of the base ACPI_DEVICE_INFO structure. */ NextIdString = ACPI_CAST_PTR (char, Info->CompatibleIdList.Ids); if (CidList) { /* Point past the CID PNP_DEVICE_ID array */ NextIdString += ((ACPI_SIZE) CidList->Count * sizeof (ACPI_PNP_DEVICE_ID)); } /* * Copy the HID, UID, SUB, and CIDs to the return buffer. * The variable-length strings are copied to the reserved area * at the end of the buffer. * * For HID and CID, check if the ID is a PCI Root Bridge. */ if (Hid) { NextIdString = AcpiNsCopyDeviceId (&Info->HardwareId, Hid, NextIdString); if (AcpiUtIsPciRootBridge (Hid->String)) { Info->Flags |= ACPI_PCI_ROOT_BRIDGE; } } if (Uid) { NextIdString = AcpiNsCopyDeviceId (&Info->UniqueId, Uid, NextIdString); } if (Sub) { NextIdString = AcpiNsCopyDeviceId (&Info->SubsystemId, Sub, NextIdString); } if (CidList) { Info->CompatibleIdList.Count = CidList->Count; Info->CompatibleIdList.ListSize = CidList->ListSize; /* Copy each CID */ for (i = 0; i < CidList->Count; i++) { NextIdString = AcpiNsCopyDeviceId (&Info->CompatibleIdList.Ids[i], &CidList->Ids[i], NextIdString); if (AcpiUtIsPciRootBridge (CidList->Ids[i].String)) { Info->Flags |= ACPI_PCI_ROOT_BRIDGE; } } } /* Copy the fixed-length data */ Info->InfoSize = InfoSize; Info->Type = Type; Info->Name = Name; Info->ParamCount = ParamCount; Info->Valid = Valid; *ReturnBuffer = Info; Status = AE_OK; Cleanup: if (Hid) { ACPI_FREE (Hid); } if (Uid) { ACPI_FREE (Uid); } if (Sub) { ACPI_FREE (Sub); } if (CidList) { ACPI_FREE (CidList); } return (Status); } ACPI_EXPORT_SYMBOL (AcpiGetObjectInfo) /****************************************************************************** * * FUNCTION: AcpiInstallMethod * * PARAMETERS: Buffer - An ACPI table containing one control method * * RETURN: Status * * DESCRIPTION: Install a control method into the namespace. If the method * name already exists in the namespace, it is overwritten. The * input buffer must contain a valid DSDT or SSDT containing a * single control method. * ******************************************************************************/ ACPI_STATUS AcpiInstallMethod ( UINT8 *Buffer) { ACPI_TABLE_HEADER *Table = ACPI_CAST_PTR (ACPI_TABLE_HEADER, Buffer); UINT8 *AmlBuffer; UINT8 *AmlStart; char *Path; ACPI_NAMESPACE_NODE *Node; ACPI_OPERAND_OBJECT *MethodObj; ACPI_PARSE_STATE ParserState; UINT32 AmlLength; UINT16 Opcode; UINT8 MethodFlags; ACPI_STATUS Status; /* Parameter validation */ if (!Buffer) { return (AE_BAD_PARAMETER); } /* Table must be a DSDT or SSDT */ if (!ACPI_COMPARE_NAME (Table->Signature, ACPI_SIG_DSDT) && !ACPI_COMPARE_NAME (Table->Signature, ACPI_SIG_SSDT)) { return (AE_BAD_HEADER); } /* First AML opcode in the table must be a control method */ ParserState.Aml = Buffer + sizeof (ACPI_TABLE_HEADER); Opcode = AcpiPsPeekOpcode (&ParserState); if (Opcode != AML_METHOD_OP) { return (AE_BAD_PARAMETER); } /* Extract method information from the raw AML */ ParserState.Aml += AcpiPsGetOpcodeSize (Opcode); ParserState.PkgEnd = AcpiPsGetNextPackageEnd (&ParserState); Path = AcpiPsGetNextNamestring (&ParserState); MethodFlags = *ParserState.Aml++; AmlStart = ParserState.Aml; AmlLength = ACPI_PTR_DIFF (ParserState.PkgEnd, AmlStart); /* * Allocate resources up-front. We don't want to have to delete a new * node from the namespace if we cannot allocate memory. */ AmlBuffer = ACPI_ALLOCATE (AmlLength); if (!AmlBuffer) { return (AE_NO_MEMORY); } MethodObj = AcpiUtCreateInternalObject (ACPI_TYPE_METHOD); if (!MethodObj) { ACPI_FREE (AmlBuffer); return (AE_NO_MEMORY); } /* Lock namespace for AcpiNsLookup, we may be creating a new node */ Status = AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); if (ACPI_FAILURE (Status)) { goto ErrorExit; } /* The lookup either returns an existing node or creates a new one */ Status = AcpiNsLookup (NULL, Path, ACPI_TYPE_METHOD, ACPI_IMODE_LOAD_PASS1, ACPI_NS_DONT_OPEN_SCOPE | ACPI_NS_ERROR_IF_FOUND, NULL, &Node); (void) AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); if (ACPI_FAILURE (Status)) /* NsLookup */ { if (Status != AE_ALREADY_EXISTS) { goto ErrorExit; } /* Node existed previously, make sure it is a method node */ if (Node->Type != ACPI_TYPE_METHOD) { Status = AE_TYPE; goto ErrorExit; } } /* Copy the method AML to the local buffer */ ACPI_MEMCPY (AmlBuffer, AmlStart, AmlLength); /* Initialize the method object with the new method's information */ MethodObj->Method.AmlStart = AmlBuffer; MethodObj->Method.AmlLength = AmlLength; MethodObj->Method.ParamCount = (UINT8) (MethodFlags & AML_METHOD_ARG_COUNT); if (MethodFlags & AML_METHOD_SERIALIZED) { MethodObj->Method.InfoFlags = ACPI_METHOD_SERIALIZED; MethodObj->Method.SyncLevel = (UINT8) ((MethodFlags & AML_METHOD_SYNC_LEVEL) >> 4); } /* * Now that it is complete, we can attach the new method object to * the method Node (detaches/deletes any existing object) */ Status = AcpiNsAttachObject (Node, MethodObj, ACPI_TYPE_METHOD); /* * Flag indicates AML buffer is dynamic, must be deleted later. * Must be set only after attach above. */ Node->Flags |= ANOBJ_ALLOCATED_BUFFER; /* Remove local reference to the method object */ AcpiUtRemoveReference (MethodObj); return (Status); ErrorExit: ACPI_FREE (AmlBuffer); ACPI_FREE (MethodObj); return (Status); } ACPI_EXPORT_SYMBOL (AcpiInstallMethod) src/acpica/source/components/namespace/nsxfobj.c000066400000000000000000000272671231470457100223450ustar00rootroot00000000000000/******************************************************************************* * * Module Name: nsxfobj - Public interfaces to the ACPI subsystem * ACPI Object oriented interfaces * ******************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #define __NSXFOBJ_C__ #define EXPORT_ACPI_INTERFACES #include "acpi.h" #include "accommon.h" #include "acnamesp.h" #define _COMPONENT ACPI_NAMESPACE ACPI_MODULE_NAME ("nsxfobj") /******************************************************************************* * * FUNCTION: AcpiGetType * * PARAMETERS: Handle - Handle of object whose type is desired * RetType - Where the type will be placed * * RETURN: Status * * DESCRIPTION: This routine returns the type associatd with a particular handle * ******************************************************************************/ ACPI_STATUS AcpiGetType ( ACPI_HANDLE Handle, ACPI_OBJECT_TYPE *RetType) { ACPI_NAMESPACE_NODE *Node; ACPI_STATUS Status; /* Parameter Validation */ if (!RetType) { return (AE_BAD_PARAMETER); } /* * Special case for the predefined Root Node * (return type ANY) */ if (Handle == ACPI_ROOT_OBJECT) { *RetType = ACPI_TYPE_ANY; return (AE_OK); } Status = AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); if (ACPI_FAILURE (Status)) { return (Status); } /* Convert and validate the handle */ Node = AcpiNsValidateHandle (Handle); if (!Node) { (void) AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); return (AE_BAD_PARAMETER); } *RetType = Node->Type; Status = AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); return (Status); } ACPI_EXPORT_SYMBOL (AcpiGetType) /******************************************************************************* * * FUNCTION: AcpiGetParent * * PARAMETERS: Handle - Handle of object whose parent is desired * RetHandle - Where the parent handle will be placed * * RETURN: Status * * DESCRIPTION: Returns a handle to the parent of the object represented by * Handle. * ******************************************************************************/ ACPI_STATUS AcpiGetParent ( ACPI_HANDLE Handle, ACPI_HANDLE *RetHandle) { ACPI_NAMESPACE_NODE *Node; ACPI_NAMESPACE_NODE *ParentNode; ACPI_STATUS Status; if (!RetHandle) { return (AE_BAD_PARAMETER); } /* Special case for the predefined Root Node (no parent) */ if (Handle == ACPI_ROOT_OBJECT) { return (AE_NULL_ENTRY); } Status = AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); if (ACPI_FAILURE (Status)) { return (Status); } /* Convert and validate the handle */ Node = AcpiNsValidateHandle (Handle); if (!Node) { Status = AE_BAD_PARAMETER; goto UnlockAndExit; } /* Get the parent entry */ ParentNode = Node->Parent; *RetHandle = ACPI_CAST_PTR (ACPI_HANDLE, ParentNode); /* Return exception if parent is null */ if (!ParentNode) { Status = AE_NULL_ENTRY; } UnlockAndExit: (void) AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); return (Status); } ACPI_EXPORT_SYMBOL (AcpiGetParent) /******************************************************************************* * * FUNCTION: AcpiGetNextObject * * PARAMETERS: Type - Type of object to be searched for * Parent - Parent object whose children we are getting * LastChild - Previous child that was found. * The NEXT child will be returned * RetHandle - Where handle to the next object is placed * * RETURN: Status * * DESCRIPTION: Return the next peer object within the namespace. If Handle is * valid, Scope is ignored. Otherwise, the first object within * Scope is returned. * ******************************************************************************/ ACPI_STATUS AcpiGetNextObject ( ACPI_OBJECT_TYPE Type, ACPI_HANDLE Parent, ACPI_HANDLE Child, ACPI_HANDLE *RetHandle) { ACPI_STATUS Status; ACPI_NAMESPACE_NODE *Node; ACPI_NAMESPACE_NODE *ParentNode = NULL; ACPI_NAMESPACE_NODE *ChildNode = NULL; /* Parameter validation */ if (Type > ACPI_TYPE_EXTERNAL_MAX) { return (AE_BAD_PARAMETER); } Status = AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); if (ACPI_FAILURE (Status)) { return (Status); } /* If null handle, use the parent */ if (!Child) { /* Start search at the beginning of the specified scope */ ParentNode = AcpiNsValidateHandle (Parent); if (!ParentNode) { Status = AE_BAD_PARAMETER; goto UnlockAndExit; } } else { /* Non-null handle, ignore the parent */ /* Convert and validate the handle */ ChildNode = AcpiNsValidateHandle (Child); if (!ChildNode) { Status = AE_BAD_PARAMETER; goto UnlockAndExit; } } /* Internal function does the real work */ Node = AcpiNsGetNextNodeTyped (Type, ParentNode, ChildNode); if (!Node) { Status = AE_NOT_FOUND; goto UnlockAndExit; } if (RetHandle) { *RetHandle = ACPI_CAST_PTR (ACPI_HANDLE, Node); } UnlockAndExit: (void) AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); return (Status); } ACPI_EXPORT_SYMBOL (AcpiGetNextObject) src/acpica/source/components/parser/000077500000000000000000000000001231470457100200525ustar00rootroot00000000000000src/acpica/source/components/parser/psargs.c000066400000000000000000000726741231470457100215350ustar00rootroot00000000000000/****************************************************************************** * * Module Name: psargs - Parse AML opcode arguments * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #define __PSARGS_C__ #include "acpi.h" #include "accommon.h" #include "acparser.h" #include "amlcode.h" #include "acnamesp.h" #include "acdispat.h" #define _COMPONENT ACPI_PARSER ACPI_MODULE_NAME ("psargs") /* Local prototypes */ static UINT32 AcpiPsGetNextPackageLength ( ACPI_PARSE_STATE *ParserState); static ACPI_PARSE_OBJECT * AcpiPsGetNextField ( ACPI_PARSE_STATE *ParserState); /******************************************************************************* * * FUNCTION: AcpiPsGetNextPackageLength * * PARAMETERS: ParserState - Current parser state object * * RETURN: Decoded package length. On completion, the AML pointer points * past the length byte or bytes. * * DESCRIPTION: Decode and return a package length field. * Note: Largest package length is 28 bits, from ACPI specification * ******************************************************************************/ static UINT32 AcpiPsGetNextPackageLength ( ACPI_PARSE_STATE *ParserState) { UINT8 *Aml = ParserState->Aml; UINT32 PackageLength = 0; UINT32 ByteCount; UINT8 ByteZeroMask = 0x3F; /* Default [0:5] */ ACPI_FUNCTION_TRACE (PsGetNextPackageLength); /* * Byte 0 bits [6:7] contain the number of additional bytes * used to encode the package length, either 0,1,2, or 3 */ ByteCount = (Aml[0] >> 6); ParserState->Aml += ((ACPI_SIZE) ByteCount + 1); /* Get bytes 3, 2, 1 as needed */ while (ByteCount) { /* * Final bit positions for the package length bytes: * Byte3->[20:27] * Byte2->[12:19] * Byte1->[04:11] * Byte0->[00:03] */ PackageLength |= (Aml[ByteCount] << ((ByteCount << 3) - 4)); ByteZeroMask = 0x0F; /* Use bits [0:3] of byte 0 */ ByteCount--; } /* Byte 0 is a special case, either bits [0:3] or [0:5] are used */ PackageLength |= (Aml[0] & ByteZeroMask); return_UINT32 (PackageLength); } /******************************************************************************* * * FUNCTION: AcpiPsGetNextPackageEnd * * PARAMETERS: ParserState - Current parser state object * * RETURN: Pointer to end-of-package +1 * * DESCRIPTION: Get next package length and return a pointer past the end of * the package. Consumes the package length field * ******************************************************************************/ UINT8 * AcpiPsGetNextPackageEnd ( ACPI_PARSE_STATE *ParserState) { UINT8 *Start = ParserState->Aml; UINT32 PackageLength; ACPI_FUNCTION_TRACE (PsGetNextPackageEnd); /* Function below updates ParserState->Aml */ PackageLength = AcpiPsGetNextPackageLength (ParserState); return_PTR (Start + PackageLength); /* end of package */ } /******************************************************************************* * * FUNCTION: AcpiPsGetNextNamestring * * PARAMETERS: ParserState - Current parser state object * * RETURN: Pointer to the start of the name string (pointer points into * the AML. * * DESCRIPTION: Get next raw namestring within the AML stream. Handles all name * prefix characters. Set parser state to point past the string. * (Name is consumed from the AML.) * ******************************************************************************/ char * AcpiPsGetNextNamestring ( ACPI_PARSE_STATE *ParserState) { UINT8 *Start = ParserState->Aml; UINT8 *End = ParserState->Aml; ACPI_FUNCTION_TRACE (PsGetNextNamestring); /* Point past any namestring prefix characters (backslash or carat) */ while (ACPI_IS_ROOT_PREFIX (*End) || ACPI_IS_PARENT_PREFIX (*End)) { End++; } /* Decode the path prefix character */ switch (*End) { case 0: /* NullName */ if (End == Start) { Start = NULL; } End++; break; case AML_DUAL_NAME_PREFIX: /* Two name segments */ End += 1 + (2 * ACPI_NAME_SIZE); break; case AML_MULTI_NAME_PREFIX_OP: /* Multiple name segments, 4 chars each, count in next byte */ End += 2 + (*(End + 1) * ACPI_NAME_SIZE); break; default: /* Single name segment */ End += ACPI_NAME_SIZE; break; } ParserState->Aml = End; return_PTR ((char *) Start); } /******************************************************************************* * * FUNCTION: AcpiPsGetNextNamepath * * PARAMETERS: ParserState - Current parser state object * Arg - Where the namepath will be stored * ArgCount - If the namepath points to a control method * the method's argument is returned here. * PossibleMethodCall - Whether the namepath can possibly be the * start of a method call * * RETURN: Status * * DESCRIPTION: Get next name (if method call, return # of required args). * Names are looked up in the internal namespace to determine * if the name represents a control method. If a method * is found, the number of arguments to the method is returned. * This information is critical for parsing to continue correctly. * ******************************************************************************/ ACPI_STATUS AcpiPsGetNextNamepath ( ACPI_WALK_STATE *WalkState, ACPI_PARSE_STATE *ParserState, ACPI_PARSE_OBJECT *Arg, BOOLEAN PossibleMethodCall) { ACPI_STATUS Status; char *Path; ACPI_PARSE_OBJECT *NameOp; ACPI_OPERAND_OBJECT *MethodDesc; ACPI_NAMESPACE_NODE *Node; UINT8 *Start = ParserState->Aml; ACPI_FUNCTION_TRACE (PsGetNextNamepath); Path = AcpiPsGetNextNamestring (ParserState); AcpiPsInitOp (Arg, AML_INT_NAMEPATH_OP); /* Null path case is allowed, just exit */ if (!Path) { Arg->Common.Value.Name = Path; return_ACPI_STATUS (AE_OK); } /* * Lookup the name in the internal namespace, starting with the current * scope. We don't want to add anything new to the namespace here, * however, so we use MODE_EXECUTE. * Allow searching of the parent tree, but don't open a new scope - * we just want to lookup the object (must be mode EXECUTE to perform * the upsearch) */ Status = AcpiNsLookup (WalkState->ScopeInfo, Path, ACPI_TYPE_ANY, ACPI_IMODE_EXECUTE, ACPI_NS_SEARCH_PARENT | ACPI_NS_DONT_OPEN_SCOPE, NULL, &Node); /* * If this name is a control method invocation, we must * setup the method call */ if (ACPI_SUCCESS (Status) && PossibleMethodCall && (Node->Type == ACPI_TYPE_METHOD)) { if (WalkState->Opcode == AML_UNLOAD_OP) { /* * AcpiPsGetNextNamestring has increased the AML pointer, * so we need to restore the saved AML pointer for method call. */ WalkState->ParserState.Aml = Start; WalkState->ArgCount = 1; AcpiPsInitOp (Arg, AML_INT_METHODCALL_OP); return_ACPI_STATUS (AE_OK); } /* This name is actually a control method invocation */ MethodDesc = AcpiNsGetAttachedObject (Node); ACPI_DEBUG_PRINT ((ACPI_DB_PARSE, "Control Method - %p Desc %p Path=%p\n", Node, MethodDesc, Path)); NameOp = AcpiPsAllocOp (AML_INT_NAMEPATH_OP); if (!NameOp) { return_ACPI_STATUS (AE_NO_MEMORY); } /* Change Arg into a METHOD CALL and attach name to it */ AcpiPsInitOp (Arg, AML_INT_METHODCALL_OP); NameOp->Common.Value.Name = Path; /* Point METHODCALL/NAME to the METHOD Node */ NameOp->Common.Node = Node; AcpiPsAppendArg (Arg, NameOp); if (!MethodDesc) { ACPI_ERROR ((AE_INFO, "Control Method %p has no attached object", Node)); return_ACPI_STATUS (AE_AML_INTERNAL); } ACPI_DEBUG_PRINT ((ACPI_DB_PARSE, "Control Method - %p Args %X\n", Node, MethodDesc->Method.ParamCount)); /* Get the number of arguments to expect */ WalkState->ArgCount = MethodDesc->Method.ParamCount; return_ACPI_STATUS (AE_OK); } /* * Special handling if the name was not found during the lookup - * some NotFound cases are allowed */ if (Status == AE_NOT_FOUND) { /* 1) NotFound is ok during load pass 1/2 (allow forward references) */ if ((WalkState->ParseFlags & ACPI_PARSE_MODE_MASK) != ACPI_PARSE_EXECUTE) { Status = AE_OK; } /* 2) NotFound during a CondRefOf(x) is ok by definition */ else if (WalkState->Op->Common.AmlOpcode == AML_COND_REF_OF_OP) { Status = AE_OK; } /* * 3) NotFound while building a Package is ok at this point, we * may flag as an error later if slack mode is not enabled. * (Some ASL code depends on allowing this behavior) */ else if ((Arg->Common.Parent) && ((Arg->Common.Parent->Common.AmlOpcode == AML_PACKAGE_OP) || (Arg->Common.Parent->Common.AmlOpcode == AML_VAR_PACKAGE_OP))) { Status = AE_OK; } } /* Final exception check (may have been changed from code above) */ if (ACPI_FAILURE (Status)) { ACPI_ERROR_NAMESPACE (Path, Status); if ((WalkState->ParseFlags & ACPI_PARSE_MODE_MASK) == ACPI_PARSE_EXECUTE) { /* Report a control method execution error */ Status = AcpiDsMethodError (Status, WalkState); } } /* Save the namepath */ Arg->Common.Value.Name = Path; return_ACPI_STATUS (Status); } /******************************************************************************* * * FUNCTION: AcpiPsGetNextSimpleArg * * PARAMETERS: ParserState - Current parser state object * ArgType - The argument type (AML_*_ARG) * Arg - Where the argument is returned * * RETURN: None * * DESCRIPTION: Get the next simple argument (constant, string, or namestring) * ******************************************************************************/ void AcpiPsGetNextSimpleArg ( ACPI_PARSE_STATE *ParserState, UINT32 ArgType, ACPI_PARSE_OBJECT *Arg) { UINT32 Length; UINT16 Opcode; UINT8 *Aml = ParserState->Aml; ACPI_FUNCTION_TRACE_U32 (PsGetNextSimpleArg, ArgType); switch (ArgType) { case ARGP_BYTEDATA: /* Get 1 byte from the AML stream */ Opcode = AML_BYTE_OP; Arg->Common.Value.Integer = (UINT64) *Aml; Length = 1; break; case ARGP_WORDDATA: /* Get 2 bytes from the AML stream */ Opcode = AML_WORD_OP; ACPI_MOVE_16_TO_64 (&Arg->Common.Value.Integer, Aml); Length = 2; break; case ARGP_DWORDDATA: /* Get 4 bytes from the AML stream */ Opcode = AML_DWORD_OP; ACPI_MOVE_32_TO_64 (&Arg->Common.Value.Integer, Aml); Length = 4; break; case ARGP_QWORDDATA: /* Get 8 bytes from the AML stream */ Opcode = AML_QWORD_OP; ACPI_MOVE_64_TO_64 (&Arg->Common.Value.Integer, Aml); Length = 8; break; case ARGP_CHARLIST: /* Get a pointer to the string, point past the string */ Opcode = AML_STRING_OP; Arg->Common.Value.String = ACPI_CAST_PTR (char, Aml); /* Find the null terminator */ Length = 0; while (Aml[Length]) { Length++; } Length++; break; case ARGP_NAME: case ARGP_NAMESTRING: AcpiPsInitOp (Arg, AML_INT_NAMEPATH_OP); Arg->Common.Value.Name = AcpiPsGetNextNamestring (ParserState); return_VOID; default: ACPI_ERROR ((AE_INFO, "Invalid ArgType 0x%X", ArgType)); return_VOID; } AcpiPsInitOp (Arg, Opcode); ParserState->Aml += Length; return_VOID; } /******************************************************************************* * * FUNCTION: AcpiPsGetNextField * * PARAMETERS: ParserState - Current parser state object * * RETURN: A newly allocated FIELD op * * DESCRIPTION: Get next field (NamedField, ReservedField, or AccessField) * ******************************************************************************/ static ACPI_PARSE_OBJECT * AcpiPsGetNextField ( ACPI_PARSE_STATE *ParserState) { UINT32 AmlOffset; ACPI_PARSE_OBJECT *Field; ACPI_PARSE_OBJECT *Arg = NULL; UINT16 Opcode; UINT32 Name; UINT8 AccessType; UINT8 AccessAttribute; UINT8 AccessLength; UINT32 PkgLength; UINT8 *PkgEnd; UINT32 BufferLength; ACPI_FUNCTION_TRACE (PsGetNextField); AmlOffset = (UINT32) ACPI_PTR_DIFF ( ParserState->Aml, ParserState->AmlStart); /* Determine field type */ switch (ACPI_GET8 (ParserState->Aml)) { case AML_FIELD_OFFSET_OP: Opcode = AML_INT_RESERVEDFIELD_OP; ParserState->Aml++; break; case AML_FIELD_ACCESS_OP: Opcode = AML_INT_ACCESSFIELD_OP; ParserState->Aml++; break; case AML_FIELD_CONNECTION_OP: Opcode = AML_INT_CONNECTION_OP; ParserState->Aml++; break; case AML_FIELD_EXT_ACCESS_OP: Opcode = AML_INT_EXTACCESSFIELD_OP; ParserState->Aml++; break; default: Opcode = AML_INT_NAMEDFIELD_OP; break; } /* Allocate a new field op */ Field = AcpiPsAllocOp (Opcode); if (!Field) { return_PTR (NULL); } Field->Common.AmlOffset = AmlOffset; /* Decode the field type */ switch (Opcode) { case AML_INT_NAMEDFIELD_OP: /* Get the 4-character name */ ACPI_MOVE_32_TO_32 (&Name, ParserState->Aml); AcpiPsSetName (Field, Name); ParserState->Aml += ACPI_NAME_SIZE; /* Get the length which is encoded as a package length */ Field->Common.Value.Size = AcpiPsGetNextPackageLength (ParserState); break; case AML_INT_RESERVEDFIELD_OP: /* Get the length which is encoded as a package length */ Field->Common.Value.Size = AcpiPsGetNextPackageLength (ParserState); break; case AML_INT_ACCESSFIELD_OP: case AML_INT_EXTACCESSFIELD_OP: /* * Get AccessType and AccessAttrib and merge into the field Op * AccessType is first operand, AccessAttribute is second. stuff * these bytes into the node integer value for convenience. */ /* Get the two bytes (Type/Attribute) */ AccessType = ACPI_GET8 (ParserState->Aml); ParserState->Aml++; AccessAttribute = ACPI_GET8 (ParserState->Aml); ParserState->Aml++; Field->Common.Value.Integer = (UINT8) AccessType; Field->Common.Value.Integer |= (UINT16) (AccessAttribute << 8); /* This opcode has a third byte, AccessLength */ if (Opcode == AML_INT_EXTACCESSFIELD_OP) { AccessLength = ACPI_GET8 (ParserState->Aml); ParserState->Aml++; Field->Common.Value.Integer |= (UINT32) (AccessLength << 16); } break; case AML_INT_CONNECTION_OP: /* * Argument for Connection operator can be either a Buffer * (resource descriptor), or a NameString. */ if (ACPI_GET8 (ParserState->Aml) == AML_BUFFER_OP) { ParserState->Aml++; PkgEnd = ParserState->Aml; PkgLength = AcpiPsGetNextPackageLength (ParserState); PkgEnd += PkgLength; if (ParserState->Aml < PkgEnd) { /* Non-empty list */ Arg = AcpiPsAllocOp (AML_INT_BYTELIST_OP); if (!Arg) { AcpiPsFreeOp (Field); return_PTR (NULL); } /* Get the actual buffer length argument */ Opcode = ACPI_GET8 (ParserState->Aml); ParserState->Aml++; switch (Opcode) { case AML_BYTE_OP: /* AML_BYTEDATA_ARG */ BufferLength = ACPI_GET8 (ParserState->Aml); ParserState->Aml += 1; break; case AML_WORD_OP: /* AML_WORDDATA_ARG */ BufferLength = ACPI_GET16 (ParserState->Aml); ParserState->Aml += 2; break; case AML_DWORD_OP: /* AML_DWORDATA_ARG */ BufferLength = ACPI_GET32 (ParserState->Aml); ParserState->Aml += 4; break; default: BufferLength = 0; break; } /* Fill in bytelist data */ Arg->Named.Value.Size = BufferLength; Arg->Named.Data = ParserState->Aml; } /* Skip to End of byte data */ ParserState->Aml = PkgEnd; } else { Arg = AcpiPsAllocOp (AML_INT_NAMEPATH_OP); if (!Arg) { AcpiPsFreeOp (Field); return_PTR (NULL); } /* Get the Namestring argument */ Arg->Common.Value.Name = AcpiPsGetNextNamestring (ParserState); } /* Link the buffer/namestring to parent (CONNECTION_OP) */ AcpiPsAppendArg (Field, Arg); break; default: /* Opcode was set in previous switch */ break; } return_PTR (Field); } /******************************************************************************* * * FUNCTION: AcpiPsGetNextArg * * PARAMETERS: WalkState - Current state * ParserState - Current parser state object * ArgType - The argument type (AML_*_ARG) * ReturnArg - Where the next arg is returned * * RETURN: Status, and an op object containing the next argument. * * DESCRIPTION: Get next argument (including complex list arguments that require * pushing the parser stack) * ******************************************************************************/ ACPI_STATUS AcpiPsGetNextArg ( ACPI_WALK_STATE *WalkState, ACPI_PARSE_STATE *ParserState, UINT32 ArgType, ACPI_PARSE_OBJECT **ReturnArg) { ACPI_PARSE_OBJECT *Arg = NULL; ACPI_PARSE_OBJECT *Prev = NULL; ACPI_PARSE_OBJECT *Field; UINT32 Subop; ACPI_STATUS Status = AE_OK; ACPI_FUNCTION_TRACE_PTR (PsGetNextArg, ParserState); switch (ArgType) { case ARGP_BYTEDATA: case ARGP_WORDDATA: case ARGP_DWORDDATA: case ARGP_CHARLIST: case ARGP_NAME: case ARGP_NAMESTRING: /* Constants, strings, and namestrings are all the same size */ Arg = AcpiPsAllocOp (AML_BYTE_OP); if (!Arg) { return_ACPI_STATUS (AE_NO_MEMORY); } AcpiPsGetNextSimpleArg (ParserState, ArgType, Arg); break; case ARGP_PKGLENGTH: /* Package length, nothing returned */ ParserState->PkgEnd = AcpiPsGetNextPackageEnd (ParserState); break; case ARGP_FIELDLIST: if (ParserState->Aml < ParserState->PkgEnd) { /* Non-empty list */ while (ParserState->Aml < ParserState->PkgEnd) { Field = AcpiPsGetNextField (ParserState); if (!Field) { return_ACPI_STATUS (AE_NO_MEMORY); } if (Prev) { Prev->Common.Next = Field; } else { Arg = Field; } Prev = Field; } /* Skip to End of byte data */ ParserState->Aml = ParserState->PkgEnd; } break; case ARGP_BYTELIST: if (ParserState->Aml < ParserState->PkgEnd) { /* Non-empty list */ Arg = AcpiPsAllocOp (AML_INT_BYTELIST_OP); if (!Arg) { return_ACPI_STATUS (AE_NO_MEMORY); } /* Fill in bytelist data */ Arg->Common.Value.Size = (UINT32) ACPI_PTR_DIFF (ParserState->PkgEnd, ParserState->Aml); Arg->Named.Data = ParserState->Aml; /* Skip to End of byte data */ ParserState->Aml = ParserState->PkgEnd; } break; case ARGP_TARGET: case ARGP_SUPERNAME: case ARGP_SIMPLENAME: Subop = AcpiPsPeekOpcode (ParserState); if (Subop == 0 || AcpiPsIsLeadingChar (Subop) || ACPI_IS_ROOT_PREFIX (Subop) || ACPI_IS_PARENT_PREFIX (Subop)) { /* NullName or NameString */ Arg = AcpiPsAllocOp (AML_INT_NAMEPATH_OP); if (!Arg) { return_ACPI_STATUS (AE_NO_MEMORY); } /* To support SuperName arg of Unload */ if (WalkState->Opcode == AML_UNLOAD_OP) { Status = AcpiPsGetNextNamepath (WalkState, ParserState, Arg, 1); /* * If the SuperName arg of Unload is a method call, * we have restored the AML pointer, just free this Arg */ if (Arg->Common.AmlOpcode == AML_INT_METHODCALL_OP) { AcpiPsFreeOp (Arg); Arg = NULL; } } else { Status = AcpiPsGetNextNamepath (WalkState, ParserState, Arg, 0); } } else { /* Single complex argument, nothing returned */ WalkState->ArgCount = 1; } break; case ARGP_DATAOBJ: case ARGP_TERMARG: /* Single complex argument, nothing returned */ WalkState->ArgCount = 1; break; case ARGP_DATAOBJLIST: case ARGP_TERMLIST: case ARGP_OBJLIST: if (ParserState->Aml < ParserState->PkgEnd) { /* Non-empty list of variable arguments, nothing returned */ WalkState->ArgCount = ACPI_VAR_ARGS; } break; default: ACPI_ERROR ((AE_INFO, "Invalid ArgType: 0x%X", ArgType)); Status = AE_AML_OPERAND_TYPE; break; } *ReturnArg = Arg; return_ACPI_STATUS (Status); } src/acpica/source/components/parser/psloop.c000066400000000000000000000604321231470457100215370ustar00rootroot00000000000000/****************************************************************************** * * Module Name: psloop - Main AML parse loop * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ /* * Parse the AML and build an operation tree as most interpreters, (such as * Perl) do. Parsing is done by hand rather than with a YACC generated parser * to tightly constrain stack and dynamic memory usage. Parsing is kept * flexible and the code fairly compact by parsing based on a list of AML * opcode templates in AmlOpInfo[]. */ #include "acpi.h" #include "accommon.h" #include "acparser.h" #include "acdispat.h" #include "amlcode.h" #define _COMPONENT ACPI_PARSER ACPI_MODULE_NAME ("psloop") /* Local prototypes */ static ACPI_STATUS AcpiPsGetArguments ( ACPI_WALK_STATE *WalkState, UINT8 *AmlOpStart, ACPI_PARSE_OBJECT *Op); static void AcpiPsLinkModuleCode ( ACPI_PARSE_OBJECT *ParentOp, UINT8 *AmlStart, UINT32 AmlLength, ACPI_OWNER_ID OwnerId); /******************************************************************************* * * FUNCTION: AcpiPsGetArguments * * PARAMETERS: WalkState - Current state * AmlOpStart - Op start in AML * Op - Current Op * * RETURN: Status * * DESCRIPTION: Get arguments for passed Op. * ******************************************************************************/ static ACPI_STATUS AcpiPsGetArguments ( ACPI_WALK_STATE *WalkState, UINT8 *AmlOpStart, ACPI_PARSE_OBJECT *Op) { ACPI_STATUS Status = AE_OK; ACPI_PARSE_OBJECT *Arg = NULL; const ACPI_OPCODE_INFO *OpInfo; ACPI_FUNCTION_TRACE_PTR (PsGetArguments, WalkState); switch (Op->Common.AmlOpcode) { case AML_BYTE_OP: /* AML_BYTEDATA_ARG */ case AML_WORD_OP: /* AML_WORDDATA_ARG */ case AML_DWORD_OP: /* AML_DWORDATA_ARG */ case AML_QWORD_OP: /* AML_QWORDATA_ARG */ case AML_STRING_OP: /* AML_ASCIICHARLIST_ARG */ /* Fill in constant or string argument directly */ AcpiPsGetNextSimpleArg (&(WalkState->ParserState), GET_CURRENT_ARG_TYPE (WalkState->ArgTypes), Op); break; case AML_INT_NAMEPATH_OP: /* AML_NAMESTRING_ARG */ Status = AcpiPsGetNextNamepath (WalkState, &(WalkState->ParserState), Op, 1); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } WalkState->ArgTypes = 0; break; default: /* * Op is not a constant or string, append each argument to the Op */ while (GET_CURRENT_ARG_TYPE (WalkState->ArgTypes) && !WalkState->ArgCount) { WalkState->AmlOffset = (UINT32) ACPI_PTR_DIFF (WalkState->ParserState.Aml, WalkState->ParserState.AmlStart); Status = AcpiPsGetNextArg (WalkState, &(WalkState->ParserState), GET_CURRENT_ARG_TYPE (WalkState->ArgTypes), &Arg); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } if (Arg) { Arg->Common.AmlOffset = WalkState->AmlOffset; AcpiPsAppendArg (Op, Arg); } INCREMENT_ARG_LIST (WalkState->ArgTypes); } /* * Handle executable code at "module-level". This refers to * executable opcodes that appear outside of any control method. */ if ((WalkState->PassNumber <= ACPI_IMODE_LOAD_PASS2) && ((WalkState->ParseFlags & ACPI_PARSE_DISASSEMBLE) == 0)) { /* * We want to skip If/Else/While constructs during Pass1 because we * want to actually conditionally execute the code during Pass2. * * Except for disassembly, where we always want to walk the * If/Else/While packages */ switch (Op->Common.AmlOpcode) { case AML_IF_OP: case AML_ELSE_OP: case AML_WHILE_OP: /* * Currently supported module-level opcodes are: * IF/ELSE/WHILE. These appear to be the most common, * and easiest to support since they open an AML * package. */ if (WalkState->PassNumber == ACPI_IMODE_LOAD_PASS1) { AcpiPsLinkModuleCode (Op->Common.Parent, AmlOpStart, (UINT32) (WalkState->ParserState.PkgEnd - AmlOpStart), WalkState->OwnerId); } ACPI_DEBUG_PRINT ((ACPI_DB_PARSE, "Pass1: Skipping an If/Else/While body\n")); /* Skip body of if/else/while in pass 1 */ WalkState->ParserState.Aml = WalkState->ParserState.PkgEnd; WalkState->ArgCount = 0; break; default: /* * Check for an unsupported executable opcode at module * level. We must be in PASS1, the parent must be a SCOPE, * The opcode class must be EXECUTE, and the opcode must * not be an argument to another opcode. */ if ((WalkState->PassNumber == ACPI_IMODE_LOAD_PASS1) && (Op->Common.Parent->Common.AmlOpcode == AML_SCOPE_OP)) { OpInfo = AcpiPsGetOpcodeInfo (Op->Common.AmlOpcode); if ((OpInfo->Class == AML_CLASS_EXECUTE) && (!Arg)) { ACPI_WARNING ((AE_INFO, "Unsupported module-level executable opcode " "0x%.2X at table offset 0x%.4X", Op->Common.AmlOpcode, (UINT32) (ACPI_PTR_DIFF (AmlOpStart, WalkState->ParserState.AmlStart) + sizeof (ACPI_TABLE_HEADER)))); } } break; } } /* Special processing for certain opcodes */ switch (Op->Common.AmlOpcode) { case AML_METHOD_OP: /* * Skip parsing of control method because we don't have enough * info in the first pass to parse it correctly. * * Save the length and address of the body */ Op->Named.Data = WalkState->ParserState.Aml; Op->Named.Length = (UINT32) (WalkState->ParserState.PkgEnd - WalkState->ParserState.Aml); /* Skip body of method */ WalkState->ParserState.Aml = WalkState->ParserState.PkgEnd; WalkState->ArgCount = 0; break; case AML_BUFFER_OP: case AML_PACKAGE_OP: case AML_VAR_PACKAGE_OP: if ((Op->Common.Parent) && (Op->Common.Parent->Common.AmlOpcode == AML_NAME_OP) && (WalkState->PassNumber <= ACPI_IMODE_LOAD_PASS2)) { /* * Skip parsing of Buffers and Packages because we don't have * enough info in the first pass to parse them correctly. */ Op->Named.Data = AmlOpStart; Op->Named.Length = (UINT32) (WalkState->ParserState.PkgEnd - AmlOpStart); /* Skip body */ WalkState->ParserState.Aml = WalkState->ParserState.PkgEnd; WalkState->ArgCount = 0; } break; case AML_WHILE_OP: if (WalkState->ControlState) { WalkState->ControlState->Control.PackageEnd = WalkState->ParserState.PkgEnd; } break; default: /* No action for all other opcodes */ break; } break; } return_ACPI_STATUS (AE_OK); } /******************************************************************************* * * FUNCTION: AcpiPsLinkModuleCode * * PARAMETERS: ParentOp - Parent parser op * AmlStart - Pointer to the AML * AmlLength - Length of executable AML * OwnerId - OwnerId of module level code * * RETURN: None. * * DESCRIPTION: Wrap the module-level code with a method object and link the * object to the global list. Note, the mutex field of the method * object is used to link multiple module-level code objects. * ******************************************************************************/ static void AcpiPsLinkModuleCode ( ACPI_PARSE_OBJECT *ParentOp, UINT8 *AmlStart, UINT32 AmlLength, ACPI_OWNER_ID OwnerId) { ACPI_OPERAND_OBJECT *Prev; ACPI_OPERAND_OBJECT *Next; ACPI_OPERAND_OBJECT *MethodObj; ACPI_NAMESPACE_NODE *ParentNode; /* Get the tail of the list */ Prev = Next = AcpiGbl_ModuleCodeList; while (Next) { Prev = Next; Next = Next->Method.Mutex; } /* * Insert the module level code into the list. Merge it if it is * adjacent to the previous element. */ if (!Prev || ((Prev->Method.AmlStart + Prev->Method.AmlLength) != AmlStart)) { /* Create, initialize, and link a new temporary method object */ MethodObj = AcpiUtCreateInternalObject (ACPI_TYPE_METHOD); if (!MethodObj) { return; } if (ParentOp->Common.Node) { ParentNode = ParentOp->Common.Node; } else { ParentNode = AcpiGbl_RootNode; } MethodObj->Method.AmlStart = AmlStart; MethodObj->Method.AmlLength = AmlLength; MethodObj->Method.OwnerId = OwnerId; MethodObj->Method.InfoFlags |= ACPI_METHOD_MODULE_LEVEL; /* * Save the parent node in NextObject. This is cheating, but we * don't want to expand the method object. */ MethodObj->Method.NextObject = ACPI_CAST_PTR (ACPI_OPERAND_OBJECT, ParentNode); if (!Prev) { AcpiGbl_ModuleCodeList = MethodObj; } else { Prev->Method.Mutex = MethodObj; } } else { Prev->Method.AmlLength += AmlLength; } } /******************************************************************************* * * FUNCTION: AcpiPsParseLoop * * PARAMETERS: WalkState - Current state * * RETURN: Status * * DESCRIPTION: Parse AML (pointed to by the current parser state) and return * a tree of ops. * ******************************************************************************/ ACPI_STATUS AcpiPsParseLoop ( ACPI_WALK_STATE *WalkState) { ACPI_STATUS Status = AE_OK; ACPI_PARSE_OBJECT *Op = NULL; /* current op */ ACPI_PARSE_STATE *ParserState; UINT8 *AmlOpStart = NULL; ACPI_FUNCTION_TRACE_PTR (PsParseLoop, WalkState); if (WalkState->DescendingCallback == NULL) { return_ACPI_STATUS (AE_BAD_PARAMETER); } ParserState = &WalkState->ParserState; WalkState->ArgTypes = 0; #if (!defined (ACPI_NO_METHOD_EXECUTION) && !defined (ACPI_CONSTANT_EVAL_ONLY)) if (WalkState->WalkType & ACPI_WALK_METHOD_RESTART) { /* We are restarting a preempted control method */ if (AcpiPsHasCompletedScope (ParserState)) { /* * We must check if a predicate to an IF or WHILE statement * was just completed */ if ((ParserState->Scope->ParseScope.Op) && ((ParserState->Scope->ParseScope.Op->Common.AmlOpcode == AML_IF_OP) || (ParserState->Scope->ParseScope.Op->Common.AmlOpcode == AML_WHILE_OP)) && (WalkState->ControlState) && (WalkState->ControlState->Common.State == ACPI_CONTROL_PREDICATE_EXECUTING)) { /* * A predicate was just completed, get the value of the * predicate and branch based on that value */ WalkState->Op = NULL; Status = AcpiDsGetPredicateValue (WalkState, ACPI_TO_POINTER (TRUE)); if (ACPI_FAILURE (Status) && ((Status & AE_CODE_MASK) != AE_CODE_CONTROL)) { if (Status == AE_AML_NO_RETURN_VALUE) { ACPI_EXCEPTION ((AE_INFO, Status, "Invoked method did not return a value")); } ACPI_EXCEPTION ((AE_INFO, Status, "GetPredicate Failed")); return_ACPI_STATUS (Status); } Status = AcpiPsNextParseState (WalkState, Op, Status); } AcpiPsPopScope (ParserState, &Op, &WalkState->ArgTypes, &WalkState->ArgCount); ACPI_DEBUG_PRINT ((ACPI_DB_PARSE, "Popped scope, Op=%p\n", Op)); } else if (WalkState->PrevOp) { /* We were in the middle of an op */ Op = WalkState->PrevOp; WalkState->ArgTypes = WalkState->PrevArgTypes; } } #endif /* Iterative parsing loop, while there is more AML to process: */ while ((ParserState->Aml < ParserState->AmlEnd) || (Op)) { AmlOpStart = ParserState->Aml; if (!Op) { Status = AcpiPsCreateOp (WalkState, AmlOpStart, &Op); if (ACPI_FAILURE (Status)) { if (Status == AE_CTRL_PARSE_CONTINUE) { continue; } if (Status == AE_CTRL_PARSE_PENDING) { Status = AE_OK; } if (Status == AE_CTRL_TERMINATE) { return_ACPI_STATUS (Status); } Status = AcpiPsCompleteOp (WalkState, &Op, Status); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } continue; } Op->Common.AmlOffset = WalkState->AmlOffset; if (WalkState->OpInfo) { ACPI_DEBUG_PRINT ((ACPI_DB_PARSE, "Opcode %4.4X [%s] Op %p Aml %p AmlOffset %5.5X\n", (UINT32) Op->Common.AmlOpcode, WalkState->OpInfo->Name, Op, ParserState->Aml, Op->Common.AmlOffset)); } } /* * Start ArgCount at zero because we don't know if there are * any args yet */ WalkState->ArgCount = 0; /* Are there any arguments that must be processed? */ if (WalkState->ArgTypes) { /* Get arguments */ Status = AcpiPsGetArguments (WalkState, AmlOpStart, Op); if (ACPI_FAILURE (Status)) { Status = AcpiPsCompleteOp (WalkState, &Op, Status); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } continue; } } /* Check for arguments that need to be processed */ if (WalkState->ArgCount) { /* * There are arguments (complex ones), push Op and * prepare for argument */ Status = AcpiPsPushScope (ParserState, Op, WalkState->ArgTypes, WalkState->ArgCount); if (ACPI_FAILURE (Status)) { Status = AcpiPsCompleteOp (WalkState, &Op, Status); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } continue; } Op = NULL; continue; } /* * All arguments have been processed -- Op is complete, * prepare for next */ WalkState->OpInfo = AcpiPsGetOpcodeInfo (Op->Common.AmlOpcode); if (WalkState->OpInfo->Flags & AML_NAMED) { if (Op->Common.AmlOpcode == AML_REGION_OP || Op->Common.AmlOpcode == AML_DATA_REGION_OP) { /* * Skip parsing of control method or opregion body, * because we don't have enough info in the first pass * to parse them correctly. * * Completed parsing an OpRegion declaration, we now * know the length. */ Op->Named.Length = (UINT32) (ParserState->Aml - Op->Named.Data); } } if (WalkState->OpInfo->Flags & AML_CREATE) { /* * Backup to beginning of CreateXXXfield declaration (1 for * Opcode) * * BodyLength is unknown until we parse the body */ Op->Named.Length = (UINT32) (ParserState->Aml - Op->Named.Data); } if (Op->Common.AmlOpcode == AML_BANK_FIELD_OP) { /* * Backup to beginning of BankField declaration * * BodyLength is unknown until we parse the body */ Op->Named.Length = (UINT32) (ParserState->Aml - Op->Named.Data); } /* This op complete, notify the dispatcher */ if (WalkState->AscendingCallback != NULL) { WalkState->Op = Op; WalkState->Opcode = Op->Common.AmlOpcode; Status = WalkState->AscendingCallback (WalkState); Status = AcpiPsNextParseState (WalkState, Op, Status); if (Status == AE_CTRL_PENDING) { Status = AE_OK; } } Status = AcpiPsCompleteOp (WalkState, &Op, Status); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } } /* while ParserState->Aml */ Status = AcpiPsCompleteFinalOp (WalkState, Op, Status); return_ACPI_STATUS (Status); } src/acpica/source/components/parser/psobject.c000066400000000000000000000573051231470457100220410ustar00rootroot00000000000000/****************************************************************************** * * Module Name: psobject - Support for parse objects * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #include "acpi.h" #include "accommon.h" #include "acparser.h" #include "amlcode.h" #define _COMPONENT ACPI_PARSER ACPI_MODULE_NAME ("psobject") /* Local prototypes */ static ACPI_STATUS AcpiPsGetAmlOpcode ( ACPI_WALK_STATE *WalkState); /******************************************************************************* * * FUNCTION: AcpiPsGetAmlOpcode * * PARAMETERS: WalkState - Current state * * RETURN: Status * * DESCRIPTION: Extract the next AML opcode from the input stream. * ******************************************************************************/ static ACPI_STATUS AcpiPsGetAmlOpcode ( ACPI_WALK_STATE *WalkState) { ACPI_FUNCTION_TRACE_PTR (PsGetAmlOpcode, WalkState); WalkState->AmlOffset = (UINT32) ACPI_PTR_DIFF (WalkState->ParserState.Aml, WalkState->ParserState.AmlStart); WalkState->Opcode = AcpiPsPeekOpcode (&(WalkState->ParserState)); /* * First cut to determine what we have found: * 1) A valid AML opcode * 2) A name string * 3) An unknown/invalid opcode */ WalkState->OpInfo = AcpiPsGetOpcodeInfo (WalkState->Opcode); switch (WalkState->OpInfo->Class) { case AML_CLASS_ASCII: case AML_CLASS_PREFIX: /* * Starts with a valid prefix or ASCII char, this is a name * string. Convert the bare name string to a namepath. */ WalkState->Opcode = AML_INT_NAMEPATH_OP; WalkState->ArgTypes = ARGP_NAMESTRING; break; case AML_CLASS_UNKNOWN: /* The opcode is unrecognized. Complain and skip unknown opcodes */ if (WalkState->PassNumber == 2) { ACPI_ERROR ((AE_INFO, "Unknown opcode 0x%.2X at table offset 0x%.4X, ignoring", WalkState->Opcode, (UINT32) (WalkState->AmlOffset + sizeof (ACPI_TABLE_HEADER)))); ACPI_DUMP_BUFFER ((WalkState->ParserState.Aml - 16), 48); #ifdef ACPI_ASL_COMPILER /* * This is executed for the disassembler only. Output goes * to the disassembled ASL output file. */ AcpiOsPrintf ( "/*\nError: Unknown opcode 0x%.2X at table offset 0x%.4X, context:\n", WalkState->Opcode, (UINT32) (WalkState->AmlOffset + sizeof (ACPI_TABLE_HEADER))); /* Dump the context surrounding the invalid opcode */ AcpiUtDumpBuffer (((UINT8 *) WalkState->ParserState.Aml - 16), 48, DB_BYTE_DISPLAY, (WalkState->AmlOffset + sizeof (ACPI_TABLE_HEADER) - 16)); AcpiOsPrintf (" */\n"); #endif } /* Increment past one-byte or two-byte opcode */ WalkState->ParserState.Aml++; if (WalkState->Opcode > 0xFF) /* Can only happen if first byte is 0x5B */ { WalkState->ParserState.Aml++; } return_ACPI_STATUS (AE_CTRL_PARSE_CONTINUE); default: /* Found opcode info, this is a normal opcode */ WalkState->ParserState.Aml += AcpiPsGetOpcodeSize (WalkState->Opcode); WalkState->ArgTypes = WalkState->OpInfo->ParseArgs; break; } return_ACPI_STATUS (AE_OK); } /******************************************************************************* * * FUNCTION: AcpiPsBuildNamedOp * * PARAMETERS: WalkState - Current state * AmlOpStart - Begin of named Op in AML * UnnamedOp - Early Op (not a named Op) * Op - Returned Op * * RETURN: Status * * DESCRIPTION: Parse a named Op * ******************************************************************************/ ACPI_STATUS AcpiPsBuildNamedOp ( ACPI_WALK_STATE *WalkState, UINT8 *AmlOpStart, ACPI_PARSE_OBJECT *UnnamedOp, ACPI_PARSE_OBJECT **Op) { ACPI_STATUS Status = AE_OK; ACPI_PARSE_OBJECT *Arg = NULL; ACPI_FUNCTION_TRACE_PTR (PsBuildNamedOp, WalkState); UnnamedOp->Common.Value.Arg = NULL; UnnamedOp->Common.ArgListLength = 0; UnnamedOp->Common.AmlOpcode = WalkState->Opcode; /* * Get and append arguments until we find the node that contains * the name (the type ARGP_NAME). */ while (GET_CURRENT_ARG_TYPE (WalkState->ArgTypes) && (GET_CURRENT_ARG_TYPE (WalkState->ArgTypes) != ARGP_NAME)) { Status = AcpiPsGetNextArg (WalkState, &(WalkState->ParserState), GET_CURRENT_ARG_TYPE (WalkState->ArgTypes), &Arg); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } AcpiPsAppendArg (UnnamedOp, Arg); INCREMENT_ARG_LIST (WalkState->ArgTypes); } /* * Make sure that we found a NAME and didn't run out of arguments */ if (!GET_CURRENT_ARG_TYPE (WalkState->ArgTypes)) { return_ACPI_STATUS (AE_AML_NO_OPERAND); } /* We know that this arg is a name, move to next arg */ INCREMENT_ARG_LIST (WalkState->ArgTypes); /* * Find the object. This will either insert the object into * the namespace or simply look it up */ WalkState->Op = NULL; Status = WalkState->DescendingCallback (WalkState, Op); if (ACPI_FAILURE (Status)) { if (Status != AE_CTRL_TERMINATE) { ACPI_EXCEPTION ((AE_INFO, Status, "During name lookup/catalog")); } return_ACPI_STATUS (Status); } if (!*Op) { return_ACPI_STATUS (AE_CTRL_PARSE_CONTINUE); } Status = AcpiPsNextParseState (WalkState, *Op, Status); if (ACPI_FAILURE (Status)) { if (Status == AE_CTRL_PENDING) { Status = AE_CTRL_PARSE_PENDING; } return_ACPI_STATUS (Status); } AcpiPsAppendArg (*Op, UnnamedOp->Common.Value.Arg); if ((*Op)->Common.AmlOpcode == AML_REGION_OP || (*Op)->Common.AmlOpcode == AML_DATA_REGION_OP) { /* * Defer final parsing of an OperationRegion body, because we don't * have enough info in the first pass to parse it correctly (i.e., * there may be method calls within the TermArg elements of the body.) * * However, we must continue parsing because the opregion is not a * standalone package -- we don't know where the end is at this point. * * (Length is unknown until parse of the body complete) */ (*Op)->Named.Data = AmlOpStart; (*Op)->Named.Length = 0; } return_ACPI_STATUS (AE_OK); } /******************************************************************************* * * FUNCTION: AcpiPsCreateOp * * PARAMETERS: WalkState - Current state * AmlOpStart - Op start in AML * NewOp - Returned Op * * RETURN: Status * * DESCRIPTION: Get Op from AML * ******************************************************************************/ ACPI_STATUS AcpiPsCreateOp ( ACPI_WALK_STATE *WalkState, UINT8 *AmlOpStart, ACPI_PARSE_OBJECT **NewOp) { ACPI_STATUS Status = AE_OK; ACPI_PARSE_OBJECT *Op; ACPI_PARSE_OBJECT *NamedOp = NULL; ACPI_PARSE_OBJECT *ParentScope; UINT8 ArgumentCount; const ACPI_OPCODE_INFO *OpInfo; ACPI_FUNCTION_TRACE_PTR (PsCreateOp, WalkState); Status = AcpiPsGetAmlOpcode (WalkState); if (Status == AE_CTRL_PARSE_CONTINUE) { return_ACPI_STATUS (AE_CTRL_PARSE_CONTINUE); } /* Create Op structure and append to parent's argument list */ WalkState->OpInfo = AcpiPsGetOpcodeInfo (WalkState->Opcode); Op = AcpiPsAllocOp (WalkState->Opcode); if (!Op) { return_ACPI_STATUS (AE_NO_MEMORY); } if (WalkState->OpInfo->Flags & AML_NAMED) { Status = AcpiPsBuildNamedOp (WalkState, AmlOpStart, Op, &NamedOp); AcpiPsFreeOp (Op); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } *NewOp = NamedOp; return_ACPI_STATUS (AE_OK); } /* Not a named opcode, just allocate Op and append to parent */ if (WalkState->OpInfo->Flags & AML_CREATE) { /* * Backup to beginning of CreateXXXfield declaration * BodyLength is unknown until we parse the body */ Op->Named.Data = AmlOpStart; Op->Named.Length = 0; } if (WalkState->Opcode == AML_BANK_FIELD_OP) { /* * Backup to beginning of BankField declaration * BodyLength is unknown until we parse the body */ Op->Named.Data = AmlOpStart; Op->Named.Length = 0; } ParentScope = AcpiPsGetParentScope (&(WalkState->ParserState)); AcpiPsAppendArg (ParentScope, Op); if (ParentScope) { OpInfo = AcpiPsGetOpcodeInfo (ParentScope->Common.AmlOpcode); if (OpInfo->Flags & AML_HAS_TARGET) { ArgumentCount = AcpiPsGetArgumentCount (OpInfo->Type); if (ParentScope->Common.ArgListLength > ArgumentCount) { Op->Common.Flags |= ACPI_PARSEOP_TARGET; } } else if (ParentScope->Common.AmlOpcode == AML_INCREMENT_OP) { Op->Common.Flags |= ACPI_PARSEOP_TARGET; } } if (WalkState->DescendingCallback != NULL) { /* * Find the object. This will either insert the object into * the namespace or simply look it up */ WalkState->Op = *NewOp = Op; Status = WalkState->DescendingCallback (WalkState, &Op); Status = AcpiPsNextParseState (WalkState, Op, Status); if (Status == AE_CTRL_PENDING) { Status = AE_CTRL_PARSE_PENDING; } } return_ACPI_STATUS (Status); } /******************************************************************************* * * FUNCTION: AcpiPsCompleteOp * * PARAMETERS: WalkState - Current state * Op - Returned Op * Status - Parse status before complete Op * * RETURN: Status * * DESCRIPTION: Complete Op * ******************************************************************************/ ACPI_STATUS AcpiPsCompleteOp ( ACPI_WALK_STATE *WalkState, ACPI_PARSE_OBJECT **Op, ACPI_STATUS Status) { ACPI_STATUS Status2; ACPI_FUNCTION_TRACE_PTR (PsCompleteOp, WalkState); /* * Finished one argument of the containing scope */ WalkState->ParserState.Scope->ParseScope.ArgCount--; /* Close this Op (will result in parse subtree deletion) */ Status2 = AcpiPsCompleteThisOp (WalkState, *Op); if (ACPI_FAILURE (Status2)) { return_ACPI_STATUS (Status2); } *Op = NULL; switch (Status) { case AE_OK: break; case AE_CTRL_TRANSFER: /* We are about to transfer to a called method */ WalkState->PrevOp = NULL; WalkState->PrevArgTypes = WalkState->ArgTypes; return_ACPI_STATUS (Status); case AE_CTRL_END: AcpiPsPopScope (&(WalkState->ParserState), Op, &WalkState->ArgTypes, &WalkState->ArgCount); if (*Op) { WalkState->Op = *Op; WalkState->OpInfo = AcpiPsGetOpcodeInfo ((*Op)->Common.AmlOpcode); WalkState->Opcode = (*Op)->Common.AmlOpcode; Status = WalkState->AscendingCallback (WalkState); Status = AcpiPsNextParseState (WalkState, *Op, Status); Status2 = AcpiPsCompleteThisOp (WalkState, *Op); if (ACPI_FAILURE (Status2)) { return_ACPI_STATUS (Status2); } } Status = AE_OK; break; case AE_CTRL_BREAK: case AE_CTRL_CONTINUE: /* Pop off scopes until we find the While */ while (!(*Op) || ((*Op)->Common.AmlOpcode != AML_WHILE_OP)) { AcpiPsPopScope (&(WalkState->ParserState), Op, &WalkState->ArgTypes, &WalkState->ArgCount); } /* Close this iteration of the While loop */ WalkState->Op = *Op; WalkState->OpInfo = AcpiPsGetOpcodeInfo ((*Op)->Common.AmlOpcode); WalkState->Opcode = (*Op)->Common.AmlOpcode; Status = WalkState->AscendingCallback (WalkState); Status = AcpiPsNextParseState (WalkState, *Op, Status); Status2 = AcpiPsCompleteThisOp (WalkState, *Op); if (ACPI_FAILURE (Status2)) { return_ACPI_STATUS (Status2); } Status = AE_OK; break; case AE_CTRL_TERMINATE: /* Clean up */ do { if (*Op) { Status2 = AcpiPsCompleteThisOp (WalkState, *Op); if (ACPI_FAILURE (Status2)) { return_ACPI_STATUS (Status2); } AcpiUtDeleteGenericState ( AcpiUtPopGenericState (&WalkState->ControlState)); } AcpiPsPopScope (&(WalkState->ParserState), Op, &WalkState->ArgTypes, &WalkState->ArgCount); } while (*Op); return_ACPI_STATUS (AE_OK); default: /* All other non-AE_OK status */ do { if (*Op) { Status2 = AcpiPsCompleteThisOp (WalkState, *Op); if (ACPI_FAILURE (Status2)) { return_ACPI_STATUS (Status2); } } AcpiPsPopScope (&(WalkState->ParserState), Op, &WalkState->ArgTypes, &WalkState->ArgCount); } while (*Op); #if 0 /* * TBD: Cleanup parse ops on error */ if (*Op == NULL) { AcpiPsPopScope (ParserState, Op, &WalkState->ArgTypes, &WalkState->ArgCount); } #endif WalkState->PrevOp = NULL; WalkState->PrevArgTypes = WalkState->ArgTypes; return_ACPI_STATUS (Status); } /* This scope complete? */ if (AcpiPsHasCompletedScope (&(WalkState->ParserState))) { AcpiPsPopScope (&(WalkState->ParserState), Op, &WalkState->ArgTypes, &WalkState->ArgCount); ACPI_DEBUG_PRINT ((ACPI_DB_PARSE, "Popped scope, Op=%p\n", *Op)); } else { *Op = NULL; } return_ACPI_STATUS (AE_OK); } /******************************************************************************* * * FUNCTION: AcpiPsCompleteFinalOp * * PARAMETERS: WalkState - Current state * Op - Current Op * Status - Current parse status before complete last * Op * * RETURN: Status * * DESCRIPTION: Complete last Op. * ******************************************************************************/ ACPI_STATUS AcpiPsCompleteFinalOp ( ACPI_WALK_STATE *WalkState, ACPI_PARSE_OBJECT *Op, ACPI_STATUS Status) { ACPI_STATUS Status2; ACPI_FUNCTION_TRACE_PTR (PsCompleteFinalOp, WalkState); /* * Complete the last Op (if not completed), and clear the scope stack. * It is easily possible to end an AML "package" with an unbounded number * of open scopes (such as when several ASL blocks are closed with * sequential closing braces). We want to terminate each one cleanly. */ ACPI_DEBUG_PRINT ((ACPI_DB_PARSE, "AML package complete at Op %p\n", Op)); do { if (Op) { if (WalkState->AscendingCallback != NULL) { WalkState->Op = Op; WalkState->OpInfo = AcpiPsGetOpcodeInfo (Op->Common.AmlOpcode); WalkState->Opcode = Op->Common.AmlOpcode; Status = WalkState->AscendingCallback (WalkState); Status = AcpiPsNextParseState (WalkState, Op, Status); if (Status == AE_CTRL_PENDING) { Status = AcpiPsCompleteOp (WalkState, &Op, AE_OK); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } } if (Status == AE_CTRL_TERMINATE) { Status = AE_OK; /* Clean up */ do { if (Op) { Status2 = AcpiPsCompleteThisOp (WalkState, Op); if (ACPI_FAILURE (Status2)) { return_ACPI_STATUS (Status2); } } AcpiPsPopScope (&(WalkState->ParserState), &Op, &WalkState->ArgTypes, &WalkState->ArgCount); } while (Op); return_ACPI_STATUS (Status); } else if (ACPI_FAILURE (Status)) { /* First error is most important */ (void) AcpiPsCompleteThisOp (WalkState, Op); return_ACPI_STATUS (Status); } } Status2 = AcpiPsCompleteThisOp (WalkState, Op); if (ACPI_FAILURE (Status2)) { return_ACPI_STATUS (Status2); } } AcpiPsPopScope (&(WalkState->ParserState), &Op, &WalkState->ArgTypes, &WalkState->ArgCount); } while (Op); return_ACPI_STATUS (Status); } src/acpica/source/components/parser/psopcode.c000066400000000000000000001110561231470457100220360ustar00rootroot00000000000000/****************************************************************************** * * Module Name: psopcode - Parser/Interpreter opcode information table * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #include "acpi.h" #include "accommon.h" #include "acopcode.h" #include "amlcode.h" #define _COMPONENT ACPI_PARSER ACPI_MODULE_NAME ("psopcode") /******************************************************************************* * * NAME: AcpiGbl_AmlOpInfo * * DESCRIPTION: Opcode table. Each entry contains * The name is a simple ascii string, the operand specifier is an * ascii string with one letter per operand. The letter specifies * the operand type. * ******************************************************************************/ /* * Summary of opcode types/flags * Opcodes that have associated namespace objects (AML_NSOBJECT flag) AML_SCOPE_OP AML_DEVICE_OP AML_THERMAL_ZONE_OP AML_METHOD_OP AML_POWER_RES_OP AML_PROCESSOR_OP AML_FIELD_OP AML_INDEX_FIELD_OP AML_BANK_FIELD_OP AML_NAME_OP AML_ALIAS_OP AML_MUTEX_OP AML_EVENT_OP AML_REGION_OP AML_CREATE_FIELD_OP AML_CREATE_BIT_FIELD_OP AML_CREATE_BYTE_FIELD_OP AML_CREATE_WORD_FIELD_OP AML_CREATE_DWORD_FIELD_OP AML_CREATE_QWORD_FIELD_OP AML_INT_NAMEDFIELD_OP AML_INT_METHODCALL_OP AML_INT_NAMEPATH_OP Opcodes that are "namespace" opcodes (AML_NSOPCODE flag) AML_SCOPE_OP AML_DEVICE_OP AML_THERMAL_ZONE_OP AML_METHOD_OP AML_POWER_RES_OP AML_PROCESSOR_OP AML_FIELD_OP AML_INDEX_FIELD_OP AML_BANK_FIELD_OP AML_NAME_OP AML_ALIAS_OP AML_MUTEX_OP AML_EVENT_OP AML_REGION_OP AML_INT_NAMEDFIELD_OP Opcodes that have an associated namespace node (AML_NSNODE flag) AML_SCOPE_OP AML_DEVICE_OP AML_THERMAL_ZONE_OP AML_METHOD_OP AML_POWER_RES_OP AML_PROCESSOR_OP AML_NAME_OP AML_ALIAS_OP AML_MUTEX_OP AML_EVENT_OP AML_REGION_OP AML_CREATE_FIELD_OP AML_CREATE_BIT_FIELD_OP AML_CREATE_BYTE_FIELD_OP AML_CREATE_WORD_FIELD_OP AML_CREATE_DWORD_FIELD_OP AML_CREATE_QWORD_FIELD_OP AML_INT_NAMEDFIELD_OP AML_INT_METHODCALL_OP AML_INT_NAMEPATH_OP Opcodes that define named ACPI objects (AML_NAMED flag) AML_SCOPE_OP AML_DEVICE_OP AML_THERMAL_ZONE_OP AML_METHOD_OP AML_POWER_RES_OP AML_PROCESSOR_OP AML_NAME_OP AML_ALIAS_OP AML_MUTEX_OP AML_EVENT_OP AML_REGION_OP AML_INT_NAMEDFIELD_OP Opcodes that contain executable AML as part of the definition that must be deferred until needed AML_METHOD_OP AML_VAR_PACKAGE_OP AML_CREATE_FIELD_OP AML_CREATE_BIT_FIELD_OP AML_CREATE_BYTE_FIELD_OP AML_CREATE_WORD_FIELD_OP AML_CREATE_DWORD_FIELD_OP AML_CREATE_QWORD_FIELD_OP AML_REGION_OP AML_BUFFER_OP Field opcodes AML_CREATE_FIELD_OP AML_FIELD_OP AML_INDEX_FIELD_OP AML_BANK_FIELD_OP Field "Create" opcodes AML_CREATE_FIELD_OP AML_CREATE_BIT_FIELD_OP AML_CREATE_BYTE_FIELD_OP AML_CREATE_WORD_FIELD_OP AML_CREATE_DWORD_FIELD_OP AML_CREATE_QWORD_FIELD_OP ******************************************************************************/ /* * Master Opcode information table. A summary of everything we know about each * opcode, all in one place. */ const ACPI_OPCODE_INFO AcpiGbl_AmlOpInfo[AML_NUM_OPCODES] = { /*! [Begin] no source code translation */ /* Index Name Parser Args Interpreter Args ObjectType Class Type Flags */ /* 00 */ ACPI_OP ("Zero", ARGP_ZERO_OP, ARGI_ZERO_OP, ACPI_TYPE_INTEGER, AML_CLASS_ARGUMENT, AML_TYPE_CONSTANT, AML_CONSTANT), /* 01 */ ACPI_OP ("One", ARGP_ONE_OP, ARGI_ONE_OP, ACPI_TYPE_INTEGER, AML_CLASS_ARGUMENT, AML_TYPE_CONSTANT, AML_CONSTANT), /* 02 */ ACPI_OP ("Alias", ARGP_ALIAS_OP, ARGI_ALIAS_OP, ACPI_TYPE_LOCAL_ALIAS, AML_CLASS_NAMED_OBJECT, AML_TYPE_NAMED_SIMPLE, AML_HAS_ARGS | AML_NSOBJECT | AML_NSOPCODE | AML_NSNODE | AML_NAMED), /* 03 */ ACPI_OP ("Name", ARGP_NAME_OP, ARGI_NAME_OP, ACPI_TYPE_ANY, AML_CLASS_NAMED_OBJECT, AML_TYPE_NAMED_COMPLEX, AML_HAS_ARGS | AML_NSOBJECT | AML_NSOPCODE | AML_NSNODE | AML_NAMED), /* 04 */ ACPI_OP ("ByteConst", ARGP_BYTE_OP, ARGI_BYTE_OP, ACPI_TYPE_INTEGER, AML_CLASS_ARGUMENT, AML_TYPE_LITERAL, AML_CONSTANT), /* 05 */ ACPI_OP ("WordConst", ARGP_WORD_OP, ARGI_WORD_OP, ACPI_TYPE_INTEGER, AML_CLASS_ARGUMENT, AML_TYPE_LITERAL, AML_CONSTANT), /* 06 */ ACPI_OP ("DwordConst", ARGP_DWORD_OP, ARGI_DWORD_OP, ACPI_TYPE_INTEGER, AML_CLASS_ARGUMENT, AML_TYPE_LITERAL, AML_CONSTANT), /* 07 */ ACPI_OP ("String", ARGP_STRING_OP, ARGI_STRING_OP, ACPI_TYPE_STRING, AML_CLASS_ARGUMENT, AML_TYPE_LITERAL, AML_CONSTANT), /* 08 */ ACPI_OP ("Scope", ARGP_SCOPE_OP, ARGI_SCOPE_OP, ACPI_TYPE_LOCAL_SCOPE, AML_CLASS_NAMED_OBJECT, AML_TYPE_NAMED_NO_OBJ, AML_HAS_ARGS | AML_NSOBJECT | AML_NSOPCODE | AML_NSNODE | AML_NAMED), /* 09 */ ACPI_OP ("Buffer", ARGP_BUFFER_OP, ARGI_BUFFER_OP, ACPI_TYPE_BUFFER, AML_CLASS_CREATE, AML_TYPE_CREATE_OBJECT, AML_HAS_ARGS | AML_DEFER | AML_CONSTANT), /* 0A */ ACPI_OP ("Package", ARGP_PACKAGE_OP, ARGI_PACKAGE_OP, ACPI_TYPE_PACKAGE, AML_CLASS_CREATE, AML_TYPE_CREATE_OBJECT, AML_HAS_ARGS | AML_DEFER | AML_CONSTANT), /* 0B */ ACPI_OP ("Method", ARGP_METHOD_OP, ARGI_METHOD_OP, ACPI_TYPE_METHOD, AML_CLASS_NAMED_OBJECT, AML_TYPE_NAMED_COMPLEX, AML_HAS_ARGS | AML_NSOBJECT | AML_NSOPCODE | AML_NSNODE | AML_NAMED | AML_DEFER), /* 0C */ ACPI_OP ("Local0", ARGP_LOCAL0, ARGI_LOCAL0, ACPI_TYPE_LOCAL_REFERENCE, AML_CLASS_ARGUMENT, AML_TYPE_LOCAL_VARIABLE, 0), /* 0D */ ACPI_OP ("Local1", ARGP_LOCAL1, ARGI_LOCAL1, ACPI_TYPE_LOCAL_REFERENCE, AML_CLASS_ARGUMENT, AML_TYPE_LOCAL_VARIABLE, 0), /* 0E */ ACPI_OP ("Local2", ARGP_LOCAL2, ARGI_LOCAL2, ACPI_TYPE_LOCAL_REFERENCE, AML_CLASS_ARGUMENT, AML_TYPE_LOCAL_VARIABLE, 0), /* 0F */ ACPI_OP ("Local3", ARGP_LOCAL3, ARGI_LOCAL3, ACPI_TYPE_LOCAL_REFERENCE, AML_CLASS_ARGUMENT, AML_TYPE_LOCAL_VARIABLE, 0), /* 10 */ ACPI_OP ("Local4", ARGP_LOCAL4, ARGI_LOCAL4, ACPI_TYPE_LOCAL_REFERENCE, AML_CLASS_ARGUMENT, AML_TYPE_LOCAL_VARIABLE, 0), /* 11 */ ACPI_OP ("Local5", ARGP_LOCAL5, ARGI_LOCAL5, ACPI_TYPE_LOCAL_REFERENCE, AML_CLASS_ARGUMENT, AML_TYPE_LOCAL_VARIABLE, 0), /* 12 */ ACPI_OP ("Local6", ARGP_LOCAL6, ARGI_LOCAL6, ACPI_TYPE_LOCAL_REFERENCE, AML_CLASS_ARGUMENT, AML_TYPE_LOCAL_VARIABLE, 0), /* 13 */ ACPI_OP ("Local7", ARGP_LOCAL7, ARGI_LOCAL7, ACPI_TYPE_LOCAL_REFERENCE, AML_CLASS_ARGUMENT, AML_TYPE_LOCAL_VARIABLE, 0), /* 14 */ ACPI_OP ("Arg0", ARGP_ARG0, ARGI_ARG0, ACPI_TYPE_LOCAL_REFERENCE, AML_CLASS_ARGUMENT, AML_TYPE_METHOD_ARGUMENT, 0), /* 15 */ ACPI_OP ("Arg1", ARGP_ARG1, ARGI_ARG1, ACPI_TYPE_LOCAL_REFERENCE, AML_CLASS_ARGUMENT, AML_TYPE_METHOD_ARGUMENT, 0), /* 16 */ ACPI_OP ("Arg2", ARGP_ARG2, ARGI_ARG2, ACPI_TYPE_LOCAL_REFERENCE, AML_CLASS_ARGUMENT, AML_TYPE_METHOD_ARGUMENT, 0), /* 17 */ ACPI_OP ("Arg3", ARGP_ARG3, ARGI_ARG3, ACPI_TYPE_LOCAL_REFERENCE, AML_CLASS_ARGUMENT, AML_TYPE_METHOD_ARGUMENT, 0), /* 18 */ ACPI_OP ("Arg4", ARGP_ARG4, ARGI_ARG4, ACPI_TYPE_LOCAL_REFERENCE, AML_CLASS_ARGUMENT, AML_TYPE_METHOD_ARGUMENT, 0), /* 19 */ ACPI_OP ("Arg5", ARGP_ARG5, ARGI_ARG5, ACPI_TYPE_LOCAL_REFERENCE, AML_CLASS_ARGUMENT, AML_TYPE_METHOD_ARGUMENT, 0), /* 1A */ ACPI_OP ("Arg6", ARGP_ARG6, ARGI_ARG6, ACPI_TYPE_LOCAL_REFERENCE, AML_CLASS_ARGUMENT, AML_TYPE_METHOD_ARGUMENT, 0), /* 1B */ ACPI_OP ("Store", ARGP_STORE_OP, ARGI_STORE_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_1T_1R, AML_FLAGS_EXEC_1A_1T_1R), /* 1C */ ACPI_OP ("RefOf", ARGP_REF_OF_OP, ARGI_REF_OF_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_0T_1R, AML_FLAGS_EXEC_1A_0T_1R), /* 1D */ ACPI_OP ("Add", ARGP_ADD_OP, ARGI_ADD_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_1T_1R, AML_FLAGS_EXEC_2A_1T_1R | AML_MATH | AML_CONSTANT), /* 1E */ ACPI_OP ("Concatenate", ARGP_CONCAT_OP, ARGI_CONCAT_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_1T_1R, AML_FLAGS_EXEC_2A_1T_1R | AML_CONSTANT), /* 1F */ ACPI_OP ("Subtract", ARGP_SUBTRACT_OP, ARGI_SUBTRACT_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_1T_1R, AML_FLAGS_EXEC_2A_1T_1R | AML_MATH | AML_CONSTANT), /* 20 */ ACPI_OP ("Increment", ARGP_INCREMENT_OP, ARGI_INCREMENT_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_0T_1R, AML_FLAGS_EXEC_1A_0T_1R | AML_CONSTANT), /* 21 */ ACPI_OP ("Decrement", ARGP_DECREMENT_OP, ARGI_DECREMENT_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_0T_1R, AML_FLAGS_EXEC_1A_0T_1R | AML_CONSTANT), /* 22 */ ACPI_OP ("Multiply", ARGP_MULTIPLY_OP, ARGI_MULTIPLY_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_1T_1R, AML_FLAGS_EXEC_2A_1T_1R | AML_MATH | AML_CONSTANT), /* 23 */ ACPI_OP ("Divide", ARGP_DIVIDE_OP, ARGI_DIVIDE_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_2T_1R, AML_FLAGS_EXEC_2A_2T_1R | AML_CONSTANT), /* 24 */ ACPI_OP ("ShiftLeft", ARGP_SHIFT_LEFT_OP, ARGI_SHIFT_LEFT_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_1T_1R, AML_FLAGS_EXEC_2A_1T_1R | AML_MATH | AML_CONSTANT), /* 25 */ ACPI_OP ("ShiftRight", ARGP_SHIFT_RIGHT_OP, ARGI_SHIFT_RIGHT_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_1T_1R, AML_FLAGS_EXEC_2A_1T_1R | AML_MATH | AML_CONSTANT), /* 26 */ ACPI_OP ("And", ARGP_BIT_AND_OP, ARGI_BIT_AND_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_1T_1R, AML_FLAGS_EXEC_2A_1T_1R | AML_MATH | AML_CONSTANT), /* 27 */ ACPI_OP ("NAnd", ARGP_BIT_NAND_OP, ARGI_BIT_NAND_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_1T_1R, AML_FLAGS_EXEC_2A_1T_1R | AML_MATH | AML_CONSTANT), /* 28 */ ACPI_OP ("Or", ARGP_BIT_OR_OP, ARGI_BIT_OR_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_1T_1R, AML_FLAGS_EXEC_2A_1T_1R | AML_MATH | AML_CONSTANT), /* 29 */ ACPI_OP ("NOr", ARGP_BIT_NOR_OP, ARGI_BIT_NOR_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_1T_1R, AML_FLAGS_EXEC_2A_1T_1R | AML_MATH | AML_CONSTANT), /* 2A */ ACPI_OP ("XOr", ARGP_BIT_XOR_OP, ARGI_BIT_XOR_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_1T_1R, AML_FLAGS_EXEC_2A_1T_1R | AML_MATH | AML_CONSTANT), /* 2B */ ACPI_OP ("Not", ARGP_BIT_NOT_OP, ARGI_BIT_NOT_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_1T_1R, AML_FLAGS_EXEC_1A_1T_1R | AML_CONSTANT), /* 2C */ ACPI_OP ("FindSetLeftBit", ARGP_FIND_SET_LEFT_BIT_OP, ARGI_FIND_SET_LEFT_BIT_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_1T_1R, AML_FLAGS_EXEC_1A_1T_1R | AML_CONSTANT), /* 2D */ ACPI_OP ("FindSetRightBit", ARGP_FIND_SET_RIGHT_BIT_OP,ARGI_FIND_SET_RIGHT_BIT_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_1T_1R, AML_FLAGS_EXEC_1A_1T_1R | AML_CONSTANT), /* 2E */ ACPI_OP ("DerefOf", ARGP_DEREF_OF_OP, ARGI_DEREF_OF_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_0T_1R, AML_FLAGS_EXEC_1A_0T_1R), /* 2F */ ACPI_OP ("Notify", ARGP_NOTIFY_OP, ARGI_NOTIFY_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_0T_0R, AML_FLAGS_EXEC_2A_0T_0R), /* 30 */ ACPI_OP ("SizeOf", ARGP_SIZE_OF_OP, ARGI_SIZE_OF_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_0T_1R, AML_FLAGS_EXEC_1A_0T_1R | AML_NO_OPERAND_RESOLVE), /* 31 */ ACPI_OP ("Index", ARGP_INDEX_OP, ARGI_INDEX_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_1T_1R, AML_FLAGS_EXEC_2A_1T_1R), /* 32 */ ACPI_OP ("Match", ARGP_MATCH_OP, ARGI_MATCH_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_6A_0T_1R, AML_FLAGS_EXEC_6A_0T_1R | AML_CONSTANT), /* 33 */ ACPI_OP ("CreateDWordField", ARGP_CREATE_DWORD_FIELD_OP,ARGI_CREATE_DWORD_FIELD_OP, ACPI_TYPE_BUFFER_FIELD, AML_CLASS_CREATE, AML_TYPE_CREATE_FIELD, AML_HAS_ARGS | AML_NSOBJECT | AML_NSNODE | AML_DEFER | AML_CREATE), /* 34 */ ACPI_OP ("CreateWordField", ARGP_CREATE_WORD_FIELD_OP, ARGI_CREATE_WORD_FIELD_OP, ACPI_TYPE_BUFFER_FIELD, AML_CLASS_CREATE, AML_TYPE_CREATE_FIELD, AML_HAS_ARGS | AML_NSOBJECT | AML_NSNODE | AML_DEFER | AML_CREATE), /* 35 */ ACPI_OP ("CreateByteField", ARGP_CREATE_BYTE_FIELD_OP, ARGI_CREATE_BYTE_FIELD_OP, ACPI_TYPE_BUFFER_FIELD, AML_CLASS_CREATE, AML_TYPE_CREATE_FIELD, AML_HAS_ARGS | AML_NSOBJECT | AML_NSNODE | AML_DEFER | AML_CREATE), /* 36 */ ACPI_OP ("CreateBitField", ARGP_CREATE_BIT_FIELD_OP, ARGI_CREATE_BIT_FIELD_OP, ACPI_TYPE_BUFFER_FIELD, AML_CLASS_CREATE, AML_TYPE_CREATE_FIELD, AML_HAS_ARGS | AML_NSOBJECT | AML_NSNODE | AML_DEFER | AML_CREATE), /* 37 */ ACPI_OP ("ObjectType", ARGP_TYPE_OP, ARGI_TYPE_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_0T_1R, AML_FLAGS_EXEC_1A_0T_1R | AML_NO_OPERAND_RESOLVE), /* 38 */ ACPI_OP ("LAnd", ARGP_LAND_OP, ARGI_LAND_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_0T_1R, AML_FLAGS_EXEC_2A_0T_1R | AML_LOGICAL_NUMERIC | AML_CONSTANT), /* 39 */ ACPI_OP ("LOr", ARGP_LOR_OP, ARGI_LOR_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_0T_1R, AML_FLAGS_EXEC_2A_0T_1R | AML_LOGICAL_NUMERIC | AML_CONSTANT), /* 3A */ ACPI_OP ("LNot", ARGP_LNOT_OP, ARGI_LNOT_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_0T_1R, AML_FLAGS_EXEC_1A_0T_1R | AML_CONSTANT), /* 3B */ ACPI_OP ("LEqual", ARGP_LEQUAL_OP, ARGI_LEQUAL_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_0T_1R, AML_FLAGS_EXEC_2A_0T_1R | AML_LOGICAL | AML_CONSTANT), /* 3C */ ACPI_OP ("LGreater", ARGP_LGREATER_OP, ARGI_LGREATER_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_0T_1R, AML_FLAGS_EXEC_2A_0T_1R | AML_LOGICAL | AML_CONSTANT), /* 3D */ ACPI_OP ("LLess", ARGP_LLESS_OP, ARGI_LLESS_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_0T_1R, AML_FLAGS_EXEC_2A_0T_1R | AML_LOGICAL | AML_CONSTANT), /* 3E */ ACPI_OP ("If", ARGP_IF_OP, ARGI_IF_OP, ACPI_TYPE_ANY, AML_CLASS_CONTROL, AML_TYPE_CONTROL, AML_HAS_ARGS), /* 3F */ ACPI_OP ("Else", ARGP_ELSE_OP, ARGI_ELSE_OP, ACPI_TYPE_ANY, AML_CLASS_CONTROL, AML_TYPE_CONTROL, AML_HAS_ARGS), /* 40 */ ACPI_OP ("While", ARGP_WHILE_OP, ARGI_WHILE_OP, ACPI_TYPE_ANY, AML_CLASS_CONTROL, AML_TYPE_CONTROL, AML_HAS_ARGS), /* 41 */ ACPI_OP ("Noop", ARGP_NOOP_OP, ARGI_NOOP_OP, ACPI_TYPE_ANY, AML_CLASS_CONTROL, AML_TYPE_CONTROL, 0), /* 42 */ ACPI_OP ("Return", ARGP_RETURN_OP, ARGI_RETURN_OP, ACPI_TYPE_ANY, AML_CLASS_CONTROL, AML_TYPE_CONTROL, AML_HAS_ARGS), /* 43 */ ACPI_OP ("Break", ARGP_BREAK_OP, ARGI_BREAK_OP, ACPI_TYPE_ANY, AML_CLASS_CONTROL, AML_TYPE_CONTROL, 0), /* 44 */ ACPI_OP ("BreakPoint", ARGP_BREAK_POINT_OP, ARGI_BREAK_POINT_OP, ACPI_TYPE_ANY, AML_CLASS_CONTROL, AML_TYPE_CONTROL, 0), /* 45 */ ACPI_OP ("Ones", ARGP_ONES_OP, ARGI_ONES_OP, ACPI_TYPE_INTEGER, AML_CLASS_ARGUMENT, AML_TYPE_CONSTANT, AML_CONSTANT), /* Prefixed opcodes (Two-byte opcodes with a prefix op) */ /* 46 */ ACPI_OP ("Mutex", ARGP_MUTEX_OP, ARGI_MUTEX_OP, ACPI_TYPE_MUTEX, AML_CLASS_NAMED_OBJECT, AML_TYPE_NAMED_SIMPLE, AML_HAS_ARGS | AML_NSOBJECT | AML_NSOPCODE | AML_NSNODE | AML_NAMED), /* 47 */ ACPI_OP ("Event", ARGP_EVENT_OP, ARGI_EVENT_OP, ACPI_TYPE_EVENT, AML_CLASS_NAMED_OBJECT, AML_TYPE_NAMED_SIMPLE, AML_NSOBJECT | AML_NSOPCODE | AML_NSNODE | AML_NAMED ), /* 48 */ ACPI_OP ("CondRefOf", ARGP_COND_REF_OF_OP, ARGI_COND_REF_OF_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_1T_1R, AML_FLAGS_EXEC_1A_1T_1R), /* 49 */ ACPI_OP ("CreateField", ARGP_CREATE_FIELD_OP, ARGI_CREATE_FIELD_OP, ACPI_TYPE_BUFFER_FIELD, AML_CLASS_CREATE, AML_TYPE_CREATE_FIELD, AML_HAS_ARGS | AML_NSOBJECT | AML_NSNODE | AML_DEFER | AML_FIELD | AML_CREATE), /* 4A */ ACPI_OP ("Load", ARGP_LOAD_OP, ARGI_LOAD_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_1T_0R, AML_FLAGS_EXEC_1A_1T_0R), /* 4B */ ACPI_OP ("Stall", ARGP_STALL_OP, ARGI_STALL_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_0T_0R, AML_FLAGS_EXEC_1A_0T_0R), /* 4C */ ACPI_OP ("Sleep", ARGP_SLEEP_OP, ARGI_SLEEP_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_0T_0R, AML_FLAGS_EXEC_1A_0T_0R), /* 4D */ ACPI_OP ("Acquire", ARGP_ACQUIRE_OP, ARGI_ACQUIRE_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_0T_1R, AML_FLAGS_EXEC_2A_0T_1R), /* 4E */ ACPI_OP ("Signal", ARGP_SIGNAL_OP, ARGI_SIGNAL_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_0T_0R, AML_FLAGS_EXEC_1A_0T_0R), /* 4F */ ACPI_OP ("Wait", ARGP_WAIT_OP, ARGI_WAIT_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_0T_1R, AML_FLAGS_EXEC_2A_0T_1R), /* 50 */ ACPI_OP ("Reset", ARGP_RESET_OP, ARGI_RESET_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_0T_0R, AML_FLAGS_EXEC_1A_0T_0R), /* 51 */ ACPI_OP ("Release", ARGP_RELEASE_OP, ARGI_RELEASE_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_0T_0R, AML_FLAGS_EXEC_1A_0T_0R), /* 52 */ ACPI_OP ("FromBCD", ARGP_FROM_BCD_OP, ARGI_FROM_BCD_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_1T_1R, AML_FLAGS_EXEC_1A_1T_1R | AML_CONSTANT), /* 53 */ ACPI_OP ("ToBCD", ARGP_TO_BCD_OP, ARGI_TO_BCD_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_1T_1R, AML_FLAGS_EXEC_1A_1T_1R | AML_CONSTANT), /* 54 */ ACPI_OP ("Unload", ARGP_UNLOAD_OP, ARGI_UNLOAD_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_0T_0R, AML_FLAGS_EXEC_1A_0T_0R), /* 55 */ ACPI_OP ("Revision", ARGP_REVISION_OP, ARGI_REVISION_OP, ACPI_TYPE_INTEGER, AML_CLASS_ARGUMENT, AML_TYPE_CONSTANT, 0), /* 56 */ ACPI_OP ("Debug", ARGP_DEBUG_OP, ARGI_DEBUG_OP, ACPI_TYPE_LOCAL_REFERENCE, AML_CLASS_ARGUMENT, AML_TYPE_CONSTANT, 0), /* 57 */ ACPI_OP ("Fatal", ARGP_FATAL_OP, ARGI_FATAL_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_3A_0T_0R, AML_FLAGS_EXEC_3A_0T_0R), /* 58 */ ACPI_OP ("OperationRegion", ARGP_REGION_OP, ARGI_REGION_OP, ACPI_TYPE_REGION, AML_CLASS_NAMED_OBJECT, AML_TYPE_NAMED_COMPLEX, AML_HAS_ARGS | AML_NSOBJECT | AML_NSOPCODE | AML_NSNODE | AML_NAMED | AML_DEFER), /* 59 */ ACPI_OP ("Field", ARGP_FIELD_OP, ARGI_FIELD_OP, ACPI_TYPE_ANY, AML_CLASS_NAMED_OBJECT, AML_TYPE_NAMED_FIELD, AML_HAS_ARGS | AML_NSOBJECT | AML_NSOPCODE | AML_FIELD), /* 5A */ ACPI_OP ("Device", ARGP_DEVICE_OP, ARGI_DEVICE_OP, ACPI_TYPE_DEVICE, AML_CLASS_NAMED_OBJECT, AML_TYPE_NAMED_NO_OBJ, AML_HAS_ARGS | AML_NSOBJECT | AML_NSOPCODE | AML_NSNODE | AML_NAMED), /* 5B */ ACPI_OP ("Processor", ARGP_PROCESSOR_OP, ARGI_PROCESSOR_OP, ACPI_TYPE_PROCESSOR, AML_CLASS_NAMED_OBJECT, AML_TYPE_NAMED_SIMPLE, AML_HAS_ARGS | AML_NSOBJECT | AML_NSOPCODE | AML_NSNODE | AML_NAMED), /* 5C */ ACPI_OP ("PowerResource", ARGP_POWER_RES_OP, ARGI_POWER_RES_OP, ACPI_TYPE_POWER, AML_CLASS_NAMED_OBJECT, AML_TYPE_NAMED_SIMPLE, AML_HAS_ARGS | AML_NSOBJECT | AML_NSOPCODE | AML_NSNODE | AML_NAMED), /* 5D */ ACPI_OP ("ThermalZone", ARGP_THERMAL_ZONE_OP, ARGI_THERMAL_ZONE_OP, ACPI_TYPE_THERMAL, AML_CLASS_NAMED_OBJECT, AML_TYPE_NAMED_NO_OBJ, AML_HAS_ARGS | AML_NSOBJECT | AML_NSOPCODE | AML_NSNODE | AML_NAMED), /* 5E */ ACPI_OP ("IndexField", ARGP_INDEX_FIELD_OP, ARGI_INDEX_FIELD_OP, ACPI_TYPE_ANY, AML_CLASS_NAMED_OBJECT, AML_TYPE_NAMED_FIELD, AML_HAS_ARGS | AML_NSOBJECT | AML_NSOPCODE | AML_FIELD), /* 5F */ ACPI_OP ("BankField", ARGP_BANK_FIELD_OP, ARGI_BANK_FIELD_OP, ACPI_TYPE_LOCAL_BANK_FIELD, AML_CLASS_NAMED_OBJECT, AML_TYPE_NAMED_FIELD, AML_HAS_ARGS | AML_NSOBJECT | AML_NSOPCODE | AML_FIELD | AML_DEFER), /* Internal opcodes that map to invalid AML opcodes */ /* 60 */ ACPI_OP ("LNotEqual", ARGP_LNOTEQUAL_OP, ARGI_LNOTEQUAL_OP, ACPI_TYPE_ANY, AML_CLASS_INTERNAL, AML_TYPE_BOGUS, AML_HAS_ARGS | AML_CONSTANT), /* 61 */ ACPI_OP ("LLessEqual", ARGP_LLESSEQUAL_OP, ARGI_LLESSEQUAL_OP, ACPI_TYPE_ANY, AML_CLASS_INTERNAL, AML_TYPE_BOGUS, AML_HAS_ARGS | AML_CONSTANT), /* 62 */ ACPI_OP ("LGreaterEqual", ARGP_LGREATEREQUAL_OP, ARGI_LGREATEREQUAL_OP, ACPI_TYPE_ANY, AML_CLASS_INTERNAL, AML_TYPE_BOGUS, AML_HAS_ARGS | AML_CONSTANT), /* 63 */ ACPI_OP ("-NamePath-", ARGP_NAMEPATH_OP, ARGI_NAMEPATH_OP, ACPI_TYPE_LOCAL_REFERENCE, AML_CLASS_ARGUMENT, AML_TYPE_LITERAL, AML_NSOBJECT | AML_NSNODE ), /* 64 */ ACPI_OP ("-MethodCall-", ARGP_METHODCALL_OP, ARGI_METHODCALL_OP, ACPI_TYPE_METHOD, AML_CLASS_METHOD_CALL, AML_TYPE_METHOD_CALL, AML_HAS_ARGS | AML_NSOBJECT | AML_NSNODE), /* 65 */ ACPI_OP ("-ByteList-", ARGP_BYTELIST_OP, ARGI_BYTELIST_OP, ACPI_TYPE_ANY, AML_CLASS_ARGUMENT, AML_TYPE_LITERAL, 0), /* 66 */ ACPI_OP ("-ReservedField-", ARGP_RESERVEDFIELD_OP, ARGI_RESERVEDFIELD_OP, ACPI_TYPE_ANY, AML_CLASS_INTERNAL, AML_TYPE_BOGUS, 0), /* 67 */ ACPI_OP ("-NamedField-", ARGP_NAMEDFIELD_OP, ARGI_NAMEDFIELD_OP, ACPI_TYPE_ANY, AML_CLASS_INTERNAL, AML_TYPE_BOGUS, AML_NSOBJECT | AML_NSOPCODE | AML_NSNODE | AML_NAMED ), /* 68 */ ACPI_OP ("-AccessField-", ARGP_ACCESSFIELD_OP, ARGI_ACCESSFIELD_OP, ACPI_TYPE_ANY, AML_CLASS_INTERNAL, AML_TYPE_BOGUS, 0), /* 69 */ ACPI_OP ("-StaticString", ARGP_STATICSTRING_OP, ARGI_STATICSTRING_OP, ACPI_TYPE_ANY, AML_CLASS_INTERNAL, AML_TYPE_BOGUS, 0), /* 6A */ ACPI_OP ("-Return Value-", ARG_NONE, ARG_NONE, ACPI_TYPE_ANY, AML_CLASS_RETURN_VALUE, AML_TYPE_RETURN, AML_HAS_ARGS | AML_HAS_RETVAL), /* 6B */ ACPI_OP ("-UNKNOWN_OP-", ARG_NONE, ARG_NONE, ACPI_TYPE_INVALID, AML_CLASS_UNKNOWN, AML_TYPE_BOGUS, AML_HAS_ARGS), /* 6C */ ACPI_OP ("-ASCII_ONLY-", ARG_NONE, ARG_NONE, ACPI_TYPE_ANY, AML_CLASS_ASCII, AML_TYPE_BOGUS, AML_HAS_ARGS), /* 6D */ ACPI_OP ("-PREFIX_ONLY-", ARG_NONE, ARG_NONE, ACPI_TYPE_ANY, AML_CLASS_PREFIX, AML_TYPE_BOGUS, AML_HAS_ARGS), /* ACPI 2.0 opcodes */ /* 6E */ ACPI_OP ("QwordConst", ARGP_QWORD_OP, ARGI_QWORD_OP, ACPI_TYPE_INTEGER, AML_CLASS_ARGUMENT, AML_TYPE_LITERAL, AML_CONSTANT), /* 6F */ ACPI_OP ("Package", /* Var */ ARGP_VAR_PACKAGE_OP, ARGI_VAR_PACKAGE_OP, ACPI_TYPE_PACKAGE, AML_CLASS_CREATE, AML_TYPE_CREATE_OBJECT, AML_HAS_ARGS | AML_DEFER), /* 70 */ ACPI_OP ("ConcatenateResTemplate", ARGP_CONCAT_RES_OP, ARGI_CONCAT_RES_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_1T_1R, AML_FLAGS_EXEC_2A_1T_1R | AML_CONSTANT), /* 71 */ ACPI_OP ("Mod", ARGP_MOD_OP, ARGI_MOD_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_1T_1R, AML_FLAGS_EXEC_2A_1T_1R | AML_CONSTANT), /* 72 */ ACPI_OP ("CreateQWordField", ARGP_CREATE_QWORD_FIELD_OP,ARGI_CREATE_QWORD_FIELD_OP, ACPI_TYPE_BUFFER_FIELD, AML_CLASS_CREATE, AML_TYPE_CREATE_FIELD, AML_HAS_ARGS | AML_NSOBJECT | AML_NSNODE | AML_DEFER | AML_CREATE), /* 73 */ ACPI_OP ("ToBuffer", ARGP_TO_BUFFER_OP, ARGI_TO_BUFFER_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_1T_1R, AML_FLAGS_EXEC_1A_1T_1R | AML_CONSTANT), /* 74 */ ACPI_OP ("ToDecimalString", ARGP_TO_DEC_STR_OP, ARGI_TO_DEC_STR_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_1T_1R, AML_FLAGS_EXEC_1A_1T_1R | AML_CONSTANT), /* 75 */ ACPI_OP ("ToHexString", ARGP_TO_HEX_STR_OP, ARGI_TO_HEX_STR_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_1T_1R, AML_FLAGS_EXEC_1A_1T_1R | AML_CONSTANT), /* 76 */ ACPI_OP ("ToInteger", ARGP_TO_INTEGER_OP, ARGI_TO_INTEGER_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_1T_1R, AML_FLAGS_EXEC_1A_1T_1R | AML_CONSTANT), /* 77 */ ACPI_OP ("ToString", ARGP_TO_STRING_OP, ARGI_TO_STRING_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_2A_1T_1R, AML_FLAGS_EXEC_2A_1T_1R | AML_CONSTANT), /* 78 */ ACPI_OP ("CopyObject", ARGP_COPY_OP, ARGI_COPY_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_1A_1T_1R, AML_FLAGS_EXEC_1A_1T_1R), /* 79 */ ACPI_OP ("Mid", ARGP_MID_OP, ARGI_MID_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_3A_1T_1R, AML_FLAGS_EXEC_3A_1T_1R | AML_CONSTANT), /* 7A */ ACPI_OP ("Continue", ARGP_CONTINUE_OP, ARGI_CONTINUE_OP, ACPI_TYPE_ANY, AML_CLASS_CONTROL, AML_TYPE_CONTROL, 0), /* 7B */ ACPI_OP ("LoadTable", ARGP_LOAD_TABLE_OP, ARGI_LOAD_TABLE_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_6A_0T_1R, AML_FLAGS_EXEC_6A_0T_1R), /* 7C */ ACPI_OP ("DataTableRegion", ARGP_DATA_REGION_OP, ARGI_DATA_REGION_OP, ACPI_TYPE_REGION, AML_CLASS_NAMED_OBJECT, AML_TYPE_NAMED_COMPLEX, AML_HAS_ARGS | AML_NSOBJECT | AML_NSOPCODE | AML_NSNODE | AML_NAMED | AML_DEFER), /* 7D */ ACPI_OP ("[EvalSubTree]", ARGP_SCOPE_OP, ARGI_SCOPE_OP, ACPI_TYPE_ANY, AML_CLASS_NAMED_OBJECT, AML_TYPE_NAMED_NO_OBJ, AML_HAS_ARGS | AML_NSOBJECT | AML_NSOPCODE | AML_NSNODE), /* ACPI 3.0 opcodes */ /* 7E */ ACPI_OP ("Timer", ARGP_TIMER_OP, ARGI_TIMER_OP, ACPI_TYPE_ANY, AML_CLASS_EXECUTE, AML_TYPE_EXEC_0A_0T_1R, AML_FLAGS_EXEC_0A_0T_1R), /* ACPI 5.0 opcodes */ /* 7F */ ACPI_OP ("-ConnectField-", ARGP_CONNECTFIELD_OP, ARGI_CONNECTFIELD_OP, ACPI_TYPE_ANY, AML_CLASS_INTERNAL, AML_TYPE_BOGUS, AML_HAS_ARGS), /* 80 */ ACPI_OP ("-ExtAccessField-", ARGP_CONNECTFIELD_OP, ARGI_CONNECTFIELD_OP, ACPI_TYPE_ANY, AML_CLASS_INTERNAL, AML_TYPE_BOGUS, 0) /*! [End] no source code translation !*/ }; src/acpica/source/components/parser/psopinfo.c000066400000000000000000000333771231470457100220700ustar00rootroot00000000000000/****************************************************************************** * * Module Name: psopinfo - AML opcode information functions and dispatch tables * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #include "acpi.h" #include "accommon.h" #include "acparser.h" #include "acopcode.h" #include "amlcode.h" #define _COMPONENT ACPI_PARSER ACPI_MODULE_NAME ("psopinfo") extern const UINT8 AcpiGbl_ShortOpIndex[]; extern const UINT8 AcpiGbl_LongOpIndex[]; static const UINT8 AcpiGbl_ArgumentCount[] = {0,1,1,1,1,2,2,2,2,3,3,6}; /******************************************************************************* * * FUNCTION: AcpiPsGetOpcodeInfo * * PARAMETERS: Opcode - The AML opcode * * RETURN: A pointer to the info about the opcode. * * DESCRIPTION: Find AML opcode description based on the opcode. * NOTE: This procedure must ALWAYS return a valid pointer! * ******************************************************************************/ const ACPI_OPCODE_INFO * AcpiPsGetOpcodeInfo ( UINT16 Opcode) { #ifdef ACPI_DEBUG_OUTPUT const char *OpcodeName = "Unknown AML opcode"; #endif ACPI_FUNCTION_NAME (PsGetOpcodeInfo); /* * Detect normal 8-bit opcode or extended 16-bit opcode */ if (!(Opcode & 0xFF00)) { /* Simple (8-bit) opcode: 0-255, can't index beyond table */ return (&AcpiGbl_AmlOpInfo [AcpiGbl_ShortOpIndex [(UINT8) Opcode]]); } if (((Opcode & 0xFF00) == AML_EXTENDED_OPCODE) && (((UINT8) Opcode) <= MAX_EXTENDED_OPCODE)) { /* Valid extended (16-bit) opcode */ return (&AcpiGbl_AmlOpInfo [AcpiGbl_LongOpIndex [(UINT8) Opcode]]); } #if defined ACPI_ASL_COMPILER && defined ACPI_DEBUG_OUTPUT #include "asldefine.h" switch (Opcode) { case AML_RAW_DATA_BYTE: OpcodeName = "-Raw Data Byte-"; break; case AML_RAW_DATA_WORD: OpcodeName = "-Raw Data Word-"; break; case AML_RAW_DATA_DWORD: OpcodeName = "-Raw Data Dword-"; break; case AML_RAW_DATA_QWORD: OpcodeName = "-Raw Data Qword-"; break; case AML_RAW_DATA_BUFFER: OpcodeName = "-Raw Data Buffer-"; break; case AML_RAW_DATA_CHAIN: OpcodeName = "-Raw Data Buffer Chain-"; break; case AML_PACKAGE_LENGTH: OpcodeName = "-Package Length-"; break; case AML_UNASSIGNED_OPCODE: OpcodeName = "-Unassigned Opcode-"; break; case AML_DEFAULT_ARG_OP: OpcodeName = "-Default Arg-"; break; default: break; } #endif /* Unknown AML opcode */ ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "%s [%4.4X]\n", OpcodeName, Opcode)); return (&AcpiGbl_AmlOpInfo [_UNK]); } /******************************************************************************* * * FUNCTION: AcpiPsGetOpcodeName * * PARAMETERS: Opcode - The AML opcode * * RETURN: A pointer to the name of the opcode (ASCII String) * Note: Never returns NULL. * * DESCRIPTION: Translate an opcode into a human-readable string * ******************************************************************************/ char * AcpiPsGetOpcodeName ( UINT16 Opcode) { #if defined(ACPI_DISASSEMBLER) || defined (ACPI_DEBUG_OUTPUT) const ACPI_OPCODE_INFO *Op; Op = AcpiPsGetOpcodeInfo (Opcode); /* Always guaranteed to return a valid pointer */ return (Op->Name); #else return ("OpcodeName unavailable"); #endif } /******************************************************************************* * * FUNCTION: AcpiPsGetArgumentCount * * PARAMETERS: OpType - Type associated with the AML opcode * * RETURN: Argument count * * DESCRIPTION: Obtain the number of expected arguments for an AML opcode * ******************************************************************************/ UINT8 AcpiPsGetArgumentCount ( UINT32 OpType) { if (OpType <= AML_TYPE_EXEC_6A_0T_1R) { return (AcpiGbl_ArgumentCount[OpType]); } return (0); } /* * This table is directly indexed by the opcodes It returns * an index into the opcode table (AcpiGbl_AmlOpInfo) */ const UINT8 AcpiGbl_ShortOpIndex[256] = { /* 0 1 2 3 4 5 6 7 */ /* 8 9 A B C D E F */ /* 0x00 */ 0x00, 0x01, _UNK, _UNK, _UNK, _UNK, 0x02, _UNK, /* 0x08 */ 0x03, _UNK, 0x04, 0x05, 0x06, 0x07, 0x6E, _UNK, /* 0x10 */ 0x08, 0x09, 0x0a, 0x6F, 0x0b, _UNK, _UNK, _UNK, /* 0x18 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, /* 0x20 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, /* 0x28 */ _UNK, _UNK, _UNK, _UNK, _UNK, 0x63, _PFX, _PFX, /* 0x30 */ 0x67, 0x66, 0x68, 0x65, 0x69, 0x64, 0x6A, 0x7D, /* 0x38 */ 0x7F, 0x80, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, /* 0x40 */ _UNK, _ASC, _ASC, _ASC, _ASC, _ASC, _ASC, _ASC, /* 0x48 */ _ASC, _ASC, _ASC, _ASC, _ASC, _ASC, _ASC, _ASC, /* 0x50 */ _ASC, _ASC, _ASC, _ASC, _ASC, _ASC, _ASC, _ASC, /* 0x58 */ _ASC, _ASC, _ASC, _UNK, _PFX, _UNK, _PFX, _ASC, /* 0x60 */ 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, /* 0x68 */ 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, _UNK, /* 0x70 */ 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22, /* 0x78 */ 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, /* 0x80 */ 0x2b, 0x2c, 0x2d, 0x2e, 0x70, 0x71, 0x2f, 0x30, /* 0x88 */ 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x72, /* 0x90 */ 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x73, 0x74, /* 0x98 */ 0x75, 0x76, _UNK, _UNK, 0x77, 0x78, 0x79, 0x7A, /* 0xA0 */ 0x3e, 0x3f, 0x40, 0x41, 0x42, 0x43, 0x60, 0x61, /* 0xA8 */ 0x62, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, /* 0xB0 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, /* 0xB8 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, /* 0xC0 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, /* 0xC8 */ _UNK, _UNK, _UNK, _UNK, 0x44, _UNK, _UNK, _UNK, /* 0xD0 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, /* 0xD8 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, /* 0xE0 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, /* 0xE8 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, /* 0xF0 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, /* 0xF8 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, 0x45, }; /* * This table is indexed by the second opcode of the extended opcode * pair. It returns an index into the opcode table (AcpiGbl_AmlOpInfo) */ const UINT8 AcpiGbl_LongOpIndex[NUM_EXTENDED_OPCODE] = { /* 0 1 2 3 4 5 6 7 */ /* 8 9 A B C D E F */ /* 0x00 */ _UNK, 0x46, 0x47, _UNK, _UNK, _UNK, _UNK, _UNK, /* 0x08 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, /* 0x10 */ _UNK, _UNK, 0x48, 0x49, _UNK, _UNK, _UNK, _UNK, /* 0x18 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, 0x7B, /* 0x20 */ 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, /* 0x28 */ 0x52, 0x53, 0x54, _UNK, _UNK, _UNK, _UNK, _UNK, /* 0x30 */ 0x55, 0x56, 0x57, 0x7e, _UNK, _UNK, _UNK, _UNK, /* 0x38 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, /* 0x40 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, /* 0x48 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, /* 0x50 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, /* 0x58 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, /* 0x60 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, /* 0x68 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, /* 0x70 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, /* 0x78 */ _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, _UNK, /* 0x80 */ 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, /* 0x88 */ 0x7C, }; src/acpica/source/components/parser/psparse.c000066400000000000000000000626371231470457100217110ustar00rootroot00000000000000/****************************************************************************** * * Module Name: psparse - Parser top level AML parse routines * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ /* * Parse the AML and build an operation tree as most interpreters, * like Perl, do. Parsing is done by hand rather than with a YACC * generated parser to tightly constrain stack and dynamic memory * usage. At the same time, parsing is kept flexible and the code * fairly compact by parsing based on a list of AML opcode * templates in AmlOpInfo[] */ #include "acpi.h" #include "accommon.h" #include "acparser.h" #include "acdispat.h" #include "amlcode.h" #include "acinterp.h" #define _COMPONENT ACPI_PARSER ACPI_MODULE_NAME ("psparse") /******************************************************************************* * * FUNCTION: AcpiPsGetOpcodeSize * * PARAMETERS: Opcode - An AML opcode * * RETURN: Size of the opcode, in bytes (1 or 2) * * DESCRIPTION: Get the size of the current opcode. * ******************************************************************************/ UINT32 AcpiPsGetOpcodeSize ( UINT32 Opcode) { /* Extended (2-byte) opcode if > 255 */ if (Opcode > 0x00FF) { return (2); } /* Otherwise, just a single byte opcode */ return (1); } /******************************************************************************* * * FUNCTION: AcpiPsPeekOpcode * * PARAMETERS: ParserState - A parser state object * * RETURN: Next AML opcode * * DESCRIPTION: Get next AML opcode (without incrementing AML pointer) * ******************************************************************************/ UINT16 AcpiPsPeekOpcode ( ACPI_PARSE_STATE *ParserState) { UINT8 *Aml; UINT16 Opcode; Aml = ParserState->Aml; Opcode = (UINT16) ACPI_GET8 (Aml); if (Opcode == AML_EXTENDED_OP_PREFIX) { /* Extended opcode, get the second opcode byte */ Aml++; Opcode = (UINT16) ((Opcode << 8) | ACPI_GET8 (Aml)); } return (Opcode); } /******************************************************************************* * * FUNCTION: AcpiPsCompleteThisOp * * PARAMETERS: WalkState - Current State * Op - Op to complete * * RETURN: Status * * DESCRIPTION: Perform any cleanup at the completion of an Op. * ******************************************************************************/ ACPI_STATUS AcpiPsCompleteThisOp ( ACPI_WALK_STATE *WalkState, ACPI_PARSE_OBJECT *Op) { ACPI_PARSE_OBJECT *Prev; ACPI_PARSE_OBJECT *Next; const ACPI_OPCODE_INFO *ParentInfo; ACPI_PARSE_OBJECT *ReplacementOp = NULL; ACPI_STATUS Status = AE_OK; ACPI_FUNCTION_TRACE_PTR (PsCompleteThisOp, Op); /* Check for null Op, can happen if AML code is corrupt */ if (!Op) { return_ACPI_STATUS (AE_OK); /* OK for now */ } /* Delete this op and the subtree below it if asked to */ if (((WalkState->ParseFlags & ACPI_PARSE_TREE_MASK) != ACPI_PARSE_DELETE_TREE) || (WalkState->OpInfo->Class == AML_CLASS_ARGUMENT)) { return_ACPI_STATUS (AE_OK); } /* Make sure that we only delete this subtree */ if (Op->Common.Parent) { Prev = Op->Common.Parent->Common.Value.Arg; if (!Prev) { /* Nothing more to do */ goto Cleanup; } /* * Check if we need to replace the operator and its subtree * with a return value op (placeholder op) */ ParentInfo = AcpiPsGetOpcodeInfo (Op->Common.Parent->Common.AmlOpcode); switch (ParentInfo->Class) { case AML_CLASS_CONTROL: break; case AML_CLASS_CREATE: /* * These opcodes contain TermArg operands. The current * op must be replaced by a placeholder return op */ ReplacementOp = AcpiPsAllocOp (AML_INT_RETURN_VALUE_OP); if (!ReplacementOp) { Status = AE_NO_MEMORY; } break; case AML_CLASS_NAMED_OBJECT: /* * These opcodes contain TermArg operands. The current * op must be replaced by a placeholder return op */ if ((Op->Common.Parent->Common.AmlOpcode == AML_REGION_OP) || (Op->Common.Parent->Common.AmlOpcode == AML_DATA_REGION_OP) || (Op->Common.Parent->Common.AmlOpcode == AML_BUFFER_OP) || (Op->Common.Parent->Common.AmlOpcode == AML_PACKAGE_OP) || (Op->Common.Parent->Common.AmlOpcode == AML_BANK_FIELD_OP) || (Op->Common.Parent->Common.AmlOpcode == AML_VAR_PACKAGE_OP)) { ReplacementOp = AcpiPsAllocOp (AML_INT_RETURN_VALUE_OP); if (!ReplacementOp) { Status = AE_NO_MEMORY; } } else if ((Op->Common.Parent->Common.AmlOpcode == AML_NAME_OP) && (WalkState->PassNumber <= ACPI_IMODE_LOAD_PASS2)) { if ((Op->Common.AmlOpcode == AML_BUFFER_OP) || (Op->Common.AmlOpcode == AML_PACKAGE_OP) || (Op->Common.AmlOpcode == AML_VAR_PACKAGE_OP)) { ReplacementOp = AcpiPsAllocOp (Op->Common.AmlOpcode); if (!ReplacementOp) { Status = AE_NO_MEMORY; } else { ReplacementOp->Named.Data = Op->Named.Data; ReplacementOp->Named.Length = Op->Named.Length; } } } break; default: ReplacementOp = AcpiPsAllocOp (AML_INT_RETURN_VALUE_OP); if (!ReplacementOp) { Status = AE_NO_MEMORY; } } /* We must unlink this op from the parent tree */ if (Prev == Op) { /* This op is the first in the list */ if (ReplacementOp) { ReplacementOp->Common.Parent = Op->Common.Parent; ReplacementOp->Common.Value.Arg = NULL; ReplacementOp->Common.Node = Op->Common.Node; Op->Common.Parent->Common.Value.Arg = ReplacementOp; ReplacementOp->Common.Next = Op->Common.Next; } else { Op->Common.Parent->Common.Value.Arg = Op->Common.Next; } } /* Search the parent list */ else while (Prev) { /* Traverse all siblings in the parent's argument list */ Next = Prev->Common.Next; if (Next == Op) { if (ReplacementOp) { ReplacementOp->Common.Parent = Op->Common.Parent; ReplacementOp->Common.Value.Arg = NULL; ReplacementOp->Common.Node = Op->Common.Node; Prev->Common.Next = ReplacementOp; ReplacementOp->Common.Next = Op->Common.Next; Next = NULL; } else { Prev->Common.Next = Op->Common.Next; Next = NULL; } } Prev = Next; } } Cleanup: /* Now we can actually delete the subtree rooted at Op */ AcpiPsDeleteParseTree (Op); return_ACPI_STATUS (Status); } /******************************************************************************* * * FUNCTION: AcpiPsNextParseState * * PARAMETERS: WalkState - Current state * Op - Current parse op * CallbackStatus - Status from previous operation * * RETURN: Status * * DESCRIPTION: Update the parser state based upon the return exception from * the parser callback. * ******************************************************************************/ ACPI_STATUS AcpiPsNextParseState ( ACPI_WALK_STATE *WalkState, ACPI_PARSE_OBJECT *Op, ACPI_STATUS CallbackStatus) { ACPI_PARSE_STATE *ParserState = &WalkState->ParserState; ACPI_STATUS Status = AE_CTRL_PENDING; ACPI_FUNCTION_TRACE_PTR (PsNextParseState, Op); switch (CallbackStatus) { case AE_CTRL_TERMINATE: /* * A control method was terminated via a RETURN statement. * The walk of this method is complete. */ ParserState->Aml = ParserState->AmlEnd; Status = AE_CTRL_TERMINATE; break; case AE_CTRL_BREAK: ParserState->Aml = WalkState->AmlLastWhile; WalkState->ControlState->Common.Value = FALSE; Status = AE_CTRL_BREAK; break; case AE_CTRL_CONTINUE: ParserState->Aml = WalkState->AmlLastWhile; Status = AE_CTRL_CONTINUE; break; case AE_CTRL_PENDING: ParserState->Aml = WalkState->AmlLastWhile; break; #if 0 case AE_CTRL_SKIP: ParserState->Aml = ParserState->Scope->ParseScope.PkgEnd; Status = AE_OK; break; #endif case AE_CTRL_TRUE: /* * Predicate of an IF was true, and we are at the matching ELSE. * Just close out this package */ ParserState->Aml = AcpiPsGetNextPackageEnd (ParserState); Status = AE_CTRL_PENDING; break; case AE_CTRL_FALSE: /* * Either an IF/WHILE Predicate was false or we encountered a BREAK * opcode. In both cases, we do not execute the rest of the * package; We simply close out the parent (finishing the walk of * this branch of the tree) and continue execution at the parent * level. */ ParserState->Aml = ParserState->Scope->ParseScope.PkgEnd; /* In the case of a BREAK, just force a predicate (if any) to FALSE */ WalkState->ControlState->Common.Value = FALSE; Status = AE_CTRL_END; break; case AE_CTRL_TRANSFER: /* A method call (invocation) -- transfer control */ Status = AE_CTRL_TRANSFER; WalkState->PrevOp = Op; WalkState->MethodCallOp = Op; WalkState->MethodCallNode = (Op->Common.Value.Arg)->Common.Node; /* Will return value (if any) be used by the caller? */ WalkState->ReturnUsed = AcpiDsIsResultUsed (Op, WalkState); break; default: Status = CallbackStatus; if ((CallbackStatus & AE_CODE_MASK) == AE_CODE_CONTROL) { Status = AE_OK; } break; } return_ACPI_STATUS (Status); } /******************************************************************************* * * FUNCTION: AcpiPsParseAml * * PARAMETERS: WalkState - Current state * * * RETURN: Status * * DESCRIPTION: Parse raw AML and return a tree of ops * ******************************************************************************/ ACPI_STATUS AcpiPsParseAml ( ACPI_WALK_STATE *WalkState) { ACPI_STATUS Status; ACPI_THREAD_STATE *Thread; ACPI_THREAD_STATE *PrevWalkList = AcpiGbl_CurrentWalkList; ACPI_WALK_STATE *PreviousWalkState; ACPI_FUNCTION_TRACE (PsParseAml); ACPI_DEBUG_PRINT ((ACPI_DB_PARSE, "Entered with WalkState=%p Aml=%p size=%X\n", WalkState, WalkState->ParserState.Aml, WalkState->ParserState.AmlSize)); if (!WalkState->ParserState.Aml) { return_ACPI_STATUS (AE_NULL_OBJECT); } /* Create and initialize a new thread state */ Thread = AcpiUtCreateThreadState (); if (!Thread) { if (WalkState->MethodDesc) { /* Executing a control method - additional cleanup */ AcpiDsTerminateControlMethod (WalkState->MethodDesc, WalkState); } AcpiDsDeleteWalkState (WalkState); return_ACPI_STATUS (AE_NO_MEMORY); } WalkState->Thread = Thread; /* * If executing a method, the starting SyncLevel is this method's * SyncLevel */ if (WalkState->MethodDesc) { WalkState->Thread->CurrentSyncLevel = WalkState->MethodDesc->Method.SyncLevel; } AcpiDsPushWalkState (WalkState, Thread); /* * This global allows the AML debugger to get a handle to the currently * executing control method. */ AcpiGbl_CurrentWalkList = Thread; /* * Execute the walk loop as long as there is a valid Walk State. This * handles nested control method invocations without recursion. */ ACPI_DEBUG_PRINT ((ACPI_DB_PARSE, "State=%p\n", WalkState)); Status = AE_OK; while (WalkState) { if (ACPI_SUCCESS (Status)) { /* * The ParseLoop executes AML until the method terminates * or calls another method. */ Status = AcpiPsParseLoop (WalkState); } ACPI_DEBUG_PRINT ((ACPI_DB_PARSE, "Completed one call to walk loop, %s State=%p\n", AcpiFormatException (Status), WalkState)); if (Status == AE_CTRL_TRANSFER) { /* * A method call was detected. * Transfer control to the called control method */ Status = AcpiDsCallControlMethod (Thread, WalkState, NULL); if (ACPI_FAILURE (Status)) { Status = AcpiDsMethodError (Status, WalkState); } /* * If the transfer to the new method method call worked, a new walk * state was created -- get it */ WalkState = AcpiDsGetCurrentWalkState (Thread); continue; } else if (Status == AE_CTRL_TERMINATE) { Status = AE_OK; } else if ((Status != AE_OK) && (WalkState->MethodDesc)) { /* Either the method parse or actual execution failed */ ACPI_ERROR_METHOD ("Method parse/execution failed", WalkState->MethodNode, NULL, Status); /* Check for possible multi-thread reentrancy problem */ if ((Status == AE_ALREADY_EXISTS) && (!(WalkState->MethodDesc->Method.InfoFlags & ACPI_METHOD_SERIALIZED))) { /* * Method is not serialized and tried to create an object * twice. The probable cause is that the method cannot * handle reentrancy. Mark as "pending serialized" now, and * then mark "serialized" when the last thread exits. */ WalkState->MethodDesc->Method.InfoFlags |= ACPI_METHOD_SERIALIZED_PENDING; } } /* We are done with this walk, move on to the parent if any */ WalkState = AcpiDsPopWalkState (Thread); /* Reset the current scope to the beginning of scope stack */ AcpiDsScopeStackClear (WalkState); /* * If we just returned from the execution of a control method or if we * encountered an error during the method parse phase, there's lots of * cleanup to do */ if (((WalkState->ParseFlags & ACPI_PARSE_MODE_MASK) == ACPI_PARSE_EXECUTE) || (ACPI_FAILURE (Status))) { AcpiDsTerminateControlMethod (WalkState->MethodDesc, WalkState); } /* Delete this walk state and all linked control states */ AcpiPsCleanupScope (&WalkState->ParserState); PreviousWalkState = WalkState; ACPI_DEBUG_PRINT ((ACPI_DB_PARSE, "ReturnValue=%p, ImplicitValue=%p State=%p\n", WalkState->ReturnDesc, WalkState->ImplicitReturnObj, WalkState)); /* Check if we have restarted a preempted walk */ WalkState = AcpiDsGetCurrentWalkState (Thread); if (WalkState) { if (ACPI_SUCCESS (Status)) { /* * There is another walk state, restart it. * If the method return value is not used by the parent, * The object is deleted */ if (!PreviousWalkState->ReturnDesc) { /* * In slack mode execution, if there is no return value * we should implicitly return zero (0) as a default value. */ if (AcpiGbl_EnableInterpreterSlack && !PreviousWalkState->ImplicitReturnObj) { PreviousWalkState->ImplicitReturnObj = AcpiUtCreateIntegerObject ((UINT64) 0); if (!PreviousWalkState->ImplicitReturnObj) { return_ACPI_STATUS (AE_NO_MEMORY); } } /* Restart the calling control method */ Status = AcpiDsRestartControlMethod (WalkState, PreviousWalkState->ImplicitReturnObj); } else { /* * We have a valid return value, delete any implicit * return value. */ AcpiDsClearImplicitReturn (PreviousWalkState); Status = AcpiDsRestartControlMethod (WalkState, PreviousWalkState->ReturnDesc); } if (ACPI_SUCCESS (Status)) { WalkState->WalkType |= ACPI_WALK_METHOD_RESTART; } } else { /* On error, delete any return object or implicit return */ AcpiUtRemoveReference (PreviousWalkState->ReturnDesc); AcpiDsClearImplicitReturn (PreviousWalkState); } } /* * Just completed a 1st-level method, save the final internal return * value (if any) */ else if (PreviousWalkState->CallerReturnDesc) { if (PreviousWalkState->ImplicitReturnObj) { *(PreviousWalkState->CallerReturnDesc) = PreviousWalkState->ImplicitReturnObj; } else { /* NULL if no return value */ *(PreviousWalkState->CallerReturnDesc) = PreviousWalkState->ReturnDesc; } } else { if (PreviousWalkState->ReturnDesc) { /* Caller doesn't want it, must delete it */ AcpiUtRemoveReference (PreviousWalkState->ReturnDesc); } if (PreviousWalkState->ImplicitReturnObj) { /* Caller doesn't want it, must delete it */ AcpiUtRemoveReference (PreviousWalkState->ImplicitReturnObj); } } AcpiDsDeleteWalkState (PreviousWalkState); } /* Normal exit */ AcpiExReleaseAllMutexes (Thread); AcpiUtDeleteGenericState (ACPI_CAST_PTR (ACPI_GENERIC_STATE, Thread)); AcpiGbl_CurrentWalkList = PrevWalkList; return_ACPI_STATUS (Status); } src/acpica/source/components/parser/psscope.c000066400000000000000000000312501231470457100216730ustar00rootroot00000000000000/****************************************************************************** * * Module Name: psscope - Parser scope stack management routines * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #include "acpi.h" #include "accommon.h" #include "acparser.h" #define _COMPONENT ACPI_PARSER ACPI_MODULE_NAME ("psscope") /******************************************************************************* * * FUNCTION: AcpiPsGetParentScope * * PARAMETERS: ParserState - Current parser state object * * RETURN: Pointer to an Op object * * DESCRIPTION: Get parent of current op being parsed * ******************************************************************************/ ACPI_PARSE_OBJECT * AcpiPsGetParentScope ( ACPI_PARSE_STATE *ParserState) { return (ParserState->Scope->ParseScope.Op); } /******************************************************************************* * * FUNCTION: AcpiPsHasCompletedScope * * PARAMETERS: ParserState - Current parser state object * * RETURN: Boolean, TRUE = scope completed. * * DESCRIPTION: Is parsing of current argument complete? Determined by * 1) AML pointer is at or beyond the end of the scope * 2) The scope argument count has reached zero. * ******************************************************************************/ BOOLEAN AcpiPsHasCompletedScope ( ACPI_PARSE_STATE *ParserState) { return ((BOOLEAN) ((ParserState->Aml >= ParserState->Scope->ParseScope.ArgEnd || !ParserState->Scope->ParseScope.ArgCount))); } /******************************************************************************* * * FUNCTION: AcpiPsInitScope * * PARAMETERS: ParserState - Current parser state object * Root - the Root Node of this new scope * * RETURN: Status * * DESCRIPTION: Allocate and init a new scope object * ******************************************************************************/ ACPI_STATUS AcpiPsInitScope ( ACPI_PARSE_STATE *ParserState, ACPI_PARSE_OBJECT *RootOp) { ACPI_GENERIC_STATE *Scope; ACPI_FUNCTION_TRACE_PTR (PsInitScope, RootOp); Scope = AcpiUtCreateGenericState (); if (!Scope) { return_ACPI_STATUS (AE_NO_MEMORY); } Scope->Common.DescriptorType = ACPI_DESC_TYPE_STATE_RPSCOPE; Scope->ParseScope.Op = RootOp; Scope->ParseScope.ArgCount = ACPI_VAR_ARGS; Scope->ParseScope.ArgEnd = ParserState->AmlEnd; Scope->ParseScope.PkgEnd = ParserState->AmlEnd; ParserState->Scope = Scope; ParserState->StartOp = RootOp; return_ACPI_STATUS (AE_OK); } /******************************************************************************* * * FUNCTION: AcpiPsPushScope * * PARAMETERS: ParserState - Current parser state object * Op - Current op to be pushed * RemainingArgs - List of args remaining * ArgCount - Fixed or variable number of args * * RETURN: Status * * DESCRIPTION: Push current op to begin parsing its argument * ******************************************************************************/ ACPI_STATUS AcpiPsPushScope ( ACPI_PARSE_STATE *ParserState, ACPI_PARSE_OBJECT *Op, UINT32 RemainingArgs, UINT32 ArgCount) { ACPI_GENERIC_STATE *Scope; ACPI_FUNCTION_TRACE_PTR (PsPushScope, Op); Scope = AcpiUtCreateGenericState (); if (!Scope) { return_ACPI_STATUS (AE_NO_MEMORY); } Scope->Common.DescriptorType = ACPI_DESC_TYPE_STATE_PSCOPE; Scope->ParseScope.Op = Op; Scope->ParseScope.ArgList = RemainingArgs; Scope->ParseScope.ArgCount = ArgCount; Scope->ParseScope.PkgEnd = ParserState->PkgEnd; /* Push onto scope stack */ AcpiUtPushGenericState (&ParserState->Scope, Scope); if (ArgCount == ACPI_VAR_ARGS) { /* Multiple arguments */ Scope->ParseScope.ArgEnd = ParserState->PkgEnd; } else { /* Single argument */ Scope->ParseScope.ArgEnd = ACPI_TO_POINTER (ACPI_MAX_PTR); } return_ACPI_STATUS (AE_OK); } /******************************************************************************* * * FUNCTION: AcpiPsPopScope * * PARAMETERS: ParserState - Current parser state object * Op - Where the popped op is returned * ArgList - Where the popped "next argument" is * returned * ArgCount - Count of objects in ArgList * * RETURN: Status * * DESCRIPTION: Return to parsing a previous op * ******************************************************************************/ void AcpiPsPopScope ( ACPI_PARSE_STATE *ParserState, ACPI_PARSE_OBJECT **Op, UINT32 *ArgList, UINT32 *ArgCount) { ACPI_GENERIC_STATE *Scope = ParserState->Scope; ACPI_FUNCTION_TRACE (PsPopScope); /* Only pop the scope if there is in fact a next scope */ if (Scope->Common.Next) { Scope = AcpiUtPopGenericState (&ParserState->Scope); /* Return to parsing previous op */ *Op = Scope->ParseScope.Op; *ArgList = Scope->ParseScope.ArgList; *ArgCount = Scope->ParseScope.ArgCount; ParserState->PkgEnd = Scope->ParseScope.PkgEnd; /* All done with this scope state structure */ AcpiUtDeleteGenericState (Scope); } else { /* Empty parse stack, prepare to fetch next opcode */ *Op = NULL; *ArgList = 0; *ArgCount = 0; } ACPI_DEBUG_PRINT ((ACPI_DB_PARSE, "Popped Op %p Args %X\n", *Op, *ArgCount)); return_VOID; } /******************************************************************************* * * FUNCTION: AcpiPsCleanupScope * * PARAMETERS: ParserState - Current parser state object * * RETURN: None * * DESCRIPTION: Destroy available list, remaining stack levels, and return * root scope * ******************************************************************************/ void AcpiPsCleanupScope ( ACPI_PARSE_STATE *ParserState) { ACPI_GENERIC_STATE *Scope; ACPI_FUNCTION_TRACE_PTR (PsCleanupScope, ParserState); if (!ParserState) { return_VOID; } /* Delete anything on the scope stack */ while (ParserState->Scope) { Scope = AcpiUtPopGenericState (&ParserState->Scope); AcpiUtDeleteGenericState (Scope); } return_VOID; } src/acpica/source/components/parser/pstree.c000066400000000000000000000310731231470457100215240ustar00rootroot00000000000000/****************************************************************************** * * Module Name: pstree - Parser op tree manipulation/traversal/search * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #define __PSTREE_C__ #include "acpi.h" #include "accommon.h" #include "acparser.h" #include "amlcode.h" #define _COMPONENT ACPI_PARSER ACPI_MODULE_NAME ("pstree") /* Local prototypes */ #ifdef ACPI_OBSOLETE_FUNCTIONS ACPI_PARSE_OBJECT * AcpiPsGetChild ( ACPI_PARSE_OBJECT *op); #endif /******************************************************************************* * * FUNCTION: AcpiPsGetArg * * PARAMETERS: Op - Get an argument for this op * Argn - Nth argument to get * * RETURN: The argument (as an Op object). NULL if argument does not exist * * DESCRIPTION: Get the specified op's argument. * ******************************************************************************/ ACPI_PARSE_OBJECT * AcpiPsGetArg ( ACPI_PARSE_OBJECT *Op, UINT32 Argn) { ACPI_PARSE_OBJECT *Arg = NULL; const ACPI_OPCODE_INFO *OpInfo; ACPI_FUNCTION_ENTRY (); /* if (Op->Common.AmlOpcode == AML_INT_CONNECTION_OP) { return (Op->Common.Value.Arg); } */ /* Get the info structure for this opcode */ OpInfo = AcpiPsGetOpcodeInfo (Op->Common.AmlOpcode); if (OpInfo->Class == AML_CLASS_UNKNOWN) { /* Invalid opcode or ASCII character */ return (NULL); } /* Check if this opcode requires argument sub-objects */ if (!(OpInfo->Flags & AML_HAS_ARGS)) { /* Has no linked argument objects */ return (NULL); } /* Get the requested argument object */ Arg = Op->Common.Value.Arg; while (Arg && Argn) { Argn--; Arg = Arg->Common.Next; } return (Arg); } /******************************************************************************* * * FUNCTION: AcpiPsAppendArg * * PARAMETERS: Op - Append an argument to this Op. * Arg - Argument Op to append * * RETURN: None. * * DESCRIPTION: Append an argument to an op's argument list (a NULL arg is OK) * ******************************************************************************/ void AcpiPsAppendArg ( ACPI_PARSE_OBJECT *Op, ACPI_PARSE_OBJECT *Arg) { ACPI_PARSE_OBJECT *PrevArg; const ACPI_OPCODE_INFO *OpInfo; ACPI_FUNCTION_ENTRY (); if (!Op) { return; } /* Get the info structure for this opcode */ OpInfo = AcpiPsGetOpcodeInfo (Op->Common.AmlOpcode); if (OpInfo->Class == AML_CLASS_UNKNOWN) { /* Invalid opcode */ ACPI_ERROR ((AE_INFO, "Invalid AML Opcode: 0x%2.2X", Op->Common.AmlOpcode)); return; } /* Check if this opcode requires argument sub-objects */ if (!(OpInfo->Flags & AML_HAS_ARGS)) { /* Has no linked argument objects */ return; } /* Append the argument to the linked argument list */ if (Op->Common.Value.Arg) { /* Append to existing argument list */ PrevArg = Op->Common.Value.Arg; while (PrevArg->Common.Next) { PrevArg = PrevArg->Common.Next; } PrevArg->Common.Next = Arg; } else { /* No argument list, this will be the first argument */ Op->Common.Value.Arg = Arg; } /* Set the parent in this arg and any args linked after it */ while (Arg) { Arg->Common.Parent = Op; Arg = Arg->Common.Next; Op->Common.ArgListLength++; } } /******************************************************************************* * * FUNCTION: AcpiPsGetDepthNext * * PARAMETERS: Origin - Root of subtree to search * Op - Last (previous) Op that was found * * RETURN: Next Op found in the search. * * DESCRIPTION: Get next op in tree (walking the tree in depth-first order) * Return NULL when reaching "origin" or when walking up from root * ******************************************************************************/ ACPI_PARSE_OBJECT * AcpiPsGetDepthNext ( ACPI_PARSE_OBJECT *Origin, ACPI_PARSE_OBJECT *Op) { ACPI_PARSE_OBJECT *Next = NULL; ACPI_PARSE_OBJECT *Parent; ACPI_PARSE_OBJECT *Arg; ACPI_FUNCTION_ENTRY (); if (!Op) { return (NULL); } /* Look for an argument or child */ Next = AcpiPsGetArg (Op, 0); if (Next) { return (Next); } /* Look for a sibling */ Next = Op->Common.Next; if (Next) { return (Next); } /* Look for a sibling of parent */ Parent = Op->Common.Parent; while (Parent) { Arg = AcpiPsGetArg (Parent, 0); while (Arg && (Arg != Origin) && (Arg != Op)) { Arg = Arg->Common.Next; } if (Arg == Origin) { /* Reached parent of origin, end search */ return (NULL); } if (Parent->Common.Next) { /* Found sibling of parent */ return (Parent->Common.Next); } Op = Parent; Parent = Parent->Common.Parent; } return (Next); } #ifdef ACPI_OBSOLETE_FUNCTIONS /******************************************************************************* * * FUNCTION: AcpiPsGetChild * * PARAMETERS: Op - Get the child of this Op * * RETURN: Child Op, Null if none is found. * * DESCRIPTION: Get op's children or NULL if none * ******************************************************************************/ ACPI_PARSE_OBJECT * AcpiPsGetChild ( ACPI_PARSE_OBJECT *Op) { ACPI_PARSE_OBJECT *Child = NULL; ACPI_FUNCTION_ENTRY (); switch (Op->Common.AmlOpcode) { case AML_SCOPE_OP: case AML_ELSE_OP: case AML_DEVICE_OP: case AML_THERMAL_ZONE_OP: case AML_INT_METHODCALL_OP: Child = AcpiPsGetArg (Op, 0); break; case AML_BUFFER_OP: case AML_PACKAGE_OP: case AML_METHOD_OP: case AML_IF_OP: case AML_WHILE_OP: case AML_FIELD_OP: Child = AcpiPsGetArg (Op, 1); break; case AML_POWER_RES_OP: case AML_INDEX_FIELD_OP: Child = AcpiPsGetArg (Op, 2); break; case AML_PROCESSOR_OP: case AML_BANK_FIELD_OP: Child = AcpiPsGetArg (Op, 3); break; default: /* All others have no children */ break; } return (Child); } #endif src/acpica/source/components/parser/psutils.c000066400000000000000000000263541231470457100217330ustar00rootroot00000000000000/****************************************************************************** * * Module Name: psutils - Parser miscellaneous utilities (Parser only) * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #include "acpi.h" #include "accommon.h" #include "acparser.h" #include "amlcode.h" #define _COMPONENT ACPI_PARSER ACPI_MODULE_NAME ("psutils") /******************************************************************************* * * FUNCTION: AcpiPsCreateScopeOp * * PARAMETERS: None * * RETURN: A new Scope object, null on failure * * DESCRIPTION: Create a Scope and associated namepath op with the root name * ******************************************************************************/ ACPI_PARSE_OBJECT * AcpiPsCreateScopeOp ( void) { ACPI_PARSE_OBJECT *ScopeOp; ScopeOp = AcpiPsAllocOp (AML_SCOPE_OP); if (!ScopeOp) { return (NULL); } ScopeOp->Named.Name = ACPI_ROOT_NAME; return (ScopeOp); } /******************************************************************************* * * FUNCTION: AcpiPsInitOp * * PARAMETERS: Op - A newly allocated Op object * Opcode - Opcode to store in the Op * * RETURN: None * * DESCRIPTION: Initialize a parse (Op) object * ******************************************************************************/ void AcpiPsInitOp ( ACPI_PARSE_OBJECT *Op, UINT16 Opcode) { ACPI_FUNCTION_ENTRY (); Op->Common.DescriptorType = ACPI_DESC_TYPE_PARSER; Op->Common.AmlOpcode = Opcode; ACPI_DISASM_ONLY_MEMBERS (ACPI_STRNCPY (Op->Common.AmlOpName, (AcpiPsGetOpcodeInfo (Opcode))->Name, sizeof (Op->Common.AmlOpName))); } /******************************************************************************* * * FUNCTION: AcpiPsAllocOp * * PARAMETERS: Opcode - Opcode that will be stored in the new Op * * RETURN: Pointer to the new Op, null on failure * * DESCRIPTION: Allocate an acpi_op, choose op type (and thus size) based on * opcode. A cache of opcodes is available for the pure * GENERIC_OP, since this is by far the most commonly used. * ******************************************************************************/ ACPI_PARSE_OBJECT* AcpiPsAllocOp ( UINT16 Opcode) { ACPI_PARSE_OBJECT *Op; const ACPI_OPCODE_INFO *OpInfo; UINT8 Flags = ACPI_PARSEOP_GENERIC; ACPI_FUNCTION_ENTRY (); OpInfo = AcpiPsGetOpcodeInfo (Opcode); /* Determine type of ParseOp required */ if (OpInfo->Flags & AML_DEFER) { Flags = ACPI_PARSEOP_DEFERRED; } else if (OpInfo->Flags & AML_NAMED) { Flags = ACPI_PARSEOP_NAMED; } else if (Opcode == AML_INT_BYTELIST_OP) { Flags = ACPI_PARSEOP_BYTELIST; } /* Allocate the minimum required size object */ if (Flags == ACPI_PARSEOP_GENERIC) { /* The generic op (default) is by far the most common (16 to 1) */ Op = AcpiOsAcquireObject (AcpiGbl_PsNodeCache); } else { /* Extended parseop */ Op = AcpiOsAcquireObject (AcpiGbl_PsNodeExtCache); } /* Initialize the Op */ if (Op) { AcpiPsInitOp (Op, Opcode); Op->Common.Flags = Flags; } return (Op); } /******************************************************************************* * * FUNCTION: AcpiPsFreeOp * * PARAMETERS: Op - Op to be freed * * RETURN: None. * * DESCRIPTION: Free an Op object. Either put it on the GENERIC_OP cache list * or actually free it. * ******************************************************************************/ void AcpiPsFreeOp ( ACPI_PARSE_OBJECT *Op) { ACPI_FUNCTION_NAME (PsFreeOp); if (Op->Common.AmlOpcode == AML_INT_RETURN_VALUE_OP) { ACPI_DEBUG_PRINT ((ACPI_DB_ALLOCATIONS, "Free retval op: %p\n", Op)); } if (Op->Common.Flags & ACPI_PARSEOP_GENERIC) { (void) AcpiOsReleaseObject (AcpiGbl_PsNodeCache, Op); } else { (void) AcpiOsReleaseObject (AcpiGbl_PsNodeExtCache, Op); } } /******************************************************************************* * * FUNCTION: Utility functions * * DESCRIPTION: Low level character and object functions * ******************************************************************************/ /* * Is "c" a namestring lead character? */ BOOLEAN AcpiPsIsLeadingChar ( UINT32 c) { return ((BOOLEAN) (c == '_' || (c >= 'A' && c <= 'Z'))); } /* * Get op's name (4-byte name segment) or 0 if unnamed */ UINT32 AcpiPsGetName ( ACPI_PARSE_OBJECT *Op) { /* The "generic" object has no name associated with it */ if (Op->Common.Flags & ACPI_PARSEOP_GENERIC) { return (0); } /* Only the "Extended" parse objects have a name */ return (Op->Named.Name); } /* * Set op's name */ void AcpiPsSetName ( ACPI_PARSE_OBJECT *Op, UINT32 name) { /* The "generic" object has no name associated with it */ if (Op->Common.Flags & ACPI_PARSEOP_GENERIC) { return; } Op->Named.Name = name; } src/acpica/source/components/parser/pswalk.c000066400000000000000000000175471231470457100215350ustar00rootroot00000000000000/****************************************************************************** * * Module Name: pswalk - Parser routines to walk parsed op tree(s) * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #include "acpi.h" #include "accommon.h" #include "acparser.h" #define _COMPONENT ACPI_PARSER ACPI_MODULE_NAME ("pswalk") /******************************************************************************* * * FUNCTION: AcpiPsDeleteParseTree * * PARAMETERS: SubtreeRoot - Root of tree (or subtree) to delete * * RETURN: None * * DESCRIPTION: Delete a portion of or an entire parse tree. * ******************************************************************************/ void AcpiPsDeleteParseTree ( ACPI_PARSE_OBJECT *SubtreeRoot) { ACPI_PARSE_OBJECT *Op = SubtreeRoot; ACPI_PARSE_OBJECT *Next = NULL; ACPI_PARSE_OBJECT *Parent = NULL; ACPI_FUNCTION_TRACE_PTR (PsDeleteParseTree, SubtreeRoot); /* Visit all nodes in the subtree */ while (Op) { /* Check if we are not ascending */ if (Op != Parent) { /* Look for an argument or child of the current op */ Next = AcpiPsGetArg (Op, 0); if (Next) { /* Still going downward in tree (Op is not completed yet) */ Op = Next; continue; } } /* No more children, this Op is complete. */ Next = Op->Common.Next; Parent = Op->Common.Parent; AcpiPsFreeOp (Op); /* If we are back to the starting point, the walk is complete. */ if (Op == SubtreeRoot) { return_VOID; } if (Next) { Op = Next; } else { Op = Parent; } } return_VOID; } src/acpica/source/components/parser/psxface.c000066400000000000000000000375641231470457100216660ustar00rootroot00000000000000/****************************************************************************** * * Module Name: psxface - Parser external interfaces * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #define __PSXFACE_C__ #include "acpi.h" #include "accommon.h" #include "acparser.h" #include "acdispat.h" #include "acinterp.h" #include "actables.h" #define _COMPONENT ACPI_PARSER ACPI_MODULE_NAME ("psxface") /* Local Prototypes */ static void AcpiPsStartTrace ( ACPI_EVALUATE_INFO *Info); static void AcpiPsStopTrace ( ACPI_EVALUATE_INFO *Info); static void AcpiPsUpdateParameterList ( ACPI_EVALUATE_INFO *Info, UINT16 Action); /******************************************************************************* * * FUNCTION: AcpiDebugTrace * * PARAMETERS: MethodName - Valid ACPI name string * DebugLevel - Optional level mask. 0 to use default * DebugLayer - Optional layer mask. 0 to use default * Flags - bit 1: one shot(1) or persistent(0) * * RETURN: Status * * DESCRIPTION: External interface to enable debug tracing during control * method execution * ******************************************************************************/ ACPI_STATUS AcpiDebugTrace ( char *Name, UINT32 DebugLevel, UINT32 DebugLayer, UINT32 Flags) { ACPI_STATUS Status; Status = AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); if (ACPI_FAILURE (Status)) { return (Status); } /* TBDs: Validate name, allow full path or just nameseg */ AcpiGbl_TraceMethodName = *ACPI_CAST_PTR (UINT32, Name); AcpiGbl_TraceFlags = Flags; if (DebugLevel) { AcpiGbl_TraceDbgLevel = DebugLevel; } if (DebugLayer) { AcpiGbl_TraceDbgLayer = DebugLayer; } (void) AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); return (AE_OK); } /******************************************************************************* * * FUNCTION: AcpiPsStartTrace * * PARAMETERS: Info - Method info struct * * RETURN: None * * DESCRIPTION: Start control method execution trace * ******************************************************************************/ static void AcpiPsStartTrace ( ACPI_EVALUATE_INFO *Info) { ACPI_STATUS Status; ACPI_FUNCTION_ENTRY (); Status = AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); if (ACPI_FAILURE (Status)) { return; } if ((!AcpiGbl_TraceMethodName) || (AcpiGbl_TraceMethodName != Info->Node->Name.Integer)) { goto Exit; } AcpiGbl_OriginalDbgLevel = AcpiDbgLevel; AcpiGbl_OriginalDbgLayer = AcpiDbgLayer; AcpiDbgLevel = 0x00FFFFFF; AcpiDbgLayer = ACPI_UINT32_MAX; if (AcpiGbl_TraceDbgLevel) { AcpiDbgLevel = AcpiGbl_TraceDbgLevel; } if (AcpiGbl_TraceDbgLayer) { AcpiDbgLayer = AcpiGbl_TraceDbgLayer; } Exit: (void) AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); } /******************************************************************************* * * FUNCTION: AcpiPsStopTrace * * PARAMETERS: Info - Method info struct * * RETURN: None * * DESCRIPTION: Stop control method execution trace * ******************************************************************************/ static void AcpiPsStopTrace ( ACPI_EVALUATE_INFO *Info) { ACPI_STATUS Status; ACPI_FUNCTION_ENTRY (); Status = AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); if (ACPI_FAILURE (Status)) { return; } if ((!AcpiGbl_TraceMethodName) || (AcpiGbl_TraceMethodName != Info->Node->Name.Integer)) { goto Exit; } /* Disable further tracing if type is one-shot */ if (AcpiGbl_TraceFlags & 1) { AcpiGbl_TraceMethodName = 0; AcpiGbl_TraceDbgLevel = 0; AcpiGbl_TraceDbgLayer = 0; } AcpiDbgLevel = AcpiGbl_OriginalDbgLevel; AcpiDbgLayer = AcpiGbl_OriginalDbgLayer; Exit: (void) AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); } /******************************************************************************* * * FUNCTION: AcpiPsExecuteMethod * * PARAMETERS: Info - Method info block, contains: * Node - Method Node to execute * ObjDesc - Method object * Parameters - List of parameters to pass to the method, * terminated by NULL. Params itself may be * NULL if no parameters are being passed. * ReturnObject - Where to put method's return value (if * any). If NULL, no value is returned. * ParameterType - Type of Parameter list * ReturnObject - Where to put method's return value (if * any). If NULL, no value is returned. * PassNumber - Parse or execute pass * * RETURN: Status * * DESCRIPTION: Execute a control method * ******************************************************************************/ ACPI_STATUS AcpiPsExecuteMethod ( ACPI_EVALUATE_INFO *Info) { ACPI_STATUS Status; ACPI_PARSE_OBJECT *Op; ACPI_WALK_STATE *WalkState; ACPI_FUNCTION_TRACE (PsExecuteMethod); /* Quick validation of DSDT header */ AcpiTbCheckDsdtHeader (); /* Validate the Info and method Node */ if (!Info || !Info->Node) { return_ACPI_STATUS (AE_NULL_ENTRY); } /* Init for new method, wait on concurrency semaphore */ Status = AcpiDsBeginMethodExecution (Info->Node, Info->ObjDesc, NULL); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } /* * The caller "owns" the parameters, so give each one an extra reference */ AcpiPsUpdateParameterList (Info, REF_INCREMENT); /* Begin tracing if requested */ AcpiPsStartTrace (Info); /* * Execute the method. Performs parse simultaneously */ ACPI_DEBUG_PRINT ((ACPI_DB_PARSE, "**** Begin Method Parse/Execute [%4.4s] **** Node=%p Obj=%p\n", Info->Node->Name.Ascii, Info->Node, Info->ObjDesc)); /* Create and init a Root Node */ Op = AcpiPsCreateScopeOp (); if (!Op) { Status = AE_NO_MEMORY; goto Cleanup; } /* Create and initialize a new walk state */ Info->PassNumber = ACPI_IMODE_EXECUTE; WalkState = AcpiDsCreateWalkState ( Info->ObjDesc->Method.OwnerId, NULL, NULL, NULL); if (!WalkState) { Status = AE_NO_MEMORY; goto Cleanup; } Status = AcpiDsInitAmlWalk (WalkState, Op, Info->Node, Info->ObjDesc->Method.AmlStart, Info->ObjDesc->Method.AmlLength, Info, Info->PassNumber); if (ACPI_FAILURE (Status)) { AcpiDsDeleteWalkState (WalkState); goto Cleanup; } if (Info->ObjDesc->Method.InfoFlags & ACPI_METHOD_MODULE_LEVEL) { WalkState->ParseFlags |= ACPI_PARSE_MODULE_LEVEL; } /* Invoke an internal method if necessary */ if (Info->ObjDesc->Method.InfoFlags & ACPI_METHOD_INTERNAL_ONLY) { Status = Info->ObjDesc->Method.Dispatch.Implementation (WalkState); Info->ReturnObject = WalkState->ReturnDesc; /* Cleanup states */ AcpiDsScopeStackClear (WalkState); AcpiPsCleanupScope (&WalkState->ParserState); AcpiDsTerminateControlMethod (WalkState->MethodDesc, WalkState); AcpiDsDeleteWalkState (WalkState); goto Cleanup; } /* * Start method evaluation with an implicit return of zero. * This is done for Windows compatibility. */ if (AcpiGbl_EnableInterpreterSlack) { WalkState->ImplicitReturnObj = AcpiUtCreateIntegerObject ((UINT64) 0); if (!WalkState->ImplicitReturnObj) { Status = AE_NO_MEMORY; AcpiDsDeleteWalkState (WalkState); goto Cleanup; } } /* Parse the AML */ Status = AcpiPsParseAml (WalkState); /* WalkState was deleted by ParseAml */ Cleanup: AcpiPsDeleteParseTree (Op); /* End optional tracing */ AcpiPsStopTrace (Info); /* Take away the extra reference that we gave the parameters above */ AcpiPsUpdateParameterList (Info, REF_DECREMENT); /* Exit now if error above */ if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } /* * If the method has returned an object, signal this to the caller with * a control exception code */ if (Info->ReturnObject) { ACPI_DEBUG_PRINT ((ACPI_DB_PARSE, "Method returned ObjDesc=%p\n", Info->ReturnObject)); ACPI_DUMP_STACK_ENTRY (Info->ReturnObject); Status = AE_CTRL_RETURN_VALUE; } return_ACPI_STATUS (Status); } /******************************************************************************* * * FUNCTION: AcpiPsUpdateParameterList * * PARAMETERS: Info - See ACPI_EVALUATE_INFO * (Used: ParameterType and Parameters) * Action - Add or Remove reference * * RETURN: Status * * DESCRIPTION: Update reference count on all method parameter objects * ******************************************************************************/ static void AcpiPsUpdateParameterList ( ACPI_EVALUATE_INFO *Info, UINT16 Action) { UINT32 i; if (Info->Parameters) { /* Update reference count for each parameter */ for (i = 0; Info->Parameters[i]; i++) { /* Ignore errors, just do them all */ (void) AcpiUtUpdateObjectReference (Info->Parameters[i], Action); } } } src/acpica/source/components/resources/000077500000000000000000000000001231470457100205705ustar00rootroot00000000000000src/acpica/source/components/resources/rsaddr.c000066400000000000000000000433511231470457100222210ustar00rootroot00000000000000/******************************************************************************* * * Module Name: rsaddr - Address resource descriptors (16/32/64) * ******************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #define __RSADDR_C__ #include "acpi.h" #include "accommon.h" #include "acresrc.h" #define _COMPONENT ACPI_RESOURCES ACPI_MODULE_NAME ("rsaddr") /******************************************************************************* * * AcpiRsConvertAddress16 - All WORD (16-bit) address resources * ******************************************************************************/ ACPI_RSCONVERT_INFO AcpiRsConvertAddress16[5] = { {ACPI_RSC_INITGET, ACPI_RESOURCE_TYPE_ADDRESS16, ACPI_RS_SIZE (ACPI_RESOURCE_ADDRESS16), ACPI_RSC_TABLE_SIZE (AcpiRsConvertAddress16)}, {ACPI_RSC_INITSET, ACPI_RESOURCE_NAME_ADDRESS16, sizeof (AML_RESOURCE_ADDRESS16), 0}, /* Resource Type, General Flags, and Type-Specific Flags */ {ACPI_RSC_ADDRESS, 0, 0, 0}, /* * These fields are contiguous in both the source and destination: * Address Granularity * Address Range Minimum * Address Range Maximum * Address Translation Offset * Address Length */ {ACPI_RSC_MOVE16, ACPI_RS_OFFSET (Data.Address16.Granularity), AML_OFFSET (Address16.Granularity), 5}, /* Optional ResourceSource (Index and String) */ {ACPI_RSC_SOURCE, ACPI_RS_OFFSET (Data.Address16.ResourceSource), 0, sizeof (AML_RESOURCE_ADDRESS16)} }; /******************************************************************************* * * AcpiRsConvertAddress32 - All DWORD (32-bit) address resources * ******************************************************************************/ ACPI_RSCONVERT_INFO AcpiRsConvertAddress32[5] = { {ACPI_RSC_INITGET, ACPI_RESOURCE_TYPE_ADDRESS32, ACPI_RS_SIZE (ACPI_RESOURCE_ADDRESS32), ACPI_RSC_TABLE_SIZE (AcpiRsConvertAddress32)}, {ACPI_RSC_INITSET, ACPI_RESOURCE_NAME_ADDRESS32, sizeof (AML_RESOURCE_ADDRESS32), 0}, /* Resource Type, General Flags, and Type-Specific Flags */ {ACPI_RSC_ADDRESS, 0, 0, 0}, /* * These fields are contiguous in both the source and destination: * Address Granularity * Address Range Minimum * Address Range Maximum * Address Translation Offset * Address Length */ {ACPI_RSC_MOVE32, ACPI_RS_OFFSET (Data.Address32.Granularity), AML_OFFSET (Address32.Granularity), 5}, /* Optional ResourceSource (Index and String) */ {ACPI_RSC_SOURCE, ACPI_RS_OFFSET (Data.Address32.ResourceSource), 0, sizeof (AML_RESOURCE_ADDRESS32)} }; /******************************************************************************* * * AcpiRsConvertAddress64 - All QWORD (64-bit) address resources * ******************************************************************************/ ACPI_RSCONVERT_INFO AcpiRsConvertAddress64[5] = { {ACPI_RSC_INITGET, ACPI_RESOURCE_TYPE_ADDRESS64, ACPI_RS_SIZE (ACPI_RESOURCE_ADDRESS64), ACPI_RSC_TABLE_SIZE (AcpiRsConvertAddress64)}, {ACPI_RSC_INITSET, ACPI_RESOURCE_NAME_ADDRESS64, sizeof (AML_RESOURCE_ADDRESS64), 0}, /* Resource Type, General Flags, and Type-Specific Flags */ {ACPI_RSC_ADDRESS, 0, 0, 0}, /* * These fields are contiguous in both the source and destination: * Address Granularity * Address Range Minimum * Address Range Maximum * Address Translation Offset * Address Length */ {ACPI_RSC_MOVE64, ACPI_RS_OFFSET (Data.Address64.Granularity), AML_OFFSET (Address64.Granularity), 5}, /* Optional ResourceSource (Index and String) */ {ACPI_RSC_SOURCE, ACPI_RS_OFFSET (Data.Address64.ResourceSource), 0, sizeof (AML_RESOURCE_ADDRESS64)} }; /******************************************************************************* * * AcpiRsConvertExtAddress64 - All Extended (64-bit) address resources * ******************************************************************************/ ACPI_RSCONVERT_INFO AcpiRsConvertExtAddress64[5] = { {ACPI_RSC_INITGET, ACPI_RESOURCE_TYPE_EXTENDED_ADDRESS64, ACPI_RS_SIZE (ACPI_RESOURCE_EXTENDED_ADDRESS64), ACPI_RSC_TABLE_SIZE (AcpiRsConvertExtAddress64)}, {ACPI_RSC_INITSET, ACPI_RESOURCE_NAME_EXTENDED_ADDRESS64, sizeof (AML_RESOURCE_EXTENDED_ADDRESS64), 0}, /* Resource Type, General Flags, and Type-Specific Flags */ {ACPI_RSC_ADDRESS, 0, 0, 0}, /* Revision ID */ {ACPI_RSC_MOVE8, ACPI_RS_OFFSET (Data.ExtAddress64.RevisionID), AML_OFFSET (ExtAddress64.RevisionID), 1}, /* * These fields are contiguous in both the source and destination: * Address Granularity * Address Range Minimum * Address Range Maximum * Address Translation Offset * Address Length * Type-Specific Attribute */ {ACPI_RSC_MOVE64, ACPI_RS_OFFSET (Data.ExtAddress64.Granularity), AML_OFFSET (ExtAddress64.Granularity), 6} }; /******************************************************************************* * * AcpiRsConvertGeneralFlags - Flags common to all address descriptors * ******************************************************************************/ static ACPI_RSCONVERT_INFO AcpiRsConvertGeneralFlags[6] = { {ACPI_RSC_FLAGINIT, 0, AML_OFFSET (Address.Flags), ACPI_RSC_TABLE_SIZE (AcpiRsConvertGeneralFlags)}, /* Resource Type (Memory, Io, BusNumber, etc.) */ {ACPI_RSC_MOVE8, ACPI_RS_OFFSET (Data.Address.ResourceType), AML_OFFSET (Address.ResourceType), 1}, /* General Flags - Consume, Decode, MinFixed, MaxFixed */ {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.Address.ProducerConsumer), AML_OFFSET (Address.Flags), 0}, {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.Address.Decode), AML_OFFSET (Address.Flags), 1}, {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.Address.MinAddressFixed), AML_OFFSET (Address.Flags), 2}, {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.Address.MaxAddressFixed), AML_OFFSET (Address.Flags), 3} }; /******************************************************************************* * * AcpiRsConvertMemFlags - Flags common to Memory address descriptors * ******************************************************************************/ static ACPI_RSCONVERT_INFO AcpiRsConvertMemFlags[5] = { {ACPI_RSC_FLAGINIT, 0, AML_OFFSET (Address.SpecificFlags), ACPI_RSC_TABLE_SIZE (AcpiRsConvertMemFlags)}, /* Memory-specific flags */ {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.Address.Info.Mem.WriteProtect), AML_OFFSET (Address.SpecificFlags), 0}, {ACPI_RSC_2BITFLAG, ACPI_RS_OFFSET (Data.Address.Info.Mem.Caching), AML_OFFSET (Address.SpecificFlags), 1}, {ACPI_RSC_2BITFLAG, ACPI_RS_OFFSET (Data.Address.Info.Mem.RangeType), AML_OFFSET (Address.SpecificFlags), 3}, {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.Address.Info.Mem.Translation), AML_OFFSET (Address.SpecificFlags), 5} }; /******************************************************************************* * * AcpiRsConvertIoFlags - Flags common to I/O address descriptors * ******************************************************************************/ static ACPI_RSCONVERT_INFO AcpiRsConvertIoFlags[4] = { {ACPI_RSC_FLAGINIT, 0, AML_OFFSET (Address.SpecificFlags), ACPI_RSC_TABLE_SIZE (AcpiRsConvertIoFlags)}, /* I/O-specific flags */ {ACPI_RSC_2BITFLAG, ACPI_RS_OFFSET (Data.Address.Info.Io.RangeType), AML_OFFSET (Address.SpecificFlags), 0}, {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.Address.Info.Io.Translation), AML_OFFSET (Address.SpecificFlags), 4}, {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.Address.Info.Io.TranslationType), AML_OFFSET (Address.SpecificFlags), 5} }; /******************************************************************************* * * FUNCTION: AcpiRsGetAddressCommon * * PARAMETERS: Resource - Pointer to the internal resource struct * Aml - Pointer to the AML resource descriptor * * RETURN: TRUE if the ResourceType field is OK, FALSE otherwise * * DESCRIPTION: Convert common flag fields from a raw AML resource descriptor * to an internal resource descriptor * ******************************************************************************/ BOOLEAN AcpiRsGetAddressCommon ( ACPI_RESOURCE *Resource, AML_RESOURCE *Aml) { ACPI_FUNCTION_ENTRY (); /* Validate the Resource Type */ if ((Aml->Address.ResourceType > 2) && (Aml->Address.ResourceType < 0xC0)) { return (FALSE); } /* Get the Resource Type and General Flags */ (void) AcpiRsConvertAmlToResource (Resource, Aml, AcpiRsConvertGeneralFlags); /* Get the Type-Specific Flags (Memory and I/O descriptors only) */ if (Resource->Data.Address.ResourceType == ACPI_MEMORY_RANGE) { (void) AcpiRsConvertAmlToResource (Resource, Aml, AcpiRsConvertMemFlags); } else if (Resource->Data.Address.ResourceType == ACPI_IO_RANGE) { (void) AcpiRsConvertAmlToResource (Resource, Aml, AcpiRsConvertIoFlags); } else { /* Generic resource type, just grab the TypeSpecific byte */ Resource->Data.Address.Info.TypeSpecific = Aml->Address.SpecificFlags; } return (TRUE); } /******************************************************************************* * * FUNCTION: AcpiRsSetAddressCommon * * PARAMETERS: Aml - Pointer to the AML resource descriptor * Resource - Pointer to the internal resource struct * * RETURN: None * * DESCRIPTION: Convert common flag fields from a resource descriptor to an * AML descriptor * ******************************************************************************/ void AcpiRsSetAddressCommon ( AML_RESOURCE *Aml, ACPI_RESOURCE *Resource) { ACPI_FUNCTION_ENTRY (); /* Set the Resource Type and General Flags */ (void) AcpiRsConvertResourceToAml (Resource, Aml, AcpiRsConvertGeneralFlags); /* Set the Type-Specific Flags (Memory and I/O descriptors only) */ if (Resource->Data.Address.ResourceType == ACPI_MEMORY_RANGE) { (void) AcpiRsConvertResourceToAml (Resource, Aml, AcpiRsConvertMemFlags); } else if (Resource->Data.Address.ResourceType == ACPI_IO_RANGE) { (void) AcpiRsConvertResourceToAml (Resource, Aml, AcpiRsConvertIoFlags); } else { /* Generic resource type, just copy the TypeSpecific byte */ Aml->Address.SpecificFlags = Resource->Data.Address.Info.TypeSpecific; } } src/acpica/source/components/resources/rscalc.c000066400000000000000000000663131231470457100222140ustar00rootroot00000000000000/******************************************************************************* * * Module Name: rscalc - Calculate stream and list lengths * ******************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #define __RSCALC_C__ #include "acpi.h" #include "accommon.h" #include "acresrc.h" #include "acnamesp.h" #define _COMPONENT ACPI_RESOURCES ACPI_MODULE_NAME ("rscalc") /* Local prototypes */ static UINT8 AcpiRsCountSetBits ( UINT16 BitField); static ACPI_RS_LENGTH AcpiRsStructOptionLength ( ACPI_RESOURCE_SOURCE *ResourceSource); static UINT32 AcpiRsStreamOptionLength ( UINT32 ResourceLength, UINT32 MinimumTotalLength); /******************************************************************************* * * FUNCTION: AcpiRsCountSetBits * * PARAMETERS: BitField - Field in which to count bits * * RETURN: Number of bits set within the field * * DESCRIPTION: Count the number of bits set in a resource field. Used for * (Short descriptor) interrupt and DMA lists. * ******************************************************************************/ static UINT8 AcpiRsCountSetBits ( UINT16 BitField) { UINT8 BitsSet; ACPI_FUNCTION_ENTRY (); for (BitsSet = 0; BitField; BitsSet++) { /* Zero the least significant bit that is set */ BitField &= (UINT16) (BitField - 1); } return (BitsSet); } /******************************************************************************* * * FUNCTION: AcpiRsStructOptionLength * * PARAMETERS: ResourceSource - Pointer to optional descriptor field * * RETURN: Status * * DESCRIPTION: Common code to handle optional ResourceSourceIndex and * ResourceSource fields in some Large descriptors. Used during * list-to-stream conversion * ******************************************************************************/ static ACPI_RS_LENGTH AcpiRsStructOptionLength ( ACPI_RESOURCE_SOURCE *ResourceSource) { ACPI_FUNCTION_ENTRY (); /* * If the ResourceSource string is valid, return the size of the string * (StringLength includes the NULL terminator) plus the size of the * ResourceSourceIndex (1). */ if (ResourceSource->StringPtr) { return ((ACPI_RS_LENGTH) (ResourceSource->StringLength + 1)); } return (0); } /******************************************************************************* * * FUNCTION: AcpiRsStreamOptionLength * * PARAMETERS: ResourceLength - Length from the resource header * MinimumTotalLength - Minimum length of this resource, before * any optional fields. Includes header size * * RETURN: Length of optional string (0 if no string present) * * DESCRIPTION: Common code to handle optional ResourceSourceIndex and * ResourceSource fields in some Large descriptors. Used during * stream-to-list conversion * ******************************************************************************/ static UINT32 AcpiRsStreamOptionLength ( UINT32 ResourceLength, UINT32 MinimumAmlResourceLength) { UINT32 StringLength = 0; ACPI_FUNCTION_ENTRY (); /* * The ResourceSourceIndex and ResourceSource are optional elements of some * Large-type resource descriptors. */ /* * If the length of the actual resource descriptor is greater than the ACPI * spec-defined minimum length, it means that a ResourceSourceIndex exists * and is followed by a (required) null terminated string. The string length * (including the null terminator) is the resource length minus the minimum * length, minus one byte for the ResourceSourceIndex itself. */ if (ResourceLength > MinimumAmlResourceLength) { /* Compute the length of the optional string */ StringLength = ResourceLength - MinimumAmlResourceLength - 1; } /* * Round the length up to a multiple of the native word in order to * guarantee that the entire resource descriptor is native word aligned */ return ((UINT32) ACPI_ROUND_UP_TO_NATIVE_WORD (StringLength)); } /******************************************************************************* * * FUNCTION: AcpiRsGetAmlLength * * PARAMETERS: Resource - Pointer to the resource linked list * ResourceListSize - Size of the resource linked list * SizeNeeded - Where the required size is returned * * RETURN: Status * * DESCRIPTION: Takes a linked list of internal resource descriptors and * calculates the size buffer needed to hold the corresponding * external resource byte stream. * ******************************************************************************/ ACPI_STATUS AcpiRsGetAmlLength ( ACPI_RESOURCE *Resource, ACPI_SIZE ResourceListSize, ACPI_SIZE *SizeNeeded) { ACPI_SIZE AmlSizeNeeded = 0; ACPI_RESOURCE *ResourceEnd; ACPI_RS_LENGTH TotalSize; ACPI_FUNCTION_TRACE (RsGetAmlLength); /* Traverse entire list of internal resource descriptors */ ResourceEnd = ACPI_ADD_PTR (ACPI_RESOURCE, Resource, ResourceListSize); while (Resource < ResourceEnd) { /* Validate the descriptor type */ if (Resource->Type > ACPI_RESOURCE_TYPE_MAX) { return_ACPI_STATUS (AE_AML_INVALID_RESOURCE_TYPE); } /* Sanity check the length. It must not be zero, or we loop forever */ if (!Resource->Length) { return_ACPI_STATUS (AE_AML_BAD_RESOURCE_LENGTH); } /* Get the base size of the (external stream) resource descriptor */ TotalSize = AcpiGbl_AmlResourceSizes [Resource->Type]; /* * Augment the base size for descriptors with optional and/or * variable-length fields */ switch (Resource->Type) { case ACPI_RESOURCE_TYPE_IRQ: /* Length can be 3 or 2 */ if (Resource->Data.Irq.DescriptorLength == 2) { TotalSize--; } break; case ACPI_RESOURCE_TYPE_START_DEPENDENT: /* Length can be 1 or 0 */ if (Resource->Data.Irq.DescriptorLength == 0) { TotalSize--; } break; case ACPI_RESOURCE_TYPE_VENDOR: /* * Vendor Defined Resource: * For a Vendor Specific resource, if the Length is between 1 and 7 * it will be created as a Small Resource data type, otherwise it * is a Large Resource data type. */ if (Resource->Data.Vendor.ByteLength > 7) { /* Base size of a Large resource descriptor */ TotalSize = sizeof (AML_RESOURCE_LARGE_HEADER); } /* Add the size of the vendor-specific data */ TotalSize = (ACPI_RS_LENGTH) (TotalSize + Resource->Data.Vendor.ByteLength); break; case ACPI_RESOURCE_TYPE_END_TAG: /* * End Tag: * We are done -- return the accumulated total size. */ *SizeNeeded = AmlSizeNeeded + TotalSize; /* Normal exit */ return_ACPI_STATUS (AE_OK); case ACPI_RESOURCE_TYPE_ADDRESS16: /* * 16-Bit Address Resource: * Add the size of the optional ResourceSource info */ TotalSize = (ACPI_RS_LENGTH) (TotalSize + AcpiRsStructOptionLength ( &Resource->Data.Address16.ResourceSource)); break; case ACPI_RESOURCE_TYPE_ADDRESS32: /* * 32-Bit Address Resource: * Add the size of the optional ResourceSource info */ TotalSize = (ACPI_RS_LENGTH) (TotalSize + AcpiRsStructOptionLength ( &Resource->Data.Address32.ResourceSource)); break; case ACPI_RESOURCE_TYPE_ADDRESS64: /* * 64-Bit Address Resource: * Add the size of the optional ResourceSource info */ TotalSize = (ACPI_RS_LENGTH) (TotalSize + AcpiRsStructOptionLength ( &Resource->Data.Address64.ResourceSource)); break; case ACPI_RESOURCE_TYPE_EXTENDED_IRQ: /* * Extended IRQ Resource: * Add the size of each additional optional interrupt beyond the * required 1 (4 bytes for each UINT32 interrupt number) */ TotalSize = (ACPI_RS_LENGTH) (TotalSize + ((Resource->Data.ExtendedIrq.InterruptCount - 1) * 4) + /* Add the size of the optional ResourceSource info */ AcpiRsStructOptionLength ( &Resource->Data.ExtendedIrq.ResourceSource)); break; case ACPI_RESOURCE_TYPE_GPIO: TotalSize = (ACPI_RS_LENGTH) (TotalSize + (Resource->Data.Gpio.PinTableLength * 2) + Resource->Data.Gpio.ResourceSource.StringLength + Resource->Data.Gpio.VendorLength); break; case ACPI_RESOURCE_TYPE_SERIAL_BUS: TotalSize = AcpiGbl_AmlResourceSerialBusSizes [Resource->Data.CommonSerialBus.Type]; TotalSize = (ACPI_RS_LENGTH) (TotalSize + Resource->Data.I2cSerialBus.ResourceSource.StringLength + Resource->Data.I2cSerialBus.VendorLength); break; default: break; } /* Update the total */ AmlSizeNeeded += TotalSize; /* Point to the next object */ Resource = ACPI_ADD_PTR (ACPI_RESOURCE, Resource, Resource->Length); } /* Did not find an EndTag resource descriptor */ return_ACPI_STATUS (AE_AML_NO_RESOURCE_END_TAG); } /******************************************************************************* * * FUNCTION: AcpiRsGetListLength * * PARAMETERS: AmlBuffer - Pointer to the resource byte stream * AmlBufferLength - Size of AmlBuffer * SizeNeeded - Where the size needed is returned * * RETURN: Status * * DESCRIPTION: Takes an external resource byte stream and calculates the size * buffer needed to hold the corresponding internal resource * descriptor linked list. * ******************************************************************************/ ACPI_STATUS AcpiRsGetListLength ( UINT8 *AmlBuffer, UINT32 AmlBufferLength, ACPI_SIZE *SizeNeeded) { ACPI_STATUS Status; UINT8 *EndAml; UINT8 *Buffer; UINT32 BufferSize; UINT16 Temp16; UINT16 ResourceLength; UINT32 ExtraStructBytes; UINT8 ResourceIndex; UINT8 MinimumAmlResourceLength; AML_RESOURCE *AmlResource; ACPI_FUNCTION_TRACE (RsGetListLength); *SizeNeeded = ACPI_RS_SIZE_MIN; /* Minimum size is one EndTag */ EndAml = AmlBuffer + AmlBufferLength; /* Walk the list of AML resource descriptors */ while (AmlBuffer < EndAml) { /* Validate the Resource Type and Resource Length */ Status = AcpiUtValidateResource (NULL, AmlBuffer, &ResourceIndex); if (ACPI_FAILURE (Status)) { /* * Exit on failure. Cannot continue because the descriptor length * may be bogus also. */ return_ACPI_STATUS (Status); } AmlResource = (void *) AmlBuffer; /* Get the resource length and base (minimum) AML size */ ResourceLength = AcpiUtGetResourceLength (AmlBuffer); MinimumAmlResourceLength = AcpiGbl_ResourceAmlSizes[ResourceIndex]; /* * Augment the size for descriptors with optional * and/or variable length fields */ ExtraStructBytes = 0; Buffer = AmlBuffer + AcpiUtGetResourceHeaderLength (AmlBuffer); switch (AcpiUtGetResourceType (AmlBuffer)) { case ACPI_RESOURCE_NAME_IRQ: /* * IRQ Resource: * Get the number of bits set in the 16-bit IRQ mask */ ACPI_MOVE_16_TO_16 (&Temp16, Buffer); ExtraStructBytes = AcpiRsCountSetBits (Temp16); break; case ACPI_RESOURCE_NAME_DMA: /* * DMA Resource: * Get the number of bits set in the 8-bit DMA mask */ ExtraStructBytes = AcpiRsCountSetBits (*Buffer); break; case ACPI_RESOURCE_NAME_VENDOR_SMALL: case ACPI_RESOURCE_NAME_VENDOR_LARGE: /* * Vendor Resource: * Get the number of vendor data bytes */ ExtraStructBytes = ResourceLength; /* * There is already one byte included in the minimum * descriptor size. If there are extra struct bytes, * subtract one from the count. */ if (ExtraStructBytes) { ExtraStructBytes--; } break; case ACPI_RESOURCE_NAME_END_TAG: /* * End Tag: This is the normal exit */ return_ACPI_STATUS (AE_OK); case ACPI_RESOURCE_NAME_ADDRESS32: case ACPI_RESOURCE_NAME_ADDRESS16: case ACPI_RESOURCE_NAME_ADDRESS64: /* * Address Resource: * Add the size of the optional ResourceSource */ ExtraStructBytes = AcpiRsStreamOptionLength ( ResourceLength, MinimumAmlResourceLength); break; case ACPI_RESOURCE_NAME_EXTENDED_IRQ: /* * Extended IRQ Resource: * Using the InterruptTableLength, add 4 bytes for each additional * interrupt. Note: at least one interrupt is required and is * included in the minimum descriptor size (reason for the -1) */ ExtraStructBytes = (Buffer[1] - 1) * sizeof (UINT32); /* Add the size of the optional ResourceSource */ ExtraStructBytes += AcpiRsStreamOptionLength ( ResourceLength - ExtraStructBytes, MinimumAmlResourceLength); break; case ACPI_RESOURCE_NAME_GPIO: /* Vendor data is optional */ if (AmlResource->Gpio.VendorLength) { ExtraStructBytes += AmlResource->Gpio.VendorOffset - AmlResource->Gpio.PinTableOffset + AmlResource->Gpio.VendorLength; } else { ExtraStructBytes += AmlResource->LargeHeader.ResourceLength + sizeof (AML_RESOURCE_LARGE_HEADER) - AmlResource->Gpio.PinTableOffset; } break; case ACPI_RESOURCE_NAME_SERIAL_BUS: MinimumAmlResourceLength = AcpiGbl_ResourceAmlSerialBusSizes[ AmlResource->CommonSerialBus.Type]; ExtraStructBytes += AmlResource->CommonSerialBus.ResourceLength - MinimumAmlResourceLength; break; default: break; } /* * Update the required buffer size for the internal descriptor structs * * Important: Round the size up for the appropriate alignment. This * is a requirement on IA64. */ if (AcpiUtGetResourceType (AmlBuffer) == ACPI_RESOURCE_NAME_SERIAL_BUS) { BufferSize = AcpiGbl_ResourceStructSerialBusSizes[ AmlResource->CommonSerialBus.Type] + ExtraStructBytes; } else { BufferSize = AcpiGbl_ResourceStructSizes[ResourceIndex] + ExtraStructBytes; } BufferSize = (UINT32) ACPI_ROUND_UP_TO_NATIVE_WORD (BufferSize); *SizeNeeded += BufferSize; ACPI_DEBUG_PRINT ((ACPI_DB_RESOURCES, "Type %.2X, AmlLength %.2X InternalLength %.2X\n", AcpiUtGetResourceType (AmlBuffer), AcpiUtGetDescriptorLength (AmlBuffer), BufferSize)); /* * Point to the next resource within the AML stream using the length * contained in the resource descriptor header */ AmlBuffer += AcpiUtGetDescriptorLength (AmlBuffer); } /* Did not find an EndTag resource descriptor */ return_ACPI_STATUS (AE_AML_NO_RESOURCE_END_TAG); } /******************************************************************************* * * FUNCTION: AcpiRsGetPciRoutingTableLength * * PARAMETERS: PackageObject - Pointer to the package object * BufferSizeNeeded - UINT32 pointer of the size buffer * needed to properly return the * parsed data * * RETURN: Status * * DESCRIPTION: Given a package representing a PCI routing table, this * calculates the size of the corresponding linked list of * descriptions. * ******************************************************************************/ ACPI_STATUS AcpiRsGetPciRoutingTableLength ( ACPI_OPERAND_OBJECT *PackageObject, ACPI_SIZE *BufferSizeNeeded) { UINT32 NumberOfElements; ACPI_SIZE TempSizeNeeded = 0; ACPI_OPERAND_OBJECT **TopObjectList; UINT32 Index; ACPI_OPERAND_OBJECT *PackageElement; ACPI_OPERAND_OBJECT **SubObjectList; BOOLEAN NameFound; UINT32 TableIndex; ACPI_FUNCTION_TRACE (RsGetPciRoutingTableLength); NumberOfElements = PackageObject->Package.Count; /* * Calculate the size of the return buffer. * The base size is the number of elements * the sizes of the * structures. Additional space for the strings is added below. * The minus one is to subtract the size of the UINT8 Source[1] * member because it is added below. * * But each PRT_ENTRY structure has a pointer to a string and * the size of that string must be found. */ TopObjectList = PackageObject->Package.Elements; for (Index = 0; Index < NumberOfElements; Index++) { /* Dereference the subpackage */ PackageElement = *TopObjectList; /* We must have a valid Package object */ if (!PackageElement || (PackageElement->Common.Type != ACPI_TYPE_PACKAGE)) { return_ACPI_STATUS (AE_AML_OPERAND_TYPE); } /* * The SubObjectList will now point to an array of the * four IRQ elements: Address, Pin, Source and SourceIndex */ SubObjectList = PackageElement->Package.Elements; /* Scan the IrqTableElements for the Source Name String */ NameFound = FALSE; for (TableIndex = 0; TableIndex < PackageElement->Package.Count && !NameFound; TableIndex++) { if (*SubObjectList && /* Null object allowed */ ((ACPI_TYPE_STRING == (*SubObjectList)->Common.Type) || ((ACPI_TYPE_LOCAL_REFERENCE == (*SubObjectList)->Common.Type) && ((*SubObjectList)->Reference.Class == ACPI_REFCLASS_NAME)))) { NameFound = TRUE; } else { /* Look at the next element */ SubObjectList++; } } TempSizeNeeded += (sizeof (ACPI_PCI_ROUTING_TABLE) - 4); /* Was a String type found? */ if (NameFound) { if ((*SubObjectList)->Common.Type == ACPI_TYPE_STRING) { /* * The length String.Length field does not include the * terminating NULL, add 1 */ TempSizeNeeded += ((ACPI_SIZE) (*SubObjectList)->String.Length + 1); } else { TempSizeNeeded += AcpiNsGetPathnameLength ( (*SubObjectList)->Reference.Node); } } else { /* * If no name was found, then this is a NULL, which is * translated as a UINT32 zero. */ TempSizeNeeded += sizeof (UINT32); } /* Round up the size since each element must be aligned */ TempSizeNeeded = ACPI_ROUND_UP_TO_64BIT (TempSizeNeeded); /* Point to the next ACPI_OPERAND_OBJECT */ TopObjectList++; } /* * Add an extra element to the end of the list, essentially a * NULL terminator */ *BufferSizeNeeded = TempSizeNeeded + sizeof (ACPI_PCI_ROUTING_TABLE); return_ACPI_STATUS (AE_OK); } src/acpica/source/components/resources/rscreate.c000066400000000000000000000507711231470457100225560ustar00rootroot00000000000000/******************************************************************************* * * Module Name: rscreate - Create resource lists/tables * ******************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #define __RSCREATE_C__ #include "acpi.h" #include "accommon.h" #include "acresrc.h" #include "acnamesp.h" #define _COMPONENT ACPI_RESOURCES ACPI_MODULE_NAME ("rscreate") /******************************************************************************* * * FUNCTION: AcpiBufferToResource * * PARAMETERS: AmlBuffer - Pointer to the resource byte stream * AmlBufferLength - Length of the AmlBuffer * ResourcePtr - Where the converted resource is returned * * RETURN: Status * * DESCRIPTION: Convert a raw AML buffer to a resource list * ******************************************************************************/ ACPI_STATUS AcpiBufferToResource ( UINT8 *AmlBuffer, UINT16 AmlBufferLength, ACPI_RESOURCE **ResourcePtr) { ACPI_STATUS Status; ACPI_SIZE ListSizeNeeded; void *Resource; void *CurrentResourcePtr; /* * Note: we allow AE_AML_NO_RESOURCE_END_TAG, since an end tag * is not required here. */ /* Get the required length for the converted resource */ Status = AcpiRsGetListLength (AmlBuffer, AmlBufferLength, &ListSizeNeeded); if (Status == AE_AML_NO_RESOURCE_END_TAG) { Status = AE_OK; } if (ACPI_FAILURE (Status)) { return (Status); } /* Allocate a buffer for the converted resource */ Resource = ACPI_ALLOCATE_ZEROED (ListSizeNeeded); CurrentResourcePtr = Resource; if (!Resource) { return (AE_NO_MEMORY); } /* Perform the AML-to-Resource conversion */ Status = AcpiUtWalkAmlResources (NULL, AmlBuffer, AmlBufferLength, AcpiRsConvertAmlToResources, &CurrentResourcePtr); if (Status == AE_AML_NO_RESOURCE_END_TAG) { Status = AE_OK; } if (ACPI_FAILURE (Status)) { ACPI_FREE (Resource); } else { *ResourcePtr = Resource; } return (Status); } /******************************************************************************* * * FUNCTION: AcpiRsCreateResourceList * * PARAMETERS: AmlBuffer - Pointer to the resource byte stream * OutputBuffer - Pointer to the user's buffer * * RETURN: Status: AE_OK if okay, else a valid ACPI_STATUS code * If OutputBuffer is not large enough, OutputBufferLength * indicates how large OutputBuffer should be, else it * indicates how may UINT8 elements of OutputBuffer are valid. * * DESCRIPTION: Takes the byte stream returned from a _CRS, _PRS control method * execution and parses the stream to create a linked list * of device resources. * ******************************************************************************/ ACPI_STATUS AcpiRsCreateResourceList ( ACPI_OPERAND_OBJECT *AmlBuffer, ACPI_BUFFER *OutputBuffer) { ACPI_STATUS Status; UINT8 *AmlStart; ACPI_SIZE ListSizeNeeded = 0; UINT32 AmlBufferLength; void *Resource; ACPI_FUNCTION_TRACE (RsCreateResourceList); ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "AmlBuffer = %p\n", AmlBuffer)); /* Params already validated, so we don't re-validate here */ AmlBufferLength = AmlBuffer->Buffer.Length; AmlStart = AmlBuffer->Buffer.Pointer; /* * Pass the AmlBuffer into a module that can calculate * the buffer size needed for the linked list */ Status = AcpiRsGetListLength (AmlStart, AmlBufferLength, &ListSizeNeeded); ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Status=%X ListSizeNeeded=%X\n", Status, (UINT32) ListSizeNeeded)); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } /* Validate/Allocate/Clear caller buffer */ Status = AcpiUtInitializeBuffer (OutputBuffer, ListSizeNeeded); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } /* Do the conversion */ Resource = OutputBuffer->Pointer; Status = AcpiUtWalkAmlResources (NULL, AmlStart, AmlBufferLength, AcpiRsConvertAmlToResources, &Resource); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "OutputBuffer %p Length %X\n", OutputBuffer->Pointer, (UINT32) OutputBuffer->Length)); return_ACPI_STATUS (AE_OK); } /******************************************************************************* * * FUNCTION: AcpiRsCreatePciRoutingTable * * PARAMETERS: PackageObject - Pointer to a package containing one * of more ACPI_OPERAND_OBJECTs * OutputBuffer - Pointer to the user's buffer * * RETURN: Status AE_OK if okay, else a valid ACPI_STATUS code. * If the OutputBuffer is too small, the error will be * AE_BUFFER_OVERFLOW and OutputBuffer->Length will point * to the size buffer needed. * * DESCRIPTION: Takes the ACPI_OPERAND_OBJECT package and creates a * linked list of PCI interrupt descriptions * * NOTE: It is the caller's responsibility to ensure that the start of the * output buffer is aligned properly (if necessary). * ******************************************************************************/ ACPI_STATUS AcpiRsCreatePciRoutingTable ( ACPI_OPERAND_OBJECT *PackageObject, ACPI_BUFFER *OutputBuffer) { UINT8 *Buffer; ACPI_OPERAND_OBJECT **TopObjectList; ACPI_OPERAND_OBJECT **SubObjectList; ACPI_OPERAND_OBJECT *ObjDesc; ACPI_SIZE BufferSizeNeeded = 0; UINT32 NumberOfElements; UINT32 Index; ACPI_PCI_ROUTING_TABLE *UserPrt; ACPI_NAMESPACE_NODE *Node; ACPI_STATUS Status; ACPI_BUFFER PathBuffer; ACPI_FUNCTION_TRACE (RsCreatePciRoutingTable); /* Params already validated, so we don't re-validate here */ /* Get the required buffer length */ Status = AcpiRsGetPciRoutingTableLength (PackageObject, &BufferSizeNeeded); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "BufferSizeNeeded = %X\n", (UINT32) BufferSizeNeeded)); /* Validate/Allocate/Clear caller buffer */ Status = AcpiUtInitializeBuffer (OutputBuffer, BufferSizeNeeded); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } /* * Loop through the ACPI_INTERNAL_OBJECTS - Each object should be a * package that in turn contains an UINT64 Address, a UINT8 Pin, * a Name, and a UINT8 SourceIndex. */ TopObjectList = PackageObject->Package.Elements; NumberOfElements = PackageObject->Package.Count; Buffer = OutputBuffer->Pointer; UserPrt = ACPI_CAST_PTR (ACPI_PCI_ROUTING_TABLE, Buffer); for (Index = 0; Index < NumberOfElements; Index++) { /* * Point UserPrt past this current structure * * NOTE: On the first iteration, UserPrt->Length will * be zero because we cleared the return buffer earlier */ Buffer += UserPrt->Length; UserPrt = ACPI_CAST_PTR (ACPI_PCI_ROUTING_TABLE, Buffer); /* * Fill in the Length field with the information we have at this point. * The minus four is to subtract the size of the UINT8 Source[4] member * because it is added below. */ UserPrt->Length = (sizeof (ACPI_PCI_ROUTING_TABLE) - 4); /* Each subpackage must be of length 4 */ if ((*TopObjectList)->Package.Count != 4) { ACPI_ERROR ((AE_INFO, "(PRT[%u]) Need package of length 4, found length %u", Index, (*TopObjectList)->Package.Count)); return_ACPI_STATUS (AE_AML_PACKAGE_LIMIT); } /* * Dereference the subpackage. * The SubObjectList will now point to an array of the four IRQ * elements: [Address, Pin, Source, SourceIndex] */ SubObjectList = (*TopObjectList)->Package.Elements; /* 1) First subobject: Dereference the PRT.Address */ ObjDesc = SubObjectList[0]; if (!ObjDesc || ObjDesc->Common.Type != ACPI_TYPE_INTEGER) { ACPI_ERROR ((AE_INFO, "(PRT[%u].Address) Need Integer, found %s", Index, AcpiUtGetObjectTypeName (ObjDesc))); return_ACPI_STATUS (AE_BAD_DATA); } UserPrt->Address = ObjDesc->Integer.Value; /* 2) Second subobject: Dereference the PRT.Pin */ ObjDesc = SubObjectList[1]; if (!ObjDesc || ObjDesc->Common.Type != ACPI_TYPE_INTEGER) { ACPI_ERROR ((AE_INFO, "(PRT[%u].Pin) Need Integer, found %s", Index, AcpiUtGetObjectTypeName (ObjDesc))); return_ACPI_STATUS (AE_BAD_DATA); } UserPrt->Pin = (UINT32) ObjDesc->Integer.Value; /* * 3) Third subobject: Dereference the PRT.SourceName * The name may be unresolved (slack mode), so allow a null object */ ObjDesc = SubObjectList[2]; if (ObjDesc) { switch (ObjDesc->Common.Type) { case ACPI_TYPE_LOCAL_REFERENCE: if (ObjDesc->Reference.Class != ACPI_REFCLASS_NAME) { ACPI_ERROR ((AE_INFO, "(PRT[%u].Source) Need name, found Reference Class 0x%X", Index, ObjDesc->Reference.Class)); return_ACPI_STATUS (AE_BAD_DATA); } Node = ObjDesc->Reference.Node; /* Use *remaining* length of the buffer as max for pathname */ PathBuffer.Length = OutputBuffer->Length - (UINT32) ((UINT8 *) UserPrt->Source - (UINT8 *) OutputBuffer->Pointer); PathBuffer.Pointer = UserPrt->Source; Status = AcpiNsHandleToPathname ((ACPI_HANDLE) Node, &PathBuffer); /* +1 to include null terminator */ UserPrt->Length += (UINT32) ACPI_STRLEN (UserPrt->Source) + 1; break; case ACPI_TYPE_STRING: ACPI_STRCPY (UserPrt->Source, ObjDesc->String.Pointer); /* * Add to the Length field the length of the string * (add 1 for terminator) */ UserPrt->Length += ObjDesc->String.Length + 1; break; case ACPI_TYPE_INTEGER: /* * If this is a number, then the Source Name is NULL, since the * entire buffer was zeroed out, we can leave this alone. * * Add to the Length field the length of the UINT32 NULL */ UserPrt->Length += sizeof (UINT32); break; default: ACPI_ERROR ((AE_INFO, "(PRT[%u].Source) Need Ref/String/Integer, found %s", Index, AcpiUtGetObjectTypeName (ObjDesc))); return_ACPI_STATUS (AE_BAD_DATA); } } /* Now align the current length */ UserPrt->Length = (UINT32) ACPI_ROUND_UP_TO_64BIT (UserPrt->Length); /* 4) Fourth subobject: Dereference the PRT.SourceIndex */ ObjDesc = SubObjectList[3]; if (!ObjDesc || ObjDesc->Common.Type != ACPI_TYPE_INTEGER) { ACPI_ERROR ((AE_INFO, "(PRT[%u].SourceIndex) Need Integer, found %s", Index, AcpiUtGetObjectTypeName (ObjDesc))); return_ACPI_STATUS (AE_BAD_DATA); } UserPrt->SourceIndex = (UINT32) ObjDesc->Integer.Value; /* Point to the next ACPI_OPERAND_OBJECT in the top level package */ TopObjectList++; } ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "OutputBuffer %p Length %X\n", OutputBuffer->Pointer, (UINT32) OutputBuffer->Length)); return_ACPI_STATUS (AE_OK); } /******************************************************************************* * * FUNCTION: AcpiRsCreateAmlResources * * PARAMETERS: ResourceList - Pointer to the resource list buffer * OutputBuffer - Where the AML buffer is returned * * RETURN: Status AE_OK if okay, else a valid ACPI_STATUS code. * If the OutputBuffer is too small, the error will be * AE_BUFFER_OVERFLOW and OutputBuffer->Length will point * to the size buffer needed. * * DESCRIPTION: Converts a list of device resources to an AML bytestream * to be used as input for the _SRS control method. * ******************************************************************************/ ACPI_STATUS AcpiRsCreateAmlResources ( ACPI_BUFFER *ResourceList, ACPI_BUFFER *OutputBuffer) { ACPI_STATUS Status; ACPI_SIZE AmlSizeNeeded = 0; ACPI_FUNCTION_TRACE (RsCreateAmlResources); /* Params already validated, no need to re-validate here */ ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "ResourceList Buffer = %p\n", ResourceList->Pointer)); /* Get the buffer size needed for the AML byte stream */ Status = AcpiRsGetAmlLength (ResourceList->Pointer, ResourceList->Length, &AmlSizeNeeded); ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "AmlSizeNeeded=%X, %s\n", (UINT32) AmlSizeNeeded, AcpiFormatException (Status))); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } /* Validate/Allocate/Clear caller buffer */ Status = AcpiUtInitializeBuffer (OutputBuffer, AmlSizeNeeded); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } /* Do the conversion */ Status = AcpiRsConvertResourcesToAml (ResourceList->Pointer, AmlSizeNeeded, OutputBuffer->Pointer); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "OutputBuffer %p Length %X\n", OutputBuffer->Pointer, (UINT32) OutputBuffer->Length)); return_ACPI_STATUS (AE_OK); } src/acpica/source/components/resources/rsdump.c000066400000000000000000000516611231470457100222570ustar00rootroot00000000000000/******************************************************************************* * * Module Name: rsdump - Functions to display the resource structures. * ******************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #define __RSDUMP_C__ #include "acpi.h" #include "accommon.h" #include "acresrc.h" #define _COMPONENT ACPI_RESOURCES ACPI_MODULE_NAME ("rsdump") #if defined(ACPI_DEBUG_OUTPUT) || defined(ACPI_DISASSEMBLER) || defined(ACPI_DEBUGGER) /* Local prototypes */ static void AcpiRsOutString ( char *Title, char *Value); static void AcpiRsOutInteger8 ( char *Title, UINT8 Value); static void AcpiRsOutInteger16 ( char *Title, UINT16 Value); static void AcpiRsOutInteger32 ( char *Title, UINT32 Value); static void AcpiRsOutInteger64 ( char *Title, UINT64 Value); static void AcpiRsOutTitle ( char *Title); static void AcpiRsDumpByteList ( UINT16 Length, UINT8 *Data); static void AcpiRsDumpWordList ( UINT16 Length, UINT16 *Data); static void AcpiRsDumpDwordList ( UINT8 Length, UINT32 *Data); static void AcpiRsDumpShortByteList ( UINT8 Length, UINT8 *Data); static void AcpiRsDumpResourceSource ( ACPI_RESOURCE_SOURCE *ResourceSource); static void AcpiRsDumpAddressCommon ( ACPI_RESOURCE_DATA *Resource); static void AcpiRsDumpDescriptor ( void *Resource, ACPI_RSDUMP_INFO *Table); /******************************************************************************* * * FUNCTION: AcpiRsDumpDescriptor * * PARAMETERS: Resource - Buffer containing the resource * Table - Table entry to decode the resource * * RETURN: None * * DESCRIPTION: Dump a resource descriptor based on a dump table entry. * ******************************************************************************/ static void AcpiRsDumpDescriptor ( void *Resource, ACPI_RSDUMP_INFO *Table) { UINT8 *Target = NULL; UINT8 *PreviousTarget; char *Name; UINT8 Count; /* First table entry must contain the table length (# of table entries) */ Count = Table->Offset; while (Count) { PreviousTarget = Target; Target = ACPI_ADD_PTR (UINT8, Resource, Table->Offset); Name = Table->Name; switch (Table->Opcode) { case ACPI_RSD_TITLE: /* * Optional resource title */ if (Table->Name) { AcpiOsPrintf ("%s Resource\n", Name); } break; /* Strings */ case ACPI_RSD_LITERAL: AcpiRsOutString (Name, ACPI_CAST_PTR (char, Table->Pointer)); break; case ACPI_RSD_STRING: AcpiRsOutString (Name, ACPI_CAST_PTR (char, Target)); break; /* Data items, 8/16/32/64 bit */ case ACPI_RSD_UINT8: if (Table->Pointer) { AcpiRsOutString (Name, ACPI_CAST_PTR (char, Table->Pointer [*Target])); } else { AcpiRsOutInteger8 (Name, ACPI_GET8 (Target)); } break; case ACPI_RSD_UINT16: AcpiRsOutInteger16 (Name, ACPI_GET16 (Target)); break; case ACPI_RSD_UINT32: AcpiRsOutInteger32 (Name, ACPI_GET32 (Target)); break; case ACPI_RSD_UINT64: AcpiRsOutInteger64 (Name, ACPI_GET64 (Target)); break; /* Flags: 1-bit and 2-bit flags supported */ case ACPI_RSD_1BITFLAG: AcpiRsOutString (Name, ACPI_CAST_PTR (char, Table->Pointer [*Target & 0x01])); break; case ACPI_RSD_2BITFLAG: AcpiRsOutString (Name, ACPI_CAST_PTR (char, Table->Pointer [*Target & 0x03])); break; case ACPI_RSD_3BITFLAG: AcpiRsOutString (Name, ACPI_CAST_PTR (char, Table->Pointer [*Target & 0x07])); break; case ACPI_RSD_SHORTLIST: /* * Short byte list (single line output) for DMA and IRQ resources * Note: The list length is obtained from the previous table entry */ if (PreviousTarget) { AcpiRsOutTitle (Name); AcpiRsDumpShortByteList (*PreviousTarget, Target); } break; case ACPI_RSD_SHORTLISTX: /* * Short byte list (single line output) for GPIO vendor data * Note: The list length is obtained from the previous table entry */ if (PreviousTarget) { AcpiRsOutTitle (Name); AcpiRsDumpShortByteList (*PreviousTarget, *(ACPI_CAST_INDIRECT_PTR (UINT8, Target))); } break; case ACPI_RSD_LONGLIST: /* * Long byte list for Vendor resource data * Note: The list length is obtained from the previous table entry */ if (PreviousTarget) { AcpiRsDumpByteList (ACPI_GET16 (PreviousTarget), Target); } break; case ACPI_RSD_DWORDLIST: /* * Dword list for Extended Interrupt resources * Note: The list length is obtained from the previous table entry */ if (PreviousTarget) { AcpiRsDumpDwordList (*PreviousTarget, ACPI_CAST_PTR (UINT32, Target)); } break; case ACPI_RSD_WORDLIST: /* * Word list for GPIO Pin Table * Note: The list length is obtained from the previous table entry */ if (PreviousTarget) { AcpiRsDumpWordList (*PreviousTarget, *(ACPI_CAST_INDIRECT_PTR (UINT16, Target))); } break; case ACPI_RSD_ADDRESS: /* * Common flags for all Address resources */ AcpiRsDumpAddressCommon (ACPI_CAST_PTR (ACPI_RESOURCE_DATA, Target)); break; case ACPI_RSD_SOURCE: /* * Optional ResourceSource for Address resources */ AcpiRsDumpResourceSource (ACPI_CAST_PTR (ACPI_RESOURCE_SOURCE, Target)); break; default: AcpiOsPrintf ("**** Invalid table opcode [%X] ****\n", Table->Opcode); return; } Table++; Count--; } } /******************************************************************************* * * FUNCTION: AcpiRsDumpResourceSource * * PARAMETERS: ResourceSource - Pointer to a Resource Source struct * * RETURN: None * * DESCRIPTION: Common routine for dumping the optional ResourceSource and the * corresponding ResourceSourceIndex. * ******************************************************************************/ static void AcpiRsDumpResourceSource ( ACPI_RESOURCE_SOURCE *ResourceSource) { ACPI_FUNCTION_ENTRY (); if (ResourceSource->Index == 0xFF) { return; } AcpiRsOutInteger8 ("Resource Source Index", ResourceSource->Index); AcpiRsOutString ("Resource Source", ResourceSource->StringPtr ? ResourceSource->StringPtr : "[Not Specified]"); } /******************************************************************************* * * FUNCTION: AcpiRsDumpAddressCommon * * PARAMETERS: Resource - Pointer to an internal resource descriptor * * RETURN: None * * DESCRIPTION: Dump the fields that are common to all Address resource * descriptors * ******************************************************************************/ static void AcpiRsDumpAddressCommon ( ACPI_RESOURCE_DATA *Resource) { ACPI_FUNCTION_ENTRY (); /* Decode the type-specific flags */ switch (Resource->Address.ResourceType) { case ACPI_MEMORY_RANGE: AcpiRsDumpDescriptor (Resource, AcpiRsDumpMemoryFlags); break; case ACPI_IO_RANGE: AcpiRsDumpDescriptor (Resource, AcpiRsDumpIoFlags); break; case ACPI_BUS_NUMBER_RANGE: AcpiRsOutString ("Resource Type", "Bus Number Range"); break; default: AcpiRsOutInteger8 ("Resource Type", (UINT8) Resource->Address.ResourceType); break; } /* Decode the general flags */ AcpiRsDumpDescriptor (Resource, AcpiRsDumpGeneralFlags); } /******************************************************************************* * * FUNCTION: AcpiRsDumpResourceList * * PARAMETERS: ResourceList - Pointer to a resource descriptor list * * RETURN: None * * DESCRIPTION: Dispatches the structure to the correct dump routine. * ******************************************************************************/ void AcpiRsDumpResourceList ( ACPI_RESOURCE *ResourceList) { UINT32 Count = 0; UINT32 Type; ACPI_FUNCTION_ENTRY (); /* Check if debug output enabled */ if (!ACPI_IS_DEBUG_ENABLED (ACPI_LV_RESOURCES, _COMPONENT)) { return; } /* Walk list and dump all resource descriptors (END_TAG terminates) */ do { AcpiOsPrintf ("\n[%02X] ", Count); Count++; /* Validate Type before dispatch */ Type = ResourceList->Type; if (Type > ACPI_RESOURCE_TYPE_MAX) { AcpiOsPrintf ( "Invalid descriptor type (%X) in resource list\n", ResourceList->Type); return; } /* Sanity check the length. It must not be zero, or we loop forever */ if (!ResourceList->Length) { AcpiOsPrintf ( "Invalid zero length descriptor in resource list\n"); return; } /* Dump the resource descriptor */ if (Type == ACPI_RESOURCE_TYPE_SERIAL_BUS) { AcpiRsDumpDescriptor (&ResourceList->Data, AcpiGbl_DumpSerialBusDispatch[ResourceList->Data.CommonSerialBus.Type]); } else { AcpiRsDumpDescriptor (&ResourceList->Data, AcpiGbl_DumpResourceDispatch[Type]); } /* Point to the next resource structure */ ResourceList = ACPI_NEXT_RESOURCE (ResourceList); /* Exit when END_TAG descriptor is reached */ } while (Type != ACPI_RESOURCE_TYPE_END_TAG); } /******************************************************************************* * * FUNCTION: AcpiRsDumpIrqList * * PARAMETERS: RouteTable - Pointer to the routing table to dump. * * RETURN: None * * DESCRIPTION: Print IRQ routing table * ******************************************************************************/ void AcpiRsDumpIrqList ( UINT8 *RouteTable) { ACPI_PCI_ROUTING_TABLE *PrtElement; UINT8 Count; ACPI_FUNCTION_ENTRY (); /* Check if debug output enabled */ if (!ACPI_IS_DEBUG_ENABLED (ACPI_LV_RESOURCES, _COMPONENT)) { return; } PrtElement = ACPI_CAST_PTR (ACPI_PCI_ROUTING_TABLE, RouteTable); /* Dump all table elements, Exit on zero length element */ for (Count = 0; PrtElement->Length; Count++) { AcpiOsPrintf ("\n[%02X] PCI IRQ Routing Table Package\n", Count); AcpiRsDumpDescriptor (PrtElement, AcpiRsDumpPrt); PrtElement = ACPI_ADD_PTR (ACPI_PCI_ROUTING_TABLE, PrtElement, PrtElement->Length); } } /******************************************************************************* * * FUNCTION: AcpiRsOut* * * PARAMETERS: Title - Name of the resource field * Value - Value of the resource field * * RETURN: None * * DESCRIPTION: Miscellaneous helper functions to consistently format the * output of the resource dump routines * ******************************************************************************/ static void AcpiRsOutString ( char *Title, char *Value) { AcpiOsPrintf ("%27s : %s", Title, Value); if (!*Value) { AcpiOsPrintf ("[NULL NAMESTRING]"); } AcpiOsPrintf ("\n"); } static void AcpiRsOutInteger8 ( char *Title, UINT8 Value) { AcpiOsPrintf ("%27s : %2.2X\n", Title, Value); } static void AcpiRsOutInteger16 ( char *Title, UINT16 Value) { AcpiOsPrintf ("%27s : %4.4X\n", Title, Value); } static void AcpiRsOutInteger32 ( char *Title, UINT32 Value) { AcpiOsPrintf ("%27s : %8.8X\n", Title, Value); } static void AcpiRsOutInteger64 ( char *Title, UINT64 Value) { AcpiOsPrintf ("%27s : %8.8X%8.8X\n", Title, ACPI_FORMAT_UINT64 (Value)); } static void AcpiRsOutTitle ( char *Title) { AcpiOsPrintf ("%27s : ", Title); } /******************************************************************************* * * FUNCTION: AcpiRsDump*List * * PARAMETERS: Length - Number of elements in the list * Data - Start of the list * * RETURN: None * * DESCRIPTION: Miscellaneous functions to dump lists of raw data * ******************************************************************************/ static void AcpiRsDumpByteList ( UINT16 Length, UINT8 *Data) { UINT8 i; for (i = 0; i < Length; i++) { AcpiOsPrintf ("%25s%2.2X : %2.2X\n", "Byte", i, Data[i]); } } static void AcpiRsDumpShortByteList ( UINT8 Length, UINT8 *Data) { UINT8 i; for (i = 0; i < Length; i++) { AcpiOsPrintf ("%X ", Data[i]); } AcpiOsPrintf ("\n"); } static void AcpiRsDumpDwordList ( UINT8 Length, UINT32 *Data) { UINT8 i; for (i = 0; i < Length; i++) { AcpiOsPrintf ("%25s%2.2X : %8.8X\n", "Dword", i, Data[i]); } } static void AcpiRsDumpWordList ( UINT16 Length, UINT16 *Data) { UINT16 i; for (i = 0; i < Length; i++) { AcpiOsPrintf ("%25s%2.2X : %4.4X\n", "Word", i, Data[i]); } } #endif src/acpica/source/components/resources/rsdumpinfo.c000066400000000000000000000662761231470457100231430ustar00rootroot00000000000000/******************************************************************************* * * Module Name: rsdumpinfo - Tables used to display resource descriptors. * ******************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #define __RSDUMPINFO_C__ #include "acpi.h" #include "accommon.h" #include "acresrc.h" #define _COMPONENT ACPI_RESOURCES ACPI_MODULE_NAME ("rsdumpinfo") #if defined(ACPI_DEBUG_OUTPUT) || defined(ACPI_DISASSEMBLER) || defined(ACPI_DEBUGGER) #define ACPI_RSD_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_RESOURCE_DATA,f) #define ACPI_PRT_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_PCI_ROUTING_TABLE,f) #define ACPI_RSD_TABLE_SIZE(name) (sizeof(name) / sizeof (ACPI_RSDUMP_INFO)) /******************************************************************************* * * Resource Descriptor info tables * * Note: The first table entry must be a Title or Literal and must contain * the table length (number of table entries) * ******************************************************************************/ ACPI_RSDUMP_INFO AcpiRsDumpIrq[7] = { {ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE (AcpiRsDumpIrq), "IRQ", NULL}, {ACPI_RSD_UINT8 , ACPI_RSD_OFFSET (Irq.DescriptorLength), "Descriptor Length", NULL}, {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (Irq.Triggering), "Triggering", AcpiGbl_HeDecode}, {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (Irq.Polarity), "Polarity", AcpiGbl_LlDecode}, {ACPI_RSD_2BITFLAG, ACPI_RSD_OFFSET (Irq.Sharable), "Sharing", AcpiGbl_ShrDecode}, {ACPI_RSD_UINT8 , ACPI_RSD_OFFSET (Irq.InterruptCount), "Interrupt Count", NULL}, {ACPI_RSD_SHORTLIST,ACPI_RSD_OFFSET (Irq.Interrupts[0]), "Interrupt List", NULL} }; ACPI_RSDUMP_INFO AcpiRsDumpDma[6] = { {ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE (AcpiRsDumpDma), "DMA", NULL}, {ACPI_RSD_2BITFLAG, ACPI_RSD_OFFSET (Dma.Type), "Speed", AcpiGbl_TypDecode}, {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (Dma.BusMaster), "Mastering", AcpiGbl_BmDecode}, {ACPI_RSD_2BITFLAG, ACPI_RSD_OFFSET (Dma.Transfer), "Transfer Type", AcpiGbl_SizDecode}, {ACPI_RSD_UINT8, ACPI_RSD_OFFSET (Dma.ChannelCount), "Channel Count", NULL}, {ACPI_RSD_SHORTLIST,ACPI_RSD_OFFSET (Dma.Channels[0]), "Channel List", NULL} }; ACPI_RSDUMP_INFO AcpiRsDumpStartDpf[4] = { {ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE (AcpiRsDumpStartDpf), "Start-Dependent-Functions",NULL}, {ACPI_RSD_UINT8 , ACPI_RSD_OFFSET (StartDpf.DescriptorLength), "Descriptor Length", NULL}, {ACPI_RSD_2BITFLAG, ACPI_RSD_OFFSET (StartDpf.CompatibilityPriority), "Compatibility Priority", AcpiGbl_ConfigDecode}, {ACPI_RSD_2BITFLAG, ACPI_RSD_OFFSET (StartDpf.PerformanceRobustness), "Performance/Robustness", AcpiGbl_ConfigDecode} }; ACPI_RSDUMP_INFO AcpiRsDumpEndDpf[1] = { {ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE (AcpiRsDumpEndDpf), "End-Dependent-Functions", NULL} }; ACPI_RSDUMP_INFO AcpiRsDumpIo[6] = { {ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE (AcpiRsDumpIo), "I/O", NULL}, {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (Io.IoDecode), "Address Decoding", AcpiGbl_IoDecode}, {ACPI_RSD_UINT16, ACPI_RSD_OFFSET (Io.Minimum), "Address Minimum", NULL}, {ACPI_RSD_UINT16, ACPI_RSD_OFFSET (Io.Maximum), "Address Maximum", NULL}, {ACPI_RSD_UINT8, ACPI_RSD_OFFSET (Io.Alignment), "Alignment", NULL}, {ACPI_RSD_UINT8, ACPI_RSD_OFFSET (Io.AddressLength), "Address Length", NULL} }; ACPI_RSDUMP_INFO AcpiRsDumpFixedIo[3] = { {ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE (AcpiRsDumpFixedIo), "Fixed I/O", NULL}, {ACPI_RSD_UINT16, ACPI_RSD_OFFSET (FixedIo.Address), "Address", NULL}, {ACPI_RSD_UINT8, ACPI_RSD_OFFSET (FixedIo.AddressLength), "Address Length", NULL} }; ACPI_RSDUMP_INFO AcpiRsDumpVendor[3] = { {ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE (AcpiRsDumpVendor), "Vendor Specific", NULL}, {ACPI_RSD_UINT16, ACPI_RSD_OFFSET (Vendor.ByteLength), "Length", NULL}, {ACPI_RSD_LONGLIST, ACPI_RSD_OFFSET (Vendor.ByteData[0]), "Vendor Data", NULL} }; ACPI_RSDUMP_INFO AcpiRsDumpEndTag[1] = { {ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE (AcpiRsDumpEndTag), "EndTag", NULL} }; ACPI_RSDUMP_INFO AcpiRsDumpMemory24[6] = { {ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE (AcpiRsDumpMemory24), "24-Bit Memory Range", NULL}, {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (Memory24.WriteProtect), "Write Protect", AcpiGbl_RwDecode}, {ACPI_RSD_UINT16, ACPI_RSD_OFFSET (Memory24.Minimum), "Address Minimum", NULL}, {ACPI_RSD_UINT16, ACPI_RSD_OFFSET (Memory24.Maximum), "Address Maximum", NULL}, {ACPI_RSD_UINT16, ACPI_RSD_OFFSET (Memory24.Alignment), "Alignment", NULL}, {ACPI_RSD_UINT16, ACPI_RSD_OFFSET (Memory24.AddressLength), "Address Length", NULL} }; ACPI_RSDUMP_INFO AcpiRsDumpMemory32[6] = { {ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE (AcpiRsDumpMemory32), "32-Bit Memory Range", NULL}, {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (Memory32.WriteProtect), "Write Protect", AcpiGbl_RwDecode}, {ACPI_RSD_UINT32, ACPI_RSD_OFFSET (Memory32.Minimum), "Address Minimum", NULL}, {ACPI_RSD_UINT32, ACPI_RSD_OFFSET (Memory32.Maximum), "Address Maximum", NULL}, {ACPI_RSD_UINT32, ACPI_RSD_OFFSET (Memory32.Alignment), "Alignment", NULL}, {ACPI_RSD_UINT32, ACPI_RSD_OFFSET (Memory32.AddressLength), "Address Length", NULL} }; ACPI_RSDUMP_INFO AcpiRsDumpFixedMemory32[4] = { {ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE (AcpiRsDumpFixedMemory32), "32-Bit Fixed Memory Range",NULL}, {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (FixedMemory32.WriteProtect), "Write Protect", AcpiGbl_RwDecode}, {ACPI_RSD_UINT32, ACPI_RSD_OFFSET (FixedMemory32.Address), "Address", NULL}, {ACPI_RSD_UINT32, ACPI_RSD_OFFSET (FixedMemory32.AddressLength), "Address Length", NULL} }; ACPI_RSDUMP_INFO AcpiRsDumpAddress16[8] = { {ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE (AcpiRsDumpAddress16), "16-Bit WORD Address Space",NULL}, {ACPI_RSD_ADDRESS, 0, NULL, NULL}, {ACPI_RSD_UINT16, ACPI_RSD_OFFSET (Address16.Granularity), "Granularity", NULL}, {ACPI_RSD_UINT16, ACPI_RSD_OFFSET (Address16.Minimum), "Address Minimum", NULL}, {ACPI_RSD_UINT16, ACPI_RSD_OFFSET (Address16.Maximum), "Address Maximum", NULL}, {ACPI_RSD_UINT16, ACPI_RSD_OFFSET (Address16.TranslationOffset), "Translation Offset", NULL}, {ACPI_RSD_UINT16, ACPI_RSD_OFFSET (Address16.AddressLength), "Address Length", NULL}, {ACPI_RSD_SOURCE, ACPI_RSD_OFFSET (Address16.ResourceSource), NULL, NULL} }; ACPI_RSDUMP_INFO AcpiRsDumpAddress32[8] = { {ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE (AcpiRsDumpAddress32), "32-Bit DWORD Address Space", NULL}, {ACPI_RSD_ADDRESS, 0, NULL, NULL}, {ACPI_RSD_UINT32, ACPI_RSD_OFFSET (Address32.Granularity), "Granularity", NULL}, {ACPI_RSD_UINT32, ACPI_RSD_OFFSET (Address32.Minimum), "Address Minimum", NULL}, {ACPI_RSD_UINT32, ACPI_RSD_OFFSET (Address32.Maximum), "Address Maximum", NULL}, {ACPI_RSD_UINT32, ACPI_RSD_OFFSET (Address32.TranslationOffset), "Translation Offset", NULL}, {ACPI_RSD_UINT32, ACPI_RSD_OFFSET (Address32.AddressLength), "Address Length", NULL}, {ACPI_RSD_SOURCE, ACPI_RSD_OFFSET (Address32.ResourceSource), NULL, NULL} }; ACPI_RSDUMP_INFO AcpiRsDumpAddress64[8] = { {ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE (AcpiRsDumpAddress64), "64-Bit QWORD Address Space", NULL}, {ACPI_RSD_ADDRESS, 0, NULL, NULL}, {ACPI_RSD_UINT64, ACPI_RSD_OFFSET (Address64.Granularity), "Granularity", NULL}, {ACPI_RSD_UINT64, ACPI_RSD_OFFSET (Address64.Minimum), "Address Minimum", NULL}, {ACPI_RSD_UINT64, ACPI_RSD_OFFSET (Address64.Maximum), "Address Maximum", NULL}, {ACPI_RSD_UINT64, ACPI_RSD_OFFSET (Address64.TranslationOffset), "Translation Offset", NULL}, {ACPI_RSD_UINT64, ACPI_RSD_OFFSET (Address64.AddressLength), "Address Length", NULL}, {ACPI_RSD_SOURCE, ACPI_RSD_OFFSET (Address64.ResourceSource), NULL, NULL} }; ACPI_RSDUMP_INFO AcpiRsDumpExtAddress64[8] = { {ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE (AcpiRsDumpExtAddress64), "64-Bit Extended Address Space", NULL}, {ACPI_RSD_ADDRESS, 0, NULL, NULL}, {ACPI_RSD_UINT64, ACPI_RSD_OFFSET (ExtAddress64.Granularity), "Granularity", NULL}, {ACPI_RSD_UINT64, ACPI_RSD_OFFSET (ExtAddress64.Minimum), "Address Minimum", NULL}, {ACPI_RSD_UINT64, ACPI_RSD_OFFSET (ExtAddress64.Maximum), "Address Maximum", NULL}, {ACPI_RSD_UINT64, ACPI_RSD_OFFSET (ExtAddress64.TranslationOffset), "Translation Offset", NULL}, {ACPI_RSD_UINT64, ACPI_RSD_OFFSET (ExtAddress64.AddressLength), "Address Length", NULL}, {ACPI_RSD_UINT64, ACPI_RSD_OFFSET (ExtAddress64.TypeSpecific), "Type-Specific Attribute", NULL} }; ACPI_RSDUMP_INFO AcpiRsDumpExtIrq[8] = { {ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE (AcpiRsDumpExtIrq), "Extended IRQ", NULL}, {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (ExtendedIrq.ProducerConsumer), "Type", AcpiGbl_ConsumeDecode}, {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (ExtendedIrq.Triggering), "Triggering", AcpiGbl_HeDecode}, {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (ExtendedIrq.Polarity), "Polarity", AcpiGbl_LlDecode}, {ACPI_RSD_2BITFLAG, ACPI_RSD_OFFSET (ExtendedIrq.Sharable), "Sharing", AcpiGbl_ShrDecode}, {ACPI_RSD_SOURCE, ACPI_RSD_OFFSET (ExtendedIrq.ResourceSource), NULL, NULL}, {ACPI_RSD_UINT8, ACPI_RSD_OFFSET (ExtendedIrq.InterruptCount), "Interrupt Count", NULL}, {ACPI_RSD_DWORDLIST,ACPI_RSD_OFFSET (ExtendedIrq.Interrupts[0]), "Interrupt List", NULL} }; ACPI_RSDUMP_INFO AcpiRsDumpGenericReg[6] = { {ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE (AcpiRsDumpGenericReg), "Generic Register", NULL}, {ACPI_RSD_UINT8, ACPI_RSD_OFFSET (GenericReg.SpaceId), "Space ID", NULL}, {ACPI_RSD_UINT8, ACPI_RSD_OFFSET (GenericReg.BitWidth), "Bit Width", NULL}, {ACPI_RSD_UINT8, ACPI_RSD_OFFSET (GenericReg.BitOffset), "Bit Offset", NULL}, {ACPI_RSD_UINT8, ACPI_RSD_OFFSET (GenericReg.AccessSize), "Access Size", NULL}, {ACPI_RSD_UINT64, ACPI_RSD_OFFSET (GenericReg.Address), "Address", NULL} }; ACPI_RSDUMP_INFO AcpiRsDumpGpio[16] = { {ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE (AcpiRsDumpGpio), "GPIO", NULL}, {ACPI_RSD_UINT8, ACPI_RSD_OFFSET (Gpio.RevisionId), "RevisionId", NULL}, {ACPI_RSD_UINT8, ACPI_RSD_OFFSET (Gpio.ConnectionType), "ConnectionType", AcpiGbl_CtDecode}, {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (Gpio.ProducerConsumer), "ProducerConsumer", AcpiGbl_ConsumeDecode}, {ACPI_RSD_UINT8, ACPI_RSD_OFFSET (Gpio.PinConfig), "PinConfig", AcpiGbl_PpcDecode}, {ACPI_RSD_2BITFLAG, ACPI_RSD_OFFSET (Gpio.Sharable), "Sharing", AcpiGbl_ShrDecode}, {ACPI_RSD_2BITFLAG, ACPI_RSD_OFFSET (Gpio.IoRestriction), "IoRestriction", AcpiGbl_IorDecode}, {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (Gpio.Triggering), "Triggering", AcpiGbl_HeDecode}, {ACPI_RSD_2BITFLAG, ACPI_RSD_OFFSET (Gpio.Polarity), "Polarity", AcpiGbl_LlDecode}, {ACPI_RSD_UINT16, ACPI_RSD_OFFSET (Gpio.DriveStrength), "DriveStrength", NULL}, {ACPI_RSD_UINT16, ACPI_RSD_OFFSET (Gpio.DebounceTimeout), "DebounceTimeout", NULL}, {ACPI_RSD_SOURCE, ACPI_RSD_OFFSET (Gpio.ResourceSource), "ResourceSource", NULL}, {ACPI_RSD_UINT16, ACPI_RSD_OFFSET (Gpio.PinTableLength), "PinTableLength", NULL}, {ACPI_RSD_WORDLIST, ACPI_RSD_OFFSET (Gpio.PinTable), "PinTable", NULL}, {ACPI_RSD_UINT16, ACPI_RSD_OFFSET (Gpio.VendorLength), "VendorLength", NULL}, {ACPI_RSD_SHORTLISTX,ACPI_RSD_OFFSET (Gpio.VendorData), "VendorData", NULL}, }; ACPI_RSDUMP_INFO AcpiRsDumpFixedDma[4] = { {ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE (AcpiRsDumpFixedDma), "FixedDma", NULL}, {ACPI_RSD_UINT16, ACPI_RSD_OFFSET (FixedDma.RequestLines), "RequestLines", NULL}, {ACPI_RSD_UINT16, ACPI_RSD_OFFSET (FixedDma.Channels), "Channels", NULL}, {ACPI_RSD_UINT8, ACPI_RSD_OFFSET (FixedDma.Width), "TransferWidth", AcpiGbl_DtsDecode}, }; #define ACPI_RS_DUMP_COMMON_SERIAL_BUS \ {ACPI_RSD_UINT8, ACPI_RSD_OFFSET (CommonSerialBus.RevisionId), "RevisionId", NULL}, \ {ACPI_RSD_UINT8, ACPI_RSD_OFFSET (CommonSerialBus.Type), "Type", AcpiGbl_SbtDecode}, \ {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (CommonSerialBus.ProducerConsumer), "ProducerConsumer", AcpiGbl_ConsumeDecode}, \ {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (CommonSerialBus.SlaveMode), "SlaveMode", AcpiGbl_SmDecode}, \ {ACPI_RSD_UINT8, ACPI_RSD_OFFSET (CommonSerialBus.TypeRevisionId), "TypeRevisionId", NULL}, \ {ACPI_RSD_UINT16, ACPI_RSD_OFFSET (CommonSerialBus.TypeDataLength), "TypeDataLength", NULL}, \ {ACPI_RSD_SOURCE, ACPI_RSD_OFFSET (CommonSerialBus.ResourceSource), "ResourceSource", NULL}, \ {ACPI_RSD_UINT16, ACPI_RSD_OFFSET (CommonSerialBus.VendorLength), "VendorLength", NULL}, \ {ACPI_RSD_SHORTLISTX,ACPI_RSD_OFFSET (CommonSerialBus.VendorData), "VendorData", NULL}, ACPI_RSDUMP_INFO AcpiRsDumpCommonSerialBus[10] = { {ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE (AcpiRsDumpCommonSerialBus), "Common Serial Bus", NULL}, ACPI_RS_DUMP_COMMON_SERIAL_BUS }; ACPI_RSDUMP_INFO AcpiRsDumpI2cSerialBus[13] = { {ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE (AcpiRsDumpI2cSerialBus), "I2C Serial Bus", NULL}, ACPI_RS_DUMP_COMMON_SERIAL_BUS {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (I2cSerialBus.AccessMode), "AccessMode", AcpiGbl_AmDecode}, {ACPI_RSD_UINT32, ACPI_RSD_OFFSET (I2cSerialBus.ConnectionSpeed), "ConnectionSpeed", NULL}, {ACPI_RSD_UINT16, ACPI_RSD_OFFSET (I2cSerialBus.SlaveAddress), "SlaveAddress", NULL}, }; ACPI_RSDUMP_INFO AcpiRsDumpSpiSerialBus[17] = { {ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE (AcpiRsDumpSpiSerialBus), "Spi Serial Bus", NULL}, ACPI_RS_DUMP_COMMON_SERIAL_BUS {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (SpiSerialBus.WireMode), "WireMode", AcpiGbl_WmDecode}, {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (SpiSerialBus.DevicePolarity), "DevicePolarity", AcpiGbl_DpDecode}, {ACPI_RSD_UINT8, ACPI_RSD_OFFSET (SpiSerialBus.DataBitLength), "DataBitLength", NULL}, {ACPI_RSD_UINT8, ACPI_RSD_OFFSET (SpiSerialBus.ClockPhase), "ClockPhase", AcpiGbl_CphDecode}, {ACPI_RSD_UINT8, ACPI_RSD_OFFSET (SpiSerialBus.ClockPolarity), "ClockPolarity", AcpiGbl_CpoDecode}, {ACPI_RSD_UINT16, ACPI_RSD_OFFSET (SpiSerialBus.DeviceSelection), "DeviceSelection", NULL}, {ACPI_RSD_UINT32, ACPI_RSD_OFFSET (SpiSerialBus.ConnectionSpeed), "ConnectionSpeed", NULL}, }; ACPI_RSDUMP_INFO AcpiRsDumpUartSerialBus[19] = { {ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE (AcpiRsDumpUartSerialBus), "Uart Serial Bus", NULL}, ACPI_RS_DUMP_COMMON_SERIAL_BUS {ACPI_RSD_2BITFLAG, ACPI_RSD_OFFSET (UartSerialBus.FlowControl), "FlowControl", AcpiGbl_FcDecode}, {ACPI_RSD_2BITFLAG, ACPI_RSD_OFFSET (UartSerialBus.StopBits), "StopBits", AcpiGbl_SbDecode}, {ACPI_RSD_3BITFLAG, ACPI_RSD_OFFSET (UartSerialBus.DataBits), "DataBits", AcpiGbl_BpbDecode}, {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (UartSerialBus.Endian), "Endian", AcpiGbl_EdDecode}, {ACPI_RSD_UINT8, ACPI_RSD_OFFSET (UartSerialBus.Parity), "Parity", AcpiGbl_PtDecode}, {ACPI_RSD_UINT8, ACPI_RSD_OFFSET (UartSerialBus.LinesEnabled), "LinesEnabled", NULL}, {ACPI_RSD_UINT16, ACPI_RSD_OFFSET (UartSerialBus.RxFifoSize), "RxFifoSize", NULL}, {ACPI_RSD_UINT16, ACPI_RSD_OFFSET (UartSerialBus.TxFifoSize), "TxFifoSize", NULL}, {ACPI_RSD_UINT32, ACPI_RSD_OFFSET (UartSerialBus.DefaultBaudRate), "ConnectionSpeed", NULL}, }; /* * Tables used for common address descriptor flag fields */ ACPI_RSDUMP_INFO AcpiRsDumpGeneralFlags[5] = { {ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE (AcpiRsDumpGeneralFlags), NULL, NULL}, {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (Address.ProducerConsumer), "Consumer/Producer", AcpiGbl_ConsumeDecode}, {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (Address.Decode), "Address Decode", AcpiGbl_DecDecode}, {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (Address.MinAddressFixed), "Min Relocatability", AcpiGbl_MinDecode}, {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (Address.MaxAddressFixed), "Max Relocatability", AcpiGbl_MaxDecode} }; ACPI_RSDUMP_INFO AcpiRsDumpMemoryFlags[5] = { {ACPI_RSD_LITERAL, ACPI_RSD_TABLE_SIZE (AcpiRsDumpMemoryFlags), "Resource Type", (void *) "Memory Range"}, {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (Address.Info.Mem.WriteProtect), "Write Protect", AcpiGbl_RwDecode}, {ACPI_RSD_2BITFLAG, ACPI_RSD_OFFSET (Address.Info.Mem.Caching), "Caching", AcpiGbl_MemDecode}, {ACPI_RSD_2BITFLAG, ACPI_RSD_OFFSET (Address.Info.Mem.RangeType), "Range Type", AcpiGbl_MtpDecode}, {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (Address.Info.Mem.Translation), "Translation", AcpiGbl_TtpDecode} }; ACPI_RSDUMP_INFO AcpiRsDumpIoFlags[4] = { {ACPI_RSD_LITERAL, ACPI_RSD_TABLE_SIZE (AcpiRsDumpIoFlags), "Resource Type", (void *) "I/O Range"}, {ACPI_RSD_2BITFLAG, ACPI_RSD_OFFSET (Address.Info.Io.RangeType), "Range Type", AcpiGbl_RngDecode}, {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (Address.Info.Io.Translation), "Translation", AcpiGbl_TtpDecode}, {ACPI_RSD_1BITFLAG, ACPI_RSD_OFFSET (Address.Info.Io.TranslationType), "Translation Type", AcpiGbl_TrsDecode} }; /* * Table used to dump _PRT contents */ ACPI_RSDUMP_INFO AcpiRsDumpPrt[5] = { {ACPI_RSD_TITLE, ACPI_RSD_TABLE_SIZE (AcpiRsDumpPrt), NULL, NULL}, {ACPI_RSD_UINT64, ACPI_PRT_OFFSET (Address), "Address", NULL}, {ACPI_RSD_UINT32, ACPI_PRT_OFFSET (Pin), "Pin", NULL}, {ACPI_RSD_STRING, ACPI_PRT_OFFSET (Source[0]), "Source", NULL}, {ACPI_RSD_UINT32, ACPI_PRT_OFFSET (SourceIndex), "Source Index", NULL} }; #endif src/acpica/source/components/resources/rsinfo.c000066400000000000000000000404511231470457100222400ustar00rootroot00000000000000/******************************************************************************* * * Module Name: rsinfo - Dispatch and Info tables * ******************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #define __RSINFO_C__ #include "acpi.h" #include "accommon.h" #include "acresrc.h" #define _COMPONENT ACPI_RESOURCES ACPI_MODULE_NAME ("rsinfo") /* * Resource dispatch and information tables. Any new resource types (either * Large or Small) must be reflected in each of these tables, so they are here * in one place. * * The tables for Large descriptors are indexed by bits 6:0 of the AML * descriptor type byte. The tables for Small descriptors are indexed by * bits 6:3 of the descriptor byte. The tables for internal resource * descriptors are indexed by the ACPI_RESOURCE_TYPE field. */ /* Dispatch table for resource-to-AML (Set Resource) conversion functions */ ACPI_RSCONVERT_INFO *AcpiGbl_SetResourceDispatch[] = { AcpiRsSetIrq, /* 0x00, ACPI_RESOURCE_TYPE_IRQ */ AcpiRsConvertDma, /* 0x01, ACPI_RESOURCE_TYPE_DMA */ AcpiRsSetStartDpf, /* 0x02, ACPI_RESOURCE_TYPE_START_DEPENDENT */ AcpiRsConvertEndDpf, /* 0x03, ACPI_RESOURCE_TYPE_END_DEPENDENT */ AcpiRsConvertIo, /* 0x04, ACPI_RESOURCE_TYPE_IO */ AcpiRsConvertFixedIo, /* 0x05, ACPI_RESOURCE_TYPE_FIXED_IO */ AcpiRsSetVendor, /* 0x06, ACPI_RESOURCE_TYPE_VENDOR */ AcpiRsConvertEndTag, /* 0x07, ACPI_RESOURCE_TYPE_END_TAG */ AcpiRsConvertMemory24, /* 0x08, ACPI_RESOURCE_TYPE_MEMORY24 */ AcpiRsConvertMemory32, /* 0x09, ACPI_RESOURCE_TYPE_MEMORY32 */ AcpiRsConvertFixedMemory32, /* 0x0A, ACPI_RESOURCE_TYPE_FIXED_MEMORY32 */ AcpiRsConvertAddress16, /* 0x0B, ACPI_RESOURCE_TYPE_ADDRESS16 */ AcpiRsConvertAddress32, /* 0x0C, ACPI_RESOURCE_TYPE_ADDRESS32 */ AcpiRsConvertAddress64, /* 0x0D, ACPI_RESOURCE_TYPE_ADDRESS64 */ AcpiRsConvertExtAddress64, /* 0x0E, ACPI_RESOURCE_TYPE_EXTENDED_ADDRESS64 */ AcpiRsConvertExtIrq, /* 0x0F, ACPI_RESOURCE_TYPE_EXTENDED_IRQ */ AcpiRsConvertGenericReg, /* 0x10, ACPI_RESOURCE_TYPE_GENERIC_REGISTER */ AcpiRsConvertGpio, /* 0x11, ACPI_RESOURCE_TYPE_GPIO */ AcpiRsConvertFixedDma, /* 0x12, ACPI_RESOURCE_TYPE_FIXED_DMA */ NULL, /* 0x13, ACPI_RESOURCE_TYPE_SERIAL_BUS - Use subtype table below */ }; /* Dispatch tables for AML-to-resource (Get Resource) conversion functions */ ACPI_RSCONVERT_INFO *AcpiGbl_GetResourceDispatch[] = { /* Small descriptors */ NULL, /* 0x00, Reserved */ NULL, /* 0x01, Reserved */ NULL, /* 0x02, Reserved */ NULL, /* 0x03, Reserved */ AcpiRsGetIrq, /* 0x04, ACPI_RESOURCE_NAME_IRQ */ AcpiRsConvertDma, /* 0x05, ACPI_RESOURCE_NAME_DMA */ AcpiRsGetStartDpf, /* 0x06, ACPI_RESOURCE_NAME_START_DEPENDENT */ AcpiRsConvertEndDpf, /* 0x07, ACPI_RESOURCE_NAME_END_DEPENDENT */ AcpiRsConvertIo, /* 0x08, ACPI_RESOURCE_NAME_IO */ AcpiRsConvertFixedIo, /* 0x09, ACPI_RESOURCE_NAME_FIXED_IO */ AcpiRsConvertFixedDma, /* 0x0A, ACPI_RESOURCE_NAME_FIXED_DMA */ NULL, /* 0x0B, Reserved */ NULL, /* 0x0C, Reserved */ NULL, /* 0x0D, Reserved */ AcpiRsGetVendorSmall, /* 0x0E, ACPI_RESOURCE_NAME_VENDOR_SMALL */ AcpiRsConvertEndTag, /* 0x0F, ACPI_RESOURCE_NAME_END_TAG */ /* Large descriptors */ NULL, /* 0x00, Reserved */ AcpiRsConvertMemory24, /* 0x01, ACPI_RESOURCE_NAME_MEMORY24 */ AcpiRsConvertGenericReg, /* 0x02, ACPI_RESOURCE_NAME_GENERIC_REGISTER */ NULL, /* 0x03, Reserved */ AcpiRsGetVendorLarge, /* 0x04, ACPI_RESOURCE_NAME_VENDOR_LARGE */ AcpiRsConvertMemory32, /* 0x05, ACPI_RESOURCE_NAME_MEMORY32 */ AcpiRsConvertFixedMemory32, /* 0x06, ACPI_RESOURCE_NAME_FIXED_MEMORY32 */ AcpiRsConvertAddress32, /* 0x07, ACPI_RESOURCE_NAME_ADDRESS32 */ AcpiRsConvertAddress16, /* 0x08, ACPI_RESOURCE_NAME_ADDRESS16 */ AcpiRsConvertExtIrq, /* 0x09, ACPI_RESOURCE_NAME_EXTENDED_IRQ */ AcpiRsConvertAddress64, /* 0x0A, ACPI_RESOURCE_NAME_ADDRESS64 */ AcpiRsConvertExtAddress64, /* 0x0B, ACPI_RESOURCE_NAME_EXTENDED_ADDRESS64 */ AcpiRsConvertGpio, /* 0x0C, ACPI_RESOURCE_NAME_GPIO */ NULL, /* 0x0D, Reserved */ NULL, /* 0x0E, ACPI_RESOURCE_NAME_SERIAL_BUS - Use subtype table below */ }; /* Subtype table for SerialBus -- I2C, SPI, and UART */ ACPI_RSCONVERT_INFO *AcpiGbl_ConvertResourceSerialBusDispatch[] = { NULL, AcpiRsConvertI2cSerialBus, AcpiRsConvertSpiSerialBus, AcpiRsConvertUartSerialBus, }; #if defined(ACPI_DEBUG_OUTPUT) || defined(ACPI_DISASSEMBLER) || defined(ACPI_DEBUGGER) /* Dispatch table for resource dump functions */ ACPI_RSDUMP_INFO *AcpiGbl_DumpResourceDispatch[] = { AcpiRsDumpIrq, /* ACPI_RESOURCE_TYPE_IRQ */ AcpiRsDumpDma, /* ACPI_RESOURCE_TYPE_DMA */ AcpiRsDumpStartDpf, /* ACPI_RESOURCE_TYPE_START_DEPENDENT */ AcpiRsDumpEndDpf, /* ACPI_RESOURCE_TYPE_END_DEPENDENT */ AcpiRsDumpIo, /* ACPI_RESOURCE_TYPE_IO */ AcpiRsDumpFixedIo, /* ACPI_RESOURCE_TYPE_FIXED_IO */ AcpiRsDumpVendor, /* ACPI_RESOURCE_TYPE_VENDOR */ AcpiRsDumpEndTag, /* ACPI_RESOURCE_TYPE_END_TAG */ AcpiRsDumpMemory24, /* ACPI_RESOURCE_TYPE_MEMORY24 */ AcpiRsDumpMemory32, /* ACPI_RESOURCE_TYPE_MEMORY32 */ AcpiRsDumpFixedMemory32, /* ACPI_RESOURCE_TYPE_FIXED_MEMORY32 */ AcpiRsDumpAddress16, /* ACPI_RESOURCE_TYPE_ADDRESS16 */ AcpiRsDumpAddress32, /* ACPI_RESOURCE_TYPE_ADDRESS32 */ AcpiRsDumpAddress64, /* ACPI_RESOURCE_TYPE_ADDRESS64 */ AcpiRsDumpExtAddress64, /* ACPI_RESOURCE_TYPE_EXTENDED_ADDRESS64 */ AcpiRsDumpExtIrq, /* ACPI_RESOURCE_TYPE_EXTENDED_IRQ */ AcpiRsDumpGenericReg, /* ACPI_RESOURCE_TYPE_GENERIC_REGISTER */ AcpiRsDumpGpio, /* ACPI_RESOURCE_TYPE_GPIO */ AcpiRsDumpFixedDma, /* ACPI_RESOURCE_TYPE_FIXED_DMA */ NULL, /* ACPI_RESOURCE_TYPE_SERIAL_BUS */ }; ACPI_RSDUMP_INFO *AcpiGbl_DumpSerialBusDispatch[] = { NULL, AcpiRsDumpI2cSerialBus, /* AML_RESOURCE_I2C_BUS_TYPE */ AcpiRsDumpSpiSerialBus, /* AML_RESOURCE_SPI_BUS_TYPE */ AcpiRsDumpUartSerialBus, /* AML_RESOURCE_UART_BUS_TYPE */ }; #endif /* * Base sizes for external AML resource descriptors, indexed by internal type. * Includes size of the descriptor header (1 byte for small descriptors, * 3 bytes for large descriptors) */ const UINT8 AcpiGbl_AmlResourceSizes[] = { sizeof (AML_RESOURCE_IRQ), /* ACPI_RESOURCE_TYPE_IRQ (optional Byte 3 always created) */ sizeof (AML_RESOURCE_DMA), /* ACPI_RESOURCE_TYPE_DMA */ sizeof (AML_RESOURCE_START_DEPENDENT), /* ACPI_RESOURCE_TYPE_START_DEPENDENT (optional Byte 1 always created) */ sizeof (AML_RESOURCE_END_DEPENDENT), /* ACPI_RESOURCE_TYPE_END_DEPENDENT */ sizeof (AML_RESOURCE_IO), /* ACPI_RESOURCE_TYPE_IO */ sizeof (AML_RESOURCE_FIXED_IO), /* ACPI_RESOURCE_TYPE_FIXED_IO */ sizeof (AML_RESOURCE_VENDOR_SMALL), /* ACPI_RESOURCE_TYPE_VENDOR */ sizeof (AML_RESOURCE_END_TAG), /* ACPI_RESOURCE_TYPE_END_TAG */ sizeof (AML_RESOURCE_MEMORY24), /* ACPI_RESOURCE_TYPE_MEMORY24 */ sizeof (AML_RESOURCE_MEMORY32), /* ACPI_RESOURCE_TYPE_MEMORY32 */ sizeof (AML_RESOURCE_FIXED_MEMORY32), /* ACPI_RESOURCE_TYPE_FIXED_MEMORY32 */ sizeof (AML_RESOURCE_ADDRESS16), /* ACPI_RESOURCE_TYPE_ADDRESS16 */ sizeof (AML_RESOURCE_ADDRESS32), /* ACPI_RESOURCE_TYPE_ADDRESS32 */ sizeof (AML_RESOURCE_ADDRESS64), /* ACPI_RESOURCE_TYPE_ADDRESS64 */ sizeof (AML_RESOURCE_EXTENDED_ADDRESS64),/*ACPI_RESOURCE_TYPE_EXTENDED_ADDRESS64 */ sizeof (AML_RESOURCE_EXTENDED_IRQ), /* ACPI_RESOURCE_TYPE_EXTENDED_IRQ */ sizeof (AML_RESOURCE_GENERIC_REGISTER), /* ACPI_RESOURCE_TYPE_GENERIC_REGISTER */ sizeof (AML_RESOURCE_GPIO), /* ACPI_RESOURCE_TYPE_GPIO */ sizeof (AML_RESOURCE_FIXED_DMA), /* ACPI_RESOURCE_TYPE_FIXED_DMA */ sizeof (AML_RESOURCE_COMMON_SERIALBUS), /* ACPI_RESOURCE_TYPE_SERIAL_BUS */ }; const UINT8 AcpiGbl_ResourceStructSizes[] = { /* Small descriptors */ 0, 0, 0, 0, ACPI_RS_SIZE (ACPI_RESOURCE_IRQ), ACPI_RS_SIZE (ACPI_RESOURCE_DMA), ACPI_RS_SIZE (ACPI_RESOURCE_START_DEPENDENT), ACPI_RS_SIZE_MIN, ACPI_RS_SIZE (ACPI_RESOURCE_IO), ACPI_RS_SIZE (ACPI_RESOURCE_FIXED_IO), ACPI_RS_SIZE (ACPI_RESOURCE_FIXED_DMA), 0, 0, 0, ACPI_RS_SIZE (ACPI_RESOURCE_VENDOR), ACPI_RS_SIZE_MIN, /* Large descriptors */ 0, ACPI_RS_SIZE (ACPI_RESOURCE_MEMORY24), ACPI_RS_SIZE (ACPI_RESOURCE_GENERIC_REGISTER), 0, ACPI_RS_SIZE (ACPI_RESOURCE_VENDOR), ACPI_RS_SIZE (ACPI_RESOURCE_MEMORY32), ACPI_RS_SIZE (ACPI_RESOURCE_FIXED_MEMORY32), ACPI_RS_SIZE (ACPI_RESOURCE_ADDRESS32), ACPI_RS_SIZE (ACPI_RESOURCE_ADDRESS16), ACPI_RS_SIZE (ACPI_RESOURCE_EXTENDED_IRQ), ACPI_RS_SIZE (ACPI_RESOURCE_ADDRESS64), ACPI_RS_SIZE (ACPI_RESOURCE_EXTENDED_ADDRESS64), ACPI_RS_SIZE (ACPI_RESOURCE_GPIO), ACPI_RS_SIZE (ACPI_RESOURCE_COMMON_SERIALBUS) }; const UINT8 AcpiGbl_AmlResourceSerialBusSizes[] = { 0, sizeof (AML_RESOURCE_I2C_SERIALBUS), sizeof (AML_RESOURCE_SPI_SERIALBUS), sizeof (AML_RESOURCE_UART_SERIALBUS), }; const UINT8 AcpiGbl_ResourceStructSerialBusSizes[] = { 0, ACPI_RS_SIZE (ACPI_RESOURCE_I2C_SERIALBUS), ACPI_RS_SIZE (ACPI_RESOURCE_SPI_SERIALBUS), ACPI_RS_SIZE (ACPI_RESOURCE_UART_SERIALBUS), }; src/acpica/source/components/resources/rsio.c000066400000000000000000000350021231470457100217100ustar00rootroot00000000000000/******************************************************************************* * * Module Name: rsio - IO and DMA resource descriptors * ******************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #define __RSIO_C__ #include "acpi.h" #include "accommon.h" #include "acresrc.h" #define _COMPONENT ACPI_RESOURCES ACPI_MODULE_NAME ("rsio") /******************************************************************************* * * AcpiRsConvertIo * ******************************************************************************/ ACPI_RSCONVERT_INFO AcpiRsConvertIo[5] = { {ACPI_RSC_INITGET, ACPI_RESOURCE_TYPE_IO, ACPI_RS_SIZE (ACPI_RESOURCE_IO), ACPI_RSC_TABLE_SIZE (AcpiRsConvertIo)}, {ACPI_RSC_INITSET, ACPI_RESOURCE_NAME_IO, sizeof (AML_RESOURCE_IO), 0}, /* Decode flag */ {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.Io.IoDecode), AML_OFFSET (Io.Flags), 0}, /* * These fields are contiguous in both the source and destination: * Address Alignment * Length * Minimum Base Address * Maximum Base Address */ {ACPI_RSC_MOVE8, ACPI_RS_OFFSET (Data.Io.Alignment), AML_OFFSET (Io.Alignment), 2}, {ACPI_RSC_MOVE16, ACPI_RS_OFFSET (Data.Io.Minimum), AML_OFFSET (Io.Minimum), 2} }; /******************************************************************************* * * AcpiRsConvertFixedIo * ******************************************************************************/ ACPI_RSCONVERT_INFO AcpiRsConvertFixedIo[4] = { {ACPI_RSC_INITGET, ACPI_RESOURCE_TYPE_FIXED_IO, ACPI_RS_SIZE (ACPI_RESOURCE_FIXED_IO), ACPI_RSC_TABLE_SIZE (AcpiRsConvertFixedIo)}, {ACPI_RSC_INITSET, ACPI_RESOURCE_NAME_FIXED_IO, sizeof (AML_RESOURCE_FIXED_IO), 0}, /* * These fields are contiguous in both the source and destination: * Base Address * Length */ {ACPI_RSC_MOVE8, ACPI_RS_OFFSET (Data.FixedIo.AddressLength), AML_OFFSET (FixedIo.AddressLength), 1}, {ACPI_RSC_MOVE16, ACPI_RS_OFFSET (Data.FixedIo.Address), AML_OFFSET (FixedIo.Address), 1} }; /******************************************************************************* * * AcpiRsConvertGenericReg * ******************************************************************************/ ACPI_RSCONVERT_INFO AcpiRsConvertGenericReg[4] = { {ACPI_RSC_INITGET, ACPI_RESOURCE_TYPE_GENERIC_REGISTER, ACPI_RS_SIZE (ACPI_RESOURCE_GENERIC_REGISTER), ACPI_RSC_TABLE_SIZE (AcpiRsConvertGenericReg)}, {ACPI_RSC_INITSET, ACPI_RESOURCE_NAME_GENERIC_REGISTER, sizeof (AML_RESOURCE_GENERIC_REGISTER), 0}, /* * These fields are contiguous in both the source and destination: * Address Space ID * Register Bit Width * Register Bit Offset * Access Size */ {ACPI_RSC_MOVE8, ACPI_RS_OFFSET (Data.GenericReg.SpaceId), AML_OFFSET (GenericReg.AddressSpaceId), 4}, /* Get the Register Address */ {ACPI_RSC_MOVE64, ACPI_RS_OFFSET (Data.GenericReg.Address), AML_OFFSET (GenericReg.Address), 1} }; /******************************************************************************* * * AcpiRsConvertEndDpf * ******************************************************************************/ ACPI_RSCONVERT_INFO AcpiRsConvertEndDpf[2] = { {ACPI_RSC_INITGET, ACPI_RESOURCE_TYPE_END_DEPENDENT, ACPI_RS_SIZE_MIN, ACPI_RSC_TABLE_SIZE (AcpiRsConvertEndDpf)}, {ACPI_RSC_INITSET, ACPI_RESOURCE_NAME_END_DEPENDENT, sizeof (AML_RESOURCE_END_DEPENDENT), 0} }; /******************************************************************************* * * AcpiRsConvertEndTag * ******************************************************************************/ ACPI_RSCONVERT_INFO AcpiRsConvertEndTag[2] = { {ACPI_RSC_INITGET, ACPI_RESOURCE_TYPE_END_TAG, ACPI_RS_SIZE_MIN, ACPI_RSC_TABLE_SIZE (AcpiRsConvertEndTag)}, /* * Note: The checksum field is set to zero, meaning that the resource * data is treated as if the checksum operation succeeded. * (ACPI Spec 1.0b Section 6.4.2.8) */ {ACPI_RSC_INITSET, ACPI_RESOURCE_NAME_END_TAG, sizeof (AML_RESOURCE_END_TAG), 0} }; /******************************************************************************* * * AcpiRsGetStartDpf * ******************************************************************************/ ACPI_RSCONVERT_INFO AcpiRsGetStartDpf[6] = { {ACPI_RSC_INITGET, ACPI_RESOURCE_TYPE_START_DEPENDENT, ACPI_RS_SIZE (ACPI_RESOURCE_START_DEPENDENT), ACPI_RSC_TABLE_SIZE (AcpiRsGetStartDpf)}, /* Defaults for Compatibility and Performance priorities */ {ACPI_RSC_SET8, ACPI_RS_OFFSET (Data.StartDpf.CompatibilityPriority), ACPI_ACCEPTABLE_CONFIGURATION, 2}, /* Get the descriptor length (0 or 1 for Start Dpf descriptor) */ {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.StartDpf.DescriptorLength), AML_OFFSET (StartDpf.DescriptorType), 0}, /* All done if there is no flag byte present in the descriptor */ {ACPI_RSC_EXIT_NE, ACPI_RSC_COMPARE_AML_LENGTH, 0, 1}, /* Flag byte is present, get the flags */ {ACPI_RSC_2BITFLAG, ACPI_RS_OFFSET (Data.StartDpf.CompatibilityPriority), AML_OFFSET (StartDpf.Flags), 0}, {ACPI_RSC_2BITFLAG, ACPI_RS_OFFSET (Data.StartDpf.PerformanceRobustness), AML_OFFSET (StartDpf.Flags), 2} }; /******************************************************************************* * * AcpiRsSetStartDpf * ******************************************************************************/ ACPI_RSCONVERT_INFO AcpiRsSetStartDpf[10] = { /* Start with a default descriptor of length 1 */ {ACPI_RSC_INITSET, ACPI_RESOURCE_NAME_START_DEPENDENT, sizeof (AML_RESOURCE_START_DEPENDENT), ACPI_RSC_TABLE_SIZE (AcpiRsSetStartDpf)}, /* Set the default flag values */ {ACPI_RSC_2BITFLAG, ACPI_RS_OFFSET (Data.StartDpf.CompatibilityPriority), AML_OFFSET (StartDpf.Flags), 0}, {ACPI_RSC_2BITFLAG, ACPI_RS_OFFSET (Data.StartDpf.PerformanceRobustness), AML_OFFSET (StartDpf.Flags), 2}, /* * All done if the output descriptor length is required to be 1 * (i.e., optimization to 0 bytes cannot be attempted) */ {ACPI_RSC_EXIT_EQ, ACPI_RSC_COMPARE_VALUE, ACPI_RS_OFFSET(Data.StartDpf.DescriptorLength), 1}, /* Set length to 0 bytes (no flags byte) */ {ACPI_RSC_LENGTH, 0, 0, sizeof (AML_RESOURCE_START_DEPENDENT_NOPRIO)}, /* * All done if the output descriptor length is required to be 0. * * TBD: Perhaps we should check for error if input flags are not * compatible with a 0-byte descriptor. */ {ACPI_RSC_EXIT_EQ, ACPI_RSC_COMPARE_VALUE, ACPI_RS_OFFSET(Data.StartDpf.DescriptorLength), 0}, /* Reset length to 1 byte (descriptor with flags byte) */ {ACPI_RSC_LENGTH, 0, 0, sizeof (AML_RESOURCE_START_DEPENDENT)}, /* * All done if flags byte is necessary -- if either priority value * is not ACPI_ACCEPTABLE_CONFIGURATION */ {ACPI_RSC_EXIT_NE, ACPI_RSC_COMPARE_VALUE, ACPI_RS_OFFSET (Data.StartDpf.CompatibilityPriority), ACPI_ACCEPTABLE_CONFIGURATION}, {ACPI_RSC_EXIT_NE, ACPI_RSC_COMPARE_VALUE, ACPI_RS_OFFSET (Data.StartDpf.PerformanceRobustness), ACPI_ACCEPTABLE_CONFIGURATION}, /* Flag byte is not necessary */ {ACPI_RSC_LENGTH, 0, 0, sizeof (AML_RESOURCE_START_DEPENDENT_NOPRIO)} }; src/acpica/source/components/resources/rsirq.c000066400000000000000000000364001231470457100220770ustar00rootroot00000000000000/******************************************************************************* * * Module Name: rsirq - IRQ resource descriptors * ******************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #define __RSIRQ_C__ #include "acpi.h" #include "accommon.h" #include "acresrc.h" #define _COMPONENT ACPI_RESOURCES ACPI_MODULE_NAME ("rsirq") /******************************************************************************* * * AcpiRsGetIrq * ******************************************************************************/ ACPI_RSCONVERT_INFO AcpiRsGetIrq[9] = { {ACPI_RSC_INITGET, ACPI_RESOURCE_TYPE_IRQ, ACPI_RS_SIZE (ACPI_RESOURCE_IRQ), ACPI_RSC_TABLE_SIZE (AcpiRsGetIrq)}, /* Get the IRQ mask (bytes 1:2) */ {ACPI_RSC_BITMASK16,ACPI_RS_OFFSET (Data.Irq.Interrupts[0]), AML_OFFSET (Irq.IrqMask), ACPI_RS_OFFSET (Data.Irq.InterruptCount)}, /* Set default flags (others are zero) */ {ACPI_RSC_SET8, ACPI_RS_OFFSET (Data.Irq.Triggering), ACPI_EDGE_SENSITIVE, 1}, /* Get the descriptor length (2 or 3 for IRQ descriptor) */ {ACPI_RSC_2BITFLAG, ACPI_RS_OFFSET (Data.Irq.DescriptorLength), AML_OFFSET (Irq.DescriptorType), 0}, /* All done if no flag byte present in descriptor */ {ACPI_RSC_EXIT_NE, ACPI_RSC_COMPARE_AML_LENGTH, 0, 3}, /* Get flags: Triggering[0], Polarity[3], Sharing[4], Wake[5] */ {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.Irq.Triggering), AML_OFFSET (Irq.Flags), 0}, {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.Irq.Polarity), AML_OFFSET (Irq.Flags), 3}, {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.Irq.Sharable), AML_OFFSET (Irq.Flags), 4}, {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.Irq.WakeCapable), AML_OFFSET (Irq.Flags), 5} }; /******************************************************************************* * * AcpiRsSetIrq * ******************************************************************************/ ACPI_RSCONVERT_INFO AcpiRsSetIrq[14] = { /* Start with a default descriptor of length 3 */ {ACPI_RSC_INITSET, ACPI_RESOURCE_NAME_IRQ, sizeof (AML_RESOURCE_IRQ), ACPI_RSC_TABLE_SIZE (AcpiRsSetIrq)}, /* Convert interrupt list to 16-bit IRQ bitmask */ {ACPI_RSC_BITMASK16,ACPI_RS_OFFSET (Data.Irq.Interrupts[0]), AML_OFFSET (Irq.IrqMask), ACPI_RS_OFFSET (Data.Irq.InterruptCount)}, /* Set flags: Triggering[0], Polarity[3], Sharing[4], Wake[5] */ {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.Irq.Triggering), AML_OFFSET (Irq.Flags), 0}, {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.Irq.Polarity), AML_OFFSET (Irq.Flags), 3}, {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.Irq.Sharable), AML_OFFSET (Irq.Flags), 4}, {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.Irq.WakeCapable), AML_OFFSET (Irq.Flags), 5}, /* * All done if the output descriptor length is required to be 3 * (i.e., optimization to 2 bytes cannot be attempted) */ {ACPI_RSC_EXIT_EQ, ACPI_RSC_COMPARE_VALUE, ACPI_RS_OFFSET(Data.Irq.DescriptorLength), 3}, /* Set length to 2 bytes (no flags byte) */ {ACPI_RSC_LENGTH, 0, 0, sizeof (AML_RESOURCE_IRQ_NOFLAGS)}, /* * All done if the output descriptor length is required to be 2. * * TBD: Perhaps we should check for error if input flags are not * compatible with a 2-byte descriptor. */ {ACPI_RSC_EXIT_EQ, ACPI_RSC_COMPARE_VALUE, ACPI_RS_OFFSET(Data.Irq.DescriptorLength), 2}, /* Reset length to 3 bytes (descriptor with flags byte) */ {ACPI_RSC_LENGTH, 0, 0, sizeof (AML_RESOURCE_IRQ)}, /* * Check if the flags byte is necessary. Not needed if the flags are: * ACPI_EDGE_SENSITIVE, ACPI_ACTIVE_HIGH, ACPI_EXCLUSIVE */ {ACPI_RSC_EXIT_NE, ACPI_RSC_COMPARE_VALUE, ACPI_RS_OFFSET (Data.Irq.Triggering), ACPI_EDGE_SENSITIVE}, {ACPI_RSC_EXIT_NE, ACPI_RSC_COMPARE_VALUE, ACPI_RS_OFFSET (Data.Irq.Polarity), ACPI_ACTIVE_HIGH}, {ACPI_RSC_EXIT_NE, ACPI_RSC_COMPARE_VALUE, ACPI_RS_OFFSET (Data.Irq.Sharable), ACPI_EXCLUSIVE}, /* We can optimize to a 2-byte IrqNoFlags() descriptor */ {ACPI_RSC_LENGTH, 0, 0, sizeof (AML_RESOURCE_IRQ_NOFLAGS)} }; /******************************************************************************* * * AcpiRsConvertExtIrq * ******************************************************************************/ ACPI_RSCONVERT_INFO AcpiRsConvertExtIrq[10] = { {ACPI_RSC_INITGET, ACPI_RESOURCE_TYPE_EXTENDED_IRQ, ACPI_RS_SIZE (ACPI_RESOURCE_EXTENDED_IRQ), ACPI_RSC_TABLE_SIZE (AcpiRsConvertExtIrq)}, {ACPI_RSC_INITSET, ACPI_RESOURCE_NAME_EXTENDED_IRQ, sizeof (AML_RESOURCE_EXTENDED_IRQ), 0}, /* * Flags: Producer/Consumer[0], Triggering[1], Polarity[2], * Sharing[3], Wake[4] */ {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.ExtendedIrq.ProducerConsumer), AML_OFFSET (ExtendedIrq.Flags), 0}, {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.ExtendedIrq.Triggering), AML_OFFSET (ExtendedIrq.Flags), 1}, {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.ExtendedIrq.Polarity), AML_OFFSET (ExtendedIrq.Flags), 2}, {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.ExtendedIrq.Sharable), AML_OFFSET (ExtendedIrq.Flags), 3}, {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.ExtendedIrq.WakeCapable), AML_OFFSET (ExtendedIrq.Flags), 4}, /* IRQ Table length (Byte4) */ {ACPI_RSC_COUNT, ACPI_RS_OFFSET (Data.ExtendedIrq.InterruptCount), AML_OFFSET (ExtendedIrq.InterruptCount), sizeof (UINT32)}, /* Copy every IRQ in the table, each is 32 bits */ {ACPI_RSC_MOVE32, ACPI_RS_OFFSET (Data.ExtendedIrq.Interrupts[0]), AML_OFFSET (ExtendedIrq.Interrupts[0]), 0}, /* Optional ResourceSource (Index and String) */ {ACPI_RSC_SOURCEX, ACPI_RS_OFFSET (Data.ExtendedIrq.ResourceSource), ACPI_RS_OFFSET (Data.ExtendedIrq.Interrupts[0]), sizeof (AML_RESOURCE_EXTENDED_IRQ)} }; /******************************************************************************* * * AcpiRsConvertDma * ******************************************************************************/ ACPI_RSCONVERT_INFO AcpiRsConvertDma[6] = { {ACPI_RSC_INITGET, ACPI_RESOURCE_TYPE_DMA, ACPI_RS_SIZE (ACPI_RESOURCE_DMA), ACPI_RSC_TABLE_SIZE (AcpiRsConvertDma)}, {ACPI_RSC_INITSET, ACPI_RESOURCE_NAME_DMA, sizeof (AML_RESOURCE_DMA), 0}, /* Flags: transfer preference, bus mastering, channel speed */ {ACPI_RSC_2BITFLAG, ACPI_RS_OFFSET (Data.Dma.Transfer), AML_OFFSET (Dma.Flags), 0}, {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.Dma.BusMaster), AML_OFFSET (Dma.Flags), 2}, {ACPI_RSC_2BITFLAG, ACPI_RS_OFFSET (Data.Dma.Type), AML_OFFSET (Dma.Flags), 5}, /* DMA channel mask bits */ {ACPI_RSC_BITMASK, ACPI_RS_OFFSET (Data.Dma.Channels[0]), AML_OFFSET (Dma.DmaChannelMask), ACPI_RS_OFFSET (Data.Dma.ChannelCount)} }; /******************************************************************************* * * AcpiRsConvertFixedDma * ******************************************************************************/ ACPI_RSCONVERT_INFO AcpiRsConvertFixedDma[4] = { {ACPI_RSC_INITGET, ACPI_RESOURCE_TYPE_FIXED_DMA, ACPI_RS_SIZE (ACPI_RESOURCE_FIXED_DMA), ACPI_RSC_TABLE_SIZE (AcpiRsConvertFixedDma)}, {ACPI_RSC_INITSET, ACPI_RESOURCE_NAME_FIXED_DMA, sizeof (AML_RESOURCE_FIXED_DMA), 0}, /* * These fields are contiguous in both the source and destination: * RequestLines * Channels */ {ACPI_RSC_MOVE16, ACPI_RS_OFFSET (Data.FixedDma.RequestLines), AML_OFFSET (FixedDma.RequestLines), 2}, {ACPI_RSC_MOVE8, ACPI_RS_OFFSET (Data.FixedDma.Width), AML_OFFSET (FixedDma.Width), 1}, }; src/acpica/source/components/resources/rslist.c000066400000000000000000000330111231470457100222520ustar00rootroot00000000000000/******************************************************************************* * * Module Name: rslist - Linked list utilities * ******************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #define __RSLIST_C__ #include "acpi.h" #include "accommon.h" #include "acresrc.h" #define _COMPONENT ACPI_RESOURCES ACPI_MODULE_NAME ("rslist") /******************************************************************************* * * FUNCTION: AcpiRsConvertAmlToResources * * PARAMETERS: ACPI_WALK_AML_CALLBACK * ResourcePtr - Pointer to the buffer that will * contain the output structures * * RETURN: Status * * DESCRIPTION: Convert an AML resource to an internal representation of the * resource that is aligned and easier to access. * ******************************************************************************/ ACPI_STATUS AcpiRsConvertAmlToResources ( UINT8 *Aml, UINT32 Length, UINT32 Offset, UINT8 ResourceIndex, void **Context) { ACPI_RESOURCE **ResourcePtr = ACPI_CAST_INDIRECT_PTR ( ACPI_RESOURCE, Context); ACPI_RESOURCE *Resource; AML_RESOURCE *AmlResource; ACPI_RSCONVERT_INFO *ConversionTable; ACPI_STATUS Status; ACPI_FUNCTION_TRACE (RsConvertAmlToResources); /* * Check that the input buffer and all subsequent pointers into it * are aligned on a native word boundary. Most important on IA64 */ Resource = *ResourcePtr; if (ACPI_IS_MISALIGNED (Resource)) { ACPI_WARNING ((AE_INFO, "Misaligned resource pointer %p", Resource)); } /* Get the appropriate conversion info table */ AmlResource = ACPI_CAST_PTR (AML_RESOURCE, Aml); if (AcpiUtGetResourceType (Aml) == ACPI_RESOURCE_NAME_SERIAL_BUS) { if (AmlResource->CommonSerialBus.Type > AML_RESOURCE_MAX_SERIALBUSTYPE) { ConversionTable = NULL; } else { /* This is an I2C, SPI, or UART SerialBus descriptor */ ConversionTable = AcpiGbl_ConvertResourceSerialBusDispatch[ AmlResource->CommonSerialBus.Type]; } } else { ConversionTable = AcpiGbl_GetResourceDispatch[ResourceIndex]; } if (!ConversionTable) { ACPI_ERROR ((AE_INFO, "Invalid/unsupported resource descriptor: Type 0x%2.2X", ResourceIndex)); return_ACPI_STATUS (AE_AML_INVALID_RESOURCE_TYPE); } /* Convert the AML byte stream resource to a local resource struct */ Status = AcpiRsConvertAmlToResource ( Resource, AmlResource, ConversionTable); if (ACPI_FAILURE (Status)) { ACPI_EXCEPTION ((AE_INFO, Status, "Could not convert AML resource (Type 0x%X)", *Aml)); return_ACPI_STATUS (Status); } ACPI_DEBUG_PRINT ((ACPI_DB_RESOURCES, "Type %.2X, AmlLength %.2X InternalLength %.2X\n", AcpiUtGetResourceType (Aml), Length, Resource->Length)); /* Point to the next structure in the output buffer */ *ResourcePtr = ACPI_NEXT_RESOURCE (Resource); return_ACPI_STATUS (AE_OK); } /******************************************************************************* * * FUNCTION: AcpiRsConvertResourcesToAml * * PARAMETERS: Resource - Pointer to the resource linked list * AmlSizeNeeded - Calculated size of the byte stream * needed from calling AcpiRsGetAmlLength() * The size of the OutputBuffer is * guaranteed to be >= AmlSizeNeeded * OutputBuffer - Pointer to the buffer that will * contain the byte stream * * RETURN: Status * * DESCRIPTION: Takes the resource linked list and parses it, creating a * byte stream of resources in the caller's output buffer * ******************************************************************************/ ACPI_STATUS AcpiRsConvertResourcesToAml ( ACPI_RESOURCE *Resource, ACPI_SIZE AmlSizeNeeded, UINT8 *OutputBuffer) { UINT8 *Aml = OutputBuffer; UINT8 *EndAml = OutputBuffer + AmlSizeNeeded; ACPI_RSCONVERT_INFO *ConversionTable; ACPI_STATUS Status; ACPI_FUNCTION_TRACE (RsConvertResourcesToAml); /* Walk the resource descriptor list, convert each descriptor */ while (Aml < EndAml) { /* Validate the (internal) Resource Type */ if (Resource->Type > ACPI_RESOURCE_TYPE_MAX) { ACPI_ERROR ((AE_INFO, "Invalid descriptor type (0x%X) in resource list", Resource->Type)); return_ACPI_STATUS (AE_BAD_DATA); } /* Sanity check the length. It must not be zero, or we loop forever */ if (!Resource->Length) { ACPI_ERROR ((AE_INFO, "Invalid zero length descriptor in resource list\n")); return_ACPI_STATUS (AE_AML_BAD_RESOURCE_LENGTH); } /* Perform the conversion */ if (Resource->Type == ACPI_RESOURCE_TYPE_SERIAL_BUS) { if (Resource->Data.CommonSerialBus.Type > AML_RESOURCE_MAX_SERIALBUSTYPE) { ConversionTable = NULL; } else { /* This is an I2C, SPI, or UART SerialBus descriptor */ ConversionTable = AcpiGbl_ConvertResourceSerialBusDispatch[ Resource->Data.CommonSerialBus.Type]; } } else { ConversionTable = AcpiGbl_SetResourceDispatch[Resource->Type]; } if (!ConversionTable) { ACPI_ERROR ((AE_INFO, "Invalid/unsupported resource descriptor: Type 0x%2.2X", Resource->Type)); return_ACPI_STATUS (AE_AML_INVALID_RESOURCE_TYPE); } Status = AcpiRsConvertResourceToAml (Resource, ACPI_CAST_PTR (AML_RESOURCE, Aml), ConversionTable); if (ACPI_FAILURE (Status)) { ACPI_EXCEPTION ((AE_INFO, Status, "Could not convert resource (type 0x%X) to AML", Resource->Type)); return_ACPI_STATUS (Status); } /* Perform final sanity check on the new AML resource descriptor */ Status = AcpiUtValidateResource (NULL, ACPI_CAST_PTR (AML_RESOURCE, Aml), NULL); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } /* Check for end-of-list, normal exit */ if (Resource->Type == ACPI_RESOURCE_TYPE_END_TAG) { /* An End Tag indicates the end of the input Resource Template */ return_ACPI_STATUS (AE_OK); } /* * Extract the total length of the new descriptor and set the * Aml to point to the next (output) resource descriptor */ Aml += AcpiUtGetDescriptorLength (Aml); /* Point to the next input resource descriptor */ Resource = ACPI_NEXT_RESOURCE (Resource); } /* Completed buffer, but did not find an EndTag resource descriptor */ return_ACPI_STATUS (AE_AML_NO_RESOURCE_END_TAG); } src/acpica/source/components/resources/rsmemory.c000066400000000000000000000307671231470457100226260ustar00rootroot00000000000000/******************************************************************************* * * Module Name: rsmem24 - Memory resource descriptors * ******************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #define __RSMEMORY_C__ #include "acpi.h" #include "accommon.h" #include "acresrc.h" #define _COMPONENT ACPI_RESOURCES ACPI_MODULE_NAME ("rsmemory") /******************************************************************************* * * AcpiRsConvertMemory24 * ******************************************************************************/ ACPI_RSCONVERT_INFO AcpiRsConvertMemory24[4] = { {ACPI_RSC_INITGET, ACPI_RESOURCE_TYPE_MEMORY24, ACPI_RS_SIZE (ACPI_RESOURCE_MEMORY24), ACPI_RSC_TABLE_SIZE (AcpiRsConvertMemory24)}, {ACPI_RSC_INITSET, ACPI_RESOURCE_NAME_MEMORY24, sizeof (AML_RESOURCE_MEMORY24), 0}, /* Read/Write bit */ {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.Memory24.WriteProtect), AML_OFFSET (Memory24.Flags), 0}, /* * These fields are contiguous in both the source and destination: * Minimum Base Address * Maximum Base Address * Address Base Alignment * Range Length */ {ACPI_RSC_MOVE16, ACPI_RS_OFFSET (Data.Memory24.Minimum), AML_OFFSET (Memory24.Minimum), 4} }; /******************************************************************************* * * AcpiRsConvertMemory32 * ******************************************************************************/ ACPI_RSCONVERT_INFO AcpiRsConvertMemory32[4] = { {ACPI_RSC_INITGET, ACPI_RESOURCE_TYPE_MEMORY32, ACPI_RS_SIZE (ACPI_RESOURCE_MEMORY32), ACPI_RSC_TABLE_SIZE (AcpiRsConvertMemory32)}, {ACPI_RSC_INITSET, ACPI_RESOURCE_NAME_MEMORY32, sizeof (AML_RESOURCE_MEMORY32), 0}, /* Read/Write bit */ {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.Memory32.WriteProtect), AML_OFFSET (Memory32.Flags), 0}, /* * These fields are contiguous in both the source and destination: * Minimum Base Address * Maximum Base Address * Address Base Alignment * Range Length */ {ACPI_RSC_MOVE32, ACPI_RS_OFFSET (Data.Memory32.Minimum), AML_OFFSET (Memory32.Minimum), 4} }; /******************************************************************************* * * AcpiRsConvertFixedMemory32 * ******************************************************************************/ ACPI_RSCONVERT_INFO AcpiRsConvertFixedMemory32[4] = { {ACPI_RSC_INITGET, ACPI_RESOURCE_TYPE_FIXED_MEMORY32, ACPI_RS_SIZE (ACPI_RESOURCE_FIXED_MEMORY32), ACPI_RSC_TABLE_SIZE (AcpiRsConvertFixedMemory32)}, {ACPI_RSC_INITSET, ACPI_RESOURCE_NAME_FIXED_MEMORY32, sizeof (AML_RESOURCE_FIXED_MEMORY32), 0}, /* Read/Write bit */ {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.FixedMemory32.WriteProtect), AML_OFFSET (FixedMemory32.Flags), 0}, /* * These fields are contiguous in both the source and destination: * Base Address * Range Length */ {ACPI_RSC_MOVE32, ACPI_RS_OFFSET (Data.FixedMemory32.Address), AML_OFFSET (FixedMemory32.Address), 2} }; /******************************************************************************* * * AcpiRsGetVendorSmall * ******************************************************************************/ ACPI_RSCONVERT_INFO AcpiRsGetVendorSmall[3] = { {ACPI_RSC_INITGET, ACPI_RESOURCE_TYPE_VENDOR, ACPI_RS_SIZE (ACPI_RESOURCE_VENDOR), ACPI_RSC_TABLE_SIZE (AcpiRsGetVendorSmall)}, /* Length of the vendor data (byte count) */ {ACPI_RSC_COUNT16, ACPI_RS_OFFSET (Data.Vendor.ByteLength), 0, sizeof (UINT8)}, /* Vendor data */ {ACPI_RSC_MOVE8, ACPI_RS_OFFSET (Data.Vendor.ByteData[0]), sizeof (AML_RESOURCE_SMALL_HEADER), 0} }; /******************************************************************************* * * AcpiRsGetVendorLarge * ******************************************************************************/ ACPI_RSCONVERT_INFO AcpiRsGetVendorLarge[3] = { {ACPI_RSC_INITGET, ACPI_RESOURCE_TYPE_VENDOR, ACPI_RS_SIZE (ACPI_RESOURCE_VENDOR), ACPI_RSC_TABLE_SIZE (AcpiRsGetVendorLarge)}, /* Length of the vendor data (byte count) */ {ACPI_RSC_COUNT16, ACPI_RS_OFFSET (Data.Vendor.ByteLength), 0, sizeof (UINT8)}, /* Vendor data */ {ACPI_RSC_MOVE8, ACPI_RS_OFFSET (Data.Vendor.ByteData[0]), sizeof (AML_RESOURCE_LARGE_HEADER), 0} }; /******************************************************************************* * * AcpiRsSetVendor * ******************************************************************************/ ACPI_RSCONVERT_INFO AcpiRsSetVendor[7] = { /* Default is a small vendor descriptor */ {ACPI_RSC_INITSET, ACPI_RESOURCE_NAME_VENDOR_SMALL, sizeof (AML_RESOURCE_SMALL_HEADER), ACPI_RSC_TABLE_SIZE (AcpiRsSetVendor)}, /* Get the length and copy the data */ {ACPI_RSC_COUNT16, ACPI_RS_OFFSET (Data.Vendor.ByteLength), 0, 0}, {ACPI_RSC_MOVE8, ACPI_RS_OFFSET (Data.Vendor.ByteData[0]), sizeof (AML_RESOURCE_SMALL_HEADER), 0}, /* * All done if the Vendor byte length is 7 or less, meaning that it will * fit within a small descriptor */ {ACPI_RSC_EXIT_LE, 0, 0, 7}, /* Must create a large vendor descriptor */ {ACPI_RSC_INITSET, ACPI_RESOURCE_NAME_VENDOR_LARGE, sizeof (AML_RESOURCE_LARGE_HEADER), 0}, {ACPI_RSC_COUNT16, ACPI_RS_OFFSET (Data.Vendor.ByteLength), 0, 0}, {ACPI_RSC_MOVE8, ACPI_RS_OFFSET (Data.Vendor.ByteData[0]), sizeof (AML_RESOURCE_LARGE_HEADER), 0} }; src/acpica/source/components/resources/rsmisc.c000066400000000000000000000713521231470457100222440ustar00rootroot00000000000000/******************************************************************************* * * Module Name: rsmisc - Miscellaneous resource descriptors * ******************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #define __RSMISC_C__ #include "acpi.h" #include "accommon.h" #include "acresrc.h" #define _COMPONENT ACPI_RESOURCES ACPI_MODULE_NAME ("rsmisc") #define INIT_RESOURCE_TYPE(i) i->ResourceOffset #define INIT_RESOURCE_LENGTH(i) i->AmlOffset #define INIT_TABLE_LENGTH(i) i->Value #define COMPARE_OPCODE(i) i->ResourceOffset #define COMPARE_TARGET(i) i->AmlOffset #define COMPARE_VALUE(i) i->Value /******************************************************************************* * * FUNCTION: AcpiRsConvertAmlToResource * * PARAMETERS: Resource - Pointer to the resource descriptor * Aml - Where the AML descriptor is returned * Info - Pointer to appropriate conversion table * * RETURN: Status * * DESCRIPTION: Convert an external AML resource descriptor to the corresponding * internal resource descriptor * ******************************************************************************/ ACPI_STATUS AcpiRsConvertAmlToResource ( ACPI_RESOURCE *Resource, AML_RESOURCE *Aml, ACPI_RSCONVERT_INFO *Info) { ACPI_RS_LENGTH AmlResourceLength; void *Source; void *Destination; char *Target; UINT8 Count; UINT8 FlagsMode = FALSE; UINT16 ItemCount = 0; UINT16 Temp16 = 0; ACPI_FUNCTION_TRACE (RsConvertAmlToResource); if (!Info) { return_ACPI_STATUS (AE_BAD_PARAMETER); } if (((ACPI_SIZE) Resource) & 0x3) { /* Each internal resource struct is expected to be 32-bit aligned */ ACPI_WARNING ((AE_INFO, "Misaligned resource pointer (get): %p Type 0x%2.2X Length %u", Resource, Resource->Type, Resource->Length)); } /* Extract the resource Length field (does not include header length) */ AmlResourceLength = AcpiUtGetResourceLength (Aml); /* * First table entry must be ACPI_RSC_INITxxx and must contain the * table length (# of table entries) */ Count = INIT_TABLE_LENGTH (Info); while (Count) { /* * Source is the external AML byte stream buffer, * destination is the internal resource descriptor */ Source = ACPI_ADD_PTR (void, Aml, Info->AmlOffset); Destination = ACPI_ADD_PTR (void, Resource, Info->ResourceOffset); switch (Info->Opcode) { case ACPI_RSC_INITGET: /* * Get the resource type and the initial (minimum) length */ ACPI_MEMSET (Resource, 0, INIT_RESOURCE_LENGTH (Info)); Resource->Type = INIT_RESOURCE_TYPE (Info); Resource->Length = INIT_RESOURCE_LENGTH (Info); break; case ACPI_RSC_INITSET: break; case ACPI_RSC_FLAGINIT: FlagsMode = TRUE; break; case ACPI_RSC_1BITFLAG: /* * Mask and shift the flag bit */ ACPI_SET8 (Destination, ((ACPI_GET8 (Source) >> Info->Value) & 0x01)); break; case ACPI_RSC_2BITFLAG: /* * Mask and shift the flag bits */ ACPI_SET8 (Destination, ((ACPI_GET8 (Source) >> Info->Value) & 0x03)); break; case ACPI_RSC_3BITFLAG: /* * Mask and shift the flag bits */ ACPI_SET8 (Destination, ((ACPI_GET8 (Source) >> Info->Value) & 0x07)); break; case ACPI_RSC_COUNT: ItemCount = ACPI_GET8 (Source); ACPI_SET8 (Destination, ItemCount); Resource->Length = Resource->Length + (Info->Value * (ItemCount - 1)); break; case ACPI_RSC_COUNT16: ItemCount = AmlResourceLength; ACPI_SET16 (Destination, ItemCount); Resource->Length = Resource->Length + (Info->Value * (ItemCount - 1)); break; case ACPI_RSC_COUNT_GPIO_PIN: Target = ACPI_ADD_PTR (void, Aml, Info->Value); ItemCount = ACPI_GET16 (Target) - ACPI_GET16 (Source); Resource->Length = Resource->Length + ItemCount; ItemCount = ItemCount / 2; ACPI_SET16 (Destination, ItemCount); break; case ACPI_RSC_COUNT_GPIO_VEN: ItemCount = ACPI_GET8 (Source); ACPI_SET8 (Destination, ItemCount); Resource->Length = Resource->Length + (Info->Value * ItemCount); break; case ACPI_RSC_COUNT_GPIO_RES: /* * Vendor data is optional (length/offset may both be zero) * Examine vendor data length field first */ Target = ACPI_ADD_PTR (void, Aml, (Info->Value + 2)); if (ACPI_GET16 (Target)) { /* Use vendor offset to get resource source length */ Target = ACPI_ADD_PTR (void, Aml, Info->Value); ItemCount = ACPI_GET16 (Target) - ACPI_GET16 (Source); } else { /* No vendor data to worry about */ ItemCount = Aml->LargeHeader.ResourceLength + sizeof (AML_RESOURCE_LARGE_HEADER) - ACPI_GET16 (Source); } Resource->Length = Resource->Length + ItemCount; ACPI_SET16 (Destination, ItemCount); break; case ACPI_RSC_COUNT_SERIAL_VEN: ItemCount = ACPI_GET16 (Source) - Info->Value; Resource->Length = Resource->Length + ItemCount; ACPI_SET16 (Destination, ItemCount); break; case ACPI_RSC_COUNT_SERIAL_RES: ItemCount = (AmlResourceLength + sizeof (AML_RESOURCE_LARGE_HEADER)) - ACPI_GET16 (Source) - Info->Value; Resource->Length = Resource->Length + ItemCount; ACPI_SET16 (Destination, ItemCount); break; case ACPI_RSC_LENGTH: Resource->Length = Resource->Length + Info->Value; break; case ACPI_RSC_MOVE8: case ACPI_RSC_MOVE16: case ACPI_RSC_MOVE32: case ACPI_RSC_MOVE64: /* * Raw data move. Use the Info value field unless ItemCount has * been previously initialized via a COUNT opcode */ if (Info->Value) { ItemCount = Info->Value; } AcpiRsMoveData (Destination, Source, ItemCount, Info->Opcode); break; case ACPI_RSC_MOVE_GPIO_PIN: /* Generate and set the PIN data pointer */ Target = (char *) ACPI_ADD_PTR (void, Resource, (Resource->Length - ItemCount * 2)); *(UINT16 **) Destination = ACPI_CAST_PTR (UINT16, Target); /* Copy the PIN data */ Source = ACPI_ADD_PTR (void, Aml, ACPI_GET16 (Source)); AcpiRsMoveData (Target, Source, ItemCount, Info->Opcode); break; case ACPI_RSC_MOVE_GPIO_RES: /* Generate and set the ResourceSource string pointer */ Target = (char *) ACPI_ADD_PTR (void, Resource, (Resource->Length - ItemCount)); *(UINT8 **) Destination = ACPI_CAST_PTR (UINT8, Target); /* Copy the ResourceSource string */ Source = ACPI_ADD_PTR (void, Aml, ACPI_GET16 (Source)); AcpiRsMoveData (Target, Source, ItemCount, Info->Opcode); break; case ACPI_RSC_MOVE_SERIAL_VEN: /* Generate and set the Vendor Data pointer */ Target = (char *) ACPI_ADD_PTR (void, Resource, (Resource->Length - ItemCount)); *(UINT8 **) Destination = ACPI_CAST_PTR (UINT8, Target); /* Copy the Vendor Data */ Source = ACPI_ADD_PTR (void, Aml, Info->Value); AcpiRsMoveData (Target, Source, ItemCount, Info->Opcode); break; case ACPI_RSC_MOVE_SERIAL_RES: /* Generate and set the ResourceSource string pointer */ Target = (char *) ACPI_ADD_PTR (void, Resource, (Resource->Length - ItemCount)); *(UINT8 **) Destination = ACPI_CAST_PTR (UINT8, Target); /* Copy the ResourceSource string */ Source = ACPI_ADD_PTR (void, Aml, (ACPI_GET16 (Source) + Info->Value)); AcpiRsMoveData (Target, Source, ItemCount, Info->Opcode); break; case ACPI_RSC_SET8: ACPI_MEMSET (Destination, Info->AmlOffset, Info->Value); break; case ACPI_RSC_DATA8: Target = ACPI_ADD_PTR (char, Resource, Info->Value); ACPI_MEMCPY (Destination, Source, ACPI_GET16 (Target)); break; case ACPI_RSC_ADDRESS: /* * Common handler for address descriptor flags */ if (!AcpiRsGetAddressCommon (Resource, Aml)) { return_ACPI_STATUS (AE_AML_INVALID_RESOURCE_TYPE); } break; case ACPI_RSC_SOURCE: /* * Optional ResourceSource (Index and String) */ Resource->Length += AcpiRsGetResourceSource (AmlResourceLength, Info->Value, Destination, Aml, NULL); break; case ACPI_RSC_SOURCEX: /* * Optional ResourceSource (Index and String). This is the more * complicated case used by the Interrupt() macro */ Target = ACPI_ADD_PTR (char, Resource, Info->AmlOffset + (ItemCount * 4)); Resource->Length += AcpiRsGetResourceSource (AmlResourceLength, (ACPI_RS_LENGTH) (((ItemCount - 1) * sizeof (UINT32)) + Info->Value), Destination, Aml, Target); break; case ACPI_RSC_BITMASK: /* * 8-bit encoded bitmask (DMA macro) */ ItemCount = AcpiRsDecodeBitmask (ACPI_GET8 (Source), Destination); if (ItemCount) { Resource->Length += (ItemCount - 1); } Target = ACPI_ADD_PTR (char, Resource, Info->Value); ACPI_SET8 (Target, ItemCount); break; case ACPI_RSC_BITMASK16: /* * 16-bit encoded bitmask (IRQ macro) */ ACPI_MOVE_16_TO_16 (&Temp16, Source); ItemCount = AcpiRsDecodeBitmask (Temp16, Destination); if (ItemCount) { Resource->Length += (ItemCount - 1); } Target = ACPI_ADD_PTR (char, Resource, Info->Value); ACPI_SET8 (Target, ItemCount); break; case ACPI_RSC_EXIT_NE: /* * Control - Exit conversion if not equal */ switch (Info->ResourceOffset) { case ACPI_RSC_COMPARE_AML_LENGTH: if (AmlResourceLength != Info->Value) { goto Exit; } break; case ACPI_RSC_COMPARE_VALUE: if (ACPI_GET8 (Source) != Info->Value) { goto Exit; } break; default: ACPI_ERROR ((AE_INFO, "Invalid conversion sub-opcode")); return_ACPI_STATUS (AE_BAD_PARAMETER); } break; default: ACPI_ERROR ((AE_INFO, "Invalid conversion opcode")); return_ACPI_STATUS (AE_BAD_PARAMETER); } Count--; Info++; } Exit: if (!FlagsMode) { /* Round the resource struct length up to the next boundary (32 or 64) */ Resource->Length = (UINT32) ACPI_ROUND_UP_TO_NATIVE_WORD (Resource->Length); } return_ACPI_STATUS (AE_OK); } /******************************************************************************* * * FUNCTION: AcpiRsConvertResourceToAml * * PARAMETERS: Resource - Pointer to the resource descriptor * Aml - Where the AML descriptor is returned * Info - Pointer to appropriate conversion table * * RETURN: Status * * DESCRIPTION: Convert an internal resource descriptor to the corresponding * external AML resource descriptor. * ******************************************************************************/ ACPI_STATUS AcpiRsConvertResourceToAml ( ACPI_RESOURCE *Resource, AML_RESOURCE *Aml, ACPI_RSCONVERT_INFO *Info) { void *Source = NULL; void *Destination; char *Target; ACPI_RSDESC_SIZE AmlLength = 0; UINT8 Count; UINT16 Temp16 = 0; UINT16 ItemCount = 0; ACPI_FUNCTION_TRACE (RsConvertResourceToAml); if (!Info) { return_ACPI_STATUS (AE_BAD_PARAMETER); } /* * First table entry must be ACPI_RSC_INITxxx and must contain the * table length (# of table entries) */ Count = INIT_TABLE_LENGTH (Info); while (Count) { /* * Source is the internal resource descriptor, * destination is the external AML byte stream buffer */ Source = ACPI_ADD_PTR (void, Resource, Info->ResourceOffset); Destination = ACPI_ADD_PTR (void, Aml, Info->AmlOffset); switch (Info->Opcode) { case ACPI_RSC_INITSET: ACPI_MEMSET (Aml, 0, INIT_RESOURCE_LENGTH (Info)); AmlLength = INIT_RESOURCE_LENGTH (Info); AcpiRsSetResourceHeader (INIT_RESOURCE_TYPE (Info), AmlLength, Aml); break; case ACPI_RSC_INITGET: break; case ACPI_RSC_FLAGINIT: /* * Clear the flag byte */ ACPI_SET8 (Destination, 0); break; case ACPI_RSC_1BITFLAG: /* * Mask and shift the flag bit */ ACPI_SET_BIT (*ACPI_CAST8 (Destination), (UINT8) ((ACPI_GET8 (Source) & 0x01) << Info->Value)); break; case ACPI_RSC_2BITFLAG: /* * Mask and shift the flag bits */ ACPI_SET_BIT (*ACPI_CAST8 (Destination), (UINT8) ((ACPI_GET8 (Source) & 0x03) << Info->Value)); break; case ACPI_RSC_3BITFLAG: /* * Mask and shift the flag bits */ ACPI_SET_BIT (*ACPI_CAST8 (Destination), (UINT8) ((ACPI_GET8 (Source) & 0x07) << Info->Value)); break; case ACPI_RSC_COUNT: ItemCount = ACPI_GET8 (Source); ACPI_SET8 (Destination, ItemCount); AmlLength = (UINT16) (AmlLength + (Info->Value * (ItemCount - 1))); break; case ACPI_RSC_COUNT16: ItemCount = ACPI_GET16 (Source); AmlLength = (UINT16) (AmlLength + ItemCount); AcpiRsSetResourceLength (AmlLength, Aml); break; case ACPI_RSC_COUNT_GPIO_PIN: ItemCount = ACPI_GET16 (Source); ACPI_SET16 (Destination, AmlLength); AmlLength = (UINT16) (AmlLength + ItemCount * 2); Target = ACPI_ADD_PTR (void, Aml, Info->Value); ACPI_SET16 (Target, AmlLength); AcpiRsSetResourceLength (AmlLength, Aml); break; case ACPI_RSC_COUNT_GPIO_VEN: ItemCount = ACPI_GET16 (Source); ACPI_SET16 (Destination, ItemCount); AmlLength = (UINT16) (AmlLength + (Info->Value * ItemCount)); AcpiRsSetResourceLength (AmlLength, Aml); break; case ACPI_RSC_COUNT_GPIO_RES: /* Set resource source string length */ ItemCount = ACPI_GET16 (Source); ACPI_SET16 (Destination, AmlLength); /* Compute offset for the Vendor Data */ AmlLength = (UINT16) (AmlLength + ItemCount); Target = ACPI_ADD_PTR (void, Aml, Info->Value); /* Set vendor offset only if there is vendor data */ if (Resource->Data.Gpio.VendorLength) { ACPI_SET16 (Target, AmlLength); } AcpiRsSetResourceLength (AmlLength, Aml); break; case ACPI_RSC_COUNT_SERIAL_VEN: ItemCount = ACPI_GET16 (Source); ACPI_SET16 (Destination, ItemCount + Info->Value); AmlLength = (UINT16) (AmlLength + ItemCount); AcpiRsSetResourceLength (AmlLength, Aml); break; case ACPI_RSC_COUNT_SERIAL_RES: ItemCount = ACPI_GET16 (Source); AmlLength = (UINT16) (AmlLength + ItemCount); AcpiRsSetResourceLength (AmlLength, Aml); break; case ACPI_RSC_LENGTH: AcpiRsSetResourceLength (Info->Value, Aml); break; case ACPI_RSC_MOVE8: case ACPI_RSC_MOVE16: case ACPI_RSC_MOVE32: case ACPI_RSC_MOVE64: if (Info->Value) { ItemCount = Info->Value; } AcpiRsMoveData (Destination, Source, ItemCount, Info->Opcode); break; case ACPI_RSC_MOVE_GPIO_PIN: Destination = (char *) ACPI_ADD_PTR (void, Aml, ACPI_GET16 (Destination)); Source = * (UINT16 **) Source; AcpiRsMoveData (Destination, Source, ItemCount, Info->Opcode); break; case ACPI_RSC_MOVE_GPIO_RES: /* Used for both ResourceSource string and VendorData */ Destination = (char *) ACPI_ADD_PTR (void, Aml, ACPI_GET16 (Destination)); Source = * (UINT8 **) Source; AcpiRsMoveData (Destination, Source, ItemCount, Info->Opcode); break; case ACPI_RSC_MOVE_SERIAL_VEN: Destination = (char *) ACPI_ADD_PTR (void, Aml, (AmlLength - ItemCount)); Source = * (UINT8 **) Source; AcpiRsMoveData (Destination, Source, ItemCount, Info->Opcode); break; case ACPI_RSC_MOVE_SERIAL_RES: Destination = (char *) ACPI_ADD_PTR (void, Aml, (AmlLength - ItemCount)); Source = * (UINT8 **) Source; AcpiRsMoveData (Destination, Source, ItemCount, Info->Opcode); break; case ACPI_RSC_ADDRESS: /* Set the Resource Type, General Flags, and Type-Specific Flags */ AcpiRsSetAddressCommon (Aml, Resource); break; case ACPI_RSC_SOURCEX: /* * Optional ResourceSource (Index and String) */ AmlLength = AcpiRsSetResourceSource ( Aml, (ACPI_RS_LENGTH) AmlLength, Source); AcpiRsSetResourceLength (AmlLength, Aml); break; case ACPI_RSC_SOURCE: /* * Optional ResourceSource (Index and String). This is the more * complicated case used by the Interrupt() macro */ AmlLength = AcpiRsSetResourceSource (Aml, Info->Value, Source); AcpiRsSetResourceLength (AmlLength, Aml); break; case ACPI_RSC_BITMASK: /* * 8-bit encoded bitmask (DMA macro) */ ACPI_SET8 (Destination, AcpiRsEncodeBitmask (Source, *ACPI_ADD_PTR (UINT8, Resource, Info->Value))); break; case ACPI_RSC_BITMASK16: /* * 16-bit encoded bitmask (IRQ macro) */ Temp16 = AcpiRsEncodeBitmask (Source, *ACPI_ADD_PTR (UINT8, Resource, Info->Value)); ACPI_MOVE_16_TO_16 (Destination, &Temp16); break; case ACPI_RSC_EXIT_LE: /* * Control - Exit conversion if less than or equal */ if (ItemCount <= Info->Value) { goto Exit; } break; case ACPI_RSC_EXIT_NE: /* * Control - Exit conversion if not equal */ switch (COMPARE_OPCODE (Info)) { case ACPI_RSC_COMPARE_VALUE: if (*ACPI_ADD_PTR (UINT8, Resource, COMPARE_TARGET (Info)) != COMPARE_VALUE (Info)) { goto Exit; } break; default: ACPI_ERROR ((AE_INFO, "Invalid conversion sub-opcode")); return_ACPI_STATUS (AE_BAD_PARAMETER); } break; case ACPI_RSC_EXIT_EQ: /* * Control - Exit conversion if equal */ if (*ACPI_ADD_PTR (UINT8, Resource, COMPARE_TARGET (Info)) == COMPARE_VALUE (Info)) { goto Exit; } break; default: ACPI_ERROR ((AE_INFO, "Invalid conversion opcode")); return_ACPI_STATUS (AE_BAD_PARAMETER); } Count--; Info++; } Exit: return_ACPI_STATUS (AE_OK); } #if 0 /* Previous resource validations */ if (Aml->ExtAddress64.RevisionID != AML_RESOURCE_EXTENDED_ADDRESS_REVISION) { return_ACPI_STATUS (AE_SUPPORT); } if (Resource->Data.StartDpf.PerformanceRobustness >= 3) { return_ACPI_STATUS (AE_AML_BAD_RESOURCE_VALUE); } if (((Aml->Irq.Flags & 0x09) == 0x00) || ((Aml->Irq.Flags & 0x09) == 0x09)) { /* * Only [ActiveHigh, EdgeSensitive] or [ActiveLow, LevelSensitive] * polarity/trigger interrupts are allowed (ACPI spec, section * "IRQ Format"), so 0x00 and 0x09 are illegal. */ ACPI_ERROR ((AE_INFO, "Invalid interrupt polarity/trigger in resource list, 0x%X", Aml->Irq.Flags)); return_ACPI_STATUS (AE_BAD_DATA); } Resource->Data.ExtendedIrq.InterruptCount = Temp8; if (Temp8 < 1) { /* Must have at least one IRQ */ return_ACPI_STATUS (AE_AML_BAD_RESOURCE_LENGTH); } if (Resource->Data.Dma.Transfer == 0x03) { ACPI_ERROR ((AE_INFO, "Invalid DMA.Transfer preference (3)")); return_ACPI_STATUS (AE_BAD_DATA); } #endif src/acpica/source/components/resources/rsserial.c000066400000000000000000000514271231470457100225710ustar00rootroot00000000000000/******************************************************************************* * * Module Name: rsserial - GPIO/SerialBus resource descriptors * ******************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #define __RSIRQ_C__ #include "acpi.h" #include "accommon.h" #include "acresrc.h" #define _COMPONENT ACPI_RESOURCES ACPI_MODULE_NAME ("rsserial") /******************************************************************************* * * AcpiRsConvertGpio * ******************************************************************************/ ACPI_RSCONVERT_INFO AcpiRsConvertGpio[18] = { {ACPI_RSC_INITGET, ACPI_RESOURCE_TYPE_GPIO, ACPI_RS_SIZE (ACPI_RESOURCE_GPIO), ACPI_RSC_TABLE_SIZE (AcpiRsConvertGpio)}, {ACPI_RSC_INITSET, ACPI_RESOURCE_NAME_GPIO, sizeof (AML_RESOURCE_GPIO), 0}, /* * These fields are contiguous in both the source and destination: * RevisionId * ConnectionType */ {ACPI_RSC_MOVE8, ACPI_RS_OFFSET (Data.Gpio.RevisionId), AML_OFFSET (Gpio.RevisionId), 2}, {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.Gpio.ProducerConsumer), AML_OFFSET (Gpio.Flags), 0}, {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.Gpio.Sharable), AML_OFFSET (Gpio.IntFlags), 3}, {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.Gpio.WakeCapable), AML_OFFSET (Gpio.IntFlags), 4}, {ACPI_RSC_2BITFLAG, ACPI_RS_OFFSET (Data.Gpio.IoRestriction), AML_OFFSET (Gpio.IntFlags), 0}, {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.Gpio.Triggering), AML_OFFSET (Gpio.IntFlags), 0}, {ACPI_RSC_2BITFLAG, ACPI_RS_OFFSET (Data.Gpio.Polarity), AML_OFFSET (Gpio.IntFlags), 1}, {ACPI_RSC_MOVE8, ACPI_RS_OFFSET (Data.Gpio.PinConfig), AML_OFFSET (Gpio.PinConfig), 1}, /* * These fields are contiguous in both the source and destination: * DriveStrength * DebounceTimeout */ {ACPI_RSC_MOVE16, ACPI_RS_OFFSET (Data.Gpio.DriveStrength), AML_OFFSET (Gpio.DriveStrength), 2}, /* Pin Table */ {ACPI_RSC_COUNT_GPIO_PIN, ACPI_RS_OFFSET (Data.Gpio.PinTableLength), AML_OFFSET (Gpio.PinTableOffset), AML_OFFSET (Gpio.ResSourceOffset)}, {ACPI_RSC_MOVE_GPIO_PIN, ACPI_RS_OFFSET (Data.Gpio.PinTable), AML_OFFSET (Gpio.PinTableOffset), 0}, /* Resource Source */ {ACPI_RSC_MOVE8, ACPI_RS_OFFSET (Data.Gpio.ResourceSource.Index), AML_OFFSET (Gpio.ResSourceIndex), 1}, {ACPI_RSC_COUNT_GPIO_RES, ACPI_RS_OFFSET (Data.Gpio.ResourceSource.StringLength), AML_OFFSET (Gpio.ResSourceOffset), AML_OFFSET (Gpio.VendorOffset)}, {ACPI_RSC_MOVE_GPIO_RES, ACPI_RS_OFFSET (Data.Gpio.ResourceSource.StringPtr), AML_OFFSET (Gpio.ResSourceOffset), 0}, /* Vendor Data */ {ACPI_RSC_COUNT_GPIO_VEN, ACPI_RS_OFFSET (Data.Gpio.VendorLength), AML_OFFSET (Gpio.VendorLength), 1}, {ACPI_RSC_MOVE_GPIO_RES, ACPI_RS_OFFSET (Data.Gpio.VendorData), AML_OFFSET (Gpio.VendorOffset), 0}, }; /******************************************************************************* * * AcpiRsConvertI2cSerialBus * ******************************************************************************/ ACPI_RSCONVERT_INFO AcpiRsConvertI2cSerialBus[16] = { {ACPI_RSC_INITGET, ACPI_RESOURCE_TYPE_SERIAL_BUS, ACPI_RS_SIZE (ACPI_RESOURCE_I2C_SERIALBUS), ACPI_RSC_TABLE_SIZE (AcpiRsConvertI2cSerialBus)}, {ACPI_RSC_INITSET, ACPI_RESOURCE_NAME_SERIAL_BUS, sizeof (AML_RESOURCE_I2C_SERIALBUS), 0}, {ACPI_RSC_MOVE8, ACPI_RS_OFFSET (Data.CommonSerialBus.RevisionId), AML_OFFSET (CommonSerialBus.RevisionId), 1}, {ACPI_RSC_MOVE8, ACPI_RS_OFFSET (Data.CommonSerialBus.Type), AML_OFFSET (CommonSerialBus.Type), 1}, {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.CommonSerialBus.SlaveMode), AML_OFFSET (CommonSerialBus.Flags), 0}, {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.CommonSerialBus.ProducerConsumer), AML_OFFSET (CommonSerialBus.Flags), 1}, {ACPI_RSC_MOVE8, ACPI_RS_OFFSET (Data.CommonSerialBus.TypeRevisionId), AML_OFFSET (CommonSerialBus.TypeRevisionId), 1}, {ACPI_RSC_MOVE16, ACPI_RS_OFFSET (Data.CommonSerialBus.TypeDataLength), AML_OFFSET (CommonSerialBus.TypeDataLength), 1}, /* Vendor data */ {ACPI_RSC_COUNT_SERIAL_VEN, ACPI_RS_OFFSET (Data.CommonSerialBus.VendorLength), AML_OFFSET (CommonSerialBus.TypeDataLength), AML_RESOURCE_I2C_MIN_DATA_LEN}, {ACPI_RSC_MOVE_SERIAL_VEN, ACPI_RS_OFFSET (Data.CommonSerialBus.VendorData), 0, sizeof (AML_RESOURCE_I2C_SERIALBUS)}, /* Resource Source */ {ACPI_RSC_MOVE8, ACPI_RS_OFFSET (Data.CommonSerialBus.ResourceSource.Index), AML_OFFSET (CommonSerialBus.ResSourceIndex), 1}, {ACPI_RSC_COUNT_SERIAL_RES, ACPI_RS_OFFSET (Data.CommonSerialBus.ResourceSource.StringLength), AML_OFFSET (CommonSerialBus.TypeDataLength), sizeof (AML_RESOURCE_COMMON_SERIALBUS)}, {ACPI_RSC_MOVE_SERIAL_RES, ACPI_RS_OFFSET (Data.CommonSerialBus.ResourceSource.StringPtr), AML_OFFSET (CommonSerialBus.TypeDataLength), sizeof (AML_RESOURCE_COMMON_SERIALBUS)}, /* I2C bus type specific */ {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.I2cSerialBus.AccessMode), AML_OFFSET (I2cSerialBus.TypeSpecificFlags), 0}, {ACPI_RSC_MOVE32, ACPI_RS_OFFSET (Data.I2cSerialBus.ConnectionSpeed), AML_OFFSET (I2cSerialBus.ConnectionSpeed), 1}, {ACPI_RSC_MOVE16, ACPI_RS_OFFSET (Data.I2cSerialBus.SlaveAddress), AML_OFFSET (I2cSerialBus.SlaveAddress), 1}, }; /******************************************************************************* * * AcpiRsConvertSpiSerialBus * ******************************************************************************/ ACPI_RSCONVERT_INFO AcpiRsConvertSpiSerialBus[20] = { {ACPI_RSC_INITGET, ACPI_RESOURCE_TYPE_SERIAL_BUS, ACPI_RS_SIZE (ACPI_RESOURCE_SPI_SERIALBUS), ACPI_RSC_TABLE_SIZE (AcpiRsConvertSpiSerialBus)}, {ACPI_RSC_INITSET, ACPI_RESOURCE_NAME_SERIAL_BUS, sizeof (AML_RESOURCE_SPI_SERIALBUS), 0}, {ACPI_RSC_MOVE8, ACPI_RS_OFFSET (Data.CommonSerialBus.RevisionId), AML_OFFSET (CommonSerialBus.RevisionId), 1}, {ACPI_RSC_MOVE8, ACPI_RS_OFFSET (Data.CommonSerialBus.Type), AML_OFFSET (CommonSerialBus.Type), 1}, {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.CommonSerialBus.SlaveMode), AML_OFFSET (CommonSerialBus.Flags), 0}, {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.CommonSerialBus.ProducerConsumer), AML_OFFSET (CommonSerialBus.Flags), 1}, {ACPI_RSC_MOVE8, ACPI_RS_OFFSET (Data.CommonSerialBus.TypeRevisionId), AML_OFFSET (CommonSerialBus.TypeRevisionId), 1}, {ACPI_RSC_MOVE16, ACPI_RS_OFFSET (Data.CommonSerialBus.TypeDataLength), AML_OFFSET (CommonSerialBus.TypeDataLength), 1}, /* Vendor data */ {ACPI_RSC_COUNT_SERIAL_VEN, ACPI_RS_OFFSET (Data.CommonSerialBus.VendorLength), AML_OFFSET (CommonSerialBus.TypeDataLength), AML_RESOURCE_SPI_MIN_DATA_LEN}, {ACPI_RSC_MOVE_SERIAL_VEN, ACPI_RS_OFFSET (Data.CommonSerialBus.VendorData), 0, sizeof (AML_RESOURCE_SPI_SERIALBUS)}, /* Resource Source */ {ACPI_RSC_MOVE8, ACPI_RS_OFFSET (Data.CommonSerialBus.ResourceSource.Index), AML_OFFSET (CommonSerialBus.ResSourceIndex), 1}, {ACPI_RSC_COUNT_SERIAL_RES, ACPI_RS_OFFSET (Data.CommonSerialBus.ResourceSource.StringLength), AML_OFFSET (CommonSerialBus.TypeDataLength), sizeof (AML_RESOURCE_COMMON_SERIALBUS)}, {ACPI_RSC_MOVE_SERIAL_RES, ACPI_RS_OFFSET (Data.CommonSerialBus.ResourceSource.StringPtr), AML_OFFSET (CommonSerialBus.TypeDataLength), sizeof (AML_RESOURCE_COMMON_SERIALBUS)}, /* Spi bus type specific */ {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.SpiSerialBus.WireMode), AML_OFFSET (SpiSerialBus.TypeSpecificFlags), 0}, {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.SpiSerialBus.DevicePolarity), AML_OFFSET (SpiSerialBus.TypeSpecificFlags), 1}, {ACPI_RSC_MOVE8, ACPI_RS_OFFSET (Data.SpiSerialBus.DataBitLength), AML_OFFSET (SpiSerialBus.DataBitLength), 1}, {ACPI_RSC_MOVE8, ACPI_RS_OFFSET (Data.SpiSerialBus.ClockPhase), AML_OFFSET (SpiSerialBus.ClockPhase), 1}, {ACPI_RSC_MOVE8, ACPI_RS_OFFSET (Data.SpiSerialBus.ClockPolarity), AML_OFFSET (SpiSerialBus.ClockPolarity), 1}, {ACPI_RSC_MOVE16, ACPI_RS_OFFSET (Data.SpiSerialBus.DeviceSelection), AML_OFFSET (SpiSerialBus.DeviceSelection), 1}, {ACPI_RSC_MOVE32, ACPI_RS_OFFSET (Data.SpiSerialBus.ConnectionSpeed), AML_OFFSET (SpiSerialBus.ConnectionSpeed), 1}, }; /******************************************************************************* * * AcpiRsConvertUartSerialBus * ******************************************************************************/ ACPI_RSCONVERT_INFO AcpiRsConvertUartSerialBus[22] = { {ACPI_RSC_INITGET, ACPI_RESOURCE_TYPE_SERIAL_BUS, ACPI_RS_SIZE (ACPI_RESOURCE_UART_SERIALBUS), ACPI_RSC_TABLE_SIZE (AcpiRsConvertUartSerialBus)}, {ACPI_RSC_INITSET, ACPI_RESOURCE_NAME_SERIAL_BUS, sizeof (AML_RESOURCE_UART_SERIALBUS), 0}, {ACPI_RSC_MOVE8, ACPI_RS_OFFSET (Data.CommonSerialBus.RevisionId), AML_OFFSET (CommonSerialBus.RevisionId), 1}, {ACPI_RSC_MOVE8, ACPI_RS_OFFSET (Data.CommonSerialBus.Type), AML_OFFSET (CommonSerialBus.Type), 1}, {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.CommonSerialBus.SlaveMode), AML_OFFSET (CommonSerialBus.Flags), 0}, {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.CommonSerialBus.ProducerConsumer), AML_OFFSET (CommonSerialBus.Flags), 1}, {ACPI_RSC_MOVE8, ACPI_RS_OFFSET (Data.CommonSerialBus.TypeRevisionId), AML_OFFSET (CommonSerialBus.TypeRevisionId), 1}, {ACPI_RSC_MOVE16, ACPI_RS_OFFSET (Data.CommonSerialBus.TypeDataLength), AML_OFFSET (CommonSerialBus.TypeDataLength), 1}, /* Vendor data */ {ACPI_RSC_COUNT_SERIAL_VEN, ACPI_RS_OFFSET (Data.CommonSerialBus.VendorLength), AML_OFFSET (CommonSerialBus.TypeDataLength), AML_RESOURCE_UART_MIN_DATA_LEN}, {ACPI_RSC_MOVE_SERIAL_VEN, ACPI_RS_OFFSET (Data.CommonSerialBus.VendorData), 0, sizeof (AML_RESOURCE_UART_SERIALBUS)}, /* Resource Source */ {ACPI_RSC_MOVE8, ACPI_RS_OFFSET (Data.CommonSerialBus.ResourceSource.Index), AML_OFFSET (CommonSerialBus.ResSourceIndex), 1}, {ACPI_RSC_COUNT_SERIAL_RES, ACPI_RS_OFFSET (Data.CommonSerialBus.ResourceSource.StringLength), AML_OFFSET (CommonSerialBus.TypeDataLength), sizeof (AML_RESOURCE_COMMON_SERIALBUS)}, {ACPI_RSC_MOVE_SERIAL_RES, ACPI_RS_OFFSET (Data.CommonSerialBus.ResourceSource.StringPtr), AML_OFFSET (CommonSerialBus.TypeDataLength), sizeof (AML_RESOURCE_COMMON_SERIALBUS)}, /* Uart bus type specific */ {ACPI_RSC_2BITFLAG, ACPI_RS_OFFSET (Data.UartSerialBus.FlowControl), AML_OFFSET (UartSerialBus.TypeSpecificFlags), 0}, {ACPI_RSC_2BITFLAG, ACPI_RS_OFFSET (Data.UartSerialBus.StopBits), AML_OFFSET (UartSerialBus.TypeSpecificFlags), 2}, {ACPI_RSC_3BITFLAG, ACPI_RS_OFFSET (Data.UartSerialBus.DataBits), AML_OFFSET (UartSerialBus.TypeSpecificFlags), 4}, {ACPI_RSC_1BITFLAG, ACPI_RS_OFFSET (Data.UartSerialBus.Endian), AML_OFFSET (UartSerialBus.TypeSpecificFlags), 7}, {ACPI_RSC_MOVE8, ACPI_RS_OFFSET (Data.UartSerialBus.Parity), AML_OFFSET (UartSerialBus.Parity), 1}, {ACPI_RSC_MOVE8, ACPI_RS_OFFSET (Data.UartSerialBus.LinesEnabled), AML_OFFSET (UartSerialBus.LinesEnabled), 1}, {ACPI_RSC_MOVE16, ACPI_RS_OFFSET (Data.UartSerialBus.RxFifoSize), AML_OFFSET (UartSerialBus.RxFifoSize), 1}, {ACPI_RSC_MOVE16, ACPI_RS_OFFSET (Data.UartSerialBus.TxFifoSize), AML_OFFSET (UartSerialBus.TxFifoSize), 1}, {ACPI_RSC_MOVE32, ACPI_RS_OFFSET (Data.UartSerialBus.DefaultBaudRate), AML_OFFSET (UartSerialBus.DefaultBaudRate), 1}, }; src/acpica/source/components/resources/rsutils.c000066400000000000000000000722701231470457100224510ustar00rootroot00000000000000/******************************************************************************* * * Module Name: rsutils - Utilities for the resource manager * ******************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #define __RSUTILS_C__ #include "acpi.h" #include "accommon.h" #include "acnamesp.h" #include "acresrc.h" #define _COMPONENT ACPI_RESOURCES ACPI_MODULE_NAME ("rsutils") /******************************************************************************* * * FUNCTION: AcpiRsDecodeBitmask * * PARAMETERS: Mask - Bitmask to decode * List - Where the converted list is returned * * RETURN: Count of bits set (length of list) * * DESCRIPTION: Convert a bit mask into a list of values * ******************************************************************************/ UINT8 AcpiRsDecodeBitmask ( UINT16 Mask, UINT8 *List) { UINT8 i; UINT8 BitCount; ACPI_FUNCTION_ENTRY (); /* Decode the mask bits */ for (i = 0, BitCount = 0; Mask; i++) { if (Mask & 0x0001) { List[BitCount] = i; BitCount++; } Mask >>= 1; } return (BitCount); } /******************************************************************************* * * FUNCTION: AcpiRsEncodeBitmask * * PARAMETERS: List - List of values to encode * Count - Length of list * * RETURN: Encoded bitmask * * DESCRIPTION: Convert a list of values to an encoded bitmask * ******************************************************************************/ UINT16 AcpiRsEncodeBitmask ( UINT8 *List, UINT8 Count) { UINT32 i; UINT16 Mask; ACPI_FUNCTION_ENTRY (); /* Encode the list into a single bitmask */ for (i = 0, Mask = 0; i < Count; i++) { Mask |= (0x1 << List[i]); } return (Mask); } /******************************************************************************* * * FUNCTION: AcpiRsMoveData * * PARAMETERS: Destination - Pointer to the destination descriptor * Source - Pointer to the source descriptor * ItemCount - How many items to move * MoveType - Byte width * * RETURN: None * * DESCRIPTION: Move multiple data items from one descriptor to another. Handles * alignment issues and endian issues if necessary, as configured * via the ACPI_MOVE_* macros. (This is why a memcpy is not used) * ******************************************************************************/ void AcpiRsMoveData ( void *Destination, void *Source, UINT16 ItemCount, UINT8 MoveType) { UINT32 i; ACPI_FUNCTION_ENTRY (); /* One move per item */ for (i = 0; i < ItemCount; i++) { switch (MoveType) { /* * For the 8-bit case, we can perform the move all at once * since there are no alignment or endian issues */ case ACPI_RSC_MOVE8: case ACPI_RSC_MOVE_GPIO_RES: case ACPI_RSC_MOVE_SERIAL_VEN: case ACPI_RSC_MOVE_SERIAL_RES: ACPI_MEMCPY (Destination, Source, ItemCount); return; /* * 16-, 32-, and 64-bit cases must use the move macros that perform * endian conversion and/or accommodate hardware that cannot perform * misaligned memory transfers */ case ACPI_RSC_MOVE16: case ACPI_RSC_MOVE_GPIO_PIN: ACPI_MOVE_16_TO_16 (&ACPI_CAST_PTR (UINT16, Destination)[i], &ACPI_CAST_PTR (UINT16, Source)[i]); break; case ACPI_RSC_MOVE32: ACPI_MOVE_32_TO_32 (&ACPI_CAST_PTR (UINT32, Destination)[i], &ACPI_CAST_PTR (UINT32, Source)[i]); break; case ACPI_RSC_MOVE64: ACPI_MOVE_64_TO_64 (&ACPI_CAST_PTR (UINT64, Destination)[i], &ACPI_CAST_PTR (UINT64, Source)[i]); break; default: return; } } } /******************************************************************************* * * FUNCTION: AcpiRsSetResourceLength * * PARAMETERS: TotalLength - Length of the AML descriptor, including * the header and length fields. * Aml - Pointer to the raw AML descriptor * * RETURN: None * * DESCRIPTION: Set the ResourceLength field of an AML * resource descriptor, both Large and Small descriptors are * supported automatically. Note: Descriptor Type field must * be valid. * ******************************************************************************/ void AcpiRsSetResourceLength ( ACPI_RSDESC_SIZE TotalLength, AML_RESOURCE *Aml) { ACPI_RS_LENGTH ResourceLength; ACPI_FUNCTION_ENTRY (); /* Length is the total descriptor length minus the header length */ ResourceLength = (ACPI_RS_LENGTH) (TotalLength - AcpiUtGetResourceHeaderLength (Aml)); /* Length is stored differently for large and small descriptors */ if (Aml->SmallHeader.DescriptorType & ACPI_RESOURCE_NAME_LARGE) { /* Large descriptor -- bytes 1-2 contain the 16-bit length */ ACPI_MOVE_16_TO_16 (&Aml->LargeHeader.ResourceLength, &ResourceLength); } else { /* Small descriptor -- bits 2:0 of byte 0 contain the length */ Aml->SmallHeader.DescriptorType = (UINT8) /* Clear any existing length, preserving descriptor type bits */ ((Aml->SmallHeader.DescriptorType & ~ACPI_RESOURCE_NAME_SMALL_LENGTH_MASK) | ResourceLength); } } /******************************************************************************* * * FUNCTION: AcpiRsSetResourceHeader * * PARAMETERS: DescriptorType - Byte to be inserted as the type * TotalLength - Length of the AML descriptor, including * the header and length fields. * Aml - Pointer to the raw AML descriptor * * RETURN: None * * DESCRIPTION: Set the DescriptorType and ResourceLength fields of an AML * resource descriptor, both Large and Small descriptors are * supported automatically * ******************************************************************************/ void AcpiRsSetResourceHeader ( UINT8 DescriptorType, ACPI_RSDESC_SIZE TotalLength, AML_RESOURCE *Aml) { ACPI_FUNCTION_ENTRY (); /* Set the Resource Type */ Aml->SmallHeader.DescriptorType = DescriptorType; /* Set the Resource Length */ AcpiRsSetResourceLength (TotalLength, Aml); } /******************************************************************************* * * FUNCTION: AcpiRsStrcpy * * PARAMETERS: Destination - Pointer to the destination string * Source - Pointer to the source string * * RETURN: String length, including NULL terminator * * DESCRIPTION: Local string copy that returns the string length, saving a * strcpy followed by a strlen. * ******************************************************************************/ static UINT16 AcpiRsStrcpy ( char *Destination, char *Source) { UINT16 i; ACPI_FUNCTION_ENTRY (); for (i = 0; Source[i]; i++) { Destination[i] = Source[i]; } Destination[i] = 0; /* Return string length including the NULL terminator */ return ((UINT16) (i + 1)); } /******************************************************************************* * * FUNCTION: AcpiRsGetResourceSource * * PARAMETERS: ResourceLength - Length field of the descriptor * MinimumLength - Minimum length of the descriptor (minus * any optional fields) * ResourceSource - Where the ResourceSource is returned * Aml - Pointer to the raw AML descriptor * StringPtr - (optional) where to store the actual * ResourceSource string * * RETURN: Length of the string plus NULL terminator, rounded up to native * word boundary * * DESCRIPTION: Copy the optional ResourceSource data from a raw AML descriptor * to an internal resource descriptor * ******************************************************************************/ ACPI_RS_LENGTH AcpiRsGetResourceSource ( ACPI_RS_LENGTH ResourceLength, ACPI_RS_LENGTH MinimumLength, ACPI_RESOURCE_SOURCE *ResourceSource, AML_RESOURCE *Aml, char *StringPtr) { ACPI_RSDESC_SIZE TotalLength; UINT8 *AmlResourceSource; ACPI_FUNCTION_ENTRY (); TotalLength = ResourceLength + sizeof (AML_RESOURCE_LARGE_HEADER); AmlResourceSource = ACPI_ADD_PTR (UINT8, Aml, MinimumLength); /* * ResourceSource is present if the length of the descriptor is longer than * the minimum length. * * Note: Some resource descriptors will have an additional null, so * we add 1 to the minimum length. */ if (TotalLength > (ACPI_RSDESC_SIZE) (MinimumLength + 1)) { /* Get the ResourceSourceIndex */ ResourceSource->Index = AmlResourceSource[0]; ResourceSource->StringPtr = StringPtr; if (!StringPtr) { /* * String destination pointer is not specified; Set the String * pointer to the end of the current ResourceSource structure. */ ResourceSource->StringPtr = ACPI_ADD_PTR (char, ResourceSource, sizeof (ACPI_RESOURCE_SOURCE)); } /* * In order for the Resource length to be a multiple of the native * word, calculate the length of the string (+1 for NULL terminator) * and expand to the next word multiple. * * Zero the entire area of the buffer. */ TotalLength = (UINT32) ACPI_STRLEN ( ACPI_CAST_PTR (char, &AmlResourceSource[1])) + 1; TotalLength = (UINT32) ACPI_ROUND_UP_TO_NATIVE_WORD (TotalLength); ACPI_MEMSET (ResourceSource->StringPtr, 0, TotalLength); /* Copy the ResourceSource string to the destination */ ResourceSource->StringLength = AcpiRsStrcpy (ResourceSource->StringPtr, ACPI_CAST_PTR (char, &AmlResourceSource[1])); return ((ACPI_RS_LENGTH) TotalLength); } /* ResourceSource is not present */ ResourceSource->Index = 0; ResourceSource->StringLength = 0; ResourceSource->StringPtr = NULL; return (0); } /******************************************************************************* * * FUNCTION: AcpiRsSetResourceSource * * PARAMETERS: Aml - Pointer to the raw AML descriptor * MinimumLength - Minimum length of the descriptor (minus * any optional fields) * ResourceSource - Internal ResourceSource * * RETURN: Total length of the AML descriptor * * DESCRIPTION: Convert an optional ResourceSource from internal format to a * raw AML resource descriptor * ******************************************************************************/ ACPI_RSDESC_SIZE AcpiRsSetResourceSource ( AML_RESOURCE *Aml, ACPI_RS_LENGTH MinimumLength, ACPI_RESOURCE_SOURCE *ResourceSource) { UINT8 *AmlResourceSource; ACPI_RSDESC_SIZE DescriptorLength; ACPI_FUNCTION_ENTRY (); DescriptorLength = MinimumLength; /* Non-zero string length indicates presence of a ResourceSource */ if (ResourceSource->StringLength) { /* Point to the end of the AML descriptor */ AmlResourceSource = ACPI_ADD_PTR (UINT8, Aml, MinimumLength); /* Copy the ResourceSourceIndex */ AmlResourceSource[0] = (UINT8) ResourceSource->Index; /* Copy the ResourceSource string */ ACPI_STRCPY (ACPI_CAST_PTR (char, &AmlResourceSource[1]), ResourceSource->StringPtr); /* * Add the length of the string (+ 1 for null terminator) to the * final descriptor length */ DescriptorLength += ((ACPI_RSDESC_SIZE) ResourceSource->StringLength + 1); } /* Return the new total length of the AML descriptor */ return (DescriptorLength); } /******************************************************************************* * * FUNCTION: AcpiRsGetPrtMethodData * * PARAMETERS: Node - Device node * RetBuffer - Pointer to a buffer structure for the * results * * RETURN: Status * * DESCRIPTION: This function is called to get the _PRT value of an object * contained in an object specified by the handle passed in * * If the function fails an appropriate status will be returned * and the contents of the callers buffer is undefined. * ******************************************************************************/ ACPI_STATUS AcpiRsGetPrtMethodData ( ACPI_NAMESPACE_NODE *Node, ACPI_BUFFER *RetBuffer) { ACPI_OPERAND_OBJECT *ObjDesc; ACPI_STATUS Status; ACPI_FUNCTION_TRACE (RsGetPrtMethodData); /* Parameters guaranteed valid by caller */ /* Execute the method, no parameters */ Status = AcpiUtEvaluateObject (Node, METHOD_NAME__PRT, ACPI_BTYPE_PACKAGE, &ObjDesc); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } /* * Create a resource linked list from the byte stream buffer that comes * back from the _CRS method execution. */ Status = AcpiRsCreatePciRoutingTable (ObjDesc, RetBuffer); /* On exit, we must delete the object returned by EvaluateObject */ AcpiUtRemoveReference (ObjDesc); return_ACPI_STATUS (Status); } /******************************************************************************* * * FUNCTION: AcpiRsGetCrsMethodData * * PARAMETERS: Node - Device node * RetBuffer - Pointer to a buffer structure for the * results * * RETURN: Status * * DESCRIPTION: This function is called to get the _CRS value of an object * contained in an object specified by the handle passed in * * If the function fails an appropriate status will be returned * and the contents of the callers buffer is undefined. * ******************************************************************************/ ACPI_STATUS AcpiRsGetCrsMethodData ( ACPI_NAMESPACE_NODE *Node, ACPI_BUFFER *RetBuffer) { ACPI_OPERAND_OBJECT *ObjDesc; ACPI_STATUS Status; ACPI_FUNCTION_TRACE (RsGetCrsMethodData); /* Parameters guaranteed valid by caller */ /* Execute the method, no parameters */ Status = AcpiUtEvaluateObject (Node, METHOD_NAME__CRS, ACPI_BTYPE_BUFFER, &ObjDesc); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } /* * Make the call to create a resource linked list from the * byte stream buffer that comes back from the _CRS method * execution. */ Status = AcpiRsCreateResourceList (ObjDesc, RetBuffer); /* On exit, we must delete the object returned by evaluateObject */ AcpiUtRemoveReference (ObjDesc); return_ACPI_STATUS (Status); } /******************************************************************************* * * FUNCTION: AcpiRsGetPrsMethodData * * PARAMETERS: Node - Device node * RetBuffer - Pointer to a buffer structure for the * results * * RETURN: Status * * DESCRIPTION: This function is called to get the _PRS value of an object * contained in an object specified by the handle passed in * * If the function fails an appropriate status will be returned * and the contents of the callers buffer is undefined. * ******************************************************************************/ ACPI_STATUS AcpiRsGetPrsMethodData ( ACPI_NAMESPACE_NODE *Node, ACPI_BUFFER *RetBuffer) { ACPI_OPERAND_OBJECT *ObjDesc; ACPI_STATUS Status; ACPI_FUNCTION_TRACE (RsGetPrsMethodData); /* Parameters guaranteed valid by caller */ /* Execute the method, no parameters */ Status = AcpiUtEvaluateObject (Node, METHOD_NAME__PRS, ACPI_BTYPE_BUFFER, &ObjDesc); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } /* * Make the call to create a resource linked list from the * byte stream buffer that comes back from the _CRS method * execution. */ Status = AcpiRsCreateResourceList (ObjDesc, RetBuffer); /* On exit, we must delete the object returned by evaluateObject */ AcpiUtRemoveReference (ObjDesc); return_ACPI_STATUS (Status); } /******************************************************************************* * * FUNCTION: AcpiRsGetAeiMethodData * * PARAMETERS: Node - Device node * RetBuffer - Pointer to a buffer structure for the * results * * RETURN: Status * * DESCRIPTION: This function is called to get the _AEI value of an object * contained in an object specified by the handle passed in * * If the function fails an appropriate status will be returned * and the contents of the callers buffer is undefined. * ******************************************************************************/ ACPI_STATUS AcpiRsGetAeiMethodData ( ACPI_NAMESPACE_NODE *Node, ACPI_BUFFER *RetBuffer) { ACPI_OPERAND_OBJECT *ObjDesc; ACPI_STATUS Status; ACPI_FUNCTION_TRACE (RsGetAeiMethodData); /* Parameters guaranteed valid by caller */ /* Execute the method, no parameters */ Status = AcpiUtEvaluateObject (Node, METHOD_NAME__AEI, ACPI_BTYPE_BUFFER, &ObjDesc); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } /* * Make the call to create a resource linked list from the * byte stream buffer that comes back from the _CRS method * execution. */ Status = AcpiRsCreateResourceList (ObjDesc, RetBuffer); /* On exit, we must delete the object returned by evaluateObject */ AcpiUtRemoveReference (ObjDesc); return_ACPI_STATUS (Status); } /******************************************************************************* * * FUNCTION: AcpiRsGetMethodData * * PARAMETERS: Handle - Handle to the containing object * Path - Path to method, relative to Handle * RetBuffer - Pointer to a buffer structure for the * results * * RETURN: Status * * DESCRIPTION: This function is called to get the _CRS or _PRS value of an * object contained in an object specified by the handle passed in * * If the function fails an appropriate status will be returned * and the contents of the callers buffer is undefined. * ******************************************************************************/ ACPI_STATUS AcpiRsGetMethodData ( ACPI_HANDLE Handle, char *Path, ACPI_BUFFER *RetBuffer) { ACPI_OPERAND_OBJECT *ObjDesc; ACPI_STATUS Status; ACPI_FUNCTION_TRACE (RsGetMethodData); /* Parameters guaranteed valid by caller */ /* Execute the method, no parameters */ Status = AcpiUtEvaluateObject (ACPI_CAST_PTR (ACPI_NAMESPACE_NODE, Handle), Path, ACPI_BTYPE_BUFFER, &ObjDesc); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } /* * Make the call to create a resource linked list from the * byte stream buffer that comes back from the method * execution. */ Status = AcpiRsCreateResourceList (ObjDesc, RetBuffer); /* On exit, we must delete the object returned by EvaluateObject */ AcpiUtRemoveReference (ObjDesc); return_ACPI_STATUS (Status); } /******************************************************************************* * * FUNCTION: AcpiRsSetSrsMethodData * * PARAMETERS: Node - Device node * InBuffer - Pointer to a buffer structure of the * parameter * * RETURN: Status * * DESCRIPTION: This function is called to set the _SRS of an object contained * in an object specified by the handle passed in * * If the function fails an appropriate status will be returned * and the contents of the callers buffer is undefined. * * Note: Parameters guaranteed valid by caller * ******************************************************************************/ ACPI_STATUS AcpiRsSetSrsMethodData ( ACPI_NAMESPACE_NODE *Node, ACPI_BUFFER *InBuffer) { ACPI_EVALUATE_INFO *Info; ACPI_OPERAND_OBJECT *Args[2]; ACPI_STATUS Status; ACPI_BUFFER Buffer; ACPI_FUNCTION_TRACE (RsSetSrsMethodData); /* Allocate and initialize the evaluation information block */ Info = ACPI_ALLOCATE_ZEROED (sizeof (ACPI_EVALUATE_INFO)); if (!Info) { return_ACPI_STATUS (AE_NO_MEMORY); } Info->PrefixNode = Node; Info->RelativePathname = METHOD_NAME__SRS; Info->Parameters = Args; Info->Flags = ACPI_IGNORE_RETURN_VALUE; /* * The InBuffer parameter will point to a linked list of * resource parameters. It needs to be formatted into a * byte stream to be sent in as an input parameter to _SRS * * Convert the linked list into a byte stream */ Buffer.Length = ACPI_ALLOCATE_LOCAL_BUFFER; Status = AcpiRsCreateAmlResources (InBuffer, &Buffer); if (ACPI_FAILURE (Status)) { goto Cleanup; } /* Create and initialize the method parameter object */ Args[0] = AcpiUtCreateInternalObject (ACPI_TYPE_BUFFER); if (!Args[0]) { /* * Must free the buffer allocated above (otherwise it is freed * later) */ ACPI_FREE (Buffer.Pointer); Status = AE_NO_MEMORY; goto Cleanup; } Args[0]->Buffer.Length = (UINT32) Buffer.Length; Args[0]->Buffer.Pointer = Buffer.Pointer; Args[0]->Common.Flags = AOPOBJ_DATA_VALID; Args[1] = NULL; /* Execute the method, no return value is expected */ Status = AcpiNsEvaluate (Info); /* Clean up and return the status from AcpiNsEvaluate */ AcpiUtRemoveReference (Args[0]); Cleanup: ACPI_FREE (Info); return_ACPI_STATUS (Status); } src/acpica/source/components/resources/rsxface.c000066400000000000000000000645141231470457100224010ustar00rootroot00000000000000/******************************************************************************* * * Module Name: rsxface - Public interfaces to the resource manager * ******************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #define __RSXFACE_C__ #define EXPORT_ACPI_INTERFACES #include "acpi.h" #include "accommon.h" #include "acresrc.h" #include "acnamesp.h" #define _COMPONENT ACPI_RESOURCES ACPI_MODULE_NAME ("rsxface") /* Local macros for 16,32-bit to 64-bit conversion */ #define ACPI_COPY_FIELD(Out, In, Field) ((Out)->Field = (In)->Field) #define ACPI_COPY_ADDRESS(Out, In) \ ACPI_COPY_FIELD(Out, In, ResourceType); \ ACPI_COPY_FIELD(Out, In, ProducerConsumer); \ ACPI_COPY_FIELD(Out, In, Decode); \ ACPI_COPY_FIELD(Out, In, MinAddressFixed); \ ACPI_COPY_FIELD(Out, In, MaxAddressFixed); \ ACPI_COPY_FIELD(Out, In, Info); \ ACPI_COPY_FIELD(Out, In, Granularity); \ ACPI_COPY_FIELD(Out, In, Minimum); \ ACPI_COPY_FIELD(Out, In, Maximum); \ ACPI_COPY_FIELD(Out, In, TranslationOffset); \ ACPI_COPY_FIELD(Out, In, AddressLength); \ ACPI_COPY_FIELD(Out, In, ResourceSource); /* Local prototypes */ static ACPI_STATUS AcpiRsMatchVendorResource ( ACPI_RESOURCE *Resource, void *Context); static ACPI_STATUS AcpiRsValidateParameters ( ACPI_HANDLE DeviceHandle, ACPI_BUFFER *Buffer, ACPI_NAMESPACE_NODE **ReturnNode); /******************************************************************************* * * FUNCTION: AcpiRsValidateParameters * * PARAMETERS: DeviceHandle - Handle to a device * Buffer - Pointer to a data buffer * ReturnNode - Pointer to where the device node is returned * * RETURN: Status * * DESCRIPTION: Common parameter validation for resource interfaces * ******************************************************************************/ static ACPI_STATUS AcpiRsValidateParameters ( ACPI_HANDLE DeviceHandle, ACPI_BUFFER *Buffer, ACPI_NAMESPACE_NODE **ReturnNode) { ACPI_STATUS Status; ACPI_NAMESPACE_NODE *Node; ACPI_FUNCTION_TRACE (RsValidateParameters); /* * Must have a valid handle to an ACPI device */ if (!DeviceHandle) { return_ACPI_STATUS (AE_BAD_PARAMETER); } Node = AcpiNsValidateHandle (DeviceHandle); if (!Node) { return_ACPI_STATUS (AE_BAD_PARAMETER); } if (Node->Type != ACPI_TYPE_DEVICE) { return_ACPI_STATUS (AE_TYPE); } /* * Validate the user buffer object * * if there is a non-zero buffer length we also need a valid pointer in * the buffer. If it's a zero buffer length, we'll be returning the * needed buffer size (later), so keep going. */ Status = AcpiUtValidateBuffer (Buffer); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } *ReturnNode = Node; return_ACPI_STATUS (AE_OK); } /******************************************************************************* * * FUNCTION: AcpiGetIrqRoutingTable * * PARAMETERS: DeviceHandle - Handle to the Bus device we are querying * RetBuffer - Pointer to a buffer to receive the * current resources for the device * * RETURN: Status * * DESCRIPTION: This function is called to get the IRQ routing table for a * specific bus. The caller must first acquire a handle for the * desired bus. The routine table is placed in the buffer pointed * to by the RetBuffer variable parameter. * * If the function fails an appropriate status will be returned * and the value of RetBuffer is undefined. * * This function attempts to execute the _PRT method contained in * the object indicated by the passed DeviceHandle. * ******************************************************************************/ ACPI_STATUS AcpiGetIrqRoutingTable ( ACPI_HANDLE DeviceHandle, ACPI_BUFFER *RetBuffer) { ACPI_STATUS Status; ACPI_NAMESPACE_NODE *Node; ACPI_FUNCTION_TRACE (AcpiGetIrqRoutingTable); /* Validate parameters then dispatch to internal routine */ Status = AcpiRsValidateParameters (DeviceHandle, RetBuffer, &Node); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } Status = AcpiRsGetPrtMethodData (Node, RetBuffer); return_ACPI_STATUS (Status); } ACPI_EXPORT_SYMBOL (AcpiGetIrqRoutingTable) /******************************************************************************* * * FUNCTION: AcpiGetCurrentResources * * PARAMETERS: DeviceHandle - Handle to the device object for the * device we are querying * RetBuffer - Pointer to a buffer to receive the * current resources for the device * * RETURN: Status * * DESCRIPTION: This function is called to get the current resources for a * specific device. The caller must first acquire a handle for * the desired device. The resource data is placed in the buffer * pointed to by the RetBuffer variable parameter. * * If the function fails an appropriate status will be returned * and the value of RetBuffer is undefined. * * This function attempts to execute the _CRS method contained in * the object indicated by the passed DeviceHandle. * ******************************************************************************/ ACPI_STATUS AcpiGetCurrentResources ( ACPI_HANDLE DeviceHandle, ACPI_BUFFER *RetBuffer) { ACPI_STATUS Status; ACPI_NAMESPACE_NODE *Node; ACPI_FUNCTION_TRACE (AcpiGetCurrentResources); /* Validate parameters then dispatch to internal routine */ Status = AcpiRsValidateParameters (DeviceHandle, RetBuffer, &Node); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } Status = AcpiRsGetCrsMethodData (Node, RetBuffer); return_ACPI_STATUS (Status); } ACPI_EXPORT_SYMBOL (AcpiGetCurrentResources) /******************************************************************************* * * FUNCTION: AcpiGetPossibleResources * * PARAMETERS: DeviceHandle - Handle to the device object for the * device we are querying * RetBuffer - Pointer to a buffer to receive the * resources for the device * * RETURN: Status * * DESCRIPTION: This function is called to get a list of the possible resources * for a specific device. The caller must first acquire a handle * for the desired device. The resource data is placed in the * buffer pointed to by the RetBuffer variable. * * If the function fails an appropriate status will be returned * and the value of RetBuffer is undefined. * ******************************************************************************/ ACPI_STATUS AcpiGetPossibleResources ( ACPI_HANDLE DeviceHandle, ACPI_BUFFER *RetBuffer) { ACPI_STATUS Status; ACPI_NAMESPACE_NODE *Node; ACPI_FUNCTION_TRACE (AcpiGetPossibleResources); /* Validate parameters then dispatch to internal routine */ Status = AcpiRsValidateParameters (DeviceHandle, RetBuffer, &Node); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } Status = AcpiRsGetPrsMethodData (Node, RetBuffer); return_ACPI_STATUS (Status); } ACPI_EXPORT_SYMBOL (AcpiGetPossibleResources) /******************************************************************************* * * FUNCTION: AcpiSetCurrentResources * * PARAMETERS: DeviceHandle - Handle to the device object for the * device we are setting resources * InBuffer - Pointer to a buffer containing the * resources to be set for the device * * RETURN: Status * * DESCRIPTION: This function is called to set the current resources for a * specific device. The caller must first acquire a handle for * the desired device. The resource data is passed to the routine * the buffer pointed to by the InBuffer variable. * ******************************************************************************/ ACPI_STATUS AcpiSetCurrentResources ( ACPI_HANDLE DeviceHandle, ACPI_BUFFER *InBuffer) { ACPI_STATUS Status; ACPI_NAMESPACE_NODE *Node; ACPI_FUNCTION_TRACE (AcpiSetCurrentResources); /* Validate the buffer, don't allow zero length */ if ((!InBuffer) || (!InBuffer->Pointer) || (!InBuffer->Length)) { return_ACPI_STATUS (AE_BAD_PARAMETER); } /* Validate parameters then dispatch to internal routine */ Status = AcpiRsValidateParameters (DeviceHandle, InBuffer, &Node); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } Status = AcpiRsSetSrsMethodData (Node, InBuffer); return_ACPI_STATUS (Status); } ACPI_EXPORT_SYMBOL (AcpiSetCurrentResources) /******************************************************************************* * * FUNCTION: AcpiGetEventResources * * PARAMETERS: DeviceHandle - Handle to the device object for the * device we are getting resources * InBuffer - Pointer to a buffer containing the * resources to be set for the device * * RETURN: Status * * DESCRIPTION: This function is called to get the event resources for a * specific device. The caller must first acquire a handle for * the desired device. The resource data is passed to the routine * the buffer pointed to by the InBuffer variable. Uses the * _AEI method. * ******************************************************************************/ ACPI_STATUS AcpiGetEventResources ( ACPI_HANDLE DeviceHandle, ACPI_BUFFER *RetBuffer) { ACPI_STATUS Status; ACPI_NAMESPACE_NODE *Node; ACPI_FUNCTION_TRACE (AcpiGetEventResources); /* Validate parameters then dispatch to internal routine */ Status = AcpiRsValidateParameters (DeviceHandle, RetBuffer, &Node); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } Status = AcpiRsGetAeiMethodData (Node, RetBuffer); return_ACPI_STATUS (Status); } ACPI_EXPORT_SYMBOL (AcpiGetEventResources) /****************************************************************************** * * FUNCTION: AcpiResourceToAddress64 * * PARAMETERS: Resource - Pointer to a resource * Out - Pointer to the users's return buffer * (a struct acpi_resource_address64) * * RETURN: Status * * DESCRIPTION: If the resource is an address16, address32, or address64, * copy it to the address64 return buffer. This saves the * caller from having to duplicate code for different-sized * addresses. * ******************************************************************************/ ACPI_STATUS AcpiResourceToAddress64 ( ACPI_RESOURCE *Resource, ACPI_RESOURCE_ADDRESS64 *Out) { ACPI_RESOURCE_ADDRESS16 *Address16; ACPI_RESOURCE_ADDRESS32 *Address32; if (!Resource || !Out) { return (AE_BAD_PARAMETER); } /* Convert 16 or 32 address descriptor to 64 */ switch (Resource->Type) { case ACPI_RESOURCE_TYPE_ADDRESS16: Address16 = ACPI_CAST_PTR (ACPI_RESOURCE_ADDRESS16, &Resource->Data); ACPI_COPY_ADDRESS (Out, Address16); break; case ACPI_RESOURCE_TYPE_ADDRESS32: Address32 = ACPI_CAST_PTR (ACPI_RESOURCE_ADDRESS32, &Resource->Data); ACPI_COPY_ADDRESS (Out, Address32); break; case ACPI_RESOURCE_TYPE_ADDRESS64: /* Simple copy for 64 bit source */ ACPI_MEMCPY (Out, &Resource->Data, sizeof (ACPI_RESOURCE_ADDRESS64)); break; default: return (AE_BAD_PARAMETER); } return (AE_OK); } ACPI_EXPORT_SYMBOL (AcpiResourceToAddress64) /******************************************************************************* * * FUNCTION: AcpiGetVendorResource * * PARAMETERS: DeviceHandle - Handle for the parent device object * Name - Method name for the parent resource * (METHOD_NAME__CRS or METHOD_NAME__PRS) * Uuid - Pointer to the UUID to be matched. * includes both subtype and 16-byte UUID * RetBuffer - Where the vendor resource is returned * * RETURN: Status * * DESCRIPTION: Walk a resource template for the specified device to find a * vendor-defined resource that matches the supplied UUID and * UUID subtype. Returns a ACPI_RESOURCE of type Vendor. * ******************************************************************************/ ACPI_STATUS AcpiGetVendorResource ( ACPI_HANDLE DeviceHandle, char *Name, ACPI_VENDOR_UUID *Uuid, ACPI_BUFFER *RetBuffer) { ACPI_VENDOR_WALK_INFO Info; ACPI_STATUS Status; /* Other parameters are validated by AcpiWalkResources */ if (!Uuid || !RetBuffer) { return (AE_BAD_PARAMETER); } Info.Uuid = Uuid; Info.Buffer = RetBuffer; Info.Status = AE_NOT_EXIST; /* Walk the _CRS or _PRS resource list for this device */ Status = AcpiWalkResources (DeviceHandle, Name, AcpiRsMatchVendorResource, &Info); if (ACPI_FAILURE (Status)) { return (Status); } return (Info.Status); } ACPI_EXPORT_SYMBOL (AcpiGetVendorResource) /******************************************************************************* * * FUNCTION: AcpiRsMatchVendorResource * * PARAMETERS: ACPI_WALK_RESOURCE_CALLBACK * * RETURN: Status * * DESCRIPTION: Match a vendor resource via the ACPI 3.0 UUID * ******************************************************************************/ static ACPI_STATUS AcpiRsMatchVendorResource ( ACPI_RESOURCE *Resource, void *Context) { ACPI_VENDOR_WALK_INFO *Info = Context; ACPI_RESOURCE_VENDOR_TYPED *Vendor; ACPI_BUFFER *Buffer; ACPI_STATUS Status; /* Ignore all descriptors except Vendor */ if (Resource->Type != ACPI_RESOURCE_TYPE_VENDOR) { return (AE_OK); } Vendor = &Resource->Data.VendorTyped; /* * For a valid match, these conditions must hold: * * 1) Length of descriptor data must be at least as long as a UUID struct * 2) The UUID subtypes must match * 3) The UUID data must match */ if ((Vendor->ByteLength < (ACPI_UUID_LENGTH + 1)) || (Vendor->UuidSubtype != Info->Uuid->Subtype) || (ACPI_MEMCMP (Vendor->Uuid, Info->Uuid->Data, ACPI_UUID_LENGTH))) { return (AE_OK); } /* Validate/Allocate/Clear caller buffer */ Buffer = Info->Buffer; Status = AcpiUtInitializeBuffer (Buffer, Resource->Length); if (ACPI_FAILURE (Status)) { return (Status); } /* Found the correct resource, copy and return it */ ACPI_MEMCPY (Buffer->Pointer, Resource, Resource->Length); Buffer->Length = Resource->Length; /* Found the desired descriptor, terminate resource walk */ Info->Status = AE_OK; return (AE_CTRL_TERMINATE); } /******************************************************************************* * * FUNCTION: AcpiWalkResourceBuffer * * PARAMETERS: Buffer - Formatted buffer returned by one of the * various Get*Resource functions * UserFunction - Called for each resource * Context - Passed to UserFunction * * RETURN: Status * * DESCRIPTION: Walks the input resource template. The UserFunction is called * once for each resource in the list. * ******************************************************************************/ ACPI_STATUS AcpiWalkResourceBuffer ( ACPI_BUFFER *Buffer, ACPI_WALK_RESOURCE_CALLBACK UserFunction, void *Context) { ACPI_STATUS Status = AE_OK; ACPI_RESOURCE *Resource; ACPI_RESOURCE *ResourceEnd; ACPI_FUNCTION_TRACE (AcpiWalkResourceBuffer); /* Parameter validation */ if (!Buffer || !Buffer->Pointer || !UserFunction) { return_ACPI_STATUS (AE_BAD_PARAMETER); } /* Buffer contains the resource list and length */ Resource = ACPI_CAST_PTR (ACPI_RESOURCE, Buffer->Pointer); ResourceEnd = ACPI_ADD_PTR (ACPI_RESOURCE, Buffer->Pointer, Buffer->Length); /* Walk the resource list until the EndTag is found (or buffer end) */ while (Resource < ResourceEnd) { /* Sanity check the resource type */ if (Resource->Type > ACPI_RESOURCE_TYPE_MAX) { Status = AE_AML_INVALID_RESOURCE_TYPE; break; } /* Sanity check the length. It must not be zero, or we loop forever */ if (!Resource->Length) { return_ACPI_STATUS (AE_AML_BAD_RESOURCE_LENGTH); } /* Invoke the user function, abort on any error returned */ Status = UserFunction (Resource, Context); if (ACPI_FAILURE (Status)) { if (Status == AE_CTRL_TERMINATE) { /* This is an OK termination by the user function */ Status = AE_OK; } break; } /* EndTag indicates end-of-list */ if (Resource->Type == ACPI_RESOURCE_TYPE_END_TAG) { break; } /* Get the next resource descriptor */ Resource = ACPI_NEXT_RESOURCE (Resource); } return_ACPI_STATUS (Status); } ACPI_EXPORT_SYMBOL (AcpiWalkResourceBuffer) /******************************************************************************* * * FUNCTION: AcpiWalkResources * * PARAMETERS: DeviceHandle - Handle to the device object for the * device we are querying * Name - Method name of the resources we want. * (METHOD_NAME__CRS, METHOD_NAME__PRS, or * METHOD_NAME__AEI) * UserFunction - Called for each resource * Context - Passed to UserFunction * * RETURN: Status * * DESCRIPTION: Retrieves the current or possible resource list for the * specified device. The UserFunction is called once for * each resource in the list. * ******************************************************************************/ ACPI_STATUS AcpiWalkResources ( ACPI_HANDLE DeviceHandle, char *Name, ACPI_WALK_RESOURCE_CALLBACK UserFunction, void *Context) { ACPI_STATUS Status; ACPI_BUFFER Buffer; ACPI_FUNCTION_TRACE (AcpiWalkResources); /* Parameter validation */ if (!DeviceHandle || !UserFunction || !Name || (!ACPI_COMPARE_NAME (Name, METHOD_NAME__CRS) && !ACPI_COMPARE_NAME (Name, METHOD_NAME__PRS) && !ACPI_COMPARE_NAME (Name, METHOD_NAME__AEI))) { return_ACPI_STATUS (AE_BAD_PARAMETER); } /* Get the _CRS/_PRS/_AEI resource list */ Buffer.Length = ACPI_ALLOCATE_LOCAL_BUFFER; Status = AcpiRsGetMethodData (DeviceHandle, Name, &Buffer); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } /* Walk the resource list and cleanup */ Status = AcpiWalkResourceBuffer (&Buffer, UserFunction, Context); ACPI_FREE (Buffer.Pointer); return_ACPI_STATUS (Status); } ACPI_EXPORT_SYMBOL (AcpiWalkResources) src/acpica/source/components/tables/000077500000000000000000000000001231470457100200305ustar00rootroot00000000000000src/acpica/source/components/tables/tbdata.c000077500000000000000000000635661231470457100214560ustar00rootroot00000000000000/****************************************************************************** * * Module Name: tbdata - Table manager data structure functions * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #define __TBDATA_C__ #include "acpi.h" #include "accommon.h" #include "acnamesp.h" #include "actables.h" #define _COMPONENT ACPI_TABLES ACPI_MODULE_NAME ("tbdata") /******************************************************************************* * * FUNCTION: AcpiTbInitTableDescriptor * * PARAMETERS: TableDesc - Table descriptor * Address - Physical address of the table * Flags - Allocation flags of the table * Table - Pointer to the table * * RETURN: None * * DESCRIPTION: Initialize a new table descriptor * ******************************************************************************/ void AcpiTbInitTableDescriptor ( ACPI_TABLE_DESC *TableDesc, ACPI_PHYSICAL_ADDRESS Address, UINT8 Flags, ACPI_TABLE_HEADER *Table) { /* * Initialize the table descriptor. Set the pointer to NULL, since the * table is not fully mapped at this time. */ ACPI_MEMSET (TableDesc, 0, sizeof (ACPI_TABLE_DESC)); TableDesc->Address = Address; TableDesc->Length = Table->Length; TableDesc->Flags = Flags; ACPI_MOVE_32_TO_32 (TableDesc->Signature.Ascii, Table->Signature); } /******************************************************************************* * * FUNCTION: AcpiTbAcquireTable * * PARAMETERS: TableDesc - Table descriptor * TablePtr - Where table is returned * TableLength - Where table length is returned * TableFlags - Where table allocation flags are returned * * RETURN: Status * * DESCRIPTION: Acquire an ACPI table. It can be used for tables not * maintained in the AcpiGbl_RootTableList. * ******************************************************************************/ ACPI_STATUS AcpiTbAcquireTable ( ACPI_TABLE_DESC *TableDesc, ACPI_TABLE_HEADER **TablePtr, UINT32 *TableLength, UINT8 *TableFlags) { ACPI_TABLE_HEADER *Table = NULL; switch (TableDesc->Flags & ACPI_TABLE_ORIGIN_MASK) { case ACPI_TABLE_ORIGIN_INTERNAL_PHYSICAL: Table = AcpiOsMapMemory (TableDesc->Address, TableDesc->Length); break; case ACPI_TABLE_ORIGIN_INTERNAL_VIRTUAL: case ACPI_TABLE_ORIGIN_EXTERNAL_VIRTUAL: Table = ACPI_CAST_PTR (ACPI_TABLE_HEADER, TableDesc->Address); break; default: break; } /* Table is not valid yet */ if (!Table) { return (AE_NO_MEMORY); } /* Fill the return values */ *TablePtr = Table; *TableLength = TableDesc->Length; *TableFlags = TableDesc->Flags; return (AE_OK); } /******************************************************************************* * * FUNCTION: AcpiTbReleaseTable * * PARAMETERS: Table - Pointer for the table * TableLength - Length for the table * TableFlags - Allocation flags for the table * * RETURN: None * * DESCRIPTION: Release a table. The inverse of AcpiTbAcquireTable(). * ******************************************************************************/ void AcpiTbReleaseTable ( ACPI_TABLE_HEADER *Table, UINT32 TableLength, UINT8 TableFlags) { switch (TableFlags & ACPI_TABLE_ORIGIN_MASK) { case ACPI_TABLE_ORIGIN_INTERNAL_PHYSICAL: AcpiOsUnmapMemory (Table, TableLength); break; case ACPI_TABLE_ORIGIN_INTERNAL_VIRTUAL: case ACPI_TABLE_ORIGIN_EXTERNAL_VIRTUAL: default: break; } } /******************************************************************************* * * FUNCTION: AcpiTbAcquireTempTable * * PARAMETERS: TableDesc - Table descriptor to be acquired * Address - Address of the table * Flags - Allocation flags of the table * * RETURN: Status * * DESCRIPTION: This function validates the table header to obtain the length * of a table and fills the table descriptor to make its state as * "INSTALLED". Such a table descriptor is only used for verified * installation. * ******************************************************************************/ ACPI_STATUS AcpiTbAcquireTempTable ( ACPI_TABLE_DESC *TableDesc, ACPI_PHYSICAL_ADDRESS Address, UINT8 Flags) { ACPI_TABLE_HEADER *TableHeader; switch (Flags & ACPI_TABLE_ORIGIN_MASK) { case ACPI_TABLE_ORIGIN_INTERNAL_PHYSICAL: /* Get the length of the full table from the header */ TableHeader = AcpiOsMapMemory (Address, sizeof (ACPI_TABLE_HEADER)); if (!TableHeader) { return (AE_NO_MEMORY); } AcpiTbInitTableDescriptor (TableDesc, Address, Flags, TableHeader); AcpiOsUnmapMemory (TableHeader, sizeof (ACPI_TABLE_HEADER)); return (AE_OK); case ACPI_TABLE_ORIGIN_INTERNAL_VIRTUAL: case ACPI_TABLE_ORIGIN_EXTERNAL_VIRTUAL: TableHeader = ACPI_CAST_PTR (ACPI_TABLE_HEADER, Address); if (!TableHeader) { return (AE_NO_MEMORY); } AcpiTbInitTableDescriptor (TableDesc, Address, Flags, TableHeader); return (AE_OK); default: break; } /* Table is not valid yet */ return (AE_NO_MEMORY); } /******************************************************************************* * * FUNCTION: AcpiTbReleaseTempTable * * PARAMETERS: TableDesc - Table descriptor to be released * * RETURN: Status * * DESCRIPTION: The inverse of AcpiTbAcquireTempTable(). * *****************************************************************************/ void AcpiTbReleaseTempTable ( ACPI_TABLE_DESC *TableDesc) { /* * Note that the .Address is maintained by the callers of * AcpiTbAcquireTempTable(), thus do not invoke AcpiTbUninstallTable() * where .Address will be freed. */ AcpiTbInvalidateTable (TableDesc); } /****************************************************************************** * * FUNCTION: AcpiTbValidateTable * * PARAMETERS: TableDesc - Table descriptor * * RETURN: Status * * DESCRIPTION: This function is called to validate the table, the returned * table descriptor is in "VALIDATED" state. * *****************************************************************************/ ACPI_STATUS AcpiTbValidateTable ( ACPI_TABLE_DESC *TableDesc) { ACPI_STATUS Status = AE_OK; ACPI_FUNCTION_TRACE (TbValidateTable); /* Validate the table if necessary */ if (!TableDesc->Pointer) { Status = AcpiTbAcquireTable (TableDesc, &TableDesc->Pointer, &TableDesc->Length, &TableDesc->Flags); if (!TableDesc->Pointer) { Status = AE_NO_MEMORY; } } return_ACPI_STATUS (Status); } /******************************************************************************* * * FUNCTION: AcpiTbInvalidateTable * * PARAMETERS: TableDesc - Table descriptor * * RETURN: None * * DESCRIPTION: Invalidate one internal ACPI table, this is the inverse of * AcpiTbValidateTable(). * ******************************************************************************/ void AcpiTbInvalidateTable ( ACPI_TABLE_DESC *TableDesc) { ACPI_FUNCTION_TRACE (TbInvalidateTable); /* Table must be validated */ if (!TableDesc->Pointer) { return_VOID; } AcpiTbReleaseTable (TableDesc->Pointer, TableDesc->Length, TableDesc->Flags); TableDesc->Pointer = NULL; return_VOID; } /****************************************************************************** * * FUNCTION: AcpiTbVerifyTable * * PARAMETERS: TableDesc - Table descriptor * Signature - Table signature to verify * * RETURN: Status * * DESCRIPTION: This function is called to validate and verify the table, the * returned table descriptor is in "VALIDATED" state. * *****************************************************************************/ ACPI_STATUS AcpiTbVerifyTable ( ACPI_TABLE_DESC *TableDesc, char *Signature) { ACPI_STATUS Status = AE_OK; ACPI_FUNCTION_TRACE (TbVerifyTable); /* Validate the table */ Status = AcpiTbValidateTable (TableDesc); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (AE_NO_MEMORY); } /* If a particular signature is expected (DSDT/FACS), it must match */ if (Signature && !ACPI_COMPARE_NAME (&TableDesc->Signature, Signature)) { ACPI_BIOS_ERROR ((AE_INFO, "Invalid signature 0x%X for ACPI table, expected [%s]", TableDesc->Signature.Integer, Signature)); Status = AE_BAD_SIGNATURE; goto InvalidateAndExit; } /* Verify the checksum */ Status = AcpiTbVerifyChecksum (TableDesc->Pointer, TableDesc->Length); if (ACPI_FAILURE (Status)) { ACPI_EXCEPTION ((AE_INFO, AE_NO_MEMORY, "%4.4s " ACPI_PRINTF_UINT " Attempted table install failed", AcpiUtValidAcpiName (TableDesc->Signature.Ascii) ? TableDesc->Signature.Ascii : "????", ACPI_FORMAT_TO_UINT (TableDesc->Address))); goto InvalidateAndExit; } return_ACPI_STATUS (AE_OK); InvalidateAndExit: AcpiTbInvalidateTable (TableDesc); return_ACPI_STATUS (Status); } /******************************************************************************* * * FUNCTION: AcpiTbResizeRootTableList * * PARAMETERS: None * * RETURN: Status * * DESCRIPTION: Expand the size of global table array * ******************************************************************************/ ACPI_STATUS AcpiTbResizeRootTableList ( void) { ACPI_TABLE_DESC *Tables; UINT32 TableCount; ACPI_FUNCTION_TRACE (TbResizeRootTableList); /* AllowResize flag is a parameter to AcpiInitializeTables */ if (!(AcpiGbl_RootTableList.Flags & ACPI_ROOT_ALLOW_RESIZE)) { ACPI_ERROR ((AE_INFO, "Resize of Root Table Array is not allowed")); return_ACPI_STATUS (AE_SUPPORT); } /* Increase the Table Array size */ if (AcpiGbl_RootTableList.Flags & ACPI_ROOT_ORIGIN_ALLOCATED) { TableCount = AcpiGbl_RootTableList.MaxTableCount; } else { TableCount = AcpiGbl_RootTableList.CurrentTableCount; } Tables = ACPI_ALLOCATE_ZEROED ( ((ACPI_SIZE) TableCount + ACPI_ROOT_TABLE_SIZE_INCREMENT) * sizeof (ACPI_TABLE_DESC)); if (!Tables) { ACPI_ERROR ((AE_INFO, "Could not allocate new root table array")); return_ACPI_STATUS (AE_NO_MEMORY); } /* Copy and free the previous table array */ if (AcpiGbl_RootTableList.Tables) { ACPI_MEMCPY (Tables, AcpiGbl_RootTableList.Tables, (ACPI_SIZE) TableCount * sizeof (ACPI_TABLE_DESC)); if (AcpiGbl_RootTableList.Flags & ACPI_ROOT_ORIGIN_ALLOCATED) { ACPI_FREE (AcpiGbl_RootTableList.Tables); } } AcpiGbl_RootTableList.Tables = Tables; AcpiGbl_RootTableList.MaxTableCount = TableCount + ACPI_ROOT_TABLE_SIZE_INCREMENT; AcpiGbl_RootTableList.Flags |= ACPI_ROOT_ORIGIN_ALLOCATED; return_ACPI_STATUS (AE_OK); } /******************************************************************************* * * FUNCTION: AcpiTbGetNextRootIndex * * PARAMETERS: TableIndex - Where table index is returned * * RETURN: Status and table index. * * DESCRIPTION: Allocate a new ACPI table entry to the global table list * ******************************************************************************/ ACPI_STATUS AcpiTbGetNextRootIndex ( UINT32 *TableIndex) { ACPI_STATUS Status; /* Ensure that there is room for the table in the Root Table List */ if (AcpiGbl_RootTableList.CurrentTableCount >= AcpiGbl_RootTableList.MaxTableCount) { Status = AcpiTbResizeRootTableList(); if (ACPI_FAILURE (Status)) { return (Status); } } *TableIndex = AcpiGbl_RootTableList.CurrentTableCount; AcpiGbl_RootTableList.CurrentTableCount++; return (AE_OK); } /******************************************************************************* * * FUNCTION: AcpiTbTerminate * * PARAMETERS: None * * RETURN: None * * DESCRIPTION: Delete all internal ACPI tables * ******************************************************************************/ void AcpiTbTerminate ( void) { UINT32 i; ACPI_FUNCTION_TRACE (TbTerminate); (void) AcpiUtAcquireMutex (ACPI_MTX_TABLES); /* Delete the individual tables */ for (i = 0; i < AcpiGbl_RootTableList.CurrentTableCount; i++) { AcpiTbUninstallTable (&AcpiGbl_RootTableList.Tables[i]); } /* * Delete the root table array if allocated locally. Array cannot be * mapped, so we don't need to check for that flag. */ if (AcpiGbl_RootTableList.Flags & ACPI_ROOT_ORIGIN_ALLOCATED) { ACPI_FREE (AcpiGbl_RootTableList.Tables); } AcpiGbl_RootTableList.Tables = NULL; AcpiGbl_RootTableList.Flags = 0; AcpiGbl_RootTableList.CurrentTableCount = 0; ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "ACPI Tables freed\n")); (void) AcpiUtReleaseMutex (ACPI_MTX_TABLES); return_VOID; } /******************************************************************************* * * FUNCTION: AcpiTbDeleteNamespaceByOwner * * PARAMETERS: TableIndex - Table index * * RETURN: Status * * DESCRIPTION: Delete all namespace objects created when this table was loaded. * ******************************************************************************/ ACPI_STATUS AcpiTbDeleteNamespaceByOwner ( UINT32 TableIndex) { ACPI_OWNER_ID OwnerId; ACPI_STATUS Status; ACPI_FUNCTION_TRACE (TbDeleteNamespaceByOwner); Status = AcpiUtAcquireMutex (ACPI_MTX_TABLES); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } if (TableIndex >= AcpiGbl_RootTableList.CurrentTableCount) { /* The table index does not exist */ (void) AcpiUtReleaseMutex (ACPI_MTX_TABLES); return_ACPI_STATUS (AE_NOT_EXIST); } /* Get the owner ID for this table, used to delete namespace nodes */ OwnerId = AcpiGbl_RootTableList.Tables[TableIndex].OwnerId; (void) AcpiUtReleaseMutex (ACPI_MTX_TABLES); /* * Need to acquire the namespace writer lock to prevent interference * with any concurrent namespace walks. The interpreter must be * released during the deletion since the acquisition of the deletion * lock may block, and also since the execution of a namespace walk * must be allowed to use the interpreter. */ (void) AcpiUtReleaseMutex (ACPI_MTX_INTERPRETER); Status = AcpiUtAcquireWriteLock (&AcpiGbl_NamespaceRwLock); AcpiNsDeleteNamespaceByOwner (OwnerId); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } AcpiUtReleaseWriteLock (&AcpiGbl_NamespaceRwLock); Status = AcpiUtAcquireMutex (ACPI_MTX_INTERPRETER); return_ACPI_STATUS (Status); } /******************************************************************************* * * FUNCTION: AcpiTbAllocateOwnerId * * PARAMETERS: TableIndex - Table index * * RETURN: Status * * DESCRIPTION: Allocates OwnerId in TableDesc * ******************************************************************************/ ACPI_STATUS AcpiTbAllocateOwnerId ( UINT32 TableIndex) { ACPI_STATUS Status = AE_BAD_PARAMETER; ACPI_FUNCTION_TRACE (TbAllocateOwnerId); (void) AcpiUtAcquireMutex (ACPI_MTX_TABLES); if (TableIndex < AcpiGbl_RootTableList.CurrentTableCount) { Status = AcpiUtAllocateOwnerId ( &(AcpiGbl_RootTableList.Tables[TableIndex].OwnerId)); } (void) AcpiUtReleaseMutex (ACPI_MTX_TABLES); return_ACPI_STATUS (Status); } /******************************************************************************* * * FUNCTION: AcpiTbReleaseOwnerId * * PARAMETERS: TableIndex - Table index * * RETURN: Status * * DESCRIPTION: Releases OwnerId in TableDesc * ******************************************************************************/ ACPI_STATUS AcpiTbReleaseOwnerId ( UINT32 TableIndex) { ACPI_STATUS Status = AE_BAD_PARAMETER; ACPI_FUNCTION_TRACE (TbReleaseOwnerId); (void) AcpiUtAcquireMutex (ACPI_MTX_TABLES); if (TableIndex < AcpiGbl_RootTableList.CurrentTableCount) { AcpiUtReleaseOwnerId ( &(AcpiGbl_RootTableList.Tables[TableIndex].OwnerId)); Status = AE_OK; } (void) AcpiUtReleaseMutex (ACPI_MTX_TABLES); return_ACPI_STATUS (Status); } /******************************************************************************* * * FUNCTION: AcpiTbGetOwnerId * * PARAMETERS: TableIndex - Table index * OwnerId - Where the table OwnerId is returned * * RETURN: Status * * DESCRIPTION: returns OwnerId for the ACPI table * ******************************************************************************/ ACPI_STATUS AcpiTbGetOwnerId ( UINT32 TableIndex, ACPI_OWNER_ID *OwnerId) { ACPI_STATUS Status = AE_BAD_PARAMETER; ACPI_FUNCTION_TRACE (TbGetOwnerId); (void) AcpiUtAcquireMutex (ACPI_MTX_TABLES); if (TableIndex < AcpiGbl_RootTableList.CurrentTableCount) { *OwnerId = AcpiGbl_RootTableList.Tables[TableIndex].OwnerId; Status = AE_OK; } (void) AcpiUtReleaseMutex (ACPI_MTX_TABLES); return_ACPI_STATUS (Status); } /******************************************************************************* * * FUNCTION: AcpiTbIsTableLoaded * * PARAMETERS: TableIndex - Index into the root table * * RETURN: Table Loaded Flag * ******************************************************************************/ BOOLEAN AcpiTbIsTableLoaded ( UINT32 TableIndex) { BOOLEAN IsLoaded = FALSE; (void) AcpiUtAcquireMutex (ACPI_MTX_TABLES); if (TableIndex < AcpiGbl_RootTableList.CurrentTableCount) { IsLoaded = (BOOLEAN) (AcpiGbl_RootTableList.Tables[TableIndex].Flags & ACPI_TABLE_IS_LOADED); } (void) AcpiUtReleaseMutex (ACPI_MTX_TABLES); return (IsLoaded); } /******************************************************************************* * * FUNCTION: AcpiTbSetTableLoadedFlag * * PARAMETERS: TableIndex - Table index * IsLoaded - TRUE if table is loaded, FALSE otherwise * * RETURN: None * * DESCRIPTION: Sets the table loaded flag to either TRUE or FALSE. * ******************************************************************************/ void AcpiTbSetTableLoadedFlag ( UINT32 TableIndex, BOOLEAN IsLoaded) { (void) AcpiUtAcquireMutex (ACPI_MTX_TABLES); if (TableIndex < AcpiGbl_RootTableList.CurrentTableCount) { if (IsLoaded) { AcpiGbl_RootTableList.Tables[TableIndex].Flags |= ACPI_TABLE_IS_LOADED; } else { AcpiGbl_RootTableList.Tables[TableIndex].Flags &= ~ACPI_TABLE_IS_LOADED; } } (void) AcpiUtReleaseMutex (ACPI_MTX_TABLES); } src/acpica/source/components/tables/tbfadt.c000066400000000000000000000714341231470457100214510ustar00rootroot00000000000000/****************************************************************************** * * Module Name: tbfadt - FADT table utilities * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #define __TBFADT_C__ #include "acpi.h" #include "accommon.h" #include "actables.h" #define _COMPONENT ACPI_TABLES ACPI_MODULE_NAME ("tbfadt") /* Local prototypes */ static void AcpiTbInitGenericAddress ( ACPI_GENERIC_ADDRESS *GenericAddress, UINT8 SpaceId, UINT8 ByteWidth, UINT64 Address, char *RegisterName); static void AcpiTbConvertFadt ( void); static void AcpiTbSetupFadtRegisters ( void); static UINT64 AcpiTbSelectAddress ( char *RegisterName, UINT32 Address32, UINT64 Address64); /* Table for conversion of FADT to common internal format and FADT validation */ typedef struct acpi_fadt_info { char *Name; UINT16 Address64; UINT16 Address32; UINT16 Length; UINT8 DefaultLength; UINT8 Type; } ACPI_FADT_INFO; #define ACPI_FADT_OPTIONAL 0 #define ACPI_FADT_REQUIRED 1 #define ACPI_FADT_SEPARATE_LENGTH 2 static ACPI_FADT_INFO FadtInfoTable[] = { {"Pm1aEventBlock", ACPI_FADT_OFFSET (XPm1aEventBlock), ACPI_FADT_OFFSET (Pm1aEventBlock), ACPI_FADT_OFFSET (Pm1EventLength), ACPI_PM1_REGISTER_WIDTH * 2, /* Enable + Status register */ ACPI_FADT_REQUIRED}, {"Pm1bEventBlock", ACPI_FADT_OFFSET (XPm1bEventBlock), ACPI_FADT_OFFSET (Pm1bEventBlock), ACPI_FADT_OFFSET (Pm1EventLength), ACPI_PM1_REGISTER_WIDTH * 2, /* Enable + Status register */ ACPI_FADT_OPTIONAL}, {"Pm1aControlBlock", ACPI_FADT_OFFSET (XPm1aControlBlock), ACPI_FADT_OFFSET (Pm1aControlBlock), ACPI_FADT_OFFSET (Pm1ControlLength), ACPI_PM1_REGISTER_WIDTH, ACPI_FADT_REQUIRED}, {"Pm1bControlBlock", ACPI_FADT_OFFSET (XPm1bControlBlock), ACPI_FADT_OFFSET (Pm1bControlBlock), ACPI_FADT_OFFSET (Pm1ControlLength), ACPI_PM1_REGISTER_WIDTH, ACPI_FADT_OPTIONAL}, {"Pm2ControlBlock", ACPI_FADT_OFFSET (XPm2ControlBlock), ACPI_FADT_OFFSET (Pm2ControlBlock), ACPI_FADT_OFFSET (Pm2ControlLength), ACPI_PM2_REGISTER_WIDTH, ACPI_FADT_SEPARATE_LENGTH}, {"PmTimerBlock", ACPI_FADT_OFFSET (XPmTimerBlock), ACPI_FADT_OFFSET (PmTimerBlock), ACPI_FADT_OFFSET (PmTimerLength), ACPI_PM_TIMER_WIDTH, ACPI_FADT_SEPARATE_LENGTH}, /* ACPI 5.0A: Timer is optional */ {"Gpe0Block", ACPI_FADT_OFFSET (XGpe0Block), ACPI_FADT_OFFSET (Gpe0Block), ACPI_FADT_OFFSET (Gpe0BlockLength), 0, ACPI_FADT_SEPARATE_LENGTH}, {"Gpe1Block", ACPI_FADT_OFFSET (XGpe1Block), ACPI_FADT_OFFSET (Gpe1Block), ACPI_FADT_OFFSET (Gpe1BlockLength), 0, ACPI_FADT_SEPARATE_LENGTH} }; #define ACPI_FADT_INFO_ENTRIES \ (sizeof (FadtInfoTable) / sizeof (ACPI_FADT_INFO)) /* Table used to split Event Blocks into separate status/enable registers */ typedef struct acpi_fadt_pm_info { ACPI_GENERIC_ADDRESS *Target; UINT16 Source; UINT8 RegisterNum; } ACPI_FADT_PM_INFO; static ACPI_FADT_PM_INFO FadtPmInfoTable[] = { {&AcpiGbl_XPm1aStatus, ACPI_FADT_OFFSET (XPm1aEventBlock), 0}, {&AcpiGbl_XPm1aEnable, ACPI_FADT_OFFSET (XPm1aEventBlock), 1}, {&AcpiGbl_XPm1bStatus, ACPI_FADT_OFFSET (XPm1bEventBlock), 0}, {&AcpiGbl_XPm1bEnable, ACPI_FADT_OFFSET (XPm1bEventBlock), 1} }; #define ACPI_FADT_PM_INFO_ENTRIES \ (sizeof (FadtPmInfoTable) / sizeof (ACPI_FADT_PM_INFO)) /******************************************************************************* * * FUNCTION: AcpiTbInitGenericAddress * * PARAMETERS: GenericAddress - GAS struct to be initialized * SpaceId - ACPI Space ID for this register * ByteWidth - Width of this register * Address - Address of the register * RegisterName - ASCII name of the ACPI register * * RETURN: None * * DESCRIPTION: Initialize a Generic Address Structure (GAS) * See the ACPI specification for a full description and * definition of this structure. * ******************************************************************************/ static void AcpiTbInitGenericAddress ( ACPI_GENERIC_ADDRESS *GenericAddress, UINT8 SpaceId, UINT8 ByteWidth, UINT64 Address, char *RegisterName) { UINT8 BitWidth; /* Bit width field in the GAS is only one byte long, 255 max */ BitWidth = (UINT8) (ByteWidth * 8); if (ByteWidth > 31) /* (31*8)=248 */ { ACPI_ERROR ((AE_INFO, "%s - 32-bit FADT register is too long (%u bytes, %u bits) " "to convert to GAS struct - 255 bits max, truncating", RegisterName, ByteWidth, (ByteWidth * 8))); BitWidth = 255; } /* * The 64-bit Address field is non-aligned in the byte packed * GAS struct. */ ACPI_MOVE_64_TO_64 (&GenericAddress->Address, &Address); /* All other fields are byte-wide */ GenericAddress->SpaceId = SpaceId; GenericAddress->BitWidth = BitWidth; GenericAddress->BitOffset = 0; GenericAddress->AccessWidth = 0; /* Access width ANY */ } /******************************************************************************* * * FUNCTION: AcpiTbSelectAddress * * PARAMETERS: RegisterName - ASCII name of the ACPI register * Address32 - 32-bit address of the register * Address64 - 64-bit address of the register * * RETURN: The resolved 64-bit address * * DESCRIPTION: Select between 32-bit and 64-bit versions of addresses within * the FADT. Used for the FACS and DSDT addresses. * * NOTES: * * Check for FACS and DSDT address mismatches. An address mismatch between * the 32-bit and 64-bit address fields (FIRMWARE_CTRL/X_FIRMWARE_CTRL and * DSDT/X_DSDT) could be a corrupted address field or it might indicate * the presence of two FACS or two DSDT tables. * * November 2013: * By default, as per the ACPICA specification, a valid 64-bit address is * used regardless of the value of the 32-bit address. However, this * behavior can be overridden via the AcpiGbl_Use32BitFadtAddresses flag. * ******************************************************************************/ static UINT64 AcpiTbSelectAddress ( char *RegisterName, UINT32 Address32, UINT64 Address64) { if (!Address64) { /* 64-bit address is zero, use 32-bit address */ return ((UINT64) Address32); } if (Address32 && (Address64 != (UINT64) Address32)) { /* Address mismatch between 32-bit and 64-bit versions */ ACPI_BIOS_WARNING ((AE_INFO, "32/64X %s address mismatch in FADT: " "0x%8.8X/0x%8.8X%8.8X, using %u-bit address", RegisterName, Address32, ACPI_FORMAT_UINT64 (Address64), AcpiGbl_Use32BitFadtAddresses ? 32 : 64)); /* 32-bit address override */ if (AcpiGbl_Use32BitFadtAddresses) { return ((UINT64) Address32); } } /* Default is to use the 64-bit address */ return (Address64); } /******************************************************************************* * * FUNCTION: AcpiTbParseFadt * * PARAMETERS: TableIndex - Index for the FADT * * RETURN: None * * DESCRIPTION: Initialize the FADT, DSDT and FACS tables * (FADT contains the addresses of the DSDT and FACS) * ******************************************************************************/ void AcpiTbParseFadt ( UINT32 TableIndex) { UINT32 Length; ACPI_TABLE_HEADER *Table; /* * The FADT has multiple versions with different lengths, * and it contains pointers to both the DSDT and FACS tables. * * Get a local copy of the FADT and convert it to a common format * Map entire FADT, assumed to be smaller than one page. */ Length = AcpiGbl_RootTableList.Tables[TableIndex].Length; Table = AcpiOsMapMemory ( AcpiGbl_RootTableList.Tables[TableIndex].Address, Length); if (!Table) { return; } /* * Validate the FADT checksum before we copy the table. Ignore * checksum error as we want to try to get the DSDT and FACS. */ (void) AcpiTbVerifyChecksum (Table, Length); /* Create a local copy of the FADT in common ACPI 2.0+ format */ AcpiTbCreateLocalFadt (Table, Length); /* All done with the real FADT, unmap it */ AcpiOsUnmapMemory (Table, Length); /* Obtain the DSDT and FACS tables via their addresses within the FADT */ AcpiTbInstallFixedTable ((ACPI_PHYSICAL_ADDRESS) AcpiGbl_FADT.XDsdt, ACPI_SIG_DSDT, ACPI_TABLE_INDEX_DSDT); /* If Hardware Reduced flag is set, there is no FACS */ if (!AcpiGbl_ReducedHardware) { AcpiTbInstallFixedTable ((ACPI_PHYSICAL_ADDRESS) AcpiGbl_FADT.XFacs, ACPI_SIG_FACS, ACPI_TABLE_INDEX_FACS); } } /******************************************************************************* * * FUNCTION: AcpiTbCreateLocalFadt * * PARAMETERS: Table - Pointer to BIOS FADT * Length - Length of the table * * RETURN: None * * DESCRIPTION: Get a local copy of the FADT and convert it to a common format. * Performs validation on some important FADT fields. * * NOTE: We create a local copy of the FADT regardless of the version. * ******************************************************************************/ void AcpiTbCreateLocalFadt ( ACPI_TABLE_HEADER *Table, UINT32 Length) { /* * Check if the FADT is larger than the largest table that we expect * (the ACPI 5.0 version). If so, truncate the table, and issue * a warning. */ if (Length > sizeof (ACPI_TABLE_FADT)) { ACPI_BIOS_WARNING ((AE_INFO, "FADT (revision %u) is longer than ACPI 5.0 version, " "truncating length %u to %u", Table->Revision, Length, (UINT32) sizeof (ACPI_TABLE_FADT))); } /* Clear the entire local FADT */ ACPI_MEMSET (&AcpiGbl_FADT, 0, sizeof (ACPI_TABLE_FADT)); /* Copy the original FADT, up to sizeof (ACPI_TABLE_FADT) */ ACPI_MEMCPY (&AcpiGbl_FADT, Table, ACPI_MIN (Length, sizeof (ACPI_TABLE_FADT))); /* Take a copy of the Hardware Reduced flag */ AcpiGbl_ReducedHardware = FALSE; if (AcpiGbl_FADT.Flags & ACPI_FADT_HW_REDUCED) { AcpiGbl_ReducedHardware = TRUE; } /* Convert the local copy of the FADT to the common internal format */ AcpiTbConvertFadt (); /* Initialize the global ACPI register structures */ AcpiTbSetupFadtRegisters (); } /******************************************************************************* * * FUNCTION: AcpiTbConvertFadt * * PARAMETERS: None - AcpiGbl_FADT is used. * * RETURN: None * * DESCRIPTION: Converts all versions of the FADT to a common internal format. * Expand 32-bit addresses to 64-bit as necessary. Also validate * important fields within the FADT. * * NOTE: AcpiGbl_FADT must be of size (ACPI_TABLE_FADT), and must * contain a copy of the actual BIOS-provided FADT. * * Notes on 64-bit register addresses: * * After this FADT conversion, later ACPICA code will only use the 64-bit "X" * fields of the FADT for all ACPI register addresses. * * The 64-bit X fields are optional extensions to the original 32-bit FADT * V1.0 fields. Even if they are present in the FADT, they are optional and * are unused if the BIOS sets them to zero. Therefore, we must copy/expand * 32-bit V1.0 fields to the 64-bit X fields if the the 64-bit X field is * originally zero. * * For ACPI 1.0 FADTs (that contain no 64-bit addresses), all 32-bit address * fields are expanded to the corresponding 64-bit X fields in the internal * common FADT. * * For ACPI 2.0+ FADTs, all valid (non-zero) 32-bit address fields are expanded * to the corresponding 64-bit X fields, if the 64-bit field is originally * zero. Adhering to the ACPI specification, we completely ignore the 32-bit * field if the 64-bit field is valid, regardless of whether the host OS is * 32-bit or 64-bit. * * Possible additional checks: * (AcpiGbl_FADT.Pm1EventLength >= 4) * (AcpiGbl_FADT.Pm1ControlLength >= 2) * (AcpiGbl_FADT.PmTimerLength >= 4) * Gpe block lengths must be multiple of 2 * ******************************************************************************/ static void AcpiTbConvertFadt ( void) { char *Name; ACPI_GENERIC_ADDRESS *Address64; UINT32 Address32; UINT8 Length; UINT32 i; /* * For ACPI 1.0 FADTs (revision 1 or 2), ensure that reserved fields which * should be zero are indeed zero. This will workaround BIOSs that * inadvertently place values in these fields. * * The ACPI 1.0 reserved fields that will be zeroed are the bytes located * at offset 45, 55, 95, and the word located at offset 109, 110. * * Note: The FADT revision value is unreliable. Only the length can be * trusted. */ if (AcpiGbl_FADT.Header.Length <= ACPI_FADT_V2_SIZE) { AcpiGbl_FADT.PreferredProfile = 0; AcpiGbl_FADT.PstateControl = 0; AcpiGbl_FADT.CstControl = 0; AcpiGbl_FADT.BootFlags = 0; } /* * Now we can update the local FADT length to the length of the * current FADT version as defined by the ACPI specification. * Thus, we will have a common FADT internally. */ AcpiGbl_FADT.Header.Length = sizeof (ACPI_TABLE_FADT); /* * Expand the 32-bit FACS and DSDT addresses to 64-bit as necessary. * Later ACPICA code will always use the X 64-bit field. */ AcpiGbl_FADT.XFacs = AcpiTbSelectAddress ("FACS", AcpiGbl_FADT.Facs, AcpiGbl_FADT.XFacs); AcpiGbl_FADT.XDsdt = AcpiTbSelectAddress ("DSDT", AcpiGbl_FADT.Dsdt, AcpiGbl_FADT.XDsdt); /* If Hardware Reduced flag is set, we are all done */ if (AcpiGbl_ReducedHardware) { return; } /* Examine all of the 64-bit extended address fields (X fields) */ for (i = 0; i < ACPI_FADT_INFO_ENTRIES; i++) { /* * Get the 32-bit and 64-bit addresses, as well as the register * length and register name. */ Address32 = *ACPI_ADD_PTR (UINT32, &AcpiGbl_FADT, FadtInfoTable[i].Address32); Address64 = ACPI_ADD_PTR (ACPI_GENERIC_ADDRESS, &AcpiGbl_FADT, FadtInfoTable[i].Address64); Length = *ACPI_ADD_PTR (UINT8, &AcpiGbl_FADT, FadtInfoTable[i].Length); Name = FadtInfoTable[i].Name; /* * Expand the ACPI 1.0 32-bit addresses to the ACPI 2.0 64-bit "X" * generic address structures as necessary. Later code will always use * the 64-bit address structures. * * November 2013: * Now always use the 64-bit address if it is valid (non-zero), in * accordance with the ACPI specification which states that a 64-bit * address supersedes the 32-bit version. This behavior can be * overridden by the AcpiGbl_Use32BitFadtAddresses flag. * * During 64-bit address construction and verification, * these cases are handled: * * Address32 zero, Address64 [don't care] - Use Address64 * * Address32 non-zero, Address64 zero - Copy/use Address32 * Address32 non-zero == Address64 non-zero - Use Address64 * Address32 non-zero != Address64 non-zero - Warning, use Address64 * * Override: if AcpiGbl_Use32BitFadtAddresses is TRUE, and: * Address32 non-zero != Address64 non-zero - Warning, copy/use Address32 * * Note: SpaceId is always I/O for 32-bit legacy address fields */ if (Address32) { if (!Address64->Address) { /* 64-bit address is zero, use 32-bit address */ AcpiTbInitGenericAddress (Address64, ACPI_ADR_SPACE_SYSTEM_IO, *ACPI_ADD_PTR (UINT8, &AcpiGbl_FADT, FadtInfoTable[i].Length), (UINT64) Address32, Name); } else if (Address64->Address != (UINT64) Address32) { /* Address mismatch */ ACPI_BIOS_WARNING ((AE_INFO, "32/64X address mismatch in FADT/%s: " "0x%8.8X/0x%8.8X%8.8X, using %u-bit address", Name, Address32, ACPI_FORMAT_UINT64 (Address64->Address), AcpiGbl_Use32BitFadtAddresses ? 32 : 64)); if (AcpiGbl_Use32BitFadtAddresses) { /* 32-bit address override */ AcpiTbInitGenericAddress (Address64, ACPI_ADR_SPACE_SYSTEM_IO, *ACPI_ADD_PTR (UINT8, &AcpiGbl_FADT, FadtInfoTable[i].Length), (UINT64) Address32, Name); } } } /* * For each extended field, check for length mismatch between the * legacy length field and the corresponding 64-bit X length field. * Note: If the legacy length field is > 0xFF bits, ignore this * check. (GPE registers can be larger than the 64-bit GAS structure * can accomodate, 0xFF bits). */ if (Address64->Address && (ACPI_MUL_8 (Length) <= ACPI_UINT8_MAX) && (Address64->BitWidth != ACPI_MUL_8 (Length))) { ACPI_BIOS_WARNING ((AE_INFO, "32/64X length mismatch in FADT/%s: %u/%u", Name, ACPI_MUL_8 (Length), Address64->BitWidth)); } if (FadtInfoTable[i].Type & ACPI_FADT_REQUIRED) { /* * Field is required (PM1aEvent, PM1aControl). * Both the address and length must be non-zero. */ if (!Address64->Address || !Length) { ACPI_BIOS_ERROR ((AE_INFO, "Required FADT field %s has zero address and/or length: " "0x%8.8X%8.8X/0x%X", Name, ACPI_FORMAT_UINT64 (Address64->Address), Length)); } } else if (FadtInfoTable[i].Type & ACPI_FADT_SEPARATE_LENGTH) { /* * Field is optional (PM2Control, GPE0, GPE1) AND has its own * length field. If present, both the address and length must * be valid. */ if ((Address64->Address && !Length) || (!Address64->Address && Length)) { ACPI_BIOS_WARNING ((AE_INFO, "Optional FADT field %s has zero address or length: " "0x%8.8X%8.8X/0x%X", Name, ACPI_FORMAT_UINT64 (Address64->Address), Length)); } } } } /******************************************************************************* * * FUNCTION: AcpiTbSetupFadtRegisters * * PARAMETERS: None, uses AcpiGbl_FADT. * * RETURN: None * * DESCRIPTION: Initialize global ACPI PM1 register definitions. Optionally, * force FADT register definitions to their default lengths. * ******************************************************************************/ static void AcpiTbSetupFadtRegisters ( void) { ACPI_GENERIC_ADDRESS *Target64; ACPI_GENERIC_ADDRESS *Source64; UINT8 Pm1RegisterByteWidth; UINT32 i; /* * Optionally check all register lengths against the default values and * update them if they are incorrect. */ if (AcpiGbl_UseDefaultRegisterWidths) { for (i = 0; i < ACPI_FADT_INFO_ENTRIES; i++) { Target64 = ACPI_ADD_PTR (ACPI_GENERIC_ADDRESS, &AcpiGbl_FADT, FadtInfoTable[i].Address64); /* * If a valid register (Address != 0) and the (DefaultLength > 0) * (Not a GPE register), then check the width against the default. */ if ((Target64->Address) && (FadtInfoTable[i].DefaultLength > 0) && (FadtInfoTable[i].DefaultLength != Target64->BitWidth)) { ACPI_BIOS_WARNING ((AE_INFO, "Invalid length for FADT/%s: %u, using default %u", FadtInfoTable[i].Name, Target64->BitWidth, FadtInfoTable[i].DefaultLength)); /* Incorrect size, set width to the default */ Target64->BitWidth = FadtInfoTable[i].DefaultLength; } } } /* * Get the length of the individual PM1 registers (enable and status). * Each register is defined to be (event block length / 2). Extra divide * by 8 converts bits to bytes. */ Pm1RegisterByteWidth = (UINT8) ACPI_DIV_16 (AcpiGbl_FADT.XPm1aEventBlock.BitWidth); /* * Calculate separate GAS structs for the PM1x (A/B) Status and Enable * registers. These addresses do not appear (directly) in the FADT, so it * is useful to pre-calculate them from the PM1 Event Block definitions. * * The PM event blocks are split into two register blocks, first is the * PM Status Register block, followed immediately by the PM Enable * Register block. Each is of length (Pm1EventLength/2) * * Note: The PM1A event block is required by the ACPI specification. * However, the PM1B event block is optional and is rarely, if ever, * used. */ for (i = 0; i < ACPI_FADT_PM_INFO_ENTRIES; i++) { Source64 = ACPI_ADD_PTR (ACPI_GENERIC_ADDRESS, &AcpiGbl_FADT, FadtPmInfoTable[i].Source); if (Source64->Address) { AcpiTbInitGenericAddress (FadtPmInfoTable[i].Target, Source64->SpaceId, Pm1RegisterByteWidth, Source64->Address + (FadtPmInfoTable[i].RegisterNum * Pm1RegisterByteWidth), "PmRegisters"); } } } src/acpica/source/components/tables/tbfind.c000066400000000000000000000223621231470457100214470ustar00rootroot00000000000000/****************************************************************************** * * Module Name: tbfind - find table * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #define __TBFIND_C__ #include "acpi.h" #include "accommon.h" #include "actables.h" #define _COMPONENT ACPI_TABLES ACPI_MODULE_NAME ("tbfind") /******************************************************************************* * * FUNCTION: AcpiTbFindTable * * PARAMETERS: Signature - String with ACPI table signature * OemId - String with the table OEM ID * OemTableId - String with the OEM Table ID * TableIndex - Where the table index is returned * * RETURN: Status and table index * * DESCRIPTION: Find an ACPI table (in the RSDT/XSDT) that matches the * Signature, OEM ID and OEM Table ID. Returns an index that can * be used to get the table header or entire table. * ******************************************************************************/ ACPI_STATUS AcpiTbFindTable ( char *Signature, char *OemId, char *OemTableId, UINT32 *TableIndex) { UINT32 i; ACPI_STATUS Status; ACPI_TABLE_HEADER Header; ACPI_FUNCTION_TRACE (TbFindTable); /* Normalize the input strings */ ACPI_MEMSET (&Header, 0, sizeof (ACPI_TABLE_HEADER)); ACPI_MOVE_NAME (Header.Signature, Signature); ACPI_STRNCPY (Header.OemId, OemId, ACPI_OEM_ID_SIZE); ACPI_STRNCPY (Header.OemTableId, OemTableId, ACPI_OEM_TABLE_ID_SIZE); /* Search for the table */ for (i = 0; i < AcpiGbl_RootTableList.CurrentTableCount; ++i) { if (ACPI_MEMCMP (&(AcpiGbl_RootTableList.Tables[i].Signature), Header.Signature, ACPI_NAME_SIZE)) { /* Not the requested table */ continue; } /* Table with matching signature has been found */ if (!AcpiGbl_RootTableList.Tables[i].Pointer) { /* Table is not currently mapped, map it */ Status = AcpiTbValidateTable (&AcpiGbl_RootTableList.Tables[i]); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } if (!AcpiGbl_RootTableList.Tables[i].Pointer) { continue; } } /* Check for table match on all IDs */ if (!ACPI_MEMCMP (AcpiGbl_RootTableList.Tables[i].Pointer->Signature, Header.Signature, ACPI_NAME_SIZE) && (!OemId[0] || !ACPI_MEMCMP (AcpiGbl_RootTableList.Tables[i].Pointer->OemId, Header.OemId, ACPI_OEM_ID_SIZE)) && (!OemTableId[0] || !ACPI_MEMCMP (AcpiGbl_RootTableList.Tables[i].Pointer->OemTableId, Header.OemTableId, ACPI_OEM_TABLE_ID_SIZE))) { *TableIndex = i; ACPI_DEBUG_PRINT ((ACPI_DB_TABLES, "Found table [%4.4s]\n", Header.Signature)); return_ACPI_STATUS (AE_OK); } } return_ACPI_STATUS (AE_NOT_FOUND); } src/acpica/source/components/tables/tbinstal.c000066400000000000000000000542161231470457100220240ustar00rootroot00000000000000/****************************************************************************** * * Module Name: tbinstal - ACPI table installation and removal * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #define __TBINSTAL_C__ #include "acpi.h" #include "accommon.h" #include "actables.h" #define _COMPONENT ACPI_TABLES ACPI_MODULE_NAME ("tbinstal") /* Local prototypes */ static BOOLEAN AcpiTbCompareTables ( ACPI_TABLE_DESC *TableDesc, UINT32 TableIndex); /******************************************************************************* * * FUNCTION: AcpiTbCompareTables * * PARAMETERS: TableDesc - Table 1 descriptor to be compared * TableIndex - Index of table 2 to be compared * * RETURN: TRUE if both tables are identical. * * DESCRIPTION: This function compares a table with another table that has * already been installed in the root table list. * ******************************************************************************/ static BOOLEAN AcpiTbCompareTables ( ACPI_TABLE_DESC *TableDesc, UINT32 TableIndex) { ACPI_STATUS Status = AE_OK; BOOLEAN IsIdentical; ACPI_TABLE_HEADER *Table; UINT32 TableLength; UINT8 TableFlags; Status = AcpiTbAcquireTable (&AcpiGbl_RootTableList.Tables[TableIndex], &Table, &TableLength, &TableFlags); if (ACPI_FAILURE (Status)) { return (FALSE); } /* * Check for a table match on the entire table length, * not just the header. */ IsIdentical = (BOOLEAN)((TableDesc->Length != TableLength || ACPI_MEMCMP (TableDesc->Pointer, Table, TableLength)) ? FALSE : TRUE); /* Release the acquired table */ AcpiTbReleaseTable (Table, TableLength, TableFlags); return (IsIdentical); } /******************************************************************************* * * FUNCTION: AcpiTbInstallTableWithOverride * * PARAMETERS: TableIndex - Index into root table array * NewTableDesc - New table descriptor to install * Override - Whether override should be performed * * RETURN: None * * DESCRIPTION: Install an ACPI table into the global data structure. The * table override mechanism is called to allow the host * OS to replace any table before it is installed in the root * table array. * ******************************************************************************/ void AcpiTbInstallTableWithOverride ( UINT32 TableIndex, ACPI_TABLE_DESC *NewTableDesc, BOOLEAN Override) { if (TableIndex >= AcpiGbl_RootTableList.CurrentTableCount) { return; } /* * ACPI Table Override: * * Before we install the table, let the host OS override it with a new * one if desired. Any table within the RSDT/XSDT can be replaced, * including the DSDT which is pointed to by the FADT. */ if (Override) { AcpiTbOverrideTable (NewTableDesc); } AcpiTbInitTableDescriptor (&AcpiGbl_RootTableList.Tables[TableIndex], NewTableDesc->Address, NewTableDesc->Flags, NewTableDesc->Pointer); AcpiTbPrintTableHeader (NewTableDesc->Address, NewTableDesc->Pointer); /* Set the global integer width (based upon revision of the DSDT) */ if (TableIndex == ACPI_TABLE_INDEX_DSDT) { AcpiUtSetIntegerWidth (NewTableDesc->Pointer->Revision); } } /******************************************************************************* * * FUNCTION: AcpiTbInstallFixedTable * * PARAMETERS: Address - Physical address of DSDT or FACS * Signature - Table signature, NULL if no need to * match * TableIndex - Index into root table array * * RETURN: Status * * DESCRIPTION: Install a fixed ACPI table (DSDT/FACS) into the global data * structure. * ******************************************************************************/ ACPI_STATUS AcpiTbInstallFixedTable ( ACPI_PHYSICAL_ADDRESS Address, char *Signature, UINT32 TableIndex) { ACPI_TABLE_DESC NewTableDesc; ACPI_STATUS Status; ACPI_FUNCTION_TRACE (TbInstallFixedTable); if (!Address) { ACPI_ERROR ((AE_INFO, "Null physical address for ACPI table [%s]", Signature)); return (AE_NO_MEMORY); } /* Fill a table descriptor for validation */ Status = AcpiTbAcquireTempTable (&NewTableDesc, Address, ACPI_TABLE_ORIGIN_INTERNAL_PHYSICAL); if (ACPI_FAILURE (Status)) { ACPI_ERROR ((AE_INFO, "Could not acquire table length at %p", ACPI_CAST_PTR (void, Address))); return_ACPI_STATUS (Status); } /* Validate and verify a table before installation */ Status = AcpiTbVerifyTable (&NewTableDesc, Signature); if (ACPI_FAILURE (Status)) { goto ReleaseAndExit; } AcpiTbInstallTableWithOverride (TableIndex, &NewTableDesc, TRUE); ReleaseAndExit: /* Release the temporary table descriptor */ AcpiTbReleaseTempTable (&NewTableDesc); return_ACPI_STATUS (Status); } /******************************************************************************* * * FUNCTION: AcpiTbInstallStandardTable * * PARAMETERS: Address - Address of the table (might be a virtual * address depending on the TableFlags) * Flags - Flags for the table * Reload - Whether reload should be performed * Override - Whether override should be performed * TableIndex - Where the table index is returned * * RETURN: Status * * DESCRIPTION: This function is called to install an ACPI table that is * neither DSDT nor FACS (a "standard" table.) * When this function is called by "Load" or "LoadTable" opcodes, * or by AcpiLoadTable() API, the "Reload" parameter is set. * After sucessfully returning from this function, table is * "INSTALLED" but not "VALIDATED". * ******************************************************************************/ ACPI_STATUS AcpiTbInstallStandardTable ( ACPI_PHYSICAL_ADDRESS Address, UINT8 Flags, BOOLEAN Reload, BOOLEAN Override, UINT32 *TableIndex) { UINT32 i; ACPI_STATUS Status = AE_OK; ACPI_TABLE_DESC NewTableDesc; ACPI_FUNCTION_TRACE (TbInstallStandardTable); /* Acquire a temporary table descriptor for validation */ Status = AcpiTbAcquireTempTable (&NewTableDesc, Address, Flags); if (ACPI_FAILURE (Status)) { ACPI_ERROR ((AE_INFO, "Could not acquire table length at %p", ACPI_CAST_PTR (void, Address))); return_ACPI_STATUS (Status); } /* * Optionally do not load any SSDTs from the RSDT/XSDT. This can * be useful for debugging ACPI problems on some machines. */ if (!Reload && AcpiGbl_DisableSsdtTableInstall && ACPI_COMPARE_NAME (&NewTableDesc.Signature, ACPI_SIG_SSDT)) { ACPI_INFO ((AE_INFO, "Ignoring installation of %4.4s at %p", NewTableDesc.Signature.Ascii, ACPI_CAST_PTR (void, Address))); goto ReleaseAndExit; } /* Validate and verify a table before installation */ Status = AcpiTbVerifyTable (&NewTableDesc, NULL); if (ACPI_FAILURE (Status)) { goto ReleaseAndExit; } if (Reload) { /* * Validate the incoming table signature. * * 1) Originally, we checked the table signature for "SSDT" or "PSDT". * 2) We added support for OEMx tables, signature "OEM". * 3) Valid tables were encountered with a null signature, so we just * gave up on validating the signature, (05/2008). * 4) We encountered non-AML tables such as the MADT, which caused * interpreter errors and kernel faults. So now, we once again allow * only "SSDT", "OEMx", and now, also a null signature. (05/2011). */ if ((NewTableDesc.Signature.Ascii[0] != 0x00) && (!ACPI_COMPARE_NAME (&NewTableDesc.Signature, ACPI_SIG_SSDT)) && (ACPI_STRNCMP (NewTableDesc.Signature.Ascii, "OEM", 3))) { ACPI_BIOS_ERROR ((AE_INFO, "Table has invalid signature [%4.4s] (0x%8.8X), " "must be SSDT or OEMx", AcpiUtValidAcpiName (NewTableDesc.Signature.Ascii) ? NewTableDesc.Signature.Ascii : "????", NewTableDesc.Signature.Integer)); Status = AE_BAD_SIGNATURE; goto ReleaseAndExit; } /* Check if table is already registered */ for (i = 0; i < AcpiGbl_RootTableList.CurrentTableCount; ++i) { /* * Check for a table match on the entire table length, * not just the header. */ if (!AcpiTbCompareTables (&NewTableDesc, i)) { continue; } /* * Note: the current mechanism does not unregister a table if it is * dynamically unloaded. The related namespace entries are deleted, * but the table remains in the root table list. * * The assumption here is that the number of different tables that * will be loaded is actually small, and there is minimal overhead * in just keeping the table in case it is needed again. * * If this assumption changes in the future (perhaps on large * machines with many table load/unload operations), tables will * need to be unregistered when they are unloaded, and slots in the * root table list should be reused when empty. */ if (AcpiGbl_RootTableList.Tables[i].Flags & ACPI_TABLE_IS_LOADED) { /* Table is still loaded, this is an error */ Status = AE_ALREADY_EXISTS; goto ReleaseAndExit; } else { /* * Table was unloaded, allow it to be reloaded. * As we are going to return AE_OK to the caller, we should * take the responsibility of freeing the input descriptor. * Refill the input descriptor to ensure * AcpiTbInstallTableWithOverride() can be called again to * indicate the re-installation. */ AcpiTbUninstallTable (&NewTableDesc); *TableIndex = i; (void) AcpiUtReleaseMutex (ACPI_MTX_TABLES); return_ACPI_STATUS (AE_OK); } } } /* Add the table to the global root table list */ Status = AcpiTbGetNextRootIndex (&i); if (ACPI_FAILURE (Status)) { goto ReleaseAndExit; } *TableIndex = i; AcpiTbInstallTableWithOverride (i, &NewTableDesc, Override); ReleaseAndExit: /* Release the temporary table descriptor */ AcpiTbReleaseTempTable (&NewTableDesc); return_ACPI_STATUS (Status); } /******************************************************************************* * * FUNCTION: AcpiTbOverrideTable * * PARAMETERS: OldTableDesc - Validated table descriptor to be * overridden * * RETURN: None * * DESCRIPTION: Attempt table override by calling the OSL override functions. * Note: If the table is overridden, then the entire new table * is acquired and returned by this function. * Before/after invocation, the table descriptor is in a state * that is "VALIDATED". * ******************************************************************************/ void AcpiTbOverrideTable ( ACPI_TABLE_DESC *OldTableDesc) { ACPI_STATUS Status; char *OverrideType; ACPI_TABLE_DESC NewTableDesc; ACPI_TABLE_HEADER *Table; ACPI_PHYSICAL_ADDRESS Address; UINT32 Length; /* (1) Attempt logical override (returns a logical address) */ Status = AcpiOsTableOverride (OldTableDesc->Pointer, &Table); if (ACPI_SUCCESS (Status) && Table) { AcpiTbAcquireTempTable (&NewTableDesc, ACPI_PTR_TO_PHYSADDR (Table), ACPI_TABLE_ORIGIN_EXTERNAL_VIRTUAL); OverrideType = "Logical"; goto FinishOverride; } /* (2) Attempt physical override (returns a physical address) */ Status = AcpiOsPhysicalTableOverride (OldTableDesc->Pointer, &Address, &Length); if (ACPI_SUCCESS (Status) && Address && Length) { AcpiTbAcquireTempTable (&NewTableDesc, Address, ACPI_TABLE_ORIGIN_INTERNAL_PHYSICAL); OverrideType = "Physical"; goto FinishOverride; } return; /* There was no override */ FinishOverride: /* Validate and verify a table before overriding */ Status = AcpiTbVerifyTable (&NewTableDesc, NULL); if (ACPI_FAILURE (Status)) { return; } ACPI_INFO ((AE_INFO, "%4.4s " ACPI_PRINTF_UINT " %s table override, new table: " ACPI_PRINTF_UINT, OldTableDesc->Signature.Ascii, ACPI_FORMAT_TO_UINT (OldTableDesc->Address), OverrideType, ACPI_FORMAT_TO_UINT (NewTableDesc.Address))); /* We can now uninstall the original table */ AcpiTbUninstallTable (OldTableDesc); /* * Replace the original table descriptor and keep its state as * "VALIDATED". */ AcpiTbInitTableDescriptor (OldTableDesc, NewTableDesc.Address, NewTableDesc.Flags, NewTableDesc.Pointer); AcpiTbValidateTable (OldTableDesc); /* Release the temporary table descriptor */ AcpiTbReleaseTempTable (&NewTableDesc); } /******************************************************************************* * * FUNCTION: AcpiTbStoreTable * * PARAMETERS: Address - Table address * Table - Table header * Length - Table length * Flags - Install flags * TableIndex - Where the table index is returned * * RETURN: Status and table index. * * DESCRIPTION: Add an ACPI table to the global table list * ******************************************************************************/ ACPI_STATUS AcpiTbStoreTable ( ACPI_PHYSICAL_ADDRESS Address, ACPI_TABLE_HEADER *Table, UINT32 Length, UINT8 Flags, UINT32 *TableIndex) { ACPI_STATUS Status; ACPI_TABLE_DESC *TableDesc; Status = AcpiTbGetNextRootIndex (TableIndex); if (ACPI_FAILURE (Status)) { return (Status); } /* Initialize added table */ TableDesc = &AcpiGbl_RootTableList.Tables[*TableIndex]; AcpiTbInitTableDescriptor (TableDesc, Address, Flags, Table); TableDesc->Pointer = Table; return (AE_OK); } /******************************************************************************* * * FUNCTION: AcpiTbUninstallTable * * PARAMETERS: TableDesc - Table descriptor * * RETURN: None * * DESCRIPTION: Delete one internal ACPI table * ******************************************************************************/ void AcpiTbUninstallTable ( ACPI_TABLE_DESC *TableDesc) { ACPI_FUNCTION_TRACE (TbUninstallTable); /* Table must be installed */ if (!TableDesc->Address) { return_VOID; } AcpiTbInvalidateTable (TableDesc); if ((TableDesc->Flags & ACPI_TABLE_ORIGIN_MASK) == ACPI_TABLE_ORIGIN_INTERNAL_VIRTUAL) { ACPI_FREE (ACPI_CAST_PTR (void, TableDesc->Address)); } TableDesc->Address = ACPI_PTR_TO_PHYSADDR (NULL); return_VOID; } src/acpica/source/components/tables/tbprint.c000066400000000000000000000312511231470457100216600ustar00rootroot00000000000000/****************************************************************************** * * Module Name: tbprint - Table output utilities * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #define __TBPRINT_C__ #include "acpi.h" #include "accommon.h" #include "actables.h" #define _COMPONENT ACPI_TABLES ACPI_MODULE_NAME ("tbprint") /* Local prototypes */ static void AcpiTbFixString ( char *String, ACPI_SIZE Length); static void AcpiTbCleanupTableHeader ( ACPI_TABLE_HEADER *OutHeader, ACPI_TABLE_HEADER *Header); /******************************************************************************* * * FUNCTION: AcpiTbFixString * * PARAMETERS: String - String to be repaired * Length - Maximum length * * RETURN: None * * DESCRIPTION: Replace every non-printable or non-ascii byte in the string * with a question mark '?'. * ******************************************************************************/ static void AcpiTbFixString ( char *String, ACPI_SIZE Length) { while (Length && *String) { if (!ACPI_IS_PRINT (*String)) { *String = '?'; } String++; Length--; } } /******************************************************************************* * * FUNCTION: AcpiTbCleanupTableHeader * * PARAMETERS: OutHeader - Where the cleaned header is returned * Header - Input ACPI table header * * RETURN: Returns the cleaned header in OutHeader * * DESCRIPTION: Copy the table header and ensure that all "string" fields in * the header consist of printable characters. * ******************************************************************************/ static void AcpiTbCleanupTableHeader ( ACPI_TABLE_HEADER *OutHeader, ACPI_TABLE_HEADER *Header) { ACPI_MEMCPY (OutHeader, Header, sizeof (ACPI_TABLE_HEADER)); AcpiTbFixString (OutHeader->Signature, ACPI_NAME_SIZE); AcpiTbFixString (OutHeader->OemId, ACPI_OEM_ID_SIZE); AcpiTbFixString (OutHeader->OemTableId, ACPI_OEM_TABLE_ID_SIZE); AcpiTbFixString (OutHeader->AslCompilerId, ACPI_NAME_SIZE); } /******************************************************************************* * * FUNCTION: AcpiTbPrintTableHeader * * PARAMETERS: Address - Table physical address * Header - Table header * * RETURN: None * * DESCRIPTION: Print an ACPI table header. Special cases for FACS and RSDP. * ******************************************************************************/ void AcpiTbPrintTableHeader ( ACPI_PHYSICAL_ADDRESS Address, ACPI_TABLE_HEADER *Header) { ACPI_TABLE_HEADER LocalHeader; /* * The reason that we use ACPI_PRINTF_UINT and ACPI_FORMAT_TO_UINT is to * support both 32-bit and 64-bit hosts/addresses in a consistent manner. * The %p specifier does not emit uniform output on all hosts. On some, * leading zeros are not supported. */ if (ACPI_COMPARE_NAME (Header->Signature, ACPI_SIG_FACS)) { /* FACS only has signature and length fields */ ACPI_INFO ((AE_INFO, "%-4.4s " ACPI_PRINTF_UINT " %06X", Header->Signature, ACPI_FORMAT_TO_UINT (Address), Header->Length)); } else if (ACPI_VALIDATE_RSDP_SIG (Header->Signature)) { /* RSDP has no common fields */ ACPI_MEMCPY (LocalHeader.OemId, ACPI_CAST_PTR (ACPI_TABLE_RSDP, Header)->OemId, ACPI_OEM_ID_SIZE); AcpiTbFixString (LocalHeader.OemId, ACPI_OEM_ID_SIZE); ACPI_INFO ((AE_INFO, "RSDP " ACPI_PRINTF_UINT " %06X (v%.2d %-6.6s)", ACPI_FORMAT_TO_UINT (Address), (ACPI_CAST_PTR (ACPI_TABLE_RSDP, Header)->Revision > 0) ? ACPI_CAST_PTR (ACPI_TABLE_RSDP, Header)->Length : 20, ACPI_CAST_PTR (ACPI_TABLE_RSDP, Header)->Revision, LocalHeader.OemId)); } else { /* Standard ACPI table with full common header */ AcpiTbCleanupTableHeader (&LocalHeader, Header); ACPI_INFO ((AE_INFO, "%-4.4s " ACPI_PRINTF_UINT " %06X (v%.2d %-6.6s %-8.8s %08X %-4.4s %08X)", LocalHeader.Signature, ACPI_FORMAT_TO_UINT (Address), LocalHeader.Length, LocalHeader.Revision, LocalHeader.OemId, LocalHeader.OemTableId, LocalHeader.OemRevision, LocalHeader.AslCompilerId, LocalHeader.AslCompilerRevision)); } } /******************************************************************************* * * FUNCTION: AcpiTbValidateChecksum * * PARAMETERS: Table - ACPI table to verify * Length - Length of entire table * * RETURN: Status * * DESCRIPTION: Verifies that the table checksums to zero. Optionally returns * exception on bad checksum. * ******************************************************************************/ ACPI_STATUS AcpiTbVerifyChecksum ( ACPI_TABLE_HEADER *Table, UINT32 Length) { UINT8 Checksum; /* * FACS/S3PT: * They are the odd tables, have no standard ACPI header and no checksum */ if (ACPI_COMPARE_NAME (Table->Signature, ACPI_SIG_S3PT) || ACPI_COMPARE_NAME (Table->Signature, ACPI_SIG_FACS)) { return (AE_OK); } /* Compute the checksum on the table */ Checksum = AcpiTbChecksum (ACPI_CAST_PTR (UINT8, Table), Length); /* Checksum ok? (should be zero) */ if (Checksum) { ACPI_BIOS_WARNING ((AE_INFO, "Incorrect checksum in table [%4.4s] - 0x%2.2X, " "should be 0x%2.2X", Table->Signature, Table->Checksum, (UINT8) (Table->Checksum - Checksum))); #if (ACPI_CHECKSUM_ABORT) return (AE_BAD_CHECKSUM); #endif } return (AE_OK); } /******************************************************************************* * * FUNCTION: AcpiTbChecksum * * PARAMETERS: Buffer - Pointer to memory region to be checked * Length - Length of this memory region * * RETURN: Checksum (UINT8) * * DESCRIPTION: Calculates circular checksum of memory region. * ******************************************************************************/ UINT8 AcpiTbChecksum ( UINT8 *Buffer, UINT32 Length) { UINT8 Sum = 0; UINT8 *End = Buffer + Length; while (Buffer < End) { Sum = (UINT8) (Sum + *(Buffer++)); } return (Sum); } src/acpica/source/components/tables/tbutils.c000066400000000000000000000477471231470457100217050ustar00rootroot00000000000000/****************************************************************************** * * Module Name: tbutils - ACPI Table utilities * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #define __TBUTILS_C__ #include "acpi.h" #include "accommon.h" #include "actables.h" #define _COMPONENT ACPI_TABLES ACPI_MODULE_NAME ("tbutils") /* Local prototypes */ static ACPI_STATUS AcpiTbValidateXsdt ( ACPI_PHYSICAL_ADDRESS Address); static ACPI_PHYSICAL_ADDRESS AcpiTbGetRootTableEntry ( UINT8 *TableEntry, UINT32 TableEntrySize); #if (!ACPI_REDUCED_HARDWARE) /******************************************************************************* * * FUNCTION: AcpiTbInitializeFacs * * PARAMETERS: None * * RETURN: Status * * DESCRIPTION: Create a permanent mapping for the FADT and save it in a global * for accessing the Global Lock and Firmware Waking Vector * ******************************************************************************/ ACPI_STATUS AcpiTbInitializeFacs ( void) { ACPI_STATUS Status; /* If Hardware Reduced flag is set, there is no FACS */ if (AcpiGbl_ReducedHardware) { AcpiGbl_FACS = NULL; return (AE_OK); } Status = AcpiGetTableByIndex (ACPI_TABLE_INDEX_FACS, ACPI_CAST_INDIRECT_PTR (ACPI_TABLE_HEADER, &AcpiGbl_FACS)); return (Status); } #endif /* !ACPI_REDUCED_HARDWARE */ /******************************************************************************* * * FUNCTION: AcpiTbTablesLoaded * * PARAMETERS: None * * RETURN: TRUE if required ACPI tables are loaded * * DESCRIPTION: Determine if the minimum required ACPI tables are present * (FADT, FACS, DSDT) * ******************************************************************************/ BOOLEAN AcpiTbTablesLoaded ( void) { if (AcpiGbl_RootTableList.CurrentTableCount >= 3) { return (TRUE); } return (FALSE); } /******************************************************************************* * * FUNCTION: AcpiTbCheckDsdtHeader * * PARAMETERS: None * * RETURN: None * * DESCRIPTION: Quick compare to check validity of the DSDT. This will detect * if the DSDT has been replaced from outside the OS and/or if * the DSDT header has been corrupted. * ******************************************************************************/ void AcpiTbCheckDsdtHeader ( void) { /* Compare original length and checksum to current values */ if (AcpiGbl_OriginalDsdtHeader.Length != AcpiGbl_DSDT->Length || AcpiGbl_OriginalDsdtHeader.Checksum != AcpiGbl_DSDT->Checksum) { ACPI_BIOS_ERROR ((AE_INFO, "The DSDT has been corrupted or replaced - " "old, new headers below")); AcpiTbPrintTableHeader (0, &AcpiGbl_OriginalDsdtHeader); AcpiTbPrintTableHeader (0, AcpiGbl_DSDT); /* Disable further error messages */ AcpiGbl_OriginalDsdtHeader.Length = AcpiGbl_DSDT->Length; AcpiGbl_OriginalDsdtHeader.Checksum = AcpiGbl_DSDT->Checksum; } } /******************************************************************************* * * FUNCTION: AcpiTbCopyDsdt * * PARAMETERS: TableDesc - Installed table to copy * * RETURN: None * * DESCRIPTION: Implements a subsystem option to copy the DSDT to local memory. * Some very bad BIOSs are known to either corrupt the DSDT or * install a new, bad DSDT. This copy works around the problem. * ******************************************************************************/ ACPI_TABLE_HEADER * AcpiTbCopyDsdt ( UINT32 TableIndex) { ACPI_TABLE_HEADER *NewTable; ACPI_TABLE_DESC *TableDesc; TableDesc = &AcpiGbl_RootTableList.Tables[TableIndex]; NewTable = ACPI_ALLOCATE (TableDesc->Length); if (!NewTable) { ACPI_ERROR ((AE_INFO, "Could not copy DSDT of length 0x%X", TableDesc->Length)); return (NULL); } ACPI_MEMCPY (NewTable, TableDesc->Pointer, TableDesc->Length); AcpiTbUninstallTable (TableDesc); AcpiTbInitTableDescriptor ( &AcpiGbl_RootTableList.Tables[ACPI_TABLE_INDEX_DSDT], ACPI_PTR_TO_PHYSADDR (NewTable), ACPI_TABLE_ORIGIN_INTERNAL_VIRTUAL, NewTable); ACPI_INFO ((AE_INFO, "Forced DSDT copy: length 0x%05X copied locally, original unmapped", NewTable->Length)); return (NewTable); } /******************************************************************************* * * FUNCTION: AcpiTbGetRootTableEntry * * PARAMETERS: TableEntry - Pointer to the RSDT/XSDT table entry * TableEntrySize - sizeof 32 or 64 (RSDT or XSDT) * * RETURN: Physical address extracted from the root table * * DESCRIPTION: Get one root table entry. Handles 32-bit and 64-bit cases on * both 32-bit and 64-bit platforms * * NOTE: ACPI_PHYSICAL_ADDRESS is 32-bit on 32-bit platforms, 64-bit on * 64-bit platforms. * ******************************************************************************/ static ACPI_PHYSICAL_ADDRESS AcpiTbGetRootTableEntry ( UINT8 *TableEntry, UINT32 TableEntrySize) { UINT64 Address64; /* * Get the table physical address (32-bit for RSDT, 64-bit for XSDT): * Note: Addresses are 32-bit aligned (not 64) in both RSDT and XSDT */ if (TableEntrySize == ACPI_RSDT_ENTRY_SIZE) { /* * 32-bit platform, RSDT: Return 32-bit table entry * 64-bit platform, RSDT: Expand 32-bit to 64-bit and return */ return ((ACPI_PHYSICAL_ADDRESS) (*ACPI_CAST_PTR (UINT32, TableEntry))); } else { /* * 32-bit platform, XSDT: Truncate 64-bit to 32-bit and return * 64-bit platform, XSDT: Move (unaligned) 64-bit to local, * return 64-bit */ ACPI_MOVE_64_TO_64 (&Address64, TableEntry); #if ACPI_MACHINE_WIDTH == 32 if (Address64 > ACPI_UINT32_MAX) { /* Will truncate 64-bit address to 32 bits, issue warning */ ACPI_BIOS_WARNING ((AE_INFO, "64-bit Physical Address in XSDT is too large (0x%8.8X%8.8X)," " truncating", ACPI_FORMAT_UINT64 (Address64))); } #endif return ((ACPI_PHYSICAL_ADDRESS) (Address64)); } } /******************************************************************************* * * FUNCTION: AcpiTbValidateXsdt * * PARAMETERS: Address - Physical address of the XSDT (from RSDP) * * RETURN: Status. AE_OK if the table appears to be valid. * * DESCRIPTION: Validate an XSDT to ensure that it is of minimum size and does * not contain any NULL entries. A problem that is seen in the * field is that the XSDT exists, but is actually useless because * of one or more (or all) NULL entries. * ******************************************************************************/ static ACPI_STATUS AcpiTbValidateXsdt ( ACPI_PHYSICAL_ADDRESS XsdtAddress) { ACPI_TABLE_HEADER *Table; UINT8 *NextEntry; ACPI_PHYSICAL_ADDRESS Address; UINT32 Length; UINT32 EntryCount; ACPI_STATUS Status; UINT32 i; /* Get the XSDT length */ Table = AcpiOsMapMemory (XsdtAddress, sizeof (ACPI_TABLE_HEADER)); if (!Table) { return (AE_NO_MEMORY); } Length = Table->Length; AcpiOsUnmapMemory (Table, sizeof (ACPI_TABLE_HEADER)); /* * Minimum XSDT length is the size of the standard ACPI header * plus one physical address entry */ if (Length < (sizeof (ACPI_TABLE_HEADER) + ACPI_XSDT_ENTRY_SIZE)) { return (AE_INVALID_TABLE_LENGTH); } /* Map the entire XSDT */ Table = AcpiOsMapMemory (XsdtAddress, Length); if (!Table) { return (AE_NO_MEMORY); } /* Get the number of entries and pointer to first entry */ Status = AE_OK; NextEntry = ACPI_ADD_PTR (UINT8, Table, sizeof (ACPI_TABLE_HEADER)); EntryCount = (UINT32) ((Table->Length - sizeof (ACPI_TABLE_HEADER)) / ACPI_XSDT_ENTRY_SIZE); /* Validate each entry (physical address) within the XSDT */ for (i = 0; i < EntryCount; i++) { Address = AcpiTbGetRootTableEntry (NextEntry, ACPI_XSDT_ENTRY_SIZE); if (!Address) { /* Detected a NULL entry, XSDT is invalid */ Status = AE_NULL_ENTRY; break; } NextEntry += ACPI_XSDT_ENTRY_SIZE; } /* Unmap table */ AcpiOsUnmapMemory (Table, Length); return (Status); } /******************************************************************************* * * FUNCTION: AcpiTbParseRootTable * * PARAMETERS: Rsdp - Pointer to the RSDP * * RETURN: Status * * DESCRIPTION: This function is called to parse the Root System Description * Table (RSDT or XSDT) * * NOTE: Tables are mapped (not copied) for efficiency. The FACS must * be mapped and cannot be copied because it contains the actual * memory location of the ACPI Global Lock. * ******************************************************************************/ ACPI_STATUS AcpiTbParseRootTable ( ACPI_PHYSICAL_ADDRESS RsdpAddress) { ACPI_TABLE_RSDP *Rsdp; UINT32 TableEntrySize; UINT32 i; UINT32 TableCount; ACPI_TABLE_HEADER *Table; ACPI_PHYSICAL_ADDRESS Address; UINT32 Length; UINT8 *TableEntry; ACPI_STATUS Status; UINT32 TableIndex; ACPI_FUNCTION_TRACE (TbParseRootTable); /* Map the entire RSDP and extract the address of the RSDT or XSDT */ Rsdp = AcpiOsMapMemory (RsdpAddress, sizeof (ACPI_TABLE_RSDP)); if (!Rsdp) { return_ACPI_STATUS (AE_NO_MEMORY); } AcpiTbPrintTableHeader (RsdpAddress, ACPI_CAST_PTR (ACPI_TABLE_HEADER, Rsdp)); /* Use XSDT if present and not overridden. Otherwise, use RSDT */ if ((Rsdp->Revision > 1) && Rsdp->XsdtPhysicalAddress && !AcpiGbl_DoNotUseXsdt) { /* * RSDP contains an XSDT (64-bit physical addresses). We must use * the XSDT if the revision is > 1 and the XSDT pointer is present, * as per the ACPI specification. */ Address = (ACPI_PHYSICAL_ADDRESS) Rsdp->XsdtPhysicalAddress; TableEntrySize = ACPI_XSDT_ENTRY_SIZE; } else { /* Root table is an RSDT (32-bit physical addresses) */ Address = (ACPI_PHYSICAL_ADDRESS) Rsdp->RsdtPhysicalAddress; TableEntrySize = ACPI_RSDT_ENTRY_SIZE; } /* * It is not possible to map more than one entry in some environments, * so unmap the RSDP here before mapping other tables */ AcpiOsUnmapMemory (Rsdp, sizeof (ACPI_TABLE_RSDP)); /* * If it is present and used, validate the XSDT for access/size * and ensure that all table entries are at least non-NULL */ if (TableEntrySize == ACPI_XSDT_ENTRY_SIZE) { Status = AcpiTbValidateXsdt (Address); if (ACPI_FAILURE (Status)) { ACPI_BIOS_WARNING ((AE_INFO, "XSDT is invalid (%s), using RSDT", AcpiFormatException (Status))); /* Fall back to the RSDT */ Address = (ACPI_PHYSICAL_ADDRESS) Rsdp->RsdtPhysicalAddress; TableEntrySize = ACPI_RSDT_ENTRY_SIZE; } } /* Map the RSDT/XSDT table header to get the full table length */ Table = AcpiOsMapMemory (Address, sizeof (ACPI_TABLE_HEADER)); if (!Table) { return_ACPI_STATUS (AE_NO_MEMORY); } AcpiTbPrintTableHeader (Address, Table); /* * Validate length of the table, and map entire table. * Minimum length table must contain at least one entry. */ Length = Table->Length; AcpiOsUnmapMemory (Table, sizeof (ACPI_TABLE_HEADER)); if (Length < (sizeof (ACPI_TABLE_HEADER) + TableEntrySize)) { ACPI_BIOS_ERROR ((AE_INFO, "Invalid table length 0x%X in RSDT/XSDT", Length)); return_ACPI_STATUS (AE_INVALID_TABLE_LENGTH); } Table = AcpiOsMapMemory (Address, Length); if (!Table) { return_ACPI_STATUS (AE_NO_MEMORY); } /* Validate the root table checksum */ Status = AcpiTbVerifyChecksum (Table, Length); if (ACPI_FAILURE (Status)) { AcpiOsUnmapMemory (Table, Length); return_ACPI_STATUS (Status); } /* Get the number of entries and pointer to first entry */ TableCount = (UINT32) ((Table->Length - sizeof (ACPI_TABLE_HEADER)) / TableEntrySize); TableEntry = ACPI_ADD_PTR (UINT8, Table, sizeof (ACPI_TABLE_HEADER)); /* * First two entries in the table array are reserved for the DSDT * and FACS, which are not actually present in the RSDT/XSDT - they * come from the FADT */ AcpiGbl_RootTableList.CurrentTableCount = 2; /* Initialize the root table array from the RSDT/XSDT */ for (i = 0; i < TableCount; i++) { /* Get the table physical address (32-bit for RSDT, 64-bit for XSDT) */ Status = AcpiTbInstallStandardTable ( AcpiTbGetRootTableEntry (TableEntry, TableEntrySize), ACPI_TABLE_ORIGIN_INTERNAL_PHYSICAL, FALSE, TRUE, &TableIndex); if (ACPI_SUCCESS (Status) && ACPI_COMPARE_NAME (&AcpiGbl_RootTableList.Tables[TableIndex].Signature, ACPI_SIG_FADT)) { AcpiTbParseFadt (TableIndex); } TableEntry += TableEntrySize; } /* * It is not possible to map more than one entry in some environments, * so unmap the root table here before mapping other tables */ AcpiOsUnmapMemory (Table, Length); return_ACPI_STATUS (AE_OK); } src/acpica/source/components/tables/tbxface.c000066400000000000000000000455021231470457100216160ustar00rootroot00000000000000/****************************************************************************** * * Module Name: tbxface - ACPI table-oriented external interfaces * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #define __TBXFACE_C__ #define EXPORT_ACPI_INTERFACES #include "acpi.h" #include "accommon.h" #include "actables.h" #define _COMPONENT ACPI_TABLES ACPI_MODULE_NAME ("tbxface") /******************************************************************************* * * FUNCTION: AcpiAllocateRootTable * * PARAMETERS: InitialTableCount - Size of InitialTableArray, in number of * ACPI_TABLE_DESC structures * * RETURN: Status * * DESCRIPTION: Allocate a root table array. Used by iASL compiler and * AcpiInitializeTables. * ******************************************************************************/ ACPI_STATUS AcpiAllocateRootTable ( UINT32 InitialTableCount) { AcpiGbl_RootTableList.MaxTableCount = InitialTableCount; AcpiGbl_RootTableList.Flags = ACPI_ROOT_ALLOW_RESIZE; return (AcpiTbResizeRootTableList ()); } /******************************************************************************* * * FUNCTION: AcpiInitializeTables * * PARAMETERS: InitialTableArray - Pointer to an array of pre-allocated * ACPI_TABLE_DESC structures. If NULL, the * array is dynamically allocated. * InitialTableCount - Size of InitialTableArray, in number of * ACPI_TABLE_DESC structures * AllowResize - Flag to tell Table Manager if resize of * pre-allocated array is allowed. Ignored * if InitialTableArray is NULL. * * RETURN: Status * * DESCRIPTION: Initialize the table manager, get the RSDP and RSDT/XSDT. * * NOTE: Allows static allocation of the initial table array in order * to avoid the use of dynamic memory in confined environments * such as the kernel boot sequence where it may not be available. * * If the host OS memory managers are initialized, use NULL for * InitialTableArray, and the table will be dynamically allocated. * ******************************************************************************/ ACPI_STATUS AcpiInitializeTables ( ACPI_TABLE_DESC *InitialTableArray, UINT32 InitialTableCount, BOOLEAN AllowResize) { ACPI_PHYSICAL_ADDRESS RsdpAddress; ACPI_STATUS Status; ACPI_FUNCTION_TRACE (AcpiInitializeTables); /* * Setup the Root Table Array and allocate the table array * if requested */ if (!InitialTableArray) { Status = AcpiAllocateRootTable (InitialTableCount); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } } else { /* Root Table Array has been statically allocated by the host */ ACPI_MEMSET (InitialTableArray, 0, (ACPI_SIZE) InitialTableCount * sizeof (ACPI_TABLE_DESC)); AcpiGbl_RootTableList.Tables = InitialTableArray; AcpiGbl_RootTableList.MaxTableCount = InitialTableCount; AcpiGbl_RootTableList.Flags = ACPI_ROOT_ORIGIN_UNKNOWN; if (AllowResize) { AcpiGbl_RootTableList.Flags |= ACPI_ROOT_ALLOW_RESIZE; } } /* Get the address of the RSDP */ RsdpAddress = AcpiOsGetRootPointer (); if (!RsdpAddress) { return_ACPI_STATUS (AE_NOT_FOUND); } /* * Get the root table (RSDT or XSDT) and extract all entries to the local * Root Table Array. This array contains the information of the RSDT/XSDT * in a common, more useable format. */ Status = AcpiTbParseRootTable (RsdpAddress); return_ACPI_STATUS (Status); } ACPI_EXPORT_SYMBOL_INIT (AcpiInitializeTables) /******************************************************************************* * * FUNCTION: AcpiReallocateRootTable * * PARAMETERS: None * * RETURN: Status * * DESCRIPTION: Reallocate Root Table List into dynamic memory. Copies the * root list from the previously provided scratch area. Should * be called once dynamic memory allocation is available in the * kernel. * ******************************************************************************/ ACPI_STATUS AcpiReallocateRootTable ( void) { ACPI_STATUS Status; ACPI_FUNCTION_TRACE (AcpiReallocateRootTable); /* * Only reallocate the root table if the host provided a static buffer * for the table array in the call to AcpiInitializeTables. */ if (AcpiGbl_RootTableList.Flags & ACPI_ROOT_ORIGIN_ALLOCATED) { return_ACPI_STATUS (AE_SUPPORT); } AcpiGbl_RootTableList.Flags |= ACPI_ROOT_ALLOW_RESIZE; Status = AcpiTbResizeRootTableList (); return_ACPI_STATUS (Status); } ACPI_EXPORT_SYMBOL_INIT (AcpiReallocateRootTable) /******************************************************************************* * * FUNCTION: AcpiGetTableHeader * * PARAMETERS: Signature - ACPI signature of needed table * Instance - Which instance (for SSDTs) * OutTableHeader - The pointer to the table header to fill * * RETURN: Status and pointer to mapped table header * * DESCRIPTION: Finds an ACPI table header. * * NOTE: Caller is responsible in unmapping the header with * AcpiOsUnmapMemory * ******************************************************************************/ ACPI_STATUS AcpiGetTableHeader ( char *Signature, UINT32 Instance, ACPI_TABLE_HEADER *OutTableHeader) { UINT32 i; UINT32 j; ACPI_TABLE_HEADER *Header; /* Parameter validation */ if (!Signature || !OutTableHeader) { return (AE_BAD_PARAMETER); } /* Walk the root table list */ for (i = 0, j = 0; i < AcpiGbl_RootTableList.CurrentTableCount; i++) { if (!ACPI_COMPARE_NAME (&(AcpiGbl_RootTableList.Tables[i].Signature), Signature)) { continue; } if (++j < Instance) { continue; } if (!AcpiGbl_RootTableList.Tables[i].Pointer) { if ((AcpiGbl_RootTableList.Tables[i].Flags & ACPI_TABLE_ORIGIN_MASK) == ACPI_TABLE_ORIGIN_INTERNAL_PHYSICAL) { Header = AcpiOsMapMemory ( AcpiGbl_RootTableList.Tables[i].Address, sizeof (ACPI_TABLE_HEADER)); if (!Header) { return (AE_NO_MEMORY); } ACPI_MEMCPY (OutTableHeader, Header, sizeof (ACPI_TABLE_HEADER)); AcpiOsUnmapMemory (Header, sizeof (ACPI_TABLE_HEADER)); } else { return (AE_NOT_FOUND); } } else { ACPI_MEMCPY (OutTableHeader, AcpiGbl_RootTableList.Tables[i].Pointer, sizeof (ACPI_TABLE_HEADER)); } return (AE_OK); } return (AE_NOT_FOUND); } ACPI_EXPORT_SYMBOL (AcpiGetTableHeader) /******************************************************************************* * * FUNCTION: AcpiGetTable * * PARAMETERS: Signature - ACPI signature of needed table * Instance - Which instance (for SSDTs) * OutTable - Where the pointer to the table is returned * * RETURN: Status and pointer to the requested table * * DESCRIPTION: Finds and verifies an ACPI table. Table must be in the * RSDT/XSDT. * ******************************************************************************/ ACPI_STATUS AcpiGetTable ( char *Signature, UINT32 Instance, ACPI_TABLE_HEADER **OutTable) { UINT32 i; UINT32 j; ACPI_STATUS Status; /* Parameter validation */ if (!Signature || !OutTable) { return (AE_BAD_PARAMETER); } /* Walk the root table list */ for (i = 0, j = 0; i < AcpiGbl_RootTableList.CurrentTableCount; i++) { if (!ACPI_COMPARE_NAME (&(AcpiGbl_RootTableList.Tables[i].Signature), Signature)) { continue; } if (++j < Instance) { continue; } Status = AcpiTbValidateTable (&AcpiGbl_RootTableList.Tables[i]); if (ACPI_SUCCESS (Status)) { *OutTable = AcpiGbl_RootTableList.Tables[i].Pointer; } return (Status); } return (AE_NOT_FOUND); } ACPI_EXPORT_SYMBOL (AcpiGetTable) /******************************************************************************* * * FUNCTION: AcpiGetTableByIndex * * PARAMETERS: TableIndex - Table index * Table - Where the pointer to the table is returned * * RETURN: Status and pointer to the requested table * * DESCRIPTION: Obtain a table by an index into the global table list. Used * internally also. * ******************************************************************************/ ACPI_STATUS AcpiGetTableByIndex ( UINT32 TableIndex, ACPI_TABLE_HEADER **Table) { ACPI_STATUS Status; ACPI_FUNCTION_TRACE (AcpiGetTableByIndex); /* Parameter validation */ if (!Table) { return_ACPI_STATUS (AE_BAD_PARAMETER); } (void) AcpiUtAcquireMutex (ACPI_MTX_TABLES); /* Validate index */ if (TableIndex >= AcpiGbl_RootTableList.CurrentTableCount) { (void) AcpiUtReleaseMutex (ACPI_MTX_TABLES); return_ACPI_STATUS (AE_BAD_PARAMETER); } if (!AcpiGbl_RootTableList.Tables[TableIndex].Pointer) { /* Table is not mapped, map it */ Status = AcpiTbValidateTable (&AcpiGbl_RootTableList.Tables[TableIndex]); if (ACPI_FAILURE (Status)) { (void) AcpiUtReleaseMutex (ACPI_MTX_TABLES); return_ACPI_STATUS (Status); } } *Table = AcpiGbl_RootTableList.Tables[TableIndex].Pointer; (void) AcpiUtReleaseMutex (ACPI_MTX_TABLES); return_ACPI_STATUS (AE_OK); } ACPI_EXPORT_SYMBOL (AcpiGetTableByIndex) /******************************************************************************* * * FUNCTION: AcpiInstallTableHandler * * PARAMETERS: Handler - Table event handler * Context - Value passed to the handler on each event * * RETURN: Status * * DESCRIPTION: Install a global table event handler. * ******************************************************************************/ ACPI_STATUS AcpiInstallTableHandler ( ACPI_TABLE_HANDLER Handler, void *Context) { ACPI_STATUS Status; ACPI_FUNCTION_TRACE (AcpiInstallTableHandler); if (!Handler) { return_ACPI_STATUS (AE_BAD_PARAMETER); } Status = AcpiUtAcquireMutex (ACPI_MTX_EVENTS); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } /* Don't allow more than one handler */ if (AcpiGbl_TableHandler) { Status = AE_ALREADY_EXISTS; goto Cleanup; } /* Install the handler */ AcpiGbl_TableHandler = Handler; AcpiGbl_TableHandlerContext = Context; Cleanup: (void) AcpiUtReleaseMutex (ACPI_MTX_EVENTS); return_ACPI_STATUS (Status); } ACPI_EXPORT_SYMBOL (AcpiInstallTableHandler) /******************************************************************************* * * FUNCTION: AcpiRemoveTableHandler * * PARAMETERS: Handler - Table event handler that was installed * previously. * * RETURN: Status * * DESCRIPTION: Remove a table event handler * ******************************************************************************/ ACPI_STATUS AcpiRemoveTableHandler ( ACPI_TABLE_HANDLER Handler) { ACPI_STATUS Status; ACPI_FUNCTION_TRACE (AcpiRemoveTableHandler); Status = AcpiUtAcquireMutex (ACPI_MTX_EVENTS); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } /* Make sure that the installed handler is the same */ if (!Handler || Handler != AcpiGbl_TableHandler) { Status = AE_BAD_PARAMETER; goto Cleanup; } /* Remove the handler */ AcpiGbl_TableHandler = NULL; Cleanup: (void) AcpiUtReleaseMutex (ACPI_MTX_EVENTS); return_ACPI_STATUS (Status); } ACPI_EXPORT_SYMBOL (AcpiRemoveTableHandler) src/acpica/source/components/tables/tbxfload.c000066400000000000000000000427311231470457100220060ustar00rootroot00000000000000/****************************************************************************** * * Module Name: tbxfload - Table load/unload external interfaces * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #define __TBXFLOAD_C__ #define EXPORT_ACPI_INTERFACES #include "acpi.h" #include "accommon.h" #include "acnamesp.h" #include "actables.h" #define _COMPONENT ACPI_TABLES ACPI_MODULE_NAME ("tbxfload") /* Local prototypes */ static ACPI_STATUS AcpiTbLoadNamespace ( void); /******************************************************************************* * * FUNCTION: AcpiLoadTables * * PARAMETERS: None * * RETURN: Status * * DESCRIPTION: Load the ACPI tables from the RSDT/XSDT * ******************************************************************************/ ACPI_STATUS AcpiLoadTables ( void) { ACPI_STATUS Status; ACPI_FUNCTION_TRACE (AcpiLoadTables); /* Load the namespace from the tables */ Status = AcpiTbLoadNamespace (); if (ACPI_FAILURE (Status)) { ACPI_EXCEPTION ((AE_INFO, Status, "While loading namespace from ACPI tables")); } return_ACPI_STATUS (Status); } ACPI_EXPORT_SYMBOL_INIT (AcpiLoadTables) /******************************************************************************* * * FUNCTION: AcpiTbLoadNamespace * * PARAMETERS: None * * RETURN: Status * * DESCRIPTION: Load the namespace from the DSDT and all SSDTs/PSDTs found in * the RSDT/XSDT. * ******************************************************************************/ static ACPI_STATUS AcpiTbLoadNamespace ( void) { ACPI_STATUS Status; UINT32 i; ACPI_TABLE_HEADER *NewDsdt; ACPI_FUNCTION_TRACE (TbLoadNamespace); (void) AcpiUtAcquireMutex (ACPI_MTX_TABLES); /* * Load the namespace. The DSDT is required, but any SSDT and * PSDT tables are optional. Verify the DSDT. */ if (!AcpiGbl_RootTableList.CurrentTableCount || !ACPI_COMPARE_NAME ( &(AcpiGbl_RootTableList.Tables[ACPI_TABLE_INDEX_DSDT].Signature), ACPI_SIG_DSDT) || ACPI_FAILURE (AcpiTbValidateTable ( &AcpiGbl_RootTableList.Tables[ACPI_TABLE_INDEX_DSDT]))) { Status = AE_NO_ACPI_TABLES; goto UnlockAndExit; } /* * Save the DSDT pointer for simple access. This is the mapped memory * address. We must take care here because the address of the .Tables * array can change dynamically as tables are loaded at run-time. Note: * .Pointer field is not validated until after call to AcpiTbValidateTable. */ AcpiGbl_DSDT = AcpiGbl_RootTableList.Tables[ACPI_TABLE_INDEX_DSDT].Pointer; /* * Optionally copy the entire DSDT to local memory (instead of simply * mapping it.) There are some BIOSs that corrupt or replace the original * DSDT, creating the need for this option. Default is FALSE, do not copy * the DSDT. */ if (AcpiGbl_CopyDsdtLocally) { NewDsdt = AcpiTbCopyDsdt (ACPI_TABLE_INDEX_DSDT); if (NewDsdt) { AcpiGbl_DSDT = NewDsdt; } } /* * Save the original DSDT header for detection of table corruption * and/or replacement of the DSDT from outside the OS. */ ACPI_MEMCPY (&AcpiGbl_OriginalDsdtHeader, AcpiGbl_DSDT, sizeof (ACPI_TABLE_HEADER)); (void) AcpiUtReleaseMutex (ACPI_MTX_TABLES); /* Load and parse tables */ Status = AcpiNsLoadTable (ACPI_TABLE_INDEX_DSDT, AcpiGbl_RootNode); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } /* Load any SSDT or PSDT tables. Note: Loop leaves tables locked */ (void) AcpiUtAcquireMutex (ACPI_MTX_TABLES); for (i = 0; i < AcpiGbl_RootTableList.CurrentTableCount; ++i) { if ((!ACPI_COMPARE_NAME (&(AcpiGbl_RootTableList.Tables[i].Signature), ACPI_SIG_SSDT) && !ACPI_COMPARE_NAME (&(AcpiGbl_RootTableList.Tables[i].Signature), ACPI_SIG_PSDT)) || ACPI_FAILURE (AcpiTbValidateTable ( &AcpiGbl_RootTableList.Tables[i]))) { continue; } /* Ignore errors while loading tables, get as many as possible */ (void) AcpiUtReleaseMutex (ACPI_MTX_TABLES); (void) AcpiNsLoadTable (i, AcpiGbl_RootNode); (void) AcpiUtAcquireMutex (ACPI_MTX_TABLES); } ACPI_INFO ((AE_INFO, "All ACPI Tables successfully acquired")); UnlockAndExit: (void) AcpiUtReleaseMutex (ACPI_MTX_TABLES); return_ACPI_STATUS (Status); } /******************************************************************************* * * FUNCTION: AcpiInstallTable * * PARAMETERS: Address - Address of the ACPI table to be installed. * Physical - Whether the address is a physical table * address or not * * RETURN: Status * * DESCRIPTION: Dynamically install an ACPI table. * Note: This function should only be invoked after * AcpiInitializeTables() and before AcpiLoadTables(). * ******************************************************************************/ ACPI_STATUS AcpiInstallTable ( ACPI_PHYSICAL_ADDRESS Address, BOOLEAN Physical) { ACPI_STATUS Status; UINT8 Flags; UINT32 TableIndex; ACPI_FUNCTION_TRACE (AcpiInstallTable); if (Physical) { Flags = ACPI_TABLE_ORIGIN_EXTERNAL_VIRTUAL; } else { Flags = ACPI_TABLE_ORIGIN_INTERNAL_PHYSICAL; } Status = AcpiTbInstallStandardTable (Address, Flags, FALSE, FALSE, &TableIndex); return_ACPI_STATUS (Status); } ACPI_EXPORT_SYMBOL_INIT (AcpiInstallTable) /******************************************************************************* * * FUNCTION: AcpiLoadTable * * PARAMETERS: Table - Pointer to a buffer containing the ACPI * table to be loaded. * * RETURN: Status * * DESCRIPTION: Dynamically load an ACPI table from the caller's buffer. Must * be a valid ACPI table with a valid ACPI table header. * Note1: Mainly intended to support hotplug addition of SSDTs. * Note2: Does not copy the incoming table. User is responsible * to ensure that the table is not deleted or unmapped. * ******************************************************************************/ ACPI_STATUS AcpiLoadTable ( ACPI_TABLE_HEADER *Table) { ACPI_STATUS Status; UINT32 TableIndex; ACPI_FUNCTION_TRACE (AcpiLoadTable); /* Parameter validation */ if (!Table) { return_ACPI_STATUS (AE_BAD_PARAMETER); } /* Must acquire the interpreter lock during this operation */ Status = AcpiUtAcquireMutex (ACPI_MTX_INTERPRETER); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } /* Install the table and load it into the namespace */ ACPI_INFO ((AE_INFO, "Host-directed Dynamic ACPI Table Load:")); (void) AcpiUtAcquireMutex (ACPI_MTX_TABLES); Status = AcpiTbInstallStandardTable (ACPI_PTR_TO_PHYSADDR (Table), ACPI_TABLE_ORIGIN_EXTERNAL_VIRTUAL, TRUE, FALSE, &TableIndex); (void) AcpiUtReleaseMutex (ACPI_MTX_TABLES); if (ACPI_FAILURE (Status)) { goto UnlockAndExit; } /* * Note: Now table is "INSTALLED", it must be validated before * using. */ Status = AcpiTbValidateTable (&AcpiGbl_RootTableList.Tables[TableIndex]); if (ACPI_FAILURE (Status)) { goto UnlockAndExit; } Status = AcpiNsLoadTable (TableIndex, AcpiGbl_RootNode); /* Invoke table handler if present */ if (AcpiGbl_TableHandler) { (void) AcpiGbl_TableHandler (ACPI_TABLE_EVENT_LOAD, Table, AcpiGbl_TableHandlerContext); } UnlockAndExit: (void) AcpiUtReleaseMutex (ACPI_MTX_INTERPRETER); return_ACPI_STATUS (Status); } ACPI_EXPORT_SYMBOL (AcpiLoadTable) /******************************************************************************* * * FUNCTION: AcpiUnloadParentTable * * PARAMETERS: Object - Handle to any namespace object owned by * the table to be unloaded * * RETURN: Status * * DESCRIPTION: Via any namespace object within an SSDT or OEMx table, unloads * the table and deletes all namespace objects associated with * that table. Unloading of the DSDT is not allowed. * Note: Mainly intended to support hotplug removal of SSDTs. * ******************************************************************************/ ACPI_STATUS AcpiUnloadParentTable ( ACPI_HANDLE Object) { ACPI_NAMESPACE_NODE *Node = ACPI_CAST_PTR (ACPI_NAMESPACE_NODE, Object); ACPI_STATUS Status = AE_NOT_EXIST; ACPI_OWNER_ID OwnerId; UINT32 i; ACPI_FUNCTION_TRACE (AcpiUnloadParentTable); /* Parameter validation */ if (!Object) { return_ACPI_STATUS (AE_BAD_PARAMETER); } /* * The node OwnerId is currently the same as the parent table ID. * However, this could change in the future. */ OwnerId = Node->OwnerId; if (!OwnerId) { /* OwnerId==0 means DSDT is the owner. DSDT cannot be unloaded */ return_ACPI_STATUS (AE_TYPE); } /* Must acquire the interpreter lock during this operation */ Status = AcpiUtAcquireMutex (ACPI_MTX_INTERPRETER); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } /* Find the table in the global table list */ for (i = 0; i < AcpiGbl_RootTableList.CurrentTableCount; i++) { if (OwnerId != AcpiGbl_RootTableList.Tables[i].OwnerId) { continue; } /* * Allow unload of SSDT and OEMx tables only. Do not allow unload * of the DSDT. No other types of tables should get here, since * only these types can contain AML and thus are the only types * that can create namespace objects. */ if (ACPI_COMPARE_NAME ( AcpiGbl_RootTableList.Tables[i].Signature.Ascii, ACPI_SIG_DSDT)) { Status = AE_TYPE; break; } /* Ensure the table is actually loaded */ if (!AcpiTbIsTableLoaded (i)) { Status = AE_NOT_EXIST; break; } /* Invoke table handler if present */ if (AcpiGbl_TableHandler) { (void) AcpiGbl_TableHandler (ACPI_TABLE_EVENT_UNLOAD, AcpiGbl_RootTableList.Tables[i].Pointer, AcpiGbl_TableHandlerContext); } /* * Delete all namespace objects owned by this table. Note that * these objects can appear anywhere in the namespace by virtue * of the AML "Scope" operator. Thus, we need to track ownership * by an ID, not simply a position within the hierarchy. */ Status = AcpiTbDeleteNamespaceByOwner (i); if (ACPI_FAILURE (Status)) { break; } Status = AcpiTbReleaseOwnerId (i); AcpiTbSetTableLoadedFlag (i, FALSE); break; } (void) AcpiUtReleaseMutex (ACPI_MTX_INTERPRETER); return_ACPI_STATUS (Status); } ACPI_EXPORT_SYMBOL (AcpiUnloadParentTable) src/acpica/source/components/tables/tbxfroot.c000066400000000000000000000314371231470457100220530ustar00rootroot00000000000000/****************************************************************************** * * Module Name: tbxfroot - Find the root ACPI table (RSDT) * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #define __TBXFROOT_C__ #include "acpi.h" #include "accommon.h" #include "actables.h" #define _COMPONENT ACPI_TABLES ACPI_MODULE_NAME ("tbxfroot") /******************************************************************************* * * FUNCTION: AcpiTbValidateRsdp * * PARAMETERS: Rsdp - Pointer to unvalidated RSDP * * RETURN: Status * * DESCRIPTION: Validate the RSDP (ptr) * ******************************************************************************/ ACPI_STATUS AcpiTbValidateRsdp ( ACPI_TABLE_RSDP *Rsdp) { /* * The signature and checksum must both be correct * * Note: Sometimes there exists more than one RSDP in memory; the valid * RSDP has a valid checksum, all others have an invalid checksum. */ if (!ACPI_VALIDATE_RSDP_SIG (Rsdp->Signature)) { /* Nope, BAD Signature */ return (AE_BAD_SIGNATURE); } /* Check the standard checksum */ if (AcpiTbChecksum ((UINT8 *) Rsdp, ACPI_RSDP_CHECKSUM_LENGTH) != 0) { return (AE_BAD_CHECKSUM); } /* Check extended checksum if table version >= 2 */ if ((Rsdp->Revision >= 2) && (AcpiTbChecksum ((UINT8 *) Rsdp, ACPI_RSDP_XCHECKSUM_LENGTH) != 0)) { return (AE_BAD_CHECKSUM); } return (AE_OK); } /******************************************************************************* * * FUNCTION: AcpiFindRootPointer * * PARAMETERS: TableAddress - Where the table pointer is returned * * RETURN: Status, RSDP physical address * * DESCRIPTION: Search lower 1Mbyte of memory for the root system descriptor * pointer structure. If it is found, set *RSDP to point to it. * * NOTE1: The RSDP must be either in the first 1K of the Extended * BIOS Data Area or between E0000 and FFFFF (From ACPI Spec.) * Only a 32-bit physical address is necessary. * * NOTE2: This function is always available, regardless of the * initialization state of the rest of ACPI. * ******************************************************************************/ ACPI_STATUS AcpiFindRootPointer ( ACPI_SIZE *TableAddress) { UINT8 *TablePtr; UINT8 *MemRover; UINT32 PhysicalAddress; ACPI_FUNCTION_TRACE (AcpiFindRootPointer); /* 1a) Get the location of the Extended BIOS Data Area (EBDA) */ TablePtr = AcpiOsMapMemory ( (ACPI_PHYSICAL_ADDRESS) ACPI_EBDA_PTR_LOCATION, ACPI_EBDA_PTR_LENGTH); if (!TablePtr) { ACPI_ERROR ((AE_INFO, "Could not map memory at 0x%8.8X for length %u", ACPI_EBDA_PTR_LOCATION, ACPI_EBDA_PTR_LENGTH)); return_ACPI_STATUS (AE_NO_MEMORY); } ACPI_MOVE_16_TO_32 (&PhysicalAddress, TablePtr); /* Convert segment part to physical address */ PhysicalAddress <<= 4; AcpiOsUnmapMemory (TablePtr, ACPI_EBDA_PTR_LENGTH); /* EBDA present? */ if (PhysicalAddress > 0x400) { /* * 1b) Search EBDA paragraphs (EBDA is required to be a * minimum of 1K length) */ TablePtr = AcpiOsMapMemory ( (ACPI_PHYSICAL_ADDRESS) PhysicalAddress, ACPI_EBDA_WINDOW_SIZE); if (!TablePtr) { ACPI_ERROR ((AE_INFO, "Could not map memory at 0x%8.8X for length %u", PhysicalAddress, ACPI_EBDA_WINDOW_SIZE)); return_ACPI_STATUS (AE_NO_MEMORY); } MemRover = AcpiTbScanMemoryForRsdp (TablePtr, ACPI_EBDA_WINDOW_SIZE); AcpiOsUnmapMemory (TablePtr, ACPI_EBDA_WINDOW_SIZE); if (MemRover) { /* Return the physical address */ PhysicalAddress += (UINT32) ACPI_PTR_DIFF (MemRover, TablePtr); *TableAddress = PhysicalAddress; return_ACPI_STATUS (AE_OK); } } /* * 2) Search upper memory: 16-byte boundaries in E0000h-FFFFFh */ TablePtr = AcpiOsMapMemory ( (ACPI_PHYSICAL_ADDRESS) ACPI_HI_RSDP_WINDOW_BASE, ACPI_HI_RSDP_WINDOW_SIZE); if (!TablePtr) { ACPI_ERROR ((AE_INFO, "Could not map memory at 0x%8.8X for length %u", ACPI_HI_RSDP_WINDOW_BASE, ACPI_HI_RSDP_WINDOW_SIZE)); return_ACPI_STATUS (AE_NO_MEMORY); } MemRover = AcpiTbScanMemoryForRsdp (TablePtr, ACPI_HI_RSDP_WINDOW_SIZE); AcpiOsUnmapMemory (TablePtr, ACPI_HI_RSDP_WINDOW_SIZE); if (MemRover) { /* Return the physical address */ PhysicalAddress = (UINT32) (ACPI_HI_RSDP_WINDOW_BASE + ACPI_PTR_DIFF (MemRover, TablePtr)); *TableAddress = PhysicalAddress; return_ACPI_STATUS (AE_OK); } /* A valid RSDP was not found */ ACPI_BIOS_ERROR ((AE_INFO, "A valid RSDP was not found")); return_ACPI_STATUS (AE_NOT_FOUND); } ACPI_EXPORT_SYMBOL (AcpiFindRootPointer) /******************************************************************************* * * FUNCTION: AcpiTbScanMemoryForRsdp * * PARAMETERS: StartAddress - Starting pointer for search * Length - Maximum length to search * * RETURN: Pointer to the RSDP if found, otherwise NULL. * * DESCRIPTION: Search a block of memory for the RSDP signature * ******************************************************************************/ UINT8 * AcpiTbScanMemoryForRsdp ( UINT8 *StartAddress, UINT32 Length) { ACPI_STATUS Status; UINT8 *MemRover; UINT8 *EndAddress; ACPI_FUNCTION_TRACE (TbScanMemoryForRsdp); EndAddress = StartAddress + Length; /* Search from given start address for the requested length */ for (MemRover = StartAddress; MemRover < EndAddress; MemRover += ACPI_RSDP_SCAN_STEP) { /* The RSDP signature and checksum must both be correct */ Status = AcpiTbValidateRsdp (ACPI_CAST_PTR (ACPI_TABLE_RSDP, MemRover)); if (ACPI_SUCCESS (Status)) { /* Sig and checksum valid, we have found a real RSDP */ ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "RSDP located at physical address %p\n", MemRover)); return_PTR (MemRover); } /* No sig match or bad checksum, keep searching */ } /* Searched entire block, no RSDP was found */ ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Searched entire block from %p, valid RSDP was not found\n", StartAddress)); return_PTR (NULL); } src/acpica/source/components/utilities/000077500000000000000000000000001231470457100205715ustar00rootroot00000000000000src/acpica/source/components/utilities/utaddress.c000066400000000000000000000344051231470457100227410ustar00rootroot00000000000000/****************************************************************************** * * Module Name: utaddress - OpRegion address range check * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #define __UTADDRESS_C__ #include "acpi.h" #include "accommon.h" #include "acnamesp.h" #define _COMPONENT ACPI_UTILITIES ACPI_MODULE_NAME ("utaddress") /******************************************************************************* * * FUNCTION: AcpiUtAddAddressRange * * PARAMETERS: SpaceId - Address space ID * Address - OpRegion start address * Length - OpRegion length * RegionNode - OpRegion namespace node * * RETURN: Status * * DESCRIPTION: Add the Operation Region address range to the global list. * The only supported Space IDs are Memory and I/O. Called when * the OpRegion address/length operands are fully evaluated. * * MUTEX: Locks the namespace * * NOTE: Because this interface is only called when an OpRegion argument * list is evaluated, there cannot be any duplicate RegionNodes. * Duplicate Address/Length values are allowed, however, so that multiple * address conflicts can be detected. * ******************************************************************************/ ACPI_STATUS AcpiUtAddAddressRange ( ACPI_ADR_SPACE_TYPE SpaceId, ACPI_PHYSICAL_ADDRESS Address, UINT32 Length, ACPI_NAMESPACE_NODE *RegionNode) { ACPI_ADDRESS_RANGE *RangeInfo; ACPI_STATUS Status; ACPI_FUNCTION_TRACE (UtAddAddressRange); if ((SpaceId != ACPI_ADR_SPACE_SYSTEM_MEMORY) && (SpaceId != ACPI_ADR_SPACE_SYSTEM_IO)) { return_ACPI_STATUS (AE_OK); } /* Allocate/init a new info block, add it to the appropriate list */ RangeInfo = ACPI_ALLOCATE (sizeof (ACPI_ADDRESS_RANGE)); if (!RangeInfo) { return_ACPI_STATUS (AE_NO_MEMORY); } RangeInfo->StartAddress = Address; RangeInfo->EndAddress = (Address + Length - 1); RangeInfo->RegionNode = RegionNode; Status = AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); if (ACPI_FAILURE (Status)) { ACPI_FREE (RangeInfo); return_ACPI_STATUS (Status); } RangeInfo->Next = AcpiGbl_AddressRangeList[SpaceId]; AcpiGbl_AddressRangeList[SpaceId] = RangeInfo; ACPI_DEBUG_PRINT ((ACPI_DB_NAMES, "\nAdded [%4.4s] address range: 0x%p-0x%p\n", AcpiUtGetNodeName (RangeInfo->RegionNode), ACPI_CAST_PTR (void, Address), ACPI_CAST_PTR (void, RangeInfo->EndAddress))); (void) AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); return_ACPI_STATUS (AE_OK); } /******************************************************************************* * * FUNCTION: AcpiUtRemoveAddressRange * * PARAMETERS: SpaceId - Address space ID * RegionNode - OpRegion namespace node * * RETURN: None * * DESCRIPTION: Remove the Operation Region from the global list. The only * supported Space IDs are Memory and I/O. Called when an * OpRegion is deleted. * * MUTEX: Assumes the namespace is locked * ******************************************************************************/ void AcpiUtRemoveAddressRange ( ACPI_ADR_SPACE_TYPE SpaceId, ACPI_NAMESPACE_NODE *RegionNode) { ACPI_ADDRESS_RANGE *RangeInfo; ACPI_ADDRESS_RANGE *Prev; ACPI_FUNCTION_TRACE (UtRemoveAddressRange); if ((SpaceId != ACPI_ADR_SPACE_SYSTEM_MEMORY) && (SpaceId != ACPI_ADR_SPACE_SYSTEM_IO)) { return_VOID; } /* Get the appropriate list head and check the list */ RangeInfo = Prev = AcpiGbl_AddressRangeList[SpaceId]; while (RangeInfo) { if (RangeInfo->RegionNode == RegionNode) { if (RangeInfo == Prev) /* Found at list head */ { AcpiGbl_AddressRangeList[SpaceId] = RangeInfo->Next; } else { Prev->Next = RangeInfo->Next; } ACPI_DEBUG_PRINT ((ACPI_DB_NAMES, "\nRemoved [%4.4s] address range: 0x%p-0x%p\n", AcpiUtGetNodeName (RangeInfo->RegionNode), ACPI_CAST_PTR (void, RangeInfo->StartAddress), ACPI_CAST_PTR (void, RangeInfo->EndAddress))); ACPI_FREE (RangeInfo); return_VOID; } Prev = RangeInfo; RangeInfo = RangeInfo->Next; } return_VOID; } /******************************************************************************* * * FUNCTION: AcpiUtCheckAddressRange * * PARAMETERS: SpaceId - Address space ID * Address - Start address * Length - Length of address range * Warn - TRUE if warning on overlap desired * * RETURN: Count of the number of conflicts detected. Zero is always * returned for Space IDs other than Memory or I/O. * * DESCRIPTION: Check if the input address range overlaps any of the * ASL operation region address ranges. The only supported * Space IDs are Memory and I/O. * * MUTEX: Assumes the namespace is locked. * ******************************************************************************/ UINT32 AcpiUtCheckAddressRange ( ACPI_ADR_SPACE_TYPE SpaceId, ACPI_PHYSICAL_ADDRESS Address, UINT32 Length, BOOLEAN Warn) { ACPI_ADDRESS_RANGE *RangeInfo; ACPI_PHYSICAL_ADDRESS EndAddress; char *Pathname; UINT32 OverlapCount = 0; ACPI_FUNCTION_TRACE (UtCheckAddressRange); if ((SpaceId != ACPI_ADR_SPACE_SYSTEM_MEMORY) && (SpaceId != ACPI_ADR_SPACE_SYSTEM_IO)) { return_UINT32 (0); } RangeInfo = AcpiGbl_AddressRangeList[SpaceId]; EndAddress = Address + Length - 1; /* Check entire list for all possible conflicts */ while (RangeInfo) { /* * Check if the requested address/length overlaps this * address range. There are four cases to consider: * * 1) Input address/length is contained completely in the * address range * 2) Input address/length overlaps range at the range start * 3) Input address/length overlaps range at the range end * 4) Input address/length completely encompasses the range */ if ((Address <= RangeInfo->EndAddress) && (EndAddress >= RangeInfo->StartAddress)) { /* Found an address range overlap */ OverlapCount++; if (Warn) /* Optional warning message */ { Pathname = AcpiNsGetExternalPathname (RangeInfo->RegionNode); ACPI_WARNING ((AE_INFO, "%s range 0x%p-0x%p conflicts with OpRegion 0x%p-0x%p (%s)", AcpiUtGetRegionName (SpaceId), ACPI_CAST_PTR (void, Address), ACPI_CAST_PTR (void, EndAddress), ACPI_CAST_PTR (void, RangeInfo->StartAddress), ACPI_CAST_PTR (void, RangeInfo->EndAddress), Pathname)); ACPI_FREE (Pathname); } } RangeInfo = RangeInfo->Next; } return_UINT32 (OverlapCount); } /******************************************************************************* * * FUNCTION: AcpiUtDeleteAddressLists * * PARAMETERS: None * * RETURN: None * * DESCRIPTION: Delete all global address range lists (called during * subsystem shutdown). * ******************************************************************************/ void AcpiUtDeleteAddressLists ( void) { ACPI_ADDRESS_RANGE *Next; ACPI_ADDRESS_RANGE *RangeInfo; int i; /* Delete all elements in all address range lists */ for (i = 0; i < ACPI_ADDRESS_RANGE_MAX; i++) { Next = AcpiGbl_AddressRangeList[i]; while (Next) { RangeInfo = Next; Next = RangeInfo->Next; ACPI_FREE (RangeInfo); } AcpiGbl_AddressRangeList[i] = NULL; } } src/acpica/source/components/utilities/utalloc.c000066400000000000000000000336631231470457100224130ustar00rootroot00000000000000/****************************************************************************** * * Module Name: utalloc - local memory allocation routines * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #define __UTALLOC_C__ #include "acpi.h" #include "accommon.h" #include "acdebug.h" #define _COMPONENT ACPI_UTILITIES ACPI_MODULE_NAME ("utalloc") #if !defined (USE_NATIVE_ALLOCATE_ZEROED) /******************************************************************************* * * FUNCTION: AcpiOsAllocateZeroed * * PARAMETERS: Size - Size of the allocation * * RETURN: Address of the allocated memory on success, NULL on failure. * * DESCRIPTION: Subsystem equivalent of calloc. Allocate and zero memory. * This is the default implementation. Can be overridden via the * USE_NATIVE_ALLOCATE_ZEROED flag. * ******************************************************************************/ void * AcpiOsAllocateZeroed ( ACPI_SIZE Size) { void *Allocation; ACPI_FUNCTION_ENTRY (); Allocation = AcpiOsAllocate (Size); if (Allocation) { /* Clear the memory block */ ACPI_MEMSET (Allocation, 0, Size); } return (Allocation); } #endif /* !USE_NATIVE_ALLOCATE_ZEROED */ /******************************************************************************* * * FUNCTION: AcpiUtCreateCaches * * PARAMETERS: None * * RETURN: Status * * DESCRIPTION: Create all local caches * ******************************************************************************/ ACPI_STATUS AcpiUtCreateCaches ( void) { ACPI_STATUS Status; /* Object Caches, for frequently used objects */ Status = AcpiOsCreateCache ("Acpi-Namespace", sizeof (ACPI_NAMESPACE_NODE), ACPI_MAX_NAMESPACE_CACHE_DEPTH, &AcpiGbl_NamespaceCache); if (ACPI_FAILURE (Status)) { return (Status); } Status = AcpiOsCreateCache ("Acpi-State", sizeof (ACPI_GENERIC_STATE), ACPI_MAX_STATE_CACHE_DEPTH, &AcpiGbl_StateCache); if (ACPI_FAILURE (Status)) { return (Status); } Status = AcpiOsCreateCache ("Acpi-Parse", sizeof (ACPI_PARSE_OBJ_COMMON), ACPI_MAX_PARSE_CACHE_DEPTH, &AcpiGbl_PsNodeCache); if (ACPI_FAILURE (Status)) { return (Status); } Status = AcpiOsCreateCache ("Acpi-ParseExt", sizeof (ACPI_PARSE_OBJ_NAMED), ACPI_MAX_EXTPARSE_CACHE_DEPTH, &AcpiGbl_PsNodeExtCache); if (ACPI_FAILURE (Status)) { return (Status); } Status = AcpiOsCreateCache ("Acpi-Operand", sizeof (ACPI_OPERAND_OBJECT), ACPI_MAX_OBJECT_CACHE_DEPTH, &AcpiGbl_OperandCache); if (ACPI_FAILURE (Status)) { return (Status); } #ifdef ACPI_DBG_TRACK_ALLOCATIONS /* Memory allocation lists */ Status = AcpiUtCreateList ("Acpi-Global", 0, &AcpiGbl_GlobalList); if (ACPI_FAILURE (Status)) { return (Status); } Status = AcpiUtCreateList ("Acpi-Namespace", sizeof (ACPI_NAMESPACE_NODE), &AcpiGbl_NsNodeList); if (ACPI_FAILURE (Status)) { return (Status); } #endif return (AE_OK); } /******************************************************************************* * * FUNCTION: AcpiUtDeleteCaches * * PARAMETERS: None * * RETURN: Status * * DESCRIPTION: Purge and delete all local caches * ******************************************************************************/ ACPI_STATUS AcpiUtDeleteCaches ( void) { #ifdef ACPI_DBG_TRACK_ALLOCATIONS char Buffer[7]; if (AcpiGbl_DisplayFinalMemStats) { ACPI_STRCPY (Buffer, "MEMORY"); (void) AcpiDbDisplayStatistics (Buffer); } #endif (void) AcpiOsDeleteCache (AcpiGbl_NamespaceCache); AcpiGbl_NamespaceCache = NULL; (void) AcpiOsDeleteCache (AcpiGbl_StateCache); AcpiGbl_StateCache = NULL; (void) AcpiOsDeleteCache (AcpiGbl_OperandCache); AcpiGbl_OperandCache = NULL; (void) AcpiOsDeleteCache (AcpiGbl_PsNodeCache); AcpiGbl_PsNodeCache = NULL; (void) AcpiOsDeleteCache (AcpiGbl_PsNodeExtCache); AcpiGbl_PsNodeExtCache = NULL; #ifdef ACPI_DBG_TRACK_ALLOCATIONS /* Debug only - display leftover memory allocation, if any */ AcpiUtDumpAllocations (ACPI_UINT32_MAX, NULL); /* Free memory lists */ AcpiOsFree (AcpiGbl_GlobalList); AcpiGbl_GlobalList = NULL; AcpiOsFree (AcpiGbl_NsNodeList); AcpiGbl_NsNodeList = NULL; #endif return (AE_OK); } /******************************************************************************* * * FUNCTION: AcpiUtValidateBuffer * * PARAMETERS: Buffer - Buffer descriptor to be validated * * RETURN: Status * * DESCRIPTION: Perform parameter validation checks on an ACPI_BUFFER * ******************************************************************************/ ACPI_STATUS AcpiUtValidateBuffer ( ACPI_BUFFER *Buffer) { /* Obviously, the structure pointer must be valid */ if (!Buffer) { return (AE_BAD_PARAMETER); } /* Special semantics for the length */ if ((Buffer->Length == ACPI_NO_BUFFER) || (Buffer->Length == ACPI_ALLOCATE_BUFFER) || (Buffer->Length == ACPI_ALLOCATE_LOCAL_BUFFER)) { return (AE_OK); } /* Length is valid, the buffer pointer must be also */ if (!Buffer->Pointer) { return (AE_BAD_PARAMETER); } return (AE_OK); } /******************************************************************************* * * FUNCTION: AcpiUtInitializeBuffer * * PARAMETERS: Buffer - Buffer to be validated * RequiredLength - Length needed * * RETURN: Status * * DESCRIPTION: Validate that the buffer is of the required length or * allocate a new buffer. Returned buffer is always zeroed. * ******************************************************************************/ ACPI_STATUS AcpiUtInitializeBuffer ( ACPI_BUFFER *Buffer, ACPI_SIZE RequiredLength) { ACPI_SIZE InputBufferLength; /* Parameter validation */ if (!Buffer || !RequiredLength) { return (AE_BAD_PARAMETER); } /* * Buffer->Length is used as both an input and output parameter. Get the * input actual length and set the output required buffer length. */ InputBufferLength = Buffer->Length; Buffer->Length = RequiredLength; /* * The input buffer length contains the actual buffer length, or the type * of buffer to be allocated by this routine. */ switch (InputBufferLength) { case ACPI_NO_BUFFER: /* Return the exception (and the required buffer length) */ return (AE_BUFFER_OVERFLOW); case ACPI_ALLOCATE_BUFFER: /* * Allocate a new buffer. We directectly call AcpiOsAllocate here to * purposefully bypass the (optionally enabled) internal allocation * tracking mechanism since we only want to track internal * allocations. Note: The caller should use AcpiOsFree to free this * buffer created via ACPI_ALLOCATE_BUFFER. */ Buffer->Pointer = AcpiOsAllocate (RequiredLength); break; case ACPI_ALLOCATE_LOCAL_BUFFER: /* Allocate a new buffer with local interface to allow tracking */ Buffer->Pointer = ACPI_ALLOCATE (RequiredLength); break; default: /* Existing buffer: Validate the size of the buffer */ if (InputBufferLength < RequiredLength) { return (AE_BUFFER_OVERFLOW); } break; } /* Validate allocation from above or input buffer pointer */ if (!Buffer->Pointer) { return (AE_NO_MEMORY); } /* Have a valid buffer, clear it */ ACPI_MEMSET (Buffer->Pointer, 0, RequiredLength); return (AE_OK); } src/acpica/source/components/utilities/utbuffer.c000066400000000000000000000255131231470457100225650ustar00rootroot00000000000000/****************************************************************************** * * Module Name: utbuffer - Buffer dump routines * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #define __UTBUFFER_C__ #include "acpi.h" #include "accommon.h" #define _COMPONENT ACPI_UTILITIES ACPI_MODULE_NAME ("utbuffer") /******************************************************************************* * * FUNCTION: AcpiUtDumpBuffer * * PARAMETERS: Buffer - Buffer to dump * Count - Amount to dump, in bytes * Display - BYTE, WORD, DWORD, or QWORD display: * DB_BYTE_DISPLAY * DB_WORD_DISPLAY * DB_DWORD_DISPLAY * DB_QWORD_DISPLAY * BaseOffset - Beginning buffer offset (display only) * * RETURN: None * * DESCRIPTION: Generic dump buffer in both hex and ascii. * ******************************************************************************/ void AcpiUtDumpBuffer ( UINT8 *Buffer, UINT32 Count, UINT32 Display, UINT32 BaseOffset) { UINT32 i = 0; UINT32 j; UINT32 Temp32; UINT8 BufChar; if (!Buffer) { AcpiOsPrintf ("Null Buffer Pointer in DumpBuffer!\n"); return; } if ((Count < 4) || (Count & 0x01)) { Display = DB_BYTE_DISPLAY; } /* Nasty little dump buffer routine! */ while (i < Count) { /* Print current offset */ AcpiOsPrintf ("%6.4X: ", (BaseOffset + i)); /* Print 16 hex chars */ for (j = 0; j < 16;) { if (i + j >= Count) { /* Dump fill spaces */ AcpiOsPrintf ("%*s", ((Display * 2) + 1), " "); j += Display; continue; } switch (Display) { case DB_BYTE_DISPLAY: default: /* Default is BYTE display */ AcpiOsPrintf ("%02X ", Buffer[(ACPI_SIZE) i + j]); break; case DB_WORD_DISPLAY: ACPI_MOVE_16_TO_32 (&Temp32, &Buffer[(ACPI_SIZE) i + j]); AcpiOsPrintf ("%04X ", Temp32); break; case DB_DWORD_DISPLAY: ACPI_MOVE_32_TO_32 (&Temp32, &Buffer[(ACPI_SIZE) i + j]); AcpiOsPrintf ("%08X ", Temp32); break; case DB_QWORD_DISPLAY: ACPI_MOVE_32_TO_32 (&Temp32, &Buffer[(ACPI_SIZE) i + j]); AcpiOsPrintf ("%08X", Temp32); ACPI_MOVE_32_TO_32 (&Temp32, &Buffer[(ACPI_SIZE) i + j + 4]); AcpiOsPrintf ("%08X ", Temp32); break; } j += Display; } /* * Print the ASCII equivalent characters but watch out for the bad * unprintable ones (printable chars are 0x20 through 0x7E) */ AcpiOsPrintf (" "); for (j = 0; j < 16; j++) { if (i + j >= Count) { AcpiOsPrintf ("\n"); return; } BufChar = Buffer[(ACPI_SIZE) i + j]; if (ACPI_IS_PRINT (BufChar)) { AcpiOsPrintf ("%c", BufChar); } else { AcpiOsPrintf ("."); } } /* Done with that line. */ AcpiOsPrintf ("\n"); i += 16; } return; } /******************************************************************************* * * FUNCTION: AcpiUtDebugDumpBuffer * * PARAMETERS: Buffer - Buffer to dump * Count - Amount to dump, in bytes * Display - BYTE, WORD, DWORD, or QWORD display: * DB_BYTE_DISPLAY * DB_WORD_DISPLAY * DB_DWORD_DISPLAY * DB_QWORD_DISPLAY * ComponentID - Caller's component ID * * RETURN: None * * DESCRIPTION: Generic dump buffer in both hex and ascii. * ******************************************************************************/ void AcpiUtDebugDumpBuffer ( UINT8 *Buffer, UINT32 Count, UINT32 Display, UINT32 ComponentId) { /* Only dump the buffer if tracing is enabled */ if (!((ACPI_LV_TABLES & AcpiDbgLevel) && (ComponentId & AcpiDbgLayer))) { return; } AcpiUtDumpBuffer (Buffer, Count, Display, 0); } src/acpica/source/components/utilities/utcache.c000066400000000000000000000322641231470457100223600ustar00rootroot00000000000000/****************************************************************************** * * Module Name: utcache - local cache allocation routines * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #define __UTCACHE_C__ #include "acpi.h" #include "accommon.h" #define _COMPONENT ACPI_UTILITIES ACPI_MODULE_NAME ("utcache") #ifdef ACPI_USE_LOCAL_CACHE /******************************************************************************* * * FUNCTION: AcpiOsCreateCache * * PARAMETERS: CacheName - Ascii name for the cache * ObjectSize - Size of each cached object * MaxDepth - Maximum depth of the cache (in objects) * ReturnCache - Where the new cache object is returned * * RETURN: Status * * DESCRIPTION: Create a cache object * ******************************************************************************/ ACPI_STATUS AcpiOsCreateCache ( char *CacheName, UINT16 ObjectSize, UINT16 MaxDepth, ACPI_MEMORY_LIST **ReturnCache) { ACPI_MEMORY_LIST *Cache; ACPI_FUNCTION_ENTRY (); if (!CacheName || !ReturnCache || (ObjectSize < 16)) { return (AE_BAD_PARAMETER); } /* Create the cache object */ Cache = AcpiOsAllocate (sizeof (ACPI_MEMORY_LIST)); if (!Cache) { return (AE_NO_MEMORY); } /* Populate the cache object and return it */ ACPI_MEMSET (Cache, 0, sizeof (ACPI_MEMORY_LIST)); Cache->ListName = CacheName; Cache->ObjectSize = ObjectSize; Cache->MaxDepth = MaxDepth; *ReturnCache = Cache; return (AE_OK); } /******************************************************************************* * * FUNCTION: AcpiOsPurgeCache * * PARAMETERS: Cache - Handle to cache object * * RETURN: Status * * DESCRIPTION: Free all objects within the requested cache. * ******************************************************************************/ ACPI_STATUS AcpiOsPurgeCache ( ACPI_MEMORY_LIST *Cache) { void *Next; ACPI_STATUS Status; ACPI_FUNCTION_ENTRY (); if (!Cache) { return (AE_BAD_PARAMETER); } Status = AcpiUtAcquireMutex (ACPI_MTX_CACHES); if (ACPI_FAILURE (Status)) { return (Status); } /* Walk the list of objects in this cache */ while (Cache->ListHead) { /* Delete and unlink one cached state object */ Next = ACPI_GET_DESCRIPTOR_PTR (Cache->ListHead); ACPI_FREE (Cache->ListHead); Cache->ListHead = Next; Cache->CurrentDepth--; } (void) AcpiUtReleaseMutex (ACPI_MTX_CACHES); return (AE_OK); } /******************************************************************************* * * FUNCTION: AcpiOsDeleteCache * * PARAMETERS: Cache - Handle to cache object * * RETURN: Status * * DESCRIPTION: Free all objects within the requested cache and delete the * cache object. * ******************************************************************************/ ACPI_STATUS AcpiOsDeleteCache ( ACPI_MEMORY_LIST *Cache) { ACPI_STATUS Status; ACPI_FUNCTION_ENTRY (); /* Purge all objects in the cache */ Status = AcpiOsPurgeCache (Cache); if (ACPI_FAILURE (Status)) { return (Status); } /* Now we can delete the cache object */ AcpiOsFree (Cache); return (AE_OK); } /******************************************************************************* * * FUNCTION: AcpiOsReleaseObject * * PARAMETERS: Cache - Handle to cache object * Object - The object to be released * * RETURN: None * * DESCRIPTION: Release an object to the specified cache. If cache is full, * the object is deleted. * ******************************************************************************/ ACPI_STATUS AcpiOsReleaseObject ( ACPI_MEMORY_LIST *Cache, void *Object) { ACPI_STATUS Status; ACPI_FUNCTION_ENTRY (); if (!Cache || !Object) { return (AE_BAD_PARAMETER); } /* If cache is full, just free this object */ if (Cache->CurrentDepth >= Cache->MaxDepth) { ACPI_FREE (Object); ACPI_MEM_TRACKING (Cache->TotalFreed++); } /* Otherwise put this object back into the cache */ else { Status = AcpiUtAcquireMutex (ACPI_MTX_CACHES); if (ACPI_FAILURE (Status)) { return (Status); } /* Mark the object as cached */ ACPI_MEMSET (Object, 0xCA, Cache->ObjectSize); ACPI_SET_DESCRIPTOR_TYPE (Object, ACPI_DESC_TYPE_CACHED); /* Put the object at the head of the cache list */ ACPI_SET_DESCRIPTOR_PTR (Object, Cache->ListHead); Cache->ListHead = Object; Cache->CurrentDepth++; (void) AcpiUtReleaseMutex (ACPI_MTX_CACHES); } return (AE_OK); } /******************************************************************************* * * FUNCTION: AcpiOsAcquireObject * * PARAMETERS: Cache - Handle to cache object * * RETURN: the acquired object. NULL on error * * DESCRIPTION: Get an object from the specified cache. If cache is empty, * the object is allocated. * ******************************************************************************/ void * AcpiOsAcquireObject ( ACPI_MEMORY_LIST *Cache) { ACPI_STATUS Status; void *Object; ACPI_FUNCTION_NAME (OsAcquireObject); if (!Cache) { return_PTR (NULL); } Status = AcpiUtAcquireMutex (ACPI_MTX_CACHES); if (ACPI_FAILURE (Status)) { return_PTR (NULL); } ACPI_MEM_TRACKING (Cache->Requests++); /* Check the cache first */ if (Cache->ListHead) { /* There is an object available, use it */ Object = Cache->ListHead; Cache->ListHead = ACPI_GET_DESCRIPTOR_PTR (Object); Cache->CurrentDepth--; ACPI_MEM_TRACKING (Cache->Hits++); ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Object %p from %s cache\n", Object, Cache->ListName)); Status = AcpiUtReleaseMutex (ACPI_MTX_CACHES); if (ACPI_FAILURE (Status)) { return_PTR (NULL); } /* Clear (zero) the previously used Object */ ACPI_MEMSET (Object, 0, Cache->ObjectSize); } else { /* The cache is empty, create a new object */ ACPI_MEM_TRACKING (Cache->TotalAllocated++); #ifdef ACPI_DBG_TRACK_ALLOCATIONS if ((Cache->TotalAllocated - Cache->TotalFreed) > Cache->MaxOccupied) { Cache->MaxOccupied = Cache->TotalAllocated - Cache->TotalFreed; } #endif /* Avoid deadlock with ACPI_ALLOCATE_ZEROED */ Status = AcpiUtReleaseMutex (ACPI_MTX_CACHES); if (ACPI_FAILURE (Status)) { return_PTR (NULL); } Object = ACPI_ALLOCATE_ZEROED (Cache->ObjectSize); if (!Object) { return_PTR (NULL); } } return_PTR (Object); } #endif /* ACPI_USE_LOCAL_CACHE */ src/acpica/source/components/utilities/utcopy.c000066400000000000000000001055031231470457100222640ustar00rootroot00000000000000/****************************************************************************** * * Module Name: utcopy - Internal to external object translation utilities * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #define __UTCOPY_C__ #include "acpi.h" #include "accommon.h" #include "acnamesp.h" #define _COMPONENT ACPI_UTILITIES ACPI_MODULE_NAME ("utcopy") /* Local prototypes */ static ACPI_STATUS AcpiUtCopyIsimpleToEsimple ( ACPI_OPERAND_OBJECT *InternalObject, ACPI_OBJECT *ExternalObject, UINT8 *DataSpace, ACPI_SIZE *BufferSpaceUsed); static ACPI_STATUS AcpiUtCopyIelementToIelement ( UINT8 ObjectType, ACPI_OPERAND_OBJECT *SourceObject, ACPI_GENERIC_STATE *State, void *Context); static ACPI_STATUS AcpiUtCopyIpackageToEpackage ( ACPI_OPERAND_OBJECT *InternalObject, UINT8 *Buffer, ACPI_SIZE *SpaceUsed); static ACPI_STATUS AcpiUtCopyEsimpleToIsimple( ACPI_OBJECT *UserObj, ACPI_OPERAND_OBJECT **ReturnObj); static ACPI_STATUS AcpiUtCopyEpackageToIpackage ( ACPI_OBJECT *ExternalObject, ACPI_OPERAND_OBJECT **InternalObject); static ACPI_STATUS AcpiUtCopySimpleObject ( ACPI_OPERAND_OBJECT *SourceDesc, ACPI_OPERAND_OBJECT *DestDesc); static ACPI_STATUS AcpiUtCopyIelementToEelement ( UINT8 ObjectType, ACPI_OPERAND_OBJECT *SourceObject, ACPI_GENERIC_STATE *State, void *Context); static ACPI_STATUS AcpiUtCopyIpackageToIpackage ( ACPI_OPERAND_OBJECT *SourceObj, ACPI_OPERAND_OBJECT *DestObj, ACPI_WALK_STATE *WalkState); /******************************************************************************* * * FUNCTION: AcpiUtCopyIsimpleToEsimple * * PARAMETERS: InternalObject - Source object to be copied * ExternalObject - Where to return the copied object * DataSpace - Where object data is returned (such as * buffer and string data) * BufferSpaceUsed - Length of DataSpace that was used * * RETURN: Status * * DESCRIPTION: This function is called to copy a simple internal object to * an external object. * * The DataSpace buffer is assumed to have sufficient space for * the object. * ******************************************************************************/ static ACPI_STATUS AcpiUtCopyIsimpleToEsimple ( ACPI_OPERAND_OBJECT *InternalObject, ACPI_OBJECT *ExternalObject, UINT8 *DataSpace, ACPI_SIZE *BufferSpaceUsed) { ACPI_STATUS Status = AE_OK; ACPI_FUNCTION_TRACE (UtCopyIsimpleToEsimple); *BufferSpaceUsed = 0; /* * Check for NULL object case (could be an uninitialized * package element) */ if (!InternalObject) { return_ACPI_STATUS (AE_OK); } /* Always clear the external object */ ACPI_MEMSET (ExternalObject, 0, sizeof (ACPI_OBJECT)); /* * In general, the external object will be the same type as * the internal object */ ExternalObject->Type = InternalObject->Common.Type; /* However, only a limited number of external types are supported */ switch (InternalObject->Common.Type) { case ACPI_TYPE_STRING: ExternalObject->String.Pointer = (char *) DataSpace; ExternalObject->String.Length = InternalObject->String.Length; *BufferSpaceUsed = ACPI_ROUND_UP_TO_NATIVE_WORD ( (ACPI_SIZE) InternalObject->String.Length + 1); ACPI_MEMCPY ((void *) DataSpace, (void *) InternalObject->String.Pointer, (ACPI_SIZE) InternalObject->String.Length + 1); break; case ACPI_TYPE_BUFFER: ExternalObject->Buffer.Pointer = DataSpace; ExternalObject->Buffer.Length = InternalObject->Buffer.Length; *BufferSpaceUsed = ACPI_ROUND_UP_TO_NATIVE_WORD ( InternalObject->String.Length); ACPI_MEMCPY ((void *) DataSpace, (void *) InternalObject->Buffer.Pointer, InternalObject->Buffer.Length); break; case ACPI_TYPE_INTEGER: ExternalObject->Integer.Value = InternalObject->Integer.Value; break; case ACPI_TYPE_LOCAL_REFERENCE: /* This is an object reference. */ switch (InternalObject->Reference.Class) { case ACPI_REFCLASS_NAME: /* * For namepath, return the object handle ("reference") * We are referring to the namespace node */ ExternalObject->Reference.Handle = InternalObject->Reference.Node; ExternalObject->Reference.ActualType = AcpiNsGetType (InternalObject->Reference.Node); break; default: /* All other reference types are unsupported */ return_ACPI_STATUS (AE_TYPE); } break; case ACPI_TYPE_PROCESSOR: ExternalObject->Processor.ProcId = InternalObject->Processor.ProcId; ExternalObject->Processor.PblkAddress = InternalObject->Processor.Address; ExternalObject->Processor.PblkLength = InternalObject->Processor.Length; break; case ACPI_TYPE_POWER: ExternalObject->PowerResource.SystemLevel = InternalObject->PowerResource.SystemLevel; ExternalObject->PowerResource.ResourceOrder = InternalObject->PowerResource.ResourceOrder; break; default: /* * There is no corresponding external object type */ ACPI_ERROR ((AE_INFO, "Unsupported object type, cannot convert to external object: %s", AcpiUtGetTypeName (InternalObject->Common.Type))); return_ACPI_STATUS (AE_SUPPORT); } return_ACPI_STATUS (Status); } /******************************************************************************* * * FUNCTION: AcpiUtCopyIelementToEelement * * PARAMETERS: ACPI_PKG_CALLBACK * * RETURN: Status * * DESCRIPTION: Copy one package element to another package element * ******************************************************************************/ static ACPI_STATUS AcpiUtCopyIelementToEelement ( UINT8 ObjectType, ACPI_OPERAND_OBJECT *SourceObject, ACPI_GENERIC_STATE *State, void *Context) { ACPI_STATUS Status = AE_OK; ACPI_PKG_INFO *Info = (ACPI_PKG_INFO *) Context; ACPI_SIZE ObjectSpace; UINT32 ThisIndex; ACPI_OBJECT *TargetObject; ACPI_FUNCTION_ENTRY (); ThisIndex = State->Pkg.Index; TargetObject = (ACPI_OBJECT *) &((ACPI_OBJECT *)(State->Pkg.DestObject))->Package.Elements[ThisIndex]; switch (ObjectType) { case ACPI_COPY_TYPE_SIMPLE: /* * This is a simple or null object */ Status = AcpiUtCopyIsimpleToEsimple (SourceObject, TargetObject, Info->FreeSpace, &ObjectSpace); if (ACPI_FAILURE (Status)) { return (Status); } break; case ACPI_COPY_TYPE_PACKAGE: /* * Build the package object */ TargetObject->Type = ACPI_TYPE_PACKAGE; TargetObject->Package.Count = SourceObject->Package.Count; TargetObject->Package.Elements = ACPI_CAST_PTR (ACPI_OBJECT, Info->FreeSpace); /* * Pass the new package object back to the package walk routine */ State->Pkg.ThisTargetObj = TargetObject; /* * Save space for the array of objects (Package elements) * update the buffer length counter */ ObjectSpace = ACPI_ROUND_UP_TO_NATIVE_WORD ( (ACPI_SIZE) TargetObject->Package.Count * sizeof (ACPI_OBJECT)); break; default: return (AE_BAD_PARAMETER); } Info->FreeSpace += ObjectSpace; Info->Length += ObjectSpace; return (Status); } /******************************************************************************* * * FUNCTION: AcpiUtCopyIpackageToEpackage * * PARAMETERS: InternalObject - Pointer to the object we are returning * Buffer - Where the object is returned * SpaceUsed - Where the object length is returned * * RETURN: Status * * DESCRIPTION: This function is called to place a package object in a user * buffer. A package object by definition contains other objects. * * The buffer is assumed to have sufficient space for the object. * The caller must have verified the buffer length needed using * the AcpiUtGetObjectSize function before calling this function. * ******************************************************************************/ static ACPI_STATUS AcpiUtCopyIpackageToEpackage ( ACPI_OPERAND_OBJECT *InternalObject, UINT8 *Buffer, ACPI_SIZE *SpaceUsed) { ACPI_OBJECT *ExternalObject; ACPI_STATUS Status; ACPI_PKG_INFO Info; ACPI_FUNCTION_TRACE (UtCopyIpackageToEpackage); /* * First package at head of the buffer */ ExternalObject = ACPI_CAST_PTR (ACPI_OBJECT, Buffer); /* * Free space begins right after the first package */ Info.Length = ACPI_ROUND_UP_TO_NATIVE_WORD (sizeof (ACPI_OBJECT)); Info.FreeSpace = Buffer + ACPI_ROUND_UP_TO_NATIVE_WORD ( sizeof (ACPI_OBJECT)); Info.ObjectSpace = 0; Info.NumPackages = 1; ExternalObject->Type = InternalObject->Common.Type; ExternalObject->Package.Count = InternalObject->Package.Count; ExternalObject->Package.Elements = ACPI_CAST_PTR (ACPI_OBJECT, Info.FreeSpace); /* * Leave room for an array of ACPI_OBJECTS in the buffer * and move the free space past it */ Info.Length += (ACPI_SIZE) ExternalObject->Package.Count * ACPI_ROUND_UP_TO_NATIVE_WORD (sizeof (ACPI_OBJECT)); Info.FreeSpace += ExternalObject->Package.Count * ACPI_ROUND_UP_TO_NATIVE_WORD (sizeof (ACPI_OBJECT)); Status = AcpiUtWalkPackageTree (InternalObject, ExternalObject, AcpiUtCopyIelementToEelement, &Info); *SpaceUsed = Info.Length; return_ACPI_STATUS (Status); } /******************************************************************************* * * FUNCTION: AcpiUtCopyIobjectToEobject * * PARAMETERS: InternalObject - The internal object to be converted * RetBuffer - Where the object is returned * * RETURN: Status * * DESCRIPTION: This function is called to build an API object to be returned * to the caller. * ******************************************************************************/ ACPI_STATUS AcpiUtCopyIobjectToEobject ( ACPI_OPERAND_OBJECT *InternalObject, ACPI_BUFFER *RetBuffer) { ACPI_STATUS Status; ACPI_FUNCTION_TRACE (UtCopyIobjectToEobject); if (InternalObject->Common.Type == ACPI_TYPE_PACKAGE) { /* * Package object: Copy all subobjects (including * nested packages) */ Status = AcpiUtCopyIpackageToEpackage (InternalObject, RetBuffer->Pointer, &RetBuffer->Length); } else { /* * Build a simple object (no nested objects) */ Status = AcpiUtCopyIsimpleToEsimple (InternalObject, ACPI_CAST_PTR (ACPI_OBJECT, RetBuffer->Pointer), ACPI_ADD_PTR (UINT8, RetBuffer->Pointer, ACPI_ROUND_UP_TO_NATIVE_WORD (sizeof (ACPI_OBJECT))), &RetBuffer->Length); /* * build simple does not include the object size in the length * so we add it in here */ RetBuffer->Length += sizeof (ACPI_OBJECT); } return_ACPI_STATUS (Status); } /******************************************************************************* * * FUNCTION: AcpiUtCopyEsimpleToIsimple * * PARAMETERS: ExternalObject - The external object to be converted * RetInternalObject - Where the internal object is returned * * RETURN: Status * * DESCRIPTION: This function copies an external object to an internal one. * NOTE: Pointers can be copied, we don't need to copy data. * (The pointers have to be valid in our address space no matter * what we do with them!) * ******************************************************************************/ static ACPI_STATUS AcpiUtCopyEsimpleToIsimple ( ACPI_OBJECT *ExternalObject, ACPI_OPERAND_OBJECT **RetInternalObject) { ACPI_OPERAND_OBJECT *InternalObject; ACPI_FUNCTION_TRACE (UtCopyEsimpleToIsimple); /* * Simple types supported are: String, Buffer, Integer */ switch (ExternalObject->Type) { case ACPI_TYPE_STRING: case ACPI_TYPE_BUFFER: case ACPI_TYPE_INTEGER: case ACPI_TYPE_LOCAL_REFERENCE: InternalObject = AcpiUtCreateInternalObject ( (UINT8) ExternalObject->Type); if (!InternalObject) { return_ACPI_STATUS (AE_NO_MEMORY); } break; case ACPI_TYPE_ANY: /* This is the case for a NULL object */ *RetInternalObject = NULL; return_ACPI_STATUS (AE_OK); default: /* All other types are not supported */ ACPI_ERROR ((AE_INFO, "Unsupported object type, cannot convert to internal object: %s", AcpiUtGetTypeName (ExternalObject->Type))); return_ACPI_STATUS (AE_SUPPORT); } /* Must COPY string and buffer contents */ switch (ExternalObject->Type) { case ACPI_TYPE_STRING: InternalObject->String.Pointer = ACPI_ALLOCATE_ZEROED ((ACPI_SIZE) ExternalObject->String.Length + 1); if (!InternalObject->String.Pointer) { goto ErrorExit; } ACPI_MEMCPY (InternalObject->String.Pointer, ExternalObject->String.Pointer, ExternalObject->String.Length); InternalObject->String.Length = ExternalObject->String.Length; break; case ACPI_TYPE_BUFFER: InternalObject->Buffer.Pointer = ACPI_ALLOCATE_ZEROED (ExternalObject->Buffer.Length); if (!InternalObject->Buffer.Pointer) { goto ErrorExit; } ACPI_MEMCPY (InternalObject->Buffer.Pointer, ExternalObject->Buffer.Pointer, ExternalObject->Buffer.Length); InternalObject->Buffer.Length = ExternalObject->Buffer.Length; /* Mark buffer data valid */ InternalObject->Buffer.Flags |= AOPOBJ_DATA_VALID; break; case ACPI_TYPE_INTEGER: InternalObject->Integer.Value = ExternalObject->Integer.Value; break; case ACPI_TYPE_LOCAL_REFERENCE: /* An incoming reference is defined to be a namespace node */ InternalObject->Reference.Class = ACPI_REFCLASS_REFOF; InternalObject->Reference.Object = ExternalObject->Reference.Handle; break; default: /* Other types can't get here */ break; } *RetInternalObject = InternalObject; return_ACPI_STATUS (AE_OK); ErrorExit: AcpiUtRemoveReference (InternalObject); return_ACPI_STATUS (AE_NO_MEMORY); } /******************************************************************************* * * FUNCTION: AcpiUtCopyEpackageToIpackage * * PARAMETERS: ExternalObject - The external object to be converted * InternalObject - Where the internal object is returned * * RETURN: Status * * DESCRIPTION: Copy an external package object to an internal package. * Handles nested packages. * ******************************************************************************/ static ACPI_STATUS AcpiUtCopyEpackageToIpackage ( ACPI_OBJECT *ExternalObject, ACPI_OPERAND_OBJECT **InternalObject) { ACPI_STATUS Status = AE_OK; ACPI_OPERAND_OBJECT *PackageObject; ACPI_OPERAND_OBJECT **PackageElements; UINT32 i; ACPI_FUNCTION_TRACE (UtCopyEpackageToIpackage); /* Create the package object */ PackageObject = AcpiUtCreatePackageObject (ExternalObject->Package.Count); if (!PackageObject) { return_ACPI_STATUS (AE_NO_MEMORY); } PackageElements = PackageObject->Package.Elements; /* * Recursive implementation. Probably ok, since nested external packages * as parameters should be very rare. */ for (i = 0; i < ExternalObject->Package.Count; i++) { Status = AcpiUtCopyEobjectToIobject ( &ExternalObject->Package.Elements[i], &PackageElements[i]); if (ACPI_FAILURE (Status)) { /* Truncate package and delete it */ PackageObject->Package.Count = i; PackageElements[i] = NULL; AcpiUtRemoveReference (PackageObject); return_ACPI_STATUS (Status); } } /* Mark package data valid */ PackageObject->Package.Flags |= AOPOBJ_DATA_VALID; *InternalObject = PackageObject; return_ACPI_STATUS (Status); } /******************************************************************************* * * FUNCTION: AcpiUtCopyEobjectToIobject * * PARAMETERS: ExternalObject - The external object to be converted * InternalObject - Where the internal object is returned * * RETURN: Status * * DESCRIPTION: Converts an external object to an internal object. * ******************************************************************************/ ACPI_STATUS AcpiUtCopyEobjectToIobject ( ACPI_OBJECT *ExternalObject, ACPI_OPERAND_OBJECT **InternalObject) { ACPI_STATUS Status; ACPI_FUNCTION_TRACE (UtCopyEobjectToIobject); if (ExternalObject->Type == ACPI_TYPE_PACKAGE) { Status = AcpiUtCopyEpackageToIpackage (ExternalObject, InternalObject); } else { /* * Build a simple object (no nested objects) */ Status = AcpiUtCopyEsimpleToIsimple (ExternalObject, InternalObject); } return_ACPI_STATUS (Status); } /******************************************************************************* * * FUNCTION: AcpiUtCopySimpleObject * * PARAMETERS: SourceDesc - The internal object to be copied * DestDesc - New target object * * RETURN: Status * * DESCRIPTION: Simple copy of one internal object to another. Reference count * of the destination object is preserved. * ******************************************************************************/ static ACPI_STATUS AcpiUtCopySimpleObject ( ACPI_OPERAND_OBJECT *SourceDesc, ACPI_OPERAND_OBJECT *DestDesc) { UINT16 ReferenceCount; ACPI_OPERAND_OBJECT *NextObject; ACPI_STATUS Status; ACPI_SIZE CopySize; /* Save fields from destination that we don't want to overwrite */ ReferenceCount = DestDesc->Common.ReferenceCount; NextObject = DestDesc->Common.NextObject; /* * Copy the entire source object over the destination object. * Note: Source can be either an operand object or namespace node. */ CopySize = sizeof (ACPI_OPERAND_OBJECT); if (ACPI_GET_DESCRIPTOR_TYPE (SourceDesc) == ACPI_DESC_TYPE_NAMED) { CopySize = sizeof (ACPI_NAMESPACE_NODE); } ACPI_MEMCPY (ACPI_CAST_PTR (char, DestDesc), ACPI_CAST_PTR (char, SourceDesc), CopySize); /* Restore the saved fields */ DestDesc->Common.ReferenceCount = ReferenceCount; DestDesc->Common.NextObject = NextObject; /* New object is not static, regardless of source */ DestDesc->Common.Flags &= ~AOPOBJ_STATIC_POINTER; /* Handle the objects with extra data */ switch (DestDesc->Common.Type) { case ACPI_TYPE_BUFFER: /* * Allocate and copy the actual buffer if and only if: * 1) There is a valid buffer pointer * 2) The buffer has a length > 0 */ if ((SourceDesc->Buffer.Pointer) && (SourceDesc->Buffer.Length)) { DestDesc->Buffer.Pointer = ACPI_ALLOCATE (SourceDesc->Buffer.Length); if (!DestDesc->Buffer.Pointer) { return (AE_NO_MEMORY); } /* Copy the actual buffer data */ ACPI_MEMCPY (DestDesc->Buffer.Pointer, SourceDesc->Buffer.Pointer, SourceDesc->Buffer.Length); } break; case ACPI_TYPE_STRING: /* * Allocate and copy the actual string if and only if: * 1) There is a valid string pointer * (Pointer to a NULL string is allowed) */ if (SourceDesc->String.Pointer) { DestDesc->String.Pointer = ACPI_ALLOCATE ((ACPI_SIZE) SourceDesc->String.Length + 1); if (!DestDesc->String.Pointer) { return (AE_NO_MEMORY); } /* Copy the actual string data */ ACPI_MEMCPY (DestDesc->String.Pointer, SourceDesc->String.Pointer, (ACPI_SIZE) SourceDesc->String.Length + 1); } break; case ACPI_TYPE_LOCAL_REFERENCE: /* * We copied the reference object, so we now must add a reference * to the object pointed to by the reference * * DDBHandle reference (from Load/LoadTable) is a special reference, * it does not have a Reference.Object, so does not need to * increase the reference count */ if (SourceDesc->Reference.Class == ACPI_REFCLASS_TABLE) { break; } AcpiUtAddReference (SourceDesc->Reference.Object); break; case ACPI_TYPE_REGION: /* * We copied the Region Handler, so we now must add a reference */ if (DestDesc->Region.Handler) { AcpiUtAddReference (DestDesc->Region.Handler); } break; /* * For Mutex and Event objects, we cannot simply copy the underlying * OS object. We must create a new one. */ case ACPI_TYPE_MUTEX: Status = AcpiOsCreateMutex (&DestDesc->Mutex.OsMutex); if (ACPI_FAILURE (Status)) { return (Status); } break; case ACPI_TYPE_EVENT: Status = AcpiOsCreateSemaphore (ACPI_NO_UNIT_LIMIT, 0, &DestDesc->Event.OsSemaphore); if (ACPI_FAILURE (Status)) { return (Status); } break; default: /* Nothing to do for other simple objects */ break; } return (AE_OK); } /******************************************************************************* * * FUNCTION: AcpiUtCopyIelementToIelement * * PARAMETERS: ACPI_PKG_CALLBACK * * RETURN: Status * * DESCRIPTION: Copy one package element to another package element * ******************************************************************************/ static ACPI_STATUS AcpiUtCopyIelementToIelement ( UINT8 ObjectType, ACPI_OPERAND_OBJECT *SourceObject, ACPI_GENERIC_STATE *State, void *Context) { ACPI_STATUS Status = AE_OK; UINT32 ThisIndex; ACPI_OPERAND_OBJECT **ThisTargetPtr; ACPI_OPERAND_OBJECT *TargetObject; ACPI_FUNCTION_ENTRY (); ThisIndex = State->Pkg.Index; ThisTargetPtr = (ACPI_OPERAND_OBJECT **) &State->Pkg.DestObject->Package.Elements[ThisIndex]; switch (ObjectType) { case ACPI_COPY_TYPE_SIMPLE: /* A null source object indicates a (legal) null package element */ if (SourceObject) { /* * This is a simple object, just copy it */ TargetObject = AcpiUtCreateInternalObject ( SourceObject->Common.Type); if (!TargetObject) { return (AE_NO_MEMORY); } Status = AcpiUtCopySimpleObject (SourceObject, TargetObject); if (ACPI_FAILURE (Status)) { goto ErrorExit; } *ThisTargetPtr = TargetObject; } else { /* Pass through a null element */ *ThisTargetPtr = NULL; } break; case ACPI_COPY_TYPE_PACKAGE: /* * This object is a package - go down another nesting level * Create and build the package object */ TargetObject = AcpiUtCreatePackageObject (SourceObject->Package.Count); if (!TargetObject) { return (AE_NO_MEMORY); } TargetObject->Common.Flags = SourceObject->Common.Flags; /* Pass the new package object back to the package walk routine */ State->Pkg.ThisTargetObj = TargetObject; /* Store the object pointer in the parent package object */ *ThisTargetPtr = TargetObject; break; default: return (AE_BAD_PARAMETER); } return (Status); ErrorExit: AcpiUtRemoveReference (TargetObject); return (Status); } /******************************************************************************* * * FUNCTION: AcpiUtCopyIpackageToIpackage * * PARAMETERS: SourceObj - Pointer to the source package object * DestObj - Where the internal object is returned * WalkState - Current Walk state descriptor * * RETURN: Status * * DESCRIPTION: This function is called to copy an internal package object * into another internal package object. * ******************************************************************************/ static ACPI_STATUS AcpiUtCopyIpackageToIpackage ( ACPI_OPERAND_OBJECT *SourceObj, ACPI_OPERAND_OBJECT *DestObj, ACPI_WALK_STATE *WalkState) { ACPI_STATUS Status = AE_OK; ACPI_FUNCTION_TRACE (UtCopyIpackageToIpackage); DestObj->Common.Type = SourceObj->Common.Type; DestObj->Common.Flags = SourceObj->Common.Flags; DestObj->Package.Count = SourceObj->Package.Count; /* * Create the object array and walk the source package tree */ DestObj->Package.Elements = ACPI_ALLOCATE_ZEROED ( ((ACPI_SIZE) SourceObj->Package.Count + 1) * sizeof (void *)); if (!DestObj->Package.Elements) { ACPI_ERROR ((AE_INFO, "Package allocation failure")); return_ACPI_STATUS (AE_NO_MEMORY); } /* * Copy the package element-by-element by walking the package "tree". * This handles nested packages of arbitrary depth. */ Status = AcpiUtWalkPackageTree (SourceObj, DestObj, AcpiUtCopyIelementToIelement, WalkState); if (ACPI_FAILURE (Status)) { /* On failure, delete the destination package object */ AcpiUtRemoveReference (DestObj); } return_ACPI_STATUS (Status); } /******************************************************************************* * * FUNCTION: AcpiUtCopyIobjectToIobject * * PARAMETERS: SourceDesc - The internal object to be copied * DestDesc - Where the copied object is returned * WalkState - Current walk state * * RETURN: Status * * DESCRIPTION: Copy an internal object to a new internal object * ******************************************************************************/ ACPI_STATUS AcpiUtCopyIobjectToIobject ( ACPI_OPERAND_OBJECT *SourceDesc, ACPI_OPERAND_OBJECT **DestDesc, ACPI_WALK_STATE *WalkState) { ACPI_STATUS Status = AE_OK; ACPI_FUNCTION_TRACE (UtCopyIobjectToIobject); /* Create the top level object */ *DestDesc = AcpiUtCreateInternalObject (SourceDesc->Common.Type); if (!*DestDesc) { return_ACPI_STATUS (AE_NO_MEMORY); } /* Copy the object and possible subobjects */ if (SourceDesc->Common.Type == ACPI_TYPE_PACKAGE) { Status = AcpiUtCopyIpackageToIpackage (SourceDesc, *DestDesc, WalkState); } else { Status = AcpiUtCopySimpleObject (SourceDesc, *DestDesc); } return_ACPI_STATUS (Status); } src/acpica/source/components/utilities/utdebug.c000066400000000000000000000554351231470457100224100ustar00rootroot00000000000000/****************************************************************************** * * Module Name: utdebug - Debug print/trace routines * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #define __UTDEBUG_C__ #define EXPORT_ACPI_INTERFACES #include "acpi.h" #include "accommon.h" #define _COMPONENT ACPI_UTILITIES ACPI_MODULE_NAME ("utdebug") #ifdef ACPI_DEBUG_OUTPUT static ACPI_THREAD_ID AcpiGbl_PrevThreadId = (ACPI_THREAD_ID) 0xFFFFFFFF; static char *AcpiGbl_FnEntryStr = "----Entry"; static char *AcpiGbl_FnExitStr = "----Exit-"; /* Local prototypes */ static const char * AcpiUtTrimFunctionName ( const char *FunctionName); /******************************************************************************* * * FUNCTION: AcpiUtInitStackPtrTrace * * PARAMETERS: None * * RETURN: None * * DESCRIPTION: Save the current CPU stack pointer at subsystem startup * ******************************************************************************/ void AcpiUtInitStackPtrTrace ( void) { ACPI_SIZE CurrentSp; AcpiGbl_EntryStackPointer = &CurrentSp; } /******************************************************************************* * * FUNCTION: AcpiUtTrackStackPtr * * PARAMETERS: None * * RETURN: None * * DESCRIPTION: Save the current CPU stack pointer * ******************************************************************************/ void AcpiUtTrackStackPtr ( void) { ACPI_SIZE CurrentSp; if (&CurrentSp < AcpiGbl_LowestStackPointer) { AcpiGbl_LowestStackPointer = &CurrentSp; } if (AcpiGbl_NestingLevel > AcpiGbl_DeepestNesting) { AcpiGbl_DeepestNesting = AcpiGbl_NestingLevel; } } /******************************************************************************* * * FUNCTION: AcpiUtTrimFunctionName * * PARAMETERS: FunctionName - Ascii string containing a procedure name * * RETURN: Updated pointer to the function name * * DESCRIPTION: Remove the "Acpi" prefix from the function name, if present. * This allows compiler macros such as __FUNCTION__ to be used * with no change to the debug output. * ******************************************************************************/ static const char * AcpiUtTrimFunctionName ( const char *FunctionName) { /* All Function names are longer than 4 chars, check is safe */ if (*(ACPI_CAST_PTR (UINT32, FunctionName)) == ACPI_PREFIX_MIXED) { /* This is the case where the original source has not been modified */ return (FunctionName + 4); } if (*(ACPI_CAST_PTR (UINT32, FunctionName)) == ACPI_PREFIX_LOWER) { /* This is the case where the source has been 'linuxized' */ return (FunctionName + 5); } return (FunctionName); } /******************************************************************************* * * FUNCTION: AcpiDebugPrint * * PARAMETERS: RequestedDebugLevel - Requested debug print level * LineNumber - Caller's line number (for error output) * FunctionName - Caller's procedure name * ModuleName - Caller's module name * ComponentId - Caller's component ID * Format - Printf format field * ... - Optional printf arguments * * RETURN: None * * DESCRIPTION: Print error message with prefix consisting of the module name, * line number, and component ID. * ******************************************************************************/ void ACPI_INTERNAL_VAR_XFACE AcpiDebugPrint ( UINT32 RequestedDebugLevel, UINT32 LineNumber, const char *FunctionName, const char *ModuleName, UINT32 ComponentId, const char *Format, ...) { ACPI_THREAD_ID ThreadId; va_list args; /* Check if debug output enabled */ if (!ACPI_IS_DEBUG_ENABLED (RequestedDebugLevel, ComponentId)) { return; } /* * Thread tracking and context switch notification */ ThreadId = AcpiOsGetThreadId (); if (ThreadId != AcpiGbl_PrevThreadId) { if (ACPI_LV_THREADS & AcpiDbgLevel) { AcpiOsPrintf ( "\n**** Context Switch from TID %u to TID %u ****\n\n", (UINT32) AcpiGbl_PrevThreadId, (UINT32) ThreadId); } AcpiGbl_PrevThreadId = ThreadId; AcpiGbl_NestingLevel = 0; } /* * Display the module name, current line number, thread ID (if requested), * current procedure nesting level, and the current procedure name */ AcpiOsPrintf ("%9s-%04ld ", ModuleName, LineNumber); #ifdef ACPI_APPLICATION /* * For AcpiExec/iASL only, emit the thread ID and nesting level. * Note: nesting level is really only useful during a single-thread * execution. Otherwise, multiple threads will keep resetting the * level. */ if (ACPI_LV_THREADS & AcpiDbgLevel) { AcpiOsPrintf ("[%u] ", (UINT32) ThreadId); } AcpiOsPrintf ("[%02ld] ", AcpiGbl_NestingLevel); #endif AcpiOsPrintf ("%-22.22s: ", AcpiUtTrimFunctionName (FunctionName)); va_start (args, Format); AcpiOsVprintf (Format, args); va_end (args); } ACPI_EXPORT_SYMBOL (AcpiDebugPrint) /******************************************************************************* * * FUNCTION: AcpiDebugPrintRaw * * PARAMETERS: RequestedDebugLevel - Requested debug print level * LineNumber - Caller's line number * FunctionName - Caller's procedure name * ModuleName - Caller's module name * ComponentId - Caller's component ID * Format - Printf format field * ... - Optional printf arguments * * RETURN: None * * DESCRIPTION: Print message with no headers. Has same interface as * DebugPrint so that the same macros can be used. * ******************************************************************************/ void ACPI_INTERNAL_VAR_XFACE AcpiDebugPrintRaw ( UINT32 RequestedDebugLevel, UINT32 LineNumber, const char *FunctionName, const char *ModuleName, UINT32 ComponentId, const char *Format, ...) { va_list args; /* Check if debug output enabled */ if (!ACPI_IS_DEBUG_ENABLED (RequestedDebugLevel, ComponentId)) { return; } va_start (args, Format); AcpiOsVprintf (Format, args); va_end (args); } ACPI_EXPORT_SYMBOL (AcpiDebugPrintRaw) /******************************************************************************* * * FUNCTION: AcpiUtTrace * * PARAMETERS: LineNumber - Caller's line number * FunctionName - Caller's procedure name * ModuleName - Caller's module name * ComponentId - Caller's component ID * * RETURN: None * * DESCRIPTION: Function entry trace. Prints only if TRACE_FUNCTIONS bit is * set in DebugLevel * ******************************************************************************/ void AcpiUtTrace ( UINT32 LineNumber, const char *FunctionName, const char *ModuleName, UINT32 ComponentId) { AcpiGbl_NestingLevel++; AcpiUtTrackStackPtr (); /* Check if enabled up-front for performance */ if (ACPI_IS_DEBUG_ENABLED (ACPI_LV_FUNCTIONS, ComponentId)) { AcpiDebugPrint (ACPI_LV_FUNCTIONS, LineNumber, FunctionName, ModuleName, ComponentId, "%s\n", AcpiGbl_FnEntryStr); } } ACPI_EXPORT_SYMBOL (AcpiUtTrace) /******************************************************************************* * * FUNCTION: AcpiUtTracePtr * * PARAMETERS: LineNumber - Caller's line number * FunctionName - Caller's procedure name * ModuleName - Caller's module name * ComponentId - Caller's component ID * Pointer - Pointer to display * * RETURN: None * * DESCRIPTION: Function entry trace. Prints only if TRACE_FUNCTIONS bit is * set in DebugLevel * ******************************************************************************/ void AcpiUtTracePtr ( UINT32 LineNumber, const char *FunctionName, const char *ModuleName, UINT32 ComponentId, void *Pointer) { AcpiGbl_NestingLevel++; AcpiUtTrackStackPtr (); /* Check if enabled up-front for performance */ if (ACPI_IS_DEBUG_ENABLED (ACPI_LV_FUNCTIONS, ComponentId)) { AcpiDebugPrint (ACPI_LV_FUNCTIONS, LineNumber, FunctionName, ModuleName, ComponentId, "%s %p\n", AcpiGbl_FnEntryStr, Pointer); } } /******************************************************************************* * * FUNCTION: AcpiUtTraceStr * * PARAMETERS: LineNumber - Caller's line number * FunctionName - Caller's procedure name * ModuleName - Caller's module name * ComponentId - Caller's component ID * String - Additional string to display * * RETURN: None * * DESCRIPTION: Function entry trace. Prints only if TRACE_FUNCTIONS bit is * set in DebugLevel * ******************************************************************************/ void AcpiUtTraceStr ( UINT32 LineNumber, const char *FunctionName, const char *ModuleName, UINT32 ComponentId, char *String) { AcpiGbl_NestingLevel++; AcpiUtTrackStackPtr (); /* Check if enabled up-front for performance */ if (ACPI_IS_DEBUG_ENABLED (ACPI_LV_FUNCTIONS, ComponentId)) { AcpiDebugPrint (ACPI_LV_FUNCTIONS, LineNumber, FunctionName, ModuleName, ComponentId, "%s %s\n", AcpiGbl_FnEntryStr, String); } } /******************************************************************************* * * FUNCTION: AcpiUtTraceU32 * * PARAMETERS: LineNumber - Caller's line number * FunctionName - Caller's procedure name * ModuleName - Caller's module name * ComponentId - Caller's component ID * Integer - Integer to display * * RETURN: None * * DESCRIPTION: Function entry trace. Prints only if TRACE_FUNCTIONS bit is * set in DebugLevel * ******************************************************************************/ void AcpiUtTraceU32 ( UINT32 LineNumber, const char *FunctionName, const char *ModuleName, UINT32 ComponentId, UINT32 Integer) { AcpiGbl_NestingLevel++; AcpiUtTrackStackPtr (); /* Check if enabled up-front for performance */ if (ACPI_IS_DEBUG_ENABLED (ACPI_LV_FUNCTIONS, ComponentId)) { AcpiDebugPrint (ACPI_LV_FUNCTIONS, LineNumber, FunctionName, ModuleName, ComponentId, "%s %08X\n", AcpiGbl_FnEntryStr, Integer); } } /******************************************************************************* * * FUNCTION: AcpiUtExit * * PARAMETERS: LineNumber - Caller's line number * FunctionName - Caller's procedure name * ModuleName - Caller's module name * ComponentId - Caller's component ID * * RETURN: None * * DESCRIPTION: Function exit trace. Prints only if TRACE_FUNCTIONS bit is * set in DebugLevel * ******************************************************************************/ void AcpiUtExit ( UINT32 LineNumber, const char *FunctionName, const char *ModuleName, UINT32 ComponentId) { /* Check if enabled up-front for performance */ if (ACPI_IS_DEBUG_ENABLED (ACPI_LV_FUNCTIONS, ComponentId)) { AcpiDebugPrint (ACPI_LV_FUNCTIONS, LineNumber, FunctionName, ModuleName, ComponentId, "%s\n", AcpiGbl_FnExitStr); } if (AcpiGbl_NestingLevel) { AcpiGbl_NestingLevel--; } } ACPI_EXPORT_SYMBOL (AcpiUtExit) /******************************************************************************* * * FUNCTION: AcpiUtStatusExit * * PARAMETERS: LineNumber - Caller's line number * FunctionName - Caller's procedure name * ModuleName - Caller's module name * ComponentId - Caller's component ID * Status - Exit status code * * RETURN: None * * DESCRIPTION: Function exit trace. Prints only if TRACE_FUNCTIONS bit is * set in DebugLevel. Prints exit status also. * ******************************************************************************/ void AcpiUtStatusExit ( UINT32 LineNumber, const char *FunctionName, const char *ModuleName, UINT32 ComponentId, ACPI_STATUS Status) { /* Check if enabled up-front for performance */ if (ACPI_IS_DEBUG_ENABLED (ACPI_LV_FUNCTIONS, ComponentId)) { if (ACPI_SUCCESS (Status)) { AcpiDebugPrint (ACPI_LV_FUNCTIONS, LineNumber, FunctionName, ModuleName, ComponentId, "%s %s\n", AcpiGbl_FnExitStr, AcpiFormatException (Status)); } else { AcpiDebugPrint (ACPI_LV_FUNCTIONS, LineNumber, FunctionName, ModuleName, ComponentId, "%s ****Exception****: %s\n", AcpiGbl_FnExitStr, AcpiFormatException (Status)); } } if (AcpiGbl_NestingLevel) { AcpiGbl_NestingLevel--; } } ACPI_EXPORT_SYMBOL (AcpiUtStatusExit) /******************************************************************************* * * FUNCTION: AcpiUtValueExit * * PARAMETERS: LineNumber - Caller's line number * FunctionName - Caller's procedure name * ModuleName - Caller's module name * ComponentId - Caller's component ID * Value - Value to be printed with exit msg * * RETURN: None * * DESCRIPTION: Function exit trace. Prints only if TRACE_FUNCTIONS bit is * set in DebugLevel. Prints exit value also. * ******************************************************************************/ void AcpiUtValueExit ( UINT32 LineNumber, const char *FunctionName, const char *ModuleName, UINT32 ComponentId, UINT64 Value) { /* Check if enabled up-front for performance */ if (ACPI_IS_DEBUG_ENABLED (ACPI_LV_FUNCTIONS, ComponentId)) { AcpiDebugPrint (ACPI_LV_FUNCTIONS, LineNumber, FunctionName, ModuleName, ComponentId, "%s %8.8X%8.8X\n", AcpiGbl_FnExitStr, ACPI_FORMAT_UINT64 (Value)); } if (AcpiGbl_NestingLevel) { AcpiGbl_NestingLevel--; } } ACPI_EXPORT_SYMBOL (AcpiUtValueExit) /******************************************************************************* * * FUNCTION: AcpiUtPtrExit * * PARAMETERS: LineNumber - Caller's line number * FunctionName - Caller's procedure name * ModuleName - Caller's module name * ComponentId - Caller's component ID * Ptr - Pointer to display * * RETURN: None * * DESCRIPTION: Function exit trace. Prints only if TRACE_FUNCTIONS bit is * set in DebugLevel. Prints exit value also. * ******************************************************************************/ void AcpiUtPtrExit ( UINT32 LineNumber, const char *FunctionName, const char *ModuleName, UINT32 ComponentId, UINT8 *Ptr) { /* Check if enabled up-front for performance */ if (ACPI_IS_DEBUG_ENABLED (ACPI_LV_FUNCTIONS, ComponentId)) { AcpiDebugPrint (ACPI_LV_FUNCTIONS, LineNumber, FunctionName, ModuleName, ComponentId, "%s %p\n", AcpiGbl_FnExitStr, Ptr); } if (AcpiGbl_NestingLevel) { AcpiGbl_NestingLevel--; } } #endif src/acpica/source/components/utilities/utdecode.c000066400000000000000000000531041231470457100225340ustar00rootroot00000000000000/****************************************************************************** * * Module Name: utdecode - Utility decoding routines (value-to-string) * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #define __UTDECODE_C__ #include "acpi.h" #include "accommon.h" #include "acnamesp.h" #define _COMPONENT ACPI_UTILITIES ACPI_MODULE_NAME ("utdecode") /* * Properties of the ACPI Object Types, both internal and external. * The table is indexed by values of ACPI_OBJECT_TYPE */ const UINT8 AcpiGbl_NsProperties[ACPI_NUM_NS_TYPES] = { ACPI_NS_NORMAL, /* 00 Any */ ACPI_NS_NORMAL, /* 01 Number */ ACPI_NS_NORMAL, /* 02 String */ ACPI_NS_NORMAL, /* 03 Buffer */ ACPI_NS_NORMAL, /* 04 Package */ ACPI_NS_NORMAL, /* 05 FieldUnit */ ACPI_NS_NEWSCOPE, /* 06 Device */ ACPI_NS_NORMAL, /* 07 Event */ ACPI_NS_NEWSCOPE, /* 08 Method */ ACPI_NS_NORMAL, /* 09 Mutex */ ACPI_NS_NORMAL, /* 10 Region */ ACPI_NS_NEWSCOPE, /* 11 Power */ ACPI_NS_NEWSCOPE, /* 12 Processor */ ACPI_NS_NEWSCOPE, /* 13 Thermal */ ACPI_NS_NORMAL, /* 14 BufferField */ ACPI_NS_NORMAL, /* 15 DdbHandle */ ACPI_NS_NORMAL, /* 16 Debug Object */ ACPI_NS_NORMAL, /* 17 DefField */ ACPI_NS_NORMAL, /* 18 BankField */ ACPI_NS_NORMAL, /* 19 IndexField */ ACPI_NS_NORMAL, /* 20 Reference */ ACPI_NS_NORMAL, /* 21 Alias */ ACPI_NS_NORMAL, /* 22 MethodAlias */ ACPI_NS_NORMAL, /* 23 Notify */ ACPI_NS_NORMAL, /* 24 Address Handler */ ACPI_NS_NEWSCOPE | ACPI_NS_LOCAL, /* 25 Resource Desc */ ACPI_NS_NEWSCOPE | ACPI_NS_LOCAL, /* 26 Resource Field */ ACPI_NS_NEWSCOPE, /* 27 Scope */ ACPI_NS_NORMAL, /* 28 Extra */ ACPI_NS_NORMAL, /* 29 Data */ ACPI_NS_NORMAL /* 30 Invalid */ }; /******************************************************************************* * * FUNCTION: AcpiUtHexToAsciiChar * * PARAMETERS: Integer - Contains the hex digit * Position - bit position of the digit within the * integer (multiple of 4) * * RETURN: The converted Ascii character * * DESCRIPTION: Convert a hex digit to an Ascii character * ******************************************************************************/ /* Hex to ASCII conversion table */ static const char AcpiGbl_HexToAscii[] = { '0','1','2','3','4','5','6','7', '8','9','A','B','C','D','E','F' }; char AcpiUtHexToAsciiChar ( UINT64 Integer, UINT32 Position) { return (AcpiGbl_HexToAscii[(Integer >> Position) & 0xF]); } /******************************************************************************* * * FUNCTION: AcpiUtGetRegionName * * PARAMETERS: Space ID - ID for the region * * RETURN: Decoded region SpaceId name * * DESCRIPTION: Translate a Space ID into a name string (Debug only) * ******************************************************************************/ /* Region type decoding */ const char *AcpiGbl_RegionTypes[ACPI_NUM_PREDEFINED_REGIONS] = { "SystemMemory", /* 0x00 */ "SystemIO", /* 0x01 */ "PCI_Config", /* 0x02 */ "EmbeddedControl", /* 0x03 */ "SMBus", /* 0x04 */ "SystemCMOS", /* 0x05 */ "PCIBARTarget", /* 0x06 */ "IPMI", /* 0x07 */ "GeneralPurposeIo", /* 0x08 */ "GenericSerialBus", /* 0x09 */ "PCC" /* 0x0A */ }; char * AcpiUtGetRegionName ( UINT8 SpaceId) { if (SpaceId >= ACPI_USER_REGION_BEGIN) { return ("UserDefinedRegion"); } else if (SpaceId == ACPI_ADR_SPACE_DATA_TABLE) { return ("DataTable"); } else if (SpaceId == ACPI_ADR_SPACE_FIXED_HARDWARE) { return ("FunctionalFixedHW"); } else if (SpaceId >= ACPI_NUM_PREDEFINED_REGIONS) { return ("InvalidSpaceId"); } return (ACPI_CAST_PTR (char, AcpiGbl_RegionTypes[SpaceId])); } /******************************************************************************* * * FUNCTION: AcpiUtGetEventName * * PARAMETERS: EventId - Fixed event ID * * RETURN: Decoded event ID name * * DESCRIPTION: Translate a Event ID into a name string (Debug only) * ******************************************************************************/ /* Event type decoding */ static const char *AcpiGbl_EventTypes[ACPI_NUM_FIXED_EVENTS] = { "PM_Timer", "GlobalLock", "PowerButton", "SleepButton", "RealTimeClock", }; char * AcpiUtGetEventName ( UINT32 EventId) { if (EventId > ACPI_EVENT_MAX) { return ("InvalidEventID"); } return (ACPI_CAST_PTR (char, AcpiGbl_EventTypes[EventId])); } /******************************************************************************* * * FUNCTION: AcpiUtGetTypeName * * PARAMETERS: Type - An ACPI object type * * RETURN: Decoded ACPI object type name * * DESCRIPTION: Translate a Type ID into a name string (Debug only) * ******************************************************************************/ /* * Elements of AcpiGbl_NsTypeNames below must match * one-to-one with values of ACPI_OBJECT_TYPE * * The type ACPI_TYPE_ANY (Untyped) is used as a "don't care" when searching; * when stored in a table it really means that we have thus far seen no * evidence to indicate what type is actually going to be stored for this entry. */ static const char AcpiGbl_BadType[] = "UNDEFINED"; /* Printable names of the ACPI object types */ static const char *AcpiGbl_NsTypeNames[] = { /* 00 */ "Untyped", /* 01 */ "Integer", /* 02 */ "String", /* 03 */ "Buffer", /* 04 */ "Package", /* 05 */ "FieldUnit", /* 06 */ "Device", /* 07 */ "Event", /* 08 */ "Method", /* 09 */ "Mutex", /* 10 */ "Region", /* 11 */ "Power", /* 12 */ "Processor", /* 13 */ "Thermal", /* 14 */ "BufferField", /* 15 */ "DdbHandle", /* 16 */ "DebugObject", /* 17 */ "RegionField", /* 18 */ "BankField", /* 19 */ "IndexField", /* 20 */ "Reference", /* 21 */ "Alias", /* 22 */ "MethodAlias", /* 23 */ "Notify", /* 24 */ "AddrHandler", /* 25 */ "ResourceDesc", /* 26 */ "ResourceFld", /* 27 */ "Scope", /* 28 */ "Extra", /* 29 */ "Data", /* 30 */ "Invalid" }; char * AcpiUtGetTypeName ( ACPI_OBJECT_TYPE Type) { if (Type > ACPI_TYPE_INVALID) { return (ACPI_CAST_PTR (char, AcpiGbl_BadType)); } return (ACPI_CAST_PTR (char, AcpiGbl_NsTypeNames[Type])); } char * AcpiUtGetObjectTypeName ( ACPI_OPERAND_OBJECT *ObjDesc) { if (!ObjDesc) { return ("[NULL Object Descriptor]"); } return (AcpiUtGetTypeName (ObjDesc->Common.Type)); } /******************************************************************************* * * FUNCTION: AcpiUtGetNodeName * * PARAMETERS: Object - A namespace node * * RETURN: ASCII name of the node * * DESCRIPTION: Validate the node and return the node's ACPI name. * ******************************************************************************/ char * AcpiUtGetNodeName ( void *Object) { ACPI_NAMESPACE_NODE *Node = (ACPI_NAMESPACE_NODE *) Object; /* Must return a string of exactly 4 characters == ACPI_NAME_SIZE */ if (!Object) { return ("NULL"); } /* Check for Root node */ if ((Object == ACPI_ROOT_OBJECT) || (Object == AcpiGbl_RootNode)) { return ("\"\\\" "); } /* Descriptor must be a namespace node */ if (ACPI_GET_DESCRIPTOR_TYPE (Node) != ACPI_DESC_TYPE_NAMED) { return ("####"); } /* * Ensure name is valid. The name was validated/repaired when the node * was created, but make sure it has not been corrupted. */ AcpiUtRepairName (Node->Name.Ascii); /* Return the name */ return (Node->Name.Ascii); } /******************************************************************************* * * FUNCTION: AcpiUtGetDescriptorName * * PARAMETERS: Object - An ACPI object * * RETURN: Decoded name of the descriptor type * * DESCRIPTION: Validate object and return the descriptor type * ******************************************************************************/ /* Printable names of object descriptor types */ static const char *AcpiGbl_DescTypeNames[] = { /* 00 */ "Not a Descriptor", /* 01 */ "Cached", /* 02 */ "State-Generic", /* 03 */ "State-Update", /* 04 */ "State-Package", /* 05 */ "State-Control", /* 06 */ "State-RootParseScope", /* 07 */ "State-ParseScope", /* 08 */ "State-WalkScope", /* 09 */ "State-Result", /* 10 */ "State-Notify", /* 11 */ "State-Thread", /* 12 */ "Walk", /* 13 */ "Parser", /* 14 */ "Operand", /* 15 */ "Node" }; char * AcpiUtGetDescriptorName ( void *Object) { if (!Object) { return ("NULL OBJECT"); } if (ACPI_GET_DESCRIPTOR_TYPE (Object) > ACPI_DESC_TYPE_MAX) { return ("Not a Descriptor"); } return (ACPI_CAST_PTR (char, AcpiGbl_DescTypeNames[ACPI_GET_DESCRIPTOR_TYPE (Object)])); } /******************************************************************************* * * FUNCTION: AcpiUtGetReferenceName * * PARAMETERS: Object - An ACPI reference object * * RETURN: Decoded name of the type of reference * * DESCRIPTION: Decode a reference object sub-type to a string. * ******************************************************************************/ /* Printable names of reference object sub-types */ static const char *AcpiGbl_RefClassNames[] = { /* 00 */ "Local", /* 01 */ "Argument", /* 02 */ "RefOf", /* 03 */ "Index", /* 04 */ "DdbHandle", /* 05 */ "Named Object", /* 06 */ "Debug" }; const char * AcpiUtGetReferenceName ( ACPI_OPERAND_OBJECT *Object) { if (!Object) { return ("NULL Object"); } if (ACPI_GET_DESCRIPTOR_TYPE (Object) != ACPI_DESC_TYPE_OPERAND) { return ("Not an Operand object"); } if (Object->Common.Type != ACPI_TYPE_LOCAL_REFERENCE) { return ("Not a Reference object"); } if (Object->Reference.Class > ACPI_REFCLASS_MAX) { return ("Unknown Reference class"); } return (AcpiGbl_RefClassNames[Object->Reference.Class]); } #if defined(ACPI_DEBUG_OUTPUT) || defined(ACPI_DEBUGGER) /* * Strings and procedures used for debug only */ /******************************************************************************* * * FUNCTION: AcpiUtGetMutexName * * PARAMETERS: MutexId - The predefined ID for this mutex. * * RETURN: Decoded name of the internal mutex * * DESCRIPTION: Translate a mutex ID into a name string (Debug only) * ******************************************************************************/ /* Names for internal mutex objects, used for debug output */ static char *AcpiGbl_MutexNames[ACPI_NUM_MUTEX] = { "ACPI_MTX_Interpreter", "ACPI_MTX_Namespace", "ACPI_MTX_Tables", "ACPI_MTX_Events", "ACPI_MTX_Caches", "ACPI_MTX_Memory", "ACPI_MTX_CommandComplete", "ACPI_MTX_CommandReady" }; char * AcpiUtGetMutexName ( UINT32 MutexId) { if (MutexId > ACPI_MAX_MUTEX) { return ("Invalid Mutex ID"); } return (AcpiGbl_MutexNames[MutexId]); } /******************************************************************************* * * FUNCTION: AcpiUtGetNotifyName * * PARAMETERS: NotifyValue - Value from the Notify() request * * RETURN: Decoded name for the notify value * * DESCRIPTION: Translate a Notify Value to a notify namestring. * ******************************************************************************/ /* Names for Notify() values, used for debug output */ static const char *AcpiGbl_GenericNotify[ACPI_NOTIFY_MAX + 1] = { /* 00 */ "Bus Check", /* 01 */ "Device Check", /* 02 */ "Device Wake", /* 03 */ "Eject Request", /* 04 */ "Device Check Light", /* 05 */ "Frequency Mismatch", /* 06 */ "Bus Mode Mismatch", /* 07 */ "Power Fault", /* 08 */ "Capabilities Check", /* 09 */ "Device PLD Check", /* 0A */ "Reserved", /* 0B */ "System Locality Update", /* 0C */ "Shutdown Request" }; static const char *AcpiGbl_DeviceNotify[4] = { /* 80 */ "Status Change", /* 81 */ "Information Change", /* 82 */ "Device-Specific Change", /* 83 */ "Device-Specific Change" }; static const char *AcpiGbl_ProcessorNotify[4] = { /* 80 */ "Performance Capability Change", /* 81 */ "C-State Change", /* 82 */ "Throttling Capability Change", /* 83 */ "Device-Specific Change" }; static const char *AcpiGbl_ThermalNotify[4] = { /* 80 */ "Thermal Status Change", /* 81 */ "Thermal Trip Point Change", /* 82 */ "Thermal Device List Change", /* 83 */ "Thermal Relationship Change" }; const char * AcpiUtGetNotifyName ( UINT32 NotifyValue, ACPI_OBJECT_TYPE Type) { /* 00 - 0C are common to all object types */ if (NotifyValue <= ACPI_NOTIFY_MAX) { return (AcpiGbl_GenericNotify[NotifyValue]); } /* 0D - 7F are reserved */ if (NotifyValue <= ACPI_MAX_SYS_NOTIFY) { return ("Reserved"); } /* 80 - 83 are per-object-type */ if (NotifyValue <= 0x83) { switch (Type) { case ACPI_TYPE_ANY: case ACPI_TYPE_DEVICE: return (AcpiGbl_DeviceNotify [NotifyValue - 0x80]); case ACPI_TYPE_PROCESSOR: return (AcpiGbl_ProcessorNotify [NotifyValue - 0x80]); case ACPI_TYPE_THERMAL: return (AcpiGbl_ThermalNotify [NotifyValue - 0x80]); default: return ("Target object type does not support notifies"); } } /* 84 - BF are device-specific */ if (NotifyValue <= ACPI_MAX_DEVICE_SPECIFIC_NOTIFY) { return ("Device-Specific"); } /* C0 and above are hardware-specific */ return ("Hardware-Specific"); } #endif /******************************************************************************* * * FUNCTION: AcpiUtValidObjectType * * PARAMETERS: Type - Object type to be validated * * RETURN: TRUE if valid object type, FALSE otherwise * * DESCRIPTION: Validate an object type * ******************************************************************************/ BOOLEAN AcpiUtValidObjectType ( ACPI_OBJECT_TYPE Type) { if (Type > ACPI_TYPE_LOCAL_MAX) { /* Note: Assumes all TYPEs are contiguous (external/local) */ return (FALSE); } return (TRUE); } src/acpica/source/components/utilities/utdelete.c000066400000000000000000000661741231470457100225660ustar00rootroot00000000000000/******************************************************************************* * * Module Name: utdelete - object deletion and reference count utilities * ******************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #define __UTDELETE_C__ #include "acpi.h" #include "accommon.h" #include "acinterp.h" #include "acnamesp.h" #include "acevents.h" #define _COMPONENT ACPI_UTILITIES ACPI_MODULE_NAME ("utdelete") /* Local prototypes */ static void AcpiUtDeleteInternalObj ( ACPI_OPERAND_OBJECT *Object); static void AcpiUtUpdateRefCount ( ACPI_OPERAND_OBJECT *Object, UINT32 Action); /******************************************************************************* * * FUNCTION: AcpiUtDeleteInternalObj * * PARAMETERS: Object - Object to be deleted * * RETURN: None * * DESCRIPTION: Low level object deletion, after reference counts have been * updated (All reference counts, including sub-objects!) * ******************************************************************************/ static void AcpiUtDeleteInternalObj ( ACPI_OPERAND_OBJECT *Object) { void *ObjPointer = NULL; ACPI_OPERAND_OBJECT *HandlerDesc; ACPI_OPERAND_OBJECT *SecondDesc; ACPI_OPERAND_OBJECT *NextDesc; ACPI_OPERAND_OBJECT *StartDesc; ACPI_OPERAND_OBJECT **LastObjPtr; ACPI_FUNCTION_TRACE_PTR (UtDeleteInternalObj, Object); if (!Object) { return_VOID; } /* * Must delete or free any pointers within the object that are not * actual ACPI objects (for example, a raw buffer pointer). */ switch (Object->Common.Type) { case ACPI_TYPE_STRING: ACPI_DEBUG_PRINT ((ACPI_DB_ALLOCATIONS, "**** String %p, ptr %p\n", Object, Object->String.Pointer)); /* Free the actual string buffer */ if (!(Object->Common.Flags & AOPOBJ_STATIC_POINTER)) { /* But only if it is NOT a pointer into an ACPI table */ ObjPointer = Object->String.Pointer; } break; case ACPI_TYPE_BUFFER: ACPI_DEBUG_PRINT ((ACPI_DB_ALLOCATIONS, "**** Buffer %p, ptr %p\n", Object, Object->Buffer.Pointer)); /* Free the actual buffer */ if (!(Object->Common.Flags & AOPOBJ_STATIC_POINTER)) { /* But only if it is NOT a pointer into an ACPI table */ ObjPointer = Object->Buffer.Pointer; } break; case ACPI_TYPE_PACKAGE: ACPI_DEBUG_PRINT ((ACPI_DB_ALLOCATIONS, " **** Package of count %X\n", Object->Package.Count)); /* * Elements of the package are not handled here, they are deleted * separately */ /* Free the (variable length) element pointer array */ ObjPointer = Object->Package.Elements; break; /* * These objects have a possible list of notify handlers. * Device object also may have a GPE block. */ case ACPI_TYPE_DEVICE: if (Object->Device.GpeBlock) { (void) AcpiEvDeleteGpeBlock (Object->Device.GpeBlock); } /*lint -fallthrough */ case ACPI_TYPE_PROCESSOR: case ACPI_TYPE_THERMAL: /* Walk the address handler list for this object */ HandlerDesc = Object->CommonNotify.Handler; while (HandlerDesc) { NextDesc = HandlerDesc->AddressSpace.Next; AcpiUtRemoveReference (HandlerDesc); HandlerDesc = NextDesc; } break; case ACPI_TYPE_MUTEX: ACPI_DEBUG_PRINT ((ACPI_DB_ALLOCATIONS, "***** Mutex %p, OS Mutex %p\n", Object, Object->Mutex.OsMutex)); if (Object == AcpiGbl_GlobalLockMutex) { /* Global Lock has extra semaphore */ (void) AcpiOsDeleteSemaphore (AcpiGbl_GlobalLockSemaphore); AcpiGbl_GlobalLockSemaphore = NULL; AcpiOsDeleteMutex (Object->Mutex.OsMutex); AcpiGbl_GlobalLockMutex = NULL; } else { AcpiExUnlinkMutex (Object); AcpiOsDeleteMutex (Object->Mutex.OsMutex); } break; case ACPI_TYPE_EVENT: ACPI_DEBUG_PRINT ((ACPI_DB_ALLOCATIONS, "***** Event %p, OS Semaphore %p\n", Object, Object->Event.OsSemaphore)); (void) AcpiOsDeleteSemaphore (Object->Event.OsSemaphore); Object->Event.OsSemaphore = NULL; break; case ACPI_TYPE_METHOD: ACPI_DEBUG_PRINT ((ACPI_DB_ALLOCATIONS, "***** Method %p\n", Object)); /* Delete the method mutex if it exists */ if (Object->Method.Mutex) { AcpiOsDeleteMutex (Object->Method.Mutex->Mutex.OsMutex); AcpiUtDeleteObjectDesc (Object->Method.Mutex); Object->Method.Mutex = NULL; } break; case ACPI_TYPE_REGION: ACPI_DEBUG_PRINT ((ACPI_DB_ALLOCATIONS, "***** Region %p\n", Object)); /* * Update AddressRange list. However, only permanent regions * are installed in this list. (Not created within a method) */ if (!(Object->Region.Node->Flags & ANOBJ_TEMPORARY)) { AcpiUtRemoveAddressRange (Object->Region.SpaceId, Object->Region.Node); } SecondDesc = AcpiNsGetSecondaryObject (Object); if (SecondDesc) { /* * Free the RegionContext if and only if the handler is one of the * default handlers -- and therefore, we created the context object * locally, it was not created by an external caller. */ HandlerDesc = Object->Region.Handler; if (HandlerDesc) { NextDesc = HandlerDesc->AddressSpace.RegionList; StartDesc = NextDesc; LastObjPtr = &HandlerDesc->AddressSpace.RegionList; /* Remove the region object from the handler list */ while (NextDesc) { if (NextDesc == Object) { *LastObjPtr = NextDesc->Region.Next; break; } /* Walk the linked list of handlers */ LastObjPtr = &NextDesc->Region.Next; NextDesc = NextDesc->Region.Next; /* Prevent infinite loop if list is corrupted */ if (NextDesc == StartDesc) { ACPI_ERROR ((AE_INFO, "Circular region list in address handler object %p", HandlerDesc)); return_VOID; } } if (HandlerDesc->AddressSpace.HandlerFlags & ACPI_ADDR_HANDLER_DEFAULT_INSTALLED) { /* Deactivate region and free region context */ if (HandlerDesc->AddressSpace.Setup) { (void) HandlerDesc->AddressSpace.Setup (Object, ACPI_REGION_DEACTIVATE, HandlerDesc->AddressSpace.Context, &SecondDesc->Extra.RegionContext); } } AcpiUtRemoveReference (HandlerDesc); } /* Now we can free the Extra object */ AcpiUtDeleteObjectDesc (SecondDesc); } break; case ACPI_TYPE_BUFFER_FIELD: ACPI_DEBUG_PRINT ((ACPI_DB_ALLOCATIONS, "***** Buffer Field %p\n", Object)); SecondDesc = AcpiNsGetSecondaryObject (Object); if (SecondDesc) { AcpiUtDeleteObjectDesc (SecondDesc); } break; case ACPI_TYPE_LOCAL_BANK_FIELD: ACPI_DEBUG_PRINT ((ACPI_DB_ALLOCATIONS, "***** Bank Field %p\n", Object)); SecondDesc = AcpiNsGetSecondaryObject (Object); if (SecondDesc) { AcpiUtDeleteObjectDesc (SecondDesc); } break; default: break; } /* Free any allocated memory (pointer within the object) found above */ if (ObjPointer) { ACPI_DEBUG_PRINT ((ACPI_DB_ALLOCATIONS, "Deleting Object Subptr %p\n", ObjPointer)); ACPI_FREE (ObjPointer); } /* Now the object can be safely deleted */ ACPI_DEBUG_PRINT ((ACPI_DB_ALLOCATIONS, "Deleting Object %p [%s]\n", Object, AcpiUtGetObjectTypeName (Object))); AcpiUtDeleteObjectDesc (Object); return_VOID; } /******************************************************************************* * * FUNCTION: AcpiUtDeleteInternalObjectList * * PARAMETERS: ObjList - Pointer to the list to be deleted * * RETURN: None * * DESCRIPTION: This function deletes an internal object list, including both * simple objects and package objects * ******************************************************************************/ void AcpiUtDeleteInternalObjectList ( ACPI_OPERAND_OBJECT **ObjList) { ACPI_OPERAND_OBJECT **InternalObj; ACPI_FUNCTION_ENTRY (); /* Walk the null-terminated internal list */ for (InternalObj = ObjList; *InternalObj; InternalObj++) { AcpiUtRemoveReference (*InternalObj); } /* Free the combined parameter pointer list and object array */ ACPI_FREE (ObjList); return; } /******************************************************************************* * * FUNCTION: AcpiUtUpdateRefCount * * PARAMETERS: Object - Object whose ref count is to be updated * Action - What to do (REF_INCREMENT or REF_DECREMENT) * * RETURN: None. Sets new reference count within the object * * DESCRIPTION: Modify the reference count for an internal acpi object * ******************************************************************************/ static void AcpiUtUpdateRefCount ( ACPI_OPERAND_OBJECT *Object, UINT32 Action) { UINT16 OriginalCount; UINT16 NewCount = 0; ACPI_CPU_FLAGS LockFlags; ACPI_FUNCTION_NAME (UtUpdateRefCount); if (!Object) { return; } /* * Always get the reference count lock. Note: Interpreter and/or * Namespace is not always locked when this function is called. */ LockFlags = AcpiOsAcquireLock (AcpiGbl_ReferenceCountLock); OriginalCount = Object->Common.ReferenceCount; /* Perform the reference count action (increment, decrement) */ switch (Action) { case REF_INCREMENT: NewCount = OriginalCount + 1; Object->Common.ReferenceCount = NewCount; AcpiOsReleaseLock (AcpiGbl_ReferenceCountLock, LockFlags); /* The current reference count should never be zero here */ if (!OriginalCount) { ACPI_WARNING ((AE_INFO, "Obj %p, Reference Count was zero before increment\n", Object)); } ACPI_DEBUG_PRINT ((ACPI_DB_ALLOCATIONS, "Obj %p Type %.2X Refs %.2X [Incremented]\n", Object, Object->Common.Type, NewCount)); break; case REF_DECREMENT: /* The current reference count must be non-zero */ if (OriginalCount) { NewCount = OriginalCount - 1; Object->Common.ReferenceCount = NewCount; } AcpiOsReleaseLock (AcpiGbl_ReferenceCountLock, LockFlags); if (!OriginalCount) { ACPI_WARNING ((AE_INFO, "Obj %p, Reference Count is already zero, cannot decrement\n", Object)); } ACPI_DEBUG_PRINT ((ACPI_DB_ALLOCATIONS, "Obj %p Type %.2X Refs %.2X [Decremented]\n", Object, Object->Common.Type, NewCount)); /* Actually delete the object on a reference count of zero */ if (NewCount == 0) { AcpiUtDeleteInternalObj (Object); } break; default: AcpiOsReleaseLock (AcpiGbl_ReferenceCountLock, LockFlags); ACPI_ERROR ((AE_INFO, "Unknown Reference Count action (0x%X)", Action)); return; } /* * Sanity check the reference count, for debug purposes only. * (A deleted object will have a huge reference count) */ if (NewCount > ACPI_MAX_REFERENCE_COUNT) { ACPI_WARNING ((AE_INFO, "Large Reference Count (0x%X) in object %p, Type=0x%.2X", NewCount, Object, Object->Common.Type)); } } /******************************************************************************* * * FUNCTION: AcpiUtUpdateObjectReference * * PARAMETERS: Object - Increment ref count for this object * and all sub-objects * Action - Either REF_INCREMENT or REF_DECREMENT * * RETURN: Status * * DESCRIPTION: Increment the object reference count * * Object references are incremented when: * 1) An object is attached to a Node (namespace object) * 2) An object is copied (all subobjects must be incremented) * * Object references are decremented when: * 1) An object is detached from an Node * ******************************************************************************/ ACPI_STATUS AcpiUtUpdateObjectReference ( ACPI_OPERAND_OBJECT *Object, UINT16 Action) { ACPI_STATUS Status = AE_OK; ACPI_GENERIC_STATE *StateList = NULL; ACPI_OPERAND_OBJECT *NextObject = NULL; ACPI_OPERAND_OBJECT *PrevObject; ACPI_GENERIC_STATE *State; UINT32 i; ACPI_FUNCTION_NAME (UtUpdateObjectReference); while (Object) { /* Make sure that this isn't a namespace handle */ if (ACPI_GET_DESCRIPTOR_TYPE (Object) == ACPI_DESC_TYPE_NAMED) { ACPI_DEBUG_PRINT ((ACPI_DB_ALLOCATIONS, "Object %p is NS handle\n", Object)); return (AE_OK); } /* * All sub-objects must have their reference count incremented also. * Different object types have different subobjects. */ switch (Object->Common.Type) { case ACPI_TYPE_DEVICE: case ACPI_TYPE_PROCESSOR: case ACPI_TYPE_POWER: case ACPI_TYPE_THERMAL: /* * Update the notify objects for these types (if present) * Two lists, system and device notify handlers. */ for (i = 0; i < ACPI_NUM_NOTIFY_TYPES; i++) { PrevObject = Object->CommonNotify.NotifyList[i]; while (PrevObject) { NextObject = PrevObject->Notify.Next[i]; AcpiUtUpdateRefCount (PrevObject, Action); PrevObject = NextObject; } } break; case ACPI_TYPE_PACKAGE: /* * We must update all the sub-objects of the package, * each of whom may have their own sub-objects. */ for (i = 0; i < Object->Package.Count; i++) { /* * Null package elements are legal and can be simply * ignored. */ NextObject = Object->Package.Elements[i]; if (!NextObject) { continue; } switch (NextObject->Common.Type) { case ACPI_TYPE_INTEGER: case ACPI_TYPE_STRING: case ACPI_TYPE_BUFFER: /* * For these very simple sub-objects, we can just * update the reference count here and continue. * Greatly increases performance of this operation. */ AcpiUtUpdateRefCount (NextObject, Action); break; default: /* * For complex sub-objects, push them onto the stack * for later processing (this eliminates recursion.) */ Status = AcpiUtCreateUpdateStateAndPush ( NextObject, Action, &StateList); if (ACPI_FAILURE (Status)) { goto ErrorExit; } break; } } NextObject = NULL; break; case ACPI_TYPE_BUFFER_FIELD: NextObject = Object->BufferField.BufferObj; break; case ACPI_TYPE_LOCAL_REGION_FIELD: NextObject = Object->Field.RegionObj; break; case ACPI_TYPE_LOCAL_BANK_FIELD: NextObject = Object->BankField.BankObj; Status = AcpiUtCreateUpdateStateAndPush ( Object->BankField.RegionObj, Action, &StateList); if (ACPI_FAILURE (Status)) { goto ErrorExit; } break; case ACPI_TYPE_LOCAL_INDEX_FIELD: NextObject = Object->IndexField.IndexObj; Status = AcpiUtCreateUpdateStateAndPush ( Object->IndexField.DataObj, Action, &StateList); if (ACPI_FAILURE (Status)) { goto ErrorExit; } break; case ACPI_TYPE_LOCAL_REFERENCE: /* * The target of an Index (a package, string, or buffer) or a named * reference must track changes to the ref count of the index or * target object. */ if ((Object->Reference.Class == ACPI_REFCLASS_INDEX) || (Object->Reference.Class== ACPI_REFCLASS_NAME)) { NextObject = Object->Reference.Object; } break; case ACPI_TYPE_REGION: default: break; /* No subobjects for all other types */ } /* * Now we can update the count in the main object. This can only * happen after we update the sub-objects in case this causes the * main object to be deleted. */ AcpiUtUpdateRefCount (Object, Action); Object = NULL; /* Move on to the next object to be updated */ if (NextObject) { Object = NextObject; NextObject = NULL; } else if (StateList) { State = AcpiUtPopGenericState (&StateList); Object = State->Update.Object; AcpiUtDeleteGenericState (State); } } return (AE_OK); ErrorExit: ACPI_EXCEPTION ((AE_INFO, Status, "Could not update object reference count")); /* Free any stacked Update State objects */ while (StateList) { State = AcpiUtPopGenericState (&StateList); AcpiUtDeleteGenericState (State); } return (Status); } /******************************************************************************* * * FUNCTION: AcpiUtAddReference * * PARAMETERS: Object - Object whose reference count is to be * incremented * * RETURN: None * * DESCRIPTION: Add one reference to an ACPI object * ******************************************************************************/ void AcpiUtAddReference ( ACPI_OPERAND_OBJECT *Object) { ACPI_FUNCTION_NAME (UtAddReference); /* Ensure that we have a valid object */ if (!AcpiUtValidInternalObject (Object)) { return; } ACPI_DEBUG_PRINT ((ACPI_DB_ALLOCATIONS, "Obj %p Current Refs=%X [To Be Incremented]\n", Object, Object->Common.ReferenceCount)); /* Increment the reference count */ (void) AcpiUtUpdateObjectReference (Object, REF_INCREMENT); return; } /******************************************************************************* * * FUNCTION: AcpiUtRemoveReference * * PARAMETERS: Object - Object whose ref count will be decremented * * RETURN: None * * DESCRIPTION: Decrement the reference count of an ACPI internal object * ******************************************************************************/ void AcpiUtRemoveReference ( ACPI_OPERAND_OBJECT *Object) { ACPI_FUNCTION_NAME (UtRemoveReference); /* * Allow a NULL pointer to be passed in, just ignore it. This saves * each caller from having to check. Also, ignore NS nodes. */ if (!Object || (ACPI_GET_DESCRIPTOR_TYPE (Object) == ACPI_DESC_TYPE_NAMED)) { return; } /* Ensure that we have a valid object */ if (!AcpiUtValidInternalObject (Object)) { return; } ACPI_DEBUG_PRINT ((ACPI_DB_ALLOCATIONS, "Obj %p Current Refs=%X [To Be Decremented]\n", Object, Object->Common.ReferenceCount)); /* * Decrement the reference count, and only actually delete the object * if the reference count becomes 0. (Must also decrement the ref count * of all subobjects!) */ (void) AcpiUtUpdateObjectReference (Object, REF_DECREMENT); return; } src/acpica/source/components/utilities/uterror.c000066400000000000000000000347701231470457100224520ustar00rootroot00000000000000/******************************************************************************* * * Module Name: uterror - Various internal error/warning output functions * ******************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #define __UTERROR_C__ #include "acpi.h" #include "accommon.h" #include "acnamesp.h" #define _COMPONENT ACPI_UTILITIES ACPI_MODULE_NAME ("uterror") /* * This module contains internal error functions that may * be configured out. */ #if !defined (ACPI_NO_ERROR_MESSAGES) /******************************************************************************* * * FUNCTION: AcpiUtPredefinedWarning * * PARAMETERS: ModuleName - Caller's module name (for error output) * LineNumber - Caller's line number (for error output) * Pathname - Full pathname to the node * NodeFlags - From Namespace node for the method/object * Format - Printf format string + additional args * * RETURN: None * * DESCRIPTION: Warnings for the predefined validation module. Messages are * only emitted the first time a problem with a particular * method/object is detected. This prevents a flood of error * messages for methods that are repeatedly evaluated. * ******************************************************************************/ void ACPI_INTERNAL_VAR_XFACE AcpiUtPredefinedWarning ( const char *ModuleName, UINT32 LineNumber, char *Pathname, UINT8 NodeFlags, const char *Format, ...) { va_list ArgList; /* * Warning messages for this method/object will be disabled after the * first time a validation fails or an object is successfully repaired. */ if (NodeFlags & ANOBJ_EVALUATED) { return; } AcpiOsPrintf (ACPI_MSG_WARNING "%s: ", Pathname); va_start (ArgList, Format); AcpiOsVprintf (Format, ArgList); ACPI_MSG_SUFFIX; va_end (ArgList); } /******************************************************************************* * * FUNCTION: AcpiUtPredefinedInfo * * PARAMETERS: ModuleName - Caller's module name (for error output) * LineNumber - Caller's line number (for error output) * Pathname - Full pathname to the node * NodeFlags - From Namespace node for the method/object * Format - Printf format string + additional args * * RETURN: None * * DESCRIPTION: Info messages for the predefined validation module. Messages * are only emitted the first time a problem with a particular * method/object is detected. This prevents a flood of * messages for methods that are repeatedly evaluated. * ******************************************************************************/ void ACPI_INTERNAL_VAR_XFACE AcpiUtPredefinedInfo ( const char *ModuleName, UINT32 LineNumber, char *Pathname, UINT8 NodeFlags, const char *Format, ...) { va_list ArgList; /* * Warning messages for this method/object will be disabled after the * first time a validation fails or an object is successfully repaired. */ if (NodeFlags & ANOBJ_EVALUATED) { return; } AcpiOsPrintf (ACPI_MSG_INFO "%s: ", Pathname); va_start (ArgList, Format); AcpiOsVprintf (Format, ArgList); ACPI_MSG_SUFFIX; va_end (ArgList); } /******************************************************************************* * * FUNCTION: AcpiUtPredefinedBiosError * * PARAMETERS: ModuleName - Caller's module name (for error output) * LineNumber - Caller's line number (for error output) * Pathname - Full pathname to the node * NodeFlags - From Namespace node for the method/object * Format - Printf format string + additional args * * RETURN: None * * DESCRIPTION: BIOS error message for predefined names. Messages * are only emitted the first time a problem with a particular * method/object is detected. This prevents a flood of * messages for methods that are repeatedly evaluated. * ******************************************************************************/ void ACPI_INTERNAL_VAR_XFACE AcpiUtPredefinedBiosError ( const char *ModuleName, UINT32 LineNumber, char *Pathname, UINT8 NodeFlags, const char *Format, ...) { va_list ArgList; /* * Warning messages for this method/object will be disabled after the * first time a validation fails or an object is successfully repaired. */ if (NodeFlags & ANOBJ_EVALUATED) { return; } AcpiOsPrintf (ACPI_MSG_BIOS_ERROR "%s: ", Pathname); va_start (ArgList, Format); AcpiOsVprintf (Format, ArgList); ACPI_MSG_SUFFIX; va_end (ArgList); } /******************************************************************************* * * FUNCTION: AcpiUtNamespaceError * * PARAMETERS: ModuleName - Caller's module name (for error output) * LineNumber - Caller's line number (for error output) * InternalName - Name or path of the namespace node * LookupStatus - Exception code from NS lookup * * RETURN: None * * DESCRIPTION: Print error message with the full pathname for the NS node. * ******************************************************************************/ void AcpiUtNamespaceError ( const char *ModuleName, UINT32 LineNumber, const char *InternalName, ACPI_STATUS LookupStatus) { ACPI_STATUS Status; UINT32 BadName; char *Name = NULL; ACPI_MSG_REDIRECT_BEGIN; AcpiOsPrintf (ACPI_MSG_ERROR); if (LookupStatus == AE_BAD_CHARACTER) { /* There is a non-ascii character in the name */ ACPI_MOVE_32_TO_32 (&BadName, ACPI_CAST_PTR (UINT32, InternalName)); AcpiOsPrintf ("[0x%.8X] (NON-ASCII)", BadName); } else { /* Convert path to external format */ Status = AcpiNsExternalizeName (ACPI_UINT32_MAX, InternalName, NULL, &Name); /* Print target name */ if (ACPI_SUCCESS (Status)) { AcpiOsPrintf ("[%s]", Name); } else { AcpiOsPrintf ("[COULD NOT EXTERNALIZE NAME]"); } if (Name) { ACPI_FREE (Name); } } AcpiOsPrintf (" Namespace lookup failure, %s", AcpiFormatException (LookupStatus)); ACPI_MSG_SUFFIX; ACPI_MSG_REDIRECT_END; } /******************************************************************************* * * FUNCTION: AcpiUtMethodError * * PARAMETERS: ModuleName - Caller's module name (for error output) * LineNumber - Caller's line number (for error output) * Message - Error message to use on failure * PrefixNode - Prefix relative to the path * Path - Path to the node (optional) * MethodStatus - Execution status * * RETURN: None * * DESCRIPTION: Print error message with the full pathname for the method. * ******************************************************************************/ void AcpiUtMethodError ( const char *ModuleName, UINT32 LineNumber, const char *Message, ACPI_NAMESPACE_NODE *PrefixNode, const char *Path, ACPI_STATUS MethodStatus) { ACPI_STATUS Status; ACPI_NAMESPACE_NODE *Node = PrefixNode; ACPI_MSG_REDIRECT_BEGIN; AcpiOsPrintf (ACPI_MSG_ERROR); if (Path) { Status = AcpiNsGetNode (PrefixNode, Path, ACPI_NS_NO_UPSEARCH, &Node); if (ACPI_FAILURE (Status)) { AcpiOsPrintf ("[Could not get node by pathname]"); } } AcpiNsPrintNodePathname (Node, Message); AcpiOsPrintf (", %s", AcpiFormatException (MethodStatus)); ACPI_MSG_SUFFIX; ACPI_MSG_REDIRECT_END; } #endif /* ACPI_NO_ERROR_MESSAGES */ src/acpica/source/components/utilities/uteval.c000066400000000000000000000363641231470457100222510ustar00rootroot00000000000000/****************************************************************************** * * Module Name: uteval - Object evaluation * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #define __UTEVAL_C__ #include "acpi.h" #include "accommon.h" #include "acnamesp.h" #define _COMPONENT ACPI_UTILITIES ACPI_MODULE_NAME ("uteval") /******************************************************************************* * * FUNCTION: AcpiUtEvaluateObject * * PARAMETERS: PrefixNode - Starting node * Path - Path to object from starting node * ExpectedReturnTypes - Bitmap of allowed return types * ReturnDesc - Where a return value is stored * * RETURN: Status * * DESCRIPTION: Evaluates a namespace object and verifies the type of the * return object. Common code that simplifies accessing objects * that have required return objects of fixed types. * * NOTE: Internal function, no parameter validation * ******************************************************************************/ ACPI_STATUS AcpiUtEvaluateObject ( ACPI_NAMESPACE_NODE *PrefixNode, char *Path, UINT32 ExpectedReturnBtypes, ACPI_OPERAND_OBJECT **ReturnDesc) { ACPI_EVALUATE_INFO *Info; ACPI_STATUS Status; UINT32 ReturnBtype; ACPI_FUNCTION_TRACE (UtEvaluateObject); /* Allocate the evaluation information block */ Info = ACPI_ALLOCATE_ZEROED (sizeof (ACPI_EVALUATE_INFO)); if (!Info) { return_ACPI_STATUS (AE_NO_MEMORY); } Info->PrefixNode = PrefixNode; Info->RelativePathname = Path; /* Evaluate the object/method */ Status = AcpiNsEvaluate (Info); if (ACPI_FAILURE (Status)) { if (Status == AE_NOT_FOUND) { ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "[%4.4s.%s] was not found\n", AcpiUtGetNodeName (PrefixNode), Path)); } else { ACPI_ERROR_METHOD ("Method execution failed", PrefixNode, Path, Status); } goto Cleanup; } /* Did we get a return object? */ if (!Info->ReturnObject) { if (ExpectedReturnBtypes) { ACPI_ERROR_METHOD ("No object was returned from", PrefixNode, Path, AE_NOT_EXIST); Status = AE_NOT_EXIST; } goto Cleanup; } /* Map the return object type to the bitmapped type */ switch ((Info->ReturnObject)->Common.Type) { case ACPI_TYPE_INTEGER: ReturnBtype = ACPI_BTYPE_INTEGER; break; case ACPI_TYPE_BUFFER: ReturnBtype = ACPI_BTYPE_BUFFER; break; case ACPI_TYPE_STRING: ReturnBtype = ACPI_BTYPE_STRING; break; case ACPI_TYPE_PACKAGE: ReturnBtype = ACPI_BTYPE_PACKAGE; break; default: ReturnBtype = 0; break; } if ((AcpiGbl_EnableInterpreterSlack) && (!ExpectedReturnBtypes)) { /* * We received a return object, but one was not expected. This can * happen frequently if the "implicit return" feature is enabled. * Just delete the return object and return AE_OK. */ AcpiUtRemoveReference (Info->ReturnObject); goto Cleanup; } /* Is the return object one of the expected types? */ if (!(ExpectedReturnBtypes & ReturnBtype)) { ACPI_ERROR_METHOD ("Return object type is incorrect", PrefixNode, Path, AE_TYPE); ACPI_ERROR ((AE_INFO, "Type returned from %s was incorrect: %s, expected Btypes: 0x%X", Path, AcpiUtGetObjectTypeName (Info->ReturnObject), ExpectedReturnBtypes)); /* On error exit, we must delete the return object */ AcpiUtRemoveReference (Info->ReturnObject); Status = AE_TYPE; goto Cleanup; } /* Object type is OK, return it */ *ReturnDesc = Info->ReturnObject; Cleanup: ACPI_FREE (Info); return_ACPI_STATUS (Status); } /******************************************************************************* * * FUNCTION: AcpiUtEvaluateNumericObject * * PARAMETERS: ObjectName - Object name to be evaluated * DeviceNode - Node for the device * Value - Where the value is returned * * RETURN: Status * * DESCRIPTION: Evaluates a numeric namespace object for a selected device * and stores result in *Value. * * NOTE: Internal function, no parameter validation * ******************************************************************************/ ACPI_STATUS AcpiUtEvaluateNumericObject ( char *ObjectName, ACPI_NAMESPACE_NODE *DeviceNode, UINT64 *Value) { ACPI_OPERAND_OBJECT *ObjDesc; ACPI_STATUS Status; ACPI_FUNCTION_TRACE (UtEvaluateNumericObject); Status = AcpiUtEvaluateObject (DeviceNode, ObjectName, ACPI_BTYPE_INTEGER, &ObjDesc); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } /* Get the returned Integer */ *Value = ObjDesc->Integer.Value; /* On exit, we must delete the return object */ AcpiUtRemoveReference (ObjDesc); return_ACPI_STATUS (Status); } /******************************************************************************* * * FUNCTION: AcpiUtExecute_STA * * PARAMETERS: DeviceNode - Node for the device * Flags - Where the status flags are returned * * RETURN: Status * * DESCRIPTION: Executes _STA for selected device and stores results in * *Flags. If _STA does not exist, then the device is assumed * to be present/functional/enabled (as per the ACPI spec). * * NOTE: Internal function, no parameter validation * ******************************************************************************/ ACPI_STATUS AcpiUtExecute_STA ( ACPI_NAMESPACE_NODE *DeviceNode, UINT32 *Flags) { ACPI_OPERAND_OBJECT *ObjDesc; ACPI_STATUS Status; ACPI_FUNCTION_TRACE (UtExecute_STA); Status = AcpiUtEvaluateObject (DeviceNode, METHOD_NAME__STA, ACPI_BTYPE_INTEGER, &ObjDesc); if (ACPI_FAILURE (Status)) { if (AE_NOT_FOUND == Status) { /* * if _STA does not exist, then (as per the ACPI specification), * the returned flags will indicate that the device is present, * functional, and enabled. */ ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "_STA on %4.4s was not found, assuming device is present\n", AcpiUtGetNodeName (DeviceNode))); *Flags = ACPI_UINT32_MAX; Status = AE_OK; } return_ACPI_STATUS (Status); } /* Extract the status flags */ *Flags = (UINT32) ObjDesc->Integer.Value; /* On exit, we must delete the return object */ AcpiUtRemoveReference (ObjDesc); return_ACPI_STATUS (Status); } /******************************************************************************* * * FUNCTION: AcpiUtExecutePowerMethods * * PARAMETERS: DeviceNode - Node for the device * MethodNames - Array of power method names * MethodCount - Number of methods to execute * OutValues - Where the power method values are returned * * RETURN: Status, OutValues * * DESCRIPTION: Executes the specified power methods for the device and returns * the result(s). * * NOTE: Internal function, no parameter validation * ******************************************************************************/ ACPI_STATUS AcpiUtExecutePowerMethods ( ACPI_NAMESPACE_NODE *DeviceNode, const char **MethodNames, UINT8 MethodCount, UINT8 *OutValues) { ACPI_OPERAND_OBJECT *ObjDesc; ACPI_STATUS Status; ACPI_STATUS FinalStatus = AE_NOT_FOUND; UINT32 i; ACPI_FUNCTION_TRACE (UtExecutePowerMethods); for (i = 0; i < MethodCount; i++) { /* * Execute the power method (_SxD or _SxW). The only allowable * return type is an Integer. */ Status = AcpiUtEvaluateObject (DeviceNode, ACPI_CAST_PTR (char, MethodNames[i]), ACPI_BTYPE_INTEGER, &ObjDesc); if (ACPI_SUCCESS (Status)) { OutValues[i] = (UINT8) ObjDesc->Integer.Value; /* Delete the return object */ AcpiUtRemoveReference (ObjDesc); FinalStatus = AE_OK; /* At least one value is valid */ continue; } OutValues[i] = ACPI_UINT8_MAX; if (Status == AE_NOT_FOUND) { continue; /* Ignore if not found */ } ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Failed %s on Device %4.4s, %s\n", ACPI_CAST_PTR (char, MethodNames[i]), AcpiUtGetNodeName (DeviceNode), AcpiFormatException (Status))); } return_ACPI_STATUS (FinalStatus); } src/acpica/source/components/utilities/utexcep.c000066400000000000000000000224131231470457100224140ustar00rootroot00000000000000/******************************************************************************* * * Module Name: utexcep - Exception code support * ******************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #define __UTEXCEP_C__ #define EXPORT_ACPI_INTERFACES #define ACPI_DEFINE_EXCEPTION_TABLE #include "acpi.h" #include "accommon.h" #define _COMPONENT ACPI_UTILITIES ACPI_MODULE_NAME ("utexcep") /******************************************************************************* * * FUNCTION: AcpiFormatException * * PARAMETERS: Status - The ACPI_STATUS code to be formatted * * RETURN: A string containing the exception text. A valid pointer is * always returned. * * DESCRIPTION: This function translates an ACPI exception into an ASCII * string. Returns "unknown status" string for invalid codes. * ******************************************************************************/ const char * AcpiFormatException ( ACPI_STATUS Status) { const ACPI_EXCEPTION_INFO *Exception; ACPI_FUNCTION_ENTRY (); Exception = AcpiUtValidateException (Status); if (!Exception) { /* Exception code was not recognized */ ACPI_ERROR ((AE_INFO, "Unknown exception code: 0x%8.8X", Status)); return ("UNKNOWN_STATUS_CODE"); } return (Exception->Name); } ACPI_EXPORT_SYMBOL (AcpiFormatException) /******************************************************************************* * * FUNCTION: AcpiUtValidateException * * PARAMETERS: Status - The ACPI_STATUS code to be formatted * * RETURN: A string containing the exception text. NULL if exception is * not valid. * * DESCRIPTION: This function validates and translates an ACPI exception into * an ASCII string. * ******************************************************************************/ const ACPI_EXCEPTION_INFO * AcpiUtValidateException ( ACPI_STATUS Status) { UINT32 SubStatus; const ACPI_EXCEPTION_INFO *Exception = NULL; ACPI_FUNCTION_ENTRY (); /* * Status is composed of two parts, a "type" and an actual code */ SubStatus = (Status & ~AE_CODE_MASK); switch (Status & AE_CODE_MASK) { case AE_CODE_ENVIRONMENTAL: if (SubStatus <= AE_CODE_ENV_MAX) { Exception = &AcpiGbl_ExceptionNames_Env [SubStatus]; } break; case AE_CODE_PROGRAMMER: if (SubStatus <= AE_CODE_PGM_MAX) { Exception = &AcpiGbl_ExceptionNames_Pgm [SubStatus]; } break; case AE_CODE_ACPI_TABLES: if (SubStatus <= AE_CODE_TBL_MAX) { Exception = &AcpiGbl_ExceptionNames_Tbl [SubStatus]; } break; case AE_CODE_AML: if (SubStatus <= AE_CODE_AML_MAX) { Exception = &AcpiGbl_ExceptionNames_Aml [SubStatus]; } break; case AE_CODE_CONTROL: if (SubStatus <= AE_CODE_CTRL_MAX) { Exception = &AcpiGbl_ExceptionNames_Ctrl [SubStatus]; } break; default: break; } if (!Exception || !Exception->Name) { return (NULL); } return (Exception); } src/acpica/source/components/utilities/utglobal.c000066400000000000000000000443251231470457100225560ustar00rootroot00000000000000/****************************************************************************** * * Module Name: utglobal - Global variables for the ACPI subsystem * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #define __UTGLOBAL_C__ #define EXPORT_ACPI_INTERFACES #define DEFINE_ACPI_GLOBALS #include "acpi.h" #include "accommon.h" #define _COMPONENT ACPI_UTILITIES ACPI_MODULE_NAME ("utglobal") /******************************************************************************* * * Static global variable initialization. * ******************************************************************************/ /* Debug output control masks */ #ifdef ACPI_DEBUG_OUTPUT UINT32 AcpiDbgLevel = ACPI_DEBUG_DEFAULT; #else UINT32 AcpiDbgLevel = ACPI_NORMAL_DEFAULT; #endif UINT32 AcpiDbgLayer = ACPI_COMPONENT_DEFAULT; /* AcpiGbl_FADT is a local copy of the FADT, converted to a common format. */ ACPI_TABLE_FADT AcpiGbl_FADT; UINT32 AcpiGbl_TraceFlags; ACPI_NAME AcpiGbl_TraceMethodName; BOOLEAN AcpiGbl_SystemAwakeAndRunning; UINT32 AcpiCurrentGpeCount; /* * ACPI 5.0 introduces the concept of a "reduced hardware platform", meaning * that the ACPI hardware is no longer required. A flag in the FADT indicates * a reduced HW machine, and that flag is duplicated here for convenience. */ BOOLEAN AcpiGbl_ReducedHardware; /* Various state name strings */ const char *AcpiGbl_SleepStateNames[ACPI_S_STATE_COUNT] = { "\\_S0_", "\\_S1_", "\\_S2_", "\\_S3_", "\\_S4_", "\\_S5_" }; const char *AcpiGbl_LowestDstateNames[ACPI_NUM_SxW_METHODS] = { "_S0W", "_S1W", "_S2W", "_S3W", "_S4W" }; const char *AcpiGbl_HighestDstateNames[ACPI_NUM_SxD_METHODS] = { "_S1D", "_S2D", "_S3D", "_S4D" }; /******************************************************************************* * * Namespace globals * ******************************************************************************/ /* * Predefined ACPI Names (Built-in to the Interpreter) * * NOTES: * 1) _SB_ is defined to be a device to allow \_SB_._INI to be run * during the initialization sequence. * 2) _TZ_ is defined to be a thermal zone in order to allow ASL code to * perform a Notify() operation on it. 09/2010: Changed to type Device. * This still allows notifies, but does not confuse host code that * searches for valid ThermalZone objects. */ const ACPI_PREDEFINED_NAMES AcpiGbl_PreDefinedNames[] = { {"_GPE", ACPI_TYPE_LOCAL_SCOPE, NULL}, {"_PR_", ACPI_TYPE_LOCAL_SCOPE, NULL}, {"_SB_", ACPI_TYPE_DEVICE, NULL}, {"_SI_", ACPI_TYPE_LOCAL_SCOPE, NULL}, {"_TZ_", ACPI_TYPE_DEVICE, NULL}, {"_REV", ACPI_TYPE_INTEGER, (char *) ACPI_CA_SUPPORT_LEVEL}, {"_OS_", ACPI_TYPE_STRING, ACPI_OS_NAME}, {"_GL_", ACPI_TYPE_MUTEX, (char *) 1}, #if !defined (ACPI_NO_METHOD_EXECUTION) || defined (ACPI_CONSTANT_EVAL_ONLY) {"_OSI", ACPI_TYPE_METHOD, (char *) 1}, #endif /* Table terminator */ {NULL, ACPI_TYPE_ANY, NULL} }; #if (!ACPI_REDUCED_HARDWARE) /****************************************************************************** * * Event and Hardware globals * ******************************************************************************/ ACPI_BIT_REGISTER_INFO AcpiGbl_BitRegisterInfo[ACPI_NUM_BITREG] = { /* Name Parent Register Register Bit Position Register Bit Mask */ /* ACPI_BITREG_TIMER_STATUS */ {ACPI_REGISTER_PM1_STATUS, ACPI_BITPOSITION_TIMER_STATUS, ACPI_BITMASK_TIMER_STATUS}, /* ACPI_BITREG_BUS_MASTER_STATUS */ {ACPI_REGISTER_PM1_STATUS, ACPI_BITPOSITION_BUS_MASTER_STATUS, ACPI_BITMASK_BUS_MASTER_STATUS}, /* ACPI_BITREG_GLOBAL_LOCK_STATUS */ {ACPI_REGISTER_PM1_STATUS, ACPI_BITPOSITION_GLOBAL_LOCK_STATUS, ACPI_BITMASK_GLOBAL_LOCK_STATUS}, /* ACPI_BITREG_POWER_BUTTON_STATUS */ {ACPI_REGISTER_PM1_STATUS, ACPI_BITPOSITION_POWER_BUTTON_STATUS, ACPI_BITMASK_POWER_BUTTON_STATUS}, /* ACPI_BITREG_SLEEP_BUTTON_STATUS */ {ACPI_REGISTER_PM1_STATUS, ACPI_BITPOSITION_SLEEP_BUTTON_STATUS, ACPI_BITMASK_SLEEP_BUTTON_STATUS}, /* ACPI_BITREG_RT_CLOCK_STATUS */ {ACPI_REGISTER_PM1_STATUS, ACPI_BITPOSITION_RT_CLOCK_STATUS, ACPI_BITMASK_RT_CLOCK_STATUS}, /* ACPI_BITREG_WAKE_STATUS */ {ACPI_REGISTER_PM1_STATUS, ACPI_BITPOSITION_WAKE_STATUS, ACPI_BITMASK_WAKE_STATUS}, /* ACPI_BITREG_PCIEXP_WAKE_STATUS */ {ACPI_REGISTER_PM1_STATUS, ACPI_BITPOSITION_PCIEXP_WAKE_STATUS, ACPI_BITMASK_PCIEXP_WAKE_STATUS}, /* ACPI_BITREG_TIMER_ENABLE */ {ACPI_REGISTER_PM1_ENABLE, ACPI_BITPOSITION_TIMER_ENABLE, ACPI_BITMASK_TIMER_ENABLE}, /* ACPI_BITREG_GLOBAL_LOCK_ENABLE */ {ACPI_REGISTER_PM1_ENABLE, ACPI_BITPOSITION_GLOBAL_LOCK_ENABLE, ACPI_BITMASK_GLOBAL_LOCK_ENABLE}, /* ACPI_BITREG_POWER_BUTTON_ENABLE */ {ACPI_REGISTER_PM1_ENABLE, ACPI_BITPOSITION_POWER_BUTTON_ENABLE, ACPI_BITMASK_POWER_BUTTON_ENABLE}, /* ACPI_BITREG_SLEEP_BUTTON_ENABLE */ {ACPI_REGISTER_PM1_ENABLE, ACPI_BITPOSITION_SLEEP_BUTTON_ENABLE, ACPI_BITMASK_SLEEP_BUTTON_ENABLE}, /* ACPI_BITREG_RT_CLOCK_ENABLE */ {ACPI_REGISTER_PM1_ENABLE, ACPI_BITPOSITION_RT_CLOCK_ENABLE, ACPI_BITMASK_RT_CLOCK_ENABLE}, /* ACPI_BITREG_PCIEXP_WAKE_DISABLE */ {ACPI_REGISTER_PM1_ENABLE, ACPI_BITPOSITION_PCIEXP_WAKE_DISABLE, ACPI_BITMASK_PCIEXP_WAKE_DISABLE}, /* ACPI_BITREG_SCI_ENABLE */ {ACPI_REGISTER_PM1_CONTROL, ACPI_BITPOSITION_SCI_ENABLE, ACPI_BITMASK_SCI_ENABLE}, /* ACPI_BITREG_BUS_MASTER_RLD */ {ACPI_REGISTER_PM1_CONTROL, ACPI_BITPOSITION_BUS_MASTER_RLD, ACPI_BITMASK_BUS_MASTER_RLD}, /* ACPI_BITREG_GLOBAL_LOCK_RELEASE */ {ACPI_REGISTER_PM1_CONTROL, ACPI_BITPOSITION_GLOBAL_LOCK_RELEASE, ACPI_BITMASK_GLOBAL_LOCK_RELEASE}, /* ACPI_BITREG_SLEEP_TYPE */ {ACPI_REGISTER_PM1_CONTROL, ACPI_BITPOSITION_SLEEP_TYPE, ACPI_BITMASK_SLEEP_TYPE}, /* ACPI_BITREG_SLEEP_ENABLE */ {ACPI_REGISTER_PM1_CONTROL, ACPI_BITPOSITION_SLEEP_ENABLE, ACPI_BITMASK_SLEEP_ENABLE}, /* ACPI_BITREG_ARB_DIS */ {ACPI_REGISTER_PM2_CONTROL, ACPI_BITPOSITION_ARB_DISABLE, ACPI_BITMASK_ARB_DISABLE} }; ACPI_FIXED_EVENT_INFO AcpiGbl_FixedEventInfo[ACPI_NUM_FIXED_EVENTS] = { /* ACPI_EVENT_PMTIMER */ {ACPI_BITREG_TIMER_STATUS, ACPI_BITREG_TIMER_ENABLE, ACPI_BITMASK_TIMER_STATUS, ACPI_BITMASK_TIMER_ENABLE}, /* ACPI_EVENT_GLOBAL */ {ACPI_BITREG_GLOBAL_LOCK_STATUS, ACPI_BITREG_GLOBAL_LOCK_ENABLE, ACPI_BITMASK_GLOBAL_LOCK_STATUS, ACPI_BITMASK_GLOBAL_LOCK_ENABLE}, /* ACPI_EVENT_POWER_BUTTON */ {ACPI_BITREG_POWER_BUTTON_STATUS, ACPI_BITREG_POWER_BUTTON_ENABLE, ACPI_BITMASK_POWER_BUTTON_STATUS, ACPI_BITMASK_POWER_BUTTON_ENABLE}, /* ACPI_EVENT_SLEEP_BUTTON */ {ACPI_BITREG_SLEEP_BUTTON_STATUS, ACPI_BITREG_SLEEP_BUTTON_ENABLE, ACPI_BITMASK_SLEEP_BUTTON_STATUS, ACPI_BITMASK_SLEEP_BUTTON_ENABLE}, /* ACPI_EVENT_RTC */ {ACPI_BITREG_RT_CLOCK_STATUS, ACPI_BITREG_RT_CLOCK_ENABLE, ACPI_BITMASK_RT_CLOCK_STATUS, ACPI_BITMASK_RT_CLOCK_ENABLE}, }; #endif /* !ACPI_REDUCED_HARDWARE */ /******************************************************************************* * * FUNCTION: AcpiUtInitGlobals * * PARAMETERS: None * * RETURN: Status * * DESCRIPTION: Initialize ACPICA globals. All globals that require specific * initialization should be initialized here. This allows for * a warm restart. * ******************************************************************************/ ACPI_STATUS AcpiUtInitGlobals ( void) { ACPI_STATUS Status; UINT32 i; ACPI_FUNCTION_TRACE (UtInitGlobals); /* Create all memory caches */ Status = AcpiUtCreateCaches (); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } /* Address Range lists */ for (i = 0; i < ACPI_ADDRESS_RANGE_MAX; i++) { AcpiGbl_AddressRangeList[i] = NULL; } /* Mutex locked flags */ for (i = 0; i < ACPI_NUM_MUTEX; i++) { AcpiGbl_MutexInfo[i].Mutex = NULL; AcpiGbl_MutexInfo[i].ThreadId = ACPI_MUTEX_NOT_ACQUIRED; AcpiGbl_MutexInfo[i].UseCount = 0; } for (i = 0; i < ACPI_NUM_OWNERID_MASKS; i++) { AcpiGbl_OwnerIdMask[i] = 0; } /* Last OwnerID is never valid */ AcpiGbl_OwnerIdMask[ACPI_NUM_OWNERID_MASKS - 1] = 0x80000000; /* Event counters */ AcpiMethodCount = 0; AcpiSciCount = 0; AcpiGpeCount = 0; for (i = 0; i < ACPI_NUM_FIXED_EVENTS; i++) { AcpiFixedEventCount[i] = 0; } #if (!ACPI_REDUCED_HARDWARE) /* GPE/SCI support */ AcpiGbl_AllGpesInitialized = FALSE; AcpiGbl_GpeXruptListHead = NULL; AcpiGbl_GpeFadtBlocks[0] = NULL; AcpiGbl_GpeFadtBlocks[1] = NULL; AcpiCurrentGpeCount = 0; AcpiGbl_GlobalEventHandler = NULL; AcpiGbl_SciHandlerList = NULL; #endif /* !ACPI_REDUCED_HARDWARE */ /* Global handlers */ AcpiGbl_GlobalNotify[0].Handler = NULL; AcpiGbl_GlobalNotify[1].Handler = NULL; AcpiGbl_ExceptionHandler = NULL; AcpiGbl_InitHandler = NULL; AcpiGbl_TableHandler = NULL; AcpiGbl_InterfaceHandler = NULL; /* Global Lock support */ AcpiGbl_GlobalLockSemaphore = NULL; AcpiGbl_GlobalLockMutex = NULL; AcpiGbl_GlobalLockAcquired = FALSE; AcpiGbl_GlobalLockHandle = 0; AcpiGbl_GlobalLockPresent = FALSE; /* Miscellaneous variables */ AcpiGbl_DSDT = NULL; AcpiGbl_CmSingleStep = FALSE; AcpiGbl_Shutdown = FALSE; AcpiGbl_NsLookupCount = 0; AcpiGbl_PsFindCount = 0; AcpiGbl_AcpiHardwarePresent = TRUE; AcpiGbl_LastOwnerIdIndex = 0; AcpiGbl_NextOwnerIdOffset = 0; AcpiGbl_TraceMethodName = 0; AcpiGbl_TraceDbgLevel = 0; AcpiGbl_TraceDbgLayer = 0; AcpiGbl_DebuggerConfiguration = DEBUGGER_THREADING; AcpiGbl_DbOutputFlags = ACPI_DB_CONSOLE_OUTPUT; AcpiGbl_OsiMutex = NULL; AcpiGbl_RegMethodsExecuted = FALSE; /* Hardware oriented */ AcpiGbl_EventsInitialized = FALSE; AcpiGbl_SystemAwakeAndRunning = TRUE; /* Namespace */ AcpiGbl_ModuleCodeList = NULL; AcpiGbl_RootNode = NULL; AcpiGbl_RootNodeStruct.Name.Integer = ACPI_ROOT_NAME; AcpiGbl_RootNodeStruct.DescriptorType = ACPI_DESC_TYPE_NAMED; AcpiGbl_RootNodeStruct.Type = ACPI_TYPE_DEVICE; AcpiGbl_RootNodeStruct.Parent = NULL; AcpiGbl_RootNodeStruct.Child = NULL; AcpiGbl_RootNodeStruct.Peer = NULL; AcpiGbl_RootNodeStruct.Object = NULL; #ifdef ACPI_DISASSEMBLER AcpiGbl_ExternalList = NULL; AcpiGbl_NumExternalMethods = 0; AcpiGbl_ResolvedExternalMethods = 0; #endif #ifdef ACPI_DEBUG_OUTPUT AcpiGbl_LowestStackPointer = ACPI_CAST_PTR (ACPI_SIZE, ACPI_SIZE_MAX); #endif #ifdef ACPI_DBG_TRACK_ALLOCATIONS AcpiGbl_DisplayFinalMemStats = FALSE; AcpiGbl_DisableMemTracking = FALSE; #endif #ifdef ACPI_DEBUGGER AcpiGbl_DbTerminateThreads = FALSE; #endif return_ACPI_STATUS (AE_OK); } /* Public globals */ ACPI_EXPORT_SYMBOL (AcpiGbl_FADT) ACPI_EXPORT_SYMBOL (AcpiDbgLevel) ACPI_EXPORT_SYMBOL (AcpiDbgLayer) ACPI_EXPORT_SYMBOL (AcpiGpeCount) ACPI_EXPORT_SYMBOL (AcpiCurrentGpeCount) src/acpica/source/components/utilities/utids.c000066400000000000000000000420311231470457100220650ustar00rootroot00000000000000/****************************************************************************** * * Module Name: utids - support for device IDs - HID, UID, CID * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #define __UTIDS_C__ #include "acpi.h" #include "accommon.h" #include "acinterp.h" #define _COMPONENT ACPI_UTILITIES ACPI_MODULE_NAME ("utids") /******************************************************************************* * * FUNCTION: AcpiUtExecute_HID * * PARAMETERS: DeviceNode - Node for the device * ReturnId - Where the string HID is returned * * RETURN: Status * * DESCRIPTION: Executes the _HID control method that returns the hardware * ID of the device. The HID is either an 32-bit encoded EISAID * Integer or a String. A string is always returned. An EISAID * is converted to a string. * * NOTE: Internal function, no parameter validation * ******************************************************************************/ ACPI_STATUS AcpiUtExecute_HID ( ACPI_NAMESPACE_NODE *DeviceNode, ACPI_PNP_DEVICE_ID **ReturnId) { ACPI_OPERAND_OBJECT *ObjDesc; ACPI_PNP_DEVICE_ID *Hid; UINT32 Length; ACPI_STATUS Status; ACPI_FUNCTION_TRACE (UtExecute_HID); Status = AcpiUtEvaluateObject (DeviceNode, METHOD_NAME__HID, ACPI_BTYPE_INTEGER | ACPI_BTYPE_STRING, &ObjDesc); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } /* Get the size of the String to be returned, includes null terminator */ if (ObjDesc->Common.Type == ACPI_TYPE_INTEGER) { Length = ACPI_EISAID_STRING_SIZE; } else { Length = ObjDesc->String.Length + 1; } /* Allocate a buffer for the HID */ Hid = ACPI_ALLOCATE_ZEROED (sizeof (ACPI_PNP_DEVICE_ID) + (ACPI_SIZE) Length); if (!Hid) { Status = AE_NO_MEMORY; goto Cleanup; } /* Area for the string starts after PNP_DEVICE_ID struct */ Hid->String = ACPI_ADD_PTR (char, Hid, sizeof (ACPI_PNP_DEVICE_ID)); /* Convert EISAID to a string or simply copy existing string */ if (ObjDesc->Common.Type == ACPI_TYPE_INTEGER) { AcpiExEisaIdToString (Hid->String, ObjDesc->Integer.Value); } else { ACPI_STRCPY (Hid->String, ObjDesc->String.Pointer); } Hid->Length = Length; *ReturnId = Hid; Cleanup: /* On exit, we must delete the return object */ AcpiUtRemoveReference (ObjDesc); return_ACPI_STATUS (Status); } /******************************************************************************* * * FUNCTION: AcpiUtExecute_SUB * * PARAMETERS: DeviceNode - Node for the device * ReturnId - Where the _SUB is returned * * RETURN: Status * * DESCRIPTION: Executes the _SUB control method that returns the subsystem * ID of the device. The _SUB value is always a string containing * either a valid PNP or ACPI ID. * * NOTE: Internal function, no parameter validation * ******************************************************************************/ ACPI_STATUS AcpiUtExecute_SUB ( ACPI_NAMESPACE_NODE *DeviceNode, ACPI_PNP_DEVICE_ID **ReturnId) { ACPI_OPERAND_OBJECT *ObjDesc; ACPI_PNP_DEVICE_ID *Sub; UINT32 Length; ACPI_STATUS Status; ACPI_FUNCTION_TRACE (UtExecute_SUB); Status = AcpiUtEvaluateObject (DeviceNode, METHOD_NAME__SUB, ACPI_BTYPE_STRING, &ObjDesc); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } /* Get the size of the String to be returned, includes null terminator */ Length = ObjDesc->String.Length + 1; /* Allocate a buffer for the SUB */ Sub = ACPI_ALLOCATE_ZEROED (sizeof (ACPI_PNP_DEVICE_ID) + (ACPI_SIZE) Length); if (!Sub) { Status = AE_NO_MEMORY; goto Cleanup; } /* Area for the string starts after PNP_DEVICE_ID struct */ Sub->String = ACPI_ADD_PTR (char, Sub, sizeof (ACPI_PNP_DEVICE_ID)); /* Simply copy existing string */ ACPI_STRCPY (Sub->String, ObjDesc->String.Pointer); Sub->Length = Length; *ReturnId = Sub; Cleanup: /* On exit, we must delete the return object */ AcpiUtRemoveReference (ObjDesc); return_ACPI_STATUS (Status); } /******************************************************************************* * * FUNCTION: AcpiUtExecute_UID * * PARAMETERS: DeviceNode - Node for the device * ReturnId - Where the string UID is returned * * RETURN: Status * * DESCRIPTION: Executes the _UID control method that returns the unique * ID of the device. The UID is either a 64-bit Integer (NOT an * EISAID) or a string. Always returns a string. A 64-bit integer * is converted to a decimal string. * * NOTE: Internal function, no parameter validation * ******************************************************************************/ ACPI_STATUS AcpiUtExecute_UID ( ACPI_NAMESPACE_NODE *DeviceNode, ACPI_PNP_DEVICE_ID **ReturnId) { ACPI_OPERAND_OBJECT *ObjDesc; ACPI_PNP_DEVICE_ID *Uid; UINT32 Length; ACPI_STATUS Status; ACPI_FUNCTION_TRACE (UtExecute_UID); Status = AcpiUtEvaluateObject (DeviceNode, METHOD_NAME__UID, ACPI_BTYPE_INTEGER | ACPI_BTYPE_STRING, &ObjDesc); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } /* Get the size of the String to be returned, includes null terminator */ if (ObjDesc->Common.Type == ACPI_TYPE_INTEGER) { Length = ACPI_MAX64_DECIMAL_DIGITS + 1; } else { Length = ObjDesc->String.Length + 1; } /* Allocate a buffer for the UID */ Uid = ACPI_ALLOCATE_ZEROED (sizeof (ACPI_PNP_DEVICE_ID) + (ACPI_SIZE) Length); if (!Uid) { Status = AE_NO_MEMORY; goto Cleanup; } /* Area for the string starts after PNP_DEVICE_ID struct */ Uid->String = ACPI_ADD_PTR (char, Uid, sizeof (ACPI_PNP_DEVICE_ID)); /* Convert an Integer to string, or just copy an existing string */ if (ObjDesc->Common.Type == ACPI_TYPE_INTEGER) { AcpiExIntegerToString (Uid->String, ObjDesc->Integer.Value); } else { ACPI_STRCPY (Uid->String, ObjDesc->String.Pointer); } Uid->Length = Length; *ReturnId = Uid; Cleanup: /* On exit, we must delete the return object */ AcpiUtRemoveReference (ObjDesc); return_ACPI_STATUS (Status); } /******************************************************************************* * * FUNCTION: AcpiUtExecute_CID * * PARAMETERS: DeviceNode - Node for the device * ReturnCidList - Where the CID list is returned * * RETURN: Status, list of CID strings * * DESCRIPTION: Executes the _CID control method that returns one or more * compatible hardware IDs for the device. * * NOTE: Internal function, no parameter validation * * A _CID method can return either a single compatible ID or a package of * compatible IDs. Each compatible ID can be one of the following: * 1) Integer (32 bit compressed EISA ID) or * 2) String (PCI ID format, e.g. "PCI\VEN_vvvv&DEV_dddd&SUBSYS_ssssssss") * * The Integer CIDs are converted to string format by this function. * ******************************************************************************/ ACPI_STATUS AcpiUtExecute_CID ( ACPI_NAMESPACE_NODE *DeviceNode, ACPI_PNP_DEVICE_ID_LIST **ReturnCidList) { ACPI_OPERAND_OBJECT **CidObjects; ACPI_OPERAND_OBJECT *ObjDesc; ACPI_PNP_DEVICE_ID_LIST *CidList; char *NextIdString; UINT32 StringAreaSize; UINT32 Length; UINT32 CidListSize; ACPI_STATUS Status; UINT32 Count; UINT32 i; ACPI_FUNCTION_TRACE (UtExecute_CID); /* Evaluate the _CID method for this device */ Status = AcpiUtEvaluateObject (DeviceNode, METHOD_NAME__CID, ACPI_BTYPE_INTEGER | ACPI_BTYPE_STRING | ACPI_BTYPE_PACKAGE, &ObjDesc); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } /* * Get the count and size of the returned _CIDs. _CID can return either * a Package of Integers/Strings or a single Integer or String. * Note: This section also validates that all CID elements are of the * correct type (Integer or String). */ if (ObjDesc->Common.Type == ACPI_TYPE_PACKAGE) { Count = ObjDesc->Package.Count; CidObjects = ObjDesc->Package.Elements; } else /* Single Integer or String CID */ { Count = 1; CidObjects = &ObjDesc; } StringAreaSize = 0; for (i = 0; i < Count; i++) { /* String lengths include null terminator */ switch (CidObjects[i]->Common.Type) { case ACPI_TYPE_INTEGER: StringAreaSize += ACPI_EISAID_STRING_SIZE; break; case ACPI_TYPE_STRING: StringAreaSize += CidObjects[i]->String.Length + 1; break; default: Status = AE_TYPE; goto Cleanup; } } /* * Now that we know the length of the CIDs, allocate return buffer: * 1) Size of the base structure + * 2) Size of the CID PNP_DEVICE_ID array + * 3) Size of the actual CID strings */ CidListSize = sizeof (ACPI_PNP_DEVICE_ID_LIST) + ((Count - 1) * sizeof (ACPI_PNP_DEVICE_ID)) + StringAreaSize; CidList = ACPI_ALLOCATE_ZEROED (CidListSize); if (!CidList) { Status = AE_NO_MEMORY; goto Cleanup; } /* Area for CID strings starts after the CID PNP_DEVICE_ID array */ NextIdString = ACPI_CAST_PTR (char, CidList->Ids) + ((ACPI_SIZE) Count * sizeof (ACPI_PNP_DEVICE_ID)); /* Copy/convert the CIDs to the return buffer */ for (i = 0; i < Count; i++) { if (CidObjects[i]->Common.Type == ACPI_TYPE_INTEGER) { /* Convert the Integer (EISAID) CID to a string */ AcpiExEisaIdToString (NextIdString, CidObjects[i]->Integer.Value); Length = ACPI_EISAID_STRING_SIZE; } else /* ACPI_TYPE_STRING */ { /* Copy the String CID from the returned object */ ACPI_STRCPY (NextIdString, CidObjects[i]->String.Pointer); Length = CidObjects[i]->String.Length + 1; } CidList->Ids[i].String = NextIdString; CidList->Ids[i].Length = Length; NextIdString += Length; } /* Finish the CID list */ CidList->Count = Count; CidList->ListSize = CidListSize; *ReturnCidList = CidList; Cleanup: /* On exit, we must delete the _CID return object */ AcpiUtRemoveReference (ObjDesc); return_ACPI_STATUS (Status); } src/acpica/source/components/utilities/utinit.c000066400000000000000000000221461231470457100222560ustar00rootroot00000000000000/****************************************************************************** * * Module Name: utinit - Common ACPI subsystem initialization * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #define __UTINIT_C__ #include "acpi.h" #include "accommon.h" #include "acnamesp.h" #include "acevents.h" #include "actables.h" #define _COMPONENT ACPI_UTILITIES ACPI_MODULE_NAME ("utinit") /* Local prototypes */ static void AcpiUtTerminate ( void); #if (!ACPI_REDUCED_HARDWARE) static void AcpiUtFreeGpeLists ( void); #else #define AcpiUtFreeGpeLists() #endif /* !ACPI_REDUCED_HARDWARE */ #if (!ACPI_REDUCED_HARDWARE) /****************************************************************************** * * FUNCTION: AcpiUtFreeGpeLists * * PARAMETERS: none * * RETURN: none * * DESCRIPTION: Free global GPE lists * ******************************************************************************/ static void AcpiUtFreeGpeLists ( void) { ACPI_GPE_BLOCK_INFO *GpeBlock; ACPI_GPE_BLOCK_INFO *NextGpeBlock; ACPI_GPE_XRUPT_INFO *GpeXruptInfo; ACPI_GPE_XRUPT_INFO *NextGpeXruptInfo; /* Free global GPE blocks and related info structures */ GpeXruptInfo = AcpiGbl_GpeXruptListHead; while (GpeXruptInfo) { GpeBlock = GpeXruptInfo->GpeBlockListHead; while (GpeBlock) { NextGpeBlock = GpeBlock->Next; ACPI_FREE (GpeBlock->EventInfo); ACPI_FREE (GpeBlock->RegisterInfo); ACPI_FREE (GpeBlock); GpeBlock = NextGpeBlock; } NextGpeXruptInfo = GpeXruptInfo->Next; ACPI_FREE (GpeXruptInfo); GpeXruptInfo = NextGpeXruptInfo; } } #endif /* !ACPI_REDUCED_HARDWARE */ /****************************************************************************** * * FUNCTION: AcpiUtTerminate * * PARAMETERS: none * * RETURN: none * * DESCRIPTION: Free global memory * ******************************************************************************/ static void AcpiUtTerminate ( void) { ACPI_FUNCTION_TRACE (UtTerminate); AcpiUtFreeGpeLists (); AcpiUtDeleteAddressLists (); return_VOID; } /******************************************************************************* * * FUNCTION: AcpiUtSubsystemShutdown * * PARAMETERS: None * * RETURN: None * * DESCRIPTION: Shutdown the various components. Do not delete the mutex * objects here, because the AML debugger may be still running. * ******************************************************************************/ void AcpiUtSubsystemShutdown ( void) { ACPI_FUNCTION_TRACE (UtSubsystemShutdown); #ifndef ACPI_ASL_COMPILER /* Close the AcpiEvent Handling */ AcpiEvTerminate (); /* Delete any dynamic _OSI interfaces */ AcpiUtInterfaceTerminate (); #endif /* Close the Namespace */ AcpiNsTerminate (); /* Delete the ACPI tables */ AcpiTbTerminate (); /* Close the globals */ AcpiUtTerminate (); /* Purge the local caches */ (void) AcpiUtDeleteCaches (); return_VOID; } src/acpica/source/components/utilities/utlock.c000066400000000000000000000237721231470457100222510ustar00rootroot00000000000000/****************************************************************************** * * Module Name: utlock - Reader/Writer lock interfaces * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #define __UTLOCK_C__ #include "acpi.h" #include "accommon.h" #define _COMPONENT ACPI_UTILITIES ACPI_MODULE_NAME ("utlock") /******************************************************************************* * * FUNCTION: AcpiUtCreateRwLock * AcpiUtDeleteRwLock * * PARAMETERS: Lock - Pointer to a valid RW lock * * RETURN: Status * * DESCRIPTION: Reader/writer lock creation and deletion interfaces. * ******************************************************************************/ ACPI_STATUS AcpiUtCreateRwLock ( ACPI_RW_LOCK *Lock) { ACPI_STATUS Status; Lock->NumReaders = 0; Status = AcpiOsCreateMutex (&Lock->ReaderMutex); if (ACPI_FAILURE (Status)) { return (Status); } Status = AcpiOsCreateMutex (&Lock->WriterMutex); return (Status); } void AcpiUtDeleteRwLock ( ACPI_RW_LOCK *Lock) { AcpiOsDeleteMutex (Lock->ReaderMutex); AcpiOsDeleteMutex (Lock->WriterMutex); Lock->NumReaders = 0; Lock->ReaderMutex = NULL; Lock->WriterMutex = NULL; } /******************************************************************************* * * FUNCTION: AcpiUtAcquireReadLock * AcpiUtReleaseReadLock * * PARAMETERS: Lock - Pointer to a valid RW lock * * RETURN: Status * * DESCRIPTION: Reader interfaces for reader/writer locks. On acquisition, * only the first reader acquires the write mutex. On release, * only the last reader releases the write mutex. Although this * algorithm can in theory starve writers, this should not be a * problem with ACPICA since the subsystem is infrequently used * in comparison to (for example) an I/O system. * ******************************************************************************/ ACPI_STATUS AcpiUtAcquireReadLock ( ACPI_RW_LOCK *Lock) { ACPI_STATUS Status; Status = AcpiOsAcquireMutex (Lock->ReaderMutex, ACPI_WAIT_FOREVER); if (ACPI_FAILURE (Status)) { return (Status); } /* Acquire the write lock only for the first reader */ Lock->NumReaders++; if (Lock->NumReaders == 1) { Status = AcpiOsAcquireMutex (Lock->WriterMutex, ACPI_WAIT_FOREVER); } AcpiOsReleaseMutex (Lock->ReaderMutex); return (Status); } ACPI_STATUS AcpiUtReleaseReadLock ( ACPI_RW_LOCK *Lock) { ACPI_STATUS Status; Status = AcpiOsAcquireMutex (Lock->ReaderMutex, ACPI_WAIT_FOREVER); if (ACPI_FAILURE (Status)) { return (Status); } /* Release the write lock only for the very last reader */ Lock->NumReaders--; if (Lock->NumReaders == 0) { AcpiOsReleaseMutex (Lock->WriterMutex); } AcpiOsReleaseMutex (Lock->ReaderMutex); return (Status); } /******************************************************************************* * * FUNCTION: AcpiUtAcquireWriteLock * AcpiUtReleaseWriteLock * * PARAMETERS: Lock - Pointer to a valid RW lock * * RETURN: Status * * DESCRIPTION: Writer interfaces for reader/writer locks. Simply acquire or * release the writer mutex associated with the lock. Acquisition * of the lock is fully exclusive and will block all readers and * writers until it is released. * ******************************************************************************/ ACPI_STATUS AcpiUtAcquireWriteLock ( ACPI_RW_LOCK *Lock) { ACPI_STATUS Status; Status = AcpiOsAcquireMutex (Lock->WriterMutex, ACPI_WAIT_FOREVER); return (Status); } void AcpiUtReleaseWriteLock ( ACPI_RW_LOCK *Lock) { AcpiOsReleaseMutex (Lock->WriterMutex); } src/acpica/source/components/utilities/utmath.c000066400000000000000000000362301231470457100222430ustar00rootroot00000000000000/******************************************************************************* * * Module Name: utmath - Integer math support routines * ******************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #define __UTMATH_C__ #include "acpi.h" #include "accommon.h" #define _COMPONENT ACPI_UTILITIES ACPI_MODULE_NAME ("utmath") /* * Optional support for 64-bit double-precision integer divide. This code * is configurable and is implemented in order to support 32-bit kernel * environments where a 64-bit double-precision math library is not available. * * Support for a more normal 64-bit divide/modulo (with check for a divide- * by-zero) appears after this optional section of code. */ #ifndef ACPI_USE_NATIVE_DIVIDE /* Structures used only for 64-bit divide */ typedef struct uint64_struct { UINT32 Lo; UINT32 Hi; } UINT64_STRUCT; typedef union uint64_overlay { UINT64 Full; UINT64_STRUCT Part; } UINT64_OVERLAY; /******************************************************************************* * * FUNCTION: AcpiUtShortDivide * * PARAMETERS: Dividend - 64-bit dividend * Divisor - 32-bit divisor * OutQuotient - Pointer to where the quotient is returned * OutRemainder - Pointer to where the remainder is returned * * RETURN: Status (Checks for divide-by-zero) * * DESCRIPTION: Perform a short (maximum 64 bits divided by 32 bits) * divide and modulo. The result is a 64-bit quotient and a * 32-bit remainder. * ******************************************************************************/ ACPI_STATUS AcpiUtShortDivide ( UINT64 Dividend, UINT32 Divisor, UINT64 *OutQuotient, UINT32 *OutRemainder) { UINT64_OVERLAY DividendOvl; UINT64_OVERLAY Quotient; UINT32 Remainder32; ACPI_FUNCTION_TRACE (UtShortDivide); /* Always check for a zero divisor */ if (Divisor == 0) { ACPI_ERROR ((AE_INFO, "Divide by zero")); return_ACPI_STATUS (AE_AML_DIVIDE_BY_ZERO); } DividendOvl.Full = Dividend; /* * The quotient is 64 bits, the remainder is always 32 bits, * and is generated by the second divide. */ ACPI_DIV_64_BY_32 (0, DividendOvl.Part.Hi, Divisor, Quotient.Part.Hi, Remainder32); ACPI_DIV_64_BY_32 (Remainder32, DividendOvl.Part.Lo, Divisor, Quotient.Part.Lo, Remainder32); /* Return only what was requested */ if (OutQuotient) { *OutQuotient = Quotient.Full; } if (OutRemainder) { *OutRemainder = Remainder32; } return_ACPI_STATUS (AE_OK); } /******************************************************************************* * * FUNCTION: AcpiUtDivide * * PARAMETERS: InDividend - Dividend * InDivisor - Divisor * OutQuotient - Pointer to where the quotient is returned * OutRemainder - Pointer to where the remainder is returned * * RETURN: Status (Checks for divide-by-zero) * * DESCRIPTION: Perform a divide and modulo. * ******************************************************************************/ ACPI_STATUS AcpiUtDivide ( UINT64 InDividend, UINT64 InDivisor, UINT64 *OutQuotient, UINT64 *OutRemainder) { UINT64_OVERLAY Dividend; UINT64_OVERLAY Divisor; UINT64_OVERLAY Quotient; UINT64_OVERLAY Remainder; UINT64_OVERLAY NormalizedDividend; UINT64_OVERLAY NormalizedDivisor; UINT32 Partial1; UINT64_OVERLAY Partial2; UINT64_OVERLAY Partial3; ACPI_FUNCTION_TRACE (UtDivide); /* Always check for a zero divisor */ if (InDivisor == 0) { ACPI_ERROR ((AE_INFO, "Divide by zero")); return_ACPI_STATUS (AE_AML_DIVIDE_BY_ZERO); } Divisor.Full = InDivisor; Dividend.Full = InDividend; if (Divisor.Part.Hi == 0) { /* * 1) Simplest case is where the divisor is 32 bits, we can * just do two divides */ Remainder.Part.Hi = 0; /* * The quotient is 64 bits, the remainder is always 32 bits, * and is generated by the second divide. */ ACPI_DIV_64_BY_32 (0, Dividend.Part.Hi, Divisor.Part.Lo, Quotient.Part.Hi, Partial1); ACPI_DIV_64_BY_32 (Partial1, Dividend.Part.Lo, Divisor.Part.Lo, Quotient.Part.Lo, Remainder.Part.Lo); } else { /* * 2) The general case where the divisor is a full 64 bits * is more difficult */ Quotient.Part.Hi = 0; NormalizedDividend = Dividend; NormalizedDivisor = Divisor; /* Normalize the operands (shift until the divisor is < 32 bits) */ do { ACPI_SHIFT_RIGHT_64 (NormalizedDivisor.Part.Hi, NormalizedDivisor.Part.Lo); ACPI_SHIFT_RIGHT_64 (NormalizedDividend.Part.Hi, NormalizedDividend.Part.Lo); } while (NormalizedDivisor.Part.Hi != 0); /* Partial divide */ ACPI_DIV_64_BY_32 (NormalizedDividend.Part.Hi, NormalizedDividend.Part.Lo, NormalizedDivisor.Part.Lo, Quotient.Part.Lo, Partial1); /* * The quotient is always 32 bits, and simply requires adjustment. * The 64-bit remainder must be generated. */ Partial1 = Quotient.Part.Lo * Divisor.Part.Hi; Partial2.Full = (UINT64) Quotient.Part.Lo * Divisor.Part.Lo; Partial3.Full = (UINT64) Partial2.Part.Hi + Partial1; Remainder.Part.Hi = Partial3.Part.Lo; Remainder.Part.Lo = Partial2.Part.Lo; if (Partial3.Part.Hi == 0) { if (Partial3.Part.Lo >= Dividend.Part.Hi) { if (Partial3.Part.Lo == Dividend.Part.Hi) { if (Partial2.Part.Lo > Dividend.Part.Lo) { Quotient.Part.Lo--; Remainder.Full -= Divisor.Full; } } else { Quotient.Part.Lo--; Remainder.Full -= Divisor.Full; } } Remainder.Full = Remainder.Full - Dividend.Full; Remainder.Part.Hi = (UINT32) -((INT32) Remainder.Part.Hi); Remainder.Part.Lo = (UINT32) -((INT32) Remainder.Part.Lo); if (Remainder.Part.Lo) { Remainder.Part.Hi--; } } } /* Return only what was requested */ if (OutQuotient) { *OutQuotient = Quotient.Full; } if (OutRemainder) { *OutRemainder = Remainder.Full; } return_ACPI_STATUS (AE_OK); } #else /******************************************************************************* * * FUNCTION: AcpiUtShortDivide, AcpiUtDivide * * PARAMETERS: See function headers above * * DESCRIPTION: Native versions of the UtDivide functions. Use these if either * 1) The target is a 64-bit platform and therefore 64-bit * integer math is supported directly by the machine. * 2) The target is a 32-bit or 16-bit platform, and the * double-precision integer math library is available to * perform the divide. * ******************************************************************************/ ACPI_STATUS AcpiUtShortDivide ( UINT64 InDividend, UINT32 Divisor, UINT64 *OutQuotient, UINT32 *OutRemainder) { ACPI_FUNCTION_TRACE (UtShortDivide); /* Always check for a zero divisor */ if (Divisor == 0) { ACPI_ERROR ((AE_INFO, "Divide by zero")); return_ACPI_STATUS (AE_AML_DIVIDE_BY_ZERO); } /* Return only what was requested */ if (OutQuotient) { *OutQuotient = InDividend / Divisor; } if (OutRemainder) { *OutRemainder = (UINT32) (InDividend % Divisor); } return_ACPI_STATUS (AE_OK); } ACPI_STATUS AcpiUtDivide ( UINT64 InDividend, UINT64 InDivisor, UINT64 *OutQuotient, UINT64 *OutRemainder) { ACPI_FUNCTION_TRACE (UtDivide); /* Always check for a zero divisor */ if (InDivisor == 0) { ACPI_ERROR ((AE_INFO, "Divide by zero")); return_ACPI_STATUS (AE_AML_DIVIDE_BY_ZERO); } /* Return only what was requested */ if (OutQuotient) { *OutQuotient = InDividend / InDivisor; } if (OutRemainder) { *OutRemainder = InDividend % InDivisor; } return_ACPI_STATUS (AE_OK); } #endif src/acpica/source/components/utilities/utmisc.c000066400000000000000000000417341231470457100222520ustar00rootroot00000000000000/******************************************************************************* * * Module Name: utmisc - common utility procedures * ******************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #define __UTMISC_C__ #include "acpi.h" #include "accommon.h" #include "acnamesp.h" #define _COMPONENT ACPI_UTILITIES ACPI_MODULE_NAME ("utmisc") /******************************************************************************* * * FUNCTION: AcpiUtIsPciRootBridge * * PARAMETERS: Id - The HID/CID in string format * * RETURN: TRUE if the Id is a match for a PCI/PCI-Express Root Bridge * * DESCRIPTION: Determine if the input ID is a PCI Root Bridge ID. * ******************************************************************************/ BOOLEAN AcpiUtIsPciRootBridge ( char *Id) { /* * Check if this is a PCI root bridge. * ACPI 3.0+: check for a PCI Express root also. */ if (!(ACPI_STRCMP (Id, PCI_ROOT_HID_STRING)) || !(ACPI_STRCMP (Id, PCI_EXPRESS_ROOT_HID_STRING))) { return (TRUE); } return (FALSE); } /******************************************************************************* * * FUNCTION: AcpiUtIsAmlTable * * PARAMETERS: Table - An ACPI table * * RETURN: TRUE if table contains executable AML; FALSE otherwise * * DESCRIPTION: Check ACPI Signature for a table that contains AML code. * Currently, these are DSDT,SSDT,PSDT. All other table types are * data tables that do not contain AML code. * ******************************************************************************/ BOOLEAN AcpiUtIsAmlTable ( ACPI_TABLE_HEADER *Table) { /* These are the only tables that contain executable AML */ if (ACPI_COMPARE_NAME (Table->Signature, ACPI_SIG_DSDT) || ACPI_COMPARE_NAME (Table->Signature, ACPI_SIG_PSDT) || ACPI_COMPARE_NAME (Table->Signature, ACPI_SIG_SSDT)) { return (TRUE); } return (FALSE); } /******************************************************************************* * * FUNCTION: AcpiUtDwordByteSwap * * PARAMETERS: Value - Value to be converted * * RETURN: UINT32 integer with bytes swapped * * DESCRIPTION: Convert a 32-bit value to big-endian (swap the bytes) * ******************************************************************************/ UINT32 AcpiUtDwordByteSwap ( UINT32 Value) { union { UINT32 Value; UINT8 Bytes[4]; } Out; union { UINT32 Value; UINT8 Bytes[4]; } In; ACPI_FUNCTION_ENTRY (); In.Value = Value; Out.Bytes[0] = In.Bytes[3]; Out.Bytes[1] = In.Bytes[2]; Out.Bytes[2] = In.Bytes[1]; Out.Bytes[3] = In.Bytes[0]; return (Out.Value); } /******************************************************************************* * * FUNCTION: AcpiUtSetIntegerWidth * * PARAMETERS: Revision From DSDT header * * RETURN: None * * DESCRIPTION: Set the global integer bit width based upon the revision * of the DSDT. For Revision 1 and 0, Integers are 32 bits. * For Revision 2 and above, Integers are 64 bits. Yes, this * makes a difference. * ******************************************************************************/ void AcpiUtSetIntegerWidth ( UINT8 Revision) { if (Revision < 2) { /* 32-bit case */ AcpiGbl_IntegerBitWidth = 32; AcpiGbl_IntegerNybbleWidth = 8; AcpiGbl_IntegerByteWidth = 4; } else { /* 64-bit case (ACPI 2.0+) */ AcpiGbl_IntegerBitWidth = 64; AcpiGbl_IntegerNybbleWidth = 16; AcpiGbl_IntegerByteWidth = 8; } } /******************************************************************************* * * FUNCTION: AcpiUtCreateUpdateStateAndPush * * PARAMETERS: Object - Object to be added to the new state * Action - Increment/Decrement * StateList - List the state will be added to * * RETURN: Status * * DESCRIPTION: Create a new state and push it * ******************************************************************************/ ACPI_STATUS AcpiUtCreateUpdateStateAndPush ( ACPI_OPERAND_OBJECT *Object, UINT16 Action, ACPI_GENERIC_STATE **StateList) { ACPI_GENERIC_STATE *State; ACPI_FUNCTION_ENTRY (); /* Ignore null objects; these are expected */ if (!Object) { return (AE_OK); } State = AcpiUtCreateUpdateState (Object, Action); if (!State) { return (AE_NO_MEMORY); } AcpiUtPushGenericState (StateList, State); return (AE_OK); } /******************************************************************************* * * FUNCTION: AcpiUtWalkPackageTree * * PARAMETERS: SourceObject - The package to walk * TargetObject - Target object (if package is being copied) * WalkCallback - Called once for each package element * Context - Passed to the callback function * * RETURN: Status * * DESCRIPTION: Walk through a package * ******************************************************************************/ ACPI_STATUS AcpiUtWalkPackageTree ( ACPI_OPERAND_OBJECT *SourceObject, void *TargetObject, ACPI_PKG_CALLBACK WalkCallback, void *Context) { ACPI_STATUS Status = AE_OK; ACPI_GENERIC_STATE *StateList = NULL; ACPI_GENERIC_STATE *State; UINT32 ThisIndex; ACPI_OPERAND_OBJECT *ThisSourceObj; ACPI_FUNCTION_TRACE (UtWalkPackageTree); State = AcpiUtCreatePkgState (SourceObject, TargetObject, 0); if (!State) { return_ACPI_STATUS (AE_NO_MEMORY); } while (State) { /* Get one element of the package */ ThisIndex = State->Pkg.Index; ThisSourceObj = (ACPI_OPERAND_OBJECT *) State->Pkg.SourceObject->Package.Elements[ThisIndex]; /* * Check for: * 1) An uninitialized package element. It is completely * legal to declare a package and leave it uninitialized * 2) Not an internal object - can be a namespace node instead * 3) Any type other than a package. Packages are handled in else * case below. */ if ((!ThisSourceObj) || (ACPI_GET_DESCRIPTOR_TYPE (ThisSourceObj) != ACPI_DESC_TYPE_OPERAND) || (ThisSourceObj->Common.Type != ACPI_TYPE_PACKAGE)) { Status = WalkCallback (ACPI_COPY_TYPE_SIMPLE, ThisSourceObj, State, Context); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } State->Pkg.Index++; while (State->Pkg.Index >= State->Pkg.SourceObject->Package.Count) { /* * We've handled all of the objects at this level, This means * that we have just completed a package. That package may * have contained one or more packages itself. * * Delete this state and pop the previous state (package). */ AcpiUtDeleteGenericState (State); State = AcpiUtPopGenericState (&StateList); /* Finished when there are no more states */ if (!State) { /* * We have handled all of the objects in the top level * package just add the length of the package objects * and exit */ return_ACPI_STATUS (AE_OK); } /* * Go back up a level and move the index past the just * completed package object. */ State->Pkg.Index++; } } else { /* This is a subobject of type package */ Status = WalkCallback (ACPI_COPY_TYPE_PACKAGE, ThisSourceObj, State, Context); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } /* * Push the current state and create a new one * The callback above returned a new target package object. */ AcpiUtPushGenericState (&StateList, State); State = AcpiUtCreatePkgState (ThisSourceObj, State->Pkg.ThisTargetObj, 0); if (!State) { /* Free any stacked Update State objects */ while (StateList) { State = AcpiUtPopGenericState (&StateList); AcpiUtDeleteGenericState (State); } return_ACPI_STATUS (AE_NO_MEMORY); } } } /* We should never get here */ return_ACPI_STATUS (AE_AML_INTERNAL); } #ifdef ACPI_DEBUG_OUTPUT /******************************************************************************* * * FUNCTION: AcpiUtDisplayInitPathname * * PARAMETERS: Type - Object type of the node * ObjHandle - Handle whose pathname will be displayed * Path - Additional path string to be appended. * (NULL if no extra path) * * RETURN: ACPI_STATUS * * DESCRIPTION: Display full pathname of an object, DEBUG ONLY * ******************************************************************************/ void AcpiUtDisplayInitPathname ( UINT8 Type, ACPI_NAMESPACE_NODE *ObjHandle, char *Path) { ACPI_STATUS Status; ACPI_BUFFER Buffer; ACPI_FUNCTION_ENTRY (); /* Only print the path if the appropriate debug level is enabled */ if (!(AcpiDbgLevel & ACPI_LV_INIT_NAMES)) { return; } /* Get the full pathname to the node */ Buffer.Length = ACPI_ALLOCATE_LOCAL_BUFFER; Status = AcpiNsHandleToPathname (ObjHandle, &Buffer); if (ACPI_FAILURE (Status)) { return; } /* Print what we're doing */ switch (Type) { case ACPI_TYPE_METHOD: AcpiOsPrintf ("Executing "); break; default: AcpiOsPrintf ("Initializing "); break; } /* Print the object type and pathname */ AcpiOsPrintf ("%-12s %s", AcpiUtGetTypeName (Type), (char *) Buffer.Pointer); /* Extra path is used to append names like _STA, _INI, etc. */ if (Path) { AcpiOsPrintf (".%s", Path); } AcpiOsPrintf ("\n"); ACPI_FREE (Buffer.Pointer); } #endif src/acpica/source/components/utilities/utmutex.c000066400000000000000000000360711231470457100224570ustar00rootroot00000000000000/******************************************************************************* * * Module Name: utmutex - local mutex support * ******************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #define __UTMUTEX_C__ #include "acpi.h" #include "accommon.h" #define _COMPONENT ACPI_UTILITIES ACPI_MODULE_NAME ("utmutex") /* Local prototypes */ static ACPI_STATUS AcpiUtCreateMutex ( ACPI_MUTEX_HANDLE MutexId); static void AcpiUtDeleteMutex ( ACPI_MUTEX_HANDLE MutexId); /******************************************************************************* * * FUNCTION: AcpiUtMutexInitialize * * PARAMETERS: None. * * RETURN: Status * * DESCRIPTION: Create the system mutex objects. This includes mutexes, * spin locks, and reader/writer locks. * ******************************************************************************/ ACPI_STATUS AcpiUtMutexInitialize ( void) { UINT32 i; ACPI_STATUS Status; ACPI_FUNCTION_TRACE (UtMutexInitialize); /* Create each of the predefined mutex objects */ for (i = 0; i < ACPI_NUM_MUTEX; i++) { Status = AcpiUtCreateMutex (i); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } } /* Create the spinlocks for use at interrupt level or for speed */ Status = AcpiOsCreateLock (&AcpiGbl_GpeLock); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } Status = AcpiOsCreateLock (&AcpiGbl_HardwareLock); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } Status = AcpiOsCreateLock (&AcpiGbl_ReferenceCountLock); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } /* Mutex for _OSI support */ Status = AcpiOsCreateMutex (&AcpiGbl_OsiMutex); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } /* Create the reader/writer lock for namespace access */ Status = AcpiUtCreateRwLock (&AcpiGbl_NamespaceRwLock); return_ACPI_STATUS (Status); } /******************************************************************************* * * FUNCTION: AcpiUtMutexTerminate * * PARAMETERS: None. * * RETURN: None. * * DESCRIPTION: Delete all of the system mutex objects. This includes mutexes, * spin locks, and reader/writer locks. * ******************************************************************************/ void AcpiUtMutexTerminate ( void) { UINT32 i; ACPI_FUNCTION_TRACE (UtMutexTerminate); /* Delete each predefined mutex object */ for (i = 0; i < ACPI_NUM_MUTEX; i++) { AcpiUtDeleteMutex (i); } AcpiOsDeleteMutex (AcpiGbl_OsiMutex); /* Delete the spinlocks */ AcpiOsDeleteLock (AcpiGbl_GpeLock); AcpiOsDeleteLock (AcpiGbl_HardwareLock); AcpiOsDeleteLock (AcpiGbl_ReferenceCountLock); /* Delete the reader/writer lock */ AcpiUtDeleteRwLock (&AcpiGbl_NamespaceRwLock); return_VOID; } /******************************************************************************* * * FUNCTION: AcpiUtCreateMutex * * PARAMETERS: MutexID - ID of the mutex to be created * * RETURN: Status * * DESCRIPTION: Create a mutex object. * ******************************************************************************/ static ACPI_STATUS AcpiUtCreateMutex ( ACPI_MUTEX_HANDLE MutexId) { ACPI_STATUS Status = AE_OK; ACPI_FUNCTION_TRACE_U32 (UtCreateMutex, MutexId); if (!AcpiGbl_MutexInfo[MutexId].Mutex) { Status = AcpiOsCreateMutex (&AcpiGbl_MutexInfo[MutexId].Mutex); AcpiGbl_MutexInfo[MutexId].ThreadId = ACPI_MUTEX_NOT_ACQUIRED; AcpiGbl_MutexInfo[MutexId].UseCount = 0; } return_ACPI_STATUS (Status); } /******************************************************************************* * * FUNCTION: AcpiUtDeleteMutex * * PARAMETERS: MutexID - ID of the mutex to be deleted * * RETURN: Status * * DESCRIPTION: Delete a mutex object. * ******************************************************************************/ static void AcpiUtDeleteMutex ( ACPI_MUTEX_HANDLE MutexId) { ACPI_FUNCTION_TRACE_U32 (UtDeleteMutex, MutexId); AcpiOsDeleteMutex (AcpiGbl_MutexInfo[MutexId].Mutex); AcpiGbl_MutexInfo[MutexId].Mutex = NULL; AcpiGbl_MutexInfo[MutexId].ThreadId = ACPI_MUTEX_NOT_ACQUIRED; return_VOID; } /******************************************************************************* * * FUNCTION: AcpiUtAcquireMutex * * PARAMETERS: MutexID - ID of the mutex to be acquired * * RETURN: Status * * DESCRIPTION: Acquire a mutex object. * ******************************************************************************/ ACPI_STATUS AcpiUtAcquireMutex ( ACPI_MUTEX_HANDLE MutexId) { ACPI_STATUS Status; ACPI_THREAD_ID ThisThreadId; ACPI_FUNCTION_NAME (UtAcquireMutex); if (MutexId > ACPI_MAX_MUTEX) { return (AE_BAD_PARAMETER); } ThisThreadId = AcpiOsGetThreadId (); #ifdef ACPI_MUTEX_DEBUG { UINT32 i; /* * Mutex debug code, for internal debugging only. * * Deadlock prevention. Check if this thread owns any mutexes of value * greater than or equal to this one. If so, the thread has violated * the mutex ordering rule. This indicates a coding error somewhere in * the ACPI subsystem code. */ for (i = MutexId; i < ACPI_NUM_MUTEX; i++) { if (AcpiGbl_MutexInfo[i].ThreadId == ThisThreadId) { if (i == MutexId) { ACPI_ERROR ((AE_INFO, "Mutex [%s] already acquired by this thread [%u]", AcpiUtGetMutexName (MutexId), (UINT32) ThisThreadId)); return (AE_ALREADY_ACQUIRED); } ACPI_ERROR ((AE_INFO, "Invalid acquire order: Thread %u owns [%s], wants [%s]", (UINT32) ThisThreadId, AcpiUtGetMutexName (i), AcpiUtGetMutexName (MutexId))); return (AE_ACQUIRE_DEADLOCK); } } } #endif ACPI_DEBUG_PRINT ((ACPI_DB_MUTEX, "Thread %u attempting to acquire Mutex [%s]\n", (UINT32) ThisThreadId, AcpiUtGetMutexName (MutexId))); Status = AcpiOsAcquireMutex (AcpiGbl_MutexInfo[MutexId].Mutex, ACPI_WAIT_FOREVER); if (ACPI_SUCCESS (Status)) { ACPI_DEBUG_PRINT ((ACPI_DB_MUTEX, "Thread %u acquired Mutex [%s]\n", (UINT32) ThisThreadId, AcpiUtGetMutexName (MutexId))); AcpiGbl_MutexInfo[MutexId].UseCount++; AcpiGbl_MutexInfo[MutexId].ThreadId = ThisThreadId; } else { ACPI_EXCEPTION ((AE_INFO, Status, "Thread %u could not acquire Mutex [0x%X]", (UINT32) ThisThreadId, MutexId)); } return (Status); } /******************************************************************************* * * FUNCTION: AcpiUtReleaseMutex * * PARAMETERS: MutexID - ID of the mutex to be released * * RETURN: Status * * DESCRIPTION: Release a mutex object. * ******************************************************************************/ ACPI_STATUS AcpiUtReleaseMutex ( ACPI_MUTEX_HANDLE MutexId) { ACPI_FUNCTION_NAME (UtReleaseMutex); ACPI_DEBUG_PRINT ((ACPI_DB_MUTEX, "Thread %u releasing Mutex [%s]\n", (UINT32) AcpiOsGetThreadId (), AcpiUtGetMutexName (MutexId))); if (MutexId > ACPI_MAX_MUTEX) { return (AE_BAD_PARAMETER); } /* * Mutex must be acquired in order to release it! */ if (AcpiGbl_MutexInfo[MutexId].ThreadId == ACPI_MUTEX_NOT_ACQUIRED) { ACPI_ERROR ((AE_INFO, "Mutex [0x%X] is not acquired, cannot release", MutexId)); return (AE_NOT_ACQUIRED); } #ifdef ACPI_MUTEX_DEBUG { UINT32 i; /* * Mutex debug code, for internal debugging only. * * Deadlock prevention. Check if this thread owns any mutexes of value * greater than this one. If so, the thread has violated the mutex * ordering rule. This indicates a coding error somewhere in * the ACPI subsystem code. */ for (i = MutexId; i < ACPI_NUM_MUTEX; i++) { if (AcpiGbl_MutexInfo[i].ThreadId == AcpiOsGetThreadId ()) { if (i == MutexId) { continue; } ACPI_ERROR ((AE_INFO, "Invalid release order: owns [%s], releasing [%s]", AcpiUtGetMutexName (i), AcpiUtGetMutexName (MutexId))); return (AE_RELEASE_DEADLOCK); } } } #endif /* Mark unlocked FIRST */ AcpiGbl_MutexInfo[MutexId].ThreadId = ACPI_MUTEX_NOT_ACQUIRED; AcpiOsReleaseMutex (AcpiGbl_MutexInfo[MutexId].Mutex); return (AE_OK); } src/acpica/source/components/utilities/utobject.c000066400000000000000000000631451231470457100225650ustar00rootroot00000000000000/****************************************************************************** * * Module Name: utobject - ACPI object create/delete/size/cache routines * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #define __UTOBJECT_C__ #include "acpi.h" #include "accommon.h" #include "acnamesp.h" #define _COMPONENT ACPI_UTILITIES ACPI_MODULE_NAME ("utobject") /* Local prototypes */ static ACPI_STATUS AcpiUtGetSimpleObjectSize ( ACPI_OPERAND_OBJECT *Obj, ACPI_SIZE *ObjLength); static ACPI_STATUS AcpiUtGetPackageObjectSize ( ACPI_OPERAND_OBJECT *Obj, ACPI_SIZE *ObjLength); static ACPI_STATUS AcpiUtGetElementLength ( UINT8 ObjectType, ACPI_OPERAND_OBJECT *SourceObject, ACPI_GENERIC_STATE *State, void *Context); /******************************************************************************* * * FUNCTION: AcpiUtCreateInternalObjectDbg * * PARAMETERS: ModuleName - Source file name of caller * LineNumber - Line number of caller * ComponentId - Component type of caller * Type - ACPI Type of the new object * * RETURN: A new internal object, null on failure * * DESCRIPTION: Create and initialize a new internal object. * * NOTE: We always allocate the worst-case object descriptor because * these objects are cached, and we want them to be * one-size-satisifies-any-request. This in itself may not be * the most memory efficient, but the efficiency of the object * cache should more than make up for this! * ******************************************************************************/ ACPI_OPERAND_OBJECT * AcpiUtCreateInternalObjectDbg ( const char *ModuleName, UINT32 LineNumber, UINT32 ComponentId, ACPI_OBJECT_TYPE Type) { ACPI_OPERAND_OBJECT *Object; ACPI_OPERAND_OBJECT *SecondObject; ACPI_FUNCTION_TRACE_STR (UtCreateInternalObjectDbg, AcpiUtGetTypeName (Type)); /* Allocate the raw object descriptor */ Object = AcpiUtAllocateObjectDescDbg (ModuleName, LineNumber, ComponentId); if (!Object) { return_PTR (NULL); } switch (Type) { case ACPI_TYPE_REGION: case ACPI_TYPE_BUFFER_FIELD: case ACPI_TYPE_LOCAL_BANK_FIELD: /* These types require a secondary object */ SecondObject = AcpiUtAllocateObjectDescDbg (ModuleName, LineNumber, ComponentId); if (!SecondObject) { AcpiUtDeleteObjectDesc (Object); return_PTR (NULL); } SecondObject->Common.Type = ACPI_TYPE_LOCAL_EXTRA; SecondObject->Common.ReferenceCount = 1; /* Link the second object to the first */ Object->Common.NextObject = SecondObject; break; default: /* All others have no secondary object */ break; } /* Save the object type in the object descriptor */ Object->Common.Type = (UINT8) Type; /* Init the reference count */ Object->Common.ReferenceCount = 1; /* Any per-type initialization should go here */ return_PTR (Object); } /******************************************************************************* * * FUNCTION: AcpiUtCreatePackageObject * * PARAMETERS: Count - Number of package elements * * RETURN: Pointer to a new Package object, null on failure * * DESCRIPTION: Create a fully initialized package object * ******************************************************************************/ ACPI_OPERAND_OBJECT * AcpiUtCreatePackageObject ( UINT32 Count) { ACPI_OPERAND_OBJECT *PackageDesc; ACPI_OPERAND_OBJECT **PackageElements; ACPI_FUNCTION_TRACE_U32 (UtCreatePackageObject, Count); /* Create a new Package object */ PackageDesc = AcpiUtCreateInternalObject (ACPI_TYPE_PACKAGE); if (!PackageDesc) { return_PTR (NULL); } /* * Create the element array. Count+1 allows the array to be null * terminated. */ PackageElements = ACPI_ALLOCATE_ZEROED ( ((ACPI_SIZE) Count + 1) * sizeof (void *)); if (!PackageElements) { ACPI_FREE (PackageDesc); return_PTR (NULL); } PackageDesc->Package.Count = Count; PackageDesc->Package.Elements = PackageElements; return_PTR (PackageDesc); } /******************************************************************************* * * FUNCTION: AcpiUtCreateIntegerObject * * PARAMETERS: InitialValue - Initial value for the integer * * RETURN: Pointer to a new Integer object, null on failure * * DESCRIPTION: Create an initialized integer object * ******************************************************************************/ ACPI_OPERAND_OBJECT * AcpiUtCreateIntegerObject ( UINT64 InitialValue) { ACPI_OPERAND_OBJECT *IntegerDesc; ACPI_FUNCTION_TRACE (UtCreateIntegerObject); /* Create and initialize a new integer object */ IntegerDesc = AcpiUtCreateInternalObject (ACPI_TYPE_INTEGER); if (!IntegerDesc) { return_PTR (NULL); } IntegerDesc->Integer.Value = InitialValue; return_PTR (IntegerDesc); } /******************************************************************************* * * FUNCTION: AcpiUtCreateBufferObject * * PARAMETERS: BufferSize - Size of buffer to be created * * RETURN: Pointer to a new Buffer object, null on failure * * DESCRIPTION: Create a fully initialized buffer object * ******************************************************************************/ ACPI_OPERAND_OBJECT * AcpiUtCreateBufferObject ( ACPI_SIZE BufferSize) { ACPI_OPERAND_OBJECT *BufferDesc; UINT8 *Buffer = NULL; ACPI_FUNCTION_TRACE_U32 (UtCreateBufferObject, BufferSize); /* Create a new Buffer object */ BufferDesc = AcpiUtCreateInternalObject (ACPI_TYPE_BUFFER); if (!BufferDesc) { return_PTR (NULL); } /* Create an actual buffer only if size > 0 */ if (BufferSize > 0) { /* Allocate the actual buffer */ Buffer = ACPI_ALLOCATE_ZEROED (BufferSize); if (!Buffer) { ACPI_ERROR ((AE_INFO, "Could not allocate size %u", (UINT32) BufferSize)); AcpiUtRemoveReference (BufferDesc); return_PTR (NULL); } } /* Complete buffer object initialization */ BufferDesc->Buffer.Flags |= AOPOBJ_DATA_VALID; BufferDesc->Buffer.Pointer = Buffer; BufferDesc->Buffer.Length = (UINT32) BufferSize; /* Return the new buffer descriptor */ return_PTR (BufferDesc); } /******************************************************************************* * * FUNCTION: AcpiUtCreateStringObject * * PARAMETERS: StringSize - Size of string to be created. Does not * include NULL terminator, this is added * automatically. * * RETURN: Pointer to a new String object * * DESCRIPTION: Create a fully initialized string object * ******************************************************************************/ ACPI_OPERAND_OBJECT * AcpiUtCreateStringObject ( ACPI_SIZE StringSize) { ACPI_OPERAND_OBJECT *StringDesc; char *String; ACPI_FUNCTION_TRACE_U32 (UtCreateStringObject, StringSize); /* Create a new String object */ StringDesc = AcpiUtCreateInternalObject (ACPI_TYPE_STRING); if (!StringDesc) { return_PTR (NULL); } /* * Allocate the actual string buffer -- (Size + 1) for NULL terminator. * NOTE: Zero-length strings are NULL terminated */ String = ACPI_ALLOCATE_ZEROED (StringSize + 1); if (!String) { ACPI_ERROR ((AE_INFO, "Could not allocate size %u", (UINT32) StringSize)); AcpiUtRemoveReference (StringDesc); return_PTR (NULL); } /* Complete string object initialization */ StringDesc->String.Pointer = String; StringDesc->String.Length = (UINT32) StringSize; /* Return the new string descriptor */ return_PTR (StringDesc); } /******************************************************************************* * * FUNCTION: AcpiUtValidInternalObject * * PARAMETERS: Object - Object to be validated * * RETURN: TRUE if object is valid, FALSE otherwise * * DESCRIPTION: Validate a pointer to be of type ACPI_OPERAND_OBJECT * ******************************************************************************/ BOOLEAN AcpiUtValidInternalObject ( void *Object) { ACPI_FUNCTION_NAME (UtValidInternalObject); /* Check for a null pointer */ if (!Object) { ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "**** Null Object Ptr\n")); return (FALSE); } /* Check the descriptor type field */ switch (ACPI_GET_DESCRIPTOR_TYPE (Object)) { case ACPI_DESC_TYPE_OPERAND: /* The object appears to be a valid ACPI_OPERAND_OBJECT */ return (TRUE); default: ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "%p is not not an ACPI operand obj [%s]\n", Object, AcpiUtGetDescriptorName (Object))); break; } return (FALSE); } /******************************************************************************* * * FUNCTION: AcpiUtAllocateObjectDescDbg * * PARAMETERS: ModuleName - Caller's module name (for error output) * LineNumber - Caller's line number (for error output) * ComponentId - Caller's component ID (for error output) * * RETURN: Pointer to newly allocated object descriptor. Null on error * * DESCRIPTION: Allocate a new object descriptor. Gracefully handle * error conditions. * ******************************************************************************/ void * AcpiUtAllocateObjectDescDbg ( const char *ModuleName, UINT32 LineNumber, UINT32 ComponentId) { ACPI_OPERAND_OBJECT *Object; ACPI_FUNCTION_TRACE (UtAllocateObjectDescDbg); Object = AcpiOsAcquireObject (AcpiGbl_OperandCache); if (!Object) { ACPI_ERROR ((ModuleName, LineNumber, "Could not allocate an object descriptor")); return_PTR (NULL); } /* Mark the descriptor type */ ACPI_SET_DESCRIPTOR_TYPE (Object, ACPI_DESC_TYPE_OPERAND); ACPI_DEBUG_PRINT ((ACPI_DB_ALLOCATIONS, "%p Size %X\n", Object, (UINT32) sizeof (ACPI_OPERAND_OBJECT))); return_PTR (Object); } /******************************************************************************* * * FUNCTION: AcpiUtDeleteObjectDesc * * PARAMETERS: Object - An Acpi internal object to be deleted * * RETURN: None. * * DESCRIPTION: Free an ACPI object descriptor or add it to the object cache * ******************************************************************************/ void AcpiUtDeleteObjectDesc ( ACPI_OPERAND_OBJECT *Object) { ACPI_FUNCTION_TRACE_PTR (UtDeleteObjectDesc, Object); /* Object must be of type ACPI_OPERAND_OBJECT */ if (ACPI_GET_DESCRIPTOR_TYPE (Object) != ACPI_DESC_TYPE_OPERAND) { ACPI_ERROR ((AE_INFO, "%p is not an ACPI Operand object [%s]", Object, AcpiUtGetDescriptorName (Object))); return_VOID; } (void) AcpiOsReleaseObject (AcpiGbl_OperandCache, Object); return_VOID; } /******************************************************************************* * * FUNCTION: AcpiUtGetSimpleObjectSize * * PARAMETERS: InternalObject - An ACPI operand object * ObjLength - Where the length is returned * * RETURN: Status * * DESCRIPTION: This function is called to determine the space required to * contain a simple object for return to an external user. * * The length includes the object structure plus any additional * needed space. * ******************************************************************************/ static ACPI_STATUS AcpiUtGetSimpleObjectSize ( ACPI_OPERAND_OBJECT *InternalObject, ACPI_SIZE *ObjLength) { ACPI_SIZE Length; ACPI_SIZE Size; ACPI_STATUS Status = AE_OK; ACPI_FUNCTION_TRACE_PTR (UtGetSimpleObjectSize, InternalObject); /* Start with the length of the (external) Acpi object */ Length = sizeof (ACPI_OBJECT); /* A NULL object is allowed, can be a legal uninitialized package element */ if (!InternalObject) { /* * Object is NULL, just return the length of ACPI_OBJECT * (A NULL ACPI_OBJECT is an object of all zeroes.) */ *ObjLength = ACPI_ROUND_UP_TO_NATIVE_WORD (Length); return_ACPI_STATUS (AE_OK); } /* A Namespace Node should never appear here */ if (ACPI_GET_DESCRIPTOR_TYPE (InternalObject) == ACPI_DESC_TYPE_NAMED) { /* A namespace node should never get here */ return_ACPI_STATUS (AE_AML_INTERNAL); } /* * The final length depends on the object type * Strings and Buffers are packed right up against the parent object and * must be accessed bytewise or there may be alignment problems on * certain processors */ switch (InternalObject->Common.Type) { case ACPI_TYPE_STRING: Length += (ACPI_SIZE) InternalObject->String.Length + 1; break; case ACPI_TYPE_BUFFER: Length += (ACPI_SIZE) InternalObject->Buffer.Length; break; case ACPI_TYPE_INTEGER: case ACPI_TYPE_PROCESSOR: case ACPI_TYPE_POWER: /* No extra data for these types */ break; case ACPI_TYPE_LOCAL_REFERENCE: switch (InternalObject->Reference.Class) { case ACPI_REFCLASS_NAME: /* * Get the actual length of the full pathname to this object. * The reference will be converted to the pathname to the object */ Size = AcpiNsGetPathnameLength (InternalObject->Reference.Node); if (!Size) { return_ACPI_STATUS (AE_BAD_PARAMETER); } Length += ACPI_ROUND_UP_TO_NATIVE_WORD (Size); break; default: /* * No other reference opcodes are supported. * Notably, Locals and Args are not supported, but this may be * required eventually. */ ACPI_ERROR ((AE_INFO, "Cannot convert to external object - " "unsupported Reference Class [%s] 0x%X in object %p", AcpiUtGetReferenceName (InternalObject), InternalObject->Reference.Class, InternalObject)); Status = AE_TYPE; break; } break; default: ACPI_ERROR ((AE_INFO, "Cannot convert to external object - " "unsupported type [%s] 0x%X in object %p", AcpiUtGetObjectTypeName (InternalObject), InternalObject->Common.Type, InternalObject)); Status = AE_TYPE; break; } /* * Account for the space required by the object rounded up to the next * multiple of the machine word size. This keeps each object aligned * on a machine word boundary. (preventing alignment faults on some * machines.) */ *ObjLength = ACPI_ROUND_UP_TO_NATIVE_WORD (Length); return_ACPI_STATUS (Status); } /******************************************************************************* * * FUNCTION: AcpiUtGetElementLength * * PARAMETERS: ACPI_PKG_CALLBACK * * RETURN: Status * * DESCRIPTION: Get the length of one package element. * ******************************************************************************/ static ACPI_STATUS AcpiUtGetElementLength ( UINT8 ObjectType, ACPI_OPERAND_OBJECT *SourceObject, ACPI_GENERIC_STATE *State, void *Context) { ACPI_STATUS Status = AE_OK; ACPI_PKG_INFO *Info = (ACPI_PKG_INFO *) Context; ACPI_SIZE ObjectSpace; switch (ObjectType) { case ACPI_COPY_TYPE_SIMPLE: /* * Simple object - just get the size (Null object/entry is handled * here also) and sum it into the running package length */ Status = AcpiUtGetSimpleObjectSize (SourceObject, &ObjectSpace); if (ACPI_FAILURE (Status)) { return (Status); } Info->Length += ObjectSpace; break; case ACPI_COPY_TYPE_PACKAGE: /* Package object - nothing much to do here, let the walk handle it */ Info->NumPackages++; State->Pkg.ThisTargetObj = NULL; break; default: /* No other types allowed */ return (AE_BAD_PARAMETER); } return (Status); } /******************************************************************************* * * FUNCTION: AcpiUtGetPackageObjectSize * * PARAMETERS: InternalObject - An ACPI internal object * ObjLength - Where the length is returned * * RETURN: Status * * DESCRIPTION: This function is called to determine the space required to * contain a package object for return to an external user. * * This is moderately complex since a package contains other * objects including packages. * ******************************************************************************/ static ACPI_STATUS AcpiUtGetPackageObjectSize ( ACPI_OPERAND_OBJECT *InternalObject, ACPI_SIZE *ObjLength) { ACPI_STATUS Status; ACPI_PKG_INFO Info; ACPI_FUNCTION_TRACE_PTR (UtGetPackageObjectSize, InternalObject); Info.Length = 0; Info.ObjectSpace = 0; Info.NumPackages = 1; Status = AcpiUtWalkPackageTree (InternalObject, NULL, AcpiUtGetElementLength, &Info); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } /* * We have handled all of the objects in all levels of the package. * just add the length of the package objects themselves. * Round up to the next machine word. */ Info.Length += ACPI_ROUND_UP_TO_NATIVE_WORD (sizeof (ACPI_OBJECT)) * (ACPI_SIZE) Info.NumPackages; /* Return the total package length */ *ObjLength = Info.Length; return_ACPI_STATUS (Status); } /******************************************************************************* * * FUNCTION: AcpiUtGetObjectSize * * PARAMETERS: InternalObject - An ACPI internal object * ObjLength - Where the length will be returned * * RETURN: Status * * DESCRIPTION: This function is called to determine the space required to * contain an object for return to an API user. * ******************************************************************************/ ACPI_STATUS AcpiUtGetObjectSize ( ACPI_OPERAND_OBJECT *InternalObject, ACPI_SIZE *ObjLength) { ACPI_STATUS Status; ACPI_FUNCTION_ENTRY (); if ((ACPI_GET_DESCRIPTOR_TYPE (InternalObject) == ACPI_DESC_TYPE_OPERAND) && (InternalObject->Common.Type == ACPI_TYPE_PACKAGE)) { Status = AcpiUtGetPackageObjectSize (InternalObject, ObjLength); } else { Status = AcpiUtGetSimpleObjectSize (InternalObject, ObjLength); } return (Status); } src/acpica/source/components/utilities/utosi.c000066400000000000000000000517701231470457100221120ustar00rootroot00000000000000/****************************************************************************** * * Module Name: utosi - Support for the _OSI predefined control method * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #define __UTOSI_C__ #include "acpi.h" #include "accommon.h" #define _COMPONENT ACPI_UTILITIES ACPI_MODULE_NAME ("utosi") /****************************************************************************** * * ACPICA policy for new _OSI strings: * * It is the stated policy of ACPICA that new _OSI strings will be integrated * into this module as soon as possible after they are defined. It is strongly * recommended that all ACPICA hosts mirror this policy and integrate any * changes to this module as soon as possible. There are several historical * reasons behind this policy: * * 1) New BIOSs tend to test only the case where the host responds TRUE to * the latest version of Windows, which would respond to the latest/newest * _OSI string. Not responding TRUE to the latest version of Windows will * risk executing untested code paths throughout the DSDT and SSDTs. * * 2) If a new _OSI string is recognized only after a significant delay, this * has the potential to cause problems on existing working machines because * of the possibility that a new and different path through the ASL code * will be executed. * * 3) New _OSI strings are tending to come out about once per year. A delay * in recognizing a new string for a significant amount of time risks the * release of another string which only compounds the initial problem. * *****************************************************************************/ /* * Strings supported by the _OSI predefined control method (which is * implemented internally within this module.) * * March 2009: Removed "Linux" as this host no longer wants to respond true * for this string. Basically, the only safe OS strings are windows-related * and in many or most cases represent the only test path within the * BIOS-provided ASL code. * * The last element of each entry is used to track the newest version of * Windows that the BIOS has requested. */ static ACPI_INTERFACE_INFO AcpiDefaultSupportedInterfaces[] = { /* Operating System Vendor Strings */ {"Windows 2000", NULL, 0, ACPI_OSI_WIN_2000}, /* Windows 2000 */ {"Windows 2001", NULL, 0, ACPI_OSI_WIN_XP}, /* Windows XP */ {"Windows 2001 SP1", NULL, 0, ACPI_OSI_WIN_XP_SP1}, /* Windows XP SP1 */ {"Windows 2001.1", NULL, 0, ACPI_OSI_WINSRV_2003}, /* Windows Server 2003 */ {"Windows 2001 SP2", NULL, 0, ACPI_OSI_WIN_XP_SP2}, /* Windows XP SP2 */ {"Windows 2001.1 SP1", NULL, 0, ACPI_OSI_WINSRV_2003_SP1}, /* Windows Server 2003 SP1 - Added 03/2006 */ {"Windows 2006", NULL, 0, ACPI_OSI_WIN_VISTA}, /* Windows Vista - Added 03/2006 */ {"Windows 2006.1", NULL, 0, ACPI_OSI_WINSRV_2008}, /* Windows Server 2008 - Added 09/2009 */ {"Windows 2006 SP1", NULL, 0, ACPI_OSI_WIN_VISTA_SP1}, /* Windows Vista SP1 - Added 09/2009 */ {"Windows 2006 SP2", NULL, 0, ACPI_OSI_WIN_VISTA_SP2}, /* Windows Vista SP2 - Added 09/2010 */ {"Windows 2009", NULL, 0, ACPI_OSI_WIN_7}, /* Windows 7 and Server 2008 R2 - Added 09/2009 */ {"Windows 2012", NULL, 0, ACPI_OSI_WIN_8}, /* Windows 8 and Server 2012 - Added 08/2012 */ {"Windows 2013", NULL, 0, ACPI_OSI_WIN_8}, /* Windows 8.1 and Server 2012 R2 - Added 01/2014 */ /* Feature Group Strings */ {"Extended Address Space Descriptor", NULL, ACPI_OSI_FEATURE, 0}, /* * All "optional" feature group strings (features that are implemented * by the host) should be dynamically modified to VALID by the host via * AcpiInstallInterface or AcpiUpdateInterfaces. Such optional feature * group strings are set as INVALID by default here. */ {"Module Device", NULL, ACPI_OSI_OPTIONAL_FEATURE, 0}, {"Processor Device", NULL, ACPI_OSI_OPTIONAL_FEATURE, 0}, {"3.0 Thermal Model", NULL, ACPI_OSI_OPTIONAL_FEATURE, 0}, {"3.0 _SCP Extensions", NULL, ACPI_OSI_OPTIONAL_FEATURE, 0}, {"Processor Aggregator Device", NULL, ACPI_OSI_OPTIONAL_FEATURE, 0} }; /******************************************************************************* * * FUNCTION: AcpiUtInitializeInterfaces * * PARAMETERS: None * * RETURN: Status * * DESCRIPTION: Initialize the global _OSI supported interfaces list * ******************************************************************************/ ACPI_STATUS AcpiUtInitializeInterfaces ( void) { ACPI_STATUS Status; UINT32 i; Status = AcpiOsAcquireMutex (AcpiGbl_OsiMutex, ACPI_WAIT_FOREVER); if (ACPI_FAILURE (Status)) { return (Status); } AcpiGbl_SupportedInterfaces = AcpiDefaultSupportedInterfaces; /* Link the static list of supported interfaces */ for (i = 0; i < (ACPI_ARRAY_LENGTH (AcpiDefaultSupportedInterfaces) - 1); i++) { AcpiDefaultSupportedInterfaces[i].Next = &AcpiDefaultSupportedInterfaces[(ACPI_SIZE) i + 1]; } AcpiOsReleaseMutex (AcpiGbl_OsiMutex); return (AE_OK); } /******************************************************************************* * * FUNCTION: AcpiUtInterfaceTerminate * * PARAMETERS: None * * RETURN: Status * * DESCRIPTION: Delete all interfaces in the global list. Sets * AcpiGbl_SupportedInterfaces to NULL. * ******************************************************************************/ ACPI_STATUS AcpiUtInterfaceTerminate ( void) { ACPI_STATUS Status; ACPI_INTERFACE_INFO *NextInterface; Status = AcpiOsAcquireMutex (AcpiGbl_OsiMutex, ACPI_WAIT_FOREVER); if (ACPI_FAILURE (Status)) { return (Status); } NextInterface = AcpiGbl_SupportedInterfaces; while (NextInterface) { AcpiGbl_SupportedInterfaces = NextInterface->Next; if (NextInterface->Flags & ACPI_OSI_DYNAMIC) { /* Only interfaces added at runtime can be freed */ ACPI_FREE (NextInterface->Name); ACPI_FREE (NextInterface); } else { /* Interface is in static list. Reset it to invalid or valid. */ if (NextInterface->Flags & ACPI_OSI_DEFAULT_INVALID) { NextInterface->Flags |= ACPI_OSI_INVALID; } else { NextInterface->Flags &= ~ACPI_OSI_INVALID; } } NextInterface = AcpiGbl_SupportedInterfaces; } AcpiOsReleaseMutex (AcpiGbl_OsiMutex); return (AE_OK); } /******************************************************************************* * * FUNCTION: AcpiUtInstallInterface * * PARAMETERS: InterfaceName - The interface to install * * RETURN: Status * * DESCRIPTION: Install the interface into the global interface list. * Caller MUST hold AcpiGbl_OsiMutex * ******************************************************************************/ ACPI_STATUS AcpiUtInstallInterface ( ACPI_STRING InterfaceName) { ACPI_INTERFACE_INFO *InterfaceInfo; /* Allocate info block and space for the name string */ InterfaceInfo = ACPI_ALLOCATE_ZEROED (sizeof (ACPI_INTERFACE_INFO)); if (!InterfaceInfo) { return (AE_NO_MEMORY); } InterfaceInfo->Name = ACPI_ALLOCATE_ZEROED (ACPI_STRLEN (InterfaceName) + 1); if (!InterfaceInfo->Name) { ACPI_FREE (InterfaceInfo); return (AE_NO_MEMORY); } /* Initialize new info and insert at the head of the global list */ ACPI_STRCPY (InterfaceInfo->Name, InterfaceName); InterfaceInfo->Flags = ACPI_OSI_DYNAMIC; InterfaceInfo->Next = AcpiGbl_SupportedInterfaces; AcpiGbl_SupportedInterfaces = InterfaceInfo; return (AE_OK); } /******************************************************************************* * * FUNCTION: AcpiUtRemoveInterface * * PARAMETERS: InterfaceName - The interface to remove * * RETURN: Status * * DESCRIPTION: Remove the interface from the global interface list. * Caller MUST hold AcpiGbl_OsiMutex * ******************************************************************************/ ACPI_STATUS AcpiUtRemoveInterface ( ACPI_STRING InterfaceName) { ACPI_INTERFACE_INFO *PreviousInterface; ACPI_INTERFACE_INFO *NextInterface; PreviousInterface = NextInterface = AcpiGbl_SupportedInterfaces; while (NextInterface) { if (!ACPI_STRCMP (InterfaceName, NextInterface->Name)) { /* Found: name is in either the static list or was added at runtime */ if (NextInterface->Flags & ACPI_OSI_DYNAMIC) { /* Interface was added dynamically, remove and free it */ if (PreviousInterface == NextInterface) { AcpiGbl_SupportedInterfaces = NextInterface->Next; } else { PreviousInterface->Next = NextInterface->Next; } ACPI_FREE (NextInterface->Name); ACPI_FREE (NextInterface); } else { /* * Interface is in static list. If marked invalid, then it * does not actually exist. Else, mark it invalid. */ if (NextInterface->Flags & ACPI_OSI_INVALID) { return (AE_NOT_EXIST); } NextInterface->Flags |= ACPI_OSI_INVALID; } return (AE_OK); } PreviousInterface = NextInterface; NextInterface = NextInterface->Next; } /* Interface was not found */ return (AE_NOT_EXIST); } /******************************************************************************* * * FUNCTION: AcpiUtUpdateInterfaces * * PARAMETERS: Action - Actions to be performed during the * update * * RETURN: Status * * DESCRIPTION: Update _OSI interface strings, disabling or enabling OS vendor * strings or/and feature group strings. * Caller MUST hold AcpiGbl_OsiMutex * ******************************************************************************/ ACPI_STATUS AcpiUtUpdateInterfaces ( UINT8 Action) { ACPI_INTERFACE_INFO *NextInterface; NextInterface = AcpiGbl_SupportedInterfaces; while (NextInterface) { if (((NextInterface->Flags & ACPI_OSI_FEATURE) && (Action & ACPI_FEATURE_STRINGS)) || (!(NextInterface->Flags & ACPI_OSI_FEATURE) && (Action & ACPI_VENDOR_STRINGS))) { if (Action & ACPI_DISABLE_INTERFACES) { /* Mark the interfaces as invalid */ NextInterface->Flags |= ACPI_OSI_INVALID; } else { /* Mark the interfaces as valid */ NextInterface->Flags &= ~ACPI_OSI_INVALID; } } NextInterface = NextInterface->Next; } return (AE_OK); } /******************************************************************************* * * FUNCTION: AcpiUtGetInterface * * PARAMETERS: InterfaceName - The interface to find * * RETURN: ACPI_INTERFACE_INFO if found. NULL if not found. * * DESCRIPTION: Search for the specified interface name in the global list. * Caller MUST hold AcpiGbl_OsiMutex * ******************************************************************************/ ACPI_INTERFACE_INFO * AcpiUtGetInterface ( ACPI_STRING InterfaceName) { ACPI_INTERFACE_INFO *NextInterface; NextInterface = AcpiGbl_SupportedInterfaces; while (NextInterface) { if (!ACPI_STRCMP (InterfaceName, NextInterface->Name)) { return (NextInterface); } NextInterface = NextInterface->Next; } return (NULL); } /******************************************************************************* * * FUNCTION: AcpiUtOsiImplementation * * PARAMETERS: WalkState - Current walk state * * RETURN: Status * * DESCRIPTION: Implementation of the _OSI predefined control method. When * an invocation of _OSI is encountered in the system AML, * control is transferred to this function. * ******************************************************************************/ ACPI_STATUS AcpiUtOsiImplementation ( ACPI_WALK_STATE *WalkState) { ACPI_OPERAND_OBJECT *StringDesc; ACPI_OPERAND_OBJECT *ReturnDesc; ACPI_INTERFACE_INFO *InterfaceInfo; ACPI_INTERFACE_HANDLER InterfaceHandler; ACPI_STATUS Status; UINT32 ReturnValue; ACPI_FUNCTION_TRACE (UtOsiImplementation); /* Validate the string input argument (from the AML caller) */ StringDesc = WalkState->Arguments[0].Object; if (!StringDesc || (StringDesc->Common.Type != ACPI_TYPE_STRING)) { return_ACPI_STATUS (AE_TYPE); } /* Create a return object */ ReturnDesc = AcpiUtCreateInternalObject (ACPI_TYPE_INTEGER); if (!ReturnDesc) { return_ACPI_STATUS (AE_NO_MEMORY); } /* Default return value is 0, NOT SUPPORTED */ ReturnValue = 0; Status = AcpiOsAcquireMutex (AcpiGbl_OsiMutex, ACPI_WAIT_FOREVER); if (ACPI_FAILURE (Status)) { AcpiUtRemoveReference (ReturnDesc); return_ACPI_STATUS (Status); } /* Lookup the interface in the global _OSI list */ InterfaceInfo = AcpiUtGetInterface (StringDesc->String.Pointer); if (InterfaceInfo && !(InterfaceInfo->Flags & ACPI_OSI_INVALID)) { /* * The interface is supported. * Update the OsiData if necessary. We keep track of the latest * version of Windows that has been requested by the BIOS. */ if (InterfaceInfo->Value > AcpiGbl_OsiData) { AcpiGbl_OsiData = InterfaceInfo->Value; } ReturnValue = ACPI_UINT32_MAX; } AcpiOsReleaseMutex (AcpiGbl_OsiMutex); /* * Invoke an optional _OSI interface handler. The host OS may wish * to do some interface-specific handling. For example, warn about * certain interfaces or override the true/false support value. */ InterfaceHandler = AcpiGbl_InterfaceHandler; if (InterfaceHandler) { ReturnValue = InterfaceHandler ( StringDesc->String.Pointer, ReturnValue); } ACPI_DEBUG_PRINT_RAW ((ACPI_DB_INFO, "ACPI: BIOS _OSI(\"%s\") is %ssupported\n", StringDesc->String.Pointer, ReturnValue == 0 ? "not " : "")); /* Complete the return object */ ReturnDesc->Integer.Value = ReturnValue; WalkState->ReturnDesc = ReturnDesc; return_ACPI_STATUS (AE_OK); } src/acpica/source/components/utilities/utownerid.c000066400000000000000000000271711231470457100227650ustar00rootroot00000000000000/******************************************************************************* * * Module Name: utownerid - Support for Table/Method Owner IDs * ******************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #define __UTOWNERID_C__ #include "acpi.h" #include "accommon.h" #include "acnamesp.h" #define _COMPONENT ACPI_UTILITIES ACPI_MODULE_NAME ("utownerid") /******************************************************************************* * * FUNCTION: AcpiUtAllocateOwnerId * * PARAMETERS: OwnerId - Where the new owner ID is returned * * RETURN: Status * * DESCRIPTION: Allocate a table or method owner ID. The owner ID is used to * track objects created by the table or method, to be deleted * when the method exits or the table is unloaded. * ******************************************************************************/ ACPI_STATUS AcpiUtAllocateOwnerId ( ACPI_OWNER_ID *OwnerId) { UINT32 i; UINT32 j; UINT32 k; ACPI_STATUS Status; ACPI_FUNCTION_TRACE (UtAllocateOwnerId); /* Guard against multiple allocations of ID to the same location */ if (*OwnerId) { ACPI_ERROR ((AE_INFO, "Owner ID [0x%2.2X] already exists", *OwnerId)); return_ACPI_STATUS (AE_ALREADY_EXISTS); } /* Mutex for the global ID mask */ Status = AcpiUtAcquireMutex (ACPI_MTX_CACHES); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } /* * Find a free owner ID, cycle through all possible IDs on repeated * allocations. (ACPI_NUM_OWNERID_MASKS + 1) because first index may have * to be scanned twice. */ for (i = 0, j = AcpiGbl_LastOwnerIdIndex; i < (ACPI_NUM_OWNERID_MASKS + 1); i++, j++) { if (j >= ACPI_NUM_OWNERID_MASKS) { j = 0; /* Wraparound to start of mask array */ } for (k = AcpiGbl_NextOwnerIdOffset; k < 32; k++) { if (AcpiGbl_OwnerIdMask[j] == ACPI_UINT32_MAX) { /* There are no free IDs in this mask */ break; } if (!(AcpiGbl_OwnerIdMask[j] & (1 << k))) { /* * Found a free ID. The actual ID is the bit index plus one, * making zero an invalid Owner ID. Save this as the last ID * allocated and update the global ID mask. */ AcpiGbl_OwnerIdMask[j] |= (1 << k); AcpiGbl_LastOwnerIdIndex = (UINT8) j; AcpiGbl_NextOwnerIdOffset = (UINT8) (k + 1); /* * Construct encoded ID from the index and bit position * * Note: Last [j].k (bit 255) is never used and is marked * permanently allocated (prevents +1 overflow) */ *OwnerId = (ACPI_OWNER_ID) ((k + 1) + ACPI_MUL_32 (j)); ACPI_DEBUG_PRINT ((ACPI_DB_VALUES, "Allocated OwnerId: %2.2X\n", (unsigned int) *OwnerId)); goto Exit; } } AcpiGbl_NextOwnerIdOffset = 0; } /* * All OwnerIds have been allocated. This typically should * not happen since the IDs are reused after deallocation. The IDs are * allocated upon table load (one per table) and method execution, and * they are released when a table is unloaded or a method completes * execution. * * If this error happens, there may be very deep nesting of invoked control * methods, or there may be a bug where the IDs are not released. */ Status = AE_OWNER_ID_LIMIT; ACPI_ERROR ((AE_INFO, "Could not allocate new OwnerId (255 max), AE_OWNER_ID_LIMIT")); Exit: (void) AcpiUtReleaseMutex (ACPI_MTX_CACHES); return_ACPI_STATUS (Status); } /******************************************************************************* * * FUNCTION: AcpiUtReleaseOwnerId * * PARAMETERS: OwnerIdPtr - Pointer to a previously allocated OwnerID * * RETURN: None. No error is returned because we are either exiting a * control method or unloading a table. Either way, we would * ignore any error anyway. * * DESCRIPTION: Release a table or method owner ID. Valid IDs are 1 - 255 * ******************************************************************************/ void AcpiUtReleaseOwnerId ( ACPI_OWNER_ID *OwnerIdPtr) { ACPI_OWNER_ID OwnerId = *OwnerIdPtr; ACPI_STATUS Status; UINT32 Index; UINT32 Bit; ACPI_FUNCTION_TRACE_U32 (UtReleaseOwnerId, OwnerId); /* Always clear the input OwnerId (zero is an invalid ID) */ *OwnerIdPtr = 0; /* Zero is not a valid OwnerID */ if (OwnerId == 0) { ACPI_ERROR ((AE_INFO, "Invalid OwnerId: 0x%2.2X", OwnerId)); return_VOID; } /* Mutex for the global ID mask */ Status = AcpiUtAcquireMutex (ACPI_MTX_CACHES); if (ACPI_FAILURE (Status)) { return_VOID; } /* Normalize the ID to zero */ OwnerId--; /* Decode ID to index/offset pair */ Index = ACPI_DIV_32 (OwnerId); Bit = 1 << ACPI_MOD_32 (OwnerId); /* Free the owner ID only if it is valid */ if (AcpiGbl_OwnerIdMask[Index] & Bit) { AcpiGbl_OwnerIdMask[Index] ^= Bit; } else { ACPI_ERROR ((AE_INFO, "Release of non-allocated OwnerId: 0x%2.2X", OwnerId + 1)); } (void) AcpiUtReleaseMutex (ACPI_MTX_CACHES); return_VOID; } src/acpica/source/components/utilities/utpredef.c000066400000000000000000000405471231470457100225650ustar00rootroot00000000000000/****************************************************************************** * * Module Name: utpredef - support functions for predefined names * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #define __UTPREDEF_C__ #include "acpi.h" #include "accommon.h" #include "acpredef.h" #define _COMPONENT ACPI_UTILITIES ACPI_MODULE_NAME ("utpredef") /* * Names for the types that can be returned by the predefined objects. * Used for warning messages. Must be in the same order as the ACPI_RTYPEs */ static const char *UtRtypeNames[] = { "/Integer", "/String", "/Buffer", "/Package", "/Reference", }; /******************************************************************************* * * FUNCTION: AcpiUtGetNextPredefinedMethod * * PARAMETERS: ThisName - Entry in the predefined method/name table * * RETURN: Pointer to next entry in predefined table. * * DESCRIPTION: Get the next entry in the predefine method table. Handles the * cases where a package info entry follows a method name that * returns a package. * ******************************************************************************/ const ACPI_PREDEFINED_INFO * AcpiUtGetNextPredefinedMethod ( const ACPI_PREDEFINED_INFO *ThisName) { /* * Skip next entry in the table if this name returns a Package * (next entry contains the package info) */ if ((ThisName->Info.ExpectedBtypes & ACPI_RTYPE_PACKAGE) && (ThisName->Info.ExpectedBtypes != ACPI_RTYPE_ALL)) { ThisName++; } ThisName++; return (ThisName); } /******************************************************************************* * * FUNCTION: AcpiUtMatchPredefinedMethod * * PARAMETERS: Name - Name to find * * RETURN: Pointer to entry in predefined table. NULL indicates not found. * * DESCRIPTION: Check an object name against the predefined object list. * ******************************************************************************/ const ACPI_PREDEFINED_INFO * AcpiUtMatchPredefinedMethod ( char *Name) { const ACPI_PREDEFINED_INFO *ThisName; /* Quick check for a predefined name, first character must be underscore */ if (Name[0] != '_') { return (NULL); } /* Search info table for a predefined method/object name */ ThisName = AcpiGbl_PredefinedMethods; while (ThisName->Info.Name[0]) { if (ACPI_COMPARE_NAME (Name, ThisName->Info.Name)) { return (ThisName); } ThisName = AcpiUtGetNextPredefinedMethod (ThisName); } return (NULL); /* Not found */ } /******************************************************************************* * * FUNCTION: AcpiUtGetExpectedReturnTypes * * PARAMETERS: Buffer - Where the formatted string is returned * ExpectedBTypes - Bitfield of expected data types * * RETURN: Formatted string in Buffer. * * DESCRIPTION: Format the expected object types into a printable string. * ******************************************************************************/ void AcpiUtGetExpectedReturnTypes ( char *Buffer, UINT32 ExpectedBtypes) { UINT32 ThisRtype; UINT32 i; UINT32 j; if (!ExpectedBtypes) { ACPI_STRCPY (Buffer, "NONE"); return; } j = 1; Buffer[0] = 0; ThisRtype = ACPI_RTYPE_INTEGER; for (i = 0; i < ACPI_NUM_RTYPES; i++) { /* If one of the expected types, concatenate the name of this type */ if (ExpectedBtypes & ThisRtype) { ACPI_STRCAT (Buffer, &UtRtypeNames[i][j]); j = 0; /* Use name separator from now on */ } ThisRtype <<= 1; /* Next Rtype */ } } /******************************************************************************* * * The remaining functions are used by iASL and AcpiHelp only * ******************************************************************************/ #if (defined ACPI_ASL_COMPILER || defined ACPI_HELP_APP) #include #include /* Local prototypes */ static UINT32 AcpiUtGetArgumentTypes ( char *Buffer, UINT16 ArgumentTypes); /* Types that can be returned externally by a predefined name */ static const char *UtExternalTypeNames[] = /* Indexed by ACPI_TYPE_* */ { ", UNSUPPORTED-TYPE", ", Integer", ", String", ", Buffer", ", Package" }; /* Bit widths for resource descriptor predefined names */ static const char *UtResourceTypeNames[] = { "/1", "/2", "/3", "/8", "/16", "/32", "/64", "/variable", }; /******************************************************************************* * * FUNCTION: AcpiUtMatchResourceName * * PARAMETERS: Name - Name to find * * RETURN: Pointer to entry in the resource table. NULL indicates not * found. * * DESCRIPTION: Check an object name against the predefined resource * descriptor object list. * ******************************************************************************/ const ACPI_PREDEFINED_INFO * AcpiUtMatchResourceName ( char *Name) { const ACPI_PREDEFINED_INFO *ThisName; /* Quick check for a predefined name, first character must be underscore */ if (Name[0] != '_') { return (NULL); } /* Search info table for a predefined method/object name */ ThisName = AcpiGbl_ResourceNames; while (ThisName->Info.Name[0]) { if (ACPI_COMPARE_NAME (Name, ThisName->Info.Name)) { return (ThisName); } ThisName++; } return (NULL); /* Not found */ } /******************************************************************************* * * FUNCTION: AcpiUtDisplayPredefinedMethod * * PARAMETERS: Buffer - Scratch buffer for this function * ThisName - Entry in the predefined method/name table * MultiLine - TRUE if output should be on >1 line * * RETURN: None * * DESCRIPTION: Display information about a predefined method. Number and * type of the input arguments, and expected type(s) for the * return value, if any. * ******************************************************************************/ void AcpiUtDisplayPredefinedMethod ( char *Buffer, const ACPI_PREDEFINED_INFO *ThisName, BOOLEAN MultiLine) { UINT32 ArgCount; /* * Get the argument count and the string buffer * containing all argument types */ ArgCount = AcpiUtGetArgumentTypes (Buffer, ThisName->Info.ArgumentList); if (MultiLine) { printf (" "); } printf ("%4.4s Requires %s%u argument%s", ThisName->Info.Name, (ThisName->Info.ArgumentList & ARG_COUNT_IS_MINIMUM) ? "(at least) " : "", ArgCount, ArgCount != 1 ? "s" : ""); /* Display the types for any arguments */ if (ArgCount > 0) { printf (" (%s)", Buffer); } if (MultiLine) { printf ("\n "); } /* Get the return value type(s) allowed */ if (ThisName->Info.ExpectedBtypes) { AcpiUtGetExpectedReturnTypes (Buffer, ThisName->Info.ExpectedBtypes); printf (" Return value types: %s\n", Buffer); } else { printf (" No return value\n"); } } /******************************************************************************* * * FUNCTION: AcpiUtGetArgumentTypes * * PARAMETERS: Buffer - Where to return the formatted types * ArgumentTypes - Types field for this method * * RETURN: Count - the number of arguments required for this method * * DESCRIPTION: Format the required data types for this method (Integer, * String, Buffer, or Package) and return the required argument * count. * ******************************************************************************/ static UINT32 AcpiUtGetArgumentTypes ( char *Buffer, UINT16 ArgumentTypes) { UINT16 ThisArgumentType; UINT16 SubIndex; UINT16 ArgCount; UINT32 i; *Buffer = 0; SubIndex = 2; /* First field in the types list is the count of args to follow */ ArgCount = METHOD_GET_ARG_COUNT (ArgumentTypes); if (ArgCount > METHOD_PREDEF_ARGS_MAX) { printf ("**** Invalid argument count (%u) " "in predefined info structure\n", ArgCount); return (ArgCount); } /* Get each argument from the list, convert to ascii, store to buffer */ for (i = 0; i < ArgCount; i++) { ThisArgumentType = METHOD_GET_NEXT_TYPE (ArgumentTypes); if (!ThisArgumentType || (ThisArgumentType > METHOD_MAX_ARG_TYPE)) { printf ("**** Invalid argument type (%u) " "in predefined info structure\n", ThisArgumentType); return (ArgCount); } strcat (Buffer, UtExternalTypeNames[ThisArgumentType] + SubIndex); SubIndex = 0; } return (ArgCount); } /******************************************************************************* * * FUNCTION: AcpiUtGetResourceBitWidth * * PARAMETERS: Buffer - Where the formatted string is returned * Types - Bitfield of expected data types * * RETURN: Count of return types. Formatted string in Buffer. * * DESCRIPTION: Format the resource bit widths into a printable string. * ******************************************************************************/ UINT32 AcpiUtGetResourceBitWidth ( char *Buffer, UINT16 Types) { UINT32 i; UINT16 SubIndex; UINT32 Found; *Buffer = 0; SubIndex = 1; Found = 0; for (i = 0; i < NUM_RESOURCE_WIDTHS; i++) { if (Types & 1) { strcat (Buffer, &(UtResourceTypeNames[i][SubIndex])); SubIndex = 0; Found++; } Types >>= 1; } return (Found); } #endif src/acpica/source/components/utilities/utresrc.c000066400000000000000000000700371231470457100224330ustar00rootroot00000000000000/******************************************************************************* * * Module Name: utresrc - Resource management utilities * ******************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #define __UTRESRC_C__ #include "acpi.h" #include "accommon.h" #include "acresrc.h" #define _COMPONENT ACPI_UTILITIES ACPI_MODULE_NAME ("utresrc") #if defined(ACPI_DEBUG_OUTPUT) || defined (ACPI_DISASSEMBLER) || defined (ACPI_DEBUGGER) /* * Strings used to decode resource descriptors. * Used by both the disassembler and the debugger resource dump routines */ const char *AcpiGbl_BmDecode[] = { "NotBusMaster", "BusMaster" }; const char *AcpiGbl_ConfigDecode[] = { "0 - Good Configuration", "1 - Acceptable Configuration", "2 - Suboptimal Configuration", "3 - ***Invalid Configuration***", }; const char *AcpiGbl_ConsumeDecode[] = { "ResourceProducer", "ResourceConsumer" }; const char *AcpiGbl_DecDecode[] = { "PosDecode", "SubDecode" }; const char *AcpiGbl_HeDecode[] = { "Level", "Edge" }; const char *AcpiGbl_IoDecode[] = { "Decode10", "Decode16" }; const char *AcpiGbl_LlDecode[] = { "ActiveHigh", "ActiveLow" }; const char *AcpiGbl_MaxDecode[] = { "MaxNotFixed", "MaxFixed" }; const char *AcpiGbl_MemDecode[] = { "NonCacheable", "Cacheable", "WriteCombining", "Prefetchable" }; const char *AcpiGbl_MinDecode[] = { "MinNotFixed", "MinFixed" }; const char *AcpiGbl_MtpDecode[] = { "AddressRangeMemory", "AddressRangeReserved", "AddressRangeACPI", "AddressRangeNVS" }; const char *AcpiGbl_RngDecode[] = { "InvalidRanges", "NonISAOnlyRanges", "ISAOnlyRanges", "EntireRange" }; const char *AcpiGbl_RwDecode[] = { "ReadOnly", "ReadWrite" }; const char *AcpiGbl_ShrDecode[] = { "Exclusive", "Shared", "ExclusiveAndWake", /* ACPI 5.0 */ "SharedAndWake" /* ACPI 5.0 */ }; const char *AcpiGbl_SizDecode[] = { "Transfer8", "Transfer8_16", "Transfer16", "InvalidSize" }; const char *AcpiGbl_TrsDecode[] = { "DenseTranslation", "SparseTranslation" }; const char *AcpiGbl_TtpDecode[] = { "TypeStatic", "TypeTranslation" }; const char *AcpiGbl_TypDecode[] = { "Compatibility", "TypeA", "TypeB", "TypeF" }; const char *AcpiGbl_PpcDecode[] = { "PullDefault", "PullUp", "PullDown", "PullNone" }; const char *AcpiGbl_IorDecode[] = { "IoRestrictionNone", "IoRestrictionInputOnly", "IoRestrictionOutputOnly", "IoRestrictionNoneAndPreserve" }; const char *AcpiGbl_DtsDecode[] = { "Width8bit", "Width16bit", "Width32bit", "Width64bit", "Width128bit", "Width256bit", }; /* GPIO connection type */ const char *AcpiGbl_CtDecode[] = { "Interrupt", "I/O" }; /* Serial bus type */ const char *AcpiGbl_SbtDecode[] = { "/* UNKNOWN serial bus type */", "I2C", "SPI", "UART" }; /* I2C serial bus access mode */ const char *AcpiGbl_AmDecode[] = { "AddressingMode7Bit", "AddressingMode10Bit" }; /* I2C serial bus slave mode */ const char *AcpiGbl_SmDecode[] = { "ControllerInitiated", "DeviceInitiated" }; /* SPI serial bus wire mode */ const char *AcpiGbl_WmDecode[] = { "FourWireMode", "ThreeWireMode" }; /* SPI serial clock phase */ const char *AcpiGbl_CphDecode[] = { "ClockPhaseFirst", "ClockPhaseSecond" }; /* SPI serial bus clock polarity */ const char *AcpiGbl_CpoDecode[] = { "ClockPolarityLow", "ClockPolarityHigh" }; /* SPI serial bus device polarity */ const char *AcpiGbl_DpDecode[] = { "PolarityLow", "PolarityHigh" }; /* UART serial bus endian */ const char *AcpiGbl_EdDecode[] = { "LittleEndian", "BigEndian" }; /* UART serial bus bits per byte */ const char *AcpiGbl_BpbDecode[] = { "DataBitsFive", "DataBitsSix", "DataBitsSeven", "DataBitsEight", "DataBitsNine", "/* UNKNOWN Bits per byte */", "/* UNKNOWN Bits per byte */", "/* UNKNOWN Bits per byte */" }; /* UART serial bus stop bits */ const char *AcpiGbl_SbDecode[] = { "StopBitsNone", "StopBitsOne", "StopBitsOnePlusHalf", "StopBitsTwo" }; /* UART serial bus flow control */ const char *AcpiGbl_FcDecode[] = { "FlowControlNone", "FlowControlHardware", "FlowControlXON", "/* UNKNOWN flow control keyword */" }; /* UART serial bus parity type */ const char *AcpiGbl_PtDecode[] = { "ParityTypeNone", "ParityTypeEven", "ParityTypeOdd", "ParityTypeMark", "ParityTypeSpace", "/* UNKNOWN parity keyword */", "/* UNKNOWN parity keyword */", "/* UNKNOWN parity keyword */" }; #endif /* * Base sizes of the raw AML resource descriptors, indexed by resource type. * Zero indicates a reserved (and therefore invalid) resource type. */ const UINT8 AcpiGbl_ResourceAmlSizes[] = { /* Small descriptors */ 0, 0, 0, 0, ACPI_AML_SIZE_SMALL (AML_RESOURCE_IRQ), ACPI_AML_SIZE_SMALL (AML_RESOURCE_DMA), ACPI_AML_SIZE_SMALL (AML_RESOURCE_START_DEPENDENT), ACPI_AML_SIZE_SMALL (AML_RESOURCE_END_DEPENDENT), ACPI_AML_SIZE_SMALL (AML_RESOURCE_IO), ACPI_AML_SIZE_SMALL (AML_RESOURCE_FIXED_IO), ACPI_AML_SIZE_SMALL (AML_RESOURCE_FIXED_DMA), 0, 0, 0, ACPI_AML_SIZE_SMALL (AML_RESOURCE_VENDOR_SMALL), ACPI_AML_SIZE_SMALL (AML_RESOURCE_END_TAG), /* Large descriptors */ 0, ACPI_AML_SIZE_LARGE (AML_RESOURCE_MEMORY24), ACPI_AML_SIZE_LARGE (AML_RESOURCE_GENERIC_REGISTER), 0, ACPI_AML_SIZE_LARGE (AML_RESOURCE_VENDOR_LARGE), ACPI_AML_SIZE_LARGE (AML_RESOURCE_MEMORY32), ACPI_AML_SIZE_LARGE (AML_RESOURCE_FIXED_MEMORY32), ACPI_AML_SIZE_LARGE (AML_RESOURCE_ADDRESS32), ACPI_AML_SIZE_LARGE (AML_RESOURCE_ADDRESS16), ACPI_AML_SIZE_LARGE (AML_RESOURCE_EXTENDED_IRQ), ACPI_AML_SIZE_LARGE (AML_RESOURCE_ADDRESS64), ACPI_AML_SIZE_LARGE (AML_RESOURCE_EXTENDED_ADDRESS64), ACPI_AML_SIZE_LARGE (AML_RESOURCE_GPIO), 0, ACPI_AML_SIZE_LARGE (AML_RESOURCE_COMMON_SERIALBUS), }; const UINT8 AcpiGbl_ResourceAmlSerialBusSizes[] = { 0, ACPI_AML_SIZE_LARGE (AML_RESOURCE_I2C_SERIALBUS), ACPI_AML_SIZE_LARGE (AML_RESOURCE_SPI_SERIALBUS), ACPI_AML_SIZE_LARGE (AML_RESOURCE_UART_SERIALBUS), }; /* * Resource types, used to validate the resource length field. * The length of fixed-length types must match exactly, variable * lengths must meet the minimum required length, etc. * Zero indicates a reserved (and therefore invalid) resource type. */ static const UINT8 AcpiGbl_ResourceTypes[] = { /* Small descriptors */ 0, 0, 0, 0, ACPI_SMALL_VARIABLE_LENGTH, /* 04 IRQ */ ACPI_FIXED_LENGTH, /* 05 DMA */ ACPI_SMALL_VARIABLE_LENGTH, /* 06 StartDependentFunctions */ ACPI_FIXED_LENGTH, /* 07 EndDependentFunctions */ ACPI_FIXED_LENGTH, /* 08 IO */ ACPI_FIXED_LENGTH, /* 09 FixedIO */ ACPI_FIXED_LENGTH, /* 0A FixedDMA */ 0, 0, 0, ACPI_VARIABLE_LENGTH, /* 0E VendorShort */ ACPI_FIXED_LENGTH, /* 0F EndTag */ /* Large descriptors */ 0, ACPI_FIXED_LENGTH, /* 01 Memory24 */ ACPI_FIXED_LENGTH, /* 02 GenericRegister */ 0, ACPI_VARIABLE_LENGTH, /* 04 VendorLong */ ACPI_FIXED_LENGTH, /* 05 Memory32 */ ACPI_FIXED_LENGTH, /* 06 Memory32Fixed */ ACPI_VARIABLE_LENGTH, /* 07 Dword* address */ ACPI_VARIABLE_LENGTH, /* 08 Word* address */ ACPI_VARIABLE_LENGTH, /* 09 ExtendedIRQ */ ACPI_VARIABLE_LENGTH, /* 0A Qword* address */ ACPI_FIXED_LENGTH, /* 0B Extended* address */ ACPI_VARIABLE_LENGTH, /* 0C Gpio* */ 0, ACPI_VARIABLE_LENGTH /* 0E *SerialBus */ }; /******************************************************************************* * * FUNCTION: AcpiUtWalkAmlResources * * PARAMETERS: WalkState - Current walk info * PARAMETERS: Aml - Pointer to the raw AML resource template * AmlLength - Length of the entire template * UserFunction - Called once for each descriptor found. If * NULL, a pointer to the EndTag is returned * Context - Passed to UserFunction * * RETURN: Status * * DESCRIPTION: Walk a raw AML resource list(buffer). User function called * once for each resource found. * ******************************************************************************/ ACPI_STATUS AcpiUtWalkAmlResources ( ACPI_WALK_STATE *WalkState, UINT8 *Aml, ACPI_SIZE AmlLength, ACPI_WALK_AML_CALLBACK UserFunction, void **Context) { ACPI_STATUS Status; UINT8 *EndAml; UINT8 ResourceIndex; UINT32 Length; UINT32 Offset = 0; UINT8 EndTag[2] = {0x79, 0x00}; ACPI_FUNCTION_TRACE (UtWalkAmlResources); /* The absolute minimum resource template is one EndTag descriptor */ if (AmlLength < sizeof (AML_RESOURCE_END_TAG)) { return_ACPI_STATUS (AE_AML_NO_RESOURCE_END_TAG); } /* Point to the end of the resource template buffer */ EndAml = Aml + AmlLength; /* Walk the byte list, abort on any invalid descriptor type or length */ while (Aml < EndAml) { /* Validate the Resource Type and Resource Length */ Status = AcpiUtValidateResource (WalkState, Aml, &ResourceIndex); if (ACPI_FAILURE (Status)) { /* * Exit on failure. Cannot continue because the descriptor length * may be bogus also. */ return_ACPI_STATUS (Status); } /* Get the length of this descriptor */ Length = AcpiUtGetDescriptorLength (Aml); /* Invoke the user function */ if (UserFunction) { Status = UserFunction (Aml, Length, Offset, ResourceIndex, Context); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } } /* An EndTag descriptor terminates this resource template */ if (AcpiUtGetResourceType (Aml) == ACPI_RESOURCE_NAME_END_TAG) { /* * There must be at least one more byte in the buffer for * the 2nd byte of the EndTag */ if ((Aml + 1) >= EndAml) { return_ACPI_STATUS (AE_AML_NO_RESOURCE_END_TAG); } /* Return the pointer to the EndTag if requested */ if (!UserFunction) { *Context = Aml; } /* Normal exit */ return_ACPI_STATUS (AE_OK); } Aml += Length; Offset += Length; } /* Did not find an EndTag descriptor */ if (UserFunction) { /* Insert an EndTag anyway. AcpiRsGetListLength always leaves room */ (void) AcpiUtValidateResource (WalkState, EndTag, &ResourceIndex); Status = UserFunction (EndTag, 2, Offset, ResourceIndex, Context); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } } return_ACPI_STATUS (AE_AML_NO_RESOURCE_END_TAG); } /******************************************************************************* * * FUNCTION: AcpiUtValidateResource * * PARAMETERS: WalkState - Current walk info * Aml - Pointer to the raw AML resource descriptor * ReturnIndex - Where the resource index is returned. NULL * if the index is not required. * * RETURN: Status, and optionally the Index into the global resource tables * * DESCRIPTION: Validate an AML resource descriptor by checking the Resource * Type and Resource Length. Returns an index into the global * resource information/dispatch tables for later use. * ******************************************************************************/ ACPI_STATUS AcpiUtValidateResource ( ACPI_WALK_STATE *WalkState, void *Aml, UINT8 *ReturnIndex) { AML_RESOURCE *AmlResource; UINT8 ResourceType; UINT8 ResourceIndex; ACPI_RS_LENGTH ResourceLength; ACPI_RS_LENGTH MinimumResourceLength; ACPI_FUNCTION_ENTRY (); /* * 1) Validate the ResourceType field (Byte 0) */ ResourceType = ACPI_GET8 (Aml); /* * Byte 0 contains the descriptor name (Resource Type) * Examine the large/small bit in the resource header */ if (ResourceType & ACPI_RESOURCE_NAME_LARGE) { /* Verify the large resource type (name) against the max */ if (ResourceType > ACPI_RESOURCE_NAME_LARGE_MAX) { goto InvalidResource; } /* * Large Resource Type -- bits 6:0 contain the name * Translate range 0x80-0x8B to index range 0x10-0x1B */ ResourceIndex = (UINT8) (ResourceType - 0x70); } else { /* * Small Resource Type -- bits 6:3 contain the name * Shift range to index range 0x00-0x0F */ ResourceIndex = (UINT8) ((ResourceType & ACPI_RESOURCE_NAME_SMALL_MASK) >> 3); } /* * Check validity of the resource type, via AcpiGbl_ResourceTypes. Zero * indicates an invalid resource. */ if (!AcpiGbl_ResourceTypes[ResourceIndex]) { goto InvalidResource; } /* * Validate the ResourceLength field. This ensures that the length * is at least reasonable, and guarantees that it is non-zero. */ ResourceLength = AcpiUtGetResourceLength (Aml); MinimumResourceLength = AcpiGbl_ResourceAmlSizes[ResourceIndex]; /* Validate based upon the type of resource - fixed length or variable */ switch (AcpiGbl_ResourceTypes[ResourceIndex]) { case ACPI_FIXED_LENGTH: /* Fixed length resource, length must match exactly */ if (ResourceLength != MinimumResourceLength) { goto BadResourceLength; } break; case ACPI_VARIABLE_LENGTH: /* Variable length resource, length must be at least the minimum */ if (ResourceLength < MinimumResourceLength) { goto BadResourceLength; } break; case ACPI_SMALL_VARIABLE_LENGTH: /* Small variable length resource, length can be (Min) or (Min-1) */ if ((ResourceLength > MinimumResourceLength) || (ResourceLength < (MinimumResourceLength - 1))) { goto BadResourceLength; } break; default: /* Shouldn't happen (because of validation earlier), but be sure */ goto InvalidResource; } AmlResource = ACPI_CAST_PTR (AML_RESOURCE, Aml); if (ResourceType == ACPI_RESOURCE_NAME_SERIAL_BUS) { /* Validate the BusType field */ if ((AmlResource->CommonSerialBus.Type == 0) || (AmlResource->CommonSerialBus.Type > AML_RESOURCE_MAX_SERIALBUSTYPE)) { if (WalkState) { ACPI_ERROR ((AE_INFO, "Invalid/unsupported SerialBus resource descriptor: BusType 0x%2.2X", AmlResource->CommonSerialBus.Type)); } return (AE_AML_INVALID_RESOURCE_TYPE); } } /* Optionally return the resource table index */ if (ReturnIndex) { *ReturnIndex = ResourceIndex; } return (AE_OK); InvalidResource: if (WalkState) { ACPI_ERROR ((AE_INFO, "Invalid/unsupported resource descriptor: Type 0x%2.2X", ResourceType)); } return (AE_AML_INVALID_RESOURCE_TYPE); BadResourceLength: if (WalkState) { ACPI_ERROR ((AE_INFO, "Invalid resource descriptor length: Type " "0x%2.2X, Length 0x%4.4X, MinLength 0x%4.4X", ResourceType, ResourceLength, MinimumResourceLength)); } return (AE_AML_BAD_RESOURCE_LENGTH); } /******************************************************************************* * * FUNCTION: AcpiUtGetResourceType * * PARAMETERS: Aml - Pointer to the raw AML resource descriptor * * RETURN: The Resource Type with no extraneous bits (except the * Large/Small descriptor bit -- this is left alone) * * DESCRIPTION: Extract the Resource Type/Name from the first byte of * a resource descriptor. * ******************************************************************************/ UINT8 AcpiUtGetResourceType ( void *Aml) { ACPI_FUNCTION_ENTRY (); /* * Byte 0 contains the descriptor name (Resource Type) * Examine the large/small bit in the resource header */ if (ACPI_GET8 (Aml) & ACPI_RESOURCE_NAME_LARGE) { /* Large Resource Type -- bits 6:0 contain the name */ return (ACPI_GET8 (Aml)); } else { /* Small Resource Type -- bits 6:3 contain the name */ return ((UINT8) (ACPI_GET8 (Aml) & ACPI_RESOURCE_NAME_SMALL_MASK)); } } /******************************************************************************* * * FUNCTION: AcpiUtGetResourceLength * * PARAMETERS: Aml - Pointer to the raw AML resource descriptor * * RETURN: Byte Length * * DESCRIPTION: Get the "Resource Length" of a raw AML descriptor. By * definition, this does not include the size of the descriptor * header or the length field itself. * ******************************************************************************/ UINT16 AcpiUtGetResourceLength ( void *Aml) { ACPI_RS_LENGTH ResourceLength; ACPI_FUNCTION_ENTRY (); /* * Byte 0 contains the descriptor name (Resource Type) * Examine the large/small bit in the resource header */ if (ACPI_GET8 (Aml) & ACPI_RESOURCE_NAME_LARGE) { /* Large Resource type -- bytes 1-2 contain the 16-bit length */ ACPI_MOVE_16_TO_16 (&ResourceLength, ACPI_ADD_PTR (UINT8, Aml, 1)); } else { /* Small Resource type -- bits 2:0 of byte 0 contain the length */ ResourceLength = (UINT16) (ACPI_GET8 (Aml) & ACPI_RESOURCE_NAME_SMALL_LENGTH_MASK); } return (ResourceLength); } /******************************************************************************* * * FUNCTION: AcpiUtGetResourceHeaderLength * * PARAMETERS: Aml - Pointer to the raw AML resource descriptor * * RETURN: Length of the AML header (depends on large/small descriptor) * * DESCRIPTION: Get the length of the header for this resource. * ******************************************************************************/ UINT8 AcpiUtGetResourceHeaderLength ( void *Aml) { ACPI_FUNCTION_ENTRY (); /* Examine the large/small bit in the resource header */ if (ACPI_GET8 (Aml) & ACPI_RESOURCE_NAME_LARGE) { return (sizeof (AML_RESOURCE_LARGE_HEADER)); } else { return (sizeof (AML_RESOURCE_SMALL_HEADER)); } } /******************************************************************************* * * FUNCTION: AcpiUtGetDescriptorLength * * PARAMETERS: Aml - Pointer to the raw AML resource descriptor * * RETURN: Byte length * * DESCRIPTION: Get the total byte length of a raw AML descriptor, including the * length of the descriptor header and the length field itself. * Used to walk descriptor lists. * ******************************************************************************/ UINT32 AcpiUtGetDescriptorLength ( void *Aml) { ACPI_FUNCTION_ENTRY (); /* * Get the Resource Length (does not include header length) and add * the header length (depends on if this is a small or large resource) */ return (AcpiUtGetResourceLength (Aml) + AcpiUtGetResourceHeaderLength (Aml)); } /******************************************************************************* * * FUNCTION: AcpiUtGetResourceEndTag * * PARAMETERS: ObjDesc - The resource template buffer object * EndTag - Where the pointer to the EndTag is returned * * RETURN: Status, pointer to the end tag * * DESCRIPTION: Find the EndTag resource descriptor in an AML resource template * Note: allows a buffer length of zero. * ******************************************************************************/ ACPI_STATUS AcpiUtGetResourceEndTag ( ACPI_OPERAND_OBJECT *ObjDesc, UINT8 **EndTag) { ACPI_STATUS Status; ACPI_FUNCTION_TRACE (UtGetResourceEndTag); /* Allow a buffer length of zero */ if (!ObjDesc->Buffer.Length) { *EndTag = ObjDesc->Buffer.Pointer; return_ACPI_STATUS (AE_OK); } /* Validate the template and get a pointer to the EndTag */ Status = AcpiUtWalkAmlResources (NULL, ObjDesc->Buffer.Pointer, ObjDesc->Buffer.Length, NULL, (void **) EndTag); return_ACPI_STATUS (Status); } src/acpica/source/components/utilities/utstate.c000066400000000000000000000345011231470457100224310ustar00rootroot00000000000000/******************************************************************************* * * Module Name: utstate - state object support procedures * ******************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #define __UTSTATE_C__ #include "acpi.h" #include "accommon.h" #define _COMPONENT ACPI_UTILITIES ACPI_MODULE_NAME ("utstate") /******************************************************************************* * * FUNCTION: AcpiUtCreatePkgStateAndPush * * PARAMETERS: Object - Object to be added to the new state * Action - Increment/Decrement * StateList - List the state will be added to * * RETURN: Status * * DESCRIPTION: Create a new state and push it * ******************************************************************************/ ACPI_STATUS AcpiUtCreatePkgStateAndPush ( void *InternalObject, void *ExternalObject, UINT16 Index, ACPI_GENERIC_STATE **StateList) { ACPI_GENERIC_STATE *State; ACPI_FUNCTION_ENTRY (); State = AcpiUtCreatePkgState (InternalObject, ExternalObject, Index); if (!State) { return (AE_NO_MEMORY); } AcpiUtPushGenericState (StateList, State); return (AE_OK); } /******************************************************************************* * * FUNCTION: AcpiUtPushGenericState * * PARAMETERS: ListHead - Head of the state stack * State - State object to push * * RETURN: None * * DESCRIPTION: Push a state object onto a state stack * ******************************************************************************/ void AcpiUtPushGenericState ( ACPI_GENERIC_STATE **ListHead, ACPI_GENERIC_STATE *State) { ACPI_FUNCTION_ENTRY (); /* Push the state object onto the front of the list (stack) */ State->Common.Next = *ListHead; *ListHead = State; return; } /******************************************************************************* * * FUNCTION: AcpiUtPopGenericState * * PARAMETERS: ListHead - Head of the state stack * * RETURN: The popped state object * * DESCRIPTION: Pop a state object from a state stack * ******************************************************************************/ ACPI_GENERIC_STATE * AcpiUtPopGenericState ( ACPI_GENERIC_STATE **ListHead) { ACPI_GENERIC_STATE *State; ACPI_FUNCTION_ENTRY (); /* Remove the state object at the head of the list (stack) */ State = *ListHead; if (State) { /* Update the list head */ *ListHead = State->Common.Next; } return (State); } /******************************************************************************* * * FUNCTION: AcpiUtCreateGenericState * * PARAMETERS: None * * RETURN: The new state object. NULL on failure. * * DESCRIPTION: Create a generic state object. Attempt to obtain one from * the global state cache; If none available, create a new one. * ******************************************************************************/ ACPI_GENERIC_STATE * AcpiUtCreateGenericState ( void) { ACPI_GENERIC_STATE *State; ACPI_FUNCTION_ENTRY (); State = AcpiOsAcquireObject (AcpiGbl_StateCache); if (State) { /* Initialize */ State->Common.DescriptorType = ACPI_DESC_TYPE_STATE; } return (State); } /******************************************************************************* * * FUNCTION: AcpiUtCreateThreadState * * PARAMETERS: None * * RETURN: New Thread State. NULL on failure * * DESCRIPTION: Create a "Thread State" - a flavor of the generic state used * to track per-thread info during method execution * ******************************************************************************/ ACPI_THREAD_STATE * AcpiUtCreateThreadState ( void) { ACPI_GENERIC_STATE *State; ACPI_FUNCTION_ENTRY (); /* Create the generic state object */ State = AcpiUtCreateGenericState (); if (!State) { return (NULL); } /* Init fields specific to the update struct */ State->Common.DescriptorType = ACPI_DESC_TYPE_STATE_THREAD; State->Thread.ThreadId = AcpiOsGetThreadId (); /* Check for invalid thread ID - zero is very bad, it will break things */ if (!State->Thread.ThreadId) { ACPI_ERROR ((AE_INFO, "Invalid zero ID from AcpiOsGetThreadId")); State->Thread.ThreadId = (ACPI_THREAD_ID) 1; } return ((ACPI_THREAD_STATE *) State); } /******************************************************************************* * * FUNCTION: AcpiUtCreateUpdateState * * PARAMETERS: Object - Initial Object to be installed in the state * Action - Update action to be performed * * RETURN: New state object, null on failure * * DESCRIPTION: Create an "Update State" - a flavor of the generic state used * to update reference counts and delete complex objects such * as packages. * ******************************************************************************/ ACPI_GENERIC_STATE * AcpiUtCreateUpdateState ( ACPI_OPERAND_OBJECT *Object, UINT16 Action) { ACPI_GENERIC_STATE *State; ACPI_FUNCTION_ENTRY (); /* Create the generic state object */ State = AcpiUtCreateGenericState (); if (!State) { return (NULL); } /* Init fields specific to the update struct */ State->Common.DescriptorType = ACPI_DESC_TYPE_STATE_UPDATE; State->Update.Object = Object; State->Update.Value = Action; return (State); } /******************************************************************************* * * FUNCTION: AcpiUtCreatePkgState * * PARAMETERS: Object - Initial Object to be installed in the state * Action - Update action to be performed * * RETURN: New state object, null on failure * * DESCRIPTION: Create a "Package State" * ******************************************************************************/ ACPI_GENERIC_STATE * AcpiUtCreatePkgState ( void *InternalObject, void *ExternalObject, UINT16 Index) { ACPI_GENERIC_STATE *State; ACPI_FUNCTION_ENTRY (); /* Create the generic state object */ State = AcpiUtCreateGenericState (); if (!State) { return (NULL); } /* Init fields specific to the update struct */ State->Common.DescriptorType = ACPI_DESC_TYPE_STATE_PACKAGE; State->Pkg.SourceObject = (ACPI_OPERAND_OBJECT *) InternalObject; State->Pkg.DestObject = ExternalObject; State->Pkg.Index= Index; State->Pkg.NumPackages = 1; return (State); } /******************************************************************************* * * FUNCTION: AcpiUtCreateControlState * * PARAMETERS: None * * RETURN: New state object, null on failure * * DESCRIPTION: Create a "Control State" - a flavor of the generic state used * to support nested IF/WHILE constructs in the AML. * ******************************************************************************/ ACPI_GENERIC_STATE * AcpiUtCreateControlState ( void) { ACPI_GENERIC_STATE *State; ACPI_FUNCTION_ENTRY (); /* Create the generic state object */ State = AcpiUtCreateGenericState (); if (!State) { return (NULL); } /* Init fields specific to the control struct */ State->Common.DescriptorType = ACPI_DESC_TYPE_STATE_CONTROL; State->Common.State = ACPI_CONTROL_CONDITIONAL_EXECUTING; return (State); } /******************************************************************************* * * FUNCTION: AcpiUtDeleteGenericState * * PARAMETERS: State - The state object to be deleted * * RETURN: None * * DESCRIPTION: Release a state object to the state cache. NULL state objects * are ignored. * ******************************************************************************/ void AcpiUtDeleteGenericState ( ACPI_GENERIC_STATE *State) { ACPI_FUNCTION_ENTRY (); /* Ignore null state */ if (State) { (void) AcpiOsReleaseObject (AcpiGbl_StateCache, State); } return; } src/acpica/source/components/utilities/utstring.c000066400000000000000000000561641231470457100226300ustar00rootroot00000000000000/******************************************************************************* * * Module Name: utstring - Common functions for strings and characters * ******************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #define __UTSTRING_C__ #include "acpi.h" #include "accommon.h" #include "acnamesp.h" #define _COMPONENT ACPI_UTILITIES ACPI_MODULE_NAME ("utstring") /* * Non-ANSI C library functions - strlwr, strupr, stricmp, and a 64-bit * version of strtoul. */ #ifdef ACPI_ASL_COMPILER /******************************************************************************* * * FUNCTION: AcpiUtStrlwr (strlwr) * * PARAMETERS: SrcString - The source string to convert * * RETURN: None * * DESCRIPTION: Convert string to lowercase * * NOTE: This is not a POSIX function, so it appears here, not in utclib.c * ******************************************************************************/ void AcpiUtStrlwr ( char *SrcString) { char *String; ACPI_FUNCTION_ENTRY (); if (!SrcString) { return; } /* Walk entire string, lowercasing the letters */ for (String = SrcString; *String; String++) { *String = (char) ACPI_TOLOWER (*String); } return; } /****************************************************************************** * * FUNCTION: AcpiUtStricmp (stricmp) * * PARAMETERS: String1 - first string to compare * String2 - second string to compare * * RETURN: int that signifies string relationship. Zero means strings * are equal. * * DESCRIPTION: Implementation of the non-ANSI stricmp function (compare * strings with no case sensitivity) * ******************************************************************************/ int AcpiUtStricmp ( char *String1, char *String2) { int c1; int c2; do { c1 = tolower ((int) *String1); c2 = tolower ((int) *String2); String1++; String2++; } while ((c1 == c2) && (c1)); return (c1 - c2); } #endif /******************************************************************************* * * FUNCTION: AcpiUtStrupr (strupr) * * PARAMETERS: SrcString - The source string to convert * * RETURN: None * * DESCRIPTION: Convert string to uppercase * * NOTE: This is not a POSIX function, so it appears here, not in utclib.c * ******************************************************************************/ void AcpiUtStrupr ( char *SrcString) { char *String; ACPI_FUNCTION_ENTRY (); if (!SrcString) { return; } /* Walk entire string, uppercasing the letters */ for (String = SrcString; *String; String++) { *String = (char) ACPI_TOUPPER (*String); } return; } /******************************************************************************* * * FUNCTION: AcpiUtStrtoul64 * * PARAMETERS: String - Null terminated string * Base - Radix of the string: 16 or ACPI_ANY_BASE; * ACPI_ANY_BASE means 'in behalf of ToInteger' * RetInteger - Where the converted integer is returned * * RETURN: Status and Converted value * * DESCRIPTION: Convert a string into an unsigned value. Performs either a * 32-bit or 64-bit conversion, depending on the current mode * of the interpreter. * NOTE: Does not support Octal strings, not needed. * ******************************************************************************/ ACPI_STATUS AcpiUtStrtoul64 ( char *String, UINT32 Base, UINT64 *RetInteger) { UINT32 ThisDigit = 0; UINT64 ReturnValue = 0; UINT64 Quotient; UINT64 Dividend; UINT32 ToIntegerOp = (Base == ACPI_ANY_BASE); UINT32 Mode32 = (AcpiGbl_IntegerByteWidth == 4); UINT8 ValidDigits = 0; UINT8 SignOf0x = 0; UINT8 Term = 0; ACPI_FUNCTION_TRACE_STR (UtStroul64, String); switch (Base) { case ACPI_ANY_BASE: case 16: break; default: /* Invalid Base */ return_ACPI_STATUS (AE_BAD_PARAMETER); } if (!String) { goto ErrorExit; } /* Skip over any white space in the buffer */ while ((*String) && (ACPI_IS_SPACE (*String) || *String == '\t')) { String++; } if (ToIntegerOp) { /* * Base equal to ACPI_ANY_BASE means 'ToInteger operation case'. * We need to determine if it is decimal or hexadecimal. */ if ((*String == '0') && (ACPI_TOLOWER (*(String + 1)) == 'x')) { SignOf0x = 1; Base = 16; /* Skip over the leading '0x' */ String += 2; } else { Base = 10; } } /* Any string left? Check that '0x' is not followed by white space. */ if (!(*String) || ACPI_IS_SPACE (*String) || *String == '\t') { if (ToIntegerOp) { goto ErrorExit; } else { goto AllDone; } } /* * Perform a 32-bit or 64-bit conversion, depending upon the current * execution mode of the interpreter */ Dividend = (Mode32) ? ACPI_UINT32_MAX : ACPI_UINT64_MAX; /* Main loop: convert the string to a 32- or 64-bit integer */ while (*String) { if (ACPI_IS_DIGIT (*String)) { /* Convert ASCII 0-9 to Decimal value */ ThisDigit = ((UINT8) *String) - '0'; } else if (Base == 10) { /* Digit is out of range; possible in ToInteger case only */ Term = 1; } else { ThisDigit = (UINT8) ACPI_TOUPPER (*String); if (ACPI_IS_XDIGIT ((char) ThisDigit)) { /* Convert ASCII Hex char to value */ ThisDigit = ThisDigit - 'A' + 10; } else { Term = 1; } } if (Term) { if (ToIntegerOp) { goto ErrorExit; } else { break; } } else if ((ValidDigits == 0) && (ThisDigit == 0) && !SignOf0x) { /* Skip zeros */ String++; continue; } ValidDigits++; if (SignOf0x && ((ValidDigits > 16) || ((ValidDigits > 8) && Mode32))) { /* * This is ToInteger operation case. * No any restrictions for string-to-integer conversion, * see ACPI spec. */ goto ErrorExit; } /* Divide the digit into the correct position */ (void) AcpiUtShortDivide ((Dividend - (UINT64) ThisDigit), Base, &Quotient, NULL); if (ReturnValue > Quotient) { if (ToIntegerOp) { goto ErrorExit; } else { break; } } ReturnValue *= Base; ReturnValue += ThisDigit; String++; } /* All done, normal exit */ AllDone: ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "Converted value: %8.8X%8.8X\n", ACPI_FORMAT_UINT64 (ReturnValue))); *RetInteger = ReturnValue; return_ACPI_STATUS (AE_OK); ErrorExit: /* Base was set/validated above */ if (Base == 10) { return_ACPI_STATUS (AE_BAD_DECIMAL_CONSTANT); } else { return_ACPI_STATUS (AE_BAD_HEX_CONSTANT); } } /******************************************************************************* * * FUNCTION: AcpiUtPrintString * * PARAMETERS: String - Null terminated ASCII string * MaxLength - Maximum output length. Used to constrain the * length of strings during debug output only. * * RETURN: None * * DESCRIPTION: Dump an ASCII string with support for ACPI-defined escape * sequences. * ******************************************************************************/ void AcpiUtPrintString ( char *String, UINT16 MaxLength) { UINT32 i; if (!String) { AcpiOsPrintf ("<\"NULL STRING PTR\">"); return; } AcpiOsPrintf ("\""); for (i = 0; (i < MaxLength) && String[i]; i++) { /* Escape sequences */ switch (String[i]) { case 0x07: AcpiOsPrintf ("\\a"); /* BELL */ break; case 0x08: AcpiOsPrintf ("\\b"); /* BACKSPACE */ break; case 0x0C: AcpiOsPrintf ("\\f"); /* FORMFEED */ break; case 0x0A: AcpiOsPrintf ("\\n"); /* LINEFEED */ break; case 0x0D: AcpiOsPrintf ("\\r"); /* CARRIAGE RETURN*/ break; case 0x09: AcpiOsPrintf ("\\t"); /* HORIZONTAL TAB */ break; case 0x0B: AcpiOsPrintf ("\\v"); /* VERTICAL TAB */ break; case '\'': /* Single Quote */ case '\"': /* Double Quote */ case '\\': /* Backslash */ AcpiOsPrintf ("\\%c", (int) String[i]); break; default: /* Check for printable character or hex escape */ if (ACPI_IS_PRINT (String[i])) { /* This is a normal character */ AcpiOsPrintf ("%c", (int) String[i]); } else { /* All others will be Hex escapes */ AcpiOsPrintf ("\\x%2.2X", (INT32) String[i]); } break; } } AcpiOsPrintf ("\""); if (i == MaxLength && String[i]) { AcpiOsPrintf ("..."); } } /******************************************************************************* * * FUNCTION: AcpiUtValidAcpiChar * * PARAMETERS: Char - The character to be examined * Position - Byte position (0-3) * * RETURN: TRUE if the character is valid, FALSE otherwise * * DESCRIPTION: Check for a valid ACPI character. Must be one of: * 1) Upper case alpha * 2) numeric * 3) underscore * * We allow a '!' as the last character because of the ASF! table * ******************************************************************************/ BOOLEAN AcpiUtValidAcpiChar ( char Character, UINT32 Position) { if (!((Character >= 'A' && Character <= 'Z') || (Character >= '0' && Character <= '9') || (Character == '_'))) { /* Allow a '!' in the last position */ if (Character == '!' && Position == 3) { return (TRUE); } return (FALSE); } return (TRUE); } /******************************************************************************* * * FUNCTION: AcpiUtValidAcpiName * * PARAMETERS: Name - The name to be examined. Does not have to * be NULL terminated string. * * RETURN: TRUE if the name is valid, FALSE otherwise * * DESCRIPTION: Check for a valid ACPI name. Each character must be one of: * 1) Upper case alpha * 2) numeric * 3) underscore * ******************************************************************************/ BOOLEAN AcpiUtValidAcpiName ( char *Name) { UINT32 i; ACPI_FUNCTION_ENTRY (); for (i = 0; i < ACPI_NAME_SIZE; i++) { if (!AcpiUtValidAcpiChar (Name[i], i)) { return (FALSE); } } return (TRUE); } /******************************************************************************* * * FUNCTION: AcpiUtRepairName * * PARAMETERS: Name - The ACPI name to be repaired * * RETURN: Repaired version of the name * * DESCRIPTION: Repair an ACPI name: Change invalid characters to '*' and * return the new name. NOTE: the Name parameter must reside in * read/write memory, cannot be a const. * * An ACPI Name must consist of valid ACPI characters. We will repair the name * if necessary because we don't want to abort because of this, but we want * all namespace names to be printable. A warning message is appropriate. * * This issue came up because there are in fact machines that exhibit * this problem, and we want to be able to enable ACPI support for them, * even though there are a few bad names. * ******************************************************************************/ void AcpiUtRepairName ( char *Name) { UINT32 i; BOOLEAN FoundBadChar = FALSE; UINT32 OriginalName; ACPI_FUNCTION_NAME (UtRepairName); ACPI_MOVE_NAME (&OriginalName, Name); /* Check each character in the name */ for (i = 0; i < ACPI_NAME_SIZE; i++) { if (AcpiUtValidAcpiChar (Name[i], i)) { continue; } /* * Replace a bad character with something printable, yet technically * still invalid. This prevents any collisions with existing "good" * names in the namespace. */ Name[i] = '*'; FoundBadChar = TRUE; } if (FoundBadChar) { /* Report warning only if in strict mode or debug mode */ if (!AcpiGbl_EnableInterpreterSlack) { ACPI_WARNING ((AE_INFO, "Invalid character(s) in name (0x%.8X), repaired: [%4.4s]", OriginalName, Name)); } else { ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Invalid character(s) in name (0x%.8X), repaired: [%4.4s]", OriginalName, Name)); } } } #if defined ACPI_ASL_COMPILER || defined ACPI_EXEC_APP /******************************************************************************* * * FUNCTION: UtConvertBackslashes * * PARAMETERS: Pathname - File pathname string to be converted * * RETURN: Modifies the input Pathname * * DESCRIPTION: Convert all backslashes (0x5C) to forward slashes (0x2F) within * the entire input file pathname string. * ******************************************************************************/ void UtConvertBackslashes ( char *Pathname) { if (!Pathname) { return; } while (*Pathname) { if (*Pathname == '\\') { *Pathname = '/'; } Pathname++; } } #endif #if defined (ACPI_DEBUGGER) || defined (ACPI_APPLICATION) /******************************************************************************* * * FUNCTION: AcpiUtSafeStrcpy, AcpiUtSafeStrcat, AcpiUtSafeStrncat * * PARAMETERS: Adds a "DestSize" parameter to each of the standard string * functions. This is the size of the Destination buffer. * * RETURN: TRUE if the operation would overflow the destination buffer. * * DESCRIPTION: Safe versions of standard Clib string functions. Ensure that * the result of the operation will not overflow the output string * buffer. * * NOTE: These functions are typically only helpful for processing * user input and command lines. For most ACPICA code, the * required buffer length is precisely calculated before buffer * allocation, so the use of these functions is unnecessary. * ******************************************************************************/ BOOLEAN AcpiUtSafeStrcpy ( char *Dest, ACPI_SIZE DestSize, char *Source) { if (ACPI_STRLEN (Source) >= DestSize) { return (TRUE); } ACPI_STRCPY (Dest, Source); return (FALSE); } BOOLEAN AcpiUtSafeStrcat ( char *Dest, ACPI_SIZE DestSize, char *Source) { if ((ACPI_STRLEN (Dest) + ACPI_STRLEN (Source)) >= DestSize) { return (TRUE); } ACPI_STRCAT (Dest, Source); return (FALSE); } BOOLEAN AcpiUtSafeStrncat ( char *Dest, ACPI_SIZE DestSize, char *Source, ACPI_SIZE MaxTransferLength) { ACPI_SIZE ActualTransferLength; ActualTransferLength = ACPI_MIN (MaxTransferLength, ACPI_STRLEN (Source)); if ((ACPI_STRLEN (Dest) + ActualTransferLength) >= DestSize) { return (TRUE); } ACPI_STRNCAT (Dest, Source, MaxTransferLength); return (FALSE); } #endif src/acpica/source/components/utilities/uttrack.c000066400000000000000000000653151231470457100224240ustar00rootroot00000000000000/****************************************************************************** * * Module Name: uttrack - Memory allocation tracking routines (debug only) * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ /* * These procedures are used for tracking memory leaks in the subsystem, and * they get compiled out when the ACPI_DBG_TRACK_ALLOCATIONS is not set. * * Each memory allocation is tracked via a doubly linked list. Each * element contains the caller's component, module name, function name, and * line number. AcpiUtAllocate and AcpiUtAllocateZeroed call * AcpiUtTrackAllocation to add an element to the list; deletion * occurs in the body of AcpiUtFree. */ #define __UTTRACK_C__ #include "acpi.h" #include "accommon.h" #ifdef ACPI_DBG_TRACK_ALLOCATIONS #define _COMPONENT ACPI_UTILITIES ACPI_MODULE_NAME ("uttrack") /* Local prototypes */ static ACPI_DEBUG_MEM_BLOCK * AcpiUtFindAllocation ( ACPI_DEBUG_MEM_BLOCK *Allocation); static ACPI_STATUS AcpiUtTrackAllocation ( ACPI_DEBUG_MEM_BLOCK *Address, ACPI_SIZE Size, UINT8 AllocType, UINT32 Component, const char *Module, UINT32 Line); static ACPI_STATUS AcpiUtRemoveAllocation ( ACPI_DEBUG_MEM_BLOCK *Address, UINT32 Component, const char *Module, UINT32 Line); /******************************************************************************* * * FUNCTION: AcpiUtCreateList * * PARAMETERS: CacheName - Ascii name for the cache * ObjectSize - Size of each cached object * ReturnCache - Where the new cache object is returned * * RETURN: Status * * DESCRIPTION: Create a local memory list for tracking purposed * ******************************************************************************/ ACPI_STATUS AcpiUtCreateList ( char *ListName, UINT16 ObjectSize, ACPI_MEMORY_LIST **ReturnCache) { ACPI_MEMORY_LIST *Cache; Cache = AcpiOsAllocate (sizeof (ACPI_MEMORY_LIST)); if (!Cache) { return (AE_NO_MEMORY); } ACPI_MEMSET (Cache, 0, sizeof (ACPI_MEMORY_LIST)); Cache->ListName = ListName; Cache->ObjectSize = ObjectSize; *ReturnCache = Cache; return (AE_OK); } /******************************************************************************* * * FUNCTION: AcpiUtAllocateAndTrack * * PARAMETERS: Size - Size of the allocation * Component - Component type of caller * Module - Source file name of caller * Line - Line number of caller * * RETURN: Address of the allocated memory on success, NULL on failure. * * DESCRIPTION: The subsystem's equivalent of malloc. * ******************************************************************************/ void * AcpiUtAllocateAndTrack ( ACPI_SIZE Size, UINT32 Component, const char *Module, UINT32 Line) { ACPI_DEBUG_MEM_BLOCK *Allocation; ACPI_STATUS Status; /* Check for an inadvertent size of zero bytes */ if (!Size) { ACPI_WARNING ((Module, Line, "Attempt to allocate zero bytes, allocating 1 byte")); Size = 1; } Allocation = AcpiOsAllocate (Size + sizeof (ACPI_DEBUG_MEM_HEADER)); if (!Allocation) { /* Report allocation error */ ACPI_WARNING ((Module, Line, "Could not allocate size %u", (UINT32) Size)); return (NULL); } Status = AcpiUtTrackAllocation (Allocation, Size, ACPI_MEM_MALLOC, Component, Module, Line); if (ACPI_FAILURE (Status)) { AcpiOsFree (Allocation); return (NULL); } AcpiGbl_GlobalList->TotalAllocated++; AcpiGbl_GlobalList->TotalSize += (UINT32) Size; AcpiGbl_GlobalList->CurrentTotalSize += (UINT32) Size; if (AcpiGbl_GlobalList->CurrentTotalSize > AcpiGbl_GlobalList->MaxOccupied) { AcpiGbl_GlobalList->MaxOccupied = AcpiGbl_GlobalList->CurrentTotalSize; } return ((void *) &Allocation->UserSpace); } /******************************************************************************* * * FUNCTION: AcpiUtAllocateZeroedAndTrack * * PARAMETERS: Size - Size of the allocation * Component - Component type of caller * Module - Source file name of caller * Line - Line number of caller * * RETURN: Address of the allocated memory on success, NULL on failure. * * DESCRIPTION: Subsystem equivalent of calloc. * ******************************************************************************/ void * AcpiUtAllocateZeroedAndTrack ( ACPI_SIZE Size, UINT32 Component, const char *Module, UINT32 Line) { ACPI_DEBUG_MEM_BLOCK *Allocation; ACPI_STATUS Status; /* Check for an inadvertent size of zero bytes */ if (!Size) { ACPI_WARNING ((Module, Line, "Attempt to allocate zero bytes, allocating 1 byte")); Size = 1; } Allocation = AcpiOsAllocateZeroed (Size + sizeof (ACPI_DEBUG_MEM_HEADER)); if (!Allocation) { /* Report allocation error */ ACPI_ERROR ((Module, Line, "Could not allocate size %u", (UINT32) Size)); return (NULL); } Status = AcpiUtTrackAllocation (Allocation, Size, ACPI_MEM_CALLOC, Component, Module, Line); if (ACPI_FAILURE (Status)) { AcpiOsFree (Allocation); return (NULL); } AcpiGbl_GlobalList->TotalAllocated++; AcpiGbl_GlobalList->TotalSize += (UINT32) Size; AcpiGbl_GlobalList->CurrentTotalSize += (UINT32) Size; if (AcpiGbl_GlobalList->CurrentTotalSize > AcpiGbl_GlobalList->MaxOccupied) { AcpiGbl_GlobalList->MaxOccupied = AcpiGbl_GlobalList->CurrentTotalSize; } return ((void *) &Allocation->UserSpace); } /******************************************************************************* * * FUNCTION: AcpiUtFreeAndTrack * * PARAMETERS: Allocation - Address of the memory to deallocate * Component - Component type of caller * Module - Source file name of caller * Line - Line number of caller * * RETURN: None * * DESCRIPTION: Frees the memory at Allocation * ******************************************************************************/ void AcpiUtFreeAndTrack ( void *Allocation, UINT32 Component, const char *Module, UINT32 Line) { ACPI_DEBUG_MEM_BLOCK *DebugBlock; ACPI_STATUS Status; ACPI_FUNCTION_TRACE_PTR (UtFree, Allocation); if (NULL == Allocation) { ACPI_ERROR ((Module, Line, "Attempt to delete a NULL address")); return_VOID; } DebugBlock = ACPI_CAST_PTR (ACPI_DEBUG_MEM_BLOCK, (((char *) Allocation) - sizeof (ACPI_DEBUG_MEM_HEADER))); AcpiGbl_GlobalList->TotalFreed++; AcpiGbl_GlobalList->CurrentTotalSize -= DebugBlock->Size; Status = AcpiUtRemoveAllocation (DebugBlock, Component, Module, Line); if (ACPI_FAILURE (Status)) { ACPI_EXCEPTION ((AE_INFO, Status, "Could not free memory")); } AcpiOsFree (DebugBlock); ACPI_DEBUG_PRINT ((ACPI_DB_ALLOCATIONS, "%p freed (block %p)\n", Allocation, DebugBlock)); return_VOID; } /******************************************************************************* * * FUNCTION: AcpiUtFindAllocation * * PARAMETERS: Allocation - Address of allocated memory * * RETURN: Three cases: * 1) List is empty, NULL is returned. * 2) Element was found. Returns Allocation parameter. * 3) Element was not found. Returns position where it should be * inserted into the list. * * DESCRIPTION: Searches for an element in the global allocation tracking list. * If the element is not found, returns the location within the * list where the element should be inserted. * * Note: The list is ordered by larger-to-smaller addresses. * * This global list is used to detect memory leaks in ACPICA as * well as other issues such as an attempt to release the same * internal object more than once. Although expensive as far * as cpu time, this list is much more helpful for finding these * types of issues than using memory leak detectors outside of * the ACPICA code. * ******************************************************************************/ static ACPI_DEBUG_MEM_BLOCK * AcpiUtFindAllocation ( ACPI_DEBUG_MEM_BLOCK *Allocation) { ACPI_DEBUG_MEM_BLOCK *Element; Element = AcpiGbl_GlobalList->ListHead; if (!Element) { return (NULL); } /* * Search for the address. * * Note: List is ordered by larger-to-smaller addresses, on the * assumption that a new allocation usually has a larger address * than previous allocations. */ while (Element > Allocation) { /* Check for end-of-list */ if (!Element->Next) { return (Element); } Element = Element->Next; } if (Element == Allocation) { return (Element); } return (Element->Previous); } /******************************************************************************* * * FUNCTION: AcpiUtTrackAllocation * * PARAMETERS: Allocation - Address of allocated memory * Size - Size of the allocation * AllocType - MEM_MALLOC or MEM_CALLOC * Component - Component type of caller * Module - Source file name of caller * Line - Line number of caller * * RETURN: Status * * DESCRIPTION: Inserts an element into the global allocation tracking list. * ******************************************************************************/ static ACPI_STATUS AcpiUtTrackAllocation ( ACPI_DEBUG_MEM_BLOCK *Allocation, ACPI_SIZE Size, UINT8 AllocType, UINT32 Component, const char *Module, UINT32 Line) { ACPI_MEMORY_LIST *MemList; ACPI_DEBUG_MEM_BLOCK *Element; ACPI_STATUS Status = AE_OK; ACPI_FUNCTION_TRACE_PTR (UtTrackAllocation, Allocation); if (AcpiGbl_DisableMemTracking) { return_ACPI_STATUS (AE_OK); } MemList = AcpiGbl_GlobalList; Status = AcpiUtAcquireMutex (ACPI_MTX_MEMORY); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } /* * Search the global list for this address to make sure it is not * already present. This will catch several kinds of problems. */ Element = AcpiUtFindAllocation (Allocation); if (Element == Allocation) { ACPI_ERROR ((AE_INFO, "UtTrackAllocation: Allocation (%p) already present in global list!", Allocation)); goto UnlockAndExit; } /* Fill in the instance data */ Allocation->Size = (UINT32) Size; Allocation->AllocType = AllocType; Allocation->Component = Component; Allocation->Line = Line; ACPI_STRNCPY (Allocation->Module, Module, ACPI_MAX_MODULE_NAME); Allocation->Module[ACPI_MAX_MODULE_NAME-1] = 0; if (!Element) { /* Insert at list head */ if (MemList->ListHead) { ((ACPI_DEBUG_MEM_BLOCK *)(MemList->ListHead))->Previous = Allocation; } Allocation->Next = MemList->ListHead; Allocation->Previous = NULL; MemList->ListHead = Allocation; } else { /* Insert after element */ Allocation->Next = Element->Next; Allocation->Previous = Element; if (Element->Next) { (Element->Next)->Previous = Allocation; } Element->Next = Allocation; } UnlockAndExit: Status = AcpiUtReleaseMutex (ACPI_MTX_MEMORY); return_ACPI_STATUS (Status); } /******************************************************************************* * * FUNCTION: AcpiUtRemoveAllocation * * PARAMETERS: Allocation - Address of allocated memory * Component - Component type of caller * Module - Source file name of caller * Line - Line number of caller * * RETURN: Status * * DESCRIPTION: Deletes an element from the global allocation tracking list. * ******************************************************************************/ static ACPI_STATUS AcpiUtRemoveAllocation ( ACPI_DEBUG_MEM_BLOCK *Allocation, UINT32 Component, const char *Module, UINT32 Line) { ACPI_MEMORY_LIST *MemList; ACPI_STATUS Status; ACPI_FUNCTION_NAME (UtRemoveAllocation); if (AcpiGbl_DisableMemTracking) { return (AE_OK); } MemList = AcpiGbl_GlobalList; if (NULL == MemList->ListHead) { /* No allocations! */ ACPI_ERROR ((Module, Line, "Empty allocation list, nothing to free!")); return (AE_OK); } Status = AcpiUtAcquireMutex (ACPI_MTX_MEMORY); if (ACPI_FAILURE (Status)) { return (Status); } /* Unlink */ if (Allocation->Previous) { (Allocation->Previous)->Next = Allocation->Next; } else { MemList->ListHead = Allocation->Next; } if (Allocation->Next) { (Allocation->Next)->Previous = Allocation->Previous; } ACPI_DEBUG_PRINT ((ACPI_DB_ALLOCATIONS, "Freeing %p, size 0%X\n", &Allocation->UserSpace, Allocation->Size)); /* Mark the segment as deleted */ ACPI_MEMSET (&Allocation->UserSpace, 0xEA, Allocation->Size); Status = AcpiUtReleaseMutex (ACPI_MTX_MEMORY); return (Status); } /******************************************************************************* * * FUNCTION: AcpiUtDumpAllocationInfo * * PARAMETERS: None * * RETURN: None * * DESCRIPTION: Print some info about the outstanding allocations. * ******************************************************************************/ void AcpiUtDumpAllocationInfo ( void) { /* ACPI_MEMORY_LIST *MemList; */ ACPI_FUNCTION_TRACE (UtDumpAllocationInfo); /* ACPI_DEBUG_PRINT (TRACE_ALLOCATIONS | TRACE_TABLES, ("%30s: %4d (%3d Kb)\n", "Current allocations", MemList->CurrentCount, ROUND_UP_TO_1K (MemList->CurrentSize))); ACPI_DEBUG_PRINT (TRACE_ALLOCATIONS | TRACE_TABLES, ("%30s: %4d (%3d Kb)\n", "Max concurrent allocations", MemList->MaxConcurrentCount, ROUND_UP_TO_1K (MemList->MaxConcurrentSize))); ACPI_DEBUG_PRINT (TRACE_ALLOCATIONS | TRACE_TABLES, ("%30s: %4d (%3d Kb)\n", "Total (all) internal objects", RunningObjectCount, ROUND_UP_TO_1K (RunningObjectSize))); ACPI_DEBUG_PRINT (TRACE_ALLOCATIONS | TRACE_TABLES, ("%30s: %4d (%3d Kb)\n", "Total (all) allocations", RunningAllocCount, ROUND_UP_TO_1K (RunningAllocSize))); ACPI_DEBUG_PRINT (TRACE_ALLOCATIONS | TRACE_TABLES, ("%30s: %4d (%3d Kb)\n", "Current Nodes", AcpiGbl_CurrentNodeCount, ROUND_UP_TO_1K (AcpiGbl_CurrentNodeSize))); ACPI_DEBUG_PRINT (TRACE_ALLOCATIONS | TRACE_TABLES, ("%30s: %4d (%3d Kb)\n", "Max Nodes", AcpiGbl_MaxConcurrentNodeCount, ROUND_UP_TO_1K ((AcpiGbl_MaxConcurrentNodeCount * sizeof (ACPI_NAMESPACE_NODE))))); */ return_VOID; } /******************************************************************************* * * FUNCTION: AcpiUtDumpAllocations * * PARAMETERS: Component - Component(s) to dump info for. * Module - Module to dump info for. NULL means all. * * RETURN: None * * DESCRIPTION: Print a list of all outstanding allocations. * ******************************************************************************/ void AcpiUtDumpAllocations ( UINT32 Component, const char *Module) { ACPI_DEBUG_MEM_BLOCK *Element; ACPI_DESCRIPTOR *Descriptor; UINT32 NumOutstanding = 0; UINT8 DescriptorType; ACPI_FUNCTION_TRACE (UtDumpAllocations); if (AcpiGbl_DisableMemTracking) { return_VOID; } /* * Walk the allocation list. */ if (ACPI_FAILURE (AcpiUtAcquireMutex (ACPI_MTX_MEMORY))) { return_VOID; } Element = AcpiGbl_GlobalList->ListHead; while (Element) { if ((Element->Component & Component) && ((Module == NULL) || (0 == ACPI_STRCMP (Module, Element->Module)))) { Descriptor = ACPI_CAST_PTR (ACPI_DESCRIPTOR, &Element->UserSpace); if (Element->Size < sizeof (ACPI_COMMON_DESCRIPTOR)) { AcpiOsPrintf ("%p Length 0x%04X %9.9s-%u " "[Not a Descriptor - too small]\n", Descriptor, Element->Size, Element->Module, Element->Line); } else { /* Ignore allocated objects that are in a cache */ if (ACPI_GET_DESCRIPTOR_TYPE (Descriptor) != ACPI_DESC_TYPE_CACHED) { AcpiOsPrintf ("%p Length 0x%04X %9.9s-%u [%s] ", Descriptor, Element->Size, Element->Module, Element->Line, AcpiUtGetDescriptorName (Descriptor)); /* Validate the descriptor type using Type field and length */ DescriptorType = 0; /* Not a valid descriptor type */ switch (ACPI_GET_DESCRIPTOR_TYPE (Descriptor)) { case ACPI_DESC_TYPE_OPERAND: if (Element->Size == sizeof (ACPI_OPERAND_OBJECT)) { DescriptorType = ACPI_DESC_TYPE_OPERAND; } break; case ACPI_DESC_TYPE_PARSER: if (Element->Size == sizeof (ACPI_PARSE_OBJECT)) { DescriptorType = ACPI_DESC_TYPE_PARSER; } break; case ACPI_DESC_TYPE_NAMED: if (Element->Size == sizeof (ACPI_NAMESPACE_NODE)) { DescriptorType = ACPI_DESC_TYPE_NAMED; } break; default: break; } /* Display additional info for the major descriptor types */ switch (DescriptorType) { case ACPI_DESC_TYPE_OPERAND: AcpiOsPrintf ("%12.12s RefCount 0x%04X\n", AcpiUtGetTypeName (Descriptor->Object.Common.Type), Descriptor->Object.Common.ReferenceCount); break; case ACPI_DESC_TYPE_PARSER: AcpiOsPrintf ("AmlOpcode 0x%04hX\n", Descriptor->Op.Asl.AmlOpcode); break; case ACPI_DESC_TYPE_NAMED: AcpiOsPrintf ("%4.4s\n", AcpiUtGetNodeName (&Descriptor->Node)); break; default: AcpiOsPrintf ( "\n"); break; } } } NumOutstanding++; } Element = Element->Next; } (void) AcpiUtReleaseMutex (ACPI_MTX_MEMORY); /* Print summary */ if (!NumOutstanding) { ACPI_INFO ((AE_INFO, "No outstanding allocations")); } else { ACPI_ERROR ((AE_INFO, "%u(0x%X) Outstanding allocations", NumOutstanding, NumOutstanding)); } return_VOID; } #endif /* ACPI_DBG_TRACK_ALLOCATIONS */ src/acpica/source/components/utilities/utxface.c000066400000000000000000000537261231470457100224110ustar00rootroot00000000000000/****************************************************************************** * * Module Name: utxface - External interfaces, miscellaneous utility functions * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #define __UTXFACE_C__ #define EXPORT_ACPI_INTERFACES #include "acpi.h" #include "accommon.h" #include "acdebug.h" #define _COMPONENT ACPI_UTILITIES ACPI_MODULE_NAME ("utxface") /******************************************************************************* * * FUNCTION: AcpiTerminate * * PARAMETERS: None * * RETURN: Status * * DESCRIPTION: Shutdown the ACPICA subsystem and release all resources. * ******************************************************************************/ ACPI_STATUS AcpiTerminate ( void) { ACPI_STATUS Status; ACPI_FUNCTION_TRACE (AcpiTerminate); /* Just exit if subsystem is already shutdown */ if (AcpiGbl_Shutdown) { ACPI_ERROR ((AE_INFO, "ACPI Subsystem is already terminated")); return_ACPI_STATUS (AE_OK); } /* Subsystem appears active, go ahead and shut it down */ AcpiGbl_Shutdown = TRUE; AcpiGbl_StartupFlags = 0; ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Shutting down ACPI Subsystem\n")); /* Terminate the AML Debugger if present */ ACPI_DEBUGGER_EXEC (AcpiGbl_DbTerminateThreads = TRUE); /* Shutdown and free all resources */ AcpiUtSubsystemShutdown (); /* Free the mutex objects */ AcpiUtMutexTerminate (); #ifdef ACPI_DEBUGGER /* Shut down the debugger */ AcpiDbTerminate (); #endif /* Now we can shutdown the OS-dependent layer */ Status = AcpiOsTerminate (); return_ACPI_STATUS (Status); } ACPI_EXPORT_SYMBOL_INIT (AcpiTerminate) #ifndef ACPI_ASL_COMPILER /******************************************************************************* * * FUNCTION: AcpiSubsystemStatus * * PARAMETERS: None * * RETURN: Status of the ACPI subsystem * * DESCRIPTION: Other drivers that use the ACPI subsystem should call this * before making any other calls, to ensure the subsystem * initialized successfully. * ******************************************************************************/ ACPI_STATUS AcpiSubsystemStatus ( void) { if (AcpiGbl_StartupFlags & ACPI_INITIALIZED_OK) { return (AE_OK); } else { return (AE_ERROR); } } ACPI_EXPORT_SYMBOL (AcpiSubsystemStatus) /******************************************************************************* * * FUNCTION: AcpiGetSystemInfo * * PARAMETERS: OutBuffer - A buffer to receive the resources for the * device * * RETURN: Status - the status of the call * * DESCRIPTION: This function is called to get information about the current * state of the ACPI subsystem. It will return system information * in the OutBuffer. * * If the function fails an appropriate status will be returned * and the value of OutBuffer is undefined. * ******************************************************************************/ ACPI_STATUS AcpiGetSystemInfo ( ACPI_BUFFER *OutBuffer) { ACPI_SYSTEM_INFO *InfoPtr; ACPI_STATUS Status; ACPI_FUNCTION_TRACE (AcpiGetSystemInfo); /* Parameter validation */ Status = AcpiUtValidateBuffer (OutBuffer); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } /* Validate/Allocate/Clear caller buffer */ Status = AcpiUtInitializeBuffer (OutBuffer, sizeof (ACPI_SYSTEM_INFO)); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } /* * Populate the return buffer */ InfoPtr = (ACPI_SYSTEM_INFO *) OutBuffer->Pointer; InfoPtr->AcpiCaVersion = ACPI_CA_VERSION; /* System flags (ACPI capabilities) */ InfoPtr->Flags = ACPI_SYS_MODE_ACPI; /* Timer resolution - 24 or 32 bits */ if (AcpiGbl_FADT.Flags & ACPI_FADT_32BIT_TIMER) { InfoPtr->TimerResolution = 24; } else { InfoPtr->TimerResolution = 32; } /* Clear the reserved fields */ InfoPtr->Reserved1 = 0; InfoPtr->Reserved2 = 0; /* Current debug levels */ InfoPtr->DebugLayer = AcpiDbgLayer; InfoPtr->DebugLevel = AcpiDbgLevel; return_ACPI_STATUS (AE_OK); } ACPI_EXPORT_SYMBOL (AcpiGetSystemInfo) /******************************************************************************* * * FUNCTION: AcpiGetStatistics * * PARAMETERS: Stats - Where the statistics are returned * * RETURN: Status - the status of the call * * DESCRIPTION: Get the contents of the various system counters * ******************************************************************************/ ACPI_STATUS AcpiGetStatistics ( ACPI_STATISTICS *Stats) { ACPI_FUNCTION_TRACE (AcpiGetStatistics); /* Parameter validation */ if (!Stats) { return_ACPI_STATUS (AE_BAD_PARAMETER); } /* Various interrupt-based event counters */ Stats->SciCount = AcpiSciCount; Stats->GpeCount = AcpiGpeCount; ACPI_MEMCPY (Stats->FixedEventCount, AcpiFixedEventCount, sizeof (AcpiFixedEventCount)); /* Other counters */ Stats->MethodCount = AcpiMethodCount; return_ACPI_STATUS (AE_OK); } ACPI_EXPORT_SYMBOL (AcpiGetStatistics) /***************************************************************************** * * FUNCTION: AcpiInstallInitializationHandler * * PARAMETERS: Handler - Callback procedure * Function - Not (currently) used, see below * * RETURN: Status * * DESCRIPTION: Install an initialization handler * * TBD: When a second function is added, must save the Function also. * ****************************************************************************/ ACPI_STATUS AcpiInstallInitializationHandler ( ACPI_INIT_HANDLER Handler, UINT32 Function) { if (!Handler) { return (AE_BAD_PARAMETER); } if (AcpiGbl_InitHandler) { return (AE_ALREADY_EXISTS); } AcpiGbl_InitHandler = Handler; return (AE_OK); } ACPI_EXPORT_SYMBOL (AcpiInstallInitializationHandler) /***************************************************************************** * * FUNCTION: AcpiPurgeCachedObjects * * PARAMETERS: None * * RETURN: Status * * DESCRIPTION: Empty all caches (delete the cached objects) * ****************************************************************************/ ACPI_STATUS AcpiPurgeCachedObjects ( void) { ACPI_FUNCTION_TRACE (AcpiPurgeCachedObjects); (void) AcpiOsPurgeCache (AcpiGbl_StateCache); (void) AcpiOsPurgeCache (AcpiGbl_OperandCache); (void) AcpiOsPurgeCache (AcpiGbl_PsNodeCache); (void) AcpiOsPurgeCache (AcpiGbl_PsNodeExtCache); return_ACPI_STATUS (AE_OK); } ACPI_EXPORT_SYMBOL (AcpiPurgeCachedObjects) /***************************************************************************** * * FUNCTION: AcpiInstallInterface * * PARAMETERS: InterfaceName - The interface to install * * RETURN: Status * * DESCRIPTION: Install an _OSI interface to the global list * ****************************************************************************/ ACPI_STATUS AcpiInstallInterface ( ACPI_STRING InterfaceName) { ACPI_STATUS Status; ACPI_INTERFACE_INFO *InterfaceInfo; /* Parameter validation */ if (!InterfaceName || (ACPI_STRLEN (InterfaceName) == 0)) { return (AE_BAD_PARAMETER); } Status = AcpiOsAcquireMutex (AcpiGbl_OsiMutex, ACPI_WAIT_FOREVER); if (ACPI_FAILURE (Status)) { return (Status); } /* Check if the interface name is already in the global list */ InterfaceInfo = AcpiUtGetInterface (InterfaceName); if (InterfaceInfo) { /* * The interface already exists in the list. This is OK if the * interface has been marked invalid -- just clear the bit. */ if (InterfaceInfo->Flags & ACPI_OSI_INVALID) { InterfaceInfo->Flags &= ~ACPI_OSI_INVALID; Status = AE_OK; } else { Status = AE_ALREADY_EXISTS; } } else { /* New interface name, install into the global list */ Status = AcpiUtInstallInterface (InterfaceName); } AcpiOsReleaseMutex (AcpiGbl_OsiMutex); return (Status); } ACPI_EXPORT_SYMBOL (AcpiInstallInterface) /***************************************************************************** * * FUNCTION: AcpiRemoveInterface * * PARAMETERS: InterfaceName - The interface to remove * * RETURN: Status * * DESCRIPTION: Remove an _OSI interface from the global list * ****************************************************************************/ ACPI_STATUS AcpiRemoveInterface ( ACPI_STRING InterfaceName) { ACPI_STATUS Status; /* Parameter validation */ if (!InterfaceName || (ACPI_STRLEN (InterfaceName) == 0)) { return (AE_BAD_PARAMETER); } Status = AcpiOsAcquireMutex (AcpiGbl_OsiMutex, ACPI_WAIT_FOREVER); if (ACPI_FAILURE (Status)) { return (Status); } Status = AcpiUtRemoveInterface (InterfaceName); AcpiOsReleaseMutex (AcpiGbl_OsiMutex); return (Status); } ACPI_EXPORT_SYMBOL (AcpiRemoveInterface) /***************************************************************************** * * FUNCTION: AcpiInstallInterfaceHandler * * PARAMETERS: Handler - The _OSI interface handler to install * NULL means "remove existing handler" * * RETURN: Status * * DESCRIPTION: Install a handler for the predefined _OSI ACPI method. * invoked during execution of the internal implementation of * _OSI. A NULL handler simply removes any existing handler. * ****************************************************************************/ ACPI_STATUS AcpiInstallInterfaceHandler ( ACPI_INTERFACE_HANDLER Handler) { ACPI_STATUS Status; Status = AcpiOsAcquireMutex (AcpiGbl_OsiMutex, ACPI_WAIT_FOREVER); if (ACPI_FAILURE (Status)) { return (Status); } if (Handler && AcpiGbl_InterfaceHandler) { Status = AE_ALREADY_EXISTS; } else { AcpiGbl_InterfaceHandler = Handler; } AcpiOsReleaseMutex (AcpiGbl_OsiMutex); return (Status); } ACPI_EXPORT_SYMBOL (AcpiInstallInterfaceHandler) /***************************************************************************** * * FUNCTION: AcpiUpdateInterfaces * * PARAMETERS: Action - Actions to be performed during the * update * * RETURN: Status * * DESCRIPTION: Update _OSI interface strings, disabling or enabling OS vendor * string or/and feature group strings. * ****************************************************************************/ ACPI_STATUS AcpiUpdateInterfaces ( UINT8 Action) { ACPI_STATUS Status; Status = AcpiOsAcquireMutex (AcpiGbl_OsiMutex, ACPI_WAIT_FOREVER); if (ACPI_FAILURE (Status)) { return (Status); } Status = AcpiUtUpdateInterfaces (Action); AcpiOsReleaseMutex (AcpiGbl_OsiMutex); return (Status); } /***************************************************************************** * * FUNCTION: AcpiCheckAddressRange * * PARAMETERS: SpaceId - Address space ID * Address - Start address * Length - Length * Warn - TRUE if warning on overlap desired * * RETURN: Count of the number of conflicts detected. * * DESCRIPTION: Check if the input address range overlaps any of the * ASL operation region address ranges. * ****************************************************************************/ UINT32 AcpiCheckAddressRange ( ACPI_ADR_SPACE_TYPE SpaceId, ACPI_PHYSICAL_ADDRESS Address, ACPI_SIZE Length, BOOLEAN Warn) { UINT32 Overlaps; ACPI_STATUS Status; Status = AcpiUtAcquireMutex (ACPI_MTX_NAMESPACE); if (ACPI_FAILURE (Status)) { return (0); } Overlaps = AcpiUtCheckAddressRange (SpaceId, Address, (UINT32) Length, Warn); (void) AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); return (Overlaps); } ACPI_EXPORT_SYMBOL (AcpiCheckAddressRange) #endif /* !ACPI_ASL_COMPILER */ /******************************************************************************* * * FUNCTION: AcpiDecodePldBuffer * * PARAMETERS: InBuffer - Buffer returned by _PLD method * Length - Length of the InBuffer * ReturnBuffer - Where the decode buffer is returned * * RETURN: Status and the decoded _PLD buffer. User must deallocate * the buffer via ACPI_FREE. * * DESCRIPTION: Decode the bit-packed buffer returned by the _PLD method into * a local struct that is much more useful to an ACPI driver. * ******************************************************************************/ ACPI_STATUS AcpiDecodePldBuffer ( UINT8 *InBuffer, ACPI_SIZE Length, ACPI_PLD_INFO **ReturnBuffer) { ACPI_PLD_INFO *PldInfo; UINT32 *Buffer = ACPI_CAST_PTR (UINT32, InBuffer); UINT32 Dword; /* Parameter validation */ if (!InBuffer || !ReturnBuffer || (Length < 16)) { return (AE_BAD_PARAMETER); } PldInfo = ACPI_ALLOCATE_ZEROED (sizeof (ACPI_PLD_INFO)); if (!PldInfo) { return (AE_NO_MEMORY); } /* First 32-bit DWord */ ACPI_MOVE_32_TO_32 (&Dword, &Buffer[0]); PldInfo->Revision = ACPI_PLD_GET_REVISION (&Dword); PldInfo->IgnoreColor = ACPI_PLD_GET_IGNORE_COLOR (&Dword); PldInfo->Color = ACPI_PLD_GET_COLOR (&Dword); /* Second 32-bit DWord */ ACPI_MOVE_32_TO_32 (&Dword, &Buffer[1]); PldInfo->Width = ACPI_PLD_GET_WIDTH (&Dword); PldInfo->Height = ACPI_PLD_GET_HEIGHT(&Dword); /* Third 32-bit DWord */ ACPI_MOVE_32_TO_32 (&Dword, &Buffer[2]); PldInfo->UserVisible = ACPI_PLD_GET_USER_VISIBLE (&Dword); PldInfo->Dock = ACPI_PLD_GET_DOCK (&Dword); PldInfo->Lid = ACPI_PLD_GET_LID (&Dword); PldInfo->Panel = ACPI_PLD_GET_PANEL (&Dword); PldInfo->VerticalPosition = ACPI_PLD_GET_VERTICAL (&Dword); PldInfo->HorizontalPosition = ACPI_PLD_GET_HORIZONTAL (&Dword); PldInfo->Shape = ACPI_PLD_GET_SHAPE (&Dword); PldInfo->GroupOrientation = ACPI_PLD_GET_ORIENTATION (&Dword); PldInfo->GroupToken = ACPI_PLD_GET_TOKEN (&Dword); PldInfo->GroupPosition = ACPI_PLD_GET_POSITION (&Dword); PldInfo->Bay = ACPI_PLD_GET_BAY (&Dword); /* Fourth 32-bit DWord */ ACPI_MOVE_32_TO_32 (&Dword, &Buffer[3]); PldInfo->Ejectable = ACPI_PLD_GET_EJECTABLE (&Dword); PldInfo->OspmEjectRequired = ACPI_PLD_GET_OSPM_EJECT (&Dword); PldInfo->CabinetNumber = ACPI_PLD_GET_CABINET (&Dword); PldInfo->CardCageNumber = ACPI_PLD_GET_CARD_CAGE (&Dword); PldInfo->Reference = ACPI_PLD_GET_REFERENCE (&Dword); PldInfo->Rotation = ACPI_PLD_GET_ROTATION (&Dword); PldInfo->Order = ACPI_PLD_GET_ORDER (&Dword); if (Length >= ACPI_PLD_BUFFER_SIZE) { /* Fifth 32-bit DWord (Revision 2 of _PLD) */ ACPI_MOVE_32_TO_32 (&Dword, &Buffer[4]); PldInfo->VerticalOffset = ACPI_PLD_GET_VERT_OFFSET (&Dword); PldInfo->HorizontalOffset = ACPI_PLD_GET_HORIZ_OFFSET (&Dword); } *ReturnBuffer = PldInfo; return (AE_OK); } ACPI_EXPORT_SYMBOL (AcpiDecodePldBuffer) src/acpica/source/components/utilities/utxferror.c000066400000000000000000000312661231470457100230050ustar00rootroot00000000000000/******************************************************************************* * * Module Name: utxferror - Various error/warning output functions * ******************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #define __UTXFERROR_C__ #define EXPORT_ACPI_INTERFACES #include "acpi.h" #include "accommon.h" #define _COMPONENT ACPI_UTILITIES ACPI_MODULE_NAME ("utxferror") /* * This module is used for the in-kernel ACPICA as well as the ACPICA * tools/applications. */ /******************************************************************************* * * FUNCTION: AcpiError * * PARAMETERS: ModuleName - Caller's module name (for error output) * LineNumber - Caller's line number (for error output) * Format - Printf format string + additional args * * RETURN: None * * DESCRIPTION: Print "ACPI Error" message with module/line/version info * ******************************************************************************/ void ACPI_INTERNAL_VAR_XFACE AcpiError ( const char *ModuleName, UINT32 LineNumber, const char *Format, ...) { va_list ArgList; ACPI_MSG_REDIRECT_BEGIN; AcpiOsPrintf (ACPI_MSG_ERROR); va_start (ArgList, Format); AcpiOsVprintf (Format, ArgList); ACPI_MSG_SUFFIX; va_end (ArgList); ACPI_MSG_REDIRECT_END; } ACPI_EXPORT_SYMBOL (AcpiError) /******************************************************************************* * * FUNCTION: AcpiException * * PARAMETERS: ModuleName - Caller's module name (for error output) * LineNumber - Caller's line number (for error output) * Status - Status to be formatted * Format - Printf format string + additional args * * RETURN: None * * DESCRIPTION: Print "ACPI Exception" message with module/line/version info * and decoded ACPI_STATUS. * ******************************************************************************/ void ACPI_INTERNAL_VAR_XFACE AcpiException ( const char *ModuleName, UINT32 LineNumber, ACPI_STATUS Status, const char *Format, ...) { va_list ArgList; ACPI_MSG_REDIRECT_BEGIN; AcpiOsPrintf (ACPI_MSG_EXCEPTION "%s, ", AcpiFormatException (Status)); va_start (ArgList, Format); AcpiOsVprintf (Format, ArgList); ACPI_MSG_SUFFIX; va_end (ArgList); ACPI_MSG_REDIRECT_END; } ACPI_EXPORT_SYMBOL (AcpiException) /******************************************************************************* * * FUNCTION: AcpiWarning * * PARAMETERS: ModuleName - Caller's module name (for error output) * LineNumber - Caller's line number (for error output) * Format - Printf format string + additional args * * RETURN: None * * DESCRIPTION: Print "ACPI Warning" message with module/line/version info * ******************************************************************************/ void ACPI_INTERNAL_VAR_XFACE AcpiWarning ( const char *ModuleName, UINT32 LineNumber, const char *Format, ...) { va_list ArgList; ACPI_MSG_REDIRECT_BEGIN; AcpiOsPrintf (ACPI_MSG_WARNING); va_start (ArgList, Format); AcpiOsVprintf (Format, ArgList); ACPI_MSG_SUFFIX; va_end (ArgList); ACPI_MSG_REDIRECT_END; } ACPI_EXPORT_SYMBOL (AcpiWarning) /******************************************************************************* * * FUNCTION: AcpiInfo * * PARAMETERS: ModuleName - Caller's module name (for error output) * LineNumber - Caller's line number (for error output) * Format - Printf format string + additional args * * RETURN: None * * DESCRIPTION: Print generic "ACPI:" information message. There is no * module/line/version info in order to keep the message simple. * * TBD: ModuleName and LineNumber args are not needed, should be removed. * ******************************************************************************/ void ACPI_INTERNAL_VAR_XFACE AcpiInfo ( const char *ModuleName, UINT32 LineNumber, const char *Format, ...) { va_list ArgList; ACPI_MSG_REDIRECT_BEGIN; AcpiOsPrintf (ACPI_MSG_INFO); va_start (ArgList, Format); AcpiOsVprintf (Format, ArgList); AcpiOsPrintf ("\n"); va_end (ArgList); ACPI_MSG_REDIRECT_END; } ACPI_EXPORT_SYMBOL (AcpiInfo) /******************************************************************************* * * FUNCTION: AcpiBiosError * * PARAMETERS: ModuleName - Caller's module name (for error output) * LineNumber - Caller's line number (for error output) * Format - Printf format string + additional args * * RETURN: None * * DESCRIPTION: Print "ACPI Firmware Error" message with module/line/version * info * ******************************************************************************/ void ACPI_INTERNAL_VAR_XFACE AcpiBiosError ( const char *ModuleName, UINT32 LineNumber, const char *Format, ...) { va_list ArgList; ACPI_MSG_REDIRECT_BEGIN; AcpiOsPrintf (ACPI_MSG_BIOS_ERROR); va_start (ArgList, Format); AcpiOsVprintf (Format, ArgList); ACPI_MSG_SUFFIX; va_end (ArgList); ACPI_MSG_REDIRECT_END; } ACPI_EXPORT_SYMBOL (AcpiBiosError) /******************************************************************************* * * FUNCTION: AcpiBiosWarning * * PARAMETERS: ModuleName - Caller's module name (for error output) * LineNumber - Caller's line number (for error output) * Format - Printf format string + additional args * * RETURN: None * * DESCRIPTION: Print "ACPI Firmware Warning" message with module/line/version * info * ******************************************************************************/ void ACPI_INTERNAL_VAR_XFACE AcpiBiosWarning ( const char *ModuleName, UINT32 LineNumber, const char *Format, ...) { va_list ArgList; ACPI_MSG_REDIRECT_BEGIN; AcpiOsPrintf (ACPI_MSG_BIOS_WARNING); va_start (ArgList, Format); AcpiOsVprintf (Format, ArgList); ACPI_MSG_SUFFIX; va_end (ArgList); ACPI_MSG_REDIRECT_END; } ACPI_EXPORT_SYMBOL (AcpiBiosWarning) src/acpica/source/components/utilities/utxfinit.c000066400000000000000000000356631231470457100226240ustar00rootroot00000000000000/****************************************************************************** * * Module Name: utxfinit - External interfaces for ACPICA initialization * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #define __UTXFINIT_C__ #define EXPORT_ACPI_INTERFACES #include "acpi.h" #include "accommon.h" #include "acevents.h" #include "acnamesp.h" #include "acdebug.h" #include "actables.h" #define _COMPONENT ACPI_UTILITIES ACPI_MODULE_NAME ("utxfinit") /******************************************************************************* * * FUNCTION: AcpiInitializeSubsystem * * PARAMETERS: None * * RETURN: Status * * DESCRIPTION: Initializes all global variables. This is the first function * called, so any early initialization belongs here. * ******************************************************************************/ ACPI_STATUS AcpiInitializeSubsystem ( void) { ACPI_STATUS Status; ACPI_FUNCTION_TRACE (AcpiInitializeSubsystem); AcpiGbl_StartupFlags = ACPI_SUBSYSTEM_INITIALIZE; ACPI_DEBUG_EXEC (AcpiUtInitStackPtrTrace ()); /* Initialize the OS-Dependent layer */ Status = AcpiOsInitialize (); if (ACPI_FAILURE (Status)) { ACPI_EXCEPTION ((AE_INFO, Status, "During OSL initialization")); return_ACPI_STATUS (Status); } /* Initialize all globals used by the subsystem */ Status = AcpiUtInitGlobals (); if (ACPI_FAILURE (Status)) { ACPI_EXCEPTION ((AE_INFO, Status, "During initialization of globals")); return_ACPI_STATUS (Status); } /* Create the default mutex objects */ Status = AcpiUtMutexInitialize (); if (ACPI_FAILURE (Status)) { ACPI_EXCEPTION ((AE_INFO, Status, "During Global Mutex creation")); return_ACPI_STATUS (Status); } /* * Initialize the namespace manager and * the root of the namespace tree */ Status = AcpiNsRootInitialize (); if (ACPI_FAILURE (Status)) { ACPI_EXCEPTION ((AE_INFO, Status, "During Namespace initialization")); return_ACPI_STATUS (Status); } /* Initialize the global OSI interfaces list with the static names */ Status = AcpiUtInitializeInterfaces (); if (ACPI_FAILURE (Status)) { ACPI_EXCEPTION ((AE_INFO, Status, "During OSI interfaces initialization")); return_ACPI_STATUS (Status); } /* If configured, initialize the AML debugger */ #ifdef ACPI_DEBUGGER Status = AcpiDbInitialize (); if (ACPI_FAILURE (Status)) { ACPI_EXCEPTION ((AE_INFO, Status, "During Debugger initialization")); return_ACPI_STATUS (Status); } #endif return_ACPI_STATUS (AE_OK); } ACPI_EXPORT_SYMBOL_INIT (AcpiInitializeSubsystem) /******************************************************************************* * * FUNCTION: AcpiEnableSubsystem * * PARAMETERS: Flags - Init/enable Options * * RETURN: Status * * DESCRIPTION: Completes the subsystem initialization including hardware. * Puts system into ACPI mode if it isn't already. * ******************************************************************************/ ACPI_STATUS AcpiEnableSubsystem ( UINT32 Flags) { ACPI_STATUS Status = AE_OK; ACPI_FUNCTION_TRACE (AcpiEnableSubsystem); #if (!ACPI_REDUCED_HARDWARE) /* Enable ACPI mode */ if (!(Flags & ACPI_NO_ACPI_ENABLE)) { ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "[Init] Going into ACPI mode\n")); AcpiGbl_OriginalMode = AcpiHwGetMode(); Status = AcpiEnable (); if (ACPI_FAILURE (Status)) { ACPI_WARNING ((AE_INFO, "AcpiEnable failed")); return_ACPI_STATUS (Status); } } /* * Obtain a permanent mapping for the FACS. This is required for the * Global Lock and the Firmware Waking Vector */ Status = AcpiTbInitializeFacs (); if (ACPI_FAILURE (Status)) { ACPI_WARNING ((AE_INFO, "Could not map the FACS table")); return_ACPI_STATUS (Status); } #endif /* !ACPI_REDUCED_HARDWARE */ /* * Install the default OpRegion handlers. These are installed unless * other handlers have already been installed via the * InstallAddressSpaceHandler interface. */ if (!(Flags & ACPI_NO_ADDRESS_SPACE_INIT)) { ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "[Init] Installing default address space handlers\n")); Status = AcpiEvInstallRegionHandlers (); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } } #if (!ACPI_REDUCED_HARDWARE) /* * Initialize ACPI Event handling (Fixed and General Purpose) * * Note1: We must have the hardware and events initialized before we can * execute any control methods safely. Any control method can require * ACPI hardware support, so the hardware must be fully initialized before * any method execution! * * Note2: Fixed events are initialized and enabled here. GPEs are * initialized, but cannot be enabled until after the hardware is * completely initialized (SCI and GlobalLock activated) and the various * initialization control methods are run (_REG, _STA, _INI) on the * entire namespace. */ if (!(Flags & ACPI_NO_EVENT_INIT)) { ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "[Init] Initializing ACPI events\n")); Status = AcpiEvInitializeEvents (); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } } /* * Install the SCI handler and Global Lock handler. This completes the * hardware initialization. */ if (!(Flags & ACPI_NO_HANDLER_INIT)) { ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "[Init] Installing SCI/GL handlers\n")); Status = AcpiEvInstallXruptHandlers (); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } } #endif /* !ACPI_REDUCED_HARDWARE */ return_ACPI_STATUS (Status); } ACPI_EXPORT_SYMBOL_INIT (AcpiEnableSubsystem) /******************************************************************************* * * FUNCTION: AcpiInitializeObjects * * PARAMETERS: Flags - Init/enable Options * * RETURN: Status * * DESCRIPTION: Completes namespace initialization by initializing device * objects and executing AML code for Regions, buffers, etc. * ******************************************************************************/ ACPI_STATUS AcpiInitializeObjects ( UINT32 Flags) { ACPI_STATUS Status = AE_OK; ACPI_FUNCTION_TRACE (AcpiInitializeObjects); /* * Run all _REG methods * * Note: Any objects accessed by the _REG methods will be automatically * initialized, even if they contain executable AML (see the call to * AcpiNsInitializeObjects below). */ if (!(Flags & ACPI_NO_ADDRESS_SPACE_INIT)) { ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "[Init] Executing _REG OpRegion methods\n")); Status = AcpiEvInitializeOpRegions (); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } } /* * Execute any module-level code that was detected during the table load * phase. Although illegal since ACPI 2.0, there are many machines that * contain this type of code. Each block of detected executable AML code * outside of any control method is wrapped with a temporary control * method object and placed on a global list. The methods on this list * are executed below. */ AcpiNsExecModuleCodeList (); /* * Initialize the objects that remain uninitialized. This runs the * executable AML that may be part of the declaration of these objects: * OperationRegions, BufferFields, Buffers, and Packages. */ if (!(Flags & ACPI_NO_OBJECT_INIT)) { ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "[Init] Completing Initialization of ACPI Objects\n")); Status = AcpiNsInitializeObjects (); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } } /* * Initialize all device objects in the namespace. This runs the device * _STA and _INI methods. */ if (!(Flags & ACPI_NO_DEVICE_INIT)) { ACPI_DEBUG_PRINT ((ACPI_DB_EXEC, "[Init] Initializing ACPI Devices\n")); Status = AcpiNsInitializeDevices (); if (ACPI_FAILURE (Status)) { return_ACPI_STATUS (Status); } } /* * Empty the caches (delete the cached objects) on the assumption that * the table load filled them up more than they will be at runtime -- * thus wasting non-paged memory. */ Status = AcpiPurgeCachedObjects (); AcpiGbl_StartupFlags |= ACPI_INITIALIZED_OK; return_ACPI_STATUS (Status); } ACPI_EXPORT_SYMBOL_INIT (AcpiInitializeObjects) src/acpica/source/include/000077500000000000000000000000001231470457100160145ustar00rootroot00000000000000src/acpica/source/include/acapps.h000066400000000000000000000240711231470457100174400ustar00rootroot00000000000000/****************************************************************************** * * Module Name: acapps - common include for ACPI applications/tools * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #ifndef _ACAPPS #define _ACAPPS #ifdef _MSC_VER /* disable some level-4 warnings */ #pragma warning(disable:4100) /* warning C4100: unreferenced formal parameter */ #endif /* Common info for tool signons */ #define ACPICA_NAME "Intel ACPI Component Architecture" #define ACPICA_COPYRIGHT "Copyright (c) 2000 - 2014 Intel Corporation" #if ACPI_MACHINE_WIDTH == 64 #define ACPI_WIDTH "-64" #elif ACPI_MACHINE_WIDTH == 32 #define ACPI_WIDTH "-32" #else #error unknown ACPI_MACHINE_WIDTH #define ACPI_WIDTH "-??" #endif /* Macros for signons and file headers */ #define ACPI_COMMON_SIGNON(UtilityName) \ "\n%s\n%s version %8.8X%s [%s]\n%s\n\n", \ ACPICA_NAME, \ UtilityName, ((UINT32) ACPI_CA_VERSION), ACPI_WIDTH, __DATE__, \ ACPICA_COPYRIGHT #define ACPI_COMMON_HEADER(UtilityName, Prefix) \ "%s%s\n%s%s version %8.8X%s [%s]\n%s%s\n%s\n", \ Prefix, ACPICA_NAME, \ Prefix, UtilityName, ((UINT32) ACPI_CA_VERSION), ACPI_WIDTH, __DATE__, \ Prefix, ACPICA_COPYRIGHT, \ Prefix /* Macros for usage messages */ #define ACPI_USAGE_HEADER(Usage) \ printf ("Usage: %s\nOptions:\n", Usage); #define ACPI_OPTION(Name, Description) \ printf (" %-18s%s\n", Name, Description); #define FILE_SUFFIX_DISASSEMBLY "dsl" #define ACPI_TABLE_FILE_SUFFIX ".dat" /* * getopt */ int AcpiGetopt( int argc, char **argv, char *opts); int AcpiGetoptArgument ( int argc, char **argv); extern int AcpiGbl_Optind; extern int AcpiGbl_Opterr; extern int AcpiGbl_SubOptChar; extern char *AcpiGbl_Optarg; /* * cmfsize - Common get file size function */ UINT32 CmGetFileSize ( FILE *File); #ifndef ACPI_DUMP_APP /* * adisasm */ ACPI_STATUS AdAmlDisassemble ( BOOLEAN OutToFile, char *Filename, char *Prefix, char **OutFilename); void AdPrintStatistics ( void); ACPI_STATUS AdFindDsdt( UINT8 **DsdtPtr, UINT32 *DsdtLength); void AdDumpTables ( void); ACPI_STATUS AdGetLocalTables ( void); ACPI_STATUS AdParseTable ( ACPI_TABLE_HEADER *Table, ACPI_OWNER_ID *OwnerId, BOOLEAN LoadTable, BOOLEAN External); ACPI_STATUS AdDisplayTables ( char *Filename, ACPI_TABLE_HEADER *Table); ACPI_STATUS AdDisplayStatistics ( void); /* * adwalk */ void AcpiDmCrossReferenceNamespace ( ACPI_PARSE_OBJECT *ParseTreeRoot, ACPI_NAMESPACE_NODE *NamespaceRoot, ACPI_OWNER_ID OwnerId); void AcpiDmDumpTree ( ACPI_PARSE_OBJECT *Origin); void AcpiDmFindOrphanMethods ( ACPI_PARSE_OBJECT *Origin); void AcpiDmFinishNamespaceLoad ( ACPI_PARSE_OBJECT *ParseTreeRoot, ACPI_NAMESPACE_NODE *NamespaceRoot, ACPI_OWNER_ID OwnerId); void AcpiDmConvertResourceIndexes ( ACPI_PARSE_OBJECT *ParseTreeRoot, ACPI_NAMESPACE_NODE *NamespaceRoot); /* * adfile */ ACPI_STATUS AdInitialize ( void); char * FlGenerateFilename ( char *InputFilename, char *Suffix); ACPI_STATUS FlSplitInputPathname ( char *InputPath, char **OutDirectoryPath, char **OutFilename); char * AdGenerateFilename ( char *Prefix, char *TableId); void AdWriteTable ( ACPI_TABLE_HEADER *Table, UINT32 Length, char *TableName, char *OemTableId); #endif #endif /* _ACAPPS */ src/acpica/source/include/acbuffer.h000066400000000000000000000360211231470457100177440ustar00rootroot00000000000000/****************************************************************************** * * Name: acbuffer.h - Support for buffers returned by ACPI predefined names * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #ifndef __ACBUFFER_H__ #define __ACBUFFER_H__ /* * Contains buffer structures for these predefined names: * _FDE, _GRT, _GTM, _PLD, _SRT */ /* * Note: C bitfields are not used for this reason: * * "Bitfields are great and easy to read, but unfortunately the C language * does not specify the layout of bitfields in memory, which means they are * essentially useless for dealing with packed data in on-disk formats or * binary wire protocols." (Or ACPI tables and buffers.) "If you ask me, * this decision was a design error in C. Ritchie could have picked an order * and stuck with it." Norman Ramsey. * See http://stackoverflow.com/a/1053662/41661 */ /* _FDE return value */ typedef struct acpi_fde_info { UINT32 Floppy0; UINT32 Floppy1; UINT32 Floppy2; UINT32 Floppy3; UINT32 Tape; } ACPI_FDE_INFO; /* * _GRT return value * _SRT input value */ typedef struct acpi_grt_info { UINT16 Year; UINT8 Month; UINT8 Day; UINT8 Hour; UINT8 Minute; UINT8 Second; UINT8 Valid; UINT16 Milliseconds; UINT16 Timezone; UINT8 Daylight; UINT8 Reserved[3]; } ACPI_GRT_INFO; /* _GTM return value */ typedef struct acpi_gtm_info { UINT32 PioSpeed0; UINT32 DmaSpeed0; UINT32 PioSpeed1; UINT32 DmaSpeed1; UINT32 Flags; } ACPI_GTM_INFO; /* * Formatted _PLD return value. The minimum size is a package containing * one buffer. * Revision 1: Buffer is 16 bytes (128 bits) * Revision 2: Buffer is 20 bytes (160 bits) * * Note: This structure is returned from the AcpiDecodePldBuffer * interface. */ typedef struct acpi_pld_info { UINT8 Revision; UINT8 IgnoreColor; UINT32 Color; UINT16 Width; UINT16 Height; UINT8 UserVisible; UINT8 Dock; UINT8 Lid; UINT8 Panel; UINT8 VerticalPosition; UINT8 HorizontalPosition; UINT8 Shape; UINT8 GroupOrientation; UINT8 GroupToken; UINT8 GroupPosition; UINT8 Bay; UINT8 Ejectable; UINT8 OspmEjectRequired; UINT8 CabinetNumber; UINT8 CardCageNumber; UINT8 Reference; UINT8 Rotation; UINT8 Order; UINT8 Reserved; UINT16 VerticalOffset; UINT16 HorizontalOffset; } ACPI_PLD_INFO; /* * Macros to: * 1) Convert a _PLD buffer to internal ACPI_PLD_INFO format - ACPI_PLD_GET* * (Used by AcpiDecodePldBuffer) * 2) Construct a _PLD buffer - ACPI_PLD_SET* * (Intended for BIOS use only) */ #define ACPI_PLD_REV1_BUFFER_SIZE 16 /* For Revision 1 of the buffer (From ACPI spec) */ #define ACPI_PLD_BUFFER_SIZE 20 /* For Revision 2 of the buffer (From ACPI spec) */ /* First 32-bit dword, bits 0:32 */ #define ACPI_PLD_GET_REVISION(dword) ACPI_GET_BITS (dword, 0, ACPI_7BIT_MASK) #define ACPI_PLD_SET_REVISION(dword,value) ACPI_SET_BITS (dword, 0, ACPI_7BIT_MASK, value) /* Offset 0, Len 7 */ #define ACPI_PLD_GET_IGNORE_COLOR(dword) ACPI_GET_BITS (dword, 7, ACPI_1BIT_MASK) #define ACPI_PLD_SET_IGNORE_COLOR(dword,value) ACPI_SET_BITS (dword, 7, ACPI_1BIT_MASK, value) /* Offset 7, Len 1 */ #define ACPI_PLD_GET_COLOR(dword) ACPI_GET_BITS (dword, 8, ACPI_24BIT_MASK) #define ACPI_PLD_SET_COLOR(dword,value) ACPI_SET_BITS (dword, 8, ACPI_24BIT_MASK, value) /* Offset 8, Len 24 */ /* Second 32-bit dword, bits 33:63 */ #define ACPI_PLD_GET_WIDTH(dword) ACPI_GET_BITS (dword, 0, ACPI_16BIT_MASK) #define ACPI_PLD_SET_WIDTH(dword,value) ACPI_SET_BITS (dword, 0, ACPI_16BIT_MASK, value) /* Offset 32+0=32, Len 16 */ #define ACPI_PLD_GET_HEIGHT(dword) ACPI_GET_BITS (dword, 16, ACPI_16BIT_MASK) #define ACPI_PLD_SET_HEIGHT(dword,value) ACPI_SET_BITS (dword, 16, ACPI_16BIT_MASK, value) /* Offset 32+16=48, Len 16 */ /* Third 32-bit dword, bits 64:95 */ #define ACPI_PLD_GET_USER_VISIBLE(dword) ACPI_GET_BITS (dword, 0, ACPI_1BIT_MASK) #define ACPI_PLD_SET_USER_VISIBLE(dword,value) ACPI_SET_BITS (dword, 0, ACPI_1BIT_MASK, value) /* Offset 64+0=64, Len 1 */ #define ACPI_PLD_GET_DOCK(dword) ACPI_GET_BITS (dword, 1, ACPI_1BIT_MASK) #define ACPI_PLD_SET_DOCK(dword,value) ACPI_SET_BITS (dword, 1, ACPI_1BIT_MASK, value) /* Offset 64+1=65, Len 1 */ #define ACPI_PLD_GET_LID(dword) ACPI_GET_BITS (dword, 2, ACPI_1BIT_MASK) #define ACPI_PLD_SET_LID(dword,value) ACPI_SET_BITS (dword, 2, ACPI_1BIT_MASK, value) /* Offset 64+2=66, Len 1 */ #define ACPI_PLD_GET_PANEL(dword) ACPI_GET_BITS (dword, 3, ACPI_3BIT_MASK) #define ACPI_PLD_SET_PANEL(dword,value) ACPI_SET_BITS (dword, 3, ACPI_3BIT_MASK, value) /* Offset 64+3=67, Len 3 */ #define ACPI_PLD_GET_VERTICAL(dword) ACPI_GET_BITS (dword, 6, ACPI_2BIT_MASK) #define ACPI_PLD_SET_VERTICAL(dword,value) ACPI_SET_BITS (dword, 6, ACPI_2BIT_MASK, value) /* Offset 64+6=70, Len 2 */ #define ACPI_PLD_GET_HORIZONTAL(dword) ACPI_GET_BITS (dword, 8, ACPI_2BIT_MASK) #define ACPI_PLD_SET_HORIZONTAL(dword,value) ACPI_SET_BITS (dword, 8, ACPI_2BIT_MASK, value) /* Offset 64+8=72, Len 2 */ #define ACPI_PLD_GET_SHAPE(dword) ACPI_GET_BITS (dword, 10, ACPI_4BIT_MASK) #define ACPI_PLD_SET_SHAPE(dword,value) ACPI_SET_BITS (dword, 10, ACPI_4BIT_MASK, value) /* Offset 64+10=74, Len 4 */ #define ACPI_PLD_GET_ORIENTATION(dword) ACPI_GET_BITS (dword, 14, ACPI_1BIT_MASK) #define ACPI_PLD_SET_ORIENTATION(dword,value) ACPI_SET_BITS (dword, 14, ACPI_1BIT_MASK, value) /* Offset 64+14=78, Len 1 */ #define ACPI_PLD_GET_TOKEN(dword) ACPI_GET_BITS (dword, 15, ACPI_8BIT_MASK) #define ACPI_PLD_SET_TOKEN(dword,value) ACPI_SET_BITS (dword, 15, ACPI_8BIT_MASK, value) /* Offset 64+15=79, Len 8 */ #define ACPI_PLD_GET_POSITION(dword) ACPI_GET_BITS (dword, 23, ACPI_8BIT_MASK) #define ACPI_PLD_SET_POSITION(dword,value) ACPI_SET_BITS (dword, 23, ACPI_8BIT_MASK, value) /* Offset 64+23=87, Len 8 */ #define ACPI_PLD_GET_BAY(dword) ACPI_GET_BITS (dword, 31, ACPI_1BIT_MASK) #define ACPI_PLD_SET_BAY(dword,value) ACPI_SET_BITS (dword, 31, ACPI_1BIT_MASK, value) /* Offset 64+31=95, Len 1 */ /* Fourth 32-bit dword, bits 96:127 */ #define ACPI_PLD_GET_EJECTABLE(dword) ACPI_GET_BITS (dword, 0, ACPI_1BIT_MASK) #define ACPI_PLD_SET_EJECTABLE(dword,value) ACPI_SET_BITS (dword, 0, ACPI_1BIT_MASK, value) /* Offset 96+0=96, Len 1 */ #define ACPI_PLD_GET_OSPM_EJECT(dword) ACPI_GET_BITS (dword, 1, ACPI_1BIT_MASK) #define ACPI_PLD_SET_OSPM_EJECT(dword,value) ACPI_SET_BITS (dword, 1, ACPI_1BIT_MASK, value) /* Offset 96+1=97, Len 1 */ #define ACPI_PLD_GET_CABINET(dword) ACPI_GET_BITS (dword, 2, ACPI_8BIT_MASK) #define ACPI_PLD_SET_CABINET(dword,value) ACPI_SET_BITS (dword, 2, ACPI_8BIT_MASK, value) /* Offset 96+2=98, Len 8 */ #define ACPI_PLD_GET_CARD_CAGE(dword) ACPI_GET_BITS (dword, 10, ACPI_8BIT_MASK) #define ACPI_PLD_SET_CARD_CAGE(dword,value) ACPI_SET_BITS (dword, 10, ACPI_8BIT_MASK, value) /* Offset 96+10=106, Len 8 */ #define ACPI_PLD_GET_REFERENCE(dword) ACPI_GET_BITS (dword, 18, ACPI_1BIT_MASK) #define ACPI_PLD_SET_REFERENCE(dword,value) ACPI_SET_BITS (dword, 18, ACPI_1BIT_MASK, value) /* Offset 96+18=114, Len 1 */ #define ACPI_PLD_GET_ROTATION(dword) ACPI_GET_BITS (dword, 19, ACPI_4BIT_MASK) #define ACPI_PLD_SET_ROTATION(dword,value) ACPI_SET_BITS (dword, 19, ACPI_4BIT_MASK, value) /* Offset 96+19=115, Len 4 */ #define ACPI_PLD_GET_ORDER(dword) ACPI_GET_BITS (dword, 23, ACPI_5BIT_MASK) #define ACPI_PLD_SET_ORDER(dword,value) ACPI_SET_BITS (dword, 23, ACPI_5BIT_MASK, value) /* Offset 96+23=119, Len 5 */ /* Fifth 32-bit dword, bits 128:159 (Revision 2 of _PLD only) */ #define ACPI_PLD_GET_VERT_OFFSET(dword) ACPI_GET_BITS (dword, 0, ACPI_16BIT_MASK) #define ACPI_PLD_SET_VERT_OFFSET(dword,value) ACPI_SET_BITS (dword, 0, ACPI_16BIT_MASK, value) /* Offset 128+0=128, Len 16 */ #define ACPI_PLD_GET_HORIZ_OFFSET(dword) ACPI_GET_BITS (dword, 16, ACPI_16BIT_MASK) #define ACPI_PLD_SET_HORIZ_OFFSET(dword,value) ACPI_SET_BITS (dword, 16, ACPI_16BIT_MASK, value) /* Offset 128+16=144, Len 16 */ #endif /* ACBUFFER_H */ src/acpica/source/include/accommon.h000066400000000000000000000157471231470457100177770ustar00rootroot00000000000000/****************************************************************************** * * Name: accommon.h - Common include files for generation of ACPICA source * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #ifndef __ACCOMMON_H__ #define __ACCOMMON_H__ /* * Common set of includes for all ACPICA source files. * We put them here because we don't want to duplicate them * in the the source code again and again. * * Note: The order of these include files is important. */ #include "acconfig.h" /* Global configuration constants */ #include "acmacros.h" /* C macros */ #include "aclocal.h" /* Internal data types */ #include "acobject.h" /* ACPI internal object */ #include "acstruct.h" /* Common structures */ #include "acglobal.h" /* All global variables */ #include "achware.h" /* Hardware defines and interfaces */ #include "acutils.h" /* Utility interfaces */ #endif /* __ACCOMMON_H__ */ src/acpica/source/include/acconfig.h000066400000000000000000000304011231470457100177340ustar00rootroot00000000000000/****************************************************************************** * * Name: acconfig.h - Global configuration constants * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #ifndef _ACCONFIG_H #define _ACCONFIG_H /****************************************************************************** * * Configuration options * *****************************************************************************/ /* * ACPI_DEBUG_OUTPUT - This switch enables all the debug facilities of the * ACPI subsystem. This includes the DEBUG_PRINT output * statements. When disabled, all DEBUG_PRINT * statements are compiled out. * * ACPI_APPLICATION - Use this switch if the subsystem is going to be run * at the application level. * */ /* * OS name, used for the _OS object. The _OS object is essentially obsolete, * but there is a large base of ASL/AML code in existing machines that check * for the string below. The use of this string usually guarantees that * the ASL will execute down the most tested code path. Also, there is some * code that will not execute the _OSI method unless _OS matches the string * below. Therefore, change this string at your own risk. */ #define ACPI_OS_NAME "Microsoft Windows NT" /* Maximum objects in the various object caches */ #define ACPI_MAX_STATE_CACHE_DEPTH 96 /* State objects */ #define ACPI_MAX_PARSE_CACHE_DEPTH 96 /* Parse tree objects */ #define ACPI_MAX_EXTPARSE_CACHE_DEPTH 96 /* Parse tree objects */ #define ACPI_MAX_OBJECT_CACHE_DEPTH 96 /* Interpreter operand objects */ #define ACPI_MAX_NAMESPACE_CACHE_DEPTH 96 /* Namespace objects */ /* * Should the subsystem abort the loading of an ACPI table if the * table checksum is incorrect? */ #ifndef ACPI_CHECKSUM_ABORT #define ACPI_CHECKSUM_ABORT FALSE #endif /* * Generate a version of ACPICA that only supports "reduced hardware" * platforms (as defined in ACPI 5.0). Set to TRUE to generate a specialized * version of ACPICA that ONLY supports the ACPI 5.0 "reduced hardware" * model. In other words, no ACPI hardware is supported. * * If TRUE, this means no support for the following: * PM Event and Control registers * SCI interrupt (and handler) * Fixed Events * General Purpose Events (GPEs) * Global Lock * ACPI PM timer * FACS table (Waking vectors and Global Lock) */ #ifndef ACPI_REDUCED_HARDWARE #define ACPI_REDUCED_HARDWARE FALSE #endif /****************************************************************************** * * Subsystem Constants * *****************************************************************************/ /* Version of ACPI supported */ #define ACPI_CA_SUPPORT_LEVEL 5 /* Maximum count for a semaphore object */ #define ACPI_MAX_SEMAPHORE_COUNT 256 /* Maximum object reference count (detects object deletion issues) */ #define ACPI_MAX_REFERENCE_COUNT 0x800 /* Default page size for use in mapping memory for operation regions */ #define ACPI_DEFAULT_PAGE_SIZE 4096 /* Must be power of 2 */ /* OwnerId tracking. 8 entries allows for 255 OwnerIds */ #define ACPI_NUM_OWNERID_MASKS 8 /* Size of the root table array is increased by this increment */ #define ACPI_ROOT_TABLE_SIZE_INCREMENT 4 /* Maximum number of While() loop iterations before forced abort */ #define ACPI_MAX_LOOP_ITERATIONS 0xFFFF /* Maximum sleep allowed via Sleep() operator */ #define ACPI_MAX_SLEEP 2000 /* 2000 millisec == two seconds */ /* Address Range lists are per-SpaceId (Memory and I/O only) */ #define ACPI_ADDRESS_RANGE_MAX 2 /****************************************************************************** * * ACPI Specification constants (Do not change unless the specification changes) * *****************************************************************************/ /* Method info (in WALK_STATE), containing local variables and argumetns */ #define ACPI_METHOD_NUM_LOCALS 8 #define ACPI_METHOD_MAX_LOCAL 7 #define ACPI_METHOD_NUM_ARGS 7 #define ACPI_METHOD_MAX_ARG 6 /* * Operand Stack (in WALK_STATE), Must be large enough to contain METHOD_MAX_ARG */ #define ACPI_OBJ_NUM_OPERANDS 8 #define ACPI_OBJ_MAX_OPERAND 7 /* Number of elements in the Result Stack frame, can be an arbitrary value */ #define ACPI_RESULTS_FRAME_OBJ_NUM 8 /* * Maximal number of elements the Result Stack can contain, * it may be an arbitray value not exceeding the types of * ResultSize and ResultCount (now UINT8). */ #define ACPI_RESULTS_OBJ_NUM_MAX 255 /* Constants used in searching for the RSDP in low memory */ #define ACPI_EBDA_PTR_LOCATION 0x0000040E /* Physical Address */ #define ACPI_EBDA_PTR_LENGTH 2 #define ACPI_EBDA_WINDOW_SIZE 1024 #define ACPI_HI_RSDP_WINDOW_BASE 0x000E0000 /* Physical Address */ #define ACPI_HI_RSDP_WINDOW_SIZE 0x00020000 #define ACPI_RSDP_SCAN_STEP 16 /* Operation regions */ #define ACPI_USER_REGION_BEGIN 0x80 /* Maximum SpaceIds for Operation Regions */ #define ACPI_MAX_ADDRESS_SPACE 255 #define ACPI_NUM_DEFAULT_SPACES 4 /* Array sizes. Used for range checking also */ #define ACPI_MAX_MATCH_OPCODE 5 /* RSDP checksums */ #define ACPI_RSDP_CHECKSUM_LENGTH 20 #define ACPI_RSDP_XCHECKSUM_LENGTH 36 /* SMBus, GSBus and IPMI bidirectional buffer size */ #define ACPI_SMBUS_BUFFER_SIZE 34 #define ACPI_GSBUS_BUFFER_SIZE 34 #define ACPI_IPMI_BUFFER_SIZE 66 /* _SxD and _SxW control methods */ #define ACPI_NUM_SxD_METHODS 4 #define ACPI_NUM_SxW_METHODS 5 /****************************************************************************** * * ACPI AML Debugger * *****************************************************************************/ #define ACPI_DEBUGGER_MAX_ARGS ACPI_METHOD_NUM_ARGS + 4 /* Max command line arguments */ #define ACPI_DB_LINE_BUFFER_SIZE 512 #define ACPI_DEBUGGER_COMMAND_PROMPT '-' #define ACPI_DEBUGGER_EXECUTE_PROMPT '%' #endif /* _ACCONFIG_H */ src/acpica/source/include/acdebug.h000066400000000000000000000342241231470457100175640ustar00rootroot00000000000000/****************************************************************************** * * Name: acdebug.h - ACPI/AML debugger * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #ifndef __ACDEBUG_H__ #define __ACDEBUG_H__ #define ACPI_DEBUG_BUFFER_SIZE 0x4000 /* 16K buffer for return objects */ typedef struct acpi_db_command_info { char *Name; /* Command Name */ UINT8 MinArgs; /* Minimum arguments required */ } ACPI_DB_COMMAND_INFO; typedef struct acpi_db_command_help { UINT8 LineCount; /* Number of help lines */ char *Invocation; /* Command Invocation */ char *Description; /* Command Description */ } ACPI_DB_COMMAND_HELP; typedef struct acpi_db_argument_info { char *Name; /* Argument Name */ } ACPI_DB_ARGUMENT_INFO; typedef struct acpi_db_execute_walk { UINT32 Count; UINT32 MaxCount; } ACPI_DB_EXECUTE_WALK; #define PARAM_LIST(pl) pl #define DBTEST_OUTPUT_LEVEL(lvl) if (AcpiGbl_DbOpt_verbose) #define VERBOSE_PRINT(fp) DBTEST_OUTPUT_LEVEL(lvl) {\ AcpiOsPrintf PARAM_LIST(fp);} #define EX_NO_SINGLE_STEP 1 #define EX_SINGLE_STEP 2 /* * dbxface - external debugger interfaces */ ACPI_STATUS AcpiDbInitialize ( void); void AcpiDbTerminate ( void); ACPI_STATUS AcpiDbSingleStep ( ACPI_WALK_STATE *WalkState, ACPI_PARSE_OBJECT *Op, UINT32 OpType); /* * dbcmds - debug commands and output routines */ ACPI_NAMESPACE_NODE * AcpiDbConvertToNode ( char *InString); void AcpiDbDisplayTableInfo ( char *TableArg); void AcpiDbDisplayTemplate ( char *BufferArg); void AcpiDbUnloadAcpiTable ( char *Name); void AcpiDbSendNotify ( char *Name, UINT32 Value); void AcpiDbDisplayInterfaces ( char *ActionArg, char *InterfaceNameArg); ACPI_STATUS AcpiDbSleep ( char *ObjectArg); void AcpiDbDisplayLocks ( void); void AcpiDbDisplayResources ( char *ObjectArg); ACPI_HW_DEPENDENT_RETURN_VOID ( void AcpiDbDisplayGpes ( void)) void AcpiDbDisplayHandlers ( void); ACPI_HW_DEPENDENT_RETURN_VOID ( void AcpiDbGenerateGpe ( char *GpeArg, char *BlockArg)) ACPI_HW_DEPENDENT_RETURN_VOID ( void AcpiDbGenerateSci ( void)) void AcpiDbExecuteTest ( char *TypeArg); /* * dbconvert - miscellaneous conversion routines */ ACPI_STATUS AcpiDbHexCharToValue ( int HexChar, UINT8 *ReturnValue); ACPI_STATUS AcpiDbConvertToPackage ( char *String, ACPI_OBJECT *Object); ACPI_STATUS AcpiDbConvertToObject ( ACPI_OBJECT_TYPE Type, char *String, ACPI_OBJECT *Object); UINT8 * AcpiDbEncodePldBuffer ( ACPI_PLD_INFO *PldInfo); void AcpiDbDumpPldBuffer ( ACPI_OBJECT *ObjDesc); /* * dbmethod - control method commands */ void AcpiDbSetMethodBreakpoint ( char *Location, ACPI_WALK_STATE *WalkState, ACPI_PARSE_OBJECT *Op); void AcpiDbSetMethodCallBreakpoint ( ACPI_PARSE_OBJECT *Op); void AcpiDbSetMethodData ( char *TypeArg, char *IndexArg, char *ValueArg); ACPI_STATUS AcpiDbDisassembleMethod ( char *Name); void AcpiDbDisassembleAml ( char *Statements, ACPI_PARSE_OBJECT *Op); void AcpiDbBatchExecute ( char *CountArg); /* * dbnames - namespace commands */ void AcpiDbSetScope ( char *Name); void AcpiDbDumpNamespace ( char *StartArg, char *DepthArg); void AcpiDbDumpNamespacePaths ( void); void AcpiDbDumpNamespaceByOwner ( char *OwnerArg, char *DepthArg); ACPI_STATUS AcpiDbFindNameInNamespace ( char *NameArg); void AcpiDbCheckPredefinedNames ( void); ACPI_STATUS AcpiDbDisplayObjects ( char *ObjTypeArg, char *DisplayCountArg); void AcpiDbCheckIntegrity ( void); void AcpiDbFindReferences ( char *ObjectArg); void AcpiDbGetBusInfo ( void); /* * dbdisply - debug display commands */ void AcpiDbDisplayMethodInfo ( ACPI_PARSE_OBJECT *Op); void AcpiDbDecodeAndDisplayObject ( char *Target, char *OutputType); void AcpiDbDisplayResultObject ( ACPI_OPERAND_OBJECT *ObjDesc, ACPI_WALK_STATE *WalkState); ACPI_STATUS AcpiDbDisplayAllMethods ( char *DisplayCountArg); void AcpiDbDisplayArguments ( void); void AcpiDbDisplayLocals ( void); void AcpiDbDisplayResults ( void); void AcpiDbDisplayCallingTree ( void); void AcpiDbDisplayObjectType ( char *ObjectArg); void AcpiDbDisplayArgumentObject ( ACPI_OPERAND_OBJECT *ObjDesc, ACPI_WALK_STATE *WalkState); /* * dbexec - debugger control method execution */ void AcpiDbExecute ( char *Name, char **Args, ACPI_OBJECT_TYPE *Types, UINT32 Flags); void AcpiDbCreateExecutionThreads ( char *NumThreadsArg, char *NumLoopsArg, char *MethodNameArg); void AcpiDbDeleteObjects ( UINT32 Count, ACPI_OBJECT *Objects); #ifdef ACPI_DBG_TRACK_ALLOCATIONS UINT32 AcpiDbGetCacheInfo ( ACPI_MEMORY_LIST *Cache); #endif /* * dbfileio - Debugger file I/O commands */ ACPI_OBJECT_TYPE AcpiDbMatchArgument ( char *UserArgument, ACPI_DB_ARGUMENT_INFO *Arguments); void AcpiDbCloseDebugFile ( void); void AcpiDbOpenDebugFile ( char *Name); ACPI_STATUS AcpiDbLoadAcpiTable ( char *Filename); ACPI_STATUS AcpiDbGetTableFromFile ( char *Filename, ACPI_TABLE_HEADER **Table); ACPI_STATUS AcpiDbReadTableFromFile ( char *Filename, ACPI_TABLE_HEADER **Table); /* * dbhistry - debugger HISTORY command */ void AcpiDbAddToHistory ( char *CommandLine); void AcpiDbDisplayHistory ( void); char * AcpiDbGetFromHistory ( char *CommandNumArg); char * AcpiDbGetHistoryByIndex ( UINT32 CommanddNum); /* * dbinput - user front-end to the AML debugger */ ACPI_STATUS AcpiDbCommandDispatch ( char *InputBuffer, ACPI_WALK_STATE *WalkState, ACPI_PARSE_OBJECT *Op); void ACPI_SYSTEM_XFACE AcpiDbExecuteThread ( void *Context); ACPI_STATUS AcpiDbUserCommands ( char Prompt, ACPI_PARSE_OBJECT *Op); char * AcpiDbGetNextToken ( char *String, char **Next, ACPI_OBJECT_TYPE *ReturnType); /* * dbstats - Generation and display of ACPI table statistics */ void AcpiDbGenerateStatistics ( ACPI_PARSE_OBJECT *Root, BOOLEAN IsMethod); ACPI_STATUS AcpiDbDisplayStatistics ( char *TypeArg); /* * dbutils - AML debugger utilities */ void AcpiDbSetOutputDestination ( UINT32 Where); void AcpiDbDumpExternalObject ( ACPI_OBJECT *ObjDesc, UINT32 Level); void AcpiDbPrepNamestring ( char *Name); ACPI_NAMESPACE_NODE * AcpiDbLocalNsLookup ( char *Name); void AcpiDbUint32ToHexString ( UINT32 Value, char *Buffer); #endif /* __ACDEBUG_H__ */ src/acpica/source/include/acdisasm.h000066400000000000000000000702601231470457100177560ustar00rootroot00000000000000/****************************************************************************** * * Name: acdisasm.h - AML disassembler * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #ifndef __ACDISASM_H__ #define __ACDISASM_H__ #include "amlresrc.h" #define BLOCK_NONE 0 #define BLOCK_PAREN 1 #define BLOCK_BRACE 2 #define BLOCK_COMMA_LIST 4 #define ACPI_DEFAULT_RESNAME *(UINT32 *) "__RD" /* * Raw table data header. Used by disassembler and data table compiler. * Do not change. */ #define ACPI_RAW_TABLE_DATA_HEADER "Raw Table Data" typedef const struct acpi_dmtable_info { UINT8 Opcode; UINT16 Offset; char *Name; UINT8 Flags; } ACPI_DMTABLE_INFO; /* Values for Flags field above */ #define DT_LENGTH 0x01 /* Field is a subtable length */ #define DT_FLAG 0x02 /* Field is a flag value */ #define DT_NON_ZERO 0x04 /* Field must be non-zero */ #define DT_OPTIONAL 0x08 /* Field is optional */ #define DT_DESCRIBES_OPTIONAL 0x10 /* Field describes an optional field (length, etc.) */ #define DT_COUNT 0x20 /* Currently not used */ /* * Values for Opcode above. * Note: 0-7 must not change, they are used as a flag shift value. Other * than those, new values can be added wherever appropriate. */ typedef enum { /* Simple Data Types */ ACPI_DMT_FLAG0 = 0, ACPI_DMT_FLAG1 = 1, ACPI_DMT_FLAG2 = 2, ACPI_DMT_FLAG3 = 3, ACPI_DMT_FLAG4 = 4, ACPI_DMT_FLAG5 = 5, ACPI_DMT_FLAG6 = 6, ACPI_DMT_FLAG7 = 7, ACPI_DMT_FLAGS0, ACPI_DMT_FLAGS1, ACPI_DMT_FLAGS2, ACPI_DMT_FLAGS4, ACPI_DMT_UINT8, ACPI_DMT_UINT16, ACPI_DMT_UINT24, ACPI_DMT_UINT32, ACPI_DMT_UINT40, ACPI_DMT_UINT48, ACPI_DMT_UINT56, ACPI_DMT_UINT64, ACPI_DMT_BUF7, ACPI_DMT_BUF10, ACPI_DMT_BUF16, ACPI_DMT_BUF128, ACPI_DMT_SIG, ACPI_DMT_STRING, ACPI_DMT_NAME4, ACPI_DMT_NAME6, ACPI_DMT_NAME8, /* Types that are decoded to strings and miscellaneous */ ACPI_DMT_ACCWIDTH, ACPI_DMT_CHKSUM, ACPI_DMT_GAS, ACPI_DMT_SPACEID, ACPI_DMT_UNICODE, ACPI_DMT_UUID, /* Types used only for the Data Table Compiler */ ACPI_DMT_BUFFER, ACPI_DMT_DEVICE_PATH, ACPI_DMT_LABEL, ACPI_DMT_PCI_PATH, /* Types that are specific to particular ACPI tables */ ACPI_DMT_ASF, ACPI_DMT_DMAR, ACPI_DMT_EINJACT, ACPI_DMT_EINJINST, ACPI_DMT_ERSTACT, ACPI_DMT_ERSTINST, ACPI_DMT_FADTPM, ACPI_DMT_HEST, ACPI_DMT_HESTNTFY, ACPI_DMT_HESTNTYP, ACPI_DMT_IVRS, ACPI_DMT_MADT, ACPI_DMT_PCCT, ACPI_DMT_PMTT, ACPI_DMT_SLIC, ACPI_DMT_SRAT, /* Special opcodes */ ACPI_DMT_EXTRA_TEXT, ACPI_DMT_EXIT } ACPI_ENTRY_TYPES; typedef void (*ACPI_DMTABLE_HANDLER) ( ACPI_TABLE_HEADER *Table); typedef ACPI_STATUS (*ACPI_CMTABLE_HANDLER) ( void **PFieldList); typedef struct acpi_dmtable_data { char *Signature; ACPI_DMTABLE_INFO *TableInfo; ACPI_DMTABLE_HANDLER TableHandler; ACPI_CMTABLE_HANDLER CmTableHandler; const unsigned char *Template; char *Name; } ACPI_DMTABLE_DATA; typedef struct acpi_op_walk_info { UINT32 Level; UINT32 LastLevel; UINT32 Count; UINT32 BitOffset; UINT32 Flags; ACPI_WALK_STATE *WalkState; } ACPI_OP_WALK_INFO; /* * TBD - another copy of this is in asltypes.h, fix */ #ifndef ASL_WALK_CALLBACK_DEFINED typedef ACPI_STATUS (*ASL_WALK_CALLBACK) ( ACPI_PARSE_OBJECT *Op, UINT32 Level, void *Context); #define ASL_WALK_CALLBACK_DEFINED #endif typedef void (*ACPI_RESOURCE_HANDLER) ( AML_RESOURCE *Resource, UINT32 Length, UINT32 Level); typedef struct acpi_resource_tag { UINT32 BitIndex; char *Tag; } ACPI_RESOURCE_TAG; /* Strings used for decoding flags to ASL keywords */ extern const char *AcpiGbl_WordDecode[]; extern const char *AcpiGbl_IrqDecode[]; extern const char *AcpiGbl_LockRule[]; extern const char *AcpiGbl_AccessTypes[]; extern const char *AcpiGbl_UpdateRules[]; extern const char *AcpiGbl_MatchOps[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoAsf0[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoAsf1[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoAsf1a[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoAsf2[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoAsf2a[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoAsf3[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoAsf4[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoAsfHdr[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoBoot[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoBert[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoBgrt[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoCpep[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoCpep0[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoCsrt0[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoCsrt1[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoCsrt2[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoDbg2[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoDbg2Device[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoDbg2Addr[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoDbg2Size[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoDbg2Name[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoDbg2OemData[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoDbgp[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoDmar[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoDmarHdr[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoDmarScope[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoDmar0[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoDmar1[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoDmar2[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoDmar3[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoDrtm[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoEcdt[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoEinj[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoEinj0[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoErst[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoErst0[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoFacs[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoFadt1[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoFadt2[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoFadt3[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoFadt5[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoFpdt[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoFpdtHdr[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoFpdt0[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoFpdt1[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoGas[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoGtdt[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoHeader[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoHest[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoHest0[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoHest1[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoHest2[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoHest6[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoHest7[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoHest8[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoHest9[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoHestNotify[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoHestBank[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoHpet[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoIvrs[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoIvrs0[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoIvrs1[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoIvrs4[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoIvrs8a[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoIvrs8b[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoIvrs8c[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoIvrsHdr[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoMadt[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoMadt0[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoMadt1[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoMadt2[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoMadt3[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoMadt4[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoMadt5[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoMadt6[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoMadt7[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoMadt8[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoMadt9[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoMadt10[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoMadt11[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoMadt12[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoMadtHdr[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoMcfg[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoMcfg0[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoMchi[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoMpst[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoMpst0[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoMpst0A[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoMpst0B[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoMpst1[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoMpst2[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoMsct[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoMsct0[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoMtmr[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoMtmr0[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoPmtt[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoPmtt0[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoPmtt1[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoPmtt1a[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoPmtt2[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoPmttHdr[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoPcct[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoPcctHdr[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoPcct0[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoRsdp1[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoRsdp2[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoS3pt[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoS3ptHdr[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoS3pt0[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoS3pt1[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoSbst[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoSlicHdr[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoSlic0[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoSlic1[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoSlit[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoSpcr[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoSpmi[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoSrat[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoSratHdr[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoSrat0[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoSrat1[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoSrat2[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoTcpa[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoTpm2[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoUefi[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoVrtc[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoVrtc0[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoWaet[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoWdat[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoWdat0[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoWddt[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoWdrt[]; extern ACPI_DMTABLE_INFO AcpiDmTableInfoGeneric[][2]; /* * dmtable */ extern ACPI_DMTABLE_DATA AcpiDmTableData[]; UINT8 AcpiDmGenerateChecksum ( void *Table, UINT32 Length, UINT8 OriginalChecksum); ACPI_DMTABLE_DATA * AcpiDmGetTableData ( char *Signature); void AcpiDmDumpDataTable ( ACPI_TABLE_HEADER *Table); ACPI_STATUS AcpiDmDumpTable ( UINT32 TableLength, UINT32 TableOffset, void *Table, UINT32 SubTableLength, ACPI_DMTABLE_INFO *Info); void AcpiDmLineHeader ( UINT32 Offset, UINT32 ByteLength, char *Name); void AcpiDmLineHeader2 ( UINT32 Offset, UINT32 ByteLength, char *Name, UINT32 Value); /* * dmtbdump */ void AcpiDmDumpAsf ( ACPI_TABLE_HEADER *Table); void AcpiDmDumpCpep ( ACPI_TABLE_HEADER *Table); void AcpiDmDumpCsrt ( ACPI_TABLE_HEADER *Table); void AcpiDmDumpDbg2 ( ACPI_TABLE_HEADER *Table); void AcpiDmDumpDmar ( ACPI_TABLE_HEADER *Table); void AcpiDmDumpEinj ( ACPI_TABLE_HEADER *Table); void AcpiDmDumpErst ( ACPI_TABLE_HEADER *Table); void AcpiDmDumpFadt ( ACPI_TABLE_HEADER *Table); void AcpiDmDumpFpdt ( ACPI_TABLE_HEADER *Table); void AcpiDmDumpHest ( ACPI_TABLE_HEADER *Table); void AcpiDmDumpIvrs ( ACPI_TABLE_HEADER *Table); void AcpiDmDumpMadt ( ACPI_TABLE_HEADER *Table); void AcpiDmDumpMcfg ( ACPI_TABLE_HEADER *Table); void AcpiDmDumpMpst ( ACPI_TABLE_HEADER *Table); void AcpiDmDumpMsct ( ACPI_TABLE_HEADER *Table); void AcpiDmDumpMtmr ( ACPI_TABLE_HEADER *Table); void AcpiDmDumpPcct ( ACPI_TABLE_HEADER *Table); void AcpiDmDumpPmtt ( ACPI_TABLE_HEADER *Table); UINT32 AcpiDmDumpRsdp ( ACPI_TABLE_HEADER *Table); void AcpiDmDumpRsdt ( ACPI_TABLE_HEADER *Table); UINT32 AcpiDmDumpS3pt ( ACPI_TABLE_HEADER *Table); void AcpiDmDumpSlic ( ACPI_TABLE_HEADER *Table); void AcpiDmDumpSlit ( ACPI_TABLE_HEADER *Table); void AcpiDmDumpSrat ( ACPI_TABLE_HEADER *Table); void AcpiDmDumpVrtc ( ACPI_TABLE_HEADER *Table); void AcpiDmDumpWdat ( ACPI_TABLE_HEADER *Table); void AcpiDmDumpXsdt ( ACPI_TABLE_HEADER *Table); /* * dmwalk */ void AcpiDmDisassemble ( ACPI_WALK_STATE *WalkState, ACPI_PARSE_OBJECT *Origin, UINT32 NumOpcodes); void AcpiDmWalkParseTree ( ACPI_PARSE_OBJECT *Op, ASL_WALK_CALLBACK DescendingCallback, ASL_WALK_CALLBACK AscendingCallback, void *Context); /* * dmopcode */ void AcpiDmDisassembleOneOp ( ACPI_WALK_STATE *WalkState, ACPI_OP_WALK_INFO *Info, ACPI_PARSE_OBJECT *Op); void AcpiDmDecodeInternalObject ( ACPI_OPERAND_OBJECT *ObjDesc); UINT32 AcpiDmListType ( ACPI_PARSE_OBJECT *Op); void AcpiDmMethodFlags ( ACPI_PARSE_OBJECT *Op); void AcpiDmDisplayTargetPathname ( ACPI_PARSE_OBJECT *Op); void AcpiDmNotifyDescription ( ACPI_PARSE_OBJECT *Op); void AcpiDmPredefinedDescription ( ACPI_PARSE_OBJECT *Op); void AcpiDmFieldPredefinedDescription ( ACPI_PARSE_OBJECT *Op); void AcpiDmFieldFlags ( ACPI_PARSE_OBJECT *Op); void AcpiDmAddressSpace ( UINT8 SpaceId); void AcpiDmRegionFlags ( ACPI_PARSE_OBJECT *Op); void AcpiDmMatchOp ( ACPI_PARSE_OBJECT *Op); /* * dmnames */ UINT32 AcpiDmDumpName ( UINT32 Name); ACPI_STATUS AcpiPsDisplayObjectPathname ( ACPI_WALK_STATE *WalkState, ACPI_PARSE_OBJECT *Op); void AcpiDmNamestring ( char *Name); /* * dmobject */ void AcpiDmDisplayInternalObject ( ACPI_OPERAND_OBJECT *ObjDesc, ACPI_WALK_STATE *WalkState); void AcpiDmDisplayArguments ( ACPI_WALK_STATE *WalkState); void AcpiDmDisplayLocals ( ACPI_WALK_STATE *WalkState); void AcpiDmDumpMethodInfo ( ACPI_STATUS Status, ACPI_WALK_STATE *WalkState, ACPI_PARSE_OBJECT *Op); /* * dmbuffer */ void AcpiDmDisasmByteList ( UINT32 Level, UINT8 *ByteData, UINT32 ByteCount); void AcpiDmByteList ( ACPI_OP_WALK_INFO *Info, ACPI_PARSE_OBJECT *Op); void AcpiDmCheckForHardwareId ( ACPI_PARSE_OBJECT *Op); void AcpiDmDecompressEisaId ( UINT32 EncodedId); BOOLEAN AcpiDmIsUnicodeBuffer ( ACPI_PARSE_OBJECT *Op); BOOLEAN AcpiDmIsStringBuffer ( ACPI_PARSE_OBJECT *Op); BOOLEAN AcpiDmIsPldBuffer ( ACPI_PARSE_OBJECT *Op); /* * dmdeferred */ ACPI_STATUS AcpiDmParseDeferredOps ( ACPI_PARSE_OBJECT *Root); /* * dmextern */ ACPI_STATUS AcpiDmAddToExternalFileList ( char *PathList); void AcpiDmClearExternalFileList ( void); void AcpiDmAddOpToExternalList ( ACPI_PARSE_OBJECT *Op, char *Path, UINT8 Type, UINT32 Value, UINT16 Flags); void AcpiDmAddNodeToExternalList ( ACPI_NAMESPACE_NODE *Node, UINT8 Type, UINT32 Value, UINT16 Flags); void AcpiDmAddExternalsToNamespace ( void); UINT32 AcpiDmGetExternalMethodCount ( void); void AcpiDmClearExternalList ( void); void AcpiDmEmitExternals ( void); void AcpiDmUnresolvedWarning ( UINT8 Type); void AcpiDmGetExternalsFromFile ( void); /* * dmresrc */ void AcpiDmDumpInteger8 ( UINT8 Value, char *Name); void AcpiDmDumpInteger16 ( UINT16 Value, char *Name); void AcpiDmDumpInteger32 ( UINT32 Value, char *Name); void AcpiDmDumpInteger64 ( UINT64 Value, char *Name); void AcpiDmResourceTemplate ( ACPI_OP_WALK_INFO *Info, ACPI_PARSE_OBJECT *Op, UINT8 *ByteData, UINT32 ByteCount); ACPI_STATUS AcpiDmIsResourceTemplate ( ACPI_WALK_STATE *WalkState, ACPI_PARSE_OBJECT *Op); void AcpiDmBitList ( UINT16 Mask); void AcpiDmDescriptorName ( void); /* * dmresrcl */ void AcpiDmWordDescriptor ( AML_RESOURCE *Resource, UINT32 Length, UINT32 Level); void AcpiDmDwordDescriptor ( AML_RESOURCE *Resource, UINT32 Length, UINT32 Level); void AcpiDmExtendedDescriptor ( AML_RESOURCE *Resource, UINT32 Length, UINT32 Level); void AcpiDmQwordDescriptor ( AML_RESOURCE *Resource, UINT32 Length, UINT32 Level); void AcpiDmMemory24Descriptor ( AML_RESOURCE *Resource, UINT32 Length, UINT32 Level); void AcpiDmMemory32Descriptor ( AML_RESOURCE *Resource, UINT32 Length, UINT32 Level); void AcpiDmFixedMemory32Descriptor ( AML_RESOURCE *Resource, UINT32 Length, UINT32 Level); void AcpiDmGenericRegisterDescriptor ( AML_RESOURCE *Resource, UINT32 Length, UINT32 Level); void AcpiDmInterruptDescriptor ( AML_RESOURCE *Resource, UINT32 Length, UINT32 Level); void AcpiDmVendorLargeDescriptor ( AML_RESOURCE *Resource, UINT32 Length, UINT32 Level); void AcpiDmGpioDescriptor ( AML_RESOURCE *Resource, UINT32 Length, UINT32 Level); void AcpiDmSerialBusDescriptor ( AML_RESOURCE *Resource, UINT32 Length, UINT32 Level); void AcpiDmVendorCommon ( char *Name, UINT8 *ByteData, UINT32 Length, UINT32 Level); /* * dmresrcs */ void AcpiDmIrqDescriptor ( AML_RESOURCE *Resource, UINT32 Length, UINT32 Level); void AcpiDmDmaDescriptor ( AML_RESOURCE *Resource, UINT32 Length, UINT32 Level); void AcpiDmFixedDmaDescriptor ( AML_RESOURCE *Resource, UINT32 Length, UINT32 Level); void AcpiDmIoDescriptor ( AML_RESOURCE *Resource, UINT32 Length, UINT32 Level); void AcpiDmFixedIoDescriptor ( AML_RESOURCE *Resource, UINT32 Length, UINT32 Level); void AcpiDmStartDependentDescriptor ( AML_RESOURCE *Resource, UINT32 Length, UINT32 Level); void AcpiDmEndDependentDescriptor ( AML_RESOURCE *Resource, UINT32 Length, UINT32 Level); void AcpiDmVendorSmallDescriptor ( AML_RESOURCE *Resource, UINT32 Length, UINT32 Level); /* * dmutils */ void AcpiDmDecodeAttribute ( UINT8 Attribute); void AcpiDmIndent ( UINT32 Level); BOOLEAN AcpiDmCommaIfListMember ( ACPI_PARSE_OBJECT *Op); void AcpiDmCommaIfFieldMember ( ACPI_PARSE_OBJECT *Op); /* * dmrestag */ void AcpiDmFindResources ( ACPI_PARSE_OBJECT *Root); void AcpiDmCheckResourceReference ( ACPI_PARSE_OBJECT *Op, ACPI_WALK_STATE *WalkState); /* * acdisasm */ void AdDisassemblerHeader ( char *Filename); #endif /* __ACDISASM_H__ */ src/acpica/source/include/acdispat.h000066400000000000000000000365061231470457100177670ustar00rootroot00000000000000/****************************************************************************** * * Name: acdispat.h - dispatcher (parser to interpreter interface) * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #ifndef _ACDISPAT_H_ #define _ACDISPAT_H_ #define NAMEOF_LOCAL_NTE "__L0" #define NAMEOF_ARG_NTE "__A0" /* * dsargs - execution of dynamic arguments for static objects */ ACPI_STATUS AcpiDsGetBufferFieldArguments ( ACPI_OPERAND_OBJECT *ObjDesc); ACPI_STATUS AcpiDsGetBankFieldArguments ( ACPI_OPERAND_OBJECT *ObjDesc); ACPI_STATUS AcpiDsGetRegionArguments ( ACPI_OPERAND_OBJECT *RgnDesc); ACPI_STATUS AcpiDsGetBufferArguments ( ACPI_OPERAND_OBJECT *ObjDesc); ACPI_STATUS AcpiDsGetPackageArguments ( ACPI_OPERAND_OBJECT *ObjDesc); /* * dscontrol - support for execution control opcodes */ ACPI_STATUS AcpiDsExecBeginControlOp ( ACPI_WALK_STATE *WalkState, ACPI_PARSE_OBJECT *Op); ACPI_STATUS AcpiDsExecEndControlOp ( ACPI_WALK_STATE *WalkState, ACPI_PARSE_OBJECT *Op); /* * dsopcode - support for late operand evaluation */ ACPI_STATUS AcpiDsEvalBufferFieldOperands ( ACPI_WALK_STATE *WalkState, ACPI_PARSE_OBJECT *Op); ACPI_STATUS AcpiDsEvalRegionOperands ( ACPI_WALK_STATE *WalkState, ACPI_PARSE_OBJECT *Op); ACPI_STATUS AcpiDsEvalTableRegionOperands ( ACPI_WALK_STATE *WalkState, ACPI_PARSE_OBJECT *Op); ACPI_STATUS AcpiDsEvalDataObjectOperands ( ACPI_WALK_STATE *WalkState, ACPI_PARSE_OBJECT *Op, ACPI_OPERAND_OBJECT *ObjDesc); ACPI_STATUS AcpiDsEvalBankFieldOperands ( ACPI_WALK_STATE *WalkState, ACPI_PARSE_OBJECT *Op); ACPI_STATUS AcpiDsInitializeRegion ( ACPI_HANDLE ObjHandle); /* * dsexec - Parser/Interpreter interface, method execution callbacks */ ACPI_STATUS AcpiDsGetPredicateValue ( ACPI_WALK_STATE *WalkState, ACPI_OPERAND_OBJECT *ResultObj); ACPI_STATUS AcpiDsExecBeginOp ( ACPI_WALK_STATE *WalkState, ACPI_PARSE_OBJECT **OutOp); ACPI_STATUS AcpiDsExecEndOp ( ACPI_WALK_STATE *State); /* * dsfield - Parser/Interpreter interface for AML fields */ ACPI_STATUS AcpiDsCreateField ( ACPI_PARSE_OBJECT *Op, ACPI_NAMESPACE_NODE *RegionNode, ACPI_WALK_STATE *WalkState); ACPI_STATUS AcpiDsCreateBankField ( ACPI_PARSE_OBJECT *Op, ACPI_NAMESPACE_NODE *RegionNode, ACPI_WALK_STATE *WalkState); ACPI_STATUS AcpiDsCreateIndexField ( ACPI_PARSE_OBJECT *Op, ACPI_NAMESPACE_NODE *RegionNode, ACPI_WALK_STATE *WalkState); ACPI_STATUS AcpiDsCreateBufferField ( ACPI_PARSE_OBJECT *Op, ACPI_WALK_STATE *WalkState); ACPI_STATUS AcpiDsInitFieldObjects ( ACPI_PARSE_OBJECT *Op, ACPI_WALK_STATE *WalkState); /* * dsload - Parser/Interpreter interface */ ACPI_STATUS AcpiDsInitCallbacks ( ACPI_WALK_STATE *WalkState, UINT32 PassNumber); /* dsload - pass 1 namespace load callbacks */ ACPI_STATUS AcpiDsLoad1BeginOp ( ACPI_WALK_STATE *WalkState, ACPI_PARSE_OBJECT **OutOp); ACPI_STATUS AcpiDsLoad1EndOp ( ACPI_WALK_STATE *WalkState); /* dsload - pass 2 namespace load callbacks */ ACPI_STATUS AcpiDsLoad2BeginOp ( ACPI_WALK_STATE *WalkState, ACPI_PARSE_OBJECT **OutOp); ACPI_STATUS AcpiDsLoad2EndOp ( ACPI_WALK_STATE *WalkState); /* * dsmthdat - method data (locals/args) */ ACPI_STATUS AcpiDsStoreObjectToLocal ( UINT8 Type, UINT32 Index, ACPI_OPERAND_OBJECT *SrcDesc, ACPI_WALK_STATE *WalkState); ACPI_STATUS AcpiDsMethodDataGetEntry ( UINT16 Opcode, UINT32 Index, ACPI_WALK_STATE *WalkState, ACPI_OPERAND_OBJECT ***Node); void AcpiDsMethodDataDeleteAll ( ACPI_WALK_STATE *WalkState); BOOLEAN AcpiDsIsMethodValue ( ACPI_OPERAND_OBJECT *ObjDesc); ACPI_STATUS AcpiDsMethodDataGetValue ( UINT8 Type, UINT32 Index, ACPI_WALK_STATE *WalkState, ACPI_OPERAND_OBJECT **DestDesc); ACPI_STATUS AcpiDsMethodDataInitArgs ( ACPI_OPERAND_OBJECT **Params, UINT32 MaxParamCount, ACPI_WALK_STATE *WalkState); ACPI_STATUS AcpiDsMethodDataGetNode ( UINT8 Type, UINT32 Index, ACPI_WALK_STATE *WalkState, ACPI_NAMESPACE_NODE **Node); void AcpiDsMethodDataInit ( ACPI_WALK_STATE *WalkState); /* * dsmethod - Parser/Interpreter interface - control method parsing */ ACPI_STATUS AcpiDsAutoSerializeMethod ( ACPI_NAMESPACE_NODE *Node, ACPI_OPERAND_OBJECT *ObjDesc); ACPI_STATUS AcpiDsCallControlMethod ( ACPI_THREAD_STATE *Thread, ACPI_WALK_STATE *WalkState, ACPI_PARSE_OBJECT *Op); ACPI_STATUS AcpiDsRestartControlMethod ( ACPI_WALK_STATE *WalkState, ACPI_OPERAND_OBJECT *ReturnDesc); void AcpiDsTerminateControlMethod ( ACPI_OPERAND_OBJECT *MethodDesc, ACPI_WALK_STATE *WalkState); ACPI_STATUS AcpiDsBeginMethodExecution ( ACPI_NAMESPACE_NODE *MethodNode, ACPI_OPERAND_OBJECT *ObjDesc, ACPI_WALK_STATE *WalkState); ACPI_STATUS AcpiDsMethodError ( ACPI_STATUS Status, ACPI_WALK_STATE *WalkState); /* * dsinit */ ACPI_STATUS AcpiDsInitializeObjects ( UINT32 TableIndex, ACPI_NAMESPACE_NODE *StartNode); /* * dsobject - Parser/Interpreter interface - object initialization and conversion */ ACPI_STATUS AcpiDsBuildInternalBufferObj ( ACPI_WALK_STATE *WalkState, ACPI_PARSE_OBJECT *Op, UINT32 BufferLength, ACPI_OPERAND_OBJECT **ObjDescPtr); ACPI_STATUS AcpiDsBuildInternalPackageObj ( ACPI_WALK_STATE *WalkState, ACPI_PARSE_OBJECT *op, UINT32 PackageLength, ACPI_OPERAND_OBJECT **ObjDesc); ACPI_STATUS AcpiDsInitObjectFromOp ( ACPI_WALK_STATE *WalkState, ACPI_PARSE_OBJECT *Op, UINT16 Opcode, ACPI_OPERAND_OBJECT **ObjDesc); ACPI_STATUS AcpiDsCreateNode ( ACPI_WALK_STATE *WalkState, ACPI_NAMESPACE_NODE *Node, ACPI_PARSE_OBJECT *Op); /* * dsutils - Parser/Interpreter interface utility routines */ void AcpiDsClearImplicitReturn ( ACPI_WALK_STATE *WalkState); BOOLEAN AcpiDsDoImplicitReturn ( ACPI_OPERAND_OBJECT *ReturnDesc, ACPI_WALK_STATE *WalkState, BOOLEAN AddReference); BOOLEAN AcpiDsIsResultUsed ( ACPI_PARSE_OBJECT *Op, ACPI_WALK_STATE *WalkState); void AcpiDsDeleteResultIfNotUsed ( ACPI_PARSE_OBJECT *Op, ACPI_OPERAND_OBJECT *ResultObj, ACPI_WALK_STATE *WalkState); ACPI_STATUS AcpiDsCreateOperand ( ACPI_WALK_STATE *WalkState, ACPI_PARSE_OBJECT *Arg, UINT32 ArgsRemaining); ACPI_STATUS AcpiDsCreateOperands ( ACPI_WALK_STATE *WalkState, ACPI_PARSE_OBJECT *FirstArg); ACPI_STATUS AcpiDsResolveOperands ( ACPI_WALK_STATE *WalkState); void AcpiDsClearOperands ( ACPI_WALK_STATE *WalkState); ACPI_STATUS AcpiDsEvaluateNamePath ( ACPI_WALK_STATE *WalkState); /* * dswscope - Scope Stack manipulation */ ACPI_STATUS AcpiDsScopeStackPush ( ACPI_NAMESPACE_NODE *Node, ACPI_OBJECT_TYPE Type, ACPI_WALK_STATE *WalkState); ACPI_STATUS AcpiDsScopeStackPop ( ACPI_WALK_STATE *WalkState); void AcpiDsScopeStackClear ( ACPI_WALK_STATE *WalkState); /* * dswstate - parser WALK_STATE management routines */ ACPI_STATUS AcpiDsObjStackPush ( void *Object, ACPI_WALK_STATE *WalkState); ACPI_STATUS AcpiDsObjStackPop ( UINT32 PopCount, ACPI_WALK_STATE *WalkState); ACPI_WALK_STATE * AcpiDsCreateWalkState ( ACPI_OWNER_ID OwnerId, ACPI_PARSE_OBJECT *Origin, ACPI_OPERAND_OBJECT *MthDesc, ACPI_THREAD_STATE *Thread); ACPI_STATUS AcpiDsInitAmlWalk ( ACPI_WALK_STATE *WalkState, ACPI_PARSE_OBJECT *Op, ACPI_NAMESPACE_NODE *MethodNode, UINT8 *AmlStart, UINT32 AmlLength, ACPI_EVALUATE_INFO *Info, UINT8 PassNumber); void AcpiDsObjStackPopAndDelete ( UINT32 PopCount, ACPI_WALK_STATE *WalkState); void AcpiDsDeleteWalkState ( ACPI_WALK_STATE *WalkState); ACPI_WALK_STATE * AcpiDsPopWalkState ( ACPI_THREAD_STATE *Thread); void AcpiDsPushWalkState ( ACPI_WALK_STATE *WalkState, ACPI_THREAD_STATE *Thread); ACPI_STATUS AcpiDsResultStackClear ( ACPI_WALK_STATE *WalkState); ACPI_WALK_STATE * AcpiDsGetCurrentWalkState ( ACPI_THREAD_STATE *Thread); ACPI_STATUS AcpiDsResultPop ( ACPI_OPERAND_OBJECT **Object, ACPI_WALK_STATE *WalkState); ACPI_STATUS AcpiDsResultPush ( ACPI_OPERAND_OBJECT *Object, ACPI_WALK_STATE *WalkState); #endif /* _ACDISPAT_H_ */ src/acpica/source/include/acevents.h000066400000000000000000000312421231470457100177770ustar00rootroot00000000000000/****************************************************************************** * * Name: acevents.h - Event subcomponent prototypes and defines * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #ifndef __ACEVENTS_H__ #define __ACEVENTS_H__ /* * evevent */ ACPI_STATUS AcpiEvInitializeEvents ( void); ACPI_STATUS AcpiEvInstallXruptHandlers ( void); UINT32 AcpiEvFixedEventDetect ( void); /* * evmisc */ BOOLEAN AcpiEvIsNotifyObject ( ACPI_NAMESPACE_NODE *Node); UINT32 AcpiEvGetGpeNumberIndex ( UINT32 GpeNumber); ACPI_STATUS AcpiEvQueueNotifyRequest ( ACPI_NAMESPACE_NODE *Node, UINT32 NotifyValue); /* * evglock - Global Lock support */ ACPI_STATUS AcpiEvInitGlobalLockHandler ( void); ACPI_HW_DEPENDENT_RETURN_OK ( ACPI_STATUS AcpiEvAcquireGlobalLock( UINT16 Timeout)) ACPI_HW_DEPENDENT_RETURN_OK ( ACPI_STATUS AcpiEvReleaseGlobalLock( void)) ACPI_STATUS AcpiEvRemoveGlobalLockHandler ( void); /* * evgpe - Low-level GPE support */ UINT32 AcpiEvGpeDetect ( ACPI_GPE_XRUPT_INFO *GpeXruptList); ACPI_STATUS AcpiEvUpdateGpeEnableMask ( ACPI_GPE_EVENT_INFO *GpeEventInfo); ACPI_STATUS AcpiEvEnableGpe ( ACPI_GPE_EVENT_INFO *GpeEventInfo); ACPI_STATUS AcpiEvAddGpeReference ( ACPI_GPE_EVENT_INFO *GpeEventInfo); ACPI_STATUS AcpiEvRemoveGpeReference ( ACPI_GPE_EVENT_INFO *GpeEventInfo); ACPI_GPE_EVENT_INFO * AcpiEvGetGpeEventInfo ( ACPI_HANDLE GpeDevice, UINT32 GpeNumber); ACPI_GPE_EVENT_INFO * AcpiEvLowGetGpeInfo ( UINT32 GpeNumber, ACPI_GPE_BLOCK_INFO *GpeBlock); ACPI_STATUS AcpiEvFinishGpe ( ACPI_GPE_EVENT_INFO *GpeEventInfo); /* * evgpeblk - Upper-level GPE block support */ ACPI_STATUS AcpiEvCreateGpeBlock ( ACPI_NAMESPACE_NODE *GpeDevice, ACPI_GENERIC_ADDRESS *GpeBlockAddress, UINT32 RegisterCount, UINT8 GpeBlockBaseNumber, UINT32 InterruptNumber, ACPI_GPE_BLOCK_INFO **ReturnGpeBlock); ACPI_STATUS AcpiEvInitializeGpeBlock ( ACPI_GPE_XRUPT_INFO *GpeXruptInfo, ACPI_GPE_BLOCK_INFO *GpeBlock, void *Context); ACPI_HW_DEPENDENT_RETURN_OK ( ACPI_STATUS AcpiEvDeleteGpeBlock ( ACPI_GPE_BLOCK_INFO *GpeBlock)) UINT32 AcpiEvGpeDispatch ( ACPI_NAMESPACE_NODE *GpeDevice, ACPI_GPE_EVENT_INFO *GpeEventInfo, UINT32 GpeNumber); /* * evgpeinit - GPE initialization and update */ ACPI_STATUS AcpiEvGpeInitialize ( void); ACPI_HW_DEPENDENT_RETURN_VOID ( void AcpiEvUpdateGpes ( ACPI_OWNER_ID TableOwnerId)) ACPI_STATUS AcpiEvMatchGpeMethod ( ACPI_HANDLE ObjHandle, UINT32 Level, void *Context, void **ReturnValue); /* * evgpeutil - GPE utilities */ ACPI_STATUS AcpiEvWalkGpeList ( ACPI_GPE_CALLBACK GpeWalkCallback, void *Context); BOOLEAN AcpiEvValidGpeEvent ( ACPI_GPE_EVENT_INFO *GpeEventInfo); ACPI_STATUS AcpiEvGetGpeDevice ( ACPI_GPE_XRUPT_INFO *GpeXruptInfo, ACPI_GPE_BLOCK_INFO *GpeBlock, void *Context); ACPI_STATUS AcpiEvGetGpeXruptBlock ( UINT32 InterruptNumber, ACPI_GPE_XRUPT_INFO **GpeXruptBlock); ACPI_STATUS AcpiEvDeleteGpeXrupt ( ACPI_GPE_XRUPT_INFO *GpeXrupt); ACPI_STATUS AcpiEvDeleteGpeHandlers ( ACPI_GPE_XRUPT_INFO *GpeXruptInfo, ACPI_GPE_BLOCK_INFO *GpeBlock, void *Context); /* * evhandler - Address space handling */ BOOLEAN AcpiEvHasDefaultHandler ( ACPI_NAMESPACE_NODE *Node, ACPI_ADR_SPACE_TYPE SpaceId); ACPI_STATUS AcpiEvInstallRegionHandlers ( void); ACPI_STATUS AcpiEvInstallSpaceHandler ( ACPI_NAMESPACE_NODE *Node, ACPI_ADR_SPACE_TYPE SpaceId, ACPI_ADR_SPACE_HANDLER Handler, ACPI_ADR_SPACE_SETUP Setup, void *Context); /* * evregion - Operation region support */ ACPI_STATUS AcpiEvInitializeOpRegions ( void); ACPI_STATUS AcpiEvAddressSpaceDispatch ( ACPI_OPERAND_OBJECT *RegionObj, ACPI_OPERAND_OBJECT *FieldObj, UINT32 Function, UINT32 RegionOffset, UINT32 BitWidth, UINT64 *Value); ACPI_STATUS AcpiEvAttachRegion ( ACPI_OPERAND_OBJECT *HandlerObj, ACPI_OPERAND_OBJECT *RegionObj, BOOLEAN AcpiNsIsLocked); void AcpiEvDetachRegion ( ACPI_OPERAND_OBJECT *RegionObj, BOOLEAN AcpiNsIsLocked); ACPI_STATUS AcpiEvExecuteRegMethods ( ACPI_NAMESPACE_NODE *Node, ACPI_ADR_SPACE_TYPE SpaceId); ACPI_STATUS AcpiEvExecuteRegMethod ( ACPI_OPERAND_OBJECT *RegionObj, UINT32 Function); /* * evregini - Region initialization and setup */ ACPI_STATUS AcpiEvSystemMemoryRegionSetup ( ACPI_HANDLE Handle, UINT32 Function, void *HandlerContext, void **RegionContext); ACPI_STATUS AcpiEvIoSpaceRegionSetup ( ACPI_HANDLE Handle, UINT32 Function, void *HandlerContext, void **RegionContext); ACPI_STATUS AcpiEvPciConfigRegionSetup ( ACPI_HANDLE Handle, UINT32 Function, void *HandlerContext, void **RegionContext); ACPI_STATUS AcpiEvCmosRegionSetup ( ACPI_HANDLE Handle, UINT32 Function, void *HandlerContext, void **RegionContext); ACPI_STATUS AcpiEvPciBarRegionSetup ( ACPI_HANDLE Handle, UINT32 Function, void *HandlerContext, void **RegionContext); ACPI_STATUS AcpiEvDefaultRegionSetup ( ACPI_HANDLE Handle, UINT32 Function, void *HandlerContext, void **RegionContext); ACPI_STATUS AcpiEvInitializeRegion ( ACPI_OPERAND_OBJECT *RegionObj, BOOLEAN AcpiNsLocked); /* * evsci - SCI (System Control Interrupt) handling/dispatch */ UINT32 ACPI_SYSTEM_XFACE AcpiEvGpeXruptHandler ( void *Context); UINT32 AcpiEvSciDispatch ( void); UINT32 AcpiEvInstallSciHandler ( void); ACPI_STATUS AcpiEvRemoveAllSciHandlers ( void); ACPI_HW_DEPENDENT_RETURN_VOID ( void AcpiEvTerminate ( void)) #endif /* __ACEVENTS_H__ */ src/acpica/source/include/acexcep.h000066400000000000000000000545011231470457100176020ustar00rootroot00000000000000/****************************************************************************** * * Name: acexcep.h - Exception codes returned by the ACPI subsystem * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #ifndef __ACEXCEP_H__ #define __ACEXCEP_H__ /* This module contains all possible exception codes for ACPI_STATUS */ /* * Exception code classes */ #define AE_CODE_ENVIRONMENTAL 0x0000 /* General ACPICA environment */ #define AE_CODE_PROGRAMMER 0x1000 /* External ACPICA interface caller */ #define AE_CODE_ACPI_TABLES 0x2000 /* ACPI tables */ #define AE_CODE_AML 0x3000 /* From executing AML code */ #define AE_CODE_CONTROL 0x4000 /* Internal control codes */ #define AE_CODE_MAX 0x4000 #define AE_CODE_MASK 0xF000 /* * Macros to insert the exception code classes */ #define EXCEP_ENV(code) ((ACPI_STATUS) (code | AE_CODE_ENVIRONMENTAL)) #define EXCEP_PGM(code) ((ACPI_STATUS) (code | AE_CODE_PROGRAMMER)) #define EXCEP_TBL(code) ((ACPI_STATUS) (code | AE_CODE_ACPI_TABLES)) #define EXCEP_AML(code) ((ACPI_STATUS) (code | AE_CODE_AML)) #define EXCEP_CTL(code) ((ACPI_STATUS) (code | AE_CODE_CONTROL)) /* * Exception info table. The "Description" field is used only by the * ACPICA help application (acpihelp). */ typedef struct acpi_exception_info { char *Name; #ifdef ACPI_HELP_APP char *Description; #endif } ACPI_EXCEPTION_INFO; #ifdef ACPI_HELP_APP #define EXCEP_TXT(Name,Description) {Name, Description} #else #define EXCEP_TXT(Name,Description) {Name} #endif /* * Success is always zero, failure is non-zero */ #define ACPI_SUCCESS(a) (!(a)) #define ACPI_FAILURE(a) (a) #define AE_OK (ACPI_STATUS) 0x0000 /* * Environmental exceptions */ #define AE_ERROR EXCEP_ENV (0x0001) #define AE_NO_ACPI_TABLES EXCEP_ENV (0x0002) #define AE_NO_NAMESPACE EXCEP_ENV (0x0003) #define AE_NO_MEMORY EXCEP_ENV (0x0004) #define AE_NOT_FOUND EXCEP_ENV (0x0005) #define AE_NOT_EXIST EXCEP_ENV (0x0006) #define AE_ALREADY_EXISTS EXCEP_ENV (0x0007) #define AE_TYPE EXCEP_ENV (0x0008) #define AE_NULL_OBJECT EXCEP_ENV (0x0009) #define AE_NULL_ENTRY EXCEP_ENV (0x000A) #define AE_BUFFER_OVERFLOW EXCEP_ENV (0x000B) #define AE_STACK_OVERFLOW EXCEP_ENV (0x000C) #define AE_STACK_UNDERFLOW EXCEP_ENV (0x000D) #define AE_NOT_IMPLEMENTED EXCEP_ENV (0x000E) #define AE_SUPPORT EXCEP_ENV (0x000F) #define AE_LIMIT EXCEP_ENV (0x0010) #define AE_TIME EXCEP_ENV (0x0011) #define AE_ACQUIRE_DEADLOCK EXCEP_ENV (0x0012) #define AE_RELEASE_DEADLOCK EXCEP_ENV (0x0013) #define AE_NOT_ACQUIRED EXCEP_ENV (0x0014) #define AE_ALREADY_ACQUIRED EXCEP_ENV (0x0015) #define AE_NO_HARDWARE_RESPONSE EXCEP_ENV (0x0016) #define AE_NO_GLOBAL_LOCK EXCEP_ENV (0x0017) #define AE_ABORT_METHOD EXCEP_ENV (0x0018) #define AE_SAME_HANDLER EXCEP_ENV (0x0019) #define AE_NO_HANDLER EXCEP_ENV (0x001A) #define AE_OWNER_ID_LIMIT EXCEP_ENV (0x001B) #define AE_NOT_CONFIGURED EXCEP_ENV (0x001C) #define AE_ACCESS EXCEP_ENV (0x001D) #define AE_CODE_ENV_MAX 0x001D /* * Programmer exceptions */ #define AE_BAD_PARAMETER EXCEP_PGM (0x0001) #define AE_BAD_CHARACTER EXCEP_PGM (0x0002) #define AE_BAD_PATHNAME EXCEP_PGM (0x0003) #define AE_BAD_DATA EXCEP_PGM (0x0004) #define AE_BAD_HEX_CONSTANT EXCEP_PGM (0x0005) #define AE_BAD_OCTAL_CONSTANT EXCEP_PGM (0x0006) #define AE_BAD_DECIMAL_CONSTANT EXCEP_PGM (0x0007) #define AE_MISSING_ARGUMENTS EXCEP_PGM (0x0008) #define AE_BAD_ADDRESS EXCEP_PGM (0x0009) #define AE_CODE_PGM_MAX 0x0009 /* * Acpi table exceptions */ #define AE_BAD_SIGNATURE EXCEP_TBL (0x0001) #define AE_BAD_HEADER EXCEP_TBL (0x0002) #define AE_BAD_CHECKSUM EXCEP_TBL (0x0003) #define AE_BAD_VALUE EXCEP_TBL (0x0004) #define AE_INVALID_TABLE_LENGTH EXCEP_TBL (0x0005) #define AE_CODE_TBL_MAX 0x0005 /* * AML exceptions. These are caused by problems with * the actual AML byte stream */ #define AE_AML_BAD_OPCODE EXCEP_AML (0x0001) #define AE_AML_NO_OPERAND EXCEP_AML (0x0002) #define AE_AML_OPERAND_TYPE EXCEP_AML (0x0003) #define AE_AML_OPERAND_VALUE EXCEP_AML (0x0004) #define AE_AML_UNINITIALIZED_LOCAL EXCEP_AML (0x0005) #define AE_AML_UNINITIALIZED_ARG EXCEP_AML (0x0006) #define AE_AML_UNINITIALIZED_ELEMENT EXCEP_AML (0x0007) #define AE_AML_NUMERIC_OVERFLOW EXCEP_AML (0x0008) #define AE_AML_REGION_LIMIT EXCEP_AML (0x0009) #define AE_AML_BUFFER_LIMIT EXCEP_AML (0x000A) #define AE_AML_PACKAGE_LIMIT EXCEP_AML (0x000B) #define AE_AML_DIVIDE_BY_ZERO EXCEP_AML (0x000C) #define AE_AML_BAD_NAME EXCEP_AML (0x000D) #define AE_AML_NAME_NOT_FOUND EXCEP_AML (0x000E) #define AE_AML_INTERNAL EXCEP_AML (0x000F) #define AE_AML_INVALID_SPACE_ID EXCEP_AML (0x0010) #define AE_AML_STRING_LIMIT EXCEP_AML (0x0011) #define AE_AML_NO_RETURN_VALUE EXCEP_AML (0x0012) #define AE_AML_METHOD_LIMIT EXCEP_AML (0x0013) #define AE_AML_NOT_OWNER EXCEP_AML (0x0014) #define AE_AML_MUTEX_ORDER EXCEP_AML (0x0015) #define AE_AML_MUTEX_NOT_ACQUIRED EXCEP_AML (0x0016) #define AE_AML_INVALID_RESOURCE_TYPE EXCEP_AML (0x0017) #define AE_AML_INVALID_INDEX EXCEP_AML (0x0018) #define AE_AML_REGISTER_LIMIT EXCEP_AML (0x0019) #define AE_AML_NO_WHILE EXCEP_AML (0x001A) #define AE_AML_ALIGNMENT EXCEP_AML (0x001B) #define AE_AML_NO_RESOURCE_END_TAG EXCEP_AML (0x001C) #define AE_AML_BAD_RESOURCE_VALUE EXCEP_AML (0x001D) #define AE_AML_CIRCULAR_REFERENCE EXCEP_AML (0x001E) #define AE_AML_BAD_RESOURCE_LENGTH EXCEP_AML (0x001F) #define AE_AML_ILLEGAL_ADDRESS EXCEP_AML (0x0020) #define AE_AML_INFINITE_LOOP EXCEP_AML (0x0021) #define AE_CODE_AML_MAX 0x0021 /* * Internal exceptions used for control */ #define AE_CTRL_RETURN_VALUE EXCEP_CTL (0x0001) #define AE_CTRL_PENDING EXCEP_CTL (0x0002) #define AE_CTRL_TERMINATE EXCEP_CTL (0x0003) #define AE_CTRL_TRUE EXCEP_CTL (0x0004) #define AE_CTRL_FALSE EXCEP_CTL (0x0005) #define AE_CTRL_DEPTH EXCEP_CTL (0x0006) #define AE_CTRL_END EXCEP_CTL (0x0007) #define AE_CTRL_TRANSFER EXCEP_CTL (0x0008) #define AE_CTRL_BREAK EXCEP_CTL (0x0009) #define AE_CTRL_CONTINUE EXCEP_CTL (0x000A) #define AE_CTRL_SKIP EXCEP_CTL (0x000B) #define AE_CTRL_PARSE_CONTINUE EXCEP_CTL (0x000C) #define AE_CTRL_PARSE_PENDING EXCEP_CTL (0x000D) #define AE_CODE_CTRL_MAX 0x000D /* Exception strings for AcpiFormatException */ #ifdef ACPI_DEFINE_EXCEPTION_TABLE /* * String versions of the exception codes above * These strings must match the corresponding defines exactly */ static const ACPI_EXCEPTION_INFO AcpiGbl_ExceptionNames_Env[] = { EXCEP_TXT ("AE_OK", "No error"), EXCEP_TXT ("AE_ERROR", "Unspecified error"), EXCEP_TXT ("AE_NO_ACPI_TABLES", "ACPI tables could not be found"), EXCEP_TXT ("AE_NO_NAMESPACE", "A namespace has not been loaded"), EXCEP_TXT ("AE_NO_MEMORY", "Insufficient dynamic memory"), EXCEP_TXT ("AE_NOT_FOUND", "A requested entity is not found"), EXCEP_TXT ("AE_NOT_EXIST", "A required entity does not exist"), EXCEP_TXT ("AE_ALREADY_EXISTS", "An entity already exists"), EXCEP_TXT ("AE_TYPE", "The object type is incorrect"), EXCEP_TXT ("AE_NULL_OBJECT", "A required object was missing"), EXCEP_TXT ("AE_NULL_ENTRY", "The requested object does not exist"), EXCEP_TXT ("AE_BUFFER_OVERFLOW", "The buffer provided is too small"), EXCEP_TXT ("AE_STACK_OVERFLOW", "An internal stack overflowed"), EXCEP_TXT ("AE_STACK_UNDERFLOW", "An internal stack underflowed"), EXCEP_TXT ("AE_NOT_IMPLEMENTED", "The feature is not implemented"), EXCEP_TXT ("AE_SUPPORT", "The feature is not supported"), EXCEP_TXT ("AE_LIMIT", "A predefined limit was exceeded"), EXCEP_TXT ("AE_TIME", "A time limit or timeout expired"), EXCEP_TXT ("AE_ACQUIRE_DEADLOCK", "Internal error, attempt was made to acquire a mutex in improper order"), EXCEP_TXT ("AE_RELEASE_DEADLOCK", "Internal error, attempt was made to release a mutex in improper order"), EXCEP_TXT ("AE_NOT_ACQUIRED", "An attempt to release a mutex or Global Lock without a previous acquire"), EXCEP_TXT ("AE_ALREADY_ACQUIRED", "Internal error, attempt was made to acquire a mutex twice"), EXCEP_TXT ("AE_NO_HARDWARE_RESPONSE", "Hardware did not respond after an I/O operation"), EXCEP_TXT ("AE_NO_GLOBAL_LOCK", "There is no FACS Global Lock"), EXCEP_TXT ("AE_ABORT_METHOD", "A control method was aborted"), EXCEP_TXT ("AE_SAME_HANDLER", "Attempt was made to install the same handler that is already installed"), EXCEP_TXT ("AE_NO_HANDLER", "A handler for the operation is not installed"), EXCEP_TXT ("AE_OWNER_ID_LIMIT", "There are no more Owner IDs available for ACPI tables or control methods"), EXCEP_TXT ("AE_NOT_CONFIGURED", "The interface is not part of the current subsystem configuration"), EXCEP_TXT ("AE_ACCESS", "Permission denied for the requested operation") }; static const ACPI_EXCEPTION_INFO AcpiGbl_ExceptionNames_Pgm[] = { EXCEP_TXT (NULL, NULL), EXCEP_TXT ("AE_BAD_PARAMETER", "A parameter is out of range or invalid"), EXCEP_TXT ("AE_BAD_CHARACTER", "An invalid character was found in a name"), EXCEP_TXT ("AE_BAD_PATHNAME", "An invalid character was found in a pathname"), EXCEP_TXT ("AE_BAD_DATA", "A package or buffer contained incorrect data"), EXCEP_TXT ("AE_BAD_HEX_CONSTANT", "Invalid character in a Hex constant"), EXCEP_TXT ("AE_BAD_OCTAL_CONSTANT", "Invalid character in an Octal constant"), EXCEP_TXT ("AE_BAD_DECIMAL_CONSTANT", "Invalid character in a Decimal constant"), EXCEP_TXT ("AE_MISSING_ARGUMENTS", "Too few arguments were passed to a control method"), EXCEP_TXT ("AE_BAD_ADDRESS", "An illegal null I/O address") }; static const ACPI_EXCEPTION_INFO AcpiGbl_ExceptionNames_Tbl[] = { EXCEP_TXT (NULL, NULL), EXCEP_TXT ("AE_BAD_SIGNATURE", "An ACPI table has an invalid signature"), EXCEP_TXT ("AE_BAD_HEADER", "Invalid field in an ACPI table header"), EXCEP_TXT ("AE_BAD_CHECKSUM", "An ACPI table checksum is not correct"), EXCEP_TXT ("AE_BAD_VALUE", "An invalid value was found in a table"), EXCEP_TXT ("AE_INVALID_TABLE_LENGTH", "The FADT or FACS has improper length") }; static const ACPI_EXCEPTION_INFO AcpiGbl_ExceptionNames_Aml[] = { EXCEP_TXT (NULL, NULL), EXCEP_TXT ("AE_AML_BAD_OPCODE", "Invalid AML opcode encountered"), EXCEP_TXT ("AE_AML_NO_OPERAND", "A required operand is missing"), EXCEP_TXT ("AE_AML_OPERAND_TYPE", "An operand of an incorrect type was encountered"), EXCEP_TXT ("AE_AML_OPERAND_VALUE", "The operand had an inappropriate or invalid value"), EXCEP_TXT ("AE_AML_UNINITIALIZED_LOCAL", "Method tried to use an uninitialized local variable"), EXCEP_TXT ("AE_AML_UNINITIALIZED_ARG", "Method tried to use an uninitialized argument"), EXCEP_TXT ("AE_AML_UNINITIALIZED_ELEMENT", "Method tried to use an empty package element"), EXCEP_TXT ("AE_AML_NUMERIC_OVERFLOW", "Overflow during BCD conversion or other"), EXCEP_TXT ("AE_AML_REGION_LIMIT", "Tried to access beyond the end of an Operation Region"), EXCEP_TXT ("AE_AML_BUFFER_LIMIT", "Tried to access beyond the end of a buffer"), EXCEP_TXT ("AE_AML_PACKAGE_LIMIT", "Tried to access beyond the end of a package"), EXCEP_TXT ("AE_AML_DIVIDE_BY_ZERO", "During execution of AML Divide operator"), EXCEP_TXT ("AE_AML_BAD_NAME", "An ACPI name contains invalid character(s)"), EXCEP_TXT ("AE_AML_NAME_NOT_FOUND", "Could not resolve a named reference"), EXCEP_TXT ("AE_AML_INTERNAL", "An internal error within the interprete"), EXCEP_TXT ("AE_AML_INVALID_SPACE_ID", "An Operation Region SpaceID is invalid"), EXCEP_TXT ("AE_AML_STRING_LIMIT", "String is longer than 200 characters"), EXCEP_TXT ("AE_AML_NO_RETURN_VALUE", "A method did not return a required value"), EXCEP_TXT ("AE_AML_METHOD_LIMIT", "A control method reached the maximum reentrancy limit of 255"), EXCEP_TXT ("AE_AML_NOT_OWNER", "A thread tried to release a mutex that it does not own"), EXCEP_TXT ("AE_AML_MUTEX_ORDER", "Mutex SyncLevel release mismatch"), EXCEP_TXT ("AE_AML_MUTEX_NOT_ACQUIRED", "Attempt to release a mutex that was not previously acquired"), EXCEP_TXT ("AE_AML_INVALID_RESOURCE_TYPE", "Invalid resource type in resource list"), EXCEP_TXT ("AE_AML_INVALID_INDEX", "Invalid Argx or Localx (x too large)"), EXCEP_TXT ("AE_AML_REGISTER_LIMIT", "Bank value or Index value beyond range of register"), EXCEP_TXT ("AE_AML_NO_WHILE", "Break or Continue without a While"), EXCEP_TXT ("AE_AML_ALIGNMENT", "Non-aligned memory transfer on platform that does not support this"), EXCEP_TXT ("AE_AML_NO_RESOURCE_END_TAG", "No End Tag in a resource list"), EXCEP_TXT ("AE_AML_BAD_RESOURCE_VALUE", "Invalid value of a resource element"), EXCEP_TXT ("AE_AML_CIRCULAR_REFERENCE", "Two references refer to each other"), EXCEP_TXT ("AE_AML_BAD_RESOURCE_LENGTH", "The length of a Resource Descriptor in the AML is incorrect"), EXCEP_TXT ("AE_AML_ILLEGAL_ADDRESS", "A memory, I/O, or PCI configuration address is invalid"), EXCEP_TXT ("AE_AML_INFINITE_LOOP", "An apparent infinite AML While loop, method was aborted") }; static const ACPI_EXCEPTION_INFO AcpiGbl_ExceptionNames_Ctrl[] = { EXCEP_TXT (NULL, NULL), EXCEP_TXT ("AE_CTRL_RETURN_VALUE", "A Method returned a value"), EXCEP_TXT ("AE_CTRL_PENDING", "Method is calling another method"), EXCEP_TXT ("AE_CTRL_TERMINATE", "Terminate the executing method"), EXCEP_TXT ("AE_CTRL_TRUE", "An If or While predicate result"), EXCEP_TXT ("AE_CTRL_FALSE", "An If or While predicate result"), EXCEP_TXT ("AE_CTRL_DEPTH", "Maximum search depth has been reached"), EXCEP_TXT ("AE_CTRL_END", "An If or While predicate is false"), EXCEP_TXT ("AE_CTRL_TRANSFER", "Transfer control to called method"), EXCEP_TXT ("AE_CTRL_BREAK", "A Break has been executed"), EXCEP_TXT ("AE_CTRL_CONTINUE", "A Continue has been executed"), EXCEP_TXT ("AE_CTRL_SKIP", "Not currently used"), EXCEP_TXT ("AE_CTRL_PARSE_CONTINUE", "Used to skip over bad opcodes"), EXCEP_TXT ("AE_CTRL_PARSE_PENDING", "Used to implement AML While loops") }; #endif /* EXCEPTION_TABLE */ #endif /* __ACEXCEP_H__ */ src/acpica/source/include/acglobal.h000066400000000000000000000607411231470457100177410ustar00rootroot00000000000000/****************************************************************************** * * Name: acglobal.h - Declarations for global variables * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #ifndef __ACGLOBAL_H__ #define __ACGLOBAL_H__ /* * Ensure that the globals are actually defined and initialized only once. * * The use of these macros allows a single list of globals (here) in order * to simplify maintenance of the code. */ #ifdef DEFINE_ACPI_GLOBALS #define ACPI_GLOBAL(type,name) \ extern type name; \ type name #define ACPI_INIT_GLOBAL(type,name,value) \ type name=value #else #define ACPI_GLOBAL(type,name) \ extern type name #define ACPI_INIT_GLOBAL(type,name,value) \ extern type name #endif #ifdef DEFINE_ACPI_GLOBALS /* Public globals, available from outside ACPICA subsystem */ /***************************************************************************** * * Runtime configuration (static defaults that can be overriden at runtime) * ****************************************************************************/ /* * Enable "slack" in the AML interpreter? Default is FALSE, and the * interpreter strictly follows the ACPI specification. Setting to TRUE * allows the interpreter to ignore certain errors and/or bad AML constructs. * * Currently, these features are enabled by this flag: * * 1) Allow "implicit return" of last value in a control method * 2) Allow access beyond the end of an operation region * 3) Allow access to uninitialized locals/args (auto-init to integer 0) * 4) Allow ANY object type to be a source operand for the Store() operator * 5) Allow unresolved references (invalid target name) in package objects * 6) Enable warning messages for behavior that is not ACPI spec compliant */ ACPI_INIT_GLOBAL (UINT8, AcpiGbl_EnableInterpreterSlack, FALSE); /* * Automatically serialize all methods that create named objects? Default * is TRUE, meaning that all NonSerialized methods are scanned once at * table load time to determine those that create named objects. Methods * that create named objects are marked Serialized in order to prevent * possible run-time problems if they are entered by more than one thread. */ ACPI_INIT_GLOBAL (UINT8, AcpiGbl_AutoSerializeMethods, TRUE); /* * Create the predefined _OSI method in the namespace? Default is TRUE * because ACPICA is fully compatible with other ACPI implementations. * Changing this will revert ACPICA (and machine ASL) to pre-OSI behavior. */ ACPI_INIT_GLOBAL (UINT8, AcpiGbl_CreateOsiMethod, TRUE); /* * Optionally use default values for the ACPI register widths. Set this to * TRUE to use the defaults, if an FADT contains incorrect widths/lengths. */ ACPI_INIT_GLOBAL (UINT8, AcpiGbl_UseDefaultRegisterWidths, TRUE); /* * Optionally enable output from the AML Debug Object. */ ACPI_INIT_GLOBAL (UINT8, AcpiGbl_EnableAmlDebugObject, FALSE); /* * Optionally copy the entire DSDT to local memory (instead of simply * mapping it.) There are some BIOSs that corrupt or replace the original * DSDT, creating the need for this option. Default is FALSE, do not copy * the DSDT. */ ACPI_INIT_GLOBAL (UINT8, AcpiGbl_CopyDsdtLocally, FALSE); /* * Optionally ignore an XSDT if present and use the RSDT instead. * Although the ACPI specification requires that an XSDT be used instead * of the RSDT, the XSDT has been found to be corrupt or ill-formed on * some machines. Default behavior is to use the XSDT if present. */ ACPI_INIT_GLOBAL (UINT8, AcpiGbl_DoNotUseXsdt, FALSE); /* * Optionally use 32-bit FADT addresses if and when there is a conflict * (address mismatch) between the 32-bit and 64-bit versions of the * address. Although ACPICA adheres to the ACPI specification which * requires the use of the corresponding 64-bit address if it is non-zero, * some machines have been found to have a corrupted non-zero 64-bit * address. Default is FALSE, do not favor the 32-bit addresses. */ ACPI_INIT_GLOBAL (UINT8, AcpiGbl_Use32BitFadtAddresses, FALSE); /* * Optionally truncate I/O addresses to 16 bits. Provides compatibility * with other ACPI implementations. NOTE: During ACPICA initialization, * this value is set to TRUE if any Windows OSI strings have been * requested by the BIOS. */ ACPI_INIT_GLOBAL (UINT8, AcpiGbl_TruncateIoAddresses, FALSE); /* * Disable runtime checking and repair of values returned by control methods. * Use only if the repair is causing a problem on a particular machine. */ ACPI_INIT_GLOBAL (UINT8, AcpiGbl_DisableAutoRepair, FALSE); /* * Optionally do not install any SSDTs from the RSDT/XSDT during initialization. * This can be useful for debugging ACPI problems on some machines. */ ACPI_INIT_GLOBAL (UINT8, AcpiGbl_DisableSsdtTableInstall, FALSE); /* * We keep track of the latest version of Windows that has been requested by * the BIOS. */ ACPI_INIT_GLOBAL (UINT8, AcpiGbl_OsiData, 0); #endif /* DEFINE_ACPI_GLOBALS */ /***************************************************************************** * * ACPI Table globals * ****************************************************************************/ /* * Master list of all ACPI tables that were found in the RSDT/XSDT. */ ACPI_GLOBAL (ACPI_TABLE_LIST, AcpiGbl_RootTableList); /* DSDT information. Used to check for DSDT corruption */ ACPI_GLOBAL (ACPI_TABLE_HEADER *, AcpiGbl_DSDT); ACPI_GLOBAL (ACPI_TABLE_HEADER, AcpiGbl_OriginalDsdtHeader); #if (!ACPI_REDUCED_HARDWARE) ACPI_GLOBAL (ACPI_TABLE_FACS *, AcpiGbl_FACS); #endif /* !ACPI_REDUCED_HARDWARE */ /* These addresses are calculated from the FADT Event Block addresses */ ACPI_GLOBAL (ACPI_GENERIC_ADDRESS, AcpiGbl_XPm1aStatus); ACPI_GLOBAL (ACPI_GENERIC_ADDRESS, AcpiGbl_XPm1aEnable); ACPI_GLOBAL (ACPI_GENERIC_ADDRESS, AcpiGbl_XPm1bStatus); ACPI_GLOBAL (ACPI_GENERIC_ADDRESS, AcpiGbl_XPm1bEnable); /* * Handle both ACPI 1.0 and ACPI 2.0+ Integer widths. The integer width is * determined by the revision of the DSDT: If the DSDT revision is less than * 2, use only the lower 32 bits of the internal 64-bit Integer. */ ACPI_GLOBAL (UINT8, AcpiGbl_IntegerBitWidth); ACPI_GLOBAL (UINT8, AcpiGbl_IntegerByteWidth); ACPI_GLOBAL (UINT8, AcpiGbl_IntegerNybbleWidth); /***************************************************************************** * * Mutual exclusion within ACPICA subsystem * ****************************************************************************/ /* * Predefined mutex objects. This array contains the * actual OS mutex handles, indexed by the local ACPI_MUTEX_HANDLEs. * (The table maps local handles to the real OS handles) */ ACPI_GLOBAL (ACPI_MUTEX_INFO, AcpiGbl_MutexInfo[ACPI_NUM_MUTEX]); /* * Global lock mutex is an actual AML mutex object * Global lock semaphore works in conjunction with the actual global lock * Global lock spinlock is used for "pending" handshake */ ACPI_GLOBAL (ACPI_OPERAND_OBJECT *, AcpiGbl_GlobalLockMutex); ACPI_GLOBAL (ACPI_SEMAPHORE, AcpiGbl_GlobalLockSemaphore); ACPI_GLOBAL (ACPI_SPINLOCK, AcpiGbl_GlobalLockPendingLock); ACPI_GLOBAL (UINT16, AcpiGbl_GlobalLockHandle); ACPI_GLOBAL (BOOLEAN, AcpiGbl_GlobalLockAcquired); ACPI_GLOBAL (BOOLEAN, AcpiGbl_GlobalLockPresent); ACPI_GLOBAL (BOOLEAN, AcpiGbl_GlobalLockPending); /* * Spinlocks are used for interfaces that can be possibly called at * interrupt level */ ACPI_GLOBAL (ACPI_SPINLOCK, AcpiGbl_GpeLock); /* For GPE data structs and registers */ ACPI_GLOBAL (ACPI_SPINLOCK, AcpiGbl_HardwareLock); /* For ACPI H/W except GPE registers */ ACPI_GLOBAL (ACPI_SPINLOCK, AcpiGbl_ReferenceCountLock); /* Mutex for _OSI support */ ACPI_GLOBAL (ACPI_MUTEX, AcpiGbl_OsiMutex); /* Reader/Writer lock is used for namespace walk and dynamic table unload */ ACPI_GLOBAL (ACPI_RW_LOCK, AcpiGbl_NamespaceRwLock); /***************************************************************************** * * Miscellaneous globals * ****************************************************************************/ /* Object caches */ ACPI_GLOBAL (ACPI_CACHE_T *, AcpiGbl_NamespaceCache); ACPI_GLOBAL (ACPI_CACHE_T *, AcpiGbl_StateCache); ACPI_GLOBAL (ACPI_CACHE_T *, AcpiGbl_PsNodeCache); ACPI_GLOBAL (ACPI_CACHE_T *, AcpiGbl_PsNodeExtCache); ACPI_GLOBAL (ACPI_CACHE_T *, AcpiGbl_OperandCache); /* System */ ACPI_INIT_GLOBAL (UINT32, AcpiGbl_StartupFlags, 0); ACPI_INIT_GLOBAL (BOOLEAN, AcpiGbl_Shutdown, TRUE); /* Global handlers */ ACPI_GLOBAL (ACPI_GLOBAL_NOTIFY_HANDLER,AcpiGbl_GlobalNotify[2]); ACPI_GLOBAL (ACPI_EXCEPTION_HANDLER, AcpiGbl_ExceptionHandler); ACPI_GLOBAL (ACPI_INIT_HANDLER, AcpiGbl_InitHandler); ACPI_GLOBAL (ACPI_TABLE_HANDLER, AcpiGbl_TableHandler); ACPI_GLOBAL (void *, AcpiGbl_TableHandlerContext); ACPI_GLOBAL (ACPI_WALK_STATE *, AcpiGbl_BreakpointWalk); ACPI_GLOBAL (ACPI_INTERFACE_HANDLER, AcpiGbl_InterfaceHandler); ACPI_GLOBAL (ACPI_SCI_HANDLER_INFO *, AcpiGbl_SciHandlerList); /* Owner ID support */ ACPI_GLOBAL (UINT32, AcpiGbl_OwnerIdMask[ACPI_NUM_OWNERID_MASKS]); ACPI_GLOBAL (UINT8, AcpiGbl_LastOwnerIdIndex); ACPI_GLOBAL (UINT8, AcpiGbl_NextOwnerIdOffset); /* Initialization sequencing */ ACPI_GLOBAL (BOOLEAN, AcpiGbl_RegMethodsExecuted); /* Misc */ ACPI_GLOBAL (UINT32, AcpiGbl_OriginalMode); ACPI_GLOBAL (UINT32, AcpiGbl_RsdpOriginalLocation); ACPI_GLOBAL (UINT32, AcpiGbl_NsLookupCount); ACPI_GLOBAL (UINT32, AcpiGbl_PsFindCount); ACPI_GLOBAL (UINT16, AcpiGbl_Pm1EnableRegisterSave); ACPI_GLOBAL (UINT8, AcpiGbl_DebuggerConfiguration); ACPI_GLOBAL (BOOLEAN, AcpiGbl_StepToNextCall); ACPI_GLOBAL (BOOLEAN, AcpiGbl_AcpiHardwarePresent); ACPI_GLOBAL (BOOLEAN, AcpiGbl_EventsInitialized); ACPI_GLOBAL (ACPI_INTERFACE_INFO *, AcpiGbl_SupportedInterfaces); ACPI_GLOBAL (ACPI_ADDRESS_RANGE *, AcpiGbl_AddressRangeList[ACPI_ADDRESS_RANGE_MAX]); /* Other miscellaneous, declared and initialized in utglobal */ extern const char *AcpiGbl_SleepStateNames[ACPI_S_STATE_COUNT]; extern const char *AcpiGbl_LowestDstateNames[ACPI_NUM_SxW_METHODS]; extern const char *AcpiGbl_HighestDstateNames[ACPI_NUM_SxD_METHODS]; extern const char *AcpiGbl_RegionTypes[ACPI_NUM_PREDEFINED_REGIONS]; extern const ACPI_OPCODE_INFO AcpiGbl_AmlOpInfo[AML_NUM_OPCODES]; #ifdef ACPI_DBG_TRACK_ALLOCATIONS /* Lists for tracking memory allocations (debug only) */ ACPI_GLOBAL (ACPI_MEMORY_LIST *, AcpiGbl_GlobalList); ACPI_GLOBAL (ACPI_MEMORY_LIST *, AcpiGbl_NsNodeList); ACPI_GLOBAL (BOOLEAN, AcpiGbl_DisplayFinalMemStats); ACPI_GLOBAL (BOOLEAN, AcpiGbl_DisableMemTracking); #endif /***************************************************************************** * * Namespace globals * ****************************************************************************/ #if !defined (ACPI_NO_METHOD_EXECUTION) || defined (ACPI_CONSTANT_EVAL_ONLY) #define NUM_PREDEFINED_NAMES 10 #else #define NUM_PREDEFINED_NAMES 9 #endif ACPI_GLOBAL (ACPI_NAMESPACE_NODE, AcpiGbl_RootNodeStruct); ACPI_GLOBAL (ACPI_NAMESPACE_NODE *, AcpiGbl_RootNode); ACPI_GLOBAL (ACPI_NAMESPACE_NODE *, AcpiGbl_FadtGpeDevice); ACPI_GLOBAL (ACPI_OPERAND_OBJECT *, AcpiGbl_ModuleCodeList); extern const UINT8 AcpiGbl_NsProperties [ACPI_NUM_NS_TYPES]; extern const ACPI_PREDEFINED_NAMES AcpiGbl_PreDefinedNames [NUM_PREDEFINED_NAMES]; #ifdef ACPI_DEBUG_OUTPUT ACPI_GLOBAL (UINT32, AcpiGbl_CurrentNodeCount); ACPI_GLOBAL (UINT32, AcpiGbl_CurrentNodeSize); ACPI_GLOBAL (UINT32, AcpiGbl_MaxConcurrentNodeCount); ACPI_GLOBAL (ACPI_SIZE *, AcpiGbl_EntryStackPointer); ACPI_GLOBAL (ACPI_SIZE *, AcpiGbl_LowestStackPointer); ACPI_GLOBAL (UINT32, AcpiGbl_DeepestNesting); ACPI_INIT_GLOBAL (UINT32, AcpiGbl_NestingLevel, 0); #endif /***************************************************************************** * * Interpreter globals * ****************************************************************************/ ACPI_GLOBAL (ACPI_THREAD_STATE *, AcpiGbl_CurrentWalkList); /* Control method single step flag */ ACPI_GLOBAL (UINT8, AcpiGbl_CmSingleStep); /***************************************************************************** * * Hardware globals * ****************************************************************************/ extern ACPI_BIT_REGISTER_INFO AcpiGbl_BitRegisterInfo[ACPI_NUM_BITREG]; ACPI_GLOBAL (UINT8, AcpiGbl_SleepTypeA); ACPI_GLOBAL (UINT8, AcpiGbl_SleepTypeB); /***************************************************************************** * * Event and GPE globals * ****************************************************************************/ #if (!ACPI_REDUCED_HARDWARE) ACPI_GLOBAL (UINT8, AcpiGbl_AllGpesInitialized); ACPI_GLOBAL (ACPI_GPE_XRUPT_INFO *, AcpiGbl_GpeXruptListHead); ACPI_GLOBAL (ACPI_GPE_BLOCK_INFO *, AcpiGbl_GpeFadtBlocks[ACPI_MAX_GPE_BLOCKS]); ACPI_GLOBAL (ACPI_GBL_EVENT_HANDLER, AcpiGbl_GlobalEventHandler); ACPI_GLOBAL (void *, AcpiGbl_GlobalEventHandlerContext); ACPI_GLOBAL (ACPI_FIXED_EVENT_HANDLER, AcpiGbl_FixedEventHandlers[ACPI_NUM_FIXED_EVENTS]); extern ACPI_FIXED_EVENT_INFO AcpiGbl_FixedEventInfo[ACPI_NUM_FIXED_EVENTS]; #endif /* !ACPI_REDUCED_HARDWARE */ /***************************************************************************** * * Debug support * ****************************************************************************/ /* Event counters */ ACPI_GLOBAL (UINT32, AcpiMethodCount); ACPI_GLOBAL (UINT32, AcpiGpeCount); ACPI_GLOBAL (UINT32, AcpiSciCount); ACPI_GLOBAL (UINT32, AcpiFixedEventCount[ACPI_NUM_FIXED_EVENTS]); /* Support for dynamic control method tracing mechanism */ ACPI_GLOBAL (UINT32, AcpiGbl_OriginalDbgLevel); ACPI_GLOBAL (UINT32, AcpiGbl_OriginalDbgLayer); ACPI_GLOBAL (UINT32, AcpiGbl_TraceDbgLevel); ACPI_GLOBAL (UINT32, AcpiGbl_TraceDbgLayer); /***************************************************************************** * * Debugger and Disassembler globals * ****************************************************************************/ ACPI_GLOBAL (UINT8, AcpiGbl_DbOutputFlags); #ifdef ACPI_DISASSEMBLER /* Do not disassemble buffers to resource descriptors */ ACPI_INIT_GLOBAL (UINT8, AcpiGbl_NoResourceDisassembly, FALSE); ACPI_INIT_GLOBAL (BOOLEAN, AcpiGbl_IgnoreNoopOperator, FALSE); ACPI_GLOBAL (BOOLEAN, AcpiGbl_DbOpt_disasm); ACPI_GLOBAL (BOOLEAN, AcpiGbl_DbOpt_verbose); ACPI_GLOBAL (BOOLEAN, AcpiGbl_NumExternalMethods); ACPI_GLOBAL (UINT32, AcpiGbl_ResolvedExternalMethods); ACPI_GLOBAL (ACPI_EXTERNAL_LIST *, AcpiGbl_ExternalList); ACPI_GLOBAL (ACPI_EXTERNAL_FILE *, AcpiGbl_ExternalFileList); #endif #ifdef ACPI_DEBUGGER ACPI_INIT_GLOBAL (BOOLEAN, AcpiGbl_DbTerminateThreads, FALSE); ACPI_INIT_GLOBAL (BOOLEAN, AcpiGbl_AbortMethod, FALSE); ACPI_INIT_GLOBAL (BOOLEAN, AcpiGbl_MethodExecuting, FALSE); ACPI_GLOBAL (BOOLEAN, AcpiGbl_DbOpt_tables); ACPI_GLOBAL (BOOLEAN, AcpiGbl_DbOpt_stats); ACPI_GLOBAL (BOOLEAN, AcpiGbl_DbOpt_ini_methods); ACPI_GLOBAL (BOOLEAN, AcpiGbl_DbOpt_NoRegionSupport); ACPI_GLOBAL (BOOLEAN, AcpiGbl_DbOutputToFile); ACPI_GLOBAL (char *, AcpiGbl_DbBuffer); ACPI_GLOBAL (char *, AcpiGbl_DbFilename); ACPI_GLOBAL (UINT32, AcpiGbl_DbDebugLevel); ACPI_GLOBAL (UINT32, AcpiGbl_DbConsoleDebugLevel); ACPI_GLOBAL (ACPI_NAMESPACE_NODE *, AcpiGbl_DbScopeNode); ACPI_GLOBAL (char *, AcpiGbl_DbArgs[ACPI_DEBUGGER_MAX_ARGS]); ACPI_GLOBAL (ACPI_OBJECT_TYPE, AcpiGbl_DbArgTypes[ACPI_DEBUGGER_MAX_ARGS]); /* These buffers should all be the same size */ ACPI_GLOBAL (char, AcpiGbl_DbLineBuf[ACPI_DB_LINE_BUFFER_SIZE]); ACPI_GLOBAL (char, AcpiGbl_DbParsedBuf[ACPI_DB_LINE_BUFFER_SIZE]); ACPI_GLOBAL (char, AcpiGbl_DbScopeBuf[ACPI_DB_LINE_BUFFER_SIZE]); ACPI_GLOBAL (char, AcpiGbl_DbDebugFilename[ACPI_DB_LINE_BUFFER_SIZE]); /* * Statistic globals */ ACPI_GLOBAL (UINT16, AcpiGbl_ObjTypeCount[ACPI_TYPE_NS_NODE_MAX+1]); ACPI_GLOBAL (UINT16, AcpiGbl_NodeTypeCount[ACPI_TYPE_NS_NODE_MAX+1]); ACPI_GLOBAL (UINT16, AcpiGbl_ObjTypeCountMisc); ACPI_GLOBAL (UINT16, AcpiGbl_NodeTypeCountMisc); ACPI_GLOBAL (UINT32, AcpiGbl_NumNodes); ACPI_GLOBAL (UINT32, AcpiGbl_NumObjects); ACPI_GLOBAL (UINT32, AcpiGbl_SizeOfParseTree); ACPI_GLOBAL (UINT32, AcpiGbl_SizeOfMethodTrees); ACPI_GLOBAL (UINT32, AcpiGbl_SizeOfNodeEntries); ACPI_GLOBAL (UINT32, AcpiGbl_SizeOfAcpiObjects); #endif /* ACPI_DEBUGGER */ /***************************************************************************** * * Application globals * ****************************************************************************/ #ifdef ACPI_APPLICATION ACPI_INIT_GLOBAL (ACPI_FILE, AcpiGbl_DebugFile, NULL); #endif /* ACPI_APPLICATION */ /***************************************************************************** * * Info/help support * ****************************************************************************/ extern const AH_PREDEFINED_NAME AslPredefinedInfo[]; extern const AH_DEVICE_ID AslDeviceIds[]; #endif /* __ACGLOBAL_H__ */ src/acpica/source/include/achware.h000066400000000000000000000233071231470457100176040ustar00rootroot00000000000000/****************************************************************************** * * Name: achware.h -- hardware specific interfaces * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #ifndef __ACHWARE_H__ #define __ACHWARE_H__ /* Values for the _SST predefined method */ #define ACPI_SST_INDICATOR_OFF 0 #define ACPI_SST_WORKING 1 #define ACPI_SST_WAKING 2 #define ACPI_SST_SLEEPING 3 #define ACPI_SST_SLEEP_CONTEXT 4 /* * hwacpi - high level functions */ ACPI_STATUS AcpiHwSetMode ( UINT32 Mode); UINT32 AcpiHwGetMode ( void); /* * hwregs - ACPI Register I/O */ ACPI_STATUS AcpiHwValidateRegister ( ACPI_GENERIC_ADDRESS *Reg, UINT8 MaxBitWidth, UINT64 *Address); ACPI_STATUS AcpiHwRead ( UINT32 *Value, ACPI_GENERIC_ADDRESS *Reg); ACPI_STATUS AcpiHwWrite ( UINT32 Value, ACPI_GENERIC_ADDRESS *Reg); ACPI_BIT_REGISTER_INFO * AcpiHwGetBitRegisterInfo ( UINT32 RegisterId); ACPI_STATUS AcpiHwWritePm1Control ( UINT32 Pm1aControl, UINT32 Pm1bControl); ACPI_STATUS AcpiHwRegisterRead ( UINT32 RegisterId, UINT32 *ReturnValue); ACPI_STATUS AcpiHwRegisterWrite ( UINT32 RegisterId, UINT32 Value); ACPI_STATUS AcpiHwClearAcpiStatus ( void); /* * hwsleep - sleep/wake support (Legacy sleep registers) */ ACPI_STATUS AcpiHwLegacySleep ( UINT8 SleepState); ACPI_STATUS AcpiHwLegacyWakePrep ( UINT8 SleepState); ACPI_STATUS AcpiHwLegacyWake ( UINT8 SleepState); /* * hwesleep - sleep/wake support (Extended FADT-V5 sleep registers) */ void AcpiHwExecuteSleepMethod ( char *MethodName, UINT32 IntegerArgument); ACPI_STATUS AcpiHwExtendedSleep ( UINT8 SleepState); ACPI_STATUS AcpiHwExtendedWakePrep ( UINT8 SleepState); ACPI_STATUS AcpiHwExtendedWake ( UINT8 SleepState); /* * hwvalid - Port I/O with validation */ ACPI_STATUS AcpiHwReadPort ( ACPI_IO_ADDRESS Address, UINT32 *Value, UINT32 Width); ACPI_STATUS AcpiHwWritePort ( ACPI_IO_ADDRESS Address, UINT32 Value, UINT32 Width); /* * hwgpe - GPE support */ UINT32 AcpiHwGetGpeRegisterBit ( ACPI_GPE_EVENT_INFO *GpeEventInfo); ACPI_STATUS AcpiHwLowSetGpe ( ACPI_GPE_EVENT_INFO *GpeEventInfo, UINT32 Action); ACPI_STATUS AcpiHwDisableGpeBlock ( ACPI_GPE_XRUPT_INFO *GpeXruptInfo, ACPI_GPE_BLOCK_INFO *GpeBlock, void *Context); ACPI_STATUS AcpiHwClearGpe ( ACPI_GPE_EVENT_INFO *GpeEventInfo); ACPI_STATUS AcpiHwClearGpeBlock ( ACPI_GPE_XRUPT_INFO *GpeXruptInfo, ACPI_GPE_BLOCK_INFO *GpeBlock, void *Context); ACPI_STATUS AcpiHwGetGpeStatus ( ACPI_GPE_EVENT_INFO *GpeEventInfo, ACPI_EVENT_STATUS *EventStatus); ACPI_STATUS AcpiHwDisableAllGpes ( void); ACPI_STATUS AcpiHwEnableAllRuntimeGpes ( void); ACPI_STATUS AcpiHwEnableAllWakeupGpes ( void); ACPI_STATUS AcpiHwEnableRuntimeGpeBlock ( ACPI_GPE_XRUPT_INFO *GpeXruptInfo, ACPI_GPE_BLOCK_INFO *GpeBlock, void *Context); /* * hwpci - PCI configuration support */ ACPI_STATUS AcpiHwDerivePciId ( ACPI_PCI_ID *PciId, ACPI_HANDLE RootPciDevice, ACPI_HANDLE PciRegion); #endif /* __ACHWARE_H__ */ src/acpica/source/include/acinterp.h000066400000000000000000000541321231470457100177770ustar00rootroot00000000000000/****************************************************************************** * * Name: acinterp.h - Interpreter subcomponent prototypes and defines * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #ifndef __ACINTERP_H__ #define __ACINTERP_H__ #define ACPI_WALK_OPERANDS (&(WalkState->Operands [WalkState->NumOperands -1])) /* Macros for tables used for debug output */ #define ACPI_EXD_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_OPERAND_OBJECT,f) #define ACPI_EXD_NSOFFSET(f) (UINT8) ACPI_OFFSET (ACPI_NAMESPACE_NODE,f) #define ACPI_EXD_TABLE_SIZE(name) (sizeof(name) / sizeof (ACPI_EXDUMP_INFO)) /* * If possible, pack the following structures to byte alignment, since we * don't care about performance for debug output. Two cases where we cannot * pack the structures: * * 1) Hardware does not support misaligned memory transfers * 2) Compiler does not support pointers within packed structures */ #if (!defined(ACPI_MISALIGNMENT_NOT_SUPPORTED) && !defined(ACPI_PACKED_POINTERS_NOT_SUPPORTED)) #pragma pack(1) #endif typedef const struct acpi_exdump_info { UINT8 Opcode; UINT8 Offset; char *Name; } ACPI_EXDUMP_INFO; /* Values for the Opcode field above */ #define ACPI_EXD_INIT 0 #define ACPI_EXD_TYPE 1 #define ACPI_EXD_UINT8 2 #define ACPI_EXD_UINT16 3 #define ACPI_EXD_UINT32 4 #define ACPI_EXD_UINT64 5 #define ACPI_EXD_LITERAL 6 #define ACPI_EXD_POINTER 7 #define ACPI_EXD_ADDRESS 8 #define ACPI_EXD_STRING 9 #define ACPI_EXD_BUFFER 10 #define ACPI_EXD_PACKAGE 11 #define ACPI_EXD_FIELD 12 #define ACPI_EXD_REFERENCE 13 #define ACPI_EXD_LIST 14 /* Operand object list */ #define ACPI_EXD_HDLR_LIST 15 /* Address Handler list */ #define ACPI_EXD_RGN_LIST 16 /* Region list */ #define ACPI_EXD_NODE 17 /* Namespace Node */ /* restore default alignment */ #pragma pack() /* * exconvrt - object conversion */ ACPI_STATUS AcpiExConvertToInteger ( ACPI_OPERAND_OBJECT *ObjDesc, ACPI_OPERAND_OBJECT **ResultDesc, UINT32 Flags); ACPI_STATUS AcpiExConvertToBuffer ( ACPI_OPERAND_OBJECT *ObjDesc, ACPI_OPERAND_OBJECT **ResultDesc); ACPI_STATUS AcpiExConvertToString ( ACPI_OPERAND_OBJECT *ObjDesc, ACPI_OPERAND_OBJECT **ResultDesc, UINT32 Type); /* Types for ->String conversion */ #define ACPI_EXPLICIT_BYTE_COPY 0x00000000 #define ACPI_EXPLICIT_CONVERT_HEX 0x00000001 #define ACPI_IMPLICIT_CONVERT_HEX 0x00000002 #define ACPI_EXPLICIT_CONVERT_DECIMAL 0x00000003 ACPI_STATUS AcpiExConvertToTargetType ( ACPI_OBJECT_TYPE DestinationType, ACPI_OPERAND_OBJECT *SourceDesc, ACPI_OPERAND_OBJECT **ResultDesc, ACPI_WALK_STATE *WalkState); /* * exdebug - AML debug object */ void AcpiExDoDebugObject ( ACPI_OPERAND_OBJECT *SourceDesc, UINT32 Level, UINT32 Index); /* * exfield - ACPI AML (p-code) execution - field manipulation */ ACPI_STATUS AcpiExCommonBufferSetup ( ACPI_OPERAND_OBJECT *ObjDesc, UINT32 BufferLength, UINT32 *DatumCount); ACPI_STATUS AcpiExWriteWithUpdateRule ( ACPI_OPERAND_OBJECT *ObjDesc, UINT64 Mask, UINT64 FieldValue, UINT32 FieldDatumByteOffset); void AcpiExGetBufferDatum( UINT64 *Datum, void *Buffer, UINT32 BufferLength, UINT32 ByteGranularity, UINT32 BufferOffset); void AcpiExSetBufferDatum ( UINT64 MergedDatum, void *Buffer, UINT32 BufferLength, UINT32 ByteGranularity, UINT32 BufferOffset); ACPI_STATUS AcpiExReadDataFromField ( ACPI_WALK_STATE *WalkState, ACPI_OPERAND_OBJECT *ObjDesc, ACPI_OPERAND_OBJECT **RetBufferDesc); ACPI_STATUS AcpiExWriteDataToField ( ACPI_OPERAND_OBJECT *SourceDesc, ACPI_OPERAND_OBJECT *ObjDesc, ACPI_OPERAND_OBJECT **ResultDesc); /* * exfldio - low level field I/O */ ACPI_STATUS AcpiExExtractFromField ( ACPI_OPERAND_OBJECT *ObjDesc, void *Buffer, UINT32 BufferLength); ACPI_STATUS AcpiExInsertIntoField ( ACPI_OPERAND_OBJECT *ObjDesc, void *Buffer, UINT32 BufferLength); ACPI_STATUS AcpiExAccessRegion ( ACPI_OPERAND_OBJECT *ObjDesc, UINT32 FieldDatumByteOffset, UINT64 *Value, UINT32 ReadWrite); /* * exmisc - misc support routines */ ACPI_STATUS AcpiExGetObjectReference ( ACPI_OPERAND_OBJECT *ObjDesc, ACPI_OPERAND_OBJECT **ReturnDesc, ACPI_WALK_STATE *WalkState); ACPI_STATUS AcpiExConcatTemplate ( ACPI_OPERAND_OBJECT *ObjDesc, ACPI_OPERAND_OBJECT *ObjDesc2, ACPI_OPERAND_OBJECT **ActualReturnDesc, ACPI_WALK_STATE *WalkState); ACPI_STATUS AcpiExDoConcatenate ( ACPI_OPERAND_OBJECT *ObjDesc, ACPI_OPERAND_OBJECT *ObjDesc2, ACPI_OPERAND_OBJECT **ActualReturnDesc, ACPI_WALK_STATE *WalkState); ACPI_STATUS AcpiExDoLogicalNumericOp ( UINT16 Opcode, UINT64 Integer0, UINT64 Integer1, BOOLEAN *LogicalResult); ACPI_STATUS AcpiExDoLogicalOp ( UINT16 Opcode, ACPI_OPERAND_OBJECT *Operand0, ACPI_OPERAND_OBJECT *Operand1, BOOLEAN *LogicalResult); UINT64 AcpiExDoMathOp ( UINT16 Opcode, UINT64 Operand0, UINT64 Operand1); ACPI_STATUS AcpiExCreateMutex ( ACPI_WALK_STATE *WalkState); ACPI_STATUS AcpiExCreateProcessor ( ACPI_WALK_STATE *WalkState); ACPI_STATUS AcpiExCreatePowerResource ( ACPI_WALK_STATE *WalkState); ACPI_STATUS AcpiExCreateRegion ( UINT8 *AmlStart, UINT32 AmlLength, UINT8 RegionSpace, ACPI_WALK_STATE *WalkState); ACPI_STATUS AcpiExCreateEvent ( ACPI_WALK_STATE *WalkState); ACPI_STATUS AcpiExCreateAlias ( ACPI_WALK_STATE *WalkState); ACPI_STATUS AcpiExCreateMethod ( UINT8 *AmlStart, UINT32 AmlLength, ACPI_WALK_STATE *WalkState); /* * exconfig - dynamic table load/unload */ ACPI_STATUS AcpiExLoadOp ( ACPI_OPERAND_OBJECT *ObjDesc, ACPI_OPERAND_OBJECT *Target, ACPI_WALK_STATE *WalkState); ACPI_STATUS AcpiExLoadTableOp ( ACPI_WALK_STATE *WalkState, ACPI_OPERAND_OBJECT **ReturnDesc); ACPI_STATUS AcpiExUnloadTable ( ACPI_OPERAND_OBJECT *DdbHandle); /* * exmutex - mutex support */ ACPI_STATUS AcpiExAcquireMutex ( ACPI_OPERAND_OBJECT *TimeDesc, ACPI_OPERAND_OBJECT *ObjDesc, ACPI_WALK_STATE *WalkState); ACPI_STATUS AcpiExAcquireMutexObject ( UINT16 Timeout, ACPI_OPERAND_OBJECT *ObjDesc, ACPI_THREAD_ID ThreadId); ACPI_STATUS AcpiExReleaseMutex ( ACPI_OPERAND_OBJECT *ObjDesc, ACPI_WALK_STATE *WalkState); ACPI_STATUS AcpiExReleaseMutexObject ( ACPI_OPERAND_OBJECT *ObjDesc); void AcpiExReleaseAllMutexes ( ACPI_THREAD_STATE *Thread); void AcpiExUnlinkMutex ( ACPI_OPERAND_OBJECT *ObjDesc); /* * exprep - ACPI AML execution - prep utilities */ ACPI_STATUS AcpiExPrepCommonFieldObject ( ACPI_OPERAND_OBJECT *ObjDesc, UINT8 FieldFlags, UINT8 FieldAttribute, UINT32 FieldBitPosition, UINT32 FieldBitLength); ACPI_STATUS AcpiExPrepFieldValue ( ACPI_CREATE_FIELD_INFO *Info); /* * exsystem - Interface to OS services */ ACPI_STATUS AcpiExSystemDoNotifyOp ( ACPI_OPERAND_OBJECT *Value, ACPI_OPERAND_OBJECT *ObjDesc); ACPI_STATUS AcpiExSystemDoSleep( UINT64 Time); ACPI_STATUS AcpiExSystemDoStall ( UINT32 Time); ACPI_STATUS AcpiExSystemSignalEvent( ACPI_OPERAND_OBJECT *ObjDesc); ACPI_STATUS AcpiExSystemWaitEvent( ACPI_OPERAND_OBJECT *Time, ACPI_OPERAND_OBJECT *ObjDesc); ACPI_STATUS AcpiExSystemResetEvent( ACPI_OPERAND_OBJECT *ObjDesc); ACPI_STATUS AcpiExSystemWaitSemaphore ( ACPI_SEMAPHORE Semaphore, UINT16 Timeout); ACPI_STATUS AcpiExSystemWaitMutex ( ACPI_MUTEX Mutex, UINT16 Timeout); /* * exoparg1 - ACPI AML execution, 1 operand */ ACPI_STATUS AcpiExOpcode_0A_0T_1R ( ACPI_WALK_STATE *WalkState); ACPI_STATUS AcpiExOpcode_1A_0T_0R ( ACPI_WALK_STATE *WalkState); ACPI_STATUS AcpiExOpcode_1A_0T_1R ( ACPI_WALK_STATE *WalkState); ACPI_STATUS AcpiExOpcode_1A_1T_1R ( ACPI_WALK_STATE *WalkState); ACPI_STATUS AcpiExOpcode_1A_1T_0R ( ACPI_WALK_STATE *WalkState); /* * exoparg2 - ACPI AML execution, 2 operands */ ACPI_STATUS AcpiExOpcode_2A_0T_0R ( ACPI_WALK_STATE *WalkState); ACPI_STATUS AcpiExOpcode_2A_0T_1R ( ACPI_WALK_STATE *WalkState); ACPI_STATUS AcpiExOpcode_2A_1T_1R ( ACPI_WALK_STATE *WalkState); ACPI_STATUS AcpiExOpcode_2A_2T_1R ( ACPI_WALK_STATE *WalkState); /* * exoparg3 - ACPI AML execution, 3 operands */ ACPI_STATUS AcpiExOpcode_3A_0T_0R ( ACPI_WALK_STATE *WalkState); ACPI_STATUS AcpiExOpcode_3A_1T_1R ( ACPI_WALK_STATE *WalkState); /* * exoparg6 - ACPI AML execution, 6 operands */ ACPI_STATUS AcpiExOpcode_6A_0T_1R ( ACPI_WALK_STATE *WalkState); /* * exresolv - Object resolution and get value functions */ ACPI_STATUS AcpiExResolveToValue ( ACPI_OPERAND_OBJECT **StackPtr, ACPI_WALK_STATE *WalkState); ACPI_STATUS AcpiExResolveMultiple ( ACPI_WALK_STATE *WalkState, ACPI_OPERAND_OBJECT *Operand, ACPI_OBJECT_TYPE *ReturnType, ACPI_OPERAND_OBJECT **ReturnDesc); /* * exresnte - resolve namespace node */ ACPI_STATUS AcpiExResolveNodeToValue ( ACPI_NAMESPACE_NODE **StackPtr, ACPI_WALK_STATE *WalkState); /* * exresop - resolve operand to value */ ACPI_STATUS AcpiExResolveOperands ( UINT16 Opcode, ACPI_OPERAND_OBJECT **StackPtr, ACPI_WALK_STATE *WalkState); /* * exdump - Interpreter debug output routines */ void AcpiExDumpOperand ( ACPI_OPERAND_OBJECT *ObjDesc, UINT32 Depth); void AcpiExDumpOperands ( ACPI_OPERAND_OBJECT **Operands, const char *OpcodeName, UINT32 NumOpcodes); void AcpiExDumpObjectDescriptor ( ACPI_OPERAND_OBJECT *Object, UINT32 Flags); void AcpiExDumpNamespaceNode ( ACPI_NAMESPACE_NODE *Node, UINT32 Flags); /* * exnames - AML namestring support */ ACPI_STATUS AcpiExGetNameString ( ACPI_OBJECT_TYPE DataType, UINT8 *InAmlAddress, char **OutNameString, UINT32 *OutNameLength); /* * exstore - Object store support */ ACPI_STATUS AcpiExStore ( ACPI_OPERAND_OBJECT *ValDesc, ACPI_OPERAND_OBJECT *DestDesc, ACPI_WALK_STATE *WalkState); ACPI_STATUS AcpiExStoreObjectToNode ( ACPI_OPERAND_OBJECT *SourceDesc, ACPI_NAMESPACE_NODE *Node, ACPI_WALK_STATE *WalkState, UINT8 ImplicitConversion); #define ACPI_IMPLICIT_CONVERSION TRUE #define ACPI_NO_IMPLICIT_CONVERSION FALSE /* * exstoren - resolve/store object */ ACPI_STATUS AcpiExResolveObject ( ACPI_OPERAND_OBJECT **SourceDescPtr, ACPI_OBJECT_TYPE TargetType, ACPI_WALK_STATE *WalkState); ACPI_STATUS AcpiExStoreObjectToObject ( ACPI_OPERAND_OBJECT *SourceDesc, ACPI_OPERAND_OBJECT *DestDesc, ACPI_OPERAND_OBJECT **NewDesc, ACPI_WALK_STATE *WalkState); /* * exstorob - store object - buffer/string */ ACPI_STATUS AcpiExStoreBufferToBuffer ( ACPI_OPERAND_OBJECT *SourceDesc, ACPI_OPERAND_OBJECT *TargetDesc); ACPI_STATUS AcpiExStoreStringToString ( ACPI_OPERAND_OBJECT *SourceDesc, ACPI_OPERAND_OBJECT *TargetDesc); /* * excopy - object copy */ ACPI_STATUS AcpiExCopyIntegerToIndexField ( ACPI_OPERAND_OBJECT *SourceDesc, ACPI_OPERAND_OBJECT *TargetDesc); ACPI_STATUS AcpiExCopyIntegerToBankField ( ACPI_OPERAND_OBJECT *SourceDesc, ACPI_OPERAND_OBJECT *TargetDesc); ACPI_STATUS AcpiExCopyDataToNamedField ( ACPI_OPERAND_OBJECT *SourceDesc, ACPI_NAMESPACE_NODE *Node); ACPI_STATUS AcpiExCopyIntegerToBufferField ( ACPI_OPERAND_OBJECT *SourceDesc, ACPI_OPERAND_OBJECT *TargetDesc); /* * exutils - interpreter/scanner utilities */ void AcpiExEnterInterpreter ( void); void AcpiExExitInterpreter ( void); BOOLEAN AcpiExTruncateFor32bitTable ( ACPI_OPERAND_OBJECT *ObjDesc); void AcpiExAcquireGlobalLock ( UINT32 Rule); void AcpiExReleaseGlobalLock ( UINT32 Rule); void AcpiExEisaIdToString ( char *Dest, UINT64 CompressedId); void AcpiExIntegerToString ( char *Dest, UINT64 Value); BOOLEAN AcpiIsValidSpaceId ( UINT8 SpaceId); /* * exregion - default OpRegion handlers */ ACPI_STATUS AcpiExSystemMemorySpaceHandler ( UINT32 Function, ACPI_PHYSICAL_ADDRESS Address, UINT32 BitWidth, UINT64 *Value, void *HandlerContext, void *RegionContext); ACPI_STATUS AcpiExSystemIoSpaceHandler ( UINT32 Function, ACPI_PHYSICAL_ADDRESS Address, UINT32 BitWidth, UINT64 *Value, void *HandlerContext, void *RegionContext); ACPI_STATUS AcpiExPciConfigSpaceHandler ( UINT32 Function, ACPI_PHYSICAL_ADDRESS Address, UINT32 BitWidth, UINT64 *Value, void *HandlerContext, void *RegionContext); ACPI_STATUS AcpiExCmosSpaceHandler ( UINT32 Function, ACPI_PHYSICAL_ADDRESS Address, UINT32 BitWidth, UINT64 *Value, void *HandlerContext, void *RegionContext); ACPI_STATUS AcpiExPciBarSpaceHandler ( UINT32 Function, ACPI_PHYSICAL_ADDRESS Address, UINT32 BitWidth, UINT64 *Value, void *HandlerContext, void *RegionContext); ACPI_STATUS AcpiExEmbeddedControllerSpaceHandler ( UINT32 Function, ACPI_PHYSICAL_ADDRESS Address, UINT32 BitWidth, UINT64 *Value, void *HandlerContext, void *RegionContext); ACPI_STATUS AcpiExSmBusSpaceHandler ( UINT32 Function, ACPI_PHYSICAL_ADDRESS Address, UINT32 BitWidth, UINT64 *Value, void *HandlerContext, void *RegionContext); ACPI_STATUS AcpiExDataTableSpaceHandler ( UINT32 Function, ACPI_PHYSICAL_ADDRESS Address, UINT32 BitWidth, UINT64 *Value, void *HandlerContext, void *RegionContext); #endif /* __INTERP_H__ */ src/acpica/source/include/aclocal.h000066400000000000000000001444261231470457100175760ustar00rootroot00000000000000/****************************************************************************** * * Name: aclocal.h - Internal data types used across the ACPI subsystem * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #ifndef __ACLOCAL_H__ #define __ACLOCAL_H__ /* acpisrc:StructDefs -- for acpisrc conversion */ #define ACPI_SERIALIZED 0xFF typedef UINT32 ACPI_MUTEX_HANDLE; #define ACPI_GLOBAL_LOCK (ACPI_SEMAPHORE) (-1) /* Total number of aml opcodes defined */ #define AML_NUM_OPCODES 0x81 /* Forward declarations */ struct acpi_walk_state; struct acpi_obj_mutex; union acpi_parse_object; /***************************************************************************** * * Mutex typedefs and structs * ****************************************************************************/ /* * Predefined handles for the mutex objects used within the subsystem * All mutex objects are automatically created by AcpiUtMutexInitialize. * * The acquire/release ordering protocol is implied via this list. Mutexes * with a lower value must be acquired before mutexes with a higher value. * * NOTE: any changes here must be reflected in the AcpiGbl_MutexNames * table below also! */ #define ACPI_MTX_INTERPRETER 0 /* AML Interpreter, main lock */ #define ACPI_MTX_NAMESPACE 1 /* ACPI Namespace */ #define ACPI_MTX_TABLES 2 /* Data for ACPI tables */ #define ACPI_MTX_EVENTS 3 /* Data for ACPI events */ #define ACPI_MTX_CACHES 4 /* Internal caches, general purposes */ #define ACPI_MTX_MEMORY 5 /* Debug memory tracking lists */ #define ACPI_MTX_DEBUG_CMD_COMPLETE 6 /* AML debugger */ #define ACPI_MTX_DEBUG_CMD_READY 7 /* AML debugger */ #define ACPI_MAX_MUTEX 7 #define ACPI_NUM_MUTEX ACPI_MAX_MUTEX+1 /* Lock structure for reader/writer interfaces */ typedef struct acpi_rw_lock { ACPI_MUTEX WriterMutex; ACPI_MUTEX ReaderMutex; UINT32 NumReaders; } ACPI_RW_LOCK; /* * Predefined handles for spinlocks used within the subsystem. * These spinlocks are created by AcpiUtMutexInitialize */ #define ACPI_LOCK_GPES 0 #define ACPI_LOCK_HARDWARE 1 #define ACPI_MAX_LOCK 1 #define ACPI_NUM_LOCK ACPI_MAX_LOCK+1 /* This Thread ID means that the mutex is not in use (unlocked) */ #define ACPI_MUTEX_NOT_ACQUIRED (ACPI_THREAD_ID) -1 /* Table for the global mutexes */ typedef struct acpi_mutex_info { ACPI_MUTEX Mutex; UINT32 UseCount; ACPI_THREAD_ID ThreadId; } ACPI_MUTEX_INFO; /* Lock flag parameter for various interfaces */ #define ACPI_MTX_DO_NOT_LOCK 0 #define ACPI_MTX_LOCK 1 /* Field access granularities */ #define ACPI_FIELD_BYTE_GRANULARITY 1 #define ACPI_FIELD_WORD_GRANULARITY 2 #define ACPI_FIELD_DWORD_GRANULARITY 4 #define ACPI_FIELD_QWORD_GRANULARITY 8 #define ACPI_ENTRY_NOT_FOUND NULL /***************************************************************************** * * Namespace typedefs and structs * ****************************************************************************/ /* Operational modes of the AML interpreter/scanner */ typedef enum { ACPI_IMODE_LOAD_PASS1 = 0x01, ACPI_IMODE_LOAD_PASS2 = 0x02, ACPI_IMODE_EXECUTE = 0x03 } ACPI_INTERPRETER_MODE; /* * The Namespace Node describes a named object that appears in the AML. * DescriptorType is used to differentiate between internal descriptors. * * The node is optimized for both 32-bit and 64-bit platforms: * 20 bytes for the 32-bit case, 32 bytes for the 64-bit case. * * Note: The DescriptorType and Type fields must appear in the identical * position in both the ACPI_NAMESPACE_NODE and ACPI_OPERAND_OBJECT * structures. */ typedef struct acpi_namespace_node { union acpi_operand_object *Object; /* Interpreter object */ UINT8 DescriptorType; /* Differentiate object descriptor types */ UINT8 Type; /* ACPI Type associated with this name */ UINT8 Flags; /* Miscellaneous flags */ ACPI_OWNER_ID OwnerId; /* Node creator */ ACPI_NAME_UNION Name; /* ACPI Name, always 4 chars per ACPI spec */ struct acpi_namespace_node *Parent; /* Parent node */ struct acpi_namespace_node *Child; /* First child */ struct acpi_namespace_node *Peer; /* First peer */ /* * The following fields are used by the ASL compiler and disassembler only */ #ifdef ACPI_LARGE_NAMESPACE_NODE union acpi_parse_object *Op; UINT32 Value; UINT32 Length; #endif } ACPI_NAMESPACE_NODE; /* Namespace Node flags */ #define ANOBJ_RESERVED 0x01 /* Available for use */ #define ANOBJ_TEMPORARY 0x02 /* Node is create by a method and is temporary */ #define ANOBJ_METHOD_ARG 0x04 /* Node is a method argument */ #define ANOBJ_METHOD_LOCAL 0x08 /* Node is a method local */ #define ANOBJ_SUBTREE_HAS_INI 0x10 /* Used to optimize device initialization */ #define ANOBJ_EVALUATED 0x20 /* Set on first evaluation of node */ #define ANOBJ_ALLOCATED_BUFFER 0x40 /* Method AML buffer is dynamic (InstallMethod) */ #define ANOBJ_IS_EXTERNAL 0x08 /* iASL only: This object created via External() */ #define ANOBJ_METHOD_NO_RETVAL 0x10 /* iASL only: Method has no return value */ #define ANOBJ_METHOD_SOME_NO_RETVAL 0x20 /* iASL only: Method has at least one return value */ #define ANOBJ_IS_REFERENCED 0x80 /* iASL only: Object was referenced */ /* Internal ACPI table management - master table list */ typedef struct acpi_table_list { ACPI_TABLE_DESC *Tables; /* Table descriptor array */ UINT32 CurrentTableCount; /* Tables currently in the array */ UINT32 MaxTableCount; /* Max tables array will hold */ UINT8 Flags; } ACPI_TABLE_LIST; /* Flags for above */ #define ACPI_ROOT_ORIGIN_UNKNOWN (0) /* ~ORIGIN_ALLOCATED */ #define ACPI_ROOT_ORIGIN_ALLOCATED (1) #define ACPI_ROOT_ALLOW_RESIZE (2) /* Predefined (fixed) table indexes */ #define ACPI_TABLE_INDEX_DSDT (0) #define ACPI_TABLE_INDEX_FACS (1) typedef struct acpi_find_context { char *SearchFor; ACPI_HANDLE *List; UINT32 *Count; } ACPI_FIND_CONTEXT; typedef struct acpi_ns_search_data { ACPI_NAMESPACE_NODE *Node; } ACPI_NS_SEARCH_DATA; /* Object types used during package copies */ #define ACPI_COPY_TYPE_SIMPLE 0 #define ACPI_COPY_TYPE_PACKAGE 1 /* Info structure used to convert external<->internal namestrings */ typedef struct acpi_namestring_info { const char *ExternalName; const char *NextExternalChar; char *InternalName; UINT32 Length; UINT32 NumSegments; UINT32 NumCarats; BOOLEAN FullyQualified; } ACPI_NAMESTRING_INFO; /* Field creation info */ typedef struct acpi_create_field_info { ACPI_NAMESPACE_NODE *RegionNode; ACPI_NAMESPACE_NODE *FieldNode; ACPI_NAMESPACE_NODE *RegisterNode; ACPI_NAMESPACE_NODE *DataRegisterNode; ACPI_NAMESPACE_NODE *ConnectionNode; UINT8 *ResourceBuffer; UINT32 BankValue; UINT32 FieldBitPosition; UINT32 FieldBitLength; UINT16 ResourceLength; UINT8 FieldFlags; UINT8 Attribute; UINT8 FieldType; UINT8 AccessLength; } ACPI_CREATE_FIELD_INFO; typedef ACPI_STATUS (*ACPI_INTERNAL_METHOD) ( struct acpi_walk_state *WalkState); /* * Bitmapped ACPI types. Used internally only */ #define ACPI_BTYPE_ANY 0x00000000 #define ACPI_BTYPE_INTEGER 0x00000001 #define ACPI_BTYPE_STRING 0x00000002 #define ACPI_BTYPE_BUFFER 0x00000004 #define ACPI_BTYPE_PACKAGE 0x00000008 #define ACPI_BTYPE_FIELD_UNIT 0x00000010 #define ACPI_BTYPE_DEVICE 0x00000020 #define ACPI_BTYPE_EVENT 0x00000040 #define ACPI_BTYPE_METHOD 0x00000080 #define ACPI_BTYPE_MUTEX 0x00000100 #define ACPI_BTYPE_REGION 0x00000200 #define ACPI_BTYPE_POWER 0x00000400 #define ACPI_BTYPE_PROCESSOR 0x00000800 #define ACPI_BTYPE_THERMAL 0x00001000 #define ACPI_BTYPE_BUFFER_FIELD 0x00002000 #define ACPI_BTYPE_DDB_HANDLE 0x00004000 #define ACPI_BTYPE_DEBUG_OBJECT 0x00008000 #define ACPI_BTYPE_REFERENCE 0x00010000 #define ACPI_BTYPE_RESOURCE 0x00020000 #define ACPI_BTYPE_COMPUTE_DATA (ACPI_BTYPE_INTEGER | ACPI_BTYPE_STRING | ACPI_BTYPE_BUFFER) #define ACPI_BTYPE_DATA (ACPI_BTYPE_COMPUTE_DATA | ACPI_BTYPE_PACKAGE) #define ACPI_BTYPE_DATA_REFERENCE (ACPI_BTYPE_DATA | ACPI_BTYPE_REFERENCE | ACPI_BTYPE_DDB_HANDLE) #define ACPI_BTYPE_DEVICE_OBJECTS (ACPI_BTYPE_DEVICE | ACPI_BTYPE_THERMAL | ACPI_BTYPE_PROCESSOR) #define ACPI_BTYPE_OBJECTS_AND_REFS 0x0001FFFF /* ARG or LOCAL */ #define ACPI_BTYPE_ALL_OBJECTS 0x0000FFFF #pragma pack(1) /* * Information structure for ACPI predefined names. * Each entry in the table contains the following items: * * Name - The ACPI reserved name * ParamCount - Number of arguments to the method * ExpectedReturnBtypes - Allowed type(s) for the return value */ typedef struct acpi_name_info { char Name[ACPI_NAME_SIZE]; UINT16 ArgumentList; UINT8 ExpectedBtypes; } ACPI_NAME_INFO; /* * Secondary information structures for ACPI predefined objects that return * package objects. This structure appears as the next entry in the table * after the NAME_INFO structure above. * * The reason for this is to minimize the size of the predefined name table. */ /* * Used for ACPI_PTYPE1_FIXED, ACPI_PTYPE1_VAR, ACPI_PTYPE2, * ACPI_PTYPE2_MIN, ACPI_PTYPE2_PKG_COUNT, ACPI_PTYPE2_COUNT, * ACPI_PTYPE2_FIX_VAR */ typedef struct acpi_package_info { UINT8 Type; UINT8 ObjectType1; UINT8 Count1; UINT8 ObjectType2; UINT8 Count2; UINT16 Reserved; } ACPI_PACKAGE_INFO; /* Used for ACPI_PTYPE2_FIXED */ typedef struct acpi_package_info2 { UINT8 Type; UINT8 Count; UINT8 ObjectType[4]; UINT8 Reserved; } ACPI_PACKAGE_INFO2; /* Used for ACPI_PTYPE1_OPTION */ typedef struct acpi_package_info3 { UINT8 Type; UINT8 Count; UINT8 ObjectType[2]; UINT8 TailObjectType; UINT16 Reserved; } ACPI_PACKAGE_INFO3; typedef union acpi_predefined_info { ACPI_NAME_INFO Info; ACPI_PACKAGE_INFO RetInfo; ACPI_PACKAGE_INFO2 RetInfo2; ACPI_PACKAGE_INFO3 RetInfo3; } ACPI_PREDEFINED_INFO; /* Reset to default packing */ #pragma pack() /* Return object auto-repair info */ typedef ACPI_STATUS (*ACPI_OBJECT_CONVERTER) ( union acpi_operand_object *OriginalObject, union acpi_operand_object **ConvertedObject); typedef struct acpi_simple_repair_info { char Name[ACPI_NAME_SIZE]; UINT32 UnexpectedBtypes; UINT32 PackageIndex; ACPI_OBJECT_CONVERTER ObjectConverter; } ACPI_SIMPLE_REPAIR_INFO; /* * Bitmapped return value types * Note: the actual data types must be contiguous, a loop in nspredef.c * depends on this. */ #define ACPI_RTYPE_ANY 0x00 #define ACPI_RTYPE_NONE 0x01 #define ACPI_RTYPE_INTEGER 0x02 #define ACPI_RTYPE_STRING 0x04 #define ACPI_RTYPE_BUFFER 0x08 #define ACPI_RTYPE_PACKAGE 0x10 #define ACPI_RTYPE_REFERENCE 0x20 #define ACPI_RTYPE_ALL 0x3F #define ACPI_NUM_RTYPES 5 /* Number of actual object types */ /***************************************************************************** * * Event typedefs and structs * ****************************************************************************/ /* Dispatch info for each host-installed SCI handler */ typedef struct acpi_sci_handler_info { struct acpi_sci_handler_info *Next; ACPI_SCI_HANDLER Address; /* Address of handler */ void *Context; /* Context to be passed to handler */ } ACPI_SCI_HANDLER_INFO; /* Dispatch info for each GPE -- either a method or handler, cannot be both */ typedef struct acpi_gpe_handler_info { ACPI_GPE_HANDLER Address; /* Address of handler, if any */ void *Context; /* Context to be passed to handler */ ACPI_NAMESPACE_NODE *MethodNode; /* Method node for this GPE level (saved) */ UINT8 OriginalFlags; /* Original (pre-handler) GPE info */ BOOLEAN OriginallyEnabled; /* True if GPE was originally enabled */ } ACPI_GPE_HANDLER_INFO; /* Notify info for implicit notify, multiple device objects */ typedef struct acpi_gpe_notify_info { ACPI_NAMESPACE_NODE *DeviceNode; /* Device to be notified */ struct acpi_gpe_notify_info *Next; } ACPI_GPE_NOTIFY_INFO; /* * GPE dispatch info. At any time, the GPE can have at most one type * of dispatch - Method, Handler, or Implicit Notify. */ typedef union acpi_gpe_dispatch_info { ACPI_NAMESPACE_NODE *MethodNode; /* Method node for this GPE level */ ACPI_GPE_HANDLER_INFO *Handler; /* Installed GPE handler */ ACPI_GPE_NOTIFY_INFO *NotifyList; /* List of _PRW devices for implicit notifies */ } ACPI_GPE_DISPATCH_INFO; /* * Information about a GPE, one per each GPE in an array. * NOTE: Important to keep this struct as small as possible. */ typedef struct acpi_gpe_event_info { union acpi_gpe_dispatch_info Dispatch; /* Either Method, Handler, or NotifyList */ struct acpi_gpe_register_info *RegisterInfo; /* Backpointer to register info */ UINT8 Flags; /* Misc info about this GPE */ UINT8 GpeNumber; /* This GPE */ UINT8 RuntimeCount; /* References to a run GPE */ } ACPI_GPE_EVENT_INFO; /* Information about a GPE register pair, one per each status/enable pair in an array */ typedef struct acpi_gpe_register_info { ACPI_GENERIC_ADDRESS StatusAddress; /* Address of status reg */ ACPI_GENERIC_ADDRESS EnableAddress; /* Address of enable reg */ UINT8 EnableForWake; /* GPEs to keep enabled when sleeping */ UINT8 EnableForRun; /* GPEs to keep enabled when running */ UINT8 BaseGpeNumber; /* Base GPE number for this register */ } ACPI_GPE_REGISTER_INFO; /* * Information about a GPE register block, one per each installed block -- * GPE0, GPE1, and one per each installed GPE Block Device. */ typedef struct acpi_gpe_block_info { ACPI_NAMESPACE_NODE *Node; struct acpi_gpe_block_info *Previous; struct acpi_gpe_block_info *Next; struct acpi_gpe_xrupt_info *XruptBlock; /* Backpointer to interrupt block */ ACPI_GPE_REGISTER_INFO *RegisterInfo; /* One per GPE register pair */ ACPI_GPE_EVENT_INFO *EventInfo; /* One for each GPE */ ACPI_GENERIC_ADDRESS BlockAddress; /* Base address of the block */ UINT32 RegisterCount; /* Number of register pairs in block */ UINT16 GpeCount; /* Number of individual GPEs in block */ UINT8 BlockBaseNumber;/* Base GPE number for this block */ BOOLEAN Initialized; /* TRUE if this block is initialized */ } ACPI_GPE_BLOCK_INFO; /* Information about GPE interrupt handlers, one per each interrupt level used for GPEs */ typedef struct acpi_gpe_xrupt_info { struct acpi_gpe_xrupt_info *Previous; struct acpi_gpe_xrupt_info *Next; ACPI_GPE_BLOCK_INFO *GpeBlockListHead; /* List of GPE blocks for this xrupt */ UINT32 InterruptNumber; /* System interrupt number */ } ACPI_GPE_XRUPT_INFO; typedef struct acpi_gpe_walk_info { ACPI_NAMESPACE_NODE *GpeDevice; ACPI_GPE_BLOCK_INFO *GpeBlock; UINT16 Count; ACPI_OWNER_ID OwnerId; BOOLEAN ExecuteByOwnerId; } ACPI_GPE_WALK_INFO; typedef struct acpi_gpe_device_info { UINT32 Index; UINT32 NextBlockBaseIndex; ACPI_STATUS Status; ACPI_NAMESPACE_NODE *GpeDevice; } ACPI_GPE_DEVICE_INFO; typedef ACPI_STATUS (*ACPI_GPE_CALLBACK) ( ACPI_GPE_XRUPT_INFO *GpeXruptInfo, ACPI_GPE_BLOCK_INFO *GpeBlock, void *Context); /* Information about each particular fixed event */ typedef struct acpi_fixed_event_handler { ACPI_EVENT_HANDLER Handler; /* Address of handler. */ void *Context; /* Context to be passed to handler */ } ACPI_FIXED_EVENT_HANDLER; typedef struct acpi_fixed_event_info { UINT8 StatusRegisterId; UINT8 EnableRegisterId; UINT16 StatusBitMask; UINT16 EnableBitMask; } ACPI_FIXED_EVENT_INFO; /* Information used during field processing */ typedef struct acpi_field_info { UINT8 SkipField; UINT8 FieldFlag; UINT32 PkgLength; } ACPI_FIELD_INFO; /***************************************************************************** * * Generic "state" object for stacks * ****************************************************************************/ #define ACPI_CONTROL_NORMAL 0xC0 #define ACPI_CONTROL_CONDITIONAL_EXECUTING 0xC1 #define ACPI_CONTROL_PREDICATE_EXECUTING 0xC2 #define ACPI_CONTROL_PREDICATE_FALSE 0xC3 #define ACPI_CONTROL_PREDICATE_TRUE 0xC4 #define ACPI_STATE_COMMON \ void *Next; \ UINT8 DescriptorType; /* To differentiate various internal objs */\ UINT8 Flags; \ UINT16 Value; \ UINT16 State; /* There are 2 bytes available here until the next natural alignment boundary */ typedef struct acpi_common_state { ACPI_STATE_COMMON } ACPI_COMMON_STATE; /* * Update state - used to traverse complex objects such as packages */ typedef struct acpi_update_state { ACPI_STATE_COMMON union acpi_operand_object *Object; } ACPI_UPDATE_STATE; /* * Pkg state - used to traverse nested package structures */ typedef struct acpi_pkg_state { ACPI_STATE_COMMON UINT16 Index; union acpi_operand_object *SourceObject; union acpi_operand_object *DestObject; struct acpi_walk_state *WalkState; void *ThisTargetObj; UINT32 NumPackages; } ACPI_PKG_STATE; /* * Control state - one per if/else and while constructs. * Allows nesting of these constructs */ typedef struct acpi_control_state { ACPI_STATE_COMMON UINT16 Opcode; union acpi_parse_object *PredicateOp; UINT8 *AmlPredicateStart; /* Start of if/while predicate */ UINT8 *PackageEnd; /* End of if/while block */ UINT32 LoopCount; /* While() loop counter */ } ACPI_CONTROL_STATE; /* * Scope state - current scope during namespace lookups */ typedef struct acpi_scope_state { ACPI_STATE_COMMON ACPI_NAMESPACE_NODE *Node; } ACPI_SCOPE_STATE; typedef struct acpi_pscope_state { ACPI_STATE_COMMON UINT32 ArgCount; /* Number of fixed arguments */ union acpi_parse_object *Op; /* Current op being parsed */ UINT8 *ArgEnd; /* Current argument end */ UINT8 *PkgEnd; /* Current package end */ UINT32 ArgList; /* Next argument to parse */ } ACPI_PSCOPE_STATE; /* * Thread state - one per thread across multiple walk states. Multiple walk * states are created when there are nested control methods executing. */ typedef struct acpi_thread_state { ACPI_STATE_COMMON UINT8 CurrentSyncLevel; /* Mutex Sync (nested acquire) level */ struct acpi_walk_state *WalkStateList; /* Head of list of WalkStates for this thread */ union acpi_operand_object *AcquiredMutexList; /* List of all currently acquired mutexes */ ACPI_THREAD_ID ThreadId; /* Running thread ID */ } ACPI_THREAD_STATE; /* * Result values - used to accumulate the results of nested * AML arguments */ typedef struct acpi_result_values { ACPI_STATE_COMMON union acpi_operand_object *ObjDesc [ACPI_RESULTS_FRAME_OBJ_NUM]; } ACPI_RESULT_VALUES; typedef ACPI_STATUS (*ACPI_PARSE_DOWNWARDS) ( struct acpi_walk_state *WalkState, union acpi_parse_object **OutOp); typedef ACPI_STATUS (*ACPI_PARSE_UPWARDS) ( struct acpi_walk_state *WalkState); /* Global handlers for AML Notifies */ typedef struct acpi_global_notify_handler { ACPI_NOTIFY_HANDLER Handler; void *Context; } ACPI_GLOBAL_NOTIFY_HANDLER; /* * Notify info - used to pass info to the deferred notify * handler/dispatcher. */ typedef struct acpi_notify_info { ACPI_STATE_COMMON UINT8 HandlerListId; ACPI_NAMESPACE_NODE *Node; union acpi_operand_object *HandlerListHead; ACPI_GLOBAL_NOTIFY_HANDLER *Global; } ACPI_NOTIFY_INFO; /* Generic state is union of structs above */ typedef union acpi_generic_state { ACPI_COMMON_STATE Common; ACPI_CONTROL_STATE Control; ACPI_UPDATE_STATE Update; ACPI_SCOPE_STATE Scope; ACPI_PSCOPE_STATE ParseScope; ACPI_PKG_STATE Pkg; ACPI_THREAD_STATE Thread; ACPI_RESULT_VALUES Results; ACPI_NOTIFY_INFO Notify; } ACPI_GENERIC_STATE; /***************************************************************************** * * Interpreter typedefs and structs * ****************************************************************************/ typedef ACPI_STATUS (*ACPI_EXECUTE_OP) ( struct acpi_walk_state *WalkState); /* Address Range info block */ typedef struct acpi_address_range { struct acpi_address_range *Next; ACPI_NAMESPACE_NODE *RegionNode; ACPI_PHYSICAL_ADDRESS StartAddress; ACPI_PHYSICAL_ADDRESS EndAddress; } ACPI_ADDRESS_RANGE; /***************************************************************************** * * Parser typedefs and structs * ****************************************************************************/ /* * AML opcode, name, and argument layout */ typedef struct acpi_opcode_info { #if defined(ACPI_DISASSEMBLER) || defined(ACPI_DEBUG_OUTPUT) char *Name; /* Opcode name (disassembler/debug only) */ #endif UINT32 ParseArgs; /* Grammar/Parse time arguments */ UINT32 RuntimeArgs; /* Interpret time arguments */ UINT16 Flags; /* Misc flags */ UINT8 ObjectType; /* Corresponding internal object type */ UINT8 Class; /* Opcode class */ UINT8 Type; /* Opcode type */ } ACPI_OPCODE_INFO; /* Structure for Resource Tag information */ typedef struct acpi_tag_info { UINT32 BitOffset; UINT32 BitLength; } ACPI_TAG_INFO; /* Value associated with the parse object */ typedef union acpi_parse_value { UINT64 Integer; /* Integer constant (Up to 64 bits) */ UINT32 Size; /* bytelist or field size */ char *String; /* NULL terminated string */ UINT8 *Buffer; /* buffer or string */ char *Name; /* NULL terminated string */ union acpi_parse_object *Arg; /* arguments and contained ops */ ACPI_TAG_INFO Tag; /* Resource descriptor tag info */ } ACPI_PARSE_VALUE; #ifdef ACPI_DISASSEMBLER #define ACPI_DISASM_ONLY_MEMBERS(a) a; #else #define ACPI_DISASM_ONLY_MEMBERS(a) #endif #define ACPI_PARSE_COMMON \ union acpi_parse_object *Parent; /* Parent op */\ UINT8 DescriptorType; /* To differentiate various internal objs */\ UINT8 Flags; /* Type of Op */\ UINT16 AmlOpcode; /* AML opcode */\ UINT32 AmlOffset; /* Offset of declaration in AML */\ union acpi_parse_object *Next; /* Next op */\ ACPI_NAMESPACE_NODE *Node; /* For use by interpreter */\ ACPI_PARSE_VALUE Value; /* Value or args associated with the opcode */\ UINT8 ArgListLength; /* Number of elements in the arg list */\ ACPI_DISASM_ONLY_MEMBERS (\ UINT8 DisasmFlags; /* Used during AML disassembly */\ UINT8 DisasmOpcode; /* Subtype used for disassembly */\ char AmlOpName[16]) /* Op name (debug only) */ /* Flags for DisasmFlags field above */ #define ACPI_DASM_BUFFER 0x00 /* Buffer is a simple data buffer */ #define ACPI_DASM_RESOURCE 0x01 /* Buffer is a Resource Descriptor */ #define ACPI_DASM_STRING 0x02 /* Buffer is a ASCII string */ #define ACPI_DASM_UNICODE 0x03 /* Buffer is a Unicode string */ #define ACPI_DASM_PLD_METHOD 0x04 /* Buffer is a _PLD method bit-packed buffer */ #define ACPI_DASM_EISAID 0x05 /* Integer is an EISAID */ #define ACPI_DASM_MATCHOP 0x06 /* Parent opcode is a Match() operator */ #define ACPI_DASM_LNOT_PREFIX 0x07 /* Start of a LNotEqual (etc.) pair of opcodes */ #define ACPI_DASM_LNOT_SUFFIX 0x08 /* End of a LNotEqual (etc.) pair of opcodes */ #define ACPI_DASM_HID_STRING 0x09 /* String is a _HID or _CID */ #define ACPI_DASM_IGNORE 0x0A /* Not used at this time */ /* * Generic operation (for example: If, While, Store) */ typedef struct acpi_parse_obj_common { ACPI_PARSE_COMMON } ACPI_PARSE_OBJ_COMMON; /* * Extended Op for named ops (Scope, Method, etc.), deferred ops (Methods and OpRegions), * and bytelists. */ typedef struct acpi_parse_obj_named { ACPI_PARSE_COMMON UINT8 *Path; UINT8 *Data; /* AML body or bytelist data */ UINT32 Length; /* AML length */ UINT32 Name; /* 4-byte name or zero if no name */ } ACPI_PARSE_OBJ_NAMED; /* This version is used by the iASL compiler only */ #define ACPI_MAX_PARSEOP_NAME 20 typedef struct acpi_parse_obj_asl { ACPI_PARSE_COMMON union acpi_parse_object *Child; union acpi_parse_object *ParentMethod; char *Filename; char *ExternalName; char *Namepath; char NameSeg[4]; UINT32 ExtraValue; UINT32 Column; UINT32 LineNumber; UINT32 LogicalLineNumber; UINT32 LogicalByteOffset; UINT32 EndLine; UINT32 EndLogicalLine; UINT32 AcpiBtype; UINT32 AmlLength; UINT32 AmlSubtreeLength; UINT32 FinalAmlLength; UINT32 FinalAmlOffset; UINT32 CompileFlags; UINT16 ParseOpcode; UINT8 AmlOpcodeLength; UINT8 AmlPkgLenBytes; UINT8 Extra; char ParseOpName[ACPI_MAX_PARSEOP_NAME]; } ACPI_PARSE_OBJ_ASL; typedef union acpi_parse_object { ACPI_PARSE_OBJ_COMMON Common; ACPI_PARSE_OBJ_NAMED Named; ACPI_PARSE_OBJ_ASL Asl; } ACPI_PARSE_OBJECT; /* * Parse state - one state per parser invocation and each control * method. */ typedef struct acpi_parse_state { UINT8 *AmlStart; /* First AML byte */ UINT8 *Aml; /* Next AML byte */ UINT8 *AmlEnd; /* (last + 1) AML byte */ UINT8 *PkgStart; /* Current package begin */ UINT8 *PkgEnd; /* Current package end */ union acpi_parse_object *StartOp; /* Root of parse tree */ struct acpi_namespace_node *StartNode; union acpi_generic_state *Scope; /* Current scope */ union acpi_parse_object *StartScope; UINT32 AmlSize; } ACPI_PARSE_STATE; /* Parse object flags */ #define ACPI_PARSEOP_GENERIC 0x01 #define ACPI_PARSEOP_NAMED 0x02 #define ACPI_PARSEOP_DEFERRED 0x04 #define ACPI_PARSEOP_BYTELIST 0x08 #define ACPI_PARSEOP_IN_STACK 0x10 #define ACPI_PARSEOP_TARGET 0x20 #define ACPI_PARSEOP_IN_CACHE 0x80 /* Parse object DisasmFlags */ #define ACPI_PARSEOP_IGNORE 0x01 #define ACPI_PARSEOP_PARAMLIST 0x02 #define ACPI_PARSEOP_EMPTY_TERMLIST 0x04 #define ACPI_PARSEOP_PREDEF_CHECKED 0x08 #define ACPI_PARSEOP_SPECIAL 0x10 /***************************************************************************** * * Hardware (ACPI registers) and PNP * ****************************************************************************/ typedef struct acpi_bit_register_info { UINT8 ParentRegister; UINT8 BitPosition; UINT16 AccessBitMask; } ACPI_BIT_REGISTER_INFO; /* * Some ACPI registers have bits that must be ignored -- meaning that they * must be preserved. */ #define ACPI_PM1_STATUS_PRESERVED_BITS 0x0800 /* Bit 11 */ /* Write-only bits must be zeroed by software */ #define ACPI_PM1_CONTROL_WRITEONLY_BITS 0x2004 /* Bits 13, 2 */ /* For control registers, both ignored and reserved bits must be preserved */ /* * For PM1 control, the SCI enable bit (bit 0, SCI_EN) is defined by the * ACPI specification to be a "preserved" bit - "OSPM always preserves this * bit position", section 4.7.3.2.1. However, on some machines the OS must * write a one to this bit after resume for the machine to work properly. * To enable this, we no longer attempt to preserve this bit. No machines * are known to fail if the bit is not preserved. (May 2009) */ #define ACPI_PM1_CONTROL_IGNORED_BITS 0x0200 /* Bit 9 */ #define ACPI_PM1_CONTROL_RESERVED_BITS 0xC1F8 /* Bits 14-15, 3-8 */ #define ACPI_PM1_CONTROL_PRESERVED_BITS \ (ACPI_PM1_CONTROL_IGNORED_BITS | ACPI_PM1_CONTROL_RESERVED_BITS) #define ACPI_PM2_CONTROL_PRESERVED_BITS 0xFFFFFFFE /* All except bit 0 */ /* * Register IDs * These are the full ACPI registers */ #define ACPI_REGISTER_PM1_STATUS 0x01 #define ACPI_REGISTER_PM1_ENABLE 0x02 #define ACPI_REGISTER_PM1_CONTROL 0x03 #define ACPI_REGISTER_PM2_CONTROL 0x04 #define ACPI_REGISTER_PM_TIMER 0x05 #define ACPI_REGISTER_PROCESSOR_BLOCK 0x06 #define ACPI_REGISTER_SMI_COMMAND_BLOCK 0x07 /* Masks used to access the BitRegisters */ #define ACPI_BITMASK_TIMER_STATUS 0x0001 #define ACPI_BITMASK_BUS_MASTER_STATUS 0x0010 #define ACPI_BITMASK_GLOBAL_LOCK_STATUS 0x0020 #define ACPI_BITMASK_POWER_BUTTON_STATUS 0x0100 #define ACPI_BITMASK_SLEEP_BUTTON_STATUS 0x0200 #define ACPI_BITMASK_RT_CLOCK_STATUS 0x0400 #define ACPI_BITMASK_PCIEXP_WAKE_STATUS 0x4000 /* ACPI 3.0 */ #define ACPI_BITMASK_WAKE_STATUS 0x8000 #define ACPI_BITMASK_ALL_FIXED_STATUS (\ ACPI_BITMASK_TIMER_STATUS | \ ACPI_BITMASK_BUS_MASTER_STATUS | \ ACPI_BITMASK_GLOBAL_LOCK_STATUS | \ ACPI_BITMASK_POWER_BUTTON_STATUS | \ ACPI_BITMASK_SLEEP_BUTTON_STATUS | \ ACPI_BITMASK_RT_CLOCK_STATUS | \ ACPI_BITMASK_PCIEXP_WAKE_STATUS | \ ACPI_BITMASK_WAKE_STATUS) #define ACPI_BITMASK_TIMER_ENABLE 0x0001 #define ACPI_BITMASK_GLOBAL_LOCK_ENABLE 0x0020 #define ACPI_BITMASK_POWER_BUTTON_ENABLE 0x0100 #define ACPI_BITMASK_SLEEP_BUTTON_ENABLE 0x0200 #define ACPI_BITMASK_RT_CLOCK_ENABLE 0x0400 #define ACPI_BITMASK_PCIEXP_WAKE_DISABLE 0x4000 /* ACPI 3.0 */ #define ACPI_BITMASK_SCI_ENABLE 0x0001 #define ACPI_BITMASK_BUS_MASTER_RLD 0x0002 #define ACPI_BITMASK_GLOBAL_LOCK_RELEASE 0x0004 #define ACPI_BITMASK_SLEEP_TYPE 0x1C00 #define ACPI_BITMASK_SLEEP_ENABLE 0x2000 #define ACPI_BITMASK_ARB_DISABLE 0x0001 /* Raw bit position of each BitRegister */ #define ACPI_BITPOSITION_TIMER_STATUS 0x00 #define ACPI_BITPOSITION_BUS_MASTER_STATUS 0x04 #define ACPI_BITPOSITION_GLOBAL_LOCK_STATUS 0x05 #define ACPI_BITPOSITION_POWER_BUTTON_STATUS 0x08 #define ACPI_BITPOSITION_SLEEP_BUTTON_STATUS 0x09 #define ACPI_BITPOSITION_RT_CLOCK_STATUS 0x0A #define ACPI_BITPOSITION_PCIEXP_WAKE_STATUS 0x0E /* ACPI 3.0 */ #define ACPI_BITPOSITION_WAKE_STATUS 0x0F #define ACPI_BITPOSITION_TIMER_ENABLE 0x00 #define ACPI_BITPOSITION_GLOBAL_LOCK_ENABLE 0x05 #define ACPI_BITPOSITION_POWER_BUTTON_ENABLE 0x08 #define ACPI_BITPOSITION_SLEEP_BUTTON_ENABLE 0x09 #define ACPI_BITPOSITION_RT_CLOCK_ENABLE 0x0A #define ACPI_BITPOSITION_PCIEXP_WAKE_DISABLE 0x0E /* ACPI 3.0 */ #define ACPI_BITPOSITION_SCI_ENABLE 0x00 #define ACPI_BITPOSITION_BUS_MASTER_RLD 0x01 #define ACPI_BITPOSITION_GLOBAL_LOCK_RELEASE 0x02 #define ACPI_BITPOSITION_SLEEP_TYPE 0x0A #define ACPI_BITPOSITION_SLEEP_ENABLE 0x0D #define ACPI_BITPOSITION_ARB_DISABLE 0x00 /* Structs and definitions for _OSI support and I/O port validation */ #define ACPI_ALWAYS_ILLEGAL 0x00 typedef struct acpi_interface_info { char *Name; struct acpi_interface_info *Next; UINT8 Flags; UINT8 Value; } ACPI_INTERFACE_INFO; #define ACPI_OSI_INVALID 0x01 #define ACPI_OSI_DYNAMIC 0x02 #define ACPI_OSI_FEATURE 0x04 #define ACPI_OSI_DEFAULT_INVALID 0x08 #define ACPI_OSI_OPTIONAL_FEATURE (ACPI_OSI_FEATURE | ACPI_OSI_DEFAULT_INVALID | ACPI_OSI_INVALID) typedef struct acpi_port_info { char *Name; UINT16 Start; UINT16 End; UINT8 OsiDependency; } ACPI_PORT_INFO; /***************************************************************************** * * Resource descriptors * ****************************************************************************/ /* ResourceType values */ #define ACPI_ADDRESS_TYPE_MEMORY_RANGE 0 #define ACPI_ADDRESS_TYPE_IO_RANGE 1 #define ACPI_ADDRESS_TYPE_BUS_NUMBER_RANGE 2 /* Resource descriptor types and masks */ #define ACPI_RESOURCE_NAME_LARGE 0x80 #define ACPI_RESOURCE_NAME_SMALL 0x00 #define ACPI_RESOURCE_NAME_SMALL_MASK 0x78 /* Bits 6:3 contain the type */ #define ACPI_RESOURCE_NAME_SMALL_LENGTH_MASK 0x07 /* Bits 2:0 contain the length */ #define ACPI_RESOURCE_NAME_LARGE_MASK 0x7F /* Bits 6:0 contain the type */ /* * Small resource descriptor "names" as defined by the ACPI specification. * Note: Bits 2:0 are used for the descriptor length */ #define ACPI_RESOURCE_NAME_IRQ 0x20 #define ACPI_RESOURCE_NAME_DMA 0x28 #define ACPI_RESOURCE_NAME_START_DEPENDENT 0x30 #define ACPI_RESOURCE_NAME_END_DEPENDENT 0x38 #define ACPI_RESOURCE_NAME_IO 0x40 #define ACPI_RESOURCE_NAME_FIXED_IO 0x48 #define ACPI_RESOURCE_NAME_FIXED_DMA 0x50 #define ACPI_RESOURCE_NAME_RESERVED_S2 0x58 #define ACPI_RESOURCE_NAME_RESERVED_S3 0x60 #define ACPI_RESOURCE_NAME_RESERVED_S4 0x68 #define ACPI_RESOURCE_NAME_VENDOR_SMALL 0x70 #define ACPI_RESOURCE_NAME_END_TAG 0x78 /* * Large resource descriptor "names" as defined by the ACPI specification. * Note: includes the Large Descriptor bit in bit[7] */ #define ACPI_RESOURCE_NAME_MEMORY24 0x81 #define ACPI_RESOURCE_NAME_GENERIC_REGISTER 0x82 #define ACPI_RESOURCE_NAME_RESERVED_L1 0x83 #define ACPI_RESOURCE_NAME_VENDOR_LARGE 0x84 #define ACPI_RESOURCE_NAME_MEMORY32 0x85 #define ACPI_RESOURCE_NAME_FIXED_MEMORY32 0x86 #define ACPI_RESOURCE_NAME_ADDRESS32 0x87 #define ACPI_RESOURCE_NAME_ADDRESS16 0x88 #define ACPI_RESOURCE_NAME_EXTENDED_IRQ 0x89 #define ACPI_RESOURCE_NAME_ADDRESS64 0x8A #define ACPI_RESOURCE_NAME_EXTENDED_ADDRESS64 0x8B #define ACPI_RESOURCE_NAME_GPIO 0x8C #define ACPI_RESOURCE_NAME_SERIAL_BUS 0x8E #define ACPI_RESOURCE_NAME_LARGE_MAX 0x8E /***************************************************************************** * * Miscellaneous * ****************************************************************************/ #define ACPI_ASCII_ZERO 0x30 /***************************************************************************** * * Disassembler * ****************************************************************************/ typedef struct acpi_external_list { char *Path; char *InternalPath; struct acpi_external_list *Next; UINT32 Value; UINT16 Length; UINT16 Flags; UINT8 Type; } ACPI_EXTERNAL_LIST; /* Values for Flags field above */ #define ACPI_EXT_RESOLVED_REFERENCE 0x01 /* Object was resolved during cross ref */ #define ACPI_EXT_ORIGIN_FROM_FILE 0x02 /* External came from a file */ #define ACPI_EXT_INTERNAL_PATH_ALLOCATED 0x04 /* Deallocate internal path on completion */ #define ACPI_EXT_EXTERNAL_EMITTED 0x08 /* External() statement has been emitted */ typedef struct acpi_external_file { char *Path; struct acpi_external_file *Next; } ACPI_EXTERNAL_FILE; /***************************************************************************** * * Debugger * ****************************************************************************/ typedef struct acpi_db_method_info { ACPI_HANDLE Method; ACPI_HANDLE MainThreadGate; ACPI_HANDLE ThreadCompleteGate; ACPI_HANDLE InfoGate; ACPI_THREAD_ID *Threads; UINT32 NumThreads; UINT32 NumCreated; UINT32 NumCompleted; char *Name; UINT32 Flags; UINT32 NumLoops; char Pathname[ACPI_DB_LINE_BUFFER_SIZE]; char **Args; ACPI_OBJECT_TYPE *Types; /* * Arguments to be passed to method for the command * Threads - * the Number of threads, ID of current thread and * Index of current thread inside all them created. */ char InitArgs; ACPI_OBJECT_TYPE ArgTypes[4]; char *Arguments[4]; char NumThreadsStr[11]; char IdOfThreadStr[11]; char IndexOfThreadStr[11]; } ACPI_DB_METHOD_INFO; typedef struct acpi_integrity_info { UINT32 Nodes; UINT32 Objects; } ACPI_INTEGRITY_INFO; #define ACPI_DB_DISABLE_OUTPUT 0x00 #define ACPI_DB_REDIRECTABLE_OUTPUT 0x01 #define ACPI_DB_CONSOLE_OUTPUT 0x02 #define ACPI_DB_DUPLICATE_OUTPUT 0x03 /***************************************************************************** * * Debug * ****************************************************************************/ /* Entry for a memory allocation (debug only) */ #define ACPI_MEM_MALLOC 0 #define ACPI_MEM_CALLOC 1 #define ACPI_MAX_MODULE_NAME 16 #define ACPI_COMMON_DEBUG_MEM_HEADER \ struct acpi_debug_mem_block *Previous; \ struct acpi_debug_mem_block *Next; \ UINT32 Size; \ UINT32 Component; \ UINT32 Line; \ char Module[ACPI_MAX_MODULE_NAME]; \ UINT8 AllocType; typedef struct acpi_debug_mem_header { ACPI_COMMON_DEBUG_MEM_HEADER } ACPI_DEBUG_MEM_HEADER; typedef struct acpi_debug_mem_block { ACPI_COMMON_DEBUG_MEM_HEADER UINT64 UserSpace; } ACPI_DEBUG_MEM_BLOCK; #define ACPI_MEM_LIST_GLOBAL 0 #define ACPI_MEM_LIST_NSNODE 1 #define ACPI_MEM_LIST_MAX 1 #define ACPI_NUM_MEM_LISTS 2 /***************************************************************************** * * Info/help support * ****************************************************************************/ typedef struct ah_predefined_name { char *Name; char *Description; #ifndef ACPI_ASL_COMPILER char *Action; #endif } AH_PREDEFINED_NAME; typedef struct ah_device_id { char *Name; char *Description; } AH_DEVICE_ID; #endif /* __ACLOCAL_H__ */ src/acpica/source/include/acmacros.h000066400000000000000000000572261231470457100177710ustar00rootroot00000000000000/****************************************************************************** * * Name: acmacros.h - C macros for the entire subsystem. * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #ifndef __ACMACROS_H__ #define __ACMACROS_H__ /* * Extract data using a pointer. Any more than a byte and we * get into potential aligment issues -- see the STORE macros below. * Use with care. */ #define ACPI_CAST8(ptr) ACPI_CAST_PTR (UINT8, (ptr)) #define ACPI_CAST16(ptr) ACPI_CAST_PTR (UINT16, (ptr)) #define ACPI_CAST32(ptr) ACPI_CAST_PTR (UINT32, (ptr)) #define ACPI_CAST64(ptr) ACPI_CAST_PTR (UINT64, (ptr)) #define ACPI_GET8(ptr) (*ACPI_CAST8 (ptr)) #define ACPI_GET16(ptr) (*ACPI_CAST16 (ptr)) #define ACPI_GET32(ptr) (*ACPI_CAST32 (ptr)) #define ACPI_GET64(ptr) (*ACPI_CAST64 (ptr)) #define ACPI_SET8(ptr, val) (*ACPI_CAST8 (ptr) = (UINT8) (val)) #define ACPI_SET16(ptr, val) (*ACPI_CAST16 (ptr) = (UINT16) (val)) #define ACPI_SET32(ptr, val) (*ACPI_CAST32 (ptr) = (UINT32) (val)) #define ACPI_SET64(ptr, val) (*ACPI_CAST64 (ptr) = (UINT64) (val)) /* * printf() format helpers. These macros are workarounds for the difficulties * with emitting 64-bit integers and 64-bit pointers with the same code * for both 32-bit and 64-bit hosts. */ #define ACPI_FORMAT_UINT64(i) ACPI_HIDWORD(i), ACPI_LODWORD(i) #if ACPI_MACHINE_WIDTH == 64 #define ACPI_FORMAT_NATIVE_UINT(i) ACPI_FORMAT_UINT64(i) #define ACPI_FORMAT_TO_UINT(i) ACPI_FORMAT_UINT64(i) #define ACPI_PRINTF_UINT "0x%8.8X%8.8X" #else #define ACPI_FORMAT_NATIVE_UINT(i) 0, (UINT32) (i) #define ACPI_FORMAT_TO_UINT(i) (UINT32) (i) #define ACPI_PRINTF_UINT "0x%8.8X" #endif /* * Macros for moving data around to/from buffers that are possibly unaligned. * If the hardware supports the transfer of unaligned data, just do the store. * Otherwise, we have to move one byte at a time. */ #ifdef ACPI_BIG_ENDIAN /* * Macros for big-endian machines */ /* These macros reverse the bytes during the move, converting little-endian to big endian */ /* Big Endian <== Little Endian */ /* Hi...Lo Lo...Hi */ /* 16-bit source, 16/32/64 destination */ #define ACPI_MOVE_16_TO_16(d, s) {(( UINT8 *)(void *)(d))[0] = ((UINT8 *)(void *)(s))[1];\ (( UINT8 *)(void *)(d))[1] = ((UINT8 *)(void *)(s))[0];} #define ACPI_MOVE_16_TO_32(d, s) {(*(UINT32 *)(void *)(d))=0;\ ((UINT8 *)(void *)(d))[2] = ((UINT8 *)(void *)(s))[1];\ ((UINT8 *)(void *)(d))[3] = ((UINT8 *)(void *)(s))[0];} #define ACPI_MOVE_16_TO_64(d, s) {(*(UINT64 *)(void *)(d))=0;\ ((UINT8 *)(void *)(d))[6] = ((UINT8 *)(void *)(s))[1];\ ((UINT8 *)(void *)(d))[7] = ((UINT8 *)(void *)(s))[0];} /* 32-bit source, 16/32/64 destination */ #define ACPI_MOVE_32_TO_16(d, s) ACPI_MOVE_16_TO_16(d, s) /* Truncate to 16 */ #define ACPI_MOVE_32_TO_32(d, s) {(( UINT8 *)(void *)(d))[0] = ((UINT8 *)(void *)(s))[3];\ (( UINT8 *)(void *)(d))[1] = ((UINT8 *)(void *)(s))[2];\ (( UINT8 *)(void *)(d))[2] = ((UINT8 *)(void *)(s))[1];\ (( UINT8 *)(void *)(d))[3] = ((UINT8 *)(void *)(s))[0];} #define ACPI_MOVE_32_TO_64(d, s) {(*(UINT64 *)(void *)(d))=0;\ ((UINT8 *)(void *)(d))[4] = ((UINT8 *)(void *)(s))[3];\ ((UINT8 *)(void *)(d))[5] = ((UINT8 *)(void *)(s))[2];\ ((UINT8 *)(void *)(d))[6] = ((UINT8 *)(void *)(s))[1];\ ((UINT8 *)(void *)(d))[7] = ((UINT8 *)(void *)(s))[0];} /* 64-bit source, 16/32/64 destination */ #define ACPI_MOVE_64_TO_16(d, s) ACPI_MOVE_16_TO_16(d, s) /* Truncate to 16 */ #define ACPI_MOVE_64_TO_32(d, s) ACPI_MOVE_32_TO_32(d, s) /* Truncate to 32 */ #define ACPI_MOVE_64_TO_64(d, s) {(( UINT8 *)(void *)(d))[0] = ((UINT8 *)(void *)(s))[7];\ (( UINT8 *)(void *)(d))[1] = ((UINT8 *)(void *)(s))[6];\ (( UINT8 *)(void *)(d))[2] = ((UINT8 *)(void *)(s))[5];\ (( UINT8 *)(void *)(d))[3] = ((UINT8 *)(void *)(s))[4];\ (( UINT8 *)(void *)(d))[4] = ((UINT8 *)(void *)(s))[3];\ (( UINT8 *)(void *)(d))[5] = ((UINT8 *)(void *)(s))[2];\ (( UINT8 *)(void *)(d))[6] = ((UINT8 *)(void *)(s))[1];\ (( UINT8 *)(void *)(d))[7] = ((UINT8 *)(void *)(s))[0];} #else /* * Macros for little-endian machines */ #ifndef ACPI_MISALIGNMENT_NOT_SUPPORTED /* The hardware supports unaligned transfers, just do the little-endian move */ /* 16-bit source, 16/32/64 destination */ #define ACPI_MOVE_16_TO_16(d, s) *(UINT16 *)(void *)(d) = *(UINT16 *)(void *)(s) #define ACPI_MOVE_16_TO_32(d, s) *(UINT32 *)(void *)(d) = *(UINT16 *)(void *)(s) #define ACPI_MOVE_16_TO_64(d, s) *(UINT64 *)(void *)(d) = *(UINT16 *)(void *)(s) /* 32-bit source, 16/32/64 destination */ #define ACPI_MOVE_32_TO_16(d, s) ACPI_MOVE_16_TO_16(d, s) /* Truncate to 16 */ #define ACPI_MOVE_32_TO_32(d, s) *(UINT32 *)(void *)(d) = *(UINT32 *)(void *)(s) #define ACPI_MOVE_32_TO_64(d, s) *(UINT64 *)(void *)(d) = *(UINT32 *)(void *)(s) /* 64-bit source, 16/32/64 destination */ #define ACPI_MOVE_64_TO_16(d, s) ACPI_MOVE_16_TO_16(d, s) /* Truncate to 16 */ #define ACPI_MOVE_64_TO_32(d, s) ACPI_MOVE_32_TO_32(d, s) /* Truncate to 32 */ #define ACPI_MOVE_64_TO_64(d, s) *(UINT64 *)(void *)(d) = *(UINT64 *)(void *)(s) #else /* * The hardware does not support unaligned transfers. We must move the * data one byte at a time. These macros work whether the source or * the destination (or both) is/are unaligned. (Little-endian move) */ /* 16-bit source, 16/32/64 destination */ #define ACPI_MOVE_16_TO_16(d, s) {(( UINT8 *)(void *)(d))[0] = ((UINT8 *)(void *)(s))[0];\ (( UINT8 *)(void *)(d))[1] = ((UINT8 *)(void *)(s))[1];} #define ACPI_MOVE_16_TO_32(d, s) {(*(UINT32 *)(void *)(d)) = 0; ACPI_MOVE_16_TO_16(d, s);} #define ACPI_MOVE_16_TO_64(d, s) {(*(UINT64 *)(void *)(d)) = 0; ACPI_MOVE_16_TO_16(d, s);} /* 32-bit source, 16/32/64 destination */ #define ACPI_MOVE_32_TO_16(d, s) ACPI_MOVE_16_TO_16(d, s) /* Truncate to 16 */ #define ACPI_MOVE_32_TO_32(d, s) {(( UINT8 *)(void *)(d))[0] = ((UINT8 *)(void *)(s))[0];\ (( UINT8 *)(void *)(d))[1] = ((UINT8 *)(void *)(s))[1];\ (( UINT8 *)(void *)(d))[2] = ((UINT8 *)(void *)(s))[2];\ (( UINT8 *)(void *)(d))[3] = ((UINT8 *)(void *)(s))[3];} #define ACPI_MOVE_32_TO_64(d, s) {(*(UINT64 *)(void *)(d)) = 0; ACPI_MOVE_32_TO_32(d, s);} /* 64-bit source, 16/32/64 destination */ #define ACPI_MOVE_64_TO_16(d, s) ACPI_MOVE_16_TO_16(d, s) /* Truncate to 16 */ #define ACPI_MOVE_64_TO_32(d, s) ACPI_MOVE_32_TO_32(d, s) /* Truncate to 32 */ #define ACPI_MOVE_64_TO_64(d, s) {(( UINT8 *)(void *)(d))[0] = ((UINT8 *)(void *)(s))[0];\ (( UINT8 *)(void *)(d))[1] = ((UINT8 *)(void *)(s))[1];\ (( UINT8 *)(void *)(d))[2] = ((UINT8 *)(void *)(s))[2];\ (( UINT8 *)(void *)(d))[3] = ((UINT8 *)(void *)(s))[3];\ (( UINT8 *)(void *)(d))[4] = ((UINT8 *)(void *)(s))[4];\ (( UINT8 *)(void *)(d))[5] = ((UINT8 *)(void *)(s))[5];\ (( UINT8 *)(void *)(d))[6] = ((UINT8 *)(void *)(s))[6];\ (( UINT8 *)(void *)(d))[7] = ((UINT8 *)(void *)(s))[7];} #endif #endif /* * Fast power-of-two math macros for non-optimized compilers */ #define _ACPI_DIV(value, PowerOf2) ((UINT32) ((value) >> (PowerOf2))) #define _ACPI_MUL(value, PowerOf2) ((UINT32) ((value) << (PowerOf2))) #define _ACPI_MOD(value, Divisor) ((UINT32) ((value) & ((Divisor) -1))) #define ACPI_DIV_2(a) _ACPI_DIV(a, 1) #define ACPI_MUL_2(a) _ACPI_MUL(a, 1) #define ACPI_MOD_2(a) _ACPI_MOD(a, 2) #define ACPI_DIV_4(a) _ACPI_DIV(a, 2) #define ACPI_MUL_4(a) _ACPI_MUL(a, 2) #define ACPI_MOD_4(a) _ACPI_MOD(a, 4) #define ACPI_DIV_8(a) _ACPI_DIV(a, 3) #define ACPI_MUL_8(a) _ACPI_MUL(a, 3) #define ACPI_MOD_8(a) _ACPI_MOD(a, 8) #define ACPI_DIV_16(a) _ACPI_DIV(a, 4) #define ACPI_MUL_16(a) _ACPI_MUL(a, 4) #define ACPI_MOD_16(a) _ACPI_MOD(a, 16) #define ACPI_DIV_32(a) _ACPI_DIV(a, 5) #define ACPI_MUL_32(a) _ACPI_MUL(a, 5) #define ACPI_MOD_32(a) _ACPI_MOD(a, 32) /* * Rounding macros (Power of two boundaries only) */ #define ACPI_ROUND_DOWN(value, boundary) (((ACPI_SIZE)(value)) & \ (~(((ACPI_SIZE) boundary)-1))) #define ACPI_ROUND_UP(value, boundary) ((((ACPI_SIZE)(value)) + \ (((ACPI_SIZE) boundary)-1)) & \ (~(((ACPI_SIZE) boundary)-1))) /* Note: sizeof(ACPI_SIZE) evaluates to either 4 or 8 (32- vs 64-bit mode) */ #define ACPI_ROUND_DOWN_TO_32BIT(a) ACPI_ROUND_DOWN(a, 4) #define ACPI_ROUND_DOWN_TO_64BIT(a) ACPI_ROUND_DOWN(a, 8) #define ACPI_ROUND_DOWN_TO_NATIVE_WORD(a) ACPI_ROUND_DOWN(a, sizeof(ACPI_SIZE)) #define ACPI_ROUND_UP_TO_32BIT(a) ACPI_ROUND_UP(a, 4) #define ACPI_ROUND_UP_TO_64BIT(a) ACPI_ROUND_UP(a, 8) #define ACPI_ROUND_UP_TO_NATIVE_WORD(a) ACPI_ROUND_UP(a, sizeof(ACPI_SIZE)) #define ACPI_ROUND_BITS_UP_TO_BYTES(a) ACPI_DIV_8((a) + 7) #define ACPI_ROUND_BITS_DOWN_TO_BYTES(a) ACPI_DIV_8((a)) #define ACPI_ROUND_UP_TO_1K(a) (((a) + 1023) >> 10) /* Generic (non-power-of-two) rounding */ #define ACPI_ROUND_UP_TO(value, boundary) (((value) + ((boundary)-1)) / (boundary)) #define ACPI_IS_MISALIGNED(value) (((ACPI_SIZE) value) & (sizeof(ACPI_SIZE)-1)) /* * Bitmask creation * Bit positions start at zero. * MASK_BITS_ABOVE creates a mask starting AT the position and above * MASK_BITS_BELOW creates a mask starting one bit BELOW the position */ #define ACPI_MASK_BITS_ABOVE(position) (~((ACPI_UINT64_MAX) << ((UINT32) (position)))) #define ACPI_MASK_BITS_BELOW(position) ((ACPI_UINT64_MAX) << ((UINT32) (position))) /* Bitfields within ACPI registers */ #define ACPI_REGISTER_PREPARE_BITS(Val, Pos, Mask) \ ((Val << Pos) & Mask) #define ACPI_REGISTER_INSERT_VALUE(Reg, Pos, Mask, Val) \ Reg = (Reg & (~(Mask))) | ACPI_REGISTER_PREPARE_BITS(Val, Pos, Mask) #define ACPI_INSERT_BITS(Target, Mask, Source) \ Target = ((Target & (~(Mask))) | (Source & Mask)) /* Generic bitfield macros and masks */ #define ACPI_GET_BITS(SourcePtr, Position, Mask) \ ((*SourcePtr >> Position) & Mask) #define ACPI_SET_BITS(TargetPtr, Position, Mask, Value) \ (*TargetPtr |= ((Value & Mask) << Position)) #define ACPI_1BIT_MASK 0x00000001 #define ACPI_2BIT_MASK 0x00000003 #define ACPI_3BIT_MASK 0x00000007 #define ACPI_4BIT_MASK 0x0000000F #define ACPI_5BIT_MASK 0x0000001F #define ACPI_6BIT_MASK 0x0000003F #define ACPI_7BIT_MASK 0x0000007F #define ACPI_8BIT_MASK 0x000000FF #define ACPI_16BIT_MASK 0x0000FFFF #define ACPI_24BIT_MASK 0x00FFFFFF /* Macros to extract flag bits from position zero */ #define ACPI_GET_1BIT_FLAG(Value) ((Value) & ACPI_1BIT_MASK) #define ACPI_GET_2BIT_FLAG(Value) ((Value) & ACPI_2BIT_MASK) #define ACPI_GET_3BIT_FLAG(Value) ((Value) & ACPI_3BIT_MASK) #define ACPI_GET_4BIT_FLAG(Value) ((Value) & ACPI_4BIT_MASK) /* Macros to extract flag bits from position one and above */ #define ACPI_EXTRACT_1BIT_FLAG(Field, Position) (ACPI_GET_1BIT_FLAG ((Field) >> Position)) #define ACPI_EXTRACT_2BIT_FLAG(Field, Position) (ACPI_GET_2BIT_FLAG ((Field) >> Position)) #define ACPI_EXTRACT_3BIT_FLAG(Field, Position) (ACPI_GET_3BIT_FLAG ((Field) >> Position)) #define ACPI_EXTRACT_4BIT_FLAG(Field, Position) (ACPI_GET_4BIT_FLAG ((Field) >> Position)) /* ACPI Pathname helpers */ #define ACPI_IS_ROOT_PREFIX(c) ((c) == (UINT8) 0x5C) /* Backslash */ #define ACPI_IS_PARENT_PREFIX(c) ((c) == (UINT8) 0x5E) /* Carat */ #define ACPI_IS_PATH_SEPARATOR(c) ((c) == (UINT8) 0x2E) /* Period (dot) */ /* * An object of type ACPI_NAMESPACE_NODE can appear in some contexts * where a pointer to an object of type ACPI_OPERAND_OBJECT can also * appear. This macro is used to distinguish them. * * The "DescriptorType" field is the second field in both structures. */ #define ACPI_GET_DESCRIPTOR_PTR(d) (((ACPI_DESCRIPTOR *)(void *)(d))->Common.CommonPointer) #define ACPI_SET_DESCRIPTOR_PTR(d, p) (((ACPI_DESCRIPTOR *)(void *)(d))->Common.CommonPointer = (p)) #define ACPI_GET_DESCRIPTOR_TYPE(d) (((ACPI_DESCRIPTOR *)(void *)(d))->Common.DescriptorType) #define ACPI_SET_DESCRIPTOR_TYPE(d, t) (((ACPI_DESCRIPTOR *)(void *)(d))->Common.DescriptorType = (t)) /* * Macros for the master AML opcode table */ #if defined (ACPI_DISASSEMBLER) || defined (ACPI_DEBUG_OUTPUT) #define ACPI_OP(Name, PArgs, IArgs, ObjType, Class, Type, Flags) \ {Name, (UINT32)(PArgs), (UINT32)(IArgs), (UINT32)(Flags), ObjType, Class, Type} #else #define ACPI_OP(Name, PArgs, IArgs, ObjType, Class, Type, Flags) \ {(UINT32)(PArgs), (UINT32)(IArgs), (UINT32)(Flags), ObjType, Class, Type} #endif #define ARG_TYPE_WIDTH 5 #define ARG_1(x) ((UINT32)(x)) #define ARG_2(x) ((UINT32)(x) << (1 * ARG_TYPE_WIDTH)) #define ARG_3(x) ((UINT32)(x) << (2 * ARG_TYPE_WIDTH)) #define ARG_4(x) ((UINT32)(x) << (3 * ARG_TYPE_WIDTH)) #define ARG_5(x) ((UINT32)(x) << (4 * ARG_TYPE_WIDTH)) #define ARG_6(x) ((UINT32)(x) << (5 * ARG_TYPE_WIDTH)) #define ARGI_LIST1(a) (ARG_1(a)) #define ARGI_LIST2(a, b) (ARG_1(b)|ARG_2(a)) #define ARGI_LIST3(a, b, c) (ARG_1(c)|ARG_2(b)|ARG_3(a)) #define ARGI_LIST4(a, b, c, d) (ARG_1(d)|ARG_2(c)|ARG_3(b)|ARG_4(a)) #define ARGI_LIST5(a, b, c, d, e) (ARG_1(e)|ARG_2(d)|ARG_3(c)|ARG_4(b)|ARG_5(a)) #define ARGI_LIST6(a, b, c, d, e, f) (ARG_1(f)|ARG_2(e)|ARG_3(d)|ARG_4(c)|ARG_5(b)|ARG_6(a)) #define ARGP_LIST1(a) (ARG_1(a)) #define ARGP_LIST2(a, b) (ARG_1(a)|ARG_2(b)) #define ARGP_LIST3(a, b, c) (ARG_1(a)|ARG_2(b)|ARG_3(c)) #define ARGP_LIST4(a, b, c, d) (ARG_1(a)|ARG_2(b)|ARG_3(c)|ARG_4(d)) #define ARGP_LIST5(a, b, c, d, e) (ARG_1(a)|ARG_2(b)|ARG_3(c)|ARG_4(d)|ARG_5(e)) #define ARGP_LIST6(a, b, c, d, e, f) (ARG_1(a)|ARG_2(b)|ARG_3(c)|ARG_4(d)|ARG_5(e)|ARG_6(f)) #define GET_CURRENT_ARG_TYPE(List) (List & ((UINT32) 0x1F)) #define INCREMENT_ARG_LIST(List) (List >>= ((UINT32) ARG_TYPE_WIDTH)) /* * Ascii error messages can be configured out */ #ifndef ACPI_NO_ERROR_MESSAGES /* * Error reporting. Callers module and line number are inserted by AE_INFO, * the plist contains a set of parens to allow variable-length lists. * These macros are used for both the debug and non-debug versions of the code. */ #define ACPI_ERROR_NAMESPACE(s, e) AcpiUtNamespaceError (AE_INFO, s, e); #define ACPI_ERROR_METHOD(s, n, p, e) AcpiUtMethodError (AE_INFO, s, n, p, e); #define ACPI_WARN_PREDEFINED(plist) AcpiUtPredefinedWarning plist #define ACPI_INFO_PREDEFINED(plist) AcpiUtPredefinedInfo plist #define ACPI_BIOS_ERROR_PREDEFINED(plist) AcpiUtPredefinedBiosError plist #else /* No error messages */ #define ACPI_ERROR_NAMESPACE(s, e) #define ACPI_ERROR_METHOD(s, n, p, e) #define ACPI_WARN_PREDEFINED(plist) #define ACPI_INFO_PREDEFINED(plist) #define ACPI_BIOS_ERROR_PREDEFINED(plist) #endif /* ACPI_NO_ERROR_MESSAGES */ #if (!ACPI_REDUCED_HARDWARE) #define ACPI_HW_OPTIONAL_FUNCTION(addr) addr #else #define ACPI_HW_OPTIONAL_FUNCTION(addr) NULL #endif /* * Some code only gets executed when the debugger is built in. * Note that this is entirely independent of whether the * DEBUG_PRINT stuff (set by ACPI_DEBUG_OUTPUT) is on, or not. */ #ifdef ACPI_DEBUGGER #define ACPI_DEBUGGER_EXEC(a) a #else #define ACPI_DEBUGGER_EXEC(a) #endif /* * Macros used for ACPICA utilities only */ /* Generate a UUID */ #define ACPI_INIT_UUID(a, b, c, d0, d1, d2, d3, d4, d5, d6, d7) \ (a) & 0xFF, ((a) >> 8) & 0xFF, ((a) >> 16) & 0xFF, ((a) >> 24) & 0xFF, \ (b) & 0xFF, ((b) >> 8) & 0xFF, \ (c) & 0xFF, ((c) >> 8) & 0xFF, \ (d0), (d1), (d2), (d3), (d4), (d5), (d6), (d7) #define ACPI_IS_OCTAL_DIGIT(d) (((char)(d) >= '0') && ((char)(d) <= '7')) #endif /* ACMACROS_H */ src/acpica/source/include/acnames.h000066400000000000000000000172231231470457100176010ustar00rootroot00000000000000/****************************************************************************** * * Name: acnames.h - Global names and strings * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #ifndef __ACNAMES_H__ #define __ACNAMES_H__ /* Method names - these methods can appear anywhere in the namespace */ #define METHOD_NAME__ADR "_ADR" #define METHOD_NAME__AEI "_AEI" #define METHOD_NAME__BBN "_BBN" #define METHOD_NAME__CBA "_CBA" #define METHOD_NAME__CID "_CID" #define METHOD_NAME__CRS "_CRS" #define METHOD_NAME__HID "_HID" #define METHOD_NAME__INI "_INI" #define METHOD_NAME__PLD "_PLD" #define METHOD_NAME__PRS "_PRS" #define METHOD_NAME__PRT "_PRT" #define METHOD_NAME__PRW "_PRW" #define METHOD_NAME__REG "_REG" #define METHOD_NAME__SB_ "_SB_" #define METHOD_NAME__SEG "_SEG" #define METHOD_NAME__SRS "_SRS" #define METHOD_NAME__STA "_STA" #define METHOD_NAME__SUB "_SUB" #define METHOD_NAME__UID "_UID" /* Method names - these methods must appear at the namespace root */ #define METHOD_PATHNAME__PTS "\\_PTS" #define METHOD_PATHNAME__SST "\\_SI._SST" #define METHOD_PATHNAME__WAK "\\_WAK" /* Definitions of the predefined namespace names */ #define ACPI_UNKNOWN_NAME (UINT32) 0x3F3F3F3F /* Unknown name is "????" */ #define ACPI_ROOT_NAME (UINT32) 0x5F5F5F5C /* Root name is "\___" */ #define ACPI_PREFIX_MIXED (UINT32) 0x69706341 /* "Acpi" */ #define ACPI_PREFIX_LOWER (UINT32) 0x69706361 /* "acpi" */ #define ACPI_NS_ROOT_PATH "\\" #endif /* __ACNAMES_H__ */ src/acpica/source/include/acnamesp.h000066400000000000000000000423151231470457100177610ustar00rootroot00000000000000/****************************************************************************** * * Name: acnamesp.h - Namespace subcomponent prototypes and defines * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #ifndef __ACNAMESP_H__ #define __ACNAMESP_H__ /* To search the entire name space, pass this as SearchBase */ #define ACPI_NS_ALL ((ACPI_HANDLE)0) /* * Elements of AcpiNsProperties are bit significant * and should be one-to-one with values of ACPI_OBJECT_TYPE */ #define ACPI_NS_NORMAL 0 #define ACPI_NS_NEWSCOPE 1 /* a definition of this type opens a name scope */ #define ACPI_NS_LOCAL 2 /* suppress search of enclosing scopes */ /* Flags for AcpiNsLookup, AcpiNsSearchAndEnter */ #define ACPI_NS_NO_UPSEARCH 0 #define ACPI_NS_SEARCH_PARENT 0x01 #define ACPI_NS_DONT_OPEN_SCOPE 0x02 #define ACPI_NS_NO_PEER_SEARCH 0x04 #define ACPI_NS_ERROR_IF_FOUND 0x08 #define ACPI_NS_PREFIX_IS_SCOPE 0x10 #define ACPI_NS_EXTERNAL 0x20 #define ACPI_NS_TEMPORARY 0x40 /* Flags for AcpiNsWalkNamespace */ #define ACPI_NS_WALK_NO_UNLOCK 0 #define ACPI_NS_WALK_UNLOCK 0x01 #define ACPI_NS_WALK_TEMP_NODES 0x02 /* Object is not a package element */ #define ACPI_NOT_PACKAGE_ELEMENT ACPI_UINT32_MAX /* Always emit warning message, not dependent on node flags */ #define ACPI_WARN_ALWAYS 0 /* * nsinit - Namespace initialization */ ACPI_STATUS AcpiNsInitializeObjects ( void); ACPI_STATUS AcpiNsInitializeDevices ( void); /* * nsload - Namespace loading */ ACPI_STATUS AcpiNsLoadNamespace ( void); ACPI_STATUS AcpiNsLoadTable ( UINT32 TableIndex, ACPI_NAMESPACE_NODE *Node); /* * nswalk - walk the namespace */ ACPI_STATUS AcpiNsWalkNamespace ( ACPI_OBJECT_TYPE Type, ACPI_HANDLE StartObject, UINT32 MaxDepth, UINT32 Flags, ACPI_WALK_CALLBACK DescendingCallback, ACPI_WALK_CALLBACK AscendingCallback, void *Context, void **ReturnValue); ACPI_NAMESPACE_NODE * AcpiNsGetNextNode ( ACPI_NAMESPACE_NODE *Parent, ACPI_NAMESPACE_NODE *Child); ACPI_NAMESPACE_NODE * AcpiNsGetNextNodeTyped ( ACPI_OBJECT_TYPE Type, ACPI_NAMESPACE_NODE *Parent, ACPI_NAMESPACE_NODE *Child); /* * nsparse - table parsing */ ACPI_STATUS AcpiNsParseTable ( UINT32 TableIndex, ACPI_NAMESPACE_NODE *StartNode); ACPI_STATUS AcpiNsOneCompleteParse ( UINT32 PassNumber, UINT32 TableIndex, ACPI_NAMESPACE_NODE *StartNode); /* * nsaccess - Top-level namespace access */ ACPI_STATUS AcpiNsRootInitialize ( void); ACPI_STATUS AcpiNsLookup ( ACPI_GENERIC_STATE *ScopeInfo, char *Name, ACPI_OBJECT_TYPE Type, ACPI_INTERPRETER_MODE InterpreterMode, UINT32 Flags, ACPI_WALK_STATE *WalkState, ACPI_NAMESPACE_NODE **RetNode); /* * nsalloc - Named object allocation/deallocation */ ACPI_NAMESPACE_NODE * AcpiNsCreateNode ( UINT32 Name); void AcpiNsDeleteNode ( ACPI_NAMESPACE_NODE *Node); void AcpiNsRemoveNode ( ACPI_NAMESPACE_NODE *Node); void AcpiNsDeleteNamespaceSubtree ( ACPI_NAMESPACE_NODE *ParentHandle); void AcpiNsDeleteNamespaceByOwner ( ACPI_OWNER_ID OwnerId); void AcpiNsDetachObject ( ACPI_NAMESPACE_NODE *Node); void AcpiNsDeleteChildren ( ACPI_NAMESPACE_NODE *Parent); int AcpiNsCompareNames ( char *Name1, char *Name2); /* * nsconvert - Dynamic object conversion routines */ ACPI_STATUS AcpiNsConvertToInteger ( ACPI_OPERAND_OBJECT *OriginalObject, ACPI_OPERAND_OBJECT **ReturnObject); ACPI_STATUS AcpiNsConvertToString ( ACPI_OPERAND_OBJECT *OriginalObject, ACPI_OPERAND_OBJECT **ReturnObject); ACPI_STATUS AcpiNsConvertToBuffer ( ACPI_OPERAND_OBJECT *OriginalObject, ACPI_OPERAND_OBJECT **ReturnObject); ACPI_STATUS AcpiNsConvertToUnicode ( ACPI_OPERAND_OBJECT *OriginalObject, ACPI_OPERAND_OBJECT **ReturnObject); ACPI_STATUS AcpiNsConvertToResource ( ACPI_OPERAND_OBJECT *OriginalObject, ACPI_OPERAND_OBJECT **ReturnObject); /* * nsdump - Namespace dump/print utilities */ void AcpiNsDumpTables ( ACPI_HANDLE SearchBase, UINT32 MaxDepth); void AcpiNsDumpEntry ( ACPI_HANDLE Handle, UINT32 DebugLevel); void AcpiNsDumpPathname ( ACPI_HANDLE Handle, char *Msg, UINT32 Level, UINT32 Component); void AcpiNsPrintPathname ( UINT32 NumSegments, char *Pathname); ACPI_STATUS AcpiNsDumpOneObject ( ACPI_HANDLE ObjHandle, UINT32 Level, void *Context, void **ReturnValue); void AcpiNsDumpObjects ( ACPI_OBJECT_TYPE Type, UINT8 DisplayType, UINT32 MaxDepth, ACPI_OWNER_ID OwnerId, ACPI_HANDLE StartHandle); void AcpiNsDumpObjectPaths ( ACPI_OBJECT_TYPE Type, UINT8 DisplayType, UINT32 MaxDepth, ACPI_OWNER_ID OwnerId, ACPI_HANDLE StartHandle); /* * nseval - Namespace evaluation functions */ ACPI_STATUS AcpiNsEvaluate ( ACPI_EVALUATE_INFO *Info); void AcpiNsExecModuleCodeList ( void); /* * nsarguments - Argument count/type checking for predefined/reserved names */ void AcpiNsCheckArgumentCount ( char *Pathname, ACPI_NAMESPACE_NODE *Node, UINT32 UserParamCount, const ACPI_PREDEFINED_INFO *Info); void AcpiNsCheckAcpiCompliance ( char *Pathname, ACPI_NAMESPACE_NODE *Node, const ACPI_PREDEFINED_INFO *Predefined); void AcpiNsCheckArgumentTypes ( ACPI_EVALUATE_INFO *Info); /* * nspredef - Return value checking for predefined/reserved names */ ACPI_STATUS AcpiNsCheckReturnValue ( ACPI_NAMESPACE_NODE *Node, ACPI_EVALUATE_INFO *Info, UINT32 UserParamCount, ACPI_STATUS ReturnStatus, ACPI_OPERAND_OBJECT **ReturnObject); ACPI_STATUS AcpiNsCheckObjectType ( ACPI_EVALUATE_INFO *Info, ACPI_OPERAND_OBJECT **ReturnObjectPtr, UINT32 ExpectedBtypes, UINT32 PackageIndex); /* * nsprepkg - Validation of predefined name packages */ ACPI_STATUS AcpiNsCheckPackage ( ACPI_EVALUATE_INFO *Info, ACPI_OPERAND_OBJECT **ReturnObjectPtr); /* * nsnames - Name and Scope manipulation */ UINT32 AcpiNsOpensScope ( ACPI_OBJECT_TYPE Type); ACPI_STATUS AcpiNsBuildExternalPath ( ACPI_NAMESPACE_NODE *Node, ACPI_SIZE Size, char *NameBuffer); char * AcpiNsGetExternalPathname ( ACPI_NAMESPACE_NODE *Node); char * AcpiNsNameOfCurrentScope ( ACPI_WALK_STATE *WalkState); ACPI_STATUS AcpiNsHandleToPathname ( ACPI_HANDLE TargetHandle, ACPI_BUFFER *Buffer); BOOLEAN AcpiNsPatternMatch ( ACPI_NAMESPACE_NODE *ObjNode, char *SearchFor); ACPI_STATUS AcpiNsGetNode ( ACPI_NAMESPACE_NODE *PrefixNode, const char *ExternalPathname, UINT32 Flags, ACPI_NAMESPACE_NODE **OutNode); ACPI_SIZE AcpiNsGetPathnameLength ( ACPI_NAMESPACE_NODE *Node); /* * nsobject - Object management for namespace nodes */ ACPI_STATUS AcpiNsAttachObject ( ACPI_NAMESPACE_NODE *Node, ACPI_OPERAND_OBJECT *Object, ACPI_OBJECT_TYPE Type); ACPI_OPERAND_OBJECT * AcpiNsGetAttachedObject ( ACPI_NAMESPACE_NODE *Node); ACPI_OPERAND_OBJECT * AcpiNsGetSecondaryObject ( ACPI_OPERAND_OBJECT *ObjDesc); ACPI_STATUS AcpiNsAttachData ( ACPI_NAMESPACE_NODE *Node, ACPI_OBJECT_HANDLER Handler, void *Data); ACPI_STATUS AcpiNsDetachData ( ACPI_NAMESPACE_NODE *Node, ACPI_OBJECT_HANDLER Handler); ACPI_STATUS AcpiNsGetAttachedData ( ACPI_NAMESPACE_NODE *Node, ACPI_OBJECT_HANDLER Handler, void **Data); /* * nsrepair - General return object repair for all * predefined methods/objects */ ACPI_STATUS AcpiNsSimpleRepair ( ACPI_EVALUATE_INFO *Info, UINT32 ExpectedBtypes, UINT32 PackageIndex, ACPI_OPERAND_OBJECT **ReturnObjectPtr); ACPI_STATUS AcpiNsWrapWithPackage ( ACPI_EVALUATE_INFO *Info, ACPI_OPERAND_OBJECT *OriginalObject, ACPI_OPERAND_OBJECT **ObjDescPtr); ACPI_STATUS AcpiNsRepairNullElement ( ACPI_EVALUATE_INFO *Info, UINT32 ExpectedBtypes, UINT32 PackageIndex, ACPI_OPERAND_OBJECT **ReturnObjectPtr); void AcpiNsRemoveNullElements ( ACPI_EVALUATE_INFO *Info, UINT8 PackageType, ACPI_OPERAND_OBJECT *ObjDesc); /* * nsrepair2 - Return object repair for specific * predefined methods/objects */ ACPI_STATUS AcpiNsComplexRepairs ( ACPI_EVALUATE_INFO *Info, ACPI_NAMESPACE_NODE *Node, ACPI_STATUS ValidateStatus, ACPI_OPERAND_OBJECT **ReturnObjectPtr); /* * nssearch - Namespace searching and entry */ ACPI_STATUS AcpiNsSearchAndEnter ( UINT32 EntryName, ACPI_WALK_STATE *WalkState, ACPI_NAMESPACE_NODE *Node, ACPI_INTERPRETER_MODE InterpreterMode, ACPI_OBJECT_TYPE Type, UINT32 Flags, ACPI_NAMESPACE_NODE **RetNode); ACPI_STATUS AcpiNsSearchOneScope ( UINT32 EntryName, ACPI_NAMESPACE_NODE *Node, ACPI_OBJECT_TYPE Type, ACPI_NAMESPACE_NODE **RetNode); void AcpiNsInstallNode ( ACPI_WALK_STATE *WalkState, ACPI_NAMESPACE_NODE *ParentNode, ACPI_NAMESPACE_NODE *Node, ACPI_OBJECT_TYPE Type); /* * nsutils - Utility functions */ ACPI_OBJECT_TYPE AcpiNsGetType ( ACPI_NAMESPACE_NODE *Node); UINT32 AcpiNsLocal ( ACPI_OBJECT_TYPE Type); void AcpiNsPrintNodePathname ( ACPI_NAMESPACE_NODE *Node, const char *Msg); ACPI_STATUS AcpiNsBuildInternalName ( ACPI_NAMESTRING_INFO *Info); void AcpiNsGetInternalNameLength ( ACPI_NAMESTRING_INFO *Info); ACPI_STATUS AcpiNsInternalizeName ( const char *DottedName, char **ConvertedName); ACPI_STATUS AcpiNsExternalizeName ( UINT32 InternalNameLength, const char *InternalName, UINT32 *ConvertedNameLength, char **ConvertedName); ACPI_NAMESPACE_NODE * AcpiNsValidateHandle ( ACPI_HANDLE Handle); void AcpiNsTerminate ( void); #endif /* __ACNAMESP_H__ */ src/acpica/source/include/acobject.h000066400000000000000000000617031231470457100177460ustar00rootroot00000000000000/****************************************************************************** * * Name: acobject.h - Definition of ACPI_OPERAND_OBJECT (Internal object only) * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #ifndef _ACOBJECT_H #define _ACOBJECT_H /* acpisrc:StructDefs -- for acpisrc conversion */ /* * The ACPI_OPERAND_OBJECT is used to pass AML operands from the dispatcher * to the interpreter, and to keep track of the various handlers such as * address space handlers and notify handlers. The object is a constant * size in order to allow it to be cached and reused. * * Note: The object is optimized to be aligned and will not work if it is * byte-packed. */ #if ACPI_MACHINE_WIDTH == 64 #pragma pack(8) #else #pragma pack(4) #endif /******************************************************************************* * * Common Descriptors * ******************************************************************************/ /* * Common area for all objects. * * DescriptorType is used to differentiate between internal descriptors, and * must be in the same place across all descriptors * * Note: The DescriptorType and Type fields must appear in the identical * position in both the ACPI_NAMESPACE_NODE and ACPI_OPERAND_OBJECT * structures. */ #define ACPI_OBJECT_COMMON_HEADER \ union acpi_operand_object *NextObject; /* Objects linked to parent NS node */\ UINT8 DescriptorType; /* To differentiate various internal objs */\ UINT8 Type; /* ACPI_OBJECT_TYPE */\ UINT16 ReferenceCount; /* For object deletion management */\ UINT8 Flags; /* * Note: There are 3 bytes available here before the * next natural alignment boundary (for both 32/64 cases) */ /* Values for Flag byte above */ #define AOPOBJ_AML_CONSTANT 0x01 /* Integer is an AML constant */ #define AOPOBJ_STATIC_POINTER 0x02 /* Data is part of an ACPI table, don't delete */ #define AOPOBJ_DATA_VALID 0x04 /* Object is initialized and data is valid */ #define AOPOBJ_OBJECT_INITIALIZED 0x08 /* Region is initialized, _REG was run */ #define AOPOBJ_SETUP_COMPLETE 0x10 /* Region setup is complete */ #define AOPOBJ_INVALID 0x20 /* Host OS won't allow a Region address */ /****************************************************************************** * * Basic data types * *****************************************************************************/ typedef struct acpi_object_common { ACPI_OBJECT_COMMON_HEADER } ACPI_OBJECT_COMMON; typedef struct acpi_object_integer { ACPI_OBJECT_COMMON_HEADER UINT8 Fill[3]; /* Prevent warning on some compilers */ UINT64 Value; } ACPI_OBJECT_INTEGER; /* * Note: The String and Buffer object must be identical through the * pointer and length elements. There is code that depends on this. * * Fields common to both Strings and Buffers */ #define ACPI_COMMON_BUFFER_INFO(_Type) \ _Type *Pointer; \ UINT32 Length; typedef struct acpi_object_string /* Null terminated, ASCII characters only */ { ACPI_OBJECT_COMMON_HEADER ACPI_COMMON_BUFFER_INFO (char) /* String in AML stream or allocated string */ } ACPI_OBJECT_STRING; typedef struct acpi_object_buffer { ACPI_OBJECT_COMMON_HEADER ACPI_COMMON_BUFFER_INFO (UINT8) /* Buffer in AML stream or allocated buffer */ UINT32 AmlLength; UINT8 *AmlStart; ACPI_NAMESPACE_NODE *Node; /* Link back to parent node */ } ACPI_OBJECT_BUFFER; typedef struct acpi_object_package { ACPI_OBJECT_COMMON_HEADER ACPI_NAMESPACE_NODE *Node; /* Link back to parent node */ union acpi_operand_object **Elements; /* Array of pointers to AcpiObjects */ UINT8 *AmlStart; UINT32 AmlLength; UINT32 Count; /* # of elements in package */ } ACPI_OBJECT_PACKAGE; /****************************************************************************** * * Complex data types * *****************************************************************************/ typedef struct acpi_object_event { ACPI_OBJECT_COMMON_HEADER ACPI_SEMAPHORE OsSemaphore; /* Actual OS synchronization object */ } ACPI_OBJECT_EVENT; typedef struct acpi_object_mutex { ACPI_OBJECT_COMMON_HEADER UINT8 SyncLevel; /* 0-15, specified in Mutex() call */ UINT16 AcquisitionDepth; /* Allow multiple Acquires, same thread */ ACPI_MUTEX OsMutex; /* Actual OS synchronization object */ ACPI_THREAD_ID ThreadId; /* Current owner of the mutex */ struct acpi_thread_state *OwnerThread; /* Current owner of the mutex */ union acpi_operand_object *Prev; /* Link for list of acquired mutexes */ union acpi_operand_object *Next; /* Link for list of acquired mutexes */ ACPI_NAMESPACE_NODE *Node; /* Containing namespace node */ UINT8 OriginalSyncLevel; /* Owner's original sync level (0-15) */ } ACPI_OBJECT_MUTEX; typedef struct acpi_object_region { ACPI_OBJECT_COMMON_HEADER UINT8 SpaceId; ACPI_NAMESPACE_NODE *Node; /* Containing namespace node */ union acpi_operand_object *Handler; /* Handler for region access */ union acpi_operand_object *Next; ACPI_PHYSICAL_ADDRESS Address; UINT32 Length; } ACPI_OBJECT_REGION; typedef struct acpi_object_method { ACPI_OBJECT_COMMON_HEADER UINT8 InfoFlags; UINT8 ParamCount; UINT8 SyncLevel; union acpi_operand_object *Mutex; UINT8 *AmlStart; union { ACPI_INTERNAL_METHOD Implementation; union acpi_operand_object *Handler; } Dispatch; UINT32 AmlLength; UINT8 ThreadCount; ACPI_OWNER_ID OwnerId; } ACPI_OBJECT_METHOD; /* Flags for InfoFlags field above */ #define ACPI_METHOD_MODULE_LEVEL 0x01 /* Method is actually module-level code */ #define ACPI_METHOD_INTERNAL_ONLY 0x02 /* Method is implemented internally (_OSI) */ #define ACPI_METHOD_SERIALIZED 0x04 /* Method is serialized */ #define ACPI_METHOD_SERIALIZED_PENDING 0x08 /* Method is to be marked serialized */ #define ACPI_METHOD_IGNORE_SYNC_LEVEL 0x10 /* Method was auto-serialized at table load time */ #define ACPI_METHOD_MODIFIED_NAMESPACE 0x20 /* Method modified the namespace */ /****************************************************************************** * * Objects that can be notified. All share a common NotifyInfo area. * *****************************************************************************/ /* * Common fields for objects that support ASL notifications */ #define ACPI_COMMON_NOTIFY_INFO \ union acpi_operand_object *NotifyList[2]; /* Handlers for system/device notifies */\ union acpi_operand_object *Handler; /* Handler for Address space */ typedef struct acpi_object_notify_common /* COMMON NOTIFY for POWER, PROCESSOR, DEVICE, and THERMAL */ { ACPI_OBJECT_COMMON_HEADER ACPI_COMMON_NOTIFY_INFO } ACPI_OBJECT_NOTIFY_COMMON; typedef struct acpi_object_device { ACPI_OBJECT_COMMON_HEADER ACPI_COMMON_NOTIFY_INFO ACPI_GPE_BLOCK_INFO *GpeBlock; } ACPI_OBJECT_DEVICE; typedef struct acpi_object_power_resource { ACPI_OBJECT_COMMON_HEADER ACPI_COMMON_NOTIFY_INFO UINT32 SystemLevel; UINT32 ResourceOrder; } ACPI_OBJECT_POWER_RESOURCE; typedef struct acpi_object_processor { ACPI_OBJECT_COMMON_HEADER /* The next two fields take advantage of the 3-byte space before NOTIFY_INFO */ UINT8 ProcId; UINT8 Length; ACPI_COMMON_NOTIFY_INFO ACPI_IO_ADDRESS Address; } ACPI_OBJECT_PROCESSOR; typedef struct acpi_object_thermal_zone { ACPI_OBJECT_COMMON_HEADER ACPI_COMMON_NOTIFY_INFO } ACPI_OBJECT_THERMAL_ZONE; /****************************************************************************** * * Fields. All share a common header/info field. * *****************************************************************************/ /* * Common bitfield for the field objects * "Field Datum" -- a datum from the actual field object * "Buffer Datum" -- a datum from a user buffer, read from or to be written to the field */ #define ACPI_COMMON_FIELD_INFO \ UINT8 FieldFlags; /* Access, update, and lock bits */\ UINT8 Attribute; /* From AccessAs keyword */\ UINT8 AccessByteWidth; /* Read/Write size in bytes */\ ACPI_NAMESPACE_NODE *Node; /* Link back to parent node */\ UINT32 BitLength; /* Length of field in bits */\ UINT32 BaseByteOffset; /* Byte offset within containing object */\ UINT32 Value; /* Value to store into the Bank or Index register */\ UINT8 StartFieldBitOffset;/* Bit offset within first field datum (0-63) */\ UINT8 AccessLength; /* For serial regions/fields */ typedef struct acpi_object_field_common /* COMMON FIELD (for BUFFER, REGION, BANK, and INDEX fields) */ { ACPI_OBJECT_COMMON_HEADER ACPI_COMMON_FIELD_INFO union acpi_operand_object *RegionObj; /* Parent Operation Region object (REGION/BANK fields only) */ } ACPI_OBJECT_FIELD_COMMON; typedef struct acpi_object_region_field { ACPI_OBJECT_COMMON_HEADER ACPI_COMMON_FIELD_INFO UINT16 ResourceLength; union acpi_operand_object *RegionObj; /* Containing OpRegion object */ UINT8 *ResourceBuffer; /* ResourceTemplate for serial regions/fields */ } ACPI_OBJECT_REGION_FIELD; typedef struct acpi_object_bank_field { ACPI_OBJECT_COMMON_HEADER ACPI_COMMON_FIELD_INFO union acpi_operand_object *RegionObj; /* Containing OpRegion object */ union acpi_operand_object *BankObj; /* BankSelect Register object */ } ACPI_OBJECT_BANK_FIELD; typedef struct acpi_object_index_field { ACPI_OBJECT_COMMON_HEADER ACPI_COMMON_FIELD_INFO /* * No "RegionObj" pointer needed since the Index and Data registers * are each field definitions unto themselves. */ union acpi_operand_object *IndexObj; /* Index register */ union acpi_operand_object *DataObj; /* Data register */ } ACPI_OBJECT_INDEX_FIELD; /* The BufferField is different in that it is part of a Buffer, not an OpRegion */ typedef struct acpi_object_buffer_field { ACPI_OBJECT_COMMON_HEADER ACPI_COMMON_FIELD_INFO union acpi_operand_object *BufferObj; /* Containing Buffer object */ } ACPI_OBJECT_BUFFER_FIELD; /****************************************************************************** * * Objects for handlers * *****************************************************************************/ typedef struct acpi_object_notify_handler { ACPI_OBJECT_COMMON_HEADER ACPI_NAMESPACE_NODE *Node; /* Parent device */ UINT32 HandlerType; /* Type: Device/System/Both */ ACPI_NOTIFY_HANDLER Handler; /* Handler address */ void *Context; union acpi_operand_object *Next[2]; /* Device and System handler lists */ } ACPI_OBJECT_NOTIFY_HANDLER; typedef struct acpi_object_addr_handler { ACPI_OBJECT_COMMON_HEADER UINT8 SpaceId; UINT8 HandlerFlags; ACPI_ADR_SPACE_HANDLER Handler; ACPI_NAMESPACE_NODE *Node; /* Parent device */ void *Context; ACPI_ADR_SPACE_SETUP Setup; union acpi_operand_object *RegionList; /* Regions using this handler */ union acpi_operand_object *Next; } ACPI_OBJECT_ADDR_HANDLER; /* Flags for address handler (HandlerFlags) */ #define ACPI_ADDR_HANDLER_DEFAULT_INSTALLED 0x01 /****************************************************************************** * * Special internal objects * *****************************************************************************/ /* * The Reference object is used for these opcodes: * Arg[0-6], Local[0-7], IndexOp, NameOp, RefOfOp, LoadOp, LoadTableOp, DebugOp * The Reference.Class differentiates these types. */ typedef struct acpi_object_reference { ACPI_OBJECT_COMMON_HEADER UINT8 Class; /* Reference Class */ UINT8 TargetType; /* Used for Index Op */ UINT8 Reserved; void *Object; /* NameOp=>HANDLE to obj, IndexOp=>ACPI_OPERAND_OBJECT */ ACPI_NAMESPACE_NODE *Node; /* RefOf or Namepath */ union acpi_operand_object **Where; /* Target of Index */ UINT32 Value; /* Used for Local/Arg/Index/DdbHandle */ } ACPI_OBJECT_REFERENCE; /* Values for Reference.Class above */ typedef enum { ACPI_REFCLASS_LOCAL = 0, /* Method local */ ACPI_REFCLASS_ARG = 1, /* Method argument */ ACPI_REFCLASS_REFOF = 2, /* Result of RefOf() TBD: Split to Ref/Node and Ref/OperandObj? */ ACPI_REFCLASS_INDEX = 3, /* Result of Index() */ ACPI_REFCLASS_TABLE = 4, /* DdbHandle - Load(), LoadTable() */ ACPI_REFCLASS_NAME = 5, /* Reference to a named object */ ACPI_REFCLASS_DEBUG = 6, /* Debug object */ ACPI_REFCLASS_MAX = 6 } ACPI_REFERENCE_CLASSES; /* * Extra object is used as additional storage for types that * have AML code in their declarations (TermArgs) that must be * evaluated at run time. * * Currently: Region and FieldUnit types */ typedef struct acpi_object_extra { ACPI_OBJECT_COMMON_HEADER ACPI_NAMESPACE_NODE *Method_REG; /* _REG method for this region (if any) */ ACPI_NAMESPACE_NODE *ScopeNode; void *RegionContext; /* Region-specific data */ UINT8 *AmlStart; UINT32 AmlLength; } ACPI_OBJECT_EXTRA; /* Additional data that can be attached to namespace nodes */ typedef struct acpi_object_data { ACPI_OBJECT_COMMON_HEADER ACPI_OBJECT_HANDLER Handler; void *Pointer; } ACPI_OBJECT_DATA; /* Structure used when objects are cached for reuse */ typedef struct acpi_object_cache_list { ACPI_OBJECT_COMMON_HEADER union acpi_operand_object *Next; /* Link for object cache and internal lists*/ } ACPI_OBJECT_CACHE_LIST; /****************************************************************************** * * ACPI_OPERAND_OBJECT Descriptor - a giant union of all of the above * *****************************************************************************/ typedef union acpi_operand_object { ACPI_OBJECT_COMMON Common; ACPI_OBJECT_INTEGER Integer; ACPI_OBJECT_STRING String; ACPI_OBJECT_BUFFER Buffer; ACPI_OBJECT_PACKAGE Package; ACPI_OBJECT_EVENT Event; ACPI_OBJECT_METHOD Method; ACPI_OBJECT_MUTEX Mutex; ACPI_OBJECT_REGION Region; ACPI_OBJECT_NOTIFY_COMMON CommonNotify; ACPI_OBJECT_DEVICE Device; ACPI_OBJECT_POWER_RESOURCE PowerResource; ACPI_OBJECT_PROCESSOR Processor; ACPI_OBJECT_THERMAL_ZONE ThermalZone; ACPI_OBJECT_FIELD_COMMON CommonField; ACPI_OBJECT_REGION_FIELD Field; ACPI_OBJECT_BUFFER_FIELD BufferField; ACPI_OBJECT_BANK_FIELD BankField; ACPI_OBJECT_INDEX_FIELD IndexField; ACPI_OBJECT_NOTIFY_HANDLER Notify; ACPI_OBJECT_ADDR_HANDLER AddressSpace; ACPI_OBJECT_REFERENCE Reference; ACPI_OBJECT_EXTRA Extra; ACPI_OBJECT_DATA Data; ACPI_OBJECT_CACHE_LIST Cache; /* * Add namespace node to union in order to simplify code that accepts both * ACPI_OPERAND_OBJECTs and ACPI_NAMESPACE_NODEs. The structures share * a common DescriptorType field in order to differentiate them. */ ACPI_NAMESPACE_NODE Node; } ACPI_OPERAND_OBJECT; /****************************************************************************** * * ACPI_DESCRIPTOR - objects that share a common descriptor identifier * *****************************************************************************/ /* Object descriptor types */ #define ACPI_DESC_TYPE_CACHED 0x01 /* Used only when object is cached */ #define ACPI_DESC_TYPE_STATE 0x02 #define ACPI_DESC_TYPE_STATE_UPDATE 0x03 #define ACPI_DESC_TYPE_STATE_PACKAGE 0x04 #define ACPI_DESC_TYPE_STATE_CONTROL 0x05 #define ACPI_DESC_TYPE_STATE_RPSCOPE 0x06 #define ACPI_DESC_TYPE_STATE_PSCOPE 0x07 #define ACPI_DESC_TYPE_STATE_WSCOPE 0x08 #define ACPI_DESC_TYPE_STATE_RESULT 0x09 #define ACPI_DESC_TYPE_STATE_NOTIFY 0x0A #define ACPI_DESC_TYPE_STATE_THREAD 0x0B #define ACPI_DESC_TYPE_WALK 0x0C #define ACPI_DESC_TYPE_PARSER 0x0D #define ACPI_DESC_TYPE_OPERAND 0x0E #define ACPI_DESC_TYPE_NAMED 0x0F #define ACPI_DESC_TYPE_MAX 0x0F typedef struct acpi_common_descriptor { void *CommonPointer; UINT8 DescriptorType; /* To differentiate various internal objs */ } ACPI_COMMON_DESCRIPTOR; typedef union acpi_descriptor { ACPI_COMMON_DESCRIPTOR Common; ACPI_OPERAND_OBJECT Object; ACPI_NAMESPACE_NODE Node; ACPI_PARSE_OBJECT Op; } ACPI_DESCRIPTOR; #pragma pack() #endif /* _ACOBJECT_H */ src/acpica/source/include/acopcode.h000066400000000000000000000643571231470457100177610ustar00rootroot00000000000000/****************************************************************************** * * Name: acopcode.h - AML opcode information for the AML parser and interpreter * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #ifndef __ACOPCODE_H__ #define __ACOPCODE_H__ #define MAX_EXTENDED_OPCODE 0x88 #define NUM_EXTENDED_OPCODE (MAX_EXTENDED_OPCODE + 1) #define MAX_INTERNAL_OPCODE #define NUM_INTERNAL_OPCODE (MAX_INTERNAL_OPCODE + 1) /* Used for non-assigned opcodes */ #define _UNK 0x6B /* * Reserved ASCII characters. Do not use any of these for * internal opcodes, since they are used to differentiate * name strings from AML opcodes */ #define _ASC 0x6C #define _NAM 0x6C #define _PFX 0x6D /* * All AML opcodes and the parse-time arguments for each. Used by the AML * parser Each list is compressed into a 32-bit number and stored in the * master opcode table (in psopcode.c). */ #define ARGP_ACCESSFIELD_OP ARGP_LIST1 (ARGP_NAMESTRING) #define ARGP_ACQUIRE_OP ARGP_LIST2 (ARGP_SUPERNAME, ARGP_WORDDATA) #define ARGP_ADD_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET) #define ARGP_ALIAS_OP ARGP_LIST2 (ARGP_NAMESTRING, ARGP_NAME) #define ARGP_ARG0 ARG_NONE #define ARGP_ARG1 ARG_NONE #define ARGP_ARG2 ARG_NONE #define ARGP_ARG3 ARG_NONE #define ARGP_ARG4 ARG_NONE #define ARGP_ARG5 ARG_NONE #define ARGP_ARG6 ARG_NONE #define ARGP_BANK_FIELD_OP ARGP_LIST6 (ARGP_PKGLENGTH, ARGP_NAMESTRING, ARGP_NAMESTRING,ARGP_TERMARG, ARGP_BYTEDATA, ARGP_FIELDLIST) #define ARGP_BIT_AND_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET) #define ARGP_BIT_NAND_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET) #define ARGP_BIT_NOR_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET) #define ARGP_BIT_NOT_OP ARGP_LIST2 (ARGP_TERMARG, ARGP_TARGET) #define ARGP_BIT_OR_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET) #define ARGP_BIT_XOR_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET) #define ARGP_BREAK_OP ARG_NONE #define ARGP_BREAK_POINT_OP ARG_NONE #define ARGP_BUFFER_OP ARGP_LIST3 (ARGP_PKGLENGTH, ARGP_TERMARG, ARGP_BYTELIST) #define ARGP_BYTE_OP ARGP_LIST1 (ARGP_BYTEDATA) #define ARGP_BYTELIST_OP ARGP_LIST1 (ARGP_NAMESTRING) #define ARGP_CONCAT_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET) #define ARGP_CONCAT_RES_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET) #define ARGP_COND_REF_OF_OP ARGP_LIST2 (ARGP_SUPERNAME, ARGP_SUPERNAME) #define ARGP_CONNECTFIELD_OP ARGP_LIST1 (ARGP_NAMESTRING) #define ARGP_CONTINUE_OP ARG_NONE #define ARGP_COPY_OP ARGP_LIST2 (ARGP_TERMARG, ARGP_SIMPLENAME) #define ARGP_CREATE_BIT_FIELD_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_NAME) #define ARGP_CREATE_BYTE_FIELD_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_NAME) #define ARGP_CREATE_DWORD_FIELD_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_NAME) #define ARGP_CREATE_FIELD_OP ARGP_LIST4 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TERMARG, ARGP_NAME) #define ARGP_CREATE_QWORD_FIELD_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_NAME) #define ARGP_CREATE_WORD_FIELD_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_NAME) #define ARGP_DATA_REGION_OP ARGP_LIST4 (ARGP_NAME, ARGP_TERMARG, ARGP_TERMARG, ARGP_TERMARG) #define ARGP_DEBUG_OP ARG_NONE #define ARGP_DECREMENT_OP ARGP_LIST1 (ARGP_SUPERNAME) #define ARGP_DEREF_OF_OP ARGP_LIST1 (ARGP_TERMARG) #define ARGP_DEVICE_OP ARGP_LIST3 (ARGP_PKGLENGTH, ARGP_NAME, ARGP_OBJLIST) #define ARGP_DIVIDE_OP ARGP_LIST4 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET, ARGP_TARGET) #define ARGP_DWORD_OP ARGP_LIST1 (ARGP_DWORDDATA) #define ARGP_ELSE_OP ARGP_LIST2 (ARGP_PKGLENGTH, ARGP_TERMLIST) #define ARGP_EVENT_OP ARGP_LIST1 (ARGP_NAME) #define ARGP_FATAL_OP ARGP_LIST3 (ARGP_BYTEDATA, ARGP_DWORDDATA, ARGP_TERMARG) #define ARGP_FIELD_OP ARGP_LIST4 (ARGP_PKGLENGTH, ARGP_NAMESTRING, ARGP_BYTEDATA, ARGP_FIELDLIST) #define ARGP_FIND_SET_LEFT_BIT_OP ARGP_LIST2 (ARGP_TERMARG, ARGP_TARGET) #define ARGP_FIND_SET_RIGHT_BIT_OP ARGP_LIST2 (ARGP_TERMARG, ARGP_TARGET) #define ARGP_FROM_BCD_OP ARGP_LIST2 (ARGP_TERMARG, ARGP_TARGET) #define ARGP_IF_OP ARGP_LIST3 (ARGP_PKGLENGTH, ARGP_TERMARG, ARGP_TERMLIST) #define ARGP_INCREMENT_OP ARGP_LIST1 (ARGP_SUPERNAME) #define ARGP_INDEX_FIELD_OP ARGP_LIST5 (ARGP_PKGLENGTH, ARGP_NAMESTRING, ARGP_NAMESTRING,ARGP_BYTEDATA, ARGP_FIELDLIST) #define ARGP_INDEX_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET) #define ARGP_LAND_OP ARGP_LIST2 (ARGP_TERMARG, ARGP_TERMARG) #define ARGP_LEQUAL_OP ARGP_LIST2 (ARGP_TERMARG, ARGP_TERMARG) #define ARGP_LGREATER_OP ARGP_LIST2 (ARGP_TERMARG, ARGP_TERMARG) #define ARGP_LGREATEREQUAL_OP ARGP_LIST2 (ARGP_TERMARG, ARGP_TERMARG) #define ARGP_LLESS_OP ARGP_LIST2 (ARGP_TERMARG, ARGP_TERMARG) #define ARGP_LLESSEQUAL_OP ARGP_LIST2 (ARGP_TERMARG, ARGP_TERMARG) #define ARGP_LNOT_OP ARGP_LIST1 (ARGP_TERMARG) #define ARGP_LNOTEQUAL_OP ARGP_LIST2 (ARGP_TERMARG, ARGP_TERMARG) #define ARGP_LOAD_OP ARGP_LIST2 (ARGP_NAMESTRING, ARGP_SUPERNAME) #define ARGP_LOAD_TABLE_OP ARGP_LIST6 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TERMARG, ARGP_TERMARG, ARGP_TERMARG, ARGP_TERMARG) #define ARGP_LOCAL0 ARG_NONE #define ARGP_LOCAL1 ARG_NONE #define ARGP_LOCAL2 ARG_NONE #define ARGP_LOCAL3 ARG_NONE #define ARGP_LOCAL4 ARG_NONE #define ARGP_LOCAL5 ARG_NONE #define ARGP_LOCAL6 ARG_NONE #define ARGP_LOCAL7 ARG_NONE #define ARGP_LOR_OP ARGP_LIST2 (ARGP_TERMARG, ARGP_TERMARG) #define ARGP_MATCH_OP ARGP_LIST6 (ARGP_TERMARG, ARGP_BYTEDATA, ARGP_TERMARG, ARGP_BYTEDATA, ARGP_TERMARG, ARGP_TERMARG) #define ARGP_METHOD_OP ARGP_LIST4 (ARGP_PKGLENGTH, ARGP_NAME, ARGP_BYTEDATA, ARGP_TERMLIST) #define ARGP_METHODCALL_OP ARGP_LIST1 (ARGP_NAMESTRING) #define ARGP_MID_OP ARGP_LIST4 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET) #define ARGP_MOD_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET) #define ARGP_MULTIPLY_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET) #define ARGP_MUTEX_OP ARGP_LIST2 (ARGP_NAME, ARGP_BYTEDATA) #define ARGP_NAME_OP ARGP_LIST2 (ARGP_NAME, ARGP_DATAOBJ) #define ARGP_NAMEDFIELD_OP ARGP_LIST1 (ARGP_NAMESTRING) #define ARGP_NAMEPATH_OP ARGP_LIST1 (ARGP_NAMESTRING) #define ARGP_NOOP_OP ARG_NONE #define ARGP_NOTIFY_OP ARGP_LIST2 (ARGP_SUPERNAME, ARGP_TERMARG) #define ARGP_ONE_OP ARG_NONE #define ARGP_ONES_OP ARG_NONE #define ARGP_PACKAGE_OP ARGP_LIST3 (ARGP_PKGLENGTH, ARGP_BYTEDATA, ARGP_DATAOBJLIST) #define ARGP_POWER_RES_OP ARGP_LIST5 (ARGP_PKGLENGTH, ARGP_NAME, ARGP_BYTEDATA, ARGP_WORDDATA, ARGP_OBJLIST) #define ARGP_PROCESSOR_OP ARGP_LIST6 (ARGP_PKGLENGTH, ARGP_NAME, ARGP_BYTEDATA, ARGP_DWORDDATA, ARGP_BYTEDATA, ARGP_OBJLIST) #define ARGP_QWORD_OP ARGP_LIST1 (ARGP_QWORDDATA) #define ARGP_REF_OF_OP ARGP_LIST1 (ARGP_SUPERNAME) #define ARGP_REGION_OP ARGP_LIST4 (ARGP_NAME, ARGP_BYTEDATA, ARGP_TERMARG, ARGP_TERMARG) #define ARGP_RELEASE_OP ARGP_LIST1 (ARGP_SUPERNAME) #define ARGP_RESERVEDFIELD_OP ARGP_LIST1 (ARGP_NAMESTRING) #define ARGP_RESET_OP ARGP_LIST1 (ARGP_SUPERNAME) #define ARGP_RETURN_OP ARGP_LIST1 (ARGP_TERMARG) #define ARGP_REVISION_OP ARG_NONE #define ARGP_SCOPE_OP ARGP_LIST3 (ARGP_PKGLENGTH, ARGP_NAME, ARGP_TERMLIST) #define ARGP_SERIALFIELD_OP ARGP_LIST1 (ARGP_NAMESTRING) #define ARGP_SHIFT_LEFT_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET) #define ARGP_SHIFT_RIGHT_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET) #define ARGP_SIGNAL_OP ARGP_LIST1 (ARGP_SUPERNAME) #define ARGP_SIZE_OF_OP ARGP_LIST1 (ARGP_SUPERNAME) #define ARGP_SLEEP_OP ARGP_LIST1 (ARGP_TERMARG) #define ARGP_STALL_OP ARGP_LIST1 (ARGP_TERMARG) #define ARGP_STATICSTRING_OP ARGP_LIST1 (ARGP_NAMESTRING) #define ARGP_STORE_OP ARGP_LIST2 (ARGP_TERMARG, ARGP_SUPERNAME) #define ARGP_STRING_OP ARGP_LIST1 (ARGP_CHARLIST) #define ARGP_SUBTRACT_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET) #define ARGP_THERMAL_ZONE_OP ARGP_LIST3 (ARGP_PKGLENGTH, ARGP_NAME, ARGP_OBJLIST) #define ARGP_TIMER_OP ARG_NONE #define ARGP_TO_BCD_OP ARGP_LIST2 (ARGP_TERMARG, ARGP_TARGET) #define ARGP_TO_BUFFER_OP ARGP_LIST2 (ARGP_TERMARG, ARGP_TARGET) #define ARGP_TO_DEC_STR_OP ARGP_LIST2 (ARGP_TERMARG, ARGP_TARGET) #define ARGP_TO_HEX_STR_OP ARGP_LIST2 (ARGP_TERMARG, ARGP_TARGET) #define ARGP_TO_INTEGER_OP ARGP_LIST2 (ARGP_TERMARG, ARGP_TARGET) #define ARGP_TO_STRING_OP ARGP_LIST3 (ARGP_TERMARG, ARGP_TERMARG, ARGP_TARGET) #define ARGP_TYPE_OP ARGP_LIST1 (ARGP_SUPERNAME) #define ARGP_UNLOAD_OP ARGP_LIST1 (ARGP_SUPERNAME) #define ARGP_VAR_PACKAGE_OP ARGP_LIST3 (ARGP_PKGLENGTH, ARGP_TERMARG, ARGP_DATAOBJLIST) #define ARGP_WAIT_OP ARGP_LIST2 (ARGP_SUPERNAME, ARGP_TERMARG) #define ARGP_WHILE_OP ARGP_LIST3 (ARGP_PKGLENGTH, ARGP_TERMARG, ARGP_TERMLIST) #define ARGP_WORD_OP ARGP_LIST1 (ARGP_WORDDATA) #define ARGP_ZERO_OP ARG_NONE /* * All AML opcodes and the runtime arguments for each. Used by the AML * interpreter Each list is compressed into a 32-bit number and stored * in the master opcode table (in psopcode.c). * * (Used by PrepOperands procedure and the ASL Compiler) */ #define ARGI_ACCESSFIELD_OP ARGI_INVALID_OPCODE #define ARGI_ACQUIRE_OP ARGI_LIST2 (ARGI_MUTEX, ARGI_INTEGER) #define ARGI_ADD_OP ARGI_LIST3 (ARGI_INTEGER, ARGI_INTEGER, ARGI_TARGETREF) #define ARGI_ALIAS_OP ARGI_INVALID_OPCODE #define ARGI_ARG0 ARG_NONE #define ARGI_ARG1 ARG_NONE #define ARGI_ARG2 ARG_NONE #define ARGI_ARG3 ARG_NONE #define ARGI_ARG4 ARG_NONE #define ARGI_ARG5 ARG_NONE #define ARGI_ARG6 ARG_NONE #define ARGI_BANK_FIELD_OP ARGI_INVALID_OPCODE #define ARGI_BIT_AND_OP ARGI_LIST3 (ARGI_INTEGER, ARGI_INTEGER, ARGI_TARGETREF) #define ARGI_BIT_NAND_OP ARGI_LIST3 (ARGI_INTEGER, ARGI_INTEGER, ARGI_TARGETREF) #define ARGI_BIT_NOR_OP ARGI_LIST3 (ARGI_INTEGER, ARGI_INTEGER, ARGI_TARGETREF) #define ARGI_BIT_NOT_OP ARGI_LIST2 (ARGI_INTEGER, ARGI_TARGETREF) #define ARGI_BIT_OR_OP ARGI_LIST3 (ARGI_INTEGER, ARGI_INTEGER, ARGI_TARGETREF) #define ARGI_BIT_XOR_OP ARGI_LIST3 (ARGI_INTEGER, ARGI_INTEGER, ARGI_TARGETREF) #define ARGI_BREAK_OP ARG_NONE #define ARGI_BREAK_POINT_OP ARG_NONE #define ARGI_BUFFER_OP ARGI_LIST1 (ARGI_INTEGER) #define ARGI_BYTE_OP ARGI_INVALID_OPCODE #define ARGI_BYTELIST_OP ARGI_INVALID_OPCODE #define ARGI_CONCAT_OP ARGI_LIST3 (ARGI_COMPUTEDATA,ARGI_COMPUTEDATA, ARGI_TARGETREF) #define ARGI_CONCAT_RES_OP ARGI_LIST3 (ARGI_BUFFER, ARGI_BUFFER, ARGI_TARGETREF) #define ARGI_COND_REF_OF_OP ARGI_LIST2 (ARGI_OBJECT_REF, ARGI_TARGETREF) #define ARGI_CONNECTFIELD_OP ARGI_INVALID_OPCODE #define ARGI_CONTINUE_OP ARGI_INVALID_OPCODE #define ARGI_COPY_OP ARGI_LIST2 (ARGI_ANYTYPE, ARGI_SIMPLE_TARGET) #define ARGI_CREATE_BIT_FIELD_OP ARGI_LIST3 (ARGI_BUFFER, ARGI_INTEGER, ARGI_REFERENCE) #define ARGI_CREATE_BYTE_FIELD_OP ARGI_LIST3 (ARGI_BUFFER, ARGI_INTEGER, ARGI_REFERENCE) #define ARGI_CREATE_DWORD_FIELD_OP ARGI_LIST3 (ARGI_BUFFER, ARGI_INTEGER, ARGI_REFERENCE) #define ARGI_CREATE_FIELD_OP ARGI_LIST4 (ARGI_BUFFER, ARGI_INTEGER, ARGI_INTEGER, ARGI_REFERENCE) #define ARGI_CREATE_QWORD_FIELD_OP ARGI_LIST3 (ARGI_BUFFER, ARGI_INTEGER, ARGI_REFERENCE) #define ARGI_CREATE_WORD_FIELD_OP ARGI_LIST3 (ARGI_BUFFER, ARGI_INTEGER, ARGI_REFERENCE) #define ARGI_DATA_REGION_OP ARGI_LIST3 (ARGI_STRING, ARGI_STRING, ARGI_STRING) #define ARGI_DEBUG_OP ARG_NONE #define ARGI_DECREMENT_OP ARGI_LIST1 (ARGI_TARGETREF) #define ARGI_DEREF_OF_OP ARGI_LIST1 (ARGI_REF_OR_STRING) #define ARGI_DEVICE_OP ARGI_INVALID_OPCODE #define ARGI_DIVIDE_OP ARGI_LIST4 (ARGI_INTEGER, ARGI_INTEGER, ARGI_TARGETREF, ARGI_TARGETREF) #define ARGI_DWORD_OP ARGI_INVALID_OPCODE #define ARGI_ELSE_OP ARGI_INVALID_OPCODE #define ARGI_EVENT_OP ARGI_INVALID_OPCODE #define ARGI_FATAL_OP ARGI_LIST3 (ARGI_INTEGER, ARGI_INTEGER, ARGI_INTEGER) #define ARGI_FIELD_OP ARGI_INVALID_OPCODE #define ARGI_FIND_SET_LEFT_BIT_OP ARGI_LIST2 (ARGI_INTEGER, ARGI_TARGETREF) #define ARGI_FIND_SET_RIGHT_BIT_OP ARGI_LIST2 (ARGI_INTEGER, ARGI_TARGETREF) #define ARGI_FROM_BCD_OP ARGI_LIST2 (ARGI_INTEGER, ARGI_FIXED_TARGET) #define ARGI_IF_OP ARGI_INVALID_OPCODE #define ARGI_INCREMENT_OP ARGI_LIST1 (ARGI_TARGETREF) #define ARGI_INDEX_FIELD_OP ARGI_INVALID_OPCODE #define ARGI_INDEX_OP ARGI_LIST3 (ARGI_COMPLEXOBJ, ARGI_INTEGER, ARGI_TARGETREF) #define ARGI_LAND_OP ARGI_LIST2 (ARGI_INTEGER, ARGI_INTEGER) #define ARGI_LEQUAL_OP ARGI_LIST2 (ARGI_COMPUTEDATA,ARGI_COMPUTEDATA) #define ARGI_LGREATER_OP ARGI_LIST2 (ARGI_COMPUTEDATA,ARGI_COMPUTEDATA) #define ARGI_LGREATEREQUAL_OP ARGI_INVALID_OPCODE #define ARGI_LLESS_OP ARGI_LIST2 (ARGI_COMPUTEDATA,ARGI_COMPUTEDATA) #define ARGI_LLESSEQUAL_OP ARGI_INVALID_OPCODE #define ARGI_LNOT_OP ARGI_LIST1 (ARGI_INTEGER) #define ARGI_LNOTEQUAL_OP ARGI_INVALID_OPCODE #define ARGI_LOAD_OP ARGI_LIST2 (ARGI_REGION_OR_BUFFER,ARGI_TARGETREF) #define ARGI_LOAD_TABLE_OP ARGI_LIST6 (ARGI_STRING, ARGI_STRING, ARGI_STRING, ARGI_STRING, ARGI_STRING, ARGI_ANYTYPE) #define ARGI_LOCAL0 ARG_NONE #define ARGI_LOCAL1 ARG_NONE #define ARGI_LOCAL2 ARG_NONE #define ARGI_LOCAL3 ARG_NONE #define ARGI_LOCAL4 ARG_NONE #define ARGI_LOCAL5 ARG_NONE #define ARGI_LOCAL6 ARG_NONE #define ARGI_LOCAL7 ARG_NONE #define ARGI_LOR_OP ARGI_LIST2 (ARGI_INTEGER, ARGI_INTEGER) #define ARGI_MATCH_OP ARGI_LIST6 (ARGI_PACKAGE, ARGI_INTEGER, ARGI_COMPUTEDATA, ARGI_INTEGER,ARGI_COMPUTEDATA,ARGI_INTEGER) #define ARGI_METHOD_OP ARGI_INVALID_OPCODE #define ARGI_METHODCALL_OP ARGI_INVALID_OPCODE #define ARGI_MID_OP ARGI_LIST4 (ARGI_BUFFER_OR_STRING,ARGI_INTEGER, ARGI_INTEGER, ARGI_TARGETREF) #define ARGI_MOD_OP ARGI_LIST3 (ARGI_INTEGER, ARGI_INTEGER, ARGI_TARGETREF) #define ARGI_MULTIPLY_OP ARGI_LIST3 (ARGI_INTEGER, ARGI_INTEGER, ARGI_TARGETREF) #define ARGI_MUTEX_OP ARGI_INVALID_OPCODE #define ARGI_NAME_OP ARGI_INVALID_OPCODE #define ARGI_NAMEDFIELD_OP ARGI_INVALID_OPCODE #define ARGI_NAMEPATH_OP ARGI_INVALID_OPCODE #define ARGI_NOOP_OP ARG_NONE #define ARGI_NOTIFY_OP ARGI_LIST2 (ARGI_DEVICE_REF, ARGI_INTEGER) #define ARGI_ONE_OP ARG_NONE #define ARGI_ONES_OP ARG_NONE #define ARGI_PACKAGE_OP ARGI_LIST1 (ARGI_INTEGER) #define ARGI_POWER_RES_OP ARGI_INVALID_OPCODE #define ARGI_PROCESSOR_OP ARGI_INVALID_OPCODE #define ARGI_QWORD_OP ARGI_INVALID_OPCODE #define ARGI_REF_OF_OP ARGI_LIST1 (ARGI_OBJECT_REF) #define ARGI_REGION_OP ARGI_LIST2 (ARGI_INTEGER, ARGI_INTEGER) #define ARGI_RELEASE_OP ARGI_LIST1 (ARGI_MUTEX) #define ARGI_RESERVEDFIELD_OP ARGI_INVALID_OPCODE #define ARGI_RESET_OP ARGI_LIST1 (ARGI_EVENT) #define ARGI_RETURN_OP ARGI_INVALID_OPCODE #define ARGI_REVISION_OP ARG_NONE #define ARGI_SCOPE_OP ARGI_INVALID_OPCODE #define ARGI_SERIALFIELD_OP ARGI_INVALID_OPCODE #define ARGI_SHIFT_LEFT_OP ARGI_LIST3 (ARGI_INTEGER, ARGI_INTEGER, ARGI_TARGETREF) #define ARGI_SHIFT_RIGHT_OP ARGI_LIST3 (ARGI_INTEGER, ARGI_INTEGER, ARGI_TARGETREF) #define ARGI_SIGNAL_OP ARGI_LIST1 (ARGI_EVENT) #define ARGI_SIZE_OF_OP ARGI_LIST1 (ARGI_DATAOBJECT) #define ARGI_SLEEP_OP ARGI_LIST1 (ARGI_INTEGER) #define ARGI_STALL_OP ARGI_LIST1 (ARGI_INTEGER) #define ARGI_STATICSTRING_OP ARGI_INVALID_OPCODE #define ARGI_STORE_OP ARGI_LIST2 (ARGI_DATAREFOBJ, ARGI_TARGETREF) #define ARGI_STRING_OP ARGI_INVALID_OPCODE #define ARGI_SUBTRACT_OP ARGI_LIST3 (ARGI_INTEGER, ARGI_INTEGER, ARGI_TARGETREF) #define ARGI_THERMAL_ZONE_OP ARGI_INVALID_OPCODE #define ARGI_TIMER_OP ARG_NONE #define ARGI_TO_BCD_OP ARGI_LIST2 (ARGI_INTEGER, ARGI_FIXED_TARGET) #define ARGI_TO_BUFFER_OP ARGI_LIST2 (ARGI_COMPUTEDATA,ARGI_FIXED_TARGET) #define ARGI_TO_DEC_STR_OP ARGI_LIST2 (ARGI_COMPUTEDATA,ARGI_FIXED_TARGET) #define ARGI_TO_HEX_STR_OP ARGI_LIST2 (ARGI_COMPUTEDATA,ARGI_FIXED_TARGET) #define ARGI_TO_INTEGER_OP ARGI_LIST2 (ARGI_COMPUTEDATA,ARGI_FIXED_TARGET) #define ARGI_TO_STRING_OP ARGI_LIST3 (ARGI_BUFFER, ARGI_INTEGER, ARGI_FIXED_TARGET) #define ARGI_TYPE_OP ARGI_LIST1 (ARGI_ANYTYPE) #define ARGI_UNLOAD_OP ARGI_LIST1 (ARGI_DDBHANDLE) #define ARGI_VAR_PACKAGE_OP ARGI_LIST1 (ARGI_INTEGER) #define ARGI_WAIT_OP ARGI_LIST2 (ARGI_EVENT, ARGI_INTEGER) #define ARGI_WHILE_OP ARGI_INVALID_OPCODE #define ARGI_WORD_OP ARGI_INVALID_OPCODE #define ARGI_ZERO_OP ARG_NONE #endif /* __ACOPCODE_H__ */ src/acpica/source/include/acoutput.h000066400000000000000000000520011231470457100200270ustar00rootroot00000000000000/****************************************************************************** * * Name: acoutput.h -- debug output * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #ifndef __ACOUTPUT_H__ #define __ACOUTPUT_H__ /* * Debug levels and component IDs. These are used to control the * granularity of the output of the ACPI_DEBUG_PRINT macro -- on a * per-component basis and a per-exception-type basis. */ /* Component IDs are used in the global "DebugLayer" */ #define ACPI_UTILITIES 0x00000001 #define ACPI_HARDWARE 0x00000002 #define ACPI_EVENTS 0x00000004 #define ACPI_TABLES 0x00000008 #define ACPI_NAMESPACE 0x00000010 #define ACPI_PARSER 0x00000020 #define ACPI_DISPATCHER 0x00000040 #define ACPI_EXECUTER 0x00000080 #define ACPI_RESOURCES 0x00000100 #define ACPI_CA_DEBUGGER 0x00000200 #define ACPI_OS_SERVICES 0x00000400 #define ACPI_CA_DISASSEMBLER 0x00000800 /* Component IDs for ACPI tools and utilities */ #define ACPI_COMPILER 0x00001000 #define ACPI_TOOLS 0x00002000 #define ACPI_EXAMPLE 0x00004000 #define ACPI_DRIVER 0x00008000 #define DT_COMPILER 0x00010000 #define ASL_PREPROCESSOR 0x00020000 #define ACPI_ALL_COMPONENTS 0x0001FFFF #define ACPI_COMPONENT_DEFAULT (ACPI_ALL_COMPONENTS) /* Component IDs reserved for ACPI drivers */ #define ACPI_ALL_DRIVERS 0xFFFF0000 /* * Raw debug output levels, do not use these in the ACPI_DEBUG_PRINT macros */ #define ACPI_LV_INIT 0x00000001 #define ACPI_LV_DEBUG_OBJECT 0x00000002 #define ACPI_LV_INFO 0x00000004 #define ACPI_LV_REPAIR 0x00000008 #define ACPI_LV_ALL_EXCEPTIONS 0x0000000F /* Trace verbosity level 1 [Standard Trace Level] */ #define ACPI_LV_INIT_NAMES 0x00000020 #define ACPI_LV_PARSE 0x00000040 #define ACPI_LV_LOAD 0x00000080 #define ACPI_LV_DISPATCH 0x00000100 #define ACPI_LV_EXEC 0x00000200 #define ACPI_LV_NAMES 0x00000400 #define ACPI_LV_OPREGION 0x00000800 #define ACPI_LV_BFIELD 0x00001000 #define ACPI_LV_TABLES 0x00002000 #define ACPI_LV_VALUES 0x00004000 #define ACPI_LV_OBJECTS 0x00008000 #define ACPI_LV_RESOURCES 0x00010000 #define ACPI_LV_USER_REQUESTS 0x00020000 #define ACPI_LV_PACKAGE 0x00040000 #define ACPI_LV_VERBOSITY1 0x0007FF40 | ACPI_LV_ALL_EXCEPTIONS /* Trace verbosity level 2 [Function tracing and memory allocation] */ #define ACPI_LV_ALLOCATIONS 0x00100000 #define ACPI_LV_FUNCTIONS 0x00200000 #define ACPI_LV_OPTIMIZATIONS 0x00400000 #define ACPI_LV_VERBOSITY2 0x00700000 | ACPI_LV_VERBOSITY1 #define ACPI_LV_ALL ACPI_LV_VERBOSITY2 /* Trace verbosity level 3 [Threading, I/O, and Interrupts] */ #define ACPI_LV_MUTEX 0x01000000 #define ACPI_LV_THREADS 0x02000000 #define ACPI_LV_IO 0x04000000 #define ACPI_LV_INTERRUPTS 0x08000000 #define ACPI_LV_VERBOSITY3 0x0F000000 | ACPI_LV_VERBOSITY2 /* Exceptionally verbose output -- also used in the global "DebugLevel" */ #define ACPI_LV_AML_DISASSEMBLE 0x10000000 #define ACPI_LV_VERBOSE_INFO 0x20000000 #define ACPI_LV_FULL_TABLES 0x40000000 #define ACPI_LV_EVENTS 0x80000000 #define ACPI_LV_VERBOSE 0xF0000000 /* * Debug level macros that are used in the DEBUG_PRINT macros */ #define ACPI_DEBUG_LEVEL(dl) (UINT32) dl,ACPI_DEBUG_PARAMETERS /* * Exception level -- used in the global "DebugLevel" * * Note: For errors, use the ACPI_ERROR or ACPI_EXCEPTION interfaces. * For warnings, use ACPI_WARNING. */ #define ACPI_DB_INIT ACPI_DEBUG_LEVEL (ACPI_LV_INIT) #define ACPI_DB_DEBUG_OBJECT ACPI_DEBUG_LEVEL (ACPI_LV_DEBUG_OBJECT) #define ACPI_DB_INFO ACPI_DEBUG_LEVEL (ACPI_LV_INFO) #define ACPI_DB_REPAIR ACPI_DEBUG_LEVEL (ACPI_LV_REPAIR) #define ACPI_DB_ALL_EXCEPTIONS ACPI_DEBUG_LEVEL (ACPI_LV_ALL_EXCEPTIONS) /* Trace level -- also used in the global "DebugLevel" */ #define ACPI_DB_INIT_NAMES ACPI_DEBUG_LEVEL (ACPI_LV_INIT_NAMES) #define ACPI_DB_THREADS ACPI_DEBUG_LEVEL (ACPI_LV_THREADS) #define ACPI_DB_PARSE ACPI_DEBUG_LEVEL (ACPI_LV_PARSE) #define ACPI_DB_DISPATCH ACPI_DEBUG_LEVEL (ACPI_LV_DISPATCH) #define ACPI_DB_LOAD ACPI_DEBUG_LEVEL (ACPI_LV_LOAD) #define ACPI_DB_EXEC ACPI_DEBUG_LEVEL (ACPI_LV_EXEC) #define ACPI_DB_NAMES ACPI_DEBUG_LEVEL (ACPI_LV_NAMES) #define ACPI_DB_OPREGION ACPI_DEBUG_LEVEL (ACPI_LV_OPREGION) #define ACPI_DB_BFIELD ACPI_DEBUG_LEVEL (ACPI_LV_BFIELD) #define ACPI_DB_TABLES ACPI_DEBUG_LEVEL (ACPI_LV_TABLES) #define ACPI_DB_FUNCTIONS ACPI_DEBUG_LEVEL (ACPI_LV_FUNCTIONS) #define ACPI_DB_OPTIMIZATIONS ACPI_DEBUG_LEVEL (ACPI_LV_OPTIMIZATIONS) #define ACPI_DB_VALUES ACPI_DEBUG_LEVEL (ACPI_LV_VALUES) #define ACPI_DB_OBJECTS ACPI_DEBUG_LEVEL (ACPI_LV_OBJECTS) #define ACPI_DB_ALLOCATIONS ACPI_DEBUG_LEVEL (ACPI_LV_ALLOCATIONS) #define ACPI_DB_RESOURCES ACPI_DEBUG_LEVEL (ACPI_LV_RESOURCES) #define ACPI_DB_IO ACPI_DEBUG_LEVEL (ACPI_LV_IO) #define ACPI_DB_INTERRUPTS ACPI_DEBUG_LEVEL (ACPI_LV_INTERRUPTS) #define ACPI_DB_USER_REQUESTS ACPI_DEBUG_LEVEL (ACPI_LV_USER_REQUESTS) #define ACPI_DB_PACKAGE ACPI_DEBUG_LEVEL (ACPI_LV_PACKAGE) #define ACPI_DB_MUTEX ACPI_DEBUG_LEVEL (ACPI_LV_MUTEX) #define ACPI_DB_EVENTS ACPI_DEBUG_LEVEL (ACPI_LV_EVENTS) #define ACPI_DB_ALL ACPI_DEBUG_LEVEL (ACPI_LV_ALL) /* Defaults for DebugLevel, debug and normal */ #define ACPI_DEBUG_DEFAULT (ACPI_LV_INIT | ACPI_LV_DEBUG_OBJECT | ACPI_LV_REPAIR) #define ACPI_NORMAL_DEFAULT (ACPI_LV_INIT | ACPI_LV_DEBUG_OBJECT | ACPI_LV_REPAIR) #define ACPI_DEBUG_ALL (ACPI_LV_AML_DISASSEMBLE | ACPI_LV_ALL_EXCEPTIONS | ACPI_LV_ALL) #if defined (ACPI_DEBUG_OUTPUT) || !defined (ACPI_NO_ERROR_MESSAGES) /* * The module name is used primarily for error and debug messages. * The __FILE__ macro is not very useful for this, because it * usually includes the entire pathname to the module making the * debug output difficult to read. */ #define ACPI_MODULE_NAME(Name) static const char ACPI_UNUSED_VAR _AcpiModuleName[] = Name; #else /* * For the no-debug and no-error-msg cases, we must at least define * a null module name. */ #define ACPI_MODULE_NAME(Name) #define _AcpiModuleName "" #endif /* * Ascii error messages can be configured out */ #ifndef ACPI_NO_ERROR_MESSAGES #define AE_INFO _AcpiModuleName, __LINE__ /* * Error reporting. Callers module and line number are inserted by AE_INFO, * the plist contains a set of parens to allow variable-length lists. * These macros are used for both the debug and non-debug versions of the code. */ #define ACPI_INFO(plist) AcpiInfo plist #define ACPI_WARNING(plist) AcpiWarning plist #define ACPI_EXCEPTION(plist) AcpiException plist #define ACPI_ERROR(plist) AcpiError plist #define ACPI_BIOS_WARNING(plist) AcpiBiosWarning plist #define ACPI_BIOS_ERROR(plist) AcpiBiosError plist #define ACPI_DEBUG_OBJECT(obj,l,i) AcpiExDoDebugObject(obj,l,i) #else /* No error messages */ #define ACPI_INFO(plist) #define ACPI_WARNING(plist) #define ACPI_EXCEPTION(plist) #define ACPI_ERROR(plist) #define ACPI_BIOS_WARNING(plist) #define ACPI_BIOS_ERROR(plist) #define ACPI_DEBUG_OBJECT(obj,l,i) #endif /* ACPI_NO_ERROR_MESSAGES */ /* * Debug macros that are conditionally compiled */ #ifdef ACPI_DEBUG_OUTPUT /* * If ACPI_GET_FUNCTION_NAME was not defined in the compiler-dependent header, * define it now. This is the case where there the compiler does not support * a __FUNCTION__ macro or equivalent. */ #ifndef ACPI_GET_FUNCTION_NAME #define ACPI_GET_FUNCTION_NAME _AcpiFunctionName /* * The Name parameter should be the procedure name as a quoted string. * The function name is also used by the function exit macros below. * Note: (const char) is used to be compatible with the debug interfaces * and macros such as __FUNCTION__. */ #define ACPI_FUNCTION_NAME(Name) static const char _AcpiFunctionName[] = #Name; #else /* Compiler supports __FUNCTION__ (or equivalent) -- Ignore this macro */ #define ACPI_FUNCTION_NAME(Name) #endif /* ACPI_GET_FUNCTION_NAME */ /* * Common parameters used for debug output functions: * line number, function name, module(file) name, component ID */ #define ACPI_DEBUG_PARAMETERS \ __LINE__, ACPI_GET_FUNCTION_NAME, _AcpiModuleName, _COMPONENT /* Check if debug output is currently dynamically enabled */ #define ACPI_IS_DEBUG_ENABLED(Level, Component) \ ((Level & AcpiDbgLevel) && (Component & AcpiDbgLayer)) /* * Master debug print macros * Print message if and only if: * 1) Debug print for the current component is enabled * 2) Debug error level or trace level for the print statement is enabled * * November 2012: Moved the runtime check for whether to actually emit the * debug message outside of the print function itself. This improves overall * performance at a relatively small code cost. Implementation involves the * use of variadic macros supported by C99. * * Note: the ACPI_DO_WHILE0 macro is used to prevent some compilers from * complaining about these constructs. On other compilers the do...while * adds some extra code, so this feature is optional. */ #ifdef ACPI_USE_DO_WHILE_0 #define ACPI_DO_WHILE0(a) do a while(0) #else #define ACPI_DO_WHILE0(a) a #endif /* DEBUG_PRINT functions */ #define ACPI_DEBUG_PRINT(plist) ACPI_ACTUAL_DEBUG plist #define ACPI_DEBUG_PRINT_RAW(plist) ACPI_ACTUAL_DEBUG_RAW plist /* Helper macros for DEBUG_PRINT */ #define ACPI_DO_DEBUG_PRINT(Function, Level, Line, Filename, Modulename, Component, ...) \ ACPI_DO_WHILE0 ({ \ if (ACPI_IS_DEBUG_ENABLED (Level, Component)) \ { \ Function (Level, Line, Filename, Modulename, Component, __VA_ARGS__); \ } \ }) #define ACPI_ACTUAL_DEBUG(Level, Line, Filename, Modulename, Component, ...) \ ACPI_DO_DEBUG_PRINT (AcpiDebugPrint, Level, Line, \ Filename, Modulename, Component, __VA_ARGS__) #define ACPI_ACTUAL_DEBUG_RAW(Level, Line, Filename, Modulename, Component, ...) \ ACPI_DO_DEBUG_PRINT (AcpiDebugPrintRaw, Level, Line, \ Filename, Modulename, Component, __VA_ARGS__) /* * Function entry tracing * * The name of the function is emitted as a local variable that is * intended to be used by both the entry trace and the exit trace. */ /* Helper macro */ #define ACPI_TRACE_ENTRY(Name, Function, Type, Param) \ ACPI_FUNCTION_NAME (Name) \ Function (ACPI_DEBUG_PARAMETERS, (Type) (Param)) /* The actual entry trace macros */ #define ACPI_FUNCTION_TRACE(Name) \ ACPI_FUNCTION_NAME(Name) \ AcpiUtTrace (ACPI_DEBUG_PARAMETERS) #define ACPI_FUNCTION_TRACE_PTR(Name, Pointer) \ ACPI_TRACE_ENTRY (Name, AcpiUtTracePtr, void *, Pointer) #define ACPI_FUNCTION_TRACE_U32(Name, Value) \ ACPI_TRACE_ENTRY (Name, AcpiUtTraceU32, UINT32, Value) #define ACPI_FUNCTION_TRACE_STR(Name, String) \ ACPI_TRACE_ENTRY (Name, AcpiUtTraceStr, char *, String) #define ACPI_FUNCTION_ENTRY() \ AcpiUtTrackStackPtr() /* * Function exit tracing * * These macros include a return statement. This is usually considered * bad form, but having a separate exit macro before the actual return * is very ugly and difficult to maintain. * * One of the FUNCTION_TRACE macros above must be used in conjunction * with these macros so that "_AcpiFunctionName" is defined. * * There are two versions of most of the return macros. The default version is * safer, since it avoids side-effects by guaranteeing that the argument will * not be evaluated twice. * * A less-safe version of the macros is provided for optional use if the * compiler uses excessive CPU stack (for example, this may happen in the * debug case if code optimzation is disabled.) */ /* Exit trace helper macro */ #ifndef ACPI_SIMPLE_RETURN_MACROS #define ACPI_TRACE_EXIT(Function, Type, Param) \ ACPI_DO_WHILE0 ({ \ register Type _Param = (Type) (Param); \ Function (ACPI_DEBUG_PARAMETERS, _Param); \ return (_Param); \ }) #else /* Use original less-safe macros */ #define ACPI_TRACE_EXIT(Function, Type, Param) \ ACPI_DO_WHILE0 ({ \ Function (ACPI_DEBUG_PARAMETERS, (Type) (Param)); \ return (Param); \ }) #endif /* ACPI_SIMPLE_RETURN_MACROS */ /* The actual exit macros */ #define return_VOID \ ACPI_DO_WHILE0 ({ \ AcpiUtExit (ACPI_DEBUG_PARAMETERS); \ return; \ }) #define return_ACPI_STATUS(Status) \ ACPI_TRACE_EXIT (AcpiUtStatusExit, ACPI_STATUS, Status) #define return_PTR(Pointer) \ ACPI_TRACE_EXIT (AcpiUtPtrExit, void *, Pointer) #define return_VALUE(Value) \ ACPI_TRACE_EXIT (AcpiUtValueExit, UINT64, Value) #define return_UINT32(Value) \ ACPI_TRACE_EXIT (AcpiUtValueExit, UINT32, Value) #define return_UINT8(Value) \ ACPI_TRACE_EXIT (AcpiUtValueExit, UINT8, Value) /* Conditional execution */ #define ACPI_DEBUG_EXEC(a) a #define ACPI_DEBUG_ONLY_MEMBERS(a) a; #define _VERBOSE_STRUCTURES /* Various object display routines for debug */ #define ACPI_DUMP_STACK_ENTRY(a) AcpiExDumpOperand((a), 0) #define ACPI_DUMP_OPERANDS(a, b ,c) AcpiExDumpOperands(a, b, c) #define ACPI_DUMP_ENTRY(a, b) AcpiNsDumpEntry (a, b) #define ACPI_DUMP_PATHNAME(a, b, c, d) AcpiNsDumpPathname(a, b, c, d) #define ACPI_DUMP_BUFFER(a, b) AcpiUtDebugDumpBuffer((UINT8 *) a, b, DB_BYTE_DISPLAY, _COMPONENT) #else /* ACPI_DEBUG_OUTPUT */ /* * This is the non-debug case -- make everything go away, * leaving no executable debug code! */ #define ACPI_DEBUG_PRINT(pl) #define ACPI_DEBUG_PRINT_RAW(pl) #define ACPI_DEBUG_EXEC(a) #define ACPI_DEBUG_ONLY_MEMBERS(a) #define ACPI_FUNCTION_NAME(a) #define ACPI_FUNCTION_TRACE(a) #define ACPI_FUNCTION_TRACE_PTR(a, b) #define ACPI_FUNCTION_TRACE_U32(a, b) #define ACPI_FUNCTION_TRACE_STR(a, b) #define ACPI_FUNCTION_ENTRY() #define ACPI_DUMP_STACK_ENTRY(a) #define ACPI_DUMP_OPERANDS(a, b, c) #define ACPI_DUMP_ENTRY(a, b) #define ACPI_DUMP_PATHNAME(a, b, c, d) #define ACPI_DUMP_BUFFER(a, b) #define ACPI_IS_DEBUG_ENABLED(Level, Component) 0 /* Return macros must have a return statement at the minimum */ #define return_VOID return #define return_ACPI_STATUS(s) return(s) #define return_PTR(s) return(s) #define return_VALUE(s) return(s) #define return_UINT8(s) return(s) #define return_UINT32(s) return(s) #endif /* ACPI_DEBUG_OUTPUT */ #endif /* __ACOUTPUT_H__ */ src/acpica/source/include/acparser.h000066400000000000000000000311131231470457100177640ustar00rootroot00000000000000/****************************************************************************** * * Module Name: acparser.h - AML Parser subcomponent prototypes and defines * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #ifndef __ACPARSER_H__ #define __ACPARSER_H__ #define OP_HAS_RETURN_VALUE 1 /* Variable number of arguments. This field must be 32 bits */ #define ACPI_VAR_ARGS ACPI_UINT32_MAX #define ACPI_PARSE_DELETE_TREE 0x0001 #define ACPI_PARSE_NO_TREE_DELETE 0x0000 #define ACPI_PARSE_TREE_MASK 0x0001 #define ACPI_PARSE_LOAD_PASS1 0x0010 #define ACPI_PARSE_LOAD_PASS2 0x0020 #define ACPI_PARSE_EXECUTE 0x0030 #define ACPI_PARSE_MODE_MASK 0x0030 #define ACPI_PARSE_DEFERRED_OP 0x0100 #define ACPI_PARSE_DISASSEMBLE 0x0200 #define ACPI_PARSE_MODULE_LEVEL 0x0400 /****************************************************************************** * * Parser interfaces * *****************************************************************************/ /* * psxface - Parser external interfaces */ ACPI_STATUS AcpiPsExecuteMethod ( ACPI_EVALUATE_INFO *Info); /* * psargs - Parse AML opcode arguments */ UINT8 * AcpiPsGetNextPackageEnd ( ACPI_PARSE_STATE *ParserState); char * AcpiPsGetNextNamestring ( ACPI_PARSE_STATE *ParserState); void AcpiPsGetNextSimpleArg ( ACPI_PARSE_STATE *ParserState, UINT32 ArgType, ACPI_PARSE_OBJECT *Arg); ACPI_STATUS AcpiPsGetNextNamepath ( ACPI_WALK_STATE *WalkState, ACPI_PARSE_STATE *ParserState, ACPI_PARSE_OBJECT *Arg, BOOLEAN MethodCall); ACPI_STATUS AcpiPsGetNextArg ( ACPI_WALK_STATE *WalkState, ACPI_PARSE_STATE *ParserState, UINT32 ArgType, ACPI_PARSE_OBJECT **ReturnArg); /* * psfind */ ACPI_PARSE_OBJECT * AcpiPsFindName ( ACPI_PARSE_OBJECT *Scope, UINT32 Name, UINT32 Opcode); ACPI_PARSE_OBJECT* AcpiPsGetParent ( ACPI_PARSE_OBJECT *Op); /* * psobject - support for parse object processing */ ACPI_STATUS AcpiPsBuildNamedOp ( ACPI_WALK_STATE *WalkState, UINT8 *AmlOpStart, ACPI_PARSE_OBJECT *UnnamedOp, ACPI_PARSE_OBJECT **Op); ACPI_STATUS AcpiPsCreateOp ( ACPI_WALK_STATE *WalkState, UINT8 *AmlOpStart, ACPI_PARSE_OBJECT **NewOp); ACPI_STATUS AcpiPsCompleteOp ( ACPI_WALK_STATE *WalkState, ACPI_PARSE_OBJECT **Op, ACPI_STATUS Status); ACPI_STATUS AcpiPsCompleteFinalOp ( ACPI_WALK_STATE *WalkState, ACPI_PARSE_OBJECT *Op, ACPI_STATUS Status); /* * psopinfo - AML Opcode information */ const ACPI_OPCODE_INFO * AcpiPsGetOpcodeInfo ( UINT16 Opcode); char * AcpiPsGetOpcodeName ( UINT16 Opcode); UINT8 AcpiPsGetArgumentCount ( UINT32 OpType); /* * psparse - top level parsing routines */ ACPI_STATUS AcpiPsParseAml ( ACPI_WALK_STATE *WalkState); UINT32 AcpiPsGetOpcodeSize ( UINT32 Opcode); UINT16 AcpiPsPeekOpcode ( ACPI_PARSE_STATE *state); ACPI_STATUS AcpiPsCompleteThisOp ( ACPI_WALK_STATE *WalkState, ACPI_PARSE_OBJECT *Op); ACPI_STATUS AcpiPsNextParseState ( ACPI_WALK_STATE *WalkState, ACPI_PARSE_OBJECT *Op, ACPI_STATUS CallbackStatus); /* * psloop - main parse loop */ ACPI_STATUS AcpiPsParseLoop ( ACPI_WALK_STATE *WalkState); /* * psscope - Scope stack management routines */ ACPI_STATUS AcpiPsInitScope ( ACPI_PARSE_STATE *ParserState, ACPI_PARSE_OBJECT *Root); ACPI_PARSE_OBJECT * AcpiPsGetParentScope ( ACPI_PARSE_STATE *state); BOOLEAN AcpiPsHasCompletedScope ( ACPI_PARSE_STATE *ParserState); void AcpiPsPopScope ( ACPI_PARSE_STATE *ParserState, ACPI_PARSE_OBJECT **Op, UINT32 *ArgList, UINT32 *ArgCount); ACPI_STATUS AcpiPsPushScope ( ACPI_PARSE_STATE *ParserState, ACPI_PARSE_OBJECT *Op, UINT32 RemainingArgs, UINT32 ArgCount); void AcpiPsCleanupScope ( ACPI_PARSE_STATE *state); /* * pstree - parse tree manipulation routines */ void AcpiPsAppendArg( ACPI_PARSE_OBJECT *op, ACPI_PARSE_OBJECT *arg); ACPI_PARSE_OBJECT* AcpiPsFind ( ACPI_PARSE_OBJECT *Scope, char *Path, UINT16 Opcode, UINT32 Create); ACPI_PARSE_OBJECT * AcpiPsGetArg( ACPI_PARSE_OBJECT *op, UINT32 argn); ACPI_PARSE_OBJECT * AcpiPsGetDepthNext ( ACPI_PARSE_OBJECT *Origin, ACPI_PARSE_OBJECT *Op); /* * pswalk - parse tree walk routines */ ACPI_STATUS AcpiPsWalkParsedAml ( ACPI_PARSE_OBJECT *StartOp, ACPI_PARSE_OBJECT *EndOp, ACPI_OPERAND_OBJECT *MthDesc, ACPI_NAMESPACE_NODE *StartNode, ACPI_OPERAND_OBJECT **Params, ACPI_OPERAND_OBJECT **CallerReturnDesc, ACPI_OWNER_ID OwnerId, ACPI_PARSE_DOWNWARDS DescendingCallback, ACPI_PARSE_UPWARDS AscendingCallback); ACPI_STATUS AcpiPsGetNextWalkOp ( ACPI_WALK_STATE *WalkState, ACPI_PARSE_OBJECT *Op, ACPI_PARSE_UPWARDS AscendingCallback); ACPI_STATUS AcpiPsDeleteCompletedOp ( ACPI_WALK_STATE *WalkState); void AcpiPsDeleteParseTree ( ACPI_PARSE_OBJECT *root); /* * psutils - parser utilities */ ACPI_PARSE_OBJECT * AcpiPsCreateScopeOp ( void); void AcpiPsInitOp ( ACPI_PARSE_OBJECT *op, UINT16 opcode); ACPI_PARSE_OBJECT * AcpiPsAllocOp ( UINT16 opcode); void AcpiPsFreeOp ( ACPI_PARSE_OBJECT *Op); BOOLEAN AcpiPsIsLeadingChar ( UINT32 c); UINT32 AcpiPsGetName( ACPI_PARSE_OBJECT *op); void AcpiPsSetName( ACPI_PARSE_OBJECT *op, UINT32 name); /* * psdump - display parser tree */ UINT32 AcpiPsSprintPath ( char *BufferStart, UINT32 BufferSize, ACPI_PARSE_OBJECT *Op); UINT32 AcpiPsSprintOp ( char *BufferStart, UINT32 BufferSize, ACPI_PARSE_OBJECT *Op); void AcpiPsShow ( ACPI_PARSE_OBJECT *op); #endif /* __ACPARSER_H__ */ src/acpica/source/include/acpi.h000066400000000000000000000164071231470457100171110ustar00rootroot00000000000000/****************************************************************************** * * Name: acpi.h - Master public include file used to interface to ACPICA * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #ifndef __ACPI_H__ #define __ACPI_H__ /* * Public include files for use by code that will interface to ACPICA. * * Information includes the ACPICA data types, names, exceptions, and * external interface prototypes. Also included are the definitions for * all ACPI tables (FADT, MADT, etc.) * * Note: The order of these include files is important. */ #include "platform/acenv.h" /* Environment-specific items */ #include "acnames.h" /* Common ACPI names and strings */ #include "actypes.h" /* ACPICA data types and structures */ #include "acexcep.h" /* ACPICA exceptions */ #include "actbl.h" /* ACPI table definitions */ #include "acoutput.h" /* Error output and Debug macros */ #include "acrestyp.h" /* Resource Descriptor structs */ #include "acpiosxf.h" /* OSL interfaces (ACPICA-to-OS) */ #include "acpixf.h" /* ACPI core subsystem external interfaces */ #ifdef ACPI_NATIVE_INTERFACE_HEADER #include ACPI_NATIVE_INTERFACE_HEADER #endif #endif /* __ACPI_H__ */ src/acpica/source/include/acpiosxf.h000066400000000000000000000423231231470457100200050ustar00rootroot00000000000000/****************************************************************************** * * Name: acpiosxf.h - All interfaces to the OS Services Layer (OSL). These * interfaces must be implemented by OSL to interface the * ACPI components to the host operating system. * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #ifndef __ACPIOSXF_H__ #define __ACPIOSXF_H__ #include "platform/acenv.h" #include "actypes.h" /* Types for AcpiOsExecute */ typedef enum { OSL_GLOBAL_LOCK_HANDLER, OSL_NOTIFY_HANDLER, OSL_GPE_HANDLER, OSL_DEBUGGER_THREAD, OSL_EC_POLL_HANDLER, OSL_EC_BURST_HANDLER } ACPI_EXECUTE_TYPE; #define ACPI_NO_UNIT_LIMIT ((UINT32) -1) #define ACPI_MUTEX_SEM 1 /* Functions for AcpiOsSignal */ #define ACPI_SIGNAL_FATAL 0 #define ACPI_SIGNAL_BREAKPOINT 1 typedef struct acpi_signal_fatal_info { UINT32 Type; UINT32 Code; UINT32 Argument; } ACPI_SIGNAL_FATAL_INFO; /* * OSL Initialization and shutdown primitives */ #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsInitialize ACPI_STATUS AcpiOsInitialize ( void); #endif #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsTerminate ACPI_STATUS AcpiOsTerminate ( void); #endif /* * ACPI Table interfaces */ #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsGetRootPointer ACPI_PHYSICAL_ADDRESS AcpiOsGetRootPointer ( void); #endif #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsPredefinedOverride ACPI_STATUS AcpiOsPredefinedOverride ( const ACPI_PREDEFINED_NAMES *InitVal, ACPI_STRING *NewVal); #endif #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsTableOverride ACPI_STATUS AcpiOsTableOverride ( ACPI_TABLE_HEADER *ExistingTable, ACPI_TABLE_HEADER **NewTable); #endif #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsPhysicalTableOverride ACPI_STATUS AcpiOsPhysicalTableOverride ( ACPI_TABLE_HEADER *ExistingTable, ACPI_PHYSICAL_ADDRESS *NewAddress, UINT32 *NewTableLength); #endif /* * Spinlock primitives */ #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsCreateLock ACPI_STATUS AcpiOsCreateLock ( ACPI_SPINLOCK *OutHandle); #endif #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsDeleteLock void AcpiOsDeleteLock ( ACPI_SPINLOCK Handle); #endif #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsAcquireLock ACPI_CPU_FLAGS AcpiOsAcquireLock ( ACPI_SPINLOCK Handle); #endif #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsReleaseLock void AcpiOsReleaseLock ( ACPI_SPINLOCK Handle, ACPI_CPU_FLAGS Flags); #endif /* * Semaphore primitives */ #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsCreateSemaphore ACPI_STATUS AcpiOsCreateSemaphore ( UINT32 MaxUnits, UINT32 InitialUnits, ACPI_SEMAPHORE *OutHandle); #endif #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsDeleteSemaphore ACPI_STATUS AcpiOsDeleteSemaphore ( ACPI_SEMAPHORE Handle); #endif #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsWaitSemaphore ACPI_STATUS AcpiOsWaitSemaphore ( ACPI_SEMAPHORE Handle, UINT32 Units, UINT16 Timeout); #endif #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsSignalSemaphore ACPI_STATUS AcpiOsSignalSemaphore ( ACPI_SEMAPHORE Handle, UINT32 Units); #endif /* * Mutex primitives. May be configured to use semaphores instead via * ACPI_MUTEX_TYPE (see platform/acenv.h) */ #if (ACPI_MUTEX_TYPE != ACPI_BINARY_SEMAPHORE) #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsCreateMutex ACPI_STATUS AcpiOsCreateMutex ( ACPI_MUTEX *OutHandle); #endif #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsDeleteMutex void AcpiOsDeleteMutex ( ACPI_MUTEX Handle); #endif #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsAcquireMutex ACPI_STATUS AcpiOsAcquireMutex ( ACPI_MUTEX Handle, UINT16 Timeout); #endif #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsReleaseMutex void AcpiOsReleaseMutex ( ACPI_MUTEX Handle); #endif #endif /* * Memory allocation and mapping */ #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsAllocate void * AcpiOsAllocate ( ACPI_SIZE Size); #endif #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsAllocateZeroed void * AcpiOsAllocateZeroed ( ACPI_SIZE Size); #endif #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsFree void AcpiOsFree ( void * Memory); #endif #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsMapMemory void * AcpiOsMapMemory ( ACPI_PHYSICAL_ADDRESS Where, ACPI_SIZE Length); #endif #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsUnmapMemory void AcpiOsUnmapMemory ( void *LogicalAddress, ACPI_SIZE Size); #endif #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsGetPhysicalAddress ACPI_STATUS AcpiOsGetPhysicalAddress ( void *LogicalAddress, ACPI_PHYSICAL_ADDRESS *PhysicalAddress); #endif /* * Memory/Object Cache */ #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsCreateCache ACPI_STATUS AcpiOsCreateCache ( char *CacheName, UINT16 ObjectSize, UINT16 MaxDepth, ACPI_CACHE_T **ReturnCache); #endif #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsDeleteCache ACPI_STATUS AcpiOsDeleteCache ( ACPI_CACHE_T *Cache); #endif #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsPurgeCache ACPI_STATUS AcpiOsPurgeCache ( ACPI_CACHE_T *Cache); #endif #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsAcquireObject void * AcpiOsAcquireObject ( ACPI_CACHE_T *Cache); #endif #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsReleaseObject ACPI_STATUS AcpiOsReleaseObject ( ACPI_CACHE_T *Cache, void *Object); #endif /* * Interrupt handlers */ #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsInstallInterruptHandler ACPI_STATUS AcpiOsInstallInterruptHandler ( UINT32 InterruptNumber, ACPI_OSD_HANDLER ServiceRoutine, void *Context); #endif #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsRemoveInterruptHandler ACPI_STATUS AcpiOsRemoveInterruptHandler ( UINT32 InterruptNumber, ACPI_OSD_HANDLER ServiceRoutine); #endif /* * Threads and Scheduling */ #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsGetThreadId ACPI_THREAD_ID AcpiOsGetThreadId ( void); #endif #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsExecute ACPI_STATUS AcpiOsExecute ( ACPI_EXECUTE_TYPE Type, ACPI_OSD_EXEC_CALLBACK Function, void *Context); #endif #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsWaitEventsComplete void AcpiOsWaitEventsComplete ( void); #endif #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsSleep void AcpiOsSleep ( UINT64 Milliseconds); #endif #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsStall void AcpiOsStall ( UINT32 Microseconds); #endif /* * Platform and hardware-independent I/O interfaces */ #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsReadPort ACPI_STATUS AcpiOsReadPort ( ACPI_IO_ADDRESS Address, UINT32 *Value, UINT32 Width); #endif #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsWritePort ACPI_STATUS AcpiOsWritePort ( ACPI_IO_ADDRESS Address, UINT32 Value, UINT32 Width); #endif /* * Platform and hardware-independent physical memory interfaces */ #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsReadMemory ACPI_STATUS AcpiOsReadMemory ( ACPI_PHYSICAL_ADDRESS Address, UINT64 *Value, UINT32 Width); #endif #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsWriteMemory ACPI_STATUS AcpiOsWriteMemory ( ACPI_PHYSICAL_ADDRESS Address, UINT64 Value, UINT32 Width); #endif /* * Platform and hardware-independent PCI configuration space access * Note: Can't use "Register" as a parameter, changed to "Reg" -- * certain compilers complain. */ #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsReadPciConfiguration ACPI_STATUS AcpiOsReadPciConfiguration ( ACPI_PCI_ID *PciId, UINT32 Reg, UINT64 *Value, UINT32 Width); #endif #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsWritePciConfiguration ACPI_STATUS AcpiOsWritePciConfiguration ( ACPI_PCI_ID *PciId, UINT32 Reg, UINT64 Value, UINT32 Width); #endif /* * Miscellaneous */ #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsReadable BOOLEAN AcpiOsReadable ( void *Pointer, ACPI_SIZE Length); #endif #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsWritable BOOLEAN AcpiOsWritable ( void *Pointer, ACPI_SIZE Length); #endif #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsGetTimer UINT64 AcpiOsGetTimer ( void); #endif #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsSignal ACPI_STATUS AcpiOsSignal ( UINT32 Function, void *Info); #endif /* * Debug print routines */ #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsPrintf void ACPI_INTERNAL_VAR_XFACE AcpiOsPrintf ( const char *Format, ...); #endif #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsVprintf void AcpiOsVprintf ( const char *Format, va_list Args); #endif #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsRedirectOutput void AcpiOsRedirectOutput ( void *Destination); #endif /* * Debug input */ #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsGetLine ACPI_STATUS AcpiOsGetLine ( char *Buffer, UINT32 BufferLength, UINT32 *BytesRead); #endif /* * Obtain ACPI table(s) */ #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsGetTableByName ACPI_STATUS AcpiOsGetTableByName ( char *Signature, UINT32 Instance, ACPI_TABLE_HEADER **Table, ACPI_PHYSICAL_ADDRESS *Address); #endif #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsGetTableByIndex ACPI_STATUS AcpiOsGetTableByIndex ( UINT32 Index, ACPI_TABLE_HEADER **Table, UINT32 *Instance, ACPI_PHYSICAL_ADDRESS *Address); #endif #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsGetTableByAddress ACPI_STATUS AcpiOsGetTableByAddress ( ACPI_PHYSICAL_ADDRESS Address, ACPI_TABLE_HEADER **Table); #endif /* * Directory manipulation */ #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsOpenDirectory void * AcpiOsOpenDirectory ( char *Pathname, char *WildcardSpec, char RequestedFileType); #endif /* RequesteFileType values */ #define REQUEST_FILE_ONLY 0 #define REQUEST_DIR_ONLY 1 #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsGetNextFilename char * AcpiOsGetNextFilename ( void *DirHandle); #endif #ifndef ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsCloseDirectory void AcpiOsCloseDirectory ( void *DirHandle); #endif #endif /* __ACPIOSXF_H__ */ src/acpica/source/include/acpixf.h000066400000000000000000000577411231470457100174550ustar00rootroot00000000000000/****************************************************************************** * * Name: acpixf.h - External interfaces to the ACPI subsystem * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #ifndef __ACXFACE_H__ #define __ACXFACE_H__ /* Current ACPICA subsystem version in YYYYMMDD format */ #define ACPI_CA_VERSION 0x20140325 #include "acconfig.h" #include "actypes.h" #include "actbl.h" #include "acbuffer.h" /* * Globals that are publically available */ extern UINT32 AcpiCurrentGpeCount; extern ACPI_TABLE_FADT AcpiGbl_FADT; extern BOOLEAN AcpiGbl_SystemAwakeAndRunning; extern BOOLEAN AcpiGbl_ReducedHardware; /* ACPI 5.0 */ extern UINT8 AcpiGbl_OsiData; /* Runtime configuration of debug print levels */ extern UINT32 AcpiDbgLevel; extern UINT32 AcpiDbgLayer; /* ACPICA runtime options */ extern UINT8 AcpiGbl_AutoSerializeMethods; extern UINT8 AcpiGbl_CopyDsdtLocally; extern UINT8 AcpiGbl_CreateOsiMethod; extern UINT8 AcpiGbl_DisableAutoRepair; extern UINT8 AcpiGbl_DisableSsdtTableInstall; extern UINT8 AcpiGbl_DoNotUseXsdt; extern UINT8 AcpiGbl_EnableAmlDebugObject; extern UINT8 AcpiGbl_EnableInterpreterSlack; extern UINT32 AcpiGbl_TraceFlags; extern ACPI_NAME AcpiGbl_TraceMethodName; extern UINT8 AcpiGbl_TruncateIoAddresses; extern UINT8 AcpiGbl_Use32BitFadtAddresses; extern UINT8 AcpiGbl_UseDefaultRegisterWidths; /* * Hardware-reduced prototypes. All interfaces that use these macros will * be configured out of the ACPICA build if the ACPI_REDUCED_HARDWARE flag * is set to TRUE. */ #if (!ACPI_REDUCED_HARDWARE) #define ACPI_HW_DEPENDENT_RETURN_STATUS(Prototype) \ Prototype; #define ACPI_HW_DEPENDENT_RETURN_OK(Prototype) \ Prototype; #define ACPI_HW_DEPENDENT_RETURN_VOID(Prototype) \ Prototype; #else #define ACPI_HW_DEPENDENT_RETURN_STATUS(Prototype) \ static ACPI_INLINE Prototype {return(AE_NOT_CONFIGURED);} #define ACPI_HW_DEPENDENT_RETURN_OK(Prototype) \ static ACPI_INLINE Prototype {return(AE_OK);} #define ACPI_HW_DEPENDENT_RETURN_VOID(Prototype) \ static ACPI_INLINE Prototype {return;} #endif /* !ACPI_REDUCED_HARDWARE */ /* * Initialization */ ACPI_STATUS AcpiInitializeTables ( ACPI_TABLE_DESC *InitialStorage, UINT32 InitialTableCount, BOOLEAN AllowResize); ACPI_STATUS AcpiInitializeSubsystem ( void); ACPI_STATUS AcpiEnableSubsystem ( UINT32 Flags); ACPI_STATUS AcpiInitializeObjects ( UINT32 Flags); ACPI_STATUS AcpiTerminate ( void); /* * Miscellaneous global interfaces */ ACPI_HW_DEPENDENT_RETURN_STATUS ( ACPI_STATUS AcpiEnable ( void)) ACPI_HW_DEPENDENT_RETURN_STATUS ( ACPI_STATUS AcpiDisable ( void)) ACPI_STATUS AcpiSubsystemStatus ( void); ACPI_STATUS AcpiGetSystemInfo ( ACPI_BUFFER *RetBuffer); ACPI_STATUS AcpiGetStatistics ( ACPI_STATISTICS *Stats); const char * AcpiFormatException ( ACPI_STATUS Exception); ACPI_STATUS AcpiPurgeCachedObjects ( void); ACPI_STATUS AcpiInstallInterface ( ACPI_STRING InterfaceName); ACPI_STATUS AcpiRemoveInterface ( ACPI_STRING InterfaceName); ACPI_STATUS AcpiUpdateInterfaces ( UINT8 Action); UINT32 AcpiCheckAddressRange ( ACPI_ADR_SPACE_TYPE SpaceId, ACPI_PHYSICAL_ADDRESS Address, ACPI_SIZE Length, BOOLEAN Warn); ACPI_STATUS AcpiDecodePldBuffer ( UINT8 *InBuffer, ACPI_SIZE Length, ACPI_PLD_INFO **ReturnBuffer); /* * ACPI table load/unload interfaces */ ACPI_STATUS AcpiInstallTable ( ACPI_PHYSICAL_ADDRESS Address, BOOLEAN Physical); ACPI_STATUS AcpiLoadTable ( ACPI_TABLE_HEADER *Table); ACPI_STATUS AcpiUnloadParentTable ( ACPI_HANDLE Object); ACPI_STATUS AcpiLoadTables ( void); /* * ACPI table manipulation interfaces */ ACPI_STATUS AcpiReallocateRootTable ( void); ACPI_STATUS AcpiFindRootPointer ( ACPI_SIZE *RsdpAddress); ACPI_STATUS AcpiGetTableHeader ( ACPI_STRING Signature, UINT32 Instance, ACPI_TABLE_HEADER *OutTableHeader); ACPI_STATUS AcpiGetTable ( ACPI_STRING Signature, UINT32 Instance, ACPI_TABLE_HEADER **OutTable); ACPI_STATUS AcpiGetTableByIndex ( UINT32 TableIndex, ACPI_TABLE_HEADER **OutTable); ACPI_STATUS AcpiInstallTableHandler ( ACPI_TABLE_HANDLER Handler, void *Context); ACPI_STATUS AcpiRemoveTableHandler ( ACPI_TABLE_HANDLER Handler); /* * Namespace and name interfaces */ ACPI_STATUS AcpiWalkNamespace ( ACPI_OBJECT_TYPE Type, ACPI_HANDLE StartObject, UINT32 MaxDepth, ACPI_WALK_CALLBACK DescendingCallback, ACPI_WALK_CALLBACK AscendingCallback, void *Context, void **ReturnValue); ACPI_STATUS AcpiGetDevices ( char *HID, ACPI_WALK_CALLBACK UserFunction, void *Context, void **ReturnValue); ACPI_STATUS AcpiGetName ( ACPI_HANDLE Object, UINT32 NameType, ACPI_BUFFER *RetPathPtr); ACPI_STATUS AcpiGetHandle ( ACPI_HANDLE Parent, ACPI_STRING Pathname, ACPI_HANDLE *RetHandle); ACPI_STATUS AcpiAttachData ( ACPI_HANDLE Object, ACPI_OBJECT_HANDLER Handler, void *Data); ACPI_STATUS AcpiDetachData ( ACPI_HANDLE Object, ACPI_OBJECT_HANDLER Handler); ACPI_STATUS AcpiGetData ( ACPI_HANDLE Object, ACPI_OBJECT_HANDLER Handler, void **Data); ACPI_STATUS AcpiDebugTrace ( char *Name, UINT32 DebugLevel, UINT32 DebugLayer, UINT32 Flags); /* * Object manipulation and enumeration */ ACPI_STATUS AcpiEvaluateObject ( ACPI_HANDLE Object, ACPI_STRING Pathname, ACPI_OBJECT_LIST *ParameterObjects, ACPI_BUFFER *ReturnObjectBuffer); ACPI_STATUS AcpiEvaluateObjectTyped ( ACPI_HANDLE Object, ACPI_STRING Pathname, ACPI_OBJECT_LIST *ExternalParams, ACPI_BUFFER *ReturnBuffer, ACPI_OBJECT_TYPE ReturnType); ACPI_STATUS AcpiGetObjectInfo ( ACPI_HANDLE Object, ACPI_DEVICE_INFO **ReturnBuffer); ACPI_STATUS AcpiInstallMethod ( UINT8 *Buffer); ACPI_STATUS AcpiGetNextObject ( ACPI_OBJECT_TYPE Type, ACPI_HANDLE Parent, ACPI_HANDLE Child, ACPI_HANDLE *OutHandle); ACPI_STATUS AcpiGetType ( ACPI_HANDLE Object, ACPI_OBJECT_TYPE *OutType); ACPI_STATUS AcpiGetParent ( ACPI_HANDLE Object, ACPI_HANDLE *OutHandle); /* * Handler interfaces */ ACPI_STATUS AcpiInstallInitializationHandler ( ACPI_INIT_HANDLER Handler, UINT32 Function); ACPI_HW_DEPENDENT_RETURN_STATUS ( ACPI_STATUS AcpiInstallSciHandler ( ACPI_SCI_HANDLER Address, void *Context)) ACPI_HW_DEPENDENT_RETURN_STATUS ( ACPI_STATUS AcpiRemoveSciHandler ( ACPI_SCI_HANDLER Address)) ACPI_HW_DEPENDENT_RETURN_STATUS ( ACPI_STATUS AcpiInstallGlobalEventHandler ( ACPI_GBL_EVENT_HANDLER Handler, void *Context)) ACPI_HW_DEPENDENT_RETURN_STATUS ( ACPI_STATUS AcpiInstallFixedEventHandler ( UINT32 AcpiEvent, ACPI_EVENT_HANDLER Handler, void *Context)) ACPI_HW_DEPENDENT_RETURN_STATUS ( ACPI_STATUS AcpiRemoveFixedEventHandler ( UINT32 AcpiEvent, ACPI_EVENT_HANDLER Handler)) ACPI_HW_DEPENDENT_RETURN_STATUS ( ACPI_STATUS AcpiInstallGpeHandler ( ACPI_HANDLE GpeDevice, UINT32 GpeNumber, UINT32 Type, ACPI_GPE_HANDLER Address, void *Context)) ACPI_HW_DEPENDENT_RETURN_STATUS ( ACPI_STATUS AcpiRemoveGpeHandler ( ACPI_HANDLE GpeDevice, UINT32 GpeNumber, ACPI_GPE_HANDLER Address)) ACPI_STATUS AcpiInstallNotifyHandler ( ACPI_HANDLE Device, UINT32 HandlerType, ACPI_NOTIFY_HANDLER Handler, void *Context); ACPI_STATUS AcpiRemoveNotifyHandler ( ACPI_HANDLE Device, UINT32 HandlerType, ACPI_NOTIFY_HANDLER Handler); ACPI_STATUS AcpiInstallAddressSpaceHandler ( ACPI_HANDLE Device, ACPI_ADR_SPACE_TYPE SpaceId, ACPI_ADR_SPACE_HANDLER Handler, ACPI_ADR_SPACE_SETUP Setup, void *Context); ACPI_STATUS AcpiRemoveAddressSpaceHandler ( ACPI_HANDLE Device, ACPI_ADR_SPACE_TYPE SpaceId, ACPI_ADR_SPACE_HANDLER Handler); ACPI_STATUS AcpiInstallExceptionHandler ( ACPI_EXCEPTION_HANDLER Handler); ACPI_STATUS AcpiInstallInterfaceHandler ( ACPI_INTERFACE_HANDLER Handler); /* * Global Lock interfaces */ ACPI_HW_DEPENDENT_RETURN_STATUS ( ACPI_STATUS AcpiAcquireGlobalLock ( UINT16 Timeout, UINT32 *Handle)) ACPI_HW_DEPENDENT_RETURN_STATUS ( ACPI_STATUS AcpiReleaseGlobalLock ( UINT32 Handle)) /* * Interfaces to AML mutex objects */ ACPI_STATUS AcpiAcquireMutex ( ACPI_HANDLE Handle, ACPI_STRING Pathname, UINT16 Timeout); ACPI_STATUS AcpiReleaseMutex ( ACPI_HANDLE Handle, ACPI_STRING Pathname); /* * Fixed Event interfaces */ ACPI_HW_DEPENDENT_RETURN_STATUS ( ACPI_STATUS AcpiEnableEvent ( UINT32 Event, UINT32 Flags)) ACPI_HW_DEPENDENT_RETURN_STATUS ( ACPI_STATUS AcpiDisableEvent ( UINT32 Event, UINT32 Flags)) ACPI_HW_DEPENDENT_RETURN_STATUS ( ACPI_STATUS AcpiClearEvent ( UINT32 Event)) ACPI_HW_DEPENDENT_RETURN_STATUS ( ACPI_STATUS AcpiGetEventStatus ( UINT32 Event, ACPI_EVENT_STATUS *EventStatus)) /* * General Purpose Event (GPE) Interfaces */ ACPI_HW_DEPENDENT_RETURN_STATUS ( ACPI_STATUS AcpiUpdateAllGpes ( void)) ACPI_HW_DEPENDENT_RETURN_STATUS ( ACPI_STATUS AcpiEnableGpe ( ACPI_HANDLE GpeDevice, UINT32 GpeNumber)) ACPI_HW_DEPENDENT_RETURN_STATUS ( ACPI_STATUS AcpiDisableGpe ( ACPI_HANDLE GpeDevice, UINT32 GpeNumber)) ACPI_HW_DEPENDENT_RETURN_STATUS ( ACPI_STATUS AcpiClearGpe ( ACPI_HANDLE GpeDevice, UINT32 GpeNumber)) ACPI_HW_DEPENDENT_RETURN_STATUS ( ACPI_STATUS AcpiSetGpe ( ACPI_HANDLE GpeDevice, UINT32 GpeNumber, UINT8 Action)) ACPI_HW_DEPENDENT_RETURN_STATUS ( ACPI_STATUS AcpiFinishGpe ( ACPI_HANDLE GpeDevice, UINT32 GpeNumber)) ACPI_HW_DEPENDENT_RETURN_STATUS ( ACPI_STATUS AcpiSetupGpeForWake ( ACPI_HANDLE ParentDevice, ACPI_HANDLE GpeDevice, UINT32 GpeNumber)) ACPI_HW_DEPENDENT_RETURN_STATUS ( ACPI_STATUS AcpiSetGpeWakeMask ( ACPI_HANDLE GpeDevice, UINT32 GpeNumber, UINT8 Action)) ACPI_HW_DEPENDENT_RETURN_STATUS ( ACPI_STATUS AcpiGetGpeStatus ( ACPI_HANDLE GpeDevice, UINT32 GpeNumber, ACPI_EVENT_STATUS *EventStatus)) ACPI_HW_DEPENDENT_RETURN_STATUS ( ACPI_STATUS AcpiDisableAllGpes ( void)) ACPI_HW_DEPENDENT_RETURN_STATUS ( ACPI_STATUS AcpiEnableAllRuntimeGpes ( void)) ACPI_HW_DEPENDENT_RETURN_STATUS ( ACPI_STATUS AcpiGetGpeDevice ( UINT32 GpeIndex, ACPI_HANDLE *GpeDevice)) ACPI_HW_DEPENDENT_RETURN_STATUS ( ACPI_STATUS AcpiInstallGpeBlock ( ACPI_HANDLE GpeDevice, ACPI_GENERIC_ADDRESS *GpeBlockAddress, UINT32 RegisterCount, UINT32 InterruptNumber)) ACPI_HW_DEPENDENT_RETURN_STATUS ( ACPI_STATUS AcpiRemoveGpeBlock ( ACPI_HANDLE GpeDevice)) /* * Resource interfaces */ typedef ACPI_STATUS (*ACPI_WALK_RESOURCE_CALLBACK) ( ACPI_RESOURCE *Resource, void *Context); ACPI_STATUS AcpiGetVendorResource ( ACPI_HANDLE Device, char *Name, ACPI_VENDOR_UUID *Uuid, ACPI_BUFFER *RetBuffer); ACPI_STATUS AcpiGetCurrentResources ( ACPI_HANDLE Device, ACPI_BUFFER *RetBuffer); ACPI_STATUS AcpiGetPossibleResources ( ACPI_HANDLE Device, ACPI_BUFFER *RetBuffer); ACPI_STATUS AcpiGetEventResources ( ACPI_HANDLE DeviceHandle, ACPI_BUFFER *RetBuffer); ACPI_STATUS AcpiWalkResourceBuffer ( ACPI_BUFFER *Buffer, ACPI_WALK_RESOURCE_CALLBACK UserFunction, void *Context); ACPI_STATUS AcpiWalkResources ( ACPI_HANDLE Device, char *Name, ACPI_WALK_RESOURCE_CALLBACK UserFunction, void *Context); ACPI_STATUS AcpiSetCurrentResources ( ACPI_HANDLE Device, ACPI_BUFFER *InBuffer); ACPI_STATUS AcpiGetIrqRoutingTable ( ACPI_HANDLE Device, ACPI_BUFFER *RetBuffer); ACPI_STATUS AcpiResourceToAddress64 ( ACPI_RESOURCE *Resource, ACPI_RESOURCE_ADDRESS64 *Out); ACPI_STATUS AcpiBufferToResource ( UINT8 *AmlBuffer, UINT16 AmlBufferLength, ACPI_RESOURCE **ResourcePtr); /* * Hardware (ACPI device) interfaces */ ACPI_STATUS AcpiReset ( void); ACPI_STATUS AcpiRead ( UINT64 *Value, ACPI_GENERIC_ADDRESS *Reg); ACPI_STATUS AcpiWrite ( UINT64 Value, ACPI_GENERIC_ADDRESS *Reg); ACPI_HW_DEPENDENT_RETURN_STATUS ( ACPI_STATUS AcpiReadBitRegister ( UINT32 RegisterId, UINT32 *ReturnValue)) ACPI_HW_DEPENDENT_RETURN_STATUS ( ACPI_STATUS AcpiWriteBitRegister ( UINT32 RegisterId, UINT32 Value)) /* * Sleep/Wake interfaces */ ACPI_STATUS AcpiGetSleepTypeData ( UINT8 SleepState, UINT8 *Slp_TypA, UINT8 *Slp_TypB); ACPI_STATUS AcpiEnterSleepStatePrep ( UINT8 SleepState); ACPI_STATUS AcpiEnterSleepState ( UINT8 SleepState); ACPI_HW_DEPENDENT_RETURN_STATUS ( ACPI_STATUS AcpiEnterSleepStateS4bios ( void)) ACPI_STATUS AcpiLeaveSleepStatePrep ( UINT8 SleepState); ACPI_STATUS AcpiLeaveSleepState ( UINT8 SleepState); ACPI_HW_DEPENDENT_RETURN_STATUS ( ACPI_STATUS AcpiSetFirmwareWakingVector ( UINT32 PhysicalAddress)) #if ACPI_MACHINE_WIDTH == 64 ACPI_HW_DEPENDENT_RETURN_STATUS ( ACPI_STATUS AcpiSetFirmwareWakingVector64 ( UINT64 PhysicalAddress)) #endif /* * ACPI Timer interfaces */ ACPI_HW_DEPENDENT_RETURN_STATUS ( ACPI_STATUS AcpiGetTimerResolution ( UINT32 *Resolution)) ACPI_HW_DEPENDENT_RETURN_STATUS ( ACPI_STATUS AcpiGetTimer ( UINT32 *Ticks)) ACPI_HW_DEPENDENT_RETURN_STATUS ( ACPI_STATUS AcpiGetTimerDuration ( UINT32 StartTicks, UINT32 EndTicks, UINT32 *TimeElapsed)) /* * Error/Warning output */ ACPI_PRINTF_LIKE(3) void ACPI_INTERNAL_VAR_XFACE AcpiError ( const char *ModuleName, UINT32 LineNumber, const char *Format, ...); ACPI_PRINTF_LIKE(4) void ACPI_INTERNAL_VAR_XFACE AcpiException ( const char *ModuleName, UINT32 LineNumber, ACPI_STATUS Status, const char *Format, ...); ACPI_PRINTF_LIKE(3) void ACPI_INTERNAL_VAR_XFACE AcpiWarning ( const char *ModuleName, UINT32 LineNumber, const char *Format, ...); ACPI_PRINTF_LIKE(3) void ACPI_INTERNAL_VAR_XFACE AcpiInfo ( const char *ModuleName, UINT32 LineNumber, const char *Format, ...); ACPI_PRINTF_LIKE(3) void ACPI_INTERNAL_VAR_XFACE AcpiBiosError ( const char *ModuleName, UINT32 LineNumber, const char *Format, ...); ACPI_PRINTF_LIKE(3) void ACPI_INTERNAL_VAR_XFACE AcpiBiosWarning ( const char *ModuleName, UINT32 LineNumber, const char *Format, ...); /* * Debug output */ #ifdef ACPI_DEBUG_OUTPUT ACPI_PRINTF_LIKE(6) void ACPI_INTERNAL_VAR_XFACE AcpiDebugPrint ( UINT32 RequestedDebugLevel, UINT32 LineNumber, const char *FunctionName, const char *ModuleName, UINT32 ComponentId, const char *Format, ...); ACPI_PRINTF_LIKE(6) void ACPI_INTERNAL_VAR_XFACE AcpiDebugPrintRaw ( UINT32 RequestedDebugLevel, UINT32 LineNumber, const char *FunctionName, const char *ModuleName, UINT32 ComponentId, const char *Format, ...); #endif #endif /* __ACXFACE_H__ */ src/acpica/source/include/acpredef.h000066400000000000000000001337421231470457100177500ustar00rootroot00000000000000/****************************************************************************** * * Name: acpredef - Information table for ACPI predefined methods and objects * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #ifndef __ACPREDEF_H__ #define __ACPREDEF_H__ /****************************************************************************** * * Return Package types * * 1) PTYPE1 packages do not contain subpackages. * * ACPI_PTYPE1_FIXED: Fixed-length length, 1 or 2 object types: * object type * count * object type * count * * ACPI_PTYPE1_VAR: Variable-length length. Zero-length package is allowed: * object type (Int/Buf/Ref) * * ACPI_PTYPE1_OPTION: Package has some required and some optional elements * (Used for _PRW) * * * 2) PTYPE2 packages contain a Variable-length number of subpackages. Each * of the different types describe the contents of each of the subpackages. * * ACPI_PTYPE2: Each subpackage contains 1 or 2 object types. Zero-length * parent package is allowed: * object type * count * object type * count * (Used for _ALR,_MLS,_PSS,_TRT,_TSS) * * ACPI_PTYPE2_COUNT: Each subpackage has a count as first element. * Zero-length parent package is allowed: * object type * (Used for _CSD,_PSD,_TSD) * * ACPI_PTYPE2_PKG_COUNT: Count of subpackages at start, 1 or 2 object types: * object type * count * object type * count * (Used for _CST) * * ACPI_PTYPE2_FIXED: Each subpackage is of Fixed-length. Zero-length * parent package is allowed. * (Used for _PRT) * * ACPI_PTYPE2_MIN: Each subpackage has a Variable-length but minimum length. * Zero-length parent package is allowed: * (Used for _HPX) * * ACPI_PTYPE2_REV_FIXED: Revision at start, each subpackage is Fixed-length * (Used for _ART, _FPS) * * ACPI_PTYPE2_FIX_VAR: Each subpackage consists of some fixed-length elements * followed by an optional element. Zero-length parent package is allowed. * object type * count * object type * count = 0 (optional) * (Used for _DLM) * *****************************************************************************/ enum AcpiReturnPackageTypes { ACPI_PTYPE1_FIXED = 1, ACPI_PTYPE1_VAR = 2, ACPI_PTYPE1_OPTION = 3, ACPI_PTYPE2 = 4, ACPI_PTYPE2_COUNT = 5, ACPI_PTYPE2_PKG_COUNT = 6, ACPI_PTYPE2_FIXED = 7, ACPI_PTYPE2_MIN = 8, ACPI_PTYPE2_REV_FIXED = 9, ACPI_PTYPE2_FIX_VAR = 10 }; /* Support macros for users of the predefined info table */ #define METHOD_PREDEF_ARGS_MAX 4 #define METHOD_ARG_BIT_WIDTH 3 #define METHOD_ARG_MASK 0x0007 #define ARG_COUNT_IS_MINIMUM 0x8000 #define METHOD_MAX_ARG_TYPE ACPI_TYPE_PACKAGE #define METHOD_GET_ARG_COUNT(ArgList) ((ArgList) & METHOD_ARG_MASK) #define METHOD_GET_NEXT_TYPE(ArgList) (((ArgList) >>= METHOD_ARG_BIT_WIDTH) & METHOD_ARG_MASK) /* Macros used to build the predefined info table */ #define METHOD_0ARGS 0 #define METHOD_1ARGS(a1) (1 | (a1 << 3)) #define METHOD_2ARGS(a1,a2) (2 | (a1 << 3) | (a2 << 6)) #define METHOD_3ARGS(a1,a2,a3) (3 | (a1 << 3) | (a2 << 6) | (a3 << 9)) #define METHOD_4ARGS(a1,a2,a3,a4) (4 | (a1 << 3) | (a2 << 6) | (a3 << 9) | (a4 << 12)) #define METHOD_RETURNS(type) (type) #define METHOD_NO_RETURN_VALUE 0 #define PACKAGE_INFO(a,b,c,d,e,f) {{{(a),(b),(c),(d)}, ((((UINT16)(f)) << 8) | (e)), 0}} /* Support macros for the resource descriptor info table */ #define WIDTH_1 0x0001 #define WIDTH_2 0x0002 #define WIDTH_3 0x0004 #define WIDTH_8 0x0008 #define WIDTH_16 0x0010 #define WIDTH_32 0x0020 #define WIDTH_64 0x0040 #define VARIABLE_DATA 0x0080 #define NUM_RESOURCE_WIDTHS 8 #define WIDTH_ADDRESS WIDTH_16 | WIDTH_32 | WIDTH_64 #ifdef ACPI_CREATE_PREDEFINED_TABLE /****************************************************************************** * * Predefined method/object information table. * * These are the names that can actually be evaluated via AcpiEvaluateObject. * Not present in this table are the following: * * 1) Predefined/Reserved names that are never evaluated via * AcpiEvaluateObject: * _Lxx and _Exx GPE methods * _Qxx EC methods * _T_x compiler temporary variables * _Wxx wake events * * 2) Predefined names that never actually exist within the AML code: * Predefined resource descriptor field names * * 3) Predefined names that are implemented within ACPICA: * _OSI * * The main entries in the table each contain the following items: * * Name - The ACPI reserved name * ArgumentList - Contains (in 16 bits), the number of required * arguments to the method (3 bits), and a 3-bit type * field for each argument (up to 4 arguments). The * METHOD_?ARGS macros generate the correct packed data. * ExpectedBtypes - Allowed type(s) for the return value. * 0 means that no return value is expected. * * For methods that return packages, the next entry in the table contains * information about the expected structure of the package. This information * is saved here (rather than in a separate table) in order to minimize the * overall size of the stored data. * * Note: The additional braces are intended to promote portability. * * Note2: Table is used by the kernel-resident subsystem, the iASL compiler, * and the AcpiHelp utility. * * TBD: _PRT - currently ignore reversed entries. Attempt to fix in nsrepair. * Possibly fixing package elements like _BIF, etc. * *****************************************************************************/ const ACPI_PREDEFINED_INFO AcpiGbl_PredefinedMethods[] = { {{"_AC0", METHOD_0ARGS, METHOD_RETURNS (ACPI_RTYPE_INTEGER)}}, {{"_AC1", METHOD_0ARGS, METHOD_RETURNS (ACPI_RTYPE_INTEGER)}}, {{"_AC2", METHOD_0ARGS, METHOD_RETURNS (ACPI_RTYPE_INTEGER)}}, {{"_AC3", METHOD_0ARGS, METHOD_RETURNS (ACPI_RTYPE_INTEGER)}}, {{"_AC4", METHOD_0ARGS, METHOD_RETURNS (ACPI_RTYPE_INTEGER)}}, {{"_AC5", METHOD_0ARGS, METHOD_RETURNS (ACPI_RTYPE_INTEGER)}}, {{"_AC6", METHOD_0ARGS, METHOD_RETURNS (ACPI_RTYPE_INTEGER)}}, {{"_AC7", METHOD_0ARGS, METHOD_RETURNS (ACPI_RTYPE_INTEGER)}}, {{"_AC8", METHOD_0ARGS, METHOD_RETURNS (ACPI_RTYPE_INTEGER)}}, {{"_AC9", METHOD_0ARGS, METHOD_RETURNS (ACPI_RTYPE_INTEGER)}}, {{"_ADR", METHOD_0ARGS, METHOD_RETURNS (ACPI_RTYPE_INTEGER)}}, {{"_AEI", METHOD_0ARGS, METHOD_RETURNS (ACPI_RTYPE_BUFFER)}}, {{"_AL0", METHOD_0ARGS, METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}}, /* Variable-length (Refs) */ PACKAGE_INFO (ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0,0,0,0), {{"_AL1", METHOD_0ARGS, METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}}, /* Variable-length (Refs) */ PACKAGE_INFO (ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0,0,0,0), {{"_AL2", METHOD_0ARGS, METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}}, /* Variable-length (Refs) */ PACKAGE_INFO (ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0,0,0,0), {{"_AL3", METHOD_0ARGS, METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}}, /* Variable-length (Refs) */ PACKAGE_INFO (ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0,0,0,0), {{"_AL4", METHOD_0ARGS, METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}}, /* Variable-length (Refs) */ PACKAGE_INFO (ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0,0,0,0), {{"_AL5", METHOD_0ARGS, METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}}, /* Variable-length (Refs) */ PACKAGE_INFO (ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0,0,0,0), {{"_AL6", METHOD_0ARGS, METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}}, /* Variable-length (Refs) */ PACKAGE_INFO (ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0,0,0,0), {{"_AL7", METHOD_0ARGS, METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}}, /* Variable-length (Refs) */ PACKAGE_INFO (ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0,0,0,0), {{"_AL8", METHOD_0ARGS, METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}}, /* Variable-length (Refs) */ PACKAGE_INFO (ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0,0,0,0), {{"_AL9", METHOD_0ARGS, METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}}, /* Variable-length (Refs) */ PACKAGE_INFO (ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0,0,0,0), {{"_ALC", METHOD_0ARGS, METHOD_RETURNS (ACPI_RTYPE_INTEGER)}}, {{"_ALI", METHOD_0ARGS, METHOD_RETURNS (ACPI_RTYPE_INTEGER)}}, {{"_ALP", METHOD_0ARGS, METHOD_RETURNS (ACPI_RTYPE_INTEGER)}}, {{"_ALR", METHOD_0ARGS, METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}}, /* Variable-length (Pkgs) each 2 (Ints) */ PACKAGE_INFO (ACPI_PTYPE2, ACPI_RTYPE_INTEGER, 2,0,0,0), {{"_ALT", METHOD_0ARGS, METHOD_RETURNS (ACPI_RTYPE_INTEGER)}}, {{"_ART", METHOD_0ARGS, METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}}, /* Variable-length (1 Int(rev), n Pkg (2 Ref/11 Int) */ PACKAGE_INFO (ACPI_PTYPE2_REV_FIXED, ACPI_RTYPE_REFERENCE, 2, ACPI_RTYPE_INTEGER, 11,0), {{"_BBN", METHOD_0ARGS, METHOD_RETURNS (ACPI_RTYPE_INTEGER)}}, {{"_BCL", METHOD_0ARGS, METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}}, /* Variable-length (Ints) */ PACKAGE_INFO (ACPI_PTYPE1_VAR, ACPI_RTYPE_INTEGER, 0,0,0,0), {{"_BCM", METHOD_1ARGS (ACPI_TYPE_INTEGER), METHOD_NO_RETURN_VALUE}}, {{"_BCT", METHOD_1ARGS (ACPI_TYPE_INTEGER), METHOD_RETURNS (ACPI_RTYPE_INTEGER)}}, {{"_BDN", METHOD_0ARGS, METHOD_RETURNS (ACPI_RTYPE_INTEGER)}}, {{"_BFS", METHOD_1ARGS (ACPI_TYPE_INTEGER), METHOD_NO_RETURN_VALUE}}, {{"_BIF", METHOD_0ARGS, METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}}, /* Fixed-length (9 Int),(4 Str) */ PACKAGE_INFO (ACPI_PTYPE1_FIXED, ACPI_RTYPE_INTEGER, 9, ACPI_RTYPE_STRING, 4,0), {{"_BIX", METHOD_0ARGS, METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}}, /* Fixed-length (16 Int),(4 Str) */ PACKAGE_INFO (ACPI_PTYPE1_FIXED, ACPI_RTYPE_INTEGER, 16, ACPI_RTYPE_STRING, 4,0), {{"_BLT", METHOD_3ARGS (ACPI_TYPE_INTEGER, ACPI_TYPE_INTEGER, ACPI_TYPE_INTEGER), METHOD_NO_RETURN_VALUE}}, {{"_BMA", METHOD_1ARGS (ACPI_TYPE_INTEGER), METHOD_RETURNS (ACPI_RTYPE_INTEGER)}}, {{"_BMC", METHOD_1ARGS (ACPI_TYPE_INTEGER), METHOD_NO_RETURN_VALUE}}, {{"_BMD", METHOD_0ARGS, METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}}, /* Fixed-length (5 Int) */ PACKAGE_INFO (ACPI_PTYPE1_FIXED, ACPI_RTYPE_INTEGER, 5,0,0,0), {{"_BMS", METHOD_1ARGS (ACPI_TYPE_INTEGER), METHOD_RETURNS (ACPI_RTYPE_INTEGER)}}, {{"_BQC", METHOD_0ARGS, METHOD_RETURNS (ACPI_RTYPE_INTEGER)}}, {{"_BST", METHOD_0ARGS, METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}}, /* Fixed-length (4 Int) */ PACKAGE_INFO (ACPI_PTYPE1_FIXED, ACPI_RTYPE_INTEGER, 4,0,0,0), {{"_BTM", METHOD_1ARGS (ACPI_TYPE_INTEGER), METHOD_RETURNS (ACPI_RTYPE_INTEGER)}}, {{"_BTP", METHOD_1ARGS (ACPI_TYPE_INTEGER), METHOD_NO_RETURN_VALUE}}, {{"_CBA", METHOD_0ARGS, METHOD_RETURNS (ACPI_RTYPE_INTEGER)}}, /* See PCI firmware spec 3.0 */ {{"_CDM", METHOD_0ARGS, METHOD_RETURNS (ACPI_RTYPE_INTEGER)}}, {{"_CID", METHOD_0ARGS, METHOD_RETURNS (ACPI_RTYPE_INTEGER | ACPI_RTYPE_STRING | ACPI_RTYPE_PACKAGE)}}, /* Variable-length (Ints/Strs) */ PACKAGE_INFO (ACPI_PTYPE1_VAR, ACPI_RTYPE_INTEGER | ACPI_RTYPE_STRING, 0,0,0,0), {{"_CLS", METHOD_0ARGS, METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}}, /* Fixed-length (3 Int) */ PACKAGE_INFO (ACPI_PTYPE1_FIXED, ACPI_RTYPE_INTEGER, 3,0,0,0), {{"_CPC", METHOD_0ARGS, METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}}, /* Variable-length (Ints/Bufs) */ PACKAGE_INFO (ACPI_PTYPE1_VAR, ACPI_RTYPE_INTEGER | ACPI_RTYPE_BUFFER, 0,0,0,0), {{"_CRS", METHOD_0ARGS, METHOD_RETURNS (ACPI_RTYPE_BUFFER)}}, {{"_CRT", METHOD_0ARGS, METHOD_RETURNS (ACPI_RTYPE_INTEGER)}}, {{"_CSD", METHOD_0ARGS, METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}}, /* Variable-length (1 Int(n), n-1 Int) */ PACKAGE_INFO (ACPI_PTYPE2_COUNT, ACPI_RTYPE_INTEGER, 0,0,0,0), {{"_CST", METHOD_0ARGS, METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}}, /* Variable-length (1 Int(n), n Pkg (1 Buf/3 Int) */ PACKAGE_INFO (ACPI_PTYPE2_PKG_COUNT,ACPI_RTYPE_BUFFER, 1, ACPI_RTYPE_INTEGER, 3,0), {{"_CWS", METHOD_1ARGS (ACPI_TYPE_INTEGER), METHOD_RETURNS (ACPI_RTYPE_INTEGER)}}, {{"_DCK", METHOD_1ARGS (ACPI_TYPE_INTEGER), METHOD_RETURNS (ACPI_RTYPE_INTEGER)}}, {{"_DCS", METHOD_0ARGS, METHOD_RETURNS (ACPI_RTYPE_INTEGER)}}, {{"_DDC", METHOD_1ARGS (ACPI_TYPE_INTEGER), METHOD_RETURNS (ACPI_RTYPE_INTEGER | ACPI_RTYPE_BUFFER)}}, {{"_DDN", METHOD_0ARGS, METHOD_RETURNS (ACPI_RTYPE_STRING)}}, {{"_DEP", METHOD_0ARGS, METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}}, /* Variable-length (Refs) */ PACKAGE_INFO (ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0,0,0,0), {{"_DGS", METHOD_0ARGS, METHOD_RETURNS (ACPI_RTYPE_INTEGER)}}, {{"_DIS", METHOD_0ARGS, METHOD_NO_RETURN_VALUE}}, {{"_DLM", METHOD_0ARGS, METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}}, /* Variable-length (Pkgs) each (1 Ref, 0/1 Optional Buf/Ref) */ PACKAGE_INFO (ACPI_PTYPE2_FIX_VAR, ACPI_RTYPE_REFERENCE, 1, ACPI_RTYPE_REFERENCE | ACPI_RTYPE_BUFFER, 0,0), {{"_DMA", METHOD_0ARGS, METHOD_RETURNS (ACPI_RTYPE_BUFFER)}}, {{"_DOD", METHOD_0ARGS, METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}}, /* Variable-length (Ints) */ PACKAGE_INFO (ACPI_PTYPE1_VAR, ACPI_RTYPE_INTEGER, 0,0,0,0), {{"_DOS", METHOD_1ARGS (ACPI_TYPE_INTEGER), METHOD_NO_RETURN_VALUE}}, {{"_DSM", METHOD_4ARGS (ACPI_TYPE_BUFFER, ACPI_TYPE_INTEGER, ACPI_TYPE_INTEGER, ACPI_TYPE_PACKAGE), METHOD_RETURNS (ACPI_RTYPE_ALL)}}, /* Must return a value, but it can be of any type */ {{"_DSS", METHOD_1ARGS (ACPI_TYPE_INTEGER), METHOD_NO_RETURN_VALUE}}, {{"_DSW", METHOD_3ARGS (ACPI_TYPE_INTEGER, ACPI_TYPE_INTEGER, ACPI_TYPE_INTEGER), METHOD_NO_RETURN_VALUE}}, {{"_DTI", METHOD_1ARGS (ACPI_TYPE_INTEGER), METHOD_NO_RETURN_VALUE}}, {{"_EC_", METHOD_0ARGS, METHOD_RETURNS (ACPI_RTYPE_INTEGER)}}, {{"_EDL", METHOD_0ARGS, METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}}, /* Variable-length (Refs)*/ PACKAGE_INFO (ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0,0,0,0), {{"_EJ0", METHOD_1ARGS (ACPI_TYPE_INTEGER), METHOD_NO_RETURN_VALUE}}, {{"_EJ1", METHOD_1ARGS (ACPI_TYPE_INTEGER), METHOD_NO_RETURN_VALUE}}, {{"_EJ2", METHOD_1ARGS (ACPI_TYPE_INTEGER), METHOD_NO_RETURN_VALUE}}, {{"_EJ3", METHOD_1ARGS (ACPI_TYPE_INTEGER), METHOD_NO_RETURN_VALUE}}, {{"_EJ4", METHOD_1ARGS (ACPI_TYPE_INTEGER), METHOD_NO_RETURN_VALUE}}, {{"_EJD", METHOD_0ARGS, METHOD_RETURNS (ACPI_RTYPE_STRING)}}, {{"_ERR", METHOD_3ARGS (ACPI_TYPE_INTEGER, ACPI_TYPE_STRING, ACPI_TYPE_INTEGER), METHOD_RETURNS (ACPI_RTYPE_INTEGER)}}, /* Internal use only, used by ACPICA test suites */ {{"_EVT", METHOD_1ARGS (ACPI_TYPE_INTEGER), METHOD_NO_RETURN_VALUE}}, {{"_FDE", METHOD_0ARGS, METHOD_RETURNS (ACPI_RTYPE_BUFFER)}}, {{"_FDI", METHOD_0ARGS, METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}}, /* Fixed-length (16 Int) */ PACKAGE_INFO (ACPI_PTYPE1_FIXED, ACPI_RTYPE_INTEGER, 16,0,0,0), {{"_FDM", METHOD_1ARGS (ACPI_TYPE_INTEGER), METHOD_NO_RETURN_VALUE}}, {{"_FIF", METHOD_0ARGS, METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}}, /* Fixed-length (4 Int) */ PACKAGE_INFO (ACPI_PTYPE1_FIXED, ACPI_RTYPE_INTEGER, 4,0,0,0), {{"_FIX", METHOD_0ARGS, METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}}, /* Variable-length (Ints) */ PACKAGE_INFO (ACPI_PTYPE1_VAR, ACPI_RTYPE_INTEGER, 0,0,0,0), {{"_FPS", METHOD_0ARGS, METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}}, /* Variable-length (1 Int(rev), n Pkg (5 Int) */ PACKAGE_INFO (ACPI_PTYPE2_REV_FIXED,ACPI_RTYPE_INTEGER, 5, 0,0,0), {{"_FSL", METHOD_1ARGS (ACPI_TYPE_INTEGER), METHOD_NO_RETURN_VALUE}}, {{"_FST", METHOD_0ARGS, METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}}, /* Fixed-length (3 Int) */ PACKAGE_INFO (ACPI_PTYPE1_FIXED, ACPI_RTYPE_INTEGER, 3,0,0,0), {{"_GAI", METHOD_0ARGS, METHOD_RETURNS (ACPI_RTYPE_INTEGER)}}, {{"_GCP", METHOD_0ARGS, METHOD_RETURNS (ACPI_RTYPE_INTEGER)}}, {{"_GHL", METHOD_0ARGS, METHOD_RETURNS (ACPI_RTYPE_INTEGER)}}, {{"_GLK", METHOD_0ARGS, METHOD_RETURNS (ACPI_RTYPE_INTEGER)}}, {{"_GPD", METHOD_0ARGS, METHOD_RETURNS (ACPI_RTYPE_INTEGER)}}, {{"_GPE", METHOD_0ARGS, METHOD_RETURNS (ACPI_RTYPE_INTEGER)}}, /* _GPE method, not _GPE scope */ {{"_GRT", METHOD_0ARGS, METHOD_RETURNS (ACPI_RTYPE_BUFFER)}}, {{"_GSB", METHOD_0ARGS, METHOD_RETURNS (ACPI_RTYPE_INTEGER)}}, {{"_GTF", METHOD_0ARGS, METHOD_RETURNS (ACPI_RTYPE_BUFFER)}}, {{"_GTM", METHOD_0ARGS, METHOD_RETURNS (ACPI_RTYPE_BUFFER)}}, {{"_GTS", METHOD_1ARGS (ACPI_TYPE_INTEGER), METHOD_NO_RETURN_VALUE}}, {{"_GWS", METHOD_1ARGS (ACPI_TYPE_INTEGER), METHOD_RETURNS (ACPI_RTYPE_INTEGER)}}, {{"_HID", METHOD_0ARGS, METHOD_RETURNS (ACPI_RTYPE_INTEGER | ACPI_RTYPE_STRING)}}, {{"_HOT", METHOD_0ARGS, METHOD_RETURNS (ACPI_RTYPE_INTEGER)}}, {{"_HPP", METHOD_0ARGS, METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}}, /* Fixed-length (4 Int) */ PACKAGE_INFO (ACPI_PTYPE1_FIXED, ACPI_RTYPE_INTEGER, 4,0,0,0), /* * For _HPX, a single package is returned, containing a variable-length number * of subpackages. Each subpackage contains a PCI record setting. * There are several different type of record settings, of different * lengths, but all elements of all settings are Integers. */ {{"_HPX", METHOD_0ARGS, METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}}, /* Variable-length (Pkgs) each (var Ints) */ PACKAGE_INFO (ACPI_PTYPE2_MIN, ACPI_RTYPE_INTEGER, 5,0,0,0), {{"_HRV", METHOD_0ARGS, METHOD_RETURNS (ACPI_RTYPE_INTEGER)}}, {{"_IFT", METHOD_0ARGS, METHOD_RETURNS (ACPI_RTYPE_INTEGER)}}, /* See IPMI spec */ {{"_INI", METHOD_0ARGS, METHOD_NO_RETURN_VALUE}}, {{"_IRC", METHOD_0ARGS, METHOD_NO_RETURN_VALUE}}, {{"_LCK", METHOD_1ARGS (ACPI_TYPE_INTEGER), METHOD_NO_RETURN_VALUE}}, {{"_LID", METHOD_0ARGS, METHOD_RETURNS (ACPI_RTYPE_INTEGER)}}, {{"_MAT", METHOD_0ARGS, METHOD_RETURNS (ACPI_RTYPE_BUFFER)}}, {{"_MBM", METHOD_0ARGS, METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}}, /* Fixed-length (8 Int) */ PACKAGE_INFO (ACPI_PTYPE1_FIXED, ACPI_RTYPE_INTEGER, 8,0,0,0), {{"_MLS", METHOD_0ARGS, METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}}, /* Variable-length (Pkgs) each (1 Str/1 Buf) */ PACKAGE_INFO (ACPI_PTYPE2, ACPI_RTYPE_STRING, 1, ACPI_RTYPE_BUFFER, 1,0), {{"_MSG", METHOD_1ARGS (ACPI_TYPE_INTEGER), METHOD_NO_RETURN_VALUE}}, {{"_MSM", METHOD_4ARGS (ACPI_TYPE_INTEGER, ACPI_TYPE_INTEGER, ACPI_TYPE_INTEGER, ACPI_TYPE_INTEGER), METHOD_RETURNS (ACPI_RTYPE_INTEGER)}}, {{"_NTT", METHOD_0ARGS, METHOD_RETURNS (ACPI_RTYPE_INTEGER)}}, {{"_OFF", METHOD_0ARGS, METHOD_NO_RETURN_VALUE}}, {{"_ON_", METHOD_0ARGS, METHOD_NO_RETURN_VALUE}}, {{"_OS_", METHOD_0ARGS, METHOD_RETURNS (ACPI_RTYPE_STRING)}}, {{"_OSC", METHOD_4ARGS (ACPI_TYPE_BUFFER, ACPI_TYPE_INTEGER, ACPI_TYPE_INTEGER, ACPI_TYPE_BUFFER), METHOD_RETURNS (ACPI_RTYPE_BUFFER)}}, {{"_OST", METHOD_3ARGS (ACPI_TYPE_INTEGER, ACPI_TYPE_INTEGER, ACPI_TYPE_BUFFER), METHOD_NO_RETURN_VALUE}}, {{"_PAI", METHOD_1ARGS (ACPI_TYPE_INTEGER), METHOD_RETURNS (ACPI_RTYPE_INTEGER)}}, {{"_PCL", METHOD_0ARGS, METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}}, /* Variable-length (Refs) */ PACKAGE_INFO (ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0,0,0,0), {{"_PCT", METHOD_0ARGS, METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}}, /* Fixed-length (2 Buf) */ PACKAGE_INFO (ACPI_PTYPE1_FIXED, ACPI_RTYPE_BUFFER, 2,0,0,0), {{"_PDC", METHOD_1ARGS (ACPI_TYPE_BUFFER), METHOD_NO_RETURN_VALUE}}, {{"_PDL", METHOD_0ARGS, METHOD_RETURNS (ACPI_RTYPE_INTEGER)}}, {{"_PIC", METHOD_1ARGS (ACPI_TYPE_INTEGER), METHOD_NO_RETURN_VALUE}}, {{"_PIF", METHOD_0ARGS, METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}}, /* Fixed-length (3 Int),(3 Str) */ PACKAGE_INFO (ACPI_PTYPE1_FIXED, ACPI_RTYPE_INTEGER, 3, ACPI_RTYPE_STRING, 3,0), {{"_PLD", METHOD_0ARGS, METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}}, /* Variable-length (Bufs) */ PACKAGE_INFO (ACPI_PTYPE1_VAR, ACPI_RTYPE_BUFFER, 0,0,0,0), {{"_PMC", METHOD_0ARGS, METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}}, /* Fixed-length (11 Int),(3 Str) */ PACKAGE_INFO (ACPI_PTYPE1_FIXED, ACPI_RTYPE_INTEGER, 11, ACPI_RTYPE_STRING, 3,0), {{"_PMD", METHOD_0ARGS, METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}}, /* Variable-length (Refs) */ PACKAGE_INFO (ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0,0,0,0), {{"_PMM", METHOD_0ARGS, METHOD_RETURNS (ACPI_RTYPE_INTEGER)}}, {{"_PPC", METHOD_0ARGS, METHOD_RETURNS (ACPI_RTYPE_INTEGER)}}, {{"_PPE", METHOD_0ARGS, METHOD_RETURNS (ACPI_RTYPE_INTEGER)}}, /* See dig64 spec */ {{"_PR0", METHOD_0ARGS, METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}}, /* Variable-length (Refs) */ PACKAGE_INFO (ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0,0,0,0), {{"_PR1", METHOD_0ARGS, METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}}, /* Variable-length (Refs) */ PACKAGE_INFO (ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0,0,0,0), {{"_PR2", METHOD_0ARGS, METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}}, /* Variable-length (Refs) */ PACKAGE_INFO (ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0,0,0,0), {{"_PR3", METHOD_0ARGS, METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}}, /* Variable-length (Refs) */ PACKAGE_INFO (ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0,0,0,0), {{"_PRE", METHOD_0ARGS, METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}}, /* Variable-length (Refs) */ PACKAGE_INFO (ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0,0,0,0), {{"_PRL", METHOD_0ARGS, METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}}, /* Variable-length (Refs) */ PACKAGE_INFO (ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0,0,0,0), {{"_PRP", METHOD_0ARGS, METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}}, /* Variable-length (Pkgs) each: 1 Str, 1 Int/Str/Pkg */ PACKAGE_INFO (ACPI_PTYPE2, ACPI_RTYPE_STRING, 1, ACPI_RTYPE_INTEGER | ACPI_RTYPE_STRING | ACPI_RTYPE_PACKAGE | ACPI_RTYPE_REFERENCE, 1,0), {{"_PRS", METHOD_0ARGS, METHOD_RETURNS (ACPI_RTYPE_BUFFER)}}, /* * For _PRT, many BIOSs reverse the 3rd and 4th Package elements (Source * and SourceIndex). This bug is so prevalent that there is code in the * ACPICA Resource Manager to detect this and switch them back. For now, * do not allow and issue a warning. To allow this and eliminate the * warning, add the ACPI_RTYPE_REFERENCE type to the 4th element (index 3) * in the statement below. */ {{"_PRT", METHOD_0ARGS, METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}}, /* Variable-length (Pkgs) each (4): Int,Int,Int/Ref,Int */ PACKAGE_INFO (ACPI_PTYPE2_FIXED, 4, ACPI_RTYPE_INTEGER, ACPI_RTYPE_INTEGER, ACPI_RTYPE_INTEGER | ACPI_RTYPE_REFERENCE, ACPI_RTYPE_INTEGER), {{"_PRW", METHOD_0ARGS, METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}}, /* Variable-length (Pkgs) each: Pkg/Int,Int,[Variable-length Refs] (Pkg is Ref/Int) */ PACKAGE_INFO (ACPI_PTYPE1_OPTION, 2, ACPI_RTYPE_INTEGER | ACPI_RTYPE_PACKAGE, ACPI_RTYPE_INTEGER, ACPI_RTYPE_REFERENCE, 0), {{"_PS0", METHOD_0ARGS, METHOD_NO_RETURN_VALUE}}, {{"_PS1", METHOD_0ARGS, METHOD_NO_RETURN_VALUE}}, {{"_PS2", METHOD_0ARGS, METHOD_NO_RETURN_VALUE}}, {{"_PS3", METHOD_0ARGS, METHOD_NO_RETURN_VALUE}}, {{"_PSC", METHOD_0ARGS, METHOD_RETURNS (ACPI_RTYPE_INTEGER)}}, {{"_PSD", METHOD_0ARGS, METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}}, /* Variable-length (Pkgs) each (5 Int) with count */ PACKAGE_INFO (ACPI_PTYPE2_COUNT, ACPI_RTYPE_INTEGER, 0,0,0,0), {{"_PSE", METHOD_1ARGS (ACPI_TYPE_INTEGER), METHOD_NO_RETURN_VALUE}}, {{"_PSL", METHOD_0ARGS, METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}}, /* Variable-length (Refs) */ PACKAGE_INFO (ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0,0,0,0), {{"_PSR", METHOD_0ARGS, METHOD_RETURNS (ACPI_RTYPE_INTEGER)}}, {{"_PSS", METHOD_0ARGS, METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}}, /* Variable-length (Pkgs) each (6 Int) */ PACKAGE_INFO (ACPI_PTYPE2, ACPI_RTYPE_INTEGER, 6,0,0,0), {{"_PSV", METHOD_0ARGS, METHOD_RETURNS (ACPI_RTYPE_INTEGER)}}, {{"_PSW", METHOD_1ARGS (ACPI_TYPE_INTEGER), METHOD_NO_RETURN_VALUE}}, {{"_PTC", METHOD_0ARGS, METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}}, /* Fixed-length (2 Buf) */ PACKAGE_INFO (ACPI_PTYPE1_FIXED, ACPI_RTYPE_BUFFER, 2,0,0,0), {{"_PTP", METHOD_2ARGS (ACPI_TYPE_INTEGER, ACPI_TYPE_INTEGER), METHOD_RETURNS (ACPI_RTYPE_INTEGER)}}, {{"_PTS", METHOD_1ARGS (ACPI_TYPE_INTEGER), METHOD_NO_RETURN_VALUE}}, {{"_PUR", METHOD_0ARGS, METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}}, /* Fixed-length (2 Int) */ PACKAGE_INFO (ACPI_PTYPE1_FIXED, ACPI_RTYPE_INTEGER, 2,0,0,0), {{"_PXM", METHOD_0ARGS, METHOD_RETURNS (ACPI_RTYPE_INTEGER)}}, {{"_REG", METHOD_2ARGS (ACPI_TYPE_INTEGER, ACPI_TYPE_INTEGER), METHOD_NO_RETURN_VALUE}}, {{"_REV", METHOD_0ARGS, METHOD_RETURNS (ACPI_RTYPE_INTEGER)}}, {{"_RMV", METHOD_0ARGS, METHOD_RETURNS (ACPI_RTYPE_INTEGER)}}, {{"_ROM", METHOD_2ARGS (ACPI_TYPE_INTEGER, ACPI_TYPE_INTEGER), METHOD_RETURNS (ACPI_RTYPE_BUFFER)}}, {{"_RTV", METHOD_0ARGS, METHOD_RETURNS (ACPI_RTYPE_INTEGER)}}, /* * For _S0_ through _S5_, the ACPI spec defines a return Package * containing 1 Integer, but most DSDTs have it wrong - 2,3, or 4 integers. * Allow this by making the objects "Variable-length length", but all elements * must be Integers. */ {{"_S0_", METHOD_0ARGS, METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}}, /* Fixed-length (1 Int) */ PACKAGE_INFO (ACPI_PTYPE1_VAR, ACPI_RTYPE_INTEGER, 1,0,0,0), {{"_S1_", METHOD_0ARGS, METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}}, /* Fixed-length (1 Int) */ PACKAGE_INFO (ACPI_PTYPE1_VAR, ACPI_RTYPE_INTEGER, 1,0,0,0), {{"_S2_", METHOD_0ARGS, METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}}, /* Fixed-length (1 Int) */ PACKAGE_INFO (ACPI_PTYPE1_VAR, ACPI_RTYPE_INTEGER, 1,0,0,0), {{"_S3_", METHOD_0ARGS, METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}}, /* Fixed-length (1 Int) */ PACKAGE_INFO (ACPI_PTYPE1_VAR, ACPI_RTYPE_INTEGER, 1,0,0,0), {{"_S4_", METHOD_0ARGS, METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}}, /* Fixed-length (1 Int) */ PACKAGE_INFO (ACPI_PTYPE1_VAR, ACPI_RTYPE_INTEGER, 1,0,0,0), {{"_S5_", METHOD_0ARGS, METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}}, /* Fixed-length (1 Int) */ PACKAGE_INFO (ACPI_PTYPE1_VAR, ACPI_RTYPE_INTEGER, 1,0,0,0), {{"_S1D", METHOD_0ARGS, METHOD_RETURNS (ACPI_RTYPE_INTEGER)}}, {{"_S2D", METHOD_0ARGS, METHOD_RETURNS (ACPI_RTYPE_INTEGER)}}, {{"_S3D", METHOD_0ARGS, METHOD_RETURNS (ACPI_RTYPE_INTEGER)}}, {{"_S4D", METHOD_0ARGS, METHOD_RETURNS (ACPI_RTYPE_INTEGER)}}, {{"_S0W", METHOD_0ARGS, METHOD_RETURNS (ACPI_RTYPE_INTEGER)}}, {{"_S1W", METHOD_0ARGS, METHOD_RETURNS (ACPI_RTYPE_INTEGER)}}, {{"_S2W", METHOD_0ARGS, METHOD_RETURNS (ACPI_RTYPE_INTEGER)}}, {{"_S3W", METHOD_0ARGS, METHOD_RETURNS (ACPI_RTYPE_INTEGER)}}, {{"_S4W", METHOD_0ARGS, METHOD_RETURNS (ACPI_RTYPE_INTEGER)}}, {{"_SBS", METHOD_0ARGS, METHOD_RETURNS (ACPI_RTYPE_INTEGER)}}, {{"_SCP", METHOD_1ARGS (ACPI_TYPE_INTEGER) | ARG_COUNT_IS_MINIMUM, METHOD_NO_RETURN_VALUE}}, /* Acpi 1.0 allowed 1 integer arg. Acpi 3.0 expanded to 3 args. Allow both. */ {{"_SDD", METHOD_1ARGS (ACPI_TYPE_BUFFER), METHOD_NO_RETURN_VALUE}}, {{"_SEG", METHOD_0ARGS, METHOD_RETURNS (ACPI_RTYPE_INTEGER)}}, {{"_SHL", METHOD_1ARGS (ACPI_TYPE_INTEGER), METHOD_RETURNS (ACPI_RTYPE_INTEGER)}}, {{"_SLI", METHOD_0ARGS, METHOD_RETURNS (ACPI_RTYPE_BUFFER)}}, {{"_SPD", METHOD_1ARGS (ACPI_TYPE_INTEGER), METHOD_RETURNS (ACPI_RTYPE_INTEGER)}}, {{"_SRS", METHOD_1ARGS (ACPI_TYPE_BUFFER), METHOD_NO_RETURN_VALUE}}, {{"_SRT", METHOD_1ARGS (ACPI_TYPE_BUFFER), METHOD_RETURNS (ACPI_RTYPE_INTEGER)}}, {{"_SRV", METHOD_0ARGS, METHOD_RETURNS (ACPI_RTYPE_INTEGER)}}, /* See IPMI spec */ {{"_SST", METHOD_1ARGS (ACPI_TYPE_INTEGER), METHOD_NO_RETURN_VALUE}}, {{"_STA", METHOD_0ARGS, METHOD_RETURNS (ACPI_RTYPE_INTEGER)}}, {{"_STM", METHOD_3ARGS (ACPI_TYPE_BUFFER, ACPI_TYPE_BUFFER, ACPI_TYPE_BUFFER), METHOD_NO_RETURN_VALUE}}, {{"_STP", METHOD_2ARGS (ACPI_TYPE_INTEGER, ACPI_TYPE_INTEGER), METHOD_RETURNS (ACPI_RTYPE_INTEGER)}}, {{"_STR", METHOD_0ARGS, METHOD_RETURNS (ACPI_RTYPE_BUFFER)}}, {{"_STV", METHOD_2ARGS (ACPI_TYPE_INTEGER, ACPI_TYPE_INTEGER), METHOD_RETURNS (ACPI_RTYPE_INTEGER)}}, {{"_SUB", METHOD_0ARGS, METHOD_RETURNS (ACPI_RTYPE_STRING)}}, {{"_SUN", METHOD_0ARGS, METHOD_RETURNS (ACPI_RTYPE_INTEGER)}}, {{"_SWS", METHOD_0ARGS, METHOD_RETURNS (ACPI_RTYPE_INTEGER)}}, {{"_TC1", METHOD_0ARGS, METHOD_RETURNS (ACPI_RTYPE_INTEGER)}}, {{"_TC2", METHOD_0ARGS, METHOD_RETURNS (ACPI_RTYPE_INTEGER)}}, {{"_TDL", METHOD_0ARGS, METHOD_RETURNS (ACPI_RTYPE_INTEGER)}}, {{"_TIP", METHOD_1ARGS (ACPI_TYPE_INTEGER), METHOD_RETURNS (ACPI_RTYPE_INTEGER)}}, {{"_TIV", METHOD_1ARGS (ACPI_TYPE_INTEGER), METHOD_RETURNS (ACPI_RTYPE_INTEGER)}}, {{"_TMP", METHOD_0ARGS, METHOD_RETURNS (ACPI_RTYPE_INTEGER)}}, {{"_TPC", METHOD_0ARGS, METHOD_RETURNS (ACPI_RTYPE_INTEGER)}}, {{"_TPT", METHOD_1ARGS (ACPI_TYPE_INTEGER), METHOD_NO_RETURN_VALUE}}, {{"_TRT", METHOD_0ARGS, METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}}, /* Variable-length (Pkgs) each 2 Ref/6 Int */ PACKAGE_INFO (ACPI_PTYPE2, ACPI_RTYPE_REFERENCE, 2, ACPI_RTYPE_INTEGER, 6, 0), {{"_TSD", METHOD_0ARGS, METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}}, /* Variable-length (Pkgs) each 5 Int with count */ PACKAGE_INFO (ACPI_PTYPE2_COUNT,ACPI_RTYPE_INTEGER, 5,0,0,0), {{"_TSP", METHOD_0ARGS, METHOD_RETURNS (ACPI_RTYPE_INTEGER)}}, {{"_TSS", METHOD_0ARGS, METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}}, /* Variable-length (Pkgs) each 5 Int */ PACKAGE_INFO (ACPI_PTYPE2, ACPI_RTYPE_INTEGER, 5,0,0,0), {{"_TST", METHOD_0ARGS, METHOD_RETURNS (ACPI_RTYPE_INTEGER)}}, {{"_TTS", METHOD_1ARGS (ACPI_TYPE_INTEGER), METHOD_NO_RETURN_VALUE}}, {{"_TZD", METHOD_0ARGS, METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}}, /* Variable-length (Refs) */ PACKAGE_INFO (ACPI_PTYPE1_VAR, ACPI_RTYPE_REFERENCE, 0,0,0,0), {{"_TZM", METHOD_0ARGS, METHOD_RETURNS (ACPI_RTYPE_REFERENCE)}}, {{"_TZP", METHOD_0ARGS, METHOD_RETURNS (ACPI_RTYPE_INTEGER)}}, {{"_UID", METHOD_0ARGS, METHOD_RETURNS (ACPI_RTYPE_INTEGER | ACPI_RTYPE_STRING)}}, {{"_UPC", METHOD_0ARGS, METHOD_RETURNS (ACPI_RTYPE_PACKAGE)}}, /* Fixed-length (4 Int) */ PACKAGE_INFO (ACPI_PTYPE1_FIXED, ACPI_RTYPE_INTEGER, 4,0,0,0), {{"_UPD", METHOD_0ARGS, METHOD_RETURNS (ACPI_RTYPE_INTEGER)}}, {{"_UPP", METHOD_0ARGS, METHOD_RETURNS (ACPI_RTYPE_INTEGER)}}, {{"_VPO", METHOD_0ARGS, METHOD_RETURNS (ACPI_RTYPE_INTEGER)}}, /* Acpi 1.0 defined _WAK with no return value. Later, it was changed to return a package */ {{"_WAK", METHOD_1ARGS (ACPI_TYPE_INTEGER), METHOD_RETURNS (ACPI_RTYPE_NONE | ACPI_RTYPE_INTEGER | ACPI_RTYPE_PACKAGE)}}, PACKAGE_INFO (ACPI_PTYPE1_FIXED, ACPI_RTYPE_INTEGER, 2,0,0,0), /* Fixed-length (2 Int), but is optional */ /* _WDG/_WED are MS extensions defined by "Windows Instrumentation" */ {{"_WDG", METHOD_0ARGS, METHOD_RETURNS (ACPI_RTYPE_BUFFER)}}, {{"_WED", METHOD_1ARGS (ACPI_TYPE_INTEGER), METHOD_RETURNS (ACPI_RTYPE_INTEGER | ACPI_RTYPE_STRING | ACPI_RTYPE_BUFFER)}}, PACKAGE_INFO (0,0,0,0,0,0) /* Table terminator */ }; #else extern const ACPI_PREDEFINED_INFO AcpiGbl_PredefinedMethods[]; #endif #if (defined ACPI_CREATE_RESOURCE_TABLE && defined ACPI_APPLICATION) /****************************************************************************** * * Predefined names for use in Resource Descriptors. These names do not * appear in the global Predefined Name table (since these names never * appear in actual AML byte code, only in the original ASL) * * Note: Used by iASL compiler and AcpiHelp utility only. * *****************************************************************************/ const ACPI_PREDEFINED_INFO AcpiGbl_ResourceNames[] = { {{"_ADR", WIDTH_16 | WIDTH_64, 0}}, {{"_ALN", WIDTH_8 | WIDTH_16 | WIDTH_32, 0}}, {{"_ASI", WIDTH_8, 0}}, {{"_ASZ", WIDTH_8, 0}}, {{"_ATT", WIDTH_64, 0}}, {{"_BAS", WIDTH_16 | WIDTH_32, 0}}, {{"_BM_", WIDTH_1, 0}}, {{"_DBT", WIDTH_16, 0}}, /* Acpi 5.0 */ {{"_DEC", WIDTH_1, 0}}, {{"_DMA", WIDTH_8, 0}}, {{"_DPL", WIDTH_1, 0}}, /* Acpi 5.0 */ {{"_DRS", WIDTH_16, 0}}, /* Acpi 5.0 */ {{"_END", WIDTH_1, 0}}, /* Acpi 5.0 */ {{"_FLC", WIDTH_2, 0}}, /* Acpi 5.0 */ {{"_GRA", WIDTH_ADDRESS, 0}}, {{"_HE_", WIDTH_1, 0}}, {{"_INT", WIDTH_16 | WIDTH_32, 0}}, {{"_IOR", WIDTH_2, 0}}, /* Acpi 5.0 */ {{"_LEN", WIDTH_8 | WIDTH_ADDRESS, 0}}, {{"_LIN", WIDTH_8, 0}}, /* Acpi 5.0 */ {{"_LL_", WIDTH_1, 0}}, {{"_MAF", WIDTH_1, 0}}, {{"_MAX", WIDTH_ADDRESS, 0}}, {{"_MEM", WIDTH_2, 0}}, {{"_MIF", WIDTH_1, 0}}, {{"_MIN", WIDTH_ADDRESS, 0}}, {{"_MOD", WIDTH_1, 0}}, /* Acpi 5.0 */ {{"_MTP", WIDTH_2, 0}}, {{"_PAR", WIDTH_8, 0}}, /* Acpi 5.0 */ {{"_PHA", WIDTH_1, 0}}, /* Acpi 5.0 */ {{"_PIN", WIDTH_16, 0}}, /* Acpi 5.0 */ {{"_PPI", WIDTH_8, 0}}, /* Acpi 5.0 */ {{"_POL", WIDTH_1 | WIDTH_2, 0}}, /* Acpi 5.0 */ {{"_RBO", WIDTH_8, 0}}, {{"_RBW", WIDTH_8, 0}}, {{"_RNG", WIDTH_1, 0}}, {{"_RT_", WIDTH_8, 0}}, /* Acpi 3.0 */ {{"_RW_", WIDTH_1, 0}}, {{"_RXL", WIDTH_16, 0}}, /* Acpi 5.0 */ {{"_SHR", WIDTH_2, 0}}, {{"_SIZ", WIDTH_2, 0}}, {{"_SLV", WIDTH_1, 0}}, /* Acpi 5.0 */ {{"_SPE", WIDTH_32, 0}}, /* Acpi 5.0 */ {{"_STB", WIDTH_2, 0}}, /* Acpi 5.0 */ {{"_TRA", WIDTH_ADDRESS, 0}}, {{"_TRS", WIDTH_1, 0}}, {{"_TSF", WIDTH_8, 0}}, /* Acpi 3.0 */ {{"_TTP", WIDTH_1, 0}}, {{"_TXL", WIDTH_16, 0}}, /* Acpi 5.0 */ {{"_TYP", WIDTH_2 | WIDTH_16, 0}}, {{"_VEN", VARIABLE_DATA, 0}}, /* Acpi 5.0 */ PACKAGE_INFO (0,0,0,0,0,0) /* Table terminator */ }; static const ACPI_PREDEFINED_INFO AcpiGbl_ScopeNames[] = { {{"_GPE", 0, 0}}, {{"_PR_", 0, 0}}, {{"_SB_", 0, 0}}, {{"_SI_", 0, 0}}, {{"_TZ_", 0, 0}}, PACKAGE_INFO (0,0,0,0,0,0) /* Table terminator */ }; #else extern const ACPI_PREDEFINED_INFO AcpiGbl_ResourceNames[]; #endif #endif src/acpica/source/include/acresrc.h000066400000000000000000000412121231470457100176070ustar00rootroot00000000000000/****************************************************************************** * * Name: acresrc.h - Resource Manager function prototypes * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #ifndef __ACRESRC_H__ #define __ACRESRC_H__ /* Need the AML resource descriptor structs */ #include "amlresrc.h" /* * If possible, pack the following structures to byte alignment, since we * don't care about performance for debug output. Two cases where we cannot * pack the structures: * * 1) Hardware does not support misaligned memory transfers * 2) Compiler does not support pointers within packed structures */ #if (!defined(ACPI_MISALIGNMENT_NOT_SUPPORTED) && !defined(ACPI_PACKED_POINTERS_NOT_SUPPORTED)) #pragma pack(1) #endif /* * Individual entry for the resource conversion tables */ typedef const struct acpi_rsconvert_info { UINT8 Opcode; UINT8 ResourceOffset; UINT8 AmlOffset; UINT8 Value; } ACPI_RSCONVERT_INFO; /* Resource conversion opcodes */ typedef enum { ACPI_RSC_INITGET = 0, ACPI_RSC_INITSET, ACPI_RSC_FLAGINIT, ACPI_RSC_1BITFLAG, ACPI_RSC_2BITFLAG, ACPI_RSC_3BITFLAG, ACPI_RSC_ADDRESS, ACPI_RSC_BITMASK, ACPI_RSC_BITMASK16, ACPI_RSC_COUNT, ACPI_RSC_COUNT16, ACPI_RSC_COUNT_GPIO_PIN, ACPI_RSC_COUNT_GPIO_RES, ACPI_RSC_COUNT_GPIO_VEN, ACPI_RSC_COUNT_SERIAL_RES, ACPI_RSC_COUNT_SERIAL_VEN, ACPI_RSC_DATA8, ACPI_RSC_EXIT_EQ, ACPI_RSC_EXIT_LE, ACPI_RSC_EXIT_NE, ACPI_RSC_LENGTH, ACPI_RSC_MOVE_GPIO_PIN, ACPI_RSC_MOVE_GPIO_RES, ACPI_RSC_MOVE_SERIAL_RES, ACPI_RSC_MOVE_SERIAL_VEN, ACPI_RSC_MOVE8, ACPI_RSC_MOVE16, ACPI_RSC_MOVE32, ACPI_RSC_MOVE64, ACPI_RSC_SET8, ACPI_RSC_SOURCE, ACPI_RSC_SOURCEX } ACPI_RSCONVERT_OPCODES; /* Resource Conversion sub-opcodes */ #define ACPI_RSC_COMPARE_AML_LENGTH 0 #define ACPI_RSC_COMPARE_VALUE 1 #define ACPI_RSC_TABLE_SIZE(d) (sizeof (d) / sizeof (ACPI_RSCONVERT_INFO)) #define ACPI_RS_OFFSET(f) (UINT8) ACPI_OFFSET (ACPI_RESOURCE,f) #define AML_OFFSET(f) (UINT8) ACPI_OFFSET (AML_RESOURCE,f) /* * Individual entry for the resource dump tables */ typedef const struct acpi_rsdump_info { UINT8 Opcode; UINT8 Offset; char *Name; const char **Pointer; } ACPI_RSDUMP_INFO; /* Values for the Opcode field above */ typedef enum { ACPI_RSD_TITLE = 0, ACPI_RSD_1BITFLAG, ACPI_RSD_2BITFLAG, ACPI_RSD_3BITFLAG, ACPI_RSD_ADDRESS, ACPI_RSD_DWORDLIST, ACPI_RSD_LITERAL, ACPI_RSD_LONGLIST, ACPI_RSD_SHORTLIST, ACPI_RSD_SHORTLISTX, ACPI_RSD_SOURCE, ACPI_RSD_STRING, ACPI_RSD_UINT8, ACPI_RSD_UINT16, ACPI_RSD_UINT32, ACPI_RSD_UINT64, ACPI_RSD_WORDLIST } ACPI_RSDUMP_OPCODES; /* restore default alignment */ #pragma pack() /* Resource tables indexed by internal resource type */ extern const UINT8 AcpiGbl_AmlResourceSizes[]; extern const UINT8 AcpiGbl_AmlResourceSerialBusSizes[]; extern ACPI_RSCONVERT_INFO *AcpiGbl_SetResourceDispatch[]; /* Resource tables indexed by raw AML resource descriptor type */ extern const UINT8 AcpiGbl_ResourceStructSizes[]; extern const UINT8 AcpiGbl_ResourceStructSerialBusSizes[]; extern ACPI_RSCONVERT_INFO *AcpiGbl_GetResourceDispatch[]; extern ACPI_RSCONVERT_INFO *AcpiGbl_ConvertResourceSerialBusDispatch[]; typedef struct acpi_vendor_walk_info { ACPI_VENDOR_UUID *Uuid; ACPI_BUFFER *Buffer; ACPI_STATUS Status; } ACPI_VENDOR_WALK_INFO; /* * rscreate */ ACPI_STATUS AcpiRsCreateResourceList ( ACPI_OPERAND_OBJECT *AmlBuffer, ACPI_BUFFER *OutputBuffer); ACPI_STATUS AcpiRsCreateAmlResources ( ACPI_BUFFER *ResourceList, ACPI_BUFFER *OutputBuffer); ACPI_STATUS AcpiRsCreatePciRoutingTable ( ACPI_OPERAND_OBJECT *PackageObject, ACPI_BUFFER *OutputBuffer); /* * rsutils */ ACPI_STATUS AcpiRsGetPrtMethodData ( ACPI_NAMESPACE_NODE *Node, ACPI_BUFFER *RetBuffer); ACPI_STATUS AcpiRsGetCrsMethodData ( ACPI_NAMESPACE_NODE *Node, ACPI_BUFFER *RetBuffer); ACPI_STATUS AcpiRsGetPrsMethodData ( ACPI_NAMESPACE_NODE *Node, ACPI_BUFFER *RetBuffer); ACPI_STATUS AcpiRsGetMethodData ( ACPI_HANDLE Handle, char *Path, ACPI_BUFFER *RetBuffer); ACPI_STATUS AcpiRsSetSrsMethodData ( ACPI_NAMESPACE_NODE *Node, ACPI_BUFFER *RetBuffer); ACPI_STATUS AcpiRsGetAeiMethodData ( ACPI_NAMESPACE_NODE *Node, ACPI_BUFFER *RetBuffer); /* * rscalc */ ACPI_STATUS AcpiRsGetListLength ( UINT8 *AmlBuffer, UINT32 AmlBufferLength, ACPI_SIZE *SizeNeeded); ACPI_STATUS AcpiRsGetAmlLength ( ACPI_RESOURCE *ResourceList, ACPI_SIZE ResourceListSize, ACPI_SIZE *SizeNeeded); ACPI_STATUS AcpiRsGetPciRoutingTableLength ( ACPI_OPERAND_OBJECT *PackageObject, ACPI_SIZE *BufferSizeNeeded); ACPI_STATUS AcpiRsConvertAmlToResources ( UINT8 *Aml, UINT32 Length, UINT32 Offset, UINT8 ResourceIndex, void **Context); ACPI_STATUS AcpiRsConvertResourcesToAml ( ACPI_RESOURCE *Resource, ACPI_SIZE AmlSizeNeeded, UINT8 *OutputBuffer); /* * rsaddr */ void AcpiRsSetAddressCommon ( AML_RESOURCE *Aml, ACPI_RESOURCE *Resource); BOOLEAN AcpiRsGetAddressCommon ( ACPI_RESOURCE *Resource, AML_RESOURCE *Aml); /* * rsmisc */ ACPI_STATUS AcpiRsConvertAmlToResource ( ACPI_RESOURCE *Resource, AML_RESOURCE *Aml, ACPI_RSCONVERT_INFO *Info); ACPI_STATUS AcpiRsConvertResourceToAml ( ACPI_RESOURCE *Resource, AML_RESOURCE *Aml, ACPI_RSCONVERT_INFO *Info); /* * rsutils */ void AcpiRsMoveData ( void *Destination, void *Source, UINT16 ItemCount, UINT8 MoveType); UINT8 AcpiRsDecodeBitmask ( UINT16 Mask, UINT8 *List); UINT16 AcpiRsEncodeBitmask ( UINT8 *List, UINT8 Count); ACPI_RS_LENGTH AcpiRsGetResourceSource ( ACPI_RS_LENGTH ResourceLength, ACPI_RS_LENGTH MinimumLength, ACPI_RESOURCE_SOURCE *ResourceSource, AML_RESOURCE *Aml, char *StringPtr); ACPI_RSDESC_SIZE AcpiRsSetResourceSource ( AML_RESOURCE *Aml, ACPI_RS_LENGTH MinimumLength, ACPI_RESOURCE_SOURCE *ResourceSource); void AcpiRsSetResourceHeader ( UINT8 DescriptorType, ACPI_RSDESC_SIZE TotalLength, AML_RESOURCE *Aml); void AcpiRsSetResourceLength ( ACPI_RSDESC_SIZE TotalLength, AML_RESOURCE *Aml); /* * rsdump */ void AcpiRsDumpResourceList ( ACPI_RESOURCE *Resource); void AcpiRsDumpIrqList ( UINT8 *RouteTable); /* * Resource conversion tables */ extern ACPI_RSCONVERT_INFO AcpiRsConvertDma[]; extern ACPI_RSCONVERT_INFO AcpiRsConvertEndDpf[]; extern ACPI_RSCONVERT_INFO AcpiRsConvertIo[]; extern ACPI_RSCONVERT_INFO AcpiRsConvertFixedIo[]; extern ACPI_RSCONVERT_INFO AcpiRsConvertEndTag[]; extern ACPI_RSCONVERT_INFO AcpiRsConvertMemory24[]; extern ACPI_RSCONVERT_INFO AcpiRsConvertGenericReg[]; extern ACPI_RSCONVERT_INFO AcpiRsConvertMemory32[]; extern ACPI_RSCONVERT_INFO AcpiRsConvertFixedMemory32[]; extern ACPI_RSCONVERT_INFO AcpiRsConvertAddress32[]; extern ACPI_RSCONVERT_INFO AcpiRsConvertAddress16[]; extern ACPI_RSCONVERT_INFO AcpiRsConvertExtIrq[]; extern ACPI_RSCONVERT_INFO AcpiRsConvertAddress64[]; extern ACPI_RSCONVERT_INFO AcpiRsConvertExtAddress64[]; extern ACPI_RSCONVERT_INFO AcpiRsConvertGpio[]; extern ACPI_RSCONVERT_INFO AcpiRsConvertFixedDma[]; extern ACPI_RSCONVERT_INFO AcpiRsConvertI2cSerialBus[]; extern ACPI_RSCONVERT_INFO AcpiRsConvertSpiSerialBus[]; extern ACPI_RSCONVERT_INFO AcpiRsConvertUartSerialBus[]; /* These resources require separate get/set tables */ extern ACPI_RSCONVERT_INFO AcpiRsGetIrq[]; extern ACPI_RSCONVERT_INFO AcpiRsGetStartDpf[]; extern ACPI_RSCONVERT_INFO AcpiRsGetVendorSmall[]; extern ACPI_RSCONVERT_INFO AcpiRsGetVendorLarge[]; extern ACPI_RSCONVERT_INFO AcpiRsSetIrq[]; extern ACPI_RSCONVERT_INFO AcpiRsSetStartDpf[]; extern ACPI_RSCONVERT_INFO AcpiRsSetVendor[]; #if defined(ACPI_DEBUG_OUTPUT) || defined(ACPI_DEBUGGER) /* * rsinfo */ extern ACPI_RSDUMP_INFO *AcpiGbl_DumpResourceDispatch[]; extern ACPI_RSDUMP_INFO *AcpiGbl_DumpSerialBusDispatch[]; /* * rsdumpinfo */ extern ACPI_RSDUMP_INFO AcpiRsDumpIrq[]; extern ACPI_RSDUMP_INFO AcpiRsDumpPrt[]; extern ACPI_RSDUMP_INFO AcpiRsDumpDma[]; extern ACPI_RSDUMP_INFO AcpiRsDumpStartDpf[]; extern ACPI_RSDUMP_INFO AcpiRsDumpEndDpf[]; extern ACPI_RSDUMP_INFO AcpiRsDumpIo[]; extern ACPI_RSDUMP_INFO AcpiRsDumpIoFlags[]; extern ACPI_RSDUMP_INFO AcpiRsDumpFixedIo[]; extern ACPI_RSDUMP_INFO AcpiRsDumpVendor[]; extern ACPI_RSDUMP_INFO AcpiRsDumpEndTag[]; extern ACPI_RSDUMP_INFO AcpiRsDumpMemory24[]; extern ACPI_RSDUMP_INFO AcpiRsDumpMemory32[]; extern ACPI_RSDUMP_INFO AcpiRsDumpMemoryFlags[]; extern ACPI_RSDUMP_INFO AcpiRsDumpFixedMemory32[]; extern ACPI_RSDUMP_INFO AcpiRsDumpAddress16[]; extern ACPI_RSDUMP_INFO AcpiRsDumpAddress32[]; extern ACPI_RSDUMP_INFO AcpiRsDumpAddress64[]; extern ACPI_RSDUMP_INFO AcpiRsDumpExtAddress64[]; extern ACPI_RSDUMP_INFO AcpiRsDumpExtIrq[]; extern ACPI_RSDUMP_INFO AcpiRsDumpGenericReg[]; extern ACPI_RSDUMP_INFO AcpiRsDumpGpio[]; extern ACPI_RSDUMP_INFO AcpiRsDumpFixedDma[]; extern ACPI_RSDUMP_INFO AcpiRsDumpCommonSerialBus[]; extern ACPI_RSDUMP_INFO AcpiRsDumpI2cSerialBus[]; extern ACPI_RSDUMP_INFO AcpiRsDumpSpiSerialBus[]; extern ACPI_RSDUMP_INFO AcpiRsDumpUartSerialBus[]; extern ACPI_RSDUMP_INFO AcpiRsDumpGeneralFlags[]; #endif #endif /* __ACRESRC_H__ */ src/acpica/source/include/acrestyp.h000066400000000000000000000661331231470457100200300ustar00rootroot00000000000000/****************************************************************************** * * Name: acrestyp.h - Defines, types, and structures for resource descriptors * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #ifndef __ACRESTYP_H__ #define __ACRESTYP_H__ /* * Definitions for Resource Attributes */ typedef UINT16 ACPI_RS_LENGTH; /* Resource Length field is fixed at 16 bits */ typedef UINT32 ACPI_RSDESC_SIZE; /* Max Resource Descriptor size is (Length+3) = (64K-1)+3 */ /* * Memory Attributes */ #define ACPI_READ_ONLY_MEMORY (UINT8) 0x00 #define ACPI_READ_WRITE_MEMORY (UINT8) 0x01 #define ACPI_NON_CACHEABLE_MEMORY (UINT8) 0x00 #define ACPI_CACHABLE_MEMORY (UINT8) 0x01 #define ACPI_WRITE_COMBINING_MEMORY (UINT8) 0x02 #define ACPI_PREFETCHABLE_MEMORY (UINT8) 0x03 /*! [Begin] no source code translation */ /* * IO Attributes * The ISA IO ranges are: n000-n0FFh, n400-n4FFh, n800-n8FFh, nC00-nCFFh. * The non-ISA IO ranges are: n100-n3FFh, n500-n7FFh, n900-nBFFh, nCD0-nFFFh. */ /*! [End] no source code translation !*/ #define ACPI_NON_ISA_ONLY_RANGES (UINT8) 0x01 #define ACPI_ISA_ONLY_RANGES (UINT8) 0x02 #define ACPI_ENTIRE_RANGE (ACPI_NON_ISA_ONLY_RANGES | ACPI_ISA_ONLY_RANGES) /* Type of translation - 1=Sparse, 0=Dense */ #define ACPI_SPARSE_TRANSLATION (UINT8) 0x01 /* * IO Port Descriptor Decode */ #define ACPI_DECODE_10 (UINT8) 0x00 /* 10-bit IO address decode */ #define ACPI_DECODE_16 (UINT8) 0x01 /* 16-bit IO address decode */ /* * Interrupt attributes - used in multiple descriptors */ /* Triggering */ #define ACPI_LEVEL_SENSITIVE (UINT8) 0x00 #define ACPI_EDGE_SENSITIVE (UINT8) 0x01 /* Polarity */ #define ACPI_ACTIVE_HIGH (UINT8) 0x00 #define ACPI_ACTIVE_LOW (UINT8) 0x01 #define ACPI_ACTIVE_BOTH (UINT8) 0x02 /* Sharing */ #define ACPI_EXCLUSIVE (UINT8) 0x00 #define ACPI_SHARED (UINT8) 0x01 /* Wake */ #define ACPI_NOT_WAKE_CAPABLE (UINT8) 0x00 #define ACPI_WAKE_CAPABLE (UINT8) 0x01 /* * DMA Attributes */ #define ACPI_COMPATIBILITY (UINT8) 0x00 #define ACPI_TYPE_A (UINT8) 0x01 #define ACPI_TYPE_B (UINT8) 0x02 #define ACPI_TYPE_F (UINT8) 0x03 #define ACPI_NOT_BUS_MASTER (UINT8) 0x00 #define ACPI_BUS_MASTER (UINT8) 0x01 #define ACPI_TRANSFER_8 (UINT8) 0x00 #define ACPI_TRANSFER_8_16 (UINT8) 0x01 #define ACPI_TRANSFER_16 (UINT8) 0x02 /* * Start Dependent Functions Priority definitions */ #define ACPI_GOOD_CONFIGURATION (UINT8) 0x00 #define ACPI_ACCEPTABLE_CONFIGURATION (UINT8) 0x01 #define ACPI_SUB_OPTIMAL_CONFIGURATION (UINT8) 0x02 /* * 16, 32 and 64-bit Address Descriptor resource types */ #define ACPI_MEMORY_RANGE (UINT8) 0x00 #define ACPI_IO_RANGE (UINT8) 0x01 #define ACPI_BUS_NUMBER_RANGE (UINT8) 0x02 #define ACPI_ADDRESS_NOT_FIXED (UINT8) 0x00 #define ACPI_ADDRESS_FIXED (UINT8) 0x01 #define ACPI_POS_DECODE (UINT8) 0x00 #define ACPI_SUB_DECODE (UINT8) 0x01 /* Producer/Consumer */ #define ACPI_PRODUCER (UINT8) 0x00 #define ACPI_CONSUMER (UINT8) 0x01 /* * If possible, pack the following structures to byte alignment */ #ifndef ACPI_MISALIGNMENT_NOT_SUPPORTED #pragma pack(1) #endif /* UUID data structures for use in vendor-defined resource descriptors */ typedef struct acpi_uuid { UINT8 Data[ACPI_UUID_LENGTH]; } ACPI_UUID; typedef struct acpi_vendor_uuid { UINT8 Subtype; UINT8 Data[ACPI_UUID_LENGTH]; } ACPI_VENDOR_UUID; /* * Structures used to describe device resources */ typedef struct acpi_resource_irq { UINT8 DescriptorLength; UINT8 Triggering; UINT8 Polarity; UINT8 Sharable; UINT8 WakeCapable; UINT8 InterruptCount; UINT8 Interrupts[1]; } ACPI_RESOURCE_IRQ; typedef struct acpi_resource_dma { UINT8 Type; UINT8 BusMaster; UINT8 Transfer; UINT8 ChannelCount; UINT8 Channels[1]; } ACPI_RESOURCE_DMA; typedef struct acpi_resource_start_dependent { UINT8 DescriptorLength; UINT8 CompatibilityPriority; UINT8 PerformanceRobustness; } ACPI_RESOURCE_START_DEPENDENT; /* * The END_DEPENDENT_FUNCTIONS_RESOURCE struct is not * needed because it has no fields */ typedef struct acpi_resource_io { UINT8 IoDecode; UINT8 Alignment; UINT8 AddressLength; UINT16 Minimum; UINT16 Maximum; } ACPI_RESOURCE_IO; typedef struct acpi_resource_fixed_io { UINT16 Address; UINT8 AddressLength; } ACPI_RESOURCE_FIXED_IO; typedef struct acpi_resource_fixed_dma { UINT16 RequestLines; UINT16 Channels; UINT8 Width; } ACPI_RESOURCE_FIXED_DMA; /* Values for Width field above */ #define ACPI_DMA_WIDTH8 0 #define ACPI_DMA_WIDTH16 1 #define ACPI_DMA_WIDTH32 2 #define ACPI_DMA_WIDTH64 3 #define ACPI_DMA_WIDTH128 4 #define ACPI_DMA_WIDTH256 5 typedef struct acpi_resource_vendor { UINT16 ByteLength; UINT8 ByteData[1]; } ACPI_RESOURCE_VENDOR; /* Vendor resource with UUID info (introduced in ACPI 3.0) */ typedef struct acpi_resource_vendor_typed { UINT16 ByteLength; UINT8 UuidSubtype; UINT8 Uuid[ACPI_UUID_LENGTH]; UINT8 ByteData[1]; } ACPI_RESOURCE_VENDOR_TYPED; typedef struct acpi_resource_end_tag { UINT8 Checksum; } ACPI_RESOURCE_END_TAG; typedef struct acpi_resource_memory24 { UINT8 WriteProtect; UINT16 Minimum; UINT16 Maximum; UINT16 Alignment; UINT16 AddressLength; } ACPI_RESOURCE_MEMORY24; typedef struct acpi_resource_memory32 { UINT8 WriteProtect; UINT32 Minimum; UINT32 Maximum; UINT32 Alignment; UINT32 AddressLength; } ACPI_RESOURCE_MEMORY32; typedef struct acpi_resource_fixed_memory32 { UINT8 WriteProtect; UINT32 Address; UINT32 AddressLength; } ACPI_RESOURCE_FIXED_MEMORY32; typedef struct acpi_memory_attribute { UINT8 WriteProtect; UINT8 Caching; UINT8 RangeType; UINT8 Translation; } ACPI_MEMORY_ATTRIBUTE; typedef struct acpi_io_attribute { UINT8 RangeType; UINT8 Translation; UINT8 TranslationType; UINT8 Reserved1; } ACPI_IO_ATTRIBUTE; typedef union acpi_resource_attribute { ACPI_MEMORY_ATTRIBUTE Mem; ACPI_IO_ATTRIBUTE Io; /* Used for the *WordSpace macros */ UINT8 TypeSpecific; } ACPI_RESOURCE_ATTRIBUTE; typedef struct acpi_resource_source { UINT8 Index; UINT16 StringLength; char *StringPtr; } ACPI_RESOURCE_SOURCE; /* Fields common to all address descriptors, 16/32/64 bit */ #define ACPI_RESOURCE_ADDRESS_COMMON \ UINT8 ResourceType; \ UINT8 ProducerConsumer; \ UINT8 Decode; \ UINT8 MinAddressFixed; \ UINT8 MaxAddressFixed; \ ACPI_RESOURCE_ATTRIBUTE Info; typedef struct acpi_resource_address { ACPI_RESOURCE_ADDRESS_COMMON } ACPI_RESOURCE_ADDRESS; typedef struct acpi_resource_address16 { ACPI_RESOURCE_ADDRESS_COMMON UINT16 Granularity; UINT16 Minimum; UINT16 Maximum; UINT16 TranslationOffset; UINT16 AddressLength; ACPI_RESOURCE_SOURCE ResourceSource; } ACPI_RESOURCE_ADDRESS16; typedef struct acpi_resource_address32 { ACPI_RESOURCE_ADDRESS_COMMON UINT32 Granularity; UINT32 Minimum; UINT32 Maximum; UINT32 TranslationOffset; UINT32 AddressLength; ACPI_RESOURCE_SOURCE ResourceSource; } ACPI_RESOURCE_ADDRESS32; typedef struct acpi_resource_address64 { ACPI_RESOURCE_ADDRESS_COMMON UINT64 Granularity; UINT64 Minimum; UINT64 Maximum; UINT64 TranslationOffset; UINT64 AddressLength; ACPI_RESOURCE_SOURCE ResourceSource; } ACPI_RESOURCE_ADDRESS64; typedef struct acpi_resource_extended_address64 { ACPI_RESOURCE_ADDRESS_COMMON UINT8 RevisionID; UINT64 Granularity; UINT64 Minimum; UINT64 Maximum; UINT64 TranslationOffset; UINT64 AddressLength; UINT64 TypeSpecific; } ACPI_RESOURCE_EXTENDED_ADDRESS64; typedef struct acpi_resource_extended_irq { UINT8 ProducerConsumer; UINT8 Triggering; UINT8 Polarity; UINT8 Sharable; UINT8 WakeCapable; UINT8 InterruptCount; ACPI_RESOURCE_SOURCE ResourceSource; UINT32 Interrupts[1]; } ACPI_RESOURCE_EXTENDED_IRQ; typedef struct acpi_resource_generic_register { UINT8 SpaceId; UINT8 BitWidth; UINT8 BitOffset; UINT8 AccessSize; UINT64 Address; } ACPI_RESOURCE_GENERIC_REGISTER; typedef struct acpi_resource_gpio { UINT8 RevisionId; UINT8 ConnectionType; UINT8 ProducerConsumer; /* For values, see Producer/Consumer above */ UINT8 PinConfig; UINT8 Sharable; /* For values, see Interrupt Attributes above */ UINT8 WakeCapable; /* For values, see Interrupt Attributes above */ UINT8 IoRestriction; UINT8 Triggering; /* For values, see Interrupt Attributes above */ UINT8 Polarity; /* For values, see Interrupt Attributes above */ UINT16 DriveStrength; UINT16 DebounceTimeout; UINT16 PinTableLength; UINT16 VendorLength; ACPI_RESOURCE_SOURCE ResourceSource; UINT16 *PinTable; UINT8 *VendorData; } ACPI_RESOURCE_GPIO; /* Values for GPIO ConnectionType field above */ #define ACPI_RESOURCE_GPIO_TYPE_INT 0 #define ACPI_RESOURCE_GPIO_TYPE_IO 1 /* Values for PinConfig field above */ #define ACPI_PIN_CONFIG_DEFAULT 0 #define ACPI_PIN_CONFIG_PULLUP 1 #define ACPI_PIN_CONFIG_PULLDOWN 2 #define ACPI_PIN_CONFIG_NOPULL 3 /* Values for IoRestriction field above */ #define ACPI_IO_RESTRICT_NONE 0 #define ACPI_IO_RESTRICT_INPUT 1 #define ACPI_IO_RESTRICT_OUTPUT 2 #define ACPI_IO_RESTRICT_NONE_PRESERVE 3 /* Common structure for I2C, SPI, and UART serial descriptors */ #define ACPI_RESOURCE_SERIAL_COMMON \ UINT8 RevisionId; \ UINT8 Type; \ UINT8 ProducerConsumer; /* For values, see Producer/Consumer above */\ UINT8 SlaveMode; \ UINT8 TypeRevisionId; \ UINT16 TypeDataLength; \ UINT16 VendorLength; \ ACPI_RESOURCE_SOURCE ResourceSource; \ UINT8 *VendorData; typedef struct acpi_resource_common_serialbus { ACPI_RESOURCE_SERIAL_COMMON } ACPI_RESOURCE_COMMON_SERIALBUS; /* Values for the Type field above */ #define ACPI_RESOURCE_SERIAL_TYPE_I2C 1 #define ACPI_RESOURCE_SERIAL_TYPE_SPI 2 #define ACPI_RESOURCE_SERIAL_TYPE_UART 3 /* Values for SlaveMode field above */ #define ACPI_CONTROLLER_INITIATED 0 #define ACPI_DEVICE_INITIATED 1 typedef struct acpi_resource_i2c_serialbus { ACPI_RESOURCE_SERIAL_COMMON UINT8 AccessMode; UINT16 SlaveAddress; UINT32 ConnectionSpeed; } ACPI_RESOURCE_I2C_SERIALBUS; /* Values for AccessMode field above */ #define ACPI_I2C_7BIT_MODE 0 #define ACPI_I2C_10BIT_MODE 1 typedef struct acpi_resource_spi_serialbus { ACPI_RESOURCE_SERIAL_COMMON UINT8 WireMode; UINT8 DevicePolarity; UINT8 DataBitLength; UINT8 ClockPhase; UINT8 ClockPolarity; UINT16 DeviceSelection; UINT32 ConnectionSpeed; } ACPI_RESOURCE_SPI_SERIALBUS; /* Values for WireMode field above */ #define ACPI_SPI_4WIRE_MODE 0 #define ACPI_SPI_3WIRE_MODE 1 /* Values for DevicePolarity field above */ #define ACPI_SPI_ACTIVE_LOW 0 #define ACPI_SPI_ACTIVE_HIGH 1 /* Values for ClockPhase field above */ #define ACPI_SPI_FIRST_PHASE 0 #define ACPI_SPI_SECOND_PHASE 1 /* Values for ClockPolarity field above */ #define ACPI_SPI_START_LOW 0 #define ACPI_SPI_START_HIGH 1 typedef struct acpi_resource_uart_serialbus { ACPI_RESOURCE_SERIAL_COMMON UINT8 Endian; UINT8 DataBits; UINT8 StopBits; UINT8 FlowControl; UINT8 Parity; UINT8 LinesEnabled; UINT16 RxFifoSize; UINT16 TxFifoSize; UINT32 DefaultBaudRate; } ACPI_RESOURCE_UART_SERIALBUS; /* Values for Endian field above */ #define ACPI_UART_LITTLE_ENDIAN 0 #define ACPI_UART_BIG_ENDIAN 1 /* Values for DataBits field above */ #define ACPI_UART_5_DATA_BITS 0 #define ACPI_UART_6_DATA_BITS 1 #define ACPI_UART_7_DATA_BITS 2 #define ACPI_UART_8_DATA_BITS 3 #define ACPI_UART_9_DATA_BITS 4 /* Values for StopBits field above */ #define ACPI_UART_NO_STOP_BITS 0 #define ACPI_UART_1_STOP_BIT 1 #define ACPI_UART_1P5_STOP_BITS 2 #define ACPI_UART_2_STOP_BITS 3 /* Values for FlowControl field above */ #define ACPI_UART_FLOW_CONTROL_NONE 0 #define ACPI_UART_FLOW_CONTROL_HW 1 #define ACPI_UART_FLOW_CONTROL_XON_XOFF 2 /* Values for Parity field above */ #define ACPI_UART_PARITY_NONE 0 #define ACPI_UART_PARITY_EVEN 1 #define ACPI_UART_PARITY_ODD 2 #define ACPI_UART_PARITY_MARK 3 #define ACPI_UART_PARITY_SPACE 4 /* Values for LinesEnabled bitfield above */ #define ACPI_UART_CARRIER_DETECT (1<<2) #define ACPI_UART_RING_INDICATOR (1<<3) #define ACPI_UART_DATA_SET_READY (1<<4) #define ACPI_UART_DATA_TERMINAL_READY (1<<5) #define ACPI_UART_CLEAR_TO_SEND (1<<6) #define ACPI_UART_REQUEST_TO_SEND (1<<7) /* ACPI_RESOURCE_TYPEs */ #define ACPI_RESOURCE_TYPE_IRQ 0 #define ACPI_RESOURCE_TYPE_DMA 1 #define ACPI_RESOURCE_TYPE_START_DEPENDENT 2 #define ACPI_RESOURCE_TYPE_END_DEPENDENT 3 #define ACPI_RESOURCE_TYPE_IO 4 #define ACPI_RESOURCE_TYPE_FIXED_IO 5 #define ACPI_RESOURCE_TYPE_VENDOR 6 #define ACPI_RESOURCE_TYPE_END_TAG 7 #define ACPI_RESOURCE_TYPE_MEMORY24 8 #define ACPI_RESOURCE_TYPE_MEMORY32 9 #define ACPI_RESOURCE_TYPE_FIXED_MEMORY32 10 #define ACPI_RESOURCE_TYPE_ADDRESS16 11 #define ACPI_RESOURCE_TYPE_ADDRESS32 12 #define ACPI_RESOURCE_TYPE_ADDRESS64 13 #define ACPI_RESOURCE_TYPE_EXTENDED_ADDRESS64 14 /* ACPI 3.0 */ #define ACPI_RESOURCE_TYPE_EXTENDED_IRQ 15 #define ACPI_RESOURCE_TYPE_GENERIC_REGISTER 16 #define ACPI_RESOURCE_TYPE_GPIO 17 /* ACPI 5.0 */ #define ACPI_RESOURCE_TYPE_FIXED_DMA 18 /* ACPI 5.0 */ #define ACPI_RESOURCE_TYPE_SERIAL_BUS 19 /* ACPI 5.0 */ #define ACPI_RESOURCE_TYPE_MAX 19 /* Master union for resource descriptors */ typedef union acpi_resource_data { ACPI_RESOURCE_IRQ Irq; ACPI_RESOURCE_DMA Dma; ACPI_RESOURCE_START_DEPENDENT StartDpf; ACPI_RESOURCE_IO Io; ACPI_RESOURCE_FIXED_IO FixedIo; ACPI_RESOURCE_FIXED_DMA FixedDma; ACPI_RESOURCE_VENDOR Vendor; ACPI_RESOURCE_VENDOR_TYPED VendorTyped; ACPI_RESOURCE_END_TAG EndTag; ACPI_RESOURCE_MEMORY24 Memory24; ACPI_RESOURCE_MEMORY32 Memory32; ACPI_RESOURCE_FIXED_MEMORY32 FixedMemory32; ACPI_RESOURCE_ADDRESS16 Address16; ACPI_RESOURCE_ADDRESS32 Address32; ACPI_RESOURCE_ADDRESS64 Address64; ACPI_RESOURCE_EXTENDED_ADDRESS64 ExtAddress64; ACPI_RESOURCE_EXTENDED_IRQ ExtendedIrq; ACPI_RESOURCE_GENERIC_REGISTER GenericReg; ACPI_RESOURCE_GPIO Gpio; ACPI_RESOURCE_I2C_SERIALBUS I2cSerialBus; ACPI_RESOURCE_SPI_SERIALBUS SpiSerialBus; ACPI_RESOURCE_UART_SERIALBUS UartSerialBus; ACPI_RESOURCE_COMMON_SERIALBUS CommonSerialBus; /* Common fields */ ACPI_RESOURCE_ADDRESS Address; /* Common 16/32/64 address fields */ } ACPI_RESOURCE_DATA; /* Common resource header */ typedef struct acpi_resource { UINT32 Type; UINT32 Length; ACPI_RESOURCE_DATA Data; } ACPI_RESOURCE; /* restore default alignment */ #pragma pack() #define ACPI_RS_SIZE_NO_DATA 8 /* Id + Length fields */ #define ACPI_RS_SIZE_MIN (UINT32) ACPI_ROUND_UP_TO_NATIVE_WORD (12) #define ACPI_RS_SIZE(Type) (UINT32) (ACPI_RS_SIZE_NO_DATA + sizeof (Type)) /* Macro for walking resource templates with multiple descriptors */ #define ACPI_NEXT_RESOURCE(Res) \ ACPI_ADD_PTR (ACPI_RESOURCE, (Res), (Res)->Length) typedef struct acpi_pci_routing_table { UINT32 Length; UINT32 Pin; UINT64 Address; /* here for 64-bit alignment */ UINT32 SourceIndex; char Source[4]; /* pad to 64 bits so sizeof() works in all cases */ } ACPI_PCI_ROUTING_TABLE; #endif /* __ACRESTYP_H__ */ src/acpica/source/include/acstruct.h000066400000000000000000000365661231470457100200350ustar00rootroot00000000000000/****************************************************************************** * * Name: acstruct.h - Internal structs * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #ifndef __ACSTRUCT_H__ #define __ACSTRUCT_H__ /* acpisrc:StructDefs -- for acpisrc conversion */ /***************************************************************************** * * Tree walking typedefs and structs * ****************************************************************************/ /* * Walk state - current state of a parse tree walk. Used for both a leisurely * stroll through the tree (for whatever reason), and for control method * execution. */ #define ACPI_NEXT_OP_DOWNWARD 1 #define ACPI_NEXT_OP_UPWARD 2 /* * Groups of definitions for WalkType used for different implementations of * walkers (never simultaneously) - flags for interpreter: */ #define ACPI_WALK_NON_METHOD 0 #define ACPI_WALK_METHOD 0x01 #define ACPI_WALK_METHOD_RESTART 0x02 /* Flags for iASL compiler only */ #define ACPI_WALK_CONST_REQUIRED 0x10 #define ACPI_WALK_CONST_OPTIONAL 0x20 typedef struct acpi_walk_state { struct acpi_walk_state *Next; /* Next WalkState in list */ UINT8 DescriptorType; /* To differentiate various internal objs */ UINT8 WalkType; UINT16 Opcode; /* Current AML opcode */ UINT8 NextOpInfo; /* Info about NextOp */ UINT8 NumOperands; /* Stack pointer for Operands[] array */ UINT8 OperandIndex; /* Index into operand stack, to be used by AcpiDsObjStackPush */ ACPI_OWNER_ID OwnerId; /* Owner of objects created during the walk */ BOOLEAN LastPredicate; /* Result of last predicate */ UINT8 CurrentResult; UINT8 ReturnUsed; UINT8 ScopeDepth; UINT8 PassNumber; /* Parse pass during table load */ UINT8 ResultSize; /* Total elements for the result stack */ UINT8 ResultCount; /* Current number of occupied elements of result stack */ UINT32 AmlOffset; UINT32 ArgTypes; UINT32 MethodBreakpoint; /* For single stepping */ UINT32 UserBreakpoint; /* User AML breakpoint */ UINT32 ParseFlags; ACPI_PARSE_STATE ParserState; /* Current state of parser */ UINT32 PrevArgTypes; UINT32 ArgCount; /* push for fixed or var args */ struct acpi_namespace_node Arguments[ACPI_METHOD_NUM_ARGS]; /* Control method arguments */ struct acpi_namespace_node LocalVariables[ACPI_METHOD_NUM_LOCALS]; /* Control method locals */ union acpi_operand_object *Operands[ACPI_OBJ_NUM_OPERANDS + 1]; /* Operands passed to the interpreter (+1 for NULL terminator) */ union acpi_operand_object **Params; UINT8 *AmlLastWhile; union acpi_operand_object **CallerReturnDesc; ACPI_GENERIC_STATE *ControlState; /* List of control states (nested IFs) */ struct acpi_namespace_node *DeferredNode; /* Used when executing deferred opcodes */ union acpi_operand_object *ImplicitReturnObj; struct acpi_namespace_node *MethodCallNode; /* Called method Node*/ ACPI_PARSE_OBJECT *MethodCallOp; /* MethodCall Op if running a method */ union acpi_operand_object *MethodDesc; /* Method descriptor if running a method */ struct acpi_namespace_node *MethodNode; /* Method node if running a method. */ ACPI_PARSE_OBJECT *Op; /* Current parser op */ const ACPI_OPCODE_INFO *OpInfo; /* Info on current opcode */ ACPI_PARSE_OBJECT *Origin; /* Start of walk [Obsolete] */ union acpi_operand_object *ResultObj; ACPI_GENERIC_STATE *Results; /* Stack of accumulated results */ union acpi_operand_object *ReturnDesc; /* Return object, if any */ ACPI_GENERIC_STATE *ScopeInfo; /* Stack of nested scopes */ ACPI_PARSE_OBJECT *PrevOp; /* Last op that was processed */ ACPI_PARSE_OBJECT *NextOp; /* next op to be processed */ ACPI_THREAD_STATE *Thread; ACPI_PARSE_DOWNWARDS DescendingCallback; ACPI_PARSE_UPWARDS AscendingCallback; } ACPI_WALK_STATE; /* Info used by AcpiNsInitializeObjects and AcpiDsInitializeObjects */ typedef struct acpi_init_walk_info { UINT32 TableIndex; UINT32 ObjectCount; UINT32 MethodCount; UINT32 SerialMethodCount; UINT32 NonSerialMethodCount; UINT32 SerializedMethodCount; UINT32 DeviceCount; UINT32 OpRegionCount; UINT32 FieldCount; UINT32 BufferCount; UINT32 PackageCount; UINT32 OpRegionInit; UINT32 FieldInit; UINT32 BufferInit; UINT32 PackageInit; ACPI_OWNER_ID OwnerId; } ACPI_INIT_WALK_INFO; typedef struct acpi_get_devices_info { ACPI_WALK_CALLBACK UserFunction; void *Context; char *Hid; } ACPI_GET_DEVICES_INFO; typedef union acpi_aml_operands { ACPI_OPERAND_OBJECT *Operands[7]; struct { ACPI_OBJECT_INTEGER *Type; ACPI_OBJECT_INTEGER *Code; ACPI_OBJECT_INTEGER *Argument; } Fatal; struct { ACPI_OPERAND_OBJECT *Source; ACPI_OBJECT_INTEGER *Index; ACPI_OPERAND_OBJECT *Target; } Index; struct { ACPI_OPERAND_OBJECT *Source; ACPI_OBJECT_INTEGER *Index; ACPI_OBJECT_INTEGER *Length; ACPI_OPERAND_OBJECT *Target; } Mid; } ACPI_AML_OPERANDS; /* * Structure used to pass object evaluation information and parameters. * Purpose is to reduce CPU stack use. */ typedef struct acpi_evaluate_info { /* The first 3 elements are passed by the caller to AcpiNsEvaluate */ ACPI_NAMESPACE_NODE *PrefixNode; /* Input: starting node */ char *RelativePathname; /* Input: path relative to PrefixNode */ ACPI_OPERAND_OBJECT **Parameters; /* Input: argument list */ ACPI_NAMESPACE_NODE *Node; /* Resolved node (PrefixNode:RelativePathname) */ ACPI_OPERAND_OBJECT *ObjDesc; /* Object attached to the resolved node */ char *FullPathname; /* Full pathname of the resolved node */ const ACPI_PREDEFINED_INFO *Predefined; /* Used if Node is a predefined name */ ACPI_OPERAND_OBJECT *ReturnObject; /* Object returned from the evaluation */ union acpi_operand_object *ParentPackage; /* Used if return object is a Package */ UINT32 ReturnFlags; /* Used for return value analysis */ UINT32 ReturnBtype; /* Bitmapped type of the returned object */ UINT16 ParamCount; /* Count of the input argument list */ UINT8 PassNumber; /* Parser pass number */ UINT8 ReturnObjectType; /* Object type of the returned object */ UINT8 NodeFlags; /* Same as Node->Flags */ UINT8 Flags; /* General flags */ } ACPI_EVALUATE_INFO; /* Values for Flags above */ #define ACPI_IGNORE_RETURN_VALUE 1 /* Defines for ReturnFlags field above */ #define ACPI_OBJECT_REPAIRED 1 #define ACPI_OBJECT_WRAPPED 2 /* Info used by AcpiNsInitializeDevices */ typedef struct acpi_device_walk_info { ACPI_TABLE_DESC *TableDesc; ACPI_EVALUATE_INFO *EvaluateInfo; UINT32 DeviceCount; UINT32 Num_STA; UINT32 Num_INI; } ACPI_DEVICE_WALK_INFO; /* TBD: [Restructure] Merge with struct above */ typedef struct acpi_walk_info { UINT32 DebugLevel; UINT32 Count; ACPI_OWNER_ID OwnerId; UINT8 DisplayType; } ACPI_WALK_INFO; /* Display Types */ #define ACPI_DISPLAY_SUMMARY (UINT8) 0 #define ACPI_DISPLAY_OBJECTS (UINT8) 1 #define ACPI_DISPLAY_MASK (UINT8) 1 #define ACPI_DISPLAY_SHORT (UINT8) 2 #endif src/acpica/source/include/actables.h000066400000000000000000000244431231470457100177520ustar00rootroot00000000000000/****************************************************************************** * * Name: actables.h - ACPI table management * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #ifndef __ACTABLES_H__ #define __ACTABLES_H__ ACPI_STATUS AcpiAllocateRootTable ( UINT32 InitialTableCount); /* * tbxfroot - Root pointer utilities */ ACPI_STATUS AcpiTbValidateRsdp ( ACPI_TABLE_RSDP *Rsdp); UINT8 * AcpiTbScanMemoryForRsdp ( UINT8 *StartAddress, UINT32 Length); /* * tbdata - table data structure management */ ACPI_STATUS AcpiTbGetNextRootIndex ( UINT32 *TableIndex); void AcpiTbInitTableDescriptor ( ACPI_TABLE_DESC *TableDesc, ACPI_PHYSICAL_ADDRESS Address, UINT8 Flags, ACPI_TABLE_HEADER *Table); ACPI_STATUS AcpiTbAcquireTempTable ( ACPI_TABLE_DESC *TableDesc, ACPI_PHYSICAL_ADDRESS Address, UINT8 Flags); void AcpiTbReleaseTempTable ( ACPI_TABLE_DESC *TableDesc); BOOLEAN AcpiTbIsTableLoaded ( UINT32 TableIndex); void AcpiTbSetTableLoadedFlag ( UINT32 TableIndex, BOOLEAN IsLoaded); /* * tbfadt - FADT parse/convert/validate */ void AcpiTbParseFadt ( UINT32 TableIndex); void AcpiTbCreateLocalFadt ( ACPI_TABLE_HEADER *Table, UINT32 Length); /* * tbfind - find ACPI table */ ACPI_STATUS AcpiTbFindTable ( char *Signature, char *OemId, char *OemTableId, UINT32 *TableIndex); /* * tbinstal - Table removal and deletion */ ACPI_STATUS AcpiTbResizeRootTableList ( void); ACPI_STATUS AcpiTbValidateTable ( ACPI_TABLE_DESC *TableDesc); void AcpiTbInvalidateTable ( ACPI_TABLE_DESC *TableDesc); ACPI_STATUS AcpiTbVerifyTable ( ACPI_TABLE_DESC *TableDesc, char *Signature); void AcpiTbOverrideTable ( ACPI_TABLE_DESC *OldTableDesc); ACPI_STATUS AcpiTbAcquireTable ( ACPI_TABLE_DESC *TableDesc, ACPI_TABLE_HEADER **TablePtr, UINT32 *TableLength, UINT8 *TableFlags); void AcpiTbReleaseTable ( ACPI_TABLE_HEADER *Table, UINT32 TableLength, UINT8 TableFlags); ACPI_STATUS AcpiTbInstallStandardTable ( ACPI_PHYSICAL_ADDRESS Address, UINT8 Flags, BOOLEAN Reload, BOOLEAN Override, UINT32 *TableIndex); ACPI_STATUS AcpiTbStoreTable ( ACPI_PHYSICAL_ADDRESS Address, ACPI_TABLE_HEADER *Table, UINT32 Length, UINT8 Flags, UINT32 *TableIndex); void AcpiTbUninstallTable ( ACPI_TABLE_DESC *TableDesc); void AcpiTbTerminate ( void); ACPI_STATUS AcpiTbDeleteNamespaceByOwner ( UINT32 TableIndex); ACPI_STATUS AcpiTbAllocateOwnerId ( UINT32 TableIndex); ACPI_STATUS AcpiTbReleaseOwnerId ( UINT32 TableIndex); ACPI_STATUS AcpiTbGetOwnerId ( UINT32 TableIndex, ACPI_OWNER_ID *OwnerId); /* * tbutils - table manager utilities */ ACPI_STATUS AcpiTbInitializeFacs ( void); BOOLEAN AcpiTbTablesLoaded ( void); void AcpiTbPrintTableHeader( ACPI_PHYSICAL_ADDRESS Address, ACPI_TABLE_HEADER *Header); UINT8 AcpiTbChecksum ( UINT8 *Buffer, UINT32 Length); ACPI_STATUS AcpiTbVerifyChecksum ( ACPI_TABLE_HEADER *Table, UINT32 Length); void AcpiTbCheckDsdtHeader ( void); ACPI_TABLE_HEADER * AcpiTbCopyDsdt ( UINT32 TableIndex); void AcpiTbInstallTableWithOverride ( UINT32 TableIndex, ACPI_TABLE_DESC *NewTableDesc, BOOLEAN Override); ACPI_STATUS AcpiTbInstallFixedTable ( ACPI_PHYSICAL_ADDRESS Address, char *Signature, UINT32 TableIndex); ACPI_STATUS AcpiTbParseRootTable ( ACPI_PHYSICAL_ADDRESS RsdpAddress); #endif /* __ACTABLES_H__ */ src/acpica/source/include/actbl.h000066400000000000000000000643121231470457100172600ustar00rootroot00000000000000/****************************************************************************** * * Name: actbl.h - Basic ACPI Table Definitions * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #ifndef __ACTBL_H__ #define __ACTBL_H__ /******************************************************************************* * * Fundamental ACPI tables * * This file contains definitions for the ACPI tables that are directly consumed * by ACPICA. All other tables are consumed by the OS-dependent ACPI-related * device drivers and other OS support code. * * The RSDP and FACS do not use the common ACPI table header. All other ACPI * tables use the header. * ******************************************************************************/ /* * Values for description table header signatures for tables defined in this * file. Useful because they make it more difficult to inadvertently type in * the wrong signature. */ #define ACPI_SIG_DSDT "DSDT" /* Differentiated System Description Table */ #define ACPI_SIG_FADT "FACP" /* Fixed ACPI Description Table */ #define ACPI_SIG_FACS "FACS" /* Firmware ACPI Control Structure */ #define ACPI_SIG_PSDT "PSDT" /* Persistent System Description Table */ #define ACPI_SIG_RSDP "RSD PTR " /* Root System Description Pointer */ #define ACPI_SIG_RSDT "RSDT" /* Root System Description Table */ #define ACPI_SIG_XSDT "XSDT" /* Extended System Description Table */ #define ACPI_SIG_SSDT "SSDT" /* Secondary System Description Table */ #define ACPI_RSDP_NAME "RSDP" /* Short name for RSDP, not signature */ /* * All tables and structures must be byte-packed to match the ACPI * specification, since the tables are provided by the system BIOS */ #pragma pack(1) /* * Note: C bitfields are not used for this reason: * * "Bitfields are great and easy to read, but unfortunately the C language * does not specify the layout of bitfields in memory, which means they are * essentially useless for dealing with packed data in on-disk formats or * binary wire protocols." (Or ACPI tables and buffers.) "If you ask me, * this decision was a design error in C. Ritchie could have picked an order * and stuck with it." Norman Ramsey. * See http://stackoverflow.com/a/1053662/41661 */ /******************************************************************************* * * Master ACPI Table Header. This common header is used by all ACPI tables * except the RSDP and FACS. * ******************************************************************************/ typedef struct acpi_table_header { char Signature[ACPI_NAME_SIZE]; /* ASCII table signature */ UINT32 Length; /* Length of table in bytes, including this header */ UINT8 Revision; /* ACPI Specification minor version number */ UINT8 Checksum; /* To make sum of entire table == 0 */ char OemId[ACPI_OEM_ID_SIZE]; /* ASCII OEM identification */ char OemTableId[ACPI_OEM_TABLE_ID_SIZE]; /* ASCII OEM table identification */ UINT32 OemRevision; /* OEM revision number */ char AslCompilerId[ACPI_NAME_SIZE]; /* ASCII ASL compiler vendor ID */ UINT32 AslCompilerRevision; /* ASL compiler version */ } ACPI_TABLE_HEADER; /******************************************************************************* * * GAS - Generic Address Structure (ACPI 2.0+) * * Note: Since this structure is used in the ACPI tables, it is byte aligned. * If misaligned access is not supported by the hardware, accesses to the * 64-bit Address field must be performed with care. * ******************************************************************************/ typedef struct acpi_generic_address { UINT8 SpaceId; /* Address space where struct or register exists */ UINT8 BitWidth; /* Size in bits of given register */ UINT8 BitOffset; /* Bit offset within the register */ UINT8 AccessWidth; /* Minimum Access size (ACPI 3.0) */ UINT64 Address; /* 64-bit address of struct or register */ } ACPI_GENERIC_ADDRESS; /******************************************************************************* * * RSDP - Root System Description Pointer (Signature is "RSD PTR ") * Version 2 * ******************************************************************************/ typedef struct acpi_table_rsdp { char Signature[8]; /* ACPI signature, contains "RSD PTR " */ UINT8 Checksum; /* ACPI 1.0 checksum */ char OemId[ACPI_OEM_ID_SIZE]; /* OEM identification */ UINT8 Revision; /* Must be (0) for ACPI 1.0 or (2) for ACPI 2.0+ */ UINT32 RsdtPhysicalAddress; /* 32-bit physical address of the RSDT */ UINT32 Length; /* Table length in bytes, including header (ACPI 2.0+) */ UINT64 XsdtPhysicalAddress; /* 64-bit physical address of the XSDT (ACPI 2.0+) */ UINT8 ExtendedChecksum; /* Checksum of entire table (ACPI 2.0+) */ UINT8 Reserved[3]; /* Reserved, must be zero */ } ACPI_TABLE_RSDP; /* Standalone struct for the ACPI 1.0 RSDP */ typedef struct acpi_rsdp_common { char Signature[8]; UINT8 Checksum; char OemId[ACPI_OEM_ID_SIZE]; UINT8 Revision; UINT32 RsdtPhysicalAddress; } ACPI_RSDP_COMMON; /* Standalone struct for the extended part of the RSDP (ACPI 2.0+) */ typedef struct acpi_rsdp_extension { UINT32 Length; UINT64 XsdtPhysicalAddress; UINT8 ExtendedChecksum; UINT8 Reserved[3]; } ACPI_RSDP_EXTENSION; /******************************************************************************* * * RSDT/XSDT - Root System Description Tables * Version 1 (both) * ******************************************************************************/ typedef struct acpi_table_rsdt { ACPI_TABLE_HEADER Header; /* Common ACPI table header */ UINT32 TableOffsetEntry[1]; /* Array of pointers to ACPI tables */ } ACPI_TABLE_RSDT; typedef struct acpi_table_xsdt { ACPI_TABLE_HEADER Header; /* Common ACPI table header */ UINT64 TableOffsetEntry[1]; /* Array of pointers to ACPI tables */ } ACPI_TABLE_XSDT; #define ACPI_RSDT_ENTRY_SIZE (sizeof (UINT32)) #define ACPI_XSDT_ENTRY_SIZE (sizeof (UINT64)) /******************************************************************************* * * FACS - Firmware ACPI Control Structure (FACS) * ******************************************************************************/ typedef struct acpi_table_facs { char Signature[4]; /* ASCII table signature */ UINT32 Length; /* Length of structure, in bytes */ UINT32 HardwareSignature; /* Hardware configuration signature */ UINT32 FirmwareWakingVector; /* 32-bit physical address of the Firmware Waking Vector */ UINT32 GlobalLock; /* Global Lock for shared hardware resources */ UINT32 Flags; UINT64 XFirmwareWakingVector; /* 64-bit version of the Firmware Waking Vector (ACPI 2.0+) */ UINT8 Version; /* Version of this table (ACPI 2.0+) */ UINT8 Reserved[3]; /* Reserved, must be zero */ UINT32 OspmFlags; /* Flags to be set by OSPM (ACPI 4.0) */ UINT8 Reserved1[24]; /* Reserved, must be zero */ } ACPI_TABLE_FACS; /* Masks for GlobalLock flag field above */ #define ACPI_GLOCK_PENDING (1) /* 00: Pending global lock ownership */ #define ACPI_GLOCK_OWNED (1<<1) /* 01: Global lock is owned */ /* Masks for Flags field above */ #define ACPI_FACS_S4_BIOS_PRESENT (1) /* 00: S4BIOS support is present */ #define ACPI_FACS_64BIT_WAKE (1<<1) /* 01: 64-bit wake vector supported (ACPI 4.0) */ /* Masks for OspmFlags field above */ #define ACPI_FACS_64BIT_ENVIRONMENT (1) /* 00: 64-bit wake environment is required (ACPI 4.0) */ /******************************************************************************* * * FADT - Fixed ACPI Description Table (Signature "FACP") * Version 4 * ******************************************************************************/ /* Fields common to all versions of the FADT */ typedef struct acpi_table_fadt { ACPI_TABLE_HEADER Header; /* Common ACPI table header */ UINT32 Facs; /* 32-bit physical address of FACS */ UINT32 Dsdt; /* 32-bit physical address of DSDT */ UINT8 Model; /* System Interrupt Model (ACPI 1.0) - not used in ACPI 2.0+ */ UINT8 PreferredProfile; /* Conveys preferred power management profile to OSPM. */ UINT16 SciInterrupt; /* System vector of SCI interrupt */ UINT32 SmiCommand; /* 32-bit Port address of SMI command port */ UINT8 AcpiEnable; /* Value to write to SMI_CMD to enable ACPI */ UINT8 AcpiDisable; /* Value to write to SMI_CMD to disable ACPI */ UINT8 S4BiosRequest; /* Value to write to SMI_CMD to enter S4BIOS state */ UINT8 PstateControl; /* Processor performance state control*/ UINT32 Pm1aEventBlock; /* 32-bit port address of Power Mgt 1a Event Reg Blk */ UINT32 Pm1bEventBlock; /* 32-bit port address of Power Mgt 1b Event Reg Blk */ UINT32 Pm1aControlBlock; /* 32-bit port address of Power Mgt 1a Control Reg Blk */ UINT32 Pm1bControlBlock; /* 32-bit port address of Power Mgt 1b Control Reg Blk */ UINT32 Pm2ControlBlock; /* 32-bit port address of Power Mgt 2 Control Reg Blk */ UINT32 PmTimerBlock; /* 32-bit port address of Power Mgt Timer Ctrl Reg Blk */ UINT32 Gpe0Block; /* 32-bit port address of General Purpose Event 0 Reg Blk */ UINT32 Gpe1Block; /* 32-bit port address of General Purpose Event 1 Reg Blk */ UINT8 Pm1EventLength; /* Byte Length of ports at Pm1xEventBlock */ UINT8 Pm1ControlLength; /* Byte Length of ports at Pm1xControlBlock */ UINT8 Pm2ControlLength; /* Byte Length of ports at Pm2ControlBlock */ UINT8 PmTimerLength; /* Byte Length of ports at PmTimerBlock */ UINT8 Gpe0BlockLength; /* Byte Length of ports at Gpe0Block */ UINT8 Gpe1BlockLength; /* Byte Length of ports at Gpe1Block */ UINT8 Gpe1Base; /* Offset in GPE number space where GPE1 events start */ UINT8 CstControl; /* Support for the _CST object and C-States change notification */ UINT16 C2Latency; /* Worst case HW latency to enter/exit C2 state */ UINT16 C3Latency; /* Worst case HW latency to enter/exit C3 state */ UINT16 FlushSize; /* Processor memory cache line width, in bytes */ UINT16 FlushStride; /* Number of flush strides that need to be read */ UINT8 DutyOffset; /* Processor duty cycle index in processor P_CNT reg */ UINT8 DutyWidth; /* Processor duty cycle value bit width in P_CNT register */ UINT8 DayAlarm; /* Index to day-of-month alarm in RTC CMOS RAM */ UINT8 MonthAlarm; /* Index to month-of-year alarm in RTC CMOS RAM */ UINT8 Century; /* Index to century in RTC CMOS RAM */ UINT16 BootFlags; /* IA-PC Boot Architecture Flags (see below for individual flags) */ UINT8 Reserved; /* Reserved, must be zero */ UINT32 Flags; /* Miscellaneous flag bits (see below for individual flags) */ ACPI_GENERIC_ADDRESS ResetRegister; /* 64-bit address of the Reset register */ UINT8 ResetValue; /* Value to write to the ResetRegister port to reset the system */ UINT8 Reserved4[3]; /* Reserved, must be zero */ UINT64 XFacs; /* 64-bit physical address of FACS */ UINT64 XDsdt; /* 64-bit physical address of DSDT */ ACPI_GENERIC_ADDRESS XPm1aEventBlock; /* 64-bit Extended Power Mgt 1a Event Reg Blk address */ ACPI_GENERIC_ADDRESS XPm1bEventBlock; /* 64-bit Extended Power Mgt 1b Event Reg Blk address */ ACPI_GENERIC_ADDRESS XPm1aControlBlock; /* 64-bit Extended Power Mgt 1a Control Reg Blk address */ ACPI_GENERIC_ADDRESS XPm1bControlBlock; /* 64-bit Extended Power Mgt 1b Control Reg Blk address */ ACPI_GENERIC_ADDRESS XPm2ControlBlock; /* 64-bit Extended Power Mgt 2 Control Reg Blk address */ ACPI_GENERIC_ADDRESS XPmTimerBlock; /* 64-bit Extended Power Mgt Timer Ctrl Reg Blk address */ ACPI_GENERIC_ADDRESS XGpe0Block; /* 64-bit Extended General Purpose Event 0 Reg Blk address */ ACPI_GENERIC_ADDRESS XGpe1Block; /* 64-bit Extended General Purpose Event 1 Reg Blk address */ ACPI_GENERIC_ADDRESS SleepControl; /* 64-bit Sleep Control register (ACPI 5.0) */ ACPI_GENERIC_ADDRESS SleepStatus; /* 64-bit Sleep Status register (ACPI 5.0) */ } ACPI_TABLE_FADT; /* Masks for FADT Boot Architecture Flags (BootFlags) [Vx]=Introduced in this FADT revision */ #define ACPI_FADT_LEGACY_DEVICES (1) /* 00: [V2] System has LPC or ISA bus devices */ #define ACPI_FADT_8042 (1<<1) /* 01: [V3] System has an 8042 controller on port 60/64 */ #define ACPI_FADT_NO_VGA (1<<2) /* 02: [V4] It is not safe to probe for VGA hardware */ #define ACPI_FADT_NO_MSI (1<<3) /* 03: [V4] Message Signaled Interrupts (MSI) must not be enabled */ #define ACPI_FADT_NO_ASPM (1<<4) /* 04: [V4] PCIe ASPM control must not be enabled */ #define ACPI_FADT_NO_CMOS_RTC (1<<5) /* 05: [V5] No CMOS real-time clock present */ /* Masks for FADT flags */ #define ACPI_FADT_WBINVD (1) /* 00: [V1] The WBINVD instruction works properly */ #define ACPI_FADT_WBINVD_FLUSH (1<<1) /* 01: [V1] WBINVD flushes but does not invalidate caches */ #define ACPI_FADT_C1_SUPPORTED (1<<2) /* 02: [V1] All processors support C1 state */ #define ACPI_FADT_C2_MP_SUPPORTED (1<<3) /* 03: [V1] C2 state works on MP system */ #define ACPI_FADT_POWER_BUTTON (1<<4) /* 04: [V1] Power button is handled as a control method device */ #define ACPI_FADT_SLEEP_BUTTON (1<<5) /* 05: [V1] Sleep button is handled as a control method device */ #define ACPI_FADT_FIXED_RTC (1<<6) /* 06: [V1] RTC wakeup status is not in fixed register space */ #define ACPI_FADT_S4_RTC_WAKE (1<<7) /* 07: [V1] RTC alarm can wake system from S4 */ #define ACPI_FADT_32BIT_TIMER (1<<8) /* 08: [V1] ACPI timer width is 32-bit (0=24-bit) */ #define ACPI_FADT_DOCKING_SUPPORTED (1<<9) /* 09: [V1] Docking supported */ #define ACPI_FADT_RESET_REGISTER (1<<10) /* 10: [V2] System reset via the FADT RESET_REG supported */ #define ACPI_FADT_SEALED_CASE (1<<11) /* 11: [V3] No internal expansion capabilities and case is sealed */ #define ACPI_FADT_HEADLESS (1<<12) /* 12: [V3] No local video capabilities or local input devices */ #define ACPI_FADT_SLEEP_TYPE (1<<13) /* 13: [V3] Must execute native instruction after writing SLP_TYPx register */ #define ACPI_FADT_PCI_EXPRESS_WAKE (1<<14) /* 14: [V4] System supports PCIEXP_WAKE (STS/EN) bits (ACPI 3.0) */ #define ACPI_FADT_PLATFORM_CLOCK (1<<15) /* 15: [V4] OSPM should use platform-provided timer (ACPI 3.0) */ #define ACPI_FADT_S4_RTC_VALID (1<<16) /* 16: [V4] Contents of RTC_STS valid after S4 wake (ACPI 3.0) */ #define ACPI_FADT_REMOTE_POWER_ON (1<<17) /* 17: [V4] System is compatible with remote power on (ACPI 3.0) */ #define ACPI_FADT_APIC_CLUSTER (1<<18) /* 18: [V4] All local APICs must use cluster model (ACPI 3.0) */ #define ACPI_FADT_APIC_PHYSICAL (1<<19) /* 19: [V4] All local xAPICs must use physical dest mode (ACPI 3.0) */ #define ACPI_FADT_HW_REDUCED (1<<20) /* 20: [V5] ACPI hardware is not implemented (ACPI 5.0) */ #define ACPI_FADT_LOW_POWER_S0 (1<<21) /* 21: [V5] S0 power savings are equal or better than S3 (ACPI 5.0) */ /* Values for PreferredProfile (Preferred Power Management Profiles) */ enum AcpiPreferredPmProfiles { PM_UNSPECIFIED = 0, PM_DESKTOP = 1, PM_MOBILE = 2, PM_WORKSTATION = 3, PM_ENTERPRISE_SERVER = 4, PM_SOHO_SERVER = 5, PM_APPLIANCE_PC = 6, PM_PERFORMANCE_SERVER = 7, PM_TABLET = 8 }; /* Values for SleepStatus and SleepControl registers (V5 FADT) */ #define ACPI_X_WAKE_STATUS 0x80 #define ACPI_X_SLEEP_TYPE_MASK 0x1C #define ACPI_X_SLEEP_TYPE_POSITION 0x02 #define ACPI_X_SLEEP_ENABLE 0x20 /* Reset to default packing */ #pragma pack() /* * Internal table-related structures */ typedef union acpi_name_union { UINT32 Integer; char Ascii[4]; } ACPI_NAME_UNION; /* Internal ACPI Table Descriptor. One per ACPI table. */ typedef struct acpi_table_desc { ACPI_PHYSICAL_ADDRESS Address; ACPI_TABLE_HEADER *Pointer; UINT32 Length; /* Length fixed at 32 bits (fixed in table header) */ ACPI_NAME_UNION Signature; ACPI_OWNER_ID OwnerId; UINT8 Flags; } ACPI_TABLE_DESC; /* Masks for Flags field above */ #define ACPI_TABLE_ORIGIN_EXTERNAL_VIRTUAL (0) /* Virtual address, external maintained */ #define ACPI_TABLE_ORIGIN_INTERNAL_PHYSICAL (1) /* Physical address, internally mapped */ #define ACPI_TABLE_ORIGIN_INTERNAL_VIRTUAL (2) /* Virtual address, internallly allocated */ #define ACPI_TABLE_ORIGIN_MASK (3) #define ACPI_TABLE_IS_LOADED (8) /* * Get the remaining ACPI tables */ #include "actbl1.h" #include "actbl2.h" #include "actbl3.h" /* Macros used to generate offsets to specific table fields */ #define ACPI_FADT_OFFSET(f) (UINT16) ACPI_OFFSET (ACPI_TABLE_FADT, f) /* * Sizes of the various flavors of FADT. We need to look closely * at the FADT length because the version number essentially tells * us nothing because of many BIOS bugs where the version does not * match the expected length. In other words, the length of the * FADT is the bottom line as to what the version really is. * * For reference, the values below are as follows: * FADT V1 size: 0x074 * FADT V2 size: 0x084 * FADT V3 size: 0x0F4 * FADT V4 size: 0x0F4 * FADT V5 size: 0x10C */ #define ACPI_FADT_V1_SIZE (UINT32) (ACPI_FADT_OFFSET (Flags) + 4) #define ACPI_FADT_V2_SIZE (UINT32) (ACPI_FADT_OFFSET (Reserved4[0]) + 3) #define ACPI_FADT_V3_SIZE (UINT32) (ACPI_FADT_OFFSET (SleepControl)) #define ACPI_FADT_V5_SIZE (UINT32) (sizeof (ACPI_TABLE_FADT)) #endif /* __ACTBL_H__ */ src/acpica/source/include/actbl1.h000066400000000000000000001172631231470457100173450ustar00rootroot00000000000000/****************************************************************************** * * Name: actbl1.h - Additional ACPI table definitions * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #ifndef __ACTBL1_H__ #define __ACTBL1_H__ /******************************************************************************* * * Additional ACPI Tables (1) * * These tables are not consumed directly by the ACPICA subsystem, but are * included here to support device drivers and the AML disassembler. * * The tables in this file are fully defined within the ACPI specification. * ******************************************************************************/ /* * Values for description table header signatures for tables defined in this * file. Useful because they make it more difficult to inadvertently type in * the wrong signature. */ #define ACPI_SIG_BERT "BERT" /* Boot Error Record Table */ #define ACPI_SIG_CPEP "CPEP" /* Corrected Platform Error Polling table */ #define ACPI_SIG_ECDT "ECDT" /* Embedded Controller Boot Resources Table */ #define ACPI_SIG_EINJ "EINJ" /* Error Injection table */ #define ACPI_SIG_ERST "ERST" /* Error Record Serialization Table */ #define ACPI_SIG_HEST "HEST" /* Hardware Error Source Table */ #define ACPI_SIG_MADT "APIC" /* Multiple APIC Description Table */ #define ACPI_SIG_MSCT "MSCT" /* Maximum System Characteristics Table */ #define ACPI_SIG_SBST "SBST" /* Smart Battery Specification Table */ #define ACPI_SIG_SLIT "SLIT" /* System Locality Distance Information Table */ #define ACPI_SIG_SRAT "SRAT" /* System Resource Affinity Table */ /* * All tables must be byte-packed to match the ACPI specification, since * the tables are provided by the system BIOS. */ #pragma pack(1) /* * Note: C bitfields are not used for this reason: * * "Bitfields are great and easy to read, but unfortunately the C language * does not specify the layout of bitfields in memory, which means they are * essentially useless for dealing with packed data in on-disk formats or * binary wire protocols." (Or ACPI tables and buffers.) "If you ask me, * this decision was a design error in C. Ritchie could have picked an order * and stuck with it." Norman Ramsey. * See http://stackoverflow.com/a/1053662/41661 */ /******************************************************************************* * * Common subtable headers * ******************************************************************************/ /* Generic subtable header (used in MADT, SRAT, etc.) */ typedef struct acpi_subtable_header { UINT8 Type; UINT8 Length; } ACPI_SUBTABLE_HEADER; /* Subtable header for WHEA tables (EINJ, ERST, WDAT) */ typedef struct acpi_whea_header { UINT8 Action; UINT8 Instruction; UINT8 Flags; UINT8 Reserved; ACPI_GENERIC_ADDRESS RegisterRegion; UINT64 Value; /* Value used with Read/Write register */ UINT64 Mask; /* Bitmask required for this register instruction */ } ACPI_WHEA_HEADER; /******************************************************************************* * * BERT - Boot Error Record Table (ACPI 4.0) * Version 1 * ******************************************************************************/ typedef struct acpi_table_bert { ACPI_TABLE_HEADER Header; /* Common ACPI table header */ UINT32 RegionLength; /* Length of the boot error region */ UINT64 Address; /* Physical address of the error region */ } ACPI_TABLE_BERT; /* Boot Error Region (not a subtable, pointed to by Address field above) */ typedef struct acpi_bert_region { UINT32 BlockStatus; /* Type of error information */ UINT32 RawDataOffset; /* Offset to raw error data */ UINT32 RawDataLength; /* Length of raw error data */ UINT32 DataLength; /* Length of generic error data */ UINT32 ErrorSeverity; /* Severity code */ } ACPI_BERT_REGION; /* Values for BlockStatus flags above */ #define ACPI_BERT_UNCORRECTABLE (1) #define ACPI_BERT_CORRECTABLE (1<<1) #define ACPI_BERT_MULTIPLE_UNCORRECTABLE (1<<2) #define ACPI_BERT_MULTIPLE_CORRECTABLE (1<<3) #define ACPI_BERT_ERROR_ENTRY_COUNT (0xFF<<4) /* 8 bits, error count */ /* Values for ErrorSeverity above */ enum AcpiBertErrorSeverity { ACPI_BERT_ERROR_CORRECTABLE = 0, ACPI_BERT_ERROR_FATAL = 1, ACPI_BERT_ERROR_CORRECTED = 2, ACPI_BERT_ERROR_NONE = 3, ACPI_BERT_ERROR_RESERVED = 4 /* 4 and greater are reserved */ }; /* * Note: The generic error data that follows the ErrorSeverity field above * uses the ACPI_HEST_GENERIC_DATA defined under the HEST table below */ /******************************************************************************* * * CPEP - Corrected Platform Error Polling table (ACPI 4.0) * Version 1 * ******************************************************************************/ typedef struct acpi_table_cpep { ACPI_TABLE_HEADER Header; /* Common ACPI table header */ UINT64 Reserved; } ACPI_TABLE_CPEP; /* Subtable */ typedef struct acpi_cpep_polling { ACPI_SUBTABLE_HEADER Header; UINT8 Id; /* Processor ID */ UINT8 Eid; /* Processor EID */ UINT32 Interval; /* Polling interval (msec) */ } ACPI_CPEP_POLLING; /******************************************************************************* * * ECDT - Embedded Controller Boot Resources Table * Version 1 * ******************************************************************************/ typedef struct acpi_table_ecdt { ACPI_TABLE_HEADER Header; /* Common ACPI table header */ ACPI_GENERIC_ADDRESS Control; /* Address of EC command/status register */ ACPI_GENERIC_ADDRESS Data; /* Address of EC data register */ UINT32 Uid; /* Unique ID - must be same as the EC _UID method */ UINT8 Gpe; /* The GPE for the EC */ UINT8 Id[1]; /* Full namepath of the EC in the ACPI namespace */ } ACPI_TABLE_ECDT; /******************************************************************************* * * EINJ - Error Injection Table (ACPI 4.0) * Version 1 * ******************************************************************************/ typedef struct acpi_table_einj { ACPI_TABLE_HEADER Header; /* Common ACPI table header */ UINT32 HeaderLength; UINT8 Flags; UINT8 Reserved[3]; UINT32 Entries; } ACPI_TABLE_EINJ; /* EINJ Injection Instruction Entries (actions) */ typedef struct acpi_einj_entry { ACPI_WHEA_HEADER WheaHeader; /* Common header for WHEA tables */ } ACPI_EINJ_ENTRY; /* Masks for Flags field above */ #define ACPI_EINJ_PRESERVE (1) /* Values for Action field above */ enum AcpiEinjActions { ACPI_EINJ_BEGIN_OPERATION = 0, ACPI_EINJ_GET_TRIGGER_TABLE = 1, ACPI_EINJ_SET_ERROR_TYPE = 2, ACPI_EINJ_GET_ERROR_TYPE = 3, ACPI_EINJ_END_OPERATION = 4, ACPI_EINJ_EXECUTE_OPERATION = 5, ACPI_EINJ_CHECK_BUSY_STATUS = 6, ACPI_EINJ_GET_COMMAND_STATUS = 7, ACPI_EINJ_SET_ERROR_TYPE_WITH_ADDRESS = 8, ACPI_EINJ_ACTION_RESERVED = 9, /* 9 and greater are reserved */ ACPI_EINJ_TRIGGER_ERROR = 0xFF /* Except for this value */ }; /* Values for Instruction field above */ enum AcpiEinjInstructions { ACPI_EINJ_READ_REGISTER = 0, ACPI_EINJ_READ_REGISTER_VALUE = 1, ACPI_EINJ_WRITE_REGISTER = 2, ACPI_EINJ_WRITE_REGISTER_VALUE = 3, ACPI_EINJ_NOOP = 4, ACPI_EINJ_FLUSH_CACHELINE = 5, ACPI_EINJ_INSTRUCTION_RESERVED = 6 /* 6 and greater are reserved */ }; typedef struct acpi_einj_error_type_with_addr { UINT32 ErrorType; UINT32 VendorStructOffset; UINT32 Flags; UINT32 ApicId; UINT64 Address; UINT64 Range; UINT32 PcieId; } ACPI_EINJ_ERROR_TYPE_WITH_ADDR; typedef struct acpi_einj_vendor { UINT32 Length; UINT32 PcieId; UINT16 VendorId; UINT16 DeviceId; UINT8 RevisionId; UINT8 Reserved[3]; } ACPI_EINJ_VENDOR; /* EINJ Trigger Error Action Table */ typedef struct acpi_einj_trigger { UINT32 HeaderSize; UINT32 Revision; UINT32 TableSize; UINT32 EntryCount; } ACPI_EINJ_TRIGGER; /* Command status return values */ enum AcpiEinjCommandStatus { ACPI_EINJ_SUCCESS = 0, ACPI_EINJ_FAILURE = 1, ACPI_EINJ_INVALID_ACCESS = 2, ACPI_EINJ_STATUS_RESERVED = 3 /* 3 and greater are reserved */ }; /* Error types returned from ACPI_EINJ_GET_ERROR_TYPE (bitfield) */ #define ACPI_EINJ_PROCESSOR_CORRECTABLE (1) #define ACPI_EINJ_PROCESSOR_UNCORRECTABLE (1<<1) #define ACPI_EINJ_PROCESSOR_FATAL (1<<2) #define ACPI_EINJ_MEMORY_CORRECTABLE (1<<3) #define ACPI_EINJ_MEMORY_UNCORRECTABLE (1<<4) #define ACPI_EINJ_MEMORY_FATAL (1<<5) #define ACPI_EINJ_PCIX_CORRECTABLE (1<<6) #define ACPI_EINJ_PCIX_UNCORRECTABLE (1<<7) #define ACPI_EINJ_PCIX_FATAL (1<<8) #define ACPI_EINJ_PLATFORM_CORRECTABLE (1<<9) #define ACPI_EINJ_PLATFORM_UNCORRECTABLE (1<<10) #define ACPI_EINJ_PLATFORM_FATAL (1<<11) #define ACPI_EINJ_VENDOR_DEFINED (1<<31) /******************************************************************************* * * ERST - Error Record Serialization Table (ACPI 4.0) * Version 1 * ******************************************************************************/ typedef struct acpi_table_erst { ACPI_TABLE_HEADER Header; /* Common ACPI table header */ UINT32 HeaderLength; UINT32 Reserved; UINT32 Entries; } ACPI_TABLE_ERST; /* ERST Serialization Entries (actions) */ typedef struct acpi_erst_entry { ACPI_WHEA_HEADER WheaHeader; /* Common header for WHEA tables */ } ACPI_ERST_ENTRY; /* Masks for Flags field above */ #define ACPI_ERST_PRESERVE (1) /* Values for Action field above */ enum AcpiErstActions { ACPI_ERST_BEGIN_WRITE = 0, ACPI_ERST_BEGIN_READ = 1, ACPI_ERST_BEGIN_CLEAR = 2, ACPI_ERST_END = 3, ACPI_ERST_SET_RECORD_OFFSET = 4, ACPI_ERST_EXECUTE_OPERATION = 5, ACPI_ERST_CHECK_BUSY_STATUS = 6, ACPI_ERST_GET_COMMAND_STATUS = 7, ACPI_ERST_GET_RECORD_ID = 8, ACPI_ERST_SET_RECORD_ID = 9, ACPI_ERST_GET_RECORD_COUNT = 10, ACPI_ERST_BEGIN_DUMMY_WRIITE = 11, ACPI_ERST_NOT_USED = 12, ACPI_ERST_GET_ERROR_RANGE = 13, ACPI_ERST_GET_ERROR_LENGTH = 14, ACPI_ERST_GET_ERROR_ATTRIBUTES = 15, ACPI_ERST_ACTION_RESERVED = 16 /* 16 and greater are reserved */ }; /* Values for Instruction field above */ enum AcpiErstInstructions { ACPI_ERST_READ_REGISTER = 0, ACPI_ERST_READ_REGISTER_VALUE = 1, ACPI_ERST_WRITE_REGISTER = 2, ACPI_ERST_WRITE_REGISTER_VALUE = 3, ACPI_ERST_NOOP = 4, ACPI_ERST_LOAD_VAR1 = 5, ACPI_ERST_LOAD_VAR2 = 6, ACPI_ERST_STORE_VAR1 = 7, ACPI_ERST_ADD = 8, ACPI_ERST_SUBTRACT = 9, ACPI_ERST_ADD_VALUE = 10, ACPI_ERST_SUBTRACT_VALUE = 11, ACPI_ERST_STALL = 12, ACPI_ERST_STALL_WHILE_TRUE = 13, ACPI_ERST_SKIP_NEXT_IF_TRUE = 14, ACPI_ERST_GOTO = 15, ACPI_ERST_SET_SRC_ADDRESS_BASE = 16, ACPI_ERST_SET_DST_ADDRESS_BASE = 17, ACPI_ERST_MOVE_DATA = 18, ACPI_ERST_INSTRUCTION_RESERVED = 19 /* 19 and greater are reserved */ }; /* Command status return values */ enum AcpiErstCommandStatus { ACPI_ERST_SUCESS = 0, ACPI_ERST_NO_SPACE = 1, ACPI_ERST_NOT_AVAILABLE = 2, ACPI_ERST_FAILURE = 3, ACPI_ERST_RECORD_EMPTY = 4, ACPI_ERST_NOT_FOUND = 5, ACPI_ERST_STATUS_RESERVED = 6 /* 6 and greater are reserved */ }; /* Error Record Serialization Information */ typedef struct acpi_erst_info { UINT16 Signature; /* Should be "ER" */ UINT8 Data[48]; } ACPI_ERST_INFO; /******************************************************************************* * * HEST - Hardware Error Source Table (ACPI 4.0) * Version 1 * ******************************************************************************/ typedef struct acpi_table_hest { ACPI_TABLE_HEADER Header; /* Common ACPI table header */ UINT32 ErrorSourceCount; } ACPI_TABLE_HEST; /* HEST subtable header */ typedef struct acpi_hest_header { UINT16 Type; UINT16 SourceId; } ACPI_HEST_HEADER; /* Values for Type field above for subtables */ enum AcpiHestTypes { ACPI_HEST_TYPE_IA32_CHECK = 0, ACPI_HEST_TYPE_IA32_CORRECTED_CHECK = 1, ACPI_HEST_TYPE_IA32_NMI = 2, ACPI_HEST_TYPE_NOT_USED3 = 3, ACPI_HEST_TYPE_NOT_USED4 = 4, ACPI_HEST_TYPE_NOT_USED5 = 5, ACPI_HEST_TYPE_AER_ROOT_PORT = 6, ACPI_HEST_TYPE_AER_ENDPOINT = 7, ACPI_HEST_TYPE_AER_BRIDGE = 8, ACPI_HEST_TYPE_GENERIC_ERROR = 9, ACPI_HEST_TYPE_RESERVED = 10 /* 10 and greater are reserved */ }; /* * HEST substructures contained in subtables */ /* * IA32 Error Bank(s) - Follows the ACPI_HEST_IA_MACHINE_CHECK and * ACPI_HEST_IA_CORRECTED structures. */ typedef struct acpi_hest_ia_error_bank { UINT8 BankNumber; UINT8 ClearStatusOnInit; UINT8 StatusFormat; UINT8 Reserved; UINT32 ControlRegister; UINT64 ControlData; UINT32 StatusRegister; UINT32 AddressRegister; UINT32 MiscRegister; } ACPI_HEST_IA_ERROR_BANK; /* Common HEST sub-structure for PCI/AER structures below (6,7,8) */ typedef struct acpi_hest_aer_common { UINT16 Reserved1; UINT8 Flags; UINT8 Enabled; UINT32 RecordsToPreallocate; UINT32 MaxSectionsPerRecord; UINT32 Bus; /* Bus and Segment numbers */ UINT16 Device; UINT16 Function; UINT16 DeviceControl; UINT16 Reserved2; UINT32 UncorrectableMask; UINT32 UncorrectableSeverity; UINT32 CorrectableMask; UINT32 AdvancedCapabilities; } ACPI_HEST_AER_COMMON; /* Masks for HEST Flags fields */ #define ACPI_HEST_FIRMWARE_FIRST (1) #define ACPI_HEST_GLOBAL (1<<1) /* * Macros to access the bus/segment numbers in Bus field above: * Bus number is encoded in bits 7:0 * Segment number is encoded in bits 23:8 */ #define ACPI_HEST_BUS(Bus) ((Bus) & 0xFF) #define ACPI_HEST_SEGMENT(Bus) (((Bus) >> 8) & 0xFFFF) /* Hardware Error Notification */ typedef struct acpi_hest_notify { UINT8 Type; UINT8 Length; UINT16 ConfigWriteEnable; UINT32 PollInterval; UINT32 Vector; UINT32 PollingThresholdValue; UINT32 PollingThresholdWindow; UINT32 ErrorThresholdValue; UINT32 ErrorThresholdWindow; } ACPI_HEST_NOTIFY; /* Values for Notify Type field above */ enum AcpiHestNotifyTypes { ACPI_HEST_NOTIFY_POLLED = 0, ACPI_HEST_NOTIFY_EXTERNAL = 1, ACPI_HEST_NOTIFY_LOCAL = 2, ACPI_HEST_NOTIFY_SCI = 3, ACPI_HEST_NOTIFY_NMI = 4, ACPI_HEST_NOTIFY_CMCI = 5, /* ACPI 5.0 */ ACPI_HEST_NOTIFY_MCE = 6, /* ACPI 5.0 */ ACPI_HEST_NOTIFY_RESERVED = 7 /* 7 and greater are reserved */ }; /* Values for ConfigWriteEnable bitfield above */ #define ACPI_HEST_TYPE (1) #define ACPI_HEST_POLL_INTERVAL (1<<1) #define ACPI_HEST_POLL_THRESHOLD_VALUE (1<<2) #define ACPI_HEST_POLL_THRESHOLD_WINDOW (1<<3) #define ACPI_HEST_ERR_THRESHOLD_VALUE (1<<4) #define ACPI_HEST_ERR_THRESHOLD_WINDOW (1<<5) /* * HEST subtables */ /* 0: IA32 Machine Check Exception */ typedef struct acpi_hest_ia_machine_check { ACPI_HEST_HEADER Header; UINT16 Reserved1; UINT8 Flags; UINT8 Enabled; UINT32 RecordsToPreallocate; UINT32 MaxSectionsPerRecord; UINT64 GlobalCapabilityData; UINT64 GlobalControlData; UINT8 NumHardwareBanks; UINT8 Reserved3[7]; } ACPI_HEST_IA_MACHINE_CHECK; /* 1: IA32 Corrected Machine Check */ typedef struct acpi_hest_ia_corrected { ACPI_HEST_HEADER Header; UINT16 Reserved1; UINT8 Flags; UINT8 Enabled; UINT32 RecordsToPreallocate; UINT32 MaxSectionsPerRecord; ACPI_HEST_NOTIFY Notify; UINT8 NumHardwareBanks; UINT8 Reserved2[3]; } ACPI_HEST_IA_CORRECTED; /* 2: IA32 Non-Maskable Interrupt */ typedef struct acpi_hest_ia_nmi { ACPI_HEST_HEADER Header; UINT32 Reserved; UINT32 RecordsToPreallocate; UINT32 MaxSectionsPerRecord; UINT32 MaxRawDataLength; } ACPI_HEST_IA_NMI; /* 3,4,5: Not used */ /* 6: PCI Express Root Port AER */ typedef struct acpi_hest_aer_root { ACPI_HEST_HEADER Header; ACPI_HEST_AER_COMMON Aer; UINT32 RootErrorCommand; } ACPI_HEST_AER_ROOT; /* 7: PCI Express AER (AER Endpoint) */ typedef struct acpi_hest_aer { ACPI_HEST_HEADER Header; ACPI_HEST_AER_COMMON Aer; } ACPI_HEST_AER; /* 8: PCI Express/PCI-X Bridge AER */ typedef struct acpi_hest_aer_bridge { ACPI_HEST_HEADER Header; ACPI_HEST_AER_COMMON Aer; UINT32 UncorrectableMask2; UINT32 UncorrectableSeverity2; UINT32 AdvancedCapabilities2; } ACPI_HEST_AER_BRIDGE; /* 9: Generic Hardware Error Source */ typedef struct acpi_hest_generic { ACPI_HEST_HEADER Header; UINT16 RelatedSourceId; UINT8 Reserved; UINT8 Enabled; UINT32 RecordsToPreallocate; UINT32 MaxSectionsPerRecord; UINT32 MaxRawDataLength; ACPI_GENERIC_ADDRESS ErrorStatusAddress; ACPI_HEST_NOTIFY Notify; UINT32 ErrorBlockLength; } ACPI_HEST_GENERIC; /* Generic Error Status block */ typedef struct acpi_hest_generic_status { UINT32 BlockStatus; UINT32 RawDataOffset; UINT32 RawDataLength; UINT32 DataLength; UINT32 ErrorSeverity; } ACPI_HEST_GENERIC_STATUS; /* Values for BlockStatus flags above */ #define ACPI_HEST_UNCORRECTABLE (1) #define ACPI_HEST_CORRECTABLE (1<<1) #define ACPI_HEST_MULTIPLE_UNCORRECTABLE (1<<2) #define ACPI_HEST_MULTIPLE_CORRECTABLE (1<<3) #define ACPI_HEST_ERROR_ENTRY_COUNT (0xFF<<4) /* 8 bits, error count */ /* Generic Error Data entry */ typedef struct acpi_hest_generic_data { UINT8 SectionType[16]; UINT32 ErrorSeverity; UINT16 Revision; UINT8 ValidationBits; UINT8 Flags; UINT32 ErrorDataLength; UINT8 FruId[16]; UINT8 FruText[20]; } ACPI_HEST_GENERIC_DATA; /******************************************************************************* * * MADT - Multiple APIC Description Table * Version 3 * ******************************************************************************/ typedef struct acpi_table_madt { ACPI_TABLE_HEADER Header; /* Common ACPI table header */ UINT32 Address; /* Physical address of local APIC */ UINT32 Flags; } ACPI_TABLE_MADT; /* Masks for Flags field above */ #define ACPI_MADT_PCAT_COMPAT (1) /* 00: System also has dual 8259s */ /* Values for PCATCompat flag */ #define ACPI_MADT_DUAL_PIC 0 #define ACPI_MADT_MULTIPLE_APIC 1 /* Values for MADT subtable type in ACPI_SUBTABLE_HEADER */ enum AcpiMadtType { ACPI_MADT_TYPE_LOCAL_APIC = 0, ACPI_MADT_TYPE_IO_APIC = 1, ACPI_MADT_TYPE_INTERRUPT_OVERRIDE = 2, ACPI_MADT_TYPE_NMI_SOURCE = 3, ACPI_MADT_TYPE_LOCAL_APIC_NMI = 4, ACPI_MADT_TYPE_LOCAL_APIC_OVERRIDE = 5, ACPI_MADT_TYPE_IO_SAPIC = 6, ACPI_MADT_TYPE_LOCAL_SAPIC = 7, ACPI_MADT_TYPE_INTERRUPT_SOURCE = 8, ACPI_MADT_TYPE_LOCAL_X2APIC = 9, ACPI_MADT_TYPE_LOCAL_X2APIC_NMI = 10, ACPI_MADT_TYPE_GENERIC_INTERRUPT = 11, ACPI_MADT_TYPE_GENERIC_DISTRIBUTOR = 12, ACPI_MADT_TYPE_RESERVED = 13 /* 13 and greater are reserved */ }; /* * MADT Sub-tables, correspond to Type in ACPI_SUBTABLE_HEADER */ /* 0: Processor Local APIC */ typedef struct acpi_madt_local_apic { ACPI_SUBTABLE_HEADER Header; UINT8 ProcessorId; /* ACPI processor id */ UINT8 Id; /* Processor's local APIC id */ UINT32 LapicFlags; } ACPI_MADT_LOCAL_APIC; /* 1: IO APIC */ typedef struct acpi_madt_io_apic { ACPI_SUBTABLE_HEADER Header; UINT8 Id; /* I/O APIC ID */ UINT8 Reserved; /* Reserved - must be zero */ UINT32 Address; /* APIC physical address */ UINT32 GlobalIrqBase; /* Global system interrupt where INTI lines start */ } ACPI_MADT_IO_APIC; /* 2: Interrupt Override */ typedef struct acpi_madt_interrupt_override { ACPI_SUBTABLE_HEADER Header; UINT8 Bus; /* 0 - ISA */ UINT8 SourceIrq; /* Interrupt source (IRQ) */ UINT32 GlobalIrq; /* Global system interrupt */ UINT16 IntiFlags; } ACPI_MADT_INTERRUPT_OVERRIDE; /* 3: NMI Source */ typedef struct acpi_madt_nmi_source { ACPI_SUBTABLE_HEADER Header; UINT16 IntiFlags; UINT32 GlobalIrq; /* Global system interrupt */ } ACPI_MADT_NMI_SOURCE; /* 4: Local APIC NMI */ typedef struct acpi_madt_local_apic_nmi { ACPI_SUBTABLE_HEADER Header; UINT8 ProcessorId; /* ACPI processor id */ UINT16 IntiFlags; UINT8 Lint; /* LINTn to which NMI is connected */ } ACPI_MADT_LOCAL_APIC_NMI; /* 5: Address Override */ typedef struct acpi_madt_local_apic_override { ACPI_SUBTABLE_HEADER Header; UINT16 Reserved; /* Reserved, must be zero */ UINT64 Address; /* APIC physical address */ } ACPI_MADT_LOCAL_APIC_OVERRIDE; /* 6: I/O Sapic */ typedef struct acpi_madt_io_sapic { ACPI_SUBTABLE_HEADER Header; UINT8 Id; /* I/O SAPIC ID */ UINT8 Reserved; /* Reserved, must be zero */ UINT32 GlobalIrqBase; /* Global interrupt for SAPIC start */ UINT64 Address; /* SAPIC physical address */ } ACPI_MADT_IO_SAPIC; /* 7: Local Sapic */ typedef struct acpi_madt_local_sapic { ACPI_SUBTABLE_HEADER Header; UINT8 ProcessorId; /* ACPI processor id */ UINT8 Id; /* SAPIC ID */ UINT8 Eid; /* SAPIC EID */ UINT8 Reserved[3]; /* Reserved, must be zero */ UINT32 LapicFlags; UINT32 Uid; /* Numeric UID - ACPI 3.0 */ char UidString[1]; /* String UID - ACPI 3.0 */ } ACPI_MADT_LOCAL_SAPIC; /* 8: Platform Interrupt Source */ typedef struct acpi_madt_interrupt_source { ACPI_SUBTABLE_HEADER Header; UINT16 IntiFlags; UINT8 Type; /* 1=PMI, 2=INIT, 3=corrected */ UINT8 Id; /* Processor ID */ UINT8 Eid; /* Processor EID */ UINT8 IoSapicVector; /* Vector value for PMI interrupts */ UINT32 GlobalIrq; /* Global system interrupt */ UINT32 Flags; /* Interrupt Source Flags */ } ACPI_MADT_INTERRUPT_SOURCE; /* Masks for Flags field above */ #define ACPI_MADT_CPEI_OVERRIDE (1) /* 9: Processor Local X2APIC (ACPI 4.0) */ typedef struct acpi_madt_local_x2apic { ACPI_SUBTABLE_HEADER Header; UINT16 Reserved; /* Reserved - must be zero */ UINT32 LocalApicId; /* Processor x2APIC ID */ UINT32 LapicFlags; UINT32 Uid; /* ACPI processor UID */ } ACPI_MADT_LOCAL_X2APIC; /* 10: Local X2APIC NMI (ACPI 4.0) */ typedef struct acpi_madt_local_x2apic_nmi { ACPI_SUBTABLE_HEADER Header; UINT16 IntiFlags; UINT32 Uid; /* ACPI processor UID */ UINT8 Lint; /* LINTn to which NMI is connected */ UINT8 Reserved[3]; /* Reserved - must be zero */ } ACPI_MADT_LOCAL_X2APIC_NMI; /* 11: Generic Interrupt (ACPI 5.0) */ typedef struct acpi_madt_generic_interrupt { ACPI_SUBTABLE_HEADER Header; UINT16 Reserved; /* Reserved - must be zero */ UINT32 GicId; UINT32 Uid; UINT32 Flags; UINT32 ParkingVersion; UINT32 PerformanceInterrupt; UINT64 ParkedAddress; UINT64 BaseAddress; } ACPI_MADT_GENERIC_INTERRUPT; /* 12: Generic Distributor (ACPI 5.0) */ typedef struct acpi_madt_generic_distributor { ACPI_SUBTABLE_HEADER Header; UINT16 Reserved; /* Reserved - must be zero */ UINT32 GicId; UINT64 BaseAddress; UINT32 GlobalIrqBase; UINT32 Reserved2; /* Reserved - must be zero */ } ACPI_MADT_GENERIC_DISTRIBUTOR; /* * Common flags fields for MADT subtables */ /* MADT Local APIC flags (LapicFlags) and GIC flags */ #define ACPI_MADT_ENABLED (1) /* 00: Processor is usable if set */ /* MADT MPS INTI flags (IntiFlags) */ #define ACPI_MADT_POLARITY_MASK (3) /* 00-01: Polarity of APIC I/O input signals */ #define ACPI_MADT_TRIGGER_MASK (3<<2) /* 02-03: Trigger mode of APIC input signals */ /* Values for MPS INTI flags */ #define ACPI_MADT_POLARITY_CONFORMS 0 #define ACPI_MADT_POLARITY_ACTIVE_HIGH 1 #define ACPI_MADT_POLARITY_RESERVED 2 #define ACPI_MADT_POLARITY_ACTIVE_LOW 3 #define ACPI_MADT_TRIGGER_CONFORMS (0) #define ACPI_MADT_TRIGGER_EDGE (1<<2) #define ACPI_MADT_TRIGGER_RESERVED (2<<2) #define ACPI_MADT_TRIGGER_LEVEL (3<<2) /******************************************************************************* * * MSCT - Maximum System Characteristics Table (ACPI 4.0) * Version 1 * ******************************************************************************/ typedef struct acpi_table_msct { ACPI_TABLE_HEADER Header; /* Common ACPI table header */ UINT32 ProximityOffset; /* Location of proximity info struct(s) */ UINT32 MaxProximityDomains;/* Max number of proximity domains */ UINT32 MaxClockDomains; /* Max number of clock domains */ UINT64 MaxAddress; /* Max physical address in system */ } ACPI_TABLE_MSCT; /* Subtable - Maximum Proximity Domain Information. Version 1 */ typedef struct acpi_msct_proximity { UINT8 Revision; UINT8 Length; UINT32 RangeStart; /* Start of domain range */ UINT32 RangeEnd; /* End of domain range */ UINT32 ProcessorCapacity; UINT64 MemoryCapacity; /* In bytes */ } ACPI_MSCT_PROXIMITY; /******************************************************************************* * * SBST - Smart Battery Specification Table * Version 1 * ******************************************************************************/ typedef struct acpi_table_sbst { ACPI_TABLE_HEADER Header; /* Common ACPI table header */ UINT32 WarningLevel; UINT32 LowLevel; UINT32 CriticalLevel; } ACPI_TABLE_SBST; /******************************************************************************* * * SLIT - System Locality Distance Information Table * Version 1 * ******************************************************************************/ typedef struct acpi_table_slit { ACPI_TABLE_HEADER Header; /* Common ACPI table header */ UINT64 LocalityCount; UINT8 Entry[1]; /* Real size = localities^2 */ } ACPI_TABLE_SLIT; /******************************************************************************* * * SRAT - System Resource Affinity Table * Version 3 * ******************************************************************************/ typedef struct acpi_table_srat { ACPI_TABLE_HEADER Header; /* Common ACPI table header */ UINT32 TableRevision; /* Must be value '1' */ UINT64 Reserved; /* Reserved, must be zero */ } ACPI_TABLE_SRAT; /* Values for subtable type in ACPI_SUBTABLE_HEADER */ enum AcpiSratType { ACPI_SRAT_TYPE_CPU_AFFINITY = 0, ACPI_SRAT_TYPE_MEMORY_AFFINITY = 1, ACPI_SRAT_TYPE_X2APIC_CPU_AFFINITY = 2, ACPI_SRAT_TYPE_RESERVED = 3 /* 3 and greater are reserved */ }; /* * SRAT Sub-tables, correspond to Type in ACPI_SUBTABLE_HEADER */ /* 0: Processor Local APIC/SAPIC Affinity */ typedef struct acpi_srat_cpu_affinity { ACPI_SUBTABLE_HEADER Header; UINT8 ProximityDomainLo; UINT8 ApicId; UINT32 Flags; UINT8 LocalSapicEid; UINT8 ProximityDomainHi[3]; UINT32 Reserved; /* Reserved, must be zero */ } ACPI_SRAT_CPU_AFFINITY; /* Flags */ #define ACPI_SRAT_CPU_USE_AFFINITY (1) /* 00: Use affinity structure */ /* 1: Memory Affinity */ typedef struct acpi_srat_mem_affinity { ACPI_SUBTABLE_HEADER Header; UINT32 ProximityDomain; UINT16 Reserved; /* Reserved, must be zero */ UINT64 BaseAddress; UINT64 Length; UINT32 Reserved1; UINT32 Flags; UINT64 Reserved2; /* Reserved, must be zero */ } ACPI_SRAT_MEM_AFFINITY; /* Flags */ #define ACPI_SRAT_MEM_ENABLED (1) /* 00: Use affinity structure */ #define ACPI_SRAT_MEM_HOT_PLUGGABLE (1<<1) /* 01: Memory region is hot pluggable */ #define ACPI_SRAT_MEM_NON_VOLATILE (1<<2) /* 02: Memory region is non-volatile */ /* 2: Processor Local X2_APIC Affinity (ACPI 4.0) */ typedef struct acpi_srat_x2apic_cpu_affinity { ACPI_SUBTABLE_HEADER Header; UINT16 Reserved; /* Reserved, must be zero */ UINT32 ProximityDomain; UINT32 ApicId; UINT32 Flags; UINT32 ClockDomain; UINT32 Reserved2; } ACPI_SRAT_X2APIC_CPU_AFFINITY; /* Flags for ACPI_SRAT_CPU_AFFINITY and ACPI_SRAT_X2APIC_CPU_AFFINITY */ #define ACPI_SRAT_CPU_ENABLED (1) /* 00: Use affinity structure */ /* Reset to default packing */ #pragma pack() #endif /* __ACTBL1_H__ */ src/acpica/source/include/actbl2.h000066400000000000000000001354661231470457100173530ustar00rootroot00000000000000/****************************************************************************** * * Name: actbl2.h - ACPI Table Definitions (tables not in ACPI spec) * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #ifndef __ACTBL2_H__ #define __ACTBL2_H__ /******************************************************************************* * * Additional ACPI Tables (2) * * These tables are not consumed directly by the ACPICA subsystem, but are * included here to support device drivers and the AML disassembler. * * The tables in this file are defined by third-party specifications, and are * not defined directly by the ACPI specification itself. * ******************************************************************************/ /* * Values for description table header signatures for tables defined in this * file. Useful because they make it more difficult to inadvertently type in * the wrong signature. */ #define ACPI_SIG_ASF "ASF!" /* Alert Standard Format table */ #define ACPI_SIG_BOOT "BOOT" /* Simple Boot Flag Table */ #define ACPI_SIG_CSRT "CSRT" /* Core System Resource Table */ #define ACPI_SIG_DBG2 "DBG2" /* Debug Port table type 2 */ #define ACPI_SIG_DBGP "DBGP" /* Debug Port table */ #define ACPI_SIG_DMAR "DMAR" /* DMA Remapping table */ #define ACPI_SIG_HPET "HPET" /* High Precision Event Timer table */ #define ACPI_SIG_IBFT "IBFT" /* iSCSI Boot Firmware Table */ #define ACPI_SIG_IVRS "IVRS" /* I/O Virtualization Reporting Structure */ #define ACPI_SIG_MCFG "MCFG" /* PCI Memory Mapped Configuration table */ #define ACPI_SIG_MCHI "MCHI" /* Management Controller Host Interface table */ #define ACPI_SIG_MTMR "MTMR" /* MID Timer table */ #define ACPI_SIG_SLIC "SLIC" /* Software Licensing Description Table */ #define ACPI_SIG_SPCR "SPCR" /* Serial Port Console Redirection table */ #define ACPI_SIG_SPMI "SPMI" /* Server Platform Management Interface table */ #define ACPI_SIG_TCPA "TCPA" /* Trusted Computing Platform Alliance table */ #define ACPI_SIG_UEFI "UEFI" /* Uefi Boot Optimization Table */ #define ACPI_SIG_VRTC "VRTC" /* Virtual Real Time Clock Table */ #define ACPI_SIG_WAET "WAET" /* Windows ACPI Emulated devices Table */ #define ACPI_SIG_WDAT "WDAT" /* Watchdog Action Table */ #define ACPI_SIG_WDDT "WDDT" /* Watchdog Timer Description Table */ #define ACPI_SIG_WDRT "WDRT" /* Watchdog Resource Table */ #ifdef ACPI_UNDEFINED_TABLES /* * These tables have been seen in the field, but no definition has been found */ #define ACPI_SIG_ATKG "ATKG" #define ACPI_SIG_GSCI "GSCI" /* GMCH SCI table */ #define ACPI_SIG_IEIT "IEIT" #endif /* * All tables must be byte-packed to match the ACPI specification, since * the tables are provided by the system BIOS. */ #pragma pack(1) /* * Note: C bitfields are not used for this reason: * * "Bitfields are great and easy to read, but unfortunately the C language * does not specify the layout of bitfields in memory, which means they are * essentially useless for dealing with packed data in on-disk formats or * binary wire protocols." (Or ACPI tables and buffers.) "If you ask me, * this decision was a design error in C. Ritchie could have picked an order * and stuck with it." Norman Ramsey. * See http://stackoverflow.com/a/1053662/41661 */ /******************************************************************************* * * ASF - Alert Standard Format table (Signature "ASF!") * Revision 0x10 * * Conforms to the Alert Standard Format Specification V2.0, 23 April 2003 * ******************************************************************************/ typedef struct acpi_table_asf { ACPI_TABLE_HEADER Header; /* Common ACPI table header */ } ACPI_TABLE_ASF; /* ASF subtable header */ typedef struct acpi_asf_header { UINT8 Type; UINT8 Reserved; UINT16 Length; } ACPI_ASF_HEADER; /* Values for Type field above */ enum AcpiAsfType { ACPI_ASF_TYPE_INFO = 0, ACPI_ASF_TYPE_ALERT = 1, ACPI_ASF_TYPE_CONTROL = 2, ACPI_ASF_TYPE_BOOT = 3, ACPI_ASF_TYPE_ADDRESS = 4, ACPI_ASF_TYPE_RESERVED = 5 }; /* * ASF subtables */ /* 0: ASF Information */ typedef struct acpi_asf_info { ACPI_ASF_HEADER Header; UINT8 MinResetValue; UINT8 MinPollInterval; UINT16 SystemId; UINT32 MfgId; UINT8 Flags; UINT8 Reserved2[3]; } ACPI_ASF_INFO; /* Masks for Flags field above */ #define ACPI_ASF_SMBUS_PROTOCOLS (1) /* 1: ASF Alerts */ typedef struct acpi_asf_alert { ACPI_ASF_HEADER Header; UINT8 AssertMask; UINT8 DeassertMask; UINT8 Alerts; UINT8 DataLength; } ACPI_ASF_ALERT; typedef struct acpi_asf_alert_data { UINT8 Address; UINT8 Command; UINT8 Mask; UINT8 Value; UINT8 SensorType; UINT8 Type; UINT8 Offset; UINT8 SourceType; UINT8 Severity; UINT8 SensorNumber; UINT8 Entity; UINT8 Instance; } ACPI_ASF_ALERT_DATA; /* 2: ASF Remote Control */ typedef struct acpi_asf_remote { ACPI_ASF_HEADER Header; UINT8 Controls; UINT8 DataLength; UINT16 Reserved2; } ACPI_ASF_REMOTE; typedef struct acpi_asf_control_data { UINT8 Function; UINT8 Address; UINT8 Command; UINT8 Value; } ACPI_ASF_CONTROL_DATA; /* 3: ASF RMCP Boot Options */ typedef struct acpi_asf_rmcp { ACPI_ASF_HEADER Header; UINT8 Capabilities[7]; UINT8 CompletionCode; UINT32 EnterpriseId; UINT8 Command; UINT16 Parameter; UINT16 BootOptions; UINT16 OemParameters; } ACPI_ASF_RMCP; /* 4: ASF Address */ typedef struct acpi_asf_address { ACPI_ASF_HEADER Header; UINT8 EpromAddress; UINT8 Devices; } ACPI_ASF_ADDRESS; /******************************************************************************* * * BOOT - Simple Boot Flag Table * Version 1 * * Conforms to the "Simple Boot Flag Specification", Version 2.1 * ******************************************************************************/ typedef struct acpi_table_boot { ACPI_TABLE_HEADER Header; /* Common ACPI table header */ UINT8 CmosIndex; /* Index in CMOS RAM for the boot register */ UINT8 Reserved[3]; } ACPI_TABLE_BOOT; /******************************************************************************* * * CSRT - Core System Resource Table * Version 0 * * Conforms to the "Core System Resource Table (CSRT)", November 14, 2011 * ******************************************************************************/ typedef struct acpi_table_csrt { ACPI_TABLE_HEADER Header; /* Common ACPI table header */ } ACPI_TABLE_CSRT; /* Resource Group subtable */ typedef struct acpi_csrt_group { UINT32 Length; UINT32 VendorId; UINT32 SubvendorId; UINT16 DeviceId; UINT16 SubdeviceId; UINT16 Revision; UINT16 Reserved; UINT32 SharedInfoLength; /* Shared data immediately follows (Length = SharedInfoLength) */ } ACPI_CSRT_GROUP; /* Shared Info subtable */ typedef struct acpi_csrt_shared_info { UINT16 MajorVersion; UINT16 MinorVersion; UINT32 MmioBaseLow; UINT32 MmioBaseHigh; UINT32 GsiInterrupt; UINT8 InterruptPolarity; UINT8 InterruptMode; UINT8 NumChannels; UINT8 DmaAddressWidth; UINT16 BaseRequestLine; UINT16 NumHandshakeSignals; UINT32 MaxBlockSize; /* Resource descriptors immediately follow (Length = Group Length - SharedInfoLength) */ } ACPI_CSRT_SHARED_INFO; /* Resource Descriptor subtable */ typedef struct acpi_csrt_descriptor { UINT32 Length; UINT16 Type; UINT16 Subtype; UINT32 Uid; /* Resource-specific information immediately follows */ } ACPI_CSRT_DESCRIPTOR; /* Resource Types */ #define ACPI_CSRT_TYPE_INTERRUPT 0x0001 #define ACPI_CSRT_TYPE_TIMER 0x0002 #define ACPI_CSRT_TYPE_DMA 0x0003 /* Resource Subtypes */ #define ACPI_CSRT_XRUPT_LINE 0x0000 #define ACPI_CSRT_XRUPT_CONTROLLER 0x0001 #define ACPI_CSRT_TIMER 0x0000 #define ACPI_CSRT_DMA_CHANNEL 0x0000 #define ACPI_CSRT_DMA_CONTROLLER 0x0001 /******************************************************************************* * * DBG2 - Debug Port Table 2 * Version 0 (Both main table and subtables) * * Conforms to "Microsoft Debug Port Table 2 (DBG2)", May 22 2012. * ******************************************************************************/ typedef struct acpi_table_dbg2 { ACPI_TABLE_HEADER Header; /* Common ACPI table header */ UINT32 InfoOffset; UINT32 InfoCount; } ACPI_TABLE_DBG2; typedef struct acpi_dbg2_header { UINT32 InfoOffset; UINT32 InfoCount; } ACPI_DBG2_HEADER; /* Debug Device Information Subtable */ typedef struct acpi_dbg2_device { UINT8 Revision; UINT16 Length; UINT8 RegisterCount; /* Number of BaseAddress registers */ UINT16 NamepathLength; UINT16 NamepathOffset; UINT16 OemDataLength; UINT16 OemDataOffset; UINT16 PortType; UINT16 PortSubtype; UINT16 Reserved; UINT16 BaseAddressOffset; UINT16 AddressSizeOffset; /* * Data that follows: * BaseAddress (required) - Each in 12-byte Generic Address Structure format. * AddressSize (required) - Array of UINT32 sizes corresponding to each BaseAddress register. * Namepath (required) - Null terminated string. Single dot if not supported. * OemData (optional) - Length is OemDataLength. */ } ACPI_DBG2_DEVICE; /* Types for PortType field above */ #define ACPI_DBG2_SERIAL_PORT 0x8000 #define ACPI_DBG2_1394_PORT 0x8001 #define ACPI_DBG2_USB_PORT 0x8002 #define ACPI_DBG2_NET_PORT 0x8003 /* Subtypes for PortSubtype field above */ #define ACPI_DBG2_16550_COMPATIBLE 0x0000 #define ACPI_DBG2_16550_SUBSET 0x0001 #define ACPI_DBG2_1394_STANDARD 0x0000 #define ACPI_DBG2_USB_XHCI 0x0000 #define ACPI_DBG2_USB_EHCI 0x0001 /******************************************************************************* * * DBGP - Debug Port table * Version 1 * * Conforms to the "Debug Port Specification", Version 1.00, 2/9/2000 * ******************************************************************************/ typedef struct acpi_table_dbgp { ACPI_TABLE_HEADER Header; /* Common ACPI table header */ UINT8 Type; /* 0=full 16550, 1=subset of 16550 */ UINT8 Reserved[3]; ACPI_GENERIC_ADDRESS DebugPort; } ACPI_TABLE_DBGP; /******************************************************************************* * * DMAR - DMA Remapping table * Version 1 * * Conforms to "Intel Virtualization Technology for Directed I/O", * Version 1.2, Sept. 2008 * ******************************************************************************/ typedef struct acpi_table_dmar { ACPI_TABLE_HEADER Header; /* Common ACPI table header */ UINT8 Width; /* Host Address Width */ UINT8 Flags; UINT8 Reserved[10]; } ACPI_TABLE_DMAR; /* Masks for Flags field above */ #define ACPI_DMAR_INTR_REMAP (1) /* DMAR subtable header */ typedef struct acpi_dmar_header { UINT16 Type; UINT16 Length; } ACPI_DMAR_HEADER; /* Values for subtable type in ACPI_DMAR_HEADER */ enum AcpiDmarType { ACPI_DMAR_TYPE_HARDWARE_UNIT = 0, ACPI_DMAR_TYPE_RESERVED_MEMORY = 1, ACPI_DMAR_TYPE_ATSR = 2, ACPI_DMAR_HARDWARE_AFFINITY = 3, ACPI_DMAR_TYPE_RESERVED = 4 /* 4 and greater are reserved */ }; /* DMAR Device Scope structure */ typedef struct acpi_dmar_device_scope { UINT8 EntryType; UINT8 Length; UINT16 Reserved; UINT8 EnumerationId; UINT8 Bus; } ACPI_DMAR_DEVICE_SCOPE; /* Values for EntryType in ACPI_DMAR_DEVICE_SCOPE */ enum AcpiDmarScopeType { ACPI_DMAR_SCOPE_TYPE_NOT_USED = 0, ACPI_DMAR_SCOPE_TYPE_ENDPOINT = 1, ACPI_DMAR_SCOPE_TYPE_BRIDGE = 2, ACPI_DMAR_SCOPE_TYPE_IOAPIC = 3, ACPI_DMAR_SCOPE_TYPE_HPET = 4, ACPI_DMAR_SCOPE_TYPE_RESERVED = 5 /* 5 and greater are reserved */ }; typedef struct acpi_dmar_pci_path { UINT8 Device; UINT8 Function; } ACPI_DMAR_PCI_PATH; /* * DMAR Sub-tables, correspond to Type in ACPI_DMAR_HEADER */ /* 0: Hardware Unit Definition */ typedef struct acpi_dmar_hardware_unit { ACPI_DMAR_HEADER Header; UINT8 Flags; UINT8 Reserved; UINT16 Segment; UINT64 Address; /* Register Base Address */ } ACPI_DMAR_HARDWARE_UNIT; /* Masks for Flags field above */ #define ACPI_DMAR_INCLUDE_ALL (1) /* 1: Reserved Memory Defininition */ typedef struct acpi_dmar_reserved_memory { ACPI_DMAR_HEADER Header; UINT16 Reserved; UINT16 Segment; UINT64 BaseAddress; /* 4K aligned base address */ UINT64 EndAddress; /* 4K aligned limit address */ } ACPI_DMAR_RESERVED_MEMORY; /* Masks for Flags field above */ #define ACPI_DMAR_ALLOW_ALL (1) /* 2: Root Port ATS Capability Reporting Structure */ typedef struct acpi_dmar_atsr { ACPI_DMAR_HEADER Header; UINT8 Flags; UINT8 Reserved; UINT16 Segment; } ACPI_DMAR_ATSR; /* Masks for Flags field above */ #define ACPI_DMAR_ALL_PORTS (1) /* 3: Remapping Hardware Static Affinity Structure */ typedef struct acpi_dmar_rhsa { ACPI_DMAR_HEADER Header; UINT32 Reserved; UINT64 BaseAddress; UINT32 ProximityDomain; } ACPI_DMAR_RHSA; /******************************************************************************* * * HPET - High Precision Event Timer table * Version 1 * * Conforms to "IA-PC HPET (High Precision Event Timers) Specification", * Version 1.0a, October 2004 * ******************************************************************************/ typedef struct acpi_table_hpet { ACPI_TABLE_HEADER Header; /* Common ACPI table header */ UINT32 Id; /* Hardware ID of event timer block */ ACPI_GENERIC_ADDRESS Address; /* Address of event timer block */ UINT8 Sequence; /* HPET sequence number */ UINT16 MinimumTick; /* Main counter min tick, periodic mode */ UINT8 Flags; } ACPI_TABLE_HPET; /* Masks for Flags field above */ #define ACPI_HPET_PAGE_PROTECT_MASK (3) /* Values for Page Protect flags */ enum AcpiHpetPageProtect { ACPI_HPET_NO_PAGE_PROTECT = 0, ACPI_HPET_PAGE_PROTECT4 = 1, ACPI_HPET_PAGE_PROTECT64 = 2 }; /******************************************************************************* * * IBFT - Boot Firmware Table * Version 1 * * Conforms to "iSCSI Boot Firmware Table (iBFT) as Defined in ACPI 3.0b * Specification", Version 1.01, March 1, 2007 * * Note: It appears that this table is not intended to appear in the RSDT/XSDT. * Therefore, it is not currently supported by the disassembler. * ******************************************************************************/ typedef struct acpi_table_ibft { ACPI_TABLE_HEADER Header; /* Common ACPI table header */ UINT8 Reserved[12]; } ACPI_TABLE_IBFT; /* IBFT common subtable header */ typedef struct acpi_ibft_header { UINT8 Type; UINT8 Version; UINT16 Length; UINT8 Index; UINT8 Flags; } ACPI_IBFT_HEADER; /* Values for Type field above */ enum AcpiIbftType { ACPI_IBFT_TYPE_NOT_USED = 0, ACPI_IBFT_TYPE_CONTROL = 1, ACPI_IBFT_TYPE_INITIATOR = 2, ACPI_IBFT_TYPE_NIC = 3, ACPI_IBFT_TYPE_TARGET = 4, ACPI_IBFT_TYPE_EXTENSIONS = 5, ACPI_IBFT_TYPE_RESERVED = 6 /* 6 and greater are reserved */ }; /* IBFT subtables */ typedef struct acpi_ibft_control { ACPI_IBFT_HEADER Header; UINT16 Extensions; UINT16 InitiatorOffset; UINT16 Nic0Offset; UINT16 Target0Offset; UINT16 Nic1Offset; UINT16 Target1Offset; } ACPI_IBFT_CONTROL; typedef struct acpi_ibft_initiator { ACPI_IBFT_HEADER Header; UINT8 SnsServer[16]; UINT8 SlpServer[16]; UINT8 PrimaryServer[16]; UINT8 SecondaryServer[16]; UINT16 NameLength; UINT16 NameOffset; } ACPI_IBFT_INITIATOR; typedef struct acpi_ibft_nic { ACPI_IBFT_HEADER Header; UINT8 IpAddress[16]; UINT8 SubnetMaskPrefix; UINT8 Origin; UINT8 Gateway[16]; UINT8 PrimaryDns[16]; UINT8 SecondaryDns[16]; UINT8 Dhcp[16]; UINT16 Vlan; UINT8 MacAddress[6]; UINT16 PciAddress; UINT16 NameLength; UINT16 NameOffset; } ACPI_IBFT_NIC; typedef struct acpi_ibft_target { ACPI_IBFT_HEADER Header; UINT8 TargetIpAddress[16]; UINT16 TargetIpSocket; UINT8 TargetBootLun[8]; UINT8 ChapType; UINT8 NicAssociation; UINT16 TargetNameLength; UINT16 TargetNameOffset; UINT16 ChapNameLength; UINT16 ChapNameOffset; UINT16 ChapSecretLength; UINT16 ChapSecretOffset; UINT16 ReverseChapNameLength; UINT16 ReverseChapNameOffset; UINT16 ReverseChapSecretLength; UINT16 ReverseChapSecretOffset; } ACPI_IBFT_TARGET; /******************************************************************************* * * IVRS - I/O Virtualization Reporting Structure * Version 1 * * Conforms to "AMD I/O Virtualization Technology (IOMMU) Specification", * Revision 1.26, February 2009. * ******************************************************************************/ typedef struct acpi_table_ivrs { ACPI_TABLE_HEADER Header; /* Common ACPI table header */ UINT32 Info; /* Common virtualization info */ UINT64 Reserved; } ACPI_TABLE_IVRS; /* Values for Info field above */ #define ACPI_IVRS_PHYSICAL_SIZE 0x00007F00 /* 7 bits, physical address size */ #define ACPI_IVRS_VIRTUAL_SIZE 0x003F8000 /* 7 bits, virtual address size */ #define ACPI_IVRS_ATS_RESERVED 0x00400000 /* ATS address translation range reserved */ /* IVRS subtable header */ typedef struct acpi_ivrs_header { UINT8 Type; /* Subtable type */ UINT8 Flags; UINT16 Length; /* Subtable length */ UINT16 DeviceId; /* ID of IOMMU */ } ACPI_IVRS_HEADER; /* Values for subtable Type above */ enum AcpiIvrsType { ACPI_IVRS_TYPE_HARDWARE = 0x10, ACPI_IVRS_TYPE_MEMORY1 = 0x20, ACPI_IVRS_TYPE_MEMORY2 = 0x21, ACPI_IVRS_TYPE_MEMORY3 = 0x22 }; /* Masks for Flags field above for IVHD subtable */ #define ACPI_IVHD_TT_ENABLE (1) #define ACPI_IVHD_PASS_PW (1<<1) #define ACPI_IVHD_RES_PASS_PW (1<<2) #define ACPI_IVHD_ISOC (1<<3) #define ACPI_IVHD_IOTLB (1<<4) /* Masks for Flags field above for IVMD subtable */ #define ACPI_IVMD_UNITY (1) #define ACPI_IVMD_READ (1<<1) #define ACPI_IVMD_WRITE (1<<2) #define ACPI_IVMD_EXCLUSION_RANGE (1<<3) /* * IVRS subtables, correspond to Type in ACPI_IVRS_HEADER */ /* 0x10: I/O Virtualization Hardware Definition Block (IVHD) */ typedef struct acpi_ivrs_hardware { ACPI_IVRS_HEADER Header; UINT16 CapabilityOffset; /* Offset for IOMMU control fields */ UINT64 BaseAddress; /* IOMMU control registers */ UINT16 PciSegmentGroup; UINT16 Info; /* MSI number and unit ID */ UINT32 Reserved; } ACPI_IVRS_HARDWARE; /* Masks for Info field above */ #define ACPI_IVHD_MSI_NUMBER_MASK 0x001F /* 5 bits, MSI message number */ #define ACPI_IVHD_UNIT_ID_MASK 0x1F00 /* 5 bits, UnitID */ /* * Device Entries for IVHD subtable, appear after ACPI_IVRS_HARDWARE structure. * Upper two bits of the Type field are the (encoded) length of the structure. * Currently, only 4 and 8 byte entries are defined. 16 and 32 byte entries * are reserved for future use but not defined. */ typedef struct acpi_ivrs_de_header { UINT8 Type; UINT16 Id; UINT8 DataSetting; } ACPI_IVRS_DE_HEADER; /* Length of device entry is in the top two bits of Type field above */ #define ACPI_IVHD_ENTRY_LENGTH 0xC0 /* Values for device entry Type field above */ enum AcpiIvrsDeviceEntryType { /* 4-byte device entries, all use ACPI_IVRS_DEVICE4 */ ACPI_IVRS_TYPE_PAD4 = 0, ACPI_IVRS_TYPE_ALL = 1, ACPI_IVRS_TYPE_SELECT = 2, ACPI_IVRS_TYPE_START = 3, ACPI_IVRS_TYPE_END = 4, /* 8-byte device entries */ ACPI_IVRS_TYPE_PAD8 = 64, ACPI_IVRS_TYPE_NOT_USED = 65, ACPI_IVRS_TYPE_ALIAS_SELECT = 66, /* Uses ACPI_IVRS_DEVICE8A */ ACPI_IVRS_TYPE_ALIAS_START = 67, /* Uses ACPI_IVRS_DEVICE8A */ ACPI_IVRS_TYPE_EXT_SELECT = 70, /* Uses ACPI_IVRS_DEVICE8B */ ACPI_IVRS_TYPE_EXT_START = 71, /* Uses ACPI_IVRS_DEVICE8B */ ACPI_IVRS_TYPE_SPECIAL = 72 /* Uses ACPI_IVRS_DEVICE8C */ }; /* Values for Data field above */ #define ACPI_IVHD_INIT_PASS (1) #define ACPI_IVHD_EINT_PASS (1<<1) #define ACPI_IVHD_NMI_PASS (1<<2) #define ACPI_IVHD_SYSTEM_MGMT (3<<4) #define ACPI_IVHD_LINT0_PASS (1<<6) #define ACPI_IVHD_LINT1_PASS (1<<7) /* Types 0-4: 4-byte device entry */ typedef struct acpi_ivrs_device4 { ACPI_IVRS_DE_HEADER Header; } ACPI_IVRS_DEVICE4; /* Types 66-67: 8-byte device entry */ typedef struct acpi_ivrs_device8a { ACPI_IVRS_DE_HEADER Header; UINT8 Reserved1; UINT16 UsedId; UINT8 Reserved2; } ACPI_IVRS_DEVICE8A; /* Types 70-71: 8-byte device entry */ typedef struct acpi_ivrs_device8b { ACPI_IVRS_DE_HEADER Header; UINT32 ExtendedData; } ACPI_IVRS_DEVICE8B; /* Values for ExtendedData above */ #define ACPI_IVHD_ATS_DISABLED (1<<31) /* Type 72: 8-byte device entry */ typedef struct acpi_ivrs_device8c { ACPI_IVRS_DE_HEADER Header; UINT8 Handle; UINT16 UsedId; UINT8 Variety; } ACPI_IVRS_DEVICE8C; /* Values for Variety field above */ #define ACPI_IVHD_IOAPIC 1 #define ACPI_IVHD_HPET 2 /* 0x20, 0x21, 0x22: I/O Virtualization Memory Definition Block (IVMD) */ typedef struct acpi_ivrs_memory { ACPI_IVRS_HEADER Header; UINT16 AuxData; UINT64 Reserved; UINT64 StartAddress; UINT64 MemoryLength; } ACPI_IVRS_MEMORY; /******************************************************************************* * * MCFG - PCI Memory Mapped Configuration table and sub-table * Version 1 * * Conforms to "PCI Firmware Specification", Revision 3.0, June 20, 2005 * ******************************************************************************/ typedef struct acpi_table_mcfg { ACPI_TABLE_HEADER Header; /* Common ACPI table header */ UINT8 Reserved[8]; } ACPI_TABLE_MCFG; /* Subtable */ typedef struct acpi_mcfg_allocation { UINT64 Address; /* Base address, processor-relative */ UINT16 PciSegment; /* PCI segment group number */ UINT8 StartBusNumber; /* Starting PCI Bus number */ UINT8 EndBusNumber; /* Final PCI Bus number */ UINT32 Reserved; } ACPI_MCFG_ALLOCATION; /******************************************************************************* * * MCHI - Management Controller Host Interface Table * Version 1 * * Conforms to "Management Component Transport Protocol (MCTP) Host * Interface Specification", Revision 1.0.0a, October 13, 2009 * ******************************************************************************/ typedef struct acpi_table_mchi { ACPI_TABLE_HEADER Header; /* Common ACPI table header */ UINT8 InterfaceType; UINT8 Protocol; UINT64 ProtocolData; UINT8 InterruptType; UINT8 Gpe; UINT8 PciDeviceFlag; UINT32 GlobalInterrupt; ACPI_GENERIC_ADDRESS ControlRegister; UINT8 PciSegment; UINT8 PciBus; UINT8 PciDevice; UINT8 PciFunction; } ACPI_TABLE_MCHI; /******************************************************************************* * * MTMR - MID Timer Table * Version 1 * * Conforms to "Simple Firmware Interface Specification", * Draft 0.8.2, Oct 19, 2010 * NOTE: The ACPI MTMR is equivalent to the SFI MTMR table. * ******************************************************************************/ typedef struct acpi_table_mtmr { ACPI_TABLE_HEADER Header; /* Common ACPI table header */ } ACPI_TABLE_MTMR; /* MTMR entry */ typedef struct acpi_mtmr_entry { ACPI_GENERIC_ADDRESS PhysicalAddress; UINT32 Frequency; UINT32 Irq; } ACPI_MTMR_ENTRY; /******************************************************************************* * * SLIC - Software Licensing Description Table * Version 1 * * Conforms to "OEM Activation 2.0 for Windows Vista Operating Systems", * Copyright 2006 * ******************************************************************************/ /* Basic SLIC table is only the common ACPI header */ typedef struct acpi_table_slic { ACPI_TABLE_HEADER Header; /* Common ACPI table header */ } ACPI_TABLE_SLIC; /* Common SLIC subtable header */ typedef struct acpi_slic_header { UINT32 Type; UINT32 Length; } ACPI_SLIC_HEADER; /* Values for Type field above */ enum AcpiSlicType { ACPI_SLIC_TYPE_PUBLIC_KEY = 0, ACPI_SLIC_TYPE_WINDOWS_MARKER = 1, ACPI_SLIC_TYPE_RESERVED = 2 /* 2 and greater are reserved */ }; /* * SLIC Sub-tables, correspond to Type in ACPI_SLIC_HEADER */ /* 0: Public Key Structure */ typedef struct acpi_slic_key { ACPI_SLIC_HEADER Header; UINT8 KeyType; UINT8 Version; UINT16 Reserved; UINT32 Algorithm; char Magic[4]; UINT32 BitLength; UINT32 Exponent; UINT8 Modulus[128]; } ACPI_SLIC_KEY; /* 1: Windows Marker Structure */ typedef struct acpi_slic_marker { ACPI_SLIC_HEADER Header; UINT32 Version; char OemId[ACPI_OEM_ID_SIZE]; /* ASCII OEM identification */ char OemTableId[ACPI_OEM_TABLE_ID_SIZE]; /* ASCII OEM table identification */ char WindowsFlag[8]; UINT32 SlicVersion; UINT8 Reserved[16]; UINT8 Signature[128]; } ACPI_SLIC_MARKER; /******************************************************************************* * * SPCR - Serial Port Console Redirection table * Version 1 * * Conforms to "Serial Port Console Redirection Table", * Version 1.00, January 11, 2002 * ******************************************************************************/ typedef struct acpi_table_spcr { ACPI_TABLE_HEADER Header; /* Common ACPI table header */ UINT8 InterfaceType; /* 0=full 16550, 1=subset of 16550 */ UINT8 Reserved[3]; ACPI_GENERIC_ADDRESS SerialPort; UINT8 InterruptType; UINT8 PcInterrupt; UINT32 Interrupt; UINT8 BaudRate; UINT8 Parity; UINT8 StopBits; UINT8 FlowControl; UINT8 TerminalType; UINT8 Reserved1; UINT16 PciDeviceId; UINT16 PciVendorId; UINT8 PciBus; UINT8 PciDevice; UINT8 PciFunction; UINT32 PciFlags; UINT8 PciSegment; UINT32 Reserved2; } ACPI_TABLE_SPCR; /* Masks for PciFlags field above */ #define ACPI_SPCR_DO_NOT_DISABLE (1) /******************************************************************************* * * SPMI - Server Platform Management Interface table * Version 5 * * Conforms to "Intelligent Platform Management Interface Specification * Second Generation v2.0", Document Revision 1.0, February 12, 2004 with * June 12, 2009 markup. * ******************************************************************************/ typedef struct acpi_table_spmi { ACPI_TABLE_HEADER Header; /* Common ACPI table header */ UINT8 InterfaceType; UINT8 Reserved; /* Must be 1 */ UINT16 SpecRevision; /* Version of IPMI */ UINT8 InterruptType; UINT8 GpeNumber; /* GPE assigned */ UINT8 Reserved1; UINT8 PciDeviceFlag; UINT32 Interrupt; ACPI_GENERIC_ADDRESS IpmiRegister; UINT8 PciSegment; UINT8 PciBus; UINT8 PciDevice; UINT8 PciFunction; UINT8 Reserved2; } ACPI_TABLE_SPMI; /* Values for InterfaceType above */ enum AcpiSpmiInterfaceTypes { ACPI_SPMI_NOT_USED = 0, ACPI_SPMI_KEYBOARD = 1, ACPI_SPMI_SMI = 2, ACPI_SPMI_BLOCK_TRANSFER = 3, ACPI_SPMI_SMBUS = 4, ACPI_SPMI_RESERVED = 5 /* 5 and above are reserved */ }; /******************************************************************************* * * TCPA - Trusted Computing Platform Alliance table * Version 1 * * Conforms to "TCG PC Specific Implementation Specification", * Version 1.1, August 18, 2003 * ******************************************************************************/ typedef struct acpi_table_tcpa { ACPI_TABLE_HEADER Header; /* Common ACPI table header */ UINT16 Reserved; UINT32 MaxLogLength; /* Maximum length for the event log area */ UINT64 LogAddress; /* Address of the event log area */ } ACPI_TABLE_TCPA; /******************************************************************************* * * UEFI - UEFI Boot optimization Table * Version 1 * * Conforms to "Unified Extensible Firmware Interface Specification", * Version 2.3, May 8, 2009 * ******************************************************************************/ typedef struct acpi_table_uefi { ACPI_TABLE_HEADER Header; /* Common ACPI table header */ UINT8 Identifier[16]; /* UUID identifier */ UINT16 DataOffset; /* Offset of remaining data in table */ } ACPI_TABLE_UEFI; /******************************************************************************* * * VRTC - Virtual Real Time Clock Table * Version 1 * * Conforms to "Simple Firmware Interface Specification", * Draft 0.8.2, Oct 19, 2010 * NOTE: The ACPI VRTC is equivalent to The SFI MRTC table. * ******************************************************************************/ typedef struct acpi_table_vrtc { ACPI_TABLE_HEADER Header; /* Common ACPI table header */ } ACPI_TABLE_VRTC; /* VRTC entry */ typedef struct acpi_vrtc_entry { ACPI_GENERIC_ADDRESS PhysicalAddress; UINT32 Irq; } ACPI_VRTC_ENTRY; /******************************************************************************* * * WAET - Windows ACPI Emulated devices Table * Version 1 * * Conforms to "Windows ACPI Emulated Devices Table", version 1.0, April 6, 2009 * ******************************************************************************/ typedef struct acpi_table_waet { ACPI_TABLE_HEADER Header; /* Common ACPI table header */ UINT32 Flags; } ACPI_TABLE_WAET; /* Masks for Flags field above */ #define ACPI_WAET_RTC_NO_ACK (1) /* RTC requires no int acknowledge */ #define ACPI_WAET_TIMER_ONE_READ (1<<1) /* PM timer requires only one read */ /******************************************************************************* * * WDAT - Watchdog Action Table * Version 1 * * Conforms to "Hardware Watchdog Timers Design Specification", * Copyright 2006 Microsoft Corporation. * ******************************************************************************/ typedef struct acpi_table_wdat { ACPI_TABLE_HEADER Header; /* Common ACPI table header */ UINT32 HeaderLength; /* Watchdog Header Length */ UINT16 PciSegment; /* PCI Segment number */ UINT8 PciBus; /* PCI Bus number */ UINT8 PciDevice; /* PCI Device number */ UINT8 PciFunction; /* PCI Function number */ UINT8 Reserved[3]; UINT32 TimerPeriod; /* Period of one timer count (msec) */ UINT32 MaxCount; /* Maximum counter value supported */ UINT32 MinCount; /* Minimum counter value */ UINT8 Flags; UINT8 Reserved2[3]; UINT32 Entries; /* Number of watchdog entries that follow */ } ACPI_TABLE_WDAT; /* Masks for Flags field above */ #define ACPI_WDAT_ENABLED (1) #define ACPI_WDAT_STOPPED 0x80 /* WDAT Instruction Entries (actions) */ typedef struct acpi_wdat_entry { UINT8 Action; UINT8 Instruction; UINT16 Reserved; ACPI_GENERIC_ADDRESS RegisterRegion; UINT32 Value; /* Value used with Read/Write register */ UINT32 Mask; /* Bitmask required for this register instruction */ } ACPI_WDAT_ENTRY; /* Values for Action field above */ enum AcpiWdatActions { ACPI_WDAT_RESET = 1, ACPI_WDAT_GET_CURRENT_COUNTDOWN = 4, ACPI_WDAT_GET_COUNTDOWN = 5, ACPI_WDAT_SET_COUNTDOWN = 6, ACPI_WDAT_GET_RUNNING_STATE = 8, ACPI_WDAT_SET_RUNNING_STATE = 9, ACPI_WDAT_GET_STOPPED_STATE = 10, ACPI_WDAT_SET_STOPPED_STATE = 11, ACPI_WDAT_GET_REBOOT = 16, ACPI_WDAT_SET_REBOOT = 17, ACPI_WDAT_GET_SHUTDOWN = 18, ACPI_WDAT_SET_SHUTDOWN = 19, ACPI_WDAT_GET_STATUS = 32, ACPI_WDAT_SET_STATUS = 33, ACPI_WDAT_ACTION_RESERVED = 34 /* 34 and greater are reserved */ }; /* Values for Instruction field above */ enum AcpiWdatInstructions { ACPI_WDAT_READ_VALUE = 0, ACPI_WDAT_READ_COUNTDOWN = 1, ACPI_WDAT_WRITE_VALUE = 2, ACPI_WDAT_WRITE_COUNTDOWN = 3, ACPI_WDAT_INSTRUCTION_RESERVED = 4, /* 4 and greater are reserved */ ACPI_WDAT_PRESERVE_REGISTER = 0x80 /* Except for this value */ }; /******************************************************************************* * * WDDT - Watchdog Descriptor Table * Version 1 * * Conforms to "Using the Intel ICH Family Watchdog Timer (WDT)", * Version 001, September 2002 * ******************************************************************************/ typedef struct acpi_table_wddt { ACPI_TABLE_HEADER Header; /* Common ACPI table header */ UINT16 SpecVersion; UINT16 TableVersion; UINT16 PciVendorId; ACPI_GENERIC_ADDRESS Address; UINT16 MaxCount; /* Maximum counter value supported */ UINT16 MinCount; /* Minimum counter value supported */ UINT16 Period; UINT16 Status; UINT16 Capability; } ACPI_TABLE_WDDT; /* Flags for Status field above */ #define ACPI_WDDT_AVAILABLE (1) #define ACPI_WDDT_ACTIVE (1<<1) #define ACPI_WDDT_TCO_OS_OWNED (1<<2) #define ACPI_WDDT_USER_RESET (1<<11) #define ACPI_WDDT_WDT_RESET (1<<12) #define ACPI_WDDT_POWER_FAIL (1<<13) #define ACPI_WDDT_UNKNOWN_RESET (1<<14) /* Flags for Capability field above */ #define ACPI_WDDT_AUTO_RESET (1) #define ACPI_WDDT_ALERT_SUPPORT (1<<1) /******************************************************************************* * * WDRT - Watchdog Resource Table * Version 1 * * Conforms to "Watchdog Timer Hardware Requirements for Windows Server 2003", * Version 1.01, August 28, 2006 * ******************************************************************************/ typedef struct acpi_table_wdrt { ACPI_TABLE_HEADER Header; /* Common ACPI table header */ ACPI_GENERIC_ADDRESS ControlRegister; ACPI_GENERIC_ADDRESS CountRegister; UINT16 PciDeviceId; UINT16 PciVendorId; UINT8 PciBus; /* PCI Bus number */ UINT8 PciDevice; /* PCI Device number */ UINT8 PciFunction; /* PCI Function number */ UINT8 PciSegment; /* PCI Segment number */ UINT16 MaxCount; /* Maximum counter value supported */ UINT8 Units; } ACPI_TABLE_WDRT; /* Reset to default packing */ #pragma pack() #endif /* __ACTBL2_H__ */ src/acpica/source/include/actbl3.h000066400000000000000000000607621231470457100173500ustar00rootroot00000000000000/****************************************************************************** * * Name: actbl3.h - ACPI Table Definitions * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #ifndef __ACTBL3_H__ #define __ACTBL3_H__ /******************************************************************************* * * Additional ACPI Tables (3) * * These tables are not consumed directly by the ACPICA subsystem, but are * included here to support device drivers and the AML disassembler. * * The tables in this file are fully defined within the ACPI specification. * ******************************************************************************/ /* * Values for description table header signatures for tables defined in this * file. Useful because they make it more difficult to inadvertently type in * the wrong signature. */ #define ACPI_SIG_BGRT "BGRT" /* Boot Graphics Resource Table */ #define ACPI_SIG_DRTM "DRTM" /* Dynamic Root of Trust for Measurement table */ #define ACPI_SIG_FPDT "FPDT" /* Firmware Performance Data Table */ #define ACPI_SIG_GTDT "GTDT" /* Generic Timer Description Table */ #define ACPI_SIG_MPST "MPST" /* Memory Power State Table */ #define ACPI_SIG_PCCT "PCCT" /* Platform Communications Channel Table */ #define ACPI_SIG_PMTT "PMTT" /* Platform Memory Topology Table */ #define ACPI_SIG_RASF "RASF" /* RAS Feature table */ #define ACPI_SIG_TPM2 "TPM2" /* Trusted Platform Module 2.0 H/W interface table */ #define ACPI_SIG_S3PT "S3PT" /* S3 Performance (sub)Table */ #define ACPI_SIG_PCCS "PCC" /* PCC Shared Memory Region */ /* Reserved table signatures */ #define ACPI_SIG_MATR "MATR" /* Memory Address Translation Table */ #define ACPI_SIG_MSDM "MSDM" /* Microsoft Data Management Table */ #define ACPI_SIG_WPBT "WPBT" /* Windows Platform Binary Table */ /* * All tables must be byte-packed to match the ACPI specification, since * the tables are provided by the system BIOS. */ #pragma pack(1) /* * Note: C bitfields are not used for this reason: * * "Bitfields are great and easy to read, but unfortunately the C language * does not specify the layout of bitfields in memory, which means they are * essentially useless for dealing with packed data in on-disk formats or * binary wire protocols." (Or ACPI tables and buffers.) "If you ask me, * this decision was a design error in C. Ritchie could have picked an order * and stuck with it." Norman Ramsey. * See http://stackoverflow.com/a/1053662/41661 */ /******************************************************************************* * * BGRT - Boot Graphics Resource Table (ACPI 5.0) * Version 1 * ******************************************************************************/ typedef struct acpi_table_bgrt { ACPI_TABLE_HEADER Header; /* Common ACPI table header */ UINT16 Version; UINT8 Status; UINT8 ImageType; UINT64 ImageAddress; UINT32 ImageOffsetX; UINT32 ImageOffsetY; } ACPI_TABLE_BGRT; /******************************************************************************* * * DRTM - Dynamic Root of Trust for Measurement table * ******************************************************************************/ typedef struct acpi_table_drtm { ACPI_TABLE_HEADER Header; /* Common ACPI table header */ UINT64 EntryBaseAddress; UINT64 EntryLength; UINT32 EntryAddress32; UINT64 EntryAddress64; UINT64 ExitAddress; UINT64 LogAreaAddress; UINT32 LogAreaLength; UINT64 ArchDependentAddress; UINT32 Flags; } ACPI_TABLE_DRTM; /* 1) Validated Tables List */ typedef struct acpi_drtm_vtl_list { UINT32 ValidatedTableListCount; } ACPI_DRTM_VTL_LIST; /* 2) Resources List */ typedef struct acpi_drtm_resource_list { UINT32 ResourceListCount; } ACPI_DRTM_RESOURCE_LIST; /* 3) Platform-specific Identifiers List */ typedef struct acpi_drtm_id_list { UINT32 IdListCount; } ACPI_DRTM_ID_LIST; /******************************************************************************* * * FPDT - Firmware Performance Data Table (ACPI 5.0) * Version 1 * ******************************************************************************/ typedef struct acpi_table_fpdt { ACPI_TABLE_HEADER Header; /* Common ACPI table header */ } ACPI_TABLE_FPDT; /* FPDT subtable header */ typedef struct acpi_fpdt_header { UINT16 Type; UINT8 Length; UINT8 Revision; } ACPI_FPDT_HEADER; /* Values for Type field above */ enum AcpiFpdtType { ACPI_FPDT_TYPE_BOOT = 0, ACPI_FPDT_TYPE_S3PERF = 1 }; /* * FPDT subtables */ /* 0: Firmware Basic Boot Performance Record */ typedef struct acpi_fpdt_boot { ACPI_FPDT_HEADER Header; UINT8 Reserved[4]; UINT64 ResetEnd; UINT64 LoadStart; UINT64 StartupStart; UINT64 ExitServicesEntry; UINT64 ExitServicesExit; } ACPI_FPDT_BOOT; /* 1: S3 Performance Table Pointer Record */ typedef struct acpi_fpdt_s3pt_ptr { ACPI_FPDT_HEADER Header; UINT8 Reserved[4]; UINT64 Address; } ACPI_FPDT_S3PT_PTR; /* * S3PT - S3 Performance Table. This table is pointed to by the * FPDT S3 Pointer Record above. */ typedef struct acpi_table_s3pt { UINT8 Signature[4]; /* "S3PT" */ UINT32 Length; } ACPI_TABLE_S3PT; /* * S3PT Subtables */ typedef struct acpi_s3pt_header { UINT16 Type; UINT8 Length; UINT8 Revision; } ACPI_S3PT_HEADER; /* Values for Type field above */ enum AcpiS3ptType { ACPI_S3PT_TYPE_RESUME = 0, ACPI_S3PT_TYPE_SUSPEND = 1 }; typedef struct acpi_s3pt_resume { ACPI_S3PT_HEADER Header; UINT32 ResumeCount; UINT64 FullResume; UINT64 AverageResume; } ACPI_S3PT_RESUME; typedef struct acpi_s3pt_suspend { ACPI_S3PT_HEADER Header; UINT64 SuspendStart; UINT64 SuspendEnd; } ACPI_S3PT_SUSPEND; /******************************************************************************* * * GTDT - Generic Timer Description Table (ACPI 5.0) * Version 1 * ******************************************************************************/ typedef struct acpi_table_gtdt { ACPI_TABLE_HEADER Header; /* Common ACPI table header */ UINT64 Address; UINT32 Flags; UINT32 SecurePl1Interrupt; UINT32 SecurePl1Flags; UINT32 NonSecurePl1Interrupt; UINT32 NonSecurePl1Flags; UINT32 VirtualTimerInterrupt; UINT32 VirtualTimerFlags; UINT32 NonSecurePl2Interrupt; UINT32 NonSecurePl2Flags; } ACPI_TABLE_GTDT; /* Values for Flags field above */ #define ACPI_GTDT_MAPPED_BLOCK_PRESENT 1 /* Values for all "TimerFlags" fields above */ #define ACPI_GTDT_INTERRUPT_MODE 1 #define ACPI_GTDT_INTERRUPT_POLARITY 2 /******************************************************************************* * * MPST - Memory Power State Table (ACPI 5.0) * Version 1 * ******************************************************************************/ #define ACPI_MPST_CHANNEL_INFO \ UINT8 ChannelId; \ UINT8 Reserved1[3]; \ UINT16 PowerNodeCount; \ UINT16 Reserved2; /* Main table */ typedef struct acpi_table_mpst { ACPI_TABLE_HEADER Header; /* Common ACPI table header */ ACPI_MPST_CHANNEL_INFO /* Platform Communication Channel */ } ACPI_TABLE_MPST; /* Memory Platform Communication Channel Info */ typedef struct acpi_mpst_channel { ACPI_MPST_CHANNEL_INFO /* Platform Communication Channel */ } ACPI_MPST_CHANNEL; /* Memory Power Node Structure */ typedef struct acpi_mpst_power_node { UINT8 Flags; UINT8 Reserved1; UINT16 NodeId; UINT32 Length; UINT64 RangeAddress; UINT64 RangeLength; UINT32 NumPowerStates; UINT32 NumPhysicalComponents; } ACPI_MPST_POWER_NODE; /* Values for Flags field above */ #define ACPI_MPST_ENABLED 1 #define ACPI_MPST_POWER_MANAGED 2 #define ACPI_MPST_HOT_PLUG_CAPABLE 4 /* Memory Power State Structure (follows POWER_NODE above) */ typedef struct acpi_mpst_power_state { UINT8 PowerState; UINT8 InfoIndex; } ACPI_MPST_POWER_STATE; /* Physical Component ID Structure (follows POWER_STATE above) */ typedef struct acpi_mpst_component { UINT16 ComponentId; } ACPI_MPST_COMPONENT; /* Memory Power State Characteristics Structure (follows all POWER_NODEs) */ typedef struct acpi_mpst_data_hdr { UINT16 CharacteristicsCount; UINT16 Reserved; } ACPI_MPST_DATA_HDR; typedef struct acpi_mpst_power_data { UINT8 StructureId; UINT8 Flags; UINT16 Reserved1; UINT32 AveragePower; UINT32 PowerSaving; UINT64 ExitLatency; UINT64 Reserved2; } ACPI_MPST_POWER_DATA; /* Values for Flags field above */ #define ACPI_MPST_PRESERVE 1 #define ACPI_MPST_AUTOENTRY 2 #define ACPI_MPST_AUTOEXIT 4 /* Shared Memory Region (not part of an ACPI table) */ typedef struct acpi_mpst_shared { UINT32 Signature; UINT16 PccCommand; UINT16 PccStatus; UINT32 CommandRegister; UINT32 StatusRegister; UINT32 PowerStateId; UINT32 PowerNodeId; UINT64 EnergyConsumed; UINT64 AveragePower; } ACPI_MPST_SHARED; /******************************************************************************* * * PCCT - Platform Communications Channel Table (ACPI 5.0) * Version 1 * ******************************************************************************/ typedef struct acpi_table_pcct { ACPI_TABLE_HEADER Header; /* Common ACPI table header */ UINT32 Flags; UINT64 Reserved; } ACPI_TABLE_PCCT; /* Values for Flags field above */ #define ACPI_PCCT_DOORBELL 1 /* Values for subtable type in ACPI_SUBTABLE_HEADER */ enum AcpiPcctType { ACPI_PCCT_TYPE_GENERIC_SUBSPACE = 0, ACPI_PCCT_TYPE_RESERVED = 1 /* 1 and greater are reserved */ }; /* * PCCT Subtables, correspond to Type in ACPI_SUBTABLE_HEADER */ /* 0: Generic Communications Subspace */ typedef struct acpi_pcct_subspace { ACPI_SUBTABLE_HEADER Header; UINT8 Reserved[6]; UINT64 BaseAddress; UINT64 Length; ACPI_GENERIC_ADDRESS DoorbellRegister; UINT64 PreserveMask; UINT64 WriteMask; UINT32 Latency; UINT32 MaxAccessRate; UINT16 MinTurnaroundTime; } ACPI_PCCT_SUBSPACE; /* * PCC memory structures (not part of the ACPI table) */ /* Shared Memory Region */ typedef struct acpi_pcct_shared_memory { UINT32 Signature; UINT16 Command; UINT16 Status; } ACPI_PCCT_SHARED_MEMORY; /******************************************************************************* * * PMTT - Platform Memory Topology Table (ACPI 5.0) * Version 1 * ******************************************************************************/ typedef struct acpi_table_pmtt { ACPI_TABLE_HEADER Header; /* Common ACPI table header */ UINT32 Reserved; } ACPI_TABLE_PMTT; /* Common header for PMTT subtables that follow main table */ typedef struct acpi_pmtt_header { UINT8 Type; UINT8 Reserved1; UINT16 Length; UINT16 Flags; UINT16 Reserved2; } ACPI_PMTT_HEADER; /* Values for Type field above */ #define ACPI_PMTT_TYPE_SOCKET 0 #define ACPI_PMTT_TYPE_CONTROLLER 1 #define ACPI_PMTT_TYPE_DIMM 2 #define ACPI_PMTT_TYPE_RESERVED 3 /* 0x03-0xFF are reserved */ /* Values for Flags field above */ #define ACPI_PMTT_TOP_LEVEL 0x0001 #define ACPI_PMTT_PHYSICAL 0x0002 #define ACPI_PMTT_MEMORY_TYPE 0x000C /* * PMTT subtables, correspond to Type in acpi_pmtt_header */ /* 0: Socket Structure */ typedef struct acpi_pmtt_socket { ACPI_PMTT_HEADER Header; UINT16 SocketId; UINT16 Reserved; } ACPI_PMTT_SOCKET; /* 1: Memory Controller subtable */ typedef struct acpi_pmtt_controller { ACPI_PMTT_HEADER Header; UINT32 ReadLatency; UINT32 WriteLatency; UINT32 ReadBandwidth; UINT32 WriteBandwidth; UINT16 AccessWidth; UINT16 Alignment; UINT16 Reserved; UINT16 DomainCount; } ACPI_PMTT_CONTROLLER; /* 1a: Proximity Domain substructure */ typedef struct acpi_pmtt_domain { UINT32 ProximityDomain; } ACPI_PMTT_DOMAIN; /* 2: Physical Component Identifier (DIMM) */ typedef struct acpi_pmtt_physical_component { ACPI_PMTT_HEADER Header; UINT16 ComponentId; UINT16 Reserved; UINT32 MemorySize; UINT32 BiosHandle; } ACPI_PMTT_PHYSICAL_COMPONENT; /******************************************************************************* * * RASF - RAS Feature Table (ACPI 5.0) * Version 1 * ******************************************************************************/ typedef struct acpi_table_rasf { ACPI_TABLE_HEADER Header; /* Common ACPI table header */ UINT8 ChannelId[12]; } ACPI_TABLE_RASF; /* RASF Platform Communication Channel Shared Memory Region */ typedef struct acpi_rasf_shared_memory { UINT32 Signature; UINT16 Command; UINT16 Status; UINT16 Version; UINT8 Capabilities[16]; UINT8 SetCapabilities[16]; UINT16 NumParameterBlocks; UINT32 SetCapabilitiesStatus; } ACPI_RASF_SHARED_MEMORY; /* RASF Parameter Block Structure Header */ typedef struct acpi_rasf_parameter_block { UINT16 Type; UINT16 Version; UINT16 Length; } ACPI_RASF_PARAMETER_BLOCK; /* RASF Parameter Block Structure for PATROL_SCRUB */ typedef struct acpi_rasf_patrol_scrub_parameter { ACPI_RASF_PARAMETER_BLOCK Header; UINT16 PatrolScrubCommand; UINT64 RequestedAddressRange[2]; UINT64 ActualAddressRange[2]; UINT16 Flags; UINT8 RequestedSpeed; } ACPI_RASF_PATROL_SCRUB_PARAMETER; /* Masks for Flags and Speed fields above */ #define ACPI_RASF_SCRUBBER_RUNNING 1 #define ACPI_RASF_SPEED (7<<1) #define ACPI_RASF_SPEED_SLOW (0<<1) #define ACPI_RASF_SPEED_MEDIUM (4<<1) #define ACPI_RASF_SPEED_FAST (7<<1) /* Channel Commands */ enum AcpiRasfCommands { ACPI_RASF_EXECUTE_RASF_COMMAND = 1 }; /* Platform RAS Capabilities */ enum AcpiRasfCapabiliities { ACPI_HW_PATROL_SCRUB_SUPPORTED = 0, ACPI_SW_PATROL_SCRUB_EXPOSED = 1 }; /* Patrol Scrub Commands */ enum AcpiRasfPatrolScrubCommands { ACPI_RASF_GET_PATROL_PARAMETERS = 1, ACPI_RASF_START_PATROL_SCRUBBER = 2, ACPI_RASF_STOP_PATROL_SCRUBBER = 3 }; /* Channel Command flags */ #define ACPI_RASF_GENERATE_SCI (1<<15) /* Status values */ enum AcpiRasfStatus { ACPI_RASF_SUCCESS = 0, ACPI_RASF_NOT_VALID = 1, ACPI_RASF_NOT_SUPPORTED = 2, ACPI_RASF_BUSY = 3, ACPI_RASF_FAILED = 4, ACPI_RASF_ABORTED = 5, ACPI_RASF_INVALID_DATA = 6 }; /* Status flags */ #define ACPI_RASF_COMMAND_COMPLETE (1) #define ACPI_RASF_SCI_DOORBELL (1<<1) #define ACPI_RASF_ERROR (1<<2) #define ACPI_RASF_STATUS (0x1F<<3) /******************************************************************************* * * TPM2 - Trusted Platform Module (TPM) 2.0 Hardware Interface Table * Version 3 * * Conforms to "TPM 2.0 Hardware Interface Table (TPM2)" 29 November 2011 * ******************************************************************************/ typedef struct acpi_table_tpm2 { ACPI_TABLE_HEADER Header; /* Common ACPI table header */ UINT32 Flags; UINT64 ControlAddress; UINT32 StartMethod; } ACPI_TABLE_TPM2; /* Control area structure (not part of table, pointed to by ControlAddress) */ typedef struct acpi_tpm2_control { UINT32 Reserved; UINT32 Error; UINT32 Cancel; UINT32 Start; UINT64 InterruptControl; UINT32 CommandSize; UINT64 CommandAddress; UINT32 ResponseSize; UINT64 ResponseAddress; } ACPI_TPM2_CONTROL; /* Reset to default packing */ #pragma pack() #endif /* __ACTBL3_H__ */ src/acpica/source/include/actypes.h000066400000000000000000001405151231470457100176430ustar00rootroot00000000000000/****************************************************************************** * * Name: actypes.h - Common data types for the entire ACPI subsystem * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #ifndef __ACTYPES_H__ #define __ACTYPES_H__ /* acpisrc:StructDefs -- for acpisrc conversion */ /* * ACPI_MACHINE_WIDTH must be specified in an OS- or compiler-dependent header * and must be either 32 or 64. 16-bit ACPICA is no longer supported, as of * 12/2006. */ #ifndef ACPI_MACHINE_WIDTH #error ACPI_MACHINE_WIDTH not defined #endif /*! [Begin] no source code translation */ /* * Data type ranges * Note: These macros are designed to be compiler independent as well as * working around problems that some 32-bit compilers have with 64-bit * constants. */ #define ACPI_UINT8_MAX (UINT8) (~((UINT8) 0)) /* 0xFF */ #define ACPI_UINT16_MAX (UINT16)(~((UINT16) 0)) /* 0xFFFF */ #define ACPI_UINT32_MAX (UINT32)(~((UINT32) 0)) /* 0xFFFFFFFF */ #define ACPI_UINT64_MAX (UINT64)(~((UINT64) 0)) /* 0xFFFFFFFFFFFFFFFF */ #define ACPI_ASCII_MAX 0x7F /* * Architecture-specific ACPICA Subsystem Data Types * * The goal of these types is to provide source code portability across * 16-bit, 32-bit, and 64-bit targets. * * 1) The following types are of fixed size for all targets (16/32/64): * * BOOLEAN Logical boolean * * UINT8 8-bit (1 byte) unsigned value * UINT16 16-bit (2 byte) unsigned value * UINT32 32-bit (4 byte) unsigned value * UINT64 64-bit (8 byte) unsigned value * * INT16 16-bit (2 byte) signed value * INT32 32-bit (4 byte) signed value * INT64 64-bit (8 byte) signed value * * COMPILER_DEPENDENT_UINT64/INT64 - These types are defined in the * compiler-dependent header(s) and were introduced because there is no common * 64-bit integer type across the various compilation models, as shown in * the table below. * * Datatype LP64 ILP64 LLP64 ILP32 LP32 16bit * char 8 8 8 8 8 8 * short 16 16 16 16 16 16 * _int32 32 * int 32 64 32 32 16 16 * long 64 64 32 32 32 32 * long long 64 64 * pointer 64 64 64 32 32 32 * * Note: ILP64 and LP32 are currently not supported. * * * 2) These types represent the native word size of the target mode of the * processor, and may be 16-bit, 32-bit, or 64-bit as required. They are * usually used for memory allocation, efficient loop counters, and array * indexes. The types are similar to the size_t type in the C library and are * required because there is no C type that consistently represents the native * data width. ACPI_SIZE is needed because there is no guarantee that a * kernel-level C library is present. * * ACPI_SIZE 16/32/64-bit unsigned value * ACPI_NATIVE_INT 16/32/64-bit signed value */ /******************************************************************************* * * Common types for all compilers, all targets * ******************************************************************************/ typedef unsigned char BOOLEAN; typedef unsigned char UINT8; typedef unsigned short UINT16; typedef COMPILER_DEPENDENT_UINT64 UINT64; typedef COMPILER_DEPENDENT_INT64 INT64; /*! [End] no source code translation !*/ /* * Value returned by AcpiOsGetThreadId. There is no standard "thread_id" * across operating systems or even the various UNIX systems. Since ACPICA * only needs the thread ID as a unique thread identifier, we use a UINT64 * as the only common data type - it will accommodate any type of pointer or * any type of integer. It is up to the host-dependent OSL to cast the * native thread ID type to a UINT64 (in AcpiOsGetThreadId). */ #define ACPI_THREAD_ID UINT64 /******************************************************************************* * * Types specific to 64-bit targets * ******************************************************************************/ #if ACPI_MACHINE_WIDTH == 64 /*! [Begin] no source code translation (keep the typedefs as-is) */ typedef unsigned int UINT32; typedef int INT32; /*! [End] no source code translation !*/ typedef INT64 ACPI_NATIVE_INT; typedef UINT64 ACPI_SIZE; typedef UINT64 ACPI_IO_ADDRESS; typedef UINT64 ACPI_PHYSICAL_ADDRESS; #define ACPI_MAX_PTR ACPI_UINT64_MAX #define ACPI_SIZE_MAX ACPI_UINT64_MAX #define ACPI_USE_NATIVE_DIVIDE /* Has native 64-bit integer support */ /* * In the case of the Itanium Processor Family (IPF), the hardware does not * support misaligned memory transfers. Set the MISALIGNMENT_NOT_SUPPORTED flag * to indicate that special precautions must be taken to avoid alignment faults. * (IA64 or ia64 is currently used by existing compilers to indicate IPF.) * * Note: EM64T and other X86-64 processors support misaligned transfers, * so there is no need to define this flag. */ #if defined (__IA64__) || defined (__ia64__) #define ACPI_MISALIGNMENT_NOT_SUPPORTED #endif /******************************************************************************* * * Types specific to 32-bit targets * ******************************************************************************/ #elif ACPI_MACHINE_WIDTH == 32 /*! [Begin] no source code translation (keep the typedefs as-is) */ typedef unsigned int UINT32; typedef int INT32; /*! [End] no source code translation !*/ typedef INT32 ACPI_NATIVE_INT; typedef UINT32 ACPI_SIZE; typedef UINT32 ACPI_IO_ADDRESS; typedef UINT32 ACPI_PHYSICAL_ADDRESS; #define ACPI_MAX_PTR ACPI_UINT32_MAX #define ACPI_SIZE_MAX ACPI_UINT32_MAX #else /* ACPI_MACHINE_WIDTH must be either 64 or 32 */ #error unknown ACPI_MACHINE_WIDTH #endif /******************************************************************************* * * OS-dependent types * * If the defaults below are not appropriate for the host system, they can * be defined in the OS-specific header, and this will take precedence. * ******************************************************************************/ /* Flags for AcpiOsAcquireLock/AcpiOsReleaseLock */ #ifndef ACPI_CPU_FLAGS #define ACPI_CPU_FLAGS ACPI_SIZE #endif /* Object returned from AcpiOsCreateCache */ #ifndef ACPI_CACHE_T #ifdef ACPI_USE_LOCAL_CACHE #define ACPI_CACHE_T ACPI_MEMORY_LIST #else #define ACPI_CACHE_T void * #endif #endif /* * Synchronization objects - Mutexes, Semaphores, and SpinLocks */ #if (ACPI_MUTEX_TYPE == ACPI_BINARY_SEMAPHORE) /* * These macros are used if the host OS does not support a mutex object. * Map the OSL Mutex interfaces to binary semaphores. */ #define ACPI_MUTEX ACPI_SEMAPHORE #define AcpiOsCreateMutex(OutHandle) AcpiOsCreateSemaphore (1, 1, OutHandle) #define AcpiOsDeleteMutex(Handle) (void) AcpiOsDeleteSemaphore (Handle) #define AcpiOsAcquireMutex(Handle,Time) AcpiOsWaitSemaphore (Handle, 1, Time) #define AcpiOsReleaseMutex(Handle) (void) AcpiOsSignalSemaphore (Handle, 1) #endif /* Configurable types for synchronization objects */ #ifndef ACPI_SPINLOCK #define ACPI_SPINLOCK void * #endif #ifndef ACPI_SEMAPHORE #define ACPI_SEMAPHORE void * #endif #ifndef ACPI_MUTEX #define ACPI_MUTEX void * #endif /******************************************************************************* * * Compiler-dependent types * * If the defaults below are not appropriate for the host compiler, they can * be defined in the compiler-specific header, and this will take precedence. * ******************************************************************************/ /* Use C99 uintptr_t for pointer casting if available, "void *" otherwise */ #ifndef ACPI_UINTPTR_T #define ACPI_UINTPTR_T void * #endif /* * ACPI_PRINTF_LIKE is used to tag functions as "printf-like" because * some compilers can catch printf format string problems */ #ifndef ACPI_PRINTF_LIKE #define ACPI_PRINTF_LIKE(c) #endif /* * Some compilers complain about unused variables. Sometimes we don't want to * use all the variables (for example, _AcpiModuleName). This allows us * to tell the compiler in a per-variable manner that a variable * is unused */ #ifndef ACPI_UNUSED_VAR #define ACPI_UNUSED_VAR #endif /* * All ACPICA external functions that are available to the rest of the kernel * are tagged with thes macros which can be defined as appropriate for the host. * * Notes: * ACPI_EXPORT_SYMBOL_INIT is used for initialization and termination * interfaces that may need special processing. * ACPI_EXPORT_SYMBOL is used for all other public external functions. */ #ifndef ACPI_EXPORT_SYMBOL_INIT #define ACPI_EXPORT_SYMBOL_INIT(Symbol) #endif #ifndef ACPI_EXPORT_SYMBOL #define ACPI_EXPORT_SYMBOL(Symbol) #endif /* * Compiler/Clibrary-dependent debug initialization. Used for ACPICA * utilities only. */ #ifndef ACPI_DEBUG_INITIALIZE #define ACPI_DEBUG_INITIALIZE() #endif /******************************************************************************* * * Configuration * ******************************************************************************/ #ifdef ACPI_DBG_TRACK_ALLOCATIONS /* * Memory allocation tracking (used by AcpiExec to detect memory leaks) */ #define ACPI_MEM_PARAMETERS _COMPONENT, _AcpiModuleName, __LINE__ #define ACPI_ALLOCATE(a) AcpiUtAllocateAndTrack ((ACPI_SIZE) (a), ACPI_MEM_PARAMETERS) #define ACPI_ALLOCATE_ZEROED(a) AcpiUtAllocateZeroedAndTrack ((ACPI_SIZE) (a), ACPI_MEM_PARAMETERS) #define ACPI_FREE(a) AcpiUtFreeAndTrack (a, ACPI_MEM_PARAMETERS) #define ACPI_MEM_TRACKING(a) a #else /* * Normal memory allocation directly via the OS services layer */ #define ACPI_ALLOCATE(a) AcpiOsAllocate ((ACPI_SIZE) (a)) #define ACPI_ALLOCATE_ZEROED(a) AcpiOsAllocateZeroed ((ACPI_SIZE) (a)) #define ACPI_FREE(a) AcpiOsFree (a) #define ACPI_MEM_TRACKING(a) #endif /* ACPI_DBG_TRACK_ALLOCATIONS */ /****************************************************************************** * * ACPI Specification constants (Do not change unless the specification changes) * *****************************************************************************/ /* Number of distinct FADT-based GPE register blocks (GPE0 and GPE1) */ #define ACPI_MAX_GPE_BLOCKS 2 /* Default ACPI register widths */ #define ACPI_GPE_REGISTER_WIDTH 8 #define ACPI_PM1_REGISTER_WIDTH 16 #define ACPI_PM2_REGISTER_WIDTH 8 #define ACPI_PM_TIMER_WIDTH 32 #define ACPI_RESET_REGISTER_WIDTH 8 /* Names within the namespace are 4 bytes long */ #define ACPI_NAME_SIZE 4 #define ACPI_PATH_SEGMENT_LENGTH 5 /* 4 chars for name + 1 char for separator */ #define ACPI_PATH_SEPARATOR '.' /* Sizes for ACPI table headers */ #define ACPI_OEM_ID_SIZE 6 #define ACPI_OEM_TABLE_ID_SIZE 8 /* ACPI/PNP hardware IDs */ #define PCI_ROOT_HID_STRING "PNP0A03" #define PCI_EXPRESS_ROOT_HID_STRING "PNP0A08" /* PM Timer ticks per second (HZ) */ #define ACPI_PM_TIMER_FREQUENCY 3579545 /******************************************************************************* * * Independent types * ******************************************************************************/ /* Logical defines and NULL */ #ifdef FALSE #undef FALSE #endif #define FALSE (1 == 0) #ifdef TRUE #undef TRUE #endif #define TRUE (1 == 1) #ifndef NULL #define NULL (void *) 0 #endif /* * Miscellaneous types */ typedef UINT32 ACPI_STATUS; /* All ACPI Exceptions */ typedef UINT32 ACPI_NAME; /* 4-byte ACPI name */ typedef char * ACPI_STRING; /* Null terminated ASCII string */ typedef void * ACPI_HANDLE; /* Actually a ptr to a NS Node */ /* Time constants for timer calculations */ #define ACPI_MSEC_PER_SEC 1000L #define ACPI_USEC_PER_MSEC 1000L #define ACPI_USEC_PER_SEC 1000000L #define ACPI_100NSEC_PER_USEC 10L #define ACPI_100NSEC_PER_MSEC 10000L #define ACPI_100NSEC_PER_SEC 10000000L #define ACPI_NSEC_PER_USEC 1000L #define ACPI_NSEC_PER_MSEC 1000000L #define ACPI_NSEC_PER_SEC 1000000000L /* Owner IDs are used to track namespace nodes for selective deletion */ typedef UINT8 ACPI_OWNER_ID; #define ACPI_OWNER_ID_MAX 0xFF #define ACPI_INTEGER_BIT_SIZE 64 #define ACPI_MAX_DECIMAL_DIGITS 20 /* 2^64 = 18,446,744,073,709,551,616 */ #define ACPI_MAX64_DECIMAL_DIGITS 20 #define ACPI_MAX32_DECIMAL_DIGITS 10 #define ACPI_MAX16_DECIMAL_DIGITS 5 #define ACPI_MAX8_DECIMAL_DIGITS 3 /* * Constants with special meanings */ #define ACPI_ROOT_OBJECT ACPI_ADD_PTR (ACPI_HANDLE, NULL, ACPI_MAX_PTR) #define ACPI_WAIT_FOREVER 0xFFFF /* UINT16, as per ACPI spec */ #define ACPI_DO_NOT_WAIT 0 /* * Obsolete: Acpi integer width. In ACPI version 1 (1996), integers are 32 bits. * In ACPI version 2 (2000) and later, integers are 64 bits. Note that this * pertains to the ACPI integer type only, not to other integers used in the * implementation of the ACPICA subsystem. * * 01/2010: This type is obsolete and has been removed from the entire ACPICA * code base. It remains here for compatibility with device drivers that use * the type. However, it will be removed in the future. */ typedef UINT64 ACPI_INTEGER; #define ACPI_INTEGER_MAX ACPI_UINT64_MAX /******************************************************************************* * * Commonly used macros * ******************************************************************************/ /* Data manipulation */ #define ACPI_LOBYTE(Integer) ((UINT8) (UINT16)(Integer)) #define ACPI_HIBYTE(Integer) ((UINT8) (((UINT16)(Integer)) >> 8)) #define ACPI_LOWORD(Integer) ((UINT16) (UINT32)(Integer)) #define ACPI_HIWORD(Integer) ((UINT16)(((UINT32)(Integer)) >> 16)) #define ACPI_LODWORD(Integer64) ((UINT32) (UINT64)(Integer64)) #define ACPI_HIDWORD(Integer64) ((UINT32)(((UINT64)(Integer64)) >> 32)) #define ACPI_SET_BIT(target,bit) ((target) |= (bit)) #define ACPI_CLEAR_BIT(target,bit) ((target) &= ~(bit)) #define ACPI_MIN(a,b) (((a)<(b))?(a):(b)) #define ACPI_MAX(a,b) (((a)>(b))?(a):(b)) /* Size calculation */ #define ACPI_ARRAY_LENGTH(x) (sizeof(x) / sizeof((x)[0])) /* Pointer manipulation */ #define ACPI_CAST_PTR(t, p) ((t *) (ACPI_UINTPTR_T) (p)) #define ACPI_CAST_INDIRECT_PTR(t, p) ((t **) (ACPI_UINTPTR_T) (p)) #define ACPI_ADD_PTR(t, a, b) ACPI_CAST_PTR (t, (ACPI_CAST_PTR (UINT8, (a)) + (ACPI_SIZE)(b))) #define ACPI_PTR_DIFF(a, b) (ACPI_SIZE) (ACPI_CAST_PTR (UINT8, (a)) - ACPI_CAST_PTR (UINT8, (b))) /* Pointer/Integer type conversions */ #define ACPI_TO_POINTER(i) ACPI_ADD_PTR (void, (void *) NULL,(ACPI_SIZE) i) #define ACPI_TO_INTEGER(p) ACPI_PTR_DIFF (p, (void *) NULL) #define ACPI_OFFSET(d, f) (ACPI_SIZE) ACPI_PTR_DIFF (&(((d *)0)->f), (void *) NULL) #define ACPI_PHYSADDR_TO_PTR(i) ACPI_TO_POINTER(i) #define ACPI_PTR_TO_PHYSADDR(i) ACPI_TO_INTEGER(i) /* Optimizations for 4-character (32-bit) ACPI_NAME manipulation */ #ifndef ACPI_MISALIGNMENT_NOT_SUPPORTED #define ACPI_COMPARE_NAME(a,b) (*ACPI_CAST_PTR (UINT32, (a)) == *ACPI_CAST_PTR (UINT32, (b))) #define ACPI_MOVE_NAME(dest,src) (*ACPI_CAST_PTR (UINT32, (dest)) = *ACPI_CAST_PTR (UINT32, (src))) #else #define ACPI_COMPARE_NAME(a,b) (!ACPI_STRNCMP (ACPI_CAST_PTR (char, (a)), ACPI_CAST_PTR (char, (b)), ACPI_NAME_SIZE)) #define ACPI_MOVE_NAME(dest,src) (ACPI_STRNCPY (ACPI_CAST_PTR (char, (dest)), ACPI_CAST_PTR (char, (src)), ACPI_NAME_SIZE)) #endif /* Support for the special RSDP signature (8 characters) */ #define ACPI_VALIDATE_RSDP_SIG(a) (!ACPI_STRNCMP (ACPI_CAST_PTR (char, (a)), ACPI_SIG_RSDP, 8)) #define ACPI_MAKE_RSDP_SIG(dest) (ACPI_MEMCPY (ACPI_CAST_PTR (char, (dest)), ACPI_SIG_RSDP, 8)) /******************************************************************************* * * Miscellaneous constants * ******************************************************************************/ /* * Initialization sequence */ #define ACPI_FULL_INITIALIZATION 0x00 #define ACPI_NO_ADDRESS_SPACE_INIT 0x01 #define ACPI_NO_HARDWARE_INIT 0x02 #define ACPI_NO_EVENT_INIT 0x04 #define ACPI_NO_HANDLER_INIT 0x08 #define ACPI_NO_ACPI_ENABLE 0x10 #define ACPI_NO_DEVICE_INIT 0x20 #define ACPI_NO_OBJECT_INIT 0x40 /* * Initialization state */ #define ACPI_SUBSYSTEM_INITIALIZE 0x01 #define ACPI_INITIALIZED_OK 0x02 /* * Power state values */ #define ACPI_STATE_UNKNOWN (UINT8) 0xFF #define ACPI_STATE_S0 (UINT8) 0 #define ACPI_STATE_S1 (UINT8) 1 #define ACPI_STATE_S2 (UINT8) 2 #define ACPI_STATE_S3 (UINT8) 3 #define ACPI_STATE_S4 (UINT8) 4 #define ACPI_STATE_S5 (UINT8) 5 #define ACPI_S_STATES_MAX ACPI_STATE_S5 #define ACPI_S_STATE_COUNT 6 #define ACPI_STATE_D0 (UINT8) 0 #define ACPI_STATE_D1 (UINT8) 1 #define ACPI_STATE_D2 (UINT8) 2 #define ACPI_STATE_D3 (UINT8) 3 #define ACPI_D_STATES_MAX ACPI_STATE_D3 #define ACPI_D_STATE_COUNT 4 #define ACPI_STATE_C0 (UINT8) 0 #define ACPI_STATE_C1 (UINT8) 1 #define ACPI_STATE_C2 (UINT8) 2 #define ACPI_STATE_C3 (UINT8) 3 #define ACPI_C_STATES_MAX ACPI_STATE_C3 #define ACPI_C_STATE_COUNT 4 /* * Sleep type invalid value */ #define ACPI_SLEEP_TYPE_MAX 0x7 #define ACPI_SLEEP_TYPE_INVALID 0xFF /* * Standard notify values */ #define ACPI_NOTIFY_BUS_CHECK (UINT8) 0x00 #define ACPI_NOTIFY_DEVICE_CHECK (UINT8) 0x01 #define ACPI_NOTIFY_DEVICE_WAKE (UINT8) 0x02 #define ACPI_NOTIFY_EJECT_REQUEST (UINT8) 0x03 #define ACPI_NOTIFY_DEVICE_CHECK_LIGHT (UINT8) 0x04 #define ACPI_NOTIFY_FREQUENCY_MISMATCH (UINT8) 0x05 #define ACPI_NOTIFY_BUS_MODE_MISMATCH (UINT8) 0x06 #define ACPI_NOTIFY_POWER_FAULT (UINT8) 0x07 #define ACPI_NOTIFY_CAPABILITIES_CHECK (UINT8) 0x08 #define ACPI_NOTIFY_DEVICE_PLD_CHECK (UINT8) 0x09 #define ACPI_NOTIFY_RESERVED (UINT8) 0x0A #define ACPI_NOTIFY_LOCALITY_UPDATE (UINT8) 0x0B #define ACPI_NOTIFY_SHUTDOWN_REQUEST (UINT8) 0x0C #define ACPI_NOTIFY_MAX 0x0C /* * Types associated with ACPI names and objects. The first group of * values (up to ACPI_TYPE_EXTERNAL_MAX) correspond to the definition * of the ACPI ObjectType() operator (See the ACPI Spec). Therefore, * only add to the first group if the spec changes. * * NOTE: Types must be kept in sync with the global AcpiNsProperties * and AcpiNsTypeNames arrays. */ typedef UINT32 ACPI_OBJECT_TYPE; #define ACPI_TYPE_ANY 0x00 #define ACPI_TYPE_INTEGER 0x01 /* Byte/Word/Dword/Zero/One/Ones */ #define ACPI_TYPE_STRING 0x02 #define ACPI_TYPE_BUFFER 0x03 #define ACPI_TYPE_PACKAGE 0x04 /* ByteConst, multiple DataTerm/Constant/SuperName */ #define ACPI_TYPE_FIELD_UNIT 0x05 #define ACPI_TYPE_DEVICE 0x06 /* Name, multiple Node */ #define ACPI_TYPE_EVENT 0x07 #define ACPI_TYPE_METHOD 0x08 /* Name, ByteConst, multiple Code */ #define ACPI_TYPE_MUTEX 0x09 #define ACPI_TYPE_REGION 0x0A #define ACPI_TYPE_POWER 0x0B /* Name,ByteConst,WordConst,multi Node */ #define ACPI_TYPE_PROCESSOR 0x0C /* Name,ByteConst,DWordConst,ByteConst,multi NmO */ #define ACPI_TYPE_THERMAL 0x0D /* Name, multiple Node */ #define ACPI_TYPE_BUFFER_FIELD 0x0E #define ACPI_TYPE_DDB_HANDLE 0x0F #define ACPI_TYPE_DEBUG_OBJECT 0x10 #define ACPI_TYPE_EXTERNAL_MAX 0x10 /* * These are object types that do not map directly to the ACPI * ObjectType() operator. They are used for various internal purposes only. * If new predefined ACPI_TYPEs are added (via the ACPI specification), these * internal types must move upwards. (There is code that depends on these * values being contiguous with the external types above.) */ #define ACPI_TYPE_LOCAL_REGION_FIELD 0x11 #define ACPI_TYPE_LOCAL_BANK_FIELD 0x12 #define ACPI_TYPE_LOCAL_INDEX_FIELD 0x13 #define ACPI_TYPE_LOCAL_REFERENCE 0x14 /* Arg#, Local#, Name, Debug, RefOf, Index */ #define ACPI_TYPE_LOCAL_ALIAS 0x15 #define ACPI_TYPE_LOCAL_METHOD_ALIAS 0x16 #define ACPI_TYPE_LOCAL_NOTIFY 0x17 #define ACPI_TYPE_LOCAL_ADDRESS_HANDLER 0x18 #define ACPI_TYPE_LOCAL_RESOURCE 0x19 #define ACPI_TYPE_LOCAL_RESOURCE_FIELD 0x1A #define ACPI_TYPE_LOCAL_SCOPE 0x1B /* 1 Name, multiple ObjectList Nodes */ #define ACPI_TYPE_NS_NODE_MAX 0x1B /* Last typecode used within a NS Node */ /* * These are special object types that never appear in * a Namespace node, only in an object of ACPI_OPERAND_OBJECT */ #define ACPI_TYPE_LOCAL_EXTRA 0x1C #define ACPI_TYPE_LOCAL_DATA 0x1D #define ACPI_TYPE_LOCAL_MAX 0x1D /* All types above here are invalid */ #define ACPI_TYPE_INVALID 0x1E #define ACPI_TYPE_NOT_FOUND 0xFF #define ACPI_NUM_NS_TYPES (ACPI_TYPE_INVALID + 1) /* * All I/O */ #define ACPI_READ 0 #define ACPI_WRITE 1 #define ACPI_IO_MASK 1 /* * Event Types: Fixed & General Purpose */ typedef UINT32 ACPI_EVENT_TYPE; /* * Fixed events */ #define ACPI_EVENT_PMTIMER 0 #define ACPI_EVENT_GLOBAL 1 #define ACPI_EVENT_POWER_BUTTON 2 #define ACPI_EVENT_SLEEP_BUTTON 3 #define ACPI_EVENT_RTC 4 #define ACPI_EVENT_MAX 4 #define ACPI_NUM_FIXED_EVENTS ACPI_EVENT_MAX + 1 /* * Event Status - Per event * ------------- * The encoding of ACPI_EVENT_STATUS is illustrated below. * Note that a set bit (1) indicates the property is TRUE * (e.g. if bit 0 is set then the event is enabled). * +-------------+-+-+-+ * | Bits 31:3 |2|1|0| * +-------------+-+-+-+ * | | | | * | | | +- Enabled? * | | +--- Enabled for wake? * | +----- Set? * +----------- */ typedef UINT32 ACPI_EVENT_STATUS; #define ACPI_EVENT_FLAG_DISABLED (ACPI_EVENT_STATUS) 0x00 #define ACPI_EVENT_FLAG_ENABLED (ACPI_EVENT_STATUS) 0x01 #define ACPI_EVENT_FLAG_WAKE_ENABLED (ACPI_EVENT_STATUS) 0x02 #define ACPI_EVENT_FLAG_SET (ACPI_EVENT_STATUS) 0x04 /* Actions for AcpiSetGpe, AcpiGpeWakeup, AcpiHwLowSetGpe */ #define ACPI_GPE_ENABLE 0 #define ACPI_GPE_DISABLE 1 #define ACPI_GPE_CONDITIONAL_ENABLE 2 /* * GPE info flags - Per GPE * +-------+-+-+---+ * | 7:4 |3|2|1:0| * +-------+-+-+---+ * | | | | * | | | +-- Type of dispatch:to method, handler, notify, or none * | | +----- Interrupt type: edge or level triggered * | +------- Is a Wake GPE * +------------ */ #define ACPI_GPE_DISPATCH_NONE (UINT8) 0x00 #define ACPI_GPE_DISPATCH_METHOD (UINT8) 0x01 #define ACPI_GPE_DISPATCH_HANDLER (UINT8) 0x02 #define ACPI_GPE_DISPATCH_NOTIFY (UINT8) 0x03 #define ACPI_GPE_DISPATCH_MASK (UINT8) 0x03 #define ACPI_GPE_LEVEL_TRIGGERED (UINT8) 0x04 #define ACPI_GPE_EDGE_TRIGGERED (UINT8) 0x00 #define ACPI_GPE_XRUPT_TYPE_MASK (UINT8) 0x04 #define ACPI_GPE_CAN_WAKE (UINT8) 0x08 /* * Flags for GPE and Lock interfaces */ #define ACPI_NOT_ISR 0x1 #define ACPI_ISR 0x0 /* Notify types */ #define ACPI_SYSTEM_NOTIFY 0x1 #define ACPI_DEVICE_NOTIFY 0x2 #define ACPI_ALL_NOTIFY (ACPI_SYSTEM_NOTIFY | ACPI_DEVICE_NOTIFY) #define ACPI_MAX_NOTIFY_HANDLER_TYPE 0x3 #define ACPI_NUM_NOTIFY_TYPES 2 #define ACPI_MAX_SYS_NOTIFY 0x7F #define ACPI_MAX_DEVICE_SPECIFIC_NOTIFY 0xBF #define ACPI_SYSTEM_HANDLER_LIST 0 /* Used as index, must be SYSTEM_NOTIFY -1 */ #define ACPI_DEVICE_HANDLER_LIST 1 /* Used as index, must be DEVICE_NOTIFY -1 */ /* Address Space (Operation Region) Types */ typedef UINT8 ACPI_ADR_SPACE_TYPE; #define ACPI_ADR_SPACE_SYSTEM_MEMORY (ACPI_ADR_SPACE_TYPE) 0 #define ACPI_ADR_SPACE_SYSTEM_IO (ACPI_ADR_SPACE_TYPE) 1 #define ACPI_ADR_SPACE_PCI_CONFIG (ACPI_ADR_SPACE_TYPE) 2 #define ACPI_ADR_SPACE_EC (ACPI_ADR_SPACE_TYPE) 3 #define ACPI_ADR_SPACE_SMBUS (ACPI_ADR_SPACE_TYPE) 4 #define ACPI_ADR_SPACE_CMOS (ACPI_ADR_SPACE_TYPE) 5 #define ACPI_ADR_SPACE_PCI_BAR_TARGET (ACPI_ADR_SPACE_TYPE) 6 #define ACPI_ADR_SPACE_IPMI (ACPI_ADR_SPACE_TYPE) 7 #define ACPI_ADR_SPACE_GPIO (ACPI_ADR_SPACE_TYPE) 8 #define ACPI_ADR_SPACE_GSBUS (ACPI_ADR_SPACE_TYPE) 9 #define ACPI_ADR_SPACE_PLATFORM_COMM (ACPI_ADR_SPACE_TYPE) 10 #define ACPI_NUM_PREDEFINED_REGIONS 11 /* * Special Address Spaces * * Note: A Data Table region is a special type of operation region * that has its own AML opcode. However, internally, the AML * interpreter simply creates an operation region with an an address * space type of ACPI_ADR_SPACE_DATA_TABLE. */ #define ACPI_ADR_SPACE_DATA_TABLE (ACPI_ADR_SPACE_TYPE) 0x7E /* Internal to ACPICA only */ #define ACPI_ADR_SPACE_FIXED_HARDWARE (ACPI_ADR_SPACE_TYPE) 0x7F /* Values for _REG connection code */ #define ACPI_REG_DISCONNECT 0 #define ACPI_REG_CONNECT 1 /* * BitRegister IDs * * These values are intended to be used by the hardware interfaces * and are mapped to individual bitfields defined within the ACPI * registers. See the AcpiGbl_BitRegisterInfo global table in utglobal.c * for this mapping. */ /* PM1 Status register */ #define ACPI_BITREG_TIMER_STATUS 0x00 #define ACPI_BITREG_BUS_MASTER_STATUS 0x01 #define ACPI_BITREG_GLOBAL_LOCK_STATUS 0x02 #define ACPI_BITREG_POWER_BUTTON_STATUS 0x03 #define ACPI_BITREG_SLEEP_BUTTON_STATUS 0x04 #define ACPI_BITREG_RT_CLOCK_STATUS 0x05 #define ACPI_BITREG_WAKE_STATUS 0x06 #define ACPI_BITREG_PCIEXP_WAKE_STATUS 0x07 /* PM1 Enable register */ #define ACPI_BITREG_TIMER_ENABLE 0x08 #define ACPI_BITREG_GLOBAL_LOCK_ENABLE 0x09 #define ACPI_BITREG_POWER_BUTTON_ENABLE 0x0A #define ACPI_BITREG_SLEEP_BUTTON_ENABLE 0x0B #define ACPI_BITREG_RT_CLOCK_ENABLE 0x0C #define ACPI_BITREG_PCIEXP_WAKE_DISABLE 0x0D /* PM1 Control register */ #define ACPI_BITREG_SCI_ENABLE 0x0E #define ACPI_BITREG_BUS_MASTER_RLD 0x0F #define ACPI_BITREG_GLOBAL_LOCK_RELEASE 0x10 #define ACPI_BITREG_SLEEP_TYPE 0x11 #define ACPI_BITREG_SLEEP_ENABLE 0x12 /* PM2 Control register */ #define ACPI_BITREG_ARB_DISABLE 0x13 #define ACPI_BITREG_MAX 0x13 #define ACPI_NUM_BITREG ACPI_BITREG_MAX + 1 /* Status register values. A 1 clears a status bit. 0 = no effect */ #define ACPI_CLEAR_STATUS 1 /* Enable and Control register values */ #define ACPI_ENABLE_EVENT 1 #define ACPI_DISABLE_EVENT 0 /* Sleep function dispatch */ typedef ACPI_STATUS (*ACPI_SLEEP_FUNCTION) ( UINT8 SleepState); typedef struct acpi_sleep_functions { ACPI_SLEEP_FUNCTION LegacyFunction; ACPI_SLEEP_FUNCTION ExtendedFunction; } ACPI_SLEEP_FUNCTIONS; /* * External ACPI object definition */ /* * Note: Type == ACPI_TYPE_ANY (0) is used to indicate a NULL package element * or an unresolved named reference. */ typedef union acpi_object { ACPI_OBJECT_TYPE Type; /* See definition of AcpiNsType for values */ struct { ACPI_OBJECT_TYPE Type; /* ACPI_TYPE_INTEGER */ UINT64 Value; /* The actual number */ } Integer; struct { ACPI_OBJECT_TYPE Type; /* ACPI_TYPE_STRING */ UINT32 Length; /* # of bytes in string, excluding trailing null */ char *Pointer; /* points to the string value */ } String; struct { ACPI_OBJECT_TYPE Type; /* ACPI_TYPE_BUFFER */ UINT32 Length; /* # of bytes in buffer */ UINT8 *Pointer; /* points to the buffer */ } Buffer; struct { ACPI_OBJECT_TYPE Type; /* ACPI_TYPE_PACKAGE */ UINT32 Count; /* # of elements in package */ union acpi_object *Elements; /* Pointer to an array of ACPI_OBJECTs */ } Package; struct { ACPI_OBJECT_TYPE Type; /* ACPI_TYPE_LOCAL_REFERENCE */ ACPI_OBJECT_TYPE ActualType; /* Type associated with the Handle */ ACPI_HANDLE Handle; /* object reference */ } Reference; struct { ACPI_OBJECT_TYPE Type; /* ACPI_TYPE_PROCESSOR */ UINT32 ProcId; ACPI_IO_ADDRESS PblkAddress; UINT32 PblkLength; } Processor; struct { ACPI_OBJECT_TYPE Type; /* ACPI_TYPE_POWER */ UINT32 SystemLevel; UINT32 ResourceOrder; } PowerResource; } ACPI_OBJECT; /* * List of objects, used as a parameter list for control method evaluation */ typedef struct acpi_object_list { UINT32 Count; ACPI_OBJECT *Pointer; } ACPI_OBJECT_LIST; /* * Miscellaneous common Data Structures used by the interfaces */ #define ACPI_NO_BUFFER 0 #define ACPI_ALLOCATE_BUFFER (ACPI_SIZE) (-1) /* Let ACPICA allocate buffer */ #define ACPI_ALLOCATE_LOCAL_BUFFER (ACPI_SIZE) (-2) /* For internal use only (enables tracking) */ typedef struct acpi_buffer { ACPI_SIZE Length; /* Length in bytes of the buffer */ void *Pointer; /* pointer to buffer */ } ACPI_BUFFER; /* * NameType for AcpiGetName */ #define ACPI_FULL_PATHNAME 0 #define ACPI_SINGLE_NAME 1 #define ACPI_NAME_TYPE_MAX 1 /* * Predefined Namespace items */ typedef struct acpi_predefined_names { char *Name; UINT8 Type; char *Val; } ACPI_PREDEFINED_NAMES; /* * Structure and flags for AcpiGetSystemInfo */ #define ACPI_SYS_MODE_UNKNOWN 0x0000 #define ACPI_SYS_MODE_ACPI 0x0001 #define ACPI_SYS_MODE_LEGACY 0x0002 #define ACPI_SYS_MODES_MASK 0x0003 /* * System info returned by AcpiGetSystemInfo() */ typedef struct acpi_system_info { UINT32 AcpiCaVersion; UINT32 Flags; UINT32 TimerResolution; UINT32 Reserved1; UINT32 Reserved2; UINT32 DebugLevel; UINT32 DebugLayer; } ACPI_SYSTEM_INFO; /* * System statistics returned by AcpiGetStatistics() */ typedef struct acpi_statistics { UINT32 SciCount; UINT32 GpeCount; UINT32 FixedEventCount[ACPI_NUM_FIXED_EVENTS]; UINT32 MethodCount; } ACPI_STATISTICS; /* Table Event Types */ #define ACPI_TABLE_EVENT_LOAD 0x0 #define ACPI_TABLE_EVENT_UNLOAD 0x1 #define ACPI_NUM_TABLE_EVENTS 2 /* * Types specific to the OS service interfaces */ typedef UINT32 (ACPI_SYSTEM_XFACE *ACPI_OSD_HANDLER) ( void *Context); typedef void (ACPI_SYSTEM_XFACE *ACPI_OSD_EXEC_CALLBACK) ( void *Context); /* * Various handlers and callback procedures */ typedef UINT32 (*ACPI_SCI_HANDLER) ( void *Context); typedef void (*ACPI_GBL_EVENT_HANDLER) ( UINT32 EventType, ACPI_HANDLE Device, UINT32 EventNumber, void *Context); #define ACPI_EVENT_TYPE_GPE 0 #define ACPI_EVENT_TYPE_FIXED 1 typedef UINT32 (*ACPI_EVENT_HANDLER) ( void *Context); typedef UINT32 (*ACPI_GPE_HANDLER) ( ACPI_HANDLE GpeDevice, UINT32 GpeNumber, void *Context); typedef void (*ACPI_NOTIFY_HANDLER) ( ACPI_HANDLE Device, UINT32 Value, void *Context); typedef void (*ACPI_OBJECT_HANDLER) ( ACPI_HANDLE Object, void *Data); typedef ACPI_STATUS (*ACPI_INIT_HANDLER) ( ACPI_HANDLE Object, UINT32 Function); #define ACPI_INIT_DEVICE_INI 1 typedef ACPI_STATUS (*ACPI_EXCEPTION_HANDLER) ( ACPI_STATUS AmlStatus, ACPI_NAME Name, UINT16 Opcode, UINT32 AmlOffset, void *Context); /* Table Event handler (Load, LoadTable, etc.) and types */ typedef ACPI_STATUS (*ACPI_TABLE_HANDLER) ( UINT32 Event, void *Table, void *Context); #define ACPI_TABLE_LOAD 0x0 #define ACPI_TABLE_UNLOAD 0x1 #define ACPI_NUM_TABLE_EVENTS 2 /* Address Spaces (For Operation Regions) */ typedef ACPI_STATUS (*ACPI_ADR_SPACE_HANDLER) ( UINT32 Function, ACPI_PHYSICAL_ADDRESS Address, UINT32 BitWidth, UINT64 *Value, void *HandlerContext, void *RegionContext); #define ACPI_DEFAULT_HANDLER NULL /* Special Context data for GenericSerialBus/GeneralPurposeIo (ACPI 5.0) */ typedef struct acpi_connection_info { UINT8 *Connection; UINT16 Length; UINT8 AccessLength; } ACPI_CONNECTION_INFO; typedef ACPI_STATUS (*ACPI_ADR_SPACE_SETUP) ( ACPI_HANDLE RegionHandle, UINT32 Function, void *HandlerContext, void **RegionContext); #define ACPI_REGION_ACTIVATE 0 #define ACPI_REGION_DEACTIVATE 1 typedef ACPI_STATUS (*ACPI_WALK_CALLBACK) ( ACPI_HANDLE Object, UINT32 NestingLevel, void *Context, void **ReturnValue); typedef UINT32 (*ACPI_INTERFACE_HANDLER) ( ACPI_STRING InterfaceName, UINT32 Supported); /* Interrupt handler return values */ #define ACPI_INTERRUPT_NOT_HANDLED 0x00 #define ACPI_INTERRUPT_HANDLED 0x01 /* GPE handler return values */ #define ACPI_REENABLE_GPE 0x80 /* Length of 32-bit EISAID values when converted back to a string */ #define ACPI_EISAID_STRING_SIZE 8 /* Includes null terminator */ /* Length of UUID (string) values */ #define ACPI_UUID_LENGTH 16 /* Structures used for device/processor HID, UID, CID, and SUB */ typedef struct acpi_pnp_device_id { UINT32 Length; /* Length of string + null */ char *String; } ACPI_PNP_DEVICE_ID; typedef struct acpi_pnp_device_id_list { UINT32 Count; /* Number of IDs in Ids array */ UINT32 ListSize; /* Size of list, including ID strings */ ACPI_PNP_DEVICE_ID Ids[1]; /* ID array */ } ACPI_PNP_DEVICE_ID_LIST; /* * Structure returned from AcpiGetObjectInfo. * Optimized for both 32- and 64-bit builds */ typedef struct acpi_device_info { UINT32 InfoSize; /* Size of info, including ID strings */ UINT32 Name; /* ACPI object Name */ ACPI_OBJECT_TYPE Type; /* ACPI object Type */ UINT8 ParamCount; /* If a method, required parameter count */ UINT8 Valid; /* Indicates which optional fields are valid */ UINT8 Flags; /* Miscellaneous info */ UINT8 HighestDstates[4]; /* _SxD values: 0xFF indicates not valid */ UINT8 LowestDstates[5]; /* _SxW values: 0xFF indicates not valid */ UINT32 CurrentStatus; /* _STA value */ UINT64 Address; /* _ADR value */ ACPI_PNP_DEVICE_ID HardwareId; /* _HID value */ ACPI_PNP_DEVICE_ID UniqueId; /* _UID value */ ACPI_PNP_DEVICE_ID SubsystemId; /* _SUB value */ ACPI_PNP_DEVICE_ID_LIST CompatibleIdList; /* _CID list */ } ACPI_DEVICE_INFO; /* Values for Flags field above (AcpiGetObjectInfo) */ #define ACPI_PCI_ROOT_BRIDGE 0x01 /* Flags for Valid field above (AcpiGetObjectInfo) */ #define ACPI_VALID_STA 0x01 #define ACPI_VALID_ADR 0x02 #define ACPI_VALID_HID 0x04 #define ACPI_VALID_UID 0x08 #define ACPI_VALID_SUB 0x10 #define ACPI_VALID_CID 0x20 #define ACPI_VALID_SXDS 0x40 #define ACPI_VALID_SXWS 0x80 /* Flags for _STA return value (CurrentStatus above) */ #define ACPI_STA_DEVICE_PRESENT 0x01 #define ACPI_STA_DEVICE_ENABLED 0x02 #define ACPI_STA_DEVICE_UI 0x04 #define ACPI_STA_DEVICE_FUNCTIONING 0x08 #define ACPI_STA_DEVICE_OK 0x08 /* Synonym */ #define ACPI_STA_BATTERY_PRESENT 0x10 /* Context structs for address space handlers */ typedef struct acpi_pci_id { UINT16 Segment; UINT16 Bus; UINT16 Device; UINT16 Function; } ACPI_PCI_ID; typedef struct acpi_mem_space_context { UINT32 Length; ACPI_PHYSICAL_ADDRESS Address; ACPI_PHYSICAL_ADDRESS MappedPhysicalAddress; UINT8 *MappedLogicalAddress; ACPI_SIZE MappedLength; } ACPI_MEM_SPACE_CONTEXT; /* * ACPI_MEMORY_LIST is used only if the ACPICA local cache is enabled */ typedef struct acpi_memory_list { char *ListName; void *ListHead; UINT16 ObjectSize; UINT16 MaxDepth; UINT16 CurrentDepth; #ifdef ACPI_DBG_TRACK_ALLOCATIONS /* Statistics for debug memory tracking only */ UINT32 TotalAllocated; UINT32 TotalFreed; UINT32 MaxOccupied; UINT32 TotalSize; UINT32 CurrentTotalSize; UINT32 Requests; UINT32 Hits; #endif } ACPI_MEMORY_LIST; /* Definitions of _OSI support */ #define ACPI_VENDOR_STRINGS 0x01 #define ACPI_FEATURE_STRINGS 0x02 #define ACPI_ENABLE_INTERFACES 0x00 #define ACPI_DISABLE_INTERFACES 0x04 #define ACPI_DISABLE_ALL_VENDOR_STRINGS (ACPI_DISABLE_INTERFACES | ACPI_VENDOR_STRINGS) #define ACPI_DISABLE_ALL_FEATURE_STRINGS (ACPI_DISABLE_INTERFACES | ACPI_FEATURE_STRINGS) #define ACPI_DISABLE_ALL_STRINGS (ACPI_DISABLE_INTERFACES | ACPI_VENDOR_STRINGS | ACPI_FEATURE_STRINGS) #define ACPI_ENABLE_ALL_VENDOR_STRINGS (ACPI_ENABLE_INTERFACES | ACPI_VENDOR_STRINGS) #define ACPI_ENABLE_ALL_FEATURE_STRINGS (ACPI_ENABLE_INTERFACES | ACPI_FEATURE_STRINGS) #define ACPI_ENABLE_ALL_STRINGS (ACPI_ENABLE_INTERFACES | ACPI_VENDOR_STRINGS | ACPI_FEATURE_STRINGS) #define ACPI_OSI_WIN_2000 0x01 #define ACPI_OSI_WIN_XP 0x02 #define ACPI_OSI_WIN_XP_SP1 0x03 #define ACPI_OSI_WINSRV_2003 0x04 #define ACPI_OSI_WIN_XP_SP2 0x05 #define ACPI_OSI_WINSRV_2003_SP1 0x06 #define ACPI_OSI_WIN_VISTA 0x07 #define ACPI_OSI_WINSRV_2008 0x08 #define ACPI_OSI_WIN_VISTA_SP1 0x09 #define ACPI_OSI_WIN_VISTA_SP2 0x0A #define ACPI_OSI_WIN_7 0x0B #define ACPI_OSI_WIN_8 0x0C #endif /* __ACTYPES_H__ */ src/acpica/source/include/acutils.h000066400000000000000000000761021231470457100176370ustar00rootroot00000000000000/****************************************************************************** * * Name: acutils.h -- prototypes for the common (subsystem-wide) procedures * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #ifndef _ACUTILS_H #define _ACUTILS_H extern const UINT8 AcpiGbl_ResourceAmlSizes[]; extern const UINT8 AcpiGbl_ResourceAmlSerialBusSizes[]; /* Strings used by the disassembler and debugger resource dump routines */ #if defined(ACPI_DEBUG_OUTPUT) || defined (ACPI_DISASSEMBLER) || defined (ACPI_DEBUGGER) extern const char *AcpiGbl_BmDecode[]; extern const char *AcpiGbl_ConfigDecode[]; extern const char *AcpiGbl_ConsumeDecode[]; extern const char *AcpiGbl_DecDecode[]; extern const char *AcpiGbl_HeDecode[]; extern const char *AcpiGbl_IoDecode[]; extern const char *AcpiGbl_LlDecode[]; extern const char *AcpiGbl_MaxDecode[]; extern const char *AcpiGbl_MemDecode[]; extern const char *AcpiGbl_MinDecode[]; extern const char *AcpiGbl_MtpDecode[]; extern const char *AcpiGbl_RngDecode[]; extern const char *AcpiGbl_RwDecode[]; extern const char *AcpiGbl_ShrDecode[]; extern const char *AcpiGbl_SizDecode[]; extern const char *AcpiGbl_TrsDecode[]; extern const char *AcpiGbl_TtpDecode[]; extern const char *AcpiGbl_TypDecode[]; extern const char *AcpiGbl_PpcDecode[]; extern const char *AcpiGbl_IorDecode[]; extern const char *AcpiGbl_DtsDecode[]; extern const char *AcpiGbl_CtDecode[]; extern const char *AcpiGbl_SbtDecode[]; extern const char *AcpiGbl_AmDecode[]; extern const char *AcpiGbl_SmDecode[]; extern const char *AcpiGbl_WmDecode[]; extern const char *AcpiGbl_CphDecode[]; extern const char *AcpiGbl_CpoDecode[]; extern const char *AcpiGbl_DpDecode[]; extern const char *AcpiGbl_EdDecode[]; extern const char *AcpiGbl_BpbDecode[]; extern const char *AcpiGbl_SbDecode[]; extern const char *AcpiGbl_FcDecode[]; extern const char *AcpiGbl_PtDecode[]; #endif /* * For the iASL compiler case, the output is redirected to stderr so that * any of the various ACPI errors and warnings do not appear in the output * files, for either the compiler or disassembler portions of the tool. */ #ifdef ACPI_ASL_COMPILER #include extern FILE *AcpiGbl_OutputFile; #define ACPI_MSG_REDIRECT_BEGIN \ FILE *OutputFile = AcpiGbl_OutputFile; \ AcpiOsRedirectOutput (stderr); #define ACPI_MSG_REDIRECT_END \ AcpiOsRedirectOutput (OutputFile); #else /* * non-iASL case - no redirection, nothing to do */ #define ACPI_MSG_REDIRECT_BEGIN #define ACPI_MSG_REDIRECT_END #endif /* * Common error message prefixes */ #define ACPI_MSG_ERROR "ACPI Error: " #define ACPI_MSG_EXCEPTION "ACPI Exception: " #define ACPI_MSG_WARNING "ACPI Warning: " #define ACPI_MSG_INFO "ACPI: " #define ACPI_MSG_BIOS_ERROR "ACPI BIOS Error (bug): " #define ACPI_MSG_BIOS_WARNING "ACPI BIOS Warning (bug): " /* * Common message suffix */ #define ACPI_MSG_SUFFIX \ AcpiOsPrintf (" (%8.8X/%s-%u)\n", ACPI_CA_VERSION, ModuleName, LineNumber) /* Types for Resource descriptor entries */ #define ACPI_INVALID_RESOURCE 0 #define ACPI_FIXED_LENGTH 1 #define ACPI_VARIABLE_LENGTH 2 #define ACPI_SMALL_VARIABLE_LENGTH 3 typedef ACPI_STATUS (*ACPI_WALK_AML_CALLBACK) ( UINT8 *Aml, UINT32 Length, UINT32 Offset, UINT8 ResourceIndex, void **Context); typedef ACPI_STATUS (*ACPI_PKG_CALLBACK) ( UINT8 ObjectType, ACPI_OPERAND_OBJECT *SourceObject, ACPI_GENERIC_STATE *State, void *Context); typedef struct acpi_pkg_info { UINT8 *FreeSpace; ACPI_SIZE Length; UINT32 ObjectSpace; UINT32 NumPackages; } ACPI_PKG_INFO; /* Object reference counts */ #define REF_INCREMENT (UINT16) 0 #define REF_DECREMENT (UINT16) 1 /* AcpiUtDumpBuffer */ #define DB_BYTE_DISPLAY 1 #define DB_WORD_DISPLAY 2 #define DB_DWORD_DISPLAY 4 #define DB_QWORD_DISPLAY 8 /* * utglobal - Global data structures and procedures */ ACPI_STATUS AcpiUtInitGlobals ( void); #if defined(ACPI_DEBUG_OUTPUT) || defined(ACPI_DEBUGGER) char * AcpiUtGetMutexName ( UINT32 MutexId); const char * AcpiUtGetNotifyName ( UINT32 NotifyValue, ACPI_OBJECT_TYPE Type); #endif char * AcpiUtGetTypeName ( ACPI_OBJECT_TYPE Type); char * AcpiUtGetNodeName ( void *Object); char * AcpiUtGetDescriptorName ( void *Object); const char * AcpiUtGetReferenceName ( ACPI_OPERAND_OBJECT *Object); char * AcpiUtGetObjectTypeName ( ACPI_OPERAND_OBJECT *ObjDesc); char * AcpiUtGetRegionName ( UINT8 SpaceId); char * AcpiUtGetEventName ( UINT32 EventId); char AcpiUtHexToAsciiChar ( UINT64 Integer, UINT32 Position); BOOLEAN AcpiUtValidObjectType ( ACPI_OBJECT_TYPE Type); /* * utinit - miscellaneous initialization and shutdown */ ACPI_STATUS AcpiUtHardwareInitialize ( void); void AcpiUtSubsystemShutdown ( void); /* * utclib - Local implementations of C library functions */ #ifndef ACPI_USE_SYSTEM_CLIBRARY ACPI_SIZE AcpiUtStrlen ( const char *String); char * AcpiUtStrcpy ( char *DstString, const char *SrcString); char * AcpiUtStrncpy ( char *DstString, const char *SrcString, ACPI_SIZE Count); int AcpiUtMemcmp ( const char *Buffer1, const char *Buffer2, ACPI_SIZE Count); int AcpiUtStrncmp ( const char *String1, const char *String2, ACPI_SIZE Count); int AcpiUtStrcmp ( const char *String1, const char *String2); char * AcpiUtStrcat ( char *DstString, const char *SrcString); char * AcpiUtStrncat ( char *DstString, const char *SrcString, ACPI_SIZE Count); UINT32 AcpiUtStrtoul ( const char *String, char **Terminator, UINT32 Base); char * AcpiUtStrstr ( char *String1, char *String2); void * AcpiUtMemcpy ( void *Dest, const void *Src, ACPI_SIZE Count); void * AcpiUtMemset ( void *Dest, UINT8 Value, ACPI_SIZE Count); int AcpiUtToUpper ( int c); int AcpiUtToLower ( int c); extern const UINT8 _acpi_ctype[]; #define _ACPI_XA 0x00 /* extra alphabetic - not supported */ #define _ACPI_XS 0x40 /* extra space */ #define _ACPI_BB 0x00 /* BEL, BS, etc. - not supported */ #define _ACPI_CN 0x20 /* CR, FF, HT, NL, VT */ #define _ACPI_DI 0x04 /* '0'-'9' */ #define _ACPI_LO 0x02 /* 'a'-'z' */ #define _ACPI_PU 0x10 /* punctuation */ #define _ACPI_SP 0x08 /* space */ #define _ACPI_UP 0x01 /* 'A'-'Z' */ #define _ACPI_XD 0x80 /* '0'-'9', 'A'-'F', 'a'-'f' */ #define ACPI_IS_DIGIT(c) (_acpi_ctype[(unsigned char)(c)] & (_ACPI_DI)) #define ACPI_IS_SPACE(c) (_acpi_ctype[(unsigned char)(c)] & (_ACPI_SP)) #define ACPI_IS_XDIGIT(c) (_acpi_ctype[(unsigned char)(c)] & (_ACPI_XD)) #define ACPI_IS_UPPER(c) (_acpi_ctype[(unsigned char)(c)] & (_ACPI_UP)) #define ACPI_IS_LOWER(c) (_acpi_ctype[(unsigned char)(c)] & (_ACPI_LO)) #define ACPI_IS_PRINT(c) (_acpi_ctype[(unsigned char)(c)] & (_ACPI_LO | _ACPI_UP | _ACPI_DI | _ACPI_SP | _ACPI_PU)) #define ACPI_IS_ALPHA(c) (_acpi_ctype[(unsigned char)(c)] & (_ACPI_LO | _ACPI_UP)) #endif /* !ACPI_USE_SYSTEM_CLIBRARY */ #define ACPI_IS_ASCII(c) ((c) < 0x80) /* * utcopy - Object construction and conversion interfaces */ ACPI_STATUS AcpiUtBuildSimpleObject( ACPI_OPERAND_OBJECT *Obj, ACPI_OBJECT *UserObj, UINT8 *DataSpace, UINT32 *BufferSpaceUsed); ACPI_STATUS AcpiUtBuildPackageObject ( ACPI_OPERAND_OBJECT *Obj, UINT8 *Buffer, UINT32 *SpaceUsed); ACPI_STATUS AcpiUtCopyIobjectToEobject ( ACPI_OPERAND_OBJECT *Obj, ACPI_BUFFER *RetBuffer); ACPI_STATUS AcpiUtCopyEobjectToIobject ( ACPI_OBJECT *Obj, ACPI_OPERAND_OBJECT **InternalObj); ACPI_STATUS AcpiUtCopyISimpleToIsimple ( ACPI_OPERAND_OBJECT *SourceObj, ACPI_OPERAND_OBJECT *DestObj); ACPI_STATUS AcpiUtCopyIobjectToIobject ( ACPI_OPERAND_OBJECT *SourceDesc, ACPI_OPERAND_OBJECT **DestDesc, ACPI_WALK_STATE *WalkState); /* * utcreate - Object creation */ ACPI_STATUS AcpiUtUpdateObjectReference ( ACPI_OPERAND_OBJECT *Object, UINT16 Action); /* * utdebug - Debug interfaces */ void AcpiUtInitStackPtrTrace ( void); void AcpiUtTrackStackPtr ( void); void AcpiUtTrace ( UINT32 LineNumber, const char *FunctionName, const char *ModuleName, UINT32 ComponentId); void AcpiUtTracePtr ( UINT32 LineNumber, const char *FunctionName, const char *ModuleName, UINT32 ComponentId, void *Pointer); void AcpiUtTraceU32 ( UINT32 LineNumber, const char *FunctionName, const char *ModuleName, UINT32 ComponentId, UINT32 Integer); void AcpiUtTraceStr ( UINT32 LineNumber, const char *FunctionName, const char *ModuleName, UINT32 ComponentId, char *String); void AcpiUtExit ( UINT32 LineNumber, const char *FunctionName, const char *ModuleName, UINT32 ComponentId); void AcpiUtStatusExit ( UINT32 LineNumber, const char *FunctionName, const char *ModuleName, UINT32 ComponentId, ACPI_STATUS Status); void AcpiUtValueExit ( UINT32 LineNumber, const char *FunctionName, const char *ModuleName, UINT32 ComponentId, UINT64 Value); void AcpiUtPtrExit ( UINT32 LineNumber, const char *FunctionName, const char *ModuleName, UINT32 ComponentId, UINT8 *Ptr); void AcpiUtDebugDumpBuffer ( UINT8 *Buffer, UINT32 Count, UINT32 Display, UINT32 ComponentId); void AcpiUtDumpBuffer ( UINT8 *Buffer, UINT32 Count, UINT32 Display, UINT32 Offset); void AcpiUtReportError ( char *ModuleName, UINT32 LineNumber); void AcpiUtReportInfo ( char *ModuleName, UINT32 LineNumber); void AcpiUtReportWarning ( char *ModuleName, UINT32 LineNumber); /* * utdelete - Object deletion and reference counts */ void AcpiUtAddReference ( ACPI_OPERAND_OBJECT *Object); void AcpiUtRemoveReference ( ACPI_OPERAND_OBJECT *Object); void AcpiUtDeleteInternalPackageObject ( ACPI_OPERAND_OBJECT *Object); void AcpiUtDeleteInternalSimpleObject ( ACPI_OPERAND_OBJECT *Object); void AcpiUtDeleteInternalObjectList ( ACPI_OPERAND_OBJECT **ObjList); /* * uteval - object evaluation */ ACPI_STATUS AcpiUtEvaluateObject ( ACPI_NAMESPACE_NODE *PrefixNode, char *Path, UINT32 ExpectedReturnBtypes, ACPI_OPERAND_OBJECT **ReturnDesc); ACPI_STATUS AcpiUtEvaluateNumericObject ( char *ObjectName, ACPI_NAMESPACE_NODE *DeviceNode, UINT64 *Value); ACPI_STATUS AcpiUtExecute_STA ( ACPI_NAMESPACE_NODE *DeviceNode, UINT32 *StatusFlags); ACPI_STATUS AcpiUtExecutePowerMethods ( ACPI_NAMESPACE_NODE *DeviceNode, const char **MethodNames, UINT8 MethodCount, UINT8 *OutValues); /* * utids - device ID support */ ACPI_STATUS AcpiUtExecute_HID ( ACPI_NAMESPACE_NODE *DeviceNode, ACPI_PNP_DEVICE_ID **ReturnId); ACPI_STATUS AcpiUtExecute_UID ( ACPI_NAMESPACE_NODE *DeviceNode, ACPI_PNP_DEVICE_ID **ReturnId); ACPI_STATUS AcpiUtExecute_SUB ( ACPI_NAMESPACE_NODE *DeviceNode, ACPI_PNP_DEVICE_ID **ReturnId); ACPI_STATUS AcpiUtExecute_CID ( ACPI_NAMESPACE_NODE *DeviceNode, ACPI_PNP_DEVICE_ID_LIST **ReturnCidList); /* * utlock - reader/writer locks */ ACPI_STATUS AcpiUtCreateRwLock ( ACPI_RW_LOCK *Lock); void AcpiUtDeleteRwLock ( ACPI_RW_LOCK *Lock); ACPI_STATUS AcpiUtAcquireReadLock ( ACPI_RW_LOCK *Lock); ACPI_STATUS AcpiUtReleaseReadLock ( ACPI_RW_LOCK *Lock); ACPI_STATUS AcpiUtAcquireWriteLock ( ACPI_RW_LOCK *Lock); void AcpiUtReleaseWriteLock ( ACPI_RW_LOCK *Lock); /* * utobject - internal object create/delete/cache routines */ ACPI_OPERAND_OBJECT * AcpiUtCreateInternalObjectDbg ( const char *ModuleName, UINT32 LineNumber, UINT32 ComponentId, ACPI_OBJECT_TYPE Type); void * AcpiUtAllocateObjectDescDbg ( const char *ModuleName, UINT32 LineNumber, UINT32 ComponentId); #define AcpiUtCreateInternalObject(t) AcpiUtCreateInternalObjectDbg (_AcpiModuleName,__LINE__,_COMPONENT,t) #define AcpiUtAllocateObjectDesc() AcpiUtAllocateObjectDescDbg (_AcpiModuleName,__LINE__,_COMPONENT) void AcpiUtDeleteObjectDesc ( ACPI_OPERAND_OBJECT *Object); BOOLEAN AcpiUtValidInternalObject ( void *Object); ACPI_OPERAND_OBJECT * AcpiUtCreatePackageObject ( UINT32 Count); ACPI_OPERAND_OBJECT * AcpiUtCreateIntegerObject ( UINT64 Value); ACPI_OPERAND_OBJECT * AcpiUtCreateBufferObject ( ACPI_SIZE BufferSize); ACPI_OPERAND_OBJECT * AcpiUtCreateStringObject ( ACPI_SIZE StringSize); ACPI_STATUS AcpiUtGetObjectSize( ACPI_OPERAND_OBJECT *Obj, ACPI_SIZE *ObjLength); /* * utosi - Support for the _OSI predefined control method */ ACPI_STATUS AcpiUtInitializeInterfaces ( void); ACPI_STATUS AcpiUtInterfaceTerminate ( void); ACPI_STATUS AcpiUtInstallInterface ( ACPI_STRING InterfaceName); ACPI_STATUS AcpiUtRemoveInterface ( ACPI_STRING InterfaceName); ACPI_STATUS AcpiUtUpdateInterfaces ( UINT8 Action); ACPI_INTERFACE_INFO * AcpiUtGetInterface ( ACPI_STRING InterfaceName); ACPI_STATUS AcpiUtOsiImplementation ( ACPI_WALK_STATE *WalkState); /* * utpredef - support for predefined names */ const ACPI_PREDEFINED_INFO * AcpiUtGetNextPredefinedMethod ( const ACPI_PREDEFINED_INFO *ThisName); const ACPI_PREDEFINED_INFO * AcpiUtMatchPredefinedMethod ( char *Name); const ACPI_PREDEFINED_INFO * AcpiUtMatchResourceName ( char *Name); void AcpiUtDisplayPredefinedMethod ( char *Buffer, const ACPI_PREDEFINED_INFO *ThisName, BOOLEAN MultiLine); void AcpiUtGetExpectedReturnTypes ( char *Buffer, UINT32 ExpectedBtypes); UINT32 AcpiUtGetResourceBitWidth ( char *Buffer, UINT16 Types); /* * utstate - Generic state creation/cache routines */ void AcpiUtPushGenericState ( ACPI_GENERIC_STATE **ListHead, ACPI_GENERIC_STATE *State); ACPI_GENERIC_STATE * AcpiUtPopGenericState ( ACPI_GENERIC_STATE **ListHead); ACPI_GENERIC_STATE * AcpiUtCreateGenericState ( void); ACPI_THREAD_STATE * AcpiUtCreateThreadState ( void); ACPI_GENERIC_STATE * AcpiUtCreateUpdateState ( ACPI_OPERAND_OBJECT *Object, UINT16 Action); ACPI_GENERIC_STATE * AcpiUtCreatePkgState ( void *InternalObject, void *ExternalObject, UINT16 Index); ACPI_STATUS AcpiUtCreateUpdateStateAndPush ( ACPI_OPERAND_OBJECT *Object, UINT16 Action, ACPI_GENERIC_STATE **StateList); ACPI_STATUS AcpiUtCreatePkgStateAndPush ( void *InternalObject, void *ExternalObject, UINT16 Index, ACPI_GENERIC_STATE **StateList); ACPI_GENERIC_STATE * AcpiUtCreateControlState ( void); void AcpiUtDeleteGenericState ( ACPI_GENERIC_STATE *State); /* * utmath */ ACPI_STATUS AcpiUtDivide ( UINT64 InDividend, UINT64 InDivisor, UINT64 *OutQuotient, UINT64 *OutRemainder); ACPI_STATUS AcpiUtShortDivide ( UINT64 InDividend, UINT32 Divisor, UINT64 *OutQuotient, UINT32 *OutRemainder); /* * utmisc */ const ACPI_EXCEPTION_INFO * AcpiUtValidateException ( ACPI_STATUS Status); BOOLEAN AcpiUtIsPciRootBridge ( char *Id); BOOLEAN AcpiUtIsAmlTable ( ACPI_TABLE_HEADER *Table); ACPI_STATUS AcpiUtWalkPackageTree ( ACPI_OPERAND_OBJECT *SourceObject, void *TargetObject, ACPI_PKG_CALLBACK WalkCallback, void *Context); /* Values for Base above (16=Hex, 10=Decimal) */ #define ACPI_ANY_BASE 0 UINT32 AcpiUtDwordByteSwap ( UINT32 Value); void AcpiUtSetIntegerWidth ( UINT8 Revision); #ifdef ACPI_DEBUG_OUTPUT void AcpiUtDisplayInitPathname ( UINT8 Type, ACPI_NAMESPACE_NODE *ObjHandle, char *Path); #endif /* * utownerid - Support for Table/Method Owner IDs */ ACPI_STATUS AcpiUtAllocateOwnerId ( ACPI_OWNER_ID *OwnerId); void AcpiUtReleaseOwnerId ( ACPI_OWNER_ID *OwnerId); /* * utresrc */ ACPI_STATUS AcpiUtWalkAmlResources ( ACPI_WALK_STATE *WalkState, UINT8 *Aml, ACPI_SIZE AmlLength, ACPI_WALK_AML_CALLBACK UserFunction, void **Context); ACPI_STATUS AcpiUtValidateResource ( ACPI_WALK_STATE *WalkState, void *Aml, UINT8 *ReturnIndex); UINT32 AcpiUtGetDescriptorLength ( void *Aml); UINT16 AcpiUtGetResourceLength ( void *Aml); UINT8 AcpiUtGetResourceHeaderLength ( void *Aml); UINT8 AcpiUtGetResourceType ( void *Aml); ACPI_STATUS AcpiUtGetResourceEndTag ( ACPI_OPERAND_OBJECT *ObjDesc, UINT8 **EndTag); /* * utstring - String and character utilities */ void AcpiUtStrupr ( char *SrcString); void AcpiUtStrlwr ( char *SrcString); int AcpiUtStricmp ( char *String1, char *String2); ACPI_STATUS AcpiUtStrtoul64 ( char *String, UINT32 Base, UINT64 *RetInteger); void AcpiUtPrintString ( char *String, UINT16 MaxLength); void UtConvertBackslashes ( char *Pathname); BOOLEAN AcpiUtValidAcpiName ( char *Name); BOOLEAN AcpiUtValidAcpiChar ( char Character, UINT32 Position); void AcpiUtRepairName ( char *Name); #if defined (ACPI_DEBUGGER) || defined (ACPI_APPLICATION) BOOLEAN AcpiUtSafeStrcpy ( char *Dest, ACPI_SIZE DestSize, char *Source); BOOLEAN AcpiUtSafeStrcat ( char *Dest, ACPI_SIZE DestSize, char *Source); BOOLEAN AcpiUtSafeStrncat ( char *Dest, ACPI_SIZE DestSize, char *Source, ACPI_SIZE MaxTransferLength); #endif /* * utmutex - mutex support */ ACPI_STATUS AcpiUtMutexInitialize ( void); void AcpiUtMutexTerminate ( void); ACPI_STATUS AcpiUtAcquireMutex ( ACPI_MUTEX_HANDLE MutexId); ACPI_STATUS AcpiUtReleaseMutex ( ACPI_MUTEX_HANDLE MutexId); /* * utalloc - memory allocation and object caching */ ACPI_STATUS AcpiUtCreateCaches ( void); ACPI_STATUS AcpiUtDeleteCaches ( void); ACPI_STATUS AcpiUtValidateBuffer ( ACPI_BUFFER *Buffer); ACPI_STATUS AcpiUtInitializeBuffer ( ACPI_BUFFER *Buffer, ACPI_SIZE RequiredLength); #ifdef ACPI_DBG_TRACK_ALLOCATIONS void * AcpiUtAllocateAndTrack ( ACPI_SIZE Size, UINT32 Component, const char *Module, UINT32 Line); void * AcpiUtAllocateZeroedAndTrack ( ACPI_SIZE Size, UINT32 Component, const char *Module, UINT32 Line); void AcpiUtFreeAndTrack ( void *Address, UINT32 Component, const char *Module, UINT32 Line); void AcpiUtDumpAllocationInfo ( void); void AcpiUtDumpAllocations ( UINT32 Component, const char *Module); ACPI_STATUS AcpiUtCreateList ( char *ListName, UINT16 ObjectSize, ACPI_MEMORY_LIST **ReturnCache); #endif /* ACPI_DBG_TRACK_ALLOCATIONS */ /* * utaddress - address range check */ ACPI_STATUS AcpiUtAddAddressRange ( ACPI_ADR_SPACE_TYPE SpaceId, ACPI_PHYSICAL_ADDRESS Address, UINT32 Length, ACPI_NAMESPACE_NODE *RegionNode); void AcpiUtRemoveAddressRange ( ACPI_ADR_SPACE_TYPE SpaceId, ACPI_NAMESPACE_NODE *RegionNode); UINT32 AcpiUtCheckAddressRange ( ACPI_ADR_SPACE_TYPE SpaceId, ACPI_PHYSICAL_ADDRESS Address, UINT32 Length, BOOLEAN Warn); void AcpiUtDeleteAddressLists ( void); /* * utxferror - various error/warning output functions */ void ACPI_INTERNAL_VAR_XFACE AcpiUtPredefinedWarning ( const char *ModuleName, UINT32 LineNumber, char *Pathname, UINT8 NodeFlags, const char *Format, ...); void ACPI_INTERNAL_VAR_XFACE AcpiUtPredefinedInfo ( const char *ModuleName, UINT32 LineNumber, char *Pathname, UINT8 NodeFlags, const char *Format, ...); void ACPI_INTERNAL_VAR_XFACE AcpiUtPredefinedBiosError ( const char *ModuleName, UINT32 LineNumber, char *Pathname, UINT8 NodeFlags, const char *Format, ...); void AcpiUtNamespaceError ( const char *ModuleName, UINT32 LineNumber, const char *InternalName, ACPI_STATUS LookupStatus); void AcpiUtMethodError ( const char *ModuleName, UINT32 LineNumber, const char *Message, ACPI_NAMESPACE_NODE *Node, const char *Path, ACPI_STATUS LookupStatus); /* * Utility functions for ACPI names and IDs */ const AH_PREDEFINED_NAME * AcpiAhMatchPredefinedName ( char *Nameseg); const AH_DEVICE_ID * AcpiAhMatchHardwareId ( char *Hid); #endif /* _ACUTILS_H */ src/acpica/source/include/amlcode.h000066400000000000000000000571771231470457100176120ustar00rootroot00000000000000/****************************************************************************** * * Name: amlcode.h - Definitions for AML, as included in "definition blocks" * Declarations and definitions contained herein are derived * directly from the ACPI specification. * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #ifndef __AMLCODE_H__ #define __AMLCODE_H__ /* primary opcodes */ #define AML_NULL_CHAR (UINT16) 0x00 #define AML_ZERO_OP (UINT16) 0x00 #define AML_ONE_OP (UINT16) 0x01 #define AML_UNASSIGNED (UINT16) 0x02 #define AML_ALIAS_OP (UINT16) 0x06 #define AML_NAME_OP (UINT16) 0x08 #define AML_BYTE_OP (UINT16) 0x0a #define AML_WORD_OP (UINT16) 0x0b #define AML_DWORD_OP (UINT16) 0x0c #define AML_STRING_OP (UINT16) 0x0d #define AML_QWORD_OP (UINT16) 0x0e /* ACPI 2.0 */ #define AML_SCOPE_OP (UINT16) 0x10 #define AML_BUFFER_OP (UINT16) 0x11 #define AML_PACKAGE_OP (UINT16) 0x12 #define AML_VAR_PACKAGE_OP (UINT16) 0x13 /* ACPI 2.0 */ #define AML_METHOD_OP (UINT16) 0x14 #define AML_DUAL_NAME_PREFIX (UINT16) 0x2e #define AML_MULTI_NAME_PREFIX_OP (UINT16) 0x2f #define AML_NAME_CHAR_SUBSEQ (UINT16) 0x30 #define AML_NAME_CHAR_FIRST (UINT16) 0x41 #define AML_EXTENDED_OP_PREFIX (UINT16) 0x5b #define AML_ROOT_PREFIX (UINT16) 0x5c #define AML_PARENT_PREFIX (UINT16) 0x5e #define AML_LOCAL_OP (UINT16) 0x60 #define AML_LOCAL0 (UINT16) 0x60 #define AML_LOCAL1 (UINT16) 0x61 #define AML_LOCAL2 (UINT16) 0x62 #define AML_LOCAL3 (UINT16) 0x63 #define AML_LOCAL4 (UINT16) 0x64 #define AML_LOCAL5 (UINT16) 0x65 #define AML_LOCAL6 (UINT16) 0x66 #define AML_LOCAL7 (UINT16) 0x67 #define AML_ARG_OP (UINT16) 0x68 #define AML_ARG0 (UINT16) 0x68 #define AML_ARG1 (UINT16) 0x69 #define AML_ARG2 (UINT16) 0x6a #define AML_ARG3 (UINT16) 0x6b #define AML_ARG4 (UINT16) 0x6c #define AML_ARG5 (UINT16) 0x6d #define AML_ARG6 (UINT16) 0x6e #define AML_STORE_OP (UINT16) 0x70 #define AML_REF_OF_OP (UINT16) 0x71 #define AML_ADD_OP (UINT16) 0x72 #define AML_CONCAT_OP (UINT16) 0x73 #define AML_SUBTRACT_OP (UINT16) 0x74 #define AML_INCREMENT_OP (UINT16) 0x75 #define AML_DECREMENT_OP (UINT16) 0x76 #define AML_MULTIPLY_OP (UINT16) 0x77 #define AML_DIVIDE_OP (UINT16) 0x78 #define AML_SHIFT_LEFT_OP (UINT16) 0x79 #define AML_SHIFT_RIGHT_OP (UINT16) 0x7a #define AML_BIT_AND_OP (UINT16) 0x7b #define AML_BIT_NAND_OP (UINT16) 0x7c #define AML_BIT_OR_OP (UINT16) 0x7d #define AML_BIT_NOR_OP (UINT16) 0x7e #define AML_BIT_XOR_OP (UINT16) 0x7f #define AML_BIT_NOT_OP (UINT16) 0x80 #define AML_FIND_SET_LEFT_BIT_OP (UINT16) 0x81 #define AML_FIND_SET_RIGHT_BIT_OP (UINT16) 0x82 #define AML_DEREF_OF_OP (UINT16) 0x83 #define AML_CONCAT_RES_OP (UINT16) 0x84 /* ACPI 2.0 */ #define AML_MOD_OP (UINT16) 0x85 /* ACPI 2.0 */ #define AML_NOTIFY_OP (UINT16) 0x86 #define AML_SIZE_OF_OP (UINT16) 0x87 #define AML_INDEX_OP (UINT16) 0x88 #define AML_MATCH_OP (UINT16) 0x89 #define AML_CREATE_DWORD_FIELD_OP (UINT16) 0x8a #define AML_CREATE_WORD_FIELD_OP (UINT16) 0x8b #define AML_CREATE_BYTE_FIELD_OP (UINT16) 0x8c #define AML_CREATE_BIT_FIELD_OP (UINT16) 0x8d #define AML_TYPE_OP (UINT16) 0x8e #define AML_CREATE_QWORD_FIELD_OP (UINT16) 0x8f /* ACPI 2.0 */ #define AML_LAND_OP (UINT16) 0x90 #define AML_LOR_OP (UINT16) 0x91 #define AML_LNOT_OP (UINT16) 0x92 #define AML_LEQUAL_OP (UINT16) 0x93 #define AML_LGREATER_OP (UINT16) 0x94 #define AML_LLESS_OP (UINT16) 0x95 #define AML_TO_BUFFER_OP (UINT16) 0x96 /* ACPI 2.0 */ #define AML_TO_DECSTRING_OP (UINT16) 0x97 /* ACPI 2.0 */ #define AML_TO_HEXSTRING_OP (UINT16) 0x98 /* ACPI 2.0 */ #define AML_TO_INTEGER_OP (UINT16) 0x99 /* ACPI 2.0 */ #define AML_TO_STRING_OP (UINT16) 0x9c /* ACPI 2.0 */ #define AML_COPY_OP (UINT16) 0x9d /* ACPI 2.0 */ #define AML_MID_OP (UINT16) 0x9e /* ACPI 2.0 */ #define AML_CONTINUE_OP (UINT16) 0x9f /* ACPI 2.0 */ #define AML_IF_OP (UINT16) 0xa0 #define AML_ELSE_OP (UINT16) 0xa1 #define AML_WHILE_OP (UINT16) 0xa2 #define AML_NOOP_OP (UINT16) 0xa3 #define AML_RETURN_OP (UINT16) 0xa4 #define AML_BREAK_OP (UINT16) 0xa5 #define AML_BREAK_POINT_OP (UINT16) 0xcc #define AML_ONES_OP (UINT16) 0xff /* prefixed opcodes */ #define AML_EXTENDED_OPCODE (UINT16) 0x5b00 /* prefix for 2-byte opcodes */ #define AML_MUTEX_OP (UINT16) 0x5b01 #define AML_EVENT_OP (UINT16) 0x5b02 #define AML_SHIFT_RIGHT_BIT_OP (UINT16) 0x5b10 #define AML_SHIFT_LEFT_BIT_OP (UINT16) 0x5b11 #define AML_COND_REF_OF_OP (UINT16) 0x5b12 #define AML_CREATE_FIELD_OP (UINT16) 0x5b13 #define AML_LOAD_TABLE_OP (UINT16) 0x5b1f /* ACPI 2.0 */ #define AML_LOAD_OP (UINT16) 0x5b20 #define AML_STALL_OP (UINT16) 0x5b21 #define AML_SLEEP_OP (UINT16) 0x5b22 #define AML_ACQUIRE_OP (UINT16) 0x5b23 #define AML_SIGNAL_OP (UINT16) 0x5b24 #define AML_WAIT_OP (UINT16) 0x5b25 #define AML_RESET_OP (UINT16) 0x5b26 #define AML_RELEASE_OP (UINT16) 0x5b27 #define AML_FROM_BCD_OP (UINT16) 0x5b28 #define AML_TO_BCD_OP (UINT16) 0x5b29 #define AML_UNLOAD_OP (UINT16) 0x5b2a #define AML_REVISION_OP (UINT16) 0x5b30 #define AML_DEBUG_OP (UINT16) 0x5b31 #define AML_FATAL_OP (UINT16) 0x5b32 #define AML_TIMER_OP (UINT16) 0x5b33 /* ACPI 3.0 */ #define AML_REGION_OP (UINT16) 0x5b80 #define AML_FIELD_OP (UINT16) 0x5b81 #define AML_DEVICE_OP (UINT16) 0x5b82 #define AML_PROCESSOR_OP (UINT16) 0x5b83 #define AML_POWER_RES_OP (UINT16) 0x5b84 #define AML_THERMAL_ZONE_OP (UINT16) 0x5b85 #define AML_INDEX_FIELD_OP (UINT16) 0x5b86 #define AML_BANK_FIELD_OP (UINT16) 0x5b87 #define AML_DATA_REGION_OP (UINT16) 0x5b88 /* ACPI 2.0 */ /* * Combination opcodes (actually two one-byte opcodes) * Used by the disassembler and iASL compiler */ #define AML_LGREATEREQUAL_OP (UINT16) 0x9295 #define AML_LLESSEQUAL_OP (UINT16) 0x9294 #define AML_LNOTEQUAL_OP (UINT16) 0x9293 /* * Opcodes for "Field" operators */ #define AML_FIELD_OFFSET_OP (UINT8) 0x00 #define AML_FIELD_ACCESS_OP (UINT8) 0x01 #define AML_FIELD_CONNECTION_OP (UINT8) 0x02 /* ACPI 5.0 */ #define AML_FIELD_EXT_ACCESS_OP (UINT8) 0x03 /* ACPI 5.0 */ /* * Internal opcodes * Use only "Unknown" AML opcodes, don't attempt to use * any valid ACPI ASCII values (A-Z, 0-9, '-') */ #define AML_INT_NAMEPATH_OP (UINT16) 0x002d #define AML_INT_NAMEDFIELD_OP (UINT16) 0x0030 #define AML_INT_RESERVEDFIELD_OP (UINT16) 0x0031 #define AML_INT_ACCESSFIELD_OP (UINT16) 0x0032 #define AML_INT_BYTELIST_OP (UINT16) 0x0033 #define AML_INT_STATICSTRING_OP (UINT16) 0x0034 #define AML_INT_METHODCALL_OP (UINT16) 0x0035 #define AML_INT_RETURN_VALUE_OP (UINT16) 0x0036 #define AML_INT_EVAL_SUBTREE_OP (UINT16) 0x0037 #define AML_INT_CONNECTION_OP (UINT16) 0x0038 #define AML_INT_EXTACCESSFIELD_OP (UINT16) 0x0039 #define ARG_NONE 0x0 /* * Argument types for the AML Parser * Each field in the ArgTypes UINT32 is 5 bits, allowing for a maximum of 6 arguments. * There can be up to 31 unique argument types * Zero is reserved as end-of-list indicator */ #define ARGP_BYTEDATA 0x01 #define ARGP_BYTELIST 0x02 #define ARGP_CHARLIST 0x03 #define ARGP_DATAOBJ 0x04 #define ARGP_DATAOBJLIST 0x05 #define ARGP_DWORDDATA 0x06 #define ARGP_FIELDLIST 0x07 #define ARGP_NAME 0x08 #define ARGP_NAMESTRING 0x09 #define ARGP_OBJLIST 0x0A #define ARGP_PKGLENGTH 0x0B #define ARGP_SUPERNAME 0x0C #define ARGP_TARGET 0x0D #define ARGP_TERMARG 0x0E #define ARGP_TERMLIST 0x0F #define ARGP_WORDDATA 0x10 #define ARGP_QWORDDATA 0x11 #define ARGP_SIMPLENAME 0x12 /* * Resolved argument types for the AML Interpreter * Each field in the ArgTypes UINT32 is 5 bits, allowing for a maximum of 6 arguments. * There can be up to 31 unique argument types (0 is end-of-arg-list indicator) * * Note1: These values are completely independent from the ACPI_TYPEs * i.e., ARGI_INTEGER != ACPI_TYPE_INTEGER * * Note2: If and when 5 bits becomes insufficient, it would probably be best * to convert to a 6-byte array of argument types, allowing 8 bits per argument. */ /* Single, simple types */ #define ARGI_ANYTYPE 0x01 /* Don't care */ #define ARGI_PACKAGE 0x02 #define ARGI_EVENT 0x03 #define ARGI_MUTEX 0x04 #define ARGI_DDBHANDLE 0x05 /* Interchangeable types (via implicit conversion) */ #define ARGI_INTEGER 0x06 #define ARGI_STRING 0x07 #define ARGI_BUFFER 0x08 #define ARGI_BUFFER_OR_STRING 0x09 /* Used by MID op only */ #define ARGI_COMPUTEDATA 0x0A /* Buffer, String, or Integer */ /* Reference objects */ #define ARGI_INTEGER_REF 0x0B #define ARGI_OBJECT_REF 0x0C #define ARGI_DEVICE_REF 0x0D #define ARGI_REFERENCE 0x0E #define ARGI_TARGETREF 0x0F /* Target, subject to implicit conversion */ #define ARGI_FIXED_TARGET 0x10 /* Target, no implicit conversion */ #define ARGI_SIMPLE_TARGET 0x11 /* Name, Local, Arg -- no implicit conversion */ /* Multiple/complex types */ #define ARGI_DATAOBJECT 0x12 /* Buffer, String, package or reference to a Node - Used only by SizeOf operator*/ #define ARGI_COMPLEXOBJ 0x13 /* Buffer, String, or package (Used by INDEX op only) */ #define ARGI_REF_OR_STRING 0x14 /* Reference or String (Used by DEREFOF op only) */ #define ARGI_REGION_OR_BUFFER 0x15 /* Used by LOAD op only */ #define ARGI_DATAREFOBJ 0x16 /* Note: types above can expand to 0x1F maximum */ #define ARGI_INVALID_OPCODE 0xFFFFFFFF /* * hash offsets */ #define AML_EXTOP_HASH_OFFSET 22 #define AML_LNOT_HASH_OFFSET 19 /* * opcode groups and types */ #define OPGRP_NAMED 0x01 #define OPGRP_FIELD 0x02 #define OPGRP_BYTELIST 0x04 /* * Opcode information */ /* Opcode flags */ #define AML_LOGICAL 0x0001 #define AML_LOGICAL_NUMERIC 0x0002 #define AML_MATH 0x0004 #define AML_CREATE 0x0008 #define AML_FIELD 0x0010 #define AML_DEFER 0x0020 #define AML_NAMED 0x0040 #define AML_NSNODE 0x0080 #define AML_NSOPCODE 0x0100 #define AML_NSOBJECT 0x0200 #define AML_HAS_RETVAL 0x0400 #define AML_HAS_TARGET 0x0800 #define AML_HAS_ARGS 0x1000 #define AML_CONSTANT 0x2000 #define AML_NO_OPERAND_RESOLVE 0x4000 /* Convenient flag groupings */ #define AML_FLAGS_EXEC_0A_0T_1R AML_HAS_RETVAL #define AML_FLAGS_EXEC_1A_0T_0R AML_HAS_ARGS /* Monadic1 */ #define AML_FLAGS_EXEC_1A_0T_1R AML_HAS_ARGS | AML_HAS_RETVAL /* Monadic2 */ #define AML_FLAGS_EXEC_1A_1T_0R AML_HAS_ARGS | AML_HAS_TARGET #define AML_FLAGS_EXEC_1A_1T_1R AML_HAS_ARGS | AML_HAS_TARGET | AML_HAS_RETVAL /* Monadic2R */ #define AML_FLAGS_EXEC_2A_0T_0R AML_HAS_ARGS /* Dyadic1 */ #define AML_FLAGS_EXEC_2A_0T_1R AML_HAS_ARGS | AML_HAS_RETVAL /* Dyadic2 */ #define AML_FLAGS_EXEC_2A_1T_1R AML_HAS_ARGS | AML_HAS_TARGET | AML_HAS_RETVAL /* Dyadic2R */ #define AML_FLAGS_EXEC_2A_2T_1R AML_HAS_ARGS | AML_HAS_TARGET | AML_HAS_RETVAL #define AML_FLAGS_EXEC_3A_0T_0R AML_HAS_ARGS #define AML_FLAGS_EXEC_3A_1T_1R AML_HAS_ARGS | AML_HAS_TARGET | AML_HAS_RETVAL #define AML_FLAGS_EXEC_6A_0T_1R AML_HAS_ARGS | AML_HAS_RETVAL /* * The opcode Type is used in a dispatch table, do not change * without updating the table. */ #define AML_TYPE_EXEC_0A_0T_1R 0x00 #define AML_TYPE_EXEC_1A_0T_0R 0x01 /* Monadic1 */ #define AML_TYPE_EXEC_1A_0T_1R 0x02 /* Monadic2 */ #define AML_TYPE_EXEC_1A_1T_0R 0x03 #define AML_TYPE_EXEC_1A_1T_1R 0x04 /* Monadic2R */ #define AML_TYPE_EXEC_2A_0T_0R 0x05 /* Dyadic1 */ #define AML_TYPE_EXEC_2A_0T_1R 0x06 /* Dyadic2 */ #define AML_TYPE_EXEC_2A_1T_1R 0x07 /* Dyadic2R */ #define AML_TYPE_EXEC_2A_2T_1R 0x08 #define AML_TYPE_EXEC_3A_0T_0R 0x09 #define AML_TYPE_EXEC_3A_1T_1R 0x0A #define AML_TYPE_EXEC_6A_0T_1R 0x0B /* End of types used in dispatch table */ #define AML_TYPE_LITERAL 0x0B #define AML_TYPE_CONSTANT 0x0C #define AML_TYPE_METHOD_ARGUMENT 0x0D #define AML_TYPE_LOCAL_VARIABLE 0x0E #define AML_TYPE_DATA_TERM 0x0F /* Generic for an op that returns a value */ #define AML_TYPE_METHOD_CALL 0x10 /* Misc */ #define AML_TYPE_CREATE_FIELD 0x11 #define AML_TYPE_CREATE_OBJECT 0x12 #define AML_TYPE_CONTROL 0x13 #define AML_TYPE_NAMED_NO_OBJ 0x14 #define AML_TYPE_NAMED_FIELD 0x15 #define AML_TYPE_NAMED_SIMPLE 0x16 #define AML_TYPE_NAMED_COMPLEX 0x17 #define AML_TYPE_RETURN 0x18 #define AML_TYPE_UNDEFINED 0x19 #define AML_TYPE_BOGUS 0x1A /* AML Package Length encodings */ #define ACPI_AML_PACKAGE_TYPE1 0x40 #define ACPI_AML_PACKAGE_TYPE2 0x4000 #define ACPI_AML_PACKAGE_TYPE3 0x400000 #define ACPI_AML_PACKAGE_TYPE4 0x40000000 /* * Opcode classes */ #define AML_CLASS_EXECUTE 0x00 #define AML_CLASS_CREATE 0x01 #define AML_CLASS_ARGUMENT 0x02 #define AML_CLASS_NAMED_OBJECT 0x03 #define AML_CLASS_CONTROL 0x04 #define AML_CLASS_ASCII 0x05 #define AML_CLASS_PREFIX 0x06 #define AML_CLASS_INTERNAL 0x07 #define AML_CLASS_RETURN_VALUE 0x08 #define AML_CLASS_METHOD_CALL 0x09 #define AML_CLASS_UNKNOWN 0x0A /* Comparison operation codes for MatchOp operator */ typedef enum { MATCH_MTR = 0, MATCH_MEQ = 1, MATCH_MLE = 2, MATCH_MLT = 3, MATCH_MGE = 4, MATCH_MGT = 5 } AML_MATCH_OPERATOR; #define MAX_MATCH_OPERATOR 5 /* * FieldFlags * * This byte is extracted from the AML and includes three separate * pieces of information about the field: * 1) The field access type * 2) The field update rule * 3) The lock rule for the field * * Bits 00 - 03 : AccessType (AnyAcc, ByteAcc, etc.) * 04 : LockRule (1 == Lock) * 05 - 06 : UpdateRule */ #define AML_FIELD_ACCESS_TYPE_MASK 0x0F #define AML_FIELD_LOCK_RULE_MASK 0x10 #define AML_FIELD_UPDATE_RULE_MASK 0x60 /* 1) Field Access Types */ typedef enum { AML_FIELD_ACCESS_ANY = 0x00, AML_FIELD_ACCESS_BYTE = 0x01, AML_FIELD_ACCESS_WORD = 0x02, AML_FIELD_ACCESS_DWORD = 0x03, AML_FIELD_ACCESS_QWORD = 0x04, /* ACPI 2.0 */ AML_FIELD_ACCESS_BUFFER = 0x05 /* ACPI 2.0 */ } AML_ACCESS_TYPE; /* 2) Field Lock Rules */ typedef enum { AML_FIELD_LOCK_NEVER = 0x00, AML_FIELD_LOCK_ALWAYS = 0x10 } AML_LOCK_RULE; /* 3) Field Update Rules */ typedef enum { AML_FIELD_UPDATE_PRESERVE = 0x00, AML_FIELD_UPDATE_WRITE_AS_ONES = 0x20, AML_FIELD_UPDATE_WRITE_AS_ZEROS = 0x40 } AML_UPDATE_RULE; /* * Field Access Attributes. * This byte is extracted from the AML via the * AccessAs keyword */ typedef enum { AML_FIELD_ATTRIB_QUICK = 0x02, AML_FIELD_ATTRIB_SEND_RCV = 0x04, AML_FIELD_ATTRIB_BYTE = 0x06, AML_FIELD_ATTRIB_WORD = 0x08, AML_FIELD_ATTRIB_BLOCK = 0x0A, AML_FIELD_ATTRIB_MULTIBYTE = 0x0B, AML_FIELD_ATTRIB_WORD_CALL = 0x0C, AML_FIELD_ATTRIB_BLOCK_CALL = 0x0D, AML_FIELD_ATTRIB_RAW_BYTES = 0x0E, AML_FIELD_ATTRIB_RAW_PROCESS = 0x0F } AML_ACCESS_ATTRIBUTE; /* Bit fields in the AML MethodFlags byte */ #define AML_METHOD_ARG_COUNT 0x07 #define AML_METHOD_SERIALIZED 0x08 #define AML_METHOD_SYNC_LEVEL 0xF0 #endif /* __AMLCODE_H__ */ src/acpica/source/include/amlresrc.h000066400000000000000000000555321231470457100200070ustar00rootroot00000000000000/****************************************************************************** * * Module Name: amlresrc.h - AML resource descriptors * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ /* acpisrc:StructDefs -- for acpisrc conversion */ #ifndef __AMLRESRC_H #define __AMLRESRC_H /* * Resource descriptor tags, as defined in the ACPI specification. * Used to symbolically reference fields within a descriptor. */ #define ACPI_RESTAG_ADDRESS "_ADR" #define ACPI_RESTAG_ALIGNMENT "_ALN" #define ACPI_RESTAG_ADDRESSSPACE "_ASI" #define ACPI_RESTAG_ACCESSSIZE "_ASZ" #define ACPI_RESTAG_TYPESPECIFICATTRIBUTES "_ATT" #define ACPI_RESTAG_BASEADDRESS "_BAS" #define ACPI_RESTAG_BUSMASTER "_BM_" /* Master(1), Slave(0) */ #define ACPI_RESTAG_DEBOUNCETIME "_DBT" #define ACPI_RESTAG_DECODE "_DEC" #define ACPI_RESTAG_DEVICEPOLARITY "_DPL" #define ACPI_RESTAG_DMA "_DMA" #define ACPI_RESTAG_DMATYPE "_TYP" /* Compatible(0), A(1), B(2), F(3) */ #define ACPI_RESTAG_DRIVESTRENGTH "_DRS" #define ACPI_RESTAG_ENDIANNESS "_END" #define ACPI_RESTAG_FLOWCONTROL "_FLC" #define ACPI_RESTAG_GRANULARITY "_GRA" #define ACPI_RESTAG_INTERRUPT "_INT" #define ACPI_RESTAG_INTERRUPTLEVEL "_LL_" /* ActiveLo(1), ActiveHi(0) */ #define ACPI_RESTAG_INTERRUPTSHARE "_SHR" /* Shareable(1), NoShare(0) */ #define ACPI_RESTAG_INTERRUPTTYPE "_HE_" /* Edge(1), Level(0) */ #define ACPI_RESTAG_IORESTRICTION "_IOR" #define ACPI_RESTAG_LENGTH "_LEN" #define ACPI_RESTAG_LINE "_LIN" #define ACPI_RESTAG_MEMATTRIBUTES "_MTP" /* Memory(0), Reserved(1), ACPI(2), NVS(3) */ #define ACPI_RESTAG_MEMTYPE "_MEM" /* NonCache(0), Cacheable(1) Cache+combine(2), Cache+prefetch(3) */ #define ACPI_RESTAG_MAXADDR "_MAX" #define ACPI_RESTAG_MINADDR "_MIN" #define ACPI_RESTAG_MAXTYPE "_MAF" #define ACPI_RESTAG_MINTYPE "_MIF" #define ACPI_RESTAG_MODE "_MOD" #define ACPI_RESTAG_PARITY "_PAR" #define ACPI_RESTAG_PHASE "_PHA" #define ACPI_RESTAG_PIN "_PIN" #define ACPI_RESTAG_PINCONFIG "_PPI" #define ACPI_RESTAG_POLARITY "_POL" #define ACPI_RESTAG_REGISTERBITOFFSET "_RBO" #define ACPI_RESTAG_REGISTERBITWIDTH "_RBW" #define ACPI_RESTAG_RANGETYPE "_RNG" #define ACPI_RESTAG_READWRITETYPE "_RW_" /* ReadOnly(0), Writeable (1) */ #define ACPI_RESTAG_LENGTH_RX "_RXL" #define ACPI_RESTAG_LENGTH_TX "_TXL" #define ACPI_RESTAG_SLAVEMODE "_SLV" #define ACPI_RESTAG_SPEED "_SPE" #define ACPI_RESTAG_STOPBITS "_STB" #define ACPI_RESTAG_TRANSLATION "_TRA" #define ACPI_RESTAG_TRANSTYPE "_TRS" /* Sparse(1), Dense(0) */ #define ACPI_RESTAG_TYPE "_TTP" /* Translation(1), Static (0) */ #define ACPI_RESTAG_XFERTYPE "_SIZ" /* 8(0), 8And16(1), 16(2) */ #define ACPI_RESTAG_VENDORDATA "_VEN" /* Default sizes for "small" resource descriptors */ #define ASL_RDESC_IRQ_SIZE 0x02 #define ASL_RDESC_DMA_SIZE 0x02 #define ASL_RDESC_ST_DEPEND_SIZE 0x00 #define ASL_RDESC_END_DEPEND_SIZE 0x00 #define ASL_RDESC_IO_SIZE 0x07 #define ASL_RDESC_FIXED_IO_SIZE 0x03 #define ASL_RDESC_FIXED_DMA_SIZE 0x05 #define ASL_RDESC_END_TAG_SIZE 0x01 typedef struct asl_resource_node { UINT32 BufferLength; void *Buffer; struct asl_resource_node *Next; } ASL_RESOURCE_NODE; /* Macros used to generate AML resource length fields */ #define ACPI_AML_SIZE_LARGE(r) (sizeof (r) - sizeof (AML_RESOURCE_LARGE_HEADER)) #define ACPI_AML_SIZE_SMALL(r) (sizeof (r) - sizeof (AML_RESOURCE_SMALL_HEADER)) /* * Resource descriptors defined in the ACPI specification. * * Packing/alignment must be BYTE because these descriptors * are used to overlay the raw AML byte stream. */ #pragma pack(1) /* * SMALL descriptors */ #define AML_RESOURCE_SMALL_HEADER_COMMON \ UINT8 DescriptorType; typedef struct aml_resource_small_header { AML_RESOURCE_SMALL_HEADER_COMMON } AML_RESOURCE_SMALL_HEADER; typedef struct aml_resource_irq { AML_RESOURCE_SMALL_HEADER_COMMON UINT16 IrqMask; UINT8 Flags; } AML_RESOURCE_IRQ; typedef struct aml_resource_irq_noflags { AML_RESOURCE_SMALL_HEADER_COMMON UINT16 IrqMask; } AML_RESOURCE_IRQ_NOFLAGS; typedef struct aml_resource_dma { AML_RESOURCE_SMALL_HEADER_COMMON UINT8 DmaChannelMask; UINT8 Flags; } AML_RESOURCE_DMA; typedef struct aml_resource_start_dependent { AML_RESOURCE_SMALL_HEADER_COMMON UINT8 Flags; } AML_RESOURCE_START_DEPENDENT; typedef struct aml_resource_start_dependent_noprio { AML_RESOURCE_SMALL_HEADER_COMMON } AML_RESOURCE_START_DEPENDENT_NOPRIO; typedef struct aml_resource_end_dependent { AML_RESOURCE_SMALL_HEADER_COMMON } AML_RESOURCE_END_DEPENDENT; typedef struct aml_resource_io { AML_RESOURCE_SMALL_HEADER_COMMON UINT8 Flags; UINT16 Minimum; UINT16 Maximum; UINT8 Alignment; UINT8 AddressLength; } AML_RESOURCE_IO; typedef struct aml_resource_fixed_io { AML_RESOURCE_SMALL_HEADER_COMMON UINT16 Address; UINT8 AddressLength; } AML_RESOURCE_FIXED_IO; typedef struct aml_resource_vendor_small { AML_RESOURCE_SMALL_HEADER_COMMON } AML_RESOURCE_VENDOR_SMALL; typedef struct aml_resource_end_tag { AML_RESOURCE_SMALL_HEADER_COMMON UINT8 Checksum; } AML_RESOURCE_END_TAG; typedef struct aml_resource_fixed_dma { AML_RESOURCE_SMALL_HEADER_COMMON UINT16 RequestLines; UINT16 Channels; UINT8 Width; } AML_RESOURCE_FIXED_DMA; /* * LARGE descriptors */ #define AML_RESOURCE_LARGE_HEADER_COMMON \ UINT8 DescriptorType;\ UINT16 ResourceLength; typedef struct aml_resource_large_header { AML_RESOURCE_LARGE_HEADER_COMMON } AML_RESOURCE_LARGE_HEADER; /* General Flags for address space resource descriptors */ #define ACPI_RESOURCE_FLAG_DEC 2 #define ACPI_RESOURCE_FLAG_MIF 4 #define ACPI_RESOURCE_FLAG_MAF 8 typedef struct aml_resource_memory24 { AML_RESOURCE_LARGE_HEADER_COMMON UINT8 Flags; UINT16 Minimum; UINT16 Maximum; UINT16 Alignment; UINT16 AddressLength; } AML_RESOURCE_MEMORY24; typedef struct aml_resource_vendor_large { AML_RESOURCE_LARGE_HEADER_COMMON } AML_RESOURCE_VENDOR_LARGE; typedef struct aml_resource_memory32 { AML_RESOURCE_LARGE_HEADER_COMMON UINT8 Flags; UINT32 Minimum; UINT32 Maximum; UINT32 Alignment; UINT32 AddressLength; } AML_RESOURCE_MEMORY32; typedef struct aml_resource_fixed_memory32 { AML_RESOURCE_LARGE_HEADER_COMMON UINT8 Flags; UINT32 Address; UINT32 AddressLength; } AML_RESOURCE_FIXED_MEMORY32; #define AML_RESOURCE_ADDRESS_COMMON \ UINT8 ResourceType; \ UINT8 Flags; \ UINT8 SpecificFlags; typedef struct aml_resource_address { AML_RESOURCE_LARGE_HEADER_COMMON AML_RESOURCE_ADDRESS_COMMON } AML_RESOURCE_ADDRESS; typedef struct aml_resource_extended_address64 { AML_RESOURCE_LARGE_HEADER_COMMON AML_RESOURCE_ADDRESS_COMMON UINT8 RevisionID; UINT8 Reserved; UINT64 Granularity; UINT64 Minimum; UINT64 Maximum; UINT64 TranslationOffset; UINT64 AddressLength; UINT64 TypeSpecific; } AML_RESOURCE_EXTENDED_ADDRESS64; #define AML_RESOURCE_EXTENDED_ADDRESS_REVISION 1 /* ACPI 3.0 */ typedef struct aml_resource_address64 { AML_RESOURCE_LARGE_HEADER_COMMON AML_RESOURCE_ADDRESS_COMMON UINT64 Granularity; UINT64 Minimum; UINT64 Maximum; UINT64 TranslationOffset; UINT64 AddressLength; } AML_RESOURCE_ADDRESS64; typedef struct aml_resource_address32 { AML_RESOURCE_LARGE_HEADER_COMMON AML_RESOURCE_ADDRESS_COMMON UINT32 Granularity; UINT32 Minimum; UINT32 Maximum; UINT32 TranslationOffset; UINT32 AddressLength; } AML_RESOURCE_ADDRESS32; typedef struct aml_resource_address16 { AML_RESOURCE_LARGE_HEADER_COMMON AML_RESOURCE_ADDRESS_COMMON UINT16 Granularity; UINT16 Minimum; UINT16 Maximum; UINT16 TranslationOffset; UINT16 AddressLength; } AML_RESOURCE_ADDRESS16; typedef struct aml_resource_extended_irq { AML_RESOURCE_LARGE_HEADER_COMMON UINT8 Flags; UINT8 InterruptCount; UINT32 Interrupts[1]; /* ResSourceIndex, ResSource optional fields follow */ } AML_RESOURCE_EXTENDED_IRQ; typedef struct aml_resource_generic_register { AML_RESOURCE_LARGE_HEADER_COMMON UINT8 AddressSpaceId; UINT8 BitWidth; UINT8 BitOffset; UINT8 AccessSize; /* ACPI 3.0, was previously Reserved */ UINT64 Address; } AML_RESOURCE_GENERIC_REGISTER; /* Common descriptor for GpioInt and GpioIo (ACPI 5.0) */ typedef struct aml_resource_gpio { AML_RESOURCE_LARGE_HEADER_COMMON UINT8 RevisionId; UINT8 ConnectionType; UINT16 Flags; UINT16 IntFlags; UINT8 PinConfig; UINT16 DriveStrength; UINT16 DebounceTimeout; UINT16 PinTableOffset; UINT8 ResSourceIndex; UINT16 ResSourceOffset; UINT16 VendorOffset; UINT16 VendorLength; /* * Optional fields follow immediately: * 1) PIN list (Words) * 2) Resource Source String * 3) Vendor Data bytes */ } AML_RESOURCE_GPIO; #define AML_RESOURCE_GPIO_REVISION 1 /* ACPI 5.0 */ /* Values for ConnectionType above */ #define AML_RESOURCE_GPIO_TYPE_INT 0 #define AML_RESOURCE_GPIO_TYPE_IO 1 #define AML_RESOURCE_MAX_GPIOTYPE 1 /* Common preamble for all serial descriptors (ACPI 5.0) */ #define AML_RESOURCE_SERIAL_COMMON \ UINT8 RevisionId; \ UINT8 ResSourceIndex; \ UINT8 Type; \ UINT8 Flags; \ UINT16 TypeSpecificFlags; \ UINT8 TypeRevisionId; \ UINT16 TypeDataLength; \ /* Values for the type field above */ #define AML_RESOURCE_I2C_SERIALBUSTYPE 1 #define AML_RESOURCE_SPI_SERIALBUSTYPE 2 #define AML_RESOURCE_UART_SERIALBUSTYPE 3 #define AML_RESOURCE_MAX_SERIALBUSTYPE 3 #define AML_RESOURCE_VENDOR_SERIALBUSTYPE 192 /* Vendor defined is 0xC0-0xFF (NOT SUPPORTED) */ typedef struct aml_resource_common_serialbus { AML_RESOURCE_LARGE_HEADER_COMMON AML_RESOURCE_SERIAL_COMMON } AML_RESOURCE_COMMON_SERIALBUS; typedef struct aml_resource_i2c_serialbus { AML_RESOURCE_LARGE_HEADER_COMMON AML_RESOURCE_SERIAL_COMMON UINT32 ConnectionSpeed; UINT16 SlaveAddress; /* * Optional fields follow immediately: * 1) Vendor Data bytes * 2) Resource Source String */ } AML_RESOURCE_I2C_SERIALBUS; #define AML_RESOURCE_I2C_REVISION 1 /* ACPI 5.0 */ #define AML_RESOURCE_I2C_TYPE_REVISION 1 /* ACPI 5.0 */ #define AML_RESOURCE_I2C_MIN_DATA_LEN 6 typedef struct aml_resource_spi_serialbus { AML_RESOURCE_LARGE_HEADER_COMMON AML_RESOURCE_SERIAL_COMMON UINT32 ConnectionSpeed; UINT8 DataBitLength; UINT8 ClockPhase; UINT8 ClockPolarity; UINT16 DeviceSelection; /* * Optional fields follow immediately: * 1) Vendor Data bytes * 2) Resource Source String */ } AML_RESOURCE_SPI_SERIALBUS; #define AML_RESOURCE_SPI_REVISION 1 /* ACPI 5.0 */ #define AML_RESOURCE_SPI_TYPE_REVISION 1 /* ACPI 5.0 */ #define AML_RESOURCE_SPI_MIN_DATA_LEN 9 typedef struct aml_resource_uart_serialbus { AML_RESOURCE_LARGE_HEADER_COMMON AML_RESOURCE_SERIAL_COMMON UINT32 DefaultBaudRate; UINT16 RxFifoSize; UINT16 TxFifoSize; UINT8 Parity; UINT8 LinesEnabled; /* * Optional fields follow immediately: * 1) Vendor Data bytes * 2) Resource Source String */ } AML_RESOURCE_UART_SERIALBUS; #define AML_RESOURCE_UART_REVISION 1 /* ACPI 5.0 */ #define AML_RESOURCE_UART_TYPE_REVISION 1 /* ACPI 5.0 */ #define AML_RESOURCE_UART_MIN_DATA_LEN 10 /* restore default alignment */ #pragma pack() /* Union of all resource descriptors, so we can allocate the worst case */ typedef union aml_resource { /* Descriptor headers */ UINT8 DescriptorType; AML_RESOURCE_SMALL_HEADER SmallHeader; AML_RESOURCE_LARGE_HEADER LargeHeader; /* Small resource descriptors */ AML_RESOURCE_IRQ Irq; AML_RESOURCE_DMA Dma; AML_RESOURCE_START_DEPENDENT StartDpf; AML_RESOURCE_END_DEPENDENT EndDpf; AML_RESOURCE_IO Io; AML_RESOURCE_FIXED_IO FixedIo; AML_RESOURCE_FIXED_DMA FixedDma; AML_RESOURCE_VENDOR_SMALL VendorSmall; AML_RESOURCE_END_TAG EndTag; /* Large resource descriptors */ AML_RESOURCE_MEMORY24 Memory24; AML_RESOURCE_GENERIC_REGISTER GenericReg; AML_RESOURCE_VENDOR_LARGE VendorLarge; AML_RESOURCE_MEMORY32 Memory32; AML_RESOURCE_FIXED_MEMORY32 FixedMemory32; AML_RESOURCE_ADDRESS16 Address16; AML_RESOURCE_ADDRESS32 Address32; AML_RESOURCE_ADDRESS64 Address64; AML_RESOURCE_EXTENDED_ADDRESS64 ExtAddress64; AML_RESOURCE_EXTENDED_IRQ ExtendedIrq; AML_RESOURCE_GPIO Gpio; AML_RESOURCE_I2C_SERIALBUS I2cSerialBus; AML_RESOURCE_SPI_SERIALBUS SpiSerialBus; AML_RESOURCE_UART_SERIALBUS UartSerialBus; AML_RESOURCE_COMMON_SERIALBUS CommonSerialBus; /* Utility overlays */ AML_RESOURCE_ADDRESS Address; UINT32 DwordItem; UINT16 WordItem; UINT8 ByteItem; } AML_RESOURCE; #endif src/acpica/source/include/platform/000077500000000000000000000000001231470457100176405ustar00rootroot00000000000000src/acpica/source/include/platform/acenv.h000066400000000000000000000404701231470457100211120ustar00rootroot00000000000000/****************************************************************************** * * Name: acenv.h - Host and compiler configuration * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #ifndef __ACENV_H__ #define __ACENV_H__ /* * Environment configuration. The purpose of this file is to interface ACPICA * to the local environment. This includes compiler-specific, OS-specific, * and machine-specific configuration. */ /* Types for ACPI_MUTEX_TYPE */ #define ACPI_BINARY_SEMAPHORE 0 #define ACPI_OSL_MUTEX 1 /* Types for DEBUGGER_THREADING */ #define DEBUGGER_SINGLE_THREADED 0 #define DEBUGGER_MULTI_THREADED 1 /****************************************************************************** * * Configuration for ACPI tools and utilities * *****************************************************************************/ /* iASL configuration */ #ifdef ACPI_ASL_COMPILER #define ACPI_APPLICATION #define ACPI_DISASSEMBLER #define ACPI_DEBUG_OUTPUT #define ACPI_CONSTANT_EVAL_ONLY #define ACPI_LARGE_NAMESPACE_NODE #define ACPI_DATA_TABLE_DISASSEMBLY #define ACPI_SINGLE_THREADED #endif /* AcpiExec configuration. Multithreaded with full AML debugger */ #ifdef ACPI_EXEC_APP #define ACPI_APPLICATION #define ACPI_FULL_DEBUG #define ACPI_MUTEX_DEBUG #define ACPI_DBG_TRACK_ALLOCATIONS #endif /* AcpiNames configuration. Single threaded with debugger output enabled. */ #ifdef ACPI_NAMES_APP #define ACPI_DEBUGGER #define ACPI_APPLICATION #define ACPI_SINGLE_THREADED #endif /* * AcpiBin/AcpiDump/AcpiSrc/AcpiXtract/Example configuration. All single * threaded, with no debug output. */ #if (defined ACPI_BIN_APP) || \ (defined ACPI_DUMP_APP) || \ (defined ACPI_SRC_APP) || \ (defined ACPI_XTRACT_APP) || \ (defined ACPI_EXAMPLE_APP) #define ACPI_APPLICATION #define ACPI_SINGLE_THREADED #endif #ifdef ACPI_HELP_APP #define ACPI_APPLICATION #define ACPI_SINGLE_THREADED #define ACPI_NO_ERROR_MESSAGES #endif /* Linkable ACPICA library */ #ifdef ACPI_LIBRARY #define ACPI_USE_LOCAL_CACHE #endif /* Common for all ACPICA applications */ #ifdef ACPI_APPLICATION #define ACPI_USE_SYSTEM_CLIBRARY #define ACPI_USE_LOCAL_CACHE #endif /* Common debug support */ #ifdef ACPI_FULL_DEBUG #define ACPI_DEBUGGER #define ACPI_DEBUG_OUTPUT #define ACPI_DISASSEMBLER #endif /*! [Begin] no source code translation */ /****************************************************************************** * * Host configuration files. The compiler configuration files are included * by the host files. * *****************************************************************************/ #if defined(_LINUX) || defined(__linux__) #include "aclinux.h" #elif defined(_APPLE) || defined(__APPLE__) #include "acmacosx.h" #elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) #include "acfreebsd.h" #elif defined(__NetBSD__) #include "acnetbsd.h" #elif defined(__sun) #include "acsolaris.h" #elif defined(MODESTO) #include "acmodesto.h" #elif defined(NETWARE) #include "acnetware.h" #elif defined(_CYGWIN) #include "accygwin.h" #elif defined(WIN32) #include "acwin.h" #elif defined(WIN64) #include "acwin64.h" #elif defined(_WRS_LIB_BUILD) #include "acvxworks.h" #elif defined(__OS2__) #include "acos2.h" #elif defined(_AED_EFI) #include "acefi.h" #elif defined(__HAIKU__) #include "achaiku.h" #else /* Unknown environment */ #error Unknown target environment #endif /*! [End] no source code translation !*/ /****************************************************************************** * * Setup defaults for the required symbols that were not defined in one of * the host/compiler files above. * *****************************************************************************/ /* 64-bit data types */ #ifndef COMPILER_DEPENDENT_INT64 #define COMPILER_DEPENDENT_INT64 long long #endif #ifndef COMPILER_DEPENDENT_UINT64 #define COMPILER_DEPENDENT_UINT64 unsigned long long #endif /* Type of mutex supported by host. Default is binary semaphores. */ #ifndef ACPI_MUTEX_TYPE #define ACPI_MUTEX_TYPE ACPI_BINARY_SEMAPHORE #endif /* Global Lock acquire/release */ #ifndef ACPI_ACQUIRE_GLOBAL_LOCK #define ACPI_ACQUIRE_GLOBAL_LOCK(GLptr, Acquired) Acquired = 1 #endif #ifndef ACPI_RELEASE_GLOBAL_LOCK #define ACPI_RELEASE_GLOBAL_LOCK(GLptr, Pending) Pending = 0 #endif /* Flush CPU cache - used when going to sleep. Wbinvd or similar. */ #ifndef ACPI_FLUSH_CPU_CACHE #define ACPI_FLUSH_CPU_CACHE() #endif /* "inline" keywords - configurable since inline is not standardized */ #ifndef ACPI_INLINE #define ACPI_INLINE #endif /* * Configurable calling conventions: * * ACPI_SYSTEM_XFACE - Interfaces to host OS (handlers, threads) * ACPI_EXTERNAL_XFACE - External ACPI interfaces * ACPI_INTERNAL_XFACE - Internal ACPI interfaces * ACPI_INTERNAL_VAR_XFACE - Internal variable-parameter list interfaces */ #ifndef ACPI_SYSTEM_XFACE #define ACPI_SYSTEM_XFACE #endif #ifndef ACPI_EXTERNAL_XFACE #define ACPI_EXTERNAL_XFACE #endif #ifndef ACPI_INTERNAL_XFACE #define ACPI_INTERNAL_XFACE #endif #ifndef ACPI_INTERNAL_VAR_XFACE #define ACPI_INTERNAL_VAR_XFACE #endif /* * Debugger threading model * Use single threaded if the entire subsystem is contained in an application * Use multiple threaded when the subsystem is running in the kernel. * * By default the model is single threaded if ACPI_APPLICATION is set, * multi-threaded if ACPI_APPLICATION is not set. */ #ifndef DEBUGGER_THREADING #ifdef ACPI_APPLICATION #define DEBUGGER_THREADING DEBUGGER_SINGLE_THREADED #else #define DEBUGGER_THREADING DEBUGGER_MULTI_THREADED #endif #endif /* !DEBUGGER_THREADING */ /****************************************************************************** * * C library configuration * *****************************************************************************/ /* * ACPI_USE_SYSTEM_CLIBRARY - Define this if linking to an actual C library. * Otherwise, local versions of string/memory functions will be used. * ACPI_USE_STANDARD_HEADERS - Define this if linking to a C library and * the standard header files may be used. * * The ACPICA subsystem only uses low level C library functions that do not call * operating system services and may therefore be inlined in the code. * * It may be necessary to tailor these include files to the target * generation environment. */ #ifdef ACPI_USE_SYSTEM_CLIBRARY /* Use the standard C library headers. We want to keep these to a minimum. */ #ifdef ACPI_USE_STANDARD_HEADERS /* Use the standard headers from the standard locations */ #include #include #include #include #endif /* ACPI_USE_STANDARD_HEADERS */ /* We will be linking to the standard Clib functions */ #define ACPI_STRSTR(s1,s2) strstr((s1), (s2)) #define ACPI_STRCHR(s1,c) strchr((s1), (c)) #define ACPI_STRLEN(s) (ACPI_SIZE) strlen((s)) #define ACPI_STRCPY(d,s) (void) strcpy((d), (s)) #define ACPI_STRNCPY(d,s,n) (void) strncpy((d), (s), (ACPI_SIZE)(n)) #define ACPI_STRNCMP(d,s,n) strncmp((d), (s), (ACPI_SIZE)(n)) #define ACPI_STRCMP(d,s) strcmp((d), (s)) #define ACPI_STRCAT(d,s) (void) strcat((d), (s)) #define ACPI_STRNCAT(d,s,n) strncat((d), (s), (ACPI_SIZE)(n)) #define ACPI_STRTOUL(d,s,n) strtoul((d), (s), (ACPI_SIZE)(n)) #define ACPI_MEMCMP(s1,s2,n) memcmp((const char *)(s1), (const char *)(s2), (ACPI_SIZE)(n)) #define ACPI_MEMCPY(d,s,n) (void) memcpy((d), (s), (ACPI_SIZE)(n)) #define ACPI_MEMSET(d,s,n) (void) memset((d), (s), (ACPI_SIZE)(n)) #define ACPI_TOUPPER(i) toupper((int) (i)) #define ACPI_TOLOWER(i) tolower((int) (i)) #define ACPI_IS_XDIGIT(i) isxdigit((int) (i)) #define ACPI_IS_DIGIT(i) isdigit((int) (i)) #define ACPI_IS_SPACE(i) isspace((int) (i)) #define ACPI_IS_UPPER(i) isupper((int) (i)) #define ACPI_IS_PRINT(i) isprint((int) (i)) #define ACPI_IS_ALPHA(i) isalpha((int) (i)) #else /****************************************************************************** * * Not using native C library, use local implementations * *****************************************************************************/ /* * Use local definitions of C library macros and functions. These function * implementations may not be as efficient as an inline or assembly code * implementation provided by a native C library, but they are functionally * equivalent. */ #ifndef va_arg #ifndef _VALIST #define _VALIST typedef char *va_list; #endif /* _VALIST */ /* Storage alignment properties */ #define _AUPBND (sizeof (ACPI_NATIVE_INT) - 1) #define _ADNBND (sizeof (ACPI_NATIVE_INT) - 1) /* Variable argument list macro definitions */ #define _Bnd(X, bnd) (((sizeof (X)) + (bnd)) & (~(bnd))) #define va_arg(ap, T) (*(T *)(((ap) += (_Bnd (T, _AUPBND))) - (_Bnd (T,_ADNBND)))) #define va_end(ap) (ap = (va_list) NULL) #define va_start(ap, A) (void) ((ap) = (((char *) &(A)) + (_Bnd (A,_AUPBND)))) #endif /* va_arg */ /* Use the local (ACPICA) definitions of the clib functions */ #define ACPI_STRSTR(s1,s2) AcpiUtStrstr ((s1), (s2)) #define ACPI_STRCHR(s1,c) AcpiUtStrchr ((s1), (c)) #define ACPI_STRLEN(s) (ACPI_SIZE) AcpiUtStrlen ((s)) #define ACPI_STRCPY(d,s) (void) AcpiUtStrcpy ((d), (s)) #define ACPI_STRNCPY(d,s,n) (void) AcpiUtStrncpy ((d), (s), (ACPI_SIZE)(n)) #define ACPI_STRNCMP(d,s,n) AcpiUtStrncmp ((d), (s), (ACPI_SIZE)(n)) #define ACPI_STRCMP(d,s) AcpiUtStrcmp ((d), (s)) #define ACPI_STRCAT(d,s) (void) AcpiUtStrcat ((d), (s)) #define ACPI_STRNCAT(d,s,n) AcpiUtStrncat ((d), (s), (ACPI_SIZE)(n)) #define ACPI_STRTOUL(d,s,n) AcpiUtStrtoul ((d), (s), (ACPI_SIZE)(n)) #define ACPI_MEMCMP(s1,s2,n) AcpiUtMemcmp((const char *)(s1), (const char *)(s2), (ACPI_SIZE)(n)) #define ACPI_MEMCPY(d,s,n) (void) AcpiUtMemcpy ((d), (s), (ACPI_SIZE)(n)) #define ACPI_MEMSET(d,v,n) (void) AcpiUtMemset ((d), (v), (ACPI_SIZE)(n)) #define ACPI_TOUPPER(c) AcpiUtToUpper ((int) (c)) #define ACPI_TOLOWER(c) AcpiUtToLower ((int) (c)) #endif /* ACPI_USE_SYSTEM_CLIBRARY */ #ifndef ACPI_FILE #ifdef ACPI_APPLICATION #include #define ACPI_FILE FILE * #else #define ACPI_FILE void * #endif /* ACPI_APPLICATION */ #endif /* ACPI_FILE */ #endif /* __ACENV_H__ */ src/acpica/source/include/platform/acgcc.h000066400000000000000000000163101231470457100210520ustar00rootroot00000000000000/****************************************************************************** * * Name: acgcc.h - GCC specific defines, etc. * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #ifndef __ACGCC_H__ #define __ACGCC_H__ #define ACPI_INLINE __inline__ /* Function name is used for debug output. Non-ANSI, compiler-dependent */ #define ACPI_GET_FUNCTION_NAME __func__ /* * This macro is used to tag functions as "printf-like" because * some compilers (like GCC) can catch printf format string problems. */ #define ACPI_PRINTF_LIKE(c) __attribute__ ((__format__ (__printf__, c, c+1))) /* * Some compilers complain about unused variables. Sometimes we don't want to * use all the variables (for example, _AcpiModuleName). This allows us * to tell the compiler warning in a per-variable manner that a variable * is unused. */ #define ACPI_UNUSED_VAR __attribute__ ((unused)) /* * Some versions of gcc implement strchr() with a buggy macro. So, * undef it here. Prevents error messages of this form (usually from the * file getopt.c): * * error: logical '&&' with non-zero constant will always evaluate as true */ #ifdef strchr #undef strchr #endif #endif /* __ACGCC_H__ */ src/acpica/source/include/platform/aclinux.h000066400000000000000000000277271231470457100214730ustar00rootroot00000000000000/****************************************************************************** * * Name: aclinux.h - OS specific defines, etc. for Linux * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #ifndef __ACLINUX_H__ #define __ACLINUX_H__ /* Common (in-kernel/user-space) ACPICA configuration */ #define ACPI_USE_SYSTEM_CLIBRARY #define ACPI_USE_DO_WHILE_0 #define ACPI_MUTEX_TYPE ACPI_BINARY_SEMAPHORE #ifdef __KERNEL__ #include #include #include #include #include #include #include #include #ifdef EXPORT_ACPI_INTERFACES #include #endif #include /* Host-dependent types and defines for in-kernel ACPICA */ #define ACPI_MACHINE_WIDTH BITS_PER_LONG #define ACPI_EXPORT_SYMBOL(symbol) EXPORT_SYMBOL(symbol); #define strtoul simple_strtoul #define ACPI_CACHE_T struct kmem_cache #define ACPI_SPINLOCK spinlock_t * #define ACPI_CPU_FLAGS unsigned long #else /* !__KERNEL__ */ #include #include #include #include #include /* Define/disable kernel-specific declarators */ #ifndef __init #define __init #endif #ifndef __iomem #define __iomem #endif /* Host-dependent types and defines for user-space ACPICA */ #define ACPI_FLUSH_CPU_CACHE() #define ACPI_CAST_PTHREAD_T(Pthread) ((ACPI_THREAD_ID) (Pthread)) #if defined(__ia64__) || defined(__x86_64__) ||\ defined(__aarch64__) || defined(__PPC64__) #define ACPI_MACHINE_WIDTH 64 #define COMPILER_DEPENDENT_INT64 long #define COMPILER_DEPENDENT_UINT64 unsigned long #else #define ACPI_MACHINE_WIDTH 32 #define COMPILER_DEPENDENT_INT64 long long #define COMPILER_DEPENDENT_UINT64 unsigned long long #define ACPI_USE_NATIVE_DIVIDE #endif #ifndef __cdecl #define __cdecl #endif #endif /* __KERNEL__ */ /* Linux uses GCC */ #include "acgcc.h" #ifdef __KERNEL__ /* * FIXME: Inclusion of actypes.h * Linux kernel need this before defining inline OSL interfaces as * actypes.h need to be included to find ACPICA type definitions. * Since from ACPICA's perspective, the actypes.h should be included after * acenv.h (aclinux.h), this leads to a inclusion mis-ordering issue. */ #include /* * Overrides for in-kernel ACPICA */ ACPI_STATUS __init AcpiOsInitialize ( void); #define ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsInitialize ACPI_STATUS AcpiOsTerminate ( void); #define ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsTerminate /* * Memory allocation/deallocation */ /* * The irqs_disabled() check is for resume from RAM. * Interrupts are off during resume, just like they are for boot. * However, boot has (system_state != SYSTEM_RUNNING) * to quiet __might_sleep() in kmalloc() and resume does not. */ static inline void * AcpiOsAllocate ( ACPI_SIZE Size) { return kmalloc (Size, irqs_disabled () ? GFP_ATOMIC : GFP_KERNEL); } #define ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsAllocate /* Use native linux version of AcpiOsAllocateZeroed */ static inline void * AcpiOsAllocateZeroed ( ACPI_SIZE Size) { return kzalloc (Size, irqs_disabled () ? GFP_ATOMIC : GFP_KERNEL); } #define ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsAllocateZeroed #define USE_NATIVE_ALLOCATE_ZEROED static inline void AcpiOsFree ( void *Memory) { kfree (Memory); } #define ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsFree static inline void * AcpiOsAcquireObject ( ACPI_CACHE_T *Cache) { return kmem_cache_zalloc (Cache, irqs_disabled () ? GFP_ATOMIC : GFP_KERNEL); } #define ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsAcquireObject static inline ACPI_THREAD_ID AcpiOsGetThreadId ( void) { return (ACPI_THREAD_ID) (unsigned long) current; } #define ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsGetThreadId #ifndef CONFIG_PREEMPT /* * Used within ACPICA to show where it is safe to preempt execution * when CONFIG_PREEMPT=n */ #define ACPI_PREEMPTION_POINT() \ do { \ if (!irqs_disabled()) \ cond_resched(); \ } while (0) #endif /* * When lockdep is enabled, the spin_lock_init() macro stringifies it's * argument and uses that as a name for the lock in debugging. * By executing spin_lock_init() in a macro the key changes from "lock" for * all locks to the name of the argument of acpi_os_create_lock(), which * prevents lockdep from reporting false positives for ACPICA locks. */ #define AcpiOsCreateLock(__Handle) \ ({ \ spinlock_t *Lock = ACPI_ALLOCATE(sizeof(*Lock)); \ if (Lock) { \ *(__Handle) = Lock; \ spin_lock_init(*(__Handle)); \ } \ Lock ? AE_OK : AE_NO_MEMORY; \ }) #define ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsCreateLock void __iomem * AcpiOsMapMemory ( ACPI_PHYSICAL_ADDRESS Where, ACPI_SIZE Length); #define ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsMapMemory void AcpiOsUnmapMemory ( void __iomem *LogicalAddress, ACPI_SIZE Size); #define ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsUnmapMemory /* * OSL interfaces used by debugger/disassembler */ #define ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsReadable #define ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsWritable /* * OSL interfaces used by utilities */ #define ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsRedirectOutput #define ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsGetLine #define ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsGetTableByName #define ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsGetTableByIndex #define ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsGetTableByAddress #define ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsOpenDirectory #define ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsGetNextFilename #define ACPI_USE_ALTERNATE_PROTOTYPE_AcpiOsCloseDirectory /* * OSL interfaces added by Linux */ void EarlyAcpiOsUnmapMemory ( void __iomem *Virt, ACPI_SIZE Size); #endif /* __KERNEL__ */ #endif /* __ACLINUX_H__ */ src/acpica/source/os_specific/000077500000000000000000000000001231470457100166575ustar00rootroot00000000000000src/acpica/source/os_specific/service_layers/000077500000000000000000000000001231470457100216765ustar00rootroot00000000000000src/acpica/source/os_specific/service_layers/osunixxf.c000066400000000000000000001160471231470457100237360ustar00rootroot00000000000000/****************************************************************************** * * Module Name: osunixxf - UNIX OSL interfaces * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ /* * These interfaces are required in order to compile the ASL compiler and the * various ACPICA tools under Linux or other Unix-like system. */ #include "acpi.h" #include "accommon.h" #include "amlcode.h" #include "acparser.h" #include "acdebug.h" #include #include #include #include #include #include #include #include #define _COMPONENT ACPI_OS_SERVICES ACPI_MODULE_NAME ("osunixxf") FILE *AcpiGbl_OutputFile; BOOLEAN AcpiGbl_DebugTimeout = FALSE; /* Upcalls to AcpiExec */ ACPI_PHYSICAL_ADDRESS AeLocalGetRootPointer ( void); void AeTableOverride ( ACPI_TABLE_HEADER *ExistingTable, ACPI_TABLE_HEADER **NewTable); typedef void* (*PTHREAD_CALLBACK) (void *); /* Buffer used by AcpiOsVprintf */ #define ACPI_VPRINTF_BUFFER_SIZE 512 #define _ASCII_NEWLINE '\n' /* Terminal support for AcpiExec only */ #ifdef ACPI_EXEC_APP #include struct termios OriginalTermAttributes; ACPI_STATUS AcpiUtReadLine ( char *Buffer, UINT32 BufferLength, UINT32 *BytesRead); static void OsEnterLineEditMode ( void); static void OsExitLineEditMode ( void); /****************************************************************************** * * FUNCTION: OsEnterLineEditMode, OsExitLineEditMode * * PARAMETERS: None * * RETURN: None * * DESCRIPTION: Enter/Exit the raw character input mode for the terminal. * * Interactive line-editing support for the AML debugger. Used with the * common/acgetline module. * * readline() is not used because of non-portability. It is not available * on all systems, and if it is, often the package must be manually installed. * * Therefore, we use the POSIX tcgetattr/tcsetattr and do the minimal line * editing that we need in AcpiOsGetLine. * * If the POSIX tcgetattr/tcsetattr interfaces are unavailable, these * calls will also work: * For OsEnterLineEditMode: system ("stty cbreak -echo") * For OsExitLineEditMode: system ("stty cooked echo") * *****************************************************************************/ static void OsEnterLineEditMode ( void) { struct termios LocalTermAttributes; /* Get and keep the original attributes */ if (tcgetattr (STDIN_FILENO, &OriginalTermAttributes)) { fprintf (stderr, "Could not get/set terminal attributes!\n"); return; } /* Set the new attributes to enable raw character input */ memcpy (&LocalTermAttributes, &OriginalTermAttributes, sizeof (struct termios)); LocalTermAttributes.c_lflag &= ~(ICANON | ECHO); LocalTermAttributes.c_cc[VMIN] = 1; LocalTermAttributes.c_cc[VTIME] = 0; tcsetattr (STDIN_FILENO, TCSANOW, &LocalTermAttributes); } static void OsExitLineEditMode ( void) { /* Set terminal attributes back to the original values */ tcsetattr (STDIN_FILENO, TCSANOW, &OriginalTermAttributes); } #else /* These functions are not needed for other ACPICA utilities */ #define OsEnterLineEditMode() #define OsExitLineEditMode() #endif /****************************************************************************** * * FUNCTION: AcpiOsInitialize, AcpiOsTerminate * * PARAMETERS: None * * RETURN: Status * * DESCRIPTION: Initialize and terminate this module. * *****************************************************************************/ ACPI_STATUS AcpiOsInitialize ( void) { AcpiGbl_OutputFile = stdout; OsEnterLineEditMode (); return (AE_OK); } ACPI_STATUS AcpiOsTerminate ( void) { OsExitLineEditMode (); return (AE_OK); } /****************************************************************************** * * FUNCTION: AcpiOsGetRootPointer * * PARAMETERS: None * * RETURN: RSDP physical address * * DESCRIPTION: Gets the ACPI root pointer (RSDP) * *****************************************************************************/ ACPI_PHYSICAL_ADDRESS AcpiOsGetRootPointer ( void) { return (AeLocalGetRootPointer ()); } /****************************************************************************** * * FUNCTION: AcpiOsPredefinedOverride * * PARAMETERS: InitVal - Initial value of the predefined object * NewVal - The new value for the object * * RETURN: Status, pointer to value. Null pointer returned if not * overriding. * * DESCRIPTION: Allow the OS to override predefined names * *****************************************************************************/ ACPI_STATUS AcpiOsPredefinedOverride ( const ACPI_PREDEFINED_NAMES *InitVal, ACPI_STRING *NewVal) { if (!InitVal || !NewVal) { return (AE_BAD_PARAMETER); } *NewVal = NULL; return (AE_OK); } /****************************************************************************** * * FUNCTION: AcpiOsTableOverride * * PARAMETERS: ExistingTable - Header of current table (probably * firmware) * NewTable - Where an entire new table is returned. * * RETURN: Status, pointer to new table. Null pointer returned if no * table is available to override * * DESCRIPTION: Return a different version of a table if one is available * *****************************************************************************/ ACPI_STATUS AcpiOsTableOverride ( ACPI_TABLE_HEADER *ExistingTable, ACPI_TABLE_HEADER **NewTable) { if (!ExistingTable || !NewTable) { return (AE_BAD_PARAMETER); } *NewTable = NULL; #ifdef ACPI_EXEC_APP AeTableOverride (ExistingTable, NewTable); return (AE_OK); #else return (AE_NO_ACPI_TABLES); #endif } /****************************************************************************** * * FUNCTION: AcpiOsPhysicalTableOverride * * PARAMETERS: ExistingTable - Header of current table (probably firmware) * NewAddress - Where new table address is returned * (Physical address) * NewTableLength - Where new table length is returned * * RETURN: Status, address/length of new table. Null pointer returned * if no table is available to override. * * DESCRIPTION: Returns AE_SUPPORT, function not used in user space. * *****************************************************************************/ ACPI_STATUS AcpiOsPhysicalTableOverride ( ACPI_TABLE_HEADER *ExistingTable, ACPI_PHYSICAL_ADDRESS *NewAddress, UINT32 *NewTableLength) { return (AE_SUPPORT); } /****************************************************************************** * * FUNCTION: AcpiOsRedirectOutput * * PARAMETERS: Destination - An open file handle/pointer * * RETURN: None * * DESCRIPTION: Causes redirect of AcpiOsPrintf and AcpiOsVprintf * *****************************************************************************/ void AcpiOsRedirectOutput ( void *Destination) { AcpiGbl_OutputFile = Destination; } /****************************************************************************** * * FUNCTION: AcpiOsPrintf * * PARAMETERS: fmt, ... - Standard printf format * * RETURN: None * * DESCRIPTION: Formatted output. Note: very similar to AcpiOsVprintf * (performance), changes should be tracked in both functions. * *****************************************************************************/ void ACPI_INTERNAL_VAR_XFACE AcpiOsPrintf ( const char *Fmt, ...) { va_list Args; UINT8 Flags; Flags = AcpiGbl_DbOutputFlags; if (Flags & ACPI_DB_REDIRECTABLE_OUTPUT) { /* Output is directable to either a file (if open) or the console */ if (AcpiGbl_DebugFile) { /* Output file is open, send the output there */ va_start (Args, Fmt); vfprintf (AcpiGbl_DebugFile, Fmt, Args); va_end (Args); } else { /* No redirection, send output to console (once only!) */ Flags |= ACPI_DB_CONSOLE_OUTPUT; } } if (Flags & ACPI_DB_CONSOLE_OUTPUT) { va_start (Args, Fmt); vfprintf (AcpiGbl_OutputFile, Fmt, Args); va_end (Args); } } /****************************************************************************** * * FUNCTION: AcpiOsVprintf * * PARAMETERS: fmt - Standard printf format * args - Argument list * * RETURN: None * * DESCRIPTION: Formatted output with argument list pointer. Note: very * similar to AcpiOsPrintf, changes should be tracked in both * functions. * *****************************************************************************/ void AcpiOsVprintf ( const char *Fmt, va_list Args) { UINT8 Flags; char Buffer[ACPI_VPRINTF_BUFFER_SIZE]; /* * We build the output string in a local buffer because we may be * outputting the buffer twice. Using vfprintf is problematic because * some implementations modify the args pointer/structure during * execution. Thus, we use the local buffer for portability. * * Note: Since this module is intended for use by the various ACPICA * utilities/applications, we can safely declare the buffer on the stack. * Also, This function is used for relatively small error messages only. */ vsnprintf (Buffer, ACPI_VPRINTF_BUFFER_SIZE, Fmt, Args); Flags = AcpiGbl_DbOutputFlags; if (Flags & ACPI_DB_REDIRECTABLE_OUTPUT) { /* Output is directable to either a file (if open) or the console */ if (AcpiGbl_DebugFile) { /* Output file is open, send the output there */ fputs (Buffer, AcpiGbl_DebugFile); } else { /* No redirection, send output to console (once only!) */ Flags |= ACPI_DB_CONSOLE_OUTPUT; } } if (Flags & ACPI_DB_CONSOLE_OUTPUT) { fputs (Buffer, AcpiGbl_OutputFile); } } #ifndef ACPI_EXEC_APP /****************************************************************************** * * FUNCTION: AcpiOsGetLine * * PARAMETERS: Buffer - Where to return the command line * BufferLength - Maximum length of Buffer * BytesRead - Where the actual byte count is returned * * RETURN: Status and actual bytes read * * DESCRIPTION: Get the next input line from the terminal. NOTE: For the * AcpiExec utility, we use the acgetline module instead to * provide line-editing and history support. * *****************************************************************************/ ACPI_STATUS AcpiOsGetLine ( char *Buffer, UINT32 BufferLength, UINT32 *BytesRead) { int InputChar; UINT32 EndOfLine; /* Standard AcpiOsGetLine for all utilities except AcpiExec */ for (EndOfLine = 0; ; EndOfLine++) { if (EndOfLine >= BufferLength) { return (AE_BUFFER_OVERFLOW); } if ((InputChar = getchar ()) == EOF) { return (AE_ERROR); } if (!InputChar || InputChar == _ASCII_NEWLINE) { break; } Buffer[EndOfLine] = (char) InputChar; } /* Null terminate the buffer */ Buffer[EndOfLine] = 0; /* Return the number of bytes in the string */ if (BytesRead) { *BytesRead = EndOfLine; } return (AE_OK); } #endif /****************************************************************************** * * FUNCTION: AcpiOsMapMemory * * PARAMETERS: where - Physical address of memory to be mapped * length - How much memory to map * * RETURN: Pointer to mapped memory. Null on error. * * DESCRIPTION: Map physical memory into caller's address space * *****************************************************************************/ void * AcpiOsMapMemory ( ACPI_PHYSICAL_ADDRESS where, ACPI_SIZE length) { return (ACPI_TO_POINTER ((ACPI_SIZE) where)); } /****************************************************************************** * * FUNCTION: AcpiOsUnmapMemory * * PARAMETERS: where - Logical address of memory to be unmapped * length - How much memory to unmap * * RETURN: None. * * DESCRIPTION: Delete a previously created mapping. Where and Length must * correspond to a previous mapping exactly. * *****************************************************************************/ void AcpiOsUnmapMemory ( void *where, ACPI_SIZE length) { return; } /****************************************************************************** * * FUNCTION: AcpiOsAllocate * * PARAMETERS: Size - Amount to allocate, in bytes * * RETURN: Pointer to the new allocation. Null on error. * * DESCRIPTION: Allocate memory. Algorithm is dependent on the OS. * *****************************************************************************/ void * AcpiOsAllocate ( ACPI_SIZE size) { void *Mem; Mem = (void *) malloc ((size_t) size); return (Mem); } /****************************************************************************** * * FUNCTION: AcpiOsFree * * PARAMETERS: mem - Pointer to previously allocated memory * * RETURN: None. * * DESCRIPTION: Free memory allocated via AcpiOsAllocate * *****************************************************************************/ void AcpiOsFree ( void *mem) { free (mem); } #ifdef ACPI_SINGLE_THREADED /****************************************************************************** * * FUNCTION: Semaphore stub functions * * DESCRIPTION: Stub functions used for single-thread applications that do * not require semaphore synchronization. Full implementations * of these functions appear after the stubs. * *****************************************************************************/ ACPI_STATUS AcpiOsCreateSemaphore ( UINT32 MaxUnits, UINT32 InitialUnits, ACPI_HANDLE *OutHandle) { *OutHandle = (ACPI_HANDLE) 1; return (AE_OK); } ACPI_STATUS AcpiOsDeleteSemaphore ( ACPI_HANDLE Handle) { return (AE_OK); } ACPI_STATUS AcpiOsWaitSemaphore ( ACPI_HANDLE Handle, UINT32 Units, UINT16 Timeout) { return (AE_OK); } ACPI_STATUS AcpiOsSignalSemaphore ( ACPI_HANDLE Handle, UINT32 Units) { return (AE_OK); } #else /****************************************************************************** * * FUNCTION: AcpiOsCreateSemaphore * * PARAMETERS: InitialUnits - Units to be assigned to the new semaphore * OutHandle - Where a handle will be returned * * RETURN: Status * * DESCRIPTION: Create an OS semaphore * *****************************************************************************/ ACPI_STATUS AcpiOsCreateSemaphore ( UINT32 MaxUnits, UINT32 InitialUnits, ACPI_HANDLE *OutHandle) { sem_t *Sem; if (!OutHandle) { return (AE_BAD_PARAMETER); } #ifdef __APPLE__ { char *SemaphoreName = tmpnam (NULL); Sem = sem_open (SemaphoreName, O_EXCL|O_CREAT, 0755, InitialUnits); if (!Sem) { return (AE_NO_MEMORY); } sem_unlink (SemaphoreName); /* This just deletes the name */ } #else Sem = AcpiOsAllocate (sizeof (sem_t)); if (!Sem) { return (AE_NO_MEMORY); } if (sem_init (Sem, 0, InitialUnits) == -1) { AcpiOsFree (Sem); return (AE_BAD_PARAMETER); } #endif *OutHandle = (ACPI_HANDLE) Sem; return (AE_OK); } /****************************************************************************** * * FUNCTION: AcpiOsDeleteSemaphore * * PARAMETERS: Handle - Handle returned by AcpiOsCreateSemaphore * * RETURN: Status * * DESCRIPTION: Delete an OS semaphore * *****************************************************************************/ ACPI_STATUS AcpiOsDeleteSemaphore ( ACPI_HANDLE Handle) { sem_t *Sem = (sem_t *) Handle; if (!Sem) { return (AE_BAD_PARAMETER); } if (sem_destroy (Sem) == -1) { return (AE_BAD_PARAMETER); } return (AE_OK); } /****************************************************************************** * * FUNCTION: AcpiOsWaitSemaphore * * PARAMETERS: Handle - Handle returned by AcpiOsCreateSemaphore * Units - How many units to wait for * MsecTimeout - How long to wait (milliseconds) * * RETURN: Status * * DESCRIPTION: Wait for units * *****************************************************************************/ ACPI_STATUS AcpiOsWaitSemaphore ( ACPI_HANDLE Handle, UINT32 Units, UINT16 MsecTimeout) { ACPI_STATUS Status = AE_OK; sem_t *Sem = (sem_t *) Handle; #ifndef ACPI_USE_ALTERNATE_TIMEOUT struct timespec Time; int RetVal; #endif if (!Sem) { return (AE_BAD_PARAMETER); } switch (MsecTimeout) { /* * No Wait: * -------- * A zero timeout value indicates that we shouldn't wait - just * acquire the semaphore if available otherwise return AE_TIME * (a.k.a. 'would block'). */ case 0: if (sem_trywait(Sem) == -1) { Status = (AE_TIME); } break; /* Wait Indefinitely */ case ACPI_WAIT_FOREVER: if (sem_wait (Sem)) { Status = (AE_TIME); } break; /* Wait with MsecTimeout */ default: #ifdef ACPI_USE_ALTERNATE_TIMEOUT /* * Alternate timeout mechanism for environments where * sem_timedwait is not available or does not work properly. */ while (MsecTimeout) { if (sem_trywait (Sem) == 0) { /* Got the semaphore */ return (AE_OK); } if (MsecTimeout >= 10) { MsecTimeout -= 10; usleep (10 * ACPI_USEC_PER_MSEC); /* ten milliseconds */ } else { MsecTimeout--; usleep (ACPI_USEC_PER_MSEC); /* one millisecond */ } } Status = (AE_TIME); #else /* * The interface to sem_timedwait is an absolute time, so we need to * get the current time, then add in the millisecond Timeout value. */ if (clock_gettime (CLOCK_REALTIME, &Time) == -1) { perror ("clock_gettime"); return (AE_TIME); } Time.tv_sec += (MsecTimeout / ACPI_MSEC_PER_SEC); Time.tv_nsec += ((MsecTimeout % ACPI_MSEC_PER_SEC) * ACPI_NSEC_PER_MSEC); /* Handle nanosecond overflow (field must be less than one second) */ if (Time.tv_nsec >= ACPI_NSEC_PER_SEC) { Time.tv_sec += (Time.tv_nsec / ACPI_NSEC_PER_SEC); Time.tv_nsec = (Time.tv_nsec % ACPI_NSEC_PER_SEC); } while (((RetVal = sem_timedwait (Sem, &Time)) == -1) && (errno == EINTR)) { continue; } if (RetVal != 0) { if (errno != ETIMEDOUT) { perror ("sem_timedwait"); } Status = (AE_TIME); } #endif break; } return (Status); } /****************************************************************************** * * FUNCTION: AcpiOsSignalSemaphore * * PARAMETERS: Handle - Handle returned by AcpiOsCreateSemaphore * Units - Number of units to send * * RETURN: Status * * DESCRIPTION: Send units * *****************************************************************************/ ACPI_STATUS AcpiOsSignalSemaphore ( ACPI_HANDLE Handle, UINT32 Units) { sem_t *Sem = (sem_t *)Handle; if (!Sem) { return (AE_BAD_PARAMETER); } if (sem_post (Sem) == -1) { return (AE_LIMIT); } return (AE_OK); } #endif /* ACPI_SINGLE_THREADED */ /****************************************************************************** * * FUNCTION: Spinlock interfaces * * DESCRIPTION: Map these interfaces to semaphore interfaces * *****************************************************************************/ ACPI_STATUS AcpiOsCreateLock ( ACPI_SPINLOCK *OutHandle) { return (AcpiOsCreateSemaphore (1, 1, OutHandle)); } void AcpiOsDeleteLock ( ACPI_SPINLOCK Handle) { AcpiOsDeleteSemaphore (Handle); } ACPI_CPU_FLAGS AcpiOsAcquireLock ( ACPI_HANDLE Handle) { AcpiOsWaitSemaphore (Handle, 1, 0xFFFF); return (0); } void AcpiOsReleaseLock ( ACPI_SPINLOCK Handle, ACPI_CPU_FLAGS Flags) { AcpiOsSignalSemaphore (Handle, 1); } /****************************************************************************** * * FUNCTION: AcpiOsInstallInterruptHandler * * PARAMETERS: InterruptNumber - Level handler should respond to. * Isr - Address of the ACPI interrupt handler * ExceptPtr - Where status is returned * * RETURN: Handle to the newly installed handler. * * DESCRIPTION: Install an interrupt handler. Used to install the ACPI * OS-independent handler. * *****************************************************************************/ UINT32 AcpiOsInstallInterruptHandler ( UINT32 InterruptNumber, ACPI_OSD_HANDLER ServiceRoutine, void *Context) { return (AE_OK); } /****************************************************************************** * * FUNCTION: AcpiOsRemoveInterruptHandler * * PARAMETERS: Handle - Returned when handler was installed * * RETURN: Status * * DESCRIPTION: Uninstalls an interrupt handler. * *****************************************************************************/ ACPI_STATUS AcpiOsRemoveInterruptHandler ( UINT32 InterruptNumber, ACPI_OSD_HANDLER ServiceRoutine) { return (AE_OK); } /****************************************************************************** * * FUNCTION: AcpiOsStall * * PARAMETERS: microseconds - Time to sleep * * RETURN: Blocks until sleep is completed. * * DESCRIPTION: Sleep at microsecond granularity * *****************************************************************************/ void AcpiOsStall ( UINT32 microseconds) { if (microseconds) { usleep (microseconds); } } /****************************************************************************** * * FUNCTION: AcpiOsSleep * * PARAMETERS: milliseconds - Time to sleep * * RETURN: Blocks until sleep is completed. * * DESCRIPTION: Sleep at millisecond granularity * *****************************************************************************/ void AcpiOsSleep ( UINT64 milliseconds) { /* Sleep for whole seconds */ sleep (milliseconds / ACPI_MSEC_PER_SEC); /* * Sleep for remaining microseconds. * Arg to usleep() is in usecs and must be less than 1,000,000 (1 second). */ usleep ((milliseconds % ACPI_MSEC_PER_SEC) * ACPI_USEC_PER_MSEC); } /****************************************************************************** * * FUNCTION: AcpiOsGetTimer * * PARAMETERS: None * * RETURN: Current time in 100 nanosecond units * * DESCRIPTION: Get the current system time * *****************************************************************************/ UINT64 AcpiOsGetTimer ( void) { struct timeval time; /* This timer has sufficient resolution for user-space application code */ gettimeofday (&time, NULL); /* (Seconds * 10^7 = 100ns(10^-7)) + (Microseconds(10^-6) * 10^1 = 100ns) */ return (((UINT64) time.tv_sec * ACPI_100NSEC_PER_SEC) + ((UINT64) time.tv_usec * ACPI_100NSEC_PER_USEC)); } /****************************************************************************** * * FUNCTION: AcpiOsReadPciConfiguration * * PARAMETERS: PciId - Seg/Bus/Dev * Register - Device Register * Value - Buffer where value is placed * Width - Number of bits * * RETURN: Status * * DESCRIPTION: Read data from PCI configuration space * *****************************************************************************/ ACPI_STATUS AcpiOsReadPciConfiguration ( ACPI_PCI_ID *PciId, UINT32 Register, UINT64 *Value, UINT32 Width) { *Value = 0; return (AE_OK); } /****************************************************************************** * * FUNCTION: AcpiOsWritePciConfiguration * * PARAMETERS: PciId - Seg/Bus/Dev * Register - Device Register * Value - Value to be written * Width - Number of bits * * RETURN: Status. * * DESCRIPTION: Write data to PCI configuration space * *****************************************************************************/ ACPI_STATUS AcpiOsWritePciConfiguration ( ACPI_PCI_ID *PciId, UINT32 Register, UINT64 Value, UINT32 Width) { return (AE_OK); } /****************************************************************************** * * FUNCTION: AcpiOsReadPort * * PARAMETERS: Address - Address of I/O port/register to read * Value - Where value is placed * Width - Number of bits * * RETURN: Value read from port * * DESCRIPTION: Read data from an I/O port or register * *****************************************************************************/ ACPI_STATUS AcpiOsReadPort ( ACPI_IO_ADDRESS Address, UINT32 *Value, UINT32 Width) { switch (Width) { case 8: *Value = 0xFF; break; case 16: *Value = 0xFFFF; break; case 32: *Value = 0xFFFFFFFF; break; default: return (AE_BAD_PARAMETER); } return (AE_OK); } /****************************************************************************** * * FUNCTION: AcpiOsWritePort * * PARAMETERS: Address - Address of I/O port/register to write * Value - Value to write * Width - Number of bits * * RETURN: None * * DESCRIPTION: Write data to an I/O port or register * *****************************************************************************/ ACPI_STATUS AcpiOsWritePort ( ACPI_IO_ADDRESS Address, UINT32 Value, UINT32 Width) { return (AE_OK); } /****************************************************************************** * * FUNCTION: AcpiOsReadMemory * * PARAMETERS: Address - Physical Memory Address to read * Value - Where value is placed * Width - Number of bits (8,16,32, or 64) * * RETURN: Value read from physical memory address. Always returned * as a 64-bit integer, regardless of the read width. * * DESCRIPTION: Read data from a physical memory address * *****************************************************************************/ ACPI_STATUS AcpiOsReadMemory ( ACPI_PHYSICAL_ADDRESS Address, UINT64 *Value, UINT32 Width) { switch (Width) { case 8: case 16: case 32: case 64: *Value = 0; break; default: return (AE_BAD_PARAMETER); } return (AE_OK); } /****************************************************************************** * * FUNCTION: AcpiOsWriteMemory * * PARAMETERS: Address - Physical Memory Address to write * Value - Value to write * Width - Number of bits (8,16,32, or 64) * * RETURN: None * * DESCRIPTION: Write data to a physical memory address * *****************************************************************************/ ACPI_STATUS AcpiOsWriteMemory ( ACPI_PHYSICAL_ADDRESS Address, UINT64 Value, UINT32 Width) { return (AE_OK); } /****************************************************************************** * * FUNCTION: AcpiOsReadable * * PARAMETERS: Pointer - Area to be verified * Length - Size of area * * RETURN: TRUE if readable for entire length * * DESCRIPTION: Verify that a pointer is valid for reading * *****************************************************************************/ BOOLEAN AcpiOsReadable ( void *Pointer, ACPI_SIZE Length) { return (TRUE); } /****************************************************************************** * * FUNCTION: AcpiOsWritable * * PARAMETERS: Pointer - Area to be verified * Length - Size of area * * RETURN: TRUE if writable for entire length * * DESCRIPTION: Verify that a pointer is valid for writing * *****************************************************************************/ BOOLEAN AcpiOsWritable ( void *Pointer, ACPI_SIZE Length) { return (TRUE); } /****************************************************************************** * * FUNCTION: AcpiOsSignal * * PARAMETERS: Function - ACPI A signal function code * Info - Pointer to function-dependent structure * * RETURN: Status * * DESCRIPTION: Miscellaneous functions. Example implementation only. * *****************************************************************************/ ACPI_STATUS AcpiOsSignal ( UINT32 Function, void *Info) { switch (Function) { case ACPI_SIGNAL_FATAL: break; case ACPI_SIGNAL_BREAKPOINT: break; default: break; } return (AE_OK); } /* Optional multi-thread support */ #ifndef ACPI_SINGLE_THREADED /****************************************************************************** * * FUNCTION: AcpiOsGetThreadId * * PARAMETERS: None * * RETURN: Id of the running thread * * DESCRIPTION: Get the ID of the current (running) thread * *****************************************************************************/ ACPI_THREAD_ID AcpiOsGetThreadId ( void) { pthread_t thread; thread = pthread_self(); return (ACPI_CAST_PTHREAD_T (thread)); } /****************************************************************************** * * FUNCTION: AcpiOsExecute * * PARAMETERS: Type - Type of execution * Function - Address of the function to execute * Context - Passed as a parameter to the function * * RETURN: Status. * * DESCRIPTION: Execute a new thread * *****************************************************************************/ ACPI_STATUS AcpiOsExecute ( ACPI_EXECUTE_TYPE Type, ACPI_OSD_EXEC_CALLBACK Function, void *Context) { pthread_t thread; int ret; ret = pthread_create (&thread, NULL, (PTHREAD_CALLBACK) Function, Context); if (ret) { AcpiOsPrintf("Create thread failed"); } return (0); } #endif /* ACPI_SINGLE_THREADED */ /****************************************************************************** * * FUNCTION: AcpiOsWaitEventsComplete * * PARAMETERS: None * * RETURN: None * * DESCRIPTION: Wait for all asynchronous events to complete. This * implementation does nothing. * *****************************************************************************/ void AcpiOsWaitEventsComplete ( void) { return; } src/acpica/source/tools/000077500000000000000000000000001231470457100155315ustar00rootroot00000000000000src/acpica/source/tools/acpiexec/000077500000000000000000000000001231470457100173125ustar00rootroot00000000000000src/acpica/source/tools/acpiexec/aecommon.h000066400000000000000000000230011231470457100212550ustar00rootroot00000000000000/****************************************************************************** * * Module Name: aecommon - common include for the AcpiExec utility * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #ifndef _AECOMMON #define _AECOMMON #ifdef _MSC_VER /* disable some level-4 warnings */ #pragma warning(disable:4100) /* warning C4100: unreferenced formal parameter */ #endif #include "acpi.h" #include "accommon.h" #include "acparser.h" #include "amlcode.h" #include "acnamesp.h" #include "acdebug.h" #include "actables.h" #include "acinterp.h" #include "acapps.h" #include #include #include #include extern BOOLEAN AcpiGbl_IgnoreErrors; extern UINT8 AcpiGbl_RegionFillValue; extern UINT8 AcpiGbl_UseHwReducedFadt; extern BOOLEAN AcpiGbl_DisplayRegionAccess; extern BOOLEAN AcpiGbl_DoInterfaceTests; extern BOOLEAN AcpiGbl_LoadTestTables; /* Check for unexpected exceptions */ #define AE_CHECK_STATUS(Name, Status, Expected) \ if (Status != Expected) \ { \ AcpiOsPrintf ("Unexpected %s from %s (%s-%d)\n", \ AcpiFormatException (Status), #Name, _AcpiModuleName, __LINE__); \ } /* Check for unexpected non-AE_OK errors */ #define AE_CHECK_OK(Name, Status) AE_CHECK_STATUS (Name, Status, AE_OK); typedef struct ae_table_desc { ACPI_TABLE_HEADER *Table; struct ae_table_desc *Next; } AE_TABLE_DESC; /* * Debug Regions */ typedef struct ae_region { ACPI_PHYSICAL_ADDRESS Address; UINT32 Length; void *Buffer; void *NextRegion; UINT8 SpaceId; } AE_REGION; typedef struct ae_debug_regions { UINT32 NumberOfRegions; AE_REGION *RegionList; } AE_DEBUG_REGIONS; #define TEST_OUTPUT_LEVEL(lvl) if ((lvl) & OutputLevel) #define OSD_PRINT(lvl,fp) TEST_OUTPUT_LEVEL(lvl) {\ AcpiOsPrintf PARAM_LIST(fp);} void ACPI_SYSTEM_XFACE AeCtrlCHandler ( int Sig); ACPI_STATUS AeBuildLocalTables ( UINT32 TableCount, AE_TABLE_DESC *TableList); ACPI_STATUS AeInstallTables ( void); void AeDumpNamespace ( void); void AeDumpObject ( char *MethodName, ACPI_BUFFER *ReturnObj); void AeDumpBuffer ( UINT32 Address); void AeExecute ( char *Name); void AeSetScope ( char *Name); void AeCloseDebugFile ( void); void AeOpenDebugFile ( char *Name); ACPI_STATUS AeDisplayAllMethods ( UINT32 DisplayCount); ACPI_STATUS AeInstallEarlyHandlers ( void); ACPI_STATUS AeInstallLateHandlers ( void); void AeMiscellaneousTests ( void); ACPI_STATUS AeRegionHandler ( UINT32 Function, ACPI_PHYSICAL_ADDRESS Address, UINT32 BitWidth, UINT64 *Value, void *HandlerContext, void *RegionContext); UINT32 AeGpeHandler ( ACPI_HANDLE GpeDevice, UINT32 GpeNumber, void *Context); void AeGlobalEventHandler ( UINT32 Type, ACPI_HANDLE GpeDevice, UINT32 EventNumber, void *Context); #endif /* _AECOMMON */ src/acpica/source/tools/acpiexec/aehandlers.c000066400000000000000000001477251231470457100216040ustar00rootroot00000000000000/****************************************************************************** * * Module Name: aehandlers - Various handlers for acpiexec * *****************************************************************************/ /****************************************************************************** * * 1. Copyright Notice * * Some or all of this work - Copyright (c) 1999 - 2014, Intel Corp. * All rights reserved. * * 2. License * * 2.1. This is your license from Intel Corp. under its intellectual property * rights. You may have additional license terms from the party that provided * you this software, covering your right to use that party's intellectual * property rights. * * 2.2. Intel grants, free of charge, to any person ("Licensee") obtaining a * copy of the source code appearing in this file ("Covered Code") an * irrevocable, perpetual, worldwide license under Intel's copyrights in the * base code distributed originally by Intel ("Original Intel Code") to copy, * make derivatives, distribute, use and display any portion of the Covered * Code in any form, with the right to sublicense such rights; and * * 2.3. Intel grants Licensee a non-exclusive and non-transferable patent * license (with the right to sublicense), under only those claims of Intel * patents that are infringed by the Original Intel Code, to make, use, sell, * offer to sell, and import the Covered Code and derivative works thereof * solely to the minimum extent necessary to exercise the above copyright * license, and in no event shall the patent license extend to any additions * to or modifications of the Original Intel Code. No other license or right * is granted directly or by implication, estoppel or otherwise; * * The above copyright and patent license is granted only if the following * conditions are met: * * 3. Conditions * * 3.1. Redistribution of Source with Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification with rights to further distribute source must include * the above Copyright Notice, the above License, this list of Conditions, * and the following Disclaimer and Export Compliance provision. In addition, * Licensee must cause all Covered Code to which Licensee contributes to * contain a file documenting the changes Licensee made to create that Covered * Code and the date of any change. Licensee must include in that file the * documentation of any changes made by any predecessor Licensee. Licensee * must include a prominent statement that the modification is derived, * directly or indirectly, from Original Intel Code. * * 3.2. Redistribution of Source with no Rights to Further Distribute Source. * Redistribution of source code of any substantial portion of the Covered * Code or modification without rights to further distribute source must * include the following Disclaimer and Export Compliance provision in the * documentation and/or other materials provided with distribution. In * addition, Licensee may not authorize further sublicense of source of any * portion of the Covered Code, and must include terms to the effect that the * license from Licensee to its licensee is limited to the intellectual * property embodied in the software Licensee provides to its licensee, and * not to intellectual property embodied in modifications its licensee may * make. * * 3.3. Redistribution of Executable. Redistribution in executable form of any * substantial portion of the Covered Code or modification must reproduce the * above Copyright Notice, and the following Disclaimer and Export Compliance * provision in the documentation and/or other materials provided with the * distribution. * * 3.4. Intel retains all right, title, and interest in and to the Original * Intel Code. * * 3.5. Neither the name Intel nor any other trademark owned or controlled by * Intel shall be used in advertising or otherwise to promote the sale, use or * other dealings in products derived from or relating to the Covered Code * without prior written authorization from Intel. * * 4. Disclaimer and Export Compliance * * 4.1. INTEL MAKES NO WARRANTY OF ANY KIND REGARDING ANY SOFTWARE PROVIDED * HERE. ANY SOFTWARE ORIGINATING FROM INTEL OR DERIVED FROM INTEL SOFTWARE * IS PROVIDED "AS IS," AND INTEL WILL NOT PROVIDE ANY SUPPORT, ASSISTANCE, * INSTALLATION, TRAINING OR OTHER SERVICES. INTEL WILL NOT PROVIDE ANY * UPDATES, ENHANCEMENTS OR EXTENSIONS. INTEL SPECIFICALLY DISCLAIMS ANY * IMPLIED WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT AND FITNESS FOR A * PARTICULAR PURPOSE. * * 4.2. IN NO EVENT SHALL INTEL HAVE ANY LIABILITY TO LICENSEE, ITS LICENSEES * OR ANY OTHER THIRD PARTY, FOR ANY LOST PROFITS, LOST DATA, LOSS OF USE OR * COSTS OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, OR FOR ANY INDIRECT, * SPECIAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THIS AGREEMENT, UNDER ANY * CAUSE OF ACTION OR THEORY OF LIABILITY, AND IRRESPECTIVE OF WHETHER INTEL * HAS ADVANCE NOTICE OF THE POSSIBILITY OF SUCH DAMAGES. THESE LIMITATIONS * SHALL APPLY NOTWITHSTANDING THE FAILURE OF THE ESSENTIAL PURPOSE OF ANY * LIMITED REMEDY. * * 4.3. Licensee shall not export, either directly or indirectly, any of this * software or system incorporating such software without first obtaining any * required license or other approval from the U. S. Department of Commerce or * any other agency or department of the United States Government. In the * event Licensee exports any such software from the United States or * re-exports any such software from a foreign destination, Licensee shall * ensure that the distribution and export/re-export of the software is in * compliance with all laws, regulations, orders, or other restrictions of the * U.S. Export Administration Regulations. Licensee agrees that neither it nor * any of its subsidiaries will export/re-export any technical data, process, * software, or service, directly or indirectly, to any country for which the * United States government or any agency thereof requires an export license, * other governmental approval, or letter of assurance, without first obtaining * such license, approval or letter. * *****************************************************************************/ #include "aecommon.h" #define _COMPONENT ACPI_TOOLS ACPI_MODULE_NAME ("aehandlers") /* Local prototypes */ static void AeNotifyHandler1 ( ACPI_HANDLE Device, UINT32 Value, void *Context); static void AeNotifyHandler2 ( ACPI_HANDLE Device, UINT32 Value, void *Context); static void AeCommonNotifyHandler ( ACPI_HANDLE Device, UINT32 Value, UINT32 HandlerId); static void AeDeviceNotifyHandler ( ACPI_HANDLE Device, UINT32 Value, void *Context); static ACPI_STATUS AeExceptionHandler ( ACPI_STATUS AmlStatus, ACPI_NAME Name, UINT16 Opcode, UINT32 AmlOffset, void *Context); static ACPI_STATUS AeTableHandler ( UINT32 Event, void *Table, void *Context); static ACPI_STATUS AeRegionInit ( ACPI_HANDLE RegionHandle, UINT32 Function, void *HandlerContext, void **RegionContext); static void AeAttachedDataHandler ( ACPI_HANDLE Object, void *Data); static void AeAttachedDataHandler2 ( ACPI_HANDLE Object, void *Data); static UINT32 AeInterfaceHandler ( ACPI_STRING InterfaceName, UINT32 Supported); static ACPI_STATUS AeInstallEcHandler ( ACPI_HANDLE ObjHandle, UINT32 Level, void *Context, void **ReturnValue); static ACPI_STATUS AeInstallPciHandler ( ACPI_HANDLE ObjHandle, UINT32 Level, void *Context, void **ReturnValue); static ACPI_STATUS AeInstallDeviceHandlers ( void); #if (!ACPI_REDUCED_HARDWARE) static UINT32 AeEventHandler ( void *Context); static UINT32 AeSciHandler ( void *Context); static char *TableEvents[] = { "LOAD", "UNLOAD", "UNKNOWN" }; #endif /* !ACPI_REDUCED_HARDWARE */ static UINT32 SigintCount = 0; static AE_DEBUG_REGIONS AeRegions; BOOLEAN AcpiGbl_DisplayRegionAccess = FALSE; /* * We will override some of the default region handlers, especially * the SystemMemory handler, which must be implemented locally. * These handlers are installed "early" - before any _REG methods * are executed - since they are special in the sense that the ACPI spec * declares that they must "always be available". Cannot override the * DataTable region handler either -- needed for test execution. * * NOTE: The local region handler will simulate access to these address * spaces by creating a memory buffer behind each operation region. */ static ACPI_ADR_SPACE_TYPE DefaultSpaceIdList[] = { ACPI_ADR_SPACE_SYSTEM_MEMORY, ACPI_ADR_SPACE_SYSTEM_IO, ACPI_ADR_SPACE_PCI_CONFIG, ACPI_ADR_SPACE_EC }; /* * We will install handlers for some of the various address space IDs. * Test one user-defined address space (used by aslts). */ #define ACPI_ADR_SPACE_USER_DEFINED1 0x80 #define ACPI_ADR_SPACE_USER_DEFINED2 0xE4 static ACPI_ADR_SPACE_TYPE SpaceIdList[] = { ACPI_ADR_SPACE_SMBUS, ACPI_ADR_SPACE_CMOS, ACPI_ADR_SPACE_PCI_BAR_TARGET, ACPI_ADR_SPACE_IPMI, ACPI_ADR_SPACE_GPIO, ACPI_ADR_SPACE_GSBUS, ACPI_ADR_SPACE_FIXED_HARDWARE, ACPI_ADR_SPACE_USER_DEFINED1, ACPI_ADR_SPACE_USER_DEFINED2 }; static ACPI_CONNECTION_INFO AeMyContext; /****************************************************************************** * * FUNCTION: AeCtrlCHandler * * PARAMETERS: Sig * * RETURN: none * * DESCRIPTION: Control-C handler. Abort running control method if any. * *****************************************************************************/ void ACPI_SYSTEM_XFACE AeCtrlCHandler ( int Sig) { signal (SIGINT, SIG_IGN); SigintCount++; AcpiOsPrintf ("Caught a ctrl-c (#%u)\n\n", SigintCount); if (AcpiGbl_MethodExecuting) { AcpiGbl_AbortMethod = TRUE; signal (SIGINT, AeCtrlCHandler); if (SigintCount < 10) { return; } } (void) AcpiOsTerminate (); exit (0); } /****************************************************************************** * * FUNCTION: AeNotifyHandler(s) * * PARAMETERS: Standard notify handler parameters * * RETURN: Status * * DESCRIPTION: Notify handlers for AcpiExec utility. Used by the ASL * test suite(s) to communicate errors and other information to * this utility via the Notify() operator. Tests notify handling * and multiple notify handler support. * *****************************************************************************/ static void AeNotifyHandler1 ( ACPI_HANDLE Device, UINT32 Value, void *Context) { AeCommonNotifyHandler (Device, Value, 1); } static void AeNotifyHandler2 ( ACPI_HANDLE Device, UINT32 Value, void *Context) { AeCommonNotifyHandler (Device, Value, 2); } static void AeCommonNotifyHandler ( ACPI_HANDLE Device, UINT32 Value, UINT32 HandlerId) { char *Type; Type = "Device"; if (Value <= ACPI_MAX_SYS_NOTIFY) { Type = "System"; } switch (Value) { #if 0 case 0: printf ("[AcpiExec] Method Error 0x%X: Results not equal\n", Value); if (AcpiGbl_DebugFile) { AcpiOsPrintf ("[AcpiExec] Method Error: Results not equal\n"); } break; case 1: printf ("[AcpiExec] Method Error: Incorrect numeric result\n"); if (AcpiGbl_DebugFile) { AcpiOsPrintf ("[AcpiExec] Method Error: Incorrect numeric result\n"); } break; case 2: printf ("[AcpiExec] Method Error: An operand was overwritten\n"); if (AcpiGbl_DebugFile) { AcpiOsPrintf ("[AcpiExec] Method Error: An operand was overwritten\n"); } break; #endif default: printf ("[AcpiExec] Handler %u: Received a %s Notify on [%4.4s] %p Value 0x%2.2X (%s)\n", HandlerId, Type, AcpiUtGetNodeName (Device), Device, Value, AcpiUtGetNotifyName (Value, ACPI_TYPE_ANY)); if (AcpiGbl_DebugFile) { AcpiOsPrintf ("[AcpiExec] Handler %u: Received a %s notify, Value 0x%2.2X\n", HandlerId, Type, Value); } (void) AcpiEvaluateObject (Device, "_NOT", NULL, NULL); break; } } /****************************************************************************** * * FUNCTION: AeSystemNotifyHandler * * PARAMETERS: Standard notify handler parameters * * RETURN: Status * * DESCRIPTION: System notify handler for AcpiExec utility. Used by the ASL * test suite(s) to communicate errors and other information to * this utility via the Notify() operator. * *****************************************************************************/ static void AeSystemNotifyHandler ( ACPI_HANDLE Device, UINT32 Value, void *Context) { printf ("[AcpiExec] Global: Received a System Notify on [%4.4s] %p Value 0x%2.2X (%s)\n", AcpiUtGetNodeName (Device), Device, Value, AcpiUtGetNotifyName (Value, ACPI_TYPE_ANY)); if (AcpiGbl_DebugFile) { AcpiOsPrintf ("[AcpiExec] Global: Received a System Notify, Value 0x%2.2X\n", Value); } (void) AcpiEvaluateObject (Device, "_NOT", NULL, NULL); } /****************************************************************************** * * FUNCTION: AeDeviceNotifyHandler * * PARAMETERS: Standard notify handler parameters * * RETURN: Status * * DESCRIPTION: Device notify handler for AcpiExec utility. Used by the ASL * test suite(s) to communicate errors and other information to * this utility via the Notify() operator. * *****************************************************************************/ static void AeDeviceNotifyHandler ( ACPI_HANDLE Device, UINT32 Value, void *Context) { printf ("[AcpiExec] Global: Received a Device Notify on [%4.4s] %p Value 0x%2.2X (%s)\n", AcpiUtGetNodeName (Device), Device, Value, AcpiUtGetNotifyName (Value, ACPI_TYPE_ANY)); if (AcpiGbl_DebugFile) { AcpiOsPrintf ("[AcpiExec] Global: Received a Device Notify, Value 0x%2.2X\n", Value); } (void) AcpiEvaluateObject (Device, "_NOT", NULL, NULL); } /****************************************************************************** * * FUNCTION: AeExceptionHandler * * PARAMETERS: Standard exception handler parameters * * RETURN: Status * * DESCRIPTION: System exception handler for AcpiExec utility. * *****************************************************************************/ static ACPI_STATUS AeExceptionHandler ( ACPI_STATUS AmlStatus, ACPI_NAME Name, UINT16 Opcode, UINT32 AmlOffset, void *Context) { ACPI_STATUS NewAmlStatus = AmlStatus; ACPI_STATUS Status; ACPI_BUFFER ReturnObj; ACPI_OBJECT_LIST ArgList; ACPI_OBJECT Arg[3]; const char *Exception; Exception = AcpiFormatException (AmlStatus); AcpiOsPrintf ("[AcpiExec] Exception %s during execution ", Exception); if (Name) { AcpiOsPrintf ("of method [%4.4s]", (char *) &Name); } else { AcpiOsPrintf ("at module level (table load)"); } AcpiOsPrintf (" Opcode [%s] @%X\n", AcpiPsGetOpcodeName (Opcode), AmlOffset); /* * Invoke the _ERR method if present * * Setup parameter object */ ArgList.Count = 3; ArgList.Pointer = Arg; Arg[0].Type = ACPI_TYPE_INTEGER; Arg[0].Integer.Value = AmlStatus; Arg[1].Type = ACPI_TYPE_STRING; Arg[1].String.Pointer = ACPI_CAST_PTR (char, Exception); Arg[1].String.Length = ACPI_STRLEN (Exception); Arg[2].Type = ACPI_TYPE_INTEGER; Arg[2].Integer.Value = AcpiOsGetThreadId(); /* Setup return buffer */ ReturnObj.Pointer = NULL; ReturnObj.Length = ACPI_ALLOCATE_BUFFER; Status = AcpiEvaluateObject (NULL, "\\_ERR", &ArgList, &ReturnObj); if (ACPI_SUCCESS (Status)) { if (ReturnObj.Pointer) { /* Override original status */ NewAmlStatus = (ACPI_STATUS) ((ACPI_OBJECT *) ReturnObj.Pointer)->Integer.Value; /* Free a buffer created via ACPI_ALLOCATE_BUFFER */ AcpiOsFree (ReturnObj.Pointer); } } else if (Status != AE_NOT_FOUND) { AcpiOsPrintf ("[AcpiExec] Could not execute _ERR method, %s\n", AcpiFormatException (Status)); } /* Global override */ if (AcpiGbl_IgnoreErrors) { NewAmlStatus = AE_OK; } if (NewAmlStatus != AmlStatus) { AcpiOsPrintf ("[AcpiExec] Exception override, new status %s\n", AcpiFormatException (NewAmlStatus)); } return (NewAmlStatus); } /****************************************************************************** * * FUNCTION: AeTableHandler * * PARAMETERS: Table handler * * RETURN: Status * * DESCRIPTION: System table handler for AcpiExec utility. * *****************************************************************************/ static ACPI_STATUS AeTableHandler ( UINT32 Event, void *Table, void *Context) { #if (!ACPI_REDUCED_HARDWARE) ACPI_STATUS Status; #endif /* !ACPI_REDUCED_HARDWARE */ if (Event > ACPI_NUM_TABLE_EVENTS) { Event = ACPI_NUM_TABLE_EVENTS; } #if (!ACPI_REDUCED_HARDWARE) /* Enable any GPEs associated with newly-loaded GPE methods */ Status = AcpiUpdateAllGpes (); AE_CHECK_OK (AcpiUpdateAllGpes, Status); printf ("[AcpiExec] Table Event %s, [%4.4s] %p\n", TableEvents[Event], ((ACPI_TABLE_HEADER *) Table)->Signature, Table); #endif /* !ACPI_REDUCED_HARDWARE */ return (AE_OK); } /****************************************************************************** * * FUNCTION: AeGpeHandler * * DESCRIPTION: Common GPE handler for acpiexec * *****************************************************************************/ UINT32 AeGpeHandler ( ACPI_HANDLE GpeDevice, UINT32 GpeNumber, void *Context) { ACPI_NAMESPACE_NODE *DeviceNode = (ACPI_NAMESPACE_NODE *) GpeDevice; AcpiOsPrintf ("[AcpiExec] GPE Handler received GPE%02X (GPE block %4.4s)\n", GpeNumber, GpeDevice ? DeviceNode->Name.Ascii : "FADT"); return (ACPI_REENABLE_GPE); } /****************************************************************************** * * FUNCTION: AeGlobalEventHandler * * DESCRIPTION: Global GPE/Fixed event handler * *****************************************************************************/ void AeGlobalEventHandler ( UINT32 Type, ACPI_HANDLE Device, UINT32 EventNumber, void *Context) { char *TypeName; switch (Type) { case ACPI_EVENT_TYPE_GPE: TypeName = "GPE"; break; case ACPI_EVENT_TYPE_FIXED: TypeName = "FixedEvent"; break; default: TypeName = "UNKNOWN"; break; } AcpiOsPrintf ("[AcpiExec] Global Event Handler received: Type %s Number %.2X Dev %p\n", TypeName, EventNumber, Device); } /****************************************************************************** * * FUNCTION: AeAttachedDataHandler * * DESCRIPTION: Handler for deletion of nodes with attached data (attached via * AcpiAttachData) * *****************************************************************************/ static void AeAttachedDataHandler ( ACPI_HANDLE Object, void *Data) { ACPI_NAMESPACE_NODE *Node = ACPI_CAST_PTR (ACPI_NAMESPACE_NODE, Data); AcpiOsPrintf ("Received an attached data deletion (1) on %4.4s\n", Node->Name.Ascii); } /****************************************************************************** * * FUNCTION: AeAttachedDataHandler2 * * DESCRIPTION: Handler for deletion of nodes with attached data (attached via * AcpiAttachData) * *****************************************************************************/ static void AeAttachedDataHandler2 ( ACPI_HANDLE Object, void *Data) { ACPI_NAMESPACE_NODE *Node = ACPI_CAST_PTR (ACPI_NAMESPACE_NODE, Data); AcpiOsPrintf ("Received an attached data deletion (2) on %4.4s\n", Node->Name.Ascii); } /****************************************************************************** * * FUNCTION: AeInterfaceHandler * * DESCRIPTION: Handler for _OSI invocations * *****************************************************************************/ static UINT32 AeInterfaceHandler ( ACPI_STRING InterfaceName, UINT32 Supported) { ACPI_FUNCTION_NAME (AeInterfaceHandler); ACPI_DEBUG_PRINT ((ACPI_DB_INFO, "Received _OSI (\"%s\"), is %ssupported\n", InterfaceName, Supported == 0 ? "not " : "")); return (Supported); } #if (!ACPI_REDUCED_HARDWARE) /****************************************************************************** * * FUNCTION: AeEventHandler, AeSciHandler * * DESCRIPTION: Handler for Fixed Events and SCIs * *****************************************************************************/ static UINT32 AeEventHandler ( void *Context) { return (0); } static UINT32 AeSciHandler ( void *Context) { AcpiOsPrintf ("[AcpiExec] Received an SCI at handler\n"); return (0); } #endif /* !ACPI_REDUCED_HARDWARE */ /****************************************************************************** * * FUNCTION: AeRegionInit * * PARAMETERS: None * * RETURN: Status * * DESCRIPTION: Opregion init function. * *****************************************************************************/ static ACPI_STATUS AeRegionInit ( ACPI_HANDLE RegionHandle, UINT32 Function, void *HandlerContext, void **RegionContext) { if (Function == ACPI_REGION_DEACTIVATE) { *RegionContext = NULL; } else { *RegionContext = RegionHandle; } return (AE_OK); } /******************************************************************************* * * FUNCTION: AeInstallSciHandler * * PARAMETERS: None * * RETURN: Status * * DESCRIPTION: Install handler for SCIs. Exercise the code by doing an * install/remove/install. * ******************************************************************************/ static ACPI_STATUS AeInstallSciHandler ( void) { ACPI_STATUS Status; Status = AcpiInstallSciHandler (AeSciHandler, &AeMyContext); if (ACPI_FAILURE (Status)) { ACPI_EXCEPTION ((AE_INFO, Status, "Could not install an SCI handler (1)")); } Status = AcpiRemoveSciHandler (AeSciHandler); if (ACPI_FAILURE (Status)) { ACPI_EXCEPTION ((AE_INFO, Status, "Could not remove an SCI handler")); } Status = AcpiInstallSciHandler (AeSciHandler, &AeMyContext); if (ACPI_FAILURE (Status)) { ACPI_EXCEPTION ((AE_INFO, Status, "Could not install an SCI handler (2)")); } return (Status); } /******************************************************************************* * * FUNCTION: AeInstallDeviceHandlers, AeInstallEcHandler, * AeInstallPciHandler * * PARAMETERS: ACPI_WALK_NAMESPACE callback * * RETURN: Status * * DESCRIPTION: Walk entire namespace, install a handler for every EC * and PCI device found. * ******************************************************************************/ static ACPI_STATUS AeInstallEcHandler ( ACPI_HANDLE ObjHandle, UINT32 Level, void *Context, void **ReturnValue) { ACPI_STATUS Status; /* Install the handler for this EC device */ Status = AcpiInstallAddressSpaceHandler (ObjHandle, ACPI_ADR_SPACE_EC, AeRegionHandler, AeRegionInit, &AeMyContext); if (ACPI_FAILURE (Status)) { ACPI_EXCEPTION ((AE_INFO, Status, "Could not install an OpRegion handler for EC device (%p)", ObjHandle)); } return (Status); } static ACPI_STATUS AeInstallPciHandler ( ACPI_HANDLE ObjHandle, UINT32 Level, void *Context, void **ReturnValue) { ACPI_STATUS Status; /* Install memory and I/O handlers for the PCI device */ Status = AcpiInstallAddressSpaceHandler (ObjHandle, ACPI_ADR_SPACE_SYSTEM_IO, AeRegionHandler, AeRegionInit, &AeMyContext); if (ACPI_FAILURE (Status)) { ACPI_EXCEPTION ((AE_INFO, Status, "Could not install an OpRegion handler for PCI device (%p)", ObjHandle)); } Status = AcpiInstallAddressSpaceHandler (ObjHandle, ACPI_ADR_SPACE_SYSTEM_MEMORY, AeRegionHandler, AeRegionInit, &AeMyContext); if (ACPI_FAILURE (Status)) { ACPI_EXCEPTION ((AE_INFO, Status, "Could not install an OpRegion handler for PCI device (%p)", ObjHandle)); } return (AE_CTRL_TERMINATE); } static ACPI_STATUS AeInstallDeviceHandlers ( void) { /* Find all Embedded Controller devices */ AcpiGetDevices ("PNP0C09", AeInstallEcHandler, NULL, NULL); /* Install a PCI handler */ AcpiGetDevices ("PNP0A08", AeInstallPciHandler, NULL, NULL); return (AE_OK); } /****************************************************************************** * * FUNCTION: AeInstallLateHandlers * * PARAMETERS: None * * RETURN: Status * * DESCRIPTION: Install handlers for the AcpiExec utility. * *****************************************************************************/ ACPI_STATUS AeInstallLateHandlers ( void) { ACPI_STATUS Status; UINT32 i; #if (!ACPI_REDUCED_HARDWARE) if (!AcpiGbl_ReducedHardware) { /* Install a user SCI handler */ Status = AeInstallSciHandler (); AE_CHECK_OK (AeInstallSciHandler, Status); /* Install some fixed event handlers */ Status = AcpiInstallFixedEventHandler (ACPI_EVENT_GLOBAL, AeEventHandler, NULL); AE_CHECK_OK (AcpiInstallFixedEventHandler, Status); Status = AcpiInstallFixedEventHandler (ACPI_EVENT_RTC, AeEventHandler, NULL); AE_CHECK_OK (AcpiInstallFixedEventHandler, Status); } #endif /* !ACPI_REDUCED_HARDWARE */ AeMyContext.Connection = NULL; AeMyContext.AccessLength = 0xA5; /* * We will install a handler for each EC device, directly under the EC * device definition. This is unlike the other handlers which we install * at the root node. Also install memory and I/O handlers at any PCI * devices. */ AeInstallDeviceHandlers (); /* * Install handlers for some of the "device driver" address spaces * such as SMBus, etc. */ for (i = 0; i < ACPI_ARRAY_LENGTH (SpaceIdList); i++) { /* Install handler at the root object */ Status = AcpiInstallAddressSpaceHandler (ACPI_ROOT_OBJECT, SpaceIdList[i], AeRegionHandler, AeRegionInit, &AeMyContext); if (ACPI_FAILURE (Status)) { ACPI_EXCEPTION ((AE_INFO, Status, "Could not install an OpRegion handler for %s space(%u)", AcpiUtGetRegionName((UINT8) SpaceIdList[i]), SpaceIdList[i])); return (Status); } } return (AE_OK); } /****************************************************************************** * * FUNCTION: AeInstallEarlyHandlers * * PARAMETERS: None * * RETURN: Status * * DESCRIPTION: Install handlers for the AcpiExec utility. * * Notes: Don't install handler for PCI_Config, we want to use the * default handler to exercise that code. * *****************************************************************************/ ACPI_STATUS AeInstallEarlyHandlers ( void) { ACPI_STATUS Status; UINT32 i; ACPI_HANDLE Handle; ACPI_FUNCTION_ENTRY (); Status = AcpiInstallInterfaceHandler (AeInterfaceHandler); if (ACPI_FAILURE (Status)) { printf ("Could not install interface handler, %s\n", AcpiFormatException (Status)); } Status = AcpiInstallTableHandler (AeTableHandler, NULL); if (ACPI_FAILURE (Status)) { printf ("Could not install table handler, %s\n", AcpiFormatException (Status)); } Status = AcpiInstallExceptionHandler (AeExceptionHandler); if (ACPI_FAILURE (Status)) { printf ("Could not install exception handler, %s\n", AcpiFormatException (Status)); } /* Install global notify handlers */ Status = AcpiInstallNotifyHandler (ACPI_ROOT_OBJECT, ACPI_SYSTEM_NOTIFY, AeSystemNotifyHandler, NULL); if (ACPI_FAILURE (Status)) { printf ("Could not install a global system notify handler, %s\n", AcpiFormatException (Status)); } Status = AcpiInstallNotifyHandler (ACPI_ROOT_OBJECT, ACPI_DEVICE_NOTIFY, AeDeviceNotifyHandler, NULL); if (ACPI_FAILURE (Status)) { printf ("Could not install a global notify handler, %s\n", AcpiFormatException (Status)); } Status = AcpiGetHandle (NULL, "\\_SB", &Handle); if (ACPI_SUCCESS (Status)) { Status = AcpiInstallNotifyHandler (Handle, ACPI_SYSTEM_NOTIFY, AeNotifyHandler1, NULL); if (ACPI_FAILURE (Status)) { printf ("Could not install a notify handler, %s\n", AcpiFormatException (Status)); } Status = AcpiRemoveNotifyHandler (Handle, ACPI_SYSTEM_NOTIFY, AeNotifyHandler1); if (ACPI_FAILURE (Status)) { printf ("Could not remove a notify handler, %s\n", AcpiFormatException (Status)); } Status = AcpiInstallNotifyHandler (Handle, ACPI_ALL_NOTIFY, AeNotifyHandler1, NULL); AE_CHECK_OK (AcpiInstallNotifyHandler, Status); Status = AcpiRemoveNotifyHandler (Handle, ACPI_ALL_NOTIFY, AeNotifyHandler1); AE_CHECK_OK (AcpiRemoveNotifyHandler, Status); #if 0 Status = AcpiInstallNotifyHandler (Handle, ACPI_ALL_NOTIFY, AeNotifyHandler1, NULL); if (ACPI_FAILURE (Status)) { printf ("Could not install a notify handler, %s\n", AcpiFormatException (Status)); } #endif /* Install two handlers for _SB_ */ Status = AcpiInstallNotifyHandler (Handle, ACPI_SYSTEM_NOTIFY, AeNotifyHandler1, ACPI_CAST_PTR (void, 0x01234567)); Status = AcpiInstallNotifyHandler (Handle, ACPI_SYSTEM_NOTIFY, AeNotifyHandler2, ACPI_CAST_PTR (void, 0x89ABCDEF)); /* Attempt duplicate handler installation, should fail */ Status = AcpiInstallNotifyHandler (Handle, ACPI_SYSTEM_NOTIFY, AeNotifyHandler1, ACPI_CAST_PTR (void, 0x77777777)); Status = AcpiAttachData (Handle, AeAttachedDataHandler, Handle); AE_CHECK_OK (AcpiAttachData, Status); Status = AcpiDetachData (Handle, AeAttachedDataHandler); AE_CHECK_OK (AcpiDetachData, Status); Status = AcpiAttachData (Handle, AeAttachedDataHandler, Handle); AE_CHECK_OK (AcpiAttachData, Status); /* Test support for multiple attaches */ Status = AcpiAttachData (Handle, AeAttachedDataHandler2, Handle); AE_CHECK_OK (AcpiAttachData, Status); } else { printf ("No _SB_ found, %s\n", AcpiFormatException (Status)); } Status = AcpiGetHandle (NULL, "\\_TZ.TZ1", &Handle); if (ACPI_SUCCESS (Status)) { Status = AcpiInstallNotifyHandler (Handle, ACPI_ALL_NOTIFY, AeNotifyHandler1, ACPI_CAST_PTR (void, 0x01234567)); Status = AcpiInstallNotifyHandler (Handle, ACPI_ALL_NOTIFY, AeNotifyHandler2, ACPI_CAST_PTR (void, 0x89ABCDEF)); Status = AcpiRemoveNotifyHandler (Handle, ACPI_ALL_NOTIFY, AeNotifyHandler1); Status = AcpiRemoveNotifyHandler (Handle, ACPI_ALL_NOTIFY, AeNotifyHandler2); Status = AcpiInstallNotifyHandler (Handle, ACPI_ALL_NOTIFY, AeNotifyHandler2, ACPI_CAST_PTR (void, 0x89ABCDEF)); Status = AcpiInstallNotifyHandler (Handle, ACPI_ALL_NOTIFY, AeNotifyHandler1, ACPI_CAST_PTR (void, 0x01234567)); } Status = AcpiGetHandle (NULL, "\\_PR.CPU0", &Handle); if (ACPI_SUCCESS (Status)) { Status = AcpiInstallNotifyHandler (Handle, ACPI_ALL_NOTIFY, AeNotifyHandler1, ACPI_CAST_PTR (void, 0x01234567)); Status = AcpiInstallNotifyHandler (Handle, ACPI_SYSTEM_NOTIFY, AeNotifyHandler2, ACPI_CAST_PTR (void, 0x89ABCDEF)); } /* * Install handlers that will override the default handlers for some of * the space IDs. */ for (i = 0; i < ACPI_ARRAY_LENGTH (DefaultSpaceIdList); i++) { /* Install handler at the root object */ Status = AcpiInstallAddressSpaceHandler (ACPI_ROOT_OBJECT, DefaultSpaceIdList[i], AeRegionHandler, AeRegionInit, &AeMyContext); if (ACPI_FAILURE (Status)) { ACPI_EXCEPTION ((AE_INFO, Status, "Could not install a default OpRegion handler for %s space(%u)", AcpiUtGetRegionName ((UINT8) DefaultSpaceIdList[i]), DefaultSpaceIdList[i])); return (Status); } } /* * Initialize the global Region Handler space * MCW 3/23/00 */ AeRegions.NumberOfRegions = 0; AeRegions.RegionList = NULL; return (Status); } /****************************************************************************** * * FUNCTION: AeRegionHandler * * PARAMETERS: Standard region handler parameters * * RETURN: Status * * DESCRIPTION: Test handler - Handles some dummy regions via memory that can * be manipulated in Ring 3. Simulates actual reads and writes. * *****************************************************************************/ ACPI_STATUS AeRegionHandler ( UINT32 Function, ACPI_PHYSICAL_ADDRESS Address, UINT32 BitWidth, UINT64 *Value, void *HandlerContext, void *RegionContext) { ACPI_OPERAND_OBJECT *RegionObject = ACPI_CAST_PTR (ACPI_OPERAND_OBJECT, RegionContext); UINT8 *Buffer = ACPI_CAST_PTR (UINT8, Value); UINT8 *OldBuffer; UINT8 *NewBuffer; ACPI_PHYSICAL_ADDRESS BaseAddress; ACPI_PHYSICAL_ADDRESS BaseAddressEnd; ACPI_PHYSICAL_ADDRESS RegionAddress; ACPI_PHYSICAL_ADDRESS RegionAddressEnd; ACPI_SIZE Length; BOOLEAN BufferExists; BOOLEAN BufferResize; AE_REGION *RegionElement; void *BufferValue; ACPI_STATUS Status; UINT32 ByteWidth; UINT32 RegionLength; UINT32 i; UINT8 SpaceId; ACPI_CONNECTION_INFO *MyContext; UINT32 Value1; UINT32 Value2; ACPI_RESOURCE *Resource; ACPI_FUNCTION_NAME (AeRegionHandler); /* * If the object is not a region, simply return */ if (RegionObject->Region.Type != ACPI_TYPE_REGION) { return (AE_OK); } /* Check that we actually got back our context parameter */ if (HandlerContext != &AeMyContext) { printf ("Region handler received incorrect context %p, should be %p\n", HandlerContext, &AeMyContext); } MyContext = ACPI_CAST_PTR (ACPI_CONNECTION_INFO, HandlerContext); /* * Find the region's address space and length before searching * the linked list. */ BaseAddress = RegionObject->Region.Address; Length = (ACPI_SIZE) RegionObject->Region.Length; SpaceId = RegionObject->Region.SpaceId; ACPI_DEBUG_PRINT ((ACPI_DB_OPREGION, "Operation Region request on %s at 0x%X\n", AcpiUtGetRegionName (RegionObject->Region.SpaceId), (UINT32) Address)); /* * Region support can be disabled with the -do option. * We use this to support dynamically loaded tables where we pass a valid * address to the AML. */ if (AcpiGbl_DbOpt_NoRegionSupport) { BufferValue = ACPI_TO_POINTER (Address); ByteWidth = (BitWidth / 8); if (BitWidth % 8) { ByteWidth += 1; } goto DoFunction; } switch (SpaceId) { case ACPI_ADR_SPACE_SYSTEM_IO: /* * For I/O space, exercise the port validation * Note: ReadPort currently always returns all ones, length=BitLength */ switch (Function & ACPI_IO_MASK) { case ACPI_READ: if (BitWidth == 64) { /* Split the 64-bit request into two 32-bit requests */ Status = AcpiHwReadPort (Address, &Value1, 32); AE_CHECK_OK (AcpiHwReadPort, Status); Status = AcpiHwReadPort (Address+4, &Value2, 32); AE_CHECK_OK (AcpiHwReadPort, Status); *Value = Value1 | ((UINT64) Value2 << 32); } else { Status = AcpiHwReadPort (Address, &Value1, BitWidth); AE_CHECK_OK (AcpiHwReadPort, Status); *Value = (UINT64) Value1; } break; case ACPI_WRITE: if (BitWidth == 64) { /* Split the 64-bit request into two 32-bit requests */ Status = AcpiHwWritePort (Address, ACPI_LODWORD (*Value), 32); AE_CHECK_OK (AcpiHwWritePort, Status); Status = AcpiHwWritePort (Address+4, ACPI_HIDWORD (*Value), 32); AE_CHECK_OK (AcpiHwWritePort, Status); } else { Status = AcpiHwWritePort (Address, (UINT32) *Value, BitWidth); AE_CHECK_OK (AcpiHwWritePort, Status); } break; default: Status = AE_BAD_PARAMETER; break; } if (ACPI_FAILURE (Status)) { return (Status); } /* Now go ahead and simulate the hardware */ break; /* * SMBus and GenericSerialBus support the various bidirectional * protocols. */ case ACPI_ADR_SPACE_SMBUS: case ACPI_ADR_SPACE_GSBUS: /* ACPI 5.0 */ Length = 0; switch (Function & ACPI_IO_MASK) { case ACPI_READ: switch (Function >> 16) { case AML_FIELD_ATTRIB_QUICK: case AML_FIELD_ATTRIB_SEND_RCV: case AML_FIELD_ATTRIB_BYTE: Length = 1; break; case AML_FIELD_ATTRIB_WORD: case AML_FIELD_ATTRIB_WORD_CALL: Length = 2; break; case AML_FIELD_ATTRIB_BLOCK: case AML_FIELD_ATTRIB_BLOCK_CALL: Length = 32; break; case AML_FIELD_ATTRIB_MULTIBYTE: case AML_FIELD_ATTRIB_RAW_BYTES: case AML_FIELD_ATTRIB_RAW_PROCESS: /* (-2) for status/length */ Length = MyContext->AccessLength - 2; break; default: break; } break; case ACPI_WRITE: switch (Function >> 16) { case AML_FIELD_ATTRIB_QUICK: case AML_FIELD_ATTRIB_SEND_RCV: case AML_FIELD_ATTRIB_BYTE: case AML_FIELD_ATTRIB_WORD: case AML_FIELD_ATTRIB_BLOCK: Length = 0; break; case AML_FIELD_ATTRIB_WORD_CALL: Length = 2; break; case AML_FIELD_ATTRIB_BLOCK_CALL: Length = 32; break; case AML_FIELD_ATTRIB_MULTIBYTE: case AML_FIELD_ATTRIB_RAW_BYTES: case AML_FIELD_ATTRIB_RAW_PROCESS: /* (-2) for status/length */ Length = MyContext->AccessLength - 2; break; default: break; } break; default: break; } if (AcpiGbl_DisplayRegionAccess) { AcpiOsPrintf ("AcpiExec: %s " "%s: Attr %X Addr %.4X BaseAddr %.4X Len %.2X Width %X BufLen %X", AcpiUtGetRegionName (SpaceId), (Function & ACPI_IO_MASK) ? "Write" : "Read ", (UINT32) (Function >> 16), (UINT32) Address, (UINT32) BaseAddress, Length, BitWidth, Buffer[1]); /* GenericSerialBus has a Connection() parameter */ if (SpaceId == ACPI_ADR_SPACE_GSBUS) { Status = AcpiBufferToResource (MyContext->Connection, MyContext->Length, &Resource); AcpiOsPrintf (" [AccLen %.2X Conn %p]", MyContext->AccessLength, MyContext->Connection); } AcpiOsPrintf ("\n"); } /* Setup the return buffer. Note: ASLTS depends on these fill values */ for (i = 0; i < Length; i++) { Buffer[i+2] = (UINT8) (0xA0 + i); } Buffer[0] = 0x7A; Buffer[1] = (UINT8) Length; return (AE_OK); case ACPI_ADR_SPACE_IPMI: /* ACPI 4.0 */ if (AcpiGbl_DisplayRegionAccess) { AcpiOsPrintf ("AcpiExec: IPMI " "%s: Attr %X Addr %.4X BaseAddr %.4X Len %.2X Width %X BufLen %X\n", (Function & ACPI_IO_MASK) ? "Write" : "Read ", (UINT32) (Function >> 16), (UINT32) Address, (UINT32) BaseAddress, Length, BitWidth, Buffer[1]); } /* * Regardless of a READ or WRITE, this handler is passed a 66-byte * buffer in which to return the IPMI status/length/data. * * Return some example data to show use of the bidirectional buffer */ Buffer[0] = 0; /* Status byte */ Buffer[1] = 64; /* Return buffer data length */ Buffer[2] = 0; /* Completion code */ Buffer[3] = 0; /* Reserved */ /* * Fill the 66-byte buffer with the return data. * Note: ASLTS depends on these fill values. */ for (i = 4; i < 66; i++) { Buffer[i] = (UINT8) (i); } return (AE_OK); default: break; } /* * Search through the linked list for this region's buffer */ BufferExists = FALSE; BufferResize = FALSE; RegionElement = AeRegions.RegionList; if (AeRegions.NumberOfRegions) { BaseAddressEnd = BaseAddress + Length - 1; while (!BufferExists && RegionElement) { RegionAddress = RegionElement->Address; RegionAddressEnd = RegionElement->Address + RegionElement->Length - 1; RegionLength = RegionElement->Length; /* * Overlapping Region Support * * While searching through the region buffer list, determine if an * overlap exists between the requested buffer space and the current * RegionElement space. If there is an overlap then replace the old * buffer with a new buffer of increased size before continuing to * do the read or write */ if (RegionElement->SpaceId != SpaceId || BaseAddressEnd < RegionAddress || BaseAddress > RegionAddressEnd) { /* * Requested buffer is outside of the current RegionElement * bounds */ RegionElement = RegionElement->NextRegion; } else { /* * Some amount of buffer space sharing exists. There are 4 cases * to consider: * * 1. Right overlap * 2. Left overlap * 3. Left and right overlap * 4. Fully contained - no resizing required */ BufferExists = TRUE; if ((BaseAddress >= RegionAddress) && (BaseAddress <= RegionAddressEnd) && (BaseAddressEnd > RegionAddressEnd)) { /* Right overlap */ RegionElement->Length = BaseAddress - RegionAddress + Length; BufferResize = TRUE; } else if ((BaseAddressEnd >= RegionAddress) && (BaseAddressEnd <= RegionAddressEnd) && (BaseAddress < RegionAddress)) { /* Left overlap */ RegionElement->Address = BaseAddress; RegionElement->Length = RegionAddress - BaseAddress + RegionElement->Length; BufferResize = TRUE; } else if ((BaseAddress < RegionAddress) && (BaseAddressEnd > RegionAddressEnd)) { /* Left and right overlap */ RegionElement->Address = BaseAddress; RegionElement->Length = Length; BufferResize = TRUE; } /* * only remaining case is fully contained for which we don't * need to do anything */ if (BufferResize) { NewBuffer = AcpiOsAllocate (RegionElement->Length); if (!NewBuffer) { return (AE_NO_MEMORY); } OldBuffer = RegionElement->Buffer; RegionElement->Buffer = NewBuffer; NewBuffer = NULL; /* Initialize the region with the default fill value */ ACPI_MEMSET (RegionElement->Buffer, AcpiGbl_RegionFillValue, RegionElement->Length); /* * Get BufferValue to point (within the new buffer) to the * base address of the old buffer */ BufferValue = (UINT8 *) RegionElement->Buffer + (UINT64) RegionAddress - (UINT64) RegionElement->Address; /* * Copy the old buffer to its same location within the new * buffer */ ACPI_MEMCPY (BufferValue, OldBuffer, RegionLength); AcpiOsFree (OldBuffer); } } } } /* * If the Region buffer does not exist, create it now */ if (!BufferExists) { /* Do the memory allocations first */ RegionElement = AcpiOsAllocate (sizeof (AE_REGION)); if (!RegionElement) { return (AE_NO_MEMORY); } RegionElement->Buffer = AcpiOsAllocate (Length); if (!RegionElement->Buffer) { AcpiOsFree (RegionElement); return (AE_NO_MEMORY); } /* Initialize the region with the default fill value */ ACPI_MEMSET (RegionElement->Buffer, AcpiGbl_RegionFillValue, Length); RegionElement->Address = BaseAddress; RegionElement->Length = Length; RegionElement->SpaceId = SpaceId; RegionElement->NextRegion = NULL; /* * Increment the number of regions and put this one * at the head of the list as it will probably get accessed * more often anyway. */ AeRegions.NumberOfRegions += 1; if (AeRegions.RegionList) { RegionElement->NextRegion = AeRegions.RegionList; } AeRegions.RegionList = RegionElement; } /* Calculate the size of the memory copy */ ByteWidth = (BitWidth / 8); if (BitWidth % 8) { ByteWidth += 1; } /* * The buffer exists and is pointed to by RegionElement. * We now need to verify the request is valid and perform the operation. * * NOTE: RegionElement->Length is in bytes, therefore it we compare against * ByteWidth (see above) */ if (((UINT64) Address + ByteWidth) > ((UINT64)(RegionElement->Address) + RegionElement->Length)) { ACPI_WARNING ((AE_INFO, "Request on [%4.4s] is beyond region limit Req-0x%X+0x%X, Base=0x%X, Len-0x%X", (RegionObject->Region.Node)->Name.Ascii, (UINT32) Address, ByteWidth, (UINT32)(RegionElement->Address), RegionElement->Length)); return (AE_AML_REGION_LIMIT); } /* * Get BufferValue to point to the "address" in the buffer */ BufferValue = ((UINT8 *) RegionElement->Buffer + ((UINT64) Address - (UINT64) RegionElement->Address)); DoFunction: /* * Perform a read or write to the buffer space */ switch (Function) { case ACPI_READ: /* * Set the pointer Value to whatever is in the buffer */ ACPI_MEMCPY (Value, BufferValue, ByteWidth); break; case ACPI_WRITE: /* * Write the contents of Value to the buffer */ ACPI_MEMCPY (BufferValue, Value, ByteWidth); break; default: return (AE_BAD_PARAMETER); } if (AcpiGbl_DisplayRegionAccess) { switch (SpaceId) { case ACPI_ADR_SPACE_SYSTEM_MEMORY: AcpiOsPrintf ("AcpiExec: SystemMemory " "%s: Val %.8X Addr %.4X Width %X [REGION: BaseAddr %.4X Len %.2X]\n", (Function & ACPI_IO_MASK) ? "Write" : "Read ", (UINT32) *Value, (UINT32) Address, BitWidth, (UINT32) BaseAddress, Length); break; case ACPI_ADR_SPACE_GPIO: /* ACPI 5.0 */ /* This space is required to always be ByteAcc */ Status = AcpiBufferToResource (MyContext->Connection, MyContext->Length, &Resource); AcpiOsPrintf ("AcpiExec: GeneralPurposeIo " "%s: Val %.8X Addr %.4X BaseAddr %.4X Len %.2X Width %X AccLen %.2X Conn %p\n", (Function & ACPI_IO_MASK) ? "Write" : "Read ", (UINT32) *Value, (UINT32) Address, (UINT32) BaseAddress, Length, BitWidth, MyContext->AccessLength, MyContext->Connection); break; default: break; } } return (AE_OK); } src/apic/000077500000000000000000000000001231470457100125655ustar00rootroot00000000000000src/apic/apicedge/000077500000000000000000000000001231470457100143265ustar00rootroot00000000000000src/apic/apicedge/apicedge.c000066400000000000000000000057761231470457100162520ustar00rootroot00000000000000/* * Copyright (C) 2006, Intel Corporation * Copyright (C) 2010-2014 Canonical * * This file was originally part of the Linux-ready Firmware Developer Kit * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #include "fwts.h" #ifdef FWTS_ARCH_INTEL #include #include #include #include #include #include /* * This test sanity checks apic irq information * rule of thumb: * interrupts <16 should be EDGE * interrupts >16 should be LEVEL * acpi interrupt should be LEVEL */ static int apicedge_test1(fwts_framework *fw) { FILE *file; if ((file = fopen("/proc/interrupts", "r")) == NULL) { fwts_failed(fw, LOG_LEVEL_MEDIUM, "NoProcInterrupts", "Could not open file /proc/interrupts."); return FWTS_ERROR; } while (!feof(file)) { char line[4096], *c; int edge = -1; int irq = 0; memset(line, 0, sizeof(line)); if (fgets(line, sizeof(line) - 1, file) == NULL) break; if (! (line[0] == ' ' || (line[0] >= '0' && line[0] <= '9')) ) continue; irq = strtoul(line, &c, 10); if (c == line) continue; if (strstr(line, "IO-APIC-edge")) edge = 1; if (strstr(line, "IO-APIC-fasteoi")) edge = 0; if (strstr(line, "PCI-MSI-level")) edge = 0; if (strstr(line, "PCI-MSI-edge")) edge = 1; if (strstr(line, "IO-APIC-level")) edge = 0; if (strstr(line,"acpi")) { if (edge == 1) fwts_failed(fw, LOG_LEVEL_MEDIUM, "ACPIIRQEdgeTrig", "ACPI Interrupt is incorrectly edge triggered."); continue; } if ((irq < 15) && (edge == 0)) fwts_failed(fw, LOG_LEVEL_MEDIUM, "LegacyIRQLevelTrig", "Legacy interrupt %i is incorrectly level triggered.", irq); if ((irq < 15) && (edge == -1)) fwts_failed(fw, LOG_LEVEL_MEDIUM, "NonLegacyIRQLevelTrig", "Non-Legacy interrupt %i is incorrectly level triggered.", irq); } fclose(file); if (fwts_tests_passed(fw)) fwts_passed(fw, "Legacy interrupts are edge and PCI interrupts are level triggered."); return FWTS_OK; } static fwts_framework_minor_test apicedge_tests[] = { { apicedge_test1, "Legacy and PCI Interrupt Edge/Level trigger tests." }, { NULL, NULL } }; static fwts_framework_ops apicedge_ops = { .description = "APIC edge/level test.", .minor_tests = apicedge_tests }; FWTS_REGISTER("apicedge", &apicedge_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH); #endif src/bios/000077500000000000000000000000001231470457100126055ustar00rootroot00000000000000src/bios/bios32/000077500000000000000000000000001231470457100137065ustar00rootroot00000000000000src/bios/bios32/bios32.c000066400000000000000000000113321231470457100151530ustar00rootroot00000000000000/* * Copyright (C) 2010-2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #include "fwts.h" #include #ifdef FWTS_ARCH_INTEL #define BIOS32_SD_REGION_START (0x000e0000) #define BIOS32_SD_REGION_END (0x000fffff) #define BIOS32_SD_REGION_SIZE (BIOS32_SD_REGION_END - BIOS32_SD_REGION_START) typedef struct { uint8_t signature[4]; uint32_t entry_point; uint8_t revision_level; uint8_t length; uint8_t checksum; uint8_t reserved[5]; } __attribute__ ((packed)) fwts_bios32_service_directory; static int bios32_init(fwts_framework *fw) { if (fw->firmware_type != FWTS_FIRMWARE_BIOS) { fwts_log_info(fw, "Machine is not using traditional BIOS firmware, " "skipping test."); return FWTS_SKIP; } return FWTS_OK; } static int bios32_test1(fwts_framework *fw) { uint8_t *mem; int i; int found = 0; fwts_log_info(fw, "This test tries to find and sanity check the BIOS32 Service " "Directory as defined in the Standard BIOS 32-bit Service " "Directory Proposal, Revision 0.4 May 24, 1993, Phoenix " "Technologies Ltd and also the PCI BIOS specification."); if ((mem = fwts_mmap(BIOS32_SD_REGION_START, BIOS32_SD_REGION_SIZE)) == FWTS_MAP_FAILED) { fwts_log_error(fw, "Cannot mmap BIOS32 region."); return FWTS_ERROR; } for (i=0; isignature); fwts_log_info_verbatum(fw, " Entry Point: 0x%8.8" PRIx32, bios32->entry_point); fwts_log_info_verbatum(fw, " Revsion : 0x%2.2" PRIx8, bios32->revision_level); fwts_log_info_verbatum(fw, " Length : 0x%2.2" PRIx8, bios32->length); fwts_log_info_verbatum(fw, " Checksum : 0x%2.2" PRIx8, bios32->checksum); fwts_log_nl(fw); if (bios32->entry_point >= 0x100000) fwts_failed(fw, LOG_LEVEL_HIGH, "BIOS32SrvDirEntryPointHighMem", "Service Directory Entry Point 0x%8.8" PRIx32 " is in high memory and cannot be used " "by the kernel.", bios32->entry_point); else fwts_passed(fw, "Service Directory Entry Point " "0x%8.8x is not in high memory.", bios32->entry_point); if (bios32->length != 1) fwts_failed(fw, LOG_LEVEL_HIGH, "BIOS32SrvDirEntryLength", "Service Directory Length is 0x%8.8" PRIx8 ", expected 1 (1 x 16 bytes).", bios32->length); else fwts_passed(fw, "Service Directory Length is 1 " "(1 x 16 bytes) as expected."); if (bios32->revision_level != 0) fwts_failed(fw, LOG_LEVEL_HIGH, "BIOS32SrvDirRevision", "Service Directory Revision is 0x%2.2" PRIx8 ", only version 0 is supported by the " "kernel.", bios32->revision_level); else fwts_passed(fw, "Service Directory Revision is 0x%2.2" PRIx8 " and is supported by the kernel.", bios32->revision_level); if (fwts_checksum(mem + i, 16) != 0) fwts_failed(fw, LOG_LEVEL_HIGH, "BIOS32SrvDirCheckSum", "Service Directory checksum failed."); else fwts_passed(fw, "Service Directory checksum passed."); found++; } } if (found == 0) fwts_log_info(fw, "Could not find BIOS32 Service Directory."); else if (found > 1) fwts_failed(fw, LOG_LEVEL_HIGH, "BIOS32MultipleSrvDirInstances", "Found %d instances of BIOS32 Service Directory, " "there should only be 1.", found); (void)fwts_munmap(mem, BIOS32_SD_REGION_SIZE); return FWTS_OK; } static fwts_framework_minor_test bios32_tests[] = { { bios32_test1, "BIOS32 Service Directory test." }, { NULL, NULL } }; static fwts_framework_ops bios32_ops = { .description = "BIOS32 Service Directory test.", .init = bios32_init, .minor_tests = bios32_tests }; FWTS_REGISTER("bios32", &bios32_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | FWTS_FLAG_ROOT_PRIV); #endif src/bios/bios_info/000077500000000000000000000000001231470457100145545ustar00rootroot00000000000000src/bios/bios_info/bios_info.c000066400000000000000000000046311231470457100166730ustar00rootroot00000000000000/* * Copyright (C) 2010-2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #include "fwts.h" #ifdef FWTS_ARCH_INTEL #include #include #include typedef struct { char *dmi_field; char *label; } fwts_bios_info; static fwts_bios_info bios_info[] = { { "bios_vendor", "BIOS Vendor" }, { "bios_version", "BIOS Version" }, { "bios_date", "BIOS Release Date" }, { "board_name", "Board Name" }, { "board_serial", "Board Serial #" }, { "board_version", "Board Version" }, { "board_asset_tag", "Board Asset Tag" }, { "chassis_serial", "Chassis Serial #" }, { "chassis_type", "Chassis Type " }, { "chassis_vendor", "Chassis Vendor" }, { "chassis_version", "Chassis Version" }, { "chassis_asset_tag", "Chassic Asset Tag" }, { "product_name", "Product Name" }, { "product_serial", "Product Serial #" }, { "product_uuid", "Product UUID " }, { "product_version", "Product Version" }, { "sys_vendor", "System Vendor" }, { NULL, NULL } }; static int bios_info_test1(fwts_framework *fw) { char path[PATH_MAX]; int i; for (i=0; bios_info[i].dmi_field != NULL; i++) { char *data; snprintf(path, sizeof(path), "/sys/class/dmi/id/%s", bios_info[i].dmi_field); if ((data = fwts_get(path)) != NULL) { fwts_chop_newline(data); fwts_log_info_verbatum(fw, "%-18.18s: %s", bios_info[i].label, data); free(data); } } fwts_infoonly(fw); return FWTS_OK; } static fwts_framework_minor_test bios_info_tests[] = { { bios_info_test1, "Gather BIOS DMI information" }, { NULL, NULL } }; static fwts_framework_ops bios_info_ops = { .description = "Gather BIOS DMI information.", .minor_tests = bios_info_tests }; FWTS_REGISTER("bios_info", &bios_info_ops, FWTS_TEST_FIRST, FWTS_FLAG_BATCH); #endif src/bios/ebda_region/000077500000000000000000000000001231470457100150435ustar00rootroot00000000000000src/bios/ebda_region/ebda_region.c000066400000000000000000000063111231470457100174460ustar00rootroot00000000000000/* * Copyright (C) 2006, Intel Corporation * Copyright (C) 2010-2014 Canonical * * This code was originally part of the Linux-ready Firmware Developer Kit * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #include "fwts.h" #ifdef FWTS_ARCH_INTEL #include #include #include #include #include #include #include #include static off_t ebda_addr = FWTS_NO_EBDA; static fwts_list *memory_map; static int ebda_init(fwts_framework *fw) { if (fw->firmware_type != FWTS_FIRMWARE_BIOS) { fwts_log_info(fw, "Machine is not using traditional BIOS firmware, skipping test."); return FWTS_SKIP; } if ((memory_map = fwts_memory_map_table_load(fw)) == NULL) { fwts_log_error(fw, "Failed to read memory map."); return FWTS_ERROR; } if ((ebda_addr = fwts_ebda_get()) == FWTS_NO_EBDA) { fwts_log_error(fw, "Failed to locate EBDA region."); return FWTS_ERROR; } return FWTS_OK; } static int ebda_deinit(fwts_framework *fw) { FWTS_UNUSED(fw); fwts_klog_free(memory_map); return FWTS_OK; } static int ebda_test1(fwts_framework *fw) { const char *memory_map_name = fwts_memory_map_name(fw->firmware_type); fwts_memory_map_entry *entry; if (memory_map == NULL) return FWTS_ERROR; fwts_log_info(fw, "The Extended BIOS Data Area (EBDA) is normally located at " "the end of the low 640K region and is typically 2-4K in " "size. It should be reserved in the %s table.", memory_map_name); entry = fwts_memory_map_info(memory_map, (uint64_t)ebda_addr); if ((entry != NULL) && (entry->type == FWTS_MEMORY_MAP_RESERVED || entry->type == FWTS_MEMORY_MAP_ACPI)) { fwts_passed(fw, "EBDA region mapped at 0x%lx and reserved as a %" PRId64 "K region in the %s table at 0x%" PRIx64 "..0x%" PRIx64 ".", ebda_addr, (entry->end_address - entry->start_address) / 1024, memory_map_name, entry->start_address, entry->end_address); } else fwts_failed(fw, LOG_LEVEL_MEDIUM, "EBDAMappedNotReserved", "EBDA region mapped at 0x%lx but not reserved in the %s table.", ebda_addr, memory_map_name); return FWTS_OK; } static fwts_framework_minor_test ebda_tests[] = { { ebda_test1, "Test EBDA is reserved in E820 table." }, { NULL, NULL } }; static fwts_framework_ops ebda_ops = { .description = "Test EBDA region is mapped and reserved in memory map table.", .init = ebda_init, .deinit = ebda_deinit, .minor_tests = ebda_tests }; FWTS_REGISTER("ebda", &ebda_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | FWTS_FLAG_ROOT_PRIV); #endif src/bios/ebdadump/000077500000000000000000000000001231470457100143665ustar00rootroot00000000000000src/bios/ebdadump/ebdadump.c000066400000000000000000000043611231470457100163170ustar00rootroot00000000000000/* * Copyright (C) 2011-2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #include "fwts.h" #include #include #ifdef FWTS_ARCH_INTEL #define BIOS_ROM_START (0x000a0000) static void ebdadump_data(fwts_framework *fw, uint8_t *data, int offset, int length) { char buffer[128]; int i; for (i=0; i BIOS_ROM_START) { fwts_log_error(fw, "EBDA start address is greater than the " "BIOS ROM start address."); return FWTS_ERROR; } if ((mem = fwts_mmap(ebda_addr, len)) == MAP_FAILED) { fwts_log_error(fw, "Cannot mmap BIOS ROM region."); return FWTS_ERROR; } fwts_log_info(fw, "EBDA region: %" PRIx32 "..%x (%zd bytes)", (uint32_t)ebda_addr, BIOS_ROM_START, len); ebdadump_data(fw, mem, ebda_addr, len); (void)fwts_munmap(mem, len); fwts_infoonly(fw); return FWTS_OK; } static fwts_framework_minor_test ebdadump_tests[] = { { ebdadump_test1, "Dump EBDA region." }, { NULL, NULL } }; static fwts_framework_ops ebdadump_ops = { .description = "Dump EBDA region.", .minor_tests = ebdadump_tests }; FWTS_REGISTER("ebdadump", &ebdadump_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_UTILS | FWTS_FLAG_ROOT_PRIV); #endif src/bios/hdaaudio/000077500000000000000000000000001231470457100143635ustar00rootroot00000000000000src/bios/hdaaudio/hdaaudio.c000066400000000000000000000122371231470457100163120ustar00rootroot00000000000000/* * Copyright (C) 2010-2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #include #include #include "fwts.h" typedef struct { uint16_t pin; uint32_t setting; } hda_audio_pin_setting; static int hda_audio_read_pins(const char *path, const char *file, fwts_list *settings) { FILE *fp; uint16_t pin; uint32_t setting; hda_audio_pin_setting *pin_setting; char name[PATH_MAX]; fwts_list_init(settings); snprintf(name, sizeof(name), "%s/%s", path, file); if ((fp = fopen(name, "r")) == NULL) return FWTS_ERROR; while (fscanf(fp, "0x%hx 0x%x\n", &pin, &setting) == 2) { pin_setting = calloc(1, sizeof(hda_audio_pin_setting)); if (pin_setting == NULL) { fwts_list_free_items(settings, free); fclose(fp); return FWTS_ERROR; } pin_setting->pin = pin; pin_setting->setting = setting; fwts_list_append(settings, pin_setting); } fclose(fp); return FWTS_OK; } static void hda_audio_dump_pins(fwts_framework *fw, const char *config, fwts_list *settings) { fwts_list_link *item; if (fwts_list_len(settings) > 0) { fwts_log_info(fw, "%s:", config); fwts_log_info_verbatum(fw, " Pin Setting"); fwts_list_foreach(item, settings) { hda_audio_pin_setting *pin_setting = fwts_list_data(hda_audio_pin_setting *, item); fwts_log_info_verbatum(fw, " 0x%4.4hx 0x%8.8x", pin_setting->pin, pin_setting->setting); } } else fwts_log_info(fw, "%s: None Defined.", config); } static void hda_audio_dev_info(fwts_framework *fw, const char *label, const char *path, const char *file) { char *info; char fullpath[PATH_MAX]; snprintf(fullpath, sizeof(fullpath), "%s/%s", path, file); if ((info = fwts_get(fullpath)) != NULL) { fwts_chop_newline(info); if (*info) fwts_log_info_verbatum(fw, "%-15.15s: %s", label, info); free(info); } } static int hda_audio_check_pins(fwts_framework *fw, const char *path) { fwts_list init_pin_configs; fwts_list driver_pin_configs; fwts_list user_pin_configs; int warn = 0; hda_audio_dev_info(fw, "Vendor Name", path, "vendor_name"); hda_audio_dev_info(fw, "Vendor ID", path, "vendor_id"); hda_audio_dev_info(fw, "Model Name", path, "modelname"); hda_audio_dev_info(fw, "Chip Name", path, "chipname"); hda_audio_dev_info(fw, "Subsystem ID", path, "subsystem_id"); hda_audio_dev_info(fw, "Revision ID", path, "revision_id"); (void)hda_audio_read_pins(path, "init_pin_configs", &init_pin_configs); (void)hda_audio_read_pins(path, "driver_pin_configs", &driver_pin_configs); (void)hda_audio_read_pins(path, "user_pin_configs", &user_pin_configs); if (fwts_list_len(&init_pin_configs) > 0) hda_audio_dump_pins(fw, "BIOS pin configurations", &init_pin_configs); if (fwts_list_len(&driver_pin_configs) > 0) { hda_audio_dump_pins(fw, "Driver defined pin configurations", &driver_pin_configs); warn++; } if (fwts_list_len(&user_pin_configs) > 0) { hda_audio_dump_pins(fw, "User defined pin configurations", &user_pin_configs); warn++; } if (warn) { fwts_log_warning(fw, "BIOS pin configurations required software override " "to make HDA audio work correctly."); fwts_log_advice(fw, "The driver or user provided overrides should be " "corrected in BIOS firmware."); } else fwts_passed(fw, "Default BIOS pin configurations did not have " "software override."); fwts_list_free_items(&user_pin_configs, free); fwts_list_free_items(&driver_pin_configs, free); fwts_list_free_items(&init_pin_configs, free); return FWTS_OK; } static int hda_audio_test1(fwts_framework *fw) { DIR *dir; struct dirent *directory; bool checked = false; if ((dir = opendir("/sys/class/sound")) == NULL) { fwts_skipped(fw, "Cannot find any sound devices in /sys/class/sound."); return FWTS_OK; } while ((directory = readdir(dir)) != NULL) if (strncmp(directory->d_name, "hw", 2) == 0) { char path[PATH_MAX]; checked = true; snprintf(path, sizeof(path), "/sys/class/sound/%s", directory->d_name); fwts_log_info(fw, "Checking '%s':", directory->d_name); hda_audio_check_pins(fw, path); fwts_log_nl(fw); } closedir(dir); if (!checked) fwts_skipped(fw, "Cannot find any BIOS set audio pin configurations."); return FWTS_OK; } static fwts_framework_minor_test hda_audio_tests[] = { { hda_audio_test1, "HDA Audio Pin Configuration test." }, { NULL, NULL } }; static fwts_framework_ops hda_audio_ops = { .description = "HDA Audio Pin Configuration test.", .minor_tests = hda_audio_tests }; FWTS_REGISTER("hda_audio", &hda_audio_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH); src/bios/memmapdump/000077500000000000000000000000001231470457100147475ustar00rootroot00000000000000src/bios/memmapdump/memmapdump.c000066400000000000000000000031601231470457100172550ustar00rootroot00000000000000/* * Copyright (C) 2010-2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #include "fwts.h" #ifdef FWTS_ARCH_INTEL static int memory_mapdump_util(fwts_framework *fw) { fwts_list *memory_mapdump_memory_map_info; if ((memory_mapdump_memory_map_info = fwts_memory_map_table_load(fw)) == NULL) { fwts_log_warning(fw, "Cannot memory map table from /sys/firmware/memmap " "or kernel log."); return FWTS_ERROR; } fwts_memory_map_table_dump(fw, memory_mapdump_memory_map_info); fwts_memory_map_table_free(memory_mapdump_memory_map_info); fwts_infoonly(fw); return FWTS_OK; } static fwts_framework_minor_test memory_mapdump_utils[] = { { memory_mapdump_util, "Dump system memory map." }, { NULL, NULL } }; static fwts_framework_ops memory_mapdump_ops = { .description = "Dump system memory map.", .minor_tests = memory_mapdump_utils }; FWTS_REGISTER("memmapdump", &memory_mapdump_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_UTILS); #endif src/bios/mtrr/000077500000000000000000000000001231470457100135715ustar00rootroot00000000000000src/bios/mtrr/mtrr.c000066400000000000000000000316601231470457100147270ustar00rootroot00000000000000/* * Copyright (C) 2006, Intel Corporation * Copyright (C) 2010-2014 Canonical * * This code was originally part of the Linux-ready Firmware Developer Kit * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #include "fwts.h" #ifdef FWTS_ARCH_INTEL #include #include #include #include #include #include #include #include #include #include #include #include static fwts_list *klog; static fwts_list *mtrr_list; static fwts_cpuinfo_x86 *fwts_cpuinfo; #define UNCACHED 0x0001 #define WRITE_BACK 0x0002 #define WRITE_COMBINING 0x0004 #define WRITE_THROUGH 0x0008 #define WRITE_PROTECT 0x0010 #define DEFAULT 0x0020 #define DISABLED 0x0040 #define UNKNOWN 0x0080 struct mtrr_entry { uint8_t reg; uint64_t start; uint64_t end; uint64_t size; uint8_t type; }; static char *cache_to_string(int type) { static char str[1024]; memset(str, 0, 1024); if (type & UNCACHED || type==0) strcat(str," Uncached"); if (type & WRITE_BACK) strcat(str," Write-Back"); if (type & WRITE_COMBINING) strcat(str," Write-Combining"); if (type & WRITE_THROUGH) strcat(str," Write-Through"); if (type & WRITE_PROTECT) strcat(str," Write-Protect"); if (type & DEFAULT) strcat(str," Default (Most probably Uncached)"); if (type & UNKNOWN) strcat(str," Unknown"); return str; } static int get_mtrrs(void) { struct mtrr_entry *entry; FILE *fp; char line[4096]; if ((mtrr_list = fwts_list_new()) == NULL) return FWTS_ERROR; if ((fp = fopen("/proc/mtrr", "r")) == NULL) { fwts_list_free(mtrr_list, free); return FWTS_ERROR; } while (!feof(fp)) { char *ptr1, *ptr2; if (fgets(line, sizeof(line), fp) == NULL) break; if ((entry = calloc(1, sizeof(struct mtrr_entry))) == NULL) { fwts_list_free(mtrr_list, free); fclose(fp); return FWTS_ERROR; } /* * Put all text to lower case since the output * from /proc/mtrr is variable upper/lower case * across kernel versions so forcing to lower * saves comparing for upper/lower case variants. */ for (ptr1 = line; *ptr1; ptr1++) *ptr1 = tolower(*ptr1); /* Parse the following: * reg01: base=0x080000000 ( 2048MB), size= 1024MB, count=1: write-back */ /* Get register, in decimal */ if (strncmp(line, "reg", 3)) continue; entry->reg = strtoul(line + 3, NULL, 10); /* Get base, in hex */ if ((ptr1 = strstr(line, "base=0x")) == NULL) continue; entry->start = strtoull(ptr1 + 5, NULL, 16); /* Get size, in decimal */ if ((ptr1 = strstr(line, "size=")) == NULL) continue; entry->size = strtoull(ptr1 + 5, &ptr2, 10); if (ptr2 && (*ptr2 == 'm')) entry->size *= 1024 * 1024; if (ptr2 && (*ptr2 == 'k')) entry->size *= 1024; entry->end = entry->start + entry->size; if (strstr(line, "write-back")) entry->type = WRITE_BACK; else if (strstr(line, "uncachable")) entry->type = UNCACHED; else if (strstr(line, "write-through")) entry->type = WRITE_THROUGH; else if (strstr(line, "write-combining")) entry->type = WRITE_COMBINING; else if (strstr(line, "write-protect")) entry->type = WRITE_PROTECT; else entry->type = UNKNOWN; fwts_list_append(mtrr_list, entry); } fclose(fp); return FWTS_OK; } static int cache_types(uint64_t start, uint64_t end) { fwts_list_link *item; struct mtrr_entry *entry; int type = 0; fwts_list_foreach(item, mtrr_list) { entry = fwts_list_data(struct mtrr_entry*, item); if (entry->end > start && entry->start < end) type |= entry->type; } /* * now to see if there is any part of the range that isn't * covered by an mtrr, since it's UNCACHED if so */ restart: fwts_list_foreach(item, mtrr_list) { entry = fwts_list_data(struct mtrr_entry*, item); if (entry->end >= end && entry->start < end) { end = entry->start; if (end < start) end = start; else goto restart; } } /* if there is no full coverage it's also uncached */ if (start != end) type |= DEFAULT; return type; } static int check_prefetchable( fwts_framework *fw, char *device, uint64_t address, bool *pref) { char path[PATH_MAX]; uint8_t config[64]; int fd, i, n, bars; uint32_t *bar; *pref = false; snprintf(path, sizeof(path), FWTS_PCI_DEV_PATH "/%s/config", device); if ((fd = open(path, O_RDONLY)) < 0) { fwts_log_error(fw, "Cannot read PCI config for device %s\n", device); return FWTS_ERROR; } n = read(fd, config, sizeof(config)); close(fd); /* config space too small? ignore for now */ if (n < 64) return FWTS_OK; /* Type, mask off top bit so we can cater for multi-function devices */ switch (config[FWTS_PCI_CONFIG_HEADER_TYPE] & 0x7f) { case FWTS_PCI_CONFIG_HEADER_TYPE_NON_BRIDGE: bars = 6; break; case FWTS_PCI_CONFIG_HEADER_TYPE_PCI_BRIDGE: bars = 2; break; default: /* No BARs, ignore */ return FWTS_OK; } /* * Check BAR addresses, do they match and are they prefetchable * See http://wiki.osdev.org/PCI */ bar = (uint32_t*)&config[0x10]; for (i = 0; i < bars; i++) { if ((bar[i] & 1) == 0) { uint64_t bar_addr; bool is_prefetchable = (bar[i] & FWTS_PCI_CONFIG_BAR_PREFETCHABLE); switch ((bar[i] >> 1) & 0x03) { case FWTS_PCI_CONFIG_BAR_TYPE_ADDR_16BIT: bar_addr = bar[i] & 0xfff0; break; case FWTS_PCI_CONFIG_BAR_TYPE_ADDR_32BIT: bar_addr = bar[i] & 0xfffffff0; break; case FWTS_PCI_CONFIG_BAR_TYPE_ADDR_64BIT: bar_addr = (bar[i] & 0xfffffff0) | (((uint64_t)bar[i+1]) << 32); i++; break; default: continue; } if (bar_addr == address) { *pref = is_prefetchable; break; } } } return FWTS_OK; } static int guess_cache_type( fwts_framework *fw, char *string, int *must, int *mustnot, uint64_t address) { *must = 0; *mustnot = 0; if (strstr(string, "System RAM")) { *must = WRITE_BACK; *mustnot = ~WRITE_BACK; return FWTS_OK; } /* if it's PCI mmio -> uncached typically except for video */ if (strstr(string, "0000:")) { bool pref; if (check_prefetchable(fw, string, address, &pref) != FWTS_OK) return FWTS_ERROR; if (pref) { *must = 0; *mustnot = WRITE_BACK | UNCACHED; } else { *must = UNCACHED; *mustnot = (~UNCACHED) & (~DEFAULT); } } return FWTS_OK; } static int validate_iomem(fwts_framework *fw) { FILE *file; char buffer[4096]; int pcidepth = 0; int failed = 0; memset(buffer, 0, 4096); if ((file = fopen("/proc/iomem", "r")) == NULL) return FWTS_ERROR; while (!feof(file)) { uint64_t start; uint64_t end; int type, type_must, type_mustnot; char *c, *c2; int i; bool skiperror = false; if (fgets(buffer, 4095, file)==NULL) break; fwts_chop_newline(buffer); /* * For pci bridges, we note the increased depth and * otherwise skip the entry */ if (strstr(buffer, ": PCI Bus ")) { pcidepth++; continue; } /* then: check the pci depth */ for (i=0; i skip */ if (*c==' ') continue; start = strtoull(c, NULL, 16); c2 = strchr(c, '-'); if (!c2) continue; c2++; end = strtoull(c2, NULL, 16); c2 = strstr(c, " : "); if (!c2) continue; c2+=3; /* exception: 640K - 1Mb range we ignore */ if (start >= 640*1024 && end <= 1024*1024) continue; type = cache_types(start, end); if (guess_cache_type(fw, c2, &type_must, &type_mustnot, start) != FWTS_OK) { /* This has failed, give up at this point */ fwts_skipped(fw, "Could not guess cache type."); fclose(file); return FWTS_ERROR; } if ((type & type_mustnot)!=0) { failed++; fwts_failed(fw, LOG_LEVEL_MEDIUM, "MTRRIncorrectAttr", "Memory range 0x%" PRIx64 " to 0x%" PRIx64 " (%s) " "has incorrect attribute%s.", start, end, c2, cache_to_string(type & type_mustnot)); if (type_must == UNCACHED) skiperror = true; } if (type & DEFAULT) { type |= UNCACHED; type &= ~DEFAULT; } if (((type & type_must) != type_must) && !skiperror) { failed++; fwts_failed(fw, LOG_LEVEL_MEDIUM, "MTRRLackingAttr", "Memory range 0x%" PRIx64 " to 0x%" PRIx64 " (%s) " "is lacking attribute%s.", start, end, c2, cache_to_string( (type & type_must) ^ type_must)); } } fclose(file); if (!failed) fwts_passed(fw, "Memory ranges seem to have correct attributes."); return FWTS_OK; } static void do_mtrr_resource(fwts_framework *fw) { fwts_list_link *item; struct mtrr_entry *entry; fwts_log_info_verbatum(fw,"MTRR overview"); fwts_log_info_verbatum(fw,"-------------"); fwts_list_foreach(item, mtrr_list) { entry = fwts_list_data(struct mtrr_entry *, item); if (entry->type & DISABLED) fwts_log_info_verbatum(fw, "Reg %hhu: disabled", entry->reg); else fwts_log_info_verbatum(fw, "Reg %hhu: 0x%16.16" PRIx64 " - 0x%16.16" PRIx64 " (%6" PRId64 " %cB) %s", entry->reg, entry->start, entry->end, (entry->size >= (1024*1024) ? entry->size / (1024*1024) : (entry->size / 1024)), entry->size >= (1024*1024) ? 'M' : 'K', cache_to_string(entry->type)); } fwts_log_nl(fw); } static int mtrr_init(fwts_framework *fw) { if (get_mtrrs() != FWTS_OK) { fwts_log_error(fw, "Failed to read /proc/mtrr."); return FWTS_ERROR; } if (access("/proc/mtrr", R_OK)) return FWTS_ERROR; if ((klog = fwts_klog_read()) == NULL) { fwts_log_error(fw, "Failed to read kernel log."); return FWTS_ERROR; } if ((fwts_cpuinfo = fwts_cpu_get_info(0)) == NULL) { fwts_log_error(fw, "Cannot get CPU info"); return FWTS_ERROR; } do_mtrr_resource(fw); return FWTS_OK; } static int mtrr_deinit(fwts_framework *fw) { FWTS_UNUSED(fw); fwts_klog_free(klog); fwts_list_free(mtrr_list, free); if (fwts_cpuinfo) fwts_cpu_free_info(fwts_cpuinfo); return FWTS_OK; } static int mtrr_test1(fwts_framework *fw) { return validate_iomem(fw); } static int mtrr_test2(fwts_framework *fw) { if (klog != NULL) { bool failed = false; if (fwts_klog_regex_find(fw, klog, "mtrr: your CPUs had inconsistent fixed MTRR settings") > 0) { fwts_log_info(fw, "Detected CPUs with inconsistent fixed MTRR settings which the kernel fixed."); failed = true; } if (fwts_klog_regex_find(fw, klog, "mtrr: your CPUs had inconsistent variable MTRR settings") > 0) { fwts_log_info(fw, "Detected CPUs with inconsistent variable MTRR settings which the kernel fixed."); failed = true; } if (fwts_klog_regex_find(fw, klog, "mtrr: your CPUs had inconsistent MTRRdefType") > 0) { fwts_log_info(fw, "Detected CPUs with inconsistent variable MTRR settings which the kernel fixed."); failed = true; } if (failed) fwts_failed(fw, LOG_LEVEL_MEDIUM, "MTRRCPUsMisconfigured", "It is probable that the BIOS does not set up " "all the CPUs correctly and the kernel has now " "corrected this misconfiguration."); else fwts_passed(fw, "All processors have the a consistent MTRR setup."); } else fwts_log_error(fw, "No boot dmesg found."); return FWTS_OK; } static int mtrr_test3(fwts_framework *fw) { if (strstr(fwts_cpuinfo->vendor_id, "AMD")) { if (klog != NULL) { if (fwts_klog_regex_find(fw, klog, "SYSCFG[MtrrFixDramModEn] not cleared by BIOS, clearing this bit") > 0) fwts_failed(fw, LOG_LEVEL_MEDIUM, "MTRRFixDramModEnBit", "The BIOS is expected to clear MtrrFixDramModEn bit, see for example " "\"BIOS and Kernel Developer's Guide for the AMD Athlon 64 and AMD " "Opteron Processors\" (26094 Rev. 3.30 February 2006), section " "\"13.2.1.2 SYSCFG Register\": \"The MtrrFixDramModEn bit should be set " "to 1 during BIOS initialization of the fixed MTRRs, then cleared to " "0 for operation.\""); else fwts_passed(fw, "No MtrrFixDramModEn error detected."); } } else fwts_skipped(fw, "CPU is not an AMD, cannot test."); return FWTS_OK; } static fwts_framework_minor_test mtrr_tests[] = { { mtrr_test1, "Validate the kernel MTRR IOMEM setup." }, { mtrr_test2, "Validate the MTRR setup across all processors." }, { mtrr_test3, "Test for AMD MtrrFixDramModEn being cleared by the BIOS." }, { NULL, NULL } }; static fwts_framework_ops mtrr_ops = { .description = "MTRR tests.", .init = mtrr_init, .deinit = mtrr_deinit, .minor_tests = mtrr_tests }; FWTS_REGISTER("mtrr", &mtrr_ops, FWTS_TEST_EARLY, FWTS_FLAG_BATCH | FWTS_FLAG_ROOT_PRIV); #endif src/bios/multiproc/000077500000000000000000000000001231470457100146235ustar00rootroot00000000000000src/bios/multiproc/mpcheck.c000066400000000000000000000374671231470457100164220ustar00rootroot00000000000000/* * Copyright (C) 2011-2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #include #include "fwts.h" #ifdef FWTS_ARCH_INTEL static fwts_mp_data mp_data; static bool mpcheck_find_bus(uint8_t id, int depth) { fwts_list_link *entry; if (depth > 16) return false; /* too deep? */ fwts_list_foreach(entry, &mp_data.entries) { uint8_t *data = fwts_list_data(uint8_t *, entry); if (*data == FWTS_MP_BUS_ENTRY) { fwts_mp_bus_entry *bus_entry = fwts_list_data(fwts_mp_bus_entry *, entry); if (id == bus_entry->bus_id) return true; } if (*data == FWTS_MP_BUS_HIERARCHY_ENTRY) { fwts_mp_bus_hierarchy_entry *bus_hierarchy_entry = fwts_list_data(fwts_mp_bus_hierarchy_entry *, entry); if (id == bus_hierarchy_entry->bus_id) return mpcheck_find_bus(bus_hierarchy_entry->parent_bus, depth+1); } } return false; } static int mpcheck_test_cpu_entries(fwts_framework *fw) { bool failed = false; int n = 0; fwts_list_link *entry1; int bootstrap_cpu = -1; bool usable_cpu_found = false; fwts_list_foreach(entry1, &mp_data.entries) { uint8_t *data1 = fwts_list_data(uint8_t *, entry1); if (*data1 == FWTS_MP_CPU_ENTRY) { fwts_list_link *entry2; int m = 0; uint32_t phys_addr1 = mp_data.phys_addr + ((void *)data1 - (void *)mp_data.header); fwts_mp_processor_entry *cpu_entry1 = fwts_list_data(fwts_mp_processor_entry *, entry1); /* Check Local APIC ID is unique */ fwts_list_foreach(entry2, &mp_data.entries) { uint8_t *data2 = fwts_list_data(uint8_t *, entry2); uint32_t phys_addr2 = mp_data.phys_addr + ((void *)data2 - (void *)mp_data.header); if (*data2 == FWTS_MP_CPU_ENTRY) { if ((n < m) && (entry2 != entry1)) { fwts_mp_processor_entry *cpu_entry2 = fwts_list_data(fwts_mp_processor_entry *, entry2); if (cpu_entry1->local_apic_id == cpu_entry2->local_apic_id) { fwts_failed(fw, LOG_LEVEL_HIGH, "MPCPUEntryLAPICId", "CPU Entry %d (@0x%8.8" PRIx32 ")" " and %d (@0x%8.8" PRIx32 ") " "have the same Local APIC ID " "0x%2.2" PRIx8 ".", n, phys_addr1, m, phys_addr2, cpu_entry1->local_apic_id); failed = true; break; } } m++; } } /* if ((cpu_entry1->local_apic_version != 0x11) && (cpu_entry1->local_apic_version != 0x14)) { fwts_failed(fw, LOG_LEVEL_HIGH, "MPCPUEntryLAPICVersion", "CPU Entry %d (@0x%8.8" PRIx32 ") has an " "invalid Local APIC Version %2.2x, should be " "0x11 or 0x14.", n, phys_addr, cpu_entry1->local_apic_version); failed = true; } */ if (cpu_entry1->cpu_flags & 1) usable_cpu_found = true; if ((cpu_entry1->cpu_flags >> 1) & 1) { if (bootstrap_cpu != -1) { fwts_failed(fw, LOG_LEVEL_HIGH, "MPCPUEntryBootCPU", "CPU Entry %d (@0x%8.8" PRIx32 ") " "is marked as a boot CPU but CPU entry " "%d is the first boot CPU.", n, phys_addr1, bootstrap_cpu); failed = true; } else bootstrap_cpu = n; } n++; } } if (!usable_cpu_found) { fwts_failed(fw, LOG_LEVEL_HIGH, "MPCPUEntryUsable", "CPU entries 0..%d were not marked as usable. " "There should be at least one usable CPU.", n-1); failed = true; } if (!failed) fwts_passed(fw, "All %d CPU entries look sane.", n); return FWTS_OK; } static char *bus_types[] = { "CBUS", "CBUSII", "EISA", "FUTURE", "INTERN", "ISA", "MBI", "MBII", "MCA", "MPI", "MPSA", "NUBUS", "PCI", "PCMCIA", "TC", "VL", "VME", "XPRESS", NULL, }; static int mpcheck_test_bus_entries(fwts_framework *fw) { bool failed = false; int n = 0; fwts_list_link *entry; int prev_bus_id = -1; fwts_list_foreach(entry, &mp_data.entries) { uint8_t *data = fwts_list_data(uint8_t *, entry); if (*data == FWTS_MP_BUS_ENTRY) { int i; uint32_t phys_addr = mp_data.phys_addr + ((void *)data - (void *)mp_data.header); fwts_mp_bus_entry *bus_entry = fwts_list_data(fwts_mp_bus_entry *, entry); for (i=0; bus_types[i] != NULL; i++) { if (strncmp(bus_types[i], (char*)bus_entry->bus_type, strlen(bus_types[i])) == 0) break; } if (bus_types[i] == NULL) { fwts_failed(fw, LOG_LEVEL_HIGH, "MPBusEntryBusType", "Bus Entry %d (@0x%8.8" PRIx32 ") has an " "unrecognised bus type: %6.6s", n, phys_addr, bus_entry->bus_type); } if (prev_bus_id == -1) { prev_bus_id = bus_entry->bus_id; if (prev_bus_id != 0) { fwts_failed(fw, LOG_LEVEL_HIGH, "MPBusEntryLAPICId", "Bus Entry %d (@0x%8.8" PRIx32 ") has a " "Local APIC ID 0x%2.2x and should be 0x00.", n, phys_addr, prev_bus_id); failed = true; } } else { if (bus_entry->bus_id < prev_bus_id) { fwts_failed(fw, LOG_LEVEL_HIGH, "MPBusEntryBusId", "Bus Entry %d (@0x%8.8" PRIx32 ") has a " "Bus ID 0x%2.2x and should be greater " "than 0x%2.2x.", n, phys_addr, bus_entry->bus_id, prev_bus_id); failed = true; } } n++; } } if (!failed) fwts_passed(fw, "All %d Bus Entries looked sane.", n); return FWTS_OK; } static int mpcheck_test_io_apic_entries(fwts_framework *fw) { bool failed = false; bool enabled = false; int n = 0; fwts_list_link *entry; fwts_list_foreach(entry, &mp_data.entries) { uint8_t *data = fwts_list_data(uint8_t *, entry); uint32_t phys_addr = mp_data.phys_addr + ((void *)data - (void *)mp_data.header); if (*data == FWTS_MP_IO_APIC_ENTRY) { fwts_mp_io_apic_entry *io_apic_entry = fwts_list_data(fwts_mp_io_apic_entry *, entry); if (io_apic_entry->address == 0) { fwts_failed(fw, LOG_LEVEL_HIGH, "MPIOAPICNullAddr", "IO APIC Entry %d (@0x%8.8" PRIx32 ") has an " "invalid NULL address, should be non-zero.", n, phys_addr); failed = true; } if (io_apic_entry->flags & 1) { enabled = true; } n++; } } if (!enabled) { fwts_failed(fw, LOG_LEVEL_HIGH, "MPIOAPICEnabled", "None of the %d IO APIC entries were enabled, " "at least one must be enabled.", n); failed = true; } if (!failed) fwts_passed(fw, "All %d IO APIC Entries look sane.", n); return FWTS_OK; } static bool mpcheck_find_io_apic(uint8_t id) { fwts_list_link *entry; if (id == 0xff) return true; /* match all */ fwts_list_foreach(entry, &mp_data.entries) { uint8_t *data = fwts_list_data(uint8_t *, entry); #if 0 if (*data == FWTS_MP_CPU_ENTRY) { fwts_mp_processor_entry *cpu_entry = fwts_list_data(fwts_mp_processor_entry *, entry); if (id == cpu_entry->local_apic_id) return true; } #endif if (*data == FWTS_MP_IO_APIC_ENTRY) { fwts_mp_io_apic_entry *io_apic_entry = fwts_list_data(fwts_mp_io_apic_entry *, entry); if (id == io_apic_entry->id) return true; } } return false; } static int mpcheck_test_io_interrupt_entries(fwts_framework *fw) { bool failed = false; int n = 0; fwts_list_link *entry; fwts_list_foreach(entry, &mp_data.entries) { uint8_t *data = fwts_list_data(uint8_t *, entry); uint32_t phys_addr = mp_data.phys_addr + ((void *)data - (void *)mp_data.header); if (*data == FWTS_MP_IO_INTERRUPT_ENTRY) { fwts_mp_io_interrupt_entry *io_interrupt_entry = fwts_list_data(fwts_mp_io_interrupt_entry *, entry); if (io_interrupt_entry->type > 3) { fwts_failed(fw, LOG_LEVEL_HIGH, "MPIOIRQType", "IO Interrupt Entry %d (@0x%8.8" PRIx32 ") has a " "Type 0x%2.2" PRIx8 " and should be 0x00..0x03.", n, phys_addr, io_interrupt_entry->type); failed = true; } if (!mpcheck_find_io_apic(io_interrupt_entry->destination_io_apic_id)) { fwts_failed(fw, LOG_LEVEL_HIGH, "MPIOAPICId", "IO Interrupt Entry %d (@0x%8.8" PRIx32 ") has a " "Destination IO APIC ID 0x%2.2" PRIx8 " " "which has not been defined.", n, phys_addr, io_interrupt_entry->destination_io_apic_id); failed = true; } n++; } } if (!failed) fwts_passed(fw, "All %d IO Interrupt Entries look sane.", n); return FWTS_OK; } static int mpcheck_test_local_interrupt_entries(fwts_framework *fw) { bool failed = false; int n = 0; fwts_list_link *entry; fwts_list_foreach(entry, &mp_data.entries) { uint8_t *data = fwts_list_data(uint8_t *, entry); uint32_t phys_addr = mp_data.phys_addr + ((void *)data - (void *)mp_data.header); if (*data == FWTS_MP_LOCAL_INTERRUPT_ENTRY) { fwts_mp_local_interrupt_entry *local_interrupt_entry = fwts_list_data(fwts_mp_local_interrupt_entry *, entry); if (local_interrupt_entry->type > 3) { fwts_failed(fw, LOG_LEVEL_HIGH, "MPLocalIRQType", "Local Interrupt Entry %d (@0x%8.8" PRIx32 ") has a " "Type 0x%2.2" PRIx8 " and should be 0x00..0x03.", n, phys_addr, local_interrupt_entry->type); failed = true; } #if 0 if (!mpcheck_find_io_apic(local_interrupt_entry->destination_local_apic_id)) { fwts_failed(fw, LOG_LEVEL_HIGH, "MPLocalIRQDestIRQAPIDId", "Local Interrupt Entry %d (@0x%8.8" PRIx32 ") has a" "Destination IO APIC ID 0x%2.2" PRIx8 " " "which has not been defined.", n, phys_addr, local_interrupt_entry->destination_local_apic_id); failed = true; } #endif n++; } } if (!failed) fwts_passed(fw, "All %d Local Interrupt Entries look sane.", n); return FWTS_OK; } static int mpcheck_test_sys_addr_entries(fwts_framework *fw) { bool failed = false; int n = 0; fwts_list_link *entry; fwts_list_foreach(entry, &mp_data.entries) { uint8_t *data = fwts_list_data(uint8_t *, entry); if (*data == FWTS_MP_SYS_ADDR_ENTRY) { uint32_t phys_addr = mp_data.phys_addr + ((void *)data - (void *)mp_data.header); fwts_mp_system_address_space_entry *sys_addr_entry = fwts_list_data(fwts_mp_system_address_space_entry *, entry); if (!mpcheck_find_bus(sys_addr_entry->bus_id, 0)) { fwts_failed(fw, LOG_LEVEL_MEDIUM, "MPSysAddrSpaceBusId", "System Address Space Mapping Entry %d (@0x%8.8" PRIx32 ") " "has an Bus ID 0x%2.2" PRIx8 " " "that is not defined in any of the Bus Entries.", n, phys_addr, sys_addr_entry->bus_id); failed = true; } if (sys_addr_entry->address_type > 3) { fwts_failed(fw, LOG_LEVEL_MEDIUM, "MPSysAddrSpaceType", "System Address Space Mapping Entry %d (@0x%8.8" PRIx32 ") " "has an incorrect Address Type: %2.2" PRIx8 ", " "should be 0..3.", n, phys_addr, sys_addr_entry->address_type); failed = true; } if (sys_addr_entry->address_length == 0) { fwts_failed(fw, LOG_LEVEL_MEDIUM, "MPSysAddrSpaceAddrLength", "System Address Space Mapping Entry %d " "(@0x%8.8" PRIx32 ") has a " "zero sized Address Length.", n, phys_addr); failed = true; } n++; } } if (!failed) fwts_passed(fw, "All %d System Address Space Mapping Entries looks sane.", n); return FWTS_OK; } static int mpcheck_test_bus_hierarchy_entries(fwts_framework *fw) { bool failed = false; int n = 0; fwts_list_link *entry; fwts_list_foreach(entry, &mp_data.entries) { uint8_t *data = fwts_list_data(uint8_t *, entry); if (*data == FWTS_MP_BUS_HIERARCHY_ENTRY) { uint32_t phys_addr = mp_data.phys_addr + ((void *)data - (void *)mp_data.header); fwts_mp_bus_hierarchy_entry *bus_hierarchy_entry = fwts_list_data(fwts_mp_bus_hierarchy_entry *, entry); if (bus_hierarchy_entry->length != 8) { fwts_failed(fw, LOG_LEVEL_MEDIUM, "MPBusHieraracyLength", "Bus Hierarchy Entry %d (@x%8.8" PRIx32 ") " "length was 0x%2.2" PRIx8 ", it should be 0x08.", n, phys_addr, bus_hierarchy_entry->length); failed = true; } if (!mpcheck_find_bus(bus_hierarchy_entry->parent_bus, 0)) { fwts_failed(fw, LOG_LEVEL_MEDIUM, "MPBusHierarchyParents", "Bus Hierarchy Entry %d (@x%8.8" PRIx32 ") " "did not have parents that " "connected to a top level Bus entry.", n, phys_addr); failed = true; } n++; } } if (!failed) fwts_passed(fw, "All %d Bus Hierarchy Entries look sane.", n); return FWTS_OK; } static int mpcheck_test_compat_bus_address_space_entries(fwts_framework *fw) { bool failed = false; int n = 0; fwts_list_link *entry; fwts_list_foreach(entry, &mp_data.entries) { uint8_t *data = fwts_list_data(uint8_t *, entry); if (*data == FWTS_MP_COMPAT_BUS_ADDRESS_SPACE_ENTRY) { uint32_t phys_addr = mp_data.phys_addr + ((void *)data - (void *)mp_data.header); fwts_mp_compat_bus_address_space_entry *compat_bus_entry = fwts_list_data(fwts_mp_compat_bus_address_space_entry*, entry); if (compat_bus_entry->length != 8) { fwts_failed(fw, LOG_LEVEL_MEDIUM, "MPCompatBusLength", "Compatible Bus Address Space Entry %d " "(@x%8.8" PRIx32 ") " "length was 0x%2.2" PRIx8 ", it should be 0x08.", n, phys_addr, compat_bus_entry->length); failed = true; } if (compat_bus_entry->range_list > 1) { fwts_failed(fw, LOG_LEVEL_MEDIUM, "MPCompatBusRangeList", "Compatible Bus Address Space Entry %d " "(@x%8.8" PRIx32 ") Range List was 0x%8.8" PRIx32 ", it should be 0x00 or 0x01.", n, phys_addr, compat_bus_entry->range_list); failed = true; } n++; } } if (!failed) fwts_passed(fw, "All %d Compatible Bus Address Space Entries look sane.", n); return FWTS_OK; } static int mpcheck_init(fwts_framework *fw) { if (fwts_mp_data_get(&mp_data) != FWTS_OK) { fwts_log_error(fw, "Failed to get _MP_ data from firmware."); return FWTS_SKIP; } return FWTS_OK; } static int mpcheck_deinit(fwts_framework *fw) { FWTS_UNUSED(fw); return fwts_mp_data_free(&mp_data); } static int mpcheck_test_header(fwts_framework *fw) { bool failed = false; if (strncmp((char*)mp_data.header->signature, FWTS_MP_HEADER_SIGNATURE, 4)) { fwts_failed(fw, LOG_LEVEL_MEDIUM, "MPHeaderSig", "MP header signature should be %s, got %4.4s.", FWTS_MP_HEADER_SIGNATURE, mp_data.header->signature); failed = true; } if ((mp_data.header->spec_rev != 1) && (mp_data.header->spec_rev != 4)) { fwts_failed(fw, LOG_LEVEL_MEDIUM, "MPHeaderRevision", "MP header spec revision should be 1 or 4, got %" PRIx8 ".", mp_data.header->spec_rev); failed = true; } if (mp_data.header->lapic_address == 0) { fwts_failed(fw, LOG_LEVEL_MEDIUM, "MPHeaderLAPICAddrNull", "MP header LAPIC address is NULL."); failed = true; } if (!failed) fwts_passed(fw, "MP header looks sane."); return FWTS_OK; } static fwts_framework_minor_test mpcheck_tests[] = { { mpcheck_test_header, "Test MP header." }, { mpcheck_test_cpu_entries, "Test MP CPU entries." }, { mpcheck_test_bus_entries, "Test MP Bus entries." }, { mpcheck_test_io_apic_entries, "Test MP IO APIC entries." }, { mpcheck_test_io_interrupt_entries, "Test MP IO Interrupt entries." }, { mpcheck_test_local_interrupt_entries, "Test MP Local Interrupt entries." }, { mpcheck_test_sys_addr_entries, "Test MP System Address entries." }, { mpcheck_test_bus_hierarchy_entries, "Test MP Bus Hierarchy entries." }, { mpcheck_test_compat_bus_address_space_entries, "Test MP Compatible Bus Address Space entries." }, { NULL, NULL } }; static fwts_framework_ops mpcheck_ops = { .description = "MultiProcessor Tables tests.", .init = mpcheck_init, .deinit = mpcheck_deinit, .minor_tests = mpcheck_tests, }; FWTS_REGISTER("mpcheck", &mpcheck_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | FWTS_FLAG_ROOT_PRIV); #endif src/bios/multiproc/mpdump.c000066400000000000000000000464621231470457100163050ustar00rootroot00000000000000/* * Copyright (C) 2011-2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #include "fwts.h" #ifdef FWTS_ARCH_INTEL static const char *mpdump_inttype[] = { "INT", "NMI", "SMI", "ExtInt" }; static const char *mpdump_po[] = { "Conforms to bus specification", "Active High", "Reserved", "Active Low" }; static const char *mpdump_po_short[] = { "Con", "Hi ", "Rsv", "Lo " }; static const char *mpdump_el[] = { "Conforms to bus specification", "Edge-Triggered", "Reserved", "Level-Triggered" }; static const char *mpdump_el_short[] = { "Con", "Edg", "Rsv", "Lvl" }; static const char *mpdump_sys_addr_type[] = { "I/O", "Memory", "Prefetch" }; static const char *mpdump_yes_no[] = { "No", "Yes" }; static void mpdump_dump_header(fwts_framework *fw, fwts_mp_config_table_header *header, uint32_t phys_addr) { fwts_log_info_verbatum(fw,"MultiProcessor Header: (@0x%8.8x)", phys_addr); fwts_log_info_verbatum(fw," Signature: %4.4s\n", header->signature); fwts_log_info_verbatum(fw," Table Length: 0x%x bytes\n", header->base_table_length); fwts_log_info_verbatum(fw," Spec Revision: %d (1.%d)\n", header->spec_rev, header->spec_rev); fwts_log_info_verbatum(fw," OEM ID: %8.8s\n", header->oem_id); fwts_log_info_verbatum(fw," Product ID: %12.12s\n", header->product_id); fwts_log_info_verbatum(fw," Entry Count: 0x%x\n", header->entry_count); fwts_log_info_verbatum(fw," LAPIC Address: 0x%8.8x\n", header->lapic_address); fwts_log_info_verbatum(fw," Extended Length: 0x%x bytes\n", header->extended_table_length); fwts_log_nl(fw); } static void mpdump_dump_cpu_entry(fwts_framework *fw, void *data, uint32_t phys_addr) { fwts_mp_processor_entry *cpu_entry = (fwts_mp_processor_entry *)data; fwts_log_info_verbatum(fw, "CPU Entry: (@0x%8.8x)", phys_addr); fwts_log_info_verbatum(fw, " Local APIC ID: 0x%2.2x", cpu_entry->local_apic_id); fwts_log_info_verbatum(fw, " Local APIC Version: 0x%2.2x", cpu_entry->local_apic_version); fwts_log_info_verbatum(fw, " CPU Flags: 0x%2.2x", cpu_entry->cpu_flags); fwts_log_info_verbatum(fw, " Usable: %1.1d (%s)", cpu_entry->cpu_flags & 1, mpdump_yes_no[cpu_entry->cpu_flags & 1]); fwts_log_info_verbatum(fw, " Bootstrap CPU: %1.1d (%s)", (cpu_entry->cpu_flags >> 1) & 1, mpdump_yes_no[(cpu_entry->cpu_flags >> 1) & 1]); fwts_log_info_verbatum(fw, " CPU Signature:"); fwts_log_info_verbatum(fw, " Stepping: 0x%2.2x", cpu_entry->cpu_signature & 0xf); fwts_log_info_verbatum(fw, " Model: 0x%2.2x", (cpu_entry->cpu_signature >> 4) & 0xf); fwts_log_info_verbatum(fw, " Family: 0x%2.2x", (cpu_entry->cpu_signature >> 8) & 0xf); fwts_log_info_verbatum(fw, " Feature Flags:"); fwts_log_info_verbatum(fw, " FPU present: %1.1d (%s)", (cpu_entry->feature_flags) & 1, mpdump_yes_no[(cpu_entry->feature_flags) & 1]); fwts_log_info_verbatum(fw, " MCE: %1.1d (%s)", (cpu_entry->feature_flags >> 7) & 1, mpdump_yes_no[(cpu_entry->feature_flags >> 7) & 1]); fwts_log_info_verbatum(fw, " CPMPXCHG8B: %1.1d (%s)", (cpu_entry->feature_flags >> 8) & 1, mpdump_yes_no[(cpu_entry->feature_flags >> 8) & 1]); fwts_log_info_verbatum(fw, " APIC enabled: %1.1d (%s)", (cpu_entry->feature_flags >> 9) & 1, mpdump_yes_no[(cpu_entry->feature_flags >> 9) & 1]); fwts_log_nl(fw); } static void mpdump_dump_bus_entry(fwts_framework *fw, void *data, uint32_t phys_addr) { fwts_mp_bus_entry *bus_entry = (fwts_mp_bus_entry *)data; fwts_log_info_verbatum(fw, "Bus Entry: (@0x%8.8x)", phys_addr); fwts_log_info_verbatum(fw, " Bus ID: 0x%2.2x", bus_entry->bus_id); fwts_log_info_verbatum(fw, " Bus Type: %6.6s", bus_entry->bus_type); fwts_log_nl(fw); } static void mpdump_dump_io_apic_entry(fwts_framework *fw, void *data, uint32_t phys_addr) { fwts_mp_io_apic_entry *io_apic_entry = (fwts_mp_io_apic_entry *)data; fwts_log_info_verbatum(fw, "IO APIC Entry: (@0x%8.8x)", phys_addr); fwts_log_info_verbatum(fw, " IO APIC ID: 0x%2.2x", io_apic_entry->id); fwts_log_info_verbatum(fw, " IO APIC Version: 0x%2.2x", io_apic_entry->version); fwts_log_info_verbatum(fw, " Flags: 0x%2.2x", io_apic_entry->flags); fwts_log_info_verbatum(fw, " Address: 0x%8.8x", io_apic_entry->address); fwts_log_nl(fw); } static void mpdump_dump_io_interrupt_entry(fwts_framework *fw, void *data, uint32_t phys_addr) { fwts_mp_io_interrupt_entry *io_interrupt_entry = (fwts_mp_io_interrupt_entry *)data; fwts_log_info_verbatum(fw, "IO Interrupt Assignment Entry: (@0x%8.8x)", phys_addr); fwts_log_info_verbatum(fw, " Interrupt Type: 0x%2.2x (%s)", io_interrupt_entry->type, io_interrupt_entry->type < 4 ? mpdump_inttype[io_interrupt_entry->type] : "Unknown"); fwts_log_info_verbatum(fw, " Flags: 0x%4.4x", io_interrupt_entry->flags); fwts_log_info_verbatum(fw, " PO (Polarity) %1.1d (%s)", io_interrupt_entry->flags & 2, mpdump_po[io_interrupt_entry->flags & 2]); fwts_log_info_verbatum(fw, " EL (Trigger) %1.1d (%s)", (io_interrupt_entry->flags >> 2) & 2, mpdump_el[(io_interrupt_entry->flags >> 2) & 2]); fwts_log_info_verbatum(fw, " Src Bus ID: 0x%2.2x", io_interrupt_entry->source_bus_id); fwts_log_info_verbatum(fw, " Src Bus IRQ 0x%2.2x", io_interrupt_entry->source_bus_irq); fwts_log_info_verbatum(fw, " Dst I/O APIC: 0x%2.2x", io_interrupt_entry->destination_io_apic_id); fwts_log_info_verbatum(fw, " Dst I/O APIC INTIN: 0x%2.2x", io_interrupt_entry->destination_io_apic_intin); fwts_log_nl(fw); } static void mpdump_dump_local_interrupt_entry(fwts_framework *fw, void *data, uint32_t phys_addr) { fwts_mp_local_interrupt_entry *local_interrupt_entry = (fwts_mp_local_interrupt_entry *)data; fwts_log_info_verbatum(fw, "Local Interrupt Assignement Entry: (@0x%8.8x)", phys_addr); fwts_log_info_verbatum(fw, " Interrupt Type: 0x%2.2x (%s)", local_interrupt_entry->type, local_interrupt_entry->type < 4 ? mpdump_inttype[local_interrupt_entry->type] : "Unknown"); fwts_log_info_verbatum(fw, " Flags: 0x%4.4x", local_interrupt_entry->flags); fwts_log_info_verbatum(fw, " PO (Polarity) %1.1d (%s)", local_interrupt_entry->flags & 2, mpdump_po[local_interrupt_entry->flags & 2]); fwts_log_info_verbatum(fw, " EL (Trigger) %1.1d (%s)", (local_interrupt_entry->flags >> 2) & 2, mpdump_el[(local_interrupt_entry->flags >> 2) & 2]); fwts_log_info_verbatum(fw, " Src Bus ID: 0x%2.2x", local_interrupt_entry->source_bus_id); fwts_log_info_verbatum(fw, " Src Bus IRQ 0x%2.2x", local_interrupt_entry->source_bus_irq); fwts_log_info_verbatum(fw, " Dst I/O APIC: 0x%2.2x", local_interrupt_entry->destination_local_apic_id); fwts_log_info_verbatum(fw, " Dst I/O APIC INTIN: 0x%2.2x", local_interrupt_entry->destination_local_apic_intin); fwts_log_nl(fw); } static void mpdump_dump_sys_addr_entry(fwts_framework *fw, void *data, uint32_t phys_addr) { fwts_mp_system_address_space_entry *sys_addr_entry = (fwts_mp_system_address_space_entry *)data; fwts_log_info_verbatum(fw, "System Address Space Mapping Entry: (@0x%8.8x)", phys_addr); fwts_log_info_verbatum(fw, " Bus ID: 0x%2.2x", sys_addr_entry->bus_id); fwts_log_info_verbatum(fw, " Address Type: 0x%2.2x (%s)", sys_addr_entry->address_type, sys_addr_entry->address_type < 3 ? mpdump_sys_addr_type[sys_addr_entry->address_type] : "Unknown"); fwts_log_info_verbatum(fw, " Address Start: 0x%16.16llx", (unsigned long long)sys_addr_entry->address_base); fwts_log_info_verbatum(fw, " Address End: 0x%16.16llx", (unsigned long long)sys_addr_entry->address_base + sys_addr_entry->address_length); fwts_log_info_verbatum(fw, " Address Length 0x%16.16llx", (unsigned long long)sys_addr_entry->address_length); fwts_log_nl(fw); } static void mpdump_dump_bus_hierarchy_entry(fwts_framework *fw, void *data, uint32_t phys_addr) { fwts_mp_bus_hierarchy_entry *bus_hierarchy_entry = (fwts_mp_bus_hierarchy_entry*)data; fwts_log_info_verbatum(fw, "Bus Hierarchy Descriptor Entry: (@0x%8.8x)", phys_addr); fwts_log_info_verbatum(fw, " Bus ID: 0x%2.2x", bus_hierarchy_entry->bus_id); fwts_log_info_verbatum(fw, " Bus Information: 0x%1.1x", bus_hierarchy_entry->bus_info & 0xf); fwts_log_info_verbatum(fw, " Parent Bus: 0x%8.8x", bus_hierarchy_entry->parent_bus); fwts_log_nl(fw); } static void multproc_dump_compat_bus_address_space_entry(fwts_framework *fw, void *data, uint32_t phys_addr) { fwts_mp_compat_bus_address_space_entry *compat_bus_entry = (fwts_mp_compat_bus_address_space_entry*)data; fwts_log_info_verbatum(fw, "Compatible Bus Hierarchy Descriptor Entry: (@0x%8.8x)", phys_addr); fwts_log_info_verbatum(fw, " Bus ID: 0x%2.2x", compat_bus_entry->bus_id); fwts_log_info_verbatum(fw, " Address Mod: 0x%2.2x", compat_bus_entry->address_mod); fwts_log_info_verbatum(fw, " Predefine Range: 0x%8.8x", compat_bus_entry->range_list); fwts_log_nl(fw); } static fwts_mp_data mp_data; static int mpdump_init(fwts_framework *fw) { if (fwts_mp_data_get(&mp_data) != FWTS_OK) { fwts_log_error(fw, "Failed to get _MP_ data from firmware."); return FWTS_SKIP; } return FWTS_OK; } static int mpdump_deinit(fwts_framework *fw) { FWTS_UNUSED(fw); return fwts_mp_data_free(&mp_data); } static int mpdump_compare_bus(void *data1, void *data2) { fwts_mp_bus_entry *bus_entry1 = (fwts_mp_bus_entry *)data1; fwts_mp_bus_entry *bus_entry2 = (fwts_mp_bus_entry *)data2; return bus_entry1->bus_id - bus_entry2->bus_id; } static void mpdump_dump_bus(fwts_framework *fw) { fwts_list_link *entry; fwts_list sorted; fwts_list_init(&sorted); fwts_list_foreach(entry, &mp_data.entries) { uint8_t *data = fwts_list_data(uint8_t *, entry); if (*data == FWTS_MP_BUS_ENTRY) fwts_list_add_ordered(&sorted, data, mpdump_compare_bus); } fwts_log_info_verbatum(fw, "Bus:"); fwts_log_info_verbatum(fw, " ID Type"); fwts_list_foreach(entry, &sorted) { fwts_mp_bus_entry *bus_entry = fwts_list_data(fwts_mp_bus_entry *, entry); fwts_log_info_verbatum(fw, " %3d %6.6s", bus_entry->bus_id, bus_entry->bus_type); } fwts_log_nl(fw); fwts_list_free_items(&sorted, NULL); } static int mpdump_compare_io_irq(void *data1, void *data2) { fwts_mp_io_interrupt_entry *entry1 = (fwts_mp_io_interrupt_entry*)data1; fwts_mp_io_interrupt_entry *entry2 = (fwts_mp_io_interrupt_entry*)data2; return (entry1->source_bus_irq + (entry1->source_bus_id * 256)) - (entry2->source_bus_irq + (entry2->source_bus_id * 256)); } static int mpdump_compare_local_irq(void *data1, void *data2) { fwts_mp_local_interrupt_entry *entry1 = (fwts_mp_local_interrupt_entry*)data1; fwts_mp_local_interrupt_entry *entry2 = (fwts_mp_local_interrupt_entry*)data2; return entry1->source_bus_irq - entry2->source_bus_irq; } static char *mpdump_find_bus_name(uint8_t bus_id) { fwts_list_link *entry; fwts_list_foreach(entry, &mp_data.entries) { uint8_t *data = fwts_list_data(uint8_t *, entry); if (*data == FWTS_MP_BUS_ENTRY) { fwts_mp_bus_entry *bus_entry = fwts_list_data(fwts_mp_bus_entry *, entry); if (bus_entry->bus_id == bus_id) return (char*)&bus_entry->bus_type; } } return "Unknown"; } static char *mpdump_dst_io_apic(uint8_t apic) { static char buffer[4]; if (apic == 255) return "all"; else { snprintf(buffer, sizeof(buffer), "%d", apic); return buffer; } } static uint8_t mpdump_get_apic_id(void *data) { uint8_t *which = (uint8_t*)data; if (*which == FWTS_MP_CPU_ENTRY) { fwts_mp_processor_entry *cpu_entry = (fwts_mp_processor_entry *)data; return cpu_entry->local_apic_id; } if (*which == FWTS_MP_IO_APIC_ENTRY) { fwts_mp_io_apic_entry *io_apic_entry = (fwts_mp_io_apic_entry *)data; return io_apic_entry->id; } return 0xff; } static int mpdump_compare_apic_id(void *data1, void *data2) { uint8_t val1 = mpdump_get_apic_id(data1); uint8_t val2 = mpdump_get_apic_id(data2); return (int)val1 - (int)val2; } static void mpdump_dump_apics(fwts_framework *fw) { fwts_list_link *entry; fwts_list sorted; fwts_list_init(&sorted); fwts_list_foreach(entry, &mp_data.entries) { uint8_t *data = fwts_list_data(uint8_t *, entry); if ((*data == FWTS_MP_CPU_ENTRY) || (*data == FWTS_MP_IO_APIC_ENTRY)) fwts_list_add_ordered(&sorted, data, mpdump_compare_apic_id); } fwts_log_info_verbatum(fw, "APIC IDs:"); fwts_log_info_verbatum(fw, " ID Type"); fwts_list_foreach(entry, &sorted) { uint8_t *data = fwts_list_data(uint8_t *, entry); fwts_log_info_verbatum(fw, " %3d %s APIC", mpdump_get_apic_id(data), (*data == FWTS_MP_CPU_ENTRY) ? "CPU Local" : "I/O"); } fwts_log_nl(fw); fwts_list_free_items(&sorted, NULL); } static void mpdump_dump_irq_table(fwts_framework *fw) { fwts_list_link *entry; fwts_list sorted; fwts_list_init(&sorted); fwts_list_foreach(entry, &mp_data.entries) { uint8_t *data = fwts_list_data(uint8_t *, entry); if (*data == FWTS_MP_IO_INTERRUPT_ENTRY) fwts_list_add_ordered(&sorted, data, mpdump_compare_io_irq); } fwts_log_info_verbatum(fw, "IO Interrupts:"); fwts_log_info_verbatum(fw, " Src Bus Src Bus Src Bus Dst I/O Dst I/O Type Polarity Trigger"); fwts_log_info_verbatum(fw, " ID Type IRQ APIC APIC INTIN"); fwts_list_foreach(entry, &sorted) { fwts_mp_io_interrupt_entry *io_interrupt_entry = fwts_list_data(fwts_mp_io_interrupt_entry *, entry); fwts_log_info_verbatum(fw, " %3d %-6.6s %3d %3.3s %3d %-6.6s %-7.7s %-7.7s", io_interrupt_entry->source_bus_id, mpdump_find_bus_name(io_interrupt_entry->source_bus_id), io_interrupt_entry->source_bus_irq, mpdump_dst_io_apic(io_interrupt_entry->destination_io_apic_id), io_interrupt_entry->destination_io_apic_intin, io_interrupt_entry->type < 4 ? mpdump_inttype[io_interrupt_entry->type] : "Unknown", mpdump_po_short[io_interrupt_entry->flags & 2], mpdump_el_short[(io_interrupt_entry->flags >> 2) & 2]); } fwts_log_nl(fw); fwts_list_free_items(&sorted, NULL); fwts_list_init(&sorted); fwts_list_foreach(entry, &mp_data.entries) { uint8_t *data = fwts_list_data(uint8_t *, entry); if (*data == FWTS_MP_LOCAL_INTERRUPT_ENTRY) fwts_list_add_ordered(&sorted, data, mpdump_compare_local_irq); } fwts_log_info_verbatum(fw, "Local Interrupts:"); fwts_log_info_verbatum(fw, " Src Bus Src Bus Src Bus Dst I/O Dst I/O Type Polarity Trigger"); fwts_log_info_verbatum(fw, " ID Type IRQ APIC APIC INTIN"); fwts_list_foreach(entry, &sorted) { fwts_mp_local_interrupt_entry *local_interrupt_entry = fwts_list_data(fwts_mp_local_interrupt_entry *, entry); fwts_log_info_verbatum(fw, " %3d %-6.6s %3d %3.3s %3d %-6.6s %-7.7s %-7.7s", local_interrupt_entry->source_bus_id, mpdump_find_bus_name(local_interrupt_entry->source_bus_id), local_interrupt_entry->source_bus_irq, mpdump_dst_io_apic(local_interrupt_entry->destination_local_apic_id), local_interrupt_entry->destination_local_apic_intin, local_interrupt_entry->type < 4 ? mpdump_inttype[local_interrupt_entry->type] : "Unknown", mpdump_po_short[local_interrupt_entry->flags & 2], mpdump_el_short[(local_interrupt_entry->flags >> 2) & 2]); } fwts_log_nl(fw); fwts_log_info_verbatum(fw, "Key: Con - Conforms to bus spec, Hi - Active High, Lo - Active Lo"); fwts_log_info_verbatum(fw, " Rsv - Reserved, Lvl - Level Triggered, Edg - Edge Triggered"); fwts_log_nl(fw); fwts_list_free_items(&sorted, NULL); } static int mpdump_compare_system_address_space(void *data1, void *data2) { int64_t diff; fwts_mp_system_address_space_entry *sys_addr_entry1 = (fwts_mp_system_address_space_entry *)data1; fwts_mp_system_address_space_entry *sys_addr_entry2 = (fwts_mp_system_address_space_entry *)data2; diff = sys_addr_entry1->address_base - sys_addr_entry2->address_base; if (diff == 0) return 0; else if (diff < 0) return -1; else return 0; } static void mpdump_dump_system_address_table(fwts_framework *fw) { fwts_list_link *entry; fwts_list sorted; fwts_list_init(&sorted); fwts_list_foreach(entry, &mp_data.entries) { uint8_t *data = fwts_list_data(uint8_t *, entry); if (*data == 128) fwts_list_add_ordered(&sorted, data, mpdump_compare_system_address_space); } fwts_log_info_verbatum(fw, "System Address Table:"); fwts_log_info_verbatum(fw, " Start Address End Address Bus ID Type"); fwts_list_foreach(entry, &sorted) { fwts_mp_system_address_space_entry *sys_addr_entry = fwts_list_data(fwts_mp_system_address_space_entry *, entry); fwts_log_info_verbatum(fw, " %16.16llx - %16.16llx %3d %s", (unsigned long long)sys_addr_entry->address_base, (unsigned long long)sys_addr_entry->address_base + sys_addr_entry->address_length, sys_addr_entry->bus_id, sys_addr_entry->address_type < 3 ? mpdump_sys_addr_type[sys_addr_entry->address_type] : "Unknown"); } fwts_list_free_items(&sorted, NULL); } static int mpdump_test1(fwts_framework *fw) { fwts_list_link *entry; fwts_infoonly(fw); mpdump_dump_header(fw, mp_data.header, mp_data.phys_addr); fwts_list_foreach(entry, &mp_data.entries) { uint8_t *data = fwts_list_data(uint8_t *, entry); uint32_t phys_addr = mp_data.phys_addr + ((void *)data - (void *)mp_data.header); switch (*data) { case FWTS_MP_CPU_ENTRY: mpdump_dump_cpu_entry(fw, data, phys_addr); break; case FWTS_MP_BUS_ENTRY: mpdump_dump_bus_entry(fw, data, phys_addr); break; case FWTS_MP_IO_APIC_ENTRY: mpdump_dump_io_apic_entry(fw, data, phys_addr); break; case FWTS_MP_IO_INTERRUPT_ENTRY: mpdump_dump_io_interrupt_entry(fw, data, phys_addr); break; case FWTS_MP_LOCAL_INTERRUPT_ENTRY: mpdump_dump_local_interrupt_entry(fw, data, phys_addr); break; case FWTS_MP_SYS_ADDR_ENTRY: mpdump_dump_sys_addr_entry(fw, data, phys_addr); break; case FWTS_MP_BUS_HIERARCHY_ENTRY: mpdump_dump_bus_hierarchy_entry(fw, data, phys_addr); break; case FWTS_MP_COMPAT_BUS_ADDRESS_SPACE_ENTRY: multproc_dump_compat_bus_address_space_entry(fw, data, phys_addr); break; default: break; } } fwts_log_underline(fw->results, '-'); fwts_log_info(fw, "Collated Data:"); fwts_log_nl(fw); mpdump_dump_bus(fw); mpdump_dump_apics(fw); mpdump_dump_irq_table(fw); mpdump_dump_system_address_table(fw); return FWTS_OK; } static fwts_framework_minor_test mpdump_tests[] = { { mpdump_test1, "Dump Multi Processor Data." }, { NULL, NULL } }; static fwts_framework_ops mpdump_ops = { .description = "Dump MultiProcessor Data.", .init = mpdump_init, .deinit = mpdump_deinit, .minor_tests = mpdump_tests, }; FWTS_REGISTER("mpdump", &mpdump_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_UTILS | FWTS_FLAG_ROOT_PRIV); #endif src/bios/os2gap/000077500000000000000000000000001231470457100140005ustar00rootroot00000000000000src/bios/os2gap/os2gap.c000066400000000000000000000044071231470457100153440ustar00rootroot00000000000000/* * Copyright (C) 2006, Intel Corporation * Copyright (C) 2010-2014 Canonical * * This code was originally part of the Linux-ready Firmware Developer Kit * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #include "fwts.h" #ifdef FWTS_ARCH_INTEL #define OS2_GAP_ADDRESS (15*1024*1024) #define OS2_GAP_SIZE (1024*1024) static fwts_list *os2gap_memory_map_info; static int os2gap_init(fwts_framework *fw) { if ((os2gap_memory_map_info = fwts_memory_map_table_load(fw)) == NULL) { fwts_log_warning(fw, "No memory map table found"); return FWTS_ERROR; } return FWTS_OK; } static int os2gap_deinit(fwts_framework *fw) { FWTS_UNUSED(fw); if (os2gap_memory_map_info) fwts_memory_map_table_free(os2gap_memory_map_info); return FWTS_OK; } static int os2gap_test1(fwts_framework *fw) { if (fwts_memory_map_is_reserved(os2gap_memory_map_info, OS2_GAP_ADDRESS)) { fwts_failed(fw, LOG_LEVEL_HIGH, "OS2Gap", "The memory map has OS/2 memory hole of %dK at %p..%p.", OS2_GAP_SIZE / 1024, (void*)OS2_GAP_ADDRESS, (void*)(OS2_GAP_ADDRESS + OS2_GAP_SIZE)); fwts_log_nl(fw); fwts_memory_map_table_dump(fw, os2gap_memory_map_info); } else fwts_passed(fw, "No OS/2 memory hole found."); return FWTS_OK; } static fwts_framework_minor_test os2gap_tests[] = { { os2gap_test1, "Test the OS/2 15Mb memory hole is absent." }, { NULL, NULL } }; static fwts_framework_ops os2gap_ops = { .description = "OS/2 memory hole test.", .init = os2gap_init, .deinit = os2gap_deinit, .minor_tests = os2gap_tests }; FWTS_REGISTER("os2gap", &os2gap_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH); #endif src/bios/pciirq/000077500000000000000000000000001231470457100140745ustar00rootroot00000000000000src/bios/pciirq/pciirq.c000066400000000000000000000174061231470457100155370ustar00rootroot00000000000000/* * Copyright (C) 2011-2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #include #include #include #include "fwts.h" #ifdef FWTS_ARCH_INTEL /* PCI IRQ Routing Table, see http://www.microsoft.com/taiwan/whdc/archive/pciirq.mspx */ #define PCIIRQ_REGION_START (0x000f0000) #define PCIIRQ_REGION_END (0x000fffff) #define PCIIRQ_REGION_SIZE (PCIIRQ_REGION_END - PCIIRQ_REGION_START) #define RESERVED_SIZE (11) typedef struct { uint8_t link; uint16_t bitmap; } __attribute__ ((packed)) INT_entry; typedef struct { uint8_t pci_bus_number; uint8_t pci_dev_number; INT_entry INT[4]; uint8_t slot_number; uint8_t reserved; } __attribute__ ((packed)) slot_entry; typedef struct { uint8_t signature[4]; uint16_t version; uint16_t table_size; uint8_t routers_bus; uint8_t routers_devfunc; uint16_t exclusive_irqs; uint32_t compatible_pci_router; uint32_t miniport_data; uint8_t reserved[RESERVED_SIZE]; uint8_t checksum; slot_entry slots[0]; } __attribute__ ((packed)) pci_irq_routing_table; static const char *pciirq_reserved(uint8_t *data) { static char buf[1+ (RESERVED_SIZE * 5)]; char tmp[6]; int i; *buf = '\0'; for (i=0; i < RESERVED_SIZE; i++) { snprintf(tmp, sizeof(tmp), "%s0x%2.2x", *buf ? ",": "", data[i]); strcat(buf, tmp); } return buf; } static const char *pciirq_irq_bitmap(uint16_t val) { static char buf[40]; *buf = '\0'; if (val) { int i; for (i = 0; i < 16; val >>= 1, i++) { if (val & 1) { char tmp[5]; snprintf(tmp, sizeof(tmp), "%s%d", *buf ? " ": "", i); strcat(buf, tmp); } } return buf; } else return "none"; } static int pciirq_test1(fwts_framework *fw) { uint8_t *mem; int i; int found = 0; static uint8_t empty_reserved[RESERVED_SIZE]; fwts_log_info(fw, "This test tries to find and sanity check the PCI IRQ Routing " "Table, as defined by " "http://www.microsoft.com/taiwan/whdc/archive/pciirq.mspx " " and described in pages 233-238 of PCI System Architecture, " "Fourth Edition, Mindshare, Inc. (1999). " "NOTE: The PCI IRQ Routing Table only really knows about ISA IRQs " "and is generally not used with APIC. "); if ((mem = fwts_mmap(PCIIRQ_REGION_START, PCIIRQ_REGION_SIZE)) == FWTS_MAP_FAILED) { fwts_log_error(fw, "Cannot mmap firmware region."); return FWTS_ERROR; } for (i=0; i < PCIIRQ_REGION_SIZE; i+= 16) { pci_irq_routing_table *pciirq = (pci_irq_routing_table*)(mem+i); if ((memcmp(pciirq->signature, "$PIR", 4) == 0) && (fwts_checksum(mem+i, pciirq->table_size) == 0)) { int j, k; slot_entry *slot; int slot_count = (pciirq->table_size - 32) / sizeof(slot_entry); int expected_size = (32 + (slot_count * sizeof(slot_entry))); bool slot_ok = true; fwts_log_nl(fw); fwts_log_info(fw, "Found PCI IRQ Routing Table at 0x%8.8x", PCIIRQ_REGION_START+i); fwts_log_info_verbatum(fw, " Signature : %4.4s", pciirq->signature); fwts_log_info_verbatum(fw, " Version : 0x%4.4x (%u.%u)", pciirq->version, pciirq->version >> 8, pciirq->version & 0xff); fwts_log_info_verbatum(fw, " Table Size : 0x%4.4x bytes (%d slot entries)", pciirq->table_size, (pciirq->table_size - 32) / 16); fwts_log_info_verbatum(fw, " PCI Router ID : %02x:%02x.%1x", pciirq->routers_bus, pciirq->routers_devfunc >> 3, pciirq->routers_devfunc & 0x7); fwts_log_info_verbatum(fw, " PCI Exclusive IRQs : 0x%4.4x (%s)", pciirq->exclusive_irqs, pciirq_irq_bitmap(pciirq->exclusive_irqs)); fwts_log_info_verbatum(fw, " Compatible PCI Router : %4.4x:%4.4x", pciirq->compatible_pci_router & 0xffff, pciirq->compatible_pci_router >> 16); fwts_log_info_verbatum(fw, " Miniport Data : 0x%8.8x%s", pciirq->miniport_data, pciirq->miniport_data ? "" : " (none)"); fwts_log_info_verbatum(fw, " Reserved : %s", pciirq_reserved(pciirq->reserved)); fwts_log_info_verbatum(fw, " Checksum : 0x%2.2x", pciirq->checksum); fwts_log_nl(fw); /* * Dump table */ fwts_log_info_verbatum(fw, "Bus:Dev Slot INTA# INTB# INTC# INTD#"); for (slot = pciirq->slots, j = 0; j < slot_count; j++, slot++) { char buffer[80]; char *ptr = buffer; ptr += snprintf(ptr, sizeof(buffer), " %2.2x:%2.2x %2.2x ", slot->pci_bus_number, slot->pci_dev_number >> 3, slot->slot_number); for (k = 0; k < 4; k++) { if (slot->INT[k].link) ptr += snprintf(ptr, sizeof(buffer) - (ptr - buffer), "%2.2x/%4.4x ", slot->INT[k].link, slot->INT[k].bitmap); else ptr += snprintf(ptr, sizeof(buffer) - (ptr - buffer), " "); } fwts_log_info_verbatum(fw, "%s", buffer); } fwts_log_nl(fw); found++; /* Minimal tests */ if (pciirq->compatible_pci_router == 0) fwts_failed(fw, LOG_LEVEL_LOW, "PCIIRQBadCompatPCIRouterID", "The Compatible PCI Interrupt Router was zero, which is " "probably undefined."); else fwts_passed(fw, "The Compatible PCI Interrupt Router is defined."); /* Bad sized table? */ if (expected_size == pciirq->table_size) fwts_passed(fw, "Table size was correct for %d slot entries.", slot_count); else fwts_failed(fw, LOG_LEVEL_LOW, "PCIIRQBadTableSize", "The table had %d slot entries and was expected " "to be %d bytes in size, in fact it was %d bytes.", slot_count, expected_size, (int)pciirq->table_size); /* Spec states reserved needs to be set to zero */ if (memcmp(pciirq->reserved, empty_reserved, RESERVED_SIZE)) fwts_failed(fw, LOG_LEVEL_LOW, "PCIIRQBadReserved", "The reserved region in the table should be set " "to zero, however some of the data is non-zero " "and therefore non-compliant."); else fwts_passed(fw, "Reserved region is set to zero."); /* * This is a fairly shallow test */ for (slot = pciirq->slots, j = 0; j < slot_count; j++, slot++) { for (k = 0; k < 4; k++) { if ((slot->INT[k].link != 0) && (slot->INT[k].bitmap == 0)) { fwts_failed(fw, LOG_LEVEL_MEDIUM, "PCIIRQLinkBitmap", "Slot %d INT%c# has a has an link connected " "but the IRQ bitmap is not defined.", j, k + 'A'); slot_ok = false; } } } if (slot_ok) fwts_passed(fw, "All %d slots have sane looking link and IRQ bitmaps.", slot_count); } } if (found == 0) { fwts_log_nl(fw); fwts_log_info(fw, "Could not find PCI IRQ Routing Table. Since this table " "is for legacy BIOS systems which don't have ACPI support " "this is generally not a problem."); } else if (found > 1) fwts_failed(fw, LOG_LEVEL_HIGH, "PCIIRQMultipleTables", "Found %d instances of PCI Routing Tables, there should only be 1.", found); (void)fwts_munmap(mem, PCIIRQ_REGION_SIZE); return FWTS_OK; } static fwts_framework_minor_test pciirq_tests[] = { { pciirq_test1, "PCI IRQ Routing Table test." }, { NULL, NULL } }; static fwts_framework_ops pciirq_ops = { .description = "PCI IRQ Routing Table test.", .minor_tests = pciirq_tests }; FWTS_REGISTER("pciirq", &pciirq_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | FWTS_FLAG_ROOT_PRIV); #endif src/bios/pnp/000077500000000000000000000000001231470457100134025ustar00rootroot00000000000000src/bios/pnp/pnp.c000066400000000000000000000140501231470457100143430ustar00rootroot00000000000000/* * Copyright (C) 2011-2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #include #include #include #include "fwts.h" #ifdef FWTS_ARCH_INTEL /* PNP BIOS header, see spec www.osdever.net/documents/PNPBIOSSpecification-v1.0a.pdf */ #define PNP_REGION_START (0x000f0000) #define PNP_REGION_END (0x000fffff) #define PNP_REGION_SIZE (PNP_REGION_END - PNP_REGION_START) #define PNP_CONTROL_FIELD_POLLING (0x1) #define PNP_VERSION_1 (0x10) /* In BCD */ #define PNP_SIGNATURE "$PnP" typedef struct { uint8_t signature[4]; uint8_t version; uint8_t length; uint16_t control_field; uint8_t checksum; uint32_t event_notification_addr; uint16_t RM_offset_entry; uint16_t RM_code_segment_addr; uint16_t PM_offset_entry; uint32_t PM_code_segment_addr; uint32_t OEM_device_ID; uint16_t RM_data_addr; uint32_t PM_data_addr; } __attribute__ ((packed)) pnp_header; static char *pnp_control_field[] = { "Not supported", "Handled by polling", "Asynchronous", "Invalid" }; static char *oem_device_id(uint32_t id) { static char buf[12]; if (id == 0) return " (undefined)"; /* Encoded like EISA product identifiers, icky */ snprintf(buf, sizeof(buf), " (%c%c%c%02X%02X)", 0x40 + ((id >> 2) & 0x1f), 0x40 + ((id & 0x3) << 3) + ((id >> 13) & 0x7), 0x40 + ((id >> 8) & 0x1f), (id >> 16) & 0xff, (id >> 24) & 0xff); return buf; } static int pnp_test1(fwts_framework *fw) { uint8_t *mem; int i; int found = 0; fwts_log_info(fw, "This test tries to find and sanity check the " "Plug and Play BIOS Support Installation Check structure. "); if ((mem = fwts_mmap(PNP_REGION_START, PNP_REGION_SIZE)) == FWTS_MAP_FAILED) { fwts_log_error(fw, "Cannot mmap firmware region."); return FWTS_ERROR; } fwts_log_nl(fw); for (i=0; i < PNP_REGION_SIZE; i+= 16) { pnp_header *pnp = (pnp_header*)(mem+i); if ((memcmp(pnp->signature, PNP_SIGNATURE, 4) == 0) && (fwts_checksum(mem+i, sizeof(pnp_header)) == 0)) { fwts_log_info(fw, "Found PnP Installation Check structure at 0x%8.8x", PNP_REGION_START+i); fwts_log_info_verbatum(fw, " Signature : %4.4s", pnp->signature); fwts_log_info_verbatum(fw, " Version : 0x%2.2x (%d.%d)", pnp->version, pnp->version >> 4, pnp->version & 0xf); fwts_log_info_verbatum(fw, " Length : 0x%4.4x bytes", pnp->length); fwts_log_info_verbatum(fw, " Control Field : 0x%4.4x (%s)", pnp->control_field, pnp_control_field[pnp->control_field & 0x3]); fwts_log_info_verbatum(fw, " Event Notification Flag Address : 0x%8.8x%s", pnp->event_notification_addr, pnp->event_notification_addr ? "" : " (undefined)"); fwts_log_info_verbatum(fw, " Real Mode 16 bit Code Address : 0x%4.4x:%4.4x", pnp->RM_code_segment_addr, pnp->RM_offset_entry); fwts_log_info_verbatum(fw, " Real Mode 16 bit Data Address : 0x%4.4x:%4.4x", pnp->RM_data_addr, 0); fwts_log_info_verbatum(fw, " 16 bit Protected Mode Code Address : 0x%8.8x", pnp->PM_code_segment_addr + pnp->PM_offset_entry); fwts_log_info_verbatum(fw, " 16 bit Protected Mode Data Address : 0x%8.8x", pnp->PM_data_addr); fwts_log_info_verbatum(fw, " OEM Device Identifier : 0x%8.8x%s", pnp->OEM_device_ID, oem_device_id(pnp->OEM_device_ID)); fwts_log_nl(fw); found++; /* Very simple sanity checks */ if (pnp->version == PNP_VERSION_1) fwts_passed(fw, "Version %u.%u detected.", PNP_VERSION_1 >> 4, PNP_VERSION_1 & 0xf); else fwts_failed(fw, LOG_LEVEL_LOW, "PNPStructBadVersion", "Version %u.%u detected, expecting version %u.%u", pnp->version >> 4, pnp->version & 0xf, PNP_VERSION_1 >> 4, PNP_VERSION_1 & 0xf); if (pnp->length == sizeof(pnp_header)) fwts_passed(fw, "PnP Installation Check structure is the " "correct length of %d bytes.", (int)sizeof(pnp_header)); else fwts_failed(fw, LOG_LEVEL_LOW, "PNPStructBadLength", "PnP Installation Check structure is the " "wrong length, got %d bytes, expected %d.", (int)pnp->length, (int)sizeof(pnp_header)); if ((pnp->control_field & 3) == PNP_CONTROL_FIELD_POLLING) { if (pnp->event_notification_addr != 0) fwts_passed(fw, "The control field indicates that " "polling is being used and the " "notification flag address is defined."); else fwts_failed(fw, LOG_LEVEL_LOW, "PNPStructBadFlagAddr", "The control field indicates that " "event notification is handled by " "polling the notification flag address " "however this address is not defined."); } } } if (found == 0) fwts_log_info(fw, "Could not find PnP BIOS Support Installation Check structure. " "This is not necessarily a failure."); else if (found > 1) fwts_failed(fw, LOG_LEVEL_HIGH, "PNPMultipleTables", "Found %d instances of PCI Routing Tables, there should only be 1.", found); (void)fwts_munmap(mem, PNP_REGION_SIZE); return FWTS_OK; } static fwts_framework_minor_test pnp_tests[] = { { pnp_test1, "PnP BIOS Support Installation structure test." }, { NULL, NULL } }; static fwts_framework_ops pnp_ops = { .description = "BIOS Support Installation structure test.", .minor_tests = pnp_tests }; FWTS_REGISTER("pnp", &pnp_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | FWTS_FLAG_ROOT_PRIV); #endif src/bios/romdump/000077500000000000000000000000001231470457100142705ustar00rootroot00000000000000src/bios/romdump/romdump.c000066400000000000000000000051111231470457100161150ustar00rootroot00000000000000/* * Copyright (C) 2010-2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #include "fwts.h" #ifdef FWTS_ARCH_INTEL #define BIOS_ROM_REGION_START (0x000c0000) #define BIOS_ROM_REGION_END (0x000fffff) #define BIOS_ROM_REGION_SIZE (BIOS_ROM_REGION_END - BIOS_ROM_REGION_START) #define BIOS_ROM_START (0x000f0000) #define BIOS_ROM_END (0x000fffff) #define BIOS_ROM_SIZE (BIOS_ROM_END - BIOS_ROM_START) #define BIOS_ROM_OFFSET (BIOS_ROM_START - BIOS_ROM_REGION_START) static void romdump_data(fwts_framework *fw, uint8_t *data, int offset, int length) { char buffer[128]; int i; for (i=0; i #include "fwts.h" #ifdef FWTS_ARCH_INTEL /* * Some CMOS information from * http://www-ivs.cs.uni-magdeburg.de/~zbrog/asm/cmos.html */ static int cmosdump_test1(fwts_framework *fw) { int i; unsigned long tmp; static char *cmos_shutdown_status[] = { "Power on or soft reset", "Memory size pass", "Memory test pass", "Memory test fail", "INT 19h reboot", "Flush keyboard and jmp via 40h:67h", "Protected mode tests pass", "Protected mode tests fail", "Used by POST during protected-mode RAM test", "Int 15h (block move)", "Jmp via 40h:67h", "Used by 80386", }; static char *floppy_disk[] = { "None", "360KB 5.25\" Drive", "1.2MB 5.25\" Drive", "720KB 3.5\" Drive", "1.44MB 3.5\" Drive", "2.88MB 3.5\" Drive", "Unknown", "Unknown" }; static char *hard_disk[] = { "None", "Type 1", "Unknown", "Unknown", "Unknown", "Unknown", "Unknown", "Unknown", "Unknown", "Unknown", "Unknown", "Unknown", "Unknown", "Unknown", "Type 14", "Type 16-47" }; static char *primary_display[] = { "BIOS selected", "CGA 40 column", "CGA 80 column", "Monochrome" }; static char *divider[8] = { "4.194 MHz", "1.049 MHz", "32.768 KHz (default)", "unknown", "test mode", "test mode", "reset / disable", "reset / disable", }; static char *rate_selection[16] = { "none", "3.90625 millseconds", "7.8215 milliseconds", "122.070 microseconds", "244.141 microseconds", "488.281 microseconds", "976.562 microseconds (default)", "1.953125 milliseconds", "3.90625 milliseconds", "7.8215 milliseconds", "15.625 milliseconds", "31.25 milliseconds", "62.5 milliseconds", "125 milliseconds", "250 milliseconds", "500 milliseconds" }; unsigned char data[0x80]; /* Read CMOS Data */ for (i = 0;i < (int)sizeof(data); i++) { if (fwts_cmos_read(i, &data[i]) != FWTS_OK) { fwts_log_error(fw, "Cannot get read/write permission on I/O ports."); return FWTS_ERROR; } } fwts_log_info_verbatum(fw, "CMOS Memory Dump:"); for (i = 0; i < (int)sizeof(data); i += 16) { char buffer[128]; fwts_dump_raw_data(buffer, sizeof(buffer), data + i, i, 16); fwts_log_info_verbatum(fw, "%s", buffer); } fwts_log_nl(fw); fwts_log_info_verbatum(fw, "RTC Current Time: (CMOS 0x00..0x09)"); fwts_log_info_verbatum(fw, " RTC seconds: %2.2x", data[0]); fwts_log_info_verbatum(fw, " RTC minutes: %2.2x", data[2]); fwts_log_info_verbatum(fw, " RTC hours: %2.2x", data[4]); fwts_log_info_verbatum(fw, " RTC day of week: %2.2x", data[6]); fwts_log_info_verbatum(fw, " RTC date day: %2.2x", data[7]); fwts_log_info_verbatum(fw, " RTC date month: %2.2x", data[8]); fwts_log_info_verbatum(fw, " RTC date year: %2.2x", data[9]); fwts_log_nl(fw); fwts_log_info_verbatum(fw, "RTC Alarm:"); fwts_log_info_verbatum(fw, " RTC seconds: %2.2x", data[1]); fwts_log_info_verbatum(fw, " RTC minutes: %2.2x", data[3]); fwts_log_info_verbatum(fw, " RTC hours: %2.2x", data[5]); fwts_log_nl(fw); fwts_log_info_verbatum(fw, "Status Register A: (CMOS 0x0a): 0x%2.2x", data[10]); fwts_log_info_verbatum(fw, " Rate freq: %1.1x (%s)", data[10] & 0xf, rate_selection[data[10] & 0xf]); fwts_log_info_verbatum(fw, " Timer freq divider: %1.1x (%s)", (data[10] >> 4) & 0x7, divider[(data[10] >> 4) & 0x7]); fwts_log_info_verbatum(fw, " Update in progress: %1.1x", (data[10] >> 7) & 1); fwts_log_nl(fw); fwts_log_info_verbatum(fw, "Status Register B: (CMOS 0x0b): 0x%2.2x", data[11]); fwts_log_info_verbatum(fw, " Daylight savings: %1.1x (%s)", data[11] & 1, data[11] & 1 ? "Enabled" : "Disabled"); fwts_log_info_verbatum(fw, " 24 Hour Clock: %1.1x (%s)", (data[11] >> 1) & 1, (data[11] >> 1) & 1 ? "24 Hour" : "12 Hour"); fwts_log_info_verbatum(fw, " Data Mode (DM): %1.1x (%s)", (data[11] >> 2) & 1, (data[11] >> 2) & 1 ? "Binary" : "BCD"); fwts_log_info_verbatum(fw, " Square Wave: %1.1x (%s)", (data[11] >> 3) & 1, (data[11] >> 3) & 1 ? "Enabled" : "Disabled"); fwts_log_info_verbatum(fw, " Update ended IRQ: %1.1x (%s)", (data[11] >> 4) & 1, (data[11] >> 4) & 1 ? "Enabled" : "Disabled"); fwts_log_info_verbatum(fw, " Alarm IRQ: %1.1x (%s)", (data[11] >> 5) & 1, (data[11] >> 5) & 1 ? "Enabled" : "Disabled"); fwts_log_info_verbatum(fw, " Periodic IRQ: %1.1x (%s)", (data[11] >> 6) & 1, (data[11] >> 6) & 1 ? "Enabled" : "Disabled"); fwts_log_info_verbatum(fw, " Clock update cycle: %1.1x (%s)", (data[11] >> 7) & 1, (data[11] >> 7) & 1 ? "Abort update in progress" : "Update normally"); fwts_log_nl(fw); fwts_log_info_verbatum(fw, "Status Register C: (CMOS 0x0c): 0x%2.2x", data[12]); fwts_log_info_verbatum(fw, " UF flag: 0x%1.1x", (data[12] >> 4) & 1); fwts_log_info_verbatum(fw, " AF flag: 0x%1.1x", (data[12] >> 5) & 1); fwts_log_info_verbatum(fw, " PF flag: 0x%1.1x", (data[12] >> 6) & 1); fwts_log_info_verbatum(fw, " IRQF flag: 0x%1.1x", (data[12] >> 7) & 1); fwts_log_nl(fw); fwts_log_info_verbatum(fw, "Status Register D: (CMOS 0x0d): 0x%2.2x", data[13]); fwts_log_info_verbatum(fw, " Valid CMOS RAM flag: 0x%1.1x (%s)", (data[13] >> 7) & 1, (data[13] >> 7) & 1 ? "Battery Good": "Battery Dead"); fwts_log_nl(fw); fwts_log_info_verbatum(fw, "Diagnostic Status: (CMOS 0x0e): 0x%2.2x", data[14]); fwts_log_info_verbatum(fw, " CMOS time status: 0x%1.1x (%s)", (data[14] >> 2) & 1, (data[14] >> 2) & 1 ? "Invalid": "Valid"); fwts_log_info_verbatum(fw, " Fixed disk init: 0x%1.1x (%s)", (data[14] >> 3) & 1, (data[14] >> 3) & 1 ? "Bad": "Good"); fwts_log_info_verbatum(fw, " Memory size check: 0x%1.1x (%s)", (data[14] >> 4) & 1, (data[14] >> 4) & 1 ? "Bad": "Good"); fwts_log_info_verbatum(fw, " Config info status: 0x%1.1x (%s)", (data[14] >> 5) & 1, (data[14] >> 5) & 1 ? "Invalid": "Valid"); fwts_log_info_verbatum(fw, " CMOS checksum status: 0x%1.1x (%s)", (data[14] >> 6) & 1, (data[14] >> 6) & 1 ? "Bad": "Good"); fwts_log_info_verbatum(fw, " CMOS power loss: 0x%1.1x (%s)", (data[14] >> 7) & 1, (data[14] >> 7) & 1 ? "Lost power": "Not lost power"); fwts_log_nl(fw); fwts_log_info_verbatum(fw, "CMOS Shutdown Status: (CMOS 0x0f): 0x%2.2x (%s)", data[15], data[15] < 0xb ? cmos_shutdown_status[data[15]] : "Perform power-on reset"); fwts_log_nl(fw); fwts_log_info_verbatum(fw, "Floppy Disk Type: (CMOS 0x10): 0x%2.2x", data[16]); fwts_log_info_verbatum(fw, " Drive 0: %s", floppy_disk[((data[16] >> 4) & 0xf)]); fwts_log_info_verbatum(fw, " Drive 1: %s", floppy_disk[((data[16] >> 0) & 0xf)]); fwts_log_nl(fw); fwts_log_info_verbatum(fw, "Hard Disk Type: (CMOS 0x12, Obsolete): 0x%2.2x", data[18]); fwts_log_info_verbatum(fw, " Drive 0: %s", hard_disk[((data[18] >> 4) & 0xf)]); fwts_log_info_verbatum(fw, " Drive 1: %s", hard_disk[((data[18] >> 0) & 0xf)]); fwts_log_nl(fw); fwts_log_info_verbatum(fw, "Installed H/W: (CMOS 0x14): 0x%2.2x", data[20]); fwts_log_info_verbatum(fw, " Maths Coprocessor: 0x%1.1x (%s)", (data[20] >> 1) & 1, (data[20] >> 1) & 1 ? "Installed": "Not Installed"); fwts_log_info_verbatum(fw, " Keyboard: 0x%1.1x (%s)", (data[20] >> 2) & 1, (data[20] >> 2) & 1 ? "Installed": "Not Installed"); fwts_log_info_verbatum(fw, " Display Adaptor: 0x%1.1x (%s)", (data[20] >> 3) & 1, (data[20] >> 3) & 1 ? "Installed": "Not Installed"); fwts_log_info_verbatum(fw, " Primary Display: 0x%1.1x (%s)", (data[20] >> 4) & 3, primary_display[(data[20] >> 4) & 3]); if (data[20] & 1) { int drives = (data[20] >> 6) & 3; fwts_log_info_verbatum(fw, " Floppy Drives: 0x%2.2x (%hhu drive%s)", drives, drives + 1, drives > 0 ? "s" : ""); } else { fwts_log_info_verbatum(fw, " Floppy Drives: None."); } fwts_log_nl(fw); tmp = ((data[22] << 8) | (data[21])); fwts_log_info_verbatum(fw, "Base Mem: (CMOS 0x16):"); fwts_log_info_verbatum(fw, " 0x%2.2x%2.2x (%luK)", data[22], data[21], tmp); fwts_log_nl(fw); tmp = ((data[24] << 8) | (data[25])); fwts_log_info_verbatum(fw, "Extended Mem: (CMOS 0x18):"); fwts_log_info_verbatum(fw, " 0x%2.2x%2.2x (%luK) %s", data[24], data[23], tmp, tmp > (16 * 1024) ? "[untrustworthy]" : ""); fwts_log_nl(fw); fwts_log_info_verbatum(fw, "Hard Disk Extended Types (CMOS 0x19, 0x1a):"); fwts_log_info_verbatum(fw, " Hard Disk 0: 0x%2.2x", data[25]); fwts_log_info_verbatum(fw, " Hard Disk 1: 0x%2.2x", data[26]); fwts_log_nl(fw); fwts_log_info_verbatum(fw, "CMOS Checksum:(CMOS 0x2e):0x%2.2x%2.2x", data[47], data[46]); fwts_log_nl(fw); fwts_log_info_verbatum(fw, "Extended Mem: (CMOS 0x30):0x%2.2x%2.2x", data[49], data[48]); fwts_log_nl(fw); fwts_log_info_verbatum(fw, "Century Date: (CMOS 0x32):%2.2x", data[50]); fwts_log_nl(fw); fwts_log_info_verbatum(fw, "POST Information Flag (CMOS 0x33):"); fwts_log_info_verbatum(fw, " POST cache test: 0x%1.1x %s", (data[51] >> 0) & 1, (data[51] >> 0) & 1 ? "Failed" : "Passed"); fwts_log_info_verbatum(fw, " BIOS size: 0x%1.1x %s", (data[51] >> 7) & 1, (data[51] >> 7) & 1 ? "128KB" : "64KB"); fwts_log_nl(fw); fwts_infoonly(fw); return FWTS_OK; } static fwts_framework_minor_test cmosdump_tests[] = { { cmosdump_test1, "Dump CMOS Memory." }, { NULL, NULL } }; static fwts_framework_ops cmosdump_ops = { .description = "Dump CMOS Memory.", .minor_tests = cmosdump_tests }; FWTS_REGISTER("cmosdump", &cmosdump_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_UTILS | FWTS_FLAG_ROOT_PRIV); #endif src/cpu/000077500000000000000000000000001231470457100124405ustar00rootroot00000000000000src/cpu/cpufreq/000077500000000000000000000000001231470457100141055ustar00rootroot00000000000000src/cpu/cpufreq/cpufreq.c000066400000000000000000000462511231470457100157260ustar00rootroot00000000000000/* * Copyright (C) 2006, Intel Corporation * Copyright (C) 2010-2014 Canonical * * This file was originally part of the Linux-ready Firmware Developer Kit * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #define _GNU_SOURCE #include "fwts.h" #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define FWTS_CPU_PATH "/sys/devices/system/cpu" #define MAX_FREQS 256 typedef struct { uint32_t Hz; uint64_t speed; } fwts_cpu_freq; static int number_of_speeds = -1; static int total_tests = 1; static int performed_tests = 0; static bool no_cpufreq = false; static uint64_t top_speed = 0; static int num_cpus; #define GET_PERFORMANCE_MAX (0) #define GET_PERFORMANCE_MIN (1) #define GET_PERFORMANCE_AVG (2) static inline void cpu_mkpath( char *const path, const int len, const int cpu, const char *const name) { snprintf(path, len, "%s/cpu%i/cpufreq/%s", FWTS_CPU_PATH, cpu, name); } static void set_governor(fwts_framework *fw, const int cpu) { char path[PATH_MAX]; cpu_mkpath(path, sizeof(path), cpu, "scaling_governor"); if (fwts_set("userspace", path) != FWTS_OK) { if (!no_cpufreq) { fwts_warning(fw, "Cannot set CPU scaling governor to userspace scaling."); no_cpufreq = true; } } } #ifdef FWTS_ARCH_INTEL static int cpu_exists(const int cpu) { char path[PATH_MAX]; cpu_mkpath(path, sizeof(path), cpu, "scaling_governor"); return !access(path, R_OK); } #endif static void set_HZ(fwts_framework *fw, const int cpu, const uint32_t Hz) { cpu_set_t mask, oldset; char path[PATH_MAX]; char buffer[64]; /* First, go to the right cpu */ sched_getaffinity(0, sizeof(oldset), &oldset); CPU_ZERO(&mask); CPU_SET(cpu, &mask); sched_setaffinity(0, sizeof(mask), &mask); set_governor(fw, cpu); /* then set the speed */ cpu_mkpath(path, sizeof(path), cpu, "scaling_setspeed"); snprintf(buffer, sizeof(buffer), "%" PRIu32 , Hz); fwts_set(buffer, path); sched_setaffinity(0, sizeof(oldset), &oldset); } #ifdef FWTS_ARCH_INTEL static int get_performance_repeat( fwts_framework *fw, const int cpu, const int count, const int type, uint64_t *retval) { int i; uint64_t max = 0; uint64_t min = ~0; uint64_t real_count = 0; uint64_t cumulative = 0; for (i = 0; i < count; i++) { uint64_t temp; if (fwts_cpu_performance(fw, cpu, &temp) != FWTS_OK) return FWTS_ERROR; if (temp) { if (temp < min) min = temp; if (temp > max) max = temp; cumulative += temp; real_count++; } } switch (type) { case GET_PERFORMANCE_MAX: *retval = max; break; case GET_PERFORMANCE_MIN: *retval = min; break; case GET_PERFORMANCE_AVG: if (real_count) *retval = cumulative / real_count; else *retval = 0; break; default: *retval = 0; break; } return FWTS_OK; } #endif static char *hz_to_human(const uint32_t hz) { static char buffer[32]; unsigned long long Hz; Hz = hz; if (Hz > 1500000) { snprintf(buffer, sizeof(buffer), "%.2f GHz", (Hz+50000.0) / 1000000); return buffer; } else if (Hz > 1000) { snprintf(buffer, sizeof(buffer), "%llu MHz", (Hz+500) / 1000); return buffer; } else { snprintf(buffer, sizeof(buffer), "%llu", Hz); return buffer; } } static uint32_t get_claimed_hz(const int cpu) { char path[PATH_MAX]; char *buffer; uint32_t value = 0; cpu_mkpath(path, sizeof(path), cpu, "scaling_max_freq"); if ((buffer = fwts_get(path)) != NULL) { value = strtoul(buffer, NULL, 10); free(buffer); } return value; } static uint32_t get_bios_limit(const int cpu) { char path[PATH_MAX]; char *buffer; uint32_t value = 0; cpu_mkpath(path, sizeof(path), cpu, "bios_limit"); if ((buffer = fwts_get(path)) != NULL) { value = strtoul(buffer, NULL, 10); free(buffer); } return value; } static int cpu_freq_compare(const void *v1, const void *v2) { const fwts_cpu_freq *cpu_freq1 = (fwts_cpu_freq *)v1; const fwts_cpu_freq *cpu_freq2 = (fwts_cpu_freq *)v2; return cpu_freq1->Hz - cpu_freq2->Hz; } static int read_freqs_available(const int cpu, fwts_cpu_freq *freqs) { char path[PATH_MAX]; char line[4096]; FILE *file; char *c, *c2; int i = 0; memset(line, 0, sizeof(line)); cpu_mkpath(path, sizeof(path), cpu, "scaling_available_frequencies"); if ((file = fopen(path, "r")) == NULL) return 0; c = fgets(line, 4095, file); fclose(file); if (!c) return 0; while ((i < MAX_FREQS) && c && strlen(c) > 1) { c2 = strchr(c, ' '); if (c2) { *c2 = 0; c2++; } else c2 = NULL; freqs[i].Hz = strtoull(c, NULL, 10); c = c2; i++; } return i; } static void do_cpu(fwts_framework *fw, const int cpu) { fwts_cpu_freq freqs[MAX_FREQS]; int i, speedcount; static int warned = 0; bool warned_PSS = false; uint64_t cpu_top_speed = 0; int claimed_hz_too_low = 0; int bios_limit_too_low = 0; const uint32_t claimed_hz = get_claimed_hz(cpu); const uint32_t bios_limit = get_bios_limit(cpu); memset(freqs, 0, sizeof(freqs)); set_governor(fw, cpu); if ((speedcount = read_freqs_available(cpu, freqs)) == 0) { if (!no_cpufreq) { char path[PATH_MAX]; char *driver; no_cpufreq = true; fwts_warning(fw, "CPU frequency scaling not supported."); cpu_mkpath(path, sizeof(path), cpu, "scaling_driver"); driver = fwts_get(path); if (driver) { fwts_advice(fw, "Scaling driver '%s' is enabled and this " "does not seem to allow CPU frequency scaling.", driver); free(driver); } } return; } if (total_tests == 1) total_tests = ((2 + speedcount) * num_cpus) + 2; for (i = 0; i < speedcount; i++) { set_HZ(fw, cpu, freqs[i].Hz); if ((claimed_hz != 0) && (claimed_hz < freqs[i].Hz)) claimed_hz_too_low++; if ((bios_limit != 0) && (bios_limit < freqs[i].Hz)) bios_limit_too_low++; if (fwts_cpu_performance(fw, cpu, &freqs[i].speed) != FWTS_OK) { fwts_log_error(fw, "Failed to get CPU performance for " "CPU frequency %" PRIu32 " Hz.", freqs[i].Hz); freqs[i].speed = 0; } if (freqs[i].speed > cpu_top_speed) cpu_top_speed = freqs[i].speed; performed_tests++; fwts_progress(fw, 100 * performed_tests/total_tests); } if (cpu_top_speed > top_speed) top_speed = cpu_top_speed; if (claimed_hz_too_low) { char path[PATH_MAX]; cpu_mkpath(path, sizeof(path), cpu, "scaling_max_freq"); fwts_warning(fw, "There were %d CPU frequencies larger than the _PSS " "maximum CPU frequency of %s for CPU %d. Has %s " "been set too low?", claimed_hz_too_low, hz_to_human(claimed_hz), cpu, path); } if (bios_limit_too_low) { char path[PATH_MAX]; cpu_mkpath(path, sizeof(path), cpu, "bios_limit"); fwts_warning(fw, "The CPU frequency BIOS limit %s for CPU %d was set to %s " "which is lower than some of the ACPI scaling frequencies.", path, cpu, hz_to_human(bios_limit)); } if (claimed_hz_too_low || bios_limit_too_low) fwts_log_nl(fw); fwts_log_info(fw, "CPU %d: %i CPU frequency steps supported.", cpu, speedcount); fwts_log_info_verbatum(fw, " Frequency | Relative Speed | Bogo loops"); fwts_log_info_verbatum(fw, "-----------+----------------+-----------"); for (i = 0; i < speedcount; i++) fwts_log_info_verbatum(fw, "%10s | %5.1f %% | %9" PRIu64, hz_to_human(freqs[i].Hz), 100.0 * freqs[i].speed/cpu_top_speed, freqs[i].speed); if (number_of_speeds == -1) number_of_speeds = speedcount; fwts_log_nl(fw); if (number_of_speeds != speedcount) fwts_failed(fw, LOG_LEVEL_MEDIUM, "CPUFreqPStates", "Not all processors support the same number of P states."); if (speedcount < 2) return; /* Sort the frequencies */ qsort(freqs, speedcount, sizeof(fwts_cpu_freq), cpu_freq_compare); /* now check for 1) increasing HZ and 2) increasing speed */ for (i = 0; i < speedcount-1; i++) { if (freqs[i].Hz == freqs[i+1].Hz && !warned++) fwts_failed(fw, LOG_LEVEL_MEDIUM, "CPUFreqDupFreq", "Duplicate frequency reported."); if (freqs[i].speed > freqs[i+1].speed) fwts_failed(fw, LOG_LEVEL_MEDIUM, "CPUFreqSlowerOnCPU", "Supposedly higher frequency %s is slower (%" PRIu64 " bogo loops) than frequency %s (%" PRIu64 " bogo loops) on CPU %i.", hz_to_human(freqs[i+1].Hz), freqs[i+1].speed, hz_to_human(freqs[i].Hz), freqs[i].speed, cpu); if ((freqs[i].Hz > claimed_hz) && !warned_PSS) { warned_PSS = true; fwts_warning(fw, "Frequency %" PRIu32 " not achievable; _PSS limit of %" PRIu32 " in effect?", freqs[i].Hz, claimed_hz); } } } static void lowest_speed(fwts_framework *fw, const int cpu) { char path[PATH_MAX]; char *line; char *c, *c2; uint32_t Hz, lowspeed = 0; cpu_mkpath(path, sizeof(path), cpu, "scaling_available_frequencies"); if ((line = fwts_get(path)) == NULL) return; c = line; while (c && strlen(c) > 1) { c2 = strchr(c, ' '); if (c2) { *c2 = 0; c2++; } else c2 = NULL; Hz = strtoull(c, NULL, 10); if (Hz < lowspeed || lowspeed == 0) lowspeed = Hz; c = c2; } free(line); set_HZ(fw, cpu, lowspeed); } static void highest_speed(fwts_framework *fw, const int cpu) { char path[PATH_MAX]; char *line; uint64_t Hz; char *c, *c2; unsigned long highspeed=0; cpu_mkpath(path, sizeof(path), cpu, "scaling_available_frequencies"); if ((line = fwts_get(path)) == NULL) return; c = line; while (c && strlen(c) > 1) { c2 = strchr(c, ' '); if (c2) { *c2=0; c2++; } else c2 = NULL; Hz = strtoull(c, NULL, 10); if (Hz > highspeed || highspeed == 0) highspeed = Hz; c = c2; } free(line); set_HZ(fw, cpu, highspeed); } #ifdef FWTS_ARCH_INTEL /* * 4) Is BIOS wrongly doing Sw_All P-state coordination across cpus * - Change frequency on all CPU to the lowest value * - Change frequency on one particular CPU to the highest * - If BIOS is doing Sw_All, the last high freq request will not work */ static void do_sw_all_test(fwts_framework *fw) { DIR *dir; struct dirent *entry; uint64_t highperf, lowperf; int first_cpu_index = -1; int cpu; if ((dir = opendir(FWTS_CPU_PATH)) == NULL) { fwts_log_error(fw, "FATAL: cpufreq: sysfs not mounted."); return; } while ((entry = readdir(dir)) != NULL) { if (entry && strlen(entry->d_name) > 3) { cpu = strtoul(entry->d_name + 3, NULL, 10); if (first_cpu_index == -1) first_cpu_index = cpu; lowest_speed(fw, cpu); } } closedir(dir); /* All CPUs at the lowest frequency */ if (get_performance_repeat(fw, first_cpu_index, 5, GET_PERFORMANCE_MIN, &lowperf) != FWTS_OK) { fwts_failed(fw, LOG_LEVEL_MEDIUM, "CPUFreqSW_ALLGetPerf", "Failed to get CPU performance."); return; } lowperf = (lowperf * 100) / top_speed; highest_speed(fw, first_cpu_index); if (get_performance_repeat(fw, first_cpu_index, 5, GET_PERFORMANCE_MAX, &highperf) != FWTS_OK) { fwts_failed(fw, LOG_LEVEL_MEDIUM, "CPUFreqSW_ALLGetPerf", "Failed to get CPU performance."); return; } highperf = (highperf * 100) / top_speed; if (lowperf >= highperf) fwts_failed(fw, LOG_LEVEL_MEDIUM, "CPUFreqSW_ALL", "Firmware not implementing hardware " "coordination cleanly. Firmware using SW_ALL " "instead?"); } /* * 5) Is BIOS wrongly doing Sw_Any P-state coordination across cpus * - Change frequency on all CPU to the lowest value * - Change frequency on one particular CPU to the highest * - Change frequency on all CPU to the lowest value * - If BIOS is doing Sw_Any, the high freq request will not work */ static void do_sw_any_test(fwts_framework *fw) { DIR *dir; struct dirent *entry; uint64_t highperf, lowperf; int first_cpu_index = -1; int cpu; if ((dir = opendir(FWTS_CPU_PATH)) == NULL) { fwts_log_error(fw, "FATAL: cpufreq: sysfs not mounted."); return; } while ((entry = readdir(dir)) != NULL) { if (entry && strlen(entry->d_name) > 3) { cpu = strtoul(entry->d_name + 3, NULL, 10); if (first_cpu_index == -1) first_cpu_index = cpu; lowest_speed(fw, cpu); } } rewinddir(dir); /* All CPUs at the lowest frequency */ if (get_performance_repeat(fw, first_cpu_index, 5, GET_PERFORMANCE_MIN, &lowperf) != FWTS_OK) { fwts_failed(fw, LOG_LEVEL_MEDIUM, "CPUFreqSW_ANYGetPerf", "Failed to get CPU performance."); closedir(dir); return; } lowperf = (100 * lowperf) / top_speed; highest_speed(fw, first_cpu_index); while ((entry = readdir(dir)) != NULL) { if (entry && strlen(entry->d_name) > 3) { cpu = strtoul(entry->d_name + 3, NULL, 10); if (cpu == first_cpu_index) continue; lowest_speed(fw, cpu); } } closedir(dir); if (get_performance_repeat(fw, first_cpu_index, 5, GET_PERFORMANCE_MAX, &highperf) != FWTS_OK) { fwts_failed(fw, LOG_LEVEL_MEDIUM, "CPUFreqSW_ANYGetPerf", "Failed to get CPU performance."); return; } highperf = (100 * highperf) / top_speed; if (lowperf >= highperf) fwts_failed(fw, LOG_LEVEL_MEDIUM, "CPUFreqSW_ANY", "Firmware not implementing hardware " "coordination cleanly. Firmware using SW_ANY " "instead?."); } static void check_sw_any(fwts_framework *fw) { DIR *dir; struct dirent *entry; uint64_t low_perf, high_perf, newhigh_perf; static int once = 0; int max_cpu = 0, i, j; int cpu; /* First set all processors to their lowest speed */ if ((dir = opendir(FWTS_CPU_PATH)) == NULL) { fwts_log_error(fw, "FATAL: cpufreq: sysfs not mounted."); return; } while ((entry = readdir(dir)) != NULL) { if (entry && strlen(entry->d_name) > 3) { cpu = strtoul(entry->d_name + 3, NULL, 10); lowest_speed(fw, cpu); if (cpu > max_cpu) max_cpu = cpu; } } closedir(dir); if (max_cpu == 0) return; /* Single processor machine, no point in checking anything */ /* assume that all processors have the same low performance */ if (fwts_cpu_performance(fw, max_cpu, &low_perf) != FWTS_OK) { fwts_failed(fw, LOG_LEVEL_MEDIUM, "CPUFreqCPsSetToSW_ANYGetPerf", "Cannot get CPU performance."); return; } for (i = 0; i <= max_cpu; i++) { highest_speed(fw, i); if (!cpu_exists(i)) continue; if (fwts_cpu_performance(fw, i, &high_perf) != FWTS_OK) { fwts_failed(fw, LOG_LEVEL_MEDIUM, "CPUFreqCPsSetToSW_ANYGetPerf", "Cannot get CPU performance."); return; } performed_tests++; fwts_progress(fw, 100 * performed_tests/total_tests); /* * now set all the others to low again; sw_any will cause * the core in question to now also get the low speed, while * hardware max will keep the performance */ for (j = 0; j <= max_cpu; j++) if (i != j) lowest_speed(fw, j); if (fwts_cpu_performance(fw, i, &newhigh_perf) != FWTS_OK) { fwts_failed(fw, LOG_LEVEL_MEDIUM, "CPUFreqCPsSetToSW_ANYGetPerf", "Cannot get CPU performance."); return; } if ((high_perf > newhigh_perf) && (high_perf - newhigh_perf > (high_perf - low_perf)/4) && (once == 0) && (high_perf - low_perf > 20)) { fwts_failed(fw, LOG_LEVEL_MEDIUM, "CPUFreqCPUsSetToSW_ANY", "Processors are set to SW_ANY."); once++; lowest_speed(fw, i); } performed_tests++; fwts_progress(fw, 100 * performed_tests/total_tests); } if (!once) fwts_passed(fw, "P-state coordination under hardware control."); } #endif static int cpufreq_test1(fwts_framework *fw) { DIR *dir; struct dirent *entry; int cpu; #ifdef FWTS_ARCH_INTEL fwts_log_info(fw, "For each processor in the system, this test steps through the " "various frequency states (P-states) that the BIOS advertises " "for the processor. For each processor/frequency combination, " "a quick performance value is measured. The test then validates that:"); fwts_log_info_verbatum(fw, " 1. Each processor has the same number of frequency states."); fwts_log_info_verbatum(fw, " 2. Higher advertised frequencies have a higher performance."); fwts_log_info_verbatum(fw, " 3. No duplicate frequency values are reported by the BIOS."); fwts_log_info_verbatum(fw, " 4. BIOS doing Sw_All P-state coordination across cores."); fwts_log_info_verbatum(fw, " 5. BIOS doing Sw_Any P-state coordination across cores."); #else fwts_log_info(fw, "For each processor in the system, this test steps through the " "various frequency states that the CPU supports. " "For each processor/frequency combination, " "a quick performance value is measured. The test then validates that:"); fwts_log_info_verbatum(fw, " 1. Each processor has the same number of frequency states."); fwts_log_info_verbatum(fw, " 2. Higher advertised frequencies have a higher performance."); fwts_log_info_verbatum(fw, " 3. No duplicate frequency values exist."); #endif fwts_log_nl(fw); /* First set all processors to their lowest speed */ if ((dir = opendir(FWTS_CPU_PATH)) == NULL) { fwts_log_error(fw, "FATAL: cpufreq: sysfs not mounted\n"); return FWTS_ERROR; } while ((entry = readdir(dir)) != NULL) { if (entry && strlen(entry->d_name) > 3 && isdigit(entry->d_name[3])) { cpu = strtoul(entry->d_name + 3, NULL, 10); lowest_speed(fw, cpu); } } rewinddir(dir); /* then do the benchmark */ while ((entry = readdir(dir)) != NULL) { if (entry && strlen(entry->d_name) > 3 && isdigit(entry->d_name[3])) { cpu = strtoul(entry->d_name + 3, NULL, 10); do_cpu(fw, cpu); lowest_speed(fw, cpu); if (no_cpufreq) break; } } rewinddir(dir); /* set everything back to the highest speed again */ while ((entry = readdir(dir)) != NULL) { if (entry && strlen(entry->d_name) > 3 && isdigit(entry->d_name[3])) { cpu = strtoul(entry->d_name + 3, NULL, 10); highest_speed(fw, cpu); } } closedir(dir); #ifdef FWTS_ARCH_INTEL if (!no_cpufreq) check_sw_any(fw); /* * Check for more than one CPU and more than one frequency and * then do the benchmark set 2 */ if (num_cpus > 1 && number_of_speeds > 1) { do_sw_all_test(fw); performed_tests++; fwts_progress(fw, 100 * performed_tests/total_tests); do_sw_any_test(fw); performed_tests++; fwts_progress(fw, 100 * performed_tests/total_tests); } else if (number_of_speeds > 1) { performed_tests += 2; fwts_progress(fw, 100 * performed_tests/total_tests); } #endif fwts_progress(fw, 100); return FWTS_OK; } static int cpufreq_init(fwts_framework *fw) { if ((num_cpus = fwts_cpu_enumerate()) == FWTS_ERROR) { fwts_warning(fw, "Cannot determine number of CPUS, defaulting to 1."); num_cpus = 1; } return FWTS_OK; } static fwts_framework_minor_test cpufreq_tests[] = { #ifdef FWTS_ARCH_INTEL { cpufreq_test1, "CPU P-State tests." }, #else { cpufreq_test1, "CPU Frequency tests." }, #endif { NULL, NULL } }; static fwts_framework_ops cpufreq_ops = { .init = cpufreq_init, .description = "CPU frequency scaling tests.", .minor_tests = cpufreq_tests }; FWTS_REGISTER("cpufreq", &cpufreq_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | FWTS_FLAG_ROOT_PRIV); src/cpu/maxfreq/000077500000000000000000000000001231470457100141035ustar00rootroot00000000000000src/cpu/maxfreq/maxfreq.c000066400000000000000000000123311231470457100157120ustar00rootroot00000000000000/* * Copyright (C) 2010-2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #include "fwts.h" #ifdef FWTS_ARCH_INTEL #include #include #include #include #include #include #define CPU_FREQ_PATH "/sys/devices/system/cpu" #define CPU_INFO_PATH "/proc/cpuinfo" static double maxfreq_max(const char *str) { double max = -1.0; double val; while (str && *str) { while ((*str != '\0') && isspace(*str)) str++; if (!isdigit(*str)) break; val = atof(str); if (val > max) max = val; str = strstr(str, " "); } return max; } static int maxfreq_test1(fwts_framework *fw) { double *cpufreq; int cpu, cpus; bool advice = false, passed = true, cpufreqs_read = false; struct dirent *entry; DIR *dir; fwts_list_link *item; fwts_list *cpuinfo; fwts_log_info(fw, "This test checks the maximum CPU frequency as detected by " "the kernel for each CPU against maxiumum frequency as " "specified by the BIOS frequency scaling settings."); cpuinfo = fwts_file_open_and_read(CPU_INFO_PATH); if (cpuinfo == NULL) { fwts_log_error(fw, "Cannot create cpu info list."); return FWTS_ERROR; } /* Pass 1, figure out number of CPUs */ cpus = 0; fwts_list_foreach(item, cpuinfo) { if (strstr(fwts_text_list_text(item), "model name")) cpus++; } if ((cpufreq = calloc(cpus, sizeof(double))) == NULL) { fwts_log_error(fw, "Cannot create cpu frequency array."); fwts_list_free(cpuinfo, free); return FWTS_ERROR; } /* Pass 2, get speed */ cpu = 0; fwts_list_foreach(item, cpuinfo) { char *str = fwts_text_list_text(item); if (strstr(str, "model name")) { if ((str = strstr(str, "@")) != NULL) { cpufreq[cpu] = atof(str+1); if (strstr(str, "GHz")) cpufreq[cpu] *= 1000000.0; if (strstr(str, "MHz")) cpufreq[cpu] *= 1000.0; cpufreqs_read = true; } else cpufreq[cpu] = -1.0; cpu++; } } fwts_list_free(cpuinfo, free); if (!cpufreqs_read) { fwts_skipped(fw, "Cannot read CPU frequencies from %s, this generally " "happens on AMD CPUs, skipping test.", CPU_INFO_PATH); free(cpufreq); return FWTS_SKIP; } if (!(dir = opendir(CPU_FREQ_PATH))) { fwts_failed(fw, LOG_LEVEL_LOW, "CPUFreqNoPath", "No %s directory available: cannot test.", CPU_FREQ_PATH); free(cpufreq); return FWTS_ERROR; } do { char path[PATH_MAX]; char *data; double maxfreq, maxfreq_ghz, cpufreq_ghz; int cpunum; entry = readdir(dir); if (!entry || entry->d_name[0] == '.' || strlen(entry->d_name) < 3) continue; snprintf(path, sizeof(path), CPU_FREQ_PATH "/%s/cpufreq/scaling_available_frequencies", entry->d_name); if ((data = fwts_get(path)) == NULL) continue; maxfreq = maxfreq_max(data); free(data); cpunum = atoi(entry->d_name + 3); if (maxfreq < 0.0) { fwts_failed(fw, LOG_LEVEL_MEDIUM, "CPUFreqReadFailed", "Cannot read cpu frequency from %s for CPU %s.", CPU_FREQ_PATH, entry->d_name); passed = false; continue; } maxfreq_ghz = maxfreq / 1000000.0; cpufreq_ghz = cpufreq[cpunum] / 1000000.0; if (fabs(maxfreq_ghz - cpufreq_ghz) > (maxfreq_ghz * 0.005)) { passed = false; fwts_failed(fw, LOG_LEVEL_MEDIUM, "CPUFreqSpeedMismatch", "Maximum scaling frequency %f GHz do not match " "expected frequency %f GHz.", maxfreq_ghz, cpufreq_ghz); if (!advice) { advice = true; fwts_advice(fw, "The maximum scaling frequency %f GHz " "for CPU %d configured by the BIOS in " "%s does not match the expected " "maximum CPU frequency %f GHz that " "the CPU can run at. This usually " "indicates a misconfiguration of the " "ACPI _PSS (Performance Supported " "States) object. This is described in " "section 8.4.4.2 of the APCI " "specification.", (double)maxfreq/1000000.0, cpunum, path, (double)cpufreq[cpunum]/1000000.0); } else { fwts_advice(fw, "See advice for previous CPU."); } } else { fwts_log_info(fw, "CPU %d maximum frequency %f GHz is sane.", cpunum, maxfreq_ghz); } } while (entry); if (passed) fwts_passed(fw, "%d CPUs passed the maximum frequency check.", cpus); free(cpufreq); (void)closedir(dir); return FWTS_OK; } static fwts_framework_minor_test maxfreq_tests[] = { { maxfreq_test1, "Maximum CPU frequency test." }, { NULL, NULL } }; static fwts_framework_ops maxfreq_ops = { .description = "Test max CPU frequencies against max scaling frequency.", .minor_tests = maxfreq_tests }; FWTS_REGISTER("maxfreq", &maxfreq_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH); #endif src/cpu/microcode/000077500000000000000000000000001231470457100144045ustar00rootroot00000000000000src/cpu/microcode/microcode.c000066400000000000000000000207521231470457100165220ustar00rootroot00000000000000/* * Copyright (C) 2006, Intel Corporation * Copyright (C) 2010-2014 Canonical * * This file was derived from part of the Linux-ready Firmware Developer Kit, * however, it has been completely re-written. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #include "fwts.h" #ifdef FWTS_ARCH_INTEL #include #include #include #include #define SYS_CPU_PATH "/sys/devices/system/cpu" #define UNKNOWN -1 typedef struct { int cpu; /* CPU # */ int old_revision; /* Old microcode revision */ int new_revision; /* New microcode revision */ int year; /* Year of new revision */ int month; /* Month of new revision */ int day; /* Day of new revision */ } microcode_info; static fwts_list *klog; static int microcode_init(fwts_framework *fw) { bool intel; if (fwts_cpu_is_Intel(&intel) != FWTS_OK) { fwts_log_error(fw, "Cannot determine processor type."); return FWTS_ERROR; } if (!intel) { fwts_log_info(fw, "The microcode test currently only supports Intel processors."); return FWTS_SKIP; } klog = fwts_klog_read(); if (klog == NULL) { fwts_log_error(fw, "Cannot read kernel log."); return FWTS_ERROR; } return FWTS_OK; } static int microcode_deinit(fwts_framework *fw) { FWTS_UNUSED(fw); fwts_klog_free(klog); return FWTS_OK; } microcode_info *microcode_find_cpu( const int cpu, fwts_list *microcode_info_list) { fwts_list_link *item; fwts_list_foreach(item, microcode_info_list) { microcode_info *info = fwts_list_data(microcode_info *, item); if (info->cpu == cpu) return info; } return NULL; } static int microcode_test1(fwts_framework *fw) { fwts_list_link *item; fwts_list microcode_info_list; microcode_info *info; DIR *dir; struct dirent *entry; int failed = 0; int passed = 0; fwts_list_init(µcode_info_list); fwts_log_info(fw, "This test verifies if the firmware has put a recent revision " "of the microcode into the processor at boot time. Recent " "microcode is important to have all the required " "features and errata updates for the processor."); /* * Gather data from klog, scan for patterns like: * microcode: CPU0 sig=0x306a9, pf=0x10, revision=0x12 * microcode: CPU0 updated to revision 0x17, date = 2013-01-09 */ fwts_list_foreach(item, klog) { char *ptr; char *line = fwts_list_data(char *, item); line = fwts_klog_remove_timestamp(line); if (strstr(line, "microcode:") == NULL) continue; ptr = strstr(line, "revision=0x"); if (ptr) { int cpu; int revision; if (sscanf(line, "%*s CPU%d sig=0x%*x, pf=0x%*x, revision=0x%x", &cpu, &revision) != 2) continue; if (microcode_find_cpu(cpu, µcode_info_list) == NULL) { info = calloc(1, sizeof(microcode_info)); if (info == NULL) { fwts_log_error(fw, "Cannot allocate memory."); fwts_list_free_items(µcode_info_list, free); return FWTS_ERROR; } info->cpu = cpu; info->old_revision = revision; info->new_revision = UNKNOWN; info->year = UNKNOWN; info->month = UNKNOWN; info->day = UNKNOWN; fwts_list_append(µcode_info_list, info); } continue; } ptr = strstr(line, "updated to revision"); if (ptr) { int cpu; int revision; int year; int month; int day; if (sscanf(line, "%*s CPU%d updated to revision 0x%x, date = %d-%d-%d", &cpu, &revision, &year, &month, &day) != 5) continue; info = microcode_find_cpu(cpu, µcode_info_list); if (info == NULL) { /* * Strange, we found the update but not the * original revision info, create an entry for * this CPU anyhow, mark original revision as * unknown */ info = calloc(1, sizeof(microcode_info)); if (info == NULL) { fwts_log_error(fw, "Cannot allocate memory."); fwts_list_free_items(µcode_info_list, free); return FWTS_ERROR; } info->cpu = cpu; info->old_revision = UNKNOWN; info->new_revision = revision; info->year = year; info->month = month; info->day = day; fwts_list_append(µcode_info_list, info); } else { /* Exists, so update */ info->new_revision = revision; info->year = year; info->month = month; info->day = day; } } } /* * Now sanity check all CPUs */ if ((dir = opendir(SYS_CPU_PATH)) == NULL) { fwts_log_error(fw, "Cannot open %s.", SYS_CPU_PATH); fwts_list_free_items(µcode_info_list, free); return FWTS_ERROR; } /* Scan and check */ while ((entry = readdir(dir)) != NULL) { char path[PATH_MAX]; char *data; if (entry && (strlen(entry->d_name) > 3) && (strncmp(entry->d_name,"cpu", 3) == 0) && (isdigit(entry->d_name[3]))) { snprintf(path, sizeof(path), SYS_CPU_PATH "/%s/microcode/version", entry->d_name); if ((data = fwts_get(path)) != NULL) { int cpu = (int)strtoul(&entry->d_name[3], NULL, 16); int revision = (int)strtoul(data, NULL, 16); free(data); info = microcode_find_cpu(cpu, µcode_info_list); if (info == NULL) { /* * It may be null because the kernel log * is old and we've now lost the log * messages, so we can't really sanity * check, so it's not strictly a failure. */ fwts_log_info(fw, "Could not determine if CPU %d had a microcode " "update from the kernel message log.", cpu); continue; } /* * We found the old revision but not a * new revsion, failed */ if (info->new_revision == UNKNOWN) { failed++; fwts_failed(fw, LOG_LEVEL_MEDIUM, "MicrocodeNotUpdated", "The kernel did not report that CPU %d has had a microcode update. " "The current firmware is revision 0x%x and probably has not been updated.", cpu, info->old_revision); continue; } /* * We found a new revision but it does not * match the CPU info, failed */ if (info->new_revision != revision) { failed++; fwts_failed(fw, LOG_LEVEL_MEDIUM, "MicrocodeMismatch", "The kernel has reported that CPU %d has had a microcode update " "to revision 0x%x, however, the processor seems to be running " "with a different revision 0x%x", cpu, info->new_revision, revision); continue; } /* * We found a new revision but not an old one, * assume it was OK since it got updated */ if (info->old_revision == UNKNOWN) { passed++; fwts_log_info(fw, "CPU %d microcode updated to revision 0x%x.", cpu, info->new_revision); continue; } /* Final sanity check */ if (info->new_revision < info->old_revision) { failed++; fwts_failed(fw, LOG_LEVEL_HIGH, "MicrocodeDowngrade", "The kernel has reported that CPU %d has had a microcode update " "downgrade from revision 0x%x down to revision 0x%x (%d-%2.2d-%2.2d).", cpu, info->new_revision, info->old_revision, info->year, info->month, info->day); } else { passed++; fwts_log_info(fw, "CPU %d microcode updated from revision 0x%x to revision 0x%x (%d-%2.2d-%2.2d).", cpu, info->old_revision, info->new_revision, info->year, info->month, info->day); } } } } if (!failed) { if (passed > 0) fwts_passed(fw, "%d CPU(s) have the latest microcode loaded.", passed); else fwts_skipped(fw, "Could not determine from kernel log if latest microcode has been loaded."); } closedir(dir); fwts_list_free_items(µcode_info_list, free); return FWTS_OK; } static fwts_framework_minor_test microcode_tests[] = { { microcode_test1, "Test for most recent microcode being loaded." }, { NULL, NULL } }; static fwts_framework_ops microcode_ops = { .description = "Test if system is using latest microcode.", .init = microcode_init, .deinit = microcode_deinit, .minor_tests = microcode_tests }; FWTS_REGISTER("microcode", µcode_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | FWTS_FLAG_ROOT_PRIV); #endif src/cpu/msr/000077500000000000000000000000001231470457100132415ustar00rootroot00000000000000src/cpu/msr/msr.c000066400000000000000000001074031231470457100142130ustar00rootroot00000000000000/* * Copyright (C) 2011-2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #include "fwts.h" #include #ifdef FWTS_ARCH_INTEL typedef void (*msr_callback_check)(fwts_framework *fw, const uint64_t val); static int ncpus; static bool intel_cpu; static bool amd_cpu; static fwts_cpuinfo_x86 *cpuinfo; static int msr_init(fwts_framework *fw) { char *bios_vendor; if ((cpuinfo = fwts_cpu_get_info(0)) == NULL) { fwts_log_error(fw, "Cannot get CPU info"); return FWTS_ERROR; } if (cpuinfo->vendor_id == NULL) { fwts_log_error(fw, "Cannot get CPU vendor_id"); return FWTS_ERROR; } intel_cpu = strstr(cpuinfo->vendor_id, "Intel") != NULL; amd_cpu = strstr(cpuinfo->vendor_id, "AuthenticAMD") != NULL; if ((ncpus = fwts_cpu_enumerate()) == FWTS_ERROR) { fwts_log_error(fw, "Cannot detect the number of CPUs on this machine."); return FWTS_ABORTED; } /* * Running MSR tests inside virtual machines such as QEMU with some kernel/kvm * combinations have been observed to cause GPFs. We kludge around this by * avoiding MSR tests for a Bochs BIOS based QEMU virtual machine. */ if ((bios_vendor = fwts_get("/sys/class/dmi/id/bios_vendor")) != NULL) { if (strstr(bios_vendor, "Bochs")) { fwts_log_error(fw, "MSR test being avoiding inside a virtual machine as " "this is known to cause General Protection Faults on " "some configurations."); free(bios_vendor); return FWTS_SKIP; } free(bios_vendor); } return FWTS_OK; } static int msr_deinit(fwts_framework *fw) { FWTS_UNUSED(fw); fwts_cpu_free_info(cpuinfo); return FWTS_OK; } static int msr_consistent(const uint32_t msr, const int shift, const uint64_t mask, uint64_t *const vals, int *const inconsistent_count, bool *const inconsistent) { int cpu; *inconsistent_count = 0; for (cpu = 0; cpu < ncpus; cpu++) { uint64_t val; if (fwts_cpu_readmsr(cpu, msr, &val) != FWTS_OK) { return FWTS_ERROR; } val >>= shift; val &= mask; vals[cpu] = val; } for (cpu = 0; cpu < ncpus; cpu++) { if (vals[0] != vals[cpu]) { (*inconsistent_count)++; inconsistent[cpu] = true; } else { inconsistent[cpu] = false; } } return FWTS_OK; } static int msr_consistent_check(fwts_framework *fw, const fwts_log_level level, const char *const msr_name, const uint32_t msr, const int shift, const uint64_t mask, const msr_callback_check callback) { uint64_t *vals; bool *inconsistent; int inconsistent_count; int cpu; if ((vals = calloc(ncpus, sizeof(uint64_t))) == NULL) { fwts_log_error(fw, "Out of memory allocating msr value buffers."); return FWTS_ERROR; } if ((inconsistent = calloc(ncpus, sizeof(bool))) == NULL) { fwts_log_error(fw, "Out of memory allocating msr value buffers."); free(vals); return FWTS_ERROR; } if (msr_consistent(msr, shift, mask, vals, &inconsistent_count, inconsistent) != FWTS_OK) { free(inconsistent); free(vals); return FWTS_ERROR; } if (inconsistent_count > 0) { fwts_failed(fw, level, "MSRCPUsInconsistent", "MSR 0x%8.8" PRIx32 " %s has %d inconsistent values across " "%d CPUs (shift: %d mask: 0x%" PRIx64 ").", msr, msr_name, inconsistent_count, ncpus, shift, mask); for (cpu = 1; cpu < ncpus; cpu++) { if (inconsistent[cpu]) fwts_log_info(fw, "MSR CPU 0 -> 0x%" PRIx64 " vs CPU %d -> 0x%" PRIx64, vals[0], cpu, vals[cpu]); } } else { fwts_passed(fw, "MSR 0x%8.8" PRIx32 " %s " "is consistent across %d CPUs.", msr, msr_name, ncpus); if (callback) callback(fw, vals[0]); } free(inconsistent); free(vals); return FWTS_OK; } static int msr_pstate_ratios(fwts_framework *fw) { if (intel_cpu) { msr_consistent_check(fw, LOG_LEVEL_HIGH, "Minimum P-State", 0xce, 8, 0xff, NULL); msr_consistent_check(fw, LOG_LEVEL_HIGH, "Maximum P-State", 0xce, 40, 0xff, NULL); } else fwts_skipped(fw, "Non-Intel CPU, test skipped."); return FWTS_OK; } static void msr_c1_c3_autodemotion_check(fwts_framework *fw, const uint64_t val) { fwts_log_info(fw, "C1 and C3 Autodemotion %s.", val == 3 ? "enabled" : "disabled"); } static int msr_c1_c3_autodemotion(fwts_framework *fw) { if (intel_cpu) { msr_consistent_check(fw, LOG_LEVEL_HIGH, "C1 and C3 Autodemotion", 0xe2, 25, 0x03, msr_c1_c3_autodemotion_check); } else fwts_skipped(fw, "Non-Intel CPU, test skipped."); return FWTS_OK; } static int msr_smrr(fwts_framework *fw) { uint64_t val; if (intel_cpu) { if (fwts_cpu_readmsr(0, 0xfe, &val) != FWTS_OK) { fwts_skipped(fw, "Cannot read MSR 0xfe."); return FWTS_ERROR; } if (((val >> 11) & 1) == 0) fwts_log_info(fw, "SMRR not supported by this CPU."); else { msr_consistent_check(fw, LOG_LEVEL_HIGH, "SMRR_PHYSBASE", 0x1f2, 12, 0xfffff, NULL); msr_consistent_check(fw, LOG_LEVEL_HIGH, "SMRR_TYPE", 0x1f2, 0, 0x7, NULL); msr_consistent_check(fw, LOG_LEVEL_HIGH, "SMRR_PHYSMASK", 0x1f3, 12, 0xfffff, NULL); msr_consistent_check(fw, LOG_LEVEL_HIGH, "SMRR_VALID", 0x1f3, 11, 0x1, NULL); if (fwts_cpu_readmsr(0, 0x1f2, &val) == FWTS_OK) { uint64_t physbase = val & 0xfffff000; uint64_t type = val & 7; if ((physbase & 0x7fffff) != 0) fwts_failed(fw, LOG_LEVEL_HIGH, "MSRSMRR_PHYSBASE8MBBoundary", "SMRR: SMRR_PHYSBASE is NOT on an 8MB boundary: %" PRIx64 ".", physbase); if (type != 6) fwts_failed(fw, LOG_LEVEL_HIGH, "MSRSMRR_TYPE", "SMRR: SMRR_TYPE is 0x%" PRIx64 ", should be 0x6 (Write-Back).", type); } if (fwts_cpu_readmsr(0, 0x1f3, &val) == FWTS_OK) { uint64_t physmask = val & 0xfffff000; uint64_t valid = (val >> 11) & 1; if (physmask < 0x80000) { fwts_failed(fw, LOG_LEVEL_HIGH, "MSRSMRRRegion", "SMRR: region needs to be at least 8MB, " "SMRR_PHYSMASK = %" PRIx64 ".", physmask); } if (!valid) fwts_failed(fw, LOG_LEVEL_HIGH, "MSRSMRRValidBit", "SMRR: valid bit is 0, it should be 1 (enabled)."); } } } else fwts_skipped(fw, "Non-Intel CPU, test skipped."); return FWTS_OK; } typedef struct { const char *const name; const uint32_t msr; const uint64_t mask; const msr_callback_check callback; } msr_info; /* From AMD Architecture Programmer's Manual, Volume 2: System Programming, Appending A */ static const msr_info AMD_MSRs[] = { { "MTRRCAP", 0x000000fe, 0x0000000000000fffULL, NULL }, { "SYSENTER_CS", 0x00000174, 0x000000000000ffffULL, NULL }, { "SYSENTER_ESP", 0x00000175, 0xffffffffffffffffULL, NULL }, { "SYSENTER_EIP", 0x00000176, 0xffffffffffffffffULL, NULL }, { "MCG_CAP", 0x00000179, 0x0000000001ff0fffULL, NULL }, { "MCG_STATUS", 0x0000017a, 0xffffffffffffffffULL, NULL }, { "MCG_CTL", 0x0000017b, 0xffffffffffffffffULL, NULL }, { "MTRR_PHYSBASE0", 0x00000200, 0xffffffffffffffffULL, NULL }, { "MTRR_PHYSMASK0", 0x00000201, 0xffffffffffffffffULL, NULL }, { "MTRR_PHYSBASE1", 0x00000202, 0xffffffffffffffffULL, NULL }, { "MTRR_PHYSMASK1", 0x00000203, 0xffffffffffffffffULL, NULL }, { "MTRR_PHYSBASE2", 0x00000204, 0xffffffffffffffffULL, NULL }, { "MTRR_PHYSMASK2", 0x00000205, 0xffffffffffffffffULL, NULL }, { "MTRR_PHYSBASE3", 0x00000206, 0xffffffffffffffffULL, NULL }, { "MTRR_PHYSMASK3", 0x00000207, 0xffffffffffffffffULL, NULL }, { "MTRR_PHYSBASE4", 0x00000208, 0xffffffffffffffffULL, NULL }, { "MTRR_PHYSMASK4", 0x00000209, 0xffffffffffffffffULL, NULL }, { "MTRR_PHYSBASE5", 0x0000020a, 0xffffffffffffffffULL, NULL }, { "MTRR_PHYSMASK5", 0x0000020b, 0xffffffffffffffffULL, NULL }, { "MTRR_PHYSBASE6", 0x0000020c, 0xffffffffffffffffULL, NULL }, { "MTRR_PHYSMASK6", 0x0000020d, 0xffffffffffffffffULL, NULL }, { "MTRR_PHYSBASE7", 0x0000020e, 0xffffffffffffffffULL, NULL }, { "MTRR_PHYSMASK7", 0x0000020f, 0xffffffffffffffffULL, NULL }, { "MTRR_FIX64K_000", 0x00000250, 0xffffffffffffffffULL, NULL }, { "MTRR_FIX16K_800", 0x00000258, 0xffffffffffffffffULL, NULL }, { "MTRR_FIX16K_a00", 0x00000259, 0xffffffffffffffffULL, NULL }, { "MTRR_FIX4K_C000", 0x00000268, 0xffffffffffffffffULL, NULL }, { "MTRR_FIX4K_C800", 0x00000269, 0xffffffffffffffffULL, NULL }, { "MTRR_FIX4K_D000", 0x0000026a, 0xffffffffffffffffULL, NULL }, { "MTRR_FIX4K_D800", 0x0000026b, 0xffffffffffffffffULL, NULL }, { "MTRR_FIX4K_E000", 0x0000026c, 0xffffffffffffffffULL, NULL }, { "MTRR_FIX4K_E800", 0x0000026d, 0xffffffffffffffffULL, NULL }, { "MTRR_FIX4K_F000", 0x0000026e, 0xffffffffffffffffULL, NULL }, { "MTRR_FIX4K_F800", 0x0000026f, 0xffffffffffffffffULL, NULL }, { "PAT", 0x00000277, 0x0707070707070703ULL, NULL }, { "MTRR_DEF_TYPE", 0x000002ff, 0x0000000000000c0fULL, NULL }, { "EFER", 0xc0000080, 0x0000000000000d01ULL, NULL }, { "STAR", 0xc0000081, 0xffffffffffffffffULL, NULL }, { "LSTAR", 0xc0000082, 0xffffffffffffffffULL, NULL }, { "FMASK", 0xc0000084, 0xffffffffffffffffULL, NULL }, //{ "FS_BASE", 0xc0000100, 0xffffffffffffffffULL, NULL }, //{ "GS_BASE", 0xc0000101, 0xffffffffffffffffULL, NULL }, { "KERNEL_GS_BASE", 0xc0000102, 0xffffffffffffffffULL, NULL }, //{ "TSC_AUX", 0xc0000103, 0x00000000ffffffffULL, NULL }, { "SYSCFG", 0xc0010010, 0xffffffffffffffffULL, NULL }, { "IORRBase0", 0xc0010016, 0xffffffffffffffffULL, NULL }, { "IORRMask0", 0xc0010017, 0xffffffffffffffffULL, NULL }, { "IORRBase1", 0xc0010018, 0xffffffffffffffffULL, NULL }, { "IORRMask1", 0xc0010019, 0xffffffffffffffffULL, NULL }, { "TOP_MEM", 0xc001001a, 0xffffffffffffffffULL, NULL }, { "TOP_MEM2", 0xc001001d, 0xffffffffffffffffULL, NULL }, { "Processor_Name_String", 0xc0010030, 0xffffffffffffffffULL, NULL }, { "Processor_Name_String", 0xc0010031, 0xffffffffffffffffULL, NULL }, { "Processor_Name_String", 0xc0010032, 0xffffffffffffffffULL, NULL }, { "Processor_Name_String", 0xc0010033, 0xffffffffffffffffULL, NULL }, { "Processor_Name_String", 0xc0010034, 0xffffffffffffffffULL, NULL }, { "Processor_Name_String", 0xc0010035, 0xffffffffffffffffULL, NULL }, { "TSC Ratio", 0xc0010104, 0xffffffffffffffffULL, NULL }, //{ "SMBASE", 0xc0010111, 0xffffffffffffffffULL, NULL }, { "SMM_ADDR", 0xc0010112, 0xffffffffffffffffULL, NULL }, { "SMM_MASK", 0xc0010113, 0xffffffffffffffffULL, NULL }, { "VM_CR", 0xc0010114, 0xffffffffffffffffULL, NULL }, { "IGNNE", 0xc0010115, 0xffffffffffffffffULL, NULL }, { "SMM_CTL", 0xc0010116, 0xffffffffffffffffULL, NULL }, { "VM_HSAVE_PA", 0xc0010117, 0xffffffffffffffffULL, NULL }, { "SVM_KEY_MSR", 0xc0010118, 0xffffffffffffffffULL, NULL }, { "OSVW_ID_Length", 0xc0010140, 0xffffffffffffffffULL, NULL }, { NULL, 0x00000000, 0, NULL } }; static const msr_info IA32_MSRs[] = { //{ "P5_MC_ADDR", 0x00000000, 0xffffffffffffffffULL, NULL }, { "P5_MC_TYPE", 0x00000001, 0xffffffffffffffffULL, NULL }, { "MONITOR_FILTER_SIZE", 0x00000006, 0xffffffffffffffffULL, NULL }, //{ "TIME_STAMP_COUNTER", 0x00000010, 0xffffffffffffffffULL, NULL }, { "PLATFORM_ID", 0x00000017, 0x001c000000000000ULL, NULL }, { "EBL_CR_POWERON", 0x0000002a, 0xffffffffffffffffULL, NULL }, { "APIC_BASE", 0x0000001b, 0xfffffffffffffeffULL, NULL }, { "FEATURE_CONTROL", 0x0000003a, 0x000000000000ff07ULL, NULL }, { "BIOS_SIGN_ID", 0x0000008b, 0xffffffff00000000ULL, NULL }, { "MTRRCAP", 0x000000fe, 0x0000000000000fffULL, NULL }, { "SYSENTER_CS", 0x00000174, 0x000000000000ffffULL, NULL }, { "SYSENTER_ESP", 0x00000175, 0xffffffffffffffffULL, NULL }, { "SYSENTER_EIP", 0x00000176, 0xffffffffffffffffULL, NULL }, { "MCG_CAP", 0x00000179, 0x0000000001ff0fffULL, NULL }, { "MCG_STATUS", 0x0000017a, 0xffffffffffffffffULL, NULL }, { "MCG_CTL", 0x0000017b, 0xffffffffffffffffULL, NULL }, { "CLOCK_MODULATION", 0x0000019a, 0x000000000000001fULL, NULL }, { "THERM_INTERRUPT", 0x0000019b, 0x000000000180801fULL, NULL }, //{ "THERM_STATUS", 0x0000019c, 0x0000000080000fffULL, NULL }, { "MISC_ENABLE", 0x000001a0, 0x0000000400c51889ULL, NULL }, { "PACKAGE_THERM_INTERRUPT", 0x000001b2, 0x0000000001ffff17ULL, NULL }, { "SMRR_PHYSBASE", 0x000001f2, 0x00000000fffff0ffULL, NULL }, { "SMRR_PHYSMASK", 0x000001f3, 0x00000000fffff800ULL, NULL }, { "PLATFORM_DCA_CAP", 0x000001f8, 0xffffffffffffffffULL, NULL }, { "CPU_DCA_CAP", 0x000001f9, 0xffffffffffffffffULL, NULL }, { "DCA_O_CAP", 0x000001fa, 0x000000000501e7ffULL, NULL }, { "MTRR_PHYSBASE0", 0x00000200, 0xffffffffffffffffULL, NULL }, { "MTRR_PHYSMASK0", 0x00000201, 0xffffffffffffffffULL, NULL }, { "MTRR_PHYSBASE1", 0x00000202, 0xffffffffffffffffULL, NULL }, { "MTRR_PHYSMASK1", 0x00000203, 0xffffffffffffffffULL, NULL }, { "MTRR_PHYSBASE2", 0x00000204, 0xffffffffffffffffULL, NULL }, { "MTRR_PHYSMASK2", 0x00000205, 0xffffffffffffffffULL, NULL }, { "MTRR_PHYSBASE3", 0x00000206, 0xffffffffffffffffULL, NULL }, { "MTRR_PHYSMASK3", 0x00000207, 0xffffffffffffffffULL, NULL }, { "MTRR_PHYSBASE4", 0x00000208, 0xffffffffffffffffULL, NULL }, { "MTRR_PHYSMASK4", 0x00000209, 0xffffffffffffffffULL, NULL }, { "MTRR_PHYSBASE5", 0x0000020a, 0xffffffffffffffffULL, NULL }, { "MTRR_PHYSMASK5", 0x0000020b, 0xffffffffffffffffULL, NULL }, { "MTRR_PHYSBASE6", 0x0000020c, 0xffffffffffffffffULL, NULL }, { "MTRR_PHYSMASK6", 0x0000020d, 0xffffffffffffffffULL, NULL }, { "MTRR_PHYSBASE7", 0x0000020e, 0xffffffffffffffffULL, NULL }, { "MTRR_PHYSMASK7", 0x0000020f, 0xffffffffffffffffULL, NULL }, { "MTRR_PHYSBASE8", 0x00000210, 0xffffffffffffffffULL, NULL }, { "MTRR_PHYSMASK8", 0x00000211, 0xffffffffffffffffULL, NULL }, { "MTRR_PHYSBASE9", 0x00000212, 0xffffffffffffffffULL, NULL }, { "MTRR_PHYSMASK9", 0x00000213, 0xffffffffffffffffULL, NULL }, { "MTRR_FIX64K_000", 0x00000250, 0xffffffffffffffffULL, NULL }, { "MTRR_FIX16K_800", 0x00000258, 0xffffffffffffffffULL, NULL }, { "MTRR_FIX16K_a00", 0x00000259, 0xffffffffffffffffULL, NULL }, { "MTRR_FIX4K_C000", 0x00000268, 0xffffffffffffffffULL, NULL }, { "MTRR_FIX4K_C800", 0x00000269, 0xffffffffffffffffULL, NULL }, { "MTRR_FIX4K_D000", 0x0000026a, 0xffffffffffffffffULL, NULL }, { "MTRR_FIX4K_D800", 0x0000026b, 0xffffffffffffffffULL, NULL }, { "MTRR_FIX4K_E000", 0x0000026c, 0xffffffffffffffffULL, NULL }, { "MTRR_FIX4K_E800", 0x0000026d, 0xffffffffffffffffULL, NULL }, { "MTRR_FIX4K_F000", 0x0000026e, 0xffffffffffffffffULL, NULL }, { "MTRR_FIX4K_F800", 0x0000026f, 0xffffffffffffffffULL, NULL }, { "PAT", 0x00000277, 0x0707070707070703ULL, NULL }, { "MC0_CTL2", 0x00000280, 0x0000000040007fffULL, NULL }, { "MC1_CTL2", 0x00000281, 0x0000000040007fffULL, NULL }, { "MC2_CTL2", 0x00000282, 0x0000000040007fffULL, NULL }, { "MC3_CTL2", 0x00000283, 0x0000000040007fffULL, NULL }, { "MC4_CTL2", 0x00000284, 0x0000000040007fffULL, NULL }, { "MC5_CTL2", 0x00000285, 0x0000000040007fffULL, NULL }, { "MC6_CTL2", 0x00000286, 0x0000000040007fffULL, NULL }, { "MC7_CTL2", 0x00000287, 0x0000000040007fffULL, NULL }, { "MC8_CTL2", 0x00000288, 0x0000000040007fffULL, NULL }, { "MC9_CTL2", 0x00000289, 0x0000000040007fffULL, NULL }, { "MC10_CTL2", 0x0000028a, 0x0000000040007fffULL, NULL }, { "MC11_CTL2", 0x0000028b, 0x0000000040007fffULL, NULL }, { "MC12_CTL2", 0x0000028c, 0x0000000040007fffULL, NULL }, { "MC13_CTL2", 0x0000028d, 0x0000000040007fffULL, NULL }, { "MC14_CTL2", 0x0000028e, 0x0000000040007fffULL, NULL }, { "MC15_CTL2", 0x0000028f, 0x0000000040007fffULL, NULL }, { "MC16_CTL2", 0x00000290, 0x0000000040007fffULL, NULL }, { "MC17_CTL2", 0x00000291, 0x0000000040007fffULL, NULL }, { "MC18_CTL2", 0x00000292, 0x0000000040007fffULL, NULL }, { "MC19_CTL2", 0x00000293, 0x0000000040007fffULL, NULL }, { "MC20_CTL2", 0x00000294, 0x0000000040007fffULL, NULL }, { "MC21_CTL2", 0x00000295, 0x0000000040007fffULL, NULL }, { "MTRR_DEF_TYPE", 0x000002ff, 0x0000000000000c0fULL, NULL }, { "PEBS_ENABLE", 0x000003f1, 0x0000000000000001ULL, NULL }, { "VMX_BASIC", 0x00000480, 0xffffffffffffffffULL, NULL }, { "VMX_PINPASED_CTLS", 0x00000481, 0xffffffffffffffffULL, NULL }, { "VMX_PROCBASED_CTLS", 0x00000482, 0xffffffffffffffffULL, NULL }, { "VMX_EXIT_CTLS", 0x00000483, 0xffffffffffffffffULL, NULL }, { "VMX_ENTRY_CTLS", 0x00000484, 0xffffffffffffffffULL, NULL }, { "VMX_MISC", 0x00000485, 0xffffffffffffffffULL, NULL }, { "VMX_CR0_FIXED0", 0x00000486, 0xffffffffffffffffULL, NULL }, { "VMX_CR0_FIXED1", 0x00000487, 0xffffffffffffffffULL, NULL }, { "VMX_CR4_FIXED0", 0x00000488, 0xffffffffffffffffULL, NULL }, { "VMX_CR4_FIXED1", 0x00000489, 0xffffffffffffffffULL, NULL }, { "VMX_VMX_VMCS_ENUM", 0x0000048a, 0xffffffffffffffffULL, NULL }, { "VMX_PROCBASED_CTLS2", 0x0000048b, 0xffffffffffffffffULL, NULL }, { "VMX_EPT_VPID_CAP", 0x0000048c, 0xffffffffffffffffULL, NULL }, { "VMX_TRUE_PINBASED_CTLS", 0x0000048d, 0xffffffffffffffffULL, NULL }, { "VMX_TRUE_PROCBASED_CTLS", 0x0000048e, 0xffffffffffffffffULL, NULL }, { "VMX_TRUE_EXIT_CTLS", 0x0000048f, 0xffffffffffffffffULL, NULL }, { "VMX_TRUE_ENTRY_CTLS", 0x00000490, 0xffffffffffffffffULL, NULL }, { "A_PMC4", 0x000004c5, 0xffffffffffffffffULL, NULL }, { "A_PMC5", 0x000004c6, 0xffffffffffffffffULL, NULL }, { "A_PMC6", 0x000004c7, 0xffffffffffffffffULL, NULL }, { "A_PMC7", 0x000004c8, 0xffffffffffffffffULL, NULL }, { "EFER", 0xc0000080, 0x0000000000000d01ULL, NULL }, { "STAR", 0xc0000081, 0xffffffffffffffffULL, NULL }, { "LSTAR", 0xc0000082, 0xffffffffffffffffULL, NULL }, { "FMASK", 0xc0000084, 0xffffffffffffffffULL, NULL }, //{ "FS_BASE", 0xc0000100, 0xffffffffffffffffULL, NULL }, //{ "GS_BASE", 0xc0000101, 0xffffffffffffffffULL, NULL }, { "KERNEL_GS_BASE", 0xc0000102, 0xffffffffffffffffULL, NULL }, { NULL, 0x00000000, 0, NULL }, }; static const msr_info IA32_atom_MSRs[] = { { "BIOS_UPDT_TRIG", 0x00000079, 0xffffffffffffffffULL, NULL }, { "BIOS_SIGN_ID", 0x0000008b, 0xffffffffffffffffULL, NULL }, { "MSR_FSB_FREQ", 0x000000cd, 0x0000000000000007ULL, NULL }, { "MSR_BBL_CR_CTL3", 0x0000011e, 0x0000000000800101ULL, NULL }, { "PERFEVTSEL0", 0x00000186, 0xffffffffffffffffULL, NULL }, { "PERFEVTSEL1", 0x00000187, 0xffffffffffffffffULL, NULL }, { "MSR_THERM2_CTL", 0x0000019d, 0x0000000000010000ULL, NULL }, { "MC0_CTL", 0x00000400, 0xffffffffffffffffULL, NULL }, { "MC0_STATUS", 0x00000401, 0xffffffffffffffffULL, NULL }, { "MC0_ADDR", 0x00000402, 0xffffffffffffffffULL, NULL }, { "MC1_CTL", 0x00000404, 0xffffffffffffffffULL, NULL }, { "MC1_STATUS", 0x00000405, 0xffffffffffffffffULL, NULL }, { "MC2_CTL", 0x00000408, 0xffffffffffffffffULL, NULL }, { "MC2_STATUS", 0x00000409, 0xffffffffffffffffULL, NULL }, { "MC2_ADDR", 0x0000040a, 0xffffffffffffffffULL, NULL }, { "MC3_CTL", 0x0000040c, 0xffffffffffffffffULL, NULL }, { "MC3_STATUS", 0x0000040d, 0xffffffffffffffffULL, NULL }, { "MC3_ADDR", 0x0000040e, 0xffffffffffffffffULL, NULL }, { "MC4_CTL", 0x00000410, 0xffffffffffffffffULL, NULL }, { "MC4_STATUS", 0x00000411, 0xffffffffffffffffULL, NULL }, { "MC4_ADDR", 0x00000412, 0xffffffffffffffffULL, NULL }, { NULL, 0x00000000, 0, NULL }, }; static const msr_info IA32_silvermont_MSRs[] = { { NULL, 0x00000000, 0, NULL }, }; static const msr_info IA32_nehalem_MSRs[] = { { "BIOS_UPDT_TRIG", 0x00000079, 0xffffffffffffffffULL, NULL }, { "MSR_PLATFORM_INFO", 0x000000ce, 0x0000ff003001ff00ULL, NULL }, { "MSR_PKG_CST_CONFIG_CONTROL", 0x000000e2, 0x0000000007008407ULL, NULL }, { "MSR_PMG_IO_CAPTURE_BASE", 0x000000e4, 0x000000000007ffffULL, NULL }, { "MSR_TEMPERATURE_TARGET", 0x000001a2, 0x0000000000ff0000ULL, NULL }, { "MSR_OFFCORE_RSP_0", 0x000001a6, 0xffffffffffffffffULL, NULL }, { "MSR_MISC_PWR_MGMT", 0x000001aa, 0x0000000000000003ULL, NULL }, { "MSR_TURBO_POWER_CURRENT_LIMIT",0x000001ac, 0x00000000ffffffffULL, NULL }, { "MSR_TURBO_RATIO_LIMIT", 0x000001ad, 0x00000000ffffffffULL, NULL }, { "MSR_POWER_CTL", 0x000001fc, 0x0000000000000002ULL, NULL }, { NULL, 0x00000000, 0, NULL }, }; static const msr_info IA32_sandybridge_MSRs[] = { { "BIOS_UPDT_TRIG", 0x00000079, 0xffffffffffffffffULL, NULL }, { "BIOS_SIGN_ID", 0x0000008b, 0xffffffffffffffffULL, NULL }, { "MSR_PLATFORM_INFO", 0x000000ce, 0x0000ff003001ff00ULL, NULL }, { "MSR_PKG_CST_CONFIG_CONTROL", 0x000000e2, 0x0000000007008407ULL, NULL }, { "MSR_PMG_IO_CAPTURE_BASE", 0x000000e4, 0x000000000007ffffULL, NULL }, { "MSR_TEMPERATURE_TARGET", 0x000001a2, 0x0000000000ff0000ULL, NULL }, { "MSR_OFFCORE_RSP_0", 0x000001a6, 0xffffffffffffffffULL, NULL }, { "MSR_TURBO_RATIO_LIMIT", 0x000001ad, 0x00000000ffffffffULL, NULL }, { "MSR_POWER_CTL", 0x000001fc, 0x0000000000000002ULL, NULL }, { "MSR_PKGC3_IRTL", 0x0000060a, 0x0000000000009fffULL, NULL }, { "MSR_PKGC6_IRTL", 0x0000060b, 0x0000000000009fffULL, NULL }, { "MSR_PKGC7_IRTL", 0x0000060c, 0x0000000000009fffULL, NULL }, { "MSR_PKG_RAPL_POWER_LIMIT", 0x00000610, 0xffffffffffffffffULL, NULL }, { "MSR_PKG_RAPL_POWER_INFO", 0x00000614, 0xffffffffffffffffULL, NULL }, { "MSR_PP0_POWER_LIMIT", 0x00000638, 0xffffffffffffffffULL, NULL }, { "MSR_PP0_POLICY", 0x0000063a, 0xffffffffffffffffULL, NULL }, { "MSR_PP1_POWER_LIMIT", 0x00000640, 0xffffffffffffffffULL, NULL }, { "MSR_PP1_POLICY", 0x00000642, 0xffffffffffffffffULL, NULL }, { NULL, 0x00000000, 0, NULL }, }; static const msr_info IA32_ivybridge_MSRs[] = { { "MSR_PLATFORM_INFO", 0x000000ce, 0x00ffff073000ff00ULL, NULL }, { "MSR_PKG_CST_CONFIG_CONTROL", 0x000000e2, 0x000000001e008407ULL, NULL }, { "MSR_CONFIG_TDP_NOMINAL", 0x00000648, 0x00000000000000ffULL, NULL }, { "MSR_CONFIG_TDP_LEVEL1", 0x00000649, 0x7fff7fff00ff7fffULL, NULL }, { "MSR_CONFIG_TDP_LEVEL2", 0x0000064a, 0x7fff7fff00ff7fffULL, NULL }, { "MSR_CONFIG_TDP_CONTROL", 0x0000064b, 0x0000000080000003ULL, NULL }, { "MSR_TURBO_ACTIVATION_RATIO", 0x0000064c, 0x00000000800000ffULL, NULL }, { NULL, 0x00000000, 0, NULL }, }; static const msr_info IA32_ivybridge_ep_MSRs[] = { { "MSR_PLATFORM_INFO", 0x000000ce, 0x00ffff073000ff00ULL, NULL }, { "MSR_PKG_CST_CONFIG_CONTROL", 0x000000e2, 0x000000001e008407ULL, NULL }, { "MSR_ERROR_CONTROL", 0x0000017f, 0x0000000000000002ULL, NULL }, /* Not sure about the following, commented out for the moment */ /* { "MSR_MC5_CTL", 0x00000414, 0xffffffffffffffffULL, NULL }, { "MSR_MC5_STATUS", 0x00000415, 0xffffffffffffffffULL, NULL }, { "MSR_MC5_ADDR", 0x00000416, 0xffffffffffffffffULL, NULL }, { "MSR_MC5_MISC", 0x00000417, 0xffffffffffffffffULL, NULL }, { "MSR_MC6_CTL", 0x00000418, 0xffffffffffffffffULL, NULL }, { "MSR_MC6_STATUS", 0x00000419, 0xffffffffffffffffULL, NULL }, { "MSR_MC6_ADDR", 0x0000041a, 0xffffffffffffffffULL, NULL }, { "MSR_MC6_MISC", 0x0000041b, 0xffffffffffffffffULL, NULL }, { "MSR_MC7_CTL", 0x0000041c, 0xffffffffffffffffULL, NULL }, { "MSR_MC7_STATUS", 0x0000041d, 0xffffffffffffffffULL, NULL }, { "MSR_MC7_ADDR", 0x0000041e, 0xffffffffffffffffULL, NULL }, { "MSR_MC7_MISC", 0x0000041f, 0xffffffffffffffffULL, NULL }, { "MSR_MC8_CTL", 0x00000420, 0xffffffffffffffffULL, NULL }, { "MSR_MC8_STATUS", 0x00000421, 0xffffffffffffffffULL, NULL }, { "MSR_MC8_ADDR", 0x00000422, 0xffffffffffffffffULL, NULL }, { "MSR_MC8_MISC", 0x00000423, 0xffffffffffffffffULL, NULL }, { "MSR_MC9_CTL", 0x00000424, 0xffffffffffffffffULL, NULL }, { "MSR_MC9_STATUS", 0x00000425, 0xffffffffffffffffULL, NULL }, { "MSR_MC9_ADDR", 0x00000426, 0xffffffffffffffffULL, NULL }, { "MSR_MC9_MISC", 0x00000427, 0xffffffffffffffffULL, NULL }, { "MSR_MC10_CTL", 0x00000428, 0xffffffffffffffffULL, NULL }, { "MSR_MC10_STATUS", 0x00000429, 0xffffffffffffffffULL, NULL }, { "MSR_MC10_ADDR", 0x0000042a, 0xffffffffffffffffULL, NULL }, { "MSR_MC10_MISC", 0x0000042b, 0xffffffffffffffffULL, NULL }, { "MSR_MC11_CTL", 0x0000042c, 0xffffffffffffffffULL, NULL }, { "MSR_MC11_STATUS", 0x0000042d, 0xffffffffffffffffULL, NULL }, { "MSR_MC11_ADDR", 0x0000042e, 0xffffffffffffffffULL, NULL }, { "MSR_MC11_MISC", 0x0000042f, 0xffffffffffffffffULL, NULL }, { "MSR_MC12_CTL", 0x00000430, 0xffffffffffffffffULL, NULL }, { "MSR_MC12_STATUS", 0x00000431, 0xffffffffffffffffULL, NULL }, { "MSR_MC12_ADDR", 0x00000432, 0xffffffffffffffffULL, NULL }, { "MSR_MC12_MISC", 0x00000433, 0xffffffffffffffffULL, NULL }, { "MSR_MC13_CTL", 0x00000434, 0xffffffffffffffffULL, NULL }, { "MSR_MC13_STATUS", 0x00000435, 0xffffffffffffffffULL, NULL }, { "MSR_MC13_ADDR", 0x00000436, 0xffffffffffffffffULL, NULL }, { "MSR_MC13_MISC", 0x00000437, 0xffffffffffffffffULL, NULL }, { "MSR_MC14_CTL", 0x00000438, 0xffffffffffffffffULL, NULL }, { "MSR_MC14_STATUS", 0x00000439, 0xffffffffffffffffULL, NULL }, { "MSR_MC14_ADDR", 0x0000043a, 0xffffffffffffffffULL, NULL }, { "MSR_MC14_MISC", 0x0000043b, 0xffffffffffffffffULL, NULL }, { "MSR_MC15_CTL", 0x0000043c, 0xffffffffffffffffULL, NULL }, { "MSR_MC15_STATUS", 0x0000043d, 0xffffffffffffffffULL, NULL }, { "MSR_MC15_ADDR", 0x0000043e, 0xffffffffffffffffULL, NULL }, { "MSR_MC15_MISC", 0x0000043f, 0xffffffffffffffffULL, NULL }, { "MSR_MC16_CTL", 0x00000440, 0xffffffffffffffffULL, NULL }, { "MSR_MC16_STATUS", 0x00000441, 0xffffffffffffffffULL, NULL }, { "MSR_MC16_ADDR", 0x00000442, 0xffffffffffffffffULL, NULL }, { "MSR_MC16_MISC", 0x00000443, 0xffffffffffffffffULL, NULL }, { "MSR_MC17_CTL", 0x00000444, 0xffffffffffffffffULL, NULL }, { "MSR_MC17_STATUS", 0x00000445, 0xffffffffffffffffULL, NULL }, { "MSR_MC17_ADDR", 0x00000446, 0xffffffffffffffffULL, NULL }, { "MSR_MC17_MISC", 0x00000447, 0xffffffffffffffffULL, NULL }, { "MSR_MC18_CTL", 0x00000448, 0xffffffffffffffffULL, NULL }, { "MSR_MC18_STATUS", 0x00000449, 0xffffffffffffffffULL, NULL }, { "MSR_MC18_ADDR", 0x0000044a, 0xffffffffffffffffULL, NULL }, { "MSR_MC18_MISC", 0x0000044b, 0xffffffffffffffffULL, NULL }, { "MSR_MC19_CTL", 0x0000044c, 0xffffffffffffffffULL, NULL }, { "MSR_MC19_STATUS", 0x0000044d, 0xffffffffffffffffULL, NULL }, { "MSR_MC19_ADDR", 0x0000044e, 0xffffffffffffffffULL, NULL }, { "MSR_MC19_MISC", 0x0000044f, 0xffffffffffffffffULL, NULL }, { "MSR_MC20_CTL", 0x00000450, 0xffffffffffffffffULL, NULL }, { "MSR_MC20_STATUS", 0x00000451, 0xffffffffffffffffULL, NULL }, { "MSR_MC20_ADDR", 0x00000452, 0xffffffffffffffffULL, NULL }, { "MSR_MC20_MISC", 0x00000453, 0xffffffffffffffffULL, NULL }, { "MSR_MC21_CTL", 0x00000454, 0xffffffffffffffffULL, NULL }, { "MSR_MC21_STATUS", 0x00000455, 0xffffffffffffffffULL, NULL }, { "MSR_MC21_ADDR", 0x00000456, 0xffffffffffffffffULL, NULL }, { "MSR_MC21_MISC", 0x00000457, 0xffffffffffffffffULL, NULL }, { "MSR_MC22_CTL", 0x00000458, 0xffffffffffffffffULL, NULL }, { "MSR_MC22_STATUS", 0x00000459, 0xffffffffffffffffULL, NULL }, { "MSR_MC22_ADDR", 0x0000045a, 0xffffffffffffffffULL, NULL }, { "MSR_MC22_MISC", 0x0000045b, 0xffffffffffffffffULL, NULL }, { "MSR_MC23_CTL", 0x0000045c, 0xffffffffffffffffULL, NULL }, { "MSR_MC23_STATUS", 0x0000045d, 0xffffffffffffffffULL, NULL }, { "MSR_MC23_ADDR", 0x0000045e, 0xffffffffffffffffULL, NULL }, { "MSR_MC23_MISC", 0x0000045f, 0xffffffffffffffffULL, NULL }, { "MSR_MC24_CTL", 0x00000460, 0xffffffffffffffffULL, NULL }, { "MSR_MC24_STATUS", 0x00000461, 0xffffffffffffffffULL, NULL }, { "MSR_MC24_ADDR", 0x00000462, 0xffffffffffffffffULL, NULL }, { "MSR_MC24_MISC", 0x00000463, 0xffffffffffffffffULL, NULL }, { "MSR_MC25_CTL", 0x00000464, 0xffffffffffffffffULL, NULL }, { "MSR_MC25_STATUS", 0x00000465, 0xffffffffffffffffULL, NULL }, { "MSR_MC25_ADDR", 0x00000466, 0xffffffffffffffffULL, NULL }, { "MSR_MC25_MISC", 0x00000467, 0xffffffffffffffffULL, NULL }, { "MSR_MC26_CTL", 0x00000468, 0xffffffffffffffffULL, NULL }, { "MSR_MC26_STATUS", 0x00000469, 0xffffffffffffffffULL, NULL }, { "MSR_MC26_ADDR", 0x0000046a, 0xffffffffffffffffULL, NULL }, { "MSR_MC26_MISC", 0x0000046b, 0xffffffffffffffffULL, NULL }, */ { "MSR_PKG_PERF_STATUS", 0x00000613, 0x00000000ffffffffULL, NULL }, { "MSR_DRAM_POWER_LIMIT", 0x00000618, 0x0000000080ffffffULL, NULL }, { "MSR_DRAM_ENERGY_STATUS", 0x00000619, 0x00000000ffffffffULL, NULL }, { "MSR_DRAM_PERF_STATUS", 0x0000061b, 0x00000000ffffffffULL, NULL }, { "MSR_DRAM_POWER_INFO", 0x0000061c, 0x00ff7fff7fff7fffULL, NULL }, { "MSR_CONFIG_TDP_NOMINAL", 0x00000648, 0x00000000000000ffULL, NULL }, { "MSR_CONFIG_TDP_LEVEL1", 0x00000649, 0x7fff7fff00ff7fffULL, NULL }, { "MSR_CONFIG_TDP_LEVEL2", 0x0000064a, 0x7fff7fff00ff7fffULL, NULL }, { "MSR_CONFIG_TDP_CONTROL", 0x0000064b, 0x0000000080000003ULL, NULL }, { "MSR_TURBO_ACTIVATION_RATIO", 0x0000064c, 0x00000000800000ffULL, NULL }, { NULL, 0x00000000, 0, NULL }, }; static const msr_info IA32_haswell_MSRs[] = { { "MSR_PLATFORM_INFO", 0x000000ce, 0x00ffff073000ff00ULL, NULL }, { "IA32_TSC_ADJUST", 0x0000003b, 0xffffffffffffffffULL, NULL }, { "IA32_PERFEVTSEL0", 0x00000186, 0x00000000ffffffffULL, NULL }, { "IA32_PERFEVTSEL1", 0x00000187, 0x00000000ffffffffULL, NULL }, { "IA32_PERFEVTSEL2", 0x00000188, 0x00000000ffffffffULL, NULL }, { "IA32_PERFEVTSEL3", 0x00000189, 0x00000000ffffffffULL, NULL }, //{ "IA32_VMX_FMFUNC", 0x00000491, 0x0000000000000000ULL, NULL }, { "MSR_CONFIG_TDP_NOMINAL", 0x00000648, 0x00000000000000ffULL, NULL }, { "MSR_CONFIG_TDP_LEVEL1", 0x00000649, 0x7fff7fff00ff7fffULL, NULL }, { "MSR_CONFIG_TDP_LEVEL2", 0x0000064a, 0x7fff7fff00ff7fffULL, NULL }, { "MSR_CONFIG_TDP_CONTROL", 0x0000064b, 0x0000000080000003ULL, NULL }, { "MSR_TURBO_ACTIVATION_RATIO", 0x0000064c, 0x00000000800000ffULL, NULL }, { "MSR_PKG_C8_RESIDENCY", 0x00000630, 0x0fffffffffffffffULL, NULL }, { "MSR_PKG_C9_RESIDENCY", 0x00000630, 0x0fffffffffffffffULL, NULL }, { "MSR_PKG_C10_RESIDENCY", 0x00000630, 0x0fffffffffffffffULL, NULL }, { "MSR_SMM_MCA_CAP", 0x0000017d, 0x0c00000000000000ULL, NULL }, { "MSR_TURBO_RATIO_LIMIT", 0x000001ad, 0x00000000ffffffffULL, NULL }, { "MSR_UNC_PERF_GLOBAL_CTRL", 0x00000391, 0x00000000e000001fULL, NULL }, //{ "MSR_UNC_PERF_GLOBAL_STATUS",0x00000392, 0x000000000000000fULL, NULL }, { "MSR_UNC_PERF_FIXED_CTRL", 0x00000394, 0x0000000005000000ULL, NULL }, //{ "MSR_UNC_PERF_FIXED_CTR", 0x00000395, 0x0000ffffffffffffULL, NULL }, { "MSR_UNC_CB0_CONFIG", 0x00000396, 0x000000000000000fULL, NULL }, //{ "MSR_UNC_ARB_PER_CTR0", 0x000003b0, 0xffffffffffffffffULL, NULL }, //{ "MSR_UNC_ARB_PER_CTR1", 0x000003b1, 0xffffffffffffffffULL, NULL }, //{ "MSR_UNC_ARB_PERFEVTSEL0", 0x000003b2, 0xffffffffffffffffULL, NULL }, //{ "MSR_UNC_ARB_PERFEVTSEL1", 0x000003b3, 0xffffffffffffffffULL, NULL }, { "MSR_UNC_PERF_GLOBAL_CTRL", 0x00000391, 0x00000000e000000fULL, NULL }, { "MSR_UNC_PERF_FIXED_CTR", 0x00000395, 0x0000ffffffffffffULL, NULL }, { "MSR_SMM_FEATURE_CONTROL", 0x000004e0, 0x0000000000000005ULL, NULL }, { "MSR_SMM_DELAYED", 0x000004e2, 0xffffffffffffffffULL, NULL }, { "MSR_SMM_BLOCKED", 0x000004e3, 0xffffffffffffffffULL, NULL }, { "MSR_PP1_POWER_LIMIT", 0x00000640, 0x0000000080ffffffULL, NULL }, { "MSR_PP1_ENERGY_STATUS", 0x00000641, 0x00000000ffffffffULL, NULL }, { "MSR_PP1_POLICY", 0x00000652, 0x000000000000000fULL, NULL }, //{ "MSR_UNC_CB0_0_PERFEVTSEL0" 0x00000700, 0xffffffffffffffffULL, NULL }, //{ "MSR_UNC_CB0_0_PERFEVTSEL1",0x00000701, 0xffffffffffffffffULL, NULL }, //{ "MSR_UNC_CB0_0_PER_CTR0", 0x00000706, 0xffffffffffffffffULL, NULL },` //{ "MSR_UNC_CB0_0_PER_CTR0", 0x00000707, 0xffffffffffffffffULL, NULL },` //{ "MSR_UNC_CB0_1_PERFEVTSEL0" 0x00000710, 0xffffffffffffffffULL, NULL }, //{ "MSR_UNC_CB0_1_PERFEVTSEL1",0x00000711, 0xffffffffffffffffULL, NULL }, //{ "MSR_UNC_CB0_1_PER_CTR0", 0x00000716, 0xffffffffffffffffULL, NULL },` //{ "MSR_UNC_CB0_1_PER_CTR0", 0x00000717, 0xffffffffffffffffULL, NULL },` //{ "MSR_UNC_CB0_1_PERFEVTSEL0" 0x00000720, 0xffffffffffffffffULL, NULL }, //{ "MSR_UNC_CB0_1_PERFEVTSEL1",0x00000721, 0xffffffffffffffffULL, NULL }, //{ "MSR_UNC_CB0_1_PER_CTR0", 0x00000726, 0xffffffffffffffffULL, NULL },` //{ "MSR_UNC_CB0_1_PER_CTR0", 0x00000727, 0xffffffffffffffffULL, NULL },` //{ "MSR_UNC_CB0_1_PERFEVTSEL0" 0x00000730, 0xffffffffffffffffULL, NULL }, //{ "MSR_UNC_CB0_1_PERFEVTSEL1",0x00000731, 0xffffffffffffffffULL, NULL }, //{ "MSR_UNC_CB0_1_PER_CTR0", 0x00000736, 0xffffffffffffffffULL, NULL },` //{ "MSR_UNC_CB0_1_PER_CTR0", 0x00000737, 0xffffffffffffffffULL, NULL },` { NULL, 0x00000000, 0, NULL }, }; static int msr_table_check(fwts_framework *fw, const msr_info *const info) { int i; for (i = 0; info[i].name != NULL; i++) msr_consistent_check(fw, LOG_LEVEL_MEDIUM, info[i].name, info[i].msr, 0, info[i].mask, info[i].callback); return FWTS_OK; } static int msr_cpu_generic(fwts_framework *fw) { if (intel_cpu) msr_table_check(fw, IA32_MSRs); else if (amd_cpu) msr_table_check(fw, AMD_MSRs); else fwts_skipped(fw, "Not an AMD or Intel CPU, test skipped."); return FWTS_OK; } typedef struct { const char *const microarch; const uint8_t family; const uint8_t model; const msr_info *const info; } cpu_to_msr; static const cpu_to_msr cpu_msr_map[] = { { "Pentium", 0x05, 0x01, NULL }, { "Pentium", 0x05, 0x02, NULL }, { "Pentium", 0x05, 0x04, NULL }, { "Pentium Pro", 0x06, 0x01, NULL }, { "Pentium II", 0x06, 0x03, NULL }, { "Pentium II", 0x06, 0x05, NULL }, { "Pentium III", 0x06, 0x07, NULL }, { "Pentium III", 0x06, 0x08, NULL }, { "Pentium M", 0x06, 0x09, NULL }, { "Pentium III", 0x06, 0x0a, NULL }, { "Pentium III", 0x06, 0x0b, NULL }, { "Pentium 4, Xeon", 0x06, 0x00, NULL }, { "Pentium 4, Xeon", 0x0f, 0x01, NULL }, { "Pentium 4, Xeon", 0x0f, 0x02, NULL }, { "Pentium 4, Pentium D, Xeon", 0x0f, 0x03, NULL }, { "Pentium 4, Pentium D, Xeon", 0x0f, 0x04, NULL }, { "Pentium 4, Pentium D, Xeon", 0x0f, 0x06, NULL }, { "Nehalem", 0x06, 0x1a, IA32_nehalem_MSRs }, { "Nehalem", 0x06, 0x1e, IA32_nehalem_MSRs }, { "Nehalem", 0x06, 0x1f, IA32_nehalem_MSRs }, { "Nehalem", 0x06, 0x2e, IA32_nehalem_MSRs }, { "Westmere", 0x06, 0x25, IA32_nehalem_MSRs }, { "Westmere", 0x06, 0x2c, IA32_nehalem_MSRs }, { "Westmere", 0x06, 0x2f, IA32_nehalem_MSRs }, { "Atom", 0x06, 0x1c, IA32_atom_MSRs }, { "Atom", 0x06, 0x26, IA32_atom_MSRs }, { "Atom", 0x06, 0x27, IA32_atom_MSRs }, { "Atom", 0x06, 0x35, IA32_atom_MSRs }, { "Atom", 0x06, 0x36, IA32_atom_MSRs }, { "Atom", 0x06, 0x37, IA32_silvermont_MSRs }, { "Atom", 0x06, 0x4d, IA32_silvermont_MSRs }, { "Sandybridge", 0x06, 0x2a, IA32_sandybridge_MSRs }, { "Sandybridge", 0x06, 0x2d, IA32_sandybridge_MSRs }, { "Ivybridge", 0x06, 0x3a, IA32_ivybridge_MSRs }, { "Ivybridge-EP", 0x06, 0x3e, IA32_ivybridge_ep_MSRs }, { "Haswell", 0x06, 0x3c, IA32_haswell_MSRs }, { "Haswell", 0x06, 0x45, IA32_haswell_MSRs }, { "Haswell", 0x06, 0x46, IA32_haswell_MSRs }, { NULL, 0x00, 0x00, NULL } }; static int msr_cpu_specific(fwts_framework *fw) { if (intel_cpu) { int i; bool checked = false; for (i = 0; cpu_msr_map[i].microarch; i++) { if ((cpu_msr_map[i].model == cpuinfo->x86_model) && (cpu_msr_map[i].family == cpuinfo->x86) && (cpu_msr_map[i].info)) { fwts_log_info(fw, "CPU family: 0x%x, model: 0x%x (%s)", cpu_msr_map[i].family, cpu_msr_map[i].model, cpu_msr_map[i].microarch); msr_table_check(fw, cpu_msr_map[i].info); checked = true; } } if (!checked) fwts_log_info(fw, "No model specific tests for model 0x%x.", cpuinfo->x86_model); } else fwts_skipped(fw, "Non-Intel CPU, test skipped."); return FWTS_OK; } static fwts_framework_minor_test msr_tests[] = { { msr_cpu_generic, "Test CPU generic MSRs." }, { msr_cpu_specific, "Test CPU specific model MSRs." }, { msr_pstate_ratios, "Test all P State Ratios." }, { msr_c1_c3_autodemotion, "Test C1 and C3 autodemotion." }, { msr_smrr, "Test SMRR MSR registers." }, { NULL, NULL } }; static fwts_framework_ops msr_ops = { .description = "MSR register tests.", .init = msr_init, .deinit = msr_deinit, .minor_tests = msr_tests }; FWTS_REGISTER("msr", &msr_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | FWTS_FLAG_ROOT_PRIV); #endif src/cpu/nx/000077500000000000000000000000001231470457100130655ustar00rootroot00000000000000src/cpu/nx/nx.c000066400000000000000000000131001231470457100136510ustar00rootroot00000000000000/* * Copyright (C) 2010-2014 Canonical * * from ideas in check-bios-nx * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #include "fwts.h" #ifdef FWTS_ARCH_INTEL #include #include static int nx_test1(fwts_framework *fw) { fwts_cpuinfo_x86 *fwts_nx_cpuinfo; if ((fwts_nx_cpuinfo = fwts_cpu_get_info(0)) == NULL) { fwts_log_error(fw, "Cannot get CPU info"); return FWTS_ERROR; } if (strstr(fwts_nx_cpuinfo->flags," nx")) { fwts_passed(fw, "CPU has NX flags, BIOS is not disabling it."); fwts_cpu_free_info(fwts_nx_cpuinfo); return FWTS_OK; } if (strstr(fwts_nx_cpuinfo->flags," pae") == NULL) { fwts_passed(fw, "CPU is not PAE capable, so it does not have NX."); fwts_cpu_free_info(fwts_nx_cpuinfo); return FWTS_OK; } if ((fwts_nx_cpuinfo->x86 == -1) || (fwts_nx_cpuinfo->x86_model == -1)) { fwts_failed(fw, LOG_LEVEL_HIGH, "NXNoCPUModel", "No model or family found for this CPU. Please check /proc/cpuinfo."); fwts_cpu_free_info(fwts_nx_cpuinfo); return FWTS_OK; } if (((fwts_nx_cpuinfo->x86 == 6) && (fwts_nx_cpuinfo->x86_model >= 14)) || ((fwts_nx_cpuinfo->x86 == 15) && (fwts_nx_cpuinfo->x86_model >= 3)) || (fwts_nx_cpuinfo->x86 > 15)) { fwts_failed(fw, LOG_LEVEL_HIGH, "NXCapableNotEnabled", "The CPU is family %d, model %d and has NX capabilities but they are not enabled.", fwts_nx_cpuinfo->x86, fwts_nx_cpuinfo->x86_model); fwts_advice(fw, "The system cannot use the protection features provided by NX because " "the BIOS is configured to disable this capability. Please ensure this " "is enabled in the BIOS. For more information please consult " "https://wiki.ubuntu.com/Security/CPUFeatures"); } else fwts_passed(fw, "The CPU is family %d, model %d and does not have NX capabilities.", fwts_nx_cpuinfo->x86, fwts_nx_cpuinfo->x86_model); fwts_cpu_free_info(fwts_nx_cpuinfo); return FWTS_OK; } static int nx_test2(fwts_framework *fw) { fwts_cpuinfo_x86 *fwts_nx_cpuinfo; int i; int n; int cpu0_has_nx = 0; int failed = 0; fwts_log_info(fw, "This test verifies that all CPUs have the same NX flag setting. " "Although rare, BIOS may set the NX flag differently " "per CPU. "); if ((n = fwts_cpu_enumerate()) == FWTS_ERROR) { fwts_log_error(fw, "Cannot determine number of CPUs"); return FWTS_ERROR; } if (n == 1) { fwts_log_info(fw, "Only one CPU, no need to run test."); return FWTS_OK; } for (i=0; iflags," nx") != NULL); } else { if (cpu0_has_nx != (strstr(fwts_nx_cpuinfo->flags," nx") != NULL)) { fwts_failed(fw, LOG_LEVEL_MEDIUM, "NXCPUFlagsInconsistent", "CPU%d has different NX flags to CPU0.", i); failed++; } } fwts_cpu_free_info(fwts_nx_cpuinfo); } if (!failed) fwts_passed(fw, "All %d CPUs have the same NX flag %s.", n, cpu0_has_nx ? "set" : "cleared"); return FWTS_OK; } static int nx_test3(fwts_framework *fw) { int n; int i; int failed = 0; uint64_t msr_value = 0; const uint64_t nx_bit = 1ULL << 34; fwts_cpuinfo_x86 *fwts_nx_cpuinfo; fwts_log_info(fw, "This test verifies that all CPUs have the same NX flag setting by examining the per CPU MSR register 0x1a0."); if ((n = fwts_cpu_enumerate()) == FWTS_ERROR) { fwts_log_error(fw, "Cannot determine number of CPUs"); return FWTS_ERROR; } for (i=0; ivendor_id, "Intel") == NULL) { fwts_log_info(fw, "Non-Intel CPU, skipping test."); fwts_cpu_free_info(fwts_nx_cpuinfo); return FWTS_OK; } if (fwts_cpu_readmsr(i, 0x1a0, &val) != FWTS_OK) { fwts_log_error(fw, "Cannot read msr 0x1a0 on CPU%d", i); fwts_cpu_free_info(fwts_nx_cpuinfo); return FWTS_ERROR; } if (i == 0) { msr_value = val; } else { if ((msr_value & nx_bit) != (val & nx_bit)) { fwts_failed(fw, LOG_LEVEL_MEDIUM, "NXCPUFlagsInconsistent", "CPU%d has different NX flags to CPU0.", i); failed++; } } fwts_cpu_free_info(fwts_nx_cpuinfo); } if (!failed) fwts_passed(fw, "All %d CPUs have the NX flag in MSR 0x1a0 %s.", n, (msr_value & nx_bit) == 0 ? "set" : "cleared"); return FWTS_OK; } static fwts_framework_minor_test nx_tests[] = { { nx_test1, "Test CPU NX capability." }, { nx_test2, "Test all CPUs have same BIOS set NX flag." }, { nx_test3, "Test all CPUs have same msr setting in MSR 0x1a0." }, { NULL, NULL } }; static fwts_framework_ops nx_ops = { .description = "Test if CPU NX is disabled by the BIOS.", .minor_tests = nx_tests }; FWTS_REGISTER("nx", &nx_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | FWTS_FLAG_ROOT_PRIV); #endif src/cpu/virt/000077500000000000000000000000001231470457100134245ustar00rootroot00000000000000src/cpu/virt/virt.c000066400000000000000000000044631231470457100145630ustar00rootroot00000000000000/* * Copyright (C) 2006, Intel Corp * Copyright (C) 2007, AMD Inc * Copyright (C) 2010-2014 Canonical * * This code was originally part of the Linux-ready Firmware Developer Kit * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #define _GNU_SOURCE #include "fwts.h" #ifdef FWTS_ARCH_INTEL #include #include #include typedef enum { CPU_UNKNOWN, CPU_AMD, CPU_INTEL, } cpu_type; fwts_cpuinfo_x86 *fwts_virt_cpuinfo; #define CPUID_NUM_FEATURES 0x00000000L static int virt_init(fwts_framework *fw) { if ((fwts_virt_cpuinfo = fwts_cpu_get_info(0)) == NULL) { fwts_log_error(fw, "Cannot get CPU info"); return FWTS_ERROR; } return FWTS_OK; } static int virt_deinit(fwts_framework *fw) { FWTS_UNUSED(fw); if (fwts_virt_cpuinfo) fwts_cpu_free_info(fwts_virt_cpuinfo); return FWTS_OK; } static int virt_test1(fwts_framework *fw) { extern void virt_check_svm(fwts_framework *); extern void virt_check_vmx(fwts_framework *); if (strstr(fwts_virt_cpuinfo->vendor_id, "AMD") != NULL) { virt_check_svm(fw); } else if (strstr(fwts_virt_cpuinfo->vendor_id, "Intel") != NULL) { virt_check_vmx(fw); } else { fwts_warning(fw, "Cannot test virtualisation extensions - unknown CPU."); } return FWTS_OK; } static fwts_framework_minor_test virt_tests[] = { { virt_test1, "CPU Virtualisation Configuration test." }, { NULL, NULL } }; static fwts_framework_ops virt_ops = { .description = "CPU Virtualisation Configuration test.", .init = virt_init, .deinit = virt_deinit, .minor_tests = virt_tests }; FWTS_REGISTER("virt", &virt_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | FWTS_FLAG_ROOT_PRIV); #endif src/cpu/virt/virt_svm.c000066400000000000000000000044351231470457100154470ustar00rootroot00000000000000/* * Copyright (C) 2006, Intel Corp * Copyright (C) 2007, AMD Inc * Copyright (C) 2010-2014 Canonical * * This file was originally part of the Linux-ready Firmware Developer Kit * * This program file is free software; you can redistribute it and/or modify it * under the terms of the GNU Lesser General Public License as published by the * Free Software Foundation;version 2.1 of the License. * * This library is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License * for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this program in a file named COPYING; if not, write to the * Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ /* * This test checks if the SVM-setup is done correctly by the BIOS */ #define _GNU_SOURCE #include "fwts.h" #ifdef FWTS_ARCH_INTEL #include #include #include #define CPUID_FAM_REV 0x1 #define MSR_FEATURE_CONTROL 0xC0000080 extern fwts_cpuinfo_x86 *fwts_virt_cpuinfo; static int cpu_has_svm(void) { return (strstr(fwts_virt_cpuinfo->flags, "svm") != NULL); } static int can_lock_with_msr(void) { return (fwts_virt_cpuinfo->x86 & 0x10); } static int vt_locked_by_bios(void) { uint64_t msr; if (!can_lock_with_msr()) return 0; if (fwts_cpu_readmsr(0, MSR_FEATURE_CONTROL, &msr)) return -1; return ((msr & 0x1000) == 0x1000); /* SVM capable but locked by bios*/ } void virt_check_svm(fwts_framework *fw) { fwts_log_info(fw, "Check SVM Virtualization extensions are set up correctly."); if (!cpu_has_svm()) fwts_skipped(fw, "Processor does not support Virtualization extensions, won't test BIOS configuration, skipping test."); else { int ret = vt_locked_by_bios(); switch (ret) { case 0: fwts_passed(fw, "Virtualization extensions supported and enabled by BIOS."); break; case 1: fwts_failed(fw, LOG_LEVEL_MEDIUM, "VirtDisabledByBIOS", "Virtualization extensions supported but disabled by BIOS."); break; default: fwts_log_error(fw, "Virtualization extensions check failed - cannot read msr."); break; } } } #endif src/cpu/virt/virt_vmx.c000066400000000000000000000044621231470457100154540ustar00rootroot00000000000000/* * Copyright (C) 2006, Intel Corporation * Copyright (C) 2007, AMD Inc * Copyright (C) 2010-2014 Canonical * * This file was originally part of the Linux-ready Firmware Developer Kit * * This program file is free software; you can redistribute it and/or modify it * under the terms of the GNU Lesser General Public License as published by the * Free Software Foundation;version 2.1 of the License. * * This library is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License * for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this program in a file named COPYING; if not, write to the * Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301 USA */ /* * This test checks if the VT-setup is done correctly by the BIOS */ #define _GNU_SOURCE #include "fwts.h" #ifdef FWTS_ARCH_INTEL #include #include #include #include #include #include #include #include #include #include #include #include #define MSR_FEATURE_CONTROL 0x03a extern fwts_cpuinfo_x86 *fwts_virt_cpuinfo; static int cpu_has_vmx(void) { return (strstr(fwts_virt_cpuinfo->flags, "vmx") != NULL); } static int vt_locked_by_bios(void) { uint64_t msr; if (fwts_cpu_readmsr(0, MSR_FEATURE_CONTROL, &msr)) return -1; return (msr & 5) == 1; /* VT capable but locked by bios*/ } void virt_check_vmx(fwts_framework *fw) { fwts_log_info(fw, "Check VT/VMX Virtualization extensions are set up correctly."); if (!cpu_has_vmx()) fwts_skipped(fw, "Processor does not support Virtualization extensions, won't test BIOS configuration, skipping test."); else { int ret = vt_locked_by_bios(); switch (ret) { case 0: fwts_passed(fw, "Virtualization extensions supported and enabled by BIOS."); break; case 1: fwts_failed(fw, LOG_LEVEL_MEDIUM, "VirtDisabledByBIOS", "Virtualization extensions supported but disabled by BIOS."); break; default: fwts_log_error(fw, "Virtualization extensions check failed - cannot read msr."); break; } } } #endif src/dmi/000077500000000000000000000000001231470457100124225ustar00rootroot00000000000000src/dmi/dmicheck/000077500000000000000000000000001231470457100141715ustar00rootroot00000000000000src/dmi/dmicheck/dmicheck.c000066400000000000000000001603771231470457100161220ustar00rootroot00000000000000/* * Copyright (C) 2010-2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #include #include #include #include #include "fwts.h" #ifdef FWTS_ARCH_INTEL #include #include #include #include #include #include #include #define DMI_VERSION (0x0207) #define VERSION_MAJOR(v) ((v) >> 8) #define VERSION_MINOR(v) ((v) & 0xff) #define SMBIOS_END_OF_TABLE (127) #define DMI_NO_TABLE "DMINoTable" #define DMI_NO_TABLE_HEADER "DMINoTableHeader" #define DMI_BAD_TABLE_LENGTH "DMIBadTableLength" #define DMI_BAD_UUID "DMIBadUUID" #define DMI_STRUCT_COUNT "DMIStructCount" #define DMI_VALUE_OUT_OF_RANGE "DMIValueOutOfRange" #define DMI_STRING_INDEX_OUT_OF_RANGE "DMIStringIndexOutOfRange" #define DMI_ILLEGAL_MAPPED_ADDR_RANGE "DMIIllegalMappedAddrRange" #define DMI_MGMT_CTRL_HOST_TYPE "DMIMgmtCtrlHostType" #define DMI_INVALID_ENTRY_LENGTH "DMIInvalidEntryLength" #define DMI_INVALID_HARDWARE_ENTRY "DMIInvalidHardwareEntry" #define GET_UINT16(x) (uint16_t)(*(const uint16_t *)(x)) #define GET_UINT32(x) (uint32_t)(*(const uint32_t *)(x)) #define GET_UINT64(x) (uint64_t)(*(const uint64_t *)(x)) #define CHASSIS_OTHER 0x00 #define CHASSIS_DESKTOP 0x01 #define CHASSIS_WORKSTATION 0x02 #define CHASSIS_MOBILE 0x04 #define CHASSIS_SERVER 0x08 typedef struct { const char *label; const char *field; const char *value; } fwts_dmi_pattern; typedef struct { uint16_t old; uint16_t new; } fwts_dmi_version; typedef struct { const char *name; uint8_t original; uint8_t mapped; } fwts_chassis_type_map; typedef struct { uint8_t type; uint8_t offset; } fwts_dmi_used_by_kernel; /* * Table derived by scanning thousands of DMI table dumps from bug reports */ static const fwts_dmi_pattern dmi_patterns[] = { { "DMISerialNumber", "Serial Number", "0000000" }, { "DMISerialNumber", "Serial Number", "00000000" }, { "DMISerialNumber", "Serial Number", "000000000" }, { "DMISerialNumber", "Serial Number", "0000000000" }, { "DMISerialNumber", "Serial Number", "0x00000000" }, { "DMISerialNumber", "Serial Number", "0x0000000000000000" }, { "DMISerialNumber", "Serial Number", "012345678" }, { "DMISerialNumber", "Serial Number", "0123456789" }, { "DMISerialNumber", "Serial Number", "01234567890" }, { "DMISerialNumber", "Serial Number", "012345678900" }, { "DMISerialNumber", "Serial Number", "0123456789000" }, { "DMISerialNumber", "Serial Number", "System Serial Number" }, { "DMISerialNumber", "Serial Number", "MB-1234567890" }, { "DMISerialNumber", "Serial Number", "NB-1234567890" }, { "DMISerialNumber", "Serial Number", "NB-0123456789" }, { "DMISerialNumber", "Serial Number", "Base Board Serial Number" }, { "DMISerialNumber", "Serial Number", "Chassis Serial Number" }, { "DMISerialNumber", "Serial Number", "" }, { "DMISerialNumber", "Serial Number", "Empty" }, { "DMISerialNumber", "Serial Number", "[Empty]" }, { "DMISerialNumber", "Serial Number", "NA" }, { "DMISerialNumber", "Serial Number", "N/A" }, { "DMISerialNumber", "Serial Number", "None" }, { "DMISerialNumber", "Serial Number", "None1" }, { "DMISerialNumber", "Serial Number", "Not Available" }, { "DMISerialNumber", "Serial Number", "Not Specified" }, { "DMISerialNumber", "Serial Number", "NotSupport" }, { "DMISerialNumber", "Serial Number", "Not Supported by CPU" }, { "DMISerialNumber", "Serial Number", "Not Supported" }, { "DMISerialNumber", "Serial Number", "OEM Chassis Serial Number" }, { "DMISerialNumber", "Serial Number", "OEM_Define1" }, { "DMISerialNumber", "Serial Number", "OEM_Define2" }, { "DMISerialNumber", "Serial Number", "OEM_Define3" }, { "DMISerialNumber", "Serial Number", "SerNum0" }, { "DMISerialNumber", "Serial Number", "SerNum00" }, { "DMISerialNumber", "Serial Number", "SerNum01" }, { "DMISerialNumber", "Serial Number", "SerNum02" }, { "DMISerialNumber", "Serial Number", "SerNum03" }, { "DMISerialNumber", "Serial Number", "SerNum1" }, { "DMISerialNumber", "Serial Number", "SerNum2" }, { "DMISerialNumber", "Serial Number", "SerNum3" }, { "DMISerialNumber", "Serial Number", "SerNum4" }, { "DMISerialNumber", "Serial Number", "TBD by ODM" }, { "DMISerialNumber", "Serial Number", "To Be Defined By O.E.M" }, { "DMISerialNumber", "Serial Number", "To be filled by O.E.M." }, { "DMISerialNumber", "Serial Number", "To Be Filled By O.E.M." }, { "DMISerialNumber", "Serial Number", "Unknow" }, { "DMISerialNumber", "Serial Number", "Unknown" }, { "DMISerialNumber", "Serial Number", "XXXXXXXXXXXX" }, { "DMISerialNumber", "Serial Number", "XXXXXXXXXXX" }, { "DMISerialNumber", "Serial Number", "XXXXXXXXXX" }, { "DMISerialNumber", "Serial Number", "XXXXXXXXX" }, { "DMISerialNumber", "Serial Number", "XXXXXXXX" }, { "DMISerialNumber", "Serial Number", "XXXXXX" }, { "DMISerialNumber", "Serial Number", "XXXXX" }, { "DMISerialNumber", NULL, "Chassis Serial Number" }, { "DMIAssetTag", "Asset Tag", "0000000000" }, { "DMIAssetTag", "Asset Tag", "0x00000000" }, { "DMIAssetTag", "Asset Tag", "1234567890" }, { "DMIAssetTag", "Asset Tag", "123456789000" }, { "DMIAssetTag", "Asset Tag", "9876543210" }, { "DMIAssetTag", "Asset Tag", "A1_AssetTagNum0" }, { "DMIAssetTag", "Asset Tag", "A1_AssetTagNum1" }, { "DMIAssetTag", "Asset Tag", "A1_AssetTagNum2" }, { "DMIAssetTag", "Asset Tag", "A1_AssetTagNum3" }, { "DMIAssetTag", "Asset Tag", "ABCDEFGHIJKLM" }, { "DMIAssetTag", "Asset Tag", "Asset-1234567890" }, { "DMIAssetTag", "Asset Tag", "Asset Tag" }, { "DMIAssetTag", "Asset Tag", "Asset Tag:" }, { "DMIAssetTag", "Asset Tag", "AssetTagNum0" }, { "DMIAssetTag", "Asset Tag", "AssetTagNum1" }, { "DMIAssetTag", "Asset Tag", "AssetTagNum2" }, { "DMIAssetTag", "Asset Tag", "AssetTagNum3" }, { "DMIAssetTag", "Asset Tag", "AssetTagNum4" }, { "DMIAssetTag", "Asset Tag", "Asset tracking" }, { "DMIAssetTag", "Asset Tag", "ATN12345678901234567" }, { "DMIAssetTag", "Asset Tag", "Base Board Asset Tag#" }, { "DMIAssetTag", "Asset Tag", "Base Board Asset Tag" }, { "DMIAssetTag", "Asset Tag", "Chassis Asset Tag" }, { "DMIAssetTag", "Asset Tag", "" }, { "DMIAssetTag", "Asset Tag", "Fill By OEM" }, { "DMIAssetTag", "Asset Tag", "N/A" }, { "DMIAssetTag", "Asset Tag", "No Asset Information" }, { "DMIAssetTag", "Asset Tag", "No Asset Tag" }, { "DMIAssetTag", "Asset Tag", "None" }, { "DMIAssetTag", "Asset Tag", "Not Available" }, { "DMIAssetTag", "Asset Tag", "Not Specified" }, { "DMIAssetTag", "Asset Tag", "OEM_Define0" }, { "DMIAssetTag", "Asset Tag", "OEM_Define1" }, { "DMIAssetTag", "Asset Tag", "OEM_Define2" }, { "DMIAssetTag", "Asset Tag", "OEM_Define3" }, { "DMIAssetTag", "Asset Tag", "OEM_Define4" }, { "DMIAssetTag", "Asset Tag", "TBD by ODM" }, { "DMIAssetTag", "Asset Tag", "To Be Defined By O.E.M" }, { "DMIAssetTag", "Asset Tag", "To be filled by O.E.M." }, { "DMIAssetTag", "Asset Tag", "To Be Filled By O.E.M." }, { "DMIAssetTag", "Asset Tag", "Unknown" }, { "DMIAssetTag", "Asset Tag", "XXXXXXXXXXXX" }, { "DMIAssetTag", "Asset Tag", "XXXXXXXXXXX" }, { "DMIAssetTag", "Asset Tag", "XXXXXXXXXX" }, { "DMIAssetTag", "Asset Tag", "XXXXXXXXX" }, { "DMIAssetTag", "Asset Tag", "XXXXXXXX" }, { "DMIAssetTag", "Asset Tag", "XXXXXXX" }, { "DMIAssetTag", "Asset Tag", "XXXXXX" }, { "DMIChassisVendor", NULL, "Chassis Manufacture" }, { "DMIChassisVersion", NULL, "Chassis Version" }, { "DMIProductVersion", NULL, "System Version" }, { "DMIBadDefault", NULL, "To Be Defined By O.E.M" }, { "DMIBadDefault", NULL, "To be filled by O.E.M." }, { "DMIBadDefault", NULL, "To Be Filled By O.E.M." }, { NULL, NULL, NULL } }; static const char *uuid_patterns[] = { "0A0A0A0A-0A0A-0A0A-0A0A-0A0A0A0A0A0A", NULL, }; static const fwts_chassis_type_map fwts_dmi_chassis_type[] = { { "Invalid", FWTS_SMBIOS_CHASSIS_INVALID, CHASSIS_OTHER }, { "Other", FWTS_SMBIOS_CHASSIS_OTHER, CHASSIS_OTHER }, { "Unknown", FWTS_SMBIOS_CHASSIS_UNKNOWN, CHASSIS_OTHER }, { "Desktop", FWTS_SMBIOS_CHASSIS_DESKTOP, CHASSIS_DESKTOP }, { "Low Profile Desktop",FWTS_SMBIOS_CHASSIS_LOW_PROFILE_DESKTOP, CHASSIS_DESKTOP }, { "Pizza Box", FWTS_SMBIOS_CHASSIS_PIZZA_BOX, CHASSIS_DESKTOP }, { "Mini Tower", FWTS_SMBIOS_CHASSIS_MINI_TOWER, CHASSIS_DESKTOP }, { "Chassis Tower", FWTS_SMBIOS_CHASSIS_TOWER, CHASSIS_DESKTOP }, { "Portable", FWTS_SMBIOS_CHASSIS_PORTABLE, CHASSIS_MOBILE }, { "Laptop", FWTS_SMBIOS_CHASSIS_LAPTOP, CHASSIS_MOBILE }, { "Notebook", FWTS_SMBIOS_CHASSIS_NOTEBOOK, CHASSIS_MOBILE }, { "Handheld", FWTS_SMBIOS_CHASSIS_HANDHELD, CHASSIS_MOBILE }, { "Docking Station", FWTS_SMBIOS_CHASSIS_DOCKING_STATION, CHASSIS_DESKTOP }, { "All In One", FWTS_SMBIOS_CHASSIS_ALL_IN_ONE, CHASSIS_DESKTOP }, { "Sub Notebook", FWTS_SMBIOS_CHASSIS_SUB_NOTEBOOK, CHASSIS_MOBILE }, { "Space Saving", FWTS_SMBIOS_CHASSIS_SPACE_SAVING, CHASSIS_DESKTOP }, { "Lunch Box", FWTS_SMBIOS_CHASSIS_LUNCH_BOX, CHASSIS_DESKTOP | CHASSIS_MOBILE}, { "Server Chassis", FWTS_SMBIOS_CHASSIS_MAIN_SERVER_CHASSIS, CHASSIS_SERVER }, { "Expansion Chassis", FWTS_SMBIOS_CHASSIS_EXPANISON_CHASSIS, CHASSIS_OTHER }, { "Sub Chassis", FWTS_SMBIOS_CHASSIS_SUB_CHASSIS, CHASSIS_OTHER }, { "Bus Expansion Chassis", FWTS_SMBIOS_CHASSIS_BUS_EXPANSION_CHASSIS, CHASSIS_OTHER }, { "Peripheral Chassis", FWTS_SMBIOS_CHASSIS_PERIPHERAL_CHASSIS, CHASSIS_OTHER }, { "Raid Chassis", FWTS_SMBIOS_CHASSIS_RAID_CHASSIS, CHASSIS_OTHER }, { "Rack Mount Chassis", FWTS_SMBIOS_CHASSIS_RACK_MOUNT_CHASSIS, CHASSIS_OTHER }, { "Sealed Case PC", FWTS_SMBIOS_CHASSIS_SEALED_CASE_PC, CHASSIS_DESKTOP }, { "Multi System Chassis",FWTS_SMBIOS_CHASSIS_MULTI_SYSTEM_CHASSIS, CHASSIS_OTHER }, { "Compact PCI", FWTS_SMBIOS_CHASSIS_COMPACT_PCI, CHASSIS_OTHER }, { "Advanced TCA", FWTS_SMBIOS_CHASSIS_ADVANCED_TCA, CHASSIS_OTHER }, { "Blade", FWTS_SMBIOS_CHASSIS_BLADE, CHASSIS_SERVER }, { "Enclosure", FWTS_SMBIOS_CHASSIS_BLASE_ENCLOSURE, CHASSIS_SERVER } }; static const fwts_chassis_type_map fwts_acpi_pm_profile_type[] = { { "Unspecified", FWTS_FACP_UNSPECIFIED, CHASSIS_OTHER }, { "Desktop", FWTS_FACP_DESKTOP, CHASSIS_DESKTOP }, { "Mobile", FWTS_FACP_MOBILE, CHASSIS_MOBILE }, { "Workstation", FWTS_FACP_WORKSTATION, CHASSIS_WORKSTATION }, { "Enterprise Server", FWTS_FACP_ENTERPRISE_SERVER, CHASSIS_SERVER }, { "SOHO Server", FWTS_FACP_SOHO_SERVER, CHASSIS_SERVER | CHASSIS_DESKTOP }, { "Appliance PC", FWTS_FACP_APPLIANCE_PC, CHASSIS_DESKTOP }, { "Performance Server", FWTS_FACP_PERFORMANCE_SERVER, CHASSIS_SERVER }, { "Tablet", FWTS_FACP_TABLET, CHASSIS_MOBILE } }; /* Remapping table from buggy version numbers to correct values */ static const fwts_dmi_version dmi_versions[] = { { 0x021f, 0x0203 }, { 0x0221, 0x0203 }, { 0x0233, 0x0206 }, { 0, 0 } }; #define FIELD_ANY 0xff #define TYPE_EOD 0xff /* * DMI decoded fields used by the kernel, i.e. fields * we care that work, * see drivers/firmware/dmi_scan.c, dmi_decode() */ static fwts_dmi_used_by_kernel dmi_used_by_kernel_table[] = { /* Type 0 BIOS Information fields */ { 0, 4 }, { 0, 5 }, { 0, 8 }, /* Type 1, System Information */ { 1, 4 }, { 1, 5 }, { 1, 6 }, { 1, 7 }, { 1, 8 }, /* Type 2, Base Board Information */ { 2, 4 }, { 2, 5 }, { 2, 6 }, { 2, 7 }, { 2, 8 }, /* Type 3, Chassis Information */ { 3, 4 }, { 3, 5 }, { 3, 6 }, { 3, 7 }, { 3, 8 }, /* Type 10, Onboard Devices Information */ { 10, FIELD_ANY }, /* Type 11, OEM Strings */ { 11, FIELD_ANY }, /* Type 38, IPMI Device Information */ { 38, FIELD_ANY }, /* Type 41, Onboard Devices Extended Information */ { 41, FIELD_ANY }, /* End */ { TYPE_EOD, 0xff }, }; static void dmi_dump_entry(fwts_framework *fw, fwts_smbios_entry *entry, fwts_smbios_type type) { if (type == FWTS_SMBIOS) { fwts_log_info_verbatum(fw, "SMBIOS Entry Point Structure:"); fwts_log_info_verbatum(fw, " Anchor String : %4.4s", entry->signature); fwts_log_info_verbatum(fw, " Checksum : 0x%2.2x", entry->checksum); fwts_log_info_verbatum(fw, " Entry Point Length : 0x%2.2x", entry->length); fwts_log_info_verbatum(fw, " Major Version : 0x%2.2x", entry->major_version); fwts_log_info_verbatum(fw, " Minor Version : 0x%2.2x", entry->minor_version); fwts_log_info_verbatum(fw, " Maximum Struct Size : 0x%2.2x", entry->max_struct_size); fwts_log_info_verbatum(fw, " Entry Point Revision : 0x%2.2x", entry->revision); fwts_log_info_verbatum(fw, " Formatted Area : 0x%2.2x 0x%2.2x 0x%2.2x 0x%2.2x 0x%2.2x", entry->formatted_area[0], entry->formatted_area[1], entry->formatted_area[2], entry->formatted_area[3], entry->formatted_area[4]); } if (type == FWTS_SMBIOS_DMI_LEGACY) fwts_log_info_verbatum(fw, "Legacy DMI Entry Point Structure:"); /* Common to SMBIOS and SMBIOS_DMI_LEGACY */ fwts_log_info_verbatum(fw, " Intermediate Anchor : %5.5s", (char *)entry->anchor_string); fwts_log_info_verbatum(fw, " Intermediate Checksum : 0x%2.2x", entry->intermediate_checksum); fwts_log_info_verbatum(fw, " Structure Table Length : 0x%4.4x", entry->struct_table_length); fwts_log_info_verbatum(fw, " Structure Table Address: 0x%8.8x", entry->struct_table_address); fwts_log_info_verbatum(fw, " # of SMBIOS Structures : 0x%4.4x", entry->number_smbios_structures); fwts_log_info_verbatum(fw, " SBMIOS BCD Revision : %2.2x", entry->smbios_bcd_revision); if (entry->smbios_bcd_revision == 0) fwts_log_info_verbatum(fw, " BCD Revision 00 indicates compliance with specification stated in Major/Minor Version."); } static int dmi_sane(fwts_framework *fw, fwts_smbios_entry *entry) { uint8_t *table, *ptr; uint8_t dmi_entry_length; uint8_t dmi_entry_type = 0; uint16_t i = 0; uint16_t table_length = entry->struct_table_length; int ret = FWTS_OK; ptr = table = fwts_mmap((off_t)entry->struct_table_address, (size_t)table_length); if (table == FWTS_MAP_FAILED) { fwts_failed(fw, LOG_LEVEL_MEDIUM, "SMBIOSTableAddressNotMapped", "Cannot mmap SMBIOS tables from " "%8.8" PRIx32 "..%8.8" PRIx32 ".", entry->struct_table_address, entry->struct_table_address + table_length); return FWTS_ERROR; } for (i = 0; i < entry->number_smbios_structures; i++) { if (ptr > table + table_length) { fwts_failed(fw, LOG_LEVEL_MEDIUM, "SMBIOSTableLengthTooSmall", "The size indicated by the SMBIOS table length is " "smaller than the DMI data."); ret = FWTS_ERROR; break; } dmi_entry_type = ptr[0]; dmi_entry_length = ptr[1]; if (dmi_entry_length < 4) { fwts_failed(fw, LOG_LEVEL_MEDIUM, "SMBIOSIllegalTableEntry", "The size of a DMI entry %" PRIu16 " is illegal, " "DMI data is either wrong or the SMBIOS Table " "Pointer is pointing to the wrong memory region.", i); ret = FWTS_ERROR; break; } ptr += dmi_entry_length; /* Scan for end of DMI entry, must be 2 zero bytes */ while (((ptr - table + 1) < table_length) && ((ptr[0] != 0) || (ptr[1] != 0))) ptr++; /* Skip over the two zero bytes */ ptr += 2; } /* We found DMI end of table, are number of entries correct? */ if ((dmi_entry_type == 127) && (i != entry->number_smbios_structures)) { fwts_failed(fw, LOG_LEVEL_MEDIUM, "SMBIOSNumberOfStructures", "The end of DMI table marker structure was found " "but only %d DMI structures were found. The SMBIOS " "entry table reported that there were %" PRIu16 " DMI structures in the DMI table.", i, entry->number_smbios_structures); /* And table length can't be correct either */ ret = FWTS_ERROR; } (void)fwts_munmap(table, (size_t)entry->struct_table_length); return ret; } static int dmicheck_test1(fwts_framework *fw) { void *addr = 0; fwts_smbios_entry entry; fwts_smbios_type type; uint16_t version; uint8_t checksum; static char warning[] = "This field is not checked by the kernel, and so will not affect the system, " "however it should be fixed to conform to the latest version of the " "System Management BIOS (SMBIOS) Reference Specification. "; fwts_log_info(fw, "This test tries to find and sanity check the SMBIOS " "data structures."); if ((addr = fwts_smbios_find_entry(fw, &entry, &type, &version)) == NULL) { fwts_failed(fw, LOG_LEVEL_MEDIUM, "SMBIOSNoEntryPoint", "Could not find SMBIOS Table Entry Point."); return FWTS_OK; } fwts_passed(fw, "Found SMBIOS Table Entry Point at %p", addr); dmi_dump_entry(fw, &entry, type); fwts_log_nl(fw); if (type == FWTS_SMBIOS) { checksum = fwts_checksum((uint8_t *)&entry, sizeof(fwts_smbios_entry)); if (checksum != 0) fwts_failed(fw, LOG_LEVEL_HIGH, "SMBIOSBadChecksum", "SMBIOS Table Entry Point Checksum is 0x%2.2x, should be 0x%2.2x", entry.checksum, (uint8_t)(entry.checksum - checksum)); else fwts_passed(fw, "SMBIOS Table Entry Point Checksum is valid."); if (entry.length != 0x1f) { fwts_failed(fw, LOG_LEVEL_LOW, "SMBIOSBadEntryLength", "SMBIOS Table Entry Point Length is 0x%2.2x, should be 0x1f", entry.length); fwts_advice(fw, "%s Note that version 2.1 of the specification incorrectly stated that the " "Entry Point Length should be 0x1e when it should be 0x1f.", warning); } else fwts_passed(fw, "SMBIOS Table Entry Point Length is valid."); } if (memcmp(entry.anchor_string, "_DMI_", 5) != 0) { fwts_failed(fw, LOG_LEVEL_HIGH, "SMBIOSBadIntermediateAnchor", "SMBIOS Table Entry Intermediate Anchor String was '%5.5s' and should be '_DMI_'.", entry.anchor_string); fwts_advice(fw, "%s", warning); } else fwts_passed(fw, "SMBIOS Table Entry Intermediate Anchor String _DMI_ is valid."); /* Intermediate checksum for legacy DMI */ checksum = fwts_checksum(((uint8_t *)&entry)+16, 15); if (checksum != 0) fwts_failed(fw, LOG_LEVEL_HIGH, "SMBIOSBadChecksum", "SMBIOS Table Entry Point Intermediate Checksum is 0x%2.2x, should be 0x%2.2x", entry.intermediate_checksum, (uint8_t)(entry.intermediate_checksum - checksum)); else fwts_passed(fw, "SMBIOS Table Entry Point Intermediate Checksum is valid."); if ((entry.struct_table_length > 0) && (entry.struct_table_address == 0)) { fwts_failed(fw, LOG_LEVEL_HIGH, "SMBIOSBadTableAddress", "SMBIOS Table Entry Structure Table Address is NULL and should be defined."); fwts_advice(fw, "The address of the SMBIOS Structure Tables must be defined if the " "length of these tables is defined."); } else { /* * Now does the DMI table look sane? If not, * the SMBIOS Structure Table could be bad */ if (dmi_sane(fw, &entry) == FWTS_OK) fwts_passed(fw, "SMBIOS Table Entry Structure Table Address and Length looks valid."); } return FWTS_OK; } static bool dmi_used_by_kernel(uint8_t type, uint8_t offset) { int i; for (i = 0; dmi_used_by_kernel_table[i].type != TYPE_EOD; i++) { if (dmi_used_by_kernel_table[i].type == type) if ((dmi_used_by_kernel_table[i].offset == FIELD_ANY) || (dmi_used_by_kernel_table[i].offset == offset)) return true; } return false; } static uint16_t dmi_remap_version(fwts_framework *fw, uint16_t old) { int i; for (i = 0; dmi_versions[i].old != 0; i++) { if (old == dmi_versions[i].old) { uint16_t new = dmi_versions[i].new; fwts_warning(fw, "Detected a buggy DMI version number " "%" PRIu16 ".%" PRIu16 "remapping to " "%" PRIu16 ".%" PRIu16, VERSION_MAJOR(old), VERSION_MINOR(old), VERSION_MAJOR(new), VERSION_MINOR(new)); return new; } } /* All OK, return original */ return old; } static void dmi_out_of_range_advice(fwts_framework *fw, uint8_t type, uint8_t offset) { if (dmi_used_by_kernel(type, offset)) fwts_advice(fw, "A value that is out of range is incorrect and not conforming to " "the SMBIOS specification. The Linux kernel extracts and uses " "this particular data item, so it is recommended that this SMBIOS " "configuration is corrected even if the impact on the system " "is most probably not critical."); else fwts_advice(fw, "A value that is out of range is incorrect and not conforming to " "the SMBIOS specification. This field is not currently used by " "the Linux kernel, so this firmware bug shouldn't cause any " "problems."); } static void dmi_min_max_uint8_check(fwts_framework *fw, const char *table, uint32_t addr, const char *field, const fwts_dmi_header *hdr, uint8_t offset, uint8_t min, uint8_t max) { uint8_t val = hdr->data[offset]; if ((val < min) || (val > max)) { fwts_failed(fw, LOG_LEVEL_HIGH, DMI_VALUE_OUT_OF_RANGE, "Out of range value 0x%2.2" PRIx8 " (range allowed 0x%2.2" PRIx8 "..0x%2.2" PRIx8 ") " "while accessing entry '%s' @ 0x%8.8" PRIx32 ", field '%s', offset 0x%2.2" PRIx8, val, min, max, table, addr, field, offset); dmi_out_of_range_advice(fw, hdr->type, offset); } } static void dmi_min_max_mask_uint8_check(fwts_framework *fw, const char *table, uint32_t addr, const char *field, const fwts_dmi_header *hdr, uint8_t offset, uint8_t min, uint8_t max, uint8_t shift, uint8_t mask) { uint8_t val = (hdr->data[offset] >> shift) & mask; if ((val < min) || (val > max)) { fwts_failed(fw, LOG_LEVEL_HIGH, DMI_VALUE_OUT_OF_RANGE, "Out of range value 0x%2.2" PRIx8 " (range allowed 0x%2.2" PRIx8 "..0x%2.2" PRIx8 ") " "while accessing entry '%s' @ 0x%8.8" PRIx32 ", field '%s', offset 0x%2.2" PRIx8, val, min, max, table, addr, field, offset); dmi_out_of_range_advice(fw, hdr->type, offset); } } static void dmi_str_check_index(fwts_framework *fw, const char *table, uint32_t addr, const char *field, const fwts_dmi_header *hdr, uint8_t offset, uint8_t index) { char *data = (char *)hdr->data; uint8_t i = index; bool used_by_kernel = dmi_used_by_kernel(hdr->type, offset); if (i > 0) { int j; int failed = -1; data += hdr->length; while (i > 1 && *data) { data += strlen(data) + 1; i--; } /* Sanity checks */ if (*data == '\0') { int level = used_by_kernel ? LOG_LEVEL_HIGH : LOG_LEVEL_LOW; /* This entry is clearly broken so flag it as a corrupt entry */ fwts_failed(fw, level, DMI_STRING_INDEX_OUT_OF_RANGE, "Out of range string index 0x%2.2" PRIx8 " while accessing entry '%s' " "@ 0x%8.8" PRIx32 ", field '%s', offset 0x%2.2" PRIx8, index, table, addr, field, offset); if (used_by_kernel) fwts_advice(fw, "DMI strings are stored in a manner that uses a special " "index to fetch the Nth string from the data. For this " "particular DMI string the index given is not in range " "which means this particular entry is broken. The Linux " "kernel uses this string - hence this string should be " "fixed to ensure sane data is passed to the kernel. " "Note that this probably won't cause any critical system " "errors."); else fwts_advice(fw, "DMI strings are stored in a manner that uses a special " "index to fetch the Nth string from the data. For this " "particular DMI string the index given is not in range " "which means this particular entry is broken. The Linux " "kernel does not use this string, so this error will not " "cause any system errors."); return; } /* Scan for known BIOS defaults that vendors forget to set */ for (j=0; dmi_patterns[j].label != NULL; j++) { if (dmi_patterns[j].field && (strcmp(dmi_patterns[j].field, field) == 0) && (strcmp(dmi_patterns[j].value, data) == 0)) { failed = j; break; } else if (strcmp(dmi_patterns[j].value, data) == 0) { failed = j; break; } } if (failed != -1) { int level = used_by_kernel ? LOG_LEVEL_MEDIUM : LOG_LEVEL_LOW; fwts_failed(fw, level, dmi_patterns[j].label, "String index 0x%2.2" PRIx8 " in table entry '%s' @ 0x%8.8" PRIx32 ", field '%s', offset 0x%2.2" PRIx8 " has a default value '%s' and probably has " "not been updated by the BIOS vendor.", index, table, addr, field, offset, data); if (used_by_kernel) { fwts_advice(fw, "The DMI table contains data which is clearly been " "left in a default setting and not been configured " "for this machine. " "Somebody has probably forgotten to define this " "field and it basically means this field is effectively " "useless. Note that the kernel uses this field so " "it probably should be corrected to ensure the kernel " "is using sane values."); } else { /* This string is broken, but we don't care about it too much */ fwts_advice(fw, "The DMI table contains data which is clearly been " "left in a default setting and not been configured " "for this machine. " "Somebody has probably forgotten to define this " "field and it basically means this field is effectively " "useless, however the kernel does not use this data " "so the issue is fairly low."); } } } } static inline void dmi_str_check(fwts_framework *fw, const char *table, uint32_t addr, const char *field, const fwts_dmi_header *hdr, uint8_t offset) { dmi_str_check_index(fw, table, addr, field, hdr, offset, hdr->data[offset]); } static void dmi_uuid_check(fwts_framework *fw, const char *table, uint32_t addr, const char *field, const fwts_dmi_header *hdr, uint8_t offset) { char guid_str[37]; int i; fwts_guid_buf_to_str(hdr->data + offset, guid_str, sizeof(guid_str)); for (i = 0; uuid_patterns[i] != NULL; i++) { if (strcmp(guid_str, uuid_patterns[i]) == 0) { fwts_failed(fw, LOG_LEVEL_LOW, DMI_BAD_UUID, "UUID in table entry '%s' @ 0x%8.8" PRIx32 " field '%s', offset 0x%2.2" PRIx8 " has a default value '%s' and probably has " "not been updated by the BIOS vendor.", table, addr, field, offset, guid_str); fwts_advice(fw, "The DMI table contains a UUID which is clearly been " "left in a default setting and not been configured " "for this machine. While this is not critical it does " "mean that somebody has probably forgotten to define this " "field and it basically means this field is effectively " "useless."); } } } static void dmicheck_entry(fwts_framework *fw, uint32_t addr, const fwts_dmi_header *hdr) { uint8_t *ptr; uint8_t count; uint8_t val; uint8_t *data = hdr->data; char tmp[64]; char *table; int i; int len; uint32_t failed_count = fw->minor_tests.failed; int battery_count; int ret; int both_ok; fwts_acpi_table_info *acpi_table; fwts_acpi_table_fadt *fadt; bool advice_given = false; switch (hdr->type) { case 0: /* 7.1 */ table = "BIOS Information (Type 0)"; if (hdr->length < 0x12) break; dmi_str_check(fw, table, addr, "Vendor", hdr, 0x4); dmi_str_check(fw, table, addr, "BIOS Version", hdr, 0x5); dmi_str_check(fw, table, addr, "Release Date", hdr, 0x8); break; case 1: /* 7.2 */ table = "System Information (Type 1)"; if (hdr->length < 0x08) break; dmi_str_check(fw, table, addr, "Manufacturer", hdr, 0x4); dmi_str_check(fw, table, addr, "Product Name", hdr, 0x5); dmi_str_check(fw, table, addr, "Version", hdr, 0x6); dmi_str_check(fw, table, addr, "Serial Number", hdr, 0x7); if (hdr->length < 0x19) break; dmi_uuid_check(fw, table, addr, "UUID", hdr, 0x8); dmi_min_max_uint8_check(fw, table, addr, "Wakeup Type", hdr, 0x18, 0x0, 0x08); if (hdr->length < 0x1b) break; dmi_str_check(fw, table, addr, "SKU Number", hdr, 0x19); dmi_str_check(fw, table, addr, "Family", hdr, 0x1a); break; case 2: /* 7.3 */ table = "Base Board Information (Type 2)"; if (hdr->length < 0x08) break; dmi_str_check(fw, table, addr, "Manufacturer", hdr, 0x4); dmi_str_check(fw, table, addr, "Product", hdr, 0x5); dmi_str_check(fw, table, addr, "Version", hdr, 0x6); dmi_str_check(fw, table, addr, "Serial Number", hdr, 0x7); if (hdr->length < 0x09) break; dmi_str_check(fw, table, addr, "Asset Tag", hdr, 0x8); if (hdr->length < 0x0f) break; dmi_str_check(fw, table, addr, "Location In Chassis", hdr, 0xa); dmi_min_max_uint8_check(fw, table, addr, "Type", hdr, 0xd, 0x1, 0xd); break; case 3: /* 7.4 */ table = "Chassis Information (Type 3)"; if (hdr->length < 0x09) break; dmi_str_check(fw, table, addr, "Manufacturer", hdr, 0x4); dmi_min_max_mask_uint8_check(fw, table, addr, "Chassis Type", hdr, 0x5, 0x1, 0x1d, 0x0, 0x7f); if (fwts_acpi_find_table(fw, "FACP", 0, &acpi_table) != FWTS_OK) break; if (acpi_table == NULL) break; fadt = (fwts_acpi_table_fadt *)acpi_table->data; if (fadt->preferred_pm_profile >= (sizeof(fwts_acpi_pm_profile_type) / sizeof(fwts_chassis_type_map))) { fwts_failed(fw, LOG_LEVEL_HIGH, DMI_INVALID_HARDWARE_ENTRY, "Incorrect Chassis Type " "ACPI FACP reports 0x%" PRIx8, fadt->preferred_pm_profile); break; } if (data[5] >= (sizeof(fwts_dmi_chassis_type) / sizeof(fwts_chassis_type_map))) { fwts_failed(fw, LOG_LEVEL_HIGH, DMI_INVALID_HARDWARE_ENTRY, "Incorrect Chassis Type " "SMBIOS Type 3 reports 0x%" PRIx8, data[5]); fwts_advice(fw, "The Chassis Type in the ACPI FADT is out of range " "and hence we cannot identify the preferred power " "management profile for this machine."); break; } /* * LP: #1021674 * We should only check profile and chassis types when we know for sure * that we can compare valid types togther. So it is only valid to do * a check if both aren't CHASSIS_OTHER types */ both_ok = (fwts_acpi_pm_profile_type[fadt->preferred_pm_profile].mapped != CHASSIS_OTHER) & (fwts_dmi_chassis_type[data[5]].mapped != CHASSIS_OTHER); if (both_ok && !(fwts_acpi_pm_profile_type[fadt->preferred_pm_profile].mapped & fwts_dmi_chassis_type[data[5]].mapped)) { fwts_failed(fw, LOG_LEVEL_HIGH, DMI_INVALID_HARDWARE_ENTRY, "Unmatched Chassis Type: " "SMBIOS Type 3 reports 0x%" PRIx8 " '%s' " "ACPI FACP reports 0x%" PRIx8 " '%s'", data[5], fwts_dmi_chassis_type[data[5]].name, fadt->preferred_pm_profile, fwts_acpi_pm_profile_type[fadt->preferred_pm_profile].name); /* * Make it a bit more wordy to explain the ramifications */ fwts_advice(fw, "The SMBIOS System Enclosure/Chassis type is defined as " "0x%" PRIx8 " '%s' where as the ACPI FACP reports the preferred " "power management profile is 0x%" PRIx8 " '%s' so we possibly " "have conflicting definitions of the machine's PM profile " "for the type of machine. " "See Table 16 of section 4.5.1 of the SMBIOS specification " "and Table 5-34 of section 5.2.9 of the ACPI specification " "for more details. " "This kind of mismatch may lead to incorrect power " "management handling for the type of workload expected " "for this hardware.", data[5], fwts_dmi_chassis_type[data[5]].name, fadt->preferred_pm_profile, fwts_acpi_pm_profile_type[fadt->preferred_pm_profile].name); advice_given = true; } dmi_min_max_mask_uint8_check(fw, table, addr, "Chassis Lock", hdr, 0x5, 0x0, 0x1, 0x7, 0x1); dmi_str_check(fw, table, addr, "Version", hdr, 0x6); dmi_str_check(fw, table, addr, "Serial Number", hdr, 0x7); dmi_str_check(fw, table, addr, "Asset Tag", hdr, 0x8); dmi_min_max_uint8_check(fw, table, addr, "Boot-up State", hdr, 0x9, 0x1, 0x6); dmi_min_max_uint8_check(fw, table, addr, "Power Supply State", hdr, 0xa, 0x1, 0x6); dmi_min_max_uint8_check(fw, table, addr, "Thermal State", hdr, 0xb, 0x1, 0x6); dmi_min_max_uint8_check(fw, table, addr, "Security Status", hdr, 0xc, 0x1, 0x5); if (hdr->length < 0x15 + data[0x13] * data[0x14]) break; ptr = data + 0x15; len = data[0x14]; if (len >= 0x3) { for (i = 0; i < data[0x13]; i++) { val = ptr[i * len] & 0x7f; if (ptr[i * len] & 0x80) { if (val > 0x42) fwts_failed(fw, LOG_LEVEL_HIGH, DMI_VALUE_OUT_OF_RANGE, "Out of range value 0x%2.2" PRIx8 " (range allowed 0x00..0x42) " "while accessing entry '%s' @ " "0x%8.8" PRIx32 ", field " "'SMBIOS Structure Type %d', " "offset 0x%2.2x", val, table, addr, i, 0x15 + (i*len)); } else { if ((val < 0x1) || (val > 0xd)) { fwts_failed(fw, LOG_LEVEL_HIGH, DMI_VALUE_OUT_OF_RANGE, "Out of range value 0x%2.2" PRIx8 " (range allowed 0x00..0x42) " "while accessing entry '%s' @ " "0x%8.8" PRIx32 ", field " "'Base Board Type %d', offset 0x%2.2x", val, table, addr, i, 0x15 + (i*len)); } } } } if (hdr->length < 0x16 + data[0x13] * data[0x14]) break; dmi_str_check(fw, table, addr, "SKU Number", hdr, 0x15 + data[0x13] * data[0x14]); break; case 4: /* 7.5 */ table = "Processor Information (Type 4)"; if (hdr->length < 0x1a) break; dmi_str_check(fw, table, addr, "Socket Designation", hdr, 0x4); dmi_min_max_uint8_check(fw, table, addr, "Processor Type", hdr, 0x5, 0x1, 0x6); dmi_str_check(fw, table, addr, "Processor Manufacturer", hdr, 0x7); dmi_str_check(fw, table, addr, "Processor Version", hdr, 0x10); dmi_min_max_uint8_check(fw, table, addr, "Upgrade", hdr, 0x19, 0x1, 0x2c); if (hdr->length < 0x23) break; dmi_str_check(fw, table, addr, "Serial Number", hdr, 0x20); dmi_str_check(fw, table, addr, "Asset Tag", hdr, 0x21); dmi_str_check(fw, table, addr, "Part Number", hdr, 0x22); break; case 5: /* 7.6 */ table = "Memory Controller Information (Type 5)"; if (hdr->length < 0x0f) break; dmi_min_max_uint8_check(fw, table, addr, "Error Detecting Method", hdr, 0x4, 0x1, 0x8); dmi_min_max_uint8_check(fw, table, addr, "Supported Interleave", hdr, 0x6, 0x1, 0x7); dmi_min_max_uint8_check(fw, table, addr, "Current Interleave", hdr, 0x7, 0x1, 0x7); break; case 6: /* 7.7 */ table = "Memory Module Information (Type 6)"; if (hdr->length < 0x0c) break; dmi_str_check(fw, table, addr, "Socket Designation", hdr, 0x4); break; case 7: /* 7.8 */ table = "Cache Information (Type 7)"; if (hdr->length < 0x0f) break; dmi_str_check(fw, table, addr, "Socket Designation", hdr, 0x4); if (((GET_UINT16(data + 0x05) >> 5) & 0x0003) == 0x2) fwts_failed(fw, LOG_LEVEL_HIGH, DMI_VALUE_OUT_OF_RANGE, "Out of range value %x4.4" PRIx16 " " "bits 5..6 set to illegal value 0x2, only allowed" "0x0, 0x1, 0x3 while accessing entry '%s' @ " "0x%8.8" PRIx32 ", field '%s', offset 0x%2.2x", GET_UINT16(data + 0x05), table, addr, "Cache Location", 0x5); if (hdr->length < 0x13) break; dmi_min_max_uint8_check(fw, table, addr, "Error Correction Type", hdr, 0x10, 0x1, 0x6); dmi_min_max_uint8_check(fw, table, addr, "System Cache Type", hdr, 0x11, 0x1, 0x5); dmi_min_max_uint8_check(fw, table, addr, "Associativity", hdr, 0x12, 0x1, 0xe); break; case 8: /* 7.9 */ table = "Port Connector Information (Type 8)"; if (hdr->length < 0x09) break; dmi_str_check(fw, table, addr, "Internal Reference Designator", hdr, 0x4); if (!((data[0x5] <= 0x22) || (data[0x5] == 0xff) || ((data[0x5] >= 0xa0) && (data[0x5] <= 0xa4)))) fwts_failed(fw, LOG_LEVEL_HIGH, DMI_VALUE_OUT_OF_RANGE, "Out of range value 0x%2.2" PRIx8 " " "(range allowed 0x00..0x22, 0xa0..0xa4, 0xff) " "while accessing entry '%s' @ " "0x%8.8" PRIx32 ", field '%s', offset 0x%2.2x", data[0x5], table, addr, "Internal Connector Type", 0x5); dmi_str_check(fw, table, addr, "External Reference Designator", hdr, 0x6); if (!((data[0x7] <= 0x22) || (data[0x7] == 0xff) || ((data[0x7] >= 0xa0) && (data[0x7] <= 0xa4)))) fwts_failed(fw, LOG_LEVEL_HIGH, DMI_VALUE_OUT_OF_RANGE, "Out of range value 0x%2.2" PRIx8 " " "(range allowed 0x00..0x22, 0xa0..0xa4, 0xff) " "while accessing entry '%s' @ " "0x%8.8" PRIx32 ", field '%s', offset 0x%2.2x", data[0x7], table, addr, "Internal Connector Type", 0x7); if (!((data[0x8] <= 0x21) || (data[0x8] == 0xff) || ((data[0x8] >= 0xa0) && (data[0x8] <= 0xa1)))) fwts_failed(fw, LOG_LEVEL_HIGH, DMI_VALUE_OUT_OF_RANGE, "Out of range value 0x%2.2" PRIx8 " " "(range allowed 0x00..0x21, 0xa0..0xa1, 0xff) " "while accessing entry '%s' @ 0x%8.8" PRIx32 ", " "field '%s', offset 0x%2.2x", data[0x8], table, addr, "Port Type", 0x8); break; case 9: /* 7.10 */ table = "System Slot Information (Type 9)"; if (hdr->length < 0x0c) break; dmi_str_check(fw, table, addr, "Slot Designation", hdr, 0x4); if (!(((data[0x5] >= 0x01) && (data[0x5] <= 0x13)) || ((data[0x5] >= 0xa0) && (data[0x5] <= 0xb6)))) fwts_failed(fw, LOG_LEVEL_HIGH, DMI_VALUE_OUT_OF_RANGE, "Out of range value 0x%2.2x" PRIx8 " " "(range allowed 0x01..0x08, 0xa0..0xa2) " "while accessing entry '%s' @ 0x%8.8" PRIx32 ", " "field '%s', offset 0x%2.2x", data[0x5], table, addr, "Slot Type", 0x5); dmi_min_max_uint8_check(fw, table, addr, "Slot Data Bus Width", hdr, 0x6, 0x1, 0xe); dmi_min_max_uint8_check(fw, table, addr, "Current Usage", hdr, 0x7, 0x1, 0x4); dmi_min_max_uint8_check(fw, table, addr, "Slot Length", hdr, 0x8, 0x1, 0x4); break; case 10: /* 7.11 */ table = "On Board Devices (Type 10)"; count = (hdr->length - 4) / 2; for (i = 0; i < count; i++) { snprintf(tmp, sizeof(tmp), "Type (Device #%d)", i); dmi_min_max_mask_uint8_check(fw, table, addr, tmp, hdr, 4 + (2 * i), 0x1, 0xa, 0x0, 0x7f); snprintf(tmp, sizeof(tmp), "Description (Device #%d)", i); dmi_str_check(fw, table, addr, tmp, hdr, 5 + (2 * i)); } break; case 11: /* 7.12 */ table = "OEM Strings (Type 11)"; if (hdr->length < 0x5) break; for (i = 1; i <= hdr->data[4]; i++) { snprintf(tmp, sizeof(tmp), "String %d", i); dmi_str_check_index(fw, table, addr, tmp, hdr, 0x4, i); } break; case 12: /* 7.13 */ table = "System Configuration Options (Type 12)"; if (hdr->length < 0x5) break; for (i = 1; i <= hdr->data[4]; i++) { snprintf(tmp, sizeof(tmp), "Option %d", i); dmi_str_check_index(fw, table, addr, tmp, hdr, 0x4, i); } break; case 13: /* 7.14 */ table = "BIOS Language Information (Type 13)"; if (hdr->length < 0x16) break; for (i = 1; i <= hdr->data[4]; i++) { snprintf(tmp, sizeof(tmp), "BIOS Language String %d", i); dmi_str_check_index(fw, table, addr, tmp, hdr, 0x4, i); } dmi_str_check(fw, table, addr, "Currently Installed Language", hdr, 0x15); break; case 14: /* 7.15 */ table = "Group Associations (Type 14)"; if (hdr->length < 0x05) break; dmi_str_check(fw, table, addr, "Name", hdr, 0x4); break; case 15: /* 7.16 */ table = "System Event Log (Type 15)"; if (hdr->length < 0x14) break; val = hdr->data[0x0a]; if (!((val <= 0x04) || (val >= 0x80))) { fwts_failed(fw, LOG_LEVEL_HIGH, DMI_VALUE_OUT_OF_RANGE, "Out of range value 0x%2.2" PRIx8 " " "(range allowed 0x00..0x01, " "0x80..0xff) while accessing entry '%s' @ " "0x%8.8" PRIx32 ", field '%s', offset 0x%2.2x", val, table, addr, "Access Method", 0x0a); } if (hdr->length < 0x17) break; val = hdr->data[0x14]; if (!((val <= 0x01) || (val >= 0x80))) { fwts_failed(fw, LOG_LEVEL_HIGH, DMI_VALUE_OUT_OF_RANGE, "Out of range value 0x%2.2" PRIx8 " " "(range allowed 0x00..0x01, " "0x80..0xff) while accessing entry '%s' @ " "0x%8.8" PRIx32 ", field '%s', offset 0x%2.2x", val, table, addr, "Log Header Format", 0x14); } if (hdr->length < 0x17 + data[0x15] * data[0x16]) break; if (data[0x16] >= 0x02) { uint8_t *ptr = data + 0x17; int i; for (i = 0; i < data[0x15]; i++) { int j = data[0x16] * i; val = ptr[j]; if (!(((val >= 0x01) && (val <= 0x0e)) || ((val >= 0x10) && (val <= 0x17)) || (val >= 0x80))) { fwts_failed(fw, LOG_LEVEL_HIGH, DMI_VALUE_OUT_OF_RANGE, "Out of range value 0x%2.2" PRIx8 " " "(range allowed 0x01..0x0e, 0x10..0x17, " "0x80..0xff) while accessing entry '%s' @ " "0x%8.8" PRIx32 ", field '%s', item %d", val, table, addr, "Log Descriptor Type", i); } val = ptr[j + 1]; if ((val > 0x06) && (val < 0x80)) { fwts_failed(fw, LOG_LEVEL_HIGH, DMI_VALUE_OUT_OF_RANGE, "Out of range value 0x%2.2" PRIx8 " " "(range allowed 0x00..0x06, 0x80..0xff) " "while accessing entry '%s' @ " "0x%8.8" PRIx32 ", field '%s', item %d", val, table, addr, "Log Descriptor Format", i); } } } break; case 16: /* 7.17 */ table = "Physical Memory Array (Type 16)"; if (hdr->length < 0x0f) break; if (!(((data[0x4] >= 0x01) && (data[0x4] <= 0x0a)) || ((data[0x4] >= 0xa0) && (data[0x4] <= 0xa3)))) fwts_failed(fw, LOG_LEVEL_HIGH, DMI_VALUE_OUT_OF_RANGE, "Out of range value 0x%2.2" PRIx8 " " "(range allowed 0x01..0x0a, 0xa0..0xa3) " "while accessing entry '%s' @ " "0x%8.8" PRIx32 ", field '%s', offset 0x%2.2x", data[0x4], table, addr, "Location", 0x4); dmi_min_max_uint8_check(fw, table, addr, "Use", hdr, 0x5, 0x1, 0x7); dmi_min_max_uint8_check(fw, table, addr, "Error Corrrection Type", hdr, 0x6, 0x1, 0x7); break; case 17: /* 7.18 */ table = "Memory Device (Type 17)"; if (hdr->length < 0x15) break; dmi_min_max_uint8_check(fw, table, addr, "Form Factor", hdr, 0xe, 0x1, 0xf); dmi_str_check(fw, table, addr, "Locator", hdr, 0x10); dmi_str_check(fw, table, addr, "Bank Locator", hdr, 0x11); dmi_min_max_uint8_check(fw, table, addr, "Memory Type", hdr, 0x12, 0x1, 0x19); if (hdr->length < 0x1b) break; dmi_str_check(fw, table, addr, "Manufacturer", hdr, 0x17); dmi_str_check(fw, table, addr, "Serial Number", hdr, 0x18); dmi_str_check(fw, table, addr, "Asset Tag", hdr, 0x19); dmi_str_check(fw, table, addr, "Part Number", hdr, 0x1a); break; case 18: /* 7.19 */ table = "32-bit Memory Error Information (Type 18)"; if (hdr->length < 0x17) break; dmi_min_max_uint8_check(fw, table, addr, "Error Type", hdr, 0x4, 0x1, 0xe); dmi_min_max_uint8_check(fw, table, addr, "Error Granularity", hdr, 0x5, 0x1, 0x4); dmi_min_max_uint8_check(fw, table, addr, "Error Operation", hdr, 0x6, 0x1, 0x5); break; case 19: /* 7.20 */ table = "Memory Array Mapped Address (Type 19)"; if (hdr->length < 0x0F) break; if (hdr->length >= 0x1F && GET_UINT32(data + 0x04) == 0xFFFFFFFF) { uint64_t start, end; start = GET_UINT64(data + 0x0F); end = GET_UINT64(data + 0x17); if (start == end) fwts_failed(fw, LOG_LEVEL_HIGH, DMI_ILLEGAL_MAPPED_ADDR_RANGE, "Extended Start and End addresses are identical " "while accessing entry '%s' @ 0x%8.8" PRIx32 ", " "fields 'Extended Starting Address' and 'Extended Ending Address'", table, addr); } else { if (GET_UINT32(data + 0x08) - GET_UINT32(data + 0x04) + 1 == 0) fwts_failed(fw, LOG_LEVEL_HIGH, DMI_ILLEGAL_MAPPED_ADDR_RANGE, "Illegal zero mapped address range " "for entry '%s' @ 0x%8.8" PRIx32, table, addr); } break; case 20: /* 7.21 */ table = "Memory Device Mapped Address (Type 20)"; if (hdr->length < 0x13) break; if (hdr->length >= 0x23 && GET_UINT32(data + 0x04) == 0xFFFFFFFF) { uint64_t start, end; start = GET_UINT64(data + 0x13); end = GET_UINT64(data + 0x1B); if (start == end) fwts_failed(fw, LOG_LEVEL_HIGH, DMI_ILLEGAL_MAPPED_ADDR_RANGE, "Extended Start and End addresses are identical " "while accessing entry '%s' @ 0x%8.8" PRIx32 ", " "fields 'Extended Starting Address' and 'Extended Ending Address'", table, addr); } else { if (GET_UINT32(data + 0x08) - GET_UINT32(data + 0x04) + 1 == 0) fwts_failed(fw, LOG_LEVEL_HIGH, DMI_ILLEGAL_MAPPED_ADDR_RANGE, "Illegal zero mapped address range " "for entry '%s' @ 0x%8.8" PRIx32, table, addr); } if (data[0x10] == 0) fwts_failed(fw, LOG_LEVEL_HIGH, DMI_ILLEGAL_MAPPED_ADDR_RANGE, "Illegal row position %2.2" PRIx8 ", " "while accessing entry '%s' @ 0x%8.8" PRIx32 ", field '%s', offset 0x%2.2x", data[0x10], table, addr, "Partial Row Position", 0x10); break; case 21: /* 7.22 */ table = "Built-in Pointing Device (Type 21)"; if (hdr->length < 0x07) break; dmi_min_max_uint8_check(fw, table, addr, "Type", hdr, 0x4, 0x1, 0x9); if (!(((data[0x5] >= 0x01) && (data[0x5] <= 0x08)) || ((data[0x5] >= 0xa0) && (data[0x5] <= 0xa2)))) { fwts_failed(fw, LOG_LEVEL_HIGH, DMI_VALUE_OUT_OF_RANGE, "Out of range value 0x%2.2" PRIx8 " " "(range allowed 0x01..0x08, 0xa0..0xa2) " "while accessing '%s', field '%s', offset 0x%2.2x", data[0x5], table, "Interface", 0x5); } break; case 22: /* 7.23 */ table = "Portable Battery (Type 22)"; if (hdr->length < 0x10) break; dmi_str_check(fw, table, addr, "Location", hdr, 0x4); dmi_str_check(fw, table, addr, "Manufacturer", hdr, 0x5); if (data[0x06] || hdr->length < 0x1A) dmi_str_check(fw, table, addr, "Manufacturer Date", hdr, 0x6); if (data[0x07] || hdr->length < 0x1A) dmi_str_check(fw, table, addr, "Serial Number", hdr, 0x7); dmi_str_check(fw, table, addr, "Device Name", hdr, 0x8); if (data[0x09] != 0x02 || hdr->length < 0x1A) dmi_str_check(fw, table, addr, "Device Chemistry", hdr, 0x9); dmi_str_check(fw, table, addr, "SBDS Version Number", hdr, 0xe); if (hdr->length < 0x1A) break; if (data[0x09] == 0x02) dmi_str_check(fw, table, addr, "SBDS Device Chemistry", hdr, 0x14); ret = fwts_battery_get_count(fw, &battery_count); if (ret != FWTS_OK || battery_count < 1) { fwts_failed(fw, LOG_LEVEL_MEDIUM, DMI_INVALID_HARDWARE_ENTRY, "Invalid Hardware Configuration " "(no battery found) "); } break; case 23: /* 7.24 */ table = "System Reset (Type 23)"; if (hdr->length < 0x0D) break; if (!(data[0x04] & (1 << 5))) break; dmi_min_max_mask_uint8_check(fw, table, addr, "Capabilities (bits 1..2)", hdr, 0x4, 0x1, 0x3, 1, 0x3); dmi_min_max_mask_uint8_check(fw, table, addr, "Capabilities (bits 3..4)", hdr, 0x4, 0x1, 0x3, 3, 0x3); break; case 24: /* 7.25 */ table = "Hardware Security (Type 24)"; /* if (hdr->length < 0x05) break; */ break; case 25: /* 7.26 */ table = "System Power Controls (Type 25)"; /* if (hdr->length < 0x9) break; */ break; case 26: /* 7.27 */ table = "Voltage Probe (Type 26)"; if (hdr->length < 0x14) break; dmi_str_check(fw, table, addr, "Description", hdr, 0x4); dmi_min_max_mask_uint8_check(fw, table, addr, "Location (bits 0..4)", hdr, 0x5, 0x1, 0xb, 0, 0x1f); dmi_min_max_mask_uint8_check(fw, table, addr, "Status (bits 5..7)", hdr, 0x5, 0x1, 0x6, 5, 0x7); break; case 27: /* 7.28 */ table = "Cooling Device (Type 27)"; if (hdr->length < 0xc) break; val = data[0x06] & 0x1f; if (!(((val >= 0x01) && (val <= 0x09)) || ((val >= 0x10) && (val <= 0x11)))) fwts_failed(fw, LOG_LEVEL_HIGH, DMI_VALUE_OUT_OF_RANGE, "Out of range value 0x%2.2" PRIx8 " " "(range allowed 0x01..0x09, 0x10..0x11) " "while accessing entry '%s' @ " "0x%8.8" PRIx32 ", field '%s', " "offset 0x%2.2x, mask 0x%2.2x", data[0x6], table, addr, "Device Type", 0x6, 0x1f); dmi_min_max_mask_uint8_check(fw, table, addr, "Status (bits 5..7)", hdr, 0x6, 0x1, 0x6, 5, 0x7); if (hdr->length < 0x0f) break; dmi_str_check(fw, table, addr, "Description", hdr, 0xe); break; case 28: /* 7.29 */ table = "Temperature Probe (Type 28)"; if (hdr->length < 0x14) break; dmi_str_check(fw, table, addr, "Description", hdr, 0x4); dmi_min_max_mask_uint8_check(fw, table, addr, "Location (bits 0..4)", hdr, 0x5, 0x1, 0xf, 0, 0x1f); dmi_min_max_mask_uint8_check(fw, table, addr, "Status (bits 5..7)", hdr, 0x5, 0x1, 0x6, 5, 0x7); break; case 29: /* 7.30 */ table = "Electrical Current Probe (Type 29)"; if (hdr->length < 0x14) break; dmi_str_check(fw, table, addr, "Description", hdr, 0x4); dmi_min_max_mask_uint8_check(fw, table, addr, "Location (bits 0..4)", hdr, 0x5, 0x1, 0xb, 0, 0x1f); dmi_min_max_mask_uint8_check(fw, table, addr, "Status (bits 5..7)", hdr, 0x5, 0x1, 0x6, 5, 0x7); break; case 30: /* 7.31 */ table = "Out-of-band Remote Access (Type 30)"; if (hdr->length < 0x06) break; dmi_str_check(fw, table, addr, "Manufacturer Name", hdr, 0x4); break; case 31: /* 7.32 */ table = "Boot Integrity Services Entry Point (Type 31)"; /* if (hdr->length < 0x1c) break; */ break; case 32: /* 7.33 */ table = "System Boot Information (Type 32)"; if (hdr->length < 0xb) break; if ((data[0xa] > 0x8) && (data[0xa] < 128)) fwts_failed(fw, LOG_LEVEL_HIGH, DMI_VALUE_OUT_OF_RANGE, "Out of range value 0x%2.2" PRIx8 " " "(range allowed 0x00..0x08, 0x80..0xff) " "while accessing entry '%s' @ " "0x%8.8" PRIx32 ", field '%s', offset 0x%2.2x", data[0xa], table, addr, "Boot Status", 0xa); break; case 33: /* 7.34 */ table = "64-bit Memory Error Information (Type 33)"; if (hdr->length < 0x1f) break; dmi_min_max_uint8_check(fw, table, addr, "Error Type", hdr, 0x4, 0x1, 0xe); dmi_min_max_uint8_check(fw, table, addr, "Error Granularity", hdr, 0x5, 0x1, 0x4); dmi_min_max_uint8_check(fw, table, addr, "Error Operation", hdr, 0x6, 0x1, 0x5); break; case 34: /* 7.35 */ table = "Management Device (Type 34)"; if (hdr->length < 0x0b) break; dmi_str_check(fw, table, addr, "Description", hdr, 0x4); dmi_min_max_uint8_check(fw, table, addr, "Type", hdr, 0x5, 0x1, 0xd); dmi_min_max_uint8_check(fw, table, addr, "Address Type", hdr, 0xa, 0x1, 0x5); break; case 35: /* 7.36 */ table = "Management Device Component (Type 35)"; if (hdr->length < 0x0b) break; dmi_str_check(fw, table, addr, "Description", hdr, 0x4); break; case 36: /* 7.37 */ table = "Management Device Threshold Data (Type 36)"; /* if (hdr->length < 0x10) break; */ break; case 37: /* 7.38 */ table = "Memory Channel (Type 37)"; if (hdr->length < 0x07) break; dmi_min_max_uint8_check(fw, table, addr, "Type", hdr, 0x4, 0x1, 0x4); break; case 38: /* 7.39 */ table = "IPMI Device Information (Type 38)"; dmi_min_max_uint8_check(fw, table, addr, "Interface Type", hdr, 0x4, 0x0, 0x4); break; case 39: /* 7.40 */ table = "System Power Supply (Type 39)"; if (hdr->length < 0x10) break; dmi_str_check(fw, table, addr, "Location", hdr, 0x5); dmi_str_check(fw, table, addr, "Device Name", hdr, 0x6); dmi_str_check(fw, table, addr, "Manufacturer", hdr, 0x7); dmi_str_check(fw, table, addr, "Serial Number", hdr, 0x8); dmi_str_check(fw, table, addr, "Asset Tag", hdr, 0x9); dmi_str_check(fw, table, addr, "Model Part Number", hdr, 0xa); dmi_str_check(fw, table, addr, "Revision Level", hdr, 0xb); break; case 40: /* 7.41 */ table = "Additional Information (Type 40)"; break; case 41: /* 7.42 */ table = "Onboard Device (Type 41)"; if (hdr->length < 0xb) break; dmi_str_check(fw, table, addr, "Reference Designation", hdr, 0x4); dmi_min_max_mask_uint8_check(fw, table, addr, "Device Type", hdr, 0x5, 0x1, 0xa, 0, 0x7f); break; case 42: /* 7.43 */ table = "Management Controller Host Interface (Type 42)"; if (hdr->length < 0x05) break; if (!((data[0x04] >= 0x02 && data[0x04] <= 0x08) || (data[0x04] == 0xF0))) fwts_failed(fw, LOG_LEVEL_MEDIUM, DMI_MGMT_CTRL_HOST_TYPE, "Out of range value 0x%2.2" PRIx8 " " "(range allowed 0x02..0x08, 0xf0) " "while accessing entry '%s' @ " "0x%8.8" PRIx32 ", field '%s', offset 0x%2.2x", data[0x4], table, addr, "Reference Designation", 0x4); break; case 126: /* 7.44 */ table = "Inactive (Type 126)"; break; case SMBIOS_END_OF_TABLE: /* 7.45 */ table = "End of Table (Type 127)"; break; default: snprintf(tmp, sizeof(tmp), "Unknown (Type %" PRId8 ")", hdr->type); table = tmp; break; } if (fw->minor_tests.failed == failed_count) fwts_passed(fw, "Entry @ 0x%8.8" PRIx32 " '%s'", addr, table); else if (!advice_given && hdr->type <= 42) fwts_advice(fw, "It may be worth checking against section 7.%" PRId8 " of the " "System Management BIOS (SMBIOS) Reference Specification " "(see http://www.dmtf.org/standards/smbios).", hdr->type+1); } static int dmi_version_check(fwts_framework *fw, uint16_t version) { if (version > DMI_VERSION) { fwts_warning(fw, "SMBIOS version %" PRIu16 ".%" PRIu16 " is not supported by the dmicheck " "test. This test only supports SMBIOS version " "%" PRIu16 ".%" PRIu16 " and lower.", VERSION_MAJOR(version), VERSION_MINOR(version), VERSION_MAJOR(DMI_VERSION), VERSION_MINOR(DMI_VERSION)); return FWTS_ERROR; } return FWTS_OK; } static void dmi_scan_tables(fwts_framework *fw, fwts_smbios_entry *entry, uint8_t *table) { uint8_t *entry_data = table; uint16_t table_length; uint16_t struct_count; int i = 0; table_length = entry->struct_table_length; struct_count = entry->number_smbios_structures; while ((i < struct_count) && (entry_data <= (table + table_length - 4))) { uint32_t addr = entry->struct_table_address + (entry_data - table); fwts_dmi_header hdr; uint8_t *next_entry; hdr.type = entry_data[0]; hdr.length = entry_data[1]; hdr.handle = GET_UINT16(entry_data + 2); hdr.data = entry_data; /* Sanity check */ if (hdr.length < 4) { fwts_failed(fw, LOG_LEVEL_HIGH, DMI_INVALID_ENTRY_LENGTH, "Invald header length of entry #%d, " "length was 0x%2.2" PRIx8 ".", i, hdr.length); fwts_advice(fw, "DMI entry header lengths must be 4 or more bytes long " "so this error indicates that the DMI table is unreliable " "and DMI table checking has been aborted at entry #%d.", i); break; } /* Real Physical Address */ next_entry = entry_data + hdr.length; /* Look for structure terminator, ends in two zero bytes */ while (((next_entry - table + 1) < table_length) && ((next_entry[0] != 0) || (next_entry[1] != 0))) { next_entry++; } /* Skip over terminating two zero bytes, see section 6.1 of spec */ next_entry += 2; if ((next_entry - table) <= table_length) dmicheck_entry(fw, addr, &hdr); i++; entry_data = next_entry; } if (table_length != (entry_data - table)) fwts_failed(fw, LOG_LEVEL_MEDIUM, DMI_BAD_TABLE_LENGTH, "DMI table length was %" PRId16 " bytes (as specified by " "the SMBIOS header) but the DMI entries used %td bytes.", table_length, entry_data - table); if (struct_count != i) fwts_failed(fw, LOG_LEVEL_MEDIUM, DMI_STRUCT_COUNT, "DMI table was DMI %d entries in size (as specified by " "the SMBIOS header) but only %d DMI entries were found.", struct_count, i); } static int dmicheck_test2(fwts_framework *fw) { void *addr; fwts_smbios_entry entry; fwts_smbios_type type; uint16_t version = 0; uint8_t *table; addr = fwts_smbios_find_entry(fw, &entry, &type, &version); if (addr == NULL) { fwts_failed(fw, LOG_LEVEL_HIGH, DMI_NO_TABLE_HEADER, "Cannot find SMBIOS or DMI table entry."); return FWTS_ERROR; } if (type == FWTS_SMBIOS_UNKNOWN) { fwts_failed(fw, LOG_LEVEL_HIGH, DMI_NO_TABLE, "Cannot find a valid SMBIOS or DMI table."); return FWTS_ERROR; } /* Fix broken version numbers found in the wild */ version = dmi_remap_version(fw, version); if (dmi_version_check(fw, version) != FWTS_OK) return FWTS_SKIP; table = fwts_mmap((off_t)entry.struct_table_address, (size_t)entry.struct_table_length); if (table == FWTS_MAP_FAILED) { fwts_log_error(fw, "Cannot mmap SMBIOS tables from " "%8.8" PRIx32 "..%8.8" PRIx32 ".", entry.struct_table_address, entry.struct_table_address + entry.struct_table_length); return FWTS_ERROR; } dmi_scan_tables(fw, &entry, table); (void)fwts_munmap(table, (size_t)entry.struct_table_length); return FWTS_OK; } static fwts_framework_minor_test dmicheck_tests[] = { { dmicheck_test1, "Find and test SMBIOS Table Entry Point." }, { dmicheck_test2, "Test DMI/SMBIOS tables for errors." }, { NULL, NULL } }; static fwts_framework_ops dmicheck_ops = { .description = "DMI/SMBIOS table tests.", .minor_tests = dmicheck_tests }; FWTS_REGISTER("dmicheck", &dmicheck_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | FWTS_FLAG_ROOT_PRIV); #endif src/example/000077500000000000000000000000001231470457100133045ustar00rootroot00000000000000src/example/blank/000077500000000000000000000000001231470457100143735ustar00rootroot00000000000000src/example/blank/blank.c000066400000000000000000000050601231470457100156270ustar00rootroot00000000000000/* * Copyright (C) 2010-2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #include "fwts.h" static int example_init(fwts_framework *fw) { /* Put pre-test initialistion code here */ /* Returns: * FWTS_ERROR - failed, abort test * FWTS_OK - success, do tests */ return FWTS_OK; } static int example_deinit(fwts_framework *fw) { /* Put post-test de-initialistion code here */ /* Returns: * FWTS_ERROR - failed, abort test * FWTS_OK - success, do tests */ return FWTS_OK; } static int example_test1(fwts_framework *fw) { /* Do your test */ /* Log success or failure */ fwts_passed(fw, "Test passed, hurrah!"); /* fwts_failed(fw, LOG_LEVEL_HIGH, "ExampleUniqueTestMessageIdentifier", "Test failed!"); */ /* Returns: * FWTS_ERROR - failed, abort test * FWTS_OK - success, do test */ return FWTS_OK; } static int example_test2(fwts_framework *fw) { /* Do your test */ /* Log success or failure */ fwts_passed(fw, "Test passed, hurrah!"); /* fwts_failed(fw, LOG_LEVEL_HIGH, "ExampleUniqueTestMessageIdentifier", "Test failed!"); */ /* Returns: * FWTS_ERROR - failed, abort test * FWTS_OK - success, do test */ return FWTS_OK; } /* * Null terminated array of tests to run, in this * scenario, we just have one test. */ static fwts_framework_minor_test example_tests[] = { { example_test1, "Example sub test1 name." }, { example_test2, "Example sub test2 name." }, { NULL, NULL } }; static fwts_framework_ops example_ops = { .description = "Example name.", /* Simple short description of test */ .init = example_init, /* Can be NULL and/or omitted if not required */ .deinit = example_deinit, /* Can be NULL and/or omitted if not required */ .minor_tests = example_tests /* Array of tests to run */ }; /* * See fwts_framework.h for flags, */ FWTS_REGISTER("example", &example_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH); src/hotkey/000077500000000000000000000000001231470457100131545ustar00rootroot00000000000000src/hotkey/hotkey/000077500000000000000000000000001231470457100144575ustar00rootroot00000000000000src/hotkey/hotkey/hotkey.c000066400000000000000000000142351231470457100161330ustar00rootroot00000000000000/* * Copyright (C) 2010-2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #include "fwts.h" #ifdef FWTS_ARCH_INTEL #include #include #include #include #include #include #include #define AT_KEYBOARD "AT Translated Set 2 keyboard" static fwts_list *hotkeys; static char *hotkey_dev; static char *hotkey_keymap; static int hotkey_check_key(fwts_framework *fw, struct input_event *ev, fwts_list *hotkeys) { static int scancode = 0; fwts_list_link *item; int found = 0; if ((ev->code == MSC_SCAN) && (ev->type == EV_MSC)) scancode = ev->value; if ((ev->type == EV_KEY) && (ev->value != 0)) { fwts_list_foreach(item, hotkeys) { fwts_keycode *keycode = fwts_list_data(fwts_keycode*, item); if (keycode->scancode == scancode) { fwts_printf(fw, "Scancode: 0x%2.2x Eventcode 0x%3.3x (%s) '%s'\n", scancode, ev->code, keycode->keyname, keycode->keytext); found = 1; break; } } if (!found) fwts_printf(fw, "Scancode: 0x%2.2x Eventcode 0x%3.3x\n", scancode, ev->code); } return FWTS_OK; } static int hotkey_test(fwts_framework *fw, char *dev, fwts_list *hotkeys) { struct input_event ev; char path[PATH_MAX]; int do_test = 1; int fd; snprintf(path, sizeof(path), "/dev/%s", dev); if ((fd = open(path, O_RDWR)) < 0) { fwts_log_error(fw, "Cannot open device %s.", path); return FWTS_ERROR; } fwts_printf(fw, "Now press all the hotkeys to see if they can be identified.\n"); fwts_printf(fw, "Press to finish.\n"); if (ioctl(fd, EVIOCGRAB, (void*)1)) { /* Get focus */ fwts_log_error(fw, "Cannot grab device %s.", path); close(fd); return FWTS_ERROR; } while (do_test) { switch (read(fd, &ev, sizeof(ev))) { case -1: case 0: do_test = 0; break; default: if ((ev.type == EV_KEY) && (ev.code == KEY_ESC) && (ev.value == 0)) do_test = 0; else hotkey_check_key(fw, &ev, hotkeys); break; } } if (ioctl(fd, EVIOCGRAB, (void*)0)) { /* Release */ fwts_log_error(fw, "Cannot un-grab device %s.", path); close(fd); return FWTS_ERROR; } close(fd); return FWTS_OK; } static char *hotkey_device(char *path) { DIR *scan; struct dirent *scan_entry; char *dev = NULL; if ((scan = opendir(path)) == NULL) return NULL; while ((scan_entry = readdir(scan)) != NULL) { if (strncmp("event", scan_entry->d_name, 5) == 0) { char filename[PATH_MAX]; snprintf(filename, sizeof(filename), "input/%s", scan_entry->d_name); dev = strdup(filename); break; } } closedir(scan); return dev; } static char *hotkey_find_keyboard(char *path) { DIR *dir; struct dirent *entry; struct stat statbuf; char filename[PATH_MAX]; char *dev = NULL; char *data; if ((dir = opendir(path)) == NULL) return NULL; while ((entry = readdir(dir)) != NULL) { if (strlen(entry->d_name) > 3) { snprintf(filename, sizeof(filename), "%s/%s", path, entry->d_name); if (lstat(filename, &statbuf) == 0) { if (S_ISDIR(statbuf.st_mode)) { if (!S_ISLNK(statbuf.st_mode)) if ((dev = hotkey_find_keyboard(filename)) != NULL) break; } else { if ((data = fwts_get(filename)) != NULL) { if (strncmp(data, AT_KEYBOARD, sizeof(AT_KEYBOARD)-1) == 0) { dev = hotkey_device(path); free(data); break; } free(data); } } } } } closedir(dir); return dev; } static char *hotkey_find_keymap(char *device) { fwts_list *output; fwts_list_link *item; char buffer[1024]; char *keymap = NULL; int status; snprintf(buffer, sizeof(buffer), "udevadm test /class/%s 2>&1", device); if (fwts_pipe_exec(buffer, &output, &status) != FWTS_OK) return NULL; snprintf(buffer, sizeof(buffer), "keymap %s", device); fwts_list_foreach(item, output) { char *text = fwts_text_list_text(item); if ((text = strstr(text, buffer)) != NULL) { char *ptr; text += strlen(buffer) + 1; if ((ptr = strstr(text, "'")) != NULL) *ptr = '\0'; keymap = strdup(text); break; } } fwts_list_free(output, free); return keymap; } static int hotkey_init(fwts_framework *fw) { if ((hotkey_dev = hotkey_find_keyboard("/sys/devices/platform")) == NULL) { fwts_log_error(fw, "Cannot find keyboard for this machine."); return FWTS_ERROR; } if ((hotkey_keymap = hotkey_find_keymap(hotkey_dev)) == NULL) { fwts_log_error(fw, "Cannot determine keymap for this machine."); return FWTS_ERROR; } if ((hotkeys = fwts_keymap_load(hotkey_keymap)) == NULL) { fwts_log_error(fw, "Cannot load keymap for this machine."); return FWTS_ERROR; } return FWTS_OK; } static int hotkey_deinit(fwts_framework *fw) { FWTS_UNUSED(fw); fwts_keymap_free(hotkeys); free(hotkey_dev); free(hotkey_keymap); return FWTS_OK; } static int hotkey_test1(fwts_framework *fw) { fwts_log_info(fw, "This interactive test looks up key presses in the " "keymap and returns any known keymap names for the " "keys."); fwts_log_nl(fw); fwts_log_info(fw, "Using %s keymap and %s input device.", hotkey_keymap, hotkey_dev); hotkey_test(fw, hotkey_dev, hotkeys); fwts_infoonly(fw); return FWTS_OK; } static fwts_framework_minor_test hotkey_tests[] = { { hotkey_test1, "Hotkey keypress checks." }, { NULL, NULL } }; static fwts_framework_ops hotkey_ops = { .description = "Hotkey scan code tests.", .init = hotkey_init, .deinit = hotkey_deinit, .minor_tests = hotkey_tests }; FWTS_REGISTER("hotkey", &hotkey_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_INTERACTIVE | FWTS_FLAG_ROOT_PRIV); #endif src/hpet/000077500000000000000000000000001231470457100126115ustar00rootroot00000000000000src/hpet/hpet_check/000077500000000000000000000000001231470457100147065ustar00rootroot00000000000000src/hpet/hpet_check/hpet_check.c000066400000000000000000000276141231470457100171610ustar00rootroot00000000000000/* * Copyright (C) 2006, Intel Corporation * Copyright (C) 2010-2014 Canonical * * This code was originally part of the Linux-ready Firmware Developer Kit * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #include #include #include "fwts.h" #ifdef FWTS_ARCH_INTEL static fwts_list *klog; #define HPET_REG_SIZE (0x400) #define MAX_CLK_PERIOD (100000000) static uint64_t hpet_base_p = 0; static void *hpet_base_v = 0; static void hpet_parse_check_base(fwts_framework *fw, const char *table, fwts_list_link *item) { char *val, *idx; if ((val = strstr(fwts_text_list_text(item), "0x")) != NULL) { uint64_t address_base; idx = index(val, ','); if (idx) *idx = '\0'; address_base = strtoul(val, NULL, 0x10); if (hpet_base_p != 0) { if (hpet_base_p != address_base) fwts_failed(fw, LOG_LEVEL_MEDIUM, "HPETBaseMismatch", "Mismatched HPET base between %s (%" PRIx64 ") " "and the kernel (0x%" PRIx64 ").", table, hpet_base_p, address_base); else fwts_passed(fw, "HPET base matches that between %s and " "the kernel (0x%" PRIx64 ").", table, hpet_base_p); } } } static void hpet_parse_device_hpet(fwts_framework *fw, const char *table, fwts_list_link *item) { for (;item != NULL; item = item->next) { const char *str = fwts_text_list_text(item); if ((strstr(str, "Name") != NULL) && (strstr(str, "ResourceTemplate") != NULL)) { fwts_list_link *tmp_item = item->next; for (; tmp_item != NULL; tmp_item = tmp_item->next) { const char *str = fwts_text_list_text(tmp_item); if (strstr(str, "Memory32Fixed") != NULL) { /* Next line contains base address */ if (tmp_item->next != NULL) { hpet_parse_check_base(fw, table, tmp_item->next); return; } } else if (strstr(str, "DWordMemory") != NULL) { if (tmp_item->next != NULL && /* Granularity */ tmp_item->next->next != NULL) { /* Base address */ hpet_parse_check_base(fw, table, tmp_item->next->next); return; } } } } } } /* * check_hpet_base_dsdt() * used to parse the DSDT for HPET base info */ static void hpet_check_base_acpi_table(fwts_framework *fw, const char *table, const int which) { fwts_list *output; fwts_list_link *item; if (fwts_iasl_disassemble(fw, table, which, &output) != FWTS_OK) return; if (output == NULL) return; fwts_list_foreach(item, output) if (strstr(fwts_text_list_text(item), "Device (HPET)") != NULL) hpet_parse_device_hpet(fw, table, item); fwts_text_list_free(output); } static int hpet_check_init(fwts_framework *fw) { if ((klog = fwts_klog_read()) == NULL) { fwts_log_error(fw, "Cannot read kernel log."); return FWTS_ERROR; } return FWTS_OK; } static int hpet_check_deinit(fwts_framework *fw) { FWTS_UNUSED(fw); if (klog) fwts_text_list_free(klog); return FWTS_OK; } static int hpet_check_test1(fwts_framework *fw) { if (klog == NULL) return FWTS_ERROR; fwts_list_link *item; fwts_log_info(fw, "This test checks the HPET PCI BAR for each timer block " "in the timer. The base address is passed by the firmware " "via an ACPI table. IRQ routing and initialization is also " "verified by the test."); fwts_list_foreach(item, klog) { char *text = fwts_text_list_text(item); /* Old format */ if (strstr(text, "ACPI: HPET id:") != NULL) { char *str = strstr(text, "base: "); if (str) { hpet_base_p = strtoul(str+6, NULL, 0x10); fwts_passed(fw, "Found HPET base 0x%" PRIx64 " in kernel log.", hpet_base_p); break; } } /* New format */ /* [ 0.277934] hpet0: at MMIO 0xfed00000, IRQs 2, 8, 0 */ if ((strstr(text, "hpet") != NULL) && (strstr(text, "IRQs") != NULL)) { char *str = strstr(text, "at MMIO "); if (str) { hpet_base_p = strtoul(str+8, NULL, 0x10); fwts_passed(fw, "Found HPET base 0x%" PRIx64 " in kernel log.", hpet_base_p); break; } } } if (hpet_base_p == 0) { fwts_log_info(fw, "No base address found for HPET in the kernel log."); return FWTS_ERROR; } return FWTS_OK; } /* * Sanity check HPET table, see: * http://www.intel.co.uk/content/www/uk/en/software-developers/software-developers-hpet-spec-1-0a.html */ static int hpet_check_test2(fwts_framework *fw) { fwts_acpi_table_info *table; fwts_acpi_table_hpet *hpet; bool passed = true; char *page_prot; if (fwts_acpi_find_table(fw, "HPET", 0, &table) != FWTS_OK) { fwts_log_error(fw, "Cannot read ACPI table HPET."); return FWTS_ERROR; } if (table == NULL) { fwts_log_error(fw, "ACPI table HPET does not exist!"); return FWTS_ERROR; } if (table->length < sizeof(fwts_acpi_table_hpet)) { fwts_failed(fw, LOG_LEVEL_HIGH, "HPETAcpiTableTooSmall", "HPET ACPI table is %zd bytes long which is smaller " "than the expected size of %zd bytes.", table->length, sizeof(fwts_acpi_table_hpet)); return FWTS_ERROR; } hpet = (fwts_acpi_table_hpet *)table->data; if (hpet->base_address.address == 0) { fwts_failed(fw, LOG_LEVEL_HIGH, "HPETAcpiBaseAddressNull", "HPET base address in ACPI HPET table is null."); passed = false; } /* * If we've already figured out the HPET base address then * sanity check it against HPET. This should never happen. */ if ((hpet_base_p != 0) && (hpet_base_p != hpet->base_address.address)) { fwts_failed(fw, LOG_LEVEL_MEDIUM, "HPETAcpiBaseAddressDifferFromKernel", "HPET base address in ACPI HPET table " "is 0x%" PRIx64 " which is different from " "the kernel HPET base address of " "0x%" PRIx64 ".", hpet->base_address.address, hpet_base_p); passed = false; } #if 0 /* * The Intel spec states that the address space ID * must be memory or I/O space. */ if ((hpet->base_address.address_space_id != 0) && (hpet->base_address.address_space_id != 1)) { fwts_failed(fw, LOG_LEVEL_HIGH, "HPETAcpiBaseAddressSpaceId", "The HPET base address space ID was 0x%" PRIx8 ", was expecting 0 (System Memory) or " "1 (System I/O).", hpet->base_address.address_space_id); passed = false; } #endif /* * The kernel expects the HPET address space ID * to be memory. */ if (hpet->base_address.address_space_id != 0) { fwts_failed(fw, LOG_LEVEL_HIGH, "HPETAcpiBaseAddressSpaceIdNotMemory", "The HPET base address space ID was 0x%" PRIx8 ", however, the Kernel expects the HPET address " "space ID to be 0 (System Memory). The kernel " "will not parse this and the HPET configuration " "will be ignored.", hpet->base_address.address_space_id); } /* * Some broken firmware advertises the HPET at * 0xfed0000000000000 instead of 0xfed00000. The kernel * detects this and fixes it, but even so, it is wrong * so lets check for this. */ if ((hpet->base_address.address >> 32) != 0) { fwts_failed(fw, LOG_LEVEL_CRITICAL, "HPETAcpiBaseAddressBogus", "The HPET base address is bogus: 0x%" PRIx64 ".", hpet->base_address.address); fwts_advice(fw, "Bogus HPET base address can be worked around " "by using the kernel parameter 'hpet=force' if " "the base addess is 0xfed0000000000000. " "This will make the kernel shift the address " "down 32 bits to 0xfed00000."); passed = false; } /* * We don't need to check for GAS address space widths etc * since the kernel does not care and the spec doesn't * stipulate these need to be sane */ /* * Dump out HPET */ fwts_log_info_verbatum(fw, "Hardware ID of Event Block:"); fwts_log_info_verbatum(fw, " PCI Vendor ID : 0x%" PRIx32, (hpet->event_timer_block_id >> 16) & 0xffff); fwts_log_info_verbatum(fw, " Legacy IRQ Routing Capable : %" PRIu32, (hpet->event_timer_block_id >> 15) & 1); fwts_log_info_verbatum(fw, " COUNT_SIZE_CAP counter size: %" PRIu32, (hpet->event_timer_block_id >> 13) & 1); fwts_log_info_verbatum(fw, " Number of comparitors : %" PRIu32, (hpet->event_timer_block_id >> 8) & 0x1f); fwts_log_info_verbatum(fw, " Hardwre Revision ID : 0x%" PRIx8, hpet->event_timer_block_id & 0xff); fwts_log_info_verbatum(fw, "Lower 32 bit base Address : 0x%" PRIx64, hpet->base_address.address); fwts_log_info_verbatum(fw, " Address Space ID : 0x%" PRIx8, hpet->base_address.address_space_id); fwts_log_info_verbatum(fw, " Register Bit Width : 0x%" PRIx8, hpet->base_address.register_bit_width); fwts_log_info_verbatum(fw, " Register Bit Offset : 0x%" PRIx8, hpet->base_address.register_bit_offset); fwts_log_info_verbatum(fw, " Address Width : 0x%" PRIx8, hpet->base_address.access_width); fwts_log_info_verbatum(fw, "HPET sequence number : 0x%" PRIx8, hpet->hpet_number); fwts_log_info_verbatum(fw, "Minimum clock tick : 0x%" PRIx16, hpet->main_counter_minimum); switch (hpet->page_prot_and_oem_attribute & 0xf) { case 0: page_prot = "No guaranteed protection"; break; case 1: page_prot = "4K page protected"; break; case 2: page_prot = "64K page protected"; break; default: page_prot = "Reserved"; break; } fwts_log_info_verbatum(fw, "Page Protection : 0x%" PRIx8 " (%s)", hpet->page_prot_and_oem_attribute & 0xf, page_prot); fwts_log_info_verbatum(fw, "OEM attributes : 0x%" PRIx8, (hpet->page_prot_and_oem_attribute >> 4) & 0xf); if (passed) fwts_passed(fw, "HPET looks sane."); return FWTS_OK; } static int hpet_check_test3(fwts_framework *fw) { int i; if (hpet_base_p == 0) { fwts_log_info(fw, "Test skipped because HPET address was not found."); return FWTS_SKIP; } hpet_check_base_acpi_table(fw, "DSDT", 0); for (i = 0; i< 11; i++) hpet_check_base_acpi_table(fw, "SSDT", i); return FWTS_OK; } static int hpet_check_test4(fwts_framework *fw) { uint64_t hpet_id; uint32_t vendor_id; uint32_t clk_period; if (hpet_base_p == 0) { fwts_log_info(fw, "Test skipped because HPET address was not found."); return FWTS_SKIP; } hpet_base_v = fwts_mmap(hpet_base_p, HPET_REG_SIZE); if (hpet_base_v == NULL) { fwts_log_error(fw, "Cannot mmap to /dev/mem."); return FWTS_ERROR; } hpet_id = *(uint64_t*) hpet_base_v; vendor_id = (hpet_id & 0xffff0000) >> 16; if (vendor_id == 0xffff) fwts_failed(fw, LOG_LEVEL_MEDIUM, "HPETVendorId", "Invalid Vendor ID: %04" PRIx32 " - this should be configured.", vendor_id); else fwts_passed(fw, "Vendor ID looks sane: 0x%04" PRIx32 ".", vendor_id); clk_period = hpet_id >> 32; if ((clk_period > MAX_CLK_PERIOD) || (clk_period == 0)) fwts_failed(fw, LOG_LEVEL_MEDIUM, "HPETClockPeriod", "Invalid clock period %" PRIu32 ", must be non-zero and " "less than 10^8.", clk_period); else fwts_passed(fw, "Valid clock period %" PRIu32 ".", clk_period); (void)fwts_munmap(hpet_base_v, HPET_REG_SIZE); return FWTS_OK; } static fwts_framework_minor_test hpet_check_tests[] = { { hpet_check_test1, "Test HPET base in kernel log." }, { hpet_check_test2, "Test HPET base in HPET table. "}, { hpet_check_test3, "Test HPET base in DSDT and/or SSDT. "}, { hpet_check_test4, "Test HPET configuration." }, { NULL, NULL } }; static fwts_framework_ops hpet_check_ops = { .description = "HPET configuration tests.", .init = hpet_check_init, .deinit = hpet_check_deinit, .minor_tests = hpet_check_tests }; FWTS_REGISTER("hpet_check", &hpet_check_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | FWTS_FLAG_ROOT_PRIV); #endif src/kernel/000077500000000000000000000000001231470457100131315ustar00rootroot00000000000000src/kernel/klog/000077500000000000000000000000001231470457100140655ustar00rootroot00000000000000src/kernel/klog/klog.c000066400000000000000000000041731231470457100151720ustar00rootroot00000000000000/* * Copyright (C) 2010-2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #include "fwts.h" #include #include #include #include #include static fwts_list *klog; static int klog_init(fwts_framework *fw) { if (fw->klog) klog = fwts_file_open_and_read(fw->klog); else klog = fwts_klog_read(); if (klog == NULL) { fwts_log_error(fw, "Cannot read kernel log."); return FWTS_ERROR; } return FWTS_OK; } static int klog_deinit(fwts_framework *fw) { FWTS_UNUSED(fw); fwts_klog_free(klog); return FWTS_OK; } static void klog_progress(fwts_framework *fw, int progress) { fwts_progress(fw, progress); } static int klog_test1(fwts_framework *fw) { int errors = 0; if (fwts_klog_firmware_check(fw, klog_progress, klog, &errors)) { fwts_log_error(fw, "Error parsing kernel log."); return FWTS_ERROR; } if (errors > 0) /* Checks will log errors as failures automatically */ fwts_log_info(fw, "Found %d unique errors in kernel log.", errors); else fwts_passed(fw, "Found no errors in kernel log."); return FWTS_OK; } static fwts_framework_minor_test klog_tests[] = { { klog_test1, "Kernel log error check." }, { NULL, NULL } }; static fwts_framework_ops klog_ops = { .description = "Scan kernel log for errors and warnings.", .init = klog_init, .deinit = klog_deinit, .minor_tests = klog_tests }; FWTS_REGISTER("klog", &klog_ops, FWTS_TEST_EARLY, FWTS_FLAG_BATCH); src/kernel/oops/000077500000000000000000000000001231470457100141115ustar00rootroot00000000000000src/kernel/oops/oops.c000066400000000000000000000043041231470457100152360ustar00rootroot00000000000000/* * Copyright (C) 2010-2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #include "fwts.h" #include #include #include #include #include static fwts_list *klog; static int oops_init(fwts_framework *fw) { if (fw->klog) klog = fwts_file_open_and_read(fw->klog); else klog = fwts_klog_read(); if (klog == NULL) { fwts_log_error(fw, "Cannot read kernel log."); return FWTS_ERROR; } return FWTS_OK; } static int oops_deinit(fwts_framework *fw) { FWTS_UNUSED(fw); fwts_klog_free(klog); return FWTS_OK; } static int oops_test1(fwts_framework *fw) { int oopses = 0; int warn_ons = 0; if (fwts_oops_check(fw, klog, &oopses, &warn_ons) != FWTS_OK) { fwts_log_error(fw, "Error parsing kernel log."); return FWTS_ERROR; } if (oopses > 0) fwts_failed(fw, LOG_LEVEL_CRITICAL, "KernelOops", "Found %d oopses in kernel log.", oopses); else fwts_passed(fw, "Found no oopses in kernel log."); if (warn_ons > 0) fwts_failed(fw, LOG_LEVEL_HIGH, "KernelWarnOns", "Found %d WARN_ON warnings in kernel log.", warn_ons); else fwts_passed(fw, "Found no WARN_ON warnings in kernel log."); return FWTS_OK; } static fwts_framework_minor_test oops_tests[] = { { oops_test1, "Kernel log oops check." }, { NULL, NULL } }; static fwts_framework_ops oops_ops = { .description = "Scan kernel log for Oopses.", .init = oops_init, .deinit = oops_deinit, .minor_tests = oops_tests }; FWTS_REGISTER("oops", &oops_ops, FWTS_TEST_EARLY, FWTS_FLAG_BATCH); src/kernel/version/000077500000000000000000000000001231470457100146165ustar00rootroot00000000000000src/kernel/version/version.c000066400000000000000000000060701231470457100164520ustar00rootroot00000000000000/* * Copyright (C) 2010-2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #include #include "fwts.h" static int version_test1(fwts_framework *fw) { char *str; fwts_release *release; release = fwts_release_get(); if (release) { bool not_ubuntu = strcmp(release->distributor, "Ubuntu"); fwts_release_free(release); /* Following is Ubuntu specific, so don't fail */ if (not_ubuntu) { fwts_skipped(fw, "Information not available with this kernel."); return FWTS_OK; } } if ((str = fwts_get("/proc/version_signature")) == NULL) fwts_skipped(fw, "Cannot get version signature info from " "/proc/version_signature"); else { fwts_chop_newline(str); fwts_log_info(fw, "Signature: %s", str); free(str); } fwts_infoonly(fw); return FWTS_OK; } static int version_test2(fwts_framework *fw) { char *str; if ((str = fwts_get("/proc/version")) == NULL) fwts_log_info(fw, "Cannot get version info from /proc/version"); else { fwts_chop_newline(str); fwts_log_info(fw, "Kernel Version: %s", str); free(str); } fwts_infoonly(fw); return FWTS_OK; } static int version_test3(fwts_framework *fw) { char *str; if ((str = fwts_get("/proc/cmdline")) == NULL) fwts_log_info(fw, "Cannot get version info from /proc/cmdline"); else { fwts_chop_newline(str); fwts_log_info(fw, "Kernel boot command line: %s", str); free(str); } fwts_infoonly(fw); return FWTS_OK; } static int version_test4(fwts_framework *fw) { char *str; if (((str = fwts_get("/sys/module/acpi/parameters/acpica_version")) == NULL) && ((str = fwts_get("/proc/acpi/info")) == NULL)) fwts_log_info(fw, "Cannot get ACPI version info from " "/sys/module/acpi/parameters/acpica_version " "or /proc/acpi/info, system does not have ACPI."); else { fwts_chop_newline(str); fwts_log_info(fw, "ACPI Version: %s", str); free(str); } fwts_infoonly(fw); return FWTS_OK; } static fwts_framework_minor_test version_tests[] = { { version_test1, "Gather kernel signature." }, { version_test2, "Gather kernel system information." }, { version_test3, "Gather kernel boot command line." }, { version_test4, "Gather ACPI driver version." }, { NULL, NULL }, }; static fwts_framework_ops version_ops = { .description = "Gather kernel system information.", .minor_tests = version_tests }; FWTS_REGISTER("version", &version_ops, FWTS_TEST_FIRST, FWTS_FLAG_BATCH); src/lib/000077500000000000000000000000001231470457100124175ustar00rootroot00000000000000src/lib/Makefile.am000066400000000000000000000000161231470457100144500ustar00rootroot00000000000000SUBDIRS = src src/lib/include/000077500000000000000000000000001231470457100140425ustar00rootroot00000000000000src/lib/include/fwts.h000066400000000000000000000043541231470457100152040ustar00rootroot00000000000000/* * Copyright (C) 2010-2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #ifndef __FWTS_H__ #define __FWTS_H__ #if defined(__x86_64__) || defined(__x86_64) || defined(__i386__) || defined(__i386) #define FWTS_ARCH_INTEL 1 #endif #define FWTS_UNUSED(var) (void)var #define FWTS_JSON_DATA_PATH "/usr/share/fwts" #include "fwts_version.h" #include "fwts_types.h" #include "fwts_binpaths.h" #include "fwts_framework.h" #include "fwts_log.h" #include "fwts_list.h" #include "fwts_text_list.h" #include "fwts_set.h" #include "fwts_get.h" #include "fwts_acpi.h" #include "fwts_acpi_tables.h" #include "fwts_acpid.h" #include "fwts_checkeuid.h" #include "fwts_cpu.h" #include "fwts_dump.h" #include "fwts_dump_data.h" #include "fwts_memorymap.h" #include "fwts_fileio.h" #include "fwts_firmware.h" #include "fwts_gpe.h" #include "fwts_iasl.h" #include "fwts_klog.h" #include "fwts_pipeio.h" #include "fwts_stringextras.h" #include "fwts_tty.h" #include "fwts_wakealarm.h" #include "fwts_formatting.h" #include "fwts_summary.h" #include "fwts_mmap.h" #include "fwts_interactive.h" #include "fwts_keymap.h" #include "fwts_cmos.h" #include "fwts_acpica.h" #include "fwts_oops.h" #include "fwts_hwinfo.h" #include "fwts_args.h" #include "fwts_multiproc.h" #include "fwts_ebda.h" #include "fwts_alloc.h" #include "fwts_guid.h" #include "fwts_scan_efi_systab.h" #include "fwts_checksum.h" #include "fwts_smbios.h" #include "fwts_ac_adapter.h" #include "fwts_battery.h" #include "fwts_button.h" #include "fwts_json.h" #include "fwts_ioport.h" #include "fwts_release.h" #include "fwts_pci.h" #endif src/lib/include/fwts_ac_adapter.h000066400000000000000000000022031231470457100173360ustar00rootroot00000000000000/* * Copyright (C) 2012-2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #ifndef __FWTS_AC_ADAPTER_H__ #define __FWTS_AC_ADAPTER_H__ #define FWTS_SYS_CLASS_POWER_SUPPLY "/sys/class/power_supply" #define FWTS_PROC_ACPI_AC_ADAPTER "/proc/acpi/ac_adapter" #define FWTS_AC_ADAPTER_ANY (0x0) #define FWTS_AC_ADAPTER_ONLINE (0x1) #define FWTS_AC_ADAPTER_OFFLINE (0x2) int fwts_ac_adapter_get_state(const int state, int *matching, int *not_matching); #endif src/lib/include/fwts_acpi.h000066400000000000000000000471441231470457100162040ustar00rootroot00000000000000/* * Copyright (C) 2010-2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #ifndef __FWTS_ACPI_H__ #define __FWTS_ACPI_H__ #define FWTS_ACPI_TABLES_PATH "/sys/firmware/acpi/tables" #define FWTS_FACP_UNSPECIFIED (0x00) #define FWTS_FACP_DESKTOP (0x01) #define FWTS_FACP_MOBILE (0x02) #define FWTS_FACP_WORKSTATION (0x03) #define FWTS_FACP_ENTERPRISE_SERVER (0x04) #define FWTS_FACP_SOHO_SERVER (0x05) #define FWTS_FACP_APPLIANCE_PC (0x06) #define FWTS_FACP_PERFORMANCE_SERVER (0x07) #define FWTS_FACP_TABLET (0x08) #define FWTS_FACP_IAPC_BOOT_ARCH_LEGACY_DEVICES (0x0001) #define FWTS_FACP_IAPC_BOOT_ARCH_8042 (0x0002) #define FWTS_FACP_IAPC_BOOT_ARCH_VGA_NOT_PRESENT (0x0004) #define FWTS_FACP_IAPC_BOOT_ARCH_MSI_NOT_SUPPORTED (0x0008) #define FWTS_FACP_IAPC_BOOT_ARCH_PCIE_ASPM_CONTROLS (0x0010) #include "fwts_types.h" #include "fwts_framework.h" #include "fwts_log.h" extern const char *fwts_acpi_fadt_preferred_pm_profile[]; #define FWTS_ACPI_FADT_PREFERRED_PM_PROFILE(x) \ ((x) > 8) ? "Reserved" : fwts_acpi_fadt_preferred_pm_profile[x] /* 5.2.3.1 Generic Address Structure */ typedef struct { uint8_t address_space_id; uint8_t register_bit_width; uint8_t register_bit_offset; uint8_t access_width; uint64_t address; } __attribute__ ((packed)) fwts_acpi_gas; typedef struct { char signature[4]; uint32_t length; uint8_t revision; uint8_t checksum; char oem_id[6]; char oem_tbl_id[8]; uint32_t oem_revision; char creator_id[4]; uint32_t creator_revision; } __attribute__ ((packed)) fwts_acpi_table_header; typedef struct { fwts_acpi_table_header header; uint8_t cmos_index; uint8_t reserved[3]; } __attribute__ ((packed)) fwts_acpi_table_boot; typedef struct { fwts_acpi_table_header header; uint32_t boot_error_region_length; uint64_t boot_error_region; } __attribute__ ((packed)) fwts_acpi_table_bert; typedef struct { uint8_t type; uint8_t length; uint8_t processor_id; uint8_t processor_eid; uint32_t polling_interval; } __attribute__ ((packed)) fwts_acpi_cpep_processor_info; typedef struct { fwts_acpi_table_header header; uint8_t reserved[8]; fwts_acpi_cpep_processor_info cpep_info[0]; } __attribute__ ((packed)) fwts_acpi_table_cpep; typedef struct { fwts_acpi_table_header header; fwts_acpi_gas ec_control; fwts_acpi_gas ec_data; uint32_t uid; uint8_t gpe_bit; uint8_t ec_id[0]; } __attribute__ ((packed)) fwts_acpi_table_ecdt; typedef enum { FWTS_BOOT_REGISTER_PNPOS = 0x01, FWTS_BOOT_REGISTER_BOOTING = 0x02, FWTS_BOOT_REGISTER_DIAG = 0x04, FWTS_BOOT_REGISTER_SUPPRESS_BOOT_DISPLAY = 0x08, FWTS_BOOT_REGISTER_PARITY = 0x80 } ftws_acpi_cmos_boot_register; typedef struct { char signature[4]; uint32_t length; uint32_t hardware_signature; uint32_t firmware_waking_vector; uint32_t global_lock; uint32_t flags; uint64_t x_firmware_waking_vector; uint8_t version; uint8_t reserved[3]; uint32_t ospm_flags; uint8_t reserved2[24]; } __attribute__ ((packed)) fwts_acpi_table_facs; typedef struct { char signature[8]; uint8_t checksum; char oem_id[6]; uint8_t revision; uint32_t rsdt_address; uint32_t length; uint64_t xsdt_address; uint8_t extended_checksum; uint8_t reserved[3]; } __attribute__ ((packed)) fwts_acpi_table_rsdp; typedef struct { fwts_acpi_table_header header; uint64_t entries[0]; } __attribute__ ((packed)) fwts_acpi_table_xsdt; typedef struct { fwts_acpi_table_header header; uint32_t entries[0]; } __attribute__ ((packed)) fwts_acpi_table_rsdt; typedef struct { fwts_acpi_table_header header; uint32_t warning_energy_level; uint32_t low_energy_level; uint32_t critical_energy_level; } __attribute__ ((packed)) fwts_acpi_table_sbst; /* * From ACPI Spec, section 5.2.9 Fixed ACPI Description Field */ typedef struct { fwts_acpi_table_header header; uint32_t firmware_control; uint32_t dsdt; uint8_t reserved; uint8_t preferred_pm_profile; uint16_t sci_int; uint32_t smi_cmd; uint8_t acpi_enable; uint8_t acpi_disable; uint8_t s4bios_req; uint8_t pstate_cnt; uint32_t pm1a_evt_blk; uint32_t pm1b_evt_blk; uint32_t pm1a_cnt_blk; uint32_t pm1b_cnt_blk; uint32_t pm2_cnt_blk; uint32_t pm_tmr_blk; uint32_t gpe0_blk; uint32_t gpe1_blk; uint8_t pm1_evt_len; uint8_t pm1_cnt_len; uint8_t pm2_cnt_len; uint8_t pm_tmr_len; uint8_t gpe0_blk_len; uint8_t gpe1_blk_len; uint8_t gpe1_base; uint8_t cst_cnt; uint16_t p_lvl2_lat; uint16_t p_lvl3_lat; uint16_t flush_size; uint16_t flush_stride; uint8_t duty_offset; uint8_t duty_width; uint8_t day_alrm; uint8_t mon_alrm; uint8_t century; uint16_t iapc_boot_arch; uint8_t reserved1; uint32_t flags; fwts_acpi_gas reset_reg; uint8_t reset_value; uint8_t reserved2[3]; uint64_t x_firmware_ctrl; uint64_t x_dsdt; fwts_acpi_gas x_pm1a_evt_blk; fwts_acpi_gas x_pm1b_evt_blk; fwts_acpi_gas x_pm1a_cnt_blk; fwts_acpi_gas x_pm1b_cnt_blk; fwts_acpi_gas x_pm2_cnt_blk; fwts_acpi_gas x_pm_tmr_blk; fwts_acpi_gas x_gpe0_blk; fwts_acpi_gas x_gpe1_blk; fwts_acpi_gas sleep_control_reg; fwts_acpi_gas sleep_status_reg; } __attribute__ ((packed)) fwts_acpi_table_fadt; typedef struct { uint64_t base_address; uint16_t pci_segment_group_number; uint8_t start_bus_number; uint8_t end_bus_number; uint8_t reserved[4]; } __attribute__ ((packed)) fwts_acpi_mcfg_configuration; typedef struct { fwts_acpi_table_header header; uint64_t reserved; fwts_acpi_mcfg_configuration configuration[0]; } __attribute__ ((packed)) fwts_acpi_table_mcfg; typedef struct { fwts_acpi_table_header header; uint64_t num_of_system_localities; /* matrix follows */ } __attribute__ ((packed)) fwts_acpi_table_slit; typedef struct { fwts_acpi_table_header header; uint32_t reserved1; uint64_t reserved2; } __attribute__ ((packed)) fwts_acpi_table_srat; typedef struct { uint8_t type; uint8_t length; uint8_t proximity_domain_0; uint8_t apic_id; uint32_t flags; uint8_t local_sapic_eid; uint8_t proximity_domain_1; uint8_t proximity_domain_2; uint8_t proximity_domain_3; uint32_t clock_domain; } __attribute__ ((packed)) fwts_acpi_table_slit_local_apic_sapic_affinity; typedef struct { uint8_t type; uint8_t length; uint32_t proximity_domain; uint16_t reserved1; uint32_t base_addr_lo; uint32_t base_addr_hi; uint32_t length_lo; uint32_t length_hi; uint32_t reserved2; uint32_t flags; uint64_t reserved3; } __attribute__ ((packed)) fwts_acpi_table_slit_memory_affinity; typedef struct { uint8_t type; uint8_t length; uint16_t reserved1; uint32_t proximity_domain; uint32_t x2apic_id; uint32_t flags; uint32_t clock_domain; uint32_t reserved2; } __attribute__ ((packed)) fwts_acpi_table_slit_local_x2apic_affinity; /* from 3.2.4 The ACPI 2.0 HPET Description Table (HPET) http://www.intel.com/hardwaredesign/hpetspec_1.pdf */ typedef struct { fwts_acpi_table_header header; uint32_t event_timer_block_id; fwts_acpi_gas base_address; uint8_t hpet_number; uint16_t main_counter_minimum; uint8_t page_prot_and_oem_attribute; } __attribute__ ((packed)) fwts_acpi_table_hpet; typedef struct { uint8_t serialization_action; uint8_t instruction; uint8_t flags; uint8_t reserved; fwts_acpi_gas register_region; uint64_t value; uint64_t mask; } __attribute__ ((packed)) fwts_acpi_serialization_instruction_entries; typedef struct { fwts_acpi_table_header header; uint32_t serialization_header_size; uint32_t reserved; uint32_t instruction_entry_count; fwts_acpi_serialization_instruction_entries entries[0]; } __attribute__ ((packed)) fwts_acpi_table_erst; /* MADT, Section 5.2.12 of ACPI spec, Multiple APIC Description Table */ typedef struct { uint8_t type; uint8_t length; } __attribute__ ((packed)) fwts_acpi_madt_sub_table_header; typedef struct { fwts_acpi_table_header header; uint32_t lapic_address; uint32_t flags; } __attribute__ ((packed)) fwts_acpi_table_madt; typedef enum { FWTS_ACPI_MADT_LOCAL_APIC = 0, FWTS_ACPI_MADT_IO_APIC, FWTS_ACPI_MADT_INTERRUPT_OVERRIDE, FWTS_ACPI_MADT_NMI_SOURCE, FWTS_ACPI_MADT_LOCAL_APIC_NMI, FWTS_ACPI_MADT_LOCAL_APIC_OVERRIDE, FWTS_ACPI_MADT_IO_SAPIC, FWTS_ACPI_MADT_LOCAL_SAPIC, FWTS_ACPI_MADT_INTERRUPT_SOURCE, FWTS_ACPI_MADT_LOCAL_X2APIC, FWTS_ACPI_MADT_LOCAL_X2APIC_NMI, FWTS_ACPI_MADT_RESERVED } fwts_acpi_madt_type; typedef struct { uint8_t acpi_processor_id; uint8_t apic_id; uint32_t flags; } __attribute__ ((packed)) fwts_acpi_madt_processor_local_apic; typedef struct { uint8_t io_apic_id; uint8_t reserved; uint32_t io_apic_phys_address; uint32_t global_irq_base; } __attribute__ ((packed)) fwts_acpi_madt_io_apic; typedef struct { uint8_t bus; uint8_t source; uint32_t gsi; uint16_t flags; } __attribute__ ((packed)) fwts_acpi_madt_interrupt_override; typedef struct { uint16_t flags; uint32_t gsi; } __attribute__ ((packed)) fwts_acpi_madt_nmi; typedef struct { uint8_t acpi_processor_id; uint16_t flags; uint8_t local_apic_lint; } __attribute__ ((packed)) fwts_acpi_madt_local_apic_nmi; typedef struct { uint16_t reserved; uint64_t address; } __attribute__ ((packed)) fwts_acpi_madt_local_apic_addr_override; typedef struct { uint8_t io_sapic_id; uint8_t reserved; uint32_t gsi; uint64_t address; } __attribute__ ((packed)) fwts_acpi_madt_io_sapic; typedef struct { uint8_t acpi_processor_id; uint8_t local_sapic_id; uint8_t local_sapic_eid; uint8_t reserved; uint32_t flags; uint32_t uid_value; char uid_string[0]; } __attribute__ ((packed)) fwts_acpi_madt_local_sapic; typedef struct { uint16_t flags; uint8_t type; uint8_t processor_id; uint8_t processor_eid; uint8_t io_sapic_vector; uint32_t gsi; uint32_t pis_flags; } __attribute__ ((packed)) fwts_acpi_madt_platform_int_source; typedef struct { uint16_t reserved; uint32_t x2apic_id; uint32_t flags; uint32_t processor_uid; } __attribute__ ((packed)) fwts_acpi_madt_local_x2apic; typedef struct { uint16_t flags; uint32_t processor_uid; uint8_t local_x2apic_lint; uint8_t reserved[3]; } __attribute__ ((packed)) fwts_acpi_madt_local_x2apic_nmi; /* New in ACPI 5.0, GIC, section 5.2.12.14 */ typedef struct { uint8_t reserved[2]; uint32_t gic_id; uint32_t processor_uid; uint32_t flags; uint32_t parking_protocol_version; uint32_t performance_interrupt_gsiv; uint64_t parked_address; uint64_t physical_base_address; } __attribute__ ((packed)) fwts_acpi_madt_gic; /* New in ACPI 5.0, GICD, section 5.2.12.15 */ typedef struct { uint8_t reserved[2]; uint32_t gic_id; uint64_t physical_base_address; uint32_t system_vector_base; uint32_t reserved2; } __attribute__ ((packed)) fwts_acpi_madt_gicd; /* From http://www.kuro5hin.org/story/2002/10/27/16622/530, and also http://www.cl.cam.ac.uk/~rja14/tcpa-faq.html */ typedef struct { fwts_acpi_table_header header; uint16_t reserved; uint32_t log_zone_length; uint64_t log_zone_addr; } __attribute__ ((packed)) fwts_acpi_table_tcpa; /* Following ASF definitions from http://dmtf.org/documents/asf/alert-standard-format-asf-specification-200 */ typedef struct { uint8_t type; uint8_t reserved; uint16_t length; } __attribute__ ((packed)) fwts_acpi_table_asf_header; typedef struct { uint8_t watchdog_reset_value; uint8_t min_sensor_poll_wait_time; uint16_t id; uint32_t iana_id; uint8_t flags; uint8_t reserved1; uint8_t reserved2; uint8_t reserved3; } __attribute__ ((packed)) fwts_acpi_table_asf_info; typedef struct { uint8_t device_addr; uint8_t command; uint8_t data_mask; uint8_t compare_value; uint8_t sensor_type; uint8_t event_type; uint8_t event_offset; uint8_t event_source_type; uint8_t event_severity; uint8_t sensor_number; uint8_t entity; uint8_t entity_instance; } __attribute__ ((packed)) fwts_acpi_table_asf_alrt_element; typedef struct { uint8_t assertion_mask; uint8_t deassertion_mask; uint8_t number_of_alerts; uint8_t array_length; uint8_t device_length[0]; } __attribute__ ((packed)) fwts_acpi_table_asf_alrt; typedef struct { uint8_t control_function; uint8_t control_device_addr; uint8_t control_command; uint8_t control_value; } __attribute__ ((packed)) fwts_acpi_table_asf_rctl_element; typedef struct { uint8_t number_of_controls; uint8_t array_element_length; uint16_t reserved; fwts_acpi_table_asf_rctl_element elements[0]; } __attribute__ ((packed)) fwts_acpi_table_asf_rctl; typedef struct { uint8_t remote_control_capabilities[7]; uint8_t rcmp_completion_code; uint8_t rcmp_iana[4]; uint8_t rcmp_special_command; uint8_t rcmp_special_command_param[2]; uint8_t rcmp_boot_options[2]; uint8_t rcmp_oem_parameters[2]; } __attribute__ ((packed)) fwts_acpi_table_asf_rcmp; typedef struct { uint8_t fixed_smbus_addr; } __attribute__ ((packed)) fwts_acpi_table_asf_addr_element; typedef struct { uint8_t seeprom_addr; uint8_t number_of_devices; uint8_t fwts_acpi_table_asf_addr_element[0]; } __attribute__ ((packed)) fwts_acpi_table_asf_addr; /* * DMAR * See http://download.intel.com/technology/computing/vptech/Intel(r)_VT_for_Direct_IO.pdf */ typedef struct { fwts_acpi_table_header header; uint8_t host_addr_width; uint8_t flags; uint8_t reserved[10]; } __attribute__ ((packed)) fwts_acpi_table_dmar; typedef struct { uint16_t type; uint16_t length; } __attribute__ ((packed)) fwts_acpi_table_dmar_header; /* DMA remapping hardware unit definition structure */ typedef struct { fwts_acpi_table_dmar_header header; uint8_t flags; uint8_t reserved; uint16_t segment_number; uint64_t register_base_addr; uint8_t device_scope[0]; } __attribute__ ((packed)) fwts_acpi_table_dmar_hardware_unit; /* Reserved Memory Defininition */ typedef struct { fwts_acpi_table_dmar_header header; uint16_t reserved; uint16_t segment; uint64_t base_address; uint64_t end_address; } __attribute__ ((packed)) fwts_acpi_table_dmar_reserved_memory; /* Root Port ATS capability reporting structure */ typedef struct { fwts_acpi_table_dmar_header header; uint8_t flags; uint8_t reserved; uint16_t segment; } __attribute__ ((packed)) fwts_acpi_table_dmar_atsr; /* DMA remapping device scope entries */ typedef struct { uint8_t type; uint8_t length; uint8_t reserved[2]; uint8_t enumeration_id; uint8_t start_bus_number; uint8_t path[0]; } __attribute__ ((packed)) fwts_acpi_table_dmar_device_scope; /* SLIC, see "OEM Activation 2.0 for Windows Vista Operating Systems" */ typedef struct { uint32_t type; uint32_t length; } __attribute__ ((packed)) fwts_acpi_table_slic_header; typedef struct { fwts_acpi_table_slic_header header; uint8_t key_type; uint8_t version; uint16_t reserved; uint32_t algorithm; uint8_t magic[4]; uint32_t bit_length; uint8_t modulus[128]; } __attribute__ ((packed)) fwts_acpi_table_slic_key; typedef struct { fwts_acpi_table_slic_header header; uint32_t version; uint8_t oem_id[6]; uint8_t oem_table_id[8]; uint8_t windows_flag[8]; uint32_t slic_version; uint8_t reserved[16]; uint8_t signature[128]; } __attribute__ ((packed)) fwts_acpi_table_slic_marker; typedef struct { fwts_acpi_table_header header; uint8_t uuid[16]; uint8_t data[0]; } __attribute__ ((packed)) fwts_acpi_table_uefi; /* 5.2.22 Boot Graphics Resource Table (BGRT) ACPI 5.0 Spec */ typedef struct { uint16_t version; uint8_t status; uint8_t image_type; uint64_t image_addr; uint32_t image_offset_x; uint32_t image_offset_t; } __attribute__ ((packed)) fwts_acpi_table_bgrt; /* 5.2.23 Firmware Performance Data Table (FPDT) ACPI 5.0 spec */ typedef struct { uint16_t type; uint8_t length; uint8_t revision; } __attribute__ ((packed)) fwts_acpi_table_fpdt_header; /* 5.2.23.4 S3 Performance Table Pointer Record */ typedef struct { fwts_acpi_table_fpdt_header fpdt; uint32_t reserved; uint64_t s3pt_addr; } __attribute__ ((packed)) fwts_acpi_table_fpdt_s3_perf_ptr; /* 5.2.23.5 Firmware Basic Boot Performance Pointer Record */ typedef struct { fwts_acpi_table_fpdt_header fpdt; uint32_t reserved; uint64_t fbpt_addr; } __attribute__ ((packed)) fwts_acpi_table_fpdt_basic_boot_perf_ptr; /* 5.2.24 Generic Timer Description Table (GTDT) ACPI 5.0 Spec */ typedef struct { uint64_t phys_addr; uint32_t global_flags; uint32_t secure_PL1_timer_GSIV; uint32_t secure_PL1_timer_flags; uint32_t non_secure_PL1_timer_GSIV; uint32_t non_secure_PL1_timer_flags; uint32_t virtual_timer_GSIV; uint32_t virtual_timer_flags; uint32_t non_secure_PL2_timer_GSIV; uint32_t non_secure_PL2_timer_flags; } __attribute__ ((packed)) fwts_acpi_table_gtdt; /* 5.2.20 ACPI RAS FeatureTable (RASF) */ typedef struct { uint8_t platform_cc_id[12]; } __attribute__ ((packed)) fwts_acpi_table_rasf; /* Section 14.1, Platform Communications Channel Table */ typedef struct { fwts_acpi_table_header header; uint32_t flags; uint8_t reserved[8]; } __attribute__ ((packed)) fwts_acpi_table_pcct; typedef struct { uint8_t type; uint8_t length; } __attribute__ ((packed)) fwts_acpi_table_pcct_subspace_header; typedef struct { fwts_acpi_table_pcct_subspace_header header; uint8_t reserved[6]; uint64_t base_address; uint64_t length; fwts_acpi_gas doorbell_register; uint64_t doorbell_preserve; uint64_t doorbell_write; uint32_t nominal_latency; uint32_t max_periodic_access_rate; uint16_t min_request_turnaround_time; } __attribute__ ((packed)) fwts_acpi_table_pcct_subspace_type_0; typedef struct { fwts_acpi_table_header header; uint8_t interface_type; uint8_t reserved1[3]; fwts_acpi_gas base_address; uint8_t interrupt_type; uint8_t irq; uint32_t gsi; uint8_t baud_rate; uint8_t parity; uint8_t stop_bits; uint8_t flow_control; uint8_t terminal_type; uint8_t reserved2; uint16_t pci_device_id; uint16_t pci_vendor_id; uint8_t pci_bus_number; uint8_t pci_device_number; uint8_t pci_function_number; uint32_t pci_flags; uint8_t pci_segment; uint32_t reserved3; } __attribute__ ((packed)) fwts_acpi_table_spcr; typedef struct { fwts_acpi_table_header header; uint8_t interface_type; uint8_t reserved1[3]; fwts_acpi_gas base_address; } __attribute__ ((packed)) fwts_acpi_table_dbgp; typedef struct { fwts_acpi_table_header header; uint32_t info_offset; uint32_t info_count; } __attribute__ ((packed)) fwts_acpi_table_dbg2; typedef struct { uint8_t revision; uint16_t length; uint8_t number_of_regs; uint16_t namespace_length; uint16_t namespace_offset; uint16_t oem_data_length; uint16_t oem_data_offset; uint16_t port_type; uint16_t port_subtype; uint16_t reserved; uint16_t base_address_offset; uint16_t address_size_offset; } __attribute__ ((packed)) fwts_acpi_table_dbg2_info; /* * http://www.dmtf.org/standards/published_documents/DSP0256_1.0.0.pdf */ typedef struct { fwts_acpi_table_header header; uint8_t interface_type; uint8_t protocol_identifier; uint64_t protocol_data; uint8_t interrupt_type; uint8_t gpe; uint8_t pci_device_flag; uint32_t global_system_interrupt; fwts_acpi_gas base_address; uint8_t pci_segment_group_number; uint8_t pci_bus_number; uint8_t pci_device_number; uint8_t pci_function_number; } __attribute__ ((packed)) fwts_acpi_table_mchi; void fwts_acpi_table_get_header(fwts_acpi_table_header *hdr, uint8_t *data); #endif src/lib/include/fwts_acpi_object_eval.h000066400000000000000000000025351231470457100205340ustar00rootroot00000000000000/* * Copyright (C) 2010-2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #ifndef __FWTS_ACPI_METHOD_H__ #define __FWTS_ACPI_METHOD_H__ #include "fwts.h" /* acpica headers */ #include "acpi.h" int fwts_acpi_init(fwts_framework *fw); int fwts_acpi_deinit(fwts_framework *fw); char *fwts_acpi_object_exists(const char *name); fwts_list *fwts_acpi_object_get_names(void); void fwts_acpi_object_dump(fwts_framework *fw, const ACPI_OBJECT *obj); void fwts_acpi_object_evaluate_report_error(fwts_framework *fw, const char *name, const ACPI_STATUS status); ACPI_STATUS fwts_acpi_object_evaluate(fwts_framework *fw, char *name, ACPI_OBJECT_LIST *arg_list, ACPI_BUFFER *buf); #endif src/lib/include/fwts_acpi_tables.h000066400000000000000000000032661231470457100175330ustar00rootroot00000000000000/* * Copyright (C) 2010-2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #ifndef __FWTS_ACPI_TABLES_H__ #define __FWTS_ACPI_TABLES_H__ #include "fwts.h" typedef enum { FWTS_ACPI_TABLE_FROM_FIRMWARE, /* directly from firmware */ FWTS_ACPI_TABLE_FROM_FILE, /* loaded from file, e.g. from acpidump */ FWTS_ACPI_TABLE_FROM_FIXUP, /* auto-generated fixup by fwts */ } fwts_acpi_table_provenance; typedef struct { char name[5]; const void *data; size_t length; int which; uint64_t addr; fwts_acpi_table_provenance provenance; } fwts_acpi_table_info; int fwts_acpi_load_tables(fwts_framework *fw); int fwts_acpi_free_tables(void); int fwts_acpi_find_table(fwts_framework *fw, const char *name, const int which, fwts_acpi_table_info **info); int fwts_acpi_find_table_by_addr(fwts_framework *fw, const uint64_t addr, fwts_acpi_table_info **info); int fwts_acpi_get_table(fwts_framework *fw, const int index, fwts_acpi_table_info **info); uint8_t fwts_acpi_checksum(const uint8_t *data, const int length); #endif src/lib/include/fwts_acpica.h000066400000000000000000000024441231470457100165020ustar00rootroot00000000000000/* * Copyright (C) 2010-2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #ifndef __FWTS_ACPICA_H__ #define __FWTS_ACPICA_H__ #include "fwts.h" typedef void (*fwts_acpica_log_callback)(fwts_framework *fw, const char *buffer); void fwts_acpcia_set_fwts_framework(fwts_framework *fw); int fwts_acpica_init(fwts_framework *fw); int fwts_acpica_deinit(void); fwts_list *fwts_acpica_get_object_names(int type); void fwts_acpica_sem_count_clear(void); void fwts_acpica_sem_count_get(int *acquired, int *released); void fwts_acpi_region_handler_called_set(bool val); bool fwts_acpi_region_handler_called_get(void); #endif src/lib/include/fwts_acpica_mode.h000066400000000000000000000020421231470457100175000ustar00rootroot00000000000000/* * Copyright (C) 2013-2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #ifndef __FWTS_ACPICA_MODE_H__ #define __FWTS_ACPICA_MODE_H__ typedef enum { FWTS_ACPICA_MODE_SERIALIZED = 0x00000001, FWTS_ACPICA_MODE_SLACK = 0x00000002, FWTS_ACPICA_MODE_IGNORE_ERRORS = 0x00000004, FWTS_ACPICA_MODE_DISABLE_AUTO_REPAIR = 0x00000008, } fwts_acpica_mode; #endif src/lib/include/fwts_acpid.h000066400000000000000000000017261231470457100163440ustar00rootroot00000000000000/* * Copyright (C) 2010-2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #ifndef __FWTS_ACPID_H__ #define __FWTS_ACPID_H__ int fwts_acpi_event_open(void); char *fwts_acpi_event_read(const int fd, size_t *length, const int timeout); void fwts_acpi_event_close(const int fd); #endif src/lib/include/fwts_alloc.h000066400000000000000000000020041231470457100163440ustar00rootroot00000000000000/* * Copyright (C) 2011-2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #ifndef __FWTS_ALLOC_H__ #define __FWTS_ALLOC_H__ void *fwts_low_calloc(const size_t nmemb, const size_t size); void *fwts_low_malloc(const size_t size); void *fwts_low_realloc(const void *ptr, const size_t size); void fwts_low_free(const void *ptr); #endif src/lib/include/fwts_args.h000066400000000000000000000031751231470457100162200ustar00rootroot00000000000000/* * Copyright (C) 2011-2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #ifndef __FWTS_ARGS_H__ #define __FWTS_ARGS_H__ #include #include #include #include typedef struct { char *long_name; /* e.g. "quiet", long name */ char *short_name; /* e.g. "q", short help info */ int has_arg; char *explanation; /* explanation: "Enabled quiet mode..." */ } fwts_option; #include "fwts.h" typedef int (*fwts_args_optarg_handler)(fwts_framework *framework, int argc, char * const argv[], int option_char, int long_index); typedef int (*fwts_args_optarg_check)(fwts_framework *framework); int fwts_args_init(void); int fwts_args_add_options(fwts_option *options, fwts_args_optarg_handler handler, fwts_args_optarg_check check); int fwts_args_parse(fwts_framework *fw, const int argc, char * const argv[]); void fwts_args_show_options(void); int fwts_args_free(void); char *fwts_args_comma_list(const char *arg); #endif src/lib/include/fwts_battery.h000066400000000000000000000031411231470457100167270ustar00rootroot00000000000000/* * Copyright (C) 2011-2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #ifndef __FWTS_BATTERY_H__ #define __FWTS_BATTERY_H__ #define FWTS_PROC_ACPI_BATTERY "/proc/acpi/battery" #define FWTS_BATTERY_DESIGN_CAPACITY (0x00) #define FWTS_BATTERY_REMAINING_CAPACITY (0x01) #define FWTS_BATTERY_ALL (-1) int fwts_battery_get_count(fwts_framework *fw, int *count); int fwts_battery_get_cycle_count(fwts_framework *fw, const int index, int *cycle_count); bool fwts_battery_check_trip_point_support(fwts_framework *fw, const int index); int fwts_battery_set_trip_point(fwts_framework *fw, const int index, const int trip_point); int fwts_battery_get_trip_point(fwts_framework *fw, const int index, int *trip_point); int fwts_battery_get_capacity(fwts_framework *fw, const int type, const int index, uint32_t *capacity_mAh, uint32_t *capacity_mWh); int fwts_battery_get_name(fwts_framework *fw, const int index, char *name); #endif src/lib/include/fwts_binpaths.h000066400000000000000000000020671231470457100170730ustar00rootroot00000000000000/* * Copyright (C) 2010-2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #ifndef __FWTS_BINPATHS_H__ #define __FWTS_BINPATHS_H__ #define FWTS_LSPCI_PATH "/usr/bin/lspci" #define FWTS_DMIDECODE_PATH "/usr/sbin/dmidecode" #define FWTS_IASL_PATH "/usr/bin/iasl" #include "fwts_framework.h" int fwts_check_executable(fwts_framework *fw, const char *path, const char *name); #endif src/lib/include/fwts_button.h000066400000000000000000000021061231470457100165700ustar00rootroot00000000000000/* * Copyright (C) 2011-2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #ifndef __FWTS_BUTTON_H__ #define __FWTS_BUTTON_H__ #define FWTS_BUTTON_LID_ANY (0x0000) #define FWTS_BUTTON_LID_OPENED (0x0001) #define FWTS_BUTTON_LID_CLOSED (0x0002) #define FWTS_BUTTON_POWER_EXISTS (0x00010) int fwts_button_match_state(fwts_framework *fw, const int button, int *matched, int *not_matched); #endif src/lib/include/fwts_checkeuid.h000066400000000000000000000016401231470457100172030ustar00rootroot00000000000000/* * Copyright (C) 2010-2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #ifndef __FWTS_CHECKEUID_H__ #define __FWTS_CHECKEUID_H__ #include "fwts_framework.h" int fwts_check_root_euid(fwts_framework *fw, const bool warn); #endif src/lib/include/fwts_checksum.h000066400000000000000000000016231231470457100170620ustar00rootroot00000000000000/* * Copyright (C) 2010-2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #ifndef __FWTS_CHECKSUM_H__ #define __FWTS_CHECKSUM_H__ #include "fwts.h" uint8_t fwts_checksum(const uint8_t *data, const int length); #endif src/lib/include/fwts_cmos.h000066400000000000000000000016341231470457100162230ustar00rootroot00000000000000/* * Copyright (C) 2010-2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #ifndef __FWTS_CMOS_H__ #define __FWTS_CMOS_H__ #include #include int fwts_cmos_read(const uint8_t offset, uint8_t *value); #endif src/lib/include/fwts_cpu.h000066400000000000000000000031451231470457100160500ustar00rootroot00000000000000/* * Copyright (C) 2010-2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #ifndef __FWTS_CPU_H__ #define __FWTS_CPU_H__ #include "fwts_framework.h" #include typedef struct cpuinfo_x86 { char *vendor_id; /* Vendor ID */ int x86; /* CPU family */ int x86_model; /* Model */ char *model_name; /* Model name */ int stepping; /* Stepping */ char *flags; /* String containing flags */ } fwts_cpuinfo_x86; int fwts_cpu_readmsr(const int cpu, const uint32_t reg, uint64_t *val); int fwts_cpu_is_Intel(bool *is_intel); int fwts_cpu_is_AMD(bool *is_amd); int fwts_cpu_has_c1e(void); fwts_cpuinfo_x86 *fwts_cpu_get_info(const int which_cpu); void fwts_cpu_free_info(fwts_cpuinfo_x86 *cpu); int fwts_cpu_enumerate(void); int fwts_cpu_consume(const int seconds); int fwts_cpu_consume_start(void); void fwts_cpu_consume_complete(void); int fwts_cpu_performance(fwts_framework *fw, const int cpu, uint64_t *loop_count); #endif src/lib/include/fwts_dump.h000066400000000000000000000015651231470457100162320ustar00rootroot00000000000000/* * Copyright (C) 2010-2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #ifndef __FWTS_DUMP_H__ #define __FWTS_DUMP_H__ #include "fwts.h" int fwts_dump_info(fwts_framework *fw); #endif src/lib/include/fwts_dump_data.h000066400000000000000000000017121231470457100172150ustar00rootroot00000000000000/* * Copyright (C) 2010-2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #ifndef __FWTS_DUMP_DATA_H__ #define __FWTS_DUMP_DATA_H__ #include "fwts.h" void fwts_dump_raw_data(char *buffer, const size_t len, const uint8_t *data, const int where, const size_t bytes); #endif src/lib/include/fwts_ebda.h000066400000000000000000000015551231470457100161570ustar00rootroot00000000000000/* * Copyright (C) 2011-2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #ifndef __FWTS_EBDA_H__ #define __FWTS_EBDA_H__ #include off_t fwts_ebda_get(void); #endif src/lib/include/fwts_efi_module.h000066400000000000000000000016741231470457100173760ustar00rootroot00000000000000/* * Copyright (C) 2012-2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #ifndef __FWTS_EFI_MODULE_H__ #define __FWTS_EFI_MODULE_H__ int fwts_lib_efi_runtime_load_module(fwts_framework *fw); int fwts_lib_efi_runtime_unload_module(fwts_framework *fw); #endif src/lib/include/fwts_fileio.h000066400000000000000000000016551231470457100165340ustar00rootroot00000000000000/* * Copyright (C) 2010-2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #ifndef __FWTS_FILEIO_H__ #define __FWTS_FILEIO_H__ #include fwts_list* fwts_file_read(FILE *fp); fwts_list* fwts_file_open_and_read(const char *file); #endif src/lib/include/fwts_firmware.h000066400000000000000000000017241231470457100170760ustar00rootroot00000000000000/* * Copyright (C) 2010-2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ #ifndef __FWTS_FIRMWARE_H__ #define __FWTS_FIRMWARE_H__ enum { FWTS_FIRMWARE_UNKNOWN = 0, FWTS_FIRMWARE_BIOS = 1, FWTS_FIRMWARE_UEFI = 2, FWTS_FIRMWARE_OTHER = 100, }; int fwts_firmware_detect(void); #endif src/lib/include/fwts_formatting.h000066400000000000000000000016361231470457100174360ustar00rootroot00000000000000/* * Copyright (C) 2010-2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #ifndef __FWTS_FORMATTING_H__ #define __FWTS_FORMATTING_H__ #include "fwts_list.h" fwts_list *fwts_format_text(const char *text, const int width); #endif src/lib/include/fwts_framework.h000066400000000000000000000225021231470457100172540ustar00rootroot00000000000000/* * Copyright (C) 2010-2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #ifndef __FWTS_FRAMEWORK_H__ #define __FWTS_FRAMEWORK_H__ #include #include #include #include "fwts_log.h" #include "fwts_list.h" #include "fwts_acpica_mode.h" #define FWTS_FRAMEWORK_MAGIC 0x2af61aec typedef enum { FWTS_FLAG_DEFAULT = 0x00000000, FWTS_FLAG_STDOUT_SUMMARY = 0x00000001, FWTS_FLAG_SHOW_PROGRESS = 0x00000002, FWTS_FLAG_FORCE_CLEAN = 0x00000004, FWTS_FLAG_SHOW_TESTS = 0x00000008, FWTS_FLAG_SHOW_PROGRESS_DIALOG = 0x00000010, FWTS_FLAG_ACPICA_DEBUG = 0x00000020, FWTS_FLAG_BATCH = 0x00001000, FWTS_FLAG_INTERACTIVE = 0x00002000, FWTS_FLAG_BATCH_EXPERIMENTAL = 0x00004000, FWTS_FLAG_INTERACTIVE_EXPERIMENTAL = 0x00008000, FWTS_FLAG_POWER_STATES = 0x00010000, FWTS_FLAG_ROOT_PRIV = 0x00020000, FWTS_FLAG_UNSAFE = 0x00040000, FWTS_FLAG_TEST_BIOS = 0x01000000, FWTS_FLAG_TEST_UEFI = 0x02000000, FWTS_FLAG_TEST_ACPI = 0x04000000, FWTS_FLAG_UTILS = 0x08000000, FWTS_FLAG_QUIET = 0x10000000, FWTS_FLAG_SHOW_TESTS_FULL = 0x20000000, } fwts_framework_flags; #define FWTS_FLAG_TEST_MASK \ (FWTS_FLAG_TEST_BIOS | \ FWTS_FLAG_TEST_UEFI | \ FWTS_FLAG_TEST_ACPI) /* * Test results */ typedef struct { uint32_t passed; uint32_t failed; uint32_t aborted; uint32_t warning; uint32_t skipped; uint32_t infoonly; } fwts_results; /* * Where to schedule a test, priority sorted lowest first, highest last */ typedef enum { FWTS_TEST_FIRST = 0, FWTS_TEST_EARLY = 1, FWTS_TEST_ANYTIME = 2, FWTS_TEST_LATE = 3, FWTS_TEST_LAST = 4 } fwts_priority; static inline void fwts_results_zero(fwts_results *results) { memset(results, 0, sizeof(fwts_results)); } static inline void fwts_framework_summate_results(fwts_results *total, fwts_results *increment) { total->aborted += increment->aborted; total->failed += increment->failed; total->passed += increment->passed; total->warning += increment->warning; total->skipped += increment->skipped; total->infoonly += increment->infoonly; } /* * Test framework context */ typedef struct { uint32_t magic; /* identify struct magic */ fwts_log *results; /* log for test results */ char *results_logname; /* filename of results log */ char *lspci; /* path to lspci */ char *acpi_table_path; /* path to raw ACPI tables */ char *acpi_table_acpidump_file; /* path to ACPI dump file */ char *klog; /* path to dump of kernel log */ char *json_data_path; /* path to application json data files, e.g. json klog data */ fwts_framework_flags flags; int current_minor_test_num; /* Nth minor test being run in a test module */ const char *current_minor_test_name; /* Name of current minor test being run */ int current_major_test_num; /* Nth major test being currently run */ int major_tests_total; /* Total number of major tests */ struct fwts_framework_test *current_major_test; /* current test */ fwts_results minor_tests; /* results for each minor test */ fwts_results total; /* totals over all tests */ uint32_t total_run; /* total number of major tests run */ int minor_test_progress; /* Percentage completion of current test */ bool print_summary; /* Print summary of results at end of test runs */ fwts_log_level failed_level; /* Bit mask of failed levels in test run */ int firmware_type; /* Type of firmware */ bool show_progress; /* Show progress while running current test */ fwts_log_type log_type; /* Output log type, default is plain text ASCII */ fwts_list errors_filter_keep; /* Results to keep, empty = keep all */ fwts_list errors_filter_discard; /* Results to discard, empty = discard none */ bool error_filtered_out; /* True if a klog message has been filtered out */ fwts_acpica_mode acpica_mode; /* ACPICA mode flags */ void *rsdp; /* ACPI RSDP address */ } fwts_framework; typedef struct { char *opt; /* option */ char *info; /* what it does */ } fwts_syntax_info; typedef int (*fwts_framework_minor_test_func)(fwts_framework *framework); typedef struct { fwts_framework_minor_test_func test_func;/* Minor test to run */ const char *name; /* Name of minor test */ } fwts_framework_minor_test; #include "fwts_args.h" typedef struct fwts_framework_ops { char *description; /* description of test */ int (*init)(fwts_framework *); /* Initialise */ int (*deinit)(fwts_framework *); /* De-init */ int (*getopts)(fwts_framework *, int argc, char **argv); /* Arg handling */ fwts_option *options; fwts_args_optarg_handler options_handler; fwts_args_optarg_check options_check; fwts_framework_minor_test *minor_tests; /* NULL terminated array of minor tests to run */ int total_tests; /* Number of tests to run */ } fwts_framework_ops; typedef struct fwts_framework_test { const char *name; fwts_framework_ops *ops; fwts_priority priority; fwts_framework_flags flags; fwts_results results; /* Per test results */ bool was_run; } fwts_framework_test; int fwts_framework_args(const int argc, char **argv); void fwts_framework_test_add(const char *name, fwts_framework_ops *ops, const fwts_priority priority, const fwts_framework_flags flags); int fwts_framework_compare_test_name(void *, void *); void fwts_framework_show_version(FILE *fp, const char *name); void fwts_framework_passed(fwts_framework *, const char *fmt, ...) __attribute__((format(printf, 2, 3))); void fwts_framework_failed(fwts_framework *, fwts_log_level level, const char *fmt, ...) __attribute__((format(printf, 3, 4))); void fwts_framework_warning(fwts_framework *, const char *fmt, ...) __attribute__((format(printf, 2, 3))); void fwts_framework_advice(fwts_framework *, const char *fmt, ...) __attribute__((format(printf, 2, 3))); void fwts_framework_skipped(fwts_framework *, const char *fmt, ...) __attribute__((format(printf, 2, 3))); void fwts_framework_aborted(fwts_framework *, const char *fmt, ...) __attribute__((format(printf, 2, 3))); void fwts_framework_infoonly(fwts_framework *fw); void fwts_framework_minor_test_progress(fwts_framework *fw, const int percent, const char *message); void fwts_error_inc(fwts_framework *fw, const char *label, int *count); void fwts_framework_log(fwts_framework *fw, fwts_log_field field, const char *label, fwts_log_level level, uint32_t *count, const char *fmt, ...) __attribute__((format(printf, 6, 7))); #define fwts_progress(fw, percent) fwts_framework_minor_test_progress(fw, percent, "") #define fwts_progress_message(fw, percent, message) \ fwts_framework_minor_test_progress(fw, percent, message); /* Helpers to report tests results */ #define fwts_passed(fw, fmt, args...) \ fwts_framework_log(fw, LOG_PASSED, NULL, LOG_LEVEL_NONE, &fw->minor_tests.passed, fmt, ## args) #define fwts_failed(fw, level, label, fmt, args...) \ fwts_framework_log(fw, LOG_FAILED, label, level, &fw->minor_tests.failed, fmt, ## args) #define fwts_warning(fw, fmt, args...) \ fwts_framework_log(fw, LOG_WARNING, NULL, LOG_LEVEL_MEDIUM, &fw->minor_tests.warning, fmt, ## args) #define fwts_advice(fw, fmt, args...) \ fwts_framework_log(fw, LOG_ADVICE, NULL, LOG_LEVEL_NONE, NULL, fmt, ## args) #define fwts_skipped(fw, fmt, args...) \ fwts_framework_log(fw, LOG_SKIPPED, NULL, LOG_LEVEL_MEDIUM, &fw->minor_tests.skipped, fmt, ## args) #define fwts_aborted(fw, fmt, args...) \ fwts_framework_log(fw, LOG_ABORTED, NULL, LOG_LEVEL_MEDIUM, &fw->minor_tests.aborted, fmt, ## args) #define fwts_infoonly(fw) \ fwts_framework_log(fw, LOG_INFOONLY, NULL, LOG_LEVEL_NONE, &fw->minor_tests.infoonly, NULL) static inline int fwts_tests_passed(const fwts_framework *fw) { return ((fw->minor_tests.failed + fw->minor_tests.warning + fw->minor_tests.aborted) == 0); } /* * Batch (run w/o interaction) or interactive (requires user interaction) flags */ #define FWTS_TEST_INTERACTIVE(flags) \ (flags & (FWTS_FLAG_INTERACTIVE | \ FWTS_FLAG_INTERACTIVE_EXPERIMENTAL)) #define FWTS_ARRAY_LEN(s) (sizeof(s)/sizeof(s[0])) /* * FWTS_ASSERT(test, message) * compile time assertion that throws a division by zero * error to stop compilation if condition "test" is not true. * See http://www.pixelbeat.org/programming/gcc/static_assert.html * */ #define FWTS_CONCAT(a, b) a ## b #define FWTS_CONCAT_EXPAND(a,b) FWTS_CONCAT(a, b) #define FWTS_ASSERT(e, m) \ enum { FWTS_CONCAT_EXPAND(FWTS_ASSERT_ ## m ## _in_line_, __LINE__) = 1 / !!(e) } #define FWTS_REGISTER(name, ops, priority, flags) \ /* Ensure name is not too long */ \ FWTS_ASSERT(FWTS_ARRAY_LEN(name) < 16, \ fwts_register_name_too_long); \ \ static void __test_init (void) __attribute__ ((constructor)); \ \ static void __test_init (void) \ { \ fwts_framework_test_add(name, ops, priority, flags); \ } #endif src/lib/include/fwts_get.h000066400000000000000000000016361231470457100160430ustar00rootroot00000000000000/* * Copyright (C) 2010-2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #ifndef __FWTS_GET_H__ #define __FWTS_GET_H__ #include char *fwts_get(const char *file); int fwts_get_int(const char *file, int *value); #endif src/lib/include/fwts_gpe.h000066400000000000000000000027061231470457100160360ustar00rootroot00000000000000/* * Copyright (C) 2010-2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #ifndef __FWTS_GPE_H__ #define __FWTS_GPE_H__ #include #include #include #include #include #include #define FWTS_GPE_PATH "/sys/firmware/acpi/interrupts" typedef struct { char *name; int count; } fwts_gpe; void fwts_gpe_free(fwts_gpe *gpe, const int count); int fwts_gpe_read(fwts_gpe **gpes); int fwts_gpe_delta(int **gpe_delta, const fwts_gpe *start, const fwts_gpe *end, const int n); int fwts_gpe_delta_get(fwts_framework *fw, const fwts_gpe *gpes_start, const fwts_gpe *gpes_end, const int gpe_count, int *sci, int *gpe); void fwts_gpe_test(fwts_framework *fw, const fwts_gpe *start, const fwts_gpe *end, const int n); #endif src/lib/include/fwts_guid.h000066400000000000000000000020261231470457100162060ustar00rootroot00000000000000/* * Copyright (C) 2010-2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #ifndef __FWTS_GUID_H__ #define __FWTS_GUID_H__ #include #include void fwts_guid_buf_to_str(const uint8_t *guid, char *guid_str, const size_t guid_str_len); void fwts_guid_str_to_buf(const char *guid_str, uint8_t *guid, const size_t guid_len); #endif src/lib/include/fwts_helpers.h000066400000000000000000000016441231470457100167250ustar00rootroot00000000000000/* * Copyright (C) 2010-2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #ifndef __FWTS_HELPERS_H__ #define __FWTS_HELPERS_H__ int fwts_get(const char *text, const char *file); int fwts_set(const char *text, const char *file); #endif src/lib/include/fwts_hwinfo.h000066400000000000000000000024511231470457100165520ustar00rootroot00000000000000/* * Copyright (C) 2011-2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #ifndef __FWTS_HWINFO_H__ #define __FWTS_HWINFO_H__ #include "fwts.h" typedef struct { fwts_list network; /* PCI network config */ fwts_list videocard; /* PCI video card config */ fwts_list netdevs; /* Network devices */ fwts_list input; /* Input device config */ fwts_list bluetooth; /* Bluetooth config */ } fwts_hwinfo; int fwts_hwinfo_get(fwts_framework *fw, fwts_hwinfo *hwinfo); void fwts_hwinfo_compare(fwts_framework *fw, fwts_hwinfo *hwinfo1, fwts_hwinfo *hwinfo2, int *differences); int fwts_hwinfo_free(fwts_hwinfo *hwinfo); #endif src/lib/include/fwts_iasl.h000066400000000000000000000022501231470457100162050ustar00rootroot00000000000000/* * Copyright (C) 2010-2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #ifndef __IASL_H__ #define __IASL_H__ #include "fwts.h" int fwts_iasl_disassemble_all_to_file(fwts_framework *fw, const char *path); int fwts_iasl_disassemble(fwts_framework *fw, const char *table, const int which, fwts_list **ias_output); int fwts_iasl_reassemble(fwts_framework *fw, const uint8_t *data, const int len, fwts_list **iasl_disassembly, fwts_list **iasl_stdout, fwts_list **iasl_stderr); #endif src/lib/include/fwts_interactive.h000066400000000000000000000021031231470457100175670ustar00rootroot00000000000000/* * Copyright (C) 2010-2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #ifndef __FWTS_INTERACTIVE_H__ #define __FWTS_INTERACTIVE_H__ #include "fwts_framework.h" int fwts_printf(fwts_framework *fw, const char *fmt, ...) __attribute__((format(printf, 2, 3))); int fwts_press_enter(fwts_framework *fw); int fwts_get_reply(fwts_framework *fw, const char *message, const char *options); #endif src/lib/include/fwts_ioport.h000066400000000000000000000021471231470457100165760ustar00rootroot00000000000000/* * Copyright (C) 2013-2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #ifndef __FWTS_IO_PORT_H__ #define __FWTS_IO_PORT_H__ #include int fwts_inb(uint32_t port, uint8_t *value); int fwts_inw(uint32_t port, uint16_t *value); int fwts_inl(uint32_t port, uint32_t *value); int fwts_outb(uint32_t port, uint8_t value); int fwts_outw(uint32_t port, uint16_t value); int fwts_outl(uint32_t port, uint32_t value); #endif src/lib/include/fwts_json.h000066400000000000000000000022131231470457100162250ustar00rootroot00000000000000/* * Copyright (C) 2012-2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #ifndef __FWTS_JSON_H__ #define __FWTS_JSON_H__ #include #define __FWTS_JSON_ERR_PTR__ ((json_object*) -1) /* * Older versions of json-c may return an error in an * object as a ((json_object*)-1), where as newer * versions return NULL, so check for these. Sigh. */ #define FWTS_JSON_ERROR(ptr) \ ( (ptr == NULL) || ((json_object*)ptr == __FWTS_JSON_ERR_PTR__) ) #endif src/lib/include/fwts_keymap.h000066400000000000000000000021531231470457100165450ustar00rootroot00000000000000/* * Copyright (C) 2010-2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #ifndef __FWTS_KEYMAP_H__ #define __FWTS_KEYMAP_H__ #define FWTS_KEYMAP_PATH "/lib/udev/keymaps" typedef struct { int scancode; char *keyname; char *keytext; } fwts_keycode; void fwts_keymap_free(fwts_list *keylist); fwts_list *fwts_keymap_load(const char *machine); fwts_keycode *fwts_keymap_find_scancode(fwts_list *keymap, const int scancode); #endif src/lib/include/fwts_klog.h000066400000000000000000000045561231470457100162240ustar00rootroot00000000000000/* * Copyright (C) 2010-2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #ifndef __FWTS_KLOG_H__ #define __FWTS_KLOG_H__ #include #include #include "fwts_list.h" #include "fwts_framework.h" #include "fwts_log.h" #define KERN_WARNING 0x00000001 #define KERN_ERROR 0x00000002 typedef enum { FWTS_COMPARE_REGEX = 'r', FWTS_COMPARE_STRING = 's', FWTS_COMPARE_UNKNOWN = 'u', } fwts_compare_mode; typedef struct { fwts_compare_mode compare_mode; fwts_log_level level; const char *pattern; const char *advice; char *label; pcre *re; pcre_extra *extra; } fwts_klog_pattern; typedef void (*fwts_klog_progress_func)(fwts_framework *fw, int percent); typedef void (*fwts_klog_scan_func)(fwts_framework *fw, char *line, int repeated, char *prevline, void *private, int *errors); int fwts_klog_scan(fwts_framework *fw, fwts_list *klog, fwts_klog_scan_func callback, fwts_klog_progress_func progress, void *private, int *errors); void fwts_klog_scan_patterns(fwts_framework *fw, char *line, int repeated, char *prevline, void *private, int *errors); fwts_list *fwts_klog_read(void); fwts_list *fwts_klog_find_changes(fwts_list *klog_old, fwts_list *klog_new); void fwts_klog_free(fwts_list *list); int fwts_klog_firmware_check(fwts_framework *fw, fwts_klog_progress_func progress, fwts_list *klog, int *errors); int fwts_klog_pm_check(fwts_framework *fw, fwts_klog_progress_func progress, fwts_list *klog, int *errors); int fwts_klog_regex_find(fwts_framework *fw, fwts_list *klog, char *pattern); char *fwts_klog_remove_timestamp(char *text); int fwts_klog_write(fwts_framework *fw, const char *msg); #endif src/lib/include/fwts_list.h000066400000000000000000000052771231470457100162440ustar00rootroot00000000000000/* * Copyright (C) 2010-2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #ifndef __FWTS_LIST_H__ #define __FWTS_LIST_H__ #include #include #include typedef struct fwts_list_link { void *data; struct fwts_list_link *next; } fwts_list_link; typedef struct { fwts_list_link *head; fwts_list_link *tail; int len; } fwts_list; typedef void (*fwts_list_link_free)(void *); typedef void (*fwts_list_foreach_callback)(void *data, void *private); typedef int (fwts_list_compare)(void *data1, void *data2); #define FWTS_LIST_INIT { NULL, NULL, 0 } #define fwts_list_foreach(iterator, list) \ for (iterator = (list)->head; iterator != NULL; iterator = iterator->next) #define fwts_list_foreach_continue(iterator) \ for (; iterator != NULL; iterator = iterator->next) #define fwts_list_data(type, link) \ ((type)link->data) #define fwts_list_head(list) \ ((list)->head) #define fwts_list_tail(list) \ ((list)->tail) #define fwts_list_next(link) \ ((link)->next) #define fwts_list_null(list) \ ((list) == NULL) void fwts_list_free_items(fwts_list *list, fwts_list_link_free data_free); void fwts_list_free(fwts_list *list, fwts_list_link_free data_free); void fwts_list_iterate(fwts_list *list, fwts_list_foreach_callback callback, void *private); fwts_list_link *fwts_list_append(fwts_list *list, void *data); fwts_list_link *fwts_list_add_ordered(fwts_list *list, void *new_data, fwts_list_compare compare); /* * fwts_list_init() * initialize a list header */ static inline void fwts_list_init(fwts_list *list) { memset(list, 0, sizeof(fwts_list)); } /* * fwts_list_new() * allocate and initialise a list header, return NULL if failed */ static inline fwts_list *fwts_list_new(void) { /* calloc already zero's the list */ return calloc(1, sizeof(fwts_list)); } /* * fwts_list_len() * return list length, return 0 if list is NULL */ static inline int fwts_list_len(fwts_list *list) { return list ? list->len : 0; } #endif src/lib/include/fwts_log.h000066400000000000000000000157771231470457100160600ustar00rootroot00000000000000/* * Copyright (C) 2010-2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #ifndef __FWTS_LOG_H__ #define __FWTS_LOG_H__ #include #include #include "fwts_list.h" #define LOG_MAGIC (0xfe23ab13) #define LOG_MAX_BUF_SIZE (4096) /* Max output per log line */ typedef enum { LOG_RESULT = 0x00000001, LOG_ERROR = 0x00000002, LOG_WARNING = 0x00000004, LOG_DEBUG = 0x00000008, LOG_INFO = 0x00000010, LOG_SUMMARY = 0x00000020, LOG_SEPARATOR = 0x00000040, LOG_NEWLINE = 0x00000080, LOG_ADVICE = 0x00000100, LOG_HEADING = 0x00000200, LOG_PASSED = 0x00000400, LOG_FAILED = 0x00000800, LOG_SKIPPED = 0x00001000, LOG_ABORTED = 0x00002000, LOG_INFOONLY = 0x00004000, /* no-op */ LOG_FIELD_MASK = 0x0000ffff, LOG_VERBATUM = 0x10000000, LOG_NO_FIELDS = 0x20000000, } fwts_log_field; typedef enum { LOG_LEVEL_NONE = 0x00000000, LOG_LEVEL_CRITICAL = 0x00000001, LOG_LEVEL_HIGH = 0x00000002, LOG_LEVEL_MEDIUM = 0x00000004, LOG_LEVEL_LOW = 0x00000008, LOG_LEVEL_INFO = 0x00000010, } fwts_log_level; /* * different types of log file */ typedef enum { LOG_TYPE_NONE = 0x00000000, LOG_TYPE_PLAINTEXT = 0x00000001, LOG_TYPE_JSON = 0x00000002, LOG_TYPE_XML = 0x00000004, LOG_TYPE_HTML = 0x00000008, } fwts_log_type; /* * different types of output log */ typedef enum { LOG_FILENAME_TYPE_STDOUT = 0x00000001, /* log output to stdout */ LOG_FILENAME_TYPE_STDERR = 0x00000002, /* log output to stderr */ LOG_FILENAME_TYPE_FILE = 0x00000003, /* log output to a file */ } fwts_log_filename_type; /* * top level log descriptor */ typedef struct log_t { unsigned int magic; /* magic ID of the log */ fwts_list log_files; /* list of fwts_log_file */ char *owner; /* who is writing to this log */ } fwts_log; /* * info for a specific log type */ typedef struct { FILE *fp; /* file descriptor for log */ int line_number; /* keeps track of the line numbering */ fwts_log *log; /* parent log struct */ fwts_log_type type; /* log type */ fwts_log_filename_type filename_type; /* log filename type */ struct fwts_log_ops_t *ops; /* log operators */ int line_width; /* width of log in chars */ } fwts_log_file; typedef struct fwts_log_ops_t { int (*print)(fwts_log_file *log_file, const fwts_log_field field, const fwts_log_level level, const char *status, const char *label, const char *prefix, const char *buffer); void (*underline)(fwts_log_file *log_file, int ch); void (*newline)(fwts_log_file *log_file); void (*section_begin)(fwts_log_file *log_file, const char *tag); void (*section_end)(fwts_log_file *log_file); void (*open)(fwts_log_file *log_file); void (*close)(fwts_log_file *log_file); } fwts_log_ops; extern fwts_log_ops fwts_log_plaintext_ops; extern fwts_log_ops fwts_log_json_ops; extern fwts_log_ops fwts_log_xml_ops; extern fwts_log_ops fwts_log_html_ops; extern fwts_log_field fwts_log_filter; extern const char *fwts_log_format; fwts_log *fwts_log_open(const char* owner, const char *name, const char *mode, const fwts_log_type); int fwts_log_close(fwts_log *log); int fwts_log_printf(fwts_log *log, const fwts_log_field field, const fwts_log_level level, const char *status, const char *label, const char *prefix, const char *fmt, ...) __attribute__((format(printf, 7, 8))); int fwts_log_vprintf(fwts_log *log, const fwts_log_field field, const fwts_log_level level, const char *status, const char *label, const char *prefix, const char *fmt, va_list args); void fwts_log_newline(fwts_log *log); void fwts_log_underline(fwts_log *log, const int ch); void fwts_log_set_field_filter(const char *str); int fwts_log_set_owner(fwts_log *log, const char *owner); void fwts_log_set_format(const char *str); void fwts_log_print_fields(void); void fwts_log_filter_set_field(const fwts_log_field filter); void fwts_log_filter_unset_field(const fwts_log_field filter); int fwts_log_str_to_level(const char *str); fwts_log_field fwts_log_str_to_field(const char *text); char *fwts_log_level_to_str(const fwts_log_level level); char *fwts_log_field_to_str(const fwts_log_field field); char *fwts_log_field_to_str_full(const fwts_log_field field); char *fwts_log_field_to_str_upper(const fwts_log_field field); void fwts_log_set_line_width(const int width); void fwts_log_section_begin(fwts_log *log, const char *name); void fwts_log_section_end(fwts_log *log); char *fwts_log_get_filenames(const char *filename, const fwts_log_type type); fwts_log_filename_type fwts_log_get_filename_type(const char *name); static inline int fwts_log_type_count(fwts_log_type type) { return __builtin_popcount(type); } #define fwts_log_result(fw, fmt, args...) \ fwts_log_printf(fw->results, LOG_RESULT, LOG_LEVEL_NONE, "", "", "", fmt, ## args) #define fwts_log_warning(fw, fmt, args...) \ fwts_log_printf(fw->results, LOG_WARNING, LOG_LEVEL_NONE, "", "", "", fmt, ## args) #define fwts_log_warning_verbatum(fw, fmt, args...) \ fwts_log_printf(fw->results, LOG_WARNING | LOG_VERBATUM, LOG_LEVEL_NONE, "", "", "", fmt, ## args) #define fwts_log_error(fw, fmt, args...) \ fwts_log_printf(fw->results, LOG_ERROR, LOG_LEVEL_NONE, "", "", "", fmt, ## args) #define fwts_log_error_verbatum(fw, fmt, args...) \ fwts_log_printf(fw->results, LOG_ERROR | LOG_VERBATUM, LOG_LEVEL_NONE, "", "", "", fmt, ## args) #define fwts_log_info(fw, fmt, args...) \ fwts_log_printf(fw->results, LOG_INFO, LOG_LEVEL_NONE, "", "", "", fmt, ## args) #define fwts_log_info_verbatum(fw, fmt, args...) \ fwts_log_printf(fw->results, LOG_INFO | LOG_VERBATUM, LOG_LEVEL_NONE, "", "", "", fmt, ## args) #define fwts_log_summary(fw, fmt, args...) \ fwts_log_printf(fw->results, LOG_SUMMARY, LOG_LEVEL_NONE, "", "", "", fmt, ## args) #define fwts_log_summary_verbatum(fw, fmt, args...) \ fwts_log_printf(fw->results, LOG_SUMMARY | LOG_VERBATUM, LOG_LEVEL_NONE, "", "", "", fmt, ## args) #define fwts_log_advice(fw, fmt, args...) \ fwts_log_printf(fw->results, LOG_ADVICE, LOG_LEVEL_NONE, "", "", "", fmt, ## args) #define fwts_log_heading(fw, fmt, args...) \ fwts_log_printf(fw->results, LOG_HEADING, LOG_LEVEL_NONE, "", "", "", fmt, ## args) #define fwts_log_nl(fw) \ fwts_log_printf(fw->results, LOG_NEWLINE, LOG_LEVEL_NONE, "", "", "", "%s", "") #endif src/lib/include/fwts_memorymap.h000066400000000000000000000034741231470457100172740ustar00rootroot00000000000000/* * Copyright (C) 2006, Intel Corporation * Copyright (C) 2010-2014 Canonical * * This file was originally part of the Linux-ready Firmware Developer Kit * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ #ifndef __FWTS_FWTS_MEMORY_MAP_H__ #define __FWTS_FWTS_MEMORY_MAP_H__ #include "fwts_types.h" #include "fwts_list.h" #include "fwts_framework.h" #define FWTS_MEMORY_MAP_UNKNOWN 0 #define FWTS_MEMORY_MAP_RESERVED 1 #define FWTS_MEMORY_MAP_ACPI 2 #define FWTS_MEMORY_MAP_USABLE 16 typedef struct { uint64_t start_address; uint64_t end_address; int type; } fwts_memory_map_entry; int fwts_memory_map_type(fwts_list *memory_map_list, const uint64_t memory); int fwts_memory_map_is_reserved(fwts_list *memory_map_list, const uint64_t memory); fwts_list *fwts_memory_map_table_load(fwts_framework *fw); void fwts_memory_map_table_free(fwts_list *memory_map_list); void fwts_memory_map_table_dump(fwts_framework *fw, fwts_list *memory_map_list); const char *fwts_memory_map_name(const int type); fwts_memory_map_entry *fwts_memory_map_info(fwts_list *memory_map_list, const uint64_t memory); #endif src/lib/include/fwts_mmap.h000066400000000000000000000017501231470457100162130ustar00rootroot00000000000000/* * Copyright (C) 2011-2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #ifndef __FWTS_MMAP_H__ #define __FWTS_MMAP_H__ #include #include size_t fwts_page_size(void); void *fwts_mmap(const off_t start, const size_t size); int fwts_munmap(void *mem, const size_t size); #endif src/lib/include/fwts_multiproc.h000066400000000000000000000072721231470457100173040ustar00rootroot00000000000000/* * Copyright (C) 2011-2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #ifndef __FWTS_MULTIPROC_H__ #define __FWTS_MULTIPROC_H__ #define FWTS_MP_HEADER_SIGNATURE "PCMP" /* * Structures as described in version 1.4 of the * Intel MultiProcessor Specification, May 1997 */ typedef enum { FWTS_MP_CPU_ENTRY = 0, FWTS_MP_BUS_ENTRY = 1, FWTS_MP_IO_APIC_ENTRY = 2, FWTS_MP_IO_INTERRUPT_ENTRY = 3, FWTS_MP_LOCAL_INTERRUPT_ENTRY = 4, FWTS_MP_SYS_ADDR_ENTRY = 128, FWTS_MP_BUS_HIERARCHY_ENTRY = 129, FWTS_MP_COMPAT_BUS_ADDRESS_SPACE_ENTRY = 130 } fwts_mp_types; typedef struct { uint8_t signature[4]; uint32_t phys_address; uint8_t length; uint8_t spec_rev; uint8_t checksum; uint8_t mp_feature_bytes[5]; } __attribute__ ((packed)) fwts_mp_floating_header; typedef struct { uint8_t signature[4]; uint16_t base_table_length; uint8_t spec_rev; uint8_t checksum; uint8_t oem_id[8]; uint8_t product_id[12]; uint32_t oem_table_ptr; uint16_t oem_table_size; uint16_t entry_count; uint32_t lapic_address; uint16_t extended_table_length; uint8_t extended_table_checksum; uint8_t reserved; } __attribute__ ((packed)) fwts_mp_config_table_header; typedef struct { uint8_t entry_type; uint8_t local_apic_id; uint8_t local_apic_version; uint8_t cpu_flags; uint32_t cpu_signature; uint32_t feature_flags; uint32_t reserved[2]; } __attribute__ ((packed)) fwts_mp_processor_entry; typedef struct { uint8_t entry_type; uint8_t bus_id; uint8_t bus_type[6]; } __attribute__ ((packed)) fwts_mp_bus_entry; typedef struct { uint8_t entry_type; uint8_t id; uint8_t version; uint8_t flags; uint32_t address; } __attribute__ ((packed)) fwts_mp_io_apic_entry; typedef struct { uint8_t entry_type; uint8_t type; uint16_t flags; uint8_t source_bus_id; uint8_t source_bus_irq; uint8_t destination_io_apic_id; uint8_t destination_io_apic_intin; } __attribute__ ((packed)) fwts_mp_io_interrupt_entry; typedef struct { uint8_t entry_type; uint8_t type; uint16_t flags; uint8_t source_bus_id; uint8_t source_bus_irq; uint8_t destination_local_apic_id; uint8_t destination_local_apic_intin; } __attribute__ ((packed)) fwts_mp_local_interrupt_entry; typedef struct { uint8_t entry_type; uint8_t length; uint8_t bus_id; uint8_t address_type; uint64_t address_base; uint64_t address_length; } __attribute__ ((packed)) fwts_mp_system_address_space_entry; typedef struct { uint8_t entry_type; uint8_t length; uint8_t bus_id; uint8_t bus_info; uint8_t parent_bus; uint8_t reserved[3]; } __attribute__ ((packed)) fwts_mp_bus_hierarchy_entry; typedef struct { uint8_t entry_type; uint8_t length; uint8_t bus_id; uint8_t address_mod; uint32_t range_list; } __attribute__ ((packed)) fwts_mp_compat_bus_address_space_entry; typedef struct { fwts_mp_config_table_header *header; int size; fwts_list entries; uint32_t phys_addr; } fwts_mp_data; int fwts_mp_data_get(fwts_mp_data *data); int fwts_mp_data_free(fwts_mp_data *data); #endif src/lib/include/fwts_oops.h000066400000000000000000000016501231470457100162400ustar00rootroot00000000000000/* * Copyright (C) 2011-2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #ifndef __FWTS_OOPS_H__ #define __FWTS_OOPS_H__ #include int fwts_oops_check(fwts_framework *fw, fwts_list *klog, int *oopses, int *warn_ons); #endif src/lib/include/fwts_pci.h000066400000000000000000000170431231470457100160360ustar00rootroot00000000000000/* * Copyright (C) 2013-2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #ifndef __PCI_H__ #define __PCI_H__ /* * PCI specific definitions */ #define FWTS_PCI_DEV_PATH "/sys/bus/pci/devices" #define FWTS_PCI_CAPABILITIES_LAST_ID (0x00) #define FWTS_PCI_EXPRESS_CAP_ID (0x10) #define FWTS_PCI_CAPABILITIES_NEXT_POINTER (0x01) #define FWTS_PCI_CAPABILITIES_DEV_CTRL (0x08) /* Offsets common on PCI type 0,1,2 config space header */ #define FWTS_PCI_CONFIG_VENDOR_ID (0x00) #define FWTS_PCI_CONFIG_DEVICE_ID (0x02) #define FWTS_PCI_CONFIG_COMMAND (0x04) #define FWTS_PCI_CONFIG_STATUS (0x06) #define FWTS_PCI_CONFIG_REVISION_ID (0x08) #define FWTS_PCI_CONFIG_PROG_IF (0x09) #define FWTS_PCI_CONFIG_SUBCLASS (0x0a) #define FWTS_PCI_CONFIG_CLASS_CODE (0x0b) #define FWTS_PCI_CONFIG_CACHE_LINE_SIZE (0x0c) #define FWTS_PCI_CONFIG_LATENCY_TIMER (0x0d) #define FWTS_PCI_CONFIG_HEADER_TYPE (0x0e) #define FWTS_PCI_CONFIG_BIST (0x0f) /* Offsets in PCI Type 0 Non-Bridge config space header */ #define FWTS_PCI_CONFIG_TYPE0_BAR0 (0x10) #define FWTS_PCI_CONFIG_TYPE0_BAR1 (0x14) #define FWTS_PCI_CONFIG_TYPE0_BAR2 (0x18) #define FWTS_PCI_CONFIG_TYPE0_BAR3 (0x1c) #define FWTS_PCI_CONFIG_TYPE0_BAR4 (0x20) #define FWTS_PCI_CONFIG_TYPE0_BAR5 (0x24) #define FWTS_PCI_CONFIG_TYPE0_CARDBUS_CIS_POINTER (0x28) #define FWTS_PCI_CONFIG_TYPE0_SUBSYSTEM_VENDOR_ID (0x2c) #define FWTS_PCI_CONFIG_TYPE0_SUBSYSTEM_ID (0x2e) #define FWTS_PCI_CONFIG_TYPE0_EXPENSION_ROM_ADDRESS (0x30) #define FWTS_PCI_CONFIG_TYPE0_CAPABILITIES_POINTER (0x34) #define FWTS_PCI_CONFIG_TYPE0_INTERRUPT_LINE (0x3c) #define FWTS_PCI_CONFIG_TYPE0_INTERRUPT_PIN (0x3d) #define FWTS_PCI_CONFIG_TYPE0_MIN_GRANT (0x3e) #define FWTS_PCI_CONFIG_TYPE0_MAX_LATENCY (0x3f) /* Offsets in PCI Type 1 PCI-to-PCI bridge config space header */ #define FWTS_PCI_CONFIG_TYPE1_BAR0 (0x10) #define FWTS_PCI_CONFIG_TYPE1_BAR1 (0x14) #define FWTS_PCI_CONFIG_TYPE1_PRIMARY_BUS_NUMBER (0x18) #define FWTS_PCI_CONFIG_TYPE1_SECONDARY_BUS_NUMBER (0x19) #define FWTS_PCI_CONFIG_TYPE1_SUBORDINATE_BUS_NUMBER (0x1a) #define FWTS_PCI_CONFIG_TYPE1_SECONDARY_LATENCY_TIMER (0x1b) #define FWTS_PCI_CONFIG_TYPE1_IO_BASE (0x1c) #define FWTS_PCI_CONFIG_TYPE1_IO_LIMIT (0x1d) #define FWTS_PCI_CONFIG_TYPE1_SECONDARY_STATUS (0x1e) #define FWTS_PCI_CONFIG_TYPE1_MEMORY_BASE (0x20) #define FWTS_PCI_CONFIG_TYPE1_MEMORY_LIMIT (0x22) #define FWTS_PCI_CONFIG_TYPE1_PREFETCHABLE_MEMORY_BASE (0x24) #define FWTS_PCI_CONFIG_TYPE1_PREFETCHABLE_MEMORY_LIMIT (0x26) #define FWTS_PCI_CONFIG_TYPE1_PREFETCABLE_BASE_UPPER32 (0x28) #define FWTS_PCI_CONFIG_TYPE1_PREFETCABLE_LIMIT_UPPER32 (0x2c) #define FWTS_PCI_CONFIG_TYPE1_IO_BASE_UPPER16 (0x30) #define FWTS_PCI_CONFIG_TYPE1_IO_LIMIT_UPPER16 (0x32) #define FWTS_PCI_CONFIG_TYPE1_CAPABILITY_POINTER (0x34) #define FWTS_PCI_CONFIG_TYPE1_EXPANSION_ROM_ADDRESS (0x38) #define FWTS_PCI_CONFIG_TYPE1_INTERRUPT_LINE (0x3c) #define FWTS_PCI_CONFIG_TYPE1_INTERRUPT_PIN (0x3d) #define FWTS_PCI_CONFIG_TYPE1_BRIDGE_CONTROL (0x3e) /* Offsets in PCI Type 2 PCI-to-CardBus bridge config space header */ #define FWTS_PCI_CONFIG_TYPE2_CARDBUS_BASE_ADDRESS (0x10) #define FWTS_PCI_CONFIG_TYPE2_CAPABILITY_POINTER (0x14) #define FWTS_PCI_CONFIG_TYPE2_SECONDARY_STATUS (0x16) #define FWTS_PCI_CONFIG_TYPE2_PCI_BUS_NUMBER (0x18) #define FWTS_PCI_CONFIG_TYPE2_CARDBUS_BUS_NUMBER (0x19) #define FWTS_PCI_CONFIG_TYPE2_SUBORDINATE_BUS_NUMBER (0x1a) #define FWTS_PCI_CONFIG_TYPE2_CARDBUS_LATENCY_TIMER (0x1b) #define FWTS_PCI_CONFIG_TYPE2_MEMORY_BASE_ADDRESS0 (0x1c) #define FWTS_PCI_CONFIG_TYPE2_MEMORY_LIMIT0 (0x20) #define FWTS_PCI_CONFIG_TYPE2_MEMORY_BASE_ADDRESS1 (0x24) #define FWTS_PCI_CONFIG_TYPE2_MEMORY_LIMIT1 (0x28) #define FWTS_PCI_CONFIG_TYPE2_IO_BASE_ADDRESS0 (0x2c) #define FWTS_PCI_CONFIG_TYPE2_IO_BASE_LIMIT0 (0x30) #define FWTS_PCI_CONFIG_TYPE2_IO_BASE_ADDRESS1 (0x34) #define FWTS_PCI_CONFIG_TYPE2_IO_BASE_LIMIT1 (0x38) #define FWTS_PCI_CONFIG_TYPE2_INTERRUPT_LINE (0x3c) #define FWTS_PCI_CONFIG_TYPE2_INTERRUPT_PIN (0x3d) #define FWTS_PCI_CONFIG_TYPE2_BRIDGE_CONTROL (0x3e) #define FWTS_PCI_CONFIG_TYPE2_SUBSYSTEM_DEVICE_ID (0x40) #define FWTS_PCI_CONFIG_TYPE2_SUBSYSTEM_VENDOR_ID (0x42) #define FWTS_PCI_CONFIG_TYPE2_LEGACY_MODE_BASE_ADDRESS (0x44) /* PCI config header types */ #define FWTS_PCI_CONFIG_HEADER_TYPE_NON_BRIDGE (0x00) #define FWTS_PCI_CONFIG_HEADER_TYPE_PCI_BRIDGE (0x01) #define FWTS_PCI_CONFIG_HEADER_TYPE_CARDBUS_BRIDGE (0x02) /* PCI config BAR types */ #define FWTS_PCI_CONFIG_BAR_MEM (0x00) #define FWTS_PCI_CONFIG_BAR_IO (0x01) #define FWTS_PCI_CONFIG_BAR_PREFETCHABLE (0x08) /* PCI config BAR address types */ #define FWTS_PCI_CONFIG_BAR_TYPE_ADDR_32BIT (0x00) #define FWTS_PCI_CONFIG_BAR_TYPE_ADDR_16BIT (0x01) #define FWTS_PCI_CONFIG_BAR_TYPE_ADDR_64BIT (0x02) /* PCI class codes */ #define FWTS_PCI_CLASS_CODE_HOST_BRIDGE (0x00) #define FWTS_PCI_CLASS_CODE_MASS_STORAGE_CONTOLLER (0x01) #define FWTS_PCI_CLASS_CODE_NETWORK_CONTROLLER (0x02) #define FWTS_PCI_CLASS_CODE_DISPLAY_CONTROLLER (0x03) #define FWTS_PCI_CLASS_CODE_MULTIMEDIA_CONTROLLER (0x04) #define FWTS_PCI_CLASS_CODE_MEMORY_CONTROLLER (0x05) #define FWTS_PCI_CLASS_CODE_BRIDGE_CONTROLLER (0x06) #define FWTS_PCI_CLASS_CODE_SIMPLE_COMMS_CONTROLLER (0x07) #define FWTS_PCI_CLASS_CODE_BASE_SYSTEM_PERIPHERALS (0x08) #define FWTS_PCI_CLASS_CODE_INPUT_DEVICE (0x09) #define FWTS_PCI_CLASS_CODE_DOCKING_STATION (0x0a) #define FWTS_PCI_CLASS_CODE_PROCESSOR (0x0b) #define FWTS_PCI_CLASS_CODE_SERIAL_BUS_CONTROLLER (0x0c) #define FWTS_PCI_CLASS_CODE_WIRELESS_CONTROLLER (0x0d) #define FWTS_PCI_CLASS_CODE_INTELLIGENT_IO_CONTROLLER (0x0e) #define FWTS_PCI_CLASS_CODE_SATELLITE_COMMS_CONTROLLER (0x0f) #define FWTS_PCI_CLASS_CODE_CRYPTO_CONTROLLER (0x10) #define FWTS_PCI_CLASS_CODE_SIGNAL_PROC_CONTROLLER (0x11) #define FWTS_PCI_CLASS_CODE_NO_CLASSICATION (0xff) /* Just a handful of sub-class codes */ #define FWTS_PCI_SUBCLASS_CODE_HOST_BRIDGE (0x00) #define FWTS_PCI_SUBCLASS_CODE_PCI_TO_PCI_BRIDGE (0x04) #define FWTS_PCI_SUBCLASS_CODE_OTHER_SYSTEM_PERIPHERAL (0x80) #define FWTS_PCI_SUBCLASS_CODE_AUDIO_DEVICE (0x03) /* * PCI Express Capability Structure is defined in Section 7.8 * of PCI Express®i Base Specification Revision 2.0 */ typedef struct { uint8_t pcie_cap_id; uint8_t next_cap_point; uint16_t pcie_cap_reg; uint32_t device_cap; uint16_t device_contrl; uint16_t device_status; uint32_t link_cap; uint16_t link_contrl; uint16_t link_status; uint32_t slot_cap; uint16_t slot_contrl; uint16_t slot_status; uint16_t root_contrl; uint16_t root_cap; uint32_t root_status; uint32_t device_cap2; uint16_t device_contrl2; uint16_t device_status2; uint32_t link_cap2; uint16_t link_contrl2; uint16_t link_status2; uint32_t slot_cap2; uint16_t slot_contrl2; uint16_t slot_status2; } __attribute__ ((packed)) fwts_pcie_capability; const char *fwts_pci_description(const uint8_t class_code, const uint8_t subclass_code); #endif src/lib/include/fwts_pipeio.h000066400000000000000000000023271231470457100165470ustar00rootroot00000000000000/* * Copyright (C) 2010-2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #ifndef __FWTS_PIPEIO_H__ #define __FWTS_PIPEIO_H__ #include #include #include #include "fwts.h" #define FWTS_EXEC_ERROR (127) int fwts_pipe_open(const char *command, pid_t *childpid); char *fwts_pipe_read(const int fd, ssize_t *length); int fwts_pipe_close(const int fd, const pid_t pid); int fwts_pipe_exec(const char *command, fwts_list **list, int *status); int fwts_exec(const char *command, int *status); #endif src/lib/include/fwts_release.h000066400000000000000000000020001231470457100166660ustar00rootroot00000000000000/* * Copyright (C) 2013-2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #ifndef __FWTS_RELEASE_H__ #define __FWTS_RELEASE_H__ typedef struct { char *distributor; char *description; char *release; char *codename; } fwts_release; fwts_release *fwts_release_get(void); void fwts_release_free(fwts_release *release); #endif src/lib/include/fwts_scan_efi_systab.h000066400000000000000000000016451231470457100204200ustar00rootroot00000000000000/* * Copyright (C) 2010-2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #ifndef __FWTS_SCAN_EFI_SYSTAB_H__ #define __FWTS_SCAN_EFI_SYSTAB_H__ #include #include "fwts.h" void *fwts_scan_efi_systab(const char *name); #endif src/lib/include/fwts_set.h000066400000000000000000000015761231470457100160620ustar00rootroot00000000000000/* * Copyright (C) 2010-2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #ifndef __FWTS_SET_H__ #define __FWTS_SET_H__ #include int fwts_set(const char *text, const char *file); #endif src/lib/include/fwts_smbios.h000066400000000000000000000065341231470457100165620ustar00rootroot00000000000000/* * Copyright (C) 2010-2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #ifndef __FWTS_SMBIOS_H__ #define __FWTS_SMBIOS_H__ #include #include "fwts.h" #define FWTS_SMBIOS_REGION_START (0x000e0000) #define FWTS_SMBIOS_REGION_END (0x000fffff) #define FWTS_SMBIOS_REGION_SIZE (FWTS_SMBIOS_REGION_END - FWTS_SMBIOS_REGION_START) #define FWTS_SMBIOS_CHASSIS_INVALID (0x00) #define FWTS_SMBIOS_CHASSIS_OTHER (0X01) #define FWTS_SMBIOS_CHASSIS_UNKNOWN (0x02) #define FWTS_SMBIOS_CHASSIS_DESKTOP (0x03) #define FWTS_SMBIOS_CHASSIS_LOW_PROFILE_DESKTOP (0x04) #define FWTS_SMBIOS_CHASSIS_PIZZA_BOX (0x05) #define FWTS_SMBIOS_CHASSIS_MINI_TOWER (0x06) #define FWTS_SMBIOS_CHASSIS_TOWER (0x07) #define FWTS_SMBIOS_CHASSIS_PORTABLE (0x08) #define FWTS_SMBIOS_CHASSIS_LAPTOP (0x09) #define FWTS_SMBIOS_CHASSIS_NOTEBOOK (0x0A) #define FWTS_SMBIOS_CHASSIS_HANDHELD (0x0B) #define FWTS_SMBIOS_CHASSIS_DOCKING_STATION (0x0C) #define FWTS_SMBIOS_CHASSIS_ALL_IN_ONE (0x0D) #define FWTS_SMBIOS_CHASSIS_SUB_NOTEBOOK (0x0E) #define FWTS_SMBIOS_CHASSIS_SPACE_SAVING (0x0F) #define FWTS_SMBIOS_CHASSIS_LUNCH_BOX (0x10) #define FWTS_SMBIOS_CHASSIS_MAIN_SERVER_CHASSIS (0x11) #define FWTS_SMBIOS_CHASSIS_EXPANISON_CHASSIS (0x12) #define FWTS_SMBIOS_CHASSIS_SUB_CHASSIS (0x13) #define FWTS_SMBIOS_CHASSIS_BUS_EXPANSION_CHASSIS (0x14) #define FWTS_SMBIOS_CHASSIS_PERIPHERAL_CHASSIS (0x15) #define FWTS_SMBIOS_CHASSIS_RAID_CHASSIS (0x16) #define FWTS_SMBIOS_CHASSIS_RACK_MOUNT_CHASSIS (0x17) #define FWTS_SMBIOS_CHASSIS_SEALED_CASE_PC (0x18) #define FWTS_SMBIOS_CHASSIS_MULTI_SYSTEM_CHASSIS (0x19) #define FWTS_SMBIOS_CHASSIS_COMPACT_PCI (0x1A) #define FWTS_SMBIOS_CHASSIS_ADVANCED_TCA (0x1B) #define FWTS_SMBIOS_CHASSIS_BLADE (0x1C) #define FWTS_SMBIOS_CHASSIS_BLASE_ENCLOSURE (0x1D) typedef enum { FWTS_SMBIOS_UNKNOWN = -1, FWTS_SMBIOS_DMI_LEGACY = 0, FWTS_SMBIOS = 1, } fwts_smbios_type; typedef struct { uint8_t type; uint8_t length; uint16_t handle; uint8_t *data; } fwts_dmi_header; /* * From System Management BIOS (SMBIOS) Reference Specification * http://dmtf.org/standards/smbios */ typedef struct { uint8_t signature[4]; uint8_t checksum; uint8_t length; uint8_t major_version; uint8_t minor_version; uint16_t max_struct_size; uint8_t revision; uint8_t formatted_area[5]; uint8_t anchor_string[5]; uint8_t intermediate_checksum; uint16_t struct_table_length; uint32_t struct_table_address; uint16_t number_smbios_structures; uint8_t smbios_bcd_revision; } __attribute__ ((packed)) fwts_smbios_entry; void *fwts_smbios_find_entry(fwts_framework *fw, fwts_smbios_entry *entry, fwts_smbios_type *type, uint16_t *version); #endif src/lib/include/fwts_stringextras.h000066400000000000000000000016751231470457100200240ustar00rootroot00000000000000/* * Copyright (C) 2010-2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #ifndef __FWTS_STRINGEXTRAS_H__ #define __FWTS_STRINGEXTRAS_H__ #include void fwts_chop_newline(char *str); char *fwts_realloc_strcat(char *orig, const char *newstr); #endif src/lib/include/fwts_summary.h000066400000000000000000000021631231470457100167550ustar00rootroot00000000000000/* * Copyright (C) 2010-2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #ifndef __FWTS_SUMMARY_H__ #define __FWTS_SUMMARY_H__ #include #include "fwts_list.h" #include "fwts_framework.h" int fwts_summary_init(void); void fwts_summary_deinit(void); int fwts_summary_add(fwts_framework *fw, const char *test, const fwts_log_level level, const char *text); int fwts_summary_report(fwts_framework *fw, fwts_list *test_list); #endif src/lib/include/fwts_text_list.h000066400000000000000000000023771231470457100173060ustar00rootroot00000000000000/* * Copyright (C) 2010-2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #ifndef __FWTS_TEXT_LIST_H__ #define __FWTS_TEXT_LIST_H__ #include "fwts_list.h" fwts_list *fwts_text_list_new(void); void fwts_text_list_free(fwts_list *list); char *fwts_text_list_strstr(fwts_list *list, const char *needle); fwts_list *fwts_list_from_text(const char *list); fwts_list_link *fwts_text_list_append(fwts_list *list, const char *text); static inline char *fwts_text_list_text(fwts_list_link *item) { return fwts_list_data(char *, item); } #endif src/lib/include/fwts_tty.h000066400000000000000000000015631231470457100161030ustar00rootroot00000000000000/* * Copyright (C) 2010-2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #ifndef __FWTS_TTY_H__ #define __FWTS_TTY_H__ int fwts_tty_width(const int fd, const int default_width); #endif src/lib/include/fwts_types.h000066400000000000000000000023321231470457100164220ustar00rootroot00000000000000/* * Copyright (C) 2010-2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #ifndef __FWTS_TYPES_H__ #define __FWTS_TYPES_H__ #include typedef enum { FWTS_OK = 0, FWTS_ERROR = -1, FWTS_SKIP = -2, FWTS_ABORTED = -3, FWTS_ERROR_NO_PRIV = -4, FWTS_NULL_POINTER = -5, FWTS_NO_TABLE = -6, FWTS_NOT_EXIST = -7, FWTS_COMPLETE = -8, FWTS_OUT_OF_MEMORY = -9, FWTS_NO_EBDA = -10, } fwts_status; #define FWTS_MAP_FAILED ((void *)-1) typedef enum { FWTS_FALSE = 0, FWTS_TRUE = 1, FWTS_BOOL_ERROR = -1 } fwts_bool; #endif src/lib/include/fwts_uefi.h000066400000000000000000000373441231470457100162210ustar00rootroot00000000000000/* * Copyright (C) 2010-2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #ifndef __FWTS_UEFI_H__ #define __FWTS_UEFI_H__ #define FWTS_UEFI_LOAD_OPTION_ACTIVE 0x00000001 #define FWTS_UEFI_LOAD_OPTION_FORCE_RECONNECT 0x00000002 typedef struct { uint16_t *varname; uint8_t guid[16]; size_t datalen; uint8_t *data; uint64_t status; uint32_t attributes; } fwts_uefi_var; typedef uint8_t fwts_uefi_mac_addr[32]; typedef uint8_t fwts_uefi_ipv4_addr[4]; typedef uint16_t fwts_uefi_ipv6_addr[8]; enum { FWTS_UEFI_VAR_NON_VOLATILE = 0x00000001, FWTS_UEFI_VAR_BOOTSERVICE_ACCESS = 0x00000002, FWTS_UEFI_VAR_RUNTIME_ACCESS = 0x00000004, FWTS_UEFI_VARIABLE_HARDWARE_ERROR_RECORD = 0x00000008, FWTS_UEFI_VARIABLE_AUTHENTICATED_WRITE_ACCESS = 0x00000010, FWTS_UEFI_VARIABLE_TIME_BASED_AUTHENTICATED_WRITE_ACCESS = 0x00000020 }; enum { FWTS_UEFI_TIME_ADJUST_DAYLIGHT = 0x01, FWTS_UEFI_TIME_IN_DAYLIGHT = 0x02 }; #define BITS_PER_LONG (sizeof(long) * 8) #define HIGH_BIT_SET (1UL << (BITS_PER_LONG-1)) #define EFI_SUCCESS 0 #define EFI_LOAD_ERROR (1 | HIGH_BIT_SET) #define EFI_INVALID_PARAMETER (2 | HIGH_BIT_SET) #define EFI_UNSUPPORTED (3 | HIGH_BIT_SET) #define EFI_BAD_BUFFER_SIZE (4 | HIGH_BIT_SET) #define EFI_BUFFER_TOO_SMALL (5 | HIGH_BIT_SET) #define EFI_NOT_READY (6 | HIGH_BIT_SET) #define EFI_DEVICE_ERROR (7 | HIGH_BIT_SET) #define EFI_WRITE_PROTECTED (8 | HIGH_BIT_SET) #define EFI_OUT_OF_RESOURCES (9 | HIGH_BIT_SET) #define EFI_VOLUME_CORRUPTED (10 | HIGH_BIT_SET) #define EFI_VOLUME_FULL (11 | HIGH_BIT_SET) #define EFI_NO_MEDIA (12 | HIGH_BIT_SET) #define EFI_MEDIA_CHANGED (13 | HIGH_BIT_SET) #define EFI_NOT_FOUND (14 | HIGH_BIT_SET) #define EFI_ACCESS_DENIED (15 | HIGH_BIT_SET) #define EFI_NO_RESPONSE (16 | HIGH_BIT_SET) #define EFI_NO_MAPPING (17 | HIGH_BIT_SET) #define EFI_TIMEOUT (18 | HIGH_BIT_SET) #define EFI_NOT_STARTED (19 | HIGH_BIT_SET) #define EFI_ALREADY_STARTED (20 | HIGH_BIT_SET) #define EFI_ABORTED (21 | HIGH_BIT_SET) #define EFI_ICMP_ERROR (22 | HIGH_BIT_SET) #define EFI_TFTP_ERROR (23 | HIGH_BIT_SET) #define EFI_PROTOCOL_ERROR (24 | HIGH_BIT_SET) #define EFI_INCOMPATIBLE_VERSION (25 | HIGH_BIT_SET) #define EFI_SECURITY_VIOLATION (26 | HIGH_BIT_SET) #define EFI_CRC_ERROR (27 | HIGH_BIT_SET) #define EFI_END_OF_MEDIA (28 | HIGH_BIT_SET) #define EFI_END_OF_FILE (31 | HIGH_BIT_SET) #define EFI_INVALID_LANGUAGE (32 | HIGH_BIT_SET) #define EFI_COMPROMISED_DATA (33 | HIGH_BIT_SET) #define FWTS_UEFI_UNSPECIFIED_TIMEZONE 0x07FF #define EFI_OS_INDICATIONS_BOOT_TO_FW_UI 0x0000000000000001 #define EFI_OS_INDICATIONS_TIMESTAMP_REVOCATION 0x0000000000000002 #define EFI_OS_INDICATIONS_FILE_CAPSULE_DELIVERY_SUPPORTED 0x0000000000000004 #define EFI_OS_INDICATIONS_FMP_CAPSULE_SUPPORTED 0x0000000000000008 #define EFI_OS_INDICATIONS_CAPSULE_RESULT_VAR_SUPPORTED 0x0000000000000010 #define EFI_CERT_SHA256_GUID \ { 0xc1c41626, 0x504c, 0x4092, { 0xac, 0xa9, 0x41, 0xf9, 0x36, 0x93, 0x43, 0x28 }} #define EFI_CERT_RSA2048_GUID \ { 0x3c5766e8, 0x269c, 0x4e34, { 0xaa, 0x14, 0xed, 0x77, 0x6e, 0x85, 0xb3, 0xb6 }} #define EFI_CERT_RSA2048_SHA256_GUID \ { 0xe2b36190, 0x879b, 0x4a3d, { 0xad, 0x8d, 0xf2, 0xe7, 0xbb, 0xa3, 0x27, 0x84 }} #define EFI_CERT_SHA1_GUID \ { 0x826ca512, 0xcf10, 0x4ac9, { 0xb1, 0x87, 0xbe, 0x1, 0x49, 0x66, 0x31, 0xbd }} #define EFI_CERT_RSA2048_SHA1_GUID \ { 0x67f8444f, 0x8743, 0x48f1, { 0xa3, 0x28, 0x1e, 0xaa, 0xb8, 0x73, 0x60, 0x80 }} #define EFI_CERT_X509_GUID \ { 0xa5c059a1, 0x94e4, 0x4aa7, { 0x87, 0xb5, 0xab, 0x15, 0x5c, 0x2b, 0xf0, 0x72 }} #define EFI_CERT_SHA224_GUID \ { 0xb6e5233, 0xa65c, 0x44c9, { 0x94, 0x7, 0xd9, 0xab, 0x83, 0xbf, 0xc8, 0xbd }} #define EFI_CERT_SHA384_GUID \ { 0xff3e5307, 0x9fd0, 0x48c9, { 0x85, 0xf1, 0x8a, 0xd5, 0x6c, 0x70, 0x1e, 0x1 }} #define EFI_CERT_SHA512_GUID \ { 0x93e0fae, 0xa6c4, 0x4f50, { 0x9f, 0x1b, 0xd4, 0x1e, 0x2b, 0x89, 0xc1, 0x9a }} #define EFI_CERT_X509_SHA256_GUID \ { 0x3bd2a492, 0x96c0, 0x4079, { 0xb4, 0x20, 0xfc, 0xf9, 0x8e, 0xf1, 0x03, 0xed }} #define EFI_CERT_X509_SHA384_GUID \ { 0x7076876e, 0x80c2, 0x4ee6, { 0xaa, 0xd2, 0x28, 0xb3, 0x49, 0xa6, 0x86, 0x5b }} #define EFI_CERT_X509_SHA512_GUID \ { 0x446dbf63, 0x2502, 0x4cda, { 0xbc, 0xfa, 0x24, 0x65, 0xd2, 0xb0, 0xfe, 0x9d }} #define EFI_PC_ANSI_GUID \ { 0xe0c14753, 0xf9be, 0x11d2, { 0x9a, 0x0c, 0x00, 0x90, 0x27, 0x3f, 0xc1, 0x4d }} #define EFI_VT_100_GUID \ { 0xdfa66065, 0xb419, 0x11d3, { 0x9a, 0x2d, 0x00, 0x90, 0x27, 0x3f, 0xc1, 0x4d }} #define EFI_VT_100_PLUS_GUID \ { 0x7baec70b, 0x57e0, 0x4c76, { 0x8e, 0x87, 0x2f, 0x9e, 0x28, 0x08, 0x83, 0x43 }} #define EFI_VT_UTF8_GUID \ { 0xad15a0d6, 0x8bec, 0x4acf, { 0xa0, 0x73, 0xd0, 0x1d, 0xe7, 0x7e, 0x2d, 0x88 }} #define EFI_UART_DEVICE_PATH_GUID \ { 0x37499a9d, 0x542f, 0x4c89, { 0xa0, 0x26, 0x35, 0xda, 0x14, 0x20, 0x94, 0xe4 }} #define EFI_SAS_DEVICE_PATH_GUID \ { 0xd487ddb4, 0x008b, 0x11d9, { 0xaf, 0xdc, 0x00, 0x10, 0x83, 0xff, 0xca, 0x4d }} #if 0 typedef struct { char *description; uefidump_func func; } uefidump_info; #endif typedef struct { uint8_t type; uint8_t subtype; uint8_t length[2]; } __attribute__ ((packed)) fwts_uefi_dev_path; typedef struct { uint32_t attributes; uint16_t file_path_list_length; uint16_t description[1]; fwts_uefi_dev_path unused_file_path_list[1]; } __attribute__((packed)) fwts_uefi_load_option; typedef struct { uint32_t keydata; uint32_t bootoptioncrc; uint16_t bootoption; } __attribute__((packed)) fwts_uefi_key_option; typedef struct { uint16_t scancode; uint16_t unicodechar; } __attribute__((packed)) fwts_uefi_input_key; typedef enum { FWTS_UEFI_HARDWARE_DEV_PATH_TYPE = (0x01), FWTS_UEFI_ACPI_DEVICE_PATH_TYPE = (0x02), FWTS_UEFI_MESSAGING_DEVICE_PATH_TYPE = (0x03), FWTS_UEFI_MEDIA_DEVICE_PATH_TYPE = (0x04), FWTS_UEFI_BIOS_DEVICE_PATH_TYPE = (0x05), FWTS_UEFI_END_DEV_PATH_TYPE = (0x7f) } dev_path_types; typedef enum { FWTS_UEFI_END_THIS_DEV_PATH_SUBTYPE = (0x01), FWTS_UEFI_END_ENTIRE_DEV_PATH_SUBTYPE = (0xff) } dev_end_subtypes; typedef enum { FWTS_UEFI_PCI_DEV_PATH_SUBTYPE = (0x01), FWTS_UEFI_PCCARD_DEV_PATH_SUBTYPE = (0x02), FWTS_UEFI_MEMORY_MAPPED_DEV_PATH_SUBTYPE = (0x03), FWTS_UEFI_VENDOR_DEV_PATH_SUBTYPE = (0x04), FWTS_UEFI_CONTROLLER_DEV_PATH_SUBTYPE = (0x05) } hw_dev_path_subtypes; typedef enum { FWTS_UEFI_ACPI_DEVICE_PATH_SUBTYPE = (0x01), FWTS_UEFI_EXPANDED_ACPI_DEVICE_PATH_SUBTYPE = (0x02), FWTS_UEFI_ACPI_ADR_DEVICE_PATH_SUBTYPE = (0x03) } acpi_dev_path_subtypes; typedef enum { FWTS_UEFI_ATAPI_DEVICE_PATH_SUBTYPE = (0x01), FWTS_UEFI_SCSI_DEVICE_PATH_SUBTYPE = (0x02), FWTS_UEFI_FIBRE_CHANNEL_DEVICE_PATH_SUBTYPE = (0x03), FWTS_UEFI_1394_DEVICE_PATH_SUBTYPE = (0x04), FWTS_UEFI_USB_DEVICE_PATH_SUBTYPE = (0x05), FWTS_UEFI_I2O_DEVICE_PATH_SUBTYPE = (0x06), FWTS_UEFI_INFINIBAND_DEVICE_PATH_SUBTYPE = (0x09), FWTS_UEFI_VENDOR_MESSAGING_DEVICE_PATH_SUBTYPE =(0x0a), FWTS_UEFI_MAC_ADDRESS_DEVICE_PATH_SUBTYPE = (0x0b), FWTS_UEFI_IPV4_DEVICE_PATH_SUBTYPE = (0x0c), FWTS_UEFI_IPV6_DEVICE_PATH_SUBTYPE = (0x0d), FWTS_UEFI_UART_DEVICE_PATH_SUBTYPE = (0x0e), FWTS_UEFI_USB_CLASS_DEVICE_PATH_SUBTYPE = (0x0f), FWTS_UEFI_USB_WWID_DEVICE_PATH_SUBTYPE = (0x10), FWTS_UEFI_LOGICAL_UNIT_DEVICE_PATH_SUBTYPE = (0x11), FWTS_UEFI_SATA_DEVICE_PATH_SUBTYPE = (0x12), FWTS_UEFI_ISCSI_DEVICE_PATH_SUBTYPE = (0x13), FWTS_UEFI_VLAN_DEVICE_PATH_SUBTYPE = (0x14), FWTS_UEFI_FIBRE_CHANNEL_EX_DEVICE_PATH_SUBTYPE = (0x15), FWTS_UEFI_SAS_EX_DEVICE_PATH_SUBTYPE = (0x16), FWTS_UEFI_NVM_EXPRESS_NAMESP_DEVICE_PATH_SUBTYPE = (0x17) } messaging_dev_path_subtypes; typedef enum { FWTS_UEFI_HARD_DRIVE_DEVICE_PATH_SUBTYPE = (0x01), FWTS_UEFI_CDROM_DEVICE_PATH_SUBTYPE = (0x02), FWTS_UEFI_VENDOR_MEDIA_DEVICE_PATH_SUBTYPE = (0x03), FWTS_UEFI_FILE_PATH_DEVICE_PATH_SUBTYPE = (0x04), FWTS_UEFI_PROTOCOL_DEVICE_PATH_SUBTYPE = (0x05), FWTS_UEFI_PIWG_FW_FILE_DEVICE_PATH_SUBTYPE = (0x06), FWTS_UEFI_PIWG_FW_VOLUME_DEVICE_PATH_SUBTYPE = (0x07) } media_dev_path_subtypes; typedef enum { FWTS_UEFI_BIOS_DEVICE_PATH_SUBTYPE = (0x01) } bios_dev_path_subtypes; typedef struct { uint32_t info1; uint16_t info2; uint16_t info3; uint8_t info4[8]; } __attribute__ ((aligned(8))) fwts_uefi_guid; typedef struct { fwts_uefi_dev_path dev_path; uint8_t function; uint8_t device; } __attribute__ ((packed)) fwts_uefi_pci_dev_path; typedef struct { fwts_uefi_dev_path dev_path; uint8_t function; } __attribute__ ((packed)) fwts_uefi_pccard_dev_path; typedef struct { fwts_uefi_dev_path dev_path; uint32_t memory_type; uint64_t start_addr; uint64_t end_addr; } __attribute__ ((packed)) fwts_uefi_mem_mapped_dev_path; typedef struct { fwts_uefi_dev_path dev_path; fwts_uefi_guid guid; uint8_t data[0]; } __attribute__ ((packed)) fwts_uefi_vendor_dev_path; typedef struct { fwts_uefi_dev_path dev_path; uint32_t controller; } __attribute__ ((packed)) fwts_uefi_controller_dev_path; typedef struct { fwts_uefi_dev_path dev_path; uint32_t hid; uint32_t uid; } __attribute__((packed)) fwts_uefi_acpi_dev_path; typedef struct { fwts_uefi_dev_path dev_path; uint32_t hid; uint32_t uid; uint32_t cid; char hidstr[1]; } __attribute__((packed)) fwts_uefi_expanded_acpi_dev_path; typedef struct { fwts_uefi_dev_path dev_path; uint32_t adr; } __attribute__((packed)) fwts_uefi_acpi_adr_dev_path; typedef struct { fwts_uefi_dev_path dev_path; uint8_t primary_secondary; uint8_t slave_master; uint16_t lun; } __attribute__((packed)) fwts_uefi_atapi_dev_path; typedef struct { fwts_uefi_dev_path dev_path; uint16_t pun; uint16_t lun; } __attribute__((packed)) fwts_uefi_scsi_dev_path; typedef struct { fwts_uefi_dev_path dev_path; uint32_t reserved; uint64_t wwn; uint64_t lun; } fwts_uefi_fibre_channel_dev_path; typedef struct { fwts_uefi_dev_path dev_path; uint32_t reserved; uint64_t guid; } __attribute__((packed)) fwts_uefi_1394_dev_path; typedef struct { fwts_uefi_dev_path dev_path; uint8_t parent_port_number; uint8_t interface; } __attribute__((packed)) fwts_uefi_usb_dev_path; typedef struct { fwts_uefi_dev_path dev_path; uint16_t vendor_id; uint16_t product_id; uint8_t device_class; uint8_t device_subclass; uint8_t device_protocol; } __attribute__((packed)) fwts_uefi_usb_class_dev_path; typedef struct { fwts_uefi_dev_path dev_path; uint32_t tid; } __attribute__((packed)) fwts_uefi_i2o_dev_path; typedef struct { fwts_uefi_dev_path dev_path; fwts_uefi_mac_addr mac_addr; uint8_t if_type; } __attribute__((packed)) fwts_uefi_mac_addr_dev_path; typedef struct { fwts_uefi_dev_path dev_path; fwts_uefi_ipv4_addr local_ip_addr; fwts_uefi_ipv4_addr remote_ip_addr; uint16_t local_port; uint16_t remote_port; uint16_t protocol; uint8_t static_ip_address; } __attribute__((packed)) fwts_uefi_ipv4_dev_path; typedef struct { fwts_uefi_dev_path dev_path; fwts_uefi_ipv6_addr local_ip_addr; fwts_uefi_ipv6_addr remote_ip_addr; uint16_t local_port; uint16_t remote_port; uint16_t protocol; uint8_t static_ip_address; } __attribute__((packed)) fwts_uefi_ipv6_dev_path; typedef struct { fwts_uefi_dev_path dev_path; uint32_t resource_flags; uint8_t port_gid[16]; uint64_t remote_id; uint64_t target_port_id; uint64_t device_id; } __attribute__((packed)) fwts_uefi_infiniband_dev_path; typedef struct { fwts_uefi_dev_path dev_path; uint32_t reserved; uint64_t baud_rate; uint8_t data_bits; uint8_t parity; uint8_t stop_bits; } __attribute__((packed)) fwts_uefi_uart_dev_path; typedef struct { fwts_uefi_dev_path dev_path; fwts_uefi_guid guid; uint8_t vendor_defined_data[0]; } __attribute__((packed)) fwts_uefi_vendor_messaging_dev_path; typedef struct { fwts_uefi_dev_path dev_path; fwts_uefi_guid guid; uint32_t reserved; uint64_t sas_addr; uint64_t lun; uint16_t dev_topology_info; uint16_t rtp; } __attribute__((packed)) fwts_uefi_sas_messaging_dev_path; typedef struct { fwts_uefi_dev_path dev_path; uint32_t reserved; uint64_t wwn; uint64_t lun; } __attribute__((packed)) fwts_uefi_fibre_channel_ex_dev_path; typedef struct { fwts_uefi_dev_path dev_path; uint16_t hbapn; uint16_t pmpn; uint16_t lun; } __attribute__((packed)) fwts_uefi_sata_dev_path; typedef struct { fwts_uefi_dev_path dev_path; uint16_t interface_num; uint16_t vendor_id; uint16_t product_id; uint16_t serial_number[0]; } __attribute__((packed)) fwts_uefi_usb_wwid_dev_path; typedef struct { fwts_uefi_dev_path dev_path; uint8_t lun; } __attribute__((packed)) fwts_uefi_logical_unit_dev_path; typedef struct { fwts_uefi_dev_path dev_path; uint16_t vlanid; } __attribute__((packed)) fwts_uefi_vlan_dev_path; typedef struct { fwts_uefi_dev_path dev_path; uint64_t sas_addr; uint64_t lun; uint16_t dev_topology_info; uint16_t rtp; } __attribute__((packed)) fwts_uefi_sas_ex_dev_path; typedef struct { fwts_uefi_dev_path dev_path; uint16_t protocol; uint16_t options; uint64_t lun; uint16_t tpg_tag; char iscsi_tn[0]; } __attribute__((packed)) fwts_uefi_iscsi_dev_path; typedef struct { fwts_uefi_dev_path dev_path; uint32_t namesp_id; uint64_t ext_unique_id; } __attribute__((packed)) fwts_uefi_nvm_express_namespace_dev_path; typedef struct { fwts_uefi_dev_path dev_path; uint32_t partition_number; uint64_t partition_start; uint64_t partition_size; uint8_t partition_signature[8]; uint8_t mbr_type; uint8_t signature_type; } __attribute__((packed)) fwts_uefi_hard_drive_dev_path; typedef struct { fwts_uefi_dev_path dev_path; uint32_t boot_entry; uint64_t partition_start; uint64_t partition_size; } __attribute__((packed)) fwts_uefi_cdrom_dev_path; typedef struct { fwts_uefi_dev_path dev_path; fwts_uefi_guid guid; uint8_t vendor_defined_data[0]; } __attribute__((packed)) fwts_uefi_vendor_media_dev_path; typedef struct { fwts_uefi_dev_path dev_path; uint16_t path_name[0]; } __attribute__((packed)) fwts_uefi_file_path_dev_path; typedef struct { fwts_uefi_dev_path dev_path; fwts_uefi_guid protocol_guid; } __attribute__((packed)) fwts_media_protocol_dev_path; typedef struct { fwts_uefi_dev_path dev_path; fwts_uefi_guid fw_file_name; } __attribute__((packed)) fwts_piwg_fw_file_dev_path; typedef struct { fwts_uefi_dev_path dev_path; fwts_uefi_guid fw_volume_name; } __attribute__((packed)) fwts_piwg_fw_volume_dev_path; typedef struct { fwts_uefi_dev_path dev_path; uint16_t device_type; uint16_t status_flags; char description[0]; } __attribute__((packed)) fwts_uefi_bios_dev_path; typedef struct { fwts_uefi_guid signaturetype; uint32_t signaturelistsize; uint32_t signatureheadersize; uint32_t signaturesize; } __attribute__((packed)) fwts_uefi_signature_list; void fwts_uefi_str16_to_str(char *dst, const size_t len, const uint16_t *src); size_t fwts_uefi_str16len(const uint16_t *str); void fwts_uefi_get_varname(char *varname, const size_t len, const fwts_uefi_var *var); int fwts_uefi_get_variable(const char *varname, fwts_uefi_var *var); void fwts_uefi_free_variable(fwts_uefi_var *var); void fwts_uefi_free_variable_names(fwts_list *list); int fwts_uefi_get_variable_names(fwts_list *list); void fwts_uefi_print_status_info(fwts_framework *fw, const uint64_t status); char *fwts_uefi_attribute_info(uint32_t attr); bool fwts_uefi_efivars_iface_exist(void); #endif src/lib/include/fwts_version.h000066400000000000000000000015141231470457100167440ustar00rootroot00000000000000/* * Copyright (C) 2010-2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #define FWTS_VERSION "V14.03.01" #define FWTS_DATE "2014-03-27 02:14:17" src/lib/include/fwts_wakealarm.h000066400000000000000000000021061231470457100172210ustar00rootroot00000000000000/* * Copyright (C) 2010-2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #ifndef __FWTS_WAKEALARM_H__ #define __FWTS_WAKEALARM_H__ #include "fwts_framework.h" int fwts_wakealarm_exits(fwts_framework *fw); int fwts_wakealarm_test_firing(fwts_framework *fw, const int sleep); int fwts_wakealarm_trigger(fwts_framework *fw, const int seconds); int fwts_wakealarm_cancel(fwts_framework *fw); #endif src/lib/src/000077500000000000000000000000001231470457100132065ustar00rootroot00000000000000src/lib/src/Makefile.am000066400000000000000000000027071231470457100152500ustar00rootroot00000000000000AM_CPPFLAGS = \ -I$(top_srcdir)/src/lib/include \ -I$(top_srcdir)/src/acpica/source/include \ -I$(top_srcdir)/src/acpica/source/compiler \ -Wall -Werror -Wextra pkglib_LTLIBRARIES = libfwts.la libfwts_la_LDFLAGS = \ -lm -lpcre -lpthread \ -version-info 1:0:0 \ -L$(top_srcdir)/src/acpica/source/compiler \ -lfwtsiasl libfwts_la_CPPFLAGS = $(AM_CPPFLAGS) # # Components of the fwts core helper library libfwts # libfwts_la_SOURCES = \ fwts_ac_adapter.c \ fwts_acpi_object_eval.c \ fwts_acpi_tables.c \ fwts_acpi.c \ fwts_acpid.c \ fwts_alloc.c \ fwts_args.c \ fwts_battery.c \ fwts_binpaths.c \ fwts_button.c \ fwts_checkeuid.c \ fwts_checksum.c \ fwts_cmos.c \ fwts_cpu.c \ fwts_dump.c \ fwts_dump_data.c \ fwts_ebda.c \ fwts_efi_module.c \ fwts_fileio.c \ fwts_firmware.c \ fwts_formatting.c \ fwts_framework.c \ fwts_get.c \ fwts_gpe.c \ fwts_guid.c \ fwts_hwinfo.c \ fwts_iasl.c \ fwts_interactive.c \ fwts_ioport.c \ fwts_keymap.c \ fwts_klog.c \ fwts_list.c \ fwts_log.c \ fwts_log_html.c \ fwts_log_json.c \ fwts_log_plaintext.c \ fwts_log_xml.c \ fwts_memorymap.c \ fwts_mmap.c \ fwts_multiproc.c \ fwts_oops.c \ fwts_pci.c \ fwts_pipeio.c \ fwts_release.c \ fwts_scan_efi_systab.c \ fwts_set.c \ fwts_smbios.c \ fwts_stringextras.c \ fwts_summary.c \ fwts_text_list.c \ fwts_tty.c \ fwts_uefi.c \ fwts_wakealarm.c src/lib/src/fwts_ac_adapter.c000066400000000000000000000074101231470457100165020ustar00rootroot00000000000000/* * Copyright (C) 2011-2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #include "fwts.h" #include #include #include #include #include #include #include #include #define FWTS_AC_ADAPTER_ANY (0x0) #define FWTS_AC_ADAPTER_ONLINE (0x1) #define FWTS_AC_ADAPTER_OFFLINE (0x2) #define SYS_INTERFACE (0x0) #define PROC_INTERFACE (0x1) typedef struct { const char *path; /* Path name of interface */ const char *state; /* Name of online/offline status */ const char *offline; /* Contents of state when offline */ const char *online; /* Contents of state when online */ const char *type; /* /sys/class type to indicate Mains power, NULL if not used */ } fwts_ac_interface_info; static fwts_ac_interface_info fwts_ac_interfaces[] = { { FWTS_SYS_CLASS_POWER_SUPPLY, "online", "0", "1", "Mains" }, { FWTS_PROC_ACPI_AC_ADAPTER, "state", "off-line", "on-line", NULL } }; /* * fwts_ac_adapter_get_state() * fetch count of matching and non-matching instances of * AC adapter state, state can be: * FWTS_AC_ADAPTER_ONLINE - connected to AC adapter * FWTS_AC_ADAPTER_OFFLINE - not connected to AC adapter * FWTS_AC_ADAPTER_ANY - either of above * matching is incremented for each AC adapter instance that matches * not_matching is incremented for each AC adapter instance that does * not match. */ int fwts_ac_adapter_get_state(const int state, int *matching, int *not_matching) { DIR *ac_power_dir; struct dirent *entry; fwts_ac_interface_info *ac_interface; /* Try to user newer /sys interface first */ if ((ac_power_dir = opendir(FWTS_SYS_CLASS_POWER_SUPPLY))) { ac_interface = &fwts_ac_interfaces[SYS_INTERFACE]; /* then try older /proc interface */ } else if ((ac_power_dir = opendir(FWTS_PROC_ACPI_AC_ADAPTER))) { ac_interface = &fwts_ac_interfaces[PROC_INTERFACE]; } else { return FWTS_ERROR; } do { entry = readdir(ac_power_dir); if (entry && strlen(entry->d_name) > 2) { char path[PATH_MAX]; char *data; /* Check that type field matches the expected type */ if (ac_interface->type != NULL) { snprintf(path, sizeof(path), "%s/%s/type", ac_interface->path, entry->d_name); if ((data = fwts_get(path)) != NULL) { bool mismatch = (strstr(ac_interface->type, data) != NULL); free(data); if (mismatch) continue; /* type don't match, skip this entry */ } else continue; /* can't check type, skip this entry */ } snprintf(path, sizeof(path), "%s/%s/%s", ac_interface->path, entry->d_name, ac_interface->state); if ((data = fwts_get(path)) != NULL) { const char *state_text = ""; switch (state) { case FWTS_AC_ADAPTER_ANY: (*matching)++; continue; case FWTS_AC_ADAPTER_ONLINE: state_text = ac_interface->online; break; case FWTS_AC_ADAPTER_OFFLINE: state_text = ac_interface->offline; break; } if (strstr(data, state_text) != NULL) (*matching)++; else (*not_matching)++; } free(data); } } while (entry); closedir(ac_power_dir); return FWTS_OK; } src/lib/src/fwts_acpi.c000066400000000000000000000025331231470457100153340ustar00rootroot00000000000000/* * Copyright (C) 2010-2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #include #include #include #include #include #include #include #include #include "fwts.h" const char *fwts_acpi_fadt_preferred_pm_profile[] = { "Unspecified", "Desktop", "Mobile", "Workstation", "Enterprise Server", "SOHO Server", "Appliance PC", "Performance Server", "Tablet", }; /* * fwts_acpi_table_get_header() * copy into ACPI table header from raw data */ void fwts_acpi_table_get_header(fwts_acpi_table_header *hdr, uint8_t *data) { memcpy(hdr, data, sizeof(fwts_acpi_table_header)); } src/lib/src/fwts_acpi_object_eval.c000066400000000000000000000423251231470457100176740ustar00rootroot00000000000000/* * Copyright (C) 2010-2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #include "fwts.h" #include #include #include #include /* acpica headers */ #include "acpi.h" #include "fwts_acpi_object_eval.h" typedef struct { const ACPI_STATUS status; const fwts_log_level level; const char *error_type; const char *error_text; const char *advice; } acpi_eval_error; static const acpi_eval_error errors[] = { /* ACPI_STATUS fwts_log_level error_type error_text */ { AE_ERROR, LOG_LEVEL_HIGH, "AEError", "Unspecified error", "An internal unspecified ACPICA execution error has occurred." }, { AE_NO_ACPI_TABLES, LOG_LEVEL_HIGH, "AENoACPITables", "No ACPI tables", "No ACPI tables could be found. Normally this indicates the tables could not be loaded " "from firmware or a provided firmware dump file." }, { AE_NO_NAMESPACE, LOG_LEVEL_HIGH, "AENoNamespace", "No namespace", "An ACPI namespace was not loaded. This happens if an ACPI root node could not be found." }, { AE_NO_MEMORY, LOG_LEVEL_CRITICAL, "AENoMemory", "Out of memory", "No more memory could be allocated from the heap." }, { AE_NOT_FOUND, LOG_LEVEL_CRITICAL, "AENotFound", "Not found", "An ACPI object or entity was requested but could not be found. Running fwts with the " "--acpica=slack option may work around this issue." }, { AE_NOT_EXIST, LOG_LEVEL_CRITICAL, "AENotExist", "Not exist", "An ACPI object or entity was requested but does not exist.", }, { AE_ALREADY_EXISTS, LOG_LEVEL_HIGH, "AEAlreadyExists", "Already exists", "An ACPI object or entity already exists. Sometimes this occurs when code is not " "serialized and it has been created a second time by another thread. ACPICA can detect " "these errors and enable auto serialization to try to work around this error. " }, { AE_TYPE, LOG_LEVEL_CRITICAL, "AETtype", "Type", "The type of an object is incorrect and does not match the expected type. ACPI will " "generally abort execution of the AML op-code that causes this error." }, { AE_NULL_OBJECT, LOG_LEVEL_CRITICAL, "AENullObject", "Null object", "An ACPI object is NULL when it was expected to be non-NULL." }, { AE_NULL_ENTRY, LOG_LEVEL_CRITICAL, "AENullEntry", "Null entry", "The requested ACPI object did not exist. This can occur when a root entry is " "NULL." }, { AE_BUFFER_OVERFLOW, LOG_LEVEL_CRITICAL, "AEBufferOverflow", "Buffer overflow", "An ACPI buffer that was provided was too small to contain the data to be copied " "into it. This generally indicates an AML bug." }, { AE_STACK_OVERFLOW, LOG_LEVEL_CRITICAL, "AEStackOverflow", "Stack overflow", "An ACPI method call failed because the call nesting was too deep and the " "internal APCI execution stack overflowed. This generally occurs with AML that " "may be recursing too deeply." }, { AE_STACK_UNDERFLOW, LOG_LEVEL_CRITICAL, "AEStackUnderflow", "Stack underflow", "An ACPI method call failed because the internal ACPI execution stack underflowed. " "This occurred while walking the object stack and popping off an object from an empty stack." }, { AE_NOT_IMPLEMENTED, LOG_LEVEL_HIGH, "AENotImplemented", "Not implemented", "The ACPICA execution engine has not implemented a feature." }, { AE_SUPPORT, LOG_LEVEL_HIGH, "AESupport", "Support", "Normally this occurs when AML attempts to perform an action that is not supported, " "such as converting objects in an unsupported way or attempting to access memory using " "an unsupported address space type." }, { AE_LIMIT, LOG_LEVEL_CRITICAL, "AELimit", "Limit", "A predefined limit was reached, for example, attempting to access an I/O port above the " "allowed 64K limit or a semaphore handle is out of range." }, { AE_TIME, LOG_LEVEL_HIGH, "AETime", "Timeout", "A timeout has been reached, for example a semaphore has timed out." }, { AE_ACQUIRE_DEADLOCK, LOG_LEVEL_CRITICAL, "AEAcqDeadlock", "Acquire deadlock", "A mutex acquire was aborted because a potential deadlock was detected." }, { AE_RELEASE_DEADLOCK, LOG_LEVEL_CRITICAL, "AERelDeadlock", "Release deadlock", "A mutex release was aborted because a potential deadlock was detected." }, { AE_NOT_ACQUIRED, LOG_LEVEL_CRITICAL, "AENotAcq", "Not acquired", "An attempt to release a mutex or an ACPI global lock failed because it " "had not previously acquired. This normally indicates an AML programming bug." }, { AE_ALREADY_ACQUIRED, LOG_LEVEL_CRITICAL, "AEAlreadyAcq", "Already acquired", "An attempt to re-acquire mutex or an ACPI global lock failed because it " "had not previously acquired. This normally indicates an AML programming bug." }, { AE_NO_HARDWARE_RESPONSE, LOG_LEVEL_HIGH, "AENoHWResponse", "No hardware response", "ACPI gave up waiting for hardware to respond. For example, a SMI_CMD failed or " "the platform does not have an ACPI global lock defined or an ACPI event could " "not be enabled." }, { AE_NO_GLOBAL_LOCK, LOG_LEVEL_HIGH, "AENoGlobalLock", "No global lock", "The platform does not define an ACPI global lock in the FACS." }, { AE_ABORT_METHOD, LOG_LEVEL_CRITICAL, "AEAbortMethod", "Abort method", "Execution of an ACPI method was aborted because the internal ACPICA AcpiGbl_AbortMethod " "flag was set to true. This should not occur." }, { AE_SAME_HANDLER, LOG_LEVEL_HIGH, "AESameHandler", "Same handler", "An attempt was made to install the same handler that is already installed." }, { AE_NO_HANDLER, LOG_LEVEL_CRITICAL, "AENoHandler", "No handler", "A handler for a General Purpose Event operation was not installed." }, { AE_OWNER_ID_LIMIT, LOG_LEVEL_HIGH, "AEOwnerIDLimit", "Owner ID limit", "A maximum of 255 OwnerIds have been used. There are no more Owner IDs available for " "ACPI tables or control methods." }, { AE_BAD_PARAMETER, LOG_LEVEL_HIGH, "AEBadParam", "Args: Bad paramater", "A parameter passed is out of range or invalid." }, { AE_BAD_CHARACTER, LOG_LEVEL_HIGH, "AEBadChar", "Args: Bad character", "An invalid character was found in an ACPI name." }, { AE_BAD_PATHNAME, LOG_LEVEL_HIGH, "AEBadPathname", "Args: Bad pathname", "An internal AML namestring could not be built because of an invalid pathname." }, { AE_BAD_DATA, LOG_LEVEL_HIGH, "AEBadData", "Args: Bad data", "A buffer or package contained some incorrect data." }, { AE_BAD_HEX_CONSTANT, LOG_LEVEL_HIGH, "AEBadHexConst", "Args: Bad hex constant", "An invalid character was found in a hexadecimal constant." }, { AE_BAD_OCTAL_CONSTANT, LOG_LEVEL_HIGH, "AEBadOctConst", "Args: Bad octal constant", "An invalid character was found in an octal constant." }, { AE_BAD_DECIMAL_CONSTANT, LOG_LEVEL_HIGH, "AEBadDecConst", "Args: Bad decimal constant", "An invalid character was found in a decimal constant." }, { AE_MISSING_ARGUMENTS, LOG_LEVEL_CRITICAL, "AEMissingArgs", "Args: Missing arguments", "Too few arguments were passed into an ACPI control method." }, { AE_BAD_ADDRESS, LOG_LEVEL_CRITICAL, "AEBadAddr", "Args: Bad address", "An illegal null I/O address was referenced by the AML." }, { AE_AML_BAD_OPCODE, LOG_LEVEL_CRITICAL, "AEAMLBadOpCode", "Bad AML opcode", "An invalid AML opcode encountered during AML execution." }, { AE_AML_NO_OPERAND, LOG_LEVEL_HIGH, "AEAMLNoOperand", "Missing operand", "An AML opcode was missing a required operand." }, { AE_AML_OPERAND_TYPE, LOG_LEVEL_HIGH, "AEAMLOperandType", "Incorrect operand type", "An AML opcode had an operand of an incorrect type." }, { AE_AML_OPERAND_VALUE, LOG_LEVEL_HIGH, "AEAMLOperandValue", "Incorrect operand value", "An AML opcode has an operand of an inappropriate or invalid value.", }, { AE_AML_UNINITIALIZED_LOCAL, LOG_LEVEL_HIGH, "AEAMLUninitLocal", "Uninitialized local variable", "A method attempted to use a local variable that was not initialized." }, { AE_AML_UNINITIALIZED_ARG, LOG_LEVEL_HIGH, "AEAMLUninitArg", "Uninitialized argument", "A method attempted to use an uninitialized argument." }, { AE_AML_UNINITIALIZED_ELEMENT, LOG_LEVEL_HIGH, "AEAMLUninitElement", "Uninitialized element", "A method attempted to use an empty element in an ACPI package." }, { AE_AML_NUMERIC_OVERFLOW, LOG_LEVEL_HIGH, "AEAMLNumericOverflow", "Numeric overflow", "A numeric overflow occurred, for example when coverting a BCD value." }, { AE_AML_REGION_LIMIT, LOG_LEVEL_CRITICAL, "AEAMLRegionLimit", "Region limit", "An attempt to access beyond the end of an ACPI Operation Region occurred." }, { AE_AML_BUFFER_LIMIT, LOG_LEVEL_CRITICAL, "AEAMLBufferLimit", "Buffer limit", "An attempt to access beyond the end of an ACPI buffer occurred." }, { AE_AML_PACKAGE_LIMIT, LOG_LEVEL_CRITICAL, "AEAMLPackgeLimit", "Package limit", "An attempt to access beyond the endof an ACPI package occurred." }, { AE_AML_DIVIDE_BY_ZERO, LOG_LEVEL_CRITICAL, "AEAMLDivideByZero", "Division by zero", "A division by zero error occurred while excuting the AML Divide op-code" }, { AE_AML_NAME_NOT_FOUND, LOG_LEVEL_HIGH, "AEAMLNameNotFound", "Name not found", "An ACPI named reference could not be resolved." }, { AE_AML_INTERNAL, LOG_LEVEL_HIGH, "AEAMLInternal", "Internal ACPICA execution engine error", "An internal error occurred in the ACPICA execution interpreter. A bug report should " "be filed against fwts so that this can be resolved." }, { AE_AML_INVALID_SPACE_ID, LOG_LEVEL_HIGH, "AEAMLInvalidSpaceID", "Invalid space ID error", "An invalid ACPI Operation Region Space ID has been encountered." }, { AE_AML_STRING_LIMIT, LOG_LEVEL_HIGH, "AEAMLStringLimit", "String limit", "A string more than 200 characters long has been used." }, { AE_AML_NO_RETURN_VALUE, LOG_LEVEL_HIGH, "AEAMLNoReturnValue", "No return value", "A method did not return the required value that was expected." }, { AE_AML_METHOD_LIMIT, LOG_LEVEL_HIGH, "AEAMLMethodLimit", "Method limit", "A control method reached a limit of 255 concurrent thread executions and hit the ACPICA " "re-entrancy limit." }, { AE_AML_NOT_OWNER, LOG_LEVEL_HIGH, "AEAMLNotOwner", "Not owner", "A thread attempted to release a mutex that it did not own.", }, { AE_AML_MUTEX_ORDER, LOG_LEVEL_HIGH, "AEAMLMutexOrder", "Mutex order", "Deadlock prevention has detected that the current mutex sync level is too large." }, { AE_AML_MUTEX_NOT_ACQUIRED, LOG_LEVEL_HIGH, "AEAMLMutexNotAcq", "Mutux not acquired", "An attempt was made to release a mutex that had not been acquired." }, { AE_AML_INVALID_RESOURCE_TYPE, LOG_LEVEL_HIGH, "AEAMLInvResourceType", "Invalid resource type", "An ACPI resource list contained an invalid resource type." }, { AE_AML_INVALID_INDEX, LOG_LEVEL_HIGH, "AEAMLInvIndex", "Invalid index", "An attempt to get a node with an index that was too large occurred, for example an ACPI " "ArgN or LocalN were N was out of range." }, { AE_AML_REGISTER_LIMIT, LOG_LEVEL_HIGH, "AEAMLRegisterLimit", "Register limit", "An attempt to use a bank value that is beyong the capacity of a register occurred." }, { AE_AML_NO_WHILE, LOG_LEVEL_CRITICAL, "AEAMLNoWhile", "No while", "A Break or Continue op-code was reached without a matching While op-code." }, { AE_AML_ALIGNMENT, LOG_LEVEL_CRITICAL, "AEAMLAlignment", "Misaligmnent", "A non-aligned memory transfer was attempted on a machine that does not " "support it." }, { AE_AML_NO_RESOURCE_END_TAG, LOG_LEVEL_HIGH, "AEAMLNoResEndTag", "No resource end tag", "An ACPI resource list had a missing End Tag." }, { AE_AML_BAD_RESOURCE_VALUE, LOG_LEVEL_HIGH, "AEAMLBadResValue", "Bad resource value", "An ACPI resource element had an invalid value." }, { AE_AML_CIRCULAR_REFERENCE, LOG_LEVEL_CRITICAL, "AEAMLCircularRef", "Circular reference", "Two references refer to each other, which is not allowed." }, { AE_AML_BAD_RESOURCE_LENGTH, LOG_LEVEL_HIGH, "AEAMLBadResLength", "Bad resource length", "The length of an ACPI Resource Descriptor was incorrect." }, { AE_AML_ILLEGAL_ADDRESS, LOG_LEVEL_CRITICAL, "AEAMLIllegalAddr", "Illegal address", "An memory, PCI configuration or I/O address was encountered with an illegal address." }, /* { AE_AML_INFINITE_LOOP, LOG_LEVEL_HIGH, "AEAMLInfiniteLoop", "Infinite loop", NULL }, */ { 0, 0, NULL, NULL , NULL} }; static fwts_list *fwts_object_names; static bool fwts_acpi_initialized = false; /* * fwts_acpi_init() * Initialise ACPIA engine and collect method namespace */ int fwts_acpi_init(fwts_framework *fw) { if (fwts_acpica_init(fw) != FWTS_OK) return FWTS_ERROR; /* Gather all object names */ fwts_object_names = fwts_acpica_get_object_names(0); fwts_acpi_initialized = true; return FWTS_OK; } /* * fwts_acpi_deinit() * Close ACPIA engine and free method namespace */ int fwts_acpi_deinit(fwts_framework *fw) { int ret = FWTS_ERROR; FWTS_UNUSED(fw); if (fwts_acpi_initialized) { fwts_list_free(fwts_object_names, free); fwts_object_names = NULL; ret = fwts_acpica_deinit(); fwts_acpi_initialized = false; } return ret; } /* * fwts_acpi_object_get_names() * return list of object names */ fwts_list *fwts_acpi_object_get_names(void) { return fwts_object_names; } /* * fwts_acpi_object_exists() * return first matching name */ char *fwts_acpi_object_exists(const char *name) { size_t name_len = strlen(name); fwts_list_link *item; fwts_list_foreach(item, fwts_object_names) { char *method_name = fwts_list_data(char*, item); size_t len = strlen(method_name); if (strncmp(name, method_name + len - name_len, name_len) == 0) return method_name; } return NULL; } /* * fwts_acpi_object_dump_recursive() * dump out an object, minimal form */ static void fwts_acpi_object_dump_recursive( fwts_framework *fw, const ACPI_OBJECT *obj, const int depth, const int index) { uint32_t i; char index_buf[5]; if (index > -1) snprintf(index_buf, sizeof(index_buf), "%2.2d: ", index); else index_buf[0] = '\0'; switch (obj->Type) { case ACPI_TYPE_INTEGER: fwts_log_info_verbatum(fw, "%*s%sINTEGER: 0x%8.8llx", depth * 2, "", index_buf, (unsigned long long)obj->Integer.Value); break; case ACPI_TYPE_STRING: fwts_log_info_verbatum(fw, "%*s%sSTRING: %s", depth * 2, "", index_buf, obj->String.Pointer); break; case ACPI_TYPE_BUFFER: fwts_log_info_verbatum(fw, "%*s%sBUFFER: (%d bytes)", depth * 2, "", index_buf, obj->Buffer.Length); break; case ACPI_TYPE_PACKAGE: fwts_log_info_verbatum(fw, "%*s%sPackage has %d elements:",depth * 2, "", index_buf, obj->Package.Count); for (i = 0; i < obj->Package.Count; i++) { ACPI_OBJECT *element = &obj->Package.Elements[i]; fwts_acpi_object_dump_recursive(fw, element, depth + 1, i); } break; default: fwts_log_info_verbatum(fw, "%*s%sUnknown type %d\n", depth * 2, "", index_buf, obj->Type); break; } } /* * fwts_method_object_dump() * dump out an object, minimal form */ void fwts_acpi_object_dump(fwts_framework *fw, const ACPI_OBJECT *obj) { fwts_acpi_object_dump_recursive(fw, obj, 1, -1); } /* * fwts_acpi_object_evaluate_report_error() * report any errors found during object evaluation */ void fwts_acpi_object_evaluate_report_error( fwts_framework *fw, const char *name, const ACPI_STATUS status) { int i; /* Generic cases */ for (i=0; errors[i].error_type; i++) { if (status == errors[i].status) { fwts_failed(fw, errors[i].level, errors[i].error_type, "Detected error '%s' when evaluating '%s'.", errors[i].error_text, name); if (errors[i].advice != NULL) fwts_advice(fw, "%s", errors[i].advice); return; } } /* Special cases */ switch (status) { case AE_OK: break; case AE_AML_INFINITE_LOOP: fwts_warning(fw, "Detected an infinite loop when evaluating method '%s'. ", name); fwts_advice(fw, "This may occur because we are emulating the execution " "in this test environment and cannot handshake with " "the embedded controller or jump to the BIOS via SMIs. " "However, the fact that AML code spins forever means that " "lockup conditions are not being checked for in the AML bytecode."); break; /* Unknown?! */ default: fwts_failed(fw, LOG_LEVEL_MEDIUM, "AMLFailedToEvaluate", "Failed to evaluate '%s', got error code %d.", name, status); break; } } /* * fwts_acpi_object_evaluate() * evaluate object, return error status (handle this with * fwts_method_evaluate_report_error()). * This returns buf which auto allocates any return values * which need to be freed post-evalutation using free(). */ ACPI_STATUS fwts_acpi_object_evaluate(fwts_framework *fw, char *name, ACPI_OBJECT_LIST *arg_list, ACPI_BUFFER *buf) { FWTS_UNUSED(fw); buf->Length = ACPI_ALLOCATE_BUFFER; buf->Pointer = NULL; return AcpiEvaluateObject(NULL, name, arg_list, buf); } src/lib/src/fwts_acpi_tables.c000066400000000000000000000674751231470457100167060ustar00rootroot00000000000000/* * Copyright (C) 2010-2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "fwts.h" #define BIOS_START (0x000e0000) /* Start of BIOS memory */ #define BIOS_END (0x000fffff) /* End of BIOS memory */ #define BIOS_LENGTH (BIOS_END - BIOS_START) /* Length of BIOS memory */ #define PAGE_SIZE (4096) #define ACPI_MAX_TABLES (64) /* Max number of ACPI tables */ static fwts_acpi_table_info tables[ACPI_MAX_TABLES]; typedef enum { ACPI_TABLES_NOT_LOADED = 0, ACPI_TABLES_LOADED_OK = 1, ACPI_TABLES_LOADED_FAILED = 2 } acpi_table_load_state; static acpi_table_load_state acpi_tables_loaded = ACPI_TABLES_NOT_LOADED; /* * fwts_acpi_find_rsdp_efi() * Get RSDP address from EFI if possible */ static inline void *fwts_acpi_find_rsdp_efi(void) { return fwts_scan_efi_systab("ACPI20"); } /* * fwts_acpi_find_rsdp_klog() * Get RSDP by parsing kernel log */ static void *fwts_acpi_find_rsdp_klog(void) { fwts_list *klog; fwts_list_link *item; void *rsdp = NULL; if ((klog = fwts_klog_read()) == NULL) return NULL; fwts_list_foreach(item, klog) { char *text = fwts_text_list_text(item); char *ptr = strstr(text, "ACPI: RSDP"); if (ptr) { rsdp = (void *)strtoul(ptr + 11, NULL, 16); break; } } fwts_text_list_free(klog); return rsdp; } /* * fwts_acpi_find_rsdp_bios() * Find RSDP address by scanning BIOS memory */ static void *fwts_acpi_find_rsdp_bios(void) { #ifdef FWTS_ARCH_INTEL uint8_t *bios; uint8_t *ptr; fwts_acpi_table_rsdp *rsdp; void *addr = 0; if ((bios = fwts_mmap(BIOS_START, BIOS_LENGTH)) == FWTS_MAP_FAILED) return 0; /* Scan BIOS for RSDP, ACPI spec states it is aligned on 16 byte intervals */ for (ptr = bios; ptr < (bios+BIOS_LENGTH); ptr += 16) { rsdp = (fwts_acpi_table_rsdp*)ptr; /* Look for RSD PTR string */ if (strncmp(rsdp->signature, "RSD PTR ",8) == 0) { int length = (rsdp->revision < 1) ? 20 : 36; if (fwts_checksum(ptr, length) == 0) { addr = (void*)(BIOS_START+(ptr - bios)); break; } } } (void)fwts_munmap(bios, BIOS_LENGTH); return addr; #else return NULL; #endif } /* * fwts_acpi_get_rsdp() * given the address of the rsdp, map in the region, copy it and * return the rsdp table. Return NULL if fails. */ static fwts_acpi_table_rsdp *fwts_acpi_get_rsdp(void *addr, size_t *rsdp_len) { uint8_t *mem; fwts_acpi_table_rsdp *rsdp = NULL; *rsdp_len = 0; if ((mem = fwts_mmap((off_t)addr, sizeof(fwts_acpi_table_rsdp))) == FWTS_MAP_FAILED) return NULL; rsdp = (fwts_acpi_table_rsdp*)mem; /* Determine original RSDP size from revision. */ *rsdp_len = (rsdp->revision < 1) ? 20 : 36; /* Must have the correct signature */ if (strncmp(rsdp->signature, "RSD PTR ", 8)) goto out; /* Assume version 2.0 size, we don't care about a few bytes over allocation if it's version 1.0 */ if ((rsdp = (fwts_acpi_table_rsdp*)fwts_low_calloc(1, sizeof(fwts_acpi_table_rsdp))) == NULL) goto out; memcpy(rsdp, mem, *rsdp_len); out: (void)fwts_munmap(mem, sizeof(fwts_acpi_table_rsdp)); return rsdp; } /* * fwts_acpi_load_table() * given the address of a ACPI table, map in firmware, find out size, * copy it and return the copy. Returns NULL if fails. */ static void *fwts_acpi_load_table(const off_t addr) { fwts_acpi_table_header *hdr; void *mem; void *table; int len; if ((hdr = fwts_mmap((off_t)addr, sizeof(fwts_acpi_table_header))) == FWTS_MAP_FAILED) return NULL; len = hdr->length; if (len < (int)sizeof(fwts_acpi_table_header)) return NULL; (void)fwts_munmap(hdr, sizeof(fwts_acpi_table_header)); if ((table = fwts_low_calloc(1, len)) == NULL) return NULL; if ((mem = fwts_mmap((off_t)addr, len)) == FWTS_MAP_FAILED) return NULL; memcpy(table, mem, len); (void)fwts_munmap(mem, len); return table; } /* * fwts_acpi_add_table() * Add a table to internal ACPI table cache. Ignore duplicates based on * their address. */ static void fwts_acpi_add_table( const char *name, /* Table Name */ const void *table, /* Table binary blob */ const uint64_t addr, /* Address of table */ const size_t length, /* Length of table */ const fwts_acpi_table_provenance provenance) /* Where we got the table from */ { int i; int which = 0; for (i=0;iheader.length >= 140)) { if (*addr64 == 0) { /* Work around buggy firmware, use 32 bit addr instead */ addr = (off_t)*addr32; fwts_log_warning(fw, "FADT %s 64 bit pointer was zero, " "falling back to using %s 32 bit pointer.", name_addr64, name_addr32); } else { /* Use default 64 bit addr */ addr = (off_t)*addr64; } /* Is it sane? */ if (addr == 0) { fwts_log_error(fw, "Failed to load %s: Cannot determine " "address of %s from FADT, fields %s and %s are zero.", name, name, name_addr32, name_addr64); return FWTS_ERROR; } } else if ((addr32 != NULL) && (fadt->header.length >= 44)) { addr = (off_t)*addr32; /* Is it sane? */ if (addr == 0) { fwts_log_error(fw, "Failed to load %s: Cannot determine " "address of %s from FADT, field %s is zero.", name, name, name_addr32); return FWTS_ERROR; } } else if (fadt->header.length < 44) { fwts_log_error(fw, "Failed to load %s: FADT is too small and " "does not have any %s or %s fields.", name, name_addr32, name_addr64); return FWTS_ERROR; } else { /* This should not happen, addr64 or addr32 are NULL */ fwts_log_error(fw, "Failed to load %s: fwts error with FADT.", name); return FWTS_ERROR; } /* Sane address found, load and add the table */ if ((header = fwts_acpi_load_table(addr)) == NULL) { fwts_log_error(fw, "Could not load %s from address 0x%" PRIx64 ".", name, (uint64_t)addr); return FWTS_ERROR; } fwts_acpi_add_table(header->signature, header, (uint64_t)addr, header->length, provenance); return FWTS_OK; } /* * fwts_acpi_handle_fadt() * The FADT points to the FACS and DSDT with either 32 or 64 bit pointers. * Locate the FACS and DSDT tables and load them. */ static int fwts_acpi_handle_fadt( fwts_framework *fw, const uint64_t phys_addr, const fwts_acpi_table_fadt *fadt, const fwts_acpi_table_provenance provenance) { static uint64_t facs_last_phys_addr; /* default to zero */ /* * The FADT handling may occur twice if it appears * in the RSDT and the XDST, so as an optimisation * we just need to handle it once. */ if (facs_last_phys_addr == phys_addr) return FWTS_OK; facs_last_phys_addr = phys_addr; /* Determine FACS addr and load it */ if (fwts_acpi_handle_fadt_tables(fw, fadt, "FACS", "FIRMWARE_CTRL", "X_FIRMWARE_CTRL", &fadt->firmware_control, &fadt->x_firmware_ctrl, provenance) != FWTS_OK) { return FWTS_ERROR; } /* Determine DSDT addr and load it */ if (fwts_acpi_handle_fadt_tables(fw, fadt, "DSDT", "DSTD", "X_DSDT", &fadt->dsdt, &fadt->x_dsdt, provenance) != FWTS_OK) { return FWTS_ERROR; } return FWTS_OK; } /* * fwts_acpi_load_tables_from_firmware() * Load up cached copies of all the ACPI tables */ static int fwts_acpi_load_tables_from_firmware(fwts_framework *fw) { fwts_acpi_table_rsdp *rsdp; fwts_acpi_table_xsdt *xsdt; fwts_acpi_table_rsdt *rsdt; fwts_acpi_table_header *header; void * rsdp_addr = NULL; size_t rsdp_len; int num_entries; int i; /* Check for RSDP as EFI, then BIOS, parsed klog, if not found, give up */ if (fw->rsdp) rsdp_addr = (void*)fw->rsdp; if (!rsdp_addr) rsdp_addr = fwts_acpi_find_rsdp_efi(); if (!rsdp_addr) rsdp_addr = fwts_acpi_find_rsdp_bios(); if (!rsdp_addr) rsdp_addr = fwts_acpi_find_rsdp_klog(); if (!rsdp_addr) return FWTS_ERROR; /* Load and save cached RSDP */ if ((rsdp = fwts_acpi_get_rsdp(rsdp_addr, &rsdp_len)) == NULL) return FWTS_ERROR; fwts_acpi_add_table("RSDP", rsdp, (uint64_t)(off_t)rsdp_addr, rsdp_len, FWTS_ACPI_TABLE_FROM_FIRMWARE); /* Load any tables from XSDT if it's valid */ if (rsdp->xsdt_address) { if ((xsdt = fwts_acpi_load_table((off_t)rsdp->xsdt_address)) != NULL) { fwts_acpi_add_table("XSDT", xsdt, (uint64_t)rsdp->xsdt_address, xsdt->header.length, FWTS_ACPI_TABLE_FROM_FIRMWARE); num_entries = (xsdt->header.length - sizeof(fwts_acpi_table_header)) / 8; for (i=0; ientries[i]) { if ((header = fwts_acpi_load_table((off_t)xsdt->entries[i])) != NULL) { if (strncmp("FACP", header->signature, 4) == 0) if (fwts_acpi_handle_fadt(fw, (uint64_t)xsdt->entries[i], (fwts_acpi_table_fadt *)header, FWTS_ACPI_TABLE_FROM_FIRMWARE) != FWTS_OK) goto fail; fwts_acpi_add_table(header->signature, header, xsdt->entries[i], header->length, FWTS_ACPI_TABLE_FROM_FIRMWARE); } } } } } /* Load any tables from RSDT if it's valid */ if (rsdp->rsdt_address) { if ((rsdt = fwts_acpi_load_table((off_t)rsdp->rsdt_address)) != NULL) { fwts_acpi_add_table("RSDT", rsdt, (uint64_t)rsdp->rsdt_address, rsdt->header.length, FWTS_ACPI_TABLE_FROM_FIRMWARE); num_entries = (rsdt->header.length - sizeof(fwts_acpi_table_header)) / 4; for (i=0; ientries[i]) { if ((header = fwts_acpi_load_table((off_t)rsdt->entries[i])) != NULL) { if (strncmp("FACP", header->signature, 4) == 0) if (fwts_acpi_handle_fadt(fw, (uint64_t)rsdt->entries[i], (fwts_acpi_table_fadt *)header, FWTS_ACPI_TABLE_FROM_FIRMWARE) != FWTS_OK) goto fail; fwts_acpi_add_table(header->signature, header, (uint64_t)rsdt->entries[i], header->length, FWTS_ACPI_TABLE_FROM_FIRMWARE); } } } } } return FWTS_OK; fail: /* * Free'ing the tables will cause acpica_init to fail * and so we abort any ACPI related tests */ fwts_acpi_free_tables(); return FWTS_ERROR; } /* * fwts_fake_physical_addr() * Loading tables from file may result in data without an originating * physical address of the table, so fake a unique 32 bit address for the table. */ static uint32_t fwts_fake_physical_addr(const size_t size) { static uint32_t fake_phys_addr = 0xbff00000; uint32_t addr = fake_phys_addr; fake_phys_addr += (size + 16); return addr; } /* * fwts_acpi_load_table_from_acpidump() * Load an ACPI table from the output of acpidump or fwts --dump */ static uint8_t *fwts_acpi_load_table_from_acpidump(FILE *fp, char *name, uint64_t *addr, size_t *size) { uint32_t offset; uint8_t data[16]; char buffer[128]; uint8_t *table; uint8_t *tmp = NULL; char *ptr = buffer; size_t len = 0; unsigned long long table_addr; ptrdiff_t name_len; *size = 0; if (fgets(buffer, sizeof(buffer), fp) == NULL) return NULL; /* * Parse tablename followed by address, e.g. * DSTD @ 0xbfa02344 * SSDT4 @ 0xbfa0f230 */ ptr = strstr(buffer, "@ 0x"); if (ptr == NULL) return NULL; /* Can't find table name */ name_len = ptr - buffer; /* * We should have no more than the table name (4..5 chars) * plus a space left between the start of the buffer and * the @ sign. If we have more then something is wrong with * the data. So just ignore this garbage as we don't want to * overflow the name on the following strcpy() */ if ((name_len > 6) || (name_len < 5)) return NULL; /* Name way too long or too short */ if (sscanf(ptr, "@ 0x%Lx\n", &table_addr) < 1) return NULL; /* Can't parse address */ *(ptr-1) = '\0'; strcpy(name, buffer); /* In fwts RSD PTR is known as the RSDP */ if (strncmp(name, "RSD PTR", 7) == 0) strcpy(name, "RSDP"); /* Pull in 16 bytes at a time */ while (fgets(buffer, sizeof(buffer), fp) ) { uint8_t *new_tmp; int n; buffer[56] = '\0'; /* truncate */ if ((n = sscanf(buffer," %x: %hhx %hhx %hhx %hhx %hhx %hhx %hhx %hhx %hhx %hhx %hhx %hhx %hhx %hhx %hhx %hhx", &offset, &data[0], &data[1], &data[2], &data[3], &data[4], &data[5], &data[6], &data[7], &data[8], &data[9], &data[10], &data[11], &data[12], &data[13], &data[14], &data[15])) < 1) break; len += (n - 1); if (len == 0) break; /* No data, must be corrupt input */ if ((new_tmp = realloc(tmp, len)) == NULL) { free(tmp); return NULL; } else tmp = new_tmp; memcpy(tmp + offset, data, n-1); } /* Allocate the table using low 32 bit memory */ if ((table = fwts_low_malloc(len)) == NULL) { free(tmp); return NULL; } memcpy(table, tmp, len); free(tmp); if (table_addr == 0) table_addr = fwts_fake_physical_addr(len); /* We may need to fake a physical address if its null */ *addr = (uint64_t)(table_addr == 0 ? fwts_fake_physical_addr(len) : table_addr); *size = len; return table; } /* * fwts_acpi_load_tables_from_acpidump() * Load in all ACPI tables from output of acpidump or fwts --dump */ static int fwts_acpi_load_tables_from_acpidump(fwts_framework *fw) { FILE *fp; if ((fp = fopen(fw->acpi_table_acpidump_file, "r")) == NULL) { fwts_log_error(fw, "Cannot open '%s' to read ACPI tables.", fw->acpi_table_acpidump_file); return FWTS_ERROR; } while (!feof(fp)) { uint64_t addr; uint8_t *table; size_t length; char name[16]; if ((table = fwts_acpi_load_table_from_acpidump(fp, name, &addr, &length)) != NULL) fwts_acpi_add_table(name, table, addr, length, FWTS_ACPI_TABLE_FROM_FILE); } fclose(fp); return FWTS_OK; } /* * fwts_acpi_load_table_from_file() * load table from a raw binary dump */ static uint8_t *fwts_acpi_load_table_from_file(const int fd, size_t *length) { uint8_t *ptr = NULL; ssize_t n; size_t size = 0; char buffer[4096]; *length = 0; while ((n = read(fd, buffer, sizeof(buffer))) > 0) { if (n < 0) { if (errno != EINTR && errno != EAGAIN) { fwts_low_free(ptr); return NULL; } } else { ptr = (uint8_t*)fwts_low_realloc(ptr, size + n + 1); if (ptr == NULL) return NULL; memcpy(ptr + size, buffer, n); size += n; } } *length = size; return ptr; } static int fwts_acpi_load_tables_from_file(fwts_framework *fw) { struct dirent **dir_entries; int count = 0; int i; /* * Read in directory in alphabetical name sorted order * to ensure the tables are always loaded into memory * in some form of deterministic order */ if ((count = scandir(fw->acpi_table_path, &dir_entries, 0, alphasort)) < 0) { fwts_log_error(fw, "Cannot open directory '%s' to read ACPI tables.", fw->acpi_table_path); return FWTS_ERROR; } for (i = 0; i < count; i++) { if (strstr(dir_entries[i]->d_name, ".dat")) { char path[PATH_MAX]; int fd; snprintf(path, sizeof(path), "%s/%s", fw->acpi_table_path, dir_entries[i]->d_name); if ((fd = open(path, O_RDONLY)) >= 0) { uint8_t *table; size_t length; if ((table = fwts_acpi_load_table_from_file(fd, &length)) != NULL) { char name[9]; /* "RSD PTR " or standard ACPI 4 letter name */ fwts_acpi_table_rsdp *rsdp = (fwts_acpi_table_rsdp *)table; /* Could be RSDP or a standard ACPI table, so check */ if (!strncmp(rsdp->signature, "RSD PTR ", 8)) { /* In fwts, RSD PTR is tagged as the RSDP */ strcpy(name, "RSDP"); } else { /* Assume it is a standard ACPI table */ fwts_acpi_table_header *hdr = (fwts_acpi_table_header *)table; strncpy(name, hdr->signature, 4); name[4] = '\0'; } if (!strncmp(name, "XSDT", 4) || !strncmp(name, "RSDT", 4)) { /* * For XSDT and RSDT we don't bother loading at this point. * These tables point to the other tables, however, we can't * figure out which table each pointer references because * we are loading in raw table data and we don't know where * these were located in the original machine. So the best * way forward is to ignore these tables and instead leave * the fix up stage fwts_acpi_load_tables_fixup() to magically * create faked XSDT and RSDT entries based on the tables * we've loaded from file. */ fwts_low_free(table); } else { fwts_acpi_add_table(name, table, (uint64_t)fwts_fake_physical_addr(length), length, FWTS_ACPI_TABLE_FROM_FILE); } } close(fd); } else fwts_log_error(fw, "Cannot load ACPI table from file '%s'\n", path); } free(dir_entries[i]); } free(dir_entries); if (count == 0) { fwts_log_error(fw, "Could not find any APCI tables in directory '%s'.\n", fw->acpi_table_path); return FWTS_ERROR; } return FWTS_OK; } /* * fwts_acpi_table_fixable() * return true if a table can be put into RSDT or XSDT */ static bool fwts_acpi_table_fixable(fwts_acpi_table_info *table) { fwts_acpi_table_header *header; if (table == NULL) return false; header = (fwts_acpi_table_header *)table->data; /* We don't want RSDT or XSDT in the RSDT and XSDT */ if (strncmp(header->signature, "RSDT", 4) == 0) return false; if (strncmp(header->signature, "XSDT", 4) == 0) return false; return true; } /* * fwts_acpi_load_tables_fixup() * tables loaded from file sometimes do not contain the original * physical address of the tables, so these need faking. Also, some * poor ACPI dumping implementations fail to save the RSDP, RSDT and * XSDT, so we need to create fake versions from scratch. */ static int fwts_acpi_load_tables_fixup(fwts_framework *fw) { int i, j, count; char *oem_tbl_id = "FWTS "; fwts_acpi_table_info *table; fwts_acpi_table_rsdp *rsdp = NULL; fwts_acpi_table_rsdt *rsdt = NULL; fwts_acpi_table_xsdt *xsdt = NULL; fwts_acpi_table_fadt *fadt = NULL; fwts_acpi_table_facs *facs = NULL; uint64_t rsdt_fake_addr = 0, xsdt_fake_addr = 0; bool redo_rsdp_checksum = false; /* Fetch the OEM Table ID */ if (fwts_acpi_find_table(fw, "FACP", 0, &table) != FWTS_OK) { fwts_log_error(fw, "ACPI table find failure."); return FWTS_ERROR; } if (table) { fadt = (fwts_acpi_table_fadt *)table->data; oem_tbl_id = fadt->header.oem_tbl_id; } else { fwts_log_error(fw, "Cannot find FACP."); return FWTS_ERROR; } /* Get FACS */ if (fwts_acpi_find_table(fw, "FACS", 0, &table) != FWTS_OK) { fwts_log_error(fw, "ACPI table find failure."); return FWTS_ERROR; } if (table) facs = (fwts_acpi_table_facs *)table->data; else { size_t size = 64; uint64_t facs_fake_addr; /* This is most unexpected, so warn about it */ fwts_log_warning(fw, "No FACS found, fwts has faked one instead."); if ((facs = fwts_low_calloc(1, size)) == NULL) { fwts_log_error(fw, "Cannot allocate fake FACS."); return FWTS_ERROR; } strncpy(facs->signature, "FACS", 4); facs->length = size; facs->hardware_signature = 0xf000a200; /* Some signature */ facs->flags = 0; facs->version = 2; facs_fake_addr = fwts_fake_physical_addr(size); fadt->firmware_control = (uint32_t)facs_fake_addr; if (fadt->header.length >= 140) fadt->x_firmware_ctrl = (uint64_t)facs_fake_addr; fwts_acpi_add_table("FACS", facs, (uint64_t)facs_fake_addr, size, FWTS_ACPI_TABLE_FROM_FIXUP); } /* Figure out how many tables we need to put into RSDT and XSDT */ for (count = 0, i = 0; ; i++) { if (fwts_acpi_get_table(fw, i, &table) != FWTS_OK) break; if (table == NULL) /* No more tables */ break; if (fwts_acpi_table_fixable(table)) count++; } /* Get RSDT */ if (fwts_acpi_find_table(fw, "RSDT", 0, &table) != FWTS_OK) { fwts_log_error(fw, "ACPI table find failure."); return FWTS_ERROR; } if (table) { rsdt = (fwts_acpi_table_rsdt *)table->data; rsdt_fake_addr = table->addr; } else { /* No RSDT? go and fake one */ size_t size = sizeof(fwts_acpi_table_rsdt) + (count * sizeof(uint32_t)); if ((rsdt = fwts_low_calloc(1, size)) == NULL) { fwts_log_error(fw, "Cannot allocate fake RSDT."); return FWTS_ERROR; } for (i=0,j=0; jentries[j++] = (uint32_t)table->addr; strncpy(rsdt->header.signature, "RSDT", 4); rsdt->header.length = size; rsdt->header.revision = 1; strncpy(rsdt->header.oem_id, "FWTS ", 6); strncpy(rsdt->header.oem_tbl_id, oem_tbl_id, 8); rsdt->header.oem_revision = 1; strncpy(rsdt->header.creator_id, "FWTS", 4); rsdt->header.creator_revision = 1; rsdt->header.checksum = 256 - fwts_checksum((uint8_t*)rsdt, size); rsdt_fake_addr = fwts_fake_physical_addr(size); fwts_acpi_add_table("RSDT", rsdt, rsdt_fake_addr, size, FWTS_ACPI_TABLE_FROM_FIXUP); } /* Get XSDT */ if (fwts_acpi_find_table(fw, "XSDT", 0, &table) != FWTS_OK) { fwts_log_error(fw, "ACPI table find failure."); return FWTS_ERROR; } if (table) { xsdt = (fwts_acpi_table_xsdt *)table->data; xsdt_fake_addr = table->addr; } else { /* No XSDT? go and fake one */ size_t size = sizeof(fwts_acpi_table_rsdt) + (count * sizeof(uint64_t)); if ((xsdt = fwts_low_calloc(1, size)) == NULL) { fwts_log_error(fw, "Cannot allocate fake XSDT."); return FWTS_ERROR; } for (i=0,j=0; jentries[j++] = table->addr; strncpy(xsdt->header.signature, "XSDT", 4); xsdt->header.length = size; xsdt->header.revision = 2; strncpy(xsdt->header.oem_id, "FWTS ", 6); strncpy(xsdt->header.oem_tbl_id, oem_tbl_id, 8); xsdt->header.oem_revision = 1; strncpy(xsdt->header.creator_id, "FWTS", 4); xsdt->header.creator_revision = 1; xsdt->header.checksum = 256 - fwts_checksum((uint8_t*)xsdt, size); xsdt_fake_addr = fwts_fake_physical_addr(size); fwts_acpi_add_table("XSDT", xsdt, xsdt_fake_addr, size, FWTS_ACPI_TABLE_FROM_FIXUP); } /* Get RSDP */ if (fwts_acpi_find_table(fw, "RSDP", 0, &table) != FWTS_OK) return FWTS_ERROR; if (table) rsdp = (fwts_acpi_table_rsdp *)table->data; else { /* No RSDP? go and fake one */ size_t size = sizeof(fwts_acpi_table_rsdp); if ((rsdp = fwts_low_calloc(1, size)) == NULL) { fwts_log_error(fw, "Cannot allocate fake RSDP."); return FWTS_ERROR; } strncpy(rsdp->signature, "RSD PTR ", 8); strncpy(rsdp->oem_id, "FWTS ", 6); rsdp->revision = 2; rsdp->length = sizeof(fwts_acpi_table_rsdp); rsdp->reserved[0] = 0; rsdp->reserved[1] = 0; rsdp->reserved[2] = 0; rsdp->checksum = 256 - fwts_checksum((uint8_t*)rsdp, 20); rsdp->extended_checksum = 256 - fwts_checksum((uint8_t*)rsdp, rsdp->length); fwts_acpi_add_table("RSDP", rsdp, (uint64_t)fwts_fake_physical_addr(size), sizeof(fwts_acpi_table_rsdp), FWTS_ACPI_TABLE_FROM_FIXUP); } /* Now we have all the tables, final fix up is required */ if (rsdp->rsdt_address != rsdt_fake_addr) { rsdp->rsdt_address = rsdt_fake_addr; redo_rsdp_checksum = true; } if ((rsdp->revision > 0) && (rsdp->length >= 36) && (rsdp->xsdt_address != xsdt_fake_addr)) { rsdp->xsdt_address = xsdt_fake_addr; redo_rsdp_checksum = true; } /* And update checksum if we've updated the rsdp */ if (redo_rsdp_checksum) { rsdp->checksum = 0; /* Clear old checksum */ rsdp->checksum = 256 - fwts_checksum((uint8_t*)rsdp, 20); rsdp->extended_checksum = 0; /* Clear old checksum */ rsdp->extended_checksum = 256 - fwts_checksum((uint8_t*)rsdp, rsdp->length); } return FWTS_OK; } /* * fwts_acpi_load_tables() * Load from firmware or from files in a specified directory */ int fwts_acpi_load_tables(fwts_framework *fw) { int ret = FWTS_ERROR; if (fw->acpi_table_path != NULL) ret = fwts_acpi_load_tables_from_file(fw); else if (fw->acpi_table_acpidump_file != NULL) ret = fwts_acpi_load_tables_from_acpidump(fw); else if (fwts_check_root_euid(fw, true) == FWTS_OK) ret = fwts_acpi_load_tables_from_firmware(fw); else ret = FWTS_ERROR_NO_PRIV; if (ret == FWTS_OK) { acpi_tables_loaded = ACPI_TABLES_LOADED_OK; /* Loading from file may require table address fixups */ if ((fw->acpi_table_path != NULL) || (fw->acpi_table_acpidump_file != NULL)) fwts_acpi_load_tables_fixup(fw); } else { acpi_tables_loaded = ACPI_TABLES_LOADED_FAILED; } return ret; } /* * fwts_acpi_find_table() * Search for an ACPI table. There may be more than one, so * specify the one using which. */ int fwts_acpi_find_table(fwts_framework *fw, const char *name, const int which, fwts_acpi_table_info **info) { int i; int ret; if (info == NULL) return FWTS_NULL_POINTER; *info = NULL; if (acpi_tables_loaded == ACPI_TABLES_NOT_LOADED) if ((ret = fwts_acpi_load_tables(fw)) != FWTS_OK) return ret; for (i=0;i= ACPI_MAX_TABLES)) return FWTS_ERROR; if (acpi_tables_loaded == ACPI_TABLES_NOT_LOADED) if ((ret = fwts_acpi_load_tables(fw)) != FWTS_OK) return ret; if (tables[index].data == NULL) return FWTS_OK; *info = &tables[index]; return FWTS_OK; } src/lib/src/fwts_acpid.c000066400000000000000000000052571231470457100155060ustar00rootroot00000000000000/* * Copyright (C) 2010-2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "fwts.h" #define ACPID_SOCKET "/var/run/acpid.socket" /* * fwts_acpi_event_open() * open socket to acpid, return fd */ int fwts_acpi_event_open(void) { struct sockaddr_un addr; int ret; int fd; if ((fd = socket(AF_UNIX, SOCK_STREAM, 0)) < 0) return fd; memset(&addr, 0, sizeof(addr)); addr.sun_family = AF_UNIX; strcpy(addr.sun_path, ACPID_SOCKET); if ((ret = connect(fd, (struct sockaddr *)&addr, sizeof(addr))) < 0) { close(fd); return ret; } if ((ret = fcntl(fd, F_SETFD, FD_CLOEXEC)) < 0) { close(fd); return ret; } return fd; } /* * fwts_acpi_event_read() * read event from acpid socket, wait for timeout secs */ char *fwts_acpi_event_read(const int fd, size_t *length, const int timeout) { char *ptr = NULL; char buffer[8192]; struct timeval tv; fd_set rfds; int ret; ssize_t n; size_t size = 0; *length = 0; ptr = NULL; tv.tv_sec = timeout; tv.tv_usec = 0; FD_ZERO(&rfds); FD_SET(fd, &rfds); ret = select(fd+1, &rfds, NULL, NULL, &tv); switch (ret) { case 0: /* timeout! */ return ptr; case -1: free(ptr); return NULL; default: n = read(fd, buffer, sizeof(buffer)); if (n < 0) { free(ptr); return NULL; } else { char *new_ptr; new_ptr = realloc(ptr, size + n + 1); if (new_ptr == NULL) { free(ptr); return NULL; } else ptr = new_ptr; memcpy(ptr + size, buffer, n); size += n; *(ptr+size) = 0; } } *length = size; return ptr; } /* * fwts_acpi_event_close() * close socket connection */ void fwts_acpi_event_close(const int fd) { close(fd); } src/lib/src/fwts_alloc.c000066400000000000000000000133521231470457100155130ustar00rootroot00000000000000/* * Copyright (C) 2011-2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #include #include #include #include #include #include "fwts_alloc.h" /* * We implement a low memory allocator to allow us to allocate * memory < 2G limit for the ACPICA table handling. On 64 bit * machines we habe to ensure that cached copies of ACPI tables * have addresses that can be addressed by the legacy 32 bit * ACPI table pointers. * * This implementation is not intended to be a malloc replacement * for all of fwts - only just for the cached ACPICA table allocations. * * Hence this implementation is not necessarily an efficient solution, * as it will only be used for a handful of tables. */ #define FWTS_ALLOC_MAGIC 0xf023cb1a typedef struct { void *start; size_t size; unsigned int magic; } fwts_mmap_header; #define CHUNK_SIZE (8192) /* page plus loads of slack */ #define LIMIT_2GB (0x80000000ULL) #define LIMIT_START (0x00010000ULL) #ifndef MAP_32BIT /* * fwts_low_mmap() * try to find a free space under the 2GB limit and mmap it. * returns address of mmap'd region or MAP_FAILED if failed. */ static void *fwts_low_mmap(const size_t requested_size) { FILE *fp; char buffer[1024]; char pathname[1024]; void *addr_start; void *addr_end; void *last_addr_end = NULL; void *first_addr_start = NULL; void *ret = MAP_FAILED; if (requested_size == 0) /* Illegal */ return MAP_FAILED; if ((fp = fopen("/proc/self/maps", "r")) == NULL) return MAP_FAILED; while (fgets(buffer, sizeof(buffer), fp) != NULL) { sscanf(buffer, "%p-%p %*s %*x %*s %*u %s", &addr_start, &addr_end, pathname); /* * Try and allocate under first mmap'd address space */ if ((first_addr_start == NULL) && (addr_start > (void*)LIMIT_START)) { size_t sz = (requested_size + CHUNK_SIZE) & ~(CHUNK_SIZE - 1); void *addr = addr_start - sz; /* * If addr is over the 2GB limit and we know * that this is the first mapping then we should * be able to map a region below the 2GB limit as * nothing is already mapped there */ if (addr > (void*)LIMIT_2GB) addr = (void*)LIMIT_2GB - sz; ret = mmap(addr, requested_size, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_FIXED | MAP_ANONYMOUS, -1, 0); if (ret != MAP_FAILED) break; /* Success! */ first_addr_start = addr_start; } /* * No allocation yet, so try now to squeeze one * in between already mapped regions */ if ((last_addr_end != NULL) && (last_addr_end < (void*)LIMIT_2GB)) { if ((addr_start - last_addr_end) > (ptrdiff_t)requested_size) { void *addr = last_addr_end; ret = mmap(addr, requested_size, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_FIXED | MAP_ANONYMOUS, -1, 0); if (ret != MAP_FAILED) break; /* Success! */ } } /* * We really don't want to mmap at the end of the heap * and if we've reached the stack we've gone too far so * abort */ if ((strncmp("[heap]", pathname, 6) == 0) || (strncmp("[stack]", pathname, 7) == 0)) { ret = MAP_FAILED; break; } last_addr_end = addr_end; } fclose(fp); return ret; } #endif /* * fwts_low_calloc() * same as calloc(), but ensure the region is mapped * into the low 2GB of memory. This is required for * allocated ACPI tables that need to be addressed * via legacy 32 bit pointers on 64 bit architectures. */ void *fwts_low_calloc(const size_t nmemb, const size_t size) { size_t n = nmemb * size; void *ret; fwts_mmap_header *hdr; n += sizeof(fwts_mmap_header); #ifdef MAP_32BIT /* Not portable, only x86 */ ret = mmap(NULL, n, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS | MAP_32BIT, -1, 0); #else if (sizeof(void *) == 4) { /* 32 bit mmap by default */ ret = mmap(NULL, n, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0); } else { /* We don't have a native MAP_32BIT, so bodge our own */ ret = fwts_low_mmap(n); } #endif if (ret == MAP_FAILED) return NULL; memset(ret, 0, n); /* save info so we can munmap() */ hdr = (fwts_mmap_header*)ret; hdr->start = ret; hdr->size = n; hdr->magic = FWTS_ALLOC_MAGIC; return (ret + sizeof(fwts_mmap_header)); } /* * fwts_low_malloc() */ void *fwts_low_malloc(const size_t size) { return fwts_low_calloc(1, size); } /* * fwts_low_realloc() * realloc memory - ptr must be NULL or * allocated with fwts_low_* allocators */ void *fwts_low_realloc(const void *ptr, const size_t size) { void *ret; fwts_mmap_header *hdr; if (ptr == NULL) return fwts_low_malloc(size); hdr = (fwts_mmap_header *) (ptr - sizeof(fwts_mmap_header)); /* sanity check */ if (hdr->magic != FWTS_ALLOC_MAGIC) return NULL; if ((ret = fwts_low_malloc(size)) == NULL) return NULL; memcpy(ret, ptr, hdr->size - sizeof(fwts_mmap_header)); fwts_low_free(ptr); return ret; } /* * fwts_low_free() * free memory allocated by fwts_low_calloc() */ void fwts_low_free(const void *ptr) { if (ptr) { fwts_mmap_header *hdr = (fwts_mmap_header *) (ptr - sizeof(fwts_mmap_header)); if (hdr->magic == FWTS_ALLOC_MAGIC) munmap(hdr, hdr->size); } } src/lib/src/fwts_args.c000066400000000000000000000206501231470457100153540ustar00rootroot00000000000000/* * Copyright (C) 2011-2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #include #include #include #include #include #include #include #include "fwts.h" /* * Internal options table, we keep a list of all of the added options and keep a tally * of how many options there are in each table. */ typedef struct { fwts_option *options; /* options array */ int num_options; /* number of options */ fwts_args_optarg_handler optarg_handler;/* options handler */ fwts_args_optarg_check optarg_check; /* options checker */ } fwts_options_table; static fwts_list options_list; static int total_options; static bool options_init = false; /* * fwts_args_init() * initialise. */ int fwts_args_init(void) { if (!options_init) { fwts_list_init(&options_list); total_options = 0; options_init = true; } return FWTS_OK; } /* * fwts_args_add_options() * add a table of options and handler for these options */ int fwts_args_add_options( fwts_option *options, fwts_args_optarg_handler handler, fwts_args_optarg_check check) { int n; fwts_options_table *options_table; if (!options_init) (void)fwts_args_init(); if ((options_table = calloc(1, sizeof(fwts_options_table))) == NULL) return FWTS_ERROR; for (n=0; options[n].long_name != NULL; n++) ; total_options += n; options_table->num_options = n; options_table->options = options; options_table->optarg_handler = handler; options_table->optarg_check = check; fwts_list_append(&options_list, options_table); return FWTS_OK; } /* * fwts_args_parse() * parse options */ int fwts_args_parse(fwts_framework *fw, const int argc, char * const argv[]) { fwts_list_link *item; fwts_options_table *options_table; struct option *long_options; int n = 0; int i; int c; int option_index; int ret = FWTS_OK; char *short_options = NULL; size_t short_options_len = 0; long_options = calloc(1, (total_options + 1) * sizeof(struct option)); if (long_options == NULL) { fwts_log_error(fw, "Out of memory allocating long options."); return FWTS_ERROR; } /* * Build a getopt_long options table from all the options tables */ fwts_list_foreach(item, &options_list) { options_table = fwts_list_data(fwts_options_table *, item); for (i=0; inum_options; i++, n++) { char *short_name = options_table->options[i].short_name; size_t len; long_options[n].name = options_table->options[i].long_name; long_options[n].has_arg = options_table->options[i].has_arg; long_options[n].flag = 0; long_options[n].val = 0; if (short_name && (len = strlen(short_name)) > 0) { if (short_options) { char *new_short_options; new_short_options = realloc(short_options, short_options_len + len + 1); if (new_short_options == NULL) { free(short_options); free(long_options); fwts_log_error(fw, "Out of memory " "allocating options."); return FWTS_ERROR; } else short_options = new_short_options; strcat(short_options, short_name); short_options_len += (len + 1); } else { short_options = calloc(1, len + 1); if (short_options == NULL) { free(long_options); fwts_log_error(fw, "Out of memory " "allocating options."); return FWTS_ERROR; } strcpy(short_options, short_name); short_options_len += (len + 1); } } } } for (;;) { c = getopt_long(argc, argv, short_options, long_options, &option_index); if (c == -1) break; fwts_list_foreach(item, &options_list) { options_table = fwts_list_data(fwts_options_table *, item); bool found = false; if (c != 0) { for (i=0; inum_options; i++, n++) { char *short_name = options_table->options[i].short_name; if (index(short_name, c) != NULL) { found = true; break; } } } else if (options_table->num_options > option_index) found = true; /* Found an option, then run the appropriate handler */ if (found) { ret = options_table->optarg_handler(fw, argc, argv, c, option_index); if (ret != FWTS_OK) goto exit; break; } else { option_index -= options_table->num_options; } } } /* We've collected all the args, now sanity check the values */ fwts_list_foreach(item, &options_list) { options_table = fwts_list_data(fwts_options_table *, item); if (options_table->optarg_check != NULL) { ret = options_table->optarg_check(fw); if (ret != FWTS_OK) break; } } exit: free(short_options); free(long_options); return ret; } /* * fwts_args_compare_options() * helper to enable sorting on long options name */ static int fwts_args_compare_options(void *data1, void *data2) { fwts_option *opt1 = (fwts_option*)data1; fwts_option *opt2 = (fwts_option*)data2; return strcmp(opt1->long_name, opt2->long_name); } #define FWTS_ARGS_WIDTH 28 #define FWTS_MIN_TTY_WIDTH 50 /* * fwts_args_show_option() * pretty print an option */ static void fwts_args_show_option( const int width, const char *option, const char *explanation) { fwts_list *text; fwts_list_link *item; int lineno = 0; text = fwts_format_text(explanation, width < 0 ? (FWTS_MIN_TTY_WIDTH - FWTS_ARGS_WIDTH-1) : width); fwts_list_foreach(item, text) { printf("%-*.*s %s\n", FWTS_ARGS_WIDTH, FWTS_ARGS_WIDTH, lineno++ == 0 ? option : "", fwts_list_data(char *, item)); } fwts_list_free(text, free); } /* * fwts_args_show_options() * show all options and brief explanation */ void fwts_args_show_options(void) { int i; int width; fwts_list_link *item; fwts_list sorted_options; fwts_list_init(&sorted_options); width = fwts_tty_width(fileno(stdin), FWTS_MIN_TTY_WIDTH); if ((width - (FWTS_ARGS_WIDTH + 1)) < 0) width = FWTS_MIN_TTY_WIDTH; width -= (FWTS_ARGS_WIDTH + 1); fwts_list_foreach(item, &options_list) { fwts_options_table *options_table; options_table = fwts_list_data(fwts_options_table *, item); for (i=0; inum_options; i++) { fwts_list_add_ordered(&sorted_options, &options_table->options[i], fwts_args_compare_options); } } fwts_list_foreach(item, &sorted_options) { char buffer[80]; char *ptr = buffer; fwts_option *option = fwts_list_data(fwts_option *, item); /* Format up short name, skip over : fields */ *ptr = '\0'; if ((option->short_name != NULL) && *(option->short_name)) { char ch; for (i=0; (ch = option->short_name[i]) != '\0'; i++) { if (ch != ':') { *ptr++ = '-'; *ptr++ = ch; *ptr++ = ','; *ptr++ = ' '; *ptr = '\0'; } } } strcat(ptr, "--"); strcat(ptr, option->long_name); fwts_args_show_option(width, buffer, option->explanation); } fwts_list_free_items(&sorted_options, NULL); } /* * fwts_args_free() * free option descriptor list */ int fwts_args_free(void) { fwts_list_free_items(&options_list, free); return FWTS_OK; } /* * fwts_args_comma_list * given a comma separated list, return a string of space separated terms. * returns NULL if failed */ char *fwts_args_comma_list(const char *arg) { char *tmpstr; char *token; char *saveptr = NULL; char *retstr = NULL; char *tmparg; if ((tmparg = strdup(arg)) == NULL) return NULL; for (tmpstr = tmparg; (token = strtok_r(tmpstr, ",", &saveptr)) != NULL; tmpstr = NULL) { if (retstr) if ((retstr = fwts_realloc_strcat(retstr, " ")) == NULL) { free(tmparg); return NULL; } if ((retstr = fwts_realloc_strcat(retstr, token)) == NULL) { free(tmparg); return NULL; } } free(tmparg); /* Any empty list should return an empty string and not NULL */ if (retstr == NULL) retstr = calloc(1, 1); /* Return NULL on calloc failure must be handled by caller */ return retstr; } src/lib/src/fwts_battery.c000066400000000000000000000403721231470457100160750ustar00rootroot00000000000000/* * Copyright (C) 2011-2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #include "fwts.h" #include #include #include #include #include #include #include #include static int fwts_battery_get_capacity_sys_fs(fwts_framework *fw, DIR *dir, const int type, const int index, uint32_t *capacity_mAh, /* charge */ uint32_t *capacity_mWh, /* energy */ int *count) { struct dirent *entry; char *field_mAh; char *field_mWh; size_t field_mAh_len; size_t field_mWh_len; int i = 0; switch (type) { case FWTS_BATTERY_DESIGN_CAPACITY: field_mAh = "POWER_SUPPLY_CHARGE_FULL_DESIGN="; field_mWh = "POWER_SUPPLY_ENERGY_FULL_DESIGN="; break; case FWTS_BATTERY_REMAINING_CAPACITY: field_mAh = "POWER_SUPPLY_CHARGE_NOW="; field_mWh = "POWER_SUPPLY_ENERGY_NOW="; break; default: return FWTS_ERROR; } field_mAh_len = strlen(field_mAh); field_mWh_len = strlen(field_mWh); do { entry = readdir(dir); if (entry && strlen(entry->d_name) > 2) { char path[PATH_MAX]; char *data; int val; FILE *fp; bool match; /* Check that type field matches the expected type */ snprintf(path, sizeof(path), "%s/%s/type", FWTS_SYS_CLASS_POWER_SUPPLY, entry->d_name); if ((data = fwts_get(path)) != NULL) { bool mismatch = (strstr(data, "Battery") == NULL); free(data); if (mismatch) continue; /* type don't match, skip this entry */ } else continue; /* can't check type, skip this entry */ match = ((index == FWTS_BATTERY_ALL) || (index == i)); i++; if (!match) continue; snprintf(path, sizeof(path), "%s/%s/uevent", FWTS_SYS_CLASS_POWER_SUPPLY, entry->d_name); if ((fp = fopen(path, "r")) == NULL) { fwts_log_info(fw, "Battery %s present but undersupported - no state present.", entry->d_name); } else { char buffer[4096]; while (fgets(buffer, sizeof(buffer)-1, fp) != NULL) { if (strstr(buffer, field_mAh) && strlen(buffer) > field_mAh_len) { sscanf(buffer+field_mAh_len, "%d", &val); *capacity_mAh += (val / 1000); (*count)++; } if (strstr(buffer, field_mWh) && strlen(buffer) > field_mWh_len) { sscanf(buffer+field_mWh_len, "%d", &val); *capacity_mWh += (val / 1000); (*count)++; } } fclose(fp); } } } while (entry); return FWTS_OK; } static int fwts_battery_get_capacity_proc_fs(fwts_framework *fw, DIR *dir, const int type, const int index, uint32_t *capacity_mAh, uint32_t *capacity_mWh, int *count) { struct dirent *entry; char *file; char *field; int i = 0; switch (type) { case FWTS_BATTERY_DESIGN_CAPACITY: file = "info"; field = "design capacity"; break; case FWTS_BATTERY_REMAINING_CAPACITY: file = "state"; field = "remaining capacity"; break; default: return FWTS_ERROR; } do { entry = readdir(dir); if (entry && strlen(entry->d_name) > 2) { char path[PATH_MAX]; char units[64]; int val; FILE *fp; bool match = ((index == FWTS_BATTERY_ALL) || (index == i)); i++; if (!match) continue; snprintf(path, sizeof(path), "%s/%s/%s", FWTS_PROC_ACPI_BATTERY, entry->d_name, file); if ((fp = fopen(path, "r")) == NULL) { fwts_log_info(fw, "Battery %s present but undersupported - no state present.", entry->d_name); } else { char buffer[4096]; while (fgets(buffer, sizeof(buffer)-1, fp) != NULL) { if (strstr(buffer, field) && strlen(buffer) > 25) { sscanf(buffer+25, "%d %s", &val, units); if (strncmp(units, "mAh",3) == 0) { *capacity_mAh += val; (*count)++; } if (strncmp(units, "mWh",3) == 0) { *capacity_mWh += val; (*count)++; } break; } } fclose(fp); } } } while (entry); return FWTS_OK; } static int fwts_battery_get_count_sys_fs(DIR *dir, int *count) { struct dirent *entry; char path[PATH_MAX]; char *data; do { entry = readdir(dir); if (entry && strlen(entry->d_name) > 2) { /* Check that type field matches the expected type */ snprintf(path, sizeof(path), "%s/%s/type", FWTS_SYS_CLASS_POWER_SUPPLY, entry->d_name); if ((data = fwts_get(path)) != NULL) { if (strstr(data, "Battery") != NULL) (*count)++; free(data); } } } while (entry); return FWTS_OK; } static int fwts_battery_get_count_proc_fs(DIR *dir, int *count) { struct dirent *entry; do { entry = readdir(dir); if (entry && strlen(entry->d_name) > 2) (*count)++; } while (entry); return FWTS_OK; } static int fwts_battery_get_name_sys_fs( DIR *dir, const int index, char *name) { struct dirent *entry; char path[PATH_MAX]; char *data; int i = 0; do { entry = readdir(dir); if (entry && strlen(entry->d_name) > 2) { bool match; /* Check that type field matches the expected type */ snprintf(path, sizeof(path), "%s/%s/type", FWTS_SYS_CLASS_POWER_SUPPLY, entry->d_name); if ((data = fwts_get(path)) != NULL) { bool mismatch = (strstr(data, "Battery") == NULL); free(data); if (mismatch) continue; /* type don't match, skip this entry */ } else continue; /* can't check type, skip this entry */ match = ((index == FWTS_BATTERY_ALL) || (index == i)); i++; if (!match) continue; strcpy(name, entry->d_name); return FWTS_OK; } } while (entry); return FWTS_ERROR; } static int fwts_battery_get_name_proc_fs( DIR *dir, const int index, char *name) { struct dirent *entry; int i = 0; do { entry = readdir(dir); if (entry && strlen(entry->d_name) > 2) { bool match = ((index == FWTS_BATTERY_ALL) || (index == i)); i++; if (!match) continue; strcpy(name, entry->d_name); return FWTS_OK; } } while (entry); return FWTS_ERROR; } static int fwts_battery_get_cycle_count_sys_fs( fwts_framework *fw, DIR *dir, const int index, int *cycle_count) { struct dirent *entry; char *field_cycle_count; size_t field_cycle_count_len; int i = 0; *cycle_count = 0; field_cycle_count = "POWER_SUPPLY_CYCLE_COUNT="; field_cycle_count_len = strlen(field_cycle_count); do { entry = readdir(dir); if (entry && strlen(entry->d_name) > 2) { char path[PATH_MAX]; char *data; int val; FILE *fp; bool match; /* Check that type field matches the expected type */ snprintf(path, sizeof(path), "%s/%s/type", FWTS_SYS_CLASS_POWER_SUPPLY, entry->d_name); if ((data = fwts_get(path)) != NULL) { bool mismatch = (strstr(data, "Battery") == NULL); free(data); if (mismatch) continue; /* type don't match, skip this entry */ } else continue; /* can't check type, skip this entry */ match = ((index == FWTS_BATTERY_ALL) || (index == i)); i++; if (!match) continue; snprintf(path, sizeof(path), "%s/%s/uevent", FWTS_SYS_CLASS_POWER_SUPPLY, entry->d_name); if ((fp = fopen(path, "r")) == NULL) { fwts_log_info(fw, "Battery %s present but undersupported - no state present.", entry->d_name); } else { char buffer[4096]; while (fgets(buffer, sizeof(buffer)-1, fp) != NULL) { if (strstr(buffer, field_cycle_count) && strlen(buffer) > field_cycle_count_len) { sscanf(buffer+field_cycle_count_len, "%d", &val); *cycle_count = val; } } fclose(fp); } } } while (entry); return FWTS_OK; } static int fwts_battery_get_cycle_count_proc_fs( fwts_framework *fw, DIR *dir, const int index, int *cycle_count) { struct dirent *entry; char *file; char *field; int i = 0; *cycle_count = 0; file = "info"; field = "cycle count"; do { entry = readdir(dir); if (entry && strlen(entry->d_name) > 2) { char path[PATH_MAX]; int val; FILE *fp; bool match = ((index == FWTS_BATTERY_ALL) || (index == i)); i++; if (!match) continue; snprintf(path, sizeof(path), "%s/%s/%s", FWTS_PROC_ACPI_BATTERY, entry->d_name, file); if ((fp = fopen(path, "r")) == NULL) { fwts_log_info(fw, "Battery %s present but undersupported - no state present.", entry->d_name); } else { char buffer[4096]; while (fgets(buffer, sizeof(buffer)-1, fp) != NULL) { if (strstr(buffer, field) && strlen(buffer) > 25) { sscanf(buffer+25, "%d", &val); *cycle_count = val; break; } } fclose(fp); } } } while (entry); return FWTS_OK; } static int fwts_battery_set_trip_point_sys_fs( fwts_framework *fw, DIR *dir, const int index, const int trip_point) { struct dirent *entry; int i = 0; do { entry = readdir(dir); if (entry && strlen(entry->d_name) > 2) { char path[PATH_MAX]; char *data; FILE *fp; bool match; /* Check that type field matches the expected type */ snprintf(path, sizeof(path), "%s/%s/type", FWTS_SYS_CLASS_POWER_SUPPLY, entry->d_name); if ((data = fwts_get(path)) != NULL) { bool mismatch = (strstr(data, "Battery") == NULL); free(data); if (mismatch) continue; /* type don't match, skip this entry */ } else continue; /* can't check type, skip this entry */ match = ((index == FWTS_BATTERY_ALL) || (index == i)); i++; if (!match) continue; snprintf(path, sizeof(path), "%s/%s/alarm", FWTS_SYS_CLASS_POWER_SUPPLY, entry->d_name); if ((fp = fopen(path, "rw+")) == NULL) { fwts_log_info(fw, "Battery %s present but undersupported - no state present.", entry->d_name); } else { char buffer[512]; sprintf(buffer, "%d", trip_point * 1000); fputs(buffer, fp); fclose(fp); } } } while (entry); return FWTS_OK; } static int fwts_battery_get_trip_point_sys_fs( fwts_framework *fw, DIR *dir, const int index, int *trip_point) { struct dirent *entry; int i = 0; *trip_point = 0; do { entry = readdir(dir); if (entry && strlen(entry->d_name) > 2) { char path[PATH_MAX]; char *data; int val; FILE *fp; bool match; /* Check that type field matches the expected type */ snprintf(path, sizeof(path), "%s/%s/type", FWTS_SYS_CLASS_POWER_SUPPLY, entry->d_name); if ((data = fwts_get(path)) != NULL) { bool mismatch = (strstr(data, "Battery") == NULL); free(data); if (mismatch) continue; /* type don't match, skip this entry */ } else continue; /* can't check type, skip this entry */ match = ((index == FWTS_BATTERY_ALL) || (index == i)); i++; if (!match) continue; snprintf(path, sizeof(path), "%s/%s/alarm", FWTS_SYS_CLASS_POWER_SUPPLY, entry->d_name); if ((fp = fopen(path, "r")) == NULL) { fwts_log_info(fw, "Battery %s present but undersupported - no state present.", entry->d_name); } else { char buffer[4096]; while (fgets(buffer, sizeof(buffer)-1, fp) != NULL) { sscanf(buffer, "%d", &val); *trip_point = val / 1000; } fclose(fp); } } } while (entry); return FWTS_OK; } static int fwts_battery_set_trip_point_proc_fs( fwts_framework *fw, DIR *dir, const int index, const int trip_point) { struct dirent *entry; int i = 0; do { entry = readdir(dir); if (entry && strlen(entry->d_name) > 2) { char path[PATH_MAX]; FILE *fp; bool match = ((index == FWTS_BATTERY_ALL) || (index == i)); i++; if (!match) continue; snprintf(path, sizeof(path), "%s/%s/alarm", FWTS_PROC_ACPI_BATTERY, entry->d_name); if ((fp = fopen(path, "rw+")) == NULL) { fwts_log_info(fw, "Battery %s present but undersupported - no state present.", entry->d_name); } else { char buffer[512]; sprintf(buffer, "%d", trip_point); fputs(buffer, fp); fclose(fp); } } } while (entry); return FWTS_OK; } static int fwts_battery_get_trip_point_proc_fs( fwts_framework *fw, DIR *dir, const int index, int *trip_point) { struct dirent *entry; int i = 0; *trip_point = 0; do { entry = readdir(dir); if (entry && strlen(entry->d_name) > 2) { char path[PATH_MAX]; int val; FILE *fp; bool match = ((index == FWTS_BATTERY_ALL) || (index == i)); i++; if (!match) continue; snprintf(path, sizeof(path), "%s/%s/alarm", FWTS_PROC_ACPI_BATTERY, entry->d_name); if ((fp = fopen(path, "r")) == NULL) { fwts_log_info(fw, "Battery %s present but undersupported - no state present.", entry->d_name); } else { char buffer[4096]; while (fgets(buffer, sizeof(buffer)-1, fp) != NULL) { if (strstr(buffer, "alarm:") && strlen(buffer) > 25) { sscanf(buffer + 25, "%d", &val); *trip_point = val; break; } } fclose(fp); } } } while (entry); return FWTS_OK; } int fwts_battery_set_trip_point( fwts_framework *fw, const int index, const int trip_point) { int ret; DIR *dir; if ((dir = opendir(FWTS_SYS_CLASS_POWER_SUPPLY)) != NULL) { ret = fwts_battery_set_trip_point_sys_fs(fw, dir, index, trip_point); closedir(dir); } else if ((dir = opendir(FWTS_PROC_ACPI_BATTERY)) != NULL) { ret = fwts_battery_set_trip_point_proc_fs(fw, dir, index, trip_point); closedir(dir); } else { return FWTS_ERROR; } return ret; } int fwts_battery_get_trip_point( fwts_framework *fw, const int index, int *trip_point) { int ret; DIR *dir; if ((dir = opendir(FWTS_SYS_CLASS_POWER_SUPPLY)) != NULL) { ret = fwts_battery_get_trip_point_sys_fs(fw, dir, index, trip_point); closedir(dir); } else if ((dir = opendir(FWTS_PROC_ACPI_BATTERY)) != NULL) { ret = fwts_battery_get_trip_point_proc_fs(fw, dir, index, trip_point); closedir(dir); } else { return FWTS_ERROR; } return ret; } bool fwts_battery_check_trip_point_support( fwts_framework *fw, const int index) { int trip_point; if (!(fwts_battery_get_trip_point(fw, index, &trip_point) == FWTS_OK)) return false; if (trip_point == 0) return false; return true; } int fwts_battery_get_cycle_count( fwts_framework *fw, const int index, int *cycle_count) { int ret; DIR *dir; if ((dir = opendir(FWTS_SYS_CLASS_POWER_SUPPLY)) != NULL) { ret = fwts_battery_get_cycle_count_sys_fs(fw, dir, index, cycle_count); closedir(dir); } else if ((dir = opendir(FWTS_PROC_ACPI_BATTERY)) != NULL) { ret = fwts_battery_get_cycle_count_proc_fs(fw, dir, index, cycle_count); closedir(dir); } else { return FWTS_ERROR; } return ret; } int fwts_battery_get_name( fwts_framework *fw, const int index, char *name) { int ret; DIR *dir; FWTS_UNUSED(fw); if ((dir = opendir(FWTS_SYS_CLASS_POWER_SUPPLY)) != NULL) { ret = fwts_battery_get_name_sys_fs(dir, index, name); closedir(dir); } else if ((dir = opendir(FWTS_PROC_ACPI_BATTERY)) != NULL) { ret = fwts_battery_get_name_proc_fs(dir, index, name); closedir(dir); } else { return FWTS_ERROR; } return ret; } int fwts_battery_get_count(fwts_framework *fw, int *count) { *count = 0; int ret; DIR *dir; FWTS_UNUSED(fw); if ((dir = opendir(FWTS_SYS_CLASS_POWER_SUPPLY)) != NULL) { ret = fwts_battery_get_count_sys_fs(dir, count); closedir(dir); } else if ((dir = opendir(FWTS_PROC_ACPI_BATTERY)) != NULL) { ret = fwts_battery_get_count_proc_fs(dir, count); closedir(dir); } else { return FWTS_ERROR; } return ret; } int fwts_battery_get_capacity(fwts_framework *fw, const int type, const int index, uint32_t *capacity_mAh, uint32_t *capacity_mWh) { int ret; DIR *dir; int n = 0; *capacity_mAh = 0; *capacity_mWh = 0; if ((dir = opendir(FWTS_SYS_CLASS_POWER_SUPPLY)) != NULL) { ret = fwts_battery_get_capacity_sys_fs(fw, dir, type, index, capacity_mAh, capacity_mWh, &n); closedir(dir); } else if ((dir = opendir(FWTS_PROC_ACPI_BATTERY)) != NULL) { ret = fwts_battery_get_capacity_proc_fs(fw, dir, type, index, capacity_mAh, capacity_mWh, &n); closedir(dir); } else { fwts_log_info(fw, "No battery information present: cannot test."); return FWTS_ERROR; } if ((ret == FWTS_ERROR) || (n == 0)) { fwts_log_info(fw, "No valid battery information present: cannot test."); return FWTS_ERROR; } return FWTS_OK; } src/lib/src/fwts_binpaths.c000066400000000000000000000025611231470457100162310ustar00rootroot00000000000000/* * Copyright (C) 2010-2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #include #include #include #include "fwts_types.h" #include "fwts_framework.h" #define FLAGS (S_IROTH | S_IXOTH) /* * fwts_check_executable() * check if given file is an executable */ int fwts_check_executable(fwts_framework *fw, const char *path, const char *name) { struct stat statbuf; if (stat(path, &statbuf)) { fwts_log_error(fw, "ERROR: Cannot find %s, make sure %s is installed.", path, name); return FWTS_ERROR; } if ((statbuf.st_mode & FLAGS) != FLAGS) { fwts_log_error(fw, "ERROR: Cannot read/execute %s.", path); return FWTS_ERROR; } return FWTS_OK; } src/lib/src/fwts_button.c000066400000000000000000000062351231470457100157360ustar00rootroot00000000000000/* * Copyright (C) 2011-2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #include "fwts.h" #include #include #include #include #include #include #include #include #define FWTS_PROC_ACPI_BUTTON "/proc/acpi/button" /* * fwts_button_match_state_proc() * find matching button state and keep count of matching * any non-matching states found, via proc iterface */ static int fwts_button_match_state_proc( const int button, int *matched, int *not_matched) { DIR *dir; struct dirent *entry; char *acpi_button_lid = FWTS_PROC_ACPI_BUTTON "/lid"; char *acpi_button_power = FWTS_PROC_ACPI_BUTTON "/power"; char *button_dir; char *field; char *match; switch (button) { case FWTS_BUTTON_LID_ANY: button_dir = acpi_button_lid; field = "state"; match = ""; break; case FWTS_BUTTON_LID_OPENED: button_dir = acpi_button_lid; field = "state"; match = "open"; break; case FWTS_BUTTON_LID_CLOSED: button_dir = acpi_button_lid; field = "state"; match = "close"; break; case FWTS_BUTTON_POWER_EXISTS: button_dir = acpi_button_power; field = "info"; match = "Power Button"; break; default: return FWTS_ERROR; } if ((dir = opendir(button_dir)) == NULL) return FWTS_ERROR; do { entry = readdir(dir); if (entry && strlen(entry->d_name) > 2) { char path[PATH_MAX]; char *data; snprintf(path, sizeof(path), "%s/%s/%s", button_dir, entry->d_name, field); if ((data = fwts_get(path)) != NULL) { if (strstr(data, match)) (*matched)++; else (*not_matched)++; } } } while (entry); closedir(dir); return FWTS_OK; } /* * fwts_button_match_state() * find matching button state and keep count of matching * any non-matching states found * * The button state can be: * FWTS_BUTTON_LID_ANY - match any LID button state * FWTS_BUTTON_LID_OPENED - match any LID buttons that are open * FWTS_BUTTON_LID_CLOSED - match any LID buttons that are closed * FWTS_BUTTON_POWER_EXISTS - match any power putton states * * matched is a count of any button states that match, and not_matched * is a count of any button states that don't match. */ int fwts_button_match_state( fwts_framework *fw, const int button, int *matched, int *not_matched) { *matched = 0; *not_matched = 0; FWTS_UNUSED(fw); if (access(FWTS_PROC_ACPI_BUTTON, R_OK) == 0) return fwts_button_match_state_proc(button, matched, not_matched); return FWTS_ERROR; } src/lib/src/fwts_checkeuid.c000066400000000000000000000022401231470457100163370ustar00rootroot00000000000000/* * Copyright (C) 2010-2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #include #include #include #include "fwts.h" /* * fwts_check_root_euid() * Check if user has privileges to access ports, memory, etc */ int fwts_check_root_euid(fwts_framework *fw, const bool warn) { if (geteuid() != 0) { if (warn) fwts_log_error(fw, "Must be run as root or sudo to be able to read system information."); return FWTS_ERROR; } return FWTS_OK; } src/lib/src/fwts_checksum.c000066400000000000000000000017661231470457100162310ustar00rootroot00000000000000/* * Copyright (C) 2010-2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #include "fwts.h" /* * fwts_checksum() * checksum a uint8_t * buffer */ uint8_t fwts_checksum(const uint8_t *data, const int length) { int i; uint8_t checksum = 0; for (i=0; i < length; i++) checksum += *data++; return checksum; } src/lib/src/fwts_cmos.c000066400000000000000000000035021231470457100153560ustar00rootroot00000000000000/* * Copyright (C) 2010-2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #include #include "fwts.h" #ifdef FWTS_ARCH_INTEL #include /* * fwts_cmos_read() * read a byte from cmos memory at a given offset */ int fwts_cmos_read(const uint8_t offset, uint8_t *value) { int ret = FWTS_OK; *value = ~0; /* Default in case of error */ if (ioperm(0x70, 2, 1) < 0) return FWTS_ERROR; if (ioperm(0x80, 1, 1) < 0) { ret = FWTS_ERROR; goto tidy0x70; } /* Want to disable interrupts */ if (iopl(3) < 0) { ret = FWTS_ERROR; goto tidy0x80; } asm("cli"); /* specify offset to read */ if (fwts_outb(offset, 0x70) != FWTS_OK) { ret = FWTS_ERROR; goto tidy; } /* Small Delay */ if (fwts_outb(0, 0x80) != FWTS_OK) { ret = FWTS_ERROR; goto tidy; } /* get the CMOS value */ if (fwts_inb(0x71, value) != FWTS_OK) ret = FWTS_ERROR; tidy: asm("sti"); (void)iopl(0); tidy0x80: (void)ioperm(0x80, 1, 0); tidy0x70: (void)ioperm(0x70, 2, 0); return ret; } #else int fwts_cmos_read(const uint8_t offset, uint8_t *value) { FWTS_UNUSED(offset); *value = ~0; /* Fake a failed read */ return FWTS_ERROR; } #endif src/lib/src/fwts_cpu.c000066400000000000000000000214551231470457100152130ustar00rootroot00000000000000/* * Copyright (C) 2010-2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #define _FILE_OFFSET_BITS 64 #define _GNU_SOURCE #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "fwts_types.h" #include "fwts_cpu.h" #include "fwts_pipeio.h" static int fwts_cpu_num; static pid_t *fwts_cpu_pids; #define MSR_AMD64_OSVW_ID_LENGTH 0xc0010140 #define MSR_AMD64_OSVW_STATUS 0xc0010141 /* * fwts_cpu_readmsr() * Read a given msr on a specificied CPU */ int fwts_cpu_readmsr(const int cpu, const uint32_t reg, uint64_t *val) { char buffer[PATH_MAX]; uint64_t value = 0; int fd; int ret; snprintf(buffer, sizeof(buffer), "/dev/cpu/%d/msr", cpu); if ((fd = open(buffer, O_RDONLY)) < 0) { /* Hrm, msr not there, so force modprobe msr and see what happens */ pid_t pid; if ((fd = fwts_pipe_open("modprobe msr", &pid)) < 0) return FWTS_ERROR; fwts_pipe_close(fd, pid); if ((fd = open(buffer, O_RDONLY)) < 0) return FWTS_ERROR; /* Really failed */ } ret = pread(fd, &value, 8, reg); close(fd); *val = value; if (ret<0) return FWTS_ERROR; return FWTS_OK; } /* * fwts_cpu_free_info() * free CPU information */ void fwts_cpu_free_info(fwts_cpuinfo_x86 *cpu) { if (cpu) { free(cpu->vendor_id); free(cpu->model_name); free(cpu->flags); } free(cpu); } /* * fwts_cpu_get_info() * get CPU information for specified CPU */ fwts_cpuinfo_x86 *fwts_cpu_get_info(const int which_cpu) { FILE *fp; char buffer[1024]; fwts_cpuinfo_x86 *cpu; int cpu_num = -1; if ((cpu = (fwts_cpuinfo_x86*)calloc(1, sizeof(fwts_cpuinfo_x86))) == NULL) return NULL; if ((fp = fopen("/proc/cpuinfo", "r")) == NULL) { free(cpu); return NULL; } while (fgets(buffer, sizeof(buffer), fp) != NULL) { char *ptr = strstr(buffer, ":"); if (ptr) ptr += 2; else continue; buffer[strlen(buffer)-1] = '\0'; if (!strncmp(buffer, "processor", 9)) { sscanf(ptr, "%d", &cpu_num); if (cpu_num > which_cpu) break; continue; } else { if (cpu_num != which_cpu) continue; } if (!strncmp(buffer, "vendor_id", 9)) { cpu->vendor_id = strdup(ptr); continue; } if (!strncmp(buffer, "cpu family",10)) { sscanf(ptr, "%d", &cpu->x86); continue; } if (!strncmp(buffer, "model name", 10)) { cpu->model_name = strdup(ptr); continue; } if (!strncmp(buffer, "model", 5)) { sscanf(ptr, "%d", &cpu->x86_model); continue; } if (!strncmp(buffer, "stepping", 8)) { sscanf(ptr, "%d", &cpu->stepping); continue; } if (!strncmp(buffer, "flags", 4)) { cpu->flags = strdup(ptr); continue; } } fclose(fp); return cpu; } static int fwts_cpu_matches_vendor_id(const char *vendor_id, bool *matches) { fwts_cpuinfo_x86 *cpu; if ((cpu = fwts_cpu_get_info(0)) == NULL) return FWTS_ERROR; *matches = (strstr(cpu->vendor_id, vendor_id) != NULL); fwts_cpu_free_info(cpu); return FWTS_OK; } int fwts_cpu_is_Intel(bool *is_intel) { return fwts_cpu_matches_vendor_id("Intel", is_intel); } int fwts_cpu_is_AMD(bool *is_amd) { return fwts_cpu_matches_vendor_id("AuthenticAMD", is_amd); } /* * fwts_cpu_has_c1e() * check if CPU has C1E bit */ fwts_bool fwts_cpu_has_c1e(void) { uint64_t val; fwts_cpuinfo_x86 *cpu; if ((cpu = fwts_cpu_get_info(0)) == NULL) return FWTS_BOOL_ERROR; if (strstr(cpu->vendor_id, "AuthenticAMD") == NULL) { fwts_cpu_free_info(cpu); return FWTS_FALSE; } /* Family 0x0f models < rev F do not have C1E */ if (cpu->x86 == 0x0F && cpu->x86_model >= 0x40) { fwts_cpu_free_info(cpu); return FWTS_TRUE; } if (cpu->x86 == 0x10) { /* * check OSVW bit for CPUs that are not affected * by erratum #400 */ if (strstr(cpu->flags, "osvw") != NULL) { fwts_cpu_readmsr(0, MSR_AMD64_OSVW_ID_LENGTH, &val); if (val >= 2) { fwts_cpu_readmsr(0, MSR_AMD64_OSVW_STATUS, &val); if (!(val & 2)) { fwts_cpu_free_info(cpu); return FWTS_FALSE; } } } fwts_cpu_free_info(cpu); return FWTS_TRUE; } fwts_cpu_free_info(cpu); return FWTS_FALSE; } /* * fwts_cpu_enumerate() * enumerate all CPUs */ int fwts_cpu_enumerate(void) { int cpus = sysconf(_SC_NPROCESSORS_CONF); if (cpus < 0) return FWTS_ERROR; return cpus; } /* * fwts_cpu_consume_kill() * kill CPU consumer processes as created by fwts_cpu_consume_cycles() */ static void fwts_cpu_consume_kill(void) { int i; siginfo_t info; for (i=0;i ncpus) return FWTS_ERROR; /* Pin to the specified CPU */ if (sched_getaffinity(0, sizeof(oldset), &oldset) < 0) { fwts_log_error(fw, "Cannot get scheduling affinity."); return FWTS_ERROR; } CPU_ZERO(&mask); CPU_SET(cpu, &mask); if (sched_setaffinity(0, sizeof(mask), &mask) < 0) { fwts_log_error(fw, "Cannot set scheduling affinity to CPU %d.", cpu); return FWTS_ERROR; } /* Wait until we get a new second */ current = time(NULL); while (current == time(NULL)) sched_yield(); current = time(NULL); /* * And burn some CPU cycles and get a bogo-compute like * loop count measure of CPU performance. */ do { fwts_cpu_burn_cycles(); (*loop_count)++; } while (current == time(NULL)); if (sched_setaffinity(0, sizeof(oldset), &oldset) < 0) { fwts_log_error(fw, "Cannot restore old CPU affinity settings."); return FWTS_ERROR; } return FWTS_OK; } /* * fwts_cpu_consume_cycles() * eat up CPU cycles */ static void fwts_cpu_consume_cycles(void) { signal(SIGUSR1, fwts_cpu_consume_sighandler); uint64_t i = 0; for (;;) { fwts_cpu_burn_cycles(); i++; } } /* * fwts_cpu_consume_complete() * kill all CPU consumes, free up pid info */ void fwts_cpu_consume_complete(void) { fwts_cpu_consume_kill(); free(fwts_cpu_pids); } /* * fwts_cpu_consume_start() * kick off per CPU tasks to eat up CPU */ int fwts_cpu_consume_start(void) { int i; if ((fwts_cpu_num = fwts_cpu_enumerate()) < 0) return FWTS_ERROR; if ((fwts_cpu_pids = (pid_t*)calloc(fwts_cpu_num, sizeof(pid_t))) == NULL) return FWTS_ERROR; signal(SIGINT, fwts_cpu_sigint_handler); for (i=0;i #include #include #include #include #include #include #include "fwts.h" /* * Utilities for the fwts --dump option */ /* * dump_data() * dump to path/filename a chunk of data of length len */ static int dump_data(const char *filename, char *data, const size_t len) { FILE *fp; if ((fp = fopen(filename, "w")) == NULL) return FWTS_ERROR; if ((fwrite(data, sizeof(char), len, fp) != len)) { fclose(fp); return FWTS_ERROR; } fclose(fp); return FWTS_OK; } /* * dump_dmesg() * read kernel log, dump to path/filename */ static int dump_dmesg(void) { int len; char *data; int ret; if ((len = klogctl(10, NULL, 0)) < 0) return FWTS_ERROR; if ((data = calloc(1, len)) == NULL) return FWTS_ERROR; if (klogctl(3, data, len) < 0) { free(data); return FWTS_ERROR; } ret = dump_data("dmesg.log", data, strlen(data)); free(data); return ret; } /* * dump_exec() * Execute command, dump output to path/filename */ static int dump_exec(const char *filename, const char *command) { int fd; pid_t pid; ssize_t len; char *data; int ret; if ((fd = fwts_pipe_open(command, &pid)) < 0) return FWTS_ERROR; if ((data = fwts_pipe_read(fd, &len)) == NULL) { fwts_pipe_close(fd, pid); return FWTS_ERROR; } fwts_pipe_close(fd, pid); ret = dump_data(filename, data, len); free(data); return ret; } #ifdef FWTS_ARCH_INTEL /* * dump_dmidecode() * run dmidecode, dump output to path/filename */ static int dump_dmidecode(fwts_framework *fw) { FWTS_UNUSED(fw); return dump_exec("dmidecode.log", FWTS_DMIDECODE_PATH); } #endif /* * dump_lspci() * run lspci, dump output to path/filename */ static int dump_lspci(fwts_framework *fw) { char command[1024]; snprintf(command, sizeof(command), "%s -vv -nn", fw->lspci); return dump_exec("lspci.log", command); } /* * dump_acpi_table() * hex dump of a ACPI table */ static int dump_acpi_table(fwts_acpi_table_info *table, FILE *fp) { char buffer[128]; size_t n; fprintf(fp, "%s @ 0x%lx\n", table->name, (unsigned long)table->addr); for (n = 0; n < table->length; n+=16) { int left = table->length - n; fwts_dump_raw_data(buffer, sizeof(buffer), table->data + n, n, left > 16 ? 16 : left); fprintf(fp, "%s\n", buffer); } fprintf(fp, "\n"); return FWTS_OK; } /* * dump_acpi_tables() * hex dump all ACPI tables */ static int dump_acpi_tables(fwts_framework *fw) { FILE *fp; int i; if ((fp = fopen("acpidump.log", "w")) == NULL) return FWTS_ERROR; for (i=0;;i++) { fwts_acpi_table_info *table; if (fwts_acpi_get_table(fw, i, &table) == FWTS_ERROR) { fprintf(stderr, "Cannot read ACPI tables.\n"); fclose(fp); return FWTS_ERROR; } if (table == NULL) break; dump_acpi_table(table, fp); } fclose(fp); return FWTS_OK; } /* * dump_readme() * dump README file containing some system info */ static int dump_readme(void) { time_t now = time(NULL); struct tm *tm = localtime(&now); FILE *fp; char *str; int len; if ((fp = fopen("README.txt", "w")) == NULL) return FWTS_ERROR; str = asctime(tm); len = strlen(str) - 1; fprintf(fp, "This is output captured by fwts on %*.*s.\n\n", len, len, str); fwts_framework_show_version(fp, "fwts"); if ((str = fwts_get("/proc/version")) != NULL) { fprintf(fp, "Version: %s", str); free(str); } if ((str = fwts_get("/proc/version_signature")) != NULL) { fprintf(fp, "Signature: %s", str); free(str); } fclose(fp); return FWTS_OK; } /* * fwts_dump_info() * dump various system specific information: * kernel log, dmidecode output, lspci output, * ACPI tables */ int fwts_dump_info(fwts_framework *fw) { char path[PATH_MAX+1]; bool root_priv = (fwts_check_root_euid(fw, false) == FWTS_OK); if (getcwd(path, PATH_MAX) == NULL) strcpy(path, "./"); if (access(path, W_OK) < 0) { fprintf(stderr, "No write access to %s.\n", path); return FWTS_ERROR; } if (dump_readme() != FWTS_OK) fprintf(stderr, "Failed to dump README.txt.\n"); else printf("Created README.txt\n"); if (dump_dmesg() != FWTS_OK) fprintf(stderr, "Failed to dump kernel log.\n"); else printf("Dumping dmesg to dmesg.log\n"); #ifdef FWTS_ARCH_INTEL if (root_priv) { if (dump_dmidecode(fw) != FWTS_OK) fprintf(stderr, "Failed to dump output from dmidecode.\n"); else printf("Dumped DMI data to dmidecode.log\n"); } else fprintf(stderr, "Need root privilege to dump DMI tables.\n"); #endif if (dump_lspci(fw) != FWTS_OK) fprintf(stderr, "Failed to dump output from lspci.\n"); else printf("Dumped lspci data to lspci.log\n"); if (root_priv) { if (dump_acpi_tables(fw) != FWTS_OK) fprintf(stderr, "Failed to dump ACPI tables.\n"); else printf("Dumped ACPI tables to acpidump.log\n"); } else fprintf(stderr, "Need root privilege to dump ACPI tables.\n"); return FWTS_OK; } src/lib/src/fwts_dump_data.c000066400000000000000000000035541231470457100163620ustar00rootroot00000000000000/* * Copyright (C) 2010-2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #include #include #include "fwts.h" /* * fwts_dump_raw_data() * print raw uint8 data of length `nbytes` into a buffer (length len) * as a hex dump. nbytes must be no more than 16. The address/offset * of the buffer in memory is annotated by addr. */ void fwts_dump_raw_data( char *buffer, /* buffer to contained formatted dump */ const size_t len, /* Length of buffer */ const uint8_t *data, /* Octects to dump */ const int addr, /* Original buffer data address */ const size_t nbytes) /* Number of bytes to dump, max 16 */ { int i; int n = 0; int nbytes_max = nbytes > 16 ? 16 : nbytes; n = snprintf(buffer, len, " %4.4x: ", addr); /* Hex dump */ for (i = 0; i < nbytes_max; i++) n += snprintf(buffer + n, len - n, "%2.2x ", data[i]); /* Padding */ for (; i < 16; i++) n += snprintf(buffer + n, len - n, " "); n += snprintf(buffer + n, len - n, " "); /* printable ASCII dump */ for (i = 0; i < nbytes_max; i++) buffer[n++] = (data[i] < 32 || data[i] > 126) ? '.' : data[i]; buffer[n] = '\0'; } src/lib/src/fwts_ebda.c000066400000000000000000000023731231470457100153150ustar00rootroot00000000000000/* * Copyright (C) 2011-2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #include "fwts.h" #include #ifdef FWTS_ARCH_INTEL #define EBDA_OFFSET 0x40e /* * ftws_ebda_get() * get EBDA offset so EBDA can be mmap'd */ off_t fwts_ebda_get(void) { uint16_t *ebda; off_t ebda_addr; if ((ebda = fwts_mmap((off_t)EBDA_OFFSET, sizeof(uint16_t))) == FWTS_MAP_FAILED) { return FWTS_NO_EBDA; } ebda_addr = ((off_t)*ebda) << 4; (void)fwts_munmap(ebda, sizeof(uint16_t)); return ebda_addr; } #else off_t fwts_ebda_get(void) { return FWTS_NO_EBDA; } #endif src/lib/src/fwts_efi_module.c000066400000000000000000000054141231470457100165310ustar00rootroot00000000000000/* * Copyright (C) 2012-2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #include #include #include #include #include #include "fwts_pipeio.h" static bool module_already_loaded = false; static int check_module_loaded(void) { FILE *fp; char buffer[1024]; module_already_loaded = false; if ((fp = fopen("/proc/modules", "r")) != NULL) { while (fgets(buffer, sizeof(buffer), fp) != NULL) { if (strstr(buffer, "efi_runtime") != NULL) { module_already_loaded = true; break; } } fclose(fp); return FWTS_OK; } return FWTS_ERROR; } int fwts_lib_efi_runtime_load_module(fwts_framework *fw) { struct stat statbuf; if (check_module_loaded() != FWTS_OK) { fwts_log_error(fw, "Could not open /proc/modules for checking module loaded."); return FWTS_ERROR; } if (!module_already_loaded) { int status; if (fwts_exec("modprobe efi_runtime", &status) != FWTS_OK) { fwts_log_error(fw, "Load efi_runtime module error."); return FWTS_ERROR; } else { (void)check_module_loaded(); if (!module_already_loaded) { fwts_log_error(fw, "Could not load efi_runtime module."); return FWTS_ERROR; } } } if (stat("/dev/efi_runtime", &statbuf)) { fwts_log_error(fw, "Loaded efi_runtime module but /dev/efi_runtime is not present."); return FWTS_ERROR; } if (!S_ISCHR(statbuf.st_mode)) { fwts_log_error(fw, "Loaded efi_runtime module but /dev/efi_runtime is not a char device."); return FWTS_ERROR; } return FWTS_OK; } int fwts_lib_efi_runtime_unload_module(fwts_framework *fw) { if (check_module_loaded() != FWTS_OK) { fwts_log_error(fw, "Could not open /proc/modules for checking module loaded."); return FWTS_ERROR; } if (module_already_loaded) { int status; if (fwts_exec("modprobe -r efi_runtime", &status) != FWTS_OK) { fwts_log_error(fw, "Unload efi_runtime module error."); return FWTS_ERROR; } else { (void)check_module_loaded(); if (module_already_loaded) { fwts_log_error(fw, "Could not unload efi_runtime module."); return FWTS_ERROR; } } } return FWTS_OK; } src/lib/src/fwts_fileio.c000066400000000000000000000030061231470457100156630ustar00rootroot00000000000000/* * Copyright (C) 2010-2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #include #include #include #include #include "fwts.h" /* * fwts_file_read() * read given file and return contents as a list of lines */ fwts_list *fwts_file_read(FILE *fp) { fwts_list *list; char buffer[8192]; if ((list = fwts_list_new()) == NULL) return NULL; while (fgets(buffer, sizeof(buffer), fp) != NULL) { buffer[strlen(buffer) - 1] = '\0'; /* Chop off "\n" */ fwts_text_list_append(list, buffer); } return list; } /* * fwts_file_read() * open and read file and return contents as a list of lines */ fwts_list* fwts_file_open_and_read(const char *file) { FILE *fp; fwts_list *list; if ((fp = fopen(file, "r")) == NULL) return NULL; list = fwts_file_read(fp); fclose(fp); return list; } src/lib/src/fwts_firmware.c000066400000000000000000000022171231470457100162330ustar00rootroot00000000000000/* * Copyright (C) 2010-2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ #include #include #include #include #include "fwts.h" /* * fwts_memory_map_entry_compare() * callback used to sort memory_map entries on start address */ int fwts_firmware_detect(void) { struct stat statbuf; if (stat("/sys/firmware/efi", &statbuf)) return FWTS_FIRMWARE_BIOS; /* No UEFI, Assume BIOS */ else return FWTS_FIRMWARE_UEFI; } src/lib/src/fwts_formatting.c000066400000000000000000000062451231470457100165760ustar00rootroot00000000000000/* * Copyright (C) 2010-2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #include #include #include #include #include #include "fwts.h" /* * dup_line() * duplicate a portion of a line of text, from start to end up to * a maximum of width characters */ static char *dup_line(const char *start, const char *end, const int width) { int maxlen; char *buffer; char *bufptr; maxlen = end - start; if (maxlen < width) maxlen = width; if ((bufptr = buffer = calloc(1, maxlen + 1)) == NULL) return NULL; while (*start && start < end) *bufptr++ = *start++; *bufptr = '\0'; return buffer; } /* * format_remove_multiple_whitespaces() * Clone text string but remove whitespaces. Returns * NULL if failed to clone. */ static char *format_remove_multiple_whitespaces(const char *text) { char *buffer; char *bufptr1, *bufptr2; if ((bufptr1 = bufptr2 = buffer = strdup(text)) == NULL) return NULL; while (*bufptr1) { if (isspace(*bufptr1)) { while (*bufptr1 && isspace(*bufptr1)) bufptr1++; *bufptr2++ = ' '; } else *bufptr2++ = *bufptr1++; } *bufptr2 = '\0'; return buffer; } /* * fwts_format_text() * given a text string, format it into a list of lines of * text to a given width. */ fwts_list *fwts_format_text(const char *text, const int width) { int linelen = 0; char *lastspace = NULL; char *tidied_text; char *linestart; char *textptr; char *tmp; fwts_list *list; if ((list = fwts_text_list_new()) == NULL) return NULL; if ((textptr = tidied_text = format_remove_multiple_whitespaces(text)) == NULL) { fwts_list_free(list, free); return NULL; } linestart = tidied_text; while (*textptr) { /* find line break points */ if (isspace(*textptr) || ((lastspace != NULL) && (*(textptr-1) != '/') && (*textptr == '/')) || (*textptr == ':') || (*textptr == ';') || (*textptr == ',')) lastspace = textptr; if (linelen >= width) { if (lastspace != NULL) { if ((tmp = dup_line(linestart, lastspace, width)) == NULL) { fwts_text_list_free(list); return NULL; } fwts_text_list_append(list, tmp); free(tmp); linestart = lastspace + ((isspace(*lastspace)) ? 1 : 0); linelen = textptr - linestart; lastspace = NULL; } } textptr++; linelen++; } if ((tmp = dup_line(linestart, textptr, width)) == NULL) { fwts_text_list_free(list); return NULL; } fwts_text_list_append(list, tmp); free(tmp); free(tidied_text); return list; } src/lib/src/fwts_framework.c000066400000000000000000001176131231470457100164230ustar00rootroot00000000000000/* * Copyright (C) 2010-2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #include #include #include #include #include #include #include #include #include "fwts.h" /* Suffix ".log", ".xml", etc gets automatically appended */ #define RESULTS_LOG "results" #define FWTS_FLAG_RUN_ALL \ (FWTS_FLAG_BATCH | \ FWTS_FLAG_INTERACTIVE | \ FWTS_FLAG_BATCH_EXPERIMENTAL | \ FWTS_FLAG_INTERACTIVE_EXPERIMENTAL | \ FWTS_FLAG_POWER_STATES | \ FWTS_FLAG_UTILS | \ FWTS_FLAG_UNSAFE | \ FWTS_FLAG_TEST_UEFI) static fwts_list tests_to_skip; static fwts_option fwts_framework_options[] = { { "stdout-summary", "", 0, "Output SUCCESS or FAILED to stdout at end of tests." }, { "help", "h?", 0, "Print this help." }, { "results-output", "r:", 1, "Output results to a named file. Filename can also be stout or stderr, e.g. --results-output=myresults.log, -r stdout." }, { "results-no-separators", "", 0, "No horizontal separators in results log." }, { "log-filter", "", 1, "Define filters to dump out specific log fields: --log-filter=RES,SUM - dump out results and summary, --log-filter=ALL,~INF - dump out all fields except info fields." }, { "log-fields", "", 0, "Show available log filtering fields." }, { "log-format", "", 1, "Define output log format: e.g. --log-format=\"%date %time [%field] (%owner): \". Fields are: %time - time, %field - filter field, %owner - name of test, %level - failure error level, %line - log line number." }, { "show-progress", "p", 0, "Output test progress report to stderr." }, { "show-tests", "s", 0, "Show available tests." }, { "klog", "k:", 1, "Specify kernel log file rather than reading it from the kernel, e.g. --klog=dmesg.log" }, { "log-width", "w:", 1, "Define the output log width in characters." }, { "lspci", "", 1, "Specify path to lspci, e.g. --lspci=path." }, { "batch", "b", 0, "Run non-Interactive tests." }, { "interactive", "i", 0, "Just run Interactive tests." }, { "force-clean", "f", 0, "Force a clean results log file." }, { "version", "v", 0, "Show version (" FWTS_VERSION ")." }, { "dump", "d", 0, "Dump out dmesg, dmidecode, lspci, ACPI tables to logs." }, { "table-path", "t:", 1, "Path to ACPI tables dumped by acpidump and then acpixtract, e.g. --table-path=/some/path/to/acpidumps" }, { "batch-experimental", "", 0, "Run Batch Experimental tests." }, { "interactive-experimental", "", 0, "Just run Interactive Experimental tests." }, { "power-states", "P", 0, "Test S3, S4 power states." }, { "all", "a", 0, "Run all tests." }, { "show-progress-dialog","D", 0, "Output test progress for use in dialog tool." }, { "skip-test", "S:", 1, "Skip listed tests, e.g. --skip-test=s3,nx,method" }, { "quiet", "q", 0, "Run quietly." }, { "dumpfile", "", 1, "Load ACPI tables using file generated by acpidump, e.g. --dumpfile=acpidump.dat" }, { "show-tests-full", "", 0, "Show available tests including all minor tests." }, { "utils", "u", 0, "Run Utility 'tests'." }, { "json-data-path", "j:", 1, "Specify path to fwts json data files - default is /usr/share/fwts." }, { "disassemble-aml", "", 2, "Disassemble AML from DSDT and SSDT tables." }, { "log-type", "", 1, "Specify log type (plaintext, json, html or xml)." }, { "unsafe", "U", 0, "Unsafe tests (tests that can potentially cause kernel oopses)." }, { "filter-error-discard", "", 1, "Discard errors that match any of the specified labels." }, { "filter-error-keep", "", 1, "Keep errors that match any of the specified labels." }, { "acpica-debug", "", 0, "Enable ACPICA debug/warning messages." }, { "acpica", "", 1, "Enable ACPICA run time options." }, { "uefi", "", 0, "Run UEFI tests." }, { "rsdp", "R:", 1, "Specify the physical address of the ACPI RSDP." }, { NULL, NULL, 0, NULL } }; static fwts_list fwts_framework_test_list = FWTS_LIST_INIT; static const char *fwts_copyright[] = { "Some of this work - Copyright (c) 1999 - 2014, Intel Corp. All rights reserved.", "Some of this work - Copyright (c) 2010 - 2014, Canonical.", NULL }; /* * fwts_framework_compare_priority() * used to register tests sorted on run priority */ static int fwts_framework_compare_priority(void *data1, void *data2) { fwts_framework_test *test1 = (fwts_framework_test *)data1; fwts_framework_test *test2 = (fwts_framework_test *)data2; return (test1->priority - test2->priority); } /* * fwts_framework_test_add() * register a test, called by FWTS_REGISTER() macro. * this is called very early, so any errors need to * be reported to stderr because the logging engine * is not set up yet. */ void fwts_framework_test_add( const char *name, fwts_framework_ops *ops, const fwts_priority priority, const fwts_framework_flags flags) { fwts_framework_test *new_test; if (flags & ~(FWTS_FLAG_RUN_ALL | FWTS_FLAG_ROOT_PRIV)) { fprintf(stderr, "Test %s flags must be a bit field in 0x%x, got %x\n", name, FWTS_FLAG_RUN_ALL, flags); exit(EXIT_FAILURE); } /* This happens early, so if it goes wrong, bail out */ if ((new_test = calloc(1, sizeof(fwts_framework_test))) == NULL) { fprintf(stderr, "FATAL: Could not allocate memory adding tests to test framework\n"); exit(EXIT_FAILURE); } /* Total up minor tests in this test */ for (ops->total_tests = 0; ops->minor_tests[ops->total_tests].test_func != NULL; ops->total_tests++) ; new_test->name = name; new_test->ops = ops; new_test->priority = priority; new_test->flags = flags; /* Add test, sorted on run order priority */ fwts_list_add_ordered(&fwts_framework_test_list, new_test, fwts_framework_compare_priority); /* Add any options and handler, if they exists */ if (ops->options && ops->options_handler) { if (fwts_args_add_options(ops->options, ops->options_handler, ops->options_check) == FWTS_ERROR) { fprintf(stderr, "FATAL: Could not allocate memory " "for getopt options handler."); exit(EXIT_FAILURE); } } } /* * fwts_framework_compare_name() * for sorting tests in name order */ int fwts_framework_compare_test_name(void *data1, void *data2) { fwts_framework_test *test1 = (fwts_framework_test *)data1; fwts_framework_test *test2 = (fwts_framework_test *)data2; return strcmp(test1->name, test2->name); } /* * fwts_framework_show_tests() * dump out registered tests in brief form */ static void fwts_framework_show_tests_brief(void) { fwts_list sorted; fwts_list_link *item; size_t n = 0; size_t width = (size_t)fwts_tty_width(fileno(stderr), 80); fwts_list_init(&sorted); fwts_list_foreach(item, &fwts_framework_test_list) { fwts_list_add_ordered(&sorted, fwts_list_data(fwts_framework_test *, item), fwts_framework_compare_test_name); } fwts_list_foreach(item, &sorted) { fwts_framework_test *test = fwts_list_data(fwts_framework_test*, item); size_t len = strlen(test->name) + 1; if ((n + len) > width) { fprintf(stderr, "\n"); n = 0; } fprintf(stderr, "%s ", test->name); n += len; } fwts_list_free_items(&sorted, NULL); fprintf(stderr, "\n\nuse: fwts --show-tests or fwts --show-tests-full for more information.\n"); } /* * fwts_framework_show_tests() * dump out registered tests. */ static void fwts_framework_show_tests(fwts_framework *fw, const bool full) { fwts_list_link *item; fwts_list sorted; int i; bool need_nl = false; int total = 0; typedef struct { const char *title; /* Test category */ fwts_framework_flags flag; /* Mask of category */ } fwts_categories; static fwts_categories categories[] = { { "Batch", FWTS_FLAG_BATCH }, { "Interactive", FWTS_FLAG_INTERACTIVE }, { "Batch Experimental", FWTS_FLAG_BATCH_EXPERIMENTAL }, { "Interactive Experimental", FWTS_FLAG_INTERACTIVE_EXPERIMENTAL }, { "Power States", FWTS_FLAG_POWER_STATES }, { "Utilities", FWTS_FLAG_UTILS }, { "Unsafe", FWTS_FLAG_UNSAFE }, { "UEFI", FWTS_FLAG_TEST_UEFI }, { NULL, 0 }, }; /* Dump out tests registered under all categories */ for (i = 0; categories[i].title != NULL; i++) { fwts_framework_test *test; /* If no category flags are set, or category matches user requested category go and dump name and purpose of tests */ if (((fw->flags & FWTS_FLAG_RUN_ALL) == 0) || ((fw->flags & FWTS_FLAG_RUN_ALL) & categories[i].flag)) { fwts_list_init(&sorted); fwts_list_foreach(item, &fwts_framework_test_list) { test = fwts_list_data(fwts_framework_test *, item); if ((test->flags & FWTS_FLAG_RUN_ALL) & categories[i].flag) fwts_list_add_ordered(&sorted, test, fwts_framework_compare_test_name); } if (fwts_list_len(&sorted) > 0) { if (need_nl) printf("\n"); need_nl = true; printf("%s%s:\n", categories[i].title, categories[i].flag & FWTS_FLAG_UTILS ? "" : " tests"); fwts_list_foreach(item, &sorted) { test = fwts_list_data(fwts_framework_test *, item); if (full) { int j; printf(" %-15.15s (%d test%s):\n", test->name, test->ops->total_tests, test->ops->total_tests > 1 ? "s" : ""); for (j = 0; j < test->ops->total_tests; j++) printf(" %s\n", test->ops->minor_tests[j].name); total += test->ops->total_tests; } else { printf(" %-15.15s %s\n", test->name, test->ops->description ? test->ops->description : ""); } } } fwts_list_free_items(&sorted, NULL); } } if (full) printf("\nTotal of %d tests\n", total); } /* * fwts_framework_strtrunc() * truncate overlong string */ static void fwts_framework_strtrunc(char *dest, const char *src, size_t max) { if (src) { strncpy(dest, src, max); if ((max > 3) && (strlen(src) > max)) { dest[max-1] = 0; dest[max-2] = '.'; dest[max-3] = '.'; } } else strncpy(dest, "", max); } /* * fwts_framework_format_results() * format results into human readable summary. */ static void fwts_framework_format_results(char *buffer, int buflen, fwts_results const *results, bool include_zero_results) { size_t n = 0; if (buflen) *buffer = 0; if ((include_zero_results || (results->passed > 0)) && (buflen > 0)) { n = snprintf(buffer, buflen, "%u passed", results->passed); buffer += n; buflen -= n; } if ((include_zero_results || (results->failed > 0)) && (buflen > 0)) { n = snprintf(buffer, buflen, "%s%u failed", n > 0 ? ", " : "", results->failed); buffer += n; buflen -= n; } if ((include_zero_results || (results->warning > 0)) && (buflen > 0)) { n = snprintf(buffer, buflen, "%s%u warning%s", n > 0 ? ", " : "", results->warning, results->warning > 1 ? "s" : ""); buffer += n; buflen -= n; } if ((include_zero_results || (results->aborted > 0)) && (buflen > 0)) { n = snprintf(buffer, buflen, "%s%u aborted", n > 0 ? ", " : "", results->aborted); buffer += n; buflen -= n; } if ((include_zero_results || (results->skipped > 0)) && (buflen > 0)) { n = snprintf(buffer, buflen, "%s%u skipped", n > 0 ? ", " : "", results->skipped); buffer += n; buflen -= n; } if ((include_zero_results || (results->infoonly > 0)) && (buflen > 0)) { snprintf(buffer, buflen, "%s%u info only", n > 0 ? ", " : "", results->infoonly); } } static void fwts_framework_minor_test_progress_clear_line(void) { int width = fwts_tty_width(fileno(stderr), 80); if (width > 256) width = 256; fprintf(stderr, "%*.*s\r", width-1, width-1, ""); } /* * fwts_framework_minor_test_progress() * output per test progress report or progress that can be pipe'd into * dialog --guage * */ void fwts_framework_minor_test_progress(fwts_framework *fw, const int percent, const char *message) { float major_percent; float minor_percent; float process_percent; float progress; int width = fwts_tty_width(fileno(stderr), 80); if (width > 256) width = 256; if (percent >=0 && percent <=100) fw->minor_test_progress = percent; major_percent = (float)100.0 / (float)fw->major_tests_total; minor_percent = ((float)major_percent / (float)fw->current_major_test->ops->total_tests); process_percent = ((float)minor_percent / 100.0); progress = (float)(fw->current_major_test_num-1) * major_percent; progress += (float)(fw->current_minor_test_num-1) * minor_percent; progress += (float)(percent) * process_percent; /* Feedback required? */ if (fw->show_progress) { char buf[1024]; char truncbuf[256]; static int index; snprintf(buf, sizeof(buf), "%s %s",fw->current_minor_test_name, message); fwts_framework_strtrunc(truncbuf, buf, width-9); fprintf(stderr, " %-*.*s: %5.1f%% %c\r", width-13, width-13, truncbuf, progress, "/-\\|"[index++ & 3]); fflush(stderr); } /* Output for the dialog tool, dialog --title "fwts" --gauge "" 12 80 0 */ if (fw->flags & FWTS_FLAG_SHOW_PROGRESS_DIALOG) { char buffer[128]; fwts_framework_format_results(buffer, sizeof(buffer), &fw->total, true); fprintf(stdout, "XXX\n"); fprintf(stdout, "%d\n", (int)progress); fprintf(stdout, "So far: %s\n\n", buffer); fprintf(stdout, "%s\n\n", fw->current_major_test->ops->description ? fw->current_major_test->ops->description : ""); fprintf(stdout, "Running test #%d: %s\n", fw->current_major_test_num, fw->current_minor_test_name); fprintf(stdout, "XXX\n"); fflush(stdout); } } /* * fwts_framework_underline() * underlining into log */ static inline void fwts_framework_underline(fwts_framework *fw, const int ch) { fwts_log_underline(fw->results, ch); } static int fwts_framework_test_summary(fwts_framework *fw) { char buffer[128]; fwts_results const *results = &fw->current_major_test->results; fwts_framework_underline(fw,'='); fwts_framework_format_results(buffer, sizeof(buffer), results, true); fwts_log_summary(fw, "%s.", buffer); fwts_framework_underline(fw,'='); if (fw->flags & FWTS_FLAG_STDOUT_SUMMARY) { /* Report in order of failure precedence */ if (results->failed > 0) { /* We intentionally report the highest logged error level */ if (fw->failed_level & LOG_LEVEL_CRITICAL) printf("%s_CRITICAL\n", fwts_log_field_to_str_upper(LOG_FAILED)); else if (fw->failed_level & LOG_LEVEL_HIGH) printf("%s_HIGH\n", fwts_log_field_to_str_upper(LOG_FAILED)); else if (fw->failed_level & LOG_LEVEL_MEDIUM) printf("%s_MEDIUM\n", fwts_log_field_to_str_upper(LOG_FAILED)); else if (fw->failed_level & LOG_LEVEL_LOW) printf("%s_LOW\n", fwts_log_field_to_str_upper(LOG_FAILED)); else printf("%s\n", fwts_log_field_to_str_upper(LOG_FAILED)); } else if (results->skipped > 0) printf("%s\n", fwts_log_field_to_str_upper(LOG_SKIPPED)); else if (results->warning > 0) printf("%s\n", fwts_log_field_to_str_upper(LOG_WARNING)); else if (results->aborted > 0) printf("%s\n", fwts_log_field_to_str_upper(LOG_ABORTED)); else printf("%s\n", fwts_log_field_to_str_upper(LOG_PASSED)); } fwts_log_newline(fw->results); return FWTS_OK; } static int fwts_framework_total_summary(fwts_framework *fw) { char buffer[128]; fwts_framework_format_results(buffer, sizeof(buffer), &fw->total, true); fwts_log_summary(fw, "%s.", buffer); return FWTS_OK; } static int fwts_framework_run_test(fwts_framework *fw, fwts_framework_test *test) { fwts_framework_minor_test *minor_test; int ret; fw->current_major_test = test; fw->current_minor_test_name = ""; test->was_run = true; fw->total_run++; fwts_results_zero(&fw->current_major_test->results); fw->failed_level = 0; fwts_log_section_begin(fw->results, test->name); fwts_log_set_owner(fw->results, test->name); fw->current_minor_test_num = 1; fw->show_progress = (fw->flags & FWTS_FLAG_SHOW_PROGRESS) && (FWTS_TEST_INTERACTIVE(test->flags) == 0); /* Not a utility test?, then we require a test summary at end of the test run */ if (!(test->flags & FWTS_FLAG_UTILS)) fw->print_summary = true; if (test->ops->description) { fwts_log_heading(fw, "%s: %s", test->name, test->ops->description); fwts_framework_underline(fw,'-'); if (fw->show_progress) { char buf[70]; fwts_framework_strtrunc(buf, test->ops->description, sizeof(buf)); fprintf(stderr, "Test: %-70.70s\n", buf); } } fwts_framework_minor_test_progress(fw, 0, ""); if ((test->flags & FWTS_FLAG_ROOT_PRIV) && (fwts_check_root_euid(fw, true) != FWTS_OK)) { fwts_log_error(fw, "Aborted test, insufficient privilege."); fw->current_major_test->results.aborted += test->ops->total_tests; fw->total.aborted += test->ops->total_tests; if (fw->show_progress) { fwts_framework_minor_test_progress_clear_line(); fprintf(stderr, " Test aborted.\n"); } goto done; } if ((test->ops->init) && ((ret = test->ops->init(fw)) != FWTS_OK)) { char *msg = NULL; /* Init failed or skipped, so abort */ if (ret == FWTS_SKIP) { fw->current_major_test->results.skipped += test->ops->total_tests; fw->total.skipped += test->ops->total_tests; msg = "Test skipped."; } else { fwts_log_error(fw, "Aborted test, initialisation failed."); fw->current_major_test->results.aborted += test->ops->total_tests; fw->total.aborted += test->ops->total_tests; msg = "Test aborted."; } if (fw->show_progress) { fwts_framework_minor_test_progress_clear_line(); fprintf(stderr, " %s.\n", msg); } goto done; } fwts_log_section_begin(fw->results, "subtests"); for (minor_test = test->ops->minor_tests; *minor_test->test_func != NULL; minor_test++, fw->current_minor_test_num++) { fwts_log_section_begin(fw->results, "subtest"); fw->current_minor_test_name = minor_test->name; fwts_results_zero(&fw->minor_tests); if (minor_test->name != NULL) { fwts_log_section_begin(fw->results, "subtest_info"); fwts_log_info(fw, "Test %d of %d: %s", fw->current_minor_test_num, test->ops->total_tests, minor_test->name); fwts_log_section_end(fw->results); /* subtest_info */ } fwts_log_section_begin(fw->results, "subtest_results"); fwts_framework_minor_test_progress(fw, 0, ""); ret = (*minor_test->test_func)(fw); /* Something went horribly wrong, abort all other tests too */ if (ret == FWTS_ABORTED) { int aborted = test->ops->total_tests - (fw->current_minor_test_num - 1); fw->current_major_test->results.aborted += aborted; fwts_log_section_end(fw->results); /* subtest_results */ fwts_log_nl(fw); fwts_log_section_end(fw->results); /* subtest */ break; } fwts_framework_minor_test_progress(fw, 100, ""); fwts_framework_summate_results(&fw->current_major_test->results, &fw->minor_tests); if (fw->show_progress) { char resbuf[128]; char namebuf[55]; fwts_framework_minor_test_progress_clear_line(); fwts_framework_format_results(resbuf, sizeof(resbuf), &fw->minor_tests, false); fwts_framework_strtrunc(namebuf, minor_test->name, sizeof(namebuf)); fprintf(stderr, " %-55.55s %s\n", namebuf, *resbuf ? resbuf : " "); } fwts_log_section_end(fw->results); /* subtest_results */ fwts_log_nl(fw); fwts_log_section_end(fw->results); /* subtest */ } fwts_log_section_end(fw->results); /* subtests */ fwts_framework_summate_results(&fw->total, &fw->current_major_test->results); if (test->ops->deinit) test->ops->deinit(fw); done: if (!(test->flags & FWTS_FLAG_UTILS)) { fwts_log_section_begin(fw->results, "results"); fwts_framework_test_summary(fw); fwts_log_section_end(fw->results); /* results */ } fwts_log_section_end(fw->results); /* test->name */ fwts_log_set_owner(fw->results, "fwts"); return FWTS_OK; } /* * fwts_framework_tests_run() * */ static void fwts_framework_tests_run(fwts_framework *fw, fwts_list *tests_to_run) { fwts_list_link *item; fw->current_major_test_num = 1; fw->major_tests_total = fwts_list_len(tests_to_run); fwts_list_foreach(item, tests_to_run) { fwts_framework_test *test = fwts_list_data(fwts_framework_test *, item); fwts_framework_run_test(fw, test); fw->current_major_test_num++; } } /* * fwts_framework_test_find() * find a named test, return test if found, NULL otherwise */ static fwts_framework_test *fwts_framework_test_find(const char *name) { fwts_list_link *item; fwts_list_foreach(item, &fwts_framework_test_list) { fwts_framework_test *test = fwts_list_data(fwts_framework_test *, item); if (strcmp(name, test->name) == 0) return test; } return NULL; } bool fwts_error_filtered_out(fwts_framework *fw, const char *label) { fwts_list_link *item; /* * Has the user specified errors to discard? If we find any matches * then flag as wanting to filter out. */ if (fwts_list_len(&fw->errors_filter_discard) > 0) { fwts_list_foreach(item, &fw->errors_filter_discard) { if (strcmp(label, fwts_list_data(char *, item)) == 0) return true; /* Discard */ } return false; /* No matches, won't discard */ } /* * Has the user specified errors to keep? If we find any matches * then flag as wanting to keep. */ if (fwts_list_len(&fw->errors_filter_keep) > 0) { fwts_list_foreach(item, &fw->errors_filter_keep) { if (strcmp(label, fwts_list_data(char *, item)) == 0) return false; /* Don't discard */ } return true; /* Not found, so discard */ } /* * User not specified any filters? Don't discard */ return false; } /* * fwts_error_inc() * Increment the error count if we're not filtering out this error (based on label). */ void fwts_error_inc(fwts_framework *fw, const char *label, int *count) { if (!fwts_error_filtered_out(fw, label)) (*count)++; } /* * fwts_framework_log() * log a test result */ void fwts_framework_log(fwts_framework *fw, fwts_log_field field, const char *label, fwts_log_level level, uint32_t *count, const char *fmt, ...) { char buffer[4096]; char prefix[256]; char *str = fwts_log_field_to_str_upper(field); bool do_count = true; if (fmt) { va_list ap; va_start(ap, fmt); vsnprintf(buffer, sizeof(buffer), fmt, ap); va_end(ap); } else *buffer = '\0'; switch (field) { case LOG_ADVICE: /* If the previous LOG_FAILED message was filtered out, ignore following advice */ if (fw->error_filtered_out) { do_count = false; } else { fwts_log_nl(fw); snprintf(prefix, sizeof(prefix), "%s: ", str); fwts_log_printf(fw->results, field, level, str, label, prefix, "%s", buffer); fwts_log_nl(fw); } break; case LOG_FAILED: if (fwts_error_filtered_out(fw, label)) { fw->error_filtered_out = true; do_count = false; } else { fw->error_filtered_out = false; fw->failed_level |= level; fwts_summary_add(fw, fw->current_major_test->name, level, buffer); snprintf(prefix, sizeof(prefix), "%s [%s] %s: Test %d, ", str, fwts_log_level_to_str(level), label, fw->current_minor_test_num); fwts_log_printf(fw->results, field, level, str, label, prefix, "%s", buffer); } break; case LOG_PASSED: case LOG_WARNING: case LOG_SKIPPED: case LOG_ABORTED: snprintf(prefix, sizeof(prefix), "%s: Test %d, ", str, fw->current_minor_test_num); fwts_log_printf(fw->results, field, level, str, label, prefix, "%s", buffer); break; case LOG_INFOONLY: break; /* no-op */ default: break; } /* Only increment stats if we've reported something */ if (do_count && (count != NULL)) (*count)++; } /* * fwts_framework_show_version() * dump version of fwts */ void fwts_framework_show_version(FILE *fp, const char *name) { fprintf(fp, "%s, Version %s, %s\n", name, FWTS_VERSION, FWTS_DATE); } /* * fwts_framework_strdup() * dup a string. if it's already allocated, free previous allocation before duping */ static void fwts_framework_strdup(char **ptr, const char *str) { if (ptr == NULL) return; free(*ptr); *ptr = strdup(str); } /* * fwts_framework_syntax() * dump some help */ static void fwts_framework_syntax(char * const *argv) { int i; printf("Usage %s: [OPTION] [TEST]\n", argv[0]); fwts_args_show_options(); /* Tag on copyright info */ printf("\n"); for (i = 0; fwts_copyright[i]; i++) printf("%s\n", fwts_copyright[i]); } /* * fwts_framework_heading_info() * log basic system info so we can track the tests */ static void fwts_framework_heading_info( fwts_framework *fw, fwts_list *tests_to_run, const int argc, char * const *argv) { struct tm tm; time_t now; struct utsname buf; char *tests = NULL; char *args = NULL; size_t len; int i; fwts_list_link *item; time(&now); localtime_r(&now, &tm); uname(&buf); fwts_log_info(fw, "Results generated by fwts: Version %s (%s).", FWTS_VERSION, FWTS_DATE); fwts_log_nl(fw); for (i = 0; fwts_copyright[i]; i++) fwts_log_info(fw, "%s", fwts_copyright[i]); fwts_log_nl(fw); fwts_log_info(fw, "This test run on %2.2d/%2.2d/%-2.2d at %2.2d:%2.2d:%2.2d on host %s %s %s %s %s.", tm.tm_mday, tm.tm_mon + 1, (tm.tm_year+1900) % 100, tm.tm_hour, tm.tm_min, tm.tm_sec, buf.sysname, buf.nodename, buf.release, buf.version, buf.machine); fwts_log_nl(fw); for (len = 1, i = 1; i < argc; i++) len += strlen(argv[i]) + 1; if ((args = calloc(len, 1)) != NULL) { for (len = 1, i = 1; i < argc; i++) { strcat(args, " "); strcat(args, argv[i]); } fwts_log_info(fw, "Command: \"fwts %s\".", args); free(args); } len = 1; fwts_list_foreach(item, tests_to_run) { fwts_framework_test *test = fwts_list_data(fwts_framework_test *, item); len += strlen(test->name) + 1; } if ((tests = calloc(len, 1)) != NULL) { fwts_list_foreach(item, tests_to_run) { fwts_framework_test *test = fwts_list_data(fwts_framework_test *, item); if (item != fwts_list_head(tests_to_run)) strcat(tests, " "); strcat(tests, test->name); } fwts_log_info(fw, "Running tests: %s.", fwts_list_len(tests_to_run) == 0 ? "None" : tests); fwts_log_newline(fw->results); free(tests); } } /* * fwts_framework_skip_test() * try to find a test in list of tests to be skipped, return NULL of cannot be found */ static fwts_framework_test *fwts_framework_skip_test(fwts_list *tests_to_skip, fwts_framework_test *test) { fwts_list_link *item; fwts_list_foreach(item, tests_to_skip) if (test == fwts_list_data(fwts_framework_test *, item)) return test; return NULL; } /* * fwts_framework_skip_test_parse() * parse optarg of comma separated list of tests to skip */ static int fwts_framework_skip_test_parse(const char *arg, fwts_list *tests_to_skip) { char *str; char *token; char *saveptr = NULL; fwts_framework_test *test; for (str = (char*)arg; (token = strtok_r(str, ",", &saveptr)) != NULL; str = NULL) { if ((test = fwts_framework_test_find(token)) == NULL) { fprintf(stderr, "No such test '%s'\n", token); return FWTS_ERROR; } else fwts_list_append(tests_to_skip, test); } return FWTS_OK; } static int fwts_framework_filter_error_parse(const char *arg, fwts_list *list) { char *str; char *token; char *saveptr = NULL; for (str = (char*)arg; (token = strtok_r(str, ",", &saveptr)) != NULL; str = NULL) { if (fwts_list_append(list, token) == NULL) { fprintf(stderr, "Out of memory parsing argument %s\n", arg); fwts_list_free_items(list, NULL); return FWTS_ERROR; } } return FWTS_OK; } /* * fwts_framework_log_type_parse() * parse optarg of comma separated log types */ static int fwts_framework_log_type_parse(fwts_framework *fw, const char *arg) { char *str; char *token; char *saveptr = NULL; fw->log_type = 0; for (str = (char*)arg; (token = strtok_r(str, ",", &saveptr)) != NULL; str = NULL) { if (!strcmp(token, "plaintext")) fw->log_type |= LOG_TYPE_PLAINTEXT; else if (!strcmp(token, "json")) fw->log_type |= LOG_TYPE_JSON; else if (!strcmp(token, "xml")) fw->log_type |= LOG_TYPE_XML; else if (!strcmp(token, "html")) fw->log_type |= LOG_TYPE_HTML; else { fprintf(stderr, "--log-type can be plaintext, xml, html or json.\n"); return FWTS_ERROR; } } if (!fw->log_type) fw->log_type = LOG_TYPE_PLAINTEXT; return FWTS_OK; } /* * fwts_framework_acpica_parse() * parse optarg of comma separated acpica mode flags */ static int fwts_framework_acpica_parse(fwts_framework *fw, const char *arg) { char *str; char *token; char *saveptr = NULL; fw->acpica_mode = 0; for (str = (char*)arg; (token = strtok_r(str, ",", &saveptr)) != NULL; str = NULL) { if (!strcmp(token, "serialized")) fw->acpica_mode |= FWTS_ACPICA_MODE_SERIALIZED; else if (!strcmp(token, "slack")) fw->acpica_mode |= FWTS_ACPICA_MODE_SLACK; else if (!strcmp(token, "ignore-errors")) fw->acpica_mode |= FWTS_ACPICA_MODE_IGNORE_ERRORS; else if (!strcmp(token, "disable-auto-repair")) fw->acpica_mode |= FWTS_ACPICA_MODE_DISABLE_AUTO_REPAIR; else { fprintf(stderr, "--acpica can be serialized, slack, ignore-errors or disable-auto-repair\n"); return FWTS_ERROR; } } if (!fw->log_type) fw->log_type = LOG_TYPE_PLAINTEXT; return FWTS_OK; } int fwts_framework_options_handler(fwts_framework *fw, int argc, char * const argv[], int option_char, int long_index) { FWTS_UNUSED(argc); switch (option_char) { case 0: switch (long_index) { case 0: /* --stdout-summary */ fw->flags |= FWTS_FLAG_STDOUT_SUMMARY; break; case 1: /* --help */ fwts_framework_syntax(argv); return FWTS_COMPLETE; case 2: /* --results-output */ fwts_framework_strdup(&fw->results_logname, optarg); break; case 3: /* --results-no-separators */ fwts_log_filter_unset_field(LOG_SEPARATOR); break; case 4: /* --log-filter */ fwts_log_filter_unset_field(~0); fwts_log_set_field_filter(optarg); break; case 5: /* --log-fields */ fwts_log_print_fields(); return FWTS_COMPLETE; case 6: /* --log-format */ fwts_log_set_format(optarg); break; case 7: /* --show-progress */ fw->flags = (fw->flags & ~(FWTS_FLAG_QUIET | FWTS_FLAG_SHOW_PROGRESS_DIALOG)) | FWTS_FLAG_SHOW_PROGRESS; break; case 8: /* --show-tests */ fw->flags |= FWTS_FLAG_SHOW_TESTS; break; case 9: /* --klog */ fwts_framework_strdup(&fw->klog, optarg); break; case 10: /* --log-width=N */ fwts_log_set_line_width(atoi(optarg)); break; case 11: /* --lspci=pathtolspci */ fwts_framework_strdup(&fw->lspci, optarg); break; case 12: /* --batch */ fw->flags |= FWTS_FLAG_BATCH; break; case 13: /* --interactive */ fw->flags |= FWTS_FLAG_INTERACTIVE; break; case 14: /* --force-clean */ fw->flags |= FWTS_FLAG_FORCE_CLEAN; break; case 15: /* --version */ fwts_framework_show_version(stdout, argv[0]); return FWTS_COMPLETE; case 16: /* --dump */ fwts_dump_info(fw); return FWTS_COMPLETE; case 17: /* --table-path */ fwts_framework_strdup(&fw->acpi_table_path, optarg); break; case 18: /* --batch-experimental */ fw->flags |= FWTS_FLAG_BATCH_EXPERIMENTAL; break; case 19: /* --interactive-experimental */ fw->flags |= FWTS_FLAG_INTERACTIVE_EXPERIMENTAL; break; case 20: /* --power-states */ fw->flags |= FWTS_FLAG_POWER_STATES; break; case 21: /* --all */ fw->flags |= FWTS_FLAG_RUN_ALL; break; case 22: /* --show-progress-dialog */ fw->flags = (fw->flags & ~(FWTS_FLAG_QUIET | FWTS_FLAG_SHOW_PROGRESS)) | FWTS_FLAG_SHOW_PROGRESS_DIALOG; break; case 23: /* --skip-test */ if (fwts_framework_skip_test_parse(optarg, &tests_to_skip) != FWTS_OK) return FWTS_COMPLETE; break; case 24: /* --quiet */ fw->flags = (fw->flags & ~(FWTS_FLAG_SHOW_PROGRESS | FWTS_FLAG_SHOW_PROGRESS_DIALOG)) | FWTS_FLAG_QUIET; break; case 25: /* --dumpfile */ fwts_framework_strdup(&fw->acpi_table_acpidump_file, optarg); break; case 26: /* --show-tests-full */ fw->flags |= FWTS_FLAG_SHOW_TESTS_FULL; break; case 27: /* --utils */ fw->flags |= FWTS_FLAG_UTILS; break; case 28: /* --json-data-path */ fwts_framework_strdup(&fw->json_data_path, optarg); break; case 29: /* --disassemble-aml */ fwts_iasl_disassemble_all_to_file(fw, optarg); return FWTS_COMPLETE; case 30: /* --log-type */ if (fwts_framework_log_type_parse(fw, optarg) != FWTS_OK) return FWTS_ERROR; break; case 31: /* --unsafe */ fw->flags |= FWTS_FLAG_UNSAFE; break; case 32: /* --filter-error-discard */ if (fwts_framework_filter_error_parse(optarg, &fw->errors_filter_discard) != FWTS_OK) return FWTS_ERROR; break; case 33: /* --filter-error-keep */ if (fwts_framework_filter_error_parse(optarg, &fw->errors_filter_keep) != FWTS_OK) return FWTS_ERROR; break; case 34: /* --acpica-debug */ fw->flags |= FWTS_FLAG_ACPICA_DEBUG; break; case 35: /* --acpica */ if (fwts_framework_acpica_parse(fw, optarg) != FWTS_OK) return FWTS_ERROR; break; case 36: /* --uefi */ fw->flags |= FWTS_FLAG_TEST_UEFI; break; case 37: /* --rsdp */ fw->rsdp = (void *)strtoul(optarg, NULL, 0); break; } break; case 'a': /* --all */ fw->flags |= FWTS_FLAG_RUN_ALL; break; case 'b': /* --batch */ fw->flags |= FWTS_FLAG_BATCH; break; case 'd': /* --dump */ fwts_dump_info(fw); return FWTS_COMPLETE; case 'D': /* --show-progress-dialog */ fw->flags = (fw->flags & ~(FWTS_FLAG_QUIET | FWTS_FLAG_SHOW_PROGRESS)) | FWTS_FLAG_SHOW_PROGRESS_DIALOG; break; case 'f': fw->flags |= FWTS_FLAG_FORCE_CLEAN; break; case 'h': case '?': fwts_framework_syntax(argv); return FWTS_COMPLETE; case 'i': /* --interactive */ fw->flags |= FWTS_FLAG_INTERACTIVE; break; case 'j': /* --json-data-path */ fwts_framework_strdup(&fw->json_data_path, optarg); break; case 'k': /* --klog */ fwts_framework_strdup(&fw->klog, optarg); break; case 'l': /* --lp-flags */ break; case 'p': /* --show-progress */ fw->flags = (fw->flags & ~(FWTS_FLAG_QUIET | FWTS_FLAG_SHOW_PROGRESS_DIALOG)) | FWTS_FLAG_SHOW_PROGRESS; break; case 'P': /* --power-states */ fw->flags |= FWTS_FLAG_POWER_STATES; break; case 'q': /* --quiet */ fw->flags = (fw->flags & ~(FWTS_FLAG_SHOW_PROGRESS | FWTS_FLAG_SHOW_PROGRESS_DIALOG)) | FWTS_FLAG_QUIET; break; case 'r': /* --results-output */ fwts_framework_strdup(&fw->results_logname, optarg); break; case 's': /* --show-tests */ fw->flags |= FWTS_FLAG_SHOW_TESTS; break; case 'S': /* --skip-test */ if (fwts_framework_skip_test_parse(optarg, &tests_to_skip) != FWTS_OK) return FWTS_COMPLETE; break; case 't': /* --table-path */ fwts_framework_strdup(&fw->acpi_table_path, optarg); break; case 'u': /* --utils */ fw->flags |= FWTS_FLAG_UTILS; break; case 'U': /* --unsafe */ fw->flags |= FWTS_FLAG_UNSAFE; break; case 'v': /* --version */ fwts_framework_show_version(stdout, argv[0]); return FWTS_COMPLETE; case 'w': /* --log-width=N */ fwts_log_set_line_width(atoi(optarg)); break; case 'R': /* --rsdp=addr */ fw->rsdp = (void *)strtoul(optarg, NULL, 0); break; } return FWTS_OK; } /* * fwts_framework_args() * parse args and run tests */ int fwts_framework_args(const int argc, char **argv) { int ret = FWTS_OK; int i; fwts_list tests_to_run; fwts_framework *fw; if ((fw = (fwts_framework *)calloc(1, sizeof(fwts_framework))) == NULL) return FWTS_ERROR; ret = fwts_args_add_options(fwts_framework_options, fwts_framework_options_handler, NULL); if (ret == FWTS_ERROR) goto tidy_args; fw->firmware_type = fwts_firmware_detect(); fw->magic = FWTS_FRAMEWORK_MAGIC; fw->flags = FWTS_FLAG_DEFAULT | FWTS_FLAG_SHOW_PROGRESS; fw->log_type = LOG_TYPE_PLAINTEXT; fwts_list_init(&fw->errors_filter_keep); fwts_list_init(&fw->errors_filter_discard); fwts_summary_init(); fwts_framework_strdup(&fw->lspci, FWTS_LSPCI_PATH); fwts_framework_strdup(&fw->results_logname, RESULTS_LOG); fwts_framework_strdup(&fw->json_data_path, FWTS_JSON_DATA_PATH); fwts_list_init(&tests_to_run); fwts_list_init(&tests_to_skip); switch (fwts_args_parse(fw, argc, argv)) { case FWTS_OK: break; case FWTS_COMPLETE: /* All done, e.g. --help, --version */ goto tidy_close; default: ret = FWTS_ERROR; /* Parsing error, or out of memory etc */ goto tidy_close; } for (i = 1; i < argc; i++) if (!strcmp(argv[i], "-")) { fwts_framework_strdup(&fw->results_logname, "stdout"); fw->flags = (fw->flags & ~(FWTS_FLAG_SHOW_PROGRESS | FWTS_FLAG_SHOW_PROGRESS_DIALOG)) | FWTS_FLAG_QUIET; break; } if (fw->flags & FWTS_FLAG_SHOW_TESTS) { fwts_framework_show_tests(fw, false); goto tidy_close; } if (fw->flags & FWTS_FLAG_SHOW_TESTS_FULL) { fwts_framework_show_tests(fw, true); goto tidy_close; } if ((fw->flags & FWTS_FLAG_RUN_ALL) == 0) fw->flags |= FWTS_FLAG_BATCH; if ((fw->lspci == NULL) || (fw->results_logname == NULL)) { ret = FWTS_ERROR; fprintf(stderr, "%s: Memory allocation failure.", argv[0]); goto tidy_close; } /* These are mutually exclusive, both cannot have items */ if ((fwts_list_len(&fw->errors_filter_keep) > 0) && (fwts_list_len(&fw->errors_filter_discard) > 0)) { fprintf(stderr, "The --filter-error-discard and --filter-error-keep options are\n" "mutually exclusive. Specify one or the other, but not both.\n"); ret = FWTS_ERROR; goto tidy_close; } /* Ensure we have just one log type specified for non-filename logging */ if (fwts_log_type_count(fw->log_type) > 1 && fwts_log_get_filename_type(fw->results_logname) != LOG_FILENAME_TYPE_FILE) { fprintf(stderr, "Cannot specify more than one log type when " "logging to stderr or stdout\n"); ret = FWTS_ERROR; goto tidy_close; } /* Results log */ if ((fw->results = fwts_log_open("fwts", fw->results_logname, fw->flags & FWTS_FLAG_FORCE_CLEAN ? "w" : "a", fw->log_type)) == NULL) { ret = FWTS_ERROR; fprintf(stderr, "%s: Cannot open results log '%s'.\n", argv[0], fw->results_logname); goto tidy_close; } /* Collect up tests to run */ for (i = optind; i < argc; i++) { fwts_framework_test *test; if (*argv[i] == '-') continue; if ((test = fwts_framework_test_find(argv[i])) == NULL) { fprintf(stderr, "No such test '%s', available tests:\n",argv[i]); fwts_framework_show_tests_brief(); ret = FWTS_ERROR; goto tidy; } if (fwts_framework_skip_test(&tests_to_skip, test) == NULL) fwts_list_append(&tests_to_run, test); } if (fwts_list_len(&tests_to_run) == 0) { /* Find tests that are eligible for running */ fwts_list_link *item; fwts_list_foreach(item, &fwts_framework_test_list) { fwts_framework_test *test = fwts_list_data(fwts_framework_test*, item); if (fw->flags & test->flags & FWTS_FLAG_RUN_ALL) if (fwts_framework_skip_test(&tests_to_skip, test) == NULL) fwts_list_append(&tests_to_run, test); } } if (!(fw->flags & FWTS_FLAG_QUIET)) { char *filenames = fwts_log_get_filenames(fw->results_logname, fw->log_type); if (filenames) { printf("Running %d tests, results appended to %s\n", fwts_list_len(&tests_to_run), filenames); free(filenames); } } fwts_log_section_begin(fw->results, "heading"); fwts_framework_heading_info(fw, &tests_to_run, argc, argv); fwts_log_section_end(fw->results); fwts_log_section_begin(fw->results, "tests"); fwts_framework_tests_run(fw, &tests_to_run); fwts_log_section_end(fw->results); if (fw->print_summary) { fwts_log_section_begin(fw->results, "summary"); fwts_log_set_owner(fw->results, "summary"); fwts_log_nl(fw); fwts_framework_total_summary(fw); fwts_log_nl(fw); fwts_summary_report(fw, &fwts_framework_test_list); fwts_log_section_end(fw->results); } tidy: fwts_list_free_items(&tests_to_skip, NULL); fwts_list_free_items(&tests_to_run, NULL); fwts_log_close(fw->results); tidy_close: fwts_acpi_free_tables(); fwts_summary_deinit(); free(fw->lspci); free(fw->results_logname); free(fw->klog); free(fw->json_data_path); fwts_list_free_items(&fw->errors_filter_discard, NULL); fwts_list_free_items(&fw->errors_filter_keep, NULL); fwts_list_free_items(&fwts_framework_test_list, free); /* Failed tests flagged an error */ if ((fw->total.failed > 0) || (fw->total.warning > 0)) ret = FWTS_ERROR; tidy_args: fwts_args_free(); free(fw); return ret; } src/lib/src/fwts_get.c000066400000000000000000000027441231470457100152030ustar00rootroot00000000000000/* * Copyright (C) 2010-2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #include #include #include #include "fwts.h" /* * fwts_get() * get a string from a file. used to gather text from /proc or /sys entries */ char *fwts_get(const char *file) { FILE *fp; char buffer[4096]; if ((fp = fopen(file, "r")) == NULL) return NULL; if (fgets(buffer, sizeof(buffer), fp) == NULL) { fclose(fp); return NULL; } fclose(fp); return strdup(buffer); } /* * fwts_get_int() * get an int from a file. used to gather int values from /proc or /sys entries */ int fwts_get_int(const char *file, int *value) { char *data; *value = 0; if ((data = fwts_get(file)) == NULL) { *value = 0; return FWTS_ERROR; } *value = atoi(data); free(data); return FWTS_OK; } src/lib/src/fwts_gpe.c000066400000000000000000000102231231470457100151660ustar00rootroot00000000000000/* * Copyright (C) 2010-2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #include #include #include #include #include #include #include "fwts.h" /* * fwts_gpe_free() * free an allocated array of GPE data, length count items */ void fwts_gpe_free(fwts_gpe *gpe, const int count) { int i; if (gpe) { for (i=0;id_name, "gpe", 3) == 0) || (strncmp(entry->d_name, "sci",3) == 0)) { if ((*gpes = realloc(*gpes, sizeof(fwts_gpe) * (n+1))) == NULL) goto error; else { char path[PATH_MAX]; char *data; if (((*gpes)[n].name = strdup(entry->d_name)) == NULL) goto error; snprintf(path, sizeof(path), "%s/%s", FWTS_GPE_PATH, entry->d_name); if ((data = fwts_get(path)) != NULL) { (*gpes)[n].count = atoi(data); free(data); } else goto error; n++; } } } closedir(dir); return n; error: fwts_gpe_free(*gpes, n); *gpes = NULL; closedir(dir); return FWTS_ERROR; } /* * fwts_gpe_delta() * calculate count differences between two sets of before and after GPE arrays and * update the result in gpe_delta. */ int fwts_gpe_delta(int **gpe_delta, const fwts_gpe *start, const fwts_gpe *end, const int n) { int i; if (((*gpe_delta) = calloc(n, sizeof(int))) == NULL) return FWTS_ERROR; for (i=0;i 0)) *sci += deltas[i]; if ((strncmp(gpes_end[i].name, "gpe", 3) == 0) && (deltas[i] > 0)) *gpe += deltas[i]; } } free(deltas); return FWTS_OK; } /* * fwts_gpe_test() * test for GPE changes between start and end GPE samples */ void fwts_gpe_test(fwts_framework *fw, const fwts_gpe *gpes_start, const fwts_gpe *gpes_end, const int gpe_count) { int *deltas = NULL; int sci = 0; int gpe = 0; if (fwts_gpe_delta(&deltas, gpes_start, gpes_end, gpe_count) == FWTS_ERROR) fwts_log_error(fw, "Cannot calculate GPE delta, out of memory."); else { int i; for (i=0;i 0)) { fwts_log_info(fw, "Got %d SCI interrupt(s).", deltas[i]); sci += deltas[i]; } if ((strncmp(gpes_end[i].name, "gpe", 3) == 0) && (deltas[i] > 0)) { fwts_log_info(fw, "Got %d interrupt(s) on GPE %s.", deltas[i], gpes_end[i].name); gpe += deltas[i]; } } } free(deltas); if (sci == 0) fwts_failed(fw, LOG_LEVEL_HIGH, "NoSCIInterrupts", "Did not detect any SCI interrupts."); if (gpe == 0) fwts_failed(fw, LOG_LEVEL_HIGH, "NoGPEInterrupts", "Did not detect any GPE interrupts."); } src/lib/src/fwts_guid.c000066400000000000000000000035431231470457100153520ustar00rootroot00000000000000/* * Copyright (C) 2010-2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #include #include #include "fwts.h" /* * fwts_guid_buf_to_str() * format given GUID 'guid' into a string guid_str. * guid_str needs to be at least 37 chars long */ void fwts_guid_buf_to_str(const uint8_t *guid, char *guid_str, const size_t guid_str_len) { if (guid_str && guid_str_len > 36) snprintf(guid_str, guid_str_len, "%02X%02X%02X%02X-%02X%02X-%02X%02X-%02X%02X-%02X%02X%02X%02X%02X%02X", guid[3], guid[2], guid[1], guid[0], guid[5], guid[4], guid[7], guid[6], guid[8], guid[9], guid[10], guid[11], guid[12], guid[13], guid[14], guid[15]); } /* * fwts_guid_str_to_buf() * convert a GUID string back to a 16 byte GUID * guid needs to be at least 16 chars long */ void fwts_guid_str_to_buf(const char *guid_str, uint8_t *guid, const size_t guid_len) { if (guid && guid_len >= 16) { sscanf(guid_str, "%2hhx%2hhx%2hhx%2hhx-%2hhx%2hhx-%2hhx%2hhx-%2hhx%2hhx-%2hhx%2hhx%2hhx%2hhx%2hhx%2hhx", &guid[3], &guid[2], &guid[1], &guid[0], &guid[5], &guid[4], &guid[7], &guid[6], &guid[8], &guid[9], &guid[10], &guid[11], &guid[12], &guid[13], &guid[14], &guid[15]); } } src/lib/src/fwts_hwinfo.c000066400000000000000000000470701231470457100157170ustar00rootroot00000000000000/* * Copyright (C) 2011-2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "fwts.h" #define FWTS_HWINFO_LISTS_SAME (0) #define FWTS_HWINFO_LISTS_DIFFER (1) #define FWTS_HWINFO_LISTS_OUT_OF_MEMORY (-1) #define FWTS_HWINFO_SYS_NET "/sys/class/net" #define FWTS_HWINFO_SYS_INPUT "/sys/class/input" #define FWTS_HWINFO_SYS_BLUETOOTH "/sys/class/bluetooth" typedef struct { char name[NAME_MAX + 1]; /* PCI name */ uint8_t config[64]; /* PCI config data */ ssize_t config_len; /* Length of config data */ } fwts_pci_config; typedef struct { char *name; /* Network device name */ char *addr; /* Address */ char *hw_addr; /* H/W MAC address */ } fwts_net_config; typedef struct { char *name; /* Input class name */ char *dev_name; /* Input device name */ char *phys; /* Physical name */ } fwts_input_config; typedef struct { char *name; /* class name */ char *bt_name; /* BT name */ char *address; /* BT address */ char *bus; /* Bus device is on */ char *type; /* Type info */ } fwts_bluetooth_config; /* compare H/W info */ typedef int (*hwinfo_cmp)(void *data1, void *data2); /* dump H/W info */ typedef void (*hwinfo_dump)(fwts_framework *fw, fwts_list *list); static char *fwts_hwinfo_data_get(const char *sys, const char *dev, const char *file) { char path[PATH_MAX]; char *data; snprintf(path, sizeof(path), "%s/%s/%s", sys, dev, file); if ((data = fwts_get(path)) == NULL) return strdup(""); fwts_chop_newline(data); return data; } /* * fwts_hwinfo_bluetooth_free() * free bluetooth data */ static void fwts_hwinfo_bluetooth_free(void *data) { fwts_bluetooth_config *config = (fwts_bluetooth_config *)data; free(config->name); free(config->bt_name); free(config->address); free(config->bus); free(config->type); free(config); } /* * fwts_hwinfo_bluetooth_name_cmp() * compare bluetooth config device name for sorting purposes */ static int fwts_hwinfo_bluetooth_name_cmp(void *data1, void *data2) { fwts_bluetooth_config *config1 = (fwts_bluetooth_config *)data1; fwts_bluetooth_config *config2 = (fwts_bluetooth_config *)data2; return strcmp(config1->name, config2->name); } /* * fwts_hwinfo_bluetooth_cmp() * compare bluetooth config data */ static int fwts_hwinfo_bluetooth_config_cmp(void *data1, void *data2) { fwts_bluetooth_config *config1 = (fwts_bluetooth_config *)data1; fwts_bluetooth_config *config2 = (fwts_bluetooth_config *)data2; return strcmp(config1->name, config2->name) || strcmp(config1->bt_name, config2->bt_name) || strcmp(config1->address, config2->address) || strcmp(config1->bus, config2->bus) || strcmp(config1->type, config2->type); } /* * fwts_hwinfo_bluetooth_get() * read a specific input device config */ static int fwts_hwinfo_bluetooth_get( fwts_framework *fw, fwts_list *devices) { DIR *dp; struct dirent *d; fwts_list_init(devices); if ((dp = opendir(FWTS_HWINFO_SYS_BLUETOOTH)) == NULL) { fwts_log_error(fw, "Cannot open %s to scan network devices.", FWTS_HWINFO_SYS_BLUETOOTH); return FWTS_ERROR; } while ((d = readdir(dp)) != NULL) { fwts_bluetooth_config *bluetooth_config; if (d->d_name[0] == '.') continue; if ((bluetooth_config = calloc(1, sizeof(*bluetooth_config))) == NULL) { fwts_log_error(fw, "Cannot allocate bluetooth config data."); break; } bluetooth_config->name = strdup(d->d_name); bluetooth_config->bt_name = fwts_hwinfo_data_get(FWTS_HWINFO_SYS_BLUETOOTH, d->d_name, "name"); bluetooth_config->address = fwts_hwinfo_data_get(FWTS_HWINFO_SYS_BLUETOOTH, d->d_name, "address"); bluetooth_config->bus = fwts_hwinfo_data_get(FWTS_HWINFO_SYS_BLUETOOTH, d->d_name, "bus"); bluetooth_config->type = fwts_hwinfo_data_get(FWTS_HWINFO_SYS_BLUETOOTH, d->d_name, "type"); if (bluetooth_config->name == NULL || bluetooth_config->bt_name == NULL || bluetooth_config->address == NULL || bluetooth_config->bus == NULL || bluetooth_config->type == NULL) { fwts_log_error(fw, "Cannot allocate bluetooth device attributes."); fwts_hwinfo_bluetooth_free(bluetooth_config); break; } fwts_list_add_ordered(devices, bluetooth_config, fwts_hwinfo_bluetooth_name_cmp); } closedir(dp); return FWTS_OK; } /* * fwts_hwinfo_bluetooth_dump() * simple bluetooth config dump */ static void fwts_hwinfo_bluetooth_dump(fwts_framework *fw, fwts_list *devices) { fwts_list_link *item; fwts_list_foreach(item, devices) { fwts_bluetooth_config *bluetooth_config = fwts_list_data(fwts_bluetooth_config *, item); fwts_log_info_verbatum(fw, " Device: %s", bluetooth_config->name); fwts_log_info_verbatum(fw, " Name: %s", bluetooth_config->bt_name); fwts_log_info_verbatum(fw, " Address: %s", bluetooth_config->address); fwts_log_info_verbatum(fw, " Bus: %s", bluetooth_config->bus); fwts_log_info_verbatum(fw, " Type: %s", bluetooth_config->type); fwts_log_nl(fw); } } /* * fwts_hwinfo_input_free() * free input data */ static void fwts_hwinfo_input_free(void *data) { fwts_input_config *config = (fwts_input_config *)data; free(config->name); free(config->dev_name); free(config->phys); free(config); } /* * fwts_hwinfo_input_name_cmp() * compare input config device class name for sorting purposes */ static int fwts_hwinfo_input_name_cmp(void *data1, void *data2) { fwts_input_config *config1 = (fwts_input_config *)data1; fwts_input_config *config2 = (fwts_input_config *)data2; return strcmp(config1->name, config2->name); } /* * fwts_hwinfo_input_cmp() * compare input config data */ static int fwts_hwinfo_input_config_cmp(void *data1, void *data2) { fwts_input_config *config1 = (fwts_input_config *)data1; fwts_input_config *config2 = (fwts_input_config *)data2; return strcmp(config1->name, config2->name) || strcmp(config1->dev_name, config2->dev_name) || strcmp(config1->phys, config2->phys); } /* * fwts_hwinfo_input_get() * read a specific input device config */ static int fwts_hwinfo_input_get( fwts_framework *fw, fwts_list *devices) { DIR *dp; struct dirent *d; fwts_list_init(devices); if ((dp = opendir(FWTS_HWINFO_SYS_INPUT)) == NULL) { fwts_log_error(fw, "Cannot open %s to scan network devices.", FWTS_HWINFO_SYS_INPUT); return FWTS_ERROR; } while ((d = readdir(dp)) != NULL) { fwts_input_config *input_config; if (d->d_name[0] == '.') continue; if (!strncmp(d->d_name, "input", 5)) { if ((input_config = calloc(1, sizeof(*input_config))) == NULL) { fwts_log_error(fw, "Cannot allocate input config data."); break; } input_config->dev_name = fwts_hwinfo_data_get(FWTS_HWINFO_SYS_INPUT, d->d_name, "name"); input_config->phys = fwts_hwinfo_data_get(FWTS_HWINFO_SYS_INPUT, d->d_name, "phys"); } else if (!strncmp(d->d_name, "event", 5) || !strncmp(d->d_name, "mouse", 5)) { if ((input_config = calloc(1, sizeof(*input_config))) == NULL) { fwts_log_error(fw, "Cannot allocate input config data."); break; } input_config->dev_name = fwts_hwinfo_data_get(FWTS_HWINFO_SYS_INPUT, d->d_name, "device/name"); input_config->phys = fwts_hwinfo_data_get(FWTS_HWINFO_SYS_INPUT, d->d_name, "device/phys"); } else { /* Don't know what type it is, ignore */ continue; } input_config->name = strdup(d->d_name); if (input_config->name == NULL || input_config->dev_name == NULL || input_config->phys == NULL) { fwts_log_error(fw, "Cannot allocate input device attributes."); fwts_hwinfo_input_free(input_config); break; } fwts_list_add_ordered(devices, input_config, fwts_hwinfo_input_name_cmp); } closedir(dp); return FWTS_OK; } /* * fwts_hwinfo_input_dump() * simple input config dump */ static void fwts_hwinfo_input_dump(fwts_framework *fw, fwts_list *devices) { fwts_list_link *item; fwts_list_foreach(item, devices) { fwts_input_config *input_config = fwts_list_data(fwts_input_config *, item); fwts_log_info_verbatum(fw, " Device: %s", input_config->name); fwts_log_info_verbatum(fw, " Device Name: %s", input_config->dev_name); fwts_log_info_verbatum(fw, " Phy: %s", input_config->phys); fwts_log_nl(fw); } } /* * fwts_hwinfo_net_free() * free net config data */ static void fwts_hwinfo_net_free(void *data) { fwts_net_config *config = (fwts_net_config *)data; free(config->name); free(config->addr); free(config->hw_addr); free(config); } /* * fwts_hwinfo_net_name_cmp() * compare net config device name for sorting purposes */ static int fwts_hwinfo_net_name_cmp(void *data1, void *data2) { fwts_net_config *config1 = (fwts_net_config *)data1; fwts_net_config *config2 = (fwts_net_config *)data2; return strcmp(config1->name, config2->name); } /* * fwts_hwinfo_net_cmp() * compare net config data */ static int fwts_hwinfo_net_cmp(void *data1, void *data2) { fwts_net_config *config1 = (fwts_net_config *)data1; fwts_net_config *config2 = (fwts_net_config *)data2; return strcmp(config1->name, config2->name) || strcmp(config1->hw_addr, config2->hw_addr); } /* * fwts_hwinfo_new_get() * read a specific network interface config */ static int fwts_hwinfo_net_get( fwts_framework *fw, fwts_list *devices) { DIR *dp; struct dirent *d; int sock; fwts_list_init(devices); if ((sock = socket(PF_INET, SOCK_DGRAM, 0)) < 0) { fwts_log_error(fw, "Cannot open socket to interrogate network devices."); return FWTS_ERROR; } if ((dp = opendir(FWTS_HWINFO_SYS_NET)) == NULL) { fwts_log_error(fw, "Cannot open %s to scan network devices.", FWTS_HWINFO_SYS_NET); close(sock); return FWTS_ERROR; } while ((d = readdir(dp)) != NULL) { struct ifreq buf; struct in_addr in_addr; fwts_net_config *net_config; if (d->d_name[0] == '.') continue; if ((net_config = calloc(1, sizeof(*net_config))) == NULL) { fwts_log_error(fw, "Cannot allocate net config data."); break; } net_config->name = strdup(d->d_name); if (net_config->name == NULL) { fwts_log_error(fw, "Cannot allocate net config name."); fwts_hwinfo_net_free(net_config); break; } memset(&buf, 0, sizeof(buf)); strncpy(buf.ifr_name, d->d_name, sizeof(buf.ifr_name)); if (ioctl(sock, SIOCGIFHWADDR, &buf) < 0) { fwts_log_error(fw, "Cannot get network information for device %s.", d->d_name); fwts_hwinfo_net_free(net_config); continue; } net_config->hw_addr = strdup(ether_ntoa(((struct ether_addr *)&buf.ifr_hwaddr.sa_data))); if (net_config->hw_addr == NULL) { fwts_log_error(fw, "Cannot allocate net config address."); fwts_hwinfo_net_free(net_config); break; } memset(&buf, 0, sizeof(buf)); strncpy(buf.ifr_name, d->d_name, sizeof(buf.ifr_name)); if (ioctl(sock, SIOCGIFADDR, &buf) < 0) { if (errno != EADDRNOTAVAIL) fwts_log_error(fw, "Cannot get address for device %s.", d->d_name); } /* GCC 4.4 is rather overly pedantic in strict aliasing warnings, this avoids it */ in_addr = (struct in_addr)((struct sockaddr_in *)&buf.ifr_addr)->sin_addr; net_config->addr = strdup(inet_ntoa(in_addr)); if (net_config->addr == NULL) { fwts_log_error(fw, "Cannot allocate net config H/W address."); fwts_hwinfo_net_free(net_config); break; } fwts_list_add_ordered(devices, net_config, fwts_hwinfo_net_name_cmp); } closedir(dp); close(sock); return FWTS_OK; } /* * fwts_hwinfo_net_dump() * simple net config dump */ static void fwts_hwinfo_net_dump(fwts_framework *fw, fwts_list *devices) { fwts_list_link *item; fwts_list_foreach(item, devices) { fwts_net_config *net_config = fwts_list_data(fwts_net_config *, item); fwts_log_info_verbatum(fw, " Device: %s", net_config->name); fwts_log_info_verbatum(fw, " Address: %s", net_config->addr); fwts_log_info_verbatum(fw, " H/W Address: %s", net_config->hw_addr); fwts_log_nl(fw); } } /* * fwts_hwinfo_pci_get() * read a specific PCI config based on class code, * retuning matching PCI configs into the configs list */ static int fwts_hwinfo_pci_get( fwts_framework *fw, const uint8_t class_code, fwts_list *configs) { DIR *pci; struct dirent *d; fwts_list_init(configs); if ((pci = opendir(FWTS_PCI_DEV_PATH)) == NULL) { fwts_log_error(fw, "Cannot open %s to scan PCI devices.", FWTS_PCI_DEV_PATH); return FWTS_ERROR; } while ((d = readdir(pci)) != NULL) { ssize_t n; int fd; fwts_pci_config *pci_config; uint8_t config[64]; char path[PATH_MAX]; if (d->d_name[0] == '.') continue; snprintf(path, sizeof(path), FWTS_PCI_DEV_PATH "/%s/config", d->d_name); if ((fd = open(path, O_RDONLY)) < 0) { fwts_log_error(fw, "Cannot open PCI config from %s.", d->d_name); continue; } if ((n = read(fd, config, sizeof(config))) < 0) { fwts_log_error(fw, "Cannot read PCI config from %s.", d->d_name); close(fd); continue; } close(fd); if (config[FWTS_PCI_CONFIG_CLASS_CODE] != class_code) continue; if ((pci_config = (fwts_pci_config *)calloc(1, sizeof(*pci_config))) == NULL) { fwts_log_error(fw, "Cannot allocate PCI config."); continue; } memcpy(pci_config->config, config, n); pci_config->config_len = n; strncpy(pci_config->name, d->d_name, NAME_MAX); fwts_list_append(configs, pci_config); } closedir(pci); return FWTS_OK; } /* * fwts_hwinfo_pci_config_cmp() * compare PCI configs */ static int fwts_hwinfo_pci_config_cmp(void *data1, void *data2) { fwts_pci_config *pci_config1 = (fwts_pci_config *)data1; fwts_pci_config *pci_config2 = (fwts_pci_config *)data2; return (pci_config1->config_len != pci_config2->config_len || memcmp(pci_config1->config, pci_config2->config, pci_config1->config_len) || strcmp(pci_config1->name, pci_config2->name)); } /* * fwts_hwinfo_pci_dump() * simple PCI config dump */ static void fwts_hwinfo_pci_dump(fwts_framework *fw, fwts_list *configs) { fwts_list_link *item; fwts_list_foreach(item, configs) { ssize_t n; fwts_pci_config *pci_config = fwts_list_data(fwts_pci_config *, item); fwts_log_info_verbatum(fw, " PCI: %s, VID: %2.2" PRIx8 ":%2.2" PRIx8 ", Class: %2.2" PRIx8 ":%2.2" PRIx8 " (%s)", pci_config->name, pci_config->config[FWTS_PCI_CONFIG_VENDOR_ID], pci_config->config[FWTS_PCI_CONFIG_DEVICE_ID], pci_config->config[FWTS_PCI_CONFIG_CLASS_CODE], pci_config->config[FWTS_PCI_CONFIG_SUBCLASS], fwts_pci_description(pci_config->config[FWTS_PCI_CONFIG_CLASS_CODE], pci_config->config[FWTS_PCI_CONFIG_SUBCLASS])); fwts_log_info_verbatum(fw, " Config:"); /* and do a raw hex dump of the config space */ for (n = 0; n < pci_config->config_len; n += 16) { ssize_t left = pci_config->config_len - n; char buffer[128]; fwts_dump_raw_data(buffer, sizeof(buffer), pci_config->config + n, n, left > 16 ? 16 : left); fwts_log_info_verbatum(fw, " %s", buffer); } fwts_log_nl(fw); } } /* * fwts_hwinfo_lists_dump() * dump out contents of two different lists */ static void fwts_hwinfo_lists_dump( fwts_framework *fw, hwinfo_dump dump, fwts_list *l1, fwts_list *l2, const char *message) { fwts_log_info(fw, "%s configurations differ, before:", message); if (fwts_list_len(l1)) dump(fw, l1); else fwts_log_info(fw, " (empty)"); fwts_log_info(fw, "versus after:"); if (fwts_list_len(l2)) dump(fw, l2); else fwts_log_info(fw, " (empty)"); fwts_log_nl(fw); } /* * fwts_hwinfo_lists_differ() * check lists to see if their contents differ, return 1 for differ, 0 for match, * -1 for out of memory error */ static int fwts_hwinfo_lists_differ( hwinfo_cmp cmp, fwts_list *l1, fwts_list *l2) { fwts_list_link *item1; fwts_list_link *item2; /* Both null - both the same then */ if ((l1 == NULL) && (l2 == NULL)) return FWTS_HWINFO_LISTS_SAME; /* Either null and the other not? */ if ((l1 == NULL) || (l2 == NULL)) return FWTS_HWINFO_LISTS_DIFFER; /* Different length, then they differ */ if (fwts_list_len(l1) != fwts_list_len(l2)) return FWTS_HWINFO_LISTS_DIFFER; item1 = fwts_list_head(l1); item2 = fwts_list_head(l2); while ((item1 != NULL) && (item2 != NULL)) { if (cmp(fwts_list_data(void *, item1), fwts_list_data(void *, item2))) return FWTS_HWINFO_LISTS_DIFFER; item1 = fwts_list_next(item1); item2 = fwts_list_next(item2); } if ((item1 == NULL) && (item2 == NULL)) return FWTS_HWINFO_LISTS_SAME; else return FWTS_HWINFO_LISTS_DIFFER; } /* * fwts_hwinfo_compare() * check for differences in a list and if any found, dump out both lists */ static void fwts_hwinfo_lists_compare( fwts_framework *fw, hwinfo_cmp cmp, hwinfo_dump dump, fwts_list *l1, fwts_list *l2, const char *message, int *differences) { if (fwts_hwinfo_lists_differ(cmp, l1, l2) == FWTS_HWINFO_LISTS_DIFFER) { (*differences)++; fwts_hwinfo_lists_dump(fw, dump, l1, l2, message); } } /* * fwts_hwinfo_get() * gather H/W information */ int fwts_hwinfo_get(fwts_framework *fw, fwts_hwinfo *hwinfo) { FWTS_UNUSED(fw); /* PCI devices */ fwts_hwinfo_pci_get(fw, FWTS_PCI_CLASS_CODE_NETWORK_CONTROLLER, &hwinfo->network); fwts_hwinfo_pci_get(fw, FWTS_PCI_CLASS_CODE_DISPLAY_CONTROLLER, &hwinfo->videocard); /* Network devices */ fwts_hwinfo_net_get(fw, &hwinfo->netdevs); fwts_hwinfo_input_get(fw, &hwinfo->input); /* Bluetooth devices */ fwts_hwinfo_bluetooth_get(fw, &hwinfo->bluetooth); return FWTS_OK; } /* * fwts_hwinfo_compare() * compare data in each hwinfo list, produce a diff comparison output */ void fwts_hwinfo_compare(fwts_framework *fw, fwts_hwinfo *hwinfo1, fwts_hwinfo *hwinfo2, int *differences) { *differences = 0; /* PCI devices */ fwts_hwinfo_lists_compare(fw, fwts_hwinfo_pci_config_cmp, fwts_hwinfo_pci_dump, &hwinfo1->network, &hwinfo2->network, "Network Controller", differences); fwts_hwinfo_lists_compare(fw, fwts_hwinfo_pci_config_cmp, fwts_hwinfo_pci_dump, &hwinfo1->videocard, &hwinfo2->videocard, "Video", differences); /* Network devices */ fwts_hwinfo_lists_compare(fw, fwts_hwinfo_net_cmp, fwts_hwinfo_net_dump, &hwinfo1->netdevs, &hwinfo2->netdevs, "Network", differences); /* Input devices */ fwts_hwinfo_lists_compare(fw, fwts_hwinfo_input_config_cmp, fwts_hwinfo_input_dump, &hwinfo1->input, &hwinfo2->input, "Input Devices", differences); /* Bluetooth devices */ fwts_hwinfo_lists_compare(fw, fwts_hwinfo_bluetooth_config_cmp, fwts_hwinfo_bluetooth_dump, &hwinfo1->bluetooth, &hwinfo2->bluetooth, "Bluetooth Device", differences); } /* * fwts_hwinfo_free() * free hwinfo lists */ int fwts_hwinfo_free(fwts_hwinfo *hwinfo) { if (hwinfo == NULL) return FWTS_ERROR; /* PCI devices */ fwts_list_free_items(&hwinfo->network, free); fwts_list_free_items(&hwinfo->videocard, free); /* Network devices */ fwts_list_free_items(&hwinfo->netdevs, fwts_hwinfo_net_free); /* Input devices */ fwts_list_free_items(&hwinfo->input, fwts_hwinfo_input_free); /* Bluetooth devices */ fwts_list_free_items(&hwinfo->bluetooth, fwts_hwinfo_bluetooth_free); return FWTS_OK; } src/lib/src/fwts_iasl.c000066400000000000000000000143461231470457100153550ustar00rootroot00000000000000/* * Copyright (C) 2010-2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #include #include #include #include #include #include #include #include #include #include #include "fwts.h" #include "fwts_iasl_interface.h" #include "fwts_acpica.h" /* * fwts_iasl_dump_aml_to_file() * write AML data of given length to file amlfile. */ static int fwts_iasl_dump_aml_to_file(fwts_framework *fw, const uint8_t *data, const int length, const char *amlfile) { int fd; /* Dump the AML bytecode into a tempoary file so we can disassemble it */ if ((fd = open(amlfile, O_WRONLY | O_CREAT | O_EXCL, S_IWUSR | S_IRUSR)) < 0) { fwts_log_error(fw, "Cannot create temporary file %s", amlfile); return FWTS_ERROR; } if (write(fd, data, length) != length) { fwts_log_error(fw, "Cannot write all data to temporary file"); close(fd); (void)unlink(amlfile); return FWTS_ERROR; } close(fd); return FWTS_OK; } /* * fwts_iasl_disassemble_to_file() * Disassemble a given table and dump disassembly to a file. * For tables where there are multiple matches, e.g. SSDT, we * specify the Nth table with 'which'. * */ int fwts_iasl_disassemble_to_file(fwts_framework *fw, const char *tablename, const int which, const char *filename) { fwts_acpi_table_info *table; char amlfile[PATH_MAX]; int pid = getpid(); int ret; fwts_acpcia_set_fwts_framework(fw); if ((ret = fwts_acpi_find_table(fw, tablename, which, &table)) != FWTS_OK) return ret; if (table == NULL) return FWTS_NO_TABLE; snprintf(amlfile, sizeof(amlfile), "/tmp/fwts_iasl_%d_%s.dat", pid, tablename); /* Dump the AML bytecode into a tempoary file so we can disassemble it */ if (fwts_iasl_dump_aml_to_file(fw, table->data, table->length, amlfile) != FWTS_OK) return FWTS_ERROR; if (fwts_iasl_disassemble_aml(amlfile, filename) < 0) { (void)unlink(amlfile); return FWTS_ERROR; } (void)unlink(amlfile); return FWTS_OK; } /* * fwts_iasl_disassemble() * Disassemble a given table and dump disassembly list of strings. * For tables where there are multiple matches, e.g. SSDT, we * specify the Nth table with 'which'. * */ int fwts_iasl_disassemble(fwts_framework *fw, const char *tablename, const int which, fwts_list **iasl_output) { char tmpfile[PATH_MAX]; int pid = getpid(); int ret; if (iasl_output == NULL) return FWTS_ERROR; *iasl_output = NULL; snprintf(tmpfile, sizeof(tmpfile), "/tmp/fwts_iasl_%d_%s.dsl", pid, tablename); if ((ret = fwts_iasl_disassemble_to_file(fw, tablename, which, tmpfile)) != FWTS_OK) return ret; *iasl_output = fwts_file_open_and_read(tmpfile); (void)unlink(tmpfile); return *iasl_output ? FWTS_OK : FWTS_ERROR; } /* * fwts_iasl_disassemble_all_to_file() * Disassemble DSDT and SSDT tables to separate files. */ int fwts_iasl_disassemble_all_to_file(fwts_framework *fw, const char *path) { int i; int ret; char filename[PATH_MAX]; char pathname[PATH_MAX]; if (path == NULL) strncpy(pathname, "", sizeof(pathname)); else snprintf(pathname, sizeof(pathname), "%s/", path); snprintf(filename, sizeof(filename), "%sDSDT.dsl", pathname); ret = fwts_iasl_disassemble_to_file(fw, "DSDT", 0, filename); if (ret == FWTS_ERROR_NO_PRIV) { fprintf(stderr, "Need to have root privilege to read ACPI tables from memory! Re-run using sudo.\n"); return FWTS_ERROR; } if (ret == FWTS_OK) printf("Disassembled DSDT to %s\n", filename); for (i=0; ;i++) { snprintf(filename, sizeof(filename), "%sSSDT%d.dsl", pathname, i); if (fwts_iasl_disassemble_to_file(fw, "SSDT", i, filename) != FWTS_OK) break; printf("Disassembled SSDT %d to %s\n", i, filename); } return FWTS_OK; } /* * fwts_iasl_reassemble() * given a ACPI table in 'data', lenth 'len, go and disassemble it * and re-assemble it. Dump the disassembly into list iasl_disassembly and * any re-assembly errors into list iasl_errors. */ int fwts_iasl_reassemble(fwts_framework *fw, const uint8_t *data, const int len, fwts_list **iasl_disassembly, fwts_list **iasl_stdout, fwts_list **iasl_stderr) { char tmpfile[PATH_MAX]; char amlfile[PATH_MAX]; char *stdout_output = NULL, *stderr_output = NULL; int pid = getpid(); if ((iasl_disassembly == NULL) || (iasl_stdout == NULL) || (iasl_stderr == NULL)) return FWTS_ERROR; fwts_acpcia_set_fwts_framework(fw); *iasl_disassembly = NULL; snprintf(tmpfile, sizeof(tmpfile), "/tmp/fwts_iasl_%d.dsl", pid); snprintf(amlfile, sizeof(amlfile), "/tmp/fwts_iasl_%d.dat", pid); /* Dump the AML bytecode into a tempoary file so we can disassemble it */ if (fwts_iasl_dump_aml_to_file(fw, data, len, amlfile) != FWTS_OK) return FWTS_ERROR; if (fwts_iasl_disassemble_aml(amlfile, tmpfile) < 0) { (void)unlink(tmpfile); (void)unlink(amlfile); return FWTS_ERROR; } (void)unlink(amlfile); /* Read in the disassembled text to return later */ *iasl_disassembly = fwts_file_open_and_read(tmpfile); /* Now we have a disassembled source in tmpfile, so let's assemble it */ if (fwts_iasl_assemble_aml(tmpfile, &stdout_output, &stderr_output) < 0) { (void)unlink(amlfile); (void)unlink(tmpfile); free(stdout_output); return FWTS_ERROR; } /* Remove these now we don't need them */ (void)unlink(tmpfile); (void)unlink(amlfile); /* And remove aml file generated from ACPICA compiler */ snprintf(tmpfile, sizeof(tmpfile), "/tmp/fwts_iasl_%d.aml", pid); (void)unlink(tmpfile); *iasl_stdout = fwts_list_from_text(stdout_output); *iasl_stderr = fwts_list_from_text(stderr_output); free(stdout_output); return FWTS_OK; } src/lib/src/fwts_interactive.c000066400000000000000000000050301231470457100167300ustar00rootroot00000000000000/* * Copyright (C) 2010-2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #include #include #include #include #include #include #include "fwts.h" /* * fwts_getchar() * read a char from tty, no echo canonical mode */ static int fwts_getchar(int *ch) { struct termios oldterm; struct termios newterm; int fd = fileno(stdin); *ch = -1; if (tcgetattr(fd, &oldterm) < 0) return FWTS_ERROR; memcpy(&newterm, &oldterm, sizeof(struct termios)); newterm.c_lflag &= ~(ECHO | ICANON); newterm.c_cc[VMIN] = 1; newterm.c_cc[VTIME] = 0; if (tcsetattr(fd, TCSANOW, &newterm) < 0) return FWTS_ERROR; *ch = getchar(); if (tcsetattr(fd, TCSANOW, &oldterm) < 0) return FWTS_ERROR; return FWTS_OK; } /* * fwts_printf() * plain old printf() wrapped for fwts */ int fwts_printf(fwts_framework *fw, const char *fmt, ...) { int len; va_list ap; FWTS_UNUSED(fw); va_start(ap, fmt); len = vfprintf(stdout, fmt, ap); fflush(stdout); va_end(ap); return len; } /* * fwts_press_entrer() * prompt and wait for enter key */ int fwts_press_enter(fwts_framework *fw) { int ch; fprintf(stdout, "Press to continue"); fflush(stdout); do { if (fwts_getchar(&ch) == FWTS_ERROR) { fwts_log_error(fw, "fwts_getchar() failed."); break; } } while (ch != '\n'); fprintf(stdout, "\n"); fflush(stdout); return FWTS_OK; } /* * fwts_get_reply() * prompt and wait for a given reply that matches given options string */ int fwts_get_reply(fwts_framework *fw, const char *message, const char *options) { int ch; fprintf(stdout, "%s", message); fflush(stdout); for (;;) { if (fwts_getchar(&ch) == FWTS_ERROR) { fwts_log_error(fw, "fwts_getchar() failed."); break; } if (index(options, ch) != NULL) break; } fprintf(stdout, "\n"); fflush(stdout); return ch; } src/lib/src/fwts_ioport.c000066400000000000000000000066331231470457100157410ustar00rootroot00000000000000/* * Copyright (C) 2013-2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #include #include "fwts.h" #ifdef FWTS_ARCH_INTEL #include #include #include static jmp_buf jmpbuf; /* * If we hit a SIGSEGV then the port read * failed and we longjmp back and return * FWTS_ERROR */ static void segv_handler(int dummy) { FWTS_UNUSED(dummy); signal(SIGSEGV, SIG_DFL); longjmp(jmpbuf, 1); } /* * fwts_inb() * 8 bit port read, handle access errors */ int fwts_inb(uint32_t port, uint8_t *value) { if (setjmp(jmpbuf) != 0) return FWTS_ERROR; signal(SIGSEGV, segv_handler); *value = inb(port); signal(SIGSEGV, SIG_DFL); return FWTS_OK; } /* * fwts_inw() * 16 bit port read, handle access errors */ int fwts_inw(uint32_t port, uint16_t *value) { if (setjmp(jmpbuf) != 0) return FWTS_ERROR; signal(SIGSEGV, segv_handler); *value = inw(port); signal(SIGSEGV, SIG_DFL); return FWTS_OK; } /* * fwts_inl() * 32 bit port read, handle access errors */ int fwts_inl(uint32_t port, uint32_t *value) { if (setjmp(jmpbuf) != 0) return FWTS_ERROR; signal(SIGSEGV, segv_handler); *value = inl(port); signal(SIGSEGV, SIG_DFL); return FWTS_OK; } /* * fwts_outb() * 8 bit port write, handle access errors */ int fwts_outb(uint32_t port, uint8_t value) { if (setjmp(jmpbuf) != 0) return FWTS_ERROR; signal(SIGSEGV, segv_handler); outb(port, value); signal(SIGSEGV, SIG_DFL); return FWTS_OK; } /* * fwts_outw() * 16 bit port write, handle access errors */ int fwts_outw(uint32_t port, uint16_t value) { if (setjmp(jmpbuf) != 0) return FWTS_ERROR; signal(SIGSEGV, segv_handler); outw(port, value); signal(SIGSEGV, SIG_DFL); return FWTS_OK; } /* * fwts_outl() * 32 bit port write, handle access errors */ int fwts_outl(uint32_t port, uint32_t value) { if (setjmp(jmpbuf) != 0) return FWTS_ERROR; signal(SIGSEGV, segv_handler); outl(port, value); signal(SIGSEGV, SIG_DFL); return FWTS_OK; } #else /* * dummy versions of above, all return FWTS_ERROR * for non-x86 platforms and any return values are * set to ~0. */ int fwts_inb(uint32_t port, uint8_t *value) { FWTS_UNUSED(port); *value = ~0; return FWTS_ERROR; } int fwts_inw(uint32_t port, uint16_t *value) { FWTS_UNUSED(port); *value = ~0; return FWTS_ERROR; } int fwts_inl(uint32_t port, uint32_t *value) { FWTS_UNUSED(port); *value = ~0; return FWTS_ERROR; } int fwts_outb(uint32_t port, uint8_t value) { FWTS_UNUSED(port); FWTS_UNUSED(value); return FWTS_ERROR; } int fwts_outw(uint32_t port, uint16_t value) { FWTS_UNUSED(port); FWTS_UNUSED(value); return FWTS_ERROR; } int fwts_outl(uint32_t port, uint32_t value) { FWTS_UNUSED(port); FWTS_UNUSED(value); return FWTS_ERROR; } #endif src/lib/src/fwts_keymap.c000066400000000000000000000062101231470457100157020ustar00rootroot00000000000000/* * Copyright (C) 2010-2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #include #include #include #include #include "fwts.h" /* * fwts_keymap_keycode_free() * free keymap data */ static void fwts_keymap_keycode_free(void *data) { fwts_keycode *keycode = (fwts_keycode*)data; free(keycode->keyname); free(keycode->keytext); free(keycode); } /* * fwts_keymap_free() * free keymap list */ void fwts_keymap_free(fwts_list *keylist) { fwts_list_free(keylist, fwts_keymap_keycode_free); } /* * fwts_keymap_load() * try and load keymap data for a given machine, return keymap * in a list of keymap items. */ fwts_list *fwts_keymap_load(const char *machine) { FILE *fp; char buffer[4096]; char path[PATH_MAX]; fwts_list *keymap_list; if ((keymap_list = fwts_list_new()) == NULL) return NULL; snprintf(path, sizeof(path), "%s/%s", FWTS_KEYMAP_PATH, machine); if ((fp = fopen(path, "r")) == NULL) { fwts_keymap_free(keymap_list); return NULL; } while (fgets(buffer, sizeof(buffer), fp) != NULL) { fwts_keycode *key; char *str = buffer; int scancode; char *keyname = NULL; char *keytext = NULL; scancode = strtoul(buffer, &str, 16); if (str == NULL || *str == '\0') continue; /* Skip over whitespace */ while (*str != '\0' && isspace(*str)) str++; if (*str == '\0') continue; keyname = str; /* Skip over keyname */ while (*str != '\0' && !isspace(*str)) str++; keytext = keyname; /* Default if we cannot find human readable name */ if (*str != '\0') { *str++ = '\0'; if ((str = strstr(str, "#")) != NULL) { str++; while (*str != '\0' && isspace(*str)) str++; if (*str) { keytext = str; keytext[strlen(keytext)-1] = '\0'; } } } if ((key = (fwts_keycode*)calloc(1, sizeof(fwts_keycode))) == NULL) { fclose(fp); fwts_keymap_free(keymap_list); return NULL; } else { key->scancode = scancode; key->keyname = strdup(keyname); key->keytext = strdup(keytext); fwts_list_append(keymap_list, key); } } fclose(fp); return keymap_list; } /* * fwts_keymap_find_scancode() * try and find a keycode for a given scancode in a given keymap list */ fwts_keycode *fwts_keymap_find_scancode(fwts_list *keymap, const int scancode) { fwts_list_link *item; fwts_list_foreach(item, keymap) { fwts_keycode *keycode = fwts_list_data(fwts_keycode*, item); if (keycode->scancode == scancode) return keycode; } return NULL; } src/lib/src/fwts_klog.c000066400000000000000000000315241231470457100153560ustar00rootroot00000000000000/* * Copyright (C) 2010-2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #include #include #include #include #include #include #include #include #include #include #include #include "fwts.h" /* * klog pattern matching strings data file, data stored in json format */ #define KLOG_DATA_JSON_FILE "klog.json" /* * fwts_klog_free() * free kernel log list */ void fwts_klog_free(fwts_list *klog) { fwts_text_list_free(klog); } /* * fwts_klog_find_changes() * find new lines added to kernel log, clone them from new list * must be freed with fwts_list_free(klog_diff, NULL); */ fwts_list *fwts_klog_find_changes(fwts_list *klog_old, fwts_list *klog_new) { fwts_list_link *l_old, *l_new, *l_old_last = NULL; fwts_list *klog_diff; char *old; if (klog_new == NULL) { /* Nothing new to compare, return nothing */ return NULL; } if ((klog_diff = fwts_list_new()) == NULL) return NULL; if (klog_old == NULL) { /* Nothing in old log, so clone all of new list */ l_new = klog_new->head; } else { /* Clone just the new differences */ /* Find last item in old log */ fwts_list_foreach(l_old, klog_old) l_old_last = l_old; /* And now look for that last line in the new log */ old = fwts_list_data(char *, l_old_last); fwts_list_foreach(l_new, klog_new) { char *new = fwts_list_data(char *, l_new); if (!strcmp(new, old)) { /* Found last line that matches, bump to next */ l_new = l_new->next; break; } } } /* Clone the new unique lines to the klog_diff list */ for (; l_new; l_new = l_new->next) { if (fwts_list_append(klog_diff, l_new->data) == NULL) { fwts_list_free(klog_diff, NULL); return NULL; } } return klog_diff; } /* * fwts_klog_read() * read kernel log and return as list of lines */ fwts_list *fwts_klog_read(void) { int len; char *buffer; fwts_list *list; if ((len = klogctl(10, NULL, 0)) < 0) return NULL; if ((buffer = calloc(1, len)) == NULL) return NULL; if (klogctl(3, buffer, len) < 0) { free(buffer); return NULL; } list = fwts_list_from_text(buffer); free(buffer); return list; } char *fwts_klog_remove_timestamp(char *text) { char *ptr = text; if ((ptr[0] == '<') && (ptr[2] == '>')) ptr += 3; if (*ptr == '[') while (*ptr && *ptr !=']') ptr++; if (*ptr == ']') ptr+=2; /* Skip ] and trailing space */ return ptr; } int fwts_klog_scan(fwts_framework *fw, fwts_list *klog, fwts_klog_scan_func scan_func, fwts_klog_progress_func progress_func, void *private, int *match) { typedef struct { char *line; int repeated; } klog_reduced_item; char *prev; fwts_list_link *item; fwts_list *klog_reduced; int i; *match = 0; if (!klog) return FWTS_ERROR; if ((klog_reduced = fwts_list_new()) == NULL) return FWTS_ERROR; /* * Form a reduced log by stripping out repeated kernel warnings */ i = 0; fwts_list_foreach(item, klog) { char *newline = fwts_klog_remove_timestamp(fwts_list_data(char *, item)); if (progress_func && ((i % 25) == 0)) progress_func(fw, 50 * i / fwts_list_len(klog)); if (*newline) { bool matched = false; fwts_list_link *l; fwts_list_foreach(l, klog_reduced) { char *line; klog_reduced_item *reduced = fwts_list_data(klog_reduced_item *, l); line = fwts_klog_remove_timestamp(reduced->line); if (strcmp(newline, line) == 0) { reduced->repeated++; matched = true; break; } } if (!matched) { klog_reduced_item *new; if ((new = calloc(1, sizeof(klog_reduced_item))) == NULL) { fwts_list_free(klog_reduced, free); return FWTS_ERROR; } new->line = fwts_list_data(char *, item); new->repeated = 0; fwts_list_append(klog_reduced, new); } } i++; } prev = ""; i = 0; fwts_list_foreach(item, klog_reduced) { klog_reduced_item *reduced = fwts_list_data(klog_reduced_item *, item); char *line = reduced->line; if ((line[0] == '<') && (line[2] == '>')) line += 3; scan_func(fw, line, reduced->repeated, prev, private, match); if (progress_func && ((i % 25) == 0)) progress_func(fw, (50+(50 * i)) / fwts_list_len(klog_reduced)); prev = line; i++; } if (progress_func) progress_func(fw, 100); fwts_list_free(klog_reduced, free); return FWTS_OK; } static char *fwts_klog_unique_label(const char *str) { static char buffer[1024]; const char *src = str; char *dst; int count = 0; bool forceupper = true; strcpy(buffer, "Klog"); dst = buffer + 4; while ((dst < (buffer + sizeof(buffer) - 1)) && (count < 4) && (*src)) { if ((*src == '|') || (*src == '/') || (*src == ' ')) { src++; count++; forceupper = true; continue; } if (!isalnum(*src)) { src++; continue; } *dst++ = forceupper ? toupper(*src) : *src; src++; forceupper = false; } *dst = '\0'; return buffer; } void fwts_klog_scan_patterns(fwts_framework *fw, char *line, int repeated, char *prevline, void *private, int *errors) { fwts_klog_pattern *pattern = (fwts_klog_pattern *)private; int vector[1]; static char *advice = "This is a bug picked up by the kernel, but as yet, the " "firmware test suite has no diagnostic advice for this particular problem."; FWTS_UNUSED(prevline); while (pattern->pattern != NULL) { bool matched = false; switch (pattern->compare_mode) { case FWTS_COMPARE_REGEX: if (pattern->re) matched = (pcre_exec(pattern->re, pattern->extra, line, strlen(line), 0, 0, vector, 1) == 0); break; case FWTS_COMPARE_STRING: default: matched = (strstr(line, pattern->pattern) != NULL) ; break; } if (matched) { if (pattern->level == LOG_LEVEL_INFO) fwts_log_info(fw, "Kernel message: %s", line); else { fwts_failed(fw, pattern->level, pattern->label, "%s Kernel message: %s", fwts_log_level_to_str(pattern->level), line); fwts_error_inc(fw, pattern->label, errors); } if (repeated) fwts_log_info(fw, "Message repeated %d times.", repeated); if ((pattern->advice) != NULL && (*pattern->advice)) fwts_advice(fw, "%s", pattern->advice); else fwts_advice(fw, "%s", advice); return; } pattern++; } } /* * fwts_klog_compare_mode_str_to_val() * convert compare mode strings (from json database) to compare_mode values */ static fwts_compare_mode fwts_klog_compare_mode_str_to_val(const char *str) { if (strcmp(str, "regex") == 0) return FWTS_COMPARE_REGEX; else if (strcmp(str, "string") == 0) return FWTS_COMPARE_STRING; else return FWTS_COMPARE_UNKNOWN; } /* * fwts_json_str() * given a key, fetch the string value associated with this object * and report an error if it cannot be found. */ static const char *fwts_json_str( fwts_framework *fw, const char *table, int index, json_object *obj, const char *key, bool log_error) { const char *str; str = json_object_get_string(json_object_object_get(obj, key)); if (FWTS_JSON_ERROR(str)) { if (log_error) fwts_log_error(fw, "Cannot fetch %s val from item %d, table %s.", key, index, table); return NULL; } return str; } static int fwts_klog_check(fwts_framework *fw, const char *table, fwts_klog_progress_func progress, fwts_list *klog, int *errors) { int ret = FWTS_ERROR; int n; int i; int fd; json_object *klog_objs; json_object *klog_table; fwts_klog_pattern *patterns; char json_data_path[PATH_MAX]; snprintf(json_data_path, sizeof(json_data_path), "%s/%s", fw->json_data_path, KLOG_DATA_JSON_FILE); /* * json_object_from_file() can fail when files aren't readable * so check if we can open for read before calling json_object_from_file() */ if ((fd = open(json_data_path, O_RDONLY)) < 0) { fwts_log_error(fw, "Cannot read file %s.", json_data_path); return FWTS_ERROR; } close(fd); klog_objs = json_object_from_file(json_data_path); if (FWTS_JSON_ERROR(klog_objs)) { fwts_log_error(fw, "Cannot load klog data from %s.", json_data_path); return FWTS_ERROR; } klog_table = json_object_object_get(klog_objs, table); if (FWTS_JSON_ERROR(klog_table)) { fwts_log_error(fw, "Cannot fetch klog table object '%s' from %s.", table, json_data_path); goto fail_put; } n = json_object_array_length(klog_table); /* Last entry is null to indicate end, so alloc n+1 items */ if ((patterns = calloc(n+1, sizeof(fwts_klog_pattern))) == NULL) { fwts_log_error(fw, "Cannot allocate pattern table."); goto fail_put; } /* Now fetch json objects and compile regex */ for (i = 0; i < n; i++) { const char *error; int erroffset; const char *str; json_object *obj; obj = json_object_array_get_idx(klog_table, i); if (FWTS_JSON_ERROR(obj)) { fwts_log_error(fw, "Cannot fetch %d item from table %s.", i, table); goto fail; } if ((str = fwts_json_str(fw, table, i, obj, "compare_mode", true)) == NULL) goto fail; patterns[i].compare_mode = fwts_klog_compare_mode_str_to_val(str); if ((str = fwts_json_str(fw, table, i, obj, "log_level", true)) == NULL) goto fail; patterns[i].level = fwts_log_str_to_level(str); if ((patterns[i].pattern = fwts_json_str(fw, table, i, obj, "pattern", true)) == NULL) goto fail; if ((patterns[i].advice = fwts_json_str(fw, table, i, obj, "advice", true)) == NULL) goto fail; /* Labels appear in fwts 0.26.0, so are optional with older versions */ str = fwts_json_str(fw, table, i, obj, "label", false); if (str) { patterns[i].label = strdup(str); } else { /* if not specified, auto-magically generate */ patterns[i].label = strdup(fwts_klog_unique_label(patterns[i].pattern)); } if (patterns[i].label == NULL) goto fail; if (patterns[i].compare_mode == FWTS_COMPARE_REGEX) { if ((patterns[i].re = pcre_compile(patterns[i].pattern, 0, &error, &erroffset, NULL)) == NULL) { fwts_log_error(fw, "Regex %s failed to compile: %s.", patterns[i].pattern, error); patterns[i].re = NULL; patterns[i].extra = NULL; } else { patterns[i].extra = pcre_study(patterns[i].re, 0, &error); if (error != NULL) { fwts_log_error(fw, "Regex %s failed to optimize: %s.", patterns[i].pattern, error); patterns[i].re = NULL; patterns[i].extra = NULL; } } } else { patterns[i].re = NULL; patterns[i].extra = NULL; } } /* We've now collected up the scan patterns, lets scan the log for errors */ ret = fwts_klog_scan(fw, klog, fwts_klog_scan_patterns, progress, patterns, errors); fail: for (i = 0; i < n; i++) { if (patterns[i].re) pcre_free(patterns[i].re); if (patterns[i].extra) pcre_free(patterns[i].extra); if (patterns[i].label) free(patterns[i].label); } free(patterns); fail_put: json_object_put(klog_objs); return ret; } int fwts_klog_firmware_check(fwts_framework *fw, fwts_klog_progress_func progress, fwts_list *klog, int *errors) { return fwts_klog_check(fw, "firmware_error_warning_patterns", progress, klog, errors); } int fwts_klog_pm_check(fwts_framework *fw, fwts_klog_progress_func progress, fwts_list *klog, int *errors) { return fwts_klog_check(fw, "pm_error_warning_patterns", progress, klog, errors); } static void fwts_klog_regex_find_callback(fwts_framework *fw, char *line, int repeated, char *prev, void *pattern, int *match) { const char *error; int erroffset; pcre *re; pcre_extra *extra; int rc; int vector[1]; FWTS_UNUSED(fw); FWTS_UNUSED(repeated); FWTS_UNUSED(prev); re = pcre_compile(pattern, 0, &error, &erroffset, NULL); if (re != NULL) { extra = pcre_study(re, 0, &error); if (error) return; rc = pcre_exec(re, extra, line, strlen(line), 0, 0, vector, 1); free(extra); pcre_free(re); if (rc == 0) (*match)++; } } /* * fwts_klog_regex_find() * scan a kernel log list of lines for a given regex pattern * uses fwts_klog_regex_find_callback() callback */ int fwts_klog_regex_find(fwts_framework *fw, fwts_list *klog, char *pattern) { int found = 0; fwts_klog_scan(fw, klog, fwts_klog_regex_find_callback, NULL, pattern, &found); return found; } /* * fwts_klog_write() * write a message to the kernel log */ int fwts_klog_write(fwts_framework *fw, const char *msg) { FILE *fp; if ((fp = fopen("/dev/kmsg", "w")) == NULL) { fwts_log_info(fw, "Cannot write to kernel log /dev/kmsg."); return FWTS_ERROR; } fprintf(fp, "%s", msg); fclose(fp); return FWTS_OK; } src/lib/src/fwts_list.c000066400000000000000000000061141231470457100153720ustar00rootroot00000000000000/* * Copyright (C) 2010-2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #include #include #include #include "fwts.h" /* * fwts_list_iterate() * iterate over items in list, call callback function to operate on each * item, and pass private data over to callback. private may be NULL if not used */ void fwts_list_iterate(fwts_list *list, fwts_list_foreach_callback callback, void *private) { fwts_list_link *item; if (!list) return; fwts_list_foreach(item, list) callback(item->data, private); } /* * fwts_list_free_items() * free items on list but not list head. provide free() func pointer data_free() to * free individual items in list. If func is null, don't * free items. */ void fwts_list_free_items(fwts_list *list, fwts_list_link_free data_free) { fwts_list_link *item; fwts_list_link *next; if (!list) return; for (item = list->head; item; item = next) { next = item->next; if (item->data && data_free) data_free(item->data); free(item); } } /* * fwts_list_free() * free list. provide free() func pointer data_free() to * free individual items in list. If func is null, don't * free items. */ void fwts_list_free(fwts_list *list, fwts_list_link_free data_free) { if (list) { fwts_list_free_items(list, data_free); free(list); } } /* * fwts_list_append() * add new data to end of list */ fwts_list_link *fwts_list_append(fwts_list *list, void *data) { fwts_list_link *link; if (!list) return NULL; if ((link = calloc(1,sizeof(fwts_list_link))) == NULL) return NULL; link->data = data; if (list->head) list->tail->next = link; else list->head = link; list->tail = link; list->len++; return link; } /* * fwts_list_add_ordered() * add new data into list, based on order from callback func compare(). */ fwts_list_link *fwts_list_add_ordered(fwts_list *list, void *new_data, fwts_list_compare compare) { fwts_list_link *new_list_item; fwts_list_link **list_item; if ((new_list_item = calloc(1, sizeof(fwts_list_link))) == NULL) return NULL; new_list_item->data = new_data; for (list_item = &list->head; *list_item; list_item = &(*list_item)->next) { void *data = (void *)(*list_item)->data; if (compare(data, new_data) >= 0) { new_list_item->next = (*list_item); break; } } if (!new_list_item->next) list->tail = new_list_item; *list_item = new_list_item; list->len++; return new_list_item; } src/lib/src/fwts_log.c000066400000000000000000000374671231470457100152170ustar00rootroot00000000000000/* * Copyright (C) 2010-2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #include #include #include #include #include #include #include #include #include #include #include "fwts.h" #define LOG_LINE_WIDTH (80) #define LOG_UNKOWN_FIELD "???" static int log_line_width = 0; fwts_log_field fwts_log_filter = ~0; const char *fwts_log_format = ""; /* * fwts_log_set_line_width() * set width of a log */ void fwts_log_set_line_width(const int width) { if ((width >= 80) && (width <= 1024)) log_line_width = width; } /* * fwts_log_field_to_str() * return string name of log field */ char *fwts_log_field_to_str(const fwts_log_field field) { switch (field & LOG_FIELD_MASK) { case LOG_RESULT: return "RES"; case LOG_ERROR: return "ERR"; case LOG_WARNING: return "WRN"; case LOG_DEBUG: return "DBG"; case LOG_INFO: return "INF"; case LOG_SUMMARY: return "SUM"; case LOG_SEPARATOR: return "SEP"; case LOG_NEWLINE: return "NLN"; case LOG_ADVICE: return "ADV"; case LOG_HEADING: return "HED"; case LOG_PASSED: return "PAS"; case LOG_FAILED: return "FAL"; case LOG_SKIPPED: return "SKP"; case LOG_ABORTED: return "ABT"; case LOG_INFOONLY: return "INO"; default: return LOG_UNKOWN_FIELD; } } /* * fwts_log_field_to_str_full() * return full string name of log field */ char *fwts_log_field_to_str_full(const fwts_log_field field) { switch (field & LOG_FIELD_MASK) { case LOG_RESULT: return "Result"; case LOG_ERROR: return "Error"; case LOG_WARNING: return "Warning"; case LOG_DEBUG: return "Debug"; case LOG_INFO: return "Info"; case LOG_SUMMARY: return "Summary"; case LOG_SEPARATOR: return "Separator"; case LOG_NEWLINE: return "Newline"; case LOG_ADVICE: return "Advice"; case LOG_HEADING: return "Heading"; case LOG_PASSED: return "Passed"; case LOG_FAILED: return "Failed"; case LOG_SKIPPED: return "Skipped"; case LOG_ABORTED: return "Aborted"; case LOG_INFOONLY: return "Info Only"; default: return "Unknown"; } } /* * fwts_log_field_to_str_full() * return full string name of log field */ char *fwts_log_field_to_str_upper(const fwts_log_field field) { static char str[16]; char *ptr1 = str; char *ptr2 = fwts_log_field_to_str_full(field); for (ptr1 = str; *ptr2; ptr1++, ptr2++) *ptr1 = toupper(*ptr2); *ptr1 = '\0'; return str; } /* * fwts_log_str_to_level() * return log level mapped from the given string */ int fwts_log_str_to_level(const char *str) { if (str) { if (strstr(str, "CRITICAL")) return LOG_LEVEL_CRITICAL; if (strstr(str, "HIGH")) return LOG_LEVEL_HIGH; if (strstr(str, "MEDIUM")) return LOG_LEVEL_MEDIUM; if (strstr(str, "LOW")) return LOG_LEVEL_LOW; if (strstr(str, "INFO")) return LOG_LEVEL_INFO; } return LOG_LEVEL_MEDIUM; /* Default */ } /* * fwts_log_level_to_str() * return string name of log level */ char *fwts_log_level_to_str(const fwts_log_level level) { switch (level) { case LOG_LEVEL_CRITICAL: return "CRITICAL"; case LOG_LEVEL_HIGH: return "HIGH"; case LOG_LEVEL_MEDIUM: return "MEDIUM"; case LOG_LEVEL_LOW: return "LOW"; case LOG_LEVEL_INFO: return "INFO"; case LOG_LEVEL_NONE: default: return " "; } } /* * fwts_log_print_fields() * dump out available log field names */ void fwts_log_print_fields(void) { fwts_log_field field = 1; char *str; printf("Available fields: "); for (field=1; ; field <<= 1) { str = fwts_log_field_to_str(field); if (strcmp(str, LOG_UNKOWN_FIELD) == 0) break; printf("%s%s", field == 1 ? "" : ",", str); } printf("\n"); } /* * fwts_log_str_to_field() * return log field of a given string, 0 if not matching */ fwts_log_field fwts_log_str_to_field(const char *text) { int i; static struct mapping { char *text; fwts_log_field field; } mappings[] = { { "RES", LOG_RESULT }, { "ERR", LOG_ERROR }, { "WRN", LOG_WARNING }, { "DBG", LOG_DEBUG }, { "INF", LOG_INFO }, { "SUM", LOG_SUMMARY }, { "SEP", LOG_SEPARATOR }, { "NLN", LOG_NEWLINE }, { "ADV", LOG_ADVICE }, { "HED", LOG_HEADING }, { "PAS", LOG_PASSED }, { "FAL", LOG_FAILED }, { "SKP", LOG_SKIPPED }, { "ABT", LOG_ABORTED }, { "INO", LOG_INFOONLY }, { "ALL", ~0 }, { NULL, 0 } }; for (i=0; mappings[i].text != NULL; i++) if (strcmp(mappings[i].text, text) == 0) return mappings[i].field; return 0; } /* * fwts_log_filter_set_field * set a filter bit map */ void fwts_log_filter_set_field(const fwts_log_field filter) { fwts_log_filter |= filter; } /* * fwts_log_filter_unset_field * clear a filter bit map */ void fwts_log_filter_unset_field(const fwts_log_field filter) { fwts_log_filter &= ~filter; } /* * fwts_log_set_field_filter * set/clear filter bit map based on a comma separated * list of field names. ~ or ^ prefix to a field name * clears a bit. */ void fwts_log_set_field_filter(const char *str) { char *token; char *saveptr; fwts_log_field field; for (;; str=NULL) { if ((token = strtok_r((char*)str, ",|", &saveptr)) == NULL) break; if (*token == '^' || *token == '~') { field = fwts_log_str_to_field(token+1); if (field) fwts_log_filter_unset_field(field); } else { field = fwts_log_str_to_field(token); if (field) fwts_log_filter_set_field(field); } } } /* * fwts_log_set_format() * set the log format string */ void fwts_log_set_format(const char *str) { fwts_log_format = str; } /* * fwts_log_type_filename_suffix() * return a filename suffix on a given log type */ static char *fwts_log_type_filename_suffix(const fwts_log_type type) { switch (type) { case LOG_TYPE_JSON: return ".json"; case LOG_TYPE_XML: return ".xml"; case LOG_TYPE_HTML: return ".html"; case LOG_TYPE_NONE: case LOG_TYPE_PLAINTEXT: default: return ".log"; } } /* * fwts_log_filename_new_suffix() * return the log name with suffix based on log type */ static char *fwts_log_filename(const char *filename, const fwts_log_type type) { char *ptr; char *new_name; char *suffix; size_t suffix_len; size_t trunc_len; size_t filename_len; struct stat stat_buf; /* * If the user specified a char special file, like /dev/null * or a named pipe, socket or symlink we should just return * that instead. */ if (stat(filename, &stat_buf) == 0) { if (S_ISCHR(stat_buf.st_mode) || S_ISFIFO(stat_buf.st_mode) || S_ISSOCK(stat_buf.st_mode) || S_ISLNK(stat_buf.st_mode)) return strdup(filename); } suffix = fwts_log_type_filename_suffix(type); suffix_len = strlen(suffix); /* * Locate an existing suffix, if it is one we recognise * then remove it and append the appropriate one */ ptr = rindex(filename, '.'); if (ptr && (!strcmp(ptr, ".log") || !strcmp(ptr, ".json") || !strcmp(ptr, ".xml") || !strcmp(ptr, ".html"))) { trunc_len = ptr - filename; if ((new_name = calloc(trunc_len + suffix_len + 1, 1)) == NULL) { fprintf(stderr, "Cannot allocate log name.\n"); return NULL; } strncpy(new_name, filename, trunc_len); strcat(new_name, suffix); /* strcat OK because calloc zero'd all of new_name */ return new_name; } /* * We didn't find a suffix or a known suffix, so append * the appropriate one to the given log filename */ filename_len = strlen(filename); if ((new_name = calloc(filename_len + suffix_len + 1, 1)) == NULL) { fprintf(stderr, "Cannot allocate log name.\n"); return NULL; } strcpy(new_name, filename); strcat(new_name, suffix); return new_name; } /* * fwts_log_vprintf() * printf to a log */ int fwts_log_printf(fwts_log *log, const fwts_log_field field, const fwts_log_level level, const char *status, const char *label, const char *prefix, const char *fmt, ...) { va_list args; int ret = 0; char buffer[LOG_MAX_BUF_SIZE]; if (!((field & LOG_FIELD_MASK) & fwts_log_filter)) return ret; if (log && log->magic == LOG_MAGIC) { fwts_list_link *item; /* * With the possibility of having multiple logs being written * to per call of fwts_log_printf() it is more efficient to * vsnprintf() here and then pass the formatted output down to * each log handler rather than re-formatting each time in each * handler */ va_start(args, fmt); ret = vsnprintf(buffer, sizeof(buffer), fmt, args); if (ret < 0) return ret; fwts_list_foreach(item, &log->log_files) { fwts_log_file *log_file = fwts_list_data(fwts_log_file *, item); if (log_file->ops && log_file->ops->print) log_file->ops->print(log_file, field, level, status, label, prefix, buffer); } va_end(args); } return ret; } /* * fwts_log_underline() * write an underline across log, using character ch as the underline */ void fwts_log_underline(fwts_log *log, const int ch) { if (log && log->magic == LOG_MAGIC) { fwts_list_link *item; fwts_list_foreach(item, &log->log_files) { fwts_log_file *log_file = fwts_list_data(fwts_log_file *, item); if (log_file->ops && log_file->ops->underline) log_file->ops->underline(log_file, ch); } } } /* * fwts_log_newline() * write newline to log */ void fwts_log_newline(fwts_log *log) { if (log && log->magic == LOG_MAGIC) { fwts_list_link *item; fwts_list_foreach(item, &log->log_files) { fwts_log_file *log_file = fwts_list_data(fwts_log_file *, item); if (log_file->ops && log_file->ops->newline) log_file->ops->newline(log_file); } } } int fwts_log_set_owner(fwts_log *log, const char *owner) { if (log && (log->magic == LOG_MAGIC)) { char *newowner = strdup(owner); if (newowner) { free(log->owner); log->owner = newowner; return FWTS_OK; } } return FWTS_ERROR; } /* * fwts_log_section_begin() * mark a start of a named section. For structured logging * such as XML and JSON this pushes a new named tagged section */ void fwts_log_section_begin(fwts_log *log, const char *name) { if (log && log->magic == LOG_MAGIC) { fwts_list_link *item; fwts_list_foreach(item, &log->log_files) { fwts_log_file *log_file = fwts_list_data(fwts_log_file *, item); if (log_file->ops && log_file->ops->section_begin) log_file->ops->section_begin(log_file, name); } } } /* * fwts_log_section_end() * mark end of a named section. For structured logging * such as XML and JSON this pops the end of a tagged section */ void fwts_log_section_end(fwts_log *log) { if (log && log->magic == LOG_MAGIC) { fwts_list_link *item; fwts_list_foreach(item, &log->log_files) { fwts_log_file *log_file = fwts_list_data(fwts_log_file *, item); if (log_file->ops && log_file->ops->section_end) log_file->ops->section_end(log_file); } } } /* * fwts_log_get_ops() * return log ops basedon log type */ static fwts_log_ops *fwts_log_get_ops(const fwts_log_type type) { switch (type) { case LOG_TYPE_JSON: return &fwts_log_json_ops; case LOG_TYPE_PLAINTEXT: return &fwts_log_plaintext_ops; case LOG_TYPE_XML: return &fwts_log_xml_ops; case LOG_TYPE_HTML: return &fwts_log_html_ops; case LOG_TYPE_NONE: default: return &fwts_log_plaintext_ops; } } /* * fwts_log_get_filename_type() * determine the filename type */ fwts_log_filename_type fwts_log_get_filename_type(const char *filename) { if (!strcmp(filename, "stderr")) return LOG_FILENAME_TYPE_STDERR; else if (!strcmp(filename, "stdout")) return LOG_FILENAME_TYPE_STDOUT; else return LOG_FILENAME_TYPE_FILE; } /* * fwts_log_filenames() * return string of all the log filenames that will be used */ char *fwts_log_get_filenames(const char *filename, const fwts_log_type type) { unsigned int i; char *filenames = NULL; char *tmp; size_t len = 0; for (i=0; i<32; i++) { fwts_log_type mask = 1 << i; if (type & mask) { if ((tmp = fwts_log_filename(filename, mask)) == NULL) { free(filenames); return NULL; } if (filenames) { char *new_filenames; len += strlen(tmp) + 2; if ((new_filenames = realloc(filenames, len)) == NULL) { free(filenames); free(tmp); return NULL; } else filenames = new_filenames; strcat(filenames, " "); strcat(filenames, tmp); } else { len = strlen(tmp) + 1; if ((filenames = malloc(len)) == NULL) { free(tmp); return NULL; } strcpy(filenames, tmp); } free(tmp); } } return filenames; } /* * fwts_log_open() * open a log file. if name is stderr or stdout, then attach log to these * streams. */ fwts_log *fwts_log_open( const char *owner, /* Creator of the log */ const char *filename, /* Log file name */ const char *mode, /* open mode, see fopen() modes */ const fwts_log_type type) /* Log type */ { fwts_log *newlog; unsigned int i; char *newname; if ((newlog = calloc(1, sizeof(fwts_log))) == NULL) return NULL; newlog->magic = LOG_MAGIC; fwts_log_set_owner(newlog, owner); fwts_list_init(&newlog->log_files); /* * Scan through and see which log types have been specified * and open the log file with the appropriate ops to perform * the logging */ for (i=0; i<32; i++) { fwts_log_type mask = 1 << i; /* The log type for this iteration */ /* If set then go and open up a log for this log type */ if (type & mask) { fwts_log_file *log_file; if ((log_file = calloc(1, sizeof(fwts_log_file))) == NULL) { fwts_log_close(newlog); return NULL; } log_file->type = mask; log_file->ops = fwts_log_get_ops(mask); log_file->log = newlog; log_file->filename_type = fwts_log_get_filename_type(filename); /* * To complicate matters we can have logs being * written to stderr, stdout or two a named file */ switch(log_file->filename_type) { case LOG_FILENAME_TYPE_STDERR: log_file->fp = stderr; break; case LOG_FILENAME_TYPE_STDOUT: log_file->fp = stdout; break; case LOG_FILENAME_TYPE_FILE: if ((newname = fwts_log_filename(filename, mask)) == NULL) { fwts_log_close(newlog); free(log_file); return NULL; } log_file->fp = fopen(newname, mode); free(newname); if (log_file->fp == NULL) { fwts_log_close(newlog); free(log_file); return NULL; } } /* Fix up the log specific line width */ if (log_line_width) { /* User has specified width, so use it */ log_file->line_width = log_line_width; } else { log_file->line_width = fwts_tty_width(fileno(log_file->fp), LOG_LINE_WIDTH); } /* ..and add the log file to the list of logs */ fwts_list_append(&newlog->log_files, log_file); /* ..and do the log specific opening set up */ if (log_file->ops && log_file->ops->open) log_file->ops->open(log_file); } } return newlog; } /* * fwts_log_close() * close any opened log files, free up memory */ int fwts_log_close(fwts_log *log) { if (log && (log->magic == LOG_MAGIC)) { fwts_list_link *item; fwts_list_foreach(item, &log->log_files) { fwts_log_file *log_file = fwts_list_data(fwts_log_file *, item); /* Do the log type specific close */ if (log_file->ops && log_file->ops->close) log_file->ops->close(log_file); /* Close opened log file */ if (log_file->fp && log_file->filename_type == LOG_FILENAME_TYPE_FILE) fclose(log_file->fp); } /* ..and free log files */ fwts_list_free_items(&log->log_files, free); free(log->owner); free(log); } return FWTS_OK; } src/lib/src/fwts_log_html.c000066400000000000000000000274561231470457100162400ustar00rootroot00000000000000/* * Copyright (C) 2010-2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #include #include #include #include #include #include #include #include "fwts.h" #define MAX_HTML_STACK (64) #define HTML_INDENT (2) typedef struct { const char *name; } fwts_log_html_stack_t; typedef struct { unsigned char ch; /* ASCII */ char * html; /* HTML equivalent */ } fwts_log_html_ascii_t; /* * ASCII to HTML conversion table: * ISO 10646, ISO 8879, ISO 8859-1 Latin alphabet No. 1 * Browser support: All browsers */ static fwts_log_html_ascii_t fwts_log_html_ascii_table[] = { { '"', """ }, { '&', "&" }, { '<', "<" }, { '>', ">" }, { '{', "{" }, { '|', "|" }, { '}', "}" }, { '~', "~" }, { 160, " " }, { 161, "&iexl;" }, { 162, "¢" }, { 163, "£" }, { 164, "¤" }, { 165, "¥" }, { 166, "¦" }, { 167, "§" }, { 168, "¨" }, { 169, "©" }, { 170, "ª" }, { 171, "«" }, { 172, "¬" }, { 173, "­" }, { 174, "®" }, { 175, "¯" }, { 176, "°" }, { 177, "±" }, { 178, "²" }, { 179, "³" }, { 180, "´" }, { 181, "µ" }, { 182, "¶" }, { 183, "·" }, { 184, "¸" }, { 185, "¹" }, { 186, "º" }, { 187, "»" }, { 187, "¼" }, { 189, "½" }, { 190, "¾" }, { 191, "¿" }, /* Probably never used, but here in case */ { 192, "À" }, { 193, "Á" }, { 194, "Â" }, { 195, "Ã" }, { 196, "Ä" }, { 197, "Å" }, { 198, "Æ" }, { 199, "Ç" }, { 200, "È" }, { 201, "É" }, { 202, "Ê" }, { 203, "Ë" }, { 204, "&lgrave;" }, { 205, "ĺ" }, { 206, "&lcirc;" }, { 207, "&luml;" }, { 208, "Ð" }, { 209, "Ñ" }, { 210, "Ò" }, { 211, "Ó" }, { 212, "Ô" }, { 213, "Õ" }, { 214, "Ö" }, { 215, "×" }, { 216, "Ø" }, { 217, "Ù" }, { 218, "Ú" }, { 219, "Û" }, { 220, "Ü" }, { 221, "Ý" }, { 222, "Þ" }, { 223, "ß" }, { 224, "à" }, { 225, "á" }, { 226, "â" }, { 227, "ã" }, { 228, "ä" }, { 229, "å" }, { 230, "æ" }, { 231, "ç" }, { 232, "è" }, { 233, "é" }, { 234, "ê" }, { 235, "&emuml;" }, { 236, "ì" }, { 237, "í" }, { 238, "î" }, { 239, "ï" }, { 240, "ð" }, { 241, "ñ" }, { 242, "ò" }, { 243, "ó" }, { 244, "ô" }, { 245, "õ" }, { 246, "ö" }, { 247, "÷" }, { 248, "ø" }, { 249, "ù" }, { 250, "ú" }, { 251, "û" }, { 252, "ü" }, { 253, "ý" }, { 254, "þ" }, { 255, "ÿ" }, { 0, NULL }, }; static fwts_log_html_stack_t html_stack[MAX_HTML_STACK]; static int html_stack_index = 0; static void fwts_log_html(fwts_log_file *log_file, const char *fmt, ...) { va_list args; va_start(args, fmt); fprintf(log_file->fp, "%*s", html_stack_index * HTML_INDENT, ""); vfprintf(log_file->fp, fmt, args); va_end(args); } /* * fwts_log_html_convert_ascii() * return a static string containing any conversion from ASCII to a * HTML representation of char ch. If no conversion needed, just * return a string containing the ch. */ static char *fwts_log_html_convert_ascii(const char ch) { int i; static char buf[2]; for (i = 0; fwts_log_html_ascii_table[i].html != NULL; i++) { if (fwts_log_html_ascii_table[i].ch == ch) return fwts_log_html_ascii_table[i].html; } /* No mapping, just return string containing ch */ buf[0] = ch; buf[1] = '\0'; return buf; } /* * fwts_log_html_convert_ascii_str() * convert an ASCII string into a HTML encoded string. The returned * string needs free'ing once finished with. */ static char *fwts_log_html_convert_ascii_str(const char *buffer) { const char *str1; char *converted; size_t len = 0; /* Step 1, figure out how much space we need */ for (str1 = buffer; *str1; str1++) { char *str = fwts_log_html_convert_ascii(*str1); len += strlen(str); } if ((converted = calloc(len + 1, 1)) == NULL) return NULL; /* Step 2, convert */ for (str1 = buffer; *str1; str1++) { char *str = fwts_log_html_convert_ascii(*str1); strcat(converted, str); } return converted; } /* * fwts_log_print_html() * print to a log */ static int fwts_log_print_html( fwts_log_file *log_file, const fwts_log_field field, const fwts_log_level level, const char *status, const char *label, const char *prefix, const char *buffer) { char *str; char *style; char *code_start; char *code_end; char *html_converted; FWTS_UNUSED(label); FWTS_UNUSED(prefix); if (!((field & LOG_FIELD_MASK) & fwts_log_filter)) return 0; if (field & (LOG_NEWLINE | LOG_SEPARATOR | LOG_DEBUG)) return 0; if ((html_converted = fwts_log_html_convert_ascii_str(buffer)) == NULL) { /* We can't report an error via the logging mechanism in case we loop */ fprintf(stderr, "Out of memory converting html.\n"); exit(EXIT_FAILURE); } fwts_log_html(log_file, "\n"); if (field & LOG_VERBATUM) { code_start = "
";
		code_end   = "
"; } else { code_start = ""; code_end = ""; } switch (field & LOG_FIELD_MASK) { case LOG_ERROR: fwts_log_html(log_file, " Error" "%s\n", html_converted); break; case LOG_WARNING: fwts_log_html(log_file, " Warning" "%s%s%s\n", code_start, html_converted, code_end); break; case LOG_HEADING: fwts_log_html(log_file, "%s%s%s\n", code_start, html_converted, code_end); break; case LOG_INFO: fwts_log_html(log_file, " %s%s%s\n", code_start, html_converted, code_end); break; case LOG_PASSED: fwts_log_html(log_file, "PASSED%s\n", html_converted); break; case LOG_FAILED: switch (level) { case LOG_LEVEL_CRITICAL: style = " class=style_critical"; break; case LOG_LEVEL_HIGH: style = " class=style_high"; break; case LOG_LEVEL_MEDIUM: style = " class=style_medium"; break; case LOG_LEVEL_LOW: style = " class=style_low"; break; case LOG_LEVEL_INFO: case LOG_LEVEL_NONE: default: style = ""; break; } str = fwts_log_level_to_str(level); fwts_log_html(log_file, " %s [%s]\n", style, *status ? status : "", str); fwts_log_html(log_file, " %s\n", html_converted); break; case LOG_SKIPPED: fwts_log_html(log_file, "Skipped" "%s%s%s\n", code_start, html_converted, code_end); break; case LOG_SUMMARY: fwts_log_html(log_file, " " "%s%s%s\n", code_start, html_converted, code_end); break; case LOG_ADVICE: fwts_log_html(log_file, " Advice" "%s%s%s\n", code_start, html_converted, code_end); break; default: break; } free(html_converted); fwts_log_html(log_file, "\n"); fflush(log_file->fp); log_file->line_number++; /* not used, but bump it anyway */ return 0; } /* * fwts_log_underline_html() * write an underline across log, using character ch as the underline */ static void fwts_log_underline_html(fwts_log_file *log_file, const int ch) { FWTS_UNUSED(log_file); FWTS_UNUSED(ch); /* No-op for html */ } /* * fwts_log_newline() * write newline to log */ static void fwts_log_newline_html(fwts_log_file *log_file) { FWTS_UNUSED(log_file); /* No-op for html */ } static void fwts_log_section_begin_html(fwts_log_file *log_file, const char *name) { if (!strcmp(name, "summary")) { fwts_log_html(log_file, "Summary\n"); } else if (!strcmp(name, "heading")) { fwts_log_html(log_file, "Firmware Test Suite\n"); } else if (!strcmp(name, "subtest_info")) { fwts_log_html(log_file, "\n"); } else if (!strcmp(name, "failure")) { fwts_log_html(log_file, "\n"); } fflush(log_file->fp); if (html_stack_index < MAX_HTML_STACK) { html_stack[html_stack_index].name = name; html_stack_index++; } else { fprintf(stderr, "html log stack overflow pushing section %s.\n", name); exit(EXIT_FAILURE); } } static void fwts_log_section_end_html(fwts_log_file *log_file) { if (html_stack_index > 0) { html_stack_index--; fflush(log_file->fp); } else { fprintf(stderr, "html log stack underflow.\n"); exit(EXIT_FAILURE); } } static void fwts_log_open_html(fwts_log_file *log_file) { fwts_log_html(log_file, "\n"); fwts_log_html(log_file, "\n"); fwts_log_html(log_file, " fwts log\n"); fwts_log_html(log_file, "\n"); fwts_log_html(log_file, "\n"); fwts_log_html(log_file, "\n"); fflush(log_file->fp); fwts_log_html(log_file, "\n"); fwts_log_html(log_file, "\n"); fwts_log_section_begin_html(log_file, "fwts"); } static void fwts_log_close_html(fwts_log_file *log_file) { fwts_log_section_end_html(log_file); fwts_log_html(log_file, "
\n"); fwts_log_html(log_file, "\n"); fwts_log_html(log_file, "\n"); fflush(log_file->fp); } fwts_log_ops fwts_log_html_ops = { .print = fwts_log_print_html, .underline = fwts_log_underline_html, .newline = fwts_log_newline_html, .section_begin = fwts_log_section_begin_html, .section_end = fwts_log_section_end_html, .open = fwts_log_open_html, .close = fwts_log_close_html }; src/lib/src/fwts_log_json.c000066400000000000000000000146261231470457100162400ustar00rootroot00000000000000/* * Copyright (C) 2010-2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #define LOG_LINE_WIDTH 100 #include #include #include #include #include #include #include #include #include "fwts.h" #define MAX_JSON_STACK (64) typedef struct { json_object *obj; json_object *log; } fwts_log_json_stack_t; static fwts_log_json_stack_t json_stack[MAX_JSON_STACK]; static int json_stack_index = 0; /* * fwts_log_out_of_memory_json() * handle out of memory from json objects */ static void fwts_log_out_of_memory_json(void) { fprintf(stderr, "Out of memory allocating a json object.\n"); exit(EXIT_FAILURE); } /* * fwts_log_printf_json() * print to a log */ static int fwts_log_print_json( fwts_log_file *log_file, const fwts_log_field field, const fwts_log_level level, const char *status, const char *label, const char *prefix, const char *buffer) { char tmpbuf[4096]; struct tm tm; time_t now; json_object *header; json_object *json_log = (json_object*)json_stack[json_stack_index-1].log; json_object *obj; char *str; FWTS_UNUSED(prefix); if (!((field & LOG_FIELD_MASK) & fwts_log_filter)) return 0; if (field & (LOG_NEWLINE | LOG_SEPARATOR | LOG_DEBUG)) return 0; time(&now); localtime_r(&now, &tm); if ((header = json_object_new_object()) == NULL) fwts_log_out_of_memory_json(); if ((obj = json_object_new_int(log_file->line_number)) == NULL) fwts_log_out_of_memory_json(); json_object_object_add(header, "line_num", obj); snprintf(tmpbuf, sizeof(tmpbuf), "%2.2d/%2.2d/%-2.2d", tm.tm_mday, tm.tm_mon + 1, (tm.tm_year+1900) % 100); if ((obj = json_object_new_string(tmpbuf)) == NULL) fwts_log_out_of_memory_json(); json_object_object_add(header, "date", obj); snprintf(tmpbuf, sizeof(tmpbuf), "%2.2d:%2.2d:%2.2d", tm.tm_hour, tm.tm_min, tm.tm_sec); if ((obj = json_object_new_string(tmpbuf)) == NULL) fwts_log_out_of_memory_json(); json_object_object_add(header, "time", obj); if ((obj = json_object_new_string(fwts_log_field_to_str_full(field))) == NULL) fwts_log_out_of_memory_json(); json_object_object_add(header, "field_type", obj); str = fwts_log_level_to_str(level); if (!strcmp(str, " ")) str = "None"; if ((obj = json_object_new_string(str)) == NULL) fwts_log_out_of_memory_json(); json_object_object_add(header, "level", obj); if ((obj = json_object_new_string(*status ? status : "None")) == NULL) fwts_log_out_of_memory_json(); json_object_object_add(header, "status", obj); if ((obj = json_object_new_string(label && *label ? label : "None")) == NULL) fwts_log_out_of_memory_json(); json_object_object_add(header, "failure_label", obj); /* Redundant really if ((obj = json_object_new_string(log->owner)) == NULL) fwts_log_out_of_memory_json(); json_object_object_add(header, "owner", obj); */ if ((obj = json_object_new_string(buffer)) == NULL) fwts_log_out_of_memory_json(); json_object_object_add(header, "log_text", obj); json_object_array_add(json_log, header); log_file->line_number++; /* This is academic really */ return 0; } /* * fwts_log_underline_json() * write an underline across log, using character ch as the underline */ static void fwts_log_underline_json(fwts_log_file *log_file, const int ch) { FWTS_UNUSED(log_file); FWTS_UNUSED(ch); /* No-op for json */ } /* * fwts_log_newline() * write newline to log */ static void fwts_log_newline_json(fwts_log_file *log_file) { FWTS_UNUSED(log_file); /* No-op for json */ } static void fwts_log_section_begin_json(fwts_log_file *log_file, const char *name) { json_object *json_obj; json_object *json_log; FWTS_UNUSED(log_file); if ((json_obj = json_object_new_object()) == NULL) fwts_log_out_of_memory_json(); if ((json_log = json_object_new_array()) == NULL) fwts_log_out_of_memory_json(); /* * unfortunately json_object_object_add can fail on * a strdup, but it doesn't check this and doesn't * tell us about this either. Bit lame really. */ json_object_object_add(json_obj, name, json_log); if (json_stack_index > 0) if (json_object_array_add(json_stack[json_stack_index-1].log, json_obj) != 0) fwts_log_out_of_memory_json(); if (json_stack_index < MAX_JSON_STACK) { json_stack[json_stack_index].obj = json_obj; json_stack[json_stack_index].log = json_log; json_stack_index++; } else { fprintf(stderr, "json log stack overflow pushing section %s.\n", name); exit(EXIT_FAILURE); } } static void fwts_log_section_end_json(fwts_log_file *log_file) { FWTS_UNUSED(log_file); if (json_stack_index > 0) json_stack_index--; else { fprintf(stderr, "json log stack underflow.\n"); exit(EXIT_FAILURE); } } static void fwts_log_open_json(fwts_log_file *log_file) { fwts_log_section_begin_json(log_file, "fwts"); } static void fwts_log_close_json(fwts_log_file *log_file) { const char *str; fwts_log_section_end_json(log_file); #ifdef JSON_C_TO_STRING_PRETTY str = json_object_to_json_string_ext( json_stack[0].obj, JSON_C_TO_STRING_PRETTY); #else str = json_object_to_json_string(json_stack[0].obj); #endif if (str == NULL) { /* Let's not make this bail out as user may be logging to other files too */ fprintf(stderr, "Cannot turn json object to text for output. Empty json output\n"); } else { size_t len = strlen(str); fwrite(str, 1, len, log_file->fp); fwrite("\n", 1, 1, log_file->fp); fflush(log_file->fp); log_file->line_number++; } json_object_put(json_stack[0].obj); } fwts_log_ops fwts_log_json_ops = { .print = fwts_log_print_json, .underline = fwts_log_underline_json, .newline = fwts_log_newline_json, .section_begin = fwts_log_section_begin_json, .section_end = fwts_log_section_end_json, .open = fwts_log_open_json, .close = fwts_log_close_json }; src/lib/src/fwts_log_plaintext.c000066400000000000000000000116161231470457100172730ustar00rootroot00000000000000/* * Copyright (C) 2010-2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #define LOG_LINE_WIDTH 100 #include #include #include #include #include #include #include #include "fwts.h" /* * fwts_log_header_plaintext() * format up a tabulated log heading */ static int fwts_log_header_plaintext( fwts_log_file *log_file, char *buffer, const int len, const fwts_log_field field, const fwts_log_level level) { const char *ptr; int n = 0; struct tm tm; time_t now; time(&now); localtime_r(&now, &tm); for (ptr = fwts_log_format; *ptr; ) { if (*ptr == '%') { ptr++; if (!strncmp(ptr, "line", 4)) { n += snprintf(buffer + n, len - n, "%5.5d", log_file->line_number); ptr += 4; } if (!strncmp(ptr, "date", 4)) { n += snprintf(buffer + n, len - n, "%2.2d/%2.2d/%-2.2d", tm.tm_mday, tm.tm_mon + 1, (tm.tm_year+1900) % 100); ptr += 4; } if (!strncmp(ptr, "time", 4)) { n += snprintf(buffer + n, len - n, "%2.2d:%2.2d:%2.2d", tm.tm_hour, tm.tm_min, tm.tm_sec); ptr += 4; } if (!strncmp(ptr, "field", 5)) { n += snprintf(buffer + n, len - n, "%s", fwts_log_field_to_str(field)); ptr += 5; } if (!strncmp(ptr, "level", 5)) { n += snprintf(buffer + n, len - n, "%1.1s", fwts_log_level_to_str(level)); ptr += 5; } if (!strncmp(ptr,"owner", 5) && log_file->log->owner) { n += snprintf(buffer + n, len - n, "%-15.15s", log_file->log->owner); ptr += 5; } } else { n += snprintf(buffer+n, len-n, "%c", *ptr); ptr++; } } return n; } /* * fwts_log_print() * print to a log */ static int fwts_log_print_plaintext( fwts_log_file *log_file, const fwts_log_field field, const fwts_log_level level, const char *status, /* Ignored */ const char *label, /* Ignored */ const char *prefix, const char *buffer) { char tmpbuf[8192]; int n = 0; int header_len; int len = 0; fwts_list *lines; fwts_list_link *item; FWTS_UNUSED(status); FWTS_UNUSED(label); if (!((field & LOG_FIELD_MASK) & fwts_log_filter)) return 0; /* This is a pain, we neen to find out how big the leading log message is, so format one up. */ n = header_len = fwts_log_header_plaintext(log_file, tmpbuf, sizeof(tmpbuf), field, level); n += snprintf(tmpbuf + n, sizeof(tmpbuf) - n, "%s%s", prefix, buffer); /* Break text into multi-lines if necessary */ if (field & LOG_VERBATUM) lines = fwts_list_from_text(tmpbuf + header_len); else lines = fwts_format_text(tmpbuf + header_len, log_file->line_width - header_len); len = n; fwts_list_foreach(item, lines) { char *text = fwts_text_list_text(item); if (!(field & LOG_NO_FIELDS)) { /* Re-format up a log heading with current line number which may increment with multiple line log messages */ fwts_log_header_plaintext(log_file, tmpbuf, sizeof(tmpbuf), field, level); fwrite(tmpbuf, 1, header_len, log_file->fp); } fwrite(text, 1, strlen(text), log_file->fp); fwrite("\n", 1, 1, log_file->fp); fflush(log_file->fp); log_file->line_number++; len += strlen(text) + 1; } fwts_text_list_free(lines); return len; } /* * fwts_log_underline_plaintext() * write an underline across log, using character ch as the underline */ static void fwts_log_underline_plaintext(fwts_log_file *log_file, const int ch) { int n; char *buffer; size_t width = log_file->line_width + 1; if (!((LOG_SEPARATOR & LOG_FIELD_MASK) & fwts_log_filter)) return; buffer = calloc(1, width); if (!buffer) return; /* Unlikely, and just abort */ /* Write in leading optional line prefix */ n = fwts_log_header_plaintext(log_file, buffer, width, LOG_SEPARATOR, LOG_LEVEL_NONE); memset(buffer + n, ch, width - n); buffer[width - 1] = '\n'; fwrite(buffer, 1, width, log_file->fp); fflush(log_file->fp); log_file->line_number++; free(buffer); } /* * fwts_log_newline_plaintext() * write newline to log */ static void fwts_log_newline_plaintext(fwts_log_file *log_file) { fwrite("\n", 1, 1, log_file->fp); fflush(log_file->fp); log_file->line_number++; } fwts_log_ops fwts_log_plaintext_ops = { .print = fwts_log_print_plaintext, .underline = fwts_log_underline_plaintext, .newline = fwts_log_newline_plaintext }; src/lib/src/fwts_log_xml.c000066400000000000000000000113621231470457100160610ustar00rootroot00000000000000/* * Copyright (C) 2010-2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #include #include #include #include #include #include #include #include "fwts.h" #define MAX_XML_STACK (64) #define XML_INDENT (4) typedef struct { const char *name; } fwts_log_xml_stack_t; static fwts_log_xml_stack_t xml_stack[MAX_XML_STACK]; static int xml_stack_index = 0; /* * fwts_log_print_xml() * print to a log */ static int fwts_log_print_xml( fwts_log_file *log_file, const fwts_log_field field, const fwts_log_level level, const char *status, const char *label, const char *prefix, const char *buffer) { struct tm tm; time_t now; char *str; FWTS_UNUSED(prefix); if (!((field & LOG_FIELD_MASK) & fwts_log_filter)) return 0; if (field & (LOG_NEWLINE | LOG_SEPARATOR | LOG_DEBUG)) return 0; time(&now); localtime_r(&now, &tm); fprintf(log_file->fp, "%*s\n", xml_stack_index * XML_INDENT, ""); fprintf(log_file->fp, "%*s%d\n", (xml_stack_index + 1) * XML_INDENT, "", log_file->line_number); fprintf(log_file->fp, "%*s%2.2d/%2.2d/%-2.2d\n", (xml_stack_index + 1) * XML_INDENT, "", tm.tm_mday, tm.tm_mon + 1, (tm.tm_year+1900) % 100); fprintf(log_file->fp, "%*s\n", (xml_stack_index + 1) * XML_INDENT, "", tm.tm_hour, tm.tm_min, tm.tm_sec); fprintf(log_file->fp, "%*s%s\n", (xml_stack_index + 1) * XML_INDENT, "", fwts_log_field_to_str_full(field)); str = fwts_log_level_to_str(level); if (!strcmp(str, " ")) str = "None"; fprintf(log_file->fp, "%*s%s\n", (xml_stack_index + 1) * XML_INDENT, "", str); fprintf(log_file->fp, "%*s%s\n", (xml_stack_index + 1) * XML_INDENT, "", *status ? status : "None"); fprintf(log_file->fp, "%*s%s\n", (xml_stack_index + 1) * XML_INDENT, "", label && *label ? label : "None"); fprintf(log_file->fp, "%*s%s\n", (xml_stack_index + 1) * XML_INDENT, "", buffer); fprintf(log_file->fp, "%*s\n", xml_stack_index * XML_INDENT, ""); fflush(log_file->fp); log_file->line_number++; return 0; } /* * fwts_log_underline_xml() * write an underline across log, using character ch as the underline */ static void fwts_log_underline_xml(fwts_log_file *log_file, const int ch) { FWTS_UNUSED(log_file); FWTS_UNUSED(ch); /* No-op for xml */ } /* * fwts_log_newline() * write newline to log */ static void fwts_log_newline_xml(fwts_log_file *log_file) { FWTS_UNUSED(log_file); /* No-op for xml */ } static void fwts_log_section_begin_xml(fwts_log_file *log_file, const char *name) { fprintf(log_file->fp, "%*s<%s>\n", xml_stack_index * XML_INDENT, "", name); fflush(log_file->fp); if (xml_stack_index < MAX_XML_STACK) { xml_stack[xml_stack_index].name = name; xml_stack_index++; } else { fprintf(stderr, "xml log stack overflow pushing section %s.\n", name); exit(EXIT_FAILURE); } } static void fwts_log_section_end_xml(fwts_log_file *log_file) { if (xml_stack_index > 0) { xml_stack_index--; fprintf(log_file->fp, "%*s\n", xml_stack_index * XML_INDENT, "", xml_stack[xml_stack_index].name); fflush(log_file->fp); } else { fprintf(stderr, "xml log stack underflow.\n"); exit(EXIT_FAILURE); } } static void fwts_log_open_xml(fwts_log_file *log_file) { char *xml_header = "\n"; fwrite(xml_header, 1, strlen(xml_header), log_file->fp); fflush(log_file->fp); fwts_log_section_begin_xml(log_file, "fwts"); } static void fwts_log_close_xml(fwts_log_file *log_file) { fwts_log_section_end_xml(log_file); fwrite("\n", 1, 1, log_file->fp); fflush(log_file->fp); log_file->line_number++; } fwts_log_ops fwts_log_xml_ops = { .print = fwts_log_print_xml, .underline = fwts_log_underline_xml, .newline = fwts_log_newline_xml, .section_begin = fwts_log_section_begin_xml, .section_end = fwts_log_section_end_xml, .open = fwts_log_open_xml, .close = fwts_log_close_xml }; src/lib/src/fwts_memorymap.c000066400000000000000000000210041231470457100164200ustar00rootroot00000000000000/* * Copyright (C) 2006, Intel Corporation * Copyright (C) 2010-2014 Canonical * * This file was originally part of the Linux-ready Firmware Developer Kit * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ #include #include #include #include #include #include #include #include "fwts.h" /* * fwts_fwts_memory_map_entry_compare() * callback used to sort memory_map entries on start address */ static int fwts_fwts_memory_map_entry_compare(void *data1, void *data2) { fwts_memory_map_entry *entry1 = (fwts_memory_map_entry *)data1; fwts_memory_map_entry *entry2 = (fwts_memory_map_entry *)data2; if (entry1->start_address < entry2->start_address) return -1; else if (entry1->start_address < entry2->start_address) return 1; else return 0; } /* * fwts_memory_map_str_to_type() * convert memory strings into type values */ static int fwts_memory_map_str_to_type(const char *str) { /* Strings from /sys/firmware/memmap/x/type */ if (strstr(str, "System RAM")) return FWTS_MEMORY_MAP_USABLE; if (strstr(str, "reserved")) return FWTS_MEMORY_MAP_RESERVED; if (strstr(str, "ACPI Non-volatile Storage")) return FWTS_MEMORY_MAP_ACPI; /* Strings from kernel log */ if (strstr(str, "(usable)")) return FWTS_MEMORY_MAP_USABLE; if (strstr(str, "(reserved)")) return FWTS_MEMORY_MAP_RESERVED; if (strstr(str, "ACPI")) return FWTS_MEMORY_MAP_ACPI; return FWTS_MEMORY_MAP_UNKNOWN; } /* * fwts_memory_map_type_to_str() * convert E280 type values to strings */ static char *fwts_memory_map_type_to_str(const int type) { switch (type) { case FWTS_MEMORY_MAP_RESERVED: return "(reserved)"; case FWTS_MEMORY_MAP_ACPI: return "(ACPI Non-volatile Storage)"; case FWTS_MEMORY_MAP_USABLE: return "(System RAM)"; default: return "(UNKNOWN)"; } } /* * fwts_register_memory_map_line() * add memory_map line entry into a list ordered on start address */ static int fwts_register_memory_map_line(fwts_list *memory_map_list, const uint64_t start, const uint64_t end, const int type) { fwts_memory_map_entry *entry; if ((entry = calloc(1, sizeof(fwts_memory_map_entry))) == NULL) return FWTS_ERROR; entry->start_address = start; entry->end_address = end; entry->type = type; if (fwts_list_add_ordered(memory_map_list, entry, fwts_fwts_memory_map_entry_compare) == NULL) return FWTS_ERROR; return FWTS_OK; } /* * fwts_memory_map_type() * figure out memory region type on a given memory address */ int fwts_memory_map_type(fwts_list *memory_map_list, const uint64_t memory) { fwts_memory_map_entry *entry; fwts_list_link *item; fwts_list_foreach(item, memory_map_list) { entry = fwts_list_data(fwts_memory_map_entry*, item); if (entry->start_address <= memory && entry->end_address > memory) return entry->type; } return FWTS_MEMORY_MAP_UNKNOWN; } fwts_memory_map_entry *fwts_memory_map_info(fwts_list *memory_map_list, const uint64_t memory) { fwts_memory_map_entry *entry; fwts_list_link *item; fwts_list_foreach(item, memory_map_list) { entry = fwts_list_data(fwts_memory_map_entry*, item); if (entry->start_address <= memory && entry->end_address > memory) return entry; } return NULL; } /* * fwts_memory_map_is_reserved() * determine if a memory region is marked as reserved or not. */ fwts_bool fwts_memory_map_is_reserved(fwts_list *memory_map_list, const uint64_t memory) { int result = FWTS_MEMORY_MAP_UNKNOWN; /* when we don't have FWTS_MEMORY_MAP info, assume all is fair */ if (memory_map_list == NULL) return FWTS_TRUE; /* bios data area is always reserved */ if ((memory >= 640 * 1024) && (memory <= 1024*1024)) return FWTS_TRUE; result = fwts_memory_map_type(memory_map_list, memory); if (result == FWTS_MEMORY_MAP_RESERVED) return FWTS_TRUE; if (result == FWTS_MEMORY_MAP_ACPI) return FWTS_TRUE; return FWTS_FALSE; } /* * fwts_memory_map_dmesg_info() * callback to check dmesg for memory_map info */ static void fwts_memory_map_dmesg_info(void *data, void *private) { char *str; char *line = (char *)data; fwts_list *memory_map_list = (fwts_list *)private; if ((str = strstr(line,"BIOS-memory_map:")) != NULL) { uint64_t start; uint64_t end; start = strtoull(str+10, NULL, 16); str = strstr(line," - "); if (str) { str += 3; end = strtoull(str, NULL, 16) - 1; fwts_register_memory_map_line(memory_map_list, start, end, fwts_memory_map_str_to_type(line)); } } } /* * fwts_memory_map_dump_info() * callback to dump FWTS_MEMORY_MAP region */ static void fwts_memory_map_dump_info(void *data, void *private) { fwts_memory_map_entry *entry = (fwts_memory_map_entry *)data; fwts_framework *fw = (fwts_framework *)private; fwts_log_info_verbatum(fw, "0x%16.16" PRIx64 " - 0x%16.16" PRIx64 " %s", entry->start_address, entry->end_address, fwts_memory_map_type_to_str(entry->type)); } /* * fwts_memory_map_table_dump() * dump FWTS_MEMORY_MAP region */ void fwts_memory_map_table_dump(fwts_framework *fw, fwts_list *memory_map_list) { fwts_log_info_verbatum(fw, "Memory Map Layout"); fwts_log_info_verbatum(fw, "-----------------"); fwts_list_iterate(memory_map_list, fwts_memory_map_dump_info, fw); } /* * fwts_memory_map_table_load_from_klog() * load memory_map data from the kernel log */ fwts_list *fwts_memory_map_table_load_from_klog(fwts_framework *fw) { fwts_list *klog; fwts_list *memory_map_list; FWTS_UNUSED(fw); if ((klog = fwts_klog_read()) == NULL) return NULL; if ((memory_map_list = fwts_list_new()) == NULL) { fwts_klog_free(klog); return NULL; } fwts_list_iterate(klog, fwts_memory_map_dmesg_info, memory_map_list); fwts_klog_free(klog); return memory_map_list; } /* * fwts_memory_map_table_read_entry() * load individual memory_map entry from /sys/firmware/memmap/ */ static fwts_memory_map_entry *fwts_memory_map_table_read_entry(const char *which) { char path[PATH_MAX]; char *data; fwts_memory_map_entry *entry; if ((entry = calloc(1, sizeof(fwts_memory_map_entry))) == NULL) return NULL; snprintf(path, sizeof(path), "/sys/firmware/memmap/%s/start", which); if ((data = fwts_get(path)) == NULL) { free(entry); return NULL; } sscanf(data, "0x%" SCNx64, &entry->start_address); free(data); snprintf(path, sizeof(path), "/sys/firmware/memmap/%s/end", which); if ((data = fwts_get(path)) == NULL) { free(entry); return NULL; } sscanf(data, "0x%" SCNx64, &entry->end_address); free(data); snprintf(path, sizeof(path), "/sys/firmware/memmap/%s/type", which); if ((data = fwts_get(path)) == NULL) { free(entry); return NULL; } entry->type = fwts_memory_map_str_to_type(data); free(data); return entry; } /* * fwts_memory_map_table_load() * load memory_map table from /sys/firmware/memmap/ */ fwts_list *fwts_memory_map_table_load(fwts_framework *fw) { DIR *dir; struct dirent *directory; fwts_list *memory_map_list; /* Try to load from /sys/firmware/memmap, but if we fail, try scanning the kernel log as a fallback */ if ((dir = opendir("/sys/firmware/memmap/")) == NULL) return fwts_memory_map_table_load_from_klog(fw); if ((memory_map_list = fwts_list_new()) == NULL) { closedir(dir); return NULL; } while ((directory = readdir(dir)) != NULL) { if (strncmp(directory->d_name, ".", 1)) { fwts_memory_map_entry *entry = fwts_memory_map_table_read_entry(directory->d_name); fwts_list_add_ordered(memory_map_list, entry, fwts_fwts_memory_map_entry_compare); } } closedir(dir); return memory_map_list; } /* * fwts_memory_map_table_free() * free memory_map list */ void fwts_memory_map_table_free(fwts_list *memory_map_list) { fwts_list_free(memory_map_list, free); } const char *fwts_memory_map_name(const int type) { switch (type) { case FWTS_FIRMWARE_BIOS: return "Int 15 AX=E820 BIOS memory map"; case FWTS_FIRMWARE_UEFI: return "UEFI run-time service memory map"; default: return "Unknown memory map"; } } src/lib/src/fwts_mmap.c000066400000000000000000000042561231470457100153560ustar00rootroot00000000000000/* * Copyright (C) 2011-2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #include #include #include #include #include #include "fwts.h" #define FWTS_DEFAULT_PAGE_SIZE (4096) /* * fwts_page_size() * determine system page size, guess if we can't * get it from sysconf(). */ size_t fwts_page_size(void) { long page_size; page_size = sysconf(_SC_PAGESIZE); /* If sysconf() returns -1, default it 4K */ return (size_t)(page_size == -1 ? FWTS_DEFAULT_PAGE_SIZE : page_size); } /* * fwts_mmap() * Try and map physical memory from offset address 'start' and length * 'size'. Return either the address or FWTS_MAP_FAILED if failed to mmap. */ void *fwts_mmap(const off_t start, const size_t size) { int fd; int page_size; off_t offset; size_t length; void *mem; void *ret = FWTS_MAP_FAILED; page_size = fwts_page_size(); offset = ((size_t)start) & (page_size - 1); length = (size_t)size + offset; if ((fd = open("/dev/mem", O_RDONLY)) < 0) return ret; if ((mem = mmap(NULL, length, PROT_READ, MAP_PRIVATE, fd, start - offset)) != MAP_FAILED) ret = (mem + offset); close(fd); return ret; } /* * fwts_munmap() * Unmap memory mapped wuth fwts_mmap. Needs the mmap'd address and size. */ int fwts_munmap(void *mem, const size_t size) { int page_size; off_t offset; page_size = fwts_page_size(); offset = ((off_t)(mem)) & (page_size - 1); if (munmap(mem - offset, size + offset) < 0) return FWTS_ERROR; return FWTS_OK; } src/lib/src/fwts_multiproc.c000066400000000000000000000124231231470457100164350ustar00rootroot00000000000000/* * Copyright (C) 2011-2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #define _GNU_SOURCE #include #include #include #include #include #include #include #include #include #include #include #include #include #include "fwts.h" #define SYSTEM_BASE_END (0x000a0000) /* Assume > 512K, end is at 640K */ #define BIOS_START (0x000e0000) /* Start of BIOS memory */ #define BIOS_END (0x000fffff) /* End of BIOS memory */ /* * fwts_mp_get_address() * scan for _MP_ floating pointer, set phys_addr if found. */ static int fwts_mp_get_address(uint32_t *phys_addr) { off_t ebda; int i; typedef struct { off_t start; off_t end; } fwts_scan_region; fwts_scan_region regions[] = { { SYSTEM_BASE_END - 1024, SYSTEM_BASE_END }, /* Assume 640K or more */ { BIOS_START, BIOS_END }, { 0, 0x400 }, { 0, 0 }, }; /* If we have an EBDA region defined, scan this rather than default end of 640K region */ if ((ebda = fwts_ebda_get()) != FWTS_NO_EBDA) { if (ebda != 0) { regions[0].start = ebda; regions[0].end = ebda + 1024; } } for (i=0;regions[i].end; i++) { void *mem; uint8_t *ptr; off_t start = regions[i].start; size_t size = regions[i].end - start; if ((mem = fwts_mmap(start, size)) == FWTS_MAP_FAILED) continue; for (ptr = mem; ptr < (uint8_t*)(mem + size); ptr+=16) { if ((*ptr == '_') && (*(ptr + 1) == 'M') && (*(ptr + 2) == 'P') && (*(ptr + 3) == '_')) { fwts_mp_floating_header *hdr = (fwts_mp_floating_header*)ptr; if (fwts_checksum((uint8_t *)hdr, sizeof(fwts_mp_floating_header)) == 0) { /* Looks valid, so return addr */ *phys_addr = hdr->phys_address; (void)fwts_munmap(mem, size); return FWTS_OK; } } } (void)fwts_munmap(mem, size); } *phys_addr = 0; return FWTS_ERROR; } /* * fwts_mp_data_get() * find _MP_ data, map in header and table, * collect up entries into a list */ int fwts_mp_data_get(fwts_mp_data *data) { uint32_t phys_addr; void *mem; uint8_t *tmp; fwts_mp_config_table_header *header; if (data == NULL) return FWTS_ERROR; if (fwts_mp_get_address(&phys_addr) != FWTS_OK) return FWTS_ERROR; data->phys_addr = phys_addr; /* Get header and find out full size of header and table */ mem = fwts_mmap((off_t)phys_addr, sizeof(fwts_mp_config_table_header)); if (mem == FWTS_MAP_FAILED) return FWTS_ERROR; header = (fwts_mp_config_table_header *)mem; fwts_list_init(&data->entries); data->size = header->base_table_length + ((header->spec_rev == 1) ? 0 : header->extended_table_length); /* Remap with full header and table now we know how big it is */ (void)fwts_munmap(mem, sizeof(fwts_mp_config_table_header)); mem = fwts_mmap((off_t)phys_addr, data->size); if (mem == FWTS_MAP_FAILED) return FWTS_ERROR; data->header = (fwts_mp_config_table_header*)mem; tmp = (uint8_t*)mem + sizeof(fwts_mp_config_table_header); /* Build a list containing the addresses of where entries start */ while (tmp < (uint8_t*)mem + data->size) { switch (*tmp) { case FWTS_MP_CPU_ENTRY: fwts_list_append(&data->entries, tmp); tmp += sizeof(fwts_mp_processor_entry); break; case FWTS_MP_BUS_ENTRY: fwts_list_append(&data->entries, tmp); tmp += sizeof(fwts_mp_bus_entry); break; case FWTS_MP_IO_APIC_ENTRY: fwts_list_append(&data->entries, tmp); tmp += sizeof(fwts_mp_io_apic_entry); break; case FWTS_MP_IO_INTERRUPT_ENTRY: fwts_list_append(&data->entries, tmp); tmp += sizeof(fwts_mp_io_interrupt_entry); break; case FWTS_MP_LOCAL_INTERRUPT_ENTRY: fwts_list_append(&data->entries, tmp); tmp += sizeof(fwts_mp_local_interrupt_entry); break; case FWTS_MP_SYS_ADDR_ENTRY: fwts_list_append(&data->entries, tmp); tmp += sizeof(fwts_mp_system_address_space_entry); break; case FWTS_MP_BUS_HIERARCHY_ENTRY: fwts_list_append(&data->entries, tmp); tmp += sizeof(fwts_mp_bus_hierarchy_entry); break; case FWTS_MP_COMPAT_BUS_ADDRESS_SPACE_ENTRY: fwts_list_append(&data->entries, tmp); tmp += sizeof(fwts_mp_compat_bus_address_space_entry); break; default: tmp = mem + data->size; /* Force abort */ break; } } return FWTS_OK; } /* * fwts_mp_data_free() * free entries and unmap */ int fwts_mp_data_free(fwts_mp_data *data) { if (data == NULL) return FWTS_ERROR; /* Discard list */ fwts_list_free_items(&data->entries, NULL); /* Free mapped data */ if (data->header) (void)fwts_munmap(data->header, data->size); return FWTS_OK; } src/lib/src/fwts_oops.c000066400000000000000000000074221231470457100154020ustar00rootroot00000000000000/* * Copyright (C) 2011-2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #include #include #include #include #include "fwts.h" #define FWTS_OOPS_GOT_OOPS (0x0001) #define FWTS_OOPS_GOT_CALL_TRACE (0x0002) #define FWTS_OOPS_GOT_END_TRACE (0x0004) #define FWTS_OOPS_GOT_WARN_ON (0x0008) #define FWTS_OOPS_DUMPABLE \ (FWTS_OOPS_GOT_OOPS | FWTS_OOPS_GOT_CALL_TRACE | FWTS_OOPS_GOT_END_TRACE) #define FWTS_WARN_ON_DUMPABLE \ (FWTS_OOPS_GOT_WARN_ON | FWTS_OOPS_GOT_CALL_TRACE | FWTS_OOPS_GOT_END_TRACE) /* * fwts_klog_stack_dump() * for a given item in a kernel log list, scan for an oops or WARN_ON message. * Increment oopses or warn_ons depending on what we find and dump out the stack * trace to the fwts log */ static void fwts_klog_stack_dump( fwts_framework *fw, fwts_list_link *bug_item, int *oopses, int *warn_ons) { fwts_list_link *item = bug_item; int lines = 0; int dumpable = 0; bool dumpstack = false; fwts_list_foreach_continue(item) { char *line = fwts_klog_remove_timestamp(fwts_list_data(char *, item)); if (strstr(line, "Oops:")) dumpable |= FWTS_OOPS_GOT_OOPS; if (strstr(line, "WARNING: at")) dumpable |= FWTS_OOPS_GOT_WARN_ON; if (strstr(line, "Call Trace:")) dumpable |= FWTS_OOPS_GOT_CALL_TRACE; if (strstr(line, "--[ end trace")) { dumpable |= FWTS_OOPS_GOT_END_TRACE; break; } lines++; /* * We are looking for an Oops message within 5 lines of a "BUG:" * or we've got a WARN_ON then, OK, otherwise abort. */ if ((lines > 5) && (!(dumpable & (FWTS_OOPS_GOT_OOPS | FWTS_OOPS_GOT_WARN_ON)))) return; } /* Sanity check: too many lines? it is a bit suspect */ if (lines > 100) return; if (item == NULL) return; /* Found all the features that indicate an oops, so dump it */ if ((dumpable & FWTS_OOPS_DUMPABLE) == FWTS_OOPS_DUMPABLE) { (*oopses)++; fwts_log_info(fw, "Found OOPS (%d):", *oopses); dumpstack = true; } /* Found all the features that indicate a WARN_ON, so dump it */ if ((dumpable & FWTS_WARN_ON_DUMPABLE) == FWTS_WARN_ON_DUMPABLE) { (*warn_ons)++; fwts_log_info(fw, "Found WARNING (%d):", *warn_ons); dumpstack = true; } if (dumpstack) { while (bug_item != NULL && bug_item != item) { fwts_log_info_verbatum(fw, " %s", fwts_klog_remove_timestamp(fwts_list_data(char *, bug_item))); bug_item = bug_item->next; } fwts_log_nl(fw); } } /* * fwts_oos_check() * scan kernel log list for any oops messages. The number of oops * messages found is returned in 'oopses'. Oops messages are logged to the * fwts log. */ int fwts_oops_check(fwts_framework *fw, fwts_list *klog, int *oopses, int *warn_ons) { fwts_list_link *item; /* Sanity check */ if ((fw == NULL) || (oopses == NULL) || (warn_ons == NULL) || (klog == NULL)) return FWTS_ERROR; *oopses = 0; *warn_ons = 0; fwts_list_foreach(item, klog) { char *line = fwts_klog_remove_timestamp(fwts_list_data(char *, item)); if ((strncmp("BUG:", line, 4) == 0) || (strncmp("WARNING:", line, 8) == 0)) fwts_klog_stack_dump(fw, item, oopses, warn_ons); } return FWTS_OK; } src/lib/src/fwts_pci.c000066400000000000000000000123471231470457100151770ustar00rootroot00000000000000/* * Copyright (C) 2013-2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #include #include "fwts.h" /* * class_code, subclass_code --> description mapping */ typedef struct { uint8_t class_code; uint8_t subclass_code; const char *description; } fwts_pci_description_info; /* * http://wiki.osdev.org/PCI */ static const fwts_pci_description_info descriptions[] = { { 0x00, 0x00, "Any device" }, { 0x00, 0x01, "VGA compatible device" }, { 0x01, 0x00, "SCSI bus controller" }, { 0x01, 0x01, "IDE controller" }, { 0x01, 0x02, "Floppy disk controller" }, { 0x01, 0x03, "IPI bus controller" }, { 0x01, 0x04, "RAID controller" }, { 0x01, 0x05, "ATA controller" }, { 0x01, 0x06, "SATA controller" }, { 0x01, 0x07, "SATA controller (AHCI 1.0)" }, { 0x01, 0x80, "Mass storage controller" }, { 0x02, 0x00, "Ethernet controller" }, { 0x02, 0x01, "Token ring controller" }, { 0x02, 0x02, "FDDI controller" }, { 0x02, 0x03, "ATM controller" }, { 0x02, 0x04, "ISDN controller" }, { 0x02, 0x05, "WordlFip controller" }, { 0x02, 0x06, "PICMG 2.14 multi computing" }, { 0x02, 0x80, "Network controller" }, { 0x03, 0x00, "VGA/8512 compatible controller" }, { 0x03, 0x01, "XGA controller" }, { 0x03, 0x02, "3D controller" }, { 0x03, 0x80, "Display controller" }, { 0x04, 0x00, "Video Device" }, { 0x04, 0x01, "Audio Device" }, { 0x04, 0x02, "Computer telephony device" }, { 0x04, 0x80, "Media controller" }, { 0x05, 0x00, "RAM controller" }, { 0x05, 0x01, "Flash controller" }, { 0x05, 0x80, "Memory controller" }, { 0x06, 0x00, "Host bridge" }, { 0x06, 0x01, "ISA bridge" }, { 0x06, 0x02, "EISA bridge" }, { 0x06, 0x03, "MCA bridge" }, { 0x06, 0x04, "PCI-to-PCI bridge" }, { 0x06, 0x05, "PCMCIA bridge" }, { 0x06, 0x06, "NuBus bridge" }, { 0x06, 0x07, "CardBus bridge" }, { 0x06, 0x08, "RACEway bridge" }, { 0x06, 0x09, "PCI-to-PCI bridge" }, { 0x06, 0x0a, "PCI-to-PCI bridge" }, { 0x06, 0x80, "Bridge device" }, { 0x07, 0x00, "Serial controller" }, { 0x07, 0x01, "Parellel port" }, { 0x07, 0x02, "Multiport serial controller" }, { 0x07, 0x03, "Generic modem" }, { 0x07, 0x04, "IEEE 488.1/2 (GPIB) controller" }, { 0x07, 0x05, "Smart card" }, { 0x07, 0x80, "Communications device" }, { 0x08, 0x00, "PIC/APIC" }, { 0x08, 0x01, "DMA controller" }, { 0x08, 0x02, "System timer" }, { 0x08, 0x03, "RTC controller" }, { 0x08, 0x04, "Generic PCI hot-plug controller" }, { 0x08, 0x80, "System peripheral" }, { 0x09, 0x00, "Keyboard controller" }, { 0x09, 0x01, "Digitizer" }, { 0x09, 0x02, "Mouse controller" }, { 0x09, 0x03, "Scanner controller" }, { 0x09, 0x04, "Gameport controller" }, { 0x09, 0x80, "Input controller" }, { 0x0a, 0x00, "Generic Docking station" }, { 0x0a, 0x80, "Docking station" }, { 0x0b, 0x00, "386 processor" }, { 0x0b, 0x01, "486 processor" }, { 0x0b, 0x02, "Pentium processor" }, { 0x0b, 0x10, "Alpha processor" }, { 0x0b, 0x20, "PowerPC processor" }, { 0x0b, 0x30, "MIPS processor" }, { 0x0b, 0x40, "Co-processor" }, { 0x0c, 0x00, "IEEE 1394 controller" }, { 0x0c, 0x01, "ACCESS.bus" }, { 0x0c, 0x02, "SSA" }, { 0x0c, 0x03, "USB" }, { 0x0c, 0x04, "Fibre Channel" }, { 0x0c, 0x05, "SMBus" }, { 0x0c, 0x06, "InfiniBand" }, { 0x0c, 0x07, "IPMI" }, { 0x0c, 0x08, "SERCOS Interface Standard (IEC 61491)" }, { 0x0c, 0x09, "CANbus" }, { 0x0d, 0x00, "IRDA compatible controller" }, { 0x0d, 0x01, "Consumer IR controller" }, { 0x0d, 0x10, "RF controller" }, { 0x0d, 0x11, "Bluetooth controller" }, { 0x0d, 0x20, "Ethernet controller (802.11a)" }, { 0x0d, 0x21, "Ethernet controller (802.11b)" }, { 0x0d, 0x80, "Wireless controller" }, { 0x0e, 0x00, "I2O architecture / message FIFO" }, { 0x0f, 0x01, "TV controller" }, { 0x0f, 0x02, "Audio controller" }, { 0x0f, 0x03, "Voice controller" }, { 0x0f, 0x04, "Data controller" }, { 0x10, 0x00, "Network and computing encryption/decryption" }, { 0x10, 0x10, "Entertainment encryption/decryption" }, { 0x10, 0x80, "Encryption/decryption" }, { 0x11, 0x00, "DPIO modules" }, { 0x11, 0x01, "Performance counters" }, { 0x11, 0x10, "Communications synchronization" }, { 0x11, 0x20, "Management card" }, { 0x11, 0x80, "Data acquisition/signal processing controller" }, { 0x00, 0x00, NULL }, }; /* * fwts_pci_description() * turn PCI class code and subclass to a human description */ const char *fwts_pci_description(const uint8_t class_code, const uint8_t subclass_code) { int i; for (i = 0; descriptions[i].description; i++) if (class_code == descriptions[i].class_code && subclass_code == descriptions[i].subclass_code) return descriptions[i].description; return "Unknown"; } src/lib/src/fwts_pipeio.c000066400000000000000000000075271231470457100157150ustar00rootroot00000000000000/* * Copyright (C) 2010-2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #include #include #include #include #include #include #include #include #include #include #include #include "fwts.h" /* * fwts_pipe_open() * execl a command, return pid in *childpid and * return fd. fd < 0 indicates error. */ int fwts_pipe_open(const char *command, pid_t *childpid) { int pipefds[2]; pid_t pid; if (pipe(pipefds) < 0) return -1; pid = fork(); switch (pid) { case -1: /* Ooops */ close(pipefds[0]); close(pipefds[1]); return -1; case 0: /* Child */ if (freopen("/dev/null", "w", stderr) == NULL) { fprintf(stderr, "Cannot redirect stderr\n"); } if (pipefds[0] != STDOUT_FILENO) { dup2(pipefds[1], STDOUT_FILENO); close(pipefds[1]); } close(pipefds[0]); execl(_PATH_BSHELL, "sh", "-c", command, NULL); _exit(FWTS_EXEC_ERROR); default: /* Parent */ close(pipefds[1]); *childpid = pid; return pipefds[0]; } } /* * fwts_pipe_read() * read output from fwts_pipe_open(), *length is * set to the number of chars read and we return * a buffer of read data. */ char *fwts_pipe_read(const int fd, ssize_t *length) { char *ptr = NULL; char buffer[8192]; ssize_t n; ssize_t size = 0; *length = 0; ptr = NULL; while ((n = read(fd, buffer, sizeof(buffer))) > 0) { if (n < 0) { if (errno != EINTR && errno != EAGAIN) { free(ptr); return NULL; } } else { char *new_ptr; new_ptr = realloc(ptr, size + n + 1); if (new_ptr == NULL) { free(ptr); return NULL; } else ptr = new_ptr; memcpy(ptr + size, buffer, n); size += n; *(ptr+size) = 0; } } *length = size; return ptr; } /* * fwts_pipe_close() * close fd, wait for child of given pid to exit */ int fwts_pipe_close(const int fd, const pid_t pid) { int status; close(fd); for (;;) { if (waitpid(pid, &status, WUNTRACED | WCONTINUED) == -1) return EXIT_FAILURE; if (WIFEXITED(status)) return WEXITSTATUS(status); if (WIFSIGNALED(status)) return WTERMSIG(status); } } /* * fwts_pipe_exec() * execute a command, return a list containing lines * of the stdout output from the command. * Return FWTS_OK if the exec worked, FWTS_EXEC_ERROR if * it failed. status contains the child exit status. */ int fwts_pipe_exec(const char *command, fwts_list **list, int *status) { pid_t pid; int fd; ssize_t len; char *text; if ((fd = fwts_pipe_open(command, &pid)) < 0) return FWTS_ERROR; text = fwts_pipe_read(fd, &len); *list = fwts_list_from_text(text); free(text); *status = fwts_pipe_close(fd, pid); if (*status) { fwts_list_free(*list, free); *list = NULL; return FWTS_EXEC_ERROR; } return FWTS_OK; } /* * fwts_exec() * execute a command * Return FWTS_OK if the exec worked, FWTS_EXEC_ERROR if * it failed. status contains the child exit status. */ int fwts_exec(const char *command, int *status) { pid_t pid; int fd; if ((fd = fwts_pipe_open(command, &pid)) < 0) return FWTS_ERROR; *status = fwts_pipe_close(fd, pid); if (*status) return FWTS_EXEC_ERROR; return FWTS_OK; } src/lib/src/fwts_release.c000066400000000000000000000063701231470457100160430ustar00rootroot00000000000000/* * Copyright (C) 2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #include #include "fwts.h" /* * fwts_release_field_get() * attempt to match a field (needle) in the given text and update field * with any text after the delimiter, e.g. if text is "DISTRIB_ID=Ubuntu" * and needle is "DISTRIB_ID" and delimiter is "=", then the field gets set to "Ubuntu". */ static void fwts_release_field_get(char *needle, char *delimiter, char *text, char **field) { char *str = strstr(text, delimiter); if (str == NULL) return; if (strstr(text, needle) == NULL) return; str++; while (*str == ' ' || *str == '\t') str++; if (*str) *field = strdup(str); } /* * fwts_release_get_debian() * return release for debian based systems */ void fwts_release_get_debian(fwts_list *list, fwts_release *release) { fwts_list_link *item; fwts_list_foreach(item, list) { char *line = fwts_text_list_text(item); fwts_release_field_get("Distributor ID:", ":", line, &release->distributor); fwts_release_field_get("Release", ":", line, &release->description); fwts_release_field_get("Codename", ":", line, &release->release); fwts_release_field_get("Description", ":", line, &release->codename); } } /* * fwts_release_field_null * convert NULL fields to "" */ void fwts_release_field_null_to_str(char **field) { if (*field == NULL) *field = strdup(""); } /* * fwts_release_get() * get release info */ fwts_release *fwts_release_get(void) { fwts_list *list; fwts_release *release; int status; if ((release = calloc(1, sizeof(fwts_release))) == NULL) return NULL; /* * For the moment, check in /etc/lsb-release, we need to add in * support for different distros too. */ if (fwts_pipe_exec("lsb_release -a", &list, &status) != FWTS_OK) { free(release); return NULL; } if (list) { fwts_release_get_debian(list, release); fwts_list_free(list, free); } /* null fields to "" */ fwts_release_field_null_to_str(&release->distributor); fwts_release_field_null_to_str(&release->description); fwts_release_field_null_to_str(&release->release); fwts_release_field_null_to_str(&release->codename); if ((release->distributor == NULL) || (release->description == NULL) || (release->release == NULL) || (release->codename == NULL)) { fwts_release_free(release); return NULL; } return release; } /* * fwts_release_free() * free release info */ void fwts_release_free(fwts_release *release) { if (release) { free(release->distributor); free(release->description); free(release->release); free(release->codename); free(release); } } src/lib/src/fwts_scan_efi_systab.c000066400000000000000000000026651231470457100175620ustar00rootroot00000000000000/* * Copyright (C) 2010-2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #include #include #include #include "fwts.h" /* * fwts_scan_efi_systab() * scan EFI systab for a value */ void *fwts_scan_efi_systab(const char *name) { fwts_list *systab; fwts_list_link *item; void *addr = 0; if (((systab = fwts_file_open_and_read("/sys/firmware/efi/systab")) == NULL) && ((systab = fwts_file_open_and_read("/proc/efi/systab")) == NULL)) { return NULL; } fwts_list_foreach(item, systab) { char *str = fwts_list_data(char *, item); if (strstr(str, name)) { char *ptr = strstr(str, "="); if (ptr) { addr = (void*)strtoul(ptr+1, NULL, 0); break; } } } fwts_list_free(systab, free); return addr; } src/lib/src/fwts_set.c000066400000000000000000000021201231470457100152030ustar00rootroot00000000000000/* * Copyright (C) 2010-2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #include #include #include "fwts.h" /* * fwts_set() * write text to a given file, used to set * values in /sys or /proc */ int fwts_set(const char *text, const char *file) { FILE *fp; if ((fp = fopen(file, "w")) == NULL) return FWTS_ERROR; fprintf(fp, "%s\n", text); fclose(fp); return FWTS_OK; } src/lib/src/fwts_smbios.c000066400000000000000000000075101231470457100157140ustar00rootroot00000000000000/* * Copyright (C) 2010-2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #include "fwts.h" #ifdef FWTS_ARCH_INTEL /* * fwts_smbios_find_entry_uefi() * find SMBIOS structure table entry from UEFI systab */ static void *fwts_smbios_find_entry_uefi(fwts_framework *fw, fwts_smbios_entry *entry, fwts_smbios_type *type) { void *addr; fwts_smbios_entry *mapped_entry; if ((addr = fwts_scan_efi_systab("SMBIOS")) != NULL) { if ((mapped_entry = fwts_mmap((off_t)addr, sizeof(fwts_smbios_entry))) == FWTS_MAP_FAILED) { fwts_log_error(fw, "Cannot mmap SMBIOS entry at %p\n", addr); return NULL; } *entry = *mapped_entry; *type = FWTS_SMBIOS; (void)fwts_munmap(mapped_entry, sizeof(fwts_smbios_entry)); } return addr; } /* * fwts_smbios_find_entry_bios() * find SMBIOS structure table entry by scanning memory */ static void *fwts_smbios_find_entry_bios(fwts_framework *fw, fwts_smbios_entry *entry, fwts_smbios_type *type) { uint8_t *mem; void *addr = NULL; int i; if ((mem = fwts_mmap(FWTS_SMBIOS_REGION_START, FWTS_SMBIOS_REGION_SIZE)) == FWTS_MAP_FAILED) { fwts_log_error(fw, "Cannot mmap SMBIOS region."); return NULL; } for (i=0; imajor_version << 8) + (entry->minor_version & 0xff); break; case FWTS_SMBIOS_DMI_LEGACY: *version = ((entry->smbios_bcd_revision & 0xf0) << 4) + (entry->smbios_bcd_revision & 0x0f); break; default: break; } } } return addr; } #else /* * fwts_smbios_find_entry() * find SMBIOS structure table entry, currently void for non-x86 specific code */ void *fwts_smbios_find_entry(fwts_framework *fw, fwts_smbios_entry *entry, fwts_smbios_type *type, uint16_t *version) { FWTS_UNUSED(fw); /* Return a dummy values */ memset(entry, 0, sizeof(fwts_smbios_entry)); *type = FWTS_SMBIOS_UNKNOWN; *version = 0; return NULL; } #endif src/lib/src/fwts_stringextras.c000066400000000000000000000030451231470457100171540ustar00rootroot00000000000000/* * Copyright (C) 2010-2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #include #include "fwts.h" /* * fwts_chop_newline() * strip off trailing \n and ' ' from end of a string */ void fwts_chop_newline(char *str) { size_t len; if (!str) return; len = strlen(str); while (len > 0 && str[len-1] == '\n') str[--len] = '\0'; while (len > 0 && str[len-1] == ' ') str[--len] = '\0'; } /* * fwts_realloc_strcat() * append newstr to orig (allocated on the heap) * return NULL if fails, otherwise return expanded string */ char *fwts_realloc_strcat(char *orig, const char *newstr) { size_t newlen = strlen(newstr); if (orig) { if ((orig = realloc(orig, strlen(orig) + newlen + 1)) == NULL) return NULL; strcat(orig, newstr); } else { if ((orig = malloc(newlen + 1)) == NULL) return NULL; strcpy(orig, newstr); } return orig; } src/lib/src/fwts_summary.c000066400000000000000000000153641231470457100161230ustar00rootroot00000000000000/* * Copyright (C) 2010-2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #include #include #include #include "fwts.h" typedef struct { char *test; /* test that found the error */ char *text; /* text of failure message */ } fwts_summary_item; enum { SUMMARY_CRITICAL = 0, SUMMARY_HIGH, SUMMARY_MEDIUM, SUMMARY_LOW, SUMMARY_UNKNOWN, SUMMARY_MAX = SUMMARY_UNKNOWN+1 }; static const char *summary_names[] = { "Critical", "High", "Medium", "Low", "Other" }; /* list of summary items per error level */ static fwts_list *fwts_summaries[SUMMARY_MAX]; void fwts_summary_deinit(void); /* * fwts_summary_init() * initialise */ int fwts_summary_init(void) { int i; /* initialise list of summary items for all error levels */ for (i=0;itest); free(item->text); free(item); } /* * fwts_summary_init() * free up summary lists */ void fwts_summary_deinit(void) { int i; for (i=0;itext) == 0) { summary_item_found = true; break; } } /* Not found, create a new one */ if (!summary_item_found) { if ((summary_item = calloc(1, sizeof(fwts_summary_item))) == NULL) return FWTS_ERROR; if ((summary_item->test = strdup(test)) == NULL) { free(summary_item); return FWTS_ERROR; } if ((summary_item->text = strdup(text)) == NULL) { free(summary_item->test); free(summary_item); return FWTS_ERROR; } fwts_chop_newline(summary_item->text); } /* And append new item if not done so already */ if (!summary_item_found) fwts_list_append(fwts_summaries[index], summary_item); return FWTS_OK; } static void fwts_summary_format_field( char *buffer, const int buflen, const uint32_t value) { if (value) snprintf(buffer, buflen, "%5u", value); else *buffer = '\0'; } /* * fwts_summary_report() * report test failure summary, sorted by error levels */ int fwts_summary_report(fwts_framework *fw, fwts_list *test_list) { int i; fwts_list *sorted; fwts_list_link *item; fwts_log_summary(fw, "Test Failure Summary"); fwts_log_underline(fw->results, '='); fwts_log_nl(fw); for (i=0;iresults, "failure"); if (fwts_summaries[i]->len) { fwts_list_link *item; fwts_log_summary(fw, "%s failures: %d", summary_names[i], fwts_summaries[i]->len); fwts_log_section_begin(fw->results, "failures"); fwts_list_foreach(item, fwts_summaries[i]) { fwts_summary_item *summary_item = fwts_list_data(fwts_summary_item *,item); /* * This is not pleasant, we really don't want very wide lines * logged in the HTML format, where we don't mind for other formats. */ if (fw->log_type == LOG_TYPE_HTML) fwts_log_summary(fw, " %s test: %s", summary_item->test, summary_item->text); else fwts_log_summary_verbatum(fw, " %s: %s", summary_item->test, summary_item->text); } fwts_log_section_end(fw->results); } else fwts_log_summary(fw, "%s failures: NONE", summary_names[i]); fwts_log_section_end(fw->results); fwts_log_nl(fw); } if ((fw->log_type & (LOG_TYPE_PLAINTEXT| LOG_TYPE_HTML)) && fw->total_run > 0) { sorted = fwts_list_new(); fwts_list_foreach(item, test_list) fwts_list_add_ordered(sorted, fwts_list_data(fwts_framework_test *,item), fwts_framework_compare_test_name); fwts_log_summary_verbatum(fw, "Test |Pass |Fail |Abort|Warn |Skip |Info |"); fwts_log_summary_verbatum(fw, "---------------+-----+-----+-----+-----+-----+-----+"); fwts_list_foreach(item, sorted) { fwts_framework_test *test = fwts_list_data(fwts_framework_test*,item); if (test->was_run) { char passed[6]; char failed[6]; char aborted[6]; char warning[6]; char skipped[6]; char infoonly[6]; fwts_summary_format_field(passed, sizeof(passed), test->results.passed); fwts_summary_format_field(failed, sizeof(failed), test->results.failed); fwts_summary_format_field(aborted, sizeof(aborted), test->results.aborted); fwts_summary_format_field(warning, sizeof(warning), test->results.warning); fwts_summary_format_field(skipped, sizeof(skipped), test->results.skipped); fwts_summary_format_field(infoonly, sizeof(infoonly), test->results.infoonly); fwts_log_summary_verbatum(fw, "%-15.15s|%5.5s|%5.5s|%5.5s|%5.5s|%5.5s|%5.5s|", test->name, passed, failed, aborted, warning, skipped, infoonly); } } fwts_log_summary_verbatum(fw, "---------------+-----+-----+-----+-----+-----+-----+"); fwts_log_summary_verbatum(fw, "Total: |%5d|%5d|%5d|%5d|%5d|%5d|", fw->total.passed, fw->total.failed, fw->total.aborted, fw->total.warning, fw->total.skipped, fw->total.infoonly); fwts_log_summary_verbatum(fw, "---------------+-----+-----+-----+-----+-----+-----+"); fwts_list_free(sorted, NULL); } return FWTS_OK; } src/lib/src/fwts_text_list.c000066400000000000000000000045731231470457100164450ustar00rootroot00000000000000/* * Copyright (C) 2010-2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #include #include #include #include "fwts.h" /* * fwts_text_list_new() * initialise a text list */ fwts_list *fwts_text_list_new(void) { return fwts_list_new(); } /* * fwts_text_list_free() * free a text list */ void fwts_text_list_free(fwts_list *list) { fwts_list_free(list, free); } /* * fwts_text_list_append() * append a string to a text list */ fwts_list_link *fwts_text_list_append(fwts_list *list, const char *text) { char *str; if ((str = strdup(text)) == NULL) return NULL; else return fwts_list_append(list, str); } /* * fwts_text_list_strstr() * check if string needle exists in the text list, returns * the position in the string if found, NULL if not found */ char *fwts_text_list_strstr(fwts_list *list, const char *needle) { fwts_list_link *item; char *match; if (list == NULL) return NULL; fwts_list_foreach(item, list) if ((match = strstr(fwts_list_data(char *, item), needle)) != NULL) return match; return NULL; } /* * fwts_list_from_text() * turn a string containing lines of text into * a text list */ fwts_list *fwts_list_from_text(const char *text) { char *ptr; fwts_list *list; if (text == NULL) return NULL; if ((list = fwts_list_new()) == NULL) return NULL; ptr = (char*)text; while (*ptr) { char *start = ptr; char *str; int len; while (*ptr && *ptr !='\n') ptr++; len = ptr - start; if (*ptr == '\n') ptr++; if ((str = calloc(1, len + 1)) == NULL) { fwts_text_list_free(list); return NULL; } strncpy(str, start, len); str[len] = '\0'; fwts_list_append(list, str); } return list; } src/lib/src/fwts_tty.c000066400000000000000000000024561231470457100152440ustar00rootroot00000000000000/* * Copyright (C) 2010-2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #include #include /* * fwts_tty_width() * try and find width of tty. If it cannot be determined * then simply return the default_width */ int fwts_tty_width(const int fd, const int default_width) { #ifdef TIOCGWINSZ struct winsize ws; /* if tty and we can get a sane width, return it */ if (isatty(fd) && (ioctl(fd, TIOCGWINSZ, &ws) != -1) && (0 < ws.ws_col) && (ws.ws_col == (size_t)ws.ws_col)) return ws.ws_col; else #endif /* not supported or failed to get, return default */ return default_width; } src/lib/src/fwts_uefi.c000066400000000000000000000350061231470457100153510ustar00rootroot00000000000000/* * Copyright (C) 2010-2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #include #include #include #include #include #include #include #include #include #include #include "fwts.h" #include "fwts_uefi.h" /* Old sysfs uefi packed binary blob variables */ typedef struct { uint16_t varname[512]; uint8_t guid[16]; uint64_t datalen; uint8_t data[1024]; uint64_t status; uint32_t attributes; } __attribute__((packed)) fwts_uefi_sys_fs_var; /* New efifs variable */ typedef struct { uint32_t attributes; uint8_t data[0]; /* variable length, depends on file size */ } __attribute__((packed)) fwts_uefi_efivars_fs_var; typedef struct { const uint64_t statusvalue; const char *mnemonic ; const char *description; } uefistatus_info; /* Which interface are we using? */ #define UEFI_IFACE_UNKNOWN (0) /* Not yet known */ #define UEFI_IFACE_NONE (1) /* None found */ #define UEFI_IFACE_SYSFS (2) /* sysfs */ #define UEFI_IFACE_EFIVARS (3) /* efivar fs */ /* File system magic numbers */ #define PSTOREFS_MAGIC ((__SWORD_TYPE)0x6165676C) #define EFIVARFS_MAGIC ((__SWORD_TYPE)0xde5e81e4) #define SYS_FS_MAGIC ((__SWORD_TYPE)0x62656572) /* * fwts_uefi_get_interface() * find which type of EFI variable file system we are using, * sets path to the name of the file system path, returns * the file system interface (if found). */ static int fwts_uefi_get_interface(char **path) { static int efivars_interface = UEFI_IFACE_UNKNOWN; static char efivar_path[4096]; FILE *fp; char fstype[1024]; struct statfs statbuf; if (path == NULL) /* Sanity check */ return FWTS_ERROR; /* Already discovered, return the cached values */ if (efivars_interface != UEFI_IFACE_UNKNOWN) { *path = efivar_path; return efivars_interface; } *efivar_path = '\0'; /* Assume none */ /* Scan mounts to see if sysfs or efivar fs is somewhere else */ if ((fp = fopen("/proc/mounts", "r")) != NULL) { while (!feof(fp)) { char mount[4096]; if (fscanf(fp, "%*s %4095s %1023s", mount, fstype) == 2) { /* Always try to find the newer interface first */ if (!strcmp(fstype, "efivarfs")) { strcpy(efivar_path, mount); break; } /* Failing that, look for sysfs, but don't break out the loop as we need to keep on searching for efivar fs */ if (!strcmp(fstype, "sysfs")) strcpy(efivar_path, "/sys/firmware/efi/vars"); } } fclose(fp); } *path = NULL; /* No mounted path found, bail out */ if (*efivar_path == '\0') { efivars_interface = UEFI_IFACE_NONE; return UEFI_IFACE_NONE; } /* Can't stat it, bail out */ if (statfs(efivar_path, &statbuf) < 0) { efivars_interface = UEFI_IFACE_NONE; return UEFI_IFACE_NONE; }; /* We've now found a valid file system we can use */ *path = efivar_path; if ((statbuf.f_type == EFIVARFS_MAGIC) || (statbuf.f_type == PSTOREFS_MAGIC)) { efivars_interface = UEFI_IFACE_EFIVARS; return UEFI_IFACE_EFIVARS; } if (statbuf.f_type == SYS_FS_MAGIC) { efivars_interface = UEFI_IFACE_SYSFS; return UEFI_IFACE_SYSFS; } return UEFI_IFACE_UNKNOWN; } /* * fwts_uefi_str_to_str16() * convert 8 bit C string to 16 bit sring. */ void fwts_uefi_str_to_str16(uint16_t *dst, const size_t len, const char *src) { size_t i = len; while ((*src) && (i > 1)) { *dst++ = *src++; i--; } *dst = '\0'; } /* * fwts_uefi_str16_to_str() * convert 16 bit string to 8 bit C string. */ void fwts_uefi_str16_to_str(char *dst, const size_t len, const uint16_t *src) { size_t i = len; while ((*src) && (i > 1)) { *dst++ = *(src++) & 0xff; i--; } *dst = '\0'; } /* * fwts_uefi_str16len() * 16 bit version of strlen() */ size_t fwts_uefi_str16len(const uint16_t *str) { int i; for (i=0; *str; i++, str++) ; return i; } /* * fwts_uefi_get_varname() * fetch the UEFI variable name in terms of a 8 bit C string */ void fwts_uefi_get_varname(char *varname, const size_t len, const fwts_uefi_var *var) { fwts_uefi_str16_to_str(varname, len, var->varname); } /* * fwts_uefi_get_variable_sys_fs() * fetch a UEFI variable given its name, via sysfs */ static int fwts_uefi_get_variable_sys_fs(const char *varname, fwts_uefi_var *var, char *path) { int fd; char filename[PATH_MAX]; fwts_uefi_sys_fs_var uefi_sys_fs_var; memset(var, 0, sizeof(fwts_uefi_var)); snprintf(filename, sizeof(filename), "%s/%s/raw_var", path, varname); if ((fd = open(filename, O_RDONLY)) < 0) return FWTS_ERROR; memset(&uefi_sys_fs_var, 0, sizeof(uefi_sys_fs_var)); /* Read the raw fixed sized data */ if (read(fd, &uefi_sys_fs_var, sizeof(uefi_sys_fs_var)) != sizeof(uefi_sys_fs_var)) { close(fd); return FWTS_ERROR; } close(fd); /* Sanity check datalen is OK */ if (uefi_sys_fs_var.datalen > sizeof(uefi_sys_fs_var.data)) return FWTS_ERROR; /* Allocate space for the variable name */ var->varname = calloc(1, sizeof(uefi_sys_fs_var.varname)); if (var->varname == NULL) return FWTS_ERROR; /* Allocate space for the data */ var->data = calloc(1, (size_t)uefi_sys_fs_var.datalen); if (var->data == NULL) { free(var->varname); return FWTS_ERROR; } /* And copy the data */ memcpy(var->varname, uefi_sys_fs_var.varname, sizeof(uefi_sys_fs_var.varname)); memcpy(var->data, uefi_sys_fs_var.data, uefi_sys_fs_var.datalen); memcpy(var->guid, uefi_sys_fs_var.guid, sizeof(var->guid)); var->datalen = (size_t)uefi_sys_fs_var.datalen; var->attributes = uefi_sys_fs_var.attributes; var->status = uefi_sys_fs_var.status; return FWTS_OK; } /* * fwts_uefi_get_variable_efivars_fs() * fetch a UEFI variable given its name, via efivars fs */ static int fwts_uefi_get_variable_efivars_fs(const char *varname, fwts_uefi_var *var, char *path) { int fd; char filename[PATH_MAX]; struct stat statbuf; fwts_uefi_efivars_fs_var *efivars_fs_var; size_t varname_len = strlen(varname); memset(var, 0, sizeof(fwts_uefi_var)); /* Variable names include the GUID, so must be at least 36 chars long */ if (varname_len < 36) return FWTS_ERROR; /* Get the GUID */ fwts_guid_str_to_buf(varname + varname_len - 36, var->guid, sizeof(var->guid)); snprintf(filename, sizeof(filename), "%s/%s", path, varname); if ((fd = open(filename, O_RDONLY)) < 0) return FWTS_ERROR; if (fstat(fd, &statbuf) < 0) { close(fd); return FWTS_ERROR; } /* Variable name, less the GUID, in 16 bit ints */ var->varname = calloc(1, (varname_len + 1 - 36) * sizeof(uint16_t)); if (var->varname == NULL) { close(fd); return FWTS_ERROR; } /* Convert name to internal 16 bit version */ fwts_uefi_str_to_str16(var->varname, varname_len - 36, varname); /* Need to read the data in one read, so allocate a buffer big enough */ if ((efivars_fs_var = calloc(1, statbuf.st_size)) == NULL) { close(fd); free(var->varname); return FWTS_ERROR; } if (read(fd, efivars_fs_var, statbuf.st_size) != statbuf.st_size) { close(fd); free(var->varname); free(efivars_fs_var); return FWTS_ERROR; } close(fd); var->status = 0; /* * UEFI variable data in efifs is: * 4 bytes : attributes * N bytes : uefi variable contents */ var->attributes = efivars_fs_var->attributes; var->datalen = statbuf.st_size - 4; if ((var->data = calloc(1, var->datalen)) == NULL) { free(var->varname); free(efivars_fs_var); return FWTS_ERROR; } memcpy(var->data, efivars_fs_var->data, var->datalen); free(efivars_fs_var); return FWTS_OK; } /* * fwts_uefi_get_variable() * fetch a UEFI variable given its name. */ int fwts_uefi_get_variable(const char *varname, fwts_uefi_var *var) { char *path; if ((!varname) || (!var)) /* Sanity checks */ return FWTS_ERROR; switch (fwts_uefi_get_interface(&path)) { case UEFI_IFACE_SYSFS: return fwts_uefi_get_variable_sys_fs(varname, var, path); case UEFI_IFACE_EFIVARS: return fwts_uefi_get_variable_efivars_fs(varname, var, path); default: return FWTS_ERROR; } } /* * fwts_uefi_free_variable() * free data and varname associated with a UEFI variable as * fetched by fwts_uefi_get_variable. */ void fwts_uefi_free_variable(fwts_uefi_var *var) { free(var->data); free(var->varname); } static int fwts_uefi_true_filter(const struct dirent *d) { FWTS_UNUSED(d); return 1; } /* * fwts_uefi_free_variable_names * free the list of uefi variable names */ void fwts_uefi_free_variable_names(fwts_list *list) { fwts_list_free_items(list, free); } /* * fwts_uefi_get_variable_names * gather a list of all the uefi variable names */ int fwts_uefi_get_variable_names(fwts_list *list) { int i, n; struct dirent **names = NULL; char *path; char *name; int ret = FWTS_OK; fwts_list_init(list); switch (fwts_uefi_get_interface(&path)) { case UEFI_IFACE_SYSFS: case UEFI_IFACE_EFIVARS: break; default: return FWTS_ERROR; } /* Gather variable names in alphabetical order */ n = scandir(path, &names, fwts_uefi_true_filter, alphasort); if (n < 0) return FWTS_ERROR; for (i = 0; i < n; i++) { if (names[i]->d_name[0] == '\0') continue; if (!strcmp(names[i]->d_name, ".")) continue; if (!strcmp(names[i]->d_name, "..")) continue; name = strdup(names[i]->d_name); if (name == NULL) { ret = FWTS_ERROR; fwts_uefi_free_variable_names(list); break; } else fwts_list_append(list, name); } /* Free dirent names */ for (i = 0; i < n; i++) free(names[i]); free(names); return ret; } static uefistatus_info uefistatus_info_table[] = { { EFI_SUCCESS, "EFI_SUCCESS", "The operation completed successfully." }, { EFI_LOAD_ERROR, "EFI_LOAD_ERROR", "The image failed to load." }, { EFI_INVALID_PARAMETER, "EFI_INVALID_PARAMETER", "A parameter was incorrect." }, { EFI_UNSUPPORTED, "EFI_UNSUPPORTED", "The operation is not supported." }, { EFI_BAD_BUFFER_SIZE, "EFI_BAD_BUFFER_SIZE", "The buffer was not the proper size for the request." }, { EFI_BUFFER_TOO_SMALL, "EFI_BUFFER_TOO_SMALL", "The buffer is not large enough to hold the requested data. The required buffer size is returned in the appropriate parameter when this error occurs." }, { EFI_NOT_READY, "EFI_NOT_READY", "There is no data pending upon return." }, { EFI_DEVICE_ERROR, "EFI_DEVICE_ERROR", "The physical device reported an error while attempting the operation." }, { EFI_WRITE_PROTECTED, "EFI_WRITE_PROTECTED", "The device cannot be written to." }, { EFI_OUT_OF_RESOURCES, "EFI_OUT_OF_RESOURCES", "A resource has run out." }, { EFI_VOLUME_CORRUPTED, "EFI_VOLUME_CORRUPTED", "An inconstancy was detected on the file system causing the operating to fail." }, { EFI_VOLUME_FULL, "EFI_VOLUME_FULL", "There is no more space on the file system." }, { EFI_NO_MEDIA, "EFI_NO_MEDIA", "The device does not contain any medium to perform the operation." }, { EFI_MEDIA_CHANGED, "EFI_MEDIA_CHANGED", "The medium in the device has changed since the last access." }, { EFI_NOT_FOUND, "EFI_NOT_FOUND", "The item was not found." }, { EFI_ACCESS_DENIED, "EFI_ACCESS_DENIED", "Access was denied." }, { EFI_NO_RESPONSE, "EFI_NO_RESPONSE", "The server was not found or did not respond to the request." }, { EFI_NO_MAPPING, "EFI_NO_MAPPING", "A mapping to a device does not exist." }, { EFI_TIMEOUT, "EFI_TIMEOUT", "The timeout time expired." }, { EFI_NOT_STARTED, "EFI_NOT_STARTED", "The protocol has not been started." }, { EFI_ALREADY_STARTED, "EFI_ALREADY_STARTED", "The protocol has already been started." }, { EFI_ABORTED, "EFI_ABORTED", "The operation was aborted." }, { EFI_ICMP_ERROR, "EFI_ICMP_ERROR", "An ICMP error occurred during the network operation." }, { EFI_TFTP_ERROR, "EFI_TFTP_ERROR", "A TFTP error occurred during the network operation." }, { EFI_PROTOCOL_ERROR, "EFI_PROTOCOL_ERROR", "A protocol error occurred during the network operation." }, { EFI_INCOMPATIBLE_VERSION, "EFI_INCOMPATIBLE_VERSION", "The function encountered an internal version that was incompatible with a version requested by the caller." }, { EFI_SECURITY_VIOLATION, "EFI_SECURITY_VIOLATION", "The function was not performed due to a security violation." }, { EFI_CRC_ERROR, "EFI_CRC_ERROR", "A CRC error was detected." }, { EFI_END_OF_MEDIA, "EFI_END_OF_MEDIA", "Beginning or end of media was reached." }, { EFI_END_OF_FILE, "EFI_END_OF_FILE", "The end of the file was reached." }, { EFI_INVALID_LANGUAGE, "EFI_INVALID_LANGUAGE", "The language specified was invalid." }, { EFI_COMPROMISED_DATA, "EFI_COMPROMISED_DATA", "The security status of the data is unknown or compromised and the data must be updated or replaced to restore a valid security status." }, { ~0, NULL, NULL } }; void fwts_uefi_print_status_info(fwts_framework *fw, const uint64_t status) { uefistatus_info *info; for (info = uefistatus_info_table; info->mnemonic != NULL; info++) { if (status == info->statusvalue) { fwts_log_info(fw, "Return status: %s. %s", info->mnemonic, info->description); return; } } fwts_log_info(fw, "Cannot find the return status information, value = 0x%" PRIx64 ".", status); } /* * fwts_uefi_attribute_info() * convert attribute into a human readable form */ char *fwts_uefi_attribute_info(uint32_t attr) { static char str[100]; *str = 0; if (attr & FWTS_UEFI_VAR_NON_VOLATILE) strcat(str, "NonVolatile"); if (attr & FWTS_UEFI_VAR_BOOTSERVICE_ACCESS) { if (*str) strcat(str, ","); strcat(str, "BootServ"); } if (attr & FWTS_UEFI_VAR_RUNTIME_ACCESS) { if (*str) strcat(str, ","); strcat(str, "RunTime"); } if (attr & FWTS_UEFI_VARIABLE_AUTHENTICATED_WRITE_ACCESS) { if (*str) strcat(str, ","); strcat(str, "AuthenicatedWrite"); } if (attr & FWTS_UEFI_VARIABLE_TIME_BASED_AUTHENTICATED_WRITE_ACCESS) { if (*str) strcat(str, ","); strcat(str, "TimeBaseAuthenicatedWrite"); } return str; } /* * fwts_uefi_efivars_fs_exist() * check the efivar interface exist */ bool fwts_uefi_efivars_iface_exist(void) { char *path; return (fwts_uefi_get_interface(&path) == UEFI_IFACE_EFIVARS); } src/lib/src/fwts_wakealarm.c000066400000000000000000000110221231470457100163550ustar00rootroot00000000000000/* * Copyright (C) 2010-2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #include #include #include #include #include #include #include #include #include #include #include #include "fwts.h" static char *fwts_rtc = "/dev/rtc0"; /* * fwts_wakealarm_exits() * check that a RTC exists that supports minimal RTC alarm ioctl */ int fwts_wakealarm_exits(fwts_framework *fw) { int fd; int ret = FWTS_OK; struct rtc_time rtc_tm; if ((fd = open(fwts_rtc, O_RDWR)) < 0) { fwts_log_error(fw, "Cannot access Real Time Clock device %s.", fwts_rtc); return FWTS_ERROR; } if (ioctl(fd, RTC_ALM_READ, &rtc_tm) < 0) { fwts_log_error(fw, "Cannot read Real Time Clock with ioctl RTC_RD_TIME %s.", fwts_rtc); ret = FWTS_ERROR; } (void)close(fd); return ret; } /* * fwts_wakealarm_trigger() * trigger the RTC wakealarm to fire in 'seconds' seconds from now. */ int fwts_wakealarm_trigger(fwts_framework *fw, const int seconds) { int fd, ret = FWTS_OK; struct rtc_time rtc_tm; if ((fd = open(fwts_rtc, O_RDWR)) < 0) { fwts_log_error(fw, "Cannot access Real Time Clock device %s.", fwts_rtc); return FWTS_ERROR; } if (ioctl(fd, RTC_RD_TIME, &rtc_tm) < 0) { fwts_log_error(fw, "Cannot read Real Time Clock with ioctl RTC_RD_TIME %s.", fwts_rtc); ret = FWTS_ERROR; goto out; } rtc_tm.tm_sec += seconds; if (rtc_tm.tm_sec >= 60) { rtc_tm.tm_min += rtc_tm.tm_sec / 60; rtc_tm.tm_sec %= 60; } if (rtc_tm.tm_min >= 60) { rtc_tm.tm_hour += rtc_tm.tm_min / 60; rtc_tm.tm_min %= 60; } if (rtc_tm.tm_hour >= 24) { rtc_tm.tm_hour %= 24; } errno = 0; if (ioctl(fd, RTC_ALM_SET, &rtc_tm) < 0) { if (errno == ENOTTY) { fwts_log_error(fw, "Real Time Clock device %s does not support alarm interrupts.", fwts_rtc); ret = FWTS_ERROR; goto out; } } if (ioctl(fd, RTC_AIE_ON, 0) < 0) { fwts_log_error(fw, "Cannot enable alarm interrupts on Real Time Clock device %s.", fwts_rtc); ret = FWTS_ERROR; } out: (void)close(fd); return ret; } int fwts_wakealarm_cancel(fwts_framework *fw) { int fd, ret = FWTS_OK; if ((fd = open(fwts_rtc, O_RDWR)) < 0) { fwts_log_error(fw, "Cannot access Real Time Clock device %s.", fwts_rtc); return FWTS_ERROR; } if (ioctl(fd, RTC_AIE_OFF, 0) < 0) { fwts_log_error(fw, "Cannot read Real Time Clock with ioctl RTC_RD_TIME %s.", fwts_rtc); ret = FWTS_ERROR; } (void)close(fd); return ret; } /* * fwts_wakealarm_check_fired() * check if wakealarm fires */ int fwts_wakealarm_check_fired(fwts_framework *fw, const int seconds) { int fd, rc, ret = FWTS_OK; fd_set rfds; struct timeval tv; if ((fd = open(fwts_rtc, O_RDWR)) < 0) { fwts_log_error(fw, "Cannot access Real Time Clock device %s.", fwts_rtc); return FWTS_ERROR; } FD_ZERO(&rfds); FD_SET(fd, &rfds); /* Wait for 1 second longer than the alarm */ tv.tv_sec = seconds + 1; tv.tv_usec = 0; /* Wait for data to be available or timeout */ rc = select(fd + 1, &rfds, NULL, NULL, &tv); if (rc == -1) { fwts_log_error(fw, "Select failed waitin for Real Time Clock device %s to fire.\n", fwts_rtc); ret = FWTS_ERROR; goto out; } /* Timed out, no data available, so alarm did not fire */ if (rc == 0) { fwts_log_error(fw, "Wakealarm Real Time Clock device %s did not fire", fwts_rtc); ret = FWTS_ERROR; } out: (void)close(fd); return ret; } /* * fwts_wakealarm_test_firing() * test RTC wakealarm trigger and firing from 'seconds' seconds time * from now. returns FWTS_OK if passed, otherwise FWTS_ERROR. */ int fwts_wakealarm_test_firing(fwts_framework *fw, const int seconds) { int ret = FWTS_OK; if (fwts_wakealarm_trigger(fw, seconds + 2) != FWTS_OK) return FWTS_ERROR; if (fwts_wakealarm_check_fired(fw, seconds + 2) != FWTS_OK) ret = FWTS_ERROR; fwts_wakealarm_cancel(fw); return ret; } src/main.c000066400000000000000000000017031231470457100127420ustar00rootroot00000000000000/* * Copyright (C) 2010-2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #include #include #include "fwts.h" int main(int argc, char **argv) { if (fwts_framework_args(argc, argv) == FWTS_OK) exit(EXIT_SUCCESS); else exit(EXIT_FAILURE); } src/pci/000077500000000000000000000000001231470457100124245ustar00rootroot00000000000000src/pci/aspm/000077500000000000000000000000001231470457100133645ustar00rootroot00000000000000src/pci/aspm/aspm.c000066400000000000000000000211311231470457100144660ustar00rootroot00000000000000/* * Copyright (C) 2011-2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #include #include #include #include #include #include #include #include #include #include #include #include #include #include "fwts.h" /* PCI Express Capability Structure Fields */ #define FWTS_PCIE_ASPM_SUPPORT_L0_FIELD 0x0400 #define FWTS_PCIE_ASPM_SUPPORT_L1_FIELD 0x0800 #define FWTS_PCIE_ASPM_SUPPORT_FIELD (FWTS_PCIE_ASPM_SUPPORT_L0_FIELD | FWTS_PCIE_ASPM_SUPPORT_L1_FIELD) #define FWTS_PCIE_ASPM_CONTROL_L0_FIELD 0x0001 #define FWTS_PCIE_ASPM_CONTROL_L1_FIELD 0x0002 #define FWTS_PCIE_ASPM_CONTROL_FIELD (FWTS_PCIE_ASPM_CONTROL_L0_FIELD | FWTS_PCIE_ASPM_CONTROL_L1_FIELD) struct pci_device { uint8_t segment; uint8_t bus; uint8_t dev; uint8_t func; uint8_t config[256]; }; static int facp_get_aspm_control(fwts_framework *fw) { fwts_acpi_table_info *table; fwts_acpi_table_fadt *fadt; if (fwts_acpi_find_table(fw, "FACP", 0, &table) != FWTS_OK) { return FWTS_ERROR; } fadt = (fwts_acpi_table_fadt*)table->data; if ((fadt->iapc_boot_arch & FWTS_FACP_IAPC_BOOT_ARCH_PCIE_ASPM_CONTROLS) == 0) { fwts_log_info(fw, "PCIe ASPM is controlled by Linux kernel."); } else { fwts_log_info(fw, "PCIe ASPM is not controlled by Linux kernel."); fwts_advice(fw, "BIOS reports that Linux kernel should not modify ASPM " "settings that BIOS configured. It can be intentional " "because hardware vendors identified some capability " "bugs between the motherboard and the add-on cards."); } return FWTS_OK; } static int pcie_compare_rp_dev_aspm_registers(fwts_framework *fw, struct pci_device *rp, struct pci_device *dev) { fwts_pcie_capability *rp_cap, *device_cap; uint8_t rp_aspm_cntrl, device_aspm_cntrl; uint8_t next_cap; int ret = FWTS_OK; bool l0s_disabled = false, l1_disabled = false; next_cap = rp->config[FWTS_PCI_CONFIG_TYPE1_CAPABILITY_POINTER]; rp_cap = (fwts_pcie_capability *) &rp->config[next_cap]; while (rp_cap->pcie_cap_id != FWTS_PCI_EXPRESS_CAP_ID) { if (rp_cap->next_cap_point == FWTS_PCI_CAPABILITIES_LAST_ID) break; next_cap = rp_cap->next_cap_point; rp_cap = (fwts_pcie_capability *) &rp->config[next_cap]; } next_cap = dev->config[FWTS_PCI_CONFIG_TYPE1_CAPABILITY_POINTER]; device_cap = (fwts_pcie_capability *)&dev->config[next_cap]; while (device_cap->pcie_cap_id != FWTS_PCI_EXPRESS_CAP_ID) { if (device_cap->next_cap_point == FWTS_PCI_CAPABILITIES_LAST_ID) break; next_cap = device_cap->next_cap_point; device_cap = (fwts_pcie_capability *)&dev->config[next_cap]; } if (((rp_cap->link_cap & FWTS_PCIE_ASPM_SUPPORT_L0_FIELD) >> 10) != (rp_cap->link_contrl & FWTS_PCIE_ASPM_CONTROL_L0_FIELD)) { fwts_warning(fw, "RP %02Xh:%02Xh.%02Xh L0s not enabled.", rp->bus, rp->dev, rp->func); l0s_disabled = true; } if (((rp_cap->link_cap & FWTS_PCIE_ASPM_SUPPORT_L1_FIELD) >> 10) != (rp_cap->link_contrl & FWTS_PCIE_ASPM_CONTROL_L1_FIELD)) { fwts_warning(fw, "RP %02Xh:%02Xh.%02Xh L1 not enabled.", rp->bus, rp->dev, rp->func); l1_disabled = true; } if (((device_cap->link_cap & FWTS_PCIE_ASPM_SUPPORT_L0_FIELD) >> 10) != (device_cap->link_contrl & FWTS_PCIE_ASPM_CONTROL_L0_FIELD)) { fwts_warning(fw, "Device %02Xh:%02Xh.%02Xh L0s not enabled.", dev->bus, dev->dev, dev->func); l0s_disabled = true; } if (((device_cap->link_cap & FWTS_PCIE_ASPM_SUPPORT_L1_FIELD) >> 10) != (device_cap->link_contrl & FWTS_PCIE_ASPM_CONTROL_L1_FIELD)) { fwts_warning(fw, "Device %02Xh:%02Xh.%02Xh L1 not enabled.", dev->bus, dev->dev, dev->func); l1_disabled = true; } if (l0s_disabled) { fwts_advice(fw, "The ASPM L0s low power Link state is optimized for " "short entry and exit latencies, while providing " "substantial power savings. Disabling L0s of a PCIe " "device may increases power consumption, and will " "impact the battery life of a mobile system."); } if (l1_disabled) { fwts_advice(fw, "The ASPM L1 low power Link state is optimized for " "maximum power savings with longer entry and exit " "latencies. Disabling L1 of a PCIe device may " "increases power consumption, and will impact the " "battery life of a mobile system significantly."); } rp_aspm_cntrl = rp_cap->link_contrl & FWTS_PCIE_ASPM_CONTROL_FIELD; device_aspm_cntrl = device_cap->link_contrl & FWTS_PCIE_ASPM_CONTROL_FIELD; if (rp_aspm_cntrl != device_aspm_cntrl) { fwts_failed(fw, LOG_LEVEL_MEDIUM, "PCIEASPM_Unmatched", "PCIe ASPM setting was not matched."); fwts_log_error(fw, "RP %02Xh:%02Xh.%02Xh has ASPM = %02Xh." , rp->bus, rp->dev, rp->func, rp_aspm_cntrl); fwts_log_error(fw, "Device %02Xh:%02Xh.%02Xh has ASPM = %02Xh.", dev->bus, dev->dev, dev->func, device_aspm_cntrl); fwts_advice(fw, "ASPM control registers between root port and device " "must match in order for ASPM to be active. Unmatched " "configuration indicates software did not configure " "ASPM correctly and the system is not saving power " "at its full potential."); } else { fwts_passed(fw, "PCIe ASPM setting matched was matched."); } return ret; } static int pcie_check_aspm_registers(fwts_framework *fw) { DIR *dirp; struct dirent *entry; fwts_list dev_list; fwts_list_link *lcur, *ltarget; fwts_list_init(&dev_list); if ((dirp = opendir(FWTS_PCI_DEV_PATH)) == NULL) { fwts_log_warning(fw, "Could not open %s.", FWTS_PCI_DEV_PATH); return FWTS_ERROR; } while ((entry = readdir(dirp)) != NULL) { uint8_t bus, dev, func; if (entry->d_name[0] == '.') continue; if (sscanf(entry->d_name, "%*x:%" SCNx8 ":%" SCNx8 ".%" SCNx8, &bus, &dev, &func) == 3) { int fd; char path[PATH_MAX]; struct pci_device *device; device = (struct pci_device *)calloc(1, sizeof(struct pci_device)); if (device == NULL) { fwts_list_free_items(&dev_list, free); closedir(dirp); return FWTS_ERROR; } device->bus = bus; device->dev = dev; device->func = func; snprintf(path, sizeof(path), FWTS_PCI_DEV_PATH "/%s/config", entry->d_name); if ((fd = open(path, O_RDONLY)) < 0) { fwts_log_warning(fw, "Could not open config from PCI device %s\n", entry->d_name); free(device); continue; } if (read(fd, device->config, sizeof(device->config)) < 0) { fwts_log_warning(fw, "Could not read config from PCI device %s\n", entry->d_name); free(device); close(fd); continue; } close(fd); fwts_list_append(&dev_list, device); } } closedir(dirp); /* Check aspm registers from the list of pci devices */ for (lcur = dev_list.head; lcur; lcur = lcur->next) { struct pci_device *target, *cur = (struct pci_device *)lcur->data; /* Find PCI Bridge (PCIE Root Port) and the attached device */ if (cur->config[FWTS_PCI_CONFIG_HEADER_TYPE] & 0x01) { for (ltarget = dev_list.head; ltarget; ltarget = ltarget->next) { target = (struct pci_device *)ltarget->data; if (target->bus == cur->config[FWTS_PCI_CONFIG_TYPE1_SECONDARY_BUS_NUMBER]) { pcie_compare_rp_dev_aspm_registers(fw, cur, target); break; } } } } fwts_list_free_items(&dev_list, free); return FWTS_OK; } static int aspm_check_configuration(fwts_framework *fw) { int ret; ret = facp_get_aspm_control(fw); if (ret == FWTS_ERROR) fwts_skipped(fw, "No valid FACP information present: cannot test ASPM."); return ret; } static int aspm_pcie_register_configuration(fwts_framework *fw) { int ret; ret = pcie_check_aspm_registers(fw); if (ret == FWTS_ERROR) fwts_skipped(fw, "Cannot sanity check PCIe register configuration."); return ret; } static fwts_framework_minor_test aspm_tests[] = { { aspm_check_configuration, "PCIe ASPM ACPI test." }, { aspm_pcie_register_configuration, "PCIe ASPM registers test." }, { NULL, NULL } }; static fwts_framework_ops aspm_ops = { .description = "PCIe ASPM test.", .minor_tests = aspm_tests }; FWTS_REGISTER("aspm", &aspm_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | FWTS_FLAG_ROOT_PRIV); src/pci/crs/000077500000000000000000000000001231470457100132135ustar00rootroot00000000000000src/pci/crs/crs.c000066400000000000000000000112401231470457100141440ustar00rootroot00000000000000/* * Copyright (C) 2010-2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #include "fwts.h" #ifdef FWTS_ARCH_INTEL static int crs_get_bios_date(fwts_framework *fw, int *day, int *mon, int *year) { char *date; static const char *bios_date = "/sys/class/dmi/id/bios_date"; *mon = *day = *year = 0; if ((date = fwts_get(bios_date)) == NULL) { fwts_log_error(fw, "Cannot read %s.", bios_date); return FWTS_ERROR; } /* Assume mon/day/year, but we only care about the year anyway */ sscanf(date, "%d/%d/%d", mon, day, year); free(date); return FWTS_OK; } static int crs_test1(fwts_framework *fw) { fwts_list *klog; int day, mon, year; char *cmdline; if ((cmdline = fwts_get("/proc/cmdline")) == NULL) { fwts_log_error(fw, "Cannot read /proc/cmdline"); return FWTS_ERROR; } if (crs_get_bios_date(fw, &day, &mon, &year) != FWTS_OK) { fwts_log_error(fw, "Cannot determine age of BIOS."); return FWTS_ERROR; } if ((klog = fwts_klog_read()) == NULL) { fwts_log_error(fw, "Cannot read kernel log."); return FWTS_ERROR; } if (fwts_klog_regex_find(fw, klog, "PCI: Ignoring host bridge windows from ACPI;") > 0) { if (strstr(cmdline, "pci=nocrs") != NULL) { fwts_skipped(fw, "Kernel was booted with pci=nocrs, Ignoring host bridge windows _CRS settings from ACPI, skipping test."); } else { if (year == 0) { fwts_failed(fw, LOG_LEVEL_MEDIUM, "BIOSTooOld", "The kernel could not determine the BIOS age " "and has assumed that your BIOS is too old to correctly " "specify the host bridge MMIO aperture using _CRS."); fwts_log_advice(fw, "You can override this by booting with \"pci=use_crs\"."); } else if (year < 2008) { fwts_passed(fw, "The kernel has detected an old BIOS (%d/%d/%d) " "and has assumed that your BIOS is too old to correctly " "specify the host bridge MMIO aperture using _CRS.", mon, day, year); fwts_log_advice(fw, "You can override this by booting with \"pci=use_crs\"."); } else { fwts_failed(fw, LOG_LEVEL_MEDIUM, "HostBridgeWindows", "The kernel is ignoring host bridge windows from ACPI for some unknown reason. " "pci=nocrs has not been used as a boot parameter and the BIOS may be recent enough " "to support this (%d/%d/%d)", mon, day, year); } } } else if (fwts_klog_regex_find(fw, klog, "PCI: Using host bridge windows from ACPI;") > 0) { if (strstr(cmdline, "pci=use_crs") != NULL) { if (year == 0) { fwts_failed(fw, LOG_LEVEL_MEDIUM, "BIOSNoReleaseDate", "The BIOS does not seem to have release date, hence pci=use_crs was required."); } else if (year < 2008) { fwts_passed(fw, "The BIOS is relatively old (%d/%d/%d) and hence pci=use_crs was required to " "enable host bridge windows _CRS settings from ACPI.", mon, day, year); } else { fwts_failed(fw, LOG_LEVEL_LOW, "BIOSSupportBridgeWindows", "Kernel was booted with pci=use_crs but this may be uncessary as " "the BIOS is new enough to support automatic bridge windows configuring using _CRS from ACPI. " "However, the workaround may be necessary because _CRS is incorrect or not implemented in the " "DSDT."); } } else { fwts_passed(fw, "The kernel has detected a BIOS newer than the end of 2007 (%d/%d/%d) " "and has assumed that your BIOS can correctly " "specify the host bridge MMIO aperture using _CRS. If this does not work " "correctly you can override this by booting with \"pci=nocrs\".", mon, day, year); } } else { fwts_skipped(fw, "Cannot find host bridge message in kernel log, skipping test."); } fwts_list_free(klog, free); free(cmdline); return FWTS_OK; } static fwts_framework_minor_test crs_tests[] = { { crs_test1, "Test PCI host bridge configuration using _CRS." }, { NULL, NULL }, }; static fwts_framework_ops crs_ops = { .description = "Test PCI host bridge configuration using _CRS.", .minor_tests = crs_tests }; FWTS_REGISTER("crs", &crs_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | FWTS_FLAG_ROOT_PRIV); #endif src/pci/maxreadreq/000077500000000000000000000000001231470457100145555ustar00rootroot00000000000000src/pci/maxreadreq/maxreadreq.c000066400000000000000000000117601231470457100170570ustar00rootroot00000000000000/* * Copyright (C) 2006, Intel Corporation * Copyright (C) 2010-2014 Canonical * * This file was original part of the Linux-ready Firmware Developer Kit * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #include "fwts.h" #include #include #include #include #include #include #include #include #include #include /* * This test checks if MaxReadReq is set > 128 for non-internal stuff * A too low value hurts performance */ static int maxreadreq_test1(fwts_framework *fw) { DIR *dirp; struct dirent *entry; int warnings = 0; if ((dirp = opendir(FWTS_PCI_DEV_PATH)) == NULL) { fwts_log_warning(fw, "Could not open %s.", FWTS_PCI_DEV_PATH); return FWTS_ERROR; } while ((entry = readdir(dirp)) != NULL) { char path[PATH_MAX]; uint8_t config[256]; int fd; ssize_t n; uint8_t offset = 0; if (entry->d_name[0] == '.') continue; /* Read Config space */ snprintf(path, sizeof(path), FWTS_PCI_DEV_PATH "/%s/config", entry->d_name); if ((fd = open(path, O_RDONLY)) < 0) { fwts_log_warning(fw, "Could not open %s PCI config data\n", entry->d_name); continue; } if ((n = read(fd, config, sizeof(config))) < 0) { fwts_log_warning(fw, "Could not read %s PCI config data\n", entry->d_name); close(fd); continue; } close(fd); /* Ignore Host Bridge */ if ((config[FWTS_PCI_CONFIG_CLASS_CODE] == FWTS_PCI_CLASS_CODE_BRIDGE_CONTROLLER) && (config[FWTS_PCI_CONFIG_SUBCLASS] == FWTS_PCI_SUBCLASS_CODE_HOST_BRIDGE)) continue; /* Ignore PCI Bridge */ if ((config[FWTS_PCI_CONFIG_CLASS_CODE] == FWTS_PCI_CLASS_CODE_BRIDGE_CONTROLLER) && (config[FWTS_PCI_CONFIG_SUBCLASS] == FWTS_PCI_SUBCLASS_CODE_PCI_TO_PCI_BRIDGE)) continue; /* Ignore System Peripheral */ if ((config[FWTS_PCI_CONFIG_CLASS_CODE] == FWTS_PCI_CLASS_CODE_BASE_SYSTEM_PERIPHERALS) && (config[FWTS_PCI_CONFIG_SUBCLASS] == FWTS_PCI_SUBCLASS_CODE_OTHER_SYSTEM_PERIPHERAL)) continue; /* Ignore Audio Device */ if ((config[FWTS_PCI_CONFIG_CLASS_CODE] == FWTS_PCI_CLASS_CODE_MULTIMEDIA_CONTROLLER) && (config[FWTS_PCI_CONFIG_SUBCLASS] == FWTS_PCI_SUBCLASS_CODE_AUDIO_DEVICE)) continue; /* config region too small, do next */ if (n < FWTS_PCI_CONFIG_TYPE0_CAPABILITIES_POINTER) continue; offset = config[FWTS_PCI_CONFIG_TYPE0_CAPABILITIES_POINTER]; /* * Step through capability structures and * examine MaxReadReq settings */ while ((offset != FWTS_PCI_CAPABILITIES_LAST_ID) && (offset > 0) && ((ssize_t)(offset + sizeof(fwts_pcie_capability)) <= n)) { fwts_pcie_capability *cap = (fwts_pcie_capability *)&config[offset]; if (cap->pcie_cap_id == FWTS_PCI_EXPRESS_CAP_ID) { uint32_t max_readreq = 128 << ((cap->device_contrl >> 12) & 0x3); if (max_readreq <= 128) { fwts_log_warning(fw, "MaxReadReq for %s is low (%" PRIu32 ").", entry->d_name, max_readreq); warnings++; } } offset = cap->next_cap_point; } } closedir(dirp); if (warnings > 0) { fwts_failed(fw, LOG_LEVEL_LOW, "LowMaxReadReq", "%d devices have low MaxReadReq settings. " "Firmware may have configured these too low.", warnings); fwts_advice(fw, "The MaxReadRequest size is set too low and will affect performance. " "It will provide excellent bus sharing at the cost of bus data transfer " "rates. Although not a critical issue, it may be worth considering setting " "the MaxReadRequest size to 256 or 512 to increase throughput on the PCI " "Express bus. Some drivers (for example the Brocade Fibre Channel driver) " "allow one to override the firmware settings. Where possible, this BIOS " "configuration setting is worth increasing it a little more for better " "performance at a small reduction of bus sharing."); } else fwts_passed(fw, "All devices have MaxReadReq set > 128."); return FWTS_OK; } static fwts_framework_minor_test maxreadreq_tests[] = { { maxreadreq_test1, "Test firmware settings MaxReadReq for PCI Express devices." }, { NULL, NULL }, }; static fwts_framework_ops maxreadreq_ops = { .description = "Test firmware has set PCI Express MaxReadReq to a higher value on non-motherboard devices.", .minor_tests = maxreadreq_tests }; FWTS_REGISTER("maxreadreq", &maxreadreq_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_BATCH | FWTS_FLAG_ROOT_PRIV); src/uefi/000077500000000000000000000000001231470457100126015ustar00rootroot00000000000000src/uefi/csm/000077500000000000000000000000001231470457100133635ustar00rootroot00000000000000src/uefi/csm/csm.c000066400000000000000000000067151231470457100143220ustar00rootroot00000000000000/* * Copyright (C) 2011-2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #include "fwts.h" #ifdef FWTS_ARCH_INTEL #include #include /* Real Mode IDT */ #define INT_VEC_START (0x00000000) #define INT_VEC_END (0x000003ff) #define INT_VEC_SIZE (INT_VEC_END - INT_VEC_START) /* Legacy BIOS Option ROM region */ #define BIOS_ROM_REGION_START (0x000c0000) #define BIOS_ROM_REGION_END (0x000fffff) #define BIOS_ROM_REGION_SIZE (BIOS_ROM_REGION_END - BIOS_ROM_REGION_START) #define EFI_SUPPORT (0x0001) #define VGA_SUPPORT (0x0002) static int csm_test1(fwts_framework *fw) { uint8_t *optROM; uint32_t *intVec; uint32_t int10hVec; uint32_t i; int flag = 0; fwts_log_info(fw, "Checking for UEFI Compatibility Support Module (CSM)"); if (fwts_firmware_detect() == FWTS_FIRMWARE_UEFI) flag |= EFI_SUPPORT; /* Get Int 10h vector from segment/offset realmode address */ if ((intVec = fwts_mmap(INT_VEC_START, INT_VEC_SIZE)) == FWTS_MAP_FAILED) { fwts_log_error(fw, "Cannot mmap BIOS ROM region."); return FWTS_ERROR; } int10hVec = (intVec[0x10] & 0xffff) | ((intVec[0x10] & 0xffff0000)>> 12); fwts_munmap(intVec, INT_VEC_SIZE); if ((optROM = fwts_mmap(BIOS_ROM_REGION_START, BIOS_ROM_REGION_SIZE)) == FWTS_MAP_FAILED) { fwts_log_error(fw, "Cannot mmap BIOS ROM region."); return FWTS_ERROR; } for (i=0; i #include #include "fwts.h" #include "fwts_uefi.h" #include "sbkeydefs.h" typedef void (*securebootcert_func)(fwts_framework *fw, fwts_uefi_var *var, char *varname); typedef struct { char *description; /* UEFI var */ securebootcert_func func; /* Function to dump this variable */ } securebootcert_info; typedef struct { uint32_t Data1; uint16_t Data2; uint16_t Data3; uint8_t Data4[8]; } __attribute__ ((packed)) EFI_GUID; typedef struct _EFI_SIGNATURE_LIST { EFI_GUID SignatureType; uint32_t SignatureListSize; uint32_t SignatureHeaderSize; uint32_t SignatureSize; } __attribute__((packed)) EFI_SIGNATURE_LIST; #define VAR_SECUREBOOT_FOUND 1 #define VAR_SETUPMODE_FOUND 2 #define VAR_DB_FOUND 4 #define VAR_KEK_FOUND 8 #define EFI_GLOBAL_VARIABLE \ { \ 0x8BE4DF61, 0x93CA, 0x11d2, { 0xAA, 0x0D, 0x00, \ 0xE0, 0x98, 0x03, 0x2B, 0x8C} \ } #define EFI_IMAGE_SECURITY_DATABASE_GUID \ { \ 0xd719b2cb, 0x3d3a, 0x4596, { 0xa3, 0xbc, 0xda, \ 0xd0, 0x0e, 0x67, 0x65, 0x6f} \ } static uint8_t var_found; static bool compare_guid(EFI_GUID *guid1, uint8_t *guid2) { bool ident = true; int i; uint32_t data1 = guid2[0] + (guid2[1] << 8) + (guid2[2] << 16) + (guid2[3] << 24); uint16_t data2 = guid2[4] + (guid2[5] << 8); uint16_t data3 = guid2[6] + (guid2[7] << 8); if ((guid1->Data1 != data1) || (guid1->Data2 != data2) || (guid1->Data3 != data3)) ident = false; else { for (i = 0; i < 8; i++) { if (guid1->Data4[i] != guid2[i+8]) ident = false; } } return ident; } static void securebootcert_secure_boot(fwts_framework *fw, fwts_uefi_var *var, char *varname) { bool ident = false; EFI_GUID global_var_guid = EFI_GLOBAL_VARIABLE; if (strcmp(varname, "SecureBoot")) return; var_found |= VAR_SECUREBOOT_FOUND; ident = compare_guid(&global_var_guid, var->guid); if (!ident) { fwts_failed(fw, LOG_LEVEL_HIGH, "SecureBootCertVariableGUIDInvalid", "The secure boot variable %s GUID invalid.", varname); return; } if (var->datalen != 1) { fwts_failed(fw, LOG_LEVEL_HIGH, "SecureBootCertVariableSizeInvalid", "The secure boot variable %s size invalid.", varname); return; } else { char *mode; uint8_t value = (uint8_t)var->data[0]; switch (value) { case 0: mode = " (Secure Boot Mode Off)"; break; case 1: mode = " (Secure Boot Mode On)"; break; default: fwts_failed(fw, LOG_LEVEL_HIGH, "SecureBootCertVariableDataInvalid", "The secure boot variable data invalid."); return; } fwts_log_info_verbatum(fw, " Value: 0x%2.2x%s.", value, mode); fwts_passed(fw, "Secure boot relative variable %s check passed.", varname); } } static void securebootcert_setup_mode(fwts_framework *fw, fwts_uefi_var *var, char *varname) { bool ident = false; EFI_GUID global_var_guid = EFI_GLOBAL_VARIABLE; if (strcmp(varname, "SetupMode")) return; var_found |= VAR_SETUPMODE_FOUND; ident = compare_guid(&global_var_guid, var->guid); if (!ident) { fwts_failed(fw, LOG_LEVEL_HIGH, "SecureBootCertVariableGUIDInvalid", "The secure boot variable %s GUID invalid.", varname); return; } if (var->datalen != 1) { fwts_failed(fw, LOG_LEVEL_HIGH, "SecureBootCertVariableSizeInvalid", "The secure boot variable %s size invalid.", varname); } else { char *mode; uint8_t value = (uint8_t)var->data[0]; switch (value) { case 0: mode = " (User Mode)"; break; case 1: mode = " (Setup Mode)"; break; default: fwts_failed(fw, LOG_LEVEL_HIGH, "SecureBootCertVariableDataInvalid", "The secure boot variable %s data invalid.", varname); return; } fwts_log_info_verbatum(fw, " Value: 0x%2.2" PRIx8 "%s.", value, mode); fwts_passed(fw, "Secure boot relative variable %s check passed.", varname); } } static bool check_sigdb_presence(uint8_t *var_data, size_t datalen, uint8_t *key, uint32_t key_len) { uint8_t *var_data_addr; EFI_SIGNATURE_LIST siglist; size_t i = 0; EFI_GUID cert_x509_guid = EFI_CERT_X509_GUID; bool key_found = false; if (datalen < sizeof(siglist)) return key_found; for (var_data_addr = var_data; var_data_addr < var_data + datalen; ) { siglist = *((EFI_SIGNATURE_LIST *)var_data_addr); /* check for potential overflow */ if (var_data_addr + siglist.SignatureListSize < var_data_addr) break; if (var_data_addr + siglist.SignatureListSize > var_data + datalen) break; if (siglist.SignatureHeaderSize > siglist.SignatureListSize) { var_data_addr += siglist.SignatureListSize; continue; } if (memcmp(&siglist.SignatureType, &cert_x509_guid, sizeof(EFI_GUID)) != 0) { var_data_addr += siglist.SignatureListSize; continue; } var_data_addr += sizeof(siglist) + siglist.SignatureHeaderSize; EFI_GUID SignatureOwner = *(EFI_GUID *)var_data_addr; if (key_len != (siglist.SignatureSize - sizeof(SignatureOwner))) { var_data_addr += siglist.SignatureSize; continue; } var_data_addr += sizeof(SignatureOwner); for (i = 0; i < key_len; i++) { if (*((uint8_t *)var_data_addr+i) != key[i]) break; } var_data_addr += siglist.SignatureSize; if (i == key_len) { key_found = true; return key_found; } } return key_found; } static void securebootcert_data_base(fwts_framework *fw, fwts_uefi_var *var, char *varname) { bool ident = false; EFI_GUID image_security_var_guid = EFI_IMAGE_SECURITY_DATABASE_GUID; if (strcmp(varname, "db")) return; var_found |= VAR_DB_FOUND; ident = compare_guid(&image_security_var_guid, var->guid); if (!ident) { fwts_failed(fw, LOG_LEVEL_HIGH, "SecureBootCertVariableGUIDInvalid", "The secure boot variable %s GUID invalid.", varname); return; } fwts_log_info_verbatum(fw, "Check Microsoft UEFI CA certificate presence in %s", varname); if (check_sigdb_presence(var->data, var->datalen, ms_uefi_ca_2011_key, ms_uefi_ca_2011_key_len)) fwts_passed(fw, "MS UEFI CA 2011 key check passed."); else fwts_failed(fw, LOG_LEVEL_HIGH, "SecureBootMSCertNotFound", "The Microsoft UEFI CA certificate not found ."); } static void securebootcert_key_ex_key(fwts_framework *fw, fwts_uefi_var *var, char *varname) { bool ident = false; EFI_GUID global_var_guid = EFI_GLOBAL_VARIABLE; if (strcmp(varname, "KEK")) return; var_found |= VAR_KEK_FOUND; ident = compare_guid(&global_var_guid, var->guid); if (!ident) { fwts_failed(fw, LOG_LEVEL_HIGH, "SecureBootCertVariableGUIDInvalid", "The secure boot variable %s GUID invalid.", varname); return; } fwts_release *release = fwts_release_get(); if (release == NULL) { fwts_skipped(fw, "Cannot determine system, stop checking the Master CA certificate."); return; } if (strcmp(release->distributor, "Ubuntu") != 0) { fwts_skipped(fw, "Not a Ubuntu system, skipping the Ubuntu Master CA certificate check."); fwts_release_free(release); return; } fwts_release_free(release); fwts_log_info_verbatum(fw, "Check Ubuntu master CA certificate presence in %s", varname); if (check_sigdb_presence(var->data, var->datalen, ubuntu_key, ubuntu_key_len)) fwts_passed(fw, "Ubuntu UEFI CA 2011 key check passed."); else { fwts_log_info_verbatum(fw, "No Ubuntu master CA certificate presence in %s", varname); fwts_infoonly(fw); } } static securebootcert_info securebootcert_info_table[] = { { "SecureBoot", securebootcert_secure_boot }, { "SetupMode", securebootcert_setup_mode }, { "db", securebootcert_data_base }, { "KEK", securebootcert_key_ex_key }, { NULL, NULL } }; static void securebootcert_var(fwts_framework *fw, fwts_uefi_var *var) { char varname[512]; char guid_str[37]; securebootcert_info *info; fwts_uefi_get_varname(varname, sizeof(varname), var); for (info = securebootcert_info_table; info->description != NULL; info++) { if (strcmp(varname, info->description) == 0) { fwts_log_info_verbatum(fw, "The %s variable check.", varname); fwts_guid_buf_to_str(var->guid, guid_str, sizeof(guid_str)); fwts_log_info_verbatum(fw, " GUID: %s", guid_str); fwts_log_info_verbatum(fw, " Attr: 0x%x (%s).", var->attributes, fwts_uefi_attribute_info(var->attributes)); info->func(fw, var, varname); fwts_log_nl(fw); return; } } } static int securebootcert_init(fwts_framework *fw) { if (fwts_firmware_detect() != FWTS_FIRMWARE_UEFI) { fwts_log_info(fw, "Cannot detect any UEFI firmware. Aborted."); return FWTS_ABORTED; } if (!fwts_uefi_efivars_iface_exist()) { fwts_log_info(fw, "Cannot detect efivars interface. Aborted."); return FWTS_ABORTED; } return FWTS_OK; } static int securebootcert_test1(fwts_framework *fw) { fwts_list name_list; if (fwts_uefi_get_variable_names(&name_list) == FWTS_ERROR) { fwts_log_info(fw, "Cannot find any UEFI variables."); } else { fwts_list_link *item; fwts_list_foreach(item, &name_list) { fwts_uefi_var var; char *name = fwts_list_data(char *, item); if (fwts_uefi_get_variable(name, &var) == FWTS_OK) { securebootcert_var(fw, &var); fwts_uefi_free_variable(&var); } } } /* check all the secure boot variables be found */ if (!(var_found & VAR_SECUREBOOT_FOUND)) fwts_failed(fw, LOG_LEVEL_HIGH, "SecureBootCertVariableNotFound", "The secure boot variable SecureBoot not found."); if (!(var_found & VAR_SETUPMODE_FOUND)) fwts_failed(fw, LOG_LEVEL_HIGH, "SecureBootCertVariableNotFound", "The secure boot variable SetupMode not found."); if (!(var_found & VAR_DB_FOUND)) fwts_failed(fw, LOG_LEVEL_HIGH, "SecureBootCertVariableNotFound", "The secure boot variable DB not found."); if (!(var_found & VAR_KEK_FOUND)) fwts_failed(fw, LOG_LEVEL_HIGH, "SecureBootCertVariableNotFound", "The secure boot variable KEK not found."); fwts_uefi_free_variable_names(&name_list); return FWTS_OK; } static fwts_framework_minor_test securebootcert_tests[] = { { securebootcert_test1, "UEFI secure boot test." }, { NULL, NULL } }; static fwts_framework_ops securebootcert_ops = { .description = "UEFI secure boot test.", .init = securebootcert_init, .minor_tests = securebootcert_tests }; FWTS_REGISTER("securebootcert", &securebootcert_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_TEST_UEFI | FWTS_FLAG_BATCH | FWTS_FLAG_ROOT_PRIV); src/uefi/uefidump/000077500000000000000000000000001231470457100144175ustar00rootroot00000000000000src/uefi/uefidump/uefidump.c000066400000000000000000001230731231470457100164070ustar00rootroot00000000000000/* * Copyright (C) 2010-2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #include #include #include #include "fwts.h" #include "fwts_uefi.h" typedef void (*uefidump_func)(fwts_framework *fw, fwts_uefi_var *var); typedef struct { char *description; /* UEFI var */ uefidump_func func; /* Function to dump this variable */ } uefidump_info; static void uefidump_var_hexdump(fwts_framework *fw, fwts_uefi_var *var) { int i; uint8_t *data = (uint8_t*)var->data; fwts_log_info_verbatum(fw, " Size: %zd bytes of data.", var->datalen); for (i = 0; i < (int)var->datalen; i+= 16) { char buffer[128]; int left = (int)var->datalen - i; fwts_dump_raw_data(buffer, sizeof(buffer), data + i, i, left > 16 ? 16 : left); fwts_log_info_verbatum(fw, " Data: %s", buffer+2); } } static void uefidump_data_hexdump(fwts_framework *fw, uint8_t *data, size_t size) { size_t i; for (i = 0; i < size; i += 16) { char buffer[128]; size_t left = size - i; fwts_dump_raw_data(buffer, sizeof(buffer), data + i, i, left > 16 ? 16 : left); fwts_log_info_verbatum(fw, " Data: %s", buffer+2); } } static char *uefidump_vprintf(char *str, const char *fmt, ...) __attribute__((format(printf, 2, 3))); /* * uefidump_vprintf() * printf() to str: if str NULL - allocate buffer and print into it, * otherwise allocate more space and append new text to end of existing * string. Return new string, or NULL if failed. */ static char *uefidump_vprintf(char *str, const char *fmt, ...) { va_list args; char buffer[4096]; va_start(args, fmt); vsnprintf(buffer, sizeof(buffer), fmt, args); va_end(args); if (str == NULL) str = strdup(buffer); else { str = realloc(str, strlen(str) + strlen(buffer) + 1); if (str == NULL) return NULL; strcat(str, buffer); } return str; } /* * uefidump_build_dev_path() * recursively scan dev_path and build up a human readable path name */ static char *uefidump_build_dev_path(char *path, fwts_uefi_dev_path *dev_path, const size_t dev_path_len) { switch (dev_path->type & 0x7f) { case FWTS_UEFI_END_DEV_PATH_TYPE: switch (dev_path->subtype) { case FWTS_UEFI_END_ENTIRE_DEV_PATH_SUBTYPE: break; case FWTS_UEFI_END_THIS_DEV_PATH_SUBTYPE: path = uefidump_vprintf(path, "\n Device Path: "); break; default: return uefidump_vprintf(path, "\\Unknown-End(0x%" PRIx8 ")", dev_path->subtype); } break; case FWTS_UEFI_HARDWARE_DEV_PATH_TYPE: switch (dev_path->subtype) { case FWTS_UEFI_PCI_DEV_PATH_SUBTYPE: if (dev_path_len >= sizeof(fwts_uefi_pci_dev_path)) { fwts_uefi_pci_dev_path *p = (fwts_uefi_pci_dev_path *)dev_path; path = uefidump_vprintf(path, "\\PCI(0x%" PRIx8 ",0x%" PRIx8 ")", p->function, p->device); } break; case FWTS_UEFI_PCCARD_DEV_PATH_SUBTYPE: if (dev_path_len >= sizeof(fwts_uefi_pccard_dev_path)) { fwts_uefi_pccard_dev_path *p = (fwts_uefi_pccard_dev_path *)dev_path; path = uefidump_vprintf(path, "\\PCCARD(0x%" PRIx8 ")", p->function); } break; case FWTS_UEFI_MEMORY_MAPPED_DEV_PATH_SUBTYPE: if (dev_path_len >= sizeof(fwts_uefi_mem_mapped_dev_path)) { fwts_uefi_mem_mapped_dev_path *m = (fwts_uefi_mem_mapped_dev_path*)dev_path; path = uefidump_vprintf(path, "\\Memmap(0x%" PRIx32 ",0x%" PRIx64 ",0x%" PRIx64 ")", m->memory_type, m->start_addr, m->end_addr); } break; case FWTS_UEFI_VENDOR_DEV_PATH_SUBTYPE: if (dev_path_len >= sizeof(fwts_uefi_vendor_dev_path)) { fwts_uefi_vendor_dev_path *v = (fwts_uefi_vendor_dev_path*)dev_path; path = uefidump_vprintf(path, "\\VENDOR(%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x)", v->guid.info1, v->guid.info2, v->guid.info3, v->guid.info4[0], v->guid.info4[1], v->guid.info4[2], v->guid.info4[3], v->guid.info4[4], v->guid.info4[5], v->guid.info4[6], v->guid.info4[7]); } break; case FWTS_UEFI_CONTROLLER_DEV_PATH_SUBTYPE: if (dev_path_len >= sizeof(fwts_uefi_controller_dev_path)) { fwts_uefi_controller_dev_path *c = (fwts_uefi_controller_dev_path*)dev_path; path = uefidump_vprintf(path, "\\Controller(0x%" PRIx32 ")", c->controller); } break; default: path = uefidump_vprintf(path, "\\Unknown-HW-DEV-PATH(0x%" PRIx8 ")", dev_path->subtype); break; } break; case FWTS_UEFI_ACPI_DEVICE_PATH_TYPE: switch (dev_path->subtype) { case FWTS_UEFI_ACPI_DEVICE_PATH_SUBTYPE: if (dev_path_len >= sizeof(fwts_uefi_acpi_dev_path)) { fwts_uefi_acpi_dev_path *a = (fwts_uefi_acpi_dev_path*)dev_path; path = uefidump_vprintf(path, "\\ACPI(0x%" PRIx32 ",0x%" PRIx32 ")", a->hid, a->uid); } break; case FWTS_UEFI_EXPANDED_ACPI_DEVICE_PATH_SUBTYPE: if (dev_path_len >= sizeof(fwts_uefi_expanded_acpi_dev_path)) { fwts_uefi_expanded_acpi_dev_path *a = (fwts_uefi_expanded_acpi_dev_path*)dev_path; char *hidstr= a->hidstr; path = uefidump_vprintf(path, "\\ACPI("); if (hidstr[0] == '\0') path = uefidump_vprintf(path, "0x%" PRIx32 ",", a->hid); else path = uefidump_vprintf(path, "%s,", hidstr); hidstr += strlen(hidstr) + 1; if (hidstr[0] == '\0') path = uefidump_vprintf(path, "0x%" PRIx32 ",", a->uid); else path = uefidump_vprintf(path, "%s,", hidstr); hidstr += strlen(hidstr) + 1; if (hidstr[0] == '\0') path = uefidump_vprintf(path, "0x%" PRIx32 ",", a->cid); else path = uefidump_vprintf(path, "%s,", hidstr); } break; case FWTS_UEFI_ACPI_ADR_DEVICE_PATH_SUBTYPE: if (dev_path_len >= sizeof(fwts_uefi_acpi_adr_dev_path)) { fwts_uefi_acpi_adr_dev_path *a = (fwts_uefi_acpi_adr_dev_path *)dev_path; uint16_t len = a->dev_path.length[0] | (((uint16_t)a->dev_path.length[1]) << 8); path = uefidump_vprintf(path, "\\ACPI_ADR(0x%" PRIx32, a->adr); /* Adding additional _ADR */ uint8_t *adr_add = (uint8_t *)a + sizeof(fwts_uefi_acpi_adr_dev_path); size_t offset = 0; while ((len - sizeof(fwts_uefi_acpi_adr_dev_path) - offset) >= sizeof(uint32_t)) { path = uefidump_vprintf(path, ", 0x%" PRIx32 , *(uint32_t *)(adr_add + offset)); offset += sizeof(uint32_t); } path = uefidump_vprintf(path, ")"); } break; default: path = uefidump_vprintf(path, "\\Unknown-ACPI-DEV-PATH(0x%" PRIx8 ")", dev_path->subtype); break; } break; case FWTS_UEFI_MESSAGING_DEVICE_PATH_TYPE: switch (dev_path->subtype) { case FWTS_UEFI_ATAPI_DEVICE_PATH_SUBTYPE: if (dev_path_len >= sizeof(fwts_uefi_atapi_dev_path)) { fwts_uefi_atapi_dev_path *a = (fwts_uefi_atapi_dev_path*)dev_path; path = uefidump_vprintf(path, "\\ATAPI(0x%" PRIx8 ",0x%" PRIx8 ",0x%" PRIx16 ")", a->primary_secondary, a->slave_master, a->lun); } break; case FWTS_UEFI_SCSI_DEVICE_PATH_SUBTYPE: if (dev_path_len >= sizeof(fwts_uefi_scsi_dev_path)) { fwts_uefi_scsi_dev_path *s = (fwts_uefi_scsi_dev_path*)dev_path; path = uefidump_vprintf(path, "\\SCSI(0x%" PRIx16 ",0x%" PRIx16 ")", s->pun, s->lun); } break; case FWTS_UEFI_FIBRE_CHANNEL_DEVICE_PATH_SUBTYPE: if (dev_path_len >= sizeof(fwts_uefi_fibre_channel_dev_path)) { fwts_uefi_fibre_channel_dev_path *f = (fwts_uefi_fibre_channel_dev_path*)dev_path; path = uefidump_vprintf(path, "\\FIBRECHANNEL(0x%" PRIx64 ",0x%" PRIx64 ")", f->wwn, f->lun); } break; case FWTS_UEFI_1394_DEVICE_PATH_SUBTYPE: if (dev_path_len >= sizeof(fwts_uefi_1394_dev_path)) { fwts_uefi_1394_dev_path *fw = (fwts_uefi_1394_dev_path*)dev_path; path = uefidump_vprintf(path, "\\1394(0x%" PRIx64 ")", fw->guid); } break; case FWTS_UEFI_USB_DEVICE_PATH_SUBTYPE: if (dev_path_len >= sizeof(fwts_uefi_usb_dev_path)) { fwts_uefi_usb_dev_path *u = (fwts_uefi_usb_dev_path*)dev_path; path = uefidump_vprintf(path, "\\USB(0x%" PRIx8 ",0x%" PRIx8 ")", u->parent_port_number, u->interface); } break; case FWTS_UEFI_USB_CLASS_DEVICE_PATH_SUBTYPE: if (dev_path_len >= sizeof(fwts_uefi_usb_class_dev_path)) { fwts_uefi_usb_class_dev_path *u = (fwts_uefi_usb_class_dev_path*)dev_path; path = uefidump_vprintf(path, "\\USBCLASS(0x%" PRIx16 ",0x%" PRIx16 ",0x%" PRIx8 ",0x%" PRIx8 ",0x%" PRIx8 ")", u->vendor_id, u->product_id, u->device_class, u->device_subclass, u->device_protocol); } break; case FWTS_UEFI_I2O_DEVICE_PATH_SUBTYPE: if (dev_path_len >= sizeof(fwts_uefi_i2o_dev_path)) { fwts_uefi_i2o_dev_path *i2o = (fwts_uefi_i2o_dev_path*)dev_path; path = uefidump_vprintf(path, "\\I2O(0x%" PRIx32 ")", i2o->tid); } break; case FWTS_UEFI_MAC_ADDRESS_DEVICE_PATH_SUBTYPE: if (dev_path_len >= sizeof(fwts_uefi_mac_addr_dev_path)) { fwts_uefi_mac_addr_dev_path *m = (fwts_uefi_mac_addr_dev_path*)dev_path; path = uefidump_vprintf(path, "\\MACADDR(%" PRIx8 ":%" PRIx8 ":%" PRIx8 ":%" PRIx8 ":%" PRIx8 ":%" PRIx8 ",0x%" PRIx8 ")", m->mac_addr[0], m->mac_addr[1], m->mac_addr[2], m->mac_addr[3], m->mac_addr[4], m->mac_addr[5], m->if_type); } break; case FWTS_UEFI_IPV4_DEVICE_PATH_SUBTYPE: if (dev_path_len >= sizeof(fwts_uefi_ipv4_dev_path)) { fwts_uefi_ipv4_dev_path *i = (fwts_uefi_ipv4_dev_path*)dev_path; path = uefidump_vprintf(path, "\\IPv4(" "%" PRIu8 ".%" PRIu8 ".%" PRIu8 ".%" PRIu8 "," "%" PRIu8 ".%" PRIu8 ".%" PRIu8 ".%" PRIu8 "," "%" PRIu16 ",%" PRIu16 ",%" PRIx16 ",%" PRIx8 ")", i->local_ip_addr[0], i->local_ip_addr[1], i->local_ip_addr[2], i->local_ip_addr[3], i->remote_ip_addr[0], i->remote_ip_addr[1], i->remote_ip_addr[2], i->remote_ip_addr[3], i->local_port, i->remote_port, i->protocol, i->static_ip_address); } break; case FWTS_UEFI_IPV6_DEVICE_PATH_SUBTYPE: if (dev_path_len >= sizeof(fwts_uefi_ipv6_dev_path)) { fwts_uefi_ipv6_dev_path *i = (fwts_uefi_ipv6_dev_path*)dev_path; path = uefidump_vprintf(path, "\\IPv6(" "%" PRIx8 ":%" PRIx8 ":%" PRIx8 ":%" PRIx8 ":%" PRIx8 ":%" PRIx8 ":%" PRIx8 ":%" PRIx8 "," "%" PRIx8 ":%" PRIx8 ":%" PRIx8 ":%" PRIx8 ":%" PRIx8 ":%" PRIx8 ":%" PRIx8 ":%" PRIx8 "," "%" PRIu16 ",%" PRIu16 ",%" PRIx16 ",%" PRIx8 ")", i->local_ip_addr[0], i->local_ip_addr[1], i->local_ip_addr[2], i->local_ip_addr[3], i->local_ip_addr[4], i->local_ip_addr[5], i->local_ip_addr[6], i->local_ip_addr[7], i->remote_ip_addr[0], i->remote_ip_addr[1], i->remote_ip_addr[2], i->remote_ip_addr[3], i->remote_ip_addr[4], i->remote_ip_addr[5], i->remote_ip_addr[6], i->remote_ip_addr[7], i->local_port, i->remote_port, i->protocol, i->static_ip_address); } break; case FWTS_UEFI_INFINIBAND_DEVICE_PATH_SUBTYPE: if (dev_path_len >= sizeof(fwts_uefi_infiniband_dev_path)) { fwts_uefi_infiniband_dev_path *i = (fwts_uefi_infiniband_dev_path*)dev_path; path = uefidump_vprintf(path, "\\InfiniBand(" "%" PRIx8 ",%" PRIx64 ",%" PRIx64 ",%" PRIx64 ")", i->port_gid[0], i->remote_id, i->target_port_id, i->device_id); } break; case FWTS_UEFI_UART_DEVICE_PATH_SUBTYPE: if (dev_path_len >= sizeof(fwts_uefi_uart_dev_path)) { fwts_uefi_uart_dev_path *u = (fwts_uefi_uart_dev_path*)dev_path; path = uefidump_vprintf(path, "\\UART(" "%" PRIu64 ",%" PRIu8 ",%" PRIu8 ",%" PRIu8 ")", u->baud_rate, u->data_bits, u->parity, u->stop_bits); } break; case FWTS_UEFI_VENDOR_MESSAGING_DEVICE_PATH_SUBTYPE: if (dev_path_len >= sizeof(fwts_uefi_vendor_messaging_dev_path)) { fwts_uefi_vendor_messaging_dev_path *v = (fwts_uefi_vendor_messaging_dev_path *)dev_path; size_t i; static const fwts_uefi_guid guid[] = { EFI_PC_ANSI_GUID, EFI_VT_100_GUID, EFI_VT_100_PLUS_GUID, EFI_VT_UTF8_GUID, EFI_UART_DEVICE_PATH_GUID, EFI_SAS_DEVICE_PATH_GUID }; static const char *str[] = { "PC-ANSI", "VT-100", "VT-100+", "VT-UTF8", "UARTFLOWCTRL", "SAS", "UnknownGUID" }; for (i = 0; i < sizeof(guid)/sizeof(guid[0]); i++) if (memcmp(&v->guid, &guid[i], sizeof(fwts_uefi_guid)) == 0) break; path = uefidump_vprintf(path, "\\VENDOR(%s", str[i]); if (i == 4) { uint32_t flow_control_map = v->vendor_defined_data[0] + (((uint32_t)v->vendor_defined_data[1]) << 8) + (((uint32_t)v->vendor_defined_data[2]) << 16) + (((uint32_t)v->vendor_defined_data[3] << 24)); path = uefidump_vprintf(path, ",0x%" PRIx32, flow_control_map); } if (i == 5 && dev_path_len >= sizeof(fwts_uefi_sas_messaging_dev_path)) { fwts_uefi_sas_messaging_dev_path *s = (fwts_uefi_sas_messaging_dev_path *)dev_path; path = uefidump_vprintf(path, ",0x%" PRIx64 ",0x%" PRIx64 ",0x%" PRIx16 ",0x%" PRIx16 , s->sas_addr, s->lun, s->dev_topology_info, s->rtp); } if (i == 6) path = uefidump_vprintf(path, " %08" PRIx32 "-%04" PRIx16 "-%04" PRIx16 "-%02" PRIx8 "-%02" PRIx8 "-%02" PRIx8 "-%02" PRIx8 "-%02" PRIx8 "-%02" PRIx8 "-%02" PRIx8 "-%02" PRIx8 , v->guid.info1, v->guid.info2, v->guid.info3, v->guid.info4[0], v->guid.info4[1], v->guid.info4[2], v->guid.info4[3], v->guid.info4[4], v->guid.info4[5], v->guid.info4[6], v->guid.info4[7]); path = uefidump_vprintf(path, ")"); } break; case FWTS_UEFI_FIBRE_CHANNEL_EX_DEVICE_PATH_SUBTYPE: if (dev_path_len >= sizeof(fwts_uefi_fibre_channel_ex_dev_path)) { fwts_uefi_fibre_channel_ex_dev_path *f = (fwts_uefi_fibre_channel_ex_dev_path *)dev_path; path = uefidump_vprintf(path, "\\FIBREEX(0x%" PRIx64 ",0x%" PRIx64 ")", f->wwn, f->lun); } break; case FWTS_UEFI_SATA_DEVICE_PATH_SUBTYPE: if (dev_path_len >= sizeof(fwts_uefi_sata_dev_path)) { fwts_uefi_sata_dev_path *s = (fwts_uefi_sata_dev_path *)dev_path; path = uefidump_vprintf(path, "\\SATA(0x%" PRIx16 ",0x%" PRIx16 ",0x%" PRIx16 ")", s->hbapn, s->pmpn, s->lun); } break; case FWTS_UEFI_USB_WWID_DEVICE_PATH_SUBTYPE: if (dev_path_len >= sizeof(fwts_uefi_usb_wwid_dev_path)) { fwts_uefi_usb_wwid_dev_path *u = (fwts_uefi_usb_wwid_dev_path *)dev_path; path = uefidump_vprintf(path, "\\USBWWID(0x%" PRIx16 ",0x%" PRIx16 ",0x%" PRIx16, u->interface_num, u->vendor_id, u->product_id); /* Adding Serial Number */ char *tmp; uint16_t len = u->dev_path.length[0] | (((uint16_t)u->dev_path.length[1]) << 8); if (len <= sizeof(fwts_uefi_usb_wwid_dev_path)) { path = uefidump_vprintf(path, ")"); break; } tmp = malloc((len - sizeof(fwts_uefi_usb_wwid_dev_path))/sizeof(uint16_t) + 1); if (tmp) { fwts_uefi_str16_to_str(tmp, (len - sizeof(fwts_uefi_usb_wwid_dev_path))/sizeof(uint16_t) + 1, u->serial_number); path = uefidump_vprintf(path, ",%s", tmp); free(tmp); } path = uefidump_vprintf(path, ")"); } break; case FWTS_UEFI_VLAN_DEVICE_PATH_SUBTYPE: if (dev_path_len >= sizeof(fwts_uefi_vlan_dev_path)) { fwts_uefi_vlan_dev_path *v = (fwts_uefi_vlan_dev_path *)dev_path; path = uefidump_vprintf(path, "\\VLAN(0x%" PRIx16 ")", v->vlanid); } break; case FWTS_UEFI_LOGICAL_UNIT_DEVICE_PATH_SUBTYPE: if (dev_path_len >= sizeof(fwts_uefi_logical_unit_dev_path)) { fwts_uefi_logical_unit_dev_path *l = (fwts_uefi_logical_unit_dev_path *)dev_path; path = uefidump_vprintf(path, "\\DEVICELOGICALUNIT(0x%" PRIx8 ")", l->lun); } break; case FWTS_UEFI_SAS_EX_DEVICE_PATH_SUBTYPE: if (dev_path_len >= sizeof(fwts_uefi_sas_ex_dev_path)) { fwts_uefi_sas_ex_dev_path *s = (fwts_uefi_sas_ex_dev_path *)dev_path; path = uefidump_vprintf(path, "\\SASEX(0x%" PRIx64 ",0x%" PRIx64 ",0x%" PRIx16 ",0x%" PRIx16 ")", s->sas_addr, s->lun, s->dev_topology_info, s->rtp); } break; case FWTS_UEFI_ISCSI_DEVICE_PATH_SUBTYPE: if (dev_path_len >= sizeof(fwts_uefi_iscsi_dev_path)) { fwts_uefi_iscsi_dev_path *i = (fwts_uefi_iscsi_dev_path *)dev_path; path = uefidump_vprintf(path, "\\iSCSI(0x%" PRIx16 ",0x%" PRIx16 ",0x%" PRIx64 ",0x%" PRIx16, i->protocol, i->options, i->lun, i->tpg_tag); /* Adding iSCSI target name */ uint16_t len = i->dev_path.length[0] | (((uint16_t)i->dev_path.length[1]) << 8); if (len - sizeof(fwts_uefi_iscsi_dev_path) > 223) { path = uefidump_vprintf(path, ")"); break; } path = uefidump_vprintf(path, ",%s)", i->iscsi_tn); } break; case FWTS_UEFI_NVM_EXPRESS_NAMESP_DEVICE_PATH_SUBTYPE: if (dev_path_len >= sizeof(fwts_uefi_nvm_express_namespace_dev_path)) { fwts_uefi_nvm_express_namespace_dev_path *n = (fwts_uefi_nvm_express_namespace_dev_path *)dev_path; path = uefidump_vprintf(path, "\\NVMEXPRESS(0x%" PRIx32 ",0x%" PRIx64 ")", n->namesp_id, n->ext_unique_id); } break; default: path = uefidump_vprintf(path, "\\Unknown-MESSAGING-DEV-PATH(0x%" PRIx8 ")", dev_path->subtype); break; } break; case FWTS_UEFI_MEDIA_DEVICE_PATH_TYPE: switch (dev_path->subtype) { case FWTS_UEFI_HARD_DRIVE_DEVICE_PATH_SUBTYPE: if (dev_path_len >= sizeof(fwts_uefi_hard_drive_dev_path)) { fwts_uefi_hard_drive_dev_path *h = (fwts_uefi_hard_drive_dev_path*)dev_path; path = uefidump_vprintf(path, "\\HARDDRIVE(" "%" PRIu32 ",%" PRIx64 ",%" PRIx64 "," "%02" PRIx8 "%02" PRIx8 "%02" PRIx8 "%02" PRIx8 "%02" PRIx8 "%02" PRIx8 "%02" PRIx8 "%02" PRIx8 "," "%" PRIx8 ",%" PRIx8 ")", h->partition_number, h->partition_start, h->partition_size, h->partition_signature[0], h->partition_signature[1], h->partition_signature[2], h->partition_signature[3], h->partition_signature[4], h->partition_signature[5], h->partition_signature[6], h->partition_signature[7], h->mbr_type, h->signature_type); } break; case FWTS_UEFI_CDROM_DEVICE_PATH_SUBTYPE: if (dev_path_len >= sizeof(fwts_uefi_cdrom_dev_path)) { fwts_uefi_cdrom_dev_path *c = (fwts_uefi_cdrom_dev_path*)dev_path; path = uefidump_vprintf(path, "\\CDROM(%" PRIu32 ",%" PRIx64 ",%" PRIx64 ")", c->boot_entry, c->partition_start, c->partition_size); } break; case FWTS_UEFI_VENDOR_MEDIA_DEVICE_PATH_SUBTYPE: if (dev_path_len >= sizeof(fwts_uefi_vendor_media_dev_path)) { fwts_uefi_vendor_media_dev_path *v = (fwts_uefi_vendor_media_dev_path*)dev_path; path = uefidump_vprintf(path, "\\VENDOR(" "%08" PRIx32 "-%04" PRIx16 "-%04" PRIx16 "-" "%02" PRIx8 "-%02" PRIx8 "-" "%02" PRIx8 "-%02" PRIx8 "-%02" PRIx8 "-%02" PRIx8 "-%02" PRIx8 "-%02" PRIx8 ")", v->guid.info1, v->guid.info2, v->guid.info3, v->guid.info4[0], v->guid.info4[1], v->guid.info4[2], v->guid.info4[3], v->guid.info4[4], v->guid.info4[5], v->guid.info4[6], v->guid.info4[7]); } break; case FWTS_UEFI_FILE_PATH_DEVICE_PATH_SUBTYPE: { char tmp[4096]; fwts_uefi_file_path_dev_path *f = (fwts_uefi_file_path_dev_path*)dev_path; fwts_uefi_str16_to_str(tmp, sizeof(tmp), f->path_name); path = uefidump_vprintf(path, "\\FILE('%s')", tmp); } break; case FWTS_UEFI_PROTOCOL_DEVICE_PATH_SUBTYPE: if (dev_path_len >= sizeof(fwts_media_protocol_dev_path)) { fwts_media_protocol_dev_path *m = (fwts_media_protocol_dev_path *)dev_path; path = uefidump_vprintf(path, "\\MEDIAPROTOCOL(" "%08" PRIx32 "-%04" PRIx16 "-%04" PRIx16 "-" "%02" PRIx8 "-%02" PRIx8 "-" "%02" PRIx8 "-%02" PRIx8 "-%02" PRIx8 "-%02" PRIx8 "-%02" PRIx8 "-%02" PRIx8 ")", m->protocol_guid.info1, m->protocol_guid.info2, m->protocol_guid.info3, m->protocol_guid.info4[0], m->protocol_guid.info4[1], m->protocol_guid.info4[2], m->protocol_guid.info4[3], m->protocol_guid.info4[4], m->protocol_guid.info4[5], m->protocol_guid.info4[6], m->protocol_guid.info4[7]); } break; case FWTS_UEFI_PIWG_FW_FILE_DEVICE_PATH_SUBTYPE: if (dev_path_len >= sizeof(fwts_piwg_fw_file_dev_path)) { fwts_piwg_fw_file_dev_path *p = (fwts_piwg_fw_file_dev_path *)dev_path; path = uefidump_vprintf(path, "\\FVFILE(" "%08" PRIx32 "-%04" PRIx16 "-%04" PRIx16 "-" "%02" PRIx8 "-%02" PRIx8 "-" "%02" PRIx8 "-%02" PRIx8 "-%02" PRIx8 "-%02" PRIx8 "-%02" PRIx8 "-%02" PRIx8 ")", p->fw_file_name.info1, p->fw_file_name.info2, p->fw_file_name.info3, p->fw_file_name.info4[0], p->fw_file_name.info4[1], p->fw_file_name.info4[2], p->fw_file_name.info4[3], p->fw_file_name.info4[4], p->fw_file_name.info4[5], p->fw_file_name.info4[6], p->fw_file_name.info4[7]); } break; case FWTS_UEFI_PIWG_FW_VOLUME_DEVICE_PATH_SUBTYPE: if (dev_path_len >= sizeof(fwts_piwg_fw_volume_dev_path)) { fwts_piwg_fw_volume_dev_path *p = (fwts_piwg_fw_volume_dev_path *)dev_path; path = uefidump_vprintf(path, "\\FV(" "%08" PRIx32 "-%04" PRIx16 "-%04" PRIx16 "-" "%02" PRIx8 "-%02" PRIx8 "-" "%02" PRIx8 "-%02" PRIx8 "-%02" PRIx8 "-%02" PRIx8 "-%02" PRIx8 "-%02" PRIx8 ")", p->fw_volume_name.info1, p->fw_volume_name.info2, p->fw_volume_name.info3, p->fw_volume_name.info4[0], p->fw_volume_name.info4[1], p->fw_volume_name.info4[2], p->fw_volume_name.info4[3], p->fw_volume_name.info4[4], p->fw_volume_name.info4[5], p->fw_volume_name.info4[6], p->fw_volume_name.info4[7]); } break; default: path = uefidump_vprintf(path, "\\Unknown-MEDIA-DEV-PATH(0x%" PRIx8 ")", dev_path->subtype); break; } break; case FWTS_UEFI_BIOS_DEVICE_PATH_TYPE: switch (dev_path->subtype) { case FWTS_UEFI_BIOS_DEVICE_PATH_SUBTYPE: { fwts_uefi_bios_dev_path *b = (fwts_uefi_bios_dev_path*)dev_path; path = uefidump_vprintf(path, "\\BIOS(%" PRIx16 ",%" PRIx16 ",%s)", b->device_type, b->status_flags, b->description); } break; default: path = uefidump_vprintf(path, "\\Unknown-BIOS-DEV-PATH(0x%" PRIx8 ")", dev_path->subtype); break; } break; default: path = uefidump_vprintf(path, "\\Unknown-TYPE(0x%" PRIx8 ")", dev_path->type); break; } /* Not end? - collect more */ if (!((dev_path->type & 0x7f) == (FWTS_UEFI_END_DEV_PATH_TYPE) && (dev_path->subtype == FWTS_UEFI_END_ENTIRE_DEV_PATH_SUBTYPE))) { uint16_t len = dev_path->length[0] | (((uint16_t)dev_path->length[1])<<8); if (len > 0) { dev_path = (fwts_uefi_dev_path*)((char *)dev_path + len); path = uefidump_build_dev_path(path, dev_path, dev_path_len - len); } } return path; } static void uefidump_info_dev_path(fwts_framework *fw, fwts_uefi_var *var) { char *path; path = uefidump_build_dev_path(NULL, (fwts_uefi_dev_path*)var->data, var->datalen); fwts_log_info_verbatum(fw, " Device Path: %s.", path); free(path); } static void uefidump_info_lang(fwts_framework *fw, fwts_uefi_var *var) { uint8_t *data = (uint8_t*)var->data; fwts_log_info_verbatum(fw, " Language: %c%c%c%c.", data[0], data[1], data[2], data[3]); } static void uefidump_info_langcodes(fwts_framework *fw, fwts_uefi_var *var) { char buffer[2048]; char *dst = buffer; char *data = (char*)var->data; for (;;) { *dst++ = *data++; *dst++ = *data++; *dst++ = *data++; if (*data < ' ') break; *dst++ = ','; } *dst = '\0'; fwts_log_info_verbatum(fw, " Language Codes: %s.", buffer); } static void uefidump_info_platform_lang(fwts_framework *fw, fwts_uefi_var *var) { uint8_t *data = (uint8_t*)var->data; fwts_log_info_verbatum(fw, " Platform Language: %c%c%c%c%c%c.", data[0], data[1], data[2], data[3], data[4], data[5]); } static void uefidump_info_platform_langcodes(fwts_framework *fw, fwts_uefi_var *var) { char buffer[2048]; char *dst = buffer; char *data = (char*)var->data; for (;;) { if (*data < ' ') break; if (*data == ';') *dst++ = ','; else *dst++ = *data; data++; } *dst = '\0'; fwts_log_info_verbatum(fw, " Platform Language Codes: %s.", buffer); } static void uefidump_info_timeout(fwts_framework *fw, fwts_uefi_var *var) { if (var->datalen >= sizeof(uint16_t)) { uint16_t *data = (uint16_t*)var->data; fwts_log_info_verbatum(fw, " Timeout: %" PRId16 " seconds.", *data); } } static void uefidump_info_bootcurrent(fwts_framework *fw, fwts_uefi_var *var) { if (var->datalen >= sizeof(uint16_t)) { uint16_t *data = (uint16_t *)var->data; fwts_log_info_verbatum(fw, " BootCurrent: 0x%4.4" PRIx16 ".", *data); } } static void uefidump_info_bootnext(fwts_framework *fw, fwts_uefi_var *var) { if (var->datalen >= sizeof(uint16_t)) { uint16_t *data = (uint16_t *)var->data; fwts_log_info_verbatum(fw, " BootNext: 0x%4.4" PRIx16 ".", *data); } } static void uefidump_info_bootoptionsupport(fwts_framework *fw, fwts_uefi_var *var) { if (var->datalen >= sizeof(uint16_t)) { uint16_t *data = (uint16_t *)var->data; fwts_log_info_verbatum(fw, " BootOptionSupport: 0x%4.4" PRIx16 ".", *data); } } static void uefidump_info_bootorder(fwts_framework *fw, fwts_uefi_var *var) { uint16_t *data = (uint16_t*)var->data; int i; int n = (int)var->datalen / sizeof(uint16_t); char *str = NULL; for (i = 0; i < n; i++) { str = uefidump_vprintf(str, "0x%04" PRIx16 "%s", *data++, i < (n - 1) ? "," : ""); } fwts_log_info_verbatum(fw, " Boot Order: %s.", str); free(str); } static void uefidump_info_bootdev(fwts_framework *fw, fwts_uefi_var *var) { fwts_uefi_load_option *load_option; char tmp[2048]; char *path; size_t len, offset; if (var->datalen < sizeof(fwts_uefi_load_option)) return; load_option = (fwts_uefi_load_option *)var->data; fwts_log_info_verbatum(fw, " Active: %s\n", (load_option->attributes & FWTS_UEFI_LOAD_OPTION_ACTIVE) ? "Yes" : "No"); fwts_uefi_str16_to_str(tmp, sizeof(tmp), load_option->description); len = fwts_uefi_str16len(load_option->description); fwts_log_info_verbatum(fw, " Info: %s\n", tmp); /* Skip over description to get to packed path, unpack path and print */ offset = sizeof(load_option->attributes) + sizeof(load_option->file_path_list_length) + (sizeof(uint16_t) * (len + 1)); path = uefidump_build_dev_path(NULL, (fwts_uefi_dev_path *)(var->data + offset), var->datalen - offset); fwts_log_info_verbatum(fw, " Path: %s.", path); free(path); } /* * Dump kernel oops log messages */ static void uefidump_info_dump_type0(fwts_framework *fw, fwts_uefi_var *var) { char *ptr = (char*)var->data; size_t len = var->datalen; while (len && *ptr) { char *start = ptr; while (len && *ptr && *ptr != '\n') { ptr++; len--; } if (*ptr == '\n') { *ptr++ = '\0'; len--; fwts_log_info_verbatum(fw, " KLog: %s.", start); } } } static void uefidump_info_secure_boot(fwts_framework *fw, fwts_uefi_var *var) { if (var->datalen != 1) { /* Should be 1 byte, of not, dump it out as a hex dump */ uefidump_var_hexdump(fw, var); } else { char *mode; uint8_t value = (uint8_t)var->data[0]; switch (value) { case 0: mode = " (Secure Boot Mode Off)"; break; case 1: mode = " (Secure Boot Mode On)"; break; default: mode = ""; break; } fwts_log_info_verbatum(fw, " Value: 0x%2.2x%s.", value, mode); } } static void uefidump_info_setup_mode(fwts_framework *fw, fwts_uefi_var *var) { if (var->datalen != 1) { /* Should be 1 byte, of not, dump it out as a hex dump */ uefidump_var_hexdump(fw, var); } else { char *mode; uint8_t value = (uint8_t)var->data[0]; switch (value) { case 0: mode = " (User Mode)"; break; case 1: mode = " (Setup Mode)"; break; default: mode = ""; break; } fwts_log_info_verbatum(fw, " Value: 0x%2.2" PRIx8 "%s.", value, mode); } } /* * See TCG Platform Reset Attack Mitigation Specification, Revision 1.0, * section 5. */ static void uefidump_info_morc(fwts_framework *fw, fwts_uefi_var *var) { if (var->datalen != 1) { /* Should be 1 byte, of not, dump it out as a hex dump */ uefidump_var_hexdump(fw, var); } else { char *mode; uint8_t value = (uint8_t)var->data[0]; switch (value & 1) { case 0: mode = " (Firmware should not clear memory on reboot)"; break; case 1: mode = " (Firmware should clear memory on reboot)"; break; default: mode = ""; break; } fwts_log_info_verbatum(fw, " Value: 0x%2.2" PRIx8 "%s.", value, mode); } } /* * Dump ACPI global variable address */ static void uefidump_info_acpi_global_variable(fwts_framework *fw, fwts_uefi_var *var) { if (var->datalen != 8) { /* Should be 8 bytes, of not, dump it out as a hex dump */ uefidump_var_hexdump(fw, var); } else { uint64_t value; memcpy(&value, var->data, sizeof(uint64_t)); fwts_log_info_verbatum(fw, " ACPI Global Variable Address: 0x%16.16" PRIx64 ".", value); } } /* * Dump Supported Signature GUIDs */ static void uefidump_info_signature_support(fwts_framework *fw, fwts_uefi_var *var) { if (var->datalen % 16) { /* Should be multiple of 16 bytes, of not, dump it out as a hex dump */ uefidump_var_hexdump(fw, var); } else { /* Signatures are an array of GUIDs */ uint8_t *data = var->data; char guid_str[37]; if (var->datalen) fwts_log_info_verbatum(fw, " Signature GUIDs:"); while (data - var->data < (ptrdiff_t)var->datalen) { fwts_guid_buf_to_str(data, guid_str, sizeof(guid_str)); fwts_log_info_verbatum(fw, " %s", guid_str); data += 16; } } } static void uefidump_info_hwerrrec_support(fwts_framework *fw, fwts_uefi_var *var) { if (var->datalen != 2) { /* Should be 2 byte, of not, dump it out as a hex dump */ uefidump_var_hexdump(fw, var); } else { char *support; uint16_t *value = (uint16_t *)var->data; switch (*value) { case 0: support = " (Not support for Hardware Error Record Persistence)"; break; case 1: support = " (Support for Hardware Error Record Persistence)"; break; default: support = " (reserved value)"; break; } fwts_log_info_verbatum(fw, " Value: 0x%4.4" PRIx16 "%s.", *value, support); } } static void uefidump_info_osindications_supported(fwts_framework *fw, fwts_uefi_var *var) { if (var->datalen != 8) { /* Should be 8 bytes, of not, dump it out as a hex dump */ uefidump_var_hexdump(fw, var); } else { uint64_t value; char str[300]; memcpy(&value, var->data, sizeof(uint64_t)); *str = 0; if (value & EFI_OS_INDICATIONS_BOOT_TO_FW_UI) strcat(str, "EFI_OS_INDICATIONS_BOOT_TO_FW_UI"); if (value & EFI_OS_INDICATIONS_TIMESTAMP_REVOCATION) { if (*str) strcat(str, ","); strcat(str, "EFI_OS_INDICATIONS_TIMESTAMP_REVOCATION"); } if (value & EFI_OS_INDICATIONS_FILE_CAPSULE_DELIVERY_SUPPORTED) { if (*str) strcat(str, ","); strcat(str, "EFI_OS_INDICATIONS_FILE_CAPSULE_DELIVERY_SUPPORTED"); } if (value & EFI_OS_INDICATIONS_FMP_CAPSULE_SUPPORTED) { if (*str) strcat(str, ","); strcat(str, "EFI_OS_INDICATIONS_FMP_CAPSULE_SUPPORTED"); } if (value & EFI_OS_INDICATIONS_CAPSULE_RESULT_VAR_SUPPORTED) { if (*str) strcat(str, ","); strcat(str, "EFI_OS_INDICATIONS_CAPSULE_RESULT_VAR_SUPPORTED"); } fwts_log_info_verbatum(fw, " Value: 0x%16.16" PRIx64 " (%s).", value, str); } } static void uefidump_info_vendor_keys(fwts_framework *fw, fwts_uefi_var *var) { if (var->datalen >= sizeof(uint8_t)) { uint8_t value = (uint8_t)var->data[0]; fwts_log_info_verbatum(fw, " Value: 0x%2.2" PRIx8 ".", value); } } static void uefidump_info_driverorder(fwts_framework *fw, fwts_uefi_var *var) { uint16_t *data = (uint16_t*)var->data; size_t i, n = var->datalen / sizeof(uint16_t); char *str = NULL; for (i = 0; i < n; i++) { str = uefidump_vprintf(str, "0x%04" PRIx16 "%s", *data++, i < (n - 1) ? "," : ""); } fwts_log_info_verbatum(fw, " Driver Order: %s.", str); free(str); } static void uefidump_info_driverdev(fwts_framework *fw, fwts_uefi_var *var) { fwts_uefi_load_option *load_option; char *path; char *tmp; size_t len, offset; if (var->datalen < sizeof(fwts_uefi_load_option)) return; load_option = (fwts_uefi_load_option *)var->data; fwts_log_info_verbatum(fw, " Force Reconnect: %s\n", (load_option->attributes & FWTS_UEFI_LOAD_OPTION_FORCE_RECONNECT) ? "Yes" : "No"); len = fwts_uefi_str16len(load_option->description); if (len != 0) { tmp = malloc(len + 1); if (tmp) { fwts_uefi_str16_to_str(tmp, len + 1, load_option->description); fwts_log_info_verbatum(fw, " Info: %s\n", tmp); free(tmp); } } if (load_option->file_path_list_length != 0) { /* Skip over description to get to packed path, unpack path and print */ offset = sizeof(load_option->attributes) + sizeof(load_option->file_path_list_length) + (sizeof(uint16_t) * (len + 1)); path = uefidump_build_dev_path(NULL, (fwts_uefi_dev_path *)(var->data + offset), var->datalen - offset); fwts_log_info_verbatum(fw, " Path: %s.", path); free(path); } } static void uefidump_info_keyoption(fwts_framework *fw, fwts_uefi_var *var) { fwts_uefi_key_option *key_option = (fwts_uefi_key_option *)var->data; fwts_uefi_input_key *inputkey = (fwts_uefi_input_key *) (((uint8_t *) var->data) + sizeof (fwts_uefi_key_option)); char str[300]; size_t keyoptionsize, inputkeycount, index = 0; *str = 0; if (var->datalen < sizeof (fwts_uefi_key_option)) { uefidump_var_hexdump(fw, var); return; } if (key_option->keydata & (1 << 8)) strcat(str, "ShiftPressed"); if (key_option->keydata & (1 << 9)) { if (*str) strcat(str, ","); strcat(str, "ControlPressed"); } if (key_option->keydata & (1 << 10)) { if (*str) strcat(str, ","); strcat(str, "AltPressed"); } if (key_option->keydata &(1 << 11)) { if (*str) strcat(str, ","); strcat(str, "LogoPressed"); } if (key_option->keydata & (1 << 12)) { if (*str) strcat(str, ","); strcat(str, "MenuPressed"); } if (key_option->keydata & (1 << 13)) { if (*str) strcat(str, ","); strcat(str, "SysReqPressed"); } if (*str != 0) fwts_log_info_verbatum(fw, " PackedValue: 0x%8.8" PRIx32 " (%s).", key_option->keydata, str); else fwts_log_info_verbatum(fw, " PackedValue: 0x%8.8" PRIx32 ".", key_option->keydata); fwts_log_info_verbatum(fw, " BootOptionCrc: 0x%8.8" PRIx32 ".", key_option->bootoptioncrc); fwts_log_info_verbatum(fw, " BootOption: %4.4" PRIx16 ".", key_option->bootoption); inputkeycount = (key_option->keydata & 0xC0000000) >> 30; for (index = 0; index < inputkeycount; index++) { fwts_log_info_verbatum(fw, " ScanCode: 0x%4.4" PRIx16 ".", inputkey[index].scancode); fwts_log_info_verbatum(fw, " UnicodeChar: 0x%4.4" PRIx16 ".", inputkey[index].unicodechar); } keyoptionsize = sizeof (fwts_uefi_key_option) + inputkeycount * sizeof (fwts_uefi_input_key); /* * there are extra data following the keyoption data structure which the firmware is using, * dump all data for reference */ if (var->datalen > keyoptionsize) { uefidump_var_hexdump(fw, var); } } #define GUID_MAP(x) { x, # x } static void uefidump_info_signaturedatabase(fwts_framework *fw, fwts_uefi_var *var) { fwts_uefi_signature_list *signature_list; char guid_str[37]; size_t offset = 0, list_start = 0; size_t i; typedef struct { const fwts_uefi_guid guid; const char *str; } guid_map; static const guid_map guids[] = { GUID_MAP(EFI_CERT_X509_GUID), GUID_MAP(EFI_CERT_SHA256_GUID), GUID_MAP(EFI_CERT_RSA2048_GUID), GUID_MAP(EFI_CERT_RSA2048_SHA256_GUID), GUID_MAP(EFI_CERT_SHA1_GUID), GUID_MAP(EFI_CERT_RSA2048_SHA1_GUID), GUID_MAP(EFI_CERT_SHA224_GUID), GUID_MAP(EFI_CERT_SHA384_GUID), GUID_MAP(EFI_CERT_SHA512_GUID), GUID_MAP(EFI_CERT_X509_SHA256_GUID), GUID_MAP(EFI_CERT_X509_SHA384_GUID), GUID_MAP(EFI_CERT_X509_SHA512_GUID), { { 0, 0, 0, { 0, }}, NULL } }; if (var->datalen < sizeof(fwts_uefi_signature_list)) return; do { signature_list = (fwts_uefi_signature_list *)(var->data + list_start); fwts_guid_buf_to_str(var->data, guid_str, sizeof(guid_str)); const char *str = "Unknown GUID"; for (i = 0; guids[i].str; i++) if (!memcmp(var->data, &guids[i].guid, sizeof(fwts_uefi_guid))) { str = guids[i].str; break; } fwts_log_info_verbatum(fw, " SignatureType: %s (%s)", guid_str, str); fwts_log_info_verbatum(fw, " SignatureListSize: 0x%" PRIx32, signature_list->signaturelistsize); fwts_log_info_verbatum(fw, " SignatureHeaderSize: 0x%" PRIx32, signature_list->signatureheadersize); fwts_log_info_verbatum(fw, " SignatureSize: 0x%" PRIx32, signature_list->signaturesize); offset = list_start + sizeof (fwts_uefi_signature_list); if (signature_list->signatureheadersize > 0) { fwts_log_info_verbatum(fw, " SignatureHeader:"); uefidump_data_hexdump(fw, (uint8_t *)(var->data + offset), signature_list->signatureheadersize); } offset += signature_list->signatureheadersize; while ((signature_list->signaturelistsize - offset + list_start) > 0) { if ((signature_list->signaturelistsize - offset + list_start) >= signature_list->signaturesize) { fwts_guid_buf_to_str((uint8_t *)(var->data + offset), guid_str, sizeof(guid_str)); fwts_log_info_verbatum(fw, " SignatureOwner: %s", guid_str); offset += sizeof(fwts_uefi_guid); fwts_log_info_verbatum(fw, " SignatureData:"); uefidump_data_hexdump(fw, (uint8_t *)(var->data + offset), signature_list->signaturesize - sizeof(fwts_uefi_guid)); offset += signature_list->signaturesize - sizeof(fwts_uefi_guid); } else { /* have Signature data left, but not correspond to the SignatureSize, just dump raw data */ fwts_log_info_verbatum(fw, " Data:"); uefidump_data_hexdump(fw, (uint8_t *)(var->data + offset), (signature_list->signaturelistsize - offset + list_start)); break; } } list_start += signature_list->signaturelistsize; } while ((var->datalen - list_start) > sizeof(fwts_uefi_signature_list)); } static uefidump_info uefidump_info_table[] = { { "PlatformLangCodes", uefidump_info_platform_langcodes }, { "PlatformLang", uefidump_info_platform_lang }, { "BootOptionSupport", uefidump_info_bootoptionsupport }, { "BootCurrent", uefidump_info_bootcurrent }, { "BootOrder", uefidump_info_bootorder }, { "BootNext", uefidump_info_bootnext }, { "ConInDev", uefidump_info_dev_path }, { "ConIn", uefidump_info_dev_path }, { "ConOutDev", uefidump_info_dev_path }, { "ConOut", uefidump_info_dev_path }, { "ConErrDev", uefidump_info_dev_path }, { "ErrOutDev", uefidump_info_dev_path }, { "ErrOut", uefidump_info_dev_path }, { "LangCodes", uefidump_info_langcodes }, { "Lang", uefidump_info_lang }, { "Timeout", uefidump_info_timeout }, { "dump-type0-", uefidump_info_dump_type0 }, { "SecureBoot", uefidump_info_secure_boot }, { "SetupMode", uefidump_info_setup_mode }, { "MemoryOverwriteRequestControl", uefidump_info_morc }, { "AcpiGlobalVariable", uefidump_info_acpi_global_variable }, { "SignatureSupport", uefidump_info_signature_support }, { "HwErrRecSupport", uefidump_info_hwerrrec_support }, { "OsIndicationsSupported", uefidump_info_osindications_supported }, { "VendorKeys", uefidump_info_vendor_keys }, { "DriverOrder", uefidump_info_driverorder }, { "db", uefidump_info_signaturedatabase }, { "KEK", uefidump_info_signaturedatabase }, { "PK", uefidump_info_signaturedatabase }, { NULL, NULL } }; static void uefidump_var(fwts_framework *fw, fwts_uefi_var *var) { char varname[512]; char guid_str[37]; uefidump_info *info; fwts_uefi_get_varname(varname, sizeof(varname), var); fwts_log_info_verbatum(fw, "Name: %s.", varname); fwts_guid_buf_to_str(var->guid, guid_str, sizeof(guid_str)); fwts_log_info_verbatum(fw, " GUID: %s", guid_str); fwts_log_info_verbatum(fw, " Attr: 0x%x (%s).", var->attributes, fwts_uefi_attribute_info(var->attributes)); /* If we've got an appropriate per variable dump mechanism, use this */ for (info = uefidump_info_table; info->description != NULL; info++) { if (strncmp(varname, info->description, strlen(info->description)) == 0) { info->func(fw, var); return; } } /* Check the boot load option Boot####. #### is a printed hex value */ if ((strlen(varname) == 8) && (strncmp(varname, "Boot", 4) == 0) && isxdigit(varname[4]) && isxdigit(varname[5]) && isxdigit(varname[6]) && isxdigit(varname[7])) { uefidump_info_bootdev(fw, var); return; } /* Check the driver load option Driver####. #### is a printed hex value */ if ((strlen(varname) == 10) && (strncmp(varname, "Driver", 6) == 0) && isxdigit(varname[6]) && isxdigit(varname[7]) && isxdigit(varname[8]) && isxdigit(varname[9])) { uefidump_info_driverdev(fw, var); return; } /* Check the key option key####. #### is a printed hex value */ if ((strlen(varname) == 7) && (strncmp(varname, "Key", 3) == 0) && isxdigit(varname[3]) && isxdigit(varname[4]) && isxdigit(varname[5]) && isxdigit(varname[6])) { uefidump_info_keyoption(fw, var); return; } /* otherwise just do a plain old hex dump */ uefidump_var_hexdump(fw, var); } static int uefidump_init(fwts_framework *fw) { if (fwts_firmware_detect() != FWTS_FIRMWARE_UEFI) { fwts_log_info(fw, "Cannot detect any UEFI firmware. Aborted."); return FWTS_ABORTED; } return FWTS_OK; } static int uefidump_test1(fwts_framework *fw) { fwts_list name_list; if (fwts_uefi_get_variable_names(&name_list) == FWTS_ERROR) { fwts_log_info(fw, "Cannot find any UEFI variables."); } else { fwts_list_link *item; fwts_list_foreach(item, &name_list) { fwts_uefi_var var; char *name = fwts_list_data(char *, item); if (fwts_uefi_get_variable(name, &var) == FWTS_OK) { uefidump_var(fw, &var); fwts_uefi_free_variable(&var); fwts_log_nl(fw); } } } fwts_uefi_free_variable_names(&name_list); return FWTS_OK; } static fwts_framework_minor_test uefidump_tests[] = { { uefidump_test1, "Dump UEFI Variables." }, { NULL, NULL } }; static fwts_framework_ops uefidump_ops = { .description = "Dump UEFI variables.", .init = uefidump_init, .minor_tests = uefidump_tests }; FWTS_REGISTER("uefidump", &uefidump_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_UTILS | FWTS_FLAG_ROOT_PRIV); src/uefi/uefirtmisc/000077500000000000000000000000001231470457100147535ustar00rootroot00000000000000src/uefi/uefirtmisc/uefirtmisc.c000066400000000000000000000165261231470457100173030ustar00rootroot00000000000000/* * Copyright (C) 2013-2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #include #include #include #include #include #include "fwts.h" #include "fwts_uefi.h" #include "efi_runtime.h" #include "fwts_efi_module.h" #define CAPSULE_FLAGS_PERSIST_ACROSS_RESET 0x00010000 #define CAPSULE_FLAGS_POPULATE_SYSTEM_TABLE 0x00020000 #define CAPSULE_FLAGS_INITIATE_RESET 0x00040000 #define EFI_CAPSULE_GUID \ { \ 0x3B6686BD, 0x0D76, 0x4030, {0xB7, 0x0E, 0xB5, \ 0x51, 0x9E, 0x2F, 0xC5, 0xA0} \ } static int fd; EFI_GUID gEfiCapsuleHeaderGuid = EFI_CAPSULE_GUID; static int uefirtmisc_init(fwts_framework *fw) { if (fwts_firmware_detect() != FWTS_FIRMWARE_UEFI) { fwts_log_info(fw, "Cannot detect any UEFI firmware. Aborted."); return FWTS_ABORTED; } if (fwts_lib_efi_runtime_load_module(fw) != FWTS_OK) { fwts_log_info(fw, "Cannot load efi_runtime module. Aborted."); return FWTS_ABORTED; } fd = open("/dev/efi_runtime", O_RDONLY); if (fd == -1) { fwts_log_info(fw, "Cannot open efi_runtime driver. Aborted."); return FWTS_ABORTED; } return FWTS_OK; } static int uefirtmisc_deinit(fwts_framework *fw) { FWTS_UNUSED(fw); close(fd); fwts_lib_efi_runtime_unload_module(fw); return FWTS_OK; } static int getnexthighmonotoniccount_test(fwts_framework *fw, uint32_t multitesttime) { long ioret; uint64_t status; struct efi_getnexthighmonotoniccount getnexthighmonotoniccount; uint32_t highcount; uint32_t i; getnexthighmonotoniccount.HighCount = &highcount; getnexthighmonotoniccount.status = &status; for (i = 0; i < multitesttime; i++) { ioret = ioctl(fd, EFI_RUNTIME_GET_NEXTHIGHMONOTONICCOUNT, &getnexthighmonotoniccount); if (ioret == -1) { fwts_failed(fw, LOG_LEVEL_HIGH, "UEFIRuntimeGetNextHighMonotonicCount", "Failed to get high monotonic count with UEFI runtime service."); fwts_uefi_print_status_info(fw, status); return FWTS_ERROR; } } return FWTS_OK; } static int querycapsulecapabilities_test(fwts_framework *fw, uint32_t multitesttime, uint32_t flag) { long ioret; uint64_t status; uint32_t i; struct efi_querycapsulecapabilities querycapsulecapabilities; EFI_RESET_TYPE resettype; EFI_CAPSULE_HEADER *pcapsuleheaderarray[2]; EFI_CAPSULE_HEADER capsuleheader; uint64_t maxcapsulesize; uint64_t capsulecount; pcapsuleheaderarray[0] = &capsuleheader; pcapsuleheaderarray[1] = NULL; pcapsuleheaderarray[0]->CapsuleGuid = gEfiCapsuleHeaderGuid; pcapsuleheaderarray[0]->CapsuleImageSize = sizeof(EFI_CAPSULE_HEADER); pcapsuleheaderarray[0]->HeaderSize = sizeof(EFI_CAPSULE_HEADER); pcapsuleheaderarray[0]->Flags = flag; querycapsulecapabilities.status = &status; querycapsulecapabilities.CapsuleHeaderArray = pcapsuleheaderarray; capsulecount = 1; querycapsulecapabilities.CapsuleCount = capsulecount; querycapsulecapabilities.MaximumCapsuleSize = &maxcapsulesize; querycapsulecapabilities.ResetType = &resettype; for (i = 0; i < multitesttime; i++) { ioret = ioctl(fd, EFI_RUNTIME_QUERY_CAPSULECAPABILITIES, &querycapsulecapabilities); if (ioret == -1) { if (status == EFI_UNSUPPORTED) { fwts_skipped(fw, "Not support the UEFI QueryCapsuleCapabilities runtime interface" " with flag value 0x%" PRIx32 ": cannot test.", flag); fwts_advice(fw, "Firmware also needs to check if the revision of system table is correct or not." " Linux kernel returns EFI_UNSUPPORTED as well, if the FirmwareRevision" " of system table is less than EFI_2_00_SYSTEM_TABLE_REVISION."); return FWTS_SKIP; } else { fwts_failed(fw, LOG_LEVEL_HIGH, "UEFIRuntimeQueryCapsuleCapabilities", "Failed to query capsule capabilities with UEFI runtime service" " with flag value 0x%" PRIx32 ".", flag); fwts_uefi_print_status_info(fw, status); return FWTS_ERROR; } } } return FWTS_OK; } static int uefirtmisc_test1(fwts_framework *fw) { int ret; uint32_t multitesttime = 1; uint32_t i; uint32_t flag[] = { 0, CAPSULE_FLAGS_PERSIST_ACROSS_RESET, CAPSULE_FLAGS_PERSIST_ACROSS_RESET | CAPSULE_FLAGS_POPULATE_SYSTEM_TABLE, CAPSULE_FLAGS_PERSIST_ACROSS_RESET | CAPSULE_FLAGS_INITIATE_RESET, CAPSULE_FLAGS_PERSIST_ACROSS_RESET | CAPSULE_FLAGS_POPULATE_SYSTEM_TABLE | CAPSULE_FLAGS_INITIATE_RESET}; fwts_log_info(fw, "Testing UEFI runtime service GetNextHighMonotonicCount interface."); ret = getnexthighmonotoniccount_test(fw, multitesttime); if (ret != FWTS_OK) return ret; fwts_passed(fw, "UEFI runtime service GetNextHighMonotonicCount interface test passed."); fwts_log_info(fw, "Testing UEFI runtime service QueryCapsuleCapabilities interface."); for (i = 0; i < (sizeof(flag)/(sizeof flag[0])); i++) { ret = querycapsulecapabilities_test(fw, multitesttime, flag[i]); if (ret == FWTS_SKIP) continue; if (ret != FWTS_OK) return ret; fwts_passed(fw, "UEFI runtime service QueryCapsuleCapabilities interface test with flag value 0x%"PRIx32 " passed.", flag[i]); } return FWTS_OK; } static int uefirtmisc_test2(fwts_framework *fw) { int ret; uint32_t multitesttime = 512; uint32_t i; uint32_t flag[] = { 0, CAPSULE_FLAGS_PERSIST_ACROSS_RESET, CAPSULE_FLAGS_PERSIST_ACROSS_RESET | CAPSULE_FLAGS_POPULATE_SYSTEM_TABLE, CAPSULE_FLAGS_PERSIST_ACROSS_RESET | CAPSULE_FLAGS_INITIATE_RESET, CAPSULE_FLAGS_PERSIST_ACROSS_RESET | CAPSULE_FLAGS_POPULATE_SYSTEM_TABLE | CAPSULE_FLAGS_INITIATE_RESET}; fwts_log_info(fw, "Stress testing for UEFI runtime service GetNextHighMonotonicCount interface."); ret = getnexthighmonotoniccount_test(fw, multitesttime); if (ret != FWTS_OK) return ret; fwts_passed(fw, "UEFI runtime service GetNextHighMonotonicCount interface stress test passed."); fwts_log_info(fw, "Stress testing UEFI runtime service QueryCapsuleCapabilities interface."); for (i = 0; i < (sizeof(flag)/(sizeof flag[0])); i++) { ret = querycapsulecapabilities_test(fw, multitesttime, flag[i]); if (ret == FWTS_SKIP) continue; if (ret != FWTS_OK) return ret; fwts_passed(fw, "UEFI runtime service QueryCapsuleCapabilities interface stress test with flag value 0x%" PRIx32 " passed.", flag[i]); } return FWTS_OK; } static fwts_framework_minor_test uefirtmisc_tests[] = { { uefirtmisc_test1, "Test for UEFI miscellaneous runtime service interfaces." }, { uefirtmisc_test2, "Stress test for UEFI miscellaneous runtime service interfaces." }, { NULL, NULL } }; static fwts_framework_ops uefirtmisc_ops = { .description = "UEFI miscellaneous runtime service interface tests.", .init = uefirtmisc_init, .deinit = uefirtmisc_deinit, .minor_tests = uefirtmisc_tests }; FWTS_REGISTER("uefirtmisc", &uefirtmisc_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_TEST_UEFI | FWTS_FLAG_UNSAFE | FWTS_FLAG_ROOT_PRIV); src/uefi/uefirttime/000077500000000000000000000000001231470457100147565ustar00rootroot00000000000000src/uefi/uefirttime/uefirttime.c000066400000000000000000000316711231470457100173070ustar00rootroot00000000000000/* * Copyright (C) 2012-2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #include #include #include #include #include #include "fwts.h" #include "fwts_uefi.h" #include "efi_runtime.h" #include "fwts_efi_module.h" #define IS_LEAP(year) \ ((year) % 4 == 0 && ((year) % 100 != 0 || (year) % 400 == 0)) static int fd; static uint32_t dayofmonth[12] = {31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; static bool dayvalid(EFI_TIME *Time) { if (Time->Day < 1) return false; if (Time->Day > dayofmonth[Time->Month - 1]) return false; /* check month 2 */ if (Time->Month == 2 && (!IS_LEAP(Time->Year) && Time->Day > 28)) return false; return true; } static bool checktimefields(fwts_framework *fw, EFI_TIME *Time) { if (Time->Year < 1900 || Time->Year > 9999) { fwts_failed(fw, LOG_LEVEL_HIGH, "UEFIRuntimeTimeFieldBadYear", "Time returned an invalid year %" PRIu16 ", should be between 1900 and 9999.", Time->Year); return false; } if (Time->Month < 1 || Time->Month > 12) { fwts_failed(fw, LOG_LEVEL_HIGH, "UEFIRuntimeTimeFieldBadMonth", "Time returned an invalid month %" PRIu8 ", should be between 1 and 12.", Time->Month); return false; } if (!dayvalid(Time)) { fwts_failed(fw, LOG_LEVEL_HIGH, "UEFIRuntimeTimeFieldBadDay", "Time returned an invalid day %" PRIu8 ", should be between 1 and 28-31 depends on month/year.", Time->Day); return false; } if (Time->Hour > 23) { fwts_failed(fw, LOG_LEVEL_HIGH, "UEFIRuntimeTimeFieldBadHour", "Time returned an invalid hour %" PRIu8 ", should be between 0 and 23.", Time->Hour); return false; } if (Time->Minute > 59) { fwts_failed(fw, LOG_LEVEL_HIGH, "UEFIRuntimeTimeFieldBadMinute", "Time returned an invalid minute %" PRIu8 ", should be between 0 and 59.", Time->Minute); return false; } if (Time->Second > 59) { fwts_failed(fw, LOG_LEVEL_HIGH, "UEFIRuntimeTimeFieldBadSecond", "Time returned an invalid second %" PRIu8 ", should be between 0 and 59.", Time->Second); return false; } if (Time->Nanosecond > 999999999) { fwts_failed(fw, LOG_LEVEL_HIGH, "UEFIRuntimeTimeFieldBadNanosecond", "Time returned an invalid nanosecond %" PRIu32 ", should be between 0 and 999999999.", Time->Nanosecond); return false; } if (!(Time->TimeZone == FWTS_UEFI_UNSPECIFIED_TIMEZONE || (Time->TimeZone >= -1440 && Time->TimeZone <= 1440))) { fwts_failed(fw, LOG_LEVEL_HIGH, "UEFIRuntimeTimeFieldBadTimezone", "Time returned an invalid timezone %" PRId16 ", should be between -1440 and 1440 or 2047.", Time->TimeZone); return false; } if (Time->Daylight & (~(FWTS_UEFI_TIME_ADJUST_DAYLIGHT | FWTS_UEFI_TIME_IN_DAYLIGHT))) { fwts_failed(fw, LOG_LEVEL_HIGH, "UEFIRuntimeTimeFieldBadDaylight", "Time returned an invalid daylight %" PRIu8 ", all other bits except UEFI_TIME_IN_DAYLIGHT and " "UEFI_TIME_ADJUST_DAYLIGHT must be zero.", Time->Daylight); return false; } return true; } static void addonehour(EFI_TIME *time) { if (time->Hour != 23) { time->Hour += 1; return; } time->Hour = 0; if ((time->Day != dayofmonth[time->Month - 1]) && (!(time->Month == 2 && (!IS_LEAP(time->Year) && time->Day == 28)))) { time->Day += 1; return; } time->Day = 1; if (time->Month != 12) { time->Month += 1; return; } time->Month = 1; time->Year += 1; return; } static int uefirttime_init(fwts_framework *fw) { if (fwts_firmware_detect() != FWTS_FIRMWARE_UEFI) { fwts_log_info(fw, "Cannot detect any UEFI firmware. Aborted."); return FWTS_ABORTED; } if (fwts_lib_efi_runtime_load_module(fw) != FWTS_OK) { fwts_log_info(fw, "Cannot load efi_runtime module. Aborted."); return FWTS_ABORTED; } fd = open("/dev/efi_runtime", O_RDONLY); if (fd == -1) { fwts_log_info(fw, "Cannot open efi_runtime driver. Aborted."); return FWTS_ABORTED; } return FWTS_OK; } static int uefirttime_deinit(fwts_framework *fw) { FWTS_UNUSED(fw); close(fd); fwts_lib_efi_runtime_unload_module(fw); return FWTS_OK; } static int uefirttime_test1(fwts_framework *fw) { long ioret; struct efi_gettime gettime; EFI_TIME efi_time; EFI_TIME_CAPABILITIES efi_time_cap; uint64_t status; gettime.Capabilities = &efi_time_cap; gettime.Time = &efi_time; gettime.status = &status; ioret = ioctl(fd, EFI_RUNTIME_GET_TIME, &gettime); if (ioret == -1) { fwts_failed(fw, LOG_LEVEL_HIGH, "UEFIRuntimeGetTime", "Failed to get time with UEFI runtime service."); fwts_uefi_print_status_info(fw, status); return FWTS_ERROR; } if (!checktimefields(fw, gettime.Time)) return FWTS_ERROR; fwts_passed(fw, "UEFI runtime service GetTime interface test passed."); return FWTS_OK; } static int uefirttime_test2(fwts_framework *fw) { long ioret; struct efi_settime settime; uint64_t status; struct efi_gettime gettime; EFI_TIME oldtime; EFI_TIME newtime; EFI_TIME time; EFI_TIME_CAPABILITIES efi_time_cap; gettime.Capabilities = &efi_time_cap; gettime.Time = &oldtime; gettime.status = &status; ioret = ioctl(fd, EFI_RUNTIME_GET_TIME, &gettime); if (ioret == -1) { fwts_failed(fw, LOG_LEVEL_HIGH, "UEFIRuntimeGetTime", "Failed to get time with UEFI runtime service."); fwts_uefi_print_status_info(fw, status); return FWTS_ERROR; } /* refer to UEFI SCT 2.3 test items */ /* change year */ time = oldtime; if (time.Year != 2012) time.Year = 2012; else time.Year = 2016; /* change month */ if (time.Month != 1) time.Month = 1; else time.Month = 12; /* Change daylight */ if (time.Daylight & FWTS_UEFI_TIME_ADJUST_DAYLIGHT) time.Daylight &= ~FWTS_UEFI_TIME_ADJUST_DAYLIGHT; else time.Daylight |= FWTS_UEFI_TIME_ADJUST_DAYLIGHT; /* Change time zone */ if (time.TimeZone != 0) time.TimeZone = 0; else time.TimeZone = 1; settime.Time = &time; settime.status = &status; ioret = ioctl(fd, EFI_RUNTIME_SET_TIME, &settime); if (ioret == -1) { fwts_failed(fw, LOG_LEVEL_HIGH, "UEFIRuntimeSetTime", "Failed to set time with UEFI runtime service."); fwts_uefi_print_status_info(fw, status); return FWTS_ERROR; } sleep(1); gettime.Time = &newtime; ioret = ioctl(fd, EFI_RUNTIME_GET_TIME, &gettime); if (ioret == -1) { fwts_failed(fw, LOG_LEVEL_HIGH, "UEFIRuntimeGetTime", "Failed to get time with UEFI runtime service."); fwts_uefi_print_status_info(fw, status); return FWTS_ERROR; } if (!((oldtime.Year == 2012) && (newtime.Year == 2016)) && !((oldtime.Year != 2012) && (newtime.Year == 2012))) { fwts_failed(fw, LOG_LEVEL_HIGH, "UEFIRuntimeSetTimeYear", "Failed to set year with UEFI runtime service."); return FWTS_ERROR; } if (!((oldtime.Month == 1) && (newtime.Month == 12)) && !((oldtime.Month != 1) && (newtime.Month == 1))) { fwts_failed(fw, LOG_LEVEL_HIGH, "UEFIRuntimeSetTimeMonth", "Failed to set month with UEFI runtime service."); return FWTS_ERROR; } if (!((oldtime.Daylight & FWTS_UEFI_TIME_ADJUST_DAYLIGHT) && (!(newtime.Daylight & FWTS_UEFI_TIME_ADJUST_DAYLIGHT))) && !((!(oldtime.Daylight & FWTS_UEFI_TIME_ADJUST_DAYLIGHT)) && (newtime.Daylight & FWTS_UEFI_TIME_ADJUST_DAYLIGHT))) { fwts_failed(fw, LOG_LEVEL_HIGH, "UEFIRuntimeSetTimeDaylight", "Failed to set daylight with UEFI runtime service."); return FWTS_ERROR; } if (!((oldtime.TimeZone == 0) && (newtime.TimeZone == 1)) && !((oldtime.TimeZone != 0) && (newtime.TimeZone == 0))) { fwts_failed(fw, LOG_LEVEL_HIGH, "UEFIRuntimeSetTimeTimezone", "Failed to set timezone with UEFI runtime service."); return FWTS_ERROR; } /* restore the previous time. */ settime.Time = &oldtime; ioret = ioctl(fd, EFI_RUNTIME_SET_TIME, &settime); if (ioret == -1) { fwts_failed(fw, LOG_LEVEL_HIGH, "UEFIRuntimeSetTime", "Failed to set time with UEFI runtime service."); fwts_uefi_print_status_info(fw, status); return FWTS_ERROR; } fwts_passed(fw, "UEFI runtime service SetTime interface test passed."); return FWTS_OK; } static int uefirttime_test3(fwts_framework *fw) { long ioret; struct efi_getwakeuptime getwakeuptime; uint64_t status; uint8_t enabled, pending; EFI_TIME efi_time; getwakeuptime.Enabled = &enabled; getwakeuptime.Pending = &pending; getwakeuptime.Time = &efi_time; getwakeuptime.status = &status; ioret = ioctl(fd, EFI_RUNTIME_GET_WAKETIME, &getwakeuptime); if (ioret == -1) { fwts_failed(fw, LOG_LEVEL_HIGH, "UEFIRuntimeGetWakeupTime", "Failed to get wakeup time with UEFI runtime service."); fwts_uefi_print_status_info(fw, status); return FWTS_ERROR; } if (!checktimefields(fw, getwakeuptime.Time)) return FWTS_ERROR; fwts_passed(fw, "UEFI runtime service GetWakeupTime interface test passed."); return FWTS_OK; } static int uefirttime_test4(fwts_framework *fw) { long ioret; struct efi_setwakeuptime setwakeuptime; uint64_t status; EFI_TIME oldtime; EFI_TIME newtime; struct efi_gettime gettime; EFI_TIME_CAPABILITIES efi_time_cap; struct efi_getwakeuptime getwakeuptime; uint8_t enabled, pending; gettime.Capabilities = &efi_time_cap; gettime.Time = &oldtime; gettime.status = &status; ioret = ioctl(fd, EFI_RUNTIME_GET_TIME, &gettime); if (ioret == -1) { fwts_failed(fw, LOG_LEVEL_HIGH, "UEFIRuntimeGetTime", "Failed to get time with UEFI runtime service."); fwts_uefi_print_status_info(fw, status); return FWTS_ERROR; } /* change the hour, add 1 hour*/ addonehour(&oldtime); setwakeuptime.Time = &oldtime; setwakeuptime.status = &status; setwakeuptime.Enabled = true; ioret = ioctl(fd, EFI_RUNTIME_SET_WAKETIME, &setwakeuptime); if (ioret == -1) { fwts_failed(fw, LOG_LEVEL_HIGH, "UEFIRuntimeSetWakeupTime", "Failed to set wakeup time with UEFI runtime service."); fwts_uefi_print_status_info(fw, status); return FWTS_ERROR; } sleep(1); getwakeuptime.Enabled = &enabled; getwakeuptime.Pending = &pending; getwakeuptime.Time = &newtime; getwakeuptime.status = &status; ioret = ioctl(fd, EFI_RUNTIME_GET_WAKETIME, &getwakeuptime); if (ioret == -1) { fwts_failed(fw, LOG_LEVEL_HIGH, "UEFIRuntimeGetWakeupTime", "Failed to get wakeup time with UEFI runtime service."); fwts_uefi_print_status_info(fw, status); return FWTS_ERROR; } if (*getwakeuptime.Enabled != true) { fwts_failed(fw, LOG_LEVEL_HIGH, "UEFIRuntimeSetWakeupTimeEnable", "Failed to set wakeup alarm clock, wakeup timer should be enabled."); return FWTS_ERROR; } if (*getwakeuptime.Pending != false) { fwts_failed(fw, LOG_LEVEL_HIGH, "UEFIRuntimeSetWakeupTimePending", "Get error alarm signle status."); return FWTS_ERROR; } if ((oldtime.Year != newtime.Year) || (oldtime.Month != newtime.Month) || (oldtime.Day != newtime.Day) || (oldtime.Hour != newtime.Hour)) { fwts_failed(fw, LOG_LEVEL_HIGH, "UEFIRuntimeSetWakeupTimeVerify", "Failed to verify wakeup time after change."); return FWTS_ERROR; } setwakeuptime.Enabled = false; ioret = ioctl(fd, EFI_RUNTIME_SET_WAKETIME, &setwakeuptime); if (ioret == -1) { fwts_failed(fw, LOG_LEVEL_HIGH, "UEFIRuntimeSetWakeupTime", "Failed to set wakeup time with UEFI runtime service."); fwts_uefi_print_status_info(fw, status); return FWTS_ERROR; } sleep(1); ioret = ioctl(fd, EFI_RUNTIME_GET_WAKETIME, &getwakeuptime); if (ioret == -1) { fwts_failed(fw, LOG_LEVEL_HIGH, "UEFIRuntimeGetWakeupTime", "Failed to get wakeup time with UEFI runtime service."); fwts_uefi_print_status_info(fw, status); return FWTS_ERROR; } if (*getwakeuptime.Enabled != false) { fwts_failed(fw, LOG_LEVEL_HIGH, "UEFIRuntimeSetWakeupTimeEnable", "Failed to set wakeup alarm clock, wakeup timer should be disabled."); return FWTS_ERROR; } fwts_passed(fw, "UEFI runtime service SetWakeupTime interface test passed."); return FWTS_OK; } static fwts_framework_minor_test uefirttime_tests[] = { { uefirttime_test1, "Test UEFI RT service get time interface." }, { uefirttime_test2, "Test UEFI RT service set time interface." }, { uefirttime_test3, "Test UEFI RT service get wakeup time interface." }, { uefirttime_test4, "Test UEFI RT service set wakeup time interface." }, { NULL, NULL } }; static fwts_framework_ops uefirttime_ops = { .description = "UEFI Runtime service time interface tests.", .init = uefirttime_init, .deinit = uefirttime_deinit, .minor_tests = uefirttime_tests }; FWTS_REGISTER("uefirttime", &uefirttime_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_TEST_UEFI | FWTS_FLAG_UNSAFE | FWTS_FLAG_ROOT_PRIV); src/uefi/uefirtvariable/000077500000000000000000000000001231470457100156055ustar00rootroot00000000000000src/uefi/uefirtvariable/uefirtvariable.c000066400000000000000000001311311231470457100207550ustar00rootroot00000000000000/* * Copyright (C) 2012-2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #include #include #include #include #include #include "fwts.h" #include "fwts_uefi.h" #include "efi_runtime.h" #include "fwts_efi_module.h" #define TEST_GUID1 \ { \ 0xF6FAB04F, 0xACAF, 0x4af3, {0xB9, 0xFA, 0xDC, \ 0xF9, 0x7F, 0xB4, 0x42, 0x6F} \ } #define TEST_GUID2 \ { \ 0xBD6D18A3, 0xEE9E, 0x445E, {0xA8, 0x1B, 0xD3, \ 0xDD, 0xB7, 0x11, 0xD0, 0x6E} \ } #define MAX_DATA_LENGTH 1024 static int fd; static EFI_GUID gtestguid1 = TEST_GUID1; static EFI_GUID gtestguid2 = TEST_GUID2; static uint32_t uefi_get_variable_multiple = 1024; static uint32_t uefi_set_variable_multiple = 40; static uint32_t uefi_query_variable_multiple = 1024; #define UEFI_GET_VARIABLE_MULTIPLE_MAX (100000) #define UEFI_SET_VARIABLE_MULTIPLE_MAX (10000) #define UEFI_QUERY_VARIABLE_MULTIPLE_MAX (100000) static uint32_t attributes = FWTS_UEFI_VAR_NON_VOLATILE | FWTS_UEFI_VAR_BOOTSERVICE_ACCESS | FWTS_UEFI_VAR_RUNTIME_ACCESS; static uint16_t variablenametest[] = {'T', 'e', 's', 't', 'v', 'a', 'r', '\0'}; static int uefirtvariable_init(fwts_framework *fw) { if (fwts_firmware_detect() != FWTS_FIRMWARE_UEFI) { fwts_log_info(fw, "Cannot detect any UEFI firmware. Aborted."); return FWTS_ABORTED; } if (fwts_lib_efi_runtime_load_module(fw) != FWTS_OK) { fwts_log_info(fw, "Cannot load efi_runtime module. Aborted."); return FWTS_ABORTED; } fd = open("/dev/efi_runtime", O_RDONLY); if (fd == -1) { fwts_log_info(fw, "Cannot open efi_runtime driver. Aborted."); return FWTS_ABORTED; } return FWTS_OK; } static int uefirtvariable_deinit(fwts_framework *fw) { close(fd); fwts_lib_efi_runtime_unload_module(fw); return FWTS_OK; } static int getvariable_test( fwts_framework *fw, const uint64_t datasize, uint16_t *varname, const uint32_t multitesttime) { long ioret; struct efi_getvariable getvariable; struct efi_setvariable setvariable; uint64_t status; uint8_t testdata[MAX_DATA_LENGTH]; uint64_t dataindex; uint64_t getdatasize = sizeof(testdata); uint32_t attributestest; uint8_t data[datasize]; uint32_t i; for (dataindex = 0; dataindex < datasize; dataindex++) data[dataindex] = (uint8_t)dataindex; setvariable.VariableName = varname; setvariable.VendorGuid = >estguid1; setvariable.Attributes = attributes; setvariable.DataSize = datasize; setvariable.Data = data; setvariable.status = &status; ioret = ioctl(fd, EFI_RUNTIME_SET_VARIABLE, &setvariable); if (ioret == -1) { if (status == EFI_OUT_OF_RESOURCES) { fwts_uefi_print_status_info(fw, status); fwts_skipped(fw, "Run out of resources for SetVariable UEFI " "runtime interface: cannot test."); fwts_advice(fw, "Firmware may reclaim some resources after " "rebooting. Reboot and test again may be " "helpful to continue the test."); return FWTS_SKIP; } fwts_failed(fw, LOG_LEVEL_HIGH, "UEFIRuntimeSetVariable", "Failed to set variable with UEFI runtime service."); fwts_uefi_print_status_info(fw, status); return FWTS_ERROR; } getvariable.VariableName = varname; getvariable.VendorGuid = >estguid1; getvariable.Attributes = &attributestest; getvariable.DataSize = &getdatasize; getvariable.Data = testdata; getvariable.status = &status; for (i = 0; i < multitesttime; i++) { ioret = ioctl(fd, EFI_RUNTIME_GET_VARIABLE, &getvariable); if (ioret == -1) { fwts_failed(fw, LOG_LEVEL_HIGH, "UEFIRuntimeGetVariable", "Failed to get variable with UEFI " "runtime service."); fwts_uefi_print_status_info(fw, status); goto err_restore_env; } } if (*getvariable.status != EFI_SUCCESS) { fwts_failed(fw, LOG_LEVEL_HIGH, "UEFIRuntimeGetVariableStatus", "Failed to get variable, return status is not " "EFI_SUCCESS."); fwts_uefi_print_status_info(fw, status); goto err_restore_env; } else if (*getvariable.Attributes != attributes) { fwts_failed(fw, LOG_LEVEL_HIGH, "UEFIRuntimeGetVariableAttributes", "Failed to get variable with right attributes, " "attributes we got is %" PRIu32 ", but it should be %" PRIu32 ".", *getvariable.Attributes, attributes); goto err_restore_env; } else if (*getvariable.DataSize != datasize) { fwts_failed(fw, LOG_LEVEL_HIGH, "UEFIRuntimeGetVariableDataSize", "Failed to get variable with correct datasize."); goto err_restore_env; } else { for (dataindex = 0; dataindex < datasize; dataindex++) { if (data[dataindex] != (uint8_t)dataindex) { fwts_failed(fw, LOG_LEVEL_HIGH, "UEFIRuntimeGetVariableData", "Failed to get variable with " "correct data."); goto err_restore_env; } } } /* delete the variable */ setvariable.DataSize = 0; ioret = ioctl(fd, EFI_RUNTIME_SET_VARIABLE, &setvariable); if (ioret == -1) { fwts_failed(fw, LOG_LEVEL_HIGH, "UEFIRuntimeSetVariable", "Failed to delete variable with UEFI runtime service."); fwts_uefi_print_status_info(fw, status); return FWTS_ERROR; } return FWTS_OK; err_restore_env: setvariable.DataSize = 0; ioret = ioctl(fd, EFI_RUNTIME_SET_VARIABLE, &setvariable); if (ioret == -1) { fwts_failed(fw, LOG_LEVEL_HIGH, "UEFIRuntimeSetVariable", "Failed to delete variable with UEFI runtime service."); fwts_uefi_print_status_info(fw, status); return FWTS_ERROR; } return FWTS_ERROR; } static bool compare_guid(const EFI_GUID *guid1, const EFI_GUID *guid2) { bool ident = true; int i; if ((guid1->Data1 != guid2->Data1) || (guid1->Data2 != guid2->Data2) || (guid1->Data3 != guid2->Data3)) ident = false; else { for (i = 0; i < 8; i++) { if (guid1->Data4[i] != guid2->Data4[i]) ident = false; } } return ident; } static bool compare_name(const uint16_t *name1, const uint16_t *name2) { bool ident = true; int i = 0; while (true) { if ((name1[i] != name2[i])) { ident = false; break; } else if (name1[i] == '\0') break; i++; } return ident; } static int getnextvariable_test1(fwts_framework *fw) { long ioret; uint64_t status; struct efi_setvariable setvariable; uint64_t dataindex, datasize = 10; uint8_t data[MAX_DATA_LENGTH]; struct efi_getnextvariablename getnextvariablename; uint64_t variablenamesize = MAX_DATA_LENGTH; uint16_t variablename[MAX_DATA_LENGTH]; EFI_GUID vendorguid; bool found_name = false, found_guid = false; for (dataindex = 0; dataindex < datasize; dataindex++) data[dataindex] = (uint8_t)dataindex; setvariable.VariableName = variablenametest; setvariable.VendorGuid = >estguid1; setvariable.Attributes = attributes; setvariable.DataSize = datasize; setvariable.Data = data; setvariable.status = &status; ioret = ioctl(fd, EFI_RUNTIME_SET_VARIABLE, &setvariable); if (ioret == -1) { if (status == EFI_OUT_OF_RESOURCES) { fwts_uefi_print_status_info(fw, status); fwts_skipped(fw, "Run out of resources for SetVariable UEFI " "runtime interface: cannot test."); fwts_advice(fw, "Firmware may reclaim some resources after " "rebooting. Reboot and test again may be " "helpful to continue the test."); return FWTS_SKIP; } fwts_failed(fw, LOG_LEVEL_HIGH, "UEFIRuntimeSetVariable", "Failed to set variable with UEFI runtime service."); fwts_uefi_print_status_info(fw, status); return FWTS_ERROR; } getnextvariablename.VariableNameSize = &variablenamesize; getnextvariablename.VariableName = variablename; getnextvariablename.VendorGuid = &vendorguid; getnextvariablename.status = &status; /* * To start the search, need to pass a Null-terminated string * in VariableName */ variablename[0] = '\0'; while (true) { variablenamesize = MAX_DATA_LENGTH; ioret = ioctl(fd, EFI_RUNTIME_GET_NEXTVARIABLENAME, &getnextvariablename); if (ioret == -1) { /* no next variable was found*/ if (*getnextvariablename.status == EFI_NOT_FOUND) break; fwts_failed(fw, LOG_LEVEL_HIGH, "UEFIRuntimeGetNextVariableName", "Failed to get next variable name with UEFI " "runtime service."); fwts_uefi_print_status_info(fw, status); goto err_restore_env; } if (compare_name(getnextvariablename.VariableName, variablenametest)) found_name = true; if (compare_guid(getnextvariablename.VendorGuid, >estguid1)) found_guid = true; if (found_name && found_guid) break; }; if (!found_name) { fwts_failed(fw, LOG_LEVEL_HIGH, "UEFIRuntimeGetNextVariableNameName", "Failed to get next variable name with right name."); goto err_restore_env; } if (!found_guid) { fwts_failed(fw, LOG_LEVEL_HIGH, "UEFIRuntimeGetNextVariableNameGuid", "Failed to get next variable name correct guid."); goto err_restore_env; } /* delete the variable */ setvariable.DataSize = 0; ioret = ioctl(fd, EFI_RUNTIME_SET_VARIABLE, &setvariable); if (ioret == -1) { fwts_failed(fw, LOG_LEVEL_HIGH, "UEFIRuntimeSetVariable", "Failed to delete variable with UEFI runtime service."); fwts_uefi_print_status_info(fw, status); return FWTS_ERROR; } return FWTS_OK; err_restore_env: setvariable.DataSize = 0; ioret = ioctl(fd, EFI_RUNTIME_SET_VARIABLE, &setvariable); if (ioret == -1) { fwts_failed(fw, LOG_LEVEL_HIGH, "UEFIRuntimeSetVariable", "Failed to delete variable with UEFI runtime service."); fwts_uefi_print_status_info(fw, status); return FWTS_ERROR; } return FWTS_ERROR; } /* * Return true if variablenamesize is the length of the * NULL-terminated unicode string, variablename. */ static bool strlen_valid(const uint16_t *variablename, const uint64_t variablenamesize) { uint64_t len; uint16_t c; for (len = 2; len <= variablenamesize; len += sizeof(c)) { uint64_t i = (len / sizeof(c)) - 1; c = variablename[i]; if (!c) break; } return len == variablenamesize; } static int getnextvariable_test2(fwts_framework *fw) { long ioret; uint64_t status; struct efi_getnextvariablename getnextvariablename; uint64_t variablenamesize = MAX_DATA_LENGTH; uint16_t variablename[MAX_DATA_LENGTH]; EFI_GUID vendorguid; getnextvariablename.VariableNameSize = &variablenamesize; getnextvariablename.VariableName = variablename; getnextvariablename.VendorGuid = &vendorguid; getnextvariablename.status = &status; /* * To start the search, need to pass a Null-terminated string * in VariableName */ variablename[0] = '\0'; while (true) { variablenamesize = MAX_DATA_LENGTH; ioret = ioctl(fd, EFI_RUNTIME_GET_NEXTVARIABLENAME, &getnextvariablename); if (ioret == -1) { /* no next variable was found*/ if (*getnextvariablename.status == EFI_NOT_FOUND) break; fwts_failed(fw, LOG_LEVEL_HIGH, "UEFIRuntimeGetNextVariableName", "Failed to get next variable name with UEFI " "runtime service."); fwts_uefi_print_status_info(fw, status); goto err; } if (variablenamesize != MAX_DATA_LENGTH && !strlen_valid(variablename, variablenamesize)) { fwts_warning(fw, "UEFIRuntimeGetNextVariableName " "Unexpected variable name size returned."); goto err; } }; return FWTS_OK; err: return FWTS_ERROR; } struct efi_var_item { struct efi_var_item *next; /* collision chain */ uint16_t *name; EFI_GUID *guid; uint64_t hash; }; /* * This is a completely arbitrary value. */ #define BUCKET_SIZE 32 static struct efi_var_item *buckets[BUCKET_SIZE]; /* * This doesn't have to be a super efficient hashing function with * minimal collisions, just more efficient than iterating over a * simple linked list. */ static inline uint64_t hash_func(uint16_t *variablename, const uint64_t length) { uint64_t i, hash = 0; uint16_t *c = variablename; for (i = 0; i < length; i++) hash = hash * 33 + *c++; return hash; } /* * Return's 0 on success, -1 if there was a collision - meaning we've * encountered duplicate variable names with the same GUID. */ static int bucket_insert(struct efi_var_item *item) { struct efi_var_item *chain; unsigned int index = item->hash % BUCKET_SIZE; chain = buckets[index]; while (chain) { /* * OK, we got a collision - no big deal. Walk the * chain and see whether this variable name and * variable guid already appear on it. */ if (compare_name(item->name, chain->name)) { if (compare_guid(item->guid, chain->guid)) return -1; /* duplicate */ } chain = chain->next; } item->next = buckets[index]; buckets[index] = item; return 0; } static void bucket_destroy(void) { struct efi_var_item *item; int i; for (i = 0; i < BUCKET_SIZE; i++) { item = buckets[i]; while (item) { struct efi_var_item *chain = item->next; free(item->name); free(item); item = chain; } } } static int getnextvariable_test3(fwts_framework *fw) { long ioret; uint64_t status; struct efi_getnextvariablename getnextvariablename; uint64_t variablenamesize = MAX_DATA_LENGTH; uint16_t variablename[MAX_DATA_LENGTH]; EFI_GUID vendorguid; getnextvariablename.VariableNameSize = &variablenamesize; getnextvariablename.VariableName = variablename; getnextvariablename.VendorGuid = &vendorguid; getnextvariablename.status = &status; /* * To start the search, need to pass a Null-terminated string * in VariableName */ variablename[0] = '\0'; while (true) { struct efi_var_item *item; variablenamesize = MAX_DATA_LENGTH; ioret = ioctl(fd, EFI_RUNTIME_GET_NEXTVARIABLENAME, &getnextvariablename); if (ioret == -1) { /* no next variable was found*/ if (*getnextvariablename.status == EFI_NOT_FOUND) break; fwts_failed(fw, LOG_LEVEL_HIGH, "UEFIRuntimeGetNextVariableName", "Failed to get next variable name with UEFI " "runtime service."); fwts_uefi_print_status_info(fw, status); goto err; } item = malloc(sizeof(*item)); if (!item) { fwts_failed(fw, LOG_LEVEL_HIGH, "UEFIRuntimeGetNextVariableName", "Failed to allocate memory for test."); goto err; } item->guid = &vendorguid; item->next = NULL; item->name = malloc(variablenamesize); if (!item->name) { fwts_failed(fw, LOG_LEVEL_HIGH, "UEFIRuntimeGetNextVariableName", "Failed to allocate memory for test."); free(item); goto err; } memcpy(item->name, variablename, variablenamesize); /* Ensure there are no duplicate variable names + guid */ item->hash = hash_func(variablename, variablenamesize); if (bucket_insert(item)) { fwts_failed(fw, LOG_LEVEL_HIGH, "UEFIRuntimeGetNextVariableName", "Duplicate variable name found."); free(item->name); free(item); goto err; } }; bucket_destroy(); return FWTS_OK; err: bucket_destroy(); return FWTS_ERROR; } static int getnextvariable_test4(fwts_framework *fw) { long ioret; uint64_t status; uint64_t i; struct efi_getnextvariablename getnextvariablename; uint64_t variablenamesize = MAX_DATA_LENGTH; uint16_t variablename[MAX_DATA_LENGTH]; EFI_GUID vendorguid; getnextvariablename.VariableNameSize = &variablenamesize; getnextvariablename.VendorGuid = &vendorguid; getnextvariablename.status = &status; /* * Check for expected error values. */ getnextvariablename.VariableName = NULL; ioret = ioctl(fd, EFI_RUNTIME_GET_NEXTVARIABLENAME, &getnextvariablename); if (ioret != -1 || status != EFI_INVALID_PARAMETER) { fwts_failed(fw, LOG_LEVEL_HIGH, "UEFIRuntimeGetNextVariableName", "Expected EFI_INVALID_PARAMETER with NULL VariableName."); fwts_uefi_print_status_info(fw, status); goto err; } getnextvariablename.VariableName = variablename; getnextvariablename.VendorGuid = NULL; ioret = ioctl(fd, EFI_RUNTIME_GET_NEXTVARIABLENAME, &getnextvariablename); if (ioret != -1 || status != EFI_INVALID_PARAMETER) { fwts_failed(fw, LOG_LEVEL_HIGH, "UEFIRuntimeGetNextVariableName", "Expected EFI_INVALID_PARAMETER with NULL VendorGuid."); fwts_uefi_print_status_info(fw, status); goto err; } getnextvariablename.VendorGuid = &vendorguid; getnextvariablename.VariableNameSize = NULL; ioret = ioctl(fd, EFI_RUNTIME_GET_NEXTVARIABLENAME, &getnextvariablename); if (ioret != -1 || status != EFI_INVALID_PARAMETER) { fwts_failed(fw, LOG_LEVEL_HIGH, "UEFIRuntimeGetNextVariableName", "Expected EFI_INVALID_PARAMETER with NULL " "VariableNameSize."); fwts_uefi_print_status_info(fw, status); goto err; } /* No first result can be 0 or 1 byte in size. */ for (i = 0; i < 2; i++) { variablenamesize = i; getnextvariablename.VariableNameSize = &variablenamesize; /* * To start the search, need to pass a Null-terminated * string in VariableName */ variablename[0] = '\0'; ioret = ioctl(fd, EFI_RUNTIME_GET_NEXTVARIABLENAME, &getnextvariablename); /* * We expect this machine to have at least some UEFI * variables, which is the reason we don't check for * EFI_NOT_FOUND at this point. */ if (ioret != -1 || status != EFI_BUFFER_TOO_SMALL) { fwts_failed(fw, LOG_LEVEL_HIGH, "UEFIRuntimeGetNextVariableName", "Expected EFI_BUFFER_TOO_SMALL with small " "VariableNameSize."); fwts_uefi_print_status_info(fw, status); goto err; } /* Has the firmware failed to update the variable size? */ if (variablenamesize == i) { fwts_failed(fw, LOG_LEVEL_HIGH, "UEFIRuntimeGetNextVariableName", "EFI_BUFFER_TOO_SMALL VariableNameSize was " "not updated."); goto err; } } return FWTS_OK; err: return FWTS_ERROR; } static int setvariable_insertvariable( fwts_framework *fw, const uint32_t attributes, const uint64_t datasize, uint16_t *varname, EFI_GUID *gtestguid, const uint8_t datadiff) { long ioret; struct efi_setvariable setvariable; uint64_t status; uint64_t dataindex; uint8_t data[datasize]; for (dataindex = 0; dataindex < datasize; dataindex++) data[dataindex] = (uint8_t)dataindex + datadiff; setvariable.VariableName = varname; setvariable.VendorGuid = gtestguid; setvariable.Attributes = attributes; setvariable.DataSize = datasize; setvariable.Data = data; setvariable.status = &status; ioret = ioctl(fd, EFI_RUNTIME_SET_VARIABLE, &setvariable); if (ioret == -1) { if (datasize == 0) fwts_failed(fw, LOG_LEVEL_HIGH, "UEFIRuntimeSetVariable", "Failed to delete variable with UEFI " "runtime service."); else { if (status == EFI_OUT_OF_RESOURCES) { fwts_uefi_print_status_info(fw, status); fwts_skipped(fw, "Run out of resources for SetVariable " "UEFI runtime interface: cannot test."); fwts_advice(fw, "Firmware may reclaim some resources " "after rebooting. Reboot and test " "again may be helpful to continue " "the test."); return FWTS_SKIP; } fwts_failed(fw, LOG_LEVEL_HIGH, "UEFIRuntimeSetVariable", "Failed to set variable with UEFI " "runtime service."); } fwts_uefi_print_status_info(fw, status); return FWTS_ERROR; } return FWTS_OK; } static int setvariable_checkvariable( fwts_framework *fw, const uint64_t datasize, uint16_t *varname, EFI_GUID *gtestguid, const uint8_t datadiff) { long ioret; struct efi_getvariable getvariable; uint64_t status; uint8_t testdata[datasize]; uint64_t dataindex; uint64_t getdatasize = sizeof(testdata); uint32_t attributestest; getvariable.VariableName = varname; getvariable.VendorGuid = gtestguid; getvariable.Attributes = &attributestest; getvariable.DataSize = &getdatasize; getvariable.Data = testdata; getvariable.status = &status; ioret = ioctl(fd, EFI_RUNTIME_GET_VARIABLE, &getvariable); if (ioret == -1) { fwts_failed(fw, LOG_LEVEL_HIGH, "UEFIRuntimeGetVariable", "Failed to get variable with UEFI runtime service."); fwts_uefi_print_status_info(fw, status); return FWTS_ERROR; } if (*getvariable.Attributes != attributes) { fwts_failed(fw, LOG_LEVEL_HIGH, "UEFIRuntimeSetVariableAttributes", "Failed to set variable with right attributes, " "attributes we got is %" PRIu32 ", but it should both be %" PRIu32 ".", attributestest, attributes); return FWTS_ERROR; } else if (*getvariable.DataSize != datasize) { fwts_failed(fw, LOG_LEVEL_HIGH, "UEFIRuntimeSetVariableDataSize", "Failed to set variable with correct datasize."); return FWTS_ERROR; } else { for (dataindex = 0; dataindex < datasize; dataindex++) { if (testdata[dataindex] != ((uint8_t)dataindex + datadiff)) { fwts_failed(fw, LOG_LEVEL_HIGH, "UEFIRuntimeSetVariableData", "Failed to set variable with " "correct data."); return FWTS_ERROR; } } } return FWTS_OK; } static int setvariable_checkvariable_notfound( fwts_framework *fw, uint16_t *varname, EFI_GUID *gtestguid) { long ioret; struct efi_getvariable getvariable; uint64_t status; uint8_t testdata[MAX_DATA_LENGTH]; uint64_t getdatasize = sizeof(testdata); uint32_t attributestest; getvariable.VariableName = varname; getvariable.VendorGuid = gtestguid; getvariable.Attributes = &attributestest; getvariable.DataSize = &getdatasize; getvariable.Data = testdata; getvariable.status = &status; ioret = ioctl(fd, EFI_RUNTIME_GET_VARIABLE, &getvariable); /* expect the uefi runtime interface return EFI_NOT_FOUND */ if (ioret == -1) { if (*getvariable.status == EFI_NOT_FOUND) return FWTS_OK; } fwts_failed(fw, LOG_LEVEL_HIGH, "UEFIRuntimeSetVariable", "Failed to set variable with UEFI runtime service, " "expected the status return EFI_NOT_FOUND."); fwts_uefi_print_status_info(fw, status); return FWTS_ERROR; } static int setvariable_invalidattr( fwts_framework *fw, const uint32_t attributes, const uint64_t datasize, uint16_t *varname, EFI_GUID *gtestguid, const uint8_t datadiff) { long ioret; struct efi_setvariable setvariable; uint64_t status; uint64_t dataindex; uint8_t data[datasize]; for (dataindex = 0; dataindex < datasize; dataindex++) data[dataindex] = (uint8_t)dataindex + datadiff; setvariable.VariableName = varname; setvariable.VendorGuid = gtestguid; setvariable.Attributes = attributes; setvariable.DataSize = datasize; setvariable.Data = data; setvariable.status = &status; ioret = ioctl(fd, EFI_RUNTIME_SET_VARIABLE, &setvariable); if ((status == EFI_SUCCESS) && (ioret != -1)) { fwts_warning(fw, "After ExitBootServices() is performed, the " "attributes %" PRIu32 ", " "for SetVariable shouldn't be set successfully.", attributes); return FWTS_ERROR; } return FWTS_OK; } static int setvariable_test1( fwts_framework *fw, const uint64_t datasize1, const uint64_t datasize2, uint16_t *varname) { int ret; uint8_t datadiff_g2 = 2, datadiff_g1 = 0; ret = setvariable_insertvariable(fw, attributes, datasize2, varname, >estguid2, datadiff_g2); if (ret != FWTS_OK) return ret; ret = setvariable_insertvariable(fw, attributes, datasize1, varname, >estguid1, datadiff_g1); if (ret != FWTS_OK) goto err_restore_env1; ret = setvariable_checkvariable(fw, datasize2, varname, >estguid2, datadiff_g2); if (ret != FWTS_OK) goto err_restore_env; ret = setvariable_checkvariable(fw, datasize1, varname, >estguid1, datadiff_g1); if (ret != FWTS_OK) goto err_restore_env; ret = setvariable_insertvariable(fw, attributes, 0, varname, >estguid1, datadiff_g1); if (ret != FWTS_OK) goto err_restore_env1; ret = setvariable_insertvariable(fw, attributes, 0, varname, >estguid2, datadiff_g2); if (ret != FWTS_OK) return ret; return FWTS_OK; err_restore_env: setvariable_insertvariable(fw, attributes, 0, varname, >estguid1, datadiff_g1); err_restore_env1: setvariable_insertvariable(fw, attributes, 0, varname, >estguid2, datadiff_g2); return ret; } static int setvariable_test2(fwts_framework *fw, uint16_t *varname) { int ret; uint64_t datasize = 10; uint8_t datadiff1 = 0, datadiff2 = 2, datadiff3 = 4; ret = setvariable_insertvariable(fw, attributes, datasize, varname, >estguid1, datadiff1); if (ret != FWTS_OK) return ret; /* insert the same data */ ret = setvariable_insertvariable(fw, attributes, datasize, varname, >estguid1, datadiff1); if (ret != FWTS_OK) return ret; ret = setvariable_checkvariable(fw, datasize, varname, >estguid1, datadiff1); if (ret != FWTS_OK) goto err_restore_env1; ret = setvariable_insertvariable(fw, attributes, 0, varname, >estguid1, datadiff1); if (ret != FWTS_OK) return ret; /* insert different data */ datasize = 20; ret = setvariable_insertvariable(fw, attributes, datasize, varname, >estguid1, datadiff2); if (ret != FWTS_OK) return ret; ret = setvariable_checkvariable(fw, datasize, varname, >estguid1, datadiff2); if (ret != FWTS_OK) goto err_restore_env2; ret = setvariable_insertvariable(fw, attributes, 0, varname, >estguid1, datadiff2); if (ret != FWTS_OK) return ret; datasize = 5; ret = setvariable_insertvariable(fw, attributes, datasize, varname, >estguid1, datadiff3); if (ret != FWTS_OK) return ret; ret = setvariable_checkvariable(fw, datasize, varname, >estguid1, datadiff3); if (ret != FWTS_OK) goto err_restore_env3; ret = setvariable_insertvariable(fw, attributes, 0, varname, >estguid1, datadiff3); if (ret != FWTS_OK) return ret; return FWTS_OK; err_restore_env1: setvariable_insertvariable(fw, attributes, 0, varname, >estguid1, datadiff1); return ret; err_restore_env2: setvariable_insertvariable(fw, attributes, 0, varname, >estguid1, datadiff2); return ret; err_restore_env3: setvariable_insertvariable(fw, attributes, 0, varname, >estguid1, datadiff3); return ret; } static int setvariable_test3(fwts_framework *fw) { int ret; uint64_t datasize = 10; uint8_t datadiff1 = 0, datadiff2 = 1, datadiff3 = 2; uint16_t variablenametest2[] = {'T', 'e', 's', 't', 'v', 'a', 'r', ' ', '\0'}; uint16_t variablenametest3[] = {'T', 'e', 's', 't', 'v', 'a', '\0'}; ret = setvariable_insertvariable(fw, attributes, datasize, variablenametest2, >estguid1, datadiff2); if (ret != FWTS_OK) return ret; ret = setvariable_insertvariable(fw, attributes, datasize, variablenametest3, >estguid1, datadiff3); if (ret != FWTS_OK) goto err_restore_env2; ret = setvariable_insertvariable(fw, attributes, datasize, variablenametest, >estguid1, datadiff1); if (ret != FWTS_OK) goto err_restore_env1; ret = setvariable_checkvariable(fw, datasize, variablenametest2, >estguid1, datadiff2); if (ret != FWTS_OK) goto err_restore_env; ret = setvariable_checkvariable(fw, datasize, variablenametest3, >estguid1, datadiff3); if (ret != FWTS_OK) goto err_restore_env; ret = setvariable_checkvariable(fw, datasize, variablenametest, >estguid1, datadiff1); if (ret != FWTS_OK) goto err_restore_env; ret = setvariable_insertvariable(fw, attributes, 0, variablenametest, >estguid1, datadiff1); if (ret != FWTS_OK) goto err_restore_env1; ret = setvariable_insertvariable(fw, attributes, 0, variablenametest3, >estguid1, datadiff3); if (ret != FWTS_OK) goto err_restore_env2; ret = setvariable_insertvariable(fw, attributes, 0, variablenametest2, >estguid1, datadiff2); if (ret != FWTS_OK) return ret; return FWTS_OK; err_restore_env: setvariable_insertvariable(fw, attributes, 0, variablenametest, >estguid1, datadiff1); err_restore_env1: setvariable_insertvariable(fw, attributes, 0, variablenametest3, >estguid1, datadiff3); err_restore_env2: setvariable_insertvariable(fw, attributes, 0, variablenametest2, >estguid1, datadiff2); return ret; } static int setvariable_test4(fwts_framework *fw) { int ret; uint64_t datasize = 10; uint8_t datadiff = 0; ret = setvariable_insertvariable(fw, attributes, datasize, variablenametest, >estguid1, datadiff); if (ret != FWTS_OK) return ret; ret = setvariable_insertvariable(fw, attributes, 0, variablenametest, >estguid1, datadiff); if (ret != FWTS_OK) return ret; if (setvariable_checkvariable_notfound(fw, variablenametest, >estguid1) == FWTS_ERROR) return FWTS_ERROR; return FWTS_OK; } static int setvariable_test5(fwts_framework *fw) { int ret; uint64_t datasize = 10; uint8_t datadiff = 0; ret = setvariable_insertvariable(fw, attributes, datasize, variablenametest, >estguid1, datadiff); if (ret != FWTS_OK) return ret; ret = setvariable_insertvariable(fw, 0, datasize, variablenametest, >estguid1, datadiff); if (ret != FWTS_OK) return ret; if (setvariable_checkvariable_notfound(fw, variablenametest, >estguid1) == FWTS_ERROR) return FWTS_ERROR; return FWTS_OK; } static int setvariable_test6(fwts_framework *fw) { uint64_t datasize = 10; uint8_t datadiff = 0; uint32_t attributesarray[] = { FWTS_UEFI_VAR_BOOTSERVICE_ACCESS, FWTS_UEFI_VAR_NON_VOLATILE | FWTS_UEFI_VAR_BOOTSERVICE_ACCESS, FWTS_UEFI_VAR_BOOTSERVICE_ACCESS | FWTS_UEFI_VAR_RUNTIME_ACCESS }; uint64_t index; for (index = 0; index < (sizeof(attributesarray)/(sizeof attributesarray[0])); index++) { setvariable_invalidattr(fw, attributesarray[index], datasize, variablenametest, >estguid1, datadiff); if (setvariable_checkvariable_notfound(fw, variablenametest, >estguid1) == FWTS_ERROR) { fwts_log_info(fw, "Get the variable which is set by SetVariable " "with invalid attribute %" PRIu32 " after ExitBootServices() is " "performed, test failed.", attributesarray[index]); setvariable_insertvariable(fw, 0, datasize, variablenametest, >estguid1, datadiff); return FWTS_ERROR; } } return FWTS_OK; } static int do_queryvariableinfo( uint64_t *status, uint64_t *remvarstoragesize, uint64_t *maxvariablesize) { long ioret; struct efi_queryvariableinfo queryvariableinfo; uint64_t maxvarstoragesize; queryvariableinfo.Attributes = attributes; queryvariableinfo.MaximumVariableStorageSize = &maxvarstoragesize; queryvariableinfo.RemainingVariableStorageSize = remvarstoragesize; queryvariableinfo.MaximumVariableSize = maxvariablesize; queryvariableinfo.status = status; ioret = ioctl(fd, EFI_RUNTIME_QUERY_VARIABLEINFO, &queryvariableinfo); if (ioret == -1) return FWTS_ERROR; return FWTS_OK; } static int getnextvariable_multitest( fwts_framework *fw, const uint32_t multitesttime) { long ioret; uint64_t status; uint32_t i; struct efi_setvariable setvariable; uint64_t dataindex, datasize = 10; uint8_t data[MAX_DATA_LENGTH]; struct efi_getnextvariablename getnextvariablename; uint64_t variablenamesize = MAX_DATA_LENGTH; uint16_t variablename[MAX_DATA_LENGTH]; EFI_GUID vendorguid; for (dataindex = 0; dataindex < datasize; dataindex++) data[dataindex] = (uint8_t)dataindex; setvariable.VariableName = variablenametest; setvariable.VendorGuid = >estguid1; setvariable.Attributes = attributes; setvariable.DataSize = datasize; setvariable.Data = data; setvariable.status = &status; ioret = ioctl(fd, EFI_RUNTIME_SET_VARIABLE, &setvariable); if (ioret == -1) { if (status == EFI_OUT_OF_RESOURCES) { fwts_uefi_print_status_info(fw, status); fwts_skipped(fw, "Run out of resources for SetVariable UEFI " "runtime interface: cannot test."); fwts_advice(fw, "Firmware may reclaim some resources after " "rebooting. Reboot and test again may be " "helpful to continue the test."); return FWTS_SKIP; } fwts_failed(fw, LOG_LEVEL_HIGH, "UEFIRuntimeSetVariable", "Failed to set variable with UEFI runtime service."); return FWTS_ERROR; } getnextvariablename.VariableNameSize = &variablenamesize; getnextvariablename.VariableName = variablename; getnextvariablename.VendorGuid = &vendorguid; getnextvariablename.status = &status; for (i = 0; i < multitesttime; i++) { variablename[0] = '\0'; variablenamesize = MAX_DATA_LENGTH; ioret = ioctl(fd, EFI_RUNTIME_GET_NEXTVARIABLENAME, &getnextvariablename); if (ioret == -1) { fwts_failed(fw, LOG_LEVEL_HIGH, "UEFIRuntimeGetNextVariableName", "Failed to get next variable name with " "UEFI runtime service."); goto err_restore_env; } }; setvariable.DataSize = 0; ioret = ioctl(fd, EFI_RUNTIME_SET_VARIABLE, &setvariable); if (ioret == -1) { fwts_failed(fw, LOG_LEVEL_HIGH, "UEFIRuntimeSetVariable", "Failed to set variable with UEFI runtime service."); return FWTS_ERROR; } return FWTS_OK; err_restore_env: setvariable.DataSize = 0; ioret = ioctl(fd, EFI_RUNTIME_SET_VARIABLE, &setvariable); if (ioret == -1) { fwts_failed(fw, LOG_LEVEL_HIGH, "UEFIRuntimeSetVariable", "Failed to delete variable with UEFI runtime service."); } return FWTS_ERROR; } static int uefirtvariable_test1(fwts_framework *fw) { int ret; uint64_t datasize = 10; uint32_t multitesttime = 1; ret = getvariable_test(fw, datasize, variablenametest, multitesttime); if (ret != FWTS_OK) return ret; fwts_passed(fw, "UEFI runtime service GetVariable interface test passed."); return FWTS_OK; } static int uefirtvariable_test2(fwts_framework *fw) { int ret; fwts_log_info(fw, "The runtime service GetNextVariableName interface function test."); ret = getnextvariable_test1(fw); if (ret != FWTS_OK) return ret; fwts_passed(fw, "The runtime service GetNextVariableName interface function test passed."); fwts_log_info(fw, "Check the GetNextVariableName returned value of VariableNameSize is equal to the length of VariableName."); ret = getnextvariable_test2(fw); if (ret != FWTS_OK) return ret; fwts_passed(fw, "Check the GetNextVariableName returned value of VariableNameSize is equal to the length of VariableName passed."); fwts_log_info(fw, "Test GetNextVariableName interface returns unique variables."); ret = getnextvariable_test3(fw); if (ret != FWTS_OK) return ret; fwts_passed(fw, "Test GetNextVariableName interface returns unique variables passed."); fwts_log_info(fw, "The GetNextVariableName interface conformance tests."); ret = getnextvariable_test4(fw); if (ret != FWTS_OK) return ret; fwts_passed(fw, "The runtime service GetNextVariableName interface conformance tests passed."); return FWTS_OK; } static int uefirtvariable_test3(fwts_framework *fw) { int ret; uint64_t datasize1 = 10, datasize2 = 20; fwts_log_info(fw, "Testing SetVariable on two different GUIDs and the same variable name."); ret = setvariable_test1(fw, datasize1, datasize2, variablenametest); if (ret != FWTS_OK) return ret; fwts_passed(fw, "SetVariable on two different GUIDs and the same variable name passed."); fwts_log_info(fw, "Testing SetVariable on the same and different variable data."); ret = setvariable_test2(fw, variablenametest); if (ret != FWTS_OK) return ret; fwts_passed(fw, "SetVariable on the same and different variable data passed."); fwts_log_info(fw, "Testing SetVariable on similar variable name."); ret = setvariable_test3(fw); if (ret != FWTS_OK) return ret; fwts_passed(fw, "SetVariable on similar variable name passed."); fwts_log_info(fw, "Testing SetVariable on DataSize is 0."); ret = setvariable_test4(fw); if (ret != FWTS_OK) return ret; fwts_passed(fw, "SetVariable on DataSize is 0 passed."); fwts_log_info(fw, "Testing SetVariable on Attributes is 0."); ret = setvariable_test5(fw); if (ret != FWTS_OK) return ret; fwts_passed(fw, "SetVariable on Attributes is 0 passed."); fwts_log_info(fw, "Testing SetVariable on Invalid Attributes."); ret = setvariable_test6(fw); if (ret != FWTS_OK) return ret; fwts_passed(fw, "SetVariable on Invalid Attributes passed."); return FWTS_OK; } static int uefirtvariable_test4(fwts_framework *fw) { uint64_t status; uint64_t remvarstoragesize; uint64_t maxvariablesize; if (do_queryvariableinfo(&status, &remvarstoragesize, &maxvariablesize) == FWTS_ERROR) { if (status == EFI_UNSUPPORTED) { fwts_skipped(fw, "Not support the QueryVariableInfo UEFI " "runtime interface: cannot test."); fwts_advice(fw, "Firmware also needs to check if the revision " "of system table is correct or not. Linux " "kernel returns EFI_UNSUPPORTED as well, if " "the FirmwareRevision of system table is less " "than EFI_2_00_SYSTEM_TABLE_REVISION."); return FWTS_SKIP; } else { fwts_failed(fw, LOG_LEVEL_HIGH, "UEFIRuntimeQueryVariableInfo", "Failed to query variable info with UEFI " "runtime service."); fwts_uefi_print_status_info(fw, status); return FWTS_ERROR; } } fwts_passed(fw, "UEFI runtime service query variable info interface test passed."); return FWTS_OK; } static int uefirtvariable_test5(fwts_framework *fw) { int ret; uint32_t multitesttime = uefi_get_variable_multiple; uint64_t datasize = 10; fwts_log_info(fw, "Testing GetVariable on getting the variable %" PRIu32 " times.", uefi_get_variable_multiple); ret = getvariable_test(fw, datasize, variablenametest, multitesttime); if (ret != FWTS_OK) return ret; fwts_passed(fw, "GetVariable on getting the variable multiple times passed."); fwts_log_info(fw, "Testing GetNextVariableName on getting the variable multiple times."); ret = getnextvariable_multitest(fw, multitesttime); if (ret != FWTS_OK) return ret; fwts_passed(fw, "GetNextVariableName on getting the next variable name multiple times passed."); return FWTS_OK; } static int uefirtvariable_test6(fwts_framework *fw) { int ret; uint32_t multitesttime = uefi_set_variable_multiple; uint64_t datasize = 10; uint8_t datadiff = 0; uint32_t i, j; uint8_t variablenamelength = 32; uint16_t variablenametest4[variablenamelength+1]; fwts_log_info(fw, "Testing SetVariable on setting the variable with the same data %" PRIu32 " times.", uefi_set_variable_multiple); for (i = 0; i < multitesttime; i++) { ret = setvariable_insertvariable(fw, attributes, datasize, variablenametest, >estguid1, datadiff); if (ret != FWTS_OK) { if (i > 0) setvariable_insertvariable(fw, attributes, 0, variablenametest, >estguid1, datadiff); return ret; } } ret = setvariable_insertvariable(fw, attributes, 0, variablenametest, >estguid1, datadiff); if (ret != FWTS_OK) return ret; fwts_passed(fw, "SetVariable on setting the variable with the same data multiple times passed."); fwts_log_info(fw, "Testing SetVariable on setting the variable with different data %" PRIu32 " times.", uefi_set_variable_multiple); for (i = 0; i < multitesttime; i++) { ret = setvariable_insertvariable(fw, attributes, datasize+i, variablenametest, >estguid1, datadiff); if (ret != FWTS_OK) return ret; ret = setvariable_insertvariable(fw, attributes, 0, variablenametest, >estguid1, datadiff); if (ret != FWTS_OK) return ret; } fwts_passed(fw, "Testing SetVariable on setting the variable with different data multiple times passed."); fwts_log_info(fw, "Testing SetVariable on setting the variable with different name %" PRIu32 " times.", uefi_set_variable_multiple); for (i = 0; i < variablenamelength; i++) { variablenametest4[i] = 'a'; variablenametest4[i+1] = '\0'; ret = setvariable_insertvariable(fw, attributes, datasize, variablenametest4, >estguid1, datadiff); if (ret != FWTS_OK) return ret; ret = setvariable_insertvariable(fw, attributes, 0, variablenametest4, >estguid1, datadiff); if (ret != FWTS_OK) return ret; } fwts_passed(fw, "Testing SetVariable on setting the variable with different name multiple times passed."); fwts_log_info(fw, "Testing SetVariable on setting the variable with different name and data %" PRIu32 " times.", uefi_set_variable_multiple); /* * This combine test do a lot of setvariable, reduce variablenamelength * and multitesttime, for saving the setvariable times to avoid running * out of nvram space and getting the EFI_OUT_OF_RESOURCES */ variablenamelength /= 4; multitesttime /= 4; for (i = 0; i < variablenamelength; i++) { variablenametest4[i] = 'a'; variablenametest4[i+1] = '\0'; for (j = 0; j < multitesttime; j++) { ret = setvariable_insertvariable(fw, attributes, datasize+j, variablenametest4, >estguid1, datadiff); if (ret != FWTS_OK) return ret; ret = setvariable_insertvariable(fw, attributes, 0, variablenametest4, >estguid1, datadiff); if (ret != FWTS_OK) return ret; } } fwts_passed(fw, "Testing SetVariable on setting the variable with different name and data multiple times passed."); return FWTS_OK; } static int uefirtvariable_test7(fwts_framework *fw) { uint32_t multitesttime = uefi_query_variable_multiple; uint64_t status; uint64_t remvarstoragesize; uint64_t maxvariablesize; uint32_t i; fwts_log_info(fw, "Testing QueryVariableInfo on querying the variable %" PRIu32 " times.", uefi_query_variable_multiple); /* first check if the firmware support QueryVariableInfo interface */ if (do_queryvariableinfo(&status, &remvarstoragesize, &maxvariablesize) == FWTS_ERROR) { if (status == EFI_UNSUPPORTED) { fwts_skipped(fw, "Not support the QueryVariableInfo UEFI " "runtime interface: cannot test."); fwts_advice(fw, "Firmware also needs to check if the revision " "of system table is correct or not. Linux " "kernel returns EFI_UNSUPPORTED as well, if " "the FirmwareRevision of system table is less " "than EFI_2_00_SYSTEM_TABLE_REVISION."); return FWTS_SKIP; } else { fwts_failed(fw, LOG_LEVEL_HIGH, "UEFIRuntimeQueryVariableInfo", "Failed to query variable info with UEFI " "runtime service."); fwts_uefi_print_status_info(fw, status); return FWTS_ERROR; } } for (i = 0; i < multitesttime; i++) { if (do_queryvariableinfo(&status, &remvarstoragesize, &maxvariablesize) == FWTS_ERROR) { fwts_failed(fw, LOG_LEVEL_HIGH, "UEFIRuntimeQueryVariableInfo", "Failed to query variable info with UEFI " "runtime service."); fwts_uefi_print_status_info(fw, status); return FWTS_ERROR; } } fwts_passed(fw, "UEFI runtime service query variable info interface stress test passed."); return FWTS_OK; } static int options_check(fwts_framework *fw) { FWTS_UNUSED(fw); if ((uefi_get_variable_multiple < 1) || (uefi_get_variable_multiple > UEFI_GET_VARIABLE_MULTIPLE_MAX)) { fprintf(stderr, "--uefi-get-variable-multiple is %" PRIu32", it " "should be 1..%" PRIu32 "\n", uefi_get_variable_multiple, UEFI_GET_VARIABLE_MULTIPLE_MAX); return FWTS_ERROR; } if ((uefi_set_variable_multiple < 1) || (uefi_set_variable_multiple > UEFI_SET_VARIABLE_MULTIPLE_MAX)) { fprintf(stderr, "--uefi-set-variable-multiple is %" PRIu32", it " "should be 1..%" PRIu32 "\n", uefi_set_variable_multiple, UEFI_SET_VARIABLE_MULTIPLE_MAX); return FWTS_ERROR; } if ((uefi_query_variable_multiple < 1) || (uefi_query_variable_multiple > UEFI_QUERY_VARIABLE_MULTIPLE_MAX)) { fprintf(stderr, "--uefi-query-variable-multiple is %" PRIu32", it " "should be 1..%" PRIu32 "\n", uefi_query_variable_multiple, UEFI_QUERY_VARIABLE_MULTIPLE_MAX); return FWTS_ERROR; } return FWTS_OK; } static int options_handler( fwts_framework *fw, int argc, char * const argv[], int option_char, int long_index) { FWTS_UNUSED(fw); FWTS_UNUSED(argc); FWTS_UNUSED(argv); if (option_char == 0) { switch (long_index) { case 0: /* --uefi-get-var-multiple */ uefi_get_variable_multiple = strtoul(optarg, NULL, 10); break; case 1: /* --uefi-set-var-multiple */ uefi_set_variable_multiple = strtoul(optarg, NULL, 10); break; case 2: /* --uefi-query-var-multiple */ uefi_query_variable_multiple = strtoul(optarg, NULL, 10); break; } } return FWTS_OK; } static fwts_option options[] = { { "uefi-get-var-multiple", "", 1, "Run uefirtvariable get variable test multiple times." }, { "uefi-set-var-multiple", "", 1, "Run uefirtvariable set variable test multiple times." }, { "uefi-query-var-multiple", "", 1, "Run uefirtvariable query variable test multiple times." }, { NULL, NULL, 0, NULL } }; static fwts_framework_minor_test uefirtvariable_tests[] = { { uefirtvariable_test1, "Test UEFI RT service get variable interface." }, { uefirtvariable_test2, "Test UEFI RT service get next variable name interface." }, { uefirtvariable_test3, "Test UEFI RT service set variable interface." }, { uefirtvariable_test4, "Test UEFI RT service query variable info interface." }, { uefirtvariable_test5, "Test UEFI RT service variable interface stress test." }, { uefirtvariable_test6, "Test UEFI RT service set variable interface stress test." }, { uefirtvariable_test7, "Test UEFI RT service query variable info interface stress test." }, { NULL, NULL } }; static fwts_framework_ops uefirtvariable_ops = { .description = "UEFI Runtime service variable interface tests.", .init = uefirtvariable_init, .deinit = uefirtvariable_deinit, .minor_tests = uefirtvariable_tests, .options = options, .options_handler = options_handler, .options_check = options_check, }; FWTS_REGISTER("uefirtvariable", &uefirtvariable_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_TEST_UEFI | FWTS_FLAG_UNSAFE | FWTS_FLAG_ROOT_PRIV); src/uefi/uefivarinfo/000077500000000000000000000000001231470457100151165ustar00rootroot00000000000000src/uefi/uefivarinfo/uefivarinfo.c000066400000000000000000000153501231470457100176030ustar00rootroot00000000000000/* * Copyright (C) 2013-2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #include #include #include #include #include #include "fwts.h" #include "fwts_uefi.h" #include "efi_runtime.h" #include "fwts_efi_module.h" #define MAX_VARNAME_LENGTH 1024 #define DATA_LENGTH 1024 static int fd; static int uefivarinfo_init(fwts_framework *fw) { if (fwts_firmware_detect() != FWTS_FIRMWARE_UEFI) { fwts_log_info(fw, "Cannot detect any UEFI firmware. Aborted."); return FWTS_ABORTED; } if (fwts_lib_efi_runtime_load_module(fw) != FWTS_OK) { fwts_log_info(fw, "Cannot load efi_runtime module. Aborted."); return FWTS_ABORTED; } fd = open("/dev/efi_runtime", O_RDONLY); if (fd == -1) { fwts_log_info(fw, "Cannot open efi_runtime driver. Aborted."); return FWTS_ABORTED; } return FWTS_OK; } static int uefivarinfo_deinit(fwts_framework *fw) { close(fd); fwts_lib_efi_runtime_unload_module(fw); return FWTS_OK; } static int do_checkvariables( fwts_framework *fw, uint64_t *usedvars, uint64_t *usedvarssize, uint64_t maxvarsize) { long ioret; uint64_t status; struct efi_getnextvariablename getnextvariablename; uint64_t variablenamesize = MAX_VARNAME_LENGTH; uint16_t variablename[MAX_VARNAME_LENGTH]; EFI_GUID vendorguid; uint8_t *data; uint64_t getdatasize; uint32_t attributestest; struct efi_getvariable getvariable; getvariable.Attributes = &attributestest; getvariable.status = &status; getnextvariablename.VariableNameSize = &variablenamesize; getnextvariablename.VariableName = variablename; getnextvariablename.VendorGuid = &vendorguid; getnextvariablename.status = &status; *usedvars = 0; *usedvarssize = 0; /* * To start the search, need to pass a Null-terminated string * in VariableName */ variablename[0] = '\0'; while (true) { variablenamesize = MAX_VARNAME_LENGTH; ioret = ioctl(fd, EFI_RUNTIME_GET_NEXTVARIABLENAME, &getnextvariablename); if (ioret == -1) { /* no next variable was found*/ if (*getnextvariablename.status == EFI_NOT_FOUND) break; fwts_log_info(fw, "Failed to get next variable name with UEFI runtime service."); fwts_uefi_print_status_info(fw, status); return FWTS_ERROR; } (*usedvars)++; data = malloc(DATA_LENGTH); if (!data) { fwts_log_info(fw, "Failed to allocate memory for test."); return FWTS_ERROR; } getdatasize = DATA_LENGTH; getvariable.VariableName = variablename; getvariable.VendorGuid = &vendorguid; getvariable.DataSize = &getdatasize; getvariable.Data = data; while (true) { ioret = ioctl(fd, EFI_RUNTIME_GET_VARIABLE, &getvariable); if (ioret == -1) { if (status != EFI_BUFFER_TOO_SMALL) { fwts_log_info(fw, "Failed to get variable with UEFI runtime service."); fwts_uefi_print_status_info(fw, status); free(data); return FWTS_ERROR; } if (getdatasize == maxvarsize) { fwts_log_info(fw, "Variable is larger than maximum variable length."); fwts_uefi_print_status_info(fw, status); free(data); return FWTS_ERROR; } getdatasize += DATA_LENGTH; getdatasize = (getdatasize > maxvarsize) ? maxvarsize : getdatasize; data = realloc(data, getdatasize); if (data) { getvariable.DataSize = &getdatasize; getvariable.Data = data; continue; } else { fwts_log_info(fw, "Failed to allocate memory for test."); return FWTS_ERROR; } } break; }; free(data); (*usedvarssize) += getdatasize; }; return FWTS_OK; } static int do_queryvariableinfo( uint64_t *status, uint64_t *maxvarstoragesize, uint64_t *remvarstoragesize, uint64_t *maxvariablesize) { long ioret; struct efi_queryvariableinfo queryvariableinfo; queryvariableinfo.Attributes = FWTS_UEFI_VAR_NON_VOLATILE | FWTS_UEFI_VAR_BOOTSERVICE_ACCESS | FWTS_UEFI_VAR_RUNTIME_ACCESS; queryvariableinfo.MaximumVariableStorageSize = maxvarstoragesize; queryvariableinfo.RemainingVariableStorageSize = remvarstoragesize; queryvariableinfo.MaximumVariableSize = maxvariablesize; queryvariableinfo.status = status; ioret = ioctl(fd, EFI_RUNTIME_QUERY_VARIABLEINFO, &queryvariableinfo); if (ioret == -1) return FWTS_ERROR; return FWTS_OK; } static int uefivarinfo_test1(fwts_framework *fw) { uint64_t status; uint64_t remvarstoragesize; uint64_t maxvariablesize; uint64_t maxvarstoragesize; uint64_t usedvars; uint64_t usedvarssize; if (do_queryvariableinfo(&status, &maxvarstoragesize, &remvarstoragesize, &maxvariablesize) == FWTS_ERROR) { if (status == EFI_UNSUPPORTED) { fwts_skipped(fw, "QueryVariableInfo UEFI runtime interface not supported: cannot test."); fwts_advice(fw, "Firmware also needs to check if the revision " "of system table is correct or not. Linux " "kernel returns EFI_UNSUPPORTED as well, if " "the FirmwareRevision of system table is less " "than EFI_2_00_SYSTEM_TABLE_REVISION."); return FWTS_SKIP; } else { fwts_log_info(fw, "Failed to query variable info with UEFI runtime service."); fwts_uefi_print_status_info(fw, status); return FWTS_ERROR; } } fwts_log_info_verbatum(fw, "UEFI NVRAM storage:"); fwts_log_info_verbatum(fw, " Maximum storage: %8" PRIu64 " bytes", maxvarstoragesize); fwts_log_info_verbatum(fw, " Remaining storage: %8" PRIu64 " bytes", remvarstoragesize); fwts_log_info_verbatum(fw, " Maximum variable size: %8" PRIu64 " bytes", maxvariablesize); if (do_checkvariables(fw, &usedvars, &usedvarssize, maxvariablesize) == FWTS_OK) { fwts_log_info_verbatum(fw, "Currently used:"); fwts_log_info_verbatum(fw, " %" PRIu64 " variables, storage used: %" PRIu64 " bytes", usedvars, usedvarssize); } return FWTS_OK; } static fwts_framework_minor_test uefivarinfo_tests[] = { { uefivarinfo_test1, "UEFI variable info query." }, { NULL, NULL } }; static fwts_framework_ops uefivarinfo_ops = { .description = "UEFI variable info query.", .init = uefivarinfo_init, .deinit = uefivarinfo_deinit, .minor_tests = uefivarinfo_tests }; FWTS_REGISTER("uefivarinfo", &uefivarinfo_ops, FWTS_TEST_ANYTIME, FWTS_FLAG_UTILS | FWTS_FLAG_ROOT_PRIV); src/utilities/000077500000000000000000000000001231470457100136645ustar00rootroot00000000000000src/utilities/Makefile.am000066400000000000000000000001761231470457100157240ustar00rootroot00000000000000AM_CPPFLAGS = -Wall -Werror -Wextra bin_PROGRAMS = kernelscan kernelscan_SOURCES = kernelscan.c kernelscan_LDFLAGS = -lpcre src/utilities/kernelscan.c000066400000000000000000000476221231470457100161700ustar00rootroot00000000000000/* * Copyright (C) 2012-2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ #include #include #include #include #include #include #include #include #define PARSER_OK 0 #define PARSER_COMMENT_FOUND 1 #define __JSON_ERR_PTR__ ((json_object*) -1) /* * Older versions of json-c may return an error in an * object as a ((json_object*)-1), where as newer * versions return NULL, so check for these. Sigh. */ #define JSON_ERROR(ptr) \ ( (ptr == NULL) || ((json_object*)ptr == __JSON_ERR_PTR__) ) typedef enum { COMPARE_REGEX = 'r', COMPARE_STRING = 's', COMPARE_UNKNOWN = 'u', } compare_mode; typedef struct { char *pattern; /* pattern that we compare to kernel messages */ compare_mode cm; /* 'r' regex or 's' string comparison */ pcre *re; /* regex from pattern */ pcre_extra *extra; } klog_pattern; /* * Subset of tokens that we need to intelligently parse the kernel C source */ typedef enum { TOKEN_UNKNOWN, /* No idea what token it is */ TOKEN_NUMBER, /* Integer */ TOKEN_LITERAL_STRING, /* "string" */ TOKEN_LITERAL_CHAR, /* 'x' */ TOKEN_IDENTIFIER, /* identifier */ TOKEN_PAREN_OPENED, /* ( */ TOKEN_PAREN_CLOSED, /* ) */ TOKEN_CPP, /* # C pre-propressor */ TOKEN_WHITE_SPACE, /* ' ', '\t', '\r', '\n' white space */ TOKEN_LESS_THAN, /* < */ TOKEN_GREATER_THAN, /* > */ TOKEN_COMMA, /* , */ TOKEN_ARROW, /* -> */ TOKEN_TERMINAL, /* ; */ } token_type; /* * A token */ typedef struct { char *token; /* The gathered string for this token */ size_t len; /* Length of the token buffer */ char *ptr; /* Current end of the token during the lexical analysis */ token_type type; /* The type of token we think it is */ } token; /* * Quick and dirty way to push input stream back, like ungetc() */ typedef struct get_stack { int ch; /* Char pushed back */ struct get_stack *next; /* Next one in list */ } get_stack; /* * Parser context */ typedef struct { FILE *fp; /* The file descriptor we are reading */ bool skip_white_space; /* Magic skip white space flag */ get_stack *get_chars; /* Ungot chars get pushed onto this */ } parser; /* * FWTS klog patterns, loaded from a json file */ static klog_pattern *patterns; static int get_token(parser *p, token *t); /* * Initialise the parser */ static void parser_new(parser *p, FILE *fp, bool skip_white_space) { p->get_chars = NULL; p->fp = fp; p->skip_white_space = skip_white_space; } /* * Get next character from input stream */ static int get_next(parser *p) { int ch; /* * If we have chars pushed using unget_next * then pop them off the list first */ if (p->get_chars) { get_stack *tmp = p->get_chars; ch = tmp->ch; p->get_chars = tmp->next; free(tmp); return ch; } return fgetc(p->fp); } /* * Push character back onto the input * stream (in this case, it is a simple FIFO stack */ static void unget_next(parser *p, int ch) { get_stack *new; if ((new = calloc(1, sizeof(get_stack))) == NULL) { fprintf(stderr, "unget_next: Out of memory!\n"); exit(EXIT_FAILURE); } new->ch = ch; new->next = p->get_chars; p->get_chars = new; } /* * Create a new token, give it plenty of slop so * we don't need to keep on reallocating the token * buffer as we append more characters to it during * the lexing phase. */ static void token_new(token *t) { if ((t->token = calloc(1024, 1)) == NULL) { fprintf(stderr, "token_new: Out of memory!\n"); exit(EXIT_FAILURE); } t->len = 1024; t->ptr = t->token; t->type = TOKEN_UNKNOWN; } /* * Clear the token ready for re-use */ static void token_clear(token *t) { t->ptr = t->token; t->type = TOKEN_UNKNOWN; *(t->ptr) = '\0'; } /* * Free the token */ static void token_free(token *t) { free(t->token); t->token = NULL; } /* * Append a single character to the token, * we may run out of space, so this occasionally * adds an extra 1K of token space for long tokens */ static void token_append(token *t, int ch) { if (t->ptr < t->token + t->len - 1) { /* Enough space, just add char */ *(t->ptr) = ch; t->ptr++; *(t->ptr) = 0; } else { /* No more space, add 1K more space */ t->len += 1024; if ((t->token = realloc(t->token, t->len)) == NULL) { fprintf(stderr, "token_append: Out of memory!\n"); exit(EXIT_FAILURE); } *(t->ptr) = ch; t->ptr++; *(t->ptr) = 0; } } /* * Figure out if a klog pattern is a regex or a plain text string */ static compare_mode klog_compare_mode_str_to_val(const char *str) { if (strcmp(str, "regex") == 0) return COMPARE_REGEX; else if (strcmp(str, "string") == 0) return COMPARE_STRING; else return COMPARE_UNKNOWN; } /* * Load FWTS klog messages from the json table */ static klog_pattern *klog_load(const char *table) { int n; int i; json_object *klog_objs; json_object *klog_table; klog_pattern *patterns; klog_objs = json_object_from_file("/usr/share/fwts/klog.json"); if (JSON_ERROR(klog_objs)) { fprintf(stderr, "Cannot load klog data\n"); exit(EXIT_FAILURE); } klog_table = json_object_object_get(klog_objs, table); if (JSON_ERROR(klog_table)) { fprintf(stderr, "Cannot fetch klog table object from %s.\n", table); exit(EXIT_FAILURE); } n = json_object_array_length(klog_table); /* Last entry is null to indicate end, so alloc n+1 items */ if ((patterns = calloc(n+1, sizeof(klog_pattern))) == NULL) { fprintf(stderr, "Cannot allocate pattern table.\n"); exit(EXIT_FAILURE); } /* Now fetch json objects and compile regex */ for (i = 0; i < n; i++) { const char *error; char *str; int erroffset; json_object *obj; obj = json_object_array_get_idx(klog_table, i); if (JSON_ERROR(obj)) { fprintf(stderr, "Cannot fetch %d item from table %s.\n", i, table); exit(EXIT_FAILURE); } str = (char*)json_object_get_string(json_object_object_get(obj, "compare_mode")); if (JSON_ERROR(str)) { fprintf(stderr, "Cannot fetch compare_mode object, item %d from table %s.\n", i, table); exit(EXIT_FAILURE); } patterns[i].cm = klog_compare_mode_str_to_val(str); str = (char*)json_object_get_string(json_object_object_get(obj, "pattern")); if (JSON_ERROR(str)) { fprintf(stderr, "Cannot fetch pattern object, item %d from table %s.\n", i, table); exit(EXIT_FAILURE); } patterns[i].pattern = strdup(str); if (patterns[i].pattern == NULL) { fprintf(stderr, "Failed to strdup regex pattern %d from table %s.\n", i, table); exit(EXIT_FAILURE); } /* Pre-compile regular expressions to make things run a bit faster */ if (patterns[i].cm == COMPARE_REGEX) { if ((patterns[i].re = pcre_compile(patterns[i].pattern, 0, &error, &erroffset, NULL)) == NULL) { fprintf(stderr, "Regex %s failed to compile: %s.\n", patterns[i].pattern, error); patterns[i].re = NULL; } else { patterns[i].extra = pcre_study(patterns[i].re, 0, &error); if (error != NULL) { fprintf(stderr, "Regex %s failed to optimize: %s.\n", patterns[i].pattern, error); patterns[i].re = NULL; } } } } /* Discard the json table now we've parsed it into patterns */ json_object_put(klog_objs); return patterns; } /* * Does str match any of the patterns in the klog pattern table */ static bool klog_find(char *str, klog_pattern *patterns) { int i; for (i = 0; patterns[i].pattern; i++) { if (patterns[i].cm == COMPARE_STRING) { if (strstr(str, patterns[i].pattern)) { return true; } } else if (patterns[i].cm == COMPARE_REGEX) { int vector[1]; if (pcre_exec(patterns[i].re, patterns[i].extra, str, strlen(str), 0, 0, vector, 1) == 0) { return true; } } } return false; } /* * Free the klog patterns */ static void klog_free(klog_pattern *patterns) { int i; for (i = 0; patterns[i].pattern; i++) { pcre_free(patterns[i].re); pcre_free(patterns[i].extra); free(patterns[i].pattern); } free(patterns); } /* * Parse C comments and just throw them away */ static int skip_comments(parser *p) { int ch; int nextch; nextch = get_next(p); if (nextch == EOF) return EOF; if (nextch == '/') { do { ch = get_next(p); if (ch == EOF) return EOF; } while (ch != '\n'); return PARSER_COMMENT_FOUND; } if (nextch == '*') { for (;;) { ch = get_next(p); if (ch == EOF) return EOF; if (ch == '*') { ch = get_next(p); if (ch == EOF) return EOF; if (ch == '/') return PARSER_COMMENT_FOUND; unget_next(p, ch); } } } /* Not a comment, push back */ unget_next(p, nextch); return PARSER_OK; } /* * Parse an integer. This is fairly minimal as the * kernel doesn't have floats or doubles, so we * can just parse decimal, octal or hex values. */ static int parse_number(parser *p, token *t, int ch) { int nextch1, nextch2; bool ishex = false; bool isoct = false; /* * Crude way to detect the kind of integer */ if (ch == '0') { token_append(t, ch); nextch1 = get_next(p); if (nextch1 == EOF) { token_append(t, ch); return PARSER_OK; } if (nextch1 >= '0' && nextch1 <= '8') { /* Must be an octal value */ ch = nextch1; isoct = true; } else if (nextch1 == 'x' || nextch1 == 'X') { /* Is it hexadecimal? */ nextch2 = get_next(p); if (nextch2 == EOF) { unget_next(p, nextch1); return PARSER_OK; } if (isxdigit(nextch2)) { /* Hexadecimal */ token_append(t, nextch1); ch = nextch2; ishex = true; } else { /* Nope */ unget_next(p, nextch2); unget_next(p, nextch1); return PARSER_OK; } } else { unget_next(p, nextch1); return PARSER_OK; } } /* * OK, we now know what type of integer we * are processing, so just gather up the digits */ token_append(t, ch); for (;;) { ch = get_next(p); if (ch == EOF) { unget_next(p, ch); return PARSER_OK; } if (ishex) { if (isxdigit(ch)) { token_append(t, ch); } else { unget_next(p, ch); return PARSER_OK; } } else if (isoct) { if (ch >= '0' && ch <= '8') { token_append(t, ch); } else { unget_next(p, ch); return PARSER_OK; } } else { if (isdigit(ch)) { token_append(t, ch); } else { unget_next(p, ch); return PARSER_OK; } } } } /* * Parse identifiers */ static int parse_identifier(parser *p, token *t, int ch) { token_append(t, ch); t->type = TOKEN_IDENTIFIER; for (;;) { ch = get_next(p); if (ch == EOF) { break; } if (isalnum(ch) || ch == '_') { token_append(t, ch); } else { unget_next(p, ch); break; } } return PARSER_OK; } /* * Parse literal strings */ static int parse_literal(parser *p, token *t, int literal, token_type type) { bool escaped = false; int ch; t->type = type; token_append(t, literal); for (;;) { ch = get_next(p); if (ch == EOF) { return PARSER_OK; } if (ch == '\\') { escaped = true; token_append(t, ch); continue; } if (!escaped && ch == literal) { token_append(t, ch); return PARSER_OK; } escaped = false; token_append(t, ch); } return PARSER_OK; } /* * Parse operators such as +, - which can * be + or ++ forms. */ static int parse_op(parser *p, token *t, int op) { int ch; token_append(t, op); ch = get_next(p); if (ch == EOF) { return PARSER_OK; } if (ch == op) { token_append(t, op); return PARSER_OK; } unget_next(p, ch); return PARSER_OK; } /* * Parse -, --, -> */ static int parse_minus(parser *p, token *t, int op) { int ch; token_append(t, op); ch = get_next(p); if (ch == EOF) { return PARSER_OK; } if (ch == op) { token_append(t, ch); return PARSER_OK; } if (ch == '>') { token_append(t, ch); t->type = TOKEN_ARROW; return PARSER_OK; } unget_next(p, ch); return PARSER_OK; } /* * Gather a token from input stream */ static int get_token(parser *p, token *t) { int ch; int ret; for (;;) { ch = get_next(p); switch (ch) { case EOF: return EOF; /* Skip comments */ case '/': ret = skip_comments(p); if (ret == EOF) return EOF; if (ret == PARSER_COMMENT_FOUND) continue; token_append(t, ch); return PARSER_OK; case '#': token_append(t, ch); t->type = TOKEN_CPP; return PARSER_OK; case ' ': case '\t': case '\r': case '\n': case '\\': if (p->skip_white_space) continue; else { token_append(t, ch); t->type = TOKEN_WHITE_SPACE; return PARSER_OK; } case '(': token_append(t, ch); t->type = TOKEN_PAREN_OPENED; return PARSER_OK; case ')': token_append(t, ch); t->type = TOKEN_PAREN_CLOSED; return PARSER_OK; case '<': token_append(t, ch); t->type = TOKEN_LESS_THAN; return PARSER_OK; case '>': token_append(t, ch); t->type = TOKEN_GREATER_THAN; return PARSER_OK; case ',': token_append(t, ch); t->type = TOKEN_COMMA; return PARSER_OK; case ';': token_append(t, ch); t->type = TOKEN_TERMINAL; return PARSER_OK; case '{': case '}': case ':': case '~': case '?': case '*': case '%': case '!': case '.': token_append(t, ch); return PARSER_OK; case '0'...'9': return parse_number(p, t, ch); break; case 'a'...'z': case 'A'...'Z': return parse_identifier(p, t, ch); break; case '"': return parse_literal(p, t, ch, TOKEN_LITERAL_STRING); case '\'': return parse_literal(p, t, ch, TOKEN_LITERAL_CHAR); case '+': case '=': case '|': case '&': return parse_op(p, t, ch); case '-': return parse_minus(p, t, ch); } } return PARSER_OK; } /* * Literals such as "foo" and 'f' sometimes * need the quotes stripping off. */ static void literal_strip_quotes(token *t) { size_t len = strlen(t->token); t->token[len-1] = 0; strcpy(t->token, t->token + 1); } /* * Concatenate new string onto old. The old * string can be NULL or an existing string * on the heap. This returns the newly * concatenated string. */ static char *strdupcat(char *old, char *new) { size_t len = strlen(new); char *tmp; if (old == NULL) { tmp = malloc(len + 1); if (tmp == NULL) { fprintf(stderr, "strdupcat(): Out of memory.\n"); exit(EXIT_FAILURE); } strcpy(tmp, new); } else { size_t oldlen = strlen(old); tmp = realloc(old, oldlen + len + 1); if (tmp == NULL) { fprintf(stderr, "strdupcat(): Out of memory.\n"); exit(EXIT_FAILURE); } strcat(tmp, new); } return tmp; } /* * Parse a kernel message, like printk() or dev_err() */ static int parse_kernel_message(parser *p, token *t) { int ret; bool got_string = false; bool emit = false; bool found = false; token_type prev_token_type = TOKEN_UNKNOWN; char *str = NULL; char *line = NULL; bool printk; printk = (strcmp(t->token, "printk") == 0); if ((strcmp(t->token, "dev_err") == 0) || (strcmp(t->token, "ACPI_ERROR") == 0) || (strcmp(t->token, "ACPI_BIOS_ERROR") == 0) || (strcmp(t->token, "ACPI_EXCEPTION") == 0) || (strcmp(t->token, "ACPI_ERROR_METHOD") == 0)) emit = true; line = strdupcat(line, t->token); token_clear(t); for (;;) { ret = get_token(p, t); if (ret == EOF) { free(line); return EOF; } /* * Hit ; so lets push out what we've parsed */ if (t->type == TOKEN_TERMINAL) { if (emit) { if (found) { printf("OK : %s\n", line); } else { printf("ADD: %s\n", line); } free(line); } return PARSER_OK; } /* * We are only interested in KERN_ERR * printk messages */ if (printk && (t->type == TOKEN_IDENTIFIER) && (prev_token_type == TOKEN_PAREN_OPENED) && ((strcmp(t->token, "KERN_ERR") == 0) || (strcmp(t->token, "KERN_CRIT") == 0) || (strcmp(t->token, "KERN_EMERG") == 0) || (strcmp(t->token, "KERN_WARNING") == 0))) { emit = true; } if (t->type == TOKEN_LITERAL_STRING) { literal_strip_quotes(t); str = strdupcat(str, t->token); if (!got_string) line = strdupcat(line, "\""); got_string = true; } else { if (got_string) line = strdupcat(line, "\""); got_string = false; if (str) { found |= klog_find(str, patterns); free(str); str = NULL; } } line = strdupcat(line, t->token); if (t->type == TOKEN_IDENTIFIER && prev_token_type != TOKEN_COMMA) line = strdupcat(line, " "); if (t->type == TOKEN_COMMA) line = strdupcat(line, " "); prev_token_type = t->type; token_clear(t); } } /* * Parse input looking for printk or dev_err calls */ static void parse_kernel_messages(FILE *fp) { token t; parser p; parser_new(&p, fp, true); p.fp = fp; p.skip_white_space = true; token_new(&t); while ((get_token(&p, &t)) != EOF) { if ((strcmp(t.token, "printk") == 0) || (strcmp(t.token, "dev_err") == 0) || (strcmp(t.token, "ACPI_ERROR") == 0) || (strcmp(t.token, "ACPI_BIOS_ERROR") == 0) || (strcmp(t.token, "ACPI_EXCEPTION") == 0) || (strcmp(t.token, "ACPI_ERROR_METHOD") == 0)) { parse_kernel_message(&p, &t); } else token_clear(&t); } token_free(&t); } /* * This is evil. We parse the input stream * and throw away all #includes so we don't get * gcc -E breaking on include files that we haven't * got. We don't really care at this level about * macros being expanded as we want to see tokens * such as KERN_ERR later on. */ static int parse_cpp_include(parser *p, token *t) { /* * Gloop up #include "foo.h" */ do { token_clear(t); if (get_token(p, t) == EOF) return EOF; /* End of line, we're done! */ if (strcmp(t->token, "\n") == 0) return PARSER_OK; } while (t->type == TOKEN_WHITE_SPACE); /* * Ah, we gobbled up white spaces and * now we should be at a '<' token * Parse #include */ if (t->type == TOKEN_LESS_THAN) { do { if (get_token(p, t) == EOF) return EOF; } while (t->type != TOKEN_GREATER_THAN); } token_clear(t); return PARSER_OK; } /* * CPP phase, find and remove #includes */ static int parse_cpp_includes(FILE *fp) { token t; parser p; parser_new(&p, fp, false); p.fp = fp; p.skip_white_space = false; token_new(&t); while ((get_token(&p, &t)) != EOF) { if (t.type == TOKEN_CPP) { for (;;) { token_clear(&t); if (get_token(&p, &t) == EOF) return EOF; if (strcmp(t.token, "\n") == 0) break; if (t.type == TOKEN_WHITE_SPACE) { continue; } if (strcmp(t.token, "include") == 0) { if (parse_cpp_include(&p, &t) == EOF) return EOF; break; } printf("#%s", t.token); break; } } else { printf("%s", t.token); } token_clear(&t); } return EOF; } /* * Scan kernel source for printk KERN_ERR and dev_err * calls. * * Usage: * cat drivers/pnp/pnpacpi/rsparser.c | kernelscan -E | gcc -E - | kernelscan -P * * This prints out any kernel printk KERN_ERR calls * or dev_err calls and checks to see if the error can be matched by * any of the fwts klog messages. It has some intelligence, it glues * literal strings together such as "this is" "a message" into * "this is a message" before it makes the klog comparison. */ int main(int argc, char **argv) { if (argc < 2) { fprintf(stderr, "%s: [-E] [-P]\n", argv[0]); exit(EXIT_FAILURE); } /* * GCC -E preprocess phase */ if (strcmp(argv[1], "-E") == 0) { parse_cpp_includes(stdin); exit(EXIT_SUCCESS); } /* * Parse kernel printk and dev_err phase */ if (strcmp(argv[1], "-P") == 0) { patterns = klog_load("firmware_error_warning_patterns"); parse_kernel_messages(stdin); klog_free(patterns); } exit(EXIT_SUCCESS); } src/utilities/kernelscan.sh000077500000000000000000000111141231470457100163460ustar00rootroot00000000000000#!/bin/bash # # Copyright (C) 2010-2014 Canonical # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # CONFIGS="-DCONFIG_ACPI_HOTPLUG_CPU -DCONFIG_ACPI_PROC_EVENT \ -DCONFIG_ACPI_PROCFS_POWER -DCONFIG_ACPI_SLEEP \ -DCONFIG_CPU_FREQ -DCONFIG_DMI -DCONFIG_HIBERNATION \ -DCONFIG_HOTPLUG_CPU -DCONFIG_KEXEC -DCONFIG_NET \ -DCONFIG_PM -DCONFIG_PM_SLEEP -DCONFIG_SMP \ -DCONFIG_SUSPEND -DCONFIG_X86 -DCONFIG_X86_IO_APIC" KERNELSCAN=./kernelscan TMP=/tmp/kernelscan_$$.txt if [ $# -lt 1 ]; then echo "Usage: $0 path-to-kernel-source" exit 1 fi src=$1 if [ ! -d $1 ]; then echo "Path '$1' not found" exit 1 fi scan_source_file() { if [ -f $1 ]; then $KERNELSCAN < $1 -E | gcc -E $CONFIGS - | $KERNELSCAN -P > $TMP if [ $(stat -c%s $TMP) -gt 0 ]; then echo "Source: $1" cat $TMP fi rm $TMP else echo "Source: $1 does not exist" fi } scan_source_tree() { tree=$1 echo "Scanning $tree" for I in $(find $tree -name "*.c") do scan_source_file $I done } scan_source_tree $src/drivers/acpi scan_source_tree $src/arch/x86/kernel/acpi scan_source_tree $src/arch/x86/platform/efi scan_source_tree $src/drivers/pnp/pnpbios # need to do, loads of errors # # Individual files # scan_source_file $src/arch/x86/pci/pcbios.c #scan_source_file $src/drivers/cpufreq/powernow-k8.c scan_source_file $src/arch/x86/kernel/cpu/mtrr/generic.c scan_source_file $src/arch/ia64/kernel/acpi.c scan_source_file $src/arch/x86/boot/video-bios.c scan_source_file $src/arch/x86/boot/video-mode.c scan_source_file $src/arch/x86/boot/video-vesa.c scan_source_file $src/arch/x86/boot/video-vga.c scan_source_file $src/arch/x86/boot/video.c scan_source_file $src/arch/x86/kernel/apm_32.c scan_source_file $src/arch/x86/kernel/cpu/amd.c scan_source_file $src/arch/x86/kernel/cpu/common.c scan_source_file $src/arch/x86/kernel/e820.c scan_source_file $src/arch/x86/kernel/hpet.c scan_source_file $src/arch/x86/kernel/setup.c scan_source_file $src/arch/x86/kernel/smpboot.c scan_source_file $src/kernel/time/timekeeping.c scan_source_file $src/drivers/watchdog/iTCO_vendor_support.c scan_source_file $src/drivers/watchdog/hpwdt.c scan_source_file $src/drivers/usb/host/pci-quirks.c # # Various Platform drivers # some of these are commented out because they # break the CPP phase, this needs fixing # scan_source_file $src/drivers/platform/x86/acerhdf.c scan_source_file $src/drivers/platform/x86/acer-wmi.c scan_source_file $src/drivers/platform/x86/asus-laptop.c scan_source_file $src/drivers/platform/x86/asus-nb-wmi.c scan_source_file $src/drivers/platform/x86/asus-wmi.c scan_source_file $src/drivers/platform/x86/classmate-laptop.c scan_source_file $src/drivers/platform/x86/compal-laptop.c scan_source_file $src/drivers/platform/x86/dell-laptop.c scan_source_file $src/drivers/platform/x86/dell-wmi-aio.c scan_source_file $src/drivers/platform/x86/dell-wmi.c scan_source_file $src/drivers/platform/x86/eeepc-laptop.c scan_source_file $src/drivers/platform/x86/eeepc-wmi.c scan_source_file $src/drivers/platform/x86/fujitsu-laptop.c scan_source_file $src/drivers/platform/x86/fujitsu-tablet.c scan_source_file $src/drivers/platform/x86/hp-wmi.c scan_source_file $src/drivers/platform/x86/ideapad-laptop.c scan_source_file $src/drivers/platform/x86/msi-laptop.c scan_source_file $src/drivers/platform/x86/msi-wmi.c scan_source_file $src/drivers/platform/x86/mxm-wmi.c scan_source_file $src/drivers/platform/x86/panasonic-laptop.c scan_source_file $src/drivers/platform/x86/samsung-laptop.c scan_source_file $src/drivers/platform/x86/samsung-q10.c #scan_source_file $src/drivers/platform/x86/sony-laptop.c scan_source_file $src/drivers/platform/x86/tc1100-wmi.c #scan_source_file $src/drivers/platform/x86/thinkpad_acpi.c scan_source_file $src/drivers/platform/x86/topstar-laptop.c scan_source_file $src/drivers/platform/x86/toshiba_acpi.c scan_source_file $src/drivers/platform/x86/toshiba_bluetooth.c scan_source_file $src/drivers/platform/x86/wmi.c scan_source_file $src/drivers/platform/x86/xo15-ebook.c update_version.sh000077500000000000000000000023531231470457100144530ustar00rootroot00000000000000#!/bin/bash if [ $# -ne 1 ]; then echo "You need to specify the version number" echo "The last version was" `git tag | tail -1` exit 1 fi version=$1 cat << EOF > src/lib/include/fwts_version.h /* * Copyright (C) 2010-2014 Canonical * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * */ EOF echo '#define FWTS_VERSION "'$version'"' >> src/lib/include/fwts_version.h echo '#define FWTS_DATE "'`date --utc "+%F %T"`'"' >> src/lib/include/fwts_version.h git add src/lib/include/fwts_version.h git commit -s -m"lib: fwts_version.h - update to $version" git tag -m'"Version '$1'"' $1